Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/dillonzq/LoveIt.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/assets
diff options
context:
space:
mode:
authorDillon <dillonzq@outlook.com>2022-05-20 18:45:13 +0300
committerDillon <dillonzq@outlook.com>2022-05-20 18:45:13 +0300
commitd41758240c698561a64443ef383577594c3aa982 (patch)
tree372b49b50ff7b0d211216c3cd05f528ce1511fca /assets
parent002b6472f63719db80b0315c74e455cf32892a3f (diff)
parenta8ecc6de4e22f214b994271ef8745f61597dee4c (diff)
Merge branch 'master' into pr/xakraz/409
# Conflicts: # exampleSite/config.toml
Diffstat (limited to 'assets')
-rw-r--r--assets/css/_core/_base.scss20
-rw-r--r--assets/css/_core/_footer.scss (renamed from assets/css/_partial/_footer.scss)0
-rw-r--r--assets/css/_core/_header.scss (renamed from assets/css/_partial/_header.scss)26
-rw-r--r--assets/css/_core/_media.scss6
-rw-r--r--assets/css/_core/_pagination.scss (renamed from assets/css/_partial/_pagination.scss)0
-rw-r--r--assets/css/_core/_variables.scss30
-rw-r--r--assets/css/_mixin/_compatibility.scss10
-rw-r--r--assets/css/_mixin/_link.scss24
-rw-r--r--assets/css/_page/_home.scss9
-rw-r--r--assets/css/_page/_index.scss6
-rw-r--r--assets/css/_page/_single.scss44
-rw-r--r--assets/css/_partial/_archive/_terms.scss2
-rw-r--r--assets/css/_partial/_details.scss2
-rw-r--r--assets/css/_partial/_img.scss9
-rw-r--r--assets/css/_partial/_single/_admonition.scss49
-rw-r--r--assets/css/_partial/_single/_code.scss44
-rw-r--r--assets/css/_partial/_single/_footer.scss2
-rw-r--r--assets/css/_partial/_single/_toc.scss10
-rw-r--r--assets/css/_variables.scss472
-rw-r--r--assets/css/style.scss10
-rw-r--r--assets/data/cdn/jsdelivr.yml99
-rw-r--r--assets/data/polyfill.yml4
-rw-r--r--assets/data/social.yml6
-rw-r--r--assets/js/theme.js1058
-rw-r--r--assets/js/theme.min.js3
-rw-r--r--assets/js/theme.min.js.map1
-rw-r--r--assets/lib/VERSION38
-rw-r--r--assets/lib/algoliasearch/algoliasearch-lite.umd.min.js6
-rwxr-xr-x[-rw-r--r--]assets/lib/animate/animate.min.css14
-rw-r--r--assets/lib/autocomplete/autocomplete.min.js6
-rw-r--r--assets/lib/clipboard/clipboard.min.js6
-rw-r--r--assets/lib/echarts/echarts.min.js25
-rw-r--r--assets/lib/echarts/macarons.js240
-rw-r--r--assets/lib/echarts/theme/dark.yml273
-rw-r--r--assets/lib/echarts/theme/light.yml297
-rw-r--r--assets/lib/fontawesome-free/all.min.css5
-rw-r--r--assets/lib/gitalk/gitalk.css1
-rw-r--r--assets/lib/gitalk/gitalk.min.js12
-rw-r--r--[-rwxr-xr-x]assets/lib/katex/auto-render.min.js2
-rw-r--r--assets/lib/katex/copy-tex.min.css2
-rw-r--r--assets/lib/katex/copy-tex.min.js2
-rw-r--r--[-rwxr-xr-x]assets/lib/katex/katex.min.css2
-rw-r--r--[-rwxr-xr-x]assets/lib/katex/katex.min.js2
-rw-r--r--assets/lib/katex/mhchem.min.js2
-rwxr-xr-xassets/lib/lazysizes/lazysizes.min.js4
-rw-r--r--assets/lib/lightgallery/lg-thumbnail.min.js7
-rw-r--r--assets/lib/lightgallery/lg-zoom.min.js7
-rw-r--r--assets/lib/lightgallery/lightgallery.min.css2
-rwxr-xr-x[-rw-r--r--]assets/lib/lightgallery/lightgallery.min.js13
-rwxr-xr-xassets/lib/lightgallery/plugins/lg-thumbnail.min.js8
-rwxr-xr-xassets/lib/lightgallery/plugins/lg-zoom.min.js8
-rw-r--r--assets/lib/lunr/lunr.min.js6
-rw-r--r--assets/lib/lunr/lunr.segmentit.js14
-rw-r--r--assets/lib/mapbox-gl/mapbox-gl-language.js231
-rw-r--r--assets/lib/mapbox-gl/mapbox-gl.min.css4
-rw-r--r--assets/lib/mapbox-gl/mapbox-gl.min.js8
-rw-r--r--assets/lib/mermaid/mermaid.min.js43
-rw-r--r--assets/lib/mermaid/mermaid.min.js.map1
-rw-r--r--assets/lib/mermaid/mermaid.scss19
-rw-r--r--assets/lib/mermaid/themes/class.scss91
-rw-r--r--assets/lib/mermaid/themes/dark/index.scss62
-rw-r--r--assets/lib/mermaid/themes/default/index.scss60
-rw-r--r--assets/lib/mermaid/themes/flowchart.scss68
-rw-r--r--assets/lib/mermaid/themes/forest/index.scss61
-rw-r--r--assets/lib/mermaid/themes/gantt.scss259
-rw-r--r--assets/lib/mermaid/themes/git.scss8
-rw-r--r--assets/lib/mermaid/themes/mermaid.scss19
-rw-r--r--assets/lib/mermaid/themes/neutral/index.scss65
-rw-r--r--assets/lib/mermaid/themes/pie.scss11
-rw-r--r--assets/lib/mermaid/themes/sequence.scss97
-rw-r--r--assets/lib/mermaid/themes/state.scss132
-rw-r--r--assets/lib/normalize/normalize.css349
-rw-r--r--assets/lib/normalize/normalize.min.css9
-rw-r--r--assets/lib/sharer/sharer.min.js2
-rw-r--r--assets/lib/simple-icons/icons/1001tracklists.svg2
-rw-r--r--assets/lib/simple-icons/icons/1password.svg2
-rw-r--r--assets/lib/simple-icons/icons/3m.svg1
-rw-r--r--assets/lib/simple-icons/icons/42.svg1
-rw-r--r--assets/lib/simple-icons/icons/4chan.svg1
-rw-r--r--assets/lib/simple-icons/icons/4d.svg1
-rw-r--r--assets/lib/simple-icons/icons/500px.svg2
-rw-r--r--assets/lib/simple-icons/icons/a-frame.svg1
-rw-r--r--assets/lib/simple-icons/icons/abbott.svg1
-rw-r--r--assets/lib/simple-icons/icons/abbrobotstudio.svg2
-rw-r--r--assets/lib/simple-icons/icons/abbvie.svg1
-rw-r--r--assets/lib/simple-icons/icons/abletonlive.svg1
-rw-r--r--assets/lib/simple-icons/icons/about-dot-me.svg1
-rw-r--r--assets/lib/simple-icons/icons/aboutdotme.svg1
-rw-r--r--assets/lib/simple-icons/icons/abstract.svg2
-rw-r--r--assets/lib/simple-icons/icons/academia.svg2
-rw-r--r--assets/lib/simple-icons/icons/accenture.svg1
-rw-r--r--assets/lib/simple-icons/icons/acclaim.svg1
-rw-r--r--assets/lib/simple-icons/icons/accusoft.svg2
-rw-r--r--assets/lib/simple-icons/icons/acer.svg1
-rw-r--r--assets/lib/simple-icons/icons/acm.svg2
-rw-r--r--assets/lib/simple-icons/icons/actigraph.svg2
-rw-r--r--assets/lib/simple-icons/icons/activision.svg2
-rw-r--r--assets/lib/simple-icons/icons/adafruit.svg1
-rw-r--r--assets/lib/simple-icons/icons/adblock.svg2
-rw-r--r--assets/lib/simple-icons/icons/adblockplus.svg2
-rw-r--r--assets/lib/simple-icons/icons/addthis.svg2
-rw-r--r--assets/lib/simple-icons/icons/adguard.svg2
-rw-r--r--assets/lib/simple-icons/icons/adidas.svg1
-rw-r--r--assets/lib/simple-icons/icons/adobe.svg2
-rw-r--r--assets/lib/simple-icons/icons/adobeacrobatreader.svg2
-rw-r--r--assets/lib/simple-icons/icons/adobeaftereffects.svg2
-rw-r--r--assets/lib/simple-icons/icons/adobeaudition.svg2
-rw-r--r--assets/lib/simple-icons/icons/adobecreativecloud.svg2
-rw-r--r--assets/lib/simple-icons/icons/adobedreamweaver.svg2
-rw-r--r--assets/lib/simple-icons/icons/adobefonts.svg2
-rw-r--r--assets/lib/simple-icons/icons/adobeillustrator.svg2
-rw-r--r--assets/lib/simple-icons/icons/adobeindesign.svg2
-rw-r--r--assets/lib/simple-icons/icons/adobelightroom.svg1
-rw-r--r--assets/lib/simple-icons/icons/adobelightroomcc.svg1
-rw-r--r--assets/lib/simple-icons/icons/adobelightroomclassic.svg2
-rw-r--r--assets/lib/simple-icons/icons/adobephonegap.svg1
-rw-r--r--assets/lib/simple-icons/icons/adobephotoshop.svg2
-rw-r--r--assets/lib/simple-icons/icons/adobepremiere.svg1
-rw-r--r--assets/lib/simple-icons/icons/adobepremierepro.svg1
-rw-r--r--assets/lib/simple-icons/icons/adobetypekit.svg1
-rw-r--r--assets/lib/simple-icons/icons/adobexd.svg2
-rw-r--r--assets/lib/simple-icons/icons/adonisjs.svg2
-rw-r--r--assets/lib/simple-icons/icons/adyen.svg1
-rw-r--r--assets/lib/simple-icons/icons/aerlingus.svg2
-rw-r--r--assets/lib/simple-icons/icons/aeroflot.svg1
-rw-r--r--assets/lib/simple-icons/icons/aeromexico.svg1
-rw-r--r--assets/lib/simple-icons/icons/aerospike.svg1
-rw-r--r--assets/lib/simple-icons/icons/aew.svg1
-rw-r--r--assets/lib/simple-icons/icons/affinity.svg2
-rw-r--r--assets/lib/simple-icons/icons/affinitydesigner.svg2
-rw-r--r--assets/lib/simple-icons/icons/affinityphoto.svg2
-rw-r--r--assets/lib/simple-icons/icons/affinitypublisher.svg2
-rw-r--r--assets/lib/simple-icons/icons/aframe.svg1
-rw-r--r--assets/lib/simple-icons/icons/aib.svg1
-rw-r--r--assets/lib/simple-icons/icons/aidungeon.svg1
-rw-r--r--assets/lib/simple-icons/icons/aiohttp.svg1
-rw-r--r--assets/lib/simple-icons/icons/aiqfome.svg2
-rw-r--r--assets/lib/simple-icons/icons/airasia.svg1
-rw-r--r--assets/lib/simple-icons/icons/airbnb.svg2
-rw-r--r--assets/lib/simple-icons/icons/airbus.svg2
-rw-r--r--assets/lib/simple-icons/icons/aircall.svg2
-rw-r--r--assets/lib/simple-icons/icons/aircanada.svg2
-rw-r--r--assets/lib/simple-icons/icons/airchina.svg1
-rw-r--r--assets/lib/simple-icons/icons/airfrance.svg2
-rw-r--r--assets/lib/simple-icons/icons/airplayaudio.svg2
-rw-r--r--assets/lib/simple-icons/icons/airplayvideo.svg2
-rw-r--r--assets/lib/simple-icons/icons/airtable.svg2
-rw-r--r--assets/lib/simple-icons/icons/ajv.svg1
-rw-r--r--assets/lib/simple-icons/icons/alacritty.svg1
-rw-r--r--assets/lib/simple-icons/icons/albertheijn.svg1
-rw-r--r--assets/lib/simple-icons/icons/aldinord.svg1
-rw-r--r--assets/lib/simple-icons/icons/aldisud.svg1
-rw-r--r--assets/lib/simple-icons/icons/alfaromeo.svg2
-rw-r--r--assets/lib/simple-icons/icons/alfred.svg1
-rw-r--r--assets/lib/simple-icons/icons/algolia.svg2
-rw-r--r--assets/lib/simple-icons/icons/alibabacloud.svg1
-rw-r--r--assets/lib/simple-icons/icons/alibabadotcom.svg1
-rw-r--r--assets/lib/simple-icons/icons/aliexpress.svg1
-rw-r--r--assets/lib/simple-icons/icons/alipay.svg2
-rw-r--r--assets/lib/simple-icons/icons/alitalia.svg1
-rw-r--r--assets/lib/simple-icons/icons/allegro.svg1
-rw-r--r--assets/lib/simple-icons/icons/alliedmodders.svg2
-rw-r--r--assets/lib/simple-icons/icons/allocine.svg2
-rw-r--r--assets/lib/simple-icons/icons/alltrails.svg1
-rw-r--r--assets/lib/simple-icons/icons/alpinedotjs.svg1
-rw-r--r--assets/lib/simple-icons/icons/alpinelinux.svg2
-rw-r--r--assets/lib/simple-icons/icons/altiumdesigner.svg1
-rw-r--r--assets/lib/simple-icons/icons/amazon.svg2
-rw-r--r--assets/lib/simple-icons/icons/amazonalexa.svg2
-rw-r--r--assets/lib/simple-icons/icons/amazonaws.svg2
-rw-r--r--assets/lib/simple-icons/icons/amazondynamodb.svg1
-rw-r--r--assets/lib/simple-icons/icons/amazonfiretv.svg2
-rw-r--r--assets/lib/simple-icons/icons/amazonlumberyard.svg2
-rw-r--r--assets/lib/simple-icons/icons/amazonpay.svg1
-rw-r--r--assets/lib/simple-icons/icons/amazonprime.svg1
-rw-r--r--assets/lib/simple-icons/icons/amazons3.svg1
-rw-r--r--assets/lib/simple-icons/icons/amd.svg2
-rw-r--r--assets/lib/simple-icons/icons/americanairlines.svg2
-rw-r--r--assets/lib/simple-icons/icons/americanexpress.svg2
-rw-r--r--assets/lib/simple-icons/icons/amg.svg1
-rw-r--r--assets/lib/simple-icons/icons/amp.svg1
-rw-r--r--assets/lib/simple-icons/icons/amul.svg1
-rw-r--r--assets/lib/simple-icons/icons/ana.svg1
-rw-r--r--assets/lib/simple-icons/icons/anaconda.svg2
-rw-r--r--assets/lib/simple-icons/icons/analogue.svg2
-rw-r--r--assets/lib/simple-icons/icons/anchor.svg2
-rw-r--r--assets/lib/simple-icons/icons/andela.svg2
-rw-r--r--assets/lib/simple-icons/icons/android.svg2
-rw-r--r--assets/lib/simple-icons/icons/androidauto.svg2
-rw-r--r--assets/lib/simple-icons/icons/androidstudio.svg2
-rw-r--r--assets/lib/simple-icons/icons/angellist.svg2
-rw-r--r--assets/lib/simple-icons/icons/angular.svg2
-rw-r--r--assets/lib/simple-icons/icons/angularjs.svg2
-rw-r--r--assets/lib/simple-icons/icons/angularuniversal.svg2
-rw-r--r--assets/lib/simple-icons/icons/anilist.svg1
-rw-r--r--assets/lib/simple-icons/icons/ansible.svg2
-rw-r--r--assets/lib/simple-icons/icons/ansys.svg1
-rw-r--r--assets/lib/simple-icons/icons/anta.svg1
-rw-r--r--assets/lib/simple-icons/icons/antdesign.svg1
-rw-r--r--assets/lib/simple-icons/icons/antena3.svg2
-rw-r--r--assets/lib/simple-icons/icons/anydesk.svg1
-rw-r--r--assets/lib/simple-icons/icons/aol.svg1
-rw-r--r--assets/lib/simple-icons/icons/apache.svg2
-rw-r--r--assets/lib/simple-icons/icons/apacheairflow.svg2
-rw-r--r--assets/lib/simple-icons/icons/apacheant.svg2
-rw-r--r--assets/lib/simple-icons/icons/apachecassandra.svg1
-rw-r--r--assets/lib/simple-icons/icons/apachecloudstack.svg2
-rw-r--r--assets/lib/simple-icons/icons/apachecordova.svg2
-rw-r--r--assets/lib/simple-icons/icons/apachecouchdb.svg1
-rw-r--r--assets/lib/simple-icons/icons/apachedruid.svg2
-rw-r--r--assets/lib/simple-icons/icons/apacheecharts.svg2
-rw-r--r--assets/lib/simple-icons/icons/apacheflink.svg2
-rw-r--r--assets/lib/simple-icons/icons/apachegroovy.svg1
-rw-r--r--assets/lib/simple-icons/icons/apachehadoop.svg1
-rw-r--r--assets/lib/simple-icons/icons/apachehive.svg1
-rw-r--r--assets/lib/simple-icons/icons/apachejmeter.svg1
-rw-r--r--assets/lib/simple-icons/icons/apachekafka.svg2
-rw-r--r--assets/lib/simple-icons/icons/apachekylin.svg1
-rw-r--r--assets/lib/simple-icons/icons/apachemaven.svg2
-rw-r--r--assets/lib/simple-icons/icons/apachenetbeanside.svg2
-rw-r--r--assets/lib/simple-icons/icons/apacheopenoffice.svg2
-rw-r--r--assets/lib/simple-icons/icons/apachepulsar.svg2
-rw-r--r--assets/lib/simple-icons/icons/apacherocketmq.svg2
-rw-r--r--assets/lib/simple-icons/icons/apachesolr.svg2
-rw-r--r--assets/lib/simple-icons/icons/apachespark.svg2
-rw-r--r--assets/lib/simple-icons/icons/apachetomcat.svg1
-rw-r--r--assets/lib/simple-icons/icons/aparat.svg1
-rw-r--r--assets/lib/simple-icons/icons/apollographql.svg2
-rw-r--r--assets/lib/simple-icons/icons/apostrophe.svg1
-rw-r--r--assets/lib/simple-icons/icons/appannie.svg1
-rw-r--r--assets/lib/simple-icons/icons/appian.svg1
-rw-r--r--assets/lib/simple-icons/icons/apple.svg2
-rw-r--r--assets/lib/simple-icons/icons/applearcade.svg1
-rw-r--r--assets/lib/simple-icons/icons/applemusic.svg2
-rw-r--r--assets/lib/simple-icons/icons/applepay.svg2
-rw-r--r--assets/lib/simple-icons/icons/applepodcasts.svg2
-rw-r--r--assets/lib/simple-icons/icons/appletv.svg2
-rw-r--r--assets/lib/simple-icons/icons/appsignal.svg2
-rw-r--r--assets/lib/simple-icons/icons/appstore.svg2
-rw-r--r--assets/lib/simple-icons/icons/appveyor.svg2
-rw-r--r--assets/lib/simple-icons/icons/appwrite.svg1
-rw-r--r--assets/lib/simple-icons/icons/aqua.svg1
-rw-r--r--assets/lib/simple-icons/icons/aral.svg2
-rw-r--r--assets/lib/simple-icons/icons/arangodb.svg1
-rw-r--r--assets/lib/simple-icons/icons/archicad.svg2
-rw-r--r--assets/lib/simple-icons/icons/archiveofourown.svg2
-rw-r--r--assets/lib/simple-icons/icons/archlinux.svg2
-rw-r--r--assets/lib/simple-icons/icons/ardour.svg2
-rw-r--r--assets/lib/simple-icons/icons/arduino.svg2
-rw-r--r--assets/lib/simple-icons/icons/argos.svg1
-rw-r--r--assets/lib/simple-icons/icons/arkecosystem.svg1
-rw-r--r--assets/lib/simple-icons/icons/arlo.svg1
-rw-r--r--assets/lib/simple-icons/icons/arm.svg1
-rw-r--r--assets/lib/simple-icons/icons/artifacthub.svg1
-rw-r--r--assets/lib/simple-icons/icons/artixlinux.svg1
-rw-r--r--assets/lib/simple-icons/icons/artstation.svg2
-rw-r--r--assets/lib/simple-icons/icons/arxiv.svg2
-rw-r--r--assets/lib/simple-icons/icons/asana.svg2
-rw-r--r--assets/lib/simple-icons/icons/asciidoctor.svg2
-rw-r--r--assets/lib/simple-icons/icons/asciinema.svg2
-rw-r--r--assets/lib/simple-icons/icons/asda.svg1
-rw-r--r--assets/lib/simple-icons/icons/aseprite.svg1
-rw-r--r--assets/lib/simple-icons/icons/askfm.svg2
-rw-r--r--assets/lib/simple-icons/icons/askubuntu.svg1
-rw-r--r--assets/lib/simple-icons/icons/assemblyscript.svg1
-rw-r--r--assets/lib/simple-icons/icons/astonmartin.svg1
-rw-r--r--assets/lib/simple-icons/icons/astro.svg1
-rw-r--r--assets/lib/simple-icons/icons/asus.svg2
-rw-r--r--assets/lib/simple-icons/icons/at-and-t.svg1
-rw-r--r--assets/lib/simple-icons/icons/atandt.svg1
-rw-r--r--assets/lib/simple-icons/icons/atari.svg2
-rw-r--r--assets/lib/simple-icons/icons/atlassian.svg2
-rw-r--r--assets/lib/simple-icons/icons/atom.svg2
-rw-r--r--assets/lib/simple-icons/icons/auchan.svg1
-rw-r--r--assets/lib/simple-icons/icons/audacity.svg2
-rw-r--r--assets/lib/simple-icons/icons/audi.svg2
-rw-r--r--assets/lib/simple-icons/icons/audible.svg2
-rw-r--r--assets/lib/simple-icons/icons/audio-technica.svg1
-rw-r--r--assets/lib/simple-icons/icons/audioboom.svg2
-rw-r--r--assets/lib/simple-icons/icons/audiomack.svg2
-rw-r--r--assets/lib/simple-icons/icons/audiotechnica.svg1
-rw-r--r--assets/lib/simple-icons/icons/aurelia.svg2
-rw-r--r--assets/lib/simple-icons/icons/auth0.svg2
-rw-r--r--assets/lib/simple-icons/icons/authy.svg2
-rw-r--r--assets/lib/simple-icons/icons/autodesk.svg2
-rw-r--r--assets/lib/simple-icons/icons/autohotkey.svg1
-rw-r--r--assets/lib/simple-icons/icons/automatic.svg1
-rw-r--r--assets/lib/simple-icons/icons/automattic.svg1
-rw-r--r--assets/lib/simple-icons/icons/autoprefixer.svg1
-rw-r--r--assets/lib/simple-icons/icons/autotask.svg1
-rw-r--r--assets/lib/simple-icons/icons/avast.svg1
-rw-r--r--assets/lib/simple-icons/icons/aventrix.svg1
-rw-r--r--assets/lib/simple-icons/icons/awesomelists.svg2
-rw-r--r--assets/lib/simple-icons/icons/awesomewm.svg2
-rw-r--r--assets/lib/simple-icons/icons/awsamplify.svg1
-rw-r--r--assets/lib/simple-icons/icons/awslambda.svg1
-rw-r--r--assets/lib/simple-icons/icons/azureartifacts.svg2
-rw-r--r--assets/lib/simple-icons/icons/azuredataexplorer.svg1
-rw-r--r--assets/lib/simple-icons/icons/azuredevops.svg2
-rw-r--r--assets/lib/simple-icons/icons/azurefunctions.svg2
-rw-r--r--assets/lib/simple-icons/icons/azurepipelines.svg2
-rw-r--r--assets/lib/simple-icons/icons/babel.svg2
-rw-r--r--assets/lib/simple-icons/icons/backbonedotjs.svg1
-rw-r--r--assets/lib/simple-icons/icons/badgr.svg2
-rw-r--r--assets/lib/simple-icons/icons/badoo.svg2
-rw-r--r--assets/lib/simple-icons/icons/baidu.svg2
-rw-r--r--assets/lib/simple-icons/icons/bamboo.svg2
-rw-r--r--assets/lib/simple-icons/icons/bancontact.svg1
-rw-r--r--assets/lib/simple-icons/icons/bandcamp.svg2
-rw-r--r--assets/lib/simple-icons/icons/bandlab.svg2
-rw-r--r--assets/lib/simple-icons/icons/bandrautomation.svg1
-rw-r--r--assets/lib/simple-icons/icons/bandsintown.svg2
-rw-r--r--assets/lib/simple-icons/icons/bankofamerica.svg1
-rw-r--r--assets/lib/simple-icons/icons/barclays.svg1
-rw-r--r--assets/lib/simple-icons/icons/baremetrics.svg1
-rw-r--r--assets/lib/simple-icons/icons/basecamp.svg2
-rw-r--r--assets/lib/simple-icons/icons/bata.svg1
-rw-r--r--assets/lib/simple-icons/icons/bathasu.svg2
-rw-r--r--assets/lib/simple-icons/icons/battle-dot-net.svg1
-rw-r--r--assets/lib/simple-icons/icons/battledotnet.svg1
-rw-r--r--assets/lib/simple-icons/icons/bbc.svg1
-rw-r--r--assets/lib/simple-icons/icons/bbciplayer.svg2
-rw-r--r--assets/lib/simple-icons/icons/beatport.svg2
-rw-r--r--assets/lib/simple-icons/icons/beats.svg2
-rw-r--r--assets/lib/simple-icons/icons/beatsbydre.svg2
-rw-r--r--assets/lib/simple-icons/icons/behance.svg2
-rw-r--r--assets/lib/simple-icons/icons/beijingsubway.svg2
-rw-r--r--assets/lib/simple-icons/icons/bem.svg1
-rw-r--r--assets/lib/simple-icons/icons/bentley.svg2
-rw-r--r--assets/lib/simple-icons/icons/betfair.svg1
-rw-r--r--assets/lib/simple-icons/icons/bigbasket.svg1
-rw-r--r--assets/lib/simple-icons/icons/bigbluebutton.svg1
-rw-r--r--assets/lib/simple-icons/icons/bigcartel.svg2
-rw-r--r--assets/lib/simple-icons/icons/bigcommerce.svg1
-rw-r--r--assets/lib/simple-icons/icons/bilibili.svg1
-rw-r--r--assets/lib/simple-icons/icons/binance.svg1
-rw-r--r--assets/lib/simple-icons/icons/bing.svg1
-rw-r--r--assets/lib/simple-icons/icons/biolink.svg1
-rw-r--r--assets/lib/simple-icons/icons/bit.svg2
-rw-r--r--assets/lib/simple-icons/icons/bitbucket.svg2
-rw-r--r--assets/lib/simple-icons/icons/bitcoin.svg2
-rw-r--r--assets/lib/simple-icons/icons/bitcoincash.svg1
-rw-r--r--assets/lib/simple-icons/icons/bitcoinsv.svg1
-rw-r--r--assets/lib/simple-icons/icons/bitdefender.svg2
-rw-r--r--assets/lib/simple-icons/icons/bitly.svg2
-rw-r--r--assets/lib/simple-icons/icons/bitrise.svg2
-rw-r--r--assets/lib/simple-icons/icons/bitwarden.svg2
-rw-r--r--assets/lib/simple-icons/icons/bitwig.svg1
-rw-r--r--assets/lib/simple-icons/icons/blackberry.svg2
-rw-r--r--assets/lib/simple-icons/icons/blazemeter.svg1
-rw-r--r--assets/lib/simple-icons/icons/blazor.svg1
-rw-r--r--assets/lib/simple-icons/icons/blender.svg2
-rw-r--r--assets/lib/simple-icons/icons/blockchaindotcom.svg1
-rw-r--r--assets/lib/simple-icons/icons/blogger.svg2
-rw-r--r--assets/lib/simple-icons/icons/bloglovin.svg2
-rw-r--r--assets/lib/simple-icons/icons/blueprint.svg1
-rw-r--r--assets/lib/simple-icons/icons/bluetooth.svg2
-rw-r--r--assets/lib/simple-icons/icons/bmcsoftware.svg2
-rw-r--r--assets/lib/simple-icons/icons/bmw.svg2
-rw-r--r--assets/lib/simple-icons/icons/boehringeringelheim.svg1
-rw-r--r--assets/lib/simple-icons/icons/boeing.svg2
-rw-r--r--assets/lib/simple-icons/icons/bookbub.svg1
-rw-r--r--assets/lib/simple-icons/icons/bookmeter.svg1
-rw-r--r--assets/lib/simple-icons/icons/bookstack.svg1
-rw-r--r--assets/lib/simple-icons/icons/boost.svg2
-rw-r--r--assets/lib/simple-icons/icons/boots.svg1
-rw-r--r--assets/lib/simple-icons/icons/bootstrap.svg2
-rw-r--r--assets/lib/simple-icons/icons/bosch.svg2
-rw-r--r--assets/lib/simple-icons/icons/bose.svg2
-rw-r--r--assets/lib/simple-icons/icons/boulanger.svg1
-rw-r--r--assets/lib/simple-icons/icons/bower.svg2
-rw-r--r--assets/lib/simple-icons/icons/box.svg2
-rw-r--r--assets/lib/simple-icons/icons/brand-dot-ai.svg1
-rw-r--r--assets/lib/simple-icons/icons/brandfolder.svg2
-rw-r--r--assets/lib/simple-icons/icons/brave.svg2
-rw-r--r--assets/lib/simple-icons/icons/breaker.svg2
-rw-r--r--assets/lib/simple-icons/icons/britishairways.svg1
-rw-r--r--assets/lib/simple-icons/icons/broadcom.svg2
-rw-r--r--assets/lib/simple-icons/icons/bt.svg2
-rw-r--r--assets/lib/simple-icons/icons/buddy.svg2
-rw-r--r--assets/lib/simple-icons/icons/budibase.svg1
-rw-r--r--assets/lib/simple-icons/icons/buefy.svg1
-rw-r--r--assets/lib/simple-icons/icons/buffer.svg2
-rw-r--r--assets/lib/simple-icons/icons/bugatti.svg2
-rw-r--r--assets/lib/simple-icons/icons/bugcrowd.svg1
-rw-r--r--assets/lib/simple-icons/icons/bugsnag.svg2
-rw-r--r--assets/lib/simple-icons/icons/buildkite.svg1
-rw-r--r--assets/lib/simple-icons/icons/bukalapak.svg1
-rw-r--r--assets/lib/simple-icons/icons/bulma.svg2
-rw-r--r--assets/lib/simple-icons/icons/bunq.svg1
-rw-r--r--assets/lib/simple-icons/icons/burgerking.svg1
-rw-r--r--assets/lib/simple-icons/icons/buymeacoffee.svg2
-rw-r--r--assets/lib/simple-icons/icons/buzzfeed.svg2
-rw-r--r--assets/lib/simple-icons/icons/byjus.svg1
-rw-r--r--assets/lib/simple-icons/icons/byte.svg2
-rw-r--r--assets/lib/simple-icons/icons/bytedance.svg1
-rw-r--r--assets/lib/simple-icons/icons/c.svg2
-rw-r--r--assets/lib/simple-icons/icons/cachet.svg1
-rw-r--r--assets/lib/simple-icons/icons/caffeine.svg1
-rw-r--r--assets/lib/simple-icons/icons/cairometro.svg2
-rw-r--r--assets/lib/simple-icons/icons/cakephp.svg2
-rw-r--r--assets/lib/simple-icons/icons/campaignmonitor.svg2
-rw-r--r--assets/lib/simple-icons/icons/canonical.svg1
-rw-r--r--assets/lib/simple-icons/icons/canva.svg2
-rw-r--r--assets/lib/simple-icons/icons/capacitor.svg1
-rw-r--r--assets/lib/simple-icons/icons/carrefour.svg1
-rw-r--r--assets/lib/simple-icons/icons/carthrottle.svg2
-rw-r--r--assets/lib/simple-icons/icons/carto.svg1
-rw-r--r--assets/lib/simple-icons/icons/cashapp.svg2
-rw-r--r--assets/lib/simple-icons/icons/cassandra.svg1
-rw-r--r--assets/lib/simple-icons/icons/castbox.svg2
-rw-r--r--assets/lib/simple-icons/icons/castorama.svg2
-rw-r--r--assets/lib/simple-icons/icons/castro.svg2
-rw-r--r--assets/lib/simple-icons/icons/caterpillar.svg2
-rw-r--r--assets/lib/simple-icons/icons/cbs.svg1
-rw-r--r--assets/lib/simple-icons/icons/cdprojekt.svg2
-rw-r--r--assets/lib/simple-icons/icons/celery.svg2
-rw-r--r--assets/lib/simple-icons/icons/centos.svg2
-rw-r--r--assets/lib/simple-icons/icons/ceph.svg1
-rw-r--r--assets/lib/simple-icons/icons/cesium.svg2
-rw-r--r--assets/lib/simple-icons/icons/cevo.svg1
-rw-r--r--assets/lib/simple-icons/icons/chai.svg1
-rw-r--r--assets/lib/simple-icons/icons/chainlink.svg1
-rw-r--r--assets/lib/simple-icons/icons/chakraui.svg1
-rw-r--r--assets/lib/simple-icons/icons/chartdotjs.svg1
-rw-r--r--assets/lib/simple-icons/icons/chartmogul.svg2
-rw-r--r--assets/lib/simple-icons/icons/chase.svg2
-rw-r--r--assets/lib/simple-icons/icons/chatbot.svg1
-rw-r--r--assets/lib/simple-icons/icons/checkio.svg1
-rw-r--r--assets/lib/simple-icons/icons/checkmarx.svg2
-rw-r--r--assets/lib/simple-icons/icons/chef.svg2
-rw-r--r--assets/lib/simple-icons/icons/chemex.svg1
-rw-r--r--assets/lib/simple-icons/icons/chevrolet.svg1
-rw-r--r--assets/lib/simple-icons/icons/chinaeasternairlines.svg1
-rw-r--r--assets/lib/simple-icons/icons/chinasouthernairlines.svg1
-rw-r--r--assets/lib/simple-icons/icons/chocolatey.svg2
-rw-r--r--assets/lib/simple-icons/icons/chromecast.svg1
-rw-r--r--assets/lib/simple-icons/icons/chrysler.svg1
-rw-r--r--assets/lib/simple-icons/icons/chupachups.svg2
-rw-r--r--assets/lib/simple-icons/icons/cilium.svg1
-rw-r--r--assets/lib/simple-icons/icons/cinema4d.svg2
-rw-r--r--assets/lib/simple-icons/icons/circle.svg2
-rw-r--r--assets/lib/simple-icons/icons/circleci.svg2
-rw-r--r--assets/lib/simple-icons/icons/cirrusci.svg2
-rw-r--r--assets/lib/simple-icons/icons/cisco.svg2
-rw-r--r--assets/lib/simple-icons/icons/citrix.svg2
-rw-r--r--assets/lib/simple-icons/icons/citroen.svg2
-rw-r--r--assets/lib/simple-icons/icons/civicrm.svg2
-rw-r--r--assets/lib/simple-icons/icons/civo.svg1
-rw-r--r--assets/lib/simple-icons/icons/ckeditor4.svg1
-rw-r--r--assets/lib/simple-icons/icons/claris.svg2
-rw-r--r--assets/lib/simple-icons/icons/clickhouse.svg1
-rw-r--r--assets/lib/simple-icons/icons/clickup.svg1
-rw-r--r--assets/lib/simple-icons/icons/clion.svg1
-rw-r--r--assets/lib/simple-icons/icons/cliqz.svg2
-rw-r--r--assets/lib/simple-icons/icons/clockify.svg2
-rw-r--r--assets/lib/simple-icons/icons/clojure.svg2
-rw-r--r--assets/lib/simple-icons/icons/cloud66.svg1
-rw-r--r--assets/lib/simple-icons/icons/cloudbees.svg2
-rw-r--r--assets/lib/simple-icons/icons/cloudcannon.svg2
-rw-r--r--assets/lib/simple-icons/icons/cloudera.svg1
-rw-r--r--assets/lib/simple-icons/icons/cloudflare.svg2
-rw-r--r--assets/lib/simple-icons/icons/cloudfoundry.svg1
-rw-r--r--assets/lib/simple-icons/icons/cloudsmith.svg2
-rw-r--r--assets/lib/simple-icons/icons/cloudways.svg1
-rw-r--r--assets/lib/simple-icons/icons/clubhouse.svg1
-rw-r--r--assets/lib/simple-icons/icons/clyp.svg2
-rw-r--r--assets/lib/simple-icons/icons/cmake.svg2
-rw-r--r--assets/lib/simple-icons/icons/cncf.svg1
-rw-r--r--assets/lib/simple-icons/icons/cnn.svg2
-rw-r--r--assets/lib/simple-icons/icons/co-op.svg1
-rw-r--r--assets/lib/simple-icons/icons/cockpit.svg1
-rw-r--r--assets/lib/simple-icons/icons/cockroachlabs.svg1
-rw-r--r--assets/lib/simple-icons/icons/cocoapods.svg2
-rw-r--r--assets/lib/simple-icons/icons/cocos.svg1
-rw-r--r--assets/lib/simple-icons/icons/coda.svg2
-rw-r--r--assets/lib/simple-icons/icons/codacy.svg2
-rw-r--r--assets/lib/simple-icons/icons/codeberg.svg1
-rw-r--r--assets/lib/simple-icons/icons/codecademy.svg2
-rw-r--r--assets/lib/simple-icons/icons/codeceptjs.svg1
-rw-r--r--assets/lib/simple-icons/icons/codechef.svg2
-rw-r--r--assets/lib/simple-icons/icons/codeclimate.svg2
-rw-r--r--assets/lib/simple-icons/icons/codecov.svg2
-rw-r--r--assets/lib/simple-icons/icons/codefactor.svg2
-rw-r--r--assets/lib/simple-icons/icons/codeforces.svg2
-rw-r--r--assets/lib/simple-icons/icons/codeigniter.svg2
-rw-r--r--assets/lib/simple-icons/icons/codemagic.svg1
-rw-r--r--assets/lib/simple-icons/icons/codemirror.svg1
-rw-r--r--assets/lib/simple-icons/icons/codenewbie.svg1
-rw-r--r--assets/lib/simple-icons/icons/codepen.svg2
-rw-r--r--assets/lib/simple-icons/icons/codeproject.svg1
-rw-r--r--assets/lib/simple-icons/icons/codereview.svg1
-rw-r--r--assets/lib/simple-icons/icons/codersrank.svg2
-rw-r--r--assets/lib/simple-icons/icons/coderwall.svg2
-rw-r--r--assets/lib/simple-icons/icons/codesandbox.svg2
-rw-r--r--assets/lib/simple-icons/icons/codeship.svg2
-rw-r--r--assets/lib/simple-icons/icons/codewars.svg2
-rw-r--r--assets/lib/simple-icons/icons/codingame.svg1
-rw-r--r--assets/lib/simple-icons/icons/codingninjas.svg1
-rw-r--r--assets/lib/simple-icons/icons/codio.svg2
-rw-r--r--assets/lib/simple-icons/icons/coffeescript.svg2
-rw-r--r--assets/lib/simple-icons/icons/cognizant.svg1
-rw-r--r--assets/lib/simple-icons/icons/coil.svg1
-rw-r--r--assets/lib/simple-icons/icons/coinbase.svg2
-rw-r--r--assets/lib/simple-icons/icons/coinmarketcap.svg1
-rw-r--r--assets/lib/simple-icons/icons/commerzbank.svg1
-rw-r--r--assets/lib/simple-icons/icons/commonworkflowlanguage.svg2
-rw-r--r--assets/lib/simple-icons/icons/composer.svg2
-rw-r--r--assets/lib/simple-icons/icons/compropago.svg1
-rw-r--r--assets/lib/simple-icons/icons/comsol.svg1
-rw-r--r--assets/lib/simple-icons/icons/conan.svg1
-rw-r--r--assets/lib/simple-icons/icons/concourse.svg2
-rw-r--r--assets/lib/simple-icons/icons/conda-forge.svg1
-rw-r--r--assets/lib/simple-icons/icons/condaforge.svg1
-rw-r--r--assets/lib/simple-icons/icons/conekta.svg2
-rw-r--r--assets/lib/simple-icons/icons/confluence.svg2
-rw-r--r--assets/lib/simple-icons/icons/construct3.svg1
-rw-r--r--assets/lib/simple-icons/icons/consul.svg1
-rw-r--r--assets/lib/simple-icons/icons/contactlesspayment.svg2
-rw-r--r--assets/lib/simple-icons/icons/containerd.svg1
-rw-r--r--assets/lib/simple-icons/icons/contentful.svg1
-rw-r--r--assets/lib/simple-icons/icons/conventionalcommits.svg1
-rw-r--r--assets/lib/simple-icons/icons/convertio.svg2
-rw-r--r--assets/lib/simple-icons/icons/cookiecutter.svg1
-rw-r--r--assets/lib/simple-icons/icons/coop.svg1
-rw-r--r--assets/lib/simple-icons/icons/cora.svg1
-rw-r--r--assets/lib/simple-icons/icons/coronaengine.svg2
-rw-r--r--assets/lib/simple-icons/icons/coronarenderer.svg2
-rw-r--r--assets/lib/simple-icons/icons/corsair.svg1
-rw-r--r--assets/lib/simple-icons/icons/couchbase.svg1
-rw-r--r--assets/lib/simple-icons/icons/counter-strike.svg1
-rw-r--r--assets/lib/simple-icons/icons/counterstrike.svg1
-rw-r--r--assets/lib/simple-icons/icons/countingworkspro.svg1
-rw-r--r--assets/lib/simple-icons/icons/coursera.svg2
-rw-r--r--assets/lib/simple-icons/icons/coveralls.svg2
-rw-r--r--assets/lib/simple-icons/icons/cpanel.svg2
-rw-r--r--assets/lib/simple-icons/icons/cplusplus.svg2
-rw-r--r--assets/lib/simple-icons/icons/craftcms.svg2
-rw-r--r--assets/lib/simple-icons/icons/cratedb.svg1
-rw-r--r--assets/lib/simple-icons/icons/createreactapp.svg1
-rw-r--r--assets/lib/simple-icons/icons/creativecommons.svg2
-rw-r--r--assets/lib/simple-icons/icons/credly.svg1
-rw-r--r--assets/lib/simple-icons/icons/crehana.svg2
-rw-r--r--assets/lib/simple-icons/icons/crowdin.svg1
-rw-r--r--assets/lib/simple-icons/icons/crowdsource.svg1
-rw-r--r--assets/lib/simple-icons/icons/crunchbase.svg2
-rw-r--r--assets/lib/simple-icons/icons/crunchyroll.svg2
-rw-r--r--assets/lib/simple-icons/icons/cryengine.svg2
-rw-r--r--assets/lib/simple-icons/icons/crystal.svg1
-rw-r--r--assets/lib/simple-icons/icons/csharp.svg2
-rw-r--r--assets/lib/simple-icons/icons/css3.svg2
-rw-r--r--assets/lib/simple-icons/icons/cssmodules.svg1
-rw-r--r--assets/lib/simple-icons/icons/csswizardry.svg2
-rw-r--r--assets/lib/simple-icons/icons/cucumber.svg1
-rw-r--r--assets/lib/simple-icons/icons/curl.svg2
-rw-r--r--assets/lib/simple-icons/icons/curseforge.svg1
-rw-r--r--assets/lib/simple-icons/icons/cycling74.svg1
-rw-r--r--assets/lib/simple-icons/icons/cypress.svg1
-rw-r--r--assets/lib/simple-icons/icons/cytoscapedotjs.svg1
-rw-r--r--assets/lib/simple-icons/icons/d3-dot-js.svg1
-rw-r--r--assets/lib/simple-icons/icons/d3dotjs.svg1
-rw-r--r--assets/lib/simple-icons/icons/dacia.svg1
-rw-r--r--assets/lib/simple-icons/icons/daf.svg2
-rw-r--r--assets/lib/simple-icons/icons/dailymotion.svg2
-rw-r--r--assets/lib/simple-icons/icons/daimler.svg1
-rw-r--r--assets/lib/simple-icons/icons/darkreader.svg1
-rw-r--r--assets/lib/simple-icons/icons/dart.svg2
-rw-r--r--assets/lib/simple-icons/icons/darty.svg1
-rw-r--r--assets/lib/simple-icons/icons/daserste.svg2
-rw-r--r--assets/lib/simple-icons/icons/dash.svg2
-rw-r--r--assets/lib/simple-icons/icons/dashlane.svg2
-rw-r--r--assets/lib/simple-icons/icons/dask.svg1
-rw-r--r--assets/lib/simple-icons/icons/dassaultsystemes.svg2
-rw-r--r--assets/lib/simple-icons/icons/databricks.svg1
-rw-r--r--assets/lib/simple-icons/icons/datacamp.svg2
-rw-r--r--assets/lib/simple-icons/icons/datadog.svg2
-rw-r--r--assets/lib/simple-icons/icons/datadotai.svg1
-rw-r--r--assets/lib/simple-icons/icons/datagrip.svg1
-rw-r--r--assets/lib/simple-icons/icons/dataiku.svg1
-rw-r--r--assets/lib/simple-icons/icons/datastax.svg1
-rw-r--r--assets/lib/simple-icons/icons/dataversioncontrol.svg1
-rw-r--r--assets/lib/simple-icons/icons/datocms.svg1
-rw-r--r--assets/lib/simple-icons/icons/datto.svg1
-rw-r--r--assets/lib/simple-icons/icons/dazn.svg2
-rw-r--r--assets/lib/simple-icons/icons/dblp.svg2
-rw-r--r--assets/lib/simple-icons/icons/dbt.svg1
-rw-r--r--assets/lib/simple-icons/icons/dcentertainment.svg2
-rw-r--r--assets/lib/simple-icons/icons/debian.svg2
-rw-r--r--assets/lib/simple-icons/icons/dedge.svg1
-rw-r--r--assets/lib/simple-icons/icons/deepin.svg2
-rw-r--r--assets/lib/simple-icons/icons/deepnote.svg1
-rw-r--r--assets/lib/simple-icons/icons/deezer.svg2
-rw-r--r--assets/lib/simple-icons/icons/delicious.svg2
-rw-r--r--assets/lib/simple-icons/icons/deliveroo.svg2
-rw-r--r--assets/lib/simple-icons/icons/dell.svg2
-rw-r--r--assets/lib/simple-icons/icons/delonghi.svg1
-rw-r--r--assets/lib/simple-icons/icons/delphi.svg1
-rw-r--r--assets/lib/simple-icons/icons/delta.svg1
-rw-r--r--assets/lib/simple-icons/icons/deno.svg2
-rw-r--r--assets/lib/simple-icons/icons/dependabot.svg2
-rw-r--r--assets/lib/simple-icons/icons/derspiegel.svg1
-rw-r--r--assets/lib/simple-icons/icons/designernews.svg2
-rw-r--r--assets/lib/simple-icons/icons/deutschebahn.svg1
-rw-r--r--assets/lib/simple-icons/icons/deutschebank.svg1
-rw-r--r--assets/lib/simple-icons/icons/dev-dot-to.svg1
-rw-r--r--assets/lib/simple-icons/icons/devdotto.svg1
-rw-r--r--assets/lib/simple-icons/icons/devexpress.svg1
-rw-r--r--assets/lib/simple-icons/icons/deviantart.svg2
-rw-r--r--assets/lib/simple-icons/icons/devpost.svg1
-rw-r--r--assets/lib/simple-icons/icons/devrant.svg2
-rw-r--r--assets/lib/simple-icons/icons/dgraph.svg1
-rw-r--r--assets/lib/simple-icons/icons/dhl.svg1
-rw-r--r--assets/lib/simple-icons/icons/diagramsdotnet.svg1
-rw-r--r--assets/lib/simple-icons/icons/dialogflow.svg1
-rw-r--r--assets/lib/simple-icons/icons/diaspora.svg2
-rw-r--r--assets/lib/simple-icons/icons/digg.svg2
-rw-r--r--assets/lib/simple-icons/icons/digikeyelectronics.svg1
-rw-r--r--assets/lib/simple-icons/icons/digitalocean.svg2
-rw-r--r--assets/lib/simple-icons/icons/dior.svg2
-rw-r--r--assets/lib/simple-icons/icons/directus.svg2
-rw-r--r--assets/lib/simple-icons/icons/discogs.svg2
-rw-r--r--assets/lib/simple-icons/icons/discord.svg2
-rw-r--r--assets/lib/simple-icons/icons/discourse.svg2
-rw-r--r--assets/lib/simple-icons/icons/discover.svg2
-rw-r--r--assets/lib/simple-icons/icons/disqus.svg2
-rw-r--r--assets/lib/simple-icons/icons/disroot.svg2
-rw-r--r--[-rwxr-xr-x]assets/lib/simple-icons/icons/django.svg2
-rw-r--r--assets/lib/simple-icons/icons/dlib.svg1
-rw-r--r--assets/lib/simple-icons/icons/dlna.svg2
-rw-r--r--assets/lib/simple-icons/icons/dm.svg1
-rw-r--r--assets/lib/simple-icons/icons/docker.svg2
-rw-r--r--assets/lib/simple-icons/icons/docsdotrs.svg1
-rw-r--r--assets/lib/simple-icons/icons/docusign.svg2
-rw-r--r--assets/lib/simple-icons/icons/dogecoin.svg1
-rw-r--r--assets/lib/simple-icons/icons/dolby.svg2
-rw-r--r--assets/lib/simple-icons/icons/doordash.svg1
-rw-r--r--assets/lib/simple-icons/icons/dot-net.svg1
-rw-r--r--assets/lib/simple-icons/icons/dotnet.svg1
-rw-r--r--assets/lib/simple-icons/icons/douban.svg2
-rw-r--r--assets/lib/simple-icons/icons/doubanread.svg1
-rw-r--r--assets/lib/simple-icons/icons/dpd.svg1
-rw-r--r--assets/lib/simple-icons/icons/dragonframe.svg1
-rw-r--r--assets/lib/simple-icons/icons/draugiem-dot-lv.svg1
-rw-r--r--assets/lib/simple-icons/icons/draugiemdotlv.svg1
-rw-r--r--assets/lib/simple-icons/icons/dribbble.svg2
-rw-r--r--assets/lib/simple-icons/icons/drone.svg2
-rw-r--r--assets/lib/simple-icons/icons/drooble.svg1
-rw-r--r--assets/lib/simple-icons/icons/dropbox.svg2
-rw-r--r--assets/lib/simple-icons/icons/drupal.svg2
-rw-r--r--assets/lib/simple-icons/icons/dsautomobiles.svg2
-rw-r--r--assets/lib/simple-icons/icons/dtube.svg2
-rw-r--r--assets/lib/simple-icons/icons/duckduckgo.svg2
-rw-r--r--assets/lib/simple-icons/icons/dungeonsanddragons.svg1
-rw-r--r--assets/lib/simple-icons/icons/dunked.svg2
-rw-r--r--assets/lib/simple-icons/icons/duolingo.svg2
-rw-r--r--assets/lib/simple-icons/icons/dvc.svg1
-rw-r--r--assets/lib/simple-icons/icons/dwavesystems.svg1
-rw-r--r--assets/lib/simple-icons/icons/dwm.svg1
-rw-r--r--assets/lib/simple-icons/icons/dynamics365.svg2
-rw-r--r--assets/lib/simple-icons/icons/dynatrace.svg2
-rw-r--r--assets/lib/simple-icons/icons/e.svg1
-rw-r--r--assets/lib/simple-icons/icons/ea.svg2
-rw-r--r--assets/lib/simple-icons/icons/eagle.svg1
-rw-r--r--assets/lib/simple-icons/icons/easyjet.svg2
-rw-r--r--assets/lib/simple-icons/icons/ebay.svg2
-rw-r--r--assets/lib/simple-icons/icons/eclipseche.svg1
-rw-r--r--assets/lib/simple-icons/icons/eclipseide.svg2
-rw-r--r--assets/lib/simple-icons/icons/eclipsejetty.svg1
-rw-r--r--assets/lib/simple-icons/icons/eclipsemosquitto.svg2
-rw-r--r--assets/lib/simple-icons/icons/eclipsevertdotx.svg1
-rw-r--r--assets/lib/simple-icons/icons/edeka.svg1
-rw-r--r--assets/lib/simple-icons/icons/editorconfig.svg1
-rw-r--r--assets/lib/simple-icons/icons/edotleclerc.svg1
-rw-r--r--assets/lib/simple-icons/icons/edx.svg1
-rw-r--r--assets/lib/simple-icons/icons/egghead.svg1
-rw-r--r--assets/lib/simple-icons/icons/egnyte.svg2
-rw-r--r--assets/lib/simple-icons/icons/eightsleep.svg1
-rw-r--r--assets/lib/simple-icons/icons/elastic.svg2
-rw-r--r--assets/lib/simple-icons/icons/elasticcloud.svg2
-rw-r--r--assets/lib/simple-icons/icons/elasticsearch.svg2
-rw-r--r--assets/lib/simple-icons/icons/elasticstack.svg2
-rw-r--r--assets/lib/simple-icons/icons/electron.svg2
-rw-r--r--assets/lib/simple-icons/icons/element.svg1
-rw-r--r--assets/lib/simple-icons/icons/elementary.svg2
-rw-r--r--assets/lib/simple-icons/icons/eleventy.svg2
-rw-r--r--assets/lib/simple-icons/icons/elixir.svg2
-rw-r--r--assets/lib/simple-icons/icons/eljueves.svg1
-rw-r--r--assets/lib/simple-icons/icons/ello.svg2
-rw-r--r--assets/lib/simple-icons/icons/elm.svg2
-rw-r--r--assets/lib/simple-icons/icons/elsevier.svg2
-rw-r--r--assets/lib/simple-icons/icons/embarcadero.svg2
-rw-r--r--assets/lib/simple-icons/icons/ember-dot-js.svg1
-rw-r--r--assets/lib/simple-icons/icons/emberdotjs.svg1
-rw-r--r--assets/lib/simple-icons/icons/emby.svg2
-rw-r--r--assets/lib/simple-icons/icons/emirates.svg1
-rw-r--r--assets/lib/simple-icons/icons/emlakjet.svg2
-rw-r--r--assets/lib/simple-icons/icons/empirekred.svg2
-rw-r--r--assets/lib/simple-icons/icons/enpass.svg1
-rw-r--r--assets/lib/simple-icons/icons/envato.svg2
-rw-r--r--assets/lib/simple-icons/icons/epel.svg2
-rw-r--r--assets/lib/simple-icons/icons/epicgames.svg2
-rw-r--r--assets/lib/simple-icons/icons/epson.svg2
-rw-r--r--assets/lib/simple-icons/icons/equinixmetal.svg1
-rw-r--r--assets/lib/simple-icons/icons/erlang.svg1
-rw-r--r--assets/lib/simple-icons/icons/esbuild.svg1
-rw-r--r--assets/lib/simple-icons/icons/esea.svg2
-rw-r--r--assets/lib/simple-icons/icons/eslgaming.svg2
-rw-r--r--assets/lib/simple-icons/icons/eslint.svg2
-rw-r--r--assets/lib/simple-icons/icons/esphome.svg1
-rw-r--r--assets/lib/simple-icons/icons/espressif.svg1
-rw-r--r--assets/lib/simple-icons/icons/etcd.svg1
-rw-r--r--assets/lib/simple-icons/icons/ethereum.svg2
-rw-r--r--assets/lib/simple-icons/icons/ethiopianairlines.svg1
-rw-r--r--assets/lib/simple-icons/icons/etihadairways.svg1
-rw-r--r--assets/lib/simple-icons/icons/etsy.svg2
-rw-r--r--assets/lib/simple-icons/icons/eventbrite.svg2
-rw-r--r--assets/lib/simple-icons/icons/eventstore.svg2
-rw-r--r--assets/lib/simple-icons/icons/evernote.svg2
-rw-r--r--assets/lib/simple-icons/icons/everplaces.svg1
-rw-r--r--assets/lib/simple-icons/icons/evry.svg1
-rw-r--r--assets/lib/simple-icons/icons/exercism.svg2
-rw-r--r--assets/lib/simple-icons/icons/exordo.svg1
-rw-r--r--assets/lib/simple-icons/icons/exoscale.svg1
-rw-r--r--assets/lib/simple-icons/icons/expensify.svg1
-rw-r--r--assets/lib/simple-icons/icons/expertsexchange.svg2
-rw-r--r--assets/lib/simple-icons/icons/expo.svg2
-rw-r--r--assets/lib/simple-icons/icons/express.svg1
-rw-r--r--assets/lib/simple-icons/icons/expressvpn.svg1
-rw-r--r--assets/lib/simple-icons/icons/eyeem.svg2
-rw-r--r--assets/lib/simple-icons/icons/f-droid.svg1
-rw-r--r--assets/lib/simple-icons/icons/f-secure.svg1
-rw-r--r--assets/lib/simple-icons/icons/facebook.svg2
-rw-r--r--assets/lib/simple-icons/icons/facebookgaming.svg1
-rw-r--r--assets/lib/simple-icons/icons/facebooklive.svg2
-rw-r--r--assets/lib/simple-icons/icons/faceit.svg2
-rw-r--r--assets/lib/simple-icons/icons/facepunch.svg1
-rw-r--r--assets/lib/simple-icons/icons/falcon.svg1
-rw-r--r--assets/lib/simple-icons/icons/fampay.svg1
-rw-r--r--assets/lib/simple-icons/icons/fandango.svg2
-rw-r--r--assets/lib/simple-icons/icons/fandom.svg2
-rw-r--r--assets/lib/simple-icons/icons/farfetch.svg2
-rw-r--r--assets/lib/simple-icons/icons/fastapi.svg1
-rw-r--r--assets/lib/simple-icons/icons/fastify.svg2
-rw-r--r--assets/lib/simple-icons/icons/fastlane.svg1
-rw-r--r--assets/lib/simple-icons/icons/fastly.svg2
-rw-r--r--assets/lib/simple-icons/icons/fathom.svg1
-rw-r--r--assets/lib/simple-icons/icons/favro.svg2
-rw-r--r--assets/lib/simple-icons/icons/fdroid.svg1
-rw-r--r--assets/lib/simple-icons/icons/feathub.svg2
-rw-r--r--assets/lib/simple-icons/icons/fedex.svg1
-rw-r--r--assets/lib/simple-icons/icons/fedora.svg2
-rw-r--r--assets/lib/simple-icons/icons/fedramp.svg1
-rw-r--r--assets/lib/simple-icons/icons/feedly.svg2
-rw-r--r--assets/lib/simple-icons/icons/ferrari.svg2
-rw-r--r--assets/lib/simple-icons/icons/ferrarin-dot-v-dot.svg1
-rw-r--r--assets/lib/simple-icons/icons/ferrarinv.svg1
-rw-r--r--assets/lib/simple-icons/icons/ffmpeg.svg1
-rw-r--r--assets/lib/simple-icons/icons/fiat.svg2
-rw-r--r--assets/lib/simple-icons/icons/fidoalliance.svg2
-rw-r--r--assets/lib/simple-icons/icons/fifa.svg2
-rw-r--r--assets/lib/simple-icons/icons/figma.svg2
-rw-r--r--assets/lib/simple-icons/icons/figshare.svg2
-rw-r--r--assets/lib/simple-icons/icons/fila.svg2
-rw-r--r--assets/lib/simple-icons/icons/files.svg1
-rw-r--r--assets/lib/simple-icons/icons/filezilla.svg2
-rw-r--r--assets/lib/simple-icons/icons/fing.svg1
-rw-r--r--assets/lib/simple-icons/icons/firebase.svg2
-rw-r--r--assets/lib/simple-icons/icons/firefox.svg1
-rw-r--r--assets/lib/simple-icons/icons/firefoxbrowser.svg1
-rw-r--r--assets/lib/simple-icons/icons/first.svg2
-rw-r--r--assets/lib/simple-icons/icons/fitbit.svg2
-rw-r--r--assets/lib/simple-icons/icons/fite.svg2
-rw-r--r--assets/lib/simple-icons/icons/fivem.svg1
-rw-r--r--assets/lib/simple-icons/icons/fiverr.svg2
-rw-r--r--assets/lib/simple-icons/icons/flask.svg2
-rw-r--r--assets/lib/simple-icons/icons/flat.svg1
-rw-r--r--assets/lib/simple-icons/icons/flathub.svg2
-rw-r--r--assets/lib/simple-icons/icons/flattr.svg2
-rw-r--r--assets/lib/simple-icons/icons/flickr.svg2
-rw-r--r--assets/lib/simple-icons/icons/flipboard.svg2
-rw-r--r--assets/lib/simple-icons/icons/flipkart.svg1
-rw-r--r--assets/lib/simple-icons/icons/floatplane.svg2
-rw-r--r--assets/lib/simple-icons/icons/flood.svg2
-rw-r--r--assets/lib/simple-icons/icons/fluentbit.svg1
-rw-r--r--assets/lib/simple-icons/icons/fluentd.svg2
-rw-r--r--assets/lib/simple-icons/icons/flutter.svg2
-rw-r--r--assets/lib/simple-icons/icons/flyway.svg1
-rw-r--r--assets/lib/simple-icons/icons/fmod.svg1
-rw-r--r--assets/lib/simple-icons/icons/fnac.svg2
-rw-r--r--assets/lib/simple-icons/icons/folium.svg1
-rw-r--r--assets/lib/simple-icons/icons/fonoma.svg1
-rw-r--r--assets/lib/simple-icons/icons/fontawesome.svg2
-rw-r--r--assets/lib/simple-icons/icons/fontbase.svg1
-rw-r--r--assets/lib/simple-icons/icons/foodpanda.svg1
-rw-r--r--assets/lib/simple-icons/icons/ford.svg2
-rw-r--r--assets/lib/simple-icons/icons/forestry.svg1
-rw-r--r--assets/lib/simple-icons/icons/formstack.svg2
-rw-r--r--assets/lib/simple-icons/icons/fortinet.svg2
-rw-r--r--assets/lib/simple-icons/icons/fortran.svg1
-rw-r--r--assets/lib/simple-icons/icons/fossa.svg2
-rw-r--r--assets/lib/simple-icons/icons/fossilscm.svg2
-rw-r--r--assets/lib/simple-icons/icons/foursquare.svg2
-rw-r--r--assets/lib/simple-icons/icons/foursquarecityguide.svg1
-rw-r--r--assets/lib/simple-icons/icons/foxtel.svg1
-rw-r--r--assets/lib/simple-icons/icons/fozzy.svg1
-rw-r--r--assets/lib/simple-icons/icons/framer.svg2
-rw-r--r--assets/lib/simple-icons/icons/framework7.svg1
-rw-r--r--assets/lib/simple-icons/icons/franprix.svg1
-rw-r--r--assets/lib/simple-icons/icons/fraunhofergesellschaft.svg1
-rw-r--r--assets/lib/simple-icons/icons/freebsd.svg2
-rw-r--r--assets/lib/simple-icons/icons/freecodecamp.svg2
-rw-r--r--assets/lib/simple-icons/icons/freedesktop-dot-org.svg1
-rw-r--r--assets/lib/simple-icons/icons/freedesktopdotorg.svg1
-rw-r--r--assets/lib/simple-icons/icons/freelancer.svg2
-rw-r--r--assets/lib/simple-icons/icons/freenas.svg1
-rw-r--r--assets/lib/simple-icons/icons/frontendmentor.svg1
-rw-r--r--assets/lib/simple-icons/icons/fsecure.svg1
-rw-r--r--assets/lib/simple-icons/icons/fujifilm.svg2
-rw-r--r--assets/lib/simple-icons/icons/fujitsu.svg2
-rw-r--r--assets/lib/simple-icons/icons/funimation.svg1
-rw-r--r--assets/lib/simple-icons/icons/furaffinity.svg2
-rw-r--r--assets/lib/simple-icons/icons/furrynetwork.svg2
-rw-r--r--assets/lib/simple-icons/icons/futurelearn.svg1
-rw-r--r--assets/lib/simple-icons/icons/g2.svg1
-rw-r--r--assets/lib/simple-icons/icons/g2a.svg1
-rw-r--r--assets/lib/simple-icons/icons/gameandwatch.svg1
-rw-r--r--assets/lib/simple-icons/icons/gamejolt.svg1
-rw-r--r--assets/lib/simple-icons/icons/garmin.svg2
-rw-r--r--assets/lib/simple-icons/icons/gatling.svg2
-rw-r--r--assets/lib/simple-icons/icons/gatsby.svg2
-rw-r--r--assets/lib/simple-icons/icons/gauges.svg1
-rw-r--r--assets/lib/simple-icons/icons/geant.svg1
-rw-r--r--assets/lib/simple-icons/icons/geeksforgeeks.svg1
-rw-r--r--assets/lib/simple-icons/icons/generalelectric.svg1
-rw-r--r--assets/lib/simple-icons/icons/generalmotors.svg2
-rw-r--r--assets/lib/simple-icons/icons/genius.svg2
-rw-r--r--assets/lib/simple-icons/icons/gentoo.svg2
-rw-r--r--assets/lib/simple-icons/icons/geocaching.svg2
-rw-r--r--assets/lib/simple-icons/icons/gerrit.svg2
-rw-r--r--assets/lib/simple-icons/icons/ghost.svg2
-rw-r--r--assets/lib/simple-icons/icons/ghostery.svg2
-rw-r--r--assets/lib/simple-icons/icons/gimp.svg2
-rw-r--r--assets/lib/simple-icons/icons/giphy.svg1
-rw-r--r--assets/lib/simple-icons/icons/git.svg2
-rw-r--r--assets/lib/simple-icons/icons/gitbook.svg1
-rw-r--r--assets/lib/simple-icons/icons/gitea.svg2
-rw-r--r--assets/lib/simple-icons/icons/gitee.svg1
-rw-r--r--assets/lib/simple-icons/icons/gitextensions.svg1
-rw-r--r--assets/lib/simple-icons/icons/github.svg2
-rw-r--r--assets/lib/simple-icons/icons/githubactions.svg2
-rw-r--r--assets/lib/simple-icons/icons/githubpages.svg1
-rw-r--r--assets/lib/simple-icons/icons/githubsponsors.svg1
-rw-r--r--assets/lib/simple-icons/icons/gitignoredotio.svg1
-rw-r--r--assets/lib/simple-icons/icons/gitkraken.svg2
-rw-r--r--assets/lib/simple-icons/icons/gitlab.svg2
-rw-r--r--assets/lib/simple-icons/icons/gitlfs.svg1
-rw-r--r--assets/lib/simple-icons/icons/gitpod.svg2
-rw-r--r--assets/lib/simple-icons/icons/gitter.svg2
-rw-r--r--assets/lib/simple-icons/icons/glassdoor.svg2
-rw-r--r--assets/lib/simple-icons/icons/glitch.svg2
-rw-r--r--assets/lib/simple-icons/icons/globus.svg1
-rw-r--r--assets/lib/simple-icons/icons/gmail.svg2
-rw-r--r--assets/lib/simple-icons/icons/gnome.svg2
-rw-r--r--assets/lib/simple-icons/icons/gnometerminal.svg1
-rw-r--r--assets/lib/simple-icons/icons/gnu.svg2
-rw-r--r--assets/lib/simple-icons/icons/gnubash.svg2
-rw-r--r--assets/lib/simple-icons/icons/gnuemacs.svg2
-rw-r--r--assets/lib/simple-icons/icons/gnuicecat.svg2
-rw-r--r--assets/lib/simple-icons/icons/gnuprivacyguard.svg2
-rw-r--r--assets/lib/simple-icons/icons/gnusocial.svg2
-rw-r--r--assets/lib/simple-icons/icons/go.svg2
-rw-r--r--assets/lib/simple-icons/icons/gocd.svg1
-rw-r--r--assets/lib/simple-icons/icons/godaddy.svg1
-rw-r--r--assets/lib/simple-icons/icons/godotengine.svg2
-rw-r--r--assets/lib/simple-icons/icons/gofundme.svg2
-rw-r--r--assets/lib/simple-icons/icons/gog-dot-com.svg1
-rw-r--r--assets/lib/simple-icons/icons/gogdotcom.svg1
-rw-r--r--assets/lib/simple-icons/icons/goland.svg1
-rw-r--r--assets/lib/simple-icons/icons/goldenline.svg2
-rw-r--r--assets/lib/simple-icons/icons/goodreads.svg2
-rw-r--r--assets/lib/simple-icons/icons/google.svg2
-rw-r--r--assets/lib/simple-icons/icons/googleads.svg2
-rw-r--r--assets/lib/simple-icons/icons/googleadsense.svg2
-rw-r--r--assets/lib/simple-icons/icons/googleanalytics.svg2
-rw-r--r--assets/lib/simple-icons/icons/googleassistant.svg2
-rw-r--r--assets/lib/simple-icons/icons/googlecalendar.svg2
-rw-r--r--assets/lib/simple-icons/icons/googlecardboard.svg2
-rw-r--r--assets/lib/simple-icons/icons/googlecast.svg1
-rw-r--r--assets/lib/simple-icons/icons/googlechat.svg1
-rw-r--r--assets/lib/simple-icons/icons/googlechrome.svg2
-rw-r--r--assets/lib/simple-icons/icons/googleclassroom.svg2
-rw-r--r--assets/lib/simple-icons/icons/googlecloud.svg2
-rw-r--r--assets/lib/simple-icons/icons/googlecolab.svg1
-rw-r--r--assets/lib/simple-icons/icons/googledomains.svg1
-rw-r--r--assets/lib/simple-icons/icons/googledrive.svg2
-rw-r--r--assets/lib/simple-icons/icons/googleearth.svg2
-rw-r--r--assets/lib/simple-icons/icons/googlefit.svg2
-rw-r--r--assets/lib/simple-icons/icons/googlefonts.svg1
-rw-r--r--assets/lib/simple-icons/icons/googlehangouts.svg2
-rw-r--r--assets/lib/simple-icons/icons/googlehangoutschat.svg1
-rw-r--r--assets/lib/simple-icons/icons/googlehangoutsmeet.svg1
-rw-r--r--assets/lib/simple-icons/icons/googlekeep.svg2
-rw-r--r--assets/lib/simple-icons/icons/googlelens.svg2
-rw-r--r--assets/lib/simple-icons/icons/googlemaps.svg2
-rw-r--r--assets/lib/simple-icons/icons/googlemarketingplatform.svg1
-rw-r--r--assets/lib/simple-icons/icons/googlemeet.svg1
-rw-r--r--assets/lib/simple-icons/icons/googlemessages.svg2
-rw-r--r--assets/lib/simple-icons/icons/googlemybusiness.svg2
-rw-r--r--assets/lib/simple-icons/icons/googlenearby.svg2
-rw-r--r--assets/lib/simple-icons/icons/googlenews.svg1
-rw-r--r--assets/lib/simple-icons/icons/googleoptimize.svg1
-rw-r--r--assets/lib/simple-icons/icons/googlepay.svg2
-rw-r--r--assets/lib/simple-icons/icons/googlephotos.svg1
-rw-r--r--assets/lib/simple-icons/icons/googleplay.svg2
-rw-r--r--assets/lib/simple-icons/icons/googlepodcasts.svg2
-rw-r--r--assets/lib/simple-icons/icons/googlescholar.svg2
-rw-r--r--assets/lib/simple-icons/icons/googlesearchconsole.svg2
-rw-r--r--assets/lib/simple-icons/icons/googlesheets.svg2
-rw-r--r--assets/lib/simple-icons/icons/googlestreetview.svg2
-rw-r--r--assets/lib/simple-icons/icons/googletagmanager.svg2
-rw-r--r--assets/lib/simple-icons/icons/googletranslate.svg2
-rw-r--r--assets/lib/simple-icons/icons/gotomeeting.svg1
-rw-r--r--assets/lib/simple-icons/icons/gov-dot-uk.svg1
-rw-r--r--assets/lib/simple-icons/icons/grab.svg1
-rw-r--r--assets/lib/simple-icons/icons/gradle.svg2
-rw-r--r--assets/lib/simple-icons/icons/grafana.svg2
-rw-r--r--assets/lib/simple-icons/icons/grammarly.svg1
-rw-r--r--assets/lib/simple-icons/icons/grandfrais.svg1
-rw-r--r--assets/lib/simple-icons/icons/graphcool.svg1
-rw-r--r--assets/lib/simple-icons/icons/graphql.svg2
-rw-r--r--assets/lib/simple-icons/icons/grav.svg2
-rw-r--r--assets/lib/simple-icons/icons/gravatar.svg2
-rw-r--r--assets/lib/simple-icons/icons/graylog.svg1
-rw-r--r--assets/lib/simple-icons/icons/greenkeeper.svg1
-rw-r--r--assets/lib/simple-icons/icons/greensock.svg2
-rw-r--r--assets/lib/simple-icons/icons/griddotai.svg1
-rw-r--r--assets/lib/simple-icons/icons/gridsome.svg1
-rw-r--r--assets/lib/simple-icons/icons/groovy.svg1
-rw-r--r--assets/lib/simple-icons/icons/groupme.svg1
-rw-r--r--assets/lib/simple-icons/icons/groupon.svg2
-rw-r--r--assets/lib/simple-icons/icons/grubhub.svg1
-rw-r--r--assets/lib/simple-icons/icons/grunt.svg2
-rw-r--r--assets/lib/simple-icons/icons/guangzhoumetro.svg2
-rw-r--r--assets/lib/simple-icons/icons/guilded.svg1
-rw-r--r--assets/lib/simple-icons/icons/gulp.svg2
-rw-r--r--assets/lib/simple-icons/icons/gumroad.svg2
-rw-r--r--assets/lib/simple-icons/icons/gumtree.svg2
-rw-r--r--assets/lib/simple-icons/icons/gunicorn.svg1
-rw-r--r--assets/lib/simple-icons/icons/gurobi.svg1
-rw-r--r--assets/lib/simple-icons/icons/gutenberg.svg2
-rw-r--r--assets/lib/simple-icons/icons/habr.svg2
-rw-r--r--assets/lib/simple-icons/icons/hackaday.svg2
-rw-r--r--assets/lib/simple-icons/icons/hackclub.svg1
-rw-r--r--assets/lib/simple-icons/icons/hackerearth.svg2
-rw-r--r--assets/lib/simple-icons/icons/hackernoon.svg1
-rw-r--r--assets/lib/simple-icons/icons/hackerone.svg2
-rw-r--r--assets/lib/simple-icons/icons/hackerrank.svg2
-rw-r--r--assets/lib/simple-icons/icons/hackhands.svg1
-rw-r--r--assets/lib/simple-icons/icons/hackster.svg2
-rw-r--r--assets/lib/simple-icons/icons/hackthebox.svg1
-rw-r--r--assets/lib/simple-icons/icons/handlebarsdotjs.svg1
-rw-r--r--assets/lib/simple-icons/icons/handshake.svg1
-rw-r--r--assets/lib/simple-icons/icons/handshake_protocol.svg1
-rw-r--r--assets/lib/simple-icons/icons/happycow.svg2
-rw-r--r--assets/lib/simple-icons/icons/harbor.svg2
-rw-r--r--assets/lib/simple-icons/icons/hashnode.svg2
-rw-r--r--assets/lib/simple-icons/icons/haskell.svg2
-rw-r--r--assets/lib/simple-icons/icons/hasura.svg1
-rw-r--r--assets/lib/simple-icons/icons/hatenabookmark.svg2
-rw-r--r--assets/lib/simple-icons/icons/haveibeenpwned.svg2
-rw-r--r--assets/lib/simple-icons/icons/haxe.svg2
-rw-r--r--assets/lib/simple-icons/icons/hbo.svg2
-rw-r--r--assets/lib/simple-icons/icons/hcl.svg1
-rw-r--r--assets/lib/simple-icons/icons/headlessui.svg1
-rw-r--r--assets/lib/simple-icons/icons/headspace.svg1
-rw-r--r--assets/lib/simple-icons/icons/hellofresh.svg2
-rw-r--r--assets/lib/simple-icons/icons/hellyhansen.svg2
-rw-r--r--assets/lib/simple-icons/icons/helm.svg2
-rw-r--r--assets/lib/simple-icons/icons/helpdesk.svg1
-rw-r--r--assets/lib/simple-icons/icons/helpscout.svg1
-rw-r--r--assets/lib/simple-icons/icons/here.svg2
-rw-r--r--assets/lib/simple-icons/icons/heroku.svg2
-rw-r--r--assets/lib/simple-icons/icons/hetzner.svg1
-rw-r--r--assets/lib/simple-icons/icons/hexo.svg2
-rw-r--r--assets/lib/simple-icons/icons/hey.svg1
-rw-r--r--assets/lib/simple-icons/icons/hibernate.svg1
-rw-r--r--assets/lib/simple-icons/icons/highly.svg1
-rw-r--r--assets/lib/simple-icons/icons/hilton.svg2
-rw-r--r--assets/lib/simple-icons/icons/hipchat.svg1
-rw-r--r--assets/lib/simple-icons/icons/hitachi.svg2
-rw-r--r--assets/lib/simple-icons/icons/hive.svg2
-rw-r--r--assets/lib/simple-icons/icons/hive_blockchain.svg1
-rw-r--r--assets/lib/simple-icons/icons/hockeyapp.svg1
-rw-r--r--assets/lib/simple-icons/icons/homeadvisor.svg1
-rw-r--r--assets/lib/simple-icons/icons/homeassistant.svg2
-rw-r--r--assets/lib/simple-icons/icons/homeassistantcommunitystore.svg1
-rw-r--r--assets/lib/simple-icons/icons/homebrew.svg1
-rw-r--r--assets/lib/simple-icons/icons/homebridge.svg1
-rw-r--r--assets/lib/simple-icons/icons/homify.svg2
-rw-r--r--assets/lib/simple-icons/icons/honda.svg2
-rw-r--r--assets/lib/simple-icons/icons/hootsuite.svg2
-rw-r--r--assets/lib/simple-icons/icons/hoppscotch.svg1
-rw-r--r--assets/lib/simple-icons/icons/hotels-dot-com.svg1
-rw-r--r--assets/lib/simple-icons/icons/hotelsdotcom.svg1
-rw-r--r--assets/lib/simple-icons/icons/hotjar.svg1
-rw-r--r--assets/lib/simple-icons/icons/houdini.svg2
-rw-r--r--assets/lib/simple-icons/icons/houzz.svg2
-rw-r--r--assets/lib/simple-icons/icons/hp.svg2
-rw-r--r--assets/lib/simple-icons/icons/html5.svg2
-rw-r--r--assets/lib/simple-icons/icons/htmlacademy.svg2
-rw-r--r--assets/lib/simple-icons/icons/huawei.svg2
-rw-r--r--assets/lib/simple-icons/icons/hubspot.svg2
-rw-r--r--assets/lib/simple-icons/icons/hugo.svg2
-rw-r--r--assets/lib/simple-icons/icons/hulu.svg2
-rw-r--r--assets/lib/simple-icons/icons/humblebundle.svg2
-rw-r--r--assets/lib/simple-icons/icons/hungryjacks.svg1
-rw-r--r--assets/lib/simple-icons/icons/hurriyetemlak.svg2
-rw-r--r--assets/lib/simple-icons/icons/husqvarna.svg2
-rw-r--r--assets/lib/simple-icons/icons/hyper.svg1
-rw-r--r--assets/lib/simple-icons/icons/hyperledger.svg1
-rw-r--r--assets/lib/simple-icons/icons/hypothesis.svg2
-rw-r--r--assets/lib/simple-icons/icons/hyundai.svg2
-rw-r--r--assets/lib/simple-icons/icons/i18next.svg1
-rw-r--r--assets/lib/simple-icons/icons/iata.svg2
-rw-r--r--assets/lib/simple-icons/icons/ibeacon.svg2
-rw-r--r--assets/lib/simple-icons/icons/ibm.svg2
-rw-r--r--assets/lib/simple-icons/icons/ibmcloud.svg1
-rw-r--r--assets/lib/simple-icons/icons/ibmwatson.svg1
-rw-r--r--assets/lib/simple-icons/icons/iceland.svg1
-rw-r--r--assets/lib/simple-icons/icons/icinga.svg1
-rw-r--r--assets/lib/simple-icons/icons/icloud.svg2
-rw-r--r--assets/lib/simple-icons/icons/icomoon.svg2
-rw-r--r--assets/lib/simple-icons/icons/icon.svg2
-rw-r--r--assets/lib/simple-icons/icons/iconfinder.svg1
-rw-r--r--assets/lib/simple-icons/icons/iconify.svg2
-rw-r--r--assets/lib/simple-icons/icons/iconjar.svg2
-rw-r--r--assets/lib/simple-icons/icons/icons8.svg1
-rw-r--r--assets/lib/simple-icons/icons/icq.svg2
-rw-r--r--assets/lib/simple-icons/icons/ideal.svg1
-rw-r--r--assets/lib/simple-icons/icons/ieee.svg1
-rw-r--r--assets/lib/simple-icons/icons/ifixit.svg2
-rw-r--r--assets/lib/simple-icons/icons/ifood.svg2
-rw-r--r--assets/lib/simple-icons/icons/ifttt.svg1
-rw-r--r--assets/lib/simple-icons/icons/iheartradio.svg1
-rw-r--r--assets/lib/simple-icons/icons/ikea.svg1
-rw-r--r--assets/lib/simple-icons/icons/imagej.svg1
-rw-r--r--assets/lib/simple-icons/icons/imdb.svg2
-rw-r--r--assets/lib/simple-icons/icons/imgur.svg2
-rw-r--r--assets/lib/simple-icons/icons/immer.svg1
-rw-r--r--assets/lib/simple-icons/icons/imou.svg1
-rw-r--r--assets/lib/simple-icons/icons/indeed.svg2
-rw-r--r--assets/lib/simple-icons/icons/infiniti.svg1
-rw-r--r--assets/lib/simple-icons/icons/influxdb.svg2
-rw-r--r--assets/lib/simple-icons/icons/informatica.svg1
-rw-r--r--assets/lib/simple-icons/icons/infosys.svg1
-rw-r--r--assets/lib/simple-icons/icons/ingress.svg1
-rw-r--r--assets/lib/simple-icons/icons/inkscape.svg2
-rw-r--r--assets/lib/simple-icons/icons/insomnia.svg2
-rw-r--r--assets/lib/simple-icons/icons/instacart.svg2
-rw-r--r--assets/lib/simple-icons/icons/instagram.svg2
-rw-r--r--assets/lib/simple-icons/icons/instapaper.svg2
-rw-r--r--assets/lib/simple-icons/icons/instatus.svg1
-rw-r--r--assets/lib/simple-icons/icons/instructables.svg1
-rw-r--r--assets/lib/simple-icons/icons/integromat.svg1
-rw-r--r--assets/lib/simple-icons/icons/intel.svg2
-rw-r--r--assets/lib/simple-icons/icons/intellijidea.svg2
-rw-r--r--assets/lib/simple-icons/icons/interactjs.svg1
-rw-r--r--assets/lib/simple-icons/icons/intercom.svg2
-rw-r--r--assets/lib/simple-icons/icons/intermarche.svg1
-rw-r--r--assets/lib/simple-icons/icons/internetarchive.svg2
-rw-r--r--assets/lib/simple-icons/icons/internetexplorer.svg2
-rw-r--r--assets/lib/simple-icons/icons/intigriti.svg1
-rw-r--r--assets/lib/simple-icons/icons/invision.svg2
-rw-r--r--assets/lib/simple-icons/icons/invoiceninja.svg2
-rw-r--r--assets/lib/simple-icons/icons/iobroker.svg2
-rw-r--r--assets/lib/simple-icons/icons/ionic.svg2
-rw-r--r--assets/lib/simple-icons/icons/ionos.svg1
-rw-r--r--assets/lib/simple-icons/icons/ios.svg2
-rw-r--r--assets/lib/simple-icons/icons/iota.svg1
-rw-r--r--assets/lib/simple-icons/icons/ipfs.svg2
-rw-r--r--assets/lib/simple-icons/icons/issuu.svg2
-rw-r--r--assets/lib/simple-icons/icons/istio.svg1
-rw-r--r--assets/lib/simple-icons/icons/itch-dot-io.svg1
-rw-r--r--assets/lib/simple-icons/icons/itchdotio.svg1
-rw-r--r--assets/lib/simple-icons/icons/iterm2.svg1
-rw-r--r--assets/lib/simple-icons/icons/itunes.svg2
-rw-r--r--assets/lib/simple-icons/icons/iveco.svg2
-rw-r--r--assets/lib/simple-icons/icons/jabber.svg2
-rw-r--r--assets/lib/simple-icons/icons/jaguar.svg1
-rw-r--r--assets/lib/simple-icons/icons/jamboard.svg1
-rw-r--r--assets/lib/simple-icons/icons/jameson.svg2
-rw-r--r--assets/lib/simple-icons/icons/jamstack.svg1
-rw-r--r--assets/lib/simple-icons/icons/jasmine.svg1
-rw-r--r--assets/lib/simple-icons/icons/java.svg2
-rw-r--r--assets/lib/simple-icons/icons/javascript.svg2
-rw-r--r--assets/lib/simple-icons/icons/jbl.svg1
-rw-r--r--assets/lib/simple-icons/icons/jcb.svg2
-rw-r--r--assets/lib/simple-icons/icons/jeep.svg2
-rw-r--r--assets/lib/simple-icons/icons/jekyll.svg2
-rw-r--r--assets/lib/simple-icons/icons/jellyfin.svg1
-rw-r--r--assets/lib/simple-icons/icons/jenkins.svg2
-rw-r--r--assets/lib/simple-icons/icons/jenkinsx.svg2
-rw-r--r--assets/lib/simple-icons/icons/jest.svg2
-rw-r--r--assets/lib/simple-icons/icons/jet.svg2
-rw-r--r--assets/lib/simple-icons/icons/jetbrains.svg2
-rw-r--r--assets/lib/simple-icons/icons/jetpackcompose.svg1
-rw-r--r--assets/lib/simple-icons/icons/jfrog.svg1
-rw-r--r--assets/lib/simple-icons/icons/jfrogbintray.svg1
-rw-r--r--assets/lib/simple-icons/icons/jinja.svg2
-rw-r--r--assets/lib/simple-icons/icons/jira.svg2
-rw-r--r--assets/lib/simple-icons/icons/jirasoftware.svg1
-rw-r--r--assets/lib/simple-icons/icons/jitsi.svg1
-rw-r--r--assets/lib/simple-icons/icons/johndeere.svg2
-rw-r--r--assets/lib/simple-icons/icons/joomla.svg2
-rw-r--r--assets/lib/simple-icons/icons/joplin.svg1
-rw-r--r--assets/lib/simple-icons/icons/jordan.svg1
-rw-r--r--assets/lib/simple-icons/icons/jpeg.svg1
-rw-r--r--assets/lib/simple-icons/icons/jquery.svg2
-rw-r--r--assets/lib/simple-icons/icons/jrgroup.svg2
-rw-r--r--assets/lib/simple-icons/icons/jsdelivr.svg2
-rw-r--r--assets/lib/simple-icons/icons/jsfiddle.svg2
-rw-r--r--assets/lib/simple-icons/icons/json.svg2
-rw-r--r--assets/lib/simple-icons/icons/jsonwebtokens.svg2
-rw-r--r--assets/lib/simple-icons/icons/jss.svg1
-rw-r--r--assets/lib/simple-icons/icons/julia.svg1
-rw-r--r--assets/lib/simple-icons/icons/junipernetworks.svg1
-rw-r--r--assets/lib/simple-icons/icons/junit5.svg1
-rw-r--r--assets/lib/simple-icons/icons/jupyter.svg2
-rw-r--r--assets/lib/simple-icons/icons/justeat.svg2
-rw-r--r--assets/lib/simple-icons/icons/justgiving.svg2
-rw-r--r--assets/lib/simple-icons/icons/k3s.svg1
-rw-r--r--assets/lib/simple-icons/icons/kaggle.svg2
-rw-r--r--assets/lib/simple-icons/icons/kahoot.svg1
-rw-r--r--assets/lib/simple-icons/icons/kaios.svg2
-rw-r--r--assets/lib/simple-icons/icons/kakao.svg1
-rw-r--r--assets/lib/simple-icons/icons/kakaotalk.svg1
-rw-r--r--assets/lib/simple-icons/icons/kalilinux.svg1
-rw-r--r--assets/lib/simple-icons/icons/kaniko.svg1
-rw-r--r--assets/lib/simple-icons/icons/karlsruherverkehrsverbund.svg1
-rw-r--r--assets/lib/simple-icons/icons/kasasmart.svg1
-rw-r--r--assets/lib/simple-icons/icons/kashflow.svg1
-rw-r--r--assets/lib/simple-icons/icons/kaspersky.svg2
-rw-r--r--assets/lib/simple-icons/icons/katacoda.svg1
-rw-r--r--assets/lib/simple-icons/icons/katana.svg2
-rw-r--r--assets/lib/simple-icons/icons/kaufland.svg1
-rw-r--r--assets/lib/simple-icons/icons/kde.svg2
-rw-r--r--assets/lib/simple-icons/icons/kdenlive.svg1
-rw-r--r--assets/lib/simple-icons/icons/keepassxc.svg2
-rw-r--r--assets/lib/simple-icons/icons/kentico.svg2
-rw-r--r--assets/lib/simple-icons/icons/keras.svg2
-rw-r--r--assets/lib/simple-icons/icons/keybase.svg2
-rw-r--r--assets/lib/simple-icons/icons/keycdn.svg2
-rw-r--r--assets/lib/simple-icons/icons/kfc.svg1
-rw-r--r--assets/lib/simple-icons/icons/khanacademy.svg2
-rw-r--r--assets/lib/simple-icons/icons/khronosgroup.svg2
-rw-r--r--assets/lib/simple-icons/icons/kia.svg2
-rw-r--r--assets/lib/simple-icons/icons/kibana.svg2
-rw-r--r--assets/lib/simple-icons/icons/kickstarter.svg2
-rw-r--r--assets/lib/simple-icons/icons/kik.svg2
-rw-r--r--assets/lib/simple-icons/icons/kingstontechnology.svg1
-rw-r--r--assets/lib/simple-icons/icons/kinopoisk.svg1
-rw-r--r--assets/lib/simple-icons/icons/kirby.svg2
-rw-r--r--assets/lib/simple-icons/icons/kitsu.svg1
-rw-r--r--assets/lib/simple-icons/icons/klarna.svg1
-rw-r--r--assets/lib/simple-icons/icons/klm.svg2
-rw-r--r--assets/lib/simple-icons/icons/klook.svg1
-rw-r--r--assets/lib/simple-icons/icons/klout.svg1
-rw-r--r--assets/lib/simple-icons/icons/knative.svg1
-rw-r--r--assets/lib/simple-icons/icons/knowledgebase.svg1
-rw-r--r--assets/lib/simple-icons/icons/known.svg2
-rw-r--r--assets/lib/simple-icons/icons/ko-fi.svg1
-rw-r--r--assets/lib/simple-icons/icons/koa.svg1
-rw-r--r--assets/lib/simple-icons/icons/koc.svg1
-rw-r--r--assets/lib/simple-icons/icons/kodi.svg2
-rw-r--r--assets/lib/simple-icons/icons/koding.svg1
-rw-r--r--assets/lib/simple-icons/icons/kofax.svg2
-rw-r--r--assets/lib/simple-icons/icons/kofi.svg1
-rw-r--r--assets/lib/simple-icons/icons/komoot.svg1
-rw-r--r--assets/lib/simple-icons/icons/konami.svg1
-rw-r--r--assets/lib/simple-icons/icons/kong.svg1
-rw-r--r--assets/lib/simple-icons/icons/kongregate.svg1
-rw-r--r--assets/lib/simple-icons/icons/konva.svg1
-rw-r--r--assets/lib/simple-icons/icons/kotlin.svg2
-rw-r--r--assets/lib/simple-icons/icons/krita.svg2
-rw-r--r--assets/lib/simple-icons/icons/ktm.svg1
-rw-r--r--assets/lib/simple-icons/icons/kuaishou.svg1
-rw-r--r--assets/lib/simple-icons/icons/kubernetes.svg2
-rw-r--r--assets/lib/simple-icons/icons/kubuntu.svg1
-rw-r--r--assets/lib/simple-icons/icons/kuma.svg1
-rw-r--r--assets/lib/simple-icons/icons/kyocera.svg2
-rw-r--r--assets/lib/simple-icons/icons/labview.svg2
-rw-r--r--assets/lib/simple-icons/icons/lada.svg1
-rw-r--r--assets/lib/simple-icons/icons/lamborghini.svg2
-rw-r--r--assets/lib/simple-icons/icons/landrover.svg1
-rw-r--r--assets/lib/simple-icons/icons/laragon.svg1
-rw-r--r--assets/lib/simple-icons/icons/laravel.svg2
-rw-r--r--assets/lib/simple-icons/icons/laravelhorizon.svg2
-rw-r--r--assets/lib/simple-icons/icons/laravelnova.svg2
-rw-r--r--assets/lib/simple-icons/icons/last-dot-fm.svg1
-rw-r--r--assets/lib/simple-icons/icons/lastdotfm.svg1
-rw-r--r--assets/lib/simple-icons/icons/lastpass.svg2
-rw-r--r--assets/lib/simple-icons/icons/latex.svg2
-rw-r--r--assets/lib/simple-icons/icons/launchpad.svg2
-rw-r--r--assets/lib/simple-icons/icons/lazarus.svg1
-rw-r--r--assets/lib/simple-icons/icons/lbry.svg1
-rw-r--r--assets/lib/simple-icons/icons/leaderprice.svg1
-rw-r--r--assets/lib/simple-icons/icons/leaflet.svg2
-rw-r--r--assets/lib/simple-icons/icons/leanpub.svg1
-rw-r--r--assets/lib/simple-icons/icons/leetcode.svg2
-rw-r--r--assets/lib/simple-icons/icons/lemmy.svg1
-rw-r--r--assets/lib/simple-icons/icons/lenovo.svg2
-rw-r--r--assets/lib/simple-icons/icons/lens.svg1
-rw-r--r--assets/lib/simple-icons/icons/lerna.svg1
-rw-r--r--assets/lib/simple-icons/icons/leroymerlin.svg1
-rw-r--r--assets/lib/simple-icons/icons/less.svg1
-rw-r--r--assets/lib/simple-icons/icons/letsencrypt.svg2
-rw-r--r--assets/lib/simple-icons/icons/letterboxd.svg2
-rw-r--r--assets/lib/simple-icons/icons/levelsdotfyi.svg1
-rw-r--r--assets/lib/simple-icons/icons/lg.svg2
-rw-r--r--assets/lib/simple-icons/icons/lgtm.svg2
-rw-r--r--assets/lib/simple-icons/icons/liberapay.svg2
-rw-r--r--assets/lib/simple-icons/icons/librariesdotio.svg1
-rw-r--r--assets/lib/simple-icons/icons/librarything.svg2
-rw-r--r--assets/lib/simple-icons/icons/libreoffice.svg2
-rw-r--r--assets/lib/simple-icons/icons/libuv.svg2
-rw-r--r--assets/lib/simple-icons/icons/lichess.svg1
-rw-r--r--assets/lib/simple-icons/icons/lidl.svg1
-rw-r--r--assets/lib/simple-icons/icons/lifx.svg1
-rw-r--r--assets/lib/simple-icons/icons/lighthouse.svg2
-rw-r--r--assets/lib/simple-icons/icons/line.svg2
-rw-r--r--assets/lib/simple-icons/icons/lineageos.svg2
-rw-r--r--assets/lib/simple-icons/icons/linewebtoon.svg1
-rw-r--r--assets/lib/simple-icons/icons/linkedin.svg2
-rw-r--r--assets/lib/simple-icons/icons/linkerd.svg1
-rw-r--r--assets/lib/simple-icons/icons/linkfire.svg1
-rw-r--r--assets/lib/simple-icons/icons/linktree.svg1
-rw-r--r--assets/lib/simple-icons/icons/linode.svg2
-rw-r--r--assets/lib/simple-icons/icons/linux.svg2
-rw-r--r--assets/lib/simple-icons/icons/linuxcontainers.svg1
-rw-r--r--assets/lib/simple-icons/icons/linuxfoundation.svg2
-rw-r--r--assets/lib/simple-icons/icons/linuxmint.svg2
-rw-r--r--assets/lib/simple-icons/icons/lionair.svg1
-rw-r--r--assets/lib/simple-icons/icons/liquibase.svg1
-rw-r--r--assets/lib/simple-icons/icons/lit.svg1
-rw-r--r--assets/lib/simple-icons/icons/litecoin.svg2
-rw-r--r--assets/lib/simple-icons/icons/livechat.svg1
-rw-r--r--assets/lib/simple-icons/icons/livejournal.svg2
-rw-r--r--assets/lib/simple-icons/icons/livestream.svg1
-rw-r--r--assets/lib/simple-icons/icons/livewire.svg1
-rw-r--r--assets/lib/simple-icons/icons/llvm.svg2
-rw-r--r--assets/lib/simple-icons/icons/lmms.svg2
-rw-r--r--assets/lib/simple-icons/icons/lodash.svg1
-rw-r--r--assets/lib/simple-icons/icons/logitech.svg2
-rw-r--r--assets/lib/simple-icons/icons/logmein.svg2
-rw-r--r--assets/lib/simple-icons/icons/logstash.svg2
-rw-r--r--assets/lib/simple-icons/icons/looker.svg1
-rw-r--r--assets/lib/simple-icons/icons/loom.svg2
-rw-r--r--assets/lib/simple-icons/icons/loop.svg2
-rw-r--r--assets/lib/simple-icons/icons/lospec.svg1
-rw-r--r--assets/lib/simple-icons/icons/lotpolishairlines.svg1
-rw-r--r--assets/lib/simple-icons/icons/lua.svg2
-rw-r--r--assets/lib/simple-icons/icons/lubuntu.svg2
-rw-r--r--assets/lib/simple-icons/icons/lufthansa.svg2
-rw-r--r--assets/lib/simple-icons/icons/lumen.svg2
-rw-r--r--assets/lib/simple-icons/icons/lunacy.svg1
-rw-r--r--assets/lib/simple-icons/icons/lydia.svg1
-rw-r--r--assets/lib/simple-icons/icons/lyft.svg2
-rw-r--r--assets/lib/simple-icons/icons/maas.svg2
-rw-r--r--assets/lib/simple-icons/icons/macos.svg1
-rw-r--r--assets/lib/simple-icons/icons/macys.svg2
-rw-r--r--assets/lib/simple-icons/icons/magasinsu.svg1
-rw-r--r--assets/lib/simple-icons/icons/magento.svg2
-rw-r--r--assets/lib/simple-icons/icons/magisk.svg2
-rw-r--r--assets/lib/simple-icons/icons/mail-dot-ru.svg1
-rw-r--r--assets/lib/simple-icons/icons/mailchimp.svg2
-rw-r--r--assets/lib/simple-icons/icons/maildotru.svg1
-rw-r--r--assets/lib/simple-icons/icons/majorleaguehacking.svg1
-rw-r--r--assets/lib/simple-icons/icons/makerbot.svg2
-rw-r--r--assets/lib/simple-icons/icons/mamp.svg1
-rw-r--r--assets/lib/simple-icons/icons/man.svg2
-rw-r--r--assets/lib/simple-icons/icons/manageiq.svg2
-rw-r--r--assets/lib/simple-icons/icons/manjaro.svg2
-rw-r--r--assets/lib/simple-icons/icons/mapbox.svg2
-rw-r--r--assets/lib/simple-icons/icons/mariadb.svg2
-rw-r--r--assets/lib/simple-icons/icons/mariadbfoundation.svg2
-rw-r--r--assets/lib/simple-icons/icons/markdown.svg2
-rw-r--r--assets/lib/simple-icons/icons/marketo.svg2
-rw-r--r--assets/lib/simple-icons/icons/marriott.svg2
-rw-r--r--assets/lib/simple-icons/icons/maserati.svg2
-rw-r--r--assets/lib/simple-icons/icons/mastercard.svg2
-rw-r--r--assets/lib/simple-icons/icons/mastercomfig.svg1
-rw-r--r--assets/lib/simple-icons/icons/mastodon.svg2
-rw-r--r--assets/lib/simple-icons/icons/material-ui.svg1
-rw-r--r--assets/lib/simple-icons/icons/materialdesign.svg2
-rw-r--r--assets/lib/simple-icons/icons/materialdesignicons.svg2
-rw-r--r--assets/lib/simple-icons/icons/mathworks.svg1
-rw-r--r--assets/lib/simple-icons/icons/matomo.svg1
-rw-r--r--assets/lib/simple-icons/icons/matrix.svg2
-rw-r--r--assets/lib/simple-icons/icons/matterdotjs.svg1
-rw-r--r--assets/lib/simple-icons/icons/mattermost.svg2
-rw-r--r--assets/lib/simple-icons/icons/matternet.svg2
-rw-r--r--assets/lib/simple-icons/icons/max.svg1
-rw-r--r--assets/lib/simple-icons/icons/maxplanckgesellschaft.svg1
-rw-r--r--assets/lib/simple-icons/icons/maytag.svg1
-rw-r--r--assets/lib/simple-icons/icons/mazda.svg2
-rw-r--r--assets/lib/simple-icons/icons/mcafee.svg2
-rw-r--r--assets/lib/simple-icons/icons/mcdonalds.svg2
-rw-r--r--assets/lib/simple-icons/icons/mclaren.svg1
-rw-r--r--assets/lib/simple-icons/icons/mdnwebdocs.svg2
-rw-r--r--assets/lib/simple-icons/icons/mdx.svg1
-rw-r--r--assets/lib/simple-icons/icons/mediafire.svg2
-rw-r--r--assets/lib/simple-icons/icons/mediamarkt.svg1
-rw-r--r--assets/lib/simple-icons/icons/mediatek.svg1
-rw-r--r--assets/lib/simple-icons/icons/mediatemple.svg2
-rw-r--r--assets/lib/simple-icons/icons/medium.svg2
-rw-r--r--assets/lib/simple-icons/icons/meetup.svg2
-rw-r--r--assets/lib/simple-icons/icons/mega.svg2
-rw-r--r--assets/lib/simple-icons/icons/mendeley.svg2
-rw-r--r--assets/lib/simple-icons/icons/mercedes.svg2
-rw-r--r--assets/lib/simple-icons/icons/merck.svg1
-rw-r--r--assets/lib/simple-icons/icons/mercurial.svg1
-rw-r--r--assets/lib/simple-icons/icons/messenger.svg2
-rw-r--r--assets/lib/simple-icons/icons/meta.svg1
-rw-r--r--assets/lib/simple-icons/icons/metabase.svg1
-rw-r--r--assets/lib/simple-icons/icons/metafilter.svg1
-rw-r--r--assets/lib/simple-icons/icons/meteor.svg2
-rw-r--r--assets/lib/simple-icons/icons/metro.svg1
-rw-r--r--assets/lib/simple-icons/icons/metrodelaciudaddemexico.svg1
-rw-r--r--assets/lib/simple-icons/icons/metrodemadrid.svg1
-rw-r--r--assets/lib/simple-icons/icons/metrodeparis.svg2
-rw-r--r--assets/lib/simple-icons/icons/mewe.svg1
-rw-r--r--assets/lib/simple-icons/icons/micro-dot-blog.svg1
-rw-r--r--assets/lib/simple-icons/icons/microbit.svg2
-rw-r--r--assets/lib/simple-icons/icons/microdotblog.svg1
-rw-r--r--assets/lib/simple-icons/icons/microgenetics.svg2
-rw-r--r--assets/lib/simple-icons/icons/micropython.svg1
-rw-r--r--assets/lib/simple-icons/icons/microsoft.svg2
-rw-r--r--assets/lib/simple-icons/icons/microsoftacademic.svg2
-rw-r--r--assets/lib/simple-icons/icons/microsoftaccess.svg2
-rw-r--r--assets/lib/simple-icons/icons/microsoftazure.svg2
-rw-r--r--assets/lib/simple-icons/icons/microsoftbing.svg1
-rw-r--r--assets/lib/simple-icons/icons/microsoftedge.svg2
-rw-r--r--assets/lib/simple-icons/icons/microsoftexcel.svg2
-rw-r--r--assets/lib/simple-icons/icons/microsoftexchange.svg2
-rw-r--r--assets/lib/simple-icons/icons/microsoftoffice.svg2
-rw-r--r--assets/lib/simple-icons/icons/microsoftonedrive.svg2
-rw-r--r--assets/lib/simple-icons/icons/microsoftonenote.svg2
-rw-r--r--assets/lib/simple-icons/icons/microsoftoutlook.svg2
-rw-r--r--assets/lib/simple-icons/icons/microsoftpowerpoint.svg2
-rw-r--r--assets/lib/simple-icons/icons/microsoftsharepoint.svg2
-rw-r--r--assets/lib/simple-icons/icons/microsoftsqlserver.svg2
-rw-r--r--assets/lib/simple-icons/icons/microsoftteams.svg2
-rw-r--r--assets/lib/simple-icons/icons/microsofttranslator.svg1
-rw-r--r--assets/lib/simple-icons/icons/microsoftvisio.svg2
-rw-r--r--assets/lib/simple-icons/icons/microsoftword.svg2
-rw-r--r--assets/lib/simple-icons/icons/microstrategy.svg2
-rw-r--r--assets/lib/simple-icons/icons/midi.svg2
-rw-r--r--assets/lib/simple-icons/icons/minds.svg2
-rw-r--r--assets/lib/simple-icons/icons/minecraft.svg1
-rw-r--r--assets/lib/simple-icons/icons/minetest.svg2
-rw-r--r--assets/lib/simple-icons/icons/mini.svg1
-rw-r--r--assets/lib/simple-icons/icons/minutemailer.svg2
-rw-r--r--assets/lib/simple-icons/icons/miro.svg1
-rw-r--r--assets/lib/simple-icons/icons/mitsubishi.svg2
-rw-r--r--assets/lib/simple-icons/icons/mix.svg2
-rw-r--r--assets/lib/simple-icons/icons/mixcloud.svg2
-rw-r--r--assets/lib/simple-icons/icons/mixer.svg1
-rw-r--r--assets/lib/simple-icons/icons/mlb.svg1
-rw-r--r--assets/lib/simple-icons/icons/mobx.svg1
-rw-r--r--assets/lib/simple-icons/icons/mobxstatetree.svg1
-rw-r--r--assets/lib/simple-icons/icons/mocha.svg2
-rw-r--r--assets/lib/simple-icons/icons/modx.svg1
-rw-r--r--assets/lib/simple-icons/icons/mojang.svg1
-rw-r--r--assets/lib/simple-icons/icons/mojangstudios.svg1
-rw-r--r--assets/lib/simple-icons/icons/moleculer.svg2
-rw-r--r--assets/lib/simple-icons/icons/momenteo.svg1
-rw-r--r--assets/lib/simple-icons/icons/monero.svg2
-rw-r--r--assets/lib/simple-icons/icons/moneygram.svg1
-rw-r--r--assets/lib/simple-icons/icons/mongodb.svg2
-rw-r--r--assets/lib/simple-icons/icons/monkeytie.svg2
-rw-r--r--assets/lib/simple-icons/icons/monogram.svg1
-rw-r--r--assets/lib/simple-icons/icons/monoprix.svg1
-rw-r--r--assets/lib/simple-icons/icons/monster.svg2
-rw-r--r--assets/lib/simple-icons/icons/monzo.svg2
-rw-r--r--assets/lib/simple-icons/icons/moo.svg2
-rw-r--r--assets/lib/simple-icons/icons/morrisons.svg1
-rw-r--r--assets/lib/simple-icons/icons/moscowmetro.svg2
-rw-r--r--assets/lib/simple-icons/icons/motorola.svg1
-rw-r--r--assets/lib/simple-icons/icons/mozilla.svg2
-rw-r--r--assets/lib/simple-icons/icons/mozillafirefox.svg1
-rw-r--r--assets/lib/simple-icons/icons/mozillathunderbird.svg1
-rw-r--r--assets/lib/simple-icons/icons/msi.svg1
-rw-r--r--assets/lib/simple-icons/icons/mta.svg2
-rw-r--r--assets/lib/simple-icons/icons/mtr.svg2
-rw-r--r--assets/lib/simple-icons/icons/mui.svg1
-rw-r--r--assets/lib/simple-icons/icons/mulesoft.svg1
-rw-r--r--assets/lib/simple-icons/icons/muller.svg1
-rw-r--r--assets/lib/simple-icons/icons/mumble.svg1
-rw-r--r--assets/lib/simple-icons/icons/musescore.svg2
-rw-r--r--assets/lib/simple-icons/icons/musicbrainz.svg2
-rw-r--r--assets/lib/simple-icons/icons/mxlinux.svg2
-rw-r--r--assets/lib/simple-icons/icons/myanimelist.svg1
-rw-r--r--assets/lib/simple-icons/icons/myob.svg1
-rw-r--r--assets/lib/simple-icons/icons/myspace.svg2
-rw-r--r--assets/lib/simple-icons/icons/mysql.svg2
-rw-r--r--assets/lib/simple-icons/icons/n26.svg1
-rw-r--r--assets/lib/simple-icons/icons/namebase.svg1
-rw-r--r--assets/lib/simple-icons/icons/namecheap.svg1
-rw-r--r--assets/lib/simple-icons/icons/nano.svg1
-rw-r--r--assets/lib/simple-icons/icons/nasa.svg1
-rw-r--r--assets/lib/simple-icons/icons/nationalgrid.svg1
-rw-r--r--assets/lib/simple-icons/icons/nativescript.svg2
-rw-r--r--assets/lib/simple-icons/icons/naver.svg1
-rw-r--r--assets/lib/simple-icons/icons/nba.svg1
-rw-r--r--assets/lib/simple-icons/icons/nbb.svg2
-rw-r--r--assets/lib/simple-icons/icons/ndr.svg2
-rw-r--r--assets/lib/simple-icons/icons/nec.svg2
-rw-r--r--assets/lib/simple-icons/icons/neo4j.svg2
-rw-r--r--assets/lib/simple-icons/icons/neovim.svg2
-rw-r--r--assets/lib/simple-icons/icons/nestjs.svg1
-rw-r--r--assets/lib/simple-icons/icons/netapp.svg2
-rw-r--r--assets/lib/simple-icons/icons/netbsd.svg1
-rw-r--r--assets/lib/simple-icons/icons/netflix.svg2
-rw-r--r--assets/lib/simple-icons/icons/netlify.svg2
-rw-r--r--assets/lib/simple-icons/icons/nette.svg1
-rw-r--r--assets/lib/simple-icons/icons/netto.svg1
-rw-r--r--assets/lib/simple-icons/icons/newbalance.svg1
-rw-r--r--assets/lib/simple-icons/icons/newjapanprowrestling.svg1
-rw-r--r--assets/lib/simple-icons/icons/newrelic.svg2
-rw-r--r--assets/lib/simple-icons/icons/newyorktimes.svg2
-rw-r--r--assets/lib/simple-icons/icons/next-dot-js.svg1
-rw-r--r--assets/lib/simple-icons/icons/nextcloud.svg2
-rw-r--r--assets/lib/simple-icons/icons/nextdoor.svg2
-rw-r--r--assets/lib/simple-icons/icons/nextdotjs.svg1
-rw-r--r--assets/lib/simple-icons/icons/nfc.svg2
-rw-r--r--assets/lib/simple-icons/icons/nginx.svg2
-rw-r--r--assets/lib/simple-icons/icons/ngrok.svg1
-rw-r--r--assets/lib/simple-icons/icons/niconico.svg2
-rw-r--r--assets/lib/simple-icons/icons/nike.svg1
-rw-r--r--assets/lib/simple-icons/icons/nim.svg2
-rw-r--r--assets/lib/simple-icons/icons/nintendo.svg2
-rw-r--r--assets/lib/simple-icons/icons/nintendo3ds.svg2
-rw-r--r--assets/lib/simple-icons/icons/nintendogamecube.svg2
-rw-r--r--assets/lib/simple-icons/icons/nintendonetwork.svg2
-rw-r--r--assets/lib/simple-icons/icons/nintendoswitch.svg2
-rw-r--r--assets/lib/simple-icons/icons/nissan.svg2
-rw-r--r--assets/lib/simple-icons/icons/nixos.svg2
-rw-r--r--assets/lib/simple-icons/icons/node-dot-js.svg1
-rw-r--r--assets/lib/simple-icons/icons/node-red.svg1
-rw-r--r--assets/lib/simple-icons/icons/nodedotjs.svg1
-rw-r--r--assets/lib/simple-icons/icons/nodemon.svg2
-rw-r--r--assets/lib/simple-icons/icons/nodered.svg1
-rw-r--r--assets/lib/simple-icons/icons/nokia.svg2
-rw-r--r--assets/lib/simple-icons/icons/norco.svg1
-rw-r--r--assets/lib/simple-icons/icons/nordvpn.svg1
-rw-r--r--assets/lib/simple-icons/icons/norwegian.svg1
-rw-r--r--assets/lib/simple-icons/icons/notepadplusplus.svg1
-rw-r--r--assets/lib/simple-icons/icons/notion.svg2
-rw-r--r--assets/lib/simple-icons/icons/notist.svg2
-rw-r--r--assets/lib/simple-icons/icons/nounproject.svg1
-rw-r--r--assets/lib/simple-icons/icons/now.svg1
-rw-r--r--assets/lib/simple-icons/icons/npm.svg2
-rw-r--r--assets/lib/simple-icons/icons/nrwl.svg1
-rw-r--r--assets/lib/simple-icons/icons/nubank.svg1
-rw-r--r--assets/lib/simple-icons/icons/nucleo.svg2
-rw-r--r--assets/lib/simple-icons/icons/nuget.svg2
-rw-r--r--assets/lib/simple-icons/icons/nuke.svg2
-rw-r--r--assets/lib/simple-icons/icons/numba.svg1
-rw-r--r--assets/lib/simple-icons/icons/numpy.svg1
-rw-r--r--assets/lib/simple-icons/icons/nutanix.svg2
-rw-r--r--assets/lib/simple-icons/icons/nuxt-dot-js.svg1
-rw-r--r--assets/lib/simple-icons/icons/nuxtdotjs.svg1
-rw-r--r--assets/lib/simple-icons/icons/nvidia.svg2
-rw-r--r--assets/lib/simple-icons/icons/nx.svg1
-rw-r--r--assets/lib/simple-icons/icons/nzxt.svg1
-rw-r--r--assets/lib/simple-icons/icons/observable.svg1
-rw-r--r--assets/lib/simple-icons/icons/obsidian.svg1
-rw-r--r--assets/lib/simple-icons/icons/obsstudio.svg2
-rw-r--r--assets/lib/simple-icons/icons/ocaml.svg2
-rw-r--r--assets/lib/simple-icons/icons/octanerender.svg1
-rw-r--r--assets/lib/simple-icons/icons/octave.svg2
-rw-r--r--assets/lib/simple-icons/icons/octopusdeploy.svg2
-rw-r--r--assets/lib/simple-icons/icons/oculus.svg2
-rw-r--r--assets/lib/simple-icons/icons/odnoklassniki.svg2
-rw-r--r--assets/lib/simple-icons/icons/odysee.svg1
-rw-r--r--assets/lib/simple-icons/icons/ohdear.svg1
-rw-r--r--assets/lib/simple-icons/icons/okcupid.svg1
-rw-r--r--assets/lib/simple-icons/icons/okta.svg1
-rw-r--r--assets/lib/simple-icons/icons/oneplus.svg2
-rw-r--r--assets/lib/simple-icons/icons/onlyfans.svg1
-rw-r--r--assets/lib/simple-icons/icons/onlyoffice.svg1
-rw-r--r--assets/lib/simple-icons/icons/onnx.svg1
-rw-r--r--assets/lib/simple-icons/icons/onstar.svg2
-rw-r--r--assets/lib/simple-icons/icons/opel.svg2
-rw-r--r--assets/lib/simple-icons/icons/openaccess.svg2
-rw-r--r--assets/lib/simple-icons/icons/openai.svg1
-rw-r--r--assets/lib/simple-icons/icons/openaigym.svg1
-rw-r--r--assets/lib/simple-icons/icons/openapiinitiative.svg2
-rw-r--r--assets/lib/simple-icons/icons/openbadges.svg2
-rw-r--r--assets/lib/simple-icons/icons/openbsd.svg2
-rw-r--r--assets/lib/simple-icons/icons/openbugbounty.svg1
-rw-r--r--assets/lib/simple-icons/icons/opencollective.svg2
-rw-r--r--assets/lib/simple-icons/icons/opencontainersinitiative.svg2
-rw-r--r--assets/lib/simple-icons/icons/opencv.svg1
-rw-r--r--assets/lib/simple-icons/icons/openfaas.svg1
-rw-r--r--assets/lib/simple-icons/icons/opengl.svg2
-rw-r--r--assets/lib/simple-icons/icons/openid.svg2
-rw-r--r--assets/lib/simple-icons/icons/openlayers.svg1
-rw-r--r--assets/lib/simple-icons/icons/openmined.svg1
-rw-r--r--assets/lib/simple-icons/icons/opennebula.svg1
-rw-r--r--assets/lib/simple-icons/icons/opensea.svg1
-rw-r--r--assets/lib/simple-icons/icons/opensearch.svg1
-rw-r--r--assets/lib/simple-icons/icons/opensourceinitiative.svg2
-rw-r--r--assets/lib/simple-icons/icons/openssl.svg2
-rw-r--r--assets/lib/simple-icons/icons/openstack.svg2
-rw-r--r--assets/lib/simple-icons/icons/openstreetmap.svg2
-rw-r--r--assets/lib/simple-icons/icons/opensuse.svg2
-rw-r--r--assets/lib/simple-icons/icons/opentelemetry.svg1
-rw-r--r--assets/lib/simple-icons/icons/openvpn.svg2
-rw-r--r--assets/lib/simple-icons/icons/openwrt.svg1
-rw-r--r--assets/lib/simple-icons/icons/openzfs.svg1
-rw-r--r--assets/lib/simple-icons/icons/opera.svg2
-rw-r--r--assets/lib/simple-icons/icons/opnsense.svg1
-rw-r--r--assets/lib/simple-icons/icons/opsgenie.svg2
-rw-r--r--assets/lib/simple-icons/icons/opslevel.svg2
-rw-r--r--assets/lib/simple-icons/icons/oracle.svg2
-rw-r--r--assets/lib/simple-icons/icons/orcid.svg2
-rw-r--r--assets/lib/simple-icons/icons/oreilly.svg1
-rw-r--r--assets/lib/simple-icons/icons/org.svg1
-rw-r--r--assets/lib/simple-icons/icons/origin.svg2
-rw-r--r--assets/lib/simple-icons/icons/osano.svg1
-rw-r--r--assets/lib/simple-icons/icons/oshkosh.svg2
-rw-r--r--assets/lib/simple-icons/icons/osmc.svg2
-rw-r--r--assets/lib/simple-icons/icons/osu.svg1
-rw-r--r--assets/lib/simple-icons/icons/otto.svg1
-rw-r--r--assets/lib/simple-icons/icons/overcast.svg2
-rw-r--r--assets/lib/simple-icons/icons/overleaf.svg2
-rw-r--r--assets/lib/simple-icons/icons/ovh.svg2
-rw-r--r--assets/lib/simple-icons/icons/owasp.svg1
-rw-r--r--assets/lib/simple-icons/icons/oxygen.svg1
-rw-r--r--assets/lib/simple-icons/icons/oyo.svg1
-rw-r--r--assets/lib/simple-icons/icons/p5dotjs.svg1
-rw-r--r--assets/lib/simple-icons/icons/packagist.svg1
-rw-r--r--assets/lib/simple-icons/icons/packer.svg1
-rw-r--r--assets/lib/simple-icons/icons/paddypower.svg1
-rw-r--r--[-rwxr-xr-x]assets/lib/simple-icons/icons/pagekit.svg2
-rw-r--r--assets/lib/simple-icons/icons/pagerduty.svg2
-rw-r--r--assets/lib/simple-icons/icons/pagespeedinsights.svg1
-rw-r--r--assets/lib/simple-icons/icons/pagseguro.svg2
-rw-r--r--assets/lib/simple-icons/icons/palantir.svg2
-rw-r--r--assets/lib/simple-icons/icons/paloaltosoftware.svg2
-rw-r--r--assets/lib/simple-icons/icons/pandas.svg2
-rw-r--r--assets/lib/simple-icons/icons/pandora.svg2
-rw-r--r--assets/lib/simple-icons/icons/pantheon.svg2
-rw-r--r--assets/lib/simple-icons/icons/paperspace.svg1
-rw-r--r--assets/lib/simple-icons/icons/paritysubstrate.svg2
-rw-r--r--assets/lib/simple-icons/icons/parse-dot-ly.svg1
-rw-r--r--assets/lib/simple-icons/icons/parsedotly.svg1
-rw-r--r--assets/lib/simple-icons/icons/passport.svg1
-rw-r--r--assets/lib/simple-icons/icons/pastebin.svg2
-rw-r--r--assets/lib/simple-icons/icons/patreon.svg2
-rw-r--r--assets/lib/simple-icons/icons/payoneer.svg1
-rw-r--r--assets/lib/simple-icons/icons/paypal.svg2
-rw-r--r--assets/lib/simple-icons/icons/paytm.svg1
-rw-r--r--assets/lib/simple-icons/icons/pcgamingwiki.svg1
-rw-r--r--assets/lib/simple-icons/icons/peakdesign.svg1
-rw-r--r--assets/lib/simple-icons/icons/peertube.svg2
-rw-r--r--assets/lib/simple-icons/icons/pegasusairlines.svg1
-rw-r--r--assets/lib/simple-icons/icons/pelican.svg1
-rw-r--r--assets/lib/simple-icons/icons/peloton.svg1
-rw-r--r--assets/lib/simple-icons/icons/penny.svg1
-rw-r--r--assets/lib/simple-icons/icons/pepsi.svg2
-rw-r--r--assets/lib/simple-icons/icons/percy.svg1
-rw-r--r--assets/lib/simple-icons/icons/perforce.svg1
-rw-r--r--assets/lib/simple-icons/icons/periscope.svg1
-rw-r--r--assets/lib/simple-icons/icons/perl.svg2
-rw-r--r--assets/lib/simple-icons/icons/personio.svg1
-rw-r--r--assets/lib/simple-icons/icons/petsathome.svg1
-rw-r--r--assets/lib/simple-icons/icons/peugeot.svg2
-rw-r--r--assets/lib/simple-icons/icons/pexels.svg2
-rw-r--r--assets/lib/simple-icons/icons/pfsense.svg1
-rw-r--r--assets/lib/simple-icons/icons/phabricator.svg2
-rw-r--r--assets/lib/simple-icons/icons/philipshue.svg1
-rw-r--r--assets/lib/simple-icons/icons/phonepe.svg1
-rw-r--r--assets/lib/simple-icons/icons/photobucket.svg1
-rw-r--r--assets/lib/simple-icons/icons/photocrowd.svg2
-rw-r--r--assets/lib/simple-icons/icons/photopea.svg1
-rw-r--r--assets/lib/simple-icons/icons/php.svg2
-rw-r--r--assets/lib/simple-icons/icons/phpmyadmin.svg1
-rw-r--r--assets/lib/simple-icons/icons/phpstorm.svg1
-rw-r--r--assets/lib/simple-icons/icons/pi-hole.svg1
-rw-r--r--assets/lib/simple-icons/icons/picardsurgeles.svg1
-rw-r--r--assets/lib/simple-icons/icons/picarto-dot-tv.svg1
-rw-r--r--assets/lib/simple-icons/icons/picartodottv.svg1
-rw-r--r--assets/lib/simple-icons/icons/picnic.svg1
-rw-r--r--assets/lib/simple-icons/icons/picpay.svg1
-rw-r--r--assets/lib/simple-icons/icons/pihole.svg1
-rw-r--r--assets/lib/simple-icons/icons/pimcore.svg1
-rw-r--r--assets/lib/simple-icons/icons/pinboard.svg2
-rw-r--r--assets/lib/simple-icons/icons/pingdom.svg2
-rw-r--r--assets/lib/simple-icons/icons/pingup.svg1
-rw-r--r--assets/lib/simple-icons/icons/pinterest.svg2
-rw-r--r--assets/lib/simple-icons/icons/pioneerdj.svg1
-rw-r--r--assets/lib/simple-icons/icons/pivotaltracker.svg2
-rw-r--r--assets/lib/simple-icons/icons/piwigo.svg2
-rw-r--r--assets/lib/simple-icons/icons/pix.svg1
-rw-r--r--assets/lib/simple-icons/icons/pixabay.svg2
-rw-r--r--assets/lib/simple-icons/icons/pixiv.svg2
-rw-r--r--assets/lib/simple-icons/icons/pjsip.svg1
-rw-r--r--assets/lib/simple-icons/icons/pkgsrc.svg1
-rw-r--r--assets/lib/simple-icons/icons/planet.svg1
-rw-r--r--assets/lib/simple-icons/icons/plangrid.svg2
-rw-r--r--assets/lib/simple-icons/icons/platformdotsh.svg1
-rw-r--r--assets/lib/simple-icons/icons/platzi.svg2
-rw-r--r--assets/lib/simple-icons/icons/plausibleanalytics.svg1
-rw-r--r--assets/lib/simple-icons/icons/playcanvas.svg1
-rwxr-xr-xassets/lib/simple-icons/icons/player-dot-me.svg1
-rw-r--r--assets/lib/simple-icons/icons/playerdotme.svg1
-rw-r--r--assets/lib/simple-icons/icons/playerfm.svg2
-rw-r--r--assets/lib/simple-icons/icons/playstation.svg2
-rw-r--r--assets/lib/simple-icons/icons/playstation2.svg2
-rw-r--r--assets/lib/simple-icons/icons/playstation3.svg2
-rw-r--r--assets/lib/simple-icons/icons/playstation4.svg2
-rw-r--r--assets/lib/simple-icons/icons/playstation5.svg1
-rw-r--r--assets/lib/simple-icons/icons/playstationvita.svg2
-rw-r--r--assets/lib/simple-icons/icons/pleroma.svg2
-rw-r--r--assets/lib/simple-icons/icons/plesk.svg2
-rw-r--r--assets/lib/simple-icons/icons/plex.svg2
-rw-r--r--assets/lib/simple-icons/icons/plotly.svg1
-rw-r--r--assets/lib/simple-icons/icons/pluralsight.svg2
-rw-r--r--assets/lib/simple-icons/icons/plurk.svg2
-rw-r--r--assets/lib/simple-icons/icons/pluscodes.svg2
-rw-r--r--assets/lib/simple-icons/icons/pm2.svg1
-rw-r--r--assets/lib/simple-icons/icons/pnpm.svg1
-rw-r--r--assets/lib/simple-icons/icons/pocket.svg2
-rw-r--r--assets/lib/simple-icons/icons/pocketcasts.svg2
-rw-r--r--assets/lib/simple-icons/icons/podcastaddict.svg1
-rw-r--r--assets/lib/simple-icons/icons/podman.svg1
-rw-r--r--assets/lib/simple-icons/icons/poetry.svg1
-rw-r--r--assets/lib/simple-icons/icons/pointy.svg1
-rw-r--r--assets/lib/simple-icons/icons/pokemon.svg2
-rw-r--r--assets/lib/simple-icons/icons/polkadot.svg1
-rw-r--r--assets/lib/simple-icons/icons/poly.svg2
-rw-r--r--assets/lib/simple-icons/icons/polymerproject.svg2
-rw-r--r--assets/lib/simple-icons/icons/polywork.svg1
-rw-r--r--assets/lib/simple-icons/icons/popos.svg1
-rw-r--r--assets/lib/simple-icons/icons/porsche.svg2
-rw-r--r--assets/lib/simple-icons/icons/portainer.svg1
-rw-r--r--assets/lib/simple-icons/icons/postcss.svg2
-rw-r--r--assets/lib/simple-icons/icons/postgresql.svg2
-rw-r--r--assets/lib/simple-icons/icons/postman.svg2
-rw-r--r--assets/lib/simple-icons/icons/postmates.svg1
-rw-r--r--assets/lib/simple-icons/icons/postwoman.svg1
-rw-r--r--assets/lib/simple-icons/icons/powerapps.svg1
-rw-r--r--assets/lib/simple-icons/icons/powerautomate.svg1
-rw-r--r--assets/lib/simple-icons/icons/powerbi.svg2
-rw-r--r--assets/lib/simple-icons/icons/powers.svg2
-rw-r--r--assets/lib/simple-icons/icons/powershell.svg2
-rw-r--r--assets/lib/simple-icons/icons/powervirtualagents.svg1
-rw-r--r--assets/lib/simple-icons/icons/pr-dot-co.svg1
-rw-r--r--assets/lib/simple-icons/icons/prdotco.svg1
-rw-r--r--assets/lib/simple-icons/icons/pre-commit.svg1
-rw-r--r--assets/lib/simple-icons/icons/preact.svg1
-rw-r--r--assets/lib/simple-icons/icons/precommit.svg1
-rw-r--r--assets/lib/simple-icons/icons/premierleague.svg1
-rw-r--r--assets/lib/simple-icons/icons/prestashop.svg2
-rw-r--r--assets/lib/simple-icons/icons/presto.svg1
-rw-r--r--assets/lib/simple-icons/icons/prettier.svg2
-rw-r--r--assets/lib/simple-icons/icons/prezi.svg2
-rw-r--r--assets/lib/simple-icons/icons/prime.svg1
-rw-r--r--assets/lib/simple-icons/icons/primevideo.svg1
-rw-r--r--assets/lib/simple-icons/icons/prisma.svg1
-rw-r--r--assets/lib/simple-icons/icons/prismic.svg2
-rw-r--r--assets/lib/simple-icons/icons/privateinternetaccess.svg1
-rw-r--r--assets/lib/simple-icons/icons/probot.svg2
-rw-r--r--assets/lib/simple-icons/icons/processingfoundation.svg1
-rw-r--r--assets/lib/simple-icons/icons/processwire.svg2
-rw-r--r--assets/lib/simple-icons/icons/producthunt.svg2
-rw-r--r--assets/lib/simple-icons/icons/progate.svg1
-rw-r--r--assets/lib/simple-icons/icons/progress.svg1
-rw-r--r--assets/lib/simple-icons/icons/prometheus.svg2
-rw-r--r--assets/lib/simple-icons/icons/prosieben.svg2
-rw-r--r--assets/lib/simple-icons/icons/proto-dot-io.svg1
-rw-r--r--assets/lib/simple-icons/icons/protocols-dot-io.svg1
-rw-r--r--assets/lib/simple-icons/icons/protocolsdotio.svg1
-rw-r--r--assets/lib/simple-icons/icons/protodotio.svg1
-rw-r--r--assets/lib/simple-icons/icons/protondb.svg1
-rw-r--r--assets/lib/simple-icons/icons/protonmail.svg2
-rw-r--r--assets/lib/simple-icons/icons/protonvpn.svg1
-rw-r--r--assets/lib/simple-icons/icons/protools.svg1
-rw-r--r--assets/lib/simple-icons/icons/protractor.svg1
-rw-r--r--assets/lib/simple-icons/icons/proxmox.svg2
-rw-r--r--assets/lib/simple-icons/icons/pubg.svg1
-rw-r--r--assets/lib/simple-icons/icons/publons.svg2
-rw-r--r--assets/lib/simple-icons/icons/pubmed.svg1
-rw-r--r--assets/lib/simple-icons/icons/pug.svg1
-rw-r--r--assets/lib/simple-icons/icons/pulumi.svg1
-rw-r--r--assets/lib/simple-icons/icons/puma.svg1
-rw-r--r--assets/lib/simple-icons/icons/puppet.svg2
-rw-r--r--assets/lib/simple-icons/icons/puppeteer.svg1
-rw-r--r--assets/lib/simple-icons/icons/purescript.svg2
-rw-r--r--assets/lib/simple-icons/icons/purgecss.svg1
-rw-r--r--assets/lib/simple-icons/icons/purism.svg1
-rw-r--r--assets/lib/simple-icons/icons/pusher.svg1
-rw-r--r--assets/lib/simple-icons/icons/pwa.svg1
-rw-r--r--assets/lib/simple-icons/icons/pycharm.svg1
-rw-r--r--assets/lib/simple-icons/icons/pypi.svg2
-rw-r--r--assets/lib/simple-icons/icons/pypy.svg1
-rw-r--r--assets/lib/simple-icons/icons/pyscaffold.svg1
-rw-r--r--assets/lib/simple-icons/icons/pytest.svg1
-rw-r--r--assets/lib/simple-icons/icons/python.svg2
-rw-r--r--assets/lib/simple-icons/icons/pytorch.svg2
-rw-r--r--assets/lib/simple-icons/icons/pytorchlightning.svg1
-rw-r--r--assets/lib/simple-icons/icons/pyup.svg2
-rw-r--r--assets/lib/simple-icons/icons/qantas.svg2
-rw-r--r--assets/lib/simple-icons/icons/qatarairways.svg1
-rw-r--r--assets/lib/simple-icons/icons/qemu.svg2
-rw-r--r--assets/lib/simple-icons/icons/qgis.svg2
-rw-r--r--assets/lib/simple-icons/icons/qi.svg2
-rw-r--r--assets/lib/simple-icons/icons/qiita.svg2
-rw-r--r--assets/lib/simple-icons/icons/qiskit.svg1
-rw-r--r--assets/lib/simple-icons/icons/qiwi.svg2
-rw-r--r--assets/lib/simple-icons/icons/qt.svg1
-rw-r--r--assets/lib/simple-icons/icons/qualcomm.svg2
-rw-r--r--assets/lib/simple-icons/icons/qualtrics.svg2
-rw-r--r--assets/lib/simple-icons/icons/qualys.svg1
-rw-r--r--assets/lib/simple-icons/icons/quantcast.svg2
-rw-r--r--assets/lib/simple-icons/icons/quantconnect.svg1
-rw-r--r--assets/lib/simple-icons/icons/quantopian.svg1
-rw-r--r--assets/lib/simple-icons/icons/quarkus.svg2
-rw-r--r--assets/lib/simple-icons/icons/quasar.svg1
-rw-r--r--assets/lib/simple-icons/icons/qubesos.svg1
-rw-r--r--assets/lib/simple-icons/icons/quest.svg2
-rw-r--r--assets/lib/simple-icons/icons/quickbooks.svg1
-rw-r--r--assets/lib/simple-icons/icons/quicklook.svg1
-rw-r--r--assets/lib/simple-icons/icons/quicktime.svg2
-rw-r--r--assets/lib/simple-icons/icons/quip.svg2
-rw-r--r--assets/lib/simple-icons/icons/quora.svg2
-rw-r--r--assets/lib/simple-icons/icons/qwiklabs.svg2
-rw-r--r--assets/lib/simple-icons/icons/qzone.svg2
-rw-r--r--assets/lib/simple-icons/icons/r.svg2
-rw-r--r--assets/lib/simple-icons/icons/r3.svg1
-rw-r--r--assets/lib/simple-icons/icons/rabbitmq.svg2
-rw-r--r--assets/lib/simple-icons/icons/racket.svg1
-rw-r--r--assets/lib/simple-icons/icons/radar.svg1
-rw-r--r--assets/lib/simple-icons/icons/radiopublic.svg2
-rw-r--r--assets/lib/simple-icons/icons/rails.svg1
-rw-r--r--assets/lib/simple-icons/icons/railway.svg1
-rw-r--r--assets/lib/simple-icons/icons/rainmeter.svg1
-rw-r--r--assets/lib/simple-icons/icons/rakuten.svg1
-rw-r--r--assets/lib/simple-icons/icons/ram.svg1
-rw-r--r--assets/lib/simple-icons/icons/rancher.svg2
-rw-r--r--assets/lib/simple-icons/icons/rarible.svg1
-rw-r--r--assets/lib/simple-icons/icons/raspberrypi.svg2
-rw-r--r--assets/lib/simple-icons/icons/ray.svg1
-rw-r--r--assets/lib/simple-icons/icons/razer.svg1
-rw-r--r--assets/lib/simple-icons/icons/razorpay.svg1
-rw-r--r--assets/lib/simple-icons/icons/react.svg2
-rw-r--r--assets/lib/simple-icons/icons/reactivex.svg1
-rw-r--r--assets/lib/simple-icons/icons/reactos.svg2
-rw-r--r--assets/lib/simple-icons/icons/reactquery.svg1
-rw-r--r--assets/lib/simple-icons/icons/reactrouter.svg2
-rw-r--r--assets/lib/simple-icons/icons/reacttable.svg1
-rw-r--r--assets/lib/simple-icons/icons/readthedocs.svg2
-rw-r--r--assets/lib/simple-icons/icons/realm.svg2
-rw-r--r--assets/lib/simple-icons/icons/reason.svg2
-rw-r--r--assets/lib/simple-icons/icons/reasonstudios.svg2
-rw-r--r--assets/lib/simple-icons/icons/redbubble.svg2
-rw-r--r--assets/lib/simple-icons/icons/reddit.svg2
-rw-r--r--assets/lib/simple-icons/icons/redhat.svg2
-rw-r--r--assets/lib/simple-icons/icons/redhatopenshift.svg2
-rw-r--r--assets/lib/simple-icons/icons/redis.svg2
-rw-r--r--assets/lib/simple-icons/icons/redmine.svg1
-rw-r--r--assets/lib/simple-icons/icons/redux.svg2
-rw-r--r--assets/lib/simple-icons/icons/reduxsaga.svg1
-rw-r--r--assets/lib/simple-icons/icons/redwoodjs.svg1
-rw-r--r--assets/lib/simple-icons/icons/reebok.svg1
-rw-r--r--assets/lib/simple-icons/icons/relianceindustrieslimited.svg1
-rw-r--r--assets/lib/simple-icons/icons/renault.svg2
-rw-r--r--assets/lib/simple-icons/icons/renovatebot.svg1
-rw-r--r--assets/lib/simple-icons/icons/renpy.svg1
-rw-r--r--assets/lib/simple-icons/icons/renren.svg2
-rw-r--r--assets/lib/simple-icons/icons/repl-dot-it.svg1
-rw-r--r--assets/lib/simple-icons/icons/replit.svg1
-rw-r--r--assets/lib/simple-icons/icons/republicofgamers.svg1
-rw-r--r--assets/lib/simple-icons/icons/rescript.svg1
-rw-r--r--assets/lib/simple-icons/icons/rescuetime.svg1
-rw-r--r--assets/lib/simple-icons/icons/researchgate.svg2
-rw-r--r--assets/lib/simple-icons/icons/resurrectionremixos.svg1
-rw-r--r--assets/lib/simple-icons/icons/retroarch.svg2
-rw-r--r--assets/lib/simple-icons/icons/retropie.svg2
-rw-r--r--assets/lib/simple-icons/icons/revealdotjs.svg1
-rw-r--r--assets/lib/simple-icons/icons/reverbnation.svg2
-rw-r--r--assets/lib/simple-icons/icons/revolut.svg1
-rw-r--r--assets/lib/simple-icons/icons/revue.svg1
-rw-r--r--assets/lib/simple-icons/icons/rewe.svg1
-rw-r--r--assets/lib/simple-icons/icons/rezgo.svg1
-rw-r--r--assets/lib/simple-icons/icons/rhinoceros.svg2
-rw-r--r--assets/lib/simple-icons/icons/rider.svg1
-rw-r--r--assets/lib/simple-icons/icons/rimacautomobili.svg1
-rw-r--r--assets/lib/simple-icons/icons/ring.svg1
-rw-r--r--assets/lib/simple-icons/icons/riot.svg1
-rw-r--r--assets/lib/simple-icons/icons/riotgames.svg2
-rw-r--r--assets/lib/simple-icons/icons/ripple.svg2
-rw-r--r--assets/lib/simple-icons/icons/riseup.svg2
-rw-r--r--assets/lib/simple-icons/icons/roamresearch.svg1
-rw-r--r--assets/lib/simple-icons/icons/roblox.svg1
-rw-r--r--assets/lib/simple-icons/icons/robotframework.svg1
-rw-r--r--assets/lib/simple-icons/icons/rocketdotchat.svg1
-rw-r--r--assets/lib/simple-icons/icons/rocksdb.svg1
-rw-r--r--assets/lib/simple-icons/icons/rockylinux.svg1
-rw-r--r--assets/lib/simple-icons/icons/roku.svg2
-rw-r--r--assets/lib/simple-icons/icons/rollsroyce.svg1
-rw-r--r--assets/lib/simple-icons/icons/rollup-dot-js.svg1
-rw-r--r--assets/lib/simple-icons/icons/rollupdotjs.svg1
-rw-r--r--assets/lib/simple-icons/icons/rome.svg1
-rw-r--r--assets/lib/simple-icons/icons/roots.svg2
-rw-r--r--assets/lib/simple-icons/icons/rootsbedrock.svg1
-rw-r--r--assets/lib/simple-icons/icons/rootssage.svg1
-rw-r--r--assets/lib/simple-icons/icons/ros.svg1
-rw-r--r--assets/lib/simple-icons/icons/rossmann.svg1
-rw-r--r--assets/lib/simple-icons/icons/rotaryinternational.svg1
-rw-r--r--assets/lib/simple-icons/icons/rottentomatoes.svg1
-rw-r--r--assets/lib/simple-icons/icons/roundcube.svg2
-rw-r--r--assets/lib/simple-icons/icons/rss.svg2
-rw-r--r--assets/lib/simple-icons/icons/rstudio.svg2
-rw-r--r--assets/lib/simple-icons/icons/rte.svg1
-rw-r--r--assets/lib/simple-icons/icons/rtl.svg1
-rw-r--r--assets/lib/simple-icons/icons/rtlzwei.svg2
-rw-r--r--assets/lib/simple-icons/icons/ruby.svg2
-rw-r--r--assets/lib/simple-icons/icons/rubygems.svg2
-rw-r--r--assets/lib/simple-icons/icons/rubyonrails.svg1
-rw-r--r--assets/lib/simple-icons/icons/rubysinatra.svg1
-rw-r--r--assets/lib/simple-icons/icons/runkeeper.svg2
-rw-r--r--assets/lib/simple-icons/icons/runkit.svg2
-rw-r--r--assets/lib/simple-icons/icons/rust.svg2
-rw-r--r--assets/lib/simple-icons/icons/rxdb.svg1
-rw-r--r--assets/lib/simple-icons/icons/ryanair.svg2
-rw-r--r--assets/lib/simple-icons/icons/s7airlines.svg1
-rw-r--r--assets/lib/simple-icons/icons/sabanci.svg1
-rw-r--r--assets/lib/simple-icons/icons/safari.svg2
-rw-r--r--assets/lib/simple-icons/icons/sahibinden.svg2
-rw-r--r--assets/lib/simple-icons/icons/sailfishos.svg1
-rw-r--r--assets/lib/simple-icons/icons/salesforce.svg2
-rw-r--r--assets/lib/simple-icons/icons/saltproject.svg1
-rw-r--r--assets/lib/simple-icons/icons/saltstack.svg1
-rw-r--r--assets/lib/simple-icons/icons/samsung.svg2
-rw-r--r--assets/lib/simple-icons/icons/samsungpay.svg2
-rw-r--r--assets/lib/simple-icons/icons/sandisk.svg1
-rw-r--r--assets/lib/simple-icons/icons/sanfranciscomunicipalrailway.svg1
-rw-r--r--assets/lib/simple-icons/icons/saopaulometro.svg1
-rw-r--r--assets/lib/simple-icons/icons/sap.svg2
-rw-r--r--assets/lib/simple-icons/icons/sass.svg2
-rw-r--r--assets/lib/simple-icons/icons/sat-dot-1.svg1
-rw-r--r--assets/lib/simple-icons/icons/sat1.svg1
-rw-r--r--assets/lib/simple-icons/icons/saturn.svg1
-rw-r--r--assets/lib/simple-icons/icons/saucelabs.svg2
-rw-r--r--assets/lib/simple-icons/icons/scala.svg2
-rw-r--r--assets/lib/simple-icons/icons/scaleway.svg2
-rw-r--r--assets/lib/simple-icons/icons/scania.svg2
-rw-r--r--assets/lib/simple-icons/icons/schneiderelectric.svg1
-rw-r--r--assets/lib/simple-icons/icons/scikitlearn.svg1
-rw-r--r--assets/lib/simple-icons/icons/scipy.svg1
-rw-r--r--assets/lib/simple-icons/icons/scopus.svg2
-rw-r--r--assets/lib/simple-icons/icons/scpfoundation.svg1
-rw-r--r--assets/lib/simple-icons/icons/scratch.svg1
-rw-r--r--assets/lib/simple-icons/icons/screencastify.svg1
-rw-r--r--assets/lib/simple-icons/icons/scribd.svg2
-rw-r--r--assets/lib/simple-icons/icons/scrimba.svg1
-rw-r--r--assets/lib/simple-icons/icons/scrollreveal.svg1
-rw-r--r--assets/lib/simple-icons/icons/scrumalliance.svg1
-rw-r--r--assets/lib/simple-icons/icons/scrutinizerci.svg2
-rw-r--r--assets/lib/simple-icons/icons/seagate.svg2
-rw-r--r--assets/lib/simple-icons/icons/seat.svg2
-rw-r--r--assets/lib/simple-icons/icons/sefaria.svg1
-rw-r--r--assets/lib/simple-icons/icons/sega.svg2
-rw-r--r--assets/lib/simple-icons/icons/selenium.svg1
-rw-r--r--assets/lib/simple-icons/icons/sellfy.svg2
-rw-r--r--assets/lib/simple-icons/icons/semanticrelease.svg1
-rw-r--r--assets/lib/simple-icons/icons/semanticuireact.svg1
-rw-r--r--assets/lib/simple-icons/icons/semanticweb.svg2
-rw-r--r--assets/lib/simple-icons/icons/semaphoreci.svg2
-rw-r--r--assets/lib/simple-icons/icons/semver.svg1
-rw-r--r--assets/lib/simple-icons/icons/sencha.svg2
-rw-r--r--assets/lib/simple-icons/icons/sennheiser.svg1
-rw-r--r--assets/lib/simple-icons/icons/sensu.svg2
-rw-r--r--assets/lib/simple-icons/icons/sentry.svg2
-rw-r--r--assets/lib/simple-icons/icons/sepa.svg1
-rw-r--r--assets/lib/simple-icons/icons/sequelize.svg1
-rw-r--r--assets/lib/simple-icons/icons/serverfault.svg2
-rw-r--r--assets/lib/simple-icons/icons/serverless.svg2
-rw-r--r--assets/lib/simple-icons/icons/sfml.svg1
-rw-r--r--assets/lib/simple-icons/icons/shadow.svg1
-rw-r--r--assets/lib/simple-icons/icons/shanghaimetro.svg2
-rw-r--r--assets/lib/simple-icons/icons/sharp.svg1
-rw-r--r--assets/lib/simple-icons/icons/shazam.svg2
-rw-r--r--assets/lib/simple-icons/icons/shell.svg2
-rw-r--r--assets/lib/simple-icons/icons/shelly.svg1
-rw-r--r--assets/lib/simple-icons/icons/shenzhenmetro.svg1
-rw-r--r--assets/lib/simple-icons/icons/shieldsdotio.svg1
-rw-r--r--assets/lib/simple-icons/icons/shikimori.svg1
-rw-r--r--assets/lib/simple-icons/icons/shopify.svg2
-rw-r--r--assets/lib/simple-icons/icons/shopware.svg2
-rw-r--r--assets/lib/simple-icons/icons/shotcut.svg1
-rw-r--r--assets/lib/simple-icons/icons/showpad.svg2
-rw-r--r--assets/lib/simple-icons/icons/showtime.svg1
-rw-r--r--assets/lib/simple-icons/icons/shutterstock.svg1
-rw-r--r--assets/lib/simple-icons/icons/siemens.svg2
-rw-r--r--assets/lib/simple-icons/icons/signal.svg2
-rw-r--r--assets/lib/simple-icons/icons/simkl.svg1
-rw-r--r--assets/lib/simple-icons/icons/simpleanalytics.svg1
-rw-r--r--assets/lib/simple-icons/icons/simpleicons.svg2
-rw-r--r--assets/lib/simple-icons/icons/simplenote.svg1
-rw-r--r--assets/lib/simple-icons/icons/sinaweibo.svg2
-rw-r--r--assets/lib/simple-icons/icons/singlestore.svg1
-rw-r--r--assets/lib/simple-icons/icons/sitepoint.svg2
-rw-r--r--assets/lib/simple-icons/icons/sketch.svg2
-rw-r--r--assets/lib/simple-icons/icons/sketchfab.svg1
-rw-r--r--assets/lib/simple-icons/icons/sketchup.svg1
-rw-r--r--assets/lib/simple-icons/icons/skillshare.svg2
-rw-r--r--assets/lib/simple-icons/icons/skoda.svg2
-rw-r--r--assets/lib/simple-icons/icons/sky.svg1
-rw-r--r--assets/lib/simple-icons/icons/skyliner.svg1
-rw-r--r--assets/lib/simple-icons/icons/skynet.svg1
-rw-r--r--assets/lib/simple-icons/icons/skypack.svg1
-rw-r--r--assets/lib/simple-icons/icons/skype.svg2
-rw-r--r--assets/lib/simple-icons/icons/skypeforbusiness.svg2
-rw-r--r--assets/lib/simple-icons/icons/slack.svg2
-rw-r--r--assets/lib/simple-icons/icons/slackware.svg2
-rw-r--r--assets/lib/simple-icons/icons/slashdot.svg2
-rw-r--r--assets/lib/simple-icons/icons/slickpic.svg2
-rw-r--r--assets/lib/simple-icons/icons/slides.svg2
-rw-r--r--assets/lib/simple-icons/icons/slideshare.svg2
-rw-r--r--assets/lib/simple-icons/icons/smart.svg2
-rw-r--r--assets/lib/simple-icons/icons/smartthings.svg2
-rw-r--r--assets/lib/simple-icons/icons/smashdotgg.svg1
-rw-r--r--assets/lib/simple-icons/icons/smashingmagazine.svg2
-rw-r--r--assets/lib/simple-icons/icons/smrt.svg1
-rw-r--r--assets/lib/simple-icons/icons/smugmug.svg2
-rw-r--r--assets/lib/simple-icons/icons/snapchat.svg2
-rw-r--r--assets/lib/simple-icons/icons/snapcraft.svg2
-rw-r--r--assets/lib/simple-icons/icons/snowflake.svg1
-rw-r--r--assets/lib/simple-icons/icons/snowpack.svg1
-rw-r--r--assets/lib/simple-icons/icons/snyk.svg2
-rw-r--r--assets/lib/simple-icons/icons/socialblade.svg1
-rw-r--r--assets/lib/simple-icons/icons/society6.svg2
-rw-r--r--assets/lib/simple-icons/icons/socket-dot-io.svg1
-rw-r--r--assets/lib/simple-icons/icons/socketdotio.svg1
-rw-r--r--assets/lib/simple-icons/icons/sogou.svg2
-rw-r--r--assets/lib/simple-icons/icons/solid.svg1
-rw-r--r--assets/lib/simple-icons/icons/solidity.svg1
-rw-r--r--assets/lib/simple-icons/icons/sololearn.svg1
-rw-r--r--assets/lib/simple-icons/icons/solus.svg2
-rw-r--r--assets/lib/simple-icons/icons/sonarcloud.svg2
-rw-r--r--assets/lib/simple-icons/icons/sonarlint.svg2
-rw-r--r--assets/lib/simple-icons/icons/sonarqube.svg2
-rw-r--r--assets/lib/simple-icons/icons/sonarsource.svg2
-rw-r--r--assets/lib/simple-icons/icons/songkick.svg2
-rw-r--r--assets/lib/simple-icons/icons/songoda.svg1
-rw-r--r--assets/lib/simple-icons/icons/sonicwall.svg2
-rw-r--r--assets/lib/simple-icons/icons/sonos.svg2
-rw-r--r--assets/lib/simple-icons/icons/sony.svg1
-rw-r--r--assets/lib/simple-icons/icons/soundcharts.svg1
-rw-r--r--assets/lib/simple-icons/icons/soundcloud.svg2
-rw-r--r--assets/lib/simple-icons/icons/sourceengine.svg2
-rw-r--r--assets/lib/simple-icons/icons/sourceforge.svg2
-rw-r--r--assets/lib/simple-icons/icons/sourcegraph.svg2
-rw-r--r--assets/lib/simple-icons/icons/sourcetree.svg1
-rw-r--r--assets/lib/simple-icons/icons/southwestairlines.svg1
-rw-r--r--assets/lib/simple-icons/icons/spacemacs.svg2
-rw-r--r--assets/lib/simple-icons/icons/spacex.svg2
-rw-r--r--assets/lib/simple-icons/icons/spacy.svg1
-rw-r--r--assets/lib/simple-icons/icons/sparkar.svg1
-rw-r--r--assets/lib/simple-icons/icons/sparkasse.svg1
-rw-r--r--assets/lib/simple-icons/icons/sparkfun.svg2
-rw-r--r--assets/lib/simple-icons/icons/sparkpost.svg2
-rw-r--r--assets/lib/simple-icons/icons/spdx.svg2
-rw-r--r--assets/lib/simple-icons/icons/speakerdeck.svg2
-rw-r--r--assets/lib/simple-icons/icons/spectrum.svg2
-rw-r--r--assets/lib/simple-icons/icons/speedtest.svg1
-rw-r--r--assets/lib/simple-icons/icons/spinnaker.svg2
-rw-r--r--assets/lib/simple-icons/icons/spinrilla.svg2
-rw-r--r--assets/lib/simple-icons/icons/splunk.svg2
-rw-r--r--assets/lib/simple-icons/icons/spond.svg1
-rw-r--r--assets/lib/simple-icons/icons/spotify.svg2
-rw-r--r--assets/lib/simple-icons/icons/spotlight.svg2
-rw-r--r--assets/lib/simple-icons/icons/spreadshirt.svg1
-rw-r--r--assets/lib/simple-icons/icons/spreaker.svg2
-rw-r--r--assets/lib/simple-icons/icons/spring.svg2
-rw-r--r--assets/lib/simple-icons/icons/spring_creators.svg1
-rw-r--r--assets/lib/simple-icons/icons/springboot.svg1
-rw-r--r--assets/lib/simple-icons/icons/springsecurity.svg1
-rw-r--r--assets/lib/simple-icons/icons/sprint.svg1
-rw-r--r--assets/lib/simple-icons/icons/spyderide.svg1
-rw-r--r--assets/lib/simple-icons/icons/sqlite.svg2
-rw-r--r--assets/lib/simple-icons/icons/square.svg2
-rw-r--r--assets/lib/simple-icons/icons/squareenix.svg2
-rw-r--r--assets/lib/simple-icons/icons/squarespace.svg2
-rw-r--r--assets/lib/simple-icons/icons/ssrn.svg2
-rw-r--r--assets/lib/simple-icons/icons/stackbit.svg2
-rw-r--r--assets/lib/simple-icons/icons/stackedit.svg1
-rw-r--r--assets/lib/simple-icons/icons/stackexchange.svg2
-rw-r--r--assets/lib/simple-icons/icons/stackoverflow.svg2
-rw-r--r--assets/lib/simple-icons/icons/stackpath.svg2
-rw-r--r--assets/lib/simple-icons/icons/stackshare.svg2
-rw-r--r--assets/lib/simple-icons/icons/stadia.svg2
-rw-r--r--assets/lib/simple-icons/icons/staffbase.svg2
-rw-r--r--assets/lib/simple-icons/icons/starbucks.svg1
-rw-r--r--assets/lib/simple-icons/icons/stardock.svg1
-rw-r--r--assets/lib/simple-icons/icons/starlingbank.svg1
-rw-r--r--assets/lib/simple-icons/icons/starship.svg1
-rw-r--r--assets/lib/simple-icons/icons/startrek.svg1
-rw-r--r--assets/lib/simple-icons/icons/starz.svg1
-rw-r--r--assets/lib/simple-icons/icons/statamic.svg2
-rw-r--r--assets/lib/simple-icons/icons/staticman.svg1
-rw-r--r--assets/lib/simple-icons/icons/statuspage.svg2
-rw-r--r--assets/lib/simple-icons/icons/statuspal.svg1
-rw-r--r--assets/lib/simple-icons/icons/steam.svg2
-rw-r--r--assets/lib/simple-icons/icons/steamdb.svg1
-rw-r--r--assets/lib/simple-icons/icons/steamworks.svg2
-rw-r--r--assets/lib/simple-icons/icons/steelseries.svg1
-rw-r--r--assets/lib/simple-icons/icons/steem.svg2
-rw-r--r--assets/lib/simple-icons/icons/steemit.svg2
-rw-r--r--assets/lib/simple-icons/icons/steinberg.svg2
-rw-r--r--assets/lib/simple-icons/icons/stellar.svg2
-rw-r--r--assets/lib/simple-icons/icons/stencyl.svg2
-rw-r--r--assets/lib/simple-icons/icons/stimulus.svg1
-rw-r--r--assets/lib/simple-icons/icons/stitcher.svg2
-rw-r--r--assets/lib/simple-icons/icons/stmicroelectronics.svg1
-rw-r--r--assets/lib/simple-icons/icons/stopstalk.svg1
-rw-r--r--assets/lib/simple-icons/icons/storify.svg1
-rw-r--r--assets/lib/simple-icons/icons/storyblok.svg1
-rw-r--r--assets/lib/simple-icons/icons/storybook.svg2
-rw-r--r--assets/lib/simple-icons/icons/strapi.svg2
-rw-r--r--assets/lib/simple-icons/icons/strava.svg2
-rw-r--r--assets/lib/simple-icons/icons/streamlit.svg1
-rw-r--r--assets/lib/simple-icons/icons/stripe.svg2
-rw-r--r--assets/lib/simple-icons/icons/strongswan.svg2
-rw-r--r--assets/lib/simple-icons/icons/stubhub.svg2
-rw-r--r--assets/lib/simple-icons/icons/styled-components.svg1
-rw-r--r--assets/lib/simple-icons/icons/styledcomponents.svg1
-rw-r--r--assets/lib/simple-icons/icons/stylelint.svg1
-rw-r--r--assets/lib/simple-icons/icons/styleshare.svg2
-rw-r--r--assets/lib/simple-icons/icons/stylus.svg2
-rw-r--r--assets/lib/simple-icons/icons/subaru.svg2
-rw-r--r--assets/lib/simple-icons/icons/sublimetext.svg2
-rw-r--r--assets/lib/simple-icons/icons/substack.svg1
-rw-r--r--assets/lib/simple-icons/icons/subversion.svg2
-rw-r--r--assets/lib/simple-icons/icons/suckless.svg1
-rw-r--r--assets/lib/simple-icons/icons/sumologic.svg1
-rw-r--r--assets/lib/simple-icons/icons/supabase.svg1
-rw-r--r--assets/lib/simple-icons/icons/supermicro.svg1
-rw-r--r--assets/lib/simple-icons/icons/superuser.svg2
-rw-r--r--assets/lib/simple-icons/icons/surveymonkey.svg1
-rw-r--r--assets/lib/simple-icons/icons/suse.svg1
-rw-r--r--assets/lib/simple-icons/icons/suzuki.svg2
-rw-r--r--assets/lib/simple-icons/icons/svelte.svg2
-rw-r--r--assets/lib/simple-icons/icons/svg.svg2
-rw-r--r--assets/lib/simple-icons/icons/svgo.svg2
-rw-r--r--assets/lib/simple-icons/icons/swagger.svg2
-rw-r--r--assets/lib/simple-icons/icons/swarm.svg2
-rw-r--r--assets/lib/simple-icons/icons/swc.svg1
-rw-r--r--assets/lib/simple-icons/icons/swift.svg2
-rw-r--r--assets/lib/simple-icons/icons/swiggy.svg1
-rw-r--r--assets/lib/simple-icons/icons/swiper.svg1
-rw-r--r--assets/lib/simple-icons/icons/symantec.svg2
-rw-r--r--assets/lib/simple-icons/icons/symfony.svg2
-rw-r--r--assets/lib/simple-icons/icons/symphony.svg2
-rw-r--r--assets/lib/simple-icons/icons/sympy.svg1
-rw-r--r--assets/lib/simple-icons/icons/synology.svg2
-rw-r--r--assets/lib/simple-icons/icons/t-mobile.svg1
-rw-r--r--assets/lib/simple-icons/icons/tableau.svg2
-rw-r--r--assets/lib/simple-icons/icons/tado.svg1
-rw-r--r--assets/lib/simple-icons/icons/tails.svg2
-rw-r--r--assets/lib/simple-icons/icons/tailwindcss.svg2
-rw-r--r--assets/lib/simple-icons/icons/talend.svg2
-rw-r--r--assets/lib/simple-icons/icons/talenthouse.svg1
-rw-r--r--assets/lib/simple-icons/icons/tampermonkey.svg1
-rw-r--r--assets/lib/simple-icons/icons/taobao.svg1
-rw-r--r--assets/lib/simple-icons/icons/tapas.svg2
-rw-r--r--assets/lib/simple-icons/icons/target.svg1
-rw-r--r--assets/lib/simple-icons/icons/tasmota.svg1
-rw-r--r--assets/lib/simple-icons/icons/tata.svg2
-rw-r--r--assets/lib/simple-icons/icons/tauri.svg1
-rw-r--r--assets/lib/simple-icons/icons/taxbuzz.svg1
-rw-r--r--assets/lib/simple-icons/icons/teamcity.svg1
-rw-r--r--assets/lib/simple-icons/icons/teamspeak.svg2
-rw-r--r--assets/lib/simple-icons/icons/teamviewer.svg2
-rw-r--r--assets/lib/simple-icons/icons/ted.svg2
-rw-r--r--assets/lib/simple-icons/icons/teespring.svg2
-rw-r--r--assets/lib/simple-icons/icons/tekton.svg1
-rw-r--r--assets/lib/simple-icons/icons/tele5.svg2
-rw-r--r--assets/lib/simple-icons/icons/telegram.svg2
-rw-r--r--assets/lib/simple-icons/icons/telegraph.svg1
-rw-r--r--assets/lib/simple-icons/icons/temporal.svg1
-rw-r--r--assets/lib/simple-icons/icons/tencentqq.svg2
-rwxr-xr-xassets/lib/simple-icons/icons/tencentweibo.svg1
-rw-r--r--assets/lib/simple-icons/icons/tensorflow.svg2
-rw-r--r--assets/lib/simple-icons/icons/teradata.svg2
-rw-r--r--assets/lib/simple-icons/icons/teratail.svg1
-rw-r--r--assets/lib/simple-icons/icons/terraform.svg2
-rw-r--r--assets/lib/simple-icons/icons/tesco.svg1
-rw-r--r--assets/lib/simple-icons/icons/tesla.svg2
-rw-r--r--assets/lib/simple-icons/icons/testcafe.svg1
-rw-r--r--assets/lib/simple-icons/icons/testin.svg1
-rw-r--r--assets/lib/simple-icons/icons/testinglibrary.svg1
-rw-r--r--assets/lib/simple-icons/icons/tether.svg1
-rw-r--r--assets/lib/simple-icons/icons/textpattern.svg1
-rw-r--r--assets/lib/simple-icons/icons/thealgorithms.svg1
-rw-r--r--assets/lib/simple-icons/icons/theconversation.svg1
-rw-r--r--assets/lib/simple-icons/icons/theirishtimes.svg1
-rw-r--r--assets/lib/simple-icons/icons/themighty.svg2
-rw-r--r--assets/lib/simple-icons/icons/themodelsresource.svg1
-rw-r--r--assets/lib/simple-icons/icons/themoviedatabase.svg2
-rw-r--r--assets/lib/simple-icons/icons/thenorthface.svg1
-rw-r--r--assets/lib/simple-icons/icons/theregister.svg2
-rw-r--r--assets/lib/simple-icons/icons/thesoundsresource.svg1
-rw-r--r--assets/lib/simple-icons/icons/thespritersresource.svg1
-rw-r--r--assets/lib/simple-icons/icons/thewashingtonpost.svg2
-rw-r--r--assets/lib/simple-icons/icons/thingiverse.svg1
-rw-r--r--assets/lib/simple-icons/icons/thinkpad.svg1
-rw-r--r--assets/lib/simple-icons/icons/threadless.svg1
-rw-r--r--assets/lib/simple-icons/icons/threedotjs.svg1
-rw-r--r--assets/lib/simple-icons/icons/threema.svg2
-rw-r--r--assets/lib/simple-icons/icons/thumbtack.svg1
-rw-r--r--assets/lib/simple-icons/icons/thunderbird.svg1
-rw-r--r--assets/lib/simple-icons/icons/thymeleaf.svg1
-rw-r--r--assets/lib/simple-icons/icons/ticketmaster.svg1
-rw-r--r--assets/lib/simple-icons/icons/tidal.svg2
-rw-r--r--assets/lib/simple-icons/icons/tide.svg2
-rw-r--r--assets/lib/simple-icons/icons/tietoevry.svg1
-rw-r--r--assets/lib/simple-icons/icons/tiktok.svg2
-rw-r--r--assets/lib/simple-icons/icons/tile.svg1
-rw-r--r--assets/lib/simple-icons/icons/timescale.svg2
-rw-r--r--assets/lib/simple-icons/icons/tinder.svg2
-rw-r--r--assets/lib/simple-icons/icons/tinyletter.svg1
-rw-r--r--assets/lib/simple-icons/icons/tmobile.svg1
-rw-r--r--assets/lib/simple-icons/icons/tmux.svg1
-rw-r--r--assets/lib/simple-icons/icons/todoist.svg2
-rw-r--r--assets/lib/simple-icons/icons/toggl.svg2
-rw-r--r--assets/lib/simple-icons/icons/tokyometro.svg1
-rw-r--r--assets/lib/simple-icons/icons/tomorrowland.svg2
-rw-r--r--assets/lib/simple-icons/icons/topcoder.svg2
-rw-r--r--assets/lib/simple-icons/icons/toptal.svg2
-rw-r--r--assets/lib/simple-icons/icons/tor.svg1
-rw-r--r--assets/lib/simple-icons/icons/torbrowser.svg1
-rw-r--r--assets/lib/simple-icons/icons/torproject.svg1
-rw-r--r--assets/lib/simple-icons/icons/toshiba.svg2
-rw-r--r--assets/lib/simple-icons/icons/toyota.svg2
-rw-r--r--assets/lib/simple-icons/icons/tplink.svg1
-rw-r--r--assets/lib/simple-icons/icons/tqdm.svg1
-rw-r--r--assets/lib/simple-icons/icons/traefikmesh.svg1
-rw-r--r--assets/lib/simple-icons/icons/trainerroad.svg2
-rw-r--r--assets/lib/simple-icons/icons/trakt.svg2
-rw-r--r--assets/lib/simple-icons/icons/transferwise.svg1
-rw-r--r--assets/lib/simple-icons/icons/transportforireland.svg2
-rw-r--r--assets/lib/simple-icons/icons/transportforlondon.svg2
-rw-r--r--assets/lib/simple-icons/icons/travisci.svg2
-rw-r--r--assets/lib/simple-icons/icons/treehouse.svg2
-rw-r--r--assets/lib/simple-icons/icons/trello.svg2
-rw-r--r--assets/lib/simple-icons/icons/trendmicro.svg2
-rw-r--r--assets/lib/simple-icons/icons/treyarch.svg1
-rw-r--r--assets/lib/simple-icons/icons/triller.svg1
-rw-r--r--assets/lib/simple-icons/icons/trino.svg1
-rw-r--r--assets/lib/simple-icons/icons/tripadvisor.svg2
-rw-r--r--assets/lib/simple-icons/icons/tripdotcom.svg1
-rw-r--r--assets/lib/simple-icons/icons/trove.svg1
-rw-r--r--assets/lib/simple-icons/icons/truenas.svg1
-rw-r--r--assets/lib/simple-icons/icons/trulia.svg2
-rw-r--r--assets/lib/simple-icons/icons/trustedshops.svg1
-rw-r--r--assets/lib/simple-icons/icons/trustpilot.svg2
-rw-r--r--assets/lib/simple-icons/icons/tryhackme.svg1
-rw-r--r--assets/lib/simple-icons/icons/tryitonline.svg2
-rw-r--r--assets/lib/simple-icons/icons/tsnode.svg1
-rw-r--r--assets/lib/simple-icons/icons/tubi.svg1
-rw-r--r--assets/lib/simple-icons/icons/tui.svg2
-rw-r--r--assets/lib/simple-icons/icons/tumblr.svg2
-rw-r--r--assets/lib/simple-icons/icons/tunein.svg1
-rw-r--r--assets/lib/simple-icons/icons/turborepo.svg1
-rw-r--r--assets/lib/simple-icons/icons/turbosquid.svg1
-rw-r--r--assets/lib/simple-icons/icons/turkishairlines.svg2
-rw-r--r--assets/lib/simple-icons/icons/tutanota.svg1
-rw-r--r--assets/lib/simple-icons/icons/tvtime.svg1
-rw-r--r--assets/lib/simple-icons/icons/twilio.svg2
-rw-r--r--assets/lib/simple-icons/icons/twitch.svg2
-rw-r--r--assets/lib/simple-icons/icons/twitter.svg2
-rw-r--r--assets/lib/simple-icons/icons/twoo.svg2
-rw-r--r--assets/lib/simple-icons/icons/typeform.svg1
-rw-r--r--assets/lib/simple-icons/icons/typescript.svg2
-rw-r--r--assets/lib/simple-icons/icons/typo3.svg2
-rw-r--r--assets/lib/simple-icons/icons/uber.svg2
-rw-r--r--assets/lib/simple-icons/icons/ubereats.svg2
-rw-r--r--assets/lib/simple-icons/icons/ubiquiti.svg1
-rw-r--r--assets/lib/simple-icons/icons/ubisoft.svg2
-rw-r--r--assets/lib/simple-icons/icons/ublockorigin.svg2
-rw-r--r--assets/lib/simple-icons/icons/ubuntu.svg2
-rw-r--r--assets/lib/simple-icons/icons/udacity.svg2
-rw-r--r--assets/lib/simple-icons/icons/udemy.svg2
-rw-r--r--assets/lib/simple-icons/icons/ufc.svg1
-rw-r--r--[-rwxr-xr-x]assets/lib/simple-icons/icons/uikit.svg2
-rw-r--r--assets/lib/simple-icons/icons/ulule.svg2
-rw-r--r--assets/lib/simple-icons/icons/umbraco.svg2
-rw-r--r--assets/lib/simple-icons/icons/unacademy.svg1
-rw-r--r--assets/lib/simple-icons/icons/underarmour.svg1
-rw-r--r--assets/lib/simple-icons/icons/underscoredotjs.svg1
-rw-r--r--assets/lib/simple-icons/icons/undertale.svg1
-rw-r--r--assets/lib/simple-icons/icons/unicode.svg2
-rw-r--r--assets/lib/simple-icons/icons/unilever.svg1
-rw-r--r--assets/lib/simple-icons/icons/unitedairlines.svg2
-rw-r--r--assets/lib/simple-icons/icons/unity.svg2
-rw-r--r--assets/lib/simple-icons/icons/unraid.svg1
-rw-r--r--assets/lib/simple-icons/icons/unrealengine.svg2
-rw-r--r--assets/lib/simple-icons/icons/unsplash.svg2
-rw-r--r--assets/lib/simple-icons/icons/untangle.svg2
-rw-r--r--assets/lib/simple-icons/icons/untappd.svg2
-rw-r--r--assets/lib/simple-icons/icons/upcloud.svg1
-rw-r--r--assets/lib/simple-icons/icons/uplabs.svg2
-rw-r--r--assets/lib/simple-icons/icons/uploaded.svg2
-rw-r--r--assets/lib/simple-icons/icons/ups.svg1
-rw-r--r--assets/lib/simple-icons/icons/upstash.svg1
-rw-r--r--assets/lib/simple-icons/icons/uptobox.svg1
-rw-r--r--assets/lib/simple-icons/icons/upwork.svg2
-rw-r--r--assets/lib/simple-icons/icons/usps.svg1
-rw-r--r--assets/lib/simple-icons/icons/v.svg2
-rw-r--r--assets/lib/simple-icons/icons/v8.svg2
-rw-r--r--assets/lib/simple-icons/icons/vaadin.svg1
-rw-r--r--assets/lib/simple-icons/icons/vagrant.svg2
-rw-r--r--assets/lib/simple-icons/icons/valve.svg2
-rw-r--r--assets/lib/simple-icons/icons/vapor.svg1
-rw-r--r--assets/lib/simple-icons/icons/vault.svg1
-rw-r--r--assets/lib/simple-icons/icons/vauxhall.svg2
-rw-r--r--assets/lib/simple-icons/icons/vbulletin.svg2
-rw-r--r--assets/lib/simple-icons/icons/vectorlogozone.svg1
-rw-r--r--assets/lib/simple-icons/icons/vectorworks.svg1
-rw-r--r--assets/lib/simple-icons/icons/veeam.svg2
-rw-r--r--assets/lib/simple-icons/icons/veepee.svg1
-rw-r--r--assets/lib/simple-icons/icons/velog.svg1
-rw-r--r--assets/lib/simple-icons/icons/venmo.svg2
-rw-r--r--assets/lib/simple-icons/icons/vercel.svg1
-rw-r--r--assets/lib/simple-icons/icons/verdaccio.svg1
-rw-r--r--assets/lib/simple-icons/icons/veritas.svg2
-rw-r--r--assets/lib/simple-icons/icons/verizon.svg2
-rw-r--r--assets/lib/simple-icons/icons/vexxhost.svg1
-rw-r--r--assets/lib/simple-icons/icons/vfairs.svg1
-rw-r--r--assets/lib/simple-icons/icons/viadeo.svg2
-rw-r--r--assets/lib/simple-icons/icons/viber.svg2
-rw-r--r--assets/lib/simple-icons/icons/vim.svg2
-rw-r--r--assets/lib/simple-icons/icons/vimeo.svg2
-rw-r--r--assets/lib/simple-icons/icons/vimeolivestream.svg1
-rw-r--r--assets/lib/simple-icons/icons/vine.svg1
-rw-r--r--assets/lib/simple-icons/icons/virb.svg1
-rw-r--r--assets/lib/simple-icons/icons/virgin.svg1
-rw-r--r--assets/lib/simple-icons/icons/virtualbox.svg1
-rw-r--r--assets/lib/simple-icons/icons/virustotal.svg1
-rw-r--r--assets/lib/simple-icons/icons/visa.svg2
-rw-r--r--assets/lib/simple-icons/icons/visualstudio.svg2
-rw-r--r--assets/lib/simple-icons/icons/visualstudiocode.svg2
-rw-r--r--assets/lib/simple-icons/icons/vite.svg1
-rw-r--r--assets/lib/simple-icons/icons/vivaldi.svg2
-rw-r--r--assets/lib/simple-icons/icons/vivino.svg2
-rw-r--r--assets/lib/simple-icons/icons/vk.svg2
-rw-r--r--assets/lib/simple-icons/icons/vlcmediaplayer.svg2
-rw-r--r--assets/lib/simple-icons/icons/vmware.svg2
-rw-r--r--assets/lib/simple-icons/icons/vodafone.svg2
-rw-r--r--assets/lib/simple-icons/icons/volkswagen.svg2
-rw-r--r--assets/lib/simple-icons/icons/volvo.svg2
-rw-r--r--assets/lib/simple-icons/icons/vonage.svg1
-rw-r--r--assets/lib/simple-icons/icons/vowpalwabbit.svg1
-rw-r--r--assets/lib/simple-icons/icons/vox.svg1
-rw-r--r--assets/lib/simple-icons/icons/vsco.svg2
-rw-r--r--assets/lib/simple-icons/icons/vtex.svg1
-rw-r--r--assets/lib/simple-icons/icons/vue-dot-js.svg1
-rw-r--r--assets/lib/simple-icons/icons/vuedotjs.svg1
-rw-r--r--assets/lib/simple-icons/icons/vuetify.svg2
-rw-r--r--assets/lib/simple-icons/icons/vulkan.svg2
-rw-r--r--assets/lib/simple-icons/icons/vultr.svg2
-rw-r--r--assets/lib/simple-icons/icons/w3c.svg2
-rw-r--r--assets/lib/simple-icons/icons/wagtail.svg1
-rw-r--r--assets/lib/simple-icons/icons/wakatime.svg1
-rw-r--r--assets/lib/simple-icons/icons/walkman.svg1
-rw-r--r--assets/lib/simple-icons/icons/wallabag.svg1
-rw-r--r--assets/lib/simple-icons/icons/walmart.svg1
-rw-r--r--assets/lib/simple-icons/icons/wappalyzer.svg1
-rw-r--r--assets/lib/simple-icons/icons/warnerbros-dot.svg1
-rw-r--r--assets/lib/simple-icons/icons/warnerbros.svg1
-rw-r--r--assets/lib/simple-icons/icons/wattpad.svg2
-rw-r--r--assets/lib/simple-icons/icons/waze.svg2
-rw-r--r--assets/lib/simple-icons/icons/wearos.svg2
-rw-r--r--assets/lib/simple-icons/icons/weasyl.svg2
-rw-r--r--assets/lib/simple-icons/icons/web3dotjs.svg1
-rw-r--r--assets/lib/simple-icons/icons/webassembly.svg2
-rw-r--r--assets/lib/simple-icons/icons/webauthn.svg2
-rw-r--r--assets/lib/simple-icons/icons/webcomponents-dot-org.svg1
-rw-r--r--assets/lib/simple-icons/icons/webcomponentsdotorg.svg1
-rw-r--r--assets/lib/simple-icons/icons/webdriverio.svg1
-rw-r--r--assets/lib/simple-icons/icons/webflow.svg1
-rw-r--r--assets/lib/simple-icons/icons/webgl.svg2
-rw-r--r--assets/lib/simple-icons/icons/webhint.svg1
-rw-r--r--assets/lib/simple-icons/icons/weblate.svg1
-rw-r--r--assets/lib/simple-icons/icons/webmin.svg2
-rw-r--r--assets/lib/simple-icons/icons/webmoney.svg2
-rw-r--r--assets/lib/simple-icons/icons/webpack.svg2
-rw-r--r--assets/lib/simple-icons/icons/webrtc.svg2
-rw-r--r--assets/lib/simple-icons/icons/webstorm.svg2
-rw-r--r--assets/lib/simple-icons/icons/webtoon.svg1
-rw-r--r--assets/lib/simple-icons/icons/wechat.svg2
-rw-r--r--assets/lib/simple-icons/icons/wegame.svg1
-rw-r--r--assets/lib/simple-icons/icons/weightsandbiases.svg1
-rw-r--r--assets/lib/simple-icons/icons/welcometothejungle.svg1
-rw-r--r--assets/lib/simple-icons/icons/wemo.svg2
-rw-r--r--assets/lib/simple-icons/icons/westerndigital.svg1
-rw-r--r--assets/lib/simple-icons/icons/wetransfer.svg1
-rw-r--r--assets/lib/simple-icons/icons/whatsapp.svg2
-rw-r--r--assets/lib/simple-icons/icons/wheniwork.svg2
-rw-r--r--assets/lib/simple-icons/icons/whitesource.svg2
-rw-r--r--assets/lib/simple-icons/icons/wii.svg2
-rw-r--r--assets/lib/simple-icons/icons/wiiu.svg2
-rw-r--r--assets/lib/simple-icons/icons/wikidata.svg1
-rw-r--r--assets/lib/simple-icons/icons/wikidotjs.svg1
-rw-r--r--assets/lib/simple-icons/icons/wikimediacommons.svg2
-rw-r--r--assets/lib/simple-icons/icons/wikipedia.svg2
-rw-r--r--assets/lib/simple-icons/icons/wikiquote.svg1
-rw-r--r--assets/lib/simple-icons/icons/wikivoyage.svg1
-rw-r--r--assets/lib/simple-icons/icons/winamp.svg1
-rw-r--r--assets/lib/simple-icons/icons/windicss.svg1
-rw-r--r--assets/lib/simple-icons/icons/windows.svg2
-rw-r--r--assets/lib/simple-icons/icons/windows95.svg2
-rw-r--r--assets/lib/simple-icons/icons/windowsterminal.svg1
-rw-r--r--assets/lib/simple-icons/icons/windowsxp.svg2
-rw-r--r--assets/lib/simple-icons/icons/winmate.svg1
-rw-r--r--assets/lib/simple-icons/icons/wipro.svg1
-rw-r--r--assets/lib/simple-icons/icons/wire.svg2
-rw-r--r--assets/lib/simple-icons/icons/wireguard.svg2
-rw-r--r--assets/lib/simple-icons/icons/wireshark.svg1
-rw-r--r--assets/lib/simple-icons/icons/wish.svg2
-rw-r--r--assets/lib/simple-icons/icons/wistia.svg2
-rw-r--r--assets/lib/simple-icons/icons/wix.svg2
-rw-r--r--assets/lib/simple-icons/icons/wizzair.svg2
-rw-r--r--assets/lib/simple-icons/icons/wolfram.svg2
-rw-r--r--assets/lib/simple-icons/icons/wolframlanguage.svg2
-rw-r--r--assets/lib/simple-icons/icons/wolframmathematica.svg2
-rw-r--r--assets/lib/simple-icons/icons/woo.svg2
-rw-r--r--assets/lib/simple-icons/icons/woocommerce.svg2
-rw-r--r--assets/lib/simple-icons/icons/wordpress.svg2
-rw-r--r--assets/lib/simple-icons/icons/workplace.svg2
-rw-r--r--assets/lib/simple-icons/icons/worldhealthorganization.svg2
-rw-r--r--assets/lib/simple-icons/icons/wpengine.svg2
-rw-r--r--assets/lib/simple-icons/icons/wprocket.svg2
-rw-r--r--assets/lib/simple-icons/icons/write-dot-as.svg1
-rw-r--r--assets/lib/simple-icons/icons/writedotas.svg1
-rw-r--r--assets/lib/simple-icons/icons/wwe.svg2
-rw-r--r--assets/lib/simple-icons/icons/wwise.svg1
-rw-r--r--assets/lib/simple-icons/icons/x-dot-org.svg1
-rw-r--r--assets/lib/simple-icons/icons/x-pack.svg1
-rw-r--r--assets/lib/simple-icons/icons/xamarin.svg2
-rw-r--r--assets/lib/simple-icons/icons/xaml.svg2
-rw-r--r--assets/lib/simple-icons/icons/xampp.svg2
-rw-r--r--assets/lib/simple-icons/icons/xbox.svg2
-rw-r--r--assets/lib/simple-icons/icons/xcode.svg2
-rw-r--r--assets/lib/simple-icons/icons/xdadevelopers.svg2
-rw-r--r--assets/lib/simple-icons/icons/xdotorg.svg1
-rw-r--r--assets/lib/simple-icons/icons/xero.svg2
-rw-r--r--assets/lib/simple-icons/icons/xfce.svg2
-rw-r--r--assets/lib/simple-icons/icons/xiaomi.svg2
-rw-r--r--assets/lib/simple-icons/icons/xilinx.svg1
-rw-r--r--assets/lib/simple-icons/icons/xing.svg2
-rw-r--r--assets/lib/simple-icons/icons/xmpp.svg2
-rw-r--r--assets/lib/simple-icons/icons/xrp.svg2
-rw-r--r--assets/lib/simple-icons/icons/xsplit.svg2
-rw-r--r--assets/lib/simple-icons/icons/xstate.svg1
-rw-r--r--assets/lib/simple-icons/icons/yahoo.svg2
-rw-r--r--assets/lib/simple-icons/icons/yale.svg1
-rw-r--r--assets/lib/simple-icons/icons/yamahacorporation.svg2
-rw-r--r--assets/lib/simple-icons/icons/yamahamotorcorporation.svg2
-rw-r--r--assets/lib/simple-icons/icons/yammer.svg2
-rw-r--r--assets/lib/simple-icons/icons/yandex.svg1
-rw-r--r--assets/lib/simple-icons/icons/yarn.svg2
-rw-r--r--assets/lib/simple-icons/icons/ycombinator.svg2
-rw-r--r--assets/lib/simple-icons/icons/yelp.svg2
-rw-r--r--assets/lib/simple-icons/icons/yoast.svg2
-rw-r--r--assets/lib/simple-icons/icons/yolo.svg1
-rw-r--r--assets/lib/simple-icons/icons/yourtraveldottv.svg1
-rw-r--r--assets/lib/simple-icons/icons/youtube.svg2
-rw-r--r--assets/lib/simple-icons/icons/youtubegaming.svg2
-rw-r--r--assets/lib/simple-icons/icons/youtubemusic.svg1
-rw-r--r--assets/lib/simple-icons/icons/youtubestudio.svg2
-rw-r--r--assets/lib/simple-icons/icons/youtubetv.svg2
-rw-r--r--assets/lib/simple-icons/icons/yubico.svg1
-rw-r--r--assets/lib/simple-icons/icons/z-wave.svg1
-rw-r--r--assets/lib/simple-icons/icons/zabka.svg1
-rw-r--r--assets/lib/simple-icons/icons/zalando.svg2
-rw-r--r--assets/lib/simple-icons/icons/zalo.svg1
-rw-r--r--assets/lib/simple-icons/icons/zapier.svg2
-rw-r--r--assets/lib/simple-icons/icons/zara.svg1
-rw-r--r--assets/lib/simple-icons/icons/zazzle.svg1
-rw-r--r--assets/lib/simple-icons/icons/zcash.svg1
-rw-r--r--assets/lib/simple-icons/icons/zdf.svg2
-rw-r--r--assets/lib/simple-icons/icons/zeit.svg1
-rw-r--r--assets/lib/simple-icons/icons/zelle.svg1
-rw-r--r--assets/lib/simple-icons/icons/zend.svg2
-rw-r--r--assets/lib/simple-icons/icons/zendesk.svg2
-rw-r--r--assets/lib/simple-icons/icons/zendframework.svg2
-rw-r--r--assets/lib/simple-icons/icons/zenn.svg1
-rw-r--r--assets/lib/simple-icons/icons/zenodo.svg1
-rw-r--r--assets/lib/simple-icons/icons/zerodha.svg1
-rw-r--r--assets/lib/simple-icons/icons/zeromq.svg2
-rw-r--r--assets/lib/simple-icons/icons/zerply.svg2
-rw-r--r--assets/lib/simple-icons/icons/zhihu.svg2
-rw-r--r--assets/lib/simple-icons/icons/zig.svg1
-rw-r--r--assets/lib/simple-icons/icons/zigbee.svg2
-rw-r--r--assets/lib/simple-icons/icons/zillow.svg2
-rw-r--r--assets/lib/simple-icons/icons/zingat.svg2
-rw-r--r--assets/lib/simple-icons/icons/zoho.svg1
-rw-r--r--assets/lib/simple-icons/icons/zoiper.svg1
-rw-r--r--assets/lib/simple-icons/icons/zomato.svg1
-rw-r--r--assets/lib/simple-icons/icons/zoom.svg2
-rw-r--r--assets/lib/simple-icons/icons/zorin.svg2
-rw-r--r--assets/lib/simple-icons/icons/zotero.svg1
-rw-r--r--assets/lib/simple-icons/icons/zulip.svg2
-rw-r--r--assets/lib/simple-icons/icons/zwave.svg1
-rw-r--r--assets/lib/simple-icons/icons/zyte.svg1
-rw-r--r--assets/lib/smooth-scroll/smooth-scroll.min.js2
-rw-r--r--assets/lib/twemoji/twemoji.min.js2
-rw-r--r--assets/lib/typeit/index.umd.js2
-rw-r--r--assets/lib/typeit/typeit.min.js8
-rwxr-xr-xassets/lib/valine/Valine.min.js23
-rw-r--r--assets/lib/valine/emoji/apple.yml (renamed from assets/data/emoji/apple.yml)2
-rw-r--r--assets/lib/valine/emoji/facebook.yml (renamed from assets/data/emoji/facebook.yml)2
-rw-r--r--assets/lib/valine/emoji/google.yml (renamed from assets/data/emoji/google.yml)2
-rw-r--r--assets/lib/valine/emoji/twitter.yml (renamed from assets/data/emoji/twitter.yml)2
-rw-r--r--assets/svg/icons/bilibili.svg1
-rw-r--r--assets/svg/icons/thingiverse.svg1
2432 files changed, 4896 insertions, 3274 deletions
diff --git a/assets/css/_core/_base.scss b/assets/css/_core/_base.scss
index 9257ce73..12117cd4 100644
--- a/assets/css/_core/_base.scss
+++ b/assets/css/_core/_base.scss
@@ -1,10 +1,16 @@
html {
- font-family: $global-font-family;
- font-weight: $global-font-weight;
+ font-family: var(--global-font-family);
+ font-weight: var(--global-font-weight);
font-display: swap;
- font-size: $global-font-size;
- line-height: $global-line-height;
+ font-size: var(--global-font-size);
+ line-height: var(--global-line-height);
width:100%;
+
+ scroll-behavior: smooth;
+
+ main [id] {
+ scroll-margin-top: calc(var(--header-height) + .5rem);
+ }
}
/* scrollbar, only support webkit */
@@ -41,15 +47,11 @@ body {
}
}
-@include ms;
@include link(true, true);
@import "../_partial/mask";
+@import "../_partial/img";
@import "../_partial/icon";
@import "../_partial/details";
@import "../_partial/fixed-button";
@import "../_partial/cookieconsent";
-
-img {
- @include object-fit(contain);
-}
diff --git a/assets/css/_partial/_footer.scss b/assets/css/_core/_footer.scss
index 21a89e8c..21a89e8c 100644
--- a/assets/css/_partial/_footer.scss
+++ b/assets/css/_core/_footer.scss
diff --git a/assets/css/_partial/_header.scss b/assets/css/_core/_header.scss
index ec38fdbf..b17aa940 100644
--- a/assets/css/_partial/_header.scss
+++ b/assets/css/_core/_header.scss
@@ -36,7 +36,7 @@ header {
}
.header-title {
- font-family: $header-title-font-family;
+ font-family: var(--header-title-font-family);
font-weight: bold;
margin-right: .5rem;
min-width: 10%;
@@ -148,10 +148,10 @@ header {
#header-desktop {
display: block;
position: fixed;
- height: $header-height;
- line-height: $header-height;
+ height: var(--header-height);
+ line-height: var(--header-height);
- [header-desktop=normal] & {
+ [data-header-desktop=normal] & {
position: static;
}
@@ -159,7 +159,7 @@ header {
padding: 0 2rem 0 10vh;
.header-title {
- font-size: $header-title-font-size;
+ font-size: var(--header-title-font-size);
}
.menu {
@@ -213,10 +213,10 @@ header {
#header-mobile {
display: none;
position: fixed;
- height: $header-height;
- line-height: $header-height;
+ height: var(--header-height);
+ line-height: var(--header-height);
- [header-mobile=normal] & {
+ [data-header-mobile=normal] & {
position: static;
}
@@ -230,7 +230,7 @@ header {
@include transition(margin-top 0.3s ease);
.header-title {
- font-size: $header-title-font-size;
+ font-size: var(--header-title-font-size);
max-width: 80%;
}
@@ -289,7 +289,7 @@ header {
justify-content: space-between;
align-items: center;
box-sizing: border-box;
- padding: ($header-height - 2.5rem) / 2 1rem;
+ padding: calc((var(--header-height) - 2.5rem) / 2) 1rem;
line-height: 2.5rem;
}
@@ -328,7 +328,7 @@ header {
&.open {
.header-wrapper {
- margin-top: -$header-height;
+ margin-top: -var(--header-height);
}
.menu {
@@ -349,7 +349,7 @@ header {
.search-dropdown {
position: fixed;
z-index: 200;
- top: $header-height;
+ top: var(--header-height);
@include box-shadow(0 .125rem .25rem rgba(0, 0, 0, .1));
&.desktop {
@@ -372,7 +372,7 @@ header {
.suggestions {
overflow-y: auto;
- max-height: calc(100vh - #{$header-height});
+ max-height: calc(100vh - var(--header-height));
.suggestion {
padding: .75rem 1rem;
diff --git a/assets/css/_core/_media.scss b/assets/css/_core/_media.scss
index 8558bafe..f90315dc 100644
--- a/assets/css/_core/_media.scss
+++ b/assets/css/_core/_media.scss
@@ -52,11 +52,11 @@
.page {
width: 100%;
- [header-mobile] & {
- padding-top: $header-height;
+ [data-header-mobile] & {
+ padding-top: var(--header-height);
}
- [header-mobile=normal] & {
+ [data-header-mobile=normal] & {
padding-top: 0;
}
diff --git a/assets/css/_partial/_pagination.scss b/assets/css/_core/_pagination.scss
index 10d24b77..10d24b77 100644
--- a/assets/css/_partial/_pagination.scss
+++ b/assets/css/_core/_pagination.scss
diff --git a/assets/css/_core/_variables.scss b/assets/css/_core/_variables.scss
new file mode 100644
index 00000000..ae693fc3
--- /dev/null
+++ b/assets/css/_core/_variables.scss
@@ -0,0 +1,30 @@
+:root {
+ // ========== Global ========== //
+ // Font and Line Height
+ --global-font-family: #{inspect($global-font-family)};
+ --global-font-size: #{$global-font-size};
+ --global-font-weight: #{$global-font-weight};
+ --global-line-height: #{$global-line-height};
+ // ========== Global ========== //
+
+ // ========== Header ========== //
+ // Height of the header
+ --header-height: #{$header-height};
+
+ // Font family and size of the header title
+ --header-title-font-family: #{inspect($header-title-font-family)};
+ --header-title-font-size: #{$header-title-font-size};
+ // ========== Header ========== //
+
+ // ========== Single Content ========== //
+ // Font size of the TOC
+ --toc-title-font-size: #{$toc-title-font-size};
+ --toc-content-font-size: #{$toc-content-font-size};
+ // ========== Single Content ========== //
+
+ // ========== Code ========== //
+ // Font family and size of the code
+ --code-font-family: #{inspect($code-font-family)};
+ --code-font-size: #{$code-font-size};
+ // ========== Code ========== //
+}
diff --git a/assets/css/_mixin/_compatibility.scss b/assets/css/_mixin/_compatibility.scss
index 4fa9044f..dd5619e7 100644
--- a/assets/css/_mixin/_compatibility.scss
+++ b/assets/css/_mixin/_compatibility.scss
@@ -43,7 +43,7 @@
-webkit-box-orient: $orient;
-moz-box-orient: $orient;
- box-orient: $orient;
+ // box-orient: $orient;
}
@mixin placeholder($color) {
@@ -97,14 +97,8 @@
line-break: $value;
}
-@mixin ms {
- input::-ms-clear {
- display: none;
- }
-}
-
@mixin object-fit($value) {
-o-object-fit: $value;
object-fit: $value;
- font-family: 'object-fit: #{$value};';
+ font-family: "object-fit: #{$value};";
}
diff --git a/assets/css/_mixin/_link.scss b/assets/css/_mixin/_link.scss
index 351d8d5e..f12ac22c 100644
--- a/assets/css/_mixin/_link.scss
+++ b/assets/css/_mixin/_link.scss
@@ -2,19 +2,35 @@
a, a::before, a::after {
text-decoration: none;
- color: if($light, $global-link-color, $single-link-color);
+ @if $light {
+ color: $global-link-color;
+ } @else {
+ color: $single-link-color;
+ }
[theme=dark] & {
- color: if($dark, $global-link-color-dark, $single-link-color-dark);
+ @if $dark {
+ color: $global-link-color-dark;
+ } @else {
+ color: $single-link-color-dark;
+ }
}
}
a:active,
a:hover {
- color: if($light, $global-link-hover-color, $single-link-hover-color);
+ @if $light {
+ color: $global-link-hover-color;
+ } @else {
+ color: $single-link-hover-color;
+ }
[theme=dark] & {
- color: if($dark, $global-link-hover-color-dark, $single-link-hover-color-dark);
+ @if $dark {
+ color: $global-link-hover-color-dark;
+ } @else {
+ color: $single-link-hover-color-dark;
+ }
}
}
}
diff --git a/assets/css/_page/_home.scss b/assets/css/_page/_home.scss
index b6ce5b26..ae7988a7 100644
--- a/assets/css/_page/_home.scss
+++ b/assets/css/_page/_home.scss
@@ -66,7 +66,7 @@
}
}
-.home[posts] {
+.home[data-home=posts] {
.home-profile {
@include transform(translateY(0));
padding-top: 2rem;
@@ -100,11 +100,10 @@
height: 100%;
left: 0;
top: 0;
- @include object-fit(none);
- }
- img.lazyloaded {
- @include object-fit(cover);
+ &.lazyloaded {
+ @include object-fit(cover);
+ }
}
&:hover {
diff --git a/assets/css/_page/_index.scss b/assets/css/_page/_index.scss
index 0cd511fc..98437a8f 100644
--- a/assets/css/_page/_index.scss
+++ b/assets/css/_page/_index.scss
@@ -4,11 +4,11 @@
width: 60%;
margin: 0 auto;
- [header-desktop] & {
- padding-top: $header-height;
+ [data-header-desktop] & {
+ padding-top: var(--header-height);
}
- [header-desktop=normal] & {
+ [data-header-desktop=normal] & {
padding-top: 0;
}
diff --git a/assets/css/_page/_single.scss b/assets/css/_page/_single.scss
index 6d550cc2..dd5c2b0f 100644
--- a/assets/css/_page/_single.scss
+++ b/assets/css/_page/_single.scss
@@ -2,17 +2,16 @@
.single {
.single-title {
- margin: 1rem 0 .5rem;
+ margin: 2rem 0 .5rem;
font-size: 1.6rem;
font-weight: bold;
line-height: 140%;
}
.single-subtitle {
- margin: .4rem 0;
+ margin: .5rem 0;
font-size: 1.2rem;
font-weight: normal;
- font-style: italic;
line-height: 100%;
}
@@ -231,16 +230,13 @@
img {
display: block;
+ width: 100%;
height: auto;
margin: 0 auto;
overflow: hidden;
}
}
- .lazyloading {
- @include object-fit(none);
- }
-
blockquote {
display: block;
border-left: .5rem solid $blockquote-color;
@@ -294,7 +290,7 @@
@include border-radius(3px);
@include box-shadow(inset 0 -1px 0 $global-border-color);
font-size: .8rem;
- font-family: $code-font-family;
+ font-family: var(--code-font-family);
color: $code-color;
[theme=dark] & {
@@ -306,16 +302,6 @@
}
}
- .typeit {
- .code {
- padding: .375rem;
- font-size: .875rem;
- font-family: $code-font-family;
- font-weight: bold;
- word-break: break-all;
- }
- }
-
.version {
height: 1.25em;
vertical-align: text-bottom;
@@ -326,6 +312,28 @@
@import "../_partial/_single/comment";
}
+.typeit {
+ .highlight {
+ padding: .375rem;
+ font-size: .875rem;
+ font-family: var(--code-font-family);
+ font-weight: bold;
+ word-break: break-all;
+ white-space: pre-wrap;
+ }
+
+ --ti-cursor-font-family: var(--global-font-family);
+ --ti-cursor-font-size: var(--global-font-size);
+ --ti-cursor-font-weight: var(--global-font-weight);
+ --ti-cursor-line-height: var(--global-line-height);
+ --ti-cursor-color: $global-font-secondary-color;
+ --ti-cursor-margin-left: 0;
+
+ [theme=dark] & {
+ --ti-cursor-color: $global-font-secondary-color-dark;
+ }
+}
+
.lg-toolbar .lg-icon::after {
color: #999;
}
diff --git a/assets/css/_partial/_archive/_terms.scss b/assets/css/_partial/_archive/_terms.scss
index 1f63a47d..25889f88 100644
--- a/assets/css/_partial/_archive/_terms.scss
+++ b/assets/css/_partial/_archive/_terms.scss
@@ -68,7 +68,7 @@
}
.archive-item-date {
- width: 4em;
+ width: 5em;
text-align: right;
color: $global-font-secondary-color;
diff --git a/assets/css/_partial/_details.scss b/assets/css/_partial/_details.scss
index f1702d0d..71c5b6b7 100644
--- a/assets/css/_partial/_details.scss
+++ b/assets/css/_partial/_details.scss
@@ -26,7 +26,7 @@
}
.details-content {
- max-height: $MAX_LENGTH;
+ max-height: 10000px;
@include details-transition-close;
}
}
diff --git a/assets/css/_partial/_img.scss b/assets/css/_partial/_img.scss
new file mode 100644
index 00000000..2ebc9662
--- /dev/null
+++ b/assets/css/_partial/_img.scss
@@ -0,0 +1,9 @@
+img {
+ &.lazyload, &.lazyloading {
+ @include object-fit(scale-down);
+ }
+
+ &.lazyloaded {
+ @include object-fit(contain);
+ }
+}
diff --git a/assets/css/_partial/_single/_admonition.scss b/assets/css/_partial/_single/_admonition.scss
index 41c8cbcc..5e06096b 100644
--- a/assets/css/_partial/_single/_admonition.scss
+++ b/assets/css/_partial/_single/_admonition.scss
@@ -2,20 +2,13 @@
position: relative;
margin: 1rem 0;
padding: 0 .75rem;
- background-color: map-get($admonition-background-color-map, 'note');
- border-left: .25rem solid map-get($admonition-color-map, 'note');
+ border-left: .25rem solid;
overflow: auto;
.admonition-title {
font-weight: bold;
margin: 0 -0.75rem;
padding: .25rem 1.8rem;
- border-bottom: 1px solid map-get($admonition-background-color-map, 'note');
- background-color: opacify(map-get($admonition-background-color-map, 'note'), 0.15);
- }
-
- &.open .admonition-title {
- background-color: map-get($admonition-background-color-map, 'note');
}
.admonition-content {
@@ -24,7 +17,6 @@
i.icon {
font-size: 0.85rem;
- color: map-get($admonition-color-map, 'note');
position: absolute;
top: .6rem;
left: .4rem;
@@ -36,27 +28,40 @@
right: .3rem;
}
- @each $type, $color in $admonition-color-map {
- &.#{$type} {
+ @each $type, $color, $background-color in $admonition-color-list {
+ @if $type == "note" {
+ background-color: $background-color;
border-left-color: $color;
+ .admonition-title {
+ border-bottom-color: $background-color;
+ background-color: opacify($background-color, 0.15);
+ }
+
+ &.open .admonition-title {
+ background-color: $background-color;
+ }
+
i.icon {
color: $color;
}
- }
- }
+ } @else {
+ &.#{$type} {
+ background-color: $background-color;
+ border-left-color: $color;
- @each $type, $color in $admonition-background-color-map {
- &.#{$type} {
- background-color: $color;
+ .admonition-title {
+ border-bottom-color: $background-color;
+ background-color: opacify($background-color, 0.15);
+ }
- .admonition-title {
- border-bottom-color: $color;
- background-color: opacify($color, 0.15);
- }
+ &.open .admonition-title {
+ background-color: $background-color;
+ }
- &.open .admonition-title {
- background-color: $color;
+ i.icon {
+ color: $color;
+ }
}
}
}
diff --git a/assets/css/_partial/_single/_code.scss b/assets/css/_partial/_single/_code.scss
index 5507a2db..42583a9a 100644
--- a/assets/css/_partial/_single/_code.scss
+++ b/assets/css/_partial/_single/_code.scss
@@ -4,8 +4,8 @@ code {
padding: 0 .4rem;
@include overflow-wrap(break-word);
@include line-break(anywhere);
- font-size: $code-font-size;
- font-family: $code-font-family;
+ font-size: var(--code-font-size);
+ font-family: var(--code-font-family);
color: $code-color;
[theme=dark] & {
@@ -37,9 +37,11 @@ code, pre, .highlight table, .highlight tr, .highlight td {
}
}
-.highlight, .gist {
- font-family: $code-font-family;
- font-size: $code-font-size;
+.highlight {
+ font-family: var(--code-font-family);
+ font-size: var(--code-font-size);
+ line-height: 1.4em;
+ margin: .5rem 0;
.table-wrapper {
> table,
@@ -49,14 +51,12 @@ code, pre, .highlight table, .highlight tr, .highlight td {
margin: 0;
padding: 0;
border: none !important;
- white-space: nowrap;
+
+ span.c {
+ white-space: nowrap;
+ }
}
}
-}
-
-.highlight {
- line-height: 1.4em;
- margin: .5rem 0;
> .chroma {
position: relative;
@@ -67,7 +67,7 @@ code, pre, .highlight table, .highlight tr, .highlight td {
align-items: center;
box-sizing: border-box;
width: 100%;
- font-family: $global-font-family;
+ font-family: var(--global-font-family);
font-weight: bold;
color: $code-info-color;
background: darken($code-background-color, 8%);
@@ -88,10 +88,10 @@ code, pre, .highlight table, .highlight tr, .highlight td {
.code-title::after {
padding-left: .2rem;
- content: 'Code';
+ content: "Code";
}
- @each $type, $text in $code-type-map {
+ @each $type, $text in $code-type-list {
&.#{$type} .code-title::after {
content: $text;
}
@@ -171,7 +171,7 @@ code, pre, .highlight table, .highlight tr, .highlight td {
}
.table-wrapper {
- max-height: $MAX_LENGTH;
+ max-height: 10000px;
@include details-transition-close;
}
@@ -210,6 +210,20 @@ code, pre, .highlight table, .highlight tr, .highlight td {
}
.gist {
+ font-family: var(--code-font-family);
+ font-size: var(--code-font-size);
+
+ .table-wrapper {
+ > table,
+ > table thead,
+ > table tr,
+ > table td {
+ margin: 0;
+ padding: 0;
+ border: none !important;
+ }
+ }
+
.gist-file, .gist-data, .gist-meta {
border: none;
}
diff --git a/assets/css/_partial/_single/_footer.scss b/assets/css/_partial/_single/_footer.scss
index e2c13243..ba8e6c40 100644
--- a/assets/css/_partial/_single/_footer.scss
+++ b/assets/css/_partial/_single/_footer.scss
@@ -68,7 +68,7 @@
.post-nav {
&::before,
&::after {
- content: ' ';
+ content: " ";
display: table;
}
diff --git a/assets/css/_partial/_single/_toc.scss b/assets/css/_partial/_single/_toc.scss
index 9cac0562..25a7917a 100644
--- a/assets/css/_partial/_single/_toc.scss
+++ b/assets/css/_partial/_single/_toc.scss
@@ -1,12 +1,12 @@
.toc {
.toc-title {
- font-size: $toc-title-font-size;
+ font-size: var(--toc-title-font-size);
font-weight: bold;
text-transform: uppercase;
}
.toc-content {
- font-size: $toc-content-font-size;
+ font-size: var(--toc-content-font-size);
ul {
text-indent: -0.85rem;
@@ -50,7 +50,7 @@
#toc-auto {
display: block;
position: absolute;
- width: $MAX_LENGTH;
+ width: 10000px;
max-width: 0;
padding: 0 .8rem;
border-left: 4px solid $global-border-color;
@@ -60,7 +60,7 @@
left: 0;
visibility: hidden;
- [header-desktop=normal] & {
+ [data-header-desktop=normal] & {
top: 5rem;
}
@@ -116,7 +116,7 @@
display: none;
margin: .8rem 0;
- &[kept=true] {
+ &[data-kept=true] {
display: block;
}
diff --git a/assets/css/_variables.scss b/assets/css/_variables.scss
index 28585aec..d0031aee 100644
--- a/assets/css/_variables.scss
+++ b/assets/css/_variables.scss
@@ -4,10 +4,10 @@
// ========== Global ========== //
// Font and Line Height
-$global-font-family: system-ui, -apple-system, BlinkMacSystemFont, PingFang SC, Microsoft YaHei UI, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, Helvetica, Arial, sans-serif !default;
-$global-font-size: 16px;
-$global-font-weight: 400;
-$global-line-height: 1.5rem;
+$global-font-family: system-ui, -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei UI", "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", Helvetica, Arial, sans-serif !default;
+$global-font-size: 16px !default;
+$global-font-weight: 400 !default;
+$global-line-height: 1.5rem !default;
// Color of the background
$global-background-color: #fff !default;
@@ -52,14 +52,14 @@ $selection-color-dark: rgba(50, 112, 194, 0.4) !default;
// Height of the header
$header-height: 3.5rem !default;
+// Font family and size of the header title
+$header-title-font-family: $global-font-family !default;
+$header-title-font-size: 1.5rem !default;
+
// Color of the header background
$header-background-color: #f8f8f8 !default;
$header-background-color-dark: #252627 !default;
-// Font style of the header title
-$header-title-font-family: $global-font-family !default;
-$header-title-font-size: 1.5rem !default;
-
// Color of the hover header item
$header-hover-color: #161209 !default;
$header-hover-color-dark: #fff !default;
@@ -106,6 +106,10 @@ $pagination-link-hover-color-dark: #fff !default;
// ========== Pagination ========== //
// ========== Code ========== //
+// Font family and size of the code
+$code-font-family: "Source Code Pro", Menlo, Consolas, Monaco, monospace, $global-font-family !default;
+$code-font-size: .875rem !default;
+
// Color of the code
$code-color: #E74C3C !default;
$code-color-dark: #E5BF78 !default;
@@ -117,250 +121,228 @@ $code-background-color-dark: #272C34 !default;
$code-info-color: #9c9c9c !default;
$code-info-color-dark: #b1b0b0 !default;
-// Font size of the code
-$code-font-size: .875rem !default;
-
-// Font family of the code
-$code-font-family: Source Code Pro, Menlo, Consolas, Monaco, monospace, $global-font-family !default;
-
-// Code type map
-$code-type-map: (
- // Custom code type
- language-bash: 'Bash',
- language-c: 'C',
- language-cs: 'C#',
- language-cpp: 'C++',
- language-clojure: 'Clojure',
- language-coffeescript: 'CoffeeScript',
- language-css: 'CSS',
- language-dart: 'Dart',
- language-diff: 'Diff',
- language-erlang: 'Erlang',
- language-go: 'Go',
- language-go-html-template: 'Go HTML Template',
- language-groovy: 'Groovy',
- language-haskell: 'Haskell',
- language-html: 'HTML',
- language-http: 'HTTP',
- language-xml: 'XML',
- language-java: 'Java',
- language-js: 'JavaScript',
- language-javascript: 'JavaScript',
- language-json: 'JSON',
- language-kotlin: 'Kotlin',
- language-latex: 'LaTeX',
- language-less: 'Less',
- language-lisp: 'Lisp',
- language-lua: 'Lua',
- language-makefile: 'Makefile',
- language-markdown: 'Markdown',
- language-matlab: 'Matlab',
- language-objectivec: 'Objective-C',
- language-php: 'PHP',
- language-perl: 'Perl',
- language-python: 'Python',
- language-r: 'R',
- language-ruby: 'Ruby',
- language-rust: 'Rust',
- language-scala: 'Scala',
- language-scss: 'Scss',
- language-shell: 'Shell',
- language-sql: 'SQL',
- language-swift: 'Swift',
- language-tex: 'TeX',
- language-toml: 'TOML',
- language-ts: 'TypeScript',
- language-typescript: 'TypeScript',
- language-vue: 'Vue',
- language-yml: 'YAML',
- language-yaml: 'YAML',
-) !default;
+// Code type list
+$code-type-list:
+ "language-bash" "Bash",
+ "language-c" "C",
+ "language-cs" "C#",
+ "language-cpp" "C++",
+ "language-clojure" "Clojure",
+ "language-coffeescript" "CoffeeScript",
+ "language-css" "CSS",
+ "language-dart" "Dart",
+ "language-diff" "Diff",
+ "language-erlang" "Erlang",
+ "language-go" "Go",
+ "language-go-html-template" "Go HTML Template",
+ "language-groovy" "Groovy",
+ "language-haskell" "Haskell",
+ "language-html" "HTML",
+ "language-http" "HTTP",
+ "language-xml" "XML",
+ "language-java" "Java",
+ "language-js" "JavaScript",
+ "language-javascript" "JavaScript",
+ "language-json" "JSON",
+ "language-kotlin" "Kotlin",
+ "language-latex" "LaTeX",
+ "language-less" "Less",
+ "language-lisp" "Lisp",
+ "language-lua" "Lua",
+ "language-makefile" "Makefile",
+ "language-markdown" "Markdown",
+ "language-matlab" "Matlab",
+ "language-objectivec" "Objective-C",
+ "language-php" "PHP",
+ "language-perl" "Perl",
+ "language-powershell" "PowerShell",
+ "language-posh" "PowerShell",
+ "language-pwsh" "PowerShell",
+ "language-python" "Python",
+ "language-r" "R",
+ "language-ruby" "Ruby",
+ "language-rust" "Rust",
+ "language-scala" "Scala",
+ "language-scss" "Scss",
+ "language-shell" "Shell",
+ "language-sql" "SQL",
+ "language-swift" "Swift",
+ "language-tex" "TeX",
+ "language-toml" "TOML",
+ "language-ts" "TypeScript",
+ "language-typescript" "TypeScript",
+ "language-vue" "Vue",
+ "language-yml" "YAML",
+ "language-yaml" "YAML",
+ !default;
// Color map of the code highlight
$code-highlight-color-map: (
- /* Parentheses */ 'p': #a9a9b3,
- /* Keyword */ 'k': #b501a9,
- /* KeywordConstant */ 'kc': #b501a9,
- /* KeywordDeclaration */ 'kd': #b501a9,
- /* KeywordNamespace */ 'kn': #b501a9,
- /* KeywordPseudo */ 'kp': #b501a9,
- /* KeywordReserved */ 'kr': #b501a9,
- /* KeywordType */ 'kt': #b501a9,
- /* Name */ 'n': #333333,
- /* NameAttribute */ 'na': #2b77fa,
- /* NameBuiltin */ 'nb': #f74840,
- /* NameBuiltinPseudo */ 'bp': #f74840,
- /* NameClass */ 'nc': #cb8100,
- /* NameConstant */ 'no': #2b77fa,
- /* NameDecorator */ 'nd': #0086c1,
- /* NameEntity */ 'ni': #2b77fa,
- /* NameException */ 'ne': #2b77fa,
- /* NameFunction */ 'nf': #2b77fa,
- /* NameFunctionMagic */ 'fm': #1ccad6,
- /* NameLabel */ 'nl': #2b77fa,
- /* NameNamespace */ 'nn': #2b77fa,
- /* NameOther */ 'nx': #333333,
- /* NameProperty */ 'py': #2b77fa,
- /* NameTag */ 'nt': #2b77fa,
- /* NameVariable */ 'nv': #2b77fa,
- /* NameVariableClass */ 'vc': #2b77fa,
- /* NameVariableGlobal */ 'vg': #2b77fa,
- /* NameVariableInstance */ 'vi': #2b77fa,
- /* NameVariableMagic */ 'vm': #2b77fa,
- /* Literal */ 'l': #2aa198,
- /* LiteralDate */ 'ld': #2aa198,
- /* LiteralString */ 's': #24a443,
- /* LiteralStringAffix */ 'sa': #24a443,
- /* LiteralStringBacktick */ 'sb': #24a443,
- /* LiteralStringChar */ 'sc': #24a443,
- /* LiteralStringDelimiter */ 'dl': #24a443,
- /* LiteralStringDoc */ 'sd': #24a443,
- /* LiteralStringDouble */ 's2': #24a443,
- /* LiteralStringEscape */ 'se': #24a443,
- /* LiteralStringHeredoc */ 'sh': #24a443,
- /* LiteralStringInterpol */ 'si': #24a443,
- /* LiteralStringOther */ 'sx': #24a443,
- /* LiteralStringRegex */ 'sr': #24a443,
- /* LiteralStringSingle */ 's1': #24a443,
- /* LiteralStringSymbol */ 'ss': #24a443,
- /* LiteralNumber */ 'm': #e2893c,
- /* LiteralNumberBin */ 'mb': #e2893c,
- /* LiteralNumberFloat */ 'mf': #e2893c,
- /* LiteralNumberHex */ 'mh': #e2893c,
- /* LiteralNumberInteger */ 'mi': #e2893c,
- /* LiteralNumberIntegerLong */ 'il': #e2893c,
- /* LiteralNumberOct */ 'mo': #e2893c,
- /* Operator */ 'o': #f19b04,
- /* OperatorWord */ 'ow': #b501a9,
- /* Comment */ 'c': #a0a1a8,
- /* CommentHashbang */ 'ch': #a0a1a8,
- /* CommentMultiline */ 'cm': #a0a1a8,
- /* CommentSingle */ 'c1': #a0a1a8,
- /* CommentSpecial */ 'cs': #a0a1a8,
- /* CommentPreproc */ 'cp': #a0a1a8,
- /* CommentPreprocFile */ 'cpf': #a0a1a8,
- /* Generic */ 'g': #e72d40,
- /* GenericDeleted */ 'gd': #e72d40,
- /* GenericEmph */ 'ge': #e72d40,
- /* GenericError */ 'gr': #e72d40,
- /* GenericHeading */ 'gh': #e72d40,
- /* GenericInserted */ 'gi': #e72d40,
- /* GenericOutput */ 'go': #e72d40,
- /* GenericPrompt */ 'gp': #e72d40,
- /* GenericStrong */ 'gs': #e72d40,
- /* GenericSubheading */ 'gu': #e72d40,
- /* GenericTraceback */ 'gt': #e72d40,
- /* TextWhitespace */ 'w': #bbbbbb,
+ /* Parentheses */ "p": #a9a9b3,
+ /* Keyword */ "k": #b501a9,
+ /* KeywordConstant */ "kc": #b501a9,
+ /* KeywordDeclaration */ "kd": #b501a9,
+ /* KeywordNamespace */ "kn": #b501a9,
+ /* KeywordPseudo */ "kp": #b501a9,
+ /* KeywordReserved */ "kr": #b501a9,
+ /* KeywordType */ "kt": #b501a9,
+ /* Name */ "n": #333333,
+ /* NameAttribute */ "na": #2b77fa,
+ /* NameBuiltin */ "nb": #f74840,
+ /* NameBuiltinPseudo */ "bp": #f74840,
+ /* NameClass */ "nc": #cb8100,
+ /* NameConstant */ "no": #2b77fa,
+ /* NameDecorator */ "nd": #0086c1,
+ /* NameEntity */ "ni": #2b77fa,
+ /* NameException */ "ne": #2b77fa,
+ /* NameFunction */ "nf": #2b77fa,
+ /* NameFunctionMagic */ "fm": #1ccad6,
+ /* NameLabel */ "nl": #2b77fa,
+ /* NameNamespace */ "nn": #2b77fa,
+ /* NameOther */ "nx": #333333,
+ /* NameProperty */ "py": #2b77fa,
+ /* NameTag */ "nt": #2b77fa,
+ /* NameVariable */ "nv": #2b77fa,
+ /* NameVariableClass */ "vc": #2b77fa,
+ /* NameVariableGlobal */ "vg": #2b77fa,
+ /* NameVariableInstance */ "vi": #2b77fa,
+ /* NameVariableMagic */ "vm": #2b77fa,
+ /* Literal */ "l": #2aa198,
+ /* LiteralDate */ "ld": #2aa198,
+ /* LiteralString */ "s": #24a443,
+ /* LiteralStringAffix */ "sa": #24a443,
+ /* LiteralStringBacktick */ "sb": #24a443,
+ /* LiteralStringChar */ "sc": #24a443,
+ /* LiteralStringDelimiter */ "dl": #24a443,
+ /* LiteralStringDoc */ "sd": #24a443,
+ /* LiteralStringDouble */ "s2": #24a443,
+ /* LiteralStringEscape */ "se": #24a443,
+ /* LiteralStringHeredoc */ "sh": #24a443,
+ /* LiteralStringInterpol */ "si": #24a443,
+ /* LiteralStringOther */ "sx": #24a443,
+ /* LiteralStringRegex */ "sr": #24a443,
+ /* LiteralStringSingle */ "s1": #24a443,
+ /* LiteralStringSymbol */ "ss": #24a443,
+ /* LiteralNumber */ "m": #e2893c,
+ /* LiteralNumberBin */ "mb": #e2893c,
+ /* LiteralNumberFloat */ "mf": #e2893c,
+ /* LiteralNumberHex */ "mh": #e2893c,
+ /* LiteralNumberInteger */ "mi": #e2893c,
+ /* LiteralNumberIntegerLong */ "il": #e2893c,
+ /* LiteralNumberOct */ "mo": #e2893c,
+ /* Operator */ "o": #f19b04,
+ /* OperatorWord */ "ow": #b501a9,
+ /* Comment */ "c": #a0a1a8,
+ /* CommentHashbang */ "ch": #a0a1a8,
+ /* CommentMultiline */ "cm": #a0a1a8,
+ /* CommentSingle */ "c1": #a0a1a8,
+ /* CommentSpecial */ "cs": #a0a1a8,
+ /* CommentPreproc */ "cp": #a0a1a8,
+ /* CommentPreprocFile */ "cpf": #a0a1a8,
+ /* Generic */ "g": #e72d40,
+ /* GenericDeleted */ "gd": #e72d40,
+ /* GenericEmph */ "ge": #e72d40,
+ /* GenericError */ "gr": #e72d40,
+ /* GenericHeading */ "gh": #e72d40,
+ /* GenericInserted */ "gi": #e72d40,
+ /* GenericOutput */ "go": #e72d40,
+ /* GenericPrompt */ "gp": #e72d40,
+ /* GenericStrong */ "gs": #e72d40,
+ /* GenericSubheading */ "gu": #e72d40,
+ /* GenericTraceback */ "gt": #e72d40,
+ /* TextWhitespace */ "w": #bbbbbb,
) !default;
$code-highlight-color-map-dark: (
- /* Parentheses */ 'p': #a9a9b3,
- /* Keyword */ 'k': #d371e3,
- /* KeywordConstant */ 'kc': #d371e3,
- /* KeywordDeclaration */ 'kd': #d371e3,
- /* KeywordNamespace */ 'kn': #d371e3,
- /* KeywordPseudo */ 'kp': #d371e3,
- /* KeywordReserved */ 'kr': #d371e3,
- /* KeywordType */ 'kt': #d371e3,
- /* Name */ 'n': #a9b2c0,
- /* NameAttribute */ 'na': #41b0f5,
- /* NameBuiltin */ 'nb': #19b9c4,
- /* NameBuiltinPseudo */ 'bp': #ecbf6f,
- /* NameClass */ 'nc': #ecbf6f,
- /* NameConstant */ 'no': #41b0f5,
- /* NameDecorator */ 'nd': #ecbf6f,
- /* NameEntity */ 'ni': #41b0f5,
- /* NameException */ 'ne': #41b0f5,
- /* NameFunction */ 'nf': #41b0f5,
- /* NameFunctionMagic */ 'fm': #19b9c4,
- /* NameLabel */ 'nl': #41b0f5,
- /* NameNamespace */ 'nn': #41b0f5,
- /* NameOther */ 'nx': #a9a9b3,
- /* NameProperty */ 'py': #41b0f5,
- /* NameTag */ 'nt': #41b0f5,
- /* NameVariable */ 'nv': #41b0f5,
- /* NameVariableClass */ 'vc': #41b0f5,
- /* NameVariableGlobal */ 'vg': #41b0f5,
- /* NameVariableInstance */ 'vi': #41b0f5,
- /* NameVariableMagic */ 'vm': #41b0f5,
- /* Literal */ 'l': #2aa198,
- /* LiteralDate */ 'ld': #2aa198,
- /* LiteralString */ 's': #8cc570,
- /* LiteralStringAffix */ 'sa': #8cc570,
- /* LiteralStringBacktick */ 'sb': #8cc570,
- /* LiteralStringChar */ 'sc': #8cc570,
- /* LiteralStringDelimiter */ 'dl': #8cc570,
- /* LiteralStringDoc */ 'sd': #8cc570,
- /* LiteralStringDouble */ 's2': #8cc570,
- /* LiteralStringEscape */ 'se': #8cc570,
- /* LiteralStringHeredoc */ 'sh': #8cc570,
- /* LiteralStringInterpol */ 'si': #8cc570,
- /* LiteralStringOther */ 'sx': #8cc570,
- /* LiteralStringRegex */ 'sr': #8cc570,
- /* LiteralStringSingle */ 's1': #8cc570,
- /* LiteralStringSymbol */ 'ss': #8cc570,
- /* LiteralNumber */ 'm': #db985c,
- /* LiteralNumberBin */ 'mb': #db985c,
- /* LiteralNumberFloat */ 'mf': #db985c,
- /* LiteralNumberHex */ 'mh': #db985c,
- /* LiteralNumberInteger */ 'mi': #db985c,
- /* LiteralNumberIntegerLong */ 'il': #db985c,
- /* LiteralNumberOct */ 'mo': #db985c,
- /* Operator */ 'o': #ecbf6f,
- /* OperatorWord */ 'ow': #d371e3,
- /* Comment */ 'c': #7e848f,
- /* CommentHashbang */ 'ch': #7e848f,
- /* CommentMultiline */ 'cm': #7e848f,
- /* CommentSingle */ 'c1': #7e848f,
- /* CommentSpecial */ 'cs': #7e848f,
- /* CommentPreproc */ 'cp': #7e848f,
- /* CommentPreprocFile */ 'cpf': #7e848f,
- /* Generic */ 'g': #f16372,
- /* GenericDeleted */ 'gd': #f16372,
- /* GenericEmph */ 'ge': #f16372,
- /* GenericError */ 'gr': #f16372,
- /* GenericHeading */ 'gh': #f16372,
- /* GenericInserted */ 'gi': #f16372,
- /* GenericOutput */ 'go': #f16372,
- /* GenericPrompt */ 'gp': #f16372,
- /* GenericStrong */ 'gs': #f16372,
- /* GenericSubheading */ 'gu': #f16372,
- /* GenericTraceback */ 'gt': #f16372,
- /* TextWhitespace */ 'w': #bbbbbb,
+ /* Parentheses */ "p": #a9a9b3,
+ /* Keyword */ "k": #d371e3,
+ /* KeywordConstant */ "kc": #d371e3,
+ /* KeywordDeclaration */ "kd": #d371e3,
+ /* KeywordNamespace */ "kn": #d371e3,
+ /* KeywordPseudo */ "kp": #d371e3,
+ /* KeywordReserved */ "kr": #d371e3,
+ /* KeywordType */ "kt": #d371e3,
+ /* Name */ "n": #a9b2c0,
+ /* NameAttribute */ "na": #41b0f5,
+ /* NameBuiltin */ "nb": #19b9c4,
+ /* NameBuiltinPseudo */ "bp": #ecbf6f,
+ /* NameClass */ "nc": #ecbf6f,
+ /* NameConstant */ "no": #41b0f5,
+ /* NameDecorator */ "nd": #ecbf6f,
+ /* NameEntity */ "ni": #41b0f5,
+ /* NameException */ "ne": #41b0f5,
+ /* NameFunction */ "nf": #41b0f5,
+ /* NameFunctionMagic */ "fm": #19b9c4,
+ /* NameLabel */ "nl": #41b0f5,
+ /* NameNamespace */ "nn": #41b0f5,
+ /* NameOther */ "nx": #a9a9b3,
+ /* NameProperty */ "py": #41b0f5,
+ /* NameTag */ "nt": #41b0f5,
+ /* NameVariable */ "nv": #41b0f5,
+ /* NameVariableClass */ "vc": #41b0f5,
+ /* NameVariableGlobal */ "vg": #41b0f5,
+ /* NameVariableInstance */ "vi": #41b0f5,
+ /* NameVariableMagic */ "vm": #41b0f5,
+ /* Literal */ "l": #2aa198,
+ /* LiteralDate */ "ld": #2aa198,
+ /* LiteralString */ "s": #8cc570,
+ /* LiteralStringAffix */ "sa": #8cc570,
+ /* LiteralStringBacktick */ "sb": #8cc570,
+ /* LiteralStringChar */ "sc": #8cc570,
+ /* LiteralStringDelimiter */ "dl": #8cc570,
+ /* LiteralStringDoc */ "sd": #8cc570,
+ /* LiteralStringDouble */ "s2": #8cc570,
+ /* LiteralStringEscape */ "se": #8cc570,
+ /* LiteralStringHeredoc */ "sh": #8cc570,
+ /* LiteralStringInterpol */ "si": #8cc570,
+ /* LiteralStringOther */ "sx": #8cc570,
+ /* LiteralStringRegex */ "sr": #8cc570,
+ /* LiteralStringSingle */ "s1": #8cc570,
+ /* LiteralStringSymbol */ "ss": #8cc570,
+ /* LiteralNumber */ "m": #db985c,
+ /* LiteralNumberBin */ "mb": #db985c,
+ /* LiteralNumberFloat */ "mf": #db985c,
+ /* LiteralNumberHex */ "mh": #db985c,
+ /* LiteralNumberInteger */ "mi": #db985c,
+ /* LiteralNumberIntegerLong */ "il": #db985c,
+ /* LiteralNumberOct */ "mo": #db985c,
+ /* Operator */ "o": #ecbf6f,
+ /* OperatorWord */ "ow": #d371e3,
+ /* Comment */ "c": #7e848f,
+ /* CommentHashbang */ "ch": #7e848f,
+ /* CommentMultiline */ "cm": #7e848f,
+ /* CommentSingle */ "c1": #7e848f,
+ /* CommentSpecial */ "cs": #7e848f,
+ /* CommentPreproc */ "cp": #7e848f,
+ /* CommentPreprocFile */ "cpf": #7e848f,
+ /* Generic */ "g": #f16372,
+ /* GenericDeleted */ "gd": #f16372,
+ /* GenericEmph */ "ge": #f16372,
+ /* GenericError */ "gr": #f16372,
+ /* GenericHeading */ "gh": #f16372,
+ /* GenericInserted */ "gi": #f16372,
+ /* GenericOutput */ "go": #f16372,
+ /* GenericPrompt */ "gp": #f16372,
+ /* GenericStrong */ "gs": #f16372,
+ /* GenericSubheading */ "gu": #f16372,
+ /* GenericTraceback */ "gt": #f16372,
+ /* TextWhitespace */ "w": #bbbbbb,
) !default;
// ========== Code ========== //
// ========== Admonition ========== //
-// Color map of the admonition
-$admonition-color-map: (
- 'note': #448aff,
- 'abstract': #00b0ff,
- 'info': #00b8d4,
- 'tip': #00bfa5,
- 'success': #00c853,
- 'question': #64dd17,
- 'warning': #ff9100,
- 'failure': #ff5252,
- 'danger': #ff1744,
- 'bug': #f50057,
- 'example': #651fff,
- 'quote': #9e9e9e,
-) !default;
-
-// Color map of the admonition background
-$admonition-background-color-map: (
- 'note': rgba(68, 138, 255, 0.1),
- 'abstract': rgba(0, 176, 255, 0.1),
- 'info': rgba(0, 184, 212, 0.1),
- 'tip': rgba(0, 191, 165, 0.1),
- 'success': rgba(0, 200, 83, 0.1),
- 'question': rgba(100, 221, 23, 0.1),
- 'warning': rgba(255, 145, 0, 0.1),
- 'failure': rgba(255, 82, 82, 0.1),
- 'danger': rgba(255, 23, 68, 0.1),
- 'bug': rgba(245, 0, 87, 0.1),
- 'example': rgba(101, 31, 255, 0.1),
- 'quote': rgba(159, 159, 159, 0.1),
-) !default;
+// Color list of admonition [$type $color $background-color, ... ]
+$admonition-color-list:
+ "note" #448aff rgba(68, 138, 255, 0.1),
+ "abstract" #00b0ff rgba(0, 176, 255, 0.1),
+ "info" #00b8d4 rgba(83, 211, 230, 0.1),
+ "tip" #00bfa5 rgba(0, 191, 165, 0.1),
+ "success" #00c853 rgba(0, 200, 83, 0.1),
+ "question" #64dd17 rgba(100, 221, 23, 0.1),
+ "warning" #ff9100 rgba(255, 145, 0, 0.1),
+ "failure" #ff5252 rgba(255, 82, 82, 0.1),
+ "danger" #ff1744 rgba(68, 138, 255, 0.1),
+ "bug" #f50057 rgba(255, 23, 68, 0.1),
+ "example" #651fff rgba(101, 31, 255, 0.1),
+ "quote" #9e9e9e rgba(159, 159, 159, 0.1),
+ !default;
// ========== Admonition ========== //
-
-$MAX_LENGTH: 12000px;
diff --git a/assets/css/style.scss b/assets/css/style.scss
index cd685a8a..f2768bac 100644
--- a/assets/css/style.scss
+++ b/assets/css/style.scss
@@ -1,7 +1,10 @@
@charset "utf-8";
+@import "../lib/normalize/normalize";
+
@import "_variables";
@import "_override";
+@import "_core/variables";
@import "_mixin/index";
@@ -10,10 +13,9 @@
@import "_page/index";
-@import "_partial/header";
-@import "_partial/footer";
-@import "_partial/pagination";
-
+@import "_core/header";
+@import "_core/footer";
+@import "_core/pagination";
@import "_core/media";
@import "_custom";
diff --git a/assets/data/cdn/jsdelivr.yml b/assets/data/cdn/jsdelivr.yml
index 03ae099d..f56694bf 100644
--- a/assets/data/cdn/jsdelivr.yml
+++ b/assets/data/cdn/jsdelivr.yml
@@ -1,66 +1,59 @@
prefix:
libFiles: https://cdn.jsdelivr.net/npm/
- # simple-icons@2.14.0 https://github.com/simple-icons/simple-icons
- simpleIcons: https://cdn.jsdelivr.net/npm/simple-icons@2.14.0/icons/
+ # simple-icons@6.20.0 https://github.com/simple-icons/simple-icons
+ simpleIcons: https://cdn.jsdelivr.net/npm/simple-icons@6.20.0/icons/
libFiles:
- # normalize.css@8.0.1 https://github.com/necolas/normalize.css
- normalizeCSS: normalize.css@8.0.1/normalize.min.css
- # fontawesome-free@5.13.0 https://fontawesome.com/
- fontawesomeFreeCSS: '@fortawesome/fontawesome-free@5.13.0/css/all.min.css'
- # animate.css@3.7.2 https://github.com/daneden/animate.css
- animateCSS: animate.css@3.7.2/animate.min.css
- # smooth-scroll@16.1.3 https://github.com/cferdinandi/smooth-scroll
- smoothScrollJS: smooth-scroll@16.1.3/dist/smooth-scroll.min.js
- # autocomplete.js@0.37.1 https://github.com/algolia/autocomplete.js
- autocompleteJS: autocomplete.js@0.37.1/dist/autocomplete.min.js
- # lunr.js@2.3.8 https://lunrjs.com/
- lunrJS: lunr@2.3.8/lunr.min.js
- # algoliasearch@4.2.0 https://github.com/algolia/algoliasearch-client-javascript
- algoliasearchJS: algoliasearch@4.2.0/dist/algoliasearch-lite.umd.min.js
- # lazysizes@5.2.2 https://github.com/aFarkas/lazysizes
- lazysizesJS: lazysizes@5.2.2/lazysizes.min.js
+ # fontawesome-free@6.1.1 https://fontawesome.com/
+ fontawesomeFreeCSS: '@fortawesome/fontawesome-free@6.1.1/css/all.min.css'
+ # animate.css@4.1.1 https://github.com/daneden/animate.css
+ animateCSS: animate.css@4.1.1/animate.min.css
+ # autocomplete.js@0.38.1 https://github.com/algolia/autocomplete.js
+ autocompleteJS: autocomplete.js@0.38.1/dist/autocomplete.min.js
+ # lunr.js@2.3.9 https://lunrjs.com/
+ lunrJS: lunr@2.3.9/lunr.min.js
+ # algoliasearch@4.13.0 https://github.com/algolia/algoliasearch-client-javascript
+ algoliasearchJS: algoliasearch@4.13.0/dist/algoliasearch-lite.umd.min.js
+ # lazysizes@5.3.1 https://github.com/aFarkas/lazysizes
+ lazysizesJS: lazysizes@5.3.1/lazysizes.min.js
# object-fit-images@3.2.4 https://github.com/fregante/object-fit-images
objectFitImagesJS: object-fit-images@3.2.4/dist/ofi.min.js
- # twemoji@13.0.0 https://github.com/twitter/twemoji
- twemojiJS: twemoji@13.0.0/dist/twemoji.min.js
- # lightgallery.js@1.2.0 https://github.com/sachinchoolur/lightgallery.js
- # lg-thumbnail.js@1.2.0 https://github.com/sachinchoolur/lg-thumbnail.js
- # lg-zoom.js@1.2.0 https://github.com/sachinchoolur/lg-zoom.js
- lightgalleryCSS: lightgallery.js@1.2.0/dist/css/lightgallery.min.css
- lightgalleryJS: lightgallery.js@1.2.0/dist/js/lightgallery.min.js
- lightgalleryThumbnailJS: lg-thumbnail.js@1.2.0/dist/lg-thumbnail.min.js
- lightgalleryZoomJS: lg-zoom.js@1.2.0/dist/lg-zoom.min.js
- # clipboard.js@2.0.6 https://github.com/zenorocha/clipboard.js
- clipboardJS: clipboard@2.0.6/dist/clipboard.min.js
- # sharer.js@0.4.0 https://github.com/ellisonleao/sharer.js
- sharerJS: sharer.js@0.4.0/sharer.min.js
- # typeit@7.0.4 https://github.com/alexmacarthur/typeit
- typeitJS: typeit@7.0.4/dist/typeit.min.js
- # katex@0.11.1 https://katex.org/
- katexCSS: katex@0.11.1/dist/katex.min.css
- katexJS: katex@0.11.1/dist/katex.min.js
- katexAutoRenderJS: katex@0.11.1/dist/contrib/auto-render.min.js
- katexCopyTexCSS: katex@0.11.1/dist/contrib/copy-tex.min.css
- katexCopyTexJS: katex@0.11.1/dist/contrib/copy-tex.min.js
- katexMhchemJS: katex@0.11.1/dist/contrib/mhchem.min.js
- # mermaid@8.5.1 https://github.com/knsv/mermaid
- mermaidJS: mermaid@8.5.1/dist/mermaid.min.js
- # echarts@4.8.0 https://echarts.apache.org/
- echartsJS: echarts@4.8.0/dist/echarts.min.js
- echartsMacaronsJS: echarts@4.8.0/theme/macarons.min.js
- # mapbox-gl@1.10.1 https://docs.mapbox.com/mapbox-gl-js
- mapboxGLCSS: mapbox-gl@1.10.1/dist/mapbox-gl.min.css
- mapboxGLJS: mapbox-gl@1.10.1/dist/mapbox-gl.min.js
+ # twemoji@14.0.2 https://github.com/twitter/twemoji
+ twemojiJS: twemoji@14.0.2/dist/twemoji.min.js
+ # lightgallery@2.4.0 https://github.com/sachinchoolur/lightgallery
+ lightgalleryCSS: lightgallery@2.4.0/css/lightgallery-bundle.min.css
+ lightgalleryJS: lightgallery@2.4.0/lightgallery.min.js
+ lightgalleryThumbnailJS: lightgallery@2.4.0/plugins/thumbnail/lg-thumbnail.min.js
+ lightgalleryZoomJS: lightgallery@2.4.0/plugins/zoom/lg-zoom.min.js
+ # clipboard.js@2.0.11 https://github.com/zenorocha/clipboard.js
+ clipboardJS: clipboard@2.0.11/dist/clipboard.min.js
+ # sharer.js@0.5.1 https://github.com/ellisonleao/sharer.js
+ sharerJS: sharer.js@0.5.1/sharer.min.js
+ # typeit@8.5.4 https://github.com/alexmacarthur/typeit
+ typeitJS: typeit@8.5.4/dist/index.umd.js
+ # katex@0.15.3 https://katex.org/
+ katexCSS: katex@0.15.3/dist/katex.min.css
+ katexJS: katex@0.15.3/dist/katex.min.js
+ katexAutoRenderJS: katex@0.15.3/dist/contrib/auto-render.min.js
+ katexCopyTexCSS: katex@0.15.3/dist/contrib/copy-tex.min.css
+ katexCopyTexJS: katex@0.15.3/dist/contrib/copy-tex.min.js
+ katexMhchemJS: katex@0.15.3/dist/contrib/mhchem.min.js
+ # mermaid@9.1.0 https://github.com/mermaid-js/mermaid
+ mermaidJS: mermaid@9.1.0/dist/mermaid.min.js
+ # echarts@5.3.2 https://echarts.apache.org/
+ echartsJS: echarts@5.3.2/dist/echarts.min.js
+ # mapbox-gl@2.8.2 https://docs.mapbox.com/mapbox-gl-js
+ mapboxGLCSS: mapbox-gl@2.8.2/dist/mapbox-gl.min.css
+ mapboxGLJS: mapbox-gl@2.8.2/dist/mapbox-gl.min.js
# aplayer@1.10.1 https://github.com/MoePlayer/APlayer
aplayerCSS: aplayer@1.10.1/dist/APlayer.min.css
aplayerJS: aplayer@1.10.1/dist/APlayer.min.js
# meting@2.0.1 https://github.com/metowolf/MetingJS
metingJS: meting@2.0.1/dist/Meting.min.js
- # gitalk@1.6.2 https://github.com/gitalk/gitalk
- gitalkCSS: gitalk@1.6.2/dist/gitalk.min.css
- gitalkJS: gitalk@1.6.2/dist/gitalk.min.js
- # valine@1.4.14 https://valine.js.org/
- valineJS: valine@1.4.14/dist/Valine.min.js
+ # gitalk@1.7.2 https://github.com/gitalk/gitalk
+ gitalkCSS: gitalk@1.7.2/dist/gitalk.min.css
+ gitalkJS: gitalk@1.7.2/dist/gitalk.min.js
+ # valine@1.4.18 https://valine.js.org/
+ valineJS: valine@1.4.18/dist/Valine.min.js
# cookieconsent@3.1.1 https://github.com/osano/cookieconsent
cookieconsentCSS: cookieconsent@3.1.1/build/cookieconsent.min.css
cookieconsentJS: cookieconsent@3.1.1/build/cookieconsent.min.js
diff --git a/assets/data/polyfill.yml b/assets/data/polyfill.yml
index 048d555e..8ca0e462 100644
--- a/assets/data/polyfill.yml
+++ b/assets/data/polyfill.yml
@@ -4,10 +4,6 @@ theme:
- Promise
- fetch
- Element.prototype.after
-smooth-scroll:
- - Element.prototype.closest
- - requestAnimationFrame
- - CustomEvent
algoliasearch:
- Promise
- Object.entries
diff --git a/assets/data/social.yml b/assets/data/social.yml
index 7505b9d3..432987ce 100644
--- a/assets/data/social.yml
+++ b/assets/data/social.yml
@@ -156,7 +156,7 @@ stackoverflow:
Prefix: https://stackoverflow.com/users/
Title: Stack Overflow
Icon:
- Class: fab fa-codepen fa-fw
+ Class: fab fa-stack-overflow fa-fw
# 021: 微博
weibo:
@@ -452,7 +452,7 @@ thingiverse:
Prefix: https://www.thingiverse.com/
Title: Thingiverse
Icon:
- Src: svg/icons/thingiverse.svg
+ Simpleicons: thingiverse
# 058: Dev.To
devto:
@@ -491,7 +491,7 @@ bilibili:
Prefix: https://space.bilibili.com/
Title: bilibili
Icon:
- Src: svg/icons/bilibili.svg
+ Simpleicons: bilibili
# 063: Email
email:
diff --git a/assets/js/theme.js b/assets/js/theme.js
new file mode 100644
index 00000000..d5175f8b
--- /dev/null
+++ b/assets/js/theme.js
@@ -0,0 +1,1058 @@
+"use strict";
+
+function _objectDestructuringEmpty(obj) { if (obj == null) throw new TypeError("Cannot destructure undefined"); }
+
+function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
+
+function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
+
+function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
+
+function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
+
+function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
+
+function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
+
+function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
+
+function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
+
+var Util = /*#__PURE__*/function () {
+ function Util() {
+ _classCallCheck(this, Util);
+ }
+
+ _createClass(Util, [{
+ key: "forEach",
+ value: function forEach(elements, handler) {
+ elements = elements || [];
+
+ for (var i = 0; i < elements.length; i++) {
+ handler(elements[i]);
+ }
+ }
+ }, {
+ key: "getScrollTop",
+ value: function getScrollTop() {
+ return document.documentElement && document.documentElement.scrollTop || document.body.scrollTop;
+ }
+ }, {
+ key: "isMobile",
+ value: function isMobile() {
+ return window.matchMedia('only screen and (max-width: 680px)').matches;
+ }
+ }, {
+ key: "isTocStatic",
+ value: function isTocStatic() {
+ return window.matchMedia('only screen and (max-width: 960px)').matches;
+ }
+ }, {
+ key: "animateCSS",
+ value: function animateCSS(element, animation, reserved, callback) {
+ var _element$classList;
+
+ if (!Array.isArray(animation)) animation = [animation];
+
+ (_element$classList = element.classList).add.apply(_element$classList, ['animate__animated'].concat(_toConsumableArray(animation)));
+
+ var handler = function handler() {
+ var _element$classList2;
+
+ (_element$classList2 = element.classList).remove.apply(_element$classList2, ['animate__animated'].concat(_toConsumableArray(animation)));
+
+ element.removeEventListener('animationend', handler);
+ if (typeof callback === 'function') callback();
+ };
+
+ if (!reserved) element.addEventListener('animationend', handler, false);
+ }
+ }]);
+
+ return Util;
+}();
+
+var Theme = /*#__PURE__*/function () {
+ function Theme() {
+ _classCallCheck(this, Theme);
+
+ this.config = window.config;
+ this.data = this.config.data;
+ this.isDark = document.body.getAttribute('theme') === 'dark';
+ this.util = new Util();
+ this.newScrollTop = this.util.getScrollTop();
+ this.oldScrollTop = this.newScrollTop;
+ this.scrollEventSet = new Set();
+ this.resizeEventSet = new Set();
+ this.switchThemeEventSet = new Set();
+ this.clickMaskEventSet = new Set();
+ if (window.objectFitImages) objectFitImages();
+ }
+
+ _createClass(Theme, [{
+ key: "initRaw",
+ value: function initRaw() {
+ var _this = this;
+
+ this.util.forEach(document.querySelectorAll('[data-raw]'), function ($raw) {
+ $raw.innerHTML = _this.data[$raw.id];
+ });
+ }
+ }, {
+ key: "initSVGIcon",
+ value: function initSVGIcon() {
+ this.util.forEach(document.querySelectorAll('[data-svg-src]'), function ($icon) {
+ fetch($icon.getAttribute('data-svg-src')).then(function (response) {
+ return response.text();
+ }).then(function (svg) {
+ var $temp = document.createElement('div');
+ $temp.insertAdjacentHTML('afterbegin', svg);
+ var $svg = $temp.firstChild;
+ $svg.setAttribute('data-svg-src', $icon.getAttribute('data-svg-src'));
+ $svg.classList.add('icon');
+ var $titleElements = $svg.getElementsByTagName('title');
+ if ($titleElements.length) $svg.removeChild($titleElements[0]);
+ $icon.parentElement.replaceChild($svg, $icon);
+ }).catch(function (err) {
+ console.error(err);
+ });
+ });
+ }
+ }, {
+ key: "initTwemoji",
+ value: function initTwemoji() {
+ if (this.config.twemoji) twemoji.parse(document.body);
+ }
+ }, {
+ key: "initMenuMobile",
+ value: function initMenuMobile() {
+ var $menuToggleMobile = document.getElementById('menu-toggle-mobile');
+ var $menuMobile = document.getElementById('menu-mobile');
+ $menuToggleMobile.addEventListener('click', function () {
+ document.body.classList.toggle('blur');
+ $menuToggleMobile.classList.toggle('active');
+ $menuMobile.classList.toggle('active');
+ }, false);
+
+ this._menuMobileOnClickMask = this._menuMobileOnClickMask || function () {
+ $menuToggleMobile.classList.remove('active');
+ $menuMobile.classList.remove('active');
+ };
+
+ this.clickMaskEventSet.add(this._menuMobileOnClickMask);
+ }
+ }, {
+ key: "initSwitchTheme",
+ value: function initSwitchTheme() {
+ var _this2 = this;
+
+ this.util.forEach(document.getElementsByClassName('theme-switch'), function ($themeSwitch) {
+ $themeSwitch.addEventListener('click', function () {
+ if (document.body.getAttribute('theme') === 'dark') document.body.setAttribute('theme', 'light');else document.body.setAttribute('theme', 'dark');
+ _this2.isDark = !_this2.isDark;
+ window.localStorage && localStorage.setItem('theme', _this2.isDark ? 'dark' : 'light');
+
+ var _iterator = _createForOfIteratorHelper(_this2.switchThemeEventSet),
+ _step;
+
+ try {
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
+ var event = _step.value;
+ event();
+ }
+ } catch (err) {
+ _iterator.e(err);
+ } finally {
+ _iterator.f();
+ }
+ }, false);
+ });
+ }
+ }, {
+ key: "initSearch",
+ value: function initSearch() {
+ var _this3 = this;
+
+ var searchConfig = this.config.search;
+ var isMobile = this.util.isMobile();
+ if (!searchConfig || isMobile && this._searchMobileOnce || !isMobile && this._searchDesktopOnce) return;
+ var maxResultLength = searchConfig.maxResultLength ? searchConfig.maxResultLength : 10;
+ var snippetLength = searchConfig.snippetLength ? searchConfig.snippetLength : 50;
+ var highlightTag = searchConfig.highlightTag ? searchConfig.highlightTag : 'em';
+ var suffix = isMobile ? 'mobile' : 'desktop';
+ var $header = document.getElementById("header-".concat(suffix));
+ var $searchInput = document.getElementById("search-input-".concat(suffix));
+ var $searchToggle = document.getElementById("search-toggle-".concat(suffix));
+ var $searchLoading = document.getElementById("search-loading-".concat(suffix));
+ var $searchClear = document.getElementById("search-clear-".concat(suffix));
+
+ if (isMobile) {
+ this._searchMobileOnce = true;
+ $searchInput.addEventListener('focus', function () {
+ document.body.classList.add('blur');
+ $header.classList.add('open');
+ }, false);
+ document.getElementById('search-cancel-mobile').addEventListener('click', function () {
+ $header.classList.remove('open');
+ document.body.classList.remove('blur');
+ document.getElementById('menu-toggle-mobile').classList.remove('active');
+ document.getElementById('menu-mobile').classList.remove('active');
+ $searchLoading.style.display = 'none';
+ $searchClear.style.display = 'none';
+ _this3._searchMobile && _this3._searchMobile.autocomplete.setVal('');
+ }, false);
+ $searchClear.addEventListener('click', function () {
+ $searchClear.style.display = 'none';
+ _this3._searchMobile && _this3._searchMobile.autocomplete.setVal('');
+ }, false);
+
+ this._searchMobileOnClickMask = this._searchMobileOnClickMask || function () {
+ $header.classList.remove('open');
+ $searchLoading.style.display = 'none';
+ $searchClear.style.display = 'none';
+ _this3._searchMobile && _this3._searchMobile.autocomplete.setVal('');
+ };
+
+ this.clickMaskEventSet.add(this._searchMobileOnClickMask);
+ } else {
+ this._searchDesktopOnce = true;
+ $searchToggle.addEventListener('click', function () {
+ document.body.classList.add('blur');
+ $header.classList.add('open');
+ $searchInput.focus();
+ }, false);
+ $searchClear.addEventListener('click', function () {
+ $searchClear.style.display = 'none';
+ _this3._searchDesktop && _this3._searchDesktop.autocomplete.setVal('');
+ }, false);
+
+ this._searchDesktopOnClickMask = this._searchDesktopOnClickMask || function () {
+ $header.classList.remove('open');
+ $searchLoading.style.display = 'none';
+ $searchClear.style.display = 'none';
+ _this3._searchDesktop && _this3._searchDesktop.autocomplete.setVal('');
+ };
+
+ this.clickMaskEventSet.add(this._searchDesktopOnClickMask);
+ }
+
+ $searchInput.addEventListener('input', function () {
+ if ($searchInput.value === '') $searchClear.style.display = 'none';else $searchClear.style.display = 'inline';
+ }, false);
+
+ var initAutosearch = function initAutosearch() {
+ var autosearch = autocomplete("#search-input-".concat(suffix), {
+ hint: false,
+ autoselect: true,
+ dropdownMenuContainer: "#search-dropdown-".concat(suffix),
+ clearOnSelected: true,
+ cssClasses: {
+ noPrefix: true
+ },
+ debug: true
+ }, {
+ name: 'search',
+ source: function source(query, callback) {
+ $searchLoading.style.display = 'inline';
+ $searchClear.style.display = 'none';
+
+ var finish = function finish(results) {
+ $searchLoading.style.display = 'none';
+ $searchClear.style.display = 'inline';
+ callback(results);
+ };
+
+ if (searchConfig.type === 'lunr') {
+ var search = function search() {
+ if (lunr.queryHandler) query = lunr.queryHandler(query);
+ var results = {};
+
+ _this3._index.search(query).forEach(function (_ref) {
+ var ref = _ref.ref,
+ metadata = _ref.matchData.metadata;
+ var matchData = _this3._indexData[ref];
+ var uri = matchData.uri,
+ title = matchData.title,
+ context = matchData.content;
+ if (results[uri]) return;
+ var position = 0;
+ Object.values(metadata).forEach(function (_ref2) {
+ var content = _ref2.content;
+
+ if (content) {
+ var matchPosition = content.position[0][0];
+ if (matchPosition < position || position === 0) position = matchPosition;
+ }
+ });
+ position -= snippetLength / 5;
+
+ if (position > 0) {
+ position += context.substr(position, 20).lastIndexOf(' ') + 1;
+ context = '...' + context.substr(position, snippetLength);
+ } else {
+ context = context.substr(0, snippetLength);
+ }
+
+ Object.keys(metadata).forEach(function (key) {
+ title = title.replace(new RegExp("(".concat(key, ")"), 'gi'), "<".concat(highlightTag, ">$1</").concat(highlightTag, ">"));
+ context = context.replace(new RegExp("(".concat(key, ")"), 'gi'), "<".concat(highlightTag, ">$1</").concat(highlightTag, ">"));
+ });
+ results[uri] = {
+ 'uri': uri,
+ 'title': title,
+ 'date': matchData.date,
+ 'context': context
+ };
+ });
+
+ return Object.values(results).slice(0, maxResultLength);
+ };
+
+ if (!_this3._index) {
+ fetch(searchConfig.lunrIndexURL).then(function (response) {
+ return response.json();
+ }).then(function (data) {
+ var indexData = {};
+ _this3._index = lunr(function () {
+ var _this4 = this;
+
+ if (searchConfig.lunrLanguageCode) this.use(lunr[searchConfig.lunrLanguageCode]);
+ this.ref('objectID');
+ this.field('title', {
+ boost: 50
+ });
+ this.field('tags', {
+ boost: 20
+ });
+ this.field('categories', {
+ boost: 20
+ });
+ this.field('content', {
+ boost: 10
+ });
+ this.metadataWhitelist = ['position'];
+ data.forEach(function (record) {
+ indexData[record.objectID] = record;
+
+ _this4.add(record);
+ });
+ });
+ _this3._indexData = indexData;
+ finish(search());
+ }).catch(function (err) {
+ console.error(err);
+ finish([]);
+ });
+ } else finish(search());
+ } else if (searchConfig.type === 'algolia') {
+ _this3._algoliaIndex = _this3._algoliaIndex || algoliasearch(searchConfig.algoliaAppID, searchConfig.algoliaSearchKey).initIndex(searchConfig.algoliaIndex);
+
+ _this3._algoliaIndex.search(query, {
+ offset: 0,
+ length: maxResultLength * 8,
+ attributesToHighlight: ['title'],
+ attributesToSnippet: ["content:".concat(snippetLength)],
+ highlightPreTag: "<".concat(highlightTag, ">"),
+ highlightPostTag: "</".concat(highlightTag, ">")
+ }).then(function (_ref3) {
+ var hits = _ref3.hits;
+ var results = {};
+ hits.forEach(function (_ref4) {
+ var uri = _ref4.uri,
+ date = _ref4.date,
+ title = _ref4._highlightResult.title,
+ content = _ref4._snippetResult.content;
+ if (results[uri] && results[uri].context.length > content.value) return;
+ results[uri] = {
+ uri: uri,
+ title: title.value,
+ date: date,
+ context: content.value
+ };
+ });
+ finish(Object.values(results).slice(0, maxResultLength));
+ }).catch(function (err) {
+ console.error(err);
+ finish([]);
+ });
+ }
+ },
+ templates: {
+ suggestion: function suggestion(_ref5) {
+ var title = _ref5.title,
+ date = _ref5.date,
+ context = _ref5.context;
+ return "<div><span class=\"suggestion-title\">".concat(title, "</span><span class=\"suggestion-date\">").concat(date, "</span></div><div class=\"suggestion-context\">").concat(context, "</div>");
+ },
+ empty: function empty(_ref6) {
+ var query = _ref6.query;
+ return "<div class=\"search-empty\">".concat(searchConfig.noResultsFound, ": <span class=\"search-query\">\"").concat(query, "\"</span></div>");
+ },
+ footer: function footer(_ref7) {
+ _objectDestructuringEmpty(_ref7);
+
+ var _ref8 = searchConfig.type === 'algolia' ? {
+ searchType: 'algolia',
+ icon: '<i class="fab fa-algolia fa-fw" aria-hidden="true"></i>',
+ href: 'https://www.algolia.com/'
+ } : {
+ searchType: 'Lunr.js',
+ icon: '',
+ href: 'https://lunrjs.com/'
+ },
+ searchType = _ref8.searchType,
+ icon = _ref8.icon,
+ href = _ref8.href;
+
+ return "<div class=\"search-footer\">Search by <a href=\"".concat(href, "\" rel=\"noopener noreffer\" target=\"_blank\">").concat(icon, " ").concat(searchType, "</a></div>");
+ }
+ }
+ });
+ autosearch.on('autocomplete:selected', function (_event, suggestion, _dataset, _context) {
+ window.location.assign(suggestion.uri);
+ });
+ if (isMobile) _this3._searchMobile = autosearch;else _this3._searchDesktop = autosearch;
+ };
+
+ if (searchConfig.lunrSegmentitURL && !document.getElementById('lunr-segmentit')) {
+ var script = document.createElement('script');
+ script.id = 'lunr-segmentit';
+ script.type = 'text/javascript';
+ script.src = searchConfig.lunrSegmentitURL;
+ script.async = true;
+
+ if (script.readyState) {
+ script.onreadystatechange = function () {
+ if (script.readyState == 'loaded' || script.readyState == 'complete') {
+ script.onreadystatechange = null;
+ initAutosearch();
+ }
+ };
+ } else {
+ script.onload = function () {
+ initAutosearch();
+ };
+ }
+
+ document.body.appendChild(script);
+ } else initAutosearch();
+ }
+ }, {
+ key: "initDetails",
+ value: function initDetails() {
+ this.util.forEach(document.getElementsByClassName('details'), function ($details) {
+ var $summary = $details.getElementsByClassName('details-summary')[0];
+ $summary.addEventListener('click', function () {
+ $details.classList.toggle('open');
+ }, false);
+ });
+ }
+ }, {
+ key: "initLightGallery",
+ value: function initLightGallery() {
+ if (this.config.lightgallery) lightGallery(document.getElementById('content'), {
+ plugins: [lgThumbnail, lgZoom],
+ selector: '.lightgallery',
+ speed: 400,
+ hideBarsDelay: 2000,
+ allowMediaOverlap: true,
+ exThumbImage: 'data-thumbnail',
+ toggleThumb: true,
+ thumbWidth: 80,
+ thumbHeight: '60px',
+ actualSize: false,
+ showZoomInOutIcons: true
+ });
+ }
+ }, {
+ key: "initHighlight",
+ value: function initHighlight() {
+ var _this5 = this;
+
+ this.util.forEach(document.querySelectorAll('.highlight > pre.chroma'), function ($preChroma) {
+ var $chroma = document.createElement('div');
+ $chroma.className = $preChroma.className;
+ var $table = document.createElement('table');
+ $chroma.appendChild($table);
+ var $tbody = document.createElement('tbody');
+ $table.appendChild($tbody);
+ var $tr = document.createElement('tr');
+ $tbody.appendChild($tr);
+ var $td = document.createElement('td');
+ $tr.appendChild($td);
+ $preChroma.parentElement.replaceChild($chroma, $preChroma);
+ $td.appendChild($preChroma);
+ });
+ this.util.forEach(document.querySelectorAll('.highlight > .chroma'), function ($chroma) {
+ var $codeElements = $chroma.querySelectorAll('pre.chroma > code');
+
+ if ($codeElements.length) {
+ var $code = $codeElements[$codeElements.length - 1];
+ var $header = document.createElement('div');
+ $header.className = 'code-header ' + $code.className.toLowerCase();
+ var $title = document.createElement('span');
+ $title.classList.add('code-title');
+ $title.insertAdjacentHTML('afterbegin', '<i class="arrow fas fa-chevron-right fa-fw" aria-hidden="true"></i>');
+ $title.addEventListener('click', function () {
+ $chroma.classList.toggle('open');
+ }, false);
+ $header.appendChild($title);
+ var $ellipses = document.createElement('span');
+ $ellipses.insertAdjacentHTML('afterbegin', '<i class="fas fa-ellipsis-h fa-fw" aria-hidden="true"></i>');
+ $ellipses.classList.add('ellipses');
+ $ellipses.addEventListener('click', function () {
+ $chroma.classList.add('open');
+ }, false);
+ $header.appendChild($ellipses);
+ var $copy = document.createElement('span');
+ $copy.insertAdjacentHTML('afterbegin', '<i class="far fa-copy fa-fw" aria-hidden="true"></i>');
+ $copy.classList.add('copy');
+ var code = $code.innerText;
+ if (_this5.config.code.maxShownLines < 0 || code.split('\n').length < _this5.config.code.maxShownLines + 2) $chroma.classList.add('open');
+
+ if (_this5.config.code.copyTitle) {
+ $copy.setAttribute('data-clipboard-text', code);
+ $copy.title = _this5.config.code.copyTitle;
+ var clipboard = new ClipboardJS($copy);
+ clipboard.on('success', function (_e) {
+ _this5.util.animateCSS($code, 'animate__flash');
+ });
+ $header.appendChild($copy);
+ }
+
+ $chroma.insertBefore($header, $chroma.firstChild);
+ }
+ });
+ }
+ }, {
+ key: "initTable",
+ value: function initTable() {
+ this.util.forEach(document.querySelectorAll('.content table'), function ($table) {
+ var $wrapper = document.createElement('div');
+ $wrapper.className = 'table-wrapper';
+ $table.parentElement.replaceChild($wrapper, $table);
+ $wrapper.appendChild($table);
+ });
+ }
+ }, {
+ key: "initHeaderLink",
+ value: function initHeaderLink() {
+ for (var num = 1; num <= 6; num++) {
+ this.util.forEach(document.querySelectorAll('.single .content > h' + num), function ($header) {
+ $header.classList.add('headerLink');
+ $header.insertAdjacentHTML('afterbegin', "<a href=\"#".concat($header.id, "\" class=\"header-mark\"></a>"));
+ });
+ }
+ }
+ }, {
+ key: "initToc",
+ value: function initToc() {
+ var _this6 = this;
+
+ var $tocCore = document.getElementById('TableOfContents');
+ if ($tocCore === null) return;
+
+ if (document.getElementById('toc-static').getAttribute('data-kept') || this.util.isTocStatic()) {
+ var $tocContentStatic = document.getElementById('toc-content-static');
+
+ if ($tocCore.parentElement !== $tocContentStatic) {
+ $tocCore.parentElement.removeChild($tocCore);
+ $tocContentStatic.appendChild($tocCore);
+ }
+
+ if (this._tocOnScroll) this.scrollEventSet.delete(this._tocOnScroll);
+ } else {
+ var $tocContentAuto = document.getElementById('toc-content-auto');
+
+ if ($tocCore.parentElement !== $tocContentAuto) {
+ $tocCore.parentElement.removeChild($tocCore);
+ $tocContentAuto.appendChild($tocCore);
+ }
+
+ var $toc = document.getElementById('toc-auto');
+ var $page = document.getElementsByClassName('page')[0];
+ var rect = $page.getBoundingClientRect();
+ $toc.style.left = "".concat(rect.left + rect.width + 20, "px");
+ $toc.style.maxWidth = "".concat($page.getBoundingClientRect().left - 20, "px");
+ $toc.style.visibility = 'visible';
+ var $tocLinkElements = $tocCore.querySelectorAll('a:first-child');
+ var $tocLiElements = $tocCore.getElementsByTagName('li');
+ var $headerLinkElements = document.getElementsByClassName('headerLink');
+ var headerIsFixed = document.body.getAttribute('data-header-desktop') !== 'normal';
+ var headerHeight = document.getElementById('header-desktop').offsetHeight;
+ var TOP_SPACING = 20 + (headerIsFixed ? headerHeight : 0);
+ var minTocTop = $toc.offsetTop;
+ var minScrollTop = minTocTop - TOP_SPACING + (headerIsFixed ? 0 : headerHeight);
+
+ this._tocOnScroll = this._tocOnScroll || function () {
+ var footerTop = document.getElementById('post-footer').offsetTop;
+ var maxTocTop = footerTop - $toc.getBoundingClientRect().height;
+ var maxScrollTop = maxTocTop - TOP_SPACING + (headerIsFixed ? 0 : headerHeight);
+
+ if (_this6.newScrollTop < minScrollTop) {
+ $toc.style.position = 'absolute';
+ $toc.style.top = "".concat(minTocTop, "px");
+ } else if (_this6.newScrollTop > maxScrollTop) {
+ $toc.style.position = 'absolute';
+ $toc.style.top = "".concat(maxTocTop, "px");
+ } else {
+ $toc.style.position = 'fixed';
+ $toc.style.top = "".concat(TOP_SPACING, "px");
+ }
+
+ _this6.util.forEach($tocLinkElements, function ($tocLink) {
+ $tocLink.classList.remove('active');
+ });
+
+ _this6.util.forEach($tocLiElements, function ($tocLi) {
+ $tocLi.classList.remove('has-active');
+ });
+
+ var INDEX_SPACING = 20 + (headerIsFixed ? headerHeight : 0);
+ var activeTocIndex = $headerLinkElements.length - 1;
+
+ for (var i = 0; i < $headerLinkElements.length - 1; i++) {
+ var thisTop = $headerLinkElements[i].getBoundingClientRect().top;
+ var nextTop = $headerLinkElements[i + 1].getBoundingClientRect().top;
+
+ if (i == 0 && thisTop > INDEX_SPACING || thisTop <= INDEX_SPACING && nextTop > INDEX_SPACING) {
+ activeTocIndex = i;
+ break;
+ }
+ }
+
+ if (activeTocIndex !== -1) {
+ $tocLinkElements[activeTocIndex].classList.add('active');
+ var $parent = $tocLinkElements[activeTocIndex].parentElement;
+
+ while ($parent !== $tocCore) {
+ $parent.classList.add('has-active');
+ $parent = $parent.parentElement.parentElement;
+ }
+ }
+ };
+
+ this._tocOnScroll();
+
+ this.scrollEventSet.add(this._tocOnScroll);
+ }
+ }
+ }, {
+ key: "initMath",
+ value: function initMath() {
+ if (this.config.math) renderMathInElement(document.body, this.config.math);
+ }
+ }, {
+ key: "initMermaid",
+ value: function initMermaid() {
+ var _this7 = this;
+
+ this._mermaidOnSwitchTheme = this._mermaidOnSwitchTheme || function () {
+ var $mermaidElements = document.getElementsByClassName('mermaid');
+
+ if ($mermaidElements.length) {
+ mermaid.initialize({
+ startOnLoad: false,
+ theme: _this7.isDark ? 'dark' : 'neutral',
+ securityLevel: 'loose'
+ });
+
+ _this7.util.forEach($mermaidElements, function ($mermaid) {
+ mermaid.render('svg-' + $mermaid.id, _this7.data[$mermaid.id], function (svgCode) {
+ $mermaid.innerHTML = svgCode;
+ }, $mermaid);
+ });
+ }
+ };
+
+ this.switchThemeEventSet.add(this._mermaidOnSwitchTheme);
+
+ this._mermaidOnSwitchTheme();
+ }
+ }, {
+ key: "initEcharts",
+ value: function initEcharts() {
+ var _this8 = this;
+
+ if (this.config.echarts) {
+ echarts.registerTheme('light', this.config.echarts.lightTheme);
+ echarts.registerTheme('dark', this.config.echarts.darkTheme);
+
+ this._echartsOnSwitchTheme = this._echartsOnSwitchTheme || function () {
+ _this8._echartsArr = _this8._echartsArr || [];
+
+ for (var i = 0; i < _this8._echartsArr.length; i++) {
+ _this8._echartsArr[i].dispose();
+ }
+
+ _this8._echartsArr = [];
+
+ _this8.util.forEach(document.getElementsByClassName('echarts'), function ($echarts) {
+ var chart = echarts.init($echarts, _this8.isDark ? 'dark' : 'light', {
+ renderer: 'svg'
+ });
+ chart.setOption(JSON.parse(_this8.data[$echarts.id]));
+
+ _this8._echartsArr.push(chart);
+ });
+ };
+
+ this.switchThemeEventSet.add(this._echartsOnSwitchTheme);
+
+ this._echartsOnSwitchTheme();
+
+ this._echartsOnResize = this._echartsOnResize || function () {
+ for (var i = 0; i < _this8._echartsArr.length; i++) {
+ _this8._echartsArr[i].resize();
+ }
+ };
+
+ this.resizeEventSet.add(this._echartsOnResize);
+ }
+ }
+ }, {
+ key: "initMapbox",
+ value: function initMapbox() {
+ var _this9 = this;
+
+ if (this.config.mapbox) {
+ mapboxgl.accessToken = this.config.mapbox.accessToken;
+ mapboxgl.setRTLTextPlugin(this.config.mapbox.RTLTextPlugin);
+ this._mapboxArr = this._mapboxArr || [];
+ this.util.forEach(document.getElementsByClassName('mapbox'), function ($mapbox) {
+ var _this9$data$$mapbox$i = _this9.data[$mapbox.id],
+ lng = _this9$data$$mapbox$i.lng,
+ lat = _this9$data$$mapbox$i.lat,
+ zoom = _this9$data$$mapbox$i.zoom,
+ lightStyle = _this9$data$$mapbox$i.lightStyle,
+ darkStyle = _this9$data$$mapbox$i.darkStyle,
+ marked = _this9$data$$mapbox$i.marked,
+ navigation = _this9$data$$mapbox$i.navigation,
+ geolocate = _this9$data$$mapbox$i.geolocate,
+ scale = _this9$data$$mapbox$i.scale,
+ fullscreen = _this9$data$$mapbox$i.fullscreen;
+ var mapbox = new mapboxgl.Map({
+ container: $mapbox,
+ center: [lng, lat],
+ zoom: zoom,
+ minZoom: .2,
+ style: _this9.isDark ? darkStyle : lightStyle,
+ attributionControl: false
+ });
+
+ if (marked) {
+ new mapboxgl.Marker().setLngLat([lng, lat]).addTo(mapbox);
+ }
+
+ if (navigation) {
+ mapbox.addControl(new mapboxgl.NavigationControl(), 'bottom-right');
+ }
+
+ if (geolocate) {
+ mapbox.addControl(new mapboxgl.GeolocateControl({
+ positionOptions: {
+ enableHighAccuracy: true
+ },
+ showUserLocation: true,
+ trackUserLocation: true
+ }), 'bottom-right');
+ }
+
+ if (scale) {
+ mapbox.addControl(new mapboxgl.ScaleControl());
+ }
+
+ if (fullscreen) {
+ mapbox.addControl(new mapboxgl.FullscreenControl());
+ }
+
+ mapbox.addControl(new MapboxLanguage());
+
+ _this9._mapboxArr.push(mapbox);
+ });
+
+ this._mapboxOnSwitchTheme = this._mapboxOnSwitchTheme || function () {
+ _this9.util.forEach(_this9._mapboxArr, function (mapbox) {
+ var $mapbox = mapbox.getContainer();
+ var _this9$data$$mapbox$i2 = _this9.data[$mapbox.id],
+ lightStyle = _this9$data$$mapbox$i2.lightStyle,
+ darkStyle = _this9$data$$mapbox$i2.darkStyle;
+ mapbox.setStyle(_this9.isDark ? darkStyle : lightStyle);
+ mapbox.addControl(new MapboxLanguage());
+ });
+ };
+
+ this.switchThemeEventSet.add(this._mapboxOnSwitchTheme);
+ }
+ }
+ }, {
+ key: "initTypeit",
+ value: function initTypeit() {
+ var _this10 = this;
+
+ if (this.config.typeit) {
+ var typeitConfig = this.config.typeit;
+ var speed = typeitConfig.speed ? typeitConfig.speed : 100;
+ var cursorSpeed = typeitConfig.cursorSpeed ? typeitConfig.cursorSpeed : 1000;
+ var cursorChar = typeitConfig.cursorChar ? typeitConfig.cursorChar : '|';
+ Object.values(typeitConfig.data).forEach(function (group) {
+ var typeone = function typeone(i) {
+ var id = group[i];
+ var instance = new TypeIt("#".concat(id), {
+ strings: _this10.data[id],
+ speed: speed,
+ lifeLike: true,
+ cursorSpeed: cursorSpeed,
+ cursorChar: cursorChar,
+ waitUntilVisible: true,
+ afterComplete: function afterComplete() {
+ if (i === group.length - 1) {
+ if (typeitConfig.duration >= 0) window.setTimeout(function () {
+ instance.destroy();
+ }, typeitConfig.duration);
+ return;
+ }
+
+ instance.destroy();
+ typeone(i + 1);
+ }
+ }).go();
+ };
+
+ typeone(0);
+ });
+ }
+ }
+ }, {
+ key: "initComment",
+ value: function initComment() {
+ var _this11 = this;
+
+ if (this.config.comment) {
+ if (this.config.comment.gitalk) {
+ this.config.comment.gitalk.body = decodeURI(window.location.href);
+ var gitalk = new Gitalk(this.config.comment.gitalk);
+ gitalk.render('gitalk');
+ }
+
+ if (this.config.comment.valine) new Valine(this.config.comment.valine);
+
+ if (this.config.comment.utterances) {
+ var utterancesConfig = this.config.comment.utterances;
+ var script = document.createElement('script');
+ script.src = 'https://utteranc.es/client.js';
+ script.type = 'text/javascript';
+ script.setAttribute('repo', utterancesConfig.repo);
+ script.setAttribute('issue-term', utterancesConfig.issueTerm);
+ if (utterancesConfig.label) script.setAttribute('label', utterancesConfig.label);
+ script.setAttribute('theme', this.isDark ? utterancesConfig.darkTheme : utterancesConfig.lightTheme);
+ script.crossOrigin = 'anonymous';
+ script.async = true;
+ document.getElementById('utterances').appendChild(script);
+
+ this._utterancesOnSwitchTheme = this._utterancesOnSwitchTheme || function () {
+ var message = {
+ type: 'set-theme',
+ theme: _this11.isDark ? utterancesConfig.darkTheme : utterancesConfig.lightTheme
+ };
+ var iframe = document.querySelector('.utterances-frame');
+ iframe.contentWindow.postMessage(message, 'https://utteranc.es');
+ };
+
+ this.switchThemeEventSet.add(this._utterancesOnSwitchTheme);
+ }
+ }
+ }
+ }, {
+ key: "initCookieconsent",
+ value: function initCookieconsent() {
+ if (this.config.cookieconsent) cookieconsent.initialise(this.config.cookieconsent);
+ }
+ }, {
+ key: "onScroll",
+ value: function onScroll() {
+ var _this12 = this;
+
+ var $headers = [];
+ if (document.body.getAttribute('data-header-desktop') === 'auto') $headers.push(document.getElementById('header-desktop'));
+ if (document.body.getAttribute('data-header-mobile') === 'auto') $headers.push(document.getElementById('header-mobile'));
+
+ if (document.getElementById('comments')) {
+ var $viewComments = document.getElementById('view-comments');
+ $viewComments.href = "#comments";
+ $viewComments.style.display = 'block';
+ }
+
+ var $fixedButtons = document.getElementById('fixed-buttons');
+ var ACCURACY = 20,
+ MINIMUM = 100;
+ window.addEventListener('scroll', function () {
+ _this12.newScrollTop = _this12.util.getScrollTop();
+ var scroll = _this12.newScrollTop - _this12.oldScrollTop;
+
+ var isMobile = _this12.util.isMobile();
+
+ _this12.util.forEach($headers, function ($header) {
+ if (scroll > ACCURACY) {
+ $header.classList.remove('animate__fadeInDown');
+
+ _this12.util.animateCSS($header, ['animate__fadeOutUp', 'animate__faster'], true);
+ } else if (scroll < -ACCURACY) {
+ $header.classList.remove('animate__fadeOutUp');
+
+ _this12.util.animateCSS($header, ['animate__fadeInDown', 'animate__faster'], true);
+ }
+ });
+
+ if (_this12.newScrollTop > MINIMUM) {
+ if (isMobile && scroll > ACCURACY) {
+ $fixedButtons.classList.remove('animate__fadeIn');
+
+ _this12.util.animateCSS($fixedButtons, ['animate__fadeOut', 'animate__faster'], true);
+ } else if (!isMobile || scroll < -ACCURACY) {
+ $fixedButtons.style.display = 'block';
+ $fixedButtons.classList.remove('animate__fadeOut');
+
+ _this12.util.animateCSS($fixedButtons, ['animate__fadeIn', 'animate__faster'], true);
+ }
+ } else {
+ if (!isMobile) {
+ $fixedButtons.classList.remove('animate__fadeIn');
+
+ _this12.util.animateCSS($fixedButtons, ['animate__fadeOut', 'animate__faster'], true);
+ }
+
+ $fixedButtons.style.display = 'none';
+ }
+
+ var _iterator2 = _createForOfIteratorHelper(_this12.scrollEventSet),
+ _step2;
+
+ try {
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
+ var event = _step2.value;
+ event();
+ }
+ } catch (err) {
+ _iterator2.e(err);
+ } finally {
+ _iterator2.f();
+ }
+
+ _this12.oldScrollTop = _this12.newScrollTop;
+ }, false);
+ }
+ }, {
+ key: "onResize",
+ value: function onResize() {
+ var _this13 = this;
+
+ window.addEventListener('resize', function () {
+ if (!_this13._resizeTimeout) {
+ _this13._resizeTimeout = window.setTimeout(function () {
+ _this13._resizeTimeout = null;
+
+ var _iterator3 = _createForOfIteratorHelper(_this13.resizeEventSet),
+ _step3;
+
+ try {
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
+ var event = _step3.value;
+ event();
+ }
+ } catch (err) {
+ _iterator3.e(err);
+ } finally {
+ _iterator3.f();
+ }
+
+ _this13.initToc();
+
+ _this13.initMermaid();
+
+ _this13.initSearch();
+ }, 100);
+ }
+ }, false);
+ }
+ }, {
+ key: "onClickMask",
+ value: function onClickMask() {
+ var _this14 = this;
+
+ document.getElementById('mask').addEventListener('click', function () {
+ var _iterator4 = _createForOfIteratorHelper(_this14.clickMaskEventSet),
+ _step4;
+
+ try {
+ for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
+ var event = _step4.value;
+ event();
+ }
+ } catch (err) {
+ _iterator4.e(err);
+ } finally {
+ _iterator4.f();
+ }
+
+ document.body.classList.remove('blur');
+ }, false);
+ }
+ }, {
+ key: "init",
+ value: function init() {
+ var _this15 = this;
+
+ try {
+ this.initRaw();
+ this.initSVGIcon();
+ this.initTwemoji();
+ this.initMenuMobile();
+ this.initSwitchTheme();
+ this.initSearch();
+ this.initDetails();
+ this.initLightGallery();
+ this.initHighlight();
+ this.initTable();
+ this.initHeaderLink();
+ this.initMath();
+ this.initMermaid();
+ this.initEcharts();
+ this.initTypeit();
+ this.initMapbox();
+ this.initCookieconsent();
+ } catch (err) {
+ console.error(err);
+ }
+
+ window.setTimeout(function () {
+ _this15.initToc();
+
+ _this15.initComment();
+
+ _this15.onScroll();
+
+ _this15.onResize();
+
+ _this15.onClickMask();
+ }, 100);
+ }
+ }]);
+
+ return Theme;
+}();
+
+var themeInit = function themeInit() {
+ var theme = new Theme();
+ theme.init();
+};
+
+if (document.readyState !== 'loading') {
+ themeInit();
+} else {
+ document.addEventListener('DOMContentLoaded', themeInit, false);
+}
diff --git a/assets/js/theme.min.js b/assets/js/theme.min.js
deleted file mode 100644
index 800c9253..00000000
--- a/assets/js/theme.min.js
+++ /dev/null
@@ -1,3 +0,0 @@
-"use strict";function _objectDestructuringEmpty(a){if(null==a)throw new TypeError("Cannot destructure undefined")}function _createForOfIteratorHelper(a){if("undefined"==typeof Symbol||null==a[Symbol.iterator]){if(Array.isArray(a)||(a=_unsupportedIterableToArray(a))){var b=0,c=function(){};return{s:c,n:function n(){return b>=a.length?{done:!0}:{done:!1,value:a[b++]}},e:function e(a){throw a},f:c}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var d,e,f=!0,g=!1;return{s:function s(){d=a[Symbol.iterator]()},n:function n(){var a=d.next();return f=a.done,a},e:function e(a){g=!0,e=a},f:function f(){try{f||null==d.return||d.return()}finally{if(g)throw e}}}}function _toConsumableArray(a){return _arrayWithoutHoles(a)||_iterableToArray(a)||_unsupportedIterableToArray(a)||_nonIterableSpread()}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(a,b){if(a){if("string"==typeof a)return _arrayLikeToArray(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);return"Object"===c&&a.constructor&&(c=a.constructor.name),"Map"===c||"Set"===c?Array.from(c):"Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)?_arrayLikeToArray(a,b):void 0}}function _iterableToArray(a){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(a))return Array.from(a)}function _arrayWithoutHoles(a){if(Array.isArray(a))return _arrayLikeToArray(a)}function _arrayLikeToArray(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c<b;c++)d[c]=a[c];return d}function _classCallCheck(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function _defineProperties(a,b){for(var c,d=0;d<b.length;d++)c=b[d],c.enumerable=c.enumerable||!1,c.configurable=!0,"value"in c&&(c.writable=!0),Object.defineProperty(a,c.key,c)}function _createClass(a,b,c){return b&&_defineProperties(a.prototype,b),c&&_defineProperties(a,c),a}var Util=/*#__PURE__*/function(){function a(){_classCallCheck(this,a)}return _createClass(a,[{key:"forEach",value:function forEach(a,b){a=a||[];for(var c=0;c<a.length;c++)b(a[c])}},{key:"getScrollTop",value:function getScrollTop(){return document.documentElement&&document.documentElement.scrollTop||document.body.scrollTop}},{key:"isMobile",value:function isMobile(){return window.matchMedia("only screen and (max-width: 680px)").matches}},{key:"isTocStatic",value:function isTocStatic(){return window.matchMedia("only screen and (max-width: 960px)").matches}},{key:"animateCSS",value:function animateCSS(a,b,c,d){var e;Array.isArray(b)||(b=[b]),(e=a.classList).add.apply(e,["animated"].concat(_toConsumableArray(b)));var f=function(){var c;(c=a.classList).remove.apply(c,["animated"].concat(_toConsumableArray(b))),a.removeEventListener("animationend",f),"function"==typeof d&&d()};c||a.addEventListener("animationend",f,!1)}}]),a}(),Theme=/*#__PURE__*/function(){function a(){_classCallCheck(this,a),this.config=window.config,this.data=this.config.data,this.isDark="dark"===document.body.getAttribute("theme"),this.util=new Util,this.newScrollTop=this.util.getScrollTop(),this.oldScrollTop=this.newScrollTop,this.scrollEventSet=new Set,this.resizeEventSet=new Set,this.switchThemeEventSet=new Set,this.clickMaskEventSet=new Set,window.objectFitImages&&objectFitImages()}return _createClass(a,[{key:"initSVGIcon",value:function initSVGIcon(){this.util.forEach(document.querySelectorAll("[data-svg-src]"),function(a){fetch(a.getAttribute("data-svg-src")).then(function(a){return a.text()}).then(function(b){var c=document.createElement("div");c.insertAdjacentHTML("afterbegin",b);var d=c.firstChild;d.setAttribute("data-svg-src",a.getAttribute("data-svg-src")),d.classList.add("icon");var e=d.getElementsByTagName("title");e.length&&d.removeChild(e[0]),a.parentElement.replaceChild(d,a)}).catch(function(a){console.error(a)})})}},{key:"initTwemoji",value:function initTwemoji(){this.config.twemoji&&twemoji.parse(document.body)}},{key:"initMenuMobile",value:function initMenuMobile(){var a=document.getElementById("menu-toggle-mobile"),b=document.getElementById("menu-mobile");a.addEventListener("click",function(){document.body.classList.toggle("blur"),a.classList.toggle("active"),b.classList.toggle("active")},!1),this._menuMobileOnClickMask=this._menuMobileOnClickMask||function(){a.classList.remove("active"),b.classList.remove("active")},this.clickMaskEventSet.add(this._menuMobileOnClickMask)}},{key:"initSwitchTheme",value:function initSwitchTheme(){var a=this;this.util.forEach(document.getElementsByClassName("theme-switch"),function(b){b.addEventListener("click",function(){"dark"===document.body.getAttribute("theme")?document.body.setAttribute("theme","light"):document.body.setAttribute("theme","dark"),a.isDark=!a.isDark,window.localStorage&&localStorage.setItem("theme",a.isDark?"dark":"light");var b,c=_createForOfIteratorHelper(a.switchThemeEventSet);try{for(c.s();!(b=c.n()).done;){var d=b.value;d()}}catch(a){c.e(a)}finally{c.f()}},!1)})}},{key:"initSearch",value:function initSearch(){var a=this,b=this.config.search,c=this.util.isMobile();if(!(!b||c&&this._searchMobileOnce||!c&&this._searchDesktopOnce)){var d=b.maxResultLength?b.maxResultLength:10,e=b.snippetLength?b.snippetLength:50,f=b.highlightTag?b.highlightTag:"em",g=c?"mobile":"desktop",h=document.getElementById("header-".concat(g)),i=document.getElementById("search-input-".concat(g)),j=document.getElementById("search-toggle-".concat(g)),k=document.getElementById("search-loading-".concat(g)),l=document.getElementById("search-clear-".concat(g));c?(this._searchMobileOnce=!0,i.addEventListener("focus",function(){document.body.classList.add("blur"),h.classList.add("open")},!1),document.getElementById("search-cancel-mobile").addEventListener("click",function(){h.classList.remove("open"),document.body.classList.remove("blur"),document.getElementById("menu-toggle-mobile").classList.remove("active"),document.getElementById("menu-mobile").classList.remove("active"),k.style.display="none",l.style.display="none",a._searchMobile&&a._searchMobile.autocomplete.setVal("")},!1),l.addEventListener("click",function(){l.style.display="none",a._searchMobile&&a._searchMobile.autocomplete.setVal("")},!1),this._searchMobileOnClickMask=this._searchMobileOnClickMask||function(){h.classList.remove("open"),k.style.display="none",l.style.display="none",a._searchMobile&&a._searchMobile.autocomplete.setVal("")},this.clickMaskEventSet.add(this._searchMobileOnClickMask)):(this._searchDesktopOnce=!0,j.addEventListener("click",function(){document.body.classList.add("blur"),h.classList.add("open"),i.focus()},!1),l.addEventListener("click",function(){l.style.display="none",a._searchDesktop&&a._searchDesktop.autocomplete.setVal("")},!1),this._searchDesktopOnClickMask=this._searchDesktopOnClickMask||function(){h.classList.remove("open"),k.style.display="none",l.style.display="none",a._searchDesktop&&a._searchDesktop.autocomplete.setVal("")},this.clickMaskEventSet.add(this._searchDesktopOnClickMask)),i.addEventListener("input",function(){l.style.display=""===i.value?"none":"inline"},!1);var m=function(){var h=autocomplete("#search-input-".concat(g),{hint:!1,autoselect:!0,dropdownMenuContainer:"#search-dropdown-".concat(g),clearOnSelected:!0,cssClasses:{noPrefix:!0},debug:!0},{name:"search",source:function source(c,g){k.style.display="inline",l.style.display="none";var h=function(a){k.style.display="none",l.style.display="inline",g(a)};if("lunr"===b.type){var i=function(){lunr.queryHandler&&(c=lunr.queryHandler(c));var b={};return a._index.search(c).forEach(function(c){var d=c.ref,g=c.matchData.metadata,h=a._indexData[d],i=h.uri,j=h.title,k=h.content;if(!b[i]){var l=0;Object.values(g).forEach(function(a){var b=a.content;if(b){var c=b.position[0][0];(c<l||0===l)&&(l=c)}}),l-=e/5,0<l?(l+=k.substr(l,20).lastIndexOf(" ")+1,k="..."+k.substr(l,e)):k=k.substr(0,e),Object.keys(g).forEach(function(a){j=j.replace(new RegExp("(".concat(a,")"),"gi"),"<".concat(f,">$1</").concat(f,">")),k=k.replace(new RegExp("(".concat(a,")"),"gi"),"<".concat(f,">$1</").concat(f,">"))}),b[i]={uri:i,title:j,date:h.date,context:k}}}),Object.values(b).slice(0,d)};a._index?h(i()):fetch(b.lunrIndexURL).then(function(a){return a.json()}).then(function(c){var d={};a._index=lunr(function(){var a=this;b.lunrLanguageCode&&this.use(lunr[b.lunrLanguageCode]),this.ref("objectID"),this.field("title",{boost:50}),this.field("tags",{boost:20}),this.field("categories",{boost:20}),this.field("content",{boost:10}),this.metadataWhitelist=["position"],c.forEach(function(b){d[b.objectID]=b,a.add(b)})}),a._indexData=d,h(i())}).catch(function(a){console.error(a),h([])})}else"algolia"===b.type&&(a._algoliaIndex=a._algoliaIndex||algoliasearch(b.algoliaAppID,b.algoliaSearchKey).initIndex(b.algoliaIndex),a._algoliaIndex.search(c,{offset:0,length:8*d,attributesToHighlight:["title"],attributesToSnippet:["content:".concat(e)],highlightPreTag:"<".concat(f,">"),highlightPostTag:"</".concat(f,">")}).then(function(a){var b=a.hits,c={};b.forEach(function(a){var b=a.uri,d=a.date,e=a._highlightResult.title,f=a._snippetResult.content;c[b]&&c[b].context.length>f.value||(c[b]={uri:b,title:e.value,date:d,context:f.value})}),h(Object.values(c).slice(0,d))}).catch(function(a){console.error(a),h([])}))},templates:{suggestion:function suggestion(a){var b=a.title,c=a.date,d=a.context;return"<div><span class=\"suggestion-title\">".concat(b,"</span><span class=\"suggestion-date\">").concat(c,"</span></div><div class=\"suggestion-context\">").concat(d,"</div>")},empty:function empty(a){var c=a.query;return"<div class=\"search-empty\">".concat(b.noResultsFound,": <span class=\"search-query\">\"").concat(c,"\"</span></div>")},footer:function footer(a){_objectDestructuringEmpty(a);var c="algolia"===b.type?{searchType:"algolia",icon:"<i class=\"fab fa-algolia fa-fw\"></i>",href:"https://www.algolia.com/"}:{searchType:"Lunr.js",icon:"",href:"https://lunrjs.com/"},d=c.searchType,e=c.icon,f=c.href;return"<div class=\"search-footer\">Search by <a href=\"".concat(f,"\" rel=\"noopener noreffer\" target=\"_blank\">").concat(e," ").concat(d,"</a></div>")}}});h.on("autocomplete:selected",function(a,b){window.location.assign(b.uri)}),c?a._searchMobile=h:a._searchDesktop=h};if(b.lunrSegmentitURL&&!document.getElementById("lunr-segmentit")){var n=document.createElement("script");n.id="lunr-segmentit",n.type="text/javascript",n.src=b.lunrSegmentitURL,n.async=!0,n.readyState?n.onreadystatechange=function(){("loaded"==n.readyState||"complete"==n.readyState)&&(n.onreadystatechange=null,m())}:n.onload=function(){m()},document.body.appendChild(n)}else m()}}},{key:"initDetails",value:function initDetails(){this.util.forEach(document.getElementsByClassName("details"),function(a){var b=a.getElementsByClassName("details-summary")[0];b.addEventListener("click",function(){a.classList.toggle("open")},!1)})}},{key:"initLightGallery",value:function initLightGallery(){this.config.lightGallery&&lightGallery(document.getElementById("content"),this.config.lightGallery)}},{key:"initHighlight",value:function initHighlight(){var a=this;this.util.forEach(document.querySelectorAll(".highlight > pre.chroma"),function(a){var b=document.createElement("div");b.className=a.className;var c=document.createElement("table");b.appendChild(c);var d=document.createElement("tbody");c.appendChild(d);var e=document.createElement("tr");d.appendChild(e);var f=document.createElement("td");e.appendChild(f),a.parentElement.replaceChild(b,a),f.appendChild(a)}),this.util.forEach(document.querySelectorAll(".highlight > .chroma"),function(b){var c=b.querySelectorAll("pre.chroma > code");if(c.length){var d=c[c.length-1],e=document.createElement("div");e.className="code-header "+d.className.toLowerCase();var f=document.createElement("span");f.classList.add("code-title"),f.insertAdjacentHTML("afterbegin","<i class=\"arrow fas fa-chevron-right fa-fw\"></i>"),f.addEventListener("click",function(){b.classList.toggle("open")},!1),e.appendChild(f);var g=document.createElement("span");g.insertAdjacentHTML("afterbegin","<i class=\"fas fa-ellipsis-h fa-fw\"></i>"),g.classList.add("ellipses"),g.addEventListener("click",function(){b.classList.add("open")},!1),e.appendChild(g);var h=document.createElement("span");h.insertAdjacentHTML("afterbegin","<i class=\"far fa-copy fa-fw\"></i>"),h.classList.add("copy");var i=d.innerText;if((0>a.config.code.maxShownLines||i.split("\n").length<a.config.code.maxShownLines+2)&&b.classList.add("open"),a.config.code.copyTitle){h.setAttribute("data-clipboard-text",i),h.title=a.config.code.copyTitle;var j=new ClipboardJS(h);j.on("success",function(){a.util.animateCSS(d,"flash")}),e.appendChild(h)}b.insertBefore(e,b.firstChild)}})}},{key:"initTable",value:function initTable(){this.util.forEach(document.querySelectorAll(".content table"),function(a){var b=document.createElement("div");b.className="table-wrapper",a.parentElement.replaceChild(b,a),b.appendChild(a)})}},{key:"initHeaderLink",value:function initHeaderLink(){for(var a=1;6>=a;a++)this.util.forEach(document.querySelectorAll(".single .content > h"+a),function(a){a.classList.add("headerLink"),a.insertAdjacentHTML("afterbegin","<a href=\"#".concat(a.id,"\" class=\"header-mark\"></a>"))})}},{key:"initToc",value:function initToc(){var a=this,b=document.getElementById("TableOfContents");if(null!==b)if(document.getElementById("toc-static").getAttribute("kept")||this.util.isTocStatic()){var o=document.getElementById("toc-content-static");b.parentElement!==o&&(b.parentElement.removeChild(b),o.appendChild(b)),this._tocOnScroll&&this.scrollEventSet.delete(this._tocOnScroll)}else{var p=document.getElementById("toc-content-auto");b.parentElement!==p&&(b.parentElement.removeChild(b),p.appendChild(b));var c=document.getElementById("toc-auto"),d=document.getElementsByClassName("page")[0],e=d.getBoundingClientRect();c.style.left="".concat(e.left+e.width+20,"px"),c.style.maxWidth="".concat(d.getBoundingClientRect().left-20,"px"),c.style.visibility="visible";var f=b.querySelectorAll("a:first-child"),g=b.getElementsByTagName("li"),h=document.getElementsByClassName("headerLink"),j="normal"!==document.body.getAttribute("header-desktop"),k=document.getElementById("header-desktop").offsetHeight,l=20+(j?k:0),m=c.offsetTop,n=m-l+(j?0:k);this._tocOnScroll=this._tocOnScroll||function(){var d=document.getElementById("post-footer").offsetTop,e=d-c.getBoundingClientRect().height,o=e-l+(j?0:k);a.newScrollTop<n?(c.style.position="absolute",c.style.top="".concat(m,"px")):a.newScrollTop>o?(c.style.position="absolute",c.style.top="".concat(e,"px")):(c.style.position="fixed",c.style.top="".concat(l,"px")),a.util.forEach(f,function(a){a.classList.remove("active")}),a.util.forEach(g,function(a){a.classList.remove("has-active")});for(var p=20+(j?k:0),q=h.length-1,r=0;r<h.length-1;r++){var s=h[r].getBoundingClientRect().top,t=h[r+1].getBoundingClientRect().top;if(0==r&&s>p||s<=p&&t>p){q=r;break}}if(-1!==q){f[q].classList.add("active");for(var u=f[q].parentElement;u!==b;)u.classList.add("has-active"),u=u.parentElement.parentElement}},this._tocOnScroll(),this.scrollEventSet.add(this._tocOnScroll)}}},{key:"initMath",value:function initMath(){this.config.math&&renderMathInElement(document.body,this.config.math)}},{key:"initMermaid",value:function initMermaid(){var a=this,b=document.getElementsByClassName("mermaid");b.length&&(mermaid.initialize({startOnLoad:!1,theme:"null"}),this.util.forEach(b,function(b){mermaid.mermaidAPI.render("svg-"+b.id,a.data[b.id],function(a){b.insertAdjacentHTML("afterbegin",a)},b)}))}},{key:"initEcharts",value:function initEcharts(){var a=this;this._echartsOnSwitchTheme=this._echartsOnSwitchTheme||function(){a._echartsArr=a._echartsArr||[];for(var b=0;b<a._echartsArr.length;b++)a._echartsArr[b].dispose();a._echartsArr=[],a.util.forEach(document.getElementsByClassName("echarts"),function(b){var c=echarts.init(b,a.isDark?"dark":"macarons",{renderer:"svg"});c.setOption(JSON.parse(a.data[b.id])),a._echartsArr.push(c)})},this.switchThemeEventSet.add(this._echartsOnSwitchTheme),this._echartsOnSwitchTheme(),this._echartsOnResize=this._echartsOnResize||function(){for(var b=0;b<a._echartsArr.length;b++)a._echartsArr[b].resize()},this.resizeEventSet.add(this._echartsOnResize)}},{key:"initMapbox",value:function initMapbox(){var a=this;this.config.mapbox&&(mapboxgl.accessToken=this.config.mapbox.accessToken,mapboxgl.setRTLTextPlugin(this.config.mapbox.RTLTextPlugin),this._mapboxArr=this._mapboxArr||[],this.util.forEach(document.getElementsByClassName("mapbox"),function(b){var c=a.data[b.id],d=c.lng,e=c.lat,f=c.zoom,g=c.lightStyle,h=c.darkStyle,i=c.marked,j=c.navigation,k=c.geolocate,l=c.scale,m=c.fullscreen,n=new mapboxgl.Map({container:b,center:[d,e],zoom:f,minZoom:.2,style:a.isDark?h:g,attributionControl:!1});i&&new mapboxgl.Marker().setLngLat([d,e]).addTo(n),j&&n.addControl(new mapboxgl.NavigationControl,"bottom-right"),k&&n.addControl(new mapboxgl.GeolocateControl({positionOptions:{enableHighAccuracy:!0},showUserLocation:!0,trackUserLocation:!0}),"bottom-right"),l&&n.addControl(new mapboxgl.ScaleControl),m&&n.addControl(new mapboxgl.FullscreenControl),n.addControl(new MapboxLanguage),a._mapboxArr.push(n)}),this._mapboxOnSwitchTheme=this._mapboxOnSwitchTheme||function(){a.util.forEach(a._mapboxArr,function(b){var c=b.getContainer(),d=a.data[c.id],e=d.lightStyle,f=d.darkStyle;b.setStyle(a.isDark?f:e),b.addControl(new MapboxLanguage)})},this.switchThemeEventSet.add(this._mapboxOnSwitchTheme))}},{key:"initTypeit",value:function initTypeit(){var a=this;if(this.config.typeit){var b=this.config.typeit,c=b.speed?b.speed:100,d=b.cursorSpeed?b.cursorSpeed:1e3,e=b.cursorChar?b.cursorChar:"|";Object.values(b.data).forEach(function(f){var g=function(h){var i=f[h],j=new TypeIt("#".concat(i),{strings:a.data[i],speed:c,lifeLike:!0,cursorSpeed:d,cursorChar:e,waitUntilVisible:!0,afterComplete:function afterComplete(){return h===f.length-1?void(0<=b.duration&&window.setTimeout(function(){j.destroy()},b.duration)):void(j.destroy(),g(h+1))}}).go()};g(0)})}}},{key:"initComment",value:function initComment(){var a=this;if(this.config.comment){if(this.config.comment.gitalk){this.config.comment.gitalk.body=decodeURI(window.location.href);var d=new Gitalk(this.config.comment.gitalk);d.render("gitalk")}if(this.config.comment.valine&&new Valine(this.config.comment.valine),this.config.comment.utterances){var b=this.config.comment.utterances,c=document.createElement("script");c.src="https://utteranc.es/client.js",c.type="text/javascript",c.setAttribute("repo",b.repo),c.setAttribute("issue-term",b.issueTerm),b.label&&c.setAttribute("label",b.label),c.setAttribute("theme",this.isDark?b.darkTheme:b.lightTheme),c.crossOrigin="anonymous",c.async=!0,document.getElementById("utterances").appendChild(c),this._utterancesOnSwitchTheme=this._utterancesOnSwitchTheme||function(){var c={type:"set-theme",theme:a.isDark?b.darkTheme:b.lightTheme},d=document.querySelector(".utterances-frame");d.contentWindow.postMessage(c,"https://utteranc.es")},this.switchThemeEventSet.add(this._utterancesOnSwitchTheme)}}}},{key:"initSmoothScroll",value:function initSmoothScroll(){SmoothScroll&&new SmoothScroll("[href^=\"#\"]",{speed:300,speedAsDuration:!0,header:"#header-desktop"})}},{key:"initCookieconsent",value:function initCookieconsent(){this.config.cookieconsent&&cookieconsent.initialise(this.config.cookieconsent)}},{key:"onScroll",value:function onScroll(){var a=this,b=[];if("auto"===document.body.getAttribute("header-desktop")&&b.push(document.getElementById("header-desktop")),"auto"===document.body.getAttribute("header-mobile")&&b.push(document.getElementById("header-mobile")),document.getElementById("comments")){var e=document.getElementById("view-comments");e.href="#comments",e.style.display="block"}var c=document.getElementById("fixed-buttons"),d=20;window.addEventListener("scroll",function(){a.newScrollTop=a.util.getScrollTop();var e=a.newScrollTop-a.oldScrollTop,f=a.util.isMobile();a.util.forEach(b,function(b){e>d?(b.classList.remove("fadeInDown"),a.util.animateCSS(b,["fadeOutUp","faster"],!0)):e<-d&&(b.classList.remove("fadeOutUp"),a.util.animateCSS(b,["fadeInDown","faster"],!0))}),a.newScrollTop>100?f&&e>d?(c.classList.remove("fadeIn"),a.util.animateCSS(c,["fadeOut","faster"],!0)):(!f||e<-d)&&(c.style.display="block",c.classList.remove("fadeOut"),a.util.animateCSS(c,["fadeIn","faster"],!0)):(!f&&(c.classList.remove("fadeIn"),a.util.animateCSS(c,["fadeOut","faster"],!0)),c.style.display="none");var g,h=_createForOfIteratorHelper(a.scrollEventSet);try{for(h.s();!(g=h.n()).done;){var i=g.value;i()}}catch(a){h.e(a)}finally{h.f()}a.oldScrollTop=a.newScrollTop},!1)}},{key:"onResize",value:function onResize(){var a=this;window.addEventListener("resize",function(){a._resizeTimeout||(a._resizeTimeout=window.setTimeout(function(){a._resizeTimeout=null;var b,c=_createForOfIteratorHelper(a.resizeEventSet);try{for(c.s();!(b=c.n()).done;){var d=b.value;d()}}catch(a){c.e(a)}finally{c.f()}a.initToc(),a.initMermaid(),a.initSearch()},100))},!1)}},{key:"onClickMask",value:function onClickMask(){var a=this;document.getElementById("mask").addEventListener("click",function(){var b,c=_createForOfIteratorHelper(a.clickMaskEventSet);try{for(c.s();!(b=c.n()).done;){var d=b.value;d()}}catch(a){c.e(a)}finally{c.f()}document.body.classList.remove("blur")},!1)}},{key:"init",value:function init(){var a=this;try{this.initSVGIcon(),this.initTwemoji(),this.initMenuMobile(),this.initSwitchTheme(),this.initSearch(),this.initDetails(),this.initLightGallery(),this.initHighlight(),this.initTable(),this.initHeaderLink(),this.initSmoothScroll(),this.initMath(),this.initMermaid(),this.initEcharts(),this.initTypeit(),this.initMapbox(),this.initCookieconsent()}catch(a){console.error(a)}window.setTimeout(function(){a.initToc(),a.initComment(),a.onScroll(),a.onResize(),a.onClickMask()},100)}}]),a}(),themeInit=function(){var a=new Theme;a.init()};"loading"===document.readyState?document.addEventListener("DOMContentLoaded",themeInit,!1):themeInit();
-
-//# sourceMappingURL=theme.min.js.map \ No newline at end of file
diff --git a/assets/js/theme.min.js.map b/assets/js/theme.min.js.map
deleted file mode 100644
index 98d65629..00000000
--- a/assets/js/theme.min.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../../src/js/theme.js"],"names":[],"mappings":"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","file":"theme.min.js","sourcesContent":["class Util {\n forEach(elements, handler) {\n elements = elements || [];\n for (let i = 0; i < elements.length; i++) handler(elements[i]);\n }\n\n getScrollTop() {\n return (document.documentElement && document.documentElement.scrollTop) || document.body.scrollTop;\n }\n\n isMobile() {\n return window.matchMedia('only screen and (max-width: 680px)').matches;\n }\n\n isTocStatic() {\n return window.matchMedia('only screen and (max-width: 960px)').matches;\n }\n\n animateCSS(element, animation, reserved, callback) {\n if (!Array.isArray(animation)) animation = [animation];\n element.classList.add('animated', ...animation);\n const handler = () => {\n element.classList.remove('animated', ...animation);\n element.removeEventListener('animationend', handler);\n if (typeof callback === 'function') callback();\n };\n if (!reserved) element.addEventListener('animationend', handler, false);\n }\n}\n\nclass Theme {\n constructor() {\n this.config = window.config;\n this.data = this.config.data;\n this.isDark = document.body.getAttribute('theme') === 'dark';\n this.util = new Util();\n this.newScrollTop = this.util.getScrollTop();\n this.oldScrollTop = this.newScrollTop;\n this.scrollEventSet = new Set();\n this.resizeEventSet = new Set();\n this.switchThemeEventSet = new Set();\n this.clickMaskEventSet = new Set();\n if (window.objectFitImages) objectFitImages();\n }\n\n initSVGIcon() {\n this.util.forEach(document.querySelectorAll('[data-svg-src]'), $icon => {\n fetch($icon.getAttribute('data-svg-src'))\n .then(response => response.text())\n .then(svg => {\n const $temp = document.createElement('div');\n $temp.insertAdjacentHTML('afterbegin', svg);\n const $svg = $temp.firstChild;\n $svg.setAttribute('data-svg-src', $icon.getAttribute('data-svg-src'));\n $svg.classList.add('icon');\n const $titleElements = $svg.getElementsByTagName('title');\n if ($titleElements.length) $svg.removeChild($titleElements[0]);\n $icon.parentElement.replaceChild($svg, $icon);\n })\n .catch(err => { console.error(err); });\n });\n }\n\n initTwemoji() {\n if (this.config.twemoji) twemoji.parse(document.body);\n }\n\n initMenuMobile() {\n const $menuToggleMobile = document.getElementById('menu-toggle-mobile');\n const $menuMobile = document.getElementById('menu-mobile');\n $menuToggleMobile.addEventListener('click', () => {\n document.body.classList.toggle('blur');\n $menuToggleMobile.classList.toggle('active');\n $menuMobile.classList.toggle('active');\n }, false);\n this._menuMobileOnClickMask = this._menuMobileOnClickMask || (() => {\n $menuToggleMobile.classList.remove('active');\n $menuMobile.classList.remove('active');\n });\n this.clickMaskEventSet.add(this._menuMobileOnClickMask);\n }\n\n initSwitchTheme() {\n this.util.forEach(document.getElementsByClassName('theme-switch'), $themeSwitch => {\n $themeSwitch.addEventListener('click', () => {\n if (document.body.getAttribute('theme') === 'dark') document.body.setAttribute('theme', 'light');\n else document.body.setAttribute('theme', 'dark');\n this.isDark = !this.isDark;\n window.localStorage && localStorage.setItem('theme', this.isDark ? 'dark' : 'light');\n for (let event of this.switchThemeEventSet) event();\n }, false);\n });\n }\n\n initSearch() {\n const searchConfig = this.config.search;\n const isMobile = this.util.isMobile();\n if (!searchConfig || isMobile && this._searchMobileOnce || !isMobile && this._searchDesktopOnce) return;\n\n const maxResultLength = searchConfig.maxResultLength ? searchConfig.maxResultLength : 10;\n const snippetLength = searchConfig.snippetLength ? searchConfig.snippetLength : 50;\n const highlightTag = searchConfig.highlightTag ? searchConfig.highlightTag : 'em';\n\n const suffix = isMobile ? 'mobile' : 'desktop';\n const $header = document.getElementById(`header-${suffix}`);\n const $searchInput = document.getElementById(`search-input-${suffix}`);\n const $searchToggle = document.getElementById(`search-toggle-${suffix}`);\n const $searchLoading = document.getElementById(`search-loading-${suffix}`);\n const $searchClear = document.getElementById(`search-clear-${suffix}`);\n if (isMobile) {\n this._searchMobileOnce = true;\n $searchInput.addEventListener('focus', () => {\n document.body.classList.add('blur');\n $header.classList.add('open');\n }, false);\n document.getElementById('search-cancel-mobile').addEventListener('click', () => {\n $header.classList.remove('open');\n document.body.classList.remove('blur');\n document.getElementById('menu-toggle-mobile').classList.remove('active');\n document.getElementById('menu-mobile').classList.remove('active');\n $searchLoading.style.display = 'none';\n $searchClear.style.display = 'none';\n this._searchMobile && this._searchMobile.autocomplete.setVal('');\n }, false);\n $searchClear.addEventListener('click', () => {\n $searchClear.style.display = 'none';\n this._searchMobile && this._searchMobile.autocomplete.setVal('');\n }, false);\n this._searchMobileOnClickMask = this._searchMobileOnClickMask || (() => {\n $header.classList.remove('open');\n $searchLoading.style.display = 'none';\n $searchClear.style.display = 'none';\n this._searchMobile && this._searchMobile.autocomplete.setVal('');\n });\n this.clickMaskEventSet.add(this._searchMobileOnClickMask);\n } else {\n this._searchDesktopOnce = true;\n $searchToggle.addEventListener('click', () => {\n document.body.classList.add('blur');\n $header.classList.add('open');\n $searchInput.focus();\n }, false);\n $searchClear.addEventListener('click', () => {\n $searchClear.style.display = 'none';\n this._searchDesktop && this._searchDesktop.autocomplete.setVal('');\n }, false);\n this._searchDesktopOnClickMask = this._searchDesktopOnClickMask || (() => {\n $header.classList.remove('open');\n $searchLoading.style.display = 'none';\n $searchClear.style.display = 'none';\n this._searchDesktop && this._searchDesktop.autocomplete.setVal('');\n });\n this.clickMaskEventSet.add(this._searchDesktopOnClickMask);\n }\n $searchInput.addEventListener('input', () => {\n if ($searchInput.value === '') $searchClear.style.display = 'none';\n else $searchClear.style.display = 'inline';\n }, false);\n\n const initAutosearch = () => {\n const autosearch = autocomplete(`#search-input-${suffix}`, {\n hint: false,\n autoselect: true,\n dropdownMenuContainer: `#search-dropdown-${suffix}`,\n clearOnSelected: true,\n cssClasses: { noPrefix: true },\n debug: true,\n }, {\n name: 'search',\n source: (query, callback) => {\n $searchLoading.style.display = 'inline';\n $searchClear.style.display = 'none';\n const finish = (results) => {\n $searchLoading.style.display = 'none';\n $searchClear.style.display = 'inline';\n callback(results);\n };\n if (searchConfig.type === 'lunr') {\n const search = () => {\n if (lunr.queryHandler) query = lunr.queryHandler(query);\n const results = {};\n this._index.search(query).forEach(({ ref, matchData: { metadata } }) => {\n const matchData = this._indexData[ref];\n let { uri, title, content: context } = matchData;\n if (results[uri]) return;\n let position = 0;\n Object.values(metadata).forEach(({ content }) => {\n if (content) {\n const matchPosition = content.position[0][0];\n if (matchPosition < position || position === 0) position = matchPosition;\n }\n });\n position -= snippetLength / 5;\n if (position > 0) {\n position += context.substr(position, 20).lastIndexOf(' ') + 1;\n context = '...' + context.substr(position, snippetLength);\n } else {\n context = context.substr(0, snippetLength);\n }\n Object.keys(metadata).forEach(key => {\n title = title.replace(new RegExp(`(${key})`, 'gi'), `<${highlightTag}>$1</${highlightTag}>`);\n context = context.replace(new RegExp(`(${key})`, 'gi'), `<${highlightTag}>$1</${highlightTag}>`);\n });\n results[uri] = {\n 'uri': uri,\n 'title' : title,\n 'date' : matchData.date,\n 'context' : context,\n };\n });\n return Object.values(results).slice(0, maxResultLength);\n }\n if (!this._index) {\n fetch(searchConfig.lunrIndexURL)\n .then(response => response.json())\n .then(data => {\n const indexData = {};\n this._index = lunr(function () {\n if (searchConfig.lunrLanguageCode) this.use(lunr[searchConfig.lunrLanguageCode]);\n this.ref('objectID');\n this.field('title', { boost: 50 });\n this.field('tags', { boost: 20 });\n this.field('categories', { boost: 20 });\n this.field('content', { boost: 10 });\n this.metadataWhitelist = ['position'];\n data.forEach((record) => {\n indexData[record.objectID] = record;\n this.add(record);\n });\n });\n this._indexData = indexData;\n finish(search());\n }).catch(err => {\n console.error(err);\n finish([]);\n });\n } else finish(search());\n } else if (searchConfig.type === 'algolia') {\n this._algoliaIndex = this._algoliaIndex || algoliasearch(searchConfig.algoliaAppID, searchConfig.algoliaSearchKey).initIndex(searchConfig.algoliaIndex);\n this._algoliaIndex\n .search(query, {\n offset: 0,\n length: maxResultLength * 8,\n attributesToHighlight: ['title'],\n attributesToSnippet: [`content:${snippetLength}`],\n highlightPreTag: `<${highlightTag}>`,\n highlightPostTag: `</${highlightTag}>`,\n })\n .then(({ hits }) => {\n const results = {};\n hits.forEach(({ uri, date, _highlightResult: { title }, _snippetResult: { content } }) => {\n if (results[uri] && results[uri].context.length > content.value) return;\n results[uri] = {\n uri: uri,\n title: title.value,\n date: date,\n context: content.value,\n };\n });\n finish(Object.values(results).slice(0, maxResultLength));\n })\n .catch(err => {\n console.error(err);\n finish([]);\n });\n }\n },\n templates: {\n suggestion: ({ title, date, context }) => `<div><span class=\"suggestion-title\">${title}</span><span class=\"suggestion-date\">${date}</span></div><div class=\"suggestion-context\">${context}</div>`,\n empty: ({ query }) => `<div class=\"search-empty\">${searchConfig.noResultsFound}: <span class=\"search-query\">\"${query}\"</span></div>`,\n footer: ({}) => {\n const { searchType, icon, href } = searchConfig.type === 'algolia' ? {\n searchType: 'algolia',\n icon: '<i class=\"fab fa-algolia fa-fw\"></i>',\n href: 'https://www.algolia.com/',\n } : {\n searchType: 'Lunr.js',\n icon: '',\n href: 'https://lunrjs.com/',\n };\n return `<div class=\"search-footer\">Search by <a href=\"${href}\" rel=\"noopener noreffer\" target=\"_blank\">${icon} ${searchType}</a></div>`;},\n },\n });\n autosearch.on('autocomplete:selected', (_event, suggestion, _dataset, _context) => {\n window.location.assign(suggestion.uri);\n });\n if (isMobile) this._searchMobile = autosearch;\n else this._searchDesktop = autosearch;\n };\n if (searchConfig.lunrSegmentitURL && !document.getElementById('lunr-segmentit')) {\n const script = document.createElement('script');\n script.id = 'lunr-segmentit';\n script.type = 'text/javascript';\n script.src = searchConfig.lunrSegmentitURL;\n script.async = true;\n if (script.readyState) {\n script.onreadystatechange = () => {\n if (script.readyState == 'loaded' || script.readyState == 'complete'){\n script.onreadystatechange = null;\n initAutosearch();\n }\n };\n } else {\n script.onload = () => {\n initAutosearch();\n };\n }\n document.body.appendChild(script);\n } else initAutosearch();\n }\n\n initDetails() {\n this.util.forEach(document.getElementsByClassName('details'), $details => {\n const $summary = $details.getElementsByClassName('details-summary')[0];\n $summary.addEventListener('click', () => {\n $details.classList.toggle('open');\n }, false);\n });\n }\n\n initLightGallery() {\n if (this.config.lightGallery) lightGallery(document.getElementById('content'), this.config.lightGallery);\n }\n\n initHighlight() {\n this.util.forEach(document.querySelectorAll('.highlight > pre.chroma'), $preChroma => {\n const $chroma = document.createElement('div');\n $chroma.className = $preChroma.className;\n const $table = document.createElement('table');\n $chroma.appendChild($table);\n const $tbody = document.createElement('tbody');\n $table.appendChild($tbody);\n const $tr = document.createElement('tr');\n $tbody.appendChild($tr);\n const $td = document.createElement('td');\n $tr.appendChild($td);\n $preChroma.parentElement.replaceChild($chroma, $preChroma);\n $td.appendChild($preChroma);\n });\n this.util.forEach(document.querySelectorAll('.highlight > .chroma'), $chroma => {\n const $codeElements = $chroma.querySelectorAll('pre.chroma > code');\n if ($codeElements.length) {\n const $code = $codeElements[$codeElements.length - 1];\n const $header = document.createElement('div');\n $header.className = 'code-header ' + $code.className.toLowerCase();\n const $title = document.createElement('span');\n $title.classList.add('code-title');\n $title.insertAdjacentHTML('afterbegin', '<i class=\"arrow fas fa-chevron-right fa-fw\"></i>');\n $title.addEventListener('click', () => {\n $chroma.classList.toggle('open');\n }, false);\n $header.appendChild($title);\n const $ellipses = document.createElement('span');\n $ellipses.insertAdjacentHTML('afterbegin', '<i class=\"fas fa-ellipsis-h fa-fw\"></i>');\n $ellipses.classList.add('ellipses');\n $ellipses.addEventListener('click', () => {\n $chroma.classList.add('open');\n }, false);\n $header.appendChild($ellipses);\n const $copy = document.createElement('span');\n $copy.insertAdjacentHTML('afterbegin', '<i class=\"far fa-copy fa-fw\"></i>');\n $copy.classList.add('copy');\n const code = $code.innerText;\n if (this.config.code.maxShownLines < 0 || code.split('\\n').length < this.config.code.maxShownLines + 2) $chroma.classList.add('open');\n if (this.config.code.copyTitle) {\n $copy.setAttribute('data-clipboard-text', code);\n $copy.title = this.config.code.copyTitle;\n const clipboard = new ClipboardJS($copy);\n clipboard.on('success', _e => {\n this.util.animateCSS($code, 'flash');\n });\n $header.appendChild($copy);\n }\n $chroma.insertBefore($header, $chroma.firstChild);\n }\n });\n }\n\n initTable() {\n this.util.forEach(document.querySelectorAll('.content table'), $table => {\n const $wrapper = document.createElement('div');\n $wrapper.className = 'table-wrapper';\n $table.parentElement.replaceChild($wrapper, $table);\n $wrapper.appendChild($table);\n });\n }\n\n initHeaderLink() {\n for (let num = 1; num <= 6; num++) {\n this.util.forEach(document.querySelectorAll('.single .content > h' + num), $header => {\n $header.classList.add('headerLink');\n $header.insertAdjacentHTML('afterbegin', `<a href=\"#${$header.id}\" class=\"header-mark\"></a>`);\n });\n }\n }\n\n initToc() {\n const $tocCore = document.getElementById('TableOfContents');\n if ($tocCore === null) return;\n if (document.getElementById('toc-static').getAttribute('kept') || this.util.isTocStatic()) {\n const $tocContentStatic = document.getElementById('toc-content-static');\n if ($tocCore.parentElement !== $tocContentStatic) {\n $tocCore.parentElement.removeChild($tocCore);\n $tocContentStatic.appendChild($tocCore);\n }\n if (this._tocOnScroll) this.scrollEventSet.delete(this._tocOnScroll);\n } else {\n const $tocContentAuto = document.getElementById('toc-content-auto');\n if ($tocCore.parentElement !== $tocContentAuto) {\n $tocCore.parentElement.removeChild($tocCore);\n $tocContentAuto.appendChild($tocCore);\n }\n const $toc = document.getElementById('toc-auto');\n const $page = document.getElementsByClassName('page')[0];\n const rect = $page.getBoundingClientRect();\n $toc.style.left = `${rect.left + rect.width + 20}px`;\n $toc.style.maxWidth = `${$page.getBoundingClientRect().left - 20}px`;\n $toc.style.visibility = 'visible';\n const $tocLinkElements = $tocCore.querySelectorAll('a:first-child');\n const $tocLiElements = $tocCore.getElementsByTagName('li');\n const $headerLinkElements = document.getElementsByClassName('headerLink');\n const headerIsFixed = document.body.getAttribute('header-desktop') !== 'normal';\n const headerHeight = document.getElementById('header-desktop').offsetHeight;\n const TOP_SPACING = 20 + (headerIsFixed ? headerHeight : 0);\n const minTocTop = $toc.offsetTop;\n const minScrollTop = minTocTop - TOP_SPACING + (headerIsFixed ? 0 : headerHeight);\n this._tocOnScroll = this._tocOnScroll || (() => {\n const footerTop = document.getElementById('post-footer').offsetTop;\n const maxTocTop = footerTop - $toc.getBoundingClientRect().height;\n const maxScrollTop = maxTocTop - TOP_SPACING + (headerIsFixed ? 0 : headerHeight);\n if (this.newScrollTop < minScrollTop) {\n $toc.style.position = 'absolute';\n $toc.style.top = `${minTocTop}px`;\n } else if (this.newScrollTop > maxScrollTop) {\n $toc.style.position = 'absolute';\n $toc.style.top = `${maxTocTop}px`;\n } else {\n $toc.style.position = 'fixed';\n $toc.style.top = `${TOP_SPACING}px`;\n }\n\n this.util.forEach($tocLinkElements, $tocLink => { $tocLink.classList.remove('active'); });\n this.util.forEach($tocLiElements, $tocLi => { $tocLi.classList.remove('has-active'); });\n const INDEX_SPACING = 20 + (headerIsFixed ? headerHeight : 0);\n let activeTocIndex = $headerLinkElements.length - 1;\n for (let i = 0; i < $headerLinkElements.length - 1; i++) {\n const thisTop = $headerLinkElements[i].getBoundingClientRect().top;\n const nextTop = $headerLinkElements[i + 1].getBoundingClientRect().top;\n if ((i == 0 && thisTop > INDEX_SPACING)\n || (thisTop <= INDEX_SPACING && nextTop > INDEX_SPACING)) {\n activeTocIndex = i;\n break;\n }\n }\n if (activeTocIndex !== -1) {\n $tocLinkElements[activeTocIndex].classList.add('active');\n let $parent = $tocLinkElements[activeTocIndex].parentElement;\n while ($parent !== $tocCore) {\n $parent.classList.add('has-active');\n $parent = $parent.parentElement.parentElement;\n }\n }\n });\n this._tocOnScroll();\n this.scrollEventSet.add(this._tocOnScroll);\n }\n }\n\n initMath() {\n if (this.config.math) renderMathInElement(document.body, this.config.math);\n }\n\n initMermaid() {\n const $mermaidElements = document.getElementsByClassName('mermaid');\n if ($mermaidElements.length) {\n mermaid.initialize({startOnLoad: false, theme: 'null'});\n this.util.forEach($mermaidElements, $mermaid => {\n mermaid.mermaidAPI.render('svg-' + $mermaid.id, this.data[$mermaid.id], svgCode => {\n $mermaid.insertAdjacentHTML('afterbegin', svgCode);\n }, $mermaid);\n });\n }\n }\n\n initEcharts() {\n this._echartsOnSwitchTheme = this._echartsOnSwitchTheme || (() => {\n this._echartsArr = this._echartsArr || [];\n for (let i = 0; i < this._echartsArr.length; i++) {\n this._echartsArr[i].dispose();\n }\n this._echartsArr = [];\n this.util.forEach(document.getElementsByClassName('echarts'), $echarts => {\n const chart = echarts.init($echarts, this.isDark ? 'dark' : 'macarons', {renderer: 'svg'});\n chart.setOption(JSON.parse(this.data[$echarts.id]));\n this._echartsArr.push(chart);\n });\n });\n this.switchThemeEventSet.add(this._echartsOnSwitchTheme);\n this._echartsOnSwitchTheme();\n this._echartsOnResize = this._echartsOnResize || (() => {\n for (let i = 0; i < this._echartsArr.length; i++) {\n this._echartsArr[i].resize();\n }\n });\n this.resizeEventSet.add(this._echartsOnResize);\n }\n\n initMapbox() {\n if (this.config.mapbox) {\n mapboxgl.accessToken = this.config.mapbox.accessToken;\n mapboxgl.setRTLTextPlugin(this.config.mapbox.RTLTextPlugin);\n this._mapboxArr = this._mapboxArr || [];\n this.util.forEach(document.getElementsByClassName('mapbox'), $mapbox => {\n const { lng, lat, zoom, lightStyle, darkStyle, marked, navigation, geolocate, scale, fullscreen } = this.data[$mapbox.id];\n const mapbox = new mapboxgl.Map({\n container: $mapbox,\n center: [lng, lat],\n zoom: zoom,\n minZoom: .2,\n style: this.isDark ? darkStyle : lightStyle,\n attributionControl: false,\n });\n if (marked) {\n new mapboxgl.Marker().setLngLat([lng, lat]).addTo(mapbox);\n }\n if (navigation) {\n mapbox.addControl(new mapboxgl.NavigationControl(), 'bottom-right');\n }\n if (geolocate) {\n mapbox.addControl(new mapboxgl.GeolocateControl({\n positionOptions: {\n enableHighAccuracy: true,\n },\n showUserLocation: true,\n trackUserLocation: true,\n }), 'bottom-right');\n }\n if (scale) {\n mapbox.addControl(new mapboxgl.ScaleControl());\n }\n if (fullscreen) {\n mapbox.addControl(new mapboxgl.FullscreenControl());\n }\n mapbox.addControl(new MapboxLanguage());\n this._mapboxArr.push(mapbox);\n });\n this._mapboxOnSwitchTheme = this._mapboxOnSwitchTheme || (() => {\n this.util.forEach(this._mapboxArr, mapbox => {\n const $mapbox = mapbox.getContainer();\n const { lightStyle, darkStyle } = this.data[$mapbox.id];\n mapbox.setStyle(this.isDark ? darkStyle : lightStyle);\n mapbox.addControl(new MapboxLanguage());\n });\n });\n this.switchThemeEventSet.add(this._mapboxOnSwitchTheme);\n }\n }\n\n initTypeit() {\n if (this.config.typeit) {\n const typeitConfig = this.config.typeit;\n const speed = typeitConfig.speed ? typeitConfig.speed : 100;\n const cursorSpeed = typeitConfig.cursorSpeed ? typeitConfig.cursorSpeed : 1000;\n const cursorChar = typeitConfig.cursorChar ? typeitConfig.cursorChar : '|';\n Object.values(typeitConfig.data).forEach(group => {\n const typeone = (i) => {\n const id = group[i];\n const instance = new TypeIt(`#${id}`, {\n strings: this.data[id],\n speed: speed,\n lifeLike: true,\n cursorSpeed: cursorSpeed,\n cursorChar: cursorChar,\n waitUntilVisible: true,\n afterComplete: () => {\n if (i === group.length - 1) {\n if (typeitConfig.duration >= 0) window.setTimeout(() => {\n instance.destroy();\n }, typeitConfig.duration);\n return;\n }\n instance.destroy();\n typeone(i + 1);\n },\n }).go();\n };\n typeone(0);\n });\n }\n }\n\n initComment() {\n if (this.config.comment) {\n if (this.config.comment.gitalk) {\n this.config.comment.gitalk.body = decodeURI(window.location.href);\n const gitalk = new Gitalk(this.config.comment.gitalk);\n gitalk.render('gitalk');\n }\n if (this.config.comment.valine) new Valine(this.config.comment.valine);\n if (this.config.comment.utterances) {\n const utterancesConfig = this.config.comment.utterances;\n const script = document.createElement('script');\n script.src = 'https://utteranc.es/client.js';\n script.type = 'text/javascript';\n script.setAttribute('repo', utterancesConfig.repo);\n script.setAttribute('issue-term', utterancesConfig.issueTerm);\n if (utterancesConfig.label) script.setAttribute('label', utterancesConfig.label);\n script.setAttribute('theme', this.isDark ? utterancesConfig.darkTheme : utterancesConfig.lightTheme);\n script.crossOrigin = 'anonymous';\n script.async = true;\n document.getElementById('utterances').appendChild(script);\n this._utterancesOnSwitchTheme = this._utterancesOnSwitchTheme || (() => {\n const message = {\n type: 'set-theme',\n theme: this.isDark ? utterancesConfig.darkTheme : utterancesConfig.lightTheme,\n };\n const iframe = document.querySelector('.utterances-frame');\n iframe.contentWindow.postMessage(message, 'https://utteranc.es');\n });\n this.switchThemeEventSet.add(this._utterancesOnSwitchTheme);\n }\n }\n }\n\n initSmoothScroll() {\n if (SmoothScroll) new SmoothScroll('[href^=\"#\"]', { speed: 300, speedAsDuration: true, header: '#header-desktop' });\n }\n\n initCookieconsent() {\n if (this.config.cookieconsent) cookieconsent.initialise(this.config.cookieconsent);\n }\n\n onScroll() {\n const $headers = [];\n if (document.body.getAttribute('header-desktop') === 'auto') $headers.push(document.getElementById('header-desktop'));\n if (document.body.getAttribute('header-mobile') === 'auto') $headers.push(document.getElementById('header-mobile'));\n if (document.getElementById('comments')) {\n const $viewComments = document.getElementById('view-comments');\n $viewComments.href = `#comments`;\n $viewComments.style.display = 'block';\n }\n const $fixedButtons = document.getElementById('fixed-buttons');\n const ACCURACY = 20, MINIMUM = 100;\n window.addEventListener('scroll', () => {\n this.newScrollTop = this.util.getScrollTop();\n const scroll = this.newScrollTop - this.oldScrollTop;\n const isMobile = this.util.isMobile();\n this.util.forEach($headers, $header => {\n if (scroll > ACCURACY) {\n $header.classList.remove('fadeInDown');\n this.util.animateCSS($header, ['fadeOutUp', 'faster'], true);\n } else if (scroll < - ACCURACY) {\n $header.classList.remove('fadeOutUp');\n this.util.animateCSS($header, ['fadeInDown', 'faster'], true);\n }\n });\n if (this.newScrollTop > MINIMUM) {\n if (isMobile && scroll > ACCURACY) {\n $fixedButtons.classList.remove('fadeIn');\n this.util.animateCSS($fixedButtons, ['fadeOut', 'faster'], true);\n } else if (!isMobile || scroll < - ACCURACY) {\n $fixedButtons.style.display = 'block';\n $fixedButtons.classList.remove('fadeOut');\n this.util.animateCSS($fixedButtons, ['fadeIn', 'faster'], true);\n }\n } else {\n if (!isMobile) {\n $fixedButtons.classList.remove('fadeIn');\n this.util.animateCSS($fixedButtons, ['fadeOut', 'faster'], true);\n }\n $fixedButtons.style.display = 'none';\n }\n for (let event of this.scrollEventSet) event();\n this.oldScrollTop = this.newScrollTop;\n }, false);\n }\n\n onResize() {\n window.addEventListener('resize', () => {\n if (!this._resizeTimeout) {\n this._resizeTimeout = window.setTimeout(() => {\n this._resizeTimeout = null;\n for (let event of this.resizeEventSet) event();\n this.initToc();\n this.initMermaid();\n this.initSearch();\n }, 100);\n }\n }, false);\n }\n\n onClickMask() {\n document.getElementById('mask').addEventListener('click', () => {\n for (let event of this.clickMaskEventSet) event();\n document.body.classList.remove('blur');\n }, false);\n }\n\n init() {\n try {\n this.initSVGIcon();\n this.initTwemoji();\n this.initMenuMobile();\n this.initSwitchTheme();\n this.initSearch();\n this.initDetails();\n this.initLightGallery();\n this.initHighlight();\n this.initTable();\n this.initHeaderLink();\n this.initSmoothScroll();\n this.initMath();\n this.initMermaid();\n this.initEcharts();\n this.initTypeit();\n this.initMapbox();\n this.initCookieconsent();\n } catch (err) {\n console.error(err);\n }\n\n window.setTimeout(() => {\n this.initToc();\n this.initComment();\n\n this.onScroll();\n this.onResize();\n this.onClickMask();\n }, 100);\n }\n}\n\nconst themeInit = () => {\n const theme = new Theme();\n theme.init();\n};\n\nif (document.readyState !== 'loading') {\n themeInit();\n} else {\n document.addEventListener('DOMContentLoaded', themeInit, false);\n}\n"]} \ No newline at end of file
diff --git a/assets/lib/VERSION b/assets/lib/VERSION
index 5a2318b5..57bd7c38 100644
--- a/assets/lib/VERSION
+++ b/assets/lib/VERSION
@@ -1,26 +1,24 @@
normalize.css@8.0.1 https://github.com/necolas/normalize.css
-fontawesome-free@5.13.0 https://fontawesome.com/
-simple-icons@2.14.0 https://github.com/simple-icons/simple-icons
-animate.css@3.7.2 https://github.com/daneden/animate.css
-smooth-scroll@16.1.3 https://github.com/cferdinandi/smooth-scroll
-autocomplete.js@0.37.1 https://github.com/algolia/autocomplete.js
-lunr.js@2.3.8 https://lunrjs.com/
-algoliasearch@4.2.0 https://github.com/algolia/algoliasearch-client-javascript
-lazysizes@5.2.2 https://github.com/aFarkas/lazysizes
+fontawesome-free@6.1.1 https://fontawesome.com/
+simple-icons@6.20.0 https://github.com/simple-icons/simple-icons
+animate.css@4.1.1 https://github.com/daneden/animate.css
+autocomplete@0.38.1 https://github.com/algolia/autocomplete
+lunr.js@2.3.9 https://lunrjs.com/
+algoliasearch@4.13.0 https://github.com/algolia/algoliasearch-client-javascript
+lazysizes@5.3.1 https://github.com/aFarkas/lazysizes
object-fit-images@3.2.4 https://github.com/fregante/object-fit-images
-twemoji@13.0.0 https://github.com/twitter/twemoji
-lightgallery.js@1.2.0 https://github.com/sachinchoolur/lightgallery.js
-lg-thumbnail.js@1.2.0 https://github.com/sachinchoolur/lg-thumbnail.js
-lg-zoom.js@1.2.0 https://github.com/sachinchoolur/lg-zoom.js
-clipboard.js@2.0.6 https://github.com/zenorocha/clipboard.js
+twemoji@14.0.2 https://github.com/twitter/twemoji
+emoji-data@14.0.0 https://github.com/iamcal/emoji-data
+lightgallery@2.4.0 https://github.com/sachinchoolur/lightgallery
+clipboard.js@2.0.11 https://github.com/zenorocha/clipboard.js
sharer.js@0.4.0 https://github.com/ellisonleao/sharer.js
-typeit@7.0.4 https://github.com/alexmacarthur/typeit
-katex@0.11.1 https://katex.org/
-mermaid@8.5.1 https://github.com/knsv/mermaid
-echarts@4.8.0 https://echarts.apache.org/
-mapbox-gl@1.10.1 https://github.com/mapbox/mapbox-gl-js
+typeit@8.5.4 https://github.com/alexmacarthur/typeit
+katex@0.15.3 https://katex.org/
+mermaid@9.1.0 https://github.com/mermaid-js/mermaid
+echarts@5.3.2 https://echarts.apache.org/
+mapbox-gl@2.8.2 https://github.com/mapbox/mapbox-gl-js
aplayer@1.10.1 https://github.com/MoePlayer/APlayer
meting@2.0.1 https://github.com/metowolf/MetingJS
-gitalk@1.6.2 https://github.com/gitalk/gitalk
-valine@1.4.14 https://valine.js.org/
+gitalk@1.7.2 https://github.com/gitalk/gitalk
+valine@1.4.18 https://valine.js.org/
cookieconsent@3.1.1 https://github.com/osano/cookieconsent
diff --git a/assets/lib/algoliasearch/algoliasearch-lite.umd.min.js b/assets/lib/algoliasearch/algoliasearch-lite.umd.min.js
index 08aea9ad..77501f56 100644
--- a/assets/lib/algoliasearch/algoliasearch-lite.umd.min.js
+++ b/assets/lib/algoliasearch/algoliasearch-lite.umd.min.js
@@ -1,6 +1,8 @@
/**
* Skipped minification because the original files appears to be already minified.
+ * Original file: /npm/algoliasearch@4.13.0/dist/algoliasearch-lite.umd.js
+ *
* Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
*/
-/*! algoliasearch-lite.umd.js | 4.2.0 | © Algolia, inc. | https://github.com/algolia/algoliasearch-client-javascript */
-!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).algoliasearch=t()}(this,(function(){"use strict";function e(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function t(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function r(r){for(var n=1;n<arguments.length;n++){var o=null!=arguments[n]?arguments[n]:{};n%2?t(Object(o),!0).forEach((function(t){e(r,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(o)):t(Object(o)).forEach((function(e){Object.defineProperty(r,e,Object.getOwnPropertyDescriptor(o,e))}))}return r}function n(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function o(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if(!(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)))return;var r=[],n=!0,o=!1,a=void 0;try{for(var u,i=e[Symbol.iterator]();!(n=(u=i.next()).done)&&(r.push(u.value),!t||r.length!==t);n=!0);}catch(e){o=!0,a=e}finally{try{n||null==i.return||i.return()}finally{if(o)throw a}}return r}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function a(e){return function(e){if(Array.isArray(e)){for(var t=0,r=new Array(e.length);t<e.length;t++)r[t]=e[t];return r}}(e)||function(e){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e))return Array.from(e)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()}function u(e){var t,r="algoliasearch-client-js-".concat(e.key),n=function(){return void 0===t&&(t=e.localStorage||window.localStorage),t},a=function(){return JSON.parse(n().getItem(r)||"{}")};return{get:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}};return Promise.resolve().then((function(){var r=JSON.stringify(e),n=a()[r];return Promise.all([n||t(),void 0!==n])})).then((function(e){var t=o(e,2),n=t[0],a=t[1];return Promise.all([n,a||r.miss(n)])})).then((function(e){return o(e,1)[0]}))},set:function(e,t){return Promise.resolve().then((function(){var o=a();return o[JSON.stringify(e)]=t,n().setItem(r,JSON.stringify(o)),t}))},delete:function(e){return Promise.resolve().then((function(){var t=a();delete t[JSON.stringify(e)],n().setItem(r,JSON.stringify(t))}))},clear:function(){return Promise.resolve().then((function(){n().removeItem(r)}))}}}function i(e){var t=a(e.caches),r=t.shift();return void 0===r?{get:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}},n=t();return n.then((function(e){return Promise.all([e,r.miss(e)])})).then((function(e){return o(e,1)[0]}))},set:function(e,t){return Promise.resolve(t)},delete:function(e){return Promise.resolve()},clear:function(){return Promise.resolve()}}:{get:function(e,n){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}};return r.get(e,n,o).catch((function(){return i({caches:t}).get(e,n,o)}))},set:function(e,n){return r.set(e,n).catch((function(){return i({caches:t}).set(e,n)}))},delete:function(e){return r.delete(e).catch((function(){return i({caches:t}).delete(e)}))},clear:function(){return r.clear().catch((function(){return i({caches:t}).clear()}))}}}function s(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{serializable:!0},t={};return{get:function(r,n){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}},a=JSON.stringify(r);if(a in t)return Promise.resolve(e.serializable?JSON.parse(t[a]):t[a]);var u=n(),i=o&&o.miss||function(){return Promise.resolve()};return u.then((function(e){return i(e)})).then((function(){return u}))},set:function(r,n){return t[JSON.stringify(r)]=e.serializable?JSON.stringify(n):n,Promise.resolve(n)},delete:function(e){return delete t[JSON.stringify(e)],Promise.resolve()},clear:function(){return t={},Promise.resolve()}}}function c(e){for(var t=e.length-1;t>0;t--){var r=Math.floor(Math.random()*(t+1)),n=e[t];e[t]=e[r],e[r]=n}return e}function l(e,t){return Object.keys(void 0!==t?t:{}).forEach((function(r){e[r]=t[r](e)})),e}function f(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];var o=0;return e.replace(/%s/g,(function(){return encodeURIComponent(r[o++])}))}var h={WithinQueryParameters:0,WithinHeaders:1};function d(e,t){var r=e||{},n=r.data||{};return Object.keys(r).forEach((function(e){-1===["timeout","headers","queryParameters","data","cacheable"].indexOf(e)&&(n[e]=r[e])})),{data:Object.entries(n).length>0?n:void 0,timeout:r.timeout||t,headers:r.headers||{},queryParameters:r.queryParameters||{},cacheable:r.cacheable}}var m={Read:1,Write:2,Any:3},p=1,v=2,g=3;function y(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:p;return r({},e,{status:t,lastUpdate:Date.now()})}function b(e){return{protocol:e.protocol||"https",url:e.url,accept:e.accept||m.Any}}var O="GET",P="POST";function q(e,t){return Promise.all(t.map((function(t){return e.get(t,(function(){return Promise.resolve(y(t))}))}))).then((function(e){var r=e.filter((function(e){return function(e){return e.status===p||Date.now()-e.lastUpdate>12e4}(e)})),n=e.filter((function(e){return function(e){return e.status===g&&Date.now()-e.lastUpdate<=12e4}(e)})),o=[].concat(a(r),a(n));return{getTimeout:function(e,t){return(0===n.length&&0===e?1:n.length+3+e)*t},statelessHosts:o.length>0?o.map((function(e){return b(e)})):t}}))}function j(e,t,n,o){var u=[],i=function(e,t){if(e.method===O||void 0===e.data&&void 0===t.data)return;var n=Array.isArray(e.data)?e.data:r({},e.data,{},t.data);return JSON.stringify(n)}(n,o),s=function(e,t){var n=r({},e.headers,{},t.headers),o={};return Object.keys(n).forEach((function(e){var t=n[e];o[e.toLowerCase()]=t})),o}(e,o),c=n.method,l=n.method!==O?{}:r({},n.data,{},o.data),f=r({"x-algolia-agent":e.userAgent.value},e.queryParameters,{},l,{},o.queryParameters),h=0,d=function t(r,a){var l=r.pop();if(void 0===l)throw{name:"RetryError",message:"Unreachable hosts - your application id may be incorrect. If the error persists, contact support@algolia.com.",transporterStackTrace:A(u)};var d={data:i,headers:s,method:c,url:w(l,n.path,f),connectTimeout:a(h,e.timeouts.connect),responseTimeout:a(h,o.timeout)},m=function(e){var t={request:d,response:e,host:l,triesLeft:r.length};return u.push(t),t},p={onSucess:function(e){return function(e){try{return JSON.parse(e.content)}catch(t){throw function(e,t){return{name:"DeserializationError",message:e,response:t}}(t.message,e)}}(e)},onRetry:function(n){var o=m(n);return n.isTimedOut&&h++,Promise.all([e.logger.info("Retryable failure",x(o)),e.hostsCache.set(l,y(l,n.isTimedOut?g:v))]).then((function(){return t(r,a)}))},onFail:function(e){throw m(e),function(e,t){var r=e.content,n=e.status,o=r;try{o=JSON.parse(r).message}catch(e){}return function(e,t,r){return{name:"ApiError",message:e,status:t,transporterStackTrace:r}}(o,n,t)}(e,A(u))}};return e.requester.send(d).then((function(e){return function(e,t){return function(e){var t=e.status;return e.isTimedOut||function(e){var t=e.isTimedOut,r=e.status;return!t&&0==~~r}(e)||2!=~~(t/100)&&4!=~~(t/100)}(e)?t.onRetry(e):2==~~(e.status/100)?t.onSucess(e):t.onFail(e)}(e,p)}))};return q(e.hostsCache,t).then((function(e){return d(a(e.statelessHosts).reverse(),e.getTimeout)}))}function S(e){var t={value:"Algolia for JavaScript (".concat(e,")"),add:function(e){var r="; ".concat(e.segment).concat(void 0!==e.version?" (".concat(e.version,")"):"");return-1===t.value.indexOf(r)&&(t.value="".concat(t.value).concat(r)),t}};return t}function w(e,t,r){var n=T(r),o="".concat(e.protocol,"://").concat(e.url,"/").concat("/"===t.charAt(0)?t.substr(1):t);return n.length&&(o+="?".concat(n)),o}function T(e){return Object.keys(e).map((function(t){return f("%s=%s",t,(r=e[t],"[object Object]"===Object.prototype.toString.call(r)||"[object Array]"===Object.prototype.toString.call(r)?JSON.stringify(e[t]):e[t]));var r})).join("&")}function A(e){return e.map((function(e){return x(e)}))}function x(e){var t=e.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};return r({},e,{request:r({},e.request,{headers:r({},e.request.headers,{},t)})})}var C=function(e){var t=e.appId,n=function(e,t,r){var n={"x-algolia-api-key":r,"x-algolia-application-id":t};return{headers:function(){return e===h.WithinHeaders?n:{}},queryParameters:function(){return e===h.WithinQueryParameters?n:{}}}}(void 0!==e.authMode?e.authMode:h.WithinHeaders,t,e.apiKey),a=function(e){var t=e.hostsCache,r=e.logger,n=e.requester,a=e.requestsCache,u=e.responsesCache,i=e.timeouts,s=e.userAgent,c=e.hosts,l=e.queryParameters,f={hostsCache:t,logger:r,requester:n,requestsCache:a,responsesCache:u,timeouts:i,userAgent:s,headers:e.headers,queryParameters:l,hosts:c.map((function(e){return b(e)})),read:function(e,t){var r=d(t,f.timeouts.read),n=function(){return j(f,f.hosts.filter((function(e){return 0!=(e.accept&m.Read)})),e,r)};if(!0!==(void 0!==r.cacheable?r.cacheable:e.cacheable))return n();var a={request:e,mappedRequestOptions:r,transporter:{queryParameters:f.queryParameters,headers:f.headers}};return f.responsesCache.get(a,(function(){return f.requestsCache.get(a,(function(){return f.requestsCache.set(a,n()).then((function(e){return Promise.all([f.requestsCache.delete(a),e])}),(function(e){return Promise.all([f.requestsCache.delete(a),Promise.reject(e)])})).then((function(e){var t=o(e,2);t[0];return t[1]}))}))}),{miss:function(e){return f.responsesCache.set(a,e)}})},write:function(e,t){return j(f,f.hosts.filter((function(e){return 0!=(e.accept&m.Write)})),e,d(t,f.timeouts.write))}};return f}(r({hosts:[{url:"".concat(t,"-dsn.algolia.net"),accept:m.Read},{url:"".concat(t,".algolia.net"),accept:m.Write}].concat(c([{url:"".concat(t,"-1.algolianet.com")},{url:"".concat(t,"-2.algolianet.com")},{url:"".concat(t,"-3.algolianet.com")}]))},e,{headers:r({},n.headers(),{},{"content-type":"application/x-www-form-urlencoded"},{},e.headers),queryParameters:r({},n.queryParameters(),{},e.queryParameters)}));return l({transporter:a,appId:t,addAlgoliaAgent:function(e,t){a.userAgent.add({segment:e,version:t})},clearCache:function(){return Promise.all([a.requestsCache.clear(),a.responsesCache.clear()]).then((function(){}))}},e.methods)},N=function(e){return function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n={transporter:e.transporter,appId:e.appId,indexName:t};return l(n,r.methods)}},k=function(e){return function(t,n){var o=t.map((function(e){return r({},e,{params:T(e.params||{})})}));return e.transporter.read({method:P,path:"1/indexes/*/queries",data:{requests:o},cacheable:!0},n)}},J=function(e){return function(t,o){return Promise.all(t.map((function(t){var a=t.params,u=a.facetName,i=a.facetQuery,s=n(a,["facetName","facetQuery"]);return N(e)(t.indexName,{methods:{searchForFacetValues:I}}).searchForFacetValues(u,i,r({},o,{},s))})))}},E=function(e){return function(t,r){return e.transporter.read({method:P,path:f("1/indexes/%s/query",e.indexName),data:{query:t},cacheable:!0},r)}},I=function(e){return function(t,r,n){return e.transporter.read({method:P,path:f("1/indexes/%s/facets/%s/query",e.indexName,t),data:{facetQuery:r},cacheable:!0},n)}},F=1,R=2,D=3;function W(e,t,n){var o,a={appId:e,apiKey:t,timeouts:{connect:1,read:2,write:30},requester:{send:function(e){return new Promise((function(t){var r=new XMLHttpRequest;r.open(e.method,e.url,!0),Object.keys(e.headers).forEach((function(t){return r.setRequestHeader(t,e.headers[t])}));var n,o=function(e,n){return setTimeout((function(){r.abort(),t({status:0,content:n,isTimedOut:!0})}),1e3*e)},a=o(e.connectTimeout,"Connection timeout");r.onreadystatechange=function(){r.readyState>r.OPENED&&void 0===n&&(clearTimeout(a),n=o(e.responseTimeout,"Socket timeout"))},r.onerror=function(){0===r.status&&(clearTimeout(a),clearTimeout(n),t({content:r.responseText||"Network request failed",status:r.status,isTimedOut:!1}))},r.onload=function(){clearTimeout(a),clearTimeout(n),t({content:r.responseText,status:r.status,isTimedOut:!1})},r.send(e.data)}))}},logger:(o=D,{debug:function(e,t){return F>=o&&console.debug(e,t),Promise.resolve()},info:function(e,t){return R>=o&&console.info(e,t),Promise.resolve()},error:function(e,t){return console.error(e,t),Promise.resolve()}}),responsesCache:s(),requestsCache:s({serializable:!1}),hostsCache:i({caches:[u({key:"".concat("4.2.0","-").concat(e)}),s()]}),userAgent:S("4.2.0").add({segment:"Browser",version:"lite"}),authMode:h.WithinQueryParameters};return C(r({},a,{},n,{methods:{search:k,searchForFacetValues:J,multipleQueries:k,multipleSearchForFacetValues:J,initIndex:function(e){return function(t){return N(e)(t,{methods:{search:E,searchForFacetValues:I}})}}}}))}return W.version="4.2.0",W}));
+/*! algoliasearch-lite.umd.js | 4.13.0 | © Algolia, inc. | https://github.com/algolia/algoliasearch-client-javascript */
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).algoliasearch=t()}(this,(function(){"use strict";function e(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function t(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function r(r){for(var n=1;n<arguments.length;n++){var o=null!=arguments[n]?arguments[n]:{};n%2?t(Object(o),!0).forEach((function(t){e(r,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(o)):t(Object(o)).forEach((function(e){Object.defineProperty(r,e,Object.getOwnPropertyDescriptor(o,e))}))}return r}function n(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function o(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if(!(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)))return;var r=[],n=!0,o=!1,a=void 0;try{for(var u,i=e[Symbol.iterator]();!(n=(u=i.next()).done)&&(r.push(u.value),!t||r.length!==t);n=!0);}catch(e){o=!0,a=e}finally{try{n||null==i.return||i.return()}finally{if(o)throw a}}return r}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function a(e){return function(e){if(Array.isArray(e)){for(var t=0,r=new Array(e.length);t<e.length;t++)r[t]=e[t];return r}}(e)||function(e){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e))return Array.from(e)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()}function u(e){var t,r="algoliasearch-client-js-".concat(e.key),n=function(){return void 0===t&&(t=e.localStorage||window.localStorage),t},a=function(){return JSON.parse(n().getItem(r)||"{}")};return{get:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}};return Promise.resolve().then((function(){var r=JSON.stringify(e),n=a()[r];return Promise.all([n||t(),void 0!==n])})).then((function(e){var t=o(e,2),n=t[0],a=t[1];return Promise.all([n,a||r.miss(n)])})).then((function(e){return o(e,1)[0]}))},set:function(e,t){return Promise.resolve().then((function(){var o=a();return o[JSON.stringify(e)]=t,n().setItem(r,JSON.stringify(o)),t}))},delete:function(e){return Promise.resolve().then((function(){var t=a();delete t[JSON.stringify(e)],n().setItem(r,JSON.stringify(t))}))},clear:function(){return Promise.resolve().then((function(){n().removeItem(r)}))}}}function i(e){var t=a(e.caches),r=t.shift();return void 0===r?{get:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}},n=t();return n.then((function(e){return Promise.all([e,r.miss(e)])})).then((function(e){return o(e,1)[0]}))},set:function(e,t){return Promise.resolve(t)},delete:function(e){return Promise.resolve()},clear:function(){return Promise.resolve()}}:{get:function(e,n){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}};return r.get(e,n,o).catch((function(){return i({caches:t}).get(e,n,o)}))},set:function(e,n){return r.set(e,n).catch((function(){return i({caches:t}).set(e,n)}))},delete:function(e){return r.delete(e).catch((function(){return i({caches:t}).delete(e)}))},clear:function(){return r.clear().catch((function(){return i({caches:t}).clear()}))}}}function s(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{serializable:!0},t={};return{get:function(r,n){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}},a=JSON.stringify(r);if(a in t)return Promise.resolve(e.serializable?JSON.parse(t[a]):t[a]);var u=n(),i=o&&o.miss||function(){return Promise.resolve()};return u.then((function(e){return i(e)})).then((function(){return u}))},set:function(r,n){return t[JSON.stringify(r)]=e.serializable?JSON.stringify(n):n,Promise.resolve(n)},delete:function(e){return delete t[JSON.stringify(e)],Promise.resolve()},clear:function(){return t={},Promise.resolve()}}}function c(e){for(var t=e.length-1;t>0;t--){var r=Math.floor(Math.random()*(t+1)),n=e[t];e[t]=e[r],e[r]=n}return e}function l(e,t){return t?(Object.keys(t).forEach((function(r){e[r]=t[r](e)})),e):e}function f(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];var o=0;return e.replace(/%s/g,(function(){return encodeURIComponent(r[o++])}))}var h={WithinQueryParameters:0,WithinHeaders:1};function d(e,t){var r=e||{},n=r.data||{};return Object.keys(r).forEach((function(e){-1===["timeout","headers","queryParameters","data","cacheable"].indexOf(e)&&(n[e]=r[e])})),{data:Object.entries(n).length>0?n:void 0,timeout:r.timeout||t,headers:r.headers||{},queryParameters:r.queryParameters||{},cacheable:r.cacheable}}var m={Read:1,Write:2,Any:3},p=1,v=2,y=3;function g(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:p;return r(r({},e),{},{status:t,lastUpdate:Date.now()})}function b(e){return"string"==typeof e?{protocol:"https",url:e,accept:m.Any}:{protocol:e.protocol||"https",url:e.url,accept:e.accept||m.Any}}var O="GET",P="POST";function q(e,t){return Promise.all(t.map((function(t){return e.get(t,(function(){return Promise.resolve(g(t))}))}))).then((function(e){var r=e.filter((function(e){return function(e){return e.status===p||Date.now()-e.lastUpdate>12e4}(e)})),n=e.filter((function(e){return function(e){return e.status===y&&Date.now()-e.lastUpdate<=12e4}(e)})),o=[].concat(a(r),a(n));return{getTimeout:function(e,t){return(0===n.length&&0===e?1:n.length+3+e)*t},statelessHosts:o.length>0?o.map((function(e){return b(e)})):t}}))}function w(e,t,n,o){var u=[],i=function(e,t){if(e.method===O||void 0===e.data&&void 0===t.data)return;var n=Array.isArray(e.data)?e.data:r(r({},e.data),t.data);return JSON.stringify(n)}(n,o),s=function(e,t){var n=r(r({},e.headers),t.headers),o={};return Object.keys(n).forEach((function(e){var t=n[e];o[e.toLowerCase()]=t})),o}(e,o),c=n.method,l=n.method!==O?{}:r(r({},n.data),o.data),f=r(r(r({"x-algolia-agent":e.userAgent.value},e.queryParameters),l),o.queryParameters),h=0,d=function t(r,a){var l=r.pop();if(void 0===l)throw{name:"RetryError",message:"Unreachable hosts - your application id may be incorrect. If the error persists, contact support@algolia.com.",transporterStackTrace:A(u)};var d={data:i,headers:s,method:c,url:S(l,n.path,f),connectTimeout:a(h,e.timeouts.connect),responseTimeout:a(h,o.timeout)},m=function(e){var t={request:d,response:e,host:l,triesLeft:r.length};return u.push(t),t},p={onSuccess:function(e){return function(e){try{return JSON.parse(e.content)}catch(t){throw function(e,t){return{name:"DeserializationError",message:e,response:t}}(t.message,e)}}(e)},onRetry:function(n){var o=m(n);return n.isTimedOut&&h++,Promise.all([e.logger.info("Retryable failure",x(o)),e.hostsCache.set(l,g(l,n.isTimedOut?y:v))]).then((function(){return t(r,a)}))},onFail:function(e){throw m(e),function(e,t){var r=e.content,n=e.status,o=r;try{o=JSON.parse(r).message}catch(e){}return function(e,t,r){return{name:"ApiError",message:e,status:t,transporterStackTrace:r}}(o,n,t)}(e,A(u))}};return e.requester.send(d).then((function(e){return function(e,t){return function(e){var t=e.status;return e.isTimedOut||function(e){var t=e.isTimedOut,r=e.status;return!t&&0==~~r}(e)||2!=~~(t/100)&&4!=~~(t/100)}(e)?t.onRetry(e):2==~~(e.status/100)?t.onSuccess(e):t.onFail(e)}(e,p)}))};return q(e.hostsCache,t).then((function(e){return d(a(e.statelessHosts).reverse(),e.getTimeout)}))}function j(e){var t={value:"Algolia for JavaScript (".concat(e,")"),add:function(e){var r="; ".concat(e.segment).concat(void 0!==e.version?" (".concat(e.version,")"):"");return-1===t.value.indexOf(r)&&(t.value="".concat(t.value).concat(r)),t}};return t}function S(e,t,r){var n=T(r),o="".concat(e.protocol,"://").concat(e.url,"/").concat("/"===t.charAt(0)?t.substr(1):t);return n.length&&(o+="?".concat(n)),o}function T(e){return Object.keys(e).map((function(t){return f("%s=%s",t,(r=e[t],"[object Object]"===Object.prototype.toString.call(r)||"[object Array]"===Object.prototype.toString.call(r)?JSON.stringify(e[t]):e[t]));var r})).join("&")}function A(e){return e.map((function(e){return x(e)}))}function x(e){var t=e.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};return r(r({},e),{},{request:r(r({},e.request),{},{headers:r(r({},e.request.headers),t)})})}var N=function(e){var t=e.appId,n=function(e,t,r){var n={"x-algolia-api-key":r,"x-algolia-application-id":t};return{headers:function(){return e===h.WithinHeaders?n:{}},queryParameters:function(){return e===h.WithinQueryParameters?n:{}}}}(void 0!==e.authMode?e.authMode:h.WithinHeaders,t,e.apiKey),a=function(e){var t=e.hostsCache,r=e.logger,n=e.requester,a=e.requestsCache,u=e.responsesCache,i=e.timeouts,s=e.userAgent,c=e.hosts,l=e.queryParameters,f={hostsCache:t,logger:r,requester:n,requestsCache:a,responsesCache:u,timeouts:i,userAgent:s,headers:e.headers,queryParameters:l,hosts:c.map((function(e){return b(e)})),read:function(e,t){var r=d(t,f.timeouts.read),n=function(){return w(f,f.hosts.filter((function(e){return 0!=(e.accept&m.Read)})),e,r)};if(!0!==(void 0!==r.cacheable?r.cacheable:e.cacheable))return n();var a={request:e,mappedRequestOptions:r,transporter:{queryParameters:f.queryParameters,headers:f.headers}};return f.responsesCache.get(a,(function(){return f.requestsCache.get(a,(function(){return f.requestsCache.set(a,n()).then((function(e){return Promise.all([f.requestsCache.delete(a),e])}),(function(e){return Promise.all([f.requestsCache.delete(a),Promise.reject(e)])})).then((function(e){var t=o(e,2);t[0];return t[1]}))}))}),{miss:function(e){return f.responsesCache.set(a,e)}})},write:function(e,t){return w(f,f.hosts.filter((function(e){return 0!=(e.accept&m.Write)})),e,d(t,f.timeouts.write))}};return f}(r(r({hosts:[{url:"".concat(t,"-dsn.algolia.net"),accept:m.Read},{url:"".concat(t,".algolia.net"),accept:m.Write}].concat(c([{url:"".concat(t,"-1.algolianet.com")},{url:"".concat(t,"-2.algolianet.com")},{url:"".concat(t,"-3.algolianet.com")}]))},e),{},{headers:r(r(r({},n.headers()),{"content-type":"application/x-www-form-urlencoded"}),e.headers),queryParameters:r(r({},n.queryParameters()),e.queryParameters)}));return l({transporter:a,appId:t,addAlgoliaAgent:function(e,t){a.userAgent.add({segment:e,version:t})},clearCache:function(){return Promise.all([a.requestsCache.clear(),a.responsesCache.clear()]).then((function(){}))}},e.methods)},C=function(e){return function(t,r){return t.method===O?e.transporter.read(t,r):e.transporter.write(t,r)}},k=function(e){return function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n={transporter:e.transporter,appId:e.appId,indexName:t};return l(n,r.methods)}},J=function(e){return function(t,n){var o=t.map((function(e){return r(r({},e),{},{params:T(e.params||{})})}));return e.transporter.read({method:P,path:"1/indexes/*/queries",data:{requests:o},cacheable:!0},n)}},E=function(e){return function(t,o){return Promise.all(t.map((function(t){var a=t.params,u=a.facetName,i=a.facetQuery,s=n(a,["facetName","facetQuery"]);return k(e)(t.indexName,{methods:{searchForFacetValues:R}}).searchForFacetValues(u,i,r(r({},o),s))})))}},I=function(e){return function(t,r,n){return e.transporter.read({method:P,path:f("1/answers/%s/prediction",e.indexName),data:{query:t,queryLanguages:r},cacheable:!0},n)}},F=function(e){return function(t,r){return e.transporter.read({method:P,path:f("1/indexes/%s/query",e.indexName),data:{query:t},cacheable:!0},r)}},R=function(e){return function(t,r,n){return e.transporter.read({method:P,path:f("1/indexes/%s/facets/%s/query",e.indexName,t),data:{facetQuery:r},cacheable:!0},n)}},D=1,W=2,H=3;function Q(e,t,n){var o,a={appId:e,apiKey:t,timeouts:{connect:1,read:2,write:30},requester:{send:function(e){return new Promise((function(t){var r=new XMLHttpRequest;r.open(e.method,e.url,!0),Object.keys(e.headers).forEach((function(t){return r.setRequestHeader(t,e.headers[t])}));var n,o=function(e,n){return setTimeout((function(){r.abort(),t({status:0,content:n,isTimedOut:!0})}),1e3*e)},a=o(e.connectTimeout,"Connection timeout");r.onreadystatechange=function(){r.readyState>r.OPENED&&void 0===n&&(clearTimeout(a),n=o(e.responseTimeout,"Socket timeout"))},r.onerror=function(){0===r.status&&(clearTimeout(a),clearTimeout(n),t({content:r.responseText||"Network request failed",status:r.status,isTimedOut:!1}))},r.onload=function(){clearTimeout(a),clearTimeout(n),t({content:r.responseText,status:r.status,isTimedOut:!1})},r.send(e.data)}))}},logger:(o=H,{debug:function(e,t){return D>=o&&console.debug(e,t),Promise.resolve()},info:function(e,t){return W>=o&&console.info(e,t),Promise.resolve()},error:function(e,t){return console.error(e,t),Promise.resolve()}}),responsesCache:s(),requestsCache:s({serializable:!1}),hostsCache:i({caches:[u({key:"".concat("4.13.0","-").concat(e)}),s()]}),userAgent:j("4.13.0").add({segment:"Browser",version:"lite"}),authMode:h.WithinQueryParameters};return N(r(r(r({},a),n),{},{methods:{search:J,searchForFacetValues:E,multipleQueries:J,multipleSearchForFacetValues:E,customRequest:C,initIndex:function(e){return function(t){return k(e)(t,{methods:{search:F,searchForFacetValues:R,findAnswers:I}})}}}}))}return Q.version="4.13.0",Q})); \ No newline at end of file
diff --git a/assets/lib/animate/animate.min.css b/assets/lib/animate/animate.min.css
index f3f10688..76d2fe1a 100644..100755
--- a/assets/lib/animate/animate.min.css
+++ b/assets/lib/animate/animate.min.css
@@ -1,11 +1,7 @@
-@charset "UTF-8";
-
-/*!
- * animate.css -https://daneden.github.io/animate.css/
- * Version - 3.7.2
+@charset "UTF-8";/*!
+ * animate.css - https://animate.style/
+ * Version - 4.1.1
* Licensed under the MIT license - http://opensource.org/licenses/MIT
*
- * Copyright (c) 2019 Daniel Eden
- */
-
-@-webkit-keyframes bounce{0%,20%,53%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translateZ(0);transform:translateZ(0)}40%,43%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-30px,0);transform:translate3d(0,-30px,0)}70%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-15px,0);transform:translate3d(0,-15px,0)}90%{-webkit-transform:translate3d(0,-4px,0);transform:translate3d(0,-4px,0)}}@keyframes bounce{0%,20%,53%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translateZ(0);transform:translateZ(0)}40%,43%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-30px,0);transform:translate3d(0,-30px,0)}70%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-15px,0);transform:translate3d(0,-15px,0)}90%{-webkit-transform:translate3d(0,-4px,0);transform:translate3d(0,-4px,0)}}.bounce{-webkit-animation-name:bounce;animation-name:bounce;-webkit-transform-origin:center bottom;transform-origin:center bottom}@-webkit-keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}.flash{-webkit-animation-name:flash;animation-name:flash}@-webkit-keyframes pulse{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes pulse{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}.pulse{-webkit-animation-name:pulse;animation-name:pulse}@-webkit-keyframes rubberBand{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(.75,1.25,1);transform:scale3d(.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes rubberBand{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(.75,1.25,1);transform:scale3d(.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}.rubberBand{-webkit-animation-name:rubberBand;animation-name:rubberBand}@-webkit-keyframes shake{0%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}@keyframes shake{0%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}.shake{-webkit-animation-name:shake;animation-name:shake}@-webkit-keyframes headShake{0%{-webkit-transform:translateX(0);transform:translateX(0)}6.5%{-webkit-transform:translateX(-6px) rotateY(-9deg);transform:translateX(-6px) rotateY(-9deg)}18.5%{-webkit-transform:translateX(5px) rotateY(7deg);transform:translateX(5px) rotateY(7deg)}31.5%{-webkit-transform:translateX(-3px) rotateY(-5deg);transform:translateX(-3px) rotateY(-5deg)}43.5%{-webkit-transform:translateX(2px) rotateY(3deg);transform:translateX(2px) rotateY(3deg)}50%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes headShake{0%{-webkit-transform:translateX(0);transform:translateX(0)}6.5%{-webkit-transform:translateX(-6px) rotateY(-9deg);transform:translateX(-6px) rotateY(-9deg)}18.5%{-webkit-transform:translateX(5px) rotateY(7deg);transform:translateX(5px) rotateY(7deg)}31.5%{-webkit-transform:translateX(-3px) rotateY(-5deg);transform:translateX(-3px) rotateY(-5deg)}43.5%{-webkit-transform:translateX(2px) rotateY(3deg);transform:translateX(2px) rotateY(3deg)}50%{-webkit-transform:translateX(0);transform:translateX(0)}}.headShake{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-name:headShake;animation-name:headShake}@-webkit-keyframes swing{20%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}40%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}60%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}80%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@keyframes swing{20%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}40%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}60%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}80%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}.swing{-webkit-transform-origin:top center;transform-origin:top center;-webkit-animation-name:swing;animation-name:swing}@-webkit-keyframes tada{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate(-3deg);transform:scale3d(.9,.9,.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(3deg);transform:scale3d(1.1,1.1,1.1) rotate(3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(-3deg);transform:scale3d(1.1,1.1,1.1) rotate(-3deg)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes tada{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate(-3deg);transform:scale3d(.9,.9,.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(3deg);transform:scale3d(1.1,1.1,1.1) rotate(3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(-3deg);transform:scale3d(1.1,1.1,1.1) rotate(-3deg)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}.tada{-webkit-animation-name:tada;animation-name:tada}@-webkit-keyframes wobble{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}15%{-webkit-transform:translate3d(-25%,0,0) rotate(-5deg);transform:translate3d(-25%,0,0) rotate(-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate(3deg);transform:translate3d(20%,0,0) rotate(3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate(-3deg);transform:translate3d(-15%,0,0) rotate(-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate(2deg);transform:translate3d(10%,0,0) rotate(2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate(-1deg);transform:translate3d(-5%,0,0) rotate(-1deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes wobble{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}15%{-webkit-transform:translate3d(-25%,0,0) rotate(-5deg);transform:translate3d(-25%,0,0) rotate(-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate(3deg);transform:translate3d(20%,0,0) rotate(3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate(-3deg);transform:translate3d(-15%,0,0) rotate(-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate(2deg);transform:translate3d(10%,0,0) rotate(2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate(-1deg);transform:translate3d(-5%,0,0) rotate(-1deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.wobble{-webkit-animation-name:wobble;animation-name:wobble}@-webkit-keyframes jello{0%,11.1%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}22.2%{-webkit-transform:skewX(-12.5deg) skewY(-12.5deg);transform:skewX(-12.5deg) skewY(-12.5deg)}33.3%{-webkit-transform:skewX(6.25deg) skewY(6.25deg);transform:skewX(6.25deg) skewY(6.25deg)}44.4%{-webkit-transform:skewX(-3.125deg) skewY(-3.125deg);transform:skewX(-3.125deg) skewY(-3.125deg)}55.5%{-webkit-transform:skewX(1.5625deg) skewY(1.5625deg);transform:skewX(1.5625deg) skewY(1.5625deg)}66.6%{-webkit-transform:skewX(-.78125deg) skewY(-.78125deg);transform:skewX(-.78125deg) skewY(-.78125deg)}77.7%{-webkit-transform:skewX(.390625deg) skewY(.390625deg);transform:skewX(.390625deg) skewY(.390625deg)}88.8%{-webkit-transform:skewX(-.1953125deg) skewY(-.1953125deg);transform:skewX(-.1953125deg) skewY(-.1953125deg)}}@keyframes jello{0%,11.1%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}22.2%{-webkit-transform:skewX(-12.5deg) skewY(-12.5deg);transform:skewX(-12.5deg) skewY(-12.5deg)}33.3%{-webkit-transform:skewX(6.25deg) skewY(6.25deg);transform:skewX(6.25deg) skewY(6.25deg)}44.4%{-webkit-transform:skewX(-3.125deg) skewY(-3.125deg);transform:skewX(-3.125deg) skewY(-3.125deg)}55.5%{-webkit-transform:skewX(1.5625deg) skewY(1.5625deg);transform:skewX(1.5625deg) skewY(1.5625deg)}66.6%{-webkit-transform:skewX(-.78125deg) skewY(-.78125deg);transform:skewX(-.78125deg) skewY(-.78125deg)}77.7%{-webkit-transform:skewX(.390625deg) skewY(.390625deg);transform:skewX(.390625deg) skewY(.390625deg)}88.8%{-webkit-transform:skewX(-.1953125deg) skewY(-.1953125deg);transform:skewX(-.1953125deg) skewY(-.1953125deg)}}.jello{-webkit-animation-name:jello;animation-name:jello;-webkit-transform-origin:center;transform-origin:center}@-webkit-keyframes heartBeat{0%{-webkit-transform:scale(1);transform:scale(1)}14%{-webkit-transform:scale(1.3);transform:scale(1.3)}28%{-webkit-transform:scale(1);transform:scale(1)}42%{-webkit-transform:scale(1.3);transform:scale(1.3)}70%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes heartBeat{0%{-webkit-transform:scale(1);transform:scale(1)}14%{-webkit-transform:scale(1.3);transform:scale(1.3)}28%{-webkit-transform:scale(1);transform:scale(1)}42%{-webkit-transform:scale(1.3);transform:scale(1.3)}70%{-webkit-transform:scale(1);transform:scale(1)}}.heartBeat{-webkit-animation-name:heartBeat;animation-name:heartBeat;-webkit-animation-duration:1.3s;animation-duration:1.3s;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}@-webkit-keyframes bounceIn{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}to{opacity:1;-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes bounceIn{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}to{opacity:1;-webkit-transform:scaleX(1);transform:scaleX(1)}}.bounceIn{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-name:bounceIn;animation-name:bounceIn}@-webkit-keyframes bounceInDown{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0);transform:translate3d(0,-3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInDown{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0);transform:translate3d(0,-3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.bounceInDown{-webkit-animation-name:bounceInDown;animation-name:bounceInDown}@-webkit-keyframes bounceInLeft{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0);transform:translate3d(-3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInLeft{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0);transform:translate3d(-3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.bounceInLeft{-webkit-animation-name:bounceInLeft;animation-name:bounceInLeft}@-webkit-keyframes bounceInRight{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInRight{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.bounceInRight{-webkit-animation-name:bounceInRight;animation-name:bounceInRight}@-webkit-keyframes bounceInUp{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0);transform:translate3d(0,3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInUp{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0);transform:translate3d(0,3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.bounceInUp{-webkit-animation-name:bounceInUp;animation-name:bounceInUp}@-webkit-keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}to{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}@keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}to{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}.bounceOut{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-name:bounceOut;animation-name:bounceOut}@-webkit-keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.bounceOutDown{-webkit-animation-name:bounceOutDown;animation-name:bounceOutDown}@-webkit-keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.bounceOutLeft{-webkit-animation-name:bounceOutLeft;animation-name:bounceOutLeft}@-webkit-keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.bounceOutRight{-webkit-animation-name:bounceOutRight;animation-name:bounceOutRight}@-webkit-keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.bounceOutUp{-webkit-animation-name:bounceOutUp;animation-name:bounceOutUp}@-webkit-keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn}@-webkit-keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.fadeInDown{-webkit-animation-name:fadeInDown;animation-name:fadeInDown}@-webkit-keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.fadeInDownBig{-webkit-animation-name:fadeInDownBig;animation-name:fadeInDownBig}@-webkit-keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.fadeInLeft{-webkit-animation-name:fadeInLeft;animation-name:fadeInLeft}@-webkit-keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.fadeInLeftBig{-webkit-animation-name:fadeInLeftBig;animation-name:fadeInLeftBig}@-webkit-keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.fadeInRight{-webkit-animation-name:fadeInRight;animation-name:fadeInRight}@-webkit-keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.fadeInRightBig{-webkit-animation-name:fadeInRightBig;animation-name:fadeInRightBig}@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.fadeInUp{-webkit-animation-name:fadeInUp;animation-name:fadeInUp}@-webkit-keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.fadeInUpBig{-webkit-animation-name:fadeInUpBig;animation-name:fadeInUpBig}@-webkit-keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut}@-webkit-keyframes fadeOutDown{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes fadeOutDown{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.fadeOutDown{-webkit-animation-name:fadeOutDown;animation-name:fadeOutDown}@-webkit-keyframes fadeOutDownBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes fadeOutDownBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.fadeOutDownBig{-webkit-animation-name:fadeOutDownBig;animation-name:fadeOutDownBig}@-webkit-keyframes fadeOutLeft{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes fadeOutLeft{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.fadeOutLeft{-webkit-animation-name:fadeOutLeft;animation-name:fadeOutLeft}@-webkit-keyframes fadeOutLeftBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes fadeOutLeftBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.fadeOutLeftBig{-webkit-animation-name:fadeOutLeftBig;animation-name:fadeOutLeftBig}@-webkit-keyframes fadeOutRight{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes fadeOutRight{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.fadeOutRight{-webkit-animation-name:fadeOutRight;animation-name:fadeOutRight}@-webkit-keyframes fadeOutRightBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes fadeOutRightBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.fadeOutRightBig{-webkit-animation-name:fadeOutRightBig;animation-name:fadeOutRightBig}@-webkit-keyframes fadeOutUp{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes fadeOutUp{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.fadeOutUp{-webkit-animation-name:fadeOutUp;animation-name:fadeOutUp}@-webkit-keyframes fadeOutUpBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes fadeOutUpBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.fadeOutUpBig{-webkit-animation-name:fadeOutUpBig;animation-name:fadeOutUpBig}@-webkit-keyframes flip{0%{-webkit-transform:perspective(400px) scaleX(1) translateZ(0) rotateY(-1turn);transform:perspective(400px) scaleX(1) translateZ(0) rotateY(-1turn);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-190deg);transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-170deg);transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95) translateZ(0) rotateY(0deg);transform:perspective(400px) scale3d(.95,.95,.95) translateZ(0) rotateY(0deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}to{-webkit-transform:perspective(400px) scaleX(1) translateZ(0) rotateY(0deg);transform:perspective(400px) scaleX(1) translateZ(0) rotateY(0deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}@keyframes flip{0%{-webkit-transform:perspective(400px) scaleX(1) translateZ(0) rotateY(-1turn);transform:perspective(400px) scaleX(1) translateZ(0) rotateY(-1turn);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-190deg);transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-170deg);transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95) translateZ(0) rotateY(0deg);transform:perspective(400px) scale3d(.95,.95,.95) translateZ(0) rotateY(0deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}to{-webkit-transform:perspective(400px) scaleX(1) translateZ(0) rotateY(0deg);transform:perspective(400px) scaleX(1) translateZ(0) rotateY(0deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}.animated.flip{-webkit-backface-visibility:visible;backface-visibility:visible;-webkit-animation-name:flip;animation-name:flip}@-webkit-keyframes flipInX{0%{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotateX(10deg);transform:perspective(400px) rotateX(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateX(-5deg);transform:perspective(400px) rotateX(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInX{0%{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotateX(10deg);transform:perspective(400px) rotateX(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateX(-5deg);transform:perspective(400px) rotateX(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}.flipInX{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInX;animation-name:flipInX}@-webkit-keyframes flipInY{0%{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotateY(-20deg);transform:perspective(400px) rotateY(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotateY(10deg);transform:perspective(400px) rotateY(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateY(-5deg);transform:perspective(400px) rotateY(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInY{0%{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotateY(-20deg);transform:perspective(400px) rotateY(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotateY(10deg);transform:perspective(400px) rotateY(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateY(-5deg);transform:perspective(400px) rotateY(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}.flipInY{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInY;animation-name:flipInY}@-webkit-keyframes flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);opacity:1}to{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);opacity:0}}@keyframes flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);opacity:1}to{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);opacity:0}}.flipOutX{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-name:flipOutX;animation-name:flipOutX;-webkit-backface-visibility:visible!important;backface-visibility:visible!important}@-webkit-keyframes flipOutY{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateY(-15deg);transform:perspective(400px) rotateY(-15deg);opacity:1}to{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);opacity:0}}@keyframes flipOutY{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateY(-15deg);transform:perspective(400px) rotateY(-15deg);opacity:1}to{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);opacity:0}}.flipOutY{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipOutY;animation-name:flipOutY}@-webkit-keyframes lightSpeedIn{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes lightSpeedIn{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.lightSpeedIn{-webkit-animation-name:lightSpeedIn;animation-name:lightSpeedIn;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-webkit-keyframes lightSpeedOut{0%{opacity:1}to{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}@keyframes lightSpeedOut{0%{opacity:1}to{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}.lightSpeedOut{-webkit-animation-name:lightSpeedOut;animation-name:lightSpeedOut;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes rotateIn{0%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate(-200deg);transform:rotate(-200deg);opacity:0}to{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateIn{0%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate(-200deg);transform:rotate(-200deg);opacity:0}to{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.rotateIn{-webkit-animation-name:rotateIn;animation-name:rotateIn}@-webkit-keyframes rotateInDownLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateInDownLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.rotateInDownLeft{-webkit-animation-name:rotateInDownLeft;animation-name:rotateInDownLeft}@-webkit-keyframes rotateInDownRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateInDownRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.rotateInDownRight{-webkit-animation-name:rotateInDownRight;animation-name:rotateInDownRight}@-webkit-keyframes rotateInUpLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateInUpLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.rotateInUpLeft{-webkit-animation-name:rotateInUpLeft;animation-name:rotateInUpLeft}@-webkit-keyframes rotateInUpRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateInUpRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.rotateInUpRight{-webkit-animation-name:rotateInUpRight;animation-name:rotateInUpRight}@-webkit-keyframes rotateOut{0%{-webkit-transform-origin:center;transform-origin:center;opacity:1}to{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate(200deg);transform:rotate(200deg);opacity:0}}@keyframes rotateOut{0%{-webkit-transform-origin:center;transform-origin:center;opacity:1}to{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate(200deg);transform:rotate(200deg);opacity:0}}.rotateOut{-webkit-animation-name:rotateOut;animation-name:rotateOut}@-webkit-keyframes rotateOutDownLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}}@keyframes rotateOutDownLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}}.rotateOutDownLeft{-webkit-animation-name:rotateOutDownLeft;animation-name:rotateOutDownLeft}@-webkit-keyframes rotateOutDownRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}@keyframes rotateOutDownRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}.rotateOutDownRight{-webkit-animation-name:rotateOutDownRight;animation-name:rotateOutDownRight}@-webkit-keyframes rotateOutUpLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}@keyframes rotateOutUpLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}.rotateOutUpLeft{-webkit-animation-name:rotateOutUpLeft;animation-name:rotateOutUpLeft}@-webkit-keyframes rotateOutUpRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(90deg);transform:rotate(90deg);opacity:0}}@keyframes rotateOutUpRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(90deg);transform:rotate(90deg);opacity:0}}.rotateOutUpRight{-webkit-animation-name:rotateOutUpRight;animation-name:rotateOutUpRight}@-webkit-keyframes hinge{0%{-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate(80deg);transform:rotate(80deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate(60deg);transform:rotate(60deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}to{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}@keyframes hinge{0%{-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate(80deg);transform:rotate(80deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate(60deg);transform:rotate(60deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}to{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}.hinge{-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-name:hinge;animation-name:hinge}@-webkit-keyframes jackInTheBox{0%{opacity:0;-webkit-transform:scale(.1) rotate(30deg);transform:scale(.1) rotate(30deg);-webkit-transform-origin:center bottom;transform-origin:center bottom}50%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}70%{-webkit-transform:rotate(3deg);transform:rotate(3deg)}to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes jackInTheBox{0%{opacity:0;-webkit-transform:scale(.1) rotate(30deg);transform:scale(.1) rotate(30deg);-webkit-transform-origin:center bottom;transform-origin:center bottom}50%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}70%{-webkit-transform:rotate(3deg);transform:rotate(3deg)}to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}.jackInTheBox{-webkit-animation-name:jackInTheBox;animation-name:jackInTheBox}@-webkit-keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate(-120deg);transform:translate3d(-100%,0,0) rotate(-120deg)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate(-120deg);transform:translate3d(-100%,0,0) rotate(-120deg)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.rollIn{-webkit-animation-name:rollIn;animation-name:rollIn}@-webkit-keyframes rollOut{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate(120deg);transform:translate3d(100%,0,0) rotate(120deg)}}@keyframes rollOut{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate(120deg);transform:translate3d(100%,0,0) rotate(120deg)}}.rollOut{-webkit-animation-name:rollOut;animation-name:rollOut}@-webkit-keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}.zoomIn{-webkit-animation-name:zoomIn;animation-name:zoomIn}@-webkit-keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInDown{-webkit-animation-name:zoomInDown;animation-name:zoomInDown}@-webkit-keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInLeft{-webkit-animation-name:zoomInLeft;animation-name:zoomInLeft}@-webkit-keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInRight{-webkit-animation-name:zoomInRight;animation-name:zoomInRight}@-webkit-keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInUp{-webkit-animation-name:zoomInUp;animation-name:zoomInUp}@-webkit-keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:0}}@keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:0}}.zoomOut{-webkit-animation-name:zoomOut;animation-name:zoomOut}@-webkit-keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomOutDown{-webkit-animation-name:zoomOutDown;animation-name:zoomOutDown}@-webkit-keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0);-webkit-transform-origin:left center;transform-origin:left center}}@keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0);-webkit-transform-origin:left center;transform-origin:left center}}.zoomOutLeft{-webkit-animation-name:zoomOutLeft;animation-name:zoomOutLeft}@-webkit-keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0);-webkit-transform-origin:right center;transform-origin:right center}}@keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0);-webkit-transform-origin:right center;transform-origin:right center}}.zoomOutRight{-webkit-animation-name:zoomOutRight;animation-name:zoomOutRight}@-webkit-keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomOutUp{-webkit-animation-name:zoomOutUp;animation-name:zoomOutUp}@-webkit-keyframes slideInDown{0%{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInDown{0%{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.slideInDown{-webkit-animation-name:slideInDown;animation-name:slideInDown}@-webkit-keyframes slideInLeft{0%{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInLeft{0%{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.slideInLeft{-webkit-animation-name:slideInLeft;animation-name:slideInLeft}@-webkit-keyframes slideInRight{0%{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInRight{0%{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.slideInRight{-webkit-animation-name:slideInRight;animation-name:slideInRight}@-webkit-keyframes slideInUp{0%{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInUp{0%{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.slideInUp{-webkit-animation-name:slideInUp;animation-name:slideInUp}@-webkit-keyframes slideOutDown{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes slideOutDown{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.slideOutDown{-webkit-animation-name:slideOutDown;animation-name:slideOutDown}@-webkit-keyframes slideOutLeft{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes slideOutLeft{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.slideOutLeft{-webkit-animation-name:slideOutLeft;animation-name:slideOutLeft}@-webkit-keyframes slideOutRight{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes slideOutRight{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.slideOutRight{-webkit-animation-name:slideOutRight;animation-name:slideOutRight}@-webkit-keyframes slideOutUp{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes slideOutUp{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.slideOutUp{-webkit-animation-name:slideOutUp;animation-name:slideOutUp}.animated{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.animated.infinite{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.animated.delay-1s{-webkit-animation-delay:1s;animation-delay:1s}.animated.delay-2s{-webkit-animation-delay:2s;animation-delay:2s}.animated.delay-3s{-webkit-animation-delay:3s;animation-delay:3s}.animated.delay-4s{-webkit-animation-delay:4s;animation-delay:4s}.animated.delay-5s{-webkit-animation-delay:5s;animation-delay:5s}.animated.fast{-webkit-animation-duration:.8s;animation-duration:.8s}.animated.faster{-webkit-animation-duration:.5s;animation-duration:.5s}.animated.slow{-webkit-animation-duration:2s;animation-duration:2s}.animated.slower{-webkit-animation-duration:3s;animation-duration:3s}@media (prefers-reduced-motion:reduce),(print){.animated{-webkit-animation-duration:1ms!important;animation-duration:1ms!important;-webkit-transition-duration:1ms!important;transition-duration:1ms!important;-webkit-animation-iteration-count:1!important;animation-iteration-count:1!important}} \ No newline at end of file
+ * Copyright (c) 2020 Animate.css
+ */:root{--animate-duration:1s;--animate-delay:1s;--animate-repeat:1}.animate__animated{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-duration:var(--animate-duration);animation-duration:var(--animate-duration);-webkit-animation-fill-mode:both;animation-fill-mode:both}.animate__animated.animate__infinite{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.animate__animated.animate__repeat-1{-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-iteration-count:var(--animate-repeat);animation-iteration-count:var(--animate-repeat)}.animate__animated.animate__repeat-2{-webkit-animation-iteration-count:2;animation-iteration-count:2;-webkit-animation-iteration-count:calc(var(--animate-repeat)*2);animation-iteration-count:calc(var(--animate-repeat)*2)}.animate__animated.animate__repeat-3{-webkit-animation-iteration-count:3;animation-iteration-count:3;-webkit-animation-iteration-count:calc(var(--animate-repeat)*3);animation-iteration-count:calc(var(--animate-repeat)*3)}.animate__animated.animate__delay-1s{-webkit-animation-delay:1s;animation-delay:1s;-webkit-animation-delay:var(--animate-delay);animation-delay:var(--animate-delay)}.animate__animated.animate__delay-2s{-webkit-animation-delay:2s;animation-delay:2s;-webkit-animation-delay:calc(var(--animate-delay)*2);animation-delay:calc(var(--animate-delay)*2)}.animate__animated.animate__delay-3s{-webkit-animation-delay:3s;animation-delay:3s;-webkit-animation-delay:calc(var(--animate-delay)*3);animation-delay:calc(var(--animate-delay)*3)}.animate__animated.animate__delay-4s{-webkit-animation-delay:4s;animation-delay:4s;-webkit-animation-delay:calc(var(--animate-delay)*4);animation-delay:calc(var(--animate-delay)*4)}.animate__animated.animate__delay-5s{-webkit-animation-delay:5s;animation-delay:5s;-webkit-animation-delay:calc(var(--animate-delay)*5);animation-delay:calc(var(--animate-delay)*5)}.animate__animated.animate__faster{-webkit-animation-duration:.5s;animation-duration:.5s;-webkit-animation-duration:calc(var(--animate-duration)/2);animation-duration:calc(var(--animate-duration)/2)}.animate__animated.animate__fast{-webkit-animation-duration:.8s;animation-duration:.8s;-webkit-animation-duration:calc(var(--animate-duration)*0.8);animation-duration:calc(var(--animate-duration)*0.8)}.animate__animated.animate__slow{-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-duration:calc(var(--animate-duration)*2);animation-duration:calc(var(--animate-duration)*2)}.animate__animated.animate__slower{-webkit-animation-duration:3s;animation-duration:3s;-webkit-animation-duration:calc(var(--animate-duration)*3);animation-duration:calc(var(--animate-duration)*3)}@media (prefers-reduced-motion:reduce),print{.animate__animated{-webkit-animation-duration:1ms!important;animation-duration:1ms!important;-webkit-transition-duration:1ms!important;transition-duration:1ms!important;-webkit-animation-iteration-count:1!important;animation-iteration-count:1!important}.animate__animated[class*=Out]{opacity:0}}@-webkit-keyframes bounce{0%,20%,53%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translateZ(0);transform:translateZ(0)}40%,43%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-30px,0) scaleY(1.1);transform:translate3d(0,-30px,0) scaleY(1.1)}70%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-15px,0) scaleY(1.05);transform:translate3d(0,-15px,0) scaleY(1.05)}80%{-webkit-transition-timing-function:cubic-bezier(.215,.61,.355,1);transition-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translateZ(0) scaleY(.95);transform:translateZ(0) scaleY(.95)}90%{-webkit-transform:translate3d(0,-4px,0) scaleY(1.02);transform:translate3d(0,-4px,0) scaleY(1.02)}}@keyframes bounce{0%,20%,53%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translateZ(0);transform:translateZ(0)}40%,43%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-30px,0) scaleY(1.1);transform:translate3d(0,-30px,0) scaleY(1.1)}70%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-15px,0) scaleY(1.05);transform:translate3d(0,-15px,0) scaleY(1.05)}80%{-webkit-transition-timing-function:cubic-bezier(.215,.61,.355,1);transition-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translateZ(0) scaleY(.95);transform:translateZ(0) scaleY(.95)}90%{-webkit-transform:translate3d(0,-4px,0) scaleY(1.02);transform:translate3d(0,-4px,0) scaleY(1.02)}}.animate__bounce{-webkit-animation-name:bounce;animation-name:bounce;-webkit-transform-origin:center bottom;transform-origin:center bottom}@-webkit-keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}.animate__flash{-webkit-animation-name:flash;animation-name:flash}@-webkit-keyframes pulse{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes pulse{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}.animate__pulse{-webkit-animation-name:pulse;animation-name:pulse;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}@-webkit-keyframes rubberBand{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(.75,1.25,1);transform:scale3d(.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes rubberBand{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(.75,1.25,1);transform:scale3d(.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}.animate__rubberBand{-webkit-animation-name:rubberBand;animation-name:rubberBand}@-webkit-keyframes shakeX{0%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}@keyframes shakeX{0%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}.animate__shakeX{-webkit-animation-name:shakeX;animation-name:shakeX}@-webkit-keyframes shakeY{0%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}20%,40%,60%,80%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}}@keyframes shakeY{0%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}20%,40%,60%,80%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}}.animate__shakeY{-webkit-animation-name:shakeY;animation-name:shakeY}@-webkit-keyframes headShake{0%{-webkit-transform:translateX(0);transform:translateX(0)}6.5%{-webkit-transform:translateX(-6px) rotateY(-9deg);transform:translateX(-6px) rotateY(-9deg)}18.5%{-webkit-transform:translateX(5px) rotateY(7deg);transform:translateX(5px) rotateY(7deg)}31.5%{-webkit-transform:translateX(-3px) rotateY(-5deg);transform:translateX(-3px) rotateY(-5deg)}43.5%{-webkit-transform:translateX(2px) rotateY(3deg);transform:translateX(2px) rotateY(3deg)}50%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes headShake{0%{-webkit-transform:translateX(0);transform:translateX(0)}6.5%{-webkit-transform:translateX(-6px) rotateY(-9deg);transform:translateX(-6px) rotateY(-9deg)}18.5%{-webkit-transform:translateX(5px) rotateY(7deg);transform:translateX(5px) rotateY(7deg)}31.5%{-webkit-transform:translateX(-3px) rotateY(-5deg);transform:translateX(-3px) rotateY(-5deg)}43.5%{-webkit-transform:translateX(2px) rotateY(3deg);transform:translateX(2px) rotateY(3deg)}50%{-webkit-transform:translateX(0);transform:translateX(0)}}.animate__headShake{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-name:headShake;animation-name:headShake}@-webkit-keyframes swing{20%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}40%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}60%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}80%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@keyframes swing{20%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}40%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}60%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}80%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}.animate__swing{-webkit-transform-origin:top center;transform-origin:top center;-webkit-animation-name:swing;animation-name:swing}@-webkit-keyframes tada{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate(-3deg);transform:scale3d(.9,.9,.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(3deg);transform:scale3d(1.1,1.1,1.1) rotate(3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(-3deg);transform:scale3d(1.1,1.1,1.1) rotate(-3deg)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes tada{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate(-3deg);transform:scale3d(.9,.9,.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(3deg);transform:scale3d(1.1,1.1,1.1) rotate(3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(-3deg);transform:scale3d(1.1,1.1,1.1) rotate(-3deg)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}.animate__tada{-webkit-animation-name:tada;animation-name:tada}@-webkit-keyframes wobble{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}15%{-webkit-transform:translate3d(-25%,0,0) rotate(-5deg);transform:translate3d(-25%,0,0) rotate(-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate(3deg);transform:translate3d(20%,0,0) rotate(3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate(-3deg);transform:translate3d(-15%,0,0) rotate(-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate(2deg);transform:translate3d(10%,0,0) rotate(2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate(-1deg);transform:translate3d(-5%,0,0) rotate(-1deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes wobble{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}15%{-webkit-transform:translate3d(-25%,0,0) rotate(-5deg);transform:translate3d(-25%,0,0) rotate(-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate(3deg);transform:translate3d(20%,0,0) rotate(3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate(-3deg);transform:translate3d(-15%,0,0) rotate(-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate(2deg);transform:translate3d(10%,0,0) rotate(2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate(-1deg);transform:translate3d(-5%,0,0) rotate(-1deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__wobble{-webkit-animation-name:wobble;animation-name:wobble}@-webkit-keyframes jello{0%,11.1%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}22.2%{-webkit-transform:skewX(-12.5deg) skewY(-12.5deg);transform:skewX(-12.5deg) skewY(-12.5deg)}33.3%{-webkit-transform:skewX(6.25deg) skewY(6.25deg);transform:skewX(6.25deg) skewY(6.25deg)}44.4%{-webkit-transform:skewX(-3.125deg) skewY(-3.125deg);transform:skewX(-3.125deg) skewY(-3.125deg)}55.5%{-webkit-transform:skewX(1.5625deg) skewY(1.5625deg);transform:skewX(1.5625deg) skewY(1.5625deg)}66.6%{-webkit-transform:skewX(-.78125deg) skewY(-.78125deg);transform:skewX(-.78125deg) skewY(-.78125deg)}77.7%{-webkit-transform:skewX(.390625deg) skewY(.390625deg);transform:skewX(.390625deg) skewY(.390625deg)}88.8%{-webkit-transform:skewX(-.1953125deg) skewY(-.1953125deg);transform:skewX(-.1953125deg) skewY(-.1953125deg)}}@keyframes jello{0%,11.1%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}22.2%{-webkit-transform:skewX(-12.5deg) skewY(-12.5deg);transform:skewX(-12.5deg) skewY(-12.5deg)}33.3%{-webkit-transform:skewX(6.25deg) skewY(6.25deg);transform:skewX(6.25deg) skewY(6.25deg)}44.4%{-webkit-transform:skewX(-3.125deg) skewY(-3.125deg);transform:skewX(-3.125deg) skewY(-3.125deg)}55.5%{-webkit-transform:skewX(1.5625deg) skewY(1.5625deg);transform:skewX(1.5625deg) skewY(1.5625deg)}66.6%{-webkit-transform:skewX(-.78125deg) skewY(-.78125deg);transform:skewX(-.78125deg) skewY(-.78125deg)}77.7%{-webkit-transform:skewX(.390625deg) skewY(.390625deg);transform:skewX(.390625deg) skewY(.390625deg)}88.8%{-webkit-transform:skewX(-.1953125deg) skewY(-.1953125deg);transform:skewX(-.1953125deg) skewY(-.1953125deg)}}.animate__jello{-webkit-animation-name:jello;animation-name:jello;-webkit-transform-origin:center;transform-origin:center}@-webkit-keyframes heartBeat{0%{-webkit-transform:scale(1);transform:scale(1)}14%{-webkit-transform:scale(1.3);transform:scale(1.3)}28%{-webkit-transform:scale(1);transform:scale(1)}42%{-webkit-transform:scale(1.3);transform:scale(1.3)}70%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes heartBeat{0%{-webkit-transform:scale(1);transform:scale(1)}14%{-webkit-transform:scale(1.3);transform:scale(1.3)}28%{-webkit-transform:scale(1);transform:scale(1)}42%{-webkit-transform:scale(1.3);transform:scale(1.3)}70%{-webkit-transform:scale(1);transform:scale(1)}}.animate__heartBeat{-webkit-animation-name:heartBeat;animation-name:heartBeat;-webkit-animation-duration:1.3s;animation-duration:1.3s;-webkit-animation-duration:calc(var(--animate-duration)*1.3);animation-duration:calc(var(--animate-duration)*1.3);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}@-webkit-keyframes backInDown{0%{-webkit-transform:translateY(-1200px) scale(.7);transform:translateY(-1200px) scale(.7);opacity:.7}80%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes backInDown{0%{-webkit-transform:translateY(-1200px) scale(.7);transform:translateY(-1200px) scale(.7);opacity:.7}80%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}.animate__backInDown{-webkit-animation-name:backInDown;animation-name:backInDown}@-webkit-keyframes backInLeft{0%{-webkit-transform:translateX(-2000px) scale(.7);transform:translateX(-2000px) scale(.7);opacity:.7}80%{-webkit-transform:translateX(0) scale(.7);transform:translateX(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes backInLeft{0%{-webkit-transform:translateX(-2000px) scale(.7);transform:translateX(-2000px) scale(.7);opacity:.7}80%{-webkit-transform:translateX(0) scale(.7);transform:translateX(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}.animate__backInLeft{-webkit-animation-name:backInLeft;animation-name:backInLeft}@-webkit-keyframes backInRight{0%{-webkit-transform:translateX(2000px) scale(.7);transform:translateX(2000px) scale(.7);opacity:.7}80%{-webkit-transform:translateX(0) scale(.7);transform:translateX(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes backInRight{0%{-webkit-transform:translateX(2000px) scale(.7);transform:translateX(2000px) scale(.7);opacity:.7}80%{-webkit-transform:translateX(0) scale(.7);transform:translateX(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}.animate__backInRight{-webkit-animation-name:backInRight;animation-name:backInRight}@-webkit-keyframes backInUp{0%{-webkit-transform:translateY(1200px) scale(.7);transform:translateY(1200px) scale(.7);opacity:.7}80%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes backInUp{0%{-webkit-transform:translateY(1200px) scale(.7);transform:translateY(1200px) scale(.7);opacity:.7}80%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}.animate__backInUp{-webkit-animation-name:backInUp;animation-name:backInUp}@-webkit-keyframes backOutDown{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:translateY(700px) scale(.7);transform:translateY(700px) scale(.7);opacity:.7}}@keyframes backOutDown{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:translateY(700px) scale(.7);transform:translateY(700px) scale(.7);opacity:.7}}.animate__backOutDown{-webkit-animation-name:backOutDown;animation-name:backOutDown}@-webkit-keyframes backOutLeft{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateX(0) scale(.7);transform:translateX(0) scale(.7);opacity:.7}to{-webkit-transform:translateX(-2000px) scale(.7);transform:translateX(-2000px) scale(.7);opacity:.7}}@keyframes backOutLeft{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateX(0) scale(.7);transform:translateX(0) scale(.7);opacity:.7}to{-webkit-transform:translateX(-2000px) scale(.7);transform:translateX(-2000px) scale(.7);opacity:.7}}.animate__backOutLeft{-webkit-animation-name:backOutLeft;animation-name:backOutLeft}@-webkit-keyframes backOutRight{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateX(0) scale(.7);transform:translateX(0) scale(.7);opacity:.7}to{-webkit-transform:translateX(2000px) scale(.7);transform:translateX(2000px) scale(.7);opacity:.7}}@keyframes backOutRight{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateX(0) scale(.7);transform:translateX(0) scale(.7);opacity:.7}to{-webkit-transform:translateX(2000px) scale(.7);transform:translateX(2000px) scale(.7);opacity:.7}}.animate__backOutRight{-webkit-animation-name:backOutRight;animation-name:backOutRight}@-webkit-keyframes backOutUp{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:translateY(-700px) scale(.7);transform:translateY(-700px) scale(.7);opacity:.7}}@keyframes backOutUp{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:translateY(-700px) scale(.7);transform:translateY(-700px) scale(.7);opacity:.7}}.animate__backOutUp{-webkit-animation-name:backOutUp;animation-name:backOutUp}@-webkit-keyframes bounceIn{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}to{opacity:1;-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes bounceIn{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}to{opacity:1;-webkit-transform:scaleX(1);transform:scaleX(1)}}.animate__bounceIn{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-duration:calc(var(--animate-duration)*0.75);animation-duration:calc(var(--animate-duration)*0.75);-webkit-animation-name:bounceIn;animation-name:bounceIn}@-webkit-keyframes bounceInDown{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0) scaleY(3);transform:translate3d(0,-3000px,0) scaleY(3)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0) scaleY(.9);transform:translate3d(0,25px,0) scaleY(.9)}75%{-webkit-transform:translate3d(0,-10px,0) scaleY(.95);transform:translate3d(0,-10px,0) scaleY(.95)}90%{-webkit-transform:translate3d(0,5px,0) scaleY(.985);transform:translate3d(0,5px,0) scaleY(.985)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInDown{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0) scaleY(3);transform:translate3d(0,-3000px,0) scaleY(3)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0) scaleY(.9);transform:translate3d(0,25px,0) scaleY(.9)}75%{-webkit-transform:translate3d(0,-10px,0) scaleY(.95);transform:translate3d(0,-10px,0) scaleY(.95)}90%{-webkit-transform:translate3d(0,5px,0) scaleY(.985);transform:translate3d(0,5px,0) scaleY(.985)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__bounceInDown{-webkit-animation-name:bounceInDown;animation-name:bounceInDown}@-webkit-keyframes bounceInLeft{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0) scaleX(3);transform:translate3d(-3000px,0,0) scaleX(3)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0) scaleX(1);transform:translate3d(25px,0,0) scaleX(1)}75%{-webkit-transform:translate3d(-10px,0,0) scaleX(.98);transform:translate3d(-10px,0,0) scaleX(.98)}90%{-webkit-transform:translate3d(5px,0,0) scaleX(.995);transform:translate3d(5px,0,0) scaleX(.995)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInLeft{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0) scaleX(3);transform:translate3d(-3000px,0,0) scaleX(3)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0) scaleX(1);transform:translate3d(25px,0,0) scaleX(1)}75%{-webkit-transform:translate3d(-10px,0,0) scaleX(.98);transform:translate3d(-10px,0,0) scaleX(.98)}90%{-webkit-transform:translate3d(5px,0,0) scaleX(.995);transform:translate3d(5px,0,0) scaleX(.995)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__bounceInLeft{-webkit-animation-name:bounceInLeft;animation-name:bounceInLeft}@-webkit-keyframes bounceInRight{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0) scaleX(3);transform:translate3d(3000px,0,0) scaleX(3)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0) scaleX(1);transform:translate3d(-25px,0,0) scaleX(1)}75%{-webkit-transform:translate3d(10px,0,0) scaleX(.98);transform:translate3d(10px,0,0) scaleX(.98)}90%{-webkit-transform:translate3d(-5px,0,0) scaleX(.995);transform:translate3d(-5px,0,0) scaleX(.995)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInRight{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0) scaleX(3);transform:translate3d(3000px,0,0) scaleX(3)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0) scaleX(1);transform:translate3d(-25px,0,0) scaleX(1)}75%{-webkit-transform:translate3d(10px,0,0) scaleX(.98);transform:translate3d(10px,0,0) scaleX(.98)}90%{-webkit-transform:translate3d(-5px,0,0) scaleX(.995);transform:translate3d(-5px,0,0) scaleX(.995)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__bounceInRight{-webkit-animation-name:bounceInRight;animation-name:bounceInRight}@-webkit-keyframes bounceInUp{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0) scaleY(5);transform:translate3d(0,3000px,0) scaleY(5)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0) scaleY(.9);transform:translate3d(0,-20px,0) scaleY(.9)}75%{-webkit-transform:translate3d(0,10px,0) scaleY(.95);transform:translate3d(0,10px,0) scaleY(.95)}90%{-webkit-transform:translate3d(0,-5px,0) scaleY(.985);transform:translate3d(0,-5px,0) scaleY(.985)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInUp{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0) scaleY(5);transform:translate3d(0,3000px,0) scaleY(5)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0) scaleY(.9);transform:translate3d(0,-20px,0) scaleY(.9)}75%{-webkit-transform:translate3d(0,10px,0) scaleY(.95);transform:translate3d(0,10px,0) scaleY(.95)}90%{-webkit-transform:translate3d(0,-5px,0) scaleY(.985);transform:translate3d(0,-5px,0) scaleY(.985)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__bounceInUp{-webkit-animation-name:bounceInUp;animation-name:bounceInUp}@-webkit-keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}to{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}@keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}to{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}.animate__bounceOut{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-duration:calc(var(--animate-duration)*0.75);animation-duration:calc(var(--animate-duration)*0.75);-webkit-animation-name:bounceOut;animation-name:bounceOut}@-webkit-keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0) scaleY(.985);transform:translate3d(0,10px,0) scaleY(.985)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0) scaleY(.9);transform:translate3d(0,-20px,0) scaleY(.9)}to{opacity:0;-webkit-transform:translate3d(0,2000px,0) scaleY(3);transform:translate3d(0,2000px,0) scaleY(3)}}@keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0) scaleY(.985);transform:translate3d(0,10px,0) scaleY(.985)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0) scaleY(.9);transform:translate3d(0,-20px,0) scaleY(.9)}to{opacity:0;-webkit-transform:translate3d(0,2000px,0) scaleY(3);transform:translate3d(0,2000px,0) scaleY(3)}}.animate__bounceOutDown{-webkit-animation-name:bounceOutDown;animation-name:bounceOutDown}@-webkit-keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0) scaleX(.9);transform:translate3d(20px,0,0) scaleX(.9)}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0) scaleX(2);transform:translate3d(-2000px,0,0) scaleX(2)}}@keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0) scaleX(.9);transform:translate3d(20px,0,0) scaleX(.9)}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0) scaleX(2);transform:translate3d(-2000px,0,0) scaleX(2)}}.animate__bounceOutLeft{-webkit-animation-name:bounceOutLeft;animation-name:bounceOutLeft}@-webkit-keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0) scaleX(.9);transform:translate3d(-20px,0,0) scaleX(.9)}to{opacity:0;-webkit-transform:translate3d(2000px,0,0) scaleX(2);transform:translate3d(2000px,0,0) scaleX(2)}}@keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0) scaleX(.9);transform:translate3d(-20px,0,0) scaleX(.9)}to{opacity:0;-webkit-transform:translate3d(2000px,0,0) scaleX(2);transform:translate3d(2000px,0,0) scaleX(2)}}.animate__bounceOutRight{-webkit-animation-name:bounceOutRight;animation-name:bounceOutRight}@-webkit-keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0) scaleY(.985);transform:translate3d(0,-10px,0) scaleY(.985)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0) scaleY(.9);transform:translate3d(0,20px,0) scaleY(.9)}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0) scaleY(3);transform:translate3d(0,-2000px,0) scaleY(3)}}@keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0) scaleY(.985);transform:translate3d(0,-10px,0) scaleY(.985)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0) scaleY(.9);transform:translate3d(0,20px,0) scaleY(.9)}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0) scaleY(3);transform:translate3d(0,-2000px,0) scaleY(3)}}.animate__bounceOutUp{-webkit-animation-name:bounceOutUp;animation-name:bounceOutUp}@-webkit-keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.animate__fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn}@-webkit-keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInDown{-webkit-animation-name:fadeInDown;animation-name:fadeInDown}@-webkit-keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInDownBig{-webkit-animation-name:fadeInDownBig;animation-name:fadeInDownBig}@-webkit-keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInLeft{-webkit-animation-name:fadeInLeft;animation-name:fadeInLeft}@-webkit-keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInLeftBig{-webkit-animation-name:fadeInLeftBig;animation-name:fadeInLeftBig}@-webkit-keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInRight{-webkit-animation-name:fadeInRight;animation-name:fadeInRight}@-webkit-keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInRightBig{-webkit-animation-name:fadeInRightBig;animation-name:fadeInRightBig}@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInUp{-webkit-animation-name:fadeInUp;animation-name:fadeInUp}@-webkit-keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInUpBig{-webkit-animation-name:fadeInUpBig;animation-name:fadeInUpBig}@-webkit-keyframes fadeInTopLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,-100%,0);transform:translate3d(-100%,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInTopLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,-100%,0);transform:translate3d(-100%,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInTopLeft{-webkit-animation-name:fadeInTopLeft;animation-name:fadeInTopLeft}@-webkit-keyframes fadeInTopRight{0%{opacity:0;-webkit-transform:translate3d(100%,-100%,0);transform:translate3d(100%,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInTopRight{0%{opacity:0;-webkit-transform:translate3d(100%,-100%,0);transform:translate3d(100%,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInTopRight{-webkit-animation-name:fadeInTopRight;animation-name:fadeInTopRight}@-webkit-keyframes fadeInBottomLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,100%,0);transform:translate3d(-100%,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInBottomLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,100%,0);transform:translate3d(-100%,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInBottomLeft{-webkit-animation-name:fadeInBottomLeft;animation-name:fadeInBottomLeft}@-webkit-keyframes fadeInBottomRight{0%{opacity:0;-webkit-transform:translate3d(100%,100%,0);transform:translate3d(100%,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInBottomRight{0%{opacity:0;-webkit-transform:translate3d(100%,100%,0);transform:translate3d(100%,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInBottomRight{-webkit-animation-name:fadeInBottomRight;animation-name:fadeInBottomRight}@-webkit-keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.animate__fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut}@-webkit-keyframes fadeOutDown{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes fadeOutDown{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.animate__fadeOutDown{-webkit-animation-name:fadeOutDown;animation-name:fadeOutDown}@-webkit-keyframes fadeOutDownBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes fadeOutDownBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.animate__fadeOutDownBig{-webkit-animation-name:fadeOutDownBig;animation-name:fadeOutDownBig}@-webkit-keyframes fadeOutLeft{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes fadeOutLeft{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.animate__fadeOutLeft{-webkit-animation-name:fadeOutLeft;animation-name:fadeOutLeft}@-webkit-keyframes fadeOutLeftBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes fadeOutLeftBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.animate__fadeOutLeftBig{-webkit-animation-name:fadeOutLeftBig;animation-name:fadeOutLeftBig}@-webkit-keyframes fadeOutRight{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes fadeOutRight{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.animate__fadeOutRight{-webkit-animation-name:fadeOutRight;animation-name:fadeOutRight}@-webkit-keyframes fadeOutRightBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes fadeOutRightBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.animate__fadeOutRightBig{-webkit-animation-name:fadeOutRightBig;animation-name:fadeOutRightBig}@-webkit-keyframes fadeOutUp{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes fadeOutUp{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.animate__fadeOutUp{-webkit-animation-name:fadeOutUp;animation-name:fadeOutUp}@-webkit-keyframes fadeOutUpBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes fadeOutUpBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.animate__fadeOutUpBig{-webkit-animation-name:fadeOutUpBig;animation-name:fadeOutUpBig}@-webkit-keyframes fadeOutTopLeft{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(-100%,-100%,0);transform:translate3d(-100%,-100%,0)}}@keyframes fadeOutTopLeft{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(-100%,-100%,0);transform:translate3d(-100%,-100%,0)}}.animate__fadeOutTopLeft{-webkit-animation-name:fadeOutTopLeft;animation-name:fadeOutTopLeft}@-webkit-keyframes fadeOutTopRight{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(100%,-100%,0);transform:translate3d(100%,-100%,0)}}@keyframes fadeOutTopRight{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(100%,-100%,0);transform:translate3d(100%,-100%,0)}}.animate__fadeOutTopRight{-webkit-animation-name:fadeOutTopRight;animation-name:fadeOutTopRight}@-webkit-keyframes fadeOutBottomRight{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(100%,100%,0);transform:translate3d(100%,100%,0)}}@keyframes fadeOutBottomRight{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(100%,100%,0);transform:translate3d(100%,100%,0)}}.animate__fadeOutBottomRight{-webkit-animation-name:fadeOutBottomRight;animation-name:fadeOutBottomRight}@-webkit-keyframes fadeOutBottomLeft{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(-100%,100%,0);transform:translate3d(-100%,100%,0)}}@keyframes fadeOutBottomLeft{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(-100%,100%,0);transform:translate3d(-100%,100%,0)}}.animate__fadeOutBottomLeft{-webkit-animation-name:fadeOutBottomLeft;animation-name:fadeOutBottomLeft}@-webkit-keyframes flip{0%{-webkit-transform:perspective(400px) scaleX(1) translateZ(0) rotateY(-1turn);transform:perspective(400px) scaleX(1) translateZ(0) rotateY(-1turn);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-190deg);transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-170deg);transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95) translateZ(0) rotateY(0deg);transform:perspective(400px) scale3d(.95,.95,.95) translateZ(0) rotateY(0deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}to{-webkit-transform:perspective(400px) scaleX(1) translateZ(0) rotateY(0deg);transform:perspective(400px) scaleX(1) translateZ(0) rotateY(0deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}@keyframes flip{0%{-webkit-transform:perspective(400px) scaleX(1) translateZ(0) rotateY(-1turn);transform:perspective(400px) scaleX(1) translateZ(0) rotateY(-1turn);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-190deg);transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-170deg);transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95) translateZ(0) rotateY(0deg);transform:perspective(400px) scale3d(.95,.95,.95) translateZ(0) rotateY(0deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}to{-webkit-transform:perspective(400px) scaleX(1) translateZ(0) rotateY(0deg);transform:perspective(400px) scaleX(1) translateZ(0) rotateY(0deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}.animate__animated.animate__flip{-webkit-backface-visibility:visible;backface-visibility:visible;-webkit-animation-name:flip;animation-name:flip}@-webkit-keyframes flipInX{0%{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotateX(10deg);transform:perspective(400px) rotateX(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateX(-5deg);transform:perspective(400px) rotateX(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInX{0%{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotateX(10deg);transform:perspective(400px) rotateX(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateX(-5deg);transform:perspective(400px) rotateX(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}.animate__flipInX{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInX;animation-name:flipInX}@-webkit-keyframes flipInY{0%{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotateY(-20deg);transform:perspective(400px) rotateY(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotateY(10deg);transform:perspective(400px) rotateY(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateY(-5deg);transform:perspective(400px) rotateY(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInY{0%{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotateY(-20deg);transform:perspective(400px) rotateY(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotateY(10deg);transform:perspective(400px) rotateY(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateY(-5deg);transform:perspective(400px) rotateY(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}.animate__flipInY{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInY;animation-name:flipInY}@-webkit-keyframes flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);opacity:1}to{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);opacity:0}}@keyframes flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);opacity:1}to{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);opacity:0}}.animate__flipOutX{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-duration:calc(var(--animate-duration)*0.75);animation-duration:calc(var(--animate-duration)*0.75);-webkit-animation-name:flipOutX;animation-name:flipOutX;-webkit-backface-visibility:visible!important;backface-visibility:visible!important}@-webkit-keyframes flipOutY{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateY(-15deg);transform:perspective(400px) rotateY(-15deg);opacity:1}to{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);opacity:0}}@keyframes flipOutY{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateY(-15deg);transform:perspective(400px) rotateY(-15deg);opacity:1}to{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);opacity:0}}.animate__flipOutY{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-duration:calc(var(--animate-duration)*0.75);animation-duration:calc(var(--animate-duration)*0.75);-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipOutY;animation-name:flipOutY}@-webkit-keyframes lightSpeedInRight{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes lightSpeedInRight{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__lightSpeedInRight{-webkit-animation-name:lightSpeedInRight;animation-name:lightSpeedInRight;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-webkit-keyframes lightSpeedInLeft{0%{-webkit-transform:translate3d(-100%,0,0) skewX(30deg);transform:translate3d(-100%,0,0) skewX(30deg);opacity:0}60%{-webkit-transform:skewX(-20deg);transform:skewX(-20deg);opacity:1}80%{-webkit-transform:skewX(5deg);transform:skewX(5deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes lightSpeedInLeft{0%{-webkit-transform:translate3d(-100%,0,0) skewX(30deg);transform:translate3d(-100%,0,0) skewX(30deg);opacity:0}60%{-webkit-transform:skewX(-20deg);transform:skewX(-20deg);opacity:1}80%{-webkit-transform:skewX(5deg);transform:skewX(5deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__lightSpeedInLeft{-webkit-animation-name:lightSpeedInLeft;animation-name:lightSpeedInLeft;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-webkit-keyframes lightSpeedOutRight{0%{opacity:1}to{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}@keyframes lightSpeedOutRight{0%{opacity:1}to{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}.animate__lightSpeedOutRight{-webkit-animation-name:lightSpeedOutRight;animation-name:lightSpeedOutRight;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes lightSpeedOutLeft{0%{opacity:1}to{-webkit-transform:translate3d(-100%,0,0) skewX(-30deg);transform:translate3d(-100%,0,0) skewX(-30deg);opacity:0}}@keyframes lightSpeedOutLeft{0%{opacity:1}to{-webkit-transform:translate3d(-100%,0,0) skewX(-30deg);transform:translate3d(-100%,0,0) skewX(-30deg);opacity:0}}.animate__lightSpeedOutLeft{-webkit-animation-name:lightSpeedOutLeft;animation-name:lightSpeedOutLeft;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes rotateIn{0%{-webkit-transform:rotate(-200deg);transform:rotate(-200deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateIn{0%{-webkit-transform:rotate(-200deg);transform:rotate(-200deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.animate__rotateIn{-webkit-animation-name:rotateIn;animation-name:rotateIn;-webkit-transform-origin:center;transform-origin:center}@-webkit-keyframes rotateInDownLeft{0%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateInDownLeft{0%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.animate__rotateInDownLeft{-webkit-animation-name:rotateInDownLeft;animation-name:rotateInDownLeft;-webkit-transform-origin:left bottom;transform-origin:left bottom}@-webkit-keyframes rotateInDownRight{0%{-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateInDownRight{0%{-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.animate__rotateInDownRight{-webkit-animation-name:rotateInDownRight;animation-name:rotateInDownRight;-webkit-transform-origin:right bottom;transform-origin:right bottom}@-webkit-keyframes rotateInUpLeft{0%{-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateInUpLeft{0%{-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.animate__rotateInUpLeft{-webkit-animation-name:rotateInUpLeft;animation-name:rotateInUpLeft;-webkit-transform-origin:left bottom;transform-origin:left bottom}@-webkit-keyframes rotateInUpRight{0%{-webkit-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateInUpRight{0%{-webkit-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.animate__rotateInUpRight{-webkit-animation-name:rotateInUpRight;animation-name:rotateInUpRight;-webkit-transform-origin:right bottom;transform-origin:right bottom}@-webkit-keyframes rotateOut{0%{opacity:1}to{-webkit-transform:rotate(200deg);transform:rotate(200deg);opacity:0}}@keyframes rotateOut{0%{opacity:1}to{-webkit-transform:rotate(200deg);transform:rotate(200deg);opacity:0}}.animate__rotateOut{-webkit-animation-name:rotateOut;animation-name:rotateOut;-webkit-transform-origin:center;transform-origin:center}@-webkit-keyframes rotateOutDownLeft{0%{opacity:1}to{-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}}@keyframes rotateOutDownLeft{0%{opacity:1}to{-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}}.animate__rotateOutDownLeft{-webkit-animation-name:rotateOutDownLeft;animation-name:rotateOutDownLeft;-webkit-transform-origin:left bottom;transform-origin:left bottom}@-webkit-keyframes rotateOutDownRight{0%{opacity:1}to{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}@keyframes rotateOutDownRight{0%{opacity:1}to{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}.animate__rotateOutDownRight{-webkit-animation-name:rotateOutDownRight;animation-name:rotateOutDownRight;-webkit-transform-origin:right bottom;transform-origin:right bottom}@-webkit-keyframes rotateOutUpLeft{0%{opacity:1}to{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}@keyframes rotateOutUpLeft{0%{opacity:1}to{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}.animate__rotateOutUpLeft{-webkit-animation-name:rotateOutUpLeft;animation-name:rotateOutUpLeft;-webkit-transform-origin:left bottom;transform-origin:left bottom}@-webkit-keyframes rotateOutUpRight{0%{opacity:1}to{-webkit-transform:rotate(90deg);transform:rotate(90deg);opacity:0}}@keyframes rotateOutUpRight{0%{opacity:1}to{-webkit-transform:rotate(90deg);transform:rotate(90deg);opacity:0}}.animate__rotateOutUpRight{-webkit-animation-name:rotateOutUpRight;animation-name:rotateOutUpRight;-webkit-transform-origin:right bottom;transform-origin:right bottom}@-webkit-keyframes hinge{0%{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate(80deg);transform:rotate(80deg);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate(60deg);transform:rotate(60deg);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}to{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}@keyframes hinge{0%{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate(80deg);transform:rotate(80deg);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate(60deg);transform:rotate(60deg);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}to{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}.animate__hinge{-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-duration:calc(var(--animate-duration)*2);animation-duration:calc(var(--animate-duration)*2);-webkit-animation-name:hinge;animation-name:hinge;-webkit-transform-origin:top left;transform-origin:top left}@-webkit-keyframes jackInTheBox{0%{opacity:0;-webkit-transform:scale(.1) rotate(30deg);transform:scale(.1) rotate(30deg);-webkit-transform-origin:center bottom;transform-origin:center bottom}50%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}70%{-webkit-transform:rotate(3deg);transform:rotate(3deg)}to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes jackInTheBox{0%{opacity:0;-webkit-transform:scale(.1) rotate(30deg);transform:scale(.1) rotate(30deg);-webkit-transform-origin:center bottom;transform-origin:center bottom}50%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}70%{-webkit-transform:rotate(3deg);transform:rotate(3deg)}to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}.animate__jackInTheBox{-webkit-animation-name:jackInTheBox;animation-name:jackInTheBox}@-webkit-keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate(-120deg);transform:translate3d(-100%,0,0) rotate(-120deg)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate(-120deg);transform:translate3d(-100%,0,0) rotate(-120deg)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__rollIn{-webkit-animation-name:rollIn;animation-name:rollIn}@-webkit-keyframes rollOut{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate(120deg);transform:translate3d(100%,0,0) rotate(120deg)}}@keyframes rollOut{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate(120deg);transform:translate3d(100%,0,0) rotate(120deg)}}.animate__rollOut{-webkit-animation-name:rollOut;animation-name:rollOut}@-webkit-keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}.animate__zoomIn{-webkit-animation-name:zoomIn;animation-name:zoomIn}@-webkit-keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.animate__zoomInDown{-webkit-animation-name:zoomInDown;animation-name:zoomInDown}@-webkit-keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.animate__zoomInLeft{-webkit-animation-name:zoomInLeft;animation-name:zoomInLeft}@-webkit-keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.animate__zoomInRight{-webkit-animation-name:zoomInRight;animation-name:zoomInRight}@-webkit-keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.animate__zoomInUp{-webkit-animation-name:zoomInUp;animation-name:zoomInUp}@-webkit-keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:0}}@keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:0}}.animate__zoomOut{-webkit-animation-name:zoomOut;animation-name:zoomOut}@-webkit-keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.animate__zoomOutDown{-webkit-animation-name:zoomOutDown;animation-name:zoomOutDown;-webkit-transform-origin:center bottom;transform-origin:center bottom}@-webkit-keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0)}}@keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0)}}.animate__zoomOutLeft{-webkit-animation-name:zoomOutLeft;animation-name:zoomOutLeft;-webkit-transform-origin:left center;transform-origin:left center}@-webkit-keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0)}}@keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0)}}.animate__zoomOutRight{-webkit-animation-name:zoomOutRight;animation-name:zoomOutRight;-webkit-transform-origin:right center;transform-origin:right center}@-webkit-keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.animate__zoomOutUp{-webkit-animation-name:zoomOutUp;animation-name:zoomOutUp;-webkit-transform-origin:center bottom;transform-origin:center bottom}@-webkit-keyframes slideInDown{0%{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInDown{0%{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__slideInDown{-webkit-animation-name:slideInDown;animation-name:slideInDown}@-webkit-keyframes slideInLeft{0%{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInLeft{0%{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__slideInLeft{-webkit-animation-name:slideInLeft;animation-name:slideInLeft}@-webkit-keyframes slideInRight{0%{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInRight{0%{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__slideInRight{-webkit-animation-name:slideInRight;animation-name:slideInRight}@-webkit-keyframes slideInUp{0%{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInUp{0%{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__slideInUp{-webkit-animation-name:slideInUp;animation-name:slideInUp}@-webkit-keyframes slideOutDown{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes slideOutDown{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.animate__slideOutDown{-webkit-animation-name:slideOutDown;animation-name:slideOutDown}@-webkit-keyframes slideOutLeft{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes slideOutLeft{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.animate__slideOutLeft{-webkit-animation-name:slideOutLeft;animation-name:slideOutLeft}@-webkit-keyframes slideOutRight{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes slideOutRight{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.animate__slideOutRight{-webkit-animation-name:slideOutRight;animation-name:slideOutRight}@-webkit-keyframes slideOutUp{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes slideOutUp{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.animate__slideOutUp{-webkit-animation-name:slideOutUp;animation-name:slideOutUp} \ No newline at end of file
diff --git a/assets/lib/autocomplete/autocomplete.min.js b/assets/lib/autocomplete/autocomplete.min.js
index e115402f..f086420f 100644
--- a/assets/lib/autocomplete/autocomplete.min.js
+++ b/assets/lib/autocomplete/autocomplete.min.js
@@ -1,7 +1,7 @@
/*!
- * autocomplete.js 0.37.1
+ * autocomplete.js 0.38.1
* https://github.com/algolia/autocomplete.js
- * Copyright 2020 Algolia, Inc. and other contributors; Licensed MIT
+ * Copyright 2021 Algolia, Inc. and other contributors; Licensed MIT
*/
!function(a,b){"object"==typeof exports&&"object"==typeof module?module.exports=b():"function"==typeof define&&define.amd?define([],b):"object"==typeof exports?exports.autocomplete=b():a.autocomplete=b()}(this,function(){return function(a){function b(d){if(c[d])return c[d].exports;var e=c[d]={exports:{},id:d,loaded:!1};return a[d].call(e.exports,e,e.exports,b),e.loaded=!0,e.exports}var c={};return b.m=a,b.c=c,b.p="",b(0)}([function(a,b,c){"use strict";a.exports=c(1)},function(a,b,c){"use strict";function d(a,b,c,d){c=f.isArray(c)?c:[].slice.call(arguments,2);var j=e(a).each(function(a,f){var j=e(f),k=new i({el:j}),l=d||new h({input:j,eventBus:k,dropdownMenuContainer:b.dropdownMenuContainer,hint:void 0===b.hint||!!b.hint,minLength:b.minLength,autoselect:b.autoselect,autoselectOnBlur:b.autoselectOnBlur,tabAutocomplete:b.tabAutocomplete,openOnFocus:b.openOnFocus,templates:b.templates,debug:b.debug,clearOnSelected:b.clearOnSelected,cssClasses:b.cssClasses,datasets:c,keyboardShortcuts:b.keyboardShortcuts,appendTo:b.appendTo,autoWidth:b.autoWidth,ariaLabel:b.ariaLabel||f.getAttribute("aria-label")});j.data(g,l)});return j.autocomplete={},f.each(["open","close","getVal","setVal","destroy","getWrapper"],function(a){j.autocomplete[a]=function(){var b,c=arguments;return j.each(function(d,f){var h=e(f).data(g);b=h[a].apply(h,c)}),b}}),j}var e=c(2);c(3).element=e;var f=c(4);f.isArray=e.isArray,f.isFunction=e.isFunction,f.isObject=e.isPlainObject,f.bind=e.proxy,f.each=function(a,b){function c(a,c){return b(c,a)}e.each(a,c)},f.map=e.map,f.mixin=e.extend,f.Event=e.Event;var g="aaAutocomplete",h=c(5),i=c(6);d.sources=h.sources,d.escapeHighlightedString=f.escapeHighlightedString;var j="autocomplete"in window,k=window.autocomplete;d.noConflict=function(){return j?window.autocomplete=k:delete window.autocomplete,d},a.exports=d},function(a,b){!function(b,c){a.exports=function(a){var b=function(){function b(a){return null==a?String(a):V[W.call(a)]||"object"}function c(a){return"function"==b(a)}function d(a){return null!=a&&a==a.window}function e(a){return null!=a&&a.nodeType==a.DOCUMENT_NODE}function f(a){return"object"==b(a)}function g(a){return f(a)&&!d(a)&&Object.getPrototypeOf(a)==Object.prototype}function h(a){var b=!!a&&"length"in a&&a.length,c=z.type(a);return"function"!=c&&!d(a)&&("array"==c||0===b||"number"==typeof b&&b>0&&b-1 in a)}function i(a){return F.call(a,function(a){return null!=a})}function j(a){return a.length>0?z.fn.concat.apply([],a):a}function k(a){return a.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/_/g,"-").toLowerCase()}function l(a){return a in J?J[a]:J[a]=new RegExp("(^|\\s)"+a+"(\\s|$)")}function m(a,b){return"number"!=typeof b||K[k(a)]?b:b+"px"}function n(a){var b,c;return I[a]||(b=H.createElement(a),H.body.appendChild(b),c=getComputedStyle(b,"").getPropertyValue("display"),b.parentNode.removeChild(b),"none"==c&&(c="block"),I[a]=c),I[a]}function o(a){return"children"in a?G.call(a.children):z.map(a.childNodes,function(a){if(1==a.nodeType)return a})}function p(a,b){var c,d=a?a.length:0;for(c=0;c<d;c++)this[c]=a[c];this.length=d,this.selector=b||""}function q(a,b,c){for(y in b)c&&(g(b[y])||$(b[y]))?(g(b[y])&&!g(a[y])&&(a[y]={}),$(b[y])&&!$(a[y])&&(a[y]=[]),q(a[y],b[y],c)):b[y]!==x&&(a[y]=b[y])}function r(a,b){return null==b?z(a):z(a).filter(b)}function s(a,b,d,e){return c(b)?b.call(a,d,e):b}function t(a,b,c){null==c?a.removeAttribute(b):a.setAttribute(b,c)}function u(a,b){var c=a.className||"",d=c&&c.baseVal!==x;if(b===x)return d?c.baseVal:c;d?c.baseVal=b:a.className=b}function v(a){try{return a?"true"==a||"false"!=a&&("null"==a?null:+a+""==a?+a:/^[\[\{]/.test(a)?z.parseJSON(a):a):a}catch(b){return a}}function w(a,b){b(a);for(var c=0,d=a.childNodes.length;c<d;c++)w(a.childNodes[c],b)}var x,y,z,A,B,C,D=[],E=D.concat,F=D.filter,G=D.slice,H=a.document,I={},J={},K={"column-count":1,columns:1,"font-weight":1,"line-height":1,opacity:1,"z-index":1,zoom:1},L=/^\s*<(\w+|!)[^>]*>/,M=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,N=/^(?:body|html)$/i,O=["val","css","html","text","data","width","height","offset"],P=["after","prepend","before","append"],Q=H.createElement("table"),R=H.createElement("tr"),S={tr:H.createElement("tbody"),tbody:Q,thead:Q,tfoot:Q,td:R,th:R,"*":H.createElement("div")},T=/complete|loaded|interactive/,U=/^[\w-]*$/,V={},W=V.toString,X={},Y=H.createElement("div"),Z={tabindex:"tabIndex",readonly:"readOnly",for:"htmlFor",class:"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},$=Array.isArray||function(a){return a instanceof Array};return X.matches=function(a,b){if(!b||!a||1!==a.nodeType)return!1;var c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.matchesSelector;if(c)return c.call(a,b);var d,e=a.parentNode,f=!e;return f&&(e=Y).appendChild(a),d=~X.qsa(e,b).indexOf(a),f&&Y.removeChild(a),d},B=function(a){return a.replace(/-+(.)?/g,function(a,b){return b?b.toUpperCase():""})},C=function(a){return F.call(a,function(b,c){return a.indexOf(b)==c})},X.fragment=function(a,b,c){var d,e,f;return M.test(a)&&(d=z(H.createElement(RegExp.$1))),d||(a.replace&&(a=a.replace(/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,"<$1></$2>")),b===x&&(b=L.test(a)&&RegExp.$1),b in S||(b="*"),f=S[b],f.innerHTML=""+a,d=z.each(G.call(f.childNodes),function(){f.removeChild(this)})),g(c)&&(e=z(d),z.each(c,function(a,b){O.indexOf(a)>-1?e[a](b):e.attr(a,b)})),d},X.Z=function(a,b){return new p(a,b)},X.isZ=function(a){return a instanceof X.Z},X.init=function(a,b){var d;if(!a)return X.Z();if("string"==typeof a)if(a=a.trim(),"<"==a[0]&&L.test(a))d=X.fragment(a,RegExp.$1,b),a=null;else{if(b!==x)return z(b).find(a);d=X.qsa(H,a)}else{if(c(a))return z(H).ready(a);if(X.isZ(a))return a;if($(a))d=i(a);else if(f(a))d=[a],a=null;else if(L.test(a))d=X.fragment(a.trim(),RegExp.$1,b),a=null;else{if(b!==x)return z(b).find(a);d=X.qsa(H,a)}}return X.Z(d,a)},z=function(a,b){return X.init(a,b)},z.extend=function(a){var b,c=G.call(arguments,1);return"boolean"==typeof a&&(b=a,a=c.shift()),c.forEach(function(c){q(a,c,b)}),a},X.qsa=function(a,b){var c,d="#"==b[0],e=!d&&"."==b[0],f=d||e?b.slice(1):b,g=U.test(f);return a.getElementById&&g&&d?(c=a.getElementById(f))?[c]:[]:1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType?[]:G.call(g&&!d&&a.getElementsByClassName?e?a.getElementsByClassName(f):a.getElementsByTagName(b):a.querySelectorAll(b))},z.contains=H.documentElement.contains?function(a,b){return a!==b&&a.contains(b)}:function(a,b){for(;b&&(b=b.parentNode);)if(b===a)return!0;return!1},z.type=b,z.isFunction=c,z.isWindow=d,z.isArray=$,z.isPlainObject=g,z.isEmptyObject=function(a){var b;for(b in a)return!1;return!0},z.isNumeric=function(a){var b=Number(a),c=typeof a;return null!=a&&"boolean"!=c&&("string"!=c||a.length)&&!isNaN(b)&&isFinite(b)||!1},z.inArray=function(a,b,c){return D.indexOf.call(b,a,c)},z.camelCase=B,z.trim=function(a){return null==a?"":String.prototype.trim.call(a)},z.uuid=0,z.support={},z.expr={},z.noop=function(){},z.map=function(a,b){var c,d,e,f=[];if(h(a))for(d=0;d<a.length;d++)null!=(c=b(a[d],d))&&f.push(c);else for(e in a)null!=(c=b(a[e],e))&&f.push(c);return j(f)},z.each=function(a,b){var c,d;if(h(a)){for(c=0;c<a.length;c++)if(b.call(a[c],c,a[c])===!1)return a}else for(d in a)if(b.call(a[d],d,a[d])===!1)return a;return a},z.grep=function(a,b){return F.call(a,b)},a.JSON&&(z.parseJSON=JSON.parse),z.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){V["[object "+b+"]"]=b.toLowerCase()}),z.fn={constructor:X.Z,length:0,forEach:D.forEach,reduce:D.reduce,push:D.push,sort:D.sort,splice:D.splice,indexOf:D.indexOf,concat:function(){var a,b,c=[];for(a=0;a<arguments.length;a++)b=arguments[a],c[a]=X.isZ(b)?b.toArray():b;return E.apply(X.isZ(this)?this.toArray():this,c)},map:function(a){return z(z.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return z(G.apply(this,arguments))},ready:function(a){return T.test(H.readyState)&&H.body?a(z):H.addEventListener("DOMContentLoaded",function(){a(z)},!1),this},get:function(a){return a===x?G.call(this):this[a>=0?a:a+this.length]},toArray:function(){return this.get()},size:function(){return this.length},remove:function(){return this.each(function(){null!=this.parentNode&&this.parentNode.removeChild(this)})},each:function(a){return D.every.call(this,function(b,c){return a.call(b,c,b)!==!1}),this},filter:function(a){return c(a)?this.not(this.not(a)):z(F.call(this,function(b){return X.matches(b,a)}))},add:function(a,b){return z(C(this.concat(z(a,b))))},is:function(a){return this.length>0&&X.matches(this[0],a)},not:function(a){var b=[];if(c(a)&&a.call!==x)this.each(function(c){a.call(this,c)||b.push(this)});else{var d="string"==typeof a?this.filter(a):h(a)&&c(a.item)?G.call(a):z(a);this.forEach(function(a){d.indexOf(a)<0&&b.push(a)})}return z(b)},has:function(a){return this.filter(function(){return f(a)?z.contains(this,a):z(this).find(a).size()})},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){var a=this[0];return a&&!f(a)?a:z(a)},last:function(){var a=this[this.length-1];return a&&!f(a)?a:z(a)},find:function(a){var b=this;return a?"object"==typeof a?z(a).filter(function(){var a=this;return D.some.call(b,function(b){return z.contains(b,a)})}):1==this.length?z(X.qsa(this[0],a)):this.map(function(){return X.qsa(this,a)}):z()},closest:function(a,b){var c=[],d="object"==typeof a&&z(a);return this.each(function(f,g){for(;g&&!(d?d.indexOf(g)>=0:X.matches(g,a));)g=g!==b&&!e(g)&&g.parentNode;g&&c.indexOf(g)<0&&c.push(g)}),z(c)},parents:function(a){for(var b=[],c=this;c.length>0;)c=z.map(c,function(a){if((a=a.parentNode)&&!e(a)&&b.indexOf(a)<0)return b.push(a),a});return r(b,a)},parent:function(a){return r(C(this.pluck("parentNode")),a)},children:function(a){return r(this.map(function(){return o(this)}),a)},contents:function(){return this.map(function(){return this.contentDocument||G.call(this.childNodes)})},siblings:function(a){return r(this.map(function(a,b){return F.call(o(b.parentNode),function(a){return a!==b})}),a)},empty:function(){return this.each(function(){this.innerHTML=""})},pluck:function(a){return z.map(this,function(b){return b[a]})},show:function(){return this.each(function(){"none"==this.style.display&&(this.style.display=""),"none"==getComputedStyle(this,"").getPropertyValue("display")&&(this.style.display=n(this.nodeName))})},replaceWith:function(a){return this.before(a).remove()},wrap:function(a){var b=c(a);if(this[0]&&!b)var d=z(a).get(0),e=d.parentNode||this.length>1;return this.each(function(c){z(this).wrapAll(b?a.call(this,c):e?d.cloneNode(!0):d)})},wrapAll:function(a){if(this[0]){z(this[0]).before(a=z(a));for(var b;(b=a.children()).length;)a=b.first();z(a).append(this)}return this},wrapInner:function(a){var b=c(a);return this.each(function(c){var d=z(this),e=d.contents(),f=b?a.call(this,c):a;e.length?e.wrapAll(f):d.append(f)})},unwrap:function(){return this.parent().each(function(){z(this).replaceWith(z(this).children())}),this},clone:function(){return this.map(function(){return this.cloneNode(!0)})},hide:function(){return this.css("display","none")},toggle:function(a){return this.each(function(){var b=z(this);(a===x?"none"==b.css("display"):a)?b.show():b.hide()})},prev:function(a){return z(this.pluck("previousElementSibling")).filter(a||"*")},next:function(a){return z(this.pluck("nextElementSibling")).filter(a||"*")},html:function(a){return 0 in arguments?this.each(function(b){var c=this.innerHTML;z(this).empty().append(s(this,a,b,c))}):0 in this?this[0].innerHTML:null},text:function(a){return 0 in arguments?this.each(function(b){var c=s(this,a,b,this.textContent);this.textContent=null==c?"":""+c}):0 in this?this.pluck("textContent").join(""):null},attr:function(a,b){var c;return"string"!=typeof a||1 in arguments?this.each(function(c){if(1===this.nodeType)if(f(a))for(y in a)t(this,y,a[y]);else t(this,a,s(this,b,c,this.getAttribute(a)))}):0 in this&&1==this[0].nodeType&&null!=(c=this[0].getAttribute(a))?c:x},removeAttr:function(a){return this.each(function(){1===this.nodeType&&a.split(" ").forEach(function(a){t(this,a)},this)})},prop:function(a,b){return a=Z[a]||a,1 in arguments?this.each(function(c){this[a]=s(this,b,c,this[a])}):this[0]&&this[0][a]},removeProp:function(a){return a=Z[a]||a,this.each(function(){delete this[a]})},data:function(a,b){var c="data-"+a.replace(/([A-Z])/g,"-$1").toLowerCase(),d=1 in arguments?this.attr(c,b):this.attr(c);return null!==d?v(d):x},val:function(a){return 0 in arguments?(null==a&&(a=""),this.each(function(b){this.value=s(this,a,b,this.value)})):this[0]&&(this[0].multiple?z(this[0]).find("option").filter(function(){return this.selected}).pluck("value"):this[0].value)},offset:function(b){if(b)return this.each(function(a){var c=z(this),d=s(this,b,a,c.offset()),e=c.offsetParent().offset(),f={top:d.top-e.top,left:d.left-e.left};"static"==c.css("position")&&(f.position="relative"),c.css(f)});if(!this.length)return null;if(H.documentElement!==this[0]&&!z.contains(H.documentElement,this[0]))return{top:0,left:0};var c=this[0].getBoundingClientRect();return{left:c.left+a.pageXOffset,top:c.top+a.pageYOffset,width:Math.round(c.width),height:Math.round(c.height)}},css:function(a,c){if(arguments.length<2){var d=this[0];if("string"==typeof a){if(!d)return;return d.style[B(a)]||getComputedStyle(d,"").getPropertyValue(a)}if($(a)){if(!d)return;var e={},f=getComputedStyle(d,"");return z.each(a,function(a,b){e[b]=d.style[B(b)]||f.getPropertyValue(b)}),e}}var g="";if("string"==b(a))c||0===c?g=k(a)+":"+m(a,c):this.each(function(){this.style.removeProperty(k(a))});else for(y in a)a[y]||0===a[y]?g+=k(y)+":"+m(y,a[y])+";":this.each(function(){this.style.removeProperty(k(y))});return this.each(function(){this.style.cssText+=";"+g})},index:function(a){return a?this.indexOf(z(a)[0]):this.parent().children().indexOf(this[0])},hasClass:function(a){return!!a&&D.some.call(this,function(a){return this.test(u(a))},l(a))},addClass:function(a){return a?this.each(function(b){if("className"in this){A=[];var c=u(this);s(this,a,b,c).split(/\s+/g).forEach(function(a){z(this).hasClass(a)||A.push(a)},this),A.length&&u(this,c+(c?" ":"")+A.join(" "))}}):this},removeClass:function(a){return this.each(function(b){if("className"in this){if(a===x)return u(this,"");A=u(this),s(this,a,b,A).split(/\s+/g).forEach(function(a){A=A.replace(l(a)," ")}),u(this,A.trim())}})},toggleClass:function(a,b){return a?this.each(function(c){var d=z(this);s(this,a,c,u(this)).split(/\s+/g).forEach(function(a){(b===x?!d.hasClass(a):b)?d.addClass(a):d.removeClass(a)})}):this},scrollTop:function(a){if(this.length){var b="scrollTop"in this[0];return a===x?b?this[0].scrollTop:this[0].pageYOffset:this.each(b?function(){this.scrollTop=a}:function(){this.scrollTo(this.scrollX,a)})}},scrollLeft:function(a){if(this.length){var b="scrollLeft"in this[0];return a===x?b?this[0].scrollLeft:this[0].pageXOffset:this.each(b?function(){this.scrollLeft=a}:function(){this.scrollTo(a,this.scrollY)})}},position:function(){if(this.length){var a=this[0],b=this.offsetParent(),c=this.offset(),d=N.test(b[0].nodeName)?{top:0,left:0}:b.offset();return c.top-=parseFloat(z(a).css("margin-top"))||0,c.left-=parseFloat(z(a).css("margin-left"))||0,d.top+=parseFloat(z(b[0]).css("border-top-width"))||0,d.left+=parseFloat(z(b[0]).css("border-left-width"))||0,{top:c.top-d.top,left:c.left-d.left}}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||H.body;a&&!N.test(a.nodeName)&&"static"==z(a).css("position");)a=a.offsetParent;return a})}},z.fn.detach=z.fn.remove,["width","height"].forEach(function(a){var b=a.replace(/./,function(a){return a[0].toUpperCase()});z.fn[a]=function(c){var f,g=this[0];return c===x?d(g)?g["inner"+b]:e(g)?g.documentElement["scroll"+b]:(f=this.offset())&&f[a]:this.each(function(b){g=z(this),g.css(a,s(this,c,b,g[a]()))})}}),P.forEach(function(c,d){var e=d%2;z.fn[c]=function(){var c,f,g=z.map(arguments,function(a){var d=[];return c=b(a),"array"==c?(a.forEach(function(a){return a.nodeType!==x?d.push(a):z.zepto.isZ(a)?d=d.concat(a.get()):void(d=d.concat(X.fragment(a)))}),d):"object"==c||null==a?a:X.fragment(a)}),h=this.length>1;return g.length<1?this:this.each(function(b,c){f=e?c:c.parentNode,c=0==d?c.nextSibling:1==d?c.firstChild:2==d?c:null;var i=z.contains(H.documentElement,f);g.forEach(function(b){if(h)b=b.cloneNode(!0);else if(!f)return z(b).remove();f.insertBefore(b,c),i&&w(b,function(b){if(!(null==b.nodeName||"SCRIPT"!==b.nodeName.toUpperCase()||b.type&&"text/javascript"!==b.type||b.src)){var c=b.ownerDocument?b.ownerDocument.defaultView:a;c.eval.call(c,b.innerHTML)}})})})},z.fn[e?c+"To":"insert"+(d?"Before":"After")]=function(a){return z(a)[c](this),this}}),X.Z.prototype=p.prototype=z.fn,X.uniq=C,X.deserializeValue=v,z.zepto=X,z}();return function(b){function c(a){return a._zid||(a._zid=n++)}function d(a,b,d,g){if(b=e(b),b.ns)var h=f(b.ns);return(r[c(a)]||[]).filter(function(a){return a&&(!b.e||a.e==b.e)&&(!b.ns||h.test(a.ns))&&(!d||c(a.fn)===c(d))&&(!g||a.sel==g)})}function e(a){var b=(""+a).split(".");return{e:b[0],ns:b.slice(1).sort().join(" ")}}function f(a){return new RegExp("(?:^| )"+a.replace(" "," .* ?")+"(?: |$)")}function g(a,b){return a.del&&!t&&a.e in u||!!b}function h(a){return v[a]||t&&u[a]||a}function i(a,d,f,i,j,l,n){var o=c(a),p=r[o]||(r[o]=[]);d.split(/\s/).forEach(function(c){if("ready"==c)return b(document).ready(f);var d=e(c);d.fn=f,d.sel=j,d.e in v&&(f=function(a){var c=a.relatedTarget;if(!c||c!==this&&!b.contains(this,c))return d.fn.apply(this,arguments)}),d.del=l;var o=l||f;d.proxy=function(b){if(b=k(b),!b.isImmediatePropagationStopped()){try{var c=Object.getOwnPropertyDescriptor(b,"data");c&&!c.writable||(b.data=i)}catch(b){}var d=o.apply(a,b._args==m?[b]:[b].concat(b._args));return d===!1&&(b.preventDefault(),b.stopPropagation()),d}},d.i=p.length,p.push(d),"addEventListener"in a&&a.addEventListener(h(d.e),d.proxy,g(d,n))})}function j(a,b,e,f,i){var j=c(a);(b||"").split(/\s/).forEach(function(b){d(a,b,e,f).forEach(function(b){delete r[j][b.i],"removeEventListener"in a&&a.removeEventListener(h(b.e),b.proxy,g(b,i))})})}function k(a,c){if(c||!a.isDefaultPrevented){c||(c=a),b.each(z,function(b,d){var e=c[b];a[b]=function(){return this[d]=w,e&&e.apply(c,arguments)},a[d]=x});try{a.timeStamp||(a.timeStamp=Date.now())}catch(a){}(c.defaultPrevented!==m?c.defaultPrevented:"returnValue"in c?c.returnValue===!1:c.getPreventDefault&&c.getPreventDefault())&&(a.isDefaultPrevented=w)}return a}function l(a){var b,c={originalEvent:a};for(b in a)y.test(b)||a[b]===m||(c[b]=a[b]);return k(c,a)}var m,n=1,o=Array.prototype.slice,p=b.isFunction,q=function(a){return"string"==typeof a},r={},s={},t="onfocusin"in a,u={focus:"focusin",blur:"focusout"},v={mouseenter:"mouseover",mouseleave:"mouseout"};s.click=s.mousedown=s.mouseup=s.mousemove="MouseEvents",b.event={add:i,remove:j},b.proxy=function(a,d){var e=2 in arguments&&o.call(arguments,2);if(p(a)){var f=function(){return a.apply(d,e?e.concat(o.call(arguments)):arguments)};return f._zid=c(a),f}if(q(d))return e?(e.unshift(a[d],a),b.proxy.apply(null,e)):b.proxy(a[d],a);throw new TypeError("expected function")},b.fn.bind=function(a,b,c){return this.on(a,b,c)},b.fn.unbind=function(a,b){return this.off(a,b)},b.fn.one=function(a,b,c,d){return this.on(a,b,c,d,1)};var w=function(){return!0},x=function(){return!1},y=/^([A-Z]|returnValue$|layer[XY]$|webkitMovement[XY]$)/,z={preventDefault:"isDefaultPrevented",stopImmediatePropagation:"isImmediatePropagationStopped",stopPropagation:"isPropagationStopped"};b.fn.delegate=function(a,b,c){return this.on(b,a,c)},b.fn.undelegate=function(a,b,c){return this.off(b,a,c)},b.fn.live=function(a,c){return b(document.body).delegate(this.selector,a,c),this},b.fn.die=function(a,c){return b(document.body).undelegate(this.selector,a,c),this},b.fn.on=function(a,c,d,e,f){var g,h,k=this;return a&&!q(a)?(b.each(a,function(a,b){k.on(a,c,d,b,f)}),k):(q(c)||p(e)||e===!1||(e=d,d=c,c=m),e!==m&&d!==!1||(e=d,d=m),e===!1&&(e=x),k.each(function(k,m){f&&(g=function(a){return j(m,a.type,e),e.apply(this,arguments)}),c&&(h=function(a){var d,f=b(a.target).closest(c,m).get(0);if(f&&f!==m)return d=b.extend(l(a),{currentTarget:f,liveFired:m}),(g||e).apply(f,[d].concat(o.call(arguments,1)))}),i(m,a,e,d,c,h||g)}))},b.fn.off=function(a,c,d){var e=this;return a&&!q(a)?(b.each(a,function(a,b){e.off(a,c,b)}),e):(q(c)||p(d)||d===!1||(d=c,c=m),d===!1&&(d=x),e.each(function(){j(this,a,d,c)}))},b.fn.trigger=function(a,c){return a=q(a)||b.isPlainObject(a)?b.Event(a):k(a),a._args=c,this.each(function(){a.type in u&&"function"==typeof this[a.type]?this[a.type]():"dispatchEvent"in this?this.dispatchEvent(a):b(this).triggerHandler(a,c)})},b.fn.triggerHandler=function(a,c){var e,f;return this.each(function(g,h){e=l(q(a)?b.Event(a):a),e._args=c,e.target=h,b.each(d(h,a.type||a),function(a,b){if(f=b.proxy(e),e.isImmediatePropagationStopped())return!1})}),f},"focusin focusout focus blur load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select keydown keypress keyup error".split(" ").forEach(function(a){b.fn[a]=function(b){return 0 in arguments?this.bind(a,b):this.trigger(a)}}),b.Event=function(a,b){q(a)||(b=a,a=b.type);var c=document.createEvent(s[a]||"Events"),d=!0;if(b)for(var e in b)"bubbles"==e?d=!!b[e]:c[e]=b[e];return c.initEvent(a,d,!0),k(c)}}(b),function(a){var b,c=[];a.fn.remove=function(){return this.each(function(){this.parentNode&&("IMG"===this.tagName&&(c.push(this),this.src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=",b&&clearTimeout(b),b=setTimeout(function(){c=[]},6e4)),this.parentNode.removeChild(this))})}}(b),function(a){function b(b,d){var i=b[h],j=i&&e[i];if(void 0===d)return j||c(b);if(j){if(d in j)return j[d];var k=g(d);if(k in j)return j[k]}return f.call(a(b),d)}function c(b,c,f){var i=b[h]||(b[h]=++a.uuid),j=e[i]||(e[i]=d(b));return void 0!==c&&(j[g(c)]=f),j}function d(b){var c={};return a.each(b.attributes||i,function(b,d){0==d.name.indexOf("data-")&&(c[g(d.name.replace("data-",""))]=a.zepto.deserializeValue(d.value))}),c}var e={},f=a.fn.data,g=a.camelCase,h=a.expando="Zepto"+ +new Date,i=[];a.fn.data=function(d,e){return void 0===e?a.isPlainObject(d)?this.each(function(b,e){a.each(d,function(a,b){c(e,a,b)})}):0 in this?b(this[0],d):void 0:this.each(function(){c(this,d,e)})},a.data=function(b,c,d){return a(b).data(c,d)},a.hasData=function(b){var c=b[h],d=c&&e[c];return!!d&&!a.isEmptyObject(d)},a.fn.removeData=function(b){return"string"==typeof b&&(b=b.split(/\s+/)),this.each(function(){var c=this[h],d=c&&e[c];d&&a.each(b||d,function(a){delete d[b?g(this):a]})})},["remove","empty"].forEach(function(b){var c=a.fn[b];a.fn[b]=function(){var a=this.find("*");return"remove"===b&&(a=a.add(this)),a.removeData(),c.call(this)}})}(b),b}(b)}(window)},function(a,b){"use strict";a.exports={element:null}},function(a,b,c){"use strict";function d(a){return a.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}var e=c(3);a.exports={isArray:null,isFunction:null,isObject:null,bind:null,each:null,map:null,mixin:null,isMsie:function(a){if(void 0===a&&(a=navigator.userAgent),/(msie|trident)/i.test(a)){var b=a.match(/(msie |rv:)(\d+(.\d+)?)/i);if(b)return b[2]}return!1},escapeRegExChars:function(a){return a.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")},isNumber:function(a){return"number"==typeof a},toStr:function(a){return void 0===a||null===a?"":a+""},cloneDeep:function(a){var b=this.mixin({},a),c=this;return this.each(b,function(a,d){a&&(c.isArray(a)?b[d]=[].concat(a):c.isObject(a)&&(b[d]=c.cloneDeep(a)))}),b},error:function(a){throw new Error(a)},every:function(a,b){var c=!0;return a?(this.each(a,function(d,e){c&&(c=b.call(null,d,e,a)&&c)}),!!c):c},any:function(a,b){var c=!1;return a?(this.each(a,function(d,e){if(b.call(null,d,e,a))return c=!0,!1}),c):c},getUniqueId:function(){var a=0;return function(){return a++}}(),templatify:function(a){if(this.isFunction(a))return a;var b=e.element(a);return"SCRIPT"===b.prop("tagName")?function(){return b.text()}:function(){return String(a)}},defer:function(a){setTimeout(a,0)},noop:function(){},formatPrefix:function(a,b){return b?"":a+"-"},className:function(a,b,c){return(c?"":".")+a+b},escapeHighlightedString:function(a,b,c){b=b||"<em>";var e=document.createElement("div");e.appendChild(document.createTextNode(b)),c=c||"</em>";var f=document.createElement("div");f.appendChild(document.createTextNode(c));var g=document.createElement("div");return g.appendChild(document.createTextNode(a)),g.innerHTML.replace(RegExp(d(e.innerHTML),"g"),b).replace(RegExp(d(f.innerHTML),"g"),c)}}},function(a,b,c){"use strict";function d(a){var b,c;if(a=a||{},a.input||i.error("missing input"),this.isActivated=!1,this.debug=!!a.debug,this.autoselect=!!a.autoselect,this.autoselectOnBlur=!!a.autoselectOnBlur,this.openOnFocus=!!a.openOnFocus,this.minLength=i.isNumber(a.minLength)?a.minLength:1,this.autoWidth=void 0===a.autoWidth||!!a.autoWidth,this.clearOnSelected=!!a.clearOnSelected,this.tabAutocomplete=void 0===a.tabAutocomplete||!!a.tabAutocomplete,a.hint=!!a.hint,a.hint&&a.appendTo)throw new Error("[autocomplete.js] hint and appendTo options can't be used at the same time");this.css=a.css=i.mixin({},o,a.appendTo?o.appendTo:{}),this.cssClasses=a.cssClasses=i.mixin({},o.defaultClasses,a.cssClasses||{}),this.cssClasses.prefix=a.cssClasses.formattedPrefix=i.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix),this.listboxId=a.listboxId=[this.cssClasses.root,"listbox",i.getUniqueId()].join("-");var f=e(a);this.$node=f.wrapper;var g=this.$input=f.input;b=f.menu,c=f.hint,a.dropdownMenuContainer&&j.element(a.dropdownMenuContainer).css("position","relative").append(b.css("top","0")),g.on("blur.aa",function(a){var c=document.activeElement;i.isMsie()&&(b[0]===c||b[0].contains(c))&&(a.preventDefault(),a.stopImmediatePropagation(),i.defer(function(){g.focus()}))}),b.on("mousedown.aa",function(a){a.preventDefault()}),this.eventBus=a.eventBus||new k({el:g}),this.dropdown=new d.Dropdown({appendTo:a.appendTo,wrapper:this.$node,menu:b,datasets:a.datasets,templates:a.templates,cssClasses:a.cssClasses,minLength:this.minLength}).onSync("suggestionClicked",this._onSuggestionClicked,this).onSync("cursorMoved",this._onCursorMoved,this).onSync("cursorRemoved",this._onCursorRemoved,this).onSync("opened",this._onOpened,this).onSync("closed",this._onClosed,this).onSync("shown",this._onShown,this).onSync("empty",this._onEmpty,this).onSync("redrawn",this._onRedrawn,this).onAsync("datasetRendered",this._onDatasetRendered,this),this.input=new d.Input({input:g,hint:c}).onSync("focused",this._onFocused,this).onSync("blurred",this._onBlurred,this).onSync("enterKeyed",this._onEnterKeyed,this).onSync("tabKeyed",this._onTabKeyed,this).onSync("escKeyed",this._onEscKeyed,this).onSync("upKeyed",this._onUpKeyed,this).onSync("downKeyed",this._onDownKeyed,this).onSync("leftKeyed",this._onLeftKeyed,this).onSync("rightKeyed",this._onRightKeyed,this).onSync("queryChanged",this._onQueryChanged,this).onSync("whitespaceChanged",this._onWhitespaceChanged,this),this._bindKeyboardShortcuts(a),this._setLanguageDirection()}function e(a){var b,c,d,e;b=j.element(a.input),c=j.element(n.wrapper.replace("%ROOT%",a.cssClasses.root)).css(a.css.wrapper),a.appendTo||"block"!==b.css("display")||"table"!==b.parent().css("display")||c.css("display","table-cell");var g=n.dropdown.replace("%PREFIX%",a.cssClasses.prefix).replace("%DROPDOWN_MENU%",a.cssClasses.dropdownMenu);d=j.element(g).css(a.css.dropdown).attr({role:"listbox",id:a.listboxId}),a.templates&&a.templates.dropdownMenu&&d.html(i.templatify(a.templates.dropdownMenu)()),e=b.clone().css(a.css.hint).css(f(b)),e.val("").addClass(i.className(a.cssClasses.prefix,a.cssClasses.hint,!0)).removeAttr("id name placeholder required").prop("readonly",!0).attr({"aria-hidden":"true",autocomplete:"off",spellcheck:"false",tabindex:-1}),e.removeData&&e.removeData(),b.data(h,{"aria-autocomplete":b.attr("aria-autocomplete"),"aria-expanded":b.attr("aria-expanded"),"aria-owns":b.attr("aria-owns"),autocomplete:b.attr("autocomplete"),dir:b.attr("dir"),role:b.attr("role"),spellcheck:b.attr("spellcheck"),style:b.attr("style"),type:b.attr("type")}),b.addClass(i.className(a.cssClasses.prefix,a.cssClasses.input,!0)).attr({autocomplete:"off",spellcheck:!1,role:"combobox","aria-autocomplete":a.datasets&&a.datasets[0]&&a.datasets[0].displayKey?"both":"list","aria-expanded":"false","aria-label":a.ariaLabel,"aria-owns":a.listboxId}).css(a.hint?a.css.input:a.css.inputWithNoHint);try{b.attr("dir")||b.attr("dir","auto")}catch(a){}return c=a.appendTo?c.appendTo(j.element(a.appendTo).eq(0)).eq(0):b.wrap(c).parent(),c.prepend(a.hint?e:null).append(d),{wrapper:c,input:b,hint:e,menu:d}}function f(a){return{backgroundAttachment:a.css("background-attachment"),backgroundClip:a.css("background-clip"),backgroundColor:a.css("background-color"),backgroundImage:a.css("background-image"),backgroundOrigin:a.css("background-origin"),backgroundPosition:a.css("background-position"),backgroundRepeat:a.css("background-repeat"),backgroundSize:a.css("background-size")}}function g(a,b){var c=a.find(i.className(b.prefix,b.input));i.each(c.data(h),function(a,b){void 0===a?c.removeAttr(b):c.attr(b,a)}),c.detach().removeClass(i.className(b.prefix,b.input,!0)).insertAfter(a),c.removeData&&c.removeData(h),a.remove()}var h="aaAttrs",i=c(4),j=c(3),k=c(6),l=c(7),m=c(16),n=c(18),o=c(19);i.mixin(d.prototype,{_bindKeyboardShortcuts:function(a){if(a.keyboardShortcuts){var b=this.$input,c=[];i.each(a.keyboardShortcuts,function(a){"string"==typeof a&&(a=a.toUpperCase().charCodeAt(0)),c.push(a)}),j.element(document).keydown(function(a){var d=a.target||a.srcElement,e=d.tagName;if(!d.isContentEditable&&"INPUT"!==e&&"SELECT"!==e&&"TEXTAREA"!==e){var f=a.which||a.keyCode;c.indexOf(f)!==-1&&(b.focus(),a.stopPropagation(),a.preventDefault())}})}},_onSuggestionClicked:function(a,b){var c,d={selectionMethod:"click"};(c=this.dropdown.getDatumForSuggestion(b))&&this._select(c,d)},_onCursorMoved:function(a,b){var c=this.dropdown.getDatumForCursor(),d=this.dropdown.getCurrentCursor().attr("id");this.input.setActiveDescendant(d),c&&(b&&this.input.setInputValue(c.value,!0),this.eventBus.trigger("cursorchanged",c.raw,c.datasetName))},_onCursorRemoved:function(){this.input.resetInputValue(),this._updateHint(),this.eventBus.trigger("cursorremoved")},_onDatasetRendered:function(){this._updateHint(),this.eventBus.trigger("updated")},_onOpened:function(){this._updateHint(),this.input.expand(),this.eventBus.trigger("opened")},_onEmpty:function(){this.eventBus.trigger("empty")},_onRedrawn:function(){this.$node.css("top","0px"),this.$node.css("left","0px");var a=this.$input[0].getBoundingClientRect();this.autoWidth&&this.$node.css("width",a.width+"px");var b=this.$node[0].getBoundingClientRect(),c=a.bottom-b.top;this.$node.css("top",c+"px");var d=a.left-b.left;this.$node.css("left",d+"px"),this.eventBus.trigger("redrawn")},_onShown:function(){this.eventBus.trigger("shown"),this.autoselect&&this.dropdown.cursorTopSuggestion()},_onClosed:function(){this.input.clearHint(),this.input.removeActiveDescendant(),this.input.collapse(),this.eventBus.trigger("closed")},_onFocused:function(){if(this.isActivated=!0,this.openOnFocus){var a=this.input.getQuery();a.length>=this.minLength?this.dropdown.update(a):this.dropdown.empty(),this.dropdown.open()}},_onBlurred:function(){var a,b;a=this.dropdown.getDatumForCursor(),b=this.dropdown.getDatumForTopSuggestion();var c={selectionMethod:"blur"};this.debug||(this.autoselectOnBlur&&a?this._select(a,c):this.autoselectOnBlur&&b?this._select(b,c):(this.isActivated=!1,this.dropdown.empty(),this.dropdown.close()))},_onEnterKeyed:function(a,b){var c,d
-;c=this.dropdown.getDatumForCursor(),d=this.dropdown.getDatumForTopSuggestion();var e={selectionMethod:"enterKey"};c?(this._select(c,e),b.preventDefault()):this.autoselect&&d&&(this._select(d,e),b.preventDefault())},_onTabKeyed:function(a,b){if(!this.tabAutocomplete)return void this.dropdown.close();var c,d={selectionMethod:"tabKey"};(c=this.dropdown.getDatumForCursor())?(this._select(c,d),b.preventDefault()):this._autocomplete(!0)},_onEscKeyed:function(){this.dropdown.close(),this.input.resetInputValue()},_onUpKeyed:function(){var a=this.input.getQuery();this.dropdown.isEmpty&&a.length>=this.minLength?this.dropdown.update(a):this.dropdown.moveCursorUp(),this.dropdown.open()},_onDownKeyed:function(){var a=this.input.getQuery();this.dropdown.isEmpty&&a.length>=this.minLength?this.dropdown.update(a):this.dropdown.moveCursorDown(),this.dropdown.open()},_onLeftKeyed:function(){"rtl"===this.dir&&this._autocomplete()},_onRightKeyed:function(){"ltr"===this.dir&&this._autocomplete()},_onQueryChanged:function(a,b){this.input.clearHintIfInvalid(),b.length>=this.minLength?this.dropdown.update(b):this.dropdown.empty(),this.dropdown.open(),this._setLanguageDirection()},_onWhitespaceChanged:function(){this._updateHint(),this.dropdown.open()},_setLanguageDirection:function(){var a=this.input.getLanguageDirection();this.dir!==a&&(this.dir=a,this.$node.css("direction",a),this.dropdown.setLanguageDirection(a))},_updateHint:function(){var a,b,c,d,e,f;a=this.dropdown.getDatumForTopSuggestion(),a&&this.dropdown.isVisible()&&!this.input.hasOverflow()?(b=this.input.getInputValue(),c=l.normalizeQuery(b),d=i.escapeRegExChars(c),e=new RegExp("^(?:"+d+")(.+$)","i"),f=e.exec(a.value),f?this.input.setHint(b+f[1]):this.input.clearHint()):this.input.clearHint()},_autocomplete:function(a){var b,c,d,e;b=this.input.getHint(),c=this.input.getQuery(),d=a||this.input.isCursorAtEnd(),b&&c!==b&&d&&(e=this.dropdown.getDatumForTopSuggestion(),e&&this.input.setInputValue(e.value),this.eventBus.trigger("autocompleted",e.raw,e.datasetName))},_select:function(a,b){void 0!==a.value&&this.input.setQuery(a.value),this.clearOnSelected?this.setVal(""):this.input.setInputValue(a.value,!0),this._setLanguageDirection(),this.eventBus.trigger("selected",a.raw,a.datasetName,b).isDefaultPrevented()===!1&&(this.dropdown.close(),i.defer(i.bind(this.dropdown.empty,this.dropdown)))},open:function(){if(!this.isActivated){var a=this.input.getInputValue();a.length>=this.minLength?this.dropdown.update(a):this.dropdown.empty()}this.dropdown.open()},close:function(){this.dropdown.close()},setVal:function(a){a=i.toStr(a),this.isActivated?this.input.setInputValue(a):(this.input.setQuery(a),this.input.setInputValue(a,!0)),this._setLanguageDirection()},getVal:function(){return this.input.getQuery()},destroy:function(){this.input.destroy(),this.dropdown.destroy(),g(this.$node,this.cssClasses),this.$node=null},getWrapper:function(){return this.dropdown.$container[0]}}),d.Dropdown=m,d.Input=l,d.sources=c(20),a.exports=d},function(a,b,c){"use strict";function d(a){a&&a.el||e.error("EventBus initialized without el"),this.$el=f.element(a.el)}var e=c(4),f=c(3);e.mixin(d.prototype,{trigger:function(a,b,c,d){var f=e.Event("autocomplete:"+a);return this.$el.trigger(f,[b,c,d]),f}}),a.exports=d},function(a,b,c){"use strict";function d(a){var b,c,d,f,g=this;a=a||{},a.input||i.error("input is missing"),b=i.bind(this._onBlur,this),c=i.bind(this._onFocus,this),d=i.bind(this._onKeydown,this),f=i.bind(this._onInput,this),this.$hint=j.element(a.hint),this.$input=j.element(a.input).on("blur.aa",b).on("focus.aa",c).on("keydown.aa",d),0===this.$hint.length&&(this.setHint=this.getHint=this.clearHint=this.clearHintIfInvalid=i.noop),i.isMsie()?this.$input.on("keydown.aa keypress.aa cut.aa paste.aa",function(a){h[a.which||a.keyCode]||i.defer(i.bind(g._onInput,g,a))}):this.$input.on("input.aa",f),this.query=this.$input.val(),this.$overflowHelper=e(this.$input)}function e(a){return j.element('<pre aria-hidden="true"></pre>').css({position:"absolute",visibility:"hidden",whiteSpace:"pre",fontFamily:a.css("font-family"),fontSize:a.css("font-size"),fontStyle:a.css("font-style"),fontVariant:a.css("font-variant"),fontWeight:a.css("font-weight"),wordSpacing:a.css("word-spacing"),letterSpacing:a.css("letter-spacing"),textIndent:a.css("text-indent"),textRendering:a.css("text-rendering"),textTransform:a.css("text-transform")}).insertAfter(a)}function f(a,b){return d.normalizeQuery(a)===d.normalizeQuery(b)}function g(a){return a.altKey||a.ctrlKey||a.metaKey||a.shiftKey}var h;h={9:"tab",27:"esc",37:"left",39:"right",13:"enter",38:"up",40:"down"};var i=c(4),j=c(3),k=c(8);d.normalizeQuery=function(a){return(a||"").replace(/^\s*/g,"").replace(/\s{2,}/g," ")},i.mixin(d.prototype,k,{_onBlur:function(){this.resetInputValue(),this.$input.removeAttr("aria-activedescendant"),this.trigger("blurred")},_onFocus:function(){this.trigger("focused")},_onKeydown:function(a){var b=h[a.which||a.keyCode];this._managePreventDefault(b,a),b&&this._shouldTrigger(b,a)&&this.trigger(b+"Keyed",a)},_onInput:function(){this._checkInputValue()},_managePreventDefault:function(a,b){var c,d,e;switch(a){case"tab":d=this.getHint(),e=this.getInputValue(),c=d&&d!==e&&!g(b);break;case"up":case"down":c=!g(b);break;default:c=!1}c&&b.preventDefault()},_shouldTrigger:function(a,b){var c;switch(a){case"tab":c=!g(b);break;default:c=!0}return c},_checkInputValue:function(){var a,b,c;a=this.getInputValue(),b=f(a,this.query),c=!(!b||!this.query)&&this.query.length!==a.length,this.query=a,b?c&&this.trigger("whitespaceChanged",this.query):this.trigger("queryChanged",this.query)},focus:function(){this.$input.focus()},blur:function(){this.$input.blur()},getQuery:function(){return this.query},setQuery:function(a){this.query=a},getInputValue:function(){return this.$input.val()},setInputValue:function(a,b){void 0===a&&(a=this.query),this.$input.val(a),b?this.clearHint():this._checkInputValue()},expand:function(){this.$input.attr("aria-expanded","true")},collapse:function(){this.$input.attr("aria-expanded","false")},setActiveDescendant:function(a){this.$input.attr("aria-activedescendant",a)},removeActiveDescendant:function(){this.$input.removeAttr("aria-activedescendant")},resetInputValue:function(){this.setInputValue(this.query,!0)},getHint:function(){return this.$hint.val()},setHint:function(a){this.$hint.val(a)},clearHint:function(){this.setHint("")},clearHintIfInvalid:function(){var a,b,c,d;a=this.getInputValue(),b=this.getHint(),c=a!==b&&0===b.indexOf(a),(d=""!==a&&c&&!this.hasOverflow())||this.clearHint()},getLanguageDirection:function(){return(this.$input.css("direction")||"ltr").toLowerCase()},hasOverflow:function(){var a=this.$input.width()-2;return this.$overflowHelper.text(this.getInputValue()),this.$overflowHelper.width()>=a},isCursorAtEnd:function(){var a,b,c;return a=this.$input.val().length,b=this.$input[0].selectionStart,i.isNumber(b)?b===a:!document.selection||(c=document.selection.createRange(),c.moveStart("character",-a),a===c.text.length)},destroy:function(){this.$hint.off(".aa"),this.$input.off(".aa"),this.$hint=this.$input=this.$overflowHelper=null}}),a.exports=d},function(a,b,c){"use strict";function d(a,b,c,d){var e;if(!c)return this;for(b=b.split(l),c=d?j(c,d):c,this._callbacks=this._callbacks||{};e=b.shift();)this._callbacks[e]=this._callbacks[e]||{sync:[],async:[]},this._callbacks[e][a].push(c);return this}function e(a,b,c){return d.call(this,"async",a,b,c)}function f(a,b,c){return d.call(this,"sync",a,b,c)}function g(a){var b;if(!this._callbacks)return this;for(a=a.split(l);b=a.shift();)delete this._callbacks[b];return this}function h(a){var b,c,d,e,f;if(!this._callbacks)return this;for(a=a.split(l),d=[].slice.call(arguments,1);(b=a.shift())&&(c=this._callbacks[b]);)e=i(c.sync,this,[b].concat(d)),f=i(c.async,this,[b].concat(d)),e()&&k(f);return this}function i(a,b,c){function d(){for(var d,e=0,f=a.length;!d&&e<f;e+=1)d=a[e].apply(b,c)===!1;return!d}return d}function j(a,b){return a.bind?a.bind(b):function(){a.apply(b,[].slice.call(arguments,0))}}var k=c(9),l=/\s+/;a.exports={onSync:f,onAsync:e,off:g,trigger:h}},function(a,b,c){"use strict";function d(){h&&i&&(h=!1,i.length?m=i.concat(m):l=-1,m.length&&e())}function e(){if(!h){n=!1,h=!0;for(var a=m.length,b=setTimeout(d);a;){for(i=m,m=[];i&&++l<a;)i[l].run();l=-1,a=m.length}i=null,l=-1,h=!1,clearTimeout(b)}}function f(a,b){this.fun=a,this.array=b}function g(a){var b=new Array(arguments.length-1);if(arguments.length>1)for(var c=1;c<arguments.length;c++)b[c-1]=arguments[c];m.push(new f(a,b)),n||h||(n=!0,j())}for(var h,i,j,k=[c(10),c(12),c(13),c(14),c(15)],l=-1,m=[],n=!1,o=-1,p=k.length;++o<p;)if(k[o]&&k[o].test&&k[o].test()){j=k[o].install(e);break}f.prototype.run=function(){var a=this.fun,b=this.array;switch(b.length){case 0:return a();case 1:return a(b[0]);case 2:return a(b[0],b[1]);case 3:return a(b[0],b[1],b[2]);default:return a.apply(null,b)}},a.exports=g},function(a,b,c){(function(a){"use strict";b.test=function(){return void 0!==a&&!a.browser},b.install=function(b){return function(){a.nextTick(b)}}}).call(b,c(11))},function(a,b){function c(){throw new Error("setTimeout has not been defined")}function d(){throw new Error("clearTimeout has not been defined")}function e(a){if(k===setTimeout)return setTimeout(a,0);if((k===c||!k)&&setTimeout)return k=setTimeout,setTimeout(a,0);try{return k(a,0)}catch(b){try{return k.call(null,a,0)}catch(b){return k.call(this,a,0)}}}function f(a){if(l===clearTimeout)return clearTimeout(a);if((l===d||!l)&&clearTimeout)return l=clearTimeout,clearTimeout(a);try{return l(a)}catch(b){try{return l.call(null,a)}catch(b){return l.call(this,a)}}}function g(){p&&n&&(p=!1,n.length?o=n.concat(o):q=-1,o.length&&h())}function h(){if(!p){var a=e(g);p=!0;for(var b=o.length;b;){for(n=o,o=[];++q<b;)n&&n[q].run();q=-1,b=o.length}n=null,p=!1,f(a)}}function i(a,b){this.fun=a,this.array=b}function j(){}var k,l,m=a.exports={};!function(){try{k="function"==typeof setTimeout?setTimeout:c}catch(a){k=c}try{l="function"==typeof clearTimeout?clearTimeout:d}catch(a){l=d}}();var n,o=[],p=!1,q=-1;m.nextTick=function(a){var b=new Array(arguments.length-1);if(arguments.length>1)for(var c=1;c<arguments.length;c++)b[c-1]=arguments[c];o.push(new i(a,b)),1!==o.length||p||e(h)},i.prototype.run=function(){this.fun.apply(null,this.array)},m.title="browser",m.browser=!0,m.env={},m.argv=[],m.version="",m.versions={},m.on=j,m.addListener=j,m.once=j,m.off=j,m.removeListener=j,m.removeAllListeners=j,m.emit=j,m.binding=function(a){throw new Error("process.binding is not supported")},m.cwd=function(){return"/"},m.chdir=function(a){throw new Error("process.chdir is not supported")},m.umask=function(){return 0}},function(a,b){(function(a){"use strict";var c=a.MutationObserver||a.WebKitMutationObserver;b.test=function(){return c},b.install=function(b){var d=0,e=new c(b),f=a.document.createTextNode("");return e.observe(f,{characterData:!0}),function(){f.data=d=++d%2}}}).call(b,function(){return this}())},function(a,b){(function(a){"use strict";b.test=function(){return!a.setImmediate&&void 0!==a.MessageChannel},b.install=function(b){var c=new a.MessageChannel;return c.port1.onmessage=b,function(){c.port2.postMessage(0)}}}).call(b,function(){return this}())},function(a,b){(function(a){"use strict";b.test=function(){return"document"in a&&"onreadystatechange"in a.document.createElement("script")},b.install=function(b){return function(){var c=a.document.createElement("script");return c.onreadystatechange=function(){b(),c.onreadystatechange=null,c.parentNode.removeChild(c),c=null},a.document.documentElement.appendChild(c),b}}}).call(b,function(){return this}())},function(a,b){"use strict";b.test=function(){return!0},b.install=function(a){return function(){setTimeout(a,0)}}},function(a,b,c){"use strict";function d(a){var b,c,d,h=this;a=a||{},a.menu||f.error("menu is required"),f.isArray(a.datasets)||f.isObject(a.datasets)||f.error("1 or more datasets required"),a.datasets||f.error("datasets is required"),this.isOpen=!1,this.isEmpty=!0,this.minLength=a.minLength||0,this.templates={},this.appendTo=a.appendTo||!1,this.css=f.mixin({},j,a.appendTo?j.appendTo:{}),this.cssClasses=a.cssClasses=f.mixin({},j.defaultClasses,a.cssClasses||{}),this.cssClasses.prefix=a.cssClasses.formattedPrefix||f.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix),b=f.bind(this._onSuggestionClick,this),c=f.bind(this._onSuggestionMouseEnter,this),d=f.bind(this._onSuggestionMouseLeave,this);var i=f.className(this.cssClasses.prefix,this.cssClasses.suggestion);this.$menu=g.element(a.menu).on("mouseenter.aa",i,c).on("mouseleave.aa",i,d).on("click.aa",i,b),this.$container=a.appendTo?a.wrapper:this.$menu,a.templates&&a.templates.header&&(this.templates.header=f.templatify(a.templates.header),this.$menu.prepend(this.templates.header())),a.templates&&a.templates.empty&&(this.templates.empty=f.templatify(a.templates.empty),this.$empty=g.element('<div class="'+f.className(this.cssClasses.prefix,this.cssClasses.empty,!0)+'"></div>'),this.$menu.append(this.$empty),this.$empty.hide()),this.datasets=f.map(a.datasets,function(b){return e(h.$menu,b,a.cssClasses)}),f.each(this.datasets,function(a){var b=a.getRoot();b&&0===b.parent().length&&h.$menu.append(b),a.onSync("rendered",h._onRendered,h)}),a.templates&&a.templates.footer&&(this.templates.footer=f.templatify(a.templates.footer),this.$menu.append(this.templates.footer()));var k=this;g.element(window).resize(function(){k._redraw()})}function e(a,b,c){return new d.Dataset(f.mixin({$menu:a,cssClasses:c},b))}var f=c(4),g=c(3),h=c(8),i=c(17),j=c(19);f.mixin(d.prototype,h,{_onSuggestionClick:function(a){this.trigger("suggestionClicked",g.element(a.currentTarget))},_onSuggestionMouseEnter:function(a){var b=g.element(a.currentTarget);if(!b.hasClass(f.className(this.cssClasses.prefix,this.cssClasses.cursor,!0))){this._removeCursor();var c=this;setTimeout(function(){c._setCursor(b,!1)},0)}},_onSuggestionMouseLeave:function(a){if(a.relatedTarget){if(g.element(a.relatedTarget).closest("."+f.className(this.cssClasses.prefix,this.cssClasses.cursor,!0)).length>0)return}this._removeCursor(),this.trigger("cursorRemoved")},_onRendered:function(a,b){function c(a){return a.isEmpty()}function d(a){return a.templates&&a.templates.empty}if(this.isEmpty=f.every(this.datasets,c),this.isEmpty)if(b.length>=this.minLength&&this.trigger("empty"),this.$empty)if(b.length<this.minLength)this._hide();else{var e=this.templates.empty({query:this.datasets[0]&&this.datasets[0].query});this.$empty.html(e),this.$empty.show(),this._show()}else f.any(this.datasets,d)?b.length<this.minLength?this._hide():this._show():this._hide();else this.isOpen&&(this.$empty&&(this.$empty.empty(),this.$empty.hide()),b.length>=this.minLength?this._show():this._hide());this.trigger("datasetRendered")},_hide:function(){this.$container.hide()},_show:function(){this.$container.css("display","block"),this._redraw(),this.trigger("shown")},_redraw:function(){this.isOpen&&this.appendTo&&this.trigger("redrawn")},_getSuggestions:function(){return this.$menu.find(f.className(this.cssClasses.prefix,this.cssClasses.suggestion))},_getCursor:function(){return this.$menu.find(f.className(this.cssClasses.prefix,this.cssClasses.cursor)).first()},_setCursor:function(a,b){a.first().addClass(f.className(this.cssClasses.prefix,this.cssClasses.cursor,!0)).attr("aria-selected","true"),this.trigger("cursorMoved",b)},_removeCursor:function(){this._getCursor().removeClass(f.className(this.cssClasses.prefix,this.cssClasses.cursor,!0)).removeAttr("aria-selected")},_moveCursor:function(a){var b,c,d,e;if(this.isOpen){if(c=this._getCursor(),b=this._getSuggestions(),this._removeCursor(),d=b.index(c)+a,(d=(d+1)%(b.length+1)-1)===-1)return void this.trigger("cursorRemoved");d<-1&&(d=b.length-1),this._setCursor(e=b.eq(d),!0),this._ensureVisible(e)}},_ensureVisible:function(a){var b,c,d,e;b=a.position().top,c=b+a.height()+parseInt(a.css("margin-top"),10)+parseInt(a.css("margin-bottom"),10),d=this.$menu.scrollTop(),e=this.$menu.height()+parseInt(this.$menu.css("padding-top"),10)+parseInt(this.$menu.css("padding-bottom"),10),b<0?this.$menu.scrollTop(d+b):e<c&&this.$menu.scrollTop(d+(c-e))},close:function(){this.isOpen&&(this.isOpen=!1,this._removeCursor(),this._hide(),this.trigger("closed"))},open:function(){this.isOpen||(this.isOpen=!0,this.isEmpty||this._show(),this.trigger("opened"))},setLanguageDirection:function(a){this.$menu.css("ltr"===a?this.css.ltr:this.css.rtl)},moveCursorUp:function(){this._moveCursor(-1)},moveCursorDown:function(){this._moveCursor(1)},getDatumForSuggestion:function(a){var b=null;return a.length&&(b={raw:i.extractDatum(a),value:i.extractValue(a),datasetName:i.extractDatasetName(a)}),b},getCurrentCursor:function(){return this._getCursor().first()},getDatumForCursor:function(){return this.getDatumForSuggestion(this._getCursor().first())},getDatumForTopSuggestion:function(){return this.getDatumForSuggestion(this._getSuggestions().first())},cursorTopSuggestion:function(){this._setCursor(this._getSuggestions().first(),!1)},update:function(a){function b(b){b.update(a)}f.each(this.datasets,b)},empty:function(){function a(a){a.clear()}f.each(this.datasets,a),this.isEmpty=!0},isVisible:function(){return this.isOpen&&!this.isEmpty},destroy:function(){function a(a){a.destroy()}this.$menu.off(".aa"),this.$menu=null,f.each(this.datasets,a)}}),d.Dataset=i,a.exports=d},function(a,b,c){"use strict";function d(a){a=a||{},a.templates=a.templates||{},a.source||k.error("missing source"),a.name&&!g(a.name)&&k.error("invalid dataset name: "+a.name),this.query=null,this._isEmpty=!0,this.highlight=!!a.highlight,this.name=void 0===a.name||null===a.name?k.getUniqueId():a.name,this.source=a.source,this.displayFn=e(a.display||a.displayKey),this.debounce=a.debounce,this.cache=a.cache!==!1,this.templates=f(a.templates,this.displayFn),this.css=k.mixin({},n,a.appendTo?n.appendTo:{}),this.cssClasses=a.cssClasses=k.mixin({},n.defaultClasses,a.cssClasses||{}),this.cssClasses.prefix=a.cssClasses.formattedPrefix||k.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix);var b=k.className(this.cssClasses.prefix,this.cssClasses.dataset);this.$el=a.$menu&&a.$menu.find(b+"-"+this.name).length>0?l.element(a.$menu.find(b+"-"+this.name)[0]):l.element(m.dataset.replace("%CLASS%",this.name).replace("%PREFIX%",this.cssClasses.prefix).replace("%DATASET%",this.cssClasses.dataset)),this.$menu=a.$menu,this.clearCachedSuggestions()}function e(a){function b(b){return b[a]}return a=a||"value",k.isFunction(a)?a:b}function f(a,b){function c(a){return"<p>"+b(a)+"</p>"}return{empty:a.empty&&k.templatify(a.empty),header:a.header&&k.templatify(a.header),footer:a.footer&&k.templatify(a.footer),suggestion:a.suggestion||c}}function g(a){return/^[_a-zA-Z0-9-]+$/.test(a)}var h="aaDataset",i="aaValue",j="aaDatum",k=c(4),l=c(3),m=c(18),n=c(19),o=c(8);d.extractDatasetName=function(a){return l.element(a).data(h)},d.extractValue=function(a){return l.element(a).data(i)},d.extractDatum=function(a){var b=l.element(a).data(j);return"string"==typeof b&&(b=JSON.parse(b)),b},k.mixin(d.prototype,o,{_render:function(a,b){function c(){var b=[].slice.call(arguments,0);return b=[{query:a,isEmpty:!0}].concat(b),n.templates.empty.apply(this,b)}function d(){function a(a){var b,c=m.suggestion.replace("%PREFIX%",f.cssClasses.prefix).replace("%SUGGESTION%",f.cssClasses.suggestion);return b=l.element(c).attr({role:"option",id:["option",Math.floor(1e8*Math.random())].join("-")}).append(n.templates.suggestion.apply(this,[a].concat(e))),b.data(h,n.name),b.data(i,n.displayFn(a)||void 0),b.data(j,JSON.stringify(a)),b.children().each(function(){l.element(this).css(f.css.suggestionChild)}),b}var c,d,e=[].slice.call(arguments,0),f=this,g=m.suggestions.replace("%PREFIX%",this.cssClasses.prefix).replace("%SUGGESTIONS%",this.cssClasses.suggestions);return c=l.element(g).css(this.css.suggestions),d=k.map(b,a),c.append.apply(c,d),c}function e(){var b=[].slice.call(arguments,0);return b=[{query:a,isEmpty:!g}].concat(b),n.templates.header.apply(this,b)}function f(){var b=[].slice.call(arguments,0);return b=[{query:a,isEmpty:!g}].concat(b),n.templates.footer.apply(this,b)}if(this.$el){var g,n=this,o=[].slice.call(arguments,2);if(this.$el.empty(),g=b&&b.length,this._isEmpty=!g,!g&&this.templates.empty)this.$el.html(c.apply(this,o)).prepend(n.templates.header?e.apply(this,o):null).append(n.templates.footer?f.apply(this,o):null);else if(g)this.$el.html(d.apply(this,o)).prepend(n.templates.header?e.apply(this,o):null).append(n.templates.footer?f.apply(this,o):null);else if(b&&!Array.isArray(b))throw new TypeError("suggestions must be an array");this.$menu&&this.$menu.addClass(this.cssClasses.prefix+(g?"with":"without")+"-"+this.name).removeClass(this.cssClasses.prefix+(g?"without":"with")+"-"+this.name),this.trigger("rendered",a)}},getRoot:function(){return this.$el},update:function(a){function b(b){if(!this.canceled&&a===this.query){var c=[].slice.call(arguments,1);this.cacheSuggestions(a,b,c),this._render.apply(this,[a,b].concat(c))}}if(this.query=a,this.canceled=!1,this.shouldFetchFromCache(a))b.apply(this,[this.cachedSuggestions].concat(this.cachedRenderExtraArgs));else{var c=this,d=function(){c.canceled||c.source(a,b.bind(c))};if(this.debounce){var e=function(){c.debounceTimeout=null,d()};clearTimeout(this.debounceTimeout),this.debounceTimeout=setTimeout(e,this.debounce)}else d()}},cacheSuggestions:function(a,b,c){this.cachedQuery=a,this.cachedSuggestions=b,this.cachedRenderExtraArgs=c},shouldFetchFromCache:function(a){return this.cache&&this.cachedQuery===a&&this.cachedSuggestions&&this.cachedSuggestions.length},clearCachedSuggestions:function(){delete this.cachedQuery,delete this.cachedSuggestions,delete this.cachedRenderExtraArgs},cancel:function(){this.canceled=!0},clear:function(){this.$el&&(this.cancel(),this.$el.empty(),this.trigger("rendered",""))},isEmpty:function(){return this._isEmpty},destroy:function(){this.clearCachedSuggestions(),this.$el=null}}),a.exports=d},function(a,b){"use strict";a.exports={wrapper:'<span class="%ROOT%"></span>',dropdown:'<span class="%PREFIX%%DROPDOWN_MENU%"></span>',dataset:'<div class="%PREFIX%%DATASET%-%CLASS%"></div>',suggestions:'<span class="%PREFIX%%SUGGESTIONS%"></span>',suggestion:'<div class="%PREFIX%%SUGGESTION%"></div>'}},function(a,b,c){"use strict";var d=c(4),e={wrapper:{position:"relative",display:"inline-block"},hint:{position:"absolute",top:"0",left:"0",borderColor:"transparent",boxShadow:"none",opacity:"1"},input:{position:"relative",verticalAlign:"top",backgroundColor:"transparent"},inputWithNoHint:{position:"relative",verticalAlign:"top"},dropdown:{position:"absolute",top:"100%",left:"0",zIndex:"100",display:"none"},suggestions:{display:"block"},suggestion:{whiteSpace:"nowrap",cursor:"pointer"},suggestionChild:{whiteSpace:"normal"},ltr:{left:"0",right:"auto"},rtl:{left:"auto",right:"0"},defaultClasses:{root:"algolia-autocomplete",prefix:"aa",noPrefix:!1,dropdownMenu:"dropdown-menu",input:"input",hint:"hint",suggestions:"suggestions",suggestion:"suggestion",cursor:"cursor",dataset:"dataset",empty:"empty"},appendTo:{wrapper:{position:"absolute",zIndex:"100",display:"none"},input:{},inputWithNoHint:{},dropdown:{display:"block"}}};d.isMsie()&&d.mixin(e.input,{backgroundImage:"url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)"}),d.isMsie()&&d.isMsie()<=7&&d.mixin(e.input,{marginTop:"-1px"}),a.exports=e},function(a,b,c){"use strict";a.exports={hits:c(21),popularIn:c(24)}},function(a,b,c){"use strict";var d=c(4),e=c(22),f=c(23);a.exports=function(a,b){function c(c,e){a.search(c,b,function(a,b){if(a)return void d.error(a.message);e(b.hits,b)})}var g=f(a.as._ua);return g&&g[0]>=3&&g[1]>20&&(b=b||{},b.additionalUA="autocomplete.js "+e),c}},function(a,b){a.exports="0.37.1"},function(a,b){"use strict";a.exports=function(a){var b=a.match(/Algolia for JavaScript \((\d+\.)(\d+\.)(\d+)\)/)||a.match(/Algolia for vanilla JavaScript (\d+\.)(\d+\.)(\d+)/);if(b)return[b[1],b[2],b[3]]}},function(a,b,c){"use strict";var d=c(4),e=c(22),f=c(23);a.exports=function(a,b,c,g){function h(h,i){a.search(h,b,function(a,h){if(a)return void d.error(a.message);if(h.hits.length>0){var l=h.hits[0],m=d.mixin({hitsPerPage:0},c);delete m.source,delete m.index;var n=f(k.as._ua);return n&&n[0]>=3&&n[1]>20&&(b.additionalUA="autocomplete.js "+e),void k.search(j(l),m,function(a,b){if(a)return void d.error(a.message);var c=[];if(g.includeAll){var e=g.allTitle||"All departments";c.push(d.mixin({facet:{value:e,count:b.nbHits}},d.cloneDeep(l)))}d.each(b.facets,function(a,b){d.each(a,function(a,e){c.push(d.mixin({facet:{facet:b,value:e,count:a}},d.cloneDeep(l)))})});for(var f=1;f<h.hits.length;++f)c.push(h.hits[f]);i(c,h)})}i([])})}var i=f(a.as._ua);if(i&&i[0]>=3&&i[1]>20&&(b=b||{},b.additionalUA="autocomplete.js "+e),!c.source)return d.error("Missing 'source' key");var j=d.isFunction(c.source)?c.source:function(a){return a[c.source]};if(!c.index)return d.error("Missing 'index' key");var k=c.index;return g=g||{},h}}])}); \ No newline at end of file
+;c=this.dropdown.getDatumForCursor(),d=this.dropdown.getDatumForTopSuggestion();var e={selectionMethod:"enterKey"};c?(this._select(c,e),b.preventDefault()):this.autoselect&&d&&(this._select(d,e),b.preventDefault())},_onTabKeyed:function(a,b){if(!this.tabAutocomplete)return void this.dropdown.close();var c,d={selectionMethod:"tabKey"};(c=this.dropdown.getDatumForCursor())?(this._select(c,d),b.preventDefault()):this._autocomplete(!0)},_onEscKeyed:function(){this.dropdown.close(),this.input.resetInputValue()},_onUpKeyed:function(){var a=this.input.getQuery();this.dropdown.isEmpty&&a.length>=this.minLength?this.dropdown.update(a):this.dropdown.moveCursorUp(),this.dropdown.open()},_onDownKeyed:function(){var a=this.input.getQuery();this.dropdown.isEmpty&&a.length>=this.minLength?this.dropdown.update(a):this.dropdown.moveCursorDown(),this.dropdown.open()},_onLeftKeyed:function(){"rtl"===this.dir&&this._autocomplete()},_onRightKeyed:function(){"ltr"===this.dir&&this._autocomplete()},_onQueryChanged:function(a,b){this.input.clearHintIfInvalid(),b.length>=this.minLength?this.dropdown.update(b):this.dropdown.empty(),this.dropdown.open(),this._setLanguageDirection()},_onWhitespaceChanged:function(){this._updateHint(),this.dropdown.open()},_setLanguageDirection:function(){var a=this.input.getLanguageDirection();this.dir!==a&&(this.dir=a,this.$node.css("direction",a),this.dropdown.setLanguageDirection(a))},_updateHint:function(){var a,b,c,d,e,f;a=this.dropdown.getDatumForTopSuggestion(),a&&this.dropdown.isVisible()&&!this.input.hasOverflow()?(b=this.input.getInputValue(),c=l.normalizeQuery(b),d=i.escapeRegExChars(c),e=new RegExp("^(?:"+d+")(.+$)","i"),f=e.exec(a.value),f?this.input.setHint(b+f[1]):this.input.clearHint()):this.input.clearHint()},_autocomplete:function(a){var b,c,d,e;b=this.input.getHint(),c=this.input.getQuery(),d=a||this.input.isCursorAtEnd(),b&&c!==b&&d&&(e=this.dropdown.getDatumForTopSuggestion(),e&&this.input.setInputValue(e.value),this.eventBus.trigger("autocompleted",e.raw,e.datasetName))},_select:function(a,b){void 0!==a.value&&this.input.setQuery(a.value),this.clearOnSelected?this.setVal(""):this.input.setInputValue(a.value,!0),this._setLanguageDirection(),this.eventBus.trigger("selected",a.raw,a.datasetName,b).isDefaultPrevented()===!1&&(this.dropdown.close(),i.defer(i.bind(this.dropdown.empty,this.dropdown)))},open:function(){if(!this.isActivated){var a=this.input.getInputValue();a.length>=this.minLength?this.dropdown.update(a):this.dropdown.empty()}this.dropdown.open()},close:function(){this.dropdown.close()},setVal:function(a){a=i.toStr(a),this.isActivated?this.input.setInputValue(a):(this.input.setQuery(a),this.input.setInputValue(a,!0)),this._setLanguageDirection()},getVal:function(){return this.input.getQuery()},destroy:function(){this.input.destroy(),this.dropdown.destroy(),g(this.$node,this.cssClasses),this.$node=null},getWrapper:function(){return this.dropdown.$container[0]}}),d.Dropdown=m,d.Input=l,d.sources=c(20),a.exports=d},function(a,b,c){"use strict";function d(a){a&&a.el||e.error("EventBus initialized without el"),this.$el=f.element(a.el)}var e=c(4),f=c(3);e.mixin(d.prototype,{trigger:function(a,b,c,d){var f=e.Event("autocomplete:"+a);return this.$el.trigger(f,[b,c,d]),f}}),a.exports=d},function(a,b,c){"use strict";function d(a){var b,c,d,f,g=this;a=a||{},a.input||i.error("input is missing"),b=i.bind(this._onBlur,this),c=i.bind(this._onFocus,this),d=i.bind(this._onKeydown,this),f=i.bind(this._onInput,this),this.$hint=j.element(a.hint),this.$input=j.element(a.input).on("blur.aa",b).on("focus.aa",c).on("keydown.aa",d),0===this.$hint.length&&(this.setHint=this.getHint=this.clearHint=this.clearHintIfInvalid=i.noop),i.isMsie()?this.$input.on("keydown.aa keypress.aa cut.aa paste.aa",function(a){h[a.which||a.keyCode]||i.defer(i.bind(g._onInput,g,a))}):this.$input.on("input.aa",f),this.query=this.$input.val(),this.$overflowHelper=e(this.$input)}function e(a){return j.element('<pre aria-hidden="true"></pre>').css({position:"absolute",visibility:"hidden",whiteSpace:"pre",fontFamily:a.css("font-family"),fontSize:a.css("font-size"),fontStyle:a.css("font-style"),fontVariant:a.css("font-variant"),fontWeight:a.css("font-weight"),wordSpacing:a.css("word-spacing"),letterSpacing:a.css("letter-spacing"),textIndent:a.css("text-indent"),textRendering:a.css("text-rendering"),textTransform:a.css("text-transform")}).insertAfter(a)}function f(a,b){return d.normalizeQuery(a)===d.normalizeQuery(b)}function g(a){return a.altKey||a.ctrlKey||a.metaKey||a.shiftKey}var h;h={9:"tab",27:"esc",37:"left",39:"right",13:"enter",38:"up",40:"down"};var i=c(4),j=c(3),k=c(8);d.normalizeQuery=function(a){return(a||"").replace(/^\s*/g,"").replace(/\s{2,}/g," ")},i.mixin(d.prototype,k,{_onBlur:function(){this.resetInputValue(),this.$input.removeAttr("aria-activedescendant"),this.trigger("blurred")},_onFocus:function(){this.trigger("focused")},_onKeydown:function(a){var b=h[a.which||a.keyCode];this._managePreventDefault(b,a),b&&this._shouldTrigger(b,a)&&this.trigger(b+"Keyed",a)},_onInput:function(){this._checkInputValue()},_managePreventDefault:function(a,b){var c,d,e;switch(a){case"tab":d=this.getHint(),e=this.getInputValue(),c=d&&d!==e&&!g(b);break;case"up":case"down":c=!g(b);break;default:c=!1}c&&b.preventDefault()},_shouldTrigger:function(a,b){var c;switch(a){case"tab":c=!g(b);break;default:c=!0}return c},_checkInputValue:function(){var a,b,c;a=this.getInputValue(),b=f(a,this.query),c=!(!b||!this.query)&&this.query.length!==a.length,this.query=a,b?c&&this.trigger("whitespaceChanged",this.query):this.trigger("queryChanged",this.query)},focus:function(){this.$input.focus()},blur:function(){this.$input.blur()},getQuery:function(){return this.query},setQuery:function(a){this.query=a},getInputValue:function(){return this.$input.val()},setInputValue:function(a,b){void 0===a&&(a=this.query),this.$input.val(a),b?this.clearHint():this._checkInputValue()},expand:function(){this.$input.attr("aria-expanded","true")},collapse:function(){this.$input.attr("aria-expanded","false")},setActiveDescendant:function(a){this.$input.attr("aria-activedescendant",a)},removeActiveDescendant:function(){this.$input.removeAttr("aria-activedescendant")},resetInputValue:function(){this.setInputValue(this.query,!0)},getHint:function(){return this.$hint.val()},setHint:function(a){this.$hint.val(a)},clearHint:function(){this.setHint("")},clearHintIfInvalid:function(){var a,b,c,d;a=this.getInputValue(),b=this.getHint(),c=a!==b&&0===b.indexOf(a),(d=""!==a&&c&&!this.hasOverflow())||this.clearHint()},getLanguageDirection:function(){return(this.$input.css("direction")||"ltr").toLowerCase()},hasOverflow:function(){var a=this.$input.width()-2;return this.$overflowHelper.text(this.getInputValue()),this.$overflowHelper.width()>=a},isCursorAtEnd:function(){var a,b,c;return a=this.$input.val().length,b=this.$input[0].selectionStart,i.isNumber(b)?b===a:!document.selection||(c=document.selection.createRange(),c.moveStart("character",-a),a===c.text.length)},destroy:function(){this.$hint.off(".aa"),this.$input.off(".aa"),this.$hint=this.$input=this.$overflowHelper=null}}),a.exports=d},function(a,b,c){"use strict";function d(a,b,c,d){var e;if(!c)return this;for(b=b.split(l),c=d?j(c,d):c,this._callbacks=this._callbacks||{};e=b.shift();)this._callbacks[e]=this._callbacks[e]||{sync:[],async:[]},this._callbacks[e][a].push(c);return this}function e(a,b,c){return d.call(this,"async",a,b,c)}function f(a,b,c){return d.call(this,"sync",a,b,c)}function g(a){var b;if(!this._callbacks)return this;for(a=a.split(l);b=a.shift();)delete this._callbacks[b];return this}function h(a){var b,c,d,e,f;if(!this._callbacks)return this;for(a=a.split(l),d=[].slice.call(arguments,1);(b=a.shift())&&(c=this._callbacks[b]);)e=i(c.sync,this,[b].concat(d)),f=i(c.async,this,[b].concat(d)),e()&&k(f);return this}function i(a,b,c){function d(){for(var d,e=0,f=a.length;!d&&e<f;e+=1)d=a[e].apply(b,c)===!1;return!d}return d}function j(a,b){return a.bind?a.bind(b):function(){a.apply(b,[].slice.call(arguments,0))}}var k=c(9),l=/\s+/;a.exports={onSync:f,onAsync:e,off:g,trigger:h}},function(a,b,c){"use strict";function d(){h&&i&&(h=!1,i.length?m=i.concat(m):l=-1,m.length&&e())}function e(){if(!h){n=!1,h=!0;for(var a=m.length,b=setTimeout(d);a;){for(i=m,m=[];i&&++l<a;)i[l].run();l=-1,a=m.length}i=null,l=-1,h=!1,clearTimeout(b)}}function f(a,b){this.fun=a,this.array=b}function g(a){var b=new Array(arguments.length-1);if(arguments.length>1)for(var c=1;c<arguments.length;c++)b[c-1]=arguments[c];m.push(new f(a,b)),n||h||(n=!0,j())}for(var h,i,j,k=[c(10),c(12),c(13),c(14),c(15)],l=-1,m=[],n=!1,o=-1,p=k.length;++o<p;)if(k[o]&&k[o].test&&k[o].test()){j=k[o].install(e);break}f.prototype.run=function(){var a=this.fun,b=this.array;switch(b.length){case 0:return a();case 1:return a(b[0]);case 2:return a(b[0],b[1]);case 3:return a(b[0],b[1],b[2]);default:return a.apply(null,b)}},a.exports=g},function(a,b,c){(function(a){"use strict";b.test=function(){return void 0!==a&&!a.browser},b.install=function(b){return function(){a.nextTick(b)}}}).call(b,c(11))},function(a,b){function c(){throw new Error("setTimeout has not been defined")}function d(){throw new Error("clearTimeout has not been defined")}function e(a){if(k===setTimeout)return setTimeout(a,0);if((k===c||!k)&&setTimeout)return k=setTimeout,setTimeout(a,0);try{return k(a,0)}catch(b){try{return k.call(null,a,0)}catch(b){return k.call(this,a,0)}}}function f(a){if(l===clearTimeout)return clearTimeout(a);if((l===d||!l)&&clearTimeout)return l=clearTimeout,clearTimeout(a);try{return l(a)}catch(b){try{return l.call(null,a)}catch(b){return l.call(this,a)}}}function g(){p&&n&&(p=!1,n.length?o=n.concat(o):q=-1,o.length&&h())}function h(){if(!p){var a=e(g);p=!0;for(var b=o.length;b;){for(n=o,o=[];++q<b;)n&&n[q].run();q=-1,b=o.length}n=null,p=!1,f(a)}}function i(a,b){this.fun=a,this.array=b}function j(){}var k,l,m=a.exports={};!function(){try{k="function"==typeof setTimeout?setTimeout:c}catch(a){k=c}try{l="function"==typeof clearTimeout?clearTimeout:d}catch(a){l=d}}();var n,o=[],p=!1,q=-1;m.nextTick=function(a){var b=new Array(arguments.length-1);if(arguments.length>1)for(var c=1;c<arguments.length;c++)b[c-1]=arguments[c];o.push(new i(a,b)),1!==o.length||p||e(h)},i.prototype.run=function(){this.fun.apply(null,this.array)},m.title="browser",m.browser=!0,m.env={},m.argv=[],m.version="",m.versions={},m.on=j,m.addListener=j,m.once=j,m.off=j,m.removeListener=j,m.removeAllListeners=j,m.emit=j,m.binding=function(a){throw new Error("process.binding is not supported")},m.cwd=function(){return"/"},m.chdir=function(a){throw new Error("process.chdir is not supported")},m.umask=function(){return 0}},function(a,b){(function(a){"use strict";var c=a.MutationObserver||a.WebKitMutationObserver;b.test=function(){return c},b.install=function(b){var d=0,e=new c(b),f=a.document.createTextNode("");return e.observe(f,{characterData:!0}),function(){f.data=d=++d%2}}}).call(b,function(){return this}())},function(a,b){(function(a){"use strict";b.test=function(){return!a.setImmediate&&void 0!==a.MessageChannel},b.install=function(b){var c=new a.MessageChannel;return c.port1.onmessage=b,function(){c.port2.postMessage(0)}}}).call(b,function(){return this}())},function(a,b){(function(a){"use strict";b.test=function(){return"document"in a&&"onreadystatechange"in a.document.createElement("script")},b.install=function(b){return function(){var c=a.document.createElement("script");return c.onreadystatechange=function(){b(),c.onreadystatechange=null,c.parentNode.removeChild(c),c=null},a.document.documentElement.appendChild(c),b}}}).call(b,function(){return this}())},function(a,b){"use strict";b.test=function(){return!0},b.install=function(a){return function(){setTimeout(a,0)}}},function(a,b,c){"use strict";function d(a){var b,c,d,h=this;a=a||{},a.menu||f.error("menu is required"),f.isArray(a.datasets)||f.isObject(a.datasets)||f.error("1 or more datasets required"),a.datasets||f.error("datasets is required"),this.isOpen=!1,this.isEmpty=!0,this.minLength=a.minLength||0,this.templates={},this.appendTo=a.appendTo||!1,this.css=f.mixin({},j,a.appendTo?j.appendTo:{}),this.cssClasses=a.cssClasses=f.mixin({},j.defaultClasses,a.cssClasses||{}),this.cssClasses.prefix=a.cssClasses.formattedPrefix||f.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix),b=f.bind(this._onSuggestionClick,this),c=f.bind(this._onSuggestionMouseEnter,this),d=f.bind(this._onSuggestionMouseLeave,this);var i=f.className(this.cssClasses.prefix,this.cssClasses.suggestion);this.$menu=g.element(a.menu).on("mouseenter.aa",i,c).on("mouseleave.aa",i,d).on("click.aa",i,b),this.$container=a.appendTo?a.wrapper:this.$menu,a.templates&&a.templates.header&&(this.templates.header=f.templatify(a.templates.header),this.$menu.prepend(this.templates.header())),a.templates&&a.templates.empty&&(this.templates.empty=f.templatify(a.templates.empty),this.$empty=g.element('<div class="'+f.className(this.cssClasses.prefix,this.cssClasses.empty,!0)+'"></div>'),this.$menu.append(this.$empty),this.$empty.hide()),this.datasets=f.map(a.datasets,function(b){return e(h.$menu,b,a.cssClasses)}),f.each(this.datasets,function(a){var b=a.getRoot();b&&0===b.parent().length&&h.$menu.append(b),a.onSync("rendered",h._onRendered,h)}),a.templates&&a.templates.footer&&(this.templates.footer=f.templatify(a.templates.footer),this.$menu.append(this.templates.footer()));var k=this;g.element(window).resize(function(){k._redraw()})}function e(a,b,c){return new d.Dataset(f.mixin({$menu:a,cssClasses:c},b))}var f=c(4),g=c(3),h=c(8),i=c(17),j=c(19);f.mixin(d.prototype,h,{_onSuggestionClick:function(a){this.trigger("suggestionClicked",g.element(a.currentTarget))},_onSuggestionMouseEnter:function(a){var b=g.element(a.currentTarget);if(!b.hasClass(f.className(this.cssClasses.prefix,this.cssClasses.cursor,!0))){this._removeCursor();var c=this;setTimeout(function(){c._setCursor(b,!1)},0)}},_onSuggestionMouseLeave:function(a){if(a.relatedTarget){if(g.element(a.relatedTarget).closest("."+f.className(this.cssClasses.prefix,this.cssClasses.cursor,!0)).length>0)return}this._removeCursor(),this.trigger("cursorRemoved")},_onRendered:function(a,b){function c(a){return a.isEmpty()}function d(a){return a.templates&&a.templates.empty}if(this.isEmpty=f.every(this.datasets,c),this.isEmpty)if(b.length>=this.minLength&&this.trigger("empty"),this.$empty)if(b.length<this.minLength)this._hide();else{var e=this.templates.empty({query:this.datasets[0]&&this.datasets[0].query});this.$empty.html(e),this.$empty.show(),this._show()}else f.any(this.datasets,d)?b.length<this.minLength?this._hide():this._show():this._hide();else this.isOpen&&(this.$empty&&(this.$empty.empty(),this.$empty.hide()),b.length>=this.minLength?this._show():this._hide());this.trigger("datasetRendered")},_hide:function(){this.$container.hide()},_show:function(){this.$container.css("display","block"),this._redraw(),this.trigger("shown")},_redraw:function(){this.isOpen&&this.appendTo&&this.trigger("redrawn")},_getSuggestions:function(){return this.$menu.find(f.className(this.cssClasses.prefix,this.cssClasses.suggestion))},_getCursor:function(){return this.$menu.find(f.className(this.cssClasses.prefix,this.cssClasses.cursor)).first()},_setCursor:function(a,b){a.first().addClass(f.className(this.cssClasses.prefix,this.cssClasses.cursor,!0)).attr("aria-selected","true"),this.trigger("cursorMoved",b)},_removeCursor:function(){this._getCursor().removeClass(f.className(this.cssClasses.prefix,this.cssClasses.cursor,!0)).removeAttr("aria-selected")},_moveCursor:function(a){var b,c,d,e;if(this.isOpen){if(c=this._getCursor(),b=this._getSuggestions(),this._removeCursor(),d=b.index(c)+a,(d=(d+1)%(b.length+1)-1)===-1)return void this.trigger("cursorRemoved");d<-1&&(d=b.length-1),this._setCursor(e=b.eq(d),!0),this._ensureVisible(e)}},_ensureVisible:function(a){var b,c,d,e;b=a.position().top,c=b+a.height()+parseInt(a.css("margin-top"),10)+parseInt(a.css("margin-bottom"),10),d=this.$menu.scrollTop(),e=this.$menu.height()+parseInt(this.$menu.css("padding-top"),10)+parseInt(this.$menu.css("padding-bottom"),10),b<0?this.$menu.scrollTop(d+b):e<c&&this.$menu.scrollTop(d+(c-e))},close:function(){this.isOpen&&(this.isOpen=!1,this._removeCursor(),this._hide(),this.trigger("closed"))},open:function(){this.isOpen||(this.isOpen=!0,this.isEmpty||this._show(),this.trigger("opened"))},setLanguageDirection:function(a){this.$menu.css("ltr"===a?this.css.ltr:this.css.rtl)},moveCursorUp:function(){this._moveCursor(-1)},moveCursorDown:function(){this._moveCursor(1)},getDatumForSuggestion:function(a){var b=null;return a.length&&(b={raw:i.extractDatum(a),value:i.extractValue(a),datasetName:i.extractDatasetName(a)}),b},getCurrentCursor:function(){return this._getCursor().first()},getDatumForCursor:function(){return this.getDatumForSuggestion(this._getCursor().first())},getDatumForTopSuggestion:function(){return this.getDatumForSuggestion(this._getSuggestions().first())},cursorTopSuggestion:function(){this._setCursor(this._getSuggestions().first(),!1)},update:function(a){function b(b){b.update(a)}f.each(this.datasets,b)},empty:function(){function a(a){a.clear()}f.each(this.datasets,a),this.isEmpty=!0},isVisible:function(){return this.isOpen&&!this.isEmpty},destroy:function(){function a(a){a.destroy()}this.$menu.off(".aa"),this.$menu=null,f.each(this.datasets,a)}}),d.Dataset=i,a.exports=d},function(a,b,c){"use strict";function d(a){a=a||{},a.templates=a.templates||{},a.source||k.error("missing source"),a.name&&!g(a.name)&&k.error("invalid dataset name: "+a.name),this.query=null,this._isEmpty=!0,this.highlight=!!a.highlight,this.name=void 0===a.name||null===a.name?k.getUniqueId():a.name,this.source=a.source,this.displayFn=e(a.display||a.displayKey),this.debounce=a.debounce,this.cache=a.cache!==!1,this.templates=f(a.templates,this.displayFn),this.css=k.mixin({},n,a.appendTo?n.appendTo:{}),this.cssClasses=a.cssClasses=k.mixin({},n.defaultClasses,a.cssClasses||{}),this.cssClasses.prefix=a.cssClasses.formattedPrefix||k.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix);var b=k.className(this.cssClasses.prefix,this.cssClasses.dataset);this.$el=a.$menu&&a.$menu.find(b+"-"+this.name).length>0?l.element(a.$menu.find(b+"-"+this.name)[0]):l.element(m.dataset.replace("%CLASS%",this.name).replace("%PREFIX%",this.cssClasses.prefix).replace("%DATASET%",this.cssClasses.dataset)),this.$menu=a.$menu,this.clearCachedSuggestions()}function e(a){function b(b){return b[a]}return a=a||"value",k.isFunction(a)?a:b}function f(a,b){function c(a){return"<p>"+b(a)+"</p>"}return{empty:a.empty&&k.templatify(a.empty),header:a.header&&k.templatify(a.header),footer:a.footer&&k.templatify(a.footer),suggestion:a.suggestion||c}}function g(a){return/^[_a-zA-Z0-9-]+$/.test(a)}var h="aaDataset",i="aaValue",j="aaDatum",k=c(4),l=c(3),m=c(18),n=c(19),o=c(8);d.extractDatasetName=function(a){return l.element(a).data(h)},d.extractValue=function(a){return l.element(a).data(i)},d.extractDatum=function(a){var b=l.element(a).data(j);return"string"==typeof b&&(b=JSON.parse(b)),b},k.mixin(d.prototype,o,{_render:function(a,b){function c(){var b=[].slice.call(arguments,0);return b=[{query:a,isEmpty:!0}].concat(b),n.templates.empty.apply(this,b)}function d(){function a(a){var b,c=m.suggestion.replace("%PREFIX%",f.cssClasses.prefix).replace("%SUGGESTION%",f.cssClasses.suggestion);return b=l.element(c).attr({role:"option",id:["option",Math.floor(1e8*Math.random())].join("-")}).append(n.templates.suggestion.apply(this,[a].concat(e))),b.data(h,n.name),b.data(i,n.displayFn(a)||void 0),b.data(j,JSON.stringify(a)),b.children().each(function(){l.element(this).css(f.css.suggestionChild)}),b}var c,d,e=[].slice.call(arguments,0),f=this,g=m.suggestions.replace("%PREFIX%",this.cssClasses.prefix).replace("%SUGGESTIONS%",this.cssClasses.suggestions);return c=l.element(g).css(this.css.suggestions),d=k.map(b,a),c.append.apply(c,d),c}function e(){var b=[].slice.call(arguments,0);return b=[{query:a,isEmpty:!g}].concat(b),n.templates.header.apply(this,b)}function f(){var b=[].slice.call(arguments,0);return b=[{query:a,isEmpty:!g}].concat(b),n.templates.footer.apply(this,b)}if(this.$el){var g,n=this,o=[].slice.call(arguments,2);if(this.$el.empty(),g=b&&b.length,this._isEmpty=!g,!g&&this.templates.empty)this.$el.html(c.apply(this,o)).prepend(n.templates.header?e.apply(this,o):null).append(n.templates.footer?f.apply(this,o):null);else if(g)this.$el.html(d.apply(this,o)).prepend(n.templates.header?e.apply(this,o):null).append(n.templates.footer?f.apply(this,o):null);else if(b&&!Array.isArray(b))throw new TypeError("suggestions must be an array");this.$menu&&this.$menu.addClass(this.cssClasses.prefix+(g?"with":"without")+"-"+this.name).removeClass(this.cssClasses.prefix+(g?"without":"with")+"-"+this.name),this.trigger("rendered",a)}},getRoot:function(){return this.$el},update:function(a){function b(b){if(!this.canceled&&a===this.query){var c=[].slice.call(arguments,1);this.cacheSuggestions(a,b,c),this._render.apply(this,[a,b].concat(c))}}if(this.query=a,this.canceled=!1,this.shouldFetchFromCache(a))b.apply(this,[this.cachedSuggestions].concat(this.cachedRenderExtraArgs));else{var c=this,d=function(){c.canceled||c.source(a,b.bind(c))};if(this.debounce){var e=function(){c.debounceTimeout=null,d()};clearTimeout(this.debounceTimeout),this.debounceTimeout=setTimeout(e,this.debounce)}else d()}},cacheSuggestions:function(a,b,c){this.cachedQuery=a,this.cachedSuggestions=b,this.cachedRenderExtraArgs=c},shouldFetchFromCache:function(a){return this.cache&&this.cachedQuery===a&&this.cachedSuggestions&&this.cachedSuggestions.length},clearCachedSuggestions:function(){delete this.cachedQuery,delete this.cachedSuggestions,delete this.cachedRenderExtraArgs},cancel:function(){this.canceled=!0},clear:function(){this.$el&&(this.cancel(),this.$el.empty(),this.trigger("rendered",""))},isEmpty:function(){return this._isEmpty},destroy:function(){this.clearCachedSuggestions(),this.$el=null}}),a.exports=d},function(a,b){"use strict";a.exports={wrapper:'<span class="%ROOT%"></span>',dropdown:'<span class="%PREFIX%%DROPDOWN_MENU%"></span>',dataset:'<div class="%PREFIX%%DATASET%-%CLASS%"></div>',suggestions:'<span class="%PREFIX%%SUGGESTIONS%"></span>',suggestion:'<div class="%PREFIX%%SUGGESTION%"></div>'}},function(a,b,c){"use strict";var d=c(4),e={wrapper:{position:"relative",display:"inline-block"},hint:{position:"absolute",top:"0",left:"0",borderColor:"transparent",boxShadow:"none",opacity:"1"},input:{position:"relative",verticalAlign:"top",backgroundColor:"transparent"},inputWithNoHint:{position:"relative",verticalAlign:"top"},dropdown:{position:"absolute",top:"100%",left:"0",zIndex:"100",display:"none"},suggestions:{display:"block"},suggestion:{whiteSpace:"nowrap",cursor:"pointer"},suggestionChild:{whiteSpace:"normal"},ltr:{left:"0",right:"auto"},rtl:{left:"auto",right:"0"},defaultClasses:{root:"algolia-autocomplete",prefix:"aa",noPrefix:!1,dropdownMenu:"dropdown-menu",input:"input",hint:"hint",suggestions:"suggestions",suggestion:"suggestion",cursor:"cursor",dataset:"dataset",empty:"empty"},appendTo:{wrapper:{position:"absolute",zIndex:"100",display:"none"},input:{},inputWithNoHint:{},dropdown:{display:"block"}}};d.isMsie()&&d.mixin(e.input,{backgroundImage:"url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)"}),d.isMsie()&&d.isMsie()<=7&&d.mixin(e.input,{marginTop:"-1px"}),a.exports=e},function(a,b,c){"use strict";a.exports={hits:c(21),popularIn:c(24)}},function(a,b,c){"use strict";var d=c(4),e=c(22),f=c(23),g=function(){function a(a,d){return window.Promise.resolve().then(function(){return b.length&&(e=a.search(b),b=[]),e}).then(function(a){if(a)return c=a.results,c[d]})}var b=[],c=[],e=window.Promise.resolve();return function(c,e){return function(f,g){a(c.as,b.push({indexName:c.indexName,query:f,params:e})-1).then(function(a){a&&g(a.hits,a)}).catch(function(a){d.error(a.message)})}}}();a.exports=function(a,b){var c=f(a.as._ua);if(c&&c[0]>=3&&c[1]>20){var d="autocomplete.js "+e;a.as._ua.indexOf(d)===-1&&(a.as._ua+="; "+d)}return g(a,b)}},function(a,b){a.exports="0.38.1"},function(a,b){"use strict";a.exports=function(a){var b=a.match(/Algolia for JavaScript \((\d+\.)(\d+\.)(\d+)\)/)||a.match(/Algolia for vanilla JavaScript (\d+\.)(\d+\.)(\d+)/);if(b)return[b[1],b[2],b[3]]}},function(a,b,c){"use strict";var d=c(4),e=c(22),f=c(23);a.exports=function(a,b,c,g){function h(h,i){a.search(h,b,function(a,h){if(a)return void d.error(a.message);if(h.hits.length>0){var l=h.hits[0],m=d.mixin({hitsPerPage:0},c);delete m.source,delete m.index;var n=f(k.as._ua);return n&&n[0]>=3&&n[1]>20&&(b.additionalUA="autocomplete.js "+e),void k.search(j(l),m,function(a,b){if(a)return void d.error(a.message);var c=[];if(g.includeAll){var e=g.allTitle||"All departments";c.push(d.mixin({facet:{value:e,count:b.nbHits}},d.cloneDeep(l)))}d.each(b.facets,function(a,b){d.each(a,function(a,e){c.push(d.mixin({facet:{facet:b,value:e,count:a}},d.cloneDeep(l)))})});for(var f=1;f<h.hits.length;++f)c.push(h.hits[f]);i(c,h)})}i([])})}var i=f(a.as._ua);if(i&&i[0]>=3&&i[1]>20&&(b=b||{},b.additionalUA="autocomplete.js "+e),!c.source)return d.error("Missing 'source' key");var j=d.isFunction(c.source)?c.source:function(a){return a[c.source]};if(!c.index)return d.error("Missing 'index' key");var k=c.index;return g=g||{},h}}])}); \ No newline at end of file
diff --git a/assets/lib/clipboard/clipboard.min.js b/assets/lib/clipboard/clipboard.min.js
index 28650f3c..1103f811 100644
--- a/assets/lib/clipboard/clipboard.min.js
+++ b/assets/lib/clipboard/clipboard.min.js
@@ -1,7 +1,7 @@
/*!
- * clipboard.js v2.0.6
+ * clipboard.js v2.0.11
* https://clipboardjs.com/
- *
+ *
* Licensed MIT © Zeno Rocha
*/
-!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return o={},r.m=n=[function(t,e){t.exports=function(t){var e;if("SELECT"===t.nodeName)t.focus(),e=t.value;else if("INPUT"===t.nodeName||"TEXTAREA"===t.nodeName){var n=t.hasAttribute("readonly");n||t.setAttribute("readonly",""),t.select(),t.setSelectionRange(0,t.value.length),n||t.removeAttribute("readonly"),e=t.value}else{t.hasAttribute("contenteditable")&&t.focus();var o=window.getSelection(),r=document.createRange();r.selectNodeContents(t),o.removeAllRanges(),o.addRange(r),e=o.toString()}return e}},function(t,e){function n(){}n.prototype={on:function(t,e,n){var o=this.e||(this.e={});return(o[t]||(o[t]=[])).push({fn:e,ctx:n}),this},once:function(t,e,n){var o=this;function r(){o.off(t,r),e.apply(n,arguments)}return r._=e,this.on(t,r,n)},emit:function(t){for(var e=[].slice.call(arguments,1),n=((this.e||(this.e={}))[t]||[]).slice(),o=0,r=n.length;o<r;o++)n[o].fn.apply(n[o].ctx,e);return this},off:function(t,e){var n=this.e||(this.e={}),o=n[t],r=[];if(o&&e)for(var i=0,a=o.length;i<a;i++)o[i].fn!==e&&o[i].fn._!==e&&r.push(o[i]);return r.length?n[t]=r:delete n[t],this}},t.exports=n,t.exports.TinyEmitter=n},function(t,e,n){var d=n(3),h=n(4);t.exports=function(t,e,n){if(!t&&!e&&!n)throw new Error("Missing required arguments");if(!d.string(e))throw new TypeError("Second argument must be a String");if(!d.fn(n))throw new TypeError("Third argument must be a Function");if(d.node(t))return s=e,f=n,(u=t).addEventListener(s,f),{destroy:function(){u.removeEventListener(s,f)}};if(d.nodeList(t))return a=t,c=e,l=n,Array.prototype.forEach.call(a,function(t){t.addEventListener(c,l)}),{destroy:function(){Array.prototype.forEach.call(a,function(t){t.removeEventListener(c,l)})}};if(d.string(t))return o=t,r=e,i=n,h(document.body,o,r,i);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList");var o,r,i,a,c,l,u,s,f}},function(t,n){n.node=function(t){return void 0!==t&&t instanceof HTMLElement&&1===t.nodeType},n.nodeList=function(t){var e=Object.prototype.toString.call(t);return void 0!==t&&("[object NodeList]"===e||"[object HTMLCollection]"===e)&&"length"in t&&(0===t.length||n.node(t[0]))},n.string=function(t){return"string"==typeof t||t instanceof String},n.fn=function(t){return"[object Function]"===Object.prototype.toString.call(t)}},function(t,e,n){var a=n(5);function i(t,e,n,o,r){var i=function(e,n,t,o){return function(t){t.delegateTarget=a(t.target,n),t.delegateTarget&&o.call(e,t)}}.apply(this,arguments);return t.addEventListener(n,i,r),{destroy:function(){t.removeEventListener(n,i,r)}}}t.exports=function(t,e,n,o,r){return"function"==typeof t.addEventListener?i.apply(null,arguments):"function"==typeof n?i.bind(null,document).apply(null,arguments):("string"==typeof t&&(t=document.querySelectorAll(t)),Array.prototype.map.call(t,function(t){return i(t,e,n,o,r)}))}},function(t,e){if("undefined"!=typeof Element&&!Element.prototype.matches){var n=Element.prototype;n.matches=n.matchesSelector||n.mozMatchesSelector||n.msMatchesSelector||n.oMatchesSelector||n.webkitMatchesSelector}t.exports=function(t,e){for(;t&&9!==t.nodeType;){if("function"==typeof t.matches&&t.matches(e))return t;t=t.parentNode}}},function(t,e,n){"use strict";n.r(e);var o=n(0),r=n.n(o),i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};function a(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function c(t){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,c),this.resolveOptions(t),this.initSelection()}var l=(function(t,e,n){return e&&a(t.prototype,e),n&&a(t,n),t}(c,[{key:"resolveOptions",value:function(t){var e=0<arguments.length&&void 0!==t?t:{};this.action=e.action,this.container=e.container,this.emitter=e.emitter,this.target=e.target,this.text=e.text,this.trigger=e.trigger,this.selectedText=""}},{key:"initSelection",value:function(){this.text?this.selectFake():this.target&&this.selectTarget()}},{key:"selectFake",value:function(){var t=this,e="rtl"==document.documentElement.getAttribute("dir");this.removeFake(),this.fakeHandlerCallback=function(){return t.removeFake()},this.fakeHandler=this.container.addEventListener("click",this.fakeHandlerCallback)||!0,this.fakeElem=document.createElement("textarea"),this.fakeElem.style.fontSize="12pt",this.fakeElem.style.border="0",this.fakeElem.style.padding="0",this.fakeElem.style.margin="0",this.fakeElem.style.position="absolute",this.fakeElem.style[e?"right":"left"]="-9999px";var n=window.pageYOffset||document.documentElement.scrollTop;this.fakeElem.style.top=n+"px",this.fakeElem.setAttribute("readonly",""),this.fakeElem.value=this.text,this.container.appendChild(this.fakeElem),this.selectedText=r()(this.fakeElem),this.copyText()}},{key:"removeFake",value:function(){this.fakeHandler&&(this.container.removeEventListener("click",this.fakeHandlerCallback),this.fakeHandler=null,this.fakeHandlerCallback=null),this.fakeElem&&(this.container.removeChild(this.fakeElem),this.fakeElem=null)}},{key:"selectTarget",value:function(){this.selectedText=r()(this.target),this.copyText()}},{key:"copyText",value:function(){var e=void 0;try{e=document.execCommand(this.action)}catch(t){e=!1}this.handleResult(e)}},{key:"handleResult",value:function(t){this.emitter.emit(t?"success":"error",{action:this.action,text:this.selectedText,trigger:this.trigger,clearSelection:this.clearSelection.bind(this)})}},{key:"clearSelection",value:function(){this.trigger&&this.trigger.focus(),document.activeElement.blur(),window.getSelection().removeAllRanges()}},{key:"destroy",value:function(){this.removeFake()}},{key:"action",set:function(t){var e=0<arguments.length&&void 0!==t?t:"copy";if(this._action=e,"copy"!==this._action&&"cut"!==this._action)throw new Error('Invalid "action" value, use either "copy" or "cut"')},get:function(){return this._action}},{key:"target",set:function(t){if(void 0!==t){if(!t||"object"!==(void 0===t?"undefined":i(t))||1!==t.nodeType)throw new Error('Invalid "target" value, use a valid Element');if("copy"===this.action&&t.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if("cut"===this.action&&(t.hasAttribute("readonly")||t.hasAttribute("disabled")))throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes');this._target=t}},get:function(){return this._target}}]),c),u=n(1),s=n.n(u),f=n(2),d=n.n(f),h="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},p=function(t,e,n){return e&&y(t.prototype,e),n&&y(t,n),t};function y(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var m=(function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(v,s.a),p(v,[{key:"resolveOptions",value:function(t){var e=0<arguments.length&&void 0!==t?t:{};this.action="function"==typeof e.action?e.action:this.defaultAction,this.target="function"==typeof e.target?e.target:this.defaultTarget,this.text="function"==typeof e.text?e.text:this.defaultText,this.container="object"===h(e.container)?e.container:document.body}},{key:"listenClick",value:function(t){var e=this;this.listener=d()(t,"click",function(t){return e.onClick(t)})}},{key:"onClick",value:function(t){var e=t.delegateTarget||t.currentTarget;this.clipboardAction&&(this.clipboardAction=null),this.clipboardAction=new l({action:this.action(e),target:this.target(e),text:this.text(e),container:this.container,trigger:e,emitter:this})}},{key:"defaultAction",value:function(t){return b("action",t)}},{key:"defaultTarget",value:function(t){var e=b("target",t);if(e)return document.querySelector(e)}},{key:"defaultText",value:function(t){return b("text",t)}},{key:"destroy",value:function(){this.listener.destroy(),this.clipboardAction&&(this.clipboardAction.destroy(),this.clipboardAction=null)}}],[{key:"isSupported",value:function(t){var e=0<arguments.length&&void 0!==t?t:["copy","cut"],n="string"==typeof e?[e]:e,o=!!document.queryCommandSupported;return n.forEach(function(t){o=o&&!!document.queryCommandSupported(t)}),o}}]),v);function v(t,e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,v);var n=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(v.__proto__||Object.getPrototypeOf(v)).call(this));return n.resolveOptions(e),n.listenClick(t),n}function b(t,e){var n="data-clipboard-"+t;if(e.hasAttribute(n))return e.getAttribute(n)}e.default=m}],r.c=o,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=6).default;function r(t){if(o[t])return o[t].exports;var e=o[t]={i:t,l:!1,exports:{}};return n[t].call(e.exports,e,e.exports,r),e.l=!0,e.exports}var n,o}); \ No newline at end of file
+!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return n={686:function(t,e,n){"use strict";n.d(e,{default:function(){return b}});var e=n(279),i=n.n(e),e=n(370),u=n.n(e),e=n(817),r=n.n(e);function c(t){try{return document.execCommand(t)}catch(t){return}}var a=function(t){t=r()(t);return c("cut"),t};function o(t,e){var n,o,t=(n=t,o="rtl"===document.documentElement.getAttribute("dir"),(t=document.createElement("textarea")).style.fontSize="12pt",t.style.border="0",t.style.padding="0",t.style.margin="0",t.style.position="absolute",t.style[o?"right":"left"]="-9999px",o=window.pageYOffset||document.documentElement.scrollTop,t.style.top="".concat(o,"px"),t.setAttribute("readonly",""),t.value=n,t);return e.container.appendChild(t),e=r()(t),c("copy"),t.remove(),e}var f=function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{container:document.body},n="";return"string"==typeof t?n=o(t,e):t instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(null==t?void 0:t.type)?n=o(t.value,e):(n=r()(t),c("copy")),n};function l(t){return(l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var s=function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},e=t.action,n=void 0===e?"copy":e,o=t.container,e=t.target,t=t.text;if("copy"!==n&&"cut"!==n)throw new Error('Invalid "action" value, use either "copy" or "cut"');if(void 0!==e){if(!e||"object"!==l(e)||1!==e.nodeType)throw new Error('Invalid "target" value, use a valid Element');if("copy"===n&&e.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if("cut"===n&&(e.hasAttribute("readonly")||e.hasAttribute("disabled")))throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes')}return t?f(t,{container:o}):e?"cut"===n?a(e):f(e,{container:o}):void 0};function p(t){return(p="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function d(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function y(t,e){return(y=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function h(n){var o=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(t){return!1}}();return function(){var t,e=v(n);return t=o?(t=v(this).constructor,Reflect.construct(e,arguments,t)):e.apply(this,arguments),e=this,!(t=t)||"object"!==p(t)&&"function"!=typeof t?function(t){if(void 0!==t)return t;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(e):t}}function v(t){return(v=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function m(t,e){t="data-clipboard-".concat(t);if(e.hasAttribute(t))return e.getAttribute(t)}var b=function(){!function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&y(t,e)}(r,i());var t,e,n,o=h(r);function r(t,e){var n;return function(t){if(!(t instanceof r))throw new TypeError("Cannot call a class as a function")}(this),(n=o.call(this)).resolveOptions(e),n.listenClick(t),n}return t=r,n=[{key:"copy",value:function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{container:document.body};return f(t,e)}},{key:"cut",value:function(t){return a(t)}},{key:"isSupported",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:["copy","cut"],t="string"==typeof t?[t]:t,e=!!document.queryCommandSupported;return t.forEach(function(t){e=e&&!!document.queryCommandSupported(t)}),e}}],(e=[{key:"resolveOptions",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};this.action="function"==typeof t.action?t.action:this.defaultAction,this.target="function"==typeof t.target?t.target:this.defaultTarget,this.text="function"==typeof t.text?t.text:this.defaultText,this.container="object"===p(t.container)?t.container:document.body}},{key:"listenClick",value:function(t){var e=this;this.listener=u()(t,"click",function(t){return e.onClick(t)})}},{key:"onClick",value:function(t){var e=t.delegateTarget||t.currentTarget,n=this.action(e)||"copy",t=s({action:n,container:this.container,target:this.target(e),text:this.text(e)});this.emit(t?"success":"error",{action:n,text:t,trigger:e,clearSelection:function(){e&&e.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function(t){return m("action",t)}},{key:"defaultTarget",value:function(t){t=m("target",t);if(t)return document.querySelector(t)}},{key:"defaultText",value:function(t){return m("text",t)}},{key:"destroy",value:function(){this.listener.destroy()}}])&&d(t.prototype,e),n&&d(t,n),r}()},828:function(t){var e;"undefined"==typeof Element||Element.prototype.matches||((e=Element.prototype).matches=e.matchesSelector||e.mozMatchesSelector||e.msMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector),t.exports=function(t,e){for(;t&&9!==t.nodeType;){if("function"==typeof t.matches&&t.matches(e))return t;t=t.parentNode}}},438:function(t,e,n){var u=n(828);function i(t,e,n,o,r){var i=function(e,n,t,o){return function(t){t.delegateTarget=u(t.target,n),t.delegateTarget&&o.call(e,t)}}.apply(this,arguments);return t.addEventListener(n,i,r),{destroy:function(){t.removeEventListener(n,i,r)}}}t.exports=function(t,e,n,o,r){return"function"==typeof t.addEventListener?i.apply(null,arguments):"function"==typeof n?i.bind(null,document).apply(null,arguments):("string"==typeof t&&(t=document.querySelectorAll(t)),Array.prototype.map.call(t,function(t){return i(t,e,n,o,r)}))}},879:function(t,n){n.node=function(t){return void 0!==t&&t instanceof HTMLElement&&1===t.nodeType},n.nodeList=function(t){var e=Object.prototype.toString.call(t);return void 0!==t&&("[object NodeList]"===e||"[object HTMLCollection]"===e)&&"length"in t&&(0===t.length||n.node(t[0]))},n.string=function(t){return"string"==typeof t||t instanceof String},n.fn=function(t){return"[object Function]"===Object.prototype.toString.call(t)}},370:function(t,e,n){var f=n(879),l=n(438);t.exports=function(t,e,n){if(!t&&!e&&!n)throw new Error("Missing required arguments");if(!f.string(e))throw new TypeError("Second argument must be a String");if(!f.fn(n))throw new TypeError("Third argument must be a Function");if(f.node(t))return c=e,a=n,(u=t).addEventListener(c,a),{destroy:function(){u.removeEventListener(c,a)}};if(f.nodeList(t))return o=t,r=e,i=n,Array.prototype.forEach.call(o,function(t){t.addEventListener(r,i)}),{destroy:function(){Array.prototype.forEach.call(o,function(t){t.removeEventListener(r,i)})}};if(f.string(t))return t=t,e=e,n=n,l(document.body,t,e,n);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList");var o,r,i,u,c,a}},817:function(t){t.exports=function(t){var e,n="SELECT"===t.nodeName?(t.focus(),t.value):"INPUT"===t.nodeName||"TEXTAREA"===t.nodeName?((e=t.hasAttribute("readonly"))||t.setAttribute("readonly",""),t.select(),t.setSelectionRange(0,t.value.length),e||t.removeAttribute("readonly"),t.value):(t.hasAttribute("contenteditable")&&t.focus(),n=window.getSelection(),(e=document.createRange()).selectNodeContents(t),n.removeAllRanges(),n.addRange(e),n.toString());return n}},279:function(t){function e(){}e.prototype={on:function(t,e,n){var o=this.e||(this.e={});return(o[t]||(o[t]=[])).push({fn:e,ctx:n}),this},once:function(t,e,n){var o=this;function r(){o.off(t,r),e.apply(n,arguments)}return r._=e,this.on(t,r,n)},emit:function(t){for(var e=[].slice.call(arguments,1),n=((this.e||(this.e={}))[t]||[]).slice(),o=0,r=n.length;o<r;o++)n[o].fn.apply(n[o].ctx,e);return this},off:function(t,e){var n=this.e||(this.e={}),o=n[t],r=[];if(o&&e)for(var i=0,u=o.length;i<u;i++)o[i].fn!==e&&o[i].fn._!==e&&r.push(o[i]);return r.length?n[t]=r:delete n[t],this}},t.exports=e,t.exports.TinyEmitter=e}},r={},o.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(e,{a:e}),e},o.d=function(t,e){for(var n in e)o.o(e,n)&&!o.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},o.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},o(686).default;function o(t){if(r[t])return r[t].exports;var e=r[t]={exports:{}};return n[t](e,e.exports,o),e.exports}var n,r}); \ No newline at end of file
diff --git a/assets/lib/echarts/echarts.min.js b/assets/lib/echarts/echarts.min.js
index dc78df64..17c0e09e 100644
--- a/assets/lib/echarts/echarts.min.js
+++ b/assets/lib/echarts/echarts.min.js
@@ -18,5 +18,28 @@
* under the License.
*/
+!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).echarts={})}(this,(function(t){"use strict";
+/*! *****************************************************************************
+ Copyright (c) Microsoft Corporation.
-!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e(t.echarts={})}(this,function(t){"use strict";var e=2311,n=function(){return e++},v="object"==typeof wx&&"function"==typeof wx.getSystemInfoSync?{browser:{},os:{},node:!1,wxa:!0,canvasSupported:!0,svgSupported:!1,touchEventsSupported:!0,domSupported:!1}:"undefined"==typeof document&&"undefined"!=typeof self?{browser:{},os:{},node:!1,worker:!0,canvasSupported:!0,domSupported:!1}:"undefined"==typeof navigator?{browser:{},os:{},node:!0,worker:!1,canvasSupported:!0,svgSupported:!0,domSupported:!1}:function(t){var e={},i=t.match(/Firefox\/([\d.]+)/),n=t.match(/MSIE\s([\d.]+)/)||t.match(/Trident\/.+?rv:(([\d.]+))/),o=t.match(/Edge\/([\d.]+)/),a=/micromessenger/i.test(t);i&&(e.firefox=!0,e.version=i[1]);n&&(e.ie=!0,e.version=n[1]);o&&(e.edge=!0,e.version=o[1]);a&&(e.weChat=!0);return{browser:e,os:{},node:!1,canvasSupported:!!document.createElement("canvas").getContext,svgSupported:"undefined"!=typeof SVGRect,touchEventsSupported:"ontouchstart"in window&&!e.ie&&!e.edge,pointerEventsSupported:"onpointerdown"in window&&(e.edge||e.ie&&11<=e.version),domSupported:"undefined"!=typeof document}}(navigator.userAgent);var s={"[object Function]":1,"[object RegExp]":1,"[object Date]":1,"[object Error]":1,"[object CanvasGradient]":1,"[object CanvasPattern]":1,"[object Image]":1,"[object Canvas]":1},l={"[object Int8Array]":1,"[object Uint8Array]":1,"[object Uint8ClampedArray]":1,"[object Int16Array]":1,"[object Uint16Array]":1,"[object Int32Array]":1,"[object Uint32Array]":1,"[object Float32Array]":1,"[object Float64Array]":1},u=Object.prototype.toString,i=Array.prototype,r=i.forEach,h=i.filter,o=i.slice,c=i.map,d=i.reduce,a={};function f(t,e){"createCanvas"===t&&(g=null),a[t]=e}function k(t){if(null==t||"object"!=typeof t)return t;var e=t,i=u.call(t);if("[object Array]"===i){if(!$(t)){e=[];for(var n=0,o=t.length;n<o;n++)e[n]=k(t[n])}}else if(l[i]){if(!$(t)){var a=t.constructor;if(t.constructor.from)e=a.from(t);else{e=new a(t.length);for(n=0,o=t.length;n<o;n++)e[n]=k(t[n])}}}else if(!s[i]&&!$(t)&&!G(t))for(var r in e={},t)t.hasOwnProperty(r)&&(e[r]=k(t[r]));return e}function m(t,e,i){if(!z(e)||!z(t))return i?k(e):t;for(var n in e)if(e.hasOwnProperty(n)){var o=t[n],a=e[n];!z(a)||!z(o)||L(a)||L(o)||G(a)||G(o)||B(a)||B(o)||$(a)||$(o)?!i&&n in t||(t[n]=k(e[n])):m(o,a,i)}return t}function p(t,e){for(var i=t[0],n=1,o=t.length;n<o;n++)i=m(i,t[n],e);return i}function P(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i]);return t}function D(t,e,i){for(var n in e)e.hasOwnProperty(n)&&(i?null!=e[n]:null==t[n])&&(t[n]=e[n]);return t}function y(){return a.createCanvas()}var g;function x(){return g=g||y().getContext("2d")}function _(t,e){if(t){if(t.indexOf)return t.indexOf(e);for(var i=0,n=t.length;i<n;i++)if(t[i]===e)return i}return-1}function w(t,e){var i=t.prototype;function n(){}for(var o in n.prototype=e.prototype,t.prototype=new n,i)i.hasOwnProperty(o)&&(t.prototype[o]=i[o]);(t.prototype.constructor=t).superClass=e}function b(t,e,i){D(t="prototype"in t?t.prototype:t,e="prototype"in e?e.prototype:e,i)}function N(t){if(t)return"string"!=typeof t&&"number"==typeof t.length}function E(t,e,i){if(t&&e)if(t.forEach&&t.forEach===r)t.forEach(e,i);else if(t.length===+t.length)for(var n=0,o=t.length;n<o;n++)e.call(i,t[n],n,t);else for(var a in t)t.hasOwnProperty(a)&&e.call(i,t[a],a,t)}function O(t,e,i){if(t&&e){if(t.map&&t.map===c)return t.map(e,i);for(var n=[],o=0,a=t.length;o<a;o++)n.push(e.call(i,t[o],o,t));return n}}function S(t,e,i,n){if(t&&e){if(t.reduce&&t.reduce===d)return t.reduce(e,i,n);for(var o=0,a=t.length;o<a;o++)i=e.call(n,i,t[o],o,t);return i}}function M(t,e,i){if(t&&e){if(t.filter&&t.filter===h)return t.filter(e,i);for(var n=[],o=0,a=t.length;o<a;o++)e.call(i,t[o],o,t)&&n.push(t[o]);return n}}function I(t,e,i){if(t&&e)for(var n=0,o=t.length;n<o;n++)if(e.call(i,t[n],n,t))return t[n]}function A(t,e){var i=o.call(arguments,2);return function(){return t.apply(e,i.concat(o.call(arguments)))}}function T(t){var e=o.call(arguments,1);return function(){return t.apply(this,e.concat(o.call(arguments)))}}function L(t){return"[object Array]"===u.call(t)}function C(t){return"function"==typeof t}function R(t){return"[object String]"===u.call(t)}function z(t){var e=typeof t;return"function"==e||!!t&&"object"==e}function B(t){return!!s[u.call(t)]}function V(t){return!!l[u.call(t)]}function G(t){return"object"==typeof t&&"number"==typeof t.nodeType&&"object"==typeof t.ownerDocument}function F(t){return t!=t}function W(t){for(var e=0,i=arguments.length;e<i;e++)if(null!=arguments[e])return arguments[e]}function H(t,e){return null!=t?t:e}function Z(t,e,i){return null!=t?t:null!=e?e:i}function U(){return Function.call.apply(o,arguments)}function X(t){if("number"==typeof t)return[t,t,t,t];var e=t.length;return 2===e?[t[0],t[1],t[0],t[1]]:3===e?[t[0],t[1],t[2],t[1]]:t}function Y(t,e){if(!t)throw new Error(e)}function j(t){return null==t?null:"function"==typeof t.trim?t.trim():t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")}a.createCanvas=function(){return document.createElement("canvas")};var q="__ec_primitive__";function K(t){t[q]=!0}function $(t){return t[q]}function J(t){var i=L(t);this.data={};var n=this;function e(t,e){i?n.set(t,e):n.set(e,t)}t instanceof J?t.each(e):t&&E(t,e)}function Q(t){return new J(t)}function tt(t,e){for(var i=new t.constructor(t.length+e.length),n=0;n<t.length;n++)i[n]=t[n];var o=t.length;for(n=0;n<e.length;n++)i[n+o]=e[n];return i}function et(){}J.prototype={constructor:J,get:function(t){return this.data.hasOwnProperty(t)?this.data[t]:null},set:function(t,e){return this.data[t]=e},each:function(t,e){for(var i in void 0!==e&&(t=A(t,e)),this.data)this.data.hasOwnProperty(i)&&t(this.data[i],i)},removeKey:function(t){delete this.data[t]}};var it=(Object.freeze||Object)({$override:f,clone:k,merge:m,mergeAll:p,extend:P,defaults:D,createCanvas:y,getContext:x,indexOf:_,inherits:w,mixin:b,isArrayLike:N,each:E,map:O,reduce:S,filter:M,find:I,bind:A,curry:T,isArray:L,isFunction:C,isString:R,isObject:z,isBuiltInObject:B,isTypedArray:V,isDom:G,eqNaN:F,retrieve:W,retrieve2:H,retrieve3:Z,slice:U,normalizeCssArray:X,assert:Y,trim:j,setAsPrimitive:K,isPrimitive:$,createHashMap:Q,concatArray:tt,noop:et}),nt="undefined"==typeof Float32Array?Array:Float32Array;function ot(t,e){var i=new nt(2);return null==t&&(t=0),null==e&&(e=0),i[0]=t,i[1]=e,i}function at(t,e){return t[0]=e[0],t[1]=e[1],t}function rt(t){var e=new nt(2);return e[0]=t[0],e[1]=t[1],e}function st(t,e,i){return t[0]=e,t[1]=i,t}function lt(t,e,i){return t[0]=e[0]+i[0],t[1]=e[1]+i[1],t}function ut(t,e,i,n){return t[0]=e[0]+i[0]*n,t[1]=e[1]+i[1]*n,t}function ht(t,e,i){return t[0]=e[0]-i[0],t[1]=e[1]-i[1],t}function ct(t){return Math.sqrt(ft(t))}var dt=ct;function ft(t){return t[0]*t[0]+t[1]*t[1]}var pt=ft;function gt(t,e,i){return t[0]=e[0]*i,t[1]=e[1]*i,t}function mt(t,e){var i=ct(e);return 0===i?(t[0]=0,t[1]=0):(t[0]=e[0]/i,t[1]=e[1]/i),t}function vt(t,e){return Math.sqrt((t[0]-e[0])*(t[0]-e[0])+(t[1]-e[1])*(t[1]-e[1]))}var yt=vt;function xt(t,e){return(t[0]-e[0])*(t[0]-e[0])+(t[1]-e[1])*(t[1]-e[1])}var _t=xt;function wt(t,e,i,n){return t[0]=e[0]+n*(i[0]-e[0]),t[1]=e[1]+n*(i[1]-e[1]),t}function bt(t,e,i){var n=e[0],o=e[1];return t[0]=i[0]*n+i[2]*o+i[4],t[1]=i[1]*n+i[3]*o+i[5],t}function St(t,e,i){return t[0]=Math.min(e[0],i[0]),t[1]=Math.min(e[1],i[1]),t}function Mt(t,e,i){return t[0]=Math.max(e[0],i[0]),t[1]=Math.max(e[1],i[1]),t}var It=(Object.freeze||Object)({create:ot,copy:at,clone:rt,set:st,add:lt,scaleAndAdd:ut,sub:ht,len:ct,length:dt,lenSquare:ft,lengthSquare:pt,mul:function(t,e,i){return t[0]=e[0]*i[0],t[1]=e[1]*i[1],t},div:function(t,e,i){return t[0]=e[0]/i[0],t[1]=e[1]/i[1],t},dot:function(t,e){return t[0]*e[0]+t[1]*e[1]},scale:gt,normalize:mt,distance:vt,dist:yt,distanceSquare:xt,distSquare:_t,negate:function(t,e){return t[0]=-e[0],t[1]=-e[1],t},lerp:wt,applyTransform:bt,min:St,max:Mt});function Tt(){this.on("mousedown",this._dragStart,this),this.on("mousemove",this._drag,this),this.on("mouseup",this._dragEnd,this)}function At(t,e){return{target:t,topTarget:e&&e.topTarget}}Tt.prototype={constructor:Tt,_dragStart:function(t){for(var e=t.target;e&&!e.draggable;)e=e.parent;e&&((this._draggingTarget=e).dragging=!0,this._x=t.offsetX,this._y=t.offsetY,this.dispatchToElement(At(e,t),"dragstart",t.event))},_drag:function(t){var e=this._draggingTarget;if(e){var i=t.offsetX,n=t.offsetY,o=i-this._x,a=n-this._y;this._x=i,this._y=n,e.drift(o,a,t),this.dispatchToElement(At(e,t),"drag",t.event);var r=this.findHover(i,n,e).target,s=this._dropTarget;e!==(this._dropTarget=r)&&(s&&r!==s&&this.dispatchToElement(At(s,t),"dragleave",t.event),r&&r!==s&&this.dispatchToElement(At(r,t),"dragenter",t.event))}},_dragEnd:function(t){var e=this._draggingTarget;e&&(e.dragging=!1),this.dispatchToElement(At(e,t),"dragend",t.event),this._dropTarget&&this.dispatchToElement(At(this._dropTarget,t),"drop",t.event),this._draggingTarget=null,this._dropTarget=null}};var Dt=Array.prototype.slice,Ct=function(t){this._$handlers={},this._$eventProcessor=t};function Lt(t,e,i,n,o,a){var r=t._$handlers;if("function"==typeof i&&(o=n,n=i,i=null),!n||!e)return t;i=function(t,e){var i=t._$eventProcessor;return null!=e&&i&&i.normalizeQuery&&(e=i.normalizeQuery(e)),e}(t,i),r[e]||(r[e]=[]);for(var s=0;s<r[e].length;s++)if(r[e][s].h===n)return t;var l={h:n,one:a,query:i,ctx:o||t,callAtLast:n.zrEventfulCallAtLast},u=r[e].length-1,h=r[e][u];return h&&h.callAtLast?r[e].splice(u,0,l):r[e].push(l),t}Ct.prototype={constructor:Ct,one:function(t,e,i,n){return Lt(this,t,e,i,n,!0)},on:function(t,e,i,n){return Lt(this,t,e,i,n,!1)},isSilent:function(t){var e=this._$handlers;return!e[t]||!e[t].length},off:function(t,e){var i=this._$handlers;if(!t)return this._$handlers={},this;if(e){if(i[t]){for(var n=[],o=0,a=i[t].length;o<a;o++)i[t][o].h!==e&&n.push(i[t][o]);i[t]=n}i[t]&&0===i[t].length&&delete i[t]}else delete i[t];return this},trigger:function(t){var e=this._$handlers[t],i=this._$eventProcessor;if(e){var n=arguments,o=n.length;3<o&&(n=Dt.call(n,1));for(var a=e.length,r=0;r<a;){var s=e[r];if(i&&i.filter&&null!=s.query&&!i.filter(t,s.query))r++;else{switch(o){case 1:s.h.call(s.ctx);break;case 2:s.h.call(s.ctx,n[1]);break;case 3:s.h.call(s.ctx,n[1],n[2]);break;default:s.h.apply(s.ctx,n)}s.one?(e.splice(r,1),a--):r++}}}return i&&i.afterTrigger&&i.afterTrigger(t),this},triggerWithContext:function(t){var e=this._$handlers[t],i=this._$eventProcessor;if(e){var n=arguments,o=n.length;4<o&&(n=Dt.call(n,1,n.length-1));for(var a=n[n.length-1],r=e.length,s=0;s<r;){var l=e[s];if(i&&i.filter&&null!=l.query&&!i.filter(t,l.query))s++;else{switch(o){case 1:l.h.call(a);break;case 2:l.h.call(a,n[1]);break;case 3:l.h.call(a,n[1],n[2]);break;default:l.h.apply(a,n)}l.one?(e.splice(s,1),r--):s++}}}return i&&i.afterTrigger&&i.afterTrigger(t),this}};var kt=Math.log(2);function Pt(t,e,i,n,o,a){var r=n+"-"+o,s=t.length;if(a.hasOwnProperty(r))return a[r];if(1===e){var l=Math.round(Math.log((1<<s)-1&~o)/kt);return t[i][l]}for(var u=n|1<<i,h=i+1;n&1<<h;)h++;for(var c=0,d=0,f=0;d<s;d++){var p=1<<d;p&o||(c+=(f%2?-1:1)*t[i][d]*Pt(t,e-1,h,u,o|p,a),f++)}return a[r]=c}function Nt(t,e){var i=[[t[0],t[1],1,0,0,0,-e[0]*t[0],-e[0]*t[1]],[0,0,0,t[0],t[1],1,-e[1]*t[0],-e[1]*t[1]],[t[2],t[3],1,0,0,0,-e[2]*t[2],-e[2]*t[3]],[0,0,0,t[2],t[3],1,-e[3]*t[2],-e[3]*t[3]],[t[4],t[5],1,0,0,0,-e[4]*t[4],-e[4]*t[5]],[0,0,0,t[4],t[5],1,-e[5]*t[4],-e[5]*t[5]],[t[6],t[7],1,0,0,0,-e[6]*t[6],-e[6]*t[7]],[0,0,0,t[6],t[7],1,-e[7]*t[6],-e[7]*t[7]]],n={},o=Pt(i,8,0,0,0,n);if(0!==o){for(var a=[],r=0;r<8;r++)for(var s=0;s<8;s++)null==a[s]&&(a[s]=0),a[s]+=((r+s)%2?-1:1)*Pt(i,7,0===r?1:0,1<<r,1<<s,n)/o*e[r];return function(t,e,i){var n=e*a[6]+i*a[7]+1;t[0]=(e*a[0]+i*a[1]+a[2])/n,t[1]=(e*a[3]+i*a[4]+a[5])/n}}}var Ot="___zrEVENTSAVED",Et=[];function Rt(t,e,i,n,o){if(e.getBoundingClientRect&&v.domSupported&&!zt(e)){var a=e[Ot]||(e[Ot]={}),r=function(t,e,i){for(var n=i?"invTrans":"trans",o=e[n],a=e.srcCoords,r=!0,s=[],l=[],u=0;u<4;u++){var h=t[u].getBoundingClientRect(),c=2*u,d=h.left,f=h.top;s.push(d,f),r=r&&a&&d===a[c]&&f===a[1+c],l.push(t[u].offsetLeft,t[u].offsetTop)}return r&&o?o:(e.srcCoords=s,e[n]=i?Nt(l,s):Nt(s,l))}(function(t,e){var i=e.markers;if(i)return i;i=e.markers=[];for(var n=["left","right"],o=["top","bottom"],a=0;a<4;a++){var r=document.createElement("div"),s=r.style,l=a%2,u=(a>>1)%2;s.cssText=["position: absolute","visibility: hidden","padding: 0","margin: 0","border-width: 0","user-select: none","width:0","height:0",n[l]+":0",o[u]+":0",n[1-l]+":auto",o[1-u]+":auto",""].join("!important;"),t.appendChild(r),i.push(r)}return i}(e,a),a,o);if(r)return r(t,i,n),!0}return!1}function zt(t){return"CANVAS"===t.nodeName.toUpperCase()}var Bt="undefined"!=typeof window&&!!window.addEventListener,Vt=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Gt=[];function Ft(t,e,i,n){return i=i||{},n||!v.canvasSupported?Wt(t,e,i):v.browser.firefox&&null!=e.layerX&&e.layerX!==e.offsetX?(i.zrX=e.layerX,i.zrY=e.layerY):null!=e.offsetX?(i.zrX=e.offsetX,i.zrY=e.offsetY):Wt(t,e,i),i}function Wt(t,e,i){if(v.domSupported&&t.getBoundingClientRect){var n=e.clientX,o=e.clientY;if(zt(t)){var a=t.getBoundingClientRect();return i.zrX=n-a.left,void(i.zrY=o-a.top)}if(Rt(Gt,t,n,o))return i.zrX=Gt[0],void(i.zrY=Gt[1])}i.zrX=i.zrY=0}function Ht(t){return t||window.event}function Zt(t,e,i){if(null!=(e=Ht(e)).zrX)return e;var n=e.type;if(n&&0<=n.indexOf("touch")){var o="touchend"!==n?e.targetTouches[0]:e.changedTouches[0];o&&Ft(t,o,e,i)}else Ft(t,e,e,i),e.zrDelta=e.wheelDelta?e.wheelDelta/120:-(e.detail||0)/3;var a=e.button;return null==e.which&&void 0!==a&&Vt.test(e.type)&&(e.which=1&a?1:2&a?3:4&a?2:0),e}function Ut(t,e,i,n){Bt?t.addEventListener(e,i,n):t.attachEvent("on"+e,i)}var Xt=Bt?function(t){t.preventDefault(),t.stopPropagation(),t.cancelBubble=!0}:function(t){t.returnValue=!1,t.cancelBubble=!0};function Yt(t){return 2===t.which||3===t.which}function jt(){this._track=[]}function qt(t){var e=t[1][0]-t[0][0],i=t[1][1]-t[0][1];return Math.sqrt(e*e+i*i)}jt.prototype={constructor:jt,recognize:function(t,e,i){return this._doTrack(t,e,i),this._recognize(t)},clear:function(){return this._track.length=0,this},_doTrack:function(t,e,i){var n=t.touches;if(n){for(var o={points:[],touches:[],target:e,event:t},a=0,r=n.length;a<r;a++){var s=n[a],l=Ft(i,s,{});o.points.push([l.zrX,l.zrY]),o.touches.push(s)}this._track.push(o)}},_recognize:function(t){for(var e in Kt)if(Kt.hasOwnProperty(e)){var i=Kt[e](this._track,t);if(i)return i}}};var Kt={pinch:function(t,e){var i=t.length;if(i){var n=(t[i-1]||{}).points,o=(t[i-2]||{}).points||n;if(o&&1<o.length&&n&&1<n.length){var a=qt(n)/qt(o);isFinite(a)||(a=1),e.pinchScale=a;var r=function(t){return[(t[0][0]+t[1][0])/2,(t[0][1]+t[1][1])/2]}(n);return e.pinchX=r[0],e.pinchY=r[1],{type:"pinch",target:t[0].target,event:e}}}}},$t="silent";function Jt(){Xt(this.event)}function Qt(){}Qt.prototype.dispose=function(){};function te(t,e,i,n){Ct.call(this),this.storage=t,this.painter=e,this.painterRoot=n,i=i||new Qt,this.proxy=null,this._hovered={},this._lastTouchMoment,this._lastX,this._lastY,this._gestureMgr,Tt.call(this),this.setHandlerProxy(i)}var ee=["click","dblclick","mousewheel","mouseout","mouseup","mousedown","mousemove","contextmenu"];function ie(t,e,i){if(t[t.rectHover?"rectContain":"contain"](e,i)){for(var n,o=t;o;){if(o.clipPath&&!o.clipPath.contain(e,i))return!1;o.silent&&(n=!0),o=o.parent}return!n||$t}return!1}function ne(t,e,i){var n=t.painter;return e<0||e>n.getWidth()||i<0||i>n.getHeight()}te.prototype={constructor:te,setHandlerProxy:function(e){this.proxy&&this.proxy.dispose(),e&&(E(ee,function(t){e.on&&e.on(t,this[t],this)},this),e.handler=this),this.proxy=e},mousemove:function(t){var e=t.zrX,i=t.zrY,n=ne(this,e,i),o=this._hovered,a=o.target;a&&!a.__zr&&(a=(o=this.findHover(o.x,o.y)).target);var r=this._hovered=n?{x:e,y:i}:this.findHover(e,i),s=r.target,l=this.proxy;l.setCursor&&l.setCursor(s?s.cursor:"default"),a&&s!==a&&this.dispatchToElement(o,"mouseout",t),this.dispatchToElement(r,"mousemove",t),s&&s!==a&&this.dispatchToElement(r,"mouseover",t)},mouseout:function(t){var e=t.zrEventControl,i=t.zrIsToLocalDOM;"only_globalout"!==e&&this.dispatchToElement(this._hovered,"mouseout",t),"no_globalout"!==e&&(i||this.trigger("globalout",{type:"globalout",event:t}))},resize:function(t){this._hovered={}},dispatch:function(t,e){var i=this[t];i&&i.call(this,e)},dispose:function(){this.proxy.dispose(),this.storage=this.proxy=this.painter=null},setCursorStyle:function(t){var e=this.proxy;e.setCursor&&e.setCursor(t)},dispatchToElement:function(t,e,i){var n=(t=t||{}).target;if(!n||!n.silent){for(var o="on"+e,a=function(t,e,i){return{type:t,event:i,target:e.target,topTarget:e.topTarget,cancelBubble:!1,offsetX:i.zrX,offsetY:i.zrY,gestureEvent:i.gestureEvent,pinchX:i.pinchX,pinchY:i.pinchY,pinchScale:i.pinchScale,wheelDelta:i.zrDelta,zrByTouch:i.zrByTouch,which:i.which,stop:Jt}}(e,t,i);n&&(n[o]&&(a.cancelBubble=n[o].call(n,a)),n.trigger(e,a),n=n.parent,!a.cancelBubble););a.cancelBubble||(this.trigger(e,a),this.painter&&this.painter.eachOtherLayer(function(t){"function"==typeof t[o]&&t[o].call(t,a),t.trigger&&t.trigger(e,a)}))}},findHover:function(t,e,i){for(var n=this.storage.getDisplayList(),o={x:t,y:e},a=n.length-1;0<=a;a--){var r;if(n[a]!==i&&!n[a].ignore&&(r=ie(n[a],t,e))&&(o.topTarget||(o.topTarget=n[a]),r!==$t)){o.target=n[a];break}}return o},processGesture:function(t,e){this._gestureMgr||(this._gestureMgr=new jt);var i=this._gestureMgr;"start"===e&&i.clear();var n=i.recognize(t,this.findHover(t.zrX,t.zrY,null).target,this.proxy.dom);if("end"===e&&i.clear(),n){var o=n.type;t.gestureEvent=o,this.dispatchToElement({target:n.target},o,n.event)}}},E(["click","mousedown","mouseup","mousewheel","dblclick","contextmenu"],function(r){te.prototype[r]=function(t){var e,i,n=t.zrX,o=t.zrY,a=ne(this,n,o);if("mouseup"===r&&a||(i=(e=this.findHover(n,o)).target),"mousedown"===r)this._downEl=i,this._downPoint=[t.zrX,t.zrY],this._upEl=i;else if("mouseup"===r)this._upEl=i;else if("click"===r){if(this._downEl!==this._upEl||!this._downPoint||4<yt(this._downPoint,[t.zrX,t.zrY]))return;this._downPoint=null}this.dispatchToElement(e,r,t)}}),b(te,Ct),b(te,Tt);var oe="undefined"==typeof Float32Array?Array:Float32Array;function ae(){var t=new oe(6);return re(t),t}function re(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t}function se(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t}function le(t,e,i){var n=e[0]*i[0]+e[2]*i[1],o=e[1]*i[0]+e[3]*i[1],a=e[0]*i[2]+e[2]*i[3],r=e[1]*i[2]+e[3]*i[3],s=e[0]*i[4]+e[2]*i[5]+e[4],l=e[1]*i[4]+e[3]*i[5]+e[5];return t[0]=n,t[1]=o,t[2]=a,t[3]=r,t[4]=s,t[5]=l,t}function ue(t,e,i){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4]+i[0],t[5]=e[5]+i[1],t}function he(t,e,i){var n=e[0],o=e[2],a=e[4],r=e[1],s=e[3],l=e[5],u=Math.sin(i),h=Math.cos(i);return t[0]=n*h+r*u,t[1]=-n*u+r*h,t[2]=o*h+s*u,t[3]=-o*u+h*s,t[4]=h*a+u*l,t[5]=h*l-u*a,t}function ce(t,e,i){var n=i[0],o=i[1];return t[0]=e[0]*n,t[1]=e[1]*o,t[2]=e[2]*n,t[3]=e[3]*o,t[4]=e[4]*n,t[5]=e[5]*o,t}function de(t,e){var i=e[0],n=e[2],o=e[4],a=e[1],r=e[3],s=e[5],l=i*r-a*n;return l?(l=1/l,t[0]=r*l,t[1]=-a*l,t[2]=-n*l,t[3]=i*l,t[4]=(n*s-r*o)*l,t[5]=(a*o-i*s)*l,t):null}function fe(t){var e=ae();return se(e,t),e}var pe=(Object.freeze||Object)({create:ae,identity:re,copy:se,mul:le,translate:ue,rotate:he,scale:ce,invert:de,clone:fe}),ge=re;function me(t){return 5e-5<t||t<-5e-5}var ve=function(t){(t=t||{}).position||(this.position=[0,0]),null==t.rotation&&(this.rotation=0),t.scale||(this.scale=[1,1]),this.origin=this.origin||null},ye=ve.prototype;ye.transform=null,ye.needLocalTransform=function(){return me(this.rotation)||me(this.position[0])||me(this.position[1])||me(this.scale[0]-1)||me(this.scale[1]-1)};var xe=[];ye.updateTransform=function(){var t=this.parent,e=t&&t.transform,i=this.needLocalTransform(),n=this.transform;if(i||e){n=n||ae(),i?this.getLocalTransform(n):ge(n),e&&(i?le(n,t.transform,n):se(n,t.transform)),this.transform=n;var o=this.globalScaleRatio;if(null!=o&&1!==o){this.getGlobalScale(xe);var a=xe[0]<0?-1:1,r=xe[1]<0?-1:1,s=((xe[0]-a)*o+a)/xe[0]||0,l=((xe[1]-r)*o+r)/xe[1]||0;n[0]*=s,n[1]*=s,n[2]*=l,n[3]*=l}this.invTransform=this.invTransform||ae(),de(this.invTransform,n)}else n&&ge(n)},ye.getLocalTransform=function(t){return ve.getLocalTransform(this,t)},ye.setTransform=function(t){var e=this.transform,i=t.dpr||1;e?t.setTransform(i*e[0],i*e[1],i*e[2],i*e[3],i*e[4],i*e[5]):t.setTransform(i,0,0,i,0,0)},ye.restoreTransform=function(t){var e=t.dpr||1;t.setTransform(e,0,0,e,0,0)};var _e=[],we=ae();ye.setLocalTransform=function(t){if(t){var e=t[0]*t[0]+t[1]*t[1],i=t[2]*t[2]+t[3]*t[3],n=this.position,o=this.scale;me(e-1)&&(e=Math.sqrt(e)),me(i-1)&&(i=Math.sqrt(i)),t[0]<0&&(e=-e),t[3]<0&&(i=-i),n[0]=t[4],n[1]=t[5],o[0]=e,o[1]=i,this.rotation=Math.atan2(-t[1]/i,t[0]/e)}},ye.decomposeTransform=function(){if(this.transform){var t=this.parent,e=this.transform;t&&t.transform&&(le(_e,t.invTransform,e),e=_e);var i=this.origin;i&&(i[0]||i[1])&&(we[4]=i[0],we[5]=i[1],le(_e,e,we),_e[4]-=i[0],_e[5]-=i[1],e=_e),this.setLocalTransform(e)}},ye.getGlobalScale=function(t){var e=this.transform;return t=t||[],e?(t[0]=Math.sqrt(e[0]*e[0]+e[1]*e[1]),t[1]=Math.sqrt(e[2]*e[2]+e[3]*e[3]),e[0]<0&&(t[0]=-t[0]),e[3]<0&&(t[1]=-t[1])):(t[0]=1,t[1]=1),t},ye.transformCoordToLocal=function(t,e){var i=[t,e],n=this.invTransform;return n&&bt(i,i,n),i},ye.transformCoordToGlobal=function(t,e){var i=[t,e],n=this.transform;return n&&bt(i,i,n),i},ve.getLocalTransform=function(t,e){ge(e=e||[]);var i=t.origin,n=t.scale||[1,1],o=t.rotation||0,a=t.position||[0,0];return i&&(e[4]-=i[0],e[5]-=i[1]),ce(e,e,n),o&&he(e,e,o),i&&(e[4]+=i[0],e[5]+=i[1]),e[4]+=a[0],e[5]+=a[1],e};var be={linear:function(t){return t},quadraticIn:function(t){return t*t},quadraticOut:function(t){return t*(2-t)},quadraticInOut:function(t){return(t*=2)<1?.5*t*t:-.5*(--t*(t-2)-1)},cubicIn:function(t){return t*t*t},cubicOut:function(t){return--t*t*t+1},cubicInOut:function(t){return(t*=2)<1?.5*t*t*t:.5*((t-=2)*t*t+2)},quarticIn:function(t){return t*t*t*t},quarticOut:function(t){return 1- --t*t*t*t},quarticInOut:function(t){return(t*=2)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2)},quinticIn:function(t){return t*t*t*t*t},quinticOut:function(t){return--t*t*t*t*t+1},quinticInOut:function(t){return(t*=2)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)},sinusoidalIn:function(t){return 1-Math.cos(t*Math.PI/2)},sinusoidalOut:function(t){return Math.sin(t*Math.PI/2)},sinusoidalInOut:function(t){return.5*(1-Math.cos(Math.PI*t))},exponentialIn:function(t){return 0===t?0:Math.pow(1024,t-1)},exponentialOut:function(t){return 1===t?1:1-Math.pow(2,-10*t)},exponentialInOut:function(t){return 0===t?0:1===t?1:(t*=2)<1?.5*Math.pow(1024,t-1):.5*(2-Math.pow(2,-10*(t-1)))},circularIn:function(t){return 1-Math.sqrt(1-t*t)},circularOut:function(t){return Math.sqrt(1- --t*t)},circularInOut:function(t){return(t*=2)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},elasticIn:function(t){var e,i=.1;return 0===t?0:1===t?1:(e=!i||i<1?(i=1,.1):.4*Math.asin(1/i)/(2*Math.PI),-i*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/.4))},elasticOut:function(t){var e,i=.1;return 0===t?0:1===t?1:(e=!i||i<1?(i=1,.1):.4*Math.asin(1/i)/(2*Math.PI),i*Math.pow(2,-10*t)*Math.sin((t-e)*(2*Math.PI)/.4)+1)},elasticInOut:function(t){var e,i=.1;return 0===t?0:1===t?1:(e=!i||i<1?(i=1,.1):.4*Math.asin(1/i)/(2*Math.PI),(t*=2)<1?i*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/.4)*-.5:i*Math.pow(2,-10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/.4)*.5+1)},backIn:function(t){return t*t*(2.70158*t-1.70158)},backOut:function(t){return--t*t*(2.70158*t+1.70158)+1},backInOut:function(t){var e=2.5949095;return(t*=2)<1?t*t*((1+e)*t-e)*.5:.5*((t-=2)*t*((1+e)*t+e)+2)},bounceIn:function(t){return 1-be.bounceOut(1-t)},bounceOut:function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},bounceInOut:function(t){return t<.5?.5*be.bounceIn(2*t):.5*be.bounceOut(2*t-1)+.5}};function Se(t){this._target=t.target,this._life=t.life||1e3,this._delay=t.delay||0,this._initialized=!1,this.loop=null!=t.loop&&t.loop,this.gap=t.gap||0,this.easing=t.easing||"Linear",this.onframe=t.onframe,this.ondestroy=t.ondestroy,this.onrestart=t.onrestart,this._pausedTime=0,this._paused=!1}Se.prototype={constructor:Se,step:function(t,e){if(this._initialized||(this._startTime=t+this._delay,this._initialized=!0),this._paused)this._pausedTime+=e;else{var i=(t-this._startTime-this._pausedTime)/this._life;if(!(i<0)){i=Math.min(i,1);var n=this.easing,o="string"==typeof n?be[n]:n,a="function"==typeof o?o(i):i;return this.fire("frame",a),1===i?this.loop?(this.restart(t),"restart"):(this._needsRemove=!0,"destroy"):null}}},restart:function(t){var e=(t-this._startTime-this._pausedTime)%this._life;this._startTime=t-e+this.gap,this._pausedTime=0,this._needsRemove=!1},fire:function(t,e){this[t="on"+t]&&this[t](this._target,e)},pause:function(){this._paused=!0},resume:function(){this._paused=!1}};function Me(){this.head=null,this.tail=null,this._len=0}var Ie=Me.prototype;Ie.insert=function(t){var e=new Ae(t);return this.insertEntry(e),e},Ie.insertEntry=function(t){this.head?((this.tail.next=t).prev=this.tail,t.next=null,this.tail=t):this.head=this.tail=t,this._len++},Ie.remove=function(t){var e=t.prev,i=t.next;e?e.next=i:this.head=i,i?i.prev=e:this.tail=e,t.next=t.prev=null,this._len--},Ie.len=function(){return this._len},Ie.clear=function(){this.head=this.tail=null,this._len=0};function Te(t){this._list=new Me,this._map={},this._maxSize=t||10,this._lastRemovedEntry=null}var Ae=function(t){this.value=t,this.next,this.prev},De=Te.prototype;De.put=function(t,e){var i=this._list,n=this._map,o=null;if(null==n[t]){var a=i.len(),r=this._lastRemovedEntry;if(a>=this._maxSize&&0<a){var s=i.head;i.remove(s),delete n[s.key],o=s.value,this._lastRemovedEntry=s}r?r.value=e:r=new Ae(e),r.key=t,i.insertEntry(r),n[t]=r}return o},De.get=function(t){var e=this._map[t],i=this._list;if(null!=e)return e!==i.tail&&(i.remove(e),i.insertEntry(e)),e.value},De.clear=function(){this._list.clear(),this._map={}};var Ce={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]};function Le(t){return(t=Math.round(t))<0?0:255<t?255:t}function ke(t){return t<0?0:1<t?1:t}function Pe(t){return t.length&&"%"===t.charAt(t.length-1)?Le(parseFloat(t)/100*255):Le(parseInt(t,10))}function Ne(t){return t.length&&"%"===t.charAt(t.length-1)?ke(parseFloat(t)/100):ke(parseFloat(t))}function Oe(t,e,i){return i<0?i+=1:1<i&&(i-=1),6*i<1?t+(e-t)*i*6:2*i<1?e:3*i<2?t+(e-t)*(2/3-i)*6:t}function Ee(t,e,i){return t+(e-t)*i}function Re(t,e,i,n,o){return t[0]=e,t[1]=i,t[2]=n,t[3]=o,t}function ze(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t}var Be=new Te(20),Ve=null;function Ge(t,e){Ve&&ze(Ve,e),Ve=Be.put(t,Ve||e.slice())}function Fe(t,e){if(t){e=e||[];var i=Be.get(t);if(i)return ze(e,i);var n,o=(t+="").replace(/ /g,"").toLowerCase();if(o in Ce)return ze(e,Ce[o]),Ge(t,e),e;if("#"===o.charAt(0))return 4===o.length?0<=(n=parseInt(o.substr(1),16))&&n<=4095?(Re(e,(3840&n)>>4|(3840&n)>>8,240&n|(240&n)>>4,15&n|(15&n)<<4,1),Ge(t,e),e):void Re(e,0,0,0,1):7===o.length?0<=(n=parseInt(o.substr(1),16))&&n<=16777215?(Re(e,(16711680&n)>>16,(65280&n)>>8,255&n,1),Ge(t,e),e):void Re(e,0,0,0,1):void 0;var a=o.indexOf("("),r=o.indexOf(")");if(-1!==a&&r+1===o.length){var s=o.substr(0,a),l=o.substr(a+1,r-(a+1)).split(","),u=1;switch(s){case"rgba":if(4!==l.length)return void Re(e,0,0,0,1);u=Ne(l.pop());case"rgb":return 3!==l.length?void Re(e,0,0,0,1):(Re(e,Pe(l[0]),Pe(l[1]),Pe(l[2]),u),Ge(t,e),e);case"hsla":return 4!==l.length?void Re(e,0,0,0,1):(l[3]=Ne(l[3]),We(l,e),Ge(t,e),e);case"hsl":return 3!==l.length?void Re(e,0,0,0,1):(We(l,e),Ge(t,e),e);default:return}}Re(e,0,0,0,1)}}function We(t,e){var i=(parseFloat(t[0])%360+360)%360/360,n=Ne(t[1]),o=Ne(t[2]),a=o<=.5?o*(n+1):o+n-o*n,r=2*o-a;return Re(e=e||[],Le(255*Oe(r,a,i+1/3)),Le(255*Oe(r,a,i)),Le(255*Oe(r,a,i-1/3)),1),4===t.length&&(e[3]=t[3]),e}function He(t,e){var i=Fe(t);if(i){for(var n=0;n<3;n++)i[n]=e<0?i[n]*(1-e)|0:(255-i[n])*e+i[n]|0,255<i[n]?i[n]=255:t[n]<0&&(i[n]=0);return $e(i,4===i.length?"rgba":"rgb")}}function Ze(t){var e=Fe(t);if(e)return((1<<24)+(e[0]<<16)+(e[1]<<8)+ +e[2]).toString(16).slice(1)}function Ue(t,e,i){if(e&&e.length&&0<=t&&t<=1){i=i||[];var n=t*(e.length-1),o=Math.floor(n),a=Math.ceil(n),r=e[o],s=e[a],l=n-o;return i[0]=Le(Ee(r[0],s[0],l)),i[1]=Le(Ee(r[1],s[1],l)),i[2]=Le(Ee(r[2],s[2],l)),i[3]=ke(Ee(r[3],s[3],l)),i}}var Xe=Ue;function Ye(t,e,i){if(e&&e.length&&0<=t&&t<=1){var n=t*(e.length-1),o=Math.floor(n),a=Math.ceil(n),r=Fe(e[o]),s=Fe(e[a]),l=n-o,u=$e([Le(Ee(r[0],s[0],l)),Le(Ee(r[1],s[1],l)),Le(Ee(r[2],s[2],l)),ke(Ee(r[3],s[3],l))],"rgba");return i?{color:u,leftIndex:o,rightIndex:a,value:n}:u}}var je=Ye;function qe(t,e,i,n){if(t=Fe(t))return t=function(t){if(t){var e,i,n=t[0]/255,o=t[1]/255,a=t[2]/255,r=Math.min(n,o,a),s=Math.max(n,o,a),l=s-r,u=(s+r)/2;if(0==l)i=e=0;else{i=u<.5?l/(s+r):l/(2-s-r);var h=((s-n)/6+l/2)/l,c=((s-o)/6+l/2)/l,d=((s-a)/6+l/2)/l;n===s?e=d-c:o===s?e=1/3+h-d:a===s&&(e=2/3+c-h),e<0&&(e+=1),1<e&&(e-=1)}var f=[360*e,i,u];return null!=t[3]&&f.push(t[3]),f}}(t),null!=e&&(t[0]=function(t){return(t=Math.round(t))<0?0:360<t?360:t}(e)),null!=i&&(t[1]=Ne(i)),null!=n&&(t[2]=Ne(n)),$e(We(t),"rgba")}function Ke(t,e){if((t=Fe(t))&&null!=e)return t[3]=ke(e),$e(t,"rgba")}function $e(t,e){if(t&&t.length){var i=t[0]+","+t[1]+","+t[2];return"rgba"!==e&&"hsva"!==e&&"hsla"!==e||(i+=","+t[3]),e+"("+i+")"}}var Je=(Object.freeze||Object)({parse:Fe,lift:He,toHex:Ze,fastLerp:Ue,fastMapToColor:Xe,lerp:Ye,mapToColor:je,modifyHSL:qe,modifyAlpha:Ke,stringify:$e}),Qe=Array.prototype.slice;function ti(t,e){return t[e]}function ei(t,e,i){t[e]=i}function ii(t,e,i){return(e-t)*i+t}function ni(t,e,i){return.5<i?e:t}function oi(t,e,i,n,o){var a=t.length;if(1===o)for(var r=0;r<a;r++)n[r]=ii(t[r],e[r],i);else{var s=a&&t[0].length;for(r=0;r<a;r++)for(var l=0;l<s;l++)n[r][l]=ii(t[r][l],e[r][l],i)}}function ai(t,e,i){var n=t.length,o=e.length;if(n!==o)if(o<n)t.length=o;else for(var a=n;a<o;a++)t.push(1===i?e[a]:Qe.call(e[a]));var r=t[0]&&t[0].length;for(a=0;a<t.length;a++)if(1===i)isNaN(t[a])&&(t[a]=e[a]);else for(var s=0;s<r;s++)isNaN(t[a][s])&&(t[a][s]=e[a][s])}function ri(t,e,i){if(t===e)return!0;var n=t.length;if(n!==e.length)return!1;if(1===i){for(var o=0;o<n;o++)if(t[o]!==e[o])return!1}else{var a=t[0].length;for(o=0;o<n;o++)for(var r=0;r<a;r++)if(t[o][r]!==e[o][r])return!1}return!0}function si(t,e,i,n,o,a,r,s,l){var u=t.length;if(1===l)for(var h=0;h<u;h++)s[h]=li(t[h],e[h],i[h],n[h],o,a,r);else{var c=t[0].length;for(h=0;h<u;h++)for(var d=0;d<c;d++)s[h][d]=li(t[h][d],e[h][d],i[h][d],n[h][d],o,a,r)}}function li(t,e,i,n,o,a,r){var s=.5*(i-t),l=.5*(n-e);return(2*(e-i)+s+l)*r+(-3*(e-i)-2*s-l)*a+s*o+e}function ui(t){if(N(t)){var e=t.length;if(N(t[0])){for(var i=[],n=0;n<e;n++)i.push(Qe.call(t[n]));return i}return Qe.call(t)}return t}function hi(t){return t[0]=Math.floor(t[0]),t[1]=Math.floor(t[1]),t[2]=Math.floor(t[2]),"rgba("+t.join(",")+")"}function ci(t,e,i,n,a,o){var r=t._getter,s=t._setter,l="spline"===e,u=n.length;if(u){var h,c=N(n[0].value),d=!1,f=!1,p=c?function(t){var e=t[t.length-1].value;return N(e&&e[0])?2:1}(n):0;n.sort(function(t,e){return t.time-e.time}),h=n[u-1].time;for(var g=[],m=[],v=n[0].value,y=!0,x=0;x<u;x++){g.push(n[x].time/h);var _=n[x].value;if(c&&ri(_,v,p)||!c&&_===v||(y=!1),"string"==typeof(v=_)){var w=Fe(_);w?(_=w,d=!0):f=!0}m.push(_)}if(o||!y){var b=m[u-1];for(x=0;x<u-1;x++)c?ai(m[x],b,p):!isNaN(m[x])||isNaN(b)||f||d||(m[x]=b);c&&ai(r(t._target,a),b,p);var S,M,I,T,A,D=0,C=0;if(d)var L=[0,0,0,0];var k=new Se({target:t._target,life:h,loop:t._loop,delay:t._delay,onframe:function(t,e){var i;if(e<0)i=0;else if(e<C){for(i=Math.min(D+1,u-1);0<=i&&!(g[i]<=e);i--);i=Math.min(i,u-2)}else{for(i=D;i<u&&!(g[i]>e);i++);i=Math.min(i-1,u-2)}C=e;var n=g[(D=i)+1]-g[i];if(0!=n)if(S=(e-g[i])/n,l)if(I=m[i],M=m[0===i?i:i-1],T=m[u-2<i?u-1:i+1],A=m[u-3<i?u-1:i+2],c)si(M,I,T,A,S,S*S,S*S*S,r(t,a),p);else{if(d)o=si(M,I,T,A,S,S*S,S*S*S,L,1),o=hi(L);else{if(f)return ni(I,T,S);o=li(M,I,T,A,S,S*S,S*S*S)}s(t,a,o)}else if(c)oi(m[i],m[i+1],S,r(t,a),p);else{var o;if(d)oi(m[i],m[i+1],S,L,1),o=hi(L);else{if(f)return ni(m[i],m[i+1],S);o=ii(m[i],m[i+1],S)}s(t,a,o)}},ondestroy:i});return e&&"spline"!==e&&(k.easing=e),k}}}function di(t,e,i,n){this._tracks={},this._target=t,this._loop=e||!1,this._getter=i||ti,this._setter=n||ei,this._clipCount=0,this._delay=0,this._doneList=[],this._onframeList=[],this._clipList=[]}di.prototype={when:function(t,e){var i=this._tracks;for(var n in e)if(e.hasOwnProperty(n)){if(!i[n]){i[n]=[];var o=this._getter(this._target,n);if(null==o)continue;0!==t&&i[n].push({time:0,value:ui(o)})}i[n].push({time:t,value:e[n]})}return this},during:function(t){return this._onframeList.push(t),this},pause:function(){for(var t=0;t<this._clipList.length;t++)this._clipList[t].pause();this._paused=!0},resume:function(){for(var t=0;t<this._clipList.length;t++)this._clipList[t].resume();this._paused=!1},isPaused:function(){return!!this._paused},_doneCallback:function(){this._tracks={},this._clipList.length=0;for(var t=this._doneList,e=t.length,i=0;i<e;i++)t[i].call(this)},start:function(t,e){function i(){--a||o._doneCallback()}var n,o=this,a=0;for(var r in this._tracks)if(this._tracks.hasOwnProperty(r)){var s=ci(this,t,i,this._tracks[r],r,e);s&&(this._clipList.push(s),a++,this.animation&&this.animation.addClip(s),n=s)}if(n){var l=n.onframe;n.onframe=function(t,e){l(t,e);for(var i=0;i<o._onframeList.length;i++)o._onframeList[i](t,e)}}return a||this._doneCallback(),this},stop:function(t){for(var e=this._clipList,i=this.animation,n=0;n<e.length;n++){var o=e[n];t&&o.onframe(this._target,1),i&&i.removeClip(o)}e.length=0},delay:function(t){return this._delay=t,this},done:function(t){return t&&this._doneList.push(t),this},getClips:function(){return this._clipList}};var fi=1;"undefined"!=typeof window&&(fi=Math.max(window.devicePixelRatio||1,1));var pi=fi,gi=function(){};function mi(){this.animators=[]}var vi=gi;function yi(t,e,i,n,o,a,r,s){R(n)?(a=o,o=n,n=0):C(o)?(a=o,o="linear",n=0):C(n)?(a=n,n=0):i=C(i)?(a=i,500):i||500,t.stopAnimation(),function t(e,i,n,o,a,r,s){var l={};var u=0;for(var h in o)o.hasOwnProperty(h)&&(null!=n[h]?z(o[h])&&!N(o[h])?t(e,i?i+"."+h:h,n[h],o[h],a,r,s):(s?(l[h]=n[h],xi(e,i,h,o[h])):l[h]=o[h],u++):null==o[h]||s||xi(e,i,h,o[h]));0<u&&e.animate(i,!1).when(null==a?500:a,l).delay(r||0)}(t,"",t,e,i,n,s);var l=t.animators.slice(),u=l.length;function h(){--u||a&&a()}u||a&&a();for(var c=0;c<l.length;c++)l[c].done(h).start(o,r)}function xi(t,e,i,n){if(e){var o={};o[e]={},o[e][i]=n,t.attr(o)}else t.attr(i,n)}mi.prototype={constructor:mi,animate:function(t,e){var i,n=!1,o=this,a=this.__zr;if(t){var r=t.split("."),s=o;n="shape"===r[0];for(var l=0,u=r.length;l<u;l++)s=s&&s[r[l]];s&&(i=s)}else i=o;if(i){var h=o.animators,c=new di(i,e);return c.during(function(t){o.dirty(n)}).done(function(){h.splice(_(h,c),1)}),h.push(c),a&&a.animation.addAnimator(c),c}vi('Property "'+t+'" is not existed in element '+o.id)},stopAnimation:function(t){for(var e=this.animators,i=e.length,n=0;n<i;n++)e[n].stop(t);return e.length=0,this},animateTo:function(t,e,i,n,o,a){yi(this,t,e,i,n,o,a)},animateFrom:function(t,e,i,n,o,a){yi(this,t,e,i,n,o,a,!0)}};var _i=function(t){ve.call(this,t),Ct.call(this,t),mi.call(this,t),this.id=t.id||n()};_i.prototype={type:"element",name:"",__zr:null,ignore:!1,clipPath:null,isGroup:!1,drift:function(t,e){switch(this.draggable){case"horizontal":e=0;break;case"vertical":t=0}var i=this.transform;(i=i||(this.transform=[1,0,0,1,0,0]))[4]+=t,i[5]+=e,this.decomposeTransform(),this.dirty(!1)},beforeUpdate:function(){},afterUpdate:function(){},update:function(){this.updateTransform()},traverse:function(t,e){},attrKV:function(t,e){if("position"===t||"scale"===t||"origin"===t){if(e){var i=this[t];(i=i||(this[t]=[]))[0]=e[0],i[1]=e[1]}}else this[t]=e},hide:function(){this.ignore=!0,this.__zr&&this.__zr.refresh()},show:function(){this.ignore=!1,this.__zr&&this.__zr.refresh()},attr:function(t,e){if("string"==typeof t)this.attrKV(t,e);else if(z(t))for(var i in t)t.hasOwnProperty(i)&&this.attrKV(i,t[i]);return this.dirty(!1),this},setClipPath:function(t){var e=this.__zr;e&&t.addSelfToZr(e),this.clipPath&&this.clipPath!==t&&this.removeClipPath(),(this.clipPath=t).__zr=e,(t.__clipTarget=this).dirty(!1)},removeClipPath:function(){var t=this.clipPath;t&&(t.__zr&&t.removeSelfFromZr(t.__zr),t.__zr=null,t.__clipTarget=null,this.clipPath=null,this.dirty(!1))},addSelfToZr:function(t){this.__zr=t;var e=this.animators;if(e)for(var i=0;i<e.length;i++)t.animation.addAnimator(e[i]);this.clipPath&&this.clipPath.addSelfToZr(t)},removeSelfFromZr:function(t){this.__zr=null;var e=this.animators;if(e)for(var i=0;i<e.length;i++)t.animation.removeAnimator(e[i]);this.clipPath&&this.clipPath.removeSelfFromZr(t)}},b(_i,mi),b(_i,ve),b(_i,Ct);var wi,bi,Si,Mi,Ii=bt,Ti=Math.min,Ai=Math.max;function Di(t,e,i,n){i<0&&(t+=i,i=-i),n<0&&(e+=n,n=-n),this.x=t,this.y=e,this.width=i,this.height=n}Di.prototype={constructor:Di,union:function(t){var e=Ti(t.x,this.x),i=Ti(t.y,this.y);this.width=Ai(t.x+t.width,this.x+this.width)-e,this.height=Ai(t.y+t.height,this.y+this.height)-i,this.x=e,this.y=i},applyTransform:(wi=[],bi=[],Si=[],Mi=[],function(t){if(t){wi[0]=Si[0]=this.x,wi[1]=Mi[1]=this.y,bi[0]=Mi[0]=this.x+this.width,bi[1]=Si[1]=this.y+this.height,Ii(wi,wi,t),Ii(bi,bi,t),Ii(Si,Si,t),Ii(Mi,Mi,t),this.x=Ti(wi[0],bi[0],Si[0],Mi[0]),this.y=Ti(wi[1],bi[1],Si[1],Mi[1]);var e=Ai(wi[0],bi[0],Si[0],Mi[0]),i=Ai(wi[1],bi[1],Si[1],Mi[1]);this.width=e-this.x,this.height=i-this.y}}),calculateTransform:function(t){var e=t.width/this.width,i=t.height/this.height,n=ae();return ue(n,n,[-this.x,-this.y]),ce(n,n,[e,i]),ue(n,n,[t.x,t.y]),n},intersect:function(t){if(!t)return!1;t instanceof Di||(t=Di.create(t));var e=this,i=e.x,n=e.x+e.width,o=e.y,a=e.y+e.height,r=t.x,s=t.x+t.width,l=t.y,u=t.y+t.height;return!(n<r||s<i||a<l||u<o)},contain:function(t,e){var i=this;return t>=i.x&&t<=i.x+i.width&&e>=i.y&&e<=i.y+i.height},clone:function(){return new Di(this.x,this.y,this.width,this.height)},copy:function(t){this.x=t.x,this.y=t.y,this.width=t.width,this.height=t.height},plain:function(){return{x:this.x,y:this.y,width:this.width,height:this.height}}},Di.create=function(t){return new Di(t.x,t.y,t.width,t.height)};var Ci=function(t){for(var e in t=t||{},_i.call(this,t),t)t.hasOwnProperty(e)&&(this[e]=t[e]);this._children=[],this.__storage=null,this.__dirty=!0};Ci.prototype={constructor:Ci,isGroup:!0,type:"group",silent:!1,children:function(){return this._children.slice()},childAt:function(t){return this._children[t]},childOfName:function(t){for(var e=this._children,i=0;i<e.length;i++)if(e[i].name===t)return e[i]},childCount:function(){return this._children.length},add:function(t){return t&&t!==this&&t.parent!==this&&(this._children.push(t),this._doAdd(t)),this},addBefore:function(t,e){if(t&&t!==this&&t.parent!==this&&e&&e.parent===this){var i=this._children,n=i.indexOf(e);0<=n&&(i.splice(n,0,t),this._doAdd(t))}return this},_doAdd:function(t){t.parent&&t.parent.remove(t);var e=(t.parent=this).__storage,i=this.__zr;e&&e!==t.__storage&&(e.addToStorage(t),t instanceof Ci&&t.addChildrenToStorage(e)),i&&i.refresh()},remove:function(t){var e=this.__zr,i=this.__storage,n=this._children,o=_(n,t);return o<0||(n.splice(o,1),t.parent=null,i&&(i.delFromStorage(t),t instanceof Ci&&t.delChildrenFromStorage(i)),e&&e.refresh()),this},removeAll:function(){var t,e,i=this._children,n=this.__storage;for(e=0;e<i.length;e++)t=i[e],n&&(n.delFromStorage(t),t instanceof Ci&&t.delChildrenFromStorage(n)),t.parent=null;return i.length=0,this},eachChild:function(t,e){for(var i=this._children,n=0;n<i.length;n++){var o=i[n];t.call(e,o,n)}return this},traverse:function(t,e){for(var i=0;i<this._children.length;i++){var n=this._children[i];t.call(e,n),"group"===n.type&&n.traverse(t,e)}return this},addChildrenToStorage:function(t){for(var e=0;e<this._children.length;e++){var i=this._children[e];t.addToStorage(i),i instanceof Ci&&i.addChildrenToStorage(t)}},delChildrenFromStorage:function(t){for(var e=0;e<this._children.length;e++){var i=this._children[e];t.delFromStorage(i),i instanceof Ci&&i.delChildrenFromStorage(t)}},dirty:function(){return this.__dirty=!0,this.__zr&&this.__zr.refresh(),this},getBoundingRect:function(t){for(var e=null,i=new Di(0,0,0,0),n=t||this._children,o=[],a=0;a<n.length;a++){var r=n[a];if(!r.ignore&&!r.invisible){var s=r.getBoundingRect(),l=r.getLocalTransform(o);l?(i.copy(s),i.applyTransform(l),(e=e||i.clone()).union(i)):(e=e||s.clone()).union(s)}}return e||i}},w(Ci,_i);var Li=32,ki=7;function Pi(t,e,i,n){var o=e+1;if(o===i)return 1;if(n(t[o++],t[e])<0){for(;o<i&&n(t[o],t[o-1])<0;)o++;!function(t,e,i){i--;for(;e<i;){var n=t[e];t[e++]=t[i],t[i--]=n}}(t,e,o)}else for(;o<i&&0<=n(t[o],t[o-1]);)o++;return o-e}function Ni(t,e,i,n,o){for(n===e&&n++;n<i;n++){for(var a,r=t[n],s=e,l=n;s<l;)o(r,t[a=s+l>>>1])<0?l=a:s=1+a;var u=n-s;switch(u){case 3:t[s+3]=t[s+2];case 2:t[s+2]=t[s+1];case 1:t[s+1]=t[s];break;default:for(;0<u;)t[s+u]=t[s+u-1],u--}t[s]=r}}function Oi(t,e,i,n,o,a){var r=0,s=0,l=1;if(0<a(t,e[i+o])){for(s=n-o;l<s&&0<a(t,e[i+o+l]);)(l=1+((r=l)<<1))<=0&&(l=s);s<l&&(l=s),r+=o,l+=o}else{for(s=o+1;l<s&&a(t,e[i+o-l])<=0;)(l=1+((r=l)<<1))<=0&&(l=s);s<l&&(l=s);var u=r;r=o-l,l=o-u}for(r++;r<l;){var h=r+(l-r>>>1);0<a(t,e[i+h])?r=h+1:l=h}return l}function Ei(t,e,i,n,o,a){var r=0,s=0,l=1;if(a(t,e[i+o])<0){for(s=o+1;l<s&&a(t,e[i+o-l])<0;)(l=1+((r=l)<<1))<=0&&(l=s);s<l&&(l=s);var u=r;r=o-l,l=o-u}else{for(s=n-o;l<s&&0<=a(t,e[i+o+l]);)(l=1+((r=l)<<1))<=0&&(l=s);s<l&&(l=s),r+=o,l+=o}for(r++;r<l;){var h=r+(l-r>>>1);a(t,e[i+h])<0?l=h:r=h+1}return l}function Ri(p,g){var r,s,m=ki,l=0,v=[];function e(t){var e=r[t],i=s[t],n=r[t+1],o=s[t+1];s[t]=i+o,t===l-3&&(r[t+1]=r[t+2],s[t+1]=s[t+2]),l--;var a=Ei(p[n],p,e,i,0,g);e+=a,0!==(i-=a)&&0!==(o=Oi(p[e+i-1],p,n,o,o-1,g))&&(i<=o?function(t,e,i,n){var o=0;for(o=0;o<e;o++)v[o]=p[t+o];var a=0,r=i,s=t;if(p[s++]=p[r++],0==--n){for(o=0;o<e;o++)p[s+o]=v[a+o];return}if(1===e){for(o=0;o<n;o++)p[s+o]=p[r+o];return p[s+n]=v[a]}var l,u,h,c=m;for(;;){u=l=0,h=!1;do{if(g(p[r],v[a])<0){if(p[s++]=p[r++],u++,(l=0)==--n){h=!0;break}}else if(p[s++]=v[a++],l++,u=0,1==--e){h=!0;break}}while((l|u)<c);if(h)break;do{if(0!==(l=Ei(p[r],v,a,e,0,g))){for(o=0;o<l;o++)p[s+o]=v[a+o];if(s+=l,a+=l,(e-=l)<=1){h=!0;break}}if(p[s++]=p[r++],0==--n){h=!0;break}if(0!==(u=Oi(v[a],p,r,n,0,g))){for(o=0;o<u;o++)p[s+o]=p[r+o];if(s+=u,r+=u,0===(n-=u)){h=!0;break}}if(p[s++]=v[a++],1==--e){h=!0;break}c--}while(ki<=l||ki<=u);if(h)break;c<0&&(c=0),c+=2}if((m=c)<1&&(m=1),1===e){for(o=0;o<n;o++)p[s+o]=p[r+o];p[s+n]=v[a]}else{if(0===e)throw new Error;for(o=0;o<e;o++)p[s+o]=v[a+o]}}(e,i,n,o):function(t,e,i,n){var o=0;for(o=0;o<n;o++)v[o]=p[i+o];var a=t+e-1,r=n-1,s=i+n-1,l=0,u=0;if(p[s--]=p[a--],0==--e){for(l=s-(n-1),o=0;o<n;o++)p[l+o]=v[o];return}if(1===n){for(u=(s-=e)+1,l=(a-=e)+1,o=e-1;0<=o;o--)p[u+o]=p[l+o];return p[s]=v[r]}var h=m;for(;;){var c=0,d=0,f=!1;do{if(g(v[r],p[a])<0){if(p[s--]=p[a--],c++,(d=0)==--e){f=!0;break}}else if(p[s--]=v[r--],d++,c=0,1==--n){f=!0;break}}while((c|d)<h);if(f)break;do{if(0!==(c=e-Ei(v[r],p,t,e,e-1,g))){for(e-=c,u=(s-=c)+1,l=(a-=c)+1,o=c-1;0<=o;o--)p[u+o]=p[l+o];if(0===e){f=!0;break}}if(p[s--]=v[r--],1==--n){f=!0;break}if(0!==(d=n-Oi(p[a],v,0,n,n-1,g))){for(n-=d,u=(s-=d)+1,l=(r-=d)+1,o=0;o<d;o++)p[u+o]=v[l+o];if(n<=1){f=!0;break}}if(p[s--]=p[a--],0==--e){f=!0;break}h--}while(ki<=c||ki<=d);if(f)break;h<0&&(h=0),h+=2}(m=h)<1&&(m=1);if(1===n){for(u=(s-=e)+1,l=(a-=e)+1,o=e-1;0<=o;o--)p[u+o]=p[l+o];p[s]=v[r]}else{if(0===n)throw new Error;for(l=s-(n-1),o=0;o<n;o++)p[l+o]=v[o]}}(e,i,n,o))}r=[],s=[],this.mergeRuns=function(){for(;1<l;){var t=l-2;if(1<=t&&s[t-1]<=s[t]+s[t+1]||2<=t&&s[t-2]<=s[t]+s[t-1])s[t-1]<s[t+1]&&t--;else if(s[t]>s[t+1])break;e(t)}},this.forceMergeRuns=function(){for(;1<l;){var t=l-2;0<t&&s[t-1]<s[t+1]&&t--,e(t)}},this.pushRun=function(t,e){r[l]=t,s[l]=e,l+=1}}function zi(t,e,i,n){i=i||0;var o=(n=n||t.length)-i;if(!(o<2)){var a=0;if(o<Li)Ni(t,i,n,i+(a=Pi(t,i,n,e)),e);else{var r=new Ri(t,e),s=function(t){for(var e=0;Li<=t;)e|=1&t,t>>=1;return t+e}(o);do{if((a=Pi(t,i,n,e))<s){var l=o;s<l&&(l=s),Ni(t,i,i+l,i+a,e),a=l}r.pushRun(i,a),r.mergeRuns(),o-=a,i+=a}while(0!==o);r.forceMergeRuns()}}}function Bi(t,e){return t.zlevel===e.zlevel?t.z===e.z?t.z2-e.z2:t.z-e.z:t.zlevel-e.zlevel}function Vi(){this._roots=[],this._displayList=[],this._displayListLen=0}Vi.prototype={constructor:Vi,traverse:function(t,e){for(var i=0;i<this._roots.length;i++)this._roots[i].traverse(t,e)},getDisplayList:function(t,e){return e=e||!1,t&&this.updateDisplayList(e),this._displayList},updateDisplayList:function(t){this._displayListLen=0;for(var e=this._roots,i=this._displayList,n=0,o=e.length;n<o;n++)this._updateAndAddDisplayable(e[n],null,t);i.length=this._displayListLen,v.canvasSupported&&zi(i,Bi)},_updateAndAddDisplayable:function(t,e,i){if(!t.ignore||i){t.beforeUpdate(),t.__dirty&&t.update(),t.afterUpdate();var n=t.clipPath;if(n){e=e?e.slice():[];for(var o=n,a=t;o;)o.parent=a,o.updateTransform(),e.push(o),o=(a=o).clipPath}if(t.isGroup){for(var r=t._children,s=0;s<r.length;s++){var l=r[s];t.__dirty&&(l.__dirty=!0),this._updateAndAddDisplayable(l,e,i)}t.__dirty=!1}else t.__clipPaths=e,this._displayList[this._displayListLen++]=t}},addRoot:function(t){t.__storage!==this&&(t instanceof Ci&&t.addChildrenToStorage(this),this.addToStorage(t),this._roots.push(t))},delRoot:function(t){if(null==t){for(var e=0;e<this._roots.length;e++){var i=this._roots[e];i instanceof Ci&&i.delChildrenFromStorage(this)}return this._roots=[],this._displayList=[],void(this._displayListLen=0)}if(t instanceof Array){e=0;for(var n=t.length;e<n;e++)this.delRoot(t[e])}else{var o=_(this._roots,t);0<=o&&(this.delFromStorage(t),this._roots.splice(o,1),t instanceof Ci&&t.delChildrenFromStorage(this))}},addToStorage:function(t){return t&&(t.__storage=this,t.dirty(!1)),this},delFromStorage:function(t){return t&&(t.__storage=null),this},dispose:function(){this._renderList=this._roots=null},displayableSortFunc:Bi};var Gi={shadowBlur:1,shadowOffsetX:1,shadowOffsetY:1,textShadowBlur:1,textShadowOffsetX:1,textShadowOffsetY:1,textBoxShadowBlur:1,textBoxShadowOffsetX:1,textBoxShadowOffsetY:1},Fi=function(t,e,i){return Gi.hasOwnProperty(e)?i*t.dpr:i},Wi={NONE:0,STYLE_BIND:1,PLAIN_TEXT:2},Hi=9,Zi=[["shadowBlur",0],["shadowOffsetX",0],["shadowOffsetY",0],["shadowColor","#000"],["lineCap","butt"],["lineJoin","miter"],["miterLimit",10]],Ui=function(t){this.extendFrom(t,!1)};function Xi(t,e,i){var n=null==e.x?0:e.x,o=null==e.x2?1:e.x2,a=null==e.y?0:e.y,r=null==e.y2?0:e.y2;return e.global||(n=n*i.width+i.x,o=o*i.width+i.x,a=a*i.height+i.y,r=r*i.height+i.y),n=isNaN(n)?0:n,o=isNaN(o)?1:o,a=isNaN(a)?0:a,r=isNaN(r)?0:r,t.createLinearGradient(n,a,o,r)}function Yi(t,e,i){var n=i.width,o=i.height,a=Math.min(n,o),r=null==e.x?.5:e.x,s=null==e.y?.5:e.y,l=null==e.r?.5:e.r;return e.global||(r=r*n+i.x,s=s*o+i.y,l*=a),t.createRadialGradient(r,s,0,r,s,l)}Ui.prototype={constructor:Ui,fill:"#000",stroke:null,opacity:1,fillOpacity:null,strokeOpacity:null,lineDash:null,lineDashOffset:0,shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0,lineWidth:1,strokeNoScale:!1,text:null,font:null,textFont:null,fontStyle:null,fontWeight:null,fontSize:null,fontFamily:null,textTag:null,textFill:"#000",textStroke:null,textWidth:null,textHeight:null,textStrokeWidth:0,textLineHeight:null,textPosition:"inside",textRect:null,textOffset:null,textAlign:null,textVerticalAlign:null,textDistance:5,textShadowColor:"transparent",textShadowBlur:0,textShadowOffsetX:0,textShadowOffsetY:0,textBoxShadowColor:"transparent",textBoxShadowBlur:0,textBoxShadowOffsetX:0,textBoxShadowOffsetY:0,transformText:!1,textRotation:0,textOrigin:null,textBackgroundColor:null,textBorderColor:null,textBorderWidth:0,textBorderRadius:0,textPadding:null,rich:null,truncate:null,blend:null,bind:function(t,e,i){var n=this,o=i&&i.style,a=!o||t.__attrCachedBy!==Wi.STYLE_BIND;t.__attrCachedBy=Wi.STYLE_BIND;for(var r=0;r<Zi.length;r++){var s=Zi[r],l=s[0];!a&&n[l]===o[l]||(t[l]=Fi(t,l,n[l]||s[1]))}if(!a&&n.fill===o.fill||(t.fillStyle=n.fill),!a&&n.stroke===o.stroke||(t.strokeStyle=n.stroke),!a&&n.opacity===o.opacity||(t.globalAlpha=null==n.opacity?1:n.opacity),!a&&n.blend===o.blend||(t.globalCompositeOperation=n.blend||"source-over"),this.hasStroke()){var u=n.lineWidth;t.lineWidth=u/(this.strokeNoScale&&e&&e.getLineScale?e.getLineScale():1)}},hasFill:function(){var t=this.fill;return null!=t&&"none"!==t},hasStroke:function(){var t=this.stroke;return null!=t&&"none"!==t&&0<this.lineWidth},extendFrom:function(t,e){if(t)for(var i in t)!t.hasOwnProperty(i)||!0!==e&&(!1===e?this.hasOwnProperty(i):null==t[i])||(this[i]=t[i])},set:function(t,e){"string"==typeof t?this[t]=e:this.extendFrom(t,!0)},clone:function(){var t=new this.constructor;return t.extendFrom(this,!0),t},getGradient:function(t,e,i){for(var n=("radial"===e.type?Yi:Xi)(t,e,i),o=e.colorStops,a=0;a<o.length;a++)n.addColorStop(o[a].offset,o[a].color);return n}};for(var ji=Ui.prototype,qi=0;qi<Zi.length;qi++){var Ki=Zi[qi];Ki[0]in ji||(ji[Ki[0]]=Ki[1])}Ui.getGradient=ji.getGradient;function $i(t,e){this.image=t,this.repeat=e,this.type="pattern"}function Ji(){return!1}function Qi(t,e,i){var n=y(),o=e.getWidth(),a=e.getHeight(),r=n.style;return r&&(r.position="absolute",r.left=0,r.top=0,r.width=o+"px",r.height=a+"px",n.setAttribute("data-zr-dom-id",t)),n.width=o*i,n.height=a*i,n}function tn(t,e,i){var n;i=i||pi,"string"==typeof t?n=Qi(t,e,i):z(t)&&(t=(n=t).id),this.id=t;var o=(this.dom=n).style;o&&(n.onselectstart=Ji,o["-webkit-user-select"]="none",o["user-select"]="none",o["-webkit-touch-callout"]="none",o["-webkit-tap-highlight-color"]="rgba(0,0,0,0)",o.padding=0,o.margin=0,o["border-width"]=0),this.domBack=null,this.ctxBack=null,this.painter=e,this.config=null,this.clearColor=0,this.motionBlur=!1,this.lastFrameAlpha=.7,this.dpr=i}tn.prototype={constructor:tn,__dirty:!0,__used:!($i.prototype.getCanvasPattern=function(t){return t.createPattern(this.image,this.repeat||"repeat")}),__drawIndex:0,__startIndex:0,__endIndex:0,incremental:!1,getElementCount:function(){return this.__endIndex-this.__startIndex},initContext:function(){this.ctx=this.dom.getContext("2d"),this.ctx.dpr=this.dpr},createBackBuffer:function(){var t=this.dpr;this.domBack=Qi("back-"+this.id,this.painter,t),this.ctxBack=this.domBack.getContext("2d"),1!==t&&this.ctxBack.scale(t,t)},resize:function(t,e){var i=this.dpr,n=this.dom,o=n.style,a=this.domBack;o&&(o.width=t+"px",o.height=e+"px"),n.width=t*i,n.height=e*i,a&&(a.width=t*i,a.height=e*i,1!==i&&this.ctxBack.scale(i,i))},clear:function(t,e){var i,n=this.dom,o=this.ctx,a=n.width,r=n.height,s=(e=e||this.clearColor,this.motionBlur&&!t),l=this.lastFrameAlpha,u=this.dpr;s&&(this.domBack||this.createBackBuffer(),this.ctxBack.globalCompositeOperation="copy",this.ctxBack.drawImage(n,0,0,a/u,r/u)),o.clearRect(0,0,a,r),e&&"transparent"!==e&&(e.colorStops?(i=e.__canvasGradient||Ui.getGradient(o,e,{x:0,y:0,width:a,height:r}),e.__canvasGradient=i):e.image&&(i=$i.prototype.getCanvasPattern.call(e,o)),o.save(),o.fillStyle=i||e,o.fillRect(0,0,a,r),o.restore());if(s){var h=this.domBack;o.save(),o.globalAlpha=l,o.drawImage(h,0,0,a,r),o.restore()}}};var en="undefined"!=typeof window&&(window.requestAnimationFrame&&window.requestAnimationFrame.bind(window)||window.msRequestAnimationFrame&&window.msRequestAnimationFrame.bind(window)||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame)||function(t){setTimeout(t,16)},nn=new Te(50);function on(t){if("string"!=typeof t)return t;var e=nn.get(t);return e&&e.image}function an(t,e,i,n,o){if(t){if("string"!=typeof t)return t;if(e&&e.__zrImageSrc===t||!i)return e;var a=nn.get(t),r={hostEl:i,cb:n,cbPayload:o};return a?sn(e=a.image)||a.pending.push(r):((e=new Image).onload=e.onerror=rn,nn.put(t,e.__cachedImgObj={image:e,pending:[r]}),e.src=e.__zrImageSrc=t),e}return e}function rn(){var t=this.__cachedImgObj;this.onload=this.onerror=this.__cachedImgObj=null;for(var e=0;e<t.pending.length;e++){var i=t.pending[e],n=i.cb;n&&n(this,i.cbPayload),i.hostEl.dirty()}t.pending.length=0}function sn(t){return t&&t.width&&t.height}var ln={},un=0,hn=5e3,cn=/\{([a-zA-Z0-9_]+)\|([^}]*)\}/g,dn="12px sans-serif",fn={};function pn(t,e){var i=t+":"+(e=e||dn);if(ln[i])return ln[i];for(var n,o,a=(t+"").split("\n"),r=0,s=0,l=a.length;s<l;s++)r=Math.max((n=a[s],o=e,fn.measureText(n,o)).width,r);return hn<un&&(un=0,ln={}),un++,ln[i]=r}function gn(t,e,i,n,o,a,r,s){return r?function(t,e,i,n,o,a,r,s){var l=In(t,{rich:r,truncate:s,font:e,textAlign:i,textPadding:o,textLineHeight:a}),u=l.outerWidth,h=l.outerHeight,c=mn(0,u,i),d=vn(0,h,n);return new Di(c,d,u,h)}(t,e,i,n,o,a,r,s):function(t,e,i,n,o,a,r){var s=Mn(t,e,o,a,r),l=pn(t,e);o&&(l+=o[1]+o[3]);var u=s.outerHeight,h=mn(0,l,i),c=vn(0,u,n),d=new Di(h,c,l,u);return d.lineHeight=s.lineHeight,d}(t,e,i,n,o,a,s)}function mn(t,e,i){return"right"===i?t-=e:"center"===i&&(t-=e/2),t}function vn(t,e,i){return"middle"===i?t-=e/2:"bottom"===i&&(t-=e),t}function yn(t,e,i){var n=e.textPosition,o=e.textDistance,a=i.x,r=i.y;o=o||0;var s=i.height,l=i.width,u=s/2,h="left",c="top";switch(n){case"left":a-=o,r+=u,h="right",c="middle";break;case"right":a+=o+l,r+=u,c="middle";break;case"top":a+=l/2,r-=o,h="center",c="bottom";break;case"bottom":a+=l/2,r+=s+o,h="center";break;case"inside":a+=l/2,r+=u,h="center",c="middle";break;case"insideLeft":a+=o,r+=u,c="middle";break;case"insideRight":a+=l-o,r+=u,h="right",c="middle";break;case"insideTop":a+=l/2,r+=o,h="center";break;case"insideBottom":a+=l/2,r+=s-o,h="center",c="bottom";break;case"insideTopLeft":a+=o,r+=o;break;case"insideTopRight":a+=l-o,r+=o,h="right";break;case"insideBottomLeft":a+=o,r+=s-o,c="bottom";break;case"insideBottomRight":a+=l-o,r+=s-o,h="right",c="bottom"}return(t=t||{}).x=a,t.y=r,t.textAlign=h,t.textVerticalAlign=c,t}function xn(t,e,i,n,o){if(!e)return"";var a=(t+"").split("\n");o=_n(e,i,n,o);for(var r=0,s=a.length;r<s;r++)a[r]=wn(a[r],o);return a.join("\n")}function _n(t,e,i,n){(n=P({},n)).font=e;i=H(i,"...");n.maxIterations=H(n.maxIterations,2);var o=n.minChar=H(n.minChar,0);n.cnCharWidth=pn("国",e);var a=n.ascCharWidth=pn("a",e);n.placeholder=H(n.placeholder,"");for(var r=t=Math.max(0,t-1),s=0;s<o&&a<=r;s++)r-=a;var l=pn(i,e);return r<l&&(i="",l=0),r=t-l,n.ellipsis=i,n.ellipsisWidth=l,n.contentWidth=r,n.containerWidth=t,n}function wn(t,e){var i=e.containerWidth,n=e.font,o=e.contentWidth;if(!i)return"";var a=pn(t,n);if(a<=i)return t;for(var r=0;;r++){if(a<=o||r>=e.maxIterations){t+=e.ellipsis;break}var s=0===r?bn(t,o,e.ascCharWidth,e.cnCharWidth):0<a?Math.floor(t.length*o/a):0;a=pn(t=t.substr(0,s),n)}return""===t&&(t=e.placeholder),t}function bn(t,e,i,n){for(var o=0,a=0,r=t.length;a<r&&o<e;a++){var s=t.charCodeAt(a);o+=0<=s&&s<=127?i:n}return a}function Sn(t){return pn("国",t)}function Mn(t,e,i,n,o){null!=t&&(t+="");var a=H(n,Sn(e)),r=t?t.split("\n"):[],s=r.length*a,l=s,u=!0;if(i&&(l+=i[0]+i[2]),t&&o){u=!1;var h=o.outerHeight,c=o.outerWidth;if(null!=h&&h<l)t="",r=[];else if(null!=c)for(var d=_n(c-(i?i[1]+i[3]:0),e,o.ellipsis,{minChar:o.minChar,placeholder:o.placeholder}),f=0,p=r.length;f<p;f++)r[f]=wn(r[f],d)}return{lines:r,height:s,outerHeight:l,lineHeight:a,canCacheByTextString:u}}function In(t,e){var i={lines:[],width:0,height:0};if(null!=t&&(t+=""),!t)return i;for(var n,o=cn.lastIndex=0;null!=(n=cn.exec(t));){var a=n.index;o<a&&Tn(i,t.substring(o,a)),Tn(i,n[2],n[1]),o=cn.lastIndex}o<t.length&&Tn(i,t.substring(o,t.length));var r=i.lines,s=0,l=0,u=[],h=e.textPadding,c=e.truncate,d=c&&c.outerWidth,f=c&&c.outerHeight;h&&(null!=d&&(d-=h[1]+h[3]),null!=f&&(f-=h[0]+h[2]));for(var p=0;p<r.length;p++){for(var g=r[p],m=0,v=0,y=0;y<g.tokens.length;y++){var x=(C=g.tokens[y]).styleName&&e.rich[C.styleName]||{},_=C.textPadding=x.textPadding,w=C.font=x.font||e.font,b=C.textHeight=H(x.textHeight,Sn(w));if(_&&(b+=_[0]+_[2]),C.height=b,C.lineHeight=Z(x.textLineHeight,e.textLineHeight,b),C.textAlign=x&&x.textAlign||e.textAlign,C.textVerticalAlign=x&&x.textVerticalAlign||"middle",null!=f&&s+C.lineHeight>f)return{lines:[],width:0,height:0};C.textWidth=pn(C.text,w);var S=x.textWidth,M=null==S||"auto"===S;if("string"==typeof S&&"%"===S.charAt(S.length-1))C.percentWidth=S,u.push(C),S=0;else{if(M){S=C.textWidth;var I=x.textBackgroundColor,T=I&&I.image;T&&sn(T=on(T))&&(S=Math.max(S,T.width*b/T.height))}var A=_?_[1]+_[3]:0;S+=A;var D=null!=d?d-v:null;null!=D&&D<S&&(!M||D<A?(C.text="",C.textWidth=S=0):(C.text=xn(C.text,D-A,w,c.ellipsis,{minChar:c.minChar}),C.textWidth=pn(C.text,w),S=C.textWidth+A))}v+=C.width=S,x&&(m=Math.max(m,C.lineHeight))}g.width=v,s+=g.lineHeight=m,l=Math.max(l,v)}i.outerWidth=i.width=H(e.textWidth,l),i.outerHeight=i.height=H(e.textHeight,s),h&&(i.outerWidth+=h[1]+h[3],i.outerHeight+=h[0]+h[2]);for(p=0;p<u.length;p++){var C,L=(C=u[p]).percentWidth;C.width=parseInt(L,10)/100*l}return i}function Tn(t,e,i){for(var n=""===e,o=e.split("\n"),a=t.lines,r=0;r<o.length;r++){var s=o[r],l={styleName:i,text:s,isLineHolder:!s&&!n};if(r)a.push({tokens:[l]});else{var u=(a[a.length-1]||(a[0]={tokens:[]})).tokens,h=u.length;1===h&&u[0].isLineHolder?u[0]=l:!s&&h&&!n||u.push(l)}}}function An(t){var e=(t.fontSize||t.fontFamily)&&[t.fontStyle,t.fontWeight,(t.fontSize||12)+"px",t.fontFamily||"sans-serif"].join(" ");return e&&j(e)||t.textFont||t.font}function Dn(t,e){var i,n,o,a,r,s=e.x,l=e.y,u=e.width,h=e.height,c=e.r;u<0&&(s+=u,u=-u),h<0&&(l+=h,h=-h),"number"==typeof c?i=n=o=a=c:c instanceof Array?1===c.length?i=n=o=a=c[0]:2===c.length?(i=o=c[0],n=a=c[1]):3===c.length?(i=c[0],n=a=c[1],o=c[2]):(i=c[0],n=c[1],o=c[2],a=c[3]):i=n=o=a=0,u<i+n&&(i*=u/(r=i+n),n*=u/r),u<o+a&&(o*=u/(r=o+a),a*=u/r),h<n+o&&(n*=h/(r=n+o),o*=h/r),h<i+a&&(i*=h/(r=i+a),a*=h/r),t.moveTo(s+i,l),t.lineTo(s+u-n,l),0!==n&&t.arc(s+u-n,l+n,n,-Math.PI/2,0),t.lineTo(s+u,l+h-o),0!==o&&t.arc(s+u-o,l+h-o,o,0,Math.PI/2),t.lineTo(s+a,l+h),0!==a&&t.arc(s+a,l+h-a,a,Math.PI/2,Math.PI),t.lineTo(s,l+i),0!==i&&t.arc(s+i,l+i,i,Math.PI,1.5*Math.PI)}fn.measureText=function(t,e){var i=x();return i.font=e||dn,i.measureText(t)};var Cn=dn,Ln={left:1,right:1,center:1},kn={top:1,bottom:1,middle:1},Pn=[["textShadowBlur","shadowBlur",0],["textShadowOffsetX","shadowOffsetX",0],["textShadowOffsetY","shadowOffsetY",0],["textShadowColor","shadowColor","transparent"]],Nn={},On={};function En(t){return Rn(t),E(t.rich,Rn),t}function Rn(t){if(t){t.font=An(t);var e=t.textAlign;"middle"===e&&(e="center"),t.textAlign=null==e||Ln[e]?e:"left";var i=t.textVerticalAlign||t.textBaseline;"center"===i&&(i="middle"),t.textVerticalAlign=null==i||kn[i]?i:"top",t.textPadding&&(t.textPadding=X(t.textPadding))}}function zn(t,e,i,n,o,a){n.rich?function(t,e,i,n,o,a){a!==Hi&&(e.__attrCachedBy=Wi.NONE);var r=t.__textCotentBlock;r&&!t.__dirtyText||(r=t.__textCotentBlock=In(i,n));!function(t,e,i,n,o){var a=i.width,r=i.outerWidth,s=i.outerHeight,l=n.textPadding,u=Hn(On,t,n,o),h=u.baseX,c=u.baseY,d=u.textAlign,f=u.textVerticalAlign;Bn(e,n,o,h,c);var p=mn(h,r,d),g=vn(c,s,f),m=p,v=g;l&&(m+=l[3],v+=l[0]);var y=m+a;Gn(n)&&Fn(t,e,n,p,g,r,s);for(var x=0;x<i.lines.length;x++){for(var _,w=i.lines[x],b=w.tokens,S=b.length,M=w.lineHeight,I=w.width,T=0,A=m,D=y,C=S-1;T<S&&(!(_=b[T]).textAlign||"left"===_.textAlign);)Vn(t,e,_,n,M,v,A,"left"),I-=_.width,A+=_.width,T++;for(;0<=C&&"right"===(_=b[C]).textAlign;)Vn(t,e,_,n,M,v,D,"right"),I-=_.width,D-=_.width,C--;for(A+=(a-(A-m)-(y-D)-I)/2;T<=C;)_=b[T],Vn(t,e,_,n,M,v,A+_.width/2,"center"),A+=_.width,T++;v+=M}}(t,e,r,n,o)}(t,e,i,n,o,a):function(t,e,i,n,o,a){var r,s=Gn(n),l=!1,u=e.__attrCachedBy===Wi.PLAIN_TEXT;a!==Hi?(a&&(r=a.style,l=!s&&u&&r),e.__attrCachedBy=s?Wi.NONE:Wi.PLAIN_TEXT):u&&(e.__attrCachedBy=Wi.NONE);var h=n.font||Cn;l&&h===(r.font||Cn)||(e.font=h);var c=t.__computedFont;t.__styleFont!==h&&(t.__styleFont=h,c=t.__computedFont=e.font);var d=n.textPadding,f=n.textLineHeight,p=t.__textCotentBlock;p&&!t.__dirtyText||(p=t.__textCotentBlock=Mn(i,c,d,f,n.truncate));var g=p.outerHeight,m=p.lines,v=p.lineHeight,y=Hn(On,t,n,o),x=y.baseX,_=y.baseY,w=y.textAlign||"left",b=y.textVerticalAlign;Bn(e,n,o,x,_);var S=vn(_,g,b),M=x,I=S;if(s||d){var T=pn(i,c);d&&(T+=d[1]+d[3]);var A=mn(x,T,w);s&&Fn(t,e,n,A,S,T,g),d&&(M=jn(x,w,d),I+=d[0])}e.textAlign=w,e.textBaseline="middle",e.globalAlpha=n.opacity||1;for(var D=0;D<Pn.length;D++){var C=Pn[D],L=C[0],k=C[1],P=n[L];l&&P===r[L]||(e[k]=Fi(e,k,P||C[2]))}I+=v/2;var N=n.textStrokeWidth,O=l?r.textStrokeWidth:null,E=!l||N!==O,R=!l||E||n.textStroke!==r.textStroke,z=Un(n.textStroke,N),B=Xn(n.textFill);z&&(E&&(e.lineWidth=N),R&&(e.strokeStyle=z));B&&(l&&n.textFill===r.textFill||(e.fillStyle=B));if(1===m.length)z&&e.strokeText(m[0],M,I),B&&e.fillText(m[0],M,I);else for(D=0;D<m.length;D++)z&&e.strokeText(m[D],M,I),B&&e.fillText(m[D],M,I),I+=v}(t,e,i,n,o,a)}function Bn(t,e,i,n,o){if(i&&e.textRotation){var a=e.textOrigin;"center"===a?(n=i.width/2+i.x,o=i.height/2+i.y):a&&(n=a[0]+i.x,o=a[1]+i.y),t.translate(n,o),t.rotate(-e.textRotation),t.translate(-n,-o)}}function Vn(t,e,i,n,o,a,r,s){var l=n.rich[i.styleName]||{};l.text=i.text;var u=i.textVerticalAlign,h=a+o/2;"top"===u?h=a+i.height/2:"bottom"===u&&(h=a+o-i.height/2),!i.isLineHolder&&Gn(l)&&Fn(t,e,l,"right"===s?r-i.width:"center"===s?r-i.width/2:r,h-i.height/2,i.width,i.height);var c=i.textPadding;c&&(r=jn(r,s,c),h-=i.height/2-c[2]-i.textHeight/2),Zn(e,"shadowBlur",Z(l.textShadowBlur,n.textShadowBlur,0)),Zn(e,"shadowColor",l.textShadowColor||n.textShadowColor||"transparent"),Zn(e,"shadowOffsetX",Z(l.textShadowOffsetX,n.textShadowOffsetX,0)),Zn(e,"shadowOffsetY",Z(l.textShadowOffsetY,n.textShadowOffsetY,0)),Zn(e,"textAlign",s),Zn(e,"textBaseline","middle"),Zn(e,"font",i.font||Cn);var d=Un(l.textStroke||n.textStroke,p),f=Xn(l.textFill||n.textFill),p=H(l.textStrokeWidth,n.textStrokeWidth);d&&(Zn(e,"lineWidth",p),Zn(e,"strokeStyle",d),e.strokeText(i.text,r,h)),f&&(Zn(e,"fillStyle",f),e.fillText(i.text,r,h))}function Gn(t){return!!(t.textBackgroundColor||t.textBorderWidth&&t.textBorderColor)}function Fn(t,e,i,n,o,a,r){var s=i.textBackgroundColor,l=i.textBorderWidth,u=i.textBorderColor,h=R(s);if(Zn(e,"shadowBlur",i.textBoxShadowBlur||0),Zn(e,"shadowColor",i.textBoxShadowColor||"transparent"),Zn(e,"shadowOffsetX",i.textBoxShadowOffsetX||0),Zn(e,"shadowOffsetY",i.textBoxShadowOffsetY||0),h||l&&u){e.beginPath();var c=i.textBorderRadius;c?Dn(e,{x:n,y:o,width:a,height:r,r:c}):e.rect(n,o,a,r),e.closePath()}if(h)if(Zn(e,"fillStyle",s),null!=i.fillOpacity){var d=e.globalAlpha;e.globalAlpha=i.fillOpacity*i.opacity,e.fill(),e.globalAlpha=d}else e.fill();else if(z(s)){var f=s.image;(f=an(f,null,t,Wn,s))&&sn(f)&&e.drawImage(f,n,o,a,r)}if(l&&u)if(Zn(e,"lineWidth",l),Zn(e,"strokeStyle",u),null!=i.strokeOpacity){d=e.globalAlpha;e.globalAlpha=i.strokeOpacity*i.opacity,e.stroke(),e.globalAlpha=d}else e.stroke()}function Wn(t,e){e.image=t}function Hn(t,e,i,n){var o=i.x||0,a=i.y||0,r=i.textAlign,s=i.textVerticalAlign;if(n){var l=i.textPosition;if(l instanceof Array)o=n.x+Yn(l[0],n.width),a=n.y+Yn(l[1],n.height);else{var u=e&&e.calculateTextPosition?e.calculateTextPosition(Nn,i,n):yn(Nn,i,n);o=u.x,a=u.y,r=r||u.textAlign,s=s||u.textVerticalAlign}var h=i.textOffset;h&&(o+=h[0],a+=h[1])}return(t=t||{}).baseX=o,t.baseY=a,t.textAlign=r,t.textVerticalAlign=s,t}function Zn(t,e,i){return t[e]=Fi(t,e,i),t[e]}function Un(t,e){return null==t||e<=0||"transparent"===t||"none"===t?null:t.image||t.colorStops?"#000":t}function Xn(t){return null==t||"none"===t?null:t.image||t.colorStops?"#000":t}function Yn(t,e){return"string"==typeof t?0<=t.lastIndexOf("%")?parseFloat(t)/100*e:parseFloat(t):t}function jn(t,e,i){return"right"===e?t-i[1]:"center"===e?t+i[3]/2-i[1]/2:t+i[3]}function qn(t,e){return null!=t&&(t||e.textBackgroundColor||e.textBorderWidth&&e.textBorderColor||e.textPadding)}function Kn(){}var $n=new Di;function Jn(t){for(var e in t=t||{},_i.call(this,t),t)t.hasOwnProperty(e)&&"style"!==e&&(this[e]=t[e]);this.style=new Ui(t.style,this),this._rect=null,this.__clipPaths=null}function Qn(t){Jn.call(this,t)}Jn.prototype={constructor:Jn,type:"displayable",__dirty:!0,invisible:!(Kn.prototype={constructor:Kn,drawRectText:function(t,e){var i=this.style;e=i.textRect||e,this.__dirty&&En(i);var n=i.text;if(null!=n&&(n+=""),qn(n,i)){t.save();var o=this.transform;i.transformText?this.setTransform(t):o&&($n.copy(e),$n.applyTransform(o),e=$n),zn(this,t,n,i,e,Hi),t.restore()}}}),z:0,z2:0,zlevel:0,draggable:!1,dragging:!1,silent:!1,culling:!1,cursor:"pointer",rectHover:!1,progressive:!1,incremental:!1,globalScaleRatio:1,beforeBrush:function(t){},afterBrush:function(t){},brush:function(t,e){},getBoundingRect:function(){},contain:function(t,e){return this.rectContain(t,e)},traverse:function(t,e){t.call(e,this)},rectContain:function(t,e){var i=this.transformCoordToLocal(t,e);return this.getBoundingRect().contain(i[0],i[1])},dirty:function(){this.__dirty=this.__dirtyText=!0,this._rect=null,this.__zr&&this.__zr.refresh()},animateStyle:function(t){return this.animate("style",t)},attrKV:function(t,e){"style"!==t?_i.prototype.attrKV.call(this,t,e):this.style.set(e)},setStyle:function(t,e){return this.style.set(t,e),this.dirty(!1),this},useStyle:function(t){return this.style=new Ui(t,this),this.dirty(!1),this},calculateTextPosition:null},w(Jn,_i),b(Jn,Kn),Qn.prototype={constructor:Qn,type:"image",brush:function(t,e){var i=this.style,n=i.image;i.bind(t,this,e);var o=this._image=an(n,this._image,this,this.onload);if(o&&sn(o)){var a=i.x||0,r=i.y||0,s=i.width,l=i.height,u=o.width/o.height;if(null==s&&null!=l?s=l*u:null==l&&null!=s?l=s/u:null==s&&null==l&&(s=o.width,l=o.height),this.setTransform(t),i.sWidth&&i.sHeight){var h=i.sx||0,c=i.sy||0;t.drawImage(o,h,c,i.sWidth,i.sHeight,a,r,s,l)}else if(i.sx&&i.sy){var d=s-(h=i.sx),f=l-(c=i.sy);t.drawImage(o,h,c,d,f,a,r,s,l)}else t.drawImage(o,a,r,s,l);null!=i.text&&(this.restoreTransform(t),this.drawRectText(t,this.getBoundingRect()))}},getBoundingRect:function(){var t=this.style;return this._rect||(this._rect=new Di(t.x||0,t.y||0,t.width||0,t.height||0)),this._rect}},w(Qn,Jn);var to=314159;function eo(t){return parseInt(t,10)}var io=new Di(0,0,0,0),no=new Di(0,0,0,0);function oo(t,e,i){this.type="canvas";var n=!t.nodeName||"CANVAS"===t.nodeName.toUpperCase();this._opts=i=P({},i||{}),this.dpr=i.devicePixelRatio||pi,this._singleCanvas=n;var o=(this.root=t).style;o&&(o["-webkit-tap-highlight-color"]="transparent",o["-webkit-user-select"]=o["user-select"]=o["-webkit-touch-callout"]="none",t.innerHTML=""),this.storage=e;var a=this._zlevelList=[],r=this._layers={};if(this._layerConfig={},this._needsManuallyCompositing=!1,n){var s=t.width,l=t.height;null!=i.width&&(s=i.width),null!=i.height&&(l=i.height),this.dpr=i.devicePixelRatio||1,t.width=s*this.dpr,t.height=l*this.dpr,this._width=s,this._height=l;var u=new tn(t,this,this.dpr);u.__builtin__=!0,u.initContext(),(r[to]=u).zlevel=to,a.push(to),this._domRoot=t}else{this._width=this._getSize(0),this._height=this._getSize(1);var h=this._domRoot=function(t,e){var i=document.createElement("div");return i.style.cssText=["position:relative","width:"+t+"px","height:"+e+"px","padding:0","margin:0","border-width:0"].join(";")+";",i}(this._width,this._height);t.appendChild(h)}this._hoverlayer=null,this._hoverElements=[]}oo.prototype={constructor:oo,getType:function(){return"canvas"},isSingleCanvas:function(){return this._singleCanvas},getViewportRoot:function(){return this._domRoot},getViewportRootOffset:function(){var t=this.getViewportRoot();if(t)return{offsetLeft:t.offsetLeft||0,offsetTop:t.offsetTop||0}},refresh:function(t){var e=this.storage.getDisplayList(!0),i=this._zlevelList;this._redrawId=Math.random(),this._paintList(e,t,this._redrawId);for(var n=0;n<i.length;n++){var o=i[n],a=this._layers[o];if(!a.__builtin__&&a.refresh){var r=0===n?this._backgroundColor:null;a.refresh(r)}}return this.refreshHover(),this},addHover:function(t,e){if(!t.__hoverMir){var i=new t.constructor({style:t.style,shape:t.shape,z:t.z,z2:t.z2,silent:t.silent});return(i.__from=t).__hoverMir=i,e&&i.setStyle(e),this._hoverElements.push(i),i}},removeHover:function(t){var e=t.__hoverMir,i=this._hoverElements,n=_(i,e);0<=n&&i.splice(n,1),t.__hoverMir=null},clearHover:function(t){for(var e=this._hoverElements,i=0;i<e.length;i++){var n=e[i].__from;n&&(n.__hoverMir=null)}e.length=0},refreshHover:function(){var t=this._hoverElements,e=t.length,i=this._hoverlayer;if(i&&i.clear(),e){zi(t,this.storage.displayableSortFunc);var n={};(i=i||(this._hoverlayer=this.getLayer(1e5))).ctx.save();for(var o=0;o<e;){var a=t[o],r=a.__from;r&&r.__zr?(o++,r.invisible||(a.transform=r.transform,a.invTransform=r.invTransform,a.__clipPaths=r.__clipPaths,this._doPaintEl(a,i,!0,n))):(t.splice(o,1),r.__hoverMir=null,e--)}i.ctx.restore()}},getHoverLayer:function(){return this.getLayer(1e5)},_paintList:function(t,e,i){if(this._redrawId===i){e=e||!1,this._updateLayerStatus(t);var n=this._doPaintList(t,e);if(this._needsManuallyCompositing&&this._compositeManually(),!n){var o=this;en(function(){o._paintList(t,e,i)})}}},_compositeManually:function(){var e=this.getLayer(to).ctx,i=this._domRoot.width,n=this._domRoot.height;e.clearRect(0,0,i,n),this.eachBuiltinLayer(function(t){t.virtual&&e.drawImage(t.dom,0,0,i,n)})},_doPaintList:function(t,e){for(var i=[],n=0;n<this._zlevelList.length;n++){var o=this._zlevelList[n];(s=this._layers[o]).__builtin__&&s!==this._hoverlayer&&(s.__dirty||e)&&i.push(s)}for(var a=!0,r=0;r<i.length;r++){var s,l=(s=i[r]).ctx,u={};l.save();var h=e?s.__startIndex:s.__drawIndex,c=!e&&s.incremental&&Date.now,d=c&&Date.now(),f=s.zlevel===this._zlevelList[0]?this._backgroundColor:null;if(s.__startIndex===s.__endIndex)s.clear(!1,f);else if(h===s.__startIndex){var p=t[h];p.incremental&&p.notClear&&!e||s.clear(!1,f)}-1===h&&(console.error("For some unknown reason. drawIndex is -1"),h=s.__startIndex);for(var g=h;g<s.__endIndex;g++){var m=t[g];if(this._doPaintEl(m,s,e,u),m.__dirty=m.__dirtyText=!1,c)if(15<Date.now()-d)break}s.__drawIndex=g,s.__drawIndex<s.__endIndex&&(a=!1),u.prevElClipPaths&&l.restore(),l.restore()}return v.wxa&&E(this._layers,function(t){t&&t.ctx&&t.ctx.draw&&t.ctx.draw()}),a},_doPaintEl:function(t,e,i,n){var o=e.ctx,a=t.transform;if((e.__dirty||i)&&!t.invisible&&0!==t.style.opacity&&(!a||a[0]||a[3])&&(!t.culling||!function(t,e,i){return io.copy(t.getBoundingRect()),t.transform&&io.applyTransform(t.transform),no.width=e,no.height=i,!io.intersect(no)}(t,this._width,this._height))){var r=t.__clipPaths,s=n.prevElClipPaths;s&&!function(t,e){if(t===e)return!1;if(!t||!e||t.length!==e.length)return!0;for(var i=0;i<t.length;i++)if(t[i]!==e[i])return!0;return!1}(r,s)||(s&&(o.restore(),n.prevElClipPaths=null,n.prevEl=null),r&&(o.save(),function(t,e){for(var i=0;i<t.length;i++){var n=t[i];n.setTransform(e),e.beginPath(),n.buildPath(e,n.shape),e.clip(),n.restoreTransform(e)}}(r,o),n.prevElClipPaths=r)),t.beforeBrush&&t.beforeBrush(o),t.brush(o,n.prevEl||null),(n.prevEl=t).afterBrush&&t.afterBrush(o)}},getLayer:function(t,e){this._singleCanvas&&!this._needsManuallyCompositing&&(t=to);var i=this._layers[t];return i||((i=new tn("zr_"+t,this,this.dpr)).zlevel=t,i.__builtin__=!0,this._layerConfig[t]?m(i,this._layerConfig[t],!0):this._layerConfig[t-.01]&&m(i,this._layerConfig[t-.01],!0),e&&(i.virtual=e),this.insertLayer(t,i),i.initContext()),i},insertLayer:function(t,e){var i=this._layers,n=this._zlevelList,o=n.length,a=null,r=-1,s=this._domRoot;if(i[t])vi("ZLevel "+t+" has been used already");else if(function(t){return!!t&&(!!t.__builtin__||"function"==typeof t.resize&&"function"==typeof t.refresh)}(e)){if(0<o&&t>n[0]){for(r=0;r<o-1&&!(n[r]<t&&n[r+1]>t);r++);a=i[n[r]]}if(n.splice(r+1,0,t),!(i[t]=e).virtual)if(a){var l=a.dom;l.nextSibling?s.insertBefore(e.dom,l.nextSibling):s.appendChild(e.dom)}else s.firstChild?s.insertBefore(e.dom,s.firstChild):s.appendChild(e.dom)}else vi("Layer of zlevel "+t+" is not valid")},eachLayer:function(t,e){var i,n,o=this._zlevelList;for(n=0;n<o.length;n++)i=o[n],t.call(e,this._layers[i],i)},eachBuiltinLayer:function(t,e){var i,n,o,a=this._zlevelList;for(o=0;o<a.length;o++)n=a[o],(i=this._layers[n]).__builtin__&&t.call(e,i,n)},eachOtherLayer:function(t,e){var i,n,o,a=this._zlevelList;for(o=0;o<a.length;o++)n=a[o],(i=this._layers[n]).__builtin__||t.call(e,i,n)},getLayers:function(){return this._layers},_updateLayerStatus:function(t){function e(t){o&&(o.__endIndex!==t&&(o.__dirty=!0),o.__endIndex=t)}if(this.eachBuiltinLayer(function(t,e){t.__dirty=t.__used=!1}),this._singleCanvas)for(var i=1;i<t.length;i++){if((r=t[i]).zlevel!==t[i-1].zlevel||r.incremental){this._needsManuallyCompositing=!0;break}}var n,o=null,a=0;for(i=0;i<t.length;i++){var r,s,l=(r=t[i]).zlevel;n!==l&&(n=l,a=0),r.incremental?((s=this.getLayer(l+.001,this._needsManuallyCompositing)).incremental=!0,a=1):s=this.getLayer(l+(0<a?.01:0),this._needsManuallyCompositing),s.__builtin__||vi("ZLevel "+l+" has been used by unkown layer "+s.id),s!==o&&(s.__used=!0,s.__startIndex!==i&&(s.__dirty=!0),s.__startIndex=i,s.incremental?s.__drawIndex=-1:s.__drawIndex=i,e(i),o=s),r.__dirty&&(s.__dirty=!0,s.incremental&&s.__drawIndex<0&&(s.__drawIndex=i))}e(i),this.eachBuiltinLayer(function(t,e){!t.__used&&0<t.getElementCount()&&(t.__dirty=!0,t.__startIndex=t.__endIndex=t.__drawIndex=0),t.__dirty&&t.__drawIndex<0&&(t.__drawIndex=t.__startIndex)})},clear:function(){return this.eachBuiltinLayer(this._clearLayer),this},_clearLayer:function(t){t.clear()},setBackgroundColor:function(t){this._backgroundColor=t},configLayer:function(t,e){if(e){var i=this._layerConfig;i[t]?m(i[t],e,!0):i[t]=e;for(var n=0;n<this._zlevelList.length;n++){var o=this._zlevelList[n];if(o===t||o===t+.01)m(this._layers[o],i[t],!0)}}},delLayer:function(t){var e=this._layers,i=this._zlevelList,n=e[t];n&&(n.dom.parentNode.removeChild(n.dom),delete e[t],i.splice(_(i,t),1))},resize:function(e,i){if(this._domRoot.style){var t=this._domRoot;t.style.display="none";var n=this._opts;if(null!=e&&(n.width=e),null!=i&&(n.height=i),e=this._getSize(0),i=this._getSize(1),t.style.display="",this._width!==e||i!==this._height){for(var o in t.style.width=e+"px",t.style.height=i+"px",this._layers)this._layers.hasOwnProperty(o)&&this._layers[o].resize(e,i);E(this._progressiveLayers,function(t){t.resize(e,i)}),this.refresh(!0)}this._width=e,this._height=i}else{if(null==e||null==i)return;this._width=e,this._height=i,this.getLayer(to).resize(e,i)}return this},clearLayer:function(t){var e=this._layers[t];e&&e.clear()},dispose:function(){this.root.innerHTML="",this.root=this.storage=this._domRoot=this._layers=null},getRenderedCanvas:function(t){if(t=t||{},this._singleCanvas&&!this._compositeManually)return this._layers[to].dom;var e=new tn("image",this,t.pixelRatio||this.dpr);if(e.initContext(),e.clear(!1,t.backgroundColor||this._backgroundColor),t.pixelRatio<=this.dpr){this.refresh();var i=e.dom.width,n=e.dom.height,o=e.ctx;this.eachLayer(function(t){t.__builtin__?o.drawImage(t.dom,0,0,i,n):t.renderToCanvas&&(e.ctx.save(),t.renderToCanvas(e.ctx),e.ctx.restore())})}else for(var a={},r=this.storage.getDisplayList(!0),s=0;s<r.length;s++){var l=r[s];this._doPaintEl(l,e,!0,a)}return e.dom},getWidth:function(){return this._width},getHeight:function(){return this._height},_getSize:function(t){var e=this._opts,i=["width","height"][t],n=["clientWidth","clientHeight"][t],o=["paddingLeft","paddingTop"][t],a=["paddingRight","paddingBottom"][t];if(null!=e[i]&&"auto"!==e[i])return parseFloat(e[i]);var r=this.root,s=document.defaultView.getComputedStyle(r);return(r[n]||eo(s[i])||eo(r.style[i]))-(eo(s[o])||0)-(eo(s[a])||0)|0},pathToImage:function(t,e){e=e||this.dpr;var i=document.createElement("canvas"),n=i.getContext("2d"),o=t.getBoundingRect(),a=t.style,r=a.shadowBlur*e,s=a.shadowOffsetX*e,l=a.shadowOffsetY*e,u=a.hasStroke()?a.lineWidth:0,h=Math.max(u/2,r-s),c=Math.max(u/2,s+r),d=Math.max(u/2,r-l),f=Math.max(u/2,l+r),p=o.width+h+c,g=o.height+d+f;i.width=p*e,i.height=g*e,n.scale(e,e),n.clearRect(0,0,p,g),n.dpr=e;var m={position:t.position,rotation:t.rotation,scale:t.scale};t.position=[h-o.x,d-o.y],t.rotation=0,t.scale=[1,1],t.updateTransform(),t&&t.brush(n);var v=new Qn({style:{x:0,y:0,image:i}});return null!=m.position&&(v.position=t.position=m.position),null!=m.rotation&&(v.rotation=t.rotation=m.rotation),null!=m.scale&&(v.scale=t.scale=m.scale),v}};function ao(t){t=t||{},this.stage=t.stage||{},this.onframe=t.onframe||function(){},this._clips=[],this._running=!1,this._time,this._pausedTime,this._pauseStart,this._paused=!1,Ct.call(this)}ao.prototype={constructor:ao,addClip:function(t){this._clips.push(t)},addAnimator:function(t){t.animation=this;for(var e=t.getClips(),i=0;i<e.length;i++)this.addClip(e[i])},removeClip:function(t){var e=_(this._clips,t);0<=e&&this._clips.splice(e,1)},removeAnimator:function(t){for(var e=t.getClips(),i=0;i<e.length;i++)this.removeClip(e[i]);t.animation=null},_update:function(){for(var t=(new Date).getTime()-this._pausedTime,e=t-this._time,i=this._clips,n=i.length,o=[],a=[],r=0;r<n;r++){var s=i[r],l=s.step(t,e);l&&(o.push(l),a.push(s))}for(r=0;r<n;)i[r]._needsRemove?(i[r]=i[n-1],i.pop(),n--):r++;n=o.length;for(r=0;r<n;r++)a[r].fire(o[r]);this._time=t,this.onframe(e),this.trigger("frame",e),this.stage.update&&this.stage.update()},_startLoop:function(){var e=this;this._running=!0,en(function t(){e._running&&(en(t),e._paused||e._update())})},start:function(){this._time=(new Date).getTime(),this._pausedTime=0,this._startLoop()},stop:function(){this._running=!1},pause:function(){this._paused||(this._pauseStart=(new Date).getTime(),this._paused=!0)},resume:function(){this._paused&&(this._pausedTime+=(new Date).getTime()-this._pauseStart,this._paused=!1)},clear:function(){this._clips=[]},isFinished:function(){return!this._clips.length},animate:function(t,e){var i=new di(t,(e=e||{}).loop,e.getter,e.setter);return this.addAnimator(i),i}},b(ao,Ct);var ro,so,lo=v.domSupported,uo=(so={pointerdown:1,pointerup:1,pointermove:1,pointerout:1},{mouse:ro=["click","dblclick","mousewheel","mouseout","mouseup","mousedown","mousemove","contextmenu"],touch:["touchstart","touchend","touchmove"],pointer:O(ro,function(t){var e=t.replace("mouse","pointer");return so.hasOwnProperty(e)?e:t})}),ho={mouse:["mousemove","mouseup"],pointer:["pointermove","pointerup"]};function co(t){return"mousewheel"===t&&v.browser.firefox?"DOMMouseScroll":t}function fo(t){var e=t.pointerType;return"pen"===e||"touch"===e}function po(t){t&&(t.zrByTouch=!0)}function go(t,e){for(var i=e,n=!1;i&&9!==i.nodeType&&!(n=i.domBelongToZr||i!==e&&i===t.painterRoot);)i=i.parentNode;return n}function mo(t,e){this.type=e.type,this.target=this.currentTarget=t.dom,this.pointerType=e.pointerType,this.clientX=e.clientX,this.clientY=e.clientY}var vo=mo.prototype;vo.stopPropagation=vo.stopImmediatePropagation=vo.preventDefault=et;var yo={mousedown:function(t){t=Zt(this.dom,t),this._mayPointerCapture=[t.zrX,t.zrY],this.trigger("mousedown",t)},mousemove:function(t){t=Zt(this.dom,t);var e=this._mayPointerCapture;!e||t.zrX===e[0]&&t.zrY===e[1]||Mo(this,!0),this.trigger("mousemove",t)},mouseup:function(t){t=Zt(this.dom,t),Mo(this,!1),this.trigger("mouseup",t)},mouseout:function(t){t=Zt(this.dom,t),this._pointerCapturing&&(t.zrEventControl="no_globalout");var e=t.toElement||t.relatedTarget;t.zrIsToLocalDOM=go(this,e),this.trigger("mouseout",t)},touchstart:function(t){po(t=Zt(this.dom,t)),this._lastTouchMoment=new Date,this.handler.processGesture(t,"start"),yo.mousemove.call(this,t),yo.mousedown.call(this,t)},touchmove:function(t){po(t=Zt(this.dom,t)),this.handler.processGesture(t,"change"),yo.mousemove.call(this,t)},touchend:function(t){po(t=Zt(this.dom,t)),this.handler.processGesture(t,"end"),yo.mouseup.call(this,t),+new Date-this._lastTouchMoment<300&&yo.click.call(this,t)},pointerdown:function(t){yo.mousedown.call(this,t)},pointermove:function(t){fo(t)||yo.mousemove.call(this,t)},pointerup:function(t){yo.mouseup.call(this,t)},pointerout:function(t){fo(t)||yo.mouseout.call(this,t)}};E(["click","mousewheel","dblclick","contextmenu"],function(e){yo[e]=function(t){t=Zt(this.dom,t),this.trigger(e,t)}});var xo={pointermove:function(t){fo(t)||xo.mousemove.call(this,t)},pointerup:function(t){xo.mouseup.call(this,t)},mousemove:function(t){this.trigger("mousemove",t)},mouseup:function(t){var e=this._pointerCapturing;Mo(this,!1),this.trigger("mouseup",t),e&&(t.zrEventControl="only_globalout",this.trigger("mouseout",t))}};function _o(i,n){var o=n.domHandlers;v.pointerEventsSupported?E(uo.pointer,function(e){bo(n,e,function(t){o[e].call(i,t)})}):(v.touchEventsSupported&&E(uo.touch,function(e){bo(n,e,function(t){o[e].call(i,t),function(t){t.touching=!0,null!=t.touchTimer&&(clearTimeout(t.touchTimer),t.touchTimer=null),t.touchTimer=setTimeout(function(){t.touching=!1,t.touchTimer=null},700)}(n)})}),E(uo.mouse,function(e){bo(n,e,function(t){t=Ht(t),n.touching||o[e].call(i,t)})}))}function wo(i,n){function t(e){bo(n,e,function(t){t=Ht(t),go(i,t.target)||(t=function(t,e){return Zt(t.dom,new mo(t,e),!0)}(i,t),n.domHandlers[e].call(i,t))},{capture:!0})}v.pointerEventsSupported?E(ho.pointer,t):v.touchEventsSupported||E(ho.mouse,t)}function bo(t,e,i,n){t.mounted[e]=i,t.listenerOpts[e]=n,Ut(t.domTarget,co(e),i,n)}function So(t){var e,i,n,o,a=t.mounted;for(var r in a)a.hasOwnProperty(r)&&(e=t.domTarget,i=co(r),n=a[r],o=t.listenerOpts[r],Bt?e.removeEventListener(i,n,o):e.detachEvent("on"+i,n));t.mounted={}}function Mo(t,e){if(t._mayPointerCapture=null,lo&&t._pointerCapturing^e){t._pointerCapturing=e;var i=t._globalHandlerScope;e?wo(t,i):So(i)}}function Io(t,e){this.domTarget=t,this.domHandlers=e,this.mounted={},this.listenerOpts={},this.touchTimer=null,this.touching=!1}function To(t,e){Ct.call(this),this.dom=t,this.painterRoot=e,this._localHandlerScope=new Io(t,yo),lo&&(this._globalHandlerScope=new Io(document,xo)),this._pointerCapturing=!1,this._mayPointerCapture=null,_o(this,this._localHandlerScope)}var Ao=To.prototype;Ao.dispose=function(){So(this._localHandlerScope),lo&&So(this._globalHandlerScope)},Ao.setCursor=function(t){this.dom.style&&(this.dom.style.cursor=t||"default")},b(To,Ct);var Do=!v.canvasSupported,Co={canvas:oo},Lo={};function ko(t,e){var i=new No(n(),t,e);return Lo[i.id]=i}function Po(t,e){Co[t]=e}var No=function(t,e,i){i=i||{},this.dom=e,this.id=t;var n=this,o=new Vi,a=i.renderer;if(Do){if(!Co.vml)throw new Error("You need to require 'zrender/vml/vml' to support IE8");a="vml"}else a&&Co[a]||(a="canvas");var r=new Co[a](e,o,i,t);this.storage=o,this.painter=r;var s=v.node||v.worker?null:new To(r.getViewportRoot(),r.root);this.handler=new te(o,r,s,r.root),this.animation=new ao({stage:{update:A(this.flush,this)}}),this.animation.start(),this._needsRefresh;var l=o.delFromStorage,u=o.addToStorage;o.delFromStorage=function(t){l.call(o,t),t&&t.removeSelfFromZr(n)},o.addToStorage=function(t){u.call(o,t),t.addSelfToZr(n)}};No.prototype={constructor:No,getId:function(){return this.id},add:function(t){this.storage.addRoot(t),this._needsRefresh=!0},remove:function(t){this.storage.delRoot(t),this._needsRefresh=!0},configLayer:function(t,e){this.painter.configLayer&&this.painter.configLayer(t,e),this._needsRefresh=!0},setBackgroundColor:function(t){this.painter.setBackgroundColor&&this.painter.setBackgroundColor(t),this._needsRefresh=!0},refreshImmediately:function(){this._needsRefresh=this._needsRefreshHover=!1,this.painter.refresh(),this._needsRefresh=this._needsRefreshHover=!1},refresh:function(){this._needsRefresh=!0},flush:function(){var t;this._needsRefresh&&(t=!0,this.refreshImmediately()),this._needsRefreshHover&&(t=!0,this.refreshHoverImmediately()),t&&this.trigger("rendered")},addHover:function(t,e){if(this.painter.addHover){var i=this.painter.addHover(t,e);return this.refreshHover(),i}},removeHover:function(t){this.painter.removeHover&&(this.painter.removeHover(t),this.refreshHover())},clearHover:function(){this.painter.clearHover&&(this.painter.clearHover(),this.refreshHover())},refreshHover:function(){this._needsRefreshHover=!0},refreshHoverImmediately:function(){this._needsRefreshHover=!1,this.painter.refreshHover&&this.painter.refreshHover()},resize:function(t){t=t||{},this.painter.resize(t.width,t.height),this.handler.resize()},clearAnimation:function(){this.animation.clear()},getWidth:function(){return this.painter.getWidth()},getHeight:function(){return this.painter.getHeight()},pathToImage:function(t,e){return this.painter.pathToImage(t,e)},setCursorStyle:function(t){this.handler.setCursorStyle(t)},findHover:function(t,e){return this.handler.findHover(t,e)},on:function(t,e,i){this.handler.on(t,e,i)},off:function(t,e){this.handler.off(t,e)},trigger:function(t,e){this.handler.trigger(t,e)},clear:function(){this.storage.delRoot(),this.painter.clear()},dispose:function(){this.animation.stop(),this.clear(),this.storage.dispose(),this.painter.dispose(),this.handler.dispose(),this.animation=this.storage=this.painter=this.handler=null,function(t){delete Lo[t]}(this.id)}};var Oo=(Object.freeze||Object)({version:"4.3.1",init:ko,dispose:function(t){if(t)t.dispose();else{for(var e in Lo)Lo.hasOwnProperty(e)&&Lo[e].dispose();Lo={}}return this},getInstance:function(t){return Lo[t]},registerPainter:Po}),Eo=E,Ro=z,zo=L,Bo="series\0";function Vo(t){return t instanceof Array?t:null==t?[]:[t]}function Go(t,e,i){if(t){t[e]=t[e]||{},t.emphasis=t.emphasis||{},t.emphasis[e]=t.emphasis[e]||{};for(var n=0,o=i.length;n<o;n++){var a=i[n];!t.emphasis[e].hasOwnProperty(a)&&t[e].hasOwnProperty(a)&&(t.emphasis[e][a]=t[e][a])}}}var Fo=["fontStyle","fontWeight","fontSize","fontFamily","rich","tag","color","textBorderColor","textBorderWidth","width","height","lineHeight","align","verticalAlign","baseline","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","textShadowColor","textShadowBlur","textShadowOffsetX","textShadowOffsetY","backgroundColor","borderColor","borderWidth","borderRadius","padding"];function Wo(t){return!Ro(t)||zo(t)||t instanceof Date?t:t.value}function Ho(t,o){o=(o||[]).slice();var a=O(t||[],function(t,e){return{exist:t}});return Eo(o,function(t,e){if(Ro(t)){for(var i=0;i<a.length;i++)if(!a[i].option&&null!=t.id&&a[i].exist.id===t.id+"")return a[i].option=t,void(o[e]=null);for(i=0;i<a.length;i++){var n=a[i].exist;if(!(a[i].option||null!=n.id&&null!=t.id||null==t.name||Xo(t)||Xo(n)||n.name!==t.name+""))return a[i].option=t,void(o[e]=null)}}}),Eo(o,function(t,e){if(Ro(t)){for(var i=0;i<a.length;i++){var n=a[i].exist;if(!a[i].option&&!Xo(n)&&null==t.id){a[i].option=t;break}}i>=a.length&&a.push({option:t})}}),a}function Zo(t){var r=Q();Eo(t,function(t,e){var i=t.exist;i&&r.set(i.id,t)}),Eo(t,function(t,e){var i=t.option;Y(!i||null==i.id||!r.get(i.id)||r.get(i.id)===t,"id duplicates: "+(i&&i.id)),i&&null!=i.id&&r.set(i.id,t),t.keyInfo||(t.keyInfo={})}),Eo(t,function(t,e){var i=t.exist,n=t.option,o=t.keyInfo;if(Ro(n)){if(o.name=null!=n.name?n.name+"":i?i.name:Bo+e,i)o.id=i.id;else if(null!=n.id)o.id=n.id+"";else for(var a=0;o.id="\0"+o.name+"\0"+a++,r.get(o.id););r.set(o.id,t)}})}function Uo(t){var e=t.name;return!(!e||!e.indexOf(Bo))}function Xo(t){return Ro(t)&&t.id&&0===(t.id+"").indexOf("\0_ec_\0")}function Yo(e,t){return null!=t.dataIndexInside?t.dataIndexInside:null!=t.dataIndex?L(t.dataIndex)?O(t.dataIndex,function(t){return e.indexOfRawIndex(t)}):e.indexOfRawIndex(t.dataIndex):null!=t.name?L(t.name)?O(t.name,function(t){return e.indexOfName(t)}):e.indexOfName(t.name):void 0}function jo(){var e="__\0ec_inner_"+qo+++"_"+Math.random().toFixed(5);return function(t){return t[e]||(t[e]={})}}var qo=0;function Ko(s,l,u){if(R(l)){var t={};t[l+"Index"]=0,l=t}var e=u&&u.defaultMainType;!e||$o(l,e+"Index")||$o(l,e+"Id")||$o(l,e+"Name")||(l[e+"Index"]=0);var h={};return Eo(l,function(t,e){t=l[e];if("dataIndex"!==e&&"dataIndexInside"!==e){var i=e.match(/^(\w+)(Index|Id|Name)$/)||[],n=i[1],o=(i[2]||"").toLowerCase();if(!(!n||!o||null==t||"index"===o&&"none"===t||u&&u.includeMainTypes&&_(u.includeMainTypes,n)<0)){var a={mainType:n};"index"===o&&"all"===t||(a[o]=t);var r=s.queryComponents(a);h[n+"Models"]=r,h[n+"Model"]=r[0]}}else h[e]=t}),h}function $o(t,e){return t&&t.hasOwnProperty(e)}function Jo(t,e,i){t.setAttribute?t.setAttribute(e,i):t[e]=i}function Qo(t){return"auto"===t?v.domSupported?"html":"richText":t||"html"}function ta(t,i){var n=Q(),o=[];return E(t,function(t){var e=i(t);(n.get(e)||(o.push(e),n.set(e,[]))).push(t)}),{keys:o,buckets:n}}var ea=".",ia="___EC__COMPONENT__CONTAINER___";function na(t){var e={main:"",sub:""};return t&&(t=t.split(ea),e.main=t[0]||"",e.sub=t[1]||""),e}function oa(t){(t.$constructor=t).extend=function(t){function e(){t.$constructor?t.$constructor.apply(this,arguments):i.apply(this,arguments)}var i=this;return P(e.prototype,t),e.extend=this.extend,e.superCall=sa,e.superApply=la,w(e,this),e.superClass=i,e}}var aa=0;function ra(t){var e=["__\0is_clz",aa++,Math.random().toFixed(3)].join("_");t.prototype[e]=!0,t.isInstance=function(t){return!(!t||!t[e])}}function sa(t,e){var i=U(arguments,2);return this.superClass.prototype[e].apply(t,i)}function la(t,e,i){return this.superClass.prototype[e].apply(t,i)}function ua(i,t){t=t||{};var o={};if(i.registerClass=function(t,e){if(e)if(function(t){Y(/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(t),'componentType "'+t+'" illegal')}(e),(e=na(e)).sub){if(e.sub!==ia){(function(t){var e=o[t.main];e&&e[ia]||((e=o[t.main]={})[ia]=!0);return e})(e)[e.sub]=t}}else o[e.main]=t;return t},i.getClass=function(t,e,i){var n=o[t];if(n&&n[ia]&&(n=e?n[e]:null),i&&!n)throw new Error(e?"Component "+t+"."+(e||"")+" not exists. Load it first.":t+".type should be specified.");return n},i.getClassesByMainType=function(t){t=na(t);var i=[],e=o[t.main];return e&&e[ia]?E(e,function(t,e){e!==ia&&i.push(t)}):i.push(e),i},i.hasClass=function(t){return t=na(t),!!o[t.main]},i.getAllClassMainTypes=function(){var i=[];return E(o,function(t,e){i.push(e)}),i},i.hasSubTypes=function(t){t=na(t);var e=o[t.main];return e&&e[ia]},i.parseClassType=na,t.registerWhenExtend){var n=i.extend;n&&(i.extend=function(t){var e=n.call(this,t);return i.registerClass(e,t.type)})}return i}function ha(s){for(var t=0;t<s.length;t++)s[t][1]||(s[t][1]=s[t][0]);return function(t,e,i){for(var n={},o=0;o<s.length;o++){var a=s[o][1];if(!(e&&0<=_(e,a)||i&&_(i,a)<0)){var r=t.getShallow(a);null!=r&&(n[s[o][0]]=r)}}return n}}var ca=ha([["lineWidth","width"],["stroke","color"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]),da={getLineStyle:function(t){var e=ca(this,t);return e.lineDash=this.getLineDash(e.lineWidth),e},getLineDash:function(t){null==t&&(t=1);var e=this.get("type"),i=Math.max(t,2),n=4*t;return"solid"!==e&&null!=e&&("dashed"===e?[n,n]:[i,i])}},fa=ha([["fill","color"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["opacity"],["shadowColor"]]),pa={getAreaStyle:function(t,e){return fa(this,t,e)}},ga=Math.pow,ma=Math.sqrt,va=1e-8,ya=1e-4,xa=ma(3),_a=1/3,wa=ot(),ba=ot(),Sa=ot();function Ma(t){return-va<t&&t<va}function Ia(t){return va<t||t<-va}function Ta(t,e,i,n,o){var a=1-o;return a*a*(a*t+3*o*e)+o*o*(o*n+3*a*i)}function Aa(t,e,i,n,o){var a=1-o;return 3*(((e-t)*a+2*(i-e)*o)*a+(n-i)*o*o)}function Da(t,e,i,n,o){var a=6*i-12*e+6*t,r=9*e+3*n-3*t-9*i,s=3*e-3*t,l=0;if(Ma(r)){if(Ia(a))0<=(h=-s/a)&&h<=1&&(o[l++]=h)}else{var u=a*a-4*r*s;if(Ma(u))o[0]=-a/(2*r);else if(0<u){var h,c=ma(u),d=(-a-c)/(2*r);0<=(h=(-a+c)/(2*r))&&h<=1&&(o[l++]=h),0<=d&&d<=1&&(o[l++]=d)}}return l}function Ca(t,e,i,n,o,a){var r=(e-t)*o+t,s=(i-e)*o+e,l=(n-i)*o+i,u=(s-r)*o+r,h=(l-s)*o+s,c=(h-u)*o+u;a[0]=t,a[1]=r,a[2]=u,a[3]=c,a[4]=c,a[5]=h,a[6]=l,a[7]=n}function La(t,e,i,n){var o=1-n;return o*(o*t+2*n*e)+n*n*i}function ka(t,e,i,n){return 2*((1-n)*(e-t)+n*(i-e))}function Pa(t,e,i){var n=t+i-2*e;return 0==n?.5:(t-e)/n}function Na(t,e,i,n,o){var a=(e-t)*n+t,r=(i-e)*n+e,s=(r-a)*n+a;o[0]=t,o[1]=a,o[2]=s,o[3]=s,o[4]=r,o[5]=i}var Oa=Math.min,Ea=Math.max,Ra=Math.sin,za=Math.cos,Ba=2*Math.PI,Va=ot(),Ga=ot(),Fa=ot();function Wa(t,e,i){if(0!==t.length){var n,o=t[0],a=o[0],r=o[0],s=o[1],l=o[1];for(n=1;n<t.length;n++)o=t[n],a=Oa(a,o[0]),r=Ea(r,o[0]),s=Oa(s,o[1]),l=Ea(l,o[1]);e[0]=a,e[1]=s,i[0]=r,i[1]=l}}function Ha(t,e,i,n,o,a){o[0]=Oa(t,i),o[1]=Oa(e,n),a[0]=Ea(t,i),a[1]=Ea(e,n)}var Za=[],Ua=[];function Xa(t,e,i,n,o,a,r,s,l,u){var h,c=Da,d=Ta,f=c(t,i,o,r,Za);for(l[0]=1/0,l[1]=1/0,u[0]=-1/0,u[1]=-1/0,h=0;h<f;h++){var p=d(t,i,o,r,Za[h]);l[0]=Oa(p,l[0]),u[0]=Ea(p,u[0])}for(f=c(e,n,a,s,Ua),h=0;h<f;h++){var g=d(e,n,a,s,Ua[h]);l[1]=Oa(g,l[1]),u[1]=Ea(g,u[1])}l[0]=Oa(t,l[0]),u[0]=Ea(t,u[0]),l[0]=Oa(r,l[0]),u[0]=Ea(r,u[0]),l[1]=Oa(e,l[1]),u[1]=Ea(e,u[1]),l[1]=Oa(s,l[1]),u[1]=Ea(s,u[1])}function Ya(t,e,i,n,o,a,r,s,l){var u=St,h=Mt,c=Math.abs(o-a);if(c%Ba<1e-4&&1e-4<c)return s[0]=t-i,s[1]=e-n,l[0]=t+i,void(l[1]=e+n);if(Va[0]=za(o)*i+t,Va[1]=Ra(o)*n+e,Ga[0]=za(a)*i+t,Ga[1]=Ra(a)*n+e,u(s,Va,Ga),h(l,Va,Ga),(o%=Ba)<0&&(o+=Ba),(a%=Ba)<0&&(a+=Ba),a<o&&!r?a+=Ba:o<a&&r&&(o+=Ba),r){var d=a;a=o,o=d}for(var f=0;f<a;f+=Math.PI/2)o<f&&(Fa[0]=za(f)*i+t,Fa[1]=Ra(f)*n+e,u(s,Fa,s),h(l,Fa,l))}var ja={M:1,L:2,C:3,Q:4,A:5,Z:6,R:7},qa=[],Ka=[],$a=[],Ja=[],Qa=Math.min,tr=Math.max,er=Math.cos,ir=Math.sin,nr=Math.sqrt,or=Math.abs,ar="undefined"!=typeof Float32Array,rr=function(t){this._saveData=!t,this._saveData&&(this.data=[]),this._ctx=null};function sr(t,e,i,n,o,a,r){if(0===o)return!1;var s=o,l=0;if(e+s<r&&n+s<r||r<e-s&&r<n-s||t+s<a&&i+s<a||a<t-s&&a<i-s)return!1;if(t===i)return Math.abs(a-t)<=s/2;var u=(l=(e-n)/(t-i))*a-r+(t*n-i*e)/(t-i);return u*u/(l*l+1)<=s/2*s/2}function lr(t,e,i,n,o,a,r,s,l,u,h){if(0===l)return!1;var c=l;return!(e+c<h&&n+c<h&&a+c<h&&s+c<h||h<e-c&&h<n-c&&h<a-c&&h<s-c||t+c<u&&i+c<u&&o+c<u&&r+c<u||u<t-c&&u<i-c&&u<o-c&&u<r-c)&&function(t,e,i,n,o,a,r,s,l,u,h){var c,d,f,p,g,m=.005,v=1/0;wa[0]=l,wa[1]=u;for(var y=0;y<1;y+=.05)ba[0]=Ta(t,i,o,r,y),ba[1]=Ta(e,n,a,s,y),(p=_t(wa,ba))<v&&(c=y,v=p);v=1/0;for(var x=0;x<32&&!(m<ya);x++)d=c-m,f=c+m,ba[0]=Ta(t,i,o,r,d),ba[1]=Ta(e,n,a,s,d),p=_t(ba,wa),0<=d&&p<v?(c=d,v=p):(Sa[0]=Ta(t,i,o,r,f),Sa[1]=Ta(e,n,a,s,f),g=_t(Sa,wa),f<=1&&g<v?(c=f,v=g):m*=.5);return h&&(h[0]=Ta(t,i,o,r,c),h[1]=Ta(e,n,a,s,c)),ma(v)}(t,e,i,n,o,a,r,s,u,h,null)<=c/2}function ur(t,e,i,n,o,a,r,s,l){if(0===r)return!1;var u=r;return!(e+u<l&&n+u<l&&a+u<l||l<e-u&&l<n-u&&l<a-u||t+u<s&&i+u<s&&o+u<s||s<t-u&&s<i-u&&s<o-u)&&function(t,e,i,n,o,a,r,s,l){var u,h=.005,c=1/0;wa[0]=r,wa[1]=s;for(var d=0;d<1;d+=.05){ba[0]=La(t,i,o,d),ba[1]=La(e,n,a,d),(m=_t(wa,ba))<c&&(u=d,c=m)}c=1/0;for(var f=0;f<32&&!(h<ya);f++){var p=u-h,g=u+h;ba[0]=La(t,i,o,p),ba[1]=La(e,n,a,p);var m=_t(ba,wa);if(0<=p&&m<c)u=p,c=m;else{Sa[0]=La(t,i,o,g),Sa[1]=La(e,n,a,g);var v=_t(Sa,wa);g<=1&&v<c?(u=g,c=v):h*=.5}}return l&&(l[0]=La(t,i,o,u),l[1]=La(e,n,a,u)),ma(c)}(t,e,i,n,o,a,s,l,null)<=u/2}rr.prototype={constructor:rr,_xi:0,_yi:0,_x0:0,_y0:0,_ux:0,_uy:0,_len:0,_lineDash:null,_dashOffset:0,_dashIdx:0,_dashSum:0,setScale:function(t,e,i){i=i||0,this._ux=or(i/pi/t)||0,this._uy=or(i/pi/e)||0},getContext:function(){return this._ctx},beginPath:function(t){return(this._ctx=t)&&t.beginPath(),t&&(this.dpr=t.dpr),this._saveData&&(this._len=0),this._lineDash&&(this._lineDash=null,this._dashOffset=0),this},moveTo:function(t,e){return this.addData(ja.M,t,e),this._ctx&&this._ctx.moveTo(t,e),this._x0=t,this._y0=e,this._xi=t,this._yi=e,this},lineTo:function(t,e){var i=or(t-this._xi)>this._ux||or(e-this._yi)>this._uy||this._len<5;return this.addData(ja.L,t,e),this._ctx&&i&&(this._needsDash()?this._dashedLineTo(t,e):this._ctx.lineTo(t,e)),i&&(this._xi=t,this._yi=e),this},bezierCurveTo:function(t,e,i,n,o,a){return this.addData(ja.C,t,e,i,n,o,a),this._ctx&&(this._needsDash()?this._dashedBezierTo(t,e,i,n,o,a):this._ctx.bezierCurveTo(t,e,i,n,o,a)),this._xi=o,this._yi=a,this},quadraticCurveTo:function(t,e,i,n){return this.addData(ja.Q,t,e,i,n),this._ctx&&(this._needsDash()?this._dashedQuadraticTo(t,e,i,n):this._ctx.quadraticCurveTo(t,e,i,n)),this._xi=i,this._yi=n,this},arc:function(t,e,i,n,o,a){return this.addData(ja.A,t,e,i,i,n,o-n,0,a?0:1),this._ctx&&this._ctx.arc(t,e,i,n,o,a),this._xi=er(o)*i+t,this._yi=ir(o)*i+e,this},arcTo:function(t,e,i,n,o){return this._ctx&&this._ctx.arcTo(t,e,i,n,o),this},rect:function(t,e,i,n){return this._ctx&&this._ctx.rect(t,e,i,n),this.addData(ja.R,t,e,i,n),this},closePath:function(){this.addData(ja.Z);var t=this._ctx,e=this._x0,i=this._y0;return t&&(this._needsDash()&&this._dashedLineTo(e,i),t.closePath()),this._xi=e,this._yi=i,this},fill:function(t){t&&t.fill(),this.toStatic()},stroke:function(t){t&&t.stroke(),this.toStatic()},setLineDash:function(t){if(t instanceof Array){this._lineDash=t;for(var e=this._dashIdx=0,i=0;i<t.length;i++)e+=t[i];this._dashSum=e}return this},setLineDashOffset:function(t){return this._dashOffset=t,this},len:function(){return this._len},setData:function(t){var e=t.length;this.data&&this.data.length===e||!ar||(this.data=new Float32Array(e));for(var i=0;i<e;i++)this.data[i]=t[i];this._len=e},appendPath:function(t){t instanceof Array||(t=[t]);for(var e=t.length,i=0,n=this._len,o=0;o<e;o++)i+=t[o].len();ar&&this.data instanceof Float32Array&&(this.data=new Float32Array(n+i));for(o=0;o<e;o++)for(var a=t[o].data,r=0;r<a.length;r++)this.data[n++]=a[r];this._len=n},addData:function(t){if(this._saveData){var e=this.data;this._len+arguments.length>e.length&&(this._expandData(),e=this.data);for(var i=0;i<arguments.length;i++)e[this._len++]=arguments[i];this._prevCmd=t}},_expandData:function(){if(!(this.data instanceof Array)){for(var t=[],e=0;e<this._len;e++)t[e]=this.data[e];this.data=t}},_needsDash:function(){return this._lineDash},_dashedLineTo:function(t,e){var i,n,o=this._dashSum,a=this._dashOffset,r=this._lineDash,s=this._ctx,l=this._xi,u=this._yi,h=t-l,c=e-u,d=nr(h*h+c*c),f=l,p=u,g=r.length;for(a<0&&(a=o+a),f-=(a%=o)*(h/=d),p-=a*(c/=d);0<h&&f<=t||h<0&&t<=f||0===h&&(0<c&&p<=e||c<0&&e<=p);)f+=h*(i=r[n=this._dashIdx]),p+=c*i,this._dashIdx=(n+1)%g,0<h&&f<l||h<0&&l<f||0<c&&p<u||c<0&&u<p||s[n%2?"moveTo":"lineTo"](0<=h?Qa(f,t):tr(f,t),0<=c?Qa(p,e):tr(p,e));h=f-t,c=p-e,this._dashOffset=-nr(h*h+c*c)},_dashedBezierTo:function(t,e,i,n,o,a){var r,s,l,u,h,c=this._dashSum,d=this._dashOffset,f=this._lineDash,p=this._ctx,g=this._xi,m=this._yi,v=Ta,y=0,x=this._dashIdx,_=f.length,w=0;for(d<0&&(d=c+d),d%=c,r=0;r<1;r+=.1)s=v(g,t,i,o,r+.1)-v(g,t,i,o,r),l=v(m,e,n,a,r+.1)-v(m,e,n,a,r),y+=nr(s*s+l*l);for(;x<_&&!(d<(w+=f[x]));x++);for(r=(w-d)/y;r<=1;)u=v(g,t,i,o,r),h=v(m,e,n,a,r),x%2?p.moveTo(u,h):p.lineTo(u,h),r+=f[x]/y,x=(x+1)%_;x%2!=0&&p.lineTo(o,a),s=o-u,l=a-h,this._dashOffset=-nr(s*s+l*l)},_dashedQuadraticTo:function(t,e,i,n){var o=i,a=n;i=(i+2*t)/3,n=(n+2*e)/3,t=(this._xi+2*t)/3,e=(this._yi+2*e)/3,this._dashedBezierTo(t,e,i,n,o,a)},toStatic:function(){var t=this.data;t instanceof Array&&(t.length=this._len,ar&&(this.data=new Float32Array(t)))},getBoundingRect:function(){qa[0]=qa[1]=$a[0]=$a[1]=Number.MAX_VALUE,Ka[0]=Ka[1]=Ja[0]=Ja[1]=-Number.MAX_VALUE;for(var t,e,i,n,o,a,r,s,l,u,h,c,d,f,p=this.data,g=0,m=0,v=0,y=0,x=0;x<p.length;){var _=p[x++];switch(1===x&&(v=g=p[x],y=m=p[x+1]),_){case ja.M:g=v=p[x++],m=y=p[x++],$a[0]=v,$a[1]=y,Ja[0]=v,Ja[1]=y;break;case ja.L:Ha(g,m,p[x],p[x+1],$a,Ja),g=p[x++],m=p[x++];break;case ja.C:Xa(g,m,p[x++],p[x++],p[x++],p[x++],p[x],p[x+1],$a,Ja),g=p[x++],m=p[x++];break;case ja.Q:t=g,e=m,i=p[x++],n=p[x++],o=p[x],a=p[x+1],r=$a,s=Ja,u=l=void 0,u=La,h=Ea(Oa((l=Pa)(t,i,o),1),0),c=Ea(Oa(l(e,n,a),1),0),d=u(t,i,o,h),f=u(e,n,a,c),r[0]=Oa(t,o,d),r[1]=Oa(e,a,f),s[0]=Ea(t,o,d),s[1]=Ea(e,a,f),g=p[x++],m=p[x++];break;case ja.A:var w=p[x++],b=p[x++],S=p[x++],M=p[x++],I=p[x++],T=p[x++]+I;x+=1;var A=1-p[x++];1===x&&(v=er(I)*S+w,y=ir(I)*M+b),Ya(w,b,S,M,I,T,A,$a,Ja),g=er(T)*S+w,m=ir(T)*M+b;break;case ja.R:Ha(v=g=p[x++],y=m=p[x++],v+p[x++],y+p[x++],$a,Ja);break;case ja.Z:g=v,m=y}St(qa,qa,$a),Mt(Ka,Ka,Ja)}return 0===x&&(qa[0]=qa[1]=Ka[0]=Ka[1]=0),new Di(qa[0],qa[1],Ka[0]-qa[0],Ka[1]-qa[1])},rebuildPath:function(t){for(var e,i,n,o,a,r,s=this.data,l=this._ux,u=this._uy,h=this._len,c=0;c<h;){var d=s[c++];switch(1===c&&(e=n=s[c],i=o=s[c+1]),d){case ja.M:e=n=s[c++],i=o=s[c++],t.moveTo(n,o);break;case ja.L:a=s[c++],r=s[c++],(or(a-n)>l||or(r-o)>u||c===h-1)&&(t.lineTo(a,r),n=a,o=r);break;case ja.C:t.bezierCurveTo(s[c++],s[c++],s[c++],s[c++],s[c++],s[c++]),n=s[c-2],o=s[c-1];break;case ja.Q:t.quadraticCurveTo(s[c++],s[c++],s[c++],s[c++]),n=s[c-2],o=s[c-1];break;case ja.A:var f=s[c++],p=s[c++],g=s[c++],m=s[c++],v=s[c++],y=s[c++],x=s[c++],_=s[c++],w=m<g?g:m,b=m<g?1:g/m,S=m<g?m/g:1,M=v+y;.001<Math.abs(g-m)?(t.translate(f,p),t.rotate(x),t.scale(b,S),t.arc(0,0,w,v,M,1-_),t.scale(1/b,1/S),t.rotate(-x),t.translate(-f,-p)):t.arc(f,p,w,v,M,1-_),1===c&&(e=er(v)*g+f,i=ir(v)*m+p),n=er(M)*g+f,o=ir(M)*m+p;break;case ja.R:e=n=s[c],i=o=s[c+1],t.rect(s[c++],s[c++],s[c++],s[c++]);break;case ja.Z:t.closePath(),n=e,o=i}}}},rr.CMD=ja;var hr=2*Math.PI;function cr(t){return(t%=hr)<0&&(t+=hr),t}var dr=2*Math.PI;function fr(t,e,i,n,o,a,r,s,l){if(0===r)return!1;var u=r;s-=t,l-=e;var h=Math.sqrt(s*s+l*l);if(i<h-u||h+u<i)return!1;if(Math.abs(n-o)%dr<1e-4)return!0;if(a){var c=n;n=cr(o),o=cr(c)}else n=cr(n),o=cr(o);o<n&&(o+=dr);var d=Math.atan2(l,s);return d<0&&(d+=dr),n<=d&&d<=o||n<=d+dr&&d+dr<=o}function pr(t,e,i,n,o,a){if(e<a&&n<a||a<e&&a<n)return 0;if(n===e)return 0;var r=n<e?1:-1,s=(a-e)/(n-e);1!=s&&0!=s||(r=n<e?.5:-.5);var l=s*(i-t)+t;return l===o?1/0:o<l?r:0}var gr=rr.CMD,mr=2*Math.PI,vr=1e-4;var yr=[-1,-1,-1],xr=[-1,-1];function _r(t,e,i,n,o,a,r,s,l,u){if(e<u&&n<u&&a<u&&s<u||u<e&&u<n&&u<a&&u<s)return 0;var h,c=function(t,e,i,n,o,a){var r=n+3*(e-i)-t,s=3*(i-2*e+t),l=3*(e-t),u=t-o,h=s*s-3*r*l,c=s*l-9*r*u,d=l*l-3*s*u,f=0;if(Ma(h)&&Ma(c)){if(Ma(s))a[0]=0;else 0<=(M=-l/s)&&M<=1&&(a[f++]=M)}else{var p=c*c-4*h*d;if(Ma(p)){var g=c/h,m=-g/2;0<=(M=-s/r+g)&&M<=1&&(a[f++]=M),0<=m&&m<=1&&(a[f++]=m)}else if(0<p){var v=ma(p),y=h*s+1.5*r*(-c+v),x=h*s+1.5*r*(-c-v);0<=(M=(-s-((y=y<0?-ga(-y,_a):ga(y,_a))+(x=x<0?-ga(-x,_a):ga(x,_a))))/(3*r))&&M<=1&&(a[f++]=M)}else{var _=(2*h*s-3*r*c)/(2*ma(h*h*h)),w=Math.acos(_)/3,b=ma(h),S=Math.cos(w),M=(-s-2*b*S)/(3*r),I=(m=(-s+b*(S+xa*Math.sin(w)))/(3*r),(-s+b*(S-xa*Math.sin(w)))/(3*r));0<=M&&M<=1&&(a[f++]=M),0<=m&&m<=1&&(a[f++]=m),0<=I&&I<=1&&(a[f++]=I)}}return f}(e,n,a,s,u,yr);if(0===c)return 0;for(var d,f,p=0,g=-1,m=0;m<c;m++){var v=yr[m],y=0===v||1===v?.5:1;Ta(t,i,o,r,v)<l||(g<0&&(g=Da(e,n,a,s,xr),xr[1]<xr[0]&&1<g&&(void 0,h=xr[0],xr[0]=xr[1],xr[1]=h),d=Ta(e,n,a,s,xr[0]),1<g&&(f=Ta(e,n,a,s,xr[1]))),2===g?v<xr[0]?p+=d<e?y:-y:v<xr[1]?p+=f<d?y:-y:p+=s<f?y:-y:v<xr[0]?p+=d<e?y:-y:p+=s<d?y:-y)}return p}function wr(t,e,i,n,o,a,r,s){if(e<s&&n<s&&a<s||s<e&&s<n&&s<a)return 0;var l=function(t,e,i,n,o){var a=t-2*e+i,r=2*(e-t),s=t-n,l=0;if(Ma(a)){if(Ia(r))0<=(h=-s/r)&&h<=1&&(o[l++]=h)}else{var u=r*r-4*a*s;if(Ma(u))0<=(h=-r/(2*a))&&h<=1&&(o[l++]=h);else if(0<u){var h,c=ma(u),d=(-r-c)/(2*a);0<=(h=(-r+c)/(2*a))&&h<=1&&(o[l++]=h),0<=d&&d<=1&&(o[l++]=d)}}return l}(e,n,a,s,yr);if(0===l)return 0;var u=Pa(e,n,a);if(0<=u&&u<=1){for(var h=0,c=La(e,n,a,u),d=0;d<l;d++){var f=0===yr[d]||1===yr[d]?.5:1;La(t,i,o,yr[d])<r||(yr[d]<u?h+=c<e?f:-f:h+=a<c?f:-f)}return h}f=0===yr[0]||1===yr[0]?.5:1;return La(t,i,o,yr[0])<r?0:a<e?f:-f}function br(t,e,i,n,o,a,r,s){if(i<(s-=e)||s<-i)return 0;var l=Math.sqrt(i*i-s*s);yr[0]=-l,yr[1]=l;var u=Math.abs(n-o);if(u<1e-4)return 0;if(u%mr<1e-4){o=mr;var h=a?1:-1;return r>=yr[n=0]+t&&r<=yr[1]+t?h:0}if(a){l=n;n=cr(o),o=cr(l)}else n=cr(n),o=cr(o);o<n&&(o+=mr);for(var c=0,d=0;d<2;d++){var f=yr[d];if(r<f+t){var p=Math.atan2(s,f);h=a?1:-1;p<0&&(p=mr+p),(n<=p&&p<=o||n<=p+mr&&p+mr<=o)&&(p>Math.PI/2&&p<1.5*Math.PI&&(h=-h),c+=h)}}return c}function Sr(t,e,i,n,o){for(var a=0,r=0,s=0,l=0,u=0,h=0;h<t.length;){var c=t[h++];switch(c===gr.M&&1<h&&(i||(a+=pr(r,s,l,u,n,o))),1===h&&(l=r=t[h],u=s=t[h+1]),c){case gr.M:r=l=t[h++],s=u=t[h++];break;case gr.L:if(i){if(sr(r,s,t[h],t[h+1],e,n,o))return!0}else a+=pr(r,s,t[h],t[h+1],n,o)||0;r=t[h++],s=t[h++];break;case gr.C:if(i){if(lr(r,s,t[h++],t[h++],t[h++],t[h++],t[h],t[h+1],e,n,o))return!0}else a+=_r(r,s,t[h++],t[h++],t[h++],t[h++],t[h],t[h+1],n,o)||0;r=t[h++],s=t[h++];break;case gr.Q:if(i){if(ur(r,s,t[h++],t[h++],t[h],t[h+1],e,n,o))return!0}else a+=wr(r,s,t[h++],t[h++],t[h],t[h+1],n,o)||0;r=t[h++],s=t[h++];break;case gr.A:var d=t[h++],f=t[h++],p=t[h++],g=t[h++],m=t[h++],v=t[h++];h+=1;var y=1-t[h++],x=Math.cos(m)*p+d,_=Math.sin(m)*g+f;1<h?a+=pr(r,s,x,_,n,o):(l=x,u=_);var w=(n-d)*g/p+d;if(i){if(fr(d,f,g,m,m+v,y,e,w,o))return!0}else a+=br(d,f,g,m,m+v,y,w,o);r=Math.cos(m+v)*p+d,s=Math.sin(m+v)*g+f;break;case gr.R:l=r=t[h++],u=s=t[h++];x=l+t[h++],_=u+t[h++];if(i){if(sr(l,u,x,u,e,n,o)||sr(x,u,x,_,e,n,o)||sr(x,_,l,_,e,n,o)||sr(l,_,l,u,e,n,o))return!0}else a+=pr(x,u,x,_,n,o),a+=pr(l,_,l,u,n,o);break;case gr.Z:if(i){if(sr(r,s,l,u,e,n,o))return!0}else a+=pr(r,s,l,u,n,o);r=l,s=u}}return i||function(t,e){return Math.abs(t-e)<vr}(s,u)||(a+=pr(r,s,l,u,n,o)||0),0!==a}var Mr=$i.prototype.getCanvasPattern,Ir=Math.abs,Tr=new rr(!0);function Ar(t){Jn.call(this,t),this.path=null}Ar.prototype={constructor:Ar,type:"path",__dirtyPath:!0,strokeContainThreshold:5,segmentIgnoreThreshold:0,subPixelOptimize:!1,brush:function(t,e){var i,n=this.style,o=this.path||Tr,a=n.hasStroke(),r=n.hasFill(),s=n.fill,l=n.stroke,u=r&&!!s.colorStops,h=a&&!!l.colorStops,c=r&&!!s.image,d=a&&!!l.image;n.bind(t,this,e),this.setTransform(t),this.__dirty&&(u&&(i=i||this.getBoundingRect(),this._fillGradient=n.getGradient(t,s,i)),h&&(i=i||this.getBoundingRect(),this._strokeGradient=n.getGradient(t,l,i)));u?t.fillStyle=this._fillGradient:c&&(t.fillStyle=Mr.call(s,t)),h?t.strokeStyle=this._strokeGradient:d&&(t.strokeStyle=Mr.call(l,t));var f=n.lineDash,p=n.lineDashOffset,g=!!t.setLineDash,m=this.getGlobalScale();if(o.setScale(m[0],m[1],this.segmentIgnoreThreshold),this.__dirtyPath||f&&!g&&a?(o.beginPath(t),f&&!g&&(o.setLineDash(f),o.setLineDashOffset(p)),this.buildPath(o,this.shape,!1),this.path&&(this.__dirtyPath=!1)):(t.beginPath(),this.path.rebuildPath(t)),r)if(null!=n.fillOpacity){var v=t.globalAlpha;t.globalAlpha=n.fillOpacity*n.opacity,o.fill(t),t.globalAlpha=v}else o.fill(t);if(f&&g&&(t.setLineDash(f),t.lineDashOffset=p),a)if(null!=n.strokeOpacity){v=t.globalAlpha;t.globalAlpha=n.strokeOpacity*n.opacity,o.stroke(t),t.globalAlpha=v}else o.stroke(t);f&&g&&t.setLineDash([]),null!=n.text&&(this.restoreTransform(t),this.drawRectText(t,this.getBoundingRect()))},buildPath:function(t,e,i){},createPathProxy:function(){this.path=new rr},getBoundingRect:function(){var t=this._rect,e=this.style,i=!t;if(i){var n=this.path;n=n||(this.path=new rr),this.__dirtyPath&&(n.beginPath(),this.buildPath(n,this.shape,!1)),t=n.getBoundingRect()}if(this._rect=t,e.hasStroke()){var o=this._rectWithStroke||(this._rectWithStroke=t.clone());if(this.__dirty||i){o.copy(t);var a=e.lineWidth,r=e.strokeNoScale?this.getLineScale():1;e.hasFill()||(a=Math.max(a,this.strokeContainThreshold||4)),1e-10<r&&(o.width+=a/r,o.height+=a/r,o.x-=a/r/2,o.y-=a/r/2)}return o}return t},contain:function(t,e){var i=this.transformCoordToLocal(t,e),n=this.getBoundingRect(),o=this.style;if(t=i[0],e=i[1],n.contain(t,e)){var a=this.path.data;if(o.hasStroke()){var r=o.lineWidth,s=o.strokeNoScale?this.getLineScale():1;if(1e-10<s&&(o.hasFill()||(r=Math.max(r,this.strokeContainThreshold)),function(t,e,i,n){return Sr(t,e,!0,i,n)}(a,r/s,t,e)))return!0}if(o.hasFill())return function(t,e,i){return Sr(t,0,!1,e,i)}(a,t,e)}return!1},dirty:function(t){null==t&&(t=!0),t&&(this.__dirtyPath=t,this._rect=null),this.__dirty=this.__dirtyText=!0,this.__zr&&this.__zr.refresh(),this.__clipTarget&&this.__clipTarget.dirty()},animateShape:function(t){return this.animate("shape",t)},attrKV:function(t,e){"shape"===t?(this.setShape(e),this.__dirtyPath=!0,this._rect=null):Jn.prototype.attrKV.call(this,t,e)},setShape:function(t,e){var i=this.shape;if(i){if(z(t))for(var n in t)t.hasOwnProperty(n)&&(i[n]=t[n]);else i[t]=e;this.dirty(!0)}return this},getLineScale:function(){var t=this.transform;return t&&1e-10<Ir(t[0]-1)&&1e-10<Ir(t[3]-1)?Math.sqrt(Ir(t[0]*t[3]-t[2]*t[1])):1}},Ar.extend=function(o){function t(t){Ar.call(this,t),o.style&&this.style.extendFrom(o.style,!1);var e=o.shape;if(e){this.shape=this.shape||{};var i=this.shape;for(var n in e)!i.hasOwnProperty(n)&&e.hasOwnProperty(n)&&(i[n]=e[n])}o.init&&o.init.call(this,t)}for(var e in w(t,Ar),o)"style"!==e&&"shape"!==e&&(t.prototype[e]=o[e]);return t},w(Ar,Jn);function Dr(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])}var Cr=rr.CMD,Lr=[[],[],[]],kr=Math.sqrt,Pr=Math.atan2,Nr=function(t,e){var i,n,o,a,r,s=t.data,l=Cr.M,u=Cr.C,h=Cr.L,c=Cr.R,d=Cr.A,f=Cr.Q;for(a=o=0;o<s.length;){switch(i=s[o++],a=o,n=0,i){case l:case h:n=1;break;case u:n=3;break;case f:n=2;break;case d:var p=e[4],g=e[5],m=kr(e[0]*e[0]+e[1]*e[1]),v=kr(e[2]*e[2]+e[3]*e[3]),y=Pr(-e[1]/v,e[0]/m);s[o]*=m,s[o++]+=p,s[o]*=v,s[o++]+=g,s[o++]*=m,s[o++]*=v,s[o++]+=y,s[o++]+=y,a=o+=2;break;case c:x[0]=s[o++],x[1]=s[o++],bt(x,x,e),s[a++]=x[0],s[a++]=x[1],x[0]+=s[o++],x[1]+=s[o++],bt(x,x,e),s[a++]=x[0],s[a++]=x[1]}for(r=0;r<n;r++){var x;(x=Lr[r])[0]=s[o++],x[1]=s[o++],bt(x,x,e),s[a++]=x[0],s[a++]=x[1]}}},Or=Math.sqrt,Er=Math.sin,Rr=Math.cos,zr=Math.PI,Br=function(t,e){return(t[0]*e[0]+t[1]*e[1])/(Dr(t)*Dr(e))},Vr=function(t,e){return(t[0]*e[1]<t[1]*e[0]?-1:1)*Math.acos(Br(t,e))};function Gr(t,e,i,n,o,a,r,s,l,u,h){var c=l*(zr/180),d=Rr(c)*(t-i)/2+Er(c)*(e-n)/2,f=-1*Er(c)*(t-i)/2+Rr(c)*(e-n)/2,p=d*d/(r*r)+f*f/(s*s);1<p&&(r*=Or(p),s*=Or(p));var g=(o===a?-1:1)*Or((r*r*(s*s)-r*r*(f*f)-s*s*(d*d))/(r*r*(f*f)+s*s*(d*d)))||0,m=g*r*f/s,v=g*-s*d/r,y=(t+i)/2+Rr(c)*m-Er(c)*v,x=(e+n)/2+Er(c)*m+Rr(c)*v,_=Vr([1,0],[(d-m)/r,(f-v)/s]),w=[(d-m)/r,(f-v)/s],b=[(-1*d-m)/r,(-1*f-v)/s],S=Vr(w,b);Br(w,b)<=-1&&(S=zr),1<=Br(w,b)&&(S=0),0===a&&0<S&&(S-=2*zr),1===a&&S<0&&(S+=2*zr),h.addData(u,y,x,r,s,_,S,c,a)}var Fr=/([mlvhzcqtsa])([^mlvhzcqtsa]*)/gi,Wr=/-?([0-9]*\.)?[0-9]+([eE]-?[0-9]+)?/g;function Hr(t,e){var i=function(t){if(!t)return new rr;for(var e,i=0,n=0,o=i,a=n,r=new rr,s=rr.CMD,l=t.match(Fr),u=0;u<l.length;u++){for(var h,c=l[u],d=c.charAt(0),f=c.match(Wr)||[],p=f.length,g=0;g<p;g++)f[g]=parseFloat(f[g]);for(var m=0;m<p;){var v,y,x,_,w,b,S,M=i,I=n;switch(d){case"l":i+=f[m++],n+=f[m++],h=s.L,r.addData(h,i,n);break;case"L":i=f[m++],n=f[m++],h=s.L,r.addData(h,i,n);break;case"m":i+=f[m++],n+=f[m++],h=s.M,r.addData(h,i,n),o=i,a=n,d="l";break;case"M":i=f[m++],n=f[m++],h=s.M,r.addData(h,i,n),o=i,a=n,d="L";break;case"h":i+=f[m++],h=s.L,r.addData(h,i,n);break;case"H":i=f[m++],h=s.L,r.addData(h,i,n);break;case"v":n+=f[m++],h=s.L,r.addData(h,i,n);break;case"V":n=f[m++],h=s.L,r.addData(h,i,n);break;case"C":h=s.C,r.addData(h,f[m++],f[m++],f[m++],f[m++],f[m++],f[m++]),i=f[m-2],n=f[m-1];break;case"c":h=s.C,r.addData(h,f[m++]+i,f[m++]+n,f[m++]+i,f[m++]+n,f[m++]+i,f[m++]+n),i+=f[m-2],n+=f[m-1];break;case"S":v=i,y=n;var T=r.len(),A=r.data;e===s.C&&(v+=i-A[T-4],y+=n-A[T-3]),h=s.C,M=f[m++],I=f[m++],i=f[m++],n=f[m++],r.addData(h,v,y,M,I,i,n);break;case"s":v=i,y=n;T=r.len(),A=r.data;e===s.C&&(v+=i-A[T-4],y+=n-A[T-3]),h=s.C,M=i+f[m++],I=n+f[m++],i+=f[m++],n+=f[m++],r.addData(h,v,y,M,I,i,n);break;case"Q":M=f[m++],I=f[m++],i=f[m++],n=f[m++],h=s.Q,r.addData(h,M,I,i,n);break;case"q":M=f[m++]+i,I=f[m++]+n,i+=f[m++],n+=f[m++],h=s.Q,r.addData(h,M,I,i,n);break;case"T":v=i,y=n;T=r.len(),A=r.data;e===s.Q&&(v+=i-A[T-4],y+=n-A[T-3]),i=f[m++],n=f[m++],h=s.Q,r.addData(h,v,y,i,n);break;case"t":v=i,y=n;T=r.len(),A=r.data;e===s.Q&&(v+=i-A[T-4],y+=n-A[T-3]),i+=f[m++],n+=f[m++],h=s.Q,r.addData(h,v,y,i,n);break;case"A":x=f[m++],_=f[m++],w=f[m++],b=f[m++],S=f[m++],Gr(M=i,I=n,i=f[m++],n=f[m++],b,S,x,_,w,h=s.A,r);break;case"a":x=f[m++],_=f[m++],w=f[m++],b=f[m++],S=f[m++],Gr(M=i,I=n,i+=f[m++],n+=f[m++],b,S,x,_,w,h=s.A,r)}}"z"!==d&&"Z"!==d||(h=s.Z,r.addData(h),i=o,n=a),e=h}return r.toStatic(),r}(t);return(e=e||{}).buildPath=function(t){if(t.setData){t.setData(i.data),(e=t.getContext())&&t.rebuildPath(e)}else{var e=t;i.rebuildPath(e)}},e.applyTransform=function(t){Nr(i,t),this.dirty(!0)},e}function Zr(t,e){return new Ar(Hr(t,e))}var Ur=function(t){Jn.call(this,t)};Ur.prototype={constructor:Ur,type:"text",brush:function(t,e){var i=this.style;this.__dirty&&En(i),i.fill=i.stroke=i.shadowBlur=i.shadowColor=i.shadowOffsetX=i.shadowOffsetY=null;var n=i.text;null!=n&&(n+=""),qn(n,i)?(this.setTransform(t),zn(this,t,n,i,null,e),this.restoreTransform(t)):t.__attrCachedBy=Wi.NONE},getBoundingRect:function(){var t=this.style;if(this.__dirty&&En(t),!this._rect){var e=t.text;null!=e?e+="":e="";var i=gn(t.text+"",t.font,t.textAlign,t.textVerticalAlign,t.textPadding,t.textLineHeight,t.rich);if(i.x+=t.x||0,i.y+=t.y||0,Un(t.textStroke,t.textStrokeWidth)){var n=t.textStrokeWidth;i.x-=n/2,i.y-=n/2,i.width+=n,i.height+=n}this._rect=i}return this._rect}},w(Ur,Jn);function Xr(l){return v.browser.ie&&11<=v.browser.version?function(){var t,e=this.__clipPaths,i=this.style;if(e)for(var n=0;n<e.length;n++){var o=e[n],a=o&&o.shape,r=o&&o.type;if(a&&("sector"===r&&a.startAngle===a.endAngle||"rect"===r&&(!a.width||!a.height))){for(var s=0;s<jr.length;s++)jr[s][2]=i[jr[s][0]],i[jr[s][0]]=jr[s][1];t=!0;break}}if(l.apply(this,arguments),t)for(s=0;s<jr.length;s++)i[jr[s][0]]=jr[s][2]}:l}var Yr=Ar.extend({type:"circle",shape:{cx:0,cy:0,r:0},buildPath:function(t,e,i){i&&t.moveTo(e.cx+e.r,e.cy),t.arc(e.cx,e.cy,e.r,0,2*Math.PI,!0)}}),jr=[["shadowBlur",0],["shadowColor","#000"],["shadowOffsetX",0],["shadowOffsetY",0]],qr=Ar.extend({type:"sector",shape:{cx:0,cy:0,r0:0,r:0,startAngle:0,endAngle:2*Math.PI,clockwise:!0},brush:Xr(Ar.prototype.brush),buildPath:function(t,e){var i=e.cx,n=e.cy,o=Math.max(e.r0||0,0),a=Math.max(e.r,0),r=e.startAngle,s=e.endAngle,l=e.clockwise,u=Math.cos(r),h=Math.sin(r);t.moveTo(u*o+i,h*o+n),t.lineTo(u*a+i,h*a+n),t.arc(i,n,a,r,s,!l),t.lineTo(Math.cos(s)*o+i,Math.sin(s)*o+n),0!==o&&t.arc(i,n,o,s,r,l),t.closePath()}}),Kr=Ar.extend({type:"ring",shape:{cx:0,cy:0,r:0,r0:0},buildPath:function(t,e){var i=e.cx,n=e.cy,o=2*Math.PI;t.moveTo(i+e.r,n),t.arc(i,n,e.r,0,o,!1),t.moveTo(i+e.r0,n),t.arc(i,n,e.r0,0,o,!0)}});function $r(t,e,i,n,o,a,r){var s=.5*(i-t),l=.5*(n-e);return(2*(e-i)+s+l)*r+(-3*(e-i)-2*s-l)*a+s*o+e}function Jr(t,e,i){var n=e.points,o=e.smooth;if(n&&2<=n.length){if(o&&"spline"!==o){var a=function(t,e,i,n){var o,a,r,s,l=[],u=[],h=[],c=[];if(n){r=[1/0,1/0],s=[-1/0,-1/0];for(var d=0,f=t.length;d<f;d++)St(r,r,t[d]),Mt(s,s,t[d]);St(r,r,n[0]),Mt(s,s,n[1])}for(d=0,f=t.length;d<f;d++){var p=t[d];if(i)o=t[d?d-1:f-1],a=t[(d+1)%f];else{if(0===d||d===f-1){l.push(rt(t[d]));continue}o=t[d-1],a=t[d+1]}ht(u,a,o),gt(u,u,e);var g=vt(p,o),m=vt(p,a),v=g+m;0!==v&&(g/=v,m/=v),gt(h,u,-g),gt(c,u,m);var y=lt([],p,h),x=lt([],p,c);n&&(Mt(y,y,r),St(y,y,s),Mt(x,x,r),St(x,x,s)),l.push(y),l.push(x)}return i&&l.push(l.shift()),l}(n,o,i,e.smoothConstraint);t.moveTo(n[0][0],n[0][1]);for(var r=n.length,s=0;s<(i?r:r-1);s++){var l=a[2*s],u=a[2*s+1],h=n[(s+1)%r];t.bezierCurveTo(l[0],l[1],u[0],u[1],h[0],h[1])}}else{"spline"===o&&(n=function(t,e){for(var i=t.length,n=[],o=0,a=1;a<i;a++)o+=vt(t[a-1],t[a]);var r=o/2;r=r<i?i:r;for(a=0;a<r;a++){var s,l,u,h=a/(r-1)*(e?i:i-1),c=Math.floor(h),d=h-c,f=t[c%i];u=e?(s=t[(c-1+i)%i],l=t[(c+1)%i],t[(c+2)%i]):(s=t[0===c?c:c-1],l=t[i-2<c?i-1:c+1],t[i-3<c?i-1:c+2]);var p=d*d,g=d*p;n.push([$r(s[0],f[0],l[0],u[0],d,p,g),$r(s[1],f[1],l[1],u[1],d,p,g)])}return n}(n,i)),t.moveTo(n[0][0],n[0][1]);s=1;for(var c=n.length;s<c;s++)t.lineTo(n[s][0],n[s][1])}i&&t.closePath()}}var Qr=Ar.extend({type:"polygon",shape:{points:null,smooth:!1,smoothConstraint:null},buildPath:function(t,e){Jr(t,e,!0)}}),ts=Ar.extend({type:"polyline",shape:{points:null,smooth:!1,smoothConstraint:null},style:{stroke:"#000",fill:null},buildPath:function(t,e){Jr(t,e,!1)}}),es=Math.round;function is(t,e,i){if(e){var n=e.x1,o=e.x2,a=e.y1,r=e.y2;t.x1=n,t.x2=o,t.y1=a,t.y2=r;var s=i&&i.lineWidth;s&&(es(2*n)===es(2*o)&&(t.x1=t.x2=os(n,s,!0)),es(2*a)===es(2*r)&&(t.y1=t.y2=os(a,s,!0)))}}function ns(t,e,i){if(e){var n=e.x,o=e.y,a=e.width,r=e.height;t.x=n,t.y=o,t.width=a,t.height=r;var s=i&&i.lineWidth;s&&(t.x=os(n,s,!0),t.y=os(o,s,!0),t.width=Math.max(os(n+a,s,!1)-t.x,0===a?0:1),t.height=Math.max(os(o+r,s,!1)-t.y,0===r?0:1))}}function os(t,e,i){if(!e)return t;var n=es(2*t);return(n+es(e))%2==0?n/2:(n+(i?1:-1))/2}var as={},rs=Ar.extend({type:"rect",shape:{r:0,x:0,y:0,width:0,height:0},buildPath:function(t,e){var i,n,o,a;this.subPixelOptimize?(ns(as,e,this.style),i=as.x,n=as.y,o=as.width,a=as.height,as.r=e.r,e=as):(i=e.x,n=e.y,o=e.width,a=e.height),e.r?Dn(t,e):t.rect(i,n,o,a),t.closePath()}}),ss={},ls=Ar.extend({type:"line",shape:{x1:0,y1:0,x2:0,y2:0,percent:1},style:{stroke:"#000",fill:null},buildPath:function(t,e){var i,n,o,a;a=this.subPixelOptimize?(is(ss,e,this.style),i=ss.x1,n=ss.y1,o=ss.x2,ss.y2):(i=e.x1,n=e.y1,o=e.x2,e.y2);var r=e.percent;0!==r&&(t.moveTo(i,n),r<1&&(o=i*(1-r)+o*r,a=n*(1-r)+a*r),t.lineTo(o,a))},pointAt:function(t){var e=this.shape;return[e.x1*(1-t)+e.x2*t,e.y1*(1-t)+e.y2*t]}}),us=[];function hs(t,e,i){var n=t.cpx2,o=t.cpy2;return null===n||null===o?[(i?Aa:Ta)(t.x1,t.cpx1,t.cpx2,t.x2,e),(i?Aa:Ta)(t.y1,t.cpy1,t.cpy2,t.y2,e)]:[(i?ka:La)(t.x1,t.cpx1,t.x2,e),(i?ka:La)(t.y1,t.cpy1,t.y2,e)]}function cs(t){this.colorStops=t||[]}var ds=Ar.extend({type:"bezier-curve",shape:{x1:0,y1:0,x2:0,y2:0,cpx1:0,cpy1:0,percent:1},style:{stroke:"#000",fill:null},buildPath:function(t,e){var i=e.x1,n=e.y1,o=e.x2,a=e.y2,r=e.cpx1,s=e.cpy1,l=e.cpx2,u=e.cpy2,h=e.percent;0!==h&&(t.moveTo(i,n),null==l||null==u?(h<1&&(Na(i,r,o,h,us),r=us[1],o=us[2],Na(n,s,a,h,us),s=us[1],a=us[2]),t.quadraticCurveTo(r,s,o,a)):(h<1&&(Ca(i,r,l,o,h,us),r=us[1],l=us[2],o=us[3],Ca(n,s,u,a,h,us),s=us[1],u=us[2],a=us[3]),t.bezierCurveTo(r,s,l,u,o,a)))},pointAt:function(t){return hs(this.shape,t,!1)},tangentAt:function(t){var e=hs(this.shape,t,!0);return mt(e,e)}}),fs=Ar.extend({type:"arc",shape:{cx:0,cy:0,r:0,startAngle:0,endAngle:2*Math.PI,clockwise:!0},style:{stroke:"#000",fill:null},buildPath:function(t,e){var i=e.cx,n=e.cy,o=Math.max(e.r,0),a=e.startAngle,r=e.endAngle,s=e.clockwise,l=Math.cos(a),u=Math.sin(a);t.moveTo(l*o+i,u*o+n),t.arc(i,n,o,a,r,!s)}}),ps=Ar.extend({type:"compound",shape:{paths:null},_updatePathDirty:function(){for(var t=this.__dirtyPath,e=this.shape.paths,i=0;i<e.length;i++)t=t||e[i].__dirtyPath;this.__dirtyPath=t,this.__dirty=this.__dirty||t},beforeBrush:function(){this._updatePathDirty();for(var t=this.shape.paths||[],e=this.getGlobalScale(),i=0;i<t.length;i++)t[i].path||t[i].createPathProxy(),t[i].path.setScale(e[0],e[1],t[i].segmentIgnoreThreshold)},buildPath:function(t,e){for(var i=e.paths||[],n=0;n<i.length;n++)i[n].buildPath(t,i[n].shape,!0)},afterBrush:function(){for(var t=this.shape.paths||[],e=0;e<t.length;e++)t[e].__dirtyPath=!1},getBoundingRect:function(){return this._updatePathDirty(),Ar.prototype.getBoundingRect.call(this)}});cs.prototype={constructor:cs,addColorStop:function(t,e){this.colorStops.push({offset:t,color:e})}};function gs(t,e,i,n,o,a){this.x=null==t?0:t,this.y=null==e?0:e,this.x2=null==i?1:i,this.y2=null==n?0:n,this.type="linear",this.global=a||!1,cs.call(this,o)}gs.prototype={constructor:gs},w(gs,cs);function ms(t,e,i,n,o){this.x=null==t?.5:t,this.y=null==e?.5:e,this.r=null==i?.5:i,this.type="radial",this.global=o||!1,cs.call(this,n)}function vs(t){Jn.call(this,t),this._displayables=[],this._temporaryDisplayables=[],this._cursor=0,this.notClear=!0}ms.prototype={constructor:ms},w(ms,cs),vs.prototype.incremental=!0,vs.prototype.clearDisplaybles=function(){this._displayables=[],this._temporaryDisplayables=[],this._cursor=0,this.dirty(),this.notClear=!1},vs.prototype.addDisplayable=function(t,e){e?this._temporaryDisplayables.push(t):this._displayables.push(t),this.dirty()},vs.prototype.addDisplayables=function(t,e){e=e||!1;for(var i=0;i<t.length;i++)this.addDisplayable(t[i],e)},vs.prototype.eachPendingDisplayable=function(t){for(var e=this._cursor;e<this._displayables.length;e++)t&&t(this._displayables[e]);for(e=0;e<this._temporaryDisplayables.length;e++)t&&t(this._temporaryDisplayables[e])},vs.prototype.update=function(){this.updateTransform();for(var t=this._cursor;t<this._displayables.length;t++){(e=this._displayables[t]).parent=this,e.update(),e.parent=null}for(t=0;t<this._temporaryDisplayables.length;t++){var e;(e=this._temporaryDisplayables[t]).parent=this,e.update(),e.parent=null}},vs.prototype.brush=function(t,e){for(var i=this._cursor;i<this._displayables.length;i++){(n=this._displayables[i]).beforeBrush&&n.beforeBrush(t),n.brush(t,i===this._cursor?null:this._displayables[i-1]),n.afterBrush&&n.afterBrush(t)}this._cursor=i;for(i=0;i<this._temporaryDisplayables.length;i++){var n;(n=this._temporaryDisplayables[i]).beforeBrush&&n.beforeBrush(t),n.brush(t,0===i?null:this._temporaryDisplayables[i-1]),n.afterBrush&&n.afterBrush(t)}this._temporaryDisplayables=[],this.notClear=!0};var ys=[];vs.prototype.getBoundingRect=function(){if(!this._rect){for(var t=new Di(1/0,1/0,-1/0,-1/0),e=0;e<this._displayables.length;e++){var i=this._displayables[e],n=i.getBoundingRect().clone();i.needLocalTransform()&&n.applyTransform(i.getLocalTransform(ys)),t.union(n)}this._rect=t}return this._rect},vs.prototype.contain=function(t,e){var i=this.transformCoordToLocal(t,e);if(this.getBoundingRect().contain(i[0],i[1]))for(var n=0;n<this._displayables.length;n++){if(this._displayables[n].contain(t,e))return!0}return!1},w(vs,Jn);var xs=Math.max,_s=Math.min,ws={},bs=1,Ss={color:"textFill",textBorderColor:"textStroke",textBorderWidth:"textStrokeWidth"},Ms="emphasis",Is="normal",Ts=1,As={},Ds={};function Cs(t){return Ar.extend(t)}function Ls(t,e){Ds[t]=e}function ks(t){if(Ds.hasOwnProperty(t))return Ds[t]}function Ps(t,e,i,n){var o=Zr(t,e);return i&&("center"===n&&(i=Os(i,o.getBoundingRect())),Rs(o,i)),o}function Ns(t,i,n){var o=new Qn({style:{image:t,x:i.x,y:i.y,width:i.width,height:i.height},onload:function(t){if("center"===n){var e={width:t.width,height:t.height};o.setStyle(Os(i,e))}}});return o}function Os(t,e){var i,n=e.width/e.height,o=t.height*n;return i=o<=t.width?t.height:(o=t.width)/n,{x:t.x+t.width/2-o/2,y:t.y+t.height/2-i/2,width:o,height:i}}var Es=function(t,e){for(var i=[],n=t.length,o=0;o<n;o++){var a=t[o];a.path||a.createPathProxy(),a.__dirtyPath&&a.buildPath(a.path,a.shape,!0),i.push(a.path)}var r=new Ar(e);return r.createPathProxy(),r.buildPath=function(t){t.appendPath(i);var e=t.getContext();e&&t.rebuildPath(e)},r};function Rs(t,e){if(t.applyTransform){var i=t.getBoundingRect().calculateTransform(e);t.applyTransform(i)}}var zs=os;function Bs(t){return null!=t&&"none"!==t}var Vs=Q(),Gs=0;function Fs(t){var e=t.__hoverStl;if(e&&!t.__highlighted){var i=t.__zr,n=t.useHoverLayer&&i&&"canvas"===i.painter.type;if(t.__highlighted=n?"layer":"plain",!(t.isGroup||!i&&t.useHoverLayer)){var o=t,a=t.style;n&&(a=(o=i.addHover(t)).style),ll(a),n||function(t){if(t.__hoverStlDirty){t.__hoverStlDirty=!1;var e=t.__hoverStl;if(e){var i=t.__cachedNormalStl={};t.__cachedNormalZ2=t.z2;var n=t.style;for(var o in e)null!=e[o]&&(i[o]=n[o]);i.fill=n.fill,i.stroke=n.stroke}else t.__cachedNormalStl=t.__cachedNormalZ2=null}}(o),a.extendFrom(e),Ws(a,e,"fill"),Ws(a,e,"stroke"),sl(a),n||(t.dirty(!1),t.z2+=bs)}}}function Ws(t,e,i){!Bs(e[i])&&Bs(t[i])&&(t[i]=function(t){if("string"!=typeof t)return t;var e=Vs.get(t);return e||(e=He(t,-.1),Gs<1e4&&(Vs.set(t,e),Gs++)),e}(t[i]))}function Hs(t){var e=t.__highlighted;if(e&&(t.__highlighted=!1,!t.isGroup))if("layer"===e)t.__zr&&t.__zr.removeHover(t);else{var i=t.style,n=t.__cachedNormalStl;n&&(ll(i),t.setStyle(n),sl(i));var o=t.__cachedNormalZ2;null!=o&&t.z2-o===bs&&(t.z2=o)}}function Zs(t,e,i){var n,o=Is,a=Is;t.__highlighted&&(o=Ms,n=!0),e(t,i),t.__highlighted&&(a=Ms,n=!0),t.isGroup&&t.traverse(function(t){t.isGroup||e(t,i)}),n&&t.__highDownOnUpdate&&t.__highDownOnUpdate(o,a)}function Us(t,e){e=t.__hoverStl=!1!==e&&(t.hoverStyle||e||{}),t.__hoverStlDirty=!0,t.__highlighted&&(t.__cachedNormalStl=null,Hs(t),Fs(t))}function Xs(t){Ks(this,t)||this.__highByOuter||Zs(this,Fs)}function Ys(t){Ks(this,t)||this.__highByOuter||Zs(this,Hs)}function js(t){this.__highByOuter|=1<<(t||0),Zs(this,Fs)}function qs(t){(this.__highByOuter&=~(1<<(t||0)))||Zs(this,Hs)}function Ks(t,e){return t.__highDownSilentOnTouch&&e.zrByTouch}function $s(t,e){Js(t,!0),Zs(t,Us,e)}function Js(t,e){var i=!1===e;if(t.__highDownSilentOnTouch=t.highDownSilentOnTouch,t.__highDownOnUpdate=t.highDownOnUpdate,!i||t.__highDownDispatcher){var n=i?"off":"on";t[n]("mouseover",Xs)[n]("mouseout",Ys),t[n]("emphasis",js)[n]("normal",qs),t.__highByOuter=t.__highByOuter||0,t.__highDownDispatcher=!i}}function Qs(t){return!(!t||!t.__highDownDispatcher)}function tl(t){var e=As[t];return null==e&&Ts<=32&&(e=As[t]=Ts++),e}function el(t,e,i,n,o,a,r){var s,l=(o=o||ws).labelFetcher,u=o.labelDataIndex,h=o.labelDimIndex,c=o.labelProp,d=i.getShallow("show"),f=n.getShallow("show");(d||f)&&(l&&(s=l.getFormattedLabel(u,"normal",null,h,c)),null==s&&(s=C(o.defaultText)?o.defaultText(u,o):o.defaultText));var p=d?s:null,g=f?H(l?l.getFormattedLabel(u,"emphasis",null,h,c):null,s):null;null==p&&null==g||(nl(t,i,a,o),nl(e,n,r,o,!0)),t.text=p,e.text=g}function il(t,e,i){var n=t.style;e&&(ll(n),t.setStyle(e),sl(n)),n=t.__hoverStl,i&&n&&(ll(n),P(n,i),sl(n))}function nl(t,e,i,n,o){return ol(t,e,n,o),i&&P(t,i),t}function ol(t,e,i,n){if((i=i||ws).isRectText){var o;i.getTextPosition?o=i.getTextPosition(e,n):"outside"===(o=e.getShallow("position")||(n?null:"inside"))&&(o="top"),t.textPosition=o,t.textOffset=e.getShallow("offset");var a=e.getShallow("rotate");null!=a&&(a*=Math.PI/180),t.textRotation=a,t.textDistance=H(e.getShallow("distance"),n?null:5)}var r,s=e.ecModel,l=s&&s.option.textStyle,u=function(t){var e;for(;t&&t!==t.ecModel;){var i=(t.option||ws).rich;if(i)for(var n in e=e||{},i)i.hasOwnProperty(n)&&(e[n]=1);t=t.parentModel}return e}(e);if(u)for(var h in r={},u)if(u.hasOwnProperty(h)){var c=e.getModel(["rich",h]);al(r[h]={},c,l,i,n)}return t.rich=r,al(t,e,l,i,n,!0),i.forceRich&&!i.textStyle&&(i.textStyle={}),t}function al(t,e,i,n,o,a){i=!o&&i||ws,t.textFill=rl(e.getShallow("color"),n)||i.color,t.textStroke=rl(e.getShallow("textBorderColor"),n)||i.textBorderColor,t.textStrokeWidth=H(e.getShallow("textBorderWidth"),i.textBorderWidth),o||(a&&(t.insideRollbackOpt=n,sl(t)),null==t.textFill&&(t.textFill=n.autoColor)),t.fontStyle=e.getShallow("fontStyle")||i.fontStyle,t.fontWeight=e.getShallow("fontWeight")||i.fontWeight,t.fontSize=e.getShallow("fontSize")||i.fontSize,t.fontFamily=e.getShallow("fontFamily")||i.fontFamily,t.textAlign=e.getShallow("align"),t.textVerticalAlign=e.getShallow("verticalAlign")||e.getShallow("baseline"),t.textLineHeight=e.getShallow("lineHeight"),t.textWidth=e.getShallow("width"),t.textHeight=e.getShallow("height"),t.textTag=e.getShallow("tag"),a&&n.disableBox||(t.textBackgroundColor=rl(e.getShallow("backgroundColor"),n),t.textPadding=e.getShallow("padding"),t.textBorderColor=rl(e.getShallow("borderColor"),n),t.textBorderWidth=e.getShallow("borderWidth"),t.textBorderRadius=e.getShallow("borderRadius"),t.textBoxShadowColor=e.getShallow("shadowColor"),t.textBoxShadowBlur=e.getShallow("shadowBlur"),t.textBoxShadowOffsetX=e.getShallow("shadowOffsetX"),t.textBoxShadowOffsetY=e.getShallow("shadowOffsetY")),t.textShadowColor=e.getShallow("textShadowColor")||i.textShadowColor,t.textShadowBlur=e.getShallow("textShadowBlur")||i.textShadowBlur,t.textShadowOffsetX=e.getShallow("textShadowOffsetX")||i.textShadowOffsetX,t.textShadowOffsetY=e.getShallow("textShadowOffsetY")||i.textShadowOffsetY}function rl(t,e){return"auto"!==t?t:e&&e.autoColor?e.autoColor:null}function sl(t){var e,i=t.textPosition,n=t.insideRollbackOpt;if(n&&null==t.textFill){var o=n.autoColor,a=n.isRectText,r=n.useInsideStyle,s=!1!==r&&(!0===r||a&&i&&"string"==typeof i&&0<=i.indexOf("inside")),l=!s&&null!=o;(s||l)&&(e={textFill:t.textFill,textStroke:t.textStroke,textStrokeWidth:t.textStrokeWidth}),s&&(t.textFill="#fff",null==t.textStroke&&(t.textStroke=o,null==t.textStrokeWidth&&(t.textStrokeWidth=2))),l&&(t.textFill=o)}t.insideRollback=e}function ll(t){var e=t.insideRollback;e&&(t.textFill=e.textFill,t.textStroke=e.textStroke,t.textStrokeWidth=e.textStrokeWidth,t.insideRollback=null)}function ul(t,e){var i=e&&e.getModel("textStyle");return j([t.fontStyle||i&&i.getShallow("fontStyle")||"",t.fontWeight||i&&i.getShallow("fontWeight")||"",(t.fontSize||i&&i.getShallow("fontSize")||12)+"px",t.fontFamily||i&&i.getShallow("fontFamily")||"sans-serif"].join(" "))}function hl(t,e,i,n,o,a){if("function"==typeof o&&(a=o,o=null),n&&n.isAnimationEnabled()){var r=t?"Update":"",s=n.getShallow("animationDuration"+r),l=n.getShallow("animationEasing"+r),u=n.getShallow("animationDelay"+r);"function"==typeof u&&(u=u(o,n.getAnimationDelayParams?n.getAnimationDelayParams(e,o):null)),"function"==typeof s&&(s=s(o)),0<s?e.animateTo(i,s,u||0,l,a,!!a):(e.stopAnimation(),e.attr(i),a&&a())}else e.stopAnimation(),e.attr(i),a&&a()}function cl(t,e,i,n,o){hl(!0,t,e,i,n,o)}function dl(t,e,i,n,o){hl(!1,t,e,i,n,o)}function fl(t,e){for(var i=re([]);t&&t!==e;)le(i,t.getLocalTransform(),i),t=t.parent;return i}function pl(t,e,i){return e&&!N(e)&&(e=ve.getLocalTransform(e)),i&&(e=de([],e)),bt([],t,e)}function gl(t,e,i){var n=0===e[4]||0===e[5]||0===e[0]?1:Math.abs(2*e[4]/e[0]),o=0===e[4]||0===e[5]||0===e[2]?1:Math.abs(2*e[4]/e[2]),a=["left"===t?-n:"right"===t?n:0,"top"===t?-o:"bottom"===t?o:0];return a=pl(a,e,i),Math.abs(a[0])>Math.abs(a[1])?0<a[0]?"right":"left":0<a[1]?"bottom":"top"}function ml(t,e,n,i){if(t&&e){var o,a=(o={},t.traverse(function(t){!t.isGroup&&t.anid&&(o[t.anid]=t)}),o);e.traverse(function(t){if(!t.isGroup&&t.anid){var e=a[t.anid];if(e){var i=r(t);t.attr(r(e)),cl(t,i,n,t.dataIndex)}}})}function r(t){var e={position:rt(t.position),rotation:t.rotation};return t.shape&&(e.shape=P({},t.shape)),e}}function vl(t,n){return O(t,function(t){var e=t[0];e=xs(e,n.x),e=_s(e,n.x+n.width);var i=t[1];return i=xs(i,n.y),[e,i=_s(i,n.y+n.height)]})}function yl(t,e,i){var n=(e=P({rectHover:!0},e)).style={strokeNoScale:!0};if(i=i||{x:-1,y:-1,width:2,height:2},t)return 0===t.indexOf("image://")?(n.image=t.slice(8),D(n,i),new Qn(e)):Ps(t.replace("path://",""),e,i,"center")}function xl(t,e,i,n,o){for(var a=0,r=o[o.length-1];a<o.length;a++){var s=o[a];if(_l(t,e,i,n,s[0],s[1],r[0],r[1]))return!0;r=s}}function _l(t,e,i,n,o,a,r,s){var l=i-t,u=n-e,h=r-o,c=s-a,d=wl(h,c,l,u);if(function(t){return t<=1e-6&&-1e-6<=t}(d))return!1;var f=t-o,p=e-a,g=wl(f,p,l,u)/d;if(g<0||1<g)return!1;var m=wl(f,p,h,c)/d;return!(m<0||1<m)}function wl(t,e,i,n){return t*n-i*e}Ls("circle",Yr),Ls("sector",qr),Ls("ring",Kr),Ls("polygon",Qr),Ls("polyline",ts),Ls("rect",rs),Ls("line",ls),Ls("bezierCurve",ds),Ls("arc",fs);var bl=(Object.freeze||Object)({Z2_EMPHASIS_LIFT:bs,CACHED_LABEL_STYLE_PROPERTIES:Ss,extendShape:Cs,extendPath:function(t,e){return function(t,e){return Ar.extend(Hr(t,e))}(t,e)},registerShape:Ls,getShapeClass:ks,makePath:Ps,makeImage:Ns,mergePath:Es,resizePath:Rs,subPixelOptimizeLine:function(t){return is(t.shape,t.shape,t.style),t},subPixelOptimizeRect:function(t){return ns(t.shape,t.shape,t.style),t},subPixelOptimize:zs,setElementHoverStyle:Us,setHoverStyle:$s,setAsHighDownDispatcher:Js,isHighDownDispatcher:Qs,getHighlightDigit:tl,setLabelStyle:el,modifyLabelStyle:il,setTextStyle:nl,setText:function(t,e,i){var n,o={isRectText:!0};!1===i?n=!0:o.autoColor=i,ol(t,e,o,n)},getFont:ul,updateProps:cl,initProps:dl,getTransform:fl,applyTransform:pl,transformDirection:gl,groupTransition:ml,clipPointsByRect:vl,clipRectByRect:function(t,e){var i=xs(t.x,e.x),n=_s(t.x+t.width,e.x+e.width),o=xs(t.y,e.y),a=_s(t.y+t.height,e.y+e.height);if(i<=n&&o<=a)return{x:i,y:o,width:n-i,height:a-o}},createIcon:yl,linePolygonIntersect:xl,lineLineIntersect:_l,Group:Ci,Image:Qn,Text:Ur,Circle:Yr,Sector:qr,Ring:Kr,Polygon:Qr,Polyline:ts,Rect:rs,Line:ls,BezierCurve:ds,Arc:fs,IncrementalDisplayable:vs,CompoundPath:ps,LinearGradient:gs,RadialGradient:ms,BoundingRect:Di}),Sl=["textStyle","color"],Ml={getTextColor:function(t){var e=this.ecModel;return this.getShallow("color")||(!t&&e?e.get(Sl):null)},getFont:function(){return ul({fontStyle:this.getShallow("fontStyle"),fontWeight:this.getShallow("fontWeight"),fontSize:this.getShallow("fontSize"),fontFamily:this.getShallow("fontFamily")},this.ecModel)},getTextRect:function(t){return gn(t,this.getFont(),this.getShallow("align"),this.getShallow("verticalAlign")||this.getShallow("baseline"),this.getShallow("padding"),this.getShallow("lineHeight"),this.getShallow("rich"),this.getShallow("truncateText"))}},Il=ha([["fill","color"],["stroke","borderColor"],["lineWidth","borderWidth"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"],["textPosition"],["textAlign"]]),Tl={getItemStyle:function(t,e){var i=Il(this,t,e),n=this.getBorderLineDash();return n&&(i.lineDash=n),i},getBorderLineDash:function(){var t=this.get("borderType");return"solid"===t||null==t?null:"dashed"===t?[5,5]:[1,1]}},Al=b,Dl=jo();function Cl(t,e,i){this.parentModel=e,this.ecModel=i,this.option=t}function Ll(t,e,i){for(var n=0;n<e.length&&(!e[n]||null!=(t=t&&"object"==typeof t?t[e[n]]:null));n++);return null==t&&i&&(t=i.get(e)),t}function kl(t,e){var i=Dl(t).getParent;return i?i.call(t,e):t.parentModel}Cl.prototype={constructor:Cl,init:null,mergeOption:function(t){m(this.option,t,!0)},get:function(t,e){return null==t?this.option:Ll(this.option,this.parsePath(t),!e&&kl(this,t))},getShallow:function(t,e){var i=this.option,n=null==i?i:i[t],o=!e&&kl(this,t);return null==n&&o&&(n=o.getShallow(t)),n},getModel:function(t,e){var i;return new Cl(null==t?this.option:Ll(this.option,t=this.parsePath(t)),e=e||(i=kl(this,t))&&i.getModel(t),this.ecModel)},isEmpty:function(){return null==this.option},restoreData:function(){},clone:function(){return new this.constructor(k(this.option))},setReadOnly:function(t){},parsePath:function(t){return"string"==typeof t&&(t=t.split(".")),t},customizeGetParent:function(t){Dl(this).getParent=t},isAnimationEnabled:function(){if(!v.node){if(null!=this.option.animation)return!!this.option.animation;if(this.parentModel)return this.parentModel.isAnimationEnabled()}}},oa(Cl),ra(Cl),Al(Cl,da),Al(Cl,pa),Al(Cl,Ml),Al(Cl,Tl);var Pl=0;function Nl(t){return[t||"",Pl++,Math.random().toFixed(5)].join("_")}var Ol=1e-4;function El(t,e,i,n){var o=e[1]-e[0],a=i[1]-i[0];if(0==o)return 0==a?i[0]:(i[0]+i[1])/2;if(n)if(0<o){if(t<=e[0])return i[0];if(t>=e[1])return i[1]}else{if(t>=e[0])return i[0];if(t<=e[1])return i[1]}else{if(t===e[0])return i[0];if(t===e[1])return i[1]}return(t-e[0])/o*a+i[0]}function Rl(t,e){switch(t){case"center":case"middle":t="50%";break;case"left":case"top":t="0%";break;case"right":case"bottom":t="100%"}return"string"==typeof t?function(t){return t.replace(/^\s+|\s+$/g,"")}(t).match(/%$/)?parseFloat(t)/100*e:parseFloat(t):null==t?NaN:+t}function zl(t,e,i){return null==e&&(e=10),e=Math.min(Math.max(0,e),20),t=(+t).toFixed(e),i?t:+t}function Bl(t){return t.sort(function(t,e){return t-e}),t}function Vl(t){if(t=+t,isNaN(t))return 0;for(var e=1,i=0;Math.round(t*e)/e!==t;)e*=10,i++;return i}function Gl(t){var e=t.toString(),i=e.indexOf("e");if(0<i){var n=+e.slice(i+1);return n<0?-n:0}var o=e.indexOf(".");return o<0?0:e.length-1-o}function Fl(t,e){var i=Math.log,n=Math.LN10,o=Math.floor(i(t[1]-t[0])/n),a=Math.round(i(Math.abs(e[1]-e[0]))/n),r=Math.min(Math.max(-o+a,0),20);return isFinite(r)?r:20}function Wl(t,e,i){if(!t[e])return 0;var n=S(t,function(t,e){return t+(isNaN(e)?0:e)},0);if(0===n)return 0;for(var o=Math.pow(10,i),a=O(t,function(t){return(isNaN(t)?0:t)/n*o*100}),r=100*o,s=O(a,function(t){return Math.floor(t)}),l=S(s,function(t,e){return t+e},0),u=O(a,function(t,e){return t-s[e]});l<r;){for(var h=Number.NEGATIVE_INFINITY,c=null,d=0,f=u.length;d<f;++d)u[d]>h&&(h=u[d],c=d);++s[c],u[c]=0,++l}return s[e]/o}var Hl=9007199254740991;function Zl(t){var e=2*Math.PI;return(t%e+e)%e}function Ul(t){return-Ol<t&&t<Ol}var Xl=/^(?:(\d{4})(?:[-\/](\d{1,2})(?:[-\/](\d{1,2})(?:[T ](\d{1,2})(?::(\d\d)(?::(\d\d)(?:[.,](\d+))?)?)?(Z|[\+\-]\d\d:?\d\d)?)?)?)?)?$/;function Yl(t){if(t instanceof Date)return t;if("string"!=typeof t)return null==t?new Date(NaN):new Date(Math.round(t));var e=Xl.exec(t);if(!e)return new Date(NaN);if(e[8]){var i=+e[4]||0;return"Z"!==e[8].toUpperCase()&&(i-=e[8].slice(0,3)),new Date(Date.UTC(+e[1],+(e[2]||1)-1,+e[3]||1,i,+(e[5]||0),+e[6]||0,+e[7]||0))}return new Date(+e[1],+(e[2]||1)-1,+e[3]||1,+e[4]||0,+(e[5]||0),+e[6]||0,+e[7]||0)}function jl(t){return Math.pow(10,ql(t))}function ql(t){if(0===t)return 0;var e=Math.floor(Math.log(t)/Math.LN10);return 10<=t/Math.pow(10,e)&&e++,e}function Kl(t,e){var i=ql(t),n=Math.pow(10,i),o=t/n;return t=(e?o<1.5?1:o<2.5?2:o<4?3:o<7?5:10:o<1?1:o<2?2:o<3?3:o<5?5:10)*n,-20<=i?+t.toFixed(i<0?-i:0):t}function $l(t){t.sort(function(t,e){return function t(e,i,n){return e.interval[n]<i.interval[n]||e.interval[n]===i.interval[n]&&(e.close[n]-i.close[n]==(n?-1:1)||!n&&t(e,i,1))}(t,e,0)?-1:1});for(var e=-1/0,i=1,n=0;n<t.length;){for(var o=t[n].interval,a=t[n].close,r=0;r<2;r++)o[r]<=e&&(o[r]=e,a[r]=r?1:1-i),e=o[r],i=a[r];o[0]===o[1]&&a[0]*a[1]!=1?t.splice(n,1):n++}return t}function Jl(t){return 0<=t-parseFloat(t)}var Ql=(Object.freeze||Object)({linearMap:El,parsePercent:Rl,round:zl,asc:Bl,getPrecision:Vl,getPrecisionSafe:Gl,getPixelPrecision:Fl,getPercentWithPrecision:Wl,MAX_SAFE_INTEGER:Hl,remRadian:Zl,isRadianAroundZero:Ul,parseDate:Yl,quantity:jl,quantityExponent:ql,nice:Kl,quantile:function(t,e){var i=(t.length-1)*e+1,n=Math.floor(i),o=+t[n-1],a=i-n;return a?o+a*(t[n]-o):o},reformIntervals:$l,isNumeric:Jl});function tu(t){return isNaN(t)?"-":(t=(t+"").split("."))[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g,"$1,")+(1<t.length?"."+t[1]:"")}function eu(t,e){return t=(t||"").toLowerCase().replace(/-(.)/g,function(t,e){return e.toUpperCase()}),e&&t&&(t=t.charAt(0).toUpperCase()+t.slice(1)),t}var iu=X,nu=/([&<>"'])/g,ou={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function au(t){return null==t?"":(t+"").replace(nu,function(t,e){return ou[e]})}function ru(t,e){return"{"+t+(null==e?"":e)+"}"}var su=["a","b","c","d","e","f","g"];function lu(t,e,i){L(e)||(e=[e]);var n=e.length;if(!n)return"";for(var o=e[0].$vars||[],a=0;a<o.length;a++){var r=su[a];t=t.replace(ru(r),ru(r,0))}for(var s=0;s<n;s++)for(var l=0;l<o.length;l++){var u=e[s][o[l]];t=t.replace(ru(su[l],s),i?au(u):u)}return t}function uu(i,t,n){return E(t,function(t,e){i=i.replace("{"+e+"}",n?au(t):t)}),i}function hu(t,e){var i=(t=R(t)?{color:t,extraCssText:e}:t||{}).color,n=t.type,o=(e=t.extraCssText,t.renderMode||"html"),a=t.markerId||"X";return i?"html"===o?"subItem"===n?'<span style="display:inline-block;vertical-align:middle;margin-right:8px;margin-left:3px;border-radius:4px;width:4px;height:4px;background-color:'+au(i)+";"+(e||"")+'"></span>':'<span style="display:inline-block;margin-right:5px;border-radius:10px;width:10px;height:10px;background-color:'+au(i)+";"+(e||"")+'"></span>':{renderMode:o,content:"{marker"+a+"|} ",style:{color:i}}:""}function cu(t,e){return"0000".substr(0,e-(t+="").length)+t}function du(t,e,i){"week"!==t&&"month"!==t&&"quarter"!==t&&"half-year"!==t&&"year"!==t||(t="MM-dd\nyyyy");var n=Yl(e),o=i?"UTC":"",a=n["get"+o+"FullYear"](),r=n["get"+o+"Month"]()+1,s=n["get"+o+"Date"](),l=n["get"+o+"Hours"](),u=n["get"+o+"Minutes"](),h=n["get"+o+"Seconds"](),c=n["get"+o+"Milliseconds"]();return t=t.replace("MM",cu(r,2)).replace("M",r).replace("yyyy",a).replace("yy",a%100).replace("dd",cu(s,2)).replace("d",s).replace("hh",cu(l,2)).replace("h",l).replace("mm",cu(u,2)).replace("m",u).replace("ss",cu(h,2)).replace("s",h).replace("SSS",cu(c,3))}function fu(t){return t?t.charAt(0).toUpperCase()+t.substr(1):t}var pu=xn;function gu(t,e){if("_blank"===e||"blank"===e){var i=window.open();i.opener=null,i.location=t}else window.open(t,e)}var mu=(Object.freeze||Object)({addCommas:tu,toCamelCase:eu,normalizeCssArray:iu,encodeHTML:au,formatTpl:lu,formatTplSimple:uu,getTooltipMarker:hu,formatTime:du,capitalFirst:fu,truncateText:pu,getTextBoundingRect:function(t){return gn(t.text,t.font,t.textAlign,t.textVerticalAlign,t.textPadding,t.textLineHeight,t.rich,t.truncate)},getTextRect:function(t,e,i,n,o,a,r,s){return gn(t,e,i,n,o,s,a,r)},windowOpen:gu}),vu=E,yu=["left","right","top","bottom","width","height"],xu=[["width","left","right"],["height","top","bottom"]];function _u(h,c,d,f,p){var g=0,m=0;null==f&&(f=1/0),null==p&&(p=1/0);var v=0;c.eachChild(function(t,e){var i,n,o=t.position,a=t.getBoundingRect(),r=c.childAt(e+1),s=r&&r.getBoundingRect();if("horizontal"===h){var l=a.width+(s?-s.x+a.x:0);v=f<(i=g+l)||t.newline?(g=0,i=l,m+=v+d,a.height):Math.max(v,a.height)}else{var u=a.height+(s?-s.y+a.y:0);v=p<(n=m+u)||t.newline?(g+=v+d,m=0,n=u,a.width):Math.max(v,a.width)}t.newline||(o[0]=g,o[1]=m,"horizontal"===h?g=i+d:m=n+d)})}var wu=_u;T(_u,"vertical"),T(_u,"horizontal");function bu(t,e,i){i=iu(i||0);var n=e.width,o=e.height,a=Rl(t.left,n),r=Rl(t.top,o),s=Rl(t.right,n),l=Rl(t.bottom,o),u=Rl(t.width,n),h=Rl(t.height,o),c=i[2]+i[0],d=i[1]+i[3],f=t.aspect;switch(isNaN(u)&&(u=n-s-d-a),isNaN(h)&&(h=o-l-c-r),null!=f&&(isNaN(u)&&isNaN(h)&&(n/o<f?u=.8*n:h=.8*o),isNaN(u)&&(u=f*h),isNaN(h)&&(h=u/f)),isNaN(a)&&(a=n-s-u-d),isNaN(r)&&(r=o-l-h-c),t.left||t.right){case"center":a=n/2-u/2-i[3];break;case"right":a=n-u-d}switch(t.top||t.bottom){case"middle":case"center":r=o/2-h/2-i[0];break;case"bottom":r=o-h-c}a=a||0,r=r||0,isNaN(u)&&(u=n-d-a-(s||0)),isNaN(h)&&(h=o-c-r-(l||0));var p=new Di(a+i[3],r+i[0],u,h);return p.margin=i,p}function Su(t,e,i,n,o){var a=!o||!o.hv||o.hv[0],r=!o||!o.hv||o.hv[1],s=o&&o.boundingMode||"all";if(a||r){var l;if("raw"===s)l="group"===t.type?new Di(0,0,+e.width||0,+e.height||0):t.getBoundingRect();else if(l=t.getBoundingRect(),t.needLocalTransform()){var u=t.getLocalTransform();(l=l.clone()).applyTransform(u)}e=bu(D({width:l.width,height:l.height},e),i,n);var h=t.position,c=a?e.x-l.x:0,d=r?e.y-l.y:0;t.attr("position","raw"===s?[c,d]:[h[0]+c,h[1]+d])}}function Mu(l,u,t){z(t)||(t={});var h=t.ignoreSize;L(h)||(h=[h,h]);var e=n(xu[0],0),i=n(xu[1],1);function n(t,e){var i={},n=0,o={},a=0;if(vu(t,function(t){o[t]=l[t]}),vu(t,function(t){c(u,t)&&(i[t]=o[t]=u[t]),d(i,t)&&n++,d(o,t)&&a++}),h[e])return d(u,t[1])?o[t[2]]=null:d(u,t[2])&&(o[t[1]]=null),o;if(2!==a&&n){if(2<=n)return i;for(var r=0;r<t.length;r++){var s=t[r];if(!c(i,s)&&c(l,s)){i[s]=l[s];break}}return i}return o}function c(t,e){return t.hasOwnProperty(e)}function d(t,e){return null!=t[e]&&"auto"!==t[e]}function o(t,e,i){vu(t,function(t){e[t]=i[t]})}o(xu[0],l,e),o(xu[1],l,i)}function Iu(t){return Tu({},t)}function Tu(e,i){return i&&e&&vu(yu,function(t){i.hasOwnProperty(t)&&(e[t]=i[t])}),e}var Au,Du,Cu,Lu=jo(),ku=Cl.extend({type:"component",id:"",name:"",mainType:"",subType:"",componentIndex:0,defaultOption:null,ecModel:null,dependentModels:[],uid:null,layoutMode:null,$constructor:function(t,e,i,n){Cl.call(this,t,e,i,n),this.uid=Nl("ec_cpt_model")},init:function(t,e,i,n){this.mergeDefaultAndTheme(t,i)},mergeDefaultAndTheme:function(t,e){var i=this.layoutMode,n=i?Iu(t):{};m(t,e.getTheme().get(this.mainType)),m(t,this.getDefaultOption()),i&&Mu(t,n,i)},mergeOption:function(t,e){m(this.option,t,!0);var i=this.layoutMode;i&&Mu(this.option,t,i)},optionUpdated:function(t,e){},getDefaultOption:function(){var t=Lu(this);if(!t.defaultOption){for(var e=[],i=this.constructor;i;){var n=i.prototype.defaultOption;n&&e.push(n),i=i.superClass}for(var o={},a=e.length-1;0<=a;a--)o=m(o,e[a],!0);t.defaultOption=o}return t.defaultOption},getReferringComponents:function(t){return this.ecModel.queryComponents({mainType:t,index:this.get(t+"Index",!0),id:this.get(t+"Id",!0)})}});function Pu(t,e){return t[e]||(t[e]={predecessor:[],successor:[]}),t[e]}ua(ku,{registerWhenExtend:!0}),Du={},(Au=ku).registerSubTypeDefaulter=function(t,e){t=na(t),Du[t.main]=e},Au.determineSubType=function(t,e){var i=e.type;if(!i){var n=na(t).main;Au.hasSubTypes(t)&&Du[n]&&(i=Du[n](e))}return i},Cu=function(t){var e=[];E(ku.getClassesByMainType(t),function(t){e=e.concat(t.prototype.dependencies||[])}),e=O(e,function(t){return na(t).main}),"dataset"!==t&&_(e,"dataset")<=0&&e.unshift("dataset");return e},ku.topologicalTravel=function(t,e,i,n){if(t.length){var o=function(e){var o={},a=[];return E(e,function(i){var n=Pu(o,i),t=function(t,e){var i=[];return E(t,function(t){0<=_(e,t)&&i.push(t)}),i}(n.originalDeps=Cu(i),e);n.entryCount=t.length,0===n.entryCount&&a.push(i),E(t,function(t){_(n.predecessor,t)<0&&n.predecessor.push(t);var e=Pu(o,t);_(e.successor,t)<0&&e.successor.push(i)})}),{graph:o,noEntryList:a}}(e),a=o.graph,r=o.noEntryList,s={};for(E(t,function(t){s[t]=!0});r.length;){var l=r.pop(),u=a[l],h=!!s[l];h&&(i.call(n,l,u.originalDeps.slice()),delete s[l]),E(u.successor,h?d:c)}E(s,function(){throw new Error("Circle dependency may exists")})}function c(t){a[t].entryCount--,0===a[t].entryCount&&r.push(t)}function d(t){s[t]=!0,c(t)}},b(ku,{getBoxLayoutParams:function(){return{left:this.get("left"),top:this.get("top"),right:this.get("right"),bottom:this.get("bottom"),width:this.get("width"),height:this.get("height")}}});var Nu="";"undefined"!=typeof navigator&&(Nu=navigator.platform||"");var Ou={color:["#c23531","#2f4554","#61a0a8","#d48265","#91c7ae","#749f83","#ca8622","#bda29a","#6e7074","#546570","#c4ccd3"],gradientColor:["#f6efa6","#d88273","#bf444c"],textStyle:{fontFamily:Nu.match(/^Win/)?"Microsoft YaHei":"sans-serif",fontSize:12,fontStyle:"normal",fontWeight:"normal"},blendMode:null,animation:"auto",animationDuration:1e3,animationDurationUpdate:300,animationEasing:"exponentialOut",animationEasingUpdate:"cubicOut",animationThreshold:2e3,progressiveThreshold:3e3,progressive:400,hoverLayerThreshold:3e3,useUTC:!1},Eu=jo();var Ru={clearColorPalette:function(){Eu(this).colorIdx=0,Eu(this).colorNameMap={}},getColorFromPalette:function(t,e,i){var n=Eu(e=e||this),o=n.colorIdx||0,a=n.colorNameMap=n.colorNameMap||{};if(a.hasOwnProperty(t))return a[t];var r=Vo(this.get("color",!0)),s=this.get("colorLayer",!0),l=null!=i&&s?function(t,e){for(var i=t.length,n=0;n<i;n++)if(t[n].length>e)return t[n];return t[i-1]}(s,i):r;if((l=l||r)&&l.length){var u=l[o];return t&&(a[t]=u),n.colorIdx=(o+1)%l.length,u}}},zu="original",Bu="arrayRows",Vu="objectRows",Gu="keyedColumns",Fu="unknown",Wu="typedArray",Hu="column",Zu="row";function Uu(t){this.fromDataset=t.fromDataset,this.data=t.data||(t.sourceFormat===Gu?{}:[]),this.sourceFormat=t.sourceFormat||Fu,this.seriesLayoutBy=t.seriesLayoutBy||Hu,this.dimensionsDefine=t.dimensionsDefine,this.encodeDefine=t.encodeDefine&&Q(t.encodeDefine),this.startIndex=t.startIndex||0,this.dimensionsDetectCount=t.dimensionsDetectCount}Uu.seriesDataToSource=function(t){return new Uu({data:t,sourceFormat:V(t)?Wu:zu,fromDataset:!1})},ra(Uu);var Xu={Must:1,Might:2,Not:3},Yu=jo();function ju(t){var e=t.option,i=e.data,n=V(i)?Wu:zu,o=!1,a=e.seriesLayoutBy,r=e.sourceHeader,s=e.dimensions,l=Qu(t);if(l){var u=l.option;i=u.source,n=Yu(l).sourceFormat,o=!0,a=a||u.seriesLayoutBy,null==r&&(r=u.sourceHeader),s=s||u.dimensions}var h=function(t,e,i,n,o){if(!t)return{dimensionsDefine:qu(o)};var a,r;if(e===Bu)"auto"===n||null==n?Ku(function(t){null!=t&&"-"!==t&&(R(t)?null==r&&(r=1):r=0)},i,t,10):r=n?1:0,o||1!==r||(o=[],Ku(function(t,e){o[e]=null!=t?t:""},i,t)),a=o?o.length:i===Zu?t.length:t[0]?t[0].length:null;else if(e===Vu)o=o||function(t){var e,i=0;for(;i<t.length&&!(e=t[i++]););if(e){var n=[];return E(e,function(t,e){n.push(e)}),n}}(t);else if(e===Gu)o||(o=[],E(t,function(t,e){o.push(e)}));else if(e===zu){var s=Wo(t[0]);a=L(s)&&s.length||1}return{startIndex:r,dimensionsDefine:qu(o),dimensionsDetectCount:a}}(i,n,a,r,s);Yu(t).source=new Uu({data:i,fromDataset:o,seriesLayoutBy:a,sourceFormat:n,dimensionsDefine:h.dimensionsDefine,startIndex:h.startIndex,dimensionsDetectCount:h.dimensionsDetectCount,encodeDefine:e.encode})}function qu(t){if(t){var n=Q();return O(t,function(t,e){if(null==(t=P({},z(t)?t:{name:t})).name)return t;t.name+="",null==t.displayName&&(t.displayName=t.name);var i=n.get(t.name);return i?t.name+="-"+i.count++:n.set(t.name,{count:1}),t})}}function Ku(t,e,i,n){if(null==n&&(n=1/0),e===Zu)for(var o=0;o<i.length&&o<n;o++)t(i[o]?i[o][0]:null,o);else{var a=i[0]||[];for(o=0;o<a.length&&o<n;o++)t(a[o],o)}}function $u(i,t,e){var a={},n=Qu(t);if(!n||!i)return a;var r,o,s=[],l=[],u=t.ecModel,h=Yu(u).datasetMap,c=n.uid+"_"+e.seriesLayoutBy;E(i=i.slice(),function(t,e){z(t)||(i[e]={name:t}),"ordinal"===t.type&&null==r&&(o=p(i[r=e])),a[t.name]=[]});var d=h.get(c)||h.set(c,{categoryWayDim:o,valueWayDim:0});function f(t,e,i){for(var n=0;n<i;n++)t.push(e+n)}function p(t){var e=t.dimsDef;return e?e.length:1}return E(i,function(t,e){var i=t.name,n=p(t);if(null==r){var o=d.valueWayDim;f(a[i],o,n),f(l,o,n),d.valueWayDim+=n}else if(r===e)f(a[i],0,n),f(s,0,n);else{o=d.categoryWayDim;f(a[i],o,n),f(l,o,n),d.categoryWayDim+=n}}),s.length&&(a.itemName=s),l.length&&(a.seriesName=l),a}function Ju(t,l,u){var e={};if(!Qu(t))return e;var h,c=l.sourceFormat,d=l.dimensionsDefine;c!==Vu&&c!==Gu||E(d,function(t,e){"name"===(z(t)?t.name:t)&&(h=e)});var i=function(){for(var t={},e={},i=[],n=0,o=Math.min(5,u);n<o;n++){var a=th(l.data,c,l.seriesLayoutBy,d,l.startIndex,n);i.push(a);var r=a===Xu.Not;if(r&&null==t.v&&n!==h&&(t.v=n),null!=t.n&&t.n!==t.v&&(r||i[t.n]!==Xu.Not)||(t.n=n),s(t)&&i[t.n]!==Xu.Not)return t;r||(a===Xu.Might&&null==e.v&&n!==h&&(e.v=n),null!=e.n&&e.n!==e.v||(e.n=n))}function s(t){return null!=t.v&&null!=t.n}return s(t)?t:s(e)?e:null}();if(i){e.value=i.v;var n=null!=h?h:i.n;e.itemName=[n],e.seriesName=[n]}return e}function Qu(t){var e=t.option;if(!e.data)return t.ecModel.getComponent("dataset",e.datasetIndex||0)}function th(t,e,i,n,o,a){var r,s,l;if(V(t))return Xu.Not;if(n){var u=n[a];z(u)?(s=u.name,l=u.type):R(u)&&(s=u)}if(null!=l)return"ordinal"===l?Xu.Must:Xu.Not;if(e===Bu)if(i===Zu){for(var h=t[a],c=0;c<(h||[]).length&&c<5;c++)if(null!=(r=g(h[o+c])))return r}else for(c=0;c<t.length&&c<5;c++){var d=t[o+c];if(d&&null!=(r=g(d[a])))return r}else if(e===Vu){if(!s)return Xu.Not;for(c=0;c<t.length&&c<5;c++){if((f=t[c])&&null!=(r=g(f[s])))return r}}else if(e===Gu){if(!s)return Xu.Not;if(!(h=t[s])||V(h))return Xu.Not;for(c=0;c<h.length&&c<5;c++)if(null!=(r=g(h[c])))return r}else if(e===zu)for(c=0;c<t.length&&c<5;c++){var f,p=Wo(f=t[c]);if(!L(p))return Xu.Not;if(null!=(r=g(p[a])))return r}function g(t){var e=R(t);return null!=t&&isFinite(t)&&""!==t?e?Xu.Might:Xu.Not:e&&"-"!==t?Xu.Must:void 0}return Xu.Not}var eh="\0_ec_inner",ih=Cl.extend({init:function(t,e,i,n){i=i||{},this.option=null,this._theme=new Cl(i),this._optionManager=n},setOption:function(t,e){Y(!(eh in t),"please use chart.getOption()"),this._optionManager.setOption(t,e),this.resetOption(null)},resetOption:function(t){var e=!1,i=this._optionManager;if(!t||"recreate"===t){var n=i.mountOption("recreate"===t);this.option&&"recreate"!==t?(this.restoreData(),this.mergeOption(n)):function(t){t=t,this.option={},this.option[eh]=1,this._componentsMap=Q({series:[]}),this._seriesIndices,this._seriesIndicesMap,function(i,t){var n=i.color&&!i.colorLayer;E(t,function(t,e){"colorLayer"===e&&n||ku.hasClass(e)||("object"==typeof t?i[e]=i[e]?m(i[e],t,!1):k(t):null==i[e]&&(i[e]=t))})}(t,this._theme.option),m(t,Ou,!1),this.mergeOption(t)}.call(this,n),e=!0}if("timeline"!==t&&"media"!==t||this.restoreData(),!t||"recreate"===t||"timeline"===t){var o=i.getTimelineOption(this);o&&(this.mergeOption(o),e=!0)}if(!t||"recreate"===t||"media"===t){var a=i.getMediaOption(this,this._api);a.length&&E(a,function(t){this.mergeOption(t,e=!0)},this)}return e},mergeOption:function(n){var l=this.option,u=this._componentsMap,i=[];!function(t){Yu(t).datasetMap=Q()}(this),E(n,function(t,e){null!=t&&(ku.hasClass(e)?e&&i.push(e):l[e]=null==l[e]?k(t):m(l[e],t,!0))}),ku.topologicalTravel(i,ku.getAllClassMainTypes(),function(r,t){var e=Vo(n[r]),i=Ho(u.get(r),e);Zo(i),E(i,function(t,e){var i=t.option;z(i)&&(t.keyInfo.mainType=r,t.keyInfo.subType=function(t,e,i){return e.type?e.type:i?i.subType:ku.determineSubType(t,e)}(r,i,t.exist))});var s=function(e,t){L(t)||(t=t?[t]:[]);var i={};return E(t,function(t){i[t]=(e.get(t)||[]).slice()}),i}(u,t);l[r]=[],u.set(r,[]),E(i,function(t,e){var i=t.exist,n=t.option;if(Y(z(n)||i,"Empty component definition"),n){var o=ku.getClass(r,t.keyInfo.subType,!0);if(i&&i.constructor===o)i.name=t.keyInfo.name,i.mergeOption(n,this),i.optionUpdated(n,!1);else{var a=P({dependentModels:s,componentIndex:e},t.keyInfo);P(i=new o(n,this,this,a),a),i.init(n,this,this,a),i.optionUpdated(null,!0)}}else i.mergeOption({},this),i.optionUpdated({},!1);u.get(r)[e]=i,l[r][e]=i.option},this),"series"===r&&nh(this,u.get("series"))},this),this._seriesIndicesMap=Q(this._seriesIndices=this._seriesIndices||[])},getOption:function(){var n=k(this.option);return E(n,function(t,e){if(ku.hasClass(e)){for(var i=(t=Vo(t)).length-1;0<=i;i--)Xo(t[i])&&t.splice(i,1);n[e]=t}}),delete n[eh],n},getTheme:function(){return this._theme},getComponent:function(t,e){var i=this._componentsMap.get(t);if(i)return i[e||0]},queryComponents:function(t){var e=t.mainType;if(!e)return[];var i,n=t.index,o=t.id,a=t.name,r=this._componentsMap.get(e);if(!r||!r.length)return[];if(null!=n)L(n)||(n=[n]),i=M(O(n,function(t){return r[t]}),function(t){return!!t});else if(null!=o){var s=L(o);i=M(r,function(t){return s&&0<=_(o,t.id)||!s&&t.id===o})}else if(null!=a){var l=L(a);i=M(r,function(t){return l&&0<=_(a,t.name)||!l&&t.name===a})}else i=r.slice();return oh(i,t)},findComponents:function(t){var e,i,n,o,a,r=t.query,s=t.mainType,l=(i=s+"Index",n=s+"Id",o=s+"Name",!(e=r)||null==e[i]&&null==e[n]&&null==e[o]?null:{mainType:s,index:e[i],id:e[n],name:e[o]}),u=l?this.queryComponents(l):this._componentsMap.get(s);return a=oh(u,t),t.filter?M(a,t.filter):a},eachComponent:function(t,n,o){var e=this._componentsMap;if("function"==typeof t)o=n,n=t,e.each(function(t,i){E(t,function(t,e){n.call(o,i,t,e)})});else if(R(t))E(e.get(t),n,o);else if(z(t)){E(this.findComponents(t),n,o)}},getSeriesByName:function(e){return M(this._componentsMap.get("series"),function(t){return t.name===e})},getSeriesByIndex:function(t){return this._componentsMap.get("series")[t]},getSeriesByType:function(e){return M(this._componentsMap.get("series"),function(t){return t.subType===e})},getSeries:function(){return this._componentsMap.get("series").slice()},getSeriesCount:function(){return this._componentsMap.get("series").length},eachSeries:function(i,n){E(this._seriesIndices,function(t){var e=this._componentsMap.get("series")[t];i.call(n,e,t)},this)},eachRawSeries:function(t,e){E(this._componentsMap.get("series"),t,e)},eachSeriesByType:function(i,n,o){E(this._seriesIndices,function(t){var e=this._componentsMap.get("series")[t];e.subType===i&&n.call(o,e,t)},this)},eachRawSeriesByType:function(t,e,i){return E(this.getSeriesByType(t),e,i)},isSeriesFiltered:function(t){return null==this._seriesIndicesMap.get(t.componentIndex)},getCurrentSeriesIndices:function(){return(this._seriesIndices||[]).slice()},filterSeries:function(t,e){var i=M(this._componentsMap.get("series"),t,e);nh(this,i)},restoreData:function(i){var n=this._componentsMap;nh(this,n.get("series"));var o=[];n.each(function(t,e){o.push(e)}),ku.topologicalTravel(o,ku.getAllClassMainTypes(),function(e,t){E(n.get(e),function(t){"series"===e&&function(t,e){if(e){var i=e.seiresIndex,n=e.seriesId,o=e.seriesName;return null!=i&&t.componentIndex!==i||null!=n&&t.id!==n||null!=o&&t.name!==o}}(t,i)||t.restoreData()})})}});function nh(t,e){t._seriesIndicesMap=Q(t._seriesIndices=O(e,function(t){return t.componentIndex})||[])}function oh(t,e){return e.hasOwnProperty("subType")?M(t,function(t){return t.subType===e.subType}):t}b(ih,Ru);var ah=["getDom","getZr","getWidth","getHeight","getDevicePixelRatio","dispatchAction","isDisposed","on","off","getDataURL","getConnectedDataURL","getModel","getOption","getViewOfComponentModel","getViewOfSeriesModel"];function rh(e){E(ah,function(t){this[t]=A(e[t],e)},this)}var sh={};function lh(){this._coordinateSystems=[]}lh.prototype={constructor:lh,create:function(n,o){var a=[];E(sh,function(t,e){var i=t.create(n,o);a=a.concat(i||[])}),this._coordinateSystems=a},update:function(e,i){E(this._coordinateSystems,function(t){t.update&&t.update(e,i)})},getCoordinateSystems:function(){return this._coordinateSystems.slice()}},lh.register=function(t,e){sh[t]=e},lh.get=function(t){return sh[t]};var uh=E,hh=k,ch=O,dh=m,fh=/^(min|max)?(.+)$/;function ph(t){this._api=t,this._timelineOptions=[],this._mediaList=[],this._mediaDefault,this._currentMediaIndices=[],this._optionBackup,this._newBaseOption}function gh(t,e,i){var a={width:e,height:i,aspectratio:e/i},r=!0;return E(t,function(t,e){var i=e.match(fh);if(i&&i[1]&&i[2]){var n=i[1],o=i[2].toLowerCase();!function(t,e,i){return"min"===i?e<=t:"max"===i?t<=e:t===e}(a[o],t,n)&&(r=!1)}}),r}ph.prototype={constructor:ph,setOption:function(t,e){t&&E(Vo(t.series),function(t){t&&t.data&&V(t.data)&&K(t.data)}),t=hh(t);var i=this._optionBackup,n=function(t,i,n){var e,o,a=[],r=[],s=t.timeline;t.baseOption&&(o=t.baseOption);(s||t.options)&&(o=o||{},a=(t.options||[]).slice());if(t.media){o=o||{};var l=t.media;uh(l,function(t){t&&t.option&&(t.query?r.push(t):e=e||t)})}o=o||t;o.timeline||(o.timeline=s);return uh([o].concat(a).concat(O(r,function(t){return t.option})),function(e){uh(i,function(t){t(e,n)})}),{baseOption:o,timelineOptions:a,mediaDefault:e,mediaList:r}}.call(this,t,e,!i);this._newBaseOption=n.baseOption,i?(function(o,t){uh(t=t||{},function(t,e){if(null!=t){var i=o[e];if(ku.hasClass(e)){t=Vo(t);var n=Ho(i=Vo(i),t);o[e]=ch(n,function(t){return t.option&&t.exist?dh(t.exist,t.option,!0):t.exist||t.option})}else o[e]=dh(i,t,!0)}})}(i.baseOption,n.baseOption),n.timelineOptions.length&&(i.timelineOptions=n.timelineOptions),n.mediaList.length&&(i.mediaList=n.mediaList),n.mediaDefault&&(i.mediaDefault=n.mediaDefault)):this._optionBackup=n},mountOption:function(t){var e=this._optionBackup;return this._timelineOptions=ch(e.timelineOptions,hh),this._mediaList=ch(e.mediaList,hh),this._mediaDefault=hh(e.mediaDefault),this._currentMediaIndices=[],hh(t?e.baseOption:this._newBaseOption)},getTimelineOption:function(t){var e,i=this._timelineOptions;if(i.length){var n=t.getComponent("timeline");n&&(e=hh(i[n.getCurrentIndex()],!0))}return e},getMediaOption:function(t){var e=this._api.getWidth(),i=this._api.getHeight(),n=this._mediaList,o=this._mediaDefault,a=[],r=[];if(!n.length&&!o)return r;for(var s=0,l=n.length;s<l;s++)gh(n[s].query,e,i)&&a.push(s);return!a.length&&o&&(a=[-1]),a.length&&!function(t,e){return t.join(",")===e.join(",")}(a,this._currentMediaIndices)&&(r=ch(a,function(t){return hh(-1===t?o.option:n[t].option)})),this._currentMediaIndices=a,r}};var mh=E,vh=z,yh=["areaStyle","lineStyle","nodeStyle","linkStyle","chordStyle","label","labelLine"];function xh(t){var e=t&&t.itemStyle;if(e)for(var i=0,n=yh.length;i<n;i++){var o=yh[i],a=e.normal,r=e.emphasis;a&&a[o]&&(t[o]=t[o]||{},t[o].normal?m(t[o].normal,a[o]):t[o].normal=a[o],a[o]=null),r&&r[o]&&(t[o]=t[o]||{},t[o].emphasis?m(t[o].emphasis,r[o]):t[o].emphasis=r[o],r[o]=null)}}function _h(t,e,i){if(t&&t[e]&&(t[e].normal||t[e].emphasis)){var n=t[e].normal,o=t[e].emphasis;n&&(i?(t[e].normal=t[e].emphasis=null,D(t[e],n)):t[e]=n),o&&(t.emphasis=t.emphasis||{},t.emphasis[e]=o)}}function wh(t){_h(t,"itemStyle"),_h(t,"lineStyle"),_h(t,"areaStyle"),_h(t,"label"),_h(t,"labelLine"),_h(t,"upperLabel"),_h(t,"edgeLabel")}function bh(t,e){var i=vh(t)&&t[e],n=vh(i)&&i.textStyle;if(n)for(var o=0,a=Fo.length;o<a;o++){e=Fo[o];n.hasOwnProperty(e)&&(i[e]=n[e])}}function Sh(t){t&&(wh(t),bh(t,"label"),t.emphasis&&bh(t.emphasis,"label"))}function Mh(t){return L(t)?t:t?[t]:[]}function Ih(t){return(L(t)?t[0]:t)||{}}function Th(e,t){mh(Mh(e.series),function(t){vh(t)&&function(t){if(vh(t)){xh(t),wh(t),bh(t,"label"),bh(t,"upperLabel"),bh(t,"edgeLabel"),t.emphasis&&(bh(t.emphasis,"label"),bh(t.emphasis,"upperLabel"),bh(t.emphasis,"edgeLabel")),(i=t.markPoint)&&(xh(i),Sh(i)),(n=t.markLine)&&(xh(n),Sh(n));var e=t.markArea;e&&Sh(e);var i,n,o=t.data;if("graph"===t.type){o=o||t.nodes;var a=t.links||t.edges;if(a&&!V(a))for(var r=0;r<a.length;r++)Sh(a[r]);E(t.categories,function(t){wh(t)})}if(o&&!V(o))for(r=0;r<o.length;r++)Sh(o[r]);if((i=t.markPoint)&&i.data){var s=i.data;for(r=0;r<s.length;r++)Sh(s[r])}if((n=t.markLine)&&n.data){var l=n.data;for(r=0;r<l.length;r++)L(l[r])?(Sh(l[r][0]),Sh(l[r][1])):Sh(l[r])}"gauge"===t.type?(bh(t,"axisLabel"),bh(t,"title"),bh(t,"detail")):"treemap"===t.type?(_h(t.breadcrumb,"itemStyle"),E(t.levels,function(t){wh(t)})):"tree"===t.type&&wh(t.leaves)}}(t)});var i=["xAxis","yAxis","radiusAxis","angleAxis","singleAxis","parallelAxis","radar"];t&&i.push("valueAxis","categoryAxis","logAxis","timeAxis"),mh(i,function(t){mh(Mh(e[t]),function(t){t&&(bh(t,"axisLabel"),bh(t.axisPointer,"label"))})}),mh(Mh(e.parallel),function(t){var e=t&&t.parallelAxisDefault;bh(e,"axisLabel"),bh(e&&e.axisPointer,"label")}),mh(Mh(e.calendar),function(t){_h(t,"itemStyle"),bh(t,"dayLabel"),bh(t,"monthLabel"),bh(t,"yearLabel")}),mh(Mh(e.radar),function(t){bh(t,"name")}),mh(Mh(e.geo),function(t){vh(t)&&(Sh(t),mh(Mh(t.regions),function(t){Sh(t)}))}),mh(Mh(e.timeline),function(t){Sh(t),_h(t,"label"),_h(t,"itemStyle"),_h(t,"controlStyle",!0);var e=t.data;L(e)&&E(e,function(t){z(t)&&(_h(t,"label"),_h(t,"itemStyle"))})}),mh(Mh(e.toolbox),function(t){_h(t,"iconStyle"),mh(t.feature,function(t){_h(t,"iconStyle")})}),bh(Ih(e.axisPointer),"label"),bh(Ih(e.tooltip).axisPointer,"label")}function Ah(e){E(Dh,function(t){t[0]in e&&!(t[1]in e)&&(e[t[1]]=e[t[0]])})}var Dh=[["x","left"],["y","top"],["x2","right"],["y2","bottom"]],Ch=["grid","geo","parallel","legend","toolbox","title","visualMap","dataZoom","timeline"],Lh=function(i,t){Th(i,t),i.series=Vo(i.series),E(i.series,function(t){if(z(t)){var e=t.type;if("line"===e)null!=t.clipOverflow&&(t.clip=t.clipOverflow);else if("pie"===e||"gauge"===e)null!=t.clockWise&&(t.clockwise=t.clockWise);else if("gauge"===e){var i=function(t,e){e=e.split(",");for(var i=t,n=0;n<e.length&&null!=(i=i&&i[e[n]]);n++);return i}(t,"pointer.color");null!=i&&function(t,e,i,n){e=e.split(",");for(var o,a=t,r=0;r<e.length-1;r++)null==a[o=e[r]]&&(a[o]={}),a=a[o];!n&&null!=a[e[r]]||(a[e[r]]=i)}(t,"itemStyle.color",i)}Ah(t)}}),i.dataRange&&(i.visualMap=i.dataRange),E(Ch,function(t){var e=i[t];e&&(L(e)||(e=[e]),E(e,function(t){Ah(t)}))})};function kh(m){E(m,function(h,c){var d=[],f=[NaN,NaN],t=[h.stackResultDimension,h.stackedOverDimension],p=h.data,g=h.isStackedByIndex,e=p.map(t,function(t,e,i){var n,o,a=p.get(h.stackedDimension,i);if(isNaN(a))return f;g?o=p.getRawIndex(i):n=p.get(h.stackedByDimension,i);for(var r=NaN,s=c-1;0<=s;s--){var l=m[s];if(g||(o=l.data.rawIndexOf(l.stackedByDimension,n)),0<=o){var u=l.data.getByRawIndex(l.stackResultDimension,o);if(0<=a&&0<u||a<=0&&u<0){a+=u,r=u;break}}}return d[0]=a,d[1]=r,d});p.hostModel.setData(e),h.data=e})}function Ph(t,e){Uu.isInstance(t)||(t=Uu.seriesDataToSource(t)),this._source=t;var i=this._data=t.data,n=t.sourceFormat;n===Wu&&(this._offset=0,this._dimSize=e,this._data=i),P(this,Oh[n===Bu?n+"_"+t.seriesLayoutBy:n])}var Nh=Ph.prototype;Nh.pure=!1;var Oh={arrayRows_column:{pure:Nh.persistent=!0,count:function(){return Math.max(0,this._data.length-this._source.startIndex)},getItem:function(t){return this._data[t+this._source.startIndex]},appendData:zh},arrayRows_row:{pure:!0,count:function(){var t=this._data[0];return t?Math.max(0,t.length-this._source.startIndex):0},getItem:function(t){t+=this._source.startIndex;for(var e=[],i=this._data,n=0;n<i.length;n++){var o=i[n];e.push(o?o[t]:null)}return e},appendData:function(){throw new Error('Do not support appendData when set seriesLayoutBy: "row".')}},objectRows:{pure:!0,count:Eh,getItem:Rh,appendData:zh},keyedColumns:{pure:!0,count:function(){var t=this._source.dimensionsDefine[0].name,e=this._data[t];return e?e.length:0},getItem:function(t){for(var e=[],i=this._source.dimensionsDefine,n=0;n<i.length;n++){var o=this._data[i[n].name];e.push(o?o[t]:null)}return e},appendData:function(t){var o=this._data;E(t,function(t,e){for(var i=o[e]||(o[e]=[]),n=0;n<(t||[]).length;n++)i.push(t[n])})}},original:{count:Eh,getItem:Rh,appendData:zh},typedArray:{persistent:!(Nh.getSource=function(){return this._source}),pure:!0,count:function(){return this._data?this._data.length/this._dimSize:0},getItem:function(t,e){t-=this._offset,e=e||[];for(var i=this._dimSize*t,n=0;n<this._dimSize;n++)e[n]=this._data[i+n];return e},appendData:function(t){this._data=t},clean:function(){this._offset+=this.count(),this._data=null}}};function Eh(){return this._data.length}function Rh(t){return this._data[t]}function zh(t){for(var e=0;e<t.length;e++)this._data.push(t[e])}var Bh={arrayRows:Vh,objectRows:function(t,e,i,n){return null!=i?t[n]:t},keyedColumns:Vh,original:function(t,e,i,n){var o=Wo(t);return null!=i&&o instanceof Array?o[i]:o},typedArray:Vh};function Vh(t,e,i,n){return null!=i?t[i]:t}var Gh={arrayRows:Fh,objectRows:function(t,e,i,n){return Wh(t[e],this._dimensionInfos[e])},keyedColumns:Fh,original:function(t,e,i,n){var o=t&&(null==t.value?t:t.value);return!this._rawData.pure&&function(t){return Ro(t)&&!(t instanceof Array)}(t)&&(this.hasItemOption=!0),Wh(o instanceof Array?o[n]:o,this._dimensionInfos[e])},typedArray:function(t,e,i,n){return t[n]}};function Fh(t,e,i,n){return Wh(t[n],this._dimensionInfos[e])}function Wh(t,e){var i=e&&e.type;if("ordinal"!==i)return"time"===i&&"number"!=typeof t&&null!=t&&"-"!==t&&(t=+Yl(t)),null==t||""===t?NaN:+t;var n=e&&e.ordinalMeta;return n?n.parseAndCollect(t):t}function Hh(t,e,i){if(t){var n=t.getRawDataItem(e);if(null!=n){var o,a,r=t.getProvider().getSource().sourceFormat,s=t.getDimensionInfo(i);return s&&(o=s.name,a=s.index),Bh[r](n,e,a,o)}}}function Zh(t,e,i){if(t){var n=t.getProvider().getSource().sourceFormat;if(n===zu||n===Vu){var o=t.getRawDataItem(e);return n!==zu||z(o)||(o=null),o?o[i]:void 0}}}var Uh=/\{@(.+?)\}/g,Xh={getDataParams:function(t,e){var i=this.getData(e),n=this.getRawValue(t,e),o=i.getRawIndex(t),a=i.getName(t),r=i.getRawDataItem(t),s=i.getItemVisual(t,"color"),l=i.getItemVisual(t,"borderColor"),u=this.ecModel.getComponent("tooltip"),h=Qo(u&&u.get("renderMode")),c=this.mainType,d="series"===c,f=i.userOutput;return{componentType:c,componentSubType:this.subType,componentIndex:this.componentIndex,seriesType:d?this.subType:null,seriesIndex:this.seriesIndex,seriesId:d?this.id:null,seriesName:d?this.name:null,name:a,dataIndex:o,data:r,dataType:e,value:n,color:s,borderColor:l,dimensionNames:f?f.dimensionNames:null,encode:f?f.encode:null,marker:hu({color:s,renderMode:h}),$vars:["seriesName","name","value"]}},getFormattedLabel:function(n,t,e,i,o){t=t||"normal";var a=this.getData(e),r=a.getItemModel(n),s=this.getDataParams(n,e);null!=i&&s.value instanceof Array&&(s.value=s.value[i]);var l=r.get("normal"===t?[o||"label","formatter"]:[t,o||"label","formatter"]);return"function"==typeof l?(s.status=t,s.dimensionIndex=i,l(s)):"string"==typeof l?lu(l,s).replace(Uh,function(t,e){var i=e.length;return"["===e.charAt(0)&&"]"===e.charAt(i-1)&&(e=+e.slice(1,i-1)),Hh(a,n,e)}):void 0},getRawValue:function(t,e){return Hh(this.getData(e),t)},formatTooltip:function(){}};function Yh(t){return new jh(t)}function jh(t){t=t||{},this._reset=t.reset,this._plan=t.plan,this._count=t.count,this._onDirty=t.onDirty,this._dirty=!0,this.context}var qh=jh.prototype;qh.perform=function(t){var e,i=this._upstream,n=t&&t.skip;if(this._dirty&&i){var o=this.context;o.data=o.outputData=i.context.outputData}this.__pipeline&&(this.__pipeline.currentTask=this),this._plan&&!n&&(e=this._plan(this.context));var a,r=h(this._modBy),s=this._modDataCount||0,l=h(t&&t.modBy),u=t&&t.modDataCount||0;function h(t){return 1<=t||(t=1),t}r===l&&s===u||(e="reset"),!this._dirty&&"reset"!==e||(this._dirty=!1,a=function(t,e){var i,n;t._dueIndex=t._outputDueEnd=t._dueEnd=0,t._settedOutputEnd=null,!e&&t._reset&&((i=t._reset(t.context))&&i.progress&&(n=i.forceFirstProgress,i=i.progress),L(i)&&!i.length&&(i=null));t._progress=i,t._modBy=t._modDataCount=null;var o=t._downstream;return o&&o.dirty(),n}(this,n)),this._modBy=l,this._modDataCount=u;var c=t&&t.step;if(this._dueEnd=i?i._outputDueEnd:this._count?this._count(this.context):1/0,this._progress){var d=this._dueIndex,f=Math.min(null!=c?this._dueIndex+c:1/0,this._dueEnd);if(!n&&(a||d<f)){var p=this._progress;if(L(p))for(var g=0;g<p.length;g++)ac(this,p[g],d,f,l,u);else ac(this,p,d,f,l,u)}this._dueIndex=f;var m=null!=this._settedOutputEnd?this._settedOutputEnd:f;this._outputDueEnd=m}else this._dueIndex=this._outputDueEnd=null!=this._settedOutputEnd?this._settedOutputEnd:this._dueEnd;return this.unfinished()};var Kh,$h,Jh,Qh,tc,ec,ic=ec={reset:function(t,e,i,n){$h=t,Kh=e,Jh=i,Qh=n,tc=Math.ceil(Qh/Jh),ec.next=1<Jh&&0<Qh?oc:nc}};function nc(){return $h<Kh?$h++:null}function oc(){var t=$h%tc*Jh+Math.ceil($h/tc),e=Kh<=$h?null:t<Qh?t:$h;return $h++,e}function ac(t,e,i,n,o,a){ic.reset(i,n,o,a),t._callingProgress=e,t._callingProgress({start:i,end:n,count:n-i,next:ic.next},t.context)}qh.dirty=function(){this._dirty=!0,this._onDirty&&this._onDirty(this.context)},qh.unfinished=function(){return this._progress&&this._dueIndex<this._dueEnd},qh.pipe=function(t){this._downstream===t&&!this._dirty||((this._downstream=t)._upstream=this,t.dirty())},qh.dispose=function(){this._disposed||(this._upstream&&(this._upstream._downstream=null),this._downstream&&(this._downstream._upstream=null),this._dirty=!1,this._disposed=!0)},qh.getUpstream=function(){return this._upstream},qh.getDownstream=function(){return this._downstream},qh.setOutputEnd=function(t){this._outputDueEnd=this._settedOutputEnd=t};var rc=jo(),sc=ku.extend({type:"series.__base__",seriesIndex:0,coordinateSystem:null,defaultOption:null,legendVisualProvider:null,visualColorAccessPath:"itemStyle.color",visualBorderColorAccessPath:"itemStyle.borderColor",layoutMode:null,init:function(t,e,i,n){this.seriesIndex=this.componentIndex,this.dataTask=Yh({count:uc,reset:hc}),this.dataTask.context={model:this},this.mergeDefaultAndTheme(t,i),ju(this);var o=this.getInitialData(t,i);dc(o,this),this.dataTask.context.data=o,rc(this).dataBeforeProcessed=o,lc(this)},mergeDefaultAndTheme:function(t,e){var i=this.layoutMode,n=i?Iu(t):{},o=this.subType;ku.hasClass(o)&&(o+="Series"),m(t,e.getTheme().get(this.subType)),m(t,this.getDefaultOption()),Go(t,"label",["show"]),this.fillDataTextStyle(t.data),i&&Mu(t,n,i)},mergeOption:function(t,e){t=m(this.option,t,!0),this.fillDataTextStyle(t.data);var i=this.layoutMode;i&&Mu(this.option,t,i),ju(this);var n=this.getInitialData(t,e);dc(n,this),this.dataTask.dirty(),this.dataTask.context.data=n,rc(this).dataBeforeProcessed=n,lc(this)},fillDataTextStyle:function(t){if(t&&!V(t))for(var e=["show"],i=0;i<t.length;i++)t[i]&&t[i].label&&Go(t[i],"label",e)},getInitialData:function(){},appendData:function(t){this.getRawData().appendData(t.data)},getData:function(t){var e=pc(this);if(e){var i=e.context.data;return null==t?i:i.getLinkedData(t)}return rc(this).data},setData:function(t){var e=pc(this);if(e){var i=e.context;i.data!==t&&e.modifyOutputEnd&&e.setOutputEnd(t.count()),i.outputData=t,e!==this.dataTask&&(i.data=t)}rc(this).data=t},getSource:function(){return function(t){return Yu(t).source}(this)},getRawData:function(){return rc(this).dataBeforeProcessed},getBaseAxis:function(){var t=this.coordinateSystem;return t&&t.getBaseAxis&&t.getBaseAxis()},formatTooltip:function(o,h,t,c){var d=this,e="html"===(c=c||"html")?"<br/>":"\n",f="richText"===c,p={},g=0;function i(t){return{renderMode:c,content:au(tu(t)),style:p}}var m=this.getData(),a=m.mapDimension("defaultedTooltip",!0),n=a.length,r=this.getRawValue(o),s=L(r),v=m.getItemVisual(o,"color");z(v)&&v.colorStops&&(v=(v.colorStops[0]||{}).color),v=v||"transparent";var l=(1<n||s&&!n?function(t){var l=S(t,function(t,e,i){var n=m.getDimensionInfo(i);return t|(n&&!1!==n.tooltip&&null!=n.displayName)},0),u=[];function e(t,e){var i=m.getDimensionInfo(e);if(i&&!1!==i.otherDims.tooltip){var n=i.type,o="sub"+d.seriesIndex+"at"+g,a=hu({color:v,type:"subItem",renderMode:c,markerId:o}),r="string"==typeof a?a:a.content,s=(l?r+au(i.displayName||"-")+": ":"")+au("ordinal"===n?t+"":"time"===n?h?"":du("yyyy/MM/dd hh:mm:ss",t):tu(t));s&&u.push(s),f&&(p[o]=v,++g)}}a.length?E(a,function(t){e(Hh(m,o,t),t)}):E(t,e);var i=l?f?"\n":"<br/>":"",n=i+u.join(i||", ");return{renderMode:c,content:n,style:p}}(r):i(n?Hh(m,o,a[0]):s?r[0]:r)).content,u=d.seriesIndex+"at"+g,y=hu({color:v,type:"item",renderMode:c,markerId:u});p[u]=v,++g;var x=m.getName(o),_=this.name;Uo(this)||(_=""),_=_?au(_)+(h?": ":e):"";var w="string"==typeof y?y:y.content;return{html:h?w+_+l:_+w+(x?au(x)+": "+l:l),markers:p}},isAnimationEnabled:function(){if(v.node)return!1;var t=this.getShallow("animation");return t&&this.getData().count()>this.getShallow("animationThreshold")&&(t=!1),t},restoreData:function(){this.dataTask.dirty()},getColorFromPalette:function(t,e,i){var n=this.ecModel,o=Ru.getColorFromPalette.call(this,t,e,i);return o=o||n.getColorFromPalette(t,e,i)},coordDimToDataDim:function(t){return this.getRawData().mapDimension(t,!0)},getProgressive:function(){return this.get("progressive")},getProgressiveThreshold:function(){return this.get("progressiveThreshold")},getAxisTooltipData:null,getTooltipPosition:null,pipeTask:null,preventIncremental:null,pipelineContext:null});function lc(t){var e=t.name;Uo(t)||(t.name=function(t){var i=t.getRawData(),e=i.mapDimension("seriesName",!0),n=[];return E(e,function(t){var e=i.getDimensionInfo(t);e.displayName&&n.push(e.displayName)}),n.join(" ")}(t)||e)}function uc(t){return t.model.getRawData().count()}function hc(t){var e=t.model;return e.setData(e.getRawData().cloneShallow()),cc}function cc(t,e){e.outputData&&t.end>e.outputData.count()&&e.model.getRawData().cloneShallow(e.outputData)}function dc(e,i){E(e.CHANGABLE_METHODS,function(t){e.wrapMethod(t,T(fc,i))})}function fc(t){var e=pc(t);e&&e.setOutputEnd(this.count())}function pc(t){var e=(t.ecModel||{}).scheduler,i=e&&e.getPipeline(t.uid);if(i){var n=i.currentTask;if(n){var o=n.agentStubMap;o&&(n=o.get(t.uid))}return n}}b(sc,Xh),b(sc,Ru);var gc=function(){this.group=new Ci,this.uid=Nl("viewComponent")};gc.prototype={constructor:gc,init:function(t,e){},render:function(t,e,i,n){},dispose:function(){},filterForExposedEvent:null};var mc=gc.prototype;mc.updateView=mc.updateLayout=mc.updateVisual=function(t,e,i,n){},oa(gc),ua(gc,{registerWhenExtend:!0});function vc(){var s=jo();return function(t){var e=s(t),i=t.pipelineContext,n=e.large,o=e.progressiveRender,a=e.large=i&&i.large,r=e.progressiveRender=i&&i.progressiveRender;return!!(n^a||o^r)&&"reset"}}var yc=jo(),xc=vc();function _c(){this.group=new Ci,this.uid=Nl("viewChart"),this.renderTask=Yh({plan:Mc,reset:Ic}),this.renderTask.context={view:this}}var wc=_c.prototype={type:"chart",init:function(t,e){},render:function(t,e,i,n){},highlight:function(t,e,i,n){Sc(t.getData(),n,"emphasis")},downplay:function(t,e,i,n){Sc(t.getData(),n,"normal")},remove:function(t,e){this.group.removeAll()},dispose:function(){},incrementalPrepareRender:null,incrementalRender:null,updateTransform:null,filterForExposedEvent:null};function bc(t,e,i){if(t&&(t.trigger(e,i),t.isGroup&&!Qs(t)))for(var n=0,o=t.childCount();n<o;n++)bc(t.childAt(n),e,i)}function Sc(e,t,i){var n=Yo(e,t),o=t&&null!=t.highlightKey?tl(t.highlightKey):null;null!=n?E(Vo(n),function(t){bc(e.getItemGraphicEl(t),i,o)}):e.eachItemGraphicEl(function(t){bc(t,i,o)})}function Mc(t){return xc(t.model)}function Ic(t){var e=t.model,i=t.ecModel,n=t.api,o=t.payload,a=e.pipelineContext.progressiveRender,r=t.view,s=o&&yc(o).updateMethod,l=a?"incrementalPrepareRender":s&&r[s]?s:"render";return"render"!==l&&r[l](e,i,n,o),Tc[l]}wc.updateView=wc.updateLayout=wc.updateVisual=function(t,e,i,n){this.render(t,e,i,n)},oa(_c),ua(_c,{registerWhenExtend:!0}),_c.markUpdateMethod=function(t,e){yc(t).updateMethod=e};var Tc={incrementalPrepareRender:{progress:function(t,e){e.view.incrementalRender(t,e.model,e.ecModel,e.api,e.payload)}},render:{forceFirstProgress:!0,progress:function(t,e){e.view.render(e.model,e.ecModel,e.api,e.payload)}}},Ac="\0__throttleOriginMethod",Dc="\0__throttleRate",Cc="\0__throttleType";function Lc(t,i,n){var o,a,r,s,l,u=0,h=0,c=null;function d(){h=(new Date).getTime(),c=null,t.apply(r,s||[])}i=i||0;function e(){o=(new Date).getTime(),r=this,s=arguments;var t=l||i,e=l||n;l=null,a=o-(e?u:h)-t,clearTimeout(c),e?c=setTimeout(d,t):0<=a?d():c=setTimeout(d,-a),u=o}return e.clear=function(){c&&(clearTimeout(c),c=null)},e.debounceNextCall=function(t){l=t},e}function kc(t,e,i,n){var o=t[e];if(o){var a=o[Ac]||o,r=o[Cc];if(o[Dc]!==i||r!==n){if(null==i||!n)return t[e]=a;(o=t[e]=Lc(a,i,"debounce"===n))[Ac]=a,o[Cc]=n,o[Dc]=i}return o}}function Pc(t,e){var i=t[e];i&&i[Ac]&&(t[e]=i[Ac])}var Nc={createOnAllSeries:!0,performRawSeries:!0,reset:function(e,t){var i=e.getData(),a=(e.visualColorAccessPath||"itemStyle.color").split("."),n=e.get(a),o=!C(n)||n instanceof cs?null:n;n&&!o||(n=e.getColorFromPalette(e.name,null,t.getSeriesCount())),i.setVisual("color",n);var r=(e.visualBorderColorAccessPath||"itemStyle.borderColor").split("."),s=e.get(r);if(i.setVisual("borderColor",s),!t.isSeriesFiltered(e)){o&&i.each(function(t){i.setItemVisual(t,"color",o(e.getDataParams(t)))});return{dataEach:i.hasItemOption?function(t,e){var i=t.getItemModel(e),n=i.get(a,!0),o=i.get(r,!0);null!=n&&t.setItemVisual(e,"color",n),null!=o&&t.setItemVisual(e,"borderColor",o)}:null}}}},Oc={legend:{selector:{all:"全选",inverse:"反选"}},toolbox:{brush:{title:{rect:"矩形选择",polygon:"圈选",lineX:"横向选择",lineY:"纵向选择",keep:"保持选择",clear:"清除选择"}},dataView:{title:"数据视图",lang:["数据视图","关闭","刷新"]},dataZoom:{title:{zoom:"区域缩放",back:"区域缩放还原"}},magicType:{title:{line:"切换为折线图",bar:"切换为柱状图",stack:"切换为堆叠",tiled:"切换为平铺"}},restore:{title:"还原"},saveAsImage:{title:"保存为图片",lang:["右键另存为图片"]}},series:{typeNames:{pie:"饼图",bar:"柱状图",line:"折线图",scatter:"散点图",effectScatter:"涟漪散点图",radar:"雷达图",tree:"树图",treemap:"矩形树图",boxplot:"箱型图",candlestick:"K线图",k:"K线图",heatmap:"热力图",map:"地图",parallel:"平行坐标图",lines:"线图",graph:"关系图",sankey:"桑基图",funnel:"漏斗图",gauge:"仪表盘图",pictorialBar:"象形柱图",themeRiver:"主题河流图",sunburst:"旭日图"}},aria:{general:{withTitle:"这是一个关于“{title}”的图表。",withoutTitle:"这是一个图表,"},series:{single:{prefix:"",withName:"图表类型是{seriesType},表示{seriesName}。",withoutName:"图表类型是{seriesType}。"},multiple:{prefix:"它由{seriesCount}个图表系列组成。",withName:"第{seriesId}个系列是一个表示{seriesName}的{seriesType},",withoutName:"第{seriesId}个系列是一个{seriesType},",separator:{middle:";",end:"。"}}},data:{allData:"其数据是——",partialData:"其中,前{displayCnt}项是——",withName:"{name}的数据是{value}",withoutName:"{value}",separator:{middle:",",end:""}}}},Ec=function(t,e){var a=e.getModel("aria");if(a.get("show"))if(a.get("description"))t.setAttribute("aria-label",a.get("description"));else{var h=0;e.eachSeries(function(t,e){++h},this);var i,c=a.get("data.maxCount")||10,n=a.get("series.maxCount")||10,d=Math.min(h,n);if(!(h<1)){var o=function(){var t=e.getModel("title").option;t&&t.length&&(t=t[0]);return t&&t.text}();i=o?p(g("general.withTitle"),{title:o}):g("general.withoutTitle");var f=[];i+=p(g(1<h?"series.multiple.prefix":"series.single.prefix"),{seriesCount:h}),e.eachSeries(function(t,e){if(e<d){var i,n=t.get("name"),o="series."+(1<h?"multiple":"single")+".";i=p(i=g(n?o+"withName":o+"withoutName"),{seriesId:t.seriesIndex,seriesName:t.get("name"),seriesType:function(t){return Oc.series.typeNames[t]||"自定义图"}(t.subType)});var a=t.getData();(window.data=a).count()>c?i+=p(g("data.partialData"),{displayCnt:c}):i+=g("data.allData");for(var r=[],s=0;s<a.count();s++)if(s<c){var l=a.getName(s),u=Hh(a,s);r.push(p(g(l?"data.withName":"data.withoutName"),{name:l,value:u}))}i+=r.join(g("data.separator.middle"))+g("data.separator.end"),f.push(i)}}),i+=f.join(g("series.multiple.separator.middle"))+g("series.multiple.separator.end"),t.setAttribute("aria-label",i)}}function p(t,e){if("string"!=typeof t)return t;var i=t;return E(e,function(t,e){i=i.replace(new RegExp("\\{\\s*"+e+"\\s*\\}","g"),t)}),i}function g(t){var e=a.get(t);if(null!=e)return e;for(var i=t.split("."),n=Oc.aria,o=0;o<i.length;++o)n=n[i[o]];return n}},Rc=Math.PI;function zc(t,e,i,n){this.ecInstance=t,this.api=e,this.unfinished;i=this._dataProcessorHandlers=i.slice(),n=this._visualHandlers=n.slice();this._allHandlers=i.concat(n),this._stageTaskMap=Q()}var Bc=zc.prototype;function Vc(l,t,u,h,c){var d;function f(t,e){return t.setDirty&&(!t.dirtyMap||t.dirtyMap.get(e.__pipeline.id))}c=c||{},E(t,function(n,t){if(!c.visualType||c.visualType===n.visualType){var e=l._stageTaskMap.get(n.uid),i=e.seriesTaskMap,o=e.overallTask;if(o){var a,r=o.agentStubMap;r.each(function(t){f(c,t)&&(t.dirty(),a=!0)}),a&&o.dirty(),Gc(o,h);var s=l.getPerformArgs(o,c.block);r.each(function(t){t.perform(s)}),d|=o.perform(s)}else i&&i.each(function(t,e){f(c,t)&&t.dirty();var i=l.getPerformArgs(t,c.block);i.skip=!n.performRawSeries&&u.isSeriesFiltered(t.context.model),Gc(t,h),d|=t.perform(i)})}}),l.unfinished|=d}Bc.restoreData=function(t,e){t.restoreData(e),this._stageTaskMap.each(function(t){var e=t.overallTask;e&&e.dirty()})},Bc.getPerformArgs=function(t,e){if(t.__pipeline){var i=this._pipelineMap.get(t.__pipeline.id),n=i.context,o=!e&&i.progressiveEnabled&&(!n||n.progressiveRender)&&t.__idxInPipeline>i.blockIndex?i.step:null,a=n&&n.modDataCount;return{step:o,modBy:null!=a?Math.ceil(a/o):null,modDataCount:a}}},Bc.getPipeline=function(t){return this._pipelineMap.get(t)},Bc.updateStreamModes=function(t,e){var i=this._pipelineMap.get(t.uid),n=t.getData().count(),o=i.progressiveEnabled&&e.incrementalPrepareRender&&n>=i.threshold,a=t.get("large")&&n>=t.get("largeThreshold"),r="mod"===t.get("progressiveChunkMode")?n:null;t.pipelineContext=i.context={progressiveRender:o,modDataCount:r,large:a}},Bc.restorePipelines=function(t){var n=this,o=n._pipelineMap=Q();t.eachSeries(function(t){var e=t.getProgressive(),i=t.uid;o.set(i,{id:i,head:null,tail:null,threshold:t.getProgressiveThreshold(),progressiveEnabled:e&&!(t.preventIncremental&&t.preventIncremental()),blockIndex:-1,step:Math.round(e||700),count:0}),Kc(n,t,t.dataTask)})},Bc.prepareStageTasks=function(){var i=this._stageTaskMap,n=this.ecInstance.getModel(),o=this.api;E(this._allHandlers,function(t){var e=i.get(t.uid)||i.set(t.uid,[]);t.reset&&function(n,o,t,a,r){var s=t.seriesTaskMap||(t.seriesTaskMap=Q()),e=o.seriesType,i=o.getTargetSeries;o.createOnAllSeries?a.eachRawSeries(l):e?a.eachRawSeriesByType(e,l):i&&i(a,r).each(l);function l(t){var e=t.uid,i=s.get(e)||s.set(e,Yh({plan:Uc,reset:Xc,count:qc}));i.context={model:t,ecModel:a,api:r,useClearVisual:o.isVisual&&!o.isLayout,plan:o.plan,reset:o.reset,scheduler:n},Kc(n,t,i)}var u=n._pipelineMap;s.each(function(t,e){u.get(e)||(t.dispose(),s.removeKey(e))})}(this,t,e,n,o),t.overallReset&&function(n,t,e,i,o){var a=e.overallTask=e.overallTask||Yh({reset:Fc});a.context={ecModel:i,api:o,overallReset:t.overallReset,scheduler:n};var r=a.agentStubMap=a.agentStubMap||Q(),s=t.seriesType,l=t.getTargetSeries,u=!0,h=t.modifyOutputEnd;s?i.eachRawSeriesByType(s,c):l?l(i,o).each(c):(u=!1,E(i.getSeries(),c));function c(t){var e=t.uid,i=r.get(e);i||(i=r.set(e,Yh({reset:Wc,onDirty:Zc})),a.dirty()),i.context={model:t,overallProgress:u,modifyOutputEnd:h},i.agent=a,i.__block=u,Kc(n,t,i)}var d=n._pipelineMap;r.each(function(t,e){d.get(e)||(t.dispose(),a.dirty(),r.removeKey(e))})}(this,t,e,n,o)},this)},Bc.prepareView=function(t,e,i,n){var o=t.renderTask,a=o.context;a.model=e,a.ecModel=i,a.api=n,o.__block=!t.incrementalPrepareRender,Kc(this,e,o)},Bc.performDataProcessorTasks=function(t,e){Vc(this,this._dataProcessorHandlers,t,e,{block:!0})},Bc.performVisualTasks=function(t,e,i){Vc(this,this._visualHandlers,t,e,i)},Bc.performSeriesTasks=function(t){var e;t.eachSeries(function(t){e|=t.dataTask.perform()}),this.unfinished|=e},Bc.plan=function(){this._pipelineMap.each(function(t){var e=t.tail;do{if(e.__block){t.blockIndex=e.__idxInPipeline;break}e=e.getUpstream()}while(e)})};var Gc=Bc.updatePayload=function(t,e){"remain"!==e&&(t.context.payload=e)};function Fc(t){t.overallReset(t.ecModel,t.api,t.payload)}function Wc(t,e){return t.overallProgress&&Hc}function Hc(){this.agent.dirty(),this.getDownstream().dirty()}function Zc(){this.agent&&this.agent.dirty()}function Uc(t){return t.plan&&t.plan(t.model,t.ecModel,t.api,t.payload)}function Xc(t){t.useClearVisual&&t.data.clearAllVisual();var e=t.resetDefines=Vo(t.reset(t.model,t.ecModel,t.api,t.payload));return 1<e.length?O(e,function(t,e){return jc(e)}):Yc}var Yc=jc(0);function jc(a){return function(t,e){var i=e.data,n=e.resetDefines[a];if(n&&n.dataEach)for(var o=t.start;o<t.end;o++)n.dataEach(i,o);else n&&n.progress&&n.progress(t,i)}}function qc(t){return t.data.count()}function Kc(t,e,i){var n=e.uid,o=t._pipelineMap.get(n);o.head||(o.head=i),o.tail&&o.tail.pipe(i),(o.tail=i).__idxInPipeline=o.count++,i.__pipeline=o}zc.wrapStageHandler=function(t,e){return C(t)&&(t={overallReset:t,seriesType:function(t){$c=null;try{t(Jc,Qc)}catch(t){}return $c}(t)}),t.uid=Nl("stageHandler"),e&&(t.visualType=e),t};var $c,Jc={},Qc={};function td(t,e){for(var i in e.prototype)t[i]=et}td(Jc,ih),td(Qc,rh),Jc.eachSeriesByType=Jc.eachRawSeriesByType=function(t){$c=t},Jc.eachComponent=function(t){"series"===t.mainType&&t.subType&&($c=t.subType)};function ed(){return{axisLine:{lineStyle:{color:od}},axisTick:{lineStyle:{color:od}},axisLabel:{textStyle:{color:od}},splitLine:{lineStyle:{type:"dashed",color:"#aaa"}},splitArea:{areaStyle:{color:od}}}}var id=["#37A2DA","#32C5E9","#67E0E3","#9FE6B8","#FFDB5C","#ff9f7f","#fb7293","#E062AE","#E690D1","#e7bcf3","#9d96f5","#8378EA","#96BFFF"],nd={color:id,colorLayer:[["#37A2DA","#ffd85c","#fd7b5f"],["#37A2DA","#67E0E3","#FFDB5C","#ff9f7f","#E062AE","#9d96f5"],["#37A2DA","#32C5E9","#9FE6B8","#FFDB5C","#ff9f7f","#fb7293","#e7bcf3","#8378EA","#96BFFF"],id]},od="#eee",ad=["#dd6b66","#759aa0","#e69d87","#8dc1a9","#ea7e53","#eedd78","#73a373","#73b9bc","#7289ab","#91ca8c","#f49f42"],rd={color:ad,backgroundColor:"#333",tooltip:{axisPointer:{lineStyle:{color:od},crossStyle:{color:od},label:{color:"#000"}}},legend:{textStyle:{color:od}},textStyle:{color:od},title:{textStyle:{color:od}},toolbox:{iconStyle:{normal:{borderColor:od}}},dataZoom:{textStyle:{color:od}},visualMap:{textStyle:{color:od}},timeline:{lineStyle:{color:od},itemStyle:{normal:{color:ad[1]}},label:{normal:{textStyle:{color:od}}},controlStyle:{normal:{color:od,borderColor:od}}},timeAxis:ed(),logAxis:ed(),valueAxis:ed(),categoryAxis:ed(),line:{symbol:"circle"},graph:{color:ad},gauge:{title:{textStyle:{color:od}}},candlestick:{itemStyle:{normal:{color:"#FD1050",color0:"#0CF49B",borderColor:"#FD1050",borderColor0:"#0CF49B"}}}};rd.categoryAxis.splitLine.show=!1,ku.extend({type:"dataset",defaultOption:{seriesLayoutBy:Hu,sourceHeader:null,dimensions:null,source:null},optionUpdated:function(){!function(t){var e=t.option.source,i=Fu;if(V(e))i=Wu;else if(L(e)){0===e.length&&(i=Bu);for(var n=0,o=e.length;n<o;n++){var a=e[n];if(null!=a){if(L(a)){i=Bu;break}if(z(a)){i=Vu;break}}}}else if(z(e)){for(var r in e)if(e.hasOwnProperty(r)&&N(e[r])){i=Gu;break}}else if(null!=e)throw new Error("Invalid data");Yu(t).sourceFormat=i}(this)}}),gc.extend({type:"dataset"});var sd=Ar.extend({type:"ellipse",shape:{cx:0,cy:0,rx:0,ry:0},buildPath:function(t,e){var i=e.cx,n=e.cy,o=e.rx,a=e.ry,r=.5522848*o,s=.5522848*a;t.moveTo(i-o,n),t.bezierCurveTo(i-o,n-s,i-r,n-a,i,n-a),t.bezierCurveTo(i+r,n-a,i+o,n-s,i+o,n),t.bezierCurveTo(i+o,n+s,i+r,n+a,i,n+a),t.bezierCurveTo(i-r,n+a,i-o,n+s,i-o,n),t.closePath()}}),ld=/[\s,]+/;function ud(t){R(t)&&(t=(new DOMParser).parseFromString(t,"text/xml"));for(9===t.nodeType&&(t=t.firstChild);"svg"!==t.nodeName.toLowerCase()||1!==t.nodeType;)t=t.nextSibling;return t}function hd(){this._defs={},this._root=null,this._isDefine=!1,this._isText=!1}hd.prototype.parse=function(t,e){e=e||{};var i=ud(t);if(!i)throw new Error("Illegal svg");var n=new Ci;this._root=n;var o=i.getAttribute("viewBox")||"",a=parseFloat(i.getAttribute("width")||e.width),r=parseFloat(i.getAttribute("height")||e.height);isNaN(a)&&(a=null),isNaN(r)&&(r=null),md(i,n,null,!0);for(var s,l,u=i.firstChild;u;)this._parseNode(u,n),u=u.nextSibling;if(o){var h=j(o).split(ld);4<=h.length&&(s={x:parseFloat(h[0]||0),y:parseFloat(h[1]||0),width:parseFloat(h[2]),height:parseFloat(h[3])})}if(s&&null!=a&&null!=r&&(l=wd(s,a,r),!e.ignoreViewBox)){var c=n;(n=new Ci).add(c),c.scale=l.scale.slice(),c.position=l.position.slice()}return e.ignoreRootClip||null==a||null==r||n.setClipPath(new rs({shape:{x:0,y:0,width:a,height:r}})),{root:n,width:a,height:r,viewBoxRect:s,viewBoxTransform:l}},hd.prototype._parseNode=function(t,e){var i,n,o=t.nodeName.toLowerCase();if("defs"===o?this._isDefine=!0:"text"===o&&(this._isText=!0),this._isDefine){if(n=dd[o]){var a=n.call(this,t),r=t.getAttribute("id");r&&(this._defs[r]=a)}}else(n=cd[o])&&(i=n.call(this,t,e),e.add(i));for(var s=t.firstChild;s;)1===s.nodeType&&this._parseNode(s,i),3===s.nodeType&&this._isText&&this._parseText(s,i),s=s.nextSibling;"defs"===o?this._isDefine=!1:"text"===o&&(this._isText=!1)},hd.prototype._parseText=function(t,e){if(1===t.nodeType){var i=t.getAttribute("dx")||0,n=t.getAttribute("dy")||0;this._textX+=parseFloat(i),this._textY+=parseFloat(n)}var o=new Ur({style:{text:t.textContent,transformText:!0},position:[this._textX||0,this._textY||0]});fd(e,o),md(t,o,this._defs);var a=o.style.fontSize;a&&a<9&&(o.style.fontSize=9,o.scale=o.scale||[1,1],o.scale[0]*=a/9,o.scale[1]*=a/9);var r=o.getBoundingRect();return this._textX+=r.width,e.add(o),o};var cd={g:function(t,e){var i=new Ci;return fd(e,i),md(t,i,this._defs),i},rect:function(t,e){var i=new rs;return fd(e,i),md(t,i,this._defs),i.setShape({x:parseFloat(t.getAttribute("x")||0),y:parseFloat(t.getAttribute("y")||0),width:parseFloat(t.getAttribute("width")||0),height:parseFloat(t.getAttribute("height")||0)}),i},circle:function(t,e){var i=new Yr;return fd(e,i),md(t,i,this._defs),i.setShape({cx:parseFloat(t.getAttribute("cx")||0),cy:parseFloat(t.getAttribute("cy")||0),r:parseFloat(t.getAttribute("r")||0)}),i},line:function(t,e){var i=new ls;return fd(e,i),md(t,i,this._defs),i.setShape({x1:parseFloat(t.getAttribute("x1")||0),y1:parseFloat(t.getAttribute("y1")||0),x2:parseFloat(t.getAttribute("x2")||0),y2:parseFloat(t.getAttribute("y2")||0)}),i},ellipse:function(t,e){var i=new sd;return fd(e,i),md(t,i,this._defs),i.setShape({cx:parseFloat(t.getAttribute("cx")||0),cy:parseFloat(t.getAttribute("cy")||0),rx:parseFloat(t.getAttribute("rx")||0),ry:parseFloat(t.getAttribute("ry")||0)}),i},polygon:function(t,e){var i=t.getAttribute("points");i=i&&pd(i);var n=new Qr({shape:{points:i||[]}});return fd(e,n),md(t,n,this._defs),n},polyline:function(t,e){var i=new Ar;fd(e,i),md(t,i,this._defs);var n=t.getAttribute("points");return n=n&&pd(n),new ts({shape:{points:n||[]}})},image:function(t,e){var i=new Qn;return fd(e,i),md(t,i,this._defs),i.setStyle({image:t.getAttribute("xlink:href"),x:t.getAttribute("x"),y:t.getAttribute("y"),width:t.getAttribute("width"),height:t.getAttribute("height")}),i},text:function(t,e){var i=t.getAttribute("x")||0,n=t.getAttribute("y")||0,o=t.getAttribute("dx")||0,a=t.getAttribute("dy")||0;this._textX=parseFloat(i)+parseFloat(o),this._textY=parseFloat(n)+parseFloat(a);var r=new Ci;return fd(e,r),md(t,r,this._defs),r},tspan:function(t,e){var i=t.getAttribute("x"),n=t.getAttribute("y");null!=i&&(this._textX=parseFloat(i)),null!=n&&(this._textY=parseFloat(n));var o=t.getAttribute("dx")||0,a=t.getAttribute("dy")||0,r=new Ci;return fd(e,r),md(t,r,this._defs),this._textX+=o,this._textY+=a,r},path:function(t,e){var i=Zr(t.getAttribute("d")||"");return fd(e,i),md(t,i,this._defs),i}},dd={lineargradient:function(t){var e=parseInt(t.getAttribute("x1")||0,10),i=parseInt(t.getAttribute("y1")||0,10),n=parseInt(t.getAttribute("x2")||10,10),o=parseInt(t.getAttribute("y2")||0,10),a=new gs(e,i,n,o);return function(t,e){var i=t.firstChild;for(;i;){if(1===i.nodeType){var n=i.getAttribute("offset");n=0<n.indexOf("%")?parseInt(n,10)/100:n?parseFloat(n):0;var o=i.getAttribute("stop-color")||"#000000";e.addColorStop(n,o)}i=i.nextSibling}}(t,a),a},radialgradient:function(t){}};function fd(t,e){t&&t.__inheritedStyle&&(e.__inheritedStyle||(e.__inheritedStyle={}),D(e.__inheritedStyle,t.__inheritedStyle))}function pd(t){for(var e=j(t).split(ld),i=[],n=0;n<e.length;n+=2){var o=parseFloat(e[n]),a=parseFloat(e[n+1]);i.push([o,a])}return i}var gd={fill:"fill",stroke:"stroke","stroke-width":"lineWidth",opacity:"opacity","fill-opacity":"fillOpacity","stroke-opacity":"strokeOpacity","stroke-dasharray":"lineDash","stroke-dashoffset":"lineDashOffset","stroke-linecap":"lineCap","stroke-linejoin":"lineJoin","stroke-miterlimit":"miterLimit","font-family":"fontFamily","font-size":"fontSize","font-style":"fontStyle","font-weight":"fontWeight","text-align":"textAlign","alignment-baseline":"textBaseline"};function md(t,e,i,n){var o=e.__inheritedStyle||{},a="text"===e.type;if(1===t.nodeType&&(function(t,e){var i=t.getAttribute("transform");if(i){i=i.replace(/,/g," ");var n=null,o=[];i.replace(xd,function(t,e,i){o.push(e,i)});for(var a=o.length-1;0<a;a-=2){var r=o[a],s=o[a-1];switch(n=n||ae(),s){case"translate":r=j(r).split(ld),ue(n,n,[parseFloat(r[0]),parseFloat(r[1]||0)]);break;case"scale":r=j(r).split(ld),ce(n,n,[parseFloat(r[0]),parseFloat(r[1]||r[0])]);break;case"rotate":r=j(r).split(ld),he(n,n,parseFloat(r[0]));break;case"skew":r=j(r).split(ld),console.warn("Skew transform is not supported yet");break;case"matrix":r=j(r).split(ld);n[0]=parseFloat(r[0]),n[1]=parseFloat(r[1]),n[2]=parseFloat(r[2]),n[3]=parseFloat(r[3]),n[4]=parseFloat(r[4]),n[5]=parseFloat(r[5])}}e.setLocalTransform(n)}}(t,e),P(o,function(t){var e=t.getAttribute("style"),i={};if(!e)return i;var n,o={};_d.lastIndex=0;for(;null!=(n=_d.exec(e));)o[n[1]]=n[2];for(var a in gd)gd.hasOwnProperty(a)&&null!=o[a]&&(i[gd[a]]=o[a]);return i}(t)),!n))for(var r in gd)if(gd.hasOwnProperty(r)){var s=t.getAttribute(r);null!=s&&(o[gd[r]]=s)}var l=a?"textFill":"fill",u=a?"textStroke":"stroke";e.style=e.style||new Ui;var h=e.style;null!=o.fill&&h.set(l,yd(o.fill,i)),null!=o.stroke&&h.set(u,yd(o.stroke,i)),E(["lineWidth","opacity","fillOpacity","strokeOpacity","miterLimit","fontSize"],function(t){var e="lineWidth"===t&&a?"textStrokeWidth":t;null!=o[t]&&h.set(e,parseFloat(o[t]))}),o.textBaseline&&"auto"!==o.textBaseline||(o.textBaseline="alphabetic"),"alphabetic"===o.textBaseline&&(o.textBaseline="bottom"),"start"===o.textAlign&&(o.textAlign="left"),"end"===o.textAlign&&(o.textAlign="right"),E(["lineDashOffset","lineCap","lineJoin","fontWeight","fontFamily","fontStyle","textAlign","textBaseline"],function(t){null!=o[t]&&h.set(t,o[t])}),o.lineDash&&(e.style.lineDash=j(o.lineDash).split(ld)),h[u]&&"none"!==h[u]&&(e[u]=!0),e.__inheritedStyle=o}var vd=/url\(\s*#(.*?)\)/;function yd(t,e){var i=e&&t&&t.match(vd);return i?e[j(i[1])]:t}var xd=/(translate|scale|rotate|skewX|skewY|matrix)\(([\-\s0-9\.e,]*)\)/g;var _d=/([^\s:;]+)\s*:\s*([^:;]+)/g;function wd(t,e,i){var n=e/t.width,o=i/t.height,a=Math.min(n,o);return{scale:[a,a],position:[-(t.x+t.width/2)*a+e/2,-(t.y+t.height/2)*a+i/2]}}var bd=Q(),Sd={registerMap:function(t,e,i){var n;return E(n=L(e)?e:e.svg?[{type:"svg",source:e.svg,specialAreas:e.specialAreas}]:(e.geoJson&&!e.features&&(i=e.specialAreas,e=e.geoJson),[{type:"geoJSON",source:e,specialAreas:i}]),function(t){var e=t.type;"geoJson"===e&&(e=t.type="geoJSON"),(0,Md[e])(t)}),bd.set(t,n)},retrieveMap:function(t){return bd.get(t)}},Md={geoJSON:function(t){var e=t.source;t.geoJSON=R(e)?"undefined"!=typeof JSON&&JSON.parse?JSON.parse(e):new Function("return ("+e+");")():e},svg:function(t){t.svgXML=ud(t.source)}},Id=Y,Td=E,Ad=C,Dd=z,Cd=ku.parseClassType,Ld={PROCESSOR:{FILTER:1e3,SERIES_FILTER:800,STATISTIC:5e3},VISUAL:{LAYOUT:1e3,PROGRESSIVE_LAYOUT:1100,GLOBAL:2e3,CHART:3e3,POST_CHART_LAYOUT:3500,COMPONENT:4e3,BRUSH:5e3}},kd="__flagInMainProcess",Pd="__optionUpdated",Nd=/^[a-zA-Z0-9_]+$/;function Od(n,o){return function(t,e,i){!o&&this._disposed||(t=t&&t.toLowerCase(),Ct.prototype[n].call(this,t,e,i))}}function Ed(){Ct.call(this)}function Rd(t,e,i){i=i||{},"string"==typeof e&&(e=sf[e]),this.id,this.group,this._dom=t;var n=this._zr=ko(t,{renderer:i.renderer||"canvas",devicePixelRatio:i.devicePixelRatio,width:i.width,height:i.height});this._throttledZrFlush=Lc(A(n.flush,n),17),(e=k(e))&&Lh(e,!0),this._theme=e,this._chartsViews=[],this._chartsMap={},this._componentsViews=[],this._componentsMap={},this._coordSysMgr=new lh;var o=this._api=function(i){var t=i._coordSysMgr;return P(new rh(i),{getCoordinateSystems:A(t.getCoordinateSystems,t),getComponentByElement:function(t){for(;t;){var e=t.__ecComponentInfo;if(null!=e)return i._model.getComponent(e.mainType,e.index);t=t.parent}}})}(this);function a(t,e){return t.__prio-e.__prio}zi(rf,a),zi(nf,a),this._scheduler=new zc(this,o,nf,rf),Ct.call(this,this._ecEventProcessor=new Qd),this._messageCenter=new Ed,this._initEvents(),this.resize=A(this.resize,this),this._pendingActions=[],n.animation.on("frame",this._onframe,this),function(t,e){t.on("rendered",function(){e.trigger("rendered"),!t.animation.isFinished()||e[Pd]||e._scheduler.unfinished||e._pendingActions.length||e.trigger("finished")})}(n,this),K(this)}Ed.prototype.on=Od("on",!0),Ed.prototype.off=Od("off",!0),Ed.prototype.one=Od("one",!0),b(Ed,Ct);var zd=Rd.prototype;function Bd(t,e,i){if(!this._disposed){var n,o=this._model,a=this._coordSysMgr.getCoordinateSystems();e=Ko(o,e);for(var r=0;r<a.length;r++){var s=a[r];if(s[t]&&null!=(n=s[t](o,e,i)))return n}}}zd._onframe=function(){if(!this._disposed){var t=this._scheduler;if(this[Pd]){var e=this[Pd].silent;this[kd]=!0,Gd(this),Vd.update.call(this),this[kd]=!1,this[Pd]=!1,Zd.call(this,e),Ud.call(this,e)}else if(t.unfinished){var i=1,n=this._model,o=this._api;t.unfinished=!1;do{var a=+new Date;t.performSeriesTasks(n),t.performDataProcessorTasks(n),Wd(this,n),t.performVisualTasks(n),qd(this,this._model,o,"remain"),i-=+new Date-a}while(0<i&&t.unfinished);t.unfinished||this._zr.flush()}}},zd.getDom=function(){return this._dom},zd.getZr=function(){return this._zr},zd.setOption=function(t,e,i){if(!this._disposed){var n;if(Dd(e)&&(i=e.lazyUpdate,n=e.silent,e=e.notMerge),this[kd]=!0,!this._model||e){var o=new ph(this._api),a=this._theme,r=this._model=new ih;r.scheduler=this._scheduler,r.init(null,null,a,o)}this._model.setOption(t,of),i?(this[Pd]={silent:n},this[kd]=!1):(Gd(this),Vd.update.call(this),this._zr.flush(),this[Pd]=!1,this[kd]=!1,Zd.call(this,n),Ud.call(this,n))}},zd.setTheme=function(){console.error("ECharts#setTheme() is DEPRECATED in ECharts 3.0")},zd.getModel=function(){return this._model},zd.getOption=function(){return this._model&&this._model.getOption()},zd.getWidth=function(){return this._zr.getWidth()},zd.getHeight=function(){return this._zr.getHeight()},zd.getDevicePixelRatio=function(){return this._zr.painter.dpr||window.devicePixelRatio||1},zd.getRenderedCanvas=function(t){if(v.canvasSupported)return(t=t||{}).pixelRatio=t.pixelRatio||1,t.backgroundColor=t.backgroundColor||this._model.get("backgroundColor"),this._zr.painter.getRenderedCanvas(t)},zd.getSvgDataURL=function(){if(v.svgSupported){var t=this._zr;return E(t.storage.getDisplayList(),function(t){t.stopAnimation(!0)}),t.painter.toDataURL()}},zd.getDataURL=function(t){if(!this._disposed){var e=(t=t||{}).excludeComponents,i=this._model,n=[],o=this;Td(e,function(t){i.eachComponent({mainType:t},function(t){var e=o._componentsMap[t.__viewId];e.group.ignore||(n.push(e),e.group.ignore=!0)})});var a="svg"===this._zr.painter.getType()?this.getSvgDataURL():this.getRenderedCanvas(t).toDataURL("image/"+(t&&t.type||"png"));return Td(n,function(t){t.group.ignore=!1}),a}},zd.getConnectedDataURL=function(o){if(!this._disposed&&v.canvasSupported){var a="svg"===o.type,r=this.group,s=Math.min,l=Math.max;if(hf[r]){var u=1/0,h=1/0,c=-1/0,d=-1/0,f=[],i=o&&o.pixelRatio||1;E(uf,function(t,e){if(t.group===r){var i=a?t.getZr().painter.getSvgDom().innerHTML:t.getRenderedCanvas(k(o)),n=t.getDom().getBoundingClientRect();u=s(n.left,u),h=s(n.top,h),c=l(n.right,c),d=l(n.bottom,d),f.push({dom:i,left:n.left,top:n.top})}});var t=(c*=i)-(u*=i),e=(d*=i)-(h*=i),n=y(),p=ko(n,{renderer:a?"svg":"canvas"});if(p.resize({width:t,height:e}),a){var g="";return Td(f,function(t){var e=t.left-u,i=t.top-h;g+='<g transform="translate('+e+","+i+')">'+t.dom+"</g>"}),p.painter.getSvgRoot().innerHTML=g,o.connectedBackgroundColor&&p.painter.setBackgroundColor(o.connectedBackgroundColor),p.refreshImmediately(),p.painter.toDataURL()}return o.connectedBackgroundColor&&p.add(new rs({shape:{x:0,y:0,width:t,height:e},style:{fill:o.connectedBackgroundColor}})),Td(f,function(t){var e=new Qn({style:{x:t.left*i-u,y:t.top*i-h,image:t.dom}});p.add(e)}),p.refreshImmediately(),n.toDataURL("image/"+(o&&o.type||"png"))}return this.getDataURL(o)}},zd.convertToPixel=T(Bd,"convertToPixel"),zd.convertFromPixel=T(Bd,"convertFromPixel"),zd.containPixel=function(t,o){var a;if(!this._disposed)return E(t=Ko(this._model,t),function(t,n){0<=n.indexOf("Models")&&E(t,function(t){var e=t.coordinateSystem;if(e&&e.containPoint)a|=!!e.containPoint(o);else if("seriesModels"===n){var i=this._chartsMap[t.__viewId];i&&i.containPoint&&(a|=i.containPoint(o,t))}},this)},this),!!a},zd.getVisual=function(t,e){var i=(t=Ko(this._model,t,{defaultMainType:"series"})).seriesModel.getData(),n=t.hasOwnProperty("dataIndexInside")?t.dataIndexInside:t.hasOwnProperty("dataIndex")?i.indexOfRawIndex(t.dataIndex):null;return null!=n?i.getItemVisual(n,e):i.getVisual(e)},zd.getViewOfComponentModel=function(t){return this._componentsMap[t.__viewId]},zd.getViewOfSeriesModel=function(t){return this._chartsMap[t.__viewId]};var Vd={prepareAndUpdate:function(t){Gd(this),Vd.update.call(this,t)},update:function(t){var e=this._model,i=this._api,n=this._zr,o=this._coordSysMgr,a=this._scheduler;if(e){a.restoreData(e,t),a.performSeriesTasks(e),o.create(e,i),a.performDataProcessorTasks(e,t),Wd(this,e),o.update(e,i),Yd(e),a.performVisualTasks(e,t),jd(this,e,i,t);var r=e.get("backgroundColor")||"transparent";if(v.canvasSupported)n.setBackgroundColor(r);else{var s=Fe(r);r=$e(s,"rgb"),0===s[3]&&(r="transparent")}Kd(e,i)}},updateTransform:function(o){var a=this._model,r=this,s=this._api;if(a){var l=[];a.eachComponent(function(t,e){var i=r.getViewOfComponentModel(e);if(i&&i.__alive)if(i.updateTransform){var n=i.updateTransform(e,a,s,o);n&&n.update&&l.push(i)}else l.push(i)});var n=Q();a.eachSeries(function(t){var e=r._chartsMap[t.__viewId];if(e.updateTransform){var i=e.updateTransform(t,a,s,o);i&&i.update&&n.set(t.uid,1)}else n.set(t.uid,1)}),Yd(a),this._scheduler.performVisualTasks(a,o,{setDirty:!0,dirtyMap:n}),qd(r,a,s,o,n),Kd(a,this._api)}},updateView:function(t){var e=this._model;e&&(_c.markUpdateMethod(t,"updateView"),Yd(e),this._scheduler.performVisualTasks(e,t,{setDirty:!0}),jd(this,this._model,this._api,t),Kd(e,this._api))},updateVisual:function(t){Vd.update.call(this,t)},updateLayout:function(t){Vd.update.call(this,t)}};function Gd(t){var e=t._model,i=t._scheduler;i.restorePipelines(e),i.prepareStageTasks(),Xd(t,"component",e,i),Xd(t,"chart",e,i),i.plan()}function Fd(e,i,n,o,t){var a=e._model;if(o){var r={};r[o+"Id"]=n[o+"Id"],r[o+"Index"]=n[o+"Index"],r[o+"Name"]=n[o+"Name"];var s={mainType:o,query:r};t&&(s.subType=t);var l=n.excludeSeriesId;null!=l&&(l=Q(Vo(l))),a&&a.eachComponent(s,function(t){l&&null!=l.get(t.id)||u(e["series"===o?"_chartsMap":"_componentsMap"][t.__viewId])},e)}else Td(e._componentsViews.concat(e._chartsViews),u);function u(t){t&&t.__alive&&t[i]&&t[i](t.__model,a,e._api,n)}}function Wd(t,e){var i=t._chartsMap,n=t._scheduler;e.eachSeries(function(t){n.updateStreamModes(t,i[t.__viewId])})}function Hd(e,t){var i=e.type,n=e.escapeConnect,o=tf[i],a=o.actionInfo,r=(a.update||"update").split(":"),s=r.pop();r=null!=r[0]&&Cd(r[0]),this[kd]=!0;var l=[e],u=!1;e.batch&&(u=!0,l=O(e.batch,function(t){return(t=D(P({},t),e)).batch=null,t}));var h,c=[],d="highlight"===i||"downplay"===i;Td(l,function(t){(h=(h=o.action(t,this._model,this._api))||P({},t)).type=a.event||h.type,c.push(h),d?Fd(this,s,t,"series"):r&&Fd(this,s,t,r.main,r.sub)},this),"none"===s||d||r||(this[Pd]?(Gd(this),Vd.update.call(this,e),this[Pd]=!1):Vd[s].call(this,e)),h=u?{type:a.event||i,escapeConnect:n,batch:c}:c[0],this[kd]=!1,t||this._messageCenter.trigger(h.type,h)}function Zd(t){for(var e=this._pendingActions;e.length;){var i=e.shift();Hd.call(this,i,t)}}function Ud(t){t||this.trigger("updated")}function Xd(t,e,o,a){for(var r="component"===e,s=r?t._componentsViews:t._chartsViews,l=r?t._componentsMap:t._chartsMap,u=t._zr,h=t._api,i=0;i<s.length;i++)s[i].__alive=!1;function n(t){var e="_ec_"+t.id+"_"+t.type,i=l[e];if(!i){var n=Cd(t.type);(i=new(r?gc.getClass(n.main,n.sub):_c.getClass(n.sub))).init(o,h),l[e]=i,s.push(i),u.add(i.group)}t.__viewId=i.__id=e,i.__alive=!0,i.__model=t,i.group.__ecComponentInfo={mainType:t.mainType,index:t.componentIndex},r||a.prepareView(i,t,o,h)}r?o.eachComponent(function(t,e){"series"!==t&&n(e)}):o.eachSeries(n);for(i=0;i<s.length;){var c=s[i];c.__alive?i++:(r||c.renderTask.dispose(),u.remove(c.group),c.dispose(o,h),s.splice(i,1),delete l[c.__id],c.__id=c.group.__ecComponentInfo=null)}}function Yd(t){t.clearColorPalette(),t.eachSeries(function(t){t.clearColorPalette()})}function jd(t,e,i,n){!function(t,i,n,o,e){Td(e||t._componentsViews,function(t){var e=t.__model;t.render(e,i,n,o),Jd(e,t)})}(t,e,i,n),Td(t._chartsViews,function(t){t.__alive=!1}),qd(t,e,i,n),Td(t._chartsViews,function(t){t.__alive||t.remove(e,i)})}function qd(n,t,e,o,a){var r,s=n._scheduler;t.eachSeries(function(t){var e=n._chartsMap[t.__viewId];e.__alive=!0;var i=e.renderTask;s.updatePayload(i,o),a&&a.get(t.uid)&&i.dirty(),r|=i.perform(s.getPerformArgs(i)),e.group.silent=!!t.get("silent"),Jd(t,e),function(t,e){var i=t.get("blendMode")||null;e.group.traverse(function(t){t.isGroup||t.style.blend!==i&&t.setStyle("blend",i),t.eachPendingDisplayable&&t.eachPendingDisplayable(function(t){t.setStyle("blend",i)})})}(t,e)}),s.unfinished|=r,function(i,t){var e=i._zr.storage,n=0;e.traverse(function(t){n++}),n>t.get("hoverLayerThreshold")&&!v.node&&t.eachSeries(function(t){if(!t.preventUsingHoverLayer){var e=i._chartsMap[t.__viewId];e.__alive&&e.group.traverse(function(t){t.useHoverLayer=!0})}})}(n,t),Ec(n._zr.dom,t)}function Kd(e,i){Td(af,function(t){t(e,i)})}zd.resize=function(t){if(!this._disposed){this._zr.resize(t);var e=this._model;if(this._loadingFX&&this._loadingFX.resize(),e){var i=e.resetOption("media"),n=t&&t.silent;this[kd]=!0,i&&Gd(this),Vd.update.call(this),this[kd]=!1,Zd.call(this,n),Ud.call(this,n)}}},zd.showLoading=function(t,e){if(!this._disposed&&(Dd(t)&&(e=t,t=""),t=t||"default",this.hideLoading(),lf[t])){var i=lf[t](this._api,e),n=this._zr;this._loadingFX=i,n.add(i)}},zd.hideLoading=function(){this._disposed||(this._loadingFX&&this._zr.remove(this._loadingFX),this._loadingFX=null)},zd.makeActionFromEvent=function(t){var e=P({},t);return e.type=ef[t.type],e},zd.dispatchAction=function(t,e){this._disposed||(Dd(e)||(e={silent:!!e}),tf[t.type]&&this._model&&(this[kd]?this._pendingActions.push(t):(Hd.call(this,t,e.silent),e.flush?this._zr.flush(!0):!1!==e.flush&&v.browser.weChat&&this._throttledZrFlush(),Zd.call(this,e.silent),Ud.call(this,e.silent))))},zd.appendData=function(t){if(!this._disposed){var e=t.seriesIndex;this.getModel().getSeriesByIndex(e).appendData(t),this._scheduler.unfinished=!0}},zd.on=Od("on",!1),zd.off=Od("off",!1),zd.one=Od("one",!1);var $d=["click","dblclick","mouseover","mouseout","mousemove","mousedown","mouseup","globalout","contextmenu"];function Jd(t,e){var i=t.get("z"),n=t.get("zlevel");e.group.traverse(function(t){"group"!==t.type&&(null!=i&&(t.z=i),null!=n&&(t.zlevel=n))})}function Qd(){this.eventInfo}zd._initEvents=function(){Td($d,function(u){function t(t){var e,i=this.getModel(),n=t.target;if("globalout"===u)e={};else if(n&&null!=n.dataIndex){var o=n.dataModel||i.getSeriesByIndex(n.seriesIndex);e=o&&o.getDataParams(n.dataIndex,n.dataType,n)||{}}else n&&n.eventData&&(e=P({},n.eventData));if(e){var a=e.componentType,r=e.componentIndex;"markLine"!==a&&"markPoint"!==a&&"markArea"!==a||(a="series",r=e.seriesIndex);var s=a&&null!=r&&i.getComponent(a,r),l=s&&this["series"===s.mainType?"_chartsMap":"_componentsMap"][s.__viewId];e.event=t,e.type=u,this._ecEventProcessor.eventInfo={targetEl:n,packedEvent:e,model:s,view:l},this.trigger(u,e)}}t.zrEventfulCallAtLast=!0,this._zr.on(u,t,this)},this),Td(ef,function(t,e){this._messageCenter.on(e,function(t){this.trigger(e,t)},this)},this)},zd.isDisposed=function(){return this._disposed},zd.clear=function(){this._disposed||this.setOption({series:[]},!0)},zd.dispose=function(){if(!this._disposed){this._disposed=!0,Jo(this.getDom(),ff,"");var e=this._api,i=this._model;Td(this._componentsViews,function(t){t.dispose(i,e)}),Td(this._chartsViews,function(t){t.dispose(i,e)}),this._zr.dispose(),delete uf[this.id]}},b(Rd,Ct),Qd.prototype={constructor:Qd,normalizeQuery:function(t){var s={},l={},u={};if(R(t)){var e=Cd(t);s.mainType=e.main||null,s.subType=e.sub||null}else{var h=["Index","Name","Id"],c={name:1,dataIndex:1,dataType:1};E(t,function(t,e){for(var i=!1,n=0;n<h.length;n++){var o=h[n],a=e.lastIndexOf(o);if(0<a&&a===e.length-o.length){var r=e.slice(0,a);"data"!==r&&(s.mainType=r,s[o.toLowerCase()]=t,i=!0)}}c.hasOwnProperty(e)&&(l[e]=t,i=!0),i||(u[e]=t)})}return{cptQuery:s,dataQuery:l,otherQuery:u}},filter:function(t,e,i){var n=this.eventInfo;if(!n)return!0;var o=n.targetEl,a=n.packedEvent,r=n.model,s=n.view;if(!r||!s)return!0;var l=e.cptQuery,u=e.dataQuery;return h(l,r,"mainType")&&h(l,r,"subType")&&h(l,r,"index","componentIndex")&&h(l,r,"name")&&h(l,r,"id")&&h(u,a,"name")&&h(u,a,"dataIndex")&&h(u,a,"dataType")&&(!s.filterForExposedEvent||s.filterForExposedEvent(t,e.otherQuery,o,a));function h(t,e,i,n){return null==t[i]||e[n||i]===t[i]}},afterTrigger:function(){this.eventInfo=null}};var tf={},ef={},nf=[],of=[],af=[],rf=[],sf={},lf={},uf={},hf={},cf=new Date-0,df=new Date-0,ff="_echarts_instance_";function pf(t){hf[t]=!1}var gf=pf;function mf(t){return uf[function(t,e){return t.getAttribute?t.getAttribute(e):t[e]}(t,ff)]}function vf(t,e){sf[t]=e}function yf(t){of.push(t)}function xf(t,e){Mf(nf,t,e,1e3)}function _f(t,e,i){"function"==typeof e&&(i=e,e="");var n=Dd(t)?t.type:[t,t={event:e}][0];t.event=(t.event||n).toLowerCase(),e=t.event,Id(Nd.test(n)&&Nd.test(e)),tf[n]||(tf[n]={action:i,actionInfo:t}),ef[e]=n}function wf(t,e){lh.register(t,e)}function bf(t,e){Mf(rf,t,e,1e3,"layout")}function Sf(t,e){Mf(rf,t,e,3e3,"visual")}function Mf(t,e,i,n,o){(Ad(e)||Dd(e))&&(i=e,e=n);var a=zc.wrapStageHandler(i,o);return a.__prio=e,a.__raw=i,t.push(a),a}function If(t,e){lf[t]=e}function Tf(t){return ku.extend(t)}function Af(t){return gc.extend(t)}function Df(t){return sc.extend(t)}function Cf(t){return _c.extend(t)}Sf(2e3,Nc),yf(Lh),xf(900,function(t){var a=Q();t.eachSeries(function(t){var e=t.get("stack");if(e){var i=a.get(e)||a.set(e,[]),n=t.getData(),o={stackResultDimension:n.getCalculationInfo("stackResultDimension"),stackedOverDimension:n.getCalculationInfo("stackedOverDimension"),stackedDimension:n.getCalculationInfo("stackedDimension"),stackedByDimension:n.getCalculationInfo("stackedByDimension"),isStackedByIndex:n.getCalculationInfo("isStackedByIndex"),data:n,seriesModel:t};if(!o.stackedDimension||!o.isStackedByIndex&&!o.stackedByDimension)return;i.length&&n.setCalculationInfo("stackedOnSeries",i[i.length-1].seriesModel),i.push(o)}}),a.each(kh)}),If("default",function(o,a){D(a=a||{},{text:"loading",textColor:"#000",fontSize:"12px",maskColor:"rgba(255, 255, 255, 0.8)",showSpinner:!0,color:"#c23531",spinnerRadius:10,lineWidth:5,zlevel:0});var t=new Ci,r=new rs({style:{fill:a.maskColor},zlevel:a.zlevel,z:1e4});t.add(r);var s=a.fontSize+" sans-serif",l=new rs({style:{fill:"none",text:a.text,font:s,textPosition:"right",textDistance:10,textFill:a.textColor},zlevel:a.zlevel,z:10001});if(t.add(l),a.showSpinner){var u=new fs({shape:{startAngle:-Rc/2,endAngle:-Rc/2+.1,r:a.spinnerRadius},style:{stroke:a.color,lineCap:"round",lineWidth:a.lineWidth},zlevel:a.zlevel,z:10001});u.animateShape(!0).when(1e3,{endAngle:3*Rc/2}).start("circularInOut"),u.animateShape(!0).when(1e3,{startAngle:3*Rc/2}).delay(300).start("circularInOut"),t.add(u)}return t.resize=function(){var t=pn(a.text,s),e=a.showSpinner?a.spinnerRadius:0,i=(o.getWidth()-2*e-(a.showSpinner&&t?10:0)-t)/2-(a.showSpinner?0:t/2),n=o.getHeight()/2;a.showSpinner&&u.setShape({cx:i,cy:n}),l.setShape({x:i-e,y:n-e,width:2*e,height:2*e}),r.setShape({x:0,y:0,width:o.getWidth(),height:o.getHeight()})},t.resize(),t}),_f({type:"highlight",event:"highlight",update:"highlight"},et),_f({type:"downplay",event:"downplay",update:"downplay"},et),vf("light",nd),vf("dark",rd);function Lf(t){return t}function kf(t,e,i,n,o){this._old=t,this._new=e,this._oldKeyGetter=i||Lf,this._newKeyGetter=n||Lf,this.context=o}function Pf(t,e,i,n,o){for(var a=0;a<t.length;a++){var r="_ec_"+o[n](t[a],a),s=e[r];null==s?(i.push(r),e[r]=a):(s.length||(e[r]=s=[s]),s.push(a))}}kf.prototype={constructor:kf,add:function(t){return this._add=t,this},update:function(t){return this._update=t,this},remove:function(t){return this._remove=t,this},execute:function(){var t=this._old,e=this._new,i={},n=[],o=[];for(Pf(t,{},n,"_oldKeyGetter",this),Pf(e,i,o,"_newKeyGetter",this),a=0;a<t.length;a++){if(null!=(s=i[r=n[a]]))(u=s.length)?(1===u&&(i[r]=null),s=s.shift()):i[r]=null,this._update&&this._update(s,a);else this._remove&&this._remove(a)}for(var a=0;a<o.length;a++){var r=o[a];if(i.hasOwnProperty(r)){var s;if(null==(s=i[r]))continue;if(s.length)for(var l=0,u=s.length;l<u;l++)this._add&&this._add(s[l]);else this._add&&this._add(s)}}}};var Nf=Q(["tooltip","label","itemName","itemId","seriesName"]);function Of(t,e){return t.hasOwnProperty(e)||(t[e]=[]),t[e]}function Ef(t){return"category"===t?"ordinal":"time"===t?"time":"float"}function Rf(t){null!=t&&P(this,t),this.otherDims={}}var zf=z,Bf="undefined",Vf={float:typeof Float64Array==Bf?Array:Float64Array,int:typeof Int32Array==Bf?Array:Int32Array,ordinal:Array,number:Array,time:Array},Gf=typeof Uint32Array==Bf?Array:Uint32Array,Ff=typeof Int32Array==Bf?Array:Int32Array,Wf=typeof Uint16Array==Bf?Array:Uint16Array;function Hf(t){return 65535<t._rawCount?Gf:Wf}var Zf=["hasItemOption","_nameList","_idList","_invertedIndicesMap","_rawData","_chunkSize","_chunkCount","_dimValueGetter","_count","_rawCount","_nameDimIdx","_idDimIdx"],Uf=["_extent","_approximateExtent","_rawExtent"];function Xf(e,i){E(Zf.concat(i.__wrappedMethods||[]),function(t){i.hasOwnProperty(t)&&(e[t]=i[t])}),e.__wrappedMethods=i.__wrappedMethods,E(Uf,function(t){e[t]=k(i[t])}),e._calculationInfo=P(i._calculationInfo)}var Yf=function(t,e){t=t||["x","y"];for(var i={},n=[],o={},a=0;a<t.length;a++){var r=t[a];R(r)?r=new Rf({name:r}):r instanceof Rf||(r=new Rf(r));var s=r.name;r.type=r.type||"float",r.coordDim||(r.coordDim=s,r.coordDimIndex=0),r.otherDims=r.otherDims||{},n.push(s),(i[s]=r).index=a,r.createInvertedIndices&&(o[s]=[])}this.dimensions=n,this._dimensionInfos=i,this.hostModel=e,this.dataType,this._indices=null,this._count=0,this._rawCount=0,this._storage={},this._nameList=[],this._idList=[],this._optionModels=[],this._visual={},this._layout={},this._itemVisuals=[],this.hasItemVisual={},this._itemLayouts=[],this._graphicEls=[],this._chunkSize=1e5,this._chunkCount=0,this._rawData,this._rawExtent={},this._extent={},this._approximateExtent={},this._dimensionsSummary=function(n){var t={},a=t.encode={},r=Q(),s=[],l=[],u=t.userOutput={dimensionNames:n.dimensions.slice(),encode:{}};E(n.dimensions,function(t){var o=n.getDimensionInfo(t),e=o.coordDim;if(e){var i=o.coordDimIndex;Of(a,e)[i]=t,o.isExtraCoord||(r.set(e,1),function(t){return!("ordinal"===t||"time"===t)}(o.type)&&(s[0]=t),Of(u.encode,e)[i]=o.index),o.defaultTooltip&&l.push(t)}Nf.each(function(t,e){var i=Of(a,e),n=o.otherDims[e];null!=n&&!1!==n&&(i[n]=o.name)})});var o=[],h={};r.each(function(t,e){var i=a[e];h[e]=i[0],o=o.concat(i)}),t.dataDimsOnCoord=o,t.encodeFirstDimNotExtra=h;var e=a.label;e&&e.length&&(s=e.slice());var i=a.tooltip;return i&&i.length?l=i.slice():l.length||(l=s.slice()),a.defaultedLabel=s,a.defaultedTooltip=l,t}(this),this._invertedIndicesMap=o,this._calculationInfo={},this.userOutput=this._dimensionsSummary.userOutput},jf=Yf.prototype;function qf(t,e,i,n,o){var a=Vf[e.type],r=n-1,s=e.name,l=t[s][r];if(l&&l.length<i){for(var u=new a(Math.min(o-r*i,i)),h=0;h<l.length;h++)u[h]=l[h];t[s][r]=u}for(var c=n*i;c<o;c+=i)t[s].push(new a(Math.min(o-c,i)))}function Kf(o){var a=o._invertedIndicesMap;E(a,function(t,e){var i=o._dimensionInfos[e].ordinalMeta;if(i){t=a[e]=new Ff(i.categories.length);for(var n=0;n<t.length;n++)t[n]=-1;for(n=0;n<o._count;n++)t[o.get(e,n)]=n}})}function $f(t,e,i){var n;if(null!=e){var o=t._chunkSize,a=Math.floor(i/o),r=i%o,s=t.dimensions[e],l=t._storage[s][a];if(l){n=l[r];var u=t._dimensionInfos[s].ordinalMeta;u&&u.categories.length&&(n=u.categories[n])}}return n}function Jf(t){return t}function Qf(t){return t<this._count&&0<=t?this._indices[t]:-1}function tp(t,e){var i=t._idList[e];return null==i&&(i=$f(t,t._idDimIdx,e)),null==i&&(i="e\0\0"+e),i}function ep(t){return L(t)||(t=[t]),t}function ip(t,e){var i=t.dimensions,n=new Yf(O(i,t.getDimensionInfo,t),t.hostModel);Xf(n,t);for(var o=n._storage={},a=t._storage,r=0;r<i.length;r++){var s=i[r];a[s]&&(0<=_(e,s)?(o[s]=np(a[s]),n._rawExtent[s]=op(),n._extent[s]=null):o[s]=a[s])}return n}function np(t){for(var e,i,n=new Array(t.length),o=0;o<t.length;o++)n[o]=(e=t[o],i=void 0,(i=e.constructor)===Array?e.slice():new i(e));return n}function op(){return[1/0,-1/0]}jf.type="list",jf.hasItemOption=!0,jf.getDimension=function(t){return"number"!=typeof t&&(isNaN(t)||this._dimensionInfos.hasOwnProperty(t))||(t=this.dimensions[t]),t},jf.getDimensionInfo=function(t){return this._dimensionInfos[this.getDimension(t)]},jf.getDimensionsOnCoord=function(){return this._dimensionsSummary.dataDimsOnCoord.slice()},jf.mapDimension=function(t,e){var i=this._dimensionsSummary;if(null==e)return i.encodeFirstDimNotExtra[t];var n=i.encode[t];return!0===e?(n||[]).slice():n&&n[e]},jf.initData=function(t,e,i){(Uu.isInstance(t)||N(t))&&(t=new Ph(t,this.dimensions.length)),this._rawData=t,this._storage={},this._indices=null,this._nameList=e||[],this._idList=[],this._nameRepeatCount={},i||(this.hasItemOption=!1),this.defaultDimValueGetter=Gh[this._rawData.getSource().sourceFormat],this._dimValueGetter=i=i||this.defaultDimValueGetter,this._dimValueGetterArrayRows=Gh.arrayRows,this._rawExtent={},this._initDataFromProvider(0,t.count()),t.pure&&(this.hasItemOption=!1)},jf.getProvider=function(){return this._rawData},jf.appendData=function(t){var e=this._rawData,i=this.count();e.appendData(t);var n=e.count();e.persistent||(n+=i),this._initDataFromProvider(i,n)},jf.appendValues=function(t,e){for(var i=this._chunkSize,n=this._storage,o=this.dimensions,a=o.length,r=this._rawExtent,s=this.count(),l=s+Math.max(t.length,e?e.length:0),u=this._chunkCount,h=0;h<a;h++){r[v=o[h]]||(r[v]=op()),n[v]||(n[v]=[]),qf(n,this._dimensionInfos[v],i,u,l),this._chunkCount=n[v].length}for(var c=new Array(a),d=s;d<l;d++){for(var f=d-s,p=Math.floor(d/i),g=d%i,m=0;m<a;m++){var v=o[m],y=this._dimValueGetterArrayRows(t[f]||c,v,f,m);n[v][p][g]=y;var x=r[v];y<x[0]&&(x[0]=y),y>x[1]&&(x[1]=y)}e&&(this._nameList[d]=e[f])}this._rawCount=this._count=l,this._extent={},Kf(this)},jf._initDataFromProvider=function(t,e){if(!(e<=t)){for(var i,n=this._chunkSize,o=this._rawData,a=this._storage,r=this.dimensions,s=r.length,l=this._dimensionInfos,u=this._nameList,h=this._idList,c=this._rawExtent,d=this._nameRepeatCount={},f=this._chunkCount,p=0;p<s;p++){c[w=r[p]]||(c[w]=op());var g=l[w];0===g.otherDims.itemName&&(i=this._nameDimIdx=p),0===g.otherDims.itemId&&(this._idDimIdx=p),a[w]||(a[w]=[]),qf(a,g,n,f,e),this._chunkCount=a[w].length}for(var m=new Array(s),v=t;v<e;v++){m=o.getItem(v,m);for(var y=Math.floor(v/n),x=v%n,_=0;_<s;_++){var w,b=a[w=r[_]][y],S=this._dimValueGetter(m,w,v,_);b[x]=S;var M=c[w];S<M[0]&&(M[0]=S),S>M[1]&&(M[1]=S)}if(!o.pure){var I=u[v];if(m&&null==I)if(null!=m.name)u[v]=I=m.name;else if(null!=i){var T=r[i],A=a[T][y];if(A){I=A[x];var D=l[T].ordinalMeta;D&&D.categories.length&&(I=D.categories[I])}}var C=null==m?null:m.id;null==C&&null!=I&&(d[I]=d[I]||0,0<d[C=I]&&(C+="__ec__"+d[I]),d[I]++),null!=C&&(h[v]=C)}}!o.persistent&&o.clean&&o.clean(),this._rawCount=this._count=e,this._extent={},Kf(this)}},jf.count=function(){return this._count},jf.getIndices=function(){var t=this._indices;if(t){var e=t.constructor,i=this._count;if(e===Array){o=new e(i);for(var n=0;n<i;n++)o[n]=t[n]}else o=new e(t.buffer,0,i)}else{var o=new(e=Hf(this))(this.count());for(n=0;n<o.length;n++)o[n]=n}return o},jf.get=function(t,e){if(!(0<=e&&e<this._count))return NaN;var i=this._storage;if(!i[t])return NaN;e=this.getRawIndex(e);var n=Math.floor(e/this._chunkSize),o=e%this._chunkSize;return i[t][n][o]},jf.getByRawIndex=function(t,e){if(!(0<=e&&e<this._rawCount))return NaN;var i=this._storage[t];if(!i)return NaN;var n=Math.floor(e/this._chunkSize),o=e%this._chunkSize;return i[n][o]},jf._getFast=function(t,e){var i=Math.floor(e/this._chunkSize),n=e%this._chunkSize;return this._storage[t][i][n]},jf.getValues=function(t,e){var i=[];L(t)||(e=t,t=this.dimensions);for(var n=0,o=t.length;n<o;n++)i.push(this.get(t[n],e));return i},jf.hasValue=function(t){for(var e=this._dimensionsSummary.dataDimsOnCoord,i=0,n=e.length;i<n;i++)if(isNaN(this.get(e[i],t)))return!1;return!0},jf.getDataExtent=function(t){t=this.getDimension(t);var e=this._storage[t],i=op();if(!e)return i;var n,o=this.count();if(!this._indices)return this._rawExtent[t].slice();if(n=this._extent[t])return n.slice();for(var a=(n=i)[0],r=n[1],s=0;s<o;s++){var l=this._getFast(t,this.getRawIndex(s));l<a&&(a=l),r<l&&(r=l)}return n=[a,r],this._extent[t]=n},jf.getApproximateExtent=function(t){return t=this.getDimension(t),this._approximateExtent[t]||this.getDataExtent(t)},jf.setApproximateExtent=function(t,e){e=this.getDimension(e),this._approximateExtent[e]=t.slice()},jf.getCalculationInfo=function(t){return this._calculationInfo[t]},jf.setCalculationInfo=function(t,e){zf(t)?P(this._calculationInfo,t):this._calculationInfo[t]=e},jf.getSum=function(t){var e=0;if(this._storage[t])for(var i=0,n=this.count();i<n;i++){var o=this.get(t,i);isNaN(o)||(e+=o)}return e},jf.getMedian=function(t){var i=[];this.each(t,function(t,e){isNaN(t)||i.push(t)});var e=[].concat(i).sort(function(t,e){return t-e}),n=this.count();return 0===n?0:n%2==1?e[(n-1)/2]:(e[n/2]+e[n/2-1])/2},jf.rawIndexOf=function(t,e){var i=(t&&this._invertedIndicesMap[t])[e];return null==i||isNaN(i)?-1:i},jf.indexOfName=function(t){for(var e=0,i=this.count();e<i;e++)if(this.getName(e)===t)return e;return-1},jf.indexOfRawIndex=function(t){if(t>=this._rawCount||t<0)return-1;if(!this._indices)return t;var e=this._indices,i=e[t];if(null!=i&&i<this._count&&i===t)return t;for(var n=0,o=this._count-1;n<=o;){var a=(n+o)/2|0;if(e[a]<t)n=1+a;else{if(!(e[a]>t))return a;o=a-1}}return-1},jf.indicesOfNearest=function(t,e,i){var n=[];if(!this._storage[t])return n;null==i&&(i=1/0);for(var o=1/0,a=-1,r=0,s=0,l=this.count();s<l;s++){var u=e-this.get(t,s),h=Math.abs(u);h<=i&&((h<o||h===o&&0<=u&&a<0)&&(o=h,a=u,r=0),u===a&&(n[r++]=s))}return n.length=r,n},jf.getRawIndex=Jf,jf.getRawDataItem=function(t){if(this._rawData.persistent)return this._rawData.getItem(this.getRawIndex(t));for(var e=[],i=0;i<this.dimensions.length;i++){var n=this.dimensions[i];e.push(this.get(n,t))}return e},jf.getName=function(t){var e=this.getRawIndex(t);return this._nameList[e]||$f(this,this._nameDimIdx,e)||""},jf.getId=function(t){return tp(this,this.getRawIndex(t))},jf.each=function(t,e,i,n){if(this._count){"function"==typeof t&&(n=i,i=e,e=t,t=[]),i=i||n||this;for(var o=(t=O(ep(t),this.getDimension,this)).length,a=0;a<this.count();a++)switch(o){case 0:e.call(i,a);break;case 1:e.call(i,this.get(t[0],a),a);break;case 2:e.call(i,this.get(t[0],a),this.get(t[1],a),a);break;default:for(var r=0,s=[];r<o;r++)s[r]=this.get(t[r],a);s[r]=a,e.apply(i,s)}}},jf.filterSelf=function(t,e,i,n){if(this._count){"function"==typeof t&&(n=i,i=e,e=t,t=[]),i=i||n||this,t=O(ep(t),this.getDimension,this);for(var o=this.count(),a=new(Hf(this))(o),r=[],s=t.length,l=0,u=t[0],h=0;h<o;h++){var c,d=this.getRawIndex(h);if(0===s)c=e.call(i,h);else if(1===s){var f=this._getFast(u,d);c=e.call(i,f,h)}else{for(var p=0;p<s;p++)r[p]=this._getFast(u,d);r[p]=h,c=e.apply(i,r)}c&&(a[l++]=d)}return l<o&&(this._indices=a),this._count=l,this._extent={},this.getRawIndex=this._indices?Qf:Jf,this}},jf.selectRange=function(t){if(this._count){var e=[];for(var i in t)t.hasOwnProperty(i)&&e.push(i);var n=e.length;if(n){var o=this.count(),a=new(Hf(this))(o),r=0,s=e[0],l=t[s][0],u=t[s][1],h=!1;if(!this._indices){var c=0;if(1===n){for(var d=this._storage[e[0]],f=0;f<this._chunkCount;f++)for(var p=d[f],g=Math.min(this._count-f*this._chunkSize,this._chunkSize),m=0;m<g;m++){(l<=(w=p[m])&&w<=u||isNaN(w))&&(a[r++]=c),c++}h=!0}else if(2===n){d=this._storage[s];var v=this._storage[e[1]],y=t[e[1]][0],x=t[e[1]][1];for(f=0;f<this._chunkCount;f++){p=d[f];var _=v[f];for(g=Math.min(this._count-f*this._chunkSize,this._chunkSize),m=0;m<g;m++){var w=p[m],b=_[m];(l<=w&&w<=u||isNaN(w))&&(y<=b&&b<=x||isNaN(b))&&(a[r++]=c),c++}}h=!0}}if(!h)if(1===n)for(m=0;m<o;m++){var S=this.getRawIndex(m);(l<=(w=this._getFast(s,S))&&w<=u||isNaN(w))&&(a[r++]=S)}else for(m=0;m<o;m++){var M=!0;for(S=this.getRawIndex(m),f=0;f<n;f++){var I=e[f];((w=this._getFast(i,S))<t[I][0]||w>t[I][1])&&(M=!1)}M&&(a[r++]=this.getRawIndex(m))}return r<o&&(this._indices=a),this._count=r,this._extent={},this.getRawIndex=this._indices?Qf:Jf,this}}},jf.mapArray=function(t,e,i,n){"function"==typeof t&&(n=i,i=e,e=t,t=[]),i=i||n||this;var o=[];return this.each(t,function(){o.push(e&&e.apply(this,arguments))},i),o},jf.map=function(t,e,i,n){i=i||n||this;var o=ip(this,t=O(ep(t),this.getDimension,this));o._indices=this._indices,o.getRawIndex=o._indices?Qf:Jf;for(var a=o._storage,r=[],s=this._chunkSize,l=t.length,u=this.count(),h=[],c=o._rawExtent,d=0;d<u;d++){for(var f=0;f<l;f++)h[f]=this.get(t[f],d);h[l]=d;var p=e&&e.apply(i,h);if(null!=p){"object"!=typeof p&&(r[0]=p,p=r);for(var g=this.getRawIndex(d),m=Math.floor(g/s),v=g%s,y=0;y<p.length;y++){var x=t[y],_=p[y],w=c[x],b=a[x];b&&(b[m][v]=_),_<w[0]&&(w[0]=_),_>w[1]&&(w[1]=_)}}}return o},jf.downSample=function(t,e,i,n){for(var o=ip(this,[t]),a=o._storage,r=[],s=Math.floor(1/e),l=a[t],u=this.count(),h=this._chunkSize,c=o._rawExtent[t],d=new(Hf(this))(u),f=0,p=0;p<u;p+=s){u-p<s&&(s=u-p,r.length=s);for(var g=0;g<s;g++){var m=this.getRawIndex(p+g),v=Math.floor(m/h),y=m%h;r[g]=l[v][y]}var x=i(r),_=this.getRawIndex(Math.min(p+n(r,x)||0,u-1)),w=_%h;(l[Math.floor(_/h)][w]=x)<c[0]&&(c[0]=x),x>c[1]&&(c[1]=x),d[f++]=_}return o._count=f,o._indices=d,o.getRawIndex=Qf,o},jf.getItemModel=function(t){var e=this.hostModel;return new Cl(this.getRawDataItem(t),e,e&&e.ecModel)},jf.diff=function(e){var i=this;return new kf(e?e.getIndices():[],this.getIndices(),function(t){return tp(e,t)},function(t){return tp(i,t)})},jf.getVisual=function(t){var e=this._visual;return e&&e[t]},jf.setVisual=function(t,e){if(zf(t))for(var i in t)t.hasOwnProperty(i)&&this.setVisual(i,t[i]);else this._visual=this._visual||{},this._visual[t]=e},jf.setLayout=function(t,e){if(zf(t))for(var i in t)t.hasOwnProperty(i)&&this.setLayout(i,t[i]);else this._layout[t]=e},jf.getLayout=function(t){return this._layout[t]},jf.getItemLayout=function(t){return this._itemLayouts[t]},jf.setItemLayout=function(t,e,i){this._itemLayouts[t]=i?P(this._itemLayouts[t]||{},e):e},jf.clearItemLayouts=function(){this._itemLayouts.length=0},jf.getItemVisual=function(t,e,i){var n=this._itemVisuals[t],o=n&&n[e];return null!=o||i?o:this.getVisual(e)},jf.setItemVisual=function(t,e,i){var n=this._itemVisuals[t]||{},o=this.hasItemVisual;if(this._itemVisuals[t]=n,zf(e))for(var a in e)e.hasOwnProperty(a)&&(n[a]=e[a],o[a]=!0);else n[e]=i,o[e]=!0},jf.clearAllVisual=function(){this._visual={},this._itemVisuals=[],this.hasItemVisual={}};function ap(t){t.seriesIndex=this.seriesIndex,t.dataIndex=this.dataIndex,t.dataType=this.dataType}function rp(t,e,i){Uu.isInstance(e)||(e=Uu.seriesDataToSource(e)),i=i||{},t=(t||[]).slice();for(var n=(i.dimsDef||[]).slice(),o=Q(),a=Q(),l=[],r=function(t,e,i,n){var o=Math.max(t.dimensionsDetectCount||1,e.length,i.length,n||0);return E(e,function(t){var e=t.dimsDef;e&&(o=Math.max(o,e.length))}),o}(e,t,n,i.dimCount),s=0;s<r;s++){var u=n[s]=P({},z(n[s])?n[s]:{name:n[s]}),h=u.name,c=l[s]=new Rf;null!=h&&null==o.get(h)&&(c.name=c.displayName=h,o.set(h,s)),null!=u.type&&(c.type=u.type),null!=u.displayName&&(c.displayName=u.displayName)}var d=i.encodeDef;!d&&i.encodeDefaulter&&(d=i.encodeDefaulter(e,r)),(d=Q(d)).each(function(t,i){if(1===(t=Vo(t).slice()).length&&!R(t[0])&&t[0]<0)d.set(i,!1);else{var n=d.set(i,[]);E(t,function(t,e){R(t)&&(t=o.get(t)),null!=t&&t<r&&(n[e]=t,p(l[t],i,e))})}});var f=0;function p(t,e,i){null!=Nf.get(e)?t.otherDims[e]=i:(t.coordDim=e,t.coordDimIndex=i,a.set(e,!0))}E(t,function(o,t){var a,r,s;if(R(o))a=o,o={};else{a=o.name;var e=o.ordinalMeta;o.ordinalMeta=null,(o=k(o)).ordinalMeta=e,r=o.dimsDef,s=o.otherDims,o.name=o.coordDim=o.coordDimIndex=o.dimsDef=o.otherDims=null}if(!1!==(i=d.get(a))){var i;if(!(i=Vo(i)).length)for(var n=0;n<(r&&r.length||1);n++){for(;f<l.length&&null!=l[f].coordDim;)f++;f<l.length&&i.push(f++)}E(i,function(t,e){var i=l[t];if(p(D(i,o),a,e),null==i.name&&r){var n=r[e];z(n)||(n={name:n}),i.name=i.displayName=n.name,i.defaultTooltip=n.defaultTooltip}s&&D(i.otherDims,s)})}});var g=i.generateCoord,m=i.generateCoordCount,v=null!=m;m=g?m||1:0;for(var y,x,_=g||"value",w=0;w<r;w++){null==(c=l[w]=l[w]||new Rf).coordDim&&(c.coordDim=sp(_,a,v),c.coordDimIndex=0,(!g||m<=0)&&(c.isExtraCoord=!0),m--),null==c.name&&(c.name=sp(c.coordDim,o)),null==c.type&&(y=e,x=w,c.name,th(y.data,y.sourceFormat,y.seriesLayoutBy,y.dimensionsDefine,y.startIndex,x)===Xu.Must||c.isExtraCoord&&(null!=c.otherDims.itemName||null!=c.otherDims.seriesName))&&(c.type="ordinal")}return l}function sp(t,e,i){if(i||null!=e.get(t)){for(var n=0;null!=e.get(t+n);)n++;t+=n}return e.set(t,!0),t}jf.setItemGraphicEl=function(t,e){var i=this.hostModel;e&&(e.dataIndex=t,e.dataType=this.dataType,e.seriesIndex=i&&i.seriesIndex,"group"===e.type&&e.traverse(ap,e)),this._graphicEls[t]=e},jf.getItemGraphicEl=function(t){return this._graphicEls[t]},jf.eachItemGraphicEl=function(i,n){E(this._graphicEls,function(t,e){t&&i&&i.call(n,t,e)})},jf.cloneShallow=function(t){if(!t){var e=O(this.dimensions,this.getDimensionInfo,this);t=new Yf(e,this.hostModel)}if(t._storage=this._storage,Xf(t,this),this._indices){var i=this._indices.constructor;t._indices=new i(this._indices)}else t._indices=null;return t.getRawIndex=t._indices?Qf:Jf,t},jf.wrapMethod=function(t,e){var i=this[t];"function"==typeof i&&(this.__wrappedMethods=this.__wrappedMethods||[],this.__wrappedMethods.push(t),this[t]=function(){var t=i.apply(this,arguments);return e.apply(this,[t].concat(U(arguments)))})},jf.TRANSFERABLE_METHODS=["cloneShallow","downSample","map"],jf.CHANGABLE_METHODS=["filterSelf","selectRange"];var lp=function(t,e){return rp((e=e||{}).coordDimensions||[],t,{dimsDef:e.dimensionsDefine||t.dimensionsDefine,encodeDef:e.encodeDefine||t.encodeDefine,dimCount:e.dimensionsCount,encodeDefaulter:e.encodeDefaulter,generateCoord:e.generateCoord,generateCoordCount:e.generateCoordCount})};function up(t){this.coordSysName=t,this.coordSysDims=[],this.axisMap=Q(),this.categoryAxisMap=Q(),this.firstCategoryDimIndex=null}var hp={cartesian2d:function(t,e,i,n){var o=t.getReferringComponents("xAxis")[0],a=t.getReferringComponents("yAxis")[0];e.coordSysDims=["x","y"],i.set("x",o),i.set("y",a),cp(o)&&(n.set("x",o),e.firstCategoryDimIndex=0),cp(a)&&(n.set("y",a),e.firstCategoryDimIndex,e.firstCategoryDimIndex=1)},singleAxis:function(t,e,i,n){var o=t.getReferringComponents("singleAxis")[0];e.coordSysDims=["single"],i.set("single",o),cp(o)&&(n.set("single",o),e.firstCategoryDimIndex=0)},polar:function(t,e,i,n){var o=t.getReferringComponents("polar")[0],a=o.findAxisModel("radiusAxis"),r=o.findAxisModel("angleAxis");e.coordSysDims=["radius","angle"],i.set("radius",a),i.set("angle",r),cp(a)&&(n.set("radius",a),e.firstCategoryDimIndex=0),cp(r)&&(n.set("angle",r),null==e.firstCategoryDimIndex&&(e.firstCategoryDimIndex=1))},geo:function(t,e,i,n){e.coordSysDims=["lng","lat"]},parallel:function(t,o,a,r){var s=t.ecModel,e=s.getComponent("parallel",t.get("parallelIndex")),l=o.coordSysDims=e.dimensions.slice();E(e.parallelAxisIndex,function(t,e){var i=s.getComponent("parallelAxis",t),n=l[e];a.set(n,i),cp(i)&&null==o.firstCategoryDimIndex&&(r.set(n,i),o.firstCategoryDimIndex=e)})}};function cp(t){return"category"===t.get("type")}function dp(t,i,e){var n,o,a,r,s=(e=e||{}).byIndex,l=e.stackedCoordDimension,u=!(!t||!t.get("stack"));if(E(i,function(t,e){R(t)&&(i[e]=t={name:t}),u&&!t.isExtraCoord&&(s||n||!t.ordinalMeta||(n=t),o||"ordinal"===t.type||"time"===t.type||l&&l!==t.coordDim||(o=t))}),!o||s||n||(s=!0),o){a="__\0ecstackresult",r="__\0ecstackedover",n&&(n.createInvertedIndices=!0);var h=o.coordDim,c=o.type,d=0;E(i,function(t){t.coordDim===h&&d++}),i.push({name:a,coordDim:h,coordDimIndex:d,type:c,isExtraCoord:!0,isCalculationCoord:!0}),d++,i.push({name:r,coordDim:r,coordDimIndex:d,type:c,isExtraCoord:!0,isCalculationCoord:!0})}return{stackedDimension:o&&o.name,stackedByDimension:n&&n.name,isStackedByIndex:s,stackedOverDimension:r,stackResultDimension:a}}function fp(t,e){return!!e&&e===t.getCalculationInfo("stackedDimension")}function pp(t,e){return fp(t,e)?t.getCalculationInfo("stackResultDimension"):e}function gp(t,e,i){i=i||{},Uu.isInstance(t)||(t=Uu.seriesDataToSource(t));var n,o=e.get("coordinateSystem"),a=lh.get(o),r=function(t){var e=t.get("coordinateSystem"),i=new up(e),n=hp[e];if(n)return n(t,i,i.axisMap,i.categoryAxisMap),i}(e);r&&(n=O(r.coordSysDims,function(t){var e={name:t},i=r.axisMap.get(t);if(i){var n=i.get("type");e.type=Ef(n)}return e})),n=n||(a&&(a.getDimensionsInfo?a.getDimensionsInfo():a.dimensions.slice())||["x","y"]);var s,l,u=lp(t,{coordDimensions:n,generateCoord:i.generateCoord,encodeDefaulter:i.useEncodeDefaulter?T($u,n,e):null});r&&E(u,function(t,e){var i=t.coordDim,n=r.categoryAxisMap.get(i);n&&(null==s&&(s=e),t.ordinalMeta=n.getOrdinalMeta()),null!=t.otherDims.itemName&&(l=!0)}),l||null==s||(u[s].otherDims.itemName=0);var h=dp(e,u),c=new Yf(u,e);c.setCalculationInfo(h);var d=null!=s&&function(t){if(t.sourceFormat===zu){var e=function(t){var e=0;for(;e<t.length&&null==t[e];)e++;return t[e]}(t.data||[]);return null!=e&&!L(Wo(e))}}(t)?function(t,e,i,n){return n===s?i:this.defaultDimValueGetter(t,e,i,n)}:null;return c.hasItemOption=!1,c.initData(t,null,d),c}function mp(t){this._setting=t||{},this._extent=[1/0,-1/0],this._interval=0,this.init&&this.init.apply(this,arguments)}function vp(t){this.categories=t.categories||[],this._needCollect=t.needCollect,this._deduplication=t.deduplication,this._map}mp.prototype.parse=function(t){return t},mp.prototype.getSetting=function(t){return this._setting[t]},mp.prototype.contain=function(t){var e=this._extent;return t>=e[0]&&t<=e[1]},mp.prototype.normalize=function(t){var e=this._extent;return e[1]===e[0]?.5:(t-e[0])/(e[1]-e[0])},mp.prototype.scale=function(t){var e=this._extent;return t*(e[1]-e[0])+e[0]},mp.prototype.unionExtent=function(t){var e=this._extent;t[0]<e[0]&&(e[0]=t[0]),t[1]>e[1]&&(e[1]=t[1])},mp.prototype.unionExtentFromData=function(t,e){this.unionExtent(t.getApproximateExtent(e))},mp.prototype.getExtent=function(){return this._extent.slice()},mp.prototype.setExtent=function(t,e){var i=this._extent;isNaN(t)||(i[0]=t),isNaN(e)||(i[1]=e)},mp.prototype.isBlank=function(){return this._isBlank},mp.prototype.setBlank=function(t){this._isBlank=t},mp.prototype.getLabel=null,oa(mp),ua(mp,{registerWhenExtend:!0}),vp.createByAxisModel=function(t){var e=t.option,i=e.data,n=i&&O(i,_p);return new vp({categories:n,needCollect:!n,deduplication:!1!==e.dedplication})};var yp=vp.prototype;function xp(t){return t._map||(t._map=Q(t.categories))}function _p(t){return z(t)&&null!=t.value?t.value:t+""}yp.getOrdinal=function(t){return xp(this).get(t)},yp.parseAndCollect=function(t){var e,i=this._needCollect;if("string"!=typeof t&&!i)return t;if(i&&!this._deduplication)return e=this.categories.length,this.categories[e]=t,e;var n=xp(this);return null==(e=n.get(t))&&(i?(e=this.categories.length,this.categories[e]=t,n.set(t,e)):e=NaN),e};var wp=mp.prototype,bp=mp.extend({type:"ordinal",init:function(t,e){t&&!L(t)||(t=new vp({categories:t})),this._ordinalMeta=t,this._extent=e||[0,t.categories.length-1]},parse:function(t){return"string"==typeof t?this._ordinalMeta.getOrdinal(t):Math.round(t)},contain:function(t){return t=this.parse(t),wp.contain.call(this,t)&&null!=this._ordinalMeta.categories[t]},normalize:function(t){return wp.normalize.call(this,this.parse(t))},scale:function(t){return Math.round(wp.scale.call(this,t))},getTicks:function(){for(var t=[],e=this._extent,i=e[0];i<=e[1];)t.push(i),i++;return t},getLabel:function(t){if(!this.isBlank())return this._ordinalMeta.categories[t]},count:function(){return this._extent[1]-this._extent[0]+1},unionExtentFromData:function(t,e){this.unionExtent(t.getApproximateExtent(e))},getOrdinalMeta:function(){return this._ordinalMeta},niceTicks:et,niceExtent:et});bp.create=function(){return new bp};var Sp=zl;function Mp(t){return Gl(t)+2}function Ip(t,e,i){t[e]=Math.max(Math.min(t[e],i[1]),i[0])}function Tp(t,e){isFinite(t[0])||(t[0]=e[0]),isFinite(t[1])||(t[1]=e[1]),Ip(t,0,e),Ip(t,1,e),t[0]>t[1]&&(t[0]=t[1])}var Ap=zl,Dp=mp.extend({type:"interval",_interval:0,_intervalPrecision:2,setExtent:function(t,e){var i=this._extent;isNaN(t)||(i[0]=parseFloat(t)),isNaN(e)||(i[1]=parseFloat(e))},unionExtent:function(t){var e=this._extent;t[0]<e[0]&&(e[0]=t[0]),t[1]>e[1]&&(e[1]=t[1]),Dp.prototype.setExtent.call(this,e[0],e[1])},getInterval:function(){return this._interval},setInterval:function(t){this._interval=t,this._niceExtent=this._extent.slice(),this._intervalPrecision=Mp(t)},getTicks:function(t){var e=this._interval,i=this._extent,n=this._niceExtent,o=this._intervalPrecision,a=[];if(!e)return a;i[0]<n[0]&&(t?a.push(Ap(n[0]-e,o)):a.push(i[0]));for(var r=n[0];r<=n[1]&&(a.push(r),(r=Ap(r+e,o))!==a[a.length-1]);)if(1e4<a.length)return[];var s=a.length?a[a.length-1]:n[1];return i[1]>s&&(t?a.push(Ap(s+e,o)):a.push(i[1])),a},getMinorTicks:function(t){for(var e=this.getTicks(!0),i=[],n=this.getExtent(),o=1;o<e.length;o++){for(var a=e[o],r=e[o-1],s=0,l=[],u=(a-r)/t;s<t-1;){var h=zl(r+(s+1)*u);h>n[0]&&h<n[1]&&l.push(h),s++}i.push(l)}return i},getLabel:function(t,e){if(null==t)return"";var i=e&&e.precision;return null==i?i=Gl(t)||0:"auto"===i&&(i=this._intervalPrecision),tu(t=Ap(t,i,!0))},niceTicks:function(t,e,i){t=t||5;var n=this._extent,o=n[1]-n[0];if(isFinite(o)){o<0&&(o=-o,n.reverse());var a=function(t,e,i,n){var o={},a=t[1]-t[0],r=o.interval=Kl(a/e,!0);null!=i&&r<i&&(r=o.interval=i),null!=n&&n<r&&(r=o.interval=n);var s=o.intervalPrecision=Mp(r);return Tp(o.niceTickExtent=[Sp(Math.ceil(t[0]/r)*r,s),Sp(Math.floor(t[1]/r)*r,s)],t),o}(n,t,e,i);this._intervalPrecision=a.intervalPrecision,this._interval=a.interval,this._niceExtent=a.niceTickExtent}},niceExtent:function(t){var e=this._extent;if(e[0]===e[1])if(0!==e[0]){var i=e[0];t.fixMax||(e[1]+=i/2),e[0]-=i/2}else e[1]=1;var n=e[1]-e[0];isFinite(n)||(e[0]=0,e[1]=1),this.niceTicks(t.splitNumber,t.minInterval,t.maxInterval);var o=this._interval;t.fixMin||(e[0]=Ap(Math.floor(e[0]/o)*o)),t.fixMax||(e[1]=Ap(Math.ceil(e[1]/o)*o))}});Dp.create=function(){return new Dp};var Cp="__ec_stack_",Lp="undefined"!=typeof Float32Array?Float32Array:Array;function kp(t){return t.get("stack")||Cp+t.seriesIndex}function Pp(t){return t.dim+t.index}function Np(t,e){var i=[];return e.eachSeriesByType(t,function(t){Vp(t)&&!Gp(t)&&i.push(t)}),i}function Op(t){var g=function(t){var l={};E(t,function(t){var e=t.coordinateSystem.getBaseAxis();if("time"===e.type||"value"===e.type)for(var i=t.getData(),n=e.dim+"_"+e.index,o=i.mapDimension(e.dim),a=0,r=i.count();a<r;++a){var s=i.get(o,a);l[n]?l[n].push(s):l[n]=[s]}});var e=[];for(var i in l)if(l.hasOwnProperty(i)){var n=l[i];if(n){n.sort(function(t,e){return t-e});for(var o=null,a=1;a<n.length;++a){var r=n[a]-n[a-1];0<r&&(o=null===o?r:Math.min(o,r))}e[i]=o}}return e}(t),m=[];return E(t,function(t){var e,i=t.coordinateSystem.getBaseAxis(),n=i.getExtent();if("category"===i.type)e=i.getBandWidth();else if("value"===i.type||"time"===i.type){var o=i.dim+"_"+i.index,a=g[o],r=Math.abs(n[1]-n[0]),s=i.scale.getExtent(),l=Math.abs(s[1]-s[0]);e=a?r/l*a:r}else{var u=t.getData();e=Math.abs(n[1]-n[0])/u.count()}var h=Rl(t.get("barWidth"),e),c=Rl(t.get("barMaxWidth"),e),d=Rl(t.get("barMinWidth")||1,e),f=t.get("barGap"),p=t.get("barCategoryGap");m.push({bandWidth:e,barWidth:h,barMaxWidth:c,barMinWidth:d,barGap:f,barCategoryGap:p,axisKey:Pp(i),stackId:kp(t)})}),Ep(m)}function Ep(t){var d={};E(t,function(t,e){var i=t.axisKey,n=t.bandWidth,o=d[i]||{bandWidth:n,remainedWidth:n,autoWidthCount:0,categoryGap:"20%",gap:"30%",stacks:{}},a=o.stacks;d[i]=o;var r=t.stackId;a[r]||o.autoWidthCount++,a[r]=a[r]||{width:0,maxWidth:0};var s=t.barWidth;s&&!a[r].width&&(a[r].width=s,s=Math.min(o.remainedWidth,s),o.remainedWidth-=s);var l=t.barMaxWidth;l&&(a[r].maxWidth=l);var u=t.barMinWidth;u&&(a[r].minWidth=u);var h=t.barGap;null!=h&&(o.gap=h);var c=t.barCategoryGap;null!=c&&(o.categoryGap=c)});var f={};return E(d,function(t,i){f[i]={};var e=t.stacks,n=t.bandWidth,o=Rl(t.categoryGap,n),a=Rl(t.gap,1),r=t.remainedWidth,s=t.autoWidthCount,l=(r-o)/(s+(s-1)*a);l=Math.max(l,0),E(e,function(t){var e=t.maxWidth,i=t.minWidth;if(t.width){n=t.width;e&&(n=Math.min(n,e)),i&&(n=Math.max(n,i)),t.width=n,r-=n+a*n,s--}else{var n=l;e&&e<n&&(n=Math.min(e,r)),i&&n<i&&(n=i),n!==l&&(t.width=n,r-=n+a*n,s--)}}),l=(r-o)/(s+(s-1)*a),l=Math.max(l,0);var u,h=0;E(e,function(t,e){t.width||(t.width=l),h+=(u=t).width*(1+a)}),u&&(h-=u.width*a);var c=-h/2;E(e,function(t,e){f[i][e]=f[i][e]||{bandWidth:n,offset:c,width:t.width},c+=t.width*(1+a)})}),f}function Rp(t,e,i){if(t&&e){var n=t[Pp(e)];return null!=n&&null!=i&&(n=n[kp(i)]),n}}function zp(t,e){var i=Np(t,e),T=Op(i),A={};E(i,function(t){var e=t.getData(),i=t.coordinateSystem,n=i.getBaseAxis(),o=kp(t),a=T[Pp(n)][o],r=a.offset,s=a.width,l=i.getOtherAxis(n),u=t.get("barMinHeight")||0;A[o]=A[o]||[],e.setLayout({bandWidth:a.bandWidth,offset:r,size:s});for(var h=e.mapDimension(l.dim),c=e.mapDimension(n.dim),d=fp(e,h),f=l.isHorizontal(),p=Fp(n,l,d),g=0,m=e.count();g<m;g++){var v,y,x,_,w,b=e.get(h,g),S=e.get(c,g),M=0<=b?"p":"n",I=p;if(d&&(A[o][S]||(A[o][S]={p:p,n:p}),I=A[o][S][M]),f)v=I,y=(w=i.dataToPoint([b,S]))[1]+r,x=w[0]-p,_=s,Math.abs(x)<u&&(x=(x<0?-1:1)*u),isNaN(x)||d&&(A[o][S][M]+=x);else v=(w=i.dataToPoint([S,b]))[0]+r,y=I,x=s,_=w[1]-p,Math.abs(_)<u&&(_=(_<=0?-1:1)*u),isNaN(_)||d&&(A[o][S][M]+=_);e.setItemLayout(g,{x:v,y:y,width:x,height:_})}},this)}var Bp={seriesType:"bar",plan:vc(),reset:function(t){if(Vp(t)&&Gp(t)){var e=t.getData(),c=t.coordinateSystem,d=c.grid.getRect(),f=c.getBaseAxis(),p=c.getOtherAxis(f),g=e.mapDimension(p.dim),m=e.mapDimension(f.dim),v=p.isHorizontal(),y=v?0:1,x=Rp(Op([t]),f,t).width;return.5<x||(x=.5),{progress:function(t,e){var i,n=t.count,o=new Lp(2*n),a=new Lp(2*n),r=new Lp(n),s=[],l=[],u=0,h=0;for(;null!=(i=t.next());)l[y]=e.get(g,i),l[1-y]=e.get(m,i),s=c.dataToPoint(l,null,s),a[u]=v?d.x+d.width:s[0],o[u++]=s[0],a[u]=v?s[1]:d.y+d.height,o[u++]=s[1],r[h++]=i;e.setLayout({largePoints:o,largeDataIndices:r,largeBackgroundPoints:a,barWidth:x,valueAxisStart:Fp(f,p,!1),backgroundStart:v?d.x:d.y,valueAxisHorizontal:v})}}}}};function Vp(t){return t.coordinateSystem&&"cartesian2d"===t.coordinateSystem.type}function Gp(t){return t.pipelineContext&&t.pipelineContext.large}function Fp(t,e){return e.toGlobalCoord(e.dataToCoord("log"===e.type?1:0))}var Wp=Dp.prototype,Hp=Math.ceil,Zp=Math.floor,Up=36e5,Xp=864e5,Yp=Dp.extend({type:"time",getLabel:function(t){var e=this._stepLvl,i=new Date(t);return du(e[0],i,this.getSetting("useUTC"))},niceExtent:function(t){var e=this._extent;if(e[0]===e[1]&&(e[0]-=Xp,e[1]+=Xp),e[1]===-1/0&&e[0]===1/0){var i=new Date;e[1]=+new Date(i.getFullYear(),i.getMonth(),i.getDate()),e[0]=e[1]-Xp}this.niceTicks(t.splitNumber,t.minInterval,t.maxInterval);var n=this._interval;t.fixMin||(e[0]=zl(Zp(e[0]/n)*n)),t.fixMax||(e[1]=zl(Hp(e[1]/n)*n))},niceTicks:function(t,e,i){t=t||10;var n=this._extent,o=n[1]-n[0],a=o/t;null!=e&&a<e&&(a=e),null!=i&&i<a&&(a=i);var r=jp.length,s=function(t,e,i,n){for(;i<n;){var o=i+n>>>1;t[o][1]<e?i=1+o:n=o}return i}(jp,a,0,r),l=jp[Math.min(s,r-1)],u=l[1];"year"===l[0]&&(u*=Kl(o/u/t,!0));var h=this.getSetting("useUTC")?0:60*new Date(+n[0]||+n[1]).getTimezoneOffset()*1e3,c=[Math.round(Hp((n[0]-h)/u)*u+h),Math.round(Zp((n[1]-h)/u)*u+h)];Tp(c,n),this._stepLvl=l,this._interval=u,this._niceExtent=c},parse:function(t){return+Yl(t)}});E(["contain","normalize"],function(e){Yp.prototype[e]=function(t){return Wp[e].call(this,this.parse(t))}});var jp=[["hh:mm:ss",1e3],["hh:mm:ss",5e3],["hh:mm:ss",1e4],["hh:mm:ss",15e3],["hh:mm:ss",3e4],["hh:mm\nMM-dd",6e4],["hh:mm\nMM-dd",3e5],["hh:mm\nMM-dd",6e5],["hh:mm\nMM-dd",9e5],["hh:mm\nMM-dd",18e5],["hh:mm\nMM-dd",Up],["hh:mm\nMM-dd",72e5],["hh:mm\nMM-dd",6*Up],["hh:mm\nMM-dd",432e5],["MM-dd\nyyyy",Xp],["MM-dd\nyyyy",2*Xp],["MM-dd\nyyyy",3*Xp],["MM-dd\nyyyy",4*Xp],["MM-dd\nyyyy",5*Xp],["MM-dd\nyyyy",6*Xp],["week",7*Xp],["MM-dd\nyyyy",864e6],["week",14*Xp],["week",21*Xp],["month",31*Xp],["week",42*Xp],["month",62*Xp],["week",70*Xp],["quarter",95*Xp],["month",31*Xp*4],["month",13392e6],["half-year",16416e6],["month",31*Xp*8],["month",26784e6],["year",380*Xp]];Yp.create=function(t){return new Yp({useUTC:t.ecModel.get("useUTC")})};var qp=mp.prototype,Kp=Dp.prototype,$p=Gl,Jp=zl,Qp=Math.floor,tg=Math.ceil,eg=Math.pow,ig=Math.log,ng=mp.extend({type:"log",base:10,$constructor:function(){mp.apply(this,arguments),this._originalScale=new Dp},getTicks:function(t){var i=this._originalScale,n=this._extent,o=i.getExtent();return O(Kp.getTicks.call(this,t),function(t){var e=zl(eg(this.base,t));return e=t===n[0]&&i.__fixMin?og(e,o[0]):e,e=t===n[1]&&i.__fixMax?og(e,o[1]):e},this)},getMinorTicks:Kp.getMinorTicks,getLabel:Kp.getLabel,scale:function(t){return t=qp.scale.call(this,t),eg(this.base,t)},setExtent:function(t,e){var i=this.base;t=ig(t)/ig(i),e=ig(e)/ig(i),Kp.setExtent.call(this,t,e)},getExtent:function(){var t=this.base,e=qp.getExtent.call(this);e[0]=eg(t,e[0]),e[1]=eg(t,e[1]);var i=this._originalScale,n=i.getExtent();return i.__fixMin&&(e[0]=og(e[0],n[0])),i.__fixMax&&(e[1]=og(e[1],n[1])),e},unionExtent:function(t){this._originalScale.unionExtent(t);var e=this.base;t[0]=ig(t[0])/ig(e),t[1]=ig(t[1])/ig(e),qp.unionExtent.call(this,t)},unionExtentFromData:function(t,e){this.unionExtent(t.getApproximateExtent(e))},niceTicks:function(t){t=t||10;var e=this._extent,i=e[1]-e[0];if(!(i==1/0||i<=0)){var n=jl(i);for(t/i*n<=.5&&(n*=10);!isNaN(n)&&Math.abs(n)<1&&0<Math.abs(n);)n*=10;var o=[zl(tg(e[0]/n)*n),zl(Qp(e[1]/n)*n)];this._interval=n,this._niceExtent=o}},niceExtent:function(t){Kp.niceExtent.call(this,t);var e=this._originalScale;e.__fixMin=t.fixMin,e.__fixMax=t.fixMax}});function og(t,e){return Jp(t,$p(e))}function ag(t,e){var i,n,o,a=t.type,r=e.getMin(),s=e.getMax(),l=t.getExtent();"ordinal"===a?i=e.getCategories().length:(L(n=e.get("boundaryGap"))||(n=[n||0,n||0]),"boolean"==typeof n[0]&&(n=[0,0]),n[0]=Rl(n[0],1),n[1]=Rl(n[1],1),o=l[1]-l[0]||Math.abs(l[0])),"dataMin"===r?r=l[0]:"function"==typeof r&&(r=r({min:l[0],max:l[1]})),"dataMax"===s?s=l[1]:"function"==typeof s&&(s=s({min:l[0],max:l[1]}));var u=null!=r,h=null!=s;null==r&&(r="ordinal"===a?i?0:NaN:l[0]-n[0]*o),null==s&&(s="ordinal"===a?i?i-1:NaN:l[1]+n[1]*o),null!=r&&isFinite(r)||(r=NaN),null!=s&&isFinite(s)||(s=NaN),t.setBlank(F(r)||F(s)||"ordinal"===a&&!t.getOrdinalMeta().categories.length),e.getNeedCrossZero()&&(0<r&&0<s&&!u&&(r=0),r<0&&s<0&&!h&&(s=0));var c=e.ecModel;if(c&&"time"===a){var d,f=Np("bar",c);if(E(f,function(t){d|=t.getBaseAxis()===e.axis}),d){var p=Op(f),g=function(t,e,i,n){var o=i.axis.getExtent(),a=o[1]-o[0],r=Rp(n,i.axis);if(void 0===r)return{min:t,max:e};var s=1/0;E(r,function(t){s=Math.min(t.offset,s)});var l=-1/0;E(r,function(t){l=Math.max(t.offset+t.width,l)}),s=Math.abs(s),l=Math.abs(l);var u=s+l,h=e-t,c=h/(1-(s+l)/a)-h;return{min:t-=s/u*c,max:e+=l/u*c}}(r,s,e,p);r=g.min,s=g.max}}return{extent:[r,s],fixMin:u,fixMax:h}}function rg(t,e){var i=ag(t,e),n=i.extent,o=e.get("splitNumber");"log"===t.type&&(t.base=e.get("logBase"));var a=t.type;t.setExtent(n[0],n[1]),t.niceExtent({splitNumber:o,fixMin:i.fixMin,fixMax:i.fixMax,minInterval:"interval"===a||"time"===a?e.get("minInterval"):null,maxInterval:"interval"===a||"time"===a?e.get("maxInterval"):null});var r=e.get("interval");null!=r&&t.setInterval&&t.setInterval(r)}function sg(t,e){if(e=e||t.get("type"))switch(e){case"category":return new bp(t.getOrdinalMeta?t.getOrdinalMeta():t.getCategories(),[1/0,-1/0]);case"value":return new Dp;default:return(mp.getClass(e)||Dp).create(t)}}function lg(i){var e,n=i.getLabelModel().get("formatter"),o="category"===i.type?i.scale.getExtent()[0]:null;return"string"==typeof n?(e=n,n=function(t){return t=i.scale.getLabel(t),e.replace("{value}",null!=t?t:"")}):"function"==typeof n?function(t,e){return null!=o&&(e=t-o),n(ug(i,t),e)}:function(t){return i.scale.getLabel(t)}}function ug(t,e){return"category"===t.type?t.scale.getLabel(e):e}function hg(t){var e=t.get("interval");return null==e?"auto":e}function cg(t){return"category"===t.type&&0===hg(t.getLabelModel())}E(["contain","normalize"],function(e){ng.prototype[e]=function(t){return t=ig(t)/ig(this.base),qp[e].call(this,t)}}),ng.create=function(){return new ng};var dg={getMin:function(t){var e=this.option,i=t||null==e.rangeStart?e.min:e.rangeStart;return this.axis&&null!=i&&"dataMin"!==i&&"function"!=typeof i&&!F(i)&&(i=this.axis.scale.parse(i)),i},getMax:function(t){var e=this.option,i=t||null==e.rangeEnd?e.max:e.rangeEnd;return this.axis&&null!=i&&"dataMax"!==i&&"function"!=typeof i&&!F(i)&&(i=this.axis.scale.parse(i)),i},getNeedCrossZero:function(){var t=this.option;return null==t.rangeStart&&null==t.rangeEnd&&!t.scale},getCoordSysModel:et,setRange:function(t,e){this.option.rangeStart=t,this.option.rangeEnd=e},resetRange:function(){this.option.rangeStart=this.option.rangeEnd=null}},fg=Cs({type:"triangle",shape:{cx:0,cy:0,width:0,height:0},buildPath:function(t,e){var i=e.cx,n=e.cy,o=e.width/2,a=e.height/2;t.moveTo(i,n-a),t.lineTo(i+o,n+a),t.lineTo(i-o,n+a),t.closePath()}}),pg=Cs({type:"diamond",shape:{cx:0,cy:0,width:0,height:0},buildPath:function(t,e){var i=e.cx,n=e.cy,o=e.width/2,a=e.height/2;t.moveTo(i,n-a),t.lineTo(i+o,n),t.lineTo(i,n+a),t.lineTo(i-o,n),t.closePath()}}),gg=Cs({type:"pin",shape:{x:0,y:0,width:0,height:0},buildPath:function(t,e){var i=e.x,n=e.y,o=e.width/5*3,a=Math.max(o,e.height),r=o/2,s=r*r/(a-r),l=n-a+r+s,u=Math.asin(s/r),h=Math.cos(u)*r,c=Math.sin(u),d=Math.cos(u),f=.6*r,p=.7*r;t.moveTo(i-h,l+s),t.arc(i,l,r,Math.PI-u,2*Math.PI+u),t.bezierCurveTo(i+h-c*f,l+s+d*f,i,n-p,i,n),t.bezierCurveTo(i,n-p,i-h+c*f,l+s+d*f,i-h,l+s),t.closePath()}}),mg=Cs({type:"arrow",shape:{x:0,y:0,width:0,height:0},buildPath:function(t,e){var i=e.height,n=e.width,o=e.x,a=e.y,r=n/3*2;t.moveTo(o,a),t.lineTo(o+r,a+i),t.lineTo(o,a+i/4*3),t.lineTo(o-r,a+i),t.lineTo(o,a),t.closePath()}}),vg={line:function(t,e,i,n,o){o.x1=t,o.y1=e+n/2,o.x2=t+i,o.y2=e+n/2},rect:function(t,e,i,n,o){o.x=t,o.y=e,o.width=i,o.height=n},roundRect:function(t,e,i,n,o){o.x=t,o.y=e,o.width=i,o.height=n,o.r=Math.min(i,n)/4},square:function(t,e,i,n,o){var a=Math.min(i,n);o.x=t,o.y=e,o.width=a,o.height=a},circle:function(t,e,i,n,o){o.cx=t+i/2,o.cy=e+n/2,o.r=Math.min(i,n)/2},diamond:function(t,e,i,n,o){o.cx=t+i/2,o.cy=e+n/2,o.width=i,o.height=n},pin:function(t,e,i,n,o){o.x=t+i/2,o.y=e+n/2,o.width=i,o.height=n},arrow:function(t,e,i,n,o){o.x=t+i/2,o.y=e+n/2,o.width=i,o.height=n},triangle:function(t,e,i,n,o){o.cx=t+i/2,o.cy=e+n/2,o.width=i,o.height=n}},yg={};E({line:ls,rect:rs,roundRect:rs,square:rs,circle:Yr,diamond:pg,pin:gg,arrow:mg,triangle:fg},function(t,e){yg[e]=new t});var xg=Cs({type:"symbol",shape:{symbolType:"",x:0,y:0,width:0,height:0},calculateTextPosition:function(t,e,i){var n=yn(t,e,i),o=this.shape;return o&&"pin"===o.symbolType&&"inside"===e.textPosition&&(n.y=i.y+.4*i.height),n},buildPath:function(t,e,i){var n=e.symbolType;if("none"!==n){var o=yg[n];o=o||yg[n="rect"],vg[n](e.x,e.y,e.width,e.height,o.shape),o.buildPath(t,o.shape,i)}}});function _g(t,e){if("image"!==this.type){var i=this.style,n=this.shape;n&&"line"===n.symbolType?i.stroke=t:this.__isEmptyBrush?(i.stroke=t,i.fill=e||"#fff"):(i.fill&&(i.fill=t),i.stroke&&(i.stroke=t)),this.dirty(!1)}}function wg(t,e,i,n,o,a,r){var s,l=0===t.indexOf("empty");return l&&(t=t.substr(5,1).toLowerCase()+t.substr(6)),(s=0===t.indexOf("image://")?Ns(t.slice(8),new Di(e,i,n,o),r?"center":"cover"):0===t.indexOf("path://")?Ps(t.slice(7),{},new Di(e,i,n,o),r?"center":"cover"):new xg({shape:{symbolType:t,x:e,y:i,width:n,height:o}})).__isEmptyBrush=l,s.setColor=_g,s.setColor(a),s}var bg={isDimensionStacked:fp,enableDataStack:dp,getStackedDimension:pp};var Sg=(Object.freeze||Object)({createList:function(t){return gp(t.getSource(),t)},getLayoutRect:bu,dataStack:bg,createScale:function(t,e){var i=e;Cl.isInstance(e)||b(i=new Cl(e),dg);var n=sg(i);return n.setExtent(t[0],t[1]),rg(n,i),n},mixinAxisModelCommonMethods:function(t){b(t,dg)},completeDimensions:rp,createDimensions:lp,createSymbol:wg}),Mg=1e-8;function Ig(t,e){return Math.abs(t-e)<Mg}function Tg(t,e,i){var n=0,o=t[0];if(!o)return!1;for(var a=1;a<t.length;a++){var r=t[a];n+=pr(o[0],o[1],r[0],r[1],e,i),o=r}var s=t[0];return Ig(o[0],s[0])&&Ig(o[1],s[1])||(n+=pr(o[0],o[1],s[0],s[1],e,i)),0!==n}function Ag(t,e,i){if(this.name=t,this.geometries=e,i)i=[i[0],i[1]];else{var n=this.getBoundingRect();i=[n.x+n.width/2,n.y+n.height/2]}this.center=i}function Dg(t,e,i){for(var n=[],o=e[0],a=e[1],r=0;r<t.length;r+=2){var s=t.charCodeAt(r)-64,l=t.charCodeAt(r+1)-64;s=s>>1^-(1&s),l=l>>1^-(1&l),o=s+=o,a=l+=a,n.push([s/i,l/i])}return n}Ag.prototype={constructor:Ag,properties:null,getBoundingRect:function(){var t=this._rect;if(t)return t;for(var e=Number.MAX_VALUE,i=[e,e],n=[-e,-e],o=[],a=[],r=this.geometries,s=0;s<r.length;s++){if("polygon"===r[s].type)Wa(r[s].exterior,o,a),St(i,i,o),Mt(n,n,a)}return 0===s&&(i[0]=i[1]=n[0]=n[1]=0),this._rect=new Di(i[0],i[1],n[0]-i[0],n[1]-i[1])},contain:function(t){var e=this.getBoundingRect(),i=this.geometries;if(!e.contain(t[0],t[1]))return!1;t:for(var n=0,o=i.length;n<o;n++)if("polygon"===i[n].type){var a=i[n].exterior,r=i[n].interiors;if(Tg(a,t[0],t[1])){for(var s=0;s<(r?r.length:0);s++)if(Tg(r[s]))continue t;return!0}}return!1},transformTo:function(t,e,i,n){var o=this.getBoundingRect(),a=o.width/o.height;i?n=n||i/a:i=a*n;for(var r=new Di(t,e,i,n),s=o.calculateTransform(r),l=this.geometries,u=0;u<l.length;u++)if("polygon"===l[u].type){for(var h=l[u].exterior,c=l[u].interiors,d=0;d<h.length;d++)bt(h[d],h[d],s);for(var f=0;f<(c?c.length:0);f++)for(d=0;d<c[f].length;d++)bt(c[f][d],c[f][d],s)}(o=this._rect).copy(r),this.center=[o.x+o.width/2,o.y+o.height/2]},cloneShallow:function(t){null==t&&(t=this.name);var e=new Ag(t,this.geometries,this.center);return e._rect=this._rect,e.transformTo=null,e}};function Cg(t,r){return function(t){if(!t.UTF8Encoding)return;var e=t.UTF8Scale;null==e&&(e=1024);for(var i=t.features,n=0;n<i.length;n++)for(var o=i[n].geometry,a=o.coordinates,r=o.encodeOffsets,s=0;s<a.length;s++){var l=a[s];if("Polygon"===o.type)a[s]=Dg(l,r[s],e);else if("MultiPolygon"===o.type)for(var u=0;u<l.length;u++){var h=l[u];l[u]=Dg(h,r[s][u],e)}}t.UTF8Encoding=!1}(t),O(M(t.features,function(t){return t.geometry&&t.properties&&0<t.geometry.coordinates.length}),function(t){var e=t.properties,i=t.geometry,n=i.coordinates,o=[];"Polygon"===i.type&&o.push({type:"polygon",exterior:n[0],interiors:n.slice(1)}),"MultiPolygon"===i.type&&E(n,function(t){t[0]&&o.push({type:"polygon",exterior:t[0],interiors:t.slice(1)})});var a=new Ag(e[r||"name"],o,e.cp);return a.properties=e,a})}var Lg=jo();function kg(t){return"category"===t.type?function(t){var e=t.getLabelModel(),i=Ng(t,e);return!e.get("show")||t.scale.isBlank()?{labels:[],labelCategoryInterval:i.labelCategoryInterval}:i}(t):function(i){var t=i.scale.getTicks(),n=lg(i);return{labels:O(t,function(t,e){return{formattedLabel:n(t,e),rawLabel:i.scale.getLabel(t),tickValue:t}})}}(t)}function Pg(t,e){return"category"===t.type?function(t,e){var i,n,o=Og(t,"ticks"),a=hg(e),r=Eg(o,a);if(r)return r;e.get("show")&&!t.scale.isBlank()||(i=[]);if(C(a))i=Bg(t,a,!0);else if("auto"===a){var s=Ng(t,t.getLabelModel());n=s.labelCategoryInterval,i=O(s.labels,function(t){return t.tickValue})}else i=zg(t,n=a,!0);return Rg(o,a,{ticks:i,tickCategoryInterval:n})}(t,e):{ticks:t.scale.getTicks()}}function Ng(t,e){var i,n=Og(t,"labels"),o=hg(e),a=Eg(n,o);return a||Rg(n,o,{labels:C(o)?Bg(t,o):zg(t,i="auto"===o?function(t){var e=Lg(t).autoInterval;return null!=e?e:Lg(t).autoInterval=t.calculateCategoryInterval()}(t):o),labelCategoryInterval:i})}function Og(t,e){return Lg(t)[e]||(Lg(t)[e]=[])}function Eg(t,e){for(var i=0;i<t.length;i++)if(t[i].key===e)return t[i].value}function Rg(t,e,i){return t.push({key:e,value:i}),i}function zg(t,e,i){var n=lg(t),o=t.scale,a=o.getExtent(),r=t.getLabelModel(),s=[],l=Math.max((e||0)+1,1),u=a[0],h=o.count();0!==u&&1<l&&2<h/l&&(u=Math.round(Math.ceil(u/l)*l));var c=cg(t),d=r.get("showMinLabel")||c,f=r.get("showMaxLabel")||c;d&&u!==a[0]&&g(a[0]);for(var p=u;p<=a[1];p+=l)g(p);function g(t){s.push(i?t:{formattedLabel:n(t),rawLabel:o.getLabel(t),tickValue:t})}return f&&p-l!==a[1]&&g(a[1]),s}function Bg(t,i,n){var o=t.scale,a=lg(t),r=[];return E(o.getTicks(),function(t){var e=o.getLabel(t);i(t,e)&&r.push(n?t:{formattedLabel:a(t),rawLabel:e,tickValue:t})}),r}var Vg=[0,1],Gg=function(t,e,i){this.dim=t,this.scale=e,this._extent=i||[0,0],this.inverse=!1,this.onBand=!1};function Fg(t,e){var i=(t[1]-t[0])/e/2;t[0]+=i,t[1]-=i}Gg.prototype={constructor:Gg,contain:function(t){var e=this._extent,i=Math.min(e[0],e[1]),n=Math.max(e[0],e[1]);return i<=t&&t<=n},containData:function(t){return this.scale.contain(t)},getExtent:function(){return this._extent.slice()},getPixelPrecision:function(t){return Fl(t||this.scale.getExtent(),this._extent)},setExtent:function(t,e){var i=this._extent;i[0]=t,i[1]=e},dataToCoord:function(t,e){var i=this._extent,n=this.scale;return t=n.normalize(t),this.onBand&&"ordinal"===n.type&&Fg(i=i.slice(),n.count()),El(t,Vg,i,e)},coordToData:function(t,e){var i=this._extent,n=this.scale;this.onBand&&"ordinal"===n.type&&Fg(i=i.slice(),n.count());var o=El(t,i,Vg,e);return this.scale.scale(o)},pointToData:function(t,e){},getTicksCoords:function(t){var e=(t=t||{}).tickModel||this.getTickModel(),i=O(Pg(this,e).ticks,function(t){return{coord:this.dataToCoord(t),tickValue:t}},this);return function(t,e,i,n){var o=e.length;if(!t.onBand||i||!o)return;var a,r,s=t.getExtent();if(1===o)e[0].coord=s[0],a=e[1]={coord:s[0]};else{var l=e[o-1].tickValue-e[0].tickValue,u=(e[o-1].coord-e[0].coord)/l;E(e,function(t){t.coord-=u/2});var h=t.scale.getExtent();r=1+h[1]-e[o-1].tickValue,a={coord:e[o-1].coord+u*r},e.push(a)}var c=s[0]>s[1];d(e[0].coord,s[0])&&(n?e[0].coord=s[0]:e.shift());n&&d(s[0],e[0].coord)&&e.unshift({coord:s[0]});d(s[1],a.coord)&&(n?a.coord=s[1]:e.pop());n&&d(a.coord,s[1])&&e.push({coord:s[1]});function d(t,e){return t=zl(t),e=zl(e),c?e<t:t<e}}(this,i,e.get("alignWithLabel"),t.clamp),i},getMinorTicksCoords:function(){if("ordinal"===this.scale.type)return[];var t=this.model.getModel("minorTick").get("splitNumber");return 0<t&&t<100||(t=5),O(this.scale.getMinorTicks(t),function(t){return O(t,function(t){return{coord:this.dataToCoord(t),tickValue:t}},this)},this)},getViewLabels:function(){return kg(this).labels},getLabelModel:function(){return this.model.getModel("axisLabel")},getTickModel:function(){return this.model.getModel("axisTick")},getBandWidth:function(){var t=this._extent,e=this.scale.getExtent(),i=e[1]-e[0]+(this.onBand?1:0);0===i&&(i=1);var n=Math.abs(t[1]-t[0]);return Math.abs(n)/i},isHorizontal:null,getRotate:null,calculateCategoryInterval:function(){return function(t){var e=function(t){var e=t.getLabelModel();return{axisRotate:t.getRotate?t.getRotate():t.isHorizontal&&!t.isHorizontal()?90:0,labelRotate:e.get("rotate")||0,font:e.getFont()}}(t),i=lg(t),n=(e.axisRotate-e.labelRotate)/180*Math.PI,o=t.scale,a=o.getExtent(),r=o.count();if(a[1]-a[0]<1)return 0;var s=1;40<r&&(s=Math.max(1,Math.floor(r/40)));for(var l=a[0],u=t.dataToCoord(l+1)-t.dataToCoord(l),h=Math.abs(u*Math.cos(n)),c=Math.abs(u*Math.sin(n)),d=0,f=0;l<=a[1];l+=s){var p,g,m=gn(i(l),e.font,"center","top");p=1.3*m.width,g=1.3*m.height,d=Math.max(d,p,7),f=Math.max(f,g,7)}var v=d/h,y=f/c;isNaN(v)&&(v=1/0),isNaN(y)&&(y=1/0);var x=Math.max(0,Math.floor(Math.min(v,y))),_=Lg(t.model),w=t.getExtent(),b=_.lastAutoInterval,S=_.lastTickCount;return null!=b&&null!=S&&Math.abs(b-x)<=1&&Math.abs(S-r)<=1&&x<b&&_.axisExtend0===w[0]&&_.axisExtend1===w[1]?x=b:(_.lastTickCount=r,_.lastAutoInterval=x,_.axisExtend0=w[0],_.axisExtend1=w[1]),x}(this)}};var Wg=Cg,Hg={};E(["map","each","filter","indexOf","inherits","reduce","filter","bind","curry","isArray","isString","isObject","isFunction","extend","defaults","clone","merge"],function(t){Hg[t]=it[t]});var Zg={};function Ug(t,e){var i=t.mapDimension("defaultedLabel",!0),n=i.length;if(1===n)return Hh(t,e,i[0]);if(n){for(var o=[],a=0;a<i.length;a++){var r=Hh(t,e,i[a]);o.push(r)}return o.join(" ")}}function Xg(t,e,i){Ci.call(this),this.updateData(t,e,i)}E(["extendShape","extendPath","makePath","makeImage","mergePath","resizePath","createIcon","setHoverStyle","setLabelStyle","setTextStyle","setText","getFont","updateProps","initProps","getTransform","clipPointsByRect","clipRectByRect","registerShape","getShapeClass","Group","Image","Text","Circle","Sector","Ring","Polygon","Polyline","Rect","Line","BezierCurve","Arc","IncrementalDisplayable","CompoundPath","LinearGradient","RadialGradient","BoundingRect"],function(t){Zg[t]=bl[t]}),sc.extend({type:"series.line",dependencies:["grid","polar"],getInitialData:function(t,e){return gp(this.getSource(),this,{useEncodeDefaulter:!0})},defaultOption:{zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,hoverAnimation:!0,clip:!0,label:{position:"top"},lineStyle:{width:2,type:"solid"},step:!1,smooth:!1,smoothMonotone:null,symbol:"emptyCircle",symbolSize:4,symbolRotate:null,showSymbol:!0,showAllSymbol:"auto",connectNulls:!1,sampling:"none",animationEasing:"linear",progressive:0,hoverLayerThreshold:1/0}});var Yg=Xg.prototype,jg=Xg.getSymbolSize=function(t,e){var i=t.getItemVisual(e,"symbolSize");return i instanceof Array?i.slice():[+i,+i]};function qg(t){return[t[0]/2,t[1]/2]}function Kg(t,e){this.parent.drift(t,e)}Yg._createSymbol=function(t,e,i,n,o){this.removeAll();var a=wg(t,-1,-1,2,2,e.getItemVisual(i,"color"),o);a.attr({z2:100,culling:!0,scale:qg(n)}),a.drift=Kg,this._symbolType=t,this.add(a)},Yg.stopSymbolAnimation=function(t){this.childAt(0).stopAnimation(t)},Yg.getSymbolPath=function(){return this.childAt(0)},Yg.getScale=function(){return this.childAt(0).scale},Yg.highlight=function(){this.childAt(0).trigger("emphasis")},Yg.downplay=function(){this.childAt(0).trigger("normal")},Yg.setZ=function(t,e){var i=this.childAt(0);i.zlevel=t,i.z=e},Yg.setDraggable=function(t){var e=this.childAt(0);e.draggable=t,e.cursor=t?"move":e.cursor},Yg.updateData=function(t,e,i){this.silent=!1;var n=t.getItemVisual(e,"symbol")||"circle",o=t.hostModel,a=jg(t,e),r=n!==this._symbolType;if(r){var s=t.getItemVisual(e,"symbolKeepAspect");this._createSymbol(n,t,e,a,s)}else{(l=this.childAt(0)).silent=!1,cl(l,{scale:qg(a)},o,e)}if(this._updateCommon(t,e,a,i),r){var l=this.childAt(0),u=i&&i.fadeIn,h={scale:l.scale.slice()};u&&(h.style={opacity:l.style.opacity}),l.scale=[0,0],u&&(l.style.opacity=0),dl(l,h,o,e)}this._seriesModel=o};var $g=["itemStyle"],Jg=["emphasis","itemStyle"],Qg=["label"],tm=["emphasis","label"];function em(t,e){if(!this.incremental&&!this.useHoverLayer)if("emphasis"===e){var i=this.__symbolOriginalScale,n=i[1]/i[0],o={scale:[Math.max(1.1*i[0],i[0]+3),Math.max(1.1*i[1],i[1]+3*n)]};this.animateTo(o,400,"elasticOut")}else"normal"===e&&this.animateTo({scale:this.__symbolOriginalScale},400,"elasticOut")}function im(t){this.group=new Ci,this._symbolCtor=t||Xg}Yg._updateCommon=function(i,t,e,n){var o=this.childAt(0),a=i.hostModel,r=i.getItemVisual(t,"color");"image"!==o.type?o.useStyle({strokeNoScale:!0}):o.setStyle({opacity:null,shadowBlur:null,shadowOffsetX:null,shadowOffsetY:null,shadowColor:null});var s=n&&n.itemStyle,l=n&&n.hoverItemStyle,u=n&&n.symbolOffset,h=n&&n.labelModel,c=n&&n.hoverLabelModel,d=n&&n.hoverAnimation,f=n&&n.cursorStyle;if(!n||i.hasItemOption){var p=n&&n.itemModel?n.itemModel:i.getItemModel(t);s=p.getModel($g).getItemStyle(["color"]),l=p.getModel(Jg).getItemStyle(),u=p.getShallow("symbolOffset"),h=p.getModel(Qg),c=p.getModel(tm),d=p.getShallow("hoverAnimation"),f=p.getShallow("cursor")}else l=P({},l);var g=o.style,m=i.getItemVisual(t,"symbolRotate");o.attr("rotation",(m||0)*Math.PI/180||0),u&&o.attr("position",[Rl(u[0],e[0]),Rl(u[1],e[1])]),f&&o.attr("cursor",f),o.setColor(r,n&&n.symbolInnerColor),o.setStyle(s);var v=i.getItemVisual(t,"opacity");null!=v&&(g.opacity=v);var y=i.getItemVisual(t,"liftZ"),x=o.__z2Origin;null!=y?null==x&&(o.__z2Origin=o.z2,o.z2+=y):null!=x&&(o.z2=x,o.__z2Origin=null);var _=n&&n.useNameLabel;el(g,l,h,c,{labelFetcher:a,labelDataIndex:t,defaultText:function(t,e){return _?i.getName(t):Ug(i,t)},isRectText:!0,autoColor:r}),o.__symbolOriginalScale=qg(e),o.hoverStyle=l,o.highDownOnUpdate=d&&a.isAnimationEnabled()?em:null,$s(o)},Yg.fadeOut=function(t,e){var i=this.childAt(0);this.silent=i.silent=!0,e&&e.keepLabel||(i.style.text=null),cl(i,{style:{opacity:0},scale:[0,0]},this._seriesModel,this.dataIndex,t)},w(Xg,Ci);var nm=im.prototype;function om(t,e,i,n){return e&&!isNaN(e[0])&&!isNaN(e[1])&&!(n.isIgnore&&n.isIgnore(i))&&!(n.clipShape&&!n.clipShape.contain(e[0],e[1]))&&"none"!==t.getItemVisual(i,"symbol")}function am(t){return null==t||z(t)||(t={isIgnore:t}),t||{}}function rm(t){var e=t.hostModel;return{itemStyle:e.getModel("itemStyle").getItemStyle(["color"]),hoverItemStyle:e.getModel("emphasis.itemStyle").getItemStyle(),symbolRotate:e.get("symbolRotate"),symbolOffset:e.get("symbolOffset"),hoverAnimation:e.get("hoverAnimation"),labelModel:e.getModel("label"),hoverLabelModel:e.getModel("emphasis.label"),cursorStyle:e.get("cursor")}}function sm(t,e,i){var n,o=t.getBaseAxis(),a=t.getOtherAxis(o),r=function(t,e){var i=0,n=t.scale.getExtent();"start"===e?i=n[0]:"end"===e?i=n[1]:0<n[0]?i=n[0]:n[1]<0&&(i=n[1]);return i}(a,i),s=o.dim,l=a.dim,u=e.mapDimension(l),h=e.mapDimension(s),c="x"===l||"radius"===l?1:0,d=O(t.dimensions,function(t){return e.mapDimension(t)}),f=e.getCalculationInfo("stackResultDimension");return(n|=fp(e,d[0]))&&(d[0]=f),(n|=fp(e,d[1]))&&(d[1]=f),{dataDimsForPoint:d,valueStart:r,valueAxisDim:l,baseAxisDim:s,stacked:!!n,valueDim:u,baseDim:h,baseDataOffset:c,stackedOverDimension:e.getCalculationInfo("stackedOverDimension")}}function lm(t,e,i,n){var o=NaN;t.stacked&&(o=i.get(i.getCalculationInfo("stackedOverDimension"),n)),isNaN(o)&&(o=t.valueStart);var a=t.baseDataOffset,r=[];return r[a]=i.get(t.baseDim,n),r[1-a]=o,e.dataToPoint(r)}nm.updateData=function(o,a){a=am(a);var r=this.group,s=o.hostModel,l=this._data,u=this._symbolCtor,h=rm(o);l||r.removeAll(),o.diff(l).add(function(t){var e=o.getItemLayout(t);if(om(o,e,t,a)){var i=new u(o,t,h);i.attr("position",e),o.setItemGraphicEl(t,i),r.add(i)}}).update(function(t,e){var i=l.getItemGraphicEl(e),n=o.getItemLayout(t);om(o,n,t,a)?(i?(i.updateData(o,t,h),cl(i,{position:n},s)):(i=new u(o,t)).attr("position",n),r.add(i),o.setItemGraphicEl(t,i)):r.remove(i)}).remove(function(t){var e=l.getItemGraphicEl(t);e&&e.fadeOut(function(){r.remove(e)})}).execute(),this._data=o},nm.isPersistent=function(){return!0},nm.updateLayout=function(){var n=this._data;n&&n.eachItemGraphicEl(function(t,e){var i=n.getItemLayout(e);t.attr("position",i)})},nm.incrementalPrepareUpdate=function(t){this._seriesScope=rm(t),this._data=null,this.group.removeAll()},nm.incrementalUpdate=function(t,e,i){function n(t){t.isGroup||(t.incremental=t.useHoverLayer=!0)}i=am(i);for(var o=t.start;o<t.end;o++){var a=e.getItemLayout(o);if(om(e,a,o,i)){var r=new this._symbolCtor(e,o,this._seriesScope);r.traverse(n),r.attr("position",a),this.group.add(r),e.setItemGraphicEl(o,r)}}},nm.remove=function(t){var e=this.group,i=this._data;i&&t?i.eachItemGraphicEl(function(t){t.fadeOut(function(){e.remove(t)})}):e.removeAll()};var um=St,hm=Mt,cm=ut,dm=at,fm=[],pm=[],gm=[];function mm(t){return isNaN(t[0])||isNaN(t[1])}function vm(t,e,i,n,o,a,r,s,l,u){return"none"!==u&&u?function(t,e,i,n,o,a,r,s,l,u,h){for(var c=0,d=i,f=0;f<n;f++){var p=e[d];if(o<=d||d<0)break;if(mm(p)){if(h){d+=a;continue}break}if(d===i)t[0<a?"moveTo":"lineTo"](p[0],p[1]);else if(0<l){var g=e[c],m="y"===u?1:0,v=(p[m]-g[m])*l;dm(pm,g),pm[m]=g[m]+v,dm(gm,p),gm[m]=p[m]-v,t.bezierCurveTo(pm[0],pm[1],gm[0],gm[1],p[0],p[1])}else t.lineTo(p[0],p[1]);c=d,d+=a}return f}.apply(this,arguments):function(t,e,i,n,o,a,r,s,l,u,h){for(var c=0,d=i,f=0;f<n;f++){var p=e[d];if(o<=d||d<0)break;if(mm(p)){if(h){d+=a;continue}break}if(d===i)t[0<a?"moveTo":"lineTo"](p[0],p[1]),dm(pm,p);else if(0<l){var g=d+a,m=e[g];if(h)for(;m&&mm(e[g]);)m=e[g+=a];var v=.5,y=e[c];if(!(m=e[g])||mm(m))dm(gm,p);else{var x,_;if(mm(m)&&!h&&(m=p),ht(fm,m,y),"x"===u||"y"===u){var w="x"===u?0:1;x=Math.abs(p[w]-y[w]),_=Math.abs(p[w]-m[w])}else x=yt(p,y),_=yt(p,m);cm(gm,p,fm,-l*(1-(v=_/(_+x))))}um(pm,pm,s),hm(pm,pm,r),um(gm,gm,s),hm(gm,gm,r),t.bezierCurveTo(pm[0],pm[1],gm[0],gm[1],p[0],p[1]),cm(pm,p,fm,l*v)}else t.lineTo(p[0],p[1]);c=d,d+=a}return f}.apply(this,arguments)}function ym(t,e){var i=[1/0,1/0],n=[-1/0,-1/0];if(e)for(var o=0;o<t.length;o++){var a=t[o];a[0]<i[0]&&(i[0]=a[0]),a[1]<i[1]&&(i[1]=a[1]),a[0]>n[0]&&(n[0]=a[0]),a[1]>n[1]&&(n[1]=a[1])}return{min:e?i:n,max:e?n:i}}var xm=Ar.extend({type:"ec-polyline",shape:{points:[],smooth:0,smoothConstraint:!0,smoothMonotone:null,connectNulls:!1},style:{fill:null,stroke:"#000"},brush:Xr(Ar.prototype.brush),buildPath:function(t,e){var i=e.points,n=0,o=i.length,a=ym(i,e.smoothConstraint);if(e.connectNulls){for(;0<o&&mm(i[o-1]);o--);for(;n<o&&mm(i[n]);n++);}for(;n<o;)n+=vm(t,i,n,o,o,1,a.min,a.max,e.smooth,e.smoothMonotone,e.connectNulls)+1}}),_m=Ar.extend({type:"ec-polygon",shape:{points:[],stackedOnPoints:[],smooth:0,stackedOnSmooth:0,smoothConstraint:!0,smoothMonotone:null,connectNulls:!1},brush:Xr(Ar.prototype.brush),buildPath:function(t,e){var i=e.points,n=e.stackedOnPoints,o=0,a=i.length,r=e.smoothMonotone,s=ym(i,e.smoothConstraint),l=ym(n,e.smoothConstraint);if(e.connectNulls){for(;0<a&&mm(i[a-1]);a--);for(;o<a&&mm(i[o]);o++);}for(;o<a;){var u=vm(t,i,o,a,a,1,s.min,s.max,e.smooth,r,e.connectNulls);vm(t,n,o+u-1,u,a,-1,l.min,l.max,e.stackedOnSmooth,r,e.connectNulls),o+=u+1,t.closePath()}}});function wm(t,e,i){var n=t.getArea(),o=t.getBaseAxis().isHorizontal(),a=n.x,r=n.y,s=n.width,l=n.height,u=i.get("lineStyle.width")||2;a-=u/2,r-=u/2,s+=u,l+=u,a=Math.floor(a),s=Math.round(s);var h=new rs({shape:{x:a,y:r,width:s,height:l}});return e&&(h.shape[o?"width":"height"]=0,dl(h,{shape:{width:s,height:l}},i)),h}function bm(t,e,i){var n=t.getArea(),o=new qr({shape:{cx:zl(t.cx,1),cy:zl(t.cy,1),r0:zl(n.r0,1),r:zl(n.r,1),startAngle:n.startAngle,endAngle:n.endAngle,clockwise:n.clockwise}});return e&&(o.shape.endAngle=n.startAngle,dl(o,{shape:{endAngle:n.endAngle}},i)),o}function Sm(t,e,i){return t?"polar"===t.type?bm(t,e,i):"cartesian2d"===t.type?wm(t,e,i):null:null}function Mm(t,e){if(t.length===e.length){for(var i=0;i<t.length;i++){var n=t[i],o=e[i];if(n[0]!==o[0]||n[1]!==o[1])return}return!0}}function Im(t,e){var i=[],n=[],o=[],a=[];return Wa(t,i,n),Wa(e,o,a),Math.max(Math.abs(i[0]-o[0]),Math.abs(i[1]-o[1]),Math.abs(n[0]-a[0]),Math.abs(n[1]-a[1]))}function Tm(t){return"number"==typeof t?t:t?.5:0}function Am(t,e,i){for(var n=e.getBaseAxis(),o="x"===n.dim||"radius"===n.dim?0:1,a=[],r=0;r<t.length-1;r++){var s=t[r+1],l=t[r];a.push(l);var u=[];switch(i){case"end":u[o]=s[o],u[1-o]=l[1-o],a.push(u);break;case"middle":var h=(l[o]+s[o])/2,c=[];u[o]=c[o]=h,u[1-o]=l[1-o],c[1-o]=s[1-o],a.push(u),a.push(c);break;default:u[o]=l[o],u[1-o]=s[1-o],a.push(u)}}return t[r]&&a.push(t[r]),a}function Dm(t,e,i){var n=t.get("showAllSymbol"),o="auto"===n;if(!n||o){var a=i.getAxesByScale("ordinal")[0];if(a&&(!o||!function(t,e){var i=t.getExtent(),n=Math.abs(i[1]-i[0])/t.scale.count();isNaN(n)&&(n=0);for(var o=e.count(),a=Math.max(1,Math.round(o/5)),r=0;r<o;r+=a)if(1.5*Xg.getSymbolSize(e,r)[t.isHorizontal()?1:0]>n)return!1;return!0}(a,e))){var r=e.mapDimension(a.dim),s={};return E(a.getViewLabels(),function(t){s[t.tickValue]=1}),function(t){return!s.hasOwnProperty(e.get(r,t))}}}}function Cm(t,e,i){if("cartesian2d"!==t.type)return bm(t,e,i);var n=t.getBaseAxis().isHorizontal(),o=wm(t,e,i);if(!i.get("clip",!0)){var a=o.shape,r=Math.max(a.width,a.height);n?(a.y-=r,a.height+=2*r):(a.x-=r,a.width+=2*r)}return o}_c.extend({type:"line",init:function(){var t=new Ci,e=new im;this.group.add(e.group),this._symbolDraw=e,this._lineGroup=t},render:function(t,e,i){var n=t.coordinateSystem,o=this.group,a=t.getData(),r=t.getModel("lineStyle"),s=t.getModel("areaStyle"),l=a.mapArray(a.getItemLayout),u="polar"===n.type,h=this._coordSys,c=this._symbolDraw,d=this._polyline,f=this._polygon,p=this._lineGroup,g=t.get("animation"),m=!s.isEmpty(),v=s.get("origin"),y=function(t,e,i){if(!i.valueDim)return[];for(var n=[],o=0,a=e.count();o<a;o++)n.push(lm(i,t,e,o));return n}(n,a,sm(n,a,v)),x=t.get("showSymbol"),_=x&&!u&&Dm(t,a,n),w=this._data;w&&w.eachItemGraphicEl(function(t,e){t.__temp&&(o.remove(t),w.setItemGraphicEl(e,null))}),x||c.remove(),o.add(p);var b,S=!u&&t.get("step");n&&n.getArea&&t.get("clip",!0)&&(null!=(b=n.getArea()).width?(b.x-=.1,b.y-=.1,b.width+=.2,b.height+=.2):b.r0&&(b.r0-=.5,b.r1+=.5)),this._clipShapeForSymbol=b,d&&h.type===n.type&&S===this._step?(m&&!f?f=this._newPolygon(l,y,n,g):f&&!m&&(p.remove(f),f=this._polygon=null),p.setClipPath(Cm(n,!1,t)),x&&c.updateData(a,{isIgnore:_,clipShape:b}),a.eachItemGraphicEl(function(t){t.stopAnimation(!0)}),Mm(this._stackedOnPoints,y)&&Mm(this._points,l)||(g?this._updateAnimation(a,y,n,i,S,v):(S&&(l=Am(l,n,S),y=Am(y,n,S)),d.setShape({points:l}),f&&f.setShape({points:l,stackedOnPoints:y})))):(x&&c.updateData(a,{isIgnore:_,clipShape:b}),S&&(l=Am(l,n,S),y=Am(y,n,S)),d=this._newPolyline(l,n,g),m&&(f=this._newPolygon(l,y,n,g)),p.setClipPath(Cm(n,!0,t)));var M=function(t,e){var i=t.getVisual("visualMeta");if(i&&i.length&&t.count()&&"cartesian2d"===e.type){for(var n,o,a=i.length-1;0<=a;a--){var r=i[a].dimension,s=t.dimensions[r],l=t.getDimensionInfo(s);if("x"===(n=l&&l.coordDim)||"y"===n){o=i[a];break}}if(o){var u=e.getAxis(n),h=O(o.stops,function(t){return{coord:u.toGlobalCoord(u.dataToCoord(t.value)),color:t.color}}),c=h.length,d=o.outerColors.slice();c&&h[0].coord>h[c-1].coord&&(h.reverse(),d.reverse());var f=h[0].coord-10,p=h[c-1].coord+10,g=p-f;if(g<.001)return"transparent";E(h,function(t){t.offset=(t.coord-f)/g}),h.push({offset:c?h[c-1].offset:.5,color:d[1]||"transparent"}),h.unshift({offset:c?h[0].offset:.5,color:d[0]||"transparent"});var m=new gs(0,0,0,0,h,!0);return m[n]=f,m[n+"2"]=p,m}}}(a,n)||a.getVisual("color");d.useStyle(D(r.getLineStyle(),{fill:"none",stroke:M,lineJoin:"bevel"}));var I=t.get("smooth");if(I=Tm(t.get("smooth")),d.setShape({smooth:I,smoothMonotone:t.get("smoothMonotone"),connectNulls:t.get("connectNulls")}),f){var T=a.getCalculationInfo("stackedOnSeries"),A=0;f.useStyle(D(s.getAreaStyle(),{fill:M,opacity:.7,lineJoin:"bevel"})),T&&(A=Tm(T.get("smooth"))),f.setShape({smooth:I,stackedOnSmooth:A,smoothMonotone:t.get("smoothMonotone"),connectNulls:t.get("connectNulls")})}this._data=a,this._coordSys=n,this._stackedOnPoints=y,this._points=l,this._step=S,this._valueOrigin=v},dispose:function(){},highlight:function(t,e,i,n){var o=t.getData(),a=Yo(o,n);if(!(a instanceof Array)&&null!=a&&0<=a){var r=o.getItemGraphicEl(a);if(!r){var s=o.getItemLayout(a);if(!s)return;if(this._clipShapeForSymbol&&!this._clipShapeForSymbol.contain(s[0],s[1]))return;(r=new Xg(o,a)).position=s,r.setZ(t.get("zlevel"),t.get("z")),r.ignore=isNaN(s[0])||isNaN(s[1]),r.__temp=!0,o.setItemGraphicEl(a,r),r.stopSymbolAnimation(!0),this.group.add(r)}r.highlight()}else _c.prototype.highlight.call(this,t,e,i,n)},downplay:function(t,e,i,n){var o=t.getData(),a=Yo(o,n);if(null!=a&&0<=a){var r=o.getItemGraphicEl(a);r&&(r.__temp?(o.setItemGraphicEl(a,null),this.group.remove(r)):r.downplay())}else _c.prototype.downplay.call(this,t,e,i,n)},_newPolyline:function(t){var e=this._polyline;return e&&this._lineGroup.remove(e),e=new xm({shape:{points:t},silent:!0,z2:10}),this._lineGroup.add(e),this._polyline=e},_newPolygon:function(t,e){var i=this._polygon;return i&&this._lineGroup.remove(i),i=new _m({shape:{points:t,stackedOnPoints:e},silent:!0}),this._lineGroup.add(i),this._polygon=i},_updateAnimation:function(t,e,i,n,o,a){var r=this._polyline,s=this._polygon,l=t.hostModel,u=function(t,e,i,n,o,a,r,s){for(var l=function(t,e){var i=[];return e.diff(t).add(function(t){i.push({cmd:"+",idx:t})}).update(function(t,e){i.push({cmd:"=",idx:e,idx1:t})}).remove(function(t){i.push({cmd:"-",idx:t})}).execute(),i}(t,e),u=[],h=[],c=[],d=[],f=[],p=[],g=[],m=sm(o,e,r),v=sm(a,t,s),y=0;y<l.length;y++){var x=l[y],_=!0;switch(x.cmd){case"=":var w=t.getItemLayout(x.idx),b=e.getItemLayout(x.idx1);(isNaN(w[0])||isNaN(w[1]))&&(w=b.slice()),u.push(w),h.push(b),c.push(i[x.idx]),d.push(n[x.idx1]),g.push(e.getRawIndex(x.idx1));break;case"+":var S=x.idx;u.push(o.dataToPoint([e.get(m.dataDimsForPoint[0],S),e.get(m.dataDimsForPoint[1],S)])),h.push(e.getItemLayout(S).slice()),c.push(lm(m,o,e,S)),d.push(n[S]),g.push(e.getRawIndex(S));break;case"-":S=x.idx;var M=t.getRawIndex(S);M!==S?(u.push(t.getItemLayout(S)),h.push(a.dataToPoint([t.get(v.dataDimsForPoint[0],S),t.get(v.dataDimsForPoint[1],S)])),c.push(i[S]),d.push(lm(v,a,t,S)),g.push(M)):_=!1}_&&(f.push(x),p.push(p.length))}p.sort(function(t,e){return g[t]-g[e]});var I=[],T=[],A=[],D=[],C=[];for(y=0;y<p.length;y++){S=p[y];I[y]=u[S],T[y]=h[S],A[y]=c[S],D[y]=d[S],C[y]=f[S]}return{current:I,next:T,stackedOnCurrent:A,stackedOnNext:D,status:C}}(this._data,t,this._stackedOnPoints,e,this._coordSys,i,this._valueOrigin,a),h=u.current,c=u.stackedOnCurrent,d=u.next,f=u.stackedOnNext;if(o&&(h=Am(u.current,i,o),c=Am(u.stackedOnCurrent,i,o),d=Am(u.next,i,o),f=Am(u.stackedOnNext,i,o)),3e3<Im(h,d)||s&&3e3<Im(c,f))return r.setShape({points:d}),void(s&&s.setShape({points:d,stackedOnPoints:f}));r.shape.__points=u.current,r.shape.points=h,cl(r,{shape:{points:d}},l),s&&(s.setShape({points:h,stackedOnPoints:c}),cl(s,{shape:{points:d,stackedOnPoints:f}},l));for(var p=[],g=u.status,m=0;m<g.length;m++){if("="===g[m].cmd){var v=t.getItemGraphicEl(g[m].idx1);v&&p.push({el:v,ptIdx:m})}}r.animators&&r.animators.length&&r.animators[0].during(function(){for(var t=0;t<p.length;t++){p[t].el.attr("position",r.shape.__points[p[t].ptIdx])}})},remove:function(t){var i=this.group,n=this._data;this._lineGroup.removeAll(),this._symbolDraw.remove(!0),n&&n.eachItemGraphicEl(function(t,e){t.__temp&&(i.remove(t),n.setItemGraphicEl(e,null))}),this._polyline=this._polygon=this._coordSys=this._points=this._stackedOnPoints=this._data=null}});function Lm(t,r,s){return{seriesType:t,performRawSeries:!0,reset:function(u,t,e){var i=u.getData(),h=u.get("symbol"),c=u.get("symbolSize"),n=u.get("symbolKeepAspect"),d=u.get("symbolRotate"),f=C(h),p=C(c),g=C(d),m=f||p||g,o=!f&&h?h:r,a=p?null:c;if(i.setVisual({legendSymbol:s||o,symbol:o,symbolSize:a,symbolKeepAspect:n,symbolRotate:d}),!t.isSeriesFiltered(u))return{dataEach:i.hasItemOption||m?function(t,e){if(m){var i=u.getRawValue(e),n=u.getDataParams(e);f&&t.setItemVisual(e,"symbol",h(i,n)),p&&t.setItemVisual(e,"symbolSize",c(i,n)),g&&t.setItemVisual(e,"symbolRotate",d(i,n))}if(t.hasItemOption){var o=t.getItemModel(e),a=o.getShallow("symbol",!0),r=o.getShallow("symbolSize",!0),s=o.getShallow("symbolRotate",!0),l=o.getShallow("symbolKeepAspect",!0);null!=a&&t.setItemVisual(e,"symbol",a),null!=r&&t.setItemVisual(e,"symbolSize",r),null!=s&&t.setItemVisual(e,"symbolRotate",s),null!=l&&t.setItemVisual(e,"symbolKeepAspect",l)}}:null}}}}function km(t){return{seriesType:t,plan:vc(),reset:function(t){var e=t.getData(),c=t.coordinateSystem,d=t.pipelineContext.large;if(c){var f=O(c.dimensions,function(t){return e.mapDimension(t)}).slice(0,2),p=f.length,i=e.getCalculationInfo("stackResultDimension");return fp(e,f[0])&&(f[0]=i),fp(e,f[1])&&(f[1]=i),p&&{progress:function(t,e){for(var i=t.end-t.start,n=d&&new Float32Array(i*p),o=t.start,a=0,r=[],s=[];o<t.end;o++){var l;if(1===p){var u=e.get(f[0],o);l=!isNaN(u)&&c.dataToPoint(u,null,s)}else{u=r[0]=e.get(f[0],o);var h=r[1]=e.get(f[1],o);l=!isNaN(u)&&!isNaN(h)&&c.dataToPoint(r,null,s)}d?(n[a++]=l?l[0]:NaN,n[a++]=l?l[1]:NaN):e.setItemLayout(o,l&&l.slice()||[NaN,NaN])}d&&e.setLayout("symbolPoints",n)}}}}}}function Pm(t,e){return Math.round(t.length/2)}var Nm={average:function(t){for(var e=0,i=0,n=0;n<t.length;n++)isNaN(t[n])||(e+=t[n],i++);return 0===i?NaN:e/i},sum:function(t){for(var e=0,i=0;i<t.length;i++)e+=t[i]||0;return e},max:function(t){for(var e=-1/0,i=0;i<t.length;i++)t[i]>e&&(e=t[i]);return isFinite(e)?e:NaN},min:function(t){for(var e=1/0,i=0;i<t.length;i++)t[i]<e&&(e=t[i]);return isFinite(e)?e:NaN},nearest:function(t){return t[0]}};function Om(t){return this._axes[t]}function Em(t){this._axes={},this._dimList=[],this.name=t||""}function Rm(t){Em.call(this,t)}Em.prototype={constructor:Em,type:"cartesian",getAxis:function(t){return this._axes[t]},getAxes:function(){return O(this._dimList,Om,this)},getAxesByScale:function(e){return e=e.toLowerCase(),M(this.getAxes(),function(t){return t.scale.type===e})},addAxis:function(t){var e=t.dim;this._axes[e]=t,this._dimList.push(e)},dataToCoord:function(t){return this._dataCoordConvert(t,"dataToCoord")},coordToData:function(t){return this._dataCoordConvert(t,"coordToData")},_dataCoordConvert:function(t,e){for(var i=this._dimList,n=t instanceof Array?[]:{},o=0;o<i.length;o++){var a=i[o],r=this._axes[a];n[a]=r[e](t[a])}return n}},Rm.prototype={constructor:Rm,type:"cartesian2d",dimensions:["x","y"],getBaseAxis:function(){return this.getAxesByScale("ordinal")[0]||this.getAxesByScale("time")[0]||this.getAxis("x")},containPoint:function(t){var e=this.getAxis("x"),i=this.getAxis("y");return e.contain(e.toLocalCoord(t[0]))&&i.contain(i.toLocalCoord(t[1]))},containData:function(t){return this.getAxis("x").containData(t[0])&&this.getAxis("y").containData(t[1])},dataToPoint:function(t,e,i){var n=this.getAxis("x"),o=this.getAxis("y");return(i=i||[])[0]=n.toGlobalCoord(n.dataToCoord(t[0])),i[1]=o.toGlobalCoord(o.dataToCoord(t[1])),i},clampData:function(t,e){var i=this.getAxis("x").scale,n=this.getAxis("y").scale,o=i.getExtent(),a=n.getExtent(),r=i.parse(t[0]),s=n.parse(t[1]);return(e=e||[])[0]=Math.min(Math.max(Math.min(o[0],o[1]),r),Math.max(o[0],o[1])),e[1]=Math.min(Math.max(Math.min(a[0],a[1]),s),Math.max(a[0],a[1])),e},pointToData:function(t,e){var i=this.getAxis("x"),n=this.getAxis("y");return(e=e||[])[0]=i.coordToData(i.toLocalCoord(t[0])),e[1]=n.coordToData(n.toLocalCoord(t[1])),e},getOtherAxis:function(t){return this.getAxis("x"===t.dim?"y":"x")},getArea:function(){var t=this.getAxis("x").getGlobalExtent(),e=this.getAxis("y").getGlobalExtent(),i=Math.min(t[0],t[1]),n=Math.min(e[0],e[1]);return new Di(i,n,Math.max(t[0],t[1])-i,Math.max(e[0],e[1])-n)}},w(Rm,Em);function zm(t,e,i,n,o){Gg.call(this,t,e,i),this.type=n||"value",this.position=o||"bottom"}zm.prototype={constructor:zm,index:0,getAxesOnZeroOf:null,model:null,isHorizontal:function(){var t=this.position;return"top"===t||"bottom"===t},getGlobalExtent:function(t){var e=this.getExtent();return e[0]=this.toGlobalCoord(e[0]),e[1]=this.toGlobalCoord(e[1]),t&&e[0]>e[1]&&e.reverse(),e},getOtherAxis:function(){this.grid.getOtherAxis()},pointToData:function(t,e){return this.coordToData(this.toLocalCoord(t["x"===this.dim?0:1]),e)},toLocalCoord:null,toGlobalCoord:null},w(zm,Gg);var Bm={show:!0,zlevel:0,z:0,inverse:!1,name:"",nameLocation:"end",nameRotate:null,nameTruncate:{maxWidth:null,ellipsis:"...",placeholder:"."},nameTextStyle:{},nameGap:15,silent:!1,triggerEvent:!1,tooltip:{show:!1},axisPointer:{},axisLine:{show:!0,onZero:!0,onZeroAxisIndex:null,lineStyle:{color:"#333",width:1,type:"solid"},symbol:["none","none"],symbolSize:[10,15]},axisTick:{show:!0,inside:!1,length:5,lineStyle:{width:1}},axisLabel:{show:!0,inside:!1,rotate:0,showMinLabel:null,showMaxLabel:null,margin:8,fontSize:12},splitLine:{show:!0,lineStyle:{color:["#ccc"],width:1,type:"solid"}},splitArea:{show:!1,areaStyle:{color:["rgba(250,250,250,0.3)","rgba(200,200,200,0.3)"]}}},Vm={};Vm.categoryAxis=m({boundaryGap:!0,deduplication:null,splitLine:{show:!1},axisTick:{alignWithLabel:!1,interval:"auto"},axisLabel:{interval:"auto"}},Bm),Vm.valueAxis=m({boundaryGap:[0,0],splitNumber:5,minorTick:{show:!1,splitNumber:5,length:3,lineStyle:{}},minorSplitLine:{show:!1,lineStyle:{color:"#eee",width:1}}},Bm),Vm.timeAxis=D({scale:!0,min:"dataMin",max:"dataMax"},Vm.valueAxis),Vm.logAxis=D({scale:!0,logBase:10},Vm.valueAxis);function Gm(a,t,r,e){E(Fm,function(o){t.extend({type:a+"Axis."+o,mergeDefaultAndTheme:function(t,e){var i=this.layoutMode,n=i?Iu(t):{};m(t,e.getTheme().get(o+"Axis")),m(t,this.getDefaultOption()),t.type=r(a,t),i&&Mu(t,n,i)},optionUpdated:function(){"category"===this.option.type&&(this.__ordinalMeta=vp.createByAxisModel(this))},getCategories:function(t){var e=this.option;if("category"===e.type)return t?e.data:this.__ordinalMeta.categories},getOrdinalMeta:function(){return this.__ordinalMeta},defaultOption:p([{},Vm[o+"Axis"],e],!0)})}),ku.registerSubTypeDefaulter(a+"Axis",T(r,a))}var Fm=["value","category","time","log"],Wm=ku.extend({type:"cartesian2dAxis",axis:null,init:function(){Wm.superApply(this,"init",arguments),this.resetRange()},mergeOption:function(){Wm.superApply(this,"mergeOption",arguments),this.resetRange()},restoreData:function(){Wm.superApply(this,"restoreData",arguments),this.resetRange()},getCoordSysModel:function(){return this.ecModel.queryComponents({mainType:"grid",index:this.option.gridIndex,id:this.option.gridId})[0]}});function Hm(t,e){return e.type||(e.data?"category":"value")}m(Wm.prototype,dg);var Zm={offset:0};function Um(t,e){return t.getCoordSysModel()===e}function Xm(t,e,i){this._coordsMap={},this._coordsList=[],this._axesMap={},this._axesList=[],this._initCartesian(t,e,i),this.model=t}Gm("x",Wm,Hm,Zm),Gm("y",Wm,Hm,Zm),ku.extend({type:"grid",dependencies:["xAxis","yAxis"],layoutMode:"box",coordinateSystem:null,defaultOption:{show:!1,zlevel:0,z:0,left:"10%",top:60,right:"10%",bottom:60,containLabel:!1,backgroundColor:"rgba(0,0,0,0)",borderWidth:1,borderColor:"#ccc"}});var Ym=Xm.prototype;function jm(t,e,i,n){i.getAxesOnZeroOf=function(){return o?[o]:[]};var o,a=t[e],r=i.model,s=r.get("axisLine.onZero"),l=r.get("axisLine.onZeroAxisIndex");if(s){if(null!=l)qm(a[l])&&(o=a[l]);else for(var u in a)if(a.hasOwnProperty(u)&&qm(a[u])&&!n[h(a[u])]){o=a[u];break}o&&(n[h(o)]=!0)}function h(t){return t.dim+"_"+t.index}}function qm(t){return t&&"category"!==t.type&&"time"!==t.type&&function(t){var e=t.scale.getExtent(),i=e[0],n=e[1];return!(0<i&&0<n||i<0&&n<0)}(t)}Ym.type="grid",Ym.axisPointerEnabled=!0,Ym.getRect=function(){return this._rect},Ym.update=function(t,e){var i=this._axesMap;this._updateScale(t,this.model),E(i.x,function(t){rg(t.scale,t.model)}),E(i.y,function(t){rg(t.scale,t.model)});var n={};E(i.x,function(t){jm(i,"y",t,n)}),E(i.y,function(t){jm(i,"x",t,n)}),this.resize(this.model,e)},Ym.resize=function(t,e,i){var o=bu(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()});this._rect=o;var n=this._axesList;function a(){E(n,function(t){var e=t.isHorizontal(),i=e?[0,o.width]:[0,o.height],n=t.inverse?1:0;t.setExtent(i[n],i[1-n]),function(t,e){var i=t.getExtent(),n=i[0]+i[1];t.toGlobalCoord="x"===t.dim?function(t){return t+e}:function(t){return n-t+e},t.toLocalCoord="x"===t.dim?function(t){return t-e}:function(t){return n-t+e}}(t,e?o.x:o.y)})}a(),!i&&t.get("containLabel")&&(E(n,function(t){if(!t.model.get("axisLabel.inside")){var e=function(t){var e=t.model,i=t.scale;if(e.get("axisLabel.show")&&!i.isBlank()){var n,o,a="category"===t.type,r=i.getExtent();o=a?i.count():(n=i.getTicks()).length;var s,l,u,h,c,d,f,p,g,m=t.getLabelModel(),v=lg(t),y=1;40<o&&(y=Math.ceil(o/40));for(var x=0;x<o;x+=y){var _=v(n?n[x]:r[0]+x),w=m.getTextRect(_),b=(l=w,u=m.get("rotate")||0,void 0,h=u*Math.PI/180,c=l.plain(),d=c.width,f=c.height,p=d*Math.cos(h)+f*Math.sin(h),g=d*Math.sin(h)+f*Math.cos(h),new Di(c.x,c.y,p,g));s?s.union(b):s=b}return s}}(t);if(e){var i=t.isHorizontal()?"height":"width",n=t.model.get("axisLabel.margin");o[i]-=e[i]+n,"top"===t.position?o.y+=e.height+n:"left"===t.position&&(o.x+=e.width+n)}}}),a())},Ym.getAxis=function(t,e){var i=this._axesMap[t];if(null!=i){if(null==e)for(var n in i)if(i.hasOwnProperty(n))return i[n];return i[e]}},Ym.getAxes=function(){return this._axesList.slice()},Ym.getCartesian=function(t,e){if(null!=t&&null!=e){var i="x"+t+"y"+e;return this._coordsMap[i]}z(t)&&(e=t.yAxisIndex,t=t.xAxisIndex);for(var n=0,o=this._coordsList;n<o.length;n++)if(o[n].getAxis("x").index===t||o[n].getAxis("y").index===e)return o[n]},Ym.getCartesians=function(){return this._coordsList.slice()},Ym.convertToPixel=function(t,e,i){var n=this._findConvertTarget(t,e);return n.cartesian?n.cartesian.dataToPoint(i):n.axis?n.axis.toGlobalCoord(n.axis.dataToCoord(i)):null},Ym.convertFromPixel=function(t,e,i){var n=this._findConvertTarget(t,e);return n.cartesian?n.cartesian.pointToData(i):n.axis?n.axis.coordToData(n.axis.toLocalCoord(i)):null},Ym._findConvertTarget=function(t,e){var i,n,o=e.seriesModel,a=e.xAxisModel||o&&o.getReferringComponents("xAxis")[0],r=e.yAxisModel||o&&o.getReferringComponents("yAxis")[0],s=e.gridModel,l=this._coordsList;if(o)_(l,i=o.coordinateSystem)<0&&(i=null);else if(a&&r)i=this.getCartesian(a.componentIndex,r.componentIndex);else if(a)n=this.getAxis("x",a.componentIndex);else if(r)n=this.getAxis("y",r.componentIndex);else if(s){s.coordinateSystem===this&&(i=this._coordsList[0])}return{cartesian:i,axis:n}},Ym.containPoint=function(t){var e=this._coordsList[0];if(e)return e.containPoint(t)},Ym._initCartesian=function(r,t,e){var s={left:!1,right:!1,top:!1,bottom:!1},l={x:{},y:{}},u={x:0,y:0};if(t.eachComponent("xAxis",i("x"),this),t.eachComponent("yAxis",i("y"),this),!u.x||!u.y)return this._axesMap={},void(this._axesList=[]);function i(a){return function(t,e){if(Um(t,r)){var i=t.get("position");"x"===a?"top"!==i&&"bottom"!==i&&(i=s.bottom?"top":"bottom"):"left"!==i&&"right"!==i&&(i=s.left?"right":"left"),s[i]=!0;var n=new zm(a,sg(t),[0,0],t.get("type"),i),o="category"===n.type;n.onBand=o&&t.get("boundaryGap"),n.inverse=t.get("inverse"),(t.axis=n).model=t,n.grid=this,n.index=e,this._axesList.push(n),l[a][e]=n,u[a]++}}}E((this._axesMap=l).x,function(o,a){E(l.y,function(t,e){var i="x"+a+"y"+e,n=new Rm(i);n.grid=this,n.model=r,this._coordsMap[i]=n,this._coordsList.push(n),n.addAxis(o),n.addAxis(t)},this)},this)},Ym._updateScale=function(l,u){function h(e,i){E(e.mapDimension(i.dim,!0),function(t){i.scale.unionExtentFromData(e,pp(e,t))})}E(this._axesList,function(t){t.scale.setExtent(1/0,-1/0)}),l.eachSeries(function(t){if(Jm(t)){var e=$m(t,l),i=e[0],n=e[1];if(!Um(i,u)||!Um(n,u))return;var o=this.getCartesian(i.componentIndex,n.componentIndex),a=t.getData(),r=o.getAxis("x"),s=o.getAxis("y");"list"===a.type&&(h(a,r,t),h(a,s,t))}},this)},Ym.getTooltipAxes=function(n){var o=[],a=[];return E(this.getCartesians(),function(t){var e=null!=n&&"auto"!==n?t.getAxis(n):t.getBaseAxis(),i=t.getOtherAxis(e);_(o,e)<0&&o.push(e),_(a,i)<0&&a.push(i)}),{baseAxes:o,otherAxes:a}};var Km=["xAxis","yAxis"];function $m(e){return O(Km,function(t){return e.getReferringComponents(t)[0]})}function Jm(t){return"cartesian2d"===t.get("coordinateSystem")}Xm.create=function(n,o){var a=[];return n.eachComponent("grid",function(t,e){var i=new Xm(t,n,o);i.name="grid_"+e,i.resize(t,o,!0),t.coordinateSystem=i,a.push(i)}),n.eachSeries(function(t){if(Jm(t)){var e=$m(t),i=e[0],n=e[1],o=i.getCoordSysModel().coordinateSystem;t.coordinateSystem=o.getCartesian(i.componentIndex,n.componentIndex)}}),a},Xm.dimensions=Xm.prototype.dimensions=Rm.prototype.dimensions,lh.register("cartesian2d",Xm);function Qm(t,e){this.opt=e,this.axisModel=t,D(e,{labelOffset:0,nameDirection:1,tickDirection:1,labelDirection:1,silent:!0}),this.group=new Ci;var i=new Ci({position:e.position.slice(),rotation:e.rotation});i.updateTransform(),this._transform=i.transform,this._dumbGroup=i}var tv=Math.PI;Qm.prototype={constructor:Qm,hasBuilder:function(t){return!!ev[t]},add:function(t){ev[t].call(this)},getGroup:function(){return this.group}};var ev={axisLine:function(){var a=this.opt,t=this.axisModel;if(t.get("axisLine.show")){var e=this.axisModel.axis.getExtent(),i=this._transform,r=[e[0],0],n=[e[1],0];i&&(bt(r,r,i),bt(n,n,i));var s=P({lineCap:"round"},t.getModel("axisLine.lineStyle").getLineStyle());this.group.add(new ls({anid:"line",subPixelOptimize:!0,shape:{x1:r[0],y1:r[1],x2:n[0],y2:n[1]},style:s,strokeContainThreshold:a.strokeContainThreshold||5,silent:!0,z2:1}));var l=t.get("axisLine.symbol"),o=t.get("axisLine.symbolSize"),u=t.get("axisLine.symbolOffset")||0;if("number"==typeof u&&(u=[u,u]),null!=l){"string"==typeof l&&(l=[l,l]),"string"!=typeof o&&"number"!=typeof o||(o=[o,o]);var h=o[0],c=o[1];E([{rotate:a.rotation+Math.PI/2,offset:u[0],r:0},{rotate:a.rotation-Math.PI/2,offset:u[1],r:Math.sqrt((r[0]-n[0])*(r[0]-n[0])+(r[1]-n[1])*(r[1]-n[1]))}],function(t,e){if("none"!==l[e]&&null!=l[e]){var i=wg(l[e],-h/2,-c/2,h,c,s.stroke,!0),n=t.r+t.offset,o=[r[0]+n*Math.cos(a.rotation),r[1]-n*Math.sin(a.rotation)];i.attr({rotation:t.rotate,position:o,silent:!0,z2:11}),this.group.add(i)}},this)}}},axisTickLabel:function(){var t=this.axisModel,e=this.opt,i=function(t,e,i){var n=e.axis,o=e.getModel("axisTick");if(!o.get("show")||n.scale.isBlank())return;for(var a=o.getModel("lineStyle"),r=i.tickDirection*o.get("length"),s=lv(n.getTicksCoords(),t._transform,r,D(a.getLineStyle(),{stroke:e.get("axisLine.lineStyle.color")}),"ticks"),l=0;l<s.length;l++)t.group.add(s[l]);return s}(this,t,e);!function(t,e,i){if(cg(t.axis))return;var n=t.get("axisLabel.showMinLabel"),o=t.get("axisLabel.showMaxLabel");i=i||[];var a=(e=e||[])[0],r=e[1],s=e[e.length-1],l=e[e.length-2],u=i[0],h=i[1],c=i[i.length-1],d=i[i.length-2];!1===n?(av(a),av(u)):rv(a,r)&&(n?(av(r),av(h)):(av(a),av(u)));!1===o?(av(s),av(c)):rv(l,s)&&(o?(av(l),av(d)):(av(s),av(c)))}(t,function(u,h,c){var d=h.axis;if(!W(c.axisLabelShow,h.get("axisLabel.show"))||d.scale.isBlank())return;var f=h.getModel("axisLabel"),p=f.get("margin"),t=d.getViewLabels(),e=(W(c.labelRotate,f.get("rotate"))||0)*tv/180,g=nv(c.rotation,e,c.labelDirection),m=h.getCategories&&h.getCategories(!0),v=[],y=ov(h),x=h.get("triggerEvent");return E(t,function(t,e){var i=t.tickValue,n=t.formattedLabel,o=t.rawLabel,a=f;m&&m[i]&&m[i].textStyle&&(a=new Cl(m[i].textStyle,f,h.ecModel));var r=a.getTextColor()||h.get("axisLine.lineStyle.color"),s=[d.dataToCoord(i),c.labelOffset+c.labelDirection*p],l=new Ur({anid:"label_"+i,position:s,rotation:g.rotation,silent:y,z2:10});nl(l.style,a,{text:n,textAlign:a.getShallow("align",!0)||g.textAlign,textVerticalAlign:a.getShallow("verticalAlign",!0)||a.getShallow("baseline",!0)||g.textVerticalAlign,textFill:"function"==typeof r?r("category"===d.type?o:"value"===d.type?i+"":i,e):r}),x&&(l.eventData=iv(h),l.eventData.targetType="axisLabel",l.eventData.value=o),u._dumbGroup.add(l),l.updateTransform(),v.push(l),u.group.add(l),l.decomposeTransform()}),v}(this,t,e),i),function(t,e,i){var n=e.axis,o=e.getModel("minorTick");if(!o.get("show")||n.scale.isBlank())return;var a=n.getMinorTicksCoords();if(!a.length)return;for(var r=o.getModel("lineStyle"),s=i.tickDirection*o.get("length"),l=D(r.getLineStyle(),D(e.getModel("axisTick").getLineStyle(),{stroke:e.get("axisLine.lineStyle.color")})),u=0;u<a.length;u++)for(var h=lv(a[u],t._transform,s,l,"minorticks_"+u),c=0;c<h.length;c++)t.group.add(h[c])}(this,t,e)},axisName:function(){var t=this.opt,e=this.axisModel,i=W(t.axisName,e.get("name"));if(i){var n,o,a=e.get("nameLocation"),r=t.nameDirection,s=e.getModel("nameTextStyle"),l=e.get("nameGap")||0,u=this.axisModel.axis.getExtent(),h=u[0]>u[1]?-1:1,c=["start"===a?u[0]-h*l:"end"===a?u[1]+h*l:(u[0]+u[1])/2,sv(a)?t.labelOffset+r*l:0],d=e.get("nameRotate");null!=d&&(d=d*tv/180),sv(a)?n=nv(t.rotation,null!=d?d:t.rotation,r):(n=function(t,e,i,n){var o,a,r=Zl(i-t.rotation),s=n[0]>n[1],l="start"===e&&!s||"start"!==e&&s;o=Ul(r-tv/2)?(a=l?"bottom":"top","center"):Ul(r-1.5*tv)?(a=l?"top":"bottom","center"):(a="middle",r<1.5*tv&&tv/2<r?l?"left":"right":l?"right":"left");return{rotation:r,textAlign:o,textVerticalAlign:a}}(t,a,d||0,u),null!=(o=t.axisNameAvailableWidth)&&(o=Math.abs(o/Math.sin(n.rotation)),isFinite(o)||(o=null)));var f=s.getFont(),p=e.get("nameTruncate",!0)||{},g=p.ellipsis,m=W(t.nameTruncateMaxWidth,p.maxWidth,o),v=null!=g&&null!=m?pu(i,m,f,g,{minChar:2,placeholder:p.placeholder}):i,y=e.get("tooltip",!0),x=e.mainType,_={componentType:x,name:i,$vars:["name"]};_[x+"Index"]=e.componentIndex;var w=new Ur({anid:"name",__fullText:i,__truncatedText:v,position:c,rotation:n.rotation,silent:ov(e),z2:1,tooltip:y&&y.show?P({content:i,formatter:function(){return i},formatterParams:_},y):null});nl(w.style,s,{text:v,textFont:f,textFill:s.getTextColor()||e.get("axisLine.lineStyle.color"),textAlign:s.get("align")||n.textAlign,textVerticalAlign:s.get("verticalAlign")||n.textVerticalAlign}),e.get("triggerEvent")&&(w.eventData=iv(e),w.eventData.targetType="axisName",w.eventData.name=i),this._dumbGroup.add(w),w.updateTransform(),this.group.add(w),w.decomposeTransform()}}},iv=Qm.makeAxisEventDataBase=function(t){var e={componentType:t.mainType,componentIndex:t.componentIndex};return e[t.mainType+"Index"]=t.componentIndex,e},nv=Qm.innerTextLayout=function(t,e,i){var n,o=Zl(e-t);return{rotation:o,textAlign:Ul(o)?(n=0<i?"top":"bottom","center"):Ul(o-tv)?(n=0<i?"bottom":"top","center"):(n="middle",0<o&&o<tv?0<i?"right":"left":0<i?"left":"right"),textVerticalAlign:n}};var ov=Qm.isLabelSilent=function(t){var e=t.get("tooltip");return t.get("silent")||!(t.get("triggerEvent")||e&&e.show)};function av(t){t&&(t.ignore=!0)}function rv(t,e){var i=t&&t.getBoundingRect().clone(),n=e&&e.getBoundingRect().clone();if(i&&n){var o=re([]);return he(o,o,-t.rotation),i.applyTransform(le([],o,t.getLocalTransform())),n.applyTransform(le([],o,e.getLocalTransform())),i.intersect(n)}}function sv(t){return"middle"===t||"center"===t}function lv(t,e,i,n,o){for(var a=[],r=[],s=[],l=0;l<t.length;l++){var u=t[l].coord;r[0]=u,s[r[1]=0]=u,s[1]=i,e&&(bt(r,r,e),bt(s,s,e));var h=new ls({anid:o+"_"+t[l].tickValue,subPixelOptimize:!0,shape:{x1:r[0],y1:r[1],x2:s[0],y2:s[1]},style:n,z2:2,silent:!0});a.push(h)}return a}var uv=E,hv=T;function cv(t,e){var i={axesInfo:{},seriesInvolved:!1,coordSysAxesInfo:{},coordSysMap:{}};return function(p,g,t){var a=g.getComponent("tooltip"),m=g.getComponent("axisPointer"),v=m.get("link",!0)||[],y=[];uv(t.getCoordinateSystems(),function(c){if(c.axisPointerEnabled){var t=gv(c.model),d=p.coordSysAxesInfo[t]={},f=(p.coordSysMap[t]=c).model.getModel("tooltip",a);if(uv(c.getAxes(),hv(o,!1,null)),c.getTooltipAxes&&a&&f.get("show")){var e="axis"===f.get("trigger"),i="cross"===f.get("axisPointer.type"),n=c.getTooltipAxes(f.get("axisPointer.axis"));(e||i)&&uv(n.baseAxes,hv(o,!i||"cross",e)),i&&uv(n.otherAxes,hv(o,"cross",!1))}}function o(t,e,i){var n=i.model.getModel("axisPointer",m),o=n.get("show");if(o&&("auto"!==o||t||pv(n))){null==e&&(e=n.get("triggerTooltip"));var a=(n=t?function(t,e,i,n,o,a){var r=e.getModel("axisPointer"),s={};uv(["type","snap","lineStyle","shadowStyle","label","animation","animationDurationUpdate","animationEasingUpdate","z"],function(t){s[t]=k(r.get(t))}),s.snap="category"!==t.type&&!!a,"cross"===r.get("type")&&(s.type="line");var l=s.label||(s.label={});if(null==l.show&&(l.show=!1),"cross"===o){var u=r.get("label.show");if(l.show=null==u||u,!a){var h=s.lineStyle=r.get("crossStyle");h&&D(l,h.textStyle)}}return t.model.getModel("axisPointer",new Cl(s,i,n))}(i,f,m,g,t,e):n).get("snap"),r=gv(i.model),s=e||a||"category"===i.type,l=p.axesInfo[r]={key:r,axis:i,coordSys:c,axisPointerModel:n,triggerTooltip:e,involveSeries:s,snap:a,useHandle:pv(n),seriesModels:[]};d[r]=l,p.seriesInvolved|=s;var u=function(t,e){for(var i=e.model,n=e.dim,o=0;o<t.length;o++){var a=t[o]||{};if(dv(a[n+"AxisId"],i.id)||dv(a[n+"AxisIndex"],i.componentIndex)||dv(a[n+"AxisName"],i.name))return o}}(v,i);if(null!=u){var h=y[u]||(y[u]={axesInfo:{}});h.axesInfo[r]=l,h.mapper=v[u].mapper,l.linkGroup=h}}}})}(i,t,e),i.seriesInvolved&&function(o,t){t.eachSeries(function(i){var n=i.coordinateSystem,t=i.get("tooltip.trigger",!0),e=i.get("tooltip.show",!0);n&&"none"!==t&&!1!==t&&"item"!==t&&!1!==e&&!1!==i.get("axisPointer.show",!0)&&uv(o.coordSysAxesInfo[gv(n.model)],function(t){var e=t.axis;n.getAxis(e.dim)===e&&(t.seriesModels.push(i),null==t.seriesDataCount&&(t.seriesDataCount=0),t.seriesDataCount+=i.getData().count())})},this)}(i,t),i}function dv(t,e){return"all"===t||L(t)&&0<=_(t,e)||t===e}function fv(t){var e=(t.ecModel.getComponent("axisPointer")||{}).coordSysAxesInfo;return e&&e.axesInfo[gv(t)]}function pv(t){return!!t.get("handle.show")}function gv(t){return t.type+"||"+t.id}var mv=Af({type:"axis",_axisPointer:null,axisPointerClass:null,render:function(t,e,i,n){this.axisPointerClass&&function(t){var e=fv(t);if(e){var i=e.axisPointerModel,n=e.axis.scale,o=i.option,a=i.get("status"),r=i.get("value");null!=r&&(r=n.parse(r));var s=pv(i);null==a&&(o.status=s?"show":"hide");var l=n.getExtent().slice();l[0]>l[1]&&l.reverse(),(null==r||r>l[1])&&(r=l[1]),r<l[0]&&(r=l[0]),o.value=r,s&&(o.status=e.axis.scale.isBlank()?"hide":"show")}}(t),mv.superApply(this,"render",arguments),vv(this,t,e,i,n,!0)},updateAxisPointer:function(t,e,i,n,o){vv(this,t,e,i,n,!1)},remove:function(t,e){var i=this._axisPointer;i&&i.remove(e),mv.superApply(this,"remove",arguments)},dispose:function(t,e){yv(this,e),mv.superApply(this,"dispose",arguments)}});function vv(t,e,i,n,o,a){var r=mv.getAxisPointerClass(t.axisPointerClass);if(r){var s=function(t){var e=fv(t);return e&&e.axisPointerModel}(e);s?(t._axisPointer||(t._axisPointer=new r)).render(e,s,n,a):yv(t,n)}}function yv(t,e,i){var n=t._axisPointer;n&&n.dispose(e,i),t._axisPointer=null}var xv=[];function _v(t,e,i){i=i||{};var n=t.coordinateSystem,o=e.axis,a={},r=o.getAxesOnZeroOf()[0],s=o.position,l=r?"onZero":s,u=o.dim,h=n.getRect(),c=[h.x,h.x+h.width,h.y,h.y+h.height],d={left:0,right:1,top:0,bottom:1,onZero:2},f=e.get("offset")||0,p="x"===u?[c[2]-f,c[3]+f]:[c[0]-f,c[1]+f];if(r){var g=r.toGlobalCoord(r.dataToCoord(0));p[d.onZero]=Math.max(Math.min(g,p[1]),p[0])}a.position=["y"===u?p[d[l]]:c[0],"x"===u?p[d[l]]:c[3]],a.rotation=Math.PI/2*("x"===u?0:1);a.labelDirection=a.tickDirection=a.nameDirection={top:-1,bottom:1,left:-1,right:1}[s],a.labelOffset=r?p[d[s]]-p[d.onZero]:0,e.get("axisTick.inside")&&(a.tickDirection=-a.tickDirection),W(i.labelInside,e.get("axisLabel.inside"))&&(a.labelDirection=-a.labelDirection);var m=e.get("axisLabel.rotate");return a.labelRotate="top"===l?-m:m,a.z2=1,a}function wv(t,e,i,n){var o=i.axis;if(!o.scale.isBlank()){var a=i.getModel("splitArea"),r=a.getModel("areaStyle"),s=r.get("color"),l=n.coordinateSystem.getRect(),u=o.getTicksCoords({tickModel:a,clamp:!0});if(u.length){var h=s.length,c=t.__splitAreaColors,d=Q(),f=0;if(c)for(var p=0;p<u.length;p++){var g=c.get(u[p].tickValue);if(null!=g){f=(g+(h-1)*p)%h;break}}var m=o.toGlobalCoord(u[0].coord),v=r.getAreaStyle();s=L(s)?s:[s];for(p=1;p<u.length;p++){var y,x,_,w,b=o.toGlobalCoord(u[p].coord);m=o.isHorizontal()?(y=m,x=l.y,_=b-y,w=l.height,y+_):(y=l.x,x=m,_=l.width,x+(w=b-x));var S=u[p-1].tickValue;null!=S&&d.set(S,f),e.add(new rs({anid:null!=S?"area_"+S:null,shape:{x:y,y:x,width:_,height:w},style:D({fill:s[f]},v),silent:!0})),f=(f+1)%h}t.__splitAreaColors=d}}}function bv(t){t.__splitAreaColors=null}mv.registerAxisPointerClass=function(t,e){xv[t]=e},mv.getAxisPointerClass=function(t){return t&&xv[t]};var Sv=["axisLine","axisTickLabel","axisName"],Mv=["splitArea","splitLine","minorSplitLine"],Iv=mv.extend({type:"cartesianAxis",axisPointerClass:"CartesianAxisPointer",render:function(e,t,i,n){this.group.removeAll();var o=this._axisGroup;if(this._axisGroup=new Ci,this.group.add(this._axisGroup),e.get("show")){var a=e.getCoordSysModel(),r=_v(a,e),s=new Qm(e,r);E(Sv,s.add,s),this._axisGroup.add(s.getGroup()),E(Mv,function(t){e.get(t+".show")&&this["_"+t](e,a)},this),ml(o,this._axisGroup,e),Iv.superCall(this,"render",e,t,i,n)}},remove:function(){bv(this)},_splitLine:function(t,e){var i=t.axis;if(!i.scale.isBlank()){var n=t.getModel("splitLine"),o=n.getModel("lineStyle"),a=o.get("color");a=L(a)?a:[a];for(var r=e.coordinateSystem.getRect(),s=i.isHorizontal(),l=0,u=i.getTicksCoords({tickModel:n}),h=[],c=[],d=o.getLineStyle(),f=0;f<u.length;f++){var p=i.toGlobalCoord(u[f].coord);s?(h[0]=p,h[1]=r.y,c[0]=p,c[1]=r.y+r.height):(h[0]=r.x,h[1]=p,c[0]=r.x+r.width,c[1]=p);var g=l++%a.length,m=u[f].tickValue;this._axisGroup.add(new ls({anid:null!=m?"line_"+u[f].tickValue:null,subPixelOptimize:!0,shape:{x1:h[0],y1:h[1],x2:c[0],y2:c[1]},style:D({stroke:a[g]},d),silent:!0}))}}},_minorSplitLine:function(t,e){var i=t.axis,n=t.getModel("minorSplitLine").getModel("lineStyle"),o=e.coordinateSystem.getRect(),a=i.isHorizontal(),r=i.getMinorTicksCoords();if(r.length)for(var s=[],l=[],u=n.getLineStyle(),h=0;h<r.length;h++)for(var c=0;c<r[h].length;c++){var d=i.toGlobalCoord(r[h][c].coord);a?(s[0]=d,s[1]=o.y,l[0]=d,l[1]=o.y+o.height):(s[0]=o.x,s[1]=d,l[0]=o.x+o.width,l[1]=d),this._axisGroup.add(new ls({anid:"minor_line_"+r[h][c].tickValue,subPixelOptimize:!0,shape:{x1:s[0],y1:s[1],x2:l[0],y2:l[1]},style:u,silent:!0}))}},_splitArea:function(t,e){wv(this,this._axisGroup,t,e)}});Iv.extend({type:"xAxis"}),Iv.extend({type:"yAxis"}),Af({type:"grid",render:function(t,e){this.group.removeAll(),t.get("show")&&this.group.add(new rs({shape:t.coordinateSystem.getRect(),style:D({fill:t.get("backgroundColor")},t.getItemStyle()),silent:!0,z2:-1}))}}),yf(function(t){t.xAxis&&t.yAxis&&!t.grid&&(t.grid={})}),Sf(Lm("line","circle","line")),bf(km("line")),xf(Ld.PROCESSOR.STATISTIC,{seriesType:"line",modifyOutputEnd:!0,reset:function(t,e,i){var n=t.getData(),o=t.get("sampling"),a=t.coordinateSystem;if("cartesian2d"===a.type&&o){var r,s=a.getBaseAxis(),l=a.getOtherAxis(s),u=s.getExtent(),h=u[1]-u[0],c=Math.round(n.count()/h);1<c&&("string"==typeof o?r=Nm[o]:"function"==typeof o&&(r=o),r&&t.setData(n.downSample(n.mapDimension(l.dim),1/c,r,Pm)))}}});var Tv=sc.extend({type:"series.__base_bar__",getInitialData:function(t,e){return gp(this.getSource(),this,{useEncodeDefaulter:!0})},getMarkerPosition:function(t){var e=this.coordinateSystem;if(e){var i=e.dataToPoint(e.clampData(t)),n=this.getData(),o=n.getLayout("offset"),a=n.getLayout("size");return i[e.getBaseAxis().isHorizontal()?0:1]+=o+a/2,i}return[NaN,NaN]},defaultOption:{zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,barMinHeight:0,barMinAngle:0,large:!1,largeThreshold:400,progressive:3e3,progressiveChunkMode:"mod",itemStyle:{},emphasis:{}}});function Av(t,e,i,n,o,a){el(t,e,i.getModel("label"),i.getModel("emphasis.label"),{labelFetcher:o,labelDataIndex:a,defaultText:Ug(o.getData(),a),isRectText:!0,autoColor:n}),Dv(t),Dv(e)}function Dv(t,e){"outside"===t.textPosition&&(t.textPosition=e)}Tv.extend({type:"series.bar",dependencies:["grid","polar"],brushSelector:"rect",getProgressive:function(){return!!this.get("large")&&this.get("progressive")},getProgressiveThreshold:function(){var t=this.get("progressiveThreshold"),e=this.get("largeThreshold");return t<e&&(t=e),t},defaultOption:{clip:!0,roundCap:!1,showBackground:!1,backgroundStyle:{color:"rgba(180, 180, 180, 0.2)",borderColor:null,borderWidth:0,borderType:"solid",borderRadius:0,shadowBlur:0,shadowColor:null,shadowOffsetX:0,shadowOffsetY:0,opacity:1}}});var Cv=ha([["fill","color"],["stroke","borderColor"],["lineWidth","borderWidth"],["stroke","barBorderColor"],["lineWidth","barBorderWidth"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]),Lv={getBarItemStyle:function(t){var e=Cv(this,t);if(this.getBorderLineDash){var i=this.getBorderLineDash();i&&(e.lineDash=i)}return e}},kv=Cs({type:"sausage",shape:{cx:0,cy:0,r0:0,r:0,startAngle:0,endAngle:2*Math.PI,clockwise:!0},buildPath:function(t,e){var i=e.cx,n=e.cy,o=Math.max(e.r0||0,0),a=Math.max(e.r,0),r=.5*(a-o),s=o+r,l=e.startAngle,u=e.endAngle,h=e.clockwise,c=Math.cos(l),d=Math.sin(l),f=Math.cos(u),p=Math.sin(u);(h?u-l<2*Math.PI:l-u<2*Math.PI)&&(t.moveTo(c*o+i,d*o+n),t.arc(c*s+i,d*s+n,r,-Math.PI+l,l,!h)),t.arc(i,n,a,l,u,!h),t.moveTo(f*a+i,p*a+n),t.arc(f*s+i,p*s+n,r,u-2*Math.PI,u-Math.PI,!h),0!==o&&(t.arc(i,n,o,u,l,h),t.moveTo(c*o+i,p*o+n)),t.closePath()}}),Pv=["itemStyle","barBorderWidth"],Nv=[0,0];P(Cl.prototype,Lv),Cf({type:"bar",render:function(t,e,i){this._updateDrawMode(t);var n=t.get("coordinateSystem");return"cartesian2d"!==n&&"polar"!==n||(this._isLargeDraw?this._renderLarge(t,e,i):this._renderNormal(t,e,i)),this.group},incrementalPrepareRender:function(t,e,i){this._clear(),this._updateDrawMode(t)},incrementalRender:function(t,e,i,n){this._incrementalRenderLarge(t,e)},_updateDrawMode:function(t){var e=t.pipelineContext.large;(null==this._isLargeDraw||e^this._isLargeDraw)&&(this._isLargeDraw=e,this._clear())},_renderNormal:function(s,t,e){var l,u=this.group,h=s.getData(),c=this._data,d=s.coordinateSystem,i=d.getBaseAxis();"cartesian2d"===d.type?l=i.isHorizontal():"polar"===d.type&&(l="angle"===i.dim);var f=s.isAnimationEnabled()?s:null,p=s.get("clip",!0),g=function(t,e){var i=t.getArea&&t.getArea();if("cartesian2d"===t.type){var n=t.getBaseAxis();if("category"!==n.type||!n.onBand){var o=e.getLayout("bandWidth");n.isHorizontal()?(i.x-=o,i.width+=2*o):(i.y-=o,i.height+=2*o)}}return i}(d,h);u.removeClipPath();var m=s.get("roundCap",!0),v=s.get("showBackground",!0),y=s.getModel("backgroundStyle"),x=y.get("barBorderRadius")||0,_=[],w=this._backgroundEls||[];h.diff(c).add(function(t){var e=h.getItemModel(t),i=Gv[d.type](h,t,e);if(v){var n=Gv[d.type](h,t),o=function(t,e,i){return new("polar"===t.type?qr:rs)({shape:Xv(e,i,t),silent:!0,z2:0})}(d,l,n);o.useStyle(y.getBarItemStyle()),"cartesian2d"===d.type&&o.setShape("r",x),_[t]=o}if(h.hasValue(t)){if(p)if(Rv[d.type](g,i))return void u.remove(a);var a=zv[d.type](t,i,l,f,!1,m);h.setItemGraphicEl(t,a),u.add(a),Wv(a,h,t,e,i,s,l,"polar"===d.type)}}).update(function(t,e){var i=h.getItemModel(t),n=Gv[d.type](h,t,i);if(v){var o=w[e];o.useStyle(y.getBarItemStyle()),"cartesian2d"===d.type&&o.setShape("r",x),_[t]=o;var a=Gv[d.type](h,t);cl(o,{shape:Xv(l,a,d)},f,t)}var r=c.getItemGraphicEl(e);if(h.hasValue(t)){if(p)if(Rv[d.type](g,n))return void u.remove(r);r?cl(r,{shape:n},f,t):r=zv[d.type](t,n,l,f,!0,m),h.setItemGraphicEl(t,r),u.add(r),Wv(r,h,t,i,n,s,l,"polar"===d.type)}else u.remove(r)}).remove(function(t){var e=c.getItemGraphicEl(t);"cartesian2d"===d.type?e&&Bv(t,f,e):e&&Vv(t,f,e)}).execute();var n=this._backgroundGroup||(this._backgroundGroup=new Ci);n.removeAll();for(var o=0;o<_.length;++o)n.add(_[o]);u.add(n),this._backgroundEls=_,this._data=h},_renderLarge:function(t,e,i){this._clear(),Zv(t,this.group);var n=t.get("clip",!0)?Sm(t.coordinateSystem,!1,t):null;n?this.group.setClipPath(n):this.group.removeClipPath()},_incrementalRenderLarge:function(t,e){this._removeBackground(),Zv(e,this.group,!0)},dispose:et,remove:function(t){this._clear(t)},_clear:function(e){var t=this.group,i=this._data;e&&e.get("animation")&&i&&!this._isLargeDraw?(this._removeBackground(),this._backgroundEls=[],i.eachItemGraphicEl(function(t){"sector"===t.type?Vv(t.dataIndex,e,t):Bv(t.dataIndex,e,t)})):t.removeAll(),this._data=null},_removeBackground:function(){this.group.remove(this._backgroundGroup),this._backgroundGroup=null}});var Ov=Math.max,Ev=Math.min,Rv={cartesian2d:function(t,e){var i=e.width<0?-1:1,n=e.height<0?-1:1;i<0&&(e.x+=e.width,e.width=-e.width),n<0&&(e.y+=e.height,e.height=-e.height);var o=Ov(e.x,t.x),a=Ev(e.x+e.width,t.x+t.width),r=Ov(e.y,t.y),s=Ev(e.y+e.height,t.y+t.height);e.x=o,e.y=r,e.width=a-o,e.height=s-r;var l=e.width<0||e.height<0;return i<0&&(e.x+=e.width,e.width=-e.width),n<0&&(e.y+=e.height,e.height=-e.height),l},polar:function(t){return!1}},zv={cartesian2d:function(t,e,i,n,o){var a=new rs({shape:P({},e),z2:1});if(a.name="item",n){var r=i?"height":"width",s={};a.shape[r]=0,s[r]=e[r],bl[o?"updateProps":"initProps"](a,{shape:s},n,t)}return a},polar:function(t,e,i,n,o,a){var r=e.startAngle<e.endAngle,s=new(!i&&a?kv:qr)({shape:D({clockwise:r},e),z2:1});if(s.name="item",n){var l=i?"r":"endAngle",u={};s.shape[l]=i?0:e.startAngle,u[l]=e[l],bl[o?"updateProps":"initProps"](s,{shape:u},n,t)}return s}};function Bv(t,e,i){i.style.text=null,cl(i,{shape:{width:0}},e,t,function(){i.parent&&i.parent.remove(i)})}function Vv(t,e,i){i.style.text=null,cl(i,{shape:{r:i.shape.r0}},e,t,function(){i.parent&&i.parent.remove(i)})}var Gv={cartesian2d:function(t,e,i){var n=t.getItemLayout(e),o=i?function(t,e){var i=t.get(Pv)||0,n=isNaN(e.width)?Number.MAX_VALUE:Math.abs(e.width),o=isNaN(e.height)?Number.MAX_VALUE:Math.abs(e.height);return Math.min(i,n,o)}(i,n):0,a=0<n.width?1:-1,r=0<n.height?1:-1;return{x:n.x+a*o/2,y:n.y+r*o/2,width:n.width-a*o,height:n.height-r*o}},polar:function(t,e,i){var n=t.getItemLayout(e);return{cx:n.cx,cy:n.cy,r0:n.r0,r:n.r,startAngle:n.startAngle,endAngle:n.endAngle}}};function Fv(t){return null!=t.startAngle&&null!=t.endAngle&&t.startAngle===t.endAngle}function Wv(t,e,i,n,o,a,r,s){var l=e.getItemVisual(i,"color"),u=e.getItemVisual(i,"opacity"),h=e.getVisual("borderColor"),c=n.getModel("itemStyle"),d=n.getModel("emphasis.itemStyle").getBarItemStyle();s||t.setShape("r",c.get("barBorderRadius")||0),t.useStyle(D({stroke:Fv(o)?"none":h,fill:Fv(o)?"none":l,opacity:u},c.getBarItemStyle()));var f=n.getShallow("cursor");f&&t.attr("cursor",f);r?o.height:o.width;s||Av(t.style,d,n,l,a,i),Fv(o)&&(d.fill=d.stroke="none"),$s(t,d)}var Hv=Ar.extend({type:"largeBar",shape:{points:[]},buildPath:function(t,e){for(var i=e.points,n=this.__startPoint,o=this.__baseDimIdx,a=0;a<i.length;a+=2)n[o]=i[a+o],t.moveTo(n[0],n[1]),t.lineTo(i[a],i[a+1])}});function Zv(t,e,i){var n=t.getData(),o=[],a=n.getLayout("valueAxisHorizontal")?1:0;o[1-a]=n.getLayout("valueAxisStart");var r=n.getLayout("largeDataIndices"),s=n.getLayout("barWidth"),l=t.getModel("backgroundStyle");if(t.get("showBackground",!0)){var u=n.getLayout("largeBackgroundPoints"),h=[];h[1-a]=n.getLayout("backgroundStart");var c=new Hv({shape:{points:u},incremental:!!i,__startPoint:h,__baseDimIdx:a,__largeDataIndices:r,__barWidth:s,silent:!0,z2:0});!function(t,e,i){var n=e.get("borderColor")||e.get("color"),o=e.getItemStyle(["color","borderColor"]);t.useStyle(o),t.style.fill=null,t.style.stroke=n,t.style.lineWidth=i.getLayout("barWidth")}(c,l,n),e.add(c)}var d=new Hv({shape:{points:n.getLayout("largePoints")},incremental:!!i,__startPoint:o,__baseDimIdx:a,__largeDataIndices:r,__barWidth:s});e.add(d),function(t,e,i){var n=i.getVisual("borderColor")||i.getVisual("color"),o=e.getModel("itemStyle").getItemStyle(["color","borderColor"]);t.useStyle(o),t.style.fill=null,t.style.stroke=n,t.style.lineWidth=i.getLayout("barWidth")}(d,t,n),d.seriesIndex=t.seriesIndex,t.get("silent")||(d.on("mousedown",Uv),d.on("mousemove",Uv))}var Uv=Lc(function(t){var e=function(t,e,i){var n=t.__baseDimIdx,o=1-n,a=t.shape.points,r=t.__largeDataIndices,s=Math.abs(t.__barWidth/2),l=t.__startPoint[o];Nv[0]=e,Nv[1]=i;for(var u=Nv[n],h=Nv[1-n],c=u-s,d=u+s,f=0,p=a.length/2;f<p;f++){var g=2*f,m=a[g+n],v=a[g+o];if(c<=m&&m<=d&&(l<=v?l<=h&&h<=v:v<=h&&h<=l))return r[f]}return-1}(this,t.offsetX,t.offsetY);this.dataIndex=0<=e?e:null},30,!1);function Xv(t,e,i){var n,o="polar"===i.type;return n=o?i.getArea():i.grid.getRect(),o?{cx:n.cx,cy:n.cy,r0:t?n.r0:e.r0,r:t?n.r:e.r,startAngle:t?e.startAngle:0,endAngle:t?e.endAngle:2*Math.PI}:{x:t?e.x:n.x,y:t?n.y:e.y,width:t?e.width:n.width,height:t?n.height:e.height}}bf(Ld.VISUAL.LAYOUT,T(zp,"bar")),bf(Ld.VISUAL.PROGRESSIVE_LAYOUT,Bp),Sf({seriesType:"bar",reset:function(t){t.getData().setVisual("legendSymbol","roundRect")}});function Yv(t,e,i){e=L(e)&&{coordDimensions:e}||P({},e);var n=t.getSource(),o=lp(n,e),a=new Yf(o,t);return a.initData(n,i),a}var jv={updateSelectedMap:function(t){this._targetList=L(t)?t.slice():[],this._selectTargetMap=S(t||[],function(t,e){return t.set(e.name,e),t},Q())},select:function(t,e){var i=null!=e?this._targetList[e]:this._selectTargetMap.get(t);"single"===this.get("selectedMode")&&this._selectTargetMap.each(function(t){t.selected=!1}),i&&(i.selected=!0)},unSelect:function(t,e){var i=null!=e?this._targetList[e]:this._selectTargetMap.get(t);i&&(i.selected=!1)},toggleSelected:function(t,e){var i=null!=e?this._targetList[e]:this._selectTargetMap.get(t);if(null!=i)return this[i.selected?"unSelect":"select"](t,e),i.selected},isSelected:function(t,e){var i=null!=e?this._targetList[e]:this._selectTargetMap.get(t);return i&&i.selected}};function qv(i,e){this.getAllNames=function(){var t=e();return t.mapArray(t.getName)},this.containName=function(t){return 0<=e().indexOfName(t)},this.indexOfName=function(t){return i().indexOfName(t)},this.getItemVisual=function(t,e){return i().getItemVisual(t,e)}}var Kv=Df({type:"series.pie",init:function(t){Kv.superApply(this,"init",arguments),this.legendVisualProvider=new qv(A(this.getData,this),A(this.getRawData,this)),this.updateSelectedMap(this._createSelectableList()),this._defaultLabelLine(t)},mergeOption:function(t){Kv.superCall(this,"mergeOption",t),this.updateSelectedMap(this._createSelectableList())},getInitialData:function(t,e){return Yv(this,{coordDimensions:["value"],encodeDefaulter:T(Ju,this)})},_createSelectableList:function(){for(var t=this.getRawData(),e=t.mapDimension("value"),i=[],n=0,o=t.count();n<o;n++)i.push({name:t.getName(n),value:t.get(e,n),selected:Zh(t,n,"selected")});return i},getDataParams:function(t){var e=this.getData(),i=Kv.superCall(this,"getDataParams",t),n=[];return e.each(e.mapDimension("value"),function(t){n.push(t)}),i.percent=Wl(n,t,e.hostModel.get("percentPrecision")),i.$vars.push("percent"),i},_defaultLabelLine:function(t){Go(t,"labelLine",["show"]);var e=t.labelLine,i=t.emphasis.labelLine;e.show=e.show&&t.label.show,i.show=i.show&&t.emphasis.label.show},defaultOption:{zlevel:0,z:2,legendHoverLink:!0,hoverAnimation:!0,center:["50%","50%"],radius:[0,"75%"],clockwise:!0,startAngle:90,minAngle:0,minShowLabelAngle:0,selectedOffset:10,hoverOffset:10,avoidLabelOverlap:!0,percentPrecision:2,stillShowZeroSum:!0,left:0,top:0,right:0,bottom:0,width:null,height:null,label:{rotate:!1,show:!0,position:"outer",alignTo:"none",margin:"25%",bleedMargin:10,distanceToLabelLine:5},labelLine:{show:!0,length:15,length2:15,smooth:!1,lineStyle:{width:1,type:"solid"}},itemStyle:{borderWidth:1},animationType:"expansion",animationTypeUpdate:"transition",animationEasing:"cubicOut"}});function $v(t,e,i,n){var o=e.getData(),a=this.dataIndex,r=o.getName(a),s=e.get("selectedOffset");n.dispatchAction({type:"pieToggleSelect",from:t,name:r,seriesId:e.id}),o.each(function(t){Jv(o.getItemGraphicEl(t),o.getItemLayout(t),e.isSelected(o.getName(t)),s,i)})}function Jv(t,e,i,n,o){var a=(e.startAngle+e.endAngle)/2,r=i?n:0,s=[Math.cos(a)*r,Math.sin(a)*r];o?t.animate().when(200,{position:s}).start("bounceOut"):t.attr("position",s)}function Qv(t,e){Ci.call(this);var i=new qr({z2:2}),n=new ts,o=new Ur;this.add(i),this.add(n),this.add(o),this.updateData(t,e,!0)}b(Kv,jv);var ty=Qv.prototype;ty.updateData=function(t,e,i){var n=this.childAt(0),o=this.childAt(1),a=this.childAt(2),r=t.hostModel,s=t.getItemModel(e),l=t.getItemLayout(e),u=P({},l);u.label=null;var h=r.getShallow("animationTypeUpdate");i?(n.setShape(u),"scale"===r.getShallow("animationType")?(n.shape.r=l.r0,dl(n,{shape:{r:l.r}},r,e)):(n.shape.endAngle=l.startAngle,cl(n,{shape:{endAngle:l.endAngle}},r,e))):"expansion"===h?n.setShape(u):cl(n,{shape:u},r,e);var c=t.getItemVisual(e,"color");n.useStyle(D({lineJoin:"bevel",fill:c},s.getModel("itemStyle").getItemStyle())),n.hoverStyle=s.getModel("emphasis.itemStyle").getItemStyle();var d=s.getShallow("cursor");d&&n.attr("cursor",d),Jv(this,t.getItemLayout(e),r.isSelected(t.getName(e)),r.get("selectedOffset"),r.get("animation"));var f=!i&&"transition"===h;this._updateLabel(t,e,f),this.highDownOnUpdate=r.get("silent")?null:function(t,e){var i=r.isAnimationEnabled()&&s.get("hoverAnimation");"emphasis"===e?(o.ignore=o.hoverIgnore,a.ignore=a.hoverIgnore,i&&(n.stopAnimation(!0),n.animateTo({shape:{r:l.r+r.get("hoverOffset")}},300,"elasticOut"))):(o.ignore=o.normalIgnore,a.ignore=a.normalIgnore,i&&(n.stopAnimation(!0),n.animateTo({shape:{r:l.r}},300,"elasticOut")))},$s(this)},ty._updateLabel=function(t,e,i){var n=this.childAt(1),o=this.childAt(2),a=t.hostModel,r=t.getItemModel(e),s=t.getItemLayout(e).label,l=t.getItemVisual(e,"color");if(!s||isNaN(s.x)||isNaN(s.y))o.ignore=o.normalIgnore=o.hoverIgnore=n.ignore=n.normalIgnore=n.hoverIgnore=!0;else{var u={points:s.linePoints||[[s.x,s.y],[s.x,s.y],[s.x,s.y]]},h={x:s.x,y:s.y};i?(cl(n,{shape:u},a,e),cl(o,{style:h},a,e)):(n.attr({shape:u}),o.attr({style:h})),o.attr({rotation:s.rotation,origin:[s.x,s.y],z2:10});var c=r.getModel("label"),d=r.getModel("emphasis.label"),f=r.getModel("labelLine"),p=r.getModel("emphasis.labelLine");l=t.getItemVisual(e,"color");el(o.style,o.hoverStyle={},c,d,{labelFetcher:t.hostModel,labelDataIndex:e,defaultText:s.text,autoColor:l,useInsideStyle:!!s.inside},{textAlign:s.textAlign,textVerticalAlign:s.verticalAlign,opacity:t.getItemVisual(e,"opacity")}),o.ignore=o.normalIgnore=!c.get("show"),o.hoverIgnore=!d.get("show"),n.ignore=n.normalIgnore=!f.get("show"),n.hoverIgnore=!p.get("show"),n.setStyle({stroke:l,opacity:t.getItemVisual(e,"opacity")}),n.setStyle(f.getModel("lineStyle").getLineStyle()),n.hoverStyle=p.getModel("lineStyle").getLineStyle();var g=f.get("smooth");g&&!0===g&&(g=.4),n.setShape({smooth:g})}},w(Qv,Ci);function ey(i,t){E(t,function(a){a.update="updateView",_f(a,function(t,e){var o={};return e.eachComponent({mainType:"series",subType:i,query:t},function(i){i[a.method]&&i[a.method](t.name,t.dataIndex);var n=i.getData();n.each(function(t){var e=n.getName(t);o[e]=i.isSelected(e)||!1})}),{name:t.name,selected:o,seriesId:t.seriesId}})})}function iy(n){return{getTargetSeries:function(t){var e={},i=Q();return t.eachSeriesByType(n,function(t){t.__paletteScope=e,i.set(t.uid,t)}),i},reset:function(s,t){var l=s.getRawData(),u={},h=s.getData();h.each(function(t){var e=h.getRawIndex(t);u[e]=t}),l.each(function(t){var e,i=u[t],n=null!=i&&h.getItemVisual(i,"color",!0),o=null!=i&&h.getItemVisual(i,"borderColor",!0);if(n&&o||(e=l.getItemModel(t)),!n){var a=e.get("itemStyle.color")||s.getColorFromPalette(l.getName(t)||t+"",s.__paletteScope,l.count());null!=i&&h.setItemVisual(i,"color",a)}if(!o){var r=e.get("itemStyle.borderColor");null!=i&&h.setItemVisual(i,"borderColor",r)}})}}}_c.extend({type:"pie",init:function(){var t=new Ci;this._sectorGroup=t},render:function(t,e,i,n){if(!n||n.from!==this.uid){var o=t.getData(),a=this._data,r=this.group,s=e.get("animation"),l=!a,u=t.get("animationType"),h=t.get("animationTypeUpdate"),c=T($v,this.uid,t,s,i),d=t.get("selectedMode");if(o.diff(a).add(function(t){var e=new Qv(o,t);l&&"scale"!==u&&e.eachChild(function(t){t.stopAnimation(!0)}),d&&e.on("click",c),o.setItemGraphicEl(t,e),r.add(e)}).update(function(t,e){var i=a.getItemGraphicEl(e);l||"transition"===h||i.eachChild(function(t){t.stopAnimation(!0)}),i.updateData(o,t),i.off("click"),d&&i.on("click",c),r.add(i),o.setItemGraphicEl(t,i)}).remove(function(t){var e=a.getItemGraphicEl(t);r.remove(e)}).execute(),s&&0<o.count()&&(l?"scale"!==u:"transition"!==h)){for(var f=o.getItemLayout(0),p=1;isNaN(f.startAngle)&&p<o.count();++p)f=o.getItemLayout(p);var g=Math.max(i.getWidth(),i.getHeight())/2,m=A(r.removeClipPath,r);r.setClipPath(this._createClipPath(f.cx,f.cy,g,f.startAngle,f.clockwise,m,t,l))}else r.removeClipPath();this._data=o}},dispose:function(){},_createClipPath:function(t,e,i,n,o,a,r,s){var l=new qr({shape:{cx:t,cy:e,r0:0,r:i,startAngle:n,endAngle:n,clockwise:o}});return(s?dl:cl)(l,{shape:{endAngle:n+(o?1:-1)*Math.PI*2}},r,a),l},containPoint:function(t,e){var i=e.getData().getItemLayout(0);if(i){var n=t[0]-i.cx,o=t[1]-i.cy,a=Math.sqrt(n*n+o*o);return a<=i.r&&a>=i.r0}}});var ny=Math.PI/180;function oy(o,t,e,i,n,a,r,s,l,u){function h(t,e,i){for(var n=t;n<e&&!(o[n].y+i>l+r);n++)if(o[n].y+=i,t<n&&n+1<e&&o[n+1].y>o[n].y+o[n].height)return void c(n,i/2);c(e-1,i/2)}function c(t,e){for(var i=t;0<=i&&!(o[i].y-e<l)&&(o[i].y-=e,!(0<i&&o[i].y>o[i-1].y+o[i-1].height));i--);}function d(t,e,i,n,o,a){for(var r=e?Number.MAX_VALUE:0,s=0,l=t.length;s<l;s++)if("none"===t[s].labelAlignTo){var u=Math.abs(t[s].y-n),h=t[s].len,c=t[s].len2,d=u<o+h?Math.sqrt((o+h+c)*(o+h+c)-u*u):Math.abs(t[s].x-i);e&&r<=d&&(d=r-10),!e&&d<=r&&(d=r+10),t[s].x=i+d*a,r=d}}o.sort(function(t,e){return t.y-e.y});for(var f,p=0,g=o.length,m=[],v=[],y=0;y<g;y++){if("outer"===o[y].position&&"labelLine"===o[y].labelAlignTo){var x=o[y].x-u;o[y].linePoints[1][0]+=x,o[y].x=u}(f=o[y].y-p)<0&&h(y,g,-f),p=o[y].y+o[y].height}r-p<0&&c(g-1,p-r);for(y=0;y<g;y++)o[y].y>=e?v.push(o[y]):m.push(o[y]);d(m,!1,t,e,i,n),d(v,!0,t,e,i,n)}function ay(t){return"center"===t.position}function ry(L,k,P,t,N,e){var O,E,R=L.getData(),z=[],B=!1,V=(L.get("minShowLabelAngle")||0)*ny;R.each(function(t){var e=R.getItemLayout(t),i=R.getItemModel(t),n=i.getModel("label"),o=n.get("position")||i.get("emphasis.label.position"),a=n.get("distanceToLabelLine"),r=n.get("alignTo"),s=Rl(n.get("margin"),P),l=n.get("bleedMargin"),u=n.getFont(),h=i.getModel("labelLine"),c=h.get("length");c=Rl(c,P);var d=h.get("length2");if(d=Rl(d,P),!(e.angle<V)){var f,p,g,m,v=(e.startAngle+e.endAngle)/2,y=Math.cos(v),x=Math.sin(v);O=e.cx,E=e.cy;var _,w=L.getFormattedLabel(t,"normal")||R.getName(t),b=gn(w,u,m,"top"),S="inside"===o||"inner"===o;if("center"===o)f=e.cx,p=e.cy,m="center";else{var M=(S?(e.r+e.r0)/2*y:e.r*y)+O,I=(S?(e.r+e.r0)/2*x:e.r*x)+E;if(f=M+3*y,p=I+3*x,!S){var T=M+y*(c+k-e.r),A=I+x*(c+k-e.r),D=T+(y<0?-1:1)*d;f="edge"===r?y<0?N+s:N+P-s:D+(y<0?-a:a),g=[[M,I],[T,A],[D,p=A]]}m=S?"center":"edge"===r?0<y?"right":"left":0<y?"left":"right"}var C=n.get("rotate");_="number"==typeof C?C*(Math.PI/180):C?y<0?-v+Math.PI:-v:0,B=!!_,e.label={x:f,y:p,position:o,height:b.height,len:c,len2:d,linePoints:g,textAlign:m,verticalAlign:"middle",rotation:_,inside:S,labelDistance:a,labelAlignTo:r,labelMargin:s,bleedMargin:l,textRect:b,text:w,font:u},S||z.push(e.label)}}),!B&&L.get("avoidLabelOverlap")&&function(t,e,i,n,o,a,r,s){for(var l=[],u=[],h=Number.MAX_VALUE,c=-Number.MAX_VALUE,d=0;d<t.length;d++)ay(t[d])||(t[d].x<e?(h=Math.min(h,t[d].x),l.push(t[d])):(c=Math.max(c,t[d].x),u.push(t[d])));for(oy(u,e,i,n,1,0,a,0,s,c),oy(l,e,i,n,-1,0,a,0,s,h),d=0;d<t.length;d++){var f=t[d];if(!ay(f)){var p=f.linePoints;if(p){var g,m="edge"===f.labelAlignTo,v=f.textRect.width;(g=m?f.x<e?p[2][0]-f.labelDistance-r-f.labelMargin:r+o-f.labelMargin-p[2][0]-f.labelDistance:f.x<e?f.x-r-f.bleedMargin:r+o-f.x-f.bleedMargin)<f.textRect.width&&(f.text=xn(f.text,g,f.font),"edge"===f.labelAlignTo&&(v=pn(f.text,f.font)));var y=p[1][0]-p[2][0];m?f.x<e?p[2][0]=r+f.labelMargin+v+f.labelDistance:p[2][0]=r+o-f.labelMargin-v-f.labelDistance:(f.x<e?p[2][0]=f.x+f.labelDistance:p[2][0]=f.x-f.labelDistance,p[1][0]=p[2][0]+y),p[1][1]=p[2][1]=f.y}}}}(z,O,E,k,P,t,N,e)}var sy=2*Math.PI,ly=Math.PI/180;function uy(t){return{seriesType:t,reset:function(t,e){var n=e.findComponents({mainType:"legend"});if(n&&n.length){var o=t.getData();o.filterSelf(function(t){for(var e=o.getName(t),i=0;i<n.length;i++)if(!n[i].isSelected(e))return!1;return!0})}}}}ey("pie",[{type:"pieToggleSelect",event:"pieselectchanged",method:"toggleSelected"},{type:"pieSelect",event:"pieselected",method:"select"},{type:"pieUnSelect",event:"pieunselected",method:"unSelect"}]),Sf(iy("pie")),bf(T(function(t,e,A,i){e.eachSeriesByType(t,function(t){var o=t.getData(),e=o.mapDimension("value"),a=function(t,e){return bu(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}(t,A),i=t.get("center"),n=t.get("radius");L(n)||(n=[0,n]),L(i)||(i=[i,i]);var r=Rl(a.width,A.getWidth()),s=Rl(a.height,A.getHeight()),l=Math.min(r,s),u=Rl(i[0],r)+a.x,h=Rl(i[1],s)+a.y,c=Rl(n[0],l/2),d=Rl(n[1],l/2),f=-t.get("startAngle")*ly,p=t.get("minAngle")*ly,g=0;o.each(e,function(t){isNaN(t)||g++});var m=o.getSum(e),v=Math.PI/(m||g)*2,y=t.get("clockwise"),x=t.get("roseType"),_=t.get("stillShowZeroSum"),w=o.getDataExtent(e);w[0]=0;var b=sy,S=0,M=f,I=y?1:-1;if(o.each(e,function(t,e){var i;if(isNaN(t))o.setItemLayout(e,{angle:NaN,startAngle:NaN,endAngle:NaN,clockwise:y,cx:u,cy:h,r0:c,r:x?NaN:d,viewRect:a});else{(i="area"!==x?0===m&&_?v:t*v:sy/g)<p?b-=i=p:S+=t;var n=M+I*i;o.setItemLayout(e,{angle:i,startAngle:M,endAngle:n,clockwise:y,cx:u,cy:h,r0:c,r:x?El(t,w,[c,d]):d,viewRect:a}),M=n}}),b<sy&&g)if(b<=.001){var T=sy/g;o.each(e,function(t,e){if(!isNaN(t)){var i=o.getItemLayout(e);i.angle=T,i.startAngle=f+I*e*T,i.endAngle=f+I*(e+1)*T}})}else v=b/S,M=f,o.each(e,function(t,e){if(!isNaN(t)){var i=o.getItemLayout(e),n=i.angle===p?p:t*v;i.startAngle=M,i.endAngle=M+I*n,M+=I*n}});ry(t,d,a.width,a.height,a.x,a.y)})},"pie")),xf(uy("pie")),sc.extend({type:"series.scatter",dependencies:["grid","polar","geo","singleAxis","calendar"],getInitialData:function(t,e){return gp(this.getSource(),this,{useEncodeDefaulter:!0})},brushSelector:"point",getProgressive:function(){var t=this.option.progressive;return null==t?this.option.large?5e3:this.get("progressive"):t},getProgressiveThreshold:function(){var t=this.option.progressiveThreshold;return null==t?this.option.large?1e4:this.get("progressiveThreshold"):t},defaultOption:{coordinateSystem:"cartesian2d",zlevel:0,z:2,legendHoverLink:!0,hoverAnimation:!0,symbolSize:10,large:!1,largeThreshold:2e3,itemStyle:{opacity:.8},clip:!0}});var hy=Cs({shape:{points:null},symbolProxy:null,softClipShape:null,buildPath:function(t,e){var i=e.points,n=e.size,o=this.symbolProxy,a=o.shape;if(!((t.getContext?t.getContext():t)&&n[0]<4))for(var r=0;r<i.length;){var s=i[r++],l=i[r++];isNaN(s)||isNaN(l)||this.softClipShape&&!this.softClipShape.contain(s,l)||(a.x=s-n[0]/2,a.y=l-n[1]/2,a.width=n[0],a.height=n[1],o.buildPath(t,a,!0))}},afterBrush:function(t){var e=this.shape,i=e.points,n=e.size;if(n[0]<4){this.setTransform(t);for(var o=0;o<i.length;){var a=i[o++],r=i[o++];isNaN(a)||isNaN(r)||this.softClipShape&&!this.softClipShape.contain(a,r)||t.fillRect(a-n[0]/2,r-n[1]/2,n[0],n[1])}this.restoreTransform(t)}},findDataIndex:function(t,e){for(var i=this.shape,n=i.points,o=i.size,a=Math.max(o[0],4),r=Math.max(o[1],4),s=n.length/2-1;0<=s;s--){var l=2*s,u=n[l]-a/2,h=n[1+l]-r/2;if(u<=t&&h<=e&&t<=u+a&&e<=h+r)return s}return-1}});function cy(){this.group=new Ci}var dy=cy.prototype;function fy(t,e,i){Gg.call(this,t,e,i),this.type="value",this.angle=0,this.name="",this.model}function py(t,e,i){this._model=t,this.dimensions=[],this._indicatorAxes=O(t.getIndicatorModels(),function(t,e){var i="indicator_"+e,n=new fy(i,"log"===t.get("axisType")?new ng:new Dp);return n.name=t.get("name"),(n.model=t).axis=n,this.dimensions.push(i),n},this),this.resize(t,i),this.cx,this.cy,this.r,this.r0,this.startAngle}dy.isPersistent=function(){return!this._incremental},dy.updateData=function(t,e){this.group.removeAll();var i=new hy({rectHover:!0,cursor:"default"});i.setShape({points:t.getLayout("symbolPoints")}),this._setCommon(i,t,!1,e),this.group.add(i),this._incremental=null},dy.updateLayout=function(t){if(!this._incremental){var n=t.getLayout("symbolPoints");this.group.eachChild(function(t){if(null!=t.startIndex){var e=2*(t.endIndex-t.startIndex),i=4*t.startIndex*2;n=new Float32Array(n.buffer,i,e)}t.setShape("points",n)})}},dy.incrementalPrepareUpdate=function(t){this.group.removeAll(),this._clearIncremental(),2e6<t.count()?(this._incremental||(this._incremental=new vs({silent:!0})),this.group.add(this._incremental)):this._incremental=null},dy.incrementalUpdate=function(t,e,i){var n;this._incremental?(n=new hy,this._incremental.addDisplayable(n,!0)):((n=new hy({rectHover:!0,cursor:"default",startIndex:t.start,endIndex:t.end})).incremental=!0,this.group.add(n)),n.setShape({points:e.getLayout("symbolPoints")}),this._setCommon(n,e,!!this._incremental,i)},dy._setCommon=function(i,t,e,n){var o=t.hostModel;n=n||{};var a=t.getVisual("symbolSize");i.setShape("size",a instanceof Array?a:[a,a]),i.softClipShape=n.clipShape||null,i.symbolProxy=wg(t.getVisual("symbol"),0,0,0,0),i.setColor=i.symbolProxy.setColor;var r=i.shape.size[0]<4;i.useStyle(o.getModel("itemStyle").getItemStyle(r?["color","shadowBlur","shadowColor"]:["color"]));var s=t.getVisual("color");s&&i.setColor(s),e||(i.seriesIndex=o.seriesIndex,i.on("mousemove",function(t){i.dataIndex=null;var e=i.findDataIndex(t.offsetX,t.offsetY);0<=e&&(i.dataIndex=e+(i.startIndex||0))}))},dy.remove=function(){this._clearIncremental(),this._incremental=null,this.group.removeAll()},dy._clearIncremental=function(){var t=this._incremental;t&&t.clearDisplaybles()},Cf({type:"scatter",render:function(t,e,i){var n=t.getData();this._updateSymbolDraw(n,t).updateData(n,{clipShape:this._getClipShape(t)}),this._finished=!0},incrementalPrepareRender:function(t,e,i){var n=t.getData();this._updateSymbolDraw(n,t).incrementalPrepareUpdate(n),this._finished=!1},incrementalRender:function(t,e,i){this._symbolDraw.incrementalUpdate(t,e.getData(),{clipShape:this._getClipShape(e)}),this._finished=t.end===e.getData().count()},updateTransform:function(t,e,i){var n=t.getData();if(this.group.dirty(),!this._finished||1e4<n.count()||!this._symbolDraw.isPersistent())return{update:!0};var o=km().reset(t);o.progress&&o.progress({start:0,end:n.count()},n),this._symbolDraw.updateLayout(n)},_getClipShape:function(t){var e=t.coordinateSystem,i=e&&e.getArea&&e.getArea();return t.get("clip",!0)?i:null},_updateSymbolDraw:function(t,e){var i=this._symbolDraw,n=e.pipelineContext.large;return i&&n===this._isLargeDraw||(i&&i.remove(),i=this._symbolDraw=n?new cy:new im,this._isLargeDraw=n,this.group.removeAll()),this.group.add(i.group),i},remove:function(t,e){this._symbolDraw&&this._symbolDraw.remove(!0),this._symbolDraw=null},dispose:function(){}}),Sf(Lm("scatter","circle")),bf(km("scatter")),w(fy,Gg),py.prototype.getIndicatorAxes=function(){return this._indicatorAxes},py.prototype.dataToPoint=function(t,e){var i=this._indicatorAxes[e];return this.coordToPoint(i.dataToCoord(t),e)},py.prototype.coordToPoint=function(t,e){var i=this._indicatorAxes[e].angle;return[this.cx+t*Math.cos(i),this.cy-t*Math.sin(i)]},py.prototype.pointToData=function(t){var e=t[0]-this.cx,i=t[1]-this.cy,n=Math.sqrt(e*e+i*i);e/=n,i/=n;for(var o,a=Math.atan2(-i,e),r=1/0,s=-1,l=0;l<this._indicatorAxes.length;l++){var u=this._indicatorAxes[l],h=Math.abs(a-u.angle);h<r&&(o=u,s=l,r=h)}return[s,+(o&&o.coordToData(n))]},py.prototype.resize=function(t,e){var i=t.get("center"),n=e.getWidth(),o=e.getHeight(),a=Math.min(n,o)/2;this.cx=Rl(i[0],n),this.cy=Rl(i[1],o),this.startAngle=t.get("startAngle")*Math.PI/180;var r=t.get("radius");"string"!=typeof r&&"number"!=typeof r||(r=[0,r]),this.r0=Rl(r[0],a),this.r=Rl(r[1],a),E(this._indicatorAxes,function(t,e){t.setExtent(this.r0,this.r);var i=this.startAngle+e*Math.PI*2/this._indicatorAxes.length;i=Math.atan2(Math.sin(i),Math.cos(i)),t.angle=i},this)},py.prototype.update=function(n,t){var o=this._indicatorAxes,a=this._model;E(o,function(t){t.scale.setExtent(1/0,-1/0)}),n.eachSeriesByType("radar",function(t,e){if("radar"===t.get("coordinateSystem")&&n.getComponent("radar",t.get("radarIndex"))===a){var i=t.getData();E(o,function(t){t.scale.unionExtentFromData(i,i.mapDimension(t.dim))})}},this);var c=a.get("splitNumber");function d(t){var e=Math.pow(10,Math.floor(Math.log(t)/Math.LN10)),i=t/e;return 2===i?i=5:i*=2,i*e}E(o,function(t,e){var i=ag(t.scale,t.model).extent;rg(t.scale,t.model);var n=t.model,o=t.scale,a=n.getMin(),r=n.getMax(),s=o.getInterval();if(null!=a&&null!=r)o.setExtent(+a,+r),o.setInterval((r-a)/c);else if(null!=a)for(;u=a+s*c,o.setExtent(+a,u),o.setInterval(s),s=d(s),u<i[1]&&isFinite(u)&&isFinite(i[1]););else if(null!=r)for(;h=r-s*c,o.setExtent(h,+r),o.setInterval(s),s=d(s),h>i[0]&&isFinite(h)&&isFinite(i[0]););else{var l=o.getTicks().length-1;c<l&&(s=d(s));var u,h=zl((u=Math.ceil(i[1]/s)*s)-s*c);o.setExtent(h,u),o.setInterval(s)}})},py.dimensions=[],py.create=function(i,n){var o=[];return i.eachComponent("radar",function(t){var e=new py(t,i,n);o.push(e),t.coordinateSystem=e}),i.eachSeriesByType("radar",function(t){"radar"===t.get("coordinateSystem")&&(t.coordinateSystem=o[t.get("radarIndex")||0])}),o},lh.register("radar",py);var gy=Vm.valueAxis;function my(t,e){return D({show:e},t)}Tf({type:"radar",optionUpdated:function(){var o=this.get("boundaryGap"),a=this.get("splitNumber"),r=this.get("scale"),s=this.get("axisLine"),l=this.get("axisTick"),u=this.get("axisType"),h=this.get("axisLabel"),c=this.get("name"),d=this.get("name.show"),f=this.get("name.formatter"),p=this.get("nameGap"),g=this.get("triggerEvent"),t=O(this.get("indicator")||[],function(t){null!=t.max&&0<t.max&&!t.min?t.min=0:null!=t.min&&t.min<0&&!t.max&&(t.max=0);var e=c;if(null!=t.color&&(e=D({color:t.color},c)),t=m(k(t),{boundaryGap:o,splitNumber:a,scale:r,axisLine:s,axisTick:l,axisType:u,axisLabel:h,name:t.text,nameLocation:"end",nameGap:p,nameTextStyle:e,triggerEvent:g},!1),d||(t.name=""),"string"==typeof f){var i=t.name;t.name=f.replace("{value}",null!=i?i:"")}else"function"==typeof f&&(t.name=f(t.name,t));var n=P(new Cl(t,null,this.ecModel),dg);return n.mainType="radar",n.componentIndex=this.componentIndex,n},this);this.getIndicatorModels=function(){return t}},defaultOption:{zlevel:0,z:0,center:["50%","50%"],radius:"75%",startAngle:90,name:{show:!0},boundaryGap:[0,0],splitNumber:5,nameGap:15,scale:!1,shape:"polygon",axisLine:m({lineStyle:{color:"#bbb"}},gy.axisLine),axisLabel:my(gy.axisLabel,!1),axisTick:my(gy.axisTick,!1),axisType:"interval",splitLine:my(gy.splitLine,!0),splitArea:my(gy.splitArea,!0),indicator:[]}});var vy=["axisLine","axisTickLabel","axisName"];Af({type:"radar",render:function(t,e,i){this.group.removeAll(),this._buildAxes(t),this._buildSplitLineAndArea(t)},_buildAxes:function(t){var e=t.coordinateSystem;E(O(e.getIndicatorAxes(),function(t){return new Qm(t.model,{position:[e.cx,e.cy],rotation:t.angle,labelDirection:-1,tickDirection:-1,nameDirection:1})}),function(t){E(vy,t.add,t),this.group.add(t.getGroup())},this)},_buildSplitLineAndArea:function(t){var n=t.coordinateSystem,e=n.getIndicatorAxes();if(e.length){var i=t.get("shape"),o=t.getModel("splitLine"),a=t.getModel("splitArea"),r=o.getModel("lineStyle"),s=a.getModel("areaStyle"),l=o.get("show"),u=a.get("show"),h=r.get("color"),c=s.get("color");h=L(h)?h:[h],c=L(c)?c:[c];var d=[],f=[];if("circle"===i)for(var p=e[0].getTicksCoords(),g=n.cx,m=n.cy,v=0;v<p.length;v++){if(l)d[I(d,h,v)].push(new Yr({shape:{cx:g,cy:m,r:p[v].coord}}));if(u&&v<p.length-1)f[I(f,c,v)].push(new Kr({shape:{cx:g,cy:m,r0:p[v].coord,r:p[v+1].coord}}))}else{var y,x=O(e,function(t,e){var i=t.getTicksCoords();return y=null==y?i.length-1:Math.min(i.length-1,y),O(i,function(t){return n.coordToPoint(t.coord,e)})}),_=[];for(v=0;v<=y;v++){for(var w=[],b=0;b<e.length;b++)w.push(x[b][v]);if(w[0]&&w.push(w[0].slice()),l)d[I(d,h,v)].push(new ts({shape:{points:w}}));if(u&&_)f[I(f,c,v-1)].push(new Qr({shape:{points:w.concat(_)}}));_=w.slice().reverse()}}var S=r.getLineStyle(),M=s.getAreaStyle();E(f,function(t,e){this.group.add(Es(t,{style:D({stroke:"none",fill:c[e%c.length]},M),silent:!0}))},this),E(d,function(t,e){this.group.add(Es(t,{style:D({fill:"none",stroke:h[e%h.length]},S),silent:!0}))},this)}function I(t,e,i){var n=i%e.length;return t[n]=t[n]||[],n}}});var yy=sc.extend({type:"series.radar",dependencies:["radar"],init:function(t){yy.superApply(this,"init",arguments),this.legendVisualProvider=new qv(A(this.getData,this),A(this.getRawData,this))},getInitialData:function(t,e){return Yv(this,{generateCoord:"indicator_",generateCoordCount:1/0})},formatTooltip:function(n){var o=this.getData(),t=this.coordinateSystem.getIndicatorAxes(),e=this.getData().getName(n);return au(""===e?this.name:e)+"<br/>"+O(t,function(t,e){var i=o.get(o.mapDimension(t.dim),n);return au(t.name+" : "+i)}).join("<br />")},getTooltipPosition:function(t){if(null!=t)for(var e=this.getData(),i=this.coordinateSystem,n=e.getValues(O(i.dimensions,function(t){return e.mapDimension(t)}),t,!0),o=0,a=n.length;o<a;o++)if(!isNaN(n[o])){var r=i.getIndicatorAxes();return i.coordToPoint(r[o].dataToCoord(n[o]),o)}},defaultOption:{zlevel:0,z:2,coordinateSystem:"radar",legendHoverLink:!0,radarIndex:0,lineStyle:{width:2,type:"solid"},label:{position:"top"},symbol:"emptyCircle",symbolSize:4}});Cf({type:"radar",render:function(l,t,e){var i=l.coordinateSystem,g=this.group,m=l.getData(),s=this._data;function u(t,e){var i=t.getItemVisual(e,"symbol")||"circle",n=t.getItemVisual(e,"color");if("none"!==i){var o=function(t){return L(t)||(t=[+t,+t]),t}(t.getItemVisual(e,"symbolSize")),a=wg(i,-1,-1,2,2,n);return a.attr({style:{strokeNoScale:!0},z2:100,scale:[o[0]/2,o[1]/2]}),a}}function h(t,e,i,n,o,a){i.removeAll();for(var r=0;r<e.length-1;r++){var s=u(n,o);s&&(t[s.__dimIdx=r]?(s.attr("position",t[r]),bl[a?"initProps":"updateProps"](s,{position:e[r]},l,o)):s.attr("position",e[r]),i.add(s))}}function c(t){return O(t,function(t){return[i.cx,i.cy]})}m.diff(s).add(function(t){var e=m.getItemLayout(t);if(e){var i=new Qr,n=new ts,o={shape:{points:e}};i.shape.points=c(e),n.shape.points=c(e),dl(i,o,l,t),dl(n,o,l,t);var a=new Ci,r=new Ci;a.add(n),a.add(i),a.add(r),h(n.shape.points,e,r,m,t,!0),m.setItemGraphicEl(t,a)}}).update(function(t,e){var i=s.getItemGraphicEl(e),n=i.childAt(0),o=i.childAt(1),a=i.childAt(2),r={shape:{points:m.getItemLayout(t)}};r.shape.points&&(h(n.shape.points,r.shape.points,a,m,t,!1),cl(n,r,l),cl(o,r,l),m.setItemGraphicEl(t,i))}).remove(function(t){g.remove(s.getItemGraphicEl(t))}).execute(),m.eachItemGraphicEl(function(t,i){var e=m.getItemModel(i),n=t.childAt(0),o=t.childAt(1),a=t.childAt(2),r=m.getItemVisual(i,"color");g.add(t),n.useStyle(D(e.getModel("lineStyle").getLineStyle(),{fill:"none",stroke:r})),n.hoverStyle=e.getModel("emphasis.lineStyle").getLineStyle();var s=e.getModel("areaStyle"),l=e.getModel("emphasis.areaStyle"),u=s.isEmpty()&&s.parentModel.isEmpty(),h=l.isEmpty()&&l.parentModel.isEmpty();h=h&&u,o.ignore=u,o.useStyle(D(s.getAreaStyle(),{fill:r,opacity:.7})),o.hoverStyle=l.getAreaStyle();var c=e.getModel("itemStyle").getItemStyle(["color"]),d=e.getModel("emphasis.itemStyle").getItemStyle(),f=e.getModel("label"),p=e.getModel("emphasis.label");a.eachChild(function(t){t.setStyle(c),t.hoverStyle=k(d);var e=m.get(m.dimensions[t.__dimIdx],i);null!=e&&!isNaN(e)||(e=""),el(t.style,t.hoverStyle,f,p,{labelFetcher:m.hostModel,labelDataIndex:i,labelDimIndex:t.__dimIdx,defaultText:e,autoColor:r,isRectText:!0})}),t.highDownOnUpdate=function(t,e){o.attr("ignore","emphasis"===e?h:u)},$s(t)}),this._data=m},remove:function(){this.group.removeAll(),this._data=null},dispose:function(){}});function xy(t){return!isNaN(t[0])&&!isNaN(t[1])}function _y(t){return[t.cx,t.cy]}Sf(iy("radar")),Sf(Lm("radar","circle")),bf(function(t){t.eachSeriesByType("radar",function(t){var i=t.getData(),o=[],a=t.coordinateSystem;if(a){var e=a.getIndicatorAxes();E(e,function(t,n){i.each(i.mapDimension(e[n].dim),function(t,e){o[e]=o[e]||[];var i=a.dataToPoint(t,n);o[e][n]=xy(i)?i:_y(a)})}),i.each(function(t){var e=I(o[t],function(t){return xy(t)})||_y(a);o[t].push(e.slice()),i.setItemLayout(t,o[t])})}})}),xf(uy("radar")),yf(function(i){var t=i.polar;if(t){L(t)||(t=[t]);var n=[];E(t,function(t,e){t.indicator?(t.type&&!t.shape&&(t.shape=t.type),i.radar=i.radar||[],L(i.radar)||(i.radar=[i.radar]),i.radar.push(t)):n.push(t)}),i.polar=n}E(i.series,function(t){t&&"radar"===t.type&&t.polarIndex&&(t.radarIndex=t.polarIndex)})});for(var wy=[126,25],by=[[[0,3.5],[7,11.2],[15,11.9],[30,7],[42,.7],[52,.7],[56,7.7],[59,.7],[64,.7],[64,0],[5,0],[0,3.5]],[[13,16.1],[19,14.7],[16,21.7],[11,23.1],[13,16.1]],[[12,32.2],[14,38.5],[15,38.5],[13,32.2],[12,32.2]],[[16,47.6],[12,53.2],[13,53.2],[18,47.6],[16,47.6]],[[6,64.4],[8,70],[9,70],[8,64.4],[6,64.4]],[[23,82.6],[29,79.8],[30,79.8],[25,82.6],[23,82.6]],[[37,70.7],[43,62.3],[44,62.3],[39,70.7],[37,70.7]],[[48,51.1],[51,45.5],[53,45.5],[50,51.1],[48,51.1]],[[51,35],[51,28.7],[53,28.7],[53,35],[51,35]],[[52,22.4],[55,17.5],[56,17.5],[53,22.4],[52,22.4]],[[58,12.6],[62,7],[63,7],[60,12.6],[58,12.6]],[[0,3.5],[0,93.1],[64,93.1],[64,0],[63,0],[63,92.4],[1,92.4],[1,3.5],[0,3.5]]],Sy=0;Sy<by.length;Sy++)for(var My=0;My<by[Sy].length;My++)by[Sy][My][0]/=10.5,by[Sy][My][1]/=-14,by[Sy][My][0]+=wy[0],by[Sy][My][1]+=wy[1];var Iy={"南海诸岛":[32,80],"广东":[0,-10],"香港":[10,5],"澳门":[-10,10],"天津":[5,5]},Ty={Russia:[100,60],"United States":[-99,38],"United States of America":[-99,38]},Ay=[[[123.45165252685547,25.73527164402261],[123.49731445312499,25.73527164402261],[123.49731445312499,25.750734064600884],[123.45165252685547,25.750734064600884],[123.45165252685547,25.73527164402261]]],Dy=jo(),Cy={load:function(n,t,e){var i=Dy(t).parsed;if(i)return i;var o,a=t.specialAreas||{},r=t.geoJSON;try{o=r?Cg(r,e):[]}catch(t){throw new Error("Invalid geoJson format\n"+t.message)}return function(t,e){"china"===t&&e.push(new Ag("南海诸岛",O(by,function(t){return{type:"polygon",exterior:t}}),wy))}(n,o),E(o,function(t){var e=t.name;!function(t,e){if("china"===t){var i=Iy[e.name];if(i){var n=e.center;n[0]+=i[0]/10.5,n[1]+=-i[1]/14}}}(n,t),function(t,e){if("world"===t){var i=Ty[e.name];if(i){var n=e.center;n[0]=i[0],n[1]=i[1]}}}(n,t),function(t,e){"china"===t&&"台湾"===e.name&&e.geometries.push({type:"polygon",exterior:Ay[0]})}(n,t);var i=a[e];i&&t.transformTo(i.left,i.top,i.width,i.height)}),Dy(t).parsed={regions:o,boundingRect:function(t){for(var e,i=0;i<t.length;i++){var n=t[i].getBoundingRect();(e=e||n.clone()).union(n)}return e}(o)}}};var Ly=jo();function ky(t,e){var i,n,o=t.svgXML;try{Y(null!=(n=(i=o&&function(t,e){return(new hd).parse(t,e)}(o,{ignoreViewBox:!0,ignoreRootClip:!0})||{}).root))}catch(t){throw new Error("Invalid svg format\n"+t.message)}var a=i.width,r=i.height,s=i.viewBoxRect;if(e||(e=null==a||null==r?n.getBoundingRect():new Di(0,0,0,0),null!=a&&(e.width=a),null!=r&&(e.height=r)),s){var l=wd(s,e.width,e.height),u=n;(n=new Ci).add(u),u.scale=l.scale,u.position=l.position}return n.setClipPath(new rs({shape:e.plain()})),{root:n,boundingRect:e}}var Py={geoJSON:Cy,svg:{load:function(t,e){var i=Ly(e).originRoot;if(i)return{root:i,boundingRect:Ly(e).boundingRect};var n=ky(e);return Ly(e).originRoot=n.root,Ly(e).boundingRect=n.boundingRect,n},makeGraphic:function(t,e,i){var n=Ly(e),o=n.rootMap||(n.rootMap=Q()),a=o.get(i);if(a)return a;var r=n.originRoot,s=n.boundingRect;return a=n.originRootHostKey?ky(e,s).root:(n.originRootHostKey=i,r),o.set(i,a)},removeGraphic:function(t,e,i){var n=Ly(e),o=n.rootMap;o&&o.removeKey(i),i===n.originRootHostKey&&(n.originRootHostKey=null)}}},Ny={load:function(n,o,a){var r,s=[],l=Q(),u=Q();return E(Ey(n),function(t){var e=Py[t.type].load(n,t,a);E(e.regions,function(t){var e=t.name;o&&o.hasOwnProperty(e)&&(t=t.cloneShallow(e=o[e])),s.push(t),l.set(e,t),u.set(e,t.center)});var i=e.boundingRect;i&&(r?r.union(i):r=i.clone())}),{regions:s,regionsMap:l,nameCoordMap:u,boundingRect:r||new Di(0,0,0,0)}},makeGraphic:Oy("makeGraphic"),removeGraphic:Oy("removeGraphic")};function Oy(a){return function(i,n){var t=Ey(i),o=[];return E(t,function(t){var e=Py[t.type][a];e&&o.push(e(i,t,n))}),o}}function Ey(t){return Sd.retrieveMap(t)||[]}b(sc.extend({type:"series.map",dependencies:["geo"],layoutMode:"box",needsDrawMap:!1,seriesGroup:[],getInitialData:function(t){for(var e=Yv(this,{coordDimensions:["value"],encodeDefaulter:T(Ju,this)}),i=e.mapDimension("value"),n=Q(),o=[],a=[],r=0,s=e.count();r<s;r++){var l=e.getName(r);n.set(l,!0),o.push({name:l,value:e.get(i,r),selected:Zh(e,r,"selected")})}return E(Ny.load(this.getMapType(),this.option.nameMap,this.option.nameProperty).regions,function(t){var e=t.name;n.get(e)||(o.push({name:e}),a.push(e))}),this.updateSelectedMap(o),e.appendValues([],a),e},getHostGeoModel:function(){var t=this.option.geoIndex;return null!=t?this.dependentModels.geo[t]:null},getMapType:function(){return(this.getHostGeoModel()||this).option.map},getRawValue:function(t){var e=this.getData();return e.get(e.mapDimension("value"),t)},getRegionModel:function(t){var e=this.getData();return e.getItemModel(e.indexOfName(t))},formatTooltip:function(t){for(var e=this.getData(),i=tu(this.getRawValue(t)),n=e.getName(t),o=this.seriesGroup,a=[],r=0;r<o.length;r++){var s=o[r].originalData.indexOfName(n),l=e.mapDimension("value");isNaN(o[r].originalData.get(l,s))||a.push(au(o[r].name))}return a.join(", ")+"<br />"+au(n+" : "+i)},getTooltipPosition:function(t){if(null!=t){var e=this.getData().getName(t),i=this.coordinateSystem,n=i.getRegion(e);return n&&i.dataToPoint(n.center)}},setZoom:function(t){this.option.zoom=t},setCenter:function(t){this.option.center=t},defaultOption:{zlevel:0,z:2,coordinateSystem:"geo",map:"",left:"center",top:"center",aspectScale:.75,showLegendSymbol:!0,dataRangeHoverLink:!0,boundingCoords:null,center:null,zoom:1,scaleLimit:null,label:{show:!1,color:"#000"},itemStyle:{borderWidth:.5,borderColor:"#444",areaColor:"#eee"},emphasis:{label:{show:!0,color:"rgb(100,0,0)"},itemStyle:{areaColor:"rgba(255,215,0,0.8)"}},nameProperty:"name"}}),jv);var Ry="\0_ec_interaction_mutex";function zy(t,e){return!!By(t)[e]}function By(t){return t[Ry]||(t[Ry]={})}function Vy(i){this.pointerChecker,this._zr=i,this._opt={};var t=A,n=t(Gy,this),o=t(Fy,this),a=t(Wy,this),r=t(Hy,this),s=t(Zy,this);Ct.call(this),this.setPointerChecker=function(t){this.pointerChecker=t},this.enable=function(t,e){this.disable(),this._opt=D(k(e)||{},{zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!1,preventDefaultMouseMove:!0}),null==t&&(t=!0),!0!==t&&"move"!==t&&"pan"!==t||(i.on("mousedown",n),i.on("mousemove",o),i.on("mouseup",a)),!0!==t&&"scale"!==t&&"zoom"!==t||(i.on("mousewheel",r),i.on("pinch",s))},this.disable=function(){i.off("mousedown",n),i.off("mousemove",o),i.off("mouseup",a),i.off("mousewheel",r),i.off("pinch",s)},this.dispose=this.disable,this.isDragging=function(){return this._dragging},this.isPinching=function(){return this._pinching}}function Gy(t){if(!(Yt(t)||t.target&&t.target.draggable)){var e=t.offsetX,i=t.offsetY;this.pointerChecker&&this.pointerChecker(t,e,i)&&(this._x=e,this._y=i,this._dragging=!0)}}function Fy(t){if(this._dragging&&Yy("moveOnMouseMove",t,this._opt)&&"pinch"!==t.gestureEvent&&!zy(this._zr,"globalPan")){var e=t.offsetX,i=t.offsetY,n=this._x,o=this._y,a=e-n,r=i-o;this._x=e,this._y=i,this._opt.preventDefaultMouseMove&&Xt(t.event),Xy(this,"pan","moveOnMouseMove",t,{dx:a,dy:r,oldX:n,oldY:o,newX:e,newY:i})}}function Wy(t){Yt(t)||(this._dragging=!1)}function Hy(t){var e=Yy("zoomOnMouseWheel",t,this._opt),i=Yy("moveOnMouseWheel",t,this._opt),n=t.wheelDelta,o=Math.abs(n),a=t.offsetX,r=t.offsetY;if(0!==n&&(e||i)){if(e){var s=3<o?1.4:1<o?1.2:1.1;Uy(this,"zoom","zoomOnMouseWheel",t,{scale:0<n?s:1/s,originX:a,originY:r})}if(i){var l=Math.abs(n);Uy(this,"scrollMove","moveOnMouseWheel",t,{scrollDelta:(0<n?1:-1)*(3<l?.4:1<l?.15:.05),originX:a,originY:r})}}}function Zy(t){zy(this._zr,"globalPan")||Uy(this,"zoom",null,t,{scale:1<t.pinchScale?1.1:1/1.1,originX:t.pinchX,originY:t.pinchY})}function Uy(t,e,i,n,o){t.pointerChecker&&t.pointerChecker(n,o.originX,o.originY)&&(Xt(n.event),Xy(t,e,i,n,o))}function Xy(t,e,i,n,o){o.isAvailableBehavior=A(Yy,null,i,n),t.trigger(e,o)}function Yy(t,e,i){var n=i[t];return!t||n&&(!R(n)||e.event[n+"Key"])}function jy(t,e,i){var n=t.target,o=n.position;o[0]+=e,o[1]+=i,n.dirty()}function qy(t,e,i,n){var o=t.target,a=t.zoomLimit,r=o.position,s=o.scale,l=t.zoom=t.zoom||1;if(l*=e,a){var u=a.min||0,h=a.max||1/0;l=Math.max(Math.min(h,l),u)}var c=l/t.zoom;t.zoom=l,r[0]-=(i-r[0])*(c-1),r[1]-=(n-r[1])*(c-1),s[0]*=c,s[1]*=c,o.dirty()}_f({type:"takeGlobalCursor",event:"globalCursorTaken",update:"update"},function(){}),b(Vy,Ct);var Ky={axisPointer:1,tooltip:1,brush:1};function $y(t,e,i){var n=e.getComponentByElement(t.topTarget),o=n&&n.coordinateSystem;return n&&n!==i&&!Ky[n.mainType]&&o&&o.model!==i}function Jy(t){var e=t.getItemStyle(),i=t.get("areaColor");return null!=i&&(e.fill=i),e}function Qy(i,t){t.eachChild(function(e){E(e.__regions,function(t){e.trigger(i.isSelected(t.name)?"emphasis":"normal")})})}function tx(t,e){var i=new Ci;this.uid=Nl("ec_map_draw"),this._controller=new Vy(t.getZr()),this._controllerHost={target:e?i:null},this.group=i,this._updateGroup=e,this._mouseDownFlag,this._mapName,this._initialized,i.add(this._regionsGroup=new Ci),i.add(this._backgroundGroup=new Ci)}tx.prototype={constructor:tx,draw:function(_,t,e,i,n){var w="geo"===_.mainType,b=_.getData&&_.getData();w&&t.eachComponent({mainType:"series",subType:"map"},function(t){b||t.getHostGeoModel()!==_||(b=t.getData())});var o=_.coordinateSystem;this._updateBackground(o);var S,M=this._regionsGroup,I=this.group,a=o.getTransformInfo(),T=!M.childAt(0)||n;if(T)I.transform=a.roamTransform,I.decomposeTransform(),I.dirty();else{var r=new ve;r.transform=a.roamTransform,r.decomposeTransform();var s={scale:r.scale,position:r.position};S=r.scale,cl(I,s,_)}var A=a.rawScale,D=a.rawPosition;M.removeAll();var C=["itemStyle"],L=["emphasis","itemStyle"],k=["label"],P=["emphasis","label"],N=Q();E(o.regions,function(t){var e=N.get(t.name)||N.set(t.name,new Ci),a=new ps({segmentIgnoreThreshold:1,shape:{paths:[]}});e.add(a);var i,n=(x=_.getRegionModel(t.name)||_).getModel(C),o=x.getModel(L),r=Jy(n),s=Jy(o),l=x.getModel(k),u=x.getModel(P);if(b){i=b.indexOfName(t.name);var h=b.getItemVisual(i,"color",!0);h&&(r.fill=h)}function c(t){return[t[0]*A[0]+D[0],t[1]*A[1]+D[1]]}E(t.geometries,function(t){if("polygon"===t.type){for(var e=[],i=0;i<t.exterior.length;++i)e.push(c(t.exterior[i]));a.shape.paths.push(new Qr({segmentIgnoreThreshold:1,shape:{points:e}}));for(i=0;i<(t.interiors?t.interiors.length:0);++i){for(var n=t.interiors[i],o=(e=[],0);o<n.length;++o)e.push(c(n[o]));a.shape.paths.push(new Qr({segmentIgnoreThreshold:1,shape:{points:e}}))}}}),a.setStyle(r),a.style.strokeNoScale=!0,a.culling=!0;var d=l.get("show"),f=u.get("show"),p=b&&isNaN(b.get(b.mapDimension("value"),i)),g=b&&b.getItemLayout(i);if(w||p&&(d||f)||g&&g.showLabel){var m,v=w?t.name:i;(!b||0<=i)&&(m=_);var y=new Ur({position:c(t.center.slice()),scale:[1/I.scale[0],1/I.scale[1]],z2:10,silent:!0});if(el(y.style,y.hoverStyle={},l,u,{labelFetcher:m,labelDataIndex:v,defaultText:t.name,useInsideStyle:!1},{textAlign:"center",textVerticalAlign:"middle"}),!T)cl(y,{scale:[1/S[0],1/S[1]]},_);e.add(y)}if(b)b.setItemGraphicEl(i,e);else{var x=_.getRegionModel(t.name);a.eventData={componentType:"geo",componentIndex:_.componentIndex,geoIndex:_.componentIndex,name:t.name,region:x&&x.option||{}}}(e.__regions||(e.__regions=[])).push(t),e.highDownSilentOnTouch=!!_.get("selectedMode"),$s(e,s),M.add(e)}),this._updateController(_,t,e),function(n,o,a,r,s){a.off("click"),a.off("mousedown"),o.get("selectedMode")&&(a.on("mousedown",function(){n._mouseDownFlag=!0}),a.on("click",function(t){if(n._mouseDownFlag){n._mouseDownFlag=!1;for(var e=t.target;!e.__regions;)e=e.parent;if(e){var i={type:("geo"===o.mainType?"geo":"map")+"ToggleSelect",batch:O(e.__regions,function(t){return{name:t.name,from:s.uid}})};i[o.mainType+"Id"]=o.id,r.dispatchAction(i),Qy(o,a)}}}))}(this,_,M,e,i),Qy(_,M)},remove:function(){this._regionsGroup.removeAll(),this._backgroundGroup.removeAll(),this._controller.dispose(),this._mapName&&Ny.removeGraphic(this._mapName,this.uid),this._mapName=null,this._controllerHost={}},_updateBackground:function(t){var e=t.map;this._mapName!==e&&E(Ny.makeGraphic(e,this.uid),function(t){this._backgroundGroup.add(t)},this),this._mapName=e},_updateController:function(n,t,o){var a=n.coordinateSystem,e=this._controller,i=this._controllerHost;i.zoomLimit=n.get("scaleLimit"),i.zoom=a.getZoom(),e.enable(n.get("roam")||!1);var r=n.mainType;function s(){var t={type:"geoRoam",componentType:r};return t[r+"Id"]=n.id,t}e.off("pan").on("pan",function(t){this._mouseDownFlag=!1,jy(i,t.dx,t.dy),o.dispatchAction(P(s(),{dx:t.dx,dy:t.dy}))},this),e.off("zoom").on("zoom",function(t){if(this._mouseDownFlag=!1,qy(i,t.scale,t.originX,t.originY),o.dispatchAction(P(s(),{zoom:t.scale,originX:t.originX,originY:t.originY})),this._updateGroup){var e=this.group.scale;this._regionsGroup.traverse(function(t){"text"===t.type&&t.attr("scale",[1/e[0],1/e[1]])})}},this),e.setPointerChecker(function(t,e,i){return a.getViewRectAfterRoam().contain(e,i)&&!$y(t,o,n)})}};var ex="__seriesMapHighDown",ix="__seriesMapCallKey";function nx(t){var e=this[ex];e&&e.recordVersion===this[ix]&&ox(e,t)}function ox(t,e){var i=t.circle,n=t.labelModel,o=t.hoverLabelModel,a=t.emphasisText,r=t.normalText;e?(i.style.extendFrom(nl({},o,{text:o.get("show")?a:null},{isRectText:!0,useInsideStyle:!1},!0)),i.__mapOriginalZ2=i.z2,i.z2+=bs):(nl(i.style,n,{text:n.get("show")?r:null,textPosition:n.getShallow("position")||"bottom"},{isRectText:!0,useInsideStyle:!1}),i.dirty(!1),null!=i.__mapOriginalZ2&&(i.z2=i.__mapOriginalZ2,i.__mapOriginalZ2=null))}function ax(t,e,i){var n=t.getZoom(),o=t.getCenter(),a=e.zoom,r=t.dataToPoint(o);if(null!=e.dx&&null!=e.dy){r[0]-=e.dx,r[1]-=e.dy;o=t.pointToData(r);t.setCenter(o)}if(null!=a){if(i){var s=i.min||0,l=i.max||1/0;a=Math.max(Math.min(n*a,l),s)/n}t.scale[0]*=a,t.scale[1]*=a;var u=t.position,h=(e.originX-u[0])*(a-1),c=(e.originY-u[1])*(a-1);u[0]-=h,u[1]-=c,t.updateTransform();o=t.pointToData(r);t.setCenter(o),t.setZoom(a*n)}return{center:t.getCenter(),zoom:t.getZoom()}}Cf({type:"map",render:function(t,e,i,n){if(!n||"mapToggleSelect"!==n.type||n.from!==this.uid){var o=this.group;if(o.removeAll(),!t.getHostGeoModel()){if(n&&"geoRoam"===n.type&&"series"===n.componentType&&n.seriesId===t.id)(a=this._mapDraw)&&o.add(a.group);else if(t.needsDrawMap){var a=this._mapDraw||new tx(i,!0);o.add(a.group),a.draw(t,e,i,this,n),this._mapDraw=a}else this._mapDraw&&this._mapDraw.remove(),this._mapDraw=null;t.get("showLegendSymbol")&&e.getComponent("legend")&&this._renderSymbols(t,e,i)}}},remove:function(){this._mapDraw&&this._mapDraw.remove(),this._mapDraw=null,this.group.removeAll()},dispose:function(){this._mapDraw&&this._mapDraw.remove(),this._mapDraw=null},_renderSymbols:function(x,t,e){var _=x.originalData,w=this.group;_.each(_.mapDimension("value"),function(t,e){if(!isNaN(t)){var i=_.getItemLayout(e);if(i&&i.point){var n=i.point,o=i.offset,a=new Yr({style:{fill:x.getData().getVisual("color")},shape:{cx:n[0]+9*o,cy:n[1],r:3},silent:!0,z2:8+(o?0:bs+1)});if(!o){var r=x.mainSeries.getData(),s=_.getName(e),l=r.indexOfName(s),u=_.getItemModel(e),h=u.getModel("label"),c=u.getModel("emphasis.label"),d=r.getItemGraphicEl(l),f=H(x.getFormattedLabel(l,"normal"),s),p=H(x.getFormattedLabel(l,"emphasis"),f),g=d[ex],m=Math.random();if(!g){g=d[ex]={};var v=T(nx,!0),y=T(nx,!1);d.on("mouseover",v).on("mouseout",y).on("emphasis",v).on("normal",y)}P(g,{recordVersion:d[ix]=m,circle:a,labelModel:h,hoverLabelModel:c,emphasisText:p,normalText:f}),ox(g,!1)}w.add(a)}}})}}),_f({type:"geoRoam",event:"geoRoam",update:"updateTransform"},function(n,t){var o=n.componentType||"series";t.eachComponent({mainType:o,query:n},function(t){var e=t.coordinateSystem;if("geo"===e.type){var i=ax(e,n,t.get("scaleLimit"));t.setCenter&&t.setCenter(i.center),t.setZoom&&t.setZoom(i.zoom),"series"===o&&E(t.seriesGroup,function(t){t.setCenter(i.center),t.setZoom(i.zoom)})}})});var rx=bt;function sx(){ve.call(this)}function lx(t){this.name=t,this.zoomLimit,ve.call(this),this._roamTransformable=new sx,this._rawTransformable=new sx,this._center,this._zoom}function ux(t,e,i,n){var o=i.seriesModel,a=o?o.coordinateSystem:null;return a===this?a[t](n):null}function hx(t,e,i,n){lx.call(this,t),this.map=e;var o=Ny.load(e,i);this._nameCoordMap=o.nameCoordMap,this._regionsMap=o.regionsMap,this._invertLongitute=null==n||n,this.regions=o.regions,this._rect=o.boundingRect}function cx(t,e,i,n){var o=i.geoModel,a=i.seriesModel,r=o?o.coordinateSystem:a?a.coordinateSystem||(a.getReferringComponents("geo")[0]||{}).coordinateSystem:null;return r===this?r[t](n):null}function dx(t,e){var i=t.get("boundingCoords");if(null!=i){var n=i[0],o=i[1];isNaN(n[0])||isNaN(n[1])||isNaN(o[0])||isNaN(o[1])||this.setBoundingRect(n[0],n[1],o[0]-n[0],o[1]-n[1])}var a,r=this.getBoundingRect(),s=t.get("layoutCenter"),l=t.get("layoutSize"),u=e.getWidth(),h=e.getHeight(),c=r.width/r.height*this.aspectScale,d=!1;if(s&&l&&(s=[Rl(s[0],u),Rl(s[1],h)],l=Rl(l,Math.min(u,h)),isNaN(s[0])||isNaN(s[1])||isNaN(l)||(d=!0)),d){var f={};1<c?(f.width=l,f.height=l/c):(f.height=l,f.width=l*c),f.y=s[1]-f.height/2,f.x=s[0]-f.width/2}else(a=t.getBoxLayoutParams()).aspect=c,f=bu(a,{width:u,height:h});this.setViewRect(f.x,f.y,f.width,f.height),this.setCenter(t.get("center")),this.setZoom(t.get("zoom"))}function fx(i,t){E(t.get("geoCoord"),function(t,e){i.addGeoCoord(e,t)})}b(sx,ve),lx.prototype={constructor:lx,type:"view",dimensions:["x","y"],setBoundingRect:function(t,e,i,n){return this._rect=new Di(t,e,i,n),this._rect},getBoundingRect:function(){return this._rect},setViewRect:function(t,e,i,n){this.transformTo(t,e,i,n),this._viewRect=new Di(t,e,i,n)},transformTo:function(t,e,i,n){var o=this.getBoundingRect(),a=this._rawTransformable;a.transform=o.calculateTransform(new Di(t,e,i,n)),a.decomposeTransform(),this._updateTransform()},setCenter:function(t){t&&(this._center=t,this._updateCenterAndZoom())},setZoom:function(t){t=t||1;var e=this.zoomLimit;e&&(null!=e.max&&(t=Math.min(e.max,t)),null!=e.min&&(t=Math.max(e.min,t))),this._zoom=t,this._updateCenterAndZoom()},getDefaultCenter:function(){var t=this.getBoundingRect();return[t.x+t.width/2,t.y+t.height/2]},getCenter:function(){return this._center||this.getDefaultCenter()},getZoom:function(){return this._zoom||1},getRoamTransform:function(){return this._roamTransformable.getLocalTransform()},_updateCenterAndZoom:function(){var t=this._rawTransformable.getLocalTransform(),e=this._roamTransformable,i=this.getDefaultCenter(),n=this.getCenter(),o=this.getZoom();n=bt([],n,t),i=bt([],i,t),e.origin=n,e.position=[i[0]-n[0],i[1]-n[1]],e.scale=[o,o],this._updateTransform()},_updateTransform:function(){var t=this._roamTransformable,e=this._rawTransformable;(e.parent=t).updateTransform(),e.updateTransform(),se(this.transform||(this.transform=[]),e.transform||ae()),this._rawTransform=e.getLocalTransform(),this.invTransform=this.invTransform||[],de(this.invTransform,this.transform),this.decomposeTransform()},getTransformInfo:function(){var t=this._roamTransformable.transform,e=this._rawTransformable;return{roamTransform:t?U(t):ae(),rawScale:U(e.scale),rawPosition:U(e.position)}},getViewRect:function(){return this._viewRect},getViewRectAfterRoam:function(){var t=this.getBoundingRect().clone();return t.applyTransform(this.transform),t},dataToPoint:function(t,e,i){var n=e?this._rawTransform:this.transform;return i=i||[],n?rx(i,t,n):at(i,t)},pointToData:function(t){var e=this.invTransform;return e?rx([],t,e):[t[0],t[1]]},convertToPixel:T(ux,"dataToPoint"),convertFromPixel:T(ux,"pointToData"),containPoint:function(t){return this.getViewRectAfterRoam().contain(t[0],t[1])}},b(lx,ve),hx.prototype={constructor:hx,type:"geo",dimensions:["lng","lat"],containCoord:function(t){for(var e=this.regions,i=0;i<e.length;i++)if(e[i].contain(t))return!0;return!1},transformTo:function(t,e,i,n){var o=this.getBoundingRect(),a=this._invertLongitute;o=o.clone(),a&&(o.y=-o.y-o.height);var r=this._rawTransformable;if(r.transform=o.calculateTransform(new Di(t,e,i,n)),r.decomposeTransform(),a){var s=r.scale;s[1]=-s[1]}r.updateTransform(),this._updateTransform()},getRegion:function(t){return this._regionsMap.get(t)},getRegionByCoord:function(t){for(var e=this.regions,i=0;i<e.length;i++)if(e[i].contain(t))return e[i]},addGeoCoord:function(t,e){this._nameCoordMap.set(t,e)},getGeoCoord:function(t){return this._nameCoordMap.get(t)},getBoundingRect:function(){return this._rect},dataToPoint:function(t,e,i){if("string"==typeof t&&(t=this.getGeoCoord(t)),t)return lx.prototype.dataToPoint.call(this,t,e,i)},convertToPixel:T(cx,"dataToPoint"),convertFromPixel:T(cx,"pointToData")},b(hx,lx);var px={dimensions:hx.prototype.dimensions,create:function(t,s){var l=[];t.eachComponent("geo",function(t,e){var i=t.get("map"),n=t.get("aspectScale"),o=!0,a=Sd.retrieveMap(i);a&&a[0]&&"svg"===a[0].type?(null==n&&(n=1),o=!1):null==n&&(n=.75);var r=new hx(i+e,i,t.get("nameMap"),o);r.aspectScale=n,r.zoomLimit=t.get("scaleLimit"),l.push(r),fx(r,t),(t.coordinateSystem=r).model=t,r.resize=dx,r.resize(t,s)}),t.eachSeries(function(t){if("geo"===t.get("coordinateSystem")){var e=t.get("geoIndex")||0;t.coordinateSystem=l[e]}});var i={};return t.eachSeriesByType("map",function(t){if(!t.getHostGeoModel()){var e=t.getMapType();i[e]=i[e]||[],i[e].push(t)}}),E(i,function(t,e){var i=new hx(e,e,p(O(t,function(t){return t.get("nameMap")})));i.zoomLimit=W.apply(null,O(t,function(t){return t.get("scaleLimit")})),l.push(i),i.resize=dx,i.aspectScale=t[0].get("aspectScale"),i.resize(t[0],s),E(t,function(t){fx(t.coordinateSystem=i,t)})}),l},getFilledRegions:function(t,e,i){for(var n=(t||[]).slice(),o=Q(),a=0;a<n.length;a++)o.set(n[a].name,n[a]);return E(Ny.load(e,i).regions,function(t){var e=t.name;o.get(e)||n.push({name:e})}),n}};wf("geo",px);bf(function(i){var o={};i.eachSeriesByType("map",function(t){var e=t.getMapType();if(!t.getHostGeoModel()&&!o[e]){var l={};E(t.seriesGroup,function(t){var r=t.coordinateSystem,s=t.originalData;t.get("showLegendSymbol")&&i.getComponent("legend")&&s.each(s.mapDimension("value"),function(t,e){var i=s.getName(e),n=r.getRegion(i);if(n&&!isNaN(t)){var o=l[i]||0,a=r.dataToPoint(n.center);l[i]=o+1,s.setItemLayout(e,{point:a,offset:o})}})});var n=t.getData();n.each(function(t){var e=n.getName(t),i=n.getItemLayout(t)||{};i.showLabel=!l[e],n.setItemLayout(t,i)}),o[e]=!0}})}),Sf(function(t){t.eachSeriesByType("map",function(t){var e=t.get("color"),i=t.getModel("itemStyle"),n=i.get("areaColor"),o=i.get("color")||e[t.seriesIndex%e.length];t.getData().setVisual({areaColor:n,color:o})})}),xf(Ld.PROCESSOR.STATISTIC,function(t){var n={};t.eachSeriesByType("map",function(t){var e=t.getHostGeoModel(),i=e?"o"+e.id:"i"+t.getMapType();(n[i]=n[i]||[]).push(t)}),E(n,function(t,e){for(var i=function(u,h){var c={};return E(u,function(n){n.each(n.mapDimension("value"),function(t,e){var i="ec-"+n.getName(e);c[i]=c[i]||[],isNaN(t)||c[i].push(t)})}),u[0].map(u[0].mapDimension("value"),function(t,e){for(var i,n="ec-"+u[0].getName(e),o=0,a=1/0,r=-1/0,s=c[n].length,l=0;l<s;l++)a=Math.min(a,c[n][l]),r=Math.max(r,c[n][l]),o+=c[n][l];return i="min"===h?a:"max"===h?r:"average"===h?o/s:o,0===s?NaN:i})}(O(t,function(t){return t.getData()}),t[0].get("mapValueCalculation")),n=0;n<t.length;n++)t[n].originalData=t[n].getData();for(n=0;n<t.length;n++)(t[n].seriesGroup=t)[n].needsDrawMap=0===n&&!t[n].getHostGeoModel(),t[n].setData(i.cloneShallow()),t[n].mainSeries=t[0]})}),yf(function(t){var e=[];E(t.series,function(t){t&&"map"===t.type&&(e.push(t),t.map=t.map||t.mapType,D(t,t.mapLocation))})}),ey("map",[{type:"mapToggleSelect",event:"mapselectchanged",method:"toggleSelected"},{type:"mapSelect",event:"mapselected",method:"select"},{type:"mapUnSelect",event:"mapunselected",method:"unSelect"}]);var gx=E,mx="\0__link_datas",vx="\0__link_mainData";function yx(i){var n=i.mainData,t=i.datas;t||(t={main:n},i.datasAttr={main:"data"}),i.datas=i.mainData=null,Mx(n,t,i),gx(t,function(e){gx(n.TRANSFERABLE_METHODS,function(t){e.wrapMethod(t,T(xx,i))})}),n.wrapMethod("cloneShallow",T(bx,i)),gx(n.CHANGABLE_METHODS,function(t){n.wrapMethod(t,T(_x,i))}),Y(t[n.dataType]===n)}function xx(t,e){if(function(t){return t[vx]===t}(this)){var i=P({},this[mx]);Mx(i[this.dataType]=e,i,t)}else Ix(e,this.dataType,this[vx],t);return e}function _x(t,e){return t.struct&&t.struct.update(this),e}function bx(i,n){return gx(n[mx],function(t,e){t!==n&&Ix(t.cloneShallow(),e,n,i)}),n}function Sx(t){var e=this[vx];return null==t||null==e?e:e[mx][t]}function Mx(i,t,n){i[mx]={},gx(t,function(t,e){Ix(t,e,i,n)})}function Ix(t,e,i,n){(i[mx][e]=t)[vx]=i,t.dataType=e,n.struct&&(t[n.structAttr]=n.struct,n.struct[n.datasAttr[e]]=t),t.getLinkedData=Sx}function Tx(t,e){this.name=t||"",this.depth=0,this.height=0,this.parentNode=null,this.dataIndex=-1,this.children=[],this.viewChildren=[],this.hostTree=e}function Ax(e,t){this.root,this.data,this._nodes=[],this.hostModel=e,this.levelModels=O(t||[],function(t){return new Cl(t,e,e.ecModel)})}function Dx(t,e){var i=e.children;t.parentNode!==e&&(i.push(t),t.parentNode=e)}function Cx(t,e){var i=t.isExpand?t.children:[],n=t.parentNode.children,o=t.hierNode.i?n[t.hierNode.i-1]:null;if(i.length){!function(t){var e=t.children,i=e.length,n=0,o=0;for(;0<=--i;){var a=e[i];a.hierNode.prelim+=n,a.hierNode.modifier+=n,o+=a.hierNode.change,n+=a.hierNode.shift+o}}(t);var a=(i[0].hierNode.prelim+i[i.length-1].hierNode.prelim)/2;o?(t.hierNode.prelim=o.hierNode.prelim+e(t,o),t.hierNode.modifier=t.hierNode.prelim-a):t.hierNode.prelim=a}else o&&(t.hierNode.prelim=o.hierNode.prelim+e(t,o));t.parentNode.hierNode.defaultAncestor=function(t,e,i,n){if(e){for(var o=t,a=t,r=a.parentNode.children[0],s=e,l=o.hierNode.modifier,u=a.hierNode.modifier,h=r.hierNode.modifier,c=s.hierNode.modifier;s=Nx(s),a=Ox(a),s&&a;){o=Nx(o),r=Ox(r),o.hierNode.ancestor=t;var d=s.hierNode.prelim+c-a.hierNode.prelim-u+n(s,a);0<d&&(Ex((p=t,g=i,(f=s).hierNode.ancestor.parentNode===p.parentNode?f.hierNode.ancestor:g),t,d),u+=d,l+=d),c+=s.hierNode.modifier,u+=a.hierNode.modifier,l+=o.hierNode.modifier,h+=r.hierNode.modifier}s&&!Nx(o)&&(o.hierNode.thread=s,o.hierNode.modifier+=c-l),a&&!Ox(r)&&(r.hierNode.thread=a,r.hierNode.modifier+=u-h,i=t)}var f,p,g;return i}(t,o,t.parentNode.hierNode.defaultAncestor||n[0],e)}function Lx(t){var e=t.hierNode.prelim+t.parentNode.hierNode.modifier;t.setLayout({x:e},!0),t.hierNode.modifier+=t.parentNode.hierNode.modifier}function kx(t){return arguments.length?t:Rx}function Px(t,e){var i={};return t-=Math.PI/2,i.x=e*Math.cos(t),i.y=e*Math.sin(t),i}function Nx(t){var e=t.children;return e.length&&t.isExpand?e[e.length-1]:t.hierNode.thread}function Ox(t){var e=t.children;return e.length&&t.isExpand?e[0]:t.hierNode.thread}function Ex(t,e,i){var n=i/(e.hierNode.i-t.hierNode.i);e.hierNode.change-=n,e.hierNode.shift+=i,e.hierNode.modifier+=i,e.hierNode.prelim+=i,t.hierNode.change+=n}function Rx(t,e){return t.parentNode===e.parentNode?1:2}Tx.prototype={constructor:Tx,isRemoved:function(){return this.dataIndex<0},eachNode:function(t,e,i){"function"==typeof t&&(i=e,e=t,t=null),R(t=t||{})&&(t={order:t});var n,o=t.order||"preorder",a=this[t.attr||"children"];"preorder"===o&&(n=e.call(i,this));for(var r=0;!n&&r<a.length;r++)a[r].eachNode(t,e,i);"postorder"===o&&e.call(i,this)},updateDepthAndHeight:function(t){var e=0;this.depth=t;for(var i=0;i<this.children.length;i++){var n=this.children[i];n.updateDepthAndHeight(t+1),n.height>e&&(e=n.height)}this.height=e+1},getNodeById:function(t){if(this.getId()===t)return this;for(var e=0,i=this.children,n=i.length;e<n;e++){var o=i[e].getNodeById(t);if(o)return o}},contains:function(t){if(t===this)return!0;for(var e=0,i=this.children,n=i.length;e<n;e++){var o=i[e].contains(t);if(o)return o}},getAncestors:function(t){for(var e=[],i=t?this:this.parentNode;i;)e.push(i),i=i.parentNode;return e.reverse(),e},getValue:function(t){var e=this.hostTree.data;return e.get(e.getDimension(t||"value"),this.dataIndex)},setLayout:function(t,e){0<=this.dataIndex&&this.hostTree.data.setItemLayout(this.dataIndex,t,e)},getLayout:function(){return this.hostTree.data.getItemLayout(this.dataIndex)},getModel:function(t){if(!(this.dataIndex<0)){var e=this.hostTree.data.getItemModel(this.dataIndex),i=this.getLevelModel();return i?e.getModel(t,i.getModel(t)):e.getModel(t)}},getLevelModel:function(){return(this.hostTree.levelModels||[])[this.depth]},setVisual:function(t,e){0<=this.dataIndex&&this.hostTree.data.setItemVisual(this.dataIndex,t,e)},getVisual:function(t,e){return this.hostTree.data.getItemVisual(this.dataIndex,t,e)},getRawIndex:function(){return this.hostTree.data.getRawIndex(this.dataIndex)},getId:function(){return this.hostTree.data.getId(this.dataIndex)},isAncestorOf:function(t){for(var e=t.parentNode;e;){if(e===this)return!0;e=e.parentNode}return!1},isDescendantOf:function(t){return t!==this&&t.isAncestorOf(this)}},Ax.prototype={constructor:Ax,type:"tree",eachNode:function(t,e,i){this.root.eachNode(t,e,i)},getNodeByDataIndex:function(t){var e=this.data.getRawIndex(t);return this._nodes[e]},getNodeByName:function(t){return this.root.getNodeByName(t)},update:function(){for(var t=this.data,e=this._nodes,i=0,n=e.length;i<n;i++)e[i].dataIndex=-1;for(i=0,n=t.count();i<n;i++)e[t.getRawIndex(i)].dataIndex=i},clearLayouts:function(){this.data.clearItemLayouts()}},Ax.createTree=function(t,e,i,n){var s=new Ax(e,i&&i.levels),l=[],u=1;!function t(e,i){var n=e.value;u=Math.max(u,L(n)?n.length:1);l.push(e);var o=new Tx(e.name,s);i?Dx(o,i):s.root=o;s._nodes.push(o);var a=e.children;if(a)for(var r=0;r<a.length;r++)t(a[r],o)}(t),s.root.updateDepthAndHeight(0);var o=lp(l,{coordDimensions:["value"],dimensionsCount:u}),a=new Yf(o,e);return a.initData(l),n&&n(a),yx({mainData:a,struct:s,structAttr:"tree"}),s.update(),s},sc.extend({type:"series.tree",layoutInfo:null,layoutMode:"box",getInitialData:function(t){var e={name:t.name,children:t.data},n=new Cl(t.leaves||{},this,this.ecModel),o=Ax.createTree(e,this,{},function(t){t.wrapMethod("getItemModel",function(t,e){var i=o.getNodeByDataIndex(e);return i.children.length&&i.isExpand||(t.parentModel=n),t})});var i=0;o.eachNode("preorder",function(t){t.depth>i&&(i=t.depth)});var a=t.expandAndCollapse&&0<=t.initialTreeDepth?t.initialTreeDepth:i;return o.root.eachNode("preorder",function(t){var e=t.hostTree.data.getRawDataItem(t.dataIndex);t.isExpand=e&&null!=e.collapsed?!e.collapsed:t.depth<=a}),o.data},getOrient:function(){var t=this.get("orient");return"horizontal"===t?t="LR":"vertical"===t&&(t="TB"),t},setZoom:function(t){this.option.zoom=t},setCenter:function(t){this.option.center=t},formatTooltip:function(t){for(var e=this.getData().tree,i=e.root.children[0],n=e.getNodeByDataIndex(t),o=n.getValue(),a=n.name;n&&n!==i;)a=n.parentNode.name+"."+a,n=n.parentNode;return au(a+(isNaN(o)||null==o?"":" : "+o))},defaultOption:{zlevel:0,z:2,coordinateSystem:"view",left:"12%",top:"12%",right:"12%",bottom:"12%",layout:"orthogonal",edgeShape:"curve",edgeForkPosition:"50%",roam:!1,nodeScaleRatio:.4,center:null,zoom:1,orient:"LR",symbol:"emptyCircle",symbolSize:7,expandAndCollapse:!0,initialTreeDepth:2,lineStyle:{color:"#ccc",width:1.5,curveness:.5},itemStyle:{color:"lightsteelblue",borderColor:"#c23531",borderWidth:1.5},label:{show:!0,color:"#555"},leaves:{label:{show:!0}},animationEasing:"linear",animationDuration:700,animationDurationUpdate:1e3}});var zx=Cs({shape:{parentPoint:[],childPoints:[],orient:"",forkPosition:""},style:{stroke:"#000",fill:null},buildPath:function(t,e){var i=e.childPoints,n=i.length,o=e.parentPoint,a=i[0],r=i[n-1];if(1===n)return t.moveTo(o[0],o[1]),void t.lineTo(a[0],a[1]);var s=e.orient,l="TB"===s||"BT"===s?0:1,u=1-l,h=Rl(e.forkPosition,1),c=[];c[l]=o[l],c[u]=o[u]+(r[u]-o[u])*h,t.moveTo(o[0],o[1]),t.lineTo(c[0],c[1]),t.moveTo(a[0],a[1]),c[l]=a[l],t.lineTo(c[0],c[1]),c[l]=r[l],t.lineTo(c[0],c[1]),t.lineTo(r[0],r[1]);for(var d=1;d<n-1;d++){var f=i[d];t.moveTo(f[0],f[1]),c[l]=f[l],t.lineTo(c[0],c[1])}}});function Bx(t,e){var i=t.getItemLayout(e);return i&&!isNaN(i.x)&&!isNaN(i.y)&&"none"!==t.getItemVisual(e,"symbol")}function Vx(t,e,i){return i.itemModel=e,i.itemStyle=e.getModel("itemStyle").getItemStyle(),i.hoverItemStyle=e.getModel("emphasis.itemStyle").getItemStyle(),i.lineStyle=e.getModel("lineStyle").getLineStyle(),i.labelModel=e.getModel("label"),i.hoverLabelModel=e.getModel("emphasis.label"),!1===t.isExpand&&0!==t.children.length?i.symbolInnerColor=i.itemStyle.fill:i.symbolInnerColor="#fff",i}function Gx(t,e,i,n,o,a){var r=!i,s=t.tree.getNodeByDataIndex(e),l=s.getModel(),u=(a=Vx(s,l,a),t.tree.root),h=s.parentNode===u?s:s.parentNode||s,c=t.getItemGraphicEl(h.dataIndex),d=h.getLayout(),f=c?{x:c.position[0],y:c.position[1],rawX:c.__radialOldRawX,rawY:c.__radialOldRawY}:d,p=s.getLayout();r?(i=new Xg(t,e,a)).attr("position",[f.x,f.y]):i.updateData(t,e,a),i.__radialOldRawX=i.__radialRawX,i.__radialOldRawY=i.__radialRawY,i.__radialRawX=p.rawX,i.__radialRawY=p.rawY,n.add(i),t.setItemGraphicEl(e,i),cl(i,{position:[p.x,p.y]},o);var g=i.getSymbolPath();if("radial"===a.layout){var m,v,y=u.children[0],x=y.getLayout(),_=y.children.length;if(p.x===x.x&&!0===s.isExpand){var w={};w.x=(y.children[0].getLayout().x+y.children[_-1].getLayout().x)/2,w.y=(y.children[0].getLayout().y+y.children[_-1].getLayout().y)/2,(m=Math.atan2(w.y-x.y,w.x-x.x))<0&&(m=2*Math.PI+m),(v=w.x<x.x)&&(m-=Math.PI)}else(m=Math.atan2(p.y-x.y,p.x-x.x))<0&&(m=2*Math.PI+m),0===s.children.length||0!==s.children.length&&!1===s.isExpand?(v=p.x<x.x)&&(m-=Math.PI):(v=p.x>x.x)||(m-=Math.PI);var b=v?"left":"right",S=a.labelModel.get("rotate"),M=S*(Math.PI/180);g.setStyle({textPosition:a.labelModel.get("position")||b,textRotation:null==S?-m:M,textOrigin:"center",verticalAlign:"middle"})}!function(t,e,i,n,o,a,r,s,l){var u=l.edgeShape,h=n.__edge;if("curve"===u)e.parentNode&&e.parentNode!==i&&cl(h=h||(n.__edge=new ds({shape:Wx(l,o,o),style:D({opacity:0,strokeNoScale:!0},l.lineStyle)})),{shape:Wx(l,a,r),style:{opacity:1}},t);else if("polyline"===u&&"orthogonal"===l.layout&&e!==i&&e.children&&0!==e.children.length&&!0===e.isExpand){for(var c=e.children,d=[],f=0;f<c.length;f++){var p=c[f].getLayout();d.push([p.x,p.y])}cl(h=h||(n.__edge=new zx({shape:{parentPoint:[r.x,r.y],childPoints:[[r.x,r.y]],orient:l.orient,forkPosition:l.edgeForkPosition},style:D({opacity:0,strokeNoScale:!0},l.lineStyle)})),{shape:{parentPoint:[r.x,r.y],childPoints:d},style:{opacity:1}},t)}s.add(h)}(o,s,u,i,f,d,p,n,a)}function Fx(t,e,i,n,o,a){for(var r,s=t.tree.getNodeByDataIndex(e),l=t.tree.root,u=s.getModel(),h=(a=Vx(s,u,a),s.parentNode===l?s:s.parentNode||s),c=a.edgeShape;null==(r=h.getLayout());)h=h.parentNode===l?h:h.parentNode||h;cl(i,{position:[r.x+1,r.y+1]},o,function(){n.remove(i),t.setItemGraphicEl(e,null)}),i.fadeOut(null,{keepLabel:!0});var d=t.getItemGraphicEl(h.dataIndex).__edge,f=i.__edge||(!1===h.isExpand||1===h.children.length?d:void 0);c=a.edgeShape;f&&("curve"===c?cl(f,{shape:Wx(a,r,r),style:{opacity:0}},o,function(){n.remove(f)}):"polyline"===c&&"orthogonal"===a.layout&&cl(f,{shape:{parentPoint:[r.x,r.y],childPoints:[[r.x,r.y]]},style:{opacity:0}},o,function(){n.remove(f)}))}function Wx(t,e,i){var n,o,a,r,s,l,u,h,c=t.orient;if("radial"!==t.layout)return s=e.x,u=e.y,l=i.x,h=i.y,"LR"!==c&&"RL"!==c||(n=s+(l-s)*t.curvature,o=u,a=l+(s-l)*t.curvature,r=h),"TB"!==c&&"BT"!==c||(n=s,o=u+(h-u)*t.curvature,a=l,r=h+(u-h)*t.curvature),{x1:s,y1:u,x2:l,y2:h,cpx1:n,cpy1:o,cpx2:a,cpy2:r};s=e.rawX,u=e.rawY,l=i.rawX,h=i.rawY;var d=Px(s,u),f=Px(s,u+(h-u)*t.curvature),p=Px(l,h+(u-h)*t.curvature),g=Px(l,h);return{x1:d.x,y1:d.y,x2:g.x,y2:g.y,cpx1:f.x,cpy1:f.y,cpx2:p.x,cpy2:p.y}}function Hx(t,e){for(var i,n=[t];i=n.pop();)if(e(i),i.isExpand){var o=i.children;if(o.length)for(var a=o.length-1;0<=a;a--)n.push(o[a])}}Cf({type:"tree",init:function(t,e){this._oldTree,this._mainGroup=new Ci,this._controller=new Vy(e.getZr()),this._controllerHost={target:this.group},this.group.add(this._mainGroup)},render:function(n,t,i,e){var o=n.getData(),a=n.layoutInfo,r=this._mainGroup,s=n.get("layout");"radial"===s?r.attr("position",[a.x+a.width/2,a.y+a.height/2]):r.attr("position",[a.x,a.y]),this._updateViewCoordSys(n,a,s),this._updateController(n,t,i);var l=this._data,u={expandAndCollapse:n.get("expandAndCollapse"),layout:s,edgeShape:n.get("edgeShape"),edgeForkPosition:n.get("edgeForkPosition"),orient:n.getOrient(),curvature:n.get("lineStyle.curveness"),symbolRotate:n.get("symbolRotate"),symbolOffset:n.get("symbolOffset"),hoverAnimation:n.get("hoverAnimation"),useNameLabel:!0,fadeIn:!0};o.diff(l).add(function(t){Bx(o,t)&&Gx(o,t,null,r,n,u)}).update(function(t,e){var i=l.getItemGraphicEl(e);Bx(o,t)?Gx(o,t,i,r,n,u):i&&Fx(l,e,i,r,n,u)}).remove(function(t){var e=l.getItemGraphicEl(t);e&&Fx(l,t,e,r,n,u)}).execute(),this._nodeScaleRatio=n.get("nodeScaleRatio"),this._updateNodeAndLinkScale(n),!0===u.expandAndCollapse&&o.eachItemGraphicEl(function(t,e){t.off("click").on("click",function(){i.dispatchAction({type:"treeExpandAndCollapse",seriesId:n.id,dataIndex:e})})}),this._data=o},_updateViewCoordSys:function(t){var i=t.getData(),n=[];i.each(function(t){var e=i.getItemLayout(t);!e||isNaN(e.x)||isNaN(e.y)||n.push([+e.x,+e.y])});var e=[],o=[];Wa(n,e,o);var a=this._min,r=this._max;o[0]-e[0]==0&&(e[0]=a?a[0]:e[0]-1,o[0]=r?r[0]:o[0]+1),o[1]-e[1]==0&&(e[1]=a?a[1]:e[1]-1,o[1]=r?r[1]:o[1]+1);var s=t.coordinateSystem=new lx;s.zoomLimit=t.get("scaleLimit"),s.setBoundingRect(e[0],e[1],o[0]-e[0],o[1]-e[1]),s.setCenter(t.get("center")),s.setZoom(t.get("zoom")),this.group.attr({position:s.position,scale:s.scale}),this._viewCoordSys=s,this._min=e,this._max=o},_updateController:function(o,t,a){var e=this._controller,i=this._controllerHost,r=this.group;e.setPointerChecker(function(t,e,i){var n=r.getBoundingRect();return n.applyTransform(r.transform),n.contain(e,i)&&!$y(t,a,o)}),e.enable(o.get("roam")),i.zoomLimit=o.get("scaleLimit"),i.zoom=o.coordinateSystem.getZoom(),e.off("pan").off("zoom").on("pan",function(t){jy(i,t.dx,t.dy),a.dispatchAction({seriesId:o.id,type:"treeRoam",dx:t.dx,dy:t.dy})},this).on("zoom",function(t){qy(i,t.scale,t.originX,t.originY),a.dispatchAction({seriesId:o.id,type:"treeRoam",zoom:t.scale,originX:t.originX,originY:t.originY}),this._updateNodeAndLinkScale(o)},this)},_updateNodeAndLinkScale:function(t){var e=t.getData(),i=this._getNodeGlobalScale(t),n=[i,i];e.eachItemGraphicEl(function(t,e){t.attr("scale",n)})},_getNodeGlobalScale:function(t){var e=t.coordinateSystem;if("view"!==e.type)return 1;var i=this._nodeScaleRatio,n=e.scale,o=n&&n[0]||1;return((e.getZoom()-1)*i+1)/o},dispose:function(){this._controller&&this._controller.dispose(),this._controllerHost={}},remove:function(){this._mainGroup.removeAll(),this._data=null}}),_f({type:"treeExpandAndCollapse",event:"treeExpandAndCollapse",update:"update"},function(n,t){t.eachComponent({mainType:"series",subType:"tree",query:n},function(t){var e=n.dataIndex,i=t.getData().tree.getNodeByDataIndex(e);i.isExpand=!i.isExpand})}),_f({type:"treeRoam",event:"treeRoam",update:"none"},function(i,t){t.eachComponent({mainType:"series",subType:"tree",query:i},function(t){var e=ax(t.coordinateSystem,i);t.setCenter&&t.setCenter(e.center),t.setZoom&&t.setZoom(e.zoom)})});function Zx(t,e,i){if(t&&0<=_(e,t.type)){var n=i.getData().tree.root,o=t.targetNode;if("string"==typeof o&&(o=n.getNodeById(o)),o&&n.contains(o))return{node:o};var a=t.targetNodeId;if(null!=a&&(o=n.getNodeById(a)))return{node:o}}}function Ux(t){for(var e=[];t;)(t=t.parentNode)&&e.push(t);return e.reverse()}function Xx(t,e){return 0<=_(Ux(t),e)}function Yx(t,e){for(var i=[];t;){var n=t.dataIndex;i.push({name:t.name,dataIndex:n,value:e.getRawValue(n)}),t=t.parentNode}return i.reverse(),i}Sf(Lm("tree","circle")),bf(function(t,e){t.eachSeriesByType("tree",function(t){!function(t,e){var i=function(t,e){return bu(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}(t,e);t.layoutInfo=i;var n=t.get("layout"),o=0,a=0,r=null;r="radial"===n?(o=2*Math.PI,a=Math.min(i.height,i.width)/2,kx(function(t,e){return(t.parentNode===e.parentNode?1:2)/t.depth})):(o=i.width,a=i.height,kx());var s=t.getData().tree.root,l=s.children[0];if(l){!function(t){t.hierNode={defaultAncestor:null,ancestor:t,prelim:0,modifier:0,change:0,shift:0,i:0,thread:null};for(var e,i,n=[t];e=n.pop();)if(i=e.children,e.isExpand&&i.length)for(var o=i.length-1;0<=o;o--){var a=i[o];a.hierNode={defaultAncestor:null,ancestor:a,prelim:0,modifier:0,change:0,shift:0,i:o,thread:null},n.push(a)}}(s),function(t,e,i){for(var n,o=[t],a=[];n=o.pop();)if(a.push(n),n.isExpand){var r=n.children;if(r.length)for(var s=0;s<r.length;s++)o.push(r[s])}for(;n=a.pop();)e(n,i)}(l,Cx,r),s.hierNode.modifier=-l.hierNode.prelim,Hx(l,Lx);var u=l,h=l,c=l;Hx(l,function(t){var e=t.getLayout().x;e<u.getLayout().x&&(u=t),e>h.getLayout().x&&(h=t),t.depth>c.depth&&(c=t)});var d=u===h?1:r(u,h)/2,f=d-u.getLayout().x,p=0,g=0,m=0,v=0;if("radial"===n)p=o/(h.getLayout().x+d+f),g=a/(c.depth-1||1),Hx(l,function(t){m=(t.getLayout().x+f)*p,v=(t.depth-1)*g;var e=Px(m,v);t.setLayout({x:e.x,y:e.y,rawX:m,rawY:v},!0)});else{var y=t.getOrient();"RL"===y||"LR"===y?(g=a/(h.getLayout().x+d+f),p=o/(c.depth-1||1),Hx(l,function(t){v=(t.getLayout().x+f)*g,m="LR"===y?(t.depth-1)*p:o-(t.depth-1)*p,t.setLayout({x:m,y:v},!0)})):"TB"!==y&&"BT"!==y||(p=o/(h.getLayout().x+d+f),g=a/(c.depth-1||1),Hx(l,function(t){m=(t.getLayout().x+f)*p,v="TB"===y?(t.depth-1)*g:a-(t.depth-1)*g,t.setLayout({x:m,y:v},!0)}))}}}(t,e)})}),sc.extend({type:"series.treemap",layoutMode:"box",dependencies:["grid","polar"],preventUsingHoverLayer:!0,_viewRoot:null,defaultOption:{progressive:0,left:"center",top:"middle",right:null,bottom:null,width:"80%",height:"80%",sort:!0,clipWindow:"origin",squareRatio:.5*(1+Math.sqrt(5)),leafDepth:null,drillDownIcon:"▶",zoomToNodeRatio:.1024,roam:!0,nodeClick:"zoomToNode",animation:!0,animationDurationUpdate:900,animationEasing:"quinticInOut",breadcrumb:{show:!0,height:22,left:"center",top:"bottom",emptyItemWidth:25,itemStyle:{color:"rgba(0,0,0,0.7)",borderColor:"rgba(255,255,255,0.7)",borderWidth:1,shadowColor:"rgba(150,150,150,1)",shadowBlur:3,shadowOffsetX:0,shadowOffsetY:0,textStyle:{color:"#fff"}},emphasis:{textStyle:{}}},label:{show:!0,distance:0,padding:5,position:"inside",color:"#fff",ellipsis:!0},upperLabel:{show:!1,position:[0,"50%"],height:20,color:"#fff",ellipsis:!0,verticalAlign:"middle"},itemStyle:{color:null,colorAlpha:null,colorSaturation:null,borderWidth:0,gapWidth:0,borderColor:"#fff",borderColorSaturation:null},emphasis:{upperLabel:{show:!0,position:[0,"50%"],color:"#fff",ellipsis:!0,verticalAlign:"middle"}},visualDimension:0,visualMin:null,visualMax:null,color:[],colorAlpha:null,colorSaturation:null,colorMappingBy:"index",visibleMin:10,childrenVisibleMin:null,levels:[]},getInitialData:function(t,e){var i={name:t.name,children:t.data};!function i(t){var n=0;E(t.children,function(t){i(t);var e=t.value;L(e)&&(e=e[0]),n+=e});var e=t.value;L(e)&&(e=e[0]);null!=e&&!isNaN(e)||(e=n);e<0&&(e=0);L(t.value)?t.value[0]=e:t.value=e}(i);var n=t.levels||[],o=O((n=t.levels=function(t,e){var n,i=e.get("color");if(!i)return;if(E(t=t||[],function(t){var e=new Cl(t),i=e.get("color");(e.get("itemStyle.color")||i&&"none"!==i)&&(n=!0)}),!n){(t[0]||(t[0]={})).color=i.slice()}return t}(n,e))||[],function(t){return new Cl(t,this,e)},this),a=Ax.createTree(i,this,null,function(t){t.wrapMethod("getItemModel",function(t,e){var i=a.getNodeByDataIndex(e),n=o[i.depth];return n&&(t.parentModel=n),t})});return a.data},optionUpdated:function(){this.resetViewRoot()},formatTooltip:function(t){var e=this.getData(),i=this.getRawValue(t),n=L(i)?tu(i[0]):tu(i);return au(e.getName(t)+": "+n)},getDataParams:function(t){var e=sc.prototype.getDataParams.apply(this,arguments),i=this.getData().tree.getNodeByDataIndex(t);return e.treePathInfo=Yx(i,this),e},setLayoutInfo:function(t){this.layoutInfo=this.layoutInfo||{},P(this.layoutInfo,t)},mapIdToIndex:function(t){var e=this._idIndexMap;e||(e=this._idIndexMap=Q(),this._idIndexMapCount=0);var i=e.get(t);return null==i&&e.set(t,i=this._idIndexMapCount++),i},getViewRoot:function(){return this._viewRoot},resetViewRoot:function(t){t?this._viewRoot=t:t=this._viewRoot;var e=this.getRawData().tree.root;t&&(t===e||e.contains(t))||(this._viewRoot=e)}});var jx=5;function qx(t){this.group=new Ci,t.add(this.group)}function Kx(t,e,i,n,o,a){var r=[[o?t:t-jx,e],[t+i,e],[t+i,e+n],[o?t:t-jx,e+n]];return a||r.splice(2,0,[t+i+jx,e+n/2]),o||r.push([t,e+n/2]),r}qx.prototype={constructor:qx,render:function(t,e,i,n){var o=t.getModel("breadcrumb"),a=this.group;if(a.removeAll(),o.get("show")&&i){var r=o.getModel("itemStyle"),s=r.getModel("textStyle"),l={pos:{left:o.get("left"),right:o.get("right"),top:o.get("top"),bottom:o.get("bottom")},box:{width:e.getWidth(),height:e.getHeight()},emptyItemWidth:o.get("emptyItemWidth"),totalWidth:0,renderList:[]};this._prepare(i,l,s),this._renderContent(t,l,r,s,n),Su(a,l.pos,l.box)}},_prepare:function(t,e,i){for(var n=t;n;n=n.parentNode){var o=n.getModel().get("name"),a=i.getTextRect(o),r=Math.max(a.width+16,e.emptyItemWidth);e.totalWidth+=r+8,e.renderList.push({node:n,text:o,width:r})}},_renderContent:function(t,e,i,n,o){for(var a,r,s=0,l=e.emptyItemWidth,u=t.get("breadcrumb.height"),h=function(t,e,i){var n=e.width,o=e.height,a=Rl(t.x,n),r=Rl(t.y,o),s=Rl(t.x2,n),l=Rl(t.y2,o);return(isNaN(a)||isNaN(parseFloat(t.x)))&&(a=0),(isNaN(s)||isNaN(parseFloat(t.x2)))&&(s=n),(isNaN(r)||isNaN(parseFloat(t.y)))&&(r=0),(isNaN(l)||isNaN(parseFloat(t.y2)))&&(l=o),i=iu(i||0),{width:Math.max(s-a-i[1]-i[3],0),height:Math.max(l-r-i[0]-i[2],0)}}(e.pos,e.box),c=e.totalWidth,d=e.renderList,f=d.length-1;0<=f;f--){var p=d[f],g=p.node,m=p.width,v=p.text;c>h.width&&(c-=m-l,m=l,v=null);var y=new Qr({shape:{points:Kx(s,0,m,u,f===d.length-1,0===f)},style:D(i.getItemStyle(),{lineJoin:"bevel",text:v,textFill:n.getTextColor(),textFont:n.getFont()}),z:10,onclick:T(o,g)});this.group.add(y),a=t,r=g,y.eventData={componentType:"series",componentSubType:"treemap",componentIndex:a.componentIndex,seriesIndex:a.componentIndex,seriesName:a.name,seriesType:"treemap",selfType:"breadcrumb",nodeData:{dataIndex:r&&r.dataIndex,name:r&&r.name},treePathInfo:r&&Yx(r,a)},s+=m+8}},remove:function(){this.group.removeAll()}};function $x(t){var e=s_(t);return e.stroke=e.fill=e.lineWidth=null,e}var Jx=A,Qx=Ci,t_=rs,e_=E,i_=["label"],n_=["emphasis","label"],o_=["upperLabel"],a_=["emphasis","upperLabel"],r_=10,s_=ha([["fill","color"],["stroke","strokeColor"],["lineWidth","strokeWidth"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]);function l_(h,r,s,l,u,e,c,t,i,n){if(c){var d=c.getLayout(),o=h.getData();if(o.setItemGraphicEl(c.dataIndex,null),d&&d.isInView){var f=d.width,p=d.height,g=d.borderWidth,m=d.invisible,v=c.getRawIndex(),y=t&&t.getRawIndex(),a=c.viewChildren,x=d.upperHeight,_=a&&a.length,w=c.getModel("itemStyle"),b=c.getModel("emphasis.itemStyle"),S=L("nodeGroup",Qx);if(S){if(i.add(S),S.attr("position",[d.x||0,d.y||0]),S.__tmNodeWidth=f,S.__tmNodeHeight=p,d.isAboveViewRoot)return S;var M=c.getModel(),I=L("background",t_,n,1);if(I&&function(t,e,i){if(e.dataIndex=c.dataIndex,e.seriesIndex=h.seriesIndex,e.setShape({x:0,y:0,width:f,height:p}),m)A(e);else{e.invisible=!1;var n=c.getVisual("borderColor",!0),o=b.get("borderColor"),a=$x(w);a.fill=n;var r=s_(b);if(r.fill=o,i){var s=f-2*g;D(a,r,n,s,x,{x:g,y:0,width:s,height:x})}else a.text=r.text=null;e.setStyle(a),Us(e,r)}t.add(e)}(S,I,_&&d.upperLabelHeight),_)Qs(S)&&Js(S,!1),I&&(Js(I,!0),o.setItemGraphicEl(c.dataIndex,I));else{var T=L("content",t_,n,2);T&&function(t,e){e.dataIndex=c.dataIndex,e.seriesIndex=h.seriesIndex;var i=Math.max(f-2*g,0),n=Math.max(p-2*g,0);if(e.culling=!0,e.setShape({x:g,y:g,width:i,height:n}),m)A(e);else{e.invisible=!1;var o=c.getVisual("color",!0),a=$x(w);a.fill=o;var r=s_(b);D(a,r,o,i,n),e.setStyle(a),Us(e,r)}t.add(e)}(S,T),I&&Qs(I)&&Js(I,!1),Js(S,!0),o.setItemGraphicEl(c.dataIndex,S)}return S}}}function A(t){t.invisible||e.push(t)}function D(t,e,i,n,o,a){var r=M.get("name"),s=M.getModel(a?o_:i_),l=M.getModel(a?a_:n_),u=s.getShallow("show");el(t,e,s,l,{defaultText:u?r:null,autoColor:i,isRectText:!0,labelFetcher:h,labelDataIndex:c.dataIndex,labelProp:a?"upperLabel":"label"}),C(t,a,d),C(e,a,d),a&&(t.textRect=k(a)),t.truncate=u&&s.get("ellipsis")?{outerWidth:n,outerHeight:o,minChar:2}:null}function C(t,e,i){var n=t.text;if(!e&&i.isLeafRoot&&null!=n){var o=h.get("drillDownIcon",!0);t.text=o?o+" "+n:n}}function L(t,e,i,n){var o=null!=y&&s[t][y],a=u[t];return o?(s[t][y]=null,function(t,e,i){(t[v]={}).old="nodeGroup"===i?e.position.slice():P({},e.shape)}(a,o,t)):m||((o=new e({z:function(t,e){var i=t*r_+e;return(i-1)/i}(i,n)})).__tmDepth=i,function(t,e,i){var n=t[v]={},o=c.parentNode;if(o&&(!l||"drillDown"===l.direction)){var a=0,r=0,s=u.background[o.getRawIndex()];!l&&s&&s.old&&(a=s.old.width,r=s.old.height),n.old="nodeGroup"===i?[0,r]:{x:a,y:r,width:0,height:0}}n.fadein="nodeGroup"!==i}(a,0,o.__tmStorageName=t)),r[t][v]=o}}Cf({type:"treemap",init:function(t,e){this._containerGroup,this._storage={nodeGroup:[],background:[],content:[]},this._oldTree,this._breadcrumb,this._controller,this._state="ready"},render:function(t,e,i,n){if(!(_(e.findComponents({mainType:"series",subType:"treemap",query:n}),t)<0)){this.seriesModel=t,this.api=i,this.ecModel=e;var o=Zx(n,["treemapZoomToNode","treemapRootToNode"],t),a=n&&n.type,r=t.layoutInfo,s=!this._oldTree,l=this._storage,u="treemapRootToNode"===a&&o&&l?{rootNodeGroup:l.nodeGroup[o.node.getRawIndex()],direction:n.direction}:null,h=this._giveContainerGroup(r),c=this._doRender(h,t,u);s||a&&"treemapZoomToNode"!==a&&"treemapRootToNode"!==a?c.renderFinally():this._doAnimation(h,c,t,u),this._resetController(i),this._renderBreadcrumb(t,i,o)}},_giveContainerGroup:function(t){var e=this._containerGroup;return e||(e=this._containerGroup=new Qx,this._initEvents(e),this.group.add(e)),e.attr("position",[t.x,t.y]),e},_doRender:function(t,e,i){var n=e.getData().tree,o=this._oldTree,a={nodeGroup:[],background:[],content:[]},r={nodeGroup:[],background:[],content:[]},s=this._storage,l=[],c=T(l_,e,r,s,i,a,l);!function a(r,s,l,u,h){u?e_(s=r,function(t,e){t.isRemoved()||i(e,e)}):new kf(s,r,t,t).add(i).update(i).remove(T(i,null)).execute();function t(t){return t.getId()}function i(t,e){var i=null!=t?r[t]:null,n=null!=e?s[e]:null,o=c(i,n,l,h);o&&a(i&&i.viewChildren||[],n&&n.viewChildren||[],o,u,h+1)}}(n.root?[n.root]:[],o&&o.root?[o.root]:[],t,n===o||!o,0);var u,h,d=(h={nodeGroup:[],background:[],content:[]},(u=s)&&e_(u,function(t,e){var i=h[e];e_(t,function(t){t&&(i.push(t),t.__tmWillDelete=1)})}),h);return this._oldTree=n,this._storage=r,{lastsForAnimation:a,willDeleteEls:d,renderFinally:function(){e_(d,function(t){e_(t,function(t){t.parent&&t.parent.remove(t)})}),e_(l,function(t){t.invisible=!0,t.dirty()})}}},_doAnimation:function(t,a,e,s){if(e.get("animation")){var l=e.get("animationDurationUpdate"),u=e.get("animationEasing"),h=function(){var a,r=[],s={};return{add:function(t,e,i,n,o){return R(n)&&(o=n,n=0),!s[t.id]&&(s[t.id]=1,r.push({el:t,target:e,time:i,delay:n,easing:o}),!0)},done:function(t){return a=t,this},start:function(){for(var t=r.length,e=0,i=r.length;e<i;e++){var n=r[e];n.el.animateTo(n.target,n.time,n.delay,n.easing,o)}return this;function o(){--t||(r.length=0,s={},a&&a())}}}}();e_(a.willDeleteEls,function(t,r){e_(t,function(t,e){if(!t.invisible){var i,n=t.parent;if(s&&"drillDown"===s.direction)i=n===s.rootNodeGroup?{shape:{x:0,y:0,width:n.__tmNodeWidth,height:n.__tmNodeHeight},style:{opacity:0}}:{style:{opacity:0}};else{var o=0,a=0;n.__tmWillDelete||(o=n.__tmNodeWidth/2,a=n.__tmNodeHeight/2),i="nodeGroup"===r?{position:[o,a],style:{opacity:0}}:{shape:{x:o,y:a,width:0,height:0},style:{opacity:0}}}i&&h.add(t,i,l,u)}})}),e_(this._storage,function(t,o){e_(t,function(t,e){var i=a.lastsForAnimation[o][e],n={};i&&("nodeGroup"===o?i.old&&(n.position=t.position.slice(),t.attr("position",i.old)):(i.old&&(n.shape=P({},t.shape),t.setShape(i.old)),i.fadein?(t.setStyle("opacity",0),n.style={opacity:1}):1!==t.style.opacity&&(n.style={opacity:1})),h.add(t,n,l,u))})},this),this._state="animating",h.done(Jx(function(){this._state="ready",a.renderFinally()},this)).start()}},_resetController:function(t){var e=this._controller;e||((e=this._controller=new Vy(t.getZr())).enable(this.seriesModel.get("roam")),e.on("pan",Jx(this._onPan,this)),e.on("zoom",Jx(this._onZoom,this)));var n=new Di(0,0,t.getWidth(),t.getHeight());e.setPointerChecker(function(t,e,i){return n.contain(e,i)})},_clearController:function(){var t=this._controller;t&&(t.dispose(),t=null)},_onPan:function(t){if("animating"!==this._state&&(3<Math.abs(t.dx)||3<Math.abs(t.dy))){var e=this.seriesModel.getData().tree.root;if(!e)return;var i=e.getLayout();if(!i)return;this.api.dispatchAction({type:"treemapMove",from:this.uid,seriesId:this.seriesModel.id,rootRect:{x:i.x+t.dx,y:i.y+t.dy,width:i.width,height:i.height}})}},_onZoom:function(t){var e=t.originX,i=t.originY;if("animating"!==this._state){var n=this.seriesModel.getData().tree.root;if(!n)return;var o=n.getLayout();if(!o)return;var a=new Di(o.x,o.y,o.width,o.height),r=this.seriesModel.layoutInfo;e-=r.x,i-=r.y;var s=ae();ue(s,s,[-e,-i]),ce(s,s,[t.scale,t.scale]),ue(s,s,[e,i]),a.applyTransform(s),this.api.dispatchAction({type:"treemapRender",from:this.uid,seriesId:this.seriesModel.id,rootRect:{x:a.x,y:a.y,width:a.width,height:a.height}})}},_initEvents:function(t){t.on("click",function(t){if("ready"===this._state){var e=this.seriesModel.get("nodeClick",!0);if(e){var i=this.findTarget(t.offsetX,t.offsetY);if(i){var n=i.node;if(n.getLayout().isLeafRoot)this._rootToNode(i);else if("zoomToNode"===e)this._zoomToNode(i);else if("link"===e){var o=n.hostTree.data.getItemModel(n.dataIndex),a=o.get("link",!0),r=o.get("target",!0)||"blank";a&&gu(a,r)}}}}},this)},_renderBreadcrumb:function(e,t,i){i=i||((i=null!=e.get("leafDepth",!0)?{node:e.getViewRoot()}:this.findTarget(t.getWidth()/2,t.getHeight()/2))||{node:e.getData().tree.root}),(this._breadcrumb||(this._breadcrumb=new qx(this.group))).render(e,t,i.node,Jx(function(t){"animating"!==this._state&&(Xx(e.getViewRoot(),t)?this._rootToNode({node:t}):this._zoomToNode({node:t}))},this))},remove:function(){this._clearController(),this._containerGroup&&this._containerGroup.removeAll(),this._storage={nodeGroup:[],background:[],content:[]},this._state="ready",this._breadcrumb&&this._breadcrumb.remove()},dispose:function(){this._clearController()},_zoomToNode:function(t){this.api.dispatchAction({type:"treemapZoomToNode",from:this.uid,seriesId:this.seriesModel.id,targetNode:t.node})},_rootToNode:function(t){this.api.dispatchAction({type:"treemapRootToNode",from:this.uid,seriesId:this.seriesModel.id,targetNode:t.node})},findTarget:function(o,a){var r;return this.seriesModel.getViewRoot().eachNode({attr:"viewChildren",order:"preorder"},function(t){var e=this._storage.background[t.getRawIndex()];if(e){var i=e.transformCoordToLocal(o,a),n=e.shape;if(!(n.x<=i[0]&&i[0]<=n.x+n.width&&n.y<=i[1]&&i[1]<=n.y+n.height))return!1;r={node:t,offsetX:i[0],offsetY:i[1]}}},this),r}});for(var u_=function(){},h_=["treemapZoomToNode","treemapRender","treemapMove"],c_=0;c_<h_.length;c_++)_f({type:h_[c_],update:"updateView"},u_);_f({type:"treemapRootToNode",update:"updateView"},function(o,t){t.eachComponent({mainType:"series",subType:"treemap",query:o},function(t,e){var i=Zx(o,["treemapZoomToNode","treemapRootToNode"],t);if(i){var n=t.getViewRoot();n&&(o.direction=Xx(n,i.node)?"rollUp":"drillDown"),t.resetViewRoot(i.node)}})});var d_=E,f_=z,p_=-1,g_=function(t){var e=t.mappingMethod,i=t.type,n=this.option=k(t);this.type=i,this.mappingMethod=e,this._normalizeData=T_[e];var o=m_[i];this.applyVisual=o.applyVisual,this.getColorMapper=o.getColorMapper,this._doMap=o._doMap[e],"piecewise"===e?(v_(n),function(i){var t=i.pieceList;i.hasSpecialVisual=!1,E(t,function(t,e){t.originIndex=e,null!=t.visual&&(i.hasSpecialVisual=!0)})}(n)):"category"===e?n.categories?function(t){var e=t.categories,i=t.visual,n=t.categoryMap={};if(d_(e,function(t,e){n[t]=e}),!L(i)){var o=[];z(i)?d_(i,function(t,e){var i=n[e];o[null!=i?i:p_]=t}):o[p_]=i,i=I_(t,o)}for(var a=e.length-1;0<=a;a--)null==i[a]&&(delete n[e[a]],e.pop())}(n):v_(n,!0):(Y("linear"!==e||n.dataExtent),v_(n))};g_.prototype={constructor:g_,mapValueToVisual:function(t){var e=this._normalizeData(t);return this._doMap(e,t)},getNormalizer:function(){return A(this._normalizeData,this)}};var m_=g_.visualHandlers={color:{applyVisual:__("color"),getColorMapper:function(){var o=this.option;return A("category"===o.mappingMethod?function(t,e){return e||(t=this._normalizeData(t)),w_.call(this,t)}:function(t,e,i){var n=!!i;return e||(t=this._normalizeData(t)),i=Ue(t,o.parsedVisual,i),n?i:$e(i,"rgba")},this)},_doMap:{linear:function(t){return $e(Ue(t,this.option.parsedVisual),"rgba")},category:w_,piecewise:function(t,e){var i=M_.call(this,e);return null==i&&(i=$e(Ue(t,this.option.parsedVisual),"rgba")),i},fixed:b_}},colorHue:y_(function(t,e){return qe(t,e)}),colorSaturation:y_(function(t,e){return qe(t,null,e)}),colorLightness:y_(function(t,e){return qe(t,null,null,e)}),colorAlpha:y_(function(t,e){return Ke(t,e)}),opacity:{applyVisual:__("opacity"),_doMap:S_([0,1])},liftZ:{applyVisual:__("liftZ"),_doMap:{linear:b_,category:b_,piecewise:b_,fixed:b_}},symbol:{applyVisual:function(t,e,i){var n=this.mapValueToVisual(t);if(R(n))i("symbol",n);else if(f_(n))for(var o in n)n.hasOwnProperty(o)&&i(o,n[o])},_doMap:{linear:x_,category:w_,piecewise:function(t,e){var i=M_.call(this,e);return null==i&&(i=x_.call(this,t)),i},fixed:b_}},symbolSize:{applyVisual:__("symbolSize"),_doMap:S_([0,1])}};function v_(t,e){var i=t.visual,n=[];z(i)?d_(i,function(t){n.push(t)}):null!=i&&n.push(i);e||1!==n.length||{color:1,symbol:1}.hasOwnProperty(t.type)||(n[1]=n[0]),I_(t,n)}function y_(n){return{applyVisual:function(t,e,i){t=this.mapValueToVisual(t),i("color",n(e("color"),t))},_doMap:S_([0,1])}}function x_(t){var e=this.option.visual;return e[Math.round(El(t,[0,1],[0,e.length-1],!0))]||{}}function __(n){return function(t,e,i){i(n,this.mapValueToVisual(t))}}function w_(t){var e=this.option.visual;return e[this.option.loop&&t!==p_?t%e.length:t]}function b_(){return this.option.visual[0]}function S_(n){return{linear:function(t){return El(t,n,this.option.visual,!0)},category:w_,piecewise:function(t,e){var i=M_.call(this,e);return null==i&&(i=El(t,n,this.option.visual,!0)),i},fixed:b_}}function M_(t){var e=this.option,i=e.pieceList;if(e.hasSpecialVisual){var n=i[g_.findPieceIndex(t,i)];if(n&&n.visual)return n.visual[this.type]}}function I_(t,e){return t.visual=e,"color"===t.type&&(t.parsedVisual=O(e,function(t){return Fe(t)})),e}var T_={linear:function(t){return El(t,this.option.dataExtent,[0,1],!0)},piecewise:function(t){var e=this.option.pieceList,i=g_.findPieceIndex(t,e,!0);if(null!=i)return El(i,[0,e.length-1],[0,1],!0)},category:function(t){var e=this.option.categories?this.option.categoryMap[t]:t;return null==e?p_:e},fixed:et};function A_(t,e,i){return t?e<=i:e<i}g_.listVisualTypes=function(){var i=[];return E(m_,function(t,e){i.push(e)}),i},g_.addVisualHandler=function(t,e){m_[t]=e},g_.isValidType=function(t){return m_.hasOwnProperty(t)},g_.eachVisual=function(t,e,i){z(t)?E(t,e,i):e.call(i,t)},g_.mapVisual=function(t,n,o){var a,r=L(t)?[]:z(t)?{}:(a=!0,null);return g_.eachVisual(t,function(t,e){var i=n.call(o,t,e);a?r=i:r[e]=i}),r},g_.retrieveVisuals=function(i){var n,o={};return i&&d_(m_,function(t,e){i.hasOwnProperty(e)&&(o[e]=i[e],n=!0)}),n?o:null},g_.prepareVisualTypes=function(t){if(f_(t)){var i=[];d_(t,function(t,e){i.push(e)}),t=i}else{if(!L(t))return[];t=t.slice()}return t.sort(function(t,e){return"color"===e&&"color"!==t&&0===t.indexOf("color")?1:-1}),t},g_.dependsOn=function(t,e){return"color"===e?!(!t||0!==t.indexOf(e)):t===e},g_.findPieceIndex=function(n,t,e){for(var o,a=1/0,i=0,r=t.length;i<r;i++){var s=t[i].value;if(null!=s){if(s===n||"string"==typeof s&&s===n+"")return i;e&&c(s,i)}}for(i=0,r=t.length;i<r;i++){var l=t[i],u=l.interval,h=l.close;if(u){if(u[0]===-1/0){if(A_(h[1],n,u[1]))return i}else if(u[1]===1/0){if(A_(h[0],u[0],n))return i}else if(A_(h[0],u[0],n)&&A_(h[1],n,u[1]))return i;e&&c(u[0],i),e&&c(u[1],i)}}if(e)return n===1/0?t.length-1:n===-1/0?0:o;function c(t,e){var i=Math.abs(t-n);i<a&&(a=i,o=e)}};var D_=L,C_="itemStyle",L_={seriesType:"treemap",reset:function(t,e,i,n){var o=t.getData().tree,a=o.root,r=t.getModel(C_);a.isRemoved()||!function n(t,e,o,a,r,s){var l=t.getModel();var i=t.getLayout();if(!i||i.invisible||!i.isInView)return;var u=t.getModel(C_);var h=o[t.depth];var c=k_(u,e,h,a);var d=u.get("borderColor");var f=u.get("borderColorSaturation");var p;null!=f&&(p=P_(c),g=f,d=null!=(m=p)?qe(m,null,null,g):null);var g,m;t.setVisual("borderColor",d);var v=t.viewChildren;if(v&&v.length){var y=O_(t,l,i,u,c,v);E(v,function(t,e){if(t.depth>=r.length||t===r[t.depth]){var i=R_(l,c,t,e,y,s);n(t,i,o,a,r,s)}})}else p=P_(c),t.setVisual("color",p)}(a,{},O(o.levelModels,function(t){return t?t.get(C_):null}),r,t.getViewRoot().getAncestors(),t)}};function k_(i,n,o,a){var r=P({},n);return E(["color","colorAlpha","colorSaturation"],function(t){var e=i.get(t,!0);null==e&&o&&(e=o[t]),null==e&&(e=n[t]),null==e&&(e=a.get(t)),null!=e&&(r[t]=e)}),r}function P_(t){var e=N_(t,"color");if(e){var i=N_(t,"colorAlpha"),n=N_(t,"colorSaturation");return n&&(e=qe(e,null,null,n)),i&&(e=Ke(e,i)),e}}function N_(t,e){var i=t[e];if(null!=i&&"none"!==i)return i}function O_(t,e,i,n,o,a){if(a&&a.length){var r=E_(e,"color")||null!=o.color&&"none"!==o.color&&(E_(e,"colorAlpha")||E_(e,"colorSaturation"));if(r){var s=e.get("visualMin"),l=e.get("visualMax"),u=i.dataExtent.slice();null!=s&&s<u[0]&&(u[0]=s),null!=l&&l>u[1]&&(u[1]=l);var h=e.get("colorMappingBy"),c={type:r.name,dataExtent:u,visual:r.range};"color"!==c.type||"index"!==h&&"id"!==h?c.mappingMethod="linear":(c.mappingMethod="category",c.loop=!0);var d=new g_(c);return d.__drColorMappingBy=h,d}}}function E_(t,e){var i=t.get(e);return D_(i)&&i.length?{name:e,range:i}:null}function R_(t,e,i,n,o,a){var r=P({},e);if(o){var s=o.type,l="color"===s&&o.__drColorMappingBy,u="index"===l?n:"id"===l?a.mapIdToIndex(i.getId()):i.getValue(t.get("visualDimension"));r[s]=o.mapValueToVisual(u)}return r}var z_=Math.max,B_=Math.min,V_=W,G_=E,F_=["itemStyle","borderWidth"],W_=["itemStyle","gapWidth"],H_=["upperLabel","show"],Z_=["upperLabel","height"],U_={seriesType:"treemap",reset:function(t,e,i,n){var o=i.getWidth(),a=i.getHeight(),r=t.option,s=bu(t.getBoxLayoutParams(),{width:i.getWidth(),height:i.getHeight()}),l=r.size||[],u=Rl(V_(s.width,l[0]),o),h=Rl(V_(s.height,l[1]),a),c=n&&n.type,d=Zx(n,["treemapZoomToNode","treemapRootToNode"],t),f="treemapRender"===c||"treemapMove"===c?n.rootRect:null,p=t.getViewRoot(),g=Ux(p);if("treemapMove"!==c){var m="treemapZoomToNode"===c?function(t,e,i,n,o){var a,r=(e||{}).node,s=[n,o];if(!r||r===i)return s;var l=n*o,u=l*t.option.zoomToNodeRatio;for(;a=r.parentNode;){for(var h=0,c=a.children,d=0,f=c.length;d<f;d++)h+=c[d].getValue();var p=r.getValue();if(0===p)return s;u*=h/p;var g=a.getModel(),m=g.get(F_),v=Math.max(m,q_(g));u+=4*m*m+(3*m+v)*Math.pow(u,.5),Hl<u&&(u=Hl),r=a}u<l&&(u=l);var y=Math.pow(u/l,.5);return[n*y,o*y]}(t,d,p,u,h):f?[f.width,f.height]:[u,h],v=r.sort;v&&"asc"!==v&&"desc"!==v&&(v="desc");var y={squareRatio:r.squareRatio,sort:v,leafDepth:r.leafDepth};p.hostTree.clearLayouts();var x={x:0,y:0,width:m[0],height:m[1],area:m[0]*m[1]};p.setLayout(x),function t(e,i,n,o){var a;var r;if(e.isRemoved())return;var s=e.getLayout();a=s.width;r=s.height;var l=e.getModel();var u=l.get(F_);var h=l.get(W_)/2;var c=q_(l);var d=Math.max(u,c);var f=u-h;var p=d-h;var l=e.getModel();e.setLayout({borderWidth:u,upperHeight:d,upperLabelHeight:c},!0);a=z_(a-2*f,0);r=z_(r-f-p,0);var g=a*r;var m=X_(e,l,g,i,n,o);if(!m.length)return;var v={x:f,y:p,width:a,height:r};var y=B_(a,r);var x=1/0;var _=[];_.area=0;for(var w=0,b=m.length;w<b;){var S=m[w];_.push(S),_.area+=S.getLayout().area;var M=Y_(_,y,i.squareRatio);x=M<=x?(w++,M):(_.area-=_.pop().getLayout().area,j_(_,y,v,h,!1),y=B_(v.width,v.height),_.length=_.area=0,1/0)}_.length&&j_(_,y,v,h,!0);if(!n){var I=l.get("childrenVisibleMin");null!=I&&g<I&&(n=!0)}for(var w=0,b=m.length;w<b;w++)t(m[w],i,n,o+1)}(p,y,!1,0);x=p.getLayout();G_(g,function(t,e){var i=(g[e+1]||p).getValue();t.setLayout(P({dataExtent:[i,i],borderWidth:0,upperHeight:0},x))})}var _=t.getData().tree.root;_.setLayout(function(t,e,i){if(e)return{x:e.x,y:e.y};var n={x:0,y:0};if(!i)return n;var o=i.node,a=o.getLayout();if(!a)return n;var r=[a.width/2,a.height/2],s=o;for(;s;){var l=s.getLayout();r[0]+=l.x,r[1]+=l.y,s=s.parentNode}return{x:t.width/2-r[0],y:t.height/2-r[1]}}(s,f,d),!0),t.setLayoutInfo(s),function e(t,i,n,o,a){var r=t.getLayout();var s=n[a];var l=s&&s===t;if(s&&!l||a===n.length&&t!==o)return;t.setLayout({isInView:!0,invisible:!l&&!i.intersect(r),isAboveViewRoot:l},!0);var u=new Di(i.x-r.x,i.y-r.y,i.width,i.height);G_(t.viewChildren||[],function(t){e(t,u,n,o,a+1)})}(_,new Di(-s.x,-s.y,o,a),g,p,0)}};function X_(t,e,i,n,o,a){var r=t.children||[],s=n.sort;"asc"!==s&&"desc"!==s&&(s=null);var l=null!=n.leafDepth&&n.leafDepth<=a;if(o&&!l)return t.viewChildren=[];!function(t,n){n&&t.sort(function(t,e){var i="asc"===n?t.getValue()-e.getValue():e.getValue()-t.getValue();return 0==i?"asc"===n?t.dataIndex-e.dataIndex:e.dataIndex-t.dataIndex:i})}(r=M(r,function(t){return!t.isRemoved()}),s);var u=function(t,e,i){for(var n=0,o=0,a=e.length;o<a;o++)n+=e[o].getValue();var r=t.get("visualDimension");if(e&&e.length)if("value"===r&&i)s=[e[e.length-1].getValue(),e[0].getValue()],"asc"===i&&s.reverse();else{var s=[1/0,-1/0];G_(e,function(t){var e=t.getValue(r);e<s[0]&&(s[0]=e),e>s[1]&&(s[1]=e)})}else s=[NaN,NaN];return{sum:n,dataExtent:s}}(e,r,s);if(0===u.sum)return t.viewChildren=[];if(u.sum=function(t,e,i,n,o){if(!n)return i;for(var a=t.get("visibleMin"),r=o.length,s=r,l=r-1;0<=l;l--){var u=o["asc"===n?r-l-1:l].getValue();u/i*e<a&&(s=l,i-=u)}return"asc"===n?o.splice(0,r-s):o.splice(s,r-s),i}(e,i,u.sum,s,r),0===u.sum)return t.viewChildren=[];for(var h=0,c=r.length;h<c;h++){var d=r[h].getValue()/u.sum*i;r[h].setLayout({area:d})}return l&&(r.length&&t.setLayout({isLeafRoot:!0},!0),r.length=0),t.viewChildren=r,t.setLayout({dataExtent:u.dataExtent},!0),r}function Y_(t,e,i){for(var n,o=0,a=1/0,r=0,s=t.length;r<s;r++)(n=t[r].getLayout().area)&&(n<a&&(a=n),o<n&&(o=n));var l=t.area*t.area,u=e*e*i;return l?z_(u*o/l,l/(u*a)):1/0}function j_(t,e,i,n,o){var a=e===i.width?0:1,r=1-a,s=["x","y"],l=["width","height"],u=i[s[a]],h=e?t.area/e:0;(o||h>i[l[r]])&&(h=i[l[r]]);for(var c=0,d=t.length;c<d;c++){var f=t[c],p={},g=h?f.getLayout().area/h:0,m=p[l[r]]=z_(h-2*n,0),v=i[s[a]]+i[l[a]]-u,y=c===d-1||v<g?v:g,x=p[l[a]]=z_(y-2*n,0);p[s[r]]=i[s[r]]+B_(n,m/2),p[s[a]]=u+B_(n,x/2),u+=y,f.setLayout(p,!0)}i[s[r]]+=h,i[l[r]]-=h}function q_(t){return t.get(H_)?t.get(Z_):0}function K_(t){return"_EC_"+t}Sf(L_),bf(U_);function $_(t){this._directed=t||!1,this.nodes=[],this.edges=[],this._nodesMap={},this._edgesMap={},this.data,this.edgeData}var J_=$_.prototype;function Q_(t,e){this.id=null==t?"":t,this.inEdges=[],this.outEdges=[],this.edges=[],this.hostGraph,this.dataIndex=null==e?-1:e}function tw(t,e,i){this.node1=t,this.node2=e,this.dataIndex=null==i?-1:i}J_.type="graph",J_.isDirected=function(){return this._directed},J_.addNode=function(t,e){t=null==t?""+e:""+t;var i=this._nodesMap;if(!i[K_(t)]){var n=new Q_(t,e);return(n.hostGraph=this).nodes.push(n),i[K_(t)]=n}},J_.getNodeByIndex=function(t){var e=this.data.getRawIndex(t);return this.nodes[e]},J_.getNodeById=function(t){return this._nodesMap[K_(t)]},J_.addEdge=function(t,e,i){var n=this._nodesMap,o=this._edgesMap;if("number"==typeof t&&(t=this.nodes[t]),"number"==typeof e&&(e=this.nodes[e]),Q_.isInstance(t)||(t=n[K_(t)]),Q_.isInstance(e)||(e=n[K_(e)]),t&&e){var a=t.id+"-"+e.id;if(!o[a]){var r=new tw(t,e,i);return(r.hostGraph=this)._directed&&(t.outEdges.push(r),e.inEdges.push(r)),t.edges.push(r),t!==e&&e.edges.push(r),this.edges.push(r),o[a]=r}}},J_.getEdgeByIndex=function(t){var e=this.edgeData.getRawIndex(t);return this.edges[e]},J_.getEdge=function(t,e){Q_.isInstance(t)&&(t=t.id),Q_.isInstance(e)&&(e=e.id);var i=this._edgesMap;return this._directed?i[t+"-"+e]:i[t+"-"+e]||i[e+"-"+t]},J_.eachNode=function(t,e){for(var i=this.nodes,n=i.length,o=0;o<n;o++)0<=i[o].dataIndex&&t.call(e,i[o],o)},J_.eachEdge=function(t,e){for(var i=this.edges,n=i.length,o=0;o<n;o++)0<=i[o].dataIndex&&0<=i[o].node1.dataIndex&&0<=i[o].node2.dataIndex&&t.call(e,i[o],o)},J_.breadthFirstTraverse=function(t,e,i,n){if(Q_.isInstance(e)||(e=this._nodesMap[K_(e)]),e){for(var o="out"===i?"outEdges":"in"===i?"inEdges":"edges",a=0;a<this.nodes.length;a++)this.nodes[a].__visited=!1;if(!t.call(n,e,null))for(var r=[e];r.length;){var s=r.shift(),l=s[o];for(a=0;a<l.length;a++){var u=l[a],h=u.node1===s?u.node2:u.node1;if(!h.__visited){if(t.call(n,h,s))return;r.push(h),h.__visited=!0}}}}},J_.update=function(){for(var t=this.data,i=this.edgeData,e=this.nodes,n=this.edges,o=0,a=e.length;o<a;o++)e[o].dataIndex=-1;for(o=0,a=t.count();o<a;o++)e[t.getRawIndex(o)].dataIndex=o;i.filterSelf(function(t){var e=n[i.getRawIndex(t)];return 0<=e.node1.dataIndex&&0<=e.node2.dataIndex});for(o=0,a=n.length;o<a;o++)n[o].dataIndex=-1;for(o=0,a=i.count();o<a;o++)n[i.getRawIndex(o)].dataIndex=o},J_.clone=function(){for(var t=new $_(this._directed),e=this.nodes,i=this.edges,n=0;n<e.length;n++)t.addNode(e[n].id,e[n].dataIndex);for(n=0;n<i.length;n++){var o=i[n];t.addEdge(o.node1.id,o.node2.id,o.dataIndex)}return t},Q_.prototype={constructor:Q_,degree:function(){return this.edges.length},inDegree:function(){return this.inEdges.length},outDegree:function(){return this.outEdges.length},getModel:function(t){if(!(this.dataIndex<0))return this.hostGraph.data.getItemModel(this.dataIndex).getModel(t)}},tw.prototype.getModel=function(t){if(!(this.dataIndex<0))return this.hostGraph.edgeData.getItemModel(this.dataIndex).getModel(t)};function ew(i,n){return{getValue:function(t){var e=this[i][n];return e.get(e.getDimension(t||"value"),this.dataIndex)},setVisual:function(t,e){0<=this.dataIndex&&this[i][n].setItemVisual(this.dataIndex,t,e)},getVisual:function(t,e){return this[i][n].getItemVisual(this.dataIndex,t,e)},setLayout:function(t,e){0<=this.dataIndex&&this[i][n].setItemLayout(this.dataIndex,t,e)},getLayout:function(){return this[i][n].getItemLayout(this.dataIndex)},getGraphicEl:function(){return this[i][n].getItemGraphicEl(this.dataIndex)},getRawIndex:function(){return this[i][n].getRawIndex(this.dataIndex)}}}b(Q_,ew("hostGraph","data")),b(tw,ew("hostGraph","edgeData")),$_.Node=Q_,$_.Edge=tw,ra(Q_),ra(tw);function iw(t,e,i,n,o){for(var a=new $_(n),r=0;r<t.length;r++)a.addNode(W(t[r].id,t[r].name,r),r);var s=[],l=[],u=0;for(r=0;r<e.length;r++){var h=e[r],c=h.source,d=h.target;a.addEdge(c,d,u)&&(l.push(h),s.push(W(h.id,c+" > "+d)),u++)}var f,p=i.get("coordinateSystem");if("cartesian2d"===p||"polar"===p)f=gp(t,i);else{var g=lh.get(p),m=g&&"view"!==g.type&&g.dimensions||[];_(m,"value")<0&&m.concat(["value"]);var v=lp(t,{coordDimensions:m});(f=new Yf(v,i)).initData(t)}var y=new Yf(["value"],i);return y.initData(l,s),o&&o(f,y),yx({mainData:f,struct:a,structAttr:"graph",datas:{node:f,edge:y},datasAttr:{node:"data",edge:"edgeData"}}),a.update(),a}var nw=Df({type:"series.graph",init:function(t){nw.superApply(this,"init",arguments);var e=this;function i(){return e._categoriesData}this.legendVisualProvider=new qv(i,i),this.fillDataTextStyle(t.edges||t.links),this._updateCategoriesData()},mergeOption:function(t){nw.superApply(this,"mergeOption",arguments),this.fillDataTextStyle(t.edges||t.links),this._updateCategoriesData()},mergeDefaultAndTheme:function(t){nw.superApply(this,"mergeDefaultAndTheme",arguments),Go(t,["edgeLabel"],["show"])},getInitialData:function(t,s){var e=t.edges||t.links||[],i=t.data||t.nodes||[],l=this;if(i&&e)return iw(i,e,this,!0,function(t,e){t.wrapMethod("getItemModel",function(t){var e=l._categoriesModels[t.getShallow("category")];return e&&(e.parentModel=t.parentModel,t.parentModel=e),t});var i=l.getModel("edgeLabel"),n=new Cl({label:i.option},i.parentModel,s),o=l.getModel("emphasis.edgeLabel"),a=new Cl({emphasis:{label:o.option}},o.parentModel,s);function r(t){return(t=this.parsePath(t))&&"label"===t[0]?n:t&&"emphasis"===t[0]&&"label"===t[1]?a:this.parentModel}e.wrapMethod("getItemModel",function(t){return t.customizeGetParent(r),t})}).data},getGraph:function(){return this.getData().graph},getEdgeData:function(){return this.getGraph().edgeData},getCategoriesData:function(){return this._categoriesData},formatTooltip:function(t,e,i){if("edge"!==i)return nw.superApply(this,"formatTooltip",arguments);var n=this.getData(),o=this.getDataParams(t,i),a=n.graph.getEdgeByIndex(t),r=n.getName(a.node1.dataIndex),s=n.getName(a.node2.dataIndex),l=[];return null!=r&&l.push(r),null!=s&&l.push(s),l=au(l.join(" > ")),o.value&&(l+=" : "+au(o.value)),l},_updateCategoriesData:function(){var t=O(this.option.categories||[],function(t){return null!=t.value?t:P({value:0},t)}),e=new Yf(["value"],this);e.initData(t),this._categoriesData=e,this._categoriesModels=e.mapArray(function(t){return e.getItemModel(t,!0)})},setZoom:function(t){this.option.zoom=t},setCenter:function(t){this.option.center=t},isAnimationEnabled:function(){return nw.superCall(this,"isAnimationEnabled")&&!("force"===this.get("layout")&&this.get("force.layoutAnimation"))},defaultOption:{zlevel:0,z:2,coordinateSystem:"view",legendHoverLink:!0,hoverAnimation:!0,layout:null,focusNodeAdjacency:!1,circular:{rotateLabel:!1},force:{initLayout:null,repulsion:[0,50],gravity:.1,friction:.6,edgeLength:30,layoutAnimation:!0},left:"center",top:"center",symbol:"circle",symbolSize:10,edgeSymbol:["none","none"],edgeSymbolSize:10,edgeLabel:{position:"middle",distance:5},draggable:!1,roam:!1,center:null,zoom:1,nodeScaleRatio:.6,label:{show:!1,formatter:"{b}"},itemStyle:{},lineStyle:{color:"#aaa",width:1,curveness:0,opacity:.5},emphasis:{label:{show:!0}}}}),ow=ls.prototype,aw=ds.prototype;function rw(t){return isNaN(+t.cpx1)||isNaN(+t.cpy1)}var sw=Cs({type:"ec-line",style:{stroke:"#000",fill:null},shape:{x1:0,y1:0,x2:0,y2:0,percent:1,cpx1:null,cpy1:null},buildPath:function(t,e){this[rw(e)?"_buildPathLine":"_buildPathCurve"](t,e)},_buildPathLine:ow.buildPath,_buildPathCurve:aw.buildPath,pointAt:function(t){return this[rw(this.shape)?"_pointAtLine":"_pointAtCurve"](t)},_pointAtLine:ow.pointAt,_pointAtCurve:aw.pointAt,tangentAt:function(t){var e=this.shape,i=rw(e)?[e.x2-e.x1,e.y2-e.y1]:this._tangentAtCurve(t);return mt(i,i)},_tangentAtCurve:aw.tangentAt}),lw=["fromSymbol","toSymbol"];function uw(t){return"_"+t+"Type"}function hw(t,e,i){var n=e.getItemVisual(i,"color"),o=e.getItemVisual(i,t),a=e.getItemVisual(i,t+"Size");if(o&&"none"!==o){L(a)||(a=[a,a]);var r=wg(o,-a[0]/2,-a[1]/2,a[0],a[1],n);return r.name=t,r}}function cw(t,e){t.x1=e[0][0],t.y1=e[0][1],t.x2=e[1][0],t.y2=e[1][1],t.percent=1;var i=e[2];i?(t.cpx1=i[0],t.cpy1=i[1]):(t.cpx1=NaN,t.cpy1=NaN)}function dw(t,e,i){Ci.call(this),this._createLine(t,e,i)}var fw=dw.prototype;function pw(t){this._ctor=t||dw,this.group=new Ci}fw.beforeUpdate=function(){var t=this.childOfName("fromSymbol"),e=this.childOfName("toSymbol"),i=this.childOfName("label");if(t||e||!i.ignore){for(var n=1,o=this.parent;o;)o.scale&&(n/=o.scale[0]),o=o.parent;var a=this.childOfName("line");if(this.__dirty||a.__dirty){var r=a.shape.percent,s=a.pointAt(0),l=a.pointAt(r),u=ht([],l,s);if(mt(u,u),t){t.attr("position",s);var h=a.tangentAt(0);t.attr("rotation",Math.PI/2-Math.atan2(h[1],h[0])),t.attr("scale",[n*r,n*r])}if(e){e.attr("position",l);h=a.tangentAt(1);e.attr("rotation",-Math.PI/2-Math.atan2(h[1],h[0])),e.attr("scale",[n*r,n*r])}if(!i.ignore){var c,d,f,p;i.attr("position",l);var g=i.__labelDistance,m=g[0]*n,v=g[1]*n,y=r/2,x=[(h=a.tangentAt(y))[1],-h[0]],_=a.pointAt(y);0<x[1]&&(x[0]=-x[0],x[1]=-x[1]);var w,b=h[0]<0?-1:1;if("start"!==i.__position&&"end"!==i.__position){var S=-Math.atan2(h[1],h[0]);l[0]<s[0]&&(S=Math.PI+S),i.attr("rotation",S)}switch(i.__position){case"insideStartTop":case"insideMiddleTop":case"insideEndTop":case"middle":w=-v,f="bottom";break;case"insideStartBottom":case"insideMiddleBottom":case"insideEndBottom":w=v,f="top";break;default:w=0,f="middle"}switch(i.__position){case"end":c=[u[0]*m+l[0],u[1]*v+l[1]],d=.8<u[0]?"left":u[0]<-.8?"right":"center",f=.8<u[1]?"top":u[1]<-.8?"bottom":"middle";break;case"start":c=[-u[0]*m+s[0],-u[1]*v+s[1]],d=.8<u[0]?"right":u[0]<-.8?"left":"center",f=.8<u[1]?"bottom":u[1]<-.8?"top":"middle";break;case"insideStartTop":case"insideStart":case"insideStartBottom":c=[m*b+s[0],s[1]+w],d=h[0]<0?"right":"left",p=[-m*b,-w];break;case"insideMiddleTop":case"insideMiddle":case"insideMiddleBottom":case"middle":c=[_[0],_[1]+w],d="center",p=[0,-w];break;case"insideEndTop":case"insideEnd":case"insideEndBottom":c=[-m*b+l[0],l[1]+w],d=0<=h[0]?"right":"left",p=[m*b,-w]}i.attr({style:{textVerticalAlign:i.__verticalAlign||f,textAlign:i.__textAlign||d},position:c,scale:[n,n],origin:p})}}}},fw._createLine=function(i,n,t){var e=i.hostModel,o=function(t){var e=new sw({name:"line",subPixelOptimize:!0});return cw(e.shape,t),e}(i.getItemLayout(n));o.shape.percent=0,dl(o,{shape:{percent:1}},e,n),this.add(o);var a=new Ur({name:"label",lineLabelOriginalOpacity:1});this.add(a),E(lw,function(t){var e=hw(t,i,n);this.add(e),this[uw(t)]=i.getItemVisual(n,t)},this),this._updateCommonStl(i,n,t)},fw.updateData=function(o,a,t){var e=o.hostModel,i=this.childOfName("line"),n=o.getItemLayout(a),r={shape:{}};cw(r.shape,n),cl(i,r,e,a),E(lw,function(t){var e=o.getItemVisual(a,t),i=uw(t);if(this[i]!==e){this.remove(this.childOfName(t));var n=hw(t,o,a);this.add(n)}this[i]=e},this),this._updateCommonStl(o,a,t)},fw._updateCommonStl=function(t,e,i){var n=t.hostModel,o=this.childOfName("line"),a=i&&i.lineStyle,r=i&&i.hoverLineStyle,s=i&&i.labelModel,l=i&&i.hoverLabelModel;if(!i||t.hasItemOption){var u=t.getItemModel(e);a=u.getModel("lineStyle").getLineStyle(),r=u.getModel("emphasis.lineStyle").getLineStyle(),s=u.getModel("label"),l=u.getModel("emphasis.label")}var h=t.getItemVisual(e,"color"),c=Z(t.getItemVisual(e,"opacity"),a.opacity,1);o.useStyle(D({strokeNoScale:!0,fill:"none",stroke:h,opacity:c},a)),o.hoverStyle=r,E(lw,function(t){var e=this.childOfName(t);e&&(e.setColor(h),e.setStyle({opacity:c}))},this);var d,f,p=s.getShallow("show"),g=l.getShallow("show"),m=this.childOfName("label");if((p||g)&&(d=h||"#000",null==(f=n.getFormattedLabel(e,"normal",t.dataType)))){var v=n.getRawValue(e);f=null==v?t.getName(e):isFinite(v)?zl(v):v}var y=p?f:null,x=g?H(n.getFormattedLabel(e,"emphasis",t.dataType),f):null,_=m.style;if(null!=y||null!=x){nl(m.style,s,{text:y},{autoColor:d}),m.__textAlign=_.textAlign,m.__verticalAlign=_.textVerticalAlign,m.__position=s.get("position")||"middle";var w=s.get("distance");L(w)||(w=[w,w]),m.__labelDistance=w}m.hoverStyle=null!=x?{text:x,textFill:l.getTextColor(!0),fontStyle:l.getShallow("fontStyle"),fontWeight:l.getShallow("fontWeight"),fontSize:l.getShallow("fontSize"),fontFamily:l.getShallow("fontFamily")}:{text:null},m.ignore=!p&&!g,$s(this)},fw.highlight=function(){this.trigger("emphasis")},fw.downplay=function(){this.trigger("normal")},fw.updateLayout=function(t,e){this.setLinePoints(t.getItemLayout(e))},fw.setLinePoints=function(t){var e=this.childOfName("line");cw(e.shape,t),e.dirty()},w(dw,Ci);var gw=pw.prototype;function mw(t){var e=t.hostModel;return{lineStyle:e.getModel("lineStyle").getLineStyle(),hoverLineStyle:e.getModel("emphasis.lineStyle").getLineStyle(),labelModel:e.getModel("label"),hoverLabelModel:e.getModel("emphasis.label")}}function vw(t){return isNaN(t[0])||isNaN(t[1])}function yw(t){return!vw(t[0])&&!vw(t[1])}function xw(t){var e=t.coordinateSystem;if("view"!==e.type)return 1;var i=t.option.nodeScaleRatio,n=e.scale,o=n&&n[0]||1;return((e.getZoom()-1)*i+1)/o}function _w(t){var e=t.getVisual("symbolSize");return e instanceof Array&&(e=(e[0]+e[1])/2),+e}gw.isPersistent=function(){return!0},gw.updateData=function(i){var n=this,e=n.group,o=n._lineData;n._lineData=i,o||e.removeAll();var a=mw(i);i.diff(o).add(function(t){!function(t,e,i,n){if(!yw(e.getItemLayout(i)))return;var o=new t._ctor(e,i,n);e.setItemGraphicEl(i,o),t.group.add(o)}(n,i,t,a)}).update(function(t,e){!function(t,e,i,n,o,a){var r=e.getItemGraphicEl(n);if(!yw(i.getItemLayout(o)))return t.group.remove(r);r?r.updateData(i,o,a):r=new t._ctor(i,o,a);i.setItemGraphicEl(o,r),t.group.add(r)}(n,o,i,e,t,a)}).remove(function(t){e.remove(o.getItemGraphicEl(t))}).execute()},gw.updateLayout=function(){var i=this._lineData;i&&i.eachItemGraphicEl(function(t,e){t.updateLayout(i,e)},this)},gw.incrementalPrepareUpdate=function(t){this._seriesScope=mw(t),this._lineData=null,this.group.removeAll()},gw.incrementalUpdate=function(t,e){function i(t){t.isGroup||function(t){return t.animators&&0<t.animators.length}(t)||(t.incremental=t.useHoverLayer=!0)}for(var n=t.start;n<t.end;n++){if(yw(e.getItemLayout(n))){var o=new this._ctor(e,n,this._seriesScope);o.traverse(i),this.group.add(o),e.setItemGraphicEl(n,o)}}},gw.remove=function(){this._clearIncremental(),this._incremental=null,this.group.removeAll()},gw._clearIncremental=function(){var t=this._incremental;t&&t.clearDisplaybles()};var ww=[],bw=[],Sw=[],Mw=La,Iw=_t,Tw=Math.abs;function Aw(t,e,i){for(var n,o=t[0],a=t[1],r=t[2],s=1/0,l=i*i,u=.1,h=.1;h<=.9;h+=.1){ww[0]=Mw(o[0],a[0],r[0],h),ww[1]=Mw(o[1],a[1],r[1],h),(f=Tw(Iw(ww,e)-l))<s&&(s=f,n=h)}for(var c=0;c<32;c++){var d=n+u;bw[0]=Mw(o[0],a[0],r[0],n),bw[1]=Mw(o[1],a[1],r[1],n),Sw[0]=Mw(o[0],a[0],r[0],d),Sw[1]=Mw(o[1],a[1],r[1],d);var f=Iw(bw,e)-l;if(Tw(f)<.01)break;var p=Iw(Sw,e)-l;u/=2,f<0?0<=p?n+=u:n-=u:0<=p?n-=u:n+=u}return n}function Dw(t,l){var u=[],h=Na,c=[[],[],[]],d=[[],[]],f=[];l/=2,t.eachEdge(function(t,e){var i=t.getLayout(),n=t.getVisual("fromSymbol"),o=t.getVisual("toSymbol");i.__original||(i.__original=[rt(i[0]),rt(i[1])],i[2]&&i.__original.push(rt(i[2])));var a=i.__original;if(null!=i[2]){if(at(c[0],a[0]),at(c[1],a[2]),at(c[2],a[1]),n&&"none"!==n){var r=_w(t.node1),s=Aw(c,a[0],r*l);h(c[0][0],c[1][0],c[2][0],s,u),c[0][0]=u[3],c[1][0]=u[4],h(c[0][1],c[1][1],c[2][1],s,u),c[0][1]=u[3],c[1][1]=u[4]}if(o&&"none"!==o){r=_w(t.node2),s=Aw(c,a[1],r*l);h(c[0][0],c[1][0],c[2][0],s,u),c[1][0]=u[1],c[2][0]=u[2],h(c[0][1],c[1][1],c[2][1],s,u),c[1][1]=u[1],c[2][1]=u[2]}at(i[0],c[0]),at(i[1],c[2]),at(i[2],c[1])}else{if(at(d[0],a[0]),at(d[1],a[1]),ht(f,d[1],d[0]),mt(f,f),n&&"none"!==n){r=_w(t.node1);ut(d[0],d[0],f,r*l)}if(o&&"none"!==o){r=_w(t.node2);ut(d[1],d[1],f,-r*l)}at(i[0],d[0]),at(i[1],d[1])}})}var Cw="__focusNodeAdjacency",Lw="__unfocusNodeAdjacency",kw=["itemStyle","opacity"],Pw=["lineStyle","opacity"];function Nw(t,e){var i=t.getVisual("opacity");return null!=i?i:t.getModel().get(e)}function Ow(t,e,i){var n=t.getGraphicEl(),o=Nw(t,e);null!=i&&(null==o&&(o=1),o*=i),n.downplay&&n.downplay(),n.traverse(function(t){if(!t.isGroup){var e=t.lineLabelOriginalOpacity;null!=e&&null==i||(e=o),t.setStyle("opacity",e)}})}function Ew(t,e){var i=Nw(t,e),n=t.getGraphicEl();n.traverse(function(t){t.isGroup||t.setStyle("opacity",i)}),n.highlight&&n.highlight()}Cf({type:"graph",init:function(t,e){var i=new im,n=new pw,o=this.group;this._controller=new Vy(e.getZr()),this._controllerHost={target:o},o.add(i.group),o.add(n.group),this._symbolDraw=i,this._lineDraw=n,this._firstRender=!0},render:function(o,t,a){var r=this,e=o.coordinateSystem;this._model=o;var i=this._symbolDraw,n=this._lineDraw,s=this.group;if("view"===e.type){var l={position:e.position,scale:e.scale};this._firstRender?s.attr(l):cl(s,l,o)}Dw(o.getGraph(),xw(o));var u=o.getData();i.updateData(u);var h=o.getEdgeData();n.updateData(h),this._updateNodeAndLinkScale(),this._updateController(o,t,a),clearTimeout(this._layoutTimeout);var c=o.forceLayout,d=o.get("force.layoutAnimation");c&&this._startForceLayoutIteration(c,d),u.eachItemGraphicEl(function(t,e){var i=u.getItemModel(e);t.off("drag").off("dragend");var n=i.get("draggable");n&&t.on("drag",function(){c&&(c.warmUp(),this._layouting||this._startForceLayoutIteration(c,d),c.setFixed(e),u.setItemLayout(e,t.position))},this).on("dragend",function(){c&&c.setUnfixed(e)},this),t.setDraggable(n&&c),t[Cw]&&t.off("mouseover",t[Cw]),t[Lw]&&t.off("mouseout",t[Lw]),i.get("focusNodeAdjacency")&&(t.on("mouseover",t[Cw]=function(){r._clearTimer(),a.dispatchAction({type:"focusNodeAdjacency",seriesId:o.id,dataIndex:t.dataIndex})}),t.on("mouseout",t[Lw]=function(){r._dispatchUnfocus(a)}))},this),u.graph.eachEdge(function(t){var e=t.getGraphicEl();e[Cw]&&e.off("mouseover",e[Cw]),e[Lw]&&e.off("mouseout",e[Lw]),t.getModel().get("focusNodeAdjacency")&&(e.on("mouseover",e[Cw]=function(){r._clearTimer(),a.dispatchAction({type:"focusNodeAdjacency",seriesId:o.id,edgeDataIndex:t.dataIndex})}),e.on("mouseout",e[Lw]=function(){r._dispatchUnfocus(a)}))});var f="circular"===o.get("layout")&&o.get("circular.rotateLabel"),p=u.getLayout("cx"),g=u.getLayout("cy");u.eachItemGraphicEl(function(t,e){var i=u.getItemModel(e).get("label.rotate")||0,n=t.getSymbolPath();if(f){var o=u.getItemLayout(e),a=Math.atan2(o[1]-g,o[0]-p);a<0&&(a=2*Math.PI+a);var r=o[0]<p;r&&(a-=Math.PI);var s=r?"left":"right";il(n,{textRotation:-a,textPosition:s,textOrigin:"center"},{textPosition:s})}else il(n,{textRotation:i*=Math.PI/180})}),this._firstRender=!1},dispose:function(){this._controller&&this._controller.dispose(),this._controllerHost={},this._clearTimer()},_dispatchUnfocus:function(t,e){var i=this;this._clearTimer(),this._unfocusDelayTimer=setTimeout(function(){i._unfocusDelayTimer=null,t.dispatchAction({type:"unfocusNodeAdjacency",seriesId:i._model.id})},500)},_clearTimer:function(){this._unfocusDelayTimer&&(clearTimeout(this._unfocusDelayTimer),this._unfocusDelayTimer=null)},focusNodeAdjacency:function(t,e,i,n){var o=t.getData().graph,a=n.dataIndex,r=n.edgeDataIndex,s=o.getNodeByIndex(a),l=o.getEdgeByIndex(r);(s||l)&&(o.eachNode(function(t){Ow(t,kw,.1)}),o.eachEdge(function(t){Ow(t,Pw,.1)}),s&&(Ew(s,kw),E(s.edges,function(t){t.dataIndex<0||(Ew(t,Pw),Ew(t.node1,kw),Ew(t.node2,kw))})),l&&(Ew(l,Pw),Ew(l.node1,kw),Ew(l.node2,kw)))},unfocusNodeAdjacency:function(t,e,i,n){var o=t.getData().graph;o.eachNode(function(t){Ow(t,kw)}),o.eachEdge(function(t){Ow(t,Pw)})},_startForceLayoutIteration:function(t,i){var n=this;!function e(){t.step(function(t){n.updateLayout(n._model),(n._layouting=!t)&&(i?n._layoutTimeout=setTimeout(e,16):e())})}()},_updateController:function(o,t,a){var e=this._controller,i=this._controllerHost,r=this.group;e.setPointerChecker(function(t,e,i){var n=r.getBoundingRect();return n.applyTransform(r.transform),n.contain(e,i)&&!$y(t,a,o)}),"view"===o.coordinateSystem.type?(e.enable(o.get("roam")),i.zoomLimit=o.get("scaleLimit"),i.zoom=o.coordinateSystem.getZoom(),e.off("pan").off("zoom").on("pan",function(t){jy(i,t.dx,t.dy),a.dispatchAction({seriesId:o.id,type:"graphRoam",dx:t.dx,dy:t.dy})}).on("zoom",function(t){qy(i,t.scale,t.originX,t.originY),a.dispatchAction({seriesId:o.id,type:"graphRoam",zoom:t.scale,originX:t.originX,originY:t.originY}),this._updateNodeAndLinkScale(),Dw(o.getGraph(),xw(o)),this._lineDraw.updateLayout()},this)):e.disable()},_updateNodeAndLinkScale:function(){var t=this._model,e=t.getData(),i=xw(t),n=[i,i];e.eachItemGraphicEl(function(t,e){t.attr("scale",n)})},updateLayout:function(t){Dw(t.getGraph(),xw(t)),this._symbolDraw.updateLayout(),this._lineDraw.updateLayout()},remove:function(t,e){this._symbolDraw&&this._symbolDraw.remove(),this._lineDraw&&this._lineDraw.remove()}}),_f({type:"focusNodeAdjacency",event:"focusNodeAdjacency",update:"series:focusNodeAdjacency"},function(){}),_f({type:"unfocusNodeAdjacency",event:"unfocusNodeAdjacency",update:"series:unfocusNodeAdjacency"},function(){});_f({type:"graphRoam",event:"graphRoam",update:"none"},function(i,t){t.eachComponent({mainType:"series",query:i},function(t){var e=ax(t.coordinateSystem,i);t.setCenter&&t.setCenter(e.center),t.setZoom&&t.setZoom(e.zoom)})});function Rw(t){return t instanceof Array||(t=[t,t]),t}function zw(t){var e=t.coordinateSystem;if(!e||"view"===e.type){var i=t.getGraph();i.eachNode(function(t){var e=t.getModel();t.setLayout([+e.get("x"),+e.get("y")])}),Bw(i)}}function Bw(t){t.eachEdge(function(t){var e=t.getModel().get("lineStyle.curveness")||0,i=rt(t.node1.getLayout()),n=rt(t.node2.getLayout()),o=[i,n];+e&&o.push([(i[0]+n[0])/2-(i[1]-n[1])*e,(i[1]+n[1])/2-(n[0]-i[0])*e]),t.setLayout(o)})}var Vw=Math.PI,Gw=[];function Fw(t,e){var i=t.coordinateSystem;if(!i||"view"===i.type){var n=i.getBoundingRect(),o=t.getData(),a=o.graph,s=n.width/2+n.x,l=n.height/2+n.y,r=Math.min(n.width,n.height)/2,u=o.count();o.setLayout({cx:s,cy:l}),u&&(Ww[e](t,i,a,o,r,s,l,u),a.eachEdge(function(t){var e,i=t.getModel().get("lineStyle.curveness")||0,n=rt(t.node1.getLayout()),o=rt(t.node2.getLayout()),a=(n[0]+o[0])/2,r=(n[1]+o[1])/2;+i&&(e=[s*(i*=3)+a*(1-i),l*i+r*(1-i)]),t.setLayout([n,o,e])}))}}var Ww={value:function(t,e,i,n,o,a,r,s){var l=0,u=n.getSum("value"),h=2*Math.PI/(u||s);i.eachNode(function(t){var e=t.getValue("value"),i=h*(u?e:1)/2;l+=i,t.setLayout([o*Math.cos(l)+a,o*Math.sin(l)+r]),l+=i})},symbolSize:function(t,e,i,n,o,a,r,s){var l=0;Gw.length=s;var u=xw(t);i.eachNode(function(t){var e=_w(t);isNaN(e)&&(e=2),e<0&&(e=0),e*=u;var i=Math.asin(e/2/o);isNaN(i)&&(i=Vw/2),Gw[t.dataIndex]=i,l+=2*i});var h=(2*Vw-l)/s/2,c=0;i.eachNode(function(t){var e=h+Gw[t.dataIndex];c+=e,t.setLayout([o*Math.cos(c)+a,o*Math.sin(c)+r]),c+=e})}},Hw=ut;xf(function(t){var a=t.findComponents({mainType:"legend"});a&&a.length&&t.eachSeriesByType("graph",function(t){var e=t.getCategoriesData(),n=t.getGraph().data,o=e.mapArray(e.getName);n.filterSelf(function(t){var e=n.getItemModel(t).getShallow("category");if(null!=e){"number"==typeof e&&(e=o[e]);for(var i=0;i<a.length;i++)if(!a[i].isSelected(e))return!1}return!0})},this)}),Sf(Lm("graph","circle",null)),Sf(function(t){var h={};t.eachSeriesByType("graph",function(s){var l=s.getCategoriesData(),o=s.getData(),u={};l.each(function(t){var e=l.getName(t);u["ec-"+e]=t;var i=l.getItemModel(t),n=i.get("itemStyle.color")||s.getColorFromPalette(e,h);l.setItemVisual(t,"color",n);for(var o=["opacity","symbol","symbolSize","symbolKeepAspect"],a=0;a<o.length;a++){var r=i.getShallow(o[a],!0);null!=r&&l.setItemVisual(t,o[a],r)}}),l.count()&&o.each(function(t){var e=o.getItemModel(t).getShallow("category");if(null!=e){"string"==typeof e&&(e=u["ec-"+e]);for(var i=["color","opacity","symbol","symbolSize","symbolKeepAspect"],n=0;n<i.length;n++)null==o.getItemVisual(t,i[n],!0)&&o.setItemVisual(t,i[n],l.getItemVisual(e,i[n]))}})})}),Sf(function(t){t.eachSeriesByType("graph",function(t){var s=t.getGraph(),l=t.getEdgeData(),e=Rw(t.get("edgeSymbol")),i=Rw(t.get("edgeSymbolSize")),u="lineStyle.color".split("."),h="lineStyle.opacity".split(".");l.setVisual("fromSymbol",e&&e[0]),l.setVisual("toSymbol",e&&e[1]),l.setVisual("fromSymbolSize",i&&i[0]),l.setVisual("toSymbolSize",i&&i[1]),l.setVisual("color",t.get(u)),l.setVisual("opacity",t.get(h)),l.each(function(t){var e=l.getItemModel(t),i=s.getEdgeByIndex(t),n=Rw(e.getShallow("symbol",!0)),o=Rw(e.getShallow("symbolSize",!0)),a=e.get(u),r=e.get(h);switch(a){case"source":a=i.node1.getVisual("color");break;case"target":a=i.node2.getVisual("color")}n[0]&&i.setVisual("fromSymbol",n[0]),n[1]&&i.setVisual("toSymbol",n[1]),o[0]&&i.setVisual("fromSymbolSize",o[0]),o[1]&&i.setVisual("toSymbolSize",o[1]),i.setVisual("color",a),i.setVisual("opacity",r)})})}),bf(function(t,e){t.eachSeriesByType("graph",function(t){var e=t.get("layout"),i=t.coordinateSystem;if(i&&"view"!==i.type){var n=t.getData(),o=[];E(i.dimensions,function(t){o=o.concat(n.mapDimension(t,!0))});for(var a=0;a<n.count();a++){for(var r=[],s=!1,l=0;l<o.length;l++){var u=n.get(o[l],a);isNaN(u)||(s=!0),r.push(u)}s?n.setItemLayout(a,i.dataToPoint(r)):n.setItemLayout(a,[NaN,NaN])}Bw(n.graph)}else e&&"none"!==e||zw(t)})}),bf(Ld.VISUAL.POST_CHART_LAYOUT,function(t){t.eachSeriesByType("graph",function(t){"circular"===t.get("layout")&&Fw(t,"symbolSize")})}),bf(function(t){t.eachSeriesByType("graph",function(t){if(!(l=t.coordinateSystem)||"view"===l.type)if("force"===t.get("layout")){var c=t.preservedPoints||{},d=t.getGraph(),f=d.data,e=d.edgeData,i=t.getModel("force"),n=i.get("initLayout");t.preservedPoints?f.each(function(t){var e=f.getId(t);f.setItemLayout(t,c[e]||[NaN,NaN])}):n&&"none"!==n?"circular"===n&&Fw(t,"value"):zw(t);var o=f.getDataExtent("value"),a=e.getDataExtent("value"),r=i.get("repulsion"),s=i.get("edgeLength");L(r)||(r=[r,r]),L(s)||(s=[s,s]),s=[s[1],s[0]];var l,u=f.mapArray("value",function(t,e){var i=f.getItemLayout(e),n=El(t,o,r);return isNaN(n)&&(n=(r[0]+r[1])/2),{w:n,rep:n,fixed:f.getItemModel(e).get("fixed"),p:!i||isNaN(i[0])||isNaN(i[1])?null:i}}),h=e.mapArray("value",function(t,e){var i=d.getEdgeByIndex(e),n=El(t,a,s);isNaN(n)&&(n=(s[0]+s[1])/2);var o=i.getModel();return{n1:u[i.node1.dataIndex],n2:u[i.node2.dataIndex],d:n,curveness:o.get("lineStyle.curveness")||0,ignoreForceLayout:o.get("ignoreForceLayout")}}),p=(l=t.coordinateSystem).getBoundingRect(),g=function(f,p,t){for(var e=t.rect,i=e.width,n=e.height,g=[e.x+i/2,e.y+n/2],m=null==t.gravity?.1:t.gravity,o=0;o<f.length;o++){var a=f[o];a.p||(a.p=ot(i*(Math.random()-.5)+g[0],n*(Math.random()-.5)+g[1])),a.pp=rt(a.p),a.edges=null}var r=null==t.friction?.6:t.friction,v=r;return{warmUp:function(){v=.8*r},setFixed:function(t){f[t].fixed=!0},setUnfixed:function(t){f[t].fixed=!1},step:function(t){for(var e=[],i=f.length,n=0;n<p.length;n++){var o=p[n];if(!o.ignoreForceLayout){var a=o.n1;ht(e,(u=o.n2).p,a.p);var r=ct(e)-o.d,s=u.w/(a.w+u.w);isNaN(s)&&(s=0),mt(e,e),a.fixed||Hw(a.p,a.p,e,s*r*v),u.fixed||Hw(u.p,u.p,e,-(1-s)*r*v)}}for(n=0;n<i;n++){(d=f[n]).fixed||(ht(e,g,d.p),Hw(d.p,d.p,e,m*v))}for(n=0;n<i;n++){a=f[n];for(var l=n+1;l<i;l++){var u;ht(e,(u=f[l]).p,a.p),0===(r=ct(e))&&(st(e,Math.random()-.5,Math.random()-.5),r=1);var h=(a.rep+u.rep)/r/r;a.fixed||Hw(a.pp,a.pp,e,h),u.fixed||Hw(u.pp,u.pp,e,-h)}}var c=[];for(n=0;n<i;n++){var d;(d=f[n]).fixed||(ht(c,d.p,d.pp),Hw(d.p,d.p,c,v),at(d.pp,d.p))}v*=.992,t&&t(f,p,v<.01)}}}(u,h,{rect:p,gravity:i.get("gravity"),friction:i.get("friction")}),m=g.step;g.step=function(h){for(var t=0,e=u.length;t<e;t++)u[t].fixed&&at(u[t].p,d.getNodeByIndex(t).getLayout());m(function(t,e,i){for(var n=0,o=t.length;n<o;n++)t[n].fixed||d.getNodeByIndex(n).setLayout(t[n].p),c[f.getId(n)]=t[n].p;for(n=0,o=e.length;n<o;n++){var a=e[n],r=d.getEdgeByIndex(n),s=a.n1.p,l=a.n2.p,u=r.getLayout();(u=u?u.slice():[])[0]=u[0]||[],u[1]=u[1]||[],at(u[0],s),at(u[1],l),+a.curveness&&(u[2]=[(s[0]+l[0])/2-(s[1]-l[1])*a.curveness,(s[1]+l[1])/2-(l[0]-s[0])*a.curveness]),r.setLayout(u)}h&&h(i)})},t.forceLayout=g,t.preservedPoints=c,g.step()}else t.forceLayout=null})}),wf("graphView",{create:function(t,d){var f=[];return t.eachSeriesByType("graph",function(t){var e=t.get("coordinateSystem");if(!e||"view"===e){var i=t.getData(),n=[],o=[];Wa(i.mapArray(function(t){var e=i.getItemModel(t);return[+e.get("x"),+e.get("y")]}),n,o),o[0]-n[0]==0&&(o[0]+=1,n[0]-=1),o[1]-n[1]==0&&(o[1]+=1,n[1]-=1);var a=(o[0]-n[0])/(o[1]-n[1]),r=function(t,e,i){var n=t.getBoxLayoutParams();return n.aspect=i,bu(n,{width:e.getWidth(),height:e.getHeight()})}(t,d,a);isNaN(a)&&(n=[r.x,r.y],o=[r.x+r.width,r.y+r.height]);var s=o[0]-n[0],l=o[1]-n[1],u=r.width,h=r.height,c=t.coordinateSystem=new lx;c.zoomLimit=t.get("scaleLimit"),c.setBoundingRect(n[0],n[1],s,l),c.setViewRect(r.x,r.y,u,h),c.setCenter(t.get("center")),c.setZoom(t.get("zoom")),f.push(c)}}),f}});sc.extend({type:"series.gauge",getInitialData:function(t,e){return Yv(this,["value"])},defaultOption:{zlevel:0,z:2,center:["50%","50%"],legendHoverLink:!0,radius:"75%",startAngle:225,endAngle:-45,clockwise:!0,min:0,max:100,splitNumber:10,axisLine:{show:!0,lineStyle:{color:[[.2,"#91c7ae"],[.8,"#63869e"],[1,"#c23531"]],width:30}},splitLine:{show:!0,length:30,lineStyle:{color:"#eee",width:2,type:"solid"}},axisTick:{show:!0,splitNumber:5,length:8,lineStyle:{color:"#eee",width:1,type:"solid"}},axisLabel:{show:!0,distance:5,color:"auto"},pointer:{show:!0,length:"80%",width:8},itemStyle:{color:"auto"},title:{show:!0,offsetCenter:[0,"-40%"],color:"#333",fontSize:15},detail:{show:!0,backgroundColor:"rgba(0,0,0,0)",borderWidth:0,borderColor:"#ccc",width:100,height:null,padding:[5,10],offsetCenter:[0,"40%"],color:"auto",fontSize:30}}});var Zw=Ar.extend({type:"echartsGaugePointer",shape:{angle:0,width:10,r:10,x:0,y:0},buildPath:function(t,e){var i=Math.cos,n=Math.sin,o=e.r,a=e.width,r=e.angle,s=e.x-i(r)*a*(o/3<=a?1:2),l=e.y-n(r)*a*(o/3<=a?1:2);r=e.angle-Math.PI/2,t.moveTo(s,l),t.lineTo(e.x+i(r)*a,e.y+n(r)*a),t.lineTo(e.x+i(e.angle)*o,e.y+n(e.angle)*o),t.lineTo(e.x-i(r)*a,e.y-n(r)*a),t.lineTo(s,l)}});function Uw(t,e){return e&&("string"==typeof e?t=e.replace("{value}",null!=t?t:""):"function"==typeof e&&(t=e(t))),t}var Xw=2*Math.PI,Yw=(_c.extend({type:"gauge",render:function(t,e,i){this.group.removeAll();var n=t.get("axisLine.lineStyle.color"),o=function(t,e){var i=t.get("center"),n=e.getWidth(),o=e.getHeight(),a=Math.min(n,o);return{cx:Rl(i[0],e.getWidth()),cy:Rl(i[1],e.getHeight()),r:Rl(t.get("radius"),a/2)}}(t,i);this._renderMain(t,e,i,n,o)},dispose:function(){},_renderMain:function(t,e,i,n,o){for(var a=this.group,r=t.getModel("axisLine"),s=r.getModel("lineStyle"),l=t.get("clockwise"),u=-t.get("startAngle")/180*Math.PI,h=((g=-t.get("endAngle")/180*Math.PI)-u)%Xw,c=u,d=s.get("width"),f=r.get("show"),p=0;f&&p<n.length;p++){var g,m=Math.min(Math.max(n[p][0],0),1),v=new qr({shape:{startAngle:c,endAngle:g=u+h*m,cx:o.cx,cy:o.cy,clockwise:l,r0:o.r-d,r:o.r},silent:!0});v.setStyle({fill:n[p][1]}),v.setStyle(s.getLineStyle(["color","borderWidth","borderColor"])),a.add(v),c=g}function y(t){if(t<=0)return n[0][1];for(var e=0;e<n.length;e++)if(n[e][0]>=t&&(0===e?0:n[e-1][0])<t)return n[e][1];return n[e-1][1]}if(!l){var x=u;u=g,g=x}this._renderTicks(t,e,i,y,o,u,g,l),this._renderPointer(t,e,i,y,o,u,g,l),this._renderTitle(t,e,i,y,o),this._renderDetail(t,e,i,y,o)},_renderTicks:function(t,e,i,n,o,a,r,s){for(var l=this.group,u=o.cx,h=o.cy,c=o.r,d=+t.get("min"),f=+t.get("max"),p=t.getModel("splitLine"),g=t.getModel("axisTick"),m=t.getModel("axisLabel"),v=t.get("splitNumber"),y=g.get("splitNumber"),x=Rl(p.get("length"),c),_=Rl(g.get("length"),c),w=a,b=(r-a)/v,S=b/y,M=p.getModel("lineStyle").getLineStyle(),I=g.getModel("lineStyle").getLineStyle(),T=0;T<=v;T++){var A=Math.cos(w),D=Math.sin(w);if(p.get("show")){var C=new ls({shape:{x1:A*c+u,y1:D*c+h,x2:A*(c-x)+u,y2:D*(c-x)+h},style:M,silent:!0});"auto"===M.stroke&&C.setStyle({stroke:n(T/v)}),l.add(C)}if(m.get("show")){var L=Uw(zl(T/v*(f-d)+d),m.get("formatter")),k=m.get("distance"),P=n(T/v);l.add(new Ur({style:nl({},m,{text:L,x:A*(c-x-k)+u,y:D*(c-x-k)+h,textVerticalAlign:D<-.4?"top":.4<D?"bottom":"middle",textAlign:A<-.4?"left":.4<A?"right":"center"},{autoColor:P}),silent:!0}))}if(g.get("show")&&T!==v){for(var N=0;N<=y;N++){A=Math.cos(w),D=Math.sin(w);var O=new ls({shape:{x1:A*c+u,y1:D*c+h,x2:A*(c-_)+u,y2:D*(c-_)+h},silent:!0,style:I});"auto"===I.stroke&&O.setStyle({stroke:n((T+N/y)/v)}),l.add(O),w+=S}w-=S}else w+=b}},_renderPointer:function(n,t,e,o,a,i,r,s){var l=this.group,u=this._data;if(n.get("pointer.show")){var h=[+n.get("min"),+n.get("max")],c=[i,r],d=n.getData(),f=d.mapDimension("value");d.diff(u).add(function(t){var e=new Zw({shape:{angle:i}});dl(e,{shape:{angle:El(d.get(f,t),h,c,!0)}},n),l.add(e),d.setItemGraphicEl(t,e)}).update(function(t,e){var i=u.getItemGraphicEl(e);cl(i,{shape:{angle:El(d.get(f,t),h,c,!0)}},n),l.add(i),d.setItemGraphicEl(t,i)}).remove(function(t){var e=u.getItemGraphicEl(t);l.remove(e)}).execute(),d.eachItemGraphicEl(function(t,e){var i=d.getItemModel(e),n=i.getModel("pointer");t.setShape({x:a.cx,y:a.cy,width:Rl(n.get("width"),a.r),r:Rl(n.get("length"),a.r)}),t.useStyle(i.getModel("itemStyle").getItemStyle()),"auto"===t.style.fill&&t.setStyle("fill",o(El(d.get(f,e),h,[0,1],!0))),$s(t,i.getModel("emphasis.itemStyle").getItemStyle())}),this._data=d}else u&&u.eachItemGraphicEl(function(t){l.remove(t)})},_renderTitle:function(t,e,i,n,o){var a=t.getData(),r=a.mapDimension("value"),s=t.getModel("title");if(s.get("show")){var l=s.get("offsetCenter"),u=o.cx+Rl(l[0],o.r),h=o.cy+Rl(l[1],o.r),c=+t.get("min"),d=+t.get("max"),f=n(El(t.getData().get(r,0),[c,d],[0,1],!0));this.group.add(new Ur({silent:!0,style:nl({},s,{x:u,y:h,text:a.getName(0),textAlign:"center",textVerticalAlign:"middle"},{autoColor:f,forceRich:!0})}))}},_renderDetail:function(t,e,i,n,o){var a=t.getModel("detail"),r=+t.get("min"),s=+t.get("max");if(a.get("show")){var l=a.get("offsetCenter"),u=o.cx+Rl(l[0],o.r),h=o.cy+Rl(l[1],o.r),c=Rl(a.get("width"),o.r),d=Rl(a.get("height"),o.r),f=t.getData(),p=f.get(f.mapDimension("value"),0),g=n(El(p,[r,s],[0,1],!0));this.group.add(new Ur({silent:!0,style:nl({},a,{x:u,y:h,text:Uw(p,a.get("formatter")),textWidth:isNaN(c)?null:c,textHeight:isNaN(d)?null:d,textAlign:"center",textVerticalAlign:"middle"},{autoColor:g,forceRich:!0})}))}}}),Df({type:"series.funnel",init:function(t){Yw.superApply(this,"init",arguments),this.legendVisualProvider=new qv(A(this.getData,this),A(this.getRawData,this)),this._defaultLabelLine(t)},getInitialData:function(t,e){return Yv(this,{coordDimensions:["value"],encodeDefaulter:T(Ju,this)})},_defaultLabelLine:function(t){Go(t,"labelLine",["show"]);var e=t.labelLine,i=t.emphasis.labelLine;e.show=e.show&&t.label.show,i.show=i.show&&t.emphasis.label.show},getDataParams:function(t){var e=this.getData(),i=Yw.superCall(this,"getDataParams",t),n=e.mapDimension("value"),o=e.getSum(n);return i.percent=o?+(e.get(n,t)/o*100).toFixed(2):0,i.$vars.push("percent"),i},defaultOption:{zlevel:0,z:2,legendHoverLink:!0,left:80,top:60,right:80,bottom:60,minSize:"0%",maxSize:"100%",sort:"descending",gap:0,funnelAlign:"center",label:{show:!0,position:"outer"},labelLine:{show:!0,length:20,lineStyle:{width:1,type:"solid"}},itemStyle:{borderColor:"#fff",borderWidth:1},emphasis:{label:{show:!0}}}}));function jw(t,e){Ci.call(this);var i=new Qr,n=new ts,o=new Ur;this.add(i),this.add(n),this.add(o),this.highDownOnUpdate=function(t,e){"emphasis"===e?(n.ignore=n.hoverIgnore,o.ignore=o.hoverIgnore):(n.ignore=n.normalIgnore,o.ignore=o.normalIgnore)},this.updateData(t,e,!0)}var qw=jw.prototype,Kw=["itemStyle","opacity"];qw.updateData=function(t,e,i){var n=this.childAt(0),o=t.hostModel,a=t.getItemModel(e),r=t.getItemLayout(e),s=t.getItemModel(e).get(Kw);s=null==s?1:s,n.useStyle({}),i?(n.setShape({points:r.points}),n.setStyle({opacity:0}),dl(n,{style:{opacity:s}},o,e)):cl(n,{style:{opacity:s},shape:{points:r.points}},o,e);var l=a.getModel("itemStyle"),u=t.getItemVisual(e,"color");n.setStyle(D({lineJoin:"round",fill:u},l.getItemStyle(["opacity"]))),n.hoverStyle=l.getModel("emphasis").getItemStyle(),this._updateLabel(t,e),$s(this)},qw._updateLabel=function(t,e){var i=this.childAt(1),n=this.childAt(2),o=t.hostModel,a=t.getItemModel(e),r=t.getItemLayout(e).label,s=t.getItemVisual(e,"color");cl(i,{shape:{points:r.linePoints||r.linePoints}},o,e),cl(n,{style:{x:r.x,y:r.y}},o,e),n.attr({rotation:r.rotation,origin:[r.x,r.y],z2:10});var l=a.getModel("label"),u=a.getModel("emphasis.label"),h=a.getModel("labelLine"),c=a.getModel("emphasis.labelLine");s=t.getItemVisual(e,"color");el(n.style,n.hoverStyle={},l,u,{labelFetcher:t.hostModel,labelDataIndex:e,defaultText:t.getName(e),autoColor:s,useInsideStyle:!!r.inside},{textAlign:r.textAlign,textVerticalAlign:r.verticalAlign}),n.ignore=n.normalIgnore=!l.get("show"),n.hoverIgnore=!u.get("show"),i.ignore=i.normalIgnore=!h.get("show"),i.hoverIgnore=!c.get("show"),i.setStyle({stroke:s}),i.setStyle(h.getModel("lineStyle").getLineStyle()),i.hoverStyle=c.getModel("lineStyle").getLineStyle()},w(jw,Ci);_c.extend({type:"funnel",render:function(t,e,i){var n=t.getData(),o=this._data,a=this.group;n.diff(o).add(function(t){var e=new jw(n,t);n.setItemGraphicEl(t,e),a.add(e)}).update(function(t,e){var i=o.getItemGraphicEl(e);i.updateData(n,t),a.add(i),n.setItemGraphicEl(t,i)}).remove(function(t){var e=o.getItemGraphicEl(t);a.remove(e)}).execute(),this._data=n},remove:function(){this.group.removeAll(),this._data=null},dispose:function(){}});Sf(iy("funnel")),bf(function(t,w,e){t.eachSeriesByType("funnel",function(t){var o=t.getData(),a=o.mapDimension("value"),e=t.get("sort"),r=function(t,e){return bu(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}(t,w),i=function(t,e){for(var i=t.mapDimension("value"),n=t.mapArray(i,function(t){return t}),o=[],a="ascending"===e,r=0,s=t.count();r<s;r++)o[r]=r;return"function"==typeof e?o.sort(e):"none"!==e&&o.sort(function(t,e){return a?n[t]-n[e]:n[e]-n[t]}),o}(o,e),s=[Rl(t.get("minSize"),r.width),Rl(t.get("maxSize"),r.width)],n=o.getDataExtent(a),l=t.get("min"),u=t.get("max");null==l&&(l=Math.min(n[0],0)),null==u&&(u=n[1]);function h(t,e){var i,n=El(o.get(a,t)||0,[l,u],s,!0);switch(c){case"left":i=r.x;break;case"center":i=r.x+(r.width-n)/2;break;case"right":i=r.x+r.width-n}return[[i,e],[i+n,e]]}var c=t.get("funnelAlign"),d=t.get("gap"),f=(r.height-d*(o.count()-1))/o.count(),p=r.y;"ascending"===e&&(f=-f,d=-d,p+=r.height,i=i.reverse());for(var g=0;g<i.length;g++){var m=i[g],v=i[g+1],y=o.getItemModel(m).get("itemStyle.height");null==y?y=f:(y=Rl(y,r.height),"ascending"===e&&(y=-y));var x=h(m,p),_=h(v,p+y);p+=y+d,o.setItemLayout(m,{points:x.concat(_.slice().reverse())})}!function(g){g.each(function(t){var e,i,n,o,a=g.getItemModel(t),r=a.getModel("label").get("position"),s=a.getModel("labelLine"),l=g.getItemLayout(t),u=l.points,h="inner"===r||"inside"===r||"center"===r||"insideLeft"===r||"insideRight"===r;if(h)e="insideLeft"===r?(i=(u[0][0]+u[3][0])/2+5,n=(u[0][1]+u[3][1])/2,"left"):"insideRight"===r?(i=(u[1][0]+u[2][0])/2-5,n=(u[1][1]+u[2][1])/2,"right"):(i=(u[0][0]+u[1][0]+u[2][0]+u[3][0])/4,n=(u[0][1]+u[1][1]+u[2][1]+u[3][1])/4,"center"),o=[[i,n],[i,n]];else{var c,d,f,p=s.get("length");e="left"===r?(c=(u[3][0]+u[0][0])/2,d=(u[3][1]+u[0][1])/2,i=(f=c-p)-5,"right"):"right"===r?(c=(u[1][0]+u[2][0])/2,d=(u[1][1]+u[2][1])/2,i=(f=c+p)+5,"left"):"rightTop"===r?(c=u[1][0],d=u[1][1],i=(f=c+p)+5,"top"):"rightBottom"===r?(c=u[2][0],d=u[2][1],i=(f=c+p)+5,"bottom"):"leftTop"===r?(c=u[0][0],d=u[1][1],i=(f=c-p)-5,"right"):"leftBottom"===r?(c=u[3][0],d=u[2][1],i=(f=c-p)-5,"right"):(c=(u[1][0]+u[2][0])/2,d=(u[1][1]+u[2][1])/2,i=(f=c+p)+5,"left");o=[[c,d],[f,d]],n=d}l.label={linePoints:o,x:i,y:n,verticalAlign:"middle",textAlign:e,inside:h}})}(o)})}),xf(uy("funnel"));function $w(t,e,i,n,o){Gg.call(this,t,e,i),this.type=n||"value",this.axisIndex=o}$w.prototype={constructor:$w,model:null,isHorizontal:function(){return"horizontal"!==this.coordinateSystem.getModel().get("layout")}},w($w,Gg);function Jw(t,e,i,n,o,a){t=t||0;var r=i[1]-i[0];if(null!=o&&(o=tb(o,[0,r])),null!=a&&(a=Math.max(a,null!=o?o:0)),"all"===n){var s=Math.abs(e[1]-e[0]);o=a=tb(s=tb(s,[0,r]),[o,a]),n=0}e[0]=tb(e[0],i),e[1]=tb(e[1],i);var l=Qw(e,n);e[n]+=t;var u=o||0,h=i.slice();l.sign<0?h[0]+=u:h[1]-=u,e[n]=tb(e[n],h);var c=Qw(e,n);return null!=o&&(c.sign!==l.sign||c.span<o)&&(e[1-n]=e[n]+l.sign*o),c=Qw(e,n),null!=a&&c.span>a&&(e[1-n]=e[n]+c.sign*a),e}function Qw(t,e){var i=t[e]-t[1-e];return{span:Math.abs(i),sign:0<i?-1:i<0?1:e?-1:1}}function tb(t,e){return Math.min(null!=e[1]?e[1]:1/0,Math.max(null!=e[0]?e[0]:-1/0,t))}var eb=E,ib=Math.min,nb=Math.max,ob=Math.floor,ab=Math.ceil,rb=zl,sb=Math.PI;function lb(t,e,i){this._axesMap=Q(),this._axesLayout={},this.dimensions=t.dimensions,this._rect,this._model=t,this._init(t,e,i)}function ub(t,e){return ib(nb(t,e[0]),e[1])}lb.prototype={type:"parallel",constructor:lb,_init:function(t,r,e){var i=t.dimensions,s=t.parallelAxisIndex;eb(i,function(t,e){var i=s[e],n=r.getComponent("parallelAxis",i),o=this._axesMap.set(t,new $w(t,sg(n),[0,0],n.get("type"),i)),a="category"===o.type;o.onBand=a&&n.get("boundaryGap"),o.inverse=n.get("inverse"),(n.axis=o).model=n,o.coordinateSystem=n.coordinateSystem=this},this)},update:function(t,e){this._updateAxesFromSeries(this._model,t)},containPoint:function(t){var e=this._makeLayoutInfo(),i=e.axisBase,n=e.layoutBase,o=e.pixelDimIndex,a=t[1-o],r=t[o];return i<=a&&a<=i+e.axisLength&&n<=r&&r<=n+e.layoutLength},getModel:function(){return this._model},_updateAxesFromSeries:function(e,n){n.eachSeries(function(t){if(e.contains(t,n)){var i=t.getData();eb(this.dimensions,function(t){var e=this._axesMap.get(t);e.scale.unionExtentFromData(i,i.mapDimension(t)),rg(e.scale,e.model)},this)}},this)},resize:function(t,e){this._rect=bu(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()}),this._layoutAxes()},getRect:function(){return this._rect},_makeLayoutInfo:function(){var t,e=this._model,i=this._rect,n=["x","y"],o=["width","height"],a=e.get("layout"),r="horizontal"===a?0:1,s=i[o[r]],l=[0,s],u=this.dimensions.length,h=ub(e.get("axisExpandWidth"),l),c=ub(e.get("axisExpandCount")||0,[0,u]),d=e.get("axisExpandable")&&3<u&&c<u&&1<c&&0<h&&0<s,f=e.get("axisExpandWindow");f?(t=ub(f[1]-f[0],l),f[1]=f[0]+t):(t=ub(h*(c-1),l),(f=[h*(e.get("axisExpandCenter")||ob(u/2))-t/2])[1]=f[0]+t);var p=(s-t)/(u-c);p<3&&(p=0);var g=[ob(rb(f[0]/h,1))+1,ab(rb(f[1]/h,1))-1],m=p/h*f[0];return{layout:a,pixelDimIndex:r,layoutBase:i[n[r]],layoutLength:s,axisBase:i[n[1-r]],axisLength:i[o[1-r]],axisExpandable:d,axisExpandWidth:h,axisCollapseWidth:p,axisExpandWindow:f,axisCount:u,winInnerIndices:g,axisExpandWindow0Pos:m}},_layoutAxes:function(){var l=this._rect,t=this._axesMap,e=this.dimensions,u=this._makeLayoutInfo(),h=u.layout;t.each(function(t){var e=[0,u.axisLength],i=t.inverse?1:0;t.setExtent(e[i],e[1-i])}),eb(e,function(t,e){var i=(u.axisExpandable?function(t,e){var i,n,o=e.layoutLength,a=e.axisExpandWidth,r=e.axisCount,s=e.axisCollapseWidth,l=e.winInnerIndices,u=s,h=!1;t<l[0]?(i=t*s,n=s):t<=l[1]?(i=e.axisExpandWindow0Pos+t*a-e.axisExpandWindow[0],u=a,h=!0):(i=o-(r-1-t)*s,n=s);return{position:i,axisNameAvailableWidth:u,axisLabelShow:h,nameTruncateMaxWidth:n}}:function(t,e){var i=e.layoutLength/(e.axisCount-1);return{position:i*t,axisNameAvailableWidth:i,axisLabelShow:!0}})(e,u),n={horizontal:{x:i.position,y:u.axisLength},vertical:{x:0,y:i.position}},o={horizontal:sb/2,vertical:0},a=[n[h].x+l.x,n[h].y+l.y],r=o[h],s=ae();he(s,s,r),ue(s,s,a),this._axesLayout[t]={position:a,rotation:r,transform:s,axisNameAvailableWidth:i.axisNameAvailableWidth,axisLabelShow:i.axisLabelShow,nameTruncateMaxWidth:i.nameTruncateMaxWidth,tickDirection:1,labelDirection:1}},this)},getAxis:function(t){return this._axesMap.get(t)},dataToPoint:function(t,e){return this.axisCoordToPoint(this._axesMap.get(e).dataToCoord(t),e)},eachActiveState:function(e,t,i,n){null==i&&(i=0),null==n&&(n=e.count());var o=this._axesMap,a=this.dimensions,r=[],s=[];E(a,function(t){r.push(e.mapDimension(t)),s.push(o.get(t).model)});for(var l=this.hasAxisBrushed(),u=i;u<n;u++){var h;if(l){h="active";for(var c=e.getValues(r,u),d=0,f=a.length;d<f;d++){if("inactive"===s[d].getActiveState(c[d])){h="inactive";break}}}else h="normal";t(h,u)}},hasAxisBrushed:function(){for(var t=this.dimensions,e=this._axesMap,i=!1,n=0,o=t.length;n<o;n++)"normal"!==e.get(t[n]).model.getActiveState()&&(i=!0);return i},axisCoordToPoint:function(t,e){return pl([t,0],this._axesLayout[e].transform)},getAxisLayout:function(t){return k(this._axesLayout[t])},getSlidedAxisExpandWindow:function(t){var e=this._makeLayoutInfo(),i=e.pixelDimIndex,n=e.axisExpandWindow.slice(),o=n[1]-n[0],a=[0,e.axisExpandWidth*(e.axisCount-1)];if(!this.containPoint(t))return{behavior:"none",axisExpandWindow:n};var r,s=t[i]-e.layoutBase-e.axisExpandWindow0Pos,l="slide",u=e.axisCollapseWidth,h=this._model.get("axisExpandSlideTriggerArea"),c=null!=h[0];if(u)c&&u&&s<o*h[0]?(l="jump",r=s-o*h[2]):c&&u&&s>o*(1-h[0])?(l="jump",r=s-o*(1-h[2])):0<=(r=s-o*h[1])&&(r=s-o*(1-h[1]))<=0&&(r=0),(r*=e.axisExpandWidth/u)?Jw(r,n,a,"all"):l="none";else{o=n[1]-n[0];(n=[nb(0,a[1]*s/o-o/2)])[1]=ib(a[1],n[0]+o),n[0]=n[1]-o}return{axisExpandWindow:n,behavior:l}}},lh.register("parallel",{create:function(n,o){var a=[];return n.eachComponent("parallel",function(t,e){var i=new lb(t,n,o);i.name="parallel_"+e,i.resize(t,o),(t.coordinateSystem=i).model=t,a.push(i)}),n.eachSeries(function(t){if("parallel"===t.get("coordinateSystem")){var e=n.queryComponents({mainType:"parallel",index:t.get("parallelIndex"),id:t.get("parallelId")})[0];t.coordinateSystem=e.coordinateSystem}}),a}});var hb=ku.extend({type:"baseParallelAxis",axis:null,activeIntervals:[],getAreaSelectStyle:function(){return ha([["fill","color"],["lineWidth","borderWidth"],["stroke","borderColor"],["width","width"],["opacity","opacity"]])(this.getModel("areaSelectStyle"))},setActiveIntervals:function(t){var e=this.activeIntervals=k(t);if(e)for(var i=e.length-1;0<=i;i--)Bl(e[i])},getActiveState:function(t){var e=this.activeIntervals;if(!e.length)return"normal";if(null==t||isNaN(t))return"inactive";if(1===e.length){var i=e[0];if(i[0]<=t&&t<=i[1])return"active"}else for(var n=0,o=e.length;n<o;n++)if(e[n][0]<=t&&t<=e[n][1])return"active";return"inactive"}});m(hb.prototype,dg),Gm("parallel",hb,function(t,e){return e.type||(e.data?"category":"value")},{type:"value",dim:null,areaSelectStyle:{width:20,borderWidth:1,borderColor:"rgba(160,197,232)",color:"rgba(160,197,232)",opacity:.3},realtime:!0,z:10}),ku.extend({type:"parallel",dependencies:["parallelAxis"],coordinateSystem:null,dimensions:null,parallelAxisIndex:null,layoutMode:"box",defaultOption:{zlevel:0,z:0,left:80,top:60,right:80,bottom:60,layout:"horizontal",axisExpandable:!1,axisExpandCenter:null,axisExpandCount:0,axisExpandWidth:50,axisExpandRate:17,axisExpandDebounce:50,axisExpandSlideTriggerArea:[-.15,.05,.4],axisExpandTriggerOn:"click",parallelAxisDefault:null},init:function(){ku.prototype.init.apply(this,arguments),this.mergeOption({})},mergeOption:function(t){var e=this.option;t&&m(e,t,!0),this._initDimensions()},contains:function(t,e){var i=t.get("parallelIndex");return null!=i&&e.getComponent("parallel",i)===this},setAxisExpand:function(e){E(["axisExpandable","axisExpandCenter","axisExpandCount","axisExpandWidth","axisExpandWindow"],function(t){e.hasOwnProperty(t)&&(this.option[t]=e[t])},this)},_initDimensions:function(){var e=this.dimensions=[],i=this.parallelAxisIndex=[];E(M(this.dependentModels.parallelAxis,function(t){return(t.get("parallelIndex")||0)===this.componentIndex},this),function(t){e.push("dim"+t.get("dim")),i.push(t.componentIndex)})}});_f({type:"axisAreaSelect",event:"axisAreaSelected"},function(e,t){t.eachComponent({mainType:"parallelAxis",query:e},function(t){t.axis.model.setActiveIntervals(e.intervals)})}),_f("parallelAxisExpand",function(e,t){t.eachComponent({mainType:"parallel",query:e},function(t){t.setAxisExpand(e)})});var cb=T,db=E,fb=O,pb=Math.min,gb=Math.max,mb=Math.pow,vb=1e4,yb=6,xb=6,_b="globalPan",wb={w:[0,0],e:[0,1],n:[1,0],s:[1,1]},bb={w:"ew",e:"ew",n:"ns",s:"ns",ne:"nesw",sw:"nesw",nw:"nwse",se:"nwse"},Sb={brushStyle:{lineWidth:2,stroke:"rgba(0,0,0,0.3)",fill:"rgba(0,0,0,0.1)"},transformable:!0,brushMode:"single",removeOnClick:!1},Mb=0;function Ib(t){Ct.call(this),this._zr=t,this.group=new Ci,this._brushType,this._brushOption,this._panels,this._track=[],this._dragging,this._covers=[],this._creatingCover,this._creatingPanel,this._enableGlobalPan,this._uid="brushController_"+Mb++,this._handlers={},db($b,function(t,e){this._handlers[e]=A(t,this)},this)}function Tb(t,e){var i=Qb[e.brushType].createCover(t,e);return i.__brushOption=e,Cb(i,e),t.group.add(i),i}function Ab(t,e){var i=kb(e);return i.endCreating&&(i.endCreating(t,e),Cb(e,e.__brushOption)),e}function Db(t,e){var i=e.__brushOption;kb(e).updateCoverShape(t,e,i.range,i)}function Cb(t,e){var i=e.z;null==i&&(i=vb),t.traverse(function(t){t.z=i,t.z2=i})}function Lb(t,e){kb(e).updateCommon(t,e),Db(t,e)}function kb(t){return Qb[t.__brushOption.brushType]}function Pb(t,e,i){var n,o=t._panels;if(!o)return!0;var a=t._transform;return db(o,function(t){t.isTargetByCursor(e,i,a)&&(n=t)}),n}function Nb(t,e){var i=t._panels;if(!i)return!0;var n=e.__brushOption.panelId;return null==n||i[n]}function Ob(e){var t=e._covers,i=t.length;return db(t,function(t){e.group.remove(t)},e),t.length=0,!!i}function Eb(t,e){var i=fb(t._covers,function(t){var e=t.__brushOption,i=k(e.range);return{brushType:e.brushType,panelId:e.panelId,range:i}});t.trigger("brush",i,{isEnd:!!e.isEnd,removeOnClick:!!e.removeOnClick})}function Rb(t){var e=t.length-1;return e<0&&(e=0),[t[0],t[e]]}function zb(e,i,t,n){var o=new Ci;return o.add(new rs({name:"main",style:Fb(t),silent:!0,draggable:!0,cursor:"move",drift:cb(e,i,o,"nswe"),ondragend:cb(Eb,i,{isEnd:!0})})),db(n,function(t){o.add(new rs({name:t,style:{opacity:0},draggable:!0,silent:!0,invisible:!0,drift:cb(e,i,o,t),ondragend:cb(Eb,i,{isEnd:!0})}))}),o}function Bb(t,e,i,n){var o=n.brushStyle.lineWidth||0,a=gb(o,xb),r=i[0][0],s=i[1][0],l=r-o/2,u=s-o/2,h=i[0][1],c=i[1][1],d=h-a+o/2,f=c-a+o/2,p=h-r,g=c-s,m=p+o,v=g+o;Gb(t,e,"main",r,s,p,g),n.transformable&&(Gb(t,e,"w",l,u,a,v),Gb(t,e,"e",d,u,a,v),Gb(t,e,"n",l,u,m,a),Gb(t,e,"s",l,f,m,a),Gb(t,e,"nw",l,u,a,a),Gb(t,e,"ne",d,u,a,a),Gb(t,e,"sw",l,f,a,a),Gb(t,e,"se",d,f,a,a))}function Vb(n,o){var t=o.__brushOption,a=t.transformable,e=o.childAt(0);e.useStyle(Fb(t)),e.attr({silent:!a,cursor:a?"move":"default"}),db(["w","e","n","s","se","sw","ne","nw"],function(t){var e=o.childOfName(t),i=function t(e,i){{if(1<i.length){i=i.split("");var n=[t(e,i[0]),t(e,i[1])];return"e"!==n[0]&&"w"!==n[0]||n.reverse(),n.join("")}var o={w:"left",e:"right",n:"top",s:"bottom"},a={left:"w",right:"e",top:"n",bottom:"s"},n=gl(o[i],fl(e.group));return a[n]}}(n,t);e&&e.attr({silent:!a,invisible:!a,cursor:a?bb[i]+"-resize":null})})}function Gb(t,e,i,n,o,a,r){var s=e.childOfName(i);s&&s.setShape(function(t){var e=pb(t[0][0],t[1][0]),i=pb(t[0][1],t[1][1]),n=gb(t[0][0],t[1][0]),o=gb(t[0][1],t[1][1]);return{x:e,y:i,width:n-e,height:o-i}}(Xb(t,e,[[n,o],[n+a,o+r]])))}function Fb(t){return D({strokeNoScale:!0},t.brushStyle)}function Wb(t,e,i,n){var o=[pb(t,i),pb(e,n)],a=[gb(t,i),gb(e,n)];return[[o[0],a[0]],[o[1],a[1]]]}function Hb(t,e,i,n,o,a,r,s){var l=n.__brushOption,u=t(l.range),h=Ub(i,a,r);db(o.split(""),function(t){var e=wb[t];u[e[0]][e[1]]+=h[e[0]]}),l.range=e(Wb(u[0][0],u[1][0],u[0][1],u[1][1])),Lb(i,n),Eb(i,{isEnd:!1})}function Zb(t,e,i,n,o){var a=e.__brushOption.range,r=Ub(t,i,n);db(a,function(t){t[0]+=r[0],t[1]+=r[1]}),Lb(t,e),Eb(t,{isEnd:!1})}function Ub(t,e,i){var n=t.group,o=n.transformCoordToLocal(e,i),a=n.transformCoordToLocal(0,0);return[o[0]-a[0],o[1]-a[1]]}function Xb(t,e,i){var n=Nb(t,e);return n&&!0!==n?n.clipPath(i,t._transform):k(i)}function Yb(t){var e=t.event;e.preventDefault&&e.preventDefault()}function jb(t,e,i){return t.childOfName("main").contain(e,i)}function qb(t,e,i,n){var o,a=t._creatingCover,r=t._creatingPanel,s=t._brushOption;if(t._track.push(i.slice()),function(t){var e=t._track;if(!e.length)return!1;var i=e[e.length-1],n=e[0],o=i[0]-n[0],a=i[1]-n[1],r=mb(o*o+a*a,.5);return yb<r}(t)||a){if(r&&!a){"single"===s.brushMode&&Ob(t);var l=k(s);l.brushType=Kb(l.brushType,r),l.panelId=!0===r?null:r.panelId,a=t._creatingCover=Tb(t,l),t._covers.push(a)}if(a){var u=Qb[Kb(t._brushType,r)];a.__brushOption.range=u.getCreatingRange(Xb(t,a,t._track)),n&&(Ab(t,a),u.updateCommon(t,a)),Db(t,a),o={isEnd:n}}}else n&&"single"===s.brushMode&&s.removeOnClick&&Pb(t,e,i)&&Ob(t)&&(o={isEnd:n,removeOnClick:!0});return o}function Kb(t,e){return"auto"===t?e.defaultBrushType:t}Ib.prototype={constructor:Ib,enableBrush:function(t){return this._brushType&&function(t){var e=t._zr;(function(t,e,i){var n=By(t);n[e]===i&&(n[e]=null)})(e,_b,t._uid),function(i,t){db(t,function(t,e){i.off(e,t)})}(e,t._handlers),t._brushType=t._brushOption=null}(this),t.brushType&&function(t,e){var i=t._zr;t._enableGlobalPan||function(t,e,i){By(t)[e]=i}(i,_b,t._uid);(function(i,t){db(t,function(t,e){i.on(e,t)})})(i,t._handlers),t._brushType=e.brushType,t._brushOption=m(k(Sb),e,!0)}(this,t),this},setPanels:function(t){if(t&&t.length){var e=this._panels={};E(t,function(t){e[t.panelId]=k(t)})}else this._panels=null;return this},mount:function(t){t=t||{},this._enableGlobalPan=t.enableGlobalPan;var e=this.group;return this._zr.add(e),e.attr({position:t.position||[0,0],rotation:t.rotation||0,scale:t.scale||[1,1]}),this._transform=e.getLocalTransform(),this},eachCover:function(t,e){db(this._covers,t,e)},updateCovers:function(o){o=O(o,function(t){return m(k(Sb),t,!0)});var i="\0-brush-index-",a=this._covers,r=this._covers=[],s=this,l=this._creatingCover;return new kf(a,o,function(t,e){return n(t.__brushOption,e)},n).add(t).update(t).remove(function(t){a[t]!==l&&s.group.remove(a[t])}).execute(),this;function n(t,e){return(null!=t.id?t.id:i+e)+"-"+t.brushType}function t(t,e){var i=o[t];if(null!=e&&a[e]===l)r[t]=a[e];else{var n=r[t]=null!=e?(a[e].__brushOption=i,a[e]):Ab(s,Tb(s,i));Lb(s,n)}}},unmount:function(){return this.enableBrush(!1),Ob(this),this._zr.remove(this.group),this},dispose:function(){this.unmount(),this.off()}},b(Ib,Ct);var $b={mousedown:function(t){if(this._dragging)Jb(this,t);else if(!t.target||!t.target.draggable){Yb(t);var e=this.group.transformCoordToLocal(t.offsetX,t.offsetY);this._creatingCover=null,(this._creatingPanel=Pb(this,t,e))&&(this._dragging=!0,this._track=[e.slice()])}},mousemove:function(t){var e=t.offsetX,i=t.offsetY,n=this.group.transformCoordToLocal(e,i);if(function(t,e,i){if(t._brushType&&!function(t,e,i){var n=t._zr;return e<0||e>n.getWidth()||i<0||i>n.getHeight()}(t,e)){var n=t._zr,o=t._covers,a=Pb(t,e,i);if(!t._dragging)for(var r=0;r<o.length;r++){var s=o[r].__brushOption;if(a&&(!0===a||s.panelId===a.panelId)&&Qb[s.brushType].contain(o[r],i[0],i[1]))return}a&&n.setCursorStyle("crosshair")}}(this,t,n),this._dragging){Yb(t);var o=qb(this,t,n,!1);o&&Eb(this,o)}},mouseup:function(t){Jb(this,t)}};function Jb(t,e){if(t._dragging){Yb(e);var i=e.offsetX,n=e.offsetY,o=t.group.transformCoordToLocal(i,n),a=qb(t,e,o,!0);t._dragging=!1,t._track=[],t._creatingCover=null,a&&Eb(t,a)}}var Qb={lineX:tS(0),lineY:tS(1),rect:{createCover:function(t,e){return zb(cb(Hb,function(t){return t},function(t){return t}),t,e,["w","e","n","s","se","sw","ne","nw"])},getCreatingRange:function(t){var e=Rb(t);return Wb(e[1][0],e[1][1],e[0][0],e[0][1])},updateCoverShape:function(t,e,i,n){Bb(t,e,i,n)},updateCommon:Vb,contain:jb},polygon:{createCover:function(t,e){var i=new Ci;return i.add(new ts({name:"main",style:Fb(e),silent:!0})),i},getCreatingRange:function(t){return t},endCreating:function(t,e){e.remove(e.childAt(0)),e.add(new Qr({name:"main",draggable:!0,drift:cb(Zb,t,e),ondragend:cb(Eb,t,{isEnd:!0})}))},updateCoverShape:function(t,e,i,n){e.childAt(0).setShape({points:Xb(t,e,i)})},updateCommon:Vb,contain:jb}};function tS(l){return{createCover:function(t,e){return zb(cb(Hb,function(t){var e=[t,[0,100]];return l&&e.reverse(),e},function(t){return t[l]}),t,e,[["w","e"],["n","s"]][l])},getCreatingRange:function(t){var e=Rb(t);return[pb(e[0][l],e[1][l]),gb(e[0][l],e[1][l])]},updateCoverShape:function(t,e,i,n){var o,a=Nb(t,e);if(!0!==a&&a.getLinearBrushOtherExtent)o=a.getLinearBrushOtherExtent(l,t._transform);else{var r=t._zr;o=[0,[r.getWidth(),r.getHeight()][1-l]]}var s=[i,o];l&&s.reverse(),Bb(t,e,s,n)},updateCommon:Vb,contain:jb}}function eS(i){return i=oS(i),function(t,e){return vl(t,i)}}function iS(o,a){return o=oS(o),function(t){var e=null!=a?a:t,i=e?o.width:o.height,n=e?o.x:o.y;return[n,n+(i||0)]}}function nS(n,o,a){return n=oS(n),function(t,e,i){return n.contain(e[0],e[1])&&!$y(t,o,a)}}function oS(t){return Di.create(t)}var aS=["axisLine","axisTickLabel","axisName"],rS=Af({type:"parallelAxis",init:function(t,e){rS.superApply(this,"init",arguments),(this._brushController=new Ib(e.getZr())).on("brush",A(this._onBrush,this))},render:function(t,e,i,n){if(!function(t,e,i){return i&&"axisAreaSelect"===i.type&&e.findComponents({mainType:"parallelAxis",query:i})[0]===t}(t,e,n)){this.axisModel=t,this.api=i,this.group.removeAll();var o=this._axisGroup;if(this._axisGroup=new Ci,this.group.add(this._axisGroup),t.get("show")){var a=function(t,e){return e.getComponent("parallel",t.get("parallelIndex"))}(t,e),r=a.coordinateSystem,s=t.getAreaSelectStyle(),l=s.width,u=t.axis.dim,h=P({strokeContainThreshold:l},r.getAxisLayout(u)),c=new Qm(t,h);E(aS,c.add,c),this._axisGroup.add(c.getGroup()),this._refreshBrushController(h,s,t,a,l,i);var d=n&&!1===n.animation?null:t;ml(o,this._axisGroup,d)}}},_refreshBrushController:function(t,e,i,n,o,a){var r=i.axis.getExtent(),s=r[1]-r[0],l=Math.min(30,.1*Math.abs(s)),u=Di.create({x:r[0],y:-o/2,width:s,height:o});u.x-=l,u.width+=2*l,this._brushController.mount({enableGlobalPan:!0,rotation:t.rotation,position:t.position}).setPanels([{panelId:"pl",clipPath:eS(u),isTargetByCursor:nS(u,a,n),getLinearBrushOtherExtent:iS(u,0)}]).enableBrush({brushType:"lineX",brushStyle:e,removeOnClick:!0}).updateCovers(function(t){var e=t.axis;return O(t.activeIntervals,function(t){return{brushType:"lineX",panelId:"pl",range:[e.dataToCoord(t[0],!0),e.dataToCoord(t[1],!0)]}})}(i))},_onBrush:function(t,e){var i=this.axisModel,n=i.axis,o=O(t,function(t){return[n.coordToData(t.range[0],!0),n.coordToData(t.range[1],!0)]});!i.option.realtime!==e.isEnd&&!e.removeOnClick||this.api.dispatchAction({type:"axisAreaSelect",parallelAxisId:i.id,intervals:o})},dispose:function(){this._brushController.dispose()}});Af({type:"parallel",render:function(t,e,i){this._model=t,this._api=i,this._handlers||(this._handlers={},E(sS,function(t,e){i.getZr().on(e,this._handlers[e]=A(t,this))},this)),kc(this,"_throttledDispatchExpand",t.get("axisExpandRate"),"fixRate")},dispose:function(t,i){E(this._handlers,function(t,e){i.getZr().off(e,t)}),this._handlers=null},_throttledDispatchExpand:function(t){this._dispatchExpand(t)},_dispatchExpand:function(t){t&&this._api.dispatchAction(P({type:"parallelAxisExpand"},t))}});var sS={mousedown:function(t){lS(this,"click")&&(this._mouseDownPoint=[t.offsetX,t.offsetY])},mouseup:function(t){var e=this._mouseDownPoint;if(lS(this,"click")&&e){var i=[t.offsetX,t.offsetY];if(5<Math.pow(e[0]-i[0],2)+Math.pow(e[1]-i[1],2))return;var n=this._model.coordinateSystem.getSlidedAxisExpandWindow([t.offsetX,t.offsetY]);"none"!==n.behavior&&this._dispatchExpand({axisExpandWindow:n.axisExpandWindow})}this._mouseDownPoint=null},mousemove:function(t){if(!this._mouseDownPoint&&lS(this,"mousemove")){var e=this._model,i=e.coordinateSystem.getSlidedAxisExpandWindow([t.offsetX,t.offsetY]),n=i.behavior;"jump"===n&&this._throttledDispatchExpand.debounceNextCall(e.get("axisExpandDebounce")),this._throttledDispatchExpand("none"===n?null:{axisExpandWindow:i.axisExpandWindow,animation:"jump"===n&&null})}}};function lS(t,e){var i=t._model;return i.get("axisExpandable")&&i.get("axisExpandTriggerOn")===e}yf(function(t){!function(t){if(t.parallel)return;var e=!1;E(t.series,function(t){t&&"parallel"===t.type&&(e=!0)}),e&&(t.parallel=[{}])}(t),function(n){E(Vo(n.parallelAxis),function(t){if(z(t)){var e=t.parallelIndex||0,i=Vo(n.parallel)[e];i&&i.parallelAxisDefault&&m(t,i.parallelAxisDefault,!1)}})}(t)}),sc.extend({type:"series.parallel",dependencies:["parallel"],visualColorAccessPath:"lineStyle.color",getInitialData:function(t,e){var i=this.getSource();return function(t,e){if(t.encodeDefine)return;var i=e.ecModel.getComponent("parallel",e.get("parallelIndex"));if(!i)return;var n=t.encodeDefine=Q();E(i.dimensions,function(t){var e=function(t){return+t.replace("dim","")}(t);n.set(t,e)})}(i,this),gp(i,this)},getRawIndicesByActiveState:function(i){var t=this.coordinateSystem,n=this.getData(),o=[];return t.eachActiveState(n,function(t,e){i===t&&o.push(n.getRawIndex(e))}),o},defaultOption:{zlevel:0,z:2,coordinateSystem:"parallel",parallelIndex:0,label:{show:!1},inactiveOpacity:.05,activeOpacity:1,lineStyle:{width:1,opacity:.45,type:"solid"},emphasis:{label:{show:!1}},progressive:500,smooth:!1,animationEasing:"linear"}});_c.extend({type:"parallel",init:function(){this._dataGroup=new Ci,this.group.add(this._dataGroup),this._data,this._initialized},render:function(a,t,e,r){var i=this._dataGroup,s=a.getData(),l=this._data,u=a.coordinateSystem,h=u.dimensions,c=cS(a);if(s.diff(l).add(function(t){dS(hS(s,i,t,h,u),s,t,c)}).update(function(t,e){var i=l.getItemGraphicEl(e),n=uS(s,t,h,u);s.setItemGraphicEl(t,i);var o=r&&!1===r.animation?null:a;cl(i,{shape:{points:n}},o,t),dS(i,s,t,c)}).remove(function(t){var e=l.getItemGraphicEl(t);i.remove(e)}).execute(),!this._initialized){this._initialized=!0;var n=function(t,e,i){var n=t.model,o=t.getRect(),a=new rs({shape:{x:o.x,y:o.y,width:o.width,height:o.height}}),r="horizontal"===n.get("layout")?"width":"height";return a.setShape(r,0),dl(a,{shape:{width:o.width,height:o.height}},e,i),a}(u,a,function(){setTimeout(function(){i.removeClipPath()})});i.setClipPath(n)}this._data=s},incrementalPrepareRender:function(t,e,i){this._initialized=!0,this._data=null,this._dataGroup.removeAll()},incrementalRender:function(t,e,i){for(var n=e.getData(),o=e.coordinateSystem,a=o.dimensions,r=cS(e),s=t.start;s<t.end;s++){var l=hS(n,this._dataGroup,s,a,o);l.incremental=!0,dS(l,n,s,r)}},dispose:function(){},remove:function(){this._dataGroup&&this._dataGroup.removeAll(),this._data=null}});function uS(t,e,i,n){for(var o,a=[],r=0;r<i.length;r++){var s=i[r],l=t.get(t.mapDimension(s),e);o=l,("category"===n.getAxis(s).type?null==o:null==o||isNaN(o))||a.push(n.dataToPoint(l,s))}return a}function hS(t,e,i,n,o){var a=uS(t,i,n,o),r=new ts({shape:{points:a},silent:!0,z2:10});return e.add(r),t.setItemGraphicEl(i,r),r}function cS(t){var e=t.get("smooth",!0);return!0===e&&(e=.3),{lineStyle:t.getModel("lineStyle").getLineStyle(),smooth:null!=e?e:.3}}function dS(t,e,i,n){var o=n.lineStyle;e.hasItemOption&&(o=e.getItemModel(i).getModel("lineStyle").getLineStyle());t.useStyle(o);var a=t.style;a.fill=null,a.stroke=e.getItemVisual(i,"color"),a.opacity=e.getItemVisual(i,"opacity"),n.smooth&&(t.shape.smooth=n.smooth)}var fS=["lineStyle","normal","opacity"];Sf({seriesType:"parallel",reset:function(t,e,i){var n=t.getModel("itemStyle"),o=t.getModel("lineStyle"),a=e.get("color"),r=o.get("color")||n.get("color")||a[t.seriesIndex%a.length],s=t.get("inactiveOpacity"),l=t.get("activeOpacity"),u=t.getModel("lineStyle").getLineStyle(),h=t.coordinateSystem,c=t.getData(),d={normal:u.opacity,active:l,inactive:s};return c.setVisual("color",r),{progress:function(t,o){h.eachActiveState(o,function(t,e){var i=d[t];if("normal"===t&&o.hasItemOption){var n=o.getItemModel(e).get(fS,!0);null!=n&&(i=n)}o.setItemVisual(e,"opacity",i)},t.start,t.end)}}}});var pS=sc.extend({type:"series.sankey",layoutInfo:null,levelModels:null,getInitialData:function(t,e){for(var i=t.edges||t.links,n=t.data||t.nodes,o=t.levels,a=this.levelModels={},r=0;r<o.length;r++)null!=o[r].depth&&0<=o[r].depth&&(a[o[r].depth]=new Cl(o[r],this,e));if(n&&i)return iw(n,i,this,!0,function(t,e){t.wrapMethod("getItemModel",function(t,n){return t.customizeGetParent(function(t){var e=this.parentModel,i=e.getData().getItemLayout(n).depth;return e.levelModels[i]||this.parentModel}),t}),e.wrapMethod("getItemModel",function(t,n){return t.customizeGetParent(function(t){var e=this.parentModel,i=e.getGraph().getEdgeByIndex(n).node1.getLayout().depth;return e.levelModels[i]||this.parentModel}),t})}).data},setNodePosition:function(t,e){var i=this.option.data[t];i.localX=e[0],i.localY=e[1]},getGraph:function(){return this.getData().graph},getEdgeData:function(){return this.getGraph().edgeData},formatTooltip:function(t,e,i){if("edge"===i){var n=this.getDataParams(t,i),o=n.data,a=o.source+" -- "+o.target;return n.value&&(a+=" : "+n.value),au(a)}if("node"!==i)return pS.superCall(this,"formatTooltip",t,e);var r=this.getGraph().getNodeByIndex(t).getLayout().value,s=this.getDataParams(t,i).data.name;if(r)a=s+" : "+r;return au(a)},optionUpdated:function(){var t=this.option;!0===t.focusNodeAdjacency&&(t.focusNodeAdjacency="allEdges")},getDataParams:function(t,e){var i=pS.superCall(this,"getDataParams",t,e);if(null==i.value&&"node"===e){var n=this.getGraph().getNodeByIndex(t).getLayout().value;i.value=n}return i},defaultOption:{zlevel:0,z:2,coordinateSystem:"view",layout:null,left:"5%",top:"5%",right:"20%",bottom:"5%",orient:"horizontal",nodeWidth:20,nodeGap:8,draggable:!0,focusNodeAdjacency:!1,layoutIterations:32,label:{show:!0,position:"right",color:"#000",fontSize:12},levels:[],nodeAlign:"justify",itemStyle:{borderWidth:1,borderColor:"#333"},lineStyle:{color:"#314656",opacity:.2,curveness:.5},emphasis:{label:{show:!0},lineStyle:{opacity:.5}},animationEasing:"linear",animationDuration:1e3}}),gS=["itemStyle","opacity"],mS=["emphasis","itemStyle","opacity"],vS=["lineStyle","opacity"],yS=["emphasis","lineStyle","opacity"];function xS(t,e){return t.getVisual("opacity")||t.getModel().get(e)}function _S(t,e,i){var n=t.getGraphicEl(),o=xS(t,e);null!=i&&(null==o&&(o=1),o*=i),n.downplay&&n.downplay(),n.traverse(function(t){"group"!==t.type&&t.setStyle("opacity",o)})}function wS(t,e){var i=xS(t,e),n=t.getGraphicEl();n.traverse(function(t){"group"!==t.type&&t.setStyle("opacity",i)}),n.highlight&&n.highlight()}var bS=Cs({shape:{x1:0,y1:0,x2:0,y2:0,cpx1:0,cpy1:0,cpx2:0,cpy2:0,extent:0,orient:""},buildPath:function(t,e){var i=e.extent;t.moveTo(e.x1,e.y1),t.bezierCurveTo(e.cpx1,e.cpy1,e.cpx2,e.cpy2,e.x2,e.y2),"vertical"===e.orient?(t.lineTo(e.x2+i,e.y2),t.bezierCurveTo(e.cpx2+i,e.cpy2,e.cpx1+i,e.cpy1,e.x1+i,e.y1)):(t.lineTo(e.x2,e.y2+i),t.bezierCurveTo(e.cpx2,e.cpy2+i,e.cpx1,e.cpy1+i,e.x1,e.y1+i)),t.closePath()},highlight:function(){this.trigger("emphasis")},downplay:function(){this.trigger("normal")}});Cf({type:"sankey",_model:null,_focusAdjacencyDisabled:!1,render:function(w,t,n){var o=this,e=w.getGraph(),b=this.group,i=w.layoutInfo,S=i.width,M=i.height,u=w.getData(),I=w.getData("edge"),T=w.get("orient");this._model=w,b.removeAll(),b.attr("position",[i.x,i.y]),e.eachEdge(function(t){var e=new bS;e.dataIndex=t.dataIndex,e.seriesIndex=w.seriesIndex,e.dataType="edge";var i,n,o,a,r,s,l,u,h=t.getModel("lineStyle"),c=h.get("curveness"),d=t.node1.getLayout(),f=t.node1.getModel(),p=f.get("localX"),g=f.get("localY"),m=t.node2.getLayout(),v=t.node2.getModel(),y=v.get("localX"),x=v.get("localY"),_=t.getLayout();switch(e.shape.extent=Math.max(1,_.dy),u="vertical"===(e.shape.orient=T)?(i=(null!=p?p*S:d.x)+_.sy,n=(null!=g?g*M:d.y)+d.dy,o=(null!=y?y*S:m.x)+_.ty,r=i,s=n*(1-c)+(a=null!=x?x*M:m.y)*c,l=o,n*c+a*(1-c)):(i=(null!=p?p*S:d.x)+d.dx,n=(null!=g?g*M:d.y)+_.sy,r=i*(1-c)+(o=null!=y?y*S:m.x)*c,s=n,l=i*c+o*(1-c),a=(null!=x?x*M:m.y)+_.ty),e.setShape({x1:i,y1:n,x2:o,y2:a,cpx1:r,cpy1:s,cpx2:l,cpy2:u}),e.setStyle(h.getItemStyle()),e.style.fill){case"source":e.style.fill=t.node1.getVisual("color");break;case"target":e.style.fill=t.node2.getVisual("color")}$s(e,t.getModel("emphasis.lineStyle").getItemStyle()),b.add(e),I.setItemGraphicEl(t.dataIndex,e)}),e.eachNode(function(t){var e=t.getLayout(),i=t.getModel(),n=i.get("localX"),o=i.get("localY"),a=i.getModel("label"),r=i.getModel("emphasis.label"),s=new rs({shape:{x:null!=n?n*S:e.x,y:null!=o?o*M:e.y,width:e.dx,height:e.dy},style:i.getModel("itemStyle").getItemStyle()}),l=t.getModel("emphasis.itemStyle").getItemStyle();el(s.style,l,a,r,{labelFetcher:w,labelDataIndex:t.dataIndex,defaultText:t.id,isRectText:!0}),s.setStyle("fill",t.getVisual("color")),$s(s,l),b.add(s),u.setItemGraphicEl(t.dataIndex,s),s.dataType="node"}),u.eachItemGraphicEl(function(t,i){var e=u.getItemModel(i);e.get("draggable")&&(t.drift=function(t,e){o._focusAdjacencyDisabled=!0,this.shape.x+=t,this.shape.y+=e,this.dirty(),n.dispatchAction({type:"dragNode",seriesId:w.id,dataIndex:u.getRawIndex(i),localX:this.shape.x/S,localY:this.shape.y/M})},t.ondragend=function(){o._focusAdjacencyDisabled=!1},t.draggable=!0,t.cursor="move"),t.highlight=function(){this.trigger("emphasis")},t.downplay=function(){this.trigger("normal")},t.focusNodeAdjHandler&&t.off("mouseover",t.focusNodeAdjHandler),t.unfocusNodeAdjHandler&&t.off("mouseout",t.unfocusNodeAdjHandler),e.get("focusNodeAdjacency")&&(t.on("mouseover",t.focusNodeAdjHandler=function(){o._focusAdjacencyDisabled||(o._clearTimer(),n.dispatchAction({type:"focusNodeAdjacency",seriesId:w.id,dataIndex:t.dataIndex}))}),t.on("mouseout",t.unfocusNodeAdjHandler=function(){o._focusAdjacencyDisabled||o._dispatchUnfocus(n)}))}),I.eachItemGraphicEl(function(t,e){var i=I.getItemModel(e);t.focusNodeAdjHandler&&t.off("mouseover",t.focusNodeAdjHandler),t.unfocusNodeAdjHandler&&t.off("mouseout",t.unfocusNodeAdjHandler),i.get("focusNodeAdjacency")&&(t.on("mouseover",t.focusNodeAdjHandler=function(){o._focusAdjacencyDisabled||(o._clearTimer(),n.dispatchAction({type:"focusNodeAdjacency",seriesId:w.id,edgeDataIndex:t.dataIndex}))}),t.on("mouseout",t.unfocusNodeAdjHandler=function(){o._focusAdjacencyDisabled||o._dispatchUnfocus(n)}))}),!this._data&&w.get("animation")&&b.setClipPath(function(t,e,i){var n=new rs({shape:{x:t.x-10,y:t.y-10,width:0,height:t.height+20}});return dl(n,{shape:{width:t.width+20}},e,i),n}(b.getBoundingRect(),w,function(){b.removeClipPath()})),this._data=w.getData()},dispose:function(){this._clearTimer()},_dispatchUnfocus:function(t){var e=this;this._clearTimer(),this._unfocusDelayTimer=setTimeout(function(){e._unfocusDelayTimer=null,t.dispatchAction({type:"unfocusNodeAdjacency",seriesId:e._model.id})},500)},_clearTimer:function(){this._unfocusDelayTimer&&(clearTimeout(this._unfocusDelayTimer),this._unfocusDelayTimer=null)},focusNodeAdjacency:function(t,e,i,n){var o=t.getData(),a=o.graph,r=n.dataIndex,s=o.getItemModel(r),l=n.edgeDataIndex;if(null!=r||null!=l){var u=a.getNodeByIndex(r),h=a.getEdgeByIndex(l);if(a.eachNode(function(t){_S(t,gS,.1)}),a.eachEdge(function(t){_S(t,vS,.1)}),u){wS(u,mS);var c=s.get("focusNodeAdjacency");"outEdges"===c?E(u.outEdges,function(t){t.dataIndex<0||(wS(t,yS),wS(t.node2,mS))}):"inEdges"===c?E(u.inEdges,function(t){t.dataIndex<0||(wS(t,yS),wS(t.node1,mS))}):"allEdges"===c&&E(u.edges,function(t){t.dataIndex<0||(wS(t,yS),t.node1!==u&&wS(t.node1,mS),t.node2!==u&&wS(t.node2,mS))})}h&&(wS(h,yS),wS(h.node1,mS),wS(h.node2,mS))}},unfocusNodeAdjacency:function(t,e,i,n){var o=t.getGraph();o.eachNode(function(t){_S(t,gS)}),o.eachEdge(function(t){_S(t,vS)})}}),_f({type:"dragNode",event:"dragnode",update:"update"},function(e,t){t.eachComponent({mainType:"series",subType:"sankey",query:e},function(t){t.setNodePosition(e.dataIndex,[e.localX,e.localY])})});function SS(t){var e=t.hostGraph.data.getRawDataItem(t.dataIndex);return null!=e.depth&&0<=e.depth}function MS(t,l,u,h,c){var d="vertical"===c?"x":"y";E(t,function(t){var e,i,n;t.sort(function(t,e){return t.getLayout()[d]-e.getLayout()[d]});for(var o=0,a=t.length,r="vertical"===c?"dx":"dy",s=0;s<a;s++)0<(n=o-(i=t[s]).getLayout()[d])&&(e=i.getLayout()[d]+n,"vertical"===c?i.setLayout({x:e},!0):i.setLayout({y:e},!0)),o=i.getLayout()[d]+i.getLayout()[r]+l;if(0<(n=o-l-("vertical"===c?h:u)))for(e=i.getLayout()[d]-n,"vertical"===c?i.setLayout({x:e},!0):i.setLayout({y:e},!0),o=e,s=a-2;0<=s;--s)0<(n=(i=t[s]).getLayout()[d]+i.getLayout()[r]+l-o)&&(e=i.getLayout()[d]-n,"vertical"===c?i.setLayout({x:e},!0):i.setLayout({y:e},!0)),o=i.getLayout()[d]})}function IS(t,a,r){E(t.slice().reverse(),function(t){E(t,function(t){if(t.outEdges.length){var e=PS(t.outEdges,TS,r)/PS(t.outEdges,kS,r);if(isNaN(e)){var i=t.outEdges.length;e=i?PS(t.outEdges,AS,r)/i:0}if("vertical"===r){var n=t.getLayout().x+(e-LS(t,r))*a;t.setLayout({x:n},!0)}else{var o=t.getLayout().y+(e-LS(t,r))*a;t.setLayout({y:o},!0)}}})})}function TS(t,e){return LS(t.node2,e)*t.getValue()}function AS(t,e){return LS(t.node2,e)}function DS(t,e){return LS(t.node1,e)*t.getValue()}function CS(t,e){return LS(t.node1,e)}function LS(t,e){return"vertical"===e?t.getLayout().x+t.getLayout().dx/2:t.getLayout().y+t.getLayout().dy/2}function kS(t){return t.getValue()}function PS(t,e,i){for(var n=0,o=t.length,a=-1;++a<o;){var r=+e.call(t,t[a],i);isNaN(r)||(n+=r)}return n}function NS(t,a,r){E(t,function(t){E(t,function(t){if(t.inEdges.length){var e=PS(t.inEdges,DS,r)/PS(t.inEdges,kS,r);if(isNaN(e)){var i=t.inEdges.length;e=i?PS(t.inEdges,CS,r)/i:0}if("vertical"===r){var n=t.getLayout().x+(e-LS(t,r))*a;t.setLayout({x:n},!0)}else{var o=t.getLayout().y+(e-LS(t,r))*a;t.setLayout({y:o},!0)}}})})}bf(function(t,u,e){t.eachSeriesByType("sankey",function(t){var e=t.get("nodeWidth"),i=t.get("nodeGap"),n=function(t,e){return bu(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}(t,u),o=(t.layoutInfo=n).width,a=n.height,r=t.getGraph(),s=r.nodes,l=r.edges;!function(t){E(t,function(t){var e=PS(t.outEdges,kS),i=PS(t.inEdges,kS),n=t.getValue()||0,o=Math.max(e,i,n);t.setLayout({value:o},!0)})}(s),function(t,e,i,n,o,a,r,s,l){(function(t,e,i,n,o,a,r){for(var s=[],l=[],u=[],h=[],c=0,d=0;d<e.length;d++)s[d]=1;for(d=0;d<t.length;d++)l[d]=t[d].inEdges.length,0===l[d]&&u.push(t[d]);var f=-1;for(;u.length;){for(var p=0;p<u.length;p++){var g=u[p],m=g.hostGraph.data.getRawDataItem(g.dataIndex),v=null!=m.depth&&0<=m.depth;v&&m.depth>f&&(f=m.depth),g.setLayout({depth:v?m.depth:c},!0),"vertical"===a?g.setLayout({dy:i},!0):g.setLayout({dx:i},!0);for(var y=0;y<g.outEdges.length;y++){var x=g.outEdges[y],_=e.indexOf(x);s[_]=0;var w=x.node2,b=t.indexOf(w);0==--l[b]&&h.indexOf(w)<0&&h.push(w)}}++c,u=h,h=[]}for(d=0;d<s.length;d++)if(1===s[d])throw new Error("Sankey is a DAG, the original data has cycle!");var S=c-1<f?f:c-1;r&&"left"!==r&&function(t,e,i,n){if("right"===e){for(var o=[],a=t,r=0;a.length;){for(var s=0;s<a.length;s++){var l=a[s];l.setLayout({skNodeHeight:r},!0);for(var u=0;u<l.inEdges.length;u++){var h=l.inEdges[u];o.indexOf(h.node1)<0&&o.push(h.node1)}}a=o,o=[],++r}E(t,function(t){SS(t)||t.setLayout({depth:Math.max(0,n-t.getLayout().skNodeHeight)},!0)})}else"justify"===e&&function(t,e){E(t,function(t){SS(t)||t.outEdges.length||t.setLayout({depth:e},!0)})}(t,n)}(t,r,0,S);!function(t,i,n){E(t,function(t){var e=t.getLayout().depth*i;"vertical"===n?t.setLayout({y:e},!0):t.setLayout({x:e},!0)})}(t,"vertical"===a?(o-i)/S:(n-i)/S,a)})(t,e,i,o,a,s,l),function(t,e,i,n,o,a,r){var s=function(t,e){var i=[],n="vertical"===e?"y":"x",o=ta(t,function(t){return t.getLayout()[n]});return o.keys.sort(function(t,e){return t-e}),E(o.keys,function(t){i.push(o.buckets.get(t))}),i}(t,r);(function(t,e,o,a,r,s){var l=1/0;E(t,function(t){var e=t.length,i=0;E(t,function(t){i+=t.getLayout().value});var n="vertical"===s?(a-(e-1)*r)/i:(o-(e-1)*r)/i;n<l&&(l=n)}),E(t,function(t){E(t,function(t,e){var i=t.getLayout().value*l;"vertical"===s?(t.setLayout({x:e},!0),t.setLayout({dx:i},!0)):(t.setLayout({y:e},!0),t.setLayout({dy:i},!0))})}),E(e,function(t){var e=+t.getValue()*l;t.setLayout({dy:e},!0)})})(s,e,i,n,o,r),MS(s,o,i,n,r);for(var l=1;0<a;a--)IS(s,l*=.99,r),MS(s,o,i,n,r),NS(s,l,r),MS(s,o,i,n,r)}(t,e,a,o,n,r,s),function(t,e){var i="vertical"===e?"x":"y";E(t,function(t){t.outEdges.sort(function(t,e){return t.node2.getLayout()[i]-e.node2.getLayout()[i]}),t.inEdges.sort(function(t,e){return t.node1.getLayout()[i]-e.node1.getLayout()[i]})}),E(t,function(t){var e=0,i=0;E(t.outEdges,function(t){t.setLayout({sy:e},!0),e+=t.getLayout().dy}),E(t.inEdges,function(t){t.setLayout({ty:i},!0),i+=t.getLayout().dy})})}(t,s)}(s,l,e,i,o,a,0!==M(s,function(t){return 0===t.getLayout().value}).length?0:t.get("layoutIterations"),t.get("orient"),t.get("nodeAlign"))})}),Sf(function(t,e){t.eachSeriesByType("sankey",function(n){var t=n.getGraph().nodes;if(t.length){var o=1/0,a=-1/0;E(t,function(t){var e=t.getLayout().value;e<o&&(o=e),a<e&&(a=e)}),E(t,function(t){var e=new g_({type:"color",mappingMethod:"linear",dataExtent:[o,a],visual:n.get("color")}).mapValueToVisual(t.getLayout().value),i=t.getModel().get("itemStyle.color");null!=i?t.setVisual("color",i):t.setVisual("color",e)})}})});var OS={_baseAxisDim:null,getInitialData:function(t,e){var i,n,o=e.getComponent("xAxis",this.get("xAxisIndex")),a=e.getComponent("yAxis",this.get("yAxisIndex")),r=o.get("type"),s=a.get("type");"category"===r?(t.layout="horizontal",i=o.getOrdinalMeta(),n=!0):"category"===s?(t.layout="vertical",i=a.getOrdinalMeta(),n=!0):t.layout=t.layout||"horizontal";var l=["x","y"],u="horizontal"===t.layout?0:1,h=this._baseAxisDim=l[u],c=l[1-u],d=[o,a],f=d[u].get("type"),p=d[1-u].get("type"),g=t.data;if(g&&n){var m=[];E(g,function(t,e){var i;t.value&&L(t.value)?(i=t.value.slice(),t.value.unshift(e)):L(t)?(i=t.slice(),t.unshift(e)):i=t,m.push(i)}),t.data=m}var v=this.defaultValueDimensions,y=[{name:h,type:Ef(f),ordinalMeta:i,otherDims:{tooltip:!1,itemName:0},dimsDef:["base"]},{name:c,type:Ef(p),dimsDef:v.slice()}];return Yv(this,{coordDimensions:y,dimensionsCount:v.length+1,encodeDefaulter:T($u,y,this)})},getBaseAxis:function(){var t=this._baseAxisDim;return this.ecModel.getComponent(t+"Axis",this.get(t+"AxisIndex")).axis}};b(sc.extend({type:"series.boxplot",dependencies:["xAxis","yAxis","grid"],defaultValueDimensions:[{name:"min",defaultTooltip:!0},{name:"Q1",defaultTooltip:!0},{name:"median",defaultTooltip:!0},{name:"Q3",defaultTooltip:!0},{name:"max",defaultTooltip:!0}],dimensions:null,defaultOption:{zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,hoverAnimation:!0,layout:null,boxWidth:[7,50],itemStyle:{color:"#fff",borderWidth:1},emphasis:{itemStyle:{borderWidth:2,shadowBlur:5,shadowOffsetX:2,shadowOffsetY:2,shadowColor:"rgba(0,0,0,0.4)"}},animationEasing:"elasticOut",animationDuration:800}}),OS,!0);var ES=["itemStyle"],RS=["emphasis","itemStyle"],zS=(_c.extend({type:"boxplot",render:function(t,e,i){var o=t.getData(),a=this.group,r=this._data;this._data||a.removeAll();var s="horizontal"===t.get("layout")?1:0;o.diff(r).add(function(t){if(o.hasValue(t)){var e=BS(o.getItemLayout(t),o,t,s,!0);o.setItemGraphicEl(t,e),a.add(e)}}).update(function(t,e){var i=r.getItemGraphicEl(e);if(o.hasValue(t)){var n=o.getItemLayout(t);i?VS(n,i,o,t):i=BS(n,o,t,s),a.add(i),o.setItemGraphicEl(t,i)}else a.remove(i)}).remove(function(t){var e=r.getItemGraphicEl(t);e&&a.remove(e)}).execute(),this._data=o},remove:function(t){var e=this.group,i=this._data;this._data=null,i&&i.eachItemGraphicEl(function(t){t&&e.remove(t)})},dispose:et}),Ar.extend({type:"boxplotBoxPath",shape:{},buildPath:function(t,e){var i=e.points,n=0;for(t.moveTo(i[n][0],i[n][1]),n++;n<4;n++)t.lineTo(i[n][0],i[n][1]);for(t.closePath();n<i.length;n++)t.moveTo(i[n][0],i[n][1]),n++,t.lineTo(i[n][0],i[n][1])}}));function BS(t,e,i,n,o){var a=t.ends,r=new zS({shape:{points:o?function(t,e,i){return O(t,function(t){return(t=t.slice())[e]=i.initBaseline,t})}(a,n,t):a}});return VS(t,r,e,i,o),r}function VS(t,e,i,n,o){var a=i.hostModel;(0,bl[o?"initProps":"updateProps"])(e,{shape:{points:t.ends}},a,n);var r=i.getItemModel(n),s=r.getModel(ES),l=i.getItemVisual(n,"color"),u=s.getItemStyle(["borderColor"]);u.stroke=l,u.strokeNoScale=!0,e.useStyle(u),e.z2=100,$s(e,r.getModel(RS).getItemStyle())}var GS=["itemStyle","borderColor"],FS=E;Sf(function(n,t){var o=n.get("color");n.eachRawSeriesByType("boxplot",function(t){var e=o[t.seriesIndex%o.length],i=t.getData();i.setVisual({legendSymbol:"roundRect",color:t.get(GS)||e}),n.isSeriesFiltered(t)||i.each(function(t){var e=i.getItemModel(t);i.setItemVisual(t,{color:e.get(GS,!0)})})})}),bf(function(t){var e=function(t){var n=[],o=[];return t.eachSeriesByType("boxplot",function(t){var e=t.getBaseAxis(),i=_(o,e);i<0&&(i=o.length,o[i]=e,n[i]={axis:e,seriesModels:[]}),n[i].seriesModels.push(t)}),n}(t);FS(e,function(i){var t=i.seriesModels;t.length&&(function(t){var e,i,n=t.axis,o=t.seriesModels,a=o.length,r=t.boxWidthList=[],s=t.boxOffsetList=[],l=[];if("category"===n.type)i=n.getBandWidth();else{var u=0;FS(o,function(t){u=Math.max(u,t.getData().count())}),e=n.getExtent(),Math.abs(e[1]-e[0])}FS(o,function(t){var e=t.get("boxWidth");L(e)||(e=[e,e]),l.push([Rl(e[0],i)||0,Rl(e[1],i)||0])});var h=.8*i-2,c=h/a*.3,d=(h-c*(a-1))/a,f=d/2-h/2;FS(o,function(t,e){s.push(f),f+=c+d,r.push(Math.min(Math.max(d,l[e][0]),l[e][1]))})}(i),FS(t,function(t,e){!function(t,r,e){var s=t.coordinateSystem,l=t.getData(),a=e/2,u="horizontal"===t.get("layout")?0:1,h=1-u,i=["x","y"],n=l.mapDimension(i[u]),o=l.mapDimension(i[h],!0);if(null==n||o.length<5)return;for(var c=0;c<l.count();c++){var d=l.get(n,c),f=x(d,o[2],c),p=x(d,o[0],c),g=x(d,o[1],c),m=x(d,o[3],c),v=x(d,o[4],c),y=[];_(y,g,0),_(y,m,1),y.push(p,g,v,m),w(y,p),w(y,v),w(y,f),l.setItemLayout(c,{initBaseline:f[h],ends:y})}function x(t,e,i){var n,o=l.get(e,i),a=[];return a[u]=t,a[h]=o,isNaN(t)||isNaN(o)?n=[NaN,NaN]:(n=s.dataToPoint(a))[u]+=r,n}function _(t,e,i){var n=e.slice(),o=e.slice();n[u]+=a,o[u]-=a,i?t.push(n,o):t.push(o,n)}function w(t,e){var i=e.slice(),n=e.slice();i[u]-=a,n[u]+=a,t.push(i,n)}}(t,i.boxOffsetList[e],i.boxWidthList[e])}))})}),b(sc.extend({type:"series.candlestick",dependencies:["xAxis","yAxis","grid"],defaultValueDimensions:[{name:"open",defaultTooltip:!0},{name:"close",defaultTooltip:!0},{name:"lowest",defaultTooltip:!0},{name:"highest",defaultTooltip:!0}],dimensions:null,defaultOption:{zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,hoverAnimation:!0,layout:null,clip:!0,itemStyle:{color:"#c23531",color0:"#314656",borderWidth:1,borderColor:"#c23531",borderColor0:"#314656"},emphasis:{itemStyle:{borderWidth:2}},barMaxWidth:null,barMinWidth:null,barWidth:null,large:!0,largeThreshold:600,progressive:3e3,progressiveThreshold:1e4,progressiveChunkMode:"mod",animationUpdate:!1,animationEasing:"linear",animationDuration:300},getShadowDim:function(){return"open"},brushSelector:function(t,e,i){var n=e.getItemLayout(t);return n&&i.rect(n.brushRect)}}),OS,!0);var WS=["itemStyle"],HS=["emphasis","itemStyle"],ZS=["color","color0","borderColor","borderColor0"],US=(_c.extend({type:"candlestick",render:function(t,e,i){this.group.removeClipPath(),this._updateDrawMode(t),this._isLargeDraw?this._renderLarge(t):this._renderNormal(t)},incrementalPrepareRender:function(t,e,i){this._clear(),this._updateDrawMode(t)},incrementalRender:function(t,e,i,n){this._isLargeDraw?this._incrementalRenderLarge(t,e):this._incrementalRenderNormal(t,e)},_updateDrawMode:function(t){var e=t.pipelineContext.large;(null==this._isLargeDraw||e^this._isLargeDraw)&&(this._isLargeDraw=e,this._clear())},_renderNormal:function(o){var a=o.getData(),r=this._data,s=this.group,l=a.getLayout("isSimpleBox"),u=o.get("clip",!0),t=o.coordinateSystem,h=t.getArea&&t.getArea();this._data||s.removeAll(),a.diff(r).add(function(t){if(a.hasValue(t)){var e,i=a.getItemLayout(t);if(u&&YS(h,i))return;dl(e=XS(i,t,!0),{shape:{points:i.ends}},o,t),jS(e,a,t,l),s.add(e),a.setItemGraphicEl(t,e)}}).update(function(t,e){var i=r.getItemGraphicEl(e);if(a.hasValue(t)){var n=a.getItemLayout(t);u&&YS(h,n)?s.remove(i):(i?cl(i,{shape:{points:n.ends}},o,t):i=XS(n,t),jS(i,a,t,l),s.add(i),a.setItemGraphicEl(t,i))}else s.remove(i)}).remove(function(t){var e=r.getItemGraphicEl(t);e&&s.remove(e)}).execute(),this._data=a},_renderLarge:function(t){this._clear(),KS(t,this.group);var e=t.get("clip",!0)?Sm(t.coordinateSystem,!1,t):null;e?this.group.setClipPath(e):this.group.removeClipPath()},_incrementalRenderNormal:function(t,e){for(var i,n=e.getData(),o=n.getLayout("isSimpleBox");null!=(i=t.next());){var a;jS(a=XS(n.getItemLayout(i),i),n,i,o),a.incremental=!0,this.group.add(a)}},_incrementalRenderLarge:function(t,e){KS(e,this.group,!0)},remove:function(t){this._clear()},_clear:function(){this.group.removeAll(),this._data=null},dispose:et}),Ar.extend({type:"normalCandlestickBox",shape:{},buildPath:function(t,e){var i=e.points;this.__simpleBox?(t.moveTo(i[4][0],i[4][1]),t.lineTo(i[6][0],i[6][1])):(t.moveTo(i[0][0],i[0][1]),t.lineTo(i[1][0],i[1][1]),t.lineTo(i[2][0],i[2][1]),t.lineTo(i[3][0],i[3][1]),t.closePath(),t.moveTo(i[4][0],i[4][1]),t.lineTo(i[5][0],i[5][1]),t.moveTo(i[6][0],i[6][1]),t.lineTo(i[7][0],i[7][1]))}}));function XS(t,e,i){var n=t.ends;return new US({shape:{points:i?function(t,e){return O(t,function(t){return(t=t.slice())[1]=e.initBaseline,t})}(n,t):n},z2:100})}function YS(t,e){for(var i=!0,n=0;n<e.ends.length;n++)if(t.contain(e.ends[n][0],e.ends[n][1])){i=!1;break}return i}function jS(t,e,i,n){var o=e.getItemModel(i),a=o.getModel(WS),r=e.getItemVisual(i,"color"),s=e.getItemVisual(i,"borderColor")||r,l=a.getItemStyle(ZS);t.useStyle(l),t.style.strokeNoScale=!0,t.style.fill=r,t.style.stroke=s,t.__simpleBox=n,$s(t,o.getModel(HS).getItemStyle())}var qS=Ar.extend({type:"largeCandlestickBox",shape:{},buildPath:function(t,e){for(var i=e.points,n=0;n<i.length;)if(this.__sign===i[n++]){var o=i[n++];t.moveTo(o,i[n++]),t.lineTo(o,i[n++])}else n+=3}});function KS(t,e,i){var n=t.getData(),o=n.getLayout("largePoints"),a=new qS({shape:{points:o},__sign:1});e.add(a);var r=new qS({shape:{points:o},__sign:-1});e.add(r),$S(1,a,t,n),$S(-1,r,t,n),i&&(a.incremental=!0,r.incremental=!0)}function $S(t,e,i,n){var o=0<t?"P":"N",a=n.getVisual("borderColor"+o)||n.getVisual("color"+o),r=i.getModel(WS).getItemStyle(ZS);e.useStyle(r),e.style.fill=null,e.style.stroke=a}var JS=["itemStyle","borderColor"],QS=["itemStyle","borderColor0"],tM=["itemStyle","color"],eM=["itemStyle","color0"],iM={seriesType:"candlestick",plan:vc(),performRawSeries:!0,reset:function(t,e){if(t.getData().setVisual({legendSymbol:"roundRect",colorP:a(1,t),colorN:a(-1,t),borderColorP:r(1,t),borderColorN:r(-1,t)}),!e.isSeriesFiltered(t))return!t.pipelineContext.large&&{progress:function(t,e){var i;for(;null!=(i=t.next());){var n=e.getItemModel(i),o=e.getItemLayout(i).sign;e.setItemVisual(i,{color:a(o,n),borderColor:r(o,n)})}}};function a(t,e){return e.get(0<t?tM:eM)}function r(t,e){return e.get(0<t?JS:QS)}}},nM="undefined"!=typeof Float32Array?Float32Array:Array,oM={seriesType:"candlestick",plan:vc(),reset:function(t){var x=t.coordinateSystem,e=t.getData(),_=function(t,e){var i,n=t.getBaseAxis(),o="category"===n.type?n.getBandWidth():(i=n.getExtent(),Math.abs(i[1]-i[0])/e.count()),a=Rl(H(t.get("barMaxWidth"),o),o),r=Rl(H(t.get("barMinWidth"),1),o),s=t.get("barWidth");return null!=s?Rl(s,o):Math.max(Math.min(o/2,a),r)}(t,e),i=["x","y"],w=e.mapDimension(i[0]),n=e.mapDimension(i[1],!0),b=n[0],S=n[1],M=n[2],I=n[3];if(e.setLayout({candleWidth:_,isSimpleBox:_<=1.3}),!(null==w||n.length<4))return{progress:t.pipelineContext.large?function(t,e){var i,n,o=new nM(4*t.count),a=0,r=[],s=[];for(;null!=(n=t.next());){var l=e.get(w,n),u=e.get(b,n),h=e.get(S,n),c=e.get(M,n),d=e.get(I,n);isNaN(l)||isNaN(c)||isNaN(d)?(o[a++]=NaN,a+=3):(o[a++]=aM(e,n,u,h,S),r[0]=l,r[1]=c,i=x.dataToPoint(r,null,s),o[a++]=i?i[0]:NaN,o[a++]=i?i[1]:NaN,r[1]=d,i=x.dataToPoint(r,null,s),o[a++]=i?i[1]:NaN)}e.setLayout("largePoints",o)}:function(t,e){var i;for(;null!=(i=t.next());){var n=e.get(w,i),o=e.get(b,i),a=e.get(S,i),r=e.get(M,i),s=e.get(I,i),l=Math.min(o,a),u=Math.max(o,a),h=g(l,n),c=g(u,n),d=g(r,n),f=g(s,n),p=[];m(p,c,0),m(p,h,1),p.push(y(f),y(c),y(d),y(h)),e.setItemLayout(i,{sign:aM(e,i,o,a,S),initBaseline:a<o?c[1]:h[1],ends:p,brushRect:v(r,s,n)})}function g(t,e){var i=[];return i[0]=e,i[1]=t,isNaN(e)||isNaN(t)?[NaN,NaN]:x.dataToPoint(i)}function m(t,e,i){var n=e.slice(),o=e.slice();n[0]=zs(n[0]+_/2,1,!1),o[0]=zs(o[0]-_/2,1,!0),i?t.push(n,o):t.push(o,n)}function v(t,e,i){var n=g(t,i),o=g(e,i);return n[0]-=_/2,o[0]-=_/2,{x:n[0],y:n[1],width:_,height:o[1]-n[1]}}function y(t){return t[0]=zs(t[0],1),t}}}}};function aM(t,e,i,n,o){return n<i?-1:i<n?1:0<e?t.get(o,e-1)<=n?1:-1:1}yf(function(t){t&&L(t.series)&&E(t.series,function(t){z(t)&&"k"===t.type&&(t.type="candlestick")})}),Sf(iM),bf(oM),sc.extend({type:"series.effectScatter",dependencies:["grid","polar"],getInitialData:function(t,e){return gp(this.getSource(),this,{useEncodeDefaulter:!0})},brushSelector:"point",defaultOption:{coordinateSystem:"cartesian2d",zlevel:0,z:2,legendHoverLink:!0,effectType:"ripple",progressive:0,showEffectOn:"render",rippleEffect:{period:4,scale:2.5,brushType:"fill"},symbolSize:10}});function rM(t,e){var i=e.rippleEffectColor||e.color;t.eachChild(function(t){t.attr({z:e.z,zlevel:e.zlevel,style:{stroke:"stroke"===e.brushType?i:null,fill:"fill"===e.brushType?i:null}})})}function sM(t,e){Ci.call(this);var i=new Xg(t,e),n=new Ci;this.add(i),this.add(n),n.beforeUpdate=function(){this.attr(i.getScale())},this.updateData(t,e)}var lM=sM.prototype;lM.stopEffectAnimation=function(){this.childAt(1).removeAll()},lM.startEffectAnimation=function(t){for(var e=t.symbolType,i=t.color,n=this.childAt(1),o=0;o<3;o++){var a=wg(e,-1,-1,2,2,i);a.attr({style:{strokeNoScale:!0},z2:99,silent:!0,scale:[.5,.5]});var r=-o/3*t.period+t.effectOffset;a.animate("",!0).when(t.period,{scale:[t.rippleScale/2,t.rippleScale/2]}).delay(r).start(),a.animateStyle(!0).when(t.period,{opacity:0}).delay(r).start(),n.add(a)}rM(n,t)},lM.updateEffectAnimation=function(t){for(var e=this._effectCfg,i=this.childAt(1),n=["symbolType","period","rippleScale"],o=0;o<n.length;o++){var a=n[o];if(e[a]!==t[a])return this.stopEffectAnimation(),void this.startEffectAnimation(t)}rM(i,t)},lM.highlight=function(){this.trigger("emphasis")},lM.downplay=function(){this.trigger("normal")},lM.updateData=function(t,e){var i=t.hostModel;this.childAt(0).updateData(t,e);var n=this.childAt(1),o=t.getItemModel(e),a=t.getItemVisual(e,"symbol"),r=function(t){return L(t)||(t=[+t,+t]),t}(t.getItemVisual(e,"symbolSize")),s=t.getItemVisual(e,"color");n.attr("scale",r),n.traverse(function(t){t.attr({fill:s})});var l=o.getShallow("symbolOffset");if(l){var u=n.position;u[0]=Rl(l[0],r[0]),u[1]=Rl(l[1],r[1])}var h=t.getItemVisual(e,"symbolRotate");n.rotation=(h||0)*Math.PI/180||0;var c={};if(c.showEffectOn=i.get("showEffectOn"),c.rippleScale=o.get("rippleEffect.scale"),c.brushType=o.get("rippleEffect.brushType"),c.period=1e3*o.get("rippleEffect.period"),c.effectOffset=e/t.count(),c.z=o.getShallow("z")||0,c.zlevel=o.getShallow("zlevel")||0,c.symbolType=a,c.color=s,c.rippleEffectColor=o.get("rippleEffect.color"),this.off("mouseover").off("mouseout").off("emphasis").off("normal"),"render"===c.showEffectOn)this._effectCfg?this.updateEffectAnimation(c):this.startEffectAnimation(c),this._effectCfg=c;else{this._effectCfg=null,this.stopEffectAnimation();var d=this.childAt(0),f=function(){d.highlight(),"render"!==c.showEffectOn&&this.startEffectAnimation(c)},p=function(){d.downplay(),"render"!==c.showEffectOn&&this.stopEffectAnimation()};this.on("mouseover",f,this).on("mouseout",p,this).on("emphasis",f,this).on("normal",p,this)}this._effectCfg=c},lM.fadeOut=function(t){this.off("mouseover").off("mouseout").off("emphasis").off("normal"),t&&t()},w(sM,Ci),Cf({type:"effectScatter",init:function(){this._symbolDraw=new im(sM)},render:function(t,e,i){var n=t.getData(),o=this._symbolDraw;o.updateData(n),this.group.add(o.group)},updateTransform:function(t,e,i){var n=t.getData();this.group.dirty();var o=km().reset(t);o.progress&&o.progress({start:0,end:n.count()},n),this._symbolDraw.updateLayout(n)},_updateGroupTransform:function(t){var e=t.coordinateSystem;e&&e.getRoamTransform&&(this.group.transform=fe(e.getRoamTransform()),this.group.decomposeTransform())},remove:function(t,e){this._symbolDraw&&this._symbolDraw.remove(e)},dispose:function(){}}),Sf(Lm("effectScatter","circle")),bf(km("effectScatter"));var uM="undefined"==typeof Uint32Array?Array:Uint32Array,hM="undefined"==typeof Float64Array?Array:Float64Array;function cM(t){var e=t.data;e&&e[0]&&e[0][0]&&e[0][0].coord&&(t.data=O(e,function(t){var e={coords:[t[0].coord,t[1].coord]};return t[0].name&&(e.fromName=t[0].name),t[1].name&&(e.toName=t[1].name),p([e,t[0],t[1]])}))}var dM=sc.extend({type:"series.lines",dependencies:["grid","polar"],visualColorAccessPath:"lineStyle.color",init:function(t){t.data=t.data||[],cM(t);var e=this._processFlatCoordsArray(t.data);this._flatCoords=e.flatCoords,this._flatCoordsOffset=e.flatCoordsOffset,e.flatCoords&&(t.data=new Float32Array(e.count)),dM.superApply(this,"init",arguments)},mergeOption:function(t){if(t.data=t.data||[],cM(t),t.data){var e=this._processFlatCoordsArray(t.data);this._flatCoords=e.flatCoords,this._flatCoordsOffset=e.flatCoordsOffset,e.flatCoords&&(t.data=new Float32Array(e.count))}dM.superApply(this,"mergeOption",arguments)},appendData:function(t){var e=this._processFlatCoordsArray(t.data);e.flatCoords&&(this._flatCoords?(this._flatCoords=tt(this._flatCoords,e.flatCoords),this._flatCoordsOffset=tt(this._flatCoordsOffset,e.flatCoordsOffset)):(this._flatCoords=e.flatCoords,this._flatCoordsOffset=e.flatCoordsOffset),t.data=new Float32Array(e.count)),this.getRawData().appendData(t.data)},_getCoordsFromItemModel:function(t){var e=this.getData().getItemModel(t);return e.option instanceof Array?e.option:e.getShallow("coords")},getLineCoordsCount:function(t){return this._flatCoordsOffset?this._flatCoordsOffset[2*t+1]:this._getCoordsFromItemModel(t).length},getLineCoords:function(t,e){if(this._flatCoordsOffset){for(var i=this._flatCoordsOffset[2*t],n=this._flatCoordsOffset[2*t+1],o=0;o<n;o++)e[o]=e[o]||[],e[o][0]=this._flatCoords[i+2*o],e[o][1]=this._flatCoords[i+2*o+1];return n}var a=this._getCoordsFromItemModel(t);for(o=0;o<a.length;o++)e[o]=e[o]||[],e[o][0]=a[o][0],e[o][1]=a[o][1];return a.length},_processFlatCoordsArray:function(t){var e=0;if(this._flatCoords&&(e=this._flatCoords.length),"number"!=typeof t[0])return{flatCoordsOffset:null,flatCoords:null,count:t.length};for(var i=t.length,n=new uM(i),o=new hM(i),a=0,r=0,s=0,l=0;l<i;){s++;var u=t[l++];n[r++]=a+e,n[r++]=u;for(var h=0;h<u;h++){var c=t[l++],d=t[l++];o[a++]=c,o[a++]=d}}return{flatCoordsOffset:new Uint32Array(n.buffer,0,r),flatCoords:o,count:s}},getInitialData:function(t,e){var a=new Yf(["value"],this);return a.hasItemOption=!1,a.initData(t.data,[],function(t,e,i,n){if(t instanceof Array)return NaN;a.hasItemOption=!0;var o=t.value;return null!=o?o instanceof Array?o[n]:o:void 0}),a},formatTooltip:function(t){var e=this.getData().getItemModel(t),i=e.get("name");if(i)return i;var n=e.get("fromName"),o=e.get("toName"),a=[];return null!=n&&a.push(n),null!=o&&a.push(o),au(a.join(" > "))},preventIncremental:function(){return!!this.get("effect.show")},getProgressive:function(){var t=this.option.progressive;return null==t?this.option.large?1e4:this.get("progressive"):t},getProgressiveThreshold:function(){var t=this.option.progressiveThreshold;return null==t?this.option.large?2e4:this.get("progressiveThreshold"):t},defaultOption:{coordinateSystem:"geo",zlevel:0,z:2,legendHoverLink:!0,hoverAnimation:!0,xAxisIndex:0,yAxisIndex:0,symbol:["none","none"],symbolSize:[10,10],geoIndex:0,effect:{show:!1,period:4,constantSpeed:0,symbol:"circle",symbolSize:3,loop:!0,trailLength:.2},large:!1,largeThreshold:2e3,polyline:!1,clip:!0,label:{show:!1,position:"end"},lineStyle:{opacity:.5}}});function fM(t,e,i){Ci.call(this),this.add(this.createLine(t,e,i)),this._updateEffectSymbol(t,e)}var pM=fM.prototype;function gM(t,e,i){Ci.call(this),this._createPolyline(t,e,i)}pM.createLine=function(t,e,i){return new dw(t,e,i)},pM._updateEffectSymbol=function(t,e){var i=t.getItemModel(e).getModel("effect"),n=i.get("symbolSize"),o=i.get("symbol");L(n)||(n=[n,n]);var a=i.get("color")||t.getItemVisual(e,"color"),r=this.childAt(1);this._symbolType!==o&&(this.remove(r),(r=wg(o,-.5,-.5,1,1,a)).z2=100,r.culling=!0,this.add(r)),r&&(r.setStyle("shadowColor",a),r.setStyle(i.getItemStyle(["color"])),r.attr("scale",n),r.setColor(a),r.attr("scale",n),this._symbolType=o,this._symbolScale=n,this._updateEffectAnimation(t,i,e))},pM._updateEffectAnimation=function(e,t,i){var n=this.childAt(1);if(n){var o=this,a=e.getItemLayout(i),r=1e3*t.get("period"),s=t.get("loop"),l=t.get("constantSpeed"),u=W(t.get("delay"),function(t){return t/e.count()*r/3}),h="function"==typeof u;if(n.ignore=!0,this.updateAnimationPoints(n,a),0<l&&(r=this.getLineLength(n)/l*1e3),r!==this._period||s!==this._loop){n.stopAnimation();var c=u;h&&(c=u(i)),0<n.__t&&(c=-r*n.__t),n.__t=0;var d=n.animate("",s).when(r,{__t:1}).delay(c).during(function(){o.updateSymbolPosition(n)});s||d.done(function(){o.remove(n)}),d.start()}this._period=r,this._loop=s}},pM.getLineLength=function(t){return yt(t.__p1,t.__cp1)+yt(t.__cp1,t.__p2)},pM.updateAnimationPoints=function(t,e){t.__p1=e[0],t.__p2=e[1],t.__cp1=e[2]||[(e[0][0]+e[1][0])/2,(e[0][1]+e[1][1])/2]},pM.updateData=function(t,e,i){this.childAt(0).updateData(t,e,i),this._updateEffectSymbol(t,e)},pM.updateSymbolPosition=function(t){var e=t.__p1,i=t.__p2,n=t.__cp1,o=t.__t,a=t.position,r=[a[0],a[1]],s=La,l=ka;a[0]=s(e[0],n[0],i[0],o),a[1]=s(e[1],n[1],i[1],o);var u=l(e[0],n[0],i[0],o),h=l(e[1],n[1],i[1],o);if(t.rotation=-Math.atan2(h,u)-Math.PI/2,"line"===this._symbolType||"rect"===this._symbolType||"roundRect"===this._symbolType)if(void 0!==t.__lastT&&t.__lastT<t.__t){var c=1.05*yt(r,a);t.attr("scale",[t.scale[0],c]),1===o&&(a[0]=r[0]+(a[0]-r[0])/2,a[1]=r[1]+(a[1]-r[1])/2)}else if(1===t.__lastT){c=2*yt(e,a);t.attr("scale",[t.scale[0],c])}else t.attr("scale",this._symbolScale);t.__lastT=t.__t,t.ignore=!1},pM.updateLayout=function(t,e){this.childAt(0).updateLayout(t,e);var i=t.getItemModel(e).getModel("effect");this._updateEffectAnimation(t,i,e)},w(fM,Ci);var mM=gM.prototype;function vM(t,e,i){fM.call(this,t,e,i),this._lastFrame=0,this._lastFramePercent=0}mM._createPolyline=function(t,e,i){var n=t.getItemLayout(e),o=new ts({shape:{points:n}});this.add(o),this._updateCommonStl(t,e,i)},mM.updateData=function(t,e,i){var n=t.hostModel;cl(this.childAt(0),{shape:{points:t.getItemLayout(e)}},n,e),this._updateCommonStl(t,e,i)},mM._updateCommonStl=function(t,e,i){var n=this.childAt(0),o=t.getItemModel(e),a=t.getItemVisual(e,"color"),r=i&&i.lineStyle,s=i&&i.hoverLineStyle;i&&!t.hasItemOption||(r=o.getModel("lineStyle").getLineStyle(),s=o.getModel("emphasis.lineStyle").getLineStyle()),n.useStyle(D({strokeNoScale:!0,fill:"none",stroke:a},r)),n.hoverStyle=s,$s(this)},mM.updateLayout=function(t,e){this.childAt(0).setShape("points",t.getItemLayout(e))},w(gM,Ci);var yM=vM.prototype;yM.createLine=function(t,e,i){return new gM(t,e,i)},yM.updateAnimationPoints=function(t,e){this._points=e;for(var i=[0],n=0,o=1;o<e.length;o++){var a=e[o-1],r=e[o];n+=yt(a,r),i.push(n)}if(0!==n){for(o=0;o<i.length;o++)i[o]/=n;this._offsets=i,this._length=n}},yM.getLineLength=function(t){return this._length},yM.updateSymbolPosition=function(t){var e=t.__t,i=this._points,n=this._offsets,o=i.length;if(n){var a=this._lastFrame;if(e<this._lastFramePercent){for(r=Math.min(a+1,o-1);0<=r&&!(n[r]<=e);r--);r=Math.min(r,o-2)}else{for(var r=a;r<o&&!(n[r]>e);r++);r=Math.min(r-1,o-2)}wt(t.position,i[r],i[r+1],(e-n[r])/(n[r+1]-n[r]));var s=i[r+1][0]-i[r][0],l=i[r+1][1]-i[r][1];t.rotation=-Math.atan2(l,s)-Math.PI/2,this._lastFrame=r,this._lastFramePercent=e,t.ignore=!1}},w(vM,fM);var xM=Cs({shape:{polyline:!1,curveness:0,segs:[]},buildPath:function(t,e){var i=e.segs,n=e.curveness;if(e.polyline)for(var o=0;o<i.length;){var a=i[o++];if(0<a){t.moveTo(i[o++],i[o++]);for(var r=1;r<a;r++)t.lineTo(i[o++],i[o++])}}else for(o=0;o<i.length;){var s=i[o++],l=i[o++],u=i[o++],h=i[o++];if(t.moveTo(s,l),0<n){var c=(s+u)/2-(l-h)*n,d=(l+h)/2-(u-s)*n;t.quadraticCurveTo(c,d,u,h)}else t.lineTo(u,h)}},findDataIndex:function(t,e){var i=this.shape,n=i.segs,o=i.curveness;if(i.polyline)for(var a=0,r=0;r<n.length;){var s=n[r++];if(0<s)for(var l=n[r++],u=n[r++],h=1;h<s;h++){if(sr(l,u,c=n[r++],d=n[r++]))return a}a++}else for(a=0,r=0;r<n.length;){l=n[r++],u=n[r++];var c=n[r++],d=n[r++];if(0<o){if(ur(l,u,(l+c)/2-(u-d)*o,(u+d)/2-(c-l)*o,c,d))return a}else if(sr(l,u,c,d))return a;a++}return-1}});function _M(){this.group=new Ci}var wM=_M.prototype;wM.isPersistent=function(){return!this._incremental},wM.updateData=function(t){this.group.removeAll();var e=new xM({rectHover:!0,cursor:"default"});e.setShape({segs:t.getLayout("linesPoints")}),this._setCommon(e,t),this.group.add(e),this._incremental=null},wM.incrementalPrepareUpdate=function(t){this.group.removeAll(),this._clearIncremental(),5e5<t.count()?(this._incremental||(this._incremental=new vs({silent:!0})),this.group.add(this._incremental)):this._incremental=null},wM.incrementalUpdate=function(t,e){var i=new xM;i.setShape({segs:e.getLayout("linesPoints")}),this._setCommon(i,e,!!this._incremental),this._incremental?this._incremental.addDisplayable(i,!0):(i.rectHover=!0,i.cursor="default",i.__startIndex=t.start,this.group.add(i))},wM.remove=function(){this._clearIncremental(),this._incremental=null,this.group.removeAll()},wM._setCommon=function(i,t,e){var n=t.hostModel;i.setShape({polyline:n.get("polyline"),curveness:n.get("lineStyle.curveness")}),i.useStyle(n.getModel("lineStyle").getLineStyle()),i.style.strokeNoScale=!0;var o=t.getVisual("color");o&&i.setStyle("stroke",o),i.setStyle("fill"),e||(i.seriesIndex=n.seriesIndex,i.on("mousemove",function(t){i.dataIndex=null;var e=i.findDataIndex(t.offsetX,t.offsetY);0<e&&(i.dataIndex=e+i.__startIndex)}))},wM._clearIncremental=function(){var t=this._incremental;t&&t.clearDisplaybles()};var bM={seriesType:"lines",plan:vc(),reset:function(g){var m=g.coordinateSystem,v=g.get("polyline"),y=g.pipelineContext.large;return{progress:function(t,e){var i=[];if(y){var n,o=t.end-t.start;if(v){for(var a=0,r=t.start;r<t.end;r++)a+=g.getLineCoordsCount(r);n=new Float32Array(o+2*a)}else n=new Float32Array(4*o);var s=0,l=[];for(r=t.start;r<t.end;r++){var u=g.getLineCoords(r,i);v&&(n[s++]=u);for(var h=0;h<u;h++)l=m.dataToPoint(i[h],!1,l),n[s++]=l[0],n[s++]=l[1]}e.setLayout("linesPoints",n)}else for(r=t.start;r<t.end;r++){var c=e.getItemModel(r),d=(u=g.getLineCoords(r,i),[]);if(v)for(var f=0;f<u;f++)d.push(m.dataToPoint(i[f]));else{d[0]=m.dataToPoint(i[0]),d[1]=m.dataToPoint(i[1]);var p=c.get("lineStyle.curveness");+p&&(d[2]=[(d[0][0]+d[1][0])/2-(d[0][1]-d[1][1])*p,(d[0][1]+d[1][1])/2-(d[1][0]-d[0][0])*p])}e.setItemLayout(r,d)}}}}};function SM(t){return t instanceof Array||(t=[t,t]),t}Cf({type:"lines",init:function(){},render:function(t,e,i){var n=t.getData(),o=this._updateLineDraw(n,t),a=t.get("zlevel"),r=t.get("effect.trailLength"),s=i.getZr(),l="svg"===s.painter.getType();l||s.painter.getLayer(a).clear(!0),null==this._lastZlevel||l||s.configLayer(this._lastZlevel,{motionBlur:!1}),this._showEffect(t)&&r&&(l||s.configLayer(a,{motionBlur:!0,lastFrameAlpha:Math.max(Math.min(r/10+.9,1),0)})),o.updateData(n);var u=t.get("clip",!0)&&Sm(t.coordinateSystem,!1,t);u?this.group.setClipPath(u):this.group.removeClipPath(),this._lastZlevel=a,this._finished=!0},incrementalPrepareRender:function(t,e,i){var n=t.getData();this._updateLineDraw(n,t).incrementalPrepareUpdate(n),this._clearLayer(i),this._finished=!1},incrementalRender:function(t,e,i){this._lineDraw.incrementalUpdate(t,e.getData()),this._finished=t.end===e.getData().count()},updateTransform:function(t,e,i){var n=t.getData(),o=t.pipelineContext;if(!this._finished||o.large||o.progressiveRender)return{update:!0};var a=bM.reset(t);a.progress&&a.progress({start:0,end:n.count()},n),this._lineDraw.updateLayout(),this._clearLayer(i)},_updateLineDraw:function(t,e){var i=this._lineDraw,n=this._showEffect(e),o=!!e.get("polyline"),a=e.pipelineContext.large;return i&&n===this._hasEffet&&o===this._isPolyline&&a===this._isLargeDraw||(i&&i.remove(),i=this._lineDraw=a?new _M:new pw(o?n?vM:gM:n?fM:dw),this._hasEffet=n,this._isPolyline=o,this._isLargeDraw=a,this.group.removeAll()),this.group.add(i.group),i},_showEffect:function(t){return!!t.get("effect.show")},_clearLayer:function(t){var e=t.getZr();"svg"===e.painter.getType()||null==this._lastZlevel||e.painter.getLayer(this._lastZlevel).clear(!0)},remove:function(t,e){this._lineDraw&&this._lineDraw.remove(),this._lineDraw=null,this._clearLayer(e)},dispose:function(){}});var MM="lineStyle.opacity".split("."),IM={seriesType:"lines",reset:function(t,e,i){var n=SM(t.get("symbol")),o=SM(t.get("symbolSize")),a=t.getData();return a.setVisual("fromSymbol",n&&n[0]),a.setVisual("toSymbol",n&&n[1]),a.setVisual("fromSymbolSize",o&&o[0]),a.setVisual("toSymbolSize",o&&o[1]),a.setVisual("opacity",t.get(MM)),{dataEach:a.hasItemOption?function(t,e){var i=t.getItemModel(e),n=SM(i.getShallow("symbol",!0)),o=SM(i.getShallow("symbolSize",!0)),a=i.get(MM);n[0]&&t.setItemVisual(e,"fromSymbol",n[0]),n[1]&&t.setItemVisual(e,"toSymbol",n[1]),o[0]&&t.setItemVisual(e,"fromSymbolSize",o[0]),o[1]&&t.setItemVisual(e,"toSymbolSize",o[1]),t.setItemVisual(e,"opacity",a)}:null}}};bf(bM),Sf(IM),sc.extend({type:"series.heatmap",getInitialData:function(t,e){return gp(this.getSource(),this,{generateCoord:"value"})},preventIncremental:function(){var t=lh.get(this.get("coordinateSystem"));if(t&&t.dimensions)return"lng"===t.dimensions[0]&&"lat"===t.dimensions[1]},defaultOption:{coordinateSystem:"cartesian2d",zlevel:0,z:2,geoIndex:0,blurSize:30,pointSize:20,maxOpacity:1,minOpacity:0}});function TM(){var t=y();this.canvas=t,this.blurSize=30,this.pointSize=20,this.maxOpacity=1,this.minOpacity=0,this._gradientPixels={}}TM.prototype={update:function(t,e,i,n,o,a){var r=this._getBrush(),s=this._getGradient(t,o,"inRange"),l=this._getGradient(t,o,"outOfRange"),u=this.pointSize+this.blurSize,h=this.canvas,c=h.getContext("2d"),d=t.length;h.width=e,h.height=i;for(var f=0;f<d;++f){var p=t[f],g=p[0],m=p[1],v=n(p[2]);c.globalAlpha=v,c.drawImage(r,g-u,m-u)}if(!h.width||!h.height)return h;for(var y=c.getImageData(0,0,h.width,h.height),x=y.data,_=0,w=x.length,b=this.minOpacity,S=this.maxOpacity-b;_<w;){v=x[_+3]/256;var M=4*Math.floor(255*v);if(0<v){var I=a(v)?s:l;0<v&&(v=v*S+b),x[_++]=I[M],x[_++]=I[1+M],x[_++]=I[2+M],x[_++]=I[3+M]*v*256}else _+=4}return c.putImageData(y,0,0),h},_getBrush:function(){var t=this._brushCanvas||(this._brushCanvas=y()),e=this.pointSize+this.blurSize,i=2*e;t.width=i,t.height=i;var n=t.getContext("2d");return n.clearRect(0,0,i,i),n.shadowOffsetX=i,n.shadowBlur=this.blurSize,n.shadowColor="#000",n.beginPath(),n.arc(-e,e,this.pointSize,0,2*Math.PI,!0),n.closePath(),n.fill(),t},_getGradient:function(t,e,i){for(var n=this._gradientPixels,o=n[i]||(n[i]=new Uint8ClampedArray(1024)),a=[0,0,0,0],r=0,s=0;s<256;s++)e[i](s/255,!0,a),o[r++]=a[0],o[r++]=a[1],o[r++]=a[2],o[r++]=a[3];return o}},Cf({type:"heatmap",render:function(i,t,e){var n;t.eachComponent("visualMap",function(e){e.eachTargetSeries(function(t){t===i&&(n=e)})}),this.group.removeAll(),this._incrementalDisplayable=null;var o=i.coordinateSystem;"cartesian2d"===o.type||"calendar"===o.type?this._renderOnCartesianAndCalendar(i,e,0,i.getData().count()):function(t){var e=t.dimensions;return"lng"===e[0]&&"lat"===e[1]}(o)&&this._renderOnGeo(o,i,n,e)},incrementalPrepareRender:function(t,e,i){this.group.removeAll()},incrementalRender:function(t,e,i,n){e.coordinateSystem&&this._renderOnCartesianAndCalendar(e,n,t.start,t.end,!0)},_renderOnCartesianAndCalendar:function(t,e,i,n,o){var a,r,s=t.coordinateSystem;if("cartesian2d"===s.type){var l=s.getAxis("x"),u=s.getAxis("y");a=l.getBandWidth(),r=u.getBandWidth()}for(var h=this.group,c=t.getData(),d="emphasis.itemStyle",f="emphasis.label",p=t.getModel("itemStyle").getItemStyle(["color"]),g=t.getModel(d).getItemStyle(),m=t.getModel("label"),v=t.getModel(f),y=s.type,x="cartesian2d"===y?[c.mapDimension("x"),c.mapDimension("y"),c.mapDimension("value")]:[c.mapDimension("time"),c.mapDimension("value")],_=i;_<n;_++){var w;if("cartesian2d"===y){if(isNaN(c.get(x[2],_)))continue;var b=s.dataToPoint([c.get(x[0],_),c.get(x[1],_)]);w=new rs({shape:{x:Math.floor(Math.round(b[0])-a/2),y:Math.floor(Math.round(b[1])-r/2),width:Math.ceil(a),height:Math.ceil(r)},style:{fill:c.getItemVisual(_,"color"),opacity:c.getItemVisual(_,"opacity")}})}else{if(isNaN(c.get(x[1],_)))continue;w=new rs({z2:1,shape:s.dataToRect([c.get(x[0],_)]).contentShape,style:{fill:c.getItemVisual(_,"color"),opacity:c.getItemVisual(_,"opacity")}})}var S=c.getItemModel(_);c.hasItemOption&&(p=S.getModel("itemStyle").getItemStyle(["color"]),g=S.getModel(d).getItemStyle(),m=S.getModel("label"),v=S.getModel(f));var M=t.getRawValue(_),I="-";M&&null!=M[2]&&(I=M[2]),el(p,g,m,v,{labelFetcher:t,labelDataIndex:_,defaultText:I,isRectText:!0}),w.setStyle(p),$s(w,c.hasItemOption?g:P({},g)),(w.incremental=o)&&(w.useHoverLayer=!0),h.add(w),c.setItemGraphicEl(_,w)}},_renderOnGeo:function(o,t,e,i){var n=e.targetVisuals.inRange,a=e.targetVisuals.outOfRange,r=t.getData(),s=this._hmLayer||this._hmLayer||new TM;s.blurSize=t.get("blurSize"),s.pointSize=t.get("pointSize"),s.minOpacity=t.get("minOpacity"),s.maxOpacity=t.get("maxOpacity");var l=o.getViewRect().clone(),u=o.getRoamTransform();l.applyTransform(u);var h=Math.max(l.x,0),c=Math.max(l.y,0),d=Math.min(l.width+l.x,i.getWidth()),f=Math.min(l.height+l.y,i.getHeight()),p=d-h,g=f-c,m=[r.mapDimension("lng"),r.mapDimension("lat"),r.mapDimension("value")],v=r.mapArray(m,function(t,e,i){var n=o.dataToPoint([t,e]);return n[0]-=h,n[1]-=c,n.push(i),n}),y=e.getExtent(),x="visualMap.continuous"===e.type?function(t,e){var i=t[1]-t[0];return e=[(e[0]-t[0])/i,(e[1]-t[0])/i],function(t){return t>=e[0]&&t<=e[1]}}(y,e.option.range):function(e,n,o){var i=e[1]-e[0],a=(n=O(n,function(t){return{interval:[(t.interval[0]-e[0])/i,(t.interval[1]-e[0])/i]}})).length,r=0;return function(t){for(var e=r;e<a;e++){if((i=n[e].interval)[0]<=t&&t<=i[1]){r=e;break}}if(e===a)for(e=r-1;0<=e;e--){var i;if((i=n[e].interval)[0]<=t&&t<=i[1]){r=e;break}}return 0<=e&&e<a&&o[e]}}(y,e.getPieceList(),e.option.selected);s.update(v,p,g,n.color.getNormalizer(),{inRange:n.color.getColorMapper(),outOfRange:a.color.getColorMapper()},x);var _=new Qn({style:{width:p,height:g,x:h,y:c,image:s.canvas},silent:!0});this.group.add(_)},dispose:function(){}});var AM=Tv.extend({type:"series.pictorialBar",dependencies:["grid"],defaultOption:{symbol:"circle",symbolSize:null,symbolRotate:null,symbolPosition:null,symbolOffset:null,symbolMargin:null,symbolRepeat:!1,symbolRepeatDirection:"end",symbolClip:!1,symbolBoundingData:null,symbolPatternSize:400,barGap:"-100%",progressive:0,hoverAnimation:!1},getInitialData:function(t){return t.stack=null,AM.superApply(this,"getInitialData",arguments)}}),DM=["itemStyle","borderWidth"],CM=[{xy:"x",wh:"width",index:0,posDesc:["left","right"]},{xy:"y",wh:"height",index:1,posDesc:["top","bottom"]}],LM=new Yr;Cf({type:"pictorialBar",render:function(t,e,i){var r=this.group,s=t.getData(),l=this._data,n=t.coordinateSystem,o=!!n.getBaseAxis().isHorizontal(),a=n.grid.getRect(),u={ecSize:{width:i.getWidth(),height:i.getHeight()},seriesModel:t,coordSys:n,coordSysExtent:[[a.x,a.x+a.width],[a.y,a.y+a.height]],isHorizontal:o,valueDim:CM[+o],categoryDim:CM[1-o]};return s.diff(l).add(function(t){if(s.hasValue(t)){var e=BM(s,t),i=kM(s,t,e,u),n=WM(s,u,i);s.setItemGraphicEl(t,n),r.add(n),YM(n,u,i)}}).update(function(t,e){var i=l.getItemGraphicEl(e);if(s.hasValue(t)){var n=BM(s,t),o=kM(s,t,n,u),a=ZM(s,o);i&&a!==i.__pictorialShapeStr&&(r.remove(i),s.setItemGraphicEl(t,null),i=null),i?function(t,e,i){var n=i.animationModel,o=i.dataIndex;cl(t.__pictorialBundle,{position:i.bundlePosition.slice()},n,o),i.symbolRepeat?OM(t,e,i,!0):EM(t,e,i,!0);RM(t,i,!0),zM(t,e,i,!0)}(i,u,o):i=WM(s,u,o,!0),s.setItemGraphicEl(t,i),i.__pictorialSymbolMeta=o,r.add(i),YM(i,u,o)}else r.remove(i)}).remove(function(t){var e=l.getItemGraphicEl(t);e&&HM(l,t,e.__pictorialSymbolMeta.animationModel,e)}).execute(),this._data=s,this.group},dispose:et,remove:function(e,t){var i=this.group,n=this._data;e.get("animation")?n&&n.eachItemGraphicEl(function(t){HM(n,t.dataIndex,e,t)}):i.removeAll()}});function kM(t,e,i,n){var o=t.getItemLayout(e),a=i.get("symbolRepeat"),r=i.get("symbolClip"),s=i.get("symbolPosition")||"start",l=(i.get("symbolRotate")||0)*Math.PI/180||0,u=i.get("symbolPatternSize")||2,h=i.isAnimationEnabled(),c={dataIndex:e,layout:o,itemModel:i,symbolType:t.getItemVisual(e,"symbol")||"circle",color:t.getItemVisual(e,"color"),symbolClip:r,symbolRepeat:a,symbolRepeatDirection:i.get("symbolRepeatDirection"),symbolPatternSize:u,rotation:l,animationModel:h?i:null,hoverAnimation:h&&i.get("hoverAnimation"),z2:i.getShallow("z",!0)||0};!function(t,e,i,n,o){var a,r=n.valueDim,s=t.get("symbolBoundingData"),l=n.coordSys.getOtherAxis(n.coordSys.getBaseAxis()),u=l.toGlobalCoord(l.dataToCoord(0)),h=1-+(i[r.wh]<=0);if(L(s)){var c=[PM(l,s[0])-u,PM(l,s[1])-u];c[1]<c[0]&&c.reverse(),a=c[h]}else a=null!=s?PM(l,s)-u:e?n.coordSysExtent[r.index][h]-u:i[r.wh];o.boundingLength=a,e&&(o.repeatCutLength=i[r.wh]);o.pxSign=0<a?1:a<0?-1:0}(i,a,o,n,c),function(t,e,i,n,o,a,r,s,l,u){var h=l.valueDim,c=l.categoryDim,d=Math.abs(i[c.wh]),f=t.getItemVisual(e,"symbolSize");f=L(f)?f.slice():(null==f&&(f="100%"),[f,f]);f[c.index]=Rl(f[c.index],d),f[h.index]=Rl(f[h.index],n?d:Math.abs(a)),u.symbolSize=f,(u.symbolScale=[f[0]/s,f[1]/s])[h.index]*=(l.isHorizontal?-1:1)*r}(t,e,o,a,0,c.boundingLength,c.pxSign,u,n,c),function(t,e,i,n,o){var a=t.get(DM)||0;a&&(LM.attr({scale:e.slice(),rotation:i}),LM.updateTransform(),a/=LM.getLineScale(),a*=e[n.valueDim.index]);o.valueLineWidth=a}(i,c.symbolScale,l,n,c);var d=c.symbolSize,f=i.get("symbolOffset");return L(f)&&(f=[Rl(f[0],d[0]),Rl(f[1],d[1])]),function(t,e,i,n,o,a,r,s,l,u,h,c){var d=h.categoryDim,f=h.valueDim,p=c.pxSign,g=Math.max(e[f.index]+s,0),m=g;if(n){var v=Math.abs(l),y=W(t.get("symbolMargin"),"15%")+"",x=!1;y.lastIndexOf("!")===y.length-1&&(x=!0,y=y.slice(0,y.length-1)),y=Rl(y,e[f.index]);var _=Math.max(g+2*y,0),w=x?0:2*y,b=Jl(n),S=b?n:jM((v+w)/_);_=g+2*(y=(v-S*g)/2/(x?S:S-1)),w=x?0:2*y,b||"fixed"===n||(S=u?jM((Math.abs(u)+w)/_):0),m=S*_-w,c.repeatTimes=S,c.symbolMargin=y}var M=p*(m/2),I=c.pathPosition=[];I[d.index]=i[d.wh]/2,I[f.index]="start"===r?M:"end"===r?l-M:l/2,a&&(I[0]+=a[0],I[1]+=a[1]);var T=c.bundlePosition=[];T[d.index]=i[d.xy],T[f.index]=i[f.xy];var A=c.barRectShape=P({},i);A[f.wh]=p*Math.max(Math.abs(i[f.wh]),Math.abs(I[f.index]+M)),A[d.wh]=i[d.wh];var D=c.clipShape={};D[d.xy]=-i[d.xy],D[d.wh]=h.ecSize[d.wh],D[f.xy]=0,D[f.wh]=i[f.wh]}(i,d,o,a,0,f,s,c.valueLineWidth,c.boundingLength,c.repeatCutLength,n,c),c}function PM(t,e){return t.toGlobalCoord(t.dataToCoord(t.scale.parse(e)))}function NM(t){var e=t.symbolPatternSize,i=wg(t.symbolType,-e/2,-e/2,e,e,t.color);return i.attr({culling:!0}),"image"!==i.type&&i.setStyle({strokeNoScale:!0}),i}function OM(t,e,o,i){var n=t.__pictorialBundle,a=o.symbolSize,r=o.valueLineWidth,s=o.pathPosition,l=e.valueDim,u=o.repeatTimes||0,h=0,c=a[e.valueDim.index]+r+2*o.symbolMargin;for(UM(t,function(t){t.__pictorialAnimationIndex=h,t.__pictorialRepeatTimes=u,h<u?XM(t,null,p(h),o,i):XM(t,null,{scale:[0,0]},o,i,function(){n.remove(t)}),FM(t,o),h++});h<u;h++){var d=NM(o);d.__pictorialAnimationIndex=h,d.__pictorialRepeatTimes=u,n.add(d);var f=p(h);XM(d,{position:f.position,scale:[0,0]},{scale:f.scale,rotation:f.rotation},o,i),d.on("mouseover",g).on("mouseout",m),FM(d,o)}function p(t){var e=s.slice(),i=o.pxSign,n=t;return("start"===o.symbolRepeatDirection?0<i:i<0)&&(n=u-1-t),e[l.index]=c*(n-u/2+.5)+s[l.index],{position:e,scale:o.symbolScale.slice(),rotation:o.rotation}}function g(){UM(t,function(t){t.trigger("emphasis")})}function m(){UM(t,function(t){t.trigger("normal")})}}function EM(t,e,i,n){var o=t.__pictorialBundle,a=t.__pictorialMainPath;a?XM(a,null,{position:i.pathPosition.slice(),scale:i.symbolScale.slice(),rotation:i.rotation},i,n):(a=t.__pictorialMainPath=NM(i),o.add(a),XM(a,{position:i.pathPosition.slice(),scale:[0,0],rotation:i.rotation},{scale:i.symbolScale.slice()},i,n),a.on("mouseover",function(){this.trigger("emphasis")}).on("mouseout",function(){this.trigger("normal")})),FM(a,i)}function RM(t,e,i){var n=P({},e.barRectShape),o=t.__pictorialBarRect;o?XM(o,null,{shape:n},e,i):(o=t.__pictorialBarRect=new rs({z2:2,shape:n,silent:!0,style:{stroke:"transparent",fill:"transparent",lineWidth:0}}),t.add(o))}function zM(t,e,i,n){if(i.symbolClip){var o=t.__pictorialClipPath,a=P({},i.clipShape),r=e.valueDim,s=i.animationModel,l=i.dataIndex;if(o)cl(o,{shape:a},s,l);else{a[r.wh]=0,o=new rs({shape:a}),t.__pictorialBundle.setClipPath(o),t.__pictorialClipPath=o;var u={};u[r.wh]=i.clipShape[r.wh],bl[n?"updateProps":"initProps"](o,{shape:u},s,l)}}}function BM(t,e){var i=t.getItemModel(e);return i.getAnimationDelayParams=VM,i.isAnimationEnabled=GM,i}function VM(t){return{index:t.__pictorialAnimationIndex,count:t.__pictorialRepeatTimes}}function GM(){return this.parentModel.isAnimationEnabled()&&!!this.getShallow("animation")}function FM(t,e){t.off("emphasis").off("normal");var i=e.symbolScale.slice();e.hoverAnimation&&t.on("emphasis",function(){this.animateTo({scale:[1.1*i[0],1.1*i[1]]},400,"elasticOut")}).on("normal",function(){this.animateTo({scale:i.slice()},400,"elasticOut")})}function WM(t,e,i,n){var o=new Ci,a=new Ci;return o.add(a),(o.__pictorialBundle=a).attr("position",i.bundlePosition.slice()),i.symbolRepeat?OM(o,e,i):EM(o,0,i),RM(o,i,n),zM(o,e,i,n),o.__pictorialShapeStr=ZM(t,i),o.__pictorialSymbolMeta=i,o}function HM(t,e,i,n){var o=n.__pictorialBarRect;o&&(o.style.text=null);var a=[];UM(n,function(t){a.push(t)}),n.__pictorialMainPath&&a.push(n.__pictorialMainPath),n.__pictorialClipPath&&(i=null),E(a,function(t){cl(t,{scale:[0,0]},i,e,function(){n.parent&&n.parent.remove(n)})}),t.setItemGraphicEl(e,null)}function ZM(t,e){return[t.getItemVisual(e.dataIndex,"symbol")||"none",!!e.symbolRepeat,!!e.symbolClip].join(":")}function UM(e,i,n){E(e.__pictorialBundle.children(),function(t){t!==e.__pictorialBarRect&&i.call(n,t)})}function XM(t,e,i,n,o,a){e&&t.attr(e),n.symbolClip&&!o?i&&t.attr(i):i&&bl[o?"updateProps":"initProps"](t,i,n.animationModel,n.dataIndex,a)}function YM(t,e,i){var n=i.color,o=i.dataIndex,a=i.itemModel,r=a.getModel("itemStyle").getItemStyle(["color"]),s=a.getModel("emphasis.itemStyle").getItemStyle(),l=a.getShallow("cursor");UM(t,function(t){t.setColor(n),t.setStyle(D({fill:n,opacity:i.opacity},r)),$s(t,s),l&&(t.cursor=l),t.z2=i.z2});var u={},h=(e.valueDim.posDesc[+(0<i.boundingLength)],t.__pictorialBarRect);Av(h.style,u,a,n,e.seriesModel,o),$s(h,u)}function jM(t){var e=Math.round(t);return Math.abs(t-e)<1e-4?e:Math.ceil(t)}bf(T(zp,"pictorialBar")),Sf(Lm("pictorialBar","roundRect"));function qM(t,e,i,n,o){Gg.call(this,t,e,i),this.type=n||"value",this.position=o||"bottom",this.orient=null}function KM(t,e,i){this.dimension="single",this.dimensions=["single"],this._axis=null,this._rect,this._init(t,e,i),this.model=t}function $M(t,e){e=e||{};var i=t.coordinateSystem,n=t.axis,o={},a=n.position,r=n.orient,s=i.getRect(),l=[s.x,s.x+s.width,s.y,s.y+s.height],u={horizontal:{top:l[2],bottom:l[3]},vertical:{left:l[0],right:l[1]}};o.position=["vertical"===r?u.vertical[a]:l[0],"horizontal"===r?u.horizontal[a]:l[3]];o.rotation=Math.PI/2*{horizontal:0,vertical:1}[r];o.labelDirection=o.tickDirection=o.nameDirection={top:-1,bottom:1,right:1,left:-1}[a],t.get("axisTick.inside")&&(o.tickDirection=-o.tickDirection),W(e.labelInside,t.get("axisLabel.inside"))&&(o.labelDirection=-o.labelDirection);var h=e.rotate;return null==h&&(h=t.get("axisLabel.rotate")),o.labelRotation="top"===a?-h:h,o.z2=1,o}qM.prototype={constructor:qM,model:null,isHorizontal:function(){var t=this.position;return"top"===t||"bottom"===t},pointToData:function(t,e){return this.coordinateSystem.pointToData(t,e)[0]},toGlobalCoord:null,toLocalCoord:null},w(qM,Gg),lh.register("single",{create:function(n,o){var a=[];return n.eachComponent("singleAxis",function(t,e){var i=new KM(t,n,o);i.name="single_"+e,i.resize(t,o),t.coordinateSystem=i,a.push(i)}),n.eachSeries(function(t){if("singleAxis"===t.get("coordinateSystem")){var e=n.queryComponents({mainType:"singleAxis",index:t.get("singleAxisIndex"),id:t.get("singleAxisId")})[0];t.coordinateSystem=e&&e.coordinateSystem}}),a},dimensions:(KM.prototype={type:"singleAxis",axisPointerEnabled:!0,constructor:KM,_init:function(t,e,i){var n=this.dimension,o=new qM(n,sg(t),[0,0],t.get("type"),t.get("position")),a="category"===o.type;o.onBand=a&&t.get("boundaryGap"),o.inverse=t.get("inverse"),o.orient=t.get("orient"),(t.axis=o).model=t,(o.coordinateSystem=this)._axis=o},update:function(t,e){t.eachSeries(function(t){if(t.coordinateSystem===this){var e=t.getData();E(e.mapDimension(this.dimension,!0),function(t){this._axis.scale.unionExtentFromData(e,t)},this),rg(this._axis.scale,this._axis.model)}},this)},resize:function(t,e){this._rect=bu({left:t.get("left"),top:t.get("top"),right:t.get("right"),bottom:t.get("bottom"),width:t.get("width"),height:t.get("height")},{width:e.getWidth(),height:e.getHeight()}),this._adjustAxis()},getRect:function(){return this._rect},_adjustAxis:function(){var t=this._rect,e=this._axis,i=e.isHorizontal(),n=i?[0,t.width]:[0,t.height],o=e.reverse?1:0;e.setExtent(n[o],n[1-o]),this._updateAxisTransform(e,i?t.x:t.y)},_updateAxisTransform:function(t,e){var i=t.getExtent(),n=i[0]+i[1],o=t.isHorizontal();t.toGlobalCoord=o?function(t){return t+e}:function(t){return n-t+e},t.toLocalCoord=o?function(t){return t-e}:function(t){return n-t+e}},getAxis:function(){return this._axis},getBaseAxis:function(){return this._axis},getAxes:function(){return[this._axis]},getTooltipAxes:function(){return{baseAxes:[this.getAxis()]}},containPoint:function(t){var e=this.getRect(),i=this.getAxis();return"horizontal"===i.orient?i.contain(i.toLocalCoord(t[0]))&&t[1]>=e.y&&t[1]<=e.y+e.height:i.contain(i.toLocalCoord(t[1]))&&t[0]>=e.y&&t[0]<=e.y+e.height},pointToData:function(t){var e=this.getAxis();return[e.coordToData(e.toLocalCoord(t["horizontal"===e.orient?0:1]))]},dataToPoint:function(t){var e=this.getAxis(),i=this.getRect(),n=[],o="horizontal"===e.orient?0:1;return t instanceof Array&&(t=t[0]),n[o]=e.toGlobalCoord(e.dataToCoord(+t)),n[1-o]=0==o?i.y+i.height/2:i.x+i.width/2,n}}).dimensions});var JM=["axisLine","axisTickLabel","axisName"],QM=["splitArea","splitLine"],tI=mv.extend({type:"singleAxis",axisPointerClass:"SingleAxisPointer",render:function(e,t,i,n){var o=this.group;o.removeAll();var a=this._axisGroup;this._axisGroup=new Ci;var r=$M(e),s=new Qm(e,r);E(JM,s.add,s),o.add(this._axisGroup),o.add(s.getGroup()),E(QM,function(t){e.get(t+".show")&&this["_"+t](e)},this),ml(a,this._axisGroup,e),tI.superCall(this,"render",e,t,i,n)},remove:function(){bv(this)},_splitLine:function(t){var e=t.axis;if(!e.scale.isBlank()){var i=t.getModel("splitLine"),n=i.getModel("lineStyle"),o=n.get("width"),a=n.get("color");a=a instanceof Array?a:[a];for(var r=t.coordinateSystem.getRect(),s=e.isHorizontal(),l=[],u=0,h=e.getTicksCoords({tickModel:i}),c=[],d=[],f=0;f<h.length;++f){var p=e.toGlobalCoord(h[f].coord);s?(c[0]=p,c[1]=r.y,d[0]=p,d[1]=r.y+r.height):(c[0]=r.x,c[1]=p,d[0]=r.x+r.width,d[1]=p);var g=u++%a.length;l[g]=l[g]||[],l[g].push(new ls({subPixelOptimize:!0,shape:{x1:c[0],y1:c[1],x2:d[0],y2:d[1]},style:{lineWidth:o},silent:!0}))}for(f=0;f<l.length;++f)this.group.add(Es(l[f],{style:{stroke:a[f%a.length],lineDash:n.getLineDash(o),lineWidth:o},silent:!0}))}},_splitArea:function(t){wv(this,this._axisGroup,t,t)}}),eI=ku.extend({type:"singleAxis",layoutMode:"box",axis:null,coordinateSystem:null,getCoordSysModel:function(){return this}});m(eI.prototype,dg),Gm("single",eI,function(t,e){return e.type||(e.data?"category":"value")},{left:"5%",top:"5%",right:"5%",bottom:"5%",type:"value",position:"bottom",orient:"horizontal",axisLine:{show:!0,lineStyle:{width:1,type:"solid"}},tooltip:{show:!0},axisTick:{show:!0,length:6,lineStyle:{width:1}},axisLabel:{show:!0,interval:"auto"},splitLine:{show:!0,lineStyle:{type:"dashed",opacity:.2}}});function iI(t,e){var i,n=[],o=t.seriesIndex;if(null==o||!(i=e.getSeriesByIndex(o)))return{point:[]};var a=i.getData(),r=Yo(a,t);if(null==r||r<0||L(r))return{point:[]};var s=a.getItemGraphicEl(r),l=i.coordinateSystem;if(i.getTooltipPosition)n=i.getTooltipPosition(r)||[];else if(l&&l.dataToPoint)n=l.dataToPoint(a.getValues(O(l.dimensions,function(t){return a.mapDimension(t)}),r,!0))||[];else if(s){var u=s.getBoundingRect().clone();u.applyTransform(s.transform),n=[u.x+u.width/2,u.y+u.height/2]}return{point:n,el:s}}var nI=E,oI=T,aI=jo();function rI(t,e,i,n,o){var a=t.axis;if(!a.scale.isBlank()&&a.containData(e))if(t.involveSeries){var r=function(l,t){var u=t.axis,h=u.dim,c=l,d=[],f=Number.MAX_VALUE,p=-1;return nI(t.seriesModels,function(e,t){var i,n,o=e.getData().mapDimension(h,!0);if(e.getAxisTooltipData){var a=e.getAxisTooltipData(o,l,u);n=a.dataIndices,i=a.nestestValue}else{if(!(n=e.getData().indicesOfNearest(o[0],l,"category"===u.type?.5:null)).length)return;i=e.getData().get(o[0],n[0])}if(null!=i&&isFinite(i)){var r=l-i,s=Math.abs(r);s<=f&&((s<f||0<=r&&p<0)&&(f=s,p=r,c=i,d.length=0),nI(n,function(t){d.push({seriesIndex:e.seriesIndex,dataIndexInside:t,dataIndex:e.getData().getRawIndex(t)})}))}}),{payloadBatch:d,snapToValue:c}}(e,t),s=r.payloadBatch,l=r.snapToValue;s[0]&&null==o.seriesIndex&&P(o,s[0]),!n&&t.snap&&a.containData(l)&&null!=l&&(e=l),i.showPointer(t,e,s,o),i.showTooltip(t,r,l)}else i.showPointer(t,e)}function sI(t,e,i,n){t[e.key]={value:i,payloadBatch:n}}function lI(t,e,i,n){var o=i.payloadBatch,a=e.axis,r=a.model,s=e.axisPointerModel;if(e.triggerTooltip&&o.length){var l=e.coordSys.model,u=gv(l),h=t.map[u];h||(h=t.map[u]={coordSysId:l.id,coordSysIndex:l.componentIndex,coordSysType:l.type,coordSysMainType:l.mainType,dataByAxis:[]},t.list.push(h)),h.dataByAxis.push({axisDim:a.dim,axisIndex:r.componentIndex,axisType:r.type,axisId:r.id,value:n,valueLabelOpt:{precision:s.get("label.precision"),formatter:s.get("label.formatter")},seriesDataIndices:o.slice()})}}function uI(t){var e=t.axis.model,i={},n=i.axisDim=t.axis.dim;return i.axisIndex=i[n+"AxisIndex"]=e.componentIndex,i.axisName=i[n+"AxisName"]=e.name,i.axisId=i[n+"AxisId"]=e.id,i}function hI(t){return!t||null==t[0]||isNaN(t[0])||null==t[1]||isNaN(t[1])}Tf({type:"axisPointer",coordSysAxesInfo:null,defaultOption:{show:"auto",triggerOn:null,zlevel:0,z:50,type:"line",snap:!1,triggerTooltip:!0,value:null,status:null,link:[],animation:null,animationDurationUpdate:200,lineStyle:{color:"#aaa",width:1,type:"solid"},shadowStyle:{color:"rgba(150,150,150,0.3)"},label:{show:!0,formatter:null,precision:"auto",margin:3,color:"#fff",padding:[5,7,5,7],backgroundColor:"auto",borderColor:null,borderWidth:0,shadowBlur:3,shadowColor:"#aaa"},handle:{show:!1,icon:"M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4h1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7v-1.2h6.6z M13.3,22H6.7v-1.2h6.6z M13.3,19.6H6.7v-1.2h6.6z",size:45,margin:50,color:"#333",shadowBlur:3,shadowColor:"#aaa",shadowOffsetX:0,shadowOffsetY:2,throttle:40}}});var cI=jo(),dI=E;function fI(t,e,i){if(!v.node){var n=e.getZr();cI(n).records||(cI(n).records={}),function(o,a){if(cI(o).initialized)return;function t(t,n){o.on(t,function(e){var i=function(i){var n={showTip:[],hideTip:[]},o=function(t){var e=n[t.type];e?e.push(t):(t.dispatchAction=o,i.dispatchAction(t))};return{dispatchAction:o,pendings:n}}(a);dI(cI(o).records,function(t){t&&n(t,e,i.dispatchAction)}),function(t,e){var i,n=t.showTip.length,o=t.hideTip.length;n?i=t.showTip[n-1]:o&&(i=t.hideTip[o-1]);i&&(i.dispatchAction=null,e.dispatchAction(i))}(i.pendings,a)})}cI(o).initialized=!0,t("click",T(gI,"click")),t("mousemove",T(gI,"mousemove")),t("globalout",pI)}(n,e),(cI(n).records[t]||(cI(n).records[t]={})).handler=i}}function pI(t,e,i){t.handler("leave",null,i)}function gI(t,e,i,n){e.handler(t,i,n)}function mI(t,e){if(!v.node){var i=e.getZr();(cI(i).records||{})[t]&&(cI(i).records[t]=null)}}var vI=Af({type:"axisPointer",render:function(t,e,i){var n=e.getComponent("tooltip"),o=t.get("triggerOn")||n&&n.get("triggerOn")||"mousemove|click";fI("axisPointer",i,function(t,e,i){"none"!==o&&("leave"===t||0<=o.indexOf(t))&&i({type:"updateAxisPointer",currTrigger:t,x:e&&e.offsetX,y:e&&e.offsetY})})},remove:function(t,e){mI(e.getZr(),"axisPointer"),vI.superApply(this._model,"remove",arguments)},dispose:function(t,e){mI("axisPointer",e),vI.superApply(this._model,"dispose",arguments)}}),yI=jo(),xI=k,_I=A;function wI(){}function bI(t,e,i,n){!function i(n,t){{if(z(n)&&z(t)){var o=!0;return E(t,function(t,e){o=o&&i(n[e],t)}),!!o}return n===t}}(yI(i).lastProp,n)&&(yI(i).lastProp=n,e?cl(i,n,t):(i.stopAnimation(),i.attr(n)))}function SI(t,e){t[e.get("label.show")?"show":"hide"]()}function MI(t){return{position:t.position.slice(),rotation:t.rotation||0}}function II(t,e,i){var n=e.get("z"),o=e.get("zlevel");t&&t.traverse(function(t){"group"!==t.type&&(null!=n&&(t.z=n),null!=o&&(t.zlevel=o),t.silent=i)})}function TI(t){var e,i=t.get("type"),n=t.getModel(i+"Style");return"line"===i?(e=n.getLineStyle()).fill=null:"shadow"===i&&((e=n.getAreaStyle()).stroke=null),e}function AI(t,e,i,n,o){var a=DI(i.get("value"),e.axis,e.ecModel,i.get("seriesDataIndices"),{precision:i.get("label.precision"),formatter:i.get("label.formatter")}),r=i.getModel("label"),s=iu(r.get("padding")||0),l=r.getFont(),u=gn(a,l),h=o.position,c=u.width+s[1]+s[3],d=u.height+s[0]+s[2],f=o.align;"right"===f&&(h[0]-=c),"center"===f&&(h[0]-=c/2);var p=o.verticalAlign;"bottom"===p&&(h[1]-=d),"middle"===p&&(h[1]-=d/2),function(t,e,i,n){var o=n.getWidth(),a=n.getHeight();t[0]=Math.min(t[0]+e,o)-e,t[1]=Math.min(t[1]+i,a)-i,t[0]=Math.max(t[0],0),t[1]=Math.max(t[1],0)}(h,c,d,n);var g=r.get("backgroundColor");g&&"auto"!==g||(g=e.get("axisLine.lineStyle.color")),t.label={shape:{x:0,y:0,width:c,height:d,r:r.get("borderRadius")},position:h.slice(),style:{text:a,textFont:l,textFill:r.getTextColor(),textPosition:"inside",textPadding:s,fill:g,stroke:r.get("borderColor")||"transparent",lineWidth:r.get("borderWidth")||0,shadowBlur:r.get("shadowBlur"),shadowColor:r.get("shadowColor"),shadowOffsetX:r.get("shadowOffsetX"),shadowOffsetY:r.get("shadowOffsetY")},z2:10}}function DI(t,e,o,i,n){t=e.scale.parse(t);var a=e.scale.getLabel(t,{precision:n.precision}),r=n.formatter;if(r){var s={value:ug(e,t),axisDimension:e.dim,axisIndex:e.index,seriesData:[]};E(i,function(t){var e=o.getSeriesByIndex(t.seriesIndex),i=t.dataIndexInside,n=e&&e.getDataParams(i);n&&s.seriesData.push(n)}),R(r)?a=r.replace("{value}",a):C(r)&&(a=r(s))}return a}function CI(t,e,i){var n=ae();return he(n,n,i.rotation),ue(n,n,i.position),pl([t.dataToCoord(e),(i.labelOffset||0)+(i.labelDirection||1)*(i.labelMargin||0)],n)}function LI(t,e,i,n,o,a){var r=Qm.innerTextLayout(i.rotation,0,i.labelDirection);i.labelMargin=o.get("label.margin"),AI(e,n,o,a,{position:CI(n.axis,t,i),align:r.textAlign,verticalAlign:r.textVerticalAlign})}function kI(t,e,i){return{x1:t[i=i||0],y1:t[1-i],x2:e[i],y2:e[1-i]}}function PI(t,e,i){return{x:t[i=i||0],y:t[1-i],width:e[i],height:e[1-i]}}function NI(t,e,i,n,o,a){return{cx:t,cy:e,r0:i,r:n,startAngle:o,endAngle:a,clockwise:!0}}oa((wI.prototype={_group:null,_lastGraphicKey:null,_handle:null,_dragging:!1,_lastValue:null,_lastStatus:null,_payloadInfo:null,animationThreshold:15,render:function(t,e,i,n){var o=e.get("value"),a=e.get("status");if(this._axisModel=t,this._axisPointerModel=e,this._api=i,n||this._lastValue!==o||this._lastStatus!==a){this._lastValue=o,this._lastStatus=a;var r=this._group,s=this._handle;if(!a||"hide"===a)return r&&r.hide(),void(s&&s.hide());r&&r.show(),s&&s.show();var l={};this.makeElOption(l,o,t,e,i);var u=l.graphicKey;u!==this._lastGraphicKey&&this.clear(i),this._lastGraphicKey=u;var h=this._moveAnimation=this.determineAnimation(t,e);if(r){var c=T(bI,e,h);this.updatePointerEl(r,l,c,e),this.updateLabelEl(r,l,c,e)}else r=this._group=new Ci,this.createPointerEl(r,l,t,e),this.createLabelEl(r,l,t,e),i.getZr().add(r);II(r,e,!0),this._renderHandle(o)}},remove:function(t){this.clear(t)},dispose:function(t){this.clear(t)},determineAnimation:function(t,e){var i=e.get("animation"),n=t.axis,o="category"===n.type,a=e.get("snap");if(!a&&!o)return!1;if("auto"!==i&&null!=i)return!0===i;var r=this.animationThreshold;if(o&&n.getBandWidth()>r)return!0;if(a){var s=fv(t).seriesDataCount,l=n.getExtent();return Math.abs(l[0]-l[1])/s>r}return!1},makeElOption:function(t,e,i,n,o){},createPointerEl:function(t,e,i,n){var o=e.pointer;if(o){var a=yI(t).pointerEl=new bl[o.type](xI(e.pointer));t.add(a)}},createLabelEl:function(t,e,i,n){if(e.label){var o=yI(t).labelEl=new rs(xI(e.label));t.add(o),SI(o,n)}},updatePointerEl:function(t,e,i){var n=yI(t).pointerEl;n&&e.pointer&&(n.setStyle(e.pointer.style),i(n,{shape:e.pointer.shape}))},updateLabelEl:function(t,e,i,n){var o=yI(t).labelEl;o&&(o.setStyle(e.label.style),i(o,{shape:e.label.shape,position:e.label.position}),SI(o,n))},_renderHandle:function(t){if(!this._dragging&&this.updateHandleTransform){var e,i=this._axisPointerModel,n=this._api.getZr(),o=this._handle,a=i.getModel("handle"),r=i.get("status");if(!a.get("show")||!r||"hide"===r)return o&&n.remove(o),void(this._handle=null);this._handle||(e=!0,o=this._handle=yl(a.get("icon"),{cursor:"move",draggable:!0,onmousemove:function(t){Xt(t.event)},onmousedown:_I(this._onHandleDragMove,this,0,0),drift:_I(this._onHandleDragMove,this),ondragend:_I(this._onHandleDragEnd,this)}),n.add(o)),II(o,i,!1);o.setStyle(a.getItemStyle(null,["color","borderColor","borderWidth","opacity","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY"]));var s=a.get("size");L(s)||(s=[s,s]),o.attr("scale",[s[0]/2,s[1]/2]),kc(this,"_doDispatchAxisPointer",a.get("throttle")||0,"fixRate"),this._moveHandleToValue(t,e)}},_moveHandleToValue:function(t,e){bI(this._axisPointerModel,!e&&this._moveAnimation,this._handle,MI(this.getHandleTransform(t,this._axisModel,this._axisPointerModel)))},_onHandleDragMove:function(t,e){var i=this._handle;if(i){this._dragging=!0;var n=this.updateHandleTransform(MI(i),[t,e],this._axisModel,this._axisPointerModel);this._payloadInfo=n,i.stopAnimation(),i.attr(MI(n)),yI(i).lastProp=null,this._doDispatchAxisPointer()}},_doDispatchAxisPointer:function(){if(this._handle){var t=this._payloadInfo,e=this._axisModel;this._api.dispatchAction({type:"updateAxisPointer",x:t.cursorPoint[0],y:t.cursorPoint[1],tooltipOption:t.tooltipOption,axesInfo:[{axisDim:e.axis.dim,axisIndex:e.componentIndex}]})}},_onHandleDragEnd:function(t){if(this._dragging=!1,this._handle){var e=this._axisPointerModel.get("value");this._moveHandleToValue(e),this._api.dispatchAction({type:"hideTip"})}},getHandleTransform:null,updateHandleTransform:null,clear:function(t){this._lastValue=null,this._lastStatus=null;var e=t.getZr(),i=this._group,n=this._handle;e&&i&&(this._lastGraphicKey=null,i&&e.remove(i),n&&e.remove(n),this._group=null,this._handle=null,this._payloadInfo=null)},doClear:function(){},buildLabel:function(t,e,i){return{x:t[i=i||0],y:t[1-i],width:e[i],height:e[1-i]}}}).constructor=wI);var OI=wI.extend({makeElOption:function(t,e,i,n,o){var a=i.axis,r=a.grid,s=n.get("type"),l=EI(r,a).getOtherAxis(a).getGlobalExtent(),u=a.toGlobalCoord(a.dataToCoord(e,!0));if(s&&"none"!==s){var h=TI(n),c=RI[s](a,u,l);c.style=h,t.graphicKey=c.type,t.pointer=c}LI(e,t,_v(r.model,i),i,n,o)},getHandleTransform:function(t,e,i){var n=_v(e.axis.grid.model,e,{labelInside:!1});return n.labelMargin=i.get("handle.margin"),{position:CI(e.axis,t,n),rotation:n.rotation+(n.labelDirection<0?Math.PI:0)}},updateHandleTransform:function(t,e,i,n){var o=i.axis,a=o.grid,r=o.getGlobalExtent(!0),s=EI(a,o).getOtherAxis(o).getGlobalExtent(),l="x"===o.dim?0:1,u=t.position;u[l]+=e[l],u[l]=Math.min(r[1],u[l]),u[l]=Math.max(r[0],u[l]);var h=(s[1]+s[0])/2,c=[h,h];c[l]=u[l];return{position:u,rotation:t.rotation,cursorPoint:c,tooltipOption:[{verticalAlign:"middle"},{align:"center"}][l]}}});function EI(t,e){var i={};return i[e.dim+"AxisIndex"]=e.index,t.getCartesian(i)}var RI={line:function(t,e,i){return{type:"Line",subPixelOptimize:!0,shape:kI([e,i[0]],[e,i[1]],zI(t))}},shadow:function(t,e,i){var n=Math.max(1,t.getBandWidth()),o=i[1]-i[0];return{type:"Rect",shape:PI([e-n/2,i[0]],[n,o],zI(t))}}};function zI(t){return"x"===t.dim?0:1}mv.registerAxisPointerClass("CartesianAxisPointer",OI),yf(function(t){if(t){t.axisPointer&&0!==t.axisPointer.length||(t.axisPointer={});var e=t.axisPointer.link;e&&!L(e)&&(t.axisPointer.link=[e])}}),xf(Ld.PROCESSOR.STATISTIC,function(t,e){t.getComponent("axisPointer").coordSysAxesInfo=cv(t,e)}),_f({type:"updateAxisPointer",event:"updateAxisPointer",update:":updateAxisPointer"},function(t,e,i){var n=t.currTrigger,r=[t.x,t.y],o=t,a=t.dispatchAction||A(i.dispatchAction,i),s=e.getComponent("axisPointer").coordSysAxesInfo;if(s){hI(r)&&(r=iI({seriesIndex:o.seriesIndex,dataIndex:o.dataIndex},e).point);var l=hI(r),u=o.axesInfo,h=s.axesInfo,c="leave"===n||hI(r),d={},f={},p={list:[],map:{}},g={showPointer:oI(sI,f),showTooltip:oI(lI,p)};nI(s.coordSysMap,function(t,e){var a=l||t.containPoint(r);nI(s.coordSysAxesInfo[e],function(t,e){var i=t.axis,n=function(t,e){for(var i=0;i<(t||[]).length;i++){var n=t[i];if(e.axis.dim===n.axisDim&&e.axis.model.componentIndex===n.axisIndex)return n}}(u,t);if(!c&&a&&(!u||n)){var o=n&&n.value;null!=o||l||(o=i.pointToData(r)),null!=o&&rI(t,o,g,!1,d)}})});var m={};return nI(h,function(o,t){var a=o.linkGroup;a&&!f[t]&&nI(a.axesInfo,function(t,e){var i=f[e];if(t!==o&&i){var n=i.value;a.mapper&&(n=o.axis.scale.parse(a.mapper(n,uI(t),uI(o)))),m[o.key]=n}})}),nI(m,function(t,e){rI(h[e],t,g,!0,d)}),function(o,t,e){var a=e.axesInfo=[];nI(t,function(t,e){var i=t.axisPointerModel.option,n=o[e];n?(t.useHandle||(i.status="show"),i.value=n.value,i.seriesDataIndices=(n.payloadBatch||[]).slice()):t.useHandle||(i.status="hide"),"show"===i.status&&a.push({axisDim:t.axis.dim,axisIndex:t.axis.model.componentIndex,value:i.value})})}(f,h,d),function(t,e,i,n){if(hI(e)||!t.list.length)return n({type:"hideTip"});var o=((t.list[0].dataByAxis[0]||{}).seriesDataIndices||[])[0]||{};n({type:"showTip",escapeConnect:!0,x:e[0],y:e[1],tooltipOption:i.tooltipOption,position:i.position,dataIndexInside:o.dataIndexInside,dataIndex:o.dataIndex,seriesIndex:o.seriesIndex,dataByCoordSys:t.list})}(p,r,t,a),function(t,e,i){var n=i.getZr(),o="axisPointerLastHighlights",a=aI(n)[o]||{},r=aI(n)[o]={};nI(t,function(t,e){var i=t.axisPointerModel.option;"show"===i.status&&nI(i.seriesDataIndices,function(t){var e=t.seriesIndex+" | "+t.dataIndex;r[e]=t})});var s=[],l=[];E(a,function(t,e){r[e]||l.push(t)}),E(r,function(t,e){a[e]||s.push(t)}),l.length&&i.dispatchAction({type:"downplay",escapeConnect:!0,batch:l}),s.length&&i.dispatchAction({type:"highlight",escapeConnect:!0,batch:s})}(h,0,i),d}});var BI=["x","y"],VI=["width","height"],GI=wI.extend({makeElOption:function(t,e,i,n,o){var a=i.axis,r=a.coordinateSystem,s=HI(r,1-WI(a)),l=r.dataToPoint(e)[0],u=n.get("type");if(u&&"none"!==u){var h=TI(n),c=FI[u](a,l,s);c.style=h,t.graphicKey=c.type,t.pointer=c}LI(e,t,$M(i),i,n,o)},getHandleTransform:function(t,e,i){var n=$M(e,{labelInside:!1});return n.labelMargin=i.get("handle.margin"),{position:CI(e.axis,t,n),rotation:n.rotation+(n.labelDirection<0?Math.PI:0)}},updateHandleTransform:function(t,e,i,n){var o=i.axis,a=o.coordinateSystem,r=WI(o),s=HI(a,r),l=t.position;l[r]+=e[r],l[r]=Math.min(s[1],l[r]),l[r]=Math.max(s[0],l[r]);var u=HI(a,1-r),h=(u[1]+u[0])/2,c=[h,h];return c[r]=l[r],{position:l,rotation:t.rotation,cursorPoint:c,tooltipOption:{verticalAlign:"middle"}}}}),FI={line:function(t,e,i){return{type:"Line",subPixelOptimize:!0,shape:kI([e,i[0]],[e,i[1]],WI(t))}},shadow:function(t,e,i){var n=t.getBandWidth(),o=i[1]-i[0];return{type:"Rect",shape:PI([e-n/2,i[0]],[n,o],WI(t))}}};function WI(t){return t.isHorizontal()?0:1}function HI(t,e){var i=t.getRect();return[i[BI[e]],i[BI[e]]+i[VI[e]]]}mv.registerAxisPointerClass("SingleAxisPointer",GI),Af({type:"single"});var ZI=sc.extend({type:"series.themeRiver",dependencies:["singleAxis"],nameMap:null,init:function(t){ZI.superApply(this,"init",arguments),this.legendVisualProvider=new qv(A(this.getData,this),A(this.getRawData,this))},fixData:function(t){var e=t.length,i=ta(t,function(t){return t[2]}),n=[];i.buckets.each(function(t,e){n.push({name:e,dataList:t})});for(var o=n.length,a=-1,r=-1,s=0;s<o;++s){var l=n[s].dataList.length;a<l&&(a=l,r=s)}for(var u=0;u<o;++u)if(u!==r)for(var h=n[u].name,c=0;c<a;++c){for(var d=n[r].dataList[c][0],f=n[u].dataList.length,p=-1,g=0;g<f;++g){if(n[u].dataList[g][0]===d){p=g;break}}-1===p&&(t[e]=[],t[e][0]=d,t[e][1]=0,t[e][2]=h,e++)}return t},getInitialData:function(t,e){for(var i=e.queryComponents({mainType:"singleAxis",index:this.get("singleAxisIndex"),id:this.get("singleAxisId")})[0].get("type"),n=M(t.data,function(t){return void 0!==t[2]}),o=this.fixData(n||[]),a=[],r=this.nameMap=Q(),s=0,l=0;l<o.length;++l)a.push(o[l][2]),r.get(o[l][2])||(r.set(o[l][2],s),s++);var u=lp(o,{coordDimensions:["single"],dimensionsDefine:[{name:"time",type:Ef(i)},{name:"value",type:"float"},{name:"name",type:"ordinal"}],encodeDefine:{single:0,value:1,itemName:2}}),h=new Yf(u,this);return h.initData(o),h},getLayerSeries:function(){for(var i=this.getData(),t=i.count(),e=[],n=0;n<t;++n)e[n]=n;var o=i.mapDimension("single"),a=ta(e,function(t){return i.get("name",t)}),r=[];return a.buckets.each(function(t,e){t.sort(function(t,e){return i.get(o,t)-i.get(o,e)}),r.push({name:e,indices:t})}),r},getAxisTooltipData:function(t,e,i){L(t)||(t=t?[t]:[]);for(var n,o=this.getData(),a=this.getLayerSeries(),r=[],s=a.length,l=0;l<s;++l){for(var u=Number.MAX_VALUE,h=-1,c=a[l].indices.length,d=0;d<c;++d){var f=o.get(t[0],a[l].indices[d]),p=Math.abs(f-e);p<=u&&(n=f,u=p,h=a[l].indices[d])}r.push(h)}return{dataIndices:r,nestestValue:n}},formatTooltip:function(t){var e=this.getData(),i=e.getName(t),n=e.get(e.mapDimension("value"),t);return!isNaN(n)&&null!=n||(n="-"),au(i+" : "+n)},defaultOption:{zlevel:0,z:2,coordinateSystem:"singleAxis",boundaryGap:["10%","10%"],singleAxisIndex:0,animationEasing:"linear",label:{margin:4,show:!0,position:"left",color:"#000",fontSize:11},emphasis:{label:{show:!0}}}});Cf({type:"themeRiver",init:function(){this._layers=[]},render:function(b,t,e){var S=b.getData(),M=this.group,I=b.getLayerSeries(),i=S.getLayout("layoutInfo"),n=i.rect,o=i.boundaryGap;function a(t){return t.name}M.attr("position",[0,n.y+o[0]]);var r=new kf(this._layersSeries||[],I,a,a),T={};function s(t,e,i){var n=this._layers;if("remove"!==t){for(var o,a,r,s=[],l=[],u=I[e].indices,h=0;h<u.length;h++){var c=S.getItemLayout(u[h]),d=c.x,f=c.y0,p=c.y;s.push([d,f]),l.push([d,f+p]),o=S.getItemVisual(u[h],"color")}var g=S.getItemLayout(u[0]),m=S.getItemModel(u[h-1]),v=m.getModel("label"),y=v.get("margin");if("add"===t){var x=T[e]=new Ci;a=new _m({shape:{points:s,stackedOnPoints:l,smooth:.4,stackedOnSmooth:.4,smoothConstraint:!1},z2:0}),r=new Ur({style:{x:g.x-y,y:g.y0+g.y/2}}),x.add(a),x.add(r),M.add(x),a.setClipPath(function(t,e,i){var n=new rs({shape:{x:t.x-10,y:t.y-10,width:0,height:t.height+20}});return dl(n,{shape:{width:t.width+20,height:t.height+20}},e,i),n}(a.getBoundingRect(),b,function(){a.removeClipPath()}))}else{x=n[i];a=x.childAt(0),r=x.childAt(1),M.add(x),T[e]=x,cl(a,{shape:{points:s,stackedOnPoints:l}},b),cl(r,{style:{x:g.x-y,y:g.y0+g.y/2}},b)}var _=m.getModel("emphasis.itemStyle"),w=m.getModel("itemStyle");nl(r.style,v,{text:v.get("show")?b.getFormattedLabel(u[h-1],"normal")||S.getName(u[h-1]):null,textVerticalAlign:"middle"}),a.setStyle(P({fill:o},w.getItemStyle(["color"]))),$s(a,_.getItemStyle())}else M.remove(n[e])}r.add(A(s,this,"add")).update(A(s,this,"update")).remove(A(s,this,"remove")).execute(),this._layersSeries=I,this._layers=T},dispose:function(){}});function UI(i,t,e){if(i.count())for(var n,o=t.coordinateSystem,a=t.getLayerSeries(),r=i.mapDimension("single"),s=i.mapDimension("value"),l=O(a,function(t){return O(t.indices,function(t){var e=o.dataToPoint(i.get(r,t));return e[1]=i.get(s,t),e})}),u=function(t){for(var e=t.length,i=t[0].length,n=[],o=[],a=0,r={},s=0;s<i;++s){for(var l=0,u=0;l<e;++l)u+=t[l][s][1];a<u&&(a=u),n.push(u)}for(var h=0;h<i;++h)o[h]=(a-n[h])/2;for(var c=a=0;c<i;++c){var d=n[c]+o[c];a<d&&(a=d)}return r.y0=o,r.max=a,r}(l),h=u.y0,c=e/u.max,d=a.length,f=a[0].indices.length,p=0;p<f;++p){n=h[p]*c,i.setItemLayout(a[0].indices[p],{layerIndex:0,x:l[0][p][0],y0:n,y:l[0][p][1]*c});for(var g=1;g<d;++g)n+=l[g-1][p][1]*c,i.setItemLayout(a[g].indices[p],{layerIndex:g,x:l[g][p][0],y0:n,y:l[g][p][1]*c})}}bf(function(t,e){t.eachSeriesByType("themeRiver",function(t){var e=t.getData(),i=t.coordinateSystem,n={},o=i.getRect();n.rect=o;var a=t.get("boundaryGap"),r=i.getAxis();(n.boundaryGap=a,"horizontal"===r.orient)?(a[0]=Rl(a[0],o.height),a[1]=Rl(a[1],o.height),UI(e,t,o.height-a[0]-a[1])):(a[0]=Rl(a[0],o.width),a[1]=Rl(a[1],o.width),UI(e,t,o.width-a[0]-a[1]));e.setLayout("layoutInfo",n)})}),Sf(function(t){t.eachSeriesByType("themeRiver",function(o){var a=o.getData(),r=o.getRawData(),s=o.get("color"),l=Q();a.each(function(t){l.set(a.getRawIndex(t),t)}),r.each(function(t){var e=r.getName(t),i=s[(o.nameMap.get(e)-1)%s.length];r.setItemVisual(t,"color",i);var n=l.get(t);null!=n&&a.setItemVisual(n,"color",i)})})}),xf(uy("themeRiver")),sc.extend({type:"series.sunburst",_viewRoot:null,getInitialData:function(t,e){var i={name:t.name,children:t.data};!function i(t){var n=0;E(t.children,function(t){i(t);var e=t.value;L(e)&&(e=e[0]),n+=e});var e=t.value;L(e)&&(e=e[0]);null!=e&&!isNaN(e)||(e=n);e<0&&(e=0);L(t.value)?t.value[0]=e:t.value=e}(i);var n=t.levels||[],o={};return o.levels=n,Ax.createTree(i,this,o).data},optionUpdated:function(){this.resetViewRoot()},getDataParams:function(t){var e=sc.prototype.getDataParams.apply(this,arguments),i=this.getData().tree.getNodeByDataIndex(t);return e.treePathInfo=Yx(i,this),e},defaultOption:{zlevel:0,z:2,center:["50%","50%"],radius:[0,"75%"],clockwise:!0,startAngle:90,minAngle:0,percentPrecision:2,stillShowZeroSum:!0,highlightPolicy:"descendant",nodeClick:"rootToNode",renderLabelForZeroData:!1,label:{rotate:"radial",show:!0,opacity:1,align:"center",position:"inside",distance:5,silent:!0},itemStyle:{borderWidth:1,borderColor:"white",borderType:"solid",shadowBlur:0,shadowColor:"rgba(0, 0, 0, 0.2)",shadowOffsetX:0,shadowOffsetY:0,opacity:1},highlight:{itemStyle:{opacity:1}},downplay:{itemStyle:{opacity:.5},label:{opacity:.6}},animationType:"expansion",animationDuration:1e3,animationDurationUpdate:500,animationEasing:"cubicOut",data:[],levels:[],sort:"desc"},getViewRoot:function(){return this._viewRoot},resetViewRoot:function(t){t?this._viewRoot=t:t=this._viewRoot;var e=this.getRawData().tree.root;t&&(t===e||e.contains(t))||(this._viewRoot=e)}});var XI="none",YI="ancestor",jI="self",qI=2,KI=4;function $I(t,e,i){Ci.call(this);var n=new qr({z2:qI});n.seriesIndex=e.seriesIndex;var o=new Ur({z2:KI,silent:t.getModel("label").get("silent")});function a(){o.ignore=o.hoverIgnore}function r(){o.ignore=o.normalIgnore}this.add(n),this.add(o),this.updateData(!0,t,"normal",e,i),this.on("emphasis",a).on("normal",r).on("mouseover",a).on("mouseout",r)}var JI=$I.prototype;JI.updateData=function(t,e,i,n,o){(this.node=e).piece=this,n=n||this._seriesModel,o=o||this._ecModel;var a=this.childAt(0);a.dataIndex=e.dataIndex;var r=e.getModel(),s=e.getLayout(),l=P({},s);l.label=null;var u=function(t,e,i){var n=t.getVisual("color"),o=t.getVisual("visualMeta");o&&0!==o.length||(n=null);var a=t.getModel("itemStyle").get("color");{if(a)return a;if(n)return n;if(0===t.depth)return i.option.color[0];var r=i.option.color.length;a=i.option.color[function(t){var e=t;for(;1<e.depth;)e=e.parentNode;return _(t.getAncestors()[0].children,e)}(t)%r]}return a}(e,0,o);!function(t,e,i){e.getData().setItemVisual(t.dataIndex,"color",i)}(e,n,u);var h,c=r.getModel("itemStyle").getItemStyle();"normal"===i?h=c:h=m(r.getModel(i+".itemStyle").getItemStyle(),c);h=D({lineJoin:"bevel",fill:h.fill||u},h),t?(a.setShape(l),a.shape.r=s.r0,cl(a,{shape:{r:s.r}},n,e.dataIndex),a.useStyle(h)):"object"==typeof h.fill&&h.fill.type||"object"==typeof a.style.fill&&a.style.fill.type?(cl(a,{shape:l},n),a.useStyle(h)):cl(a,{shape:l,style:h},n),this._updateLabel(n,u,i);var d=r.getShallow("cursor");if(d&&a.attr("cursor",d),t){var f=n.getShallow("highlightPolicy");this._initEvents(a,e,n,f)}this._seriesModel=n||this._seriesModel,this._ecModel=o||this._ecModel,$s(this)},JI.onEmphasis=function(e){var i=this;this.node.hostTree.root.eachNode(function(t){t.piece&&(i.node===t?t.piece.updateData(!1,t,"emphasis"):!function(t,e,i){return i!==XI&&(i===jI?t===e:i===YI?t===e||t.isAncestorOf(e):t===e||t.isDescendantOf(e))}(t,i.node,e)?e!==XI&&t.piece.childAt(0).trigger("downplay"):t.piece.childAt(0).trigger("highlight"))})},JI.onNormal=function(){this.node.hostTree.root.eachNode(function(t){t.piece&&t.piece.updateData(!1,t,"normal")})},JI.onHighlight=function(){this.updateData(!1,this.node,"highlight")},JI.onDownplay=function(){this.updateData(!1,this.node,"downplay")},JI._updateLabel=function(t,e,i){var n=this.node.getModel(),o=n.getModel("label"),a="normal"===i||"emphasis"===i?o:n.getModel(i+".label"),r=n.getModel("emphasis.label"),s=W(t.getFormattedLabel(this.node.dataIndex,i,null,null,"label"),this.node.name);!1===S("show")&&(s="");var l=this.node.getLayout(),u=a.get("minAngle");null==u&&(u=o.get("minAngle")),u=u/180*Math.PI;var h=l.endAngle-l.startAngle;null!=u&&Math.abs(h)<u&&(s="");var c=this.childAt(1);el(c.style,c.hoverStyle||{},o,r,{defaultText:a.getShallow("show")?s:null,autoColor:e,useInsideStyle:!0});var d,f=(l.startAngle+l.endAngle)/2,p=Math.cos(f),g=Math.sin(f),m=S("position"),v=S("distance")||0,y=S("align");"outside"===m?(d=l.r+v,y=f>Math.PI/2?"right":"left"):y&&"center"!==y?"left"===y?(d=l.r0+v,f>Math.PI/2&&(y="right")):"right"===y&&(d=l.r-v,f>Math.PI/2&&(y="left")):(d=(l.r+l.r0)/2,y="center"),c.attr("style",{text:s,textAlign:y,textVerticalAlign:S("verticalAlign")||"middle",opacity:S("opacity")});var x=d*p+l.cx,_=d*g+l.cy;c.attr("position",[x,_]);var w=S("rotate"),b=0;function S(t){var e=a.get(t);return null==e?o.get(t):e}"radial"===w?(b=-f)<-Math.PI/2&&(b+=Math.PI):"tangential"===w?(b=Math.PI/2-f)>Math.PI/2?b-=Math.PI:b<-Math.PI/2&&(b+=Math.PI):"number"==typeof w&&(b=w*Math.PI/180),c.attr("rotation",b)},JI._initEvents=function(t,e,i,n){t.off("mouseover").off("mouseout").off("emphasis").off("normal");function o(){r.onEmphasis(n)}function a(){r.onNormal()}var r=this;i.isAnimationEnabled()&&t.on("mouseover",o).on("mouseout",a).on("emphasis",o).on("normal",a).on("downplay",function(){r.onDownplay()}).on("highlight",function(){r.onHighlight()})},w($I,Ci);_c.extend({type:"sunburst",init:function(){},render:function(o,a,t,e){var n=this;this.seriesModel=o,this.api=t,this.ecModel=a;var r=o.getData(),s=r.tree.root,i=o.getViewRoot(),l=this.group,u=o.get("renderLabelForZeroData"),h=[];i.eachNode(function(t){h.push(t)});var c=this._oldChildren||[];if(function(i,n){if(0===i.length&&0===n.length)return;function t(t){return t.getId()}function e(t,e){!function(t,e){u||!t||t.getValue()||(t=null);if(t!==s&&e!==s)if(e&&e.piece)t?(e.piece.updateData(!1,t,"normal",o,a),r.setItemGraphicEl(t.dataIndex,e.piece)):function(t){if(!t)return;t.piece&&(l.remove(t.piece),t.piece=null)}(e);else if(t){var i=new $I(t,o,a);l.add(i),r.setItemGraphicEl(t.dataIndex,i)}}(null==t?null:i[t],null==e?null:n[e])}new kf(n,i,t,t).add(e).update(e).remove(T(e,null)).execute()}(h,c),function(t,e){if(0<e.depth){n.virtualPiece?n.virtualPiece.updateData(!1,t,"normal",o,a):(n.virtualPiece=new $I(t,o,a),l.add(n.virtualPiece)),e.piece._onclickEvent&&e.piece.off("click",e.piece._onclickEvent);var i=function(t){n._rootToNode(e.parentNode)};e.piece._onclickEvent=i,n.virtualPiece.on("click",i)}else n.virtualPiece&&(l.remove(n.virtualPiece),n.virtualPiece=null)}(s,i),e&&e.highlight&&e.highlight.piece){var d=o.getShallow("highlightPolicy");e.highlight.piece.onEmphasis(d)}else if(e&&e.unhighlight){var f=this.virtualPiece;!f&&s.children.length&&(f=s.children[0].piece),f&&f.onNormal()}this._initEvents(),this._oldChildren=h},dispose:function(){},_initEvents:function(){function t(o){var a=!1;r.seriesModel.getViewRoot().eachNode(function(t){if(!a&&t.piece&&t.piece.childAt(0)===o.target){var e=t.getModel().get("nodeClick");if("rootToNode"===e)r._rootToNode(t);else if("link"===e){var i=t.getModel(),n=i.get("link");if(n)gu(n,i.get("target",!0)||"_blank")}a=!0}})}var r=this;this.group._onclickEvent&&this.group.off("click",this.group._onclickEvent),this.group.on("click",t),this.group._onclickEvent=t},_rootToNode:function(t){t!==this.seriesModel.getViewRoot()&&this.api.dispatchAction({type:"sunburstRootToNode",from:this.uid,seriesId:this.seriesModel.id,targetNode:t})},containPoint:function(t,e){var i=e.getData().getItemLayout(0);if(i){var n=t[0]-i.cx,o=t[1]-i.cy,a=Math.sqrt(n*n+o*o);return a<=i.r&&a>=i.r0}}});var QI="sunburstRootToNode";_f({type:QI,update:"updateView"},function(o,t){t.eachComponent({mainType:"series",subType:"sunburst",query:o},function(t,e){var i=Zx(o,[QI],t);if(i){var n=t.getViewRoot();n&&(o.direction=Xx(n,i.node)?"rollUp":"drillDown"),t.resetViewRoot(i.node)}})});var tT="sunburstHighlight";_f({type:tT,update:"updateView"},function(n,t){t.eachComponent({mainType:"series",subType:"sunburst",query:n},function(t,e){var i=Zx(n,[tT],t);i&&(n.highlight=i.node)})});_f({type:"sunburstUnhighlight",update:"updateView"},function(i,t){t.eachComponent({mainType:"series",subType:"sunburst",query:i},function(t,e){i.unhighlight=!0})});var eT=Math.PI/180;function iT(t,e){if("function"==typeof e)return t.sort(e);var n="asc"===e;return t.sort(function(t,e){var i=(t.getValue()-e.getValue())*(n?1:-1);return 0==i?(t.dataIndex-e.dataIndex)*(n?-1:1):i})}function nT(a,r){return r=r||[0,0],O(["x","y"],function(t,e){var i=this.getAxis(t),n=r[e],o=a[e]/2;return"category"===i.type?i.getBandWidth():Math.abs(i.dataToCoord(n-o)-i.dataToCoord(n+o))},this)}Sf(T(iy,"sunburst")),bf(T(function(t,e,C,i){e.eachSeriesByType(t,function(t){var e=t.get("center"),i=t.get("radius");L(i)||(i=[0,i]),L(e)||(e=[e,e]);var n=C.getWidth(),o=C.getHeight(),h=Math.min(n,o),c=Rl(e[0],n),d=Rl(e[1],o),f=Rl(i[0],h/2),a=Rl(i[1],h/2),r=-t.get("startAngle")*eT,p=t.get("minAngle")*eT,g=t.getData().tree.root,s=t.getViewRoot(),m=s.depth,l=t.get("sort");null!=l&&!function e(t,i){var n=t.children||[];t.children=iT(n,i);n.length&&E(t.children,function(t){e(t,i)})}(s,l);var u=0;E(s.children,function(t){isNaN(t.getValue())||u++});var v=s.getValue(),y=Math.PI/(v||u)*2,x=0<s.depth,_=s.height-(x?-1:1),w=(a-f)/(_||1),b=t.get("clockwise"),S=t.get("stillShowZeroSum"),M=b?1:-1,I=function(t,e){if(t){var i=e;if(t!==g){var n=t.getValue(),o=0===v&&S?y:n*y;o<p&&(o=p),i=e+M*o;var a=t.depth-m-(x?-1:1),r=f+w*a,s=f+w*(1+a),l=t.getModel();null!=l.get("r0")&&(r=Rl(l.get("r0"),h/2)),null!=l.get("r")&&(s=Rl(l.get("r"),h/2)),t.setLayout({angle:o,startAngle:e,endAngle:i,clockwise:b,cx:c,cy:d,r0:r,r:s})}if(t.children&&t.children.length){var u=0;E(t.children,function(t){u+=I(t,e+u)})}return i-e}};if(x){var T=f,A=f+w,D=2*Math.PI;g.setLayout({angle:D,startAngle:r,endAngle:r+D,clockwise:b,cx:c,cy:d,r0:T,r:A})}I(s,r)})},"sunburst")),xf(T(uy,"sunburst"));function oT(a,r){return r=r||[0,0],O([0,1],function(t){var e=r[t],i=a[t]/2,n=[],o=[];return n[t]=e-i,o[t]=e+i,n[1-t]=o[1-t]=r[1-t],Math.abs(this.dataToPoint(n)[t]-this.dataToPoint(o)[t])},this)}function aT(t,e){var i=this.getAxis(),n=e instanceof Array?e[0]:e,o=(t instanceof Array?t[0]:t)/2;return"category"===i.type?i.getBandWidth():Math.abs(i.dataToCoord(n-o)-i.dataToCoord(n+o))}function rT(s,l){return O(["Radius","Angle"],function(t,e){var i=this["get"+t+"Axis"](),n=l[e],o=s[e]/2,a="dataTo"+t,r="category"===i.type?i.getBandWidth():Math.abs(i[a](n-o)-i[a](n+o));return"Angle"===t&&(r=r*Math.PI/180),r},this)}var sT=Ss,lT=["itemStyle"],uT=["emphasis","itemStyle"],hT=["label"],cT=["emphasis","label"],dT="e\0\0",fT={cartesian2d:function(e){var t=e.grid.getRect();return{coordSys:{type:"cartesian2d",x:t.x,y:t.y,width:t.width,height:t.height},api:{coord:function(t){return e.dataToPoint(t)},size:A(nT,e)}}},geo:function(e){var t=e.getBoundingRect();return{coordSys:{type:"geo",x:t.x,y:t.y,width:t.width,height:t.height,zoom:e.getZoom()},api:{coord:function(t){return e.dataToPoint(t)},size:A(oT,e)}}},singleAxis:function(e){var t=e.getRect();return{coordSys:{type:"singleAxis",x:t.x,y:t.y,width:t.width,height:t.height},api:{coord:function(t){return e.dataToPoint(t)},size:A(aT,e)}}},polar:function(o){var a=o.getRadiusAxis(),r=o.getAngleAxis(),t=a.getExtent();return t[0]>t[1]&&t.reverse(),{coordSys:{type:"polar",cx:o.cx,cy:o.cy,r:t[1],r0:t[0]},api:{coord:A(function(t){var e=a.dataToRadius(t[0]),i=r.dataToAngle(t[1]),n=o.coordToPoint([e,i]);return n.push(e,i*Math.PI/180),n}),size:A(rT,o)}}},calendar:function(i){var t=i.getRect(),e=i.getRangeInfo();return{coordSys:{type:"calendar",x:t.x,y:t.y,width:t.width,height:t.height,cellWidth:i.getCellWidth(),cellHeight:i.getCellHeight(),rangeInfo:{start:e.start,end:e.end,weeks:e.weeks,dayCount:e.allDay}},api:{coord:function(t,e){return i.dataToPoint(t,e)}}}}};function pT(t,e,i,n,o){null==i[t]||o||(e[t]=i[t],i[t]=n[t])}function gT(a,r,e,t){var i=a.get("renderItem"),n=a.coordinateSystem,o={};n&&(o=n.prepareCustoms?n.prepareCustoms():fT[n.type](n));var s,l,u,h,c,d=D({getWidth:t.getWidth,getHeight:t.getHeight,getZr:t.getZr,getDevicePixelRatio:t.getDevicePixelRatio,value:function(t,e){return null==e&&(e=s),r.get(r.getDimension(t||0),e)},style:function(t,e){null==e&&(e=s),g(e);var i=l.getModel(lT).getItemStyle();null!=c&&(i.fill=c);var n=r.getItemVisual(e,"opacity");null!=n&&(i.opacity=n);var o=t?_T(t,u):u;return nl(i,o,null,{autoColor:c,isRectText:!0}),i.text=o.getShallow("show")?H(a.getFormattedLabel(e,"normal"),Ug(r,e)):null,t&&wT(i,t),i},styleEmphasis:function(t,e){null==e&&(e=s),g(e);var i=l.getModel(uT).getItemStyle(),n=t?_T(t,h):h;return nl(i,n,null,{isRectText:!0},!0),i.text=n.getShallow("show")?Z(a.getFormattedLabel(e,"emphasis"),a.getFormattedLabel(e,"normal"),Ug(r,e)):null,t&&wT(i,t),i},visual:function(t,e){return null==e&&(e=s),r.getItemVisual(e,t)},barLayout:function(t){if(n.getBaseAxis){return function(t){var e=[],i=t.axis;if("category"===i.type){for(var n=i.getBandWidth(),o=0;o<t.count;o++)e.push(D({bandWidth:n,axisKey:"axis0",stackId:Cp+o},t));var a=Ep(e),r=[];for(o=0;o<t.count;o++){var s=a.axis0[Cp+o];s.offsetCenter=s.offset+s.width/2,r.push(s)}return r}}(D({axis:n.getBaseAxis()},t))}},currentSeriesIndices:function(){return e.getCurrentSeriesIndices()},font:function(t){return ul(t,e)}},o.api||{}),f={context:{},seriesId:a.id,seriesName:a.name,seriesIndex:a.seriesIndex,coordSys:o.coordSys,dataInsideLength:r.count(),encode:function(o){var a={};return E(o.dimensions,function(t,e){var i=o.getDimensionInfo(t);if(!i.isExtraCoord){var n=i.coordDim;(a[n]=a[n]||[])[i.coordDimIndex]=e}}),a}(a.getData())},p=!0;return function(t,e){return s=t,p=!0,i&&i(D({dataIndexInside:t,dataIndex:r.getRawIndex(t),actionType:e?e.type:null},f),d)};function g(t){null==t&&(t=s),p&&(l=r.getItemModel(t),u=l.getModel(hT),h=l.getModel(cT),c=r.getItemVisual(t,"color"),p=!1)}}function mT(t,e,i,n,o,a){return(t=vT(t,e,i,n,o,a,!0))&&a.setItemGraphicEl(e,t),t}function vT(t,e,i,n,o,a,r){var s=!i,l=(i=i||{}).type,u=i.shape,h=i.style;if(t&&(s||null!=l&&l!==t.__customGraphicType||"path"===l&&function(t){return t&&(t.hasOwnProperty("pathData")||t.hasOwnProperty("d"))}(u)&&ST(u)!==t.__customPathData||"image"===l&&MT(h,"image")&&h.image!==t.__customImagePath||"text"===l&&MT(u,"text")&&h.text!==t.__customText)&&(o.remove(t),t=null),!s){var c=!t;return function(e,t,i,n,o,a,r){var s={},l=i.style||{};if(i.shape&&(s.shape=k(i.shape)),i.position&&(s.position=i.position.slice()),i.scale&&(s.scale=i.scale.slice()),i.origin&&(s.origin=i.origin.slice()),i.rotation&&(s.rotation=i.rotation),"image"===e.type&&i.style){var u=s.style={};E(["x","y","width","height"],function(t){pT(t,u,l,e.style,a)})}if("text"===e.type&&i.style){u=s.style={};E(["x","y"],function(t){pT(t,u,l,e.style,a)}),!l.hasOwnProperty("textFill")&&l.fill&&(l.textFill=l.fill),!l.hasOwnProperty("textStroke")&&l.stroke&&(l.textStroke=l.stroke)}if("group"!==e.type&&(e.useStyle(l),a)){e.style.opacity=0;var h=l.opacity;null==h&&(h=1),dl(e,{style:{opacity:h}},n,t)}a?e.attr(s):cl(e,s,n,t),i.hasOwnProperty("z2")&&e.attr("z2",i.z2||0),i.hasOwnProperty("silent")&&e.attr("silent",i.silent),i.hasOwnProperty("invisible")&&e.attr("invisible",i.invisible),i.hasOwnProperty("ignore")&&e.attr("ignore",i.ignore),i.hasOwnProperty("info")&&e.attr("info",i.info);var c=i.styleEmphasis;Us(e,c),r&&Js(e,!1!==c)}(t=t||function(t){var e,i=t.type;if("path"===i){var n=t.shape,o=null!=n.width&&null!=n.height?{x:n.x||0,y:n.y||0,width:n.width,height:n.height}:null,a=ST(n);(e=Ps(a,null,o,n.layout||"center")).__customPathData=a}else if("image"===i)(e=new Qn({})).__customImagePath=t.style.image;else if("text"===i)(e=new Ur({})).__customText=t.style.text;else if("group"===i)e=new Ci;else{if("compoundPath"===i)throw new Error('"compoundPath" is not supported yet.');e=new(ks(i))}return e.__customGraphicType=i,e.name=t.name,e}(i),e,i,n,0,c,r),"group"===l&&function(t,e,i,n,o){var a=i.children,r=a?a.length:0,s=i.$mergeChildren,l="byName"===s||i.diffChildrenByName,u=!1===s;if(!r&&!l&&!u)return;if(l)return function(t){new kf(t.oldChildren,t.newChildren,yT,yT,t).add(xT).update(xT).remove(bT).execute()}({oldChildren:t.children()||[],newChildren:a||[],dataIndex:e,animatableModel:n,group:t,data:o});u&&t.removeAll();for(var h=0;h<r;h++)a[h]&&vT(t.childAt(h),e,a[h],n,t,o)}(t,e,i,n,a),o.add(t),t}}function yT(t,e){var i=t&&t.name;return null!=i?i:dT+e}function xT(t,e){var i=this.context,n=null!=t?i.newChildren[t]:null;vT(null!=e?i.oldChildren[e]:null,i.dataIndex,n,i.animatableModel,i.group,i.data)}function _T(i,t){var n=new Cl({},t);return E(sT,function(t,e){i.hasOwnProperty(t)&&(n.option[e]=i[t])}),n}function wT(t,e){for(var i in e)!e.hasOwnProperty(i)&&sT.hasOwnProperty(i)||(t[i]=e[i])}function bT(t){var e=this.context,i=e.oldChildren[t];i&&e.group.remove(i)}function ST(t){return t&&(t.pathData||t.d)}function MT(t,e){return t&&t.hasOwnProperty(e)}function IT(t){return t.get("stack")||"__ec_stack_"+t.seriesIndex}function TT(t,e){return e.dim+t.model.componentIndex}function AT(t,e){Gg.call(this,"radius",t,e),this.type="category"}sc.extend({type:"series.custom",dependencies:["grid","polar","geo","singleAxis","calendar"],defaultOption:{coordinateSystem:"cartesian2d",zlevel:0,z:2,legendHoverLink:!0,useTransform:!0,clip:!1},getInitialData:function(t,e){return gp(this.getSource(),this)},getDataParams:function(t,e,i){var n=sc.prototype.getDataParams.apply(this,arguments);return i&&(n.info=i.info),n}}),_c.extend({type:"custom",_data:null,render:function(i,t,e,n){var o=this._data,a=i.getData(),r=this.group,s=gT(i,a,t,e);a.diff(o).add(function(t){mT(null,t,s(t,n),i,r,a)}).update(function(t,e){mT(o.getItemGraphicEl(e),t,s(t,n),i,r,a)}).remove(function(t){var e=o.getItemGraphicEl(t);e&&r.remove(e)}).execute();var l=i.get("clip",!0)?Sm(i.coordinateSystem,!1,i):null;l?r.setClipPath(l):r.removeClipPath(),this._data=a},incrementalPrepareRender:function(t,e,i){this.group.removeAll(),this._data=null},incrementalRender:function(t,e,i,n,o){var a=e.getData(),r=gT(e,a,i,n);function s(t){t.isGroup||(t.incremental=!0,t.useHoverLayer=!0)}for(var l=t.start;l<t.end;l++){mT(null,l,r(l,o),e,this.group,a).traverse(s)}},dispose:et,filterForExposedEvent:function(t,e,i,n){var o=e.element;if(null==o||i.name===o)return!0;for(;(i=i.parent)&&i!==this.group;)if(i.name===o)return!0;return!1}}),AT.prototype={constructor:AT,pointToData:function(t,e){return this.polar.pointToData(t,e)["radius"===this.dim?0:1]},dataToRadius:Gg.prototype.dataToCoord,radiusToData:Gg.prototype.coordToData},w(AT,Gg);var DT=jo();function CT(t,e){e=e||[0,360],Gg.call(this,"angle",t,e),this.type="category"}CT.prototype={constructor:CT,pointToData:function(t,e){return this.polar.pointToData(t,e)["radius"===this.dim?0:1]},dataToAngle:Gg.prototype.dataToCoord,angleToData:Gg.prototype.coordToData,calculateCategoryInterval:function(){var t=this.getLabelModel(),e=this.scale,i=e.getExtent(),n=e.count();if(i[1]-i[0]<1)return 0;var o=i[0],a=this.dataToCoord(o+1)-this.dataToCoord(o),r=Math.abs(a),s=gn(o,t.getFont(),"center","top"),l=Math.max(s.height,7)/r;isNaN(l)&&(l=1/0);var u=Math.max(0,Math.floor(l)),h=DT(this.model),c=h.lastAutoInterval,d=h.lastTickCount;return null!=c&&null!=d&&Math.abs(c-u)<=1&&Math.abs(d-n)<=1&&u<c?u=c:(h.lastTickCount=n,h.lastAutoInterval=u),u}},w(CT,Gg);function LT(t){this.name=t||"",this.cx=0,this.cy=0,this._radiusAxis=new AT,this._angleAxis=new CT,this._radiusAxis.polar=this._angleAxis.polar=this}LT.prototype={type:"polar",axisPointerEnabled:!0,constructor:LT,dimensions:["radius","angle"],model:null,containPoint:function(t){var e=this.pointToCoord(t);return this._radiusAxis.contain(e[0])&&this._angleAxis.contain(e[1])},containData:function(t){return this._radiusAxis.containData(t[0])&&this._angleAxis.containData(t[1])},getAxis:function(t){return this["_"+t+"Axis"]},getAxes:function(){return[this._radiusAxis,this._angleAxis]},getAxesByScale:function(t){var e=[],i=this._angleAxis,n=this._radiusAxis;return i.scale.type===t&&e.push(i),n.scale.type===t&&e.push(n),e},getAngleAxis:function(){return this._angleAxis},getRadiusAxis:function(){return this._radiusAxis},getOtherAxis:function(t){var e=this._angleAxis;return t===e?this._radiusAxis:e},getBaseAxis:function(){return this.getAxesByScale("ordinal")[0]||this.getAxesByScale("time")[0]||this.getAngleAxis()},getTooltipAxes:function(t){var e=null!=t&&"auto"!==t?this.getAxis(t):this.getBaseAxis();return{baseAxes:[e],otherAxes:[this.getOtherAxis(e)]}},dataToPoint:function(t,e){return this.coordToPoint([this._radiusAxis.dataToRadius(t[0],e),this._angleAxis.dataToAngle(t[1],e)])},pointToData:function(t,e){var i=this.pointToCoord(t);return[this._radiusAxis.radiusToData(i[0],e),this._angleAxis.angleToData(i[1],e)]},pointToCoord:function(t){var e=t[0]-this.cx,i=t[1]-this.cy,n=this.getAngleAxis(),o=n.getExtent(),a=Math.min(o[0],o[1]),r=Math.max(o[0],o[1]);n.inverse?a=r-360:r=a+360;var s=Math.sqrt(e*e+i*i);e/=s,i/=s;for(var l=Math.atan2(-i,e)/Math.PI*180,u=l<a?1:-1;l<a||r<l;)l+=360*u;return[s,l]},coordToPoint:function(t){var e=t[0],i=t[1]/180*Math.PI;return[Math.cos(i)*e+this.cx,-Math.sin(i)*e+this.cy]},getArea:function(){var t=this.getAngleAxis(),e=this.getRadiusAxis().getExtent().slice();e[0]>e[1]&&e.reverse();var i=t.getExtent(),n=Math.PI/180;return{cx:this.cx,cy:this.cy,r0:e[0],r:e[1],startAngle:-i[0]*n,endAngle:-i[1]*n,clockwise:t.inverse,contain:function(t,e){var i=t-this.cx,n=e-this.cy,o=i*i+n*n,a=this.r,r=this.r0;return o<=a*a&&r*r<=o}}}};var kT=ku.extend({type:"polarAxis",axis:null,getCoordSysModel:function(){return this.ecModel.queryComponents({mainType:"polar",index:this.option.polarIndex,id:this.option.polarId})[0]}});m(kT.prototype,dg);var PT={splitNumber:5};function NT(t,e){return e.type||(e.data?"category":"value")}function OT(t,e){var i=this,n=i.getAngleAxis(),o=i.getRadiusAxis();if(n.scale.setExtent(1/0,-1/0),o.scale.setExtent(1/0,-1/0),t.eachSeries(function(t){if(t.coordinateSystem===i){var e=t.getData();E(e.mapDimension("radius",!0),function(t){o.scale.unionExtentFromData(e,pp(e,t))}),E(e.mapDimension("angle",!0),function(t){n.scale.unionExtentFromData(e,pp(e,t))})}}),rg(n.scale,n.model),rg(o.scale,o.model),"category"===n.type&&!n.onBand){var a=n.getExtent(),r=360/n.scale.count();n.inverse?a[1]+=r:a[1]-=r,n.setExtent(a[0],a[1])}}function ET(t,e){if(t.type=e.get("type"),t.scale=sg(e),t.onBand=e.get("boundaryGap")&&"category"===t.type,t.inverse=e.get("inverse"),"angleAxis"===e.mainType){t.inverse^=e.get("clockwise");var i=e.get("startAngle");t.setExtent(i,i+(t.inverse?-360:360))}(e.axis=t).model=e}Gm("angle",kT,NT,{startAngle:90,clockwise:!0,splitNumber:12,axisLabel:{rotate:!1}}),Gm("radius",kT,NT,PT),Tf({type:"polar",dependencies:["polarAxis","angleAxis"],coordinateSystem:null,findAxisModel:function(t){var e;return this.ecModel.eachComponent(t,function(t){t.getCoordSysModel()===this&&(e=t)},this),e},defaultOption:{zlevel:0,z:0,center:["50%","50%"],radius:"80%"}}),lh.register("polar",{dimensions:LT.prototype.dimensions,create:function(i,s){var l=[];return i.eachComponent("polar",function(t,e){var i=new LT(e);i.update=OT;var n=i.getRadiusAxis(),o=i.getAngleAxis(),a=t.findAxisModel("radiusAxis"),r=t.findAxisModel("angleAxis");ET(n,a),ET(o,r),function(t,e,i){var n=e.get("center"),o=i.getWidth(),a=i.getHeight();t.cx=Rl(n[0],o),t.cy=Rl(n[1],a);var r=t.getRadiusAxis(),s=Math.min(o,a)/2,l=e.get("radius");null==l?l=[0,"100%"]:L(l)||(l=[0,l]),l=[Rl(l[0],s),Rl(l[1],s)],r.inverse?r.setExtent(l[1],l[0]):r.setExtent(l[0],l[1])}(i,t,s),l.push(i),(t.coordinateSystem=i).model=t}),i.eachSeries(function(t){if("polar"===t.get("coordinateSystem")){var e=i.queryComponents({mainType:"polar",index:t.get("polarIndex"),id:t.get("polarId")})[0];t.coordinateSystem=e.coordinateSystem}}),l}});var RT=["axisLine","axisLabel","axisTick","minorTick","splitLine","minorSplitLine","splitArea"];function zT(t,e,i){e[1]>e[0]&&(e=e.slice().reverse());var n=t.coordToPoint([e[0],i]),o=t.coordToPoint([e[1],i]);return{x1:n[0],y1:n[1],x2:o[0],y2:o[1]}}function BT(t){return t.getRadiusAxis().inverse?0:1}function VT(t){var e=t[0],i=t[t.length-1];e&&i&&Math.abs(Math.abs(e.coord-i.coord)-360)<1e-4&&t.pop()}mv.extend({type:"angleAxis",axisPointerClass:"PolarAxisPointer",render:function(e,t){if(this.group.removeAll(),e.get("show")){var i=e.axis,n=i.polar,o=n.getRadiusAxis().getExtent(),a=i.getTicksCoords(),r=i.getMinorTicksCoords(),s=O(i.getViewLabels(),function(t){return(t=k(t)).coord=i.dataToCoord(t.tickValue),t});VT(s),VT(a),E(RT,function(t){!e.get(t+".show")||i.scale.isBlank()&&"axisLine"!==t||this["_"+t](e,n,a,r,o,s)},this)}},_axisLine:function(t,e,i,n,o){var a,r=t.getModel("axisLine.lineStyle"),s=BT(e),l=s?0:1;(a=0===o[l]?new Yr({shape:{cx:e.cx,cy:e.cy,r:o[s]},style:r.getLineStyle(),z2:1,silent:!0}):new Kr({shape:{cx:e.cx,cy:e.cy,r:o[s],r0:o[l]},style:r.getLineStyle(),z2:1,silent:!0})).style.fill=null,this.group.add(a)},_axisTick:function(t,e,i,n,o){var a=t.getModel("axisTick"),r=(a.get("inside")?-1:1)*a.get("length"),s=o[BT(e)],l=O(i,function(t){return new ls({shape:zT(e,[s,s+r],t.coord)})});this.group.add(Es(l,{style:D(a.getModel("lineStyle").getLineStyle(),{stroke:t.get("axisLine.lineStyle.color")})}))},_minorTick:function(t,e,i,n,o){if(n.length){for(var a=t.getModel("axisTick"),r=t.getModel("minorTick"),s=(a.get("inside")?-1:1)*r.get("length"),l=o[BT(e)],u=[],h=0;h<n.length;h++)for(var c=0;c<n[h].length;c++)u.push(new ls({shape:zT(e,[l,l+s],n[h][c].coord)}));this.group.add(Es(u,{style:D(r.getModel("lineStyle").getLineStyle(),D(a.getLineStyle(),{stroke:t.get("axisLine.lineStyle.color")}))}))}},_axisLabel:function(c,d,t,e,f,i){var p=c.getCategories(!0),g=c.getModel("axisLabel"),m=g.get("margin"),v=c.get("triggerEvent");E(i,function(t,e){var i=g,n=t.tickValue,o=f[BT(d)],a=d.coordToPoint([o+m,t.coord]),r=d.cx,s=d.cy,l=Math.abs(a[0]-r)/o<.3?"center":a[0]>r?"left":"right",u=Math.abs(a[1]-s)/o<.3?"middle":a[1]>s?"top":"bottom";p&&p[n]&&p[n].textStyle&&(i=new Cl(p[n].textStyle,g,g.ecModel));var h=new Ur({silent:Qm.isLabelSilent(c)});this.group.add(h),nl(h.style,i,{x:a[0],y:a[1],textFill:i.getTextColor()||c.get("axisLine.lineStyle.color"),text:t.formattedLabel,textAlign:l,textVerticalAlign:u}),v&&(h.eventData=Qm.makeAxisEventDataBase(c),h.eventData.targetType="axisLabel",h.eventData.value=t.rawLabel)},this)},_splitLine:function(t,e,i,n,o){var a=t.getModel("splitLine").getModel("lineStyle"),r=a.get("color"),s=0;r=r instanceof Array?r:[r];for(var l=[],u=0;u<i.length;u++){var h=s++%r.length;l[h]=l[h]||[],l[h].push(new ls({shape:zT(e,o,i[u].coord)}))}for(u=0;u<l.length;u++)this.group.add(Es(l[u],{style:D({stroke:r[u%r.length]},a.getLineStyle()),silent:!0,z:t.get("z")}))},_minorSplitLine:function(t,e,i,n,o){if(n.length){for(var a=t.getModel("minorSplitLine").getModel("lineStyle"),r=[],s=0;s<n.length;s++)for(var l=0;l<n[s].length;l++)r.push(new ls({shape:zT(e,o,n[s][l].coord)}));this.group.add(Es(r,{style:a.getLineStyle(),silent:!0,z:t.get("z")}))}},_splitArea:function(t,e,i,n,o){if(i.length){var a=t.getModel("splitArea").getModel("areaStyle"),r=a.get("color"),s=0;r=r instanceof Array?r:[r];for(var l=[],u=Math.PI/180,h=-i[0].coord*u,c=Math.min(o[0],o[1]),d=Math.max(o[0],o[1]),f=t.get("clockwise"),p=1;p<i.length;p++){var g=s++%r.length;l[g]=l[g]||[],l[g].push(new qr({shape:{cx:e.cx,cy:e.cy,r0:c,r:d,startAngle:h,endAngle:-i[p].coord*u,clockwise:f},silent:!0})),h=-i[p].coord*u}for(p=0;p<l.length;p++)this.group.add(Es(l[p],{style:D({fill:r[p%r.length]},a.getAreaStyle()),silent:!0}))}}});var GT=["axisLine","axisTickLabel","axisName"],FT=["splitLine","splitArea","minorSplitLine"];mv.extend({type:"radiusAxis",axisPointerClass:"PolarAxisPointer",render:function(e,t){if(this.group.removeAll(),e.get("show")){var i=e.axis,n=i.polar,o=n.getAngleAxis(),a=i.getTicksCoords(),r=i.getMinorTicksCoords(),s=o.getExtent()[0],l=i.getExtent(),u=function(t,e,i){return{position:[t.cx,t.cy],rotation:i/180*Math.PI,labelDirection:-1,tickDirection:-1,nameDirection:1,labelRotate:e.getModel("axisLabel").get("rotate"),z2:1}}(n,e,s),h=new Qm(e,u);E(GT,h.add,h),this.group.add(h.getGroup()),E(FT,function(t){e.get(t+".show")&&!i.scale.isBlank()&&this["_"+t](e,n,s,l,a,r)},this)}},_splitLine:function(t,e,i,n,o){var a=t.getModel("splitLine").getModel("lineStyle"),r=a.get("color"),s=0;r=r instanceof Array?r:[r];for(var l=[],u=0;u<o.length;u++){var h=s++%r.length;l[h]=l[h]||[],l[h].push(new Yr({shape:{cx:e.cx,cy:e.cy,r:o[u].coord}}))}for(u=0;u<l.length;u++)this.group.add(Es(l[u],{style:D({stroke:r[u%r.length],fill:null},a.getLineStyle()),silent:!0}))},_minorSplitLine:function(t,e,i,n,o,a){if(a.length){for(var r=t.getModel("minorSplitLine").getModel("lineStyle"),s=[],l=0;l<a.length;l++)for(var u=0;u<a[l].length;u++)s.push(new Yr({shape:{cx:e.cx,cy:e.cy,r:a[l][u].coord}}));this.group.add(Es(s,{style:D({fill:null},r.getLineStyle()),silent:!0}))}},_splitArea:function(t,e,i,n,o){if(o.length){var a=t.getModel("splitArea").getModel("areaStyle"),r=a.get("color"),s=0;r=r instanceof Array?r:[r];for(var l=[],u=o[0].coord,h=1;h<o.length;h++){var c=s++%r.length;l[c]=l[c]||[],l[c].push(new qr({shape:{cx:e.cx,cy:e.cy,r0:u,r:o[h].coord,startAngle:0,endAngle:2*Math.PI},silent:!0})),u=o[h].coord}for(h=0;h<l.length;h++)this.group.add(Es(l[h],{style:D({fill:r[h%r.length]},a.getAreaStyle()),silent:!0}))}}});var WT=wI.extend({makeElOption:function(t,e,i,n,o){var a=i.axis;"angle"===a.dim&&(this.animationThreshold=Math.PI/18);var r,s=a.polar,l=s.getOtherAxis(a).getExtent();r=a["dataTo"+fu(a.dim)](e);var u=n.get("type");if(u&&"none"!==u){var h=TI(n),c=HT[u](a,s,r,l,h);c.style=h,t.graphicKey=c.type,t.pointer=c}var d=n.get("label.margin");AI(t,i,n,o,function(t,e,i,n,o){var a=e.axis,r=a.dataToCoord(t),s=n.getAngleAxis().getExtent()[0];s=s/180*Math.PI;var l,u,h,c=n.getRadiusAxis().getExtent();if("radius"===a.dim){var d=ae();he(d,d,s),ue(d,d,[n.cx,n.cy]),l=pl([r,-o],d);var f=e.getModel("axisLabel").get("rotate")||0,p=Qm.innerTextLayout(s,f*Math.PI/180,-1);u=p.textAlign,h=p.textVerticalAlign}else{var g=c[1];l=n.coordToPoint([g+o,r]);var m=n.cx,v=n.cy;u=Math.abs(l[0]-m)/g<.3?"center":l[0]>m?"left":"right",h=Math.abs(l[1]-v)/g<.3?"middle":l[1]>v?"top":"bottom"}return{position:l,align:u,verticalAlign:h}}(e,i,0,s,d))}});var HT={line:function(t,e,i,n,o){return"angle"===t.dim?{type:"Line",shape:kI(e.coordToPoint([n[0],i]),e.coordToPoint([n[1],i]))}:{type:"Circle",shape:{cx:e.cx,cy:e.cy,r:i}}},shadow:function(t,e,i,n,o){var a=Math.max(1,t.getBandWidth()),r=Math.PI/180;return"angle"===t.dim?{type:"Sector",shape:NI(e.cx,e.cy,n[0],n[1],(-i-a/2)*r,(a/2-i)*r)}:{type:"Sector",shape:NI(e.cx,e.cy,i-a/2,i+a/2,0,2*Math.PI)}}};function ZT(n,t){t.update="updateView",_f(t,function(t,e){var i={};return e.eachComponent({mainType:"geo",query:t},function(e){e[n](t.name),E(e.coordinateSystem.regions,function(t){i[t.name]=e.isSelected(t.name)||!1})}),{selected:i,name:t.name}})}mv.registerAxisPointerClass("PolarAxisPointer",WT),bf(T(function(t,e,i){var N={},O=function(t){var g={};E(t,function(t,e){var i=t.getData(),n=t.coordinateSystem,o=n.getBaseAxis(),a=TT(n,o),r=o.getExtent(),s="category"===o.type?o.getBandWidth():Math.abs(r[1]-r[0])/i.count(),l=g[a]||{bandWidth:s,remainedWidth:s,autoWidthCount:0,categoryGap:"20%",gap:"30%",stacks:{}},u=l.stacks;g[a]=l;var h=IT(t);u[h]||l.autoWidthCount++,u[h]=u[h]||{width:0,maxWidth:0};var c=Rl(t.get("barWidth"),s),d=Rl(t.get("barMaxWidth"),s),f=t.get("barGap"),p=t.get("barCategoryGap");c&&!u[h].width&&(c=Math.min(l.remainedWidth,c),u[h].width=c,l.remainedWidth-=c),d&&(u[h].maxWidth=d),null!=f&&(l.gap=f),null!=p&&(l.categoryGap=p)});var d={};return E(g,function(t,i){d[i]={};var e=t.stacks,n=t.bandWidth,o=Rl(t.categoryGap,n),a=Rl(t.gap,1),r=t.remainedWidth,s=t.autoWidthCount,l=(r-o)/(s+(s-1)*a);l=Math.max(l,0),E(e,function(t,e){var i=t.maxWidth;i&&i<l&&(i=Math.min(i,r),t.width&&(i=Math.min(i,t.width)),r-=i,t.width=i,s--)}),l=(r-o)/(s+(s-1)*a),l=Math.max(l,0);var u,h=0;E(e,function(t,e){t.width||(t.width=l),h+=(u=t).width*(1+a)}),u&&(h-=u.width*a);var c=-h/2;E(e,function(t,e){d[i][e]=d[i][e]||{offset:c,width:t.width},c+=t.width*(1+a)})}),d}(M(e.getSeriesByType(t),function(t){return!e.isSeriesFiltered(t)&&t.coordinateSystem&&"polar"===t.coordinateSystem.type}));e.eachSeriesByType(t,function(t){if("polar"===t.coordinateSystem.type){var e=t.getData(),i=t.coordinateSystem,n=i.getBaseAxis(),o=TT(i,n),a=IT(t),r=O[o][a],s=r.offset,l=r.width,u=i.getOtherAxis(n),h=t.coordinateSystem.cx,c=t.coordinateSystem.cy,d=t.get("barMinHeight")||0,f=t.get("barMinAngle")||0;N[a]=N[a]||[];for(var p=e.mapDimension(u.dim),g=e.mapDimension(n.dim),m=fp(e,p),v="radius"!==n.dim||!t.get("roundCap",!0),y=u.getExtent()[0],x=0,_=e.count();x<_;x++){var w,b,S,M,I=e.get(p,x),T=e.get(g,x),A=0<=I?"p":"n",D=y;if(m&&(N[a][T]||(N[a][T]={p:y,n:y}),D=N[a][T][A]),"radius"===u.dim){var C=u.dataToRadius(I)-y,L=n.dataToAngle(T);Math.abs(C)<d&&(C=(C<0?-1:1)*d),b=(w=D)+C,M=(S=L-s)-l,m&&(N[a][T][A]=b)}else{var k=u.dataToAngle(I,v)-y,P=n.dataToRadius(T);Math.abs(k)<f&&(k=(k<0?-1:1)*f),b=(w=P+s)+l,M=(S=D)+k,m&&(N[a][T][A]=M)}e.setItemLayout(x,{cx:h,cy:c,r0:w,r:b,startAngle:-S*Math.PI/180,endAngle:-M*Math.PI/180})}}},this)},"bar")),Af({type:"polar"}),b(ku.extend({type:"geo",coordinateSystem:null,layoutMode:"box",init:function(t){ku.prototype.init.apply(this,arguments),Go(t,"label",["show"])},optionUpdated:function(){var t=this.option,i=this;t.regions=px.getFilledRegions(t.regions,t.map,t.nameMap),this._optionModelMap=S(t.regions||[],function(t,e){return e.name&&t.set(e.name,new Cl(e,i)),t},Q()),this.updateSelectedMap(t.regions)},defaultOption:{zlevel:0,z:0,show:!0,left:"center",top:"center",aspectScale:null,silent:!1,map:"",boundingCoords:null,center:null,zoom:1,scaleLimit:null,label:{show:!1,color:"#000"},itemStyle:{borderWidth:.5,borderColor:"#444",color:"#eee"},emphasis:{label:{show:!0,color:"rgb(100,0,0)"},itemStyle:{color:"rgba(255,215,0,0.8)"}},regions:[]},getRegionModel:function(t){return this._optionModelMap.get(t)||new Cl(null,this,this.ecModel)},getFormattedLabel:function(t,e){var i=this.getRegionModel(t).get("label"+("normal"===e?".":e+".")+"formatter"),n={name:t};return"function"==typeof i?(n.status=e,i(n)):"string"==typeof i?i.replace("{a}",null!=t?t:""):void 0},setZoom:function(t){this.option.zoom=t},setCenter:function(t){this.option.center=t}}),jv),Af({type:"geo",init:function(t,e){var i=new tx(e,!0);this._mapDraw=i,this.group.add(i.group)},render:function(t,e,i,n){if(!n||"geoToggleSelect"!==n.type||n.from!==this.uid){var o=this._mapDraw;t.get("show")?o.draw(t,e,i,this,n):this._mapDraw.group.removeAll(),this.group.silent=t.get("silent")}},dispose:function(){this._mapDraw&&this._mapDraw.remove()}}),ZT("toggleSelected",{type:"geoToggleSelect",event:"geoselectchanged"}),ZT("select",{type:"geoSelect",event:"geoselected"}),ZT("unSelect",{type:"geoUnSelect",event:"geounselected"});function UT(t,e,i){this._model=t}function XT(t,e,i,n){var o=i.calendarModel,a=i.seriesModel,r=o?o.coordinateSystem:a?a.coordinateSystem:null;return r===this?r[t](n):null}UT.prototype={constructor:UT,type:"calendar",dimensions:["time","value"],getDimensionsInfo:function(){return[{name:"time",type:"time"},"value"]},getRangeInfo:function(){return this._rangeInfo},getModel:function(){return this._model},getRect:function(){return this._rect},getCellWidth:function(){return this._sw},getCellHeight:function(){return this._sh},getOrient:function(){return this._orient},getFirstDayOfWeek:function(){return this._firstDayOfWeek},getDateInfo:function(t){var e=(t=Yl(t)).getFullYear(),i=t.getMonth()+1;i=i<10?"0"+i:i;var n=t.getDate();n=n<10?"0"+n:n;var o=t.getDay();return{y:e,m:i,d:n,day:o=Math.abs((o+7-this.getFirstDayOfWeek())%7),time:t.getTime(),formatedDate:e+"-"+i+"-"+n,date:t}},getNextNDay:function(t,e){return 0===(e=e||0)||(t=new Date(this.getDateInfo(t).time)).setDate(t.getDate()+e),this.getDateInfo(t)},update:function(t,e){this._firstDayOfWeek=+this._model.getModel("dayLabel").get("firstDay"),this._orient=this._model.get("orient"),this._lineWidth=this._model.getModel("itemStyle").getItemStyle().lineWidth||0,this._rangeInfo=this._getRangeInfo(this._initRangeOption());var i=this._rangeInfo.weeks||1,n=["width","height"],o=this._model.get("cellSize").slice(),a=this._model.getBoxLayoutParams(),r="horizontal"===this._orient?[i,7]:[7,i];E([0,1],function(t){u(o,t)&&(a[n[t]]=o[t]*r[t])});var s={width:e.getWidth(),height:e.getHeight()},l=this._rect=bu(a,s);function u(t,e){return null!=t[e]&&"auto"!==t[e]}E([0,1],function(t){u(o,t)||(o[t]=l[n[t]]/r[t])}),this._sw=o[0],this._sh=o[1]},dataToPoint:function(t,e){L(t)&&(t=t[0]),null==e&&(e=!0);var i=this.getDateInfo(t),n=this._rangeInfo,o=i.formatedDate;if(e&&!(i.time>=n.start.time&&i.time<n.end.time+864e5))return[NaN,NaN];var a=i.day,r=this._getRangeInfo([n.start.time,o]).nthWeek;return"vertical"===this._orient?[this._rect.x+a*this._sw+this._sw/2,this._rect.y+r*this._sh+this._sh/2]:[this._rect.x+r*this._sw+this._sw/2,this._rect.y+a*this._sh+this._sh/2]},pointToData:function(t){var e=this.pointToDate(t);return e&&e.time},dataToRect:function(t,e){var i=this.dataToPoint(t,e);return{contentShape:{x:i[0]-(this._sw-this._lineWidth)/2,y:i[1]-(this._sh-this._lineWidth)/2,width:this._sw-this._lineWidth,height:this._sh-this._lineWidth},center:i,tl:[i[0]-this._sw/2,i[1]-this._sh/2],tr:[i[0]+this._sw/2,i[1]-this._sh/2],br:[i[0]+this._sw/2,i[1]+this._sh/2],bl:[i[0]-this._sw/2,i[1]+this._sh/2]}},pointToDate:function(t){var e=Math.floor((t[0]-this._rect.x)/this._sw)+1,i=Math.floor((t[1]-this._rect.y)/this._sh)+1,n=this._rangeInfo.range;return"vertical"===this._orient?this._getDateByWeeksAndDay(i,e-1,n):this._getDateByWeeksAndDay(e,i-1,n)},convertToPixel:T(XT,"dataToPoint"),convertFromPixel:T(XT,"pointToData"),_initRangeOption:function(){var t=this._model.get("range"),e=t;if(L(e)&&1===e.length&&(e=e[0]),/^\d{4}$/.test(e)&&(t=[e+"-01-01",e+"-12-31"]),/^\d{4}[\/|-]\d{1,2}$/.test(e)){var i=this.getDateInfo(e),n=i.date;n.setMonth(n.getMonth()+1);var o=this.getNextNDay(n,-1);t=[i.formatedDate,o.formatedDate]}/^\d{4}[\/|-]\d{1,2}[\/|-]\d{1,2}$/.test(e)&&(t=[e,e]);var a=this._getRangeInfo(t);return a.start.time>a.end.time&&t.reverse(),t},_getRangeInfo:function(t){var e;(t=[this.getDateInfo(t[0]),this.getDateInfo(t[1])])[0].time>t[1].time&&(e=!0,t.reverse());var i=Math.floor(t[1].time/864e5)-Math.floor(t[0].time/864e5)+1,n=new Date(t[0].time),o=n.getDate(),a=t[1].date.getDate();n.setDate(o+i-1);var r=n.getDate();if(r!==a)for(var s=0<n.getTime()-t[1].time?1:-1;(r=n.getDate())!==a&&0<(n.getTime()-t[1].time)*s;)i-=s,n.setDate(r-s);var l=Math.floor((i+t[0].day+6)/7),u=e?1-l:l-1;return e&&t.reverse(),{range:[t[0].formatedDate,t[1].formatedDate],start:t[0],end:t[1],allDay:i,weeks:l,nthWeek:u,fweek:t[0].day,lweek:t[1].day}},_getDateByWeeksAndDay:function(t,e,i){var n=this._getRangeInfo(i);if(t>n.weeks||0===t&&e<n.fweek||t===n.weeks&&e>n.lweek)return!1;var o=7*(t-1)-n.fweek+e,a=new Date(n.start.time);return a.setDate(n.start.d+o),this.getDateInfo(a)}},UT.dimensions=UT.prototype.dimensions,UT.getDimensionsInfo=UT.prototype.getDimensionsInfo,UT.create=function(i,n){var o=[];return i.eachComponent("calendar",function(t){var e=new UT(t,i,n);o.push(e),t.coordinateSystem=e}),i.eachSeries(function(t){"calendar"===t.get("coordinateSystem")&&(t.coordinateSystem=o[t.get("calendarIndex")||0])}),o},lh.register("calendar",UT);var YT=ku.extend({type:"calendar",coordinateSystem:null,defaultOption:{zlevel:0,z:2,left:80,top:60,cellSize:20,orient:"horizontal",splitLine:{show:!0,lineStyle:{color:"#000",width:1,type:"solid"}},itemStyle:{color:"#fff",borderWidth:1,borderColor:"#ccc"},dayLabel:{show:!0,firstDay:0,position:"start",margin:"50%",nameMap:"en",color:"#000"},monthLabel:{show:!0,position:"start",margin:5,align:"center",nameMap:"en",formatter:null,color:"#000"},yearLabel:{show:!0,position:null,margin:30,formatter:null,color:"#ccc",fontFamily:"sans-serif",fontWeight:"bolder",fontSize:20}},init:function(t,e,i,n){var o=Iu(t);YT.superApply(this,"init",arguments),jT(t,o)},mergeOption:function(t,e){YT.superApply(this,"mergeOption",arguments),jT(this.option,t)}});function jT(t,e){var i=t.cellSize;L(i)?1===i.length&&(i[1]=i[0]):i=t.cellSize=[i,i];var n=O([0,1],function(t){return function(t,e){return null!=t[xu[e][0]]||null!=t[xu[e][1]]&&null!=t[xu[e][2]]}(e,t)&&(i[t]="auto"),null!=i[t]&&"auto"!==i[t]});Mu(t,e,{type:"box",ignoreSize:n})}var qT={EN:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],CN:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},KT={EN:["S","M","T","W","T","F","S"],CN:["日","一","二","三","四","五","六"]};Af({type:"calendar",_tlpoints:null,_blpoints:null,_firstDayOfMonth:null,_firstDayPoints:null,render:function(t,e,i){var n=this.group;n.removeAll();var o=t.coordinateSystem,a=o.getRangeInfo(),r=o.getOrient();this._renderDayRect(t,a,n),this._renderLines(t,a,r,n),this._renderYearText(t,a,r,n),this._renderMonthText(t,r,n),this._renderWeekText(t,a,r,n)},_renderDayRect:function(t,e,i){for(var n=t.coordinateSystem,o=t.getModel("itemStyle").getItemStyle(),a=n.getCellWidth(),r=n.getCellHeight(),s=e.start.time;s<=e.end.time;s=n.getNextNDay(s,1).time){var l=n.dataToRect([s],!1).tl,u=new rs({shape:{x:l[0],y:l[1],width:a,height:r},cursor:"default",style:o});i.add(u)}},_renderLines:function(i,t,n,o){var a=this,r=i.coordinateSystem,s=i.getModel("splitLine.lineStyle").getLineStyle(),l=i.get("splitLine.show"),e=s.lineWidth;this._tlpoints=[],this._blpoints=[],this._firstDayOfMonth=[],this._firstDayPoints=[];for(var u=t.start,h=0;u.time<=t.end.time;h++){d(u.formatedDate),0===h&&(u=r.getDateInfo(t.start.y+"-"+t.start.m));var c=u.date;c.setMonth(c.getMonth()+1),u=r.getDateInfo(c)}function d(t){a._firstDayOfMonth.push(r.getDateInfo(t)),a._firstDayPoints.push(r.dataToRect([t],!1).tl);var e=a._getLinePointsOfOneWeek(i,t,n);a._tlpoints.push(e[0]),a._blpoints.push(e[e.length-1]),l&&a._drawSplitline(e,s,o)}d(r.getNextNDay(t.end.time,1).formatedDate),l&&this._drawSplitline(a._getEdgesPoints(a._tlpoints,e,n),s,o),l&&this._drawSplitline(a._getEdgesPoints(a._blpoints,e,n),s,o)},_getEdgesPoints:function(t,e,i){var n=[t[0].slice(),t[t.length-1].slice()],o="horizontal"===i?0:1;return n[0][o]=n[0][o]-e/2,n[1][o]=n[1][o]+e/2,n},_drawSplitline:function(t,e,i){var n=new ts({z2:20,shape:{points:t},style:e});i.add(n)},_getLinePointsOfOneWeek:function(t,e,i){var n=t.coordinateSystem;e=n.getDateInfo(e);for(var o=[],a=0;a<7;a++){var r=n.getNextNDay(e.time,a),s=n.dataToRect([r.time],!1);o[2*r.day]=s.tl,o[2*r.day+1]=s["horizontal"===i?"bl":"tr"]}return o},_formatterLabel:function(t,e){return"string"==typeof t&&t?uu(t,e):"function"==typeof t?t(e):e.nameMap},_yearTextPositionControl:function(t,e,i,n,o){e=e.slice();var a=["center","bottom"];"bottom"===n?(e[1]+=o,a=["center","top"]):"left"===n?e[0]-=o:"right"===n?(e[0]+=o,a=["center","top"]):e[1]-=o;var r=0;return"left"!==n&&"right"!==n||(r=Math.PI/2),{rotation:r,position:e,style:{textAlign:a[0],textVerticalAlign:a[1]}}},_renderYearText:function(t,e,i,n){var o=t.getModel("yearLabel");if(o.get("show")){var a=o.get("margin"),r=o.get("position");r=r||("horizontal"!==i?"top":"left");var s=[this._tlpoints[this._tlpoints.length-1],this._blpoints[0]],l=(s[0][0]+s[1][0])/2,u=(s[0][1]+s[1][1])/2,h="horizontal"===i?0:1,c={top:[l,s[h][1]],bottom:[l,s[1-h][1]],left:[s[1-h][0],u],right:[s[h][0],u]},d=e.start.y;+e.end.y>+e.start.y&&(d=d+"-"+e.end.y);var f=o.get("formatter"),p={start:e.start.y,end:e.end.y,nameMap:d},g=this._formatterLabel(f,p),m=new Ur({z2:30});nl(m.style,o,{text:g}),m.attr(this._yearTextPositionControl(m,c[r],i,r,a)),n.add(m)}},_monthTextPositionControl:function(t,e,i,n,o){var a="left",r="top",s=t[0],l=t[1];return"horizontal"===i?(l+=o,e&&(a="center"),"start"===n&&(r="bottom")):(s+=o,e&&(r="middle"),"start"===n&&(a="right")),{x:s,y:l,textAlign:a,textVerticalAlign:r}},_renderMonthText:function(t,e,i){var n=t.getModel("monthLabel");if(n.get("show")){var o=n.get("nameMap"),a=n.get("margin"),r=n.get("position"),s=n.get("align"),l=[this._tlpoints,this._blpoints];R(o)&&(o=qT[o.toUpperCase()]||[]);var u="start"===r?0:1,h="horizontal"===e?0:1;a="start"===r?-a:a;for(var c="center"===s,d=0;d<l[u].length-1;d++){var f=l[u][d].slice(),p=this._firstDayOfMonth[d];if(c){var g=this._firstDayPoints[d];f[h]=(g[h]+l[0][d+1][h])/2}var m=n.get("formatter"),v=o[+p.m-1],y={yyyy:p.y,yy:(p.y+"").slice(2),MM:p.m,M:+p.m,nameMap:v},x=this._formatterLabel(m,y),_=new Ur({z2:30});P(nl(_.style,n,{text:x}),this._monthTextPositionControl(f,c,e,r,a)),i.add(_)}}},_weekTextPositionControl:function(t,e,i,n,o){var a="center",r="middle",s=t[0],l=t[1],u="start"===i;return"horizontal"===e?(s=s+n+(u?1:-1)*o[0]/2,a=u?"right":"left"):(l=l+n+(u?1:-1)*o[1]/2,r=u?"bottom":"top"),{x:s,y:l,textAlign:a,textVerticalAlign:r}},_renderWeekText:function(t,e,i,n){var o=t.getModel("dayLabel");if(o.get("show")){var a=t.coordinateSystem,r=o.get("position"),s=o.get("nameMap"),l=o.get("margin"),u=a.getFirstDayOfWeek();R(s)&&(s=KT[s.toUpperCase()]||[]);var h=a.getNextNDay(e.end.time,7-e.lweek).time,c=[a.getCellWidth(),a.getCellHeight()];l=Rl(l,c["horizontal"===i?0:1]),"start"===r&&(h=a.getNextNDay(e.start.time,-(7+e.fweek)).time,l=-l);for(var d=0;d<7;d++){var f,p=a.getNextNDay(h,d),g=a.dataToRect([p.time],!1).center;f=Math.abs((d+u)%7);var m=new Ur({z2:30});P(nl(m.style,o,{text:s[f]}),this._weekTextPositionControl(g,i,r,l,c)),n.add(m)}}}});var $T={path:null,compoundPath:null,group:Ci,image:Qn,text:Ur};yf(function(t){var e=t.graphic;L(e)?e[0]&&e[0].elements?t.graphic=[t.graphic[0]]:t.graphic=[{elements:e}]:e&&!e.elements&&(t.graphic=[{elements:[e]}])});var JT=Tf({type:"graphic",defaultOption:{elements:[],parentId:null},_elOptionsToUpdate:null,mergeOption:function(t){var e=this.option.elements;this.option.elements=null,JT.superApply(this,"mergeOption",arguments),this.option.elements=e},optionUpdated:function(t,e){var i=this.option,n=(e?i:t).elements,o=i.elements=e?[]:i.elements,a=[];this._flatten(n,a);var r=Ho(o,a);Zo(r);var s=this._elOptionsToUpdate=[];E(r,function(t,e){var i=t.option;i&&(s.push(i),function(t,e){var i=t.exist;if(e.id=t.keyInfo.id,!e.type&&i&&(e.type=i.type),null==e.parentId){var n=e.parentOption;n?e.parentId=n.id:i&&(e.parentId=i.parentId)}e.parentOption=null}(t,i),function(t,e,i){var n=P({},i),o=t[e],a=i.$action||"merge";"merge"===a?o?(m(o,n,!0),Mu(o,n,{ignoreSize:!0}),Tu(i,o)):t[e]=n:"replace"===a?t[e]=n:"remove"===a&&o&&(t[e]=null)}(o,e,i),function(t,e){if(!t)return;t.hv=e.hv=[eA(e,["left","right"]),eA(e,["top","bottom"])],"group"===t.type&&(null==t.width&&(t.width=e.width=0),null==t.height&&(t.height=e.height=0))}(o[e],i))},this);for(var l=o.length-1;0<=l;l--)null==o[l]?o.splice(l,1):delete o[l].$action},_flatten:function(t,i,n){E(t,function(t){if(t){n&&(t.parentOption=n),i.push(t);var e=t.children;"group"===t.type&&e&&this._flatten(e,i,t),delete t.children}},this)},useElOptionsToUpdate:function(){var t=this._elOptionsToUpdate;return this._elOptionsToUpdate=null,t}});function QT(t,e,i,n){var o=i.type,a=new($T.hasOwnProperty(o)?$T[o]:ks(o))(i);e.add(a),n.set(t,a),a.__ecGraphicId=t}function tA(t,e){var i=t&&t.parent;i&&("group"===t.type&&t.traverse(function(t){tA(t,e)}),e.removeKey(t.__ecGraphicId),i.remove(t))}function eA(e,t){var i;return E(t,function(t){null!=e[t]&&"auto"!==e[t]&&(i=!0)}),i}Af({type:"graphic",init:function(t,e){this._elMap=Q(),this._lastGraphicModel},render:function(t,e,i){t!==this._lastGraphicModel&&this._clear(),this._lastGraphicModel=t,this._updateElements(t),this._relocate(t,i)},_updateElements:function(u){var t=u.useElOptionsToUpdate();if(t){var h=this._elMap,c=this.group;E(t,function(t){var e=t.$action,i=t.id,n=h.get(i),o=t.parentId,a=null!=o?h.get(o):c,r=t.style;"text"===t.type&&r&&(t.hv&&t.hv[1]&&(r.textVerticalAlign=r.textBaseline=null),!r.hasOwnProperty("textFill")&&r.fill&&(r.textFill=r.fill),!r.hasOwnProperty("textStroke")&&r.stroke&&(r.textStroke=r.stroke));var s=function(e){return e=P({},e),E(["id","parentId","$action","hv","bounding"].concat(yu),function(t){delete e[t]}),e}(t);e&&"merge"!==e?"replace"===e?(tA(n,h),QT(i,a,s,h)):"remove"===e&&tA(n,h):n?n.attr(s):QT(i,a,s,h);var l=h.get(i);l&&(l.__ecGraphicWidthOption=t.width,l.__ecGraphicHeightOption=t.height,function(t,e){var i=t.eventData;t.silent||t.ignore||i||(i=t.eventData={componentType:"graphic",componentIndex:e.componentIndex,name:t.name});i&&(i.info=t.info)}(l,u))})}},_relocate:function(t,e){for(var i=t.option.elements,n=this.group,o=this._elMap,a=e.getWidth(),r=e.getHeight(),s=0;s<i.length;s++){var l=i[s];if((h=o.get(l.id))&&h.isGroup){var u=(c=h.parent)===n;h.__ecGraphicWidth=Rl(h.__ecGraphicWidthOption,u?a:c.__ecGraphicWidth)||0,h.__ecGraphicHeight=Rl(h.__ecGraphicHeightOption,u?r:c.__ecGraphicHeight)||0}}for(s=i.length-1;0<=s;s--){var h,c;l=i[s];if(h=o.get(l.id))Su(h,l,(c=h.parent)===n?{width:a,height:r}:{width:c.__ecGraphicWidth,height:c.__ecGraphicHeight},null,{hv:l.hv,boundingMode:l.bounding})}},_clear:function(){var e=this._elMap;e.each(function(t){tA(t,e)}),this._elMap=Q()},dispose:function(){this._clear()}});var iA={};function nA(t,e){iA[t]=e}function oA(t){return iA[t]}var aA=Tf({type:"toolbox",layoutMode:{type:"box",ignoreSize:!0},optionUpdated:function(){aA.superApply(this,"optionUpdated",arguments),E(this.option.feature,function(t,e){var i=oA(e);i&&m(t,i.defaultOption)})},defaultOption:{show:!0,z:6,zlevel:0,orient:"horizontal",left:"right",top:"top",backgroundColor:"transparent",borderColor:"#ccc",borderRadius:0,borderWidth:0,padding:5,itemSize:15,itemGap:8,showTitle:!0,iconStyle:{borderColor:"#666",color:"none"},emphasis:{iconStyle:{borderColor:"#3E98C5"}},tooltip:{show:!1}}});function rA(t,e){var i=iu(e.get("padding")),n=e.getItemStyle(["color","opacity"]);return n.fill=e.get("backgroundColor"),t=new rs({shape:{x:t.x-i[3],y:t.y-i[0],width:t.width+i[1]+i[3],height:t.height+i[0]+i[2],r:e.get("borderRadius")},style:n,silent:!0,z2:-1})}Af({type:"toolbox",render:function(h,c,d,l){var f=this.group;if(f.removeAll(),h.get("show")){var p=+h.get("itemSize"),u=h.get("feature")||{},g=this._features||(this._features={}),m=[];E(u,function(t,e){m.push(e)}),new kf(this._featureNames||[],m).add(t).update(t).remove(T(t,null)).execute(),this._featureNames=m,function(t,e,i){var n=e.getBoxLayoutParams(),o=e.get("padding"),a={width:i.getWidth(),height:i.getHeight()},r=bu(n,a,o);wu(e.get("orient"),t,e.get("itemGap"),r.width,r.height),Su(t,n,a,o)}(f,h,d),f.add(rA(f.getBoundingRect(),h)),f.eachChild(function(t){var e=t.__title,i=t.hoverStyle;if(i&&e){var n=gn(e,An(i)),o=t.position[0]+f.position[0],a=!1;t.position[1]+f.position[1]+p+n.height>d.getHeight()&&(i.textPosition="top",a=!0);var r=a?-5-n.height:p+8;o+n.width/2>d.getWidth()?(i.textPosition=["100%",r],i.textAlign="right"):o-n.width/2<0&&(i.textPosition=[0,r],i.textAlign="left")}})}function t(t,e){var i,n=m[t],o=m[e],a=u[n],r=new Cl(a,h,h.ecModel);if(l&&null!=l.newTitle&&l.featureName===n&&(a.title=l.newTitle),n&&!o){if(function(t){return 0===t.indexOf("my")}(n))i={model:r,onclick:r.option.onclick,featureName:n};else{var s=oA(n);if(!s)return;i=new s(r,c,d)}g[n]=i}else{if(!(i=g[o]))return;i.model=r,i.ecModel=c,i.api=d}n||!o?r.get("show")&&!i.unusable?(function(o,a,t){var r=o.getModel("iconStyle"),s=o.getModel("emphasis.iconStyle"),e=a.getIcons?a.getIcons():o.get("icon"),l=o.get("title")||{};if("string"==typeof e){var i=e,n=l;l={},(e={})[t]=i,l[t]=n}var u=o.iconPaths={};E(e,function(t,e){var i=yl(t,{},{x:-p/2,y:-p/2,width:p,height:p});i.setStyle(r.getItemStyle()),i.hoverStyle=s.getItemStyle(),i.setStyle({text:l[e],textAlign:s.get("textAlign"),textBorderRadius:s.get("textBorderRadius"),textPadding:s.get("textPadding"),textFill:null});var n=h.getModel("tooltip");n&&n.get("show")&&i.attr("tooltip",P({content:l[e],formatter:n.get("formatter",!0)||function(){return l[e]},formatterParams:{componentType:"toolbox",name:e,title:l[e],$vars:["name","title"]},position:n.get("position",!0)||"bottom"},n.option)),$s(i),h.get("showTitle")&&(i.__title=l[e],i.on("mouseover",function(){var t=s.getItemStyle(),e="vertical"===h.get("orient")?null==h.get("right")?"right":"left":null==h.get("bottom")?"bottom":"top";i.setStyle({textFill:s.get("textFill")||t.fill||t.stroke||"#000",textBackgroundColor:s.get("textBackgroundColor"),textPosition:s.get("textPosition")||e})}).on("mouseout",function(){i.setStyle({textFill:null,textBackgroundColor:null})})),i.trigger(o.get("iconStatus."+e)||"normal"),f.add(i),i.on("click",A(a.onclick,a,c,d,e)),u[e]=i})}(r,i,n),r.setIconStatus=function(t,e){var i=this.option,n=this.iconPaths;i.iconStatus=i.iconStatus||{},i.iconStatus[t]=e,n[t]&&n[t].trigger(e)},i.render&&i.render(r,c,d,l)):i.remove&&i.remove(c,d):i.dispose&&i.dispose(c,d)}},updateView:function(t,e,i,n){E(this._features,function(t){t.updateView&&t.updateView(t.model,e,i,n)})},remove:function(e,i){E(this._features,function(t){t.remove&&t.remove(e,i)}),this.group.removeAll()},dispose:function(e,i){E(this._features,function(t){t.dispose&&t.dispose(e,i)})}});var sA=Oc.toolbox.saveAsImage;function lA(t){this.model=t}lA.defaultOption={show:!0,icon:"M4.7,22.9L29.3,45.5L54.7,23.4M4.6,43.6L4.6,58L53.8,58L53.8,43.6M29.2,45.1L29.2,0",title:sA.title,type:"png",connectedBackgroundColor:"#fff",name:"",excludeComponents:["toolbox"],pixelRatio:1,lang:sA.lang.slice()},lA.prototype.unusable=!v.canvasSupported,lA.prototype.onclick=function(t,e){var i=this.model,n=i.get("name")||t.get("title.0.text")||"echarts",o="svg"===e.getZr().painter.getType()?"svg":i.get("type",!0)||"png",a=e.getConnectedDataURL({type:o,backgroundColor:i.get("backgroundColor",!0)||t.get("backgroundColor")||"#fff",connectedBackgroundColor:i.get("connectedBackgroundColor"),excludeComponents:i.get("excludeComponents"),pixelRatio:i.get("pixelRatio")});if("function"!=typeof MouseEvent||v.browser.ie||v.browser.edge)if(window.navigator.msSaveOrOpenBlob){for(var r=atob(a.split(",")[1]),s=r.length,l=new Uint8Array(s);s--;)l[s]=r.charCodeAt(s);var u=new Blob([l]);window.navigator.msSaveOrOpenBlob(u,n+"."+o)}else{var h=i.get("lang"),c='<body style="margin:0;"><img src="'+a+'" style="max-width:100%;" title="'+(h&&h[0]||"")+'" /></body>';window.open().document.write(c)}else{var d=document.createElement("a");d.download=n+"."+o,d.target="_blank",d.href=a;var f=new MouseEvent("click",{view:window,bubbles:!0,cancelable:!1});d.dispatchEvent(f)}},nA("saveAsImage",lA);var uA=Oc.toolbox.magicType,hA="__ec_magicType_stack__";function cA(t){this.model=t}cA.defaultOption={show:!0,type:[],icon:{line:"M4.1,28.9h7.1l9.3-22l7.4,38l9.7-19.7l3,12.8h14.9M4.1,58h51.4",bar:"M6.7,22.9h10V48h-10V22.9zM24.9,13h10v35h-10V13zM43.2,2h10v46h-10V2zM3.1,58h53.7",stack:"M8.2,38.4l-8.4,4.1l30.6,15.3L60,42.5l-8.1-4.1l-21.5,11L8.2,38.4z M51.9,30l-8.1,4.2l-13.4,6.9l-13.9-6.9L8.2,30l-8.4,4.2l8.4,4.2l22.2,11l21.5-11l8.1-4.2L51.9,30z M51.9,21.7l-8.1,4.2L35.7,30l-5.3,2.8L24.9,30l-8.4-4.1l-8.3-4.2l-8.4,4.2L8.2,30l8.3,4.2l13.9,6.9l13.4-6.9l8.1-4.2l8.1-4.1L51.9,21.7zM30.4,2.2L-0.2,17.5l8.4,4.1l8.3,4.2l8.4,4.2l5.5,2.7l5.3-2.7l8.1-4.2l8.1-4.2l8.1-4.1L30.4,2.2z"},title:k(uA.title),option:{},seriesIndex:{}};var dA=cA.prototype;dA.getIcons=function(){var t=this.model,e=t.get("icon"),i={};return E(t.get("type"),function(t){e[t]&&(i[t]=e[t])}),i};var fA={line:function(t,e,i,n){if("bar"===t)return m({id:e,type:"line",data:i.get("data"),stack:i.get("stack"),markPoint:i.get("markPoint"),markLine:i.get("markLine")},n.get("option.line")||{},!0)},bar:function(t,e,i,n){if("line"===t)return m({id:e,type:"bar",data:i.get("data"),stack:i.get("stack"),markPoint:i.get("markPoint"),markLine:i.get("markLine")},n.get("option.bar")||{},!0)},stack:function(t,e,i,n){var o=i.get("stack")===hA;if("line"===t||"bar"===t)return n.setIconStatus("stack",o?"normal":"emphasis"),m({id:e,stack:o?"":hA},n.get("option.stack")||{},!0)}},pA=[["line","bar"],["stack"]];dA.onclick=function(u,t,h){var c=this.model,e=c.get("seriesIndex."+h);if(fA[h]){var i,d={series:[]};if(E(pA,function(t){0<=_(t,h)&&E(t,function(t){c.setIconStatus(t,"normal")})}),c.setIconStatus(h,"emphasis"),u.eachComponent({mainType:"series",query:null==e?null:{seriesIndex:e}},function(t){var e=t.subType,i=t.id,n=fA[h](e,i,t,c);n&&(D(n,t.option),d.series.push(n));var o=t.coordinateSystem;if(o&&"cartesian2d"===o.type&&("line"===h||"bar"===h)){var a=o.getAxesByScale("ordinal")[0];if(a){var r=a.dim+"Axis",s=u.queryComponents({mainType:r,index:t.get(name+"Index"),id:t.get(name+"Id")})[0].componentIndex;d[r]=d[r]||[];for(var l=0;l<=s;l++)d[r][s]=d[r][s]||{};d[r][s].boundaryGap="bar"===h}}}),"stack"===h)i=d.series&&d.series[0]&&d.series[0].stack===hA?m({stack:uA.title.tiled},uA.title):k(uA.title);t.dispatchAction({type:"changeMagicType",currentType:h,newOption:d,newTitle:i,featureName:"magicType"})}},_f({type:"changeMagicType",event:"magicTypeChanged",update:"prepareAndUpdate"},function(t,e){e.mergeOption(t.newOption)}),nA("magicType",cA);var gA=Oc.toolbox.dataView,mA=new Array(60).join("-"),vA="\t";function yA(t){var e=function(t){var o={},a=[],r=[];return t.eachRawSeries(function(t){var e=t.coordinateSystem;if(!e||"cartesian2d"!==e.type&&"polar"!==e.type)a.push(t);else{var i=e.getBaseAxis();if("category"===i.type){var n=i.dim+"_"+i.index;o[n]||(o[n]={categoryAxis:i,valueAxis:e.getOtherAxis(i),series:[]},r.push({axisDim:i.dim,axisIndex:i.index})),o[n].series.push(t)}else a.push(t)}}),{seriesGroupByCategoryAxis:o,other:a,meta:r}}(t);return{value:M([function(t){var h=[];return E(t,function(t,e){var i=t.categoryAxis,n=t.valueAxis.dim,o=[" "].concat(O(t.series,function(t){return t.name})),a=[i.model.getCategories()];E(t.series,function(t){a.push(t.getRawData().mapArray(n,function(t){return t}))});for(var r=[o.join(vA)],s=0;s<a[0].length;s++){for(var l=[],u=0;u<a.length;u++)l.push(a[u][s]);r.push(l.join(vA))}h.push(r.join("\n"))}),h.join("\n\n"+mA+"\n\n")}(e.seriesGroupByCategoryAxis),function(t){return O(t,function(t){var o=t.getRawData(),a=[t.name],r=[];return o.each(o.dimensions,function(){for(var t=arguments.length,e=arguments[t-1],i=o.getName(e),n=0;n<t-1;n++)r[n]=arguments[n];a.push((i?i+vA:"")+r.join(vA))}),a.join("\n")}).join("\n\n"+mA+"\n\n")}(e.other)],function(t){return t.replace(/[\n\t\s]/g,"")}).join("\n\n"+mA+"\n\n"),meta:e.meta}}function xA(t){return t.replace(/^\s\s*/,"").replace(/\s\s*$/,"")}var _A=new RegExp("["+vA+"]+","g");function wA(t,a){var e=t.split(new RegExp("\n*"+mA+"\n*","g")),r={series:[]};return E(e,function(t,e){if(function(t){if(0<=t.slice(0,t.indexOf("\n")).indexOf(vA))return!0}(t)){var i=function(t){for(var e=t.split(/\n+/g),i=[],n=O(xA(e.shift()).split(_A),function(t){return{name:t,data:[]}}),o=0;o<e.length;o++){var a=xA(e[o]).split(_A);i.push(a.shift());for(var r=0;r<a.length;r++)n[r]&&(n[r].data[o]=a[r])}return{series:n,categories:i}}(t),n=a[e],o=n.axisDim+"Axis";n&&(r[o]=r[o]||[],r[o][n.axisIndex]={data:i.categories},r.series=r.series.concat(i.series))}else{i=function(t){for(var e=t.split(/\n+/g),i=xA(e.shift()),n=[],o=0;o<e.length;o++){var a,r=xA(e[o]).split(_A),s="",l=!1;a=isNaN(r[0])?(l=!0,s=r[0],r=r.slice(1),n[o]={name:s,value:[]},n[o].value):n[o]=[];for(var u=0;u<r.length;u++)a.push(+r[u]);1===a.length&&(l?n[o].value=a[0]:n[o]=a[0])}return{name:i,data:n}}(t);r.series.push(i)}}),r}function bA(t){this._dom=null,this.model=t}bA.defaultOption={show:!0,readOnly:!1,optionToContent:null,contentToOption:null,icon:"M17.5,17.3H33 M17.5,17.3H33 M45.4,29.5h-28 M11.5,2v56H51V14.8L38.4,2H11.5z M38.4,2.2v12.7H51 M45.4,41.7h-28",title:k(gA.title),lang:k(gA.lang),backgroundColor:"#fff",textColor:"#000",textareaColor:"#fff",textareaBorderColor:"#333",buttonColor:"#c23531",buttonTextColor:"#fff"},bA.prototype.onclick=function(t,e){var i=e.getDom(),n=this.model;this._dom&&i.removeChild(this._dom);var o=document.createElement("div");o.style.cssText="position:absolute;left:5px;top:5px;bottom:5px;right:5px;",o.style.backgroundColor=n.get("backgroundColor")||"#fff";var a=document.createElement("h4"),r=n.get("lang")||[];a.innerHTML=r[0]||n.get("title"),a.style.cssText="margin: 10px 20px;",a.style.color=n.get("textColor");var s=document.createElement("div"),l=document.createElement("textarea");s.style.cssText="display:block;width:100%;overflow:auto;";var u=n.get("optionToContent"),h=n.get("contentToOption"),c=yA(t);if("function"==typeof u){var d=u(e.getOption());"string"==typeof d?s.innerHTML=d:G(d)&&s.appendChild(d)}else s.appendChild(l),l.readOnly=n.get("readOnly"),l.style.cssText="width:100%;height:100%;font-family:monospace;font-size:14px;line-height:1.6rem;",l.style.color=n.get("textColor"),l.style.borderColor=n.get("textareaBorderColor"),l.style.backgroundColor=n.get("textareaColor"),l.value=c.value;var f=c.meta,p=document.createElement("div");p.style.cssText="position:absolute;bottom:0;left:0;right:0;";var g="float:right;margin-right:20px;border:none;cursor:pointer;padding:2px 5px;font-size:12px;border-radius:3px",m=document.createElement("div"),v=document.createElement("div");g+=";background-color:"+n.get("buttonColor"),g+=";color:"+n.get("buttonTextColor");var y=this;function x(){i.removeChild(o),y._dom=null}Ut(m,"click",x),Ut(v,"click",function(){var t;try{t="function"==typeof h?h(s,e.getOption()):wA(l.value,f)}catch(t){throw x(),new Error("Data view format error "+t)}t&&e.dispatchAction({type:"changeDataView",newOption:t}),x()}),m.innerHTML=r[1],v.innerHTML=r[2],v.style.cssText=g,m.style.cssText=g,n.get("readOnly")||p.appendChild(v),p.appendChild(m),o.appendChild(a),o.appendChild(s),o.appendChild(p),s.style.height=i.clientHeight-80+"px",i.appendChild(o),this._dom=o},bA.prototype.remove=function(t,e){this._dom&&e.getDom().removeChild(this._dom)},bA.prototype.dispose=function(t,e){this.remove(t,e)},nA("dataView",bA),_f({type:"changeDataView",event:"dataViewChanged",update:"prepareAndUpdate"},function(t,n){var o=[];E(t.newOption.series,function(t){var e=n.getSeriesByName(t.name)[0];if(e){var i=e.get("data");o.push({name:t.name,data:function(t,n){return O(t,function(t,e){var i=n&&n[e];return z(i)&&!L(i)?(z(t)&&!L(t)&&(t=t.value),D({value:t},i)):t})}(t.data,i)})}else o.push(P({type:"scatter"},t))}),n.mergeOption(D({series:o},t.newOption))});var SA=E,MA=_,IA=T,TA=["dataToPoint","pointToData"],AA=["grid","xAxis","yAxis","geo","graph","polar","radiusAxis","angleAxis","bmap"];function DA(t,e,i){var n=this._targetInfoList=[],o={},a=kA(e,t);SA(PA,function(t,e){i&&i.include&&!(0<=MA(i.include,e))||t(a,n,o)})}var CA=DA.prototype;function LA(t){return t[0]>t[1]&&t.reverse(),t}function kA(t,e){return Ko(t,e,{includeMainTypes:AA})}CA.setOutputRanges=function(t,e){this.matchOutputRanges(t,e,function(t,e,i){if((t.coordRanges||(t.coordRanges=[])).push(e),!t.coordRange){t.coordRange=e;var n=EA[t.brushType](0,i,e);t.__rangeOffset={offset:zA[t.brushType](n.values,t.range,[1,1]),xyMinMax:n.xyMinMax}}})},CA.matchOutputRanges=function(t,n,o){SA(t,function(i){var t=this.findTargetInfo(i,n);t&&!0!==t&&E(t.coordSyses,function(t){var e=EA[i.brushType](1,t,i.range);o(i,e.values,t,n)})},this)},CA.setInputRanges=function(t,o){SA(t,function(t){var e=this.findTargetInfo(t,o);if(t.range=t.range||[],e&&!0!==e){t.panelId=e.panelId;var i=EA[t.brushType](0,e.coordSys,t.coordRange),n=t.__rangeOffset;t.range=n?zA[t.brushType](i.values,n.offset,function(t,e){var i=VA(t),n=VA(e),o=[i[0]/n[0],i[1]/n[1]];return isNaN(o[0])&&(o[0]=1),isNaN(o[1])&&(o[1]=1),o}(i.xyMinMax,n.xyMinMax)):i.values}},this)},CA.makePanelOpts=function(i,n){return O(this._targetInfoList,function(t){var e=t.getPanelRect();return{panelId:t.panelId,defaultBrushType:n&&n(t),clipPath:eS(e),isTargetByCursor:nS(e,i,t.coordSysModel),getLinearBrushOtherExtent:iS(e)}})},CA.controlSeries=function(t,e,i){var n=this.findTargetInfo(t,i);return!0===n||n&&0<=MA(n.coordSyses,e.coordinateSystem)},CA.findTargetInfo=function(t,e){for(var i=this._targetInfoList,n=kA(e,t),o=0;o<i.length;o++){var a=i[o],r=t.panelId;if(r){if(a.panelId===r)return a}else for(o=0;o<NA.length;o++)if(NA[o](n,a))return a}return!0};var PA={grid:function(t,n){var o=t.xAxisModels,a=t.yAxisModels,e=t.gridModels,i=Q(),r={},s={};(o||a||e)&&(SA(o,function(t){var e=t.axis.grid.model;i.set(e.id,e),r[e.id]=!0}),SA(a,function(t){var e=t.axis.grid.model;i.set(e.id,e),s[e.id]=!0}),SA(e,function(t){i.set(t.id,t),r[t.id]=!0,s[t.id]=!0}),i.each(function(t){var e=t.coordinateSystem,i=[];SA(e.getCartesians(),function(t,e){(0<=MA(o,t.getAxis("x").model)||0<=MA(a,t.getAxis("y").model))&&i.push(t)}),n.push({panelId:"grid--"+t.id,gridModel:t,coordSysModel:t,coordSys:i[0],coordSyses:i,getPanelRect:OA.grid,xAxisDeclared:r[t.id],yAxisDeclared:s[t.id]})}))},geo:function(t,i){SA(t.geoModels,function(t){var e=t.coordinateSystem;i.push({panelId:"geo--"+t.id,geoModel:t,coordSysModel:t,coordSys:e,coordSyses:[e],getPanelRect:OA.geo})})}},NA=[function(t,e){var i=t.xAxisModel,n=t.yAxisModel,o=t.gridModel;return!o&&i&&(o=i.axis.grid.model),!o&&n&&(o=n.axis.grid.model),o&&o===e.gridModel},function(t,e){var i=t.geoModel;return i&&i===e.geoModel}],OA={grid:function(){return this.coordSys.grid.getRect().clone()},geo:function(){var t=this.coordSys,e=t.getBoundingRect().clone();return e.applyTransform(fl(t)),e}},EA={lineX:IA(RA,0),lineY:IA(RA,1),rect:function(t,e,i){var n=e[TA[t]]([i[0][0],i[1][0]]),o=e[TA[t]]([i[0][1],i[1][1]]),a=[LA([n[0],o[0]]),LA([n[1],o[1]])];return{values:a,xyMinMax:a}},polygon:function(i,n,t){var o=[[1/0,-1/0],[1/0,-1/0]];return{values:O(t,function(t){var e=n[TA[i]](t);return o[0][0]=Math.min(o[0][0],e[0]),o[1][0]=Math.min(o[1][0],e[1]),o[0][1]=Math.max(o[0][1],e[0]),o[1][1]=Math.max(o[1][1],e[1]),e}),xyMinMax:o}}};function RA(t,e,i,n){var o=i.getAxis(["x","y"][t]),a=LA(O([0,1],function(t){return e?o.coordToData(o.toLocalCoord(n[t])):o.toGlobalCoord(o.dataToCoord(n[t]))})),r=[];return r[t]=a,r[1-t]=[NaN,NaN],{values:a,xyMinMax:r}}var zA={lineX:IA(BA,0),lineY:IA(BA,1),rect:function(t,e,i){return[[t[0][0]-i[0]*e[0][0],t[0][1]-i[0]*e[0][1]],[t[1][0]-i[1]*e[1][0],t[1][1]-i[1]*e[1][1]]]},polygon:function(t,i,n){return O(t,function(t,e){return[t[0]-n[0]*i[e][0],t[1]-n[1]*i[e][1]]})}};function BA(t,e,i,n){return[e[0]-n[t]*i[0],e[1]-n[t]*i[1]]}function VA(t){return t?[t[0][1]-t[0][0],t[1][1]-t[1][0]]:[NaN,NaN]}var GA=E,FA="\0_ec_hist_store";function WA(t){var e=t[FA];return e=e||(t[FA]=[{}])}ku.registerSubTypeDefaulter("dataZoom",function(){return"slider"});var HA=["cartesian2d","polar","singleAxis"];var ZA,UA,XA,YA,jA=(UA=["axisIndex","axis","index","id"],XA=O(ZA=(ZA=["x","y","z","radius","angle","single"]).slice(),fu),YA=O(UA=(UA||[]).slice(),fu),function(o,a){E(ZA,function(t,e){for(var i={name:t,capital:XA[e]},n=0;n<UA.length;n++)i[UA[n]]=t+YA[n];o.call(a,i)})});function qA(o,a,r){return function(t){var e,i={nodes:[],records:{}};if(a(function(t){i.records[t.name]={}}),!t)return i;for(s(t,i);e=!1,o(n),e;);function n(t){!function(t,e){return 0<=_(e.nodes,t)}(t,i)&&function(t,i){var n=!1;return a(function(e){E(r(t,e)||[],function(t){i.records[e.name][t]&&(n=!0)})}),n}(t,i)&&(s(t,i),e=!0)}return i};function s(t,i){i.nodes.push(t),a(function(e){E(r(t,e)||[],function(t){i.records[e.name][t]=!0})})}}function KA(t,e,i,n){this._dimName=t,this._axisIndex=e,this._valueWindow,this._percentWindow,this._dataExtent,this._minMaxSpan,this.ecModel=n,this._dataZoomModel=i}var $A=E,JA=Bl;function QA(t,e){var i=t.getAxisModel(),n=t._percentWindow,o=t._valueWindow;if(n){var a=Fl(o,[0,500]);a=Math.min(a,20);var r=e||0===n[0]&&100===n[1];i.setRange(r?null:+o[0].toFixed(a),r?null:+o[1].toFixed(a))}}KA.prototype={constructor:KA,hostedBy:function(t){return this._dataZoomModel===t},getDataValueWindow:function(){return this._valueWindow.slice()},getDataPercentWindow:function(){return this._percentWindow.slice()},getTargetSeriesModels:function(){var n=[],o=this.ecModel;return o.eachSeries(function(t){if(function(t){return 0<=_(HA,t)}(t.get("coordinateSystem"))){var e=this._dimName,i=o.queryComponents({mainType:e+"Axis",index:t.get(e+"AxisIndex"),id:t.get(e+"AxisId")})[0];this._axisIndex===(i&&i.componentIndex)&&n.push(t)}},this),n},getAxisModel:function(){return this.ecModel.getComponent(this._dimName+"Axis",this._axisIndex)},getOtherAxisModel:function(){var t,e,i,n=this._dimName,o=this.ecModel,a=this.getAxisModel();return t="x"===n||"y"===n?(e="gridIndex","x"===n?"y":"x"):(e="polarIndex","angle"===n?"radius":"angle"),o.eachComponent(t+"Axis",function(t){(t.get(e)||0)===(a.get(e)||0)&&(i=t)}),i},getMinMaxSpan:function(){return k(this._minMaxSpan)},calculateDataWindow:function(o){var a,r=this._dataExtent,s=this.getAxisModel().axis.scale,l=this._dataZoomModel.getRangePropMode(),u=[0,100],h=[],c=[];$A(["start","end"],function(t,e){var i=o[t],n=o[t+"Value"];"percent"===l[e]?(null==i&&(i=u[e]),n=s.parse(El(i,u,r))):(a=!0,i=El(n=null==n?r[e]:s.parse(n),r,u)),c[e]=n,h[e]=i}),JA(c),JA(h);var d=this._minMaxSpan;function t(t,e,i,n,o){var a=o?"Span":"ValueSpan";Jw(0,t,i,"all",d["min"+a],d["max"+a]);for(var r=0;r<2;r++)e[r]=El(t[r],i,n,!0),o&&(e[r]=s.parse(e[r]))}return a?t(c,h,r,u,!1):t(h,c,u,r,!0),{valueWindow:c,percentWindow:h}},reset:function(t){if(t===this._dataZoomModel){var e=this.getTargetSeriesModels();this._dataExtent=function(t,e,i){var n=[1/0,-1/0];$A(i,function(t){var i=t.getData();i&&$A(i.mapDimension(e,!0),function(t){var e=i.getApproximateExtent(t);e[0]<n[0]&&(n[0]=e[0]),e[1]>n[1]&&(n[1]=e[1])})}),n[1]<n[0]&&(n=[NaN,NaN]);return function(t,e){var i=t.getAxisModel(),n=i.getMin(!0),o="category"===i.get("type"),a=o&&i.getCategories().length;null!=n&&"dataMin"!==n&&"function"!=typeof n?e[0]=n:o&&(e[0]=0<a?0:NaN);var r=i.getMax(!0);null!=r&&"dataMax"!==r&&"function"!=typeof r?e[1]=r:o&&(e[1]=0<a?a-1:NaN);i.get("scale",!0)||(0<e[0]&&(e[0]=0),e[1]<0&&(e[1]=0))}(t,n),n}(this,this._dimName,e),function(n){var o=n._minMaxSpan={},a=n._dataZoomModel,r=n._dataExtent;$A(["min","max"],function(t){var e=a.get(t+"Span"),i=a.get(t+"ValueSpan");null!=i&&(i=n.getAxisModel().axis.scale.parse(i)),null!=i?e=El(r[0]+i,r,[0,100],!0):null!=e&&(i=El(e,[0,100],r,!0)-r[0]),o[t+"Span"]=e,o[t+"ValueSpan"]=i})}(this);var i=this.calculateDataWindow(t.settledOption);this._valueWindow=i.valueWindow,this._percentWindow=i.percentWindow,QA(this)}},restore:function(t){t===this._dataZoomModel&&(this._valueWindow=this._percentWindow=null,QA(this,!0))},filterData:function(t,e){if(t===this._dataZoomModel){var n=this._dimName,i=this.getTargetSeriesModels(),o=t.get("filterMode"),c=this._valueWindow;"none"!==o&&$A(i,function(i){var u=i.getData(),h=u.mapDimension(n,!0);h.length&&("weakFilter"===o?u.filterSelf(function(t){for(var e,i,n,o=0;o<h.length;o++){var a=u.get(h[o],t),r=!isNaN(a),s=a<c[0],l=a>c[1];if(r&&!s&&!l)return!0;r&&(n=!0),s&&(e=!0),l&&(i=!0)}return n&&e&&i}):$A(h,function(t){if("empty"===o)i.setData(u=u.map(t,function(t){return function(t){return t>=c[0]&&t<=c[1]}(t)?t:NaN}));else{var e={};e[t]=c,u.selectRange(e)}}),$A(h,function(t){u.setApproximateExtent(c,t)}))})}}};var tD=E,eD=jA,iD=Tf({type:"dataZoom",dependencies:["xAxis","yAxis","zAxis","radiusAxis","angleAxis","singleAxis","series"],defaultOption:{zlevel:0,z:4,orient:null,xAxisIndex:null,yAxisIndex:null,filterMode:"filter",throttle:null,start:0,end:100,startValue:null,endValue:null,minSpan:null,maxSpan:null,minValueSpan:null,maxValueSpan:null,rangeMode:null},init:function(t,e,i){this._dataIntervalByAxis={},this._dataInfo={},this._axisProxies={},this.textStyleModel,this._autoThrottle=!0,this._rangePropMode=["percent","percent"];var n=nD(t);this.settledOption=n,this.mergeDefaultAndTheme(t,i),this.doInit(n)},mergeOption:function(t){var e=nD(t);m(this.option,t,!0),m(this.settledOption,e,!0),this.doInit(e)},doInit:function(t){var i=this.option;v.canvasSupported||(i.realtime=!1),this._setDefaultThrottle(t),oD(this,t);var n=this.settledOption;tD([["start","startValue"],["end","endValue"]],function(t,e){"value"===this._rangePropMode[e]&&(i[t[0]]=n[t[0]]=null)},this),this.textStyleModel=this.getModel("textStyle"),this._resetTarget(),this._giveAxisProxies()},_giveAxisProxies:function(){var r=this._axisProxies;this.eachTargetAxis(function(t,e,i,n){var o=this.dependentModels[t.axis][e],a=o.__dzAxisProxy||(o.__dzAxisProxy=new KA(t.name,e,this,n));r[t.name+"_"+e]=a},this)},_resetTarget:function(){var i=this.option,t=this._judgeAutoMode();eD(function(t){var e=t.axisIndex;i[e]=Vo(i[e])},this),"axisIndex"===t?this._autoSetAxisIndex():"orient"===t&&this._autoSetOrient()},_judgeAutoMode:function(){var e=this.option,i=!1;eD(function(t){null!=e[t.axisIndex]&&(i=!0)},this);var t=e.orient;return null==t&&i?"orient":i?void 0:(null==t&&(e.orient="horizontal"),"axisIndex")},_autoSetAxisIndex:function(){var a=!0,e=this.get("orient",!0),r=this.option,t=this.dependentModels;if(a){var i="vertical"===e?"y":"x";t[i+"Axis"].length?(r[i+"AxisIndex"]=[0],a=!1):tD(t.singleAxis,function(t){a&&t.get("orient",!0)===e&&(r.singleAxisIndex=[t.componentIndex],a=!1)})}a&&eD(function(t){if(a){var e=[],i=this.dependentModels[t.axis];if(i.length&&!e.length)for(var n=0,o=i.length;n<o;n++)"category"===i[n].get("type")&&e.push(n);(r[t.axisIndex]=e).length&&(a=!1)}},this),a&&this.ecModel.eachSeries(function(o){this._isSeriesHasAllAxesTypeOf(o,"value")&&eD(function(t){var e=r[t.axisIndex],i=o.get(t.axisIndex),n=o.get(t.axisId);_(e,i=o.ecModel.queryComponents({mainType:t.axis,index:i,id:n})[0].componentIndex)<0&&e.push(i)})},this)},_autoSetOrient:function(){var e;this.eachTargetAxis(function(t){e=e||t.name},this),this.option.orient="y"===e?"vertical":"horizontal"},_isSeriesHasAllAxesTypeOf:function(n,o){var a=!0;return eD(function(t){var e=n.get(t.axisIndex),i=this.dependentModels[t.axis][e];i&&i.get("type")===o||(a=!1)},this),a},_setDefaultThrottle:function(t){if(t.hasOwnProperty("throttle")&&(this._autoThrottle=!1),this._autoThrottle){var e=this.ecModel.option;this.option.throttle=e.animation&&0<e.animationDurationUpdate?100:20}},getFirstTargetAxisModel:function(){var i;return eD(function(t){if(null==i){var e=this.get(t.axisIndex);e.length&&(i=this.dependentModels[t.axis][e[0]])}},this),i},eachTargetAxis:function(i,n){var o=this.ecModel;eD(function(e){tD(this.get(e.axisIndex),function(t){i.call(n,e,t,this,o)},this)},this)},getAxisProxy:function(t,e){return this._axisProxies[t+"_"+e]},getAxisModel:function(t,e){var i=this.getAxisProxy(t,e);return i&&i.getAxisModel()},setRawRange:function(e){var i=this.option,n=this.settledOption;tD([["start","startValue"],["end","endValue"]],function(t){null==e[t[0]]&&null==e[t[1]]||(i[t[0]]=n[t[0]]=e[t[0]],i[t[1]]=n[t[1]]=e[t[1]])},this),oD(this,e)},setCalculatedRange:function(e){var i=this.option;tD(["start","startValue","end","endValue"],function(t){i[t]=e[t]})},getPercentRange:function(){var t=this.findRepresentativeAxisProxy();if(t)return t.getDataPercentWindow()},getValueRange:function(t,e){if(null!=t||null!=e)return this.getAxisProxy(t,e).getDataValueWindow();var i=this.findRepresentativeAxisProxy();return i?i.getDataValueWindow():void 0},findRepresentativeAxisProxy:function(t){if(t)return t.__dzAxisProxy;var e=this._axisProxies;for(var i in e)if(e.hasOwnProperty(i)&&e[i].hostedBy(this))return e[i];for(var i in e)if(e.hasOwnProperty(i)&&!e[i].hostedBy(this))return e[i]},getRangePropMode:function(){return this._rangePropMode.slice()}});function nD(e){var i={};return tD(["start","end","startValue","endValue","throttle"],function(t){e.hasOwnProperty(t)&&(i[t]=e[t])}),i}function oD(t,o){var a=t._rangePropMode,r=t.get("rangeMode");tD([["start","startValue"],["end","endValue"]],function(t,e){var i=null!=o[t[0]],n=null!=o[t[1]];i&&!n?a[e]="percent":!i&&n?a[e]="value":r?a[e]=r[e]:i&&(a[e]="percent")})}var aD=gc.extend({type:"dataZoom",render:function(t,e,i,n){this.dataZoomModel=t,this.ecModel=e,this.api=i},getTargetCoordInfo:function(){var t=this.dataZoomModel,o=this.ecModel,a={};return t.eachTargetAxis(function(t,e){var i=o.getComponent(t.axis,e);if(i){var n=i.getCoordSysModel();n&&function(t,e,i,n){for(var o,a=0;a<i.length;a++)if(i[a].model===t){o=i[a];break}o||i.push(o={model:t,axisModels:[],coordIndex:n});o.axisModels.push(e)}(n,i,a[n.mainType]||(a[n.mainType]=[]),n.componentIndex)}},this),a}});iD.extend({type:"dataZoom.select"}),aD.extend({type:"dataZoom.select"}),xf({getTargetSeries:function(t){var n=Q();return t.eachComponent("dataZoom",function(t){t.eachTargetAxis(function(t,e,i){E(i.getAxisProxy(t.name,e).getTargetSeriesModels(),function(t){n.set(t.uid,t)})})}),n},modifyOutputEnd:!0,overallReset:function(t,n){t.eachComponent("dataZoom",function(t){t.eachTargetAxis(function(t,e,i){i.getAxisProxy(t.name,e).reset(i,n)}),t.eachTargetAxis(function(t,e,i){i.getAxisProxy(t.name,e).filterData(i,n)})}),t.eachComponent("dataZoom",function(t){var e=t.findRepresentativeAxisProxy(),i=e.getDataPercentWindow(),n=e.getDataValueWindow();t.setCalculatedRange({start:i[0],end:i[1],startValue:n[0],endValue:n[1]})})}}),_f("dataZoom",function(i,t){var n=qA(A(t.eachComponent,t,"dataZoom"),jA,function(t,e){return t.get(e.axisIndex)}),o=[];t.eachComponent({mainType:"dataZoom",query:i},function(t,e){o.push.apply(o,n(t).nodes)}),E(o,function(t,e){t.setRawRange({start:i.start,end:i.end,startValue:i.startValue,endValue:i.endValue})})});var rD=Oc.toolbox.dataZoom,sD=E;function lD(t,e,i){(this._brushController=new Ib(i.getZr())).on("brush",A(this._onBrush,this)).mount(),this._isZoomActive}lD.defaultOption={show:!0,filterMode:"filter",icon:{zoom:"M0,13.5h26.9 M13.5,26.9V0 M32.1,13.5H58V58H13.5 V32.1",back:"M22,1.4L9.9,13.5l12.3,12.3 M10.3,13.5H54.9v44.6 H10.3v-26"},title:k(rD.title)};var uD=lD.prototype;uD.render=function(t,e,i,n){this.model=t,this.ecModel=e,this.api=i,function(t,e,i,n,o){var a=i._isZoomActive;n&&"takeGlobalCursor"===n.type&&(a="dataZoomSelect"===n.key&&n.dataZoomSelectActive);i._isZoomActive=a,t.setIconStatus("zoom",a?"emphasis":"normal");var r=new DA(cD(t.option),e,{include:["grid"]});i._brushController.setPanels(r.makePanelOpts(o,function(t){return t.xAxisDeclared&&!t.yAxisDeclared?"lineX":!t.xAxisDeclared&&t.yAxisDeclared?"lineY":"rect"})).enableBrush(!!a&&{brushType:"auto",brushStyle:{lineWidth:0,fill:"rgba(0,0,0,0.2)"}})}(t,e,this,n,i),function(t,e){t.setIconStatus("back",1<function(t){return WA(t).length}(e)?"emphasis":"normal")}(t,e)},uD.onclick=function(t,e,i){hD[i].call(this)},uD.remove=function(t,e){this._brushController.unmount()},uD.dispose=function(t,e){this._brushController.dispose()};var hD={zoom:function(){var t=!this._isZoomActive;this.api.dispatchAction({type:"takeGlobalCursor",key:"dataZoomSelect",dataZoomSelectActive:t})},back:function(){this._dispatchZoomAction(function(t){var n=WA(t),e=n[n.length-1];1<n.length&&n.pop();var o={};return GA(e,function(t,e){for(var i=n.length-1;0<=i;i--){if(t=n[i][e]){o[e]=t;break}}}),o}(this.ecModel))}};function cD(e){var i={};return E(["xAxisIndex","yAxisIndex"],function(t){i[t]=e[t],null==i[t]&&(i[t]="all"),!1!==i[t]&&"none"!==i[t]||(i[t]=[])}),i}uD._onBrush=function(t,e){if(e.isEnd&&t.length){var s={},l=this.ecModel;this._brushController.updateCovers([]),new DA(cD(this.model.option),l,{include:["grid"]}).matchOutputRanges(t,l,function(t,e,i){if("cartesian2d"===i.type){var n=t.brushType;"rect"===n?(o("x",i,e[0]),o("y",i,e[1])):o({lineX:"x",lineY:"y"}[n],i,e)}}),function(a,t){var r=WA(a);GA(t,function(t,e){for(var i=r.length-1;0<=i;i--){if(r[i][e])break}if(i<0){var n=a.queryComponents({mainType:"dataZoom",subType:"select",id:e})[0];if(n){var o=n.getPercentRange();r[0][e]={dataZoomId:e,start:o[0],end:o[1]}}}}),r.push(t)}(l,s),this._dispatchZoomAction(s)}function o(t,e,i){var n=e.getAxis(t),o=n.model,a=function(e,i,t){var n;return t.eachComponent({mainType:"dataZoom",subType:"select"},function(t){t.getAxisModel(e,i.componentIndex)&&(n=t)}),n}(t,o,l),r=a.findRepresentativeAxisProxy(o).getMinMaxSpan();null==r.minValueSpan&&null==r.maxValueSpan||(i=Jw(0,i.slice(),n.scale.getExtent(),0,r.minValueSpan,r.maxValueSpan)),a&&(s[a.id]={dataZoomId:a.id,startValue:i[0],endValue:i[1]})}},uD._dispatchZoomAction=function(t){var i=[];sD(t,function(t,e){i.push(k(t))}),i.length&&this.api.dispatchAction({type:"dataZoom",from:this.uid,batch:i})},nA("dataZoom",lD),yf(function(s){if(s){var l=s.dataZoom||(s.dataZoom=[]);L(l)||(s.dataZoom=l=[l]);var t=s.toolbox;if(t&&(L(t)&&(t=t[0]),t&&t.feature)){var e=t.feature.dataZoom;i("xAxis",e),i("yAxis",e)}}function i(n,o){if(o){var a=n+"Index",r=o[a];null==r||"all"===r||L(r)||(r=!1===r||"none"===r?[]:[r]),function(t,e){var i=s[t];L(i)||(i=i?[i]:[]);sD(i,e)}(n,function(t,e){if(null==r||"all"===r||-1!==_(r,e)){var i={type:"select",$fromToolbox:!0,filterMode:o.filterMode||"filter",id:"\0_ec_\0toolbox-dataZoom_"+n+e};i[a]=e,l.push(i)}})}}});var dD=Oc.toolbox.restore;function fD(t){this.model=t}fD.defaultOption={show:!0,icon:"M3.8,33.4 M47,18.9h9.8V8.7 M56.3,20.1 C52.1,9,40.5,0.6,26.8,2.1C12.6,3.7,1.6,16.2,2.1,30.6 M13,41.1H3.1v10.2 M3.7,39.9c4.2,11.1,15.8,19.5,29.5,18 c14.2-1.6,25.2-14.1,24.7-28.5",title:dD.title},fD.prototype.onclick=function(t,e,i){!function(t){t[FA]=null}(t),e.dispatchAction({type:"restore",from:this.uid})},nA("restore",fD),_f({type:"restore",event:"restore",update:"prepareAndUpdate"},function(t,e){e.resetOption("recreate")}),Tf({type:"tooltip",dependencies:["axisPointer"],defaultOption:{zlevel:0,z:60,show:!0,showContent:!0,trigger:"item",triggerOn:"mousemove|click",alwaysShowContent:!1,displayMode:"single",renderMode:"auto",confine:!1,showDelay:0,hideDelay:100,transitionDuration:.4,enterable:!1,backgroundColor:"rgba(50,50,50,0.7)",borderColor:"#333",borderRadius:4,borderWidth:0,padding:5,extraCssText:"",axisPointer:{type:"line",axis:"auto",animation:"auto",animationDurationUpdate:200,animationEasingUpdate:"exponentialOut",crossStyle:{color:"#999",width:1,type:"dashed",textStyle:{}}},textStyle:{color:"#fff",fontSize:14}}});var pD=E,gD=eu,mD=["","-webkit-","-moz-","-o-"];function vD(o){var a=[],t=o.get("transitionDuration"),e=o.get("backgroundColor"),i=o.getModel("textStyle"),n=o.get("padding");return t&&a.push(function(t){var e="cubic-bezier(0.23, 1, 0.32, 1)",i="left "+t+"s "+e+",top "+t+"s "+e;return O(mD,function(t){return t+"transition:"+i}).join(";")}(t)),e&&(v.canvasSupported?a.push("background-Color:"+e):(a.push("background-Color:#"+Ze(e)),a.push("filter:alpha(opacity=70)"))),pD(["width","color","radius"],function(t){var e="border-"+t,i=gD(e),n=o.get(i);null!=n&&a.push(e+":"+n+("color"===t?"":"px"))}),a.push(function(i){var n=[],t=i.get("fontSize"),e=i.getTextColor();return e&&n.push("color:"+e),n.push("font:"+i.getFont()),t&&n.push("line-height:"+Math.round(3*t/2)+"px"),pD(["decoration","align"],function(t){var e=i.get(t);e&&n.push("text-"+t+":"+e)}),n.join(";")}(i)),null!=n&&a.push("padding:"+iu(n).join("px ")+"px"),a.join(";")+";"}function yD(t,e,i,n,o){var a=e&&e.painter;if(i){var r=a&&a.getViewportRoot();r&&function(t,e,i,n,o){Rt(Et,e,n,o,!0)&&Rt(t,i,Et[0],Et[1])}(t,r,document.body,n,o)}else{t[0]=n,t[1]=o;var s=a&&a.getViewportRootOffset();s&&(t[0]+=s.offsetLeft,t[1]+=s.offsetTop)}}function xD(t,e,i){if(v.wxa)return null;var n=document.createElement("div");n.domBelongToZr=!0,this.el=n;var o=this._zr=e.getZr(),a=this._appendToBody=i&&i.appendToBody;this._styleCoord=[0,0],yD(this._styleCoord,o,a,e.getWidth()/2,e.getHeight()/2),a?document.body.appendChild(n):t.appendChild(n),this._container=t,this._show=!1,this._hideTimeout;var r=this;n.onmouseenter=function(){r._enterable&&(clearTimeout(r._hideTimeout),r._show=!0),r._inContent=!0},n.onmousemove=function(t){if(t=t||window.event,!r._enterable){var e=o.handler;Zt(o.painter.getViewportRoot(),t,!0),e.dispatch("mousemove",t)}},n.onmouseleave=function(){r._enterable&&r._show&&r.hideLater(r._hideDelay),r._inContent=!1}}function _D(t){this._zr=t.getZr(),this._show=!1,this._hideTimeout}xD.prototype={constructor:xD,_enterable:!0,update:function(){var t=this._container,e=t.currentStyle||document.defaultView.getComputedStyle(t),i=t.style;"absolute"!==i.position&&"absolute"!==e.position&&(i.position="relative")},show:function(t){clearTimeout(this._hideTimeout);var e=this.el,i=this._styleCoord;e.style.cssText="position:absolute;display:block;border-style:solid;white-space:nowrap;z-index:9999999;"+vD(t)+";left:"+i[0]+"px;top:"+i[1]+"px;"+(t.get("extraCssText")||""),e.style.display=e.innerHTML?"block":"none",e.style.pointerEvents=this._enterable?"auto":"none",this._show=!0},setContent:function(t){this.el.innerHTML=null==t?"":t},setEnterable:function(t){this._enterable=t},getSize:function(){var t=this.el;return[t.clientWidth,t.clientHeight]},moveTo:function(t,e){var i=this._styleCoord;yD(i,this._zr,this._appendToBody,t,e);var n=this.el.style;n.left=i[0]+"px",n.top=i[1]+"px"},hide:function(){this.el.style.display="none",this._show=!1},hideLater:function(t){!this._show||this._inContent&&this._enterable||(t?(this._hideDelay=t,this._show=!1,this._hideTimeout=setTimeout(A(this.hide,this),t)):this.hide())},isShow:function(){return this._show},dispose:function(){this.el.parentNode.removeChild(this.el)},getOuterSize:function(){var t=this.el.clientWidth,e=this.el.clientHeight;if(document.defaultView&&document.defaultView.getComputedStyle){var i=document.defaultView.getComputedStyle(this.el);i&&(t+=parseInt(i.borderLeftWidth,10)+parseInt(i.borderRightWidth,10),e+=parseInt(i.borderTopWidth,10)+parseInt(i.borderBottomWidth,10))}return{width:t,height:e}}},_D.prototype={constructor:_D,_enterable:!0,update:function(){},show:function(t){this._hideTimeout&&clearTimeout(this._hideTimeout),this.el.attr("show",!0),this._show=!0},setContent:function(t,e,i){this.el&&this._zr.remove(this.el);for(var n={},o=t,a="{marker",r=o.indexOf(a);0<=r;){var s=o.indexOf("|}"),l=o.substr(r+a.length,s-r-a.length);-1<l.indexOf("sub")?n["marker"+l]={textWidth:4,textHeight:4,textBorderRadius:2,textBackgroundColor:e[l],textOffset:[3,0]}:n["marker"+l]={textWidth:10,textHeight:10,textBorderRadius:5,textBackgroundColor:e[l]},r=(o=o.substr(s+1)).indexOf("{marker")}this.el=new Ur({style:{rich:n,text:t,textLineHeight:20,textBackgroundColor:i.get("backgroundColor"),textBorderRadius:i.get("borderRadius"),textFill:i.get("textStyle.color"),textPadding:i.get("padding")},z:i.get("z")}),this._zr.add(this.el);var u=this;this.el.on("mouseover",function(){u._enterable&&(clearTimeout(u._hideTimeout),u._show=!0),u._inContent=!0}),this.el.on("mouseout",function(){u._enterable&&u._show&&u.hideLater(u._hideDelay),u._inContent=!1})},setEnterable:function(t){this._enterable=t},getSize:function(){var t=this.el.getBoundingRect();return[t.width,t.height]},moveTo:function(t,e){this.el&&this.el.attr("position",[t,e])},hide:function(){this.el&&this.el.hide(),this._show=!1},hideLater:function(t){!this._show||this._inContent&&this._enterable||(t?(this._hideDelay=t,this._show=!1,this._hideTimeout=setTimeout(A(this.hide,this),t)):this.hide())},isShow:function(){return this._show},getOuterSize:function(){var t=this.getSize();return{width:t[0],height:t[1]}}};var wD=A,bD=E,SD=Rl,MD=new rs({shape:{x:-1,y:-1,width:2,height:2}});function ID(t){for(var e=t.pop();t.length;){var i=t.pop();i&&(Cl.isInstance(i)&&(i=i.get("tooltip",!0)),"string"==typeof i&&(i={formatter:i}),e=new Cl(i,e,e.ecModel))}return e}function TD(t,e){return t.dispatchAction||A(e.dispatchAction,e)}function AD(t){return"center"===t||"middle"===t}Af({type:"tooltip",init:function(t,e){if(!v.node){var i,n=t.getComponent("tooltip"),o=n.get("renderMode");this._renderMode=Qo(o),"html"===this._renderMode?(i=new xD(e.getDom(),e,{appendToBody:n.get("appendToBody",!0)}),this._newLine="<br/>"):(i=new _D(e),this._newLine="\n"),this._tooltipContent=i}},render:function(t,e,i){if(!v.node){this.group.removeAll(),this._tooltipModel=t,this._ecModel=e,this._api=i,this._lastDataByCoordSys=null,this._alwaysShowContent=t.get("alwaysShowContent");var n=this._tooltipContent;n.update(),n.setEnterable(t.get("enterable")),this._initGlobalListener(),this._keepShow()}},_initGlobalListener:function(){var n=this._tooltipModel.get("triggerOn");fI("itemTooltip",this._api,wD(function(t,e,i){"none"!==n&&(0<=n.indexOf(t)?this._tryShow(e,i):"leave"===t&&this._hide(i))},this))},_keepShow:function(){var t=this._tooltipModel,e=this._ecModel,i=this._api;if(null!=this._lastX&&null!=this._lastY&&"none"!==t.get("triggerOn")){var n=this;clearTimeout(this._refreshUpdateTimeout),this._refreshUpdateTimeout=setTimeout(function(){i.isDisposed()||n.manuallyShowTip(t,e,i,{x:n._lastX,y:n._lastY})})}},manuallyShowTip:function(t,e,i,n){if(n.from!==this.uid&&!v.node){var o=TD(n,i);this._ticket="";var a=n.dataByCoordSys;if(n.tooltip&&null!=n.x&&null!=n.y){var r=MD;r.position=[n.x,n.y],r.update(),r.tooltip=n.tooltip,this._tryShow({offsetX:n.x,offsetY:n.y,target:r},o)}else if(a)this._tryShow({offsetX:n.x,offsetY:n.y,position:n.position,dataByCoordSys:n.dataByCoordSys,tooltipOption:n.tooltipOption},o);else if(null!=n.seriesIndex){if(this._manuallyAxisShowTip(t,e,i,n))return;var s=iI(n,e),l=s.point[0],u=s.point[1];null!=l&&null!=u&&this._tryShow({offsetX:l,offsetY:u,position:n.position,target:s.el},o)}else null!=n.x&&null!=n.y&&(i.dispatchAction({type:"updateAxisPointer",x:n.x,y:n.y}),this._tryShow({offsetX:n.x,offsetY:n.y,position:n.position,target:i.getZr().findHover(n.x,n.y).target},o))}},manuallyHideTip:function(t,e,i,n){var o=this._tooltipContent;!this._alwaysShowContent&&this._tooltipModel&&o.hideLater(this._tooltipModel.get("hideDelay")),this._lastX=this._lastY=null,n.from!==this.uid&&this._hide(TD(n,i))},_manuallyAxisShowTip:function(t,e,i,n){var o=n.seriesIndex,a=n.dataIndex,r=e.getComponent("axisPointer").coordSysAxesInfo;if(null!=o&&null!=a&&null!=r){var s=e.getSeriesByIndex(o);if(s)if("axis"===(t=ID([s.getData().getItemModel(a),s,(s.coordinateSystem||{}).model,t])).get("trigger"))return i.dispatchAction({type:"updateAxisPointer",seriesIndex:o,dataIndex:a,position:n.position}),!0}},_tryShow:function(t,e){var i=t.target;if(this._tooltipModel){this._lastX=t.offsetX,this._lastY=t.offsetY;var n=t.dataByCoordSys;n&&n.length?this._showAxisTooltip(n,t):i&&null!=i.dataIndex?(this._lastDataByCoordSys=null,this._showSeriesItemTooltip(t,i,e)):i&&i.tooltip?(this._lastDataByCoordSys=null,this._showComponentItemTooltip(t,i,e)):(this._lastDataByCoordSys=null,this._hide(e))}},_showOrMove:function(t,e){var i=t.get("showDelay");e=A(e,this),clearTimeout(this._showTimout),0<i?this._showTimout=setTimeout(e,i):e()},_showAxisTooltip:function(t,e){var d=this._ecModel,i=this._tooltipModel,n=[e.offsetX,e.offsetY],o=[],f=[],a=ID([e.tooltipOption,i]),p=this._renderMode,r=this._newLine,g={};bD(t,function(t){bD(t.dataByAxis,function(s){var l=d.getComponent(s.axisDim+"Axis",s.axisIndex),u=s.value,h=[];if(l&&null!=u){var c=DI(u,l.axis,d,s.seriesDataIndices,s.valueLabelOpt);E(s.seriesDataIndices,function(t){var e=d.getSeriesByIndex(t.seriesIndex),i=t.dataIndexInside,n=e&&e.getDataParams(i);if(n.axisDim=s.axisDim,n.axisIndex=s.axisIndex,n.axisType=s.axisType,n.axisId=s.axisId,n.axisValue=ug(l.axis,u),n.axisValueLabel=c,n){f.push(n);var o,a=e.formatTooltip(i,!0,null,p);if(z(a)){o=a.html;var r=a.markers;m(g,r)}else o=a;h.push(o)}});var t=c;"html"!==p?o.push(h.join(r)):o.push((t?au(t)+r:"")+h.join(r))}})},this),o.reverse(),o=o.join(this._newLine+this._newLine);var s=e.position;this._showOrMove(a,function(){this._updateContentNotChangedOnAxis(t)?this._updatePosition(a,s,n[0],n[1],this._tooltipContent,f):this._showTooltipContent(a,o,f,Math.random(),n[0],n[1],s,void 0,g)})},_showSeriesItemTooltip:function(t,e,i){var n=this._ecModel,o=e.seriesIndex,a=n.getSeriesByIndex(o),r=e.dataModel||a,s=e.dataIndex,l=e.dataType,u=r.getData(l),h=ID([u.getItemModel(s),r,a&&(a.coordinateSystem||{}).model,this._tooltipModel]),c=h.get("trigger");if(null==c||"item"===c){var d,f,p=r.getDataParams(s,l),g=r.formatTooltip(s,!1,l,this._renderMode);f=z(g)?(d=g.html,g.markers):(d=g,null);var m="item_"+r.name+"_"+s;this._showOrMove(h,function(){this._showTooltipContent(h,d,p,m,t.offsetX,t.offsetY,t.position,t.target,f)}),i({type:"showTip",dataIndexInside:s,dataIndex:u.getRawIndex(s),seriesIndex:o,from:this.uid})}},_showComponentItemTooltip:function(t,e,i){var n=e.tooltip;if("string"==typeof n){n={content:n,formatter:n}}var o=new Cl(n,this._tooltipModel,this._ecModel),a=o.get("content"),r=Math.random();this._showOrMove(o,function(){this._showTooltipContent(o,a,o.get("formatterParams")||{},r,t.offsetX,t.offsetY,t.position,e)}),i({type:"showTip",from:this.uid})},_showTooltipContent:function(i,t,n,e,o,a,r,s,l){if(this._ticket="",i.get("showContent")&&i.get("show")){var u=this._tooltipContent,h=i.get("formatter");r=r||i.get("position");var c=t;if(h&&"string"==typeof h)c=lu(h,n,!0);else if("function"==typeof h){var d=wD(function(t,e){t===this._ticket&&(u.setContent(e,l,i),this._updatePosition(i,r,o,a,u,n,s))},this);this._ticket=e,c=h(n,e,d)}u.setContent(c,l,i),u.show(i),this._updatePosition(i,r,o,a,u,n,s)}},_updatePosition:function(t,e,i,n,o,a,r){var s=this._api.getWidth(),l=this._api.getHeight();e=e||t.get("position");var u=o.getSize(),h=t.get("align"),c=t.get("verticalAlign"),d=r&&r.getBoundingRect().clone();if(r&&d.applyTransform(r.transform),"function"==typeof e&&(e=e([i,n],a,o.el,d,{viewSize:[s,l],contentSize:u.slice()})),L(e))i=SD(e[0],s),n=SD(e[1],l);else if(z(e)){e.width=u[0],e.height=u[1];var f=bu(e,{width:s,height:l});i=f.x,n=f.y,c=h=null}else if("string"==typeof e&&r){i=(p=function(t,e,i){var n=i[0],o=i[1],a=0,r=0,s=e.width,l=e.height;switch(t){case"inside":a=e.x+s/2-n/2,r=e.y+l/2-o/2;break;case"top":a=e.x+s/2-n/2,r=e.y-o-5;break;case"bottom":a=e.x+s/2-n/2,r=e.y+l+5;break;case"left":a=e.x-n-5,r=e.y+l/2-o/2;break;case"right":a=e.x+s+5,r=e.y+l/2-o/2}return[a,r]}(e,d,u))[0],n=p[1]}else{var p;i=(p=function(t,e,i,n,o,a,r){var s=i.getOuterSize(),l=s.width,u=s.height;null!=a&&(n<t+l+a?t-=l+a:t+=a);null!=r&&(o<e+u+r?e-=u+r:e+=r);return[t,e]}(i,n,o,s,l,h?null:20,c?null:20))[0],n=p[1]}h&&(i-=AD(h)?u[0]/2:"right"===h?u[0]:0),c&&(n-=AD(c)?u[1]/2:"bottom"===c?u[1]:0),t.get("confine")&&(i=(p=function(t,e,i,n,o){var a=i.getOuterSize(),r=a.width,s=a.height;return t=Math.min(t+r,n)-r,e=Math.min(e+s,o)-s,t=Math.max(t,0),e=Math.max(e,0),[t,e]}(i,n,o,s,l))[0],n=p[1]);o.moveTo(i,n)},_updateContentNotChangedOnAxis:function(n){var t=this._lastDataByCoordSys,r=!!t&&t.length===n.length;return r&&bD(t,function(t,e){var i=t.dataByAxis||{},a=(n[e]||{}).dataByAxis||[];(r&=i.length===a.length)&&bD(i,function(t,e){var i=a[e]||{},n=t.seriesDataIndices||[],o=i.seriesDataIndices||[];(r&=t.value===i.value&&t.axisType===i.axisType&&t.axisId===i.axisId&&n.length===o.length)&&bD(n,function(t,e){var i=o[e];r&=t.seriesIndex===i.seriesIndex&&t.dataIndex===i.dataIndex})})}),this._lastDataByCoordSys=n,!!r},_hide:function(t){this._lastDataByCoordSys=null,t({type:"hideTip",from:this.uid})},dispose:function(t,e){v.node||(this._tooltipContent.dispose(),mI("itemTooltip",e))}}),_f({type:"showTip",event:"showTip",update:"tooltip:manuallyShowTip"},function(){}),_f({type:"hideTip",event:"hideTip",update:"tooltip:manuallyHideTip"},function(){});var DD=["rect","polygon","keep","clear"];var CD=E;function LD(t){if(t)for(var e in t)if(t.hasOwnProperty(e))return!0}function kD(t,e,a){var i={};return CD(e,function(n){var o=i[n]=function(){function t(){}return t.prototype.__hidden=t.prototype,new t}();CD(t[n],function(t,e){if(g_.isValidType(e)){var i={type:e,visual:t};a&&a(i,n),o[e]=new g_(i),"opacity"===e&&((i=k(i)).type="colorAlpha",o.__hidden.__alphaForOpacity=new g_(i))}})}),i}function PD(e,i,t){var n;E(t,function(t){i.hasOwnProperty(t)&&LD(i[t])&&(n=!0)}),n&&E(t,function(t){i.hasOwnProperty(t)&&LD(i[t])?e[t]=k(i[t]):delete e[t]})}var ND={lineX:OD(0),lineY:OD(1),rect:{point:function(t,e,i){return t&&i.boundingRect.contain(t[0],t[1])},rect:function(t,e,i){return t&&i.boundingRect.intersect(t)}},polygon:{point:function(t,e,i){return t&&i.boundingRect.contain(t[0],t[1])&&Tg(i.range,t[0],t[1])},rect:function(t,e,i){var n=i.range;if(!t||n.length<=1)return!1;var o=t.x,a=t.y,r=t.width,s=t.height,l=n[0];return!!(Tg(n,o,a)||Tg(n,o+r,a)||Tg(n,o,a+s)||Tg(n,o+r,a+s)||Di.create(t).contain(l[0],l[1])||xl(o,a,o+r,a,n)||xl(o,a,o,a+s,n)||xl(o+r,a,o+r,a+s,n)||xl(o,a+s,o+r,a+s,n))||void 0}}};function OD(a){var r=["x","y"],s=["width","height"];return{point:function(t,e,i){if(t){var n=i.range;return ED(t[a],n)}},rect:function(t,e,i){if(t){var n=i.range,o=[t[r[a]],t[r[a]]+t[s[a]]];return o[1]<o[0]&&o.reverse(),ED(o[0],n)||ED(o[1],n)||ED(n[0],o)||ED(n[1],o)}}}}function ED(t,e){return e[0]<=t&&t<=e[1]}var RD=["inBrush","outOfBrush"],zD="__ecBrushSelect",BD="__ecInBrushSelectEvent",VD=Ld.VISUAL.BRUSH;function GD(e){e.eachComponent({mainType:"brush"},function(t){(t.brushTargetManager=new DA(t.option,e)).setInputRanges(t.areas,e)})}function FD(t,e){if(!t.isDisposed()){var i=t.getZr();i[BD]=!0,t.dispatchAction({type:"brushSelect",batch:e}),i[BD]=!1}}function WD(t,e,i,n){for(var o=0,a=e.length;o<a;o++){var r=e[o];if(t[r.brushType](n,i,r.selectors,r))return!0}}function HD(t){var r=t.brushSelector;if(R(r)){var e=[];return E(ND,function(a,t){e[t]=function(t,e,i,n){var o=e.getItemLayout(t);return a[r](o,i,n)}}),e}if(C(r)){var i={};return E(ND,function(t,e){i[e]=r}),i}return r}bf(VD,function(t,e,i){t.eachComponent({mainType:"brush"},function(t){i&&"takeGlobalCursor"===i.type&&t.setBrushOption("brush"===i.key?i.brushOption:{brushType:!1})}),GD(t)}),Sf(VD,function(p,t,e){var o,g,m=[];p.eachComponent({mainType:"brush"},function(a,t){var s={brushId:a.id,brushIndex:t,brushName:a.name,areas:k(a.areas),selected:[]};m.push(s);var e=a.option,i=e.brushLink,n=[],l=[],u=[],h=0;t||(o=e.throttleType,g=e.throttleDelay);var r=O(a.areas,function(t){return function(i){var n=i.selectors={};return E(ND[i.brushType],function(e,t){n[t]=function(t){return e(t,n,i)}}),i}(D({boundingRect:ZD[t.brushType](t)},t))}),c=kD(a.option,RD,function(t){t.mappingMethod="fixed"});function d(t){return"all"===i||n[t]}function f(t){return!!t.length}L(i)&&E(i,function(t){n[t]=1}),p.eachSeries(function(t,e){var i=u[e]=[];"parallel"===t.subType?function(t,e){var i=t.coordinateSystem;h|=i.hasAxisBrushed(),d(e)&&i.eachActiveState(t.getData(),function(t,e){"active"===t&&(l[e]=1)})}(t,e):function(e,t,i){var n=HD(e);if(!n||function(t,e){var i=t.option.seriesIndex;return null!=i&&"all"!==i&&(L(i)?_(i,e)<0:e!==i)}(a,t))return;if(E(r,function(t){n[t.brushType]&&a.brushTargetManager.controlSeries(t,e,p)&&i.push(t),h|=f(i)}),d(t)&&f(i)){var o=e.getData();o.each(function(t){WD(n,i,o,t)&&(l[t]=1)})}}(t,e,i)}),p.eachSeries(function(t,e){var i={seriesId:t.id,seriesIndex:e,seriesName:t.name,dataIndex:[]};s.selected.push(i);var n=HD(t),o=u[e],a=t.getData(),r=d(e)?function(t){return l[t]?(i.dataIndex.push(a.getRawIndex(t)),"inBrush"):"outOfBrush"}:function(t){return WD(n,o,a,t)?(i.dataIndex.push(a.getRawIndex(t)),"inBrush"):"outOfBrush"};(d(e)?h:f(o))&&function(t,u,h,c,d,f){var p,g={};function m(t){return h.getItemVisual(p,t)}function v(t,e){h.setItemVisual(p,t,e)}function e(t,e){p=null==f?t:e;var i=h.getRawDataItem(p);if(!i||!1!==i.visualMap)for(var n=c.call(d,t),o=u[n],a=g[n],r=0,s=a.length;r<s;r++){var l=a[r];o[l]&&o[l].applyVisual(t,m,v)}}E(t,function(t){var e=g_.prepareVisualTypes(u[t]);g[t]=e}),null==f?h.each(e):h.each([f],e)}(RD,c,a,r)})}),function(t,e,i,n,o){if(!o)return;var a=t.getZr();if(a[BD])return;a[zD]||(a[zD]=FD);kc(a,zD,i,e)(t,n)}(t,o,g,m,e)});var ZD={lineX:et,lineY:et,rect:function(t){return UD(t.range)},polygon:function(t){for(var e,i=t.range,n=0,o=i.length;n<o;n++){e=e||[[1/0,-1/0],[1/0,-1/0]];var a=i[n];a[0]<e[0][0]&&(e[0][0]=a[0]),a[0]>e[0][1]&&(e[0][1]=a[0]),a[1]<e[1][0]&&(e[1][0]=a[1]),a[1]>e[1][1]&&(e[1][1]=a[1])}return e&&UD(e)}};function UD(t){return new Di(t[0][0],t[1][0],t[0][1]-t[0][0],t[1][1]-t[1][0])}var XD=["#ddd"];Tf({type:"brush",dependencies:["geo","grid","xAxis","yAxis","parallel","series"],defaultOption:{toolbox:null,brushLink:null,seriesIndex:"all",geoIndex:null,xAxisIndex:null,yAxisIndex:null,brushType:"rect",brushMode:"single",transformable:!0,brushStyle:{borderWidth:1,color:"rgba(120,140,180,0.3)",borderColor:"rgba(120,140,180,0.8)"},throttleType:"fixRate",throttleDelay:0,removeOnClick:!0,z:1e4},areas:[],brushType:null,brushOption:{},coordInfoList:[],optionUpdated:function(t,e){var i=this.option;e||PD(i,t,["inBrush","outOfBrush"]);var n=i.inBrush=i.inBrush||{};i.outOfBrush=i.outOfBrush||{color:XD},n.hasOwnProperty("liftZ")||(n.liftZ=5)},setAreas:function(t){t&&(this.areas=O(t,function(t){return YD(this.option,t)},this))},setBrushOption:function(t){this.brushOption=YD(this.option,t),this.brushType=this.brushOption.brushType}});function YD(t,e){return m({brushType:t.brushType,brushMode:t.brushMode,transformable:t.transformable,brushStyle:new Cl(t.brushStyle).getItemStyle(),removeOnClick:t.removeOnClick,z:t.z},e,!0)}function jD(t,e,i,n){n&&n.$from===t.id||this._brushController.setPanels(t.brushTargetManager.makePanelOpts(i)).enableBrush(t.brushOption).updateCovers(t.areas.slice())}Af({type:"brush",init:function(t,e){this.ecModel=t,this.api=e,this.model,(this._brushController=new Ib(e.getZr())).on("brush",A(this._onBrush,this)).mount()},render:function(t){return this.model=t,jD.apply(this,arguments)},updateTransform:function(t,e){return GD(e),jD.apply(this,arguments)},updateView:jD,dispose:function(){this._brushController.dispose()},_onBrush:function(t,e){var i=this.model.id;this.model.brushTargetManager.setOutputRanges(t,this.ecModel),e.isEnd&&!e.removeOnClick||this.api.dispatchAction({type:"brush",brushId:i,areas:k(t),$from:i}),e.isEnd&&this.api.dispatchAction({type:"brushEnd",brushId:i,areas:k(t),$from:i})}}),_f({type:"brush",event:"brush"},function(e,t){t.eachComponent({mainType:"brush",query:e},function(t){t.setAreas(e.areas)})}),_f({type:"brushSelect",event:"brushSelected",update:"none"},function(){}),_f({type:"brushEnd",event:"brushEnd",update:"none"},function(){});var qD=Oc.toolbox.brush;function KD(t,e,i){this.model=t,this.ecModel=e,this.api=i,this._brushType,this._brushMode}KD.defaultOption={show:!0,type:["rect","polygon","lineX","lineY","keep","clear"],icon:{rect:"M7.3,34.7 M0.4,10V-0.2h9.8 M89.6,10V-0.2h-9.8 M0.4,60v10.2h9.8 M89.6,60v10.2h-9.8 M12.3,22.4V10.5h13.1 M33.6,10.5h7.8 M49.1,10.5h7.8 M77.5,22.4V10.5h-13 M12.3,31.1v8.2 M77.7,31.1v8.2 M12.3,47.6v11.9h13.1 M33.6,59.5h7.6 M49.1,59.5 h7.7 M77.5,47.6v11.9h-13",polygon:"M55.2,34.9c1.7,0,3.1,1.4,3.1,3.1s-1.4,3.1-3.1,3.1 s-3.1-1.4-3.1-3.1S53.5,34.9,55.2,34.9z M50.4,51c1.7,0,3.1,1.4,3.1,3.1c0,1.7-1.4,3.1-3.1,3.1c-1.7,0-3.1-1.4-3.1-3.1 C47.3,52.4,48.7,51,50.4,51z M55.6,37.1l1.5-7.8 M60.1,13.5l1.6-8.7l-7.8,4 M59,19l-1,5.3 M24,16.1l6.4,4.9l6.4-3.3 M48.5,11.6 l-5.9,3.1 M19.1,12.8L9.7,5.1l1.1,7.7 M13.4,29.8l1,7.3l6.6,1.6 M11.6,18.4l1,6.1 M32.8,41.9 M26.6,40.4 M27.3,40.2l6.1,1.6 M49.9,52.1l-5.6-7.6l-4.9-1.2",lineX:"M15.2,30 M19.7,15.6V1.9H29 M34.8,1.9H40.4 M55.3,15.6V1.9H45.9 M19.7,44.4V58.1H29 M34.8,58.1H40.4 M55.3,44.4 V58.1H45.9 M12.5,20.3l-9.4,9.6l9.6,9.8 M3.1,29.9h16.5 M62.5,20.3l9.4,9.6L62.3,39.7 M71.9,29.9H55.4",lineY:"M38.8,7.7 M52.7,12h13.2v9 M65.9,26.6V32 M52.7,46.3h13.2v-9 M24.9,12H11.8v9 M11.8,26.6V32 M24.9,46.3H11.8v-9 M48.2,5.1l-9.3-9l-9.4,9.2 M38.9-3.9V12 M48.2,53.3l-9.3,9l-9.4-9.2 M38.9,62.3V46.4",keep:"M4,10.5V1h10.3 M20.7,1h6.1 M33,1h6.1 M55.4,10.5V1H45.2 M4,17.3v6.6 M55.6,17.3v6.6 M4,30.5V40h10.3 M20.7,40 h6.1 M33,40h6.1 M55.4,30.5V40H45.2 M21,18.9h62.9v48.6H21V18.9z",clear:"M22,14.7l30.9,31 M52.9,14.7L22,45.7 M4.7,16.8V4.2h13.1 M26,4.2h7.8 M41.6,4.2h7.8 M70.3,16.8V4.2H57.2 M4.7,25.9v8.6 M70.3,25.9v8.6 M4.7,43.2v12.6h13.1 M26,55.8h7.8 M41.6,55.8h7.8 M70.3,43.2v12.6H57.2"},title:k(qD.title)};var $D=KD.prototype;$D.render=$D.updateView=function(e,t,i){var n,o,a;t.eachComponent({mainType:"brush"},function(t){n=t.brushType,o=t.brushOption.brushMode||"single",a|=t.areas.length}),this._brushType=n,this._brushMode=o,E(e.get("type",!0),function(t){e.setIconStatus(t,("keep"===t?"multiple"===o:"clear"===t?a:t===n)?"emphasis":"normal")})},$D.getIcons=function(){var t=this.model,e=t.get("icon",!0),i={};return E(t.get("type",!0),function(t){e[t]&&(i[t]=e[t])}),i},$D.onclick=function(t,e,i){var n=this._brushType,o=this._brushMode;"clear"===i?(e.dispatchAction({type:"axisAreaSelect",intervals:[]}),e.dispatchAction({type:"brush",command:"clear",areas:[]})):e.dispatchAction({type:"takeGlobalCursor",key:"brush",brushOption:{brushType:"keep"===i?n:n!==i&&i,brushMode:"keep"===i?"multiple"===o?"single":"multiple":o}})},nA("brush",KD),yf(function(t,e){var i=t&&t.brush;if(L(i)||(i=i?[i]:[]),i.length){var n=[];E(i,function(t){var e=t.hasOwnProperty("toolbox")?t.toolbox:[];e instanceof Array&&(n=n.concat(e))});var o=t&&t.toolbox;L(o)&&(o=o[0]),o||(o={feature:{}},t.toolbox=[o]);var a=o.feature||(o.feature={}),r=a.brush||(a.brush={}),s=r.type||(r.type=[]);s.push.apply(s,n),function(i){var e={};E(i,function(t){e[t]=1}),i.length=0,E(e,function(t,e){i.push(e)})}(s),e&&!s.length&&s.push.apply(s,DD)}}),Tf({type:"title",layoutMode:{type:"box",ignoreSize:!0},defaultOption:{zlevel:0,z:6,show:!0,text:"",target:"blank",subtext:"",subtarget:"blank",left:0,top:0,backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderWidth:0,padding:5,itemGap:10,textStyle:{fontSize:18,fontWeight:"bolder",color:"#333"},subtextStyle:{color:"#aaa"}}}),Af({type:"title",render:function(t,e,i){if(this.group.removeAll(),t.get("show")){var n=this.group,o=t.getModel("textStyle"),a=t.getModel("subtextStyle"),r=t.get("textAlign"),s=H(t.get("textBaseline"),t.get("textVerticalAlign")),l=new Ur({style:nl({},o,{text:t.get("text"),textFill:o.getTextColor()},{disableBox:!0}),z2:10}),u=l.getBoundingRect(),h=t.get("subtext"),c=new Ur({style:nl({},a,{text:h,textFill:a.getTextColor(),y:u.height+t.get("itemGap"),textVerticalAlign:"top"},{disableBox:!0}),z2:10}),d=t.get("link"),f=t.get("sublink"),p=t.get("triggerEvent",!0);l.silent=!d&&!p,c.silent=!f&&!p,d&&l.on("click",function(){gu(d,"_"+t.get("target"))}),f&&c.on("click",function(){gu(d,"_"+t.get("subtarget"))}),l.eventData=c.eventData=p?{componentType:"title",componentIndex:t.componentIndex}:null,n.add(l),h&&n.add(c);var g=n.getBoundingRect(),m=t.getBoxLayoutParams();m.width=g.width,m.height=g.height;var v=bu(m,{width:i.getWidth(),height:i.getHeight()},t.get("padding"));r||("middle"===(r=t.get("left")||t.get("right"))&&(r="center"),"right"===r?v.x+=v.width:"center"===r&&(v.x+=v.width/2)),s||("center"===(s=t.get("top")||t.get("bottom"))&&(s="middle"),"bottom"===s?v.y+=v.height:"middle"===s&&(v.y+=v.height/2),s=s||"top"),n.attr("position",[v.x,v.y]);var y={textAlign:r,textVerticalAlign:s};l.setStyle(y),c.setStyle(y),g=n.getBoundingRect();var x=v.margin,_=t.getItemStyle(["color","opacity"]);_.fill=t.get("backgroundColor");var w=new rs({shape:{x:g.x-x[3],y:g.y-x[0],width:g.width+x[1]+x[3],height:g.height+x[0]+x[2],r:t.get("borderRadius")},style:_,subPixelOptimize:!0,silent:!0});n.add(w)}}});function JD(t){var e=t.itemStyle||(t.itemStyle={}),i=e.emphasis||(e.emphasis={}),n=t.label||t.label||{},o=n.normal||(n.normal={}),a={normal:1,emphasis:1};E(n,function(t,e){a[e]||QD(o,e)||(o[e]=t)}),i.label&&!QD(n,"emphasis")&&(n.emphasis=i.label,delete i.label)}function QD(t,e){return t.hasOwnProperty(e)}ku.registerSubTypeDefaulter("timeline",function(){return"slider"}),_f({type:"timelineChange",event:"timelineChanged",update:"prepareAndUpdate"},function(t,e){var i=e.getComponent("timeline");return i&&null!=t.currentIndex&&(i.setCurrentIndex(t.currentIndex),!i.get("loop",!0)&&i.isIndexMax()&&i.setPlayState(!1)),e.resetOption("timeline"),D({currentIndex:i.option.currentIndex},t)}),_f({type:"timelinePlayChange",event:"timelinePlayChanged",update:"update"},function(t,e){var i=e.getComponent("timeline");i&&null!=t.playState&&i.setPlayState(t.playState)});var tC=ku.extend({type:"timeline",layoutMode:"box",defaultOption:{zlevel:0,z:4,show:!0,axisType:"time",realtime:!0,left:"20%",top:null,right:"20%",bottom:0,width:null,height:40,padding:5,controlPosition:"left",autoPlay:!1,rewind:!1,loop:!0,playInterval:2e3,currentIndex:0,itemStyle:{},label:{color:"#000"},data:[]},init:function(t,e,i){this._data,this._names,this.mergeDefaultAndTheme(t,i),this._initData()},mergeOption:function(t){tC.superApply(this,"mergeOption",arguments),this._initData()},setCurrentIndex:function(t){null==t&&(t=this.option.currentIndex);var e=this._data.count();this.option.loop?t=(t%e+e)%e:(e<=t&&(t=e-1),t<0&&(t=0)),this.option.currentIndex=t},getCurrentIndex:function(){return this.option.currentIndex},isIndexMax:function(){return this.getCurrentIndex()>=this._data.count()-1},setPlayState:function(t){this.option.autoPlay=!!t},getPlayState:function(){return!!this.option.autoPlay},_initData:function(){var t=this.option,e=t.data||[],i=t.axisType,o=this._names=[];if("category"===i){var a=[];E(e,function(t,e){var i,n=Wo(t);z(t)?(i=k(t)).value=e:i=e,a.push(i),R(n)||null!=n&&!isNaN(n)||(n=""),o.push(n+"")}),e=a}var n={category:"ordinal",time:"time"}[i]||"number";(this._data=new Yf([{name:"value",type:n}],this)).initData(e,o)},getData:function(){return this._data},getCategories:function(){if("category"===this.get("axisType"))return this._names.slice()}});b(tC.extend({type:"timeline.slider",defaultOption:{backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderWidth:0,orient:"horizontal",inverse:!1,tooltip:{trigger:"item"},symbol:"emptyCircle",symbolSize:10,lineStyle:{show:!0,width:2,color:"#304654"},label:{position:"auto",show:!0,interval:"auto",rotate:0,color:"#304654"},itemStyle:{color:"#304654",borderWidth:1},checkpointStyle:{symbol:"circle",symbolSize:13,color:"#c23531",borderWidth:5,borderColor:"rgba(194,53,49, 0.5)",animation:!0,animationDuration:300,animationEasing:"quinticInOut"},controlStyle:{show:!0,showPlayBtn:!0,showPrevBtn:!0,showNextBtn:!0,itemSize:22,itemGap:12,position:"left",playIcon:"path://M31.6,53C17.5,53,6,41.5,6,27.4S17.5,1.8,31.6,1.8C45.7,1.8,57.2,13.3,57.2,27.4S45.7,53,31.6,53z M31.6,3.3 C18.4,3.3,7.5,14.1,7.5,27.4c0,13.3,10.8,24.1,24.1,24.1C44.9,51.5,55.7,40.7,55.7,27.4C55.7,14.1,44.9,3.3,31.6,3.3z M24.9,21.3 c0-2.2,1.6-3.1,3.5-2l10.5,6.1c1.899,1.1,1.899,2.9,0,4l-10.5,6.1c-1.9,1.1-3.5,0.2-3.5-2V21.3z",stopIcon:"path://M30.9,53.2C16.8,53.2,5.3,41.7,5.3,27.6S16.8,2,30.9,2C45,2,56.4,13.5,56.4,27.6S45,53.2,30.9,53.2z M30.9,3.5C17.6,3.5,6.8,14.4,6.8,27.6c0,13.3,10.8,24.1,24.101,24.1C44.2,51.7,55,40.9,55,27.6C54.9,14.4,44.1,3.5,30.9,3.5z M36.9,35.8c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H36c0.5,0,0.9,0.4,0.9,1V35.8z M27.8,35.8 c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H27c0.5,0,0.9,0.4,0.9,1L27.8,35.8L27.8,35.8z",nextIcon:"path://M18.6,50.8l22.5-22.5c0.2-0.2,0.3-0.4,0.3-0.7c0-0.3-0.1-0.5-0.3-0.7L18.7,4.4c-0.1-0.1-0.2-0.3-0.2-0.5 c0-0.4,0.3-0.8,0.8-0.8c0.2,0,0.5,0.1,0.6,0.3l23.5,23.5l0,0c0.2,0.2,0.3,0.4,0.3,0.7c0,0.3-0.1,0.5-0.3,0.7l-0.1,0.1L19.7,52 c-0.1,0.1-0.3,0.2-0.5,0.2c-0.4,0-0.8-0.3-0.8-0.8C18.4,51.2,18.5,51,18.6,50.8z",prevIcon:"path://M43,52.8L20.4,30.3c-0.2-0.2-0.3-0.4-0.3-0.7c0-0.3,0.1-0.5,0.3-0.7L42.9,6.4c0.1-0.1,0.2-0.3,0.2-0.5 c0-0.4-0.3-0.8-0.8-0.8c-0.2,0-0.5,0.1-0.6,0.3L18.3,28.8l0,0c-0.2,0.2-0.3,0.4-0.3,0.7c0,0.3,0.1,0.5,0.3,0.7l0.1,0.1L41.9,54 c0.1,0.1,0.3,0.2,0.5,0.2c0.4,0,0.8-0.3,0.8-0.8C43.2,53.2,43.1,53,43,52.8z",color:"#304654",borderColor:"#304654",borderWidth:1},emphasis:{label:{show:!0,color:"#c23531"},itemStyle:{color:"#c23531"},controlStyle:{color:"#c23531",borderColor:"#c23531",borderWidth:2}},data:[]}}),Xh);function eC(t,e,i,n){Gg.call(this,t,e,i),this.type=n||"value",this.model=null}var iC=gc.extend({type:"timeline"});eC.prototype={constructor:eC,getLabelModel:function(){return this.model.getModel("label")},isHorizontal:function(){return"horizontal"===this.model.get("orient")}},w(eC,Gg);var nC=A,oC=E,aC=Math.PI;function rC(t,e,i,n,o,a){var r=e.get("color");o?(o.setColor(r),i.add(o),a&&a.onUpdate(o)):((o=wg(t.get("symbol"),-1,-1,2,2,r)).setStyle("strokeNoScale",!0),i.add(o),a&&a.onCreate(o));var s=e.getItemStyle(["color","symbol","symbolSize"]);o.setStyle(s),n=m({rectHover:!0,z2:100},n,!0);var l=t.get("symbolSize");(l=l instanceof Array?l.slice():[+l,+l])[0]/=2,l[1]/=2,n.scale=l;var u=t.get("symbolOffset");if(u){var h=n.position=n.position||[0,0];h[0]+=Rl(u[0],l[0]),h[1]+=Rl(u[1],l[1])}var c=t.get("symbolRotate");return n.rotation=(c||0)*Math.PI/180||0,o.attr(n),o.updateTransform(),o}function sC(t,e,i,n,o){if(!t.dragging){var a=n.getModel("checkpointStyle"),r=i.dataToCoord(n.getData().get(["value"],e));o||!a.get("animation",!0)?t.attr({position:[r,0]}):(t.stopAnimation(!0),t.animateTo({position:[r,0]},a.get("animationDuration",!0),a.get("animationEasing",!0)))}}iC.extend({type:"timeline.slider",init:function(t,e){this.api=e,this._axis,this._viewRect,this._timer,this._currentPointer,this._mainGroup,this._labelGroup},render:function(e,t,i,n){if(this.model=e,this.api=i,this.ecModel=t,this.group.removeAll(),e.get("show",!0)){var o=this._layout(e,i),a=this._createGroup("mainGroup"),r=this._createGroup("labelGroup"),s=this._axis=this._createAxis(o,e);e.formatTooltip=function(t){return au(s.scale.getLabel(t))},oC(["AxisLine","AxisTick","Control","CurrentPointer"],function(t){this["_render"+t](o,a,s,e)},this),this._renderAxisLabel(o,r,s,e),this._position(o,e)}this._doPlayStop()},remove:function(){this._clearTimer(),this.group.removeAll()},dispose:function(){this._clearTimer()},_layout:function(t,e){var i=t.get("label.position"),n=t.get("orient"),o=function(t,e){return bu(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()},t.get("padding"))}(t,e);null==i||"auto"===i?i="horizontal"===n?o.y+o.height/2<e.getHeight()/2?"-":"+":o.x+o.width/2<e.getWidth()/2?"+":"-":isNaN(i)&&(i={horizontal:{top:"-",bottom:"+"},vertical:{left:"-",right:"+"}}[n][i]);var a,r,s,l,u={horizontal:"center",vertical:0<=i||"+"===i?"left":"right"},h={horizontal:0<=i||"+"===i?"top":"bottom",vertical:"middle"},c={horizontal:0,vertical:aC/2},d="vertical"===n?o.height:o.width,f=t.getModel("controlStyle"),p=f.get("show",!0),g=p?f.get("itemSize"):0,m=p?f.get("itemGap"):0,v=g+m,y=t.get("label.rotate")||0;y=y*aC/180;var x=f.get("position",!0),_=p&&f.get("showPlayBtn",!0),w=p&&f.get("showPrevBtn",!0),b=p&&f.get("showNextBtn",!0),S=0,M=d;return"left"===x||"bottom"===x?(_&&(a=[0,0],S+=v),w&&(r=[S,0],S+=v)):(_&&(a=[M-g,0],M-=v),w&&(r=[0,0],S+=v)),b&&(s=[M-g,0],M-=v),l=[S,M],t.get("inverse")&&l.reverse(),{viewRect:o,mainLength:d,orient:n,rotation:c[n],labelRotation:y,labelPosOpt:i,labelAlign:t.get("label.align")||u[n],labelBaseline:t.get("label.verticalAlign")||t.get("label.baseline")||h[n],playPosition:a,prevBtnPosition:r,nextBtnPosition:s,axisExtent:l,controlSize:g,controlGap:m}},_position:function(t,e){var i=this._mainGroup,n=this._labelGroup,o=t.viewRect;if("vertical"===t.orient){var a=ae(),r=o.x,s=o.y+o.height;ue(a,a,[-r,-s]),he(a,a,-aC/2),ue(a,a,[r,s]),(o=o.clone()).applyTransform(a)}var l=m(o),u=m(i.getBoundingRect()),h=m(n.getBoundingRect()),c=i.position,d=n.position;d[0]=c[0]=l[0][0];var f,p=t.labelPosOpt;isNaN(p)?(v(c,u,l,1,f="+"===p?0:1),v(d,h,l,1,1-f)):(v(c,u,l,1,f=0<=p?0:1),d[1]=c[1]+p);function g(t){var e=t.position;t.origin=[l[0][0]-e[0],l[1][0]-e[1]]}function m(t){return[[t.x,t.x+t.width],[t.y,t.y+t.height]]}function v(t,e,i,n,o){t[n]+=i[n][o]-e[n][o]}i.attr("position",c),n.attr("position",d),i.rotation=n.rotation=t.rotation,g(i),g(n)},_createAxis:function(t,e){var i=e.getData(),n=e.get("axisType"),o=sg(e,n);o.getTicks=function(){return i.mapArray(["value"],function(t){return t})};var a=i.getDataExtent("value");o.setExtent(a[0],a[1]),o.niceTicks();var r=new eC("value",o,t.axisExtent,n);return r.model=e,r},_createGroup:function(t){var e=this["_"+t]=new Ci;return this.group.add(e),e},_renderAxisLine:function(t,e,i,n){var o=i.getExtent();n.get("lineStyle.show")&&e.add(new ls({shape:{x1:o[0],y1:0,x2:o[1],y2:0},style:P({lineCap:"round"},n.getModel("lineStyle").getLineStyle()),silent:!0,z2:1}))},_renderAxisTick:function(t,s,l,u){var h=u.getData(),e=l.scale.getTicks();oC(e,function(t){var e=l.dataToCoord(t),i=h.getItemModel(t),n=i.getModel("itemStyle"),o=i.getModel("emphasis.itemStyle"),a={position:[e,0],onclick:nC(this._changeTimeline,this,t)},r=rC(i,n,s,a);$s(r,o.getItemStyle()),i.get("tooltip")?(r.dataIndex=t,r.dataModel=u):r.dataIndex=r.dataModel=null},this)},_renderAxisLabel:function(s,l,u,t){if(u.getLabelModel().get("show")){var h=t.getData(),e=u.getViewLabels();oC(e,function(t){var e=t.tickValue,i=h.getItemModel(e),n=i.getModel("label"),o=i.getModel("emphasis.label"),a=u.dataToCoord(t.tickValue),r=new Ur({position:[a,0],rotation:s.labelRotation-s.rotation,onclick:nC(this._changeTimeline,this,e),silent:!1});nl(r.style,n,{text:t.formattedLabel,textAlign:s.labelAlign,textVerticalAlign:s.labelBaseline}),l.add(r),$s(r,nl({},o))},this)}},_renderControl:function(t,a,e,r){var s=t.controlSize,l=t.rotation,u=r.getModel("controlStyle").getItemStyle(),h=r.getModel("emphasis.controlStyle").getItemStyle(),c=[0,-s/2,s,s],i=r.getPlayState(),n=r.get("inverse",!0);function o(t,e,i,n){if(t){var o=function(t,e,i,n){return Ps(t.get(e).replace(/^path:\/\//,""),k(n||{}),new Di(i[0],i[1],i[2],i[3]),"center")}(r,e,c,{position:t,origin:[s/2,0],rotation:n?-l:0,rectHover:!0,style:u,onclick:i});a.add(o),$s(o,h)}}o(t.nextBtnPosition,"controlStyle.nextIcon",nC(this._changeTimeline,this,n?"-":"+")),o(t.prevBtnPosition,"controlStyle.prevIcon",nC(this._changeTimeline,this,n?"+":"-")),o(t.playPosition,"controlStyle."+(i?"stopIcon":"playIcon"),nC(this._handlePlayClick,this,!i),!0)},_renderCurrentPointer:function(t,e,i,n){var o=n.getData(),a=n.getCurrentIndex(),r=o.getItemModel(a).getModel("checkpointStyle"),s=this,l={onCreate:function(t){t.draggable=!0,t.drift=nC(s._handlePointerDrag,s),t.ondragend=nC(s._handlePointerDragend,s),sC(t,a,i,n,!0)},onUpdate:function(t){sC(t,a,i,n)}};this._currentPointer=rC(r,r,this._mainGroup,{},this._currentPointer,l)},_handlePlayClick:function(t){this._clearTimer(),this.api.dispatchAction({type:"timelinePlayChange",playState:t,from:this.uid})},_handlePointerDrag:function(t,e,i){this._clearTimer(),this._pointerChangeTimeline([i.offsetX,i.offsetY])},_handlePointerDragend:function(t){this._pointerChangeTimeline([t.offsetX,t.offsetY],!0)},_pointerChangeTimeline:function(t,e){var i=this._toAxisCoord(t)[0],n=Bl(this._axis.getExtent().slice());i>n[1]&&(i=n[1]),i<n[0]&&(i=n[0]),this._currentPointer.position[0]=i,this._currentPointer.dirty();var o=this._findNearestTick(i),a=this.model;(e||o!==a.getCurrentIndex()&&a.get("realtime"))&&this._changeTimeline(o)},_doPlayStop:function(){this._clearTimer(),this.model.getPlayState()&&(this._timer=setTimeout(nC(function(){var t=this.model;this._changeTimeline(t.getCurrentIndex()+(t.get("rewind",!0)?-1:1))},this),this.model.get("playInterval")))},_toAxisCoord:function(t){return pl(t,this._mainGroup.getLocalTransform(),!0)},_findNearestTick:function(o){var a,t=this.model.getData(),r=1/0,s=this._axis;return t.each(["value"],function(t,e){var i=s.dataToCoord(t),n=Math.abs(i-o);n<r&&(r=n,a=e)}),a},_clearTimer:function(){this._timer&&(clearTimeout(this._timer),this._timer=null)},_changeTimeline:function(t){var e=this.model.getCurrentIndex();"+"===t?t=e+1:"-"===t&&(t=e-1),this.api.dispatchAction({type:"timelineChange",currentIndex:t,from:this.uid})}}),yf(function(t){var e=t&&t.timeline;L(e)||(e=e?[e]:[]),E(e,function(t){t&&function(t){var e=t.type,i={number:"value",time:"time"};i[e]&&(t.axisType=i[e],delete t.type);if(JD(t),QD(t,"controlPosition")){var n=t.controlStyle||(t.controlStyle={});QD(n,"position")||(n.position=t.controlPosition),"none"!==n.position||QD(n,"show")||(n.show=!1,delete n.position),delete t.controlPosition}E(t.data||[],function(t){z(t)&&!L(t)&&(!QD(t,"value")&&QD(t,"name")&&(t.value=t.name),JD(t))})}(t)})});var lC=tu,uC=au;function hC(t){Go(t,"label",["show"])}var cC=Tf({type:"marker",dependencies:["series","grid","polar","geo"],init:function(t,e,i){this.mergeDefaultAndTheme(t,i),this._mergeOption(t,i,!1,!0)},isAnimationEnabled:function(){if(v.node)return!1;var t=this.__hostSeries;return this.getShallow("animation")&&t&&t.isAnimationEnabled()},mergeOption:function(t,e){this._mergeOption(t,e,!1,!1)},_mergeOption:function(t,n,e,o){var a=this.constructor,r=this.mainType+"Model";e||n.eachSeries(function(t){var e=t.get(this.mainType,!0),i=t[r];e&&e.data?(i?i._mergeOption(e,n,!0):(o&&hC(e),E(e.data,function(t){t instanceof Array?(hC(t[0]),hC(t[1])):hC(t)}),P(i=new a(e,this,n),{mainType:this.mainType,seriesIndex:t.seriesIndex,name:t.name,createdBySelf:!0}),i.__hostSeries=t),t[r]=i):t[r]=null},this)},formatTooltip:function(t){var e=this.getData(),i=this.getRawValue(t),n=L(i)?O(i,lC).join(", "):lC(i),o=e.getName(t),a=uC(this.name);return null==i&&!o||(a+="<br />"),o&&(a+=uC(o),null!=i&&(a+=" : ")),null!=i&&(a+=uC(n)),a},getData:function(){return this._data},setData:function(t){this._data=t}});b(cC,Xh),cC.extend({type:"markPoint",defaultOption:{zlevel:0,z:5,symbol:"pin",symbolSize:50,tooltip:{trigger:"item"},label:{show:!0,position:"inside"},itemStyle:{borderWidth:2},emphasis:{label:{show:!0}}}});var dC=_;function fC(t,e,i,n,o,a){var r=[],s=fp(e,n)?e.getCalculationInfo("stackResultDimension"):n,l=_C(e,s,t),u=e.indicesOfNearest(s,l)[0];r[o]=e.get(i,u),r[a]=e.get(s,u);var h=e.get(n,u),c=Vl(e.get(n,u));return 0<=(c=Math.min(c,20))&&(r[a]=+r[a].toFixed(c)),[r,h]}var pC=T,gC={min:pC(fC,"min"),max:pC(fC,"max"),average:pC(fC,"average")};function mC(t,e){var i=t.getData(),n=t.coordinateSystem;if(e&&!function(t){return!isNaN(parseFloat(t.x))&&!isNaN(parseFloat(t.y))}(e)&&!L(e.coord)&&n){var o=n.dimensions,a=vC(e,i,n,t);if((e=k(e)).type&&gC[e.type]&&a.baseAxis&&a.valueAxis){var r=dC(o,a.baseAxis.dim),s=dC(o,a.valueAxis.dim),l=gC[e.type](i,a.baseDataDim,a.valueDataDim,r,s);e.coord=l[0],e.value=l[1]}else{for(var u=[null!=e.xAxis?e.xAxis:e.radiusAxis,null!=e.yAxis?e.yAxis:e.angleAxis],h=0;h<2;h++)gC[u[h]]&&(u[h]=_C(i,i.mapDimension(o[h]),u[h]));e.coord=u}}return e}function vC(t,e,i,n){var o={};return null!=t.valueIndex||null!=t.valueDim?(o.valueDataDim=null!=t.valueIndex?e.getDimension(t.valueIndex):t.valueDim,o.valueAxis=i.getAxis(function(t,e){var i=t.getData(),n=i.dimensions;e=i.getDimension(e);for(var o=0;o<n.length;o++){var a=i.getDimensionInfo(n[o]);if(a.name===e)return a.coordDim}}(n,o.valueDataDim)),o.baseAxis=i.getOtherAxis(o.valueAxis),o.baseDataDim=e.mapDimension(o.baseAxis.dim)):(o.baseAxis=n.getBaseAxis(),o.valueAxis=i.getOtherAxis(o.baseAxis),o.baseDataDim=e.mapDimension(o.baseAxis.dim),o.valueDataDim=e.mapDimension(o.valueAxis.dim)),o}function yC(t,e){return!(t&&t.containData&&e.coord&&!function(t){return!(isNaN(parseFloat(t.x))&&isNaN(parseFloat(t.y)))}(e))||t.containData(e.coord)}function xC(t,e,i,n){return n<2?t.coord&&t.coord[n]:t.value}function _C(t,e,i){if("average"!==i)return"median"===i?t.getMedian(e):t.getDataExtent(e,!0)["max"===i?1:0];var n=0,o=0;return t.each(e,function(t,e){isNaN(t)||(n+=t,o++)}),n/o}var wC=Af({type:"marker",init:function(){this.markerGroupMap=Q()},render:function(t,i,n){var e=this.markerGroupMap;e.each(function(t){t.__keep=!1});var o=this.type+"Model";i.eachSeries(function(t){var e=t[o];e&&this.renderSeries(t,e,i,n)},this),e.each(function(t){t.__keep||this.group.remove(t.group)},this)},renderSeries:function(){}});function bC(s,l,u){var h=l.coordinateSystem;s.each(function(t){var e,i=s.getItemModel(t),n=Rl(i.get("x"),u.getWidth()),o=Rl(i.get("y"),u.getHeight());if(isNaN(n)||isNaN(o)){if(l.getMarkerPosition)e=l.getMarkerPosition(s.getValues(s.dimensions,t));else if(h){var a=s.get(h.dimensions[0],t),r=s.get(h.dimensions[1],t);e=h.dataToPoint([a,r])}}else e=[n,o];isNaN(n)||(e[0]=n),isNaN(o)||(e[1]=o),s.setItemLayout(t,e)})}wC.extend({type:"markPoint",updateTransform:function(t,e,i){e.eachSeries(function(t){var e=t.markPointModel;e&&(bC(e.getData(),t,i),this.markerGroupMap.get(t.id).updateLayout(e))},this)},renderSeries:function(t,l,e,i){var n=t.coordinateSystem,o=t.id,u=t.getData(),a=this.markerGroupMap,r=a.get(o)||a.set(o,new im),h=function(t,e,i){var n;n=t?O(t&&t.dimensions,function(t){return D({name:t},e.getData().getDimensionInfo(e.getData().mapDimension(t))||{})}):[{name:"value",type:"float"}];var o=new Yf(n,i),a=O(i.get("data"),T(mC,e));t&&(a=M(a,T(yC,t)));return o.initData(a,null,t?xC:function(t){return t.value}),o}(n,t,l);l.setData(h),bC(l.getData(),t,i),h.each(function(t){var e=h.getItemModel(t),i=e.getShallow("symbol"),n=e.getShallow("symbolSize"),o=C(i),a=C(n);if(o||a){var r=l.getRawValue(t),s=l.getDataParams(t);o&&(i=i(r,s)),a&&(n=n(r,s))}h.setItemVisual(t,{symbol:i,symbolSize:n,color:e.get("itemStyle.color")||u.getVisual("color")})}),r.updateData(h),this.group.add(r.group),h.eachItemGraphicEl(function(t){t.traverse(function(t){t.dataModel=l})}),r.__keep=!0,r.group.silent=l.get("silent")||t.get("silent")}}),yf(function(t){t.markPoint=t.markPoint||{}}),cC.extend({type:"markLine",defaultOption:{zlevel:0,z:5,symbol:["circle","arrow"],symbolSize:[8,16],precision:2,tooltip:{trigger:"item"},label:{show:!0,position:"end",distance:5},lineStyle:{type:"dashed"},emphasis:{label:{show:!0},lineStyle:{width:3}},animationEasing:"linear"}});function SC(t,e,i,n){var o=t.getData(),a=n.type;if(!L(n)&&("min"===a||"max"===a||"average"===a||"median"===a||null!=n.xAxis||null!=n.yAxis)){var r,s;if(null!=n.yAxis||null!=n.xAxis)r=e.getAxis(null!=n.yAxis?"y":"x"),s=W(n.yAxis,n.xAxis);else{var l=vC(n,o,e,t);r=l.valueAxis,s=_C(o,pp(o,l.valueDataDim),a)}var u="x"===r.dim?0:1,h=1-u,c=k(n),d={};c.type=null,c.coord=[],d.coord=[],c.coord[h]=-1/0,d.coord[h]=1/0;var f=i.get("precision");0<=f&&"number"==typeof s&&(s=+s.toFixed(Math.min(f,20))),c.coord[u]=d.coord[u]=s,n=[c,d,{type:a,valueIndex:n.valueIndex,value:s}]}return(n=[mC(t,n[0]),mC(t,n[1]),P({},n[2])])[2].type=n[2].type||"",m(n[2],n[0]),m(n[2],n[1]),n}function MC(t){return!isNaN(t)&&!isFinite(t)}function IC(t,e,i,n){var o=1-t,a=n.dimensions[t];return MC(e[o])&&MC(i[o])&&e[t]===i[t]&&n.getAxis(a).containData(e[t])}function TC(t,e){if("cartesian2d"===t.type){var i=e[0].coord,n=e[1].coord;if(i&&n&&(IC(1,i,n,t)||IC(0,i,n,t)))return!0}return yC(t,e[0])&&yC(t,e[1])}function AC(t,e,i,n,o){var a,r=n.coordinateSystem,s=t.getItemModel(e),l=Rl(s.get("x"),o.getWidth()),u=Rl(s.get("y"),o.getHeight());if(isNaN(l)||isNaN(u)){if(n.getMarkerPosition)a=n.getMarkerPosition(t.getValues(t.dimensions,e));else{var h=r.dimensions,c=t.get(h[0],e),d=t.get(h[1],e);a=r.dataToPoint([c,d])}if("cartesian2d"===r.type){var f=r.getAxis("x"),p=r.getAxis("y");h=r.dimensions;MC(t.get(h[0],e))?a[0]=f.toGlobalCoord(f.getExtent()[i?0:1]):MC(t.get(h[1],e))&&(a[1]=p.toGlobalCoord(p.getExtent()[i?0:1]))}isNaN(l)||(a[0]=l),isNaN(u)||(a[1]=u)}else a=[l,u];t.setItemLayout(e,a)}wC.extend({type:"markLine",updateTransform:function(t,e,a){e.eachSeries(function(e){var t=e.markLineModel;if(t){var i=t.getData(),n=t.__from,o=t.__to;n.each(function(t){AC(n,t,!0,e,a),AC(o,t,!1,e,a)}),i.each(function(t){i.setItemLayout(t,[n.getItemLayout(t),o.getItemLayout(t)])}),this.markerGroupMap.get(e.id).updateLayout()}},this)},renderSeries:function(o,i,t,a){var e=o.coordinateSystem,n=o.id,r=o.getData(),s=this.markerGroupMap,l=s.get(n)||s.set(n,new pw);this.group.add(l.group);var u=function(t,e,i){var n;n=t?O(t&&t.dimensions,function(t){return D({name:t},e.getData().getDimensionInfo(e.getData().mapDimension(t))||{})}):[{name:"value",type:"float"}];var o=new Yf(n,i),a=new Yf(n,i),r=new Yf([],i),s=O(i.get("data"),T(SC,e,t,i));t&&(s=M(s,T(TC,t)));var l=t?xC:function(t){return t.value};return o.initData(O(s,function(t){return t[0]}),null,l),a.initData(O(s,function(t){return t[1]}),null,l),r.initData(O(s,function(t){return t[2]})),r.hasItemOption=!0,{from:o,to:a,line:r}}(e,o,i),h=u.from,c=u.to,d=u.line;i.__from=h,i.__to=c,i.setData(d);var f=i.get("symbol"),p=i.get("symbolSize");function g(t,e,i){var n=t.getItemModel(e);AC(t,e,i,o,a),t.setItemVisual(e,{symbolSize:n.get("symbolSize")||p[i?0:1],symbol:n.get("symbol",!0)||f[i?0:1],color:n.get("itemStyle.color")||r.getVisual("color")})}L(f)||(f=[f,f]),"number"==typeof p&&(p=[p,p]),u.from.each(function(t){g(h,t,!0),g(c,t,!1)}),d.each(function(t){var e=d.getItemModel(t).get("lineStyle.color");d.setItemVisual(t,{color:e||h.getItemVisual(t,"color")}),d.setItemLayout(t,[h.getItemLayout(t),c.getItemLayout(t)]),d.setItemVisual(t,{fromSymbolSize:h.getItemVisual(t,"symbolSize"),fromSymbol:h.getItemVisual(t,"symbol"),toSymbolSize:c.getItemVisual(t,"symbolSize"),toSymbol:c.getItemVisual(t,"symbol")})}),l.updateData(d),u.line.eachItemGraphicEl(function(t,e){t.traverse(function(t){t.dataModel=i})}),l.__keep=!0,l.group.silent=i.get("silent")||o.get("silent")}}),yf(function(t){t.markLine=t.markLine||{}}),cC.extend({type:"markArea",defaultOption:{zlevel:0,z:1,tooltip:{trigger:"item"},animation:!1,label:{show:!0,position:"top"},itemStyle:{borderWidth:0},emphasis:{label:{show:!0,position:"top"}}}});function DC(t,e,i,n){var o=mC(t,n[0]),a=mC(t,n[1]),r=W,s=o.coord,l=a.coord;s[0]=r(s[0],-1/0),s[1]=r(s[1],-1/0),l[0]=r(l[0],1/0),l[1]=r(l[1],1/0);var u=p([{},o,a]);return u.coord=[o.coord,a.coord],u.x0=o.x,u.y0=o.y,u.x1=a.x,u.y1=a.y,u}function CC(t){return!isNaN(t)&&!isFinite(t)}function LC(t,e,i){var n=1-t;return CC(e[n])&&CC(i[n])}function kC(t,e){var i=e.coord[0],n=e.coord[1];return!("cartesian2d"!==t.type||!i||!n||!LC(1,i,n)&&!LC(0,i,n))||(yC(t,{coord:i,x:e.x0,y:e.y0})||yC(t,{coord:n,x:e.x1,y:e.y1}))}function PC(t,e,i,n,o){var a,r=n.coordinateSystem,s=t.getItemModel(e),l=Rl(s.get(i[0]),o.getWidth()),u=Rl(s.get(i[1]),o.getHeight());if(isNaN(l)||isNaN(u)){if(n.getMarkerPosition)a=n.getMarkerPosition(t.getValues(i,e));else{var h=[f=t.get(i[0],e),p=t.get(i[1],e)];r.clampData&&r.clampData(h,h),a=r.dataToPoint(h,!0)}if("cartesian2d"===r.type){var c=r.getAxis("x"),d=r.getAxis("y"),f=t.get(i[0],e),p=t.get(i[1],e);CC(f)?a[0]=c.toGlobalCoord(c.getExtent()["x0"===i[0]?0:1]):CC(p)&&(a[1]=d.toGlobalCoord(d.getExtent()["y0"===i[1]?0:1]))}isNaN(l)||(a[0]=l),isNaN(u)||(a[1]=u)}else a=[l,u];return a}var NC=[["x0","y0"],["x1","y0"],["x1","y1"],["x0","y1"]];wC.extend({type:"markArea",updateTransform:function(t,e,o){e.eachSeries(function(i){var t=i.markAreaModel;if(t){var n=t.getData();n.each(function(e){var t=O(NC,function(t){return PC(n,e,t,i,o)});n.setItemLayout(e,t),n.getItemGraphicEl(e).setShape("points",t)})}},this)},renderSeries:function(i,r,t,n){var e=i.coordinateSystem,o=i.id,a=i.getData(),s=this.markerGroupMap,l=s.get(o)||s.set(o,{group:new Ci});this.group.add(l.group),l.__keep=!0;var u=function(t,i,e){var n,o;o=t?(n=O(t&&t.dimensions,function(t){var e=i.getData();return D({name:t},e.getDimensionInfo(e.mapDimension(t))||{})}),new Yf(O(["x0","y0","x1","y1"],function(t,e){return{name:t,type:n[e%2].type}}),e)):new Yf(n=[{name:"value",type:"float"}],e);var a=O(e.get("data"),T(DC,i,t,e));t&&(a=M(a,T(kC,t)));var r=t?function(t,e,i,n){return t.coord[Math.floor(n/2)][n%2]}:function(t){return t.value};return o.initData(a,null,r),o.hasItemOption=!0,o}(e,i,r);r.setData(u),u.each(function(e){u.setItemLayout(e,O(NC,function(t){return PC(u,e,t,i,n)})),u.setItemVisual(e,{color:a.getVisual("color")})}),u.diff(l.__data).add(function(t){var e=new Qr({shape:{points:u.getItemLayout(t)}});u.setItemGraphicEl(t,e),l.group.add(e)}).update(function(t,e){var i=l.__data.getItemGraphicEl(e);cl(i,{shape:{points:u.getItemLayout(t)}},r,t),l.group.add(i),u.setItemGraphicEl(t,i)}).remove(function(t){var e=l.__data.getItemGraphicEl(t);l.group.remove(e)}).execute(),u.eachItemGraphicEl(function(t,e){var i=u.getItemModel(e),n=i.getModel("label"),o=i.getModel("emphasis.label"),a=u.getItemVisual(e,"color");t.useStyle(D(i.getModel("itemStyle").getItemStyle(),{fill:Ke(a,.4),stroke:a})),t.hoverStyle=i.getModel("emphasis.itemStyle").getItemStyle(),el(t.style,t.hoverStyle,n,o,{labelFetcher:r,labelDataIndex:e,defaultText:u.getName(e)||"",isRectText:!0,autoColor:a}),$s(t,{}),t.dataModel=r}),l.__data=u,l.group.silent=r.get("silent")||i.get("silent")}}),yf(function(t){t.markArea=t.markArea||{}});var OC=Oc.legend.selector,EC={all:{type:"all",title:k(OC.all)},inverse:{type:"inverse",title:k(OC.inverse)}},RC=Tf({type:"legend.plain",dependencies:["series"],layoutMode:{type:"box",ignoreSize:!0},init:function(t,e,i){this.mergeDefaultAndTheme(t,i),t.selected=t.selected||{},this._updateSelector(t)},mergeOption:function(t){RC.superCall(this,"mergeOption",t),this._updateSelector(t)},_updateSelector:function(t){var i=t.selector;!0===i&&(i=t.selector=["all","inverse"]),L(i)&&E(i,function(t,e){R(t)&&(t={type:t}),i[e]=m(t,EC[t.type])})},optionUpdated:function(){this._updateData(this.ecModel);var t=this._data;if(t[0]&&"single"===this.get("selectedMode")){for(var e=!1,i=0;i<t.length;i++){var n=t[i].get("name");if(this.isSelected(n)){this.select(n),e=!0;break}}e||this.select(t[0].get("name"))}},_updateData:function(o){var a=[],r=[];o.eachRawSeries(function(t){var e,i=t.name;if(r.push(i),t.legendVisualProvider){var n=t.legendVisualProvider.getAllNames();o.isSeriesFiltered(t)||(r=r.concat(n)),n.length?a=a.concat(n):e=!0}else e=!0;e&&Uo(t)&&a.push(t.name)}),this._availableNames=r;var t=O(this.get("data")||a,function(t){return"string"!=typeof t&&"number"!=typeof t||(t={name:t}),new Cl(t,this,this.ecModel)},this);this._data=t},getData:function(){return this._data},select:function(t){var e=this.option.selected;"single"===this.get("selectedMode")&&E(this._data,function(t){e[t.get("name")]=!1});e[t]=!0},unSelect:function(t){"single"!==this.get("selectedMode")&&(this.option.selected[t]=!1)},toggleSelected:function(t){var e=this.option.selected;e.hasOwnProperty(t)||(e[t]=!0),this[e[t]?"unSelect":"select"](t)},allSelect:function(){var t=this._data,e=this.option.selected;E(t,function(t){e[t.get("name",!0)]=!0})},inverseSelect:function(){var t=this._data,i=this.option.selected;E(t,function(t){var e=t.get("name",!0);i.hasOwnProperty(e)||(i[e]=!0),i[e]=!i[e]})},isSelected:function(t){var e=this.option.selected;return!(e.hasOwnProperty(t)&&!e[t])&&0<=_(this._availableNames,t)},getOrient:function(){return"vertical"===this.get("orient")?{index:1,name:"vertical"}:{index:0,name:"horizontal"}},defaultOption:{zlevel:0,z:4,show:!0,orient:"horizontal",left:"center",top:0,align:"auto",backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderRadius:0,borderWidth:0,padding:5,itemGap:10,itemWidth:25,itemHeight:14,inactiveColor:"#ccc",inactiveBorderColor:"#ccc",itemStyle:{borderWidth:0},textStyle:{color:"#333"},selectedMode:!0,selector:!1,selectorLabel:{show:!0,borderRadius:10,padding:[3,5,3,5],fontSize:12,fontFamily:" sans-serif",color:"#666",borderWidth:1,borderColor:"#666"},emphasis:{selectorLabel:{show:!0,color:"#eee",backgroundColor:"#666"}},selectorPosition:"auto",selectorItemGap:7,selectorButtonGap:10,tooltip:{show:!1}}});function zC(t,e,i){var o,a={},r="toggleSelected"===t;return i.eachComponent("legend",function(n){r&&null!=o?n[o?"select":"unSelect"](e.name):"allSelect"===t||"inverseSelect"===t?n[t]():(n[t](e.name),o=n.isSelected(e.name)),E(n.getData(),function(t){var e=t.get("name");if("\n"!==e&&""!==e){var i=n.isSelected(e);a.hasOwnProperty(e)?a[e]=a[e]&&i:a[e]=i}})}),"allSelect"===t||"inverseSelect"===t?{selected:a}:{name:e.name,selected:a}}_f("legendToggleSelect","legendselectchanged",T(zC,"toggleSelected")),_f("legendAllSelect","legendselectall",T(zC,"allSelect")),_f("legendInverseSelect","legendinverseselect",T(zC,"inverseSelect")),_f("legendSelect","legendselected",T(zC,"select")),_f("legendUnSelect","legendunselected",T(zC,"unSelect"));var BC=T,VC=E,GC=Ci,FC=Af({type:"legend.plain",newlineDisabled:!1,init:function(){this.group.add(this._contentGroup=new GC),this._backgroundEl,this.group.add(this._selectorGroup=new GC),this._isFirstRender=!0},getContentGroup:function(){return this._contentGroup},getSelectorGroup:function(){return this._selectorGroup},render:function(t,e,i){var n=this._isFirstRender;if(this._isFirstRender=!1,this.resetInner(),t.get("show",!0)){var o=t.get("align"),a=t.get("orient");o&&"auto"!==o||(o="right"===t.get("left")&&"vertical"===a?"right":"left");var r=t.get("selector",!0),s=t.get("selectorPosition",!0);!r||s&&"auto"!==s||(s="horizontal"===a?"end":"start"),this.renderInner(o,t,e,i,r,a,s);var l=t.getBoxLayoutParams(),u={width:i.getWidth(),height:i.getHeight()},h=t.get("padding"),c=bu(l,u,h),d=this.layoutInner(t,o,c,n,r,s),f=bu(D({width:d.width,height:d.height},l),u,h);this.group.attr("position",[f.x-d.x,f.y-d.y]),this.group.add(this._backgroundEl=rA(d,t))}},resetInner:function(){this.getContentGroup().removeAll(),this._backgroundEl&&this.group.remove(this._backgroundEl),this.getSelectorGroup().removeAll()},renderInner:function(u,h,c,d,t,e,i){var f=this.getContentGroup(),p=Q(),g=h.get("selectedMode"),m=[];c.eachRawSeries(function(t){t.get("legendHoverLink")||m.push(t.id)}),VC(h.getData(),function(a,r){var s=a.get("name");if(this.newlineDisabled||""!==s&&"\n"!==s){var t=c.getSeriesByName(s)[0];if(!p.get(s))if(t){var e=t.getData(),i=e.getVisual("color"),n=e.getVisual("borderColor");"function"==typeof i&&(i=i(t.getDataParams(0))),"function"==typeof n&&(n=n(t.getDataParams(0)));var o=e.getVisual("legendSymbol")||"roundRect",l=e.getVisual("symbol");this._createItem(s,r,a,h,o,l,u,i,n,g).on("click",BC(HC,s,null,d,m)).on("mouseover",BC(ZC,t.name,null,d,m)).on("mouseout",BC(UC,t.name,null,d,m)),p.set(s,!0)}else c.eachRawSeries(function(t){if(!p.get(s)&&t.legendVisualProvider){var e=t.legendVisualProvider;if(!e.containName(s))return;var i=e.indexOfName(s),n=e.getItemVisual(i,"color"),o=e.getItemVisual(i,"borderColor");this._createItem(s,r,a,h,"roundRect",null,u,n,o,g).on("click",BC(HC,null,s,d,m)).on("mouseover",BC(ZC,null,s,d,m)).on("mouseout",BC(UC,null,s,d,m)),p.set(s,!0)}},this)}else f.add(new GC({newline:!0}))},this),t&&this._createSelector(t,h,d,e,i)},_createSelector:function(t,a,r,e,i){var s=this.getSelectorGroup();VC(t,function(t){!function(t){var e=t.type,i=new Ur({style:{x:0,y:0,align:"center",verticalAlign:"middle"},onclick:function(){r.dispatchAction({type:"all"===e?"legendAllSelect":"legendInverseSelect"})}});s.add(i);var n=a.getModel("selectorLabel"),o=a.getModel("emphasis.selectorLabel");el(i.style,i.hoverStyle={},n,o,{defaultText:t.title,isRectText:!1}),$s(i)}(t)})},_createItem:function(t,e,i,n,o,a,r,s,l,u){var h=n.get("itemWidth"),c=n.get("itemHeight"),d=n.get("inactiveColor"),f=n.get("inactiveBorderColor"),p=n.get("symbolKeepAspect"),g=n.getModel("itemStyle"),m=n.isSelected(t),v=new GC,y=i.getModel("textStyle"),x=i.get("icon"),_=i.getModel("tooltip"),w=_.parentModel,b=wg(o=x||o,0,0,h,c,m?s:d,null==p||p);if(v.add(WC(b,o,g,l,f,m)),!x&&a&&(a!==o||"none"===a)){var S=.8*c;"none"===a&&(a="circle");var M=wg(a,(h-S)/2,(c-S)/2,S,S,m?s:d,null==p||p);v.add(WC(M,a,g,l,f,m))}var I="left"===r?h+5:-5,T=r,A=n.get("formatter"),D=t;"string"==typeof A&&A?D=A.replace("{name}",null!=t?t:""):"function"==typeof A&&(D=A(t)),v.add(new Ur({style:nl({},y,{text:D,x:I,y:c/2,textFill:m?y.getTextColor():d,textAlign:T,textVerticalAlign:"middle"})}));var C=new rs({shape:v.getBoundingRect(),invisible:!0,tooltip:_.get("show")?P({content:t,formatter:w.get("formatter",!0)||function(){return t},formatterParams:{componentType:"legend",legendIndex:n.componentIndex,name:t,$vars:["name"]}},_.option):null});return v.add(C),v.eachChild(function(t){t.silent=!0}),C.silent=!u,this.getContentGroup().add(v),$s(v),v.__legendDataIndex=e,v},layoutInner:function(t,e,i,n,o,a){var r=this.getContentGroup(),s=this.getSelectorGroup();wu(t.get("orient"),r,t.get("itemGap"),i.width,i.height);var l=r.getBoundingRect(),u=[-l.x,-l.y];if(o){wu("horizontal",s,t.get("selectorItemGap",!0));var h=s.getBoundingRect(),c=[-h.x,-h.y],d=t.get("selectorButtonGap",!0),f=t.getOrient().index,p=0===f?"width":"height",g=0===f?"height":"width",m=0===f?"y":"x";"end"===a?c[f]+=l[p]+d:u[f]+=h[p]+d,c[1-f]+=l[g]/2-h[g]/2,s.attr("position",c),r.attr("position",u);var v={x:0,y:0};return v[p]=l[p]+d+h[p],v[g]=Math.max(l[g],h[g]),v[m]=Math.min(0,h[m]+c[1-f]),v}return r.attr("position",u),this.group.getBoundingRect()},remove:function(){this.getContentGroup().removeAll(),this._isFirstRender=!0}});function WC(t,e,i,n,o,a){var r;return"line"!==e&&e.indexOf("empty")<0?(r=i.getItemStyle(),t.style.stroke=n,a||(r.stroke=o)):r=i.getItemStyle(["borderWidth","borderColor"]),t.setStyle(r)}function HC(t,e,i,n){UC(t,e,i,n),i.dispatchAction({type:"legendToggleSelect",name:null!=t?t:e}),ZC(t,e,i,n)}function ZC(t,e,i,n){var o=i.getZr().storage.getDisplayList()[0];o&&o.useHoverLayer||i.dispatchAction({type:"highlight",seriesName:t,name:e,excludeSeriesId:n})}function UC(t,e,i,n){var o=i.getZr().storage.getDisplayList()[0];o&&o.useHoverLayer||i.dispatchAction({type:"downplay",seriesName:t,name:e,excludeSeriesId:n})}xf(Ld.PROCESSOR.SERIES_FILTER,function(t){var i=t.findComponents({mainType:"legend"});i&&i.length&&t.filterSeries(function(t){for(var e=0;e<i.length;e++)if(!i[e].isSelected(t.name))return!1;return!0})}),ku.registerSubTypeDefaulter("legend",function(){return"plain"});var XC=RC.extend({type:"legend.scroll",setScrollDataIndex:function(t){this.option.scrollDataIndex=t},defaultOption:{scrollDataIndex:0,pageButtonItemGap:5,pageButtonGap:null,pageButtonPosition:"end",pageFormatter:"{current}/{total}",pageIcons:{horizontal:["M0,0L12,-10L12,10z","M0,0L-12,-10L-12,10z"],vertical:["M0,0L20,0L10,-20z","M0,0L20,0L10,20z"]},pageIconColor:"#2f4554",pageIconInactiveColor:"#aaa",pageIconSize:15,pageTextStyle:{color:"#333"},animationDurationUpdate:800},init:function(t,e,i,n){var o=Iu(t);XC.superCall(this,"init",t,e,i,n),YC(this,t,o)},mergeOption:function(t,e){XC.superCall(this,"mergeOption",t,e),YC(this,this.option,t)}});function YC(t,e,i){var n=[1,1];n[t.getOrient().index]=0,Mu(e,i,{type:"box",ignoreSize:n})}var jC=Ci,qC=["width","height"],KC=["x","y"],$C=FC.extend({type:"legend.scroll",newlineDisabled:!0,init:function(){$C.superCall(this,"init"),this._currentIndex=0,this.group.add(this._containerGroup=new jC),this._containerGroup.add(this.getContentGroup()),this.group.add(this._controllerGroup=new jC),this._showController},resetInner:function(){$C.superCall(this,"resetInner"),this._controllerGroup.removeAll(),this._containerGroup.removeClipPath(),this._containerGroup.__rectSize=null},renderInner:function(t,o,e,a,i,n,r){var s=this;$C.superCall(this,"renderInner",t,o,e,a,i,n,r);var l=this._controllerGroup,u=o.get("pageIconSize",!0);L(u)||(u=[u,u]),c("pagePrev",0);var h=o.getModel("pageTextStyle");function c(t,e){var i=t+"DataIndex",n=yl(o.get("pageIcons",!0)[o.getOrient().name][e],{onclick:A(s._pageGo,s,i,o,a)},{x:-u[0]/2,y:-u[1]/2,width:u[0],height:u[1]});n.name=t,l.add(n)}l.add(new Ur({name:"pageText",style:{textFill:h.getTextColor(),font:h.getFont(),textVerticalAlign:"middle",textAlign:"center"},silent:!0})),c("pageNext",1)},layoutInner:function(t,e,i,n,o,a){var r=this.getSelectorGroup(),s=t.getOrient().index,l=qC[s],u=KC[s],h=qC[1-s],c=KC[1-s];o&&wu("horizontal",r,t.get("selectorItemGap",!0));var d=t.get("selectorButtonGap",!0),f=r.getBoundingRect(),p=[-f.x,-f.y],g=k(i);o&&(g[l]=i[l]-f[l]-d);var m=this._layoutContentAndController(t,n,g,s,l,h,c);if(o){if("end"===a)p[s]+=m[l]+d;else{var v=f[l]+d;p[s]-=v,m[u]-=v}m[l]+=f[l]+d,p[1-s]+=m[c]+m[h]/2-f[h]/2,m[h]=Math.max(m[h],f[h]),m[c]=Math.min(m[c],f[c]+p[1-s]),r.attr("position",p)}return m},_layoutContentAndController:function(t,e,i,n,o,a,r){var s=this.getContentGroup(),l=this._containerGroup,u=this._controllerGroup;wu(t.get("orient"),s,t.get("itemGap"),n?i.width:null,n?null:i.height),wu("horizontal",u,t.get("pageButtonItemGap",!0));var h=s.getBoundingRect(),c=u.getBoundingRect(),d=this._showController=h[o]>i[o],f=[-h.x,-h.y];e||(f[n]=s.position[n]);var p=[0,0],g=[-c.x,-c.y],m=H(t.get("pageButtonGap",!0),t.get("itemGap",!0));d&&("end"===t.get("pageButtonPosition",!0)?g[n]+=i[o]-c[o]:p[n]+=c[o]+m);g[1-n]+=h[a]/2-c[a]/2,s.attr("position",f),l.attr("position",p),u.attr("position",g);var v={x:0,y:0};if(v[o]=d?i[o]:h[o],v[a]=Math.max(h[a],c[a]),v[r]=Math.min(0,c[r]+g[1-n]),l.__rectSize=i[o],d){var y={x:0,y:0};y[o]=Math.max(i[o]-c[o]-m,0),y[a]=v[a],l.setClipPath(new rs({shape:y})),l.__rectSize=y[o]}else u.eachChild(function(t){t.attr({invisible:!0,silent:!0})});var x=this._getPageInfo(t);return null!=x.pageIndex&&cl(s,{position:x.contentPosition},d&&t),this._updatePageInfoView(t,x),v},_pageGo:function(t,e,i){var n=this._getPageInfo(e)[t];null!=n&&i.dispatchAction({type:"legendScroll",scrollDataIndex:n,legendId:e.id})},_updatePageInfoView:function(n,o){var a=this._controllerGroup;E(["pagePrev","pageNext"],function(t){var e=null!=o[t+"DataIndex"],i=a.childOfName(t);i&&(i.setStyle("fill",e?n.get("pageIconColor",!0):n.get("pageIconInactiveColor",!0)),i.cursor=e?"pointer":"default")});var t=a.childOfName("pageText"),e=n.get("pageFormatter"),i=o.pageIndex,r=null!=i?i+1:0,s=o.pageCount;t&&e&&t.setStyle("text",R(e)?e.replace("{current}",r).replace("{total}",s):e({current:r,total:s}))},_getPageInfo:function(t){var e=t.get("scrollDataIndex",!0),i=this.getContentGroup(),n=this._containerGroup.__rectSize,o=t.getOrient().index,a=qC[o],r=KC[o],s=this._findTargetItemIndex(e),l=i.children(),u=l[s],h=l.length,c=h?1:0,d={contentPosition:i.position.slice(),pageCount:c,pageIndex:c-1,pagePrevDataIndex:null,pageNextDataIndex:null};if(!u)return d;var f=y(u);d.contentPosition[o]=-f.s;for(var p=s+1,g=f,m=f,v=null;p<=h;++p)(!(v=y(l[p]))&&m.e>g.s+n||v&&!x(v,g.s))&&(g=m.i>g.i?m:v)&&(null==d.pageNextDataIndex&&(d.pageNextDataIndex=g.i),++d.pageCount),m=v;for(p=s-1,g=f,m=f,v=null;-1<=p;--p)(v=y(l[p]))&&x(m,v.s)||!(g.i<m.i)||(m=g,null==d.pagePrevDataIndex&&(d.pagePrevDataIndex=g.i),++d.pageCount,++d.pageIndex),g=v;return d;function y(t){if(t){var e=t.getBoundingRect(),i=e[r]+t.position[o];return{s:i,e:i+e[a],i:t.__legendDataIndex}}}function x(t,e){return t.e>=e&&t.s<=e+n}},_findTargetItemIndex:function(n){return this._showController?(this.getContentGroup().eachChild(function(t,e){var i=t.__legendDataIndex;null==a&&null!=i&&(a=e),i===n&&(o=e)}),null!=o?o:a):0;var o,a}});_f("legendScroll","legendscroll",function(t,e){var i=t.scrollDataIndex;null!=i&&e.eachComponent({mainType:"legend",subType:"scroll",query:t},function(t){t.setScrollDataIndex(i)})});iD.extend({type:"dataZoom.slider",layoutMode:"box",defaultOption:{show:!0,right:"ph",top:"ph",width:"ph",height:"ph",left:null,bottom:null,backgroundColor:"rgba(47,69,84,0)",dataBackground:{lineStyle:{color:"#2f4554",width:.5,opacity:.3},areaStyle:{color:"rgba(47,69,84,0.3)",opacity:.3}},borderColor:"#ddd",fillerColor:"rgba(167,183,204,0.4)",handleIcon:"M8.2,13.6V3.9H6.3v9.7H3.1v14.9h3.3v9.7h1.8v-9.7h3.3V13.6H8.2z M9.7,24.4H4.8v-1.4h4.9V24.4z M9.7,19.1H4.8v-1.4h4.9V19.1z",handleSize:"100%",handleStyle:{color:"#a7b7cc"},labelPrecision:null,labelFormatter:null,showDetail:!0,showDataShadow:"auto",realtime:!0,zoomLock:!1,textStyle:{color:"#333"}}});var JC=rs,QC=El,tL=Bl,eL=A,iL=E,nL="horizontal",oL="vertical",aL=["line","bar","candlestick","scatter"],rL=aD.extend({type:"dataZoom.slider",init:function(t,e){this._displayables={},this._orient,this._range,this._handleEnds,this._size,this._handleWidth,this._handleHeight,this._location,this._dragging,this._dataShadowInfo,this.api=e},render:function(t,e,i,n){rL.superApply(this,"render",arguments),kc(this,"_dispatchZoomAction",this.dataZoomModel.get("throttle"),"fixRate"),this._orient=t.get("orient"),!1!==this.dataZoomModel.get("show")?(n&&"dataZoom"===n.type&&n.from===this.uid||this._buildView(),this._updateView()):this.group.removeAll()},remove:function(){rL.superApply(this,"remove",arguments),Pc(this,"_dispatchZoomAction")},dispose:function(){rL.superApply(this,"dispose",arguments),Pc(this,"_dispatchZoomAction")},_buildView:function(){var t=this.group;t.removeAll(),this._resetLocation(),this._resetInterval();var e=this._displayables.barGroup=new Ci;this._renderBackground(),this._renderHandle(),this._renderDataShadow(),t.add(e),this._positionGroup()},_resetLocation:function(){var t=this.dataZoomModel,e=this.api,i=this._findCoordRect(),n={width:e.getWidth(),height:e.getHeight()},o=this._orient===nL?{right:n.width-i.x-i.width,top:n.height-30-7,width:i.width,height:30}:{right:7,top:i.y,width:30,height:i.height},a=Iu(t.option);E(["right","top","width","height"],function(t){"ph"===a[t]&&(a[t]=o[t])});var r=bu(a,n,t.padding);this._location={x:r.x,y:r.y},this._size=[r.width,r.height],this._orient===oL&&this._size.reverse()},_positionGroup:function(){var t=this.group,e=this._location,i=this._orient,n=this.dataZoomModel.getFirstTargetAxisModel(),o=n&&n.get("inverse"),a=this._displayables.barGroup,r=(this._dataShadowInfo||{}).otherAxisInverse;a.attr(i!==nL||o?i===nL&&o?{scale:r?[-1,1]:[-1,-1]}:i!==oL||o?{scale:r?[-1,-1]:[-1,1],rotation:Math.PI/2}:{scale:r?[1,-1]:[1,1],rotation:Math.PI/2}:{scale:r?[1,1]:[1,-1]});var s=t.getBoundingRect([a]);t.attr("position",[e.x-s.x,e.y-s.y])},_getViewExtent:function(){return[0,this._size[0]]},_renderBackground:function(){var t=this.dataZoomModel,e=this._size,i=this._displayables.barGroup;i.add(new JC({silent:!0,shape:{x:0,y:0,width:e[0],height:e[1]},style:{fill:t.get("backgroundColor")},z2:-40})),i.add(new JC({shape:{x:0,y:0,width:e[0],height:e[1]},style:{fill:"transparent"},z2:0,onclick:A(this._onClickPanelClick,this)}))},_renderDataShadow:function(){var t=this._dataShadowInfo=this._prepareDataShadowInfo();if(t){var e=this._size,i=t.series,n=i.getRawData(),o=i.getShadowDim?i.getShadowDim():t.otherDim;if(null!=o){var a=n.getDataExtent(o),r=.3*(a[1]-a[0]);a=[a[0]-r,a[1]+r];var s,l=[0,e[1]],u=[0,e[0]],h=[[e[0],0],[0,0]],c=[],d=u[1]/(n.count()-1),f=0,p=Math.round(n.count()/e[0]);n.each([o],function(t,e){if(0<p&&e%p)f+=d;else{var i=null==t||isNaN(t)||""===t,n=i?0:QC(t,a,l,!0);i&&!s&&e?(h.push([h[h.length-1][0],0]),c.push([c[c.length-1][0],0])):!i&&s&&(h.push([f,0]),c.push([f,0])),h.push([f,n]),c.push([f,n]),f+=d,s=i}});var g=this.dataZoomModel;this._displayables.barGroup.add(new Qr({shape:{points:h},style:D({fill:g.get("dataBackgroundColor")},g.getModel("dataBackground.areaStyle").getAreaStyle()),silent:!0,z2:-20})),this._displayables.barGroup.add(new ts({shape:{points:c},style:g.getModel("dataBackground.lineStyle").getLineStyle(),silent:!0,z2:-19}))}}},_prepareDataShadowInfo:function(){var t=this.dataZoomModel,s=t.get("showDataShadow");if(!1!==s){var l,u=this.ecModel;return t.eachTargetAxis(function(a,r){E(t.getAxisProxy(a.name,r).getTargetSeriesModels(),function(t){if(!(l||!0!==s&&_(aL,t.get("type"))<0)){var e,i=u.getComponent(a.axis,r).axis,n=function(t){return{x:"y",y:"x",radius:"angle",angle:"radius"}[t]}(a.name),o=t.coordinateSystem;null!=n&&o.getOtherAxis&&(e=o.getOtherAxis(i).inverse),n=t.getData().mapDimension(n),l={thisAxis:i,series:t,thisDim:a.name,otherDim:n,otherAxisInverse:e}}},this)},this),l}},_renderHandle:function(){var t=this._displayables,a=t.handles=[],r=t.handleLabels=[],s=this._displayables.barGroup,e=this._size,l=this.dataZoomModel;s.add(t.filler=new JC({draggable:!0,cursor:sL(this._orient),drift:eL(this._onDragMove,this,"all"),ondragstart:eL(this._showDataInfo,this,!0),ondragend:eL(this._onDragEnd,this),onmouseover:eL(this._showDataInfo,this,!0),onmouseout:eL(this._showDataInfo,this,!1),style:{fill:l.get("fillerColor"),textPosition:"inside"}})),s.add(new JC({silent:!0,subPixelOptimize:!0,shape:{x:0,y:0,width:e[0],height:e[1]},style:{stroke:l.get("dataBackgroundColor")||l.get("borderColor"),lineWidth:1,fill:"rgba(0,0,0,0)"}})),iL([0,1],function(t){var e=yl(l.get("handleIcon"),{cursor:sL(this._orient),draggable:!0,drift:eL(this._onDragMove,this,t),ondragend:eL(this._onDragEnd,this),onmouseover:eL(this._showDataInfo,this,!0),onmouseout:eL(this._showDataInfo,this,!1)},{x:-1,y:0,width:2,height:2}),i=e.getBoundingRect();this._handleHeight=Rl(l.get("handleSize"),this._size[1]),this._handleWidth=i.width/i.height*this._handleHeight,e.setStyle(l.getModel("handleStyle").getItemStyle());var n=l.get("handleColor");null!=n&&(e.style.fill=n),s.add(a[t]=e);var o=l.textStyleModel;this.group.add(r[t]=new Ur({silent:!0,invisible:!0,style:{x:0,y:0,text:"",textVerticalAlign:"middle",textAlign:"center",textFill:o.getTextColor(),textFont:o.getFont()},z2:10}))},this)},_resetInterval:function(){var t=this._range=this.dataZoomModel.getPercentRange(),e=this._getViewExtent();this._handleEnds=[QC(t[0],[0,100],e,!0),QC(t[1],[0,100],e,!0)]},_updateInterval:function(t,e){var i=this.dataZoomModel,n=this._handleEnds,o=this._getViewExtent(),a=i.findRepresentativeAxisProxy().getMinMaxSpan(),r=[0,100];Jw(e,n,o,i.get("zoomLock")?"all":t,null!=a.minSpan?QC(a.minSpan,r,o,!0):null,null!=a.maxSpan?QC(a.maxSpan,r,o,!0):null);var s=this._range,l=this._range=tL([QC(n[0],o,r,!0),QC(n[1],o,r,!0)]);return!s||s[0]!==l[0]||s[1]!==l[1]},_updateView:function(t){var n=this._displayables,o=this._handleEnds,e=tL(o.slice()),a=this._size;iL([0,1],function(t){var e=n.handles[t],i=this._handleHeight;e.attr({scale:[i/2,i/2],position:[o[t],a[1]/2-i/2]})},this),n.filler.setShape({x:e[0],y:0,width:e[1]-e[0],height:a[1]}),this._updateDataInfo(t)},_updateDataInfo:function(t){var e=this.dataZoomModel,a=this._displayables,r=a.handleLabels,s=this._orient,l=["",""];if(e.get("showDetail")){var i=e.findRepresentativeAxisProxy();if(i){var n=i.getAxisModel().axis,o=this._range,u=t?i.calculateDataWindow({start:o[0],end:o[1]}).valueWindow:i.getDataValueWindow();l=[this._formatLabel(u[0],n),this._formatLabel(u[1],n)]}}var h=tL(this._handleEnds.slice());function c(t){var e=fl(a.handles[t].parent,this.group),i=gl(0===t?"right":"left",e),n=this._handleWidth/2+5,o=pl([h[t]+(0===t?-n:n),this._size[1]/2],e);r[t].setStyle({x:o[0],y:o[1],textVerticalAlign:s===nL?"middle":i,textAlign:s===nL?i:"center",text:l[t]})}c.call(this,0),c.call(this,1)},_formatLabel:function(t,e){var i=this.dataZoomModel,n=i.get("labelFormatter"),o=i.get("labelPrecision");null!=o&&"auto"!==o||(o=e.getPixelPrecision());var a=null==t||isNaN(t)?"":"category"===e.type||"time"===e.type?e.scale.getLabel(Math.round(t)):t.toFixed(Math.min(o,20));return C(n)?n(t,a):R(n)?n.replace("{value}",a):a},_showDataInfo:function(t){t=this._dragging||t;var e=this._displayables.handleLabels;e[0].attr("invisible",!t),e[1].attr("invisible",!t)},_onDragMove:function(t,e,i,n){this._dragging=!0,Xt(n.event);var o=pl([e,i],this._displayables.barGroup.getLocalTransform(),!0),a=this._updateInterval(t,o[0]),r=this.dataZoomModel.get("realtime");this._updateView(!r),a&&r&&this._dispatchZoomAction()},_onDragEnd:function(){this._dragging=!1,this._showDataInfo(!1),this.dataZoomModel.get("realtime")||this._dispatchZoomAction()},_onClickPanelClick:function(t){var e=this._size,i=this._displayables.barGroup.transformCoordToLocal(t.offsetX,t.offsetY);if(!(i[0]<0||i[0]>e[0]||i[1]<0||i[1]>e[1])){var n=this._handleEnds,o=(n[0]+n[1])/2,a=this._updateInterval("all",i[0]-o);this._updateView(),a&&this._dispatchZoomAction()}},_dispatchZoomAction:function(){var t=this._range;this.api.dispatchAction({type:"dataZoom",from:this.uid,dataZoomId:this.dataZoomModel.id,start:t[0],end:t[1]})},_findCoordRect:function(){var i;if(iL(this.getTargetCoordInfo(),function(t){if(!i&&t.length){var e=t[0].model.coordinateSystem;i=e.getRect&&e.getRect()}}),!i){var t=this.api.getWidth(),e=this.api.getHeight();i={x:.2*t,y:.2*e,width:.6*t,height:.6*e}}return i}});function sL(t){return"vertical"===t?"ns-resize":"ew-resize"}iD.extend({type:"dataZoom.inside",defaultOption:{disabled:!1,zoomLock:!1,zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!1,preventDefaultMouseMove:!0}});var lL="\0_ec_dataZoom_roams";function uL(t,n){var e=cL(t),o=n.dataZoomId,a=n.coordId;E(e,function(t,e){var i=t.dataZoomInfos;i[o]&&_(n.allCoordIds,a)<0&&(delete i[o],t.count--)}),dL(e);var i=e[a];i||((i=e[a]={coordId:a,dataZoomInfos:{},count:0}).controller=function(t,r){var e=new Vy(t.getZr());return E(["pan","zoom","scrollMove"],function(a){e.on(a,function(n){var o=[];E(r.dataZoomInfos,function(t){if(n.isAvailableBehavior(t.dataZoomModel.option)){var e=(t.getRange||{})[a],i=e&&e(r.controller,n);!t.dataZoomModel.get("disabled",!0)&&i&&o.push({dataZoomId:t.dataZoomId,start:i[0],end:i[1]})}}),o.length&&r.dispatchAction(o)})}),e}(t,i),i.dispatchAction=T(fL,t)),i.dataZoomInfos[o]||i.count++,i.dataZoomInfos[o]=n;var r=function(t){var n,o={type_true:2,type_move:1,type_false:0,type_undefined:-1},a=!0;return E(t,function(t){var e=t.dataZoomModel,i=!e.get("disabled",!0)&&(!e.get("zoomLock",!0)||"move");o["type_"+n]<o["type_"+i]&&(n=i),a&=e.get("preventDefaultMouseMove",!0)}),{controlType:n,opt:{zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!0,preventDefaultMouseMove:!!a}}}(i.dataZoomInfos);i.controller.enable(r.controlType,r.opt),i.controller.setPointerChecker(n.containsPoint),kc(i,"dispatchAction",n.dataZoomModel.get("throttle",!0),"fixRate")}function hL(t){return t.type+"\0_"+t.id}function cL(t){var e=t.getZr();return e[lL]||(e[lL]={})}function dL(i){E(i,function(t,e){t.count||(t.controller.dispose(),delete i[e])})}function fL(t,e){t.dispatchAction({type:"dataZoom",batch:e})}var pL=A,gL=aD.extend({type:"dataZoom.inside",init:function(t,e){this._range},render:function(r,t,s,e){gL.superApply(this,"render",arguments),this._range=r.getPercentRange(),E(this.getTargetCoordInfo(),function(t,o){var a=O(t,function(t){return hL(t.model)});E(t,function(e){var n=e.model,i={};E(["pan","zoom","scrollMove"],function(t){i[t]=pL(mL[t],this,e,o)},this),uL(s,{coordId:hL(n),allCoordIds:a,containsPoint:function(t,e,i){return n.coordinateSystem.containPoint([e,i])},dataZoomId:r.id,dataZoomModel:r,getRange:i})},this)},this)},dispose:function(){!function(t,i){var e=cL(t);E(e,function(t){t.controller.dispose();var e=t.dataZoomInfos;e[i]&&(delete e[i],t.count--)}),dL(e)}(this.api,this.dataZoomModel.id),gL.superApply(this,"dispose",arguments),this._range=null}}),mL={zoom:function(t,e,i,n){var o=this._range,a=o.slice(),r=t.axisModels[0];if(r){var s=xL[e](null,[n.originX,n.originY],r,i,t),l=(0<s.signal?s.pixelStart+s.pixelLength-s.pixel:s.pixel-s.pixelStart)/s.pixelLength*(a[1]-a[0])+a[0],u=Math.max(1/n.scale,0);a[0]=(a[0]-l)*u+l,a[1]=(a[1]-l)*u+l;var h=this.dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();return Jw(0,a,[0,100],0,h.minSpan,h.maxSpan),this._range=a,o[0]!==a[0]||o[1]!==a[1]?a:void 0}},pan:vL(function(t,e,i,n,o,a){var r=xL[n]([a.oldX,a.oldY],[a.newX,a.newY],e,o,i);return r.signal*(t[1]-t[0])*r.pixel/r.pixelLength}),scrollMove:vL(function(t,e,i,n,o,a){return xL[n]([0,0],[a.scrollDelta,a.scrollDelta],e,o,i).signal*(t[1]-t[0])*a.scrollDelta})};function vL(l){return function(t,e,i,n){var o=this._range,a=o.slice(),r=t.axisModels[0];if(r){var s=l(a,r,t,e,i,n);return Jw(s,a,[0,100],"all"),this._range=a,o[0]!==a[0]||o[1]!==a[1]?a:void 0}}}function yL(t){var e=t&&t.visualMap;L(e)||(e=e?[e]:[]),_L(e,function(t){if(t){wL(t,"splitList")&&!wL(t,"pieces")&&(t.pieces=t.splitList,delete t.splitList);var e=t.pieces;e&&L(e)&&_L(e,function(t){z(t)&&(wL(t,"start")&&!wL(t,"min")&&(t.min=t.start),wL(t,"end")&&!wL(t,"max")&&(t.max=t.end))})}})}var xL={grid:function(t,e,i,n,o){var a=i.axis,r={},s=o.model.coordinateSystem.getRect();return t=t||[0,0],"x"===a.dim?(r.pixel=e[0]-t[0],r.pixelLength=s.width,r.pixelStart=s.x,r.signal=a.inverse?1:-1):(r.pixel=e[1]-t[1],r.pixelLength=s.height,r.pixelStart=s.y,r.signal=a.inverse?-1:1),r},polar:function(t,e,i,n,o){var a=i.axis,r={},s=o.model.coordinateSystem,l=s.getRadiusAxis().getExtent(),u=s.getAngleAxis().getExtent();return t=t?s.pointToCoord(t):[0,0],e=s.pointToCoord(e),"radiusAxis"===i.mainType?(r.pixel=e[0]-t[0],r.pixelLength=l[1]-l[0],r.pixelStart=l[0],r.signal=a.inverse?1:-1):(r.pixel=e[1]-t[1],r.pixelLength=u[1]-u[0],r.pixelStart=u[0],r.signal=a.inverse?-1:1),r},singleAxis:function(t,e,i,n,o){var a=i.axis,r=o.model.coordinateSystem.getRect(),s={};return t=t||[0,0],"horizontal"===a.orient?(s.pixel=e[0]-t[0],s.pixelLength=r.width,s.pixelStart=r.x,s.signal=a.inverse?1:-1):(s.pixel=e[1]-t[1],s.pixelLength=r.height,s.pixelStart=r.y,s.signal=a.inverse?-1:1),s}},_L=E;function wL(t,e){return t&&t.hasOwnProperty&&t.hasOwnProperty(e)}ku.registerSubTypeDefaulter("visualMap",function(t){return t.categories||(t.pieces?0<t.pieces.length:0<t.splitNumber)&&!t.calculable?"piecewise":"continuous"});var bL=Ld.VISUAL.COMPONENT;function SL(t,e,i,n){for(var o=e.targetVisuals[n],a=g_.prepareVisualTypes(o),r={color:t.getData().getVisual("color")},s=0,l=a.length;s<l;s++){var u=a[s],h=o["opacity"===u?"__alphaForOpacity":u];h&&h.applyVisual(i,c,d)}return r.color;function c(t){return r[t]}function d(t,e){r[t]=e}}Sf(bL,{createOnAllSeries:!0,reset:function(i,t){var n=[];return t.eachComponent("visualMap",function(t){var e=i.pipelineContext;!t.isTargetSeries(i)||e&&e.large||n.push(function(t,f,p,g){var m={};return E(t,function(t){var e=g_.prepareVisualTypes(f[t]);m[t]=e}),{progress:function(t,i){function e(t){return i.getItemVisual(o,t)}function n(t,e){i.setItemVisual(o,t,e)}var o;for(null!=g&&(g=i.getDimension(g));null!=(o=t.next());){var a=i.getRawDataItem(o);if(!a||!1!==a.visualMap)for(var r=null!=g?i.get(g,o,!0):o,s=p(r),l=f[s],u=m[s],h=0,c=u.length;h<c;h++){var d=u[h];l[d]&&l[d].applyVisual(r,e,n)}}}}}(t.stateList,t.targetVisuals,A(t.getValueState,t),t.getDataDimension(i.getData())))}),n}}),Sf(bL,{createOnAllSeries:!0,reset:function(o,t){var a=o.getData(),r=[];t.eachComponent("visualMap",function(t){if(t.isTargetSeries(o)){var e=t.getVisualMeta(A(SL,null,o,t))||{stops:[],outerColors:[]},i=t.getDataDimension(a),n=a.getDimensionInfo(i);null!=n&&(e.dimension=n.index,r.push(e))}}),o.getData().setVisual("visualMeta",r)}});var ML=function(t,e,i){var n=k((IL[t]||{})[e]);return i&&L(n)?n[n.length-1]:n},IL={color:{active:["#006edd","#e0ffff"],inactive:["rgba(0,0,0,0)"]},colorHue:{active:[0,360],inactive:[0,0]},colorSaturation:{active:[.3,1],inactive:[0,0]},colorLightness:{active:[.9,.5],inactive:[0,0]},colorAlpha:{active:[.3,1],inactive:[0,0]},opacity:{active:[.3,1],inactive:[0,0]},symbol:{active:["circle","roundRect","diamond"],inactive:["none"]},symbolSize:{active:[10,50],inactive:[0,0]}},TL=g_.mapVisual,AL=g_.eachVisual,DL=L,CL=E,LL=Bl,kL=El,PL=Tf({type:"visualMap",dependencies:["series"],stateList:["inRange","outOfRange"],replacableOptionKeys:["inRange","outOfRange","target","controller","color"],dataBound:[-1/0,1/0],layoutMode:{type:"box",ignoreSize:!0},defaultOption:{show:!0,zlevel:0,z:4,seriesIndex:"all",min:0,max:200,dimension:null,inRange:null,outOfRange:null,left:0,right:null,top:null,bottom:0,itemWidth:null,itemHeight:null,inverse:!1,orient:"vertical",backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",contentColor:"#5793f3",inactiveColor:"#aaa",borderWidth:0,padding:5,textGap:10,precision:0,color:null,formatter:null,text:null,textStyle:{color:"#333"}},init:function(t,e,i){this._dataExtent,this.targetVisuals={},this.controllerVisuals={},this.textStyleModel,this.itemSize,this.mergeDefaultAndTheme(t,i)},optionUpdated:function(t,e){var i=this.option;v.canvasSupported||(i.realtime=!1),e||PD(i,t,this.replacableOptionKeys),this.textStyleModel=this.getModel("textStyle"),this.resetItemSize(),this.completeVisualOption()},resetVisual:function(t){var e=this.stateList;t=A(t,this),this.controllerVisuals=kD(this.option.controller,e,t),this.targetVisuals=kD(this.option.target,e,t)},getTargetSeriesIndices:function(){var t=this.option.seriesIndex,i=[];return null==t||"all"===t?this.ecModel.eachSeries(function(t,e){i.push(e)}):i=Vo(t),i},eachTargetSeries:function(e,i){E(this.getTargetSeriesIndices(),function(t){e.call(i,this.ecModel.getSeriesByIndex(t))},this)},isTargetSeries:function(e){var i=!1;return this.eachTargetSeries(function(t){t===e&&(i=!0)}),i},formatValueText:function(t,e,i){var n,o,a=this.option,r=a.precision,s=this.dataBound,l=a.formatter;return i=i||["<",">"],L(t)&&(t=t.slice(),n=!0),o=e?t:n?[u(t[0]),u(t[1])]:u(t),R(l)?l.replace("{value}",n?o[0]:o).replace("{value2}",n?o[1]:o):C(l)?n?l(t[0],t[1]):l(t):n?t[0]===s[0]?i[0]+" "+o[1]:t[1]===s[1]?i[1]+" "+o[0]:o[0]+" - "+o[1]:o;function u(t){return t===s[0]?"min":t===s[1]?"max":(+t).toFixed(Math.min(r,20))}},resetExtent:function(){var t=this.option,e=LL([t.min,t.max]);this._dataExtent=e},getDataDimension:function(t){var e=this.option.dimension,i=t.dimensions;if(null!=e||i.length){if(null!=e)return t.getDimension(e);for(var n=t.dimensions,o=n.length-1;0<=o;o--){var a=n[o];if(!t.getDimensionInfo(a).isCalculationCoord)return a}}},getExtent:function(){return this._dataExtent.slice()},completeVisualOption:function(){var t=this.ecModel,e=this.option,i={inRange:e.inRange,outOfRange:e.outOfRange},n=e.target||(e.target={}),o=e.controller||(e.controller={});m(n,i),m(o,i);var u=this.isCategory();function a(n){DL(e.color)&&!n.inRange&&(n.inRange={color:e.color.slice().reverse()}),n.inRange=n.inRange||{color:t.get("gradientColor")},CL(this.stateList,function(t){var e=n[t];if(R(e)){var i=ML(e,"active",u);i?(n[t]={},n[t][e]=i):delete n[t]}},this)}a.call(this,n),a.call(this,o),function(t,e,i){var n=t[e],o=t[i];n&&!o&&(o=t[i]={},CL(n,function(t,e){if(g_.isValidType(e)){var i=ML(e,"inactive",u);null!=i&&(o[e]=i,"color"!==e||o.hasOwnProperty("opacity")||o.hasOwnProperty("colorAlpha")||(o.opacity=[0,0]))}}))}.call(this,n,"inRange","outOfRange"),function(a){var r=(a.inRange||{}).symbol||(a.outOfRange||{}).symbol,s=(a.inRange||{}).symbolSize||(a.outOfRange||{}).symbolSize,l=this.get("inactiveColor");CL(this.stateList,function(t){var e=this.itemSize,i=a[t];null==(i=i||(a[t]={color:u?l:[l]})).symbol&&(i.symbol=r&&k(r)||(u?"roundRect":["roundRect"])),null==i.symbolSize&&(i.symbolSize=s&&k(s)||(u?e[0]:[e[0],e[0]])),i.symbol=TL(i.symbol,function(t){return"none"===t||"square"===t?"roundRect":t});var n=i.symbolSize;if(null!=n){var o=-1/0;AL(n,function(t){o<t&&(o=t)}),i.symbolSize=TL(n,function(t){return kL(t,[0,o],[0,e[0]],!0)})}},this)}.call(this,o)},resetItemSize:function(){this.itemSize=[parseFloat(this.get("itemWidth")),parseFloat(this.get("itemHeight"))]},isCategory:function(){return!!this.option.categories},setSelected:et,getValueState:et,getVisualMeta:et}),NL=[20,140],OL=PL.extend({type:"visualMap.continuous",defaultOption:{align:"auto",calculable:!1,range:null,realtime:!0,itemHeight:null,itemWidth:null,hoverLink:!0,hoverLinkDataSize:null,hoverLinkOnHandle:null},optionUpdated:function(t,e){OL.superApply(this,"optionUpdated",arguments),this.resetExtent(),this.resetVisual(function(t){t.mappingMethod="linear",t.dataExtent=this.getExtent()}),this._resetRange()},resetItemSize:function(){OL.superApply(this,"resetItemSize",arguments);var t=this.itemSize;"horizontal"===this._orient&&t.reverse(),null!=t[0]&&!isNaN(t[0])||(t[0]=NL[0]),null!=t[1]&&!isNaN(t[1])||(t[1]=NL[1])},_resetRange:function(){var t=this.getExtent(),e=this.option.range;!e||e.auto?(t.auto=1,this.option.range=t):L(e)&&(e[0]>e[1]&&e.reverse(),e[0]=Math.max(e[0],t[0]),e[1]=Math.min(e[1],t[1]))},completeVisualOption:function(){PL.prototype.completeVisualOption.apply(this,arguments),E(this.stateList,function(t){var e=this.option.controller[t].symbolSize;e&&e[0]!==e[1]&&(e[0]=0)},this)},setSelected:function(t){this.option.range=t.slice(),this._resetRange()},getSelected:function(){var t=this.getExtent(),e=Bl((this.get("range")||[]).slice());return e[0]>t[1]&&(e[0]=t[1]),e[1]>t[1]&&(e[1]=t[1]),e[0]<t[0]&&(e[0]=t[0]),e[1]<t[0]&&(e[1]=t[0]),e},getValueState:function(t){var e=this.option.range,i=this.getExtent();return(e[0]<=i[0]||e[0]<=t)&&(e[1]>=i[1]||t<=e[1])?"inRange":"outOfRange"},findTargetDataIndices:function(n){var o=[];return this.eachTargetSeries(function(t){var i=[],e=t.getData();e.each(this.getDataDimension(e),function(t,e){n[0]<=t&&t<=n[1]&&i.push(e)},this),o.push({seriesId:t.id,dataIndex:i})},this),o},getVisualMeta:function(i){var t=EL(this,"outOfRange",this.getExtent()),e=EL(this,"inRange",this.option.range.slice()),n=[];function o(t,e){n.push({value:t,color:i(t,e)})}for(var a=0,r=0,s=e.length,l=t.length;r<l&&(!e.length||t[r]<=e[0]);r++)t[r]<e[a]&&o(t[r],"outOfRange");for(var u=1;a<s;a++,u=0)u&&n.length&&o(e[a],"outOfRange"),o(e[a],"inRange");for(u=1;r<l;r++)(!e.length||e[e.length-1]<t[r])&&(u&&(n.length&&o(n[n.length-1].value,"outOfRange"),u=0),o(t[r],"outOfRange"));var h=n.length;return{stops:n,outerColors:[h?n[0].color:"transparent",h?n[h-1].color:"transparent"]}}});function EL(t,e,i){if(i[0]===i[1])return i.slice();for(var n=(i[1]-i[0])/200,o=i[0],a=[],r=0;r<=200&&o<i[1];r++)a.push(o),o+=n;return a.push(i[1]),a}var RL=Af({type:"visualMap",autoPositionValues:{left:1,right:1,top:1,bottom:1},init:function(t,e){this.ecModel=t,this.api=e,this.visualMapModel},render:function(t,e,i,n){!1!==(this.visualMapModel=t).get("show")?this.doRender.apply(this,arguments):this.group.removeAll()},renderBackground:function(t){var e=this.visualMapModel,i=iu(e.get("padding")||0),n=t.getBoundingRect();t.add(new rs({z2:-1,silent:!0,shape:{x:n.x-i[3],y:n.y-i[0],width:n.width+i[3]+i[1],height:n.height+i[0]+i[2]},style:{fill:e.get("backgroundColor"),stroke:e.get("borderColor"),lineWidth:e.get("borderWidth")}}))},getControllerVisual:function(i,n,o){var t=(o=o||{}).forceState,e=this.visualMapModel,a={};if("symbol"===n&&(a.symbol=e.get("itemSymbol")),"color"===n){var r=e.get("contentColor");a.color=r}function s(t){return a[t]}function l(t,e){a[t]=e}var u=e.controllerVisuals[t||e.getValueState(i)];return E(g_.prepareVisualTypes(u),function(t){var e=u[t];o.convertOpacityToAlpha&&"opacity"===t&&(t="colorAlpha",e=u.__alphaForOpacity),g_.dependsOn(t,n)&&e&&e.applyVisual(i,s,l)}),a[n]},positionGroup:function(t){var e=this.visualMapModel,i=this.api;Su(t,e.getBoxLayoutParams(),{width:i.getWidth(),height:i.getHeight()})},doRender:et});function zL(t,e,i){var n=t.option,o=n.align;if(null!=o&&"auto"!==o)return o;for(var a={width:e.getWidth(),height:e.getHeight()},r="horizontal"===n.orient?1:0,s=[["left","right","width"],["top","bottom","height"]],l=s[r],u=[0,null,10],h={},c=0;c<3;c++)h[s[1-r][c]]=u[c],h[l[c]]=2===c?i[0]:n[l[c]];var d=[["x","width",3],["y","height",0]][r],f=bu(h,a,n.padding);return l[(f.margin[d[2]]||0)+f[d[0]]+.5*f[d[1]]<.5*a[d[1]]?0:1]}function BL(t,e){return E(t||[],function(t){null!=t.dataIndex&&(t.dataIndexInside=t.dataIndex,t.dataIndex=null),t.highlightKey="visualMap"+(e?e.componentIndex:"")}),t}var VL=El,GL=E,FL=Math.min,WL=Math.max,HL=RL.extend({type:"visualMap.continuous",init:function(){HL.superApply(this,"init",arguments),this._shapes={},this._dataInterval=[],this._handleEnds=[],this._orient,this._useHandle,this._hoverLinkDataIndices=[],this._dragging,this._hovering},doRender:function(t,e,i,n){n&&"selectDataRange"===n.type&&n.from===this.uid||this._buildView()},_buildView:function(){this.group.removeAll();var t=this.visualMapModel,e=this.group;this._orient=t.get("orient"),this._useHandle=t.get("calculable"),this._resetInterval(),this._renderBar(e);var i=t.get("text");this._renderEndsText(e,i,0),this._renderEndsText(e,i,1),this._updateView(!0),this.renderBackground(e),this._updateView(),this._enableHoverLinkToSeries(),this._enableHoverLinkFromSeries(),this.positionGroup(e)},_renderEndsText:function(t,e,i){if(e){var n=e[1-i];n=null!=n?n+"":"";var o=this.visualMapModel,a=o.get("textGap"),r=o.itemSize,s=this._shapes.barGroup,l=this._applyTransform([r[0]/2,0===i?-a:r[1]+a],s),u=this._applyTransform(0===i?"bottom":"top",s),h=this._orient,c=this.visualMapModel.textStyleModel;this.group.add(new Ur({style:{x:l[0],y:l[1],textVerticalAlign:"horizontal"===h?"middle":u,textAlign:"horizontal"===h?u:"center",text:n,textFont:c.getFont(),textFill:c.getTextColor()}}))}},_renderBar:function(t){var e=this.visualMapModel,i=this._shapes,n=e.itemSize,o=this._orient,a=this._useHandle,r=zL(e,this.api,n),s=i.barGroup=this._createBarGroup(r);s.add(i.outOfRange=ZL()),s.add(i.inRange=ZL(null,a?XL(this._orient):null,A(this._dragHandle,this,"all",!1),A(this._dragHandle,this,"all",!0)));var l=e.textStyleModel.getTextRect("国"),u=WL(l.width,l.height);a&&(i.handleThumbs=[],i.handleLabels=[],i.handleLabelPoints=[],this._createHandle(s,0,n,u,o,r),this._createHandle(s,1,n,u,o,r)),this._createIndicator(s,n,u,o),t.add(s)},_createHandle:function(t,e,i,n,o){var a=A(this._dragHandle,this,e,!1),r=A(this._dragHandle,this,e,!0),s=ZL(function(t,e){return 0===t?[[0,0],[e,0],[e,-e]]:[[0,0],[e,0],[e,e]]}(e,n),XL(this._orient),a,r);s.position[0]=i[0],t.add(s);var l=this.visualMapModel.textStyleModel,u=new Ur({draggable:!0,drift:a,onmousemove:function(t){Xt(t.event)},ondragend:r,style:{x:0,y:0,text:"",textFont:l.getFont(),textFill:l.getTextColor()}});this.group.add(u);var h=["horizontal"===o?n/2:1.5*n,"horizontal"===o?0===e?-1.5*n:1.5*n:0===e?-n/2:n/2],c=this._shapes;c.handleThumbs[e]=s,c.handleLabelPoints[e]=h,c.handleLabels[e]=u},_createIndicator:function(t,e,i,n){var o=ZL([[0,0]],"move");o.position[0]=e[0],o.attr({invisible:!0,silent:!0}),t.add(o);var a=this.visualMapModel.textStyleModel,r=new Ur({silent:!0,invisible:!0,style:{x:0,y:0,text:"",textFont:a.getFont(),textFill:a.getTextColor()}});this.group.add(r);var s=["horizontal"===n?i/2:9,0],l=this._shapes;l.indicator=o,l.indicatorLabel=r,l.indicatorLabelPoint=s},_dragHandle:function(t,e,i,n){if(this._useHandle){if(this._dragging=!e,!e){var o=this._applyTransform([i,n],this._shapes.barGroup,!0);this._updateInterval(t,o[1]),this._updateView()}e===!this.visualMapModel.get("realtime")&&this.api.dispatchAction({type:"selectDataRange",from:this.uid,visualMapId:this.visualMapModel.id,selected:this._dataInterval.slice()}),e?this._hovering||this._clearHoverLinkToSeries():UL(this.visualMapModel)&&this._doHoverLinkToSeries(this._handleEnds[t],!1)}},_resetInterval:function(){var t=this.visualMapModel,e=this._dataInterval=t.getSelected(),i=t.getExtent(),n=[0,t.itemSize[1]];this._handleEnds=[VL(e[0],i,n,!0),VL(e[1],i,n,!0)]},_updateInterval:function(t,e){e=e||0;var i=this.visualMapModel,n=this._handleEnds,o=[0,i.itemSize[1]];Jw(e,n,o,t,0);var a=i.getExtent();this._dataInterval=[VL(n[0],o,a,!0),VL(n[1],o,a,!0)]},_updateView:function(t){var e=this.visualMapModel,i=e.getExtent(),n=this._shapes,o=[0,e.itemSize[1]],a=t?o:this._handleEnds,r=this._createBarVisual(this._dataInterval,i,a,"inRange"),s=this._createBarVisual(i,i,o,"outOfRange");n.inRange.setStyle({fill:r.barColor,opacity:r.opacity}).setShape("points",r.barPoints),n.outOfRange.setStyle({fill:s.barColor,opacity:s.opacity}).setShape("points",s.barPoints),this._updateHandle(a,r)},_createBarVisual:function(t,e,i,n){var o={forceState:n,convertOpacityToAlpha:!0},a=this._makeColorGradient(t,o),r=[this.getControllerVisual(t[0],"symbolSize",o),this.getControllerVisual(t[1],"symbolSize",o)],s=this._createBarPoints(i,r);return{barColor:new gs(0,0,0,1,a),barPoints:s,handlesColor:[a[0].color,a[a.length-1].color]}},_makeColorGradient:function(t,e){var i=[],n=(t[1]-t[0])/100;i.push({color:this.getControllerVisual(t[0],"color",e),offset:0});for(var o=1;o<100;o++){var a=t[0]+n*o;if(a>t[1])break;i.push({color:this.getControllerVisual(a,"color",e),offset:o/100})}return i.push({color:this.getControllerVisual(t[1],"color",e),offset:1}),i},_createBarPoints:function(t,e){var i=this.visualMapModel.itemSize;return[[i[0]-e[0],t[0]],[i[0],t[0]],[i[0],t[1]],[i[0]-e[1],t[1]]]},_createBarGroup:function(t){var e=this._orient,i=this.visualMapModel.get("inverse");return new Ci("horizontal"!==e||i?"horizontal"===e&&i?{scale:"bottom"===t?[-1,1]:[1,1],rotation:-Math.PI/2}:"vertical"!==e||i?{scale:"left"===t?[1,1]:[-1,1]}:{scale:"left"===t?[1,-1]:[-1,-1]}:{scale:"bottom"===t?[1,1]:[-1,1],rotation:Math.PI/2})},_updateHandle:function(n,o){if(this._useHandle){var a=this._shapes,r=this.visualMapModel,s=a.handleThumbs,l=a.handleLabels;GL([0,1],function(t){var e=s[t];e.setStyle("fill",o.handlesColor[t]),e.position[1]=n[t];var i=pl(a.handleLabelPoints[t],fl(e,this.group));l[t].setStyle({x:i[0],y:i[1],text:r.formatValueText(this._dataInterval[t]),textVerticalAlign:"middle",textAlign:this._applyTransform("horizontal"===this._orient?0===t?"bottom":"top":"left",a.barGroup)})},this)}},_showIndicator:function(t,e,i,n){var o=this.visualMapModel,a=o.getExtent(),r=o.itemSize,s=[0,r[1]],l=VL(t,a,s,!0),u=this._shapes,h=u.indicator;if(h){h.position[1]=l,h.attr("invisible",!1),h.setShape("points",function(t,e,i,n){return t?[[0,-FL(e,WL(i,0))],[6,0],[0,FL(e,WL(n-i,0))]]:[[0,0],[5,-5],[5,5]]}(!!i,n,l,r[1]));var c=this.getControllerVisual(t,"color",{convertOpacityToAlpha:!0});h.setStyle("fill",c);var d=pl(u.indicatorLabelPoint,fl(h,this.group)),f=u.indicatorLabel;f.attr("invisible",!1);var p=this._applyTransform("left",u.barGroup),g=this._orient;f.setStyle({text:(i||"")+o.formatValueText(e),textVerticalAlign:"horizontal"===g?p:"middle",textAlign:"horizontal"===g?"center":p,x:d[0],y:d[1]})}},_enableHoverLinkToSeries:function(){var n=this;this._shapes.barGroup.on("mousemove",function(t){if(n._hovering=!0,!n._dragging){var e=n.visualMapModel.itemSize,i=n._applyTransform([t.offsetX,t.offsetY],n._shapes.barGroup,!0,!0);i[1]=FL(WL(0,i[1]),e[1]),n._doHoverLinkToSeries(i[1],0<=i[0]&&i[0]<=e[0])}}).on("mouseout",function(){n._hovering=!1,n._dragging||n._clearHoverLinkToSeries()})},_enableHoverLinkFromSeries:function(){var t=this.api.getZr();this.visualMapModel.option.hoverLink?(t.on("mouseover",this._hoverLinkFromSeriesMouseOver,this),t.on("mouseout",this._hideIndicator,this)):this._clearHoverLinkFromSeries()},_doHoverLinkToSeries:function(t,e){var i=this.visualMapModel,n=i.itemSize;if(i.option.hoverLink){var o=[0,n[1]],a=i.getExtent();t=FL(WL(o[0],t),o[1]);var r=function(t,e,i){var n=6,o=t.get("hoverLinkDataSize");o&&(n=VL(o,e,i,!0)/2);return n}(i,a,o),s=[t-r,t+r],l=VL(t,o,a,!0),u=[VL(s[0],o,a,!0),VL(s[1],o,a,!0)];s[0]<o[0]&&(u[0]=-1/0),o[1]<s[1]&&(u[1]=1/0),e&&(u[0]===-1/0?this._showIndicator(l,u[1],"< ",r):u[1]===1/0?this._showIndicator(l,u[0],"> ",r):this._showIndicator(l,l,"≈ ",r));var h=this._hoverLinkDataIndices,c=[];(e||UL(i))&&(c=this._hoverLinkDataIndices=i.findTargetDataIndices(u));var d=function(t,e){var i={},n={};return o(t||[],i),o(e||[],n,i),[a(i),a(n)];function o(t,e,i){for(var n=0,o=t.length;n<o;n++)for(var a=t[n].seriesId,r=Vo(t[n].dataIndex),s=i&&i[a],l=0,u=r.length;l<u;l++){var h=r[l];s&&s[h]?s[h]=null:(e[a]||(e[a]={}))[h]=1}}function a(t,e){var i=[];for(var n in t)if(t.hasOwnProperty(n)&&null!=t[n])if(e)i.push(+n);else{var o=a(t[n],!0);o.length&&i.push({seriesId:n,dataIndex:o})}return i}}(h,c);this._dispatchHighDown("downplay",BL(d[0],i)),this._dispatchHighDown("highlight",BL(d[1],i))}},_hoverLinkFromSeriesMouseOver:function(t){var e=t.target,i=this.visualMapModel;if(e&&null!=e.dataIndex){var n=this.ecModel.getSeriesByIndex(e.seriesIndex);if(i.isTargetSeries(n)){var o=n.getData(e.dataType),a=o.get(i.getDataDimension(o),e.dataIndex,!0);isNaN(a)||this._showIndicator(a,a)}}},_hideIndicator:function(){var t=this._shapes;t.indicator&&t.indicator.attr("invisible",!0),t.indicatorLabel&&t.indicatorLabel.attr("invisible",!0)},_clearHoverLinkToSeries:function(){this._hideIndicator();var t=this._hoverLinkDataIndices;this._dispatchHighDown("downplay",BL(t,this.visualMapModel)),t.length=0},_clearHoverLinkFromSeries:function(){this._hideIndicator();var t=this.api.getZr();t.off("mouseover",this._hoverLinkFromSeriesMouseOver),t.off("mouseout",this._hideIndicator)},_applyTransform:function(t,e,i,n){var o=fl(e,n?null:this.group);return bl[L(t)?"applyTransform":"transformDirection"](t,o,i)},_dispatchHighDown:function(t,e){e&&e.length&&this.api.dispatchAction({type:t,batch:e})},dispose:function(){this._clearHoverLinkFromSeries(),this._clearHoverLinkToSeries()},remove:function(){this._clearHoverLinkFromSeries(),this._clearHoverLinkToSeries()}});function ZL(t,e,i,n){return new Qr({shape:{points:t},draggable:!!i,cursor:e,drift:i,onmousemove:function(t){Xt(t.event)},ondragend:n})}function UL(t){var e=t.get("hoverLinkOnHandle");return!!(null==e?t.get("realtime"):e)}function XL(t){return"vertical"===t?"ns-resize":"ew-resize"}_f({type:"selectDataRange",event:"dataRangeSelected",update:"update"},function(e,t){t.eachComponent({mainType:"visualMap",query:e},function(t){t.setSelected(e.selected)})}),yf(yL);var YL=PL.extend({type:"visualMap.piecewise",defaultOption:{selected:null,minOpen:!1,maxOpen:!1,align:"auto",itemWidth:20,itemHeight:14,itemSymbol:"roundRect",pieceList:null,categories:null,splitNumber:5,selectedMode:"multiple",itemGap:10,hoverLink:!0,showLabel:null},optionUpdated:function(t,e){YL.superApply(this,"optionUpdated",arguments),this._pieceList=[],this.resetExtent();var i=this._mode=this._determineMode();jL[this._mode].call(this),this._resetSelected(t,e);var n=this.option.categories;this.resetVisual(function(t,e){"categories"===i?(t.mappingMethod="category",t.categories=k(n)):(t.dataExtent=this.getExtent(),t.mappingMethod="piecewise",t.pieceList=O(this._pieceList,function(t){t=k(t);return"inRange"!==e&&(t.visual=null),t}))})},completeVisualOption:function(){var n=this.option,i={},t=g_.listVisualTypes(),o=this.isCategory();function a(t,e,i){return t&&t[e]&&(z(t[e])?t[e].hasOwnProperty(i):t[e]===i)}E(n.pieces,function(e){E(t,function(t){e.hasOwnProperty(t)&&(i[t]=1)})}),E(i,function(t,e){var i=0;E(this.stateList,function(t){i|=a(n,t,e)||a(n.target,t,e)},this),i||E(this.stateList,function(t){(n[t]||(n[t]={}))[e]=ML(e,"inRange"===t?"active":"inactive",o)})},this),PL.prototype.completeVisualOption.apply(this,arguments)},_resetSelected:function(t,e){var i=this.option,n=this._pieceList,o=(e?i:t).selected||{};if(i.selected=o,E(n,function(t,e){var i=this.getSelectedMapKey(t);o.hasOwnProperty(i)||(o[i]=!0)},this),"single"===i.selectedMode){var a=!1;E(n,function(t,e){var i=this.getSelectedMapKey(t);o[i]&&(a?o[i]=!1:a=!0)},this)}},getSelectedMapKey:function(t){return"categories"===this._mode?t.value+"":t.index+""},getPieceList:function(){return this._pieceList},_determineMode:function(){var t=this.option;return t.pieces&&0<t.pieces.length?"pieces":this.option.categories?"categories":"splitNumber"},setSelected:function(t){this.option.selected=k(t)},getValueState:function(t){var e=g_.findPieceIndex(t,this._pieceList);return null!=e&&this.option.selected[this.getSelectedMapKey(this._pieceList[e])]?"inRange":"outOfRange"},findTargetDataIndices:function(n){var o=[];return this.eachTargetSeries(function(t){var i=[],e=t.getData();e.each(this.getDataDimension(e),function(t,e){g_.findPieceIndex(t,this._pieceList)===n&&i.push(e)},this),o.push({seriesId:t.id,dataIndex:i})},this),o},getRepresentValue:function(t){var e;if(this.isCategory())e=t.value;else if(null!=t.value)e=t.value;else{var i=t.interval||[];e=i[0]===-1/0&&i[1]===1/0?0:(i[0]+i[1])/2}return e},getVisualMeta:function(o){if(!this.isCategory()){var a=[],r=[],s=this,t=this._pieceList.slice();if(t.length){var e=t[0].interval[0];e!==-1/0&&t.unshift({interval:[-1/0,e]}),(e=t[t.length-1].interval[1])!==1/0&&t.push({interval:[e,1/0]})}else t.push({interval:[-1/0,1/0]});var i=-1/0;return E(t,function(t){var e=t.interval;e&&(e[0]>i&&n([i,e[0]],"outOfRange"),n(e.slice()),i=e[1])},this),{stops:a,outerColors:r}}function n(t,e){var i=s.getRepresentValue({interval:t});e=e||s.getValueState(i);var n=o(i,e);t[0]===-1/0?r[0]=n:t[1]===1/0?r[1]=n:a.push({value:t[0],color:n},{value:t[1],color:n})}}}),jL={splitNumber:function(){var t=this.option,e=this._pieceList,i=Math.min(t.precision,20),n=this.getExtent(),o=t.splitNumber;o=Math.max(parseInt(o,10),1),t.splitNumber=o;for(var a=(n[1]-n[0])/o;+a.toFixed(i)!==a&&i<5;)i++;t.precision=i,a=+a.toFixed(i),t.minOpen&&e.push({interval:[-1/0,n[0]],close:[0,0]});for(var r=0,s=n[0];r<o;s+=a,r++){var l=r===o-1?n[1]:s+a;e.push({interval:[s,l],close:[1,1]})}t.maxOpen&&e.push({interval:[n[1],1/0],close:[0,0]}),$l(e),E(e,function(t,e){t.index=e,t.text=this.formatValueText(t.interval)},this)},categories:function(){var t=this.option;E(t.categories,function(t){this._pieceList.push({text:this.formatValueText(t,!0),value:t})},this),qL(t,this._pieceList)},pieces:function(){var t=this.option,d=this._pieceList;E(t.pieces,function(t,e){z(t)||(t={value:t});var i={text:"",index:e};if(null!=t.label&&(i.text=t.label),t.hasOwnProperty("value")){var n=i.value=t.value;i.interval=[n,n],i.close=[1,1]}else{for(var o=i.interval=[],a=i.close=[0,0],r=[1,0,1],s=[-1/0,1/0],l=[],u=0;u<2;u++){for(var h=[["gte","gt","min"],["lte","lt","max"]][u],c=0;c<3&&null==o[u];c++)o[u]=t[h[c]],a[u]=r[c],l[u]=2===c;null==o[u]&&(o[u]=s[u])}l[0]&&o[1]===1/0&&(a[0]=0),l[1]&&o[0]===-1/0&&(a[1]=0),o[0]===o[1]&&a[0]&&a[1]&&(i.value=o[0])}i.visual=g_.retrieveVisuals(t),d.push(i)},this),qL(t,d),$l(d),E(d,function(t){var e=t.close,i=[["<","≤"][e[1]],[">","≥"][e[0]]];t.text=t.text||this.formatValueText(null!=t.value?t.value:t.interval,!1,i)},this)}};function qL(t,e){var i=t.inverse;("vertical"===t.orient?!i:i)&&e.reverse()}RL.extend({type:"visualMap.piecewise",doRender:function(){var a=this.group;a.removeAll();var r=this.visualMapModel,s=r.get("textGap"),t=r.textStyleModel,l=t.getFont(),u=t.getTextColor(),h=this._getItemAlign(),c=r.itemSize,e=this._getViewData(),i=e.endsText,d=W(r.get("showLabel",!0),!i);i&&this._renderEndsText(a,i[0],c,d,h),E(e.viewPieceList,function(t){var e=t.piece,i=new Ci;i.onclick=A(this._onItemClick,this,e),this._enableHoverLink(i,t.indexInModelPieceList);var n=r.getRepresentValue(e);if(this._createItemSymbol(i,n,[0,0,c[0],c[1]]),d){var o=this.visualMapModel.getValueState(n);i.add(new Ur({style:{x:"right"===h?-s:c[0]+s,y:c[1]/2,text:e.text,textVerticalAlign:"middle",textAlign:h,textFont:l,textFill:u,opacity:"outOfRange"===o?.5:1}}))}a.add(i)},this),i&&this._renderEndsText(a,i[1],c,d,h),wu(r.get("orient"),a,r.get("itemGap")),this.renderBackground(a),this.positionGroup(a)},_enableHoverLink:function(t,i){function e(t){var e=this.visualMapModel;e.option.hoverLink&&this.api.dispatchAction({type:t,batch:BL(e.findTargetDataIndices(i),e)})}t.on("mouseover",A(e,this,"highlight")).on("mouseout",A(e,this,"downplay"))},_getItemAlign:function(){var t=this.visualMapModel,e=t.option;if("vertical"===e.orient)return zL(t,this.api,t.itemSize);var i=e.align;return i&&"auto"!==i||(i="left"),i},_renderEndsText:function(t,e,i,n,o){if(e){var a=new Ci,r=this.visualMapModel.textStyleModel;a.add(new Ur({style:{x:n?"right"===o?i[0]:0:i[0]/2,y:i[1]/2,textVerticalAlign:"middle",textAlign:n?o:"center",text:e,textFont:r.getFont(),textFill:r.getTextColor()}})),t.add(a)}},_getViewData:function(){var t=this.visualMapModel,e=O(t.getPieceList(),function(t,e){return{piece:t,indexInModelPieceList:e}}),i=t.get("text"),n=t.get("orient"),o=t.get("inverse");return("horizontal"===n?o:!o)?e.reverse():i=i&&i.slice().reverse(),{viewPieceList:e,endsText:i}},_createItemSymbol:function(t,e,i){t.add(wg(this.getControllerVisual(e,"symbol"),i[0],i[1],i[2],i[3],this.getControllerVisual(e,"color")))},_onItemClick:function(t){var e=this.visualMapModel,i=e.option,n=k(i.selected),o=e.getSelectedMapKey(t);"single"===i.selectedMode?(n[o]=!0,E(n,function(t,e){n[e]=e===o})):n[o]=!n[o],this.api.dispatchAction({type:"selectDataRange",from:this.uid,visualMapId:this.visualMapModel.id,selected:n})}});yf(yL);var KL,$L="urn:schemas-microsoft-com:vml",JL="undefined"==typeof window?null:window,QL=!1,tk=JL&&JL.document;function ek(t){return KL(t)}if(tk&&!v.canvasSupported)try{tk.namespaces.zrvml||tk.namespaces.add("zrvml",$L),KL=function(t){return tk.createElement("<zrvml:"+t+' class="zrvml">')}}catch(t){KL=function(t){return tk.createElement("<"+t+' xmlns="'+$L+'" class="zrvml">')}}var ik,nk=rr.CMD,ok=Math.round,ak=Math.sqrt,rk=Math.abs,sk=Math.cos,lk=Math.sin,uk=Math.max;if(!v.canvasSupported){var hk=",",ck="progid:DXImageTransform.Microsoft",dk=21600,fk=dk/2,pk=function(t){t.style.cssText="position:absolute;left:0;top:0;width:1px;height:1px;",t.coordsize=dk+","+dk,t.coordorigin="0,0"},gk=function(t,e,i){return"rgb("+[t,e,i].join(",")+")"},mk=function(t,e){e&&t&&e.parentNode!==t&&t.appendChild(e)},vk=function(t,e){e&&t&&e.parentNode===t&&t.removeChild(e)},yk=function(t,e,i){return 1e5*(parseFloat(t)||0)+1e3*(parseFloat(e)||0)+i},xk=Yn,_k=function(t,e,i){var n=Fe(e);i=+i,isNaN(i)&&(i=1),n&&(t.color=gk(n[0],n[1],n[2]),t.opacity=i*n[3])},wk=function(t,e,i,n){var o="fill"===e,a=t.getElementsByTagName(e)[0];null!=i[e]&&"none"!==i[e]&&(o||!o&&i.lineWidth)?(t[o?"filled":"stroked"]="true",i[e]instanceof cs&&vk(t,a),a=a||ek(e),o?function(t,e,i){var n,o,a=e.fill;if(null!=a)if(a instanceof cs){var r,s=0,l=[0,0],u=0,h=1,c=i.getBoundingRect(),d=c.width,f=c.height;if("linear"===a.type){r="gradient";var p=i.transform,g=[a.x*d,a.y*f],m=[a.x2*d,a.y2*f];p&&(bt(g,g,p),bt(m,m,p));var v=m[0]-g[0],y=m[1]-g[1];(s=180*Math.atan2(v,y)/Math.PI)<0&&(s+=360),s<1e-6&&(s=0)}else{r="gradientradial";g=[a.x*d,a.y*f],p=i.transform;var x=i.scale,_=d,w=f;l=[(g[0]-c.x)/_,(g[1]-c.y)/w],p&&bt(g,g,p),_/=x[0]*dk,w/=x[1]*dk;var b=uk(_,w);u=0/b,h=2*a.r/b-u}var S=a.colorStops.slice();S.sort(function(t,e){return t.offset-e.offset});for(var M=S.length,I=[],T=[],A=0;A<M;A++){var D=S[A],C=(n=D.color,void 0,o=Fe(n),[gk(o[0],o[1],o[2]),o[3]]);T.push(D.offset*h+u+" "+C[0]),0!==A&&A!==M-1||I.push(C)}if(2<=M){var L=I[0][0],k=I[1][0],P=I[0][1]*e.opacity,N=I[1][1]*e.opacity;t.type=r,t.method="none",t.focus="100%",t.angle=s,t.color=L,t.color2=k,t.colors=T.join(","),t.opacity=N,t.opacity2=P}"radial"===r&&(t.focusposition=l.join(","))}else _k(t,a,e.opacity)}(a,i,n):function(t,e){e.lineDash&&(t.dashstyle=e.lineDash.join(" ")),null==e.stroke||e.stroke instanceof cs||_k(t,e.stroke,e.opacity)}(a,i),mk(t,a)):(t[o?"filled":"stroked"]="false",vk(t,a))},bk=[[],[],[]];Ar.prototype.brushVML=function(t){var e=this.style,i=this._vmlEl;i||(i=ek("shape"),pk(i),this._vmlEl=i),wk(i,"fill",e,this),wk(i,"stroke",e,this);var n=this.transform,o=null!=n,a=i.getElementsByTagName("stroke")[0];if(a){var r=e.lineWidth;if(o&&!e.strokeNoScale){var s=n[0]*n[3]-n[1]*n[2];r*=ak(rk(s))}a.weight=r+"px"}var l=this.path||(this.path=new rr);this.__dirtyPath&&(l.beginPath(),l.subPixelOptimize=!1,this.buildPath(l,this.shape),l.toStatic(),this.__dirtyPath=!1),i.path=function(t,e){var i,n,o,a,r,s,l=nk.M,u=nk.C,h=nk.L,c=nk.A,d=nk.Q,f=[],p=t.data,g=t.len();for(a=0;a<g;){switch(n="",i=0,o=p[a++]){case l:n=" m ",i=1,r=p[a++],s=p[a++],bk[0][0]=r,bk[0][1]=s;break;case h:n=" l ",i=1,r=p[a++],s=p[a++],bk[0][0]=r,bk[0][1]=s;break;case d:case u:n=" c ",i=3;var m,v,y=p[a++],x=p[a++],_=p[a++],w=p[a++];o===d?(_=((m=_)+2*y)/3,w=((v=w)+2*x)/3,y=(r+2*y)/3,x=(s+2*x)/3):(m=p[a++],v=p[a++]),bk[0][0]=y,bk[0][1]=x,bk[1][0]=_,bk[1][1]=w,r=bk[2][0]=m,s=bk[2][1]=v;break;case c:var b=0,S=0,M=1,I=1,T=0;e&&(b=e[4],S=e[5],M=ak(e[0]*e[0]+e[1]*e[1]),I=ak(e[2]*e[2]+e[3]*e[3]),T=Math.atan2(-e[1]/I,e[0]/M));var A=p[a++],D=p[a++],C=p[a++],L=p[a++],k=p[a++]+T,P=p[a++]+k+T;a++;var N=p[a++],O=A+sk(k)*C,E=D+lk(k)*L,R=(y=A+sk(P)*C,x=D+lk(P)*L,N?" wa ":" at ");Math.abs(O-y)<1e-4&&(.01<Math.abs(P-k)?N&&(O+=.0125):Math.abs(E-D)<1e-4?N&&O<A||!N&&A<O?x-=.0125:x+=.0125:N&&E<D||!N&&D<E?y+=.0125:y-=.0125),f.push(R,ok(((A-C)*M+b)*dk-fk),hk,ok(((D-L)*I+S)*dk-fk),hk,ok(((A+C)*M+b)*dk-fk),hk,ok(((D+L)*I+S)*dk-fk),hk,ok((O*M+b)*dk-fk),hk,ok((E*I+S)*dk-fk),hk,ok((y*M+b)*dk-fk),hk,ok((x*I+S)*dk-fk)),r=y,s=x;break;case nk.R:var z=bk[0],B=bk[1];z[0]=p[a++],z[1]=p[a++],B[0]=z[0]+p[a++],B[1]=z[1]+p[a++],e&&(bt(z,z,e),bt(B,B,e)),z[0]=ok(z[0]*dk-fk),B[0]=ok(B[0]*dk-fk),z[1]=ok(z[1]*dk-fk),B[1]=ok(B[1]*dk-fk),f.push(" m ",z[0],hk,z[1]," l ",B[0],hk,z[1]," l ",B[0],hk,B[1]," l ",z[0],hk,B[1]);break;case nk.Z:f.push(" x ")}if(0<i){f.push(n);for(var V=0;V<i;V++){var G=bk[V];e&&bt(G,G,e),f.push(ok(G[0]*dk-fk),hk,ok(G[1]*dk-fk),V<i-1?hk:"")}}}return f.join("")}(l,this.transform),i.style.zIndex=yk(this.zlevel,this.z,this.z2),mk(t,i),null!=e.text?this.drawRectText(t,this.getBoundingRect()):this.removeRectText(t)},Ar.prototype.onRemove=function(t){vk(t,this._vmlEl),this.removeRectText(t)},Ar.prototype.onAdd=function(t){mk(t,this._vmlEl),this.appendRectText(t)};Qn.prototype.brushVML=function(t){var e,i,n=this.style,o=n.image;if(function(t){return"object"==typeof t&&t.tagName&&"IMG"===t.tagName.toUpperCase()}(o)){var a=o.src;if(a===this._imageSrc)e=this._imageWidth,i=this._imageHeight;else{var r=o.runtimeStyle,s=r.width,l=r.height;r.width="auto",r.height="auto",e=o.width,i=o.height,r.width=s,r.height=l,this._imageSrc=a,this._imageWidth=e,this._imageHeight=i}o=a}else o===this._imageSrc&&(e=this._imageWidth,i=this._imageHeight);if(o){var u=n.x||0,h=n.y||0,c=n.width,d=n.height,f=n.sWidth,p=n.sHeight,g=n.sx||0,m=n.sy||0,v=f&&p,y=this._vmlEl;y||(y=tk.createElement("div"),pk(y),this._vmlEl=y);var x,_=y.style,w=!1,b=1,S=1;if(this.transform&&(x=this.transform,b=ak(x[0]*x[0]+x[1]*x[1]),S=ak(x[2]*x[2]+x[3]*x[3]),w=x[1]||x[2]),w){var M=[u,h],I=[u+c,h],T=[u,h+d],A=[u+c,h+d];bt(M,M,x),bt(I,I,x),bt(T,T,x),bt(A,A,x);var D=uk(M[0],I[0],T[0],A[0]),C=uk(M[1],I[1],T[1],A[1]),L=[];L.push("M11=",x[0]/b,hk,"M12=",x[2]/S,hk,"M21=",x[1]/b,hk,"M22=",x[3]/S,hk,"Dx=",ok(u*b+x[4]),hk,"Dy=",ok(h*S+x[5])),_.padding="0 "+ok(D)+"px "+ok(C)+"px 0",_.filter=ck+".Matrix("+L.join("")+", SizingMethod=clip)"}else x&&(u=u*b+x[4],h=h*S+x[5]),_.filter="",_.left=ok(u)+"px",_.top=ok(h)+"px";var k=this._imageEl,P=this._cropEl;k||(k=tk.createElement("div"),this._imageEl=k);var N=k.style;if(v){if(e&&i)N.width=ok(b*e*c/f)+"px",N.height=ok(S*i*d/p)+"px";else{var O=new Image,E=this;O.onload=function(){O.onload=null,e=O.width,i=O.height,N.width=ok(b*e*c/f)+"px",N.height=ok(S*i*d/p)+"px",E._imageWidth=e,E._imageHeight=i,E._imageSrc=o},O.src=o}P||((P=tk.createElement("div")).style.overflow="hidden",this._cropEl=P);var R=P.style;R.width=ok((c+g*c/f)*b),R.height=ok((d+m*d/p)*S),R.filter=ck+".Matrix(Dx="+-g*c/f*b+",Dy="+-m*d/p*S+")",P.parentNode||y.appendChild(P),k.parentNode!==P&&P.appendChild(k)}else N.width=ok(b*c)+"px",N.height=ok(S*d)+"px",y.appendChild(k),P&&P.parentNode&&(y.removeChild(P),this._cropEl=null);var z="",B=n.opacity;B<1&&(z+=".Alpha(opacity="+ok(100*B)+") "),z+=ck+".AlphaImageLoader(src="+o+", SizingMethod=scale)",N.filter=z,y.style.zIndex=yk(this.zlevel,this.z,this.z2),mk(t,y),null!=n.text&&this.drawRectText(t,this.getBoundingRect())}},Qn.prototype.onRemove=function(t){vk(t,this._vmlEl),this._vmlEl=null,this._cropEl=null,this._imageEl=null,this.removeRectText(t)},Qn.prototype.onAdd=function(t){mk(t,this._vmlEl),this.appendRectText(t)};var Sk,Mk="normal",Ik={},Tk=0,Ak=document.createElement("div");ik=function(t,e){var i=tk;Sk||((Sk=i.createElement("div")).style.cssText="position:absolute;top:-20000px;left:0;padding:0;margin:0;border:none;white-space:pre;",tk.body.appendChild(Sk));try{Sk.style.font=e}catch(t){}return Sk.innerHTML="",Sk.appendChild(i.createTextNode(t)),{width:Sk.offsetWidth}},fn["measureText"]=ik;for(var Dk=new Di,Ck=function(t,e,i,n){var o=this.style;this.__dirty&&En(o);var a=o.text;if(null!=a&&(a+=""),a){if(o.rich){var r=In(a,o);a=[];for(var s=0;s<r.lines.length;s++){for(var l=r.lines[s].tokens,u=[],h=0;h<l.length;h++)u.push(l[h].text);a.push(u.join(""))}a=a.join("\n")}var c,d,f=o.textAlign,p=o.textVerticalAlign,g=function(t){var e=Ik[t];if(!e){100<Tk&&(Tk=0,Ik={});var i,n=Ak.style;try{n.font=t,i=n.fontFamily.split(",")[0]}catch(t){}e={style:n.fontStyle||Mk,variant:n.fontVariant||Mk,weight:n.fontWeight||Mk,size:0|parseFloat(n.fontSize||12),family:i||"Microsoft YaHei"},Ik[t]=e,Tk++}return e}(o.font),m=g.style+" "+g.variant+" "+g.weight+" "+g.size+'px "'+g.family+'"';i=i||gn(a,m,f,p,o.textPadding,o.textLineHeight);var v=this.transform;if(v&&!n&&(Dk.copy(e),Dk.applyTransform(v),e=Dk),n)c=e.x,d=e.y;else{var y=o.textPosition;if(y instanceof Array)c=e.x+xk(y[0],e.width),d=e.y+xk(y[1],e.height),f=f||"left";else{var x=this.calculateTextPosition?this.calculateTextPosition({},o,e):yn({},o,e);c=x.x,d=x.y,f=f||x.textAlign,p=p||x.textVerticalAlign}}c=mn(c,i.width,f),d=vn(d,i.height,p),d+=i.height/2;var _,w,b,S=ek,M=this._textVmlEl;M?w=(_=(b=M.firstChild).nextSibling).nextSibling:(M=S("line"),_=S("path"),w=S("textpath"),b=S("skew"),w.style["v-text-align"]="left",pk(M),_.textpathok=!0,w.on=!0,M.from="0 0",M.to="1000 0.05",mk(M,b),mk(M,_),mk(M,w),this._textVmlEl=M);var I=[c,d],T=M.style;v&&n?(bt(I,I,v),b.on=!0,b.matrix=v[0].toFixed(3)+hk+v[2].toFixed(3)+hk+v[1].toFixed(3)+hk+v[3].toFixed(3)+",0,0",b.offset=(ok(I[0])||0)+","+(ok(I[1])||0),b.origin="0 0",T.left="0px",T.top="0px"):(b.on=!1,T.left=ok(c)+"px",T.top=ok(d)+"px"),w.string=function(t){return String(t).replace(/&/g,"&amp;").replace(/"/g,"&quot;")}(a);try{w.style.font=m}catch(t){}wk(M,"fill",{fill:o.textFill,opacity:o.opacity},this),wk(M,"stroke",{stroke:o.textStroke,opacity:o.opacity,lineDash:o.lineDash||null},this),M.style.zIndex=yk(this.zlevel,this.z,this.z2),mk(t,M)}},Lk=function(t){vk(t,this._textVmlEl),this._textVmlEl=null},kk=function(t){mk(t,this._textVmlEl)},Pk=[Kn,Jn,Qn,Ar,Ur],Nk=0;Nk<Pk.length;Nk++){var Ok=Pk[Nk].prototype;Ok.drawRectText=Ck,Ok.removeRectText=Lk,Ok.appendRectText=kk}Ur.prototype.brushVML=function(t){var e=this.style;null!=e.text?this.drawRectText(t,{x:e.x||0,y:e.y||0,width:0,height:0},this.getBoundingRect(),!0):this.removeRectText(t)},Ur.prototype.onRemove=function(t){this.removeRectText(t)},Ur.prototype.onAdd=function(t){this.appendRectText(t)}}function Ek(t){return parseInt(t,10)}function Rk(t,e){!function(){if(!QL&&tk){QL=!0;var t=tk.styleSheets;t.length<31?tk.createStyleSheet().addRule(".zrvml","behavior:url(#default#VML)"):t[0].addRule(".zrvml","behavior:url(#default#VML)")}}(),this.root=t,this.storage=e;var i=document.createElement("div"),n=document.createElement("div");i.style.cssText="display:inline-block;overflow:hidden;position:relative;width:300px;height:150px;",n.style.cssText="position:absolute;left:0;top:0;",t.appendChild(i),this._vmlRoot=n,this._vmlViewport=i,this.resize();var o=e.delFromStorage,a=e.addToStorage;e.delFromStorage=function(t){o.call(e,t),t&&t.onRemove&&t.onRemove(n)},e.addToStorage=function(t){t.onAdd&&t.onAdd(n),a.call(e,t)},this._firstPaint=!0}Rk.prototype={constructor:Rk,getType:function(){return"vml"},getViewportRoot:function(){return this._vmlViewport},getViewportRootOffset:function(){var t=this.getViewportRoot();if(t)return{offsetLeft:t.offsetLeft||0,offsetTop:t.offsetTop||0}},refresh:function(){var t=this.storage.getDisplayList(!0,!0);this._paintList(t)},_paintList:function(t){for(var e=this._vmlRoot,i=0;i<t.length;i++){var n=t[i];n.invisible||n.ignore?(n.__alreadyNotVisible||n.onRemove(e),n.__alreadyNotVisible=!0):(n.__alreadyNotVisible&&n.onAdd(e),n.__alreadyNotVisible=!1,n.__dirty&&(n.beforeBrush&&n.beforeBrush(),(n.brushVML||n.brush).call(n,e),n.afterBrush&&n.afterBrush())),n.__dirty=!1}this._firstPaint&&(this._vmlViewport.appendChild(e),this._firstPaint=!1)},resize:function(t,e){t=null==t?this._getWidth():t,e=null==e?this._getHeight():e;if(this._width!==t||this._height!==e){this._width=t,this._height=e;var i=this._vmlViewport.style;i.width=t+"px",i.height=e+"px"}},dispose:function(){this.root.innerHTML="",this._vmlRoot=this._vmlViewport=this.storage=null},getWidth:function(){return this._width},getHeight:function(){return this._height},clear:function(){this._vmlViewport&&this.root.removeChild(this._vmlViewport)},_getWidth:function(){var t=this.root,e=t.currentStyle;return(t.clientWidth||Ek(e.width))-Ek(e.paddingLeft)-Ek(e.paddingRight)|0},_getHeight:function(){var t=this.root,e=t.currentStyle;return(t.clientHeight||Ek(e.height))-Ek(e.paddingTop)-Ek(e.paddingBottom)|0}},E(["getLayer","insertLayer","eachLayer","eachBuiltinLayer","eachOtherLayer","getLayers","modLayer","delLayer","clearLayer","toDataURL","pathToImage"],function(t){Rk.prototype[t]=function(t){return function(){vi('In IE8.0 VML mode painter not support method "'+t+'"')}}(t)}),Po("vml",Rk);function zk(t){return document.createElementNS("http://www.w3.org/2000/svg",t)}var Bk=rr.CMD,Vk=Array.prototype.join,Gk="none",Fk=Math.round,Wk=Math.sin,Hk=Math.cos,Zk=Math.PI,Uk=2*Math.PI,Xk=180/Zk,Yk=1e-4;function jk(t){return Fk(1e4*t)/1e4}function qk(t){return t<Yk&&-Yk<t}function Kk(t,e){e&&$k(t,"transform","matrix("+Vk.call(e,",")+")")}function $k(t,e,i){i&&("linear"===i.type||"radial"===i.type)||t.setAttribute(e,i)}function Jk(t,e,i,n){if(function(t,e){var i=e?t.textFill:t.fill;return null!=i&&i!==Gk}(e,i)){var o=i?e.textFill:e.fill;$k(t,"fill",o="transparent"===o?Gk:o),$k(t,"fill-opacity",null!=e.fillOpacity?e.fillOpacity*e.opacity:e.opacity)}else $k(t,"fill",Gk);if(function(t,e){var i=e?t.textStroke:t.stroke;return null!=i&&i!==Gk}(e,i)){var a=i?e.textStroke:e.stroke;$k(t,"stroke",a="transparent"===a?Gk:a),$k(t,"stroke-width",(i?e.textStrokeWidth:e.lineWidth)/(!i&&e.strokeNoScale?n.getLineScale():1)),$k(t,"paint-order",i?"stroke":"fill"),$k(t,"stroke-opacity",null!=e.strokeOpacity?e.strokeOpacity:e.opacity),e.lineDash?($k(t,"stroke-dasharray",e.lineDash.join(",")),$k(t,"stroke-dashoffset",Fk(e.lineDashOffset||0))):$k(t,"stroke-dasharray",""),e.lineCap&&$k(t,"stroke-linecap",e.lineCap),e.lineJoin&&$k(t,"stroke-linejoin",e.lineJoin),e.miterLimit&&$k(t,"stroke-miterlimit",e.miterLimit)}else $k(t,"stroke",Gk)}var Qk={};Qk.brush=function(t){var e=t.style,i=t.__svgEl;i||(i=zk("path"),t.__svgEl=i),t.path||t.createPathProxy();var n=t.path;if(t.__dirtyPath){n.beginPath(),n.subPixelOptimize=!1,t.buildPath(n,t.shape),t.__dirtyPath=!1;var o=function(t){for(var e=[],i=t.data,n=t.len(),o=0;o<n;){var a="",r=0;switch(i[o++]){case Bk.M:a="M",r=2;break;case Bk.L:a="L",r=2;break;case Bk.Q:a="Q",r=4;break;case Bk.C:a="C",r=6;break;case Bk.A:var s=i[o++],l=i[o++],u=i[o++],h=i[o++],c=i[o++],d=i[o++],f=i[o++],p=i[o++],g=Math.abs(d),m=qk(g-Uk)||(p?Uk<=d:Uk<=-d),v=0<d?d%Uk:d%Uk+Uk,y=!1;y=!!m||!qk(g)&&Zk<=v==!!p;var x=jk(s+u*Hk(c)),_=jk(l+h*Wk(c));m&&(d=p?Uk-1e-4:1e-4-Uk,y=!0,9===o&&e.push("M",x,_));var w=jk(s+u*Hk(c+d)),b=jk(l+h*Wk(c+d));e.push("A",jk(u),jk(h),Fk(f*Xk),+y,+p,w,b);break;case Bk.Z:a="Z";break;case Bk.R:w=jk(i[o++]),b=jk(i[o++]);var S=jk(i[o++]),M=jk(i[o++]);e.push("M",w,b,"L",w+S,b,"L",w+S,b+M,"L",w,b+M,"L",w,b)}a&&e.push(a);for(var I=0;I<r;I++)e.push(jk(i[o++]))}return e.join(" ")}(n);o.indexOf("NaN")<0&&$k(i,"d",o)}Jk(i,e,!1,t),Kk(i,t.transform),null!=e.text?rP(t,t.getBoundingRect()):lP(t)};var tP={brush:function(t){var e=t.style,i=e.image;i instanceof HTMLImageElement&&(i=i.src);if(i){var n=e.x||0,o=e.y||0,a=e.width,r=e.height,s=t.__svgEl;s||(s=zk("image"),t.__svgEl=s),i!==t.__imageSrc&&(function(t,e,i){t.setAttributeNS("http://www.w3.org/1999/xlink",e,i)}(s,"href",i),t.__imageSrc=i),$k(s,"width",a),$k(s,"height",r),$k(s,"x",n),$k(s,"y",o),Kk(s,t.transform),null!=e.text?rP(t,t.getBoundingRect()):lP(t)}}},eP={},iP=new Di,nP={},oP=[],aP={left:"start",right:"end",center:"middle",middle:"middle"},rP=function(t,e){var i=t.style,n=t.transform,o=t instanceof Ur||i.transformText;t.__dirty&&En(i);var a=i.text;if(null!=a&&(a+=""),qn(a,i)){null==a&&(a=""),!o&&n&&(iP.copy(e),iP.applyTransform(n),e=iP);var r=t.__textSvgEl;r||(r=zk("text"),t.__textSvgEl=r);var s=r.style,l=i.font||dn,u=r.__computedFont;l!==r.__styleFont&&(s.font=r.__styleFont=l,u=r.__computedFont=s.font);var h=i.textPadding,c=i.textLineHeight,d=t.__textCotentBlock;d&&!t.__dirtyText||(d=t.__textCotentBlock=Mn(a,u,h,c,i.truncate));var f=d.outerHeight,p=d.lineHeight;Hn(nP,t,i,e);var g=nP.baseX,m=nP.baseY,v=nP.textAlign||"left",y=nP.textVerticalAlign;!function(t,e,i,n,o,a,r){re(oP),e&&i&&se(oP,i);var s=n.textRotation;if(o&&s){var l=n.textOrigin;"center"===l?(a=o.width/2+o.x,r=o.height/2+o.y):l&&(a=l[0]+o.x,r=l[1]+o.y),oP[4]-=a,oP[5]-=r,he(oP,oP,s),oP[4]+=a,oP[5]+=r}Kk(t,oP)}(r,o,n,i,e,g,m);var x=g,_=vn(m,f,y);h&&(x=function(t,e,i){return"right"===e?t-i[1]:"center"===e?t+i[3]/2-i[1]/2:t+i[3]}(g,v,h),_+=h[0]),_+=p/2,Jk(r,i,!0,t);var w=d.canCacheByTextString,b=t.__tspanList||(t.__tspanList=[]),S=b.length;if(w&&t.__canCacheByTextString&&t.__text===a){if(t.__dirtyText&&S)for(var M=0;M<S;++M)sP(b[M],v,x,_+M*p)}else{t.__text=a,t.__canCacheByTextString=w;var I=d.lines,T=I.length;for(M=0;M<T;M++){var A=b[M],D=I[M];A?A.__zrText!==D&&(A.innerHTML="",A.appendChild(document.createTextNode(D))):(A=b[M]=zk("tspan"),r.appendChild(A),A.appendChild(document.createTextNode(D))),sP(A,v,x,_+M*p)}if(T<S){for(;M<S;M++)r.removeChild(b[M]);b.length=T}}}};function sP(t,e,i,n){$k(t,"dominant-baseline","middle"),$k(t,"text-anchor",aP[e]),$k(t,"x",i),$k(t,"y",n)}function lP(t){t&&t.__textSvgEl&&(t.__textSvgEl.parentNode&&t.__textSvgEl.parentNode.removeChild(t.__textSvgEl),t.__textSvgEl=null,t.__tspanList=[],t.__text=null)}function uP(){}function hP(t,e){for(var i=0,n=e.length,o=0,a=0;i<n;i++){var r=e[i];if(r.removed){for(s=[],l=a;l<a+r.count;l++)s.push(l);r.indices=s,a+=r.count}else{for(var s=[],l=o;l<o+r.count;l++)s.push(l);r.indices=s,o+=r.count,r.added||(a+=r.count)}}return e}eP.drawRectText=rP,eP.brush=function(t){null!=t.style.text?rP(t,!1):lP(t)},uP.prototype={diff:function(l,u,t){t=t||function(t,e){return t===e},this.equals=t;var h=this;l=l.slice();var c=(u=u.slice()).length,d=l.length,f=1,e=c+d,p=[{newPos:-1,components:[]}],i=this.extractCommon(p[0],u,l,0);if(p[0].newPos+1>=c&&d<=i+1){for(var n=[],o=0;o<u.length;o++)n.push(o);return[{indices:n,count:u.length}]}function a(){for(var t=-1*f;t<=f;t+=2){var e,i=p[t-1],n=p[t+1],o=(n?n.newPos:0)-t;i&&(p[t-1]=void 0);var a=i&&i.newPos+1<c,r=n&&0<=o&&o<d;if(a||r){if(!a||r&&i.newPos<n.newPos?(e={newPos:(s=n).newPos,components:s.components.slice(0)},h.pushComponent(e.components,void 0,!0)):((e=i).newPos++,h.pushComponent(e.components,!0,void 0)),o=h.extractCommon(e,u,l,t),e.newPos+1>=c&&d<=o+1)return hP(h,e.components,u,l);p[t]=e}else p[t]=void 0}var s;f++}for(;f<=e;){var r=a();if(r)return r}},pushComponent:function(t,e,i){var n=t[t.length-1];n&&n.added===e&&n.removed===i?t[t.length-1]={count:n.count+1,added:e,removed:i}:t.push({count:1,added:e,removed:i})},extractCommon:function(t,e,i,n){for(var o=e.length,a=i.length,r=t.newPos,s=r-n,l=0;r+1<o&&s+1<a&&this.equals(e[r+1],i[s+1]);)r++,s++,l++;return l&&t.components.push({count:l}),t.newPos=r,s},tokenize:function(t){return t.slice()},join:function(t){return t.slice()}};var cP=new uP;function dP(t,e,i,n,o){this._zrId=t,this._svgRoot=e,this._tagNames="string"==typeof i?[i]:i,this._markLabel=n,this._domName=o||"_dom",this.nextId=0}function fP(t,e){dP.call(this,t,e,["linearGradient","radialGradient"],"__gradient_in_use__")}function pP(t,e){dP.call(this,t,e,"clipPath","__clippath_in_use__")}function gP(t,e){dP.call(this,t,e,["filter"],"__filter_in_use__","_shadowDom")}function mP(t){return t&&(t.shadowBlur||t.shadowOffsetX||t.shadowOffsetY||t.textShadowBlur||t.textShadowOffsetX||t.textShadowOffsetY)}function vP(t){return parseInt(t,10)}function yP(t,e){return e&&t&&e.parentNode!==t}function xP(t,e,i){if(yP(t,e)&&i){var n=i.nextSibling;n?t.insertBefore(e,n):t.appendChild(e)}}function _P(t,e){if(yP(t,e)){var i=t.firstChild;i?t.insertBefore(e,i):t.appendChild(e)}}function wP(t,e){e&&t&&e.parentNode===t&&t.removeChild(e)}function bP(t){return t.__textSvgEl}function SP(t){return t.__svgEl}dP.prototype.createElement=zk,dP.prototype.getDefs=function(t){var e=this._svgRoot,n=this._svgRoot.getElementsByTagName("defs");return 0===n.length?t?((n=e.insertBefore(this.createElement("defs"),e.firstChild)).contains||(n.contains=function(t){var e=n.children;if(!e)return!1;for(var i=e.length-1;0<=i;--i)if(e[i]===t)return!0;return!1}),n):null:n[0]},dP.prototype.update=function(t,e){if(t){var i=this.getDefs(!1);if(t[this._domName]&&i.contains(t[this._domName]))"function"==typeof e&&e(t);else{var n=this.add(t);n&&(t[this._domName]=n)}}},dP.prototype.addDom=function(t){this.getDefs(!0).appendChild(t)},dP.prototype.removeDom=function(t){var e=this.getDefs(!1);e&&t[this._domName]&&(e.removeChild(t[this._domName]),t[this._domName]=null)},dP.prototype.getDoms=function(){var i=this.getDefs(!1);if(!i)return[];var n=[];return E(this._tagNames,function(t){var e=i.getElementsByTagName(t);n=n.concat([].slice.call(e))}),n},dP.prototype.markAllUnused=function(){var t=this.getDoms(),e=this;E(t,function(t){t[e._markLabel]="0"})},dP.prototype.markUsed=function(t){t&&(t[this._markLabel]="1")},dP.prototype.removeUnused=function(){var e=this.getDefs(!1);if(e){var t=this.getDoms(),i=this;E(t,function(t){"1"!==t[i._markLabel]&&e.removeChild(t)})}},dP.prototype.getSvgProxy=function(t){return t instanceof Ar?Qk:t instanceof Qn?tP:t instanceof Ur?eP:Qk},dP.prototype.getTextSvgElement=function(t){return t.__textSvgEl},dP.prototype.getSvgElement=function(t){return t.__svgEl},w(fP,dP),fP.prototype.addWithoutUpdate=function(a,r){if(r&&r.style){var s=this;E(["fill","stroke"],function(t){if(r.style[t]&&("linear"===r.style[t].type||"radial"===r.style[t].type)){var e,i=r.style[t],n=s.getDefs(!0);i._dom?(e=i._dom,n.contains(i._dom)||s.addDom(e)):e=s.add(i),s.markUsed(r);var o=e.getAttribute("id");a.setAttribute(t,"url(#"+o+")")}})}},fP.prototype.add=function(t){var e;if("linear"===t.type)e=this.createElement("linearGradient");else{if("radial"!==t.type)return vi("Illegal gradient type."),null;e=this.createElement("radialGradient")}return t.id=t.id||this.nextId++,e.setAttribute("id","zr"+this._zrId+"-gradient-"+t.id),this.updateDom(t,e),this.addDom(e),e},fP.prototype.update=function(i){var n=this;dP.prototype.update.call(this,i,function(){var t=i.type,e=i._dom.tagName;"linear"===t&&"linearGradient"===e||"radial"===t&&"radialGradient"===e?n.updateDom(i,i._dom):(n.removeDom(i),n.add(i))})},fP.prototype.updateDom=function(t,e){if("linear"===t.type)e.setAttribute("x1",t.x),e.setAttribute("y1",t.y),e.setAttribute("x2",t.x2),e.setAttribute("y2",t.y2);else{if("radial"!==t.type)return void vi("Illegal gradient type.");e.setAttribute("cx",t.x),e.setAttribute("cy",t.y),e.setAttribute("r",t.r)}t.global?e.setAttribute("gradientUnits","userSpaceOnUse"):e.setAttribute("gradientUnits","objectBoundingBox"),e.innerHTML="";for(var i=t.colorStops,n=0,o=i.length;n<o;++n){var a=this.createElement("stop");a.setAttribute("offset",100*i[n].offset+"%");var r=i[n].color;if(r.indexOf(!1)){var s=Fe(r)[3],l=Ze(r);a.setAttribute("stop-color","#"+l),a.setAttribute("stop-opacity",s)}else a.setAttribute("stop-color",i[n].color);e.appendChild(a)}t._dom=e},fP.prototype.markUsed=function(t){if(t.style){var e=t.style.fill;e&&e._dom&&dP.prototype.markUsed.call(this,e._dom),(e=t.style.stroke)&&e._dom&&dP.prototype.markUsed.call(this,e._dom)}},w(pP,dP),pP.prototype.update=function(t){var e=this.getSvgElement(t);e&&this.updateDom(e,t.__clipPaths,!1);var i=this.getTextSvgElement(t);i&&this.updateDom(i,t.__clipPaths,!0),this.markUsed(t)},pP.prototype.updateDom=function(t,e,i){if(e&&0<e.length){var n,o,a=this.getDefs(!0),r=e[0],s=i?"_textDom":"_dom";r[s]?(o=r[s].getAttribute("id"),n=r[s],a.contains(n)||a.appendChild(n)):(o="zr"+this._zrId+"-clip-"+this.nextId,++this.nextId,(n=this.createElement("clipPath")).setAttribute("id",o),a.appendChild(n),r[s]=n);var l=this.getSvgProxy(r);if(r.transform&&r.parent.invTransform&&!i){var u=Array.prototype.slice.call(r.transform);le(r.transform,r.parent.invTransform,r.transform),l.brush(r),r.transform=u}else l.brush(r);var h=this.getSvgElement(r);n.innerHTML="",n.appendChild(h.cloneNode()),t.setAttribute("clip-path","url(#"+o+")"),1<e.length&&this.updateDom(n,e.slice(1),i)}else t&&t.setAttribute("clip-path","none")},pP.prototype.markUsed=function(t){var e=this;t.__clipPaths&&E(t.__clipPaths,function(t){t._dom&&dP.prototype.markUsed.call(e,t._dom),t._textDom&&dP.prototype.markUsed.call(e,t._textDom)})},w(gP,dP),gP.prototype.addWithoutUpdate=function(t,e){if(e&&mP(e.style)){var i;if(e._shadowDom)i=e._shadowDom,this.getDefs(!0).contains(e._shadowDom)||this.addDom(i);else i=this.add(e);this.markUsed(e);var n=i.getAttribute("id");t.style.filter="url(#"+n+")"}},gP.prototype.add=function(t){var e=this.createElement("filter");return t._shadowDomId=t._shadowDomId||this.nextId++,e.setAttribute("id","zr"+this._zrId+"-shadow-"+t._shadowDomId),this.updateDom(t,e),this.addDom(e),e},gP.prototype.update=function(t,e){if(mP(e.style)){var i=this;dP.prototype.update.call(this,e,function(){i.updateDom(e,e._shadowDom)})}else this.remove(t,e)},gP.prototype.remove=function(t,e){null!=e._shadowDomId&&(this.removeDom(t),t.style.filter="")},gP.prototype.updateDom=function(t,e){var i=e.getElementsByTagName("feDropShadow");i=0===i.length?this.createElement("feDropShadow"):i[0];var n,o,a,r,s=t.style,l=t.scale&&t.scale[0]||1,u=t.scale&&t.scale[1]||1;if(s.shadowBlur||s.shadowOffsetX||s.shadowOffsetY)n=s.shadowOffsetX||0,o=s.shadowOffsetY||0,a=s.shadowBlur,r=s.shadowColor;else{if(!s.textShadowBlur)return void this.removeDom(e,s);n=s.textShadowOffsetX||0,o=s.textShadowOffsetY||0,a=s.textShadowBlur,r=s.textShadowColor}i.setAttribute("dx",n/l),i.setAttribute("dy",o/u),i.setAttribute("flood-color",r);var h=a/2/l+" "+a/2/u;i.setAttribute("stdDeviation",h),e.setAttribute("x","-100%"),e.setAttribute("y","-100%"),e.setAttribute("width",Math.ceil(a/2*200)+"%"),e.setAttribute("height",Math.ceil(a/2*200)+"%"),e.appendChild(i),t._shadowDom=e},gP.prototype.markUsed=function(t){t._shadowDom&&dP.prototype.markUsed.call(this,t._shadowDom)};function MP(t,e,i,n){this.root=t,this.storage=e,this._opts=i=P({},i||{});var o=zk("svg");o.setAttribute("xmlns","http://www.w3.org/2000/svg"),o.setAttribute("version","1.1"),o.setAttribute("baseProfile","full"),o.style.cssText="user-select:none;position:absolute;left:0;top:0;";var a=zk("g");o.appendChild(a);var r=zk("g");o.appendChild(r),this.gradientManager=new fP(n,r),this.clipPathManager=new pP(n,r),this.shadowManager=new gP(n,r);var s=document.createElement("div");s.style.cssText="overflow:hidden;position:relative",this._svgDom=o,this._svgRoot=r,this._backgroundRoot=a,this._viewport=s,t.appendChild(s),s.appendChild(o),this.resize(i.width,i.height),this._visibleList=[]}MP.prototype={constructor:MP,getType:function(){return"svg"},getViewportRoot:function(){return this._viewport},getSvgDom:function(){return this._svgDom},getSvgRoot:function(){return this._svgRoot},getViewportRootOffset:function(){var t=this.getViewportRoot();if(t)return{offsetLeft:t.offsetLeft||0,offsetTop:t.offsetTop||0}},refresh:function(){var t=this.storage.getDisplayList(!0);this._paintList(t)},setBackgroundColor:function(t){this._backgroundRoot&&this._backgroundNode&&this._backgroundRoot.removeChild(this._backgroundNode);var e=zk("rect");e.setAttribute("width",this.getWidth()),e.setAttribute("height",this.getHeight()),e.setAttribute("x",0),e.setAttribute("y",0),e.setAttribute("id",0),e.style.fill=t,this._backgroundRoot.appendChild(e),this._backgroundNode=e},_paintList:function(t){this.gradientManager.markAllUnused(),this.clipPathManager.markAllUnused(),this.shadowManager.markAllUnused();var e,i,n=this._svgRoot,o=this._visibleList,a=t.length,r=[];for(e=0;e<a;e++){var s=t[e],l=(i=s)instanceof Ar?Qk:i instanceof Qn?tP:i instanceof Ur?eP:Qk,u=SP(s)||bP(s);s.invisible||(s.__dirty&&(l&&l.brush(s),this.clipPathManager.update(s),s.style&&(this.gradientManager.update(s.style.fill),this.gradientManager.update(s.style.stroke),this.shadowManager.update(u,s)),s.__dirty=!1),r.push(s))}var h,c=function(t,e,i){return cP.diff(t,e,i)}(o,r);for(e=0;e<c.length;e++){if((p=c[e]).removed)for(var d=0;d<p.count;d++){u=SP(s=o[p.indices[d]]);var f=bP(s);wP(n,u),wP(n,f)}}for(e=0;e<c.length;e++){var p;if((p=c[e]).added)for(d=0;d<p.count;d++){u=SP(s=r[p.indices[d]]),f=bP(s);h?xP(n,u,h):_P(n,u),u?xP(n,f,u):h?xP(n,f,h):_P(n,f),xP(n,f,u),h=f||u||h,this.gradientManager.addWithoutUpdate(u||f,s),this.shadowManager.addWithoutUpdate(u||f,s),this.clipPathManager.markUsed(s)}else if(!p.removed)for(d=0;d<p.count;d++){u=SP(s=r[p.indices[d]]),f=bP(s),u=SP(s),f=bP(s);this.gradientManager.markUsed(s),this.gradientManager.addWithoutUpdate(u||f,s),this.shadowManager.markUsed(s),this.shadowManager.addWithoutUpdate(u||f,s),this.clipPathManager.markUsed(s),f&&xP(n,f,u),h=u||f||h}}this.gradientManager.removeUnused(),this.clipPathManager.removeUnused(),this.shadowManager.removeUnused(),this._visibleList=r},_getDefs:function(t){var n,e=this._svgDom;return 0!==(n=e.getElementsByTagName("defs")).length?n[0]:t?((n=e.insertBefore(zk("defs"),e.firstChild)).contains||(n.contains=function(t){var e=n.children;if(!e)return!1;for(var i=e.length-1;0<=i;--i)if(e[i]===t)return!0;return!1}),n):null},resize:function(t,e){var i=this._viewport;i.style.display="none";var n=this._opts;if(null!=t&&(n.width=t),null!=e&&(n.height=e),t=this._getSize(0),e=this._getSize(1),i.style.display="",this._width!==t||this._height!==e){this._width=t,this._height=e;var o=i.style;o.width=t+"px",o.height=e+"px";var a=this._svgDom;a.setAttribute("width",t),a.setAttribute("height",e)}this._backgroundNode&&(this._backgroundNode.setAttribute("width",t),this._backgroundNode.setAttribute("height",e))},getWidth:function(){return this._width},getHeight:function(){return this._height},_getSize:function(t){var e=this._opts,i=["width","height"][t],n=["clientWidth","clientHeight"][t],o=["paddingLeft","paddingTop"][t],a=["paddingRight","paddingBottom"][t];if(null!=e[i]&&"auto"!==e[i])return parseFloat(e[i]);var r=this.root,s=document.defaultView.getComputedStyle(r);return(r[n]||vP(s[i])||vP(r.style[i]))-(vP(s[o])||0)-(vP(s[a])||0)|0},dispose:function(){this.root.innerHTML="",this._svgRoot=this._backgroundRoot=this._svgDom=this._backgroundNode=this._viewport=this.storage=null},clear:function(){this._viewport&&this.root.removeChild(this._viewport)},toDataURL:function(){return this.refresh(),"data:image/svg+xml;charset=UTF-8,"+encodeURIComponent(this._svgDom.outerHTML.replace(/></g,">\n\r<"))}},E(["getLayer","insertLayer","eachLayer","eachBuiltinLayer","eachOtherLayer","getLayers","modLayer","delLayer","clearLayer","pathToImage"],function(t){MP.prototype[t]=function(t){return function(){vi('In SVG mode painter not support method "'+t+'"')}}(t)}),Po("svg",MP),t.version="4.8.0",t.dependencies={zrender:"4.3.1"},t.PRIORITY=Ld,t.init=function(t,e,i){var n=mf(t);if(n)return n;var o=new Rd(t,e,i);return o.id="ec_"+cf++,uf[o.id]=o,Jo(t,ff,o.id),function(n){var o="__connectUpdateStatus";function a(t,e){for(var i=0;i<t.length;i++){t[i][o]=e}}Td(ef,function(t,e){n._messageCenter.on(e,function(t){if(hf[n.group]&&0!==n[o]){if(t&&t.escapeConnect)return;var e=n.makeActionFromEvent(t),i=[];Td(uf,function(t){t!==n&&t.group===n.group&&i.push(t)}),a(i,0),Td(i,function(t){1!==t[o]&&t.dispatchAction(e)}),a(i,2)}})})}(o),o},t.connect=function(e){if(L(e)){var t=e;e=null,Td(t,function(t){null!=t.group&&(e=t.group)}),e=e||"g_"+df++,Td(t,function(t){t.group=e})}return hf[e]=!0,e},t.disConnect=pf,t.disconnect=gf,t.dispose=function(t){"string"==typeof t?t=uf[t]:t instanceof Rd||(t=mf(t)),t instanceof Rd&&!t.isDisposed()&&t.dispose()},t.getInstanceByDom=mf,t.getInstanceById=function(t){return uf[t]},t.registerTheme=vf,t.registerPreprocessor=yf,t.registerProcessor=xf,t.registerPostUpdate=function(t){af.push(t)},t.registerAction=_f,t.registerCoordinateSystem=wf,t.getCoordinateSystemDimensions=function(t){var e=lh.get(t);if(e)return e.getDimensionsInfo?e.getDimensionsInfo():e.dimensions.slice()},t.registerLayout=bf,t.registerVisual=Sf,t.registerLoading=If,t.extendComponentModel=Tf,t.extendComponentView=Af,t.extendSeriesModel=Df,t.extendChartView=Cf,t.setCanvasCreator=function(t){f("createCanvas",t)},t.registerMap=function(t,e,i){Sd.registerMap(t,e,i)},t.getMap=function(t){var e=Sd.retrieveMap(t);return e&&e[0]&&{geoJson:e[0].geoJSON,specialAreas:e[0].specialAreas}},t.dataTool={},t.zrender=Oo,t.number=Ql,t.format=mu,t.throttle=Lc,t.helper=Sg,t.matrix=pe,t.vector=It,t.color=Je,t.parseGeoJSON=Cg,t.parseGeoJson=Wg,t.util=Hg,t.graphic=Zg,t.List=Yf,t.Model=Cl,t.Axis=Gg,t.env=v});
+ Permission to use, copy, modify, and/or distribute this software for any
+ purpose with or without fee is hereby granted.
+
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ PERFORMANCE OF THIS SOFTWARE.
+ ***************************************************************************** */var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(t,n)};function n(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}var i=function(){this.firefox=!1,this.ie=!1,this.edge=!1,this.newEdge=!1,this.weChat=!1},r=new function(){this.browser=new i,this.node=!1,this.wxa=!1,this.worker=!1,this.svgSupported=!1,this.touchEventsSupported=!1,this.pointerEventsSupported=!1,this.domSupported=!1,this.transformSupported=!1,this.transform3dSupported=!1,this.hasGlobalWindow="undefined"!=typeof window};"object"==typeof wx&&"function"==typeof wx.getSystemInfoSync?(r.wxa=!0,r.touchEventsSupported=!0):"undefined"==typeof document&&"undefined"!=typeof self?r.worker=!0:"undefined"==typeof navigator?(r.node=!0,r.svgSupported=!0):function(t,e){var n=e.browser,i=t.match(/Firefox\/([\d.]+)/),r=t.match(/MSIE\s([\d.]+)/)||t.match(/Trident\/.+?rv:(([\d.]+))/),o=t.match(/Edge?\/([\d.]+)/),a=/micromessenger/i.test(t);i&&(n.firefox=!0,n.version=i[1]);r&&(n.ie=!0,n.version=r[1]);o&&(n.edge=!0,n.version=o[1],n.newEdge=+o[1].split(".")[0]>18);a&&(n.weChat=!0);e.svgSupported="undefined"!=typeof SVGRect,e.touchEventsSupported="ontouchstart"in window&&!n.ie&&!n.edge,e.pointerEventsSupported="onpointerdown"in window&&(n.edge||n.ie&&+n.version>=11),e.domSupported="undefined"!=typeof document;var s=document.documentElement.style;e.transform3dSupported=(n.ie&&"transition"in s||n.edge||"WebKitCSSMatrix"in window&&"m11"in new WebKitCSSMatrix||"MozPerspective"in s)&&!("OTransition"in s),e.transformSupported=e.transform3dSupported||n.ie&&+n.version>=9}(navigator.userAgent,r);var o="sans-serif",a="12px sans-serif";var s,l,u=function(t){var e={};if("undefined"==typeof JSON)return e;for(var n=0;n<t.length;n++){var i=String.fromCharCode(n+32),r=(t.charCodeAt(n)-20)/100;e[i]=r}return e}("007LLmW'55;N0500LLLLLLLLLL00NNNLzWW\\\\WQb\\0FWLg\\bWb\\WQ\\WrWWQ000CL5LLFLL0LL**F*gLLLL5F0LF\\FFF5.5N"),h={createCanvas:function(){return"undefined"!=typeof document&&document.createElement("canvas")},measureText:function(t,e){if(!s){var n=h.createCanvas();s=n&&n.getContext("2d")}if(s)return l!==e&&(l=s.font=e||a),s.measureText(t);t=t||"";var i=/^([0-9]*?)px$/.exec(e=e||a),r=+(i&&i[1])||12,o=0;if(e.indexOf("mono")>=0)o=r*t.length;else for(var c=0;c<t.length;c++){var p=u[t[c]];o+=null==p?r:p*r}return{width:o}},loadImage:function(t,e,n){var i=new Image;return i.onload=e,i.onerror=n,i.src=t,i}};function c(t){for(var e in h)t[e]&&(h[e]=t[e])}var p=V(["Function","RegExp","Date","Error","CanvasGradient","CanvasPattern","Image","Canvas"],(function(t,e){return t["[object "+e+"]"]=!0,t}),{}),d=V(["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64"],(function(t,e){return t["[object "+e+"Array]"]=!0,t}),{}),f=Object.prototype.toString,g=Array.prototype,y=g.forEach,v=g.filter,m=g.slice,x=g.map,_=function(){}.constructor,b=_?_.prototype:null,w="__proto__",S=2311;function M(){return S++}function I(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];"undefined"!=typeof console&&console.error.apply(console,t)}function T(t){if(null==t||"object"!=typeof t)return t;var e=t,n=f.call(t);if("[object Array]"===n){if(!pt(t)){e=[];for(var i=0,r=t.length;i<r;i++)e[i]=T(t[i])}}else if(d[n]){if(!pt(t)){var o=t.constructor;if(o.from)e=o.from(t);else{e=new o(t.length);for(i=0,r=t.length;i<r;i++)e[i]=t[i]}}}else if(!p[n]&&!pt(t)&&!J(t))for(var a in e={},t)t.hasOwnProperty(a)&&a!==w&&(e[a]=T(t[a]));return e}function C(t,e,n){if(!q(e)||!q(t))return n?T(e):t;for(var i in e)if(e.hasOwnProperty(i)&&i!==w){var r=t[i],o=e[i];!q(o)||!q(r)||Y(o)||Y(r)||J(o)||J(r)||K(o)||K(r)||pt(o)||pt(r)?!n&&i in t||(t[i]=T(e[i])):C(r,o,n)}return t}function D(t,e){for(var n=t[0],i=1,r=t.length;i<r;i++)n=C(n,t[i],e);return n}function A(t,e){if(Object.assign)Object.assign(t,e);else for(var n in e)e.hasOwnProperty(n)&&n!==w&&(t[n]=e[n]);return t}function k(t,e,n){for(var i=G(e),r=0;r<i.length;r++){var o=i[r];(n?null!=e[o]:null==t[o])&&(t[o]=e[o])}return t}var L=h.createCanvas;function P(t,e){if(t){if(t.indexOf)return t.indexOf(e);for(var n=0,i=t.length;n<i;n++)if(t[n]===e)return n}return-1}function O(t,e){var n=t.prototype;function i(){}for(var r in i.prototype=e.prototype,t.prototype=new i,n)n.hasOwnProperty(r)&&(t.prototype[r]=n[r]);t.prototype.constructor=t,t.superClass=e}function R(t,e,n){if(t="prototype"in t?t.prototype:t,e="prototype"in e?e.prototype:e,Object.getOwnPropertyNames)for(var i=Object.getOwnPropertyNames(e),r=0;r<i.length;r++){var o=i[r];"constructor"!==o&&(n?null!=e[o]:null==t[o])&&(t[o]=e[o])}else k(t,e,n)}function N(t){return!!t&&("string"!=typeof t&&"number"==typeof t.length)}function E(t,e,n){if(t&&e)if(t.forEach&&t.forEach===y)t.forEach(e,n);else if(t.length===+t.length)for(var i=0,r=t.length;i<r;i++)e.call(n,t[i],i,t);else for(var o in t)t.hasOwnProperty(o)&&e.call(n,t[o],o,t)}function z(t,e,n){if(!t)return[];if(!e)return at(t);if(t.map&&t.map===x)return t.map(e,n);for(var i=[],r=0,o=t.length;r<o;r++)i.push(e.call(n,t[r],r,t));return i}function V(t,e,n,i){if(t&&e){for(var r=0,o=t.length;r<o;r++)n=e.call(i,n,t[r],r,t);return n}}function B(t,e,n){if(!t)return[];if(!e)return at(t);if(t.filter&&t.filter===v)return t.filter(e,n);for(var i=[],r=0,o=t.length;r<o;r++)e.call(n,t[r],r,t)&&i.push(t[r]);return i}function F(t,e,n){if(t&&e)for(var i=0,r=t.length;i<r;i++)if(e.call(n,t[i],i,t))return t[i]}function G(t){if(!t)return[];if(Object.keys)return Object.keys(t);var e=[];for(var n in t)t.hasOwnProperty(n)&&e.push(n);return e}var W=b&&U(b.bind)?b.call.bind(b.bind):function(t,e){for(var n=[],i=2;i<arguments.length;i++)n[i-2]=arguments[i];return function(){return t.apply(e,n.concat(m.call(arguments)))}};function H(t){for(var e=[],n=1;n<arguments.length;n++)e[n-1]=arguments[n];return function(){return t.apply(this,e.concat(m.call(arguments)))}}function Y(t){return Array.isArray?Array.isArray(t):"[object Array]"===f.call(t)}function U(t){return"function"==typeof t}function X(t){return"string"==typeof t}function Z(t){return"[object String]"===f.call(t)}function j(t){return"number"==typeof t}function q(t){var e=typeof t;return"function"===e||!!t&&"object"===e}function K(t){return!!p[f.call(t)]}function $(t){return!!d[f.call(t)]}function J(t){return"object"==typeof t&&"number"==typeof t.nodeType&&"object"==typeof t.ownerDocument}function Q(t){return null!=t.colorStops}function tt(t){return null!=t.image}function et(t){return"[object RegExp]"===f.call(t)}function nt(t){return t!=t}function it(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];for(var n=0,i=t.length;n<i;n++)if(null!=t[n])return t[n]}function rt(t,e){return null!=t?t:e}function ot(t,e,n){return null!=t?t:null!=e?e:n}function at(t){for(var e=[],n=1;n<arguments.length;n++)e[n-1]=arguments[n];return m.apply(t,e)}function st(t){if("number"==typeof t)return[t,t,t,t];var e=t.length;return 2===e?[t[0],t[1],t[0],t[1]]:3===e?[t[0],t[1],t[2],t[1]]:t}function lt(t,e){if(!t)throw new Error(e)}function ut(t){return null==t?null:"function"==typeof t.trim?t.trim():t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")}var ht="__ec_primitive__";function ct(t){t[ht]=!0}function pt(t){return t[ht]}var dt=function(){function t(e){this.data={};var n=Y(e);this.data={};var i=this;function r(t,e){n?i.set(t,e):i.set(e,t)}e instanceof t?e.each(r):e&&E(e,r)}return t.prototype.get=function(t){return this.data.hasOwnProperty(t)?this.data[t]:null},t.prototype.set=function(t,e){return this.data[t]=e},t.prototype.each=function(t,e){for(var n in this.data)this.data.hasOwnProperty(n)&&t.call(e,this.data[n],n)},t.prototype.keys=function(){return G(this.data)},t.prototype.removeKey=function(t){delete this.data[t]},t}();function ft(t){return new dt(t)}function gt(t,e){for(var n=new t.constructor(t.length+e.length),i=0;i<t.length;i++)n[i]=t[i];var r=t.length;for(i=0;i<e.length;i++)n[i+r]=e[i];return n}function yt(t,e){var n;if(Object.create)n=Object.create(t);else{var i=function(){};i.prototype=t,n=new i}return e&&A(n,e),n}function vt(t){var e=t.style;e.webkitUserSelect="none",e.userSelect="none",e.webkitTapHighlightColor="rgba(0,0,0,0)",e["-webkit-touch-callout"]="none"}function mt(t,e){return t.hasOwnProperty(e)}function xt(){}var _t=180/Math.PI,bt=Object.freeze({__proto__:null,guid:M,logError:I,clone:T,merge:C,mergeAll:D,extend:A,defaults:k,createCanvas:L,indexOf:P,inherits:O,mixin:R,isArrayLike:N,each:E,map:z,reduce:V,filter:B,find:F,keys:G,bind:W,curry:H,isArray:Y,isFunction:U,isString:X,isStringSafe:Z,isNumber:j,isObject:q,isBuiltInObject:K,isTypedArray:$,isDom:J,isGradientObject:Q,isImagePatternObject:tt,isRegExp:et,eqNaN:nt,retrieve:it,retrieve2:rt,retrieve3:ot,slice:at,normalizeCssArray:st,assert:lt,trim:ut,setAsPrimitive:ct,isPrimitive:pt,HashMap:dt,createHashMap:ft,concatArray:gt,createObject:yt,disableUserSelect:vt,hasOwn:mt,noop:xt,RADIAN_TO_DEGREE:_t});function wt(t,e){return null==t&&(t=0),null==e&&(e=0),[t,e]}function St(t,e){return t[0]=e[0],t[1]=e[1],t}function Mt(t){return[t[0],t[1]]}function It(t,e,n){return t[0]=e,t[1]=n,t}function Tt(t,e,n){return t[0]=e[0]+n[0],t[1]=e[1]+n[1],t}function Ct(t,e,n,i){return t[0]=e[0]+n[0]*i,t[1]=e[1]+n[1]*i,t}function Dt(t,e,n){return t[0]=e[0]-n[0],t[1]=e[1]-n[1],t}function At(t){return Math.sqrt(Lt(t))}var kt=At;function Lt(t){return t[0]*t[0]+t[1]*t[1]}var Pt=Lt;function Ot(t,e,n){return t[0]=e[0]*n,t[1]=e[1]*n,t}function Rt(t,e){var n=At(e);return 0===n?(t[0]=0,t[1]=0):(t[0]=e[0]/n,t[1]=e[1]/n),t}function Nt(t,e){return Math.sqrt((t[0]-e[0])*(t[0]-e[0])+(t[1]-e[1])*(t[1]-e[1]))}var Et=Nt;function zt(t,e){return(t[0]-e[0])*(t[0]-e[0])+(t[1]-e[1])*(t[1]-e[1])}var Vt=zt;function Bt(t,e,n,i){return t[0]=e[0]+i*(n[0]-e[0]),t[1]=e[1]+i*(n[1]-e[1]),t}function Ft(t,e,n){var i=e[0],r=e[1];return t[0]=n[0]*i+n[2]*r+n[4],t[1]=n[1]*i+n[3]*r+n[5],t}function Gt(t,e,n){return t[0]=Math.min(e[0],n[0]),t[1]=Math.min(e[1],n[1]),t}function Wt(t,e,n){return t[0]=Math.max(e[0],n[0]),t[1]=Math.max(e[1],n[1]),t}var Ht=Object.freeze({__proto__:null,create:wt,copy:St,clone:Mt,set:It,add:Tt,scaleAndAdd:Ct,sub:Dt,len:At,length:kt,lenSquare:Lt,lengthSquare:Pt,mul:function(t,e,n){return t[0]=e[0]*n[0],t[1]=e[1]*n[1],t},div:function(t,e,n){return t[0]=e[0]/n[0],t[1]=e[1]/n[1],t},dot:function(t,e){return t[0]*e[0]+t[1]*e[1]},scale:Ot,normalize:Rt,distance:Nt,dist:Et,distanceSquare:zt,distSquare:Vt,negate:function(t,e){return t[0]=-e[0],t[1]=-e[1],t},lerp:Bt,applyTransform:Ft,min:Gt,max:Wt}),Yt=function(t,e){this.target=t,this.topTarget=e&&e.topTarget},Ut=function(){function t(t){this.handler=t,t.on("mousedown",this._dragStart,this),t.on("mousemove",this._drag,this),t.on("mouseup",this._dragEnd,this)}return t.prototype._dragStart=function(t){for(var e=t.target;e&&!e.draggable;)e=e.parent||e.__hostTarget;e&&(this._draggingTarget=e,e.dragging=!0,this._x=t.offsetX,this._y=t.offsetY,this.handler.dispatchToElement(new Yt(e,t),"dragstart",t.event))},t.prototype._drag=function(t){var e=this._draggingTarget;if(e){var n=t.offsetX,i=t.offsetY,r=n-this._x,o=i-this._y;this._x=n,this._y=i,e.drift(r,o,t),this.handler.dispatchToElement(new Yt(e,t),"drag",t.event);var a=this.handler.findHover(n,i,e).target,s=this._dropTarget;this._dropTarget=a,e!==a&&(s&&a!==s&&this.handler.dispatchToElement(new Yt(s,t),"dragleave",t.event),a&&a!==s&&this.handler.dispatchToElement(new Yt(a,t),"dragenter",t.event))}},t.prototype._dragEnd=function(t){var e=this._draggingTarget;e&&(e.dragging=!1),this.handler.dispatchToElement(new Yt(e,t),"dragend",t.event),this._dropTarget&&this.handler.dispatchToElement(new Yt(this._dropTarget,t),"drop",t.event),this._draggingTarget=null,this._dropTarget=null},t}(),Xt=function(){function t(t){t&&(this._$eventProcessor=t)}return t.prototype.on=function(t,e,n,i){this._$handlers||(this._$handlers={});var r=this._$handlers;if("function"==typeof e&&(i=n,n=e,e=null),!n||!t)return this;var o=this._$eventProcessor;null!=e&&o&&o.normalizeQuery&&(e=o.normalizeQuery(e)),r[t]||(r[t]=[]);for(var a=0;a<r[t].length;a++)if(r[t][a].h===n)return this;var s={h:n,query:e,ctx:i||this,callAtLast:n.zrEventfulCallAtLast},l=r[t].length-1,u=r[t][l];return u&&u.callAtLast?r[t].splice(l,0,s):r[t].push(s),this},t.prototype.isSilent=function(t){var e=this._$handlers;return!e||!e[t]||!e[t].length},t.prototype.off=function(t,e){var n=this._$handlers;if(!n)return this;if(!t)return this._$handlers={},this;if(e){if(n[t]){for(var i=[],r=0,o=n[t].length;r<o;r++)n[t][r].h!==e&&i.push(n[t][r]);n[t]=i}n[t]&&0===n[t].length&&delete n[t]}else delete n[t];return this},t.prototype.trigger=function(t){for(var e=[],n=1;n<arguments.length;n++)e[n-1]=arguments[n];if(!this._$handlers)return this;var i=this._$handlers[t],r=this._$eventProcessor;if(i)for(var o=e.length,a=i.length,s=0;s<a;s++){var l=i[s];if(!r||!r.filter||null==l.query||r.filter(t,l.query))switch(o){case 0:l.h.call(l.ctx);break;case 1:l.h.call(l.ctx,e[0]);break;case 2:l.h.call(l.ctx,e[0],e[1]);break;default:l.h.apply(l.ctx,e)}}return r&&r.afterTrigger&&r.afterTrigger(t),this},t.prototype.triggerWithContext=function(t){for(var e=[],n=1;n<arguments.length;n++)e[n-1]=arguments[n];if(!this._$handlers)return this;var i=this._$handlers[t],r=this._$eventProcessor;if(i)for(var o=e.length,a=e[o-1],s=i.length,l=0;l<s;l++){var u=i[l];if(!r||!r.filter||null==u.query||r.filter(t,u.query))switch(o){case 0:u.h.call(a);break;case 1:u.h.call(a,e[0]);break;case 2:u.h.call(a,e[0],e[1]);break;default:u.h.apply(a,e.slice(1,o-1))}}return r&&r.afterTrigger&&r.afterTrigger(t),this},t}(),Zt=Math.log(2);function jt(t,e,n,i,r,o){var a=i+"-"+r,s=t.length;if(o.hasOwnProperty(a))return o[a];if(1===e){var l=Math.round(Math.log((1<<s)-1&~r)/Zt);return t[n][l]}for(var u=i|1<<n,h=n+1;i&1<<h;)h++;for(var c=0,p=0,d=0;p<s;p++){var f=1<<p;f&r||(c+=(d%2?-1:1)*t[n][p]*jt(t,e-1,h,u,r|f,o),d++)}return o[a]=c,c}function qt(t,e){var n=[[t[0],t[1],1,0,0,0,-e[0]*t[0],-e[0]*t[1]],[0,0,0,t[0],t[1],1,-e[1]*t[0],-e[1]*t[1]],[t[2],t[3],1,0,0,0,-e[2]*t[2],-e[2]*t[3]],[0,0,0,t[2],t[3],1,-e[3]*t[2],-e[3]*t[3]],[t[4],t[5],1,0,0,0,-e[4]*t[4],-e[4]*t[5]],[0,0,0,t[4],t[5],1,-e[5]*t[4],-e[5]*t[5]],[t[6],t[7],1,0,0,0,-e[6]*t[6],-e[6]*t[7]],[0,0,0,t[6],t[7],1,-e[7]*t[6],-e[7]*t[7]]],i={},r=jt(n,8,0,0,0,i);if(0!==r){for(var o=[],a=0;a<8;a++)for(var s=0;s<8;s++)null==o[s]&&(o[s]=0),o[s]+=((a+s)%2?-1:1)*jt(n,7,0===a?1:0,1<<a,1<<s,i)/r*e[a];return function(t,e,n){var i=e*o[6]+n*o[7]+1;t[0]=(e*o[0]+n*o[1]+o[2])/i,t[1]=(e*o[3]+n*o[4]+o[5])/i}}}var Kt=[];function $t(t,e,n,i,o){if(e.getBoundingClientRect&&r.domSupported&&!Jt(e)){var a=e.___zrEVENTSAVED||(e.___zrEVENTSAVED={}),s=function(t,e,n){for(var i=n?"invTrans":"trans",r=e[i],o=e.srcCoords,a=[],s=[],l=!0,u=0;u<4;u++){var h=t[u].getBoundingClientRect(),c=2*u,p=h.left,d=h.top;a.push(p,d),l=l&&o&&p===o[c]&&d===o[c+1],s.push(t[u].offsetLeft,t[u].offsetTop)}return l&&r?r:(e.srcCoords=a,e[i]=n?qt(s,a):qt(a,s))}(function(t,e){var n=e.markers;if(n)return n;n=e.markers=[];for(var i=["left","right"],r=["top","bottom"],o=0;o<4;o++){var a=document.createElement("div"),s=o%2,l=(o>>1)%2;a.style.cssText=["position: absolute","visibility: hidden","padding: 0","margin: 0","border-width: 0","user-select: none","width:0","height:0",i[s]+":0",r[l]+":0",i[1-s]+":auto",r[1-l]+":auto",""].join("!important;"),t.appendChild(a),n.push(a)}return n}(e,a),a,o);if(s)return s(t,n,i),!0}return!1}function Jt(t){return"CANVAS"===t.nodeName.toUpperCase()}var Qt=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,te=[],ee=r.browser.firefox&&+r.browser.version.split(".")[0]<39;function ne(t,e,n,i){return n=n||{},i?ie(t,e,n):ee&&null!=e.layerX&&e.layerX!==e.offsetX?(n.zrX=e.layerX,n.zrY=e.layerY):null!=e.offsetX?(n.zrX=e.offsetX,n.zrY=e.offsetY):ie(t,e,n),n}function ie(t,e,n){if(r.domSupported&&t.getBoundingClientRect){var i=e.clientX,o=e.clientY;if(Jt(t)){var a=t.getBoundingClientRect();return n.zrX=i-a.left,void(n.zrY=o-a.top)}if($t(te,t,i,o))return n.zrX=te[0],void(n.zrY=te[1])}n.zrX=n.zrY=0}function re(t){return t||window.event}function oe(t,e,n){if(null!=(e=re(e)).zrX)return e;var i=e.type;if(i&&i.indexOf("touch")>=0){var r="touchend"!==i?e.targetTouches[0]:e.changedTouches[0];r&&ne(t,r,e,n)}else{ne(t,e,e,n);var o=function(t){var e=t.wheelDelta;if(e)return e;var n=t.deltaX,i=t.deltaY;if(null==n||null==i)return e;return 3*(0!==i?Math.abs(i):Math.abs(n))*(i>0?-1:i<0?1:n>0?-1:1)}(e);e.zrDelta=o?o/120:-(e.detail||0)/3}var a=e.button;return null==e.which&&void 0!==a&&Qt.test(e.type)&&(e.which=1&a?1:2&a?3:4&a?2:0),e}function ae(t,e,n,i){t.addEventListener(e,n,i)}var se=function(t){t.preventDefault(),t.stopPropagation(),t.cancelBubble=!0};function le(t){return 2===t.which||3===t.which}var ue=function(){function t(){this._track=[]}return t.prototype.recognize=function(t,e,n){return this._doTrack(t,e,n),this._recognize(t)},t.prototype.clear=function(){return this._track.length=0,this},t.prototype._doTrack=function(t,e,n){var i=t.touches;if(i){for(var r={points:[],touches:[],target:e,event:t},o=0,a=i.length;o<a;o++){var s=i[o],l=ne(n,s,{});r.points.push([l.zrX,l.zrY]),r.touches.push(s)}this._track.push(r)}},t.prototype._recognize=function(t){for(var e in ce)if(ce.hasOwnProperty(e)){var n=ce[e](this._track,t);if(n)return n}},t}();function he(t){var e=t[1][0]-t[0][0],n=t[1][1]-t[0][1];return Math.sqrt(e*e+n*n)}var ce={pinch:function(t,e){var n=t.length;if(n){var i,r=(t[n-1]||{}).points,o=(t[n-2]||{}).points||r;if(o&&o.length>1&&r&&r.length>1){var a=he(r)/he(o);!isFinite(a)&&(a=1),e.pinchScale=a;var s=[((i=r)[0][0]+i[1][0])/2,(i[0][1]+i[1][1])/2];return e.pinchX=s[0],e.pinchY=s[1],{type:"pinch",target:t[0].target,event:e}}}}},pe="silent";function de(){se(this.event)}var fe=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.handler=null,e}return n(e,t),e.prototype.dispose=function(){},e.prototype.setCursor=function(){},e}(Xt),ge=function(t,e){this.x=t,this.y=e},ye=["click","dblclick","mousewheel","mouseout","mouseup","mousedown","mousemove","contextmenu"],ve=function(t){function e(e,n,i,r){var o=t.call(this)||this;return o._hovered=new ge(0,0),o.storage=e,o.painter=n,o.painterRoot=r,i=i||new fe,o.proxy=null,o.setHandlerProxy(i),o._draggingMgr=new Ut(o),o}return n(e,t),e.prototype.setHandlerProxy=function(t){this.proxy&&this.proxy.dispose(),t&&(E(ye,(function(e){t.on&&t.on(e,this[e],this)}),this),t.handler=this),this.proxy=t},e.prototype.mousemove=function(t){var e=t.zrX,n=t.zrY,i=xe(this,e,n),r=this._hovered,o=r.target;o&&!o.__zr&&(o=(r=this.findHover(r.x,r.y)).target);var a=this._hovered=i?new ge(e,n):this.findHover(e,n),s=a.target,l=this.proxy;l.setCursor&&l.setCursor(s?s.cursor:"default"),o&&s!==o&&this.dispatchToElement(r,"mouseout",t),this.dispatchToElement(a,"mousemove",t),s&&s!==o&&this.dispatchToElement(a,"mouseover",t)},e.prototype.mouseout=function(t){var e=t.zrEventControl;"only_globalout"!==e&&this.dispatchToElement(this._hovered,"mouseout",t),"no_globalout"!==e&&this.trigger("globalout",{type:"globalout",event:t})},e.prototype.resize=function(){this._hovered=new ge(0,0)},e.prototype.dispatch=function(t,e){var n=this[t];n&&n.call(this,e)},e.prototype.dispose=function(){this.proxy.dispose(),this.storage=null,this.proxy=null,this.painter=null},e.prototype.setCursorStyle=function(t){var e=this.proxy;e.setCursor&&e.setCursor(t)},e.prototype.dispatchToElement=function(t,e,n){var i=(t=t||{}).target;if(!i||!i.silent){for(var r="on"+e,o=function(t,e,n){return{type:t,event:n,target:e.target,topTarget:e.topTarget,cancelBubble:!1,offsetX:n.zrX,offsetY:n.zrY,gestureEvent:n.gestureEvent,pinchX:n.pinchX,pinchY:n.pinchY,pinchScale:n.pinchScale,wheelDelta:n.zrDelta,zrByTouch:n.zrByTouch,which:n.which,stop:de}}(e,t,n);i&&(i[r]&&(o.cancelBubble=!!i[r].call(i,o)),i.trigger(e,o),i=i.__hostTarget?i.__hostTarget:i.parent,!o.cancelBubble););o.cancelBubble||(this.trigger(e,o),this.painter&&this.painter.eachOtherLayer&&this.painter.eachOtherLayer((function(t){"function"==typeof t[r]&&t[r].call(t,o),t.trigger&&t.trigger(e,o)})))}},e.prototype.findHover=function(t,e,n){for(var i=this.storage.getDisplayList(),r=new ge(t,e),o=i.length-1;o>=0;o--){var a=void 0;if(i[o]!==n&&!i[o].ignore&&(a=me(i[o],t,e))&&(!r.topTarget&&(r.topTarget=i[o]),a!==pe)){r.target=i[o];break}}return r},e.prototype.processGesture=function(t,e){this._gestureMgr||(this._gestureMgr=new ue);var n=this._gestureMgr;"start"===e&&n.clear();var i=n.recognize(t,this.findHover(t.zrX,t.zrY,null).target,this.proxy.dom);if("end"===e&&n.clear(),i){var r=i.type;t.gestureEvent=r;var o=new ge;o.target=i.target,this.dispatchToElement(o,r,i.event)}},e}(Xt);function me(t,e,n){if(t[t.rectHover?"rectContain":"contain"](e,n)){for(var i=t,r=void 0,o=!1;i;){if(i.ignoreClip&&(o=!0),!o){var a=i.getClipPath();if(a&&!a.contain(e,n))return!1;i.silent&&(r=!0)}var s=i.__hostTarget;i=s||i.parent}return!r||pe}return!1}function xe(t,e,n){var i=t.painter;return e<0||e>i.getWidth()||n<0||n>i.getHeight()}E(["click","mousedown","mouseup","mousewheel","dblclick","contextmenu"],(function(t){ve.prototype[t]=function(e){var n,i,r=e.zrX,o=e.zrY,a=xe(this,r,o);if("mouseup"===t&&a||(i=(n=this.findHover(r,o)).target),"mousedown"===t)this._downEl=i,this._downPoint=[e.zrX,e.zrY],this._upEl=i;else if("mouseup"===t)this._upEl=i;else if("click"===t){if(this._downEl!==this._upEl||!this._downPoint||Et(this._downPoint,[e.zrX,e.zrY])>4)return;this._downPoint=null}this.dispatchToElement(n,t,e)}}));function _e(t,e,n,i){var r=e+1;if(r===n)return 1;if(i(t[r++],t[e])<0){for(;r<n&&i(t[r],t[r-1])<0;)r++;!function(t,e,n){n--;for(;e<n;){var i=t[e];t[e++]=t[n],t[n--]=i}}(t,e,r)}else for(;r<n&&i(t[r],t[r-1])>=0;)r++;return r-e}function be(t,e,n,i,r){for(i===e&&i++;i<n;i++){for(var o,a=t[i],s=e,l=i;s<l;)r(a,t[o=s+l>>>1])<0?l=o:s=o+1;var u=i-s;switch(u){case 3:t[s+3]=t[s+2];case 2:t[s+2]=t[s+1];case 1:t[s+1]=t[s];break;default:for(;u>0;)t[s+u]=t[s+u-1],u--}t[s]=a}}function we(t,e,n,i,r,o){var a=0,s=0,l=1;if(o(t,e[n+r])>0){for(s=i-r;l<s&&o(t,e[n+r+l])>0;)a=l,(l=1+(l<<1))<=0&&(l=s);l>s&&(l=s),a+=r,l+=r}else{for(s=r+1;l<s&&o(t,e[n+r-l])<=0;)a=l,(l=1+(l<<1))<=0&&(l=s);l>s&&(l=s);var u=a;a=r-l,l=r-u}for(a++;a<l;){var h=a+(l-a>>>1);o(t,e[n+h])>0?a=h+1:l=h}return l}function Se(t,e,n,i,r,o){var a=0,s=0,l=1;if(o(t,e[n+r])<0){for(s=r+1;l<s&&o(t,e[n+r-l])<0;)a=l,(l=1+(l<<1))<=0&&(l=s);l>s&&(l=s);var u=a;a=r-l,l=r-u}else{for(s=i-r;l<s&&o(t,e[n+r+l])>=0;)a=l,(l=1+(l<<1))<=0&&(l=s);l>s&&(l=s),a+=r,l+=r}for(a++;a<l;){var h=a+(l-a>>>1);o(t,e[n+h])<0?l=h:a=h+1}return l}function Me(t,e){var n,i,r=7,o=0;t.length;var a=[];function s(s){var l=n[s],u=i[s],h=n[s+1],c=i[s+1];i[s]=u+c,s===o-3&&(n[s+1]=n[s+2],i[s+1]=i[s+2]),o--;var p=Se(t[h],t,l,u,0,e);l+=p,0!==(u-=p)&&0!==(c=we(t[l+u-1],t,h,c,c-1,e))&&(u<=c?function(n,i,o,s){var l=0;for(l=0;l<i;l++)a[l]=t[n+l];var u=0,h=o,c=n;if(t[c++]=t[h++],0==--s){for(l=0;l<i;l++)t[c+l]=a[u+l];return}if(1===i){for(l=0;l<s;l++)t[c+l]=t[h+l];return void(t[c+s]=a[u])}var p,d,f,g=r;for(;;){p=0,d=0,f=!1;do{if(e(t[h],a[u])<0){if(t[c++]=t[h++],d++,p=0,0==--s){f=!0;break}}else if(t[c++]=a[u++],p++,d=0,1==--i){f=!0;break}}while((p|d)<g);if(f)break;do{if(0!==(p=Se(t[h],a,u,i,0,e))){for(l=0;l<p;l++)t[c+l]=a[u+l];if(c+=p,u+=p,(i-=p)<=1){f=!0;break}}if(t[c++]=t[h++],0==--s){f=!0;break}if(0!==(d=we(a[u],t,h,s,0,e))){for(l=0;l<d;l++)t[c+l]=t[h+l];if(c+=d,h+=d,0===(s-=d)){f=!0;break}}if(t[c++]=a[u++],1==--i){f=!0;break}g--}while(p>=7||d>=7);if(f)break;g<0&&(g=0),g+=2}if((r=g)<1&&(r=1),1===i){for(l=0;l<s;l++)t[c+l]=t[h+l];t[c+s]=a[u]}else{if(0===i)throw new Error;for(l=0;l<i;l++)t[c+l]=a[u+l]}}(l,u,h,c):function(n,i,o,s){var l=0;for(l=0;l<s;l++)a[l]=t[o+l];var u=n+i-1,h=s-1,c=o+s-1,p=0,d=0;if(t[c--]=t[u--],0==--i){for(p=c-(s-1),l=0;l<s;l++)t[p+l]=a[l];return}if(1===s){for(d=(c-=i)+1,p=(u-=i)+1,l=i-1;l>=0;l--)t[d+l]=t[p+l];return void(t[c]=a[h])}var f=r;for(;;){var g=0,y=0,v=!1;do{if(e(a[h],t[u])<0){if(t[c--]=t[u--],g++,y=0,0==--i){v=!0;break}}else if(t[c--]=a[h--],y++,g=0,1==--s){v=!0;break}}while((g|y)<f);if(v)break;do{if(0!==(g=i-Se(a[h],t,n,i,i-1,e))){for(i-=g,d=(c-=g)+1,p=(u-=g)+1,l=g-1;l>=0;l--)t[d+l]=t[p+l];if(0===i){v=!0;break}}if(t[c--]=a[h--],1==--s){v=!0;break}if(0!==(y=s-we(t[u],a,0,s,s-1,e))){for(s-=y,d=(c-=y)+1,p=(h-=y)+1,l=0;l<y;l++)t[d+l]=a[p+l];if(s<=1){v=!0;break}}if(t[c--]=t[u--],0==--i){v=!0;break}f--}while(g>=7||y>=7);if(v)break;f<0&&(f=0),f+=2}(r=f)<1&&(r=1);if(1===s){for(d=(c-=i)+1,p=(u-=i)+1,l=i-1;l>=0;l--)t[d+l]=t[p+l];t[c]=a[h]}else{if(0===s)throw new Error;for(p=c-(s-1),l=0;l<s;l++)t[p+l]=a[l]}}(l,u,h,c))}return n=[],i=[],{mergeRuns:function(){for(;o>1;){var t=o-2;if(t>=1&&i[t-1]<=i[t]+i[t+1]||t>=2&&i[t-2]<=i[t]+i[t-1])i[t-1]<i[t+1]&&t--;else if(i[t]>i[t+1])break;s(t)}},forceMergeRuns:function(){for(;o>1;){var t=o-2;t>0&&i[t-1]<i[t+1]&&t--,s(t)}},pushRun:function(t,e){n[o]=t,i[o]=e,o+=1}}}function Ie(t,e,n,i){n||(n=0),i||(i=t.length);var r=i-n;if(!(r<2)){var o=0;if(r<32)be(t,n,i,n+(o=_e(t,n,i,e)),e);else{var a=Me(t,e),s=function(t){for(var e=0;t>=32;)e|=1&t,t>>=1;return t+e}(r);do{if((o=_e(t,n,i,e))<s){var l=r;l>s&&(l=s),be(t,n,n+l,n+o,e),o=l}a.pushRun(n,o),a.mergeRuns(),r-=o,n+=o}while(0!==r);a.forceMergeRuns()}}}var Te=!1;function Ce(){Te||(Te=!0,console.warn("z / z2 / zlevel of displayable is invalid, which may cause unexpected errors"))}function De(t,e){return t.zlevel===e.zlevel?t.z===e.z?t.z2-e.z2:t.z-e.z:t.zlevel-e.zlevel}var Ae=function(){function t(){this._roots=[],this._displayList=[],this._displayListLen=0,this.displayableSortFunc=De}return t.prototype.traverse=function(t,e){for(var n=0;n<this._roots.length;n++)this._roots[n].traverse(t,e)},t.prototype.getDisplayList=function(t,e){e=e||!1;var n=this._displayList;return!t&&n.length||this.updateDisplayList(e),n},t.prototype.updateDisplayList=function(t){this._displayListLen=0;for(var e=this._roots,n=this._displayList,i=0,r=e.length;i<r;i++)this._updateAndAddDisplayable(e[i],null,t);n.length=this._displayListLen,Ie(n,De)},t.prototype._updateAndAddDisplayable=function(t,e,n){if(!t.ignore||n){t.beforeUpdate(),t.update(),t.afterUpdate();var i=t.getClipPath();if(t.ignoreClip)e=null;else if(i){e=e?e.slice():[];for(var r=i,o=t;r;)r.parent=o,r.updateTransform(),e.push(r),o=r,r=r.getClipPath()}if(t.childrenRef){for(var a=t.childrenRef(),s=0;s<a.length;s++){var l=a[s];t.__dirty&&(l.__dirty|=1),this._updateAndAddDisplayable(l,e,n)}t.__dirty=0}else{var u=t;e&&e.length?u.__clipPaths=e:u.__clipPaths&&u.__clipPaths.length>0&&(u.__clipPaths=[]),isNaN(u.z)&&(Ce(),u.z=0),isNaN(u.z2)&&(Ce(),u.z2=0),isNaN(u.zlevel)&&(Ce(),u.zlevel=0),this._displayList[this._displayListLen++]=u}var h=t.getDecalElement&&t.getDecalElement();h&&this._updateAndAddDisplayable(h,e,n);var c=t.getTextGuideLine();c&&this._updateAndAddDisplayable(c,e,n);var p=t.getTextContent();p&&this._updateAndAddDisplayable(p,e,n)}},t.prototype.addRoot=function(t){t.__zr&&t.__zr.storage===this||this._roots.push(t)},t.prototype.delRoot=function(t){if(t instanceof Array)for(var e=0,n=t.length;e<n;e++)this.delRoot(t[e]);else{var i=P(this._roots,t);i>=0&&this._roots.splice(i,1)}},t.prototype.delAllRoots=function(){this._roots=[],this._displayList=[],this._displayListLen=0},t.prototype.getRoots=function(){return this._roots},t.prototype.dispose=function(){this._displayList=null,this._roots=null},t}(),ke=r.hasGlobalWindow&&(window.requestAnimationFrame&&window.requestAnimationFrame.bind(window)||window.msRequestAnimationFrame&&window.msRequestAnimationFrame.bind(window)||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame)||function(t){return setTimeout(t,16)},Le={linear:function(t){return t},quadraticIn:function(t){return t*t},quadraticOut:function(t){return t*(2-t)},quadraticInOut:function(t){return(t*=2)<1?.5*t*t:-.5*(--t*(t-2)-1)},cubicIn:function(t){return t*t*t},cubicOut:function(t){return--t*t*t+1},cubicInOut:function(t){return(t*=2)<1?.5*t*t*t:.5*((t-=2)*t*t+2)},quarticIn:function(t){return t*t*t*t},quarticOut:function(t){return 1- --t*t*t*t},quarticInOut:function(t){return(t*=2)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2)},quinticIn:function(t){return t*t*t*t*t},quinticOut:function(t){return--t*t*t*t*t+1},quinticInOut:function(t){return(t*=2)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)},sinusoidalIn:function(t){return 1-Math.cos(t*Math.PI/2)},sinusoidalOut:function(t){return Math.sin(t*Math.PI/2)},sinusoidalInOut:function(t){return.5*(1-Math.cos(Math.PI*t))},exponentialIn:function(t){return 0===t?0:Math.pow(1024,t-1)},exponentialOut:function(t){return 1===t?1:1-Math.pow(2,-10*t)},exponentialInOut:function(t){return 0===t?0:1===t?1:(t*=2)<1?.5*Math.pow(1024,t-1):.5*(2-Math.pow(2,-10*(t-1)))},circularIn:function(t){return 1-Math.sqrt(1-t*t)},circularOut:function(t){return Math.sqrt(1- --t*t)},circularInOut:function(t){return(t*=2)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},elasticIn:function(t){var e,n=.1;return 0===t?0:1===t?1:(!n||n<1?(n=1,e=.1):e=.4*Math.asin(1/n)/(2*Math.PI),-n*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/.4))},elasticOut:function(t){var e,n=.1;return 0===t?0:1===t?1:(!n||n<1?(n=1,e=.1):e=.4*Math.asin(1/n)/(2*Math.PI),n*Math.pow(2,-10*t)*Math.sin((t-e)*(2*Math.PI)/.4)+1)},elasticInOut:function(t){var e,n=.1,i=.4;return 0===t?0:1===t?1:(!n||n<1?(n=1,e=.1):e=i*Math.asin(1/n)/(2*Math.PI),(t*=2)<1?n*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/i)*-.5:n*Math.pow(2,-10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/i)*.5+1)},backIn:function(t){var e=1.70158;return t*t*((e+1)*t-e)},backOut:function(t){var e=1.70158;return--t*t*((e+1)*t+e)+1},backInOut:function(t){var e=2.5949095;return(t*=2)<1?t*t*((e+1)*t-e)*.5:.5*((t-=2)*t*((e+1)*t+e)+2)},bounceIn:function(t){return 1-Le.bounceOut(1-t)},bounceOut:function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},bounceInOut:function(t){return t<.5?.5*Le.bounceIn(2*t):.5*Le.bounceOut(2*t-1)+.5}},Pe=Math.pow,Oe=Math.sqrt,Re=1e-8,Ne=1e-4,Ee=Oe(3),ze=1/3,Ve=wt(),Be=wt(),Fe=wt();function Ge(t){return t>-1e-8&&t<Re}function We(t){return t>Re||t<-1e-8}function He(t,e,n,i,r){var o=1-r;return o*o*(o*t+3*r*e)+r*r*(r*i+3*o*n)}function Ye(t,e,n,i,r){var o=1-r;return 3*(((e-t)*o+2*(n-e)*r)*o+(i-n)*r*r)}function Ue(t,e,n,i,r,o){var a=i+3*(e-n)-t,s=3*(n-2*e+t),l=3*(e-t),u=t-r,h=s*s-3*a*l,c=s*l-9*a*u,p=l*l-3*s*u,d=0;if(Ge(h)&&Ge(c)){if(Ge(s))o[0]=0;else(M=-l/s)>=0&&M<=1&&(o[d++]=M)}else{var f=c*c-4*h*p;if(Ge(f)){var g=c/h,y=-g/2;(M=-s/a+g)>=0&&M<=1&&(o[d++]=M),y>=0&&y<=1&&(o[d++]=y)}else if(f>0){var v=Oe(f),m=h*s+1.5*a*(-c+v),x=h*s+1.5*a*(-c-v);(M=(-s-((m=m<0?-Pe(-m,ze):Pe(m,ze))+(x=x<0?-Pe(-x,ze):Pe(x,ze))))/(3*a))>=0&&M<=1&&(o[d++]=M)}else{var _=(2*h*s-3*a*c)/(2*Oe(h*h*h)),b=Math.acos(_)/3,w=Oe(h),S=Math.cos(b),M=(-s-2*w*S)/(3*a),I=(y=(-s+w*(S+Ee*Math.sin(b)))/(3*a),(-s+w*(S-Ee*Math.sin(b)))/(3*a));M>=0&&M<=1&&(o[d++]=M),y>=0&&y<=1&&(o[d++]=y),I>=0&&I<=1&&(o[d++]=I)}}return d}function Xe(t,e,n,i,r){var o=6*n-12*e+6*t,a=9*e+3*i-3*t-9*n,s=3*e-3*t,l=0;if(Ge(a)){if(We(o))(h=-s/o)>=0&&h<=1&&(r[l++]=h)}else{var u=o*o-4*a*s;if(Ge(u))r[0]=-o/(2*a);else if(u>0){var h,c=Oe(u),p=(-o-c)/(2*a);(h=(-o+c)/(2*a))>=0&&h<=1&&(r[l++]=h),p>=0&&p<=1&&(r[l++]=p)}}return l}function Ze(t,e,n,i,r,o){var a=(e-t)*r+t,s=(n-e)*r+e,l=(i-n)*r+n,u=(s-a)*r+a,h=(l-s)*r+s,c=(h-u)*r+u;o[0]=t,o[1]=a,o[2]=u,o[3]=c,o[4]=c,o[5]=h,o[6]=l,o[7]=i}function je(t,e,n,i,r,o,a,s,l,u,h){var c,p,d,f,g,y=.005,v=1/0;Ve[0]=l,Ve[1]=u;for(var m=0;m<1;m+=.05)Be[0]=He(t,n,r,a,m),Be[1]=He(e,i,o,s,m),(f=Vt(Ve,Be))<v&&(c=m,v=f);v=1/0;for(var x=0;x<32&&!(y<Ne);x++)p=c-y,d=c+y,Be[0]=He(t,n,r,a,p),Be[1]=He(e,i,o,s,p),f=Vt(Be,Ve),p>=0&&f<v?(c=p,v=f):(Fe[0]=He(t,n,r,a,d),Fe[1]=He(e,i,o,s,d),g=Vt(Fe,Ve),d<=1&&g<v?(c=d,v=g):y*=.5);return h&&(h[0]=He(t,n,r,a,c),h[1]=He(e,i,o,s,c)),Oe(v)}function qe(t,e,n,i,r,o,a,s,l){for(var u=t,h=e,c=0,p=1/l,d=1;d<=l;d++){var f=d*p,g=He(t,n,r,a,f),y=He(e,i,o,s,f),v=g-u,m=y-h;c+=Math.sqrt(v*v+m*m),u=g,h=y}return c}function Ke(t,e,n,i){var r=1-i;return r*(r*t+2*i*e)+i*i*n}function $e(t,e,n,i){return 2*((1-i)*(e-t)+i*(n-e))}function Je(t,e,n){var i=t+n-2*e;return 0===i?.5:(t-e)/i}function Qe(t,e,n,i,r){var o=(e-t)*i+t,a=(n-e)*i+e,s=(a-o)*i+o;r[0]=t,r[1]=o,r[2]=s,r[3]=s,r[4]=a,r[5]=n}function tn(t,e,n,i,r,o,a,s,l){var u,h=.005,c=1/0;Ve[0]=a,Ve[1]=s;for(var p=0;p<1;p+=.05){Be[0]=Ke(t,n,r,p),Be[1]=Ke(e,i,o,p),(y=Vt(Ve,Be))<c&&(u=p,c=y)}c=1/0;for(var d=0;d<32&&!(h<Ne);d++){var f=u-h,g=u+h;Be[0]=Ke(t,n,r,f),Be[1]=Ke(e,i,o,f);var y=Vt(Be,Ve);if(f>=0&&y<c)u=f,c=y;else{Fe[0]=Ke(t,n,r,g),Fe[1]=Ke(e,i,o,g);var v=Vt(Fe,Ve);g<=1&&v<c?(u=g,c=v):h*=.5}}return l&&(l[0]=Ke(t,n,r,u),l[1]=Ke(e,i,o,u)),Oe(c)}function en(t,e,n,i,r,o,a){for(var s=t,l=e,u=0,h=1/a,c=1;c<=a;c++){var p=c*h,d=Ke(t,n,r,p),f=Ke(e,i,o,p),g=d-s,y=f-l;u+=Math.sqrt(g*g+y*y),s=d,l=f}return u}var nn=/cubic-bezier\(([0-9,\.e ]+)\)/;function rn(t){var e=t&&nn.exec(t);if(e){var n=e[1].split(","),i=+ut(n[0]),r=+ut(n[1]),o=+ut(n[2]),a=+ut(n[3]);if(isNaN(i+r+o+a))return;var s=[];return function(t){return t<=0?0:t>=1?1:Ue(0,i,o,1,t,s)&&He(0,r,a,1,s[0])}}}var on=function(){function t(t){this._inited=!1,this._startTime=0,this._pausedTime=0,this._paused=!1,this._life=t.life||1e3,this._delay=t.delay||0,this.loop=t.loop||!1,this.onframe=t.onframe||xt,this.ondestroy=t.ondestroy||xt,this.onrestart=t.onrestart||xt,t.easing&&this.setEasing(t.easing)}return t.prototype.step=function(t,e){if(this._inited||(this._startTime=t+this._delay,this._inited=!0),!this._paused){var n=this._life,i=t-this._startTime-this._pausedTime,r=i/n;r<0&&(r=0),r=Math.min(r,1);var o=this.easingFunc,a=o?o(r):r;if(this.onframe(a),1===r){if(!this.loop)return!0;var s=i%n;this._startTime=t-s,this._pausedTime=0,this.onrestart()}return!1}this._pausedTime+=e},t.prototype.pause=function(){this._paused=!0},t.prototype.resume=function(){this._paused=!1},t.prototype.setEasing=function(t){this.easing=t,this.easingFunc=U(t)?t:Le[t]||rn(t)},t}(),an=function(t){this.value=t},sn=function(){function t(){this._len=0}return t.prototype.insert=function(t){var e=new an(t);return this.insertEntry(e),e},t.prototype.insertEntry=function(t){this.head?(this.tail.next=t,t.prev=this.tail,t.next=null,this.tail=t):this.head=this.tail=t,this._len++},t.prototype.remove=function(t){var e=t.prev,n=t.next;e?e.next=n:this.head=n,n?n.prev=e:this.tail=e,t.next=t.prev=null,this._len--},t.prototype.len=function(){return this._len},t.prototype.clear=function(){this.head=this.tail=null,this._len=0},t}(),ln=function(){function t(t){this._list=new sn,this._maxSize=10,this._map={},this._maxSize=t}return t.prototype.put=function(t,e){var n=this._list,i=this._map,r=null;if(null==i[t]){var o=n.len(),a=this._lastRemovedEntry;if(o>=this._maxSize&&o>0){var s=n.head;n.remove(s),delete i[s.key],r=s.value,this._lastRemovedEntry=s}a?a.value=e:a=new an(e),a.key=t,n.insertEntry(a),i[t]=a}return r},t.prototype.get=function(t){var e=this._map[t],n=this._list;if(null!=e)return e!==n.tail&&(n.remove(e),n.insertEntry(e)),e.value},t.prototype.clear=function(){this._list.clear(),this._map={}},t.prototype.len=function(){return this._list.len()},t}(),un={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]};function hn(t){return(t=Math.round(t))<0?0:t>255?255:t}function cn(t){return t<0?0:t>1?1:t}function pn(t){var e=t;return e.length&&"%"===e.charAt(e.length-1)?hn(parseFloat(e)/100*255):hn(parseInt(e,10))}function dn(t){var e=t;return e.length&&"%"===e.charAt(e.length-1)?cn(parseFloat(e)/100):cn(parseFloat(e))}function fn(t,e,n){return n<0?n+=1:n>1&&(n-=1),6*n<1?t+(e-t)*n*6:2*n<1?e:3*n<2?t+(e-t)*(2/3-n)*6:t}function gn(t,e,n){return t+(e-t)*n}function yn(t,e,n,i,r){return t[0]=e,t[1]=n,t[2]=i,t[3]=r,t}function vn(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t}var mn=new ln(20),xn=null;function _n(t,e){xn&&vn(xn,e),xn=mn.put(t,xn||e.slice())}function bn(t,e){if(t){e=e||[];var n=mn.get(t);if(n)return vn(e,n);var i=(t+="").replace(/ /g,"").toLowerCase();if(i in un)return vn(e,un[i]),_n(t,e),e;var r,o=i.length;if("#"===i.charAt(0))return 4===o||5===o?(r=parseInt(i.slice(1,4),16))>=0&&r<=4095?(yn(e,(3840&r)>>4|(3840&r)>>8,240&r|(240&r)>>4,15&r|(15&r)<<4,5===o?parseInt(i.slice(4),16)/15:1),_n(t,e),e):void yn(e,0,0,0,1):7===o||9===o?(r=parseInt(i.slice(1,7),16))>=0&&r<=16777215?(yn(e,(16711680&r)>>16,(65280&r)>>8,255&r,9===o?parseInt(i.slice(7),16)/255:1),_n(t,e),e):void yn(e,0,0,0,1):void 0;var a=i.indexOf("("),s=i.indexOf(")");if(-1!==a&&s+1===o){var l=i.substr(0,a),u=i.substr(a+1,s-(a+1)).split(","),h=1;switch(l){case"rgba":if(4!==u.length)return 3===u.length?yn(e,+u[0],+u[1],+u[2],1):yn(e,0,0,0,1);h=dn(u.pop());case"rgb":return 3!==u.length?void yn(e,0,0,0,1):(yn(e,pn(u[0]),pn(u[1]),pn(u[2]),h),_n(t,e),e);case"hsla":return 4!==u.length?void yn(e,0,0,0,1):(u[3]=dn(u[3]),wn(u,e),_n(t,e),e);case"hsl":return 3!==u.length?void yn(e,0,0,0,1):(wn(u,e),_n(t,e),e);default:return}}yn(e,0,0,0,1)}}function wn(t,e){var n=(parseFloat(t[0])%360+360)%360/360,i=dn(t[1]),r=dn(t[2]),o=r<=.5?r*(i+1):r+i-r*i,a=2*r-o;return yn(e=e||[],hn(255*fn(a,o,n+1/3)),hn(255*fn(a,o,n)),hn(255*fn(a,o,n-1/3)),1),4===t.length&&(e[3]=t[3]),e}function Sn(t,e){var n=bn(t);if(n){for(var i=0;i<3;i++)n[i]=e<0?n[i]*(1-e)|0:(255-n[i])*e+n[i]|0,n[i]>255?n[i]=255:n[i]<0&&(n[i]=0);return kn(n,4===n.length?"rgba":"rgb")}}function Mn(t,e,n){if(e&&e.length&&t>=0&&t<=1){n=n||[];var i=t*(e.length-1),r=Math.floor(i),o=Math.ceil(i),a=e[r],s=e[o],l=i-r;return n[0]=hn(gn(a[0],s[0],l)),n[1]=hn(gn(a[1],s[1],l)),n[2]=hn(gn(a[2],s[2],l)),n[3]=cn(gn(a[3],s[3],l)),n}}var In=Mn;function Tn(t,e,n){if(e&&e.length&&t>=0&&t<=1){var i=t*(e.length-1),r=Math.floor(i),o=Math.ceil(i),a=bn(e[r]),s=bn(e[o]),l=i-r,u=kn([hn(gn(a[0],s[0],l)),hn(gn(a[1],s[1],l)),hn(gn(a[2],s[2],l)),cn(gn(a[3],s[3],l))],"rgba");return n?{color:u,leftIndex:r,rightIndex:o,value:i}:u}}var Cn=Tn;function Dn(t,e,n,i){var r=bn(t);if(t)return r=function(t){if(t){var e,n,i=t[0]/255,r=t[1]/255,o=t[2]/255,a=Math.min(i,r,o),s=Math.max(i,r,o),l=s-a,u=(s+a)/2;if(0===l)e=0,n=0;else{n=u<.5?l/(s+a):l/(2-s-a);var h=((s-i)/6+l/2)/l,c=((s-r)/6+l/2)/l,p=((s-o)/6+l/2)/l;i===s?e=p-c:r===s?e=1/3+h-p:o===s&&(e=2/3+c-h),e<0&&(e+=1),e>1&&(e-=1)}var d=[360*e,n,u];return null!=t[3]&&d.push(t[3]),d}}(r),null!=e&&(r[0]=function(t){return(t=Math.round(t))<0?0:t>360?360:t}(e)),null!=n&&(r[1]=dn(n)),null!=i&&(r[2]=dn(i)),kn(wn(r),"rgba")}function An(t,e){var n=bn(t);if(n&&null!=e)return n[3]=cn(e),kn(n,"rgba")}function kn(t,e){if(t&&t.length){var n=t[0]+","+t[1]+","+t[2];return"rgba"!==e&&"hsva"!==e&&"hsla"!==e||(n+=","+t[3]),e+"("+n+")"}}function Ln(t,e){var n=bn(t);return n?(.299*n[0]+.587*n[1]+.114*n[2])*n[3]/255+(1-n[3])*e:0}var Pn=Object.freeze({__proto__:null,parse:bn,lift:Sn,toHex:function(t){var e=bn(t);if(e)return((1<<24)+(e[0]<<16)+(e[1]<<8)+ +e[2]).toString(16).slice(1)},fastLerp:Mn,fastMapToColor:In,lerp:Tn,mapToColor:Cn,modifyHSL:Dn,modifyAlpha:An,stringify:kn,lum:Ln,random:function(){return kn([Math.round(255*Math.random()),Math.round(255*Math.random()),Math.round(255*Math.random())],"rgb")}}),On=Math.round;function Rn(t){var e;if(t&&"transparent"!==t){if("string"==typeof t&&t.indexOf("rgba")>-1){var n=bn(t);n&&(t="rgb("+n[0]+","+n[1]+","+n[2]+")",e=n[3])}}else t="none";return{color:t,opacity:null==e?1:e}}var Nn=1e-4;function En(t){return t<Nn&&t>-1e-4}function zn(t){return On(1e3*t)/1e3}function Vn(t){return On(1e4*t)/1e4}var Bn={left:"start",right:"end",center:"middle",middle:"middle"};function Fn(t){return t&&!!t.image}function Gn(t){return"linear"===t.type}function Wn(t){return"radial"===t.type}function Hn(t){return"url(#"+t+")"}function Yn(t){var e=t.getGlobalScale(),n=Math.max(e[0],e[1]);return Math.max(Math.ceil(Math.log(n)/Math.log(10)),1)}function Un(t){var e=t.x||0,n=t.y||0,i=(t.rotation||0)*_t,r=rt(t.scaleX,1),o=rt(t.scaleY,1),a=t.skewX||0,s=t.skewY||0,l=[];return(e||n)&&l.push("translate("+e+"px,"+n+"px)"),i&&l.push("rotate("+i+")"),1===r&&1===o||l.push("scale("+r+","+o+")"),(a||s)&&l.push("skew("+On(a*_t)+"deg, "+On(s*_t)+"deg)"),l.join(" ")}var Xn=r.hasGlobalWindow&&U(window.btoa)?function(t){return window.btoa(unescape(t))}:"undefined"!=typeof Buffer?function(t){return Buffer.from(t).toString("base64")}:function(t){return null},Zn=Array.prototype.slice;function jn(t,e,n){return(e-t)*n+t}function qn(t,e,n,i){for(var r=e.length,o=0;o<r;o++)t[o]=jn(e[o],n[o],i);return t}function Kn(t,e,n,i){for(var r=e.length,o=0;o<r;o++)t[o]=e[o]+n[o]*i;return t}function $n(t,e,n,i){for(var r=e.length,o=r&&e[0].length,a=0;a<r;a++){t[a]||(t[a]=[]);for(var s=0;s<o;s++)t[a][s]=e[a][s]+n[a][s]*i}return t}function Jn(t,e){for(var n=t.length,i=e.length,r=n>i?e:t,o=Math.min(n,i),a=r[o-1]||{color:[0,0,0,0],offset:0},s=o;s<Math.max(n,i);s++)r.push({offset:a.offset,color:a.color.slice()})}function Qn(t,e,n){var i=t,r=e;if(i.push&&r.push){var o=i.length,a=r.length;if(o!==a)if(o>a)i.length=a;else for(var s=o;s<a;s++)i.push(1===n?r[s]:Zn.call(r[s]));var l=i[0]&&i[0].length;for(s=0;s<i.length;s++)if(1===n)isNaN(i[s])&&(i[s]=r[s]);else for(var u=0;u<l;u++)isNaN(i[s][u])&&(i[s][u]=r[s][u])}}function ti(t){if(N(t)){var e=t.length;if(N(t[0])){for(var n=[],i=0;i<e;i++)n.push(Zn.call(t[i]));return n}return Zn.call(t)}return t}function ei(t){return t[0]=Math.floor(t[0])||0,t[1]=Math.floor(t[1])||0,t[2]=Math.floor(t[2])||0,t[3]=null==t[3]?1:t[3],"rgba("+t.join(",")+")"}function ni(t){return 4===t||5===t}function ii(t){return 1===t||2===t}var ri=[0,0,0,0],oi=function(){function t(t){this.keyframes=[],this.discrete=!1,this._invalid=!1,this._needsSort=!1,this._lastFr=0,this._lastFrP=0,this.propName=t}return t.prototype.isFinished=function(){return this._finished},t.prototype.setFinished=function(){this._finished=!0,this._additiveTrack&&this._additiveTrack.setFinished()},t.prototype.needsAnimate=function(){return this.keyframes.length>=1},t.prototype.getAdditiveTrack=function(){return this._additiveTrack},t.prototype.addKeyframe=function(t,e,n){this._needsSort=!0;var i=this.keyframes,r=i.length,o=!1,a=6,s=e;if(N(e)){var l=function(t){return N(t&&t[0])?2:1}(e);a=l,(1===l&&!j(e[0])||2===l&&!j(e[0][0]))&&(o=!0)}else if(j(e)&&!nt(e))a=0;else if(X(e))if(isNaN(+e)){var u=bn(e);u&&(s=u,a=3)}else a=0;else if(Q(e)){var h=A({},s);h.colorStops=z(e.colorStops,(function(t){return{offset:t.offset,color:bn(t.color)}})),Gn(e)?a=4:Wn(e)&&(a=5),s=h}0===r?this.valType=a:a===this.valType&&6!==a||(o=!0),this.discrete=this.discrete||o;var c={time:t,value:s,rawValue:e,percent:0};return n&&(c.easing=n,c.easingFunc=U(n)?n:Le[n]||rn(n)),i.push(c),c},t.prototype.prepare=function(t,e){var n=this.keyframes;this._needsSort&&n.sort((function(t,e){return t.time-e.time}));for(var i=this.valType,r=n.length,o=n[r-1],a=this.discrete,s=ii(i),l=ni(i),u=0;u<r;u++){var h=n[u],c=h.value,p=o.value;h.percent=h.time/t,a||(s&&u!==r-1?Qn(c,p,i):l&&Jn(c.colorStops,p.colorStops))}if(!a&&5!==i&&e&&this.needsAnimate()&&e.needsAnimate()&&i===e.valType&&!e._finished){this._additiveTrack=e;var d=n[0].value;for(u=0;u<r;u++)0===i?n[u].additiveValue=n[u].value-d:3===i?n[u].additiveValue=Kn([],n[u].value,d,-1):ii(i)&&(n[u].additiveValue=1===i?Kn([],n[u].value,d,-1):$n([],n[u].value,d,-1))}},t.prototype.step=function(t,e){if(!this._finished){this._additiveTrack&&this._additiveTrack._finished&&(this._additiveTrack=null);var n,i,r,o=null!=this._additiveTrack,a=o?"additiveValue":"value",s=this.valType,l=this.keyframes,u=l.length,h=this.propName,c=3===s,p=this._lastFr,d=Math.min;if(1===u)i=r=l[0];else{if(e<0)n=0;else if(e<this._lastFrP){for(n=d(p+1,u-1);n>=0&&!(l[n].percent<=e);n--);n=d(n,u-2)}else{for(n=p;n<u&&!(l[n].percent>e);n++);n=d(n-1,u-2)}r=l[n+1],i=l[n]}if(i&&r){this._lastFr=n,this._lastFrP=e;var f=r.percent-i.percent,g=0===f?1:d((e-i.percent)/f,1);r.easingFunc&&(g=r.easingFunc(g));var y=o?this._additiveValue:c?ri:t[h];if(!ii(s)&&!c||y||(y=this._additiveValue=[]),this.discrete)t[h]=g<1?i.rawValue:r.rawValue;else if(ii(s))1===s?qn(y,i[a],r[a],g):function(t,e,n,i){for(var r=e.length,o=r&&e[0].length,a=0;a<r;a++){t[a]||(t[a]=[]);for(var s=0;s<o;s++)t[a][s]=jn(e[a][s],n[a][s],i)}}(y,i[a],r[a],g);else if(ni(s)){var v=i[a],m=r[a],x=4===s;t[h]={type:x?"linear":"radial",x:jn(v.x,m.x,g),y:jn(v.y,m.y,g),colorStops:z(v.colorStops,(function(t,e){var n=m.colorStops[e];return{offset:jn(t.offset,n.offset,g),color:ei(qn([],t.color,n.color,g))}})),global:m.global},x?(t[h].x2=jn(v.x2,m.x2,g),t[h].y2=jn(v.y2,m.y2,g)):t[h].r=jn(v.r,m.r,g)}else if(c)qn(y,i[a],r[a],g),o||(t[h]=ei(y));else{var _=jn(i[a],r[a],g);o?this._additiveValue=_:t[h]=_}o&&this._addToTarget(t)}}},t.prototype._addToTarget=function(t){var e=this.valType,n=this.propName,i=this._additiveValue;0===e?t[n]=t[n]+i:3===e?(bn(t[n],ri),Kn(ri,ri,i,1),t[n]=ei(ri)):1===e?Kn(t[n],t[n],i,1):2===e&&$n(t[n],t[n],i,1)},t}(),ai=function(){function t(t,e,n,i){this._tracks={},this._trackKeys=[],this._maxTime=0,this._started=0,this._clip=null,this._target=t,this._loop=e,e&&i?I("Can' use additive animation on looped animation."):(this._additiveAnimators=i,this._allowDiscrete=n)}return t.prototype.getMaxTime=function(){return this._maxTime},t.prototype.getDelay=function(){return this._delay},t.prototype.getLoop=function(){return this._loop},t.prototype.getTarget=function(){return this._target},t.prototype.changeTarget=function(t){this._target=t},t.prototype.when=function(t,e,n){return this.whenWithKeys(t,e,G(e),n)},t.prototype.whenWithKeys=function(t,e,n,i){for(var r=this._tracks,o=0;o<n.length;o++){var a=n[o],s=r[a];if(!s){s=r[a]=new oi(a);var l=void 0,u=this._getAdditiveTrack(a);if(u){var h=u.keyframes,c=h[h.length-1];l=c&&c.value,3===u.valType&&l&&(l=ei(l))}else l=this._target[a];if(null==l)continue;t>0&&s.addKeyframe(0,ti(l),i),this._trackKeys.push(a)}s.addKeyframe(t,ti(e[a]),i)}return this._maxTime=Math.max(this._maxTime,t),this},t.prototype.pause=function(){this._clip.pause(),this._paused=!0},t.prototype.resume=function(){this._clip.resume(),this._paused=!1},t.prototype.isPaused=function(){return!!this._paused},t.prototype.duration=function(t){return this._maxTime=t,this._force=!0,this},t.prototype._doneCallback=function(){this._setTracksFinished(),this._clip=null;var t=this._doneCbs;if(t)for(var e=t.length,n=0;n<e;n++)t[n].call(this)},t.prototype._abortedCallback=function(){this._setTracksFinished();var t=this.animation,e=this._abortedCbs;if(t&&t.removeClip(this._clip),this._clip=null,e)for(var n=0;n<e.length;n++)e[n].call(this)},t.prototype._setTracksFinished=function(){for(var t=this._tracks,e=this._trackKeys,n=0;n<e.length;n++)t[e[n]].setFinished()},t.prototype._getAdditiveTrack=function(t){var e,n=this._additiveAnimators;if(n)for(var i=0;i<n.length;i++){var r=n[i].getTrack(t);r&&(e=r)}return e},t.prototype.start=function(t){if(!(this._started>0)){this._started=1;for(var e=this,n=[],i=this._maxTime||0,r=0;r<this._trackKeys.length;r++){var o=this._trackKeys[r],a=this._tracks[o],s=this._getAdditiveTrack(o),l=a.keyframes,u=l.length;if(a.prepare(i,s),a.needsAnimate())if(!this._allowDiscrete&&a.discrete){var h=l[u-1];h&&(e._target[a.propName]=h.rawValue),a.setFinished()}else n.push(a)}if(n.length||this._force){var c=new on({life:i,loop:this._loop,delay:this._delay||0,onframe:function(t){e._started=2;var i=e._additiveAnimators;if(i){for(var r=!1,o=0;o<i.length;o++)if(i[o]._clip){r=!0;break}r||(e._additiveAnimators=null)}for(o=0;o<n.length;o++)n[o].step(e._target,t);var a=e._onframeCbs;if(a)for(o=0;o<a.length;o++)a[o](e._target,t)},ondestroy:function(){e._doneCallback()}});this._clip=c,this.animation&&this.animation.addClip(c),t&&c.setEasing(t)}else this._doneCallback();return this}},t.prototype.stop=function(t){if(this._clip){var e=this._clip;t&&e.onframe(1),this._abortedCallback()}},t.prototype.delay=function(t){return this._delay=t,this},t.prototype.during=function(t){return t&&(this._onframeCbs||(this._onframeCbs=[]),this._onframeCbs.push(t)),this},t.prototype.done=function(t){return t&&(this._doneCbs||(this._doneCbs=[]),this._doneCbs.push(t)),this},t.prototype.aborted=function(t){return t&&(this._abortedCbs||(this._abortedCbs=[]),this._abortedCbs.push(t)),this},t.prototype.getClip=function(){return this._clip},t.prototype.getTrack=function(t){return this._tracks[t]},t.prototype.getTracks=function(){var t=this;return z(this._trackKeys,(function(e){return t._tracks[e]}))},t.prototype.stopTracks=function(t,e){if(!t.length||!this._clip)return!0;for(var n=this._tracks,i=this._trackKeys,r=0;r<t.length;r++){var o=n[t[r]];o&&!o.isFinished()&&(e?o.step(this._target,1):1===this._started&&o.step(this._target,0),o.setFinished())}var a=!0;for(r=0;r<i.length;r++)if(!n[i[r]].isFinished()){a=!1;break}return a&&this._abortedCallback(),a},t.prototype.saveTo=function(t,e,n){if(t){e=e||this._trackKeys;for(var i=0;i<e.length;i++){var r=e[i],o=this._tracks[r];if(o&&!o.isFinished()){var a=o.keyframes,s=a[n?0:a.length-1];s&&(t[r]=ti(s.rawValue))}}}},t.prototype.__changeFinalValue=function(t,e){e=e||G(t);for(var n=0;n<e.length;n++){var i=e[n],r=this._tracks[i];if(r){var o=r.keyframes;if(o.length>1){var a=o.pop();r.addKeyframe(a.time,t[i]),r.prepare(this._maxTime,r.getAdditiveTrack())}}}},t}();function si(){return(new Date).getTime()}var li,ui,hi=function(t){function e(e){var n=t.call(this)||this;return n._running=!1,n._time=0,n._pausedTime=0,n._pauseStart=0,n._paused=!1,e=e||{},n.stage=e.stage||{},n}return n(e,t),e.prototype.addClip=function(t){t.animation&&this.removeClip(t),this._head?(this._tail.next=t,t.prev=this._tail,t.next=null,this._tail=t):this._head=this._tail=t,t.animation=this},e.prototype.addAnimator=function(t){t.animation=this;var e=t.getClip();e&&this.addClip(e)},e.prototype.removeClip=function(t){if(t.animation){var e=t.prev,n=t.next;e?e.next=n:this._head=n,n?n.prev=e:this._tail=e,t.next=t.prev=t.animation=null}},e.prototype.removeAnimator=function(t){var e=t.getClip();e&&this.removeClip(e),t.animation=null},e.prototype.update=function(t){for(var e=si()-this._pausedTime,n=e-this._time,i=this._head;i;){var r=i.next;i.step(e,n)?(i.ondestroy(),this.removeClip(i),i=r):i=r}this._time=e,t||(this.trigger("frame",n),this.stage.update&&this.stage.update())},e.prototype._startLoop=function(){var t=this;this._running=!0,ke((function e(){t._running&&(ke(e),!t._paused&&t.update())}))},e.prototype.start=function(){this._running||(this._time=si(),this._pausedTime=0,this._startLoop())},e.prototype.stop=function(){this._running=!1},e.prototype.pause=function(){this._paused||(this._pauseStart=si(),this._paused=!0)},e.prototype.resume=function(){this._paused&&(this._pausedTime+=si()-this._pauseStart,this._paused=!1)},e.prototype.clear=function(){for(var t=this._head;t;){var e=t.next;t.prev=t.next=t.animation=null,t=e}this._head=this._tail=null},e.prototype.isFinished=function(){return null==this._head},e.prototype.animate=function(t,e){e=e||{},this.start();var n=new ai(t,e.loop);return this.addAnimator(n),n},e}(Xt),ci=r.domSupported,pi=(ui={pointerdown:1,pointerup:1,pointermove:1,pointerout:1},{mouse:li=["click","dblclick","mousewheel","wheel","mouseout","mouseup","mousedown","mousemove","contextmenu"],touch:["touchstart","touchend","touchmove"],pointer:z(li,(function(t){var e=t.replace("mouse","pointer");return ui.hasOwnProperty(e)?e:t}))}),di=["mousemove","mouseup"],fi=["pointermove","pointerup"],gi=!1;function yi(t){var e=t.pointerType;return"pen"===e||"touch"===e}function vi(t){t&&(t.zrByTouch=!0)}function mi(t,e){for(var n=e,i=!1;n&&9!==n.nodeType&&!(i=n.domBelongToZr||n!==e&&n===t.painterRoot);)n=n.parentNode;return i}var xi=function(t,e){this.stopPropagation=xt,this.stopImmediatePropagation=xt,this.preventDefault=xt,this.type=e.type,this.target=this.currentTarget=t.dom,this.pointerType=e.pointerType,this.clientX=e.clientX,this.clientY=e.clientY},_i={mousedown:function(t){t=oe(this.dom,t),this.__mayPointerCapture=[t.zrX,t.zrY],this.trigger("mousedown",t)},mousemove:function(t){t=oe(this.dom,t);var e=this.__mayPointerCapture;!e||t.zrX===e[0]&&t.zrY===e[1]||this.__togglePointerCapture(!0),this.trigger("mousemove",t)},mouseup:function(t){t=oe(this.dom,t),this.__togglePointerCapture(!1),this.trigger("mouseup",t)},mouseout:function(t){mi(this,(t=oe(this.dom,t)).toElement||t.relatedTarget)||(this.__pointerCapturing&&(t.zrEventControl="no_globalout"),this.trigger("mouseout",t))},wheel:function(t){gi=!0,t=oe(this.dom,t),this.trigger("mousewheel",t)},mousewheel:function(t){gi||(t=oe(this.dom,t),this.trigger("mousewheel",t))},touchstart:function(t){vi(t=oe(this.dom,t)),this.__lastTouchMoment=new Date,this.handler.processGesture(t,"start"),_i.mousemove.call(this,t),_i.mousedown.call(this,t)},touchmove:function(t){vi(t=oe(this.dom,t)),this.handler.processGesture(t,"change"),_i.mousemove.call(this,t)},touchend:function(t){vi(t=oe(this.dom,t)),this.handler.processGesture(t,"end"),_i.mouseup.call(this,t),+new Date-+this.__lastTouchMoment<300&&_i.click.call(this,t)},pointerdown:function(t){_i.mousedown.call(this,t)},pointermove:function(t){yi(t)||_i.mousemove.call(this,t)},pointerup:function(t){_i.mouseup.call(this,t)},pointerout:function(t){yi(t)||_i.mouseout.call(this,t)}};E(["click","dblclick","contextmenu"],(function(t){_i[t]=function(e){e=oe(this.dom,e),this.trigger(t,e)}}));var bi={pointermove:function(t){yi(t)||bi.mousemove.call(this,t)},pointerup:function(t){bi.mouseup.call(this,t)},mousemove:function(t){this.trigger("mousemove",t)},mouseup:function(t){var e=this.__pointerCapturing;this.__togglePointerCapture(!1),this.trigger("mouseup",t),e&&(t.zrEventControl="only_globalout",this.trigger("mouseout",t))}};function wi(t,e){var n=e.domHandlers;r.pointerEventsSupported?E(pi.pointer,(function(i){Mi(e,i,(function(e){n[i].call(t,e)}))})):(r.touchEventsSupported&&E(pi.touch,(function(i){Mi(e,i,(function(r){n[i].call(t,r),function(t){t.touching=!0,null!=t.touchTimer&&(clearTimeout(t.touchTimer),t.touchTimer=null),t.touchTimer=setTimeout((function(){t.touching=!1,t.touchTimer=null}),700)}(e)}))})),E(pi.mouse,(function(i){Mi(e,i,(function(r){r=re(r),e.touching||n[i].call(t,r)}))})))}function Si(t,e){function n(n){Mi(e,n,(function(i){i=re(i),mi(t,i.target)||(i=function(t,e){return oe(t.dom,new xi(t,e),!0)}(t,i),e.domHandlers[n].call(t,i))}),{capture:!0})}r.pointerEventsSupported?E(fi,n):r.touchEventsSupported||E(di,n)}function Mi(t,e,n,i){t.mounted[e]=n,t.listenerOpts[e]=i,ae(t.domTarget,e,n,i)}function Ii(t){var e,n,i,r,o=t.mounted;for(var a in o)o.hasOwnProperty(a)&&(e=t.domTarget,n=a,i=o[a],r=t.listenerOpts[a],e.removeEventListener(n,i,r));t.mounted={}}var Ti=function(t,e){this.mounted={},this.listenerOpts={},this.touching=!1,this.domTarget=t,this.domHandlers=e},Ci=function(t){function e(e,n){var i=t.call(this)||this;return i.__pointerCapturing=!1,i.dom=e,i.painterRoot=n,i._localHandlerScope=new Ti(e,_i),ci&&(i._globalHandlerScope=new Ti(document,bi)),wi(i,i._localHandlerScope),i}return n(e,t),e.prototype.dispose=function(){Ii(this._localHandlerScope),ci&&Ii(this._globalHandlerScope)},e.prototype.setCursor=function(t){this.dom.style&&(this.dom.style.cursor=t||"default")},e.prototype.__togglePointerCapture=function(t){if(this.__mayPointerCapture=null,ci&&+this.__pointerCapturing^+t){this.__pointerCapturing=t;var e=this._globalHandlerScope;t?Si(this,e):Ii(e)}},e}(Xt),Di=1;r.hasGlobalWindow&&(Di=Math.max(window.devicePixelRatio||window.screen&&window.screen.deviceXDPI/window.screen.logicalXDPI||1,1));var Ai=Di,ki="#333",Li="#ccc";function Pi(){return[1,0,0,1,0,0]}function Oi(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t}function Ri(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t}function Ni(t,e,n){var i=e[0]*n[0]+e[2]*n[1],r=e[1]*n[0]+e[3]*n[1],o=e[0]*n[2]+e[2]*n[3],a=e[1]*n[2]+e[3]*n[3],s=e[0]*n[4]+e[2]*n[5]+e[4],l=e[1]*n[4]+e[3]*n[5]+e[5];return t[0]=i,t[1]=r,t[2]=o,t[3]=a,t[4]=s,t[5]=l,t}function Ei(t,e,n){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4]+n[0],t[5]=e[5]+n[1],t}function zi(t,e,n){var i=e[0],r=e[2],o=e[4],a=e[1],s=e[3],l=e[5],u=Math.sin(n),h=Math.cos(n);return t[0]=i*h+a*u,t[1]=-i*u+a*h,t[2]=r*h+s*u,t[3]=-r*u+h*s,t[4]=h*o+u*l,t[5]=h*l-u*o,t}function Vi(t,e,n){var i=n[0],r=n[1];return t[0]=e[0]*i,t[1]=e[1]*r,t[2]=e[2]*i,t[3]=e[3]*r,t[4]=e[4]*i,t[5]=e[5]*r,t}function Bi(t,e){var n=e[0],i=e[2],r=e[4],o=e[1],a=e[3],s=e[5],l=n*a-o*i;return l?(l=1/l,t[0]=a*l,t[1]=-o*l,t[2]=-i*l,t[3]=n*l,t[4]=(i*s-a*r)*l,t[5]=(o*r-n*s)*l,t):null}function Fi(t){var e=[1,0,0,1,0,0];return Ri(e,t),e}var Gi=Object.freeze({__proto__:null,create:Pi,identity:Oi,copy:Ri,mul:Ni,translate:Ei,rotate:zi,scale:Vi,invert:Bi,clone:Fi}),Wi=Oi,Hi=5e-5;function Yi(t){return t>Hi||t<-5e-5}var Ui=[],Xi=[],Zi=[1,0,0,1,0,0],ji=Math.abs,qi=function(){function t(){}return t.prototype.getLocalTransform=function(e){return t.getLocalTransform(this,e)},t.prototype.setPosition=function(t){this.x=t[0],this.y=t[1]},t.prototype.setScale=function(t){this.scaleX=t[0],this.scaleY=t[1]},t.prototype.setSkew=function(t){this.skewX=t[0],this.skewY=t[1]},t.prototype.setOrigin=function(t){this.originX=t[0],this.originY=t[1]},t.prototype.needLocalTransform=function(){return Yi(this.rotation)||Yi(this.x)||Yi(this.y)||Yi(this.scaleX-1)||Yi(this.scaleY-1)||Yi(this.skewX)||Yi(this.skewY)},t.prototype.updateTransform=function(){var t=this.parent&&this.parent.transform,e=this.needLocalTransform(),n=this.transform;e||t?(n=n||[1,0,0,1,0,0],e?this.getLocalTransform(n):Wi(n),t&&(e?Ni(n,t,n):Ri(n,t)),this.transform=n,this._resolveGlobalScaleRatio(n)):n&&Wi(n)},t.prototype._resolveGlobalScaleRatio=function(t){var e=this.globalScaleRatio;if(null!=e&&1!==e){this.getGlobalScale(Ui);var n=Ui[0]<0?-1:1,i=Ui[1]<0?-1:1,r=((Ui[0]-n)*e+n)/Ui[0]||0,o=((Ui[1]-i)*e+i)/Ui[1]||0;t[0]*=r,t[1]*=r,t[2]*=o,t[3]*=o}this.invTransform=this.invTransform||[1,0,0,1,0,0],Bi(this.invTransform,t)},t.prototype.getComputedTransform=function(){for(var t=this,e=[];t;)e.push(t),t=t.parent;for(;t=e.pop();)t.updateTransform();return this.transform},t.prototype.setLocalTransform=function(t){if(t){var e=t[0]*t[0]+t[1]*t[1],n=t[2]*t[2]+t[3]*t[3],i=Math.atan2(t[1],t[0]),r=Math.PI/2+i-Math.atan2(t[3],t[2]);n=Math.sqrt(n)*Math.cos(r),e=Math.sqrt(e),this.skewX=r,this.skewY=0,this.rotation=-i,this.x=+t[4],this.y=+t[5],this.scaleX=e,this.scaleY=n,this.originX=0,this.originY=0}},t.prototype.decomposeTransform=function(){if(this.transform){var t=this.parent,e=this.transform;t&&t.transform&&(Ni(Xi,t.invTransform,e),e=Xi);var n=this.originX,i=this.originY;(n||i)&&(Zi[4]=n,Zi[5]=i,Ni(Xi,e,Zi),Xi[4]-=n,Xi[5]-=i,e=Xi),this.setLocalTransform(e)}},t.prototype.getGlobalScale=function(t){var e=this.transform;return t=t||[],e?(t[0]=Math.sqrt(e[0]*e[0]+e[1]*e[1]),t[1]=Math.sqrt(e[2]*e[2]+e[3]*e[3]),e[0]<0&&(t[0]=-t[0]),e[3]<0&&(t[1]=-t[1]),t):(t[0]=1,t[1]=1,t)},t.prototype.transformCoordToLocal=function(t,e){var n=[t,e],i=this.invTransform;return i&&Ft(n,n,i),n},t.prototype.transformCoordToGlobal=function(t,e){var n=[t,e],i=this.transform;return i&&Ft(n,n,i),n},t.prototype.getLineScale=function(){var t=this.transform;return t&&ji(t[0]-1)>1e-10&&ji(t[3]-1)>1e-10?Math.sqrt(ji(t[0]*t[3]-t[2]*t[1])):1},t.prototype.copyTransform=function(t){$i(this,t)},t.getLocalTransform=function(t,e){e=e||[];var n=t.originX||0,i=t.originY||0,r=t.scaleX,o=t.scaleY,a=t.anchorX,s=t.anchorY,l=t.rotation||0,u=t.x,h=t.y,c=t.skewX?Math.tan(t.skewX):0,p=t.skewY?Math.tan(-t.skewY):0;if(n||i||a||s){var d=n+a,f=i+s;e[4]=-d*r-c*f*o,e[5]=-f*o-p*d*r}else e[4]=e[5]=0;return e[0]=r,e[3]=o,e[1]=p*r,e[2]=c*o,l&&zi(e,e,l),e[4]+=n+u,e[5]+=i+h,e},t.initDefaultProps=function(){var e=t.prototype;e.scaleX=e.scaleY=e.globalScaleRatio=1,e.x=e.y=e.originX=e.originY=e.skewX=e.skewY=e.rotation=e.anchorX=e.anchorY=0}(),t}(),Ki=["x","y","originX","originY","anchorX","anchorY","rotation","scaleX","scaleY","skewX","skewY"];function $i(t,e){for(var n=0;n<Ki.length;n++){var i=Ki[n];t[i]=e[i]}}var Ji=function(){function t(t,e){this.x=t||0,this.y=e||0}return t.prototype.copy=function(t){return this.x=t.x,this.y=t.y,this},t.prototype.clone=function(){return new t(this.x,this.y)},t.prototype.set=function(t,e){return this.x=t,this.y=e,this},t.prototype.equal=function(t){return t.x===this.x&&t.y===this.y},t.prototype.add=function(t){return this.x+=t.x,this.y+=t.y,this},t.prototype.scale=function(t){this.x*=t,this.y*=t},t.prototype.scaleAndAdd=function(t,e){this.x+=t.x*e,this.y+=t.y*e},t.prototype.sub=function(t){return this.x-=t.x,this.y-=t.y,this},t.prototype.dot=function(t){return this.x*t.x+this.y*t.y},t.prototype.len=function(){return Math.sqrt(this.x*this.x+this.y*this.y)},t.prototype.lenSquare=function(){return this.x*this.x+this.y*this.y},t.prototype.normalize=function(){var t=this.len();return this.x/=t,this.y/=t,this},t.prototype.distance=function(t){var e=this.x-t.x,n=this.y-t.y;return Math.sqrt(e*e+n*n)},t.prototype.distanceSquare=function(t){var e=this.x-t.x,n=this.y-t.y;return e*e+n*n},t.prototype.negate=function(){return this.x=-this.x,this.y=-this.y,this},t.prototype.transform=function(t){if(t){var e=this.x,n=this.y;return this.x=t[0]*e+t[2]*n+t[4],this.y=t[1]*e+t[3]*n+t[5],this}},t.prototype.toArray=function(t){return t[0]=this.x,t[1]=this.y,t},t.prototype.fromArray=function(t){this.x=t[0],this.y=t[1]},t.set=function(t,e,n){t.x=e,t.y=n},t.copy=function(t,e){t.x=e.x,t.y=e.y},t.len=function(t){return Math.sqrt(t.x*t.x+t.y*t.y)},t.lenSquare=function(t){return t.x*t.x+t.y*t.y},t.dot=function(t,e){return t.x*e.x+t.y*e.y},t.add=function(t,e,n){t.x=e.x+n.x,t.y=e.y+n.y},t.sub=function(t,e,n){t.x=e.x-n.x,t.y=e.y-n.y},t.scale=function(t,e,n){t.x=e.x*n,t.y=e.y*n},t.scaleAndAdd=function(t,e,n,i){t.x=e.x+n.x*i,t.y=e.y+n.y*i},t.lerp=function(t,e,n,i){var r=1-i;t.x=r*e.x+i*n.x,t.y=r*e.y+i*n.y},t}(),Qi=Math.min,tr=Math.max,er=new Ji,nr=new Ji,ir=new Ji,rr=new Ji,or=new Ji,ar=new Ji,sr=function(){function t(t,e,n,i){n<0&&(t+=n,n=-n),i<0&&(e+=i,i=-i),this.x=t,this.y=e,this.width=n,this.height=i}return t.prototype.union=function(t){var e=Qi(t.x,this.x),n=Qi(t.y,this.y);isFinite(this.x)&&isFinite(this.width)?this.width=tr(t.x+t.width,this.x+this.width)-e:this.width=t.width,isFinite(this.y)&&isFinite(this.height)?this.height=tr(t.y+t.height,this.y+this.height)-n:this.height=t.height,this.x=e,this.y=n},t.prototype.applyTransform=function(e){t.applyTransform(this,this,e)},t.prototype.calculateTransform=function(t){var e=this,n=t.width/e.width,i=t.height/e.height,r=[1,0,0,1,0,0];return Ei(r,r,[-e.x,-e.y]),Vi(r,r,[n,i]),Ei(r,r,[t.x,t.y]),r},t.prototype.intersect=function(e,n){if(!e)return!1;e instanceof t||(e=t.create(e));var i=this,r=i.x,o=i.x+i.width,a=i.y,s=i.y+i.height,l=e.x,u=e.x+e.width,h=e.y,c=e.y+e.height,p=!(o<l||u<r||s<h||c<a);if(n){var d=1/0,f=0,g=Math.abs(o-l),y=Math.abs(u-r),v=Math.abs(s-h),m=Math.abs(c-a),x=Math.min(g,y),_=Math.min(v,m);o<l||u<r?x>f&&(f=x,g<y?Ji.set(ar,-g,0):Ji.set(ar,y,0)):x<d&&(d=x,g<y?Ji.set(or,g,0):Ji.set(or,-y,0)),s<h||c<a?_>f&&(f=_,v<m?Ji.set(ar,0,-v):Ji.set(ar,0,m)):x<d&&(d=x,v<m?Ji.set(or,0,v):Ji.set(or,0,-m))}return n&&Ji.copy(n,p?or:ar),p},t.prototype.contain=function(t,e){var n=this;return t>=n.x&&t<=n.x+n.width&&e>=n.y&&e<=n.y+n.height},t.prototype.clone=function(){return new t(this.x,this.y,this.width,this.height)},t.prototype.copy=function(e){t.copy(this,e)},t.prototype.plain=function(){return{x:this.x,y:this.y,width:this.width,height:this.height}},t.prototype.isFinite=function(){return isFinite(this.x)&&isFinite(this.y)&&isFinite(this.width)&&isFinite(this.height)},t.prototype.isZero=function(){return 0===this.width||0===this.height},t.create=function(e){return new t(e.x,e.y,e.width,e.height)},t.copy=function(t,e){t.x=e.x,t.y=e.y,t.width=e.width,t.height=e.height},t.applyTransform=function(e,n,i){if(i){if(i[1]<1e-5&&i[1]>-1e-5&&i[2]<1e-5&&i[2]>-1e-5){var r=i[0],o=i[3],a=i[4],s=i[5];return e.x=n.x*r+a,e.y=n.y*o+s,e.width=n.width*r,e.height=n.height*o,e.width<0&&(e.x+=e.width,e.width=-e.width),void(e.height<0&&(e.y+=e.height,e.height=-e.height))}er.x=ir.x=n.x,er.y=rr.y=n.y,nr.x=rr.x=n.x+n.width,nr.y=ir.y=n.y+n.height,er.transform(i),rr.transform(i),nr.transform(i),ir.transform(i),e.x=Qi(er.x,nr.x,ir.x,rr.x),e.y=Qi(er.y,nr.y,ir.y,rr.y);var l=tr(er.x,nr.x,ir.x,rr.x),u=tr(er.y,nr.y,ir.y,rr.y);e.width=l-e.x,e.height=u-e.y}else e!==n&&t.copy(e,n)},t}(),lr={};function ur(t,e){var n=lr[e=e||a];n||(n=lr[e]=new ln(500));var i=n.get(t);return null==i&&(i=h.measureText(t,e).width,n.put(t,i)),i}function hr(t,e,n,i){var r=ur(t,e),o=fr(e),a=pr(0,r,n),s=dr(0,o,i);return new sr(a,s,r,o)}function cr(t,e,n,i){var r=((t||"")+"").split("\n");if(1===r.length)return hr(r[0],e,n,i);for(var o=new sr(0,0,0,0),a=0;a<r.length;a++){var s=hr(r[a],e,n,i);0===a?o.copy(s):o.union(s)}return o}function pr(t,e,n){return"right"===n?t-=e:"center"===n&&(t-=e/2),t}function dr(t,e,n){return"middle"===n?t-=e/2:"bottom"===n&&(t-=e),t}function fr(t){return ur("国",t)}function gr(t,e){return"string"==typeof t?t.lastIndexOf("%")>=0?parseFloat(t)/100*e:parseFloat(t):t}function yr(t,e,n){var i=e.position||"inside",r=null!=e.distance?e.distance:5,o=n.height,a=n.width,s=o/2,l=n.x,u=n.y,h="left",c="top";if(i instanceof Array)l+=gr(i[0],n.width),u+=gr(i[1],n.height),h=null,c=null;else switch(i){case"left":l-=r,u+=s,h="right",c="middle";break;case"right":l+=r+a,u+=s,c="middle";break;case"top":l+=a/2,u-=r,h="center",c="bottom";break;case"bottom":l+=a/2,u+=o+r,h="center";break;case"inside":l+=a/2,u+=s,h="center",c="middle";break;case"insideLeft":l+=r,u+=s,c="middle";break;case"insideRight":l+=a-r,u+=s,h="right",c="middle";break;case"insideTop":l+=a/2,u+=r,h="center";break;case"insideBottom":l+=a/2,u+=o-r,h="center",c="bottom";break;case"insideTopLeft":l+=r,u+=r;break;case"insideTopRight":l+=a-r,u+=r,h="right";break;case"insideBottomLeft":l+=r,u+=o-r,c="bottom";break;case"insideBottomRight":l+=a-r,u+=o-r,h="right",c="bottom"}return(t=t||{}).x=l,t.y=u,t.align=h,t.verticalAlign=c,t}var vr="__zr_normal__",mr=Ki.concat(["ignore"]),xr=V(Ki,(function(t,e){return t[e]=!0,t}),{ignore:!1}),_r={},br=new sr(0,0,0,0),wr=function(){function t(t){this.id=M(),this.animators=[],this.currentStates=[],this.states={},this._init(t)}return t.prototype._init=function(t){this.attr(t)},t.prototype.drift=function(t,e,n){switch(this.draggable){case"horizontal":e=0;break;case"vertical":t=0}var i=this.transform;i||(i=this.transform=[1,0,0,1,0,0]),i[4]+=t,i[5]+=e,this.decomposeTransform(),this.markRedraw()},t.prototype.beforeUpdate=function(){},t.prototype.afterUpdate=function(){},t.prototype.update=function(){this.updateTransform(),this.__dirty&&this.updateInnerText()},t.prototype.updateInnerText=function(t){var e=this._textContent;if(e&&(!e.ignore||t)){this.textConfig||(this.textConfig={});var n=this.textConfig,i=n.local,r=e.innerTransformable,o=void 0,a=void 0,s=!1;r.parent=i?this:null;var l=!1;if(r.copyTransform(e),null!=n.position){var u=br;n.layoutRect?u.copy(n.layoutRect):u.copy(this.getBoundingRect()),i||u.applyTransform(this.transform),this.calculateTextPosition?this.calculateTextPosition(_r,n,u):yr(_r,n,u),r.x=_r.x,r.y=_r.y,o=_r.align,a=_r.verticalAlign;var h=n.origin;if(h&&null!=n.rotation){var c=void 0,p=void 0;"center"===h?(c=.5*u.width,p=.5*u.height):(c=gr(h[0],u.width),p=gr(h[1],u.height)),l=!0,r.originX=-r.x+c+(i?0:u.x),r.originY=-r.y+p+(i?0:u.y)}}null!=n.rotation&&(r.rotation=n.rotation);var d=n.offset;d&&(r.x+=d[0],r.y+=d[1],l||(r.originX=-d[0],r.originY=-d[1]));var f=null==n.inside?"string"==typeof n.position&&n.position.indexOf("inside")>=0:n.inside,g=this._innerTextDefaultStyle||(this._innerTextDefaultStyle={}),y=void 0,v=void 0,m=void 0;f&&this.canBeInsideText()?(y=n.insideFill,v=n.insideStroke,null!=y&&"auto"!==y||(y=this.getInsideTextFill()),null!=v&&"auto"!==v||(v=this.getInsideTextStroke(y),m=!0)):(y=n.outsideFill,v=n.outsideStroke,null!=y&&"auto"!==y||(y=this.getOutsideFill()),null!=v&&"auto"!==v||(v=this.getOutsideStroke(y),m=!0)),(y=y||"#000")===g.fill&&v===g.stroke&&m===g.autoStroke&&o===g.align&&a===g.verticalAlign||(s=!0,g.fill=y,g.stroke=v,g.autoStroke=m,g.align=o,g.verticalAlign=a,e.setDefaultTextStyle(g)),e.__dirty|=1,s&&e.dirtyStyle(!0)}},t.prototype.canBeInsideText=function(){return!0},t.prototype.getInsideTextFill=function(){return"#fff"},t.prototype.getInsideTextStroke=function(t){return"#000"},t.prototype.getOutsideFill=function(){return this.__zr&&this.__zr.isDarkMode()?Li:ki},t.prototype.getOutsideStroke=function(t){var e=this.__zr&&this.__zr.getBackgroundColor(),n="string"==typeof e&&bn(e);n||(n=[255,255,255,1]);for(var i=n[3],r=this.__zr.isDarkMode(),o=0;o<3;o++)n[o]=n[o]*i+(r?0:255)*(1-i);return n[3]=1,kn(n,"rgba")},t.prototype.traverse=function(t,e){},t.prototype.attrKV=function(t,e){"textConfig"===t?this.setTextConfig(e):"textContent"===t?this.setTextContent(e):"clipPath"===t?this.setClipPath(e):"extra"===t?(this.extra=this.extra||{},A(this.extra,e)):this[t]=e},t.prototype.hide=function(){this.ignore=!0,this.markRedraw()},t.prototype.show=function(){this.ignore=!1,this.markRedraw()},t.prototype.attr=function(t,e){if("string"==typeof t)this.attrKV(t,e);else if(q(t))for(var n=G(t),i=0;i<n.length;i++){var r=n[i];this.attrKV(r,t[r])}return this.markRedraw(),this},t.prototype.saveCurrentToNormalState=function(t){this._innerSaveToNormal(t);for(var e=this._normalState,n=0;n<this.animators.length;n++){var i=this.animators[n],r=i.__fromStateTransition;if(!(i.getLoop()||r&&r!==vr)){var o=i.targetName,a=o?e[o]:e;i.saveTo(a)}}},t.prototype._innerSaveToNormal=function(t){var e=this._normalState;e||(e=this._normalState={}),t.textConfig&&!e.textConfig&&(e.textConfig=this.textConfig),this._savePrimaryToNormal(t,e,mr)},t.prototype._savePrimaryToNormal=function(t,e,n){for(var i=0;i<n.length;i++){var r=n[i];null==t[r]||r in e||(e[r]=this[r])}},t.prototype.hasState=function(){return this.currentStates.length>0},t.prototype.getState=function(t){return this.states[t]},t.prototype.ensureState=function(t){var e=this.states;return e[t]||(e[t]={}),e[t]},t.prototype.clearStates=function(t){this.useState(vr,!1,t)},t.prototype.useState=function(t,e,n,i){var r=t===vr;if(this.hasState()||!r){var o=this.currentStates,a=this.stateTransition;if(!(P(o,t)>=0)||!e&&1!==o.length){var s;if(this.stateProxy&&!r&&(s=this.stateProxy(t)),s||(s=this.states&&this.states[t]),s||r){r||this.saveCurrentToNormalState(s);var l=!!(s&&s.hoverLayer||i);l&&this._toggleHoverLayerFlag(!0),this._applyStateObj(t,s,this._normalState,e,!n&&!this.__inHover&&a&&a.duration>0,a);var u=this._textContent,h=this._textGuide;return u&&u.useState(t,e,n,l),h&&h.useState(t,e,n,l),r?(this.currentStates=[],this._normalState={}):e?this.currentStates.push(t):this.currentStates=[t],this._updateAnimationTargets(),this.markRedraw(),!l&&this.__inHover&&(this._toggleHoverLayerFlag(!1),this.__dirty&=-2),s}I("State "+t+" not exists.")}}},t.prototype.useStates=function(t,e,n){if(t.length){var i=[],r=this.currentStates,o=t.length,a=o===r.length;if(a)for(var s=0;s<o;s++)if(t[s]!==r[s]){a=!1;break}if(a)return;for(s=0;s<o;s++){var l=t[s],u=void 0;this.stateProxy&&(u=this.stateProxy(l,t)),u||(u=this.states[l]),u&&i.push(u)}var h=i[o-1],c=!!(h&&h.hoverLayer||n);c&&this._toggleHoverLayerFlag(!0);var p=this._mergeStates(i),d=this.stateTransition;this.saveCurrentToNormalState(p),this._applyStateObj(t.join(","),p,this._normalState,!1,!e&&!this.__inHover&&d&&d.duration>0,d);var f=this._textContent,g=this._textGuide;f&&f.useStates(t,e,c),g&&g.useStates(t,e,c),this._updateAnimationTargets(),this.currentStates=t.slice(),this.markRedraw(),!c&&this.__inHover&&(this._toggleHoverLayerFlag(!1),this.__dirty&=-2)}else this.clearStates()},t.prototype._updateAnimationTargets=function(){for(var t=0;t<this.animators.length;t++){var e=this.animators[t];e.targetName&&e.changeTarget(this[e.targetName])}},t.prototype.removeState=function(t){var e=P(this.currentStates,t);if(e>=0){var n=this.currentStates.slice();n.splice(e,1),this.useStates(n)}},t.prototype.replaceState=function(t,e,n){var i=this.currentStates.slice(),r=P(i,t),o=P(i,e)>=0;r>=0?o?i.splice(r,1):i[r]=e:n&&!o&&i.push(e),this.useStates(i)},t.prototype.toggleState=function(t,e){e?this.useState(t,!0):this.removeState(t)},t.prototype._mergeStates=function(t){for(var e,n={},i=0;i<t.length;i++){var r=t[i];A(n,r),r.textConfig&&A(e=e||{},r.textConfig)}return e&&(n.textConfig=e),n},t.prototype._applyStateObj=function(t,e,n,i,r,o){var a=!(e&&i);e&&e.textConfig?(this.textConfig=A({},i?this.textConfig:n.textConfig),A(this.textConfig,e.textConfig)):a&&n.textConfig&&(this.textConfig=n.textConfig);for(var s={},l=!1,u=0;u<mr.length;u++){var h=mr[u],c=r&&xr[h];e&&null!=e[h]?c?(l=!0,s[h]=e[h]):this[h]=e[h]:a&&null!=n[h]&&(c?(l=!0,s[h]=n[h]):this[h]=n[h])}if(!r)for(u=0;u<this.animators.length;u++){var p=this.animators[u],d=p.targetName;p.getLoop()||p.__changeFinalValue(d?(e||n)[d]:e||n)}l&&this._transitionState(t,s,o)},t.prototype._attachComponent=function(t){if((!t.__zr||t.__hostTarget)&&t!==this){var e=this.__zr;e&&t.addSelfToZr(e),t.__zr=e,t.__hostTarget=this}},t.prototype._detachComponent=function(t){t.__zr&&t.removeSelfFromZr(t.__zr),t.__zr=null,t.__hostTarget=null},t.prototype.getClipPath=function(){return this._clipPath},t.prototype.setClipPath=function(t){this._clipPath&&this._clipPath!==t&&this.removeClipPath(),this._attachComponent(t),this._clipPath=t,this.markRedraw()},t.prototype.removeClipPath=function(){var t=this._clipPath;t&&(this._detachComponent(t),this._clipPath=null,this.markRedraw())},t.prototype.getTextContent=function(){return this._textContent},t.prototype.setTextContent=function(t){var e=this._textContent;e!==t&&(e&&e!==t&&this.removeTextContent(),t.innerTransformable=new qi,this._attachComponent(t),this._textContent=t,this.markRedraw())},t.prototype.setTextConfig=function(t){this.textConfig||(this.textConfig={}),A(this.textConfig,t),this.markRedraw()},t.prototype.removeTextConfig=function(){this.textConfig=null,this.markRedraw()},t.prototype.removeTextContent=function(){var t=this._textContent;t&&(t.innerTransformable=null,this._detachComponent(t),this._textContent=null,this._innerTextDefaultStyle=null,this.markRedraw())},t.prototype.getTextGuideLine=function(){return this._textGuide},t.prototype.setTextGuideLine=function(t){this._textGuide&&this._textGuide!==t&&this.removeTextGuideLine(),this._attachComponent(t),this._textGuide=t,this.markRedraw()},t.prototype.removeTextGuideLine=function(){var t=this._textGuide;t&&(this._detachComponent(t),this._textGuide=null,this.markRedraw())},t.prototype.markRedraw=function(){this.__dirty|=1;var t=this.__zr;t&&(this.__inHover?t.refreshHover():t.refresh()),this.__hostTarget&&this.__hostTarget.markRedraw()},t.prototype.dirty=function(){this.markRedraw()},t.prototype._toggleHoverLayerFlag=function(t){this.__inHover=t;var e=this._textContent,n=this._textGuide;e&&(e.__inHover=t),n&&(n.__inHover=t)},t.prototype.addSelfToZr=function(t){if(this.__zr!==t){this.__zr=t;var e=this.animators;if(e)for(var n=0;n<e.length;n++)t.animation.addAnimator(e[n]);this._clipPath&&this._clipPath.addSelfToZr(t),this._textContent&&this._textContent.addSelfToZr(t),this._textGuide&&this._textGuide.addSelfToZr(t)}},t.prototype.removeSelfFromZr=function(t){if(this.__zr){this.__zr=null;var e=this.animators;if(e)for(var n=0;n<e.length;n++)t.animation.removeAnimator(e[n]);this._clipPath&&this._clipPath.removeSelfFromZr(t),this._textContent&&this._textContent.removeSelfFromZr(t),this._textGuide&&this._textGuide.removeSelfFromZr(t)}},t.prototype.animate=function(t,e,n){var i=t?this[t]:this;var r=new ai(i,e,n);return t&&(r.targetName=t),this.addAnimator(r,t),r},t.prototype.addAnimator=function(t,e){var n=this.__zr,i=this;t.during((function(){i.updateDuringAnimation(e)})).done((function(){var e=i.animators,n=P(e,t);n>=0&&e.splice(n,1)})),this.animators.push(t),n&&n.animation.addAnimator(t),n&&n.wakeUp()},t.prototype.updateDuringAnimation=function(t){this.markRedraw()},t.prototype.stopAnimation=function(t,e){for(var n=this.animators,i=n.length,r=[],o=0;o<i;o++){var a=n[o];t&&t!==a.scope?r.push(a):a.stop(e)}return this.animators=r,this},t.prototype.animateTo=function(t,e,n){Sr(this,t,e,n)},t.prototype.animateFrom=function(t,e,n){Sr(this,t,e,n,!0)},t.prototype._transitionState=function(t,e,n,i){for(var r=Sr(this,e,n,i),o=0;o<r.length;o++)r[o].__fromStateTransition=t},t.prototype.getBoundingRect=function(){return null},t.prototype.getPaintRect=function(){return null},t.initDefaultProps=function(){var e=t.prototype;e.type="element",e.name="",e.ignore=e.silent=e.isGroup=e.draggable=e.dragging=e.ignoreClip=e.__inHover=!1,e.__dirty=1;function n(t,n,i,r){function o(t,e){Object.defineProperty(e,0,{get:function(){return t[i]},set:function(e){t[i]=e}}),Object.defineProperty(e,1,{get:function(){return t[r]},set:function(e){t[r]=e}})}Object.defineProperty(e,t,{get:function(){this[n]||o(this,this[n]=[]);return this[n]},set:function(t){this[i]=t[0],this[r]=t[1],this[n]=t,o(this,t)}})}Object.defineProperty&&(n("position","_legacyPos","x","y"),n("scale","_legacyScale","scaleX","scaleY"),n("origin","_legacyOrigin","originX","originY"))}(),t}();function Sr(t,e,n,i,r){var o=[];Tr(t,"",t,e,n=n||{},i,o,r);var a=o.length,s=!1,l=n.done,u=n.aborted,h=function(){s=!0,--a<=0&&(s?l&&l():u&&u())},c=function(){--a<=0&&(s?l&&l():u&&u())};a||l&&l(),o.length>0&&n.during&&o[0].during((function(t,e){n.during(e)}));for(var p=0;p<o.length;p++){var d=o[p];h&&d.done(h),c&&d.aborted(c),n.force&&d.duration(n.duration),d.start(n.easing)}return o}function Mr(t,e,n){for(var i=0;i<n;i++)t[i]=e[i]}function Ir(t,e,n){if(N(e[n]))if(N(t[n])||(t[n]=[]),$(e[n])){var i=e[n].length;t[n].length!==i&&(t[n]=new e[n].constructor(i),Mr(t[n],e[n],i))}else{var r=e[n],o=t[n],a=r.length;if(N(r[0]))for(var s=r[0].length,l=0;l<a;l++)o[l]?Mr(o[l],r[l],s):o[l]=Array.prototype.slice.call(r[l]);else Mr(o,r,a);o.length=r.length}else t[n]=e[n]}function Tr(t,e,n,i,r,o,a,s){for(var l=G(i),u=r.duration,h=r.delay,c=r.additive,p=r.setToFinal,d=!q(o),f=t.animators,g=[],y=0;y<l.length;y++){var v=l[y],m=i[v];if(null!=m&&null!=n[v]&&(d||o[v]))if(!q(m)||N(m)||Q(m))g.push(v);else{if(e){s||(n[v]=m,t.updateDuringAnimation(e));continue}Tr(t,v,n[v],m,r,o&&o[v],a,s)}else s||(n[v]=m,t.updateDuringAnimation(e),g.push(v))}var x=g.length;if(!c&&x)for(var _=0;_<f.length;_++){if((w=f[_]).targetName===e)if(w.stopTracks(g)){var b=P(f,w);f.splice(b,1)}}if(r.force||(x=(g=B(g,(function(t){return e=i[t],r=n[t],!(e===r||N(e)&&N(r)&&function(t,e){var n=t.length;if(n!==e.length)return!1;for(var i=0;i<n;i++)if(t[i]!==e[i])return!1;return!0}(e,r));var e,r}))).length),x>0||r.force&&!a.length){var w,S=void 0,M=void 0,I=void 0;if(s){M={},p&&(S={});for(_=0;_<x;_++){M[v=g[_]]=n[v],p?S[v]=i[v]:n[v]=i[v]}}else if(p){I={};for(_=0;_<x;_++){I[v=g[_]]=ti(n[v]),Ir(n,i,v)}}(w=new ai(n,!1,!1,c?B(f,(function(t){return t.targetName===e})):null)).targetName=e,r.scope&&(w.scope=r.scope),p&&S&&w.whenWithKeys(0,S,g),I&&w.whenWithKeys(0,I,g),w.whenWithKeys(null==u?500:u,s?M:i,g).delay(h||0),t.addAnimator(w,e),a.push(w)}}R(wr,Xt),R(wr,qi);var Cr=function(t){function e(e){var n=t.call(this)||this;return n.isGroup=!0,n._children=[],n.attr(e),n}return n(e,t),e.prototype.childrenRef=function(){return this._children},e.prototype.children=function(){return this._children.slice()},e.prototype.childAt=function(t){return this._children[t]},e.prototype.childOfName=function(t){for(var e=this._children,n=0;n<e.length;n++)if(e[n].name===t)return e[n]},e.prototype.childCount=function(){return this._children.length},e.prototype.add=function(t){return t&&t!==this&&t.parent!==this&&(this._children.push(t),this._doAdd(t)),this},e.prototype.addBefore=function(t,e){if(t&&t!==this&&t.parent!==this&&e&&e.parent===this){var n=this._children,i=n.indexOf(e);i>=0&&(n.splice(i,0,t),this._doAdd(t))}return this},e.prototype.replace=function(t,e){var n=P(this._children,t);return n>=0&&this.replaceAt(e,n),this},e.prototype.replaceAt=function(t,e){var n=this._children,i=n[e];if(t&&t!==this&&t.parent!==this&&t!==i){n[e]=t,i.parent=null;var r=this.__zr;r&&i.removeSelfFromZr(r),this._doAdd(t)}return this},e.prototype._doAdd=function(t){t.parent&&t.parent.remove(t),t.parent=this;var e=this.__zr;e&&e!==t.__zr&&t.addSelfToZr(e),e&&e.refresh()},e.prototype.remove=function(t){var e=this.__zr,n=this._children,i=P(n,t);return i<0||(n.splice(i,1),t.parent=null,e&&t.removeSelfFromZr(e),e&&e.refresh()),this},e.prototype.removeAll=function(){for(var t=this._children,e=this.__zr,n=0;n<t.length;n++){var i=t[n];e&&i.removeSelfFromZr(e),i.parent=null}return t.length=0,this},e.prototype.eachChild=function(t,e){for(var n=this._children,i=0;i<n.length;i++){var r=n[i];t.call(e,r,i)}return this},e.prototype.traverse=function(t,e){for(var n=0;n<this._children.length;n++){var i=this._children[n],r=t.call(e,i);i.isGroup&&!r&&i.traverse(t,e)}return this},e.prototype.addSelfToZr=function(e){t.prototype.addSelfToZr.call(this,e);for(var n=0;n<this._children.length;n++){this._children[n].addSelfToZr(e)}},e.prototype.removeSelfFromZr=function(e){t.prototype.removeSelfFromZr.call(this,e);for(var n=0;n<this._children.length;n++){this._children[n].removeSelfFromZr(e)}},e.prototype.getBoundingRect=function(t){for(var e=new sr(0,0,0,0),n=t||this._children,i=[],r=null,o=0;o<n.length;o++){var a=n[o];if(!a.ignore&&!a.invisible){var s=a.getBoundingRect(),l=a.getLocalTransform(i);l?(sr.applyTransform(e,s,l),(r=r||e.clone()).union(e)):(r=r||s.clone()).union(s)}}return r||e},e}(wr);Cr.prototype.type="group";
+/*!
+ * ZRender, a high performance 2d drawing library.
+ *
+ * Copyright (c) 2013, Baidu Inc.
+ * All rights reserved.
+ *
+ * LICENSE
+ * https://github.com/ecomfe/zrender/blob/master/LICENSE.txt
+ */
+var Dr={},Ar={};var kr=function(){function t(t,e,n){var i=this;this._sleepAfterStill=10,this._stillFrameAccum=0,this._needsRefresh=!0,this._needsRefreshHover=!0,this._darkMode=!1,n=n||{},this.dom=e,this.id=t;var o=new Ae,a=n.renderer||"canvas";Dr[a]||(a=G(Dr)[0]),n.useDirtyRect=null!=n.useDirtyRect&&n.useDirtyRect;var s=new Dr[a](e,o,n,t),l=n.ssr||s.ssrOnly;this.storage=o,this.painter=s;var u=r.node||r.worker||l?null:new Ci(s.getViewportRoot(),s.root);this.handler=new ve(o,s,u,s.root),this.animation=new hi({stage:{update:l?null:function(){return i._flush(!0)}}}),l||this.animation.start()}return t.prototype.add=function(t){t&&(this.storage.addRoot(t),t.addSelfToZr(this),this.refresh())},t.prototype.remove=function(t){t&&(this.storage.delRoot(t),t.removeSelfFromZr(this),this.refresh())},t.prototype.configLayer=function(t,e){this.painter.configLayer&&this.painter.configLayer(t,e),this.refresh()},t.prototype.setBackgroundColor=function(t){this.painter.setBackgroundColor&&this.painter.setBackgroundColor(t),this.refresh(),this._backgroundColor=t,this._darkMode=function(t){if(!t)return!1;if("string"==typeof t)return Ln(t,1)<.4;if(t.colorStops){for(var e=t.colorStops,n=0,i=e.length,r=0;r<i;r++)n+=Ln(e[r].color,1);return(n/=i)<.4}return!1}(t)},t.prototype.getBackgroundColor=function(){return this._backgroundColor},t.prototype.setDarkMode=function(t){this._darkMode=t},t.prototype.isDarkMode=function(){return this._darkMode},t.prototype.refreshImmediately=function(t){t||this.animation.update(!0),this._needsRefresh=!1,this.painter.refresh(),this._needsRefresh=!1},t.prototype.refresh=function(){this._needsRefresh=!0,this.animation.start()},t.prototype.flush=function(){this._flush(!1)},t.prototype._flush=function(t){var e,n=si();this._needsRefresh&&(e=!0,this.refreshImmediately(t)),this._needsRefreshHover&&(e=!0,this.refreshHoverImmediately());var i=si();e?(this._stillFrameAccum=0,this.trigger("rendered",{elapsedTime:i-n})):this._sleepAfterStill>0&&(this._stillFrameAccum++,this._stillFrameAccum>this._sleepAfterStill&&this.animation.stop())},t.prototype.setSleepAfterStill=function(t){this._sleepAfterStill=t},t.prototype.wakeUp=function(){this.animation.start(),this._stillFrameAccum=0},t.prototype.refreshHover=function(){this._needsRefreshHover=!0},t.prototype.refreshHoverImmediately=function(){this._needsRefreshHover=!1,this.painter.refreshHover&&"canvas"===this.painter.getType()&&this.painter.refreshHover()},t.prototype.resize=function(t){t=t||{},this.painter.resize(t.width,t.height),this.handler.resize()},t.prototype.clearAnimation=function(){this.animation.clear()},t.prototype.getWidth=function(){return this.painter.getWidth()},t.prototype.getHeight=function(){return this.painter.getHeight()},t.prototype.setCursorStyle=function(t){this.handler.setCursorStyle(t)},t.prototype.findHover=function(t,e){return this.handler.findHover(t,e)},t.prototype.on=function(t,e,n){return this.handler.on(t,e,n),this},t.prototype.off=function(t,e){this.handler.off(t,e)},t.prototype.trigger=function(t,e){this.handler.trigger(t,e)},t.prototype.clear=function(){for(var t=this.storage.getRoots(),e=0;e<t.length;e++)t[e]instanceof Cr&&t[e].removeSelfFromZr(this);this.storage.delAllRoots(),this.painter.clear()},t.prototype.dispose=function(){var t;this.animation.stop(),this.clear(),this.storage.dispose(),this.painter.dispose(),this.handler.dispose(),this.animation=this.storage=this.painter=this.handler=null,t=this.id,delete Ar[t]},t}();function Lr(t,e){var n=new kr(M(),t,e);return Ar[n.id]=n,n}function Pr(t,e){Dr[t]=e}var Or=Object.freeze({__proto__:null,init:Lr,dispose:function(t){t.dispose()},disposeAll:function(){for(var t in Ar)Ar.hasOwnProperty(t)&&Ar[t].dispose();Ar={}},getInstance:function(t){return Ar[t]},registerPainter:Pr,version:"5.3.0"}),Rr=1e-4;function Nr(t,e,n,i){var r=e[0],o=e[1],a=n[0],s=n[1],l=o-r,u=s-a;if(0===l)return 0===u?a:(a+s)/2;if(i)if(l>0){if(t<=r)return a;if(t>=o)return s}else{if(t>=r)return a;if(t<=o)return s}else{if(t===r)return a;if(t===o)return s}return(t-r)/l*u+a}function Er(t,e){switch(t){case"center":case"middle":t="50%";break;case"left":case"top":t="0%";break;case"right":case"bottom":t="100%"}return X(t)?(n=t,n.replace(/^\s+|\s+$/g,"")).match(/%$/)?parseFloat(t)/100*e:parseFloat(t):null==t?NaN:+t;var n}function zr(t,e,n){return null==e&&(e=10),e=Math.min(Math.max(0,e),20),t=(+t).toFixed(e),n?t:+t}function Vr(t){return t.sort((function(t,e){return t-e})),t}function Br(t){if(t=+t,isNaN(t))return 0;if(t>1e-14)for(var e=1,n=0;n<15;n++,e*=10)if(Math.round(t*e)/e===t)return n;return Fr(t)}function Fr(t){var e=t.toString().toLowerCase(),n=e.indexOf("e"),i=n>0?+e.slice(n+1):0,r=n>0?n:e.length,o=e.indexOf("."),a=o<0?0:r-1-o;return Math.max(0,a-i)}function Gr(t,e){var n=Math.log,i=Math.LN10,r=Math.floor(n(t[1]-t[0])/i),o=Math.round(n(Math.abs(e[1]-e[0]))/i),a=Math.min(Math.max(-r+o,0),20);return isFinite(a)?a:20}function Wr(t,e,n){if(!t[e])return 0;var i=V(t,(function(t,e){return t+(isNaN(e)?0:e)}),0);if(0===i)return 0;for(var r=Math.pow(10,n),o=z(t,(function(t){return(isNaN(t)?0:t)/i*r*100})),a=100*r,s=z(o,(function(t){return Math.floor(t)})),l=V(s,(function(t,e){return t+e}),0),u=z(o,(function(t,e){return t-s[e]}));l<a;){for(var h=Number.NEGATIVE_INFINITY,c=null,p=0,d=u.length;p<d;++p)u[p]>h&&(h=u[p],c=p);++s[c],u[c]=0,++l}return s[e]/r}function Hr(t,e){var n=Math.max(Br(t),Br(e)),i=t+e;return n>20?i:zr(i,n)}var Yr=9007199254740991;function Ur(t){var e=2*Math.PI;return(t%e+e)%e}function Xr(t){return t>-1e-4&&t<Rr}var Zr=/^(?:(\d{4})(?:[-\/](\d{1,2})(?:[-\/](\d{1,2})(?:[T ](\d{1,2})(?::(\d{1,2})(?::(\d{1,2})(?:[.,](\d+))?)?)?(Z|[\+\-]\d\d:?\d\d)?)?)?)?)?$/;function jr(t){if(t instanceof Date)return t;if(X(t)){var e=Zr.exec(t);if(!e)return new Date(NaN);if(e[8]){var n=+e[4]||0;return"Z"!==e[8].toUpperCase()&&(n-=+e[8].slice(0,3)),new Date(Date.UTC(+e[1],+(e[2]||1)-1,+e[3]||1,n,+(e[5]||0),+e[6]||0,e[7]?+e[7].substring(0,3):0))}return new Date(+e[1],+(e[2]||1)-1,+e[3]||1,+e[4]||0,+(e[5]||0),+e[6]||0,e[7]?+e[7].substring(0,3):0)}return null==t?new Date(NaN):new Date(Math.round(t))}function qr(t){return Math.pow(10,Kr(t))}function Kr(t){if(0===t)return 0;var e=Math.floor(Math.log(t)/Math.LN10);return t/Math.pow(10,e)>=10&&e++,e}function $r(t,e){var n=Kr(t),i=Math.pow(10,n),r=t/i;return t=(e?r<1.5?1:r<2.5?2:r<4?3:r<7?5:10:r<1?1:r<2?2:r<3?3:r<5?5:10)*i,n>=-20?+t.toFixed(n<0?-n:0):t}function Jr(t,e){var n=(t.length-1)*e+1,i=Math.floor(n),r=+t[i-1],o=n-i;return o?r+o*(t[i]-r):r}function Qr(t){t.sort((function(t,e){return s(t,e,0)?-1:1}));for(var e=-1/0,n=1,i=0;i<t.length;){for(var r=t[i].interval,o=t[i].close,a=0;a<2;a++)r[a]<=e&&(r[a]=e,o[a]=a?1:1-n),e=r[a],n=o[a];r[0]===r[1]&&o[0]*o[1]!=1?t.splice(i,1):i++}return t;function s(t,e,n){return t.interval[n]<e.interval[n]||t.interval[n]===e.interval[n]&&(t.close[n]-e.close[n]==(n?-1:1)||!n&&s(t,e,1))}}function to(t){var e=parseFloat(t);return e==t&&(0!==e||!X(t)||t.indexOf("x")<=0)?e:NaN}function eo(t){return!isNaN(to(t))}function no(){return Math.round(9*Math.random())}function io(t,e){return 0===e?t:io(e,t%e)}function ro(t,e){return null==t?e:null==e?t:t*e/io(t,e)}"undefined"!=typeof console&&console.warn&&console.log;function oo(t){0}function ao(t){throw new Error(t)}function so(t,e,n){return(e-t)*n+t}var lo="series\0",uo="\0_ec_\0";function ho(t){return t instanceof Array?t:null==t?[]:[t]}function co(t,e,n){if(t){t[e]=t[e]||{},t.emphasis=t.emphasis||{},t.emphasis[e]=t.emphasis[e]||{};for(var i=0,r=n.length;i<r;i++){var o=n[i];!t.emphasis[e].hasOwnProperty(o)&&t[e].hasOwnProperty(o)&&(t.emphasis[e][o]=t[e][o])}}}var po=["fontStyle","fontWeight","fontSize","fontFamily","rich","tag","color","textBorderColor","textBorderWidth","width","height","lineHeight","align","verticalAlign","baseline","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","textShadowColor","textShadowBlur","textShadowOffsetX","textShadowOffsetY","backgroundColor","borderColor","borderWidth","borderRadius","padding"];function fo(t){return!q(t)||Y(t)||t instanceof Date?t:t.value}function go(t){return q(t)&&!(t instanceof Array)}function yo(t,e,n){var i="normalMerge"===n,r="replaceMerge"===n,o="replaceAll"===n;t=t||[],e=(e||[]).slice();var a=ft();E(e,(function(t,n){q(t)||(e[n]=null)}));var s,l,u=function(t,e,n){var i=[];if("replaceAll"===n)return i;for(var r=0;r<t.length;r++){var o=t[r];o&&null!=o.id&&e.set(o.id,r),i.push({existing:"replaceMerge"===n||bo(o)?null:o,newOption:null,keyInfo:null,brandNew:null})}return i}(t,a,n);return(i||r)&&function(t,e,n,i){E(i,(function(r,o){if(r&&null!=r.id){var a=mo(r.id),s=n.get(a);if(null!=s){var l=t[s];lt(!l.newOption,'Duplicated option on id "'+a+'".'),l.newOption=r,l.existing=e[s],i[o]=null}}}))}(u,t,a,e),i&&function(t,e){E(e,(function(n,i){if(n&&null!=n.name)for(var r=0;r<t.length;r++){var o=t[r].existing;if(!t[r].newOption&&o&&(null==o.id||null==n.id)&&!bo(n)&&!bo(o)&&vo("name",o,n))return t[r].newOption=n,void(e[i]=null)}}))}(u,e),i||r?function(t,e,n){E(e,(function(e){if(e){for(var i,r=0;(i=t[r])&&(i.newOption||bo(i.existing)||i.existing&&null!=e.id&&!vo("id",e,i.existing));)r++;i?(i.newOption=e,i.brandNew=n):t.push({newOption:e,brandNew:n,existing:null,keyInfo:null}),r++}}))}(u,e,r):o&&function(t,e){E(e,(function(e){t.push({newOption:e,brandNew:!0,existing:null,keyInfo:null})}))}(u,e),s=u,l=ft(),E(s,(function(t){var e=t.existing;e&&l.set(e.id,t)})),E(s,(function(t){var e=t.newOption;lt(!e||null==e.id||!l.get(e.id)||l.get(e.id)===t,"id duplicates: "+(e&&e.id)),e&&null!=e.id&&l.set(e.id,t),!t.keyInfo&&(t.keyInfo={})})),E(s,(function(t,e){var n=t.existing,i=t.newOption,r=t.keyInfo;if(q(i)){if(r.name=null!=i.name?mo(i.name):n?n.name:lo+e,n)r.id=mo(n.id);else if(null!=i.id)r.id=mo(i.id);else{var o=0;do{r.id="\0"+r.name+"\0"+o++}while(l.get(r.id))}l.set(r.id,t)}})),u}function vo(t,e,n){var i=xo(e[t],null),r=xo(n[t],null);return null!=i&&null!=r&&i===r}function mo(t){return xo(t,"")}function xo(t,e){return null==t?e:X(t)?t:j(t)||Z(t)?t+"":e}function _o(t){var e=t.name;return!(!e||!e.indexOf(lo))}function bo(t){return t&&null!=t.id&&0===mo(t.id).indexOf(uo)}function wo(t,e){return null!=e.dataIndexInside?e.dataIndexInside:null!=e.dataIndex?Y(e.dataIndex)?z(e.dataIndex,(function(e){return t.indexOfRawIndex(e)})):t.indexOfRawIndex(e.dataIndex):null!=e.name?Y(e.name)?z(e.name,(function(e){return t.indexOfName(e)})):t.indexOfName(e.name):void 0}function So(){var t="__ec_inner_"+Mo++;return function(e){return e[t]||(e[t]={})}}var Mo=no();function Io(t,e,n){var i=To(e,n),r=i.mainTypeSpecified,o=i.queryOptionMap,a=i.others,s=n?n.defaultMainType:null;return!r&&s&&o.set(s,{}),o.each((function(e,i){var r=Ao(t,i,e,{useDefault:s===i,enableAll:!n||null==n.enableAll||n.enableAll,enableNone:!n||null==n.enableNone||n.enableNone});a[i+"Models"]=r.models,a[i+"Model"]=r.models[0]})),a}function To(t,e){var n;if(X(t)){var i={};i[t+"Index"]=0,n=i}else n=t;var r=ft(),o={},a=!1;return E(n,(function(t,n){if("dataIndex"!==n&&"dataIndexInside"!==n){var i=n.match(/^(\w+)(Index|Id|Name)$/)||[],s=i[1],l=(i[2]||"").toLowerCase();if(s&&l&&!(e&&e.includeMainTypes&&P(e.includeMainTypes,s)<0))a=a||!!s,(r.get(s)||r.set(s,{}))[l]=t}else o[n]=t})),{mainTypeSpecified:a,queryOptionMap:r,others:o}}var Co={useDefault:!0,enableAll:!1,enableNone:!1},Do={useDefault:!1,enableAll:!0,enableNone:!0};function Ao(t,e,n,i){i=i||Co;var r=n.index,o=n.id,a=n.name,s={models:null,specified:null!=r||null!=o||null!=a};if(!s.specified){var l=void 0;return s.models=i.useDefault&&(l=t.getComponent(e))?[l]:[],s}return"none"===r||!1===r?(lt(i.enableNone,'`"none"` or `false` is not a valid value on index option.'),s.models=[],s):("all"===r&&(lt(i.enableAll,'`"all"` is not a valid value on index option.'),r=o=a=null),s.models=t.queryComponents({mainType:e,index:r,id:o,name:a}),s)}function ko(t,e,n){t.setAttribute?t.setAttribute(e,n):t[e]=n}function Lo(t,e){var n=ft(),i=[];return E(t,(function(t){var r=e(t);(n.get(r)||(i.push(r),n.set(r,[]))).push(t)})),{keys:i,buckets:n}}function Po(t,e,n,i,r){var o=null==e||"auto"===e;if(null==i)return i;if(j(i))return zr(f=so(n||0,i,r),o?Math.max(Br(n||0),Br(i)):e);if(X(i))return r<1?n:i;for(var a=[],s=n,l=i,u=Math.max(s?s.length:0,l.length),h=0;h<u;++h){var c=t.getDimensionInfo(h);if(c&&"ordinal"===c.type)a[h]=(r<1&&s?s:l)[h];else{var p=s&&s[h]?s[h]:0,d=l[h],f=so(p,d,r);a[h]=zr(f,o?Math.max(Br(p),Br(d)):e)}}return a}var Oo="___EC__COMPONENT__CONTAINER___",Ro="___EC__EXTENDED_CLASS___";function No(t){var e={main:"",sub:""};if(t){var n=t.split(".");e.main=n[0]||"",e.sub=n[1]||""}return e}function Eo(t,e){t.$constructor=t,t.extend=function(t){var e,i,r=this;return U(i=r)&&/^class\s/.test(Function.prototype.toString.call(i))?e=function(t){function e(){return t.apply(this,arguments)||this}return n(e,t),e}(r):O(e=function(){(t.$constructor||r).apply(this,arguments)},this),A(e.prototype,t),e[Ro]=!0,e.extend=this.extend,e.superCall=Bo,e.superApply=Fo,e.superClass=r,e}}function zo(t,e){t.extend=e.extend}var Vo=Math.round(10*Math.random());function Bo(t,e){for(var n=[],i=2;i<arguments.length;i++)n[i-2]=arguments[i];return this.superClass.prototype[e].apply(t,n)}function Fo(t,e,n){return this.superClass.prototype[e].apply(t,n)}function Go(t){var e={};t.registerClass=function(t){var n,i=t.type||t.prototype.type;if(i){lt(/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(n=i),'componentType "'+n+'" illegal'),t.prototype.type=i;var r=No(i);if(r.sub){if(r.sub!==Oo){(function(t){var n=e[t.main];n&&n[Oo]||((n=e[t.main]={})[Oo]=!0);return n}(r))[r.sub]=t}}else e[r.main]=t}return t},t.getClass=function(t,n,i){var r=e[t];if(r&&r[Oo]&&(r=n?r[n]:null),i&&!r)throw new Error(n?"Component "+t+"."+(n||"")+" is used but not imported.":t+".type should be specified.");return r},t.getClassesByMainType=function(t){var n=No(t),i=[],r=e[n.main];return r&&r[Oo]?E(r,(function(t,e){e!==Oo&&i.push(t)})):i.push(r),i},t.hasClass=function(t){var n=No(t);return!!e[n.main]},t.getAllClassMainTypes=function(){var t=[];return E(e,(function(e,n){t.push(n)})),t},t.hasSubTypes=function(t){var n=No(t),i=e[n.main];return i&&i[Oo]}}function Wo(t,e){for(var n=0;n<t.length;n++)t[n][1]||(t[n][1]=t[n][0]);return e=e||!1,function(n,i,r){for(var o={},a=0;a<t.length;a++){var s=t[a][1];if(!(i&&P(i,s)>=0||r&&P(r,s)<0)){var l=n.getShallow(s,e);null!=l&&(o[t[a][0]]=l)}}return o}}var Ho=Wo([["fill","color"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["opacity"],["shadowColor"]]),Yo=function(){function t(){}return t.prototype.getAreaStyle=function(t,e){return Ho(this,t,e)},t}(),Uo=new ln(50);function Xo(t){if("string"==typeof t){var e=Uo.get(t);return e&&e.image}return t}function Zo(t,e,n,i,r){if(t){if("string"==typeof t){if(e&&e.__zrImageSrc===t||!n)return e;var o=Uo.get(t),a={hostEl:n,cb:i,cbPayload:r};if(o)!qo(e=o.image)&&o.pending.push(a);else{var s=h.loadImage(t,jo,jo);s.__zrImageSrc=t,Uo.put(t,s.__cachedImgObj={image:s,pending:[a]})}return e}return t}return e}function jo(){var t=this.__cachedImgObj;this.onload=this.onerror=this.__cachedImgObj=null;for(var e=0;e<t.pending.length;e++){var n=t.pending[e],i=n.cb;i&&i(this,n.cbPayload),n.hostEl.dirty()}t.pending.length=0}function qo(t){return t&&t.width&&t.height}var Ko=/\{([a-zA-Z0-9_]+)\|([^}]*)\}/g;function $o(t,e,n,i,r){if(!e)return"";var o=(t+"").split("\n");r=Jo(e,n,i,r);for(var a=0,s=o.length;a<s;a++)o[a]=Qo(o[a],r);return o.join("\n")}function Jo(t,e,n,i){var r=A({},i=i||{});r.font=e,n=rt(n,"..."),r.maxIterations=rt(i.maxIterations,2);var o=r.minChar=rt(i.minChar,0);r.cnCharWidth=ur("国",e);var a=r.ascCharWidth=ur("a",e);r.placeholder=rt(i.placeholder,"");for(var s=t=Math.max(0,t-1),l=0;l<o&&s>=a;l++)s-=a;var u=ur(n,e);return u>s&&(n="",u=0),s=t-u,r.ellipsis=n,r.ellipsisWidth=u,r.contentWidth=s,r.containerWidth=t,r}function Qo(t,e){var n=e.containerWidth,i=e.font,r=e.contentWidth;if(!n)return"";var o=ur(t,i);if(o<=n)return t;for(var a=0;;a++){if(o<=r||a>=e.maxIterations){t+=e.ellipsis;break}var s=0===a?ta(t,r,e.ascCharWidth,e.cnCharWidth):o>0?Math.floor(t.length*r/o):0;o=ur(t=t.substr(0,s),i)}return""===t&&(t=e.placeholder),t}function ta(t,e,n,i){for(var r=0,o=0,a=t.length;o<a&&r<e;o++){var s=t.charCodeAt(o);r+=0<=s&&s<=127?n:i}return o}var ea=function(){},na=function(t){this.tokens=[],t&&(this.tokens=t)},ia=function(){this.width=0,this.height=0,this.contentWidth=0,this.contentHeight=0,this.outerWidth=0,this.outerHeight=0,this.lines=[]};function ra(t,e,n,i,r){var o,a,s=""===e,l=r&&n.rich[r]||{},u=t.lines,h=l.font||n.font,c=!1;if(i){var p=l.padding,d=p?p[1]+p[3]:0;if(null!=l.width&&"auto"!==l.width){var f=gr(l.width,i.width)+d;u.length>0&&f+i.accumWidth>i.width&&(o=e.split("\n"),c=!0),i.accumWidth=f}else{var g=sa(e,h,i.width,i.breakAll,i.accumWidth);i.accumWidth=g.accumWidth+d,a=g.linesWidths,o=g.lines}}else o=e.split("\n");for(var y=0;y<o.length;y++){var v=o[y],m=new ea;if(m.styleName=r,m.text=v,m.isLineHolder=!v&&!s,"number"==typeof l.width?m.width=l.width:m.width=a?a[y]:ur(v,h),y||c)u.push(new na([m]));else{var x=(u[u.length-1]||(u[0]=new na)).tokens,_=x.length;1===_&&x[0].isLineHolder?x[0]=m:(v||!_||s)&&x.push(m)}}}var oa=V(",&?/;] ".split(""),(function(t,e){return t[e]=!0,t}),{});function aa(t){return!function(t){var e=t.charCodeAt(0);return e>=33&&e<=383}(t)||!!oa[t]}function sa(t,e,n,i,r){for(var o=[],a=[],s="",l="",u=0,h=0,c=0;c<t.length;c++){var p=t.charAt(c);if("\n"!==p){var d=ur(p,e),f=!i&&!aa(p);(o.length?h+d>n:r+h+d>n)?h?(s||l)&&(f?(s||(s=l,l="",h=u=0),o.push(s),a.push(h-u),l+=p,s="",h=u+=d):(l&&(s+=l,l="",u=0),o.push(s),a.push(h),s=p,h=d)):f?(o.push(l),a.push(u),l=p,u=d):(o.push(p),a.push(d)):(h+=d,f?(l+=p,u+=d):(l&&(s+=l,l="",u=0),s+=p))}else l&&(s+=l,h+=u),o.push(s),a.push(h),s="",l="",u=0,h=0}return o.length||s||(s=t,l="",u=0),l&&(s+=l),s&&(o.push(s),a.push(h)),1===o.length&&(h+=r),{accumWidth:h,lines:o,linesWidths:a}}var la="__zr_style_"+Math.round(10*Math.random()),ua={shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0,shadowColor:"#000",opacity:1,blend:"source-over"},ha={style:{shadowBlur:!0,shadowOffsetX:!0,shadowOffsetY:!0,shadowColor:!0,opacity:!0}};ua[la]=!0;var ca=["z","z2","invisible"],pa=["invisible"],da=function(t){function e(e){return t.call(this,e)||this}var i;return n(e,t),e.prototype._init=function(e){for(var n=G(e),i=0;i<n.length;i++){var r=n[i];"style"===r?this.useStyle(e[r]):t.prototype.attrKV.call(this,r,e[r])}this.style||this.useStyle({})},e.prototype.beforeBrush=function(){},e.prototype.afterBrush=function(){},e.prototype.innerBeforeBrush=function(){},e.prototype.innerAfterBrush=function(){},e.prototype.shouldBePainted=function(t,e,n,i){var r=this.transform;if(this.ignore||this.invisible||0===this.style.opacity||this.culling&&function(t,e,n){fa.copy(t.getBoundingRect()),t.transform&&fa.applyTransform(t.transform);return ga.width=e,ga.height=n,!fa.intersect(ga)}(this,t,e)||r&&!r[0]&&!r[3])return!1;if(n&&this.__clipPaths)for(var o=0;o<this.__clipPaths.length;++o)if(this.__clipPaths[o].isZeroArea())return!1;if(i&&this.parent)for(var a=this.parent;a;){if(a.ignore)return!1;a=a.parent}return!0},e.prototype.contain=function(t,e){return this.rectContain(t,e)},e.prototype.traverse=function(t,e){t.call(e,this)},e.prototype.rectContain=function(t,e){var n=this.transformCoordToLocal(t,e);return this.getBoundingRect().contain(n[0],n[1])},e.prototype.getPaintRect=function(){var t=this._paintRect;if(!this._paintRect||this.__dirty){var e=this.transform,n=this.getBoundingRect(),i=this.style,r=i.shadowBlur||0,o=i.shadowOffsetX||0,a=i.shadowOffsetY||0;t=this._paintRect||(this._paintRect=new sr(0,0,0,0)),e?sr.applyTransform(t,n,e):t.copy(n),(r||o||a)&&(t.width+=2*r+Math.abs(o),t.height+=2*r+Math.abs(a),t.x=Math.min(t.x,t.x+o-r),t.y=Math.min(t.y,t.y+a-r));var s=this.dirtyRectTolerance;t.isZero()||(t.x=Math.floor(t.x-s),t.y=Math.floor(t.y-s),t.width=Math.ceil(t.width+1+2*s),t.height=Math.ceil(t.height+1+2*s))}return t},e.prototype.setPrevPaintRect=function(t){t?(this._prevPaintRect=this._prevPaintRect||new sr(0,0,0,0),this._prevPaintRect.copy(t)):this._prevPaintRect=null},e.prototype.getPrevPaintRect=function(){return this._prevPaintRect},e.prototype.animateStyle=function(t){return this.animate("style",t)},e.prototype.updateDuringAnimation=function(t){"style"===t?this.dirtyStyle():this.markRedraw()},e.prototype.attrKV=function(e,n){"style"!==e?t.prototype.attrKV.call(this,e,n):this.style?this.setStyle(n):this.useStyle(n)},e.prototype.setStyle=function(t,e){return"string"==typeof t?this.style[t]=e:A(this.style,t),this.dirtyStyle(),this},e.prototype.dirtyStyle=function(t){t||this.markRedraw(),this.__dirty|=2,this._rect&&(this._rect=null)},e.prototype.dirty=function(){this.dirtyStyle()},e.prototype.styleChanged=function(){return!!(2&this.__dirty)},e.prototype.styleUpdated=function(){this.__dirty&=-3},e.prototype.createStyle=function(t){return yt(ua,t)},e.prototype.useStyle=function(t){t[la]||(t=this.createStyle(t)),this.__inHover?this.__hoverStyle=t:this.style=t,this.dirtyStyle()},e.prototype.isStyleObject=function(t){return t[la]},e.prototype._innerSaveToNormal=function(e){t.prototype._innerSaveToNormal.call(this,e);var n=this._normalState;e.style&&!n.style&&(n.style=this._mergeStyle(this.createStyle(),this.style)),this._savePrimaryToNormal(e,n,ca)},e.prototype._applyStateObj=function(e,n,i,r,o,a){t.prototype._applyStateObj.call(this,e,n,i,r,o,a);var s,l=!(n&&r);if(n&&n.style?o?r?s=n.style:(s=this._mergeStyle(this.createStyle(),i.style),this._mergeStyle(s,n.style)):(s=this._mergeStyle(this.createStyle(),r?this.style:i.style),this._mergeStyle(s,n.style)):l&&(s=i.style),s)if(o){var u=this.style;if(this.style=this.createStyle(l?{}:u),l)for(var h=G(u),c=0;c<h.length;c++){(d=h[c])in s&&(s[d]=s[d],this.style[d]=u[d])}var p=G(s);for(c=0;c<p.length;c++){var d=p[c];this.style[d]=this.style[d]}this._transitionState(e,{style:s},a,this.getAnimationStyleProps())}else this.useStyle(s);var f=this.__inHover?pa:ca;for(c=0;c<f.length;c++){d=f[c];n&&null!=n[d]?this[d]=n[d]:l&&null!=i[d]&&(this[d]=i[d])}},e.prototype._mergeStates=function(e){for(var n,i=t.prototype._mergeStates.call(this,e),r=0;r<e.length;r++){var o=e[r];o.style&&(n=n||{},this._mergeStyle(n,o.style))}return n&&(i.style=n),i},e.prototype._mergeStyle=function(t,e){return A(t,e),t},e.prototype.getAnimationStyleProps=function(){return ha},e.initDefaultProps=((i=e.prototype).type="displayable",i.invisible=!1,i.z=0,i.z2=0,i.zlevel=0,i.culling=!1,i.cursor="pointer",i.rectHover=!1,i.incremental=!1,i._rect=null,i.dirtyRectTolerance=0,void(i.__dirty=3)),e}(wr),fa=new sr(0,0,0,0),ga=new sr(0,0,0,0);var ya=Math.min,va=Math.max,ma=Math.sin,xa=Math.cos,_a=2*Math.PI,ba=wt(),wa=wt(),Sa=wt();function Ma(t,e,n){if(0!==t.length){for(var i=t[0],r=i[0],o=i[0],a=i[1],s=i[1],l=1;l<t.length;l++)i=t[l],r=ya(r,i[0]),o=va(o,i[0]),a=ya(a,i[1]),s=va(s,i[1]);e[0]=r,e[1]=a,n[0]=o,n[1]=s}}function Ia(t,e,n,i,r,o){r[0]=ya(t,n),r[1]=ya(e,i),o[0]=va(t,n),o[1]=va(e,i)}var Ta=[],Ca=[];function Da(t,e,n,i,r,o,a,s,l,u){var h=Xe,c=He,p=h(t,n,r,a,Ta);l[0]=1/0,l[1]=1/0,u[0]=-1/0,u[1]=-1/0;for(var d=0;d<p;d++){var f=c(t,n,r,a,Ta[d]);l[0]=ya(f,l[0]),u[0]=va(f,u[0])}p=h(e,i,o,s,Ca);for(d=0;d<p;d++){var g=c(e,i,o,s,Ca[d]);l[1]=ya(g,l[1]),u[1]=va(g,u[1])}l[0]=ya(t,l[0]),u[0]=va(t,u[0]),l[0]=ya(a,l[0]),u[0]=va(a,u[0]),l[1]=ya(e,l[1]),u[1]=va(e,u[1]),l[1]=ya(s,l[1]),u[1]=va(s,u[1])}function Aa(t,e,n,i,r,o,a,s){var l=Je,u=Ke,h=va(ya(l(t,n,r),1),0),c=va(ya(l(e,i,o),1),0),p=u(t,n,r,h),d=u(e,i,o,c);a[0]=ya(t,r,p),a[1]=ya(e,o,d),s[0]=va(t,r,p),s[1]=va(e,o,d)}function ka(t,e,n,i,r,o,a,s,l){var u=Gt,h=Wt,c=Math.abs(r-o);if(c%_a<1e-4&&c>1e-4)return s[0]=t-n,s[1]=e-i,l[0]=t+n,void(l[1]=e+i);if(ba[0]=xa(r)*n+t,ba[1]=ma(r)*i+e,wa[0]=xa(o)*n+t,wa[1]=ma(o)*i+e,u(s,ba,wa),h(l,ba,wa),(r%=_a)<0&&(r+=_a),(o%=_a)<0&&(o+=_a),r>o&&!a?o+=_a:r<o&&a&&(r+=_a),a){var p=o;o=r,r=p}for(var d=0;d<o;d+=Math.PI/2)d>r&&(Sa[0]=xa(d)*n+t,Sa[1]=ma(d)*i+e,u(s,Sa,s),h(l,Sa,l))}var La={M:1,L:2,C:3,Q:4,A:5,Z:6,R:7},Pa=[],Oa=[],Ra=[],Na=[],Ea=[],za=[],Va=Math.min,Ba=Math.max,Fa=Math.cos,Ga=Math.sin,Wa=Math.abs,Ha=Math.PI,Ya=2*Ha,Ua="undefined"!=typeof Float32Array,Xa=[];function Za(t){return Math.round(t/Ha*1e8)/1e8%2*Ha}function ja(t,e){var n=Za(t[0]);n<0&&(n+=Ya);var i=n-t[0],r=t[1];r+=i,!e&&r-n>=Ya?r=n+Ya:e&&n-r>=Ya?r=n-Ya:!e&&n>r?r=n+(Ya-Za(n-r)):e&&n<r&&(r=n-(Ya-Za(r-n))),t[0]=n,t[1]=r}var qa=function(){function t(t){this.dpr=1,this._xi=0,this._yi=0,this._x0=0,this._y0=0,this._len=0,t&&(this._saveData=!1),this._saveData&&(this.data=[])}return t.prototype.increaseVersion=function(){this._version++},t.prototype.getVersion=function(){return this._version},t.prototype.setScale=function(t,e,n){(n=n||0)>0&&(this._ux=Wa(n/Ai/t)||0,this._uy=Wa(n/Ai/e)||0)},t.prototype.setDPR=function(t){this.dpr=t},t.prototype.setContext=function(t){this._ctx=t},t.prototype.getContext=function(){return this._ctx},t.prototype.beginPath=function(){return this._ctx&&this._ctx.beginPath(),this.reset(),this},t.prototype.reset=function(){this._saveData&&(this._len=0),this._pathSegLen&&(this._pathSegLen=null,this._pathLen=0),this._version++},t.prototype.moveTo=function(t,e){return this._drawPendingPt(),this.addData(La.M,t,e),this._ctx&&this._ctx.moveTo(t,e),this._x0=t,this._y0=e,this._xi=t,this._yi=e,this},t.prototype.lineTo=function(t,e){var n=Wa(t-this._xi),i=Wa(e-this._yi),r=n>this._ux||i>this._uy;if(this.addData(La.L,t,e),this._ctx&&r&&this._ctx.lineTo(t,e),r)this._xi=t,this._yi=e,this._pendingPtDist=0;else{var o=n*n+i*i;o>this._pendingPtDist&&(this._pendingPtX=t,this._pendingPtY=e,this._pendingPtDist=o)}return this},t.prototype.bezierCurveTo=function(t,e,n,i,r,o){return this._drawPendingPt(),this.addData(La.C,t,e,n,i,r,o),this._ctx&&this._ctx.bezierCurveTo(t,e,n,i,r,o),this._xi=r,this._yi=o,this},t.prototype.quadraticCurveTo=function(t,e,n,i){return this._drawPendingPt(),this.addData(La.Q,t,e,n,i),this._ctx&&this._ctx.quadraticCurveTo(t,e,n,i),this._xi=n,this._yi=i,this},t.prototype.arc=function(t,e,n,i,r,o){this._drawPendingPt(),Xa[0]=i,Xa[1]=r,ja(Xa,o),i=Xa[0];var a=(r=Xa[1])-i;return this.addData(La.A,t,e,n,n,i,a,0,o?0:1),this._ctx&&this._ctx.arc(t,e,n,i,r,o),this._xi=Fa(r)*n+t,this._yi=Ga(r)*n+e,this},t.prototype.arcTo=function(t,e,n,i,r){return this._drawPendingPt(),this._ctx&&this._ctx.arcTo(t,e,n,i,r),this},t.prototype.rect=function(t,e,n,i){return this._drawPendingPt(),this._ctx&&this._ctx.rect(t,e,n,i),this.addData(La.R,t,e,n,i),this},t.prototype.closePath=function(){this._drawPendingPt(),this.addData(La.Z);var t=this._ctx,e=this._x0,n=this._y0;return t&&t.closePath(),this._xi=e,this._yi=n,this},t.prototype.fill=function(t){t&&t.fill(),this.toStatic()},t.prototype.stroke=function(t){t&&t.stroke(),this.toStatic()},t.prototype.len=function(){return this._len},t.prototype.setData=function(t){var e=t.length;this.data&&this.data.length===e||!Ua||(this.data=new Float32Array(e));for(var n=0;n<e;n++)this.data[n]=t[n];this._len=e},t.prototype.appendPath=function(t){t instanceof Array||(t=[t]);for(var e=t.length,n=0,i=this._len,r=0;r<e;r++)n+=t[r].len();Ua&&this.data instanceof Float32Array&&(this.data=new Float32Array(i+n));for(r=0;r<e;r++)for(var o=t[r].data,a=0;a<o.length;a++)this.data[i++]=o[a];this._len=i},t.prototype.addData=function(t,e,n,i,r,o,a,s,l){if(this._saveData){var u=this.data;this._len+arguments.length>u.length&&(this._expandData(),u=this.data);for(var h=0;h<arguments.length;h++)u[this._len++]=arguments[h]}},t.prototype._drawPendingPt=function(){this._pendingPtDist>0&&(this._ctx&&this._ctx.lineTo(this._pendingPtX,this._pendingPtY),this._pendingPtDist=0)},t.prototype._expandData=function(){if(!(this.data instanceof Array)){for(var t=[],e=0;e<this._len;e++)t[e]=this.data[e];this.data=t}},t.prototype.toStatic=function(){if(this._saveData){this._drawPendingPt();var t=this.data;t instanceof Array&&(t.length=this._len,Ua&&this._len>11&&(this.data=new Float32Array(t)))}},t.prototype.getBoundingRect=function(){Ra[0]=Ra[1]=Ea[0]=Ea[1]=Number.MAX_VALUE,Na[0]=Na[1]=za[0]=za[1]=-Number.MAX_VALUE;var t,e=this.data,n=0,i=0,r=0,o=0;for(t=0;t<this._len;){var a=e[t++],s=1===t;switch(s&&(r=n=e[t],o=i=e[t+1]),a){case La.M:n=r=e[t++],i=o=e[t++],Ea[0]=r,Ea[1]=o,za[0]=r,za[1]=o;break;case La.L:Ia(n,i,e[t],e[t+1],Ea,za),n=e[t++],i=e[t++];break;case La.C:Da(n,i,e[t++],e[t++],e[t++],e[t++],e[t],e[t+1],Ea,za),n=e[t++],i=e[t++];break;case La.Q:Aa(n,i,e[t++],e[t++],e[t],e[t+1],Ea,za),n=e[t++],i=e[t++];break;case La.A:var l=e[t++],u=e[t++],h=e[t++],c=e[t++],p=e[t++],d=e[t++]+p;t+=1;var f=!e[t++];s&&(r=Fa(p)*h+l,o=Ga(p)*c+u),ka(l,u,h,c,p,d,f,Ea,za),n=Fa(d)*h+l,i=Ga(d)*c+u;break;case La.R:Ia(r=n=e[t++],o=i=e[t++],r+e[t++],o+e[t++],Ea,za);break;case La.Z:n=r,i=o}Gt(Ra,Ra,Ea),Wt(Na,Na,za)}return 0===t&&(Ra[0]=Ra[1]=Na[0]=Na[1]=0),new sr(Ra[0],Ra[1],Na[0]-Ra[0],Na[1]-Ra[1])},t.prototype._calculateLength=function(){var t=this.data,e=this._len,n=this._ux,i=this._uy,r=0,o=0,a=0,s=0;this._pathSegLen||(this._pathSegLen=[]);for(var l=this._pathSegLen,u=0,h=0,c=0;c<e;){var p=t[c++],d=1===c;d&&(a=r=t[c],s=o=t[c+1]);var f=-1;switch(p){case La.M:r=a=t[c++],o=s=t[c++];break;case La.L:var g=t[c++],y=(x=t[c++])-o;(Wa(A=g-r)>n||Wa(y)>i||c===e-1)&&(f=Math.sqrt(A*A+y*y),r=g,o=x);break;case La.C:var v=t[c++],m=t[c++],x=(g=t[c++],t[c++]),_=t[c++],b=t[c++];f=qe(r,o,v,m,g,x,_,b,10),r=_,o=b;break;case La.Q:f=en(r,o,v=t[c++],m=t[c++],g=t[c++],x=t[c++],10),r=g,o=x;break;case La.A:var w=t[c++],S=t[c++],M=t[c++],I=t[c++],T=t[c++],C=t[c++],D=C+T;c+=1;t[c++];d&&(a=Fa(T)*M+w,s=Ga(T)*I+S),f=Ba(M,I)*Va(Ya,Math.abs(C)),r=Fa(D)*M+w,o=Ga(D)*I+S;break;case La.R:a=r=t[c++],s=o=t[c++],f=2*t[c++]+2*t[c++];break;case La.Z:var A=a-r;y=s-o;f=Math.sqrt(A*A+y*y),r=a,o=s}f>=0&&(l[h++]=f,u+=f)}return this._pathLen=u,u},t.prototype.rebuildPath=function(t,e){var n,i,r,o,a,s,l,u,h,c,p=this.data,d=this._ux,f=this._uy,g=this._len,y=e<1,v=0,m=0,x=0;if(!y||(this._pathSegLen||this._calculateLength(),l=this._pathSegLen,u=e*this._pathLen))t:for(var _=0;_<g;){var b=p[_++],w=1===_;switch(w&&(n=r=p[_],i=o=p[_+1]),b!==La.L&&x>0&&(t.lineTo(h,c),x=0),b){case La.M:n=r=p[_++],i=o=p[_++],t.moveTo(r,o);break;case La.L:a=p[_++],s=p[_++];var S=Wa(a-r),M=Wa(s-o);if(S>d||M>f){if(y){if(v+(j=l[m++])>u){var I=(u-v)/j;t.lineTo(r*(1-I)+a*I,o*(1-I)+s*I);break t}v+=j}t.lineTo(a,s),r=a,o=s,x=0}else{var T=S*S+M*M;T>x&&(h=a,c=s,x=T)}break;case La.C:var C=p[_++],D=p[_++],A=p[_++],k=p[_++],L=p[_++],P=p[_++];if(y){if(v+(j=l[m++])>u){Ze(r,C,A,L,I=(u-v)/j,Pa),Ze(o,D,k,P,I,Oa),t.bezierCurveTo(Pa[1],Oa[1],Pa[2],Oa[2],Pa[3],Oa[3]);break t}v+=j}t.bezierCurveTo(C,D,A,k,L,P),r=L,o=P;break;case La.Q:C=p[_++],D=p[_++],A=p[_++],k=p[_++];if(y){if(v+(j=l[m++])>u){Qe(r,C,A,I=(u-v)/j,Pa),Qe(o,D,k,I,Oa),t.quadraticCurveTo(Pa[1],Oa[1],Pa[2],Oa[2]);break t}v+=j}t.quadraticCurveTo(C,D,A,k),r=A,o=k;break;case La.A:var O=p[_++],R=p[_++],N=p[_++],E=p[_++],z=p[_++],V=p[_++],B=p[_++],F=!p[_++],G=N>E?N:E,W=Wa(N-E)>.001,H=z+V,Y=!1;if(y)v+(j=l[m++])>u&&(H=z+V*(u-v)/j,Y=!0),v+=j;if(W&&t.ellipse?t.ellipse(O,R,N,E,B,z,H,F):t.arc(O,R,G,z,H,F),Y)break t;w&&(n=Fa(z)*N+O,i=Ga(z)*E+R),r=Fa(H)*N+O,o=Ga(H)*E+R;break;case La.R:n=r=p[_],i=o=p[_+1],a=p[_++],s=p[_++];var U=p[_++],X=p[_++];if(y){if(v+(j=l[m++])>u){var Z=u-v;t.moveTo(a,s),t.lineTo(a+Va(Z,U),s),(Z-=U)>0&&t.lineTo(a+U,s+Va(Z,X)),(Z-=X)>0&&t.lineTo(a+Ba(U-Z,0),s+X),(Z-=U)>0&&t.lineTo(a,s+Ba(X-Z,0));break t}v+=j}t.rect(a,s,U,X);break;case La.Z:if(y){var j;if(v+(j=l[m++])>u){I=(u-v)/j;t.lineTo(r*(1-I)+n*I,o*(1-I)+i*I);break t}v+=j}t.closePath(),r=n,o=i}}},t.prototype.clone=function(){var e=new t,n=this.data;return e.data=n.slice?n.slice():Array.prototype.slice.call(n),e._len=this._len,e},t.CMD=La,t.initDefaultProps=function(){var e=t.prototype;e._saveData=!0,e._ux=0,e._uy=0,e._pendingPtDist=0,e._version=0}(),t}();function Ka(t,e,n,i,r,o,a){if(0===r)return!1;var s=r,l=0;if(a>e+s&&a>i+s||a<e-s&&a<i-s||o>t+s&&o>n+s||o<t-s&&o<n-s)return!1;if(t===n)return Math.abs(o-t)<=s/2;var u=(l=(e-i)/(t-n))*o-a+(t*i-n*e)/(t-n);return u*u/(l*l+1)<=s/2*s/2}function $a(t,e,n,i,r,o,a,s,l,u,h){if(0===l)return!1;var c=l;return!(h>e+c&&h>i+c&&h>o+c&&h>s+c||h<e-c&&h<i-c&&h<o-c&&h<s-c||u>t+c&&u>n+c&&u>r+c&&u>a+c||u<t-c&&u<n-c&&u<r-c&&u<a-c)&&je(t,e,n,i,r,o,a,s,u,h,null)<=c/2}function Ja(t,e,n,i,r,o,a,s,l){if(0===a)return!1;var u=a;return!(l>e+u&&l>i+u&&l>o+u||l<e-u&&l<i-u&&l<o-u||s>t+u&&s>n+u&&s>r+u||s<t-u&&s<n-u&&s<r-u)&&tn(t,e,n,i,r,o,s,l,null)<=u/2}var Qa=2*Math.PI;function ts(t){return(t%=Qa)<0&&(t+=Qa),t}var es=2*Math.PI;function ns(t,e,n,i,r,o,a,s,l){if(0===a)return!1;var u=a;s-=t,l-=e;var h=Math.sqrt(s*s+l*l);if(h-u>n||h+u<n)return!1;if(Math.abs(i-r)%es<1e-4)return!0;if(o){var c=i;i=ts(r),r=ts(c)}else i=ts(i),r=ts(r);i>r&&(r+=es);var p=Math.atan2(l,s);return p<0&&(p+=es),p>=i&&p<=r||p+es>=i&&p+es<=r}function is(t,e,n,i,r,o){if(o>e&&o>i||o<e&&o<i)return 0;if(i===e)return 0;var a=(o-e)/(i-e),s=i<e?1:-1;1!==a&&0!==a||(s=i<e?.5:-.5);var l=a*(n-t)+t;return l===r?1/0:l>r?s:0}var rs=qa.CMD,os=2*Math.PI;var as=[-1,-1,-1],ss=[-1,-1];function ls(t,e,n,i,r,o,a,s,l,u){if(u>e&&u>i&&u>o&&u>s||u<e&&u<i&&u<o&&u<s)return 0;var h,c=Ue(e,i,o,s,u,as);if(0===c)return 0;for(var p=0,d=-1,f=void 0,g=void 0,y=0;y<c;y++){var v=as[y],m=0===v||1===v?.5:1;He(t,n,r,a,v)<l||(d<0&&(d=Xe(e,i,o,s,ss),ss[1]<ss[0]&&d>1&&(h=void 0,h=ss[0],ss[0]=ss[1],ss[1]=h),f=He(e,i,o,s,ss[0]),d>1&&(g=He(e,i,o,s,ss[1]))),2===d?v<ss[0]?p+=f<e?m:-m:v<ss[1]?p+=g<f?m:-m:p+=s<g?m:-m:v<ss[0]?p+=f<e?m:-m:p+=s<f?m:-m)}return p}function us(t,e,n,i,r,o,a,s){if(s>e&&s>i&&s>o||s<e&&s<i&&s<o)return 0;var l=function(t,e,n,i,r){var o=t-2*e+n,a=2*(e-t),s=t-i,l=0;if(Ge(o))We(a)&&(h=-s/a)>=0&&h<=1&&(r[l++]=h);else{var u=a*a-4*o*s;if(Ge(u))(h=-a/(2*o))>=0&&h<=1&&(r[l++]=h);else if(u>0){var h,c=Oe(u),p=(-a-c)/(2*o);(h=(-a+c)/(2*o))>=0&&h<=1&&(r[l++]=h),p>=0&&p<=1&&(r[l++]=p)}}return l}(e,i,o,s,as);if(0===l)return 0;var u=Je(e,i,o);if(u>=0&&u<=1){for(var h=0,c=Ke(e,i,o,u),p=0;p<l;p++){var d=0===as[p]||1===as[p]?.5:1;Ke(t,n,r,as[p])<a||(as[p]<u?h+=c<e?d:-d:h+=o<c?d:-d)}return h}d=0===as[0]||1===as[0]?.5:1;return Ke(t,n,r,as[0])<a?0:o<e?d:-d}function hs(t,e,n,i,r,o,a,s){if((s-=e)>n||s<-n)return 0;var l=Math.sqrt(n*n-s*s);as[0]=-l,as[1]=l;var u=Math.abs(i-r);if(u<1e-4)return 0;if(u>=os-1e-4){i=0,r=os;var h=o?1:-1;return a>=as[0]+t&&a<=as[1]+t?h:0}if(i>r){var c=i;i=r,r=c}i<0&&(i+=os,r+=os);for(var p=0,d=0;d<2;d++){var f=as[d];if(f+t>a){var g=Math.atan2(s,f);h=o?1:-1;g<0&&(g=os+g),(g>=i&&g<=r||g+os>=i&&g+os<=r)&&(g>Math.PI/2&&g<1.5*Math.PI&&(h=-h),p+=h)}}return p}function cs(t,e,n,i,r){for(var o,a,s,l,u=t.data,h=t.len(),c=0,p=0,d=0,f=0,g=0,y=0;y<h;){var v=u[y++],m=1===y;switch(v===rs.M&&y>1&&(n||(c+=is(p,d,f,g,i,r))),m&&(f=p=u[y],g=d=u[y+1]),v){case rs.M:p=f=u[y++],d=g=u[y++];break;case rs.L:if(n){if(Ka(p,d,u[y],u[y+1],e,i,r))return!0}else c+=is(p,d,u[y],u[y+1],i,r)||0;p=u[y++],d=u[y++];break;case rs.C:if(n){if($a(p,d,u[y++],u[y++],u[y++],u[y++],u[y],u[y+1],e,i,r))return!0}else c+=ls(p,d,u[y++],u[y++],u[y++],u[y++],u[y],u[y+1],i,r)||0;p=u[y++],d=u[y++];break;case rs.Q:if(n){if(Ja(p,d,u[y++],u[y++],u[y],u[y+1],e,i,r))return!0}else c+=us(p,d,u[y++],u[y++],u[y],u[y+1],i,r)||0;p=u[y++],d=u[y++];break;case rs.A:var x=u[y++],_=u[y++],b=u[y++],w=u[y++],S=u[y++],M=u[y++];y+=1;var I=!!(1-u[y++]);o=Math.cos(S)*b+x,a=Math.sin(S)*w+_,m?(f=o,g=a):c+=is(p,d,o,a,i,r);var T=(i-x)*w/b+x;if(n){if(ns(x,_,w,S,S+M,I,e,T,r))return!0}else c+=hs(x,_,w,S,S+M,I,T,r);p=Math.cos(S+M)*b+x,d=Math.sin(S+M)*w+_;break;case rs.R:if(f=p=u[y++],g=d=u[y++],o=f+u[y++],a=g+u[y++],n){if(Ka(f,g,o,g,e,i,r)||Ka(o,g,o,a,e,i,r)||Ka(o,a,f,a,e,i,r)||Ka(f,a,f,g,e,i,r))return!0}else c+=is(o,g,o,a,i,r),c+=is(f,a,f,g,i,r);break;case rs.Z:if(n){if(Ka(p,d,f,g,e,i,r))return!0}else c+=is(p,d,f,g,i,r);p=f,d=g}}return n||(s=d,l=g,Math.abs(s-l)<1e-4)||(c+=is(p,d,f,g,i,r)||0),0!==c}var ps=k({fill:"#000",stroke:null,strokePercent:1,fillOpacity:1,strokeOpacity:1,lineDashOffset:0,lineWidth:1,lineCap:"butt",miterLimit:10,strokeNoScale:!1,strokeFirst:!1},ua),ds={style:k({fill:!0,stroke:!0,strokePercent:!0,fillOpacity:!0,strokeOpacity:!0,lineDashOffset:!0,lineWidth:!0,miterLimit:!0},ha.style)},fs=Ki.concat(["invisible","culling","z","z2","zlevel","parent"]),gs=function(t){function e(e){return t.call(this,e)||this}var i;return n(e,t),e.prototype.update=function(){var n=this;t.prototype.update.call(this);var i=this.style;if(i.decal){var r=this._decalEl=this._decalEl||new e;r.buildPath===e.prototype.buildPath&&(r.buildPath=function(t){n.buildPath(t,n.shape)}),r.silent=!0;var o=r.style;for(var a in i)o[a]!==i[a]&&(o[a]=i[a]);o.fill=i.fill?i.decal:null,o.decal=null,o.shadowColor=null,i.strokeFirst&&(o.stroke=null);for(var s=0;s<fs.length;++s)r[fs[s]]=this[fs[s]];r.__dirty|=1}else this._decalEl&&(this._decalEl=null)},e.prototype.getDecalElement=function(){return this._decalEl},e.prototype._init=function(e){var n=G(e);this.shape=this.getDefaultShape();var i=this.getDefaultStyle();i&&this.useStyle(i);for(var r=0;r<n.length;r++){var o=n[r],a=e[o];"style"===o?this.style?A(this.style,a):this.useStyle(a):"shape"===o?A(this.shape,a):t.prototype.attrKV.call(this,o,a)}this.style||this.useStyle({})},e.prototype.getDefaultStyle=function(){return null},e.prototype.getDefaultShape=function(){return{}},e.prototype.canBeInsideText=function(){return this.hasFill()},e.prototype.getInsideTextFill=function(){var t=this.style.fill;if("none"!==t){if(X(t)){var e=Ln(t,0);return e>.5?ki:e>.2?"#eee":Li}if(t)return Li}return ki},e.prototype.getInsideTextStroke=function(t){var e=this.style.fill;if(X(e)){var n=this.__zr;if(!(!n||!n.isDarkMode())===Ln(t,0)<.4)return e}},e.prototype.buildPath=function(t,e,n){},e.prototype.pathUpdated=function(){this.__dirty&=-5},e.prototype.getUpdatedPathProxy=function(t){return!this.path&&this.createPathProxy(),this.path.beginPath(),this.buildPath(this.path,this.shape,t),this.path},e.prototype.createPathProxy=function(){this.path=new qa(!1)},e.prototype.hasStroke=function(){var t=this.style,e=t.stroke;return!(null==e||"none"===e||!(t.lineWidth>0))},e.prototype.hasFill=function(){var t=this.style.fill;return null!=t&&"none"!==t},e.prototype.getBoundingRect=function(){var t=this._rect,e=this.style,n=!t;if(n){var i=!1;this.path||(i=!0,this.createPathProxy());var r=this.path;(i||4&this.__dirty)&&(r.beginPath(),this.buildPath(r,this.shape,!1),this.pathUpdated()),t=r.getBoundingRect()}if(this._rect=t,this.hasStroke()&&this.path&&this.path.len()>0){var o=this._rectStroke||(this._rectStroke=t.clone());if(this.__dirty||n){o.copy(t);var a=e.strokeNoScale?this.getLineScale():1,s=e.lineWidth;if(!this.hasFill()){var l=this.strokeContainThreshold;s=Math.max(s,null==l?4:l)}a>1e-10&&(o.width+=s/a,o.height+=s/a,o.x-=s/a/2,o.y-=s/a/2)}return o}return t},e.prototype.contain=function(t,e){var n=this.transformCoordToLocal(t,e),i=this.getBoundingRect(),r=this.style;if(t=n[0],e=n[1],i.contain(t,e)){var o=this.path;if(this.hasStroke()){var a=r.lineWidth,s=r.strokeNoScale?this.getLineScale():1;if(s>1e-10&&(this.hasFill()||(a=Math.max(a,this.strokeContainThreshold)),function(t,e,n,i){return cs(t,e,!0,n,i)}(o,a/s,t,e)))return!0}if(this.hasFill())return function(t,e,n){return cs(t,0,!1,e,n)}(o,t,e)}return!1},e.prototype.dirtyShape=function(){this.__dirty|=4,this._rect&&(this._rect=null),this._decalEl&&this._decalEl.dirtyShape(),this.markRedraw()},e.prototype.dirty=function(){this.dirtyStyle(),this.dirtyShape()},e.prototype.animateShape=function(t){return this.animate("shape",t)},e.prototype.updateDuringAnimation=function(t){"style"===t?this.dirtyStyle():"shape"===t?this.dirtyShape():this.markRedraw()},e.prototype.attrKV=function(e,n){"shape"===e?this.setShape(n):t.prototype.attrKV.call(this,e,n)},e.prototype.setShape=function(t,e){var n=this.shape;return n||(n=this.shape={}),"string"==typeof t?n[t]=e:A(n,t),this.dirtyShape(),this},e.prototype.shapeChanged=function(){return!!(4&this.__dirty)},e.prototype.createStyle=function(t){return yt(ps,t)},e.prototype._innerSaveToNormal=function(e){t.prototype._innerSaveToNormal.call(this,e);var n=this._normalState;e.shape&&!n.shape&&(n.shape=A({},this.shape))},e.prototype._applyStateObj=function(e,n,i,r,o,a){t.prototype._applyStateObj.call(this,e,n,i,r,o,a);var s,l=!(n&&r);if(n&&n.shape?o?r?s=n.shape:(s=A({},i.shape),A(s,n.shape)):(s=A({},r?this.shape:i.shape),A(s,n.shape)):l&&(s=i.shape),s)if(o){this.shape=A({},this.shape);for(var u={},h=G(s),c=0;c<h.length;c++){var p=h[c];"object"==typeof s[p]?this.shape[p]=s[p]:u[p]=s[p]}this._transitionState(e,{shape:u},a)}else this.shape=s,this.dirtyShape()},e.prototype._mergeStates=function(e){for(var n,i=t.prototype._mergeStates.call(this,e),r=0;r<e.length;r++){var o=e[r];o.shape&&(n=n||{},this._mergeStyle(n,o.shape))}return n&&(i.shape=n),i},e.prototype.getAnimationStyleProps=function(){return ds},e.prototype.isZeroArea=function(){return!1},e.extend=function(t){var i=function(e){function i(n){var i=e.call(this,n)||this;return t.init&&t.init.call(i,n),i}return n(i,e),i.prototype.getDefaultStyle=function(){return T(t.style)},i.prototype.getDefaultShape=function(){return T(t.shape)},i}(e);for(var r in t)"function"==typeof t[r]&&(i.prototype[r]=t[r]);return i},e.initDefaultProps=((i=e.prototype).type="path",i.strokeContainThreshold=5,i.segmentIgnoreThreshold=0,i.subPixelOptimize=!1,i.autoBatch=!1,void(i.__dirty=7)),e}(da),ys=k({strokeFirst:!0,font:a,x:0,y:0,textAlign:"left",textBaseline:"top",miterLimit:2},ps),vs=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.hasStroke=function(){var t=this.style,e=t.stroke;return null!=e&&"none"!==e&&t.lineWidth>0},e.prototype.hasFill=function(){var t=this.style.fill;return null!=t&&"none"!==t},e.prototype.createStyle=function(t){return yt(ys,t)},e.prototype.setBoundingRect=function(t){this._rect=t},e.prototype.getBoundingRect=function(){var t=this.style;if(!this._rect){var e=t.text;null!=e?e+="":e="";var n=cr(e,t.font,t.textAlign,t.textBaseline);if(n.x+=t.x||0,n.y+=t.y||0,this.hasStroke()){var i=t.lineWidth;n.x-=i/2,n.y-=i/2,n.width+=i,n.height+=i}this._rect=n}return this._rect},e.initDefaultProps=void(e.prototype.dirtyRectTolerance=10),e}(da);vs.prototype.type="tspan";var ms=k({x:0,y:0},ua),xs={style:k({x:!0,y:!0,width:!0,height:!0,sx:!0,sy:!0,sWidth:!0,sHeight:!0},ha.style)};var _s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.createStyle=function(t){return yt(ms,t)},e.prototype._getSize=function(t){var e=this.style,n=e[t];if(null!=n)return n;var i,r=(i=e.image)&&"string"!=typeof i&&i.width&&i.height?e.image:this.__image;if(!r)return 0;var o="width"===t?"height":"width",a=e[o];return null==a?r[t]:r[t]/r[o]*a},e.prototype.getWidth=function(){return this._getSize("width")},e.prototype.getHeight=function(){return this._getSize("height")},e.prototype.getAnimationStyleProps=function(){return xs},e.prototype.getBoundingRect=function(){var t=this.style;return this._rect||(this._rect=new sr(t.x||0,t.y||0,this.getWidth(),this.getHeight())),this._rect},e}(da);_s.prototype.type="image";var bs=Math.round;function ws(t,e,n){if(e){var i=e.x1,r=e.x2,o=e.y1,a=e.y2;t.x1=i,t.x2=r,t.y1=o,t.y2=a;var s=n&&n.lineWidth;return s?(bs(2*i)===bs(2*r)&&(t.x1=t.x2=Ms(i,s,!0)),bs(2*o)===bs(2*a)&&(t.y1=t.y2=Ms(o,s,!0)),t):t}}function Ss(t,e,n){if(e){var i=e.x,r=e.y,o=e.width,a=e.height;t.x=i,t.y=r,t.width=o,t.height=a;var s=n&&n.lineWidth;return s?(t.x=Ms(i,s,!0),t.y=Ms(r,s,!0),t.width=Math.max(Ms(i+o,s,!1)-t.x,0===o?0:1),t.height=Math.max(Ms(r+a,s,!1)-t.y,0===a?0:1),t):t}}function Ms(t,e,n){if(!e)return t;var i=bs(2*t);return(i+bs(e))%2==0?i/2:(i+(n?1:-1))/2}var Is=function(){this.x=0,this.y=0,this.width=0,this.height=0},Ts={},Cs=function(t){function e(e){return t.call(this,e)||this}return n(e,t),e.prototype.getDefaultShape=function(){return new Is},e.prototype.buildPath=function(t,e){var n,i,r,o;if(this.subPixelOptimize){var a=Ss(Ts,e,this.style);n=a.x,i=a.y,r=a.width,o=a.height,a.r=e.r,e=a}else n=e.x,i=e.y,r=e.width,o=e.height;e.r?function(t,e){var n,i,r,o,a,s=e.x,l=e.y,u=e.width,h=e.height,c=e.r;u<0&&(s+=u,u=-u),h<0&&(l+=h,h=-h),"number"==typeof c?n=i=r=o=c:c instanceof Array?1===c.length?n=i=r=o=c[0]:2===c.length?(n=r=c[0],i=o=c[1]):3===c.length?(n=c[0],i=o=c[1],r=c[2]):(n=c[0],i=c[1],r=c[2],o=c[3]):n=i=r=o=0,n+i>u&&(n*=u/(a=n+i),i*=u/a),r+o>u&&(r*=u/(a=r+o),o*=u/a),i+r>h&&(i*=h/(a=i+r),r*=h/a),n+o>h&&(n*=h/(a=n+o),o*=h/a),t.moveTo(s+n,l),t.lineTo(s+u-i,l),0!==i&&t.arc(s+u-i,l+i,i,-Math.PI/2,0),t.lineTo(s+u,l+h-r),0!==r&&t.arc(s+u-r,l+h-r,r,0,Math.PI/2),t.lineTo(s+o,l+h),0!==o&&t.arc(s+o,l+h-o,o,Math.PI/2,Math.PI),t.lineTo(s,l+n),0!==n&&t.arc(s+n,l+n,n,Math.PI,1.5*Math.PI)}(t,e):t.rect(n,i,r,o)},e.prototype.isZeroArea=function(){return!this.shape.width||!this.shape.height},e}(gs);Cs.prototype.type="rect";var Ds={fill:"#000"},As={style:k({fill:!0,stroke:!0,fillOpacity:!0,strokeOpacity:!0,lineWidth:!0,fontSize:!0,lineHeight:!0,width:!0,height:!0,textShadowColor:!0,textShadowBlur:!0,textShadowOffsetX:!0,textShadowOffsetY:!0,backgroundColor:!0,padding:!0,borderColor:!0,borderWidth:!0,borderRadius:!0},ha.style)},ks=function(t){function e(e){var n=t.call(this)||this;return n.type="text",n._children=[],n._defaultStyle=Ds,n.attr(e),n}return n(e,t),e.prototype.childrenRef=function(){return this._children},e.prototype.update=function(){t.prototype.update.call(this),this.styleChanged()&&this._updateSubTexts();for(var e=0;e<this._children.length;e++){var n=this._children[e];n.zlevel=this.zlevel,n.z=this.z,n.z2=this.z2,n.culling=this.culling,n.cursor=this.cursor,n.invisible=this.invisible}},e.prototype.updateTransform=function(){var e=this.innerTransformable;e?(e.updateTransform(),e.transform&&(this.transform=e.transform)):t.prototype.updateTransform.call(this)},e.prototype.getLocalTransform=function(e){var n=this.innerTransformable;return n?n.getLocalTransform(e):t.prototype.getLocalTransform.call(this,e)},e.prototype.getComputedTransform=function(){return this.__hostTarget&&(this.__hostTarget.getComputedTransform(),this.__hostTarget.updateInnerText(!0)),t.prototype.getComputedTransform.call(this)},e.prototype._updateSubTexts=function(){var t;this._childCursor=0,zs(t=this.style),E(t.rich,zs),this.style.rich?this._updateRichTexts():this._updatePlainTexts(),this._children.length=this._childCursor,this.styleUpdated()},e.prototype.addSelfToZr=function(e){t.prototype.addSelfToZr.call(this,e);for(var n=0;n<this._children.length;n++)this._children[n].__zr=e},e.prototype.removeSelfFromZr=function(e){t.prototype.removeSelfFromZr.call(this,e);for(var n=0;n<this._children.length;n++)this._children[n].__zr=null},e.prototype.getBoundingRect=function(){if(this.styleChanged()&&this._updateSubTexts(),!this._rect){for(var t=new sr(0,0,0,0),e=this._children,n=[],i=null,r=0;r<e.length;r++){var o=e[r],a=o.getBoundingRect(),s=o.getLocalTransform(n);s?(t.copy(a),t.applyTransform(s),(i=i||t.clone()).union(t)):(i=i||a.clone()).union(a)}this._rect=i||t}return this._rect},e.prototype.setDefaultTextStyle=function(t){this._defaultStyle=t||Ds},e.prototype.setTextContent=function(t){0},e.prototype._mergeStyle=function(t,e){if(!e)return t;var n=e.rich,i=t.rich||n&&{};return A(t,e),n&&i?(this._mergeRich(i,n),t.rich=i):i&&(t.rich=i),t},e.prototype._mergeRich=function(t,e){for(var n=G(e),i=0;i<n.length;i++){var r=n[i];t[r]=t[r]||{},A(t[r],e[r])}},e.prototype.getAnimationStyleProps=function(){return As},e.prototype._getOrCreateChild=function(t){var e=this._children[this._childCursor];return e&&e instanceof t||(e=new t),this._children[this._childCursor++]=e,e.__zr=this.__zr,e.parent=this,e},e.prototype._updatePlainTexts=function(){var t=this.style,e=t.font||a,n=t.padding,i=function(t,e){null!=t&&(t+="");var n,i=e.overflow,r=e.padding,o=e.font,a="truncate"===i,s=fr(o),l=rt(e.lineHeight,s),u=!!e.backgroundColor,h="truncate"===e.lineOverflow,c=e.width,p=(n=null==c||"break"!==i&&"breakAll"!==i?t?t.split("\n"):[]:t?sa(t,e.font,c,"breakAll"===i,0).lines:[]).length*l,d=rt(e.height,p);if(p>d&&h){var f=Math.floor(d/l);n=n.slice(0,f)}if(t&&a&&null!=c)for(var g=Jo(c,o,e.ellipsis,{minChar:e.truncateMinChar,placeholder:e.placeholder}),y=0;y<n.length;y++)n[y]=Qo(n[y],g);var v=d,m=0;for(y=0;y<n.length;y++)m=Math.max(ur(n[y],o),m);null==c&&(c=m);var x=m;return r&&(v+=r[0]+r[2],x+=r[1]+r[3],c+=r[1]+r[3]),u&&(x=c),{lines:n,height:d,outerWidth:x,outerHeight:v,lineHeight:l,calculatedLineHeight:s,contentWidth:m,contentHeight:p,width:c}}(Gs(t),t),r=Ws(t),o=!!t.backgroundColor,s=i.outerHeight,l=i.outerWidth,u=i.contentWidth,h=i.lines,c=i.lineHeight,p=this._defaultStyle,d=t.x||0,f=t.y||0,g=t.align||p.align||"left",y=t.verticalAlign||p.verticalAlign||"top",v=d,m=dr(f,i.contentHeight,y);if(r||n){var x=pr(d,l,g),_=dr(f,s,y);r&&this._renderBackground(t,t,x,_,l,s)}m+=c/2,n&&(v=Fs(d,g,n),"top"===y?m+=n[0]:"bottom"===y&&(m-=n[2]));for(var b=0,w=!1,S=(Bs("fill"in t?t.fill:(w=!0,p.fill))),M=(Vs("stroke"in t?t.stroke:o||p.autoStroke&&!w?null:(b=2,p.stroke))),I=t.textShadowBlur>0,T=null!=t.width&&("truncate"===t.overflow||"break"===t.overflow||"breakAll"===t.overflow),C=i.calculatedLineHeight,D=0;D<h.length;D++){var A=this._getOrCreateChild(vs),k=A.createStyle();A.useStyle(k),k.text=h[D],k.x=v,k.y=m,g&&(k.textAlign=g),k.textBaseline="middle",k.opacity=t.opacity,k.strokeFirst=!0,I&&(k.shadowBlur=t.textShadowBlur||0,k.shadowColor=t.textShadowColor||"transparent",k.shadowOffsetX=t.textShadowOffsetX||0,k.shadowOffsetY=t.textShadowOffsetY||0),k.stroke=M,k.fill=S,M&&(k.lineWidth=t.lineWidth||b,k.lineDash=t.lineDash,k.lineDashOffset=t.lineDashOffset||0),k.font=e,Ns(k,t),m+=c,T&&A.setBoundingRect(new sr(pr(k.x,t.width,k.textAlign),dr(k.y,C,k.textBaseline),u,C))}},e.prototype._updateRichTexts=function(){var t=this.style,e=function(t,e){var n=new ia;if(null!=t&&(t+=""),!t)return n;for(var i,r=e.width,o=e.height,a=e.overflow,s="break"!==a&&"breakAll"!==a||null==r?null:{width:r,accumWidth:0,breakAll:"breakAll"===a},l=Ko.lastIndex=0;null!=(i=Ko.exec(t));){var u=i.index;u>l&&ra(n,t.substring(l,u),e,s),ra(n,i[2],e,s,i[1]),l=Ko.lastIndex}l<t.length&&ra(n,t.substring(l,t.length),e,s);var h=[],c=0,p=0,d=e.padding,f="truncate"===a,g="truncate"===e.lineOverflow;function y(t,e,n){t.width=e,t.lineHeight=n,c+=n,p=Math.max(p,e)}t:for(var v=0;v<n.lines.length;v++){for(var m=n.lines[v],x=0,_=0,b=0;b<m.tokens.length;b++){var w=(P=m.tokens[b]).styleName&&e.rich[P.styleName]||{},S=P.textPadding=w.padding,M=S?S[1]+S[3]:0,I=P.font=w.font||e.font;P.contentHeight=fr(I);var T=rt(w.height,P.contentHeight);if(P.innerHeight=T,S&&(T+=S[0]+S[2]),P.height=T,P.lineHeight=ot(w.lineHeight,e.lineHeight,T),P.align=w&&w.align||e.align,P.verticalAlign=w&&w.verticalAlign||"middle",g&&null!=o&&c+P.lineHeight>o){b>0?(m.tokens=m.tokens.slice(0,b),y(m,_,x),n.lines=n.lines.slice(0,v+1)):n.lines=n.lines.slice(0,v);break t}var C=w.width,D=null==C||"auto"===C;if("string"==typeof C&&"%"===C.charAt(C.length-1))P.percentWidth=C,h.push(P),P.contentWidth=ur(P.text,I);else{if(D){var A=w.backgroundColor,k=A&&A.image;k&&qo(k=Xo(k))&&(P.width=Math.max(P.width,k.width*T/k.height))}var L=f&&null!=r?r-_:null;null!=L&&L<P.width?!D||L<M?(P.text="",P.width=P.contentWidth=0):(P.text=$o(P.text,L-M,I,e.ellipsis,{minChar:e.truncateMinChar}),P.width=P.contentWidth=ur(P.text,I)):P.contentWidth=ur(P.text,I)}P.width+=M,_+=P.width,w&&(x=Math.max(x,P.lineHeight))}y(m,_,x)}for(n.outerWidth=n.width=rt(r,p),n.outerHeight=n.height=rt(o,c),n.contentHeight=c,n.contentWidth=p,d&&(n.outerWidth+=d[1]+d[3],n.outerHeight+=d[0]+d[2]),v=0;v<h.length;v++){var P,O=(P=h[v]).percentWidth;P.width=parseInt(O,10)/100*n.width}return n}(Gs(t),t),n=e.width,i=e.outerWidth,r=e.outerHeight,o=t.padding,a=t.x||0,s=t.y||0,l=this._defaultStyle,u=t.align||l.align,h=t.verticalAlign||l.verticalAlign,c=pr(a,i,u),p=dr(s,r,h),d=c,f=p;o&&(d+=o[3],f+=o[0]);var g=d+n;Ws(t)&&this._renderBackground(t,t,c,p,i,r);for(var y=!!t.backgroundColor,v=0;v<e.lines.length;v++){for(var m=e.lines[v],x=m.tokens,_=x.length,b=m.lineHeight,w=m.width,S=0,M=d,I=g,T=_-1,C=void 0;S<_&&(!(C=x[S]).align||"left"===C.align);)this._placeToken(C,t,b,f,M,"left",y),w-=C.width,M+=C.width,S++;for(;T>=0&&"right"===(C=x[T]).align;)this._placeToken(C,t,b,f,I,"right",y),w-=C.width,I-=C.width,T--;for(M+=(n-(M-d)-(g-I)-w)/2;S<=T;)C=x[S],this._placeToken(C,t,b,f,M+C.width/2,"center",y),M+=C.width,S++;f+=b}},e.prototype._placeToken=function(t,e,n,i,r,o,s){var l=e.rich[t.styleName]||{};l.text=t.text;var u=t.verticalAlign,h=i+n/2;"top"===u?h=i+t.height/2:"bottom"===u&&(h=i+n-t.height/2),!t.isLineHolder&&Ws(l)&&this._renderBackground(l,e,"right"===o?r-t.width:"center"===o?r-t.width/2:r,h-t.height/2,t.width,t.height);var c=!!l.backgroundColor,p=t.textPadding;p&&(r=Fs(r,o,p),h-=t.height/2-p[0]-t.innerHeight/2);var d=this._getOrCreateChild(vs),f=d.createStyle();d.useStyle(f);var g=this._defaultStyle,y=!1,v=0,m=Bs("fill"in l?l.fill:"fill"in e?e.fill:(y=!0,g.fill)),x=Vs("stroke"in l?l.stroke:"stroke"in e?e.stroke:c||s||g.autoStroke&&!y?null:(v=2,g.stroke)),_=l.textShadowBlur>0||e.textShadowBlur>0;f.text=t.text,f.x=r,f.y=h,_&&(f.shadowBlur=l.textShadowBlur||e.textShadowBlur||0,f.shadowColor=l.textShadowColor||e.textShadowColor||"transparent",f.shadowOffsetX=l.textShadowOffsetX||e.textShadowOffsetX||0,f.shadowOffsetY=l.textShadowOffsetY||e.textShadowOffsetY||0),f.textAlign=o,f.textBaseline="middle",f.font=t.font||a,f.opacity=ot(l.opacity,e.opacity,1),Ns(f,l),x&&(f.lineWidth=ot(l.lineWidth,e.lineWidth,v),f.lineDash=rt(l.lineDash,e.lineDash),f.lineDashOffset=e.lineDashOffset||0,f.stroke=x),m&&(f.fill=m);var b=t.contentWidth,w=t.contentHeight;d.setBoundingRect(new sr(pr(f.x,b,f.textAlign),dr(f.y,w,f.textBaseline),b,w))},e.prototype._renderBackground=function(t,e,n,i,r,o){var a,s,l,u=t.backgroundColor,h=t.borderWidth,c=t.borderColor,p=u&&u.image,d=u&&!p,f=t.borderRadius,g=this;if(d||t.lineHeight||h&&c){(a=this._getOrCreateChild(Cs)).useStyle(a.createStyle()),a.style.fill=null;var y=a.shape;y.x=n,y.y=i,y.width=r,y.height=o,y.r=f,a.dirtyShape()}if(d)(l=a.style).fill=u||null,l.fillOpacity=rt(t.fillOpacity,1);else if(p){(s=this._getOrCreateChild(_s)).onload=function(){g.dirtyStyle()};var v=s.style;v.image=u.image,v.x=n,v.y=i,v.width=r,v.height=o}h&&c&&((l=a.style).lineWidth=h,l.stroke=c,l.strokeOpacity=rt(t.strokeOpacity,1),l.lineDash=t.borderDash,l.lineDashOffset=t.borderDashOffset||0,a.strokeContainThreshold=0,a.hasFill()&&a.hasStroke()&&(l.strokeFirst=!0,l.lineWidth*=2));var m=(a||s).style;m.shadowBlur=t.shadowBlur||0,m.shadowColor=t.shadowColor||"transparent",m.shadowOffsetX=t.shadowOffsetX||0,m.shadowOffsetY=t.shadowOffsetY||0,m.opacity=ot(t.opacity,e.opacity,1)},e.makeFont=function(t){var e="";return Es(t)&&(e=[t.fontStyle,t.fontWeight,Rs(t.fontSize),t.fontFamily||"sans-serif"].join(" ")),e&&ut(e)||t.textFont||t.font},e}(da),Ls={left:!0,right:1,center:1},Ps={top:1,bottom:1,middle:1},Os=["fontStyle","fontWeight","fontSize","fontFamily"];function Rs(t){return"string"!=typeof t||-1===t.indexOf("px")&&-1===t.indexOf("rem")&&-1===t.indexOf("em")?isNaN(+t)?"12px":t+"px":t}function Ns(t,e){for(var n=0;n<Os.length;n++){var i=Os[n],r=e[i];null!=r&&(t[i]=r)}}function Es(t){return null!=t.fontSize||t.fontFamily||t.fontWeight}function zs(t){if(t){t.font=ks.makeFont(t);var e=t.align;"middle"===e&&(e="center"),t.align=null==e||Ls[e]?e:"left";var n=t.verticalAlign;"center"===n&&(n="middle"),t.verticalAlign=null==n||Ps[n]?n:"top",t.padding&&(t.padding=st(t.padding))}}function Vs(t,e){return null==t||e<=0||"transparent"===t||"none"===t?null:t.image||t.colorStops?"#000":t}function Bs(t){return null==t||"none"===t?null:t.image||t.colorStops?"#000":t}function Fs(t,e,n){return"right"===e?t-n[1]:"center"===e?t+n[3]/2-n[1]/2:t+n[3]}function Gs(t){var e=t.text;return null!=e&&(e+=""),e}function Ws(t){return!!(t.backgroundColor||t.lineHeight||t.borderWidth&&t.borderColor)}var Hs=So(),Ys=function(t,e,n,i){if(i){var r=Hs(i);r.dataIndex=n,r.dataType=e,r.seriesIndex=t,"group"===i.type&&i.traverse((function(i){var r=Hs(i);r.seriesIndex=t,r.dataIndex=n,r.dataType=e}))}},Us=1,Xs={},Zs=So(),js=So(),qs=["emphasis","blur","select"],Ks=["normal","emphasis","blur","select"],$s=10,Js="highlight",Qs="downplay",tl="select",el="unselect",nl="toggleSelect";function il(t){return null!=t&&"none"!==t}var rl=new ln(100);function ol(t){if(X(t)){var e=rl.get(t);return e||(e=Sn(t,-.1),rl.put(t,e)),e}if(Q(t)){var n=A({},t);return n.colorStops=z(t.colorStops,(function(t){return{offset:t.offset,color:Sn(t.color,-.1)}})),n}return t}function al(t,e,n){t.onHoverStateChange&&(t.hoverState||0)!==n&&t.onHoverStateChange(e),t.hoverState=n}function sl(t){al(t,"emphasis",2)}function ll(t){2===t.hoverState&&al(t,"normal",0)}function ul(t){al(t,"blur",1)}function hl(t){1===t.hoverState&&al(t,"normal",0)}function cl(t){t.selected=!0}function pl(t){t.selected=!1}function dl(t,e,n){e(t,n)}function fl(t,e,n){dl(t,e,n),t.isGroup&&t.traverse((function(t){dl(t,e,n)}))}function gl(t,e){switch(e){case"emphasis":t.hoverState=2;break;case"normal":t.hoverState=0;break;case"blur":t.hoverState=1;break;case"select":t.selected=!0}}function yl(t,e){var n=this.states[t];if(this.style){if("emphasis"===t)return function(t,e,n,i){var r=n&&P(n,"select")>=0,o=!1;if(t instanceof gs){var a=Zs(t),s=r&&a.selectFill||a.normalFill,l=r&&a.selectStroke||a.normalStroke;if(il(s)||il(l)){var u=(i=i||{}).style||{};"inherit"===u.fill?(o=!0,i=A({},i),(u=A({},u)).fill=s):!il(u.fill)&&il(s)?(o=!0,i=A({},i),(u=A({},u)).fill=ol(s)):!il(u.stroke)&&il(l)&&(o||(i=A({},i),u=A({},u)),u.stroke=ol(l)),i.style=u}}if(i&&null==i.z2){o||(i=A({},i));var h=t.z2EmphasisLift;i.z2=t.z2+(null!=h?h:$s)}return i}(this,0,e,n);if("blur"===t)return function(t,e,n){var i=P(t.currentStates,e)>=0,r=t.style.opacity,o=i?null:function(t,e,n,i){for(var r=t.style,o={},a=0;a<e.length;a++){var s=e[a],l=r[s];o[s]=null==l?i&&i[s]:l}for(a=0;a<t.animators.length;a++){var u=t.animators[a];u.__fromStateTransition&&u.__fromStateTransition.indexOf(n)<0&&"style"===u.targetName&&u.saveTo(o,e)}return o}(t,["opacity"],e,{opacity:1}),a=(n=n||{}).style||{};return null==a.opacity&&(n=A({},n),a=A({opacity:i?r:.1*o.opacity},a),n.style=a),n}(this,t,n);if("select"===t)return function(t,e,n){if(n&&null==n.z2){n=A({},n);var i=t.z2SelectLift;n.z2=t.z2+(null!=i?i:9)}return n}(this,0,n)}return n}function vl(t){t.stateProxy=yl;var e=t.getTextContent(),n=t.getTextGuideLine();e&&(e.stateProxy=yl),n&&(n.stateProxy=yl)}function ml(t,e){!Tl(t,e)&&!t.__highByOuter&&fl(t,sl)}function xl(t,e){!Tl(t,e)&&!t.__highByOuter&&fl(t,ll)}function _l(t,e){t.__highByOuter|=1<<(e||0),fl(t,sl)}function bl(t,e){!(t.__highByOuter&=~(1<<(e||0)))&&fl(t,ll)}function wl(t){fl(t,ul)}function Sl(t){fl(t,hl)}function Ml(t){fl(t,cl)}function Il(t){fl(t,pl)}function Tl(t,e){return t.__highDownSilentOnTouch&&e.zrByTouch}function Cl(t){var e=t.getModel(),n=[],i=[];e.eachComponent((function(e,r){var o=js(r),a="series"===e,s=a?t.getViewOfSeriesModel(r):t.getViewOfComponentModel(r);!a&&i.push(s),o.isBlured&&(s.group.traverse((function(t){hl(t)})),a&&n.push(r)),o.isBlured=!1})),E(i,(function(t){t&&t.toggleBlurSeries&&t.toggleBlurSeries(n,!1,e)}))}function Dl(t,e,n,i){var r=i.getModel();function o(t,e){for(var n=0;n<e.length;n++){var i=t.getItemGraphicEl(e[n]);i&&Sl(i)}}if(n=n||"coordinateSystem",null!=t&&e&&"none"!==e){var a=r.getSeriesByIndex(t),s=a.coordinateSystem;s&&s.master&&(s=s.master);var l=[];r.eachSeries((function(t){var r=a===t,u=t.coordinateSystem;if(u&&u.master&&(u=u.master),!("series"===n&&!r||"coordinateSystem"===n&&!(u&&s?u===s:r)||"series"===e&&r)){if(i.getViewOfSeriesModel(t).group.traverse((function(t){ul(t)})),N(e))o(t.getData(),e);else if(q(e))for(var h=G(e),c=0;c<h.length;c++)o(t.getData(h[c]),e[h[c]]);l.push(t),js(t).isBlured=!0}})),r.eachComponent((function(t,e){if("series"!==t){var n=i.getViewOfComponentModel(e);n&&n.toggleBlurSeries&&n.toggleBlurSeries(l,!0,r)}}))}}function Al(t,e,n){if(null!=t&&null!=e){var i=n.getModel().getComponent(t,e);if(i){js(i).isBlured=!0;var r=n.getViewOfComponentModel(i);r&&r.focusBlurEnabled&&r.group.traverse((function(t){ul(t)}))}}}function kl(t,e,n,i){var r={focusSelf:!1,dispatchers:null};if(null==t||"series"===t||null==e||null==n)return r;var o=i.getModel().getComponent(t,e);if(!o)return r;var a=i.getViewOfComponentModel(o);if(!a||!a.findHighDownDispatchers)return r;for(var s,l=a.findHighDownDispatchers(n),u=0;u<l.length;u++)if("self"===Hs(l[u]).focus){s=!0;break}return{focusSelf:s,dispatchers:l}}function Ll(t){E(t.getAllData(),(function(e){var n=e.data,i=e.type;n.eachItemGraphicEl((function(e,n){t.isSelected(n,i)?Ml(e):Il(e)}))}))}function Pl(t){var e=[];return t.eachSeries((function(t){E(t.getAllData(),(function(n){n.data;var i=n.type,r=t.getSelectedDataIndices();if(r.length>0){var o={dataIndex:r,seriesIndex:t.seriesIndex};null!=i&&(o.dataType=i),e.push(o)}}))})),e}function Ol(t,e,n){Bl(t,!0),fl(t,vl),Nl(t,e,n)}function Rl(t,e,n,i){i?function(t){Bl(t,!1)}(t):Ol(t,e,n)}function Nl(t,e,n){var i=Hs(t);null!=e?(i.focus=e,i.blurScope=n):i.focus&&(i.focus=null)}var El=["emphasis","blur","select"],zl={itemStyle:"getItemStyle",lineStyle:"getLineStyle",areaStyle:"getAreaStyle"};function Vl(t,e,n,i){n=n||"itemStyle";for(var r=0;r<El.length;r++){var o=El[r],a=e.getModel([o,n]);t.ensureState(o).style=i?i(a):a[zl[n]]()}}function Bl(t,e){var n=!1===e,i=t;t.highDownSilentOnTouch&&(i.__highDownSilentOnTouch=t.highDownSilentOnTouch),n&&!i.__highDownDispatcher||(i.__highByOuter=i.__highByOuter||0,i.__highDownDispatcher=!n)}function Fl(t){return!(!t||!t.__highDownDispatcher)}function Gl(t){var e=t.type;return e===tl||e===el||e===nl}function Wl(t){var e=t.type;return e===Js||e===Qs}var Hl=qa.CMD,Yl=[[],[],[]],Ul=Math.sqrt,Xl=Math.atan2;function Zl(t,e){if(e){var n,i,r,o,a,s,l=t.data,u=t.len(),h=Hl.M,c=Hl.C,p=Hl.L,d=Hl.R,f=Hl.A,g=Hl.Q;for(r=0,o=0;r<u;){switch(n=l[r++],o=r,i=0,n){case h:case p:i=1;break;case c:i=3;break;case g:i=2;break;case f:var y=e[4],v=e[5],m=Ul(e[0]*e[0]+e[1]*e[1]),x=Ul(e[2]*e[2]+e[3]*e[3]),_=Xl(-e[1]/x,e[0]/m);l[r]*=m,l[r++]+=y,l[r]*=x,l[r++]+=v,l[r++]*=m,l[r++]*=x,l[r++]+=_,l[r++]+=_,o=r+=2;break;case d:s[0]=l[r++],s[1]=l[r++],Ft(s,s,e),l[o++]=s[0],l[o++]=s[1],s[0]+=l[r++],s[1]+=l[r++],Ft(s,s,e),l[o++]=s[0],l[o++]=s[1]}for(a=0;a<i;a++){var b=Yl[a];b[0]=l[r++],b[1]=l[r++],Ft(b,b,e),l[o++]=b[0],l[o++]=b[1]}}t.increaseVersion()}}var jl=Math.sqrt,ql=Math.sin,Kl=Math.cos,$l=Math.PI;function Jl(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])}function Ql(t,e){return(t[0]*e[0]+t[1]*e[1])/(Jl(t)*Jl(e))}function tu(t,e){return(t[0]*e[1]<t[1]*e[0]?-1:1)*Math.acos(Ql(t,e))}function eu(t,e,n,i,r,o,a,s,l,u,h){var c=l*($l/180),p=Kl(c)*(t-n)/2+ql(c)*(e-i)/2,d=-1*ql(c)*(t-n)/2+Kl(c)*(e-i)/2,f=p*p/(a*a)+d*d/(s*s);f>1&&(a*=jl(f),s*=jl(f));var g=(r===o?-1:1)*jl((a*a*(s*s)-a*a*(d*d)-s*s*(p*p))/(a*a*(d*d)+s*s*(p*p)))||0,y=g*a*d/s,v=g*-s*p/a,m=(t+n)/2+Kl(c)*y-ql(c)*v,x=(e+i)/2+ql(c)*y+Kl(c)*v,_=tu([1,0],[(p-y)/a,(d-v)/s]),b=[(p-y)/a,(d-v)/s],w=[(-1*p-y)/a,(-1*d-v)/s],S=tu(b,w);if(Ql(b,w)<=-1&&(S=$l),Ql(b,w)>=1&&(S=0),S<0){var M=Math.round(S/$l*1e6)/1e6;S=2*$l+M%2*$l}h.addData(u,m,x,a,s,_,S,c,o)}var nu=/([mlvhzcqtsa])([^mlvhzcqtsa]*)/gi,iu=/-?([0-9]*\.)?[0-9]+([eE]-?[0-9]+)?/g;var ru=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.applyTransform=function(t){},e}(gs);function ou(t){return null!=t.setData}function au(t,e){var n=function(t){var e=new qa;if(!t)return e;var n,i=0,r=0,o=i,a=r,s=qa.CMD,l=t.match(nu);if(!l)return e;for(var u=0;u<l.length;u++){for(var h=l[u],c=h.charAt(0),p=void 0,d=h.match(iu)||[],f=d.length,g=0;g<f;g++)d[g]=parseFloat(d[g]);for(var y=0;y<f;){var v=void 0,m=void 0,x=void 0,_=void 0,b=void 0,w=void 0,S=void 0,M=i,I=r,T=void 0,C=void 0;switch(c){case"l":i+=d[y++],r+=d[y++],p=s.L,e.addData(p,i,r);break;case"L":i=d[y++],r=d[y++],p=s.L,e.addData(p,i,r);break;case"m":i+=d[y++],r+=d[y++],p=s.M,e.addData(p,i,r),o=i,a=r,c="l";break;case"M":i=d[y++],r=d[y++],p=s.M,e.addData(p,i,r),o=i,a=r,c="L";break;case"h":i+=d[y++],p=s.L,e.addData(p,i,r);break;case"H":i=d[y++],p=s.L,e.addData(p,i,r);break;case"v":r+=d[y++],p=s.L,e.addData(p,i,r);break;case"V":r=d[y++],p=s.L,e.addData(p,i,r);break;case"C":p=s.C,e.addData(p,d[y++],d[y++],d[y++],d[y++],d[y++],d[y++]),i=d[y-2],r=d[y-1];break;case"c":p=s.C,e.addData(p,d[y++]+i,d[y++]+r,d[y++]+i,d[y++]+r,d[y++]+i,d[y++]+r),i+=d[y-2],r+=d[y-1];break;case"S":v=i,m=r,T=e.len(),C=e.data,n===s.C&&(v+=i-C[T-4],m+=r-C[T-3]),p=s.C,M=d[y++],I=d[y++],i=d[y++],r=d[y++],e.addData(p,v,m,M,I,i,r);break;case"s":v=i,m=r,T=e.len(),C=e.data,n===s.C&&(v+=i-C[T-4],m+=r-C[T-3]),p=s.C,M=i+d[y++],I=r+d[y++],i+=d[y++],r+=d[y++],e.addData(p,v,m,M,I,i,r);break;case"Q":M=d[y++],I=d[y++],i=d[y++],r=d[y++],p=s.Q,e.addData(p,M,I,i,r);break;case"q":M=d[y++]+i,I=d[y++]+r,i+=d[y++],r+=d[y++],p=s.Q,e.addData(p,M,I,i,r);break;case"T":v=i,m=r,T=e.len(),C=e.data,n===s.Q&&(v+=i-C[T-4],m+=r-C[T-3]),i=d[y++],r=d[y++],p=s.Q,e.addData(p,v,m,i,r);break;case"t":v=i,m=r,T=e.len(),C=e.data,n===s.Q&&(v+=i-C[T-4],m+=r-C[T-3]),i+=d[y++],r+=d[y++],p=s.Q,e.addData(p,v,m,i,r);break;case"A":x=d[y++],_=d[y++],b=d[y++],w=d[y++],S=d[y++],eu(M=i,I=r,i=d[y++],r=d[y++],w,S,x,_,b,p=s.A,e);break;case"a":x=d[y++],_=d[y++],b=d[y++],w=d[y++],S=d[y++],eu(M=i,I=r,i+=d[y++],r+=d[y++],w,S,x,_,b,p=s.A,e)}}"z"!==c&&"Z"!==c||(p=s.Z,e.addData(p),i=o,r=a),n=p}return e.toStatic(),e}(t),i=A({},e);return i.buildPath=function(t){if(ou(t)){t.setData(n.data),(e=t.getContext())&&t.rebuildPath(e,1)}else{var e=t;n.rebuildPath(e,1)}},i.applyTransform=function(t){Zl(n,t),this.dirtyShape()},i}function su(t,e){return new ru(au(t,e))}function lu(t,e){e=e||{};var n=new gs;return t.shape&&n.setShape(t.shape),n.setStyle(t.style),e.bakeTransform?Zl(n.path,t.getComputedTransform()):e.toLocal?n.setLocalTransform(t.getComputedTransform()):n.copyTransform(t),n.buildPath=t.buildPath,n.applyTransform=n.applyTransform,n.z=t.z,n.z2=t.z2,n.zlevel=t.zlevel,n}var uu=function(){this.cx=0,this.cy=0,this.r=0},hu=function(t){function e(e){return t.call(this,e)||this}return n(e,t),e.prototype.getDefaultShape=function(){return new uu},e.prototype.buildPath=function(t,e){t.moveTo(e.cx+e.r,e.cy),t.arc(e.cx,e.cy,e.r,0,2*Math.PI)},e}(gs);hu.prototype.type="circle";var cu=function(){this.cx=0,this.cy=0,this.rx=0,this.ry=0},pu=function(t){function e(e){return t.call(this,e)||this}return n(e,t),e.prototype.getDefaultShape=function(){return new cu},e.prototype.buildPath=function(t,e){var n=.5522848,i=e.cx,r=e.cy,o=e.rx,a=e.ry,s=o*n,l=a*n;t.moveTo(i-o,r),t.bezierCurveTo(i-o,r-l,i-s,r-a,i,r-a),t.bezierCurveTo(i+s,r-a,i+o,r-l,i+o,r),t.bezierCurveTo(i+o,r+l,i+s,r+a,i,r+a),t.bezierCurveTo(i-s,r+a,i-o,r+l,i-o,r),t.closePath()},e}(gs);pu.prototype.type="ellipse";var du=Math.PI,fu=2*du,gu=Math.sin,yu=Math.cos,vu=Math.acos,mu=Math.atan2,xu=Math.abs,_u=Math.sqrt,bu=Math.max,wu=Math.min,Su=1e-4;function Mu(t,e,n,i,r,o,a){var s=t-n,l=e-i,u=(a?o:-o)/_u(s*s+l*l),h=u*l,c=-u*s,p=t+h,d=e+c,f=n+h,g=i+c,y=(p+f)/2,v=(d+g)/2,m=f-p,x=g-d,_=m*m+x*x,b=r-o,w=p*g-f*d,S=(x<0?-1:1)*_u(bu(0,b*b*_-w*w)),M=(w*x-m*S)/_,I=(-w*m-x*S)/_,T=(w*x+m*S)/_,C=(-w*m+x*S)/_,D=M-y,A=I-v,k=T-y,L=C-v;return D*D+A*A>k*k+L*L&&(M=T,I=C),{cx:M,cy:I,x0:-h,y0:-c,x1:M*(r/b-1),y1:I*(r/b-1)}}function Iu(t,e){var n,i=bu(e.r,0),r=bu(e.r0||0,0),o=i>0;if(o||r>0){if(o||(i=r,r=0),r>i){var a=i;i=r,r=a}var s=e.startAngle,l=e.endAngle;if(!isNaN(s)&&!isNaN(l)){var u=e.cx,h=e.cy,c=!!e.clockwise,p=xu(l-s),d=p>fu&&p%fu;if(d>Su&&(p=d),i>Su)if(p>fu-Su)t.moveTo(u+i*yu(s),h+i*gu(s)),t.arc(u,h,i,s,l,!c),r>Su&&(t.moveTo(u+r*yu(l),h+r*gu(l)),t.arc(u,h,r,l,s,c));else{var f=void 0,g=void 0,y=void 0,v=void 0,m=void 0,x=void 0,_=void 0,b=void 0,w=void 0,S=void 0,M=void 0,I=void 0,T=void 0,C=void 0,D=void 0,A=void 0,k=i*yu(s),L=i*gu(s),P=r*yu(l),O=r*gu(l),R=p>Su;if(R){var N=e.cornerRadius;N&&(f=(n=function(t){var e;if(Y(t)){var n=t.length;if(!n)return t;e=1===n?[t[0],t[0],0,0]:2===n?[t[0],t[0],t[1],t[1]]:3===n?t.concat(t[2]):t}else e=[t,t,t,t];return e}(N))[0],g=n[1],y=n[2],v=n[3]);var E=xu(i-r)/2;if(m=wu(E,y),x=wu(E,v),_=wu(E,f),b=wu(E,g),M=w=bu(m,x),I=S=bu(_,b),(w>Su||S>Su)&&(T=i*yu(l),C=i*gu(l),D=r*yu(s),A=r*gu(s),p<du)){var z=function(t,e,n,i,r,o,a,s){var l=n-t,u=i-e,h=a-r,c=s-o,p=c*l-h*u;if(!(p*p<Su))return[t+(p=(h*(e-o)-c*(t-r))/p)*l,e+p*u]}(k,L,D,A,T,C,P,O);if(z){var V=k-z[0],B=L-z[1],F=T-z[0],G=C-z[1],W=1/gu(vu((V*F+B*G)/(_u(V*V+B*B)*_u(F*F+G*G)))/2),H=_u(z[0]*z[0]+z[1]*z[1]);M=wu(w,(i-H)/(W+1)),I=wu(S,(r-H)/(W-1))}}}if(R)if(M>Su){var U=wu(y,M),X=wu(v,M),Z=Mu(D,A,k,L,i,U,c),j=Mu(T,C,P,O,i,X,c);t.moveTo(u+Z.cx+Z.x0,h+Z.cy+Z.y0),M<w&&U===X?t.arc(u+Z.cx,h+Z.cy,M,mu(Z.y0,Z.x0),mu(j.y0,j.x0),!c):(U>0&&t.arc(u+Z.cx,h+Z.cy,U,mu(Z.y0,Z.x0),mu(Z.y1,Z.x1),!c),t.arc(u,h,i,mu(Z.cy+Z.y1,Z.cx+Z.x1),mu(j.cy+j.y1,j.cx+j.x1),!c),X>0&&t.arc(u+j.cx,h+j.cy,X,mu(j.y1,j.x1),mu(j.y0,j.x0),!c))}else t.moveTo(u+k,h+L),t.arc(u,h,i,s,l,!c);else t.moveTo(u+k,h+L);if(r>Su&&R)if(I>Su){U=wu(f,I),Z=Mu(P,O,T,C,r,-(X=wu(g,I)),c),j=Mu(k,L,D,A,r,-U,c);t.lineTo(u+Z.cx+Z.x0,h+Z.cy+Z.y0),I<S&&U===X?t.arc(u+Z.cx,h+Z.cy,I,mu(Z.y0,Z.x0),mu(j.y0,j.x0),!c):(X>0&&t.arc(u+Z.cx,h+Z.cy,X,mu(Z.y0,Z.x0),mu(Z.y1,Z.x1),!c),t.arc(u,h,r,mu(Z.cy+Z.y1,Z.cx+Z.x1),mu(j.cy+j.y1,j.cx+j.x1),c),U>0&&t.arc(u+j.cx,h+j.cy,U,mu(j.y1,j.x1),mu(j.y0,j.x0),!c))}else t.lineTo(u+P,h+O),t.arc(u,h,r,l,s,c);else t.lineTo(u+P,h+O)}else t.moveTo(u,h);t.closePath()}}}var Tu=function(){this.cx=0,this.cy=0,this.r0=0,this.r=0,this.startAngle=0,this.endAngle=2*Math.PI,this.clockwise=!0,this.cornerRadius=0},Cu=function(t){function e(e){return t.call(this,e)||this}return n(e,t),e.prototype.getDefaultShape=function(){return new Tu},e.prototype.buildPath=function(t,e){Iu(t,e)},e.prototype.isZeroArea=function(){return this.shape.startAngle===this.shape.endAngle||this.shape.r===this.shape.r0},e}(gs);Cu.prototype.type="sector";var Du=function(){this.cx=0,this.cy=0,this.r=0,this.r0=0},Au=function(t){function e(e){return t.call(this,e)||this}return n(e,t),e.prototype.getDefaultShape=function(){return new Du},e.prototype.buildPath=function(t,e){var n=e.cx,i=e.cy,r=2*Math.PI;t.moveTo(n+e.r,i),t.arc(n,i,e.r,0,r,!1),t.moveTo(n+e.r0,i),t.arc(n,i,e.r0,0,r,!0)},e}(gs);function ku(t,e,n){var i=e.smooth,r=e.points;if(r&&r.length>=2){if(i){var o=function(t,e,n,i){var r,o,a,s,l=[],u=[],h=[],c=[];if(i){a=[1/0,1/0],s=[-1/0,-1/0];for(var p=0,d=t.length;p<d;p++)Gt(a,a,t[p]),Wt(s,s,t[p]);Gt(a,a,i[0]),Wt(s,s,i[1])}for(p=0,d=t.length;p<d;p++){var f=t[p];if(n)r=t[p?p-1:d-1],o=t[(p+1)%d];else{if(0===p||p===d-1){l.push(Mt(t[p]));continue}r=t[p-1],o=t[p+1]}Dt(u,o,r),Ot(u,u,e);var g=Nt(f,r),y=Nt(f,o),v=g+y;0!==v&&(g/=v,y/=v),Ot(h,u,-g),Ot(c,u,y);var m=Tt([],f,h),x=Tt([],f,c);i&&(Wt(m,m,a),Gt(m,m,s),Wt(x,x,a),Gt(x,x,s)),l.push(m),l.push(x)}return n&&l.push(l.shift()),l}(r,i,n,e.smoothConstraint);t.moveTo(r[0][0],r[0][1]);for(var a=r.length,s=0;s<(n?a:a-1);s++){var l=o[2*s],u=o[2*s+1],h=r[(s+1)%a];t.bezierCurveTo(l[0],l[1],u[0],u[1],h[0],h[1])}}else{t.moveTo(r[0][0],r[0][1]);s=1;for(var c=r.length;s<c;s++)t.lineTo(r[s][0],r[s][1])}n&&t.closePath()}}Au.prototype.type="ring";var Lu=function(){this.points=null,this.smooth=0,this.smoothConstraint=null},Pu=function(t){function e(e){return t.call(this,e)||this}return n(e,t),e.prototype.getDefaultShape=function(){return new Lu},e.prototype.buildPath=function(t,e){ku(t,e,!0)},e}(gs);Pu.prototype.type="polygon";var Ou=function(){this.points=null,this.percent=1,this.smooth=0,this.smoothConstraint=null},Ru=function(t){function e(e){return t.call(this,e)||this}return n(e,t),e.prototype.getDefaultStyle=function(){return{stroke:"#000",fill:null}},e.prototype.getDefaultShape=function(){return new Ou},e.prototype.buildPath=function(t,e){ku(t,e,!1)},e}(gs);Ru.prototype.type="polyline";var Nu={},Eu=function(){this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.percent=1},zu=function(t){function e(e){return t.call(this,e)||this}return n(e,t),e.prototype.getDefaultStyle=function(){return{stroke:"#000",fill:null}},e.prototype.getDefaultShape=function(){return new Eu},e.prototype.buildPath=function(t,e){var n,i,r,o;if(this.subPixelOptimize){var a=ws(Nu,e,this.style);n=a.x1,i=a.y1,r=a.x2,o=a.y2}else n=e.x1,i=e.y1,r=e.x2,o=e.y2;var s=e.percent;0!==s&&(t.moveTo(n,i),s<1&&(r=n*(1-s)+r*s,o=i*(1-s)+o*s),t.lineTo(r,o))},e.prototype.pointAt=function(t){var e=this.shape;return[e.x1*(1-t)+e.x2*t,e.y1*(1-t)+e.y2*t]},e}(gs);zu.prototype.type="line";var Vu=[],Bu=function(){this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.cpx1=0,this.cpy1=0,this.percent=1};function Fu(t,e,n){var i=t.cpx2,r=t.cpy2;return null!=i||null!=r?[(n?Ye:He)(t.x1,t.cpx1,t.cpx2,t.x2,e),(n?Ye:He)(t.y1,t.cpy1,t.cpy2,t.y2,e)]:[(n?$e:Ke)(t.x1,t.cpx1,t.x2,e),(n?$e:Ke)(t.y1,t.cpy1,t.y2,e)]}var Gu=function(t){function e(e){return t.call(this,e)||this}return n(e,t),e.prototype.getDefaultStyle=function(){return{stroke:"#000",fill:null}},e.prototype.getDefaultShape=function(){return new Bu},e.prototype.buildPath=function(t,e){var n=e.x1,i=e.y1,r=e.x2,o=e.y2,a=e.cpx1,s=e.cpy1,l=e.cpx2,u=e.cpy2,h=e.percent;0!==h&&(t.moveTo(n,i),null==l||null==u?(h<1&&(Qe(n,a,r,h,Vu),a=Vu[1],r=Vu[2],Qe(i,s,o,h,Vu),s=Vu[1],o=Vu[2]),t.quadraticCurveTo(a,s,r,o)):(h<1&&(Ze(n,a,l,r,h,Vu),a=Vu[1],l=Vu[2],r=Vu[3],Ze(i,s,u,o,h,Vu),s=Vu[1],u=Vu[2],o=Vu[3]),t.bezierCurveTo(a,s,l,u,r,o)))},e.prototype.pointAt=function(t){return Fu(this.shape,t,!1)},e.prototype.tangentAt=function(t){var e=Fu(this.shape,t,!0);return Rt(e,e)},e}(gs);Gu.prototype.type="bezier-curve";var Wu=function(){this.cx=0,this.cy=0,this.r=0,this.startAngle=0,this.endAngle=2*Math.PI,this.clockwise=!0},Hu=function(t){function e(e){return t.call(this,e)||this}return n(e,t),e.prototype.getDefaultStyle=function(){return{stroke:"#000",fill:null}},e.prototype.getDefaultShape=function(){return new Wu},e.prototype.buildPath=function(t,e){var n=e.cx,i=e.cy,r=Math.max(e.r,0),o=e.startAngle,a=e.endAngle,s=e.clockwise,l=Math.cos(o),u=Math.sin(o);t.moveTo(l*r+n,u*r+i),t.arc(n,i,r,o,a,!s)},e}(gs);Hu.prototype.type="arc";var Yu=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="compound",e}return n(e,t),e.prototype._updatePathDirty=function(){for(var t=this.shape.paths,e=this.shapeChanged(),n=0;n<t.length;n++)e=e||t[n].shapeChanged();e&&this.dirtyShape()},e.prototype.beforeBrush=function(){this._updatePathDirty();for(var t=this.shape.paths||[],e=this.getGlobalScale(),n=0;n<t.length;n++)t[n].path||t[n].createPathProxy(),t[n].path.setScale(e[0],e[1],t[n].segmentIgnoreThreshold)},e.prototype.buildPath=function(t,e){for(var n=e.paths||[],i=0;i<n.length;i++)n[i].buildPath(t,n[i].shape,!0)},e.prototype.afterBrush=function(){for(var t=this.shape.paths||[],e=0;e<t.length;e++)t[e].pathUpdated()},e.prototype.getBoundingRect=function(){return this._updatePathDirty.call(this),gs.prototype.getBoundingRect.call(this)},e}(gs),Uu=function(){function t(t){this.colorStops=t||[]}return t.prototype.addColorStop=function(t,e){this.colorStops.push({offset:t,color:e})},t}(),Xu=function(t){function e(e,n,i,r,o,a){var s=t.call(this,o)||this;return s.x=null==e?0:e,s.y=null==n?0:n,s.x2=null==i?1:i,s.y2=null==r?0:r,s.type="linear",s.global=a||!1,s}return n(e,t),e}(Uu),Zu=function(t){function e(e,n,i,r,o){var a=t.call(this,r)||this;return a.x=null==e?.5:e,a.y=null==n?.5:n,a.r=null==i?.5:i,a.type="radial",a.global=o||!1,a}return n(e,t),e}(Uu),ju=[0,0],qu=[0,0],Ku=new Ji,$u=new Ji,Ju=function(){function t(t,e){this._corners=[],this._axes=[],this._origin=[0,0];for(var n=0;n<4;n++)this._corners[n]=new Ji;for(n=0;n<2;n++)this._axes[n]=new Ji;t&&this.fromBoundingRect(t,e)}return t.prototype.fromBoundingRect=function(t,e){var n=this._corners,i=this._axes,r=t.x,o=t.y,a=r+t.width,s=o+t.height;if(n[0].set(r,o),n[1].set(a,o),n[2].set(a,s),n[3].set(r,s),e)for(var l=0;l<4;l++)n[l].transform(e);Ji.sub(i[0],n[1],n[0]),Ji.sub(i[1],n[3],n[0]),i[0].normalize(),i[1].normalize();for(l=0;l<2;l++)this._origin[l]=i[l].dot(n[0])},t.prototype.intersect=function(t,e){var n=!0,i=!e;return Ku.set(1/0,1/0),$u.set(0,0),!this._intersectCheckOneSide(this,t,Ku,$u,i,1)&&(n=!1,i)||!this._intersectCheckOneSide(t,this,Ku,$u,i,-1)&&(n=!1,i)||i||Ji.copy(e,n?Ku:$u),n},t.prototype._intersectCheckOneSide=function(t,e,n,i,r,o){for(var a=!0,s=0;s<2;s++){var l=this._axes[s];if(this._getProjMinMaxOnAxis(s,t._corners,ju),this._getProjMinMaxOnAxis(s,e._corners,qu),ju[1]<qu[0]||ju[0]>qu[1]){if(a=!1,r)return a;var u=Math.abs(qu[0]-ju[1]),h=Math.abs(ju[0]-qu[1]);Math.min(u,h)>i.len()&&(u<h?Ji.scale(i,l,-u*o):Ji.scale(i,l,h*o))}else if(n){u=Math.abs(qu[0]-ju[1]),h=Math.abs(ju[0]-qu[1]);Math.min(u,h)<n.len()&&(u<h?Ji.scale(n,l,u*o):Ji.scale(n,l,-h*o))}}return a},t.prototype._getProjMinMaxOnAxis=function(t,e,n){for(var i=this._axes[t],r=this._origin,o=e[0].dot(i)+r[t],a=o,s=o,l=1;l<e.length;l++){var u=e[l].dot(i)+r[t];a=Math.min(u,a),s=Math.max(u,s)}n[0]=a,n[1]=s},t}(),Qu=[],th=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.notClear=!0,e.incremental=!0,e._displayables=[],e._temporaryDisplayables=[],e._cursor=0,e}return n(e,t),e.prototype.traverse=function(t,e){t.call(e,this)},e.prototype.useStyle=function(){this.style={}},e.prototype.getCursor=function(){return this._cursor},e.prototype.innerAfterBrush=function(){this._cursor=this._displayables.length},e.prototype.clearDisplaybles=function(){this._displayables=[],this._temporaryDisplayables=[],this._cursor=0,this.markRedraw(),this.notClear=!1},e.prototype.clearTemporalDisplayables=function(){this._temporaryDisplayables=[]},e.prototype.addDisplayable=function(t,e){e?this._temporaryDisplayables.push(t):this._displayables.push(t),this.markRedraw()},e.prototype.addDisplayables=function(t,e){e=e||!1;for(var n=0;n<t.length;n++)this.addDisplayable(t[n],e)},e.prototype.getDisplayables=function(){return this._displayables},e.prototype.getTemporalDisplayables=function(){return this._temporaryDisplayables},e.prototype.eachPendingDisplayable=function(t){for(var e=this._cursor;e<this._displayables.length;e++)t&&t(this._displayables[e]);for(e=0;e<this._temporaryDisplayables.length;e++)t&&t(this._temporaryDisplayables[e])},e.prototype.update=function(){this.updateTransform();for(var t=this._cursor;t<this._displayables.length;t++){(e=this._displayables[t]).parent=this,e.update(),e.parent=null}for(t=0;t<this._temporaryDisplayables.length;t++){var e;(e=this._temporaryDisplayables[t]).parent=this,e.update(),e.parent=null}},e.prototype.getBoundingRect=function(){if(!this._rect){for(var t=new sr(1/0,1/0,-1/0,-1/0),e=0;e<this._displayables.length;e++){var n=this._displayables[e],i=n.getBoundingRect().clone();n.needLocalTransform()&&i.applyTransform(n.getLocalTransform(Qu)),t.union(i)}this._rect=t}return this._rect},e.prototype.contain=function(t,e){var n=this.transformCoordToLocal(t,e);if(this.getBoundingRect().contain(n[0],n[1]))for(var i=0;i<this._displayables.length;i++){if(this._displayables[i].contain(t,e))return!0}return!1},e}(da),eh=So();function nh(t,e,n,i,r){var o;if(e&&e.ecModel){var a=e.ecModel.getUpdatePayload();o=a&&a.animation}var s="update"===t;if(e&&e.isAnimationEnabled()){var l=void 0,u=void 0,h=void 0;return i?(l=rt(i.duration,200),u=rt(i.easing,"cubicOut"),h=0):(l=e.getShallow(s?"animationDurationUpdate":"animationDuration"),u=e.getShallow(s?"animationEasingUpdate":"animationEasing"),h=e.getShallow(s?"animationDelayUpdate":"animationDelay")),o&&(null!=o.duration&&(l=o.duration),null!=o.easing&&(u=o.easing),null!=o.delay&&(h=o.delay)),U(h)&&(h=h(n,r)),U(l)&&(l=l(n)),{duration:l||0,delay:h,easing:u}}return null}function ih(t,e,n,i,r,o,a){var s,l=!1;U(r)?(a=o,o=r,r=null):q(r)&&(o=r.cb,a=r.during,l=r.isFrom,s=r.removeOpt,r=r.dataIndex);var u="leave"===t;u||e.stopAnimation("leave");var h=nh(t,i,r,u?s||{}:null,i&&i.getAnimationDelayParams?i.getAnimationDelayParams(e,r):null);if(h&&h.duration>0){var c={duration:h.duration,delay:h.delay||0,easing:h.easing,done:o,force:!!o||!!a,setToFinal:!u,scope:t,during:a};l?e.animateFrom(n,c):e.animateTo(n,c)}else e.stopAnimation(),!l&&e.attr(n),a&&a(1),o&&o()}function rh(t,e,n,i,r,o){ih("update",t,e,n,i,r,o)}function oh(t,e,n,i,r,o){ih("enter",t,e,n,i,r,o)}function ah(t){if(!t.__zr)return!0;for(var e=0;e<t.animators.length;e++){if("leave"===t.animators[e].scope)return!0}return!1}function sh(t,e,n,i,r,o){ah(t)||ih("leave",t,e,n,i,r,o)}function lh(t,e,n,i){t.removeTextContent(),t.removeTextGuideLine(),sh(t,{style:{opacity:0}},e,n,i)}function uh(t,e,n){function i(){t.parent&&t.parent.remove(t)}t.isGroup?t.traverse((function(t){t.isGroup||lh(t,e,n,i)})):lh(t,e,n,i)}function hh(t){eh(t).oldStyle=t.style}var ch=Math.max,ph=Math.min,dh={};function fh(t){return gs.extend(t)}var gh=function(t,e){var i=au(t,e);return function(t){function e(e){var n=t.call(this,e)||this;return n.applyTransform=i.applyTransform,n.buildPath=i.buildPath,n}return n(e,t),e}(ru)};function yh(t,e){return gh(t,e)}function vh(t,e){dh[t]=e}function mh(t){if(dh.hasOwnProperty(t))return dh[t]}function xh(t,e,n,i){var r=su(t,e);return n&&("center"===i&&(n=bh(n,r.getBoundingRect())),Sh(r,n)),r}function _h(t,e,n){var i=new _s({style:{image:t,x:e.x,y:e.y,width:e.width,height:e.height},onload:function(t){if("center"===n){var r={width:t.width,height:t.height};i.setStyle(bh(e,r))}}});return i}function bh(t,e){var n,i=e.width/e.height,r=t.height*i;return n=r<=t.width?t.height:(r=t.width)/i,{x:t.x+t.width/2-r/2,y:t.y+t.height/2-n/2,width:r,height:n}}var wh=function(t,e){for(var n=[],i=t.length,r=0;r<i;r++){var o=t[r];n.push(o.getUpdatedPathProxy(!0))}var a=new gs(e);return a.createPathProxy(),a.buildPath=function(t){if(ou(t)){t.appendPath(n);var e=t.getContext();e&&t.rebuildPath(e,1)}},a};function Sh(t,e){if(t.applyTransform){var n=t.getBoundingRect().calculateTransform(e);t.applyTransform(n)}}var Mh=Ms;function Ih(t,e){for(var n=Oi([]);t&&t!==e;)Ni(n,t.getLocalTransform(),n),t=t.parent;return n}function Th(t,e,n){return e&&!N(e)&&(e=qi.getLocalTransform(e)),n&&(e=Bi([],e)),Ft([],t,e)}function Ch(t,e,n){var i=0===e[4]||0===e[5]||0===e[0]?1:Math.abs(2*e[4]/e[0]),r=0===e[4]||0===e[5]||0===e[2]?1:Math.abs(2*e[4]/e[2]),o=["left"===t?-i:"right"===t?i:0,"top"===t?-r:"bottom"===t?r:0];return o=Th(o,e,n),Math.abs(o[0])>Math.abs(o[1])?o[0]>0?"right":"left":o[1]>0?"bottom":"top"}function Dh(t){return!t.isGroup}function Ah(t,e,n){if(t&&e){var i,r=(i={},t.traverse((function(t){Dh(t)&&t.anid&&(i[t.anid]=t)})),i);e.traverse((function(t){if(Dh(t)&&t.anid){var e=r[t.anid];if(e){var i=o(t);t.attr(o(e)),rh(t,i,n,Hs(t).dataIndex)}}}))}function o(t){var e={x:t.x,y:t.y,rotation:t.rotation};return function(t){return null!=t.shape}(t)&&(e.shape=A({},t.shape)),e}}function kh(t,e){return z(t,(function(t){var n=t[0];n=ch(n,e.x),n=ph(n,e.x+e.width);var i=t[1];return i=ch(i,e.y),[n,i=ph(i,e.y+e.height)]}))}function Lh(t,e){var n=ch(t.x,e.x),i=ph(t.x+t.width,e.x+e.width),r=ch(t.y,e.y),o=ph(t.y+t.height,e.y+e.height);if(i>=n&&o>=r)return{x:n,y:r,width:i-n,height:o-r}}function Ph(t,e,n){var i=A({rectHover:!0},e),r=i.style={strokeNoScale:!0};if(n=n||{x:-1,y:-1,width:2,height:2},t)return 0===t.indexOf("image://")?(r.image=t.slice(8),k(r,n),new _s(i)):xh(t.replace("path://",""),i,n,"center")}function Oh(t,e,n,i,r){for(var o=0,a=r[r.length-1];o<r.length;o++){var s=r[o];if(Rh(t,e,n,i,s[0],s[1],a[0],a[1]))return!0;a=s}}function Rh(t,e,n,i,r,o,a,s){var l,u=n-t,h=i-e,c=a-r,p=s-o,d=Nh(c,p,u,h);if((l=d)<=1e-6&&l>=-1e-6)return!1;var f=t-r,g=e-o,y=Nh(f,g,u,h)/d;if(y<0||y>1)return!1;var v=Nh(f,g,c,p)/d;return!(v<0||v>1)}function Nh(t,e,n,i){return t*i-n*e}function Eh(t){var e=t.itemTooltipOption,n=t.componentModel,i=t.itemName,r=X(e)?{formatter:e}:e,o=n.mainType,a=n.componentIndex,s={componentType:o,name:i,$vars:["name"]};s[o+"Index"]=a;var l=t.formatterParamsExtra;l&&E(G(l),(function(t){mt(s,t)||(s[t]=l[t],s.$vars.push(t))}));var u=Hs(t.el);u.componentMainType=o,u.componentIndex=a,u.tooltipConfig={name:i,option:k({content:i,formatterParams:s},r)}}function zh(t,e){var n;t.isGroup&&(n=e(t)),n||t.traverse(e)}function Vh(t,e){if(t)if(Y(t))for(var n=0;n<t.length;n++)zh(t[n],e);else zh(t,e)}vh("circle",hu),vh("ellipse",pu),vh("sector",Cu),vh("ring",Au),vh("polygon",Pu),vh("polyline",Ru),vh("rect",Cs),vh("line",zu),vh("bezierCurve",Gu),vh("arc",Hu);var Bh=Object.freeze({__proto__:null,updateProps:rh,initProps:oh,removeElement:sh,removeElementWithFadeOut:uh,isElementRemoved:ah,extendShape:fh,extendPath:yh,registerShape:vh,getShapeClass:mh,makePath:xh,makeImage:_h,mergePath:wh,resizePath:Sh,subPixelOptimizeLine:function(t){return ws(t.shape,t.shape,t.style),t},subPixelOptimizeRect:function(t){return Ss(t.shape,t.shape,t.style),t},subPixelOptimize:Mh,getTransform:Ih,applyTransform:Th,transformDirection:Ch,groupTransition:Ah,clipPointsByRect:kh,clipRectByRect:Lh,createIcon:Ph,linePolygonIntersect:Oh,lineLineIntersect:Rh,setTooltipConfig:Eh,traverseElements:Vh,Group:Cr,Image:_s,Text:ks,Circle:hu,Ellipse:pu,Sector:Cu,Ring:Au,Polygon:Pu,Polyline:Ru,Rect:Cs,Line:zu,BezierCurve:Gu,Arc:Hu,IncrementalDisplayable:th,CompoundPath:Yu,LinearGradient:Xu,RadialGradient:Zu,BoundingRect:sr,OrientedBoundingRect:Ju,Point:Ji,Path:gs}),Fh={};function Gh(t,e){for(var n=0;n<qs.length;n++){var i=qs[n],r=e[i],o=t.ensureState(i);o.style=o.style||{},o.style.text=r}var a=t.currentStates.slice();t.clearStates(!0),t.setStyle({text:e.normal}),t.useStates(a,!0)}function Wh(t,e,n){var i,r=t.labelFetcher,o=t.labelDataIndex,a=t.labelDimIndex,s=e.normal;r&&(i=r.getFormattedLabel(o,"normal",null,a,s&&s.get("formatter"),null!=n?{interpolatedValue:n}:null)),null==i&&(i=U(t.defaultText)?t.defaultText(o,t,n):t.defaultText);for(var l={normal:i},u=0;u<qs.length;u++){var h=qs[u],c=e[h];l[h]=rt(r?r.getFormattedLabel(o,h,null,a,c&&c.get("formatter")):null,i)}return l}function Hh(t,e,n,i){n=n||Fh;for(var r=t instanceof ks,o=!1,a=0;a<Ks.length;a++){if((p=e[Ks[a]])&&p.getShallow("show")){o=!0;break}}var s=r?t:t.getTextContent();if(o){r||(s||(s=new ks,t.setTextContent(s)),t.stateProxy&&(s.stateProxy=t.stateProxy));var l=Wh(n,e),u=e.normal,h=!!u.getShallow("show"),c=Uh(u,i&&i.normal,n,!1,!r);c.text=l.normal,r||t.setTextConfig(Xh(u,n,!1));for(a=0;a<qs.length;a++){var p,d=qs[a];if(p=e[d]){var f=s.ensureState(d),g=!!rt(p.getShallow("show"),h);if(g!==h&&(f.ignore=!g),f.style=Uh(p,i&&i[d],n,!0,!r),f.style.text=l[d],!r)t.ensureState(d).textConfig=Xh(p,n,!0)}}s.silent=!!u.getShallow("silent"),null!=s.style.x&&(c.x=s.style.x),null!=s.style.y&&(c.y=s.style.y),s.ignore=!h,s.useStyle(c),s.dirty(),n.enableTextSetter&&(Jh(s).setLabelText=function(t){var i=Wh(n,e,t);Gh(s,i)})}else s&&(s.ignore=!0);t.dirty()}function Yh(t,e){e=e||"label";for(var n={normal:t.getModel(e)},i=0;i<qs.length;i++){var r=qs[i];n[r]=t.getModel([r,e])}return n}function Uh(t,e,n,i,r){var o={};return function(t,e,n,i,r){n=n||Fh;var o,a=e.ecModel,s=a&&a.option.textStyle,l=function(t){var e;for(;t&&t!==t.ecModel;){var n=(t.option||Fh).rich;if(n){e=e||{};for(var i=G(n),r=0;r<i.length;r++){e[i[r]]=1}}t=t.parentModel}return e}(e);if(l)for(var u in o={},l)if(l.hasOwnProperty(u)){var h=e.getModel(["rich",u]);Kh(o[u]={},h,s,n,i,r,!1,!0)}o&&(t.rich=o);var c=e.get("overflow");c&&(t.overflow=c);var p=e.get("minMargin");null!=p&&(t.margin=p);Kh(t,e,s,n,i,r,!0,!1)}(o,t,n,i,r),e&&A(o,e),o}function Xh(t,e,n){e=e||{};var i,r={},o=t.getShallow("rotate"),a=rt(t.getShallow("distance"),n?null:5),s=t.getShallow("offset");return"outside"===(i=t.getShallow("position")||(n?null:"inside"))&&(i=e.defaultOutsidePosition||"top"),null!=i&&(r.position=i),null!=s&&(r.offset=s),null!=o&&(o*=Math.PI/180,r.rotation=o),null!=a&&(r.distance=a),r.outsideFill="inherit"===t.get("color")?e.inheritColor||null:"auto",r}var Zh=["fontStyle","fontWeight","fontSize","fontFamily","textShadowColor","textShadowBlur","textShadowOffsetX","textShadowOffsetY"],jh=["align","lineHeight","width","height","tag","verticalAlign"],qh=["padding","borderWidth","borderRadius","borderDashOffset","backgroundColor","borderColor","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY"];function Kh(t,e,n,i,r,o,a,s){n=!r&&n||Fh;var l=i&&i.inheritColor,u=e.getShallow("color"),h=e.getShallow("textBorderColor"),c=rt(e.getShallow("opacity"),n.opacity);"inherit"!==u&&"auto"!==u||(u=l||null),"inherit"!==h&&"auto"!==h||(h=l||null),o||(u=u||n.color,h=h||n.textBorderColor),null!=u&&(t.fill=u),null!=h&&(t.stroke=h);var p=rt(e.getShallow("textBorderWidth"),n.textBorderWidth);null!=p&&(t.lineWidth=p);var d=rt(e.getShallow("textBorderType"),n.textBorderType);null!=d&&(t.lineDash=d);var f=rt(e.getShallow("textBorderDashOffset"),n.textBorderDashOffset);null!=f&&(t.lineDashOffset=f),r||null!=c||s||(c=i&&i.defaultOpacity),null!=c&&(t.opacity=c),r||o||null==t.fill&&i.inheritColor&&(t.fill=i.inheritColor);for(var g=0;g<Zh.length;g++){var y=Zh[g];null!=(m=rt(e.getShallow(y),n[y]))&&(t[y]=m)}for(g=0;g<jh.length;g++){y=jh[g];null!=(m=e.getShallow(y))&&(t[y]=m)}if(null==t.verticalAlign){var v=e.getShallow("baseline");null!=v&&(t.verticalAlign=v)}if(!a||!i.disableBox){for(g=0;g<qh.length;g++){var m;y=qh[g];null!=(m=e.getShallow(y))&&(t[y]=m)}var x=e.getShallow("borderType");null!=x&&(t.borderDash=x),"auto"!==t.backgroundColor&&"inherit"!==t.backgroundColor||!l||(t.backgroundColor=l),"auto"!==t.borderColor&&"inherit"!==t.borderColor||!l||(t.borderColor=l)}}function $h(t,e){var n=e&&e.getModel("textStyle");return ut([t.fontStyle||n&&n.getShallow("fontStyle")||"",t.fontWeight||n&&n.getShallow("fontWeight")||"",(t.fontSize||n&&n.getShallow("fontSize")||12)+"px",t.fontFamily||n&&n.getShallow("fontFamily")||"sans-serif"].join(" "))}var Jh=So();function Qh(t,e,n,i){if(t){var r=Jh(t);r.prevValue=r.value,r.value=n;var o=e.normal;r.valueAnimation=o.get("valueAnimation"),r.valueAnimation&&(r.precision=o.get("precision"),r.defaultInterpolatedText=i,r.statesModels=e)}}function tc(t,e,n,i,r){var o=Jh(t);if(o.valueAnimation&&o.prevValue!==o.value){var a=o.defaultInterpolatedText,s=rt(o.interpolatedValue,o.prevValue),l=o.value;t.percent=0,(null==o.prevValue?oh:rh)(t,{percent:1},i,e,null,(function(i){var u=Po(n,o.precision,s,l,i);o.interpolatedValue=1===i?null:u;var h=Wh({labelDataIndex:e,labelFetcher:r,defaultText:a?a(u):u+""},o.statesModels,u);Gh(t,h)}))}}var ec,nc,ic=["textStyle","color"],rc=["fontStyle","fontWeight","fontSize","fontFamily","padding","lineHeight","rich","width","height","overflow"],oc=new ks,ac=function(){function t(){}return t.prototype.getTextColor=function(t){var e=this.ecModel;return this.getShallow("color")||(!t&&e?e.get(ic):null)},t.prototype.getFont=function(){return $h({fontStyle:this.getShallow("fontStyle"),fontWeight:this.getShallow("fontWeight"),fontSize:this.getShallow("fontSize"),fontFamily:this.getShallow("fontFamily")},this.ecModel)},t.prototype.getTextRect=function(t){for(var e={text:t,verticalAlign:this.getShallow("verticalAlign")||this.getShallow("baseline")},n=0;n<rc.length;n++)e[rc[n]]=this.getShallow(rc[n]);return oc.useStyle(e),oc.update(),oc.getBoundingRect()},t}(),sc=[["lineWidth","width"],["stroke","color"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"],["lineDash","type"],["lineDashOffset","dashOffset"],["lineCap","cap"],["lineJoin","join"],["miterLimit"]],lc=Wo(sc),uc=function(){function t(){}return t.prototype.getLineStyle=function(t){return lc(this,t)},t}(),hc=[["fill","color"],["stroke","borderColor"],["lineWidth","borderWidth"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"],["lineDash","borderType"],["lineDashOffset","borderDashOffset"],["lineCap","borderCap"],["lineJoin","borderJoin"],["miterLimit","borderMiterLimit"]],cc=Wo(hc),pc=function(){function t(){}return t.prototype.getItemStyle=function(t,e){return cc(this,t,e)},t}(),dc=function(){function t(t,e,n){this.parentModel=e,this.ecModel=n,this.option=t}return t.prototype.init=function(t,e,n){for(var i=[],r=3;r<arguments.length;r++)i[r-3]=arguments[r]},t.prototype.mergeOption=function(t,e){C(this.option,t,!0)},t.prototype.get=function(t,e){return null==t?this.option:this._doGet(this.parsePath(t),!e&&this.parentModel)},t.prototype.getShallow=function(t,e){var n=this.option,i=null==n?n:n[t];if(null==i&&!e){var r=this.parentModel;r&&(i=r.getShallow(t))}return i},t.prototype.getModel=function(e,n){var i=null!=e,r=i?this.parsePath(e):null;return new t(i?this._doGet(r):this.option,n=n||this.parentModel&&this.parentModel.getModel(this.resolveParentPath(r)),this.ecModel)},t.prototype.isEmpty=function(){return null==this.option},t.prototype.restoreData=function(){},t.prototype.clone=function(){return new(0,this.constructor)(T(this.option))},t.prototype.parsePath=function(t){return"string"==typeof t?t.split("."):t},t.prototype.resolveParentPath=function(t){return t},t.prototype.isAnimationEnabled=function(){if(!r.node&&this.option){if(null!=this.option.animation)return!!this.option.animation;if(this.parentModel)return this.parentModel.isAnimationEnabled()}},t.prototype._doGet=function(t,e){var n=this.option;if(!t)return n;for(var i=0;i<t.length&&(!t[i]||null!=(n=n&&"object"==typeof n?n[t[i]]:null));i++);return null==n&&e&&(n=e._doGet(this.resolveParentPath(t),e.parentModel)),n},t}();Eo(dc),ec=dc,nc=["__\0is_clz",Vo++].join("_"),ec.prototype[nc]=!0,ec.isInstance=function(t){return!(!t||!t[nc])},R(dc,uc),R(dc,pc),R(dc,Yo),R(dc,ac);var fc=Math.round(10*Math.random());function gc(t){return[t||"",fc++].join("_")}function yc(t,e){return C(C({},t,!0),e,!0)}var vc="ZH",mc="EN",xc=mc,_c={},bc={},wc=r.domSupported&&(document.documentElement.lang||navigator.language||navigator.browserLanguage).toUpperCase().indexOf(vc)>-1?vc:xc;function Sc(t,e){t=t.toUpperCase(),bc[t]=new dc(e),_c[t]=e}function Mc(t){return bc[t]}Sc(mc,{time:{month:["January","February","March","April","May","June","July","August","September","October","November","December"],monthAbbr:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayOfWeek:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayOfWeekAbbr:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},legend:{selector:{all:"All",inverse:"Inv"}},toolbox:{brush:{title:{rect:"Box Select",polygon:"Lasso Select",lineX:"Horizontally Select",lineY:"Vertically Select",keep:"Keep Selections",clear:"Clear Selections"}},dataView:{title:"Data View",lang:["Data View","Close","Refresh"]},dataZoom:{title:{zoom:"Zoom",back:"Zoom Reset"}},magicType:{title:{line:"Switch to Line Chart",bar:"Switch to Bar Chart",stack:"Stack",tiled:"Tile"}},restore:{title:"Restore"},saveAsImage:{title:"Save as Image",lang:["Right Click to Save Image"]}},series:{typeNames:{pie:"Pie chart",bar:"Bar chart",line:"Line chart",scatter:"Scatter plot",effectScatter:"Ripple scatter plot",radar:"Radar chart",tree:"Tree",treemap:"Treemap",boxplot:"Boxplot",candlestick:"Candlestick",k:"K line chart",heatmap:"Heat map",map:"Map",parallel:"Parallel coordinate map",lines:"Line graph",graph:"Relationship graph",sankey:"Sankey diagram",funnel:"Funnel chart",gauge:"Gauge",pictorialBar:"Pictorial bar",themeRiver:"Theme River Map",sunburst:"Sunburst"}},aria:{general:{withTitle:'This is a chart about "{title}"',withoutTitle:"This is a chart"},series:{single:{prefix:"",withName:" with type {seriesType} named {seriesName}.",withoutName:" with type {seriesType}."},multiple:{prefix:". It consists of {seriesCount} series count.",withName:" The {seriesId} series is a {seriesType} representing {seriesName}.",withoutName:" The {seriesId} series is a {seriesType}.",separator:{middle:"",end:""}}},data:{allData:"The data is as follows: ",partialData:"The first {displayCnt} items are: ",withName:"the data for {name} is {value}",withoutName:"{value}",separator:{middle:", ",end:". "}}}}),Sc(vc,{time:{month:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthAbbr:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],dayOfWeek:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayOfWeekAbbr:["日","一","二","三","四","五","六"]},legend:{selector:{all:"全选",inverse:"反选"}},toolbox:{brush:{title:{rect:"矩形选择",polygon:"圈选",lineX:"横向选择",lineY:"纵向选择",keep:"保持选择",clear:"清除选择"}},dataView:{title:"数据视图",lang:["数据视图","关闭","刷新"]},dataZoom:{title:{zoom:"区域缩放",back:"区域缩放还原"}},magicType:{title:{line:"切换为折线图",bar:"切换为柱状图",stack:"切换为堆叠",tiled:"切换为平铺"}},restore:{title:"还原"},saveAsImage:{title:"保存为图片",lang:["右键另存为图片"]}},series:{typeNames:{pie:"饼图",bar:"柱状图",line:"折线图",scatter:"散点图",effectScatter:"涟漪散点图",radar:"雷达图",tree:"树图",treemap:"矩形树图",boxplot:"箱型图",candlestick:"K线图",k:"K线图",heatmap:"热力图",map:"地图",parallel:"平行坐标图",lines:"线图",graph:"关系图",sankey:"桑基图",funnel:"漏斗图",gauge:"仪表盘图",pictorialBar:"象形柱图",themeRiver:"主题河流图",sunburst:"旭日图"}},aria:{general:{withTitle:"这是一个关于“{title}”的图表。",withoutTitle:"这是一个图表,"},series:{single:{prefix:"",withName:"图表类型是{seriesType},表示{seriesName}。",withoutName:"图表类型是{seriesType}。"},multiple:{prefix:"它由{seriesCount}个图表系列组成。",withName:"第{seriesId}个系列是一个表示{seriesName}的{seriesType},",withoutName:"第{seriesId}个系列是一个{seriesType},",separator:{middle:";",end:"。"}}},data:{allData:"其数据是——",partialData:"其中,前{displayCnt}项是——",withName:"{name}的数据是{value}",withoutName:"{value}",separator:{middle:",",end:""}}}});var Ic=1e3,Tc=6e4,Cc=36e5,Dc=864e5,Ac=31536e6,kc={year:"{yyyy}",month:"{MMM}",day:"{d}",hour:"{HH}:{mm}",minute:"{HH}:{mm}",second:"{HH}:{mm}:{ss}",millisecond:"{HH}:{mm}:{ss} {SSS}",none:"{yyyy}-{MM}-{dd} {HH}:{mm}:{ss} {SSS}"},Lc="{yyyy}-{MM}-{dd}",Pc={year:"{yyyy}",month:"{yyyy}-{MM}",day:Lc,hour:"{yyyy}-{MM}-{dd} "+kc.hour,minute:"{yyyy}-{MM}-{dd} "+kc.minute,second:"{yyyy}-{MM}-{dd} "+kc.second,millisecond:kc.none},Oc=["year","month","day","hour","minute","second","millisecond"],Rc=["year","half-year","quarter","month","week","half-week","day","half-day","quarter-day","hour","minute","second","millisecond"];function Nc(t,e){return"0000".substr(0,e-(t+="").length)+t}function Ec(t){switch(t){case"half-year":case"quarter":return"month";case"week":case"half-week":return"day";case"half-day":case"quarter-day":return"hour";default:return t}}function zc(t){return t===Ec(t)}function Vc(t,e,n,i){var r=jr(t),o=r[Gc(n)](),a=r[Wc(n)]()+1,s=Math.floor((a-1)/4)+1,l=r[Hc(n)](),u=r["get"+(n?"UTC":"")+"Day"](),h=r[Yc(n)](),c=(h-1)%12+1,p=r[Uc(n)](),d=r[Xc(n)](),f=r[Zc(n)](),g=(i instanceof dc?i:Mc(i||wc)||bc.EN).getModel("time"),y=g.get("month"),v=g.get("monthAbbr"),m=g.get("dayOfWeek"),x=g.get("dayOfWeekAbbr");return(e||"").replace(/{yyyy}/g,o+"").replace(/{yy}/g,o%100+"").replace(/{Q}/g,s+"").replace(/{MMMM}/g,y[a-1]).replace(/{MMM}/g,v[a-1]).replace(/{MM}/g,Nc(a,2)).replace(/{M}/g,a+"").replace(/{dd}/g,Nc(l,2)).replace(/{d}/g,l+"").replace(/{eeee}/g,m[u]).replace(/{ee}/g,x[u]).replace(/{e}/g,u+"").replace(/{HH}/g,Nc(h,2)).replace(/{H}/g,h+"").replace(/{hh}/g,Nc(c+"",2)).replace(/{h}/g,c+"").replace(/{mm}/g,Nc(p,2)).replace(/{m}/g,p+"").replace(/{ss}/g,Nc(d,2)).replace(/{s}/g,d+"").replace(/{SSS}/g,Nc(f,3)).replace(/{S}/g,f+"")}function Bc(t,e){var n=jr(t),i=n[Wc(e)]()+1,r=n[Hc(e)](),o=n[Yc(e)](),a=n[Uc(e)](),s=n[Xc(e)](),l=0===n[Zc(e)](),u=l&&0===s,h=u&&0===a,c=h&&0===o,p=c&&1===r;return p&&1===i?"year":p?"month":c?"day":h?"hour":u?"minute":l?"second":"millisecond"}function Fc(t,e,n){var i=j(t)?jr(t):t;switch(e=e||Bc(t,n)){case"year":return i[Gc(n)]();case"half-year":return i[Wc(n)]()>=6?1:0;case"quarter":return Math.floor((i[Wc(n)]()+1)/4);case"month":return i[Wc(n)]();case"day":return i[Hc(n)]();case"half-day":return i[Yc(n)]()/24;case"hour":return i[Yc(n)]();case"minute":return i[Uc(n)]();case"second":return i[Xc(n)]();case"millisecond":return i[Zc(n)]()}}function Gc(t){return t?"getUTCFullYear":"getFullYear"}function Wc(t){return t?"getUTCMonth":"getMonth"}function Hc(t){return t?"getUTCDate":"getDate"}function Yc(t){return t?"getUTCHours":"getHours"}function Uc(t){return t?"getUTCMinutes":"getMinutes"}function Xc(t){return t?"getUTCSeconds":"getSeconds"}function Zc(t){return t?"getUTCMilliseconds":"getMilliseconds"}function jc(t){return t?"setUTCFullYear":"setFullYear"}function qc(t){return t?"setUTCMonth":"setMonth"}function Kc(t){return t?"setUTCDate":"setDate"}function $c(t){return t?"setUTCHours":"setHours"}function Jc(t){return t?"setUTCMinutes":"setMinutes"}function Qc(t){return t?"setUTCSeconds":"setSeconds"}function tp(t){return t?"setUTCMilliseconds":"setMilliseconds"}function ep(t){if(!eo(t))return X(t)?t:"-";var e=(t+"").split(".");return e[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g,"$1,")+(e.length>1?"."+e[1]:"")}function np(t,e){return t=(t||"").toLowerCase().replace(/-(.)/g,(function(t,e){return e.toUpperCase()})),e&&t&&(t=t.charAt(0).toUpperCase()+t.slice(1)),t}var ip=st,rp=/([&<>"'])/g,op={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function ap(t){return null==t?"":(t+"").replace(rp,(function(t,e){return op[e]}))}function sp(t,e,n){function i(t){return t&&ut(t)?t:"-"}function r(t){return!(null==t||isNaN(t)||!isFinite(t))}var o="time"===e,a=t instanceof Date;if(o||a){var s=o?jr(t):t;if(!isNaN(+s))return Vc(s,"{yyyy}-{MM}-{dd} {HH}:{mm}:{ss}",n);if(a)return"-"}if("ordinal"===e)return Z(t)?i(t):j(t)&&r(t)?t+"":"-";var l=to(t);return r(l)?ep(l):Z(t)?i(t):"boolean"==typeof t?t+"":"-"}var lp=["a","b","c","d","e","f","g"],up=function(t,e){return"{"+t+(null==e?"":e)+"}"};function hp(t,e,n){Y(e)||(e=[e]);var i=e.length;if(!i)return"";for(var r=e[0].$vars||[],o=0;o<r.length;o++){var a=lp[o];t=t.replace(up(a),up(a,0))}for(var s=0;s<i;s++)for(var l=0;l<r.length;l++){var u=e[s][r[l]];t=t.replace(up(lp[l],s),n?ap(u):u)}return t}function cp(t,e){var n=X(t)?{color:t,extraCssText:e}:t||{},i=n.color,r=n.type;e=n.extraCssText;var o=n.renderMode||"html";return i?"html"===o?"subItem"===r?'<span style="display:inline-block;vertical-align:middle;margin-right:8px;margin-left:3px;border-radius:4px;width:4px;height:4px;background-color:'+ap(i)+";"+(e||"")+'"></span>':'<span style="display:inline-block;margin-right:4px;border-radius:10px;width:10px;height:10px;background-color:'+ap(i)+";"+(e||"")+'"></span>':{renderMode:o,content:"{"+(n.markerId||"markerX")+"|} ",style:"subItem"===r?{width:4,height:4,borderRadius:2,backgroundColor:i}:{width:10,height:10,borderRadius:5,backgroundColor:i}}:""}function pp(t,e){return e=e||"transparent",X(t)?t:q(t)&&t.colorStops&&(t.colorStops[0]||{}).color||e}function dp(t,e){if("_blank"===e||"blank"===e){var n=window.open();n.opener=null,n.location.href=t}else window.open(t,e)}var fp=E,gp=["left","right","top","bottom","width","height"],yp=[["width","left","right"],["height","top","bottom"]];function vp(t,e,n,i,r){var o=0,a=0;null==i&&(i=1/0),null==r&&(r=1/0);var s=0;e.eachChild((function(l,u){var h,c,p=l.getBoundingRect(),d=e.childAt(u+1),f=d&&d.getBoundingRect();if("horizontal"===t){var g=p.width+(f?-f.x+p.x:0);(h=o+g)>i||l.newline?(o=0,h=g,a+=s+n,s=p.height):s=Math.max(s,p.height)}else{var y=p.height+(f?-f.y+p.y:0);(c=a+y)>r||l.newline?(o+=s+n,a=0,c=y,s=p.width):s=Math.max(s,p.width)}l.newline||(l.x=o,l.y=a,l.markRedraw(),"horizontal"===t?o=h+n:a=c+n)}))}var mp=vp;H(vp,"vertical"),H(vp,"horizontal");function xp(t,e,n){n=ip(n||0);var i=e.width,r=e.height,o=Er(t.left,i),a=Er(t.top,r),s=Er(t.right,i),l=Er(t.bottom,r),u=Er(t.width,i),h=Er(t.height,r),c=n[2]+n[0],p=n[1]+n[3],d=t.aspect;switch(isNaN(u)&&(u=i-s-p-o),isNaN(h)&&(h=r-l-c-a),null!=d&&(isNaN(u)&&isNaN(h)&&(d>i/r?u=.8*i:h=.8*r),isNaN(u)&&(u=d*h),isNaN(h)&&(h=u/d)),isNaN(o)&&(o=i-s-u-p),isNaN(a)&&(a=r-l-h-c),t.left||t.right){case"center":o=i/2-u/2-n[3];break;case"right":o=i-u-p}switch(t.top||t.bottom){case"middle":case"center":a=r/2-h/2-n[0];break;case"bottom":a=r-h-c}o=o||0,a=a||0,isNaN(u)&&(u=i-p-o-(s||0)),isNaN(h)&&(h=r-c-a-(l||0));var f=new sr(o+n[3],a+n[0],u,h);return f.margin=n,f}function _p(t,e,n,i,r,o){var a,s=!r||!r.hv||r.hv[0],l=!r||!r.hv||r.hv[1],u=r&&r.boundingMode||"all";if((o=o||t).x=t.x,o.y=t.y,!s&&!l)return!1;if("raw"===u)a="group"===t.type?new sr(0,0,+e.width||0,+e.height||0):t.getBoundingRect();else if(a=t.getBoundingRect(),t.needLocalTransform()){var h=t.getLocalTransform();(a=a.clone()).applyTransform(h)}var c=xp(k({width:a.width,height:a.height},e),n,i),p=s?c.x-a.x:0,d=l?c.y-a.y:0;return"raw"===u?(o.x=p,o.y=d):(o.x+=p,o.y+=d),o===t&&t.markRedraw(),!0}function bp(t){var e=t.layoutMode||t.constructor.layoutMode;return q(e)?e:e?{type:e}:null}function wp(t,e,n){var i=n&&n.ignoreSize;!Y(i)&&(i=[i,i]);var r=a(yp[0],0),o=a(yp[1],1);function a(n,r){var o={},a=0,u={},h=0;if(fp(n,(function(e){u[e]=t[e]})),fp(n,(function(t){s(e,t)&&(o[t]=u[t]=e[t]),l(o,t)&&a++,l(u,t)&&h++})),i[r])return l(e,n[1])?u[n[2]]=null:l(e,n[2])&&(u[n[1]]=null),u;if(2!==h&&a){if(a>=2)return o;for(var c=0;c<n.length;c++){var p=n[c];if(!s(o,p)&&s(t,p)){o[p]=t[p];break}}return o}return u}function s(t,e){return t.hasOwnProperty(e)}function l(t,e){return null!=t[e]&&"auto"!==t[e]}function u(t,e,n){fp(t,(function(t){e[t]=n[t]}))}u(yp[0],t,r),u(yp[1],t,o)}function Sp(t){return Mp({},t)}function Mp(t,e){return e&&t&&fp(gp,(function(n){e.hasOwnProperty(n)&&(t[n]=e[n])})),t}var Ip=So(),Tp=function(t){function e(e,n,i){var r=t.call(this,e,n,i)||this;return r.uid=gc("ec_cpt_model"),r}return n(e,t),e.prototype.init=function(t,e,n){this.mergeDefaultAndTheme(t,n)},e.prototype.mergeDefaultAndTheme=function(t,e){var n=bp(this),i=n?Sp(t):{};C(t,e.getTheme().get(this.mainType)),C(t,this.getDefaultOption()),n&&wp(t,i,n)},e.prototype.mergeOption=function(t,e){C(this.option,t,!0);var n=bp(this);n&&wp(this.option,t,n)},e.prototype.optionUpdated=function(t,e){},e.prototype.getDefaultOption=function(){var t=this.constructor;if(!function(t){return!(!t||!t[Ro])}(t))return t.defaultOption;var e=Ip(this);if(!e.defaultOption){for(var n=[],i=t;i;){var r=i.prototype.defaultOption;r&&n.push(r),i=i.superClass}for(var o={},a=n.length-1;a>=0;a--)o=C(o,n[a],!0);e.defaultOption=o}return e.defaultOption},e.prototype.getReferringComponents=function(t,e){var n=t+"Index",i=t+"Id";return Ao(this.ecModel,t,{index:this.get(n,!0),id:this.get(i,!0)},e)},e.prototype.getBoxLayoutParams=function(){var t=this;return{left:t.get("left"),top:t.get("top"),right:t.get("right"),bottom:t.get("bottom"),width:t.get("width"),height:t.get("height")}},e.prototype.getZLevelKey=function(){return""},e.prototype.setZLevel=function(t){this.option.zlevel=t},e.protoInitialize=function(){var t=e.prototype;t.type="component",t.id="",t.name="",t.mainType="",t.subType="",t.componentIndex=0}(),e}(dc);zo(Tp,dc),Go(Tp),function(t){var e={};t.registerSubTypeDefaulter=function(t,n){var i=No(t);e[i.main]=n},t.determineSubType=function(n,i){var r=i.type;if(!r){var o=No(n).main;t.hasSubTypes(n)&&e[o]&&(r=e[o](i))}return r}}(Tp),function(t,e){function n(t,e){return t[e]||(t[e]={predecessor:[],successor:[]}),t[e]}t.topologicalTravel=function(t,i,r,o){if(t.length){var a=function(t){var i={},r=[];return E(t,(function(o){var a=n(i,o),s=function(t,e){var n=[];return E(t,(function(t){P(e,t)>=0&&n.push(t)})),n}(a.originalDeps=e(o),t);a.entryCount=s.length,0===a.entryCount&&r.push(o),E(s,(function(t){P(a.predecessor,t)<0&&a.predecessor.push(t);var e=n(i,t);P(e.successor,t)<0&&e.successor.push(o)}))})),{graph:i,noEntryList:r}}(i),s=a.graph,l=a.noEntryList,u={};for(E(t,(function(t){u[t]=!0}));l.length;){var h=l.pop(),c=s[h],p=!!u[h];p&&(r.call(o,h,c.originalDeps.slice()),delete u[h]),E(c.successor,p?f:d)}E(u,(function(){var t="";throw new Error(t)}))}function d(t){s[t].entryCount--,0===s[t].entryCount&&l.push(t)}function f(t){u[t]=!0,d(t)}}}(Tp,(function(t){var e=[];E(Tp.getClassesByMainType(t),(function(t){e=e.concat(t.dependencies||t.prototype.dependencies||[])})),e=z(e,(function(t){return No(t).main})),"dataset"!==t&&P(e,"dataset")<=0&&e.unshift("dataset");return e}));var Cp="";"undefined"!=typeof navigator&&(Cp=navigator.platform||"");var Dp="rgba(0, 0, 0, 0.2)",Ap={darkMode:"auto",colorBy:"series",color:["#5470c6","#91cc75","#fac858","#ee6666","#73c0de","#3ba272","#fc8452","#9a60b4","#ea7ccc"],gradientColor:["#f6efa6","#d88273","#bf444c"],aria:{decal:{decals:[{color:Dp,dashArrayX:[1,0],dashArrayY:[2,5],symbolSize:1,rotation:Math.PI/6},{color:Dp,symbol:"circle",dashArrayX:[[8,8],[0,8,8,0]],dashArrayY:[6,0],symbolSize:.8},{color:Dp,dashArrayX:[1,0],dashArrayY:[4,3],rotation:-Math.PI/4},{color:Dp,dashArrayX:[[6,6],[0,6,6,0]],dashArrayY:[6,0]},{color:Dp,dashArrayX:[[1,0],[1,6]],dashArrayY:[1,0,6,0],rotation:Math.PI/4},{color:Dp,symbol:"triangle",dashArrayX:[[9,9],[0,9,9,0]],dashArrayY:[7,2],symbolSize:.75}]}},textStyle:{fontFamily:Cp.match(/^Win/)?"Microsoft YaHei":"sans-serif",fontSize:12,fontStyle:"normal",fontWeight:"normal"},blendMode:null,stateAnimation:{duration:300,easing:"cubicOut"},animation:"auto",animationDuration:1e3,animationDurationUpdate:500,animationEasing:"cubicInOut",animationEasingUpdate:"cubicInOut",animationThreshold:2e3,progressiveThreshold:3e3,progressive:400,hoverLayerThreshold:3e3,useUTC:!1},kp=ft(["tooltip","label","itemName","itemId","itemGroupId","seriesName"]),Lp="original",Pp="arrayRows",Op="objectRows",Rp="keyedColumns",Np="typedArray",Ep="unknown",zp="column",Vp="row",Bp=1,Fp=2,Gp=3,Wp=So();function Hp(t,e,n){var i={},r=Up(e);if(!r||!t)return i;var o,a,s=[],l=[],u=e.ecModel,h=Wp(u).datasetMap,c=r.uid+"_"+n.seriesLayoutBy;E(t=t.slice(),(function(e,n){var r=q(e)?e:t[n]={name:e};"ordinal"===r.type&&null==o&&(o=n,a=f(r)),i[r.name]=[]}));var p=h.get(c)||h.set(c,{categoryWayDim:a,valueWayDim:0});function d(t,e,n){for(var i=0;i<n;i++)t.push(e+i)}function f(t){var e=t.dimsDef;return e?e.length:1}return E(t,(function(t,e){var n=t.name,r=f(t);if(null==o){var a=p.valueWayDim;d(i[n],a,r),d(l,a,r),p.valueWayDim+=r}else if(o===e)d(i[n],0,r),d(s,0,r);else{a=p.categoryWayDim;d(i[n],a,r),d(l,a,r),p.categoryWayDim+=r}})),s.length&&(i.itemName=s),l.length&&(i.seriesName=l),i}function Yp(t,e,n){var i={};if(!Up(t))return i;var r,o=e.sourceFormat,a=e.dimensionsDefine;o!==Op&&o!==Rp||E(a,(function(t,e){"name"===(q(t)?t.name:t)&&(r=e)}));var s=function(){for(var t={},i={},s=[],l=0,u=Math.min(5,n);l<u;l++){var h=Zp(e.data,o,e.seriesLayoutBy,a,e.startIndex,l);s.push(h);var c=h===Gp;if(c&&null==t.v&&l!==r&&(t.v=l),(null==t.n||t.n===t.v||!c&&s[t.n]===Gp)&&(t.n=l),p(t)&&s[t.n]!==Gp)return t;c||(h===Fp&&null==i.v&&l!==r&&(i.v=l),null!=i.n&&i.n!==i.v||(i.n=l))}function p(t){return null!=t.v&&null!=t.n}return p(t)?t:p(i)?i:null}();if(s){i.value=[s.v];var l=null!=r?r:s.n;i.itemName=[l],i.seriesName=[l]}return i}function Up(t){if(!t.get("data",!0))return Ao(t.ecModel,"dataset",{index:t.get("datasetIndex",!0),id:t.get("datasetId",!0)},Co).models[0]}function Xp(t,e){return Zp(t.data,t.sourceFormat,t.seriesLayoutBy,t.dimensionsDefine,t.startIndex,e)}function Zp(t,e,n,i,r,o){var a,s,l;if($(t))return Gp;if(i){var u=i[o];q(u)?(s=u.name,l=u.type):X(u)&&(s=u)}if(null!=l)return"ordinal"===l?Bp:Gp;if(e===Pp){var h=t;if(n===Vp){for(var c=h[o],p=0;p<(c||[]).length&&p<5;p++)if(null!=(a=m(c[r+p])))return a}else for(p=0;p<h.length&&p<5;p++){var d=h[r+p];if(d&&null!=(a=m(d[o])))return a}}else if(e===Op){var f=t;if(!s)return Gp;for(p=0;p<f.length&&p<5;p++){if((y=f[p])&&null!=(a=m(y[s])))return a}}else if(e===Rp){if(!s)return Gp;if(!(c=t[s])||$(c))return Gp;for(p=0;p<c.length&&p<5;p++)if(null!=(a=m(c[p])))return a}else if(e===Lp){var g=t;for(p=0;p<g.length&&p<5;p++){var y,v=fo(y=g[p]);if(!Y(v))return Gp;if(null!=(a=m(v[o])))return a}}function m(t){var e=X(t);return null!=t&&isFinite(t)&&""!==t?e?Fp:Gp:e&&"-"!==t?Bp:void 0}return Gp}var jp=ft();var qp,Kp,$p,Jp=So(),Qp=So(),td=function(){function t(){}return t.prototype.getColorFromPalette=function(t,e,n){var i=ho(this.get("color",!0)),r=this.get("colorLayer",!0);return nd(this,Jp,i,r,t,e,n)},t.prototype.clearColorPalette=function(){!function(t,e){e(t).paletteIdx=0,e(t).paletteNameMap={}}(this,Jp)},t}();function ed(t,e,n,i){var r=ho(t.get(["aria","decal","decals"]));return nd(t,Qp,r,null,e,n,i)}function nd(t,e,n,i,r,o,a){var s=e(o=o||t),l=s.paletteIdx||0,u=s.paletteNameMap=s.paletteNameMap||{};if(u.hasOwnProperty(r))return u[r];var h=null!=a&&i?function(t,e){for(var n=t.length,i=0;i<n;i++)if(t[i].length>e)return t[i];return t[n-1]}(i,a):n;if((h=h||n)&&h.length){var c=h[l];return r&&(u[r]=c),s.paletteIdx=(l+1)%h.length,c}}var id=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.init=function(t,e,n,i,r,o){i=i||{},this.option=null,this._theme=new dc(i),this._locale=new dc(r),this._optionManager=o},e.prototype.setOption=function(t,e,n){var i=ad(e);this._optionManager.setOption(t,n,i),this._resetOption(null,i)},e.prototype.resetOption=function(t,e){return this._resetOption(t,ad(e))},e.prototype._resetOption=function(t,e){var n=!1,i=this._optionManager;if(!t||"recreate"===t){var r=i.mountOption("recreate"===t);0,this.option&&"recreate"!==t?(this.restoreData(),this._mergeOption(r,e)):$p(this,r),n=!0}if("timeline"!==t&&"media"!==t||this.restoreData(),!t||"recreate"===t||"timeline"===t){var o=i.getTimelineOption(this);o&&(n=!0,this._mergeOption(o,e))}if(!t||"recreate"===t||"media"===t){var a=i.getMediaOption(this);a.length&&E(a,(function(t){n=!0,this._mergeOption(t,e)}),this)}return n},e.prototype.mergeOption=function(t){this._mergeOption(t,null)},e.prototype._mergeOption=function(t,e){var n=this.option,i=this._componentsMap,r=this._componentsCount,o=[],a=ft(),s=e&&e.replaceMergeMainTypeMap;Wp(this).datasetMap=ft(),E(t,(function(t,e){null!=t&&(Tp.hasClass(e)?e&&(o.push(e),a.set(e,!0)):n[e]=null==n[e]?T(t):C(n[e],t,!0))})),s&&s.each((function(t,e){Tp.hasClass(e)&&!a.get(e)&&(o.push(e),a.set(e,!0))})),Tp.topologicalTravel(o,Tp.getAllClassMainTypes(),(function(e){var o=function(t,e,n){var i=jp.get(e);if(!i)return n;var r=i(t);return r?n.concat(r):n}(this,e,ho(t[e])),a=i.get(e),l=a?s&&s.get(e)?"replaceMerge":"normalMerge":"replaceAll",u=yo(a,o,l);(function(t,e,n){E(t,(function(t){var i=t.newOption;q(i)&&(t.keyInfo.mainType=e,t.keyInfo.subType=function(t,e,n,i){return e.type?e.type:n?n.subType:i.determineSubType(t,e)}(e,i,t.existing,n))}))})(u,e,Tp),n[e]=null,i.set(e,null),r.set(e,0);var h,c=[],p=[],d=0;E(u,(function(t,n){var i=t.existing,r=t.newOption;if(r){var o="series"===e,a=Tp.getClass(e,t.keyInfo.subType,!o);if(!a)return;if("tooltip"===e){if(h)return void 0;h=!0}if(i&&i.constructor===a)i.name=t.keyInfo.name,i.mergeOption(r,this),i.optionUpdated(r,!1);else{var s=A({componentIndex:n},t.keyInfo);A(i=new a(r,this,this,s),s),t.brandNew&&(i.__requireNewView=!0),i.init(r,this,this),i.optionUpdated(null,!0)}}else i&&(i.mergeOption({},this),i.optionUpdated({},!1));i?(c.push(i.option),p.push(i),d++):(c.push(void 0),p.push(void 0))}),this),n[e]=c,i.set(e,p),r.set(e,d),"series"===e&&qp(this)}),this),this._seriesIndices||qp(this)},e.prototype.getOption=function(){var t=T(this.option);return E(t,(function(e,n){if(Tp.hasClass(n)){for(var i=ho(e),r=i.length,o=!1,a=r-1;a>=0;a--)i[a]&&!bo(i[a])?o=!0:(i[a]=null,!o&&r--);i.length=r,t[n]=i}})),delete t["\0_ec_inner"],t},e.prototype.getTheme=function(){return this._theme},e.prototype.getLocaleModel=function(){return this._locale},e.prototype.setUpdatePayload=function(t){this._payload=t},e.prototype.getUpdatePayload=function(){return this._payload},e.prototype.getComponent=function(t,e){var n=this._componentsMap.get(t);if(n){var i=n[e||0];if(i)return i;if(null==e)for(var r=0;r<n.length;r++)if(n[r])return n[r]}},e.prototype.queryComponents=function(t){var e=t.mainType;if(!e)return[];var n,i=t.index,r=t.id,o=t.name,a=this._componentsMap.get(e);return a&&a.length?(null!=i?(n=[],E(ho(i),(function(t){a[t]&&n.push(a[t])}))):n=null!=r?rd("id",r,a):null!=o?rd("name",o,a):B(a,(function(t){return!!t})),od(n,t)):[]},e.prototype.findComponents=function(t){var e,n,i,r,o,a=t.query,s=t.mainType,l=(n=s+"Index",i=s+"Id",r=s+"Name",!(e=a)||null==e[n]&&null==e[i]&&null==e[r]?null:{mainType:s,index:e[n],id:e[i],name:e[r]}),u=l?this.queryComponents(l):B(this._componentsMap.get(s),(function(t){return!!t}));return o=od(u,t),t.filter?B(o,t.filter):o},e.prototype.eachComponent=function(t,e,n){var i=this._componentsMap;if(U(t)){var r=e,o=t;i.each((function(t,e){for(var n=0;t&&n<t.length;n++){var i=t[n];i&&o.call(r,e,i,i.componentIndex)}}))}else for(var a=X(t)?i.get(t):q(t)?this.findComponents(t):null,s=0;a&&s<a.length;s++){var l=a[s];l&&e.call(n,l,l.componentIndex)}},e.prototype.getSeriesByName=function(t){var e=xo(t,null);return B(this._componentsMap.get("series"),(function(t){return!!t&&null!=e&&t.name===e}))},e.prototype.getSeriesByIndex=function(t){return this._componentsMap.get("series")[t]},e.prototype.getSeriesByType=function(t){return B(this._componentsMap.get("series"),(function(e){return!!e&&e.subType===t}))},e.prototype.getSeries=function(){return B(this._componentsMap.get("series"),(function(t){return!!t}))},e.prototype.getSeriesCount=function(){return this._componentsCount.get("series")},e.prototype.eachSeries=function(t,e){Kp(this),E(this._seriesIndices,(function(n){var i=this._componentsMap.get("series")[n];t.call(e,i,n)}),this)},e.prototype.eachRawSeries=function(t,e){E(this._componentsMap.get("series"),(function(n){n&&t.call(e,n,n.componentIndex)}))},e.prototype.eachSeriesByType=function(t,e,n){Kp(this),E(this._seriesIndices,(function(i){var r=this._componentsMap.get("series")[i];r.subType===t&&e.call(n,r,i)}),this)},e.prototype.eachRawSeriesByType=function(t,e,n){return E(this.getSeriesByType(t),e,n)},e.prototype.isSeriesFiltered=function(t){return Kp(this),null==this._seriesIndicesMap.get(t.componentIndex)},e.prototype.getCurrentSeriesIndices=function(){return(this._seriesIndices||[]).slice()},e.prototype.filterSeries=function(t,e){Kp(this);var n=[];E(this._seriesIndices,(function(i){var r=this._componentsMap.get("series")[i];t.call(e,r,i)&&n.push(i)}),this),this._seriesIndices=n,this._seriesIndicesMap=ft(n)},e.prototype.restoreData=function(t){qp(this);var e=this._componentsMap,n=[];e.each((function(t,e){Tp.hasClass(e)&&n.push(e)})),Tp.topologicalTravel(n,Tp.getAllClassMainTypes(),(function(n){E(e.get(n),(function(e){!e||"series"===n&&function(t,e){if(e){var n=e.seriesIndex,i=e.seriesId,r=e.seriesName;return null!=n&&t.componentIndex!==n||null!=i&&t.id!==i||null!=r&&t.name!==r}}(e,t)||e.restoreData()}))}))},e.internalField=(qp=function(t){var e=t._seriesIndices=[];E(t._componentsMap.get("series"),(function(t){t&&e.push(t.componentIndex)})),t._seriesIndicesMap=ft(e)},Kp=function(t){},void($p=function(t,e){t.option={},t.option["\0_ec_inner"]=1,t._componentsMap=ft({series:[]}),t._componentsCount=ft();var n=e.aria;q(n)&&null==n.enabled&&(n.enabled=!0),function(t,e){var n=t.color&&!t.colorLayer;E(e,(function(e,i){"colorLayer"===i&&n||Tp.hasClass(i)||("object"==typeof e?t[i]=t[i]?C(t[i],e,!1):T(e):null==t[i]&&(t[i]=e))}))}(e,t._theme.option),C(e,Ap,!1),t._mergeOption(e,null)})),e}(dc);function rd(t,e,n){if(Y(e)){var i=ft();return E(e,(function(t){null!=t&&(null!=xo(t,null)&&i.set(t,!0))})),B(n,(function(e){return e&&i.get(e[t])}))}var r=xo(e,null);return B(n,(function(e){return e&&null!=r&&e[t]===r}))}function od(t,e){return e.hasOwnProperty("subType")?B(t,(function(t){return t&&t.subType===e.subType})):t}function ad(t){var e=ft();return t&&E(ho(t.replaceMerge),(function(t){e.set(t,!0)})),{replaceMergeMainTypeMap:e}}R(id,td);var sd=["getDom","getZr","getWidth","getHeight","getDevicePixelRatio","dispatchAction","isSSR","isDisposed","on","off","getDataURL","getConnectedDataURL","getOption","getId","updateLabelLayout"],ld=function(t){E(sd,(function(e){this[e]=W(t[e],t)}),this)},ud={},hd=function(){function t(){this._coordinateSystems=[]}return t.prototype.create=function(t,e){var n=[];E(ud,(function(i,r){var o=i.create(t,e);n=n.concat(o||[])})),this._coordinateSystems=n},t.prototype.update=function(t,e){E(this._coordinateSystems,(function(n){n.update&&n.update(t,e)}))},t.prototype.getCoordinateSystems=function(){return this._coordinateSystems.slice()},t.register=function(t,e){ud[t]=e},t.get=function(t){return ud[t]},t}(),cd=/^(min|max)?(.+)$/,pd=function(){function t(t){this._timelineOptions=[],this._mediaList=[],this._currentMediaIndices=[],this._api=t}return t.prototype.setOption=function(t,e,n){t&&(E(ho(t.series),(function(t){t&&t.data&&$(t.data)&&ct(t.data)})),E(ho(t.dataset),(function(t){t&&t.source&&$(t.source)&&ct(t.source)}))),t=T(t);var i=this._optionBackup,r=function(t,e,n){var i,r,o=[],a=t.baseOption,s=t.timeline,l=t.options,u=t.media,h=!!t.media,c=!!(l||s||a&&a.timeline);a?(r=a).timeline||(r.timeline=s):((c||h)&&(t.options=t.media=null),r=t);h&&Y(u)&&E(u,(function(t){t&&t.option&&(t.query?o.push(t):i||(i=t))}));function p(t){E(e,(function(e){e(t,n)}))}return p(r),E(l,(function(t){return p(t)})),E(o,(function(t){return p(t.option)})),{baseOption:r,timelineOptions:l||[],mediaDefault:i,mediaList:o}}(t,e,!i);this._newBaseOption=r.baseOption,i?(r.timelineOptions.length&&(i.timelineOptions=r.timelineOptions),r.mediaList.length&&(i.mediaList=r.mediaList),r.mediaDefault&&(i.mediaDefault=r.mediaDefault)):this._optionBackup=r},t.prototype.mountOption=function(t){var e=this._optionBackup;return this._timelineOptions=e.timelineOptions,this._mediaList=e.mediaList,this._mediaDefault=e.mediaDefault,this._currentMediaIndices=[],T(t?e.baseOption:this._newBaseOption)},t.prototype.getTimelineOption=function(t){var e,n=this._timelineOptions;if(n.length){var i=t.getComponent("timeline");i&&(e=T(n[i.getCurrentIndex()]))}return e},t.prototype.getMediaOption=function(t){var e,n,i=this._api.getWidth(),r=this._api.getHeight(),o=this._mediaList,a=this._mediaDefault,s=[],l=[];if(!o.length&&!a)return l;for(var u=0,h=o.length;u<h;u++)dd(o[u].query,i,r)&&s.push(u);return!s.length&&a&&(s=[-1]),s.length&&(e=s,n=this._currentMediaIndices,e.join(",")!==n.join(","))&&(l=z(s,(function(t){return T(-1===t?a.option:o[t].option)}))),this._currentMediaIndices=s,l},t}();function dd(t,e,n){var i={width:e,height:n,aspectratio:e/n},r=!0;return E(t,(function(t,e){var n=e.match(cd);if(n&&n[1]&&n[2]){var o=n[1],a=n[2].toLowerCase();(function(t,e,n){return"min"===n?t>=e:"max"===n?t<=e:t===e})(i[a],t,o)||(r=!1)}})),r}var fd=E,gd=q,yd=["areaStyle","lineStyle","nodeStyle","linkStyle","chordStyle","label","labelLine"];function vd(t){var e=t&&t.itemStyle;if(e)for(var n=0,i=yd.length;n<i;n++){var r=yd[n],o=e.normal,a=e.emphasis;o&&o[r]&&(t[r]=t[r]||{},t[r].normal?C(t[r].normal,o[r]):t[r].normal=o[r],o[r]=null),a&&a[r]&&(t[r]=t[r]||{},t[r].emphasis?C(t[r].emphasis,a[r]):t[r].emphasis=a[r],a[r]=null)}}function md(t,e,n){if(t&&t[e]&&(t[e].normal||t[e].emphasis)){var i=t[e].normal,r=t[e].emphasis;i&&(n?(t[e].normal=t[e].emphasis=null,k(t[e],i)):t[e]=i),r&&(t.emphasis=t.emphasis||{},t.emphasis[e]=r,r.focus&&(t.emphasis.focus=r.focus),r.blurScope&&(t.emphasis.blurScope=r.blurScope))}}function xd(t){md(t,"itemStyle"),md(t,"lineStyle"),md(t,"areaStyle"),md(t,"label"),md(t,"labelLine"),md(t,"upperLabel"),md(t,"edgeLabel")}function _d(t,e){var n=gd(t)&&t[e],i=gd(n)&&n.textStyle;if(i){0;for(var r=0,o=po.length;r<o;r++){var a=po[r];i.hasOwnProperty(a)&&(n[a]=i[a])}}}function bd(t){t&&(xd(t),_d(t,"label"),t.emphasis&&_d(t.emphasis,"label"))}function wd(t){return Y(t)?t:t?[t]:[]}function Sd(t){return(Y(t)?t[0]:t)||{}}function Md(t,e){fd(wd(t.series),(function(t){gd(t)&&function(t){if(gd(t)){vd(t),xd(t),_d(t,"label"),_d(t,"upperLabel"),_d(t,"edgeLabel"),t.emphasis&&(_d(t.emphasis,"label"),_d(t.emphasis,"upperLabel"),_d(t.emphasis,"edgeLabel"));var e=t.markPoint;e&&(vd(e),bd(e));var n=t.markLine;n&&(vd(n),bd(n));var i=t.markArea;i&&bd(i);var r=t.data;if("graph"===t.type){r=r||t.nodes;var o=t.links||t.edges;if(o&&!$(o))for(var a=0;a<o.length;a++)bd(o[a]);E(t.categories,(function(t){xd(t)}))}if(r&&!$(r))for(a=0;a<r.length;a++)bd(r[a]);if((e=t.markPoint)&&e.data){var s=e.data;for(a=0;a<s.length;a++)bd(s[a])}if((n=t.markLine)&&n.data){var l=n.data;for(a=0;a<l.length;a++)Y(l[a])?(bd(l[a][0]),bd(l[a][1])):bd(l[a])}"gauge"===t.type?(_d(t,"axisLabel"),_d(t,"title"),_d(t,"detail")):"treemap"===t.type?(md(t.breadcrumb,"itemStyle"),E(t.levels,(function(t){xd(t)}))):"tree"===t.type&&xd(t.leaves)}}(t)}));var n=["xAxis","yAxis","radiusAxis","angleAxis","singleAxis","parallelAxis","radar"];e&&n.push("valueAxis","categoryAxis","logAxis","timeAxis"),fd(n,(function(e){fd(wd(t[e]),(function(t){t&&(_d(t,"axisLabel"),_d(t.axisPointer,"label"))}))})),fd(wd(t.parallel),(function(t){var e=t&&t.parallelAxisDefault;_d(e,"axisLabel"),_d(e&&e.axisPointer,"label")})),fd(wd(t.calendar),(function(t){md(t,"itemStyle"),_d(t,"dayLabel"),_d(t,"monthLabel"),_d(t,"yearLabel")})),fd(wd(t.radar),(function(t){_d(t,"name"),t.name&&null==t.axisName&&(t.axisName=t.name,delete t.name),null!=t.nameGap&&null==t.axisNameGap&&(t.axisNameGap=t.nameGap,delete t.nameGap)})),fd(wd(t.geo),(function(t){gd(t)&&(bd(t),fd(wd(t.regions),(function(t){bd(t)})))})),fd(wd(t.timeline),(function(t){bd(t),md(t,"label"),md(t,"itemStyle"),md(t,"controlStyle",!0);var e=t.data;Y(e)&&E(e,(function(t){q(t)&&(md(t,"label"),md(t,"itemStyle"))}))})),fd(wd(t.toolbox),(function(t){md(t,"iconStyle"),fd(t.feature,(function(t){md(t,"iconStyle")}))})),_d(Sd(t.axisPointer),"label"),_d(Sd(t.tooltip).axisPointer,"label")}function Id(t){t&&E(Td,(function(e){e[0]in t&&!(e[1]in t)&&(t[e[1]]=t[e[0]])}))}var Td=[["x","left"],["y","top"],["x2","right"],["y2","bottom"]],Cd=["grid","geo","parallel","legend","toolbox","title","visualMap","dataZoom","timeline"],Dd=[["borderRadius","barBorderRadius"],["borderColor","barBorderColor"],["borderWidth","barBorderWidth"]];function Ad(t){var e=t&&t.itemStyle;if(e)for(var n=0;n<Dd.length;n++){var i=Dd[n][1],r=Dd[n][0];null!=e[i]&&(e[r]=e[i])}}function kd(t){t&&"edge"===t.alignTo&&null!=t.margin&&null==t.edgeDistance&&(t.edgeDistance=t.margin)}function Ld(t){t&&t.downplay&&!t.blur&&(t.blur=t.downplay)}function Pd(t,e){if(t)for(var n=0;n<t.length;n++)e(t[n]),t[n]&&Pd(t[n].children,e)}function Od(t,e){Md(t,e),t.series=ho(t.series),E(t.series,(function(t){if(q(t)){var e=t.type;if("line"===e)null!=t.clipOverflow&&(t.clip=t.clipOverflow);else if("pie"===e||"gauge"===e){if(null!=t.clockWise&&(t.clockwise=t.clockWise),kd(t.label),(r=t.data)&&!$(r))for(var n=0;n<r.length;n++)kd(r[n]);null!=t.hoverOffset&&(t.emphasis=t.emphasis||{},(t.emphasis.scaleSize=null)&&(t.emphasis.scaleSize=t.hoverOffset))}else if("gauge"===e){var i=function(t,e){for(var n=e.split(","),i=t,r=0;r<n.length&&null!=(i=i&&i[n[r]]);r++);return i}(t,"pointer.color");null!=i&&function(t,e,n,i){for(var r,o=e.split(","),a=t,s=0;s<o.length-1;s++)null==a[r=o[s]]&&(a[r]={}),a=a[r];(i||null==a[o[s]])&&(a[o[s]]=n)}(t,"itemStyle.color",i)}else if("bar"===e){var r;if(Ad(t),Ad(t.backgroundStyle),Ad(t.emphasis),(r=t.data)&&!$(r))for(n=0;n<r.length;n++)"object"==typeof r[n]&&(Ad(r[n]),Ad(r[n]&&r[n].emphasis))}else if("sunburst"===e){var o=t.highlightPolicy;o&&(t.emphasis=t.emphasis||{},t.emphasis.focus||(t.emphasis.focus=o)),Ld(t),Pd(t.data,Ld)}else"graph"===e||"sankey"===e?function(t){t&&null!=t.focusNodeAdjacency&&(t.emphasis=t.emphasis||{},null==t.emphasis.focus&&(t.emphasis.focus="adjacency"))}(t):"map"===e&&(t.mapType&&!t.map&&(t.map=t.mapType),t.mapLocation&&k(t,t.mapLocation));null!=t.hoverAnimation&&(t.emphasis=t.emphasis||{},t.emphasis&&null==t.emphasis.scale&&(t.emphasis.scale=t.hoverAnimation)),Id(t)}})),t.dataRange&&(t.visualMap=t.dataRange),E(Cd,(function(e){var n=t[e];n&&(Y(n)||(n=[n]),E(n,(function(t){Id(t)})))}))}function Rd(t){E(t,(function(e,n){var i=[],r=[NaN,NaN],o=[e.stackResultDimension,e.stackedOverDimension],a=e.data,s=e.isStackedByIndex;a.modify(o,(function(o,l,u){var h,c,p=a.get(e.stackedDimension,u);if(isNaN(p))return r;s?c=a.getRawIndex(u):h=a.get(e.stackedByDimension,u);for(var d=NaN,f=n-1;f>=0;f--){var g=t[f];if(s||(c=g.data.rawIndexOf(g.stackedByDimension,h)),c>=0){var y=g.data.getByRawIndex(g.stackResultDimension,c);if(p>=0&&y>0||p<=0&&y<0){p=Hr(p,y),d=y;break}}}return i[0]=p,i[1]=d,i}))}))}var Nd,Ed,zd,Vd,Bd,Fd=function(t){this.data=t.data||(t.sourceFormat===Rp?{}:[]),this.sourceFormat=t.sourceFormat||Ep,this.seriesLayoutBy=t.seriesLayoutBy||zp,this.startIndex=t.startIndex||0,this.dimensionsDetectedCount=t.dimensionsDetectedCount,this.metaRawOption=t.metaRawOption;var e=this.dimensionsDefine=t.dimensionsDefine;if(e)for(var n=0;n<e.length;n++){var i=e[n];null==i.type&&Xp(this,n)===Bp&&(i.type="ordinal")}};function Gd(t){return t instanceof Fd}function Wd(t,e,n){n=n||Yd(t);var i=e.seriesLayoutBy,r=function(t,e,n,i,r){var o,a;if(!t)return{dimensionsDefine:Ud(r),startIndex:a,dimensionsDetectedCount:o};if(e===Pp){var s=t;"auto"===i||null==i?Xd((function(t){null!=t&&"-"!==t&&(X(t)?null==a&&(a=1):a=0)}),n,s,10):a=j(i)?i:i?1:0,r||1!==a||(r=[],Xd((function(t,e){r[e]=null!=t?t+"":""}),n,s,1/0)),o=r?r.length:n===Vp?s.length:s[0]?s[0].length:null}else if(e===Op)r||(r=function(t){var e,n=0;for(;n<t.length&&!(e=t[n++]););if(e){var i=[];return E(e,(function(t,e){i.push(e)})),i}}(t));else if(e===Rp)r||(r=[],E(t,(function(t,e){r.push(e)})));else if(e===Lp){var l=fo(t[0]);o=Y(l)&&l.length||1}return{startIndex:a,dimensionsDefine:Ud(r),dimensionsDetectedCount:o}}(t,n,i,e.sourceHeader,e.dimensions);return new Fd({data:t,sourceFormat:n,seriesLayoutBy:i,dimensionsDefine:r.dimensionsDefine,startIndex:r.startIndex,dimensionsDetectedCount:r.dimensionsDetectedCount,metaRawOption:T(e)})}function Hd(t){return new Fd({data:t,sourceFormat:$(t)?Np:Lp})}function Yd(t){var e=Ep;if($(t))e=Np;else if(Y(t)){0===t.length&&(e=Pp);for(var n=0,i=t.length;n<i;n++){var r=t[n];if(null!=r){if(Y(r)){e=Pp;break}if(q(r)){e=Op;break}}}}else if(q(t))for(var o in t)if(mt(t,o)&&N(t[o])){e=Rp;break}return e}function Ud(t){if(t){var e=ft();return z(t,(function(t,n){var i={name:(t=q(t)?t:{name:t}).name,displayName:t.displayName,type:t.type};if(null==i.name)return i;i.name+="",null==i.displayName&&(i.displayName=i.name);var r=e.get(i.name);return r?i.name+="-"+r.count++:e.set(i.name,{count:1}),i}))}}function Xd(t,e,n,i){if(e===Vp)for(var r=0;r<n.length&&r<i;r++)t(n[r]?n[r][0]:null,r);else{var o=n[0]||[];for(r=0;r<o.length&&r<i;r++)t(o[r],r)}}function Zd(t){var e=t.sourceFormat;return e===Op||e===Rp}var jd=function(){function t(t,e){var n=Gd(t)?t:Hd(t);this._source=n;var i=this._data=n.data;n.sourceFormat===Np&&(this._offset=0,this._dimSize=e,this._data=i),Bd(this,i,n)}return t.prototype.getSource=function(){return this._source},t.prototype.count=function(){return 0},t.prototype.getItem=function(t,e){},t.prototype.appendData=function(t){},t.prototype.clean=function(){},t.protoInitialize=function(){var e=t.prototype;e.pure=!1,e.persistent=!0}(),t.internalField=function(){var t;Bd=function(t,r,o){var a=o.sourceFormat,s=o.seriesLayoutBy,l=o.startIndex,u=o.dimensionsDefine,h=Vd[of(a,s)];if(A(t,h),a===Np)t.getItem=e,t.count=i,t.fillStorage=n;else{var c=$d(a,s);t.getItem=W(c,null,r,l,u);var p=tf(a,s);t.count=W(p,null,r,l,u)}};var e=function(t,e){t-=this._offset,e=e||[];for(var n=this._data,i=this._dimSize,r=i*t,o=0;o<i;o++)e[o]=n[r+o];return e},n=function(t,e,n,i){for(var r=this._data,o=this._dimSize,a=0;a<o;a++){for(var s=i[a],l=null==s[0]?1/0:s[0],u=null==s[1]?-1/0:s[1],h=e-t,c=n[a],p=0;p<h;p++){var d=r[p*o+a];c[t+p]=d,d<l&&(l=d),d>u&&(u=d)}s[0]=l,s[1]=u}},i=function(){return this._data?this._data.length/this._dimSize:0};function r(t){for(var e=0;e<t.length;e++)this._data.push(t[e])}(t={}).arrayRows_column={pure:!0,appendData:r},t.arrayRows_row={pure:!0,appendData:function(){throw new Error('Do not support appendData when set seriesLayoutBy: "row".')}},t.objectRows={pure:!0,appendData:r},t.keyedColumns={pure:!0,appendData:function(t){var e=this._data;E(t,(function(t,n){for(var i=e[n]||(e[n]=[]),r=0;r<(t||[]).length;r++)i.push(t[r])}))}},t.original={appendData:r},t.typedArray={persistent:!1,pure:!0,appendData:function(t){this._data=t},clean:function(){this._offset+=this.count(),this._data=null}},Vd=t}(),t}(),qd=function(t,e,n,i){return t[i]},Kd=((Nd={}).arrayRows_column=function(t,e,n,i){return t[i+e]},Nd.arrayRows_row=function(t,e,n,i,r){i+=e;for(var o=r||[],a=t,s=0;s<a.length;s++){var l=a[s];o[s]=l?l[i]:null}return o},Nd.objectRows=qd,Nd.keyedColumns=function(t,e,n,i,r){for(var o=r||[],a=0;a<n.length;a++){var s=n[a].name;0;var l=t[s];o[a]=l?l[i]:null}return o},Nd.original=qd,Nd);function $d(t,e){var n=Kd[of(t,e)];return n}var Jd=function(t,e,n){return t.length},Qd=((Ed={}).arrayRows_column=function(t,e,n){return Math.max(0,t.length-e)},Ed.arrayRows_row=function(t,e,n){var i=t[0];return i?Math.max(0,i.length-e):0},Ed.objectRows=Jd,Ed.keyedColumns=function(t,e,n){var i=n[0].name;var r=t[i];return r?r.length:0},Ed.original=Jd,Ed);function tf(t,e){var n=Qd[of(t,e)];return n}var ef=function(t,e,n){return t[e]},nf=((zd={}).arrayRows=ef,zd.objectRows=function(t,e,n){return t[n]},zd.keyedColumns=ef,zd.original=function(t,e,n){var i=fo(t);return i instanceof Array?i[e]:i},zd.typedArray=ef,zd);function rf(t){var e=nf[t];return e}function of(t,e){return t===Pp?t+"_"+e:t}function af(t,e,n){if(t){var i=t.getRawDataItem(e);if(null!=i){var r=t.getStore(),o=r.getSource().sourceFormat;if(null!=n){var a=t.getDimensionIndex(n),s=r.getDimensionProperty(a);return rf(o)(i,a,s)}var l=i;return o===Lp&&(l=fo(i)),l}}}var sf=/\{@(.+?)\}/g,lf=function(){function t(){}return t.prototype.getDataParams=function(t,e){var n=this.getData(e),i=this.getRawValue(t,e),r=n.getRawIndex(t),o=n.getName(t),a=n.getRawDataItem(t),s=n.getItemVisual(t,"style"),l=s&&s[n.getItemVisual(t,"drawType")||"fill"],u=s&&s.stroke,h=this.mainType,c="series"===h,p=n.userOutput&&n.userOutput.get();return{componentType:h,componentSubType:this.subType,componentIndex:this.componentIndex,seriesType:c?this.subType:null,seriesIndex:this.seriesIndex,seriesId:c?this.id:null,seriesName:c?this.name:null,name:o,dataIndex:r,data:a,dataType:e,value:i,color:l,borderColor:u,dimensionNames:p?p.fullDimensions:null,encode:p?p.encode:null,$vars:["seriesName","name","value"]}},t.prototype.getFormattedLabel=function(t,e,n,i,r,o){e=e||"normal";var a=this.getData(n),s=this.getDataParams(t,n);(o&&(s.value=o.interpolatedValue),null!=i&&Y(s.value)&&(s.value=s.value[i]),r)||(r=a.getItemModel(t).get("normal"===e?["label","formatter"]:[e,"label","formatter"]));return U(r)?(s.status=e,s.dimensionIndex=i,r(s)):X(r)?hp(r,s).replace(sf,(function(e,n){var i=n.length,r=n;"["===r.charAt(0)&&"]"===r.charAt(i-1)&&(r=+r.slice(1,i-1));var s=af(a,t,r);if(o&&Y(o.interpolatedValue)){var l=a.getDimensionIndex(r);l>=0&&(s=o.interpolatedValue[l])}return null!=s?s+"":""})):void 0},t.prototype.getRawValue=function(t,e){return af(this.getData(e),t)},t.prototype.formatTooltip=function(t,e,n){},t}();function uf(t){var e,n;return q(t)?t.type&&(n=t):e=t,{text:e,frag:n}}function hf(t){return new cf(t)}var cf=function(){function t(t){t=t||{},this._reset=t.reset,this._plan=t.plan,this._count=t.count,this._onDirty=t.onDirty,this._dirty=!0}return t.prototype.perform=function(t){var e,n=this._upstream,i=t&&t.skip;if(this._dirty&&n){var r=this.context;r.data=r.outputData=n.context.outputData}this.__pipeline&&(this.__pipeline.currentTask=this),this._plan&&!i&&(e=this._plan(this.context));var o,a=h(this._modBy),s=this._modDataCount||0,l=h(t&&t.modBy),u=t&&t.modDataCount||0;function h(t){return!(t>=1)&&(t=1),t}a===l&&s===u||(e="reset"),(this._dirty||"reset"===e)&&(this._dirty=!1,o=this._doReset(i)),this._modBy=l,this._modDataCount=u;var c=t&&t.step;if(this._dueEnd=n?n._outputDueEnd:this._count?this._count(this.context):1/0,this._progress){var p=this._dueIndex,d=Math.min(null!=c?this._dueIndex+c:1/0,this._dueEnd);if(!i&&(o||p<d)){var f=this._progress;if(Y(f))for(var g=0;g<f.length;g++)this._doProgress(f[g],p,d,l,u);else this._doProgress(f,p,d,l,u)}this._dueIndex=d;var y=null!=this._settedOutputEnd?this._settedOutputEnd:d;0,this._outputDueEnd=y}else this._dueIndex=this._outputDueEnd=null!=this._settedOutputEnd?this._settedOutputEnd:this._dueEnd;return this.unfinished()},t.prototype.dirty=function(){this._dirty=!0,this._onDirty&&this._onDirty(this.context)},t.prototype._doProgress=function(t,e,n,i,r){pf.reset(e,n,i,r),this._callingProgress=t,this._callingProgress({start:e,end:n,count:n-e,next:pf.next},this.context)},t.prototype._doReset=function(t){var e,n;this._dueIndex=this._outputDueEnd=this._dueEnd=0,this._settedOutputEnd=null,!t&&this._reset&&((e=this._reset(this.context))&&e.progress&&(n=e.forceFirstProgress,e=e.progress),Y(e)&&!e.length&&(e=null)),this._progress=e,this._modBy=this._modDataCount=null;var i=this._downstream;return i&&i.dirty(),n},t.prototype.unfinished=function(){return this._progress&&this._dueIndex<this._dueEnd},t.prototype.pipe=function(t){(this._downstream!==t||this._dirty)&&(this._downstream=t,t._upstream=this,t.dirty())},t.prototype.dispose=function(){this._disposed||(this._upstream&&(this._upstream._downstream=null),this._downstream&&(this._downstream._upstream=null),this._dirty=!1,this._disposed=!0)},t.prototype.getUpstream=function(){return this._upstream},t.prototype.getDownstream=function(){return this._downstream},t.prototype.setOutputEnd=function(t){this._outputDueEnd=this._settedOutputEnd=t},t}(),pf=function(){var t,e,n,i,r,o={reset:function(l,u,h,c){e=l,t=u,n=h,i=c,r=Math.ceil(i/n),o.next=n>1&&i>0?s:a}};return o;function a(){return e<t?e++:null}function s(){var o=e%r*n+Math.ceil(e/r),a=e>=t?null:o<i?o:e;return e++,a}}();function df(t,e){var n=e&&e.type;return"ordinal"===n?t:("time"!==n||j(t)||null==t||"-"===t||(t=+jr(t)),null==t||""===t?NaN:+t)}var ff=ft({number:function(t){return parseFloat(t)},time:function(t){return+jr(t)},trim:function(t){return X(t)?ut(t):t}});function gf(t){return ff.get(t)}var yf={lt:function(t,e){return t<e},lte:function(t,e){return t<=e},gt:function(t,e){return t>e},gte:function(t,e){return t>=e}},vf=function(){function t(t,e){if(!j(e)){var n="";0,ao(n)}this._opFn=yf[t],this._rvalFloat=to(e)}return t.prototype.evaluate=function(t){return j(t)?this._opFn(t,this._rvalFloat):this._opFn(to(t),this._rvalFloat)},t}(),mf=function(){function t(t,e){var n="desc"===t;this._resultLT=n?1:-1,null==e&&(e=n?"min":"max"),this._incomparable="min"===e?-1/0:1/0}return t.prototype.evaluate=function(t,e){var n=j(t)?t:to(t),i=j(e)?e:to(e),r=isNaN(n),o=isNaN(i);if(r&&(n=this._incomparable),o&&(i=this._incomparable),r&&o){var a=X(t),s=X(e);a&&(n=s?t:0),s&&(i=a?e:0)}return n<i?this._resultLT:n>i?-this._resultLT:0},t}(),xf=function(){function t(t,e){this._rval=e,this._isEQ=t,this._rvalTypeof=typeof e,this._rvalFloat=to(e)}return t.prototype.evaluate=function(t){var e=t===this._rval;if(!e){var n=typeof t;n===this._rvalTypeof||"number"!==n&&"number"!==this._rvalTypeof||(e=to(t)===this._rvalFloat)}return this._isEQ?e:!e},t}();function _f(t,e){return"eq"===t||"ne"===t?new xf("eq"===t,e):mt(yf,t)?new vf(t,e):null}var bf=function(){function t(){}return t.prototype.getRawData=function(){throw new Error("not supported")},t.prototype.getRawDataItem=function(t){throw new Error("not supported")},t.prototype.cloneRawData=function(){},t.prototype.getDimensionInfo=function(t){},t.prototype.cloneAllDimensionInfo=function(){},t.prototype.count=function(){},t.prototype.retrieveValue=function(t,e){},t.prototype.retrieveValueFromItem=function(t,e){},t.prototype.convertValue=function(t,e){return df(t,e)},t}();function wf(t){var e=t.sourceFormat;if(!Df(e)){var n="";0,ao(n)}return t.data}function Sf(t){var e=t.sourceFormat,n=t.data;if(!Df(e)){var i="";0,ao(i)}if(e===Pp){for(var r=[],o=0,a=n.length;o<a;o++)r.push(n[o].slice());return r}if(e===Op){for(r=[],o=0,a=n.length;o<a;o++)r.push(A({},n[o]));return r}}function Mf(t,e,n){if(null!=n)return j(n)||!isNaN(n)&&!mt(e,n)?t[n]:mt(e,n)?e[n]:void 0}function If(t){return T(t)}var Tf=ft();function Cf(t,e,n,i){var r="";e.length||ao(r),q(t)||ao(r);var o=t.type,a=Tf.get(o);a||ao(r);var s=z(e,(function(t){return function(t,e){var n=new bf,i=t.data,r=n.sourceFormat=t.sourceFormat,o=t.startIndex,a="";t.seriesLayoutBy!==zp&&ao(a);var s=[],l={},u=t.dimensionsDefine;if(u)E(u,(function(t,e){var n=t.name,i={index:e,name:n,displayName:t.displayName};if(s.push(i),null!=n){var r="";mt(l,n)&&ao(r),l[n]=i}}));else for(var h=0;h<t.dimensionsDetectedCount;h++)s.push({index:h});var c=$d(r,zp);e.__isBuiltIn&&(n.getRawDataItem=function(t){return c(i,o,s,t)},n.getRawData=W(wf,null,t)),n.cloneRawData=W(Sf,null,t);var p=tf(r,zp);n.count=W(p,null,i,o,s);var d=rf(r);n.retrieveValue=function(t,e){var n=c(i,o,s,t);return f(n,e)};var f=n.retrieveValueFromItem=function(t,e){if(null!=t){var n=s[e];return n?d(t,e,n.name):void 0}};return n.getDimensionInfo=W(Mf,null,s,l),n.cloneAllDimensionInfo=W(If,null,s),n}(t,a)})),l=ho(a.transform({upstream:s[0],upstreamList:s,config:T(t.config)}));return z(l,(function(t,n){var i,r="";q(t)||ao(r),t.data||ao(r),Df(Yd(t.data))||ao(r);var o=e[0];if(o&&0===n&&!t.dimensions){var a=o.startIndex;a&&(t.data=o.data.slice(0,a).concat(t.data)),i={seriesLayoutBy:zp,sourceHeader:a,dimensions:o.metaRawOption.dimensions}}else i={seriesLayoutBy:zp,sourceHeader:0,dimensions:t.dimensions};return Wd(t.data,i,null)}))}function Df(t){return t===Pp||t===Op}var Af,kf="undefined",Lf=typeof Uint32Array===kf?Array:Uint32Array,Pf=typeof Uint16Array===kf?Array:Uint16Array,Of=typeof Int32Array===kf?Array:Int32Array,Rf=typeof Float64Array===kf?Array:Float64Array,Nf={float:Rf,int:Of,ordinal:Array,number:Array,time:Rf};function Ef(t){return t>65535?Lf:Pf}function zf(t,e,n,i,r){var o=Nf[n||"float"];if(r){var a=t[e],s=a&&a.length;if(s!==i){for(var l=new o(i),u=0;u<s;u++)l[u]=a[u];t[e]=l}}else t[e]=new o(i)}var Vf=function(){function t(){this._chunks=[],this._rawExtent=[],this._extent=[],this._count=0,this._rawCount=0,this._calcDimNameToIdx=ft()}return t.prototype.initData=function(t,e,n){this._provider=t,this._chunks=[],this._indices=null,this.getRawIndex=this._getRawIdxIdentity;var i=t.getSource(),r=this.defaultDimValueGetter=Af[i.sourceFormat];this._dimValueGetter=n||r,this._rawExtent=[];Zd(i);this._dimensions=z(e,(function(t){return{type:t.type,property:t.property}})),this._initDataFromProvider(0,t.count())},t.prototype.getProvider=function(){return this._provider},t.prototype.getSource=function(){return this._provider.getSource()},t.prototype.ensureCalculationDimension=function(t,e){var n=this._calcDimNameToIdx,i=this._dimensions,r=n.get(t);if(null!=r){if(i[r].type===e)return r}else r=i.length;return i[r]={type:e},n.set(t,r),this._chunks[r]=new Nf[e||"float"](this._rawCount),this._rawExtent[r]=[1/0,-1/0],r},t.prototype.collectOrdinalMeta=function(t,e){var n=this._chunks[t],i=this._dimensions[t],r=this._rawExtent,o=i.ordinalOffset||0,a=n.length;0===o&&(r[t]=[1/0,-1/0]);for(var s=r[t],l=o;l<a;l++){var u=n[l]=e.parseAndCollect(n[l]);isNaN(u)||(s[0]=Math.min(u,s[0]),s[1]=Math.max(u,s[1]))}i.ordinalMeta=e,i.ordinalOffset=a,i.type="ordinal"},t.prototype.getOrdinalMeta=function(t){return this._dimensions[t].ordinalMeta},t.prototype.getDimensionProperty=function(t){var e=this._dimensions[t];return e&&e.property},t.prototype.appendData=function(t){var e=this._provider,n=this.count();e.appendData(t);var i=e.count();return e.persistent||(i+=n),n<i&&this._initDataFromProvider(n,i,!0),[n,i]},t.prototype.appendValues=function(t,e){for(var n=this._chunks,i=this._dimensions,r=i.length,o=this._rawExtent,a=this.count(),s=a+Math.max(t.length,e||0),l=0;l<r;l++){zf(n,l,(d=i[l]).type,s,!0)}for(var u=[],h=a;h<s;h++)for(var c=h-a,p=0;p<r;p++){var d=i[p],f=Af.arrayRows.call(this,t[c]||u,d.property,c,p);n[p][h]=f;var g=o[p];f<g[0]&&(g[0]=f),f>g[1]&&(g[1]=f)}return this._rawCount=this._count=s,{start:a,end:s}},t.prototype._initDataFromProvider=function(t,e,n){for(var i=this._provider,r=this._chunks,o=this._dimensions,a=o.length,s=this._rawExtent,l=z(o,(function(t){return t.property})),u=0;u<a;u++){var h=o[u];s[u]||(s[u]=[1/0,-1/0]),zf(r,u,h.type,e,n)}if(i.fillStorage)i.fillStorage(t,e,r,s);else for(var c=[],p=t;p<e;p++){c=i.getItem(p,c);for(var d=0;d<a;d++){var f=r[d],g=this._dimValueGetter(c,l[d],p,d);f[p]=g;var y=s[d];g<y[0]&&(y[0]=g),g>y[1]&&(y[1]=g)}}!i.persistent&&i.clean&&i.clean(),this._rawCount=this._count=e,this._extent=[]},t.prototype.count=function(){return this._count},t.prototype.get=function(t,e){if(!(e>=0&&e<this._count))return NaN;var n=this._chunks[t];return n?n[this.getRawIndex(e)]:NaN},t.prototype.getValues=function(t,e){var n=[],i=[];if(null==e){e=t,t=[];for(var r=0;r<this._dimensions.length;r++)i.push(r)}else i=t;r=0;for(var o=i.length;r<o;r++)n.push(this.get(i[r],e));return n},t.prototype.getByRawIndex=function(t,e){if(!(e>=0&&e<this._rawCount))return NaN;var n=this._chunks[t];return n?n[e]:NaN},t.prototype.getSum=function(t){var e=0;if(this._chunks[t])for(var n=0,i=this.count();n<i;n++){var r=this.get(t,n);isNaN(r)||(e+=r)}return e},t.prototype.getMedian=function(t){var e=[];this.each([t],(function(t){isNaN(t)||e.push(t)}));var n=e.sort((function(t,e){return t-e})),i=this.count();return 0===i?0:i%2==1?n[(i-1)/2]:(n[i/2]+n[i/2-1])/2},t.prototype.indexOfRawIndex=function(t){if(t>=this._rawCount||t<0)return-1;if(!this._indices)return t;var e=this._indices,n=e[t];if(null!=n&&n<this._count&&n===t)return t;for(var i=0,r=this._count-1;i<=r;){var o=(i+r)/2|0;if(e[o]<t)i=o+1;else{if(!(e[o]>t))return o;r=o-1}}return-1},t.prototype.indicesOfNearest=function(t,e,n){var i=this._chunks[t],r=[];if(!i)return r;null==n&&(n=1/0);for(var o=1/0,a=-1,s=0,l=0,u=this.count();l<u;l++){var h=e-i[this.getRawIndex(l)],c=Math.abs(h);c<=n&&((c<o||c===o&&h>=0&&a<0)&&(o=c,a=h,s=0),h===a&&(r[s++]=l))}return r.length=s,r},t.prototype.getIndices=function(){var t,e=this._indices;if(e){var n=e.constructor,i=this._count;if(n===Array){t=new n(i);for(var r=0;r<i;r++)t[r]=e[r]}else t=new n(e.buffer,0,i)}else{t=new(n=Ef(this._rawCount))(this.count());for(r=0;r<t.length;r++)t[r]=r}return t},t.prototype.filter=function(t,e){if(!this._count)return this;for(var n=this.clone(),i=n.count(),r=new(Ef(n._rawCount))(i),o=[],a=t.length,s=0,l=t[0],u=n._chunks,h=0;h<i;h++){var c=void 0,p=n.getRawIndex(h);if(0===a)c=e(h);else if(1===a){c=e(u[l][p],h)}else{for(var d=0;d<a;d++)o[d]=u[t[d]][p];o[d]=h,c=e.apply(null,o)}c&&(r[s++]=p)}return s<i&&(n._indices=r),n._count=s,n._extent=[],n._updateGetRawIdx(),n},t.prototype.selectRange=function(t){var e=this.clone(),n=e._count;if(!n)return this;var i=G(t),r=i.length;if(!r)return this;var o=e.count(),a=new(Ef(e._rawCount))(o),s=0,l=i[0],u=t[l][0],h=t[l][1],c=e._chunks,p=!1;if(!e._indices){var d=0;if(1===r){for(var f=c[i[0]],g=0;g<n;g++){((x=f[g])>=u&&x<=h||isNaN(x))&&(a[s++]=d),d++}p=!0}else if(2===r){f=c[i[0]];var y=c[i[1]],v=t[i[1]][0],m=t[i[1]][1];for(g=0;g<n;g++){var x=f[g],_=y[g];(x>=u&&x<=h||isNaN(x))&&(_>=v&&_<=m||isNaN(_))&&(a[s++]=d),d++}p=!0}}if(!p)if(1===r)for(g=0;g<o;g++){var b=e.getRawIndex(g);((x=c[i[0]][b])>=u&&x<=h||isNaN(x))&&(a[s++]=b)}else for(g=0;g<o;g++){for(var w=!0,S=(b=e.getRawIndex(g),0);S<r;S++){var M=i[S];((x=c[M][b])<t[M][0]||x>t[M][1])&&(w=!1)}w&&(a[s++]=e.getRawIndex(g))}return s<o&&(e._indices=a),e._count=s,e._extent=[],e._updateGetRawIdx(),e},t.prototype.map=function(t,e){var n=this.clone(t);return this._updateDims(n,t,e),n},t.prototype.modify=function(t,e){this._updateDims(this,t,e)},t.prototype._updateDims=function(t,e,n){for(var i=t._chunks,r=[],o=e.length,a=t.count(),s=[],l=t._rawExtent,u=0;u<e.length;u++)l[e[u]]=[1/0,-1/0];for(var h=0;h<a;h++){for(var c=t.getRawIndex(h),p=0;p<o;p++)s[p]=i[e[p]][c];s[o]=h;var d=n&&n.apply(null,s);if(null!=d){"object"!=typeof d&&(r[0]=d,d=r);for(u=0;u<d.length;u++){var f=e[u],g=d[u],y=l[f],v=i[f];v&&(v[c]=g),g<y[0]&&(y[0]=g),g>y[1]&&(y[1]=g)}}}},t.prototype.lttbDownSample=function(t,e){var n,i,r,o=this.clone([t],!0),a=o._chunks[t],s=this.count(),l=0,u=Math.floor(1/e),h=this.getRawIndex(0),c=new(Ef(this._rawCount))(Math.min(2*(Math.ceil(s/u)+2),s));c[l++]=h;for(var p=1;p<s-1;p+=u){for(var d=Math.min(p+u,s-1),f=Math.min(p+2*u,s),g=(f+d)/2,y=0,v=d;v<f;v++){var m=a[I=this.getRawIndex(v)];isNaN(m)||(y+=m)}y/=f-d;var x=p,_=Math.min(p+u,s),b=p-1,w=a[h];n=-1,r=x;var S=-1,M=0;for(v=x;v<_;v++){var I;m=a[I=this.getRawIndex(v)];isNaN(m)?(M++,S<0&&(S=I)):(i=Math.abs((b-g)*(m-w)-(b-v)*(y-w)))>n&&(n=i,r=I)}M>0&&M<_-x&&(c[l++]=Math.min(S,r),r=Math.max(S,r)),c[l++]=r,h=r}return c[l++]=this.getRawIndex(s-1),o._count=l,o._indices=c,o.getRawIndex=this._getRawIdx,o},t.prototype.downSample=function(t,e,n,i){for(var r=this.clone([t],!0),o=r._chunks,a=[],s=Math.floor(1/e),l=o[t],u=this.count(),h=r._rawExtent[t]=[1/0,-1/0],c=new(Ef(this._rawCount))(Math.ceil(u/s)),p=0,d=0;d<u;d+=s){s>u-d&&(s=u-d,a.length=s);for(var f=0;f<s;f++){var g=this.getRawIndex(d+f);a[f]=l[g]}var y=n(a),v=this.getRawIndex(Math.min(d+i(a,y)||0,u-1));l[v]=y,y<h[0]&&(h[0]=y),y>h[1]&&(h[1]=y),c[p++]=v}return r._count=p,r._indices=c,r._updateGetRawIdx(),r},t.prototype.each=function(t,e){if(this._count)for(var n=t.length,i=this._chunks,r=0,o=this.count();r<o;r++){var a=this.getRawIndex(r);switch(n){case 0:e(r);break;case 1:e(i[t[0]][a],r);break;case 2:e(i[t[0]][a],i[t[1]][a],r);break;default:for(var s=0,l=[];s<n;s++)l[s]=i[t[s]][a];l[s]=r,e.apply(null,l)}}},t.prototype.getDataExtent=function(t){var e=this._chunks[t],n=[1/0,-1/0];if(!e)return n;var i,r=this.count();if(!this._indices)return this._rawExtent[t].slice();if(i=this._extent[t])return i.slice();for(var o=(i=n)[0],a=i[1],s=0;s<r;s++){var l=e[this.getRawIndex(s)];l<o&&(o=l),l>a&&(a=l)}return i=[o,a],this._extent[t]=i,i},t.prototype.getRawDataItem=function(t){var e=this.getRawIndex(t);if(this._provider.persistent)return this._provider.getItem(e);for(var n=[],i=this._chunks,r=0;r<i.length;r++)n.push(i[r][e]);return n},t.prototype.clone=function(e,n){var i,r,o=new t,a=this._chunks,s=e&&V(e,(function(t,e){return t[e]=!0,t}),{});if(s)for(var l=0;l<a.length;l++)o._chunks[l]=s[l]?(i=a[l],r=void 0,(r=i.constructor)===Array?i.slice():new r(i)):a[l];else o._chunks=a;return this._copyCommonProps(o),n||(o._indices=this._cloneIndices()),o._updateGetRawIdx(),o},t.prototype._copyCommonProps=function(t){t._count=this._count,t._rawCount=this._rawCount,t._provider=this._provider,t._dimensions=this._dimensions,t._extent=T(this._extent),t._rawExtent=T(this._rawExtent)},t.prototype._cloneIndices=function(){if(this._indices){var t=this._indices.constructor,e=void 0;if(t===Array){var n=this._indices.length;e=new t(n);for(var i=0;i<n;i++)e[i]=this._indices[i]}else e=new t(this._indices);return e}return null},t.prototype._getRawIdxIdentity=function(t){return t},t.prototype._getRawIdx=function(t){return t<this._count&&t>=0?this._indices[t]:-1},t.prototype._updateGetRawIdx=function(){this.getRawIndex=this._indices?this._getRawIdx:this._getRawIdxIdentity},t.internalField=function(){function t(t,e,n,i){return df(t[i],this._dimensions[i])}Af={arrayRows:t,objectRows:function(t,e,n,i){return df(t[e],this._dimensions[i])},keyedColumns:t,original:function(t,e,n,i){var r=t&&(null==t.value?t:t.value);return df(r instanceof Array?r[i]:r,this._dimensions[i])},typedArray:function(t,e,n,i){return t[i]}}}(),t}(),Bf=function(){function t(t){this._sourceList=[],this._storeList=[],this._upstreamSignList=[],this._versionSignBase=0,this._dirty=!0,this._sourceHost=t}return t.prototype.dirty=function(){this._setLocalSource([],[]),this._storeList=[],this._dirty=!0},t.prototype._setLocalSource=function(t,e){this._sourceList=t,this._upstreamSignList=e,this._versionSignBase++,this._versionSignBase>9e10&&(this._versionSignBase=0)},t.prototype._getVersionSign=function(){return this._sourceHost.uid+"_"+this._versionSignBase},t.prototype.prepareSource=function(){this._isDirty()&&(this._createSource(),this._dirty=!1)},t.prototype._createSource=function(){this._setLocalSource([],[]);var t,e,n=this._sourceHost,i=this._getUpstreamSourceManagers(),r=!!i.length;if(Gf(n)){var o=n,a=void 0,s=void 0,l=void 0;if(r){var u=i[0];u.prepareSource(),a=(l=u.getSource()).data,s=l.sourceFormat,e=[u._getVersionSign()]}else s=$(a=o.get("data",!0))?Np:Lp,e=[];var h=this._getSourceMetaRawOption()||{},c=l&&l.metaRawOption||{},p=rt(h.seriesLayoutBy,c.seriesLayoutBy)||null,d=rt(h.sourceHeader,c.sourceHeader),f=rt(h.dimensions,c.dimensions);t=p!==c.seriesLayoutBy||!!d!=!!c.sourceHeader||f?[Wd(a,{seriesLayoutBy:p,sourceHeader:d,dimensions:f},s)]:[]}else{var g=n;if(r){var y=this._applyTransform(i);t=y.sourceList,e=y.upstreamSignList}else{t=[Wd(g.get("source",!0),this._getSourceMetaRawOption(),null)],e=[]}}this._setLocalSource(t,e)},t.prototype._applyTransform=function(t){var e,n=this._sourceHost,i=n.get("transform",!0),r=n.get("fromTransformResult",!0);if(null!=r){var o="";1!==t.length&&Wf(o)}var a,s=[],l=[];return E(t,(function(t){t.prepareSource();var e=t.getSource(r||0),n="";null==r||e||Wf(n),s.push(e),l.push(t._getVersionSign())})),i?e=function(t,e,n){var i=ho(t),r=i.length,o="";r||ao(o);for(var a=0,s=r;a<s;a++)e=Cf(i[a],e),a!==s-1&&(e.length=Math.max(e.length,1));return e}(i,s,n.componentIndex):null!=r&&(e=[(a=s[0],new Fd({data:a.data,sourceFormat:a.sourceFormat,seriesLayoutBy:a.seriesLayoutBy,dimensionsDefine:T(a.dimensionsDefine),startIndex:a.startIndex,dimensionsDetectedCount:a.dimensionsDetectedCount}))]),{sourceList:e,upstreamSignList:l}},t.prototype._isDirty=function(){if(this._dirty)return!0;for(var t=this._getUpstreamSourceManagers(),e=0;e<t.length;e++){var n=t[e];if(n._isDirty()||this._upstreamSignList[e]!==n._getVersionSign())return!0}},t.prototype.getSource=function(t){t=t||0;var e=this._sourceList[t];if(!e){var n=this._getUpstreamSourceManagers();return n[0]&&n[0].getSource(t)}return e},t.prototype.getSharedDataStore=function(t){var e=t.makeStoreSchema();return this._innerGetDataStore(e.dimensions,t.source,e.hash)},t.prototype._innerGetDataStore=function(t,e,n){var i=this._storeList,r=i[0];r||(r=i[0]={});var o=r[n];if(!o){var a=this._getUpstreamSourceManagers()[0];Gf(this._sourceHost)&&a?o=a._innerGetDataStore(t,e,n):(o=new Vf).initData(new jd(e,t.length),t),r[n]=o}return o},t.prototype._getUpstreamSourceManagers=function(){var t=this._sourceHost;if(Gf(t)){var e=Up(t);return e?[e.getSourceManager()]:[]}return z(function(t){return t.get("transform",!0)||t.get("fromTransformResult",!0)?Ao(t.ecModel,"dataset",{index:t.get("fromDatasetIndex",!0),id:t.get("fromDatasetId",!0)},Co).models:[]}(t),(function(t){return t.getSourceManager()}))},t.prototype._getSourceMetaRawOption=function(){var t,e,n,i=this._sourceHost;if(Gf(i))t=i.get("seriesLayoutBy",!0),e=i.get("sourceHeader",!0),n=i.get("dimensions",!0);else if(!this._getUpstreamSourceManagers().length){var r=i;t=r.get("seriesLayoutBy",!0),e=r.get("sourceHeader",!0),n=r.get("dimensions",!0)}return{seriesLayoutBy:t,sourceHeader:e,dimensions:n}},t}();function Ff(t){t.option.transform&&ct(t.option.transform)}function Gf(t){return"series"===t.mainType}function Wf(t){throw new Error(t)}function Hf(t,e){var n=t.color||"#6e7079",i=t.fontSize||12,r=t.fontWeight||"400",o=t.color||"#464646",a=t.fontSize||14,s=t.fontWeight||"900";return"html"===e?{nameStyle:"font-size:"+ap(i+"")+"px;color:"+ap(n)+";font-weight:"+ap(r+""),valueStyle:"font-size:"+ap(a+"")+"px;color:"+ap(o)+";font-weight:"+ap(s+"")}:{nameStyle:{fontSize:i,fill:n,fontWeight:r},valueStyle:{fontSize:a,fill:o,fontWeight:s}}}var Yf=[0,10,20,30],Uf=["","\n","\n\n","\n\n\n"];function Xf(t,e){return e.type=t,e}function Zf(t){return"section"===t.type}function jf(t){return Zf(t)?Kf:$f}function qf(t){if(Zf(t)){var e=0,n=t.blocks.length,i=n>1||n>0&&!t.noHeader;return E(t.blocks,(function(t){var n=qf(t);n>=e&&(e=n+ +(i&&(!n||Zf(t)&&!t.noHeader)))})),e}return 0}function Kf(t,e,n,i){var r,o=e.noHeader,a=(r=qf(e),{html:Yf[r],richText:Uf[r]}),s=[],l=e.blocks||[];lt(!l||Y(l)),l=l||[];var u=t.orderMode;if(e.sortBlocks&&u){l=l.slice();var h={valueAsc:"asc",valueDesc:"desc"};if(mt(h,u)){var c=new mf(h[u],null);l.sort((function(t,e){return c.evaluate(t.sortParam,e.sortParam)}))}else"seriesDesc"===u&&l.reverse()}E(l,(function(n,r){var o=e.valueFormatter,l=jf(n)(o?A(A({},t),{valueFormatter:o}):t,n,r>0?a.html:0,i);null!=l&&s.push(l)}));var p="richText"===t.renderMode?s.join(a.richText):Qf(s.join(""),o?n:a.html);if(o)return p;var d=sp(e.header,"ordinal",t.useUTC),f=Hf(i,t.renderMode).nameStyle;return"richText"===t.renderMode?tg(t,d,f)+a.richText+p:Qf('<div style="'+f+";"+'line-height:1;">'+ap(d)+"</div>"+p,n)}function $f(t,e,n,i){var r=t.renderMode,o=e.noName,a=e.noValue,s=!e.markerType,l=e.name,u=t.useUTC,h=e.valueFormatter||t.valueFormatter||function(t){return z(t=Y(t)?t:[t],(function(t,e){return sp(t,Y(d)?d[e]:d,u)}))};if(!o||!a){var c=s?"":t.markupStyleCreator.makeTooltipMarker(e.markerType,e.markerColor||"#333",r),p=o?"":sp(l,"ordinal",u),d=e.valueType,f=a?[]:h(e.value),g=!s||!o,y=!s&&o,v=Hf(i,r),m=v.nameStyle,x=v.valueStyle;return"richText"===r?(s?"":c)+(o?"":tg(t,p,m))+(a?"":function(t,e,n,i,r){var o=[r],a=i?10:20;return n&&o.push({padding:[0,0,0,a],align:"right"}),t.markupStyleCreator.wrapRichTextStyle(Y(e)?e.join(" "):e,o)}(t,f,g,y,x)):Qf((s?"":c)+(o?"":function(t,e,n){return'<span style="'+n+";"+(e?"margin-left:2px":"")+'">'+ap(t)+"</span>"}(p,!s,m))+(a?"":function(t,e,n,i){var r=n?"10px":"20px",o=e?"float:right;margin-left:"+r:"";return t=Y(t)?t:[t],'<span style="'+o+";"+i+'">'+z(t,(function(t){return ap(t)})).join("&nbsp;&nbsp;")+"</span>"}(f,g,y,x)),n)}}function Jf(t,e,n,i,r,o){if(t)return jf(t)({useUTC:r,renderMode:n,orderMode:i,markupStyleCreator:e,valueFormatter:t.valueFormatter},t,0,o)}function Qf(t,e){return'<div style="'+("margin: "+e+"px 0 0")+";"+'line-height:1;">'+t+'<div style="clear:both"></div></div>'}function tg(t,e,n){return t.markupStyleCreator.wrapRichTextStyle(e,n)}function eg(t,e){return pp(t.getData().getItemVisual(e,"style")[t.visualDrawType])}function ng(t,e){var n=t.get("padding");return null!=n?n:"richText"===e?[8,10]:10}var ig=function(){function t(){this.richTextStyles={},this._nextStyleNameId=no()}return t.prototype._generateStyleName=function(){return"__EC_aUTo_"+this._nextStyleNameId++},t.prototype.makeTooltipMarker=function(t,e,n){var i="richText"===n?this._generateStyleName():null,r=cp({color:e,type:t,renderMode:n,markerId:i});return X(r)?r:(this.richTextStyles[i]=r.style,r.content)},t.prototype.wrapRichTextStyle=function(t,e){var n={};Y(e)?E(e,(function(t){return A(n,t)})):A(n,e);var i=this._generateStyleName();return this.richTextStyles[i]=n,"{"+i+"|"+t+"}"},t}();function rg(t){var e,n,i,r,o=t.series,a=t.dataIndex,s=t.multipleSeries,l=o.getData(),u=l.mapDimensionsAll("defaultedTooltip"),h=u.length,c=o.getRawValue(a),p=Y(c),d=eg(o,a);if(h>1||p&&!h){var f=function(t,e,n,i,r){var o=e.getData(),a=V(t,(function(t,e,n){var i=o.getDimensionInfo(n);return t||i&&!1!==i.tooltip&&null!=i.displayName}),!1),s=[],l=[],u=[];function h(t,e){var n=o.getDimensionInfo(e);n&&!1!==n.otherDims.tooltip&&(a?u.push(Xf("nameValue",{markerType:"subItem",markerColor:r,name:n.displayName,value:t,valueType:n.type})):(s.push(t),l.push(n.type)))}return i.length?E(i,(function(t){h(af(o,n,t),t)})):E(t,h),{inlineValues:s,inlineValueTypes:l,blocks:u}}(c,o,a,u,d);e=f.inlineValues,n=f.inlineValueTypes,i=f.blocks,r=f.inlineValues[0]}else if(h){var g=l.getDimensionInfo(u[0]);r=e=af(l,a,u[0]),n=g.type}else r=e=p?c[0]:c;var y=_o(o),v=y&&o.name||"",m=l.getName(a),x=s?v:m;return Xf("section",{header:v,noHeader:s||!y,sortParam:r,blocks:[Xf("nameValue",{markerType:"item",markerColor:d,name:x,noName:!ut(x),value:e,valueType:n})].concat(i||[])})}var og=So();function ag(t,e){return t.getName(e)||t.getId(e)}var sg=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._selectedDataIndicesMap={},e}return n(e,t),e.prototype.init=function(t,e,n){this.seriesIndex=this.componentIndex,this.dataTask=hf({count:ug,reset:hg}),this.dataTask.context={model:this},this.mergeDefaultAndTheme(t,n),(og(this).sourceManager=new Bf(this)).prepareSource();var i=this.getInitialData(t,n);pg(i,this),this.dataTask.context.data=i,og(this).dataBeforeProcessed=i,lg(this),this._initSelectedMapFromData(i)},e.prototype.mergeDefaultAndTheme=function(t,e){var n=bp(this),i=n?Sp(t):{},r=this.subType;Tp.hasClass(r)&&(r+="Series"),C(t,e.getTheme().get(this.subType)),C(t,this.getDefaultOption()),co(t,"label",["show"]),this.fillDataTextStyle(t.data),n&&wp(t,i,n)},e.prototype.mergeOption=function(t,e){t=C(this.option,t,!0),this.fillDataTextStyle(t.data);var n=bp(this);n&&wp(this.option,t,n);var i=og(this).sourceManager;i.dirty(),i.prepareSource();var r=this.getInitialData(t,e);pg(r,this),this.dataTask.dirty(),this.dataTask.context.data=r,og(this).dataBeforeProcessed=r,lg(this),this._initSelectedMapFromData(r)},e.prototype.fillDataTextStyle=function(t){if(t&&!$(t))for(var e=["show"],n=0;n<t.length;n++)t[n]&&t[n].label&&co(t[n],"label",e)},e.prototype.getInitialData=function(t,e){},e.prototype.appendData=function(t){this.getRawData().appendData(t.data)},e.prototype.getData=function(t){var e=fg(this);if(e){var n=e.context.data;return null==t?n:n.getLinkedData(t)}return og(this).data},e.prototype.getAllData=function(){var t=this.getData();return t&&t.getLinkedDataAll?t.getLinkedDataAll():[{data:t}]},e.prototype.setData=function(t){var e=fg(this);if(e){var n=e.context;n.outputData=t,e!==this.dataTask&&(n.data=t)}og(this).data=t},e.prototype.getEncode=function(){var t=this.get("encode",!0);if(t)return ft(t)},e.prototype.getSourceManager=function(){return og(this).sourceManager},e.prototype.getSource=function(){return this.getSourceManager().getSource()},e.prototype.getRawData=function(){return og(this).dataBeforeProcessed},e.prototype.getColorBy=function(){return this.get("colorBy")||"series"},e.prototype.isColorBySeries=function(){return"series"===this.getColorBy()},e.prototype.getBaseAxis=function(){var t=this.coordinateSystem;return t&&t.getBaseAxis&&t.getBaseAxis()},e.prototype.formatTooltip=function(t,e,n){return rg({series:this,dataIndex:t,multipleSeries:e})},e.prototype.isAnimationEnabled=function(){var t=this.ecModel;if(r.node&&(!t||!t.ssr))return!1;var e=this.getShallow("animation");return e&&this.getData().count()>this.getShallow("animationThreshold")&&(e=!1),!!e},e.prototype.restoreData=function(){this.dataTask.dirty()},e.prototype.getColorFromPalette=function(t,e,n){var i=this.ecModel,r=td.prototype.getColorFromPalette.call(this,t,e,n);return r||(r=i.getColorFromPalette(t,e,n)),r},e.prototype.coordDimToDataDim=function(t){return this.getRawData().mapDimensionsAll(t)},e.prototype.getProgressive=function(){return this.get("progressive")},e.prototype.getProgressiveThreshold=function(){return this.get("progressiveThreshold")},e.prototype.select=function(t,e){this._innerSelect(this.getData(e),t)},e.prototype.unselect=function(t,e){var n=this.option.selectedMap;if(n){var i=this.option.selectedMode,r=this.getData(e);if("series"===i||"all"===n)return this.option.selectedMap={},void(this._selectedDataIndicesMap={});for(var o=0;o<t.length;o++){var a=ag(r,t[o]);n[a]=!1,this._selectedDataIndicesMap[a]=-1}}},e.prototype.toggleSelect=function(t,e){for(var n=[],i=0;i<t.length;i++)n[0]=t[i],this.isSelected(t[i],e)?this.unselect(n,e):this.select(n,e)},e.prototype.getSelectedDataIndices=function(){if("all"===this.option.selectedMap)return[].slice.call(this.getData().getIndices());for(var t=this._selectedDataIndicesMap,e=G(t),n=[],i=0;i<e.length;i++){var r=t[e[i]];r>=0&&n.push(r)}return n},e.prototype.isSelected=function(t,e){var n=this.option.selectedMap;if(!n)return!1;var i=this.getData(e);return("all"===n||n[ag(i,t)])&&!i.getItemModel(t).get(["select","disabled"])},e.prototype.isUniversalTransitionEnabled=function(){if(this.__universalTransitionEnabled)return!0;var t=this.option.universalTransition;return!!t&&(!0===t||t&&t.enabled)},e.prototype._innerSelect=function(t,e){var n,i,r=this.option,o=r.selectedMode,a=e.length;if(o&&a)if("series"===o)r.selectedMap="all";else if("multiple"===o){q(r.selectedMap)||(r.selectedMap={});for(var s=r.selectedMap,l=0;l<a;l++){var u=e[l];s[c=ag(t,u)]=!0,this._selectedDataIndicesMap[c]=t.getRawIndex(u)}}else if("single"===o||!0===o){var h=e[a-1],c=ag(t,h);r.selectedMap=((n={})[c]=!0,n),this._selectedDataIndicesMap=((i={})[c]=t.getRawIndex(h),i)}},e.prototype._initSelectedMapFromData=function(t){if(!this.option.selectedMap){var e=[];t.hasItemOption&&t.each((function(n){var i=t.getRawDataItem(n);i&&i.selected&&e.push(n)})),e.length>0&&this._innerSelect(t,e)}},e.registerClass=function(t){return Tp.registerClass(t)},e.protoInitialize=function(){var t=e.prototype;t.type="series.__base__",t.seriesIndex=0,t.ignoreStyleOnData=!1,t.hasSymbolVisual=!1,t.defaultSymbol="circle",t.visualStyleAccessPath="itemStyle",t.visualDrawType="fill"}(),e}(Tp);function lg(t){var e=t.name;_o(t)||(t.name=function(t){var e=t.getRawData(),n=e.mapDimensionsAll("seriesName"),i=[];return E(n,(function(t){var n=e.getDimensionInfo(t);n.displayName&&i.push(n.displayName)})),i.join(" ")}(t)||e)}function ug(t){return t.model.getRawData().count()}function hg(t){var e=t.model;return e.setData(e.getRawData().cloneShallow()),cg}function cg(t,e){e.outputData&&t.end>e.outputData.count()&&e.model.getRawData().cloneShallow(e.outputData)}function pg(t,e){E(gt(t.CHANGABLE_METHODS,t.DOWNSAMPLE_METHODS),(function(n){t.wrapMethod(n,H(dg,e))}))}function dg(t,e){var n=fg(t);return n&&n.setOutputEnd((e||this).count()),e}function fg(t){var e=(t.ecModel||{}).scheduler,n=e&&e.getPipeline(t.uid);if(n){var i=n.currentTask;if(i){var r=i.agentStubMap;r&&(i=r.get(t.uid))}return i}}R(sg,lf),R(sg,td),zo(sg,Tp);var gg=function(){function t(){this.group=new Cr,this.uid=gc("viewComponent")}return t.prototype.init=function(t,e){},t.prototype.render=function(t,e,n,i){},t.prototype.dispose=function(t,e){},t.prototype.updateView=function(t,e,n,i){},t.prototype.updateLayout=function(t,e,n,i){},t.prototype.updateVisual=function(t,e,n,i){},t.prototype.toggleBlurSeries=function(t,e,n){},t.prototype.eachRendered=function(t){var e=this.group;e&&e.traverse(t)},t}();function yg(){var t=So();return function(e){var n=t(e),i=e.pipelineContext,r=!!n.large,o=!!n.progressiveRender,a=n.large=!(!i||!i.large),s=n.progressiveRender=!(!i||!i.progressiveRender);return!(r===a&&o===s)&&"reset"}}Eo(gg),Go(gg);var vg=So(),mg=yg(),xg=function(){function t(){this.group=new Cr,this.uid=gc("viewChart"),this.renderTask=hf({plan:wg,reset:Sg}),this.renderTask.context={view:this}}return t.prototype.init=function(t,e){},t.prototype.render=function(t,e,n,i){0},t.prototype.highlight=function(t,e,n,i){var r=t.getData(i&&i.dataType);r&&bg(r,i,"emphasis")},t.prototype.downplay=function(t,e,n,i){var r=t.getData(i&&i.dataType);r&&bg(r,i,"normal")},t.prototype.remove=function(t,e){this.group.removeAll()},t.prototype.dispose=function(t,e){},t.prototype.updateView=function(t,e,n,i){this.render(t,e,n,i)},t.prototype.updateLayout=function(t,e,n,i){this.render(t,e,n,i)},t.prototype.updateVisual=function(t,e,n,i){this.render(t,e,n,i)},t.prototype.eachRendered=function(t){Vh(this.group,t)},t.markUpdateMethod=function(t,e){vg(t).updateMethod=e},t.protoInitialize=void(t.prototype.type="chart"),t}();function _g(t,e,n){t&&Fl(t)&&("emphasis"===e?_l:bl)(t,n)}function bg(t,e,n){var i=wo(t,e),r=e&&null!=e.highlightKey?function(t){var e=Xs[t];return null==e&&Us<=32&&(e=Xs[t]=Us++),e}(e.highlightKey):null;null!=i?E(ho(i),(function(e){_g(t.getItemGraphicEl(e),n,r)})):t.eachItemGraphicEl((function(t){_g(t,n,r)}))}function wg(t){return mg(t.model)}function Sg(t){var e=t.model,n=t.ecModel,i=t.api,r=t.payload,o=e.pipelineContext.progressiveRender,a=t.view,s=r&&vg(r).updateMethod,l=o?"incrementalPrepareRender":s&&a[s]?s:"render";return"render"!==l&&a[l](e,n,i,r),Mg[l]}Eo(xg),Go(xg);var Mg={incrementalPrepareRender:{progress:function(t,e){e.view.incrementalRender(t,e.model,e.ecModel,e.api,e.payload)}},render:{forceFirstProgress:!0,progress:function(t,e){e.view.render(e.model,e.ecModel,e.api,e.payload)}}},Ig="\0__throttleOriginMethod",Tg="\0__throttleRate",Cg="\0__throttleType";function Dg(t,e,n){var i,r,o,a,s,l=0,u=0,h=null;function c(){u=(new Date).getTime(),h=null,t.apply(o,a||[])}e=e||0;var p=function(){for(var t=[],p=0;p<arguments.length;p++)t[p]=arguments[p];i=(new Date).getTime(),o=this,a=t;var d=s||e,f=s||n;s=null,r=i-(f?l:u)-d,clearTimeout(h),f?h=setTimeout(c,d):r>=0?c():h=setTimeout(c,-r),l=i};return p.clear=function(){h&&(clearTimeout(h),h=null)},p.debounceNextCall=function(t){s=t},p}function Ag(t,e,n,i){var r=t[e];if(r){var o=r[Ig]||r,a=r[Cg];if(r[Tg]!==n||a!==i){if(null==n||!i)return t[e]=o;(r=t[e]=Dg(o,n,"debounce"===i))[Ig]=o,r[Cg]=i,r[Tg]=n}return r}}function kg(t,e){var n=t[e];n&&n[Ig]&&(n.clear&&n.clear(),t[e]=n[Ig])}var Lg=So(),Pg={itemStyle:Wo(hc,!0),lineStyle:Wo(sc,!0)},Og={lineStyle:"stroke",itemStyle:"fill"};function Rg(t,e){var n=t.visualStyleMapper||Pg[e];return n||(console.warn("Unkown style type '"+e+"'."),Pg.itemStyle)}function Ng(t,e){var n=t.visualDrawType||Og[e];return n||(console.warn("Unkown style type '"+e+"'."),"fill")}var Eg={createOnAllSeries:!0,performRawSeries:!0,reset:function(t,e){var n=t.getData(),i=t.visualStyleAccessPath||"itemStyle",r=t.getModel(i),o=Rg(t,i)(r),a=r.getShallow("decal");a&&(n.setVisual("decal",a),a.dirty=!0);var s=Ng(t,i),l=o[s],u=U(l)?l:null,h="auto"===o.fill||"auto"===o.stroke;if(!o[s]||u||h){var c=t.getColorFromPalette(t.name,null,e.getSeriesCount());o[s]||(o[s]=c,n.setVisual("colorFromPalette",!0)),o.fill="auto"===o.fill||U(o.fill)?c:o.fill,o.stroke="auto"===o.stroke||U(o.stroke)?c:o.stroke}if(n.setVisual("style",o),n.setVisual("drawType",s),!e.isSeriesFiltered(t)&&u)return n.setVisual("colorFromPalette",!1),{dataEach:function(e,n){var i=t.getDataParams(n),r=A({},o);r[s]=u(i),e.setItemVisual(n,"style",r)}}}},zg=new dc,Vg={createOnAllSeries:!0,performRawSeries:!0,reset:function(t,e){if(!t.ignoreStyleOnData&&!e.isSeriesFiltered(t)){var n=t.getData(),i=t.visualStyleAccessPath||"itemStyle",r=Rg(t,i),o=n.getVisual("drawType");return{dataEach:n.hasItemOption?function(t,e){var n=t.getRawDataItem(e);if(n&&n[i]){zg.option=n[i];var a=r(zg);A(t.ensureUniqueItemVisual(e,"style"),a),zg.option.decal&&(t.setItemVisual(e,"decal",zg.option.decal),zg.option.decal.dirty=!0),o in a&&t.setItemVisual(e,"colorFromPalette",!1)}}:null}}}},Bg={performRawSeries:!0,overallReset:function(t){var e=ft();t.eachSeries((function(t){var n=t.getColorBy();if(!t.isColorBySeries()){var i=t.type+"-"+n,r=e.get(i);r||(r={},e.set(i,r)),Lg(t).scope=r}})),t.eachSeries((function(e){if(!e.isColorBySeries()&&!t.isSeriesFiltered(e)){var n=e.getRawData(),i={},r=e.getData(),o=Lg(e).scope,a=e.visualStyleAccessPath||"itemStyle",s=Ng(e,a);r.each((function(t){var e=r.getRawIndex(t);i[e]=t})),n.each((function(t){var a=i[t];if(r.getItemVisual(a,"colorFromPalette")){var l=r.ensureUniqueItemVisual(a,"style"),u=n.getName(t)||t+"",h=n.count();l[s]=e.getColorFromPalette(u,o,h)}}))}}))}},Fg=Math.PI;var Gg=function(){function t(t,e,n,i){this._stageTaskMap=ft(),this.ecInstance=t,this.api=e,n=this._dataProcessorHandlers=n.slice(),i=this._visualHandlers=i.slice(),this._allHandlers=n.concat(i)}return t.prototype.restoreData=function(t,e){t.restoreData(e),this._stageTaskMap.each((function(t){var e=t.overallTask;e&&e.dirty()}))},t.prototype.getPerformArgs=function(t,e){if(t.__pipeline){var n=this._pipelineMap.get(t.__pipeline.id),i=n.context,r=!e&&n.progressiveEnabled&&(!i||i.progressiveRender)&&t.__idxInPipeline>n.blockIndex?n.step:null,o=i&&i.modDataCount;return{step:r,modBy:null!=o?Math.ceil(o/r):null,modDataCount:o}}},t.prototype.getPipeline=function(t){return this._pipelineMap.get(t)},t.prototype.updateStreamModes=function(t,e){var n=this._pipelineMap.get(t.uid),i=t.getData().count(),r=n.progressiveEnabled&&e.incrementalPrepareRender&&i>=n.threshold,o=t.get("large")&&i>=t.get("largeThreshold"),a="mod"===t.get("progressiveChunkMode")?i:null;t.pipelineContext=n.context={progressiveRender:r,modDataCount:a,large:o}},t.prototype.restorePipelines=function(t){var e=this,n=e._pipelineMap=ft();t.eachSeries((function(t){var i=t.getProgressive(),r=t.uid;n.set(r,{id:r,head:null,tail:null,threshold:t.getProgressiveThreshold(),progressiveEnabled:i&&!(t.preventIncremental&&t.preventIncremental()),blockIndex:-1,step:Math.round(i||700),count:0}),e._pipe(t,t.dataTask)}))},t.prototype.prepareStageTasks=function(){var t=this._stageTaskMap,e=this.api.getModel(),n=this.api;E(this._allHandlers,(function(i){var r=t.get(i.uid)||t.set(i.uid,{}),o="";lt(!(i.reset&&i.overallReset),o),i.reset&&this._createSeriesStageTask(i,r,e,n),i.overallReset&&this._createOverallStageTask(i,r,e,n)}),this)},t.prototype.prepareView=function(t,e,n,i){var r=t.renderTask,o=r.context;o.model=e,o.ecModel=n,o.api=i,r.__block=!t.incrementalPrepareRender,this._pipe(e,r)},t.prototype.performDataProcessorTasks=function(t,e){this._performStageTasks(this._dataProcessorHandlers,t,e,{block:!0})},t.prototype.performVisualTasks=function(t,e,n){this._performStageTasks(this._visualHandlers,t,e,n)},t.prototype._performStageTasks=function(t,e,n,i){i=i||{};var r=!1,o=this;function a(t,e){return t.setDirty&&(!t.dirtyMap||t.dirtyMap.get(e.__pipeline.id))}E(t,(function(t,s){if(!i.visualType||i.visualType===t.visualType){var l=o._stageTaskMap.get(t.uid),u=l.seriesTaskMap,h=l.overallTask;if(h){var c,p=h.agentStubMap;p.each((function(t){a(i,t)&&(t.dirty(),c=!0)})),c&&h.dirty(),o.updatePayload(h,n);var d=o.getPerformArgs(h,i.block);p.each((function(t){t.perform(d)})),h.perform(d)&&(r=!0)}else u&&u.each((function(s,l){a(i,s)&&s.dirty();var u=o.getPerformArgs(s,i.block);u.skip=!t.performRawSeries&&e.isSeriesFiltered(s.context.model),o.updatePayload(s,n),s.perform(u)&&(r=!0)}))}})),this.unfinished=r||this.unfinished},t.prototype.performSeriesTasks=function(t){var e;t.eachSeries((function(t){e=t.dataTask.perform()||e})),this.unfinished=e||this.unfinished},t.prototype.plan=function(){this._pipelineMap.each((function(t){var e=t.tail;do{if(e.__block){t.blockIndex=e.__idxInPipeline;break}e=e.getUpstream()}while(e)}))},t.prototype.updatePayload=function(t,e){"remain"!==e&&(t.context.payload=e)},t.prototype._createSeriesStageTask=function(t,e,n,i){var r=this,o=e.seriesTaskMap,a=e.seriesTaskMap=ft(),s=t.seriesType,l=t.getTargetSeries;function u(e){var s=e.uid,l=a.set(s,o&&o.get(s)||hf({plan:Xg,reset:Zg,count:Kg}));l.context={model:e,ecModel:n,api:i,useClearVisual:t.isVisual&&!t.isLayout,plan:t.plan,reset:t.reset,scheduler:r},r._pipe(e,l)}t.createOnAllSeries?n.eachRawSeries(u):s?n.eachRawSeriesByType(s,u):l&&l(n,i).each(u)},t.prototype._createOverallStageTask=function(t,e,n,i){var r=this,o=e.overallTask=e.overallTask||hf({reset:Wg});o.context={ecModel:n,api:i,overallReset:t.overallReset,scheduler:r};var a=o.agentStubMap,s=o.agentStubMap=ft(),l=t.seriesType,u=t.getTargetSeries,h=!0,c=!1,p="";function d(t){var e=t.uid,n=s.set(e,a&&a.get(e)||(c=!0,hf({reset:Hg,onDirty:Ug})));n.context={model:t,overallProgress:h},n.agent=o,n.__block=h,r._pipe(t,n)}lt(!t.createOnAllSeries,p),l?n.eachRawSeriesByType(l,d):u?u(n,i).each(d):(h=!1,E(n.getSeries(),d)),c&&o.dirty()},t.prototype._pipe=function(t,e){var n=t.uid,i=this._pipelineMap.get(n);!i.head&&(i.head=e),i.tail&&i.tail.pipe(e),i.tail=e,e.__idxInPipeline=i.count++,e.__pipeline=i},t.wrapStageHandler=function(t,e){return U(t)&&(t={overallReset:t,seriesType:$g(t)}),t.uid=gc("stageHandler"),e&&(t.visualType=e),t},t}();function Wg(t){t.overallReset(t.ecModel,t.api,t.payload)}function Hg(t){return t.overallProgress&&Yg}function Yg(){this.agent.dirty(),this.getDownstream().dirty()}function Ug(){this.agent&&this.agent.dirty()}function Xg(t){return t.plan?t.plan(t.model,t.ecModel,t.api,t.payload):null}function Zg(t){t.useClearVisual&&t.data.clearAllVisual();var e=t.resetDefines=ho(t.reset(t.model,t.ecModel,t.api,t.payload));return e.length>1?z(e,(function(t,e){return qg(e)})):jg}var jg=qg(0);function qg(t){return function(e,n){var i=n.data,r=n.resetDefines[t];if(r&&r.dataEach)for(var o=e.start;o<e.end;o++)r.dataEach(i,o);else r&&r.progress&&r.progress(e,i)}}function Kg(t){return t.data.count()}function $g(t){Jg=null;try{t(Qg,ty)}catch(t){}return Jg}var Jg,Qg={},ty={};function ey(t,e){for(var n in e.prototype)t[n]=xt}ey(Qg,id),ey(ty,ld),Qg.eachSeriesByType=Qg.eachRawSeriesByType=function(t){Jg=t},Qg.eachComponent=function(t){"series"===t.mainType&&t.subType&&(Jg=t.subType)};var ny=["#37A2DA","#32C5E9","#67E0E3","#9FE6B8","#FFDB5C","#ff9f7f","#fb7293","#E062AE","#E690D1","#e7bcf3","#9d96f5","#8378EA","#96BFFF"],iy={color:ny,colorLayer:[["#37A2DA","#ffd85c","#fd7b5f"],["#37A2DA","#67E0E3","#FFDB5C","#ff9f7f","#E062AE","#9d96f5"],["#37A2DA","#32C5E9","#9FE6B8","#FFDB5C","#ff9f7f","#fb7293","#e7bcf3","#8378EA","#96BFFF"],ny]},ry="#B9B8CE",oy="#100C2A",ay=function(){return{axisLine:{lineStyle:{color:ry}},splitLine:{lineStyle:{color:"#484753"}},splitArea:{areaStyle:{color:["rgba(255,255,255,0.02)","rgba(255,255,255,0.05)"]}},minorSplitLine:{lineStyle:{color:"#20203B"}}}},sy=["#4992ff","#7cffb2","#fddd60","#ff6e76","#58d9f9","#05c091","#ff8a45","#8d48e3","#dd79ff"],ly={darkMode:!0,color:sy,backgroundColor:oy,axisPointer:{lineStyle:{color:"#817f91"},crossStyle:{color:"#817f91"},label:{color:"#fff"}},legend:{textStyle:{color:ry}},textStyle:{color:ry},title:{textStyle:{color:"#EEF1FA"},subtextStyle:{color:"#B9B8CE"}},toolbox:{iconStyle:{borderColor:ry}},dataZoom:{borderColor:"#71708A",textStyle:{color:ry},brushStyle:{color:"rgba(135,163,206,0.3)"},handleStyle:{color:"#353450",borderColor:"#C5CBE3"},moveHandleStyle:{color:"#B0B6C3",opacity:.3},fillerColor:"rgba(135,163,206,0.2)",emphasis:{handleStyle:{borderColor:"#91B7F2",color:"#4D587D"},moveHandleStyle:{color:"#636D9A",opacity:.7}},dataBackground:{lineStyle:{color:"#71708A",width:1},areaStyle:{color:"#71708A"}},selectedDataBackground:{lineStyle:{color:"#87A3CE"},areaStyle:{color:"#87A3CE"}}},visualMap:{textStyle:{color:ry}},timeline:{lineStyle:{color:ry},label:{color:ry},controlStyle:{color:ry,borderColor:ry}},calendar:{itemStyle:{color:oy},dayLabel:{color:ry},monthLabel:{color:ry},yearLabel:{color:ry}},timeAxis:ay(),logAxis:ay(),valueAxis:ay(),categoryAxis:ay(),line:{symbol:"circle"},graph:{color:sy},gauge:{title:{color:ry},axisLine:{lineStyle:{color:[[1,"rgba(207,212,219,0.2)"]]}},axisLabel:{color:ry},detail:{color:"#EEF1FA"}},candlestick:{itemStyle:{color:"#f64e56",color0:"#54ea92",borderColor:"#f64e56",borderColor0:"#54ea92"}}};ly.categoryAxis.splitLine.show=!1;var uy=function(){function t(){}return t.prototype.normalizeQuery=function(t){var e={},n={},i={};if(X(t)){var r=No(t);e.mainType=r.main||null,e.subType=r.sub||null}else{var o=["Index","Name","Id"],a={name:1,dataIndex:1,dataType:1};E(t,(function(t,r){for(var s=!1,l=0;l<o.length;l++){var u=o[l],h=r.lastIndexOf(u);if(h>0&&h===r.length-u.length){var c=r.slice(0,h);"data"!==c&&(e.mainType=c,e[u.toLowerCase()]=t,s=!0)}}a.hasOwnProperty(r)&&(n[r]=t,s=!0),s||(i[r]=t)}))}return{cptQuery:e,dataQuery:n,otherQuery:i}},t.prototype.filter=function(t,e){var n=this.eventInfo;if(!n)return!0;var i=n.targetEl,r=n.packedEvent,o=n.model,a=n.view;if(!o||!a)return!0;var s=e.cptQuery,l=e.dataQuery;return u(s,o,"mainType")&&u(s,o,"subType")&&u(s,o,"index","componentIndex")&&u(s,o,"name")&&u(s,o,"id")&&u(l,r,"name")&&u(l,r,"dataIndex")&&u(l,r,"dataType")&&(!a.filterForExposedEvent||a.filterForExposedEvent(t,e.otherQuery,i,r));function u(t,e,n,i){return null==t[n]||e[i||n]===t[n]}},t.prototype.afterTrigger=function(){this.eventInfo=null},t}(),hy=["symbol","symbolSize","symbolRotate","symbolOffset"],cy=hy.concat(["symbolKeepAspect"]),py={createOnAllSeries:!0,performRawSeries:!0,reset:function(t,e){var n=t.getData();if(t.legendIcon&&n.setVisual("legendIcon",t.legendIcon),t.hasSymbolVisual){for(var i={},r={},o=!1,a=0;a<hy.length;a++){var s=hy[a],l=t.get(s);U(l)?(o=!0,r[s]=l):i[s]=l}if(i.symbol=i.symbol||t.defaultSymbol,n.setVisual(A({legendIcon:t.legendIcon||i.symbol,symbolKeepAspect:t.get("symbolKeepAspect")},i)),!e.isSeriesFiltered(t)){var u=G(r);return{dataEach:o?function(e,n){for(var i=t.getRawValue(n),o=t.getDataParams(n),a=0;a<u.length;a++){var s=u[a];e.setItemVisual(n,s,r[s](i,o))}}:null}}}}},dy={createOnAllSeries:!0,performRawSeries:!0,reset:function(t,e){if(t.hasSymbolVisual&&!e.isSeriesFiltered(t))return{dataEach:t.getData().hasItemOption?function(t,e){for(var n=t.getItemModel(e),i=0;i<cy.length;i++){var r=cy[i],o=n.getShallow(r,!0);null!=o&&t.setItemVisual(e,r,o)}}:null}}};function fy(t,e,n){switch(n){case"color":return t.getItemVisual(e,"style")[t.getVisual("drawType")];case"opacity":return t.getItemVisual(e,"style").opacity;case"symbol":case"symbolSize":case"liftZ":return t.getItemVisual(e,n);default:0}}function gy(t,e){switch(e){case"color":return t.getVisual("style")[t.getVisual("drawType")];case"opacity":return t.getVisual("style").opacity;case"symbol":case"symbolSize":case"liftZ":return t.getVisual(e);default:0}}function yy(t,e,n,i){switch(n){case"color":t.ensureUniqueItemVisual(e,"style")[t.getVisual("drawType")]=i,t.setItemVisual(e,"colorFromPalette",!1);break;case"opacity":t.ensureUniqueItemVisual(e,"style").opacity=i;break;case"symbol":case"symbolSize":case"liftZ":t.setItemVisual(e,n,i);break;default:0}}function vy(t,e){function n(e,n){var i=[];return e.eachComponent({mainType:"series",subType:t,query:n},(function(t){i.push(t.seriesIndex)})),i}E([[t+"ToggleSelect","toggleSelect"],[t+"Select","select"],[t+"UnSelect","unselect"]],(function(t){e(t[0],(function(e,i,r){e=A({},e),r.dispatchAction(A(e,{type:t[1],seriesIndex:n(i,e)}))}))}))}function my(t,e,n,i,r){var o=t+e;n.isSilent(o)||i.eachComponent({mainType:"series",subType:"pie"},(function(t){for(var e=t.seriesIndex,i=t.option.selectedMap,a=r.selected,s=0;s<a.length;s++)if(a[s].seriesIndex===e){var l=t.getData(),u=wo(l,r.fromActionPayload);n.trigger(o,{type:o,seriesId:t.id,name:Y(u)?l.getName(u[0]):l.getName(u),selected:X(i)?i:A({},i)})}}))}function xy(t,e,n){for(var i;t&&(!e(t)||(i=t,!n));)t=t.__hostTarget||t.parent;return i}var _y=Math.round(9*Math.random()),by="function"==typeof Object.defineProperty,wy=function(){function t(){this._id="__ec_inner_"+_y++}return t.prototype.get=function(t){return this._guard(t)[this._id]},t.prototype.set=function(t,e){var n=this._guard(t);return by?Object.defineProperty(n,this._id,{value:e,enumerable:!1,configurable:!0}):n[this._id]=e,this},t.prototype.delete=function(t){return!!this.has(t)&&(delete this._guard(t)[this._id],!0)},t.prototype.has=function(t){return!!this._guard(t)[this._id]},t.prototype._guard=function(t){if(t!==Object(t))throw TypeError("Value of WeakMap is not a non-null object.");return t},t}(),Sy=gs.extend({type:"triangle",shape:{cx:0,cy:0,width:0,height:0},buildPath:function(t,e){var n=e.cx,i=e.cy,r=e.width/2,o=e.height/2;t.moveTo(n,i-o),t.lineTo(n+r,i+o),t.lineTo(n-r,i+o),t.closePath()}}),My=gs.extend({type:"diamond",shape:{cx:0,cy:0,width:0,height:0},buildPath:function(t,e){var n=e.cx,i=e.cy,r=e.width/2,o=e.height/2;t.moveTo(n,i-o),t.lineTo(n+r,i),t.lineTo(n,i+o),t.lineTo(n-r,i),t.closePath()}}),Iy=gs.extend({type:"pin",shape:{x:0,y:0,width:0,height:0},buildPath:function(t,e){var n=e.x,i=e.y,r=e.width/5*3,o=Math.max(r,e.height),a=r/2,s=a*a/(o-a),l=i-o+a+s,u=Math.asin(s/a),h=Math.cos(u)*a,c=Math.sin(u),p=Math.cos(u),d=.6*a,f=.7*a;t.moveTo(n-h,l+s),t.arc(n,l,a,Math.PI-u,2*Math.PI+u),t.bezierCurveTo(n+h-c*d,l+s+p*d,n,i-f,n,i),t.bezierCurveTo(n,i-f,n-h+c*d,l+s+p*d,n-h,l+s),t.closePath()}}),Ty=gs.extend({type:"arrow",shape:{x:0,y:0,width:0,height:0},buildPath:function(t,e){var n=e.height,i=e.width,r=e.x,o=e.y,a=i/3*2;t.moveTo(r,o),t.lineTo(r+a,o+n),t.lineTo(r,o+n/4*3),t.lineTo(r-a,o+n),t.lineTo(r,o),t.closePath()}}),Cy={line:function(t,e,n,i,r){r.x1=t,r.y1=e+i/2,r.x2=t+n,r.y2=e+i/2},rect:function(t,e,n,i,r){r.x=t,r.y=e,r.width=n,r.height=i},roundRect:function(t,e,n,i,r){r.x=t,r.y=e,r.width=n,r.height=i,r.r=Math.min(n,i)/4},square:function(t,e,n,i,r){var o=Math.min(n,i);r.x=t,r.y=e,r.width=o,r.height=o},circle:function(t,e,n,i,r){r.cx=t+n/2,r.cy=e+i/2,r.r=Math.min(n,i)/2},diamond:function(t,e,n,i,r){r.cx=t+n/2,r.cy=e+i/2,r.width=n,r.height=i},pin:function(t,e,n,i,r){r.x=t+n/2,r.y=e+i/2,r.width=n,r.height=i},arrow:function(t,e,n,i,r){r.x=t+n/2,r.y=e+i/2,r.width=n,r.height=i},triangle:function(t,e,n,i,r){r.cx=t+n/2,r.cy=e+i/2,r.width=n,r.height=i}},Dy={};E({line:zu,rect:Cs,roundRect:Cs,square:Cs,circle:hu,diamond:My,pin:Iy,arrow:Ty,triangle:Sy},(function(t,e){Dy[e]=new t}));var Ay=gs.extend({type:"symbol",shape:{symbolType:"",x:0,y:0,width:0,height:0},calculateTextPosition:function(t,e,n){var i=yr(t,e,n),r=this.shape;return r&&"pin"===r.symbolType&&"inside"===e.position&&(i.y=n.y+.4*n.height),i},buildPath:function(t,e,n){var i=e.symbolType;if("none"!==i){var r=Dy[i];r||(r=Dy[i="rect"]),Cy[i](e.x,e.y,e.width,e.height,r.shape),r.buildPath(t,r.shape,n)}}});function ky(t,e){if("image"!==this.type){var n=this.style;this.__isEmptyBrush?(n.stroke=t,n.fill=e||"#fff",n.lineWidth=2):"line"===this.shape.symbolType?n.stroke=t:n.fill=t,this.markRedraw()}}function Ly(t,e,n,i,r,o,a){var s,l=0===t.indexOf("empty");return l&&(t=t.substr(5,1).toLowerCase()+t.substr(6)),(s=0===t.indexOf("image://")?_h(t.slice(8),new sr(e,n,i,r),a?"center":"cover"):0===t.indexOf("path://")?xh(t.slice(7),{},new sr(e,n,i,r),a?"center":"cover"):new Ay({shape:{symbolType:t,x:e,y:n,width:i,height:r}})).__isEmptyBrush=l,s.setColor=ky,o&&s.setColor(o),s}function Py(t){return Y(t)||(t=[+t,+t]),[t[0]||0,t[1]||0]}function Oy(t,e){if(null!=t)return Y(t)||(t=[t,t]),[Er(t[0],e[0])||0,Er(rt(t[1],t[0]),e[1])||0]}function Ry(t,e,n){for(var i="radial"===e.type?function(t,e,n){var i=n.width,r=n.height,o=Math.min(i,r),a=null==e.x?.5:e.x,s=null==e.y?.5:e.y,l=null==e.r?.5:e.r;return e.global||(a=a*i+n.x,s=s*r+n.y,l*=o),t.createRadialGradient(a,s,0,a,s,l)}(t,e,n):function(t,e,n){var i=null==e.x?0:e.x,r=null==e.x2?1:e.x2,o=null==e.y?0:e.y,a=null==e.y2?0:e.y2;return e.global||(i=i*n.width+n.x,r=r*n.width+n.x,o=o*n.height+n.y,a=a*n.height+n.y),i=isNaN(i)?0:i,r=isNaN(r)?1:r,o=isNaN(o)?0:o,a=isNaN(a)?0:a,t.createLinearGradient(i,o,r,a)}(t,e,n),r=e.colorStops,o=0;o<r.length;o++)i.addColorStop(r[o].offset,r[o].color);return i}function Ny(t){return parseInt(t,10)}function Ey(t,e,n){var i=["width","height"][e],r=["clientWidth","clientHeight"][e],o=["paddingLeft","paddingTop"][e],a=["paddingRight","paddingBottom"][e];if(null!=n[i]&&"auto"!==n[i])return parseFloat(n[i]);var s=document.defaultView.getComputedStyle(t);return(t[r]||Ny(s[i])||Ny(t.style[i]))-(Ny(s[o])||0)-(Ny(s[a])||0)|0}function zy(t){var e,n,i=t.style,r=i.lineDash&&i.lineWidth>0&&(e=i.lineDash,n=i.lineWidth,e&&"solid"!==e&&n>0?"dashed"===e?[4*n,2*n]:"dotted"===e?[n]:j(e)?[e]:Y(e)?e:null:null),o=i.lineDashOffset;if(r){var a=i.strokeNoScale&&t.getLineScale?t.getLineScale():1;a&&1!==a&&(r=z(r,(function(t){return t/a})),o/=a)}return[r,o]}var Vy=new qa(!0);function By(t){var e=t.stroke;return!(null==e||"none"===e||!(t.lineWidth>0))}function Fy(t){return"string"==typeof t&&"none"!==t}function Gy(t){var e=t.fill;return null!=e&&"none"!==e}function Wy(t,e){if(null!=e.fillOpacity&&1!==e.fillOpacity){var n=t.globalAlpha;t.globalAlpha=e.fillOpacity*e.opacity,t.fill(),t.globalAlpha=n}else t.fill()}function Hy(t,e){if(null!=e.strokeOpacity&&1!==e.strokeOpacity){var n=t.globalAlpha;t.globalAlpha=e.strokeOpacity*e.opacity,t.stroke(),t.globalAlpha=n}else t.stroke()}function Yy(t,e,n){var i=Zo(e.image,e.__image,n);if(qo(i)){var r=t.createPattern(i,e.repeat||"repeat");if("function"==typeof DOMMatrix&&r&&r.setTransform){var o=new DOMMatrix;o.translateSelf(e.x||0,e.y||0),o.rotateSelf(0,0,(e.rotation||0)*_t),o.scaleSelf(e.scaleX||1,e.scaleY||1),r.setTransform(o)}return r}}var Uy=["shadowBlur","shadowOffsetX","shadowOffsetY"],Xy=[["lineCap","butt"],["lineJoin","miter"],["miterLimit",10]];function Zy(t,e,n,i,r){var o=!1;if(!i&&e===(n=n||{}))return!1;if(i||e.opacity!==n.opacity){Ky(t,r),o=!0;var a=Math.max(Math.min(e.opacity,1),0);t.globalAlpha=isNaN(a)?ua.opacity:a}(i||e.blend!==n.blend)&&(o||(Ky(t,r),o=!0),t.globalCompositeOperation=e.blend||ua.blend);for(var s=0;s<Uy.length;s++){var l=Uy[s];(i||e[l]!==n[l])&&(o||(Ky(t,r),o=!0),t[l]=t.dpr*(e[l]||0))}return(i||e.shadowColor!==n.shadowColor)&&(o||(Ky(t,r),o=!0),t.shadowColor=e.shadowColor||ua.shadowColor),o}function jy(t,e,n,i,r){var o=$y(e,r.inHover),a=i?null:n&&$y(n,r.inHover)||{};if(o===a)return!1;var s=Zy(t,o,a,i,r);if((i||o.fill!==a.fill)&&(s||(Ky(t,r),s=!0),Fy(o.fill)&&(t.fillStyle=o.fill)),(i||o.stroke!==a.stroke)&&(s||(Ky(t,r),s=!0),Fy(o.stroke)&&(t.strokeStyle=o.stroke)),(i||o.opacity!==a.opacity)&&(s||(Ky(t,r),s=!0),t.globalAlpha=null==o.opacity?1:o.opacity),e.hasStroke()){var l=o.lineWidth/(o.strokeNoScale&&e.getLineScale?e.getLineScale():1);t.lineWidth!==l&&(s||(Ky(t,r),s=!0),t.lineWidth=l)}for(var u=0;u<Xy.length;u++){var h=Xy[u],c=h[0];(i||o[c]!==a[c])&&(s||(Ky(t,r),s=!0),t[c]=o[c]||h[1])}return s}function qy(t,e){var n=e.transform,i=t.dpr||1;n?t.setTransform(i*n[0],i*n[1],i*n[2],i*n[3],i*n[4],i*n[5]):t.setTransform(i,0,0,i,0,0)}function Ky(t,e){e.batchFill&&t.fill(),e.batchStroke&&t.stroke(),e.batchFill="",e.batchStroke=""}function $y(t,e){return e&&t.__hoverStyle||t.style}function Jy(t,e){Qy(t,e,{inHover:!1,viewWidth:0,viewHeight:0},!0)}function Qy(t,e,n,i){var r=e.transform;if(!e.shouldBePainted(n.viewWidth,n.viewHeight,!1,!1))return e.__dirty&=-2,void(e.__isRendered=!1);var o=e.__clipPaths,s=n.prevElClipPaths,l=!1,u=!1;if(s&&!function(t,e){if(t===e||!t&&!e)return!1;if(!t||!e||t.length!==e.length)return!0;for(var n=0;n<t.length;n++)if(t[n]!==e[n])return!0;return!1}(o,s)||(s&&s.length&&(Ky(t,n),t.restore(),u=l=!0,n.prevElClipPaths=null,n.allClipped=!1,n.prevEl=null),o&&o.length&&(Ky(t,n),t.save(),function(t,e,n){for(var i=!1,r=0;r<t.length;r++){var o=t[r];i=i||o.isZeroArea(),qy(e,o),e.beginPath(),o.buildPath(e,o.shape),e.clip()}n.allClipped=i}(o,t,n),l=!0),n.prevElClipPaths=o),n.allClipped)e.__isRendered=!1;else{e.beforeBrush&&e.beforeBrush(),e.innerBeforeBrush();var h=n.prevEl;h||(u=l=!0);var c,p,d=e instanceof gs&&e.autoBatch&&function(t){var e=Gy(t),n=By(t);return!(t.lineDash||!(+e^+n)||e&&"string"!=typeof t.fill||n&&"string"!=typeof t.stroke||t.strokePercent<1||t.strokeOpacity<1||t.fillOpacity<1)}(e.style);l||(c=r,p=h.transform,c&&p?c[0]!==p[0]||c[1]!==p[1]||c[2]!==p[2]||c[3]!==p[3]||c[4]!==p[4]||c[5]!==p[5]:c||p)?(Ky(t,n),qy(t,e)):d||Ky(t,n);var f=$y(e,n.inHover);e instanceof gs?(1!==n.lastDrawType&&(u=!0,n.lastDrawType=1),jy(t,e,h,u,n),d&&(n.batchFill||n.batchStroke)||t.beginPath(),function(t,e,n,i){var r,o=By(n),a=Gy(n),s=n.strokePercent,l=s<1,u=!e.path;e.silent&&!l||!u||e.createPathProxy();var h=e.path||Vy,c=e.__dirty;if(!i){var p=n.fill,d=n.stroke,f=a&&!!p.colorStops,g=o&&!!d.colorStops,y=a&&!!p.image,v=o&&!!d.image,m=void 0,x=void 0,_=void 0,b=void 0,w=void 0;(f||g)&&(w=e.getBoundingRect()),f&&(m=c?Ry(t,p,w):e.__canvasFillGradient,e.__canvasFillGradient=m),g&&(x=c?Ry(t,d,w):e.__canvasStrokeGradient,e.__canvasStrokeGradient=x),y&&(_=c||!e.__canvasFillPattern?Yy(t,p,e):e.__canvasFillPattern,e.__canvasFillPattern=_),v&&(b=c||!e.__canvasStrokePattern?Yy(t,d,e):e.__canvasStrokePattern,e.__canvasStrokePattern=_),f?t.fillStyle=m:y&&(_?t.fillStyle=_:a=!1),g?t.strokeStyle=x:v&&(b?t.strokeStyle=b:o=!1)}var S,M,I=e.getGlobalScale();h.setScale(I[0],I[1],e.segmentIgnoreThreshold),t.setLineDash&&n.lineDash&&(S=(r=zy(e))[0],M=r[1]);var T=!0;(u||4&c)&&(h.setDPR(t.dpr),l?h.setContext(null):(h.setContext(t),T=!1),h.reset(),e.buildPath(h,e.shape,i),h.toStatic(),e.pathUpdated()),T&&h.rebuildPath(t,l?s:1),S&&(t.setLineDash(S),t.lineDashOffset=M),i||(n.strokeFirst?(o&&Hy(t,n),a&&Wy(t,n)):(a&&Wy(t,n),o&&Hy(t,n))),S&&t.setLineDash([])}(t,e,f,d),d&&(n.batchFill=f.fill||"",n.batchStroke=f.stroke||"")):e instanceof vs?(3!==n.lastDrawType&&(u=!0,n.lastDrawType=3),jy(t,e,h,u,n),function(t,e,n){var i,r=n.text;if(null!=r&&(r+=""),r){t.font=n.font||a,t.textAlign=n.textAlign,t.textBaseline=n.textBaseline;var o=void 0,s=void 0;t.setLineDash&&n.lineDash&&(o=(i=zy(e))[0],s=i[1]),o&&(t.setLineDash(o),t.lineDashOffset=s),n.strokeFirst?(By(n)&&t.strokeText(r,n.x,n.y),Gy(n)&&t.fillText(r,n.x,n.y)):(Gy(n)&&t.fillText(r,n.x,n.y),By(n)&&t.strokeText(r,n.x,n.y)),o&&t.setLineDash([])}}(t,e,f)):e instanceof _s?(2!==n.lastDrawType&&(u=!0,n.lastDrawType=2),function(t,e,n,i,r){Zy(t,$y(e,r.inHover),n&&$y(n,r.inHover),i,r)}(t,e,h,u,n),function(t,e,n){var i=e.__image=Zo(n.image,e.__image,e,e.onload);if(i&&qo(i)){var r=n.x||0,o=n.y||0,a=e.getWidth(),s=e.getHeight(),l=i.width/i.height;if(null==a&&null!=s?a=s*l:null==s&&null!=a?s=a/l:null==a&&null==s&&(a=i.width,s=i.height),n.sWidth&&n.sHeight){var u=n.sx||0,h=n.sy||0;t.drawImage(i,u,h,n.sWidth,n.sHeight,r,o,a,s)}else if(n.sx&&n.sy){var c=a-(u=n.sx),p=s-(h=n.sy);t.drawImage(i,u,h,c,p,r,o,a,s)}else t.drawImage(i,r,o,a,s)}}(t,e,f)):e.getTemporalDisplayables&&(4!==n.lastDrawType&&(u=!0,n.lastDrawType=4),function(t,e,n){var i=e.getDisplayables(),r=e.getTemporalDisplayables();t.save();var o,a,s={prevElClipPaths:null,prevEl:null,allClipped:!1,viewWidth:n.viewWidth,viewHeight:n.viewHeight,inHover:n.inHover};for(o=e.getCursor(),a=i.length;o<a;o++){(h=i[o]).beforeBrush&&h.beforeBrush(),h.innerBeforeBrush(),Qy(t,h,s,o===a-1),h.innerAfterBrush(),h.afterBrush&&h.afterBrush(),s.prevEl=h}for(var l=0,u=r.length;l<u;l++){var h;(h=r[l]).beforeBrush&&h.beforeBrush(),h.innerBeforeBrush(),Qy(t,h,s,l===u-1),h.innerAfterBrush(),h.afterBrush&&h.afterBrush(),s.prevEl=h}e.clearTemporalDisplayables(),e.notClear=!0,t.restore()}(t,e,n)),d&&i&&Ky(t,n),e.innerAfterBrush(),e.afterBrush&&e.afterBrush(),n.prevEl=e,e.__dirty=0,e.__isRendered=!0}}var tv=new wy,ev=new ln(100),nv=["symbol","symbolSize","symbolKeepAspect","color","backgroundColor","dashArrayX","dashArrayY","maxTileWidth","maxTileHeight"];function iv(t,e){if("none"===t)return null;var n=e.getDevicePixelRatio(),i=e.getZr(),r="svg"===i.painter.type;t.dirty&&tv.delete(t);var o=tv.get(t);if(o)return o;var a=k(t,{symbol:"rect",symbolSize:1,symbolKeepAspect:!0,color:"rgba(0, 0, 0, 0.2)",backgroundColor:null,dashArrayX:5,dashArrayY:5,rotation:0,maxTileWidth:512,maxTileHeight:512});"none"===a.backgroundColor&&(a.backgroundColor=null);var s={repeat:"repeat"};return function(t){for(var e,o=[n],s=!0,l=0;l<nv.length;++l){var u=a[nv[l]];if(null!=u&&!Y(u)&&!X(u)&&!j(u)&&"boolean"!=typeof u){s=!1;break}o.push(u)}if(s){e=o.join(",")+(r?"-svg":"");var c=ev.get(e);c&&(r?t.svgElement=c:t.image=c)}var p,d=ov(a.dashArrayX),f=function(t){if(!t||"object"==typeof t&&0===t.length)return[0,0];if(j(t)){var e=Math.ceil(t);return[e,e]}var n=z(t,(function(t){return Math.ceil(t)}));return t.length%2?n.concat(n):n}(a.dashArrayY),g=rv(a.symbol),y=(b=d,z(b,(function(t){return av(t)}))),v=av(f),m=!r&&h.createCanvas(),x=r&&{tag:"g",attrs:{},key:"dcl",children:[]},_=function(){for(var t=1,e=0,n=y.length;e<n;++e)t=ro(t,y[e]);var i=1;for(e=0,n=g.length;e<n;++e)i=ro(i,g[e].length);t*=i;var r=v*y.length*g.length;return{width:Math.max(1,Math.min(t,a.maxTileWidth)),height:Math.max(1,Math.min(r,a.maxTileHeight))}}();var b;m&&(m.width=_.width*n,m.height=_.height*n,p=m.getContext("2d"));(function(){p&&(p.clearRect(0,0,m.width,m.height),a.backgroundColor&&(p.fillStyle=a.backgroundColor,p.fillRect(0,0,m.width,m.height)));for(var t=0,e=0;e<f.length;++e)t+=f[e];if(t<=0)return;var o=-v,s=0,l=0,u=0;for(;o<_.height;){if(s%2==0){for(var h=l/2%g.length,c=0,y=0,b=0;c<2*_.width;){var w=0;for(e=0;e<d[u].length;++e)w+=d[u][e];if(w<=0)break;if(y%2==0){var S=.5*(1-a.symbolSize),M=c+d[u][y]*S,I=o+f[s]*S,T=d[u][y]*a.symbolSize,C=f[s]*a.symbolSize,D=b/2%g[h].length;A(M,I,T,C,g[h][D])}c+=d[u][y],++b,++y===d[u].length&&(y=0)}++u===d.length&&(u=0)}o+=f[s],++l,++s===f.length&&(s=0)}function A(t,e,o,s,l){var u=r?1:n,h=Ly(l,t*u,e*u,o*u,s*u,a.color,a.symbolKeepAspect);if(r){var c=i.painter.renderOneToVNode(h);c&&x.children.push(c)}else Jy(p,h)}})(),s&&ev.put(e,m||x);t.image=m,t.svgElement=x,t.svgWidth=_.width,t.svgHeight=_.height}(s),s.rotation=a.rotation,s.scaleX=s.scaleY=r?1:1/n,tv.set(t,s),t.dirty=!1,s}function rv(t){if(!t||0===t.length)return[["rect"]];if(X(t))return[[t]];for(var e=!0,n=0;n<t.length;++n)if(!X(t[n])){e=!1;break}if(e)return rv([t]);var i=[];for(n=0;n<t.length;++n)X(t[n])?i.push([t[n]]):i.push(t[n]);return i}function ov(t){if(!t||0===t.length)return[[0,0]];if(j(t))return[[r=Math.ceil(t),r]];for(var e=!0,n=0;n<t.length;++n)if(!j(t[n])){e=!1;break}if(e)return ov([t]);var i=[];for(n=0;n<t.length;++n)if(j(t[n])){var r=Math.ceil(t[n]);i.push([r,r])}else{(r=z(t[n],(function(t){return Math.ceil(t)}))).length%2==1?i.push(r.concat(r)):i.push(r)}return i}function av(t){for(var e=0,n=0;n<t.length;++n)e+=t[n];return t.length%2==1?2*e:e}var sv=new Xt,lv={};function uv(t){return lv[t]}var hv="undefined"!=typeof window,cv=2e3,pv=4500,dv={PROCESSOR:{FILTER:1e3,SERIES_FILTER:800,STATISTIC:5e3},VISUAL:{LAYOUT:1e3,PROGRESSIVE_LAYOUT:1100,GLOBAL:cv,CHART:3e3,POST_CHART_LAYOUT:4600,COMPONENT:4e3,BRUSH:5e3,CHART_ITEM:pv,ARIA:6e3,DECAL:7e3}},fv=/^[a-zA-Z0-9_]+$/,gv="__connectUpdateStatus";function yv(t){return function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];if(!this.isDisposed())return mv(this,t,e);Wv(this.id)}}function vv(t){return function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return mv(this,t,e)}}function mv(t,e,n){return n[0]=n[0]&&n[0].toLowerCase(),Xt.prototype[e].apply(t,n)}var xv,_v,bv,wv,Sv,Mv,Iv,Tv,Cv,Dv,Av,kv,Lv,Pv,Ov,Rv,Nv,Ev,zv=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e}(Xt),Vv=zv.prototype;Vv.on=vv("on"),Vv.off=vv("off");var Bv=function(t){function e(e,n,i){var r=t.call(this,new uy)||this;r._chartsViews=[],r._chartsMap={},r._componentsViews=[],r._componentsMap={},r._pendingActions=[],i=i||{},X(n)&&(n=jv[n]),r._dom=e;var o="canvas",a=!1,s=r._zr=Lr(e,{renderer:i.renderer||o,devicePixelRatio:i.devicePixelRatio,width:i.width,height:i.height,ssr:i.ssr,useDirtyRect:null==i.useDirtyRect?a:i.useDirtyRect});r._ssr=i.ssr,r._throttledZrFlush=Dg(W(s.flush,s),17),(n=T(n))&&Od(n,!0),r._theme=n,r._locale=function(t){if(X(t)){var e=_c[t.toUpperCase()]||{};return t===vc||t===mc?T(e):C(T(e),T(_c.EN),!1)}return C(T(t),T(_c.EN),!1)}(i.locale||wc),r._coordSysMgr=new hd;var l=r._api=Ov(r);function u(t,e){return t.__prio-e.__prio}return Ie(Zv,u),Ie(Uv,u),r._scheduler=new Gg(r,l,Uv,Zv),r._messageCenter=new zv,r._initEvents(),r.resize=W(r.resize,r),s.animation.on("frame",r._onframe,r),Dv(s,r),Av(s,r),ct(r),r}return n(e,t),e.prototype._onframe=function(){if(!this._disposed){Ev(this);var t=this._scheduler;if(this.__pendingUpdate){var e=this.__pendingUpdate.silent;this.__flagInMainProcess=!0;try{xv(this),wv.update.call(this,null,this.__pendingUpdate.updateParams)}catch(t){throw this.__flagInMainProcess=!1,this.__pendingUpdate=null,t}this._zr.flush(),this.__flagInMainProcess=!1,this.__pendingUpdate=null,Tv.call(this,e),Cv.call(this,e)}else if(t.unfinished){var n=1,i=this._model,r=this._api;t.unfinished=!1;do{var o=+new Date;t.performSeriesTasks(i),t.performDataProcessorTasks(i),Mv(this,i),t.performVisualTasks(i),Pv(this,this._model,r,"remain",{}),n-=+new Date-o}while(n>0&&t.unfinished);t.unfinished||this._zr.flush()}}},e.prototype.getDom=function(){return this._dom},e.prototype.getId=function(){return this.id},e.prototype.getZr=function(){return this._zr},e.prototype.isSSR=function(){return this._ssr},e.prototype.setOption=function(t,e,n){if(!this.__flagInMainProcess)if(this._disposed)Wv(this.id);else{var i,r,o;if(q(e)&&(n=e.lazyUpdate,i=e.silent,r=e.replaceMerge,o=e.transition,e=e.notMerge),this.__flagInMainProcess=!0,!this._model||e){var a=new pd(this._api),s=this._theme,l=this._model=new id;l.scheduler=this._scheduler,l.ssr=this._ssr,l.init(null,null,null,s,this._locale,a)}this._model.setOption(t,{replaceMerge:r},Xv);var u={seriesTransition:o,optionChanged:!0};if(n)this.__pendingUpdate={silent:i,updateParams:u},this.__flagInMainProcess=!1,this.getZr().wakeUp();else{try{xv(this),wv.update.call(this,null,u)}catch(t){throw this.__pendingUpdate=null,this.__flagInMainProcess=!1,t}this._ssr||this._zr.flush(),this.__pendingUpdate=null,this.__flagInMainProcess=!1,Tv.call(this,i),Cv.call(this,i)}}},e.prototype.setTheme=function(){oo()},e.prototype.getModel=function(){return this._model},e.prototype.getOption=function(){return this._model&&this._model.getOption()},e.prototype.getWidth=function(){return this._zr.getWidth()},e.prototype.getHeight=function(){return this._zr.getHeight()},e.prototype.getDevicePixelRatio=function(){return this._zr.painter.dpr||hv&&window.devicePixelRatio||1},e.prototype.getRenderedCanvas=function(t){return this.renderToCanvas(t)},e.prototype.renderToCanvas=function(t){t=t||{};var e=this._zr.painter;return e.getRenderedCanvas({backgroundColor:t.backgroundColor||this._model.get("backgroundColor"),pixelRatio:t.pixelRatio||this.getDevicePixelRatio()})},e.prototype.renderToSVGString=function(t){t=t||{};var e=this._zr.painter;return e.renderToString({useViewBox:t.useViewBox})},e.prototype.getSvgDataURL=function(){if(r.svgSupported){var t=this._zr;return E(t.storage.getDisplayList(),(function(t){t.stopAnimation(null,!0)})),t.painter.toDataURL()}},e.prototype.getDataURL=function(t){if(!this._disposed){var e=(t=t||{}).excludeComponents,n=this._model,i=[],r=this;E(e,(function(t){n.eachComponent({mainType:t},(function(t){var e=r._componentsMap[t.__viewId];e.group.ignore||(i.push(e),e.group.ignore=!0)}))}));var o="svg"===this._zr.painter.getType()?this.getSvgDataURL():this.renderToCanvas(t).toDataURL("image/"+(t&&t.type||"png"));return E(i,(function(t){t.group.ignore=!1})),o}Wv(this.id)},e.prototype.getConnectedDataURL=function(t){if(!this._disposed){var e="svg"===t.type,n=this.group,i=Math.min,r=Math.max,o=1/0;if($v[n]){var a=o,s=o,l=-1/0,u=-1/0,c=[],p=t&&t.pixelRatio||this.getDevicePixelRatio();E(Kv,(function(o,h){if(o.group===n){var p=e?o.getZr().painter.getSvgDom().innerHTML:o.renderToCanvas(T(t)),d=o.getDom().getBoundingClientRect();a=i(d.left,a),s=i(d.top,s),l=r(d.right,l),u=r(d.bottom,u),c.push({dom:p,left:d.left,top:d.top})}}));var d=(l*=p)-(a*=p),f=(u*=p)-(s*=p),g=h.createCanvas(),y=Lr(g,{renderer:e?"svg":"canvas"});if(y.resize({width:d,height:f}),e){var v="";return E(c,(function(t){var e=t.left-a,n=t.top-s;v+='<g transform="translate('+e+","+n+')">'+t.dom+"</g>"})),y.painter.getSvgRoot().innerHTML=v,t.connectedBackgroundColor&&y.painter.setBackgroundColor(t.connectedBackgroundColor),y.refreshImmediately(),y.painter.toDataURL()}return t.connectedBackgroundColor&&y.add(new Cs({shape:{x:0,y:0,width:d,height:f},style:{fill:t.connectedBackgroundColor}})),E(c,(function(t){var e=new _s({style:{x:t.left*p-a,y:t.top*p-s,image:t.dom}});y.add(e)})),y.refreshImmediately(),g.toDataURL("image/"+(t&&t.type||"png"))}return this.getDataURL(t)}Wv(this.id)},e.prototype.convertToPixel=function(t,e){return Sv(this,"convertToPixel",t,e)},e.prototype.convertFromPixel=function(t,e){return Sv(this,"convertFromPixel",t,e)},e.prototype.containPixel=function(t,e){var n;if(!this._disposed)return E(Io(this._model,t),(function(t,i){i.indexOf("Models")>=0&&E(t,(function(t){var r=t.coordinateSystem;if(r&&r.containPoint)n=n||!!r.containPoint(e);else if("seriesModels"===i){var o=this._chartsMap[t.__viewId];o&&o.containPoint&&(n=n||o.containPoint(e,t))}else 0}),this)}),this),!!n;Wv(this.id)},e.prototype.getVisual=function(t,e){var n=Io(this._model,t,{defaultMainType:"series"}),i=n.seriesModel;var r=i.getData(),o=n.hasOwnProperty("dataIndexInside")?n.dataIndexInside:n.hasOwnProperty("dataIndex")?r.indexOfRawIndex(n.dataIndex):null;return null!=o?fy(r,o,e):gy(r,e)},e.prototype.getViewOfComponentModel=function(t){return this._componentsMap[t.__viewId]},e.prototype.getViewOfSeriesModel=function(t){return this._chartsMap[t.__viewId]},e.prototype._initEvents=function(){var t,e,n,i=this;E(Gv,(function(t){var e=function(e){var n,r=i.getModel(),o=e.target,a="globalout"===t;if(a?n={}:o&&xy(o,(function(t){var e=Hs(t);if(e&&null!=e.dataIndex){var i=e.dataModel||r.getSeriesByIndex(e.seriesIndex);return n=i&&i.getDataParams(e.dataIndex,e.dataType)||{},!0}if(e.eventData)return n=A({},e.eventData),!0}),!0),n){var s=n.componentType,l=n.componentIndex;"markLine"!==s&&"markPoint"!==s&&"markArea"!==s||(s="series",l=n.seriesIndex);var u=s&&null!=l&&r.getComponent(s,l),h=u&&i["series"===u.mainType?"_chartsMap":"_componentsMap"][u.__viewId];0,n.event=e,n.type=t,i._$eventProcessor.eventInfo={targetEl:o,packedEvent:n,model:u,view:h},i.trigger(t,n)}};e.zrEventfulCallAtLast=!0,i._zr.on(t,e,i)})),E(Yv,(function(t,e){i._messageCenter.on(e,(function(t){this.trigger(e,t)}),i)})),E(["selectchanged"],(function(t){i._messageCenter.on(t,(function(e){this.trigger(t,e)}),i)})),t=this._messageCenter,e=this,n=this._api,t.on("selectchanged",(function(t){var i=n.getModel();t.isFromClick?(my("map","selectchanged",e,i,t),my("pie","selectchanged",e,i,t)):"select"===t.fromAction?(my("map","selected",e,i,t),my("pie","selected",e,i,t)):"unselect"===t.fromAction&&(my("map","unselected",e,i,t),my("pie","unselected",e,i,t))}))},e.prototype.isDisposed=function(){return this._disposed},e.prototype.clear=function(){this._disposed?Wv(this.id):this.setOption({series:[]},!0)},e.prototype.dispose=function(){if(this._disposed)Wv(this.id);else{this._disposed=!0,this.getDom()&&ko(this.getDom(),tm,"");var t=this,e=t._api,n=t._model;E(t._componentsViews,(function(t){t.dispose(n,e)})),E(t._chartsViews,(function(t){t.dispose(n,e)})),t._zr.dispose(),t._dom=t._model=t._chartsMap=t._componentsMap=t._chartsViews=t._componentsViews=t._scheduler=t._api=t._zr=t._throttledZrFlush=t._theme=t._coordSysMgr=t._messageCenter=null,delete Kv[t.id]}},e.prototype.resize=function(t){if(!this.__flagInMainProcess)if(this._disposed)Wv(this.id);else{this._zr.resize(t);var e=this._model;if(this._loadingFX&&this._loadingFX.resize(),e){var n=e.resetOption("media"),i=t&&t.silent;this.__pendingUpdate&&(null==i&&(i=this.__pendingUpdate.silent),n=!0,this.__pendingUpdate=null),this.__flagInMainProcess=!0;try{n&&xv(this),wv.update.call(this,{type:"resize",animation:A({duration:0},t&&t.animation)})}catch(t){throw this.__flagInMainProcess=!1,t}this.__flagInMainProcess=!1,Tv.call(this,i),Cv.call(this,i)}}},e.prototype.showLoading=function(t,e){if(this._disposed)Wv(this.id);else if(q(t)&&(e=t,t=""),t=t||"default",this.hideLoading(),qv[t]){var n=qv[t](this._api,e),i=this._zr;this._loadingFX=n,i.add(n)}},e.prototype.hideLoading=function(){this._disposed?Wv(this.id):(this._loadingFX&&this._zr.remove(this._loadingFX),this._loadingFX=null)},e.prototype.makeActionFromEvent=function(t){var e=A({},t);return e.type=Yv[t.type],e},e.prototype.dispatchAction=function(t,e){if(this._disposed)Wv(this.id);else if(q(e)||(e={silent:!!e}),Hv[t.type]&&this._model)if(this.__flagInMainProcess)this._pendingActions.push(t);else{var n=e.silent;Iv.call(this,t,n);var i=e.flush;i?this._zr.flush():!1!==i&&r.browser.weChat&&this._throttledZrFlush(),Tv.call(this,n),Cv.call(this,n)}},e.prototype.updateLabelLayout=function(){sv.trigger("series:layoutlabels",this._model,this._api,{updatedSeries:[]})},e.prototype.appendData=function(t){if(this._disposed)Wv(this.id);else{var e=t.seriesIndex,n=this.getModel().getSeriesByIndex(e);0,n.appendData(t),this._scheduler.unfinished=!0,this.getZr().wakeUp()}},e.internalField=function(){function t(t){t.clearColorPalette(),t.eachSeries((function(t){t.clearColorPalette()}))}function e(t){for(var e=[],n=t.currentStates,i=0;i<n.length;i++){var r=n[i];"emphasis"!==r&&"blur"!==r&&"select"!==r&&e.push(r)}t.selected&&t.states.select&&e.push("select"),2===t.hoverState&&t.states.emphasis?e.push("emphasis"):1===t.hoverState&&t.states.blur&&e.push("blur"),t.useStates(e)}function i(t,e){if(!t.preventAutoZ){var n=t.get("z")||0,i=t.get("zlevel")||0;e.eachRendered((function(t){return o(t,n,i,-1/0),!0}))}}function o(t,e,n,i){var r=t.getTextContent(),a=t.getTextGuideLine();if(t.isGroup)for(var s=t.childrenRef(),l=0;l<s.length;l++)i=Math.max(o(s[l],e,n,i),i);else t.z=e,t.zlevel=n,i=Math.max(t.z2,i);if(r&&(r.z=e,r.zlevel=n,isFinite(i)&&(r.z2=i+2)),a){var u=t.textGuideLineConfig;a.z=e,a.zlevel=n,isFinite(i)&&(a.z2=i+(u&&u.showAbove?1:-1))}return i}function a(t,e){e.eachRendered((function(t){if(!ah(t)){var e=t.getTextContent(),n=t.getTextGuideLine();t.stateTransition&&(t.stateTransition=null),e&&e.stateTransition&&(e.stateTransition=null),n&&n.stateTransition&&(n.stateTransition=null),t.hasState()?(t.prevStates=t.currentStates,t.clearStates()):t.prevStates&&(t.prevStates=null)}}))}function s(t,n){var i=t.getModel("stateAnimation"),r=t.isAnimationEnabled(),o=i.get("duration"),a=o>0?{duration:o,delay:i.get("delay"),easing:i.get("easing")}:null;n.eachRendered((function(t){if(t.states&&t.states.emphasis){if(ah(t))return;if(t instanceof gs&&function(t){var e=Zs(t);e.normalFill=t.style.fill,e.normalStroke=t.style.stroke;var n=t.states.select||{};e.selectFill=n.style&&n.style.fill||null,e.selectStroke=n.style&&n.style.stroke||null}(t),t.__dirty){var n=t.prevStates;n&&t.useStates(n)}if(r){t.stateTransition=a;var i=t.getTextContent(),o=t.getTextGuideLine();i&&(i.stateTransition=a),o&&(o.stateTransition=a)}t.__dirty&&e(t)}}))}xv=function(t){var e=t._scheduler;e.restorePipelines(t._model),e.prepareStageTasks(),_v(t,!0),_v(t,!1),e.plan()},_v=function(t,e){for(var n=t._model,i=t._scheduler,r=e?t._componentsViews:t._chartsViews,o=e?t._componentsMap:t._chartsMap,a=t._zr,s=t._api,l=0;l<r.length;l++)r[l].__alive=!1;function u(t){var l=t.__requireNewView;t.__requireNewView=!1;var u="_ec_"+t.id+"_"+t.type,h=!l&&o[u];if(!h){var c=No(t.type),p=e?gg.getClass(c.main,c.sub):xg.getClass(c.sub);0,(h=new p).init(n,s),o[u]=h,r.push(h),a.add(h.group)}t.__viewId=h.__id=u,h.__alive=!0,h.__model=t,h.group.__ecComponentInfo={mainType:t.mainType,index:t.componentIndex},!e&&i.prepareView(h,t,n,s)}e?n.eachComponent((function(t,e){"series"!==t&&u(e)})):n.eachSeries(u);for(l=0;l<r.length;){var h=r[l];h.__alive?l++:(!e&&h.renderTask.dispose(),a.remove(h.group),h.dispose(n,s),r.splice(l,1),o[h.__id]===h&&delete o[h.__id],h.__id=h.group.__ecComponentInfo=null)}},bv=function(t,e,n,i,r){var o=t._model;if(o.setUpdatePayload(n),i){var a={};a[i+"Id"]=n[i+"Id"],a[i+"Index"]=n[i+"Index"],a[i+"Name"]=n[i+"Name"];var s={mainType:i,query:a};r&&(s.subType=r);var l,u=n.excludeSeriesId;null!=u&&(l=ft(),E(ho(u),(function(t){var e=xo(t,null);null!=e&&l.set(e,!0)}))),o&&o.eachComponent(s,(function(e){if(!(l&&null!==l.get(e.id)))if(Wl(n))if(e instanceof sg)n.type!==Js||n.notBlur||e.get(["emphasis","disabled"])||function(t,e,n){var i=t.seriesIndex,r=t.getData(e.dataType);if(r){var o=wo(r,e);o=(Y(o)?o[0]:o)||0;var a=r.getItemGraphicEl(o);if(!a)for(var s=r.count(),l=0;!a&&l<s;)a=r.getItemGraphicEl(l++);if(a){var u=Hs(a);Dl(i,u.focus,u.blurScope,n)}else{var h=t.get(["emphasis","focus"]),c=t.get(["emphasis","blurScope"]);null!=h&&Dl(i,h,c,n)}}}(e,n,t._api);else{var i=kl(e.mainType,e.componentIndex,n.name,t._api),r=i.focusSelf,o=i.dispatchers;n.type===Js&&r&&!n.notBlur&&Al(e.mainType,e.componentIndex,t._api),o&&E(o,(function(t){n.type===Js?_l(t):bl(t)}))}else Gl(n)&&e instanceof sg&&(!function(t,e,n){if(Gl(e)){var i=e.dataType,r=wo(t.getData(i),e);Y(r)||(r=[r]),t[e.type===nl?"toggleSelect":e.type===tl?"select":"unselect"](r,i)}}(e,n,t._api),Ll(e),Nv(t))}),t),o&&o.eachComponent(s,(function(e){l&&null!==l.get(e.id)||h(t["series"===i?"_chartsMap":"_componentsMap"][e.__viewId])}),t)}else E([].concat(t._componentsViews).concat(t._chartsViews),h);function h(i){i&&i.__alive&&i[e]&&i[e](i.__model,o,t._api,n)}},wv={prepareAndUpdate:function(t){xv(this),wv.update.call(this,t,{optionChanged:null!=t.newOption})},update:function(e,n){var i=this._model,r=this._api,o=this._zr,a=this._coordSysMgr,s=this._scheduler;if(i){i.setUpdatePayload(e),s.restoreData(i,e),s.performSeriesTasks(i),a.create(i,r),s.performDataProcessorTasks(i,e),Mv(this,i),a.update(i,r),t(i),s.performVisualTasks(i,e),kv(this,i,r,e,n);var l=i.get("backgroundColor")||"transparent",u=i.get("darkMode");o.setBackgroundColor(l),null!=u&&"auto"!==u&&o.setDarkMode(u),sv.trigger("afterupdate",i,r)}},updateTransform:function(e){var n=this,i=this._model,r=this._api;if(i){i.setUpdatePayload(e);var o=[];i.eachComponent((function(t,a){if("series"!==t){var s=n.getViewOfComponentModel(a);if(s&&s.__alive)if(s.updateTransform){var l=s.updateTransform(a,i,r,e);l&&l.update&&o.push(s)}else o.push(s)}}));var a=ft();i.eachSeries((function(t){var o=n._chartsMap[t.__viewId];if(o.updateTransform){var s=o.updateTransform(t,i,r,e);s&&s.update&&a.set(t.uid,1)}else a.set(t.uid,1)})),t(i),this._scheduler.performVisualTasks(i,e,{setDirty:!0,dirtyMap:a}),Pv(this,i,r,e,{},a),sv.trigger("afterupdate",i,r)}},updateView:function(e){var n=this._model;n&&(n.setUpdatePayload(e),xg.markUpdateMethod(e,"updateView"),t(n),this._scheduler.performVisualTasks(n,e,{setDirty:!0}),kv(this,n,this._api,e,{}),sv.trigger("afterupdate",n,this._api))},updateVisual:function(e){var n=this,i=this._model;i&&(i.setUpdatePayload(e),i.eachSeries((function(t){t.getData().clearAllVisual()})),xg.markUpdateMethod(e,"updateVisual"),t(i),this._scheduler.performVisualTasks(i,e,{visualType:"visual",setDirty:!0}),i.eachComponent((function(t,r){if("series"!==t){var o=n.getViewOfComponentModel(r);o&&o.__alive&&o.updateVisual(r,i,n._api,e)}})),i.eachSeries((function(t){n._chartsMap[t.__viewId].updateVisual(t,i,n._api,e)})),sv.trigger("afterupdate",i,this._api))},updateLayout:function(t){wv.update.call(this,t)}},Sv=function(t,e,n,i){if(t._disposed)Wv(t.id);else{for(var r,o=t._model,a=t._coordSysMgr.getCoordinateSystems(),s=Io(o,n),l=0;l<a.length;l++){var u=a[l];if(u[e]&&null!=(r=u[e](o,s,i)))return r}0}},Mv=function(t,e){var n=t._chartsMap,i=t._scheduler;e.eachSeries((function(t){i.updateStreamModes(t,n[t.__viewId])}))},Iv=function(t,e){var n=this,i=this.getModel(),r=t.type,o=t.escapeConnect,a=Hv[r],s=a.actionInfo,l=(s.update||"update").split(":"),u=l.pop(),h=null!=l[0]&&No(l[0]);this.__flagInMainProcess=!0;var c=[t],p=!1;t.batch&&(p=!0,c=z(t.batch,(function(e){return(e=k(A({},e),t)).batch=null,e})));var d,f=[],g=Gl(t),y=Wl(t);if(y&&Cl(this._api),E(c,(function(e){if((d=(d=a.action(e,n._model,n._api))||A({},e)).type=s.event||d.type,f.push(d),y){var i=To(t),r=i.queryOptionMap,o=i.mainTypeSpecified?r.keys()[0]:"series";bv(n,u,e,o),Nv(n)}else g?(bv(n,u,e,"series"),Nv(n)):h&&bv(n,u,e,h.main,h.sub)})),"none"!==u&&!y&&!g&&!h)try{this.__pendingUpdate?(xv(this),wv.update.call(this,t),this.__pendingUpdate=null):wv[u].call(this,t)}catch(t){throw this.__flagInMainProcess=!1,t}if(d=p?{type:s.event||r,escapeConnect:o,batch:f}:f[0],this.__flagInMainProcess=!1,!e){var v=this._messageCenter;if(v.trigger(d.type,d),g){var m={type:"selectchanged",escapeConnect:o,selected:Pl(i),isFromClick:t.isFromClick||!1,fromAction:t.type,fromActionPayload:t};v.trigger(m.type,m)}}},Tv=function(t){for(var e=this._pendingActions;e.length;){var n=e.shift();Iv.call(this,n,t)}},Cv=function(t){!t&&this.trigger("updated")},Dv=function(t,e){t.on("rendered",(function(n){e.trigger("rendered",n),!t.animation.isFinished()||e.__pendingUpdate||e._scheduler.unfinished||e._pendingActions.length||e.trigger("finished")}))},Av=function(t,e){t.on("mouseover",(function(t){var n=xy(t.target,Fl);n&&(!function(t,e,n){var i=Hs(t),r=kl(i.componentMainType,i.componentIndex,i.componentHighDownName,n),o=r.dispatchers,a=r.focusSelf;o?(a&&Al(i.componentMainType,i.componentIndex,n),E(o,(function(t){return ml(t,e)}))):(Dl(i.seriesIndex,i.focus,i.blurScope,n),"self"===i.focus&&Al(i.componentMainType,i.componentIndex,n),ml(t,e))}(n,t,e._api),Nv(e))})).on("mouseout",(function(t){var n=xy(t.target,Fl);n&&(!function(t,e,n){Cl(n);var i=Hs(t),r=kl(i.componentMainType,i.componentIndex,i.componentHighDownName,n).dispatchers;r?E(r,(function(t){return xl(t,e)})):xl(t,e)}(n,t,e._api),Nv(e))})).on("click",(function(t){var n=xy(t.target,(function(t){return null!=Hs(t).dataIndex}),!0);if(n){var i=n.selected?"unselect":"select",r=Hs(n);e._api.dispatchAction({type:i,dataType:r.dataType,dataIndexInside:r.dataIndex,seriesIndex:r.seriesIndex,isFromClick:!0})}}))},kv=function(t,e,n,i,r){!function(t){var e=[],n=[],i=!1;if(t.eachComponent((function(t,r){var o=r.get("zlevel")||0,a=r.get("z")||0,s=r.getZLevelKey();i=i||!!s,("series"===t?n:e).push({zlevel:o,z:a,idx:r.componentIndex,type:t,key:s})})),i){var r,o,a=e.concat(n);Ie(a,(function(t,e){return t.zlevel===e.zlevel?t.z-e.z:t.zlevel-e.zlevel})),E(a,(function(e){var n=t.getComponent(e.type,e.idx),i=e.zlevel,a=e.key;null!=r&&(i=Math.max(r,i)),a?(i===r&&a!==o&&i++,o=a):o&&(i===r&&i++,o=""),r=i,n.setZLevel(i)}))}}(e),Lv(t,e,n,i,r),E(t._chartsViews,(function(t){t.__alive=!1})),Pv(t,e,n,i,r),E(t._chartsViews,(function(t){t.__alive||t.remove(e,n)}))},Lv=function(t,e,n,r,o,l){E(l||t._componentsViews,(function(t){var o=t.__model;a(o,t),t.render(o,e,n,r),i(o,t),s(o,t)}))},Pv=function(t,e,n,o,l,u){var h=t._scheduler;l=A(l||{},{updatedSeries:e.getSeries()}),sv.trigger("series:beforeupdate",e,n,l);var c=!1;e.eachSeries((function(e){var n=t._chartsMap[e.__viewId];n.__alive=!0;var i=n.renderTask;h.updatePayload(i,o),a(e,n),u&&u.get(e.uid)&&i.dirty(),i.perform(h.getPerformArgs(i))&&(c=!0),n.group.silent=!!e.get("silent"),function(t,e){var n=t.get("blendMode")||null;e.eachRendered((function(t){t.isGroup||(t.style.blend=n)}))}(e,n),Ll(e)})),h.unfinished=c||h.unfinished,sv.trigger("series:layoutlabels",e,n,l),sv.trigger("series:transition",e,n,l),e.eachSeries((function(e){var n=t._chartsMap[e.__viewId];i(e,n),s(e,n)})),function(t,e){var n=t._zr.storage,i=0;n.traverse((function(t){t.isGroup||i++})),i>e.get("hoverLayerThreshold")&&!r.node&&!r.worker&&e.eachSeries((function(e){if(!e.preventUsingHoverLayer){var n=t._chartsMap[e.__viewId];n.__alive&&n.eachRendered((function(t){t.states.emphasis&&(t.states.emphasis.hoverLayer=!0)}))}}))}(t,e),sv.trigger("series:afterupdate",e,n,l)},Nv=function(t){t.__needsUpdateStatus=!0,t.getZr().wakeUp()},Ev=function(t){t.__needsUpdateStatus&&(t.getZr().storage.traverse((function(t){ah(t)||e(t)})),t.__needsUpdateStatus=!1)},Ov=function(t){return new(function(e){function i(){return null!==e&&e.apply(this,arguments)||this}return n(i,e),i.prototype.getCoordinateSystems=function(){return t._coordSysMgr.getCoordinateSystems()},i.prototype.getComponentByElement=function(e){for(;e;){var n=e.__ecComponentInfo;if(null!=n)return t._model.getComponent(n.mainType,n.index);e=e.parent}},i.prototype.enterEmphasis=function(e,n){_l(e,n),Nv(t)},i.prototype.leaveEmphasis=function(e,n){bl(e,n),Nv(t)},i.prototype.enterBlur=function(e){wl(e),Nv(t)},i.prototype.leaveBlur=function(e){Sl(e),Nv(t)},i.prototype.enterSelect=function(e){Ml(e),Nv(t)},i.prototype.leaveSelect=function(e){Il(e),Nv(t)},i.prototype.getModel=function(){return t.getModel()},i.prototype.getViewOfComponentModel=function(e){return t.getViewOfComponentModel(e)},i.prototype.getViewOfSeriesModel=function(e){return t.getViewOfSeriesModel(e)},i}(ld))(t)},Rv=function(t){function e(t,e){for(var n=0;n<t.length;n++){t[n][gv]=e}}E(Yv,(function(n,i){t._messageCenter.on(i,(function(n){if($v[t.group]&&0!==t[gv]){if(n&&n.escapeConnect)return;var i=t.makeActionFromEvent(n),r=[];E(Kv,(function(e){e!==t&&e.group===t.group&&r.push(e)})),e(r,0),E(r,(function(t){1!==t[gv]&&t.dispatchAction(i)})),e(r,2)}}))}))}}(),e}(Xt),Fv=Bv.prototype;Fv.on=yv("on"),Fv.off=yv("off"),Fv.one=function(t,e,n){var i=this;oo(),this.on.call(this,t,(function n(){for(var r=[],o=0;o<arguments.length;o++)r[o]=arguments[o];e&&e.apply&&e.apply(this,r),i.off(t,n)}),n)};var Gv=["click","dblclick","mouseover","mouseout","mousemove","mousedown","mouseup","globalout","contextmenu"];function Wv(t){0}var Hv={},Yv={},Uv=[],Xv=[],Zv=[],jv={},qv={},Kv={},$v={},Jv=+new Date-0,Qv=+new Date-0,tm="_echarts_instance_";function em(t){$v[t]=!1}var nm=em;function im(t){return Kv[function(t,e){return t.getAttribute?t.getAttribute(e):t[e]}(t,tm)]}function rm(t,e){jv[t]=e}function om(t){P(Xv,t)<0&&Xv.push(t)}function am(t,e){gm(Uv,t,e,2e3)}function sm(t){um("afterinit",t)}function lm(t){um("afterupdate",t)}function um(t,e){sv.on(t,e)}function hm(t,e,n){U(e)&&(n=e,e="");var i=q(t)?t.type:[t,t={event:e}][0];t.event=(t.event||i).toLowerCase(),e=t.event,Yv[e]||(lt(fv.test(i)&&fv.test(e)),Hv[i]||(Hv[i]={action:n,actionInfo:t}),Yv[e]=i)}function cm(t,e){hd.register(t,e)}function pm(t,e){gm(Zv,t,e,1e3,"layout")}function dm(t,e){gm(Zv,t,e,3e3,"visual")}var fm=[];function gm(t,e,n,i,r){if((U(e)||q(e))&&(n=e,e=i),!(P(fm,n)>=0)){fm.push(n);var o=Gg.wrapStageHandler(n,r);o.__prio=e,o.__raw=n,t.push(o)}}function ym(t,e){qv[t]=e}function vm(t,e,n){var i=uv("registerMap");i&&i(t,e,n)}var mm=function(t){var e=(t=T(t)).type,n="";e||ao(n);var i=e.split(":");2!==i.length&&ao(n);var r=!1;"echarts"===i[0]&&(e=i[1],r=!0),t.__isBuiltIn=r,Tf.set(e,t)};dm(cv,Eg),dm(pv,Vg),dm(pv,Bg),dm(cv,py),dm(pv,dy),dm(7e3,(function(t,e){t.eachRawSeries((function(n){if(!t.isSeriesFiltered(n)){var i=n.getData();i.hasItemVisual()&&i.each((function(t){var n=i.getItemVisual(t,"decal");n&&(i.ensureUniqueItemVisual(t,"style").decal=iv(n,e))}));var r=i.getVisual("decal");if(r)i.getVisual("style").decal=iv(r,e)}}))})),om(Od),am(900,(function(t){var e=ft();t.eachSeries((function(t){var n=t.get("stack");if(n){var i=e.get(n)||e.set(n,[]),r=t.getData(),o={stackResultDimension:r.getCalculationInfo("stackResultDimension"),stackedOverDimension:r.getCalculationInfo("stackedOverDimension"),stackedDimension:r.getCalculationInfo("stackedDimension"),stackedByDimension:r.getCalculationInfo("stackedByDimension"),isStackedByIndex:r.getCalculationInfo("isStackedByIndex"),data:r,seriesModel:t};if(!o.stackedDimension||!o.isStackedByIndex&&!o.stackedByDimension)return;i.length&&r.setCalculationInfo("stackedOnSeries",i[i.length-1].seriesModel),i.push(o)}})),e.each(Rd)})),ym("default",(function(t,e){k(e=e||{},{text:"loading",textColor:"#000",fontSize:12,fontWeight:"normal",fontStyle:"normal",fontFamily:"sans-serif",maskColor:"rgba(255, 255, 255, 0.8)",showSpinner:!0,color:"#5470c6",spinnerRadius:10,lineWidth:5,zlevel:0});var n=new Cr,i=new Cs({style:{fill:e.maskColor},zlevel:e.zlevel,z:1e4});n.add(i);var r,o=new ks({style:{text:e.text,fill:e.textColor,fontSize:e.fontSize,fontWeight:e.fontWeight,fontStyle:e.fontStyle,fontFamily:e.fontFamily},zlevel:e.zlevel,z:10001}),a=new Cs({style:{fill:"none"},textContent:o,textConfig:{position:"right",distance:10},zlevel:e.zlevel,z:10001});return n.add(a),e.showSpinner&&((r=new Hu({shape:{startAngle:-Fg/2,endAngle:-Fg/2+.1,r:e.spinnerRadius},style:{stroke:e.color,lineCap:"round",lineWidth:e.lineWidth},zlevel:e.zlevel,z:10001})).animateShape(!0).when(1e3,{endAngle:3*Fg/2}).start("circularInOut"),r.animateShape(!0).when(1e3,{startAngle:3*Fg/2}).delay(300).start("circularInOut"),n.add(r)),n.resize=function(){var n=o.getBoundingRect().width,s=e.showSpinner?e.spinnerRadius:0,l=(t.getWidth()-2*s-(e.showSpinner&&n?10:0)-n)/2-(e.showSpinner&&n?0:5+n/2)+(e.showSpinner?0:n/2)+(n?0:s),u=t.getHeight()/2;e.showSpinner&&r.setShape({cx:l,cy:u}),a.setShape({x:l-s,y:u-s,width:2*s,height:2*s}),i.setShape({x:0,y:0,width:t.getWidth(),height:t.getHeight()})},n.resize(),n})),hm({type:Js,event:Js,update:Js},xt),hm({type:Qs,event:Qs,update:Qs},xt),hm({type:tl,event:tl,update:tl},xt),hm({type:el,event:el,update:el},xt),hm({type:nl,event:nl,update:nl},xt),rm("light",iy),rm("dark",ly);var xm=[],_m={registerPreprocessor:om,registerProcessor:am,registerPostInit:sm,registerPostUpdate:lm,registerUpdateLifecycle:um,registerAction:hm,registerCoordinateSystem:cm,registerLayout:pm,registerVisual:dm,registerTransform:mm,registerLoading:ym,registerMap:vm,registerImpl:function(t,e){lv[t]=e},PRIORITY:dv,ComponentModel:Tp,ComponentView:gg,SeriesModel:sg,ChartView:xg,registerComponentModel:function(t){Tp.registerClass(t)},registerComponentView:function(t){gg.registerClass(t)},registerSeriesModel:function(t){sg.registerClass(t)},registerChartView:function(t){xg.registerClass(t)},registerSubTypeDefaulter:function(t,e){Tp.registerSubTypeDefaulter(t,e)},registerPainter:function(t,e){Pr(t,e)}};function bm(t){Y(t)?E(t,(function(t){bm(t)})):P(xm,t)>=0||(xm.push(t),U(t)&&(t={install:t}),t.install(_m))}function wm(t){return null==t?0:t.length||1}function Sm(t){return t}var Mm=function(){function t(t,e,n,i,r,o){this._old=t,this._new=e,this._oldKeyGetter=n||Sm,this._newKeyGetter=i||Sm,this.context=r,this._diffModeMultiple="multiple"===o}return t.prototype.add=function(t){return this._add=t,this},t.prototype.update=function(t){return this._update=t,this},t.prototype.updateManyToOne=function(t){return this._updateManyToOne=t,this},t.prototype.updateOneToMany=function(t){return this._updateOneToMany=t,this},t.prototype.updateManyToMany=function(t){return this._updateManyToMany=t,this},t.prototype.remove=function(t){return this._remove=t,this},t.prototype.execute=function(){this[this._diffModeMultiple?"_executeMultiple":"_executeOneToOne"]()},t.prototype._executeOneToOne=function(){var t=this._old,e=this._new,n={},i=new Array(t.length),r=new Array(e.length);this._initIndexMap(t,null,i,"_oldKeyGetter"),this._initIndexMap(e,n,r,"_newKeyGetter");for(var o=0;o<t.length;o++){var a=i[o],s=n[a],l=wm(s);if(l>1){var u=s.shift();1===s.length&&(n[a]=s[0]),this._update&&this._update(u,o)}else 1===l?(n[a]=null,this._update&&this._update(s,o)):this._remove&&this._remove(o)}this._performRestAdd(r,n)},t.prototype._executeMultiple=function(){var t=this._old,e=this._new,n={},i={},r=[],o=[];this._initIndexMap(t,n,r,"_oldKeyGetter"),this._initIndexMap(e,i,o,"_newKeyGetter");for(var a=0;a<r.length;a++){var s=r[a],l=n[s],u=i[s],h=wm(l),c=wm(u);if(h>1&&1===c)this._updateManyToOne&&this._updateManyToOne(u,l),i[s]=null;else if(1===h&&c>1)this._updateOneToMany&&this._updateOneToMany(u,l),i[s]=null;else if(1===h&&1===c)this._update&&this._update(u,l),i[s]=null;else if(h>1&&c>1)this._updateManyToMany&&this._updateManyToMany(u,l),i[s]=null;else if(h>1)for(var p=0;p<h;p++)this._remove&&this._remove(l[p]);else this._remove&&this._remove(l)}this._performRestAdd(o,i)},t.prototype._performRestAdd=function(t,e){for(var n=0;n<t.length;n++){var i=t[n],r=e[i],o=wm(r);if(o>1)for(var a=0;a<o;a++)this._add&&this._add(r[a]);else 1===o&&this._add&&this._add(r);e[i]=null}},t.prototype._initIndexMap=function(t,e,n,i){for(var r=this._diffModeMultiple,o=0;o<t.length;o++){var a="_ec_"+this[i](t[o],o);if(r||(n[o]=a),e){var s=e[a],l=wm(s);0===l?(e[a]=o,r&&n.push(a)):1===l?e[a]=[s,o]:s.push(o)}}},t}(),Im=function(){function t(t,e){this._encode=t,this._schema=e}return t.prototype.get=function(){return{fullDimensions:this._getFullDimensionNames(),encode:this._encode}},t.prototype._getFullDimensionNames=function(){return this._cachedDimNames||(this._cachedDimNames=this._schema?this._schema.makeOutputDimensionNames():[]),this._cachedDimNames},t}();function Tm(t,e){return t.hasOwnProperty(e)||(t[e]=[]),t[e]}function Cm(t){return"category"===t?"ordinal":"time"===t?"time":"float"}var Dm=function(t){this.otherDims={},null!=t&&A(this,t)},Am=So(),km={float:"f",int:"i",ordinal:"o",number:"n",time:"t"},Lm=function(){function t(t){this.dimensions=t.dimensions,this._dimOmitted=t.dimensionOmitted,this.source=t.source,this._fullDimCount=t.fullDimensionCount,this._updateDimOmitted(t.dimensionOmitted)}return t.prototype.isDimensionOmitted=function(){return this._dimOmitted},t.prototype._updateDimOmitted=function(t){this._dimOmitted=t,t&&(this._dimNameMap||(this._dimNameMap=Rm(this.source)))},t.prototype.getSourceDimensionIndex=function(t){return rt(this._dimNameMap.get(t),-1)},t.prototype.getSourceDimension=function(t){var e=this.source.dimensionsDefine;if(e)return e[t]},t.prototype.makeStoreSchema=function(){for(var t=this._fullDimCount,e=Zd(this.source),n=!Nm(t),i="",r=[],o=0,a=0;o<t;o++){var s=void 0,l=void 0,u=void 0,h=this.dimensions[a];if(h&&h.storeDimIndex===o)s=e?h.name:null,l=h.type,u=h.ordinalMeta,a++;else{var c=this.getSourceDimension(o);c&&(s=e?c.name:null,l=c.type)}r.push({property:s,type:l,ordinalMeta:u}),!e||null==s||h&&h.isCalculationCoord||(i+=n?s.replace(/\`/g,"`1").replace(/\$/g,"`2"):s),i+="$",i+=km[l]||"f",u&&(i+=u.uid),i+="$"}var p=this.source;return{dimensions:r,hash:[p.seriesLayoutBy,p.startIndex,i].join("$$")}},t.prototype.makeOutputDimensionNames=function(){for(var t=[],e=0,n=0;e<this._fullDimCount;e++){var i=void 0,r=this.dimensions[n];if(r&&r.storeDimIndex===e)r.isCalculationCoord||(i=r.name),n++;else{var o=this.getSourceDimension(e);o&&(i=o.name)}t.push(i)}return t},t.prototype.appendCalculationDimension=function(t){this.dimensions.push(t),t.isCalculationCoord=!0,this._fullDimCount++,this._updateDimOmitted(!0)},t}();function Pm(t){return t instanceof Lm}function Om(t){for(var e=ft(),n=0;n<(t||[]).length;n++){var i=t[n],r=q(i)?i.name:i;null!=r&&null==e.get(r)&&e.set(r,n)}return e}function Rm(t){var e=Am(t);return e.dimNameMap||(e.dimNameMap=Om(t.dimensionsDefine))}function Nm(t){return t>30}var Em,zm,Vm,Bm,Fm,Gm,Wm,Hm=q,Ym=z,Um="undefined"==typeof Int32Array?Array:Int32Array,Xm=["hasItemOption","_nameList","_idList","_invertedIndicesMap","_dimSummary","userOutput","_rawData","_dimValueGetter","_nameDimIdx","_idDimIdx","_nameRepeatCount"],Zm=["_approximateExtent"],jm=function(){function t(t,e){var n;this.type="list",this._dimOmitted=!1,this._nameList=[],this._idList=[],this._visual={},this._layout={},this._itemVisuals=[],this._itemLayouts=[],this._graphicEls=[],this._approximateExtent={},this._calculationInfo={},this.hasItemOption=!1,this.TRANSFERABLE_METHODS=["cloneShallow","downSample","lttbDownSample","map"],this.CHANGABLE_METHODS=["filterSelf","selectRange"],this.DOWNSAMPLE_METHODS=["downSample","lttbDownSample"];var i=!1;Pm(t)?(n=t.dimensions,this._dimOmitted=t.isDimensionOmitted(),this._schema=t):(i=!0,n=t),n=n||["x","y"];for(var r={},o=[],a={},s=!1,l={},u=0;u<n.length;u++){var h=n[u],c=X(h)?new Dm({name:h}):h instanceof Dm?h:new Dm(h),p=c.name;c.type=c.type||"float",c.coordDim||(c.coordDim=p,c.coordDimIndex=0);var d=c.otherDims=c.otherDims||{};o.push(p),r[p]=c,null!=l[p]&&(s=!0),c.createInvertedIndices&&(a[p]=[]),0===d.itemName&&(this._nameDimIdx=u),0===d.itemId&&(this._idDimIdx=u),i&&(c.storeDimIndex=u)}if(this.dimensions=o,this._dimInfos=r,this._initGetDimensionInfo(s),this.hostModel=e,this._invertedIndicesMap=a,this._dimOmitted){var f=this._dimIdxToName=ft();E(o,(function(t){f.set(r[t].storeDimIndex,t)}))}}return t.prototype.getDimension=function(t){var e=this._recognizeDimIndex(t);if(null==e)return t;if(e=t,!this._dimOmitted)return this.dimensions[e];var n=this._dimIdxToName.get(e);if(null!=n)return n;var i=this._schema.getSourceDimension(e);return i?i.name:void 0},t.prototype.getDimensionIndex=function(t){var e=this._recognizeDimIndex(t);if(null!=e)return e;if(null==t)return-1;var n=this._getDimInfo(t);return n?n.storeDimIndex:this._dimOmitted?this._schema.getSourceDimensionIndex(t):-1},t.prototype._recognizeDimIndex=function(t){if(j(t)||null!=t&&!isNaN(t)&&!this._getDimInfo(t)&&(!this._dimOmitted||this._schema.getSourceDimensionIndex(t)<0))return+t},t.prototype._getStoreDimIndex=function(t){var e=this.getDimensionIndex(t);return e},t.prototype.getDimensionInfo=function(t){return this._getDimInfo(this.getDimension(t))},t.prototype._initGetDimensionInfo=function(t){var e=this._dimInfos;this._getDimInfo=t?function(t){return e.hasOwnProperty(t)?e[t]:void 0}:function(t){return e[t]}},t.prototype.getDimensionsOnCoord=function(){return this._dimSummary.dataDimsOnCoord.slice()},t.prototype.mapDimension=function(t,e){var n=this._dimSummary;if(null==e)return n.encodeFirstDimNotExtra[t];var i=n.encode[t];return i?i[e]:null},t.prototype.mapDimensionsAll=function(t){return(this._dimSummary.encode[t]||[]).slice()},t.prototype.getStore=function(){return this._store},t.prototype.initData=function(t,e,n){var i,r=this;if(t instanceof Vf&&(i=t),!i){var o=this.dimensions,a=Gd(t)||N(t)?new jd(t,o.length):t;i=new Vf;var s=Ym(o,(function(t){return{type:r._dimInfos[t].type,property:t}}));i.initData(a,s,n)}this._store=i,this._nameList=(e||[]).slice(),this._idList=[],this._nameRepeatCount={},this._doInit(0,i.count()),this._dimSummary=function(t,e){var n={},i=n.encode={},r=ft(),o=[],a=[],s={};E(t.dimensions,(function(e){var n,l=t.getDimensionInfo(e),u=l.coordDim;if(u){var h=l.coordDimIndex;Tm(i,u)[h]=e,l.isExtraCoord||(r.set(u,1),"ordinal"!==(n=l.type)&&"time"!==n&&(o[0]=e),Tm(s,u)[h]=t.getDimensionIndex(l.name)),l.defaultTooltip&&a.push(e)}kp.each((function(t,e){var n=Tm(i,e),r=l.otherDims[e];null!=r&&!1!==r&&(n[r]=l.name)}))}));var l=[],u={};r.each((function(t,e){var n=i[e];u[e]=n[0],l=l.concat(n)})),n.dataDimsOnCoord=l,n.dataDimIndicesOnCoord=z(l,(function(e){return t.getDimensionInfo(e).storeDimIndex})),n.encodeFirstDimNotExtra=u;var h=i.label;h&&h.length&&(o=h.slice());var c=i.tooltip;return c&&c.length?a=c.slice():a.length||(a=o.slice()),i.defaultedLabel=o,i.defaultedTooltip=a,n.userOutput=new Im(s,e),n}(this,this._schema),this.userOutput=this._dimSummary.userOutput},t.prototype.appendData=function(t){var e=this._store.appendData(t);this._doInit(e[0],e[1])},t.prototype.appendValues=function(t,e){var n=this._store.appendValues(t,e.length),i=n.start,r=n.end,o=this._shouldMakeIdFromName();if(this._updateOrdinalMeta(),e)for(var a=i;a<r;a++){var s=a-i;this._nameList[a]=e[s],o&&Wm(this,a)}},t.prototype._updateOrdinalMeta=function(){for(var t=this._store,e=this.dimensions,n=0;n<e.length;n++){var i=this._dimInfos[e[n]];i.ordinalMeta&&t.collectOrdinalMeta(i.storeDimIndex,i.ordinalMeta)}},t.prototype._shouldMakeIdFromName=function(){var t=this._store.getProvider();return null==this._idDimIdx&&t.getSource().sourceFormat!==Np&&!t.fillStorage},t.prototype._doInit=function(t,e){if(!(t>=e)){var n=this._store.getProvider();this._updateOrdinalMeta();var i=this._nameList,r=this._idList;if(n.getSource().sourceFormat===Lp&&!n.pure)for(var o=[],a=t;a<e;a++){var s=n.getItem(a,o);if(!this.hasItemOption&&go(s)&&(this.hasItemOption=!0),s){var l=s.name;null==i[a]&&null!=l&&(i[a]=xo(l,null));var u=s.id;null==r[a]&&null!=u&&(r[a]=xo(u,null))}}if(this._shouldMakeIdFromName())for(a=t;a<e;a++)Wm(this,a);Em(this)}},t.prototype.getApproximateExtent=function(t){return this._approximateExtent[t]||this._store.getDataExtent(this._getStoreDimIndex(t))},t.prototype.setApproximateExtent=function(t,e){e=this.getDimension(e),this._approximateExtent[e]=t.slice()},t.prototype.getCalculationInfo=function(t){return this._calculationInfo[t]},t.prototype.setCalculationInfo=function(t,e){Hm(t)?A(this._calculationInfo,t):this._calculationInfo[t]=e},t.prototype.getName=function(t){var e=this.getRawIndex(t),n=this._nameList[e];return null==n&&null!=this._nameDimIdx&&(n=Vm(this,this._nameDimIdx,e)),null==n&&(n=""),n},t.prototype._getCategory=function(t,e){var n=this._store.get(t,e),i=this._store.getOrdinalMeta(t);return i?i.categories[n]:n},t.prototype.getId=function(t){return zm(this,this.getRawIndex(t))},t.prototype.count=function(){return this._store.count()},t.prototype.get=function(t,e){var n=this._store,i=this._dimInfos[t];if(i)return n.get(i.storeDimIndex,e)},t.prototype.getByRawIndex=function(t,e){var n=this._store,i=this._dimInfos[t];if(i)return n.getByRawIndex(i.storeDimIndex,e)},t.prototype.getIndices=function(){return this._store.getIndices()},t.prototype.getDataExtent=function(t){return this._store.getDataExtent(this._getStoreDimIndex(t))},t.prototype.getSum=function(t){return this._store.getSum(this._getStoreDimIndex(t))},t.prototype.getMedian=function(t){return this._store.getMedian(this._getStoreDimIndex(t))},t.prototype.getValues=function(t,e){var n=this,i=this._store;return Y(t)?i.getValues(Ym(t,(function(t){return n._getStoreDimIndex(t)})),e):i.getValues(t)},t.prototype.hasValue=function(t){for(var e=this._dimSummary.dataDimIndicesOnCoord,n=0,i=e.length;n<i;n++)if(isNaN(this._store.get(e[n],t)))return!1;return!0},t.prototype.indexOfName=function(t){for(var e=0,n=this._store.count();e<n;e++)if(this.getName(e)===t)return e;return-1},t.prototype.getRawIndex=function(t){return this._store.getRawIndex(t)},t.prototype.indexOfRawIndex=function(t){return this._store.indexOfRawIndex(t)},t.prototype.rawIndexOf=function(t,e){var n=t&&this._invertedIndicesMap[t];var i=n[e];return null==i||isNaN(i)?-1:i},t.prototype.indicesOfNearest=function(t,e,n){return this._store.indicesOfNearest(this._getStoreDimIndex(t),e,n)},t.prototype.each=function(t,e,n){U(t)&&(n=e,e=t,t=[]);var i=n||this,r=Ym(Bm(t),this._getStoreDimIndex,this);this._store.each(r,i?W(e,i):e)},t.prototype.filterSelf=function(t,e,n){U(t)&&(n=e,e=t,t=[]);var i=n||this,r=Ym(Bm(t),this._getStoreDimIndex,this);return this._store=this._store.filter(r,i?W(e,i):e),this},t.prototype.selectRange=function(t){var e=this,n={};return E(G(t),(function(i){var r=e._getStoreDimIndex(i);n[r]=t[i]})),this._store=this._store.selectRange(n),this},t.prototype.mapArray=function(t,e,n){U(t)&&(n=e,e=t,t=[]),n=n||this;var i=[];return this.each(t,(function(){i.push(e&&e.apply(this,arguments))}),n),i},t.prototype.map=function(t,e,n,i){var r=n||i||this,o=Ym(Bm(t),this._getStoreDimIndex,this),a=Gm(this);return a._store=this._store.map(o,r?W(e,r):e),a},t.prototype.modify=function(t,e,n,i){var r=n||i||this;var o=Ym(Bm(t),this._getStoreDimIndex,this);this._store.modify(o,r?W(e,r):e)},t.prototype.downSample=function(t,e,n,i){var r=Gm(this);return r._store=this._store.downSample(this._getStoreDimIndex(t),e,n,i),r},t.prototype.lttbDownSample=function(t,e){var n=Gm(this);return n._store=this._store.lttbDownSample(this._getStoreDimIndex(t),e),n},t.prototype.getRawDataItem=function(t){return this._store.getRawDataItem(t)},t.prototype.getItemModel=function(t){var e=this.hostModel,n=this.getRawDataItem(t);return new dc(n,e,e&&e.ecModel)},t.prototype.diff=function(t){var e=this;return new Mm(t?t.getStore().getIndices():[],this.getStore().getIndices(),(function(e){return zm(t,e)}),(function(t){return zm(e,t)}))},t.prototype.getVisual=function(t){var e=this._visual;return e&&e[t]},t.prototype.setVisual=function(t,e){this._visual=this._visual||{},Hm(t)?A(this._visual,t):this._visual[t]=e},t.prototype.getItemVisual=function(t,e){var n=this._itemVisuals[t],i=n&&n[e];return null==i?this.getVisual(e):i},t.prototype.hasItemVisual=function(){return this._itemVisuals.length>0},t.prototype.ensureUniqueItemVisual=function(t,e){var n=this._itemVisuals,i=n[t];i||(i=n[t]={});var r=i[e];return null==r&&(Y(r=this.getVisual(e))?r=r.slice():Hm(r)&&(r=A({},r)),i[e]=r),r},t.prototype.setItemVisual=function(t,e,n){var i=this._itemVisuals[t]||{};this._itemVisuals[t]=i,Hm(e)?A(i,e):i[e]=n},t.prototype.clearAllVisual=function(){this._visual={},this._itemVisuals=[]},t.prototype.setLayout=function(t,e){Hm(t)?A(this._layout,t):this._layout[t]=e},t.prototype.getLayout=function(t){return this._layout[t]},t.prototype.getItemLayout=function(t){return this._itemLayouts[t]},t.prototype.setItemLayout=function(t,e,n){this._itemLayouts[t]=n?A(this._itemLayouts[t]||{},e):e},t.prototype.clearItemLayouts=function(){this._itemLayouts.length=0},t.prototype.setItemGraphicEl=function(t,e){var n=this.hostModel&&this.hostModel.seriesIndex;Ys(n,this.dataType,t,e),this._graphicEls[t]=e},t.prototype.getItemGraphicEl=function(t){return this._graphicEls[t]},t.prototype.eachItemGraphicEl=function(t,e){E(this._graphicEls,(function(n,i){n&&t&&t.call(e,n,i)}))},t.prototype.cloneShallow=function(e){return e||(e=new t(this._schema?this._schema:Ym(this.dimensions,this._getDimInfo,this),this.hostModel)),Fm(e,this),e._store=this._store,e},t.prototype.wrapMethod=function(t,e){var n=this[t];U(n)&&(this.__wrappedMethods=this.__wrappedMethods||[],this.__wrappedMethods.push(t),this[t]=function(){var t=n.apply(this,arguments);return e.apply(this,[t].concat(at(arguments)))})},t.internalField=(Em=function(t){var e=t._invertedIndicesMap;E(e,(function(n,i){var r=t._dimInfos[i],o=r.ordinalMeta,a=t._store;if(o){n=e[i]=new Um(o.categories.length);for(var s=0;s<n.length;s++)n[s]=-1;for(s=0;s<a.count();s++)n[a.get(r.storeDimIndex,s)]=s}}))},Vm=function(t,e,n){return xo(t._getCategory(e,n),null)},zm=function(t,e){var n=t._idList[e];return null==n&&null!=t._idDimIdx&&(n=Vm(t,t._idDimIdx,e)),null==n&&(n="e\0\0"+e),n},Bm=function(t){return Y(t)||(t=null!=t?[t]:[]),t},Gm=function(e){var n=new t(e._schema?e._schema:Ym(e.dimensions,e._getDimInfo,e),e.hostModel);return Fm(n,e),n},Fm=function(t,e){E(Xm.concat(e.__wrappedMethods||[]),(function(n){e.hasOwnProperty(n)&&(t[n]=e[n])})),t.__wrappedMethods=e.__wrappedMethods,E(Zm,(function(n){t[n]=T(e[n])})),t._calculationInfo=A({},e._calculationInfo)},void(Wm=function(t,e){var n=t._nameList,i=t._idList,r=t._nameDimIdx,o=t._idDimIdx,a=n[e],s=i[e];if(null==a&&null!=r&&(n[e]=a=Vm(t,r,e)),null==s&&null!=o&&(i[e]=s=Vm(t,o,e)),null==s&&null!=a){var l=t._nameRepeatCount,u=l[a]=(l[a]||0)+1;s=a,u>1&&(s+="__ec__"+u),i[e]=s}})),t}();function qm(t,e){Gd(t)||(t=Hd(t));var n=(e=e||{}).coordDimensions||[],i=e.dimensionsDefine||t.dimensionsDefine||[],r=ft(),o=[],a=function(t,e,n,i){var r=Math.max(t.dimensionsDetectedCount||1,e.length,n.length,i||0);return E(e,(function(t){var e;q(t)&&(e=t.dimsDef)&&(r=Math.max(r,e.length))})),r}(t,n,i,e.dimensionsCount),s=e.canOmitUnusedDimensions&&Nm(a),l=i===t.dimensionsDefine,u=l?Rm(t):Om(i),h=e.encodeDefine;!h&&e.encodeDefaulter&&(h=e.encodeDefaulter(t,a));for(var c=ft(h),p=new Of(a),d=0;d<p.length;d++)p[d]=-1;function f(t){var e=p[t];if(e<0){var n=i[t],r=q(n)?n:{name:n},a=new Dm,s=r.name;null!=s&&null!=u.get(s)&&(a.name=a.displayName=s),null!=r.type&&(a.type=r.type),null!=r.displayName&&(a.displayName=r.displayName);var l=o.length;return p[t]=l,a.storeDimIndex=t,o.push(a),a}return o[e]}if(!s)for(d=0;d<a;d++)f(d);c.each((function(t,e){var n=ho(t).slice();if(1===n.length&&!X(n[0])&&n[0]<0)c.set(e,!1);else{var i=c.set(e,[]);E(n,(function(t,n){var r=X(t)?u.get(t):t;null!=r&&r<a&&(i[n]=r,y(f(r),e,n))}))}}));var g=0;function y(t,e,n){null!=kp.get(e)?t.otherDims[e]=n:(t.coordDim=e,t.coordDimIndex=n,r.set(e,!0))}E(n,(function(t){var e,n,i,r;if(X(t))e=t,r={};else{e=(r=t).name;var o=r.ordinalMeta;r.ordinalMeta=null,(r=A({},r)).ordinalMeta=o,n=r.dimsDef,i=r.otherDims,r.name=r.coordDim=r.coordDimIndex=r.dimsDef=r.otherDims=null}var s=c.get(e);if(!1!==s){if(!(s=ho(s)).length)for(var u=0;u<(n&&n.length||1);u++){for(;g<a&&null!=f(g).coordDim;)g++;g<a&&s.push(g++)}E(s,(function(t,o){var a=f(t);if(l&&null!=r.type&&(a.type=r.type),y(k(a,r),e,o),null==a.name&&n){var s=n[o];!q(s)&&(s={name:s}),a.name=a.displayName=s.name,a.defaultTooltip=s.defaultTooltip}i&&k(a.otherDims,i)}))}}));var v=e.generateCoord,m=e.generateCoordCount,x=null!=m;m=v?m||1:0;var _=v||"value";function b(t){null==t.name&&(t.name=t.coordDim)}if(s)E(o,(function(t){b(t)})),o.sort((function(t,e){return t.storeDimIndex-e.storeDimIndex}));else for(var w=0;w<a;w++){var S=f(w);null==S.coordDim&&(S.coordDim=Km(_,r,x),S.coordDimIndex=0,(!v||m<=0)&&(S.isExtraCoord=!0),m--),b(S),null!=S.type||Xp(t,w)!==Bp&&(!S.isExtraCoord||null==S.otherDims.itemName&&null==S.otherDims.seriesName)||(S.type="ordinal")}return function(t){for(var e=ft(),n=0;n<t.length;n++){var i=t[n],r=i.name,o=e.get(r)||0;o>0&&(i.name=r+(o-1)),o++,e.set(r,o)}}(o),new Lm({source:t,dimensions:o,fullDimensionCount:a,dimensionOmitted:s})}function Km(t,e,n){var i=e.data;if(n||i.hasOwnProperty(t)){for(var r=0;i.hasOwnProperty(t+r);)r++;t+=r}return e.set(t,!0),t}var $m=function(t){this.coordSysDims=[],this.axisMap=ft(),this.categoryAxisMap=ft(),this.coordSysName=t};var Jm={cartesian2d:function(t,e,n,i){var r=t.getReferringComponents("xAxis",Co).models[0],o=t.getReferringComponents("yAxis",Co).models[0];e.coordSysDims=["x","y"],n.set("x",r),n.set("y",o),Qm(r)&&(i.set("x",r),e.firstCategoryDimIndex=0),Qm(o)&&(i.set("y",o),null==e.firstCategoryDimIndex&&(e.firstCategoryDimIndex=1))},singleAxis:function(t,e,n,i){var r=t.getReferringComponents("singleAxis",Co).models[0];e.coordSysDims=["single"],n.set("single",r),Qm(r)&&(i.set("single",r),e.firstCategoryDimIndex=0)},polar:function(t,e,n,i){var r=t.getReferringComponents("polar",Co).models[0],o=r.findAxisModel("radiusAxis"),a=r.findAxisModel("angleAxis");e.coordSysDims=["radius","angle"],n.set("radius",o),n.set("angle",a),Qm(o)&&(i.set("radius",o),e.firstCategoryDimIndex=0),Qm(a)&&(i.set("angle",a),null==e.firstCategoryDimIndex&&(e.firstCategoryDimIndex=1))},geo:function(t,e,n,i){e.coordSysDims=["lng","lat"]},parallel:function(t,e,n,i){var r=t.ecModel,o=r.getComponent("parallel",t.get("parallelIndex")),a=e.coordSysDims=o.dimensions.slice();E(o.parallelAxisIndex,(function(t,o){var s=r.getComponent("parallelAxis",t),l=a[o];n.set(l,s),Qm(s)&&(i.set(l,s),null==e.firstCategoryDimIndex&&(e.firstCategoryDimIndex=o))}))}};function Qm(t){return"category"===t.get("type")}function tx(t,e,n){var i,r,o,a=(n=n||{}).byIndex,s=n.stackedCoordDimension;!function(t){return!Pm(t.schema)}(e)?(r=e.schema,i=r.dimensions,o=e.store):i=e;var l,u,h,c,p=!(!t||!t.get("stack"));if(E(i,(function(t,e){X(t)&&(i[e]=t={name:t}),p&&!t.isExtraCoord&&(a||l||!t.ordinalMeta||(l=t),u||"ordinal"===t.type||"time"===t.type||s&&s!==t.coordDim||(u=t))})),!u||a||l||(a=!0),u){h="__\0ecstackresult_"+t.id,c="__\0ecstackedover_"+t.id,l&&(l.createInvertedIndices=!0);var d=u.coordDim,f=u.type,g=0;E(i,(function(t){t.coordDim===d&&g++}));var y={name:h,coordDim:d,coordDimIndex:g,type:f,isExtraCoord:!0,isCalculationCoord:!0,storeDimIndex:i.length},v={name:c,coordDim:c,coordDimIndex:g+1,type:f,isExtraCoord:!0,isCalculationCoord:!0,storeDimIndex:i.length+1};r?(o&&(y.storeDimIndex=o.ensureCalculationDimension(c,f),v.storeDimIndex=o.ensureCalculationDimension(h,f)),r.appendCalculationDimension(y),r.appendCalculationDimension(v)):(i.push(y),i.push(v))}return{stackedDimension:u&&u.name,stackedByDimension:l&&l.name,isStackedByIndex:a,stackedOverDimension:c,stackResultDimension:h}}function ex(t,e){return!!e&&e===t.getCalculationInfo("stackedDimension")}function nx(t,e){return ex(t,e)?t.getCalculationInfo("stackResultDimension"):e}function ix(t,e,n){n=n||{};var i,r=e.getSourceManager(),o=!1;t?(o=!0,i=Hd(t)):o=(i=r.getSource()).sourceFormat===Lp;var a=function(t){var e=t.get("coordinateSystem"),n=new $m(e),i=Jm[e];if(i)return i(t,n,n.axisMap,n.categoryAxisMap),n}(e),s=function(t,e){var n,i=t.get("coordinateSystem"),r=hd.get(i);return e&&e.coordSysDims&&(n=z(e.coordSysDims,(function(t){var n={name:t},i=e.axisMap.get(t);if(i){var r=i.get("type");n.type=Cm(r)}return n}))),n||(n=r&&(r.getDimensionsInfo?r.getDimensionsInfo():r.dimensions.slice())||["x","y"]),n}(e,a),l=n.useEncodeDefaulter,u=U(l)?l:l?H(Hp,s,e):null,h=qm(i,{coordDimensions:s,generateCoord:n.generateCoord,encodeDefine:e.getEncode(),encodeDefaulter:u,canOmitUnusedDimensions:!o}),c=function(t,e,n){var i,r;return n&&E(t,(function(t,o){var a=t.coordDim,s=n.categoryAxisMap.get(a);s&&(null==i&&(i=o),t.ordinalMeta=s.getOrdinalMeta(),e&&(t.createInvertedIndices=!0)),null!=t.otherDims.itemName&&(r=!0)})),r||null==i||(t[i].otherDims.itemName=0),i}(h.dimensions,n.createInvertedIndices,a),p=o?null:r.getSharedDataStore(h),d=tx(e,{schema:h,store:p}),f=new jm(h,e);f.setCalculationInfo(d);var g=null!=c&&function(t){if(t.sourceFormat===Lp){return!Y(fo(function(t){var e=0;for(;e<t.length&&null==t[e];)e++;return t[e]}(t.data||[])))}}(i)?function(t,e,n,i){return i===c?n:this.defaultDimValueGetter(t,e,n,i)}:null;return f.hasItemOption=!1,f.initData(o?i:p,null,g),f}var rx=function(){function t(t){this._setting=t||{},this._extent=[1/0,-1/0]}return t.prototype.getSetting=function(t){return this._setting[t]},t.prototype.unionExtent=function(t){var e=this._extent;t[0]<e[0]&&(e[0]=t[0]),t[1]>e[1]&&(e[1]=t[1])},t.prototype.unionExtentFromData=function(t,e){this.unionExtent(t.getApproximateExtent(e))},t.prototype.getExtent=function(){return this._extent.slice()},t.prototype.setExtent=function(t,e){var n=this._extent;isNaN(t)||(n[0]=t),isNaN(e)||(n[1]=e)},t.prototype.isInExtentRange=function(t){return this._extent[0]<=t&&this._extent[1]>=t},t.prototype.isBlank=function(){return this._isBlank},t.prototype.setBlank=function(t){this._isBlank=t},t}();Go(rx);var ox=0,ax=function(){function t(t){this.categories=t.categories||[],this._needCollect=t.needCollect,this._deduplication=t.deduplication,this.uid=++ox}return t.createByAxisModel=function(e){var n=e.option,i=n.data,r=i&&z(i,sx);return new t({categories:r,needCollect:!r,deduplication:!1!==n.dedplication})},t.prototype.getOrdinal=function(t){return this._getOrCreateMap().get(t)},t.prototype.parseAndCollect=function(t){var e,n=this._needCollect;if(!X(t)&&!n)return t;if(n&&!this._deduplication)return e=this.categories.length,this.categories[e]=t,e;var i=this._getOrCreateMap();return null==(e=i.get(t))&&(n?(e=this.categories.length,this.categories[e]=t,i.set(t,e)):e=NaN),e},t.prototype._getOrCreateMap=function(){return this._map||(this._map=ft(this.categories))},t}();function sx(t){return q(t)&&null!=t.value?t.value:t+""}function lx(t){return"interval"===t.type||"log"===t.type}function ux(t,e,n,i){var r={},o=t[1]-t[0],a=r.interval=$r(o/e,!0);null!=n&&a<n&&(a=r.interval=n),null!=i&&a>i&&(a=r.interval=i);var s=r.intervalPrecision=cx(a);return function(t,e){!isFinite(t[0])&&(t[0]=e[0]),!isFinite(t[1])&&(t[1]=e[1]),px(t,0,e),px(t,1,e),t[0]>t[1]&&(t[0]=t[1])}(r.niceTickExtent=[zr(Math.ceil(t[0]/a)*a,s),zr(Math.floor(t[1]/a)*a,s)],t),r}function hx(t){var e=Math.pow(10,Kr(t)),n=t/e;return n?2===n?n=3:3===n?n=5:n*=2:n=1,zr(n*e)}function cx(t){return Br(t)+2}function px(t,e,n){t[e]=Math.max(Math.min(t[e],n[1]),n[0])}function dx(t,e){return t>=e[0]&&t<=e[1]}function fx(t,e){return e[1]===e[0]?.5:(t-e[0])/(e[1]-e[0])}function gx(t,e){return t*(e[1]-e[0])+e[0]}var yx=function(t){function e(e){var n=t.call(this,e)||this;n.type="ordinal";var i=n.getSetting("ordinalMeta");return i||(i=new ax({})),Y(i)&&(i=new ax({categories:z(i,(function(t){return q(t)?t.value:t}))})),n._ordinalMeta=i,n._extent=n.getSetting("extent")||[0,i.categories.length-1],n}return n(e,t),e.prototype.parse=function(t){return null==t?NaN:X(t)?this._ordinalMeta.getOrdinal(t):Math.round(t)},e.prototype.contain=function(t){return dx(t=this.parse(t),this._extent)&&null!=this._ordinalMeta.categories[t]},e.prototype.normalize=function(t){return fx(t=this._getTickNumber(this.parse(t)),this._extent)},e.prototype.scale=function(t){return t=Math.round(gx(t,this._extent)),this.getRawOrdinalNumber(t)},e.prototype.getTicks=function(){for(var t=[],e=this._extent,n=e[0];n<=e[1];)t.push({value:n}),n++;return t},e.prototype.getMinorTicks=function(t){},e.prototype.setSortInfo=function(t){if(null!=t){for(var e=t.ordinalNumbers,n=this._ordinalNumbersByTick=[],i=this._ticksByOrdinalNumber=[],r=0,o=this._ordinalMeta.categories.length,a=Math.min(o,e.length);r<a;++r){var s=e[r];n[r]=s,i[s]=r}for(var l=0;r<o;++r){for(;null!=i[l];)l++;n.push(l),i[l]=r}}else this._ordinalNumbersByTick=this._ticksByOrdinalNumber=null},e.prototype._getTickNumber=function(t){var e=this._ticksByOrdinalNumber;return e&&t>=0&&t<e.length?e[t]:t},e.prototype.getRawOrdinalNumber=function(t){var e=this._ordinalNumbersByTick;return e&&t>=0&&t<e.length?e[t]:t},e.prototype.getLabel=function(t){if(!this.isBlank()){var e=this.getRawOrdinalNumber(t.value),n=this._ordinalMeta.categories[e];return null==n?"":n+""}},e.prototype.count=function(){return this._extent[1]-this._extent[0]+1},e.prototype.unionExtentFromData=function(t,e){this.unionExtent(t.getApproximateExtent(e))},e.prototype.isInExtentRange=function(t){return t=this._getTickNumber(t),this._extent[0]<=t&&this._extent[1]>=t},e.prototype.getOrdinalMeta=function(){return this._ordinalMeta},e.prototype.calcNiceTicks=function(){},e.prototype.calcNiceExtent=function(){},e.type="ordinal",e}(rx);rx.registerClass(yx);var vx=zr,mx=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="interval",e._interval=0,e._intervalPrecision=2,e}return n(e,t),e.prototype.parse=function(t){return t},e.prototype.contain=function(t){return dx(t,this._extent)},e.prototype.normalize=function(t){return fx(t,this._extent)},e.prototype.scale=function(t){return gx(t,this._extent)},e.prototype.setExtent=function(t,e){var n=this._extent;isNaN(t)||(n[0]=parseFloat(t)),isNaN(e)||(n[1]=parseFloat(e))},e.prototype.unionExtent=function(t){var e=this._extent;t[0]<e[0]&&(e[0]=t[0]),t[1]>e[1]&&(e[1]=t[1]),this.setExtent(e[0],e[1])},e.prototype.getInterval=function(){return this._interval},e.prototype.setInterval=function(t){this._interval=t,this._niceExtent=this._extent.slice(),this._intervalPrecision=cx(t)},e.prototype.getTicks=function(t){var e=this._interval,n=this._extent,i=this._niceExtent,r=this._intervalPrecision,o=[];if(!e)return o;n[0]<i[0]&&(t?o.push({value:vx(i[0]-e,r)}):o.push({value:n[0]}));for(var a=i[0];a<=i[1]&&(o.push({value:a}),(a=vx(a+e,r))!==o[o.length-1].value);)if(o.length>1e4)return[];var s=o.length?o[o.length-1].value:i[1];return n[1]>s&&(t?o.push({value:vx(s+e,r)}):o.push({value:n[1]})),o},e.prototype.getMinorTicks=function(t){for(var e=this.getTicks(!0),n=[],i=this.getExtent(),r=1;r<e.length;r++){for(var o=e[r],a=e[r-1],s=0,l=[],u=(o.value-a.value)/t;s<t-1;){var h=vx(a.value+(s+1)*u);h>i[0]&&h<i[1]&&l.push(h),s++}n.push(l)}return n},e.prototype.getLabel=function(t,e){if(null==t)return"";var n=e&&e.precision;return null==n?n=Br(t.value)||0:"auto"===n&&(n=this._intervalPrecision),ep(vx(t.value,n,!0))},e.prototype.calcNiceTicks=function(t,e,n){t=t||5;var i=this._extent,r=i[1]-i[0];if(isFinite(r)){r<0&&(r=-r,i.reverse());var o=ux(i,t,e,n);this._intervalPrecision=o.intervalPrecision,this._interval=o.interval,this._niceExtent=o.niceTickExtent}},e.prototype.calcNiceExtent=function(t){var e=this._extent;if(e[0]===e[1])if(0!==e[0]){var n=e[0];t.fixMax||(e[1]+=n/2),e[0]-=n/2}else e[1]=1;var i=e[1]-e[0];isFinite(i)||(e[0]=0,e[1]=1),this.calcNiceTicks(t.splitNumber,t.minInterval,t.maxInterval);var r=this._interval;t.fixMin||(e[0]=vx(Math.floor(e[0]/r)*r)),t.fixMax||(e[1]=vx(Math.ceil(e[1]/r)*r))},e.prototype.setNiceExtent=function(t,e){this._niceExtent=[t,e]},e.type="interval",e}(rx);rx.registerClass(mx);var xx="undefined"!=typeof Float32Array,_x=xx?Float32Array:Array;function bx(t){return Y(t)?xx?new Float32Array(t):t:new _x(t)}var Sx="__ec_stack_";function Mx(t){return t.get("stack")||Sx+t.seriesIndex}function Ix(t){return t.dim+t.index}function Tx(t,e){var n=[];return e.eachSeriesByType(t,(function(t){Lx(t)&&n.push(t)})),n}function Cx(t){var e=function(t){var e={};E(t,(function(t){var n=t.coordinateSystem.getBaseAxis();if("time"===n.type||"value"===n.type)for(var i=t.getData(),r=n.dim+"_"+n.index,o=i.getDimensionIndex(i.mapDimension(n.dim)),a=i.getStore(),s=0,l=a.count();s<l;++s){var u=a.get(o,s);e[r]?e[r].push(u):e[r]=[u]}}));var n={};for(var i in e)if(e.hasOwnProperty(i)){var r=e[i];if(r){r.sort((function(t,e){return t-e}));for(var o=null,a=1;a<r.length;++a){var s=r[a]-r[a-1];s>0&&(o=null===o?s:Math.min(o,s))}n[i]=o}}return n}(t),n=[];return E(t,(function(t){var i,r=t.coordinateSystem.getBaseAxis(),o=r.getExtent();if("category"===r.type)i=r.getBandWidth();else if("value"===r.type||"time"===r.type){var a=r.dim+"_"+r.index,s=e[a],l=Math.abs(o[1]-o[0]),u=r.scale.getExtent(),h=Math.abs(u[1]-u[0]);i=s?l/h*s:l}else{var c=t.getData();i=Math.abs(o[1]-o[0])/c.count()}var p=Er(t.get("barWidth"),i),d=Er(t.get("barMaxWidth"),i),f=Er(t.get("barMinWidth")||(Px(t)?.5:1),i),g=t.get("barGap"),y=t.get("barCategoryGap");n.push({bandWidth:i,barWidth:p,barMaxWidth:d,barMinWidth:f,barGap:g,barCategoryGap:y,axisKey:Ix(r),stackId:Mx(t)})})),Dx(n)}function Dx(t){var e={};E(t,(function(t,n){var i=t.axisKey,r=t.bandWidth,o=e[i]||{bandWidth:r,remainedWidth:r,autoWidthCount:0,categoryGap:null,gap:"20%",stacks:{}},a=o.stacks;e[i]=o;var s=t.stackId;a[s]||o.autoWidthCount++,a[s]=a[s]||{width:0,maxWidth:0};var l=t.barWidth;l&&!a[s].width&&(a[s].width=l,l=Math.min(o.remainedWidth,l),o.remainedWidth-=l);var u=t.barMaxWidth;u&&(a[s].maxWidth=u);var h=t.barMinWidth;h&&(a[s].minWidth=h);var c=t.barGap;null!=c&&(o.gap=c);var p=t.barCategoryGap;null!=p&&(o.categoryGap=p)}));var n={};return E(e,(function(t,e){n[e]={};var i=t.stacks,r=t.bandWidth,o=t.categoryGap;if(null==o){var a=G(i).length;o=Math.max(35-4*a,15)+"%"}var s=Er(o,r),l=Er(t.gap,1),u=t.remainedWidth,h=t.autoWidthCount,c=(u-s)/(h+(h-1)*l);c=Math.max(c,0),E(i,(function(t){var e=t.maxWidth,n=t.minWidth;if(t.width){i=t.width;e&&(i=Math.min(i,e)),n&&(i=Math.max(i,n)),t.width=i,u-=i+l*i,h--}else{var i=c;e&&e<i&&(i=Math.min(e,u)),n&&n>i&&(i=n),i!==c&&(t.width=i,u-=i+l*i,h--)}})),c=(u-s)/(h+(h-1)*l),c=Math.max(c,0);var p,d=0;E(i,(function(t,e){t.width||(t.width=c),p=t,d+=t.width*(1+l)})),p&&(d-=p.width*l);var f=-d/2;E(i,(function(t,i){n[e][i]=n[e][i]||{bandWidth:r,offset:f,width:t.width},f+=t.width*(1+l)}))})),n}function Ax(t,e){var n=Tx(t,e),i=Cx(n);E(n,(function(t){var e=t.getData(),n=t.coordinateSystem.getBaseAxis(),r=Mx(t),o=i[Ix(n)][r],a=o.offset,s=o.width;e.setLayout({bandWidth:o.bandWidth,offset:a,size:s})}))}function kx(t){return{seriesType:t,plan:yg(),reset:function(t){if(Lx(t)){var e=t.getData(),n=t.coordinateSystem,i=n.getBaseAxis(),r=n.getOtherAxis(i),o=e.getDimensionIndex(e.mapDimension(r.dim)),a=e.getDimensionIndex(e.mapDimension(i.dim)),s=t.get("showBackground",!0),l=e.mapDimension(r.dim),u=e.getCalculationInfo("stackResultDimension"),h=ex(e,l)&&!!e.getCalculationInfo("stackedOnSeries"),c=r.isHorizontal(),p=function(t,e){return e.toGlobalCoord(e.dataToCoord("log"===e.type?1:0))}(0,r),d=Px(t),f=t.get("barMinHeight")||0,g=u&&e.getDimensionIndex(u),y=e.getLayout("size"),v=e.getLayout("offset");return{progress:function(t,e){for(var i,r=t.count,l=d&&bx(3*r),u=d&&s&&bx(3*r),m=d&&bx(r),x=n.master.getRect(),_=c?x.width:x.height,b=e.getStore(),w=0;null!=(i=t.next());){var S=b.get(h?g:o,i),M=b.get(a,i),I=p,T=void 0;h&&(T=+S-b.get(o,i));var C=void 0,D=void 0,A=void 0,k=void 0;if(c){var L=n.dataToPoint([S,M]);if(h)I=n.dataToPoint([T,M])[0];C=I,D=L[1]+v,A=L[0]-I,k=y,Math.abs(A)<f&&(A=(A<0?-1:1)*f)}else{L=n.dataToPoint([M,S]);if(h)I=n.dataToPoint([M,T])[1];C=L[0]+v,D=I,A=y,k=L[1]-I,Math.abs(k)<f&&(k=(k<=0?-1:1)*f)}d?(l[w]=C,l[w+1]=D,l[w+2]=c?A:k,u&&(u[w]=c?x.x:C,u[w+1]=c?D:x.y,u[w+2]=_),m[i]=i):e.setItemLayout(i,{x:C,y:D,width:A,height:k}),w+=3}d&&e.setLayout({largePoints:l,largeDataIndices:m,largeBackgroundPoints:u,valueAxisHorizontal:c})}}}}}}function Lx(t){return t.coordinateSystem&&"cartesian2d"===t.coordinateSystem.type}function Px(t){return t.pipelineContext&&t.pipelineContext.large}var Ox=function(t){function e(e){var n=t.call(this,e)||this;return n.type="time",n}return n(e,t),e.prototype.getLabel=function(t){var e=this.getSetting("useUTC");return Vc(t.value,Pc[function(t){switch(t){case"year":case"month":return"day";case"millisecond":return"millisecond";default:return"second"}}(Ec(this._minLevelUnit))]||Pc.second,e,this.getSetting("locale"))},e.prototype.getFormattedLabel=function(t,e,n){var i=this.getSetting("useUTC");return function(t,e,n,i,r){var o=null;if(X(n))o=n;else if(U(n))o=n(t.value,e,{level:t.level});else{var a=A({},kc);if(t.level>0)for(var s=0;s<Oc.length;++s)a[Oc[s]]="{primary|"+a[Oc[s]]+"}";var l=n?!1===n.inherit?n:k(n,a):a,u=Bc(t.value,r);if(l[u])o=l[u];else if(l.inherit){for(s=Rc.indexOf(u)-1;s>=0;--s)if(l[u]){o=l[u];break}o=o||a.none}if(Y(o)){var h=null==t.level?0:t.level>=0?t.level:o.length+t.level;o=o[h=Math.min(h,o.length-1)]}}return Vc(new Date(t.value),o,r,i)}(t,e,n,this.getSetting("locale"),i)},e.prototype.getTicks=function(){var t=this._interval,e=this._extent,n=[];if(!t)return n;n.push({value:e[0],level:0});var i=this.getSetting("useUTC"),r=function(t,e,n,i){var r=1e4,o=Rc,a=0;function s(t,e,n,r,o,a,s){for(var l=new Date(e),u=e,h=l[r]();u<n&&u<=i[1];)s.push({value:u}),h+=t,l[o](h),u=l.getTime();s.push({value:u,notAdd:!0})}function l(t,r,o){var a=[],l=!r.length;if(!function(t,e,n,i){var r=jr(e),o=jr(n),a=function(t){return Fc(r,t,i)===Fc(o,t,i)},s=function(){return a("year")},l=function(){return s()&&a("month")},u=function(){return l()&&a("day")},h=function(){return u()&&a("hour")},c=function(){return h()&&a("minute")},p=function(){return c()&&a("second")},d=function(){return p()&&a("millisecond")};switch(t){case"year":return s();case"month":return l();case"day":return u();case"hour":return h();case"minute":return c();case"second":return p();case"millisecond":return d()}}(Ec(t),i[0],i[1],n)){l&&(r=[{value:Fx(new Date(i[0]),t,n)},{value:i[1]}]);for(var u=0;u<r.length-1;u++){var h=r[u].value,c=r[u+1].value;if(h!==c){var p=void 0,d=void 0,f=void 0,g=!1;switch(t){case"year":p=Math.max(1,Math.round(e/Dc/365)),d=Gc(n),f=jc(n);break;case"half-year":case"quarter":case"month":p=Ex(e),d=Wc(n),f=qc(n);break;case"week":case"half-week":case"day":p=Nx(e),d=Hc(n),f=Kc(n),g=!0;break;case"half-day":case"quarter-day":case"hour":p=zx(e),d=Yc(n),f=$c(n);break;case"minute":p=Vx(e,!0),d=Uc(n),f=Jc(n);break;case"second":p=Vx(e,!1),d=Xc(n),f=Qc(n);break;case"millisecond":p=Bx(e),d=Zc(n),f=tp(n)}s(p,h,c,d,f,g,a),"year"===t&&o.length>1&&0===u&&o.unshift({value:o[0].value-p})}}for(u=0;u<a.length;u++)o.push(a[u]);return a}}for(var u=[],h=[],c=0,p=0,d=0;d<o.length&&a++<r;++d){var f=Ec(o[d]);if(zc(o[d]))if(l(o[d],u[u.length-1]||[],h),f!==(o[d+1]?Ec(o[d+1]):null)){if(h.length){p=c,h.sort((function(t,e){return t.value-e.value}));for(var g=[],y=0;y<h.length;++y){var v=h[y].value;0!==y&&h[y-1].value===v||(g.push(h[y]),v>=i[0]&&v<=i[1]&&c++)}var m=(i[1]-i[0])/e;if(c>1.5*m&&p>m/1.5)break;if(u.push(g),c>m||t===o[d])break}h=[]}}0;var x=B(z(u,(function(t){return B(t,(function(t){return t.value>=i[0]&&t.value<=i[1]&&!t.notAdd}))})),(function(t){return t.length>0})),_=[],b=x.length-1;for(d=0;d<x.length;++d)for(var w=x[d],S=0;S<w.length;++S)_.push({value:w[S].value,level:b-d});_.sort((function(t,e){return t.value-e.value}));var M=[];for(d=0;d<_.length;++d)0!==d&&_[d].value===_[d-1].value||M.push(_[d]);return M}(this._minLevelUnit,this._approxInterval,i,e);return(n=n.concat(r)).push({value:e[1],level:0}),n},e.prototype.calcNiceExtent=function(t){var e=this._extent;if(e[0]===e[1]&&(e[0]-=Dc,e[1]+=Dc),e[1]===-1/0&&e[0]===1/0){var n=new Date;e[1]=+new Date(n.getFullYear(),n.getMonth(),n.getDate()),e[0]=e[1]-Dc}this.calcNiceTicks(t.splitNumber,t.minInterval,t.maxInterval)},e.prototype.calcNiceTicks=function(t,e,n){t=t||10;var i=this._extent,r=i[1]-i[0];this._approxInterval=r/t,null!=e&&this._approxInterval<e&&(this._approxInterval=e),null!=n&&this._approxInterval>n&&(this._approxInterval=n);var o=Rx.length,a=Math.min(function(t,e,n,i){for(;n<i;){var r=n+i>>>1;t[r][1]<e?n=r+1:i=r}return n}(Rx,this._approxInterval,0,o),o-1);this._interval=Rx[a][1],this._minLevelUnit=Rx[Math.max(a-1,0)][0]},e.prototype.parse=function(t){return j(t)?t:+jr(t)},e.prototype.contain=function(t){return dx(this.parse(t),this._extent)},e.prototype.normalize=function(t){return fx(this.parse(t),this._extent)},e.prototype.scale=function(t){return gx(t,this._extent)},e.type="time",e}(mx),Rx=[["second",Ic],["minute",Tc],["hour",Cc],["quarter-day",216e5],["half-day",432e5],["day",10368e4],["half-week",3024e5],["week",6048e5],["month",26784e5],["quarter",8208e6],["half-year",Ac/2],["year",Ac]];function Nx(t,e){return(t/=Dc)>16?16:t>7.5?7:t>3.5?4:t>1.5?2:1}function Ex(t){return(t/=2592e6)>6?6:t>3?3:t>2?2:1}function zx(t){return(t/=Cc)>12?12:t>6?6:t>3.5?4:t>2?2:1}function Vx(t,e){return(t/=e?Tc:Ic)>30?30:t>20?20:t>15?15:t>10?10:t>5?5:t>2?2:1}function Bx(t){return $r(t,!0)}function Fx(t,e,n){var i=new Date(t);switch(Ec(e)){case"year":case"month":i[qc(n)](0);case"day":i[Kc(n)](1);case"hour":i[$c(n)](0);case"minute":i[Jc(n)](0);case"second":i[Qc(n)](0),i[tp(n)](0)}return i.getTime()}rx.registerClass(Ox);var Gx=rx.prototype,Wx=mx.prototype,Hx=zr,Yx=Math.floor,Ux=Math.ceil,Xx=Math.pow,Zx=Math.log,jx=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="log",e.base=10,e._originalScale=new mx,e._interval=0,e}return n(e,t),e.prototype.getTicks=function(t){var e=this._originalScale,n=this._extent,i=e.getExtent();return z(Wx.getTicks.call(this,t),(function(t){var e=t.value,r=zr(Xx(this.base,e));return r=e===n[0]&&this._fixMin?Kx(r,i[0]):r,{value:r=e===n[1]&&this._fixMax?Kx(r,i[1]):r}}),this)},e.prototype.setExtent=function(t,e){var n=this.base;t=Zx(t)/Zx(n),e=Zx(e)/Zx(n),Wx.setExtent.call(this,t,e)},e.prototype.getExtent=function(){var t=this.base,e=Gx.getExtent.call(this);e[0]=Xx(t,e[0]),e[1]=Xx(t,e[1]);var n=this._originalScale.getExtent();return this._fixMin&&(e[0]=Kx(e[0],n[0])),this._fixMax&&(e[1]=Kx(e[1],n[1])),e},e.prototype.unionExtent=function(t){this._originalScale.unionExtent(t);var e=this.base;t[0]=Zx(t[0])/Zx(e),t[1]=Zx(t[1])/Zx(e),Gx.unionExtent.call(this,t)},e.prototype.unionExtentFromData=function(t,e){this.unionExtent(t.getApproximateExtent(e))},e.prototype.calcNiceTicks=function(t){t=t||10;var e=this._extent,n=e[1]-e[0];if(!(n===1/0||n<=0)){var i=qr(n);for(t/n*i<=.5&&(i*=10);!isNaN(i)&&Math.abs(i)<1&&Math.abs(i)>0;)i*=10;var r=[zr(Ux(e[0]/i)*i),zr(Yx(e[1]/i)*i)];this._interval=i,this._niceExtent=r}},e.prototype.calcNiceExtent=function(t){Wx.calcNiceExtent.call(this,t),this._fixMin=t.fixMin,this._fixMax=t.fixMax},e.prototype.parse=function(t){return t},e.prototype.contain=function(t){return dx(t=Zx(t)/Zx(this.base),this._extent)},e.prototype.normalize=function(t){return fx(t=Zx(t)/Zx(this.base),this._extent)},e.prototype.scale=function(t){return t=gx(t,this._extent),Xx(this.base,t)},e.type="log",e}(rx),qx=jx.prototype;function Kx(t,e){return Hx(t,Br(e))}qx.getMinorTicks=Wx.getMinorTicks,qx.getLabel=Wx.getLabel,rx.registerClass(jx);var $x=function(){function t(t,e,n){this._prepareParams(t,e,n)}return t.prototype._prepareParams=function(t,e,n){n[1]<n[0]&&(n=[NaN,NaN]),this._dataMin=n[0],this._dataMax=n[1];var i=this._isOrdinal="ordinal"===t.type;this._needCrossZero="interval"===t.type&&e.getNeedCrossZero&&e.getNeedCrossZero();var r=this._modelMinRaw=e.get("min",!0);U(r)?this._modelMinNum=e_(t,r({min:n[0],max:n[1]})):"dataMin"!==r&&(this._modelMinNum=e_(t,r));var o=this._modelMaxRaw=e.get("max",!0);if(U(o)?this._modelMaxNum=e_(t,o({min:n[0],max:n[1]})):"dataMax"!==o&&(this._modelMaxNum=e_(t,o)),i)this._axisDataLen=e.getCategories().length;else{var a=e.get("boundaryGap"),s=Y(a)?a:[a||0,a||0];"boolean"==typeof s[0]||"boolean"==typeof s[1]?this._boundaryGapInner=[0,0]:this._boundaryGapInner=[gr(s[0],1),gr(s[1],1)]}},t.prototype.calculate=function(){var t=this._isOrdinal,e=this._dataMin,n=this._dataMax,i=this._axisDataLen,r=this._boundaryGapInner,o=t?null:n-e||Math.abs(e),a="dataMin"===this._modelMinRaw?e:this._modelMinNum,s="dataMax"===this._modelMaxRaw?n:this._modelMaxNum,l=null!=a,u=null!=s;null==a&&(a=t?i?0:NaN:e-r[0]*o),null==s&&(s=t?i?i-1:NaN:n+r[1]*o),(null==a||!isFinite(a))&&(a=NaN),(null==s||!isFinite(s))&&(s=NaN);var h=nt(a)||nt(s)||t&&!i;this._needCrossZero&&(a>0&&s>0&&!l&&(a=0),a<0&&s<0&&!u&&(s=0));var c=this._determinedMin,p=this._determinedMax;return null!=c&&(a=c,l=!0),null!=p&&(s=p,u=!0),{min:a,max:s,minFixed:l,maxFixed:u,isBlank:h}},t.prototype.modifyDataMinMax=function(t,e){this[Qx[t]]=e},t.prototype.setDeterminedMinMax=function(t,e){var n=Jx[t];this[n]=e},t.prototype.freeze=function(){this.frozen=!0},t}(),Jx={min:"_determinedMin",max:"_determinedMax"},Qx={min:"_dataMin",max:"_dataMax"};function t_(t,e,n){var i=t.rawExtentInfo;return i||(i=new $x(t,e,n),t.rawExtentInfo=i,i)}function e_(t,e){return null==e?null:nt(e)?NaN:t.parse(e)}function n_(t,e){var n=t.type,i=t_(t,e,t.getExtent()).calculate();t.setBlank(i.isBlank);var r=i.min,o=i.max,a=e.ecModel;if(a&&"time"===n){var s=Tx("bar",a),l=!1;if(E(s,(function(t){l=l||t.getBaseAxis()===e.axis})),l){var u=Cx(s),h=function(t,e,n,i){var r=n.axis.getExtent(),o=r[1]-r[0],a=function(t,e,n){if(t&&e){var i=t[Ix(e)];return null!=i&&null!=n?i[Mx(n)]:i}}(i,n.axis);if(void 0===a)return{min:t,max:e};var s=1/0;E(a,(function(t){s=Math.min(t.offset,s)}));var l=-1/0;E(a,(function(t){l=Math.max(t.offset+t.width,l)})),s=Math.abs(s),l=Math.abs(l);var u=s+l,h=e-t,c=h/(1-(s+l)/o)-h;return{min:t-=c*(s/u),max:e+=c*(l/u)}}(r,o,e,u);r=h.min,o=h.max}}return{extent:[r,o],fixMin:i.minFixed,fixMax:i.maxFixed}}function i_(t,e){var n=e,i=n_(t,n),r=i.extent,o=n.get("splitNumber");t instanceof jx&&(t.base=n.get("logBase"));var a=t.type,s=n.get("interval"),l="interval"===a||"time"===a;t.setExtent(r[0],r[1]),t.calcNiceExtent({splitNumber:o,fixMin:i.fixMin,fixMax:i.fixMax,minInterval:l?n.get("minInterval"):null,maxInterval:l?n.get("maxInterval"):null}),null!=s&&t.setInterval&&t.setInterval(s)}function r_(t,e){if(e=e||t.get("type"))switch(e){case"category":return new yx({ordinalMeta:t.getOrdinalMeta?t.getOrdinalMeta():t.getCategories(),extent:[1/0,-1/0]});case"time":return new Ox({locale:t.ecModel.getLocaleModel(),useUTC:t.ecModel.get("useUTC")});default:return new(rx.getClass(e)||mx)}}function o_(t){var e,n,i=t.getLabelModel().get("formatter"),r="category"===t.type?t.scale.getExtent()[0]:null;return"time"===t.scale.type?(n=i,function(e,i){return t.scale.getFormattedLabel(e,i,n)}):X(i)?function(e){return function(n){var i=t.scale.getLabel(n);return e.replace("{value}",null!=i?i:"")}}(i):U(i)?(e=i,function(n,i){return null!=r&&(i=n.value-r),e(a_(t,n),i,null!=n.level?{level:n.level}:null)}):function(e){return t.scale.getLabel(e)}}function a_(t,e){return"category"===t.type?t.scale.getLabel(e):e.value}function s_(t,e){var n=e*Math.PI/180,i=t.width,r=t.height,o=i*Math.abs(Math.cos(n))+Math.abs(r*Math.sin(n)),a=i*Math.abs(Math.sin(n))+Math.abs(r*Math.cos(n));return new sr(t.x,t.y,o,a)}function l_(t){var e=t.get("interval");return null==e?"auto":e}function u_(t){return"category"===t.type&&0===l_(t.getLabelModel())}function h_(t,e){var n={};return E(t.mapDimensionsAll(e),(function(e){n[nx(t,e)]=!0})),G(n)}var c_=function(){function t(){}return t.prototype.getNeedCrossZero=function(){return!this.option.scale},t.prototype.getCoordSysModel=function(){},t}();var p_={isDimensionStacked:ex,enableDataStack:tx,getStackedDimension:nx};var d_=Object.freeze({__proto__:null,createList:function(t){return ix(null,t)},getLayoutRect:xp,dataStack:p_,createScale:function(t,e){var n=e;e instanceof dc||(n=new dc(e));var i=r_(n);return i.setExtent(t[0],t[1]),i_(i,n),i},mixinAxisModelCommonMethods:function(t){R(t,c_)},getECData:Hs,createTextStyle:function(t,e){return Uh(t,null,null,"normal"!==(e=e||{}).state)},createDimensions:function(t,e){return qm(t,e).dimensions},createSymbol:Ly,enableHoverEmphasis:Ol});function f_(t,e){return Math.abs(t-e)<1e-8}function g_(t,e,n){var i=0,r=t[0];if(!r)return!1;for(var o=1;o<t.length;o++){var a=t[o];i+=is(r[0],r[1],a[0],a[1],e,n),r=a}var s=t[0];return f_(r[0],s[0])&&f_(r[1],s[1])||(i+=is(r[0],r[1],s[0],s[1],e,n)),0!==i}var y_=[];function v_(t,e){for(var n=0;n<t.length;n++)Ft(t[n],t[n],e)}function m_(t,e,n,i){for(var r=0;r<t.length;r++){var o=t[r];i&&(o=i.project(o)),o&&isFinite(o[0])&&isFinite(o[1])&&(Gt(e,e,o),Wt(n,n,o))}}var x_=function(){function t(t){this.name=t}return t.prototype.setCenter=function(t){this._center=t},t.prototype.getCenter=function(){var t=this._center;return t||(t=this._center=this.calcCenter()),t},t}(),__=function(t,e){this.type="polygon",this.exterior=t,this.interiors=e},b_=function(t){this.type="linestring",this.points=t},w_=function(t){function e(e,n,i){var r=t.call(this,e)||this;return r.type="geoJSON",r.geometries=n,r._center=i&&[i[0],i[1]],r}return n(e,t),e.prototype.calcCenter=function(){for(var t,e=this.geometries,n=0,i=0;i<e.length;i++){var r=e[i],o=r.exterior,a=o&&o.length;a>n&&(t=r,n=a)}if(t)return function(t){for(var e=0,n=0,i=0,r=t.length,o=t[r-1][0],a=t[r-1][1],s=0;s<r;s++){var l=t[s][0],u=t[s][1],h=o*u-l*a;e+=h,n+=(o+l)*h,i+=(a+u)*h,o=l,a=u}return e?[n/e/3,i/e/3,e]:[t[0][0]||0,t[0][1]||0]}(t.exterior);var s=this.getBoundingRect();return[s.x+s.width/2,s.y+s.height/2]},e.prototype.getBoundingRect=function(t){var e=this._rect;if(e&&!t)return e;var n=[1/0,1/0],i=[-1/0,-1/0];return E(this.geometries,(function(e){"polygon"===e.type?m_(e.exterior,n,i,t):E(e.points,(function(e){m_(e,n,i,t)}))})),isFinite(n[0])&&isFinite(n[1])&&isFinite(i[0])&&isFinite(i[1])||(n[0]=n[1]=i[0]=i[1]=0),e=new sr(n[0],n[1],i[0]-n[0],i[1]-n[1]),t||(this._rect=e),e},e.prototype.contain=function(t){var e=this.getBoundingRect(),n=this.geometries;if(!e.contain(t[0],t[1]))return!1;t:for(var i=0,r=n.length;i<r;i++){var o=n[i];if("polygon"===o.type){var a=o.exterior,s=o.interiors;if(g_(a,t[0],t[1])){for(var l=0;l<(s?s.length:0);l++)if(g_(s[l],t[0],t[1]))continue t;return!0}}}return!1},e.prototype.transformTo=function(t,e,n,i){var r=this.getBoundingRect(),o=r.width/r.height;n?i||(i=n/o):n=o*i;for(var a=new sr(t,e,n,i),s=r.calculateTransform(a),l=this.geometries,u=0;u<l.length;u++){var h=l[u];"polygon"===h.type?(v_(h.exterior,s),E(h.interiors,(function(t){v_(t,s)}))):E(h.points,(function(t){v_(t,s)}))}(r=this._rect).copy(a),this._center=[r.x+r.width/2,r.y+r.height/2]},e.prototype.cloneShallow=function(t){null==t&&(t=this.name);var n=new e(t,this.geometries,this._center);return n._rect=this._rect,n.transformTo=null,n},e}(x_),S_=function(t){function e(e,n){var i=t.call(this,e)||this;return i.type="geoSVG",i._elOnlyForCalculate=n,i}return n(e,t),e.prototype.calcCenter=function(){for(var t=this._elOnlyForCalculate,e=t.getBoundingRect(),n=[e.x+e.width/2,e.y+e.height/2],i=Oi(y_),r=t;r&&!r.isGeoSVGGraphicRoot;)Ni(i,r.getLocalTransform(),i),r=r.parent;return Bi(i,i),Ft(n,n,i),n},e}(x_);function M_(t,e,n){for(var i=0;i<t.length;i++)t[i]=I_(t[i],e[i],n)}function I_(t,e,n){for(var i=[],r=e[0],o=e[1],a=0;a<t.length;a+=2){var s=t.charCodeAt(a)-64,l=t.charCodeAt(a+1)-64;s=s>>1^-(1&s),l=l>>1^-(1&l),r=s+=r,o=l+=o,i.push([s/n,l/n])}return i}function T_(t,e){return z(B((t=function(t){if(!t.UTF8Encoding)return t;var e=t,n=e.UTF8Scale;return null==n&&(n=1024),E(e.features,(function(t){var e=t.geometry,i=e.encodeOffsets,r=e.coordinates;if(i)switch(e.type){case"LineString":e.coordinates=I_(r,i,n);break;case"Polygon":case"MultiLineString":M_(r,i,n);break;case"MultiPolygon":E(r,(function(t,e){return M_(t,i[e],n)}))}})),e.UTF8Encoding=!1,e}(t)).features,(function(t){return t.geometry&&t.properties&&t.geometry.coordinates.length>0})),(function(t){var n=t.properties,i=t.geometry,r=[];switch(i.type){case"Polygon":var o=i.coordinates;r.push(new __(o[0],o.slice(1)));break;case"MultiPolygon":E(i.coordinates,(function(t){t[0]&&r.push(new __(t[0],t.slice(1)))}));break;case"LineString":r.push(new b_([i.coordinates]));break;case"MultiLineString":r.push(new b_(i.coordinates))}var a=new w_(n[e||"name"],r,n.cp);return a.properties=n,a}))}var C_=Object.freeze({__proto__:null,linearMap:Nr,round:zr,asc:Vr,getPrecision:Br,getPrecisionSafe:Fr,getPixelPrecision:Gr,getPercentWithPrecision:Wr,MAX_SAFE_INTEGER:Yr,remRadian:Ur,isRadianAroundZero:Xr,parseDate:jr,quantity:qr,quantityExponent:Kr,nice:$r,quantile:Jr,reformIntervals:Qr,isNumeric:eo,numericToNumber:to}),D_=Object.freeze({__proto__:null,parse:jr,format:Vc}),A_=Object.freeze({__proto__:null,extendShape:fh,extendPath:yh,makePath:xh,makeImage:_h,mergePath:wh,resizePath:Sh,createIcon:Ph,updateProps:rh,initProps:oh,getTransform:Ih,clipPointsByRect:kh,clipRectByRect:Lh,registerShape:vh,getShapeClass:mh,Group:Cr,Image:_s,Text:ks,Circle:hu,Ellipse:pu,Sector:Cu,Ring:Au,Polygon:Pu,Polyline:Ru,Rect:Cs,Line:zu,BezierCurve:Gu,Arc:Hu,IncrementalDisplayable:th,CompoundPath:Yu,LinearGradient:Xu,RadialGradient:Zu,BoundingRect:sr}),k_=Object.freeze({__proto__:null,addCommas:ep,toCamelCase:np,normalizeCssArray:ip,encodeHTML:ap,formatTpl:hp,getTooltipMarker:cp,formatTime:function(t,e,n){"week"!==t&&"month"!==t&&"quarter"!==t&&"half-year"!==t&&"year"!==t||(t="MM-dd\nyyyy");var i=jr(e),r=n?"getUTC":"get",o=i[r+"FullYear"](),a=i[r+"Month"]()+1,s=i[r+"Date"](),l=i[r+"Hours"](),u=i[r+"Minutes"](),h=i[r+"Seconds"](),c=i[r+"Milliseconds"]();return t=t.replace("MM",Nc(a,2)).replace("M",a).replace("yyyy",o).replace("yy",o%100+"").replace("dd",Nc(s,2)).replace("d",s).replace("hh",Nc(l,2)).replace("h",l).replace("mm",Nc(u,2)).replace("m",u).replace("ss",Nc(h,2)).replace("s",h).replace("SSS",Nc(c,3))},capitalFirst:function(t){return t?t.charAt(0).toUpperCase()+t.substr(1):t},truncateText:$o,getTextRect:function(t,e,n,i,r,o,a,s){return new ks({style:{text:t,font:e,align:n,verticalAlign:i,padding:r,rich:o,overflow:a?"truncate":null,lineHeight:s}}).getBoundingRect()}}),L_=Object.freeze({__proto__:null,map:z,each:E,indexOf:P,inherits:O,reduce:V,filter:B,bind:W,curry:H,isArray:Y,isString:X,isObject:q,isFunction:U,extend:A,defaults:k,clone:T,merge:C}),P_=So();function O_(t){return"category"===t.type?function(t){var e=t.getLabelModel(),n=N_(t,e);return!e.get("show")||t.scale.isBlank()?{labels:[],labelCategoryInterval:n.labelCategoryInterval}:n}(t):function(t){var e=t.scale.getTicks(),n=o_(t);return{labels:z(e,(function(e,i){return{level:e.level,formattedLabel:n(e,i),rawLabel:t.scale.getLabel(e),tickValue:e.value}}))}}(t)}function R_(t,e){return"category"===t.type?function(t,e){var n,i,r=E_(t,"ticks"),o=l_(e),a=z_(r,o);if(a)return a;e.get("show")&&!t.scale.isBlank()||(n=[]);if(U(o))n=F_(t,o,!0);else if("auto"===o){var s=N_(t,t.getLabelModel());i=s.labelCategoryInterval,n=z(s.labels,(function(t){return t.tickValue}))}else n=B_(t,i=o,!0);return V_(r,o,{ticks:n,tickCategoryInterval:i})}(t,e):{ticks:z(t.scale.getTicks(),(function(t){return t.value}))}}function N_(t,e){var n,i,r=E_(t,"labels"),o=l_(e),a=z_(r,o);return a||(U(o)?n=F_(t,o):(i="auto"===o?function(t){var e=P_(t).autoInterval;return null!=e?e:P_(t).autoInterval=t.calculateCategoryInterval()}(t):o,n=B_(t,i)),V_(r,o,{labels:n,labelCategoryInterval:i}))}function E_(t,e){return P_(t)[e]||(P_(t)[e]=[])}function z_(t,e){for(var n=0;n<t.length;n++)if(t[n].key===e)return t[n].value}function V_(t,e,n){return t.push({key:e,value:n}),n}function B_(t,e,n){var i=o_(t),r=t.scale,o=r.getExtent(),a=t.getLabelModel(),s=[],l=Math.max((e||0)+1,1),u=o[0],h=r.count();0!==u&&l>1&&h/l>2&&(u=Math.round(Math.ceil(u/l)*l));var c=u_(t),p=a.get("showMinLabel")||c,d=a.get("showMaxLabel")||c;p&&u!==o[0]&&g(o[0]);for(var f=u;f<=o[1];f+=l)g(f);function g(t){var e={value:t};s.push(n?t:{formattedLabel:i(e),rawLabel:r.getLabel(e),tickValue:t})}return d&&f-l!==o[1]&&g(o[1]),s}function F_(t,e,n){var i=t.scale,r=o_(t),o=[];return E(i.getTicks(),(function(t){var a=i.getLabel(t),s=t.value;e(t.value,a)&&o.push(n?s:{formattedLabel:r(t),rawLabel:a,tickValue:s})})),o}var G_=[0,1],W_=function(){function t(t,e,n){this.onBand=!1,this.inverse=!1,this.dim=t,this.scale=e,this._extent=n||[0,0]}return t.prototype.contain=function(t){var e=this._extent,n=Math.min(e[0],e[1]),i=Math.max(e[0],e[1]);return t>=n&&t<=i},t.prototype.containData=function(t){return this.scale.contain(t)},t.prototype.getExtent=function(){return this._extent.slice()},t.prototype.getPixelPrecision=function(t){return Gr(t||this.scale.getExtent(),this._extent)},t.prototype.setExtent=function(t,e){var n=this._extent;n[0]=t,n[1]=e},t.prototype.dataToCoord=function(t,e){var n=this._extent,i=this.scale;return t=i.normalize(t),this.onBand&&"ordinal"===i.type&&H_(n=n.slice(),i.count()),Nr(t,G_,n,e)},t.prototype.coordToData=function(t,e){var n=this._extent,i=this.scale;this.onBand&&"ordinal"===i.type&&H_(n=n.slice(),i.count());var r=Nr(t,n,G_,e);return this.scale.scale(r)},t.prototype.pointToData=function(t,e){},t.prototype.getTicksCoords=function(t){var e=(t=t||{}).tickModel||this.getTickModel(),n=z(R_(this,e).ticks,(function(t){return{coord:this.dataToCoord("ordinal"===this.scale.type?this.scale.getRawOrdinalNumber(t):t),tickValue:t}}),this);return function(t,e,n,i){var r=e.length;if(!t.onBand||n||!r)return;var o,a,s=t.getExtent();if(1===r)e[0].coord=s[0],o=e[1]={coord:s[0]};else{var l=e[r-1].tickValue-e[0].tickValue,u=(e[r-1].coord-e[0].coord)/l;E(e,(function(t){t.coord-=u/2})),a=1+t.scale.getExtent()[1]-e[r-1].tickValue,o={coord:e[r-1].coord+u*a},e.push(o)}var h=s[0]>s[1];c(e[0].coord,s[0])&&(i?e[0].coord=s[0]:e.shift());i&&c(s[0],e[0].coord)&&e.unshift({coord:s[0]});c(s[1],o.coord)&&(i?o.coord=s[1]:e.pop());i&&c(o.coord,s[1])&&e.push({coord:s[1]});function c(t,e){return t=zr(t),e=zr(e),h?t>e:t<e}}(this,n,e.get("alignWithLabel"),t.clamp),n},t.prototype.getMinorTicksCoords=function(){if("ordinal"===this.scale.type)return[];var t=this.model.getModel("minorTick").get("splitNumber");return t>0&&t<100||(t=5),z(this.scale.getMinorTicks(t),(function(t){return z(t,(function(t){return{coord:this.dataToCoord(t),tickValue:t}}),this)}),this)},t.prototype.getViewLabels=function(){return O_(this).labels},t.prototype.getLabelModel=function(){return this.model.getModel("axisLabel")},t.prototype.getTickModel=function(){return this.model.getModel("axisTick")},t.prototype.getBandWidth=function(){var t=this._extent,e=this.scale.getExtent(),n=e[1]-e[0]+(this.onBand?1:0);0===n&&(n=1);var i=Math.abs(t[1]-t[0]);return Math.abs(i)/n},t.prototype.calculateCategoryInterval=function(){return function(t){var e=function(t){var e=t.getLabelModel();return{axisRotate:t.getRotate?t.getRotate():t.isHorizontal&&!t.isHorizontal()?90:0,labelRotate:e.get("rotate")||0,font:e.getFont()}}(t),n=o_(t),i=(e.axisRotate-e.labelRotate)/180*Math.PI,r=t.scale,o=r.getExtent(),a=r.count();if(o[1]-o[0]<1)return 0;var s=1;a>40&&(s=Math.max(1,Math.floor(a/40)));for(var l=o[0],u=t.dataToCoord(l+1)-t.dataToCoord(l),h=Math.abs(u*Math.cos(i)),c=Math.abs(u*Math.sin(i)),p=0,d=0;l<=o[1];l+=s){var f,g,y=cr(n({value:l}),e.font,"center","top");f=1.3*y.width,g=1.3*y.height,p=Math.max(p,f,7),d=Math.max(d,g,7)}var v=p/h,m=d/c;isNaN(v)&&(v=1/0),isNaN(m)&&(m=1/0);var x=Math.max(0,Math.floor(Math.min(v,m))),_=P_(t.model),b=t.getExtent(),w=_.lastAutoInterval,S=_.lastTickCount;return null!=w&&null!=S&&Math.abs(w-x)<=1&&Math.abs(S-a)<=1&&w>x&&_.axisExtent0===b[0]&&_.axisExtent1===b[1]?x=w:(_.lastTickCount=a,_.lastAutoInterval=x,_.axisExtent0=b[0],_.axisExtent1=b[1]),x}(this)},t}();function H_(t,e){var n=(t[1]-t[0])/e/2;t[0]+=n,t[1]-=n}var Y_=2*Math.PI,U_=qa.CMD,X_=["top","right","bottom","left"];function Z_(t,e,n,i,r){var o=n.width,a=n.height;switch(t){case"top":i.set(n.x+o/2,n.y-e),r.set(0,-1);break;case"bottom":i.set(n.x+o/2,n.y+a+e),r.set(0,1);break;case"left":i.set(n.x-e,n.y+a/2),r.set(-1,0);break;case"right":i.set(n.x+o+e,n.y+a/2),r.set(1,0)}}function j_(t,e,n,i,r,o,a,s,l){a-=t,s-=e;var u=Math.sqrt(a*a+s*s),h=(a/=u)*n+t,c=(s/=u)*n+e;if(Math.abs(i-r)%Y_<1e-4)return l[0]=h,l[1]=c,u-n;if(o){var p=i;i=ts(r),r=ts(p)}else i=ts(i),r=ts(r);i>r&&(r+=Y_);var d=Math.atan2(s,a);if(d<0&&(d+=Y_),d>=i&&d<=r||d+Y_>=i&&d+Y_<=r)return l[0]=h,l[1]=c,u-n;var f=n*Math.cos(i)+t,g=n*Math.sin(i)+e,y=n*Math.cos(r)+t,v=n*Math.sin(r)+e,m=(f-a)*(f-a)+(g-s)*(g-s),x=(y-a)*(y-a)+(v-s)*(v-s);return m<x?(l[0]=f,l[1]=g,Math.sqrt(m)):(l[0]=y,l[1]=v,Math.sqrt(x))}function q_(t,e,n,i,r,o,a,s){var l=r-t,u=o-e,h=n-t,c=i-e,p=Math.sqrt(h*h+c*c),d=(l*(h/=p)+u*(c/=p))/p;s&&(d=Math.min(Math.max(d,0),1)),d*=p;var f=a[0]=t+d*h,g=a[1]=e+d*c;return Math.sqrt((f-r)*(f-r)+(g-o)*(g-o))}function K_(t,e,n,i,r,o,a){n<0&&(t+=n,n=-n),i<0&&(e+=i,i=-i);var s=t+n,l=e+i,u=a[0]=Math.min(Math.max(r,t),s),h=a[1]=Math.min(Math.max(o,e),l);return Math.sqrt((u-r)*(u-r)+(h-o)*(h-o))}var $_=[];function J_(t,e,n){var i=K_(e.x,e.y,e.width,e.height,t.x,t.y,$_);return n.set($_[0],$_[1]),i}function Q_(t,e,n){for(var i,r,o=0,a=0,s=0,l=0,u=1/0,h=e.data,c=t.x,p=t.y,d=0;d<h.length;){var f=h[d++];1===d&&(s=o=h[d],l=a=h[d+1]);var g=u;switch(f){case U_.M:o=s=h[d++],a=l=h[d++];break;case U_.L:g=q_(o,a,h[d],h[d+1],c,p,$_,!0),o=h[d++],a=h[d++];break;case U_.C:g=je(o,a,h[d++],h[d++],h[d++],h[d++],h[d],h[d+1],c,p,$_),o=h[d++],a=h[d++];break;case U_.Q:g=tn(o,a,h[d++],h[d++],h[d],h[d+1],c,p,$_),o=h[d++],a=h[d++];break;case U_.A:var y=h[d++],v=h[d++],m=h[d++],x=h[d++],_=h[d++],b=h[d++];d+=1;var w=!!(1-h[d++]);i=Math.cos(_)*m+y,r=Math.sin(_)*x+v,d<=1&&(s=i,l=r),g=j_(y,v,x,_,_+b,w,(c-y)*x/m+y,p,$_),o=Math.cos(_+b)*m+y,a=Math.sin(_+b)*x+v;break;case U_.R:g=K_(s=o=h[d++],l=a=h[d++],h[d++],h[d++],c,p,$_);break;case U_.Z:g=q_(o,a,s,l,c,p,$_,!0),o=s,a=l}g<u&&(u=g,n.set($_[0],$_[1]))}return u}var tb=new Ji,eb=new Ji,nb=new Ji,ib=new Ji,rb=new Ji;function ob(t,e){if(t){var n=t.getTextGuideLine(),i=t.getTextContent();if(i&&n){var r=t.textGuideLineConfig||{},o=[[0,0],[0,0],[0,0]],a=r.candidates||X_,s=i.getBoundingRect().clone();s.applyTransform(i.getComputedTransform());var l=1/0,u=r.anchor,h=t.getComputedTransform(),c=h&&Bi([],h),p=e.get("length2")||0;u&&nb.copy(u);for(var d=0;d<a.length;d++){Z_(a[d],0,s,tb,ib),Ji.scaleAndAdd(eb,tb,ib,p),eb.transform(c);var f=t.getBoundingRect(),g=u?u.distance(eb):t instanceof gs?Q_(eb,t.path,nb):J_(eb,f,nb);g<l&&(l=g,eb.transform(h),nb.transform(h),nb.toArray(o[0]),eb.toArray(o[1]),tb.toArray(o[2]))}lb(o,e.get("minTurnAngle")),n.setShape({points:o})}}}var ab=[],sb=new Ji;function lb(t,e){if(e<=180&&e>0){e=e/180*Math.PI,tb.fromArray(t[0]),eb.fromArray(t[1]),nb.fromArray(t[2]),Ji.sub(ib,tb,eb),Ji.sub(rb,nb,eb);var n=ib.len(),i=rb.len();if(!(n<.001||i<.001)){ib.scale(1/n),rb.scale(1/i);var r=ib.dot(rb);if(Math.cos(e)<r){var o=q_(eb.x,eb.y,nb.x,nb.y,tb.x,tb.y,ab,!1);sb.fromArray(ab),sb.scaleAndAdd(rb,o/Math.tan(Math.PI-e));var a=nb.x!==eb.x?(sb.x-eb.x)/(nb.x-eb.x):(sb.y-eb.y)/(nb.y-eb.y);if(isNaN(a))return;a<0?Ji.copy(sb,eb):a>1&&Ji.copy(sb,nb),sb.toArray(t[1])}}}}function ub(t,e,n){if(n<=180&&n>0){n=n/180*Math.PI,tb.fromArray(t[0]),eb.fromArray(t[1]),nb.fromArray(t[2]),Ji.sub(ib,eb,tb),Ji.sub(rb,nb,eb);var i=ib.len(),r=rb.len();if(!(i<.001||r<.001))if(ib.scale(1/i),rb.scale(1/r),ib.dot(e)<Math.cos(n)){var o=q_(eb.x,eb.y,nb.x,nb.y,tb.x,tb.y,ab,!1);sb.fromArray(ab);var a=Math.PI/2,s=a+Math.acos(rb.dot(e))-n;if(s>=a)Ji.copy(sb,nb);else{sb.scaleAndAdd(rb,o/Math.tan(Math.PI/2-s));var l=nb.x!==eb.x?(sb.x-eb.x)/(nb.x-eb.x):(sb.y-eb.y)/(nb.y-eb.y);if(isNaN(l))return;l<0?Ji.copy(sb,eb):l>1&&Ji.copy(sb,nb)}sb.toArray(t[1])}}}function hb(t,e,n,i){var r="normal"===n,o=r?t:t.ensureState(n);o.ignore=e;var a=i.get("smooth");a&&!0===a&&(a=.3),o.shape=o.shape||{},a>0&&(o.shape.smooth=a);var s=i.getModel("lineStyle").getLineStyle();r?t.useStyle(s):o.style=s}function cb(t,e){var n=e.smooth,i=e.points;if(i)if(t.moveTo(i[0][0],i[0][1]),n>0&&i.length>=3){var r=Et(i[0],i[1]),o=Et(i[1],i[2]);if(!r||!o)return t.lineTo(i[1][0],i[1][1]),void t.lineTo(i[2][0],i[2][1]);var a=Math.min(r,o)*n,s=Bt([],i[1],i[0],a/r),l=Bt([],i[1],i[2],a/o),u=Bt([],s,l,.5);t.bezierCurveTo(s[0],s[1],s[0],s[1],u[0],u[1]),t.bezierCurveTo(l[0],l[1],l[0],l[1],i[2][0],i[2][1])}else for(var h=1;h<i.length;h++)t.lineTo(i[h][0],i[h][1])}function pb(t,e,n){var i=t.getTextGuideLine(),r=t.getTextContent();if(r){for(var o=e.normal,a=o.get("show"),s=r.ignore,l=0;l<Ks.length;l++){var u=Ks[l],h=e[u],c="normal"===u;if(h){var p=h.get("show");if((c?s:rt(r.states[u]&&r.states[u].ignore,s))||!rt(p,a)){var d=c?i:i&&i.states[u];d&&(d.ignore=!0);continue}i||(i=new Ru,t.setTextGuideLine(i),c||!s&&a||hb(i,!0,"normal",e.normal),t.stateProxy&&(i.stateProxy=t.stateProxy)),hb(i,!1,u,h)}}if(i){k(i.style,n),i.style.fill=null;var f=o.get("showAbove");(t.textGuideLineConfig=t.textGuideLineConfig||{}).showAbove=f||!1,i.buildPath=cb}}else i&&t.removeTextGuideLine()}function db(t,e){e=e||"labelLine";for(var n={normal:t.getModel(e)},i=0;i<qs.length;i++){var r=qs[i];n[r]=t.getModel([r,e])}return n}function fb(t){for(var e=[],n=0;n<t.length;n++){var i=t[n];if(!i.defaultAttr.ignore){var r=i.label,o=r.getComputedTransform(),a=r.getBoundingRect(),s=!o||o[1]<1e-5&&o[2]<1e-5,l=r.style.margin||0,u=a.clone();u.applyTransform(o),u.x-=l/2,u.y-=l/2,u.width+=l,u.height+=l;var h=s?new Ju(a,o):null;e.push({label:r,labelLine:i.labelLine,rect:u,localRect:a,obb:h,priority:i.priority,defaultAttr:i.defaultAttr,layoutOption:i.computedLayoutOption,axisAligned:s,transform:o})}}return e}function gb(t,e,n,i,r,o){var a=t.length;if(!(a<2)){t.sort((function(t,n){return t.rect[e]-n.rect[e]}));for(var s,l=0,u=!1,h=0,c=0;c<a;c++){var p=t[c],d=p.rect;(s=d[e]-l)<0&&(d[e]-=s,p.label[e]-=s,u=!0),h+=Math.max(-s,0),l=d[e]+d[n]}h>0&&o&&_(-h/a,0,a);var f,g,y=t[0],v=t[a-1];return m(),f<0&&b(-f,.8),g<0&&b(g,.8),m(),x(f,g,1),x(g,f,-1),m(),f<0&&w(-f),g<0&&w(g),u}function m(){f=y.rect[e]-i,g=r-v.rect[e]-v.rect[n]}function x(t,e,n){if(t<0){var i=Math.min(e,-t);if(i>0){_(i*n,0,a);var r=i+t;r<0&&b(-r*n,1)}else b(-t*n,1)}}function _(n,i,r){0!==n&&(u=!0);for(var o=i;o<r;o++){var a=t[o];a.rect[e]+=n,a.label[e]+=n}}function b(i,r){for(var o=[],s=0,l=1;l<a;l++){var u=t[l-1].rect,h=Math.max(t[l].rect[e]-u[e]-u[n],0);o.push(h),s+=h}if(s){var c=Math.min(Math.abs(i)/s,r);if(i>0)for(l=0;l<a-1;l++){_(o[l]*c,0,l+1)}else for(l=a-1;l>0;l--){_(-(o[l-1]*c),l,a)}}}function w(t){var e=t<0?-1:1;t=Math.abs(t);for(var n=Math.ceil(t/(a-1)),i=0;i<a-1;i++)if(e>0?_(n,0,i+1):_(-n,a-i-1,a),(t-=n)<=0)return}}function yb(t,e,n,i){return gb(t,"y","height",e,n,i)}function vb(t){var e=[];t.sort((function(t,e){return e.priority-t.priority}));var n=new sr(0,0,0,0);function i(t){if(!t.ignore){var e=t.ensureState("emphasis");null==e.ignore&&(e.ignore=!1)}t.ignore=!0}for(var r=0;r<t.length;r++){var o=t[r],a=o.axisAligned,s=o.localRect,l=o.transform,u=o.label,h=o.labelLine;n.copy(o.rect),n.width-=.1,n.height-=.1,n.x+=.05,n.y+=.05;for(var c=o.obb,p=!1,d=0;d<e.length;d++){var f=e[d];if(n.intersect(f.rect)){if(a&&f.axisAligned){p=!0;break}if(f.obb||(f.obb=new Ju(f.localRect,f.transform)),c||(c=new Ju(s,l)),c.intersect(f.obb)){p=!0;break}}}p?(i(u),h&&i(h)):(u.attr("ignore",o.defaultAttr.ignore),h&&h.attr("ignore",o.defaultAttr.labelGuideIgnore),e.push(o))}}function mb(t){if(t){for(var e=[],n=0;n<t.length;n++)e.push(t[n].slice());return e}}function xb(t,e){var n=t.label,i=e&&e.getTextGuideLine();return{dataIndex:t.dataIndex,dataType:t.dataType,seriesIndex:t.seriesModel.seriesIndex,text:t.label.style.text,rect:t.hostRect,labelRect:t.rect,align:n.style.align,verticalAlign:n.style.verticalAlign,labelLinePoints:mb(i&&i.shape.points)}}var _b=["align","verticalAlign","width","height","fontSize"],bb=new qi,wb=So(),Sb=So();function Mb(t,e,n){for(var i=0;i<n.length;i++){var r=n[i];null!=e[r]&&(t[r]=e[r])}}var Ib=["x","y","rotation"],Tb=function(){function t(){this._labelList=[],this._chartViewList=[]}return t.prototype.clearLabels=function(){this._labelList=[],this._chartViewList=[]},t.prototype._addLabel=function(t,e,n,i,r){var o=i.style,a=i.__hostTarget.textConfig||{},s=i.getComputedTransform(),l=i.getBoundingRect().plain();sr.applyTransform(l,l,s),s?bb.setLocalTransform(s):(bb.x=bb.y=bb.rotation=bb.originX=bb.originY=0,bb.scaleX=bb.scaleY=1);var u,h=i.__hostTarget;if(h){u=h.getBoundingRect().plain();var c=h.getComputedTransform();sr.applyTransform(u,u,c)}var p=u&&h.getTextGuideLine();this._labelList.push({label:i,labelLine:p,seriesModel:n,dataIndex:t,dataType:e,layoutOption:r,computedLayoutOption:null,rect:l,hostRect:u,priority:u?u.width*u.height:0,defaultAttr:{ignore:i.ignore,labelGuideIgnore:p&&p.ignore,x:bb.x,y:bb.y,scaleX:bb.scaleX,scaleY:bb.scaleY,rotation:bb.rotation,style:{x:o.x,y:o.y,align:o.align,verticalAlign:o.verticalAlign,width:o.width,height:o.height,fontSize:o.fontSize},cursor:i.cursor,attachedPos:a.position,attachedRot:a.rotation}})},t.prototype.addLabelsOfSeries=function(t){var e=this;this._chartViewList.push(t);var n=t.__model,i=n.get("labelLayout");(U(i)||G(i).length)&&t.group.traverse((function(t){if(t.ignore)return!0;var r=t.getTextContent(),o=Hs(t);r&&!r.disableLabelLayout&&e._addLabel(o.dataIndex,o.dataType,n,r,i)}))},t.prototype.updateLayoutConfig=function(t){var e=t.getWidth(),n=t.getHeight();function i(t,e){return function(){ob(t,e)}}for(var r=0;r<this._labelList.length;r++){var o=this._labelList[r],a=o.label,s=a.__hostTarget,l=o.defaultAttr,u=void 0;u=(u=U(o.layoutOption)?o.layoutOption(xb(o,s)):o.layoutOption)||{},o.computedLayoutOption=u;var h=Math.PI/180;s&&s.setTextConfig({local:!1,position:null!=u.x||null!=u.y?null:l.attachedPos,rotation:null!=u.rotate?u.rotate*h:l.attachedRot,offset:[u.dx||0,u.dy||0]});var c=!1;if(null!=u.x?(a.x=Er(u.x,e),a.setStyle("x",0),c=!0):(a.x=l.x,a.setStyle("x",l.style.x)),null!=u.y?(a.y=Er(u.y,n),a.setStyle("y",0),c=!0):(a.y=l.y,a.setStyle("y",l.style.y)),u.labelLinePoints){var p=s.getTextGuideLine();p&&(p.setShape({points:u.labelLinePoints}),c=!1)}wb(a).needsUpdateLabelLine=c,a.rotation=null!=u.rotate?u.rotate*h:l.rotation,a.scaleX=l.scaleX,a.scaleY=l.scaleY;for(var d=0;d<_b.length;d++){var f=_b[d];a.setStyle(f,null!=u[f]?u[f]:l.style[f])}if(u.draggable){if(a.draggable=!0,a.cursor="move",s){var g=o.seriesModel;if(null!=o.dataIndex)g=o.seriesModel.getData(o.dataType).getItemModel(o.dataIndex);a.on("drag",i(s,g.getModel("labelLine")))}}else a.off("drag"),a.cursor=l.cursor}},t.prototype.layout=function(t){var e,n=t.getWidth(),i=t.getHeight(),r=fb(this._labelList),o=B(r,(function(t){return"shiftX"===t.layoutOption.moveOverlap})),a=B(r,(function(t){return"shiftY"===t.layoutOption.moveOverlap}));gb(o,"x","width",0,n,e),yb(a,0,i),vb(B(r,(function(t){return t.layoutOption.hideOverlap})))},t.prototype.processLabelsOverall=function(){var t=this;E(this._chartViewList,(function(e){var n=e.__model,i=e.ignoreLabelLineUpdate,r=n.isAnimationEnabled();e.group.traverse((function(e){if(e.ignore&&!e.forceLabelAnimation)return!0;var o=!i,a=e.getTextContent();!o&&a&&(o=wb(a).needsUpdateLabelLine),o&&t._updateLabelLine(e,n),r&&t._animateLabels(e,n)}))}))},t.prototype._updateLabelLine=function(t,e){var n=t.getTextContent(),i=Hs(t),r=i.dataIndex;if(n&&null!=r){var o=e.getData(i.dataType),a=o.getItemModel(r),s={},l=o.getItemVisual(r,"style"),u=o.getVisual("drawType");s.stroke=l[u];var h=a.getModel("labelLine");pb(t,db(a),s),ob(t,h)}},t.prototype._animateLabels=function(t,e){var n=t.getTextContent(),i=t.getTextGuideLine();if(n&&(t.forceLabelAnimation||!n.ignore&&!n.invisible&&!t.disableLabelAnimation&&!ah(t))){var r=(d=wb(n)).oldLayout,o=Hs(t),a=o.dataIndex,s={x:n.x,y:n.y,rotation:n.rotation},l=e.getData(o.dataType);if(r){n.attr(r);var u=t.prevStates;u&&(P(u,"select")>=0&&n.attr(d.oldLayoutSelect),P(u,"emphasis")>=0&&n.attr(d.oldLayoutEmphasis)),rh(n,s,e,a)}else if(n.attr(s),!Jh(n).valueAnimation){var h=rt(n.style.opacity,1);n.style.opacity=0,oh(n,{style:{opacity:h}},e,a)}if(d.oldLayout=s,n.states.select){var c=d.oldLayoutSelect={};Mb(c,s,Ib),Mb(c,n.states.select,Ib)}if(n.states.emphasis){var p=d.oldLayoutEmphasis={};Mb(p,s,Ib),Mb(p,n.states.emphasis,Ib)}tc(n,a,l,e,e)}if(i&&!i.ignore&&!i.invisible){r=(d=Sb(i)).oldLayout;var d,f={points:i.shape.points};r?(i.attr({shape:r}),rh(i,{shape:f},e)):(i.setShape(f),i.style.strokePercent=0,oh(i,{style:{strokePercent:1}},e)),d.oldLayout=f}},t}(),Cb=So();var Db=Math.sin,Ab=Math.cos,kb=Math.PI,Lb=2*Math.PI,Pb=180/kb,Ob=function(){function t(){}return t.prototype.reset=function(t){this._start=!0,this._d=[],this._str="",this._p=Math.pow(10,t||4)},t.prototype.moveTo=function(t,e){this._add("M",t,e)},t.prototype.lineTo=function(t,e){this._add("L",t,e)},t.prototype.bezierCurveTo=function(t,e,n,i,r,o){this._add("C",t,e,n,i,r,o)},t.prototype.quadraticCurveTo=function(t,e,n,i){this._add("Q",t,e,n,i)},t.prototype.arc=function(t,e,n,i,r,o){this.ellipse(t,e,n,n,0,i,r,o)},t.prototype.ellipse=function(t,e,n,i,r,o,a,s){var l=a-o,u=!s,h=Math.abs(l),c=En(h-Lb)||(u?l>=Lb:-l>=Lb),p=l>0?l%Lb:l%Lb+Lb,d=!1;d=!!c||!En(h)&&p>=kb==!!u;var f=t+n*Ab(o),g=e+i*Db(o);this._start&&this._add("M",f,g);var y=Math.round(r*Pb);if(c){var v=1/this._p,m=(u?1:-1)*(Lb-v);this._add("A",n,i,y,1,+u,t+n*Ab(o+m),e+i*Db(o+m)),v>.01&&this._add("A",n,i,y,0,+u,f,g)}else{var x=t+n*Ab(a),_=e+i*Db(a);this._add("A",n,i,y,+d,+u,x,_)}},t.prototype.rect=function(t,e,n,i){this._add("M",t,e),this._add("l",n,0),this._add("l",0,i),this._add("l",-n,0),this._add("Z")},t.prototype.closePath=function(){this._d.length>0&&this._add("Z")},t.prototype._add=function(t,e,n,i,r,o,a,s,l){for(var u=[],h=this._p,c=1;c<arguments.length;c++){var p=arguments[c];if(isNaN(p))return void(this._invalid=!0);u.push(Math.round(p*h)/h)}this._d.push(t+u.join(" ")),this._start="Z"===t},t.prototype.generateStr=function(){this._str=this._invalid?"":this._d.join(""),this._d=[]},t.prototype.getStr=function(){return this._str},t}(),Rb="none",Nb=Math.round;var Eb=["lineCap","miterLimit","lineJoin"],zb=z(Eb,(function(t){return"stroke-"+t.toLowerCase()}));function Vb(t,e,n,i){var r=null==e.opacity?1:e.opacity;if(n instanceof _s)t("opacity",r);else{if(function(t){var e=t.fill;return null!=e&&e!==Rb}(e)){var o=Rn(e.fill);t("fill",o.color);var a=null!=e.fillOpacity?e.fillOpacity*o.opacity*r:o.opacity*r;(i||a<1)&&t("fill-opacity",a)}else t("fill",Rb);if(function(t){var e=t.stroke;return null!=e&&e!==Rb}(e)){var s=Rn(e.stroke);t("stroke",s.color);var l=e.strokeNoScale?n.getLineScale():1,u=l?(e.lineWidth||0)/l:0,h=null!=e.strokeOpacity?e.strokeOpacity*s.opacity*r:s.opacity*r,c=e.strokeFirst;if((i||1!==u)&&t("stroke-width",u),(i||c)&&t("paint-order",c?"stroke":"fill"),(i||h<1)&&t("stroke-opacity",h),e.lineDash){var p=zy(n),d=p[0],f=p[1];d&&(f=Nb(f||0),t("stroke-dasharray",d.join(",")),(f||i)&&t("stroke-dashoffset",f))}else i&&t("stroke-dasharray",Rb);for(var g=0;g<Eb.length;g++){var y=Eb[g];if(i||e[y]!==ps[y]){var v=e[y]||ps[y];v&&t(zb[g],v)}}}else i&&t("stroke",Rb)}}var Bb="http://www.w3.org/2000/svg",Fb="http://www.w3.org/1999/xlink";function Gb(t){return document.createElementNS(Bb,t)}function Wb(t,e,n,i,r){return{tag:t,attrs:n||{},children:i,text:r,key:e}}function Hb(t,e){var n=(e=e||{}).newline?"\n":"";return function t(e){var i=e.children,r=e.tag;return function(t,e){var n=[];if(e)for(var i in e){var r=e[i],o=i;!1!==r&&(!0!==r&&null!=r&&(o+='="'+r+'"'),n.push(o))}return"<"+t+" "+n.join(" ")+">"}(r,e.attrs)+(e.text||"")+(i?""+n+z(i,(function(e){return t(e)})).join(n)+n:"")+("</"+r+">")}(t)}function Yb(t){return{zrId:t,shadowCache:{},patternCache:{},gradientCache:{},clipPathCache:{},defs:{},cssNodes:{},cssAnims:{},cssClassIdx:0,cssAnimIdx:0,shadowIdx:0,gradientIdx:0,patternIdx:0,clipPathIdx:0}}function Ub(t,e,n,i){return Wb("svg","root",{width:t,height:e,xmlns:Bb,"xmlns:xlink":Fb,version:"1.1",baseProfile:"full",viewBox:!!i&&"0 0 "+t+" "+e},n)}var Xb={cubicIn:"0.32,0,0.67,0",cubicOut:"0.33,1,0.68,1",cubicInOut:"0.65,0,0.35,1",quadraticIn:"0.11,0,0.5,0",quadraticOut:"0.5,1,0.89,1",quadraticInOut:"0.45,0,0.55,1",quarticIn:"0.5,0,0.75,0",quarticOut:"0.25,1,0.5,1",quarticInOut:"0.76,0,0.24,1",quinticIn:"0.64,0,0.78,0",quinticOut:"0.22,1,0.36,1",quinticInOut:"0.83,0,0.17,1",sinusoidalIn:"0.12,0,0.39,0",sinusoidalOut:"0.61,1,0.88,1",sinusoidalInOut:"0.37,0,0.63,1",exponentialIn:"0.7,0,0.84,0",exponentialOut:"0.16,1,0.3,1",exponentialInOut:"0.87,0,0.13,1",circularIn:"0.55,0,1,0.45",circularOut:"0,0.55,0.45,1",circularInOut:"0.85,0,0.15,1"},Zb="transform-origin";function jb(t,e,n){var i=A({},t.shape);A(i,e),t.buildPath(n,i);var r=new Ob;return r.reset(Yn(t)),n.rebuildPath(r,1),r.generateStr(),r.getStr()}function qb(t,e){var n=e.originX,i=e.originY;(n||i)&&(t[Zb]=n+"px "+i+"px")}var Kb={fill:"fill",opacity:"opacity",lineWidth:"stroke-width",lineDashOffset:"stroke-dashoffset"};function $b(t,e){var n=e.zrId+"-ani-"+e.cssAnimIdx++;return e.cssAnims[n]=t,n}function Jb(t){return X(t)?Xb[t]?"cubic-bezier("+Xb[t]+")":rn(t)?t:"":""}function Qb(t,e,n,i){var r=t.animators,o=r.length,a=[];if(t instanceof Yu){if(y=function(t,e,n){var i,r,o=t.shape.paths,a={};if(E(o,(function(t){var e=Yb(n.zrId);e.animation=!0,Qb(t,{},e,!0);var o=e.cssAnims,s=e.cssNodes,l=G(o),u=l.length;if(u){var h=o[r=l[u-1]];for(var c in h){var p=h[c];a[c]=a[c]||{d:""},a[c].d+=p.d||""}for(var d in s){var f=s[d].animation;f.indexOf(r)>=0&&(i=f)}}})),i){e.d=!1;var s=$b(a,n);return i.replace(r,s)}}(t,e,n))a.push(y);else if(!o)return}else if(!o)return;for(var s={},l=0;l<o;l++){var u=r[l],h=[u.getMaxTime()/1e3+"s"],c=Jb(u.getClip().easing),p=u.getDelay();c?h.push(c):h.push("linear"),p&&h.push(p/1e3+"s"),u.getLoop()&&h.push("infinite");var d=h.join(" ");s[d]=s[d]||[d,[]],s[d][1].push(u)}function f(r){var o,a=r[1],s=a.length,l={},u={},h={};function c(t,e,n){for(var i=t.getTracks(),r=t.getMaxTime(),o=0;o<i.length;o++){var a=i[o];if(a.needsAnimate()){var s=a.keyframes,l=a.propName;if(n&&(l=n(l)),l)for(var u=0;u<s.length;u++){var h=s[u],c=Math.round(h.time/r*100)+"%",p=Jb(h.easing),d=h.rawValue;(X(d)||j(d))&&(e[c]=e[c]||{},e[c][l]=h.rawValue,p&&(e[c]["animation-timing-function"]=p))}}}}for(var p=0;p<s;p++){(w=(b=a[p]).targetName)?"shape"===w&&c(b,u):!i&&c(b,l)}for(var d in l){var f={};$i(f,t),A(f,l[d]);var g=Un(f),y=l[d]["animation-timing-function"];h[d]=g?{transform:g}:{},qb(h[d],f),y&&(h[d]["animation-timing-function"]=y)}var v=!0;for(var d in u){h[d]=h[d]||{};var m=!o;y=u[d]["animation-timing-function"];m&&(o=new qa);var x=o.len();o.reset(),h[d].d=jb(t,u[d],o);var _=o.len();if(!m&&x!==_){v=!1;break}y&&(h[d]["animation-timing-function"]=y)}if(!v)for(var d in h)delete h[d].d;if(!i)for(p=0;p<s;p++){var b,w;"style"===(w=(b=a[p]).targetName)&&c(b,h,(function(t){return Kb[t]}))}var S,M=G(h),I=!0;for(p=1;p<M.length;p++){var T=M[p-1],C=M[p];if(h[T][Zb]!==h[C][Zb]){I=!1;break}S=h[T][Zb]}if(I&&S){for(var d in h)h[d][Zb]&&delete h[d][Zb];e[Zb]=S}if(B(M,(function(t){return G(h[t]).length>0})).length)return $b(h,n)+" "+r[0]+" both"}for(var g in s){var y;(y=f(s[g]))&&a.push(y)}if(a.length){var v=n.zrId+"-cls-"+n.cssClassIdx++;n.cssNodes["."+v]={animation:a.join(",")},e.class=v}}var tw=Math.round;function ew(t){return t&&X(t.src)}function nw(t){return t&&U(t.toDataURL)}function iw(t,e,n,i){Vb((function(r,o){var a="fill"===r||"stroke"===r;a&&function(t){return t&&("linear"===t.type||"radial"===t.type)}(o)?function(t,e,n,i){var r,o=t[n],a={gradientUnits:o.global?"userSpaceOnUse":"objectBoundingBox"};if(Gn(o))r="linearGradient",a.x1=o.x,a.y1=o.y,a.x2=o.x2,a.y2=o.y2;else{if(!Wn(o))return void 0;r="radialGradient",a.cx=rt(o.x,.5),a.cy=rt(o.y,.5),a.r=rt(o.r,.5)}for(var s=o.colorStops,l=[],u=0,h=s.length;u<h;++u){var c=100*Vn(s[u].offset)+"%",p=Rn(s[u].color),d=p.color,f=p.opacity,g={offset:c};g["stop-color"]=d,f<1&&(g["stop-opacity"]=f),l.push(Wb("stop",u+"",g))}var y=Hb(Wb(r,"",a,l)),v=i.gradientCache,m=v[y];m||(m=i.zrId+"-g"+i.gradientIdx++,v[y]=m,a.id=m,i.defs[m]=Wb(r,m,a,l));e[n]=Hn(m)}(e,t,r,i):a&&function(t){return Fn(t)||function(t){return t&&!!t.svgElement}(t)}(o)?function(t,e,n,i){var r,o=t.style[n],a={patternUnits:"userSpaceOnUse"};if(Fn(o)){var s=o.imageWidth,l=o.imageHeight,u=void 0,h=o.image;if(X(h)?u=h:ew(h)?u=h.src:nw(h)&&(u=h.toDataURL()),"undefined"==typeof Image){var c="Image width/height must been given explictly in svg-ssr renderer.";lt(s,c),lt(l,c)}else if(null==s||null==l){var p=function(t,e){if(t){var n=t.elm,i=t.attrs.width=s||e.width,r=t.attrs.height=l||e.height;n&&(n.setAttribute("width",i),n.setAttribute("height",r))}},d=Zo(u,null,t,(function(t){p(f,t),p(r,t)}));d&&d.width&&d.height&&(s=s||d.width,l=l||d.height)}r=Wb("image","img",{href:u,width:s,height:l}),a.width=s,a.height=l}else o.svgElement&&(r=T(o.svgElement),a.width=o.svgWidth,a.height=o.svgHeight);if(!r)return;a.patternTransform=Un(o);var f=Wb("pattern","",a,[r]),g=Hb(f),y=i.patternCache,v=y[g];v||(v=i.zrId+"-p"+i.patternIdx++,y[g]=v,a.id=v,f=i.defs[v]=Wb("pattern",v,a,[r]));e[n]=Hn(v)}(n,t,r,i):t[r]=o}),e,n,!1),function(t,e,n){var i=t.style;if(function(t){return t&&(t.shadowBlur||t.shadowOffsetX||t.shadowOffsetY)}(i)){var r=function(t){var e=t.style,n=t.getGlobalScale();return[e.shadowColor,(e.shadowBlur||0).toFixed(2),(e.shadowOffsetX||0).toFixed(2),(e.shadowOffsetY||0).toFixed(2),n[0],n[1]].join(",")}(t),o=n.shadowCache,a=o[r];if(!a){var s=t.getGlobalScale(),l=s[0],u=s[1];if(!l||!u)return;var h=i.shadowOffsetX||0,c=i.shadowOffsetY||0,p=i.shadowBlur,d=Rn(i.shadowColor),f=d.opacity,g=d.color,y=p/2/l+" "+p/2/u;a=n.zrId+"-s"+n.shadowIdx++,n.defs[a]=Wb("filter",a,{id:a,x:"-100%",y:"-100%",width:"300%",height:"300%"},[Wb("feDropShadow","",{dx:h/l,dy:c/u,stdDeviation:y,"flood-color":g,"flood-opacity":f})]),o[r]=a}e.filter=Hn(a)}}(n,t,i)}function rw(t){return En(t[0]-1)&&En(t[1])&&En(t[2])&&En(t[3]-1)}function ow(t,e,n){if(e&&(!function(t){return En(t[4])&&En(t[5])}(e)||!rw(e))){var i=n?10:1e4;t.transform=rw(e)?"translate("+tw(e[4]*i)/i+" "+tw(e[5]*i)/i+")":function(t){return"matrix("+zn(t[0])+","+zn(t[1])+","+zn(t[2])+","+zn(t[3])+","+Vn(t[4])+","+Vn(t[5])+")"}(e)}}function aw(t,e,n){for(var i=t.points,r=[],o=0;o<i.length;o++)r.push(tw(i[o][0]*n)/n),r.push(tw(i[o][1]*n)/n);e.points=r.join(" ")}function sw(t){return!t.smooth}var lw,uw,hw={circle:[(lw=["cx","cy","r"],uw=z(lw,(function(t){return"string"==typeof t?[t,t]:t})),function(t,e,n){for(var i=0;i<uw.length;i++){var r=uw[i],o=t[r[0]];null!=o&&(e[r[1]]=tw(o*n)/n)}})],polyline:[aw,sw],polygon:[aw,sw]};function cw(t,e){var n=t.style,i=t.shape,r=hw[t.type],o={},a=e.animation,s="path",l=t.style.strokePercent,u=e.compress&&Yn(t)||4;if(!r||e.willUpdate||r[1]&&!r[1](i)||a&&function(t){for(var e=t.animators,n=0;n<e.length;n++)if("shape"===e[n].targetName)return!0;return!1}(t)||l<1){t.path||t.createPathProxy();var h=t.path;t.shapeChanged()&&(h.beginPath(),t.buildPath(h,t.shape),t.pathUpdated());var c=h.getVersion(),p=t,d=p.__svgPathBuilder;p.__svgPathVersion===c&&d&&l===p.__svgPathStrokePercent||(d||(d=p.__svgPathBuilder=new Ob),d.reset(u),h.rebuildPath(d,l),d.generateStr(),p.__svgPathVersion=c,p.__svgPathStrokePercent=l),o.d=d.getStr()}else{s=t.type;var f=Math.pow(10,u);r[0](i,o,f)}return ow(o,t.transform),iw(o,n,t,e),e.animation&&Qb(t,o,e),Wb(s,t.id+"",o)}function pw(t,e){return t instanceof gs?cw(t,e):t instanceof _s?function(t,e){var n=t.style,i=n.image;if(i&&!X(i)&&(ew(i)?i=i.src:nw(i)&&(i=i.toDataURL())),i){var r=n.x||0,o=n.y||0,a={href:i,width:n.width,height:n.height};return r&&(a.x=r),o&&(a.y=o),ow(a,t.transform),iw(a,n,t,e),e.animation&&Qb(t,a,e),Wb("image",t.id+"",a)}}(t,e):t instanceof vs?function(t,e){var n=t.style,i=n.text;if(null!=i&&(i+=""),i&&!isNaN(n.x)&&!isNaN(n.y)){var r=n.font||a,s=n.x||0,l=function(t,e,n){return"top"===n?t+=e/2:"bottom"===n&&(t-=e/2),t}(n.y||0,fr(r),n.textBaseline),u={"dominant-baseline":"central","text-anchor":Bn[n.textAlign]||n.textAlign};if(Es(n)){var h="",c=n.fontStyle,p=Rs(n.fontSize);if(!parseFloat(p))return;var d=n.fontFamily||o,f=n.fontWeight;h+="font-size:"+p+";font-family:"+d+";",c&&"normal"!==c&&(h+="font-style:"+c+";"),f&&"normal"!==f&&(h+="font-weight:"+f+";"),u.style=h}else u.style="font: "+r;return i.match(/\s/)&&(u["xml:space"]="preserve"),s&&(u.x=s),l&&(u.y=l),ow(u,t.transform),iw(u,n,t,e),e.animation&&Qb(t,u,e),Wb("text",t.id+"",u,void 0,i)}}(t,e):void 0}function dw(t,e,n){var i=n.clipPathCache,r=n.defs,o=i[t.id];if(!o){var a={id:o=n.zrId+"-c"+n.clipPathIdx++};i[t.id]=o,r[o]=Wb("clipPath",o,a,[cw(t,n)])}e["clip-path"]=Hn(o)}function fw(t){return document.createTextNode(t)}function gw(t,e,n){t.insertBefore(e,n)}function yw(t,e){t.removeChild(e)}function vw(t,e){t.appendChild(e)}function mw(t){return t.parentNode}function xw(t){return t.nextSibling}function _w(t,e){t.textContent=e}var bw=Wb("","");function ww(t){return void 0===t}function Sw(t){return void 0!==t}function Mw(t,e,n){for(var i={},r=e;r<=n;++r){var o=t[r].key;void 0!==o&&(i[o]=r)}return i}function Iw(t,e){var n=t.key===e.key;return t.tag===e.tag&&n}function Tw(t){var e,n=t.children,i=t.tag;if(Sw(i)){var r=t.elm=Gb(i);if(Aw(bw,t),Y(n))for(e=0;e<n.length;++e){var o=n[e];null!=o&&vw(r,Tw(o))}else Sw(t.text)&&!q(t.text)&&vw(r,fw(t.text))}else t.elm=fw(t.text);return t.elm}function Cw(t,e,n,i,r){for(;i<=r;++i){var o=n[i];null!=o&&gw(t,Tw(o),e)}}function Dw(t,e,n,i){for(;n<=i;++n){var r=e[n];if(null!=r)if(Sw(r.tag))yw(mw(r.elm),r.elm);else yw(t,r.elm)}}function Aw(t,e){var n,i=e.elm,r=t&&t.attrs||{},o=e.attrs||{};if(r!==o){for(n in o){var a=o[n];r[n]!==a&&(!0===a?i.setAttribute(n,""):!1===a?i.removeAttribute(n):120!==n.charCodeAt(0)?i.setAttribute(n,a):"xmlns:xlink"===n||"xmlns"===n?i.setAttributeNS("http://www.w3.org/2000/xmlns/",n,a):58===n.charCodeAt(3)?i.setAttributeNS("http://www.w3.org/XML/1998/namespace",n,a):58===n.charCodeAt(5)?i.setAttributeNS(Fb,n,a):i.setAttribute(n,a))}for(n in r)n in o||i.removeAttribute(n)}}function kw(t,e){var n=e.elm=t.elm,i=t.children,r=e.children;t!==e&&(Aw(t,e),ww(e.text)?Sw(i)&&Sw(r)?i!==r&&function(t,e,n){for(var i,r,o,a=0,s=0,l=e.length-1,u=e[0],h=e[l],c=n.length-1,p=n[0],d=n[c];a<=l&&s<=c;)null==u?u=e[++a]:null==h?h=e[--l]:null==p?p=n[++s]:null==d?d=n[--c]:Iw(u,p)?(kw(u,p),u=e[++a],p=n[++s]):Iw(h,d)?(kw(h,d),h=e[--l],d=n[--c]):Iw(u,d)?(kw(u,d),gw(t,u.elm,xw(h.elm)),u=e[++a],d=n[--c]):Iw(h,p)?(kw(h,p),gw(t,h.elm,u.elm),h=e[--l],p=n[++s]):(ww(i)&&(i=Mw(e,a,l)),ww(r=i[p.key])||(o=e[r]).tag!==p.tag?gw(t,Tw(p),u.elm):(kw(o,p),e[r]=void 0,gw(t,o.elm,u.elm)),p=n[++s]);(a<=l||s<=c)&&(a>l?Cw(t,null==n[c+1]?null:n[c+1].elm,n,s,c):Dw(t,e,a,l))}(n,i,r):Sw(r)?(Sw(t.text)&&_w(n,""),Cw(n,null,r,0,r.length-1)):Sw(i)?Dw(n,i,0,i.length-1):Sw(t.text)&&_w(n,""):t.text!==e.text&&(Sw(i)&&Dw(n,i,0,i.length-1),_w(n,e.text)))}var Lw=0,Pw=function(){function t(t,e,n){if(this.type="svg",this.refreshHover=Ow("refreshHover"),this.configLayer=Ow("configLayer"),this.storage=e,this._opts=n=A({},n),this.root=t,this._id="zr"+Lw++,this._oldVNode=Ub(n.width,n.height),t&&!n.ssr){var i=this._viewport=document.createElement("div");i.style.cssText="position:relative;overflow:hidden";var r=this._svgDom=this._oldVNode.elm=Gb("svg");Aw(null,this._oldVNode),i.appendChild(r),t.appendChild(i)}this.resize(n.width,n.height)}return t.prototype.getType=function(){return this.type},t.prototype.getViewportRoot=function(){return this._viewport},t.prototype.getViewportRootOffset=function(){var t=this.getViewportRoot();if(t)return{offsetLeft:t.offsetLeft||0,offsetTop:t.offsetTop||0}},t.prototype.getSvgDom=function(){return this._svgDom},t.prototype.refresh=function(){if(this.root){var t=this.renderToVNode({willUpdate:!0});t.attrs.style="position:absolute;left:0;top:0;user-select:none",function(t,e){if(Iw(t,e))kw(t,e);else{var n=t.elm,i=mw(n);Tw(e),null!==i&&(gw(i,e.elm,xw(n)),Dw(i,[t],0,0))}}(this._oldVNode,t),this._oldVNode=t}},t.prototype.renderOneToVNode=function(t){return pw(t,Yb(this._id))},t.prototype.renderToVNode=function(t){t=t||{};var e=this.storage.getDisplayList(!0),n=this._backgroundColor,i=this._width,r=this._height,o=Yb(this._id);o.animation=t.animation,o.willUpdate=t.willUpdate,o.compress=t.compress;var a=[];if(n&&"none"!==n){var s=Rn(n),l=s.color,u=s.opacity;this._bgVNode=Wb("rect","bg",{width:i,height:r,x:"0",y:"0",id:"0",fill:l,"fill-opacity":u}),a.push(this._bgVNode)}else this._bgVNode=null;var h=t.compress?null:this._mainVNode=Wb("g","main",{},[]);this._paintList(e,o,h?h.children:a),h&&a.push(h);var c=z(G(o.defs),(function(t){return o.defs[t]}));if(c.length&&a.push(Wb("defs","defs",{},c)),t.animation){var p=function(t,e,n){var i=(n=n||{}).newline?"\n":"",r=" {"+i,o=i+"}",a=z(G(t),(function(e){return e+r+z(G(t[e]),(function(n){return n+":"+t[e][n]+";"})).join(i)+o})).join(i),s=z(G(e),(function(t){return"@keyframes "+t+r+z(G(e[t]),(function(n){return n+r+z(G(e[t][n]),(function(i){var r=e[t][n][i];return"d"===i&&(r='path("'+r+'")'),i+":"+r+";"})).join(i)+o})).join(i)+o})).join(i);return a||s?["<![CDATA[",a,s,"]]>"].join(i):""}(o.cssNodes,o.cssAnims,{newline:!0});if(p){var d=Wb("style","stl",{},[],p);a.push(d)}}return Ub(i,r,a,t.useViewBox)},t.prototype.renderToString=function(t){return t=t||{},Hb(this.renderToVNode({animation:rt(t.cssAnimation,!0),willUpdate:!1,compress:!0,useViewBox:rt(t.useViewBox,!0)}),{newline:!0})},t.prototype.setBackgroundColor=function(t){this._backgroundColor=t;var e=this._bgVNode;if(e&&e.elm){var n=Rn(t),i=n.color,r=n.opacity;e.elm.setAttribute("fill",i),r<1&&e.elm.setAttribute("fill-opacity",r)}},t.prototype.getSvgRoot=function(){return this._mainVNode&&this._mainVNode.elm},t.prototype._paintList=function(t,e,n){for(var i,r,o=t.length,a=[],s=0,l=0,u=0;u<o;u++){var h=t[u];if(!h.invisible){var c=h.__clipPaths,p=c&&c.length||0,d=r&&r.length||0,f=void 0;for(f=Math.max(p-1,d-1);f>=0&&(!c||!r||c[f]!==r[f]);f--);for(var g=d-1;g>f;g--)i=a[--s-1];for(var y=f+1;y<p;y++){var v={};dw(c[y],v,e);var m=Wb("g","clip-g-"+l++,v,[]);(i?i.children:n).push(m),a[s++]=m,i=m}r=c;var x=pw(h,e);x&&(i?i.children:n).push(x)}}},t.prototype.resize=function(t,e){var n=this._opts,i=this.root,r=this._viewport;if(null!=t&&(n.width=t),null!=e&&(n.height=e),i&&r&&(r.style.display="none",t=Ey(i,0,n),e=Ey(i,1,n),r.style.display=""),this._width!==t||this._height!==e){if(this._width=t,this._height=e,r){var o=r.style;o.width=t+"px",o.height=e+"px"}var a=this._svgDom;a&&(a.setAttribute("width",t),a.setAttribute("height",e))}},t.prototype.getWidth=function(){return this._width},t.prototype.getHeight=function(){return this._height},t.prototype.dispose=function(){this.root&&(this.root.innerHTML=""),this._svgDom=this._viewport=this.storage=this._oldVNode=this._bgVNode=this._mainVNode=null},t.prototype.clear=function(){this._svgDom&&(this._svgDom.innerHTML=null),this._oldVNode=null},t.prototype.toDataURL=function(t){var e=encodeURIComponent(this.renderToString()),n="data:image/svg+xml;";return t?(e=Xn(e))&&n+"base64,"+e:n+"charset=UTF-8,"+e},t}();function Ow(t){return function(){0}}function Rw(t,e,n){var i=h.createCanvas(),r=e.getWidth(),o=e.getHeight(),a=i.style;return a&&(a.position="absolute",a.left="0",a.top="0",a.width=r+"px",a.height=o+"px",i.setAttribute("data-zr-dom-id",t)),i.width=r*n,i.height=o*n,i}var Nw=function(t){function e(e,n,i){var r,o=t.call(this)||this;o.motionBlur=!1,o.lastFrameAlpha=.7,o.dpr=1,o.virtual=!1,o.config={},o.incremental=!1,o.zlevel=0,o.maxRepaintRectCount=5,o.__dirty=!0,o.__firstTimePaint=!0,o.__used=!1,o.__drawIndex=0,o.__startIndex=0,o.__endIndex=0,o.__prevStartIndex=null,o.__prevEndIndex=null,i=i||Ai,"string"==typeof e?r=Rw(e,n,i):q(e)&&(e=(r=e).id),o.id=e,o.dom=r;var a=r.style;return a&&(vt(r),r.onselectstart=function(){return!1},a.padding="0",a.margin="0",a.borderWidth="0"),o.painter=n,o.dpr=i,o}return n(e,t),e.prototype.getElementCount=function(){return this.__endIndex-this.__startIndex},e.prototype.afterBrush=function(){this.__prevStartIndex=this.__startIndex,this.__prevEndIndex=this.__endIndex},e.prototype.initContext=function(){this.ctx=this.dom.getContext("2d"),this.ctx.dpr=this.dpr},e.prototype.setUnpainted=function(){this.__firstTimePaint=!0},e.prototype.createBackBuffer=function(){var t=this.dpr;this.domBack=Rw("back-"+this.id,this.painter,t),this.ctxBack=this.domBack.getContext("2d"),1!==t&&this.ctxBack.scale(t,t)},e.prototype.createRepaintRects=function(t,e,n,i){if(this.__firstTimePaint)return this.__firstTimePaint=!1,null;var r,o=[],a=this.maxRepaintRectCount,s=!1,l=new sr(0,0,0,0);function u(t){if(t.isFinite()&&!t.isZero())if(0===o.length){(e=new sr(0,0,0,0)).copy(t),o.push(e)}else{for(var e,n=!1,i=1/0,r=0,u=0;u<o.length;++u){var h=o[u];if(h.intersect(t)){var c=new sr(0,0,0,0);c.copy(h),c.union(t),o[u]=c,n=!0;break}if(s){l.copy(t),l.union(h);var p=t.width*t.height,d=h.width*h.height,f=l.width*l.height-p-d;f<i&&(i=f,r=u)}}if(s&&(o[r].union(t),n=!0),!n)(e=new sr(0,0,0,0)).copy(t),o.push(e);s||(s=o.length>=a)}}for(var h=this.__startIndex;h<this.__endIndex;++h){if(d=t[h]){var c=d.shouldBePainted(n,i,!0,!0);(f=d.__isRendered&&(1&d.__dirty||!c)?d.getPrevPaintRect():null)&&u(f);var p=c&&(1&d.__dirty||!d.__isRendered)?d.getPaintRect():null;p&&u(p)}}for(h=this.__prevStartIndex;h<this.__prevEndIndex;++h){var d,f;c=(d=e[h]).shouldBePainted(n,i,!0,!0);if(d&&(!c||!d.__zr)&&d.__isRendered)(f=d.getPrevPaintRect())&&u(f)}do{r=!1;for(h=0;h<o.length;)if(o[h].isZero())o.splice(h,1);else{for(var g=h+1;g<o.length;)o[h].intersect(o[g])?(r=!0,o[h].union(o[g]),o.splice(g,1)):g++;h++}}while(r);return this._paintRects=o,o},e.prototype.debugGetPaintRects=function(){return(this._paintRects||[]).slice()},e.prototype.resize=function(t,e){var n=this.dpr,i=this.dom,r=i.style,o=this.domBack;r&&(r.width=t+"px",r.height=e+"px"),i.width=t*n,i.height=e*n,o&&(o.width=t*n,o.height=e*n,1!==n&&this.ctxBack.scale(n,n))},e.prototype.clear=function(t,e,n){var i=this.dom,r=this.ctx,o=i.width,a=i.height;e=e||this.clearColor;var s=this.motionBlur&&!t,l=this.lastFrameAlpha,u=this.dpr,h=this;s&&(this.domBack||this.createBackBuffer(),this.ctxBack.globalCompositeOperation="copy",this.ctxBack.drawImage(i,0,0,o/u,a/u));var c=this.domBack;function p(t,n,i,o){if(r.clearRect(t,n,i,o),e&&"transparent"!==e){var a=void 0;Q(e)?(a=e.__canvasGradient||Ry(r,e,{x:0,y:0,width:i,height:o}),e.__canvasGradient=a):tt(e)&&(a=Yy(r,e,{dirty:function(){h.setUnpainted(),h.__painter.refresh()}})),r.save(),r.fillStyle=a||e,r.fillRect(t,n,i,o),r.restore()}s&&(r.save(),r.globalAlpha=l,r.drawImage(c,t,n,i,o),r.restore())}!n||s?p(0,0,o,a):n.length&&E(n,(function(t){p(t.x*u,t.y*u,t.width*u,t.height*u)}))},e}(Xt),Ew=1e5,zw=314159,Vw=.01;var Bw=function(){function t(t,e,n,i){this.type="canvas",this._zlevelList=[],this._prevDisplayList=[],this._layers={},this._layerConfig={},this._needsManuallyCompositing=!1,this.type="canvas";var r=!t.nodeName||"CANVAS"===t.nodeName.toUpperCase();this._opts=n=A({},n||{}),this.dpr=n.devicePixelRatio||Ai,this._singleCanvas=r,this.root=t,t.style&&(vt(t),t.innerHTML=""),this.storage=e;var o=this._zlevelList;this._prevDisplayList=[];var a=this._layers;if(r){var s=t,l=s.width,u=s.height;null!=n.width&&(l=n.width),null!=n.height&&(u=n.height),this.dpr=n.devicePixelRatio||1,s.width=l*this.dpr,s.height=u*this.dpr,this._width=l,this._height=u;var h=new Nw(s,this,this.dpr);h.__builtin__=!0,h.initContext(),a[314159]=h,h.zlevel=zw,o.push(zw),this._domRoot=t}else{this._width=Ey(t,0,n),this._height=Ey(t,1,n);var c=this._domRoot=function(t,e){var n=document.createElement("div");return n.style.cssText=["position:relative","width:"+t+"px","height:"+e+"px","padding:0","margin:0","border-width:0"].join(";")+";",n}(this._width,this._height);t.appendChild(c)}}return t.prototype.getType=function(){return"canvas"},t.prototype.isSingleCanvas=function(){return this._singleCanvas},t.prototype.getViewportRoot=function(){return this._domRoot},t.prototype.getViewportRootOffset=function(){var t=this.getViewportRoot();if(t)return{offsetLeft:t.offsetLeft||0,offsetTop:t.offsetTop||0}},t.prototype.refresh=function(t){var e=this.storage.getDisplayList(!0),n=this._prevDisplayList,i=this._zlevelList;this._redrawId=Math.random(),this._paintList(e,n,t,this._redrawId);for(var r=0;r<i.length;r++){var o=i[r],a=this._layers[o];if(!a.__builtin__&&a.refresh){var s=0===r?this._backgroundColor:null;a.refresh(s)}}return this._opts.useDirtyRect&&(this._prevDisplayList=e.slice()),this},t.prototype.refreshHover=function(){this._paintHoverList(this.storage.getDisplayList(!1))},t.prototype._paintHoverList=function(t){var e=t.length,n=this._hoverlayer;if(n&&n.clear(),e){for(var i,r={inHover:!0,viewWidth:this._width,viewHeight:this._height},o=0;o<e;o++){var a=t[o];a.__inHover&&(n||(n=this._hoverlayer=this.getLayer(Ew)),i||(i=n.ctx).save(),Qy(i,a,r,o===e-1))}i&&i.restore()}},t.prototype.getHoverLayer=function(){return this.getLayer(Ew)},t.prototype.paintOne=function(t,e){Jy(t,e)},t.prototype._paintList=function(t,e,n,i){if(this._redrawId===i){n=n||!1,this._updateLayerStatus(t);var r=this._doPaintList(t,e,n),o=r.finished,a=r.needsRefreshHover;if(this._needsManuallyCompositing&&this._compositeManually(),a&&this._paintHoverList(t),o)this.eachLayer((function(t){t.afterBrush&&t.afterBrush()}));else{var s=this;ke((function(){s._paintList(t,e,n,i)}))}}},t.prototype._compositeManually=function(){var t=this.getLayer(zw).ctx,e=this._domRoot.width,n=this._domRoot.height;t.clearRect(0,0,e,n),this.eachBuiltinLayer((function(i){i.virtual&&t.drawImage(i.dom,0,0,e,n)}))},t.prototype._doPaintList=function(t,e,n){for(var i=this,o=[],a=this._opts.useDirtyRect,s=0;s<this._zlevelList.length;s++){var l=this._zlevelList[s],u=this._layers[l];u.__builtin__&&u!==this._hoverlayer&&(u.__dirty||n)&&o.push(u)}for(var h=!0,c=!1,p=function(r){var s,l=o[r],u=l.ctx,p=a&&l.createRepaintRects(t,e,d._width,d._height),f=n?l.__startIndex:l.__drawIndex,g=!n&&l.incremental&&Date.now,y=g&&Date.now(),v=l.zlevel===d._zlevelList[0]?d._backgroundColor:null;if(l.__startIndex===l.__endIndex)l.clear(!1,v,p);else if(f===l.__startIndex){var m=t[f];m.incremental&&m.notClear&&!n||l.clear(!1,v,p)}-1===f&&(console.error("For some unknown reason. drawIndex is -1"),f=l.__startIndex);var x=function(e){var n={inHover:!1,allClipped:!1,prevEl:null,viewWidth:i._width,viewHeight:i._height};for(s=f;s<l.__endIndex;s++){var r=t[s];if(r.__inHover&&(c=!0),i._doPaintEl(r,l,a,e,n,s===l.__endIndex-1),g)if(Date.now()-y>15)break}n.prevElClipPaths&&u.restore()};if(p)if(0===p.length)s=l.__endIndex;else for(var _=d.dpr,b=0;b<p.length;++b){var w=p[b];u.save(),u.beginPath(),u.rect(w.x*_,w.y*_,w.width*_,w.height*_),u.clip(),x(w),u.restore()}else u.save(),x(),u.restore();l.__drawIndex=s,l.__drawIndex<l.__endIndex&&(h=!1)},d=this,f=0;f<o.length;f++)p(f);return r.wxa&&E(this._layers,(function(t){t&&t.ctx&&t.ctx.draw&&t.ctx.draw()})),{finished:h,needsRefreshHover:c}},t.prototype._doPaintEl=function(t,e,n,i,r,o){var a=e.ctx;if(n){var s=t.getPaintRect();(!i||s&&s.intersect(i))&&(Qy(a,t,r,o),t.setPrevPaintRect(s))}else Qy(a,t,r,o)},t.prototype.getLayer=function(t,e){this._singleCanvas&&!this._needsManuallyCompositing&&(t=zw);var n=this._layers[t];return n||((n=new Nw("zr_"+t,this,this.dpr)).zlevel=t,n.__builtin__=!0,this._layerConfig[t]?C(n,this._layerConfig[t],!0):this._layerConfig[t-Vw]&&C(n,this._layerConfig[t-Vw],!0),e&&(n.virtual=e),this.insertLayer(t,n),n.initContext()),n},t.prototype.insertLayer=function(t,e){var n=this._layers,i=this._zlevelList,r=i.length,o=this._domRoot,a=null,s=-1;if(!n[t]&&function(t){return!!t&&(!!t.__builtin__||"function"==typeof t.resize&&"function"==typeof t.refresh)}(e)){if(r>0&&t>i[0]){for(s=0;s<r-1&&!(i[s]<t&&i[s+1]>t);s++);a=n[i[s]]}if(i.splice(s+1,0,t),n[t]=e,!e.virtual)if(a){var l=a.dom;l.nextSibling?o.insertBefore(e.dom,l.nextSibling):o.appendChild(e.dom)}else o.firstChild?o.insertBefore(e.dom,o.firstChild):o.appendChild(e.dom);e.__painter=this}},t.prototype.eachLayer=function(t,e){for(var n=this._zlevelList,i=0;i<n.length;i++){var r=n[i];t.call(e,this._layers[r],r)}},t.prototype.eachBuiltinLayer=function(t,e){for(var n=this._zlevelList,i=0;i<n.length;i++){var r=n[i],o=this._layers[r];o.__builtin__&&t.call(e,o,r)}},t.prototype.eachOtherLayer=function(t,e){for(var n=this._zlevelList,i=0;i<n.length;i++){var r=n[i],o=this._layers[r];o.__builtin__||t.call(e,o,r)}},t.prototype.getLayers=function(){return this._layers},t.prototype._updateLayerStatus=function(t){function e(t){o&&(o.__endIndex!==t&&(o.__dirty=!0),o.__endIndex=t)}if(this.eachBuiltinLayer((function(t,e){t.__dirty=t.__used=!1})),this._singleCanvas)for(var n=1;n<t.length;n++){if((s=t[n]).zlevel!==t[n-1].zlevel||s.incremental){this._needsManuallyCompositing=!0;break}}var i,r,o=null,a=0;for(r=0;r<t.length;r++){var s,l=(s=t[r]).zlevel,u=void 0;i!==l&&(i=l,a=0),s.incremental?((u=this.getLayer(l+.001,this._needsManuallyCompositing)).incremental=!0,a=1):u=this.getLayer(l+(a>0?Vw:0),this._needsManuallyCompositing),u.__builtin__||I("ZLevel "+l+" has been used by unkown layer "+u.id),u!==o&&(u.__used=!0,u.__startIndex!==r&&(u.__dirty=!0),u.__startIndex=r,u.incremental?u.__drawIndex=-1:u.__drawIndex=r,e(r),o=u),1&s.__dirty&&!s.__inHover&&(u.__dirty=!0,u.incremental&&u.__drawIndex<0&&(u.__drawIndex=r))}e(r),this.eachBuiltinLayer((function(t,e){!t.__used&&t.getElementCount()>0&&(t.__dirty=!0,t.__startIndex=t.__endIndex=t.__drawIndex=0),t.__dirty&&t.__drawIndex<0&&(t.__drawIndex=t.__startIndex)}))},t.prototype.clear=function(){return this.eachBuiltinLayer(this._clearLayer),this},t.prototype._clearLayer=function(t){t.clear()},t.prototype.setBackgroundColor=function(t){this._backgroundColor=t,E(this._layers,(function(t){t.setUnpainted()}))},t.prototype.configLayer=function(t,e){if(e){var n=this._layerConfig;n[t]?C(n[t],e,!0):n[t]=e;for(var i=0;i<this._zlevelList.length;i++){var r=this._zlevelList[i];if(r===t||r===t+Vw)C(this._layers[r],n[t],!0)}}},t.prototype.delLayer=function(t){var e=this._layers,n=this._zlevelList,i=e[t];i&&(i.dom.parentNode.removeChild(i.dom),delete e[t],n.splice(P(n,t),1))},t.prototype.resize=function(t,e){if(this._domRoot.style){var n=this._domRoot;n.style.display="none";var i=this._opts,r=this.root;if(null!=t&&(i.width=t),null!=e&&(i.height=e),t=Ey(r,0,i),e=Ey(r,1,i),n.style.display="",this._width!==t||e!==this._height){for(var o in n.style.width=t+"px",n.style.height=e+"px",this._layers)this._layers.hasOwnProperty(o)&&this._layers[o].resize(t,e);this.refresh(!0)}this._width=t,this._height=e}else{if(null==t||null==e)return;this._width=t,this._height=e,this.getLayer(zw).resize(t,e)}return this},t.prototype.clearLayer=function(t){var e=this._layers[t];e&&e.clear()},t.prototype.dispose=function(){this.root.innerHTML="",this.root=this.storage=this._domRoot=this._layers=null},t.prototype.getRenderedCanvas=function(t){if(t=t||{},this._singleCanvas&&!this._compositeManually)return this._layers[314159].dom;var e=new Nw("image",this,t.pixelRatio||this.dpr);e.initContext(),e.clear(!1,t.backgroundColor||this._backgroundColor);var n=e.ctx;if(t.pixelRatio<=this.dpr){this.refresh();var i=e.dom.width,r=e.dom.height;this.eachLayer((function(t){t.__builtin__?n.drawImage(t.dom,0,0,i,r):t.renderToCanvas&&(n.save(),t.renderToCanvas(n),n.restore())}))}else for(var o={inHover:!1,viewWidth:this._width,viewHeight:this._height},a=this.storage.getDisplayList(!0),s=0,l=a.length;s<l;s++){var u=a[s];Qy(n,u,o,s===l-1)}return e.dom},t.prototype.getWidth=function(){return this._width},t.prototype.getHeight=function(){return this._height},t}();var Fw=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.hasSymbolVisual=!0,n}return n(e,t),e.prototype.getInitialData=function(t){return ix(null,this,{useEncodeDefaulter:!0})},e.prototype.getLegendIcon=function(t){var e=new Cr,n=Ly("line",0,t.itemHeight/2,t.itemWidth,0,t.lineStyle.stroke,!1);e.add(n),n.setStyle(t.lineStyle);var i=this.getData().getVisual("symbol"),r=this.getData().getVisual("symbolRotate"),o="none"===i?"circle":i,a=.8*t.itemHeight,s=Ly(o,(t.itemWidth-a)/2,(t.itemHeight-a)/2,a,a,t.itemStyle.fill);e.add(s),s.setStyle(t.itemStyle);var l="inherit"===t.iconRotate?r:t.iconRotate||0;return s.rotation=l*Math.PI/180,s.setOrigin([t.itemWidth/2,t.itemHeight/2]),o.indexOf("empty")>-1&&(s.style.stroke=s.style.fill,s.style.fill="#fff",s.style.lineWidth=2),e},e.type="series.line",e.dependencies=["grid","polar"],e.defaultOption={z:3,coordinateSystem:"cartesian2d",legendHoverLink:!0,clip:!0,label:{position:"top"},endLabel:{show:!1,valueAnimation:!0,distance:8},lineStyle:{width:2,type:"solid"},emphasis:{scale:!0},step:!1,smooth:!1,smoothMonotone:null,symbol:"emptyCircle",symbolSize:4,symbolRotate:null,showSymbol:!0,showAllSymbol:"auto",connectNulls:!1,sampling:"none",animationEasing:"linear",progressive:0,hoverLayerThreshold:1/0,universalTransition:{divideShape:"clone"},triggerLineEvent:!1},e}(sg);function Gw(t,e){var n=t.mapDimensionsAll("defaultedLabel"),i=n.length;if(1===i){var r=af(t,e,n[0]);return null!=r?r+"":null}if(i){for(var o=[],a=0;a<n.length;a++)o.push(af(t,e,n[a]));return o.join(" ")}}function Ww(t,e){var n=t.mapDimensionsAll("defaultedLabel");if(!Y(e))return e+"";for(var i=[],r=0;r<n.length;r++){var o=t.getDimensionIndex(n[r]);o>=0&&i.push(e[o])}return i.join(" ")}var Hw=function(t){function e(e,n,i,r){var o=t.call(this)||this;return o.updateData(e,n,i,r),o}return n(e,t),e.prototype._createSymbol=function(t,e,n,i,r){this.removeAll();var o=Ly(t,-1,-1,2,2,null,r);o.attr({z2:100,culling:!0,scaleX:i[0]/2,scaleY:i[1]/2}),o.drift=Yw,this._symbolType=t,this.add(o)},e.prototype.stopSymbolAnimation=function(t){this.childAt(0).stopAnimation(null,t)},e.prototype.getSymbolType=function(){return this._symbolType},e.prototype.getSymbolPath=function(){return this.childAt(0)},e.prototype.highlight=function(){_l(this.childAt(0))},e.prototype.downplay=function(){bl(this.childAt(0))},e.prototype.setZ=function(t,e){var n=this.childAt(0);n.zlevel=t,n.z=e},e.prototype.setDraggable=function(t){var e=this.childAt(0);e.draggable=t,e.cursor=t?"move":e.cursor},e.prototype.updateData=function(t,n,i,r){this.silent=!1;var o=t.getItemVisual(n,"symbol")||"circle",a=t.hostModel,s=e.getSymbolSize(t,n),l=o!==this._symbolType,u=r&&r.disableAnimation;if(l){var h=t.getItemVisual(n,"symbolKeepAspect");this._createSymbol(o,t,n,s,h)}else{(p=this.childAt(0)).silent=!1;var c={scaleX:s[0]/2,scaleY:s[1]/2};u?p.attr(c):rh(p,c,a,n),hh(p)}if(this._updateCommon(t,n,s,i,r),l){var p=this.childAt(0);if(!u){c={scaleX:this._sizeX,scaleY:this._sizeY,style:{opacity:p.style.opacity}};p.scaleX=p.scaleY=0,p.style.opacity=0,oh(p,c,a,n)}}u&&this.childAt(0).stopAnimation("leave")},e.prototype._updateCommon=function(t,e,n,i,r){var o,a,s,l,u,h,c,p,d,f=this.childAt(0),g=t.hostModel;if(i&&(o=i.emphasisItemStyle,a=i.blurItemStyle,s=i.selectItemStyle,l=i.focus,u=i.blurScope,c=i.labelStatesModels,p=i.hoverScale,d=i.cursorStyle,h=i.emphasisDisabled),!i||t.hasItemOption){var y=i&&i.itemModel?i.itemModel:t.getItemModel(e),v=y.getModel("emphasis");o=v.getModel("itemStyle").getItemStyle(),s=y.getModel(["select","itemStyle"]).getItemStyle(),a=y.getModel(["blur","itemStyle"]).getItemStyle(),l=v.get("focus"),u=v.get("blurScope"),h=v.get("disabled"),c=Yh(y),p=v.getShallow("scale"),d=y.getShallow("cursor")}var m=t.getItemVisual(e,"symbolRotate");f.attr("rotation",(m||0)*Math.PI/180||0);var x=Oy(t.getItemVisual(e,"symbolOffset"),n);x&&(f.x=x[0],f.y=x[1]),d&&f.attr("cursor",d);var _=t.getItemVisual(e,"style"),b=_.fill;if(f instanceof _s){var w=f.style;f.useStyle(A({image:w.image,x:w.x,y:w.y,width:w.width,height:w.height},_))}else f.__isEmptyBrush?f.useStyle(A({},_)):f.useStyle(_),f.style.decal=null,f.setColor(b,r&&r.symbolInnerColor),f.style.strokeNoScale=!0;var S=t.getItemVisual(e,"liftZ"),M=this._z2;null!=S?null==M&&(this._z2=f.z2,f.z2+=S):null!=M&&(f.z2=M,this._z2=null);var I=r&&r.useNameLabel;Hh(f,c,{labelFetcher:g,labelDataIndex:e,defaultText:function(e){return I?t.getName(e):Gw(t,e)},inheritColor:b,defaultOpacity:_.opacity}),this._sizeX=n[0]/2,this._sizeY=n[1]/2;var T=f.ensureState("emphasis");if(T.style=o,f.ensureState("select").style=s,f.ensureState("blur").style=a,p){var C=Math.max(j(p)?p:1.1,3/this._sizeY);T.scaleX=this._sizeX*C,T.scaleY=this._sizeY*C}this.setSymbolScale(1),Rl(this,l,u,h)},e.prototype.setSymbolScale=function(t){this.scaleX=this.scaleY=t},e.prototype.fadeOut=function(t,e,n){var i=this.childAt(0),r=Hs(this).dataIndex,o=n&&n.animation;if(this.silent=i.silent=!0,n&&n.fadeLabel){var a=i.getTextContent();a&&sh(a,{style:{opacity:0}},e,{dataIndex:r,removeOpt:o,cb:function(){i.removeTextContent()}})}else i.removeTextContent();sh(i,{style:{opacity:0},scaleX:0,scaleY:0},e,{dataIndex:r,cb:t,removeOpt:o})},e.getSymbolSize=function(t,e){return Py(t.getItemVisual(e,"symbolSize"))},e}(Cr);function Yw(t,e){this.parent.drift(t,e)}function Uw(t,e,n,i){return e&&!isNaN(e[0])&&!isNaN(e[1])&&!(i.isIgnore&&i.isIgnore(n))&&!(i.clipShape&&!i.clipShape.contain(e[0],e[1]))&&"none"!==t.getItemVisual(n,"symbol")}function Xw(t){return null==t||q(t)||(t={isIgnore:t}),t||{}}function Zw(t){var e=t.hostModel,n=e.getModel("emphasis");return{emphasisItemStyle:n.getModel("itemStyle").getItemStyle(),blurItemStyle:e.getModel(["blur","itemStyle"]).getItemStyle(),selectItemStyle:e.getModel(["select","itemStyle"]).getItemStyle(),focus:n.get("focus"),blurScope:n.get("blurScope"),emphasisDisabled:n.get("disabled"),hoverScale:n.get("scale"),labelStatesModels:Yh(e),cursorStyle:e.get("cursor")}}var jw=function(){function t(t){this.group=new Cr,this._SymbolCtor=t||Hw}return t.prototype.updateData=function(t,e){this._progressiveEls=null,e=Xw(e);var n=this.group,i=t.hostModel,r=this._data,o=this._SymbolCtor,a=e.disableAnimation,s=Zw(t),l={disableAnimation:a},u=e.getSymbolPoint||function(e){return t.getItemLayout(e)};r||n.removeAll(),t.diff(r).add((function(i){var r=u(i);if(Uw(t,r,i,e)){var a=new o(t,i,s,l);a.setPosition(r),t.setItemGraphicEl(i,a),n.add(a)}})).update((function(h,c){var p=r.getItemGraphicEl(c),d=u(h);if(Uw(t,d,h,e)){var f=t.getItemVisual(h,"symbol")||"circle",g=p&&p.getSymbolType&&p.getSymbolType();if(!p||g&&g!==f)n.remove(p),(p=new o(t,h,s,l)).setPosition(d);else{p.updateData(t,h,s,l);var y={x:d[0],y:d[1]};a?p.attr(y):rh(p,y,i)}n.add(p),t.setItemGraphicEl(h,p)}else n.remove(p)})).remove((function(t){var e=r.getItemGraphicEl(t);e&&e.fadeOut((function(){n.remove(e)}),i)})).execute(),this._getSymbolPoint=u,this._data=t},t.prototype.updateLayout=function(){var t=this,e=this._data;e&&e.eachItemGraphicEl((function(e,n){var i=t._getSymbolPoint(n);e.setPosition(i),e.markRedraw()}))},t.prototype.incrementalPrepareUpdate=function(t){this._seriesScope=Zw(t),this._data=null,this.group.removeAll()},t.prototype.incrementalUpdate=function(t,e,n){function i(t){t.isGroup||(t.incremental=!0,t.ensureState("emphasis").hoverLayer=!0)}this._progressiveEls=[],n=Xw(n);for(var r=t.start;r<t.end;r++){var o=e.getItemLayout(r);if(Uw(e,o,r,n)){var a=new this._SymbolCtor(e,r,this._seriesScope);a.traverse(i),a.setPosition(o),this.group.add(a),e.setItemGraphicEl(r,a),this._progressiveEls.push(a)}}},t.prototype.eachRendered=function(t){Vh(this._progressiveEls||this.group,t)},t.prototype.remove=function(t){var e=this.group,n=this._data;n&&t?n.eachItemGraphicEl((function(t){t.fadeOut((function(){e.remove(t)}),n.hostModel)})):e.removeAll()},t}();function qw(t,e,n){var i=t.getBaseAxis(),r=t.getOtherAxis(i),o=function(t,e){var n=0,i=t.scale.getExtent();"start"===e?n=i[0]:"end"===e?n=i[1]:j(e)&&!isNaN(e)?n=e:i[0]>0?n=i[0]:i[1]<0&&(n=i[1]);return n}(r,n),a=i.dim,s=r.dim,l=e.mapDimension(s),u=e.mapDimension(a),h="x"===s||"radius"===s?1:0,c=z(t.dimensions,(function(t){return e.mapDimension(t)})),p=!1,d=e.getCalculationInfo("stackResultDimension");return ex(e,c[0])&&(p=!0,c[0]=d),ex(e,c[1])&&(p=!0,c[1]=d),{dataDimsForPoint:c,valueStart:o,valueAxisDim:s,baseAxisDim:a,stacked:!!p,valueDim:l,baseDim:u,baseDataOffset:h,stackedOverDimension:e.getCalculationInfo("stackedOverDimension")}}function Kw(t,e,n,i){var r=NaN;t.stacked&&(r=n.get(n.getCalculationInfo("stackedOverDimension"),i)),isNaN(r)&&(r=t.valueStart);var o=t.baseDataOffset,a=[];return a[o]=n.get(t.baseDim,i),a[1-o]=r,e.dataToPoint(a)}var $w=Math.min,Jw=Math.max;function Qw(t,e){return isNaN(t)||isNaN(e)}function tS(t,e,n,i,r,o,a,s,l){for(var u,h,c,p,d,f,g=n,y=0;y<i;y++){var v=e[2*g],m=e[2*g+1];if(g>=r||g<0)break;if(Qw(v,m)){if(l){g+=o;continue}break}if(g===n)t[o>0?"moveTo":"lineTo"](v,m),c=v,p=m;else{var x=v-u,_=m-h;if(x*x+_*_<.5){g+=o;continue}if(a>0){for(var b=g+o,w=e[2*b],S=e[2*b+1];w===v&&S===m&&y<i;)y++,g+=o,w=e[2*(b+=o)],S=e[2*b+1],x=(v=e[2*g])-u,_=(m=e[2*g+1])-h;var M=y+1;if(l)for(;Qw(w,S)&&M<i;)M++,w=e[2*(b+=o)],S=e[2*b+1];var I=.5,T=0,C=0,D=void 0,A=void 0;if(M>=i||Qw(w,S))d=v,f=m;else{T=w-u,C=S-h;var k=v-u,L=w-v,P=m-h,O=S-m,R=void 0,N=void 0;if("x"===s){var E=T>0?1:-1;d=v-E*(R=Math.abs(k))*a,f=m,D=v+E*(N=Math.abs(L))*a,A=m}else if("y"===s){var z=C>0?1:-1;d=v,f=m-z*(R=Math.abs(P))*a,D=v,A=m+z*(N=Math.abs(O))*a}else R=Math.sqrt(k*k+P*P),d=v-T*a*(1-(I=(N=Math.sqrt(L*L+O*O))/(N+R))),f=m-C*a*(1-I),A=m+C*a*I,D=$w(D=v+T*a*I,Jw(w,v)),A=$w(A,Jw(S,m)),D=Jw(D,$w(w,v)),f=m-(C=(A=Jw(A,$w(S,m)))-m)*R/N,d=$w(d=v-(T=D-v)*R/N,Jw(u,v)),f=$w(f,Jw(h,m)),D=v+(T=v-(d=Jw(d,$w(u,v))))*N/R,A=m+(C=m-(f=Jw(f,$w(h,m))))*N/R}t.bezierCurveTo(c,p,d,f,v,m),c=D,p=A}else t.lineTo(v,m)}u=v,h=m,g+=o}return y}var eS=function(){this.smooth=0,this.smoothConstraint=!0},nS=function(t){function e(e){var n=t.call(this,e)||this;return n.type="ec-polyline",n}return n(e,t),e.prototype.getDefaultStyle=function(){return{stroke:"#000",fill:null}},e.prototype.getDefaultShape=function(){return new eS},e.prototype.buildPath=function(t,e){var n=e.points,i=0,r=n.length/2;if(e.connectNulls){for(;r>0&&Qw(n[2*r-2],n[2*r-1]);r--);for(;i<r&&Qw(n[2*i],n[2*i+1]);i++);}for(;i<r;)i+=tS(t,n,i,r,r,1,e.smooth,e.smoothMonotone,e.connectNulls)+1},e.prototype.getPointOn=function(t,e){this.path||(this.createPathProxy(),this.buildPath(this.path,this.shape));for(var n,i,r=this.path.data,o=qa.CMD,a="x"===e,s=[],l=0;l<r.length;){var u=void 0,h=void 0,c=void 0,p=void 0,d=void 0,f=void 0,g=void 0;switch(r[l++]){case o.M:n=r[l++],i=r[l++];break;case o.L:if(u=r[l++],h=r[l++],(g=a?(t-n)/(u-n):(t-i)/(h-i))<=1&&g>=0){var y=a?(h-i)*g+i:(u-n)*g+n;return a?[t,y]:[y,t]}n=u,i=h;break;case o.C:u=r[l++],h=r[l++],c=r[l++],p=r[l++],d=r[l++],f=r[l++];var v=a?Ue(n,u,c,d,t,s):Ue(i,h,p,f,t,s);if(v>0)for(var m=0;m<v;m++){var x=s[m];if(x<=1&&x>=0){y=a?He(i,h,p,f,x):He(n,u,c,d,x);return a?[t,y]:[y,t]}}n=d,i=f}}},e}(gs),iS=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e}(eS),rS=function(t){function e(e){var n=t.call(this,e)||this;return n.type="ec-polygon",n}return n(e,t),e.prototype.getDefaultShape=function(){return new iS},e.prototype.buildPath=function(t,e){var n=e.points,i=e.stackedOnPoints,r=0,o=n.length/2,a=e.smoothMonotone;if(e.connectNulls){for(;o>0&&Qw(n[2*o-2],n[2*o-1]);o--);for(;r<o&&Qw(n[2*r],n[2*r+1]);r++);}for(;r<o;){var s=tS(t,n,r,o,o,1,e.smooth,a,e.connectNulls);tS(t,i,r+s-1,s,o,-1,e.stackedOnSmooth,a,e.connectNulls),r+=s+1,t.closePath()}},e}(gs);function oS(t,e,n,i,r){var o=t.getArea(),a=o.x,s=o.y,l=o.width,u=o.height,h=n.get(["lineStyle","width"])||2;a-=h/2,s-=h/2,l+=h,u+=h,a=Math.floor(a),l=Math.round(l);var c=new Cs({shape:{x:a,y:s,width:l,height:u}});if(e){var p=t.getBaseAxis(),d=p.isHorizontal(),f=p.inverse;d?(f&&(c.shape.x+=l),c.shape.width=0):(f||(c.shape.y+=u),c.shape.height=0);var g=U(r)?function(t){r(t,c)}:null;oh(c,{shape:{width:l,height:u,x:a,y:s}},n,null,i,g)}return c}function aS(t,e,n){var i=t.getArea(),r=zr(i.r0,1),o=zr(i.r,1),a=new Cu({shape:{cx:zr(t.cx,1),cy:zr(t.cy,1),r0:r,r:o,startAngle:i.startAngle,endAngle:i.endAngle,clockwise:i.clockwise}});e&&("angle"===t.getBaseAxis().dim?a.shape.endAngle=i.startAngle:a.shape.r=r,oh(a,{shape:{endAngle:i.endAngle,r:o}},n));return a}function sS(t,e,n,i,r){return t?"polar"===t.type?aS(t,e,n):"cartesian2d"===t.type?oS(t,e,n,i,r):null:null}function lS(t,e){return t.type===e}function uS(t,e){if(t.length===e.length){for(var n=0;n<t.length;n++)if(t[n]!==e[n])return;return!0}}function hS(t){for(var e=1/0,n=1/0,i=-1/0,r=-1/0,o=0;o<t.length;){var a=t[o++],s=t[o++];isNaN(a)||(e=Math.min(a,e),i=Math.max(a,i)),isNaN(s)||(n=Math.min(s,n),r=Math.max(s,r))}return[[e,n],[i,r]]}function cS(t,e){var n=hS(t),i=n[0],r=n[1],o=hS(e),a=o[0],s=o[1];return Math.max(Math.abs(i[0]-a[0]),Math.abs(i[1]-a[1]),Math.abs(r[0]-s[0]),Math.abs(r[1]-s[1]))}function pS(t){return j(t)?t:t?.5:0}function dS(t,e,n,i){var r=e.getBaseAxis(),o="x"===r.dim||"radius"===r.dim?0:1,a=[],s=0,l=[],u=[],h=[],c=[];if(i){for(s=0;s<t.length;s+=2)isNaN(t[s])||isNaN(t[s+1])||c.push(t[s],t[s+1]);t=c}for(s=0;s<t.length-2;s+=2)switch(h[0]=t[s+2],h[1]=t[s+3],u[0]=t[s],u[1]=t[s+1],a.push(u[0],u[1]),n){case"end":l[o]=h[o],l[1-o]=u[1-o],a.push(l[0],l[1]);break;case"middle":var p=(u[o]+h[o])/2,d=[];l[o]=d[o]=p,l[1-o]=u[1-o],d[1-o]=h[1-o],a.push(l[0],l[1]),a.push(d[0],d[1]);break;default:l[o]=u[o],l[1-o]=h[1-o],a.push(l[0],l[1])}return a.push(t[s++],t[s++]),a}function fS(t,e,n){var i=t.getVisual("visualMeta");if(i&&i.length&&t.count()&&"cartesian2d"===e.type){for(var r,o,a=i.length-1;a>=0;a--){var s=t.getDimensionInfo(i[a].dimension);if("x"===(r=s&&s.coordDim)||"y"===r){o=i[a];break}}if(o){var l=e.getAxis(r),u=z(o.stops,(function(t){return{coord:l.toGlobalCoord(l.dataToCoord(t.value)),color:t.color}})),h=u.length,c=o.outerColors.slice();h&&u[0].coord>u[h-1].coord&&(u.reverse(),c.reverse());var p=function(t,e){var n,i,r=[],o=t.length;function a(t,e,n){var i=t.coord;return{coord:n,color:Tn((n-i)/(e.coord-i),[t.color,e.color])}}for(var s=0;s<o;s++){var l=t[s],u=l.coord;if(u<0)n=l;else{if(u>e){i?r.push(a(i,l,e)):n&&r.push(a(n,l,0),a(n,l,e));break}n&&(r.push(a(n,l,0)),n=null),r.push(l),i=l}}return r}(u,"x"===r?n.getWidth():n.getHeight()),d=p.length;if(!d&&h)return u[0].coord<0?c[1]?c[1]:u[h-1].color:c[0]?c[0]:u[0].color;var f=p[0].coord-10,g=p[d-1].coord+10,y=g-f;if(y<.001)return"transparent";E(p,(function(t){t.offset=(t.coord-f)/y})),p.push({offset:d?p[d-1].offset:.5,color:c[1]||"transparent"}),p.unshift({offset:d?p[0].offset:.5,color:c[0]||"transparent"});var v=new Xu(0,0,0,0,p,!0);return v[r]=f,v[r+"2"]=g,v}}}function gS(t,e,n){var i=t.get("showAllSymbol"),r="auto"===i;if(!i||r){var o=n.getAxesByScale("ordinal")[0];if(o&&(!r||!function(t,e){var n=t.getExtent(),i=Math.abs(n[1]-n[0])/t.scale.count();isNaN(i)&&(i=0);for(var r=e.count(),o=Math.max(1,Math.round(r/5)),a=0;a<r;a+=o)if(1.5*Hw.getSymbolSize(e,a)[t.isHorizontal()?1:0]>i)return!1;return!0}(o,e))){var a=e.mapDimension(o.dim),s={};return E(o.getViewLabels(),(function(t){var e=o.scale.getRawOrdinalNumber(t.tickValue);s[e]=1})),function(t){return!s.hasOwnProperty(e.get(a,t))}}}}function yS(t,e){return[t[2*e],t[2*e+1]]}function vS(t){if(t.get(["endLabel","show"]))return!0;for(var e=0;e<qs.length;e++)if(t.get([qs[e],"endLabel","show"]))return!0;return!1}function mS(t,e,n,i){if(lS(e,"cartesian2d")){var r=i.getModel("endLabel"),o=r.get("valueAnimation"),a=i.getData(),s={lastFrameIndex:0},l=vS(i)?function(n,i){t._endLabelOnDuring(n,i,a,s,o,r,e)}:null,u=e.getBaseAxis().isHorizontal(),h=oS(e,n,i,(function(){var e=t._endLabel;e&&n&&null!=s.originalX&&e.attr({x:s.originalX,y:s.originalY})}),l);if(!i.get("clip",!0)){var c=h.shape,p=Math.max(c.width,c.height);u?(c.y-=p,c.height+=2*p):(c.x-=p,c.width+=2*p)}return l&&l(1,h),h}return aS(e,n,i)}var xS=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.init=function(){var t=new Cr,e=new jw;this.group.add(e.group),this._symbolDraw=e,this._lineGroup=t},e.prototype.render=function(t,e,n){var i=this,r=t.coordinateSystem,o=this.group,a=t.getData(),s=t.getModel("lineStyle"),l=t.getModel("areaStyle"),u=a.getLayout("points")||[],h="polar"===r.type,c=this._coordSys,p=this._symbolDraw,d=this._polyline,f=this._polygon,g=this._lineGroup,y=t.get("animation"),v=!l.isEmpty(),m=l.get("origin"),x=qw(r,a,m),_=v&&function(t,e,n){if(!n.valueDim)return[];for(var i=e.count(),r=bx(2*i),o=0;o<i;o++){var a=Kw(n,t,e,o);r[2*o]=a[0],r[2*o+1]=a[1]}return r}(r,a,x),b=t.get("showSymbol"),w=t.get("connectNulls"),S=b&&!h&&gS(t,a,r),M=this._data;M&&M.eachItemGraphicEl((function(t,e){t.__temp&&(o.remove(t),M.setItemGraphicEl(e,null))})),b||p.remove(),o.add(g);var I,T=!h&&t.get("step");r&&r.getArea&&t.get("clip",!0)&&(null!=(I=r.getArea()).width?(I.x-=.1,I.y-=.1,I.width+=.2,I.height+=.2):I.r0&&(I.r0-=.5,I.r+=.5)),this._clipShapeForSymbol=I;var C=fS(a,r,n)||a.getVisual("style")[a.getVisual("drawType")];if(d&&c.type===r.type&&T===this._step){v&&!f?f=this._newPolygon(u,_):f&&!v&&(g.remove(f),f=this._polygon=null),h||this._initOrUpdateEndLabel(t,r,pp(C));var D=g.getClipPath();if(D)oh(D,{shape:mS(this,r,!1,t).shape},t);else g.setClipPath(mS(this,r,!0,t));b&&p.updateData(a,{isIgnore:S,clipShape:I,disableAnimation:!0,getSymbolPoint:function(t){return[u[2*t],u[2*t+1]]}}),uS(this._stackedOnPoints,_)&&uS(this._points,u)||(y?this._doUpdateAnimation(a,_,r,n,T,m,w):(T&&(u=dS(u,r,T,w),_&&(_=dS(_,r,T,w))),d.setShape({points:u}),f&&f.setShape({points:u,stackedOnPoints:_})))}else b&&p.updateData(a,{isIgnore:S,clipShape:I,disableAnimation:!0,getSymbolPoint:function(t){return[u[2*t],u[2*t+1]]}}),y&&this._initSymbolLabelAnimation(a,r,I),T&&(u=dS(u,r,T,w),_&&(_=dS(_,r,T,w))),d=this._newPolyline(u),v&&(f=this._newPolygon(u,_)),h||this._initOrUpdateEndLabel(t,r,pp(C)),g.setClipPath(mS(this,r,!0,t));var A=t.getModel("emphasis"),L=A.get("focus"),P=A.get("blurScope"),O=A.get("disabled");(d.useStyle(k(s.getLineStyle(),{fill:"none",stroke:C,lineJoin:"bevel"})),Vl(d,t,"lineStyle"),d.style.lineWidth>0&&"bolder"===t.get(["emphasis","lineStyle","width"]))&&(d.getState("emphasis").style.lineWidth=+d.style.lineWidth+1);Hs(d).seriesIndex=t.seriesIndex,Rl(d,L,P,O);var R=pS(t.get("smooth")),N=t.get("smoothMonotone");if(d.setShape({smooth:R,smoothMonotone:N,connectNulls:w}),f){var E=a.getCalculationInfo("stackedOnSeries"),z=0;f.useStyle(k(l.getAreaStyle(),{fill:C,opacity:.7,lineJoin:"bevel",decal:a.getVisual("style").decal})),E&&(z=pS(E.get("smooth"))),f.setShape({smooth:R,stackedOnSmooth:z,smoothMonotone:N,connectNulls:w}),Vl(f,t,"areaStyle"),Hs(f).seriesIndex=t.seriesIndex,Rl(f,L,P,O)}var V=function(t){i._changePolyState(t)};a.eachItemGraphicEl((function(t){t&&(t.onHoverStateChange=V)})),this._polyline.onHoverStateChange=V,this._data=a,this._coordSys=r,this._stackedOnPoints=_,this._points=u,this._step=T,this._valueOrigin=m,t.get("triggerLineEvent")&&(this.packEventData(t,d),f&&this.packEventData(t,f))},e.prototype.packEventData=function(t,e){Hs(e).eventData={componentType:"series",componentSubType:"line",componentIndex:t.componentIndex,seriesIndex:t.seriesIndex,seriesName:t.name,seriesType:"line"}},e.prototype.highlight=function(t,e,n,i){var r=t.getData(),o=wo(r,i);if(this._changePolyState("emphasis"),!(o instanceof Array)&&null!=o&&o>=0){var a=r.getLayout("points"),s=r.getItemGraphicEl(o);if(!s){var l=a[2*o],u=a[2*o+1];if(isNaN(l)||isNaN(u))return;if(this._clipShapeForSymbol&&!this._clipShapeForSymbol.contain(l,u))return;var h=t.get("zlevel"),c=t.get("z");(s=new Hw(r,o)).x=l,s.y=u,s.setZ(h,c);var p=s.getSymbolPath().getTextContent();p&&(p.zlevel=h,p.z=c,p.z2=this._polyline.z2+1),s.__temp=!0,r.setItemGraphicEl(o,s),s.stopSymbolAnimation(!0),this.group.add(s)}s.highlight()}else xg.prototype.highlight.call(this,t,e,n,i)},e.prototype.downplay=function(t,e,n,i){var r=t.getData(),o=wo(r,i);if(this._changePolyState("normal"),null!=o&&o>=0){var a=r.getItemGraphicEl(o);a&&(a.__temp?(r.setItemGraphicEl(o,null),this.group.remove(a)):a.downplay())}else xg.prototype.downplay.call(this,t,e,n,i)},e.prototype._changePolyState=function(t){var e=this._polygon;gl(this._polyline,t),e&&gl(e,t)},e.prototype._newPolyline=function(t){var e=this._polyline;return e&&this._lineGroup.remove(e),e=new nS({shape:{points:t},segmentIgnoreThreshold:2,z2:10}),this._lineGroup.add(e),this._polyline=e,e},e.prototype._newPolygon=function(t,e){var n=this._polygon;return n&&this._lineGroup.remove(n),n=new rS({shape:{points:t,stackedOnPoints:e},segmentIgnoreThreshold:2}),this._lineGroup.add(n),this._polygon=n,n},e.prototype._initSymbolLabelAnimation=function(t,e,n){var i,r,o=e.getBaseAxis(),a=o.inverse;"cartesian2d"===e.type?(i=o.isHorizontal(),r=!1):"polar"===e.type&&(i="angle"===o.dim,r=!0);var s=t.hostModel,l=s.get("animationDuration");U(l)&&(l=l(null));var u=s.get("animationDelay")||0,h=U(u)?u(null):u;t.eachItemGraphicEl((function(t,o){var s=t;if(s){var c=[t.x,t.y],p=void 0,d=void 0,f=void 0;if(n)if(r){var g=n,y=e.pointToCoord(c);i?(p=g.startAngle,d=g.endAngle,f=-y[1]/180*Math.PI):(p=g.r0,d=g.r,f=y[0])}else{var v=n;i?(p=v.x,d=v.x+v.width,f=t.x):(p=v.y+v.height,d=v.y,f=t.y)}var m=d===p?0:(f-p)/(d-p);a&&(m=1-m);var x=U(u)?u(o):l*m+h,_=s.getSymbolPath(),b=_.getTextContent();s.attr({scaleX:0,scaleY:0}),s.animateTo({scaleX:1,scaleY:1},{duration:200,setToFinal:!0,delay:x}),b&&b.animateFrom({style:{opacity:0}},{duration:300,delay:x}),_.disableLabelAnimation=!0}}))},e.prototype._initOrUpdateEndLabel=function(t,e,n){var i=t.getModel("endLabel");if(vS(t)){var r=t.getData(),o=this._polyline,a=r.getLayout("points");if(!a)return o.removeTextContent(),void(this._endLabel=null);var s=this._endLabel;s||((s=this._endLabel=new ks({z2:200})).ignoreClip=!0,o.setTextContent(this._endLabel),o.disableLabelAnimation=!0);var l=function(t){for(var e,n,i=t.length/2;i>0&&(e=t[2*i-2],n=t[2*i-1],isNaN(e)||isNaN(n));i--);return i-1}(a);l>=0&&(Hh(o,Yh(t,"endLabel"),{inheritColor:n,labelFetcher:t,labelDataIndex:l,defaultText:function(t,e,n){return null!=n?Ww(r,n):Gw(r,t)},enableTextSetter:!0},function(t,e){var n=e.getBaseAxis(),i=n.isHorizontal(),r=n.inverse,o=i?r?"right":"left":"center",a=i?"middle":r?"top":"bottom";return{normal:{align:t.get("align")||o,verticalAlign:t.get("verticalAlign")||a}}}(i,e)),o.textConfig.position=null)}else this._endLabel&&(this._polyline.removeTextContent(),this._endLabel=null)},e.prototype._endLabelOnDuring=function(t,e,n,i,r,o,a){var s=this._endLabel,l=this._polyline;if(s){t<1&&null==i.originalX&&(i.originalX=s.x,i.originalY=s.y);var u=n.getLayout("points"),h=n.hostModel,c=h.get("connectNulls"),p=o.get("precision"),d=o.get("distance")||0,f=a.getBaseAxis(),g=f.isHorizontal(),y=f.inverse,v=e.shape,m=y?g?v.x:v.y+v.height:g?v.x+v.width:v.y,x=(g?d:0)*(y?-1:1),_=(g?0:-d)*(y?-1:1),b=g?"x":"y",w=function(t,e,n){for(var i,r,o=t.length/2,a="x"===n?0:1,s=0,l=-1,u=0;u<o;u++)if(r=t[2*u+a],!isNaN(r)&&!isNaN(t[2*u+1-a]))if(0!==u){if(i<=e&&r>=e||i>=e&&r<=e){l=u;break}s=u,i=r}else i=r;return{range:[s,l],t:(e-i)/(r-i)}}(u,m,b),S=w.range,M=S[1]-S[0],I=void 0;if(M>=1){if(M>1&&!c){var T=yS(u,S[0]);s.attr({x:T[0]+x,y:T[1]+_}),r&&(I=h.getRawValue(S[0]))}else{(T=l.getPointOn(m,b))&&s.attr({x:T[0]+x,y:T[1]+_});var C=h.getRawValue(S[0]),D=h.getRawValue(S[1]);r&&(I=Po(n,p,C,D,w.t))}i.lastFrameIndex=S[0]}else{var A=1===t||i.lastFrameIndex>0?S[0]:0;T=yS(u,A);r&&(I=h.getRawValue(A)),s.attr({x:T[0]+x,y:T[1]+_})}r&&Jh(s).setLabelText(I)}},e.prototype._doUpdateAnimation=function(t,e,n,i,r,o,a){var s=this._polyline,l=this._polygon,u=t.hostModel,h=function(t,e,n,i,r,o,a,s){for(var l=function(t,e){var n=[];return e.diff(t).add((function(t){n.push({cmd:"+",idx:t})})).update((function(t,e){n.push({cmd:"=",idx:e,idx1:t})})).remove((function(t){n.push({cmd:"-",idx:t})})).execute(),n}(t,e),u=[],h=[],c=[],p=[],d=[],f=[],g=[],y=qw(r,e,a),v=t.getLayout("points")||[],m=e.getLayout("points")||[],x=0;x<l.length;x++){var _=l[x],b=!0,w=void 0,S=void 0;switch(_.cmd){case"=":w=2*_.idx,S=2*_.idx1;var M=v[w],I=v[w+1],T=m[S],C=m[S+1];(isNaN(M)||isNaN(I))&&(M=T,I=C),u.push(M,I),h.push(T,C),c.push(n[w],n[w+1]),p.push(i[S],i[S+1]),g.push(e.getRawIndex(_.idx1));break;case"+":var D=_.idx,A=y.dataDimsForPoint,k=r.dataToPoint([e.get(A[0],D),e.get(A[1],D)]);S=2*D,u.push(k[0],k[1]),h.push(m[S],m[S+1]);var L=Kw(y,r,e,D);c.push(L[0],L[1]),p.push(i[S],i[S+1]),g.push(e.getRawIndex(D));break;case"-":b=!1}b&&(d.push(_),f.push(f.length))}f.sort((function(t,e){return g[t]-g[e]}));var P=u.length,O=bx(P),R=bx(P),N=bx(P),E=bx(P),z=[];for(x=0;x<f.length;x++){var V=f[x],B=2*x,F=2*V;O[B]=u[F],O[B+1]=u[F+1],R[B]=h[F],R[B+1]=h[F+1],N[B]=c[F],N[B+1]=c[F+1],E[B]=p[F],E[B+1]=p[F+1],z[x]=d[V]}return{current:O,next:R,stackedOnCurrent:N,stackedOnNext:E,status:z}}(this._data,t,this._stackedOnPoints,e,this._coordSys,0,this._valueOrigin),c=h.current,p=h.stackedOnCurrent,d=h.next,f=h.stackedOnNext;if(r&&(c=dS(h.current,n,r,a),p=dS(h.stackedOnCurrent,n,r,a),d=dS(h.next,n,r,a),f=dS(h.stackedOnNext,n,r,a)),cS(c,d)>3e3||l&&cS(p,f)>3e3)return s.stopAnimation(),s.setShape({points:d}),void(l&&(l.stopAnimation(),l.setShape({points:d,stackedOnPoints:f})));s.shape.__points=h.current,s.shape.points=c;var g={shape:{points:d}};h.current!==c&&(g.shape.__points=h.next),s.stopAnimation(),rh(s,g,u),l&&(l.setShape({points:c,stackedOnPoints:p}),l.stopAnimation(),rh(l,{shape:{stackedOnPoints:f}},u),s.shape.points!==l.shape.points&&(l.shape.points=s.shape.points));for(var y=[],v=h.status,m=0;m<v.length;m++){if("="===v[m].cmd){var x=t.getItemGraphicEl(v[m].idx1);x&&y.push({el:x,ptIdx:m})}}s.animators&&s.animators.length&&s.animators[0].during((function(){l&&l.dirtyShape();for(var t=s.shape.__points,e=0;e<y.length;e++){var n=y[e].el,i=2*y[e].ptIdx;n.x=t[i],n.y=t[i+1],n.markRedraw()}}))},e.prototype.remove=function(t){var e=this.group,n=this._data;this._lineGroup.removeAll(),this._symbolDraw.remove(!0),n&&n.eachItemGraphicEl((function(t,i){t.__temp&&(e.remove(t),n.setItemGraphicEl(i,null))})),this._polyline=this._polygon=this._coordSys=this._points=this._stackedOnPoints=this._endLabel=this._data=null},e.type="line",e}(xg);function _S(t,e){return{seriesType:t,plan:yg(),reset:function(t){var n=t.getData(),i=t.coordinateSystem,r=t.pipelineContext,o=e||r.large;if(i){var a=z(i.dimensions,(function(t){return n.mapDimension(t)})).slice(0,2),s=a.length,l=n.getCalculationInfo("stackResultDimension");ex(n,a[0])&&(a[0]=l),ex(n,a[1])&&(a[1]=l);var u=n.getStore(),h=n.getDimensionIndex(a[0]),c=n.getDimensionIndex(a[1]);return s&&{progress:function(t,e){for(var n=t.end-t.start,r=o&&bx(n*s),a=[],l=[],p=t.start,d=0;p<t.end;p++){var f=void 0;if(1===s){var g=u.get(h,p);f=i.dataToPoint(g,null,l)}else a[0]=u.get(h,p),a[1]=u.get(c,p),f=i.dataToPoint(a,null,l);o?(r[d++]=f[0],r[d++]=f[1]):e.setItemLayout(p,f.slice())}o&&e.setLayout("points",r)}}}}}}var bS={average:function(t){for(var e=0,n=0,i=0;i<t.length;i++)isNaN(t[i])||(e+=t[i],n++);return 0===n?NaN:e/n},sum:function(t){for(var e=0,n=0;n<t.length;n++)e+=t[n]||0;return e},max:function(t){for(var e=-1/0,n=0;n<t.length;n++)t[n]>e&&(e=t[n]);return isFinite(e)?e:NaN},min:function(t){for(var e=1/0,n=0;n<t.length;n++)t[n]<e&&(e=t[n]);return isFinite(e)?e:NaN},nearest:function(t){return t[0]}},wS=function(t){return Math.round(t.length/2)};function SS(t){return{seriesType:t,reset:function(t,e,n){var i=t.getData(),r=t.get("sampling"),o=t.coordinateSystem,a=i.count();if(a>10&&"cartesian2d"===o.type&&r){var s=o.getBaseAxis(),l=o.getOtherAxis(s),u=s.getExtent(),h=n.getDevicePixelRatio(),c=Math.abs(u[1]-u[0])*(h||1),p=Math.round(a/c);if(isFinite(p)&&p>1){"lttb"===r&&t.setData(i.lttbDownSample(i.mapDimension(l.dim),1/p));var d=void 0;X(r)?d=bS[r]:U(r)&&(d=r),d&&t.setData(i.downSample(i.mapDimension(l.dim),1/p,d,wS))}}}}}var MS=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.getInitialData=function(t,e){return ix(null,this,{useEncodeDefaulter:!0})},e.prototype.getMarkerPosition=function(t){var e=this.coordinateSystem;if(e&&e.clampData){var n=e.dataToPoint(e.clampData(t)),i=this.getData(),r=i.getLayout("offset"),o=i.getLayout("size");return n[e.getBaseAxis().isHorizontal()?0:1]+=r+o/2,n}return[NaN,NaN]},e.type="series.__base_bar__",e.defaultOption={z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,barMinHeight:0,barMinAngle:0,large:!1,largeThreshold:400,progressive:3e3,progressiveChunkMode:"mod"},e}(sg);sg.registerClass(MS);var IS=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.getInitialData=function(){return ix(null,this,{useEncodeDefaulter:!0,createInvertedIndices:!!this.get("realtimeSort",!0)||null})},e.prototype.getProgressive=function(){return!!this.get("large")&&this.get("progressive")},e.prototype.getProgressiveThreshold=function(){var t=this.get("progressiveThreshold"),e=this.get("largeThreshold");return e>t&&(t=e),t},e.prototype.brushSelector=function(t,e,n){return n.rect(e.getItemLayout(t))},e.type="series.bar",e.dependencies=["grid","polar"],e.defaultOption=yc(MS.defaultOption,{clip:!0,roundCap:!1,showBackground:!1,backgroundStyle:{color:"rgba(180, 180, 180, 0.2)",borderColor:null,borderWidth:0,borderType:"solid",borderRadius:0,shadowBlur:0,shadowColor:null,shadowOffsetX:0,shadowOffsetY:0,opacity:1},select:{itemStyle:{borderColor:"#212121"}},realtimeSort:!1}),e}(MS),TS=function(){this.cx=0,this.cy=0,this.r0=0,this.r=0,this.startAngle=0,this.endAngle=2*Math.PI,this.clockwise=!0},CS=function(t){function e(e){var n=t.call(this,e)||this;return n.type="sausage",n}return n(e,t),e.prototype.getDefaultShape=function(){return new TS},e.prototype.buildPath=function(t,e){var n=e.cx,i=e.cy,r=Math.max(e.r0||0,0),o=Math.max(e.r,0),a=.5*(o-r),s=r+a,l=e.startAngle,u=e.endAngle,h=e.clockwise,c=2*Math.PI,p=h?u-l<c:l-u<c;p||(l=u-(h?c:-c));var d=Math.cos(l),f=Math.sin(l),g=Math.cos(u),y=Math.sin(u);p?(t.moveTo(d*r+n,f*r+i),t.arc(d*s+n,f*s+i,a,-Math.PI+l,l,!h)):t.moveTo(d*o+n,f*o+i),t.arc(n,i,o,l,u,!h),t.arc(g*s+n,y*s+i,a,u-2*Math.PI,u-Math.PI,!h),0!==r&&t.arc(n,i,r,u,l,h)},e}(gs);function DS(t,e,n){return e*Math.sin(t)*(n?-1:1)}function AS(t,e,n){return e*Math.cos(t)*(n?1:-1)}var kS=Math.max,LS=Math.min;var PS=function(t){function e(){var n=t.call(this)||this;return n.type=e.type,n._isFirstFrame=!0,n}return n(e,t),e.prototype.render=function(t,e,n,i){this._model=t,this._removeOnRenderedListener(n),this._updateDrawMode(t);var r=t.get("coordinateSystem");("cartesian2d"===r||"polar"===r)&&(this._progressiveEls=null,this._isLargeDraw?this._renderLarge(t,e,n):this._renderNormal(t,e,n,i))},e.prototype.incrementalPrepareRender=function(t){this._clear(),this._updateDrawMode(t),this._updateLargeClip(t)},e.prototype.incrementalRender=function(t,e){this._progressiveEls=[],this._incrementalRenderLarge(t,e)},e.prototype.eachRendered=function(t){Vh(this._progressiveEls||this.group,t)},e.prototype._updateDrawMode=function(t){var e=t.pipelineContext.large;null!=this._isLargeDraw&&e===this._isLargeDraw||(this._isLargeDraw=e,this._clear())},e.prototype._renderNormal=function(t,e,n,i){var r,o=this.group,a=t.getData(),s=this._data,l=t.coordinateSystem,u=l.getBaseAxis();"cartesian2d"===l.type?r=u.isHorizontal():"polar"===l.type&&(r="angle"===u.dim);var h=t.isAnimationEnabled()?t:null,c=function(t,e){var n=t.get("realtimeSort",!0),i=e.getBaseAxis();0;if(n&&"category"===i.type&&"cartesian2d"===e.type)return{baseAxis:i,otherAxis:e.getOtherAxis(i)}}(t,l);c&&this._enableRealtimeSort(c,a,n);var p=t.get("clip",!0)||c,d=function(t,e){var n=t.getArea&&t.getArea();if(lS(t,"cartesian2d")){var i=t.getBaseAxis();if("category"!==i.type||!i.onBand){var r=e.getLayout("bandWidth");i.isHorizontal()?(n.x-=r,n.width+=2*r):(n.y-=r,n.height+=2*r)}}return n}(l,a);o.removeClipPath();var f=t.get("roundCap",!0),g=t.get("showBackground",!0),y=t.getModel("backgroundStyle"),v=y.get("borderRadius")||0,m=[],x=this._backgroundEls,_=i&&i.isInitSort,b=i&&"changeAxisOrder"===i.type;function w(t){var e=FS[l.type](a,t),n=function(t,e,n){return new("polar"===t.type?Cu:Cs)({shape:ZS(e,n,t),silent:!0,z2:0})}(l,r,e);return n.useStyle(y.getItemStyle()),"cartesian2d"===l.type&&n.setShape("r",v),m[t]=n,n}a.diff(s).add((function(e){var n=a.getItemModel(e),i=FS[l.type](a,e,n);if(g&&w(e),a.hasValue(e)&&BS[l.type](i)){var s=!1;p&&(s=OS[l.type](d,i));var y=RS[l.type](t,a,e,i,r,h,u.model,!1,f);c&&(y.forceLabelAnimation=!0),WS(y,a,e,n,i,t,r,"polar"===l.type),_?y.attr({shape:i}):c?NS(c,h,y,i,e,r,!1,!1):oh(y,{shape:i},t,e),a.setItemGraphicEl(e,y),o.add(y),y.ignore=s}})).update((function(e,n){var i=a.getItemModel(e),S=FS[l.type](a,e,i);if(g){var M=void 0;0===x.length?M=w(n):((M=x[n]).useStyle(y.getItemStyle()),"cartesian2d"===l.type&&M.setShape("r",v),m[e]=M);var I=FS[l.type](a,e);rh(M,{shape:ZS(r,I,l)},h,e)}var T=s.getItemGraphicEl(n);if(a.hasValue(e)&&BS[l.type](S)){var C=!1;if(p&&(C=OS[l.type](d,S))&&o.remove(T),T?hh(T):T=RS[l.type](t,a,e,S,r,h,u.model,!!T,f),c&&(T.forceLabelAnimation=!0),b){var D=T.getTextContent();if(D){var A=Jh(D);null!=A.prevValue&&(A.prevValue=A.value)}}else WS(T,a,e,i,S,t,r,"polar"===l.type);_?T.attr({shape:S}):c?NS(c,h,T,S,e,r,!0,b):rh(T,{shape:S},t,e,null),a.setItemGraphicEl(e,T),T.ignore=C,o.add(T)}else o.remove(T)})).remove((function(e){var n=s.getItemGraphicEl(e);n&&uh(n,t,e)})).execute();var S=this._backgroundGroup||(this._backgroundGroup=new Cr);S.removeAll();for(var M=0;M<m.length;++M)S.add(m[M]);o.add(S),this._backgroundEls=m,this._data=a},e.prototype._renderLarge=function(t,e,n){this._clear(),US(t,this.group),this._updateLargeClip(t)},e.prototype._incrementalRenderLarge=function(t,e){this._removeBackground(),US(e,this.group,this._progressiveEls,!0)},e.prototype._updateLargeClip=function(t){var e=t.get("clip",!0)&&sS(t.coordinateSystem,!1,t),n=this.group;e?n.setClipPath(e):n.removeClipPath()},e.prototype._enableRealtimeSort=function(t,e,n){var i=this;if(e.count()){var r=t.baseAxis;if(this._isFirstFrame)this._dispatchInitSort(e,t,n),this._isFirstFrame=!1;else{var o=function(t){var n=e.getItemGraphicEl(t),i=n&&n.shape;return i&&Math.abs(r.isHorizontal()?i.height:i.width)||0};this._onRendered=function(){i._updateSortWithinSameData(e,o,r,n)},n.getZr().on("rendered",this._onRendered)}}},e.prototype._dataSort=function(t,e,n){var i=[];return t.each(t.mapDimension(e.dim),(function(t,e){var r=n(e);r=null==r?NaN:r,i.push({dataIndex:e,mappedValue:r,ordinalNumber:t})})),i.sort((function(t,e){return e.mappedValue-t.mappedValue})),{ordinalNumbers:z(i,(function(t){return t.ordinalNumber}))}},e.prototype._isOrderChangedWithinSameData=function(t,e,n){for(var i=n.scale,r=t.mapDimension(n.dim),o=Number.MAX_VALUE,a=0,s=i.getOrdinalMeta().categories.length;a<s;++a){var l=t.rawIndexOf(r,i.getRawOrdinalNumber(a)),u=l<0?Number.MIN_VALUE:e(t.indexOfRawIndex(l));if(u>o)return!0;o=u}return!1},e.prototype._isOrderDifferentInView=function(t,e){for(var n=e.scale,i=n.getExtent(),r=Math.max(0,i[0]),o=Math.min(i[1],n.getOrdinalMeta().categories.length-1);r<=o;++r)if(t.ordinalNumbers[r]!==n.getRawOrdinalNumber(r))return!0},e.prototype._updateSortWithinSameData=function(t,e,n,i){if(this._isOrderChangedWithinSameData(t,e,n)){var r=this._dataSort(t,n,e);this._isOrderDifferentInView(r,n)&&(this._removeOnRenderedListener(i),i.dispatchAction({type:"changeAxisOrder",componentType:n.dim+"Axis",axisId:n.index,sortInfo:r}))}},e.prototype._dispatchInitSort=function(t,e,n){var i=e.baseAxis,r=this._dataSort(t,i,(function(n){return t.get(t.mapDimension(e.otherAxis.dim),n)}));n.dispatchAction({type:"changeAxisOrder",componentType:i.dim+"Axis",isInitSort:!0,axisId:i.index,sortInfo:r})},e.prototype.remove=function(t,e){this._clear(this._model),this._removeOnRenderedListener(e)},e.prototype.dispose=function(t,e){this._removeOnRenderedListener(e)},e.prototype._removeOnRenderedListener=function(t){this._onRendered&&(t.getZr().off("rendered",this._onRendered),this._onRendered=null)},e.prototype._clear=function(t){var e=this.group,n=this._data;t&&t.isAnimationEnabled()&&n&&!this._isLargeDraw?(this._removeBackground(),this._backgroundEls=[],n.eachItemGraphicEl((function(e){uh(e,t,Hs(e).dataIndex)}))):e.removeAll(),this._data=null,this._isFirstFrame=!0},e.prototype._removeBackground=function(){this.group.remove(this._backgroundGroup),this._backgroundGroup=null},e.type="bar",e}(xg),OS={cartesian2d:function(t,e){var n=e.width<0?-1:1,i=e.height<0?-1:1;n<0&&(e.x+=e.width,e.width=-e.width),i<0&&(e.y+=e.height,e.height=-e.height);var r=t.x+t.width,o=t.y+t.height,a=kS(e.x,t.x),s=LS(e.x+e.width,r),l=kS(e.y,t.y),u=LS(e.y+e.height,o),h=s<a,c=u<l;return e.x=h&&a>r?s:a,e.y=c&&l>o?u:l,e.width=h?0:s-a,e.height=c?0:u-l,n<0&&(e.x+=e.width,e.width=-e.width),i<0&&(e.y+=e.height,e.height=-e.height),h||c},polar:function(t,e){var n=e.r0<=e.r?1:-1;if(n<0){var i=e.r;e.r=e.r0,e.r0=i}var r=LS(e.r,t.r),o=kS(e.r0,t.r0);e.r=r,e.r0=o;var a=r-o<0;if(n<0){i=e.r;e.r=e.r0,e.r0=i}return a}},RS={cartesian2d:function(t,e,n,i,r,o,a,s,l){var u=new Cs({shape:A({},i),z2:1});(u.__dataIndex=n,u.name="item",o)&&(u.shape[r?"height":"width"]=0);return u},polar:function(t,e,n,i,r,o,a,s,l){var u=!r&&l?CS:Cu,h=new u({shape:i,z2:1});h.name="item";var c,p,d=GS(r);if(h.calculateTextPosition=(c=d,p=({isRoundCap:u===CS}||{}).isRoundCap,function(t,e,n){var i=e.position;if(!i||i instanceof Array)return yr(t,e,n);var r=c(i),o=null!=e.distance?e.distance:5,a=this.shape,s=a.cx,l=a.cy,u=a.r,h=a.r0,d=(u+h)/2,f=a.startAngle,g=a.endAngle,y=(f+g)/2,v=p?Math.abs(u-h)/2:0,m=Math.cos,x=Math.sin,_=s+u*m(f),b=l+u*x(f),w="left",S="top";switch(r){case"startArc":_=s+(h-o)*m(y),b=l+(h-o)*x(y),w="center",S="top";break;case"insideStartArc":_=s+(h+o)*m(y),b=l+(h+o)*x(y),w="center",S="bottom";break;case"startAngle":_=s+d*m(f)+DS(f,o+v,!1),b=l+d*x(f)+AS(f,o+v,!1),w="right",S="middle";break;case"insideStartAngle":_=s+d*m(f)+DS(f,-o+v,!1),b=l+d*x(f)+AS(f,-o+v,!1),w="left",S="middle";break;case"middle":_=s+d*m(y),b=l+d*x(y),w="center",S="middle";break;case"endArc":_=s+(u+o)*m(y),b=l+(u+o)*x(y),w="center",S="bottom";break;case"insideEndArc":_=s+(u-o)*m(y),b=l+(u-o)*x(y),w="center",S="top";break;case"endAngle":_=s+d*m(g)+DS(g,o+v,!0),b=l+d*x(g)+AS(g,o+v,!0),w="left",S="middle";break;case"insideEndAngle":_=s+d*m(g)+DS(g,-o+v,!0),b=l+d*x(g)+AS(g,-o+v,!0),w="right",S="middle";break;default:return yr(t,e,n)}return(t=t||{}).x=_,t.y=b,t.align=w,t.verticalAlign=S,t}),o){var f=r?"r":"endAngle",g={};h.shape[f]=r?0:i.startAngle,g[f]=i[f],(s?rh:oh)(h,{shape:g},o)}return h}};function NS(t,e,n,i,r,o,a,s){var l,u;o?(u={x:i.x,width:i.width},l={y:i.y,height:i.height}):(u={y:i.y,height:i.height},l={x:i.x,width:i.width}),s||(a?rh:oh)(n,{shape:l},e,r,null),(a?rh:oh)(n,{shape:u},e?t.baseAxis.model:null,r)}function ES(t,e){for(var n=0;n<e.length;n++)if(!isFinite(t[e[n]]))return!0;return!1}var zS=["x","y","width","height"],VS=["cx","cy","r","startAngle","endAngle"],BS={cartesian2d:function(t){return!ES(t,zS)},polar:function(t){return!ES(t,VS)}},FS={cartesian2d:function(t,e,n){var i=t.getItemLayout(e),r=n?function(t,e){var n=t.get(["itemStyle","borderColor"]);if(!n||"none"===n)return 0;var i=t.get(["itemStyle","borderWidth"])||0,r=isNaN(e.width)?Number.MAX_VALUE:Math.abs(e.width),o=isNaN(e.height)?Number.MAX_VALUE:Math.abs(e.height);return Math.min(i,r,o)}(n,i):0,o=i.width>0?1:-1,a=i.height>0?1:-1;return{x:i.x+o*r/2,y:i.y+a*r/2,width:i.width-o*r,height:i.height-a*r}},polar:function(t,e,n){var i=t.getItemLayout(e);return{cx:i.cx,cy:i.cy,r0:i.r0,r:i.r,startAngle:i.startAngle,endAngle:i.endAngle,clockwise:i.clockwise}}};function GS(t){return function(t){var e=t?"Arc":"Angle";return function(t){switch(t){case"start":case"insideStart":case"end":case"insideEnd":return t+e;default:return t}}}(t)}function WS(t,e,n,i,r,o,a,s){var l=e.getItemVisual(n,"style");s||t.setShape("r",i.get(["itemStyle","borderRadius"])||0),t.useStyle(l);var u=i.getShallow("cursor");u&&t.attr("cursor",u);var h=s?a?r.r>=r.r0?"endArc":"startArc":r.endAngle>=r.startAngle?"endAngle":"startAngle":a?r.height>=0?"bottom":"top":r.width>=0?"right":"left",c=Yh(i);Hh(t,c,{labelFetcher:o,labelDataIndex:n,defaultText:Gw(o.getData(),n),inheritColor:l.fill,defaultOpacity:l.opacity,defaultOutsidePosition:h});var p=t.getTextContent();if(s&&p){var d=i.get(["label","position"]);t.textConfig.inside="middle"===d||null,function(t,e,n,i){if(j(i))t.setTextConfig({rotation:i});else if(Y(e))t.setTextConfig({rotation:0});else{var r,o=t.shape,a=o.clockwise?o.startAngle:o.endAngle,s=o.clockwise?o.endAngle:o.startAngle,l=(a+s)/2,u=n(e);switch(u){case"startArc":case"insideStartArc":case"middle":case"insideEndArc":case"endArc":r=l;break;case"startAngle":case"insideStartAngle":r=a;break;case"endAngle":case"insideEndAngle":r=s;break;default:return void t.setTextConfig({rotation:0})}var h=1.5*Math.PI-r;"middle"===u&&h>Math.PI/2&&h<1.5*Math.PI&&(h-=Math.PI),t.setTextConfig({rotation:h})}}(t,"outside"===d?h:d,GS(a),i.get(["label","rotate"]))}Qh(p,c,o.getRawValue(n),(function(t){return Ww(e,t)}));var f=i.getModel(["emphasis"]);Rl(t,f.get("focus"),f.get("blurScope"),f.get("disabled")),Vl(t,i),function(t){return null!=t.startAngle&&null!=t.endAngle&&t.startAngle===t.endAngle}(r)&&(t.style.fill="none",t.style.stroke="none",E(t.states,(function(t){t.style&&(t.style.fill=t.style.stroke="none")})))}var HS=function(){},YS=function(t){function e(e){var n=t.call(this,e)||this;return n.type="largeBar",n}return n(e,t),e.prototype.getDefaultShape=function(){return new HS},e.prototype.buildPath=function(t,e){for(var n=e.points,i=this.baseDimIdx,r=1-this.baseDimIdx,o=[],a=[],s=this.barWidth,l=0;l<n.length;l+=3)a[i]=s,a[r]=n[l+2],o[i]=n[l+i],o[r]=n[l+r],t.rect(o[0],o[1],a[0],a[1])},e}(gs);function US(t,e,n,i){var r=t.getData(),o=r.getLayout("valueAxisHorizontal")?1:0,a=r.getLayout("largeDataIndices"),s=r.getLayout("size"),l=t.getModel("backgroundStyle"),u=r.getLayout("largeBackgroundPoints");if(u){var h=new YS({shape:{points:u},incremental:!!i,silent:!0,z2:0});h.baseDimIdx=o,h.largeDataIndices=a,h.barWidth=s,h.useStyle(l.getItemStyle()),e.add(h),n&&n.push(h)}var c=new YS({shape:{points:r.getLayout("largePoints")},incremental:!!i,z2:1});c.baseDimIdx=o,c.largeDataIndices=a,c.barWidth=s,e.add(c),c.useStyle(r.getVisual("style")),Hs(c).seriesIndex=t.seriesIndex,t.get("silent")||(c.on("mousedown",XS),c.on("mousemove",XS)),n&&n.push(c)}var XS=Dg((function(t){var e=function(t,e,n){for(var i=t.baseDimIdx,r=1-i,o=t.shape.points,a=t.largeDataIndices,s=[],l=[],u=t.barWidth,h=0,c=o.length/3;h<c;h++){var p=3*h;if(l[i]=u,l[r]=o[p+2],s[i]=o[p+i],s[r]=o[p+r],l[r]<0&&(s[r]+=l[r],l[r]=-l[r]),e>=s[0]&&e<=s[0]+l[0]&&n>=s[1]&&n<=s[1]+l[1])return a[h]}return-1}(this,t.offsetX,t.offsetY);Hs(this).dataIndex=e>=0?e:null}),30,!1);function ZS(t,e,n){if(lS(n,"cartesian2d")){var i=e,r=n.getArea();return{x:t?i.x:r.x,y:t?r.y:i.y,width:t?i.width:r.width,height:t?r.height:i.height}}var o=e;return{cx:(r=n.getArea()).cx,cy:r.cy,r0:t?r.r0:o.r0,r:t?r.r:o.r,startAngle:t?o.startAngle:0,endAngle:t?o.endAngle:2*Math.PI}}var jS=2*Math.PI,qS=Math.PI/180;function KS(t,e){return xp(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}function $S(t,e){var n=KS(t,e),i=t.get("center"),r=t.get("radius");Y(r)||(r=[0,r]),Y(i)||(i=[i,i]);var o=Er(n.width,e.getWidth()),a=Er(n.height,e.getHeight()),s=Math.min(o,a);return{cx:Er(i[0],o)+n.x,cy:Er(i[1],a)+n.y,r0:Er(r[0],s/2),r:Er(r[1],s/2)}}function JS(t,e,n){e.eachSeriesByType(t,(function(t){var e=t.getData(),i=e.mapDimension("value"),r=KS(t,n),o=$S(t,n),a=o.cx,s=o.cy,l=o.r,u=o.r0,h=-t.get("startAngle")*qS,c=t.get("minAngle")*qS,p=0;e.each(i,(function(t){!isNaN(t)&&p++}));var d=e.getSum(i),f=Math.PI/(d||p)*2,g=t.get("clockwise"),y=t.get("roseType"),v=t.get("stillShowZeroSum"),m=e.getDataExtent(i);m[0]=0;var x=jS,_=0,b=h,w=g?1:-1;if(e.setLayout({viewRect:r,r:l}),e.each(i,(function(t,n){var i;if(isNaN(t))e.setItemLayout(n,{angle:NaN,startAngle:NaN,endAngle:NaN,clockwise:g,cx:a,cy:s,r0:u,r:y?NaN:l});else{(i="area"!==y?0===d&&v?f:t*f:jS/p)<c?(i=c,x-=c):_+=t;var r=b+w*i;e.setItemLayout(n,{angle:i,startAngle:b,endAngle:r,clockwise:g,cx:a,cy:s,r0:u,r:y?Nr(t,m,[u,l]):l}),b=r}})),x<jS&&p)if(x<=.001){var S=jS/p;e.each(i,(function(t,n){if(!isNaN(t)){var i=e.getItemLayout(n);i.angle=S,i.startAngle=h+w*n*S,i.endAngle=h+w*(n+1)*S}}))}else f=x/_,b=h,e.each(i,(function(t,n){if(!isNaN(t)){var i=e.getItemLayout(n),r=i.angle===c?c:t*f;i.startAngle=b,i.endAngle=b+w*r,b+=w*r}}))}))}function QS(t){return{seriesType:t,reset:function(t,e){var n=e.findComponents({mainType:"legend"});if(n&&n.length){var i=t.getData();i.filterSelf((function(t){for(var e=i.getName(t),r=0;r<n.length;r++)if(!n[r].isSelected(e))return!1;return!0}))}}}}var tM=Math.PI/180;function eM(t,e,n,i,r,o,a,s,l,u){if(!(t.length<2)){for(var h=t.length,c=0;c<h;c++)if("outer"===t[c].position&&"labelLine"===t[c].labelAlignTo){var p=t[c].label.x-u;t[c].linePoints[1][0]+=p,t[c].label.x=u}yb(t,l,l+a)&&function(t){for(var o={list:[],maxY:0},a={list:[],maxY:0},s=0;s<t.length;s++)if("none"===t[s].labelAlignTo){var l=t[s],u=l.label.y>n?a:o,h=Math.abs(l.label.y-n);if(h>=u.maxY){var c=l.label.x-e-l.len2*r,p=i+l.len,f=Math.abs(c)<p?Math.sqrt(h*h/(1-c*c/p/p)):p;u.rB=f,u.maxY=h}u.list.push(l)}d(o),d(a)}(t)}function d(t){for(var o=t.rB,a=o*o,s=0;s<t.list.length;s++){var l=t.list[s],u=Math.abs(l.label.y-n),h=i+l.len,c=h*h,p=Math.sqrt((1-Math.abs(u*u/a))*c),d=e+(p+l.len2)*r,f=d-l.label.x;nM(l,l.targetTextWidth-f*r,!0),l.label.x=d}}}function nM(t,e,n){if(void 0===n&&(n=!1),null==t.labelStyleWidth){var i=t.label,r=i.style,o=t.rect,a=r.backgroundColor,s=r.padding,l=s?s[1]+s[3]:0,u=r.overflow,h=o.width+(a?0:l);if(e<h||n){var c=o.height;if(u&&u.match("break")){i.setStyle("backgroundColor",null),i.setStyle("width",e-l);var p=i.getBoundingRect();i.setStyle("width",Math.ceil(p.width)),i.setStyle("backgroundColor",a)}else{var d=e-l,f=e<h?d:n?d>t.unconstrainedWidth?null:d:null;i.setStyle("width",f)}var g=i.getBoundingRect();o.width=g.width;var y=(i.style.margin||0)+2.1;o.height=g.height+y,o.y-=(o.height-c)/2}}}function iM(t){return"center"===t.position}function rM(t){var e,n,i=t.getData(),r=[],o=!1,a=(t.get("minShowLabelAngle")||0)*tM,s=i.getLayout("viewRect"),l=i.getLayout("r"),u=s.width,h=s.x,c=s.y,p=s.height;function d(t){t.ignore=!0}i.each((function(t){var s=i.getItemGraphicEl(t),c=s.shape,p=s.getTextContent(),f=s.getTextGuideLine(),g=i.getItemModel(t),y=g.getModel("label"),v=y.get("position")||g.get(["emphasis","label","position"]),m=y.get("distanceToLabelLine"),x=y.get("alignTo"),_=Er(y.get("edgeDistance"),u),b=y.get("bleedMargin"),w=g.getModel("labelLine"),S=w.get("length");S=Er(S,u);var M=w.get("length2");if(M=Er(M,u),Math.abs(c.endAngle-c.startAngle)<a)return E(p.states,d),void(p.ignore=!0);if(function(t){if(!t.ignore)return!0;for(var e in t.states)if(!1===t.states[e].ignore)return!0;return!1}(p)){var I,T,C,D,A=(c.startAngle+c.endAngle)/2,k=Math.cos(A),L=Math.sin(A);e=c.cx,n=c.cy;var P="inside"===v||"inner"===v;if("center"===v)I=c.cx,T=c.cy,D="center";else{var O=(P?(c.r+c.r0)/2*k:c.r*k)+e,R=(P?(c.r+c.r0)/2*L:c.r*L)+n;if(I=O+3*k,T=R+3*L,!P){var N=O+k*(S+l-c.r),z=R+L*(S+l-c.r),V=N+(k<0?-1:1)*M;I="edge"===x?k<0?h+_:h+u-_:V+(k<0?-m:m),T=z,C=[[O,R],[N,z],[V,z]]}D=P?"center":"edge"===x?k>0?"right":"left":k>0?"left":"right"}var B=Math.PI,F=0,G=y.get("rotate");if(j(G))F=G*(B/180);else if("center"===v)F=0;else if("radial"===G||!0===G){F=k<0?-A+B:-A}else if("tangential"===G&&"outside"!==v&&"outer"!==v){var W=Math.atan2(k,L);W<0&&(W=2*B+W),L>0&&(W=B+W),F=W-B}if(o=!!F,p.x=I,p.y=T,p.rotation=F,p.setStyle({verticalAlign:"middle"}),P){p.setStyle({align:D});var H=p.states.select;H&&(H.x+=p.x,H.y+=p.y)}else{var Y=p.getBoundingRect().clone();Y.applyTransform(p.getComputedTransform());var U=(p.style.margin||0)+2.1;Y.y-=U/2,Y.height+=U,r.push({label:p,labelLine:f,position:v,len:S,len2:M,minTurnAngle:w.get("minTurnAngle"),maxSurfaceAngle:w.get("maxSurfaceAngle"),surfaceNormal:new Ji(k,L),linePoints:C,textAlign:D,labelDistance:m,labelAlignTo:x,edgeDistance:_,bleedMargin:b,rect:Y,unconstrainedWidth:Y.width,labelStyleWidth:p.style.width})}s.setTextConfig({inside:P})}})),!o&&t.get("avoidLabelOverlap")&&function(t,e,n,i,r,o,a,s){for(var l=[],u=[],h=Number.MAX_VALUE,c=-Number.MAX_VALUE,p=0;p<t.length;p++){var d=t[p].label;iM(t[p])||(d.x<e?(h=Math.min(h,d.x),l.push(t[p])):(c=Math.max(c,d.x),u.push(t[p])))}for(p=0;p<t.length;p++)if(!iM(y=t[p])&&y.linePoints){if(null!=y.labelStyleWidth)continue;d=y.label;var f=y.linePoints,g=void 0;g="edge"===y.labelAlignTo?d.x<e?f[2][0]-y.labelDistance-a-y.edgeDistance:a+r-y.edgeDistance-f[2][0]-y.labelDistance:"labelLine"===y.labelAlignTo?d.x<e?h-a-y.bleedMargin:a+r-c-y.bleedMargin:d.x<e?d.x-a-y.bleedMargin:a+r-d.x-y.bleedMargin,y.targetTextWidth=g,nM(y,g)}for(eM(u,e,n,i,1,0,o,0,s,c),eM(l,e,n,i,-1,0,o,0,s,h),p=0;p<t.length;p++){var y;if(!iM(y=t[p])&&y.linePoints){d=y.label,f=y.linePoints;var v="edge"===y.labelAlignTo,m=d.style.padding,x=m?m[1]+m[3]:0,_=d.style.backgroundColor?0:x,b=y.rect.width+_,w=f[1][0]-f[2][0];v?d.x<e?f[2][0]=a+y.edgeDistance+b+y.labelDistance:f[2][0]=a+r-y.edgeDistance-b-y.labelDistance:(d.x<e?f[2][0]=d.x+y.labelDistance:f[2][0]=d.x-y.labelDistance,f[1][0]=f[2][0]+w),f[1][1]=f[2][1]=d.y}}}(r,e,n,l,u,p,h,c);for(var f=0;f<r.length;f++){var g=r[f],y=g.label,v=g.labelLine,m=isNaN(y.x)||isNaN(y.y);if(y){y.setStyle({align:g.textAlign}),m&&(E(y.states,d),y.ignore=!0);var x=y.states.select;x&&(x.x+=y.x,x.y+=y.y)}if(v){var _=g.linePoints;m||!_?(E(v.states,d),v.ignore=!0):(lb(_,g.minTurnAngle),ub(_,g.surfaceNormal,g.maxSurfaceAngle),v.setShape({points:_}),y.__hostTarget.textGuideLineConfig={anchor:new Ji(_[0][0],_[0][1])})}}}function oM(t,e,n){var i=t.get("borderRadius");if(null==i)return n?{cornerRadius:0}:null;Y(i)||(i=[i,i,i,i]);var r=Math.abs(e.r||0-e.r0||0);return{cornerRadius:z(i,(function(t){return gr(t,r)}))}}var aM=function(t){function e(e,n,i){var r=t.call(this)||this;r.z2=2;var o=new ks;return r.setTextContent(o),r.updateData(e,n,i,!0),r}return n(e,t),e.prototype.updateData=function(t,e,n,i){var r=this,o=t.hostModel,a=t.getItemModel(e),s=a.getModel("emphasis"),l=t.getItemLayout(e),u=A(oM(a.getModel("itemStyle"),l,!0),l);if(isNaN(u.startAngle))r.setShape(u);else{if(i){r.setShape(u);var h=o.getShallow("animationType");o.ecModel.ssr?(oh(r,{scaleX:0,scaleY:0},o,{dataIndex:e,isFrom:!0}),r.originX=u.cx,r.originY=u.cy):"scale"===h?(r.shape.r=l.r0,oh(r,{shape:{r:l.r}},o,e)):null!=n?(r.setShape({startAngle:n,endAngle:n}),oh(r,{shape:{startAngle:l.startAngle,endAngle:l.endAngle}},o,e)):(r.shape.endAngle=l.startAngle,rh(r,{shape:{endAngle:l.endAngle}},o,e))}else hh(r),rh(r,{shape:u},o,e);r.useStyle(t.getItemVisual(e,"style")),Vl(r,a);var c=(l.startAngle+l.endAngle)/2,p=o.get("selectedOffset"),d=Math.cos(c)*p,f=Math.sin(c)*p,g=a.getShallow("cursor");g&&r.attr("cursor",g),this._updateLabel(o,t,e),r.ensureState("emphasis").shape=A({r:l.r+(s.get("scale")&&s.get("scaleSize")||0)},oM(s.getModel("itemStyle"),l)),A(r.ensureState("select"),{x:d,y:f,shape:oM(a.getModel(["select","itemStyle"]),l)}),A(r.ensureState("blur"),{shape:oM(a.getModel(["blur","itemStyle"]),l)});var y=r.getTextGuideLine(),v=r.getTextContent();y&&A(y.ensureState("select"),{x:d,y:f}),A(v.ensureState("select"),{x:d,y:f}),Rl(this,s.get("focus"),s.get("blurScope"),s.get("disabled"))}},e.prototype._updateLabel=function(t,e,n){var i=this,r=e.getItemModel(n),o=r.getModel("labelLine"),a=e.getItemVisual(n,"style"),s=a&&a.fill,l=a&&a.opacity;Hh(i,Yh(r),{labelFetcher:e.hostModel,labelDataIndex:n,inheritColor:s,defaultOpacity:l,defaultText:t.getFormattedLabel(n,"normal")||e.getName(n)});var u=i.getTextContent();i.setTextConfig({position:null,rotation:null}),u.attr({z2:10});var h=t.get(["label","position"]);if("outside"!==h&&"outer"!==h)i.removeTextGuideLine();else{var c=this.getTextGuideLine();c||(c=new Ru,this.setTextGuideLine(c)),pb(this,db(r),{stroke:s,opacity:ot(o.get(["lineStyle","opacity"]),l,1)})}},e}(Cu),sM=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.ignoreLabelLineUpdate=!0,e}return n(e,t),e.prototype.render=function(t,e,n,i){var r,o=t.getData(),a=this._data,s=this.group;if(!a&&o.count()>0){for(var l=o.getItemLayout(0),u=1;isNaN(l&&l.startAngle)&&u<o.count();++u)l=o.getItemLayout(u);l&&(r=l.startAngle)}if(this._emptyCircleSector&&s.remove(this._emptyCircleSector),0===o.count()&&t.get("showEmptyCircle")){var h=new Cu({shape:$S(t,n)});h.useStyle(t.getModel("emptyCircleStyle").getItemStyle()),this._emptyCircleSector=h,s.add(h)}o.diff(a).add((function(t){var e=new aM(o,t,r);o.setItemGraphicEl(t,e),s.add(e)})).update((function(t,e){var n=a.getItemGraphicEl(e);n.updateData(o,t,r),n.off("click"),s.add(n),o.setItemGraphicEl(t,n)})).remove((function(e){uh(a.getItemGraphicEl(e),t,e)})).execute(),rM(t),"expansion"!==t.get("animationTypeUpdate")&&(this._data=o)},e.prototype.dispose=function(){},e.prototype.containPoint=function(t,e){var n=e.getData().getItemLayout(0);if(n){var i=t[0]-n.cx,r=t[1]-n.cy,o=Math.sqrt(i*i+r*r);return o<=n.r&&o>=n.r0}},e.type="pie",e}(xg);function lM(t,e,n){e=Y(e)&&{coordDimensions:e}||A({encodeDefine:t.getEncode()},e);var i=t.getSource(),r=qm(i,e).dimensions,o=new jm(r,t);return o.initData(i,n),o}var uM=function(){function t(t,e){this._getDataWithEncodedVisual=t,this._getRawData=e}return t.prototype.getAllNames=function(){var t=this._getRawData();return t.mapArray(t.getName)},t.prototype.containName=function(t){return this._getRawData().indexOfName(t)>=0},t.prototype.indexOfName=function(t){return this._getDataWithEncodedVisual().indexOfName(t)},t.prototype.getItemVisual=function(t,e){return this._getDataWithEncodedVisual().getItemVisual(t,e)},t}(),hM=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.init=function(e){t.prototype.init.apply(this,arguments),this.legendVisualProvider=new uM(W(this.getData,this),W(this.getRawData,this)),this._defaultLabelLine(e)},e.prototype.mergeOption=function(){t.prototype.mergeOption.apply(this,arguments)},e.prototype.getInitialData=function(){return lM(this,{coordDimensions:["value"],encodeDefaulter:H(Yp,this)})},e.prototype.getDataParams=function(e){var n=this.getData(),i=t.prototype.getDataParams.call(this,e),r=[];return n.each(n.mapDimension("value"),(function(t){r.push(t)})),i.percent=Wr(r,e,n.hostModel.get("percentPrecision")),i.$vars.push("percent"),i},e.prototype._defaultLabelLine=function(t){co(t,"labelLine",["show"]);var e=t.labelLine,n=t.emphasis.labelLine;e.show=e.show&&t.label.show,n.show=n.show&&t.emphasis.label.show},e.type="series.pie",e.defaultOption={z:2,legendHoverLink:!0,colorBy:"data",center:["50%","50%"],radius:[0,"75%"],clockwise:!0,startAngle:90,minAngle:0,minShowLabelAngle:0,selectedOffset:10,percentPrecision:2,stillShowZeroSum:!0,left:0,top:0,right:0,bottom:0,width:null,height:null,label:{rotate:0,show:!0,overflow:"truncate",position:"outer",alignTo:"none",edgeDistance:"25%",bleedMargin:10,distanceToLabelLine:5},labelLine:{show:!0,length:15,length2:15,smooth:!1,minTurnAngle:90,maxSurfaceAngle:90,lineStyle:{width:1,type:"solid"}},itemStyle:{borderWidth:1,borderJoin:"round"},showEmptyCircle:!0,emptyCircleStyle:{color:"lightgray",opacity:1},labelLayout:{hideOverlap:!0},emphasis:{scale:!0,scaleSize:5},avoidLabelOverlap:!0,animationType:"expansion",animationDuration:1e3,animationTypeUpdate:"transition",animationEasingUpdate:"cubicInOut",animationDurationUpdate:500,animationEasing:"cubicInOut"},e}(sg);var cM=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.hasSymbolVisual=!0,n}return n(e,t),e.prototype.getInitialData=function(t,e){return ix(null,this,{useEncodeDefaulter:!0})},e.prototype.getProgressive=function(){var t=this.option.progressive;return null==t?this.option.large?5e3:this.get("progressive"):t},e.prototype.getProgressiveThreshold=function(){var t=this.option.progressiveThreshold;return null==t?this.option.large?1e4:this.get("progressiveThreshold"):t},e.prototype.brushSelector=function(t,e,n){return n.point(e.getItemLayout(t))},e.prototype.getZLevelKey=function(){return this.getData().count()>this.getProgressiveThreshold()?this.id:""},e.type="series.scatter",e.dependencies=["grid","polar","geo","singleAxis","calendar"],e.defaultOption={coordinateSystem:"cartesian2d",z:2,legendHoverLink:!0,symbolSize:10,large:!1,largeThreshold:2e3,itemStyle:{opacity:.8},emphasis:{scale:!0},clip:!0,select:{itemStyle:{borderColor:"#212121"}},universalTransition:{divideShape:"clone"}},e}(sg),pM=function(){},dM=function(t){function e(e){var n=t.call(this,e)||this;return n._off=0,n.hoverDataIdx=-1,n}return n(e,t),e.prototype.getDefaultShape=function(){return new pM},e.prototype.reset=function(){this.notClear=!1,this._off=0},e.prototype.buildPath=function(t,e){var n,i=e.points,r=e.size,o=this.symbolProxy,a=o.shape,s=t.getContext?t.getContext():t,l=s&&r[0]<4,u=this.softClipShape;if(l)this._ctx=s;else{for(this._ctx=null,n=this._off;n<i.length;){var h=i[n++],c=i[n++];isNaN(h)||isNaN(c)||(u&&!u.contain(h,c)||(a.x=h-r[0]/2,a.y=c-r[1]/2,a.width=r[0],a.height=r[1],o.buildPath(t,a,!0)))}this.incremental&&(this._off=n,this.notClear=!0)}},e.prototype.afterBrush=function(){var t,e=this.shape,n=e.points,i=e.size,r=this._ctx,o=this.softClipShape;if(r){for(t=this._off;t<n.length;){var a=n[t++],s=n[t++];isNaN(a)||isNaN(s)||(o&&!o.contain(a,s)||r.fillRect(a-i[0]/2,s-i[1]/2,i[0],i[1]))}this.incremental&&(this._off=t,this.notClear=!0)}},e.prototype.findDataIndex=function(t,e){for(var n=this.shape,i=n.points,r=n.size,o=Math.max(r[0],4),a=Math.max(r[1],4),s=i.length/2-1;s>=0;s--){var l=2*s,u=i[l]-o/2,h=i[l+1]-a/2;if(t>=u&&e>=h&&t<=u+o&&e<=h+a)return s}return-1},e.prototype.contain=function(t,e){var n=this.transformCoordToLocal(t,e),i=this.getBoundingRect();return t=n[0],e=n[1],i.contain(t,e)?(this.hoverDataIdx=this.findDataIndex(t,e))>=0:(this.hoverDataIdx=-1,!1)},e.prototype.getBoundingRect=function(){var t=this._rect;if(!t){for(var e=this.shape,n=e.points,i=e.size,r=i[0],o=i[1],a=1/0,s=1/0,l=-1/0,u=-1/0,h=0;h<n.length;){var c=n[h++],p=n[h++];a=Math.min(c,a),l=Math.max(c,l),s=Math.min(p,s),u=Math.max(p,u)}t=this._rect=new sr(a-r/2,s-o/2,l-a+r,u-s+o)}return t},e}(gs),fM=function(){function t(){this.group=new Cr}return t.prototype.updateData=function(t,e){this._clear();var n=this._create();n.setShape({points:t.getLayout("points")}),this._setCommon(n,t,e)},t.prototype.updateLayout=function(t){var e=t.getLayout("points");this.group.eachChild((function(t){if(null!=t.startIndex){var n=2*(t.endIndex-t.startIndex),i=4*t.startIndex*2;e=new Float32Array(e.buffer,i,n)}t.setShape("points",e),t.reset()}))},t.prototype.incrementalPrepareUpdate=function(t){this._clear()},t.prototype.incrementalUpdate=function(t,e,n){var i=this._newAdded[0],r=e.getLayout("points"),o=i&&i.shape.points;if(o&&o.length<2e4){var a=o.length,s=new Float32Array(a+r.length);s.set(o),s.set(r,a),i.endIndex=t.end,i.setShape({points:s})}else{this._newAdded=[];var l=this._create();l.startIndex=t.start,l.endIndex=t.end,l.incremental=!0,l.setShape({points:r}),this._setCommon(l,e,n)}},t.prototype.eachRendered=function(t){this._newAdded[0]&&t(this._newAdded[0])},t.prototype._create=function(){var t=new dM({cursor:"default"});return this.group.add(t),this._newAdded.push(t),t},t.prototype._setCommon=function(t,e,n){var i=e.hostModel;n=n||{};var r=e.getVisual("symbolSize");t.setShape("size",r instanceof Array?r:[r,r]),t.softClipShape=n.clipShape||null,t.symbolProxy=Ly(e.getVisual("symbol"),0,0,0,0),t.setColor=t.symbolProxy.setColor;var o=t.shape.size[0]<4;t.useStyle(i.getModel("itemStyle").getItemStyle(o?["color","shadowBlur","shadowColor"]:["color"]));var a=e.getVisual("style"),s=a&&a.fill;s&&t.setColor(s);var l=Hs(t);l.seriesIndex=i.seriesIndex,t.on("mousemove",(function(e){l.dataIndex=null;var n=t.hoverDataIdx;n>=0&&(l.dataIndex=n+(t.startIndex||0))}))},t.prototype.remove=function(){this._clear()},t.prototype._clear=function(){this._newAdded=[],this.group.removeAll()},t}(),gM=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){var i=t.getData();this._updateSymbolDraw(i,t).updateData(i,{clipShape:this._getClipShape(t)}),this._finished=!0},e.prototype.incrementalPrepareRender=function(t,e,n){var i=t.getData();this._updateSymbolDraw(i,t).incrementalPrepareUpdate(i),this._finished=!1},e.prototype.incrementalRender=function(t,e,n){this._symbolDraw.incrementalUpdate(t,e.getData(),{clipShape:this._getClipShape(e)}),this._finished=t.end===e.getData().count()},e.prototype.updateTransform=function(t,e,n){var i=t.getData();if(this.group.dirty(),!this._finished||i.count()>1e4)return{update:!0};var r=_S("").reset(t,e,n);r.progress&&r.progress({start:0,end:i.count(),count:i.count()},i),this._symbolDraw.updateLayout(i)},e.prototype.eachRendered=function(t){this._symbolDraw&&this._symbolDraw.eachRendered(t)},e.prototype._getClipShape=function(t){var e=t.coordinateSystem,n=e&&e.getArea&&e.getArea();return t.get("clip",!0)?n:null},e.prototype._updateSymbolDraw=function(t,e){var n=this._symbolDraw,i=e.pipelineContext.large;return n&&i===this._isLargeDraw||(n&&n.remove(),n=this._symbolDraw=i?new fM:new jw,this._isLargeDraw=i,this.group.removeAll()),this.group.add(n.group),n},e.prototype.remove=function(t,e){this._symbolDraw&&this._symbolDraw.remove(!0),this._symbolDraw=null},e.prototype.dispose=function(){},e.type="scatter",e}(xg),yM=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.type="grid",e.dependencies=["xAxis","yAxis"],e.layoutMode="box",e.defaultOption={show:!1,z:0,left:"10%",top:60,right:"10%",bottom:70,containLabel:!1,backgroundColor:"rgba(0,0,0,0)",borderWidth:1,borderColor:"#ccc"},e}(Tp),vM=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.getCoordSysModel=function(){return this.getReferringComponents("grid",Co).models[0]},e.type="cartesian2dAxis",e}(Tp);R(vM,c_);var mM={show:!0,z:0,inverse:!1,name:"",nameLocation:"end",nameRotate:null,nameTruncate:{maxWidth:null,ellipsis:"...",placeholder:"."},nameTextStyle:{},nameGap:15,silent:!1,triggerEvent:!1,tooltip:{show:!1},axisPointer:{},axisLine:{show:!0,onZero:!0,onZeroAxisIndex:null,lineStyle:{color:"#6E7079",width:1,type:"solid"},symbol:["none","none"],symbolSize:[10,15]},axisTick:{show:!0,inside:!1,length:5,lineStyle:{width:1}},axisLabel:{show:!0,inside:!1,rotate:0,showMinLabel:null,showMaxLabel:null,margin:8,fontSize:12},splitLine:{show:!0,lineStyle:{color:["#E0E6F1"],width:1,type:"solid"}},splitArea:{show:!1,areaStyle:{color:["rgba(250,250,250,0.2)","rgba(210,219,238,0.2)"]}}},xM=C({boundaryGap:!0,deduplication:null,splitLine:{show:!1},axisTick:{alignWithLabel:!1,interval:"auto"},axisLabel:{interval:"auto"}},mM),_M=C({boundaryGap:[0,0],axisLine:{show:"auto"},axisTick:{show:"auto"},splitNumber:5,minorTick:{show:!1,splitNumber:5,length:3,lineStyle:{}},minorSplitLine:{show:!1,lineStyle:{color:"#F4F7FD",width:1}}},mM),bM={category:xM,value:_M,time:C({splitNumber:6,axisLabel:{showMinLabel:!1,showMaxLabel:!1,rich:{primary:{fontWeight:"bold"}}},splitLine:{show:!1}},_M),log:k({logBase:10},_M)},wM={value:1,category:1,time:1,log:1};function SM(t,e,i,r){E(wM,(function(o,a){var s=C(C({},bM[a],!0),r,!0),l=function(t){function i(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e+"Axis."+a,n}return n(i,t),i.prototype.mergeDefaultAndTheme=function(t,e){var n=bp(this),i=n?Sp(t):{};C(t,e.getTheme().get(a+"Axis")),C(t,this.getDefaultOption()),t.type=MM(t),n&&wp(t,i,n)},i.prototype.optionUpdated=function(){"category"===this.option.type&&(this.__ordinalMeta=ax.createByAxisModel(this))},i.prototype.getCategories=function(t){var e=this.option;if("category"===e.type)return t?e.data:this.__ordinalMeta.categories},i.prototype.getOrdinalMeta=function(){return this.__ordinalMeta},i.type=e+"Axis."+a,i.defaultOption=s,i}(i);t.registerComponentModel(l)})),t.registerSubTypeDefaulter(e+"Axis",MM)}function MM(t){return t.type||(t.data?"category":"value")}var IM=function(){function t(t){this.type="cartesian",this._dimList=[],this._axes={},this.name=t||""}return t.prototype.getAxis=function(t){return this._axes[t]},t.prototype.getAxes=function(){return z(this._dimList,(function(t){return this._axes[t]}),this)},t.prototype.getAxesByScale=function(t){return t=t.toLowerCase(),B(this.getAxes(),(function(e){return e.scale.type===t}))},t.prototype.addAxis=function(t){var e=t.dim;this._axes[e]=t,this._dimList.push(e)},t}(),TM=["x","y"];function CM(t){return"interval"===t.type||"time"===t.type}var DM=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="cartesian2d",e.dimensions=TM,e}return n(e,t),e.prototype.calcAffineTransform=function(){this._transform=this._invTransform=null;var t=this.getAxis("x").scale,e=this.getAxis("y").scale;if(CM(t)&&CM(e)){var n=t.getExtent(),i=e.getExtent(),r=this.dataToPoint([n[0],i[0]]),o=this.dataToPoint([n[1],i[1]]),a=n[1]-n[0],s=i[1]-i[0];if(a&&s){var l=(o[0]-r[0])/a,u=(o[1]-r[1])/s,h=r[0]-n[0]*l,c=r[1]-i[0]*u,p=this._transform=[l,0,0,u,h,c];this._invTransform=Bi([],p)}}},e.prototype.getBaseAxis=function(){return this.getAxesByScale("ordinal")[0]||this.getAxesByScale("time")[0]||this.getAxis("x")},e.prototype.containPoint=function(t){var e=this.getAxis("x"),n=this.getAxis("y");return e.contain(e.toLocalCoord(t[0]))&&n.contain(n.toLocalCoord(t[1]))},e.prototype.containData=function(t){return this.getAxis("x").containData(t[0])&&this.getAxis("y").containData(t[1])},e.prototype.dataToPoint=function(t,e,n){n=n||[];var i=t[0],r=t[1];if(this._transform&&null!=i&&isFinite(i)&&null!=r&&isFinite(r))return Ft(n,t,this._transform);var o=this.getAxis("x"),a=this.getAxis("y");return n[0]=o.toGlobalCoord(o.dataToCoord(i,e)),n[1]=a.toGlobalCoord(a.dataToCoord(r,e)),n},e.prototype.clampData=function(t,e){var n=this.getAxis("x").scale,i=this.getAxis("y").scale,r=n.getExtent(),o=i.getExtent(),a=n.parse(t[0]),s=i.parse(t[1]);return(e=e||[])[0]=Math.min(Math.max(Math.min(r[0],r[1]),a),Math.max(r[0],r[1])),e[1]=Math.min(Math.max(Math.min(o[0],o[1]),s),Math.max(o[0],o[1])),e},e.prototype.pointToData=function(t,e){var n=[];if(this._invTransform)return Ft(n,t,this._invTransform);var i=this.getAxis("x"),r=this.getAxis("y");return n[0]=i.coordToData(i.toLocalCoord(t[0]),e),n[1]=r.coordToData(r.toLocalCoord(t[1]),e),n},e.prototype.getOtherAxis=function(t){return this.getAxis("x"===t.dim?"y":"x")},e.prototype.getArea=function(){var t=this.getAxis("x").getGlobalExtent(),e=this.getAxis("y").getGlobalExtent(),n=Math.min(t[0],t[1]),i=Math.min(e[0],e[1]),r=Math.max(t[0],t[1])-n,o=Math.max(e[0],e[1])-i;return new sr(n,i,r,o)},e}(IM),AM=function(t){function e(e,n,i,r,o){var a=t.call(this,e,n,i)||this;return a.index=0,a.type=r||"value",a.position=o||"bottom",a}return n(e,t),e.prototype.isHorizontal=function(){var t=this.position;return"top"===t||"bottom"===t},e.prototype.getGlobalExtent=function(t){var e=this.getExtent();return e[0]=this.toGlobalCoord(e[0]),e[1]=this.toGlobalCoord(e[1]),t&&e[0]>e[1]&&e.reverse(),e},e.prototype.pointToData=function(t,e){return this.coordToData(this.toLocalCoord(t["x"===this.dim?0:1]),e)},e.prototype.setCategorySortInfo=function(t){if("category"!==this.type)return!1;this.model.option.categorySortInfo=t,this.scale.setSortInfo(t)},e}(W_);function kM(t,e,n){n=n||{};var i=t.coordinateSystem,r=e.axis,o={},a=r.getAxesOnZeroOf()[0],s=r.position,l=a?"onZero":s,u=r.dim,h=i.getRect(),c=[h.x,h.x+h.width,h.y,h.y+h.height],p={left:0,right:1,top:0,bottom:1,onZero:2},d=e.get("offset")||0,f="x"===u?[c[2]-d,c[3]+d]:[c[0]-d,c[1]+d];if(a){var g=a.toGlobalCoord(a.dataToCoord(0));f[p.onZero]=Math.max(Math.min(g,f[1]),f[0])}o.position=["y"===u?f[p[l]]:c[0],"x"===u?f[p[l]]:c[3]],o.rotation=Math.PI/2*("x"===u?0:1);o.labelDirection=o.tickDirection=o.nameDirection={top:-1,bottom:1,left:-1,right:1}[s],o.labelOffset=a?f[p[s]]-f[p.onZero]:0,e.get(["axisTick","inside"])&&(o.tickDirection=-o.tickDirection),it(n.labelInside,e.get(["axisLabel","inside"]))&&(o.labelDirection=-o.labelDirection);var y=e.get(["axisLabel","rotate"]);return o.labelRotate="top"===l?-y:y,o.z2=1,o}function LM(t){return"cartesian2d"===t.get("coordinateSystem")}function PM(t){var e={xAxisModel:null,yAxisModel:null};return E(e,(function(n,i){var r=i.replace(/Model$/,""),o=t.getReferringComponents(r,Co).models[0];e[i]=o})),e}var OM=Math.log;function RM(t,e,n){var i=mx.prototype,r=i.getTicks.call(n),o=i.getTicks.call(n,!0),a=r.length-1,s=i.getInterval.call(n),l=n_(t,e),u=l.extent,h=l.fixMin,c=l.fixMax;if("log"===t.type){var p=OM(t.base);u=[OM(u[0])/p,OM(u[1])/p]}t.setExtent(u[0],u[1]),t.calcNiceExtent({splitNumber:a,fixMin:h,fixMax:c});var d=i.getExtent.call(t);h&&(u[0]=d[0]),c&&(u[1]=d[1]);var f=i.getInterval.call(t),g=u[0],y=u[1];if(h&&c)f=(y-g)/a;else if(h)for(y=u[0]+f*a;y<u[1]&&isFinite(y)&&isFinite(u[1]);)f=hx(f),y=u[0]+f*a;else if(c)for(g=u[1]-f*a;g>u[0]&&isFinite(g)&&isFinite(u[0]);)f=hx(f),g=u[1]-f*a;else{t.getTicks().length-1>a&&(f=hx(f));var v=f*a;(g=zr((y=Math.ceil(u[1]/f)*f)-v))<0&&u[0]>=0?(g=0,y=zr(v)):y>0&&u[1]<=0&&(y=0,g=-zr(v))}var m=(r[0].value-o[0].value)/s,x=(r[a].value-o[a].value)/s;i.setExtent.call(t,g+f*m,y+f*x),i.setInterval.call(t,f),(m||x)&&i.setNiceExtent.call(t,g+f,y-f)}var NM=function(){function t(t,e,n){this.type="grid",this._coordsMap={},this._coordsList=[],this._axesMap={},this._axesList=[],this.axisPointerEnabled=!0,this.dimensions=TM,this._initCartesian(t,e,n),this.model=t}return t.prototype.getRect=function(){return this._rect},t.prototype.update=function(t,e){var n=this._axesMap;function i(t){var e,n=G(t),i=n.length;if(i){for(var r=[],o=i-1;o>=0;o--){var a=t[+n[o]],s=a.model,l=a.scale;lx(l)&&s.get("alignTicks")&&null==s.get("interval")?r.push(a):(i_(l,s),lx(l)&&(e=a))}r.length&&(e||i_((e=r.pop()).scale,e.model),E(r,(function(t){RM(t.scale,t.model,e.scale)})))}}this._updateScale(t,this.model),i(n.x),i(n.y);var r={};E(n.x,(function(t){zM(n,"y",t,r)})),E(n.y,(function(t){zM(n,"x",t,r)})),this.resize(this.model,e)},t.prototype.resize=function(t,e,n){var i=t.getBoxLayoutParams(),r=!n&&t.get("containLabel"),o=xp(i,{width:e.getWidth(),height:e.getHeight()});this._rect=o;var a=this._axesList;function s(){E(a,(function(t){var e=t.isHorizontal(),n=e?[0,o.width]:[0,o.height],i=t.inverse?1:0;t.setExtent(n[i],n[1-i]),function(t,e){var n=t.getExtent(),i=n[0]+n[1];t.toGlobalCoord="x"===t.dim?function(t){return t+e}:function(t){return i-t+e},t.toLocalCoord="x"===t.dim?function(t){return t-e}:function(t){return i-t+e}}(t,e?o.x:o.y)}))}s(),r&&(E(a,(function(t){if(!t.model.get(["axisLabel","inside"])){var e=function(t){var e=t.model,n=t.scale;if(e.get(["axisLabel","show"])&&!n.isBlank()){var i,r,o=n.getExtent();r=n instanceof yx?n.count():(i=n.getTicks()).length;var a,s=t.getLabelModel(),l=o_(t),u=1;r>40&&(u=Math.ceil(r/40));for(var h=0;h<r;h+=u){var c=l(i?i[h]:{value:o[0]+h},h),p=s_(s.getTextRect(c),s.get("rotate")||0);a?a.union(p):a=p}return a}}(t);if(e){var n=t.isHorizontal()?"height":"width",i=t.model.get(["axisLabel","margin"]);o[n]-=e[n]+i,"top"===t.position?o.y+=e.height+i:"left"===t.position&&(o.x+=e.width+i)}}})),s()),E(this._coordsList,(function(t){t.calcAffineTransform()}))},t.prototype.getAxis=function(t,e){var n=this._axesMap[t];if(null!=n)return n[e||0]},t.prototype.getAxes=function(){return this._axesList.slice()},t.prototype.getCartesian=function(t,e){if(null!=t&&null!=e){var n="x"+t+"y"+e;return this._coordsMap[n]}q(t)&&(e=t.yAxisIndex,t=t.xAxisIndex);for(var i=0,r=this._coordsList;i<r.length;i++)if(r[i].getAxis("x").index===t||r[i].getAxis("y").index===e)return r[i]},t.prototype.getCartesians=function(){return this._coordsList.slice()},t.prototype.convertToPixel=function(t,e,n){var i=this._findConvertTarget(e);return i.cartesian?i.cartesian.dataToPoint(n):i.axis?i.axis.toGlobalCoord(i.axis.dataToCoord(n)):null},t.prototype.convertFromPixel=function(t,e,n){var i=this._findConvertTarget(e);return i.cartesian?i.cartesian.pointToData(n):i.axis?i.axis.coordToData(i.axis.toLocalCoord(n)):null},t.prototype._findConvertTarget=function(t){var e,n,i=t.seriesModel,r=t.xAxisModel||i&&i.getReferringComponents("xAxis",Co).models[0],o=t.yAxisModel||i&&i.getReferringComponents("yAxis",Co).models[0],a=t.gridModel,s=this._coordsList;if(i)P(s,e=i.coordinateSystem)<0&&(e=null);else if(r&&o)e=this.getCartesian(r.componentIndex,o.componentIndex);else if(r)n=this.getAxis("x",r.componentIndex);else if(o)n=this.getAxis("y",o.componentIndex);else if(a){a.coordinateSystem===this&&(e=this._coordsList[0])}return{cartesian:e,axis:n}},t.prototype.containPoint=function(t){var e=this._coordsList[0];if(e)return e.containPoint(t)},t.prototype._initCartesian=function(t,e,n){var i=this,r=this,o={left:!1,right:!1,top:!1,bottom:!1},a={x:{},y:{}},s={x:0,y:0};if(e.eachComponent("xAxis",l("x"),this),e.eachComponent("yAxis",l("y"),this),!s.x||!s.y)return this._axesMap={},void(this._axesList=[]);function l(e){return function(n,i){if(EM(n,t)){var l=n.get("position");"x"===e?"top"!==l&&"bottom"!==l&&(l=o.bottom?"top":"bottom"):"left"!==l&&"right"!==l&&(l=o.left?"right":"left"),o[l]=!0;var u=new AM(e,r_(n),[0,0],n.get("type"),l),h="category"===u.type;u.onBand=h&&n.get("boundaryGap"),u.inverse=n.get("inverse"),n.axis=u,u.model=n,u.grid=r,u.index=i,r._axesList.push(u),a[e][i]=u,s[e]++}}}this._axesMap=a,E(a.x,(function(e,n){E(a.y,(function(r,o){var a="x"+n+"y"+o,s=new DM(a);s.master=i,s.model=t,i._coordsMap[a]=s,i._coordsList.push(s),s.addAxis(e),s.addAxis(r)}))}))},t.prototype._updateScale=function(t,e){function n(t,e){E(h_(t,e.dim),(function(n){e.scale.unionExtentFromData(t,n)}))}E(this._axesList,(function(t){if(t.scale.setExtent(1/0,-1/0),"category"===t.type){var e=t.model.get("categorySortInfo");t.scale.setSortInfo(e)}})),t.eachSeries((function(t){if(LM(t)){var i=PM(t),r=i.xAxisModel,o=i.yAxisModel;if(!EM(r,e)||!EM(o,e))return;var a=this.getCartesian(r.componentIndex,o.componentIndex),s=t.getData(),l=a.getAxis("x"),u=a.getAxis("y");n(s,l),n(s,u)}}),this)},t.prototype.getTooltipAxes=function(t){var e=[],n=[];return E(this.getCartesians(),(function(i){var r=null!=t&&"auto"!==t?i.getAxis(t):i.getBaseAxis(),o=i.getOtherAxis(r);P(e,r)<0&&e.push(r),P(n,o)<0&&n.push(o)})),{baseAxes:e,otherAxes:n}},t.create=function(e,n){var i=[];return e.eachComponent("grid",(function(r,o){var a=new t(r,e,n);a.name="grid_"+o,a.resize(r,n,!0),r.coordinateSystem=a,i.push(a)})),e.eachSeries((function(t){if(LM(t)){var e=PM(t),n=e.xAxisModel,i=e.yAxisModel,r=n.getCoordSysModel();0;var o=r.coordinateSystem;t.coordinateSystem=o.getCartesian(n.componentIndex,i.componentIndex)}})),i},t.dimensions=TM,t}();function EM(t,e){return t.getCoordSysModel()===e}function zM(t,e,n,i){n.getAxesOnZeroOf=function(){return r?[r]:[]};var r,o=t[e],a=n.model,s=a.get(["axisLine","onZero"]),l=a.get(["axisLine","onZeroAxisIndex"]);if(s){if(null!=l)VM(o[l])&&(r=o[l]);else for(var u in o)if(o.hasOwnProperty(u)&&VM(o[u])&&!i[h(o[u])]){r=o[u];break}r&&(i[h(r)]=!0)}function h(t){return t.dim+"_"+t.index}}function VM(t){return t&&"category"!==t.type&&"time"!==t.type&&function(t){var e=t.scale.getExtent(),n=e[0],i=e[1];return!(n>0&&i>0||n<0&&i<0)}(t)}var BM=Math.PI,FM=function(){function t(t,e){this.group=new Cr,this.opt=e,this.axisModel=t,k(e,{labelOffset:0,nameDirection:1,tickDirection:1,labelDirection:1,silent:!0,handleAutoShown:function(){return!0}});var n=new Cr({x:e.position[0],y:e.position[1],rotation:e.rotation});n.updateTransform(),this._transformGroup=n}return t.prototype.hasBuilder=function(t){return!!GM[t]},t.prototype.add=function(t){GM[t](this.opt,this.axisModel,this.group,this._transformGroup)},t.prototype.getGroup=function(){return this.group},t.innerTextLayout=function(t,e,n){var i,r,o=Ur(e-t);return Xr(o)?(r=n>0?"top":"bottom",i="center"):Xr(o-BM)?(r=n>0?"bottom":"top",i="center"):(r="middle",i=o>0&&o<BM?n>0?"right":"left":n>0?"left":"right"),{rotation:o,textAlign:i,textVerticalAlign:r}},t.makeAxisEventDataBase=function(t){var e={componentType:t.mainType,componentIndex:t.componentIndex};return e[t.mainType+"Index"]=t.componentIndex,e},t.isLabelSilent=function(t){var e=t.get("tooltip");return t.get("silent")||!(t.get("triggerEvent")||e&&e.show)},t}(),GM={axisLine:function(t,e,n,i){var r=e.get(["axisLine","show"]);if("auto"===r&&t.handleAutoShown&&(r=t.handleAutoShown("axisLine")),r){var o=e.axis.getExtent(),a=i.transform,s=[o[0],0],l=[o[1],0];a&&(Ft(s,s,a),Ft(l,l,a));var u=A({lineCap:"round"},e.getModel(["axisLine","lineStyle"]).getLineStyle()),h=new zu({subPixelOptimize:!0,shape:{x1:s[0],y1:s[1],x2:l[0],y2:l[1]},style:u,strokeContainThreshold:t.strokeContainThreshold||5,silent:!0,z2:1});h.anid="line",n.add(h);var c=e.get(["axisLine","symbol"]);if(null!=c){var p=e.get(["axisLine","symbolSize"]);X(c)&&(c=[c,c]),(X(p)||j(p))&&(p=[p,p]);var d=Oy(e.get(["axisLine","symbolOffset"])||0,p),f=p[0],g=p[1];E([{rotate:t.rotation+Math.PI/2,offset:d[0],r:0},{rotate:t.rotation-Math.PI/2,offset:d[1],r:Math.sqrt((s[0]-l[0])*(s[0]-l[0])+(s[1]-l[1])*(s[1]-l[1]))}],(function(e,i){if("none"!==c[i]&&null!=c[i]){var r=Ly(c[i],-f/2,-g/2,f,g,u.stroke,!0),o=e.r+e.offset;r.attr({rotation:e.rotate,x:s[0]+o*Math.cos(t.rotation),y:s[1]-o*Math.sin(t.rotation),silent:!0,z2:11}),n.add(r)}}))}}},axisTickLabel:function(t,e,n,i){var r=function(t,e,n,i){var r=n.axis,o=n.getModel("axisTick"),a=o.get("show");"auto"===a&&i.handleAutoShown&&(a=i.handleAutoShown("axisTick"));if(!a||r.scale.isBlank())return;for(var s=o.getModel("lineStyle"),l=i.tickDirection*o.get("length"),u=UM(r.getTicksCoords(),e.transform,l,k(s.getLineStyle(),{stroke:n.get(["axisLine","lineStyle","color"])}),"ticks"),h=0;h<u.length;h++)t.add(u[h]);return u}(n,i,e,t),o=function(t,e,n,i){var r=n.axis;if(!it(i.axisLabelShow,n.get(["axisLabel","show"]))||r.scale.isBlank())return;var o=n.getModel("axisLabel"),a=o.get("margin"),s=r.getViewLabels(),l=(it(i.labelRotate,o.get("rotate"))||0)*BM/180,u=FM.innerTextLayout(i.rotation,l,i.labelDirection),h=n.getCategories&&n.getCategories(!0),c=[],p=FM.isLabelSilent(n),d=n.get("triggerEvent");return E(s,(function(s,l){var f="ordinal"===r.scale.type?r.scale.getRawOrdinalNumber(s.tickValue):s.tickValue,g=s.formattedLabel,y=s.rawLabel,v=o;if(h&&h[f]){var m=h[f];q(m)&&m.textStyle&&(v=new dc(m.textStyle,o,n.ecModel))}var x=v.getTextColor()||n.get(["axisLine","lineStyle","color"]),_=r.dataToCoord(f),b=new ks({x:_,y:i.labelOffset+i.labelDirection*a,rotation:u.rotation,silent:p,z2:10+(s.level||0),style:Uh(v,{text:g,align:v.getShallow("align",!0)||u.textAlign,verticalAlign:v.getShallow("verticalAlign",!0)||v.getShallow("baseline",!0)||u.textVerticalAlign,fill:U(x)?x("category"===r.type?y:"value"===r.type?f+"":f,l):x})});if(b.anid="label_"+f,d){var w=FM.makeAxisEventDataBase(n);w.targetType="axisLabel",w.value=y,w.tickIndex=l,"category"===r.type&&(w.dataIndex=f),Hs(b).eventData=w}e.add(b),b.updateTransform(),c.push(b),t.add(b),b.decomposeTransform()})),c}(n,i,e,t);(function(t,e,n){if(u_(t.axis))return;var i=t.get(["axisLabel","showMinLabel"]),r=t.get(["axisLabel","showMaxLabel"]);n=n||[];var o=(e=e||[])[0],a=e[1],s=e[e.length-1],l=e[e.length-2],u=n[0],h=n[1],c=n[n.length-1],p=n[n.length-2];!1===i?(WM(o),WM(u)):HM(o,a)&&(i?(WM(a),WM(h)):(WM(o),WM(u)));!1===r?(WM(s),WM(c)):HM(l,s)&&(r?(WM(l),WM(p)):(WM(s),WM(c)))}(e,o,r),function(t,e,n,i){var r=n.axis,o=n.getModel("minorTick");if(!o.get("show")||r.scale.isBlank())return;var a=r.getMinorTicksCoords();if(!a.length)return;for(var s=o.getModel("lineStyle"),l=i*o.get("length"),u=k(s.getLineStyle(),k(n.getModel("axisTick").getLineStyle(),{stroke:n.get(["axisLine","lineStyle","color"])})),h=0;h<a.length;h++)for(var c=UM(a[h],e.transform,l,u,"minorticks_"+h),p=0;p<c.length;p++)t.add(c[p])}(n,i,e,t.tickDirection),e.get(["axisLabel","hideOverlap"]))&&vb(fb(z(o,(function(t){return{label:t,priority:t.z2,defaultAttr:{ignore:t.ignore}}}))))},axisName:function(t,e,n,i){var r=it(t.axisName,e.get("name"));if(r){var o,a,s=e.get("nameLocation"),l=t.nameDirection,u=e.getModel("nameTextStyle"),h=e.get("nameGap")||0,c=e.axis.getExtent(),p=c[0]>c[1]?-1:1,d=["start"===s?c[0]-p*h:"end"===s?c[1]+p*h:(c[0]+c[1])/2,YM(s)?t.labelOffset+l*h:0],f=e.get("nameRotate");null!=f&&(f=f*BM/180),YM(s)?o=FM.innerTextLayout(t.rotation,null!=f?f:t.rotation,l):(o=function(t,e,n,i){var r,o,a=Ur(n-t),s=i[0]>i[1],l="start"===e&&!s||"start"!==e&&s;Xr(a-BM/2)?(o=l?"bottom":"top",r="center"):Xr(a-1.5*BM)?(o=l?"top":"bottom",r="center"):(o="middle",r=a<1.5*BM&&a>BM/2?l?"left":"right":l?"right":"left");return{rotation:a,textAlign:r,textVerticalAlign:o}}(t.rotation,s,f||0,c),null!=(a=t.axisNameAvailableWidth)&&(a=Math.abs(a/Math.sin(o.rotation)),!isFinite(a)&&(a=null)));var g=u.getFont(),y=e.get("nameTruncate",!0)||{},v=y.ellipsis,m=it(t.nameTruncateMaxWidth,y.maxWidth,a),x=new ks({x:d[0],y:d[1],rotation:o.rotation,silent:FM.isLabelSilent(e),style:Uh(u,{text:r,font:g,overflow:"truncate",width:m,ellipsis:v,fill:u.getTextColor()||e.get(["axisLine","lineStyle","color"]),align:u.get("align")||o.textAlign,verticalAlign:u.get("verticalAlign")||o.textVerticalAlign}),z2:1});if(Eh({el:x,componentModel:e,itemName:r}),x.__fullText=r,x.anid="name",e.get("triggerEvent")){var _=FM.makeAxisEventDataBase(e);_.targetType="axisName",_.name=r,Hs(x).eventData=_}i.add(x),x.updateTransform(),n.add(x),x.decomposeTransform()}}};function WM(t){t&&(t.ignore=!0)}function HM(t,e){var n=t&&t.getBoundingRect().clone(),i=e&&e.getBoundingRect().clone();if(n&&i){var r=Oi([]);return zi(r,r,-t.rotation),n.applyTransform(Ni([],r,t.getLocalTransform())),i.applyTransform(Ni([],r,e.getLocalTransform())),n.intersect(i)}}function YM(t){return"middle"===t||"center"===t}function UM(t,e,n,i,r){for(var o=[],a=[],s=[],l=0;l<t.length;l++){var u=t[l].coord;a[0]=u,a[1]=0,s[0]=u,s[1]=n,e&&(Ft(a,a,e),Ft(s,s,e));var h=new zu({subPixelOptimize:!0,shape:{x1:a[0],y1:a[1],x2:s[0],y2:s[1]},style:i,z2:2,autoBatch:!0,silent:!0});h.anid=r+"_"+t[l].tickValue,o.push(h)}return o}function XM(t,e){var n={axesInfo:{},seriesInvolved:!1,coordSysAxesInfo:{},coordSysMap:{}};return function(t,e,n){var i=e.getComponent("tooltip"),r=e.getComponent("axisPointer"),o=r.get("link",!0)||[],a=[];E(n.getCoordinateSystems(),(function(n){if(n.axisPointerEnabled){var s=$M(n.model),l=t.coordSysAxesInfo[s]={};t.coordSysMap[s]=n;var u=n.model.getModel("tooltip",i);if(E(n.getAxes(),H(d,!1,null)),n.getTooltipAxes&&i&&u.get("show")){var h="axis"===u.get("trigger"),c="cross"===u.get(["axisPointer","type"]),p=n.getTooltipAxes(u.get(["axisPointer","axis"]));(h||c)&&E(p.baseAxes,H(d,!c||"cross",h)),c&&E(p.otherAxes,H(d,"cross",!1))}}function d(i,s,h){var c=h.model.getModel("axisPointer",r),p=c.get("show");if(p&&("auto"!==p||i||KM(c))){null==s&&(s=c.get("triggerTooltip"));var d=(c=i?function(t,e,n,i,r,o){var a=e.getModel("axisPointer"),s={};E(["type","snap","lineStyle","shadowStyle","label","animation","animationDurationUpdate","animationEasingUpdate","z"],(function(t){s[t]=T(a.get(t))})),s.snap="category"!==t.type&&!!o,"cross"===a.get("type")&&(s.type="line");var l=s.label||(s.label={});if(null==l.show&&(l.show=!1),"cross"===r){var u=a.get(["label","show"]);if(l.show=null==u||u,!o){var h=s.lineStyle=a.get("crossStyle");h&&k(l,h.textStyle)}}return t.model.getModel("axisPointer",new dc(s,n,i))}(h,u,r,e,i,s):c).get("snap"),f=$M(h.model),g=s||d||"category"===h.type,y=t.axesInfo[f]={key:f,axis:h,coordSys:n,axisPointerModel:c,triggerTooltip:s,involveSeries:g,snap:d,useHandle:KM(c),seriesModels:[],linkGroup:null};l[f]=y,t.seriesInvolved=t.seriesInvolved||g;var v=function(t,e){for(var n=e.model,i=e.dim,r=0;r<t.length;r++){var o=t[r]||{};if(ZM(o[i+"AxisId"],n.id)||ZM(o[i+"AxisIndex"],n.componentIndex)||ZM(o[i+"AxisName"],n.name))return r}}(o,h);if(null!=v){var m=a[v]||(a[v]={axesInfo:{}});m.axesInfo[f]=y,m.mapper=o[v].mapper,y.linkGroup=m}}}}))}(n,t,e),n.seriesInvolved&&function(t,e){e.eachSeries((function(e){var n=e.coordinateSystem,i=e.get(["tooltip","trigger"],!0),r=e.get(["tooltip","show"],!0);n&&"none"!==i&&!1!==i&&"item"!==i&&!1!==r&&!1!==e.get(["axisPointer","show"],!0)&&E(t.coordSysAxesInfo[$M(n.model)],(function(t){var i=t.axis;n.getAxis(i.dim)===i&&(t.seriesModels.push(e),null==t.seriesDataCount&&(t.seriesDataCount=0),t.seriesDataCount+=e.getData().count())}))}))}(n,t),n}function ZM(t,e){return"all"===t||Y(t)&&P(t,e)>=0||t===e}function jM(t){var e=qM(t);if(e){var n=e.axisPointerModel,i=e.axis.scale,r=n.option,o=n.get("status"),a=n.get("value");null!=a&&(a=i.parse(a));var s=KM(n);null==o&&(r.status=s?"show":"hide");var l=i.getExtent().slice();l[0]>l[1]&&l.reverse(),(null==a||a>l[1])&&(a=l[1]),a<l[0]&&(a=l[0]),r.value=a,s&&(r.status=e.axis.scale.isBlank()?"hide":"show")}}function qM(t){var e=(t.ecModel.getComponent("axisPointer")||{}).coordSysAxesInfo;return e&&e.axesInfo[$M(t)]}function KM(t){return!!t.get(["handle","show"])}function $M(t){return t.type+"||"+t.id}var JM={},QM=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(e,n,i,r){this.axisPointerClass&&jM(e),t.prototype.render.apply(this,arguments),this._doUpdateAxisPointerClass(e,i,!0)},e.prototype.updateAxisPointer=function(t,e,n,i){this._doUpdateAxisPointerClass(t,n,!1)},e.prototype.remove=function(t,e){var n=this._axisPointer;n&&n.remove(e)},e.prototype.dispose=function(e,n){this._disposeAxisPointer(n),t.prototype.dispose.apply(this,arguments)},e.prototype._doUpdateAxisPointerClass=function(t,n,i){var r=e.getAxisPointerClass(this.axisPointerClass);if(r){var o=function(t){var e=qM(t);return e&&e.axisPointerModel}(t);o?(this._axisPointer||(this._axisPointer=new r)).render(t,o,n,i):this._disposeAxisPointer(n)}},e.prototype._disposeAxisPointer=function(t){this._axisPointer&&this._axisPointer.dispose(t),this._axisPointer=null},e.registerAxisPointerClass=function(t,e){JM[t]=e},e.getAxisPointerClass=function(t){return t&&JM[t]},e.type="axis",e}(gg),tI=So();function eI(t,e,n,i){var r=n.axis;if(!r.scale.isBlank()){var o=n.getModel("splitArea"),a=o.getModel("areaStyle"),s=a.get("color"),l=i.coordinateSystem.getRect(),u=r.getTicksCoords({tickModel:o,clamp:!0});if(u.length){var h=s.length,c=tI(t).splitAreaColors,p=ft(),d=0;if(c)for(var f=0;f<u.length;f++){var g=c.get(u[f].tickValue);if(null!=g){d=(g+(h-1)*f)%h;break}}var y=r.toGlobalCoord(u[0].coord),v=a.getAreaStyle();s=Y(s)?s:[s];for(f=1;f<u.length;f++){var m=r.toGlobalCoord(u[f].coord),x=void 0,_=void 0,b=void 0,w=void 0;r.isHorizontal()?(x=y,_=l.y,b=m-x,w=l.height,y=x+b):(x=l.x,_=y,b=l.width,y=_+(w=m-_));var S=u[f-1].tickValue;null!=S&&p.set(S,d),e.add(new Cs({anid:null!=S?"area_"+S:null,shape:{x:x,y:_,width:b,height:w},style:k({fill:s[d]},v),autoBatch:!0,silent:!0})),d=(d+1)%h}tI(t).splitAreaColors=p}}}function nI(t){tI(t).splitAreaColors=null}var iI=["axisLine","axisTickLabel","axisName"],rI=["splitArea","splitLine","minorSplitLine"],oI=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.axisPointerClass="CartesianAxisPointer",n}return n(e,t),e.prototype.render=function(e,n,i,r){this.group.removeAll();var o=this._axisGroup;if(this._axisGroup=new Cr,this.group.add(this._axisGroup),e.get("show")){var a=e.getCoordSysModel(),s=kM(a,e),l=new FM(e,A({handleAutoShown:function(t){for(var n=a.coordinateSystem.getCartesians(),i=0;i<n.length;i++)if(lx(n[i].getOtherAxis(e.axis).scale))return!0;return!1}},s));E(iI,l.add,l),this._axisGroup.add(l.getGroup()),E(rI,(function(t){e.get([t,"show"])&&aI[t](this,this._axisGroup,e,a)}),this),r&&"changeAxisOrder"===r.type&&r.isInitSort||Ah(o,this._axisGroup,e),t.prototype.render.call(this,e,n,i,r)}},e.prototype.remove=function(){nI(this)},e.type="cartesianAxis",e}(QM),aI={splitLine:function(t,e,n,i){var r=n.axis;if(!r.scale.isBlank()){var o=n.getModel("splitLine"),a=o.getModel("lineStyle"),s=a.get("color");s=Y(s)?s:[s];for(var l=i.coordinateSystem.getRect(),u=r.isHorizontal(),h=0,c=r.getTicksCoords({tickModel:o}),p=[],d=[],f=a.getLineStyle(),g=0;g<c.length;g++){var y=r.toGlobalCoord(c[g].coord);u?(p[0]=y,p[1]=l.y,d[0]=y,d[1]=l.y+l.height):(p[0]=l.x,p[1]=y,d[0]=l.x+l.width,d[1]=y);var v=h++%s.length,m=c[g].tickValue;e.add(new zu({anid:null!=m?"line_"+c[g].tickValue:null,subPixelOptimize:!0,autoBatch:!0,shape:{x1:p[0],y1:p[1],x2:d[0],y2:d[1]},style:k({stroke:s[v]},f),silent:!0}))}}},minorSplitLine:function(t,e,n,i){var r=n.axis,o=n.getModel("minorSplitLine").getModel("lineStyle"),a=i.coordinateSystem.getRect(),s=r.isHorizontal(),l=r.getMinorTicksCoords();if(l.length)for(var u=[],h=[],c=o.getLineStyle(),p=0;p<l.length;p++)for(var d=0;d<l[p].length;d++){var f=r.toGlobalCoord(l[p][d].coord);s?(u[0]=f,u[1]=a.y,h[0]=f,h[1]=a.y+a.height):(u[0]=a.x,u[1]=f,h[0]=a.x+a.width,h[1]=f),e.add(new zu({anid:"minor_line_"+l[p][d].tickValue,subPixelOptimize:!0,autoBatch:!0,shape:{x1:u[0],y1:u[1],x2:h[0],y2:h[1]},style:c,silent:!0}))}},splitArea:function(t,e,n,i){eI(t,e,n,i)}},sI=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="xAxis",e}(oI),lI=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type=sI.type,e}return n(e,t),e.type="yAxis",e}(oI),uI=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="grid",e}return n(e,t),e.prototype.render=function(t,e){this.group.removeAll(),t.get("show")&&this.group.add(new Cs({shape:t.coordinateSystem.getRect(),style:k({fill:t.get("backgroundColor")},t.getItemStyle()),silent:!0,z2:-1}))},e.type="grid",e}(gg),hI={offset:0};function cI(t){t.registerComponentView(uI),t.registerComponentModel(yM),t.registerCoordinateSystem("cartesian2d",NM),SM(t,"x",vM,hI),SM(t,"y",vM,hI),t.registerComponentView(sI),t.registerComponentView(lI),t.registerPreprocessor((function(t){t.xAxis&&t.yAxis&&!t.grid&&(t.grid={})}))}function pI(t){t.eachSeriesByType("radar",(function(t){var e=t.getData(),n=[],i=t.coordinateSystem;if(i){var r=i.getIndicatorAxes();E(r,(function(t,o){e.each(e.mapDimension(r[o].dim),(function(t,e){n[e]=n[e]||[];var r=i.dataToPoint(t,o);n[e][o]=dI(r)?r:fI(i)}))})),e.each((function(t){var r=F(n[t],(function(t){return dI(t)}))||fI(i);n[t].push(r.slice()),e.setItemLayout(t,n[t])}))}}))}function dI(t){return!isNaN(t[0])&&!isNaN(t[1])}function fI(t){return[t.cx,t.cy]}function gI(t){var e=t.polar;if(e){Y(e)||(e=[e]);var n=[];E(e,(function(e,i){e.indicator?(e.type&&!e.shape&&(e.shape=e.type),t.radar=t.radar||[],Y(t.radar)||(t.radar=[t.radar]),t.radar.push(e)):n.push(e)})),t.polar=n}E(t.series,(function(t){t&&"radar"===t.type&&t.polarIndex&&(t.radarIndex=t.polarIndex)}))}var yI=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){var i=t.coordinateSystem,r=this.group,o=t.getData(),a=this._data;function s(t,e){var n=t.getItemVisual(e,"symbol")||"circle";if("none"!==n){var i=Py(t.getItemVisual(e,"symbolSize")),r=Ly(n,-1,-1,2,2),o=t.getItemVisual(e,"symbolRotate")||0;return r.attr({style:{strokeNoScale:!0},z2:100,scaleX:i[0]/2,scaleY:i[1]/2,rotation:o*Math.PI/180||0}),r}}function l(e,n,i,r,o,a){i.removeAll();for(var l=0;l<n.length-1;l++){var u=s(r,o);u&&(u.__dimIdx=l,e[l]?(u.setPosition(e[l]),Bh[a?"initProps":"updateProps"](u,{x:n[l][0],y:n[l][1]},t,o)):u.setPosition(n[l]),i.add(u))}}function u(t){return z(t,(function(t){return[i.cx,i.cy]}))}o.diff(a).add((function(e){var n=o.getItemLayout(e);if(n){var i=new Pu,r=new Ru,a={shape:{points:n}};i.shape.points=u(n),r.shape.points=u(n),oh(i,a,t,e),oh(r,a,t,e);var s=new Cr,h=new Cr;s.add(r),s.add(i),s.add(h),l(r.shape.points,n,h,o,e,!0),o.setItemGraphicEl(e,s)}})).update((function(e,n){var i=a.getItemGraphicEl(n),r=i.childAt(0),s=i.childAt(1),u=i.childAt(2),h={shape:{points:o.getItemLayout(e)}};h.shape.points&&(l(r.shape.points,h.shape.points,u,o,e,!1),hh(s),hh(r),rh(r,h,t),rh(s,h,t),o.setItemGraphicEl(e,i))})).remove((function(t){r.remove(a.getItemGraphicEl(t))})).execute(),o.eachItemGraphicEl((function(t,e){var n=o.getItemModel(e),i=t.childAt(0),a=t.childAt(1),s=t.childAt(2),l=o.getItemVisual(e,"style"),u=l.fill;r.add(t),i.useStyle(k(n.getModel("lineStyle").getLineStyle(),{fill:"none",stroke:u})),Vl(i,n,"lineStyle"),Vl(a,n,"areaStyle");var h=n.getModel("areaStyle"),c=h.isEmpty()&&h.parentModel.isEmpty();a.ignore=c,E(["emphasis","select","blur"],(function(t){var e=n.getModel([t,"areaStyle"]),i=e.isEmpty()&&e.parentModel.isEmpty();a.ensureState(t).ignore=i&&c})),a.useStyle(k(h.getAreaStyle(),{fill:u,opacity:.7,decal:l.decal}));var p=n.getModel("emphasis"),d=p.getModel("itemStyle").getItemStyle();s.eachChild((function(t){if(t instanceof _s){var i=t.style;t.useStyle(A({image:i.image,x:i.x,y:i.y,width:i.width,height:i.height},l))}else t.useStyle(l),t.setColor(u),t.style.strokeNoScale=!0;t.ensureState("emphasis").style=T(d);var r=o.getStore().get(o.getDimensionIndex(t.__dimIdx),e);(null==r||isNaN(r))&&(r=""),Hh(t,Yh(n),{labelFetcher:o.hostModel,labelDataIndex:e,labelDimIndex:t.__dimIdx,defaultText:r,inheritColor:u,defaultOpacity:l.opacity})})),Rl(t,p.get("focus"),p.get("blurScope"),p.get("disabled"))})),this._data=o},e.prototype.remove=function(){this.group.removeAll(),this._data=null},e.type="radar",e}(xg),vI=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.hasSymbolVisual=!0,n}return n(e,t),e.prototype.init=function(e){t.prototype.init.apply(this,arguments),this.legendVisualProvider=new uM(W(this.getData,this),W(this.getRawData,this))},e.prototype.getInitialData=function(t,e){return lM(this,{generateCoord:"indicator_",generateCoordCount:1/0})},e.prototype.formatTooltip=function(t,e,n){var i=this.getData(),r=this.coordinateSystem.getIndicatorAxes(),o=this.getData().getName(t),a=""===o?this.name:o,s=eg(this,t);return Xf("section",{header:a,sortBlocks:!0,blocks:z(r,(function(e){var n=i.get(i.mapDimension(e.dim),t);return Xf("nameValue",{markerType:"subItem",markerColor:s,name:e.name,value:n,sortParam:n})}))})},e.prototype.getTooltipPosition=function(t){if(null!=t)for(var e=this.getData(),n=this.coordinateSystem,i=e.getValues(z(n.dimensions,(function(t){return e.mapDimension(t)})),t),r=0,o=i.length;r<o;r++)if(!isNaN(i[r])){var a=n.getIndicatorAxes();return n.coordToPoint(a[r].dataToCoord(i[r]),r)}},e.type="series.radar",e.dependencies=["radar"],e.defaultOption={z:2,colorBy:"data",coordinateSystem:"radar",legendHoverLink:!0,radarIndex:0,lineStyle:{width:2,type:"solid",join:"round"},label:{position:"top"},symbolSize:8},e}(sg),mI=bM.value;function xI(t,e){return k({show:e},t)}var _I=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.optionUpdated=function(){var t=this.get("boundaryGap"),e=this.get("splitNumber"),n=this.get("scale"),i=this.get("axisLine"),r=this.get("axisTick"),o=this.get("axisLabel"),a=this.get("axisName"),s=this.get(["axisName","show"]),l=this.get(["axisName","formatter"]),u=this.get("axisNameGap"),h=this.get("triggerEvent"),c=z(this.get("indicator")||[],(function(c){null!=c.max&&c.max>0&&!c.min?c.min=0:null!=c.min&&c.min<0&&!c.max&&(c.max=0);var p=a;null!=c.color&&(p=k({color:c.color},a));var d=C(T(c),{boundaryGap:t,splitNumber:e,scale:n,axisLine:i,axisTick:r,axisLabel:o,name:c.text,showName:s,nameLocation:"end",nameGap:u,nameTextStyle:p,triggerEvent:h},!1);if(s||(d.name=""),X(l)){var f=d.name;d.name=l.replace("{value}",null!=f?f:"")}else U(l)&&(d.name=l(d.name,d));var g=new dc(d,null,this.ecModel);return R(g,c_.prototype),g.mainType="radar",g.componentIndex=this.componentIndex,g}),this);this._indicatorModels=c},e.prototype.getIndicatorModels=function(){return this._indicatorModels},e.type="radar",e.defaultOption={z:0,center:["50%","50%"],radius:"75%",startAngle:90,axisName:{show:!0},boundaryGap:[0,0],splitNumber:5,axisNameGap:15,scale:!1,shape:"polygon",axisLine:C({lineStyle:{color:"#bbb"}},mI.axisLine),axisLabel:xI(mI.axisLabel,!1),axisTick:xI(mI.axisTick,!1),splitLine:xI(mI.splitLine,!0),splitArea:xI(mI.splitArea,!0),indicator:[]},e}(Tp),bI=["axisLine","axisTickLabel","axisName"],wI=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){this.group.removeAll(),this._buildAxes(t),this._buildSplitLineAndArea(t)},e.prototype._buildAxes=function(t){var e=t.coordinateSystem;E(z(e.getIndicatorAxes(),(function(t){var n=t.model.get("showName")?t.name:"";return new FM(t.model,{axisName:n,position:[e.cx,e.cy],rotation:t.angle,labelDirection:-1,tickDirection:-1,nameDirection:1})})),(function(t){E(bI,t.add,t),this.group.add(t.getGroup())}),this)},e.prototype._buildSplitLineAndArea=function(t){var e=t.coordinateSystem,n=e.getIndicatorAxes();if(n.length){var i=t.get("shape"),r=t.getModel("splitLine"),o=t.getModel("splitArea"),a=r.getModel("lineStyle"),s=o.getModel("areaStyle"),l=r.get("show"),u=o.get("show"),h=a.get("color"),c=s.get("color"),p=Y(h)?h:[h],d=Y(c)?c:[c],f=[],g=[];if("circle"===i)for(var y=n[0].getTicksCoords(),v=e.cx,m=e.cy,x=0;x<y.length;x++){if(l)f[C(f,p,x)].push(new hu({shape:{cx:v,cy:m,r:y[x].coord}}));if(u&&x<y.length-1)g[C(g,d,x)].push(new Au({shape:{cx:v,cy:m,r0:y[x].coord,r:y[x+1].coord}}))}else{var _,b=z(n,(function(t,n){var i=t.getTicksCoords();return _=null==_?i.length-1:Math.min(i.length-1,_),z(i,(function(t){return e.coordToPoint(t.coord,n)}))})),w=[];for(x=0;x<=_;x++){for(var S=[],M=0;M<n.length;M++)S.push(b[M][x]);if(S[0]&&S.push(S[0].slice()),l)f[C(f,p,x)].push(new Ru({shape:{points:S}}));if(u&&w)g[C(g,d,x-1)].push(new Pu({shape:{points:S.concat(w)}}));w=S.slice().reverse()}}var I=a.getLineStyle(),T=s.getAreaStyle();E(g,(function(t,e){this.group.add(wh(t,{style:k({stroke:"none",fill:d[e%d.length]},T),silent:!0}))}),this),E(f,(function(t,e){this.group.add(wh(t,{style:k({fill:"none",stroke:p[e%p.length]},I),silent:!0}))}),this)}function C(t,e,n){var i=n%e.length;return t[i]=t[i]||[],i}},e.type="radar",e}(gg),SI=function(t){function e(e,n,i){var r=t.call(this,e,n,i)||this;return r.type="value",r.angle=0,r.name="",r}return n(e,t),e}(W_),MI=function(){function t(t,e,n){this.dimensions=[],this._model=t,this._indicatorAxes=z(t.getIndicatorModels(),(function(t,e){var n="indicator_"+e,i=new SI(n,new mx);return i.name=t.get("name"),i.model=t,t.axis=i,this.dimensions.push(n),i}),this),this.resize(t,n)}return t.prototype.getIndicatorAxes=function(){return this._indicatorAxes},t.prototype.dataToPoint=function(t,e){var n=this._indicatorAxes[e];return this.coordToPoint(n.dataToCoord(t),e)},t.prototype.coordToPoint=function(t,e){var n=this._indicatorAxes[e].angle;return[this.cx+t*Math.cos(n),this.cy-t*Math.sin(n)]},t.prototype.pointToData=function(t){var e=t[0]-this.cx,n=t[1]-this.cy,i=Math.sqrt(e*e+n*n);e/=i,n/=i;for(var r,o=Math.atan2(-n,e),a=1/0,s=-1,l=0;l<this._indicatorAxes.length;l++){var u=this._indicatorAxes[l],h=Math.abs(o-u.angle);h<a&&(r=u,s=l,a=h)}return[s,+(r&&r.coordToData(i))]},t.prototype.resize=function(t,e){var n=t.get("center"),i=e.getWidth(),r=e.getHeight(),o=Math.min(i,r)/2;this.cx=Er(n[0],i),this.cy=Er(n[1],r),this.startAngle=t.get("startAngle")*Math.PI/180;var a=t.get("radius");(X(a)||j(a))&&(a=[0,a]),this.r0=Er(a[0],o),this.r=Er(a[1],o),E(this._indicatorAxes,(function(t,e){t.setExtent(this.r0,this.r);var n=this.startAngle+e*Math.PI*2/this._indicatorAxes.length;n=Math.atan2(Math.sin(n),Math.cos(n)),t.angle=n}),this)},t.prototype.update=function(t,e){var n=this._indicatorAxes,i=this._model;E(n,(function(t){t.scale.setExtent(1/0,-1/0)})),t.eachSeriesByType("radar",(function(e,r){if("radar"===e.get("coordinateSystem")&&t.getComponent("radar",e.get("radarIndex"))===i){var o=e.getData();E(n,(function(t){t.scale.unionExtentFromData(o,o.mapDimension(t.dim))}))}}),this);var r=i.get("splitNumber"),o=new mx;o.setExtent(0,r),o.setInterval(1),E(n,(function(t,e){RM(t.scale,t.model,o)}))},t.prototype.convertToPixel=function(t,e,n){return console.warn("Not implemented."),null},t.prototype.convertFromPixel=function(t,e,n){return console.warn("Not implemented."),null},t.prototype.containPoint=function(t){return console.warn("Not implemented."),!1},t.create=function(e,n){var i=[];return e.eachComponent("radar",(function(r){var o=new t(r,e,n);i.push(o),r.coordinateSystem=o})),e.eachSeriesByType("radar",(function(t){"radar"===t.get("coordinateSystem")&&(t.coordinateSystem=i[t.get("radarIndex")||0])})),i},t.dimensions=[],t}();function II(t){t.registerCoordinateSystem("radar",MI),t.registerComponentModel(_I),t.registerComponentView(wI),t.registerVisual({seriesType:"radar",reset:function(t){var e=t.getData();e.each((function(t){e.setItemVisual(t,"legendIcon","roundRect")})),e.setVisual("legendIcon","roundRect")}})}var TI="\0_ec_interaction_mutex";function CI(t,e){return!!DI(t)[e]}function DI(t){return t[TI]||(t[TI]={})}hm({type:"takeGlobalCursor",event:"globalCursorTaken",update:"update"},xt);var AI=function(t){function e(e){var n=t.call(this)||this;n._zr=e;var i=W(n._mousedownHandler,n),r=W(n._mousemoveHandler,n),o=W(n._mouseupHandler,n),a=W(n._mousewheelHandler,n),s=W(n._pinchHandler,n);return n.enable=function(t,n){this.disable(),this._opt=k(T(n)||{},{zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!1,preventDefaultMouseMove:!0}),null==t&&(t=!0),!0!==t&&"move"!==t&&"pan"!==t||(e.on("mousedown",i),e.on("mousemove",r),e.on("mouseup",o)),!0!==t&&"scale"!==t&&"zoom"!==t||(e.on("mousewheel",a),e.on("pinch",s))},n.disable=function(){e.off("mousedown",i),e.off("mousemove",r),e.off("mouseup",o),e.off("mousewheel",a),e.off("pinch",s)},n}return n(e,t),e.prototype.isDragging=function(){return this._dragging},e.prototype.isPinching=function(){return this._pinching},e.prototype.setPointerChecker=function(t){this.pointerChecker=t},e.prototype.dispose=function(){this.disable()},e.prototype._mousedownHandler=function(t){if(!(le(t)||t.target&&t.target.draggable)){var e=t.offsetX,n=t.offsetY;this.pointerChecker&&this.pointerChecker(t,e,n)&&(this._x=e,this._y=n,this._dragging=!0)}},e.prototype._mousemoveHandler=function(t){if(this._dragging&&PI("moveOnMouseMove",t,this._opt)&&"pinch"!==t.gestureEvent&&!CI(this._zr,"globalPan")){var e=t.offsetX,n=t.offsetY,i=this._x,r=this._y,o=e-i,a=n-r;this._x=e,this._y=n,this._opt.preventDefaultMouseMove&&se(t.event),LI(this,"pan","moveOnMouseMove",t,{dx:o,dy:a,oldX:i,oldY:r,newX:e,newY:n,isAvailableBehavior:null})}},e.prototype._mouseupHandler=function(t){le(t)||(this._dragging=!1)},e.prototype._mousewheelHandler=function(t){var e=PI("zoomOnMouseWheel",t,this._opt),n=PI("moveOnMouseWheel",t,this._opt),i=t.wheelDelta,r=Math.abs(i),o=t.offsetX,a=t.offsetY;if(0!==i&&(e||n)){if(e){var s=r>3?1.4:r>1?1.2:1.1;kI(this,"zoom","zoomOnMouseWheel",t,{scale:i>0?s:1/s,originX:o,originY:a,isAvailableBehavior:null})}if(n){var l=Math.abs(i);kI(this,"scrollMove","moveOnMouseWheel",t,{scrollDelta:(i>0?1:-1)*(l>3?.4:l>1?.15:.05),originX:o,originY:a,isAvailableBehavior:null})}}},e.prototype._pinchHandler=function(t){CI(this._zr,"globalPan")||kI(this,"zoom",null,t,{scale:t.pinchScale>1?1.1:1/1.1,originX:t.pinchX,originY:t.pinchY,isAvailableBehavior:null})},e}(Xt);function kI(t,e,n,i,r){t.pointerChecker&&t.pointerChecker(i,r.originX,r.originY)&&(se(i.event),LI(t,e,n,i,r))}function LI(t,e,n,i,r){r.isAvailableBehavior=W(PI,null,n,i),t.trigger(e,r)}function PI(t,e,n){var i=n[t];return!t||i&&(!X(i)||e.event[i+"Key"])}function OI(t,e,n){var i=t.target;i.x+=e,i.y+=n,i.dirty()}function RI(t,e,n,i){var r=t.target,o=t.zoomLimit,a=t.zoom=t.zoom||1;if(a*=e,o){var s=o.min||0,l=o.max||1/0;a=Math.max(Math.min(l,a),s)}var u=a/t.zoom;t.zoom=a,r.x-=(n-r.x)*(u-1),r.y-=(i-r.y)*(u-1),r.scaleX*=u,r.scaleY*=u,r.dirty()}var NI,EI={axisPointer:1,tooltip:1,brush:1};function zI(t,e,n){var i=e.getComponentByElement(t.topTarget),r=i&&i.coordinateSystem;return i&&i!==n&&!EI.hasOwnProperty(i.mainType)&&r&&r.model!==n}function VI(t){X(t)&&(t=(new DOMParser).parseFromString(t,"text/xml"));var e=t;for(9===e.nodeType&&(e=e.firstChild);"svg"!==e.nodeName.toLowerCase()||1!==e.nodeType;)e=e.nextSibling;return e}var BI={fill:"fill",stroke:"stroke","stroke-width":"lineWidth",opacity:"opacity","fill-opacity":"fillOpacity","stroke-opacity":"strokeOpacity","stroke-dasharray":"lineDash","stroke-dashoffset":"lineDashOffset","stroke-linecap":"lineCap","stroke-linejoin":"lineJoin","stroke-miterlimit":"miterLimit","font-family":"fontFamily","font-size":"fontSize","font-style":"fontStyle","font-weight":"fontWeight","text-anchor":"textAlign",visibility:"visibility",display:"display"},FI=G(BI),GI={"alignment-baseline":"textBaseline","stop-color":"stopColor"},WI=G(GI),HI=function(){function t(){this._defs={},this._root=null}return t.prototype.parse=function(t,e){e=e||{};var n=VI(t);this._defsUsePending=[];var i=new Cr;this._root=i;var r=[],o=n.getAttribute("viewBox")||"",a=parseFloat(n.getAttribute("width")||e.width),s=parseFloat(n.getAttribute("height")||e.height);isNaN(a)&&(a=null),isNaN(s)&&(s=null),qI(n,i,null,!0,!1);for(var l,u,h=n.firstChild;h;)this._parseNode(h,i,r,null,!1,!1),h=h.nextSibling;if(function(t,e){for(var n=0;n<e.length;n++){var i=e[n];i[0].style[i[1]]=t[i[2]]}}(this._defs,this._defsUsePending),this._defsUsePending=[],o){var c=QI(o);c.length>=4&&(l={x:parseFloat(c[0]||0),y:parseFloat(c[1]||0),width:parseFloat(c[2]),height:parseFloat(c[3])})}if(l&&null!=a&&null!=s&&(u=rT(l,{x:0,y:0,width:a,height:s}),!e.ignoreViewBox)){var p=i;(i=new Cr).add(p),p.scaleX=p.scaleY=u.scale,p.x=u.x,p.y=u.y}return e.ignoreRootClip||null==a||null==s||i.setClipPath(new Cs({shape:{x:0,y:0,width:a,height:s}})),{root:i,width:a,height:s,viewBoxRect:l,viewBoxTransform:u,named:r}},t.prototype._parseNode=function(t,e,n,i,r,o){var a,s=t.nodeName.toLowerCase(),l=i;if("defs"===s&&(r=!0),"text"===s&&(o=!0),"defs"===s||"switch"===s)a=e;else{if(!r){var u=NI[s];if(u&&mt(NI,s)){a=u.call(this,t,e);var h=t.getAttribute("name");if(h){var c={name:h,namedFrom:null,svgNodeTagLower:s,el:a};n.push(c),"g"===s&&(l=c)}else i&&n.push({name:i.name,namedFrom:i,svgNodeTagLower:s,el:a});e.add(a)}}var p=YI[s];if(p&&mt(YI,s)){var d=p.call(this,t),f=t.getAttribute("id");f&&(this._defs[f]=d)}}if(a&&a.isGroup)for(var g=t.firstChild;g;)1===g.nodeType?this._parseNode(g,a,n,l,r,o):3===g.nodeType&&o&&this._parseText(g,a),g=g.nextSibling},t.prototype._parseText=function(t,e){var n=new vs({style:{text:t.textContent},silent:!0,x:this._textX||0,y:this._textY||0});ZI(e,n),qI(t,n,this._defsUsePending,!1,!1),function(t,e){var n=e.__selfStyle;if(n){var i=n.textBaseline,r=i;i&&"auto"!==i?"baseline"===i?r="alphabetic":"before-edge"===i||"text-before-edge"===i?r="top":"after-edge"===i||"text-after-edge"===i?r="bottom":"central"!==i&&"mathematical"!==i||(r="middle"):r="alphabetic",t.style.textBaseline=r}var o=e.__inheritedStyle;if(o){var a=o.textAlign,s=a;a&&("middle"===a&&(s="center"),t.style.textAlign=s)}}(n,e);var i=n.style,r=i.fontSize;r&&r<9&&(i.fontSize=9,n.scaleX*=r/9,n.scaleY*=r/9);var o=(i.fontSize||i.fontFamily)&&[i.fontStyle,i.fontWeight,(i.fontSize||12)+"px",i.fontFamily||"sans-serif"].join(" ");i.font=o;var a=n.getBoundingRect();return this._textX+=a.width,e.add(n),n},t.internalField=void(NI={g:function(t,e){var n=new Cr;return ZI(e,n),qI(t,n,this._defsUsePending,!1,!1),n},rect:function(t,e){var n=new Cs;return ZI(e,n),qI(t,n,this._defsUsePending,!1,!1),n.setShape({x:parseFloat(t.getAttribute("x")||"0"),y:parseFloat(t.getAttribute("y")||"0"),width:parseFloat(t.getAttribute("width")||"0"),height:parseFloat(t.getAttribute("height")||"0")}),n.silent=!0,n},circle:function(t,e){var n=new hu;return ZI(e,n),qI(t,n,this._defsUsePending,!1,!1),n.setShape({cx:parseFloat(t.getAttribute("cx")||"0"),cy:parseFloat(t.getAttribute("cy")||"0"),r:parseFloat(t.getAttribute("r")||"0")}),n.silent=!0,n},line:function(t,e){var n=new zu;return ZI(e,n),qI(t,n,this._defsUsePending,!1,!1),n.setShape({x1:parseFloat(t.getAttribute("x1")||"0"),y1:parseFloat(t.getAttribute("y1")||"0"),x2:parseFloat(t.getAttribute("x2")||"0"),y2:parseFloat(t.getAttribute("y2")||"0")}),n.silent=!0,n},ellipse:function(t,e){var n=new pu;return ZI(e,n),qI(t,n,this._defsUsePending,!1,!1),n.setShape({cx:parseFloat(t.getAttribute("cx")||"0"),cy:parseFloat(t.getAttribute("cy")||"0"),rx:parseFloat(t.getAttribute("rx")||"0"),ry:parseFloat(t.getAttribute("ry")||"0")}),n.silent=!0,n},polygon:function(t,e){var n,i=t.getAttribute("points");i&&(n=jI(i));var r=new Pu({shape:{points:n||[]},silent:!0});return ZI(e,r),qI(t,r,this._defsUsePending,!1,!1),r},polyline:function(t,e){var n,i=t.getAttribute("points");i&&(n=jI(i));var r=new Ru({shape:{points:n||[]},silent:!0});return ZI(e,r),qI(t,r,this._defsUsePending,!1,!1),r},image:function(t,e){var n=new _s;return ZI(e,n),qI(t,n,this._defsUsePending,!1,!1),n.setStyle({image:t.getAttribute("xlink:href")||t.getAttribute("href"),x:+t.getAttribute("x"),y:+t.getAttribute("y"),width:+t.getAttribute("width"),height:+t.getAttribute("height")}),n.silent=!0,n},text:function(t,e){var n=t.getAttribute("x")||"0",i=t.getAttribute("y")||"0",r=t.getAttribute("dx")||"0",o=t.getAttribute("dy")||"0";this._textX=parseFloat(n)+parseFloat(r),this._textY=parseFloat(i)+parseFloat(o);var a=new Cr;return ZI(e,a),qI(t,a,this._defsUsePending,!1,!0),a},tspan:function(t,e){var n=t.getAttribute("x"),i=t.getAttribute("y");null!=n&&(this._textX=parseFloat(n)),null!=i&&(this._textY=parseFloat(i));var r=t.getAttribute("dx")||"0",o=t.getAttribute("dy")||"0",a=new Cr;return ZI(e,a),qI(t,a,this._defsUsePending,!1,!0),this._textX+=parseFloat(r),this._textY+=parseFloat(o),a},path:function(t,e){var n=su(t.getAttribute("d")||"");return ZI(e,n),qI(t,n,this._defsUsePending,!1,!1),n.silent=!0,n}}),t}(),YI={lineargradient:function(t){var e=parseInt(t.getAttribute("x1")||"0",10),n=parseInt(t.getAttribute("y1")||"0",10),i=parseInt(t.getAttribute("x2")||"10",10),r=parseInt(t.getAttribute("y2")||"0",10),o=new Xu(e,n,i,r);return UI(t,o),XI(t,o),o},radialgradient:function(t){var e=parseInt(t.getAttribute("cx")||"0",10),n=parseInt(t.getAttribute("cy")||"0",10),i=parseInt(t.getAttribute("r")||"0",10),r=new Zu(e,n,i);return UI(t,r),XI(t,r),r}};function UI(t,e){"userSpaceOnUse"===t.getAttribute("gradientUnits")&&(e.global=!0)}function XI(t,e){for(var n=t.firstChild;n;){if(1===n.nodeType&&"stop"===n.nodeName.toLocaleLowerCase()){var i=n.getAttribute("offset"),r=void 0;r=i&&i.indexOf("%")>0?parseInt(i,10)/100:i?parseFloat(i):0;var o={};iT(n,o,o);var a=o.stopColor||n.getAttribute("stop-color")||"#000000";e.colorStops.push({offset:r,color:a})}n=n.nextSibling}}function ZI(t,e){t&&t.__inheritedStyle&&(e.__inheritedStyle||(e.__inheritedStyle={}),k(e.__inheritedStyle,t.__inheritedStyle))}function jI(t){for(var e=QI(t),n=[],i=0;i<e.length;i+=2){var r=parseFloat(e[i]),o=parseFloat(e[i+1]);n.push([r,o])}return n}function qI(t,e,n,i,r){var o=e,a=o.__inheritedStyle=o.__inheritedStyle||{},s={};1===t.nodeType&&(function(t,e){var n=t.getAttribute("transform");if(n){n=n.replace(/,/g," ");var i=[],r=null;n.replace(tT,(function(t,e,n){return i.push(e,n),""}));for(var o=i.length-1;o>0;o-=2){var a=i[o],s=i[o-1],l=QI(a);switch(r=r||[1,0,0,1,0,0],s){case"translate":Ei(r,r,[parseFloat(l[0]),parseFloat(l[1]||"0")]);break;case"scale":Vi(r,r,[parseFloat(l[0]),parseFloat(l[1]||l[0])]);break;case"rotate":zi(r,r,-parseFloat(l[0])*eT);break;case"skewX":Ni(r,[1,0,Math.tan(parseFloat(l[0])*eT),1,0,0],r);break;case"skewY":Ni(r,[1,Math.tan(parseFloat(l[0])*eT),0,1,0,0],r);break;case"matrix":r[0]=parseFloat(l[0]),r[1]=parseFloat(l[1]),r[2]=parseFloat(l[2]),r[3]=parseFloat(l[3]),r[4]=parseFloat(l[4]),r[5]=parseFloat(l[5])}}e.setLocalTransform(r)}}(t,e),iT(t,a,s),i||function(t,e,n){for(var i=0;i<FI.length;i++){var r=FI[i];null!=(o=t.getAttribute(r))&&(e[BI[r]]=o)}for(i=0;i<WI.length;i++){var o;r=WI[i];null!=(o=t.getAttribute(r))&&(n[GI[r]]=o)}}(t,a,s)),o.style=o.style||{},null!=a.fill&&(o.style.fill=$I(o,"fill",a.fill,n)),null!=a.stroke&&(o.style.stroke=$I(o,"stroke",a.stroke,n)),E(["lineWidth","opacity","fillOpacity","strokeOpacity","miterLimit","fontSize"],(function(t){null!=a[t]&&(o.style[t]=parseFloat(a[t]))})),E(["lineDashOffset","lineCap","lineJoin","fontWeight","fontFamily","fontStyle","textAlign"],(function(t){null!=a[t]&&(o.style[t]=a[t])})),r&&(o.__selfStyle=s),a.lineDash&&(o.style.lineDash=z(QI(a.lineDash),(function(t){return parseFloat(t)}))),"hidden"!==a.visibility&&"collapse"!==a.visibility||(o.invisible=!0),"none"===a.display&&(o.ignore=!0)}var KI=/^url\(\s*#(.*?)\)/;function $I(t,e,n,i){var r=n&&n.match(KI);if(!r)return"none"===n&&(n=null),n;var o=ut(r[1]);i.push([t,e,o])}var JI=/-?([0-9]*\.)?[0-9]+([eE]-?[0-9]+)?/g;function QI(t){return t.match(JI)||[]}var tT=/(translate|scale|rotate|skewX|skewY|matrix)\(([\-\s0-9\.eE,]*)\)/g,eT=Math.PI/180;var nT=/([^\s:;]+)\s*:\s*([^:;]+)/g;function iT(t,e,n){var i,r=t.getAttribute("style");if(r)for(nT.lastIndex=0;null!=(i=nT.exec(r));){var o=i[1],a=mt(BI,o)?BI[o]:null;a&&(e[a]=i[2]);var s=mt(GI,o)?GI[o]:null;s&&(n[s]=i[2])}}function rT(t,e){var n=e.width/t.width,i=e.height/t.height,r=Math.min(n,i);return{scale:r,x:-(t.x+t.width/2)*r+(e.x+e.width/2),y:-(t.y+t.height/2)*r+(e.y+e.height/2)}}var oT=ft(["rect","circle","line","ellipse","polygon","polyline","path","text","tspan","g"]),aT=function(){function t(t,e){this.type="geoSVG",this._usedGraphicMap=ft(),this._freedGraphics=[],this._mapName=t,this._parsedXML=VI(e)}return t.prototype.load=function(){var t=this._firstGraphic;if(!t){t=this._firstGraphic=this._buildGraphic(this._parsedXML),this._freedGraphics.push(t),this._boundingRect=this._firstGraphic.boundingRect.clone();var e=function(t){var e=[],n=ft();return E(t,(function(t){if(null==t.namedFrom){var i=new S_(t.name,t.el);e.push(i),n.set(t.name,i)}})),{regions:e,regionsMap:n}}(t.named),n=e.regions,i=e.regionsMap;this._regions=n,this._regionsMap=i}return{boundingRect:this._boundingRect,regions:this._regions,regionsMap:this._regionsMap}},t.prototype._buildGraphic=function(t){var e,n,i,r;try{lt(null!=(n=(e=t&&(i=t,r={ignoreViewBox:!0,ignoreRootClip:!0},(new HI).parse(i,r))||{}).root))}catch(t){throw new Error("Invalid svg format\n"+t.message)}var o=new Cr;o.add(n),o.isGeoSVGGraphicRoot=!0;var a=e.width,s=e.height,l=e.viewBoxRect,u=this._boundingRect;if(!u){var h=void 0,c=void 0,p=void 0,d=void 0;if(null!=a?(h=0,p=a):l&&(h=l.x,p=l.width),null!=s?(c=0,d=s):l&&(c=l.y,d=l.height),null==h||null==c){var f=n.getBoundingRect();null==h&&(h=f.x,p=f.width),null==c&&(c=f.y,d=f.height)}u=this._boundingRect=new sr(h,c,p,d)}if(l){var g=rT(l,u);n.scaleX=n.scaleY=g.scale,n.x=g.x,n.y=g.y}o.setClipPath(new Cs({shape:u.plain()}));var y=[];return E(e.named,(function(t){var e;null!=oT.get(t.svgNodeTagLower)&&(y.push(t),(e=t.el).silent=!1,e.isGroup&&e.traverse((function(t){t.silent=!1})))})),{root:o,boundingRect:u,named:y}},t.prototype.useGraphic=function(t){var e=this._usedGraphicMap,n=e.get(t);return n||(n=this._freedGraphics.pop()||this._buildGraphic(this._parsedXML),e.set(t,n),n)},t.prototype.freeGraphic=function(t){var e=this._usedGraphicMap,n=e.get(t);n&&(e.removeKey(t),this._freedGraphics.push(n))},t}();for(var sT=[126,25],lT="南海诸岛",uT=[[[0,3.5],[7,11.2],[15,11.9],[30,7],[42,.7],[52,.7],[56,7.7],[59,.7],[64,.7],[64,0],[5,0],[0,3.5]],[[13,16.1],[19,14.7],[16,21.7],[11,23.1],[13,16.1]],[[12,32.2],[14,38.5],[15,38.5],[13,32.2],[12,32.2]],[[16,47.6],[12,53.2],[13,53.2],[18,47.6],[16,47.6]],[[6,64.4],[8,70],[9,70],[8,64.4],[6,64.4]],[[23,82.6],[29,79.8],[30,79.8],[25,82.6],[23,82.6]],[[37,70.7],[43,62.3],[44,62.3],[39,70.7],[37,70.7]],[[48,51.1],[51,45.5],[53,45.5],[50,51.1],[48,51.1]],[[51,35],[51,28.7],[53,28.7],[53,35],[51,35]],[[52,22.4],[55,17.5],[56,17.5],[53,22.4],[52,22.4]],[[58,12.6],[62,7],[63,7],[60,12.6],[58,12.6]],[[0,3.5],[0,93.1],[64,93.1],[64,0],[63,0],[63,92.4],[1,92.4],[1,3.5],[0,3.5]]],hT=0;hT<uT.length;hT++)for(var cT=0;cT<uT[hT].length;cT++)uT[hT][cT][0]/=10.5,uT[hT][cT][1]/=-14,uT[hT][cT][0]+=sT[0],uT[hT][cT][1]+=sT[1];var pT={"南海诸岛":[32,80],"广东":[0,-10],"香港":[10,5],"澳门":[-10,10],"天津":[5,5]};var dT=[[[123.45165252685547,25.73527164402261],[123.49731445312499,25.73527164402261],[123.49731445312499,25.750734064600884],[123.45165252685547,25.750734064600884],[123.45165252685547,25.73527164402261]]];var fT=function(){function t(t,e,n){var i;this.type="geoJSON",this._parsedMap=ft(),this._mapName=t,this._specialAreas=n,this._geoJSON=X(i=e)?"undefined"!=typeof JSON&&JSON.parse?JSON.parse(i):new Function("return ("+i+");")():i}return t.prototype.load=function(t,e){e=e||"name";var n=this._parsedMap.get(e);if(!n){var i=this._parseToRegions(e);n=this._parsedMap.set(e,{regions:i,boundingRect:gT(i)})}var r=ft(),o=[];return E(n.regions,(function(e){var n=e.name;t&&mt(t,n)&&(e=e.cloneShallow(n=t[n])),o.push(e),r.set(n,e)})),{regions:o,boundingRect:n.boundingRect||new sr(0,0,0,0),regionsMap:r}},t.prototype._parseToRegions=function(t){var e,n=this._mapName,i=this._geoJSON;try{e=i?T_(i,t):[]}catch(t){throw new Error("Invalid geoJson format\n"+t.message)}return function(t,e){if("china"===t){for(var n=0;n<e.length;n++)if(e[n].name===lT)return;e.push(new w_(lT,z(uT,(function(t){return{type:"polygon",exterior:t}})),sT))}}(n,e),E(e,(function(t){var e=t.name;!function(t,e){if("china"===t){var n=pT[e.name];if(n){var i=e.getCenter();i[0]+=n[0]/10.5,i[1]+=-n[1]/14,e.setCenter(i)}}}(n,t),function(t,e){"china"===t&&"台湾"===e.name&&e.geometries.push({type:"polygon",exterior:dT[0]})}(n,t);var i=this._specialAreas&&this._specialAreas[e];i&&t.transformTo(i.left,i.top,i.width,i.height)}),this),e},t.prototype.getMapForUser=function(){return{geoJson:this._geoJSON,geoJSON:this._geoJSON,specialAreas:this._specialAreas}},t}();function gT(t){for(var e,n=0;n<t.length;n++){var i=t[n].getBoundingRect();(e=e||i.clone()).union(i)}return e}var yT=ft(),vT=function(t,e,n){if(e.svg){var i=new aT(t,e.svg);yT.set(t,i)}else{var r=e.geoJson||e.geoJSON;r&&!e.features?n=e.specialAreas:r=e;i=new fT(t,r,n);yT.set(t,i)}},mT=function(t){return yT.get(t)},xT=function(t){var e=yT.get(t);return e&&"geoJSON"===e.type&&e.getMapForUser()},_T=function(t,e,n){var i=yT.get(t);if(i)return i.load(e,n)},bT=["rect","circle","line","ellipse","polygon","polyline","path"],wT=ft(bT),ST=ft(bT.concat(["g"])),MT=ft(bT.concat(["g"])),IT=So();function TT(t){var e=t.getItemStyle(),n=t.get("areaColor");return null!=n&&(e.fill=n),e}function CT(t){var e=t.style;e&&(e.stroke=e.stroke||e.fill,e.fill=null)}var DT=function(){function t(t){var e=new Cr;this.uid=gc("ec_map_draw"),this._controller=new AI(t.getZr()),this._controllerHost={target:e},this.group=e,e.add(this._regionsGroup=new Cr),e.add(this._svgGroup=new Cr)}return t.prototype.draw=function(t,e,n,i,r){var o="geo"===t.mainType,a=t.getData&&t.getData();o&&e.eachComponent({mainType:"series",subType:"map"},(function(e){a||e.getHostGeoModel()!==t||(a=e.getData())}));var s=t.coordinateSystem,l=this._regionsGroup,u=this.group,h=s.getTransformInfo(),c=h.raw,p=h.roam;!l.childAt(0)||r?(u.x=p.x,u.y=p.y,u.scaleX=p.scaleX,u.scaleY=p.scaleY,u.dirty()):rh(u,p,t);var d=a&&a.getVisual("visualMeta")&&a.getVisual("visualMeta").length>0,f={api:n,geo:s,mapOrGeoModel:t,data:a,isVisualEncodedByVisualMap:d,isGeo:o,transformInfoRaw:c};"geoJSON"===s.resourceType?this._buildGeoJSON(f):"geoSVG"===s.resourceType&&this._buildSVG(f),this._updateController(t,e,n),this._updateMapSelectHandler(t,l,n,i)},t.prototype._buildGeoJSON=function(t){var e=this._regionsGroupByName=ft(),n=ft(),i=this._regionsGroup,r=t.transformInfoRaw,o=t.mapOrGeoModel,a=t.data,s=t.geo.projection,l=s&&s.stream;function u(t,e){return e&&(t=e(t)),t&&[t[0]*r.scaleX+r.x,t[1]*r.scaleY+r.y]}function h(t){for(var e=[],n=!l&&s&&s.project,i=0;i<t.length;++i){var r=u(t[i],n);r&&e.push(r)}return e}function c(t){return{shape:{points:h(t)}}}i.removeAll(),E(t.geo.regions,(function(r){var h=r.name,p=e.get(h),d=n.get(h)||{},f=d.dataIdx,g=d.regionModel;p||(p=e.set(h,new Cr),i.add(p),f=a?a.indexOfName(h):null,g=t.isGeo?o.getRegionModel(h):a?a.getItemModel(f):null,n.set(h,{dataIdx:f,regionModel:g}));var y=[],v=[];E(r.geometries,(function(t){if("polygon"===t.type){var e=[t.exterior].concat(t.interiors||[]);l&&(e=RT(e,l)),E(e,(function(t){y.push(new Pu(c(t)))}))}else{var n=t.points;l&&(n=RT(n,l,!0)),E(n,(function(t){v.push(new Ru(c(t)))}))}}));var m=u(r.getCenter(),s&&s.project);function x(e,n){if(e.length){var i=new Yu({culling:!0,segmentIgnoreThreshold:1,shape:{paths:e}});p.add(i),AT(t,i,f,g),kT(t,i,h,g,o,f,m),n&&(CT(i),E(i.states,CT))}}x(y),x(v,!0)})),e.each((function(e,i){var r=n.get(i),a=r.dataIdx,s=r.regionModel;LT(t,e,i,s,o,a),PT(t,e,i,s,o),OT(t,e,i,s,o)}),this)},t.prototype._buildSVG=function(t){var e=t.geo.map,n=t.transformInfoRaw;this._svgGroup.x=n.x,this._svgGroup.y=n.y,this._svgGroup.scaleX=n.scaleX,this._svgGroup.scaleY=n.scaleY,this._svgResourceChanged(e)&&(this._freeSVG(),this._useSVG(e));var i=this._svgDispatcherMap=ft(),r=!1;E(this._svgGraphicRecord.named,(function(e){var n=e.name,o=t.mapOrGeoModel,a=t.data,s=e.svgNodeTagLower,l=e.el,u=a?a.indexOfName(n):null,h=o.getRegionModel(n);(null!=wT.get(s)&&l instanceof da&&AT(t,l,u,h),l instanceof da&&(l.culling=!0),l.z2EmphasisLift=0,e.namedFrom)||(null!=MT.get(s)&&kT(t,l,n,h,o,u,null),LT(t,l,n,h,o,u),PT(t,l,n,h,o),null!=ST.get(s)&&("self"===OT(t,l,n,h,o)&&(r=!0),(i.get(n)||i.set(n,[])).push(l)))}),this),this._enableBlurEntireSVG(r,t)},t.prototype._enableBlurEntireSVG=function(t,e){if(t&&e.isGeo){var n=e.mapOrGeoModel.getModel(["blur","itemStyle"]).getItemStyle().opacity;this._svgGraphicRecord.root.traverse((function(t){if(!t.isGroup){vl(t);var e=t.ensureState("blur").style||{};null==e.opacity&&null!=n&&(e.opacity=n),t.ensureState("emphasis")}}))}},t.prototype.remove=function(){this._regionsGroup.removeAll(),this._regionsGroupByName=null,this._svgGroup.removeAll(),this._freeSVG(),this._controller.dispose(),this._controllerHost=null},t.prototype.findHighDownDispatchers=function(t,e){if(null==t)return[];var n=e.coordinateSystem;if("geoJSON"===n.resourceType){var i=this._regionsGroupByName;if(i){var r=i.get(t);return r?[r]:[]}}else if("geoSVG"===n.resourceType)return this._svgDispatcherMap&&this._svgDispatcherMap.get(t)||[]},t.prototype._svgResourceChanged=function(t){return this._svgMapName!==t},t.prototype._useSVG=function(t){var e=mT(t);if(e&&"geoSVG"===e.type){var n=e.useGraphic(this.uid);this._svgGroup.add(n.root),this._svgGraphicRecord=n,this._svgMapName=t}},t.prototype._freeSVG=function(){var t=this._svgMapName;if(null!=t){var e=mT(t);e&&"geoSVG"===e.type&&e.freeGraphic(this.uid),this._svgGraphicRecord=null,this._svgDispatcherMap=null,this._svgGroup.removeAll(),this._svgMapName=null}},t.prototype._updateController=function(t,e,n){var i=t.coordinateSystem,r=this._controller,o=this._controllerHost;o.zoomLimit=t.get("scaleLimit"),o.zoom=i.getZoom(),r.enable(t.get("roam")||!1);var a=t.mainType;function s(){var e={type:"geoRoam",componentType:a};return e[a+"Id"]=t.id,e}r.off("pan").on("pan",(function(t){this._mouseDownFlag=!1,OI(o,t.dx,t.dy),n.dispatchAction(A(s(),{dx:t.dx,dy:t.dy,animation:{duration:0}}))}),this),r.off("zoom").on("zoom",(function(t){this._mouseDownFlag=!1,RI(o,t.scale,t.originX,t.originY),n.dispatchAction(A(s(),{zoom:t.scale,originX:t.originX,originY:t.originY,animation:{duration:0}}))}),this),r.setPointerChecker((function(e,r,o){return i.containPoint([r,o])&&!zI(e,n,t)}))},t.prototype.resetForLabelLayout=function(){this.group.traverse((function(t){var e=t.getTextContent();e&&(e.ignore=IT(e).ignore)}))},t.prototype._updateMapSelectHandler=function(t,e,n,i){var r=this;e.off("mousedown"),e.off("click"),t.get("selectedMode")&&(e.on("mousedown",(function(){r._mouseDownFlag=!0})),e.on("click",(function(t){r._mouseDownFlag&&(r._mouseDownFlag=!1)})))},t}();function AT(t,e,n,i){var r=i.getModel("itemStyle"),o=i.getModel(["emphasis","itemStyle"]),a=i.getModel(["blur","itemStyle"]),s=i.getModel(["select","itemStyle"]),l=TT(r),u=TT(o),h=TT(s),c=TT(a),p=t.data;if(p){var d=p.getItemVisual(n,"style"),f=p.getItemVisual(n,"decal");t.isVisualEncodedByVisualMap&&d.fill&&(l.fill=d.fill),f&&(l.decal=iv(f,t.api))}e.setStyle(l),e.style.strokeNoScale=!0,e.ensureState("emphasis").style=u,e.ensureState("select").style=h,e.ensureState("blur").style=c,vl(e)}function kT(t,e,n,i,r,o,a){var s=t.data,l=t.isGeo,u=s&&isNaN(s.get(s.mapDimension("value"),o)),h=s&&s.getItemLayout(o);if(l||u||h&&h.showLabel){var c=l?n:o,p=void 0;(!s||o>=0)&&(p=r);var d=a?{normal:{align:"center",verticalAlign:"middle"}}:null;Hh(e,Yh(i),{labelFetcher:p,labelDataIndex:c,defaultText:n},d);var f=e.getTextContent();if(f&&(IT(f).ignore=f.ignore,e.textConfig&&a)){var g=e.getBoundingRect().clone();e.textConfig.layoutRect=g,e.textConfig.position=[(a[0]-g.x)/g.width*100+"%",(a[1]-g.y)/g.height*100+"%"]}e.disableLabelAnimation=!0}else e.removeTextContent(),e.removeTextConfig(),e.disableLabelAnimation=null}function LT(t,e,n,i,r,o){t.data?t.data.setItemGraphicEl(o,e):Hs(e).eventData={componentType:"geo",componentIndex:r.componentIndex,geoIndex:r.componentIndex,name:n,region:i&&i.option||{}}}function PT(t,e,n,i,r){t.data||Eh({el:e,componentModel:r,itemName:n,itemTooltipOption:i.get("tooltip")})}function OT(t,e,n,i,r){e.highDownSilentOnTouch=!!r.get("selectedMode");var o=i.getModel("emphasis"),a=o.get("focus");return Rl(e,a,o.get("blurScope"),o.get("disabled")),t.isGeo&&function(t,e,n){var i=Hs(t);i.componentMainType=e.mainType,i.componentIndex=e.componentIndex,i.componentHighDownName=n}(e,r,n),a}function RT(t,e,n){var i,r=[];function o(){i=[]}function a(){i.length&&(r.push(i),i=[])}var s=e({polygonStart:o,polygonEnd:a,lineStart:o,lineEnd:a,point:function(t,e){isFinite(t)&&isFinite(e)&&i.push([t,e])},sphere:function(){}});return!n&&s.polygonStart(),E(t,(function(t){s.lineStart();for(var e=0;e<t.length;e++)s.point(t[e][0],t[e][1]);s.lineEnd()})),!n&&s.polygonEnd(),r}var NT=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n,i){if(!i||"mapToggleSelect"!==i.type||i.from!==this.uid){var r=this.group;if(r.removeAll(),!t.getHostGeoModel()){if(this._mapDraw&&i&&"geoRoam"===i.type&&this._mapDraw.resetForLabelLayout(),i&&"geoRoam"===i.type&&"series"===i.componentType&&i.seriesId===t.id)(o=this._mapDraw)&&r.add(o.group);else if(t.needsDrawMap){var o=this._mapDraw||new DT(n);r.add(o.group),o.draw(t,e,n,this,i),this._mapDraw=o}else this._mapDraw&&this._mapDraw.remove(),this._mapDraw=null;t.get("showLegendSymbol")&&e.getComponent("legend")&&this._renderSymbols(t,e,n)}}},e.prototype.remove=function(){this._mapDraw&&this._mapDraw.remove(),this._mapDraw=null,this.group.removeAll()},e.prototype.dispose=function(){this._mapDraw&&this._mapDraw.remove(),this._mapDraw=null},e.prototype._renderSymbols=function(t,e,n){var i=t.originalData,r=this.group;i.each(i.mapDimension("value"),(function(e,n){if(!isNaN(e)){var o=i.getItemLayout(n);if(o&&o.point){var a=o.point,s=o.offset,l=new hu({style:{fill:t.getData().getVisual("style").fill},shape:{cx:a[0]+9*s,cy:a[1],r:3},silent:!0,z2:8+(s?0:11)});if(!s){var u=t.mainSeries.getData(),h=i.getName(n),c=u.indexOfName(h),p=i.getItemModel(n),d=p.getModel("label"),f=u.getItemGraphicEl(c);Hh(l,Yh(p),{labelFetcher:{getFormattedLabel:function(e,n){return t.getFormattedLabel(c,n)}},defaultText:h}),l.disableLabelAnimation=!0,d.get("position")||l.setTextConfig({position:"bottom"}),f.onHoverStateChange=function(t){gl(l,t)}}r.add(l)}}}))},e.type="map",e}(xg),ET=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.needsDrawMap=!1,n.seriesGroup=[],n.getTooltipPosition=function(t){if(null!=t){var e=this.getData().getName(t),n=this.coordinateSystem,i=n.getRegion(e);return i&&n.dataToPoint(i.getCenter())}},n}return n(e,t),e.prototype.getInitialData=function(t){for(var e=lM(this,{coordDimensions:["value"],encodeDefaulter:H(Yp,this)}),n=ft(),i=[],r=0,o=e.count();r<o;r++){var a=e.getName(r);n.set(a,!0)}return E(_T(this.getMapType(),this.option.nameMap,this.option.nameProperty).regions,(function(t){var e=t.name;n.get(e)||i.push(e)})),e.appendValues([],i),e},e.prototype.getHostGeoModel=function(){var t=this.option.geoIndex;return null!=t?this.ecModel.getComponent("geo",t):null},e.prototype.getMapType=function(){return(this.getHostGeoModel()||this).option.map},e.prototype.getRawValue=function(t){var e=this.getData();return e.get(e.mapDimension("value"),t)},e.prototype.getRegionModel=function(t){var e=this.getData();return e.getItemModel(e.indexOfName(t))},e.prototype.formatTooltip=function(t,e,n){for(var i=this.getData(),r=this.getRawValue(t),o=i.getName(t),a=this.seriesGroup,s=[],l=0;l<a.length;l++){var u=a[l].originalData.indexOfName(o),h=i.mapDimension("value");isNaN(a[l].originalData.get(h,u))||s.push(a[l].name)}return Xf("section",{header:s.join(", "),noHeader:!s.length,blocks:[Xf("nameValue",{name:o,value:r})]})},e.prototype.setZoom=function(t){this.option.zoom=t},e.prototype.setCenter=function(t){this.option.center=t},e.prototype.getLegendIcon=function(t){var e=t.icon||"roundRect",n=Ly(e,0,0,t.itemWidth,t.itemHeight,t.itemStyle.fill);return n.setStyle(t.itemStyle),n.style.stroke="none",e.indexOf("empty")>-1&&(n.style.stroke=n.style.fill,n.style.fill="#fff",n.style.lineWidth=2),n},e.type="series.map",e.dependencies=["geo"],e.layoutMode="box",e.defaultOption={z:2,coordinateSystem:"geo",map:"",left:"center",top:"center",aspectScale:null,showLegendSymbol:!0,boundingCoords:null,center:null,zoom:1,scaleLimit:null,selectedMode:!0,label:{show:!1,color:"#000"},itemStyle:{borderWidth:.5,borderColor:"#444",areaColor:"#eee"},emphasis:{label:{show:!0,color:"rgb(100,0,0)"},itemStyle:{areaColor:"rgba(255,215,0,0.8)"}},select:{label:{show:!0,color:"rgb(100,0,0)"},itemStyle:{color:"rgba(255,215,0,0.8)"}},nameProperty:"name"},e}(sg);function zT(t){var e={};t.eachSeriesByType("map",(function(t){var n=t.getHostGeoModel(),i=n?"o"+n.id:"i"+t.getMapType();(e[i]=e[i]||[]).push(t)})),E(e,(function(t,e){for(var n,i,r,o=(n=z(t,(function(t){return t.getData()})),i=t[0].get("mapValueCalculation"),r={},E(n,(function(t){t.each(t.mapDimension("value"),(function(e,n){var i="ec-"+t.getName(n);r[i]=r[i]||[],isNaN(e)||r[i].push(e)}))})),n[0].map(n[0].mapDimension("value"),(function(t,e){for(var o="ec-"+n[0].getName(e),a=0,s=1/0,l=-1/0,u=r[o].length,h=0;h<u;h++)s=Math.min(s,r[o][h]),l=Math.max(l,r[o][h]),a+=r[o][h];return 0===u?NaN:"min"===i?s:"max"===i?l:"average"===i?a/u:a}))),a=0;a<t.length;a++)t[a].originalData=t[a].getData();for(a=0;a<t.length;a++)t[a].seriesGroup=t,t[a].needsDrawMap=0===a&&!t[a].getHostGeoModel(),t[a].setData(o.cloneShallow()),t[a].mainSeries=t[0]}))}function VT(t){var e={};t.eachSeriesByType("map",(function(n){var i=n.getMapType();if(!n.getHostGeoModel()&&!e[i]){var r={};E(n.seriesGroup,(function(e){var n=e.coordinateSystem,i=e.originalData;e.get("showLegendSymbol")&&t.getComponent("legend")&&i.each(i.mapDimension("value"),(function(t,e){var o=i.getName(e),a=n.getRegion(o);if(a&&!isNaN(t)){var s=r[o]||0,l=n.dataToPoint(a.getCenter());r[o]=s+1,i.setItemLayout(e,{point:l,offset:s})}}))}));var o=n.getData();o.each((function(t){var e=o.getName(t),n=o.getItemLayout(t)||{};n.showLabel=!r[e],o.setItemLayout(t,n)})),e[i]=!0}}))}var BT=Ft,FT=function(t){function e(e){var n=t.call(this)||this;return n.type="view",n.dimensions=["x","y"],n._roamTransformable=new qi,n._rawTransformable=new qi,n.name=e,n}return n(e,t),e.prototype.setBoundingRect=function(t,e,n,i){return this._rect=new sr(t,e,n,i),this._rect},e.prototype.getBoundingRect=function(){return this._rect},e.prototype.setViewRect=function(t,e,n,i){this._transformTo(t,e,n,i),this._viewRect=new sr(t,e,n,i)},e.prototype._transformTo=function(t,e,n,i){var r=this.getBoundingRect(),o=this._rawTransformable;o.transform=r.calculateTransform(new sr(t,e,n,i));var a=o.parent;o.parent=null,o.decomposeTransform(),o.parent=a,this._updateTransform()},e.prototype.setCenter=function(t){t&&(this._center=t,this._updateCenterAndZoom())},e.prototype.setZoom=function(t){t=t||1;var e=this.zoomLimit;e&&(null!=e.max&&(t=Math.min(e.max,t)),null!=e.min&&(t=Math.max(e.min,t))),this._zoom=t,this._updateCenterAndZoom()},e.prototype.getDefaultCenter=function(){var t=this.getBoundingRect();return[t.x+t.width/2,t.y+t.height/2]},e.prototype.getCenter=function(){return this._center||this.getDefaultCenter()},e.prototype.getZoom=function(){return this._zoom||1},e.prototype.getRoamTransform=function(){return this._roamTransformable.getLocalTransform()},e.prototype._updateCenterAndZoom=function(){var t=this._rawTransformable.getLocalTransform(),e=this._roamTransformable,n=this.getDefaultCenter(),i=this.getCenter(),r=this.getZoom();i=Ft([],i,t),n=Ft([],n,t),e.originX=i[0],e.originY=i[1],e.x=n[0]-i[0],e.y=n[1]-i[1],e.scaleX=e.scaleY=r,this._updateTransform()},e.prototype._updateTransform=function(){var t=this._roamTransformable,e=this._rawTransformable;e.parent=t,t.updateTransform(),e.updateTransform(),Ri(this.transform||(this.transform=[]),e.transform||[1,0,0,1,0,0]),this._rawTransform=e.getLocalTransform(),this.invTransform=this.invTransform||[],Bi(this.invTransform,this.transform),this.decomposeTransform()},e.prototype.getTransformInfo=function(){var t=this._rawTransformable,e=this._roamTransformable,n=new qi;return n.transform=e.transform,n.decomposeTransform(),{roam:{x:n.x,y:n.y,scaleX:n.scaleX,scaleY:n.scaleY},raw:{x:t.x,y:t.y,scaleX:t.scaleX,scaleY:t.scaleY}}},e.prototype.getViewRect=function(){return this._viewRect},e.prototype.getViewRectAfterRoam=function(){var t=this.getBoundingRect().clone();return t.applyTransform(this.transform),t},e.prototype.dataToPoint=function(t,e,n){var i=e?this._rawTransform:this.transform;return n=n||[],i?BT(n,t,i):St(n,t)},e.prototype.pointToData=function(t){var e=this.invTransform;return e?BT([],t,e):[t[0],t[1]]},e.prototype.convertToPixel=function(t,e,n){var i=GT(e);return i===this?i.dataToPoint(n):null},e.prototype.convertFromPixel=function(t,e,n){var i=GT(e);return i===this?i.pointToData(n):null},e.prototype.containPoint=function(t){return this.getViewRectAfterRoam().contain(t[0],t[1])},e.dimensions=["x","y"],e}(qi);function GT(t){var e=t.seriesModel;return e?e.coordinateSystem:null}var WT={geoJSON:{aspectScale:.75,invertLongitute:!0},geoSVG:{aspectScale:1,invertLongitute:!1}},HT=["lng","lat"],YT=function(t){function e(e,n,i){var r=t.call(this,e)||this;r.dimensions=HT,r.type="geo",r._nameCoordMap=ft(),r.map=n;var o,a=i.projection,s=_T(n,i.nameMap,i.nameProperty),l=mT(n),u=(r.resourceType=l?l.type:null,r.regions=s.regions),h=WT[l.type];if(r._regionsMap=s.regionsMap,r.regions=s.regions,r.projection=a,a)for(var c=0;c<u.length;c++){var p=u[c].getBoundingRect(a);(o=o||p.clone()).union(p)}else o=s.boundingRect;return r.setBoundingRect(o.x,o.y,o.width,o.height),r.aspectScale=a?1:rt(i.aspectScale,h.aspectScale),r._invertLongitute=!a&&h.invertLongitute,r}return n(e,t),e.prototype._transformTo=function(t,e,n,i){var r=this.getBoundingRect(),o=this._invertLongitute;r=r.clone(),o&&(r.y=-r.y-r.height);var a=this._rawTransformable;a.transform=r.calculateTransform(new sr(t,e,n,i));var s=a.parent;a.parent=null,a.decomposeTransform(),a.parent=s,o&&(a.scaleY=-a.scaleY),this._updateTransform()},e.prototype.getRegion=function(t){return this._regionsMap.get(t)},e.prototype.getRegionByCoord=function(t){for(var e=this.regions,n=0;n<e.length;n++){var i=e[n];if("geoJSON"===i.type&&i.contain(t))return e[n]}},e.prototype.addGeoCoord=function(t,e){this._nameCoordMap.set(t,e)},e.prototype.getGeoCoord=function(t){var e=this._regionsMap.get(t);return this._nameCoordMap.get(t)||e&&e.getCenter()},e.prototype.dataToPoint=function(t,e,n){if(X(t)&&(t=this.getGeoCoord(t)),t){var i=this.projection;return i&&(t=i.project(t)),t&&this.projectedToPoint(t)}},e.prototype.pointToData=function(t){var e=this.projection;return e&&(t=e.unproject(t)),t&&this.pointToProjected(t)},e.prototype.pointToProjected=function(e){return t.prototype.pointToData.call(this,e)},e.prototype.projectedToPoint=function(e,n,i){return t.prototype.dataToPoint.call(this,e,n,i)},e.prototype.convertToPixel=function(t,e,n){var i=UT(e);return i===this?i.dataToPoint(n):null},e.prototype.convertFromPixel=function(t,e,n){var i=UT(e);return i===this?i.pointToData(n):null},e}(FT);function UT(t){var e=t.geoModel,n=t.seriesModel;return e?e.coordinateSystem:n?n.coordinateSystem||(n.getReferringComponents("geo",Co).models[0]||{}).coordinateSystem:null}function XT(t,e){var n=t.get("boundingCoords");if(null!=n){var i=n[0],r=n[1];if(isFinite(i[0])&&isFinite(i[1])&&isFinite(r[0])&&isFinite(r[1])){var o=this.projection;if(o){var a=i[0],s=i[1],l=r[0],u=r[1];i=[1/0,1/0],r=[-1/0,-1/0];var h=function(t,e,n,a){for(var s=n-t,l=a-e,u=0;u<=100;u++){var h=u/100,c=o.project([t+s*h,e+l*h]);Gt(i,i,c),Wt(r,r,c)}};h(a,s,l,s),h(l,s,l,u),h(l,u,a,u),h(a,u,l,s)}this.setBoundingRect(i[0],i[1],r[0]-i[0],r[1]-i[1])}else 0}var c,p,d,f=this.getBoundingRect(),g=t.get("layoutCenter"),y=t.get("layoutSize"),v=e.getWidth(),m=e.getHeight(),x=f.width/f.height*this.aspectScale,_=!1;if(g&&y&&(c=[Er(g[0],v),Er(g[1],m)],p=Er(y,Math.min(v,m)),isNaN(c[0])||isNaN(c[1])||isNaN(p)||(_=!0)),_)d={},x>1?(d.width=p,d.height=p/x):(d.height=p,d.width=p*x),d.y=c[1]-d.height/2,d.x=c[0]-d.width/2;else{var b=t.getBoxLayoutParams();b.aspect=x,d=xp(b,{width:v,height:m})}this.setViewRect(d.x,d.y,d.width,d.height),this.setCenter(t.get("center")),this.setZoom(t.get("zoom"))}R(YT,FT);var ZT=new(function(){function t(){this.dimensions=HT}return t.prototype.create=function(t,e){var n=[];function i(t){return{nameProperty:t.get("nameProperty"),aspectScale:t.get("aspectScale"),projection:t.get("projection")}}t.eachComponent("geo",(function(t,r){var o=t.get("map"),a=new YT(o+r,o,A({nameMap:t.get("nameMap")},i(t)));a.zoomLimit=t.get("scaleLimit"),n.push(a),t.coordinateSystem=a,a.model=t,a.resize=XT,a.resize(t,e)})),t.eachSeries((function(t){if("geo"===t.get("coordinateSystem")){var e=t.get("geoIndex")||0;t.coordinateSystem=n[e]}}));var r={};return t.eachSeriesByType("map",(function(t){if(!t.getHostGeoModel()){var e=t.getMapType();r[e]=r[e]||[],r[e].push(t)}})),E(r,(function(t,r){var o=z(t,(function(t){return t.get("nameMap")})),a=new YT(r,r,A({nameMap:D(o)},i(t[0])));a.zoomLimit=it.apply(null,z(t,(function(t){return t.get("scaleLimit")}))),n.push(a),a.resize=XT,a.resize(t[0],e),E(t,(function(t){t.coordinateSystem=a,function(t,e){E(e.get("geoCoord"),(function(e,n){t.addGeoCoord(n,e)}))}(a,t)}))})),n},t.prototype.getFilledRegions=function(t,e,n,i){for(var r=(t||[]).slice(),o=ft(),a=0;a<r.length;a++)o.set(r[a].name,r[a]);return E(_T(e,n,i).regions,(function(t){var e=t.name;!o.get(e)&&r.push({name:e})})),r},t}()),jT=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.init=function(t,e,n){var i=mT(t.map);if(i&&"geoJSON"===i.type){var r=t.itemStyle=t.itemStyle||{};"color"in r||(r.color="#eee")}this.mergeDefaultAndTheme(t,n),co(t,"label",["show"])},e.prototype.optionUpdated=function(){var t=this,e=this.option;e.regions=ZT.getFilledRegions(e.regions,e.map,e.nameMap,e.nameProperty);var n={};this._optionModelMap=V(e.regions||[],(function(e,i){var r=i.name;return r&&(e.set(r,new dc(i,t,t.ecModel)),i.selected&&(n[r]=!0)),e}),ft()),e.selectedMap||(e.selectedMap=n)},e.prototype.getRegionModel=function(t){return this._optionModelMap.get(t)||new dc(null,this,this.ecModel)},e.prototype.getFormattedLabel=function(t,e){var n=this.getRegionModel(t),i="normal"===e?n.get(["label","formatter"]):n.get(["emphasis","label","formatter"]),r={name:t};return U(i)?(r.status=e,i(r)):X(i)?i.replace("{a}",null!=t?t:""):void 0},e.prototype.setZoom=function(t){this.option.zoom=t},e.prototype.setCenter=function(t){this.option.center=t},e.prototype.select=function(t){var e=this.option,n=e.selectedMode;n&&("multiple"!==n&&(e.selectedMap=null),(e.selectedMap||(e.selectedMap={}))[t]=!0)},e.prototype.unSelect=function(t){var e=this.option.selectedMap;e&&(e[t]=!1)},e.prototype.toggleSelected=function(t){this[this.isSelected(t)?"unSelect":"select"](t)},e.prototype.isSelected=function(t){var e=this.option.selectedMap;return!(!e||!e[t])},e.type="geo",e.layoutMode="box",e.defaultOption={z:0,show:!0,left:"center",top:"center",aspectScale:null,silent:!1,map:"",boundingCoords:null,center:null,zoom:1,scaleLimit:null,label:{show:!1,color:"#000"},itemStyle:{borderWidth:.5,borderColor:"#444"},emphasis:{label:{show:!0,color:"rgb(100,0,0)"},itemStyle:{color:"rgba(255,215,0,0.8)"}},select:{label:{show:!0,color:"rgb(100,0,0)"},itemStyle:{color:"rgba(255,215,0,0.8)"}},regions:[]},e}(Tp);function qT(t,e){return t.pointToProjected?t.pointToProjected(e):t.pointToData(e)}function KT(t,e,n){var i=t.getZoom(),r=t.getCenter(),o=e.zoom,a=t.projectedToPoint?t.projectedToPoint(r):t.dataToPoint(r);if(null!=e.dx&&null!=e.dy&&(a[0]-=e.dx,a[1]-=e.dy,t.setCenter(qT(t,a))),null!=o){if(n){var s=n.min||0,l=n.max||1/0;o=Math.max(Math.min(i*o,l),s)/i}t.scaleX*=o,t.scaleY*=o;var u=(e.originX-t.x)*(o-1),h=(e.originY-t.y)*(o-1);t.x-=u,t.y-=h,t.updateTransform(),t.setCenter(qT(t,a)),t.setZoom(o*i)}return{center:t.getCenter(),zoom:t.getZoom()}}var $T=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.focusBlurEnabled=!0,n}return n(e,t),e.prototype.init=function(t,e){this._api=e},e.prototype.render=function(t,e,n,i){if(this._model=t,!t.get("show"))return this._mapDraw&&this._mapDraw.remove(),void(this._mapDraw=null);this._mapDraw||(this._mapDraw=new DT(n));var r=this._mapDraw;r.draw(t,e,n,this,i),r.group.on("click",this._handleRegionClick,this),r.group.silent=t.get("silent"),this.group.add(r.group),this.updateSelectStatus(t,e,n)},e.prototype._handleRegionClick=function(t){var e;xy(t.target,(function(t){return null!=(e=Hs(t).eventData)}),!0),e&&this._api.dispatchAction({type:"geoToggleSelect",geoId:this._model.id,name:e.name})},e.prototype.updateSelectStatus=function(t,e,n){var i=this;this._mapDraw.group.traverse((function(t){var e=Hs(t).eventData;if(e)return i._model.isSelected(e.name)?n.enterSelect(t):n.leaveSelect(t),!0}))},e.prototype.findHighDownDispatchers=function(t){return this._mapDraw&&this._mapDraw.findHighDownDispatchers(t,this._model)},e.prototype.dispose=function(){this._mapDraw&&this._mapDraw.remove()},e.type="geo",e}(gg);function JT(t,e,n){vT(t,e,n)}function QT(t){function e(e,n){n.update="geo:updateSelectStatus",t.registerAction(n,(function(t,n){var i={},r=[];return n.eachComponent({mainType:"geo",query:t},(function(n){n[e](t.name),E(n.coordinateSystem.regions,(function(t){i[t.name]=n.isSelected(t.name)||!1}));var o=[];E(i,(function(t,e){i[e]&&o.push(e)})),r.push({geoIndex:n.componentIndex,name:o})})),{selected:i,allSelected:r,name:t.name}}))}t.registerCoordinateSystem("geo",ZT),t.registerComponentModel(jT),t.registerComponentView($T),t.registerImpl("registerMap",JT),t.registerImpl("getMap",(function(t){return xT(t)})),e("toggleSelected",{type:"geoToggleSelect",event:"geoselectchanged"}),e("select",{type:"geoSelect",event:"geoselected"}),e("unSelect",{type:"geoUnSelect",event:"geounselected"}),t.registerAction({type:"geoRoam",event:"geoRoam",update:"updateTransform"},(function(t,e){var n=t.componentType||"series";e.eachComponent({mainType:n,query:t},(function(e){var i=e.coordinateSystem;if("geo"===i.type){var r=KT(i,t,e.get("scaleLimit"));e.setCenter&&e.setCenter(r.center),e.setZoom&&e.setZoom(r.zoom),"series"===n&&E(e.seriesGroup,(function(t){t.setCenter(r.center),t.setZoom(r.zoom)}))}}))}))}function tC(t,e){var n=t.isExpand?t.children:[],i=t.parentNode.children,r=t.hierNode.i?i[t.hierNode.i-1]:null;if(n.length){!function(t){var e=t.children,n=e.length,i=0,r=0;for(;--n>=0;){var o=e[n];o.hierNode.prelim+=i,o.hierNode.modifier+=i,r+=o.hierNode.change,i+=o.hierNode.shift+r}}(t);var o=(n[0].hierNode.prelim+n[n.length-1].hierNode.prelim)/2;r?(t.hierNode.prelim=r.hierNode.prelim+e(t,r),t.hierNode.modifier=t.hierNode.prelim-o):t.hierNode.prelim=o}else r&&(t.hierNode.prelim=r.hierNode.prelim+e(t,r));t.parentNode.hierNode.defaultAncestor=function(t,e,n,i){if(e){for(var r=t,o=t,a=o.parentNode.children[0],s=e,l=r.hierNode.modifier,u=o.hierNode.modifier,h=a.hierNode.modifier,c=s.hierNode.modifier;s=rC(s),o=oC(o),s&&o;){r=rC(r),a=oC(a),r.hierNode.ancestor=t;var p=s.hierNode.prelim+c-o.hierNode.prelim-u+i(s,o);p>0&&(sC(aC(s,t,n),t,p),u+=p,l+=p),c+=s.hierNode.modifier,u+=o.hierNode.modifier,l+=r.hierNode.modifier,h+=a.hierNode.modifier}s&&!rC(r)&&(r.hierNode.thread=s,r.hierNode.modifier+=c-l),o&&!oC(a)&&(a.hierNode.thread=o,a.hierNode.modifier+=u-h,n=t)}return n}(t,r,t.parentNode.hierNode.defaultAncestor||i[0],e)}function eC(t){var e=t.hierNode.prelim+t.parentNode.hierNode.modifier;t.setLayout({x:e},!0),t.hierNode.modifier+=t.parentNode.hierNode.modifier}function nC(t){return arguments.length?t:lC}function iC(t,e){return t-=Math.PI/2,{x:e*Math.cos(t),y:e*Math.sin(t)}}function rC(t){var e=t.children;return e.length&&t.isExpand?e[e.length-1]:t.hierNode.thread}function oC(t){var e=t.children;return e.length&&t.isExpand?e[0]:t.hierNode.thread}function aC(t,e,n){return t.hierNode.ancestor.parentNode===e.parentNode?t.hierNode.ancestor:n}function sC(t,e,n){var i=n/(e.hierNode.i-t.hierNode.i);e.hierNode.change-=i,e.hierNode.shift+=n,e.hierNode.modifier+=n,e.hierNode.prelim+=n,t.hierNode.change+=i}function lC(t,e){return t.parentNode===e.parentNode?1:2}var uC=function(){this.parentPoint=[],this.childPoints=[]},hC=function(t){function e(e){return t.call(this,e)||this}return n(e,t),e.prototype.getDefaultStyle=function(){return{stroke:"#000",fill:null}},e.prototype.getDefaultShape=function(){return new uC},e.prototype.buildPath=function(t,e){var n=e.childPoints,i=n.length,r=e.parentPoint,o=n[0],a=n[i-1];if(1===i)return t.moveTo(r[0],r[1]),void t.lineTo(o[0],o[1]);var s=e.orient,l="TB"===s||"BT"===s?0:1,u=1-l,h=Er(e.forkPosition,1),c=[];c[l]=r[l],c[u]=r[u]+(a[u]-r[u])*h,t.moveTo(r[0],r[1]),t.lineTo(c[0],c[1]),t.moveTo(o[0],o[1]),c[l]=o[l],t.lineTo(c[0],c[1]),c[l]=a[l],t.lineTo(c[0],c[1]),t.lineTo(a[0],a[1]);for(var p=1;p<i-1;p++){var d=n[p];t.moveTo(d[0],d[1]),c[l]=d[l],t.lineTo(c[0],c[1])}},e}(gs),cC=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n._mainGroup=new Cr,n}return n(e,t),e.prototype.init=function(t,e){this._controller=new AI(e.getZr()),this._controllerHost={target:this.group},this.group.add(this._mainGroup)},e.prototype.render=function(t,e,n){var i=t.getData(),r=t.layoutInfo,o=this._mainGroup;"radial"===t.get("layout")?(o.x=r.x+r.width/2,o.y=r.y+r.height/2):(o.x=r.x,o.y=r.y),this._updateViewCoordSys(t),this._updateController(t,e,n);var a=this._data;i.diff(a).add((function(e){pC(i,e)&&dC(i,e,null,o,t)})).update((function(e,n){var r=a.getItemGraphicEl(n);pC(i,e)?dC(i,e,r,o,t):r&&yC(a,n,r,o,t)})).remove((function(e){var n=a.getItemGraphicEl(e);n&&yC(a,e,n,o,t)})).execute(),this._nodeScaleRatio=t.get("nodeScaleRatio"),this._updateNodeAndLinkScale(t),!0===t.get("expandAndCollapse")&&i.eachItemGraphicEl((function(e,i){e.off("click").on("click",(function(){n.dispatchAction({type:"treeExpandAndCollapse",seriesId:t.id,dataIndex:i})}))})),this._data=i},e.prototype._updateViewCoordSys=function(t){var e=t.getData(),n=[];e.each((function(t){var i=e.getItemLayout(t);!i||isNaN(i.x)||isNaN(i.y)||n.push([+i.x,+i.y])}));var i=[],r=[];Ma(n,i,r);var o=this._min,a=this._max;r[0]-i[0]==0&&(i[0]=o?o[0]:i[0]-1,r[0]=a?a[0]:r[0]+1),r[1]-i[1]==0&&(i[1]=o?o[1]:i[1]-1,r[1]=a?a[1]:r[1]+1);var s=t.coordinateSystem=new FT;s.zoomLimit=t.get("scaleLimit"),s.setBoundingRect(i[0],i[1],r[0]-i[0],r[1]-i[1]),s.setCenter(t.get("center")),s.setZoom(t.get("zoom")),this.group.attr({x:s.x,y:s.y,scaleX:s.scaleX,scaleY:s.scaleY}),this._min=i,this._max=r},e.prototype._updateController=function(t,e,n){var i=this,r=this._controller,o=this._controllerHost,a=this.group;r.setPointerChecker((function(e,i,r){var o=a.getBoundingRect();return o.applyTransform(a.transform),o.contain(i,r)&&!zI(e,n,t)})),r.enable(t.get("roam")),o.zoomLimit=t.get("scaleLimit"),o.zoom=t.coordinateSystem.getZoom(),r.off("pan").off("zoom").on("pan",(function(e){OI(o,e.dx,e.dy),n.dispatchAction({seriesId:t.id,type:"treeRoam",dx:e.dx,dy:e.dy})})).on("zoom",(function(e){RI(o,e.scale,e.originX,e.originY),n.dispatchAction({seriesId:t.id,type:"treeRoam",zoom:e.scale,originX:e.originX,originY:e.originY}),i._updateNodeAndLinkScale(t),n.updateLabelLayout()}))},e.prototype._updateNodeAndLinkScale=function(t){var e=t.getData(),n=this._getNodeGlobalScale(t);e.eachItemGraphicEl((function(t,e){t.setSymbolScale(n)}))},e.prototype._getNodeGlobalScale=function(t){var e=t.coordinateSystem;if("view"!==e.type)return 1;var n=this._nodeScaleRatio,i=e.scaleX||1;return((e.getZoom()-1)*n+1)/i},e.prototype.dispose=function(){this._controller&&this._controller.dispose(),this._controllerHost=null},e.prototype.remove=function(){this._mainGroup.removeAll(),this._data=null},e.type="tree",e}(xg);function pC(t,e){var n=t.getItemLayout(e);return n&&!isNaN(n.x)&&!isNaN(n.y)}function dC(t,e,n,i,r){var o=!n,a=t.tree.getNodeByDataIndex(e),s=a.getModel(),l=a.getVisual("style").fill,u=!1===a.isExpand&&0!==a.children.length?l:"#fff",h=t.tree.root,c=a.parentNode===h?a:a.parentNode||a,p=t.getItemGraphicEl(c.dataIndex),d=c.getLayout(),f=p?{x:p.__oldX,y:p.__oldY,rawX:p.__radialOldRawX,rawY:p.__radialOldRawY}:d,g=a.getLayout();o?((n=new Hw(t,e,null,{symbolInnerColor:u,useNameLabel:!0})).x=f.x,n.y=f.y):n.updateData(t,e,null,{symbolInnerColor:u,useNameLabel:!0}),n.__radialOldRawX=n.__radialRawX,n.__radialOldRawY=n.__radialRawY,n.__radialRawX=g.rawX,n.__radialRawY=g.rawY,i.add(n),t.setItemGraphicEl(e,n),n.__oldX=n.x,n.__oldY=n.y,rh(n,{x:g.x,y:g.y},r);var y=n.getSymbolPath();if("radial"===r.get("layout")){var v=h.children[0],m=v.getLayout(),x=v.children.length,_=void 0,b=void 0;if(g.x===m.x&&!0===a.isExpand){var w={x:(v.children[0].getLayout().x+v.children[x-1].getLayout().x)/2,y:(v.children[0].getLayout().y+v.children[x-1].getLayout().y)/2};(_=Math.atan2(w.y-m.y,w.x-m.x))<0&&(_=2*Math.PI+_),(b=w.x<m.x)&&(_-=Math.PI)}else(_=Math.atan2(g.y-m.y,g.x-m.x))<0&&(_=2*Math.PI+_),0===a.children.length||0!==a.children.length&&!1===a.isExpand?(b=g.x<m.x)&&(_-=Math.PI):(b=g.x>m.x)||(_-=Math.PI);var S=b?"left":"right",M=s.getModel("label"),I=M.get("rotate"),T=I*(Math.PI/180),C=y.getTextContent();C&&(y.setTextConfig({position:M.get("position")||S,rotation:null==I?-_:T,origin:"center"}),C.setStyle("verticalAlign","middle"))}var D=s.get(["emphasis","focus"]),A="ancestor"===D?a.getAncestorsIndices():"descendant"===D?a.getDescendantIndices():null;A&&(Hs(n).focus=A),function(t,e,n,i,r,o,a,s){var l=e.getModel(),u=t.get("edgeShape"),h=t.get("layout"),c=t.getOrient(),p=t.get(["lineStyle","curveness"]),d=t.get("edgeForkPosition"),f=l.getModel("lineStyle").getLineStyle(),g=i.__edge;if("curve"===u)e.parentNode&&e.parentNode!==n&&(g||(g=i.__edge=new Gu({shape:vC(h,c,p,r,r)})),rh(g,{shape:vC(h,c,p,o,a)},t));else if("polyline"===u)if("orthogonal"===h){if(e!==n&&e.children&&0!==e.children.length&&!0===e.isExpand){for(var y=e.children,v=[],m=0;m<y.length;m++){var x=y[m].getLayout();v.push([x.x,x.y])}g||(g=i.__edge=new hC({shape:{parentPoint:[a.x,a.y],childPoints:[[a.x,a.y]],orient:c,forkPosition:d}})),rh(g,{shape:{parentPoint:[a.x,a.y],childPoints:v}},t)}}else 0;g&&(g.useStyle(k({strokeNoScale:!0,fill:null},f)),Vl(g,l,"lineStyle"),vl(g),s.add(g))}(r,a,h,n,f,d,g,i),n.__edge&&(n.onHoverStateChange=function(e){if("blur"!==e){var i=a.parentNode&&t.getItemGraphicEl(a.parentNode.dataIndex);i&&1===i.hoverState||gl(n.__edge,e)}})}function fC(t,e,n,i,r){var o=gC(e.tree.root,t),a=o.source,s=o.sourceLayout,l=e.getItemGraphicEl(t.dataIndex);if(l){var u=e.getItemGraphicEl(a.dataIndex).__edge,h=l.__edge||(!1===a.isExpand||1===a.children.length?u:void 0),c=i.get("edgeShape"),p=i.get("layout"),d=i.get("orient"),f=i.get(["lineStyle","curveness"]);h&&("curve"===c?sh(h,{shape:vC(p,d,f,s,s),style:{opacity:0}},i,{cb:function(){n.remove(h)},removeOpt:r}):"polyline"===c&&"orthogonal"===i.get("layout")&&sh(h,{shape:{parentPoint:[s.x,s.y],childPoints:[[s.x,s.y]]},style:{opacity:0}},i,{cb:function(){n.remove(h)},removeOpt:r}))}}function gC(t,e){for(var n,i=e.parentNode===t?e:e.parentNode||e;null==(n=i.getLayout());)i=i.parentNode===t?i:i.parentNode||i;return{source:i,sourceLayout:n}}function yC(t,e,n,i,r){var o=t.tree.getNodeByDataIndex(e),a=gC(t.tree.root,o).sourceLayout,s={duration:r.get("animationDurationUpdate"),easing:r.get("animationEasingUpdate")};sh(n,{x:a.x+1,y:a.y+1},r,{cb:function(){i.remove(n),t.setItemGraphicEl(e,null)},removeOpt:s}),n.fadeOut(null,t.hostModel,{fadeLabel:!0,animation:s}),o.children.forEach((function(e){fC(e,t,i,r,s)})),fC(o,t,i,r,s)}function vC(t,e,n,i,r){var o,a,s,l,u,h,c,p;if("radial"===t){u=i.rawX,c=i.rawY,h=r.rawX,p=r.rawY;var d=iC(u,c),f=iC(u,c+(p-c)*n),g=iC(h,p+(c-p)*n),y=iC(h,p);return{x1:d.x||0,y1:d.y||0,x2:y.x||0,y2:y.y||0,cpx1:f.x||0,cpy1:f.y||0,cpx2:g.x||0,cpy2:g.y||0}}return u=i.x,c=i.y,h=r.x,p=r.y,"LR"!==e&&"RL"!==e||(o=u+(h-u)*n,a=c,s=h+(u-h)*n,l=p),"TB"!==e&&"BT"!==e||(o=u,a=c+(p-c)*n,s=h,l=p+(c-p)*n),{x1:u,y1:c,x2:h,y2:p,cpx1:o,cpy1:a,cpx2:s,cpy2:l}}var mC=So();function xC(t){var e=t.mainData,n=t.datas;n||(n={main:e},t.datasAttr={main:"data"}),t.datas=t.mainData=null,IC(e,n,t),E(n,(function(n){E(e.TRANSFERABLE_METHODS,(function(e){n.wrapMethod(e,H(_C,t))}))})),e.wrapMethod("cloneShallow",H(wC,t)),E(e.CHANGABLE_METHODS,(function(n){e.wrapMethod(n,H(bC,t))})),lt(n[e.dataType]===e)}function _C(t,e){if(mC(i=this).mainData===i){var n=A({},mC(this).datas);n[this.dataType]=e,IC(e,n,t)}else TC(e,this.dataType,mC(this).mainData,t);var i;return e}function bC(t,e){return t.struct&&t.struct.update(),e}function wC(t,e){return E(mC(e).datas,(function(n,i){n!==e&&TC(n.cloneShallow(),i,e,t)})),e}function SC(t){var e=mC(this).mainData;return null==t||null==e?e:mC(e).datas[t]}function MC(){var t=mC(this).mainData;return null==t?[{data:t}]:z(G(mC(t).datas),(function(e){return{type:e,data:mC(t).datas[e]}}))}function IC(t,e,n){mC(t).datas={},E(e,(function(e,i){TC(e,i,t,n)}))}function TC(t,e,n,i){mC(n).datas[e]=t,mC(t).mainData=n,t.dataType=e,i.struct&&(t[i.structAttr]=i.struct,i.struct[i.datasAttr[e]]=t),t.getLinkedData=SC,t.getLinkedDataAll=MC}var CC=function(){function t(t,e){this.depth=0,this.height=0,this.dataIndex=-1,this.children=[],this.viewChildren=[],this.isExpand=!1,this.name=t||"",this.hostTree=e}return t.prototype.isRemoved=function(){return this.dataIndex<0},t.prototype.eachNode=function(t,e,n){U(t)&&(n=e,e=t,t=null),X(t=t||{})&&(t={order:t});var i,r=t.order||"preorder",o=this[t.attr||"children"];"preorder"===r&&(i=e.call(n,this));for(var a=0;!i&&a<o.length;a++)o[a].eachNode(t,e,n);"postorder"===r&&e.call(n,this)},t.prototype.updateDepthAndHeight=function(t){var e=0;this.depth=t;for(var n=0;n<this.children.length;n++){var i=this.children[n];i.updateDepthAndHeight(t+1),i.height>e&&(e=i.height)}this.height=e+1},t.prototype.getNodeById=function(t){if(this.getId()===t)return this;for(var e=0,n=this.children,i=n.length;e<i;e++){var r=n[e].getNodeById(t);if(r)return r}},t.prototype.contains=function(t){if(t===this)return!0;for(var e=0,n=this.children,i=n.length;e<i;e++){var r=n[e].contains(t);if(r)return r}},t.prototype.getAncestors=function(t){for(var e=[],n=t?this:this.parentNode;n;)e.push(n),n=n.parentNode;return e.reverse(),e},t.prototype.getAncestorsIndices=function(){for(var t=[],e=this;e;)t.push(e.dataIndex),e=e.parentNode;return t.reverse(),t},t.prototype.getDescendantIndices=function(){var t=[];return this.eachNode((function(e){t.push(e.dataIndex)})),t},t.prototype.getValue=function(t){var e=this.hostTree.data;return e.getStore().get(e.getDimensionIndex(t||"value"),this.dataIndex)},t.prototype.setLayout=function(t,e){this.dataIndex>=0&&this.hostTree.data.setItemLayout(this.dataIndex,t,e)},t.prototype.getLayout=function(){return this.hostTree.data.getItemLayout(this.dataIndex)},t.prototype.getModel=function(t){if(!(this.dataIndex<0))return this.hostTree.data.getItemModel(this.dataIndex).getModel(t)},t.prototype.getLevelModel=function(){return(this.hostTree.levelModels||[])[this.depth]},t.prototype.setVisual=function(t,e){this.dataIndex>=0&&this.hostTree.data.setItemVisual(this.dataIndex,t,e)},t.prototype.getVisual=function(t){return this.hostTree.data.getItemVisual(this.dataIndex,t)},t.prototype.getRawIndex=function(){return this.hostTree.data.getRawIndex(this.dataIndex)},t.prototype.getId=function(){return this.hostTree.data.getId(this.dataIndex)},t.prototype.getChildIndex=function(){if(this.parentNode){for(var t=this.parentNode.children,e=0;e<t.length;++e)if(t[e]===this)return e;return-1}return-1},t.prototype.isAncestorOf=function(t){for(var e=t.parentNode;e;){if(e===this)return!0;e=e.parentNode}return!1},t.prototype.isDescendantOf=function(t){return t!==this&&t.isAncestorOf(this)},t}(),DC=function(){function t(t){this.type="tree",this._nodes=[],this.hostModel=t}return t.prototype.eachNode=function(t,e,n){this.root.eachNode(t,e,n)},t.prototype.getNodeByDataIndex=function(t){var e=this.data.getRawIndex(t);return this._nodes[e]},t.prototype.getNodeById=function(t){return this.root.getNodeById(t)},t.prototype.update=function(){for(var t=this.data,e=this._nodes,n=0,i=e.length;n<i;n++)e[n].dataIndex=-1;for(n=0,i=t.count();n<i;n++)e[t.getRawIndex(n)].dataIndex=n},t.prototype.clearLayouts=function(){this.data.clearItemLayouts()},t.createTree=function(e,n,i){var r=new t(n),o=[],a=1;!function t(e,n){var i=e.value;a=Math.max(a,Y(i)?i.length:1),o.push(e);var s=new CC(xo(e.name,""),r);n?function(t,e){var n=e.children;if(t.parentNode===e)return;n.push(t),t.parentNode=e}(s,n):r.root=s,r._nodes.push(s);var l=e.children;if(l)for(var u=0;u<l.length;u++)t(l[u],s)}(e),r.root.updateDepthAndHeight(0);var s=qm(o,{coordDimensions:["value"],dimensionsCount:a}).dimensions,l=new jm(s,n);return l.initData(o),i&&i(l),xC({mainData:l,struct:r,structAttr:"tree"}),r.update(),r},t}();function AC(t,e,n){if(t&&P(e,t.type)>=0){var i=n.getData().tree.root,r=t.targetNode;if(X(r)&&(r=i.getNodeById(r)),r&&i.contains(r))return{node:r};var o=t.targetNodeId;if(null!=o&&(r=i.getNodeById(o)))return{node:r}}}function kC(t){for(var e=[];t;)(t=t.parentNode)&&e.push(t);return e.reverse()}function LC(t,e){return P(kC(t),e)>=0}function PC(t,e){for(var n=[];t;){var i=t.dataIndex;n.push({name:t.name,dataIndex:i,value:e.getRawValue(i)}),t=t.parentNode}return n.reverse(),n}var OC=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.hasSymbolVisual=!0,e.ignoreStyleOnData=!0,e}return n(e,t),e.prototype.getInitialData=function(t){var e={name:t.name,children:t.data},n=t.leaves||{},i=new dc(n,this,this.ecModel),r=DC.createTree(e,this,(function(t){t.wrapMethod("getItemModel",(function(t,e){var n=r.getNodeByDataIndex(e);return n&&n.children.length&&n.isExpand||(t.parentModel=i),t}))}));var o=0;r.eachNode("preorder",(function(t){t.depth>o&&(o=t.depth)}));var a=t.expandAndCollapse&&t.initialTreeDepth>=0?t.initialTreeDepth:o;return r.root.eachNode("preorder",(function(t){var e=t.hostTree.data.getRawDataItem(t.dataIndex);t.isExpand=e&&null!=e.collapsed?!e.collapsed:t.depth<=a})),r.data},e.prototype.getOrient=function(){var t=this.get("orient");return"horizontal"===t?t="LR":"vertical"===t&&(t="TB"),t},e.prototype.setZoom=function(t){this.option.zoom=t},e.prototype.setCenter=function(t){this.option.center=t},e.prototype.formatTooltip=function(t,e,n){for(var i=this.getData().tree,r=i.root.children[0],o=i.getNodeByDataIndex(t),a=o.getValue(),s=o.name;o&&o!==r;)s=o.parentNode.name+"."+s,o=o.parentNode;return Xf("nameValue",{name:s,value:a,noValue:isNaN(a)||null==a})},e.prototype.getDataParams=function(e){var n=t.prototype.getDataParams.apply(this,arguments),i=this.getData().tree.getNodeByDataIndex(e);return n.treeAncestors=PC(i,this),n.collapsed=!i.isExpand,n},e.type="series.tree",e.layoutMode="box",e.defaultOption={z:2,coordinateSystem:"view",left:"12%",top:"12%",right:"12%",bottom:"12%",layout:"orthogonal",edgeShape:"curve",edgeForkPosition:"50%",roam:!1,nodeScaleRatio:.4,center:null,zoom:1,orient:"LR",symbol:"emptyCircle",symbolSize:7,expandAndCollapse:!0,initialTreeDepth:2,lineStyle:{color:"#ccc",width:1.5,curveness:.5},itemStyle:{color:"lightsteelblue",borderWidth:1.5},label:{show:!0},animationEasing:"linear",animationDuration:700,animationDurationUpdate:500},e}(sg);function RC(t,e){for(var n,i=[t];n=i.pop();)if(e(n),n.isExpand){var r=n.children;if(r.length)for(var o=r.length-1;o>=0;o--)i.push(r[o])}}function NC(t,e){t.eachSeriesByType("tree",(function(t){!function(t,e){var n=function(t,e){return xp(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}(t,e);t.layoutInfo=n;var i=t.get("layout"),r=0,o=0,a=null;"radial"===i?(r=2*Math.PI,o=Math.min(n.height,n.width)/2,a=nC((function(t,e){return(t.parentNode===e.parentNode?1:2)/t.depth}))):(r=n.width,o=n.height,a=nC());var s=t.getData().tree.root,l=s.children[0];if(l){!function(t){var e=t;e.hierNode={defaultAncestor:null,ancestor:e,prelim:0,modifier:0,change:0,shift:0,i:0,thread:null};for(var n,i,r=[e];n=r.pop();)if(i=n.children,n.isExpand&&i.length)for(var o=i.length-1;o>=0;o--){var a=i[o];a.hierNode={defaultAncestor:null,ancestor:a,prelim:0,modifier:0,change:0,shift:0,i:o,thread:null},r.push(a)}}(s),function(t,e,n){for(var i,r=[t],o=[];i=r.pop();)if(o.push(i),i.isExpand){var a=i.children;if(a.length)for(var s=0;s<a.length;s++)r.push(a[s])}for(;i=o.pop();)e(i,n)}(l,tC,a),s.hierNode.modifier=-l.hierNode.prelim,RC(l,eC);var u=l,h=l,c=l;RC(l,(function(t){var e=t.getLayout().x;e<u.getLayout().x&&(u=t),e>h.getLayout().x&&(h=t),t.depth>c.depth&&(c=t)}));var p=u===h?1:a(u,h)/2,d=p-u.getLayout().x,f=0,g=0,y=0,v=0;if("radial"===i)f=r/(h.getLayout().x+p+d),g=o/(c.depth-1||1),RC(l,(function(t){y=(t.getLayout().x+d)*f,v=(t.depth-1)*g;var e=iC(y,v);t.setLayout({x:e.x,y:e.y,rawX:y,rawY:v},!0)}));else{var m=t.getOrient();"RL"===m||"LR"===m?(g=o/(h.getLayout().x+p+d),f=r/(c.depth-1||1),RC(l,(function(t){v=(t.getLayout().x+d)*g,y="LR"===m?(t.depth-1)*f:r-(t.depth-1)*f,t.setLayout({x:y,y:v},!0)}))):"TB"!==m&&"BT"!==m||(f=r/(h.getLayout().x+p+d),g=o/(c.depth-1||1),RC(l,(function(t){y=(t.getLayout().x+d)*f,v="TB"===m?(t.depth-1)*g:o-(t.depth-1)*g,t.setLayout({x:y,y:v},!0)})))}}}(t,e)}))}function EC(t){t.eachSeriesByType("tree",(function(t){var e=t.getData();e.tree.eachNode((function(t){var n=t.getModel().getModel("itemStyle").getItemStyle();A(e.ensureUniqueItemVisual(t.dataIndex,"style"),n)}))}))}var zC=["treemapZoomToNode","treemapRender","treemapMove"];function VC(t){var e=t.getData().tree,n={};e.eachNode((function(e){for(var i=e;i&&i.depth>1;)i=i.parentNode;var r=ed(t.ecModel,i.name||i.dataIndex+"",n);e.setVisual("decal",r)}))}var BC=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.preventUsingHoverLayer=!0,n}return n(e,t),e.prototype.getInitialData=function(t,e){var n={name:t.name,children:t.data};FC(n);var i=t.levels||[],r=this.designatedVisualItemStyle={},o=new dc({itemStyle:r},this,e),a=z((i=t.levels=function(t,e){var n,i,r=ho(e.get("color")),o=ho(e.get(["aria","decal","decals"]));if(!r)return;E(t=t||[],(function(t){var e=new dc(t),r=e.get("color"),o=e.get("decal");(e.get(["itemStyle","color"])||r&&"none"!==r)&&(n=!0),(e.get(["itemStyle","decal"])||o&&"none"!==o)&&(i=!0)}));var a=t[0]||(t[0]={});n||(a.color=r.slice());!i&&o&&(a.decal=o.slice());return t}(i,e))||[],(function(t){return new dc(t,o,e)}),this),s=DC.createTree(n,this,(function(t){t.wrapMethod("getItemModel",(function(t,e){var n=s.getNodeByDataIndex(e),i=n?a[n.depth]:null;return t.parentModel=i||o,t}))}));return s.data},e.prototype.optionUpdated=function(){this.resetViewRoot()},e.prototype.formatTooltip=function(t,e,n){var i=this.getData(),r=this.getRawValue(t);return Xf("nameValue",{name:i.getName(t),value:r})},e.prototype.getDataParams=function(e){var n=t.prototype.getDataParams.apply(this,arguments),i=this.getData().tree.getNodeByDataIndex(e);return n.treeAncestors=PC(i,this),n.treePathInfo=n.treeAncestors,n},e.prototype.setLayoutInfo=function(t){this.layoutInfo=this.layoutInfo||{},A(this.layoutInfo,t)},e.prototype.mapIdToIndex=function(t){var e=this._idIndexMap;e||(e=this._idIndexMap=ft(),this._idIndexMapCount=0);var n=e.get(t);return null==n&&e.set(t,n=this._idIndexMapCount++),n},e.prototype.getViewRoot=function(){return this._viewRoot},e.prototype.resetViewRoot=function(t){t?this._viewRoot=t:t=this._viewRoot;var e=this.getRawData().tree.root;t&&(t===e||e.contains(t))||(this._viewRoot=e)},e.prototype.enableAriaDecal=function(){VC(this)},e.type="series.treemap",e.layoutMode="box",e.defaultOption={progressive:0,left:"center",top:"middle",width:"80%",height:"80%",sort:!0,clipWindow:"origin",squareRatio:.5*(1+Math.sqrt(5)),leafDepth:null,drillDownIcon:"▶",zoomToNodeRatio:.1024,roam:!0,nodeClick:"zoomToNode",animation:!0,animationDurationUpdate:900,animationEasing:"quinticInOut",breadcrumb:{show:!0,height:22,left:"center",top:"bottom",emptyItemWidth:25,itemStyle:{color:"rgba(0,0,0,0.7)",textStyle:{color:"#fff"}}},label:{show:!0,distance:0,padding:5,position:"inside",color:"#fff",overflow:"truncate"},upperLabel:{show:!1,position:[0,"50%"],height:20,overflow:"truncate",verticalAlign:"middle"},itemStyle:{color:null,colorAlpha:null,colorSaturation:null,borderWidth:0,gapWidth:0,borderColor:"#fff",borderColorSaturation:null},emphasis:{upperLabel:{show:!0,position:[0,"50%"],overflow:"truncate",verticalAlign:"middle"}},visualDimension:0,visualMin:null,visualMax:null,color:[],colorAlpha:null,colorSaturation:null,colorMappingBy:"index",visibleMin:10,childrenVisibleMin:null,levels:[]},e}(sg);function FC(t){var e=0;E(t.children,(function(t){FC(t);var n=t.value;Y(n)&&(n=n[0]),e+=n}));var n=t.value;Y(n)&&(n=n[0]),(null==n||isNaN(n))&&(n=e),n<0&&(n=0),Y(t.value)?t.value[0]=n:t.value=n}var GC=function(){function t(t){this.group=new Cr,t.add(this.group)}return t.prototype.render=function(t,e,n,i){var r=t.getModel("breadcrumb"),o=this.group;if(o.removeAll(),r.get("show")&&n){var a=r.getModel("itemStyle"),s=a.getModel("textStyle"),l={pos:{left:r.get("left"),right:r.get("right"),top:r.get("top"),bottom:r.get("bottom")},box:{width:e.getWidth(),height:e.getHeight()},emptyItemWidth:r.get("emptyItemWidth"),totalWidth:0,renderList:[]};this._prepare(n,l,s),this._renderContent(t,l,a,s,i),_p(o,l.pos,l.box)}},t.prototype._prepare=function(t,e,n){for(var i=t;i;i=i.parentNode){var r=xo(i.getModel().get("name"),""),o=n.getTextRect(r),a=Math.max(o.width+16,e.emptyItemWidth);e.totalWidth+=a+8,e.renderList.push({node:i,text:r,width:a})}},t.prototype._renderContent=function(t,e,n,i,r){for(var o,a,s,l,u,h,c,p,d,f=0,g=e.emptyItemWidth,y=t.get(["breadcrumb","height"]),v=(o=e.pos,a=e.box,l=a.width,u=a.height,h=Er(o.left,l),c=Er(o.top,u),p=Er(o.right,l),d=Er(o.bottom,u),(isNaN(h)||isNaN(parseFloat(o.left)))&&(h=0),(isNaN(p)||isNaN(parseFloat(o.right)))&&(p=l),(isNaN(c)||isNaN(parseFloat(o.top)))&&(c=0),(isNaN(d)||isNaN(parseFloat(o.bottom)))&&(d=u),s=ip(s||0),{width:Math.max(p-h-s[1]-s[3],0),height:Math.max(d-c-s[0]-s[2],0)}),m=e.totalWidth,x=e.renderList,_=x.length-1;_>=0;_--){var b=x[_],w=b.node,S=b.width,M=b.text;m>v.width&&(m-=S-g,S=g,M=null);var I=new Pu({shape:{points:WC(f,0,S,y,_===x.length-1,0===_)},style:k(n.getItemStyle(),{lineJoin:"bevel"}),textContent:new ks({style:{text:M,fill:i.getTextColor(),font:i.getFont()}}),textConfig:{position:"inside"},z2:1e5,onclick:H(r,w)});I.disableLabelAnimation=!0,this.group.add(I),HC(I,t,w),f+=S+8}},t.prototype.remove=function(){this.group.removeAll()},t}();function WC(t,e,n,i,r,o){var a=[[r?t:t-5,e],[t+n,e],[t+n,e+i],[r?t:t-5,e+i]];return!o&&a.splice(2,0,[t+n+5,e+i/2]),!r&&a.push([t,e+i/2]),a}function HC(t,e,n){Hs(t).eventData={componentType:"series",componentSubType:"treemap",componentIndex:e.componentIndex,seriesIndex:e.seriesIndex,seriesName:e.name,seriesType:"treemap",selfType:"breadcrumb",nodeData:{dataIndex:n&&n.dataIndex,name:n&&n.name},treePathInfo:n&&PC(n,e)}}var YC=function(){function t(){this._storage=[],this._elExistsMap={}}return t.prototype.add=function(t,e,n,i,r){return!this._elExistsMap[t.id]&&(this._elExistsMap[t.id]=!0,this._storage.push({el:t,target:e,duration:n,delay:i,easing:r}),!0)},t.prototype.finished=function(t){return this._finishedCallback=t,this},t.prototype.start=function(){for(var t=this,e=this._storage.length,n=function(){--e<=0&&(t._storage.length=0,t._elExistsMap={},t._finishedCallback&&t._finishedCallback())},i=0,r=this._storage.length;i<r;i++){var o=this._storage[i];o.el.animateTo(o.target,{duration:o.duration,delay:o.delay,easing:o.easing,setToFinal:!0,done:n,aborted:n})}return this},t}();var UC=Cr,XC=Cs,ZC="label",jC="upperLabel",qC=Wo([["fill","color"],["stroke","strokeColor"],["lineWidth","strokeWidth"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]),KC=function(t){var e=qC(t);return e.stroke=e.fill=e.lineWidth=null,e},$C=So(),JC=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n._state="ready",n._storage={nodeGroup:[],background:[],content:[]},n}return n(e,t),e.prototype.render=function(t,e,n,i){if(!(P(e.findComponents({mainType:"series",subType:"treemap",query:i}),t)<0)){this.seriesModel=t,this.api=n,this.ecModel=e;var r=AC(i,["treemapZoomToNode","treemapRootToNode"],t),o=i&&i.type,a=t.layoutInfo,s=!this._oldTree,l=this._storage,u="treemapRootToNode"===o&&r&&l?{rootNodeGroup:l.nodeGroup[r.node.getRawIndex()],direction:i.direction}:null,h=this._giveContainerGroup(a),c=t.get("animation"),p=this._doRender(h,t,u);!c||s||o&&"treemapZoomToNode"!==o&&"treemapRootToNode"!==o?p.renderFinally():this._doAnimation(h,p,t,u),this._resetController(n),this._renderBreadcrumb(t,n,r)}},e.prototype._giveContainerGroup=function(t){var e=this._containerGroup;return e||(e=this._containerGroup=new UC,this._initEvents(e),this.group.add(e)),e.x=t.x,e.y=t.y,e},e.prototype._doRender=function(t,e,n){var i=e.getData().tree,r=this._oldTree,o={nodeGroup:[],background:[],content:[]},a={nodeGroup:[],background:[],content:[]},s=this._storage,l=[];function u(t,i,r,u){return function(t,e,n,i,r,o,a,s,l,u){if(!a)return;var h=a.getLayout(),c=t.getData(),p=a.getModel();if(c.setItemGraphicEl(a.dataIndex,null),!h||!h.isInView)return;var d=h.width,f=h.height,g=h.borderWidth,y=h.invisible,v=a.getRawIndex(),m=s&&s.getRawIndex(),x=a.viewChildren,_=h.upperHeight,b=x&&x.length,w=p.getModel("itemStyle"),S=p.getModel(["emphasis","itemStyle"]),M=p.getModel(["blur","itemStyle"]),I=p.getModel(["select","itemStyle"]),T=w.get("borderRadius")||0,C=G("nodeGroup",UC);if(!C)return;if(l.add(C),C.x=h.x||0,C.y=h.y||0,C.markRedraw(),$C(C).nodeWidth=d,$C(C).nodeHeight=f,h.isAboveViewRoot)return C;var D=G("background",XC,u,20);D&&E(C,D,b&&h.upperLabelHeight);var k=p.getModel("emphasis"),L=k.get("focus"),P=k.get("blurScope"),O=k.get("disabled"),R="ancestor"===L?a.getAncestorsIndices():"descendant"===L?a.getDescendantIndices():L;if(b)Fl(C)&&Bl(C,!1),D&&(Bl(D,!O),c.setItemGraphicEl(a.dataIndex,D),Nl(D,R,P));else{var N=G("content",XC,u,30);N&&z(C,N),D.disableMorphing=!0,D&&Fl(D)&&Bl(D,!1),Bl(C,!O),c.setItemGraphicEl(a.dataIndex,C),Nl(C,R,P)}return C;function E(e,n,i){var r=Hs(n);if(r.dataIndex=a.dataIndex,r.seriesIndex=t.seriesIndex,n.setShape({x:0,y:0,width:d,height:f,r:T}),y)V(n);else{n.invisible=!1;var o=a.getVisual("style"),s=o.stroke,l=KC(w);l.fill=s;var u=qC(S);u.fill=S.get("borderColor");var h=qC(M);h.fill=M.get("borderColor");var c=qC(I);if(c.fill=I.get("borderColor"),i){var p=d-2*g;B(n,s,o.opacity,{x:g,y:0,width:p,height:_})}else n.removeTextContent();n.setStyle(l),n.ensureState("emphasis").style=u,n.ensureState("blur").style=h,n.ensureState("select").style=c,vl(n)}e.add(n)}function z(e,n){var i=Hs(n);i.dataIndex=a.dataIndex,i.seriesIndex=t.seriesIndex;var r=Math.max(d-2*g,0),o=Math.max(f-2*g,0);if(n.culling=!0,n.setShape({x:g,y:g,width:r,height:o,r:T}),y)V(n);else{n.invisible=!1;var s=a.getVisual("style"),l=s.fill,u=KC(w);u.fill=l,u.decal=s.decal;var h=qC(S),c=qC(M),p=qC(I);B(n,l,s.opacity,null),n.setStyle(u),n.ensureState("emphasis").style=h,n.ensureState("blur").style=c,n.ensureState("select").style=p,vl(n)}e.add(n)}function V(t){!t.invisible&&o.push(t)}function B(e,n,i,r){var o=p.getModel(r?jC:ZC),s=xo(p.get("name"),null),l=o.getShallow("show");Hh(e,Yh(p,r?jC:ZC),{defaultText:l?s:null,inheritColor:n,defaultOpacity:i,labelFetcher:t,labelDataIndex:a.dataIndex});var u=e.getTextContent();if(u){var c=u.style,d=st(c.padding||0);r&&(e.setTextConfig({layoutRect:r}),u.disableLabelLayout=!0),u.beforeUpdate=function(){var t=Math.max((r?r.width:e.shape.width)-d[1]-d[3],0),n=Math.max((r?r.height:e.shape.height)-d[0]-d[2],0);c.width===t&&c.height===n||u.setStyle({width:t,height:n})},c.truncateMinChar=2,c.lineOverflow="truncate",F(c,r,h);var f=u.getState("emphasis");F(f?f.style:null,r,h)}}function F(e,n,i){var r=e?e.text:null;if(!n&&i.isLeafRoot&&null!=r){var o=t.get("drillDownIcon",!0);e.text=o?o+" "+r:r}}function G(t,i,o,a){var s=null!=m&&n[t][m],l=r[t];return s?(n[t][m]=null,W(l,s)):y||((s=new i)instanceof da&&(s.z2=function(t,e){return 100*t+e}(o,a)),H(l,s)),e[t][v]=s}function W(t,e){var n=t[v]={};e instanceof UC?(n.oldX=e.x,n.oldY=e.y):n.oldShape=A({},e.shape)}function H(t,e){var n=t[v]={},o=a.parentNode,s=e instanceof Cr;if(o&&(!i||"drillDown"===i.direction)){var l=0,u=0,h=r.background[o.getRawIndex()];!i&&h&&h.oldShape&&(l=h.oldShape.width,u=h.oldShape.height),s?(n.oldX=0,n.oldY=u):n.oldShape={x:l,y:u,width:0,height:0}}n.fadein=!s}}(e,a,s,n,o,l,t,i,r,u)}!function t(e,n,i,r,o){r?(n=e,E(e,(function(t,e){!t.isRemoved()&&s(e,e)}))):new Mm(n,e,a,a).add(s).update(s).remove(H(s,null)).execute();function a(t){return t.getId()}function s(a,s){var l=null!=a?e[a]:null,h=null!=s?n[s]:null,c=u(l,h,i,o);c&&t(l&&l.viewChildren||[],h&&h.viewChildren||[],c,r,o+1)}}(i.root?[i.root]:[],r&&r.root?[r.root]:[],t,i===r||!r,0);var h=function(t){var e={nodeGroup:[],background:[],content:[]};return t&&E(t,(function(t,n){var i=e[n];E(t,(function(t){t&&(i.push(t),$C(t).willDelete=!0)}))})),e}(s);return this._oldTree=i,this._storage=a,{lastsForAnimation:o,willDeleteEls:h,renderFinally:function(){E(h,(function(t){E(t,(function(t){t.parent&&t.parent.remove(t)}))})),E(l,(function(t){t.invisible=!0,t.dirty()}))}}},e.prototype._doAnimation=function(t,e,n,i){var r=n.get("animationDurationUpdate"),o=n.get("animationEasing"),a=(U(r)?0:r)||0,s=(U(o)?null:o)||"cubicOut",l=new YC;E(e.willDeleteEls,(function(t,e){E(t,(function(t,n){if(!t.invisible){var r,o=t.parent,u=$C(o);if(i&&"drillDown"===i.direction)r=o===i.rootNodeGroup?{shape:{x:0,y:0,width:u.nodeWidth,height:u.nodeHeight},style:{opacity:0}}:{style:{opacity:0}};else{var h=0,c=0;u.willDelete||(h=u.nodeWidth/2,c=u.nodeHeight/2),r="nodeGroup"===e?{x:h,y:c,style:{opacity:0}}:{shape:{x:h,y:c,width:0,height:0},style:{opacity:0}}}r&&l.add(t,r,a,0,s)}}))})),E(this._storage,(function(t,n){E(t,(function(t,i){var r=e.lastsForAnimation[n][i],o={};r&&(t instanceof Cr?null!=r.oldX&&(o.x=t.x,o.y=t.y,t.x=r.oldX,t.y=r.oldY):(r.oldShape&&(o.shape=A({},t.shape),t.setShape(r.oldShape)),r.fadein?(t.setStyle("opacity",0),o.style={opacity:1}):1!==t.style.opacity&&(o.style={opacity:1})),l.add(t,o,a,0,s))}))}),this),this._state="animating",l.finished(W((function(){this._state="ready",e.renderFinally()}),this)).start()},e.prototype._resetController=function(t){var e=this._controller;e||((e=this._controller=new AI(t.getZr())).enable(this.seriesModel.get("roam")),e.on("pan",W(this._onPan,this)),e.on("zoom",W(this._onZoom,this)));var n=new sr(0,0,t.getWidth(),t.getHeight());e.setPointerChecker((function(t,e,i){return n.contain(e,i)}))},e.prototype._clearController=function(){var t=this._controller;t&&(t.dispose(),t=null)},e.prototype._onPan=function(t){if("animating"!==this._state&&(Math.abs(t.dx)>3||Math.abs(t.dy)>3)){var e=this.seriesModel.getData().tree.root;if(!e)return;var n=e.getLayout();if(!n)return;this.api.dispatchAction({type:"treemapMove",from:this.uid,seriesId:this.seriesModel.id,rootRect:{x:n.x+t.dx,y:n.y+t.dy,width:n.width,height:n.height}})}},e.prototype._onZoom=function(t){var e=t.originX,n=t.originY;if("animating"!==this._state){var i=this.seriesModel.getData().tree.root;if(!i)return;var r=i.getLayout();if(!r)return;var o=new sr(r.x,r.y,r.width,r.height),a=this.seriesModel.layoutInfo,s=[1,0,0,1,0,0];Ei(s,s,[-(e-=a.x),-(n-=a.y)]),Vi(s,s,[t.scale,t.scale]),Ei(s,s,[e,n]),o.applyTransform(s),this.api.dispatchAction({type:"treemapRender",from:this.uid,seriesId:this.seriesModel.id,rootRect:{x:o.x,y:o.y,width:o.width,height:o.height}})}},e.prototype._initEvents=function(t){var e=this;t.on("click",(function(t){if("ready"===e._state){var n=e.seriesModel.get("nodeClick",!0);if(n){var i=e.findTarget(t.offsetX,t.offsetY);if(i){var r=i.node;if(r.getLayout().isLeafRoot)e._rootToNode(i);else if("zoomToNode"===n)e._zoomToNode(i);else if("link"===n){var o=r.hostTree.data.getItemModel(r.dataIndex),a=o.get("link",!0),s=o.get("target",!0)||"blank";a&&dp(a,s)}}}}}),this)},e.prototype._renderBreadcrumb=function(t,e,n){var i=this;n||(n=null!=t.get("leafDepth",!0)?{node:t.getViewRoot()}:this.findTarget(e.getWidth()/2,e.getHeight()/2))||(n={node:t.getData().tree.root}),(this._breadcrumb||(this._breadcrumb=new GC(this.group))).render(t,e,n.node,(function(e){"animating"!==i._state&&(LC(t.getViewRoot(),e)?i._rootToNode({node:e}):i._zoomToNode({node:e}))}))},e.prototype.remove=function(){this._clearController(),this._containerGroup&&this._containerGroup.removeAll(),this._storage={nodeGroup:[],background:[],content:[]},this._state="ready",this._breadcrumb&&this._breadcrumb.remove()},e.prototype.dispose=function(){this._clearController()},e.prototype._zoomToNode=function(t){this.api.dispatchAction({type:"treemapZoomToNode",from:this.uid,seriesId:this.seriesModel.id,targetNode:t.node})},e.prototype._rootToNode=function(t){this.api.dispatchAction({type:"treemapRootToNode",from:this.uid,seriesId:this.seriesModel.id,targetNode:t.node})},e.prototype.findTarget=function(t,e){var n;return this.seriesModel.getViewRoot().eachNode({attr:"viewChildren",order:"preorder"},(function(i){var r=this._storage.background[i.getRawIndex()];if(r){var o=r.transformCoordToLocal(t,e),a=r.shape;if(!(a.x<=o[0]&&o[0]<=a.x+a.width&&a.y<=o[1]&&o[1]<=a.y+a.height))return!1;n={node:i,offsetX:o[0],offsetY:o[1]}}}),this),n},e.type="treemap",e}(xg);var QC=E,tD=q,eD=-1,nD=function(){function t(e){var n=e.mappingMethod,i=e.type,r=this.option=T(e);this.type=i,this.mappingMethod=n,this._normalizeData=pD[n];var o=t.visualHandlers[i];this.applyVisual=o.applyVisual,this.getColorMapper=o.getColorMapper,this._normalizedToVisual=o._normalizedToVisual[n],"piecewise"===n?(iD(r),function(t){var e=t.pieceList;t.hasSpecialVisual=!1,E(e,(function(e,n){e.originIndex=n,null!=e.visual&&(t.hasSpecialVisual=!0)}))}(r)):"category"===n?r.categories?function(t){var e=t.categories,n=t.categoryMap={},i=t.visual;if(QC(e,(function(t,e){n[t]=e})),!Y(i)){var r=[];q(i)?QC(i,(function(t,e){var i=n[e];r[null!=i?i:eD]=t})):r[-1]=i,i=cD(t,r)}for(var o=e.length-1;o>=0;o--)null==i[o]&&(delete n[e[o]],e.pop())}(r):iD(r,!0):(lt("linear"!==n||r.dataExtent),iD(r))}return t.prototype.mapValueToVisual=function(t){var e=this._normalizeData(t);return this._normalizedToVisual(e,t)},t.prototype.getNormalizer=function(){return W(this._normalizeData,this)},t.listVisualTypes=function(){return G(t.visualHandlers)},t.isValidType=function(e){return t.visualHandlers.hasOwnProperty(e)},t.eachVisual=function(t,e,n){q(t)?E(t,e,n):e.call(n,t)},t.mapVisual=function(e,n,i){var r,o=Y(e)?[]:q(e)?{}:(r=!0,null);return t.eachVisual(e,(function(t,e){var a=n.call(i,t,e);r?o=a:o[e]=a})),o},t.retrieveVisuals=function(e){var n,i={};return e&&QC(t.visualHandlers,(function(t,r){e.hasOwnProperty(r)&&(i[r]=e[r],n=!0)})),n?i:null},t.prepareVisualTypes=function(t){if(Y(t))t=t.slice();else{if(!tD(t))return[];var e=[];QC(t,(function(t,n){e.push(n)})),t=e}return t.sort((function(t,e){return"color"===e&&"color"!==t&&0===t.indexOf("color")?1:-1})),t},t.dependsOn=function(t,e){return"color"===e?!(!t||0!==t.indexOf(e)):t===e},t.findPieceIndex=function(t,e,n){for(var i,r=1/0,o=0,a=e.length;o<a;o++){var s=e[o].value;if(null!=s){if(s===t||X(s)&&s===t+"")return o;n&&c(s,o)}}for(o=0,a=e.length;o<a;o++){var l=e[o],u=l.interval,h=l.close;if(u){if(u[0]===-1/0){if(dD(h[1],t,u[1]))return o}else if(u[1]===1/0){if(dD(h[0],u[0],t))return o}else if(dD(h[0],u[0],t)&&dD(h[1],t,u[1]))return o;n&&c(u[0],o),n&&c(u[1],o)}}if(n)return t===1/0?e.length-1:t===-1/0?0:i;function c(e,n){var o=Math.abs(e-t);o<r&&(r=o,i=n)}},t.visualHandlers={color:{applyVisual:aD("color"),getColorMapper:function(){var t=this.option;return W("category"===t.mappingMethod?function(t,e){return!e&&(t=this._normalizeData(t)),sD.call(this,t)}:function(e,n,i){var r=!!i;return!n&&(e=this._normalizeData(e)),i=Mn(e,t.parsedVisual,i),r?i:kn(i,"rgba")},this)},_normalizedToVisual:{linear:function(t){return kn(Mn(t,this.option.parsedVisual),"rgba")},category:sD,piecewise:function(t,e){var n=hD.call(this,e);return null==n&&(n=kn(Mn(t,this.option.parsedVisual),"rgba")),n},fixed:lD}},colorHue:rD((function(t,e){return Dn(t,e)})),colorSaturation:rD((function(t,e){return Dn(t,null,e)})),colorLightness:rD((function(t,e){return Dn(t,null,null,e)})),colorAlpha:rD((function(t,e){return An(t,e)})),decal:{applyVisual:aD("decal"),_normalizedToVisual:{linear:null,category:sD,piecewise:null,fixed:null}},opacity:{applyVisual:aD("opacity"),_normalizedToVisual:uD([0,1])},liftZ:{applyVisual:aD("liftZ"),_normalizedToVisual:{linear:lD,category:lD,piecewise:lD,fixed:lD}},symbol:{applyVisual:function(t,e,n){n("symbol",this.mapValueToVisual(t))},_normalizedToVisual:{linear:oD,category:sD,piecewise:function(t,e){var n=hD.call(this,e);return null==n&&(n=oD.call(this,t)),n},fixed:lD}},symbolSize:{applyVisual:aD("symbolSize"),_normalizedToVisual:uD([0,1])}},t}();function iD(t,e){var n=t.visual,i=[];q(n)?QC(n,(function(t){i.push(t)})):null!=n&&i.push(n);e||1!==i.length||{color:1,symbol:1}.hasOwnProperty(t.type)||(i[1]=i[0]),cD(t,i)}function rD(t){return{applyVisual:function(e,n,i){var r=this.mapValueToVisual(e);i("color",t(n("color"),r))},_normalizedToVisual:uD([0,1])}}function oD(t){var e=this.option.visual;return e[Math.round(Nr(t,[0,1],[0,e.length-1],!0))]||{}}function aD(t){return function(e,n,i){i(t,this.mapValueToVisual(e))}}function sD(t){var e=this.option.visual;return e[this.option.loop&&t!==eD?t%e.length:t]}function lD(){return this.option.visual[0]}function uD(t){return{linear:function(e){return Nr(e,t,this.option.visual,!0)},category:sD,piecewise:function(e,n){var i=hD.call(this,n);return null==i&&(i=Nr(e,t,this.option.visual,!0)),i},fixed:lD}}function hD(t){var e=this.option,n=e.pieceList;if(e.hasSpecialVisual){var i=n[nD.findPieceIndex(t,n)];if(i&&i.visual)return i.visual[this.type]}}function cD(t,e){return t.visual=e,"color"===t.type&&(t.parsedVisual=z(e,(function(t){var e=bn(t);return e||[0,0,0,1]}))),e}var pD={linear:function(t){return Nr(t,this.option.dataExtent,[0,1],!0)},piecewise:function(t){var e=this.option.pieceList,n=nD.findPieceIndex(t,e,!0);if(null!=n)return Nr(n,[0,e.length-1],[0,1],!0)},category:function(t){var e=this.option.categories?this.option.categoryMap[t]:t;return null==e?eD:e},fixed:xt};function dD(t,e,n){return t?e<=n:e<n}var fD=So(),gD={seriesType:"treemap",reset:function(t){var e=t.getData().tree.root;e.isRemoved()||yD(e,{},t.getViewRoot().getAncestors(),t)}};function yD(t,e,n,i){var r=t.getModel(),o=t.getLayout(),a=t.hostTree.data;if(o&&!o.invisible&&o.isInView){var s,l=r.getModel("itemStyle"),u=function(t,e,n){var i=A({},e),r=n.designatedVisualItemStyle;return E(["color","colorAlpha","colorSaturation"],(function(n){r[n]=e[n];var o=t.get(n);r[n]=null,null!=o&&(i[n]=o)})),i}(l,e,i),h=a.ensureUniqueItemVisual(t.dataIndex,"style"),c=l.get("borderColor"),p=l.get("borderColorSaturation");null!=p&&(c=function(t,e){return null!=e?Dn(e,null,null,t):null}(p,s=vD(u))),h.stroke=c;var d=t.viewChildren;if(d&&d.length){var f=function(t,e,n,i,r,o){if(!o||!o.length)return;var a=xD(e,"color")||null!=r.color&&"none"!==r.color&&(xD(e,"colorAlpha")||xD(e,"colorSaturation"));if(!a)return;var s=e.get("visualMin"),l=e.get("visualMax"),u=n.dataExtent.slice();null!=s&&s<u[0]&&(u[0]=s),null!=l&&l>u[1]&&(u[1]=l);var h=e.get("colorMappingBy"),c={type:a.name,dataExtent:u,visual:a.range};"color"!==c.type||"index"!==h&&"id"!==h?c.mappingMethod="linear":(c.mappingMethod="category",c.loop=!0);var p=new nD(c);return fD(p).drColorMappingBy=h,p}(0,r,o,0,u,d);E(d,(function(t,e){if(t.depth>=n.length||t===n[t.depth]){var o=function(t,e,n,i,r,o){var a=A({},e);if(r){var s=r.type,l="color"===s&&fD(r).drColorMappingBy,u="index"===l?i:"id"===l?o.mapIdToIndex(n.getId()):n.getValue(t.get("visualDimension"));a[s]=r.mapValueToVisual(u)}return a}(r,u,t,e,f,i);yD(t,o,n,i)}}))}else s=vD(u),h.fill=s}}function vD(t){var e=mD(t,"color");if(e){var n=mD(t,"colorAlpha"),i=mD(t,"colorSaturation");return i&&(e=Dn(e,null,null,i)),n&&(e=An(e,n)),e}}function mD(t,e){var n=t[e];if(null!=n&&"none"!==n)return n}function xD(t,e){var n=t.get(e);return Y(n)&&n.length?{name:e,range:n}:null}var _D=Math.max,bD=Math.min,wD=it,SD=E,MD=["itemStyle","borderWidth"],ID=["itemStyle","gapWidth"],TD=["upperLabel","show"],CD=["upperLabel","height"],DD={seriesType:"treemap",reset:function(t,e,n,i){var r=n.getWidth(),o=n.getHeight(),a=t.option,s=xp(t.getBoxLayoutParams(),{width:n.getWidth(),height:n.getHeight()}),l=a.size||[],u=Er(wD(s.width,l[0]),r),h=Er(wD(s.height,l[1]),o),c=i&&i.type,p=AC(i,["treemapZoomToNode","treemapRootToNode"],t),d="treemapRender"===c||"treemapMove"===c?i.rootRect:null,f=t.getViewRoot(),g=kC(f);if("treemapMove"!==c){var y="treemapZoomToNode"===c?function(t,e,n,i,r){var o,a=(e||{}).node,s=[i,r];if(!a||a===n)return s;var l=i*r,u=l*t.option.zoomToNodeRatio;for(;o=a.parentNode;){for(var h=0,c=o.children,p=0,d=c.length;p<d;p++)h+=c[p].getValue();var f=a.getValue();if(0===f)return s;u*=h/f;var g=o.getModel(),y=g.get(MD);(u+=4*y*y+(3*y+Math.max(y,OD(g)))*Math.pow(u,.5))>Yr&&(u=Yr),a=o}u<l&&(u=l);var v=Math.pow(u/l,.5);return[i*v,r*v]}(t,p,f,u,h):d?[d.width,d.height]:[u,h],v=a.sort;v&&"asc"!==v&&"desc"!==v&&(v="desc");var m={squareRatio:a.squareRatio,sort:v,leafDepth:a.leafDepth};f.hostTree.clearLayouts();var x={x:0,y:0,width:y[0],height:y[1],area:y[0]*y[1]};f.setLayout(x),AD(f,m,!1,0),x=f.getLayout(),SD(g,(function(t,e){var n=(g[e+1]||f).getValue();t.setLayout(A({dataExtent:[n,n],borderWidth:0,upperHeight:0},x))}))}var _=t.getData().tree.root;_.setLayout(function(t,e,n){if(e)return{x:e.x,y:e.y};var i={x:0,y:0};if(!n)return i;var r=n.node,o=r.getLayout();if(!o)return i;var a=[o.width/2,o.height/2],s=r;for(;s;){var l=s.getLayout();a[0]+=l.x,a[1]+=l.y,s=s.parentNode}return{x:t.width/2-a[0],y:t.height/2-a[1]}}(s,d,p),!0),t.setLayoutInfo(s),PD(_,new sr(-s.x,-s.y,r,o),g,f,0)}};function AD(t,e,n,i){var r,o;if(!t.isRemoved()){var a=t.getLayout();r=a.width,o=a.height;var s=t.getModel(),l=s.get(MD),u=s.get(ID)/2,h=OD(s),c=Math.max(l,h),p=l-u,d=c-u;t.setLayout({borderWidth:l,upperHeight:c,upperLabelHeight:h},!0);var f=(r=_D(r-2*p,0))*(o=_D(o-p-d,0)),g=function(t,e,n,i,r,o){var a=t.children||[],s=i.sort;"asc"!==s&&"desc"!==s&&(s=null);var l=null!=i.leafDepth&&i.leafDepth<=o;if(r&&!l)return t.viewChildren=[];!function(t,e){e&&t.sort((function(t,n){var i="asc"===e?t.getValue()-n.getValue():n.getValue()-t.getValue();return 0===i?"asc"===e?t.dataIndex-n.dataIndex:n.dataIndex-t.dataIndex:i}))}(a=B(a,(function(t){return!t.isRemoved()})),s);var u=function(t,e,n){for(var i=0,r=0,o=e.length;r<o;r++)i+=e[r].getValue();var a,s=t.get("visualDimension");e&&e.length?"value"===s&&n?(a=[e[e.length-1].getValue(),e[0].getValue()],"asc"===n&&a.reverse()):(a=[1/0,-1/0],SD(e,(function(t){var e=t.getValue(s);e<a[0]&&(a[0]=e),e>a[1]&&(a[1]=e)}))):a=[NaN,NaN];return{sum:i,dataExtent:a}}(e,a,s);if(0===u.sum)return t.viewChildren=[];if(u.sum=function(t,e,n,i,r){if(!i)return n;for(var o=t.get("visibleMin"),a=r.length,s=a,l=a-1;l>=0;l--){var u=r["asc"===i?a-l-1:l].getValue();u/n*e<o&&(s=l,n-=u)}return"asc"===i?r.splice(0,a-s):r.splice(s,a-s),n}(e,n,u.sum,s,a),0===u.sum)return t.viewChildren=[];for(var h=0,c=a.length;h<c;h++){var p=a[h].getValue()/u.sum*n;a[h].setLayout({area:p})}l&&(a.length&&t.setLayout({isLeafRoot:!0},!0),a.length=0);return t.viewChildren=a,t.setLayout({dataExtent:u.dataExtent},!0),a}(t,s,f,e,n,i);if(g.length){var y={x:p,y:d,width:r,height:o},v=bD(r,o),m=1/0,x=[];x.area=0;for(var _=0,b=g.length;_<b;){var w=g[_];x.push(w),x.area+=w.getLayout().area;var S=kD(x,v,e.squareRatio);S<=m?(_++,m=S):(x.area-=x.pop().getLayout().area,LD(x,v,y,u,!1),v=bD(y.width,y.height),x.length=x.area=0,m=1/0)}if(x.length&&LD(x,v,y,u,!0),!n){var M=s.get("childrenVisibleMin");null!=M&&f<M&&(n=!0)}for(_=0,b=g.length;_<b;_++)AD(g[_],e,n,i+1)}}}function kD(t,e,n){for(var i=0,r=1/0,o=0,a=void 0,s=t.length;o<s;o++)(a=t[o].getLayout().area)&&(a<r&&(r=a),a>i&&(i=a));var l=t.area*t.area,u=e*e*n;return l?_D(u*i/l,l/(u*r)):1/0}function LD(t,e,n,i,r){var o=e===n.width?0:1,a=1-o,s=["x","y"],l=["width","height"],u=n[s[o]],h=e?t.area/e:0;(r||h>n[l[a]])&&(h=n[l[a]]);for(var c=0,p=t.length;c<p;c++){var d=t[c],f={},g=h?d.getLayout().area/h:0,y=f[l[a]]=_D(h-2*i,0),v=n[s[o]]+n[l[o]]-u,m=c===p-1||v<g?v:g,x=f[l[o]]=_D(m-2*i,0);f[s[a]]=n[s[a]]+bD(i,y/2),f[s[o]]=u+bD(i,x/2),u+=m,d.setLayout(f,!0)}n[s[a]]+=h,n[l[a]]-=h}function PD(t,e,n,i,r){var o=t.getLayout(),a=n[r],s=a&&a===t;if(!(a&&!s||r===n.length&&t!==i)){t.setLayout({isInView:!0,invisible:!s&&!e.intersect(o),isAboveViewRoot:s},!0);var l=new sr(e.x-o.x,e.y-o.y,e.width,e.height);SD(t.viewChildren||[],(function(t){PD(t,l,n,i,r+1)}))}}function OD(t){return t.get(TD)?t.get(CD):0}function RD(t){var e=t.findComponents({mainType:"legend"});e&&e.length&&t.eachSeriesByType("graph",(function(t){var n=t.getCategoriesData(),i=t.getGraph().data,r=n.mapArray(n.getName);i.filterSelf((function(t){var n=i.getItemModel(t).getShallow("category");if(null!=n){j(n)&&(n=r[n]);for(var o=0;o<e.length;o++)if(!e[o].isSelected(n))return!1}return!0}))}))}function ND(t){var e={};t.eachSeriesByType("graph",(function(t){var n=t.getCategoriesData(),i=t.getData(),r={};n.each((function(i){var o=n.getName(i);r["ec-"+o]=i;var a=n.getItemModel(i),s=a.getModel("itemStyle").getItemStyle();s.fill||(s.fill=t.getColorFromPalette(o,e)),n.setItemVisual(i,"style",s);for(var l=["symbol","symbolSize","symbolKeepAspect"],u=0;u<l.length;u++){var h=a.getShallow(l[u],!0);null!=h&&n.setItemVisual(i,l[u],h)}})),n.count()&&i.each((function(t){var e=i.getItemModel(t).getShallow("category");if(null!=e){X(e)&&(e=r["ec-"+e]);var o=n.getItemVisual(e,"style");A(i.ensureUniqueItemVisual(t,"style"),o);for(var a=["symbol","symbolSize","symbolKeepAspect"],s=0;s<a.length;s++)i.setItemVisual(t,a[s],n.getItemVisual(e,a[s]))}}))}))}function ED(t){return t instanceof Array||(t=[t,t]),t}function zD(t){t.eachSeriesByType("graph",(function(t){var e=t.getGraph(),n=t.getEdgeData(),i=ED(t.get("edgeSymbol")),r=ED(t.get("edgeSymbolSize"));n.setVisual("fromSymbol",i&&i[0]),n.setVisual("toSymbol",i&&i[1]),n.setVisual("fromSymbolSize",r&&r[0]),n.setVisual("toSymbolSize",r&&r[1]),n.setVisual("style",t.getModel("lineStyle").getLineStyle()),n.each((function(t){var i=n.getItemModel(t),r=e.getEdgeByIndex(t),o=ED(i.getShallow("symbol",!0)),a=ED(i.getShallow("symbolSize",!0)),s=i.getModel("lineStyle").getLineStyle(),l=n.ensureUniqueItemVisual(t,"style");switch(A(l,s),l.stroke){case"source":var u=r.node1.getVisual("style");l.stroke=u&&u.fill;break;case"target":u=r.node2.getVisual("style");l.stroke=u&&u.fill}o[0]&&r.setVisual("fromSymbol",o[0]),o[1]&&r.setVisual("toSymbol",o[1]),a[0]&&r.setVisual("fromSymbolSize",a[0]),a[1]&&r.setVisual("toSymbolSize",a[1])}))}))}var VD="--\x3e",BD=function(t){return t.get("autoCurveness")||null},FD=function(t,e){var n=BD(t),i=20,r=[];if(j(n))i=n;else if(Y(n))return void(t.__curvenessList=n);e>i&&(i=e);var o=i%2?i+2:i+3;r=[];for(var a=0;a<o;a++)r.push((a%2?a+1:a)/10*(a%2?-1:1));t.__curvenessList=r},GD=function(t,e,n){var i=[t.id,t.dataIndex].join("."),r=[e.id,e.dataIndex].join(".");return[n.uid,i,r].join(VD)},WD=function(t){var e=t.split(VD);return[e[0],e[2],e[1]].join(VD)},HD=function(t,e){var n=e.__edgeMap;return n[t]?n[t].length:0};function YD(t,e,n,i){var r=BD(e),o=Y(r);if(!r)return null;var a=function(t,e){var n=GD(t.node1,t.node2,e);return e.__edgeMap[n]}(t,e);if(!a)return null;for(var s=-1,l=0;l<a.length;l++)if(a[l]===n){s=l;break}var u=function(t,e){return HD(GD(t.node1,t.node2,e),e)+HD(GD(t.node2,t.node1,e),e)}(t,e);FD(e,u),t.lineStyle=t.lineStyle||{};var h=GD(t.node1,t.node2,e),c=e.__curvenessList,p=o||u%2?0:1;if(a.isForward)return c[p+s];var d=WD(h),f=HD(d,e),g=c[s+f+p];return i?o?r&&0===r[0]?(f+p)%2?g:-g:((f%2?0:1)+p)%2?g:-g:(f+p)%2?g:-g:c[s+f+p]}function UD(t){var e=t.coordinateSystem;if(!e||"view"===e.type){var n=t.getGraph();n.eachNode((function(t){var e=t.getModel();t.setLayout([+e.get("x"),+e.get("y")])})),XD(n,t)}}function XD(t,e){t.eachEdge((function(t,n){var i=ot(t.getModel().get(["lineStyle","curveness"]),-YD(t,e,n,!0),0),r=Mt(t.node1.getLayout()),o=Mt(t.node2.getLayout()),a=[r,o];+i&&a.push([(r[0]+o[0])/2-(r[1]-o[1])*i,(r[1]+o[1])/2-(o[0]-r[0])*i]),t.setLayout(a)}))}function ZD(t,e){t.eachSeriesByType("graph",(function(t){var e=t.get("layout"),n=t.coordinateSystem;if(n&&"view"!==n.type){var i=t.getData(),r=[];E(n.dimensions,(function(t){r=r.concat(i.mapDimensionsAll(t))}));for(var o=0;o<i.count();o++){for(var a=[],s=!1,l=0;l<r.length;l++){var u=i.get(r[l],o);isNaN(u)||(s=!0),a.push(u)}s?i.setItemLayout(o,n.dataToPoint(a)):i.setItemLayout(o,[NaN,NaN])}XD(i.graph,t)}else e&&"none"!==e||UD(t)}))}function jD(t){var e=t.coordinateSystem;if("view"!==e.type)return 1;var n=t.option.nodeScaleRatio,i=e.scaleX;return((e.getZoom()-1)*n+1)/i}function qD(t){var e=t.getVisual("symbolSize");return e instanceof Array&&(e=(e[0]+e[1])/2),+e}var KD=Math.PI,$D=[];function JD(t,e){var n=t.coordinateSystem;if(!n||"view"===n.type){var i=n.getBoundingRect(),r=t.getData(),o=r.graph,a=i.width/2+i.x,s=i.height/2+i.y,l=Math.min(i.width,i.height)/2,u=r.count();r.setLayout({cx:a,cy:s}),u&&(QD[e](t,o,r,l,a,s,u),o.eachEdge((function(e,n){var i,r=ot(e.getModel().get(["lineStyle","curveness"]),YD(e,t,n),0),o=Mt(e.node1.getLayout()),l=Mt(e.node2.getLayout()),u=(o[0]+l[0])/2,h=(o[1]+l[1])/2;+r&&(i=[a*(r*=3)+u*(1-r),s*r+h*(1-r)]),e.setLayout([o,l,i])})))}}var QD={value:function(t,e,n,i,r,o,a){var s=0,l=n.getSum("value"),u=2*Math.PI/(l||a);e.eachNode((function(t){var e=t.getValue("value"),n=u*(l?e:1)/2;s+=n,t.setLayout([i*Math.cos(s)+r,i*Math.sin(s)+o]),s+=n}))},symbolSize:function(t,e,n,i,r,o,a){var s=0;$D.length=a;var l=jD(t);e.eachNode((function(t){var e=qD(t);isNaN(e)&&(e=2),e<0&&(e=0),e*=l;var n=Math.asin(e/2/i);isNaN(n)&&(n=KD/2),$D[t.dataIndex]=n,s+=2*n}));var u=(2*KD-s)/a/2,h=0;e.eachNode((function(t){var e=u+$D[t.dataIndex];h+=e,t.setLayout([i*Math.cos(h)+r,i*Math.sin(h)+o]),h+=e}))}};function tA(t){t.eachSeriesByType("graph",(function(t){"circular"===t.get("layout")&&JD(t,"symbolSize")}))}var eA=Ct;function nA(t){t.eachSeriesByType("graph",(function(t){var e=t.coordinateSystem;if(!e||"view"===e.type)if("force"===t.get("layout")){var n=t.preservedPoints||{},i=t.getGraph(),r=i.data,o=i.edgeData,a=t.getModel("force"),s=a.get("initLayout");t.preservedPoints?r.each((function(t){var e=r.getId(t);r.setItemLayout(t,n[e]||[NaN,NaN])})):s&&"none"!==s?"circular"===s&&JD(t,"value"):UD(t);var l=r.getDataExtent("value"),u=o.getDataExtent("value"),h=a.get("repulsion"),c=a.get("edgeLength"),p=Y(h)?h:[h,h],d=Y(c)?c:[c,c];d=[d[1],d[0]];var f=r.mapArray("value",(function(t,e){var n=r.getItemLayout(e),i=Nr(t,l,p);return isNaN(i)&&(i=(p[0]+p[1])/2),{w:i,rep:i,fixed:r.getItemModel(e).get("fixed"),p:!n||isNaN(n[0])||isNaN(n[1])?null:n}})),g=o.mapArray("value",(function(e,n){var r=i.getEdgeByIndex(n),o=Nr(e,u,d);isNaN(o)&&(o=(d[0]+d[1])/2);var a=r.getModel(),s=ot(r.getModel().get(["lineStyle","curveness"]),-YD(r,t,n,!0),0);return{n1:f[r.node1.dataIndex],n2:f[r.node2.dataIndex],d:o,curveness:s,ignoreForceLayout:a.get("ignoreForceLayout")}})),y=e.getBoundingRect(),v=function(t,e,n){for(var i=t,r=e,o=n.rect,a=o.width,s=o.height,l=[o.x+a/2,o.y+s/2],u=null==n.gravity?.1:n.gravity,h=0;h<i.length;h++){var c=i[h];c.p||(c.p=wt(a*(Math.random()-.5)+l[0],s*(Math.random()-.5)+l[1])),c.pp=Mt(c.p),c.edges=null}var p,d,f=null==n.friction?.6:n.friction,g=f;return{warmUp:function(){g=.8*f},setFixed:function(t){i[t].fixed=!0},setUnfixed:function(t){i[t].fixed=!1},beforeStep:function(t){p=t},afterStep:function(t){d=t},step:function(t){p&&p(i,r);for(var e=[],n=i.length,o=0;o<r.length;o++){var a=r[o];if(!a.ignoreForceLayout){var s=a.n1;Dt(e,(y=a.n2).p,s.p);var h=At(e)-a.d,c=y.w/(s.w+y.w);isNaN(c)&&(c=0),Rt(e,e),!s.fixed&&eA(s.p,s.p,e,c*h*g),!y.fixed&&eA(y.p,y.p,e,-(1-c)*h*g)}}for(o=0;o<n;o++)(x=i[o]).fixed||(Dt(e,l,x.p),eA(x.p,x.p,e,u*g));for(o=0;o<n;o++){s=i[o];for(var f=o+1;f<n;f++){var y;Dt(e,(y=i[f]).p,s.p),0===(h=At(e))&&(It(e,Math.random()-.5,Math.random()-.5),h=1);var v=(s.rep+y.rep)/h/h;!s.fixed&&eA(s.pp,s.pp,e,v),!y.fixed&&eA(y.pp,y.pp,e,-v)}}var m=[];for(o=0;o<n;o++){var x;(x=i[o]).fixed||(Dt(m,x.p,x.pp),eA(x.p,x.p,m,g),St(x.pp,x.p))}var _=(g*=.992)<.01;d&&d(i,r,_),t&&t(_)}}}(f,g,{rect:y,gravity:a.get("gravity"),friction:a.get("friction")});v.beforeStep((function(t,e){for(var n=0,r=t.length;n<r;n++)t[n].fixed&&St(t[n].p,i.getNodeByIndex(n).getLayout())})),v.afterStep((function(t,e,o){for(var a=0,s=t.length;a<s;a++)t[a].fixed||i.getNodeByIndex(a).setLayout(t[a].p),n[r.getId(a)]=t[a].p;for(a=0,s=e.length;a<s;a++){var l=e[a],u=i.getEdgeByIndex(a),h=l.n1.p,c=l.n2.p,p=u.getLayout();(p=p?p.slice():[])[0]=p[0]||[],p[1]=p[1]||[],St(p[0],h),St(p[1],c),+l.curveness&&(p[2]=[(h[0]+c[0])/2-(h[1]-c[1])*l.curveness,(h[1]+c[1])/2-(c[0]-h[0])*l.curveness]),u.setLayout(p)}})),t.forceLayout=v,t.preservedPoints=n,v.step()}else t.forceLayout=null}))}function iA(t,e){var n=[];return t.eachSeriesByType("graph",(function(t){var i=t.get("coordinateSystem");if(!i||"view"===i){var r=t.getData(),o=[],a=[];Ma(r.mapArray((function(t){var e=r.getItemModel(t);return[+e.get("x"),+e.get("y")]})),o,a),a[0]-o[0]==0&&(a[0]+=1,o[0]-=1),a[1]-o[1]==0&&(a[1]+=1,o[1]-=1);var s=(a[0]-o[0])/(a[1]-o[1]),l=function(t,e,n){return xp(A(t.getBoxLayoutParams(),{aspect:n}),{width:e.getWidth(),height:e.getHeight()})}(t,e,s);isNaN(s)&&(o=[l.x,l.y],a=[l.x+l.width,l.y+l.height]);var u=a[0]-o[0],h=a[1]-o[1],c=l.width,p=l.height,d=t.coordinateSystem=new FT;d.zoomLimit=t.get("scaleLimit"),d.setBoundingRect(o[0],o[1],u,h),d.setViewRect(l.x,l.y,c,p),d.setCenter(t.get("center")),d.setZoom(t.get("zoom")),n.push(d)}})),n}var rA=zu.prototype,oA=Gu.prototype,aA=function(){this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.percent=1};!function(t){function e(){return null!==t&&t.apply(this,arguments)||this}n(e,t)}(aA);function sA(t){return isNaN(+t.cpx1)||isNaN(+t.cpy1)}var lA=function(t){function e(e){var n=t.call(this,e)||this;return n.type="ec-line",n}return n(e,t),e.prototype.getDefaultStyle=function(){return{stroke:"#000",fill:null}},e.prototype.getDefaultShape=function(){return new aA},e.prototype.buildPath=function(t,e){sA(e)?rA.buildPath.call(this,t,e):oA.buildPath.call(this,t,e)},e.prototype.pointAt=function(t){return sA(this.shape)?rA.pointAt.call(this,t):oA.pointAt.call(this,t)},e.prototype.tangentAt=function(t){var e=this.shape,n=sA(e)?[e.x2-e.x1,e.y2-e.y1]:oA.tangentAt.call(this,t);return Rt(n,n)},e}(gs),uA=["fromSymbol","toSymbol"];function hA(t){return"_"+t+"Type"}function cA(t,e,n){var i=e.getItemVisual(n,t);if(i&&"none"!==i){var r=e.getItemVisual(n,t+"Size"),o=e.getItemVisual(n,t+"Rotate"),a=e.getItemVisual(n,t+"Offset"),s=e.getItemVisual(n,t+"KeepAspect"),l=Py(r),u=Oy(a||0,l),h=Ly(i,-l[0]/2+u[0],-l[1]/2+u[1],l[0],l[1],null,s);return h.__specifiedRotation=null==o||isNaN(o)?void 0:+o*Math.PI/180||0,h.name=t,h}}function pA(t,e){t.x1=e[0][0],t.y1=e[0][1],t.x2=e[1][0],t.y2=e[1][1],t.percent=1;var n=e[2];n?(t.cpx1=n[0],t.cpy1=n[1]):(t.cpx1=NaN,t.cpy1=NaN)}var dA=function(t){function e(e,n,i){var r=t.call(this)||this;return r._createLine(e,n,i),r}return n(e,t),e.prototype._createLine=function(t,e,n){var i=t.hostModel,r=function(t){var e=new lA({name:"line",subPixelOptimize:!0});return pA(e.shape,t),e}(t.getItemLayout(e));r.shape.percent=0,oh(r,{shape:{percent:1}},i,e),this.add(r),E(uA,(function(n){var i=cA(n,t,e);this.add(i),this[hA(n)]=t.getItemVisual(e,n)}),this),this._updateCommonStl(t,e,n)},e.prototype.updateData=function(t,e,n){var i=t.hostModel,r=this.childOfName("line"),o=t.getItemLayout(e),a={shape:{}};pA(a.shape,o),rh(r,a,i,e),E(uA,(function(n){var i=t.getItemVisual(e,n),r=hA(n);if(this[r]!==i){this.remove(this.childOfName(n));var o=cA(n,t,e);this.add(o)}this[r]=i}),this),this._updateCommonStl(t,e,n)},e.prototype.getLinePath=function(){return this.childAt(0)},e.prototype._updateCommonStl=function(t,e,n){var i=t.hostModel,r=this.childOfName("line"),o=n&&n.emphasisLineStyle,a=n&&n.blurLineStyle,s=n&&n.selectLineStyle,l=n&&n.labelStatesModels,u=n&&n.emphasisDisabled,h=n&&n.focus,c=n&&n.blurScope;if(!n||t.hasItemOption){var p=t.getItemModel(e),d=p.getModel("emphasis");o=d.getModel("lineStyle").getLineStyle(),a=p.getModel(["blur","lineStyle"]).getLineStyle(),s=p.getModel(["select","lineStyle"]).getLineStyle(),u=d.get("disabled"),h=d.get("focus"),c=d.get("blurScope"),l=Yh(p)}var f=t.getItemVisual(e,"style"),g=f.stroke;r.useStyle(f),r.style.fill=null,r.style.strokeNoScale=!0,r.ensureState("emphasis").style=o,r.ensureState("blur").style=a,r.ensureState("select").style=s,E(uA,(function(t){var e=this.childOfName(t);if(e){e.setColor(g),e.style.opacity=f.opacity;for(var n=0;n<qs.length;n++){var i=qs[n],o=r.getState(i);if(o){var a=o.style||{},s=e.ensureState(i),l=s.style||(s.style={});null!=a.stroke&&(l[e.__isEmptyBrush?"stroke":"fill"]=a.stroke),null!=a.opacity&&(l.opacity=a.opacity)}}e.markRedraw()}}),this);var y=i.getRawValue(e);Hh(this,l,{labelDataIndex:e,labelFetcher:{getFormattedLabel:function(e,n){return i.getFormattedLabel(e,n,t.dataType)}},inheritColor:g||"#000",defaultOpacity:f.opacity,defaultText:(null==y?t.getName(e):isFinite(y)?zr(y):y)+""});var v=this.getTextContent();if(v){var m=l.normal;v.__align=v.style.align,v.__verticalAlign=v.style.verticalAlign,v.__position=m.get("position")||"middle";var x=m.get("distance");Y(x)||(x=[x,x]),v.__labelDistance=x}this.setTextConfig({position:null,local:!0,inside:!1}),Rl(this,h,c,u)},e.prototype.highlight=function(){_l(this)},e.prototype.downplay=function(){bl(this)},e.prototype.updateLayout=function(t,e){this.setLinePoints(t.getItemLayout(e))},e.prototype.setLinePoints=function(t){var e=this.childOfName("line");pA(e.shape,t),e.dirty()},e.prototype.beforeUpdate=function(){var t=this,e=t.childOfName("fromSymbol"),n=t.childOfName("toSymbol"),i=t.getTextContent();if(e||n||i&&!i.ignore){for(var r=1,o=this.parent;o;)o.scaleX&&(r/=o.scaleX),o=o.parent;var a=t.childOfName("line");if(this.__dirty||a.__dirty){var s=a.shape.percent,l=a.pointAt(0),u=a.pointAt(s),h=Dt([],u,l);if(Rt(h,h),e&&(e.setPosition(l),S(e,0),e.scaleX=e.scaleY=r*s,e.markRedraw()),n&&(n.setPosition(u),S(n,1),n.scaleX=n.scaleY=r*s,n.markRedraw()),i&&!i.ignore){i.x=i.y=0,i.originX=i.originY=0;var c=void 0,p=void 0,d=i.__labelDistance,f=d[0]*r,g=d[1]*r,y=s/2,v=a.tangentAt(y),m=[v[1],-v[0]],x=a.pointAt(y);m[1]>0&&(m[0]=-m[0],m[1]=-m[1]);var _=v[0]<0?-1:1;if("start"!==i.__position&&"end"!==i.__position){var b=-Math.atan2(v[1],v[0]);u[0]<l[0]&&(b=Math.PI+b),i.rotation=b}var w=void 0;switch(i.__position){case"insideStartTop":case"insideMiddleTop":case"insideEndTop":case"middle":w=-g,p="bottom";break;case"insideStartBottom":case"insideMiddleBottom":case"insideEndBottom":w=g,p="top";break;default:w=0,p="middle"}switch(i.__position){case"end":i.x=h[0]*f+u[0],i.y=h[1]*g+u[1],c=h[0]>.8?"left":h[0]<-.8?"right":"center",p=h[1]>.8?"top":h[1]<-.8?"bottom":"middle";break;case"start":i.x=-h[0]*f+l[0],i.y=-h[1]*g+l[1],c=h[0]>.8?"right":h[0]<-.8?"left":"center",p=h[1]>.8?"bottom":h[1]<-.8?"top":"middle";break;case"insideStartTop":case"insideStart":case"insideStartBottom":i.x=f*_+l[0],i.y=l[1]+w,c=v[0]<0?"right":"left",i.originX=-f*_,i.originY=-w;break;case"insideMiddleTop":case"insideMiddle":case"insideMiddleBottom":case"middle":i.x=x[0],i.y=x[1]+w,c="center",i.originY=-w;break;case"insideEndTop":case"insideEnd":case"insideEndBottom":i.x=-f*_+u[0],i.y=u[1]+w,c=v[0]>=0?"right":"left",i.originX=f*_,i.originY=-w}i.scaleX=i.scaleY=r,i.setStyle({verticalAlign:i.__verticalAlign||p,align:i.__align||c})}}}function S(t,e){var n=t.__specifiedRotation;if(null==n){var i=a.tangentAt(e);t.attr("rotation",(1===e?-1:1)*Math.PI/2-Math.atan2(i[1],i[0]))}else t.attr("rotation",n)}},e}(Cr),fA=function(){function t(t){this.group=new Cr,this._LineCtor=t||dA}return t.prototype.updateData=function(t){var e=this;this._progressiveEls=null;var n=this,i=n.group,r=n._lineData;n._lineData=t,r||i.removeAll();var o=gA(t);t.diff(r).add((function(n){e._doAdd(t,n,o)})).update((function(n,i){e._doUpdate(r,t,i,n,o)})).remove((function(t){i.remove(r.getItemGraphicEl(t))})).execute()},t.prototype.updateLayout=function(){var t=this._lineData;t&&t.eachItemGraphicEl((function(e,n){e.updateLayout(t,n)}),this)},t.prototype.incrementalPrepareUpdate=function(t){this._seriesScope=gA(t),this._lineData=null,this.group.removeAll()},t.prototype.incrementalUpdate=function(t,e){function n(t){t.isGroup||function(t){return t.animators&&t.animators.length>0}(t)||(t.incremental=!0,t.ensureState("emphasis").hoverLayer=!0)}this._progressiveEls=[];for(var i=t.start;i<t.end;i++){if(vA(e.getItemLayout(i))){var r=new this._LineCtor(e,i,this._seriesScope);r.traverse(n),this.group.add(r),e.setItemGraphicEl(i,r),this._progressiveEls.push(r)}}},t.prototype.remove=function(){this.group.removeAll()},t.prototype.eachRendered=function(t){Vh(this._progressiveEls||this.group,t)},t.prototype._doAdd=function(t,e,n){if(vA(t.getItemLayout(e))){var i=new this._LineCtor(t,e,n);t.setItemGraphicEl(e,i),this.group.add(i)}},t.prototype._doUpdate=function(t,e,n,i,r){var o=t.getItemGraphicEl(n);vA(e.getItemLayout(i))?(o?o.updateData(e,i,r):o=new this._LineCtor(e,i,r),e.setItemGraphicEl(i,o),this.group.add(o)):this.group.remove(o)},t}();function gA(t){var e=t.hostModel,n=e.getModel("emphasis");return{lineStyle:e.getModel("lineStyle").getLineStyle(),emphasisLineStyle:n.getModel(["lineStyle"]).getLineStyle(),blurLineStyle:e.getModel(["blur","lineStyle"]).getLineStyle(),selectLineStyle:e.getModel(["select","lineStyle"]).getLineStyle(),emphasisDisabled:n.get("disabled"),blurScope:n.get("blurScope"),focus:n.get("focus"),labelStatesModels:Yh(e)}}function yA(t){return isNaN(t[0])||isNaN(t[1])}function vA(t){return t&&!yA(t[0])&&!yA(t[1])}var mA=[],xA=[],_A=[],bA=Ke,wA=Vt,SA=Math.abs;function MA(t,e,n){for(var i,r=t[0],o=t[1],a=t[2],s=1/0,l=n*n,u=.1,h=.1;h<=.9;h+=.1){mA[0]=bA(r[0],o[0],a[0],h),mA[1]=bA(r[1],o[1],a[1],h),(d=SA(wA(mA,e)-l))<s&&(s=d,i=h)}for(var c=0;c<32;c++){var p=i+u;xA[0]=bA(r[0],o[0],a[0],i),xA[1]=bA(r[1],o[1],a[1],i),_A[0]=bA(r[0],o[0],a[0],p),_A[1]=bA(r[1],o[1],a[1],p);var d=wA(xA,e)-l;if(SA(d)<.01)break;var f=wA(_A,e)-l;u/=2,d<0?f>=0?i+=u:i-=u:f>=0?i-=u:i+=u}return i}function IA(t,e){var n=[],i=Qe,r=[[],[],[]],o=[[],[]],a=[];e/=2,t.eachEdge((function(t,s){var l=t.getLayout(),u=t.getVisual("fromSymbol"),h=t.getVisual("toSymbol");l.__original||(l.__original=[Mt(l[0]),Mt(l[1])],l[2]&&l.__original.push(Mt(l[2])));var c=l.__original;if(null!=l[2]){if(St(r[0],c[0]),St(r[1],c[2]),St(r[2],c[1]),u&&"none"!==u){var p=qD(t.node1),d=MA(r,c[0],p*e);i(r[0][0],r[1][0],r[2][0],d,n),r[0][0]=n[3],r[1][0]=n[4],i(r[0][1],r[1][1],r[2][1],d,n),r[0][1]=n[3],r[1][1]=n[4]}if(h&&"none"!==h){p=qD(t.node2),d=MA(r,c[1],p*e);i(r[0][0],r[1][0],r[2][0],d,n),r[1][0]=n[1],r[2][0]=n[2],i(r[0][1],r[1][1],r[2][1],d,n),r[1][1]=n[1],r[2][1]=n[2]}St(l[0],r[0]),St(l[1],r[2]),St(l[2],r[1])}else{if(St(o[0],c[0]),St(o[1],c[1]),Dt(a,o[1],o[0]),Rt(a,a),u&&"none"!==u){p=qD(t.node1);Ct(o[0],o[0],a,p*e)}if(h&&"none"!==h){p=qD(t.node2);Ct(o[1],o[1],a,-p*e)}St(l[0],o[0]),St(l[1],o[1])}}))}function TA(t){return"view"===t.type}var CA=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.init=function(t,e){var n=new jw,i=new fA,r=this.group;this._controller=new AI(e.getZr()),this._controllerHost={target:r},r.add(n.group),r.add(i.group),this._symbolDraw=n,this._lineDraw=i,this._firstRender=!0},e.prototype.render=function(t,e,n){var i=this,r=t.coordinateSystem;this._model=t;var o=this._symbolDraw,a=this._lineDraw,s=this.group;if(TA(r)){var l={x:r.x,y:r.y,scaleX:r.scaleX,scaleY:r.scaleY};this._firstRender?s.attr(l):rh(s,l,t)}IA(t.getGraph(),jD(t));var u=t.getData();o.updateData(u);var h=t.getEdgeData();a.updateData(h),this._updateNodeAndLinkScale(),this._updateController(t,e,n),clearTimeout(this._layoutTimeout);var c=t.forceLayout,p=t.get(["force","layoutAnimation"]);c&&this._startForceLayoutIteration(c,p),u.graph.eachNode((function(t){var e=t.dataIndex,n=t.getGraphicEl(),r=t.getModel();if(n){n.off("drag").off("dragend");var o=r.get("draggable");o&&n.on("drag",(function(){c&&(c.warmUp(),!i._layouting&&i._startForceLayoutIteration(c,p),c.setFixed(e),u.setItemLayout(e,[n.x,n.y]))})).on("dragend",(function(){c&&c.setUnfixed(e)})),n.setDraggable(o&&!!c),"adjacency"===r.get(["emphasis","focus"])&&(Hs(n).focus=t.getAdjacentDataIndices())}})),u.graph.eachEdge((function(t){var e=t.getGraphicEl(),n=t.getModel().get(["emphasis","focus"]);e&&"adjacency"===n&&(Hs(e).focus={edge:[t.dataIndex],node:[t.node1.dataIndex,t.node2.dataIndex]})}));var d="circular"===t.get("layout")&&t.get(["circular","rotateLabel"]),f=u.getLayout("cx"),g=u.getLayout("cy");u.eachItemGraphicEl((function(t,e){var n=u.getItemModel(e).get(["label","rotate"])||0,i=t.getSymbolPath();if(d){var r=u.getItemLayout(e),o=Math.atan2(r[1]-g,r[0]-f);o<0&&(o=2*Math.PI+o);var a=r[0]<f;a&&(o-=Math.PI);var s=a?"left":"right";i.setTextConfig({rotation:-o,position:s,origin:"center"});var l=i.ensureState("emphasis");A(l.textConfig||(l.textConfig={}),{position:s})}else i.setTextConfig({rotation:n*=Math.PI/180})})),this._firstRender=!1},e.prototype.dispose=function(){this._controller&&this._controller.dispose(),this._controllerHost=null},e.prototype._startForceLayoutIteration=function(t,e){var n=this;!function i(){t.step((function(t){n.updateLayout(n._model),(n._layouting=!t)&&(e?n._layoutTimeout=setTimeout(i,16):i())}))}()},e.prototype._updateController=function(t,e,n){var i=this,r=this._controller,o=this._controllerHost,a=this.group;r.setPointerChecker((function(e,i,r){var o=a.getBoundingRect();return o.applyTransform(a.transform),o.contain(i,r)&&!zI(e,n,t)})),TA(t.coordinateSystem)?(r.enable(t.get("roam")),o.zoomLimit=t.get("scaleLimit"),o.zoom=t.coordinateSystem.getZoom(),r.off("pan").off("zoom").on("pan",(function(e){OI(o,e.dx,e.dy),n.dispatchAction({seriesId:t.id,type:"graphRoam",dx:e.dx,dy:e.dy})})).on("zoom",(function(e){RI(o,e.scale,e.originX,e.originY),n.dispatchAction({seriesId:t.id,type:"graphRoam",zoom:e.scale,originX:e.originX,originY:e.originY}),i._updateNodeAndLinkScale(),IA(t.getGraph(),jD(t)),i._lineDraw.updateLayout(),n.updateLabelLayout()}))):r.disable()},e.prototype._updateNodeAndLinkScale=function(){var t=this._model,e=t.getData(),n=jD(t);e.eachItemGraphicEl((function(t,e){t&&t.setSymbolScale(n)}))},e.prototype.updateLayout=function(t){IA(t.getGraph(),jD(t)),this._symbolDraw.updateLayout(),this._lineDraw.updateLayout()},e.prototype.remove=function(t,e){this._symbolDraw&&this._symbolDraw.remove(),this._lineDraw&&this._lineDraw.remove()},e.type="graph",e}(xg);function DA(t){return"_EC_"+t}var AA=function(){function t(t){this.type="graph",this.nodes=[],this.edges=[],this._nodesMap={},this._edgesMap={},this._directed=t||!1}return t.prototype.isDirected=function(){return this._directed},t.prototype.addNode=function(t,e){t=null==t?""+e:""+t;var n=this._nodesMap;if(!n[DA(t)]){var i=new kA(t,e);return i.hostGraph=this,this.nodes.push(i),n[DA(t)]=i,i}},t.prototype.getNodeByIndex=function(t){var e=this.data.getRawIndex(t);return this.nodes[e]},t.prototype.getNodeById=function(t){return this._nodesMap[DA(t)]},t.prototype.addEdge=function(t,e,n){var i=this._nodesMap,r=this._edgesMap;if(j(t)&&(t=this.nodes[t]),j(e)&&(e=this.nodes[e]),t instanceof kA||(t=i[DA(t)]),e instanceof kA||(e=i[DA(e)]),t&&e){var o=t.id+"-"+e.id,a=new LA(t,e,n);return a.hostGraph=this,this._directed&&(t.outEdges.push(a),e.inEdges.push(a)),t.edges.push(a),t!==e&&e.edges.push(a),this.edges.push(a),r[o]=a,a}},t.prototype.getEdgeByIndex=function(t){var e=this.edgeData.getRawIndex(t);return this.edges[e]},t.prototype.getEdge=function(t,e){t instanceof kA&&(t=t.id),e instanceof kA&&(e=e.id);var n=this._edgesMap;return this._directed?n[t+"-"+e]:n[t+"-"+e]||n[e+"-"+t]},t.prototype.eachNode=function(t,e){for(var n=this.nodes,i=n.length,r=0;r<i;r++)n[r].dataIndex>=0&&t.call(e,n[r],r)},t.prototype.eachEdge=function(t,e){for(var n=this.edges,i=n.length,r=0;r<i;r++)n[r].dataIndex>=0&&n[r].node1.dataIndex>=0&&n[r].node2.dataIndex>=0&&t.call(e,n[r],r)},t.prototype.breadthFirstTraverse=function(t,e,n,i){if(e instanceof kA||(e=this._nodesMap[DA(e)]),e){for(var r="out"===n?"outEdges":"in"===n?"inEdges":"edges",o=0;o<this.nodes.length;o++)this.nodes[o].__visited=!1;if(!t.call(i,e,null))for(var a=[e];a.length;){var s=a.shift(),l=s[r];for(o=0;o<l.length;o++){var u=l[o],h=u.node1===s?u.node2:u.node1;if(!h.__visited){if(t.call(i,h,s))return;a.push(h),h.__visited=!0}}}}},t.prototype.update=function(){for(var t=this.data,e=this.edgeData,n=this.nodes,i=this.edges,r=0,o=n.length;r<o;r++)n[r].dataIndex=-1;for(r=0,o=t.count();r<o;r++)n[t.getRawIndex(r)].dataIndex=r;e.filterSelf((function(t){var n=i[e.getRawIndex(t)];return n.node1.dataIndex>=0&&n.node2.dataIndex>=0}));for(r=0,o=i.length;r<o;r++)i[r].dataIndex=-1;for(r=0,o=e.count();r<o;r++)i[e.getRawIndex(r)].dataIndex=r},t.prototype.clone=function(){for(var e=new t(this._directed),n=this.nodes,i=this.edges,r=0;r<n.length;r++)e.addNode(n[r].id,n[r].dataIndex);for(r=0;r<i.length;r++){var o=i[r];e.addEdge(o.node1.id,o.node2.id,o.dataIndex)}return e},t}(),kA=function(){function t(t,e){this.inEdges=[],this.outEdges=[],this.edges=[],this.dataIndex=-1,this.id=null==t?"":t,this.dataIndex=null==e?-1:e}return t.prototype.degree=function(){return this.edges.length},t.prototype.inDegree=function(){return this.inEdges.length},t.prototype.outDegree=function(){return this.outEdges.length},t.prototype.getModel=function(t){if(!(this.dataIndex<0))return this.hostGraph.data.getItemModel(this.dataIndex).getModel(t)},t.prototype.getAdjacentDataIndices=function(){for(var t={edge:[],node:[]},e=0;e<this.edges.length;e++){var n=this.edges[e];n.dataIndex<0||(t.edge.push(n.dataIndex),t.node.push(n.node1.dataIndex,n.node2.dataIndex))}return t},t}(),LA=function(){function t(t,e,n){this.dataIndex=-1,this.node1=t,this.node2=e,this.dataIndex=null==n?-1:n}return t.prototype.getModel=function(t){if(!(this.dataIndex<0))return this.hostGraph.edgeData.getItemModel(this.dataIndex).getModel(t)},t.prototype.getAdjacentDataIndices=function(){return{edge:[this.dataIndex],node:[this.node1.dataIndex,this.node2.dataIndex]}},t}();function PA(t,e){return{getValue:function(n){var i=this[t][e];return i.getStore().get(i.getDimensionIndex(n||"value"),this.dataIndex)},setVisual:function(n,i){this.dataIndex>=0&&this[t][e].setItemVisual(this.dataIndex,n,i)},getVisual:function(n){return this[t][e].getItemVisual(this.dataIndex,n)},setLayout:function(n,i){this.dataIndex>=0&&this[t][e].setItemLayout(this.dataIndex,n,i)},getLayout:function(){return this[t][e].getItemLayout(this.dataIndex)},getGraphicEl:function(){return this[t][e].getItemGraphicEl(this.dataIndex)},getRawIndex:function(){return this[t][e].getRawIndex(this.dataIndex)}}}function OA(t,e,n,i,r){for(var o=new AA(i),a=0;a<t.length;a++)o.addNode(it(t[a].id,t[a].name,a),a);var s=[],l=[],u=0;for(a=0;a<e.length;a++){var h=e[a],c=h.source,p=h.target;o.addEdge(c,p,u)&&(l.push(h),s.push(it(xo(h.id,null),c+" > "+p)),u++)}var d,f=n.get("coordinateSystem");if("cartesian2d"===f||"polar"===f)d=ix(t,n);else{var g=hd.get(f),y=g&&g.dimensions||[];P(y,"value")<0&&y.concat(["value"]);var v=qm(t,{coordDimensions:y,encodeDefine:n.getEncode()}).dimensions;(d=new jm(v,n)).initData(t)}var m=new jm(["value"],n);return m.initData(l,s),r&&r(d,m),xC({mainData:d,struct:o,structAttr:"graph",datas:{node:d,edge:m},datasAttr:{node:"data",edge:"edgeData"}}),o.update(),o}R(kA,PA("hostGraph","data")),R(LA,PA("hostGraph","edgeData"));var RA=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.hasSymbolVisual=!0,n}return n(e,t),e.prototype.init=function(e){t.prototype.init.apply(this,arguments);var n=this;function i(){return n._categoriesData}this.legendVisualProvider=new uM(i,i),this.fillDataTextStyle(e.edges||e.links),this._updateCategoriesData()},e.prototype.mergeOption=function(e){t.prototype.mergeOption.apply(this,arguments),this.fillDataTextStyle(e.edges||e.links),this._updateCategoriesData()},e.prototype.mergeDefaultAndTheme=function(e){t.prototype.mergeDefaultAndTheme.apply(this,arguments),co(e,"edgeLabel",["show"])},e.prototype.getInitialData=function(t,e){var n,i=t.edges||t.links||[],r=t.data||t.nodes||[],o=this;if(r&&i){BD(n=this)&&(n.__curvenessList=[],n.__edgeMap={},FD(n));var a=OA(r,i,this,!0,(function(t,e){t.wrapMethod("getItemModel",(function(t){var e=o._categoriesModels[t.getShallow("category")];return e&&(e.parentModel=t.parentModel,t.parentModel=e),t}));var n=dc.prototype.getModel;function i(t,e){var i=n.call(this,t,e);return i.resolveParentPath=r,i}function r(t){if(t&&("label"===t[0]||"label"===t[1])){var e=t.slice();return"label"===t[0]?e[0]="edgeLabel":"label"===t[1]&&(e[1]="edgeLabel"),e}return t}e.wrapMethod("getItemModel",(function(t){return t.resolveParentPath=r,t.getModel=i,t}))}));return E(a.edges,(function(t){!function(t,e,n,i){if(BD(n)){var r=GD(t,e,n),o=n.__edgeMap,a=o[WD(r)];o[r]&&!a?o[r].isForward=!0:a&&o[r]&&(a.isForward=!0,o[r].isForward=!1),o[r]=o[r]||[],o[r].push(i)}}(t.node1,t.node2,this,t.dataIndex)}),this),a.data}},e.prototype.getGraph=function(){return this.getData().graph},e.prototype.getEdgeData=function(){return this.getGraph().edgeData},e.prototype.getCategoriesData=function(){return this._categoriesData},e.prototype.formatTooltip=function(t,e,n){if("edge"===n){var i=this.getData(),r=this.getDataParams(t,n),o=i.graph.getEdgeByIndex(t),a=i.getName(o.node1.dataIndex),s=i.getName(o.node2.dataIndex),l=[];return null!=a&&l.push(a),null!=s&&l.push(s),Xf("nameValue",{name:l.join(" > "),value:r.value,noValue:null==r.value})}return rg({series:this,dataIndex:t,multipleSeries:e})},e.prototype._updateCategoriesData=function(){var t=z(this.option.categories||[],(function(t){return null!=t.value?t:A({value:0},t)})),e=new jm(["value"],this);e.initData(t),this._categoriesData=e,this._categoriesModels=e.mapArray((function(t){return e.getItemModel(t)}))},e.prototype.setZoom=function(t){this.option.zoom=t},e.prototype.setCenter=function(t){this.option.center=t},e.prototype.isAnimationEnabled=function(){return t.prototype.isAnimationEnabled.call(this)&&!("force"===this.get("layout")&&this.get(["force","layoutAnimation"]))},e.type="series.graph",e.dependencies=["grid","polar","geo","singleAxis","calendar"],e.defaultOption={z:2,coordinateSystem:"view",legendHoverLink:!0,layout:null,circular:{rotateLabel:!1},force:{initLayout:null,repulsion:[0,50],gravity:.1,friction:.6,edgeLength:30,layoutAnimation:!0},left:"center",top:"center",symbol:"circle",symbolSize:10,edgeSymbol:["none","none"],edgeSymbolSize:10,edgeLabel:{position:"middle",distance:5},draggable:!1,roam:!1,center:null,zoom:1,nodeScaleRatio:.6,label:{show:!1,formatter:"{b}"},itemStyle:{},lineStyle:{color:"#aaa",width:1,opacity:.5},emphasis:{scale:!0,label:{show:!0}},select:{itemStyle:{borderColor:"#212121"}}},e}(sg),NA={type:"graphRoam",event:"graphRoam",update:"none"};var EA=function(){this.angle=0,this.width=10,this.r=10,this.x=0,this.y=0},zA=function(t){function e(e){var n=t.call(this,e)||this;return n.type="pointer",n}return n(e,t),e.prototype.getDefaultShape=function(){return new EA},e.prototype.buildPath=function(t,e){var n=Math.cos,i=Math.sin,r=e.r,o=e.width,a=e.angle,s=e.x-n(a)*o*(o>=r/3?1:2),l=e.y-i(a)*o*(o>=r/3?1:2);a=e.angle-Math.PI/2,t.moveTo(s,l),t.lineTo(e.x+n(a)*o,e.y+i(a)*o),t.lineTo(e.x+n(e.angle)*r,e.y+i(e.angle)*r),t.lineTo(e.x-n(a)*o,e.y-i(a)*o),t.lineTo(s,l)},e}(gs);function VA(t,e){var n=null==t?"":t+"";return e&&(X(e)?n=e.replace("{value}",n):U(e)&&(n=e(t))),n}var BA=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){this.group.removeAll();var i=t.get(["axisLine","lineStyle","color"]),r=function(t,e){var n=t.get("center"),i=e.getWidth(),r=e.getHeight(),o=Math.min(i,r);return{cx:Er(n[0],e.getWidth()),cy:Er(n[1],e.getHeight()),r:Er(t.get("radius"),o/2)}}(t,n);this._renderMain(t,e,n,i,r),this._data=t.getData()},e.prototype.dispose=function(){},e.prototype._renderMain=function(t,e,n,i,r){var o=this.group,a=t.get("clockwise"),s=-t.get("startAngle")/180*Math.PI,l=-t.get("endAngle")/180*Math.PI,u=t.getModel("axisLine"),h=u.get("roundCap")?CS:Cu,c=u.get("show"),p=u.getModel("lineStyle"),d=p.get("width"),f=[s,l];ja(f,!a);for(var g=(l=f[1])-(s=f[0]),y=s,v=0;c&&v<i.length;v++){var m=new h({shape:{startAngle:y,endAngle:l=s+g*Math.min(Math.max(i[v][0],0),1),cx:r.cx,cy:r.cy,clockwise:a,r0:r.r-d,r:r.r},silent:!0});m.setStyle({fill:i[v][1]}),m.setStyle(p.getLineStyle(["color","width"])),o.add(m),y=l}var x=function(t){if(t<=0)return i[0][1];var e;for(e=0;e<i.length;e++)if(i[e][0]>=t&&(0===e?0:i[e-1][0])<t)return i[e][1];return i[e-1][1]};this._renderTicks(t,e,n,x,r,s,l,a,d),this._renderTitleAndDetail(t,e,n,x,r),this._renderAnchor(t,r),this._renderPointer(t,e,n,x,r,s,l,a,d)},e.prototype._renderTicks=function(t,e,n,i,r,o,a,s,l){for(var u,h,c=this.group,p=r.cx,d=r.cy,f=r.r,g=+t.get("min"),y=+t.get("max"),v=t.getModel("splitLine"),m=t.getModel("axisTick"),x=t.getModel("axisLabel"),_=t.get("splitNumber"),b=m.get("splitNumber"),w=Er(v.get("length"),f),S=Er(m.get("length"),f),M=o,I=(a-o)/_,T=I/b,C=v.getModel("lineStyle").getLineStyle(),D=m.getModel("lineStyle").getLineStyle(),A=v.get("distance"),k=0;k<=_;k++){if(u=Math.cos(M),h=Math.sin(M),v.get("show")){var L=new zu({shape:{x1:u*(f-(P=A?A+l:l))+p,y1:h*(f-P)+d,x2:u*(f-w-P)+p,y2:h*(f-w-P)+d},style:C,silent:!0});"auto"===C.stroke&&L.setStyle({stroke:i(k/_)}),c.add(L)}if(x.get("show")){var P=x.get("distance")+A,O=VA(zr(k/_*(y-g)+g),x.get("formatter")),R=i(k/_);c.add(new ks({style:Uh(x,{text:O,x:u*(f-w-P)+p,y:h*(f-w-P)+d,verticalAlign:h<-.8?"top":h>.8?"bottom":"middle",align:u<-.4?"left":u>.4?"right":"center"},{inheritColor:R}),silent:!0}))}if(m.get("show")&&k!==_){P=(P=m.get("distance"))?P+l:l;for(var N=0;N<=b;N++){u=Math.cos(M),h=Math.sin(M);var E=new zu({shape:{x1:u*(f-P)+p,y1:h*(f-P)+d,x2:u*(f-S-P)+p,y2:h*(f-S-P)+d},silent:!0,style:D});"auto"===D.stroke&&E.setStyle({stroke:i((k+N/b)/_)}),c.add(E),M+=T}M-=T}else M+=I}},e.prototype._renderPointer=function(t,e,n,i,r,o,a,s,l){var u=this.group,h=this._data,c=this._progressEls,p=[],d=t.get(["pointer","show"]),f=t.getModel("progress"),g=f.get("show"),y=t.getData(),v=y.mapDimension("value"),m=+t.get("min"),x=+t.get("max"),_=[m,x],b=[o,a];function w(e,n){var i,o=y.getItemModel(e).getModel("pointer"),a=Er(o.get("width"),r.r),s=Er(o.get("length"),r.r),l=t.get(["pointer","icon"]),u=o.get("offsetCenter"),h=Er(u[0],r.r),c=Er(u[1],r.r),p=o.get("keepAspect");return(i=l?Ly(l,h-a/2,c-s,a,s,null,p):new zA({shape:{angle:-Math.PI/2,width:a,r:s,x:h,y:c}})).rotation=-(n+Math.PI/2),i.x=r.cx,i.y=r.cy,i}function S(t,e){var n=f.get("roundCap")?CS:Cu,i=f.get("overlap"),a=i?f.get("width"):l/y.count(),u=i?r.r-a:r.r-(t+1)*a,h=i?r.r:r.r-t*a,c=new n({shape:{startAngle:o,endAngle:e,cx:r.cx,cy:r.cy,clockwise:s,r0:u,r:h}});return i&&(c.z2=x-y.get(v,t)%x),c}(g||d)&&(y.diff(h).add((function(e){var n=y.get(v,e);if(d){var i=w(e,o);oh(i,{rotation:-((isNaN(+n)?b[0]:Nr(n,_,b,!0))+Math.PI/2)},t),u.add(i),y.setItemGraphicEl(e,i)}if(g){var r=S(e,o),a=f.get("clip");oh(r,{shape:{endAngle:Nr(n,_,b,a)}},t),u.add(r),Ys(t.seriesIndex,y.dataType,e,r),p[e]=r}})).update((function(e,n){var i=y.get(v,e);if(d){var r=h.getItemGraphicEl(n),a=r?r.rotation:o,s=w(e,a);s.rotation=a,rh(s,{rotation:-((isNaN(+i)?b[0]:Nr(i,_,b,!0))+Math.PI/2)},t),u.add(s),y.setItemGraphicEl(e,s)}if(g){var l=c[n],m=S(e,l?l.shape.endAngle:o),x=f.get("clip");rh(m,{shape:{endAngle:Nr(i,_,b,x)}},t),u.add(m),Ys(t.seriesIndex,y.dataType,e,m),p[e]=m}})).execute(),y.each((function(t){var e=y.getItemModel(t),n=e.getModel("emphasis"),r=n.get("focus"),o=n.get("blurScope"),a=n.get("disabled");if(d){var s=y.getItemGraphicEl(t),l=y.getItemVisual(t,"style"),u=l.fill;if(s instanceof _s){var h=s.style;s.useStyle(A({image:h.image,x:h.x,y:h.y,width:h.width,height:h.height},l))}else s.useStyle(l),"pointer"!==s.type&&s.setColor(u);s.setStyle(e.getModel(["pointer","itemStyle"]).getItemStyle()),"auto"===s.style.fill&&s.setStyle("fill",i(Nr(y.get(v,t),_,[0,1],!0))),s.z2EmphasisLift=0,Vl(s,e),Rl(s,r,o,a)}if(g){var c=p[t];c.useStyle(y.getItemVisual(t,"style")),c.setStyle(e.getModel(["progress","itemStyle"]).getItemStyle()),c.z2EmphasisLift=0,Vl(c,e),Rl(c,r,o,a)}})),this._progressEls=p)},e.prototype._renderAnchor=function(t,e){var n=t.getModel("anchor");if(n.get("show")){var i=n.get("size"),r=n.get("icon"),o=n.get("offsetCenter"),a=n.get("keepAspect"),s=Ly(r,e.cx-i/2+Er(o[0],e.r),e.cy-i/2+Er(o[1],e.r),i,i,null,a);s.z2=n.get("showAbove")?1:0,s.setStyle(n.getModel("itemStyle").getItemStyle()),this.group.add(s)}},e.prototype._renderTitleAndDetail=function(t,e,n,i,r){var o=this,a=t.getData(),s=a.mapDimension("value"),l=+t.get("min"),u=+t.get("max"),h=new Cr,c=[],p=[],d=t.isAnimationEnabled(),f=t.get(["pointer","showAbove"]);a.diff(this._data).add((function(t){c[t]=new ks({silent:!0}),p[t]=new ks({silent:!0})})).update((function(t,e){c[t]=o._titleEls[e],p[t]=o._detailEls[e]})).execute(),a.each((function(e){var n=a.getItemModel(e),o=a.get(s,e),g=new Cr,y=i(Nr(o,[l,u],[0,1],!0)),v=n.getModel("title");if(v.get("show")){var m=v.get("offsetCenter"),x=r.cx+Er(m[0],r.r),_=r.cy+Er(m[1],r.r);(D=c[e]).attr({z2:f?0:2,style:Uh(v,{x:x,y:_,text:a.getName(e),align:"center",verticalAlign:"middle"},{inheritColor:y})}),g.add(D)}var b=n.getModel("detail");if(b.get("show")){var w=b.get("offsetCenter"),S=r.cx+Er(w[0],r.r),M=r.cy+Er(w[1],r.r),I=Er(b.get("width"),r.r),T=Er(b.get("height"),r.r),C=t.get(["progress","show"])?a.getItemVisual(e,"style").fill:y,D=p[e],A=b.get("formatter");D.attr({z2:f?0:2,style:Uh(b,{x:S,y:M,text:VA(o,A),width:isNaN(I)?null:I,height:isNaN(T)?null:T,align:"center",verticalAlign:"middle"},{inheritColor:C})}),Qh(D,{normal:b},o,(function(t){return VA(t,A)})),d&&tc(D,e,a,t,{getFormattedLabel:function(t,e,n,i,r,a){return VA(a?a.interpolatedValue:o,A)}}),g.add(D)}h.add(g)})),this.group.add(h),this._titleEls=c,this._detailEls=p},e.type="gauge",e}(xg),FA=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.visualStyleAccessPath="itemStyle",n}return n(e,t),e.prototype.getInitialData=function(t,e){return lM(this,["value"])},e.type="series.gauge",e.defaultOption={z:2,colorBy:"data",center:["50%","50%"],legendHoverLink:!0,radius:"75%",startAngle:225,endAngle:-45,clockwise:!0,min:0,max:100,splitNumber:10,axisLine:{show:!0,roundCap:!1,lineStyle:{color:[[1,"#E6EBF8"]],width:10}},progress:{show:!1,overlap:!0,width:10,roundCap:!1,clip:!0},splitLine:{show:!0,length:10,distance:10,lineStyle:{color:"#63677A",width:3,type:"solid"}},axisTick:{show:!0,splitNumber:5,length:6,distance:10,lineStyle:{color:"#63677A",width:1,type:"solid"}},axisLabel:{show:!0,distance:15,color:"#464646",fontSize:12},pointer:{icon:null,offsetCenter:[0,0],show:!0,showAbove:!0,length:"60%",width:6,keepAspect:!1},anchor:{show:!1,showAbove:!1,size:6,icon:"circle",offsetCenter:[0,0],keepAspect:!1,itemStyle:{color:"#fff",borderWidth:0,borderColor:"#5470c6"}},title:{show:!0,offsetCenter:[0,"20%"],color:"#464646",fontSize:16,valueAnimation:!1},detail:{show:!0,backgroundColor:"rgba(0,0,0,0)",borderWidth:0,borderColor:"#ccc",width:100,height:null,padding:[5,10],offsetCenter:[0,"40%"],color:"#464646",fontSize:30,fontWeight:"bold",lineHeight:30,valueAnimation:!1}},e}(sg);var GA=["itemStyle","opacity"],WA=function(t){function e(e,n){var i=t.call(this)||this,r=i,o=new Ru,a=new ks;return r.setTextContent(a),i.setTextGuideLine(o),i.updateData(e,n,!0),i}return n(e,t),e.prototype.updateData=function(t,e,n){var i=this,r=t.hostModel,o=t.getItemModel(e),a=t.getItemLayout(e),s=o.getModel("emphasis"),l=o.get(GA);l=null==l?1:l,n||hh(i),i.useStyle(t.getItemVisual(e,"style")),i.style.lineJoin="round",n?(i.setShape({points:a.points}),i.style.opacity=0,oh(i,{style:{opacity:l}},r,e)):rh(i,{style:{opacity:l},shape:{points:a.points}},r,e),Vl(i,o),this._updateLabel(t,e),Rl(this,s.get("focus"),s.get("blurScope"),s.get("disabled"))},e.prototype._updateLabel=function(t,e){var n=this,i=this.getTextGuideLine(),r=n.getTextContent(),o=t.hostModel,a=t.getItemModel(e),s=t.getItemLayout(e).label,l=t.getItemVisual(e,"style"),u=l.fill;Hh(r,Yh(a),{labelFetcher:t.hostModel,labelDataIndex:e,defaultOpacity:l.opacity,defaultText:t.getName(e)},{normal:{align:s.textAlign,verticalAlign:s.verticalAlign}}),n.setTextConfig({local:!0,inside:!!s.inside,insideStroke:u,outsideFill:u});var h=s.linePoints;i.setShape({points:h}),n.textGuideLineConfig={anchor:h?new Ji(h[0][0],h[0][1]):null},rh(r,{style:{x:s.x,y:s.y}},o,e),r.attr({rotation:s.rotation,originX:s.x,originY:s.y,z2:10}),pb(n,db(a),{stroke:u})},e}(Pu),HA=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.ignoreLabelLineUpdate=!0,n}return n(e,t),e.prototype.render=function(t,e,n){var i=t.getData(),r=this._data,o=this.group;i.diff(r).add((function(t){var e=new WA(i,t);i.setItemGraphicEl(t,e),o.add(e)})).update((function(t,e){var n=r.getItemGraphicEl(e);n.updateData(i,t),o.add(n),i.setItemGraphicEl(t,n)})).remove((function(e){uh(r.getItemGraphicEl(e),t,e)})).execute(),this._data=i},e.prototype.remove=function(){this.group.removeAll(),this._data=null},e.prototype.dispose=function(){},e.type="funnel",e}(xg),YA=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.init=function(e){t.prototype.init.apply(this,arguments),this.legendVisualProvider=new uM(W(this.getData,this),W(this.getRawData,this)),this._defaultLabelLine(e)},e.prototype.getInitialData=function(t,e){return lM(this,{coordDimensions:["value"],encodeDefaulter:H(Yp,this)})},e.prototype._defaultLabelLine=function(t){co(t,"labelLine",["show"]);var e=t.labelLine,n=t.emphasis.labelLine;e.show=e.show&&t.label.show,n.show=n.show&&t.emphasis.label.show},e.prototype.getDataParams=function(e){var n=this.getData(),i=t.prototype.getDataParams.call(this,e),r=n.mapDimension("value"),o=n.getSum(r);return i.percent=o?+(n.get(r,e)/o*100).toFixed(2):0,i.$vars.push("percent"),i},e.type="series.funnel",e.defaultOption={z:2,legendHoverLink:!0,colorBy:"data",left:80,top:60,right:80,bottom:60,minSize:"0%",maxSize:"100%",sort:"descending",orient:"vertical",gap:0,funnelAlign:"center",label:{show:!0,position:"outer"},labelLine:{show:!0,length:20,lineStyle:{width:1}},itemStyle:{borderColor:"#fff",borderWidth:1},emphasis:{label:{show:!0}},select:{itemStyle:{borderColor:"#212121"}}},e}(sg);function UA(t,e){t.eachSeriesByType("funnel",(function(t){var n=t.getData(),i=n.mapDimension("value"),r=t.get("sort"),o=function(t,e){return xp(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}(t,e),a=t.get("orient"),s=o.width,l=o.height,u=function(t,e){for(var n=t.mapDimension("value"),i=t.mapArray(n,(function(t){return t})),r=[],o="ascending"===e,a=0,s=t.count();a<s;a++)r[a]=a;return U(e)?r.sort(e):"none"!==e&&r.sort((function(t,e){return o?i[t]-i[e]:i[e]-i[t]})),r}(n,r),h=o.x,c=o.y,p="horizontal"===a?[Er(t.get("minSize"),l),Er(t.get("maxSize"),l)]:[Er(t.get("minSize"),s),Er(t.get("maxSize"),s)],d=n.getDataExtent(i),f=t.get("min"),g=t.get("max");null==f&&(f=Math.min(d[0],0)),null==g&&(g=d[1]);var y=t.get("funnelAlign"),v=t.get("gap"),m=(("horizontal"===a?s:l)-v*(n.count()-1))/n.count(),x=function(t,e){if("horizontal"===a){var r=Nr(n.get(i,t)||0,[f,g],p,!0),o=void 0;switch(y){case"top":o=c;break;case"center":o=c+(l-r)/2;break;case"bottom":o=c+(l-r)}return[[e,o],[e,o+r]]}var u,d=Nr(n.get(i,t)||0,[f,g],p,!0);switch(y){case"left":u=h;break;case"center":u=h+(s-d)/2;break;case"right":u=h+s-d}return[[u,e],[u+d,e]]};"ascending"===r&&(m=-m,v=-v,"horizontal"===a?h+=s:c+=l,u=u.reverse());for(var _=0;_<u.length;_++){var b=u[_],w=u[_+1],S=n.getItemModel(b);if("horizontal"===a){var M=S.get(["itemStyle","width"]);null==M?M=m:(M=Er(M,s),"ascending"===r&&(M=-M));var I=x(b,h),T=x(w,h+M);h+=M+v,n.setItemLayout(b,{points:I.concat(T.slice().reverse())})}else{var C=S.get(["itemStyle","height"]);null==C?C=m:(C=Er(C,l),"ascending"===r&&(C=-C));I=x(b,c),T=x(w,c+C);c+=C+v,n.setItemLayout(b,{points:I.concat(T.slice().reverse())})}}!function(t){var e=t.hostModel.get("orient");t.each((function(n){var i,r,o,a,s=t.getItemModel(n),l=s.getModel("label").get("position"),u=s.getModel("labelLine"),h=t.getItemLayout(n),c=h.points,p="inner"===l||"inside"===l||"center"===l||"insideLeft"===l||"insideRight"===l;if(p)"insideLeft"===l?(r=(c[0][0]+c[3][0])/2+5,o=(c[0][1]+c[3][1])/2,i="left"):"insideRight"===l?(r=(c[1][0]+c[2][0])/2-5,o=(c[1][1]+c[2][1])/2,i="right"):(r=(c[0][0]+c[1][0]+c[2][0]+c[3][0])/4,o=(c[0][1]+c[1][1]+c[2][1]+c[3][1])/4,i="center"),a=[[r,o],[r,o]];else{var d=void 0,f=void 0,g=void 0,y=void 0,v=u.get("length");"left"===l?(d=(c[3][0]+c[0][0])/2,f=(c[3][1]+c[0][1])/2,r=(g=d-v)-5,i="right"):"right"===l?(d=(c[1][0]+c[2][0])/2,f=(c[1][1]+c[2][1])/2,r=(g=d+v)+5,i="left"):"top"===l?(d=(c[3][0]+c[0][0])/2,o=(y=(f=(c[3][1]+c[0][1])/2)-v)-5,i="center"):"bottom"===l?(d=(c[1][0]+c[2][0])/2,o=(y=(f=(c[1][1]+c[2][1])/2)+v)+5,i="center"):"rightTop"===l?(d="horizontal"===e?c[3][0]:c[1][0],f="horizontal"===e?c[3][1]:c[1][1],"horizontal"===e?(o=(y=f-v)-5,i="center"):(r=(g=d+v)+5,i="top")):"rightBottom"===l?(d=c[2][0],f=c[2][1],"horizontal"===e?(o=(y=f+v)+5,i="center"):(r=(g=d+v)+5,i="bottom")):"leftTop"===l?(d=c[0][0],f="horizontal"===e?c[0][1]:c[1][1],"horizontal"===e?(o=(y=f-v)-5,i="center"):(r=(g=d-v)-5,i="right")):"leftBottom"===l?(d="horizontal"===e?c[1][0]:c[3][0],f="horizontal"===e?c[1][1]:c[2][1],"horizontal"===e?(o=(y=f+v)+5,i="center"):(r=(g=d-v)-5,i="right")):(d=(c[1][0]+c[2][0])/2,f=(c[1][1]+c[2][1])/2,"horizontal"===e?(o=(y=f+v)+5,i="center"):(r=(g=d+v)+5,i="left")),"horizontal"===e?r=g=d:o=y=f,a=[[d,f],[g,y]]}h.label={linePoints:a,x:r,y:o,verticalAlign:"middle",textAlign:i,inside:p}}))}(n)}))}var XA=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n._dataGroup=new Cr,n._initialized=!1,n}return n(e,t),e.prototype.init=function(){this.group.add(this._dataGroup)},e.prototype.render=function(t,e,n,i){this._progressiveEls=null;var r=this._dataGroup,o=t.getData(),a=this._data,s=t.coordinateSystem,l=s.dimensions,u=qA(t);if(o.diff(a).add((function(t){KA(jA(o,r,t,l,s),o,t,u)})).update((function(e,n){var i=a.getItemGraphicEl(n),r=ZA(o,e,l,s);o.setItemGraphicEl(e,i),rh(i,{shape:{points:r}},t,e),hh(i),KA(i,o,e,u)})).remove((function(t){var e=a.getItemGraphicEl(t);r.remove(e)})).execute(),!this._initialized){this._initialized=!0;var h=function(t,e,n){var i=t.model,r=t.getRect(),o=new Cs({shape:{x:r.x,y:r.y,width:r.width,height:r.height}}),a="horizontal"===i.get("layout")?"width":"height";return o.setShape(a,0),oh(o,{shape:{width:r.width,height:r.height}},e,n),o}(s,t,(function(){setTimeout((function(){r.removeClipPath()}))}));r.setClipPath(h)}this._data=o},e.prototype.incrementalPrepareRender=function(t,e,n){this._initialized=!0,this._data=null,this._dataGroup.removeAll()},e.prototype.incrementalRender=function(t,e,n){for(var i=e.getData(),r=e.coordinateSystem,o=r.dimensions,a=qA(e),s=this._progressiveEls=[],l=t.start;l<t.end;l++){var u=jA(i,this._dataGroup,l,o,r);u.incremental=!0,KA(u,i,l,a),s.push(u)}},e.prototype.remove=function(){this._dataGroup&&this._dataGroup.removeAll(),this._data=null},e.type="parallel",e}(xg);function ZA(t,e,n,i){for(var r,o=[],a=0;a<n.length;a++){var s=n[a],l=t.get(t.mapDimension(s),e);r=l,("category"===i.getAxis(s).type?null==r:null==r||isNaN(r))||o.push(i.dataToPoint(l,s))}return o}function jA(t,e,n,i,r){var o=ZA(t,n,i,r),a=new Ru({shape:{points:o},z2:10});return e.add(a),t.setItemGraphicEl(n,a),a}function qA(t){var e=t.get("smooth",!0);return!0===e&&(e=.3),nt(e=to(e))&&(e=0),{smooth:e}}function KA(t,e,n,i){t.useStyle(e.getItemVisual(n,"style")),t.style.fill=null,t.setShape("smooth",i.smooth);var r=e.getItemModel(n),o=r.getModel("emphasis");Vl(t,r,"lineStyle"),Rl(t,o.get("focus"),o.get("blurScope"),o.get("disabled"))}var $A=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.visualStyleAccessPath="lineStyle",n.visualDrawType="stroke",n}return n(e,t),e.prototype.getInitialData=function(t,e){return ix(null,this,{useEncodeDefaulter:W(JA,null,this)})},e.prototype.getRawIndicesByActiveState=function(t){var e=this.coordinateSystem,n=this.getData(),i=[];return e.eachActiveState(n,(function(e,r){t===e&&i.push(n.getRawIndex(r))})),i},e.type="series.parallel",e.dependencies=["parallel"],e.defaultOption={z:2,coordinateSystem:"parallel",parallelIndex:0,label:{show:!1},inactiveOpacity:.05,activeOpacity:1,lineStyle:{width:1,opacity:.45,type:"solid"},emphasis:{label:{show:!1}},progressive:500,smooth:!1,animationEasing:"linear"},e}(sg);function JA(t){var e=t.ecModel.getComponent("parallel",t.get("parallelIndex"));if(e){var n={};return E(e.dimensions,(function(t){var e=+t.replace("dim","");n[t]=e})),n}}var QA=["lineStyle","opacity"],tk={seriesType:"parallel",reset:function(t,e){var n=t.coordinateSystem,i={normal:t.get(["lineStyle","opacity"]),active:t.get("activeOpacity"),inactive:t.get("inactiveOpacity")};return{progress:function(t,e){n.eachActiveState(e,(function(t,n){var r=i[t];if("normal"===t&&e.hasItemOption){var o=e.getItemModel(n).get(QA,!0);null!=o&&(r=o)}e.ensureUniqueItemVisual(n,"style").opacity=r}),t.start,t.end)}}}};function ek(t){!function(t){if(t.parallel)return;var e=!1;E(t.series,(function(t){t&&"parallel"===t.type&&(e=!0)})),e&&(t.parallel=[{}])}(t),function(t){E(ho(t.parallelAxis),(function(e){if(q(e)){var n=e.parallelIndex||0,i=ho(t.parallel)[n];i&&i.parallelAxisDefault&&C(e,i.parallelAxisDefault,!1)}}))}(t)}var nk=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){this._model=t,this._api=n,this._handlers||(this._handlers={},E(ik,(function(t,e){n.getZr().on(e,this._handlers[e]=W(t,this))}),this)),Ag(this,"_throttledDispatchExpand",t.get("axisExpandRate"),"fixRate")},e.prototype.dispose=function(t,e){kg(this,"_throttledDispatchExpand"),E(this._handlers,(function(t,n){e.getZr().off(n,t)})),this._handlers=null},e.prototype._throttledDispatchExpand=function(t){this._dispatchExpand(t)},e.prototype._dispatchExpand=function(t){t&&this._api.dispatchAction(A({type:"parallelAxisExpand"},t))},e.type="parallel",e}(gg),ik={mousedown:function(t){rk(this,"click")&&(this._mouseDownPoint=[t.offsetX,t.offsetY])},mouseup:function(t){var e=this._mouseDownPoint;if(rk(this,"click")&&e){var n=[t.offsetX,t.offsetY];if(Math.pow(e[0]-n[0],2)+Math.pow(e[1]-n[1],2)>5)return;var i=this._model.coordinateSystem.getSlidedAxisExpandWindow([t.offsetX,t.offsetY]);"none"!==i.behavior&&this._dispatchExpand({axisExpandWindow:i.axisExpandWindow})}this._mouseDownPoint=null},mousemove:function(t){if(!this._mouseDownPoint&&rk(this,"mousemove")){var e=this._model,n=e.coordinateSystem.getSlidedAxisExpandWindow([t.offsetX,t.offsetY]),i=n.behavior;"jump"===i&&this._throttledDispatchExpand.debounceNextCall(e.get("axisExpandDebounce")),this._throttledDispatchExpand("none"===i?null:{axisExpandWindow:n.axisExpandWindow,animation:"jump"===i?null:{duration:0}})}}};function rk(t,e){var n=t._model;return n.get("axisExpandable")&&n.get("axisExpandTriggerOn")===e}var ok=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.init=function(){t.prototype.init.apply(this,arguments),this.mergeOption({})},e.prototype.mergeOption=function(t){var e=this.option;t&&C(e,t,!0),this._initDimensions()},e.prototype.contains=function(t,e){var n=t.get("parallelIndex");return null!=n&&e.getComponent("parallel",n)===this},e.prototype.setAxisExpand=function(t){E(["axisExpandable","axisExpandCenter","axisExpandCount","axisExpandWidth","axisExpandWindow"],(function(e){t.hasOwnProperty(e)&&(this.option[e]=t[e])}),this)},e.prototype._initDimensions=function(){var t=this.dimensions=[],e=this.parallelAxisIndex=[];E(B(this.ecModel.queryComponents({mainType:"parallelAxis"}),(function(t){return(t.get("parallelIndex")||0)===this.componentIndex}),this),(function(n){t.push("dim"+n.get("dim")),e.push(n.componentIndex)}))},e.type="parallel",e.dependencies=["parallelAxis"],e.layoutMode="box",e.defaultOption={z:0,left:80,top:60,right:80,bottom:60,layout:"horizontal",axisExpandable:!1,axisExpandCenter:null,axisExpandCount:0,axisExpandWidth:50,axisExpandRate:17,axisExpandDebounce:50,axisExpandSlideTriggerArea:[-.15,.05,.4],axisExpandTriggerOn:"click",parallelAxisDefault:null},e}(Tp),ak=function(t){function e(e,n,i,r,o){var a=t.call(this,e,n,i)||this;return a.type=r||"value",a.axisIndex=o,a}return n(e,t),e.prototype.isHorizontal=function(){return"horizontal"!==this.coordinateSystem.getModel().get("layout")},e}(W_);function sk(t,e,n,i,r,o){t=t||0;var a=n[1]-n[0];if(null!=r&&(r=uk(r,[0,a])),null!=o&&(o=Math.max(o,null!=r?r:0)),"all"===i){var s=Math.abs(e[1]-e[0]);s=uk(s,[0,a]),r=o=uk(s,[r,o]),i=0}e[0]=uk(e[0],n),e[1]=uk(e[1],n);var l=lk(e,i);e[i]+=t;var u,h=r||0,c=n.slice();return l.sign<0?c[0]+=h:c[1]-=h,e[i]=uk(e[i],c),u=lk(e,i),null!=r&&(u.sign!==l.sign||u.span<r)&&(e[1-i]=e[i]+l.sign*r),u=lk(e,i),null!=o&&u.span>o&&(e[1-i]=e[i]+u.sign*o),e}function lk(t,e){var n=t[e]-t[1-e];return{span:Math.abs(n),sign:n>0?-1:n<0?1:e?-1:1}}function uk(t,e){return Math.min(null!=e[1]?e[1]:1/0,Math.max(null!=e[0]?e[0]:-1/0,t))}var hk=E,ck=Math.min,pk=Math.max,dk=Math.floor,fk=Math.ceil,gk=zr,yk=Math.PI,vk=function(){function t(t,e,n){this.type="parallel",this._axesMap=ft(),this._axesLayout={},this.dimensions=t.dimensions,this._model=t,this._init(t,e,n)}return t.prototype._init=function(t,e,n){var i=t.dimensions,r=t.parallelAxisIndex;hk(i,(function(t,n){var i=r[n],o=e.getComponent("parallelAxis",i),a=this._axesMap.set(t,new ak(t,r_(o),[0,0],o.get("type"),i)),s="category"===a.type;a.onBand=s&&o.get("boundaryGap"),a.inverse=o.get("inverse"),o.axis=a,a.model=o,a.coordinateSystem=o.coordinateSystem=this}),this)},t.prototype.update=function(t,e){this._updateAxesFromSeries(this._model,t)},t.prototype.containPoint=function(t){var e=this._makeLayoutInfo(),n=e.axisBase,i=e.layoutBase,r=e.pixelDimIndex,o=t[1-r],a=t[r];return o>=n&&o<=n+e.axisLength&&a>=i&&a<=i+e.layoutLength},t.prototype.getModel=function(){return this._model},t.prototype._updateAxesFromSeries=function(t,e){e.eachSeries((function(n){if(t.contains(n,e)){var i=n.getData();hk(this.dimensions,(function(t){var e=this._axesMap.get(t);e.scale.unionExtentFromData(i,i.mapDimension(t)),i_(e.scale,e.model)}),this)}}),this)},t.prototype.resize=function(t,e){this._rect=xp(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()}),this._layoutAxes()},t.prototype.getRect=function(){return this._rect},t.prototype._makeLayoutInfo=function(){var t,e=this._model,n=this._rect,i=["x","y"],r=["width","height"],o=e.get("layout"),a="horizontal"===o?0:1,s=n[r[a]],l=[0,s],u=this.dimensions.length,h=mk(e.get("axisExpandWidth"),l),c=mk(e.get("axisExpandCount")||0,[0,u]),p=e.get("axisExpandable")&&u>3&&u>c&&c>1&&h>0&&s>0,d=e.get("axisExpandWindow");d?(t=mk(d[1]-d[0],l),d[1]=d[0]+t):(t=mk(h*(c-1),l),(d=[h*(e.get("axisExpandCenter")||dk(u/2))-t/2])[1]=d[0]+t);var f=(s-t)/(u-c);f<3&&(f=0);var g=[dk(gk(d[0]/h,1))+1,fk(gk(d[1]/h,1))-1],y=f/h*d[0];return{layout:o,pixelDimIndex:a,layoutBase:n[i[a]],layoutLength:s,axisBase:n[i[1-a]],axisLength:n[r[1-a]],axisExpandable:p,axisExpandWidth:h,axisCollapseWidth:f,axisExpandWindow:d,axisCount:u,winInnerIndices:g,axisExpandWindow0Pos:y}},t.prototype._layoutAxes=function(){var t=this._rect,e=this._axesMap,n=this.dimensions,i=this._makeLayoutInfo(),r=i.layout;e.each((function(t){var e=[0,i.axisLength],n=t.inverse?1:0;t.setExtent(e[n],e[1-n])})),hk(n,(function(e,n){var o=(i.axisExpandable?_k:xk)(n,i),a={horizontal:{x:o.position,y:i.axisLength},vertical:{x:0,y:o.position}},s={horizontal:yk/2,vertical:0},l=[a[r].x+t.x,a[r].y+t.y],u=s[r],h=[1,0,0,1,0,0];zi(h,h,u),Ei(h,h,l),this._axesLayout[e]={position:l,rotation:u,transform:h,axisNameAvailableWidth:o.axisNameAvailableWidth,axisLabelShow:o.axisLabelShow,nameTruncateMaxWidth:o.nameTruncateMaxWidth,tickDirection:1,labelDirection:1}}),this)},t.prototype.getAxis=function(t){return this._axesMap.get(t)},t.prototype.dataToPoint=function(t,e){return this.axisCoordToPoint(this._axesMap.get(e).dataToCoord(t),e)},t.prototype.eachActiveState=function(t,e,n,i){null==n&&(n=0),null==i&&(i=t.count());var r=this._axesMap,o=this.dimensions,a=[],s=[];E(o,(function(e){a.push(t.mapDimension(e)),s.push(r.get(e).model)}));for(var l=this.hasAxisBrushed(),u=n;u<i;u++){var h=void 0;if(l){h="active";for(var c=t.getValues(a,u),p=0,d=o.length;p<d;p++){if("inactive"===s[p].getActiveState(c[p])){h="inactive";break}}}else h="normal";e(h,u)}},t.prototype.hasAxisBrushed=function(){for(var t=this.dimensions,e=this._axesMap,n=!1,i=0,r=t.length;i<r;i++)"normal"!==e.get(t[i]).model.getActiveState()&&(n=!0);return n},t.prototype.axisCoordToPoint=function(t,e){return Th([t,0],this._axesLayout[e].transform)},t.prototype.getAxisLayout=function(t){return T(this._axesLayout[t])},t.prototype.getSlidedAxisExpandWindow=function(t){var e=this._makeLayoutInfo(),n=e.pixelDimIndex,i=e.axisExpandWindow.slice(),r=i[1]-i[0],o=[0,e.axisExpandWidth*(e.axisCount-1)];if(!this.containPoint(t))return{behavior:"none",axisExpandWindow:i};var a,s=t[n]-e.layoutBase-e.axisExpandWindow0Pos,l="slide",u=e.axisCollapseWidth,h=this._model.get("axisExpandSlideTriggerArea"),c=null!=h[0];if(u)c&&u&&s<r*h[0]?(l="jump",a=s-r*h[2]):c&&u&&s>r*(1-h[0])?(l="jump",a=s-r*(1-h[2])):(a=s-r*h[1])>=0&&(a=s-r*(1-h[1]))<=0&&(a=0),(a*=e.axisExpandWidth/u)?sk(a,i,o,"all"):l="none";else{var p=i[1]-i[0];(i=[pk(0,o[1]*s/p-p/2)])[1]=ck(o[1],i[0]+p),i[0]=i[1]-p}return{axisExpandWindow:i,behavior:l}},t}();function mk(t,e){return ck(pk(t,e[0]),e[1])}function xk(t,e){var n=e.layoutLength/(e.axisCount-1);return{position:n*t,axisNameAvailableWidth:n,axisLabelShow:!0}}function _k(t,e){var n,i,r=e.layoutLength,o=e.axisExpandWidth,a=e.axisCount,s=e.axisCollapseWidth,l=e.winInnerIndices,u=s,h=!1;return t<l[0]?(n=t*s,i=s):t<=l[1]?(n=e.axisExpandWindow0Pos+t*o-e.axisExpandWindow[0],u=o,h=!0):(n=r-(a-1-t)*s,i=s),{position:n,axisNameAvailableWidth:u,axisLabelShow:h,nameTruncateMaxWidth:i}}var bk={create:function(t,e){var n=[];return t.eachComponent("parallel",(function(i,r){var o=new vk(i,t,e);o.name="parallel_"+r,o.resize(i,e),i.coordinateSystem=o,o.model=i,n.push(o)})),t.eachSeries((function(t){if("parallel"===t.get("coordinateSystem")){var e=t.getReferringComponents("parallel",Co).models[0];t.coordinateSystem=e.coordinateSystem}})),n}},wk=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.activeIntervals=[],n}return n(e,t),e.prototype.getAreaSelectStyle=function(){return Wo([["fill","color"],["lineWidth","borderWidth"],["stroke","borderColor"],["width","width"],["opacity","opacity"]])(this.getModel("areaSelectStyle"))},e.prototype.setActiveIntervals=function(t){var e=this.activeIntervals=T(t);if(e)for(var n=e.length-1;n>=0;n--)Vr(e[n])},e.prototype.getActiveState=function(t){var e=this.activeIntervals;if(!e.length)return"normal";if(null==t||isNaN(+t))return"inactive";if(1===e.length){var n=e[0];if(n[0]<=t&&t<=n[1])return"active"}else for(var i=0,r=e.length;i<r;i++)if(e[i][0]<=t&&t<=e[i][1])return"active";return"inactive"},e}(Tp);R(wk,c_);var Sk=!0,Mk=Math.min,Ik=Math.max,Tk=Math.pow,Ck="globalPan",Dk={w:[0,0],e:[0,1],n:[1,0],s:[1,1]},Ak={w:"ew",e:"ew",n:"ns",s:"ns",ne:"nesw",sw:"nesw",nw:"nwse",se:"nwse"},kk={brushStyle:{lineWidth:2,stroke:"rgba(210,219,238,0.3)",fill:"#D2DBEE"},transformable:!0,brushMode:"single",removeOnClick:!1},Lk=0,Pk=function(t){function e(e){var n=t.call(this)||this;return n._track=[],n._covers=[],n._handlers={},n._zr=e,n.group=new Cr,n._uid="brushController_"+Lk++,E(oL,(function(t,e){this._handlers[e]=W(t,this)}),n),n}return n(e,t),e.prototype.enableBrush=function(t){return this._brushType&&this._doDisableBrush(),t.brushType&&this._doEnableBrush(t),this},e.prototype._doEnableBrush=function(t){var e=this._zr;this._enableGlobalPan||function(t,e,n){DI(t)[e]=n}(e,Ck,this._uid),E(this._handlers,(function(t,n){e.on(n,t)})),this._brushType=t.brushType,this._brushOption=C(T(kk),t,!0)},e.prototype._doDisableBrush=function(){var t=this._zr;!function(t,e,n){var i=DI(t);i[e]===n&&(i[e]=null)}(t,Ck,this._uid),E(this._handlers,(function(e,n){t.off(n,e)})),this._brushType=this._brushOption=null},e.prototype.setPanels=function(t){if(t&&t.length){var e=this._panels={};E(t,(function(t){e[t.panelId]=T(t)}))}else this._panels=null;return this},e.prototype.mount=function(t){t=t||{},this._enableGlobalPan=t.enableGlobalPan;var e=this.group;return this._zr.add(e),e.attr({x:t.x||0,y:t.y||0,rotation:t.rotation||0,scaleX:t.scaleX||1,scaleY:t.scaleY||1}),this._transform=e.getLocalTransform(),this},e.prototype.updateCovers=function(t){t=z(t,(function(t){return C(T(kk),t,!0)}));var e=this._covers,n=this._covers=[],i=this,r=this._creatingCover;return new Mm(e,t,(function(t,e){return o(t.__brushOption,e)}),o).add(a).update(a).remove((function(t){e[t]!==r&&i.group.remove(e[t])})).execute(),this;function o(t,e){return(null!=t.id?t.id:"\0-brush-index-"+e)+"-"+t.brushType}function a(o,a){var s=t[o];if(null!=a&&e[a]===r)n[o]=e[a];else{var l=n[o]=null!=a?(e[a].__brushOption=s,e[a]):Rk(i,Ok(i,s));zk(i,l)}}},e.prototype.unmount=function(){return this.enableBrush(!1),Gk(this),this._zr.remove(this.group),this},e.prototype.dispose=function(){this.unmount(),this.off()},e}(Xt);function Ok(t,e){var n=sL[e.brushType].createCover(t,e);return n.__brushOption=e,Ek(n,e),t.group.add(n),n}function Rk(t,e){var n=Vk(e);return n.endCreating&&(n.endCreating(t,e),Ek(e,e.__brushOption)),e}function Nk(t,e){var n=e.__brushOption;Vk(e).updateCoverShape(t,e,n.range,n)}function Ek(t,e){var n=e.z;null==n&&(n=1e4),t.traverse((function(t){t.z=n,t.z2=n}))}function zk(t,e){Vk(e).updateCommon(t,e),Nk(t,e)}function Vk(t){return sL[t.__brushOption.brushType]}function Bk(t,e,n){var i,r=t._panels;if(!r)return Sk;var o=t._transform;return E(r,(function(t){t.isTargetByCursor(e,n,o)&&(i=t)})),i}function Fk(t,e){var n=t._panels;if(!n)return Sk;var i=e.__brushOption.panelId;return null!=i?n[i]:Sk}function Gk(t){var e=t._covers,n=e.length;return E(e,(function(e){t.group.remove(e)}),t),e.length=0,!!n}function Wk(t,e){var n=z(t._covers,(function(t){var e=t.__brushOption,n=T(e.range);return{brushType:e.brushType,panelId:e.panelId,range:n}}));t.trigger("brush",{areas:n,isEnd:!!e.isEnd,removeOnClick:!!e.removeOnClick})}function Hk(t){var e=t.length-1;return e<0&&(e=0),[t[0],t[e]]}function Yk(t,e,n,i){var r=new Cr;return r.add(new Cs({name:"main",style:jk(n),silent:!0,draggable:!0,cursor:"move",drift:H($k,t,e,r,["n","s","w","e"]),ondragend:H(Wk,e,{isEnd:!0})})),E(i,(function(n){r.add(new Cs({name:n.join(""),style:{opacity:0},draggable:!0,silent:!0,invisible:!0,drift:H($k,t,e,r,n),ondragend:H(Wk,e,{isEnd:!0})}))})),r}function Uk(t,e,n,i){var r=i.brushStyle.lineWidth||0,o=Ik(r,6),a=n[0][0],s=n[1][0],l=a-r/2,u=s-r/2,h=n[0][1],c=n[1][1],p=h-o+r/2,d=c-o+r/2,f=h-a,g=c-s,y=f+r,v=g+r;Zk(t,e,"main",a,s,f,g),i.transformable&&(Zk(t,e,"w",l,u,o,v),Zk(t,e,"e",p,u,o,v),Zk(t,e,"n",l,u,y,o),Zk(t,e,"s",l,d,y,o),Zk(t,e,"nw",l,u,o,o),Zk(t,e,"ne",p,u,o,o),Zk(t,e,"sw",l,d,o,o),Zk(t,e,"se",p,d,o,o))}function Xk(t,e){var n=e.__brushOption,i=n.transformable,r=e.childAt(0);r.useStyle(jk(n)),r.attr({silent:!i,cursor:i?"move":"default"}),E([["w"],["e"],["n"],["s"],["s","e"],["s","w"],["n","e"],["n","w"]],(function(n){var r=e.childOfName(n.join("")),o=1===n.length?Kk(t,n[0]):function(t,e){var n=[Kk(t,e[0]),Kk(t,e[1])];return("e"===n[0]||"w"===n[0])&&n.reverse(),n.join("")}(t,n);r&&r.attr({silent:!i,invisible:!i,cursor:i?Ak[o]+"-resize":null})}))}function Zk(t,e,n,i,r,o,a){var s=e.childOfName(n);s&&s.setShape(function(t){var e=Mk(t[0][0],t[1][0]),n=Mk(t[0][1],t[1][1]),i=Ik(t[0][0],t[1][0]),r=Ik(t[0][1],t[1][1]);return{x:e,y:n,width:i-e,height:r-n}}(tL(t,e,[[i,r],[i+o,r+a]])))}function jk(t){return k({strokeNoScale:!0},t.brushStyle)}function qk(t,e,n,i){var r=[Mk(t,n),Mk(e,i)],o=[Ik(t,n),Ik(e,i)];return[[r[0],o[0]],[r[1],o[1]]]}function Kk(t,e){return{left:"w",right:"e",top:"n",bottom:"s"}[Ch({w:"left",e:"right",n:"top",s:"bottom"}[e],function(t){return Ih(t.group)}(t))]}function $k(t,e,n,i,r,o){var a=n.__brushOption,s=t.toRectRange(a.range),l=Qk(e,r,o);E(i,(function(t){var e=Dk[t];s[e[0]][e[1]]+=l[e[0]]})),a.range=t.fromRectRange(qk(s[0][0],s[1][0],s[0][1],s[1][1])),zk(e,n),Wk(e,{isEnd:!1})}function Jk(t,e,n,i){var r=e.__brushOption.range,o=Qk(t,n,i);E(r,(function(t){t[0]+=o[0],t[1]+=o[1]})),zk(t,e),Wk(t,{isEnd:!1})}function Qk(t,e,n){var i=t.group,r=i.transformCoordToLocal(e,n),o=i.transformCoordToLocal(0,0);return[r[0]-o[0],r[1]-o[1]]}function tL(t,e,n){var i=Fk(t,e);return i&&i!==Sk?i.clipPath(n,t._transform):T(n)}function eL(t){var e=t.event;e.preventDefault&&e.preventDefault()}function nL(t,e,n){return t.childOfName("main").contain(e,n)}function iL(t,e,n,i){var r,o=t._creatingCover,a=t._creatingPanel,s=t._brushOption;if(t._track.push(n.slice()),function(t){var e=t._track;if(!e.length)return!1;var n=e[e.length-1],i=e[0],r=n[0]-i[0],o=n[1]-i[1];return Tk(r*r+o*o,.5)>6}(t)||o){if(a&&!o){"single"===s.brushMode&&Gk(t);var l=T(s);l.brushType=rL(l.brushType,a),l.panelId=a===Sk?null:a.panelId,o=t._creatingCover=Ok(t,l),t._covers.push(o)}if(o){var u=sL[rL(t._brushType,a)];o.__brushOption.range=u.getCreatingRange(tL(t,o,t._track)),i&&(Rk(t,o),u.updateCommon(t,o)),Nk(t,o),r={isEnd:i}}}else i&&"single"===s.brushMode&&s.removeOnClick&&Bk(t,e,n)&&Gk(t)&&(r={isEnd:i,removeOnClick:!0});return r}function rL(t,e){return"auto"===t?e.defaultBrushType:t}var oL={mousedown:function(t){if(this._dragging)aL(this,t);else if(!t.target||!t.target.draggable){eL(t);var e=this.group.transformCoordToLocal(t.offsetX,t.offsetY);this._creatingCover=null,(this._creatingPanel=Bk(this,t,e))&&(this._dragging=!0,this._track=[e.slice()])}},mousemove:function(t){var e=t.offsetX,n=t.offsetY,i=this.group.transformCoordToLocal(e,n);if(function(t,e,n){if(t._brushType&&!function(t,e,n){var i=t._zr;return e<0||e>i.getWidth()||n<0||n>i.getHeight()}(t,e.offsetX,e.offsetY)){var i=t._zr,r=t._covers,o=Bk(t,e,n);if(!t._dragging)for(var a=0;a<r.length;a++){var s=r[a].__brushOption;if(o&&(o===Sk||s.panelId===o.panelId)&&sL[s.brushType].contain(r[a],n[0],n[1]))return}o&&i.setCursorStyle("crosshair")}}(this,t,i),this._dragging){eL(t);var r=iL(this,t,i,!1);r&&Wk(this,r)}},mouseup:function(t){aL(this,t)}};function aL(t,e){if(t._dragging){eL(e);var n=e.offsetX,i=e.offsetY,r=t.group.transformCoordToLocal(n,i),o=iL(t,e,r,!0);t._dragging=!1,t._track=[],t._creatingCover=null,o&&Wk(t,o)}}var sL={lineX:lL(0),lineY:lL(1),rect:{createCover:function(t,e){function n(t){return t}return Yk({toRectRange:n,fromRectRange:n},t,e,[["w"],["e"],["n"],["s"],["s","e"],["s","w"],["n","e"],["n","w"]])},getCreatingRange:function(t){var e=Hk(t);return qk(e[1][0],e[1][1],e[0][0],e[0][1])},updateCoverShape:function(t,e,n,i){Uk(t,e,n,i)},updateCommon:Xk,contain:nL},polygon:{createCover:function(t,e){var n=new Cr;return n.add(new Ru({name:"main",style:jk(e),silent:!0})),n},getCreatingRange:function(t){return t},endCreating:function(t,e){e.remove(e.childAt(0)),e.add(new Pu({name:"main",draggable:!0,drift:H(Jk,t,e),ondragend:H(Wk,t,{isEnd:!0})}))},updateCoverShape:function(t,e,n,i){e.childAt(0).setShape({points:tL(t,e,n)})},updateCommon:Xk,contain:nL}};function lL(t){return{createCover:function(e,n){return Yk({toRectRange:function(e){var n=[e,[0,100]];return t&&n.reverse(),n},fromRectRange:function(e){return e[t]}},e,n,[[["w"],["e"]],[["n"],["s"]]][t])},getCreatingRange:function(e){var n=Hk(e);return[Mk(n[0][t],n[1][t]),Ik(n[0][t],n[1][t])]},updateCoverShape:function(e,n,i,r){var o,a=Fk(e,n);if(a!==Sk&&a.getLinearBrushOtherExtent)o=a.getLinearBrushOtherExtent(t);else{var s=e._zr;o=[0,[s.getWidth(),s.getHeight()][1-t]]}var l=[i,o];t&&l.reverse(),Uk(e,n,l,r)},updateCommon:Xk,contain:nL}}function uL(t){return t=pL(t),function(e){return kh(e,t)}}function hL(t,e){return t=pL(t),function(n){var i=null!=e?e:n,r=i?t.width:t.height,o=i?t.x:t.y;return[o,o+(r||0)]}}function cL(t,e,n){var i=pL(t);return function(t,r){return i.contain(r[0],r[1])&&!zI(t,e,n)}}function pL(t){return sr.create(t)}var dL=["axisLine","axisTickLabel","axisName"],fL=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.init=function(e,n){t.prototype.init.apply(this,arguments),(this._brushController=new Pk(n.getZr())).on("brush",W(this._onBrush,this))},e.prototype.render=function(t,e,n,i){if(!function(t,e,n){return n&&"axisAreaSelect"===n.type&&e.findComponents({mainType:"parallelAxis",query:n})[0]===t}(t,e,i)){this.axisModel=t,this.api=n,this.group.removeAll();var r=this._axisGroup;if(this._axisGroup=new Cr,this.group.add(this._axisGroup),t.get("show")){var o=function(t,e){return e.getComponent("parallel",t.get("parallelIndex"))}(t,e),a=o.coordinateSystem,s=t.getAreaSelectStyle(),l=s.width,u=t.axis.dim,h=A({strokeContainThreshold:l},a.getAxisLayout(u)),c=new FM(t,h);E(dL,c.add,c),this._axisGroup.add(c.getGroup()),this._refreshBrushController(h,s,t,o,l,n),Ah(r,this._axisGroup,t)}}},e.prototype._refreshBrushController=function(t,e,n,i,r,o){var a=n.axis.getExtent(),s=a[1]-a[0],l=Math.min(30,.1*Math.abs(s)),u=sr.create({x:a[0],y:-r/2,width:s,height:r});u.x-=l,u.width+=2*l,this._brushController.mount({enableGlobalPan:!0,rotation:t.rotation,x:t.position[0],y:t.position[1]}).setPanels([{panelId:"pl",clipPath:uL(u),isTargetByCursor:cL(u,o,i),getLinearBrushOtherExtent:hL(u,0)}]).enableBrush({brushType:"lineX",brushStyle:e,removeOnClick:!0}).updateCovers(function(t){var e=t.axis;return z(t.activeIntervals,(function(t){return{brushType:"lineX",panelId:"pl",range:[e.dataToCoord(t[0],!0),e.dataToCoord(t[1],!0)]}}))}(n))},e.prototype._onBrush=function(t){var e=t.areas,n=this.axisModel,i=n.axis,r=z(e,(function(t){return[i.coordToData(t.range[0],!0),i.coordToData(t.range[1],!0)]}));(!n.option.realtime===t.isEnd||t.removeOnClick)&&this.api.dispatchAction({type:"axisAreaSelect",parallelAxisId:n.id,intervals:r})},e.prototype.dispose=function(){this._brushController.dispose()},e.type="parallelAxis",e}(gg);var gL={type:"axisAreaSelect",event:"axisAreaSelected"};var yL={type:"value",areaSelectStyle:{width:20,borderWidth:1,borderColor:"rgba(160,197,232)",color:"rgba(160,197,232)",opacity:.3},realtime:!0,z:10};function vL(t){t.registerComponentView(nk),t.registerComponentModel(ok),t.registerCoordinateSystem("parallel",bk),t.registerPreprocessor(ek),t.registerComponentModel(wk),t.registerComponentView(fL),SM(t,"parallel",wk,yL),function(t){t.registerAction(gL,(function(t,e){e.eachComponent({mainType:"parallelAxis",query:t},(function(e){e.axis.model.setActiveIntervals(t.intervals)}))})),t.registerAction("parallelAxisExpand",(function(t,e){e.eachComponent({mainType:"parallel",query:t},(function(e){e.setAxisExpand(t)}))}))}(t)}var mL=function(){this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.cpx1=0,this.cpy1=0,this.cpx2=0,this.cpy2=0,this.extent=0},xL=function(t){function e(e){return t.call(this,e)||this}return n(e,t),e.prototype.getDefaultShape=function(){return new mL},e.prototype.buildPath=function(t,e){var n=e.extent;t.moveTo(e.x1,e.y1),t.bezierCurveTo(e.cpx1,e.cpy1,e.cpx2,e.cpy2,e.x2,e.y2),"vertical"===e.orient?(t.lineTo(e.x2+n,e.y2),t.bezierCurveTo(e.cpx2+n,e.cpy2,e.cpx1+n,e.cpy1,e.x1+n,e.y1)):(t.lineTo(e.x2,e.y2+n),t.bezierCurveTo(e.cpx2,e.cpy2+n,e.cpx1,e.cpy1+n,e.x1,e.y1+n)),t.closePath()},e.prototype.highlight=function(){_l(this)},e.prototype.downplay=function(){bl(this)},e}(gs),_L=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n._focusAdjacencyDisabled=!1,n}return n(e,t),e.prototype.render=function(t,e,n){var i=this,r=t.getGraph(),o=this.group,a=t.layoutInfo,s=a.width,l=a.height,u=t.getData(),h=t.getData("edge"),c=t.get("orient");this._model=t,o.removeAll(),o.x=a.x,o.y=a.y,r.eachEdge((function(e){var n=new xL,i=Hs(n);i.dataIndex=e.dataIndex,i.seriesIndex=t.seriesIndex,i.dataType="edge";var r,a,u,p,d,f,g,y,v=e.getModel(),m=v.getModel("lineStyle"),x=m.get("curveness"),_=e.node1.getLayout(),b=e.node1.getModel(),w=b.get("localX"),S=b.get("localY"),M=e.node2.getLayout(),I=e.node2.getModel(),T=I.get("localX"),C=I.get("localY"),D=e.getLayout();switch(n.shape.extent=Math.max(1,D.dy),n.shape.orient=c,"vertical"===c?(r=(null!=w?w*s:_.x)+D.sy,a=(null!=S?S*l:_.y)+_.dy,u=(null!=T?T*s:M.x)+D.ty,d=r,f=a*(1-x)+(p=null!=C?C*l:M.y)*x,g=u,y=a*x+p*(1-x)):(r=(null!=w?w*s:_.x)+_.dx,a=(null!=S?S*l:_.y)+D.sy,d=r*(1-x)+(u=null!=T?T*s:M.x)*x,f=a,g=r*x+u*(1-x),y=p=(null!=C?C*l:M.y)+D.ty),n.setShape({x1:r,y1:a,x2:u,y2:p,cpx1:d,cpy1:f,cpx2:g,cpy2:y}),n.useStyle(m.getItemStyle()),n.style.fill){case"source":n.style.fill=e.node1.getVisual("color"),n.style.decal=e.node1.getVisual("style").decal;break;case"target":n.style.fill=e.node2.getVisual("color"),n.style.decal=e.node2.getVisual("style").decal;break;case"gradient":var A=e.node1.getVisual("color"),k=e.node2.getVisual("color");X(A)&&X(k)&&(n.style.fill=new Xu(0,0,+("horizontal"===c),+("vertical"===c),[{color:A,offset:0},{color:k,offset:1}]))}var L=v.getModel("emphasis");Vl(n,v,"lineStyle",(function(t){return t.getItemStyle()})),o.add(n),h.setItemGraphicEl(e.dataIndex,n);var P=L.get("focus");Rl(n,"adjacency"===P?e.getAdjacentDataIndices():P,L.get("blurScope"),L.get("disabled")),Hs(n).dataType="edge"})),r.eachNode((function(e){var n=e.getLayout(),i=e.getModel(),r=i.get("localX"),a=i.get("localY"),h=i.getModel("emphasis"),c=new Cs({shape:{x:null!=r?r*s:n.x,y:null!=a?a*l:n.y,width:n.dx,height:n.dy},style:i.getModel("itemStyle").getItemStyle(),z2:10});Hh(c,Yh(i),{labelFetcher:t,labelDataIndex:e.dataIndex,defaultText:e.id}),c.disableLabelAnimation=!0,c.setStyle("fill",e.getVisual("color")),c.setStyle("decal",e.getVisual("style").decal),Vl(c,i),o.add(c),u.setItemGraphicEl(e.dataIndex,c),Hs(c).dataType="node";var p=h.get("focus");Rl(c,"adjacency"===p?e.getAdjacentDataIndices():p,h.get("blurScope"),h.get("disabled"))})),u.eachItemGraphicEl((function(e,r){u.getItemModel(r).get("draggable")&&(e.drift=function(e,o){i._focusAdjacencyDisabled=!0,this.shape.x+=e,this.shape.y+=o,this.dirty(),n.dispatchAction({type:"dragNode",seriesId:t.id,dataIndex:u.getRawIndex(r),localX:this.shape.x/s,localY:this.shape.y/l})},e.ondragend=function(){i._focusAdjacencyDisabled=!1},e.draggable=!0,e.cursor="move")})),!this._data&&t.isAnimationEnabled()&&o.setClipPath(function(t,e,n){var i=new Cs({shape:{x:t.x-10,y:t.y-10,width:0,height:t.height+20}});return oh(i,{shape:{width:t.width+20}},e,n),i}(o.getBoundingRect(),t,(function(){o.removeClipPath()}))),this._data=t.getData()},e.prototype.dispose=function(){},e.type="sankey",e}(xg);var bL=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.getInitialData=function(t,e){var n=t.edges||t.links,i=t.data||t.nodes,r=t.levels;this.levelModels=[];for(var o=this.levelModels,a=0;a<r.length;a++)null!=r[a].depth&&r[a].depth>=0&&(o[r[a].depth]=new dc(r[a],this,e));if(i&&n)return OA(i,n,this,!0,(function(t,e){t.wrapMethod("getItemModel",(function(t,e){var n=t.parentModel,i=n.getData().getItemLayout(e);if(i){var r=i.depth,o=n.levelModels[r];o&&(t.parentModel=o)}return t})),e.wrapMethod("getItemModel",(function(t,e){var n=t.parentModel,i=n.getGraph().getEdgeByIndex(e).node1.getLayout();if(i){var r=i.depth,o=n.levelModels[r];o&&(t.parentModel=o)}return t}))})).data},e.prototype.setNodePosition=function(t,e){var n=(this.option.data||this.option.nodes)[t];n.localX=e[0],n.localY=e[1]},e.prototype.getGraph=function(){return this.getData().graph},e.prototype.getEdgeData=function(){return this.getGraph().edgeData},e.prototype.formatTooltip=function(t,e,n){function i(t){return isNaN(t)||null==t}if("edge"===n){var r=this.getDataParams(t,n),o=r.data,a=r.value;return Xf("nameValue",{name:o.source+" -- "+o.target,value:a,noValue:i(a)})}var s=this.getGraph().getNodeByIndex(t).getLayout().value,l=this.getDataParams(t,n).data.name;return Xf("nameValue",{name:null!=l?l+"":null,value:s,noValue:i(s)})},e.prototype.optionUpdated=function(){},e.prototype.getDataParams=function(e,n){var i=t.prototype.getDataParams.call(this,e,n);if(null==i.value&&"node"===n){var r=this.getGraph().getNodeByIndex(e).getLayout().value;i.value=r}return i},e.type="series.sankey",e.defaultOption={z:2,coordinateSystem:"view",left:"5%",top:"5%",right:"20%",bottom:"5%",orient:"horizontal",nodeWidth:20,nodeGap:8,draggable:!0,layoutIterations:32,label:{show:!0,position:"right",fontSize:12},levels:[],nodeAlign:"justify",lineStyle:{color:"#314656",opacity:.2,curveness:.5},emphasis:{label:{show:!0},lineStyle:{opacity:.5}},select:{itemStyle:{borderColor:"#212121"}},animationEasing:"linear",animationDuration:1e3},e}(sg);function wL(t,e){t.eachSeriesByType("sankey",(function(t){var n=t.get("nodeWidth"),i=t.get("nodeGap"),r=function(t,e){return xp(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}(t,e);t.layoutInfo=r;var o=r.width,a=r.height,s=t.getGraph(),l=s.nodes,u=s.edges;!function(t){E(t,(function(t){var e=PL(t.outEdges,LL),n=PL(t.inEdges,LL),i=t.getValue()||0,r=Math.max(e,n,i);t.setLayout({value:r},!0)}))}(l),function(t,e,n,i,r,o,a,s,l){(function(t,e,n,i,r,o,a){for(var s=[],l=[],u=[],h=[],c=0,p=0;p<e.length;p++)s[p]=1;for(p=0;p<t.length;p++)l[p]=t[p].inEdges.length,0===l[p]&&u.push(t[p]);var d=-1;for(;u.length;){for(var f=0;f<u.length;f++){var g=u[f],y=g.hostGraph.data.getRawDataItem(g.dataIndex),v=null!=y.depth&&y.depth>=0;v&&y.depth>d&&(d=y.depth),g.setLayout({depth:v?y.depth:c},!0),"vertical"===o?g.setLayout({dy:n},!0):g.setLayout({dx:n},!0);for(var m=0;m<g.outEdges.length;m++){var x=g.outEdges[m];s[e.indexOf(x)]=0;var _=x.node2;0==--l[t.indexOf(_)]&&h.indexOf(_)<0&&h.push(_)}}++c,u=h,h=[]}for(p=0;p<s.length;p++)if(1===s[p])throw new Error("Sankey is a DAG, the original data has cycle!");var b=d>c-1?d:c-1;a&&"left"!==a&&function(t,e,n,i){if("right"===e){for(var r=[],o=t,a=0;o.length;){for(var s=0;s<o.length;s++){var l=o[s];l.setLayout({skNodeHeight:a},!0);for(var u=0;u<l.inEdges.length;u++){var h=l.inEdges[u];r.indexOf(h.node1)<0&&r.push(h.node1)}}o=r,r=[],++a}E(t,(function(t){SL(t)||t.setLayout({depth:Math.max(0,i-t.getLayout().skNodeHeight)},!0)}))}else"justify"===e&&function(t,e){E(t,(function(t){SL(t)||t.outEdges.length||t.setLayout({depth:e},!0)}))}(t,i)}(t,a,0,b);!function(t,e,n){E(t,(function(t){var i=t.getLayout().depth*e;"vertical"===n?t.setLayout({y:i},!0):t.setLayout({x:i},!0)}))}(t,"vertical"===o?(r-n)/b:(i-n)/b,o)})(t,e,n,r,o,s,l),function(t,e,n,i,r,o,a){var s=function(t,e){var n=[],i="vertical"===e?"y":"x",r=Lo(t,(function(t){return t.getLayout()[i]}));return r.keys.sort((function(t,e){return t-e})),E(r.keys,(function(t){n.push(r.buckets.get(t))})),n}(t,a);(function(t,e,n,i,r,o){var a=1/0;E(t,(function(t){var e=t.length,s=0;E(t,(function(t){s+=t.getLayout().value}));var l="vertical"===o?(i-(e-1)*r)/s:(n-(e-1)*r)/s;l<a&&(a=l)})),E(t,(function(t){E(t,(function(t,e){var n=t.getLayout().value*a;"vertical"===o?(t.setLayout({x:e},!0),t.setLayout({dx:n},!0)):(t.setLayout({y:e},!0),t.setLayout({dy:n},!0))}))})),E(e,(function(t){var e=+t.getValue()*a;t.setLayout({dy:e},!0)}))})(s,e,n,i,r,a),ML(s,r,n,i,a);for(var l=1;o>0;o--)IL(s,l*=.99,a),ML(s,r,n,i,a),OL(s,l,a),ML(s,r,n,i,a)}(t,e,o,r,i,a,s),function(t,e){var n="vertical"===e?"x":"y";E(t,(function(t){t.outEdges.sort((function(t,e){return t.node2.getLayout()[n]-e.node2.getLayout()[n]})),t.inEdges.sort((function(t,e){return t.node1.getLayout()[n]-e.node1.getLayout()[n]}))})),E(t,(function(t){var e=0,n=0;E(t.outEdges,(function(t){t.setLayout({sy:e},!0),e+=t.getLayout().dy})),E(t.inEdges,(function(t){t.setLayout({ty:n},!0),n+=t.getLayout().dy}))}))}(t,s)}(l,u,n,i,o,a,0!==B(l,(function(t){return 0===t.getLayout().value})).length?0:t.get("layoutIterations"),t.get("orient"),t.get("nodeAlign"))}))}function SL(t){var e=t.hostGraph.data.getRawDataItem(t.dataIndex);return null!=e.depth&&e.depth>=0}function ML(t,e,n,i,r){var o="vertical"===r?"x":"y";E(t,(function(t){var a,s,l;t.sort((function(t,e){return t.getLayout()[o]-e.getLayout()[o]}));for(var u=0,h=t.length,c="vertical"===r?"dx":"dy",p=0;p<h;p++)(l=u-(s=t[p]).getLayout()[o])>0&&(a=s.getLayout()[o]+l,"vertical"===r?s.setLayout({x:a},!0):s.setLayout({y:a},!0)),u=s.getLayout()[o]+s.getLayout()[c]+e;if((l=u-e-("vertical"===r?i:n))>0){a=s.getLayout()[o]-l,"vertical"===r?s.setLayout({x:a},!0):s.setLayout({y:a},!0),u=a;for(p=h-2;p>=0;--p)(l=(s=t[p]).getLayout()[o]+s.getLayout()[c]+e-u)>0&&(a=s.getLayout()[o]-l,"vertical"===r?s.setLayout({x:a},!0):s.setLayout({y:a},!0)),u=s.getLayout()[o]}}))}function IL(t,e,n){E(t.slice().reverse(),(function(t){E(t,(function(t){if(t.outEdges.length){var i=PL(t.outEdges,TL,n)/PL(t.outEdges,LL);if(isNaN(i)){var r=t.outEdges.length;i=r?PL(t.outEdges,CL,n)/r:0}if("vertical"===n){var o=t.getLayout().x+(i-kL(t,n))*e;t.setLayout({x:o},!0)}else{var a=t.getLayout().y+(i-kL(t,n))*e;t.setLayout({y:a},!0)}}}))}))}function TL(t,e){return kL(t.node2,e)*t.getValue()}function CL(t,e){return kL(t.node2,e)}function DL(t,e){return kL(t.node1,e)*t.getValue()}function AL(t,e){return kL(t.node1,e)}function kL(t,e){return"vertical"===e?t.getLayout().x+t.getLayout().dx/2:t.getLayout().y+t.getLayout().dy/2}function LL(t){return t.getValue()}function PL(t,e,n){for(var i=0,r=t.length,o=-1;++o<r;){var a=+e(t[o],n);isNaN(a)||(i+=a)}return i}function OL(t,e,n){E(t,(function(t){E(t,(function(t){if(t.inEdges.length){var i=PL(t.inEdges,DL,n)/PL(t.inEdges,LL);if(isNaN(i)){var r=t.inEdges.length;i=r?PL(t.inEdges,AL,n)/r:0}if("vertical"===n){var o=t.getLayout().x+(i-kL(t,n))*e;t.setLayout({x:o},!0)}else{var a=t.getLayout().y+(i-kL(t,n))*e;t.setLayout({y:a},!0)}}}))}))}function RL(t){t.eachSeriesByType("sankey",(function(t){var e=t.getGraph().nodes;if(e.length){var n=1/0,i=-1/0;E(e,(function(t){var e=t.getLayout().value;e<n&&(n=e),e>i&&(i=e)})),E(e,(function(e){var r=new nD({type:"color",mappingMethod:"linear",dataExtent:[n,i],visual:t.get("color")}).mapValueToVisual(e.getLayout().value),o=e.getModel().get(["itemStyle","color"]);null!=o?(e.setVisual("color",o),e.setVisual("style",{fill:o})):(e.setVisual("color",r),e.setVisual("style",{fill:r}))}))}}))}var NL=function(){function t(){}return t.prototype.getInitialData=function(t,e){var n,i,r=e.getComponent("xAxis",this.get("xAxisIndex")),o=e.getComponent("yAxis",this.get("yAxisIndex")),a=r.get("type"),s=o.get("type");"category"===a?(t.layout="horizontal",n=r.getOrdinalMeta(),i=!0):"category"===s?(t.layout="vertical",n=o.getOrdinalMeta(),i=!0):t.layout=t.layout||"horizontal";var l=["x","y"],u="horizontal"===t.layout?0:1,h=this._baseAxisDim=l[u],c=l[1-u],p=[r,o],d=p[u].get("type"),f=p[1-u].get("type"),g=t.data;if(g&&i){var y=[];E(g,(function(t,e){var n;Y(t)?(n=t.slice(),t.unshift(e)):Y(t.value)?((n=A({},t)).value=n.value.slice(),t.value.unshift(e)):n=t,y.push(n)})),t.data=y}var v=this.defaultValueDimensions,m=[{name:h,type:Cm(d),ordinalMeta:n,otherDims:{tooltip:!1,itemName:0},dimsDef:["base"]},{name:c,type:Cm(f),dimsDef:v.slice()}];return lM(this,{coordDimensions:m,dimensionsCount:v.length+1,encodeDefaulter:H(Hp,m,this)})},t.prototype.getBaseAxis=function(){var t=this._baseAxisDim;return this.ecModel.getComponent(t+"Axis",this.get(t+"AxisIndex")).axis},t}(),EL=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.defaultValueDimensions=[{name:"min",defaultTooltip:!0},{name:"Q1",defaultTooltip:!0},{name:"median",defaultTooltip:!0},{name:"Q3",defaultTooltip:!0},{name:"max",defaultTooltip:!0}],n.visualDrawType="stroke",n}return n(e,t),e.type="series.boxplot",e.dependencies=["xAxis","yAxis","grid"],e.defaultOption={z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,layout:null,boxWidth:[7,50],itemStyle:{color:"#fff",borderWidth:1},emphasis:{scale:!0,itemStyle:{borderWidth:2,shadowBlur:5,shadowOffsetX:1,shadowOffsetY:1,shadowColor:"rgba(0,0,0,0.2)"}},animationDuration:800},e}(sg);R(EL,NL,!0);var zL=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){var i=t.getData(),r=this.group,o=this._data;this._data||r.removeAll();var a="horizontal"===t.get("layout")?1:0;i.diff(o).add((function(t){if(i.hasValue(t)){var e=FL(i.getItemLayout(t),i,t,a,!0);i.setItemGraphicEl(t,e),r.add(e)}})).update((function(t,e){var n=o.getItemGraphicEl(e);if(i.hasValue(t)){var s=i.getItemLayout(t);n?(hh(n),GL(s,n,i,t)):n=FL(s,i,t,a),r.add(n),i.setItemGraphicEl(t,n)}else r.remove(n)})).remove((function(t){var e=o.getItemGraphicEl(t);e&&r.remove(e)})).execute(),this._data=i},e.prototype.remove=function(t){var e=this.group,n=this._data;this._data=null,n&&n.eachItemGraphicEl((function(t){t&&e.remove(t)}))},e.type="boxplot",e}(xg),VL=function(){},BL=function(t){function e(e){var n=t.call(this,e)||this;return n.type="boxplotBoxPath",n}return n(e,t),e.prototype.getDefaultShape=function(){return new VL},e.prototype.buildPath=function(t,e){var n=e.points,i=0;for(t.moveTo(n[i][0],n[i][1]),i++;i<4;i++)t.lineTo(n[i][0],n[i][1]);for(t.closePath();i<n.length;i++)t.moveTo(n[i][0],n[i][1]),i++,t.lineTo(n[i][0],n[i][1])},e}(gs);function FL(t,e,n,i,r){var o=t.ends,a=new BL({shape:{points:r?WL(o,i,t):o}});return GL(t,a,e,n,r),a}function GL(t,e,n,i,r){var o=n.hostModel;(0,Bh[r?"initProps":"updateProps"])(e,{shape:{points:t.ends}},o,i),e.useStyle(n.getItemVisual(i,"style")),e.style.strokeNoScale=!0,e.z2=100;var a=n.getItemModel(i),s=a.getModel("emphasis");Vl(e,a),Rl(e,s.get("focus"),s.get("blurScope"),s.get("disabled"))}function WL(t,e,n){return z(t,(function(t){return(t=t.slice())[e]=n.initBaseline,t}))}function HL(t,e){}var YL=E;function UL(t){var e=function(t){var e=[],n=[];return t.eachSeriesByType("boxplot",(function(t){var i=t.getBaseAxis(),r=P(n,i);r<0&&(r=n.length,n[r]=i,e[r]={axis:i,seriesModels:[]}),e[r].seriesModels.push(t)})),e}(t);YL(e,(function(t){var e=t.seriesModels;e.length&&(!function(t){var e,n=t.axis,i=t.seriesModels,r=i.length,o=t.boxWidthList=[],a=t.boxOffsetList=[],s=[];if("category"===n.type)e=n.getBandWidth();else{var l=0;YL(i,(function(t){l=Math.max(l,t.getData().count())}));var u=n.getExtent();e=Math.abs(u[1]-u[0])/l}YL(i,(function(t){var n=t.get("boxWidth");Y(n)||(n=[n,n]),s.push([Er(n[0],e)||0,Er(n[1],e)||0])}));var h=.8*e-2,c=h/r*.3,p=(h-c*(r-1))/r,d=p/2-h/2;YL(i,(function(t,e){a.push(d),d+=c+p,o.push(Math.min(Math.max(p,s[e][0]),s[e][1]))}))}(t),YL(e,(function(e,n){!function(t,e,n){var i=t.coordinateSystem,r=t.getData(),o=n/2,a="horizontal"===t.get("layout")?0:1,s=1-a,l=["x","y"],u=r.mapDimension(l[a]),h=r.mapDimensionsAll(l[s]);if(null==u||h.length<5)return;for(var c=0;c<r.count();c++){var p=r.get(u,c),d=x(p,h[2],c),f=x(p,h[0],c),g=x(p,h[1],c),y=x(p,h[3],c),v=x(p,h[4],c),m=[];_(m,g,!1),_(m,y,!0),m.push(f,g,v,y),b(m,f),b(m,v),b(m,d),r.setItemLayout(c,{initBaseline:d[s],ends:m})}function x(t,n,o){var l,u=r.get(n,o),h=[];return h[a]=t,h[s]=u,isNaN(t)||isNaN(u)?l=[NaN,NaN]:(l=i.dataToPoint(h))[a]+=e,l}function _(t,e,n){var i=e.slice(),r=e.slice();i[a]+=o,r[a]-=o,n?t.push(i,r):t.push(r,i)}function b(t,e){var n=e.slice(),i=e.slice();n[a]-=o,i[a]+=o,t.push(n,i)}}(e,t.boxOffsetList[n],t.boxWidthList[n])})))}))}var XL={type:"echarts:boxplot",transform:function(t){var e=t.upstream;if(e.sourceFormat!==Pp){var n="";0,ao(n)}var i=function(t,e){for(var n=[],i=[],r=(e=e||{}).boundIQR,o="none"===r||0===r,a=0;a<t.length;a++){var s=Vr(t[a].slice()),l=Jr(s,.25),u=Jr(s,.5),h=Jr(s,.75),c=s[0],p=s[s.length-1],d=(null==r?1.5:r)*(h-l),f=o?c:Math.max(c,l-d),g=o?p:Math.min(p,h+d),y=e.itemNameFormatter,v=U(y)?y({value:a}):X(y)?y.replace("{value}",a+""):a+"";n.push([v,f,l,u,h,g]);for(var m=0;m<s.length;m++){var x=s[m];if(x<f||x>g){var _=[v,x];i.push(_)}}}return{boxData:n,outliers:i}}(e.getRawData(),t.config);return[{dimensions:["ItemName","Low","Q1","Q2","Q3","High"],data:i.boxData},{data:i.outliers}]}};var ZL=["color","borderColor"],jL=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){this.group.removeClipPath(),this._progressiveEls=null,this._updateDrawMode(t),this._isLargeDraw?this._renderLarge(t):this._renderNormal(t)},e.prototype.incrementalPrepareRender=function(t,e,n){this._clear(),this._updateDrawMode(t)},e.prototype.incrementalRender=function(t,e,n,i){this._progressiveEls=[],this._isLargeDraw?this._incrementalRenderLarge(t,e):this._incrementalRenderNormal(t,e)},e.prototype.eachRendered=function(t){Vh(this._progressiveEls||this.group,t)},e.prototype._updateDrawMode=function(t){var e=t.pipelineContext.large;null!=this._isLargeDraw&&e===this._isLargeDraw||(this._isLargeDraw=e,this._clear())},e.prototype._renderNormal=function(t){var e=t.getData(),n=this._data,i=this.group,r=e.getLayout("isSimpleBox"),o=t.get("clip",!0),a=t.coordinateSystem,s=a.getArea&&a.getArea();this._data||i.removeAll(),e.diff(n).add((function(n){if(e.hasValue(n)){var a=e.getItemLayout(n);if(o&&JL(s,a))return;var l=$L(a,n,!0);oh(l,{shape:{points:a.ends}},t,n),QL(l,e,n,r),i.add(l),e.setItemGraphicEl(n,l)}})).update((function(a,l){var u=n.getItemGraphicEl(l);if(e.hasValue(a)){var h=e.getItemLayout(a);o&&JL(s,h)?i.remove(u):(u?(rh(u,{shape:{points:h.ends}},t,a),hh(u)):u=$L(h),QL(u,e,a,r),i.add(u),e.setItemGraphicEl(a,u))}else i.remove(u)})).remove((function(t){var e=n.getItemGraphicEl(t);e&&i.remove(e)})).execute(),this._data=e},e.prototype._renderLarge=function(t){this._clear(),iP(t,this.group);var e=t.get("clip",!0)?sS(t.coordinateSystem,!1,t):null;e?this.group.setClipPath(e):this.group.removeClipPath()},e.prototype._incrementalRenderNormal=function(t,e){for(var n,i=e.getData(),r=i.getLayout("isSimpleBox");null!=(n=t.next());){var o=$L(i.getItemLayout(n));QL(o,i,n,r),o.incremental=!0,this.group.add(o),this._progressiveEls.push(o)}},e.prototype._incrementalRenderLarge=function(t,e){iP(e,this.group,this._progressiveEls,!0)},e.prototype.remove=function(t){this._clear()},e.prototype._clear=function(){this.group.removeAll(),this._data=null},e.type="candlestick",e}(xg),qL=function(){},KL=function(t){function e(e){var n=t.call(this,e)||this;return n.type="normalCandlestickBox",n}return n(e,t),e.prototype.getDefaultShape=function(){return new qL},e.prototype.buildPath=function(t,e){var n=e.points;this.__simpleBox?(t.moveTo(n[4][0],n[4][1]),t.lineTo(n[6][0],n[6][1])):(t.moveTo(n[0][0],n[0][1]),t.lineTo(n[1][0],n[1][1]),t.lineTo(n[2][0],n[2][1]),t.lineTo(n[3][0],n[3][1]),t.closePath(),t.moveTo(n[4][0],n[4][1]),t.lineTo(n[5][0],n[5][1]),t.moveTo(n[6][0],n[6][1]),t.lineTo(n[7][0],n[7][1]))},e}(gs);function $L(t,e,n){var i=t.ends;return new KL({shape:{points:n?tP(i,t):i},z2:100})}function JL(t,e){for(var n=!0,i=0;i<e.ends.length;i++)if(t.contain(e.ends[i][0],e.ends[i][1])){n=!1;break}return n}function QL(t,e,n,i){var r=e.getItemModel(n);t.useStyle(e.getItemVisual(n,"style")),t.style.strokeNoScale=!0,t.__simpleBox=i,Vl(t,r)}function tP(t,e){return z(t,(function(t){return(t=t.slice())[1]=e.initBaseline,t}))}var eP=function(){},nP=function(t){function e(e){var n=t.call(this,e)||this;return n.type="largeCandlestickBox",n}return n(e,t),e.prototype.getDefaultShape=function(){return new eP},e.prototype.buildPath=function(t,e){for(var n=e.points,i=0;i<n.length;)if(this.__sign===n[i++]){var r=n[i++];t.moveTo(r,n[i++]),t.lineTo(r,n[i++])}else i+=3},e}(gs);function iP(t,e,n,i){var r=t.getData().getLayout("largePoints"),o=new nP({shape:{points:r},__sign:1});e.add(o);var a=new nP({shape:{points:r},__sign:-1});e.add(a),rP(1,o,t),rP(-1,a,t),i&&(o.incremental=!0,a.incremental=!0),n&&n.push(o,a)}function rP(t,e,n,i){var r=n.get(["itemStyle",t>0?"borderColor":"borderColor0"])||n.get(["itemStyle",t>0?"color":"color0"]),o=n.getModel("itemStyle").getItemStyle(ZL);e.useStyle(o),e.style.fill=null,e.style.stroke=r}var oP=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.defaultValueDimensions=[{name:"open",defaultTooltip:!0},{name:"close",defaultTooltip:!0},{name:"lowest",defaultTooltip:!0},{name:"highest",defaultTooltip:!0}],n}return n(e,t),e.prototype.getShadowDim=function(){return"open"},e.prototype.brushSelector=function(t,e,n){var i=e.getItemLayout(t);return i&&n.rect(i.brushRect)},e.type="series.candlestick",e.dependencies=["xAxis","yAxis","grid"],e.defaultOption={z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,layout:null,clip:!0,itemStyle:{color:"#eb5454",color0:"#47b262",borderColor:"#eb5454",borderColor0:"#47b262",borderWidth:1},emphasis:{scale:!0,itemStyle:{borderWidth:2}},barMaxWidth:null,barMinWidth:null,barWidth:null,large:!0,largeThreshold:600,progressive:3e3,progressiveThreshold:1e4,progressiveChunkMode:"mod",animationEasing:"linear",animationDuration:300},e}(sg);function aP(t){t&&Y(t.series)&&E(t.series,(function(t){q(t)&&"k"===t.type&&(t.type="candlestick")}))}R(oP,NL,!0);var sP=["itemStyle","borderColor"],lP=["itemStyle","borderColor0"],uP=["itemStyle","color"],hP=["itemStyle","color0"],cP={seriesType:"candlestick",plan:yg(),performRawSeries:!0,reset:function(t,e){function n(t,e){return e.get(t>0?uP:hP)}function i(t,e){return e.get(t>0?sP:lP)}if(!e.isSeriesFiltered(t))return!t.pipelineContext.large&&{progress:function(t,e){for(var r;null!=(r=t.next());){var o=e.getItemModel(r),a=e.getItemLayout(r).sign,s=o.getItemStyle();s.fill=n(a,o),s.stroke=i(a,o)||s.fill,A(e.ensureUniqueItemVisual(r,"style"),s)}}}}},pP={seriesType:"candlestick",plan:yg(),reset:function(t){var e=t.coordinateSystem,n=t.getData(),i=function(t,e){var n,i=t.getBaseAxis(),r="category"===i.type?i.getBandWidth():(n=i.getExtent(),Math.abs(n[1]-n[0])/e.count()),o=Er(rt(t.get("barMaxWidth"),r),r),a=Er(rt(t.get("barMinWidth"),1),r),s=t.get("barWidth");return null!=s?Er(s,r):Math.max(Math.min(r/2,o),a)}(t,n),r=["x","y"],o=n.getDimensionIndex(n.mapDimension(r[0])),a=z(n.mapDimensionsAll(r[1]),n.getDimensionIndex,n),s=a[0],l=a[1],u=a[2],h=a[3];if(n.setLayout({candleWidth:i,isSimpleBox:i<=1.3}),!(o<0||a.length<4))return{progress:t.pipelineContext.large?function(t,n){var i,r,a=bx(4*t.count),c=0,p=[],d=[],f=n.getStore();for(;null!=(r=t.next());){var g=f.get(o,r),y=f.get(s,r),v=f.get(l,r),m=f.get(u,r),x=f.get(h,r);isNaN(g)||isNaN(m)||isNaN(x)?(a[c++]=NaN,c+=3):(a[c++]=dP(f,r,y,v,l),p[0]=g,p[1]=m,i=e.dataToPoint(p,null,d),a[c++]=i?i[0]:NaN,a[c++]=i?i[1]:NaN,p[1]=x,i=e.dataToPoint(p,null,d),a[c++]=i?i[1]:NaN)}n.setLayout("largePoints",a)}:function(t,n){var r,a=n.getStore();for(;null!=(r=t.next());){var c=a.get(o,r),p=a.get(s,r),d=a.get(l,r),f=a.get(u,r),g=a.get(h,r),y=Math.min(p,d),v=Math.max(p,d),m=S(y,c),x=S(v,c),_=S(f,c),b=S(g,c),w=[];M(w,x,0),M(w,m,1),w.push(T(b),T(x),T(_),T(m)),n.setItemLayout(r,{sign:dP(a,r,p,d,l),initBaseline:p>d?x[1]:m[1],ends:w,brushRect:I(f,g,c)})}function S(t,n){var i=[];return i[0]=n,i[1]=t,isNaN(n)||isNaN(t)?[NaN,NaN]:e.dataToPoint(i)}function M(t,e,n){var r=e.slice(),o=e.slice();r[0]=Mh(r[0]+i/2,1,!1),o[0]=Mh(o[0]-i/2,1,!0),n?t.push(r,o):t.push(o,r)}function I(t,e,n){var r=S(t,n),o=S(e,n);return r[0]-=i/2,o[0]-=i/2,{x:r[0],y:r[1],width:i,height:o[1]-r[1]}}function T(t){return t[0]=Mh(t[0],1),t}}}}};function dP(t,e,n,i,r){return n>i?-1:n<i?1:e>0?t.get(r,e-1)<=i?1:-1:1}function fP(t,e){var n=e.rippleEffectColor||e.color;t.eachChild((function(t){t.attr({z:e.z,zlevel:e.zlevel,style:{stroke:"stroke"===e.brushType?n:null,fill:"fill"===e.brushType?n:null}})}))}var gP=function(t){function e(e,n){var i=t.call(this)||this,r=new Hw(e,n),o=new Cr;return i.add(r),i.add(o),i.updateData(e,n),i}return n(e,t),e.prototype.stopEffectAnimation=function(){this.childAt(1).removeAll()},e.prototype.startEffectAnimation=function(t){for(var e=t.symbolType,n=t.color,i=t.rippleNumber,r=this.childAt(1),o=0;o<i;o++){var a=Ly(e,-1,-1,2,2,n);a.attr({style:{strokeNoScale:!0},z2:99,silent:!0,scaleX:.5,scaleY:.5});var s=-o/i*t.period+t.effectOffset;a.animate("",!0).when(t.period,{scaleX:t.rippleScale/2,scaleY:t.rippleScale/2}).delay(s).start(),a.animateStyle(!0).when(t.period,{opacity:0}).delay(s).start(),r.add(a)}fP(r,t)},e.prototype.updateEffectAnimation=function(t){for(var e=this._effectCfg,n=this.childAt(1),i=["symbolType","period","rippleScale","rippleNumber"],r=0;r<i.length;r++){var o=i[r];if(e[o]!==t[o])return this.stopEffectAnimation(),void this.startEffectAnimation(t)}fP(n,t)},e.prototype.highlight=function(){_l(this)},e.prototype.downplay=function(){bl(this)},e.prototype.getSymbolType=function(){var t=this.childAt(0);return t&&t.getSymbolType()},e.prototype.updateData=function(t,e){var n=this,i=t.hostModel;this.childAt(0).updateData(t,e);var r=this.childAt(1),o=t.getItemModel(e),a=t.getItemVisual(e,"symbol"),s=Py(t.getItemVisual(e,"symbolSize")),l=t.getItemVisual(e,"style"),u=l&&l.fill,h=o.getModel("emphasis");r.setScale(s),r.traverse((function(t){t.setStyle("fill",u)}));var c=Oy(t.getItemVisual(e,"symbolOffset"),s);c&&(r.x=c[0],r.y=c[1]);var p=t.getItemVisual(e,"symbolRotate");r.rotation=(p||0)*Math.PI/180||0;var d={};d.showEffectOn=i.get("showEffectOn"),d.rippleScale=o.get(["rippleEffect","scale"]),d.brushType=o.get(["rippleEffect","brushType"]),d.period=1e3*o.get(["rippleEffect","period"]),d.effectOffset=e/t.count(),d.z=i.getShallow("z")||0,d.zlevel=i.getShallow("zlevel")||0,d.symbolType=a,d.color=u,d.rippleEffectColor=o.get(["rippleEffect","color"]),d.rippleNumber=o.get(["rippleEffect","number"]),"render"===d.showEffectOn?(this._effectCfg?this.updateEffectAnimation(d):this.startEffectAnimation(d),this._effectCfg=d):(this._effectCfg=null,this.stopEffectAnimation(),this.onHoverStateChange=function(t){"emphasis"===t?"render"!==d.showEffectOn&&n.startEffectAnimation(d):"normal"===t&&"render"!==d.showEffectOn&&n.stopEffectAnimation()}),this._effectCfg=d,Rl(this,h.get("focus"),h.get("blurScope"),h.get("disabled"))},e.prototype.fadeOut=function(t){t&&t()},e}(Cr),yP=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.init=function(){this._symbolDraw=new jw(gP)},e.prototype.render=function(t,e,n){var i=t.getData(),r=this._symbolDraw;r.updateData(i,{clipShape:this._getClipShape(t)}),this.group.add(r.group)},e.prototype._getClipShape=function(t){var e=t.coordinateSystem,n=e&&e.getArea&&e.getArea();return t.get("clip",!0)?n:null},e.prototype.updateTransform=function(t,e,n){var i=t.getData();this.group.dirty();var r=_S("").reset(t,e,n);r.progress&&r.progress({start:0,end:i.count(),count:i.count()},i),this._symbolDraw.updateLayout()},e.prototype._updateGroupTransform=function(t){var e=t.coordinateSystem;e&&e.getRoamTransform&&(this.group.transform=Fi(e.getRoamTransform()),this.group.decomposeTransform())},e.prototype.remove=function(t,e){this._symbolDraw&&this._symbolDraw.remove(!0)},e.type="effectScatter",e}(xg),vP=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.hasSymbolVisual=!0,n}return n(e,t),e.prototype.getInitialData=function(t,e){return ix(null,this,{useEncodeDefaulter:!0})},e.prototype.brushSelector=function(t,e,n){return n.point(e.getItemLayout(t))},e.type="series.effectScatter",e.dependencies=["grid","polar"],e.defaultOption={coordinateSystem:"cartesian2d",z:2,legendHoverLink:!0,effectType:"ripple",progressive:0,showEffectOn:"render",clip:!0,rippleEffect:{period:4,scale:2.5,brushType:"fill",number:3},universalTransition:{divideShape:"clone"},symbolSize:10},e}(sg);var mP=function(t){function e(e,n,i){var r=t.call(this)||this;return r.add(r.createLine(e,n,i)),r._updateEffectSymbol(e,n),r}return n(e,t),e.prototype.createLine=function(t,e,n){return new dA(t,e,n)},e.prototype._updateEffectSymbol=function(t,e){var n=t.getItemModel(e).getModel("effect"),i=n.get("symbolSize"),r=n.get("symbol");Y(i)||(i=[i,i]);var o=t.getItemVisual(e,"style"),a=n.get("color")||o&&o.stroke,s=this.childAt(1);this._symbolType!==r&&(this.remove(s),(s=Ly(r,-.5,-.5,1,1,a)).z2=100,s.culling=!0,this.add(s)),s&&(s.setStyle("shadowColor",a),s.setStyle(n.getItemStyle(["color"])),s.scaleX=i[0],s.scaleY=i[1],s.setColor(a),this._symbolType=r,this._symbolScale=i,this._updateEffectAnimation(t,n,e))},e.prototype._updateEffectAnimation=function(t,e,n){var i=this.childAt(1);if(i){var r=t.getItemLayout(n),o=1e3*e.get("period"),a=e.get("loop"),s=e.get("constantSpeed"),l=it(e.get("delay"),(function(e){return e/t.count()*o/3}));if(i.ignore=!0,this._updateAnimationPoints(i,r),s>0&&(o=this._getLineLength(i)/s*1e3),o!==this._period||a!==this._loop){i.stopAnimation();var u=void 0;u=U(l)?l(n):l,i.__t>0&&(u=-o*i.__t),this._animateSymbol(i,o,u,a)}this._period=o,this._loop=a}},e.prototype._animateSymbol=function(t,e,n,i){if(e>0){t.__t=0;var r=this,o=t.animate("",i).when(e,{__t:1}).delay(n).during((function(){r._updateSymbolPosition(t)}));i||o.done((function(){r.remove(t)})),o.start()}},e.prototype._getLineLength=function(t){return Et(t.__p1,t.__cp1)+Et(t.__cp1,t.__p2)},e.prototype._updateAnimationPoints=function(t,e){t.__p1=e[0],t.__p2=e[1],t.__cp1=e[2]||[(e[0][0]+e[1][0])/2,(e[0][1]+e[1][1])/2]},e.prototype.updateData=function(t,e,n){this.childAt(0).updateData(t,e,n),this._updateEffectSymbol(t,e)},e.prototype._updateSymbolPosition=function(t){var e=t.__p1,n=t.__p2,i=t.__cp1,r=t.__t,o=[t.x,t.y],a=o.slice(),s=Ke,l=$e;o[0]=s(e[0],i[0],n[0],r),o[1]=s(e[1],i[1],n[1],r);var u=l(e[0],i[0],n[0],r),h=l(e[1],i[1],n[1],r);t.rotation=-Math.atan2(h,u)-Math.PI/2,"line"!==this._symbolType&&"rect"!==this._symbolType&&"roundRect"!==this._symbolType||(void 0!==t.__lastT&&t.__lastT<t.__t?(t.scaleY=1.05*Et(a,o),1===r&&(o[0]=a[0]+(o[0]-a[0])/2,o[1]=a[1]+(o[1]-a[1])/2)):1===t.__lastT?t.scaleY=2*Et(e,o):t.scaleY=this._symbolScale[1]),t.__lastT=t.__t,t.ignore=!1,t.x=o[0],t.y=o[1]},e.prototype.updateLayout=function(t,e){this.childAt(0).updateLayout(t,e);var n=t.getItemModel(e).getModel("effect");this._updateEffectAnimation(t,n,e)},e}(Cr),xP=function(t){function e(e,n,i){var r=t.call(this)||this;return r._createPolyline(e,n,i),r}return n(e,t),e.prototype._createPolyline=function(t,e,n){var i=t.getItemLayout(e),r=new Ru({shape:{points:i}});this.add(r),this._updateCommonStl(t,e,n)},e.prototype.updateData=function(t,e,n){var i=t.hostModel;rh(this.childAt(0),{shape:{points:t.getItemLayout(e)}},i,e),this._updateCommonStl(t,e,n)},e.prototype._updateCommonStl=function(t,e,n){var i=this.childAt(0),r=t.getItemModel(e),o=n&&n.emphasisLineStyle,a=n&&n.focus,s=n&&n.blurScope,l=n&&n.emphasisDisabled;if(!n||t.hasItemOption){var u=r.getModel("emphasis");o=u.getModel("lineStyle").getLineStyle(),l=u.get("disabled"),a=u.get("focus"),s=u.get("blurScope")}i.useStyle(t.getItemVisual(e,"style")),i.style.fill=null,i.style.strokeNoScale=!0,i.ensureState("emphasis").style=o,Rl(this,a,s,l)},e.prototype.updateLayout=function(t,e){this.childAt(0).setShape("points",t.getItemLayout(e))},e}(Cr),_P=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._lastFrame=0,e._lastFramePercent=0,e}return n(e,t),e.prototype.createLine=function(t,e,n){return new xP(t,e,n)},e.prototype._updateAnimationPoints=function(t,e){this._points=e;for(var n=[0],i=0,r=1;r<e.length;r++){var o=e[r-1],a=e[r];i+=Et(o,a),n.push(i)}if(0!==i){for(r=0;r<n.length;r++)n[r]/=i;this._offsets=n,this._length=i}else this._length=0},e.prototype._getLineLength=function(){return this._length},e.prototype._updateSymbolPosition=function(t){var e=t.__t,n=this._points,i=this._offsets,r=n.length;if(i){var o,a=this._lastFrame;if(e<this._lastFramePercent){for(o=Math.min(a+1,r-1);o>=0&&!(i[o]<=e);o--);o=Math.min(o,r-2)}else{for(o=a;o<r&&!(i[o]>e);o++);o=Math.min(o-1,r-2)}var s=(e-i[o])/(i[o+1]-i[o]),l=n[o],u=n[o+1];t.x=l[0]*(1-s)+s*u[0],t.y=l[1]*(1-s)+s*u[1];var h=u[0]-l[0],c=u[1]-l[1];t.rotation=-Math.atan2(c,h)-Math.PI/2,this._lastFrame=o,this._lastFramePercent=e,t.ignore=!1}},e}(mP),bP=function(){this.polyline=!1,this.curveness=0,this.segs=[]},wP=function(t){function e(e){var n=t.call(this,e)||this;return n._off=0,n.hoverDataIdx=-1,n}return n(e,t),e.prototype.reset=function(){this.notClear=!1,this._off=0},e.prototype.getDefaultStyle=function(){return{stroke:"#000",fill:null}},e.prototype.getDefaultShape=function(){return new bP},e.prototype.buildPath=function(t,e){var n,i=e.segs,r=e.curveness;if(e.polyline)for(n=this._off;n<i.length;){var o=i[n++];if(o>0){t.moveTo(i[n++],i[n++]);for(var a=1;a<o;a++)t.lineTo(i[n++],i[n++])}}else for(n=this._off;n<i.length;){var s=i[n++],l=i[n++],u=i[n++],h=i[n++];if(t.moveTo(s,l),r>0){var c=(s+u)/2-(l-h)*r,p=(l+h)/2-(u-s)*r;t.quadraticCurveTo(c,p,u,h)}else t.lineTo(u,h)}this.incremental&&(this._off=n,this.notClear=!0)},e.prototype.findDataIndex=function(t,e){var n=this.shape,i=n.segs,r=n.curveness,o=this.style.lineWidth;if(n.polyline)for(var a=0,s=0;s<i.length;){var l=i[s++];if(l>0)for(var u=i[s++],h=i[s++],c=1;c<l;c++){if(Ka(u,h,p=i[s++],d=i[s++],o,t,e))return a}a++}else for(a=0,s=0;s<i.length;){u=i[s++],h=i[s++];var p=i[s++],d=i[s++];if(r>0){if(Ja(u,h,(u+p)/2-(h-d)*r,(h+d)/2-(p-u)*r,p,d,o,t,e))return a}else if(Ka(u,h,p,d,o,t,e))return a;a++}return-1},e.prototype.contain=function(t,e){var n=this.transformCoordToLocal(t,e),i=this.getBoundingRect();return t=n[0],e=n[1],i.contain(t,e)?(this.hoverDataIdx=this.findDataIndex(t,e))>=0:(this.hoverDataIdx=-1,!1)},e.prototype.getBoundingRect=function(){var t=this._rect;if(!t){for(var e=this.shape.segs,n=1/0,i=1/0,r=-1/0,o=-1/0,a=0;a<e.length;){var s=e[a++],l=e[a++];n=Math.min(s,n),r=Math.max(s,r),i=Math.min(l,i),o=Math.max(l,o)}t=this._rect=new sr(n,i,r,o)}return t},e}(gs),SP=function(){function t(){this.group=new Cr}return t.prototype.updateData=function(t){this._clear();var e=this._create();e.setShape({segs:t.getLayout("linesPoints")}),this._setCommon(e,t)},t.prototype.incrementalPrepareUpdate=function(t){this.group.removeAll(),this._clear()},t.prototype.incrementalUpdate=function(t,e){var n=this._newAdded[0],i=e.getLayout("linesPoints"),r=n&&n.shape.segs;if(r&&r.length<2e4){var o=r.length,a=new Float32Array(o+i.length);a.set(r),a.set(i,o),n.setShape({segs:a})}else{this._newAdded=[];var s=this._create();s.incremental=!0,s.setShape({segs:i}),this._setCommon(s,e),s.__startIndex=t.start}},t.prototype.remove=function(){this._clear()},t.prototype.eachRendered=function(t){this._newAdded[0]&&t(this._newAdded[0])},t.prototype._create=function(){var t=new wP({cursor:"default"});return this._newAdded.push(t),this.group.add(t),t},t.prototype._setCommon=function(t,e,n){var i=e.hostModel;t.setShape({polyline:i.get("polyline"),curveness:i.get(["lineStyle","curveness"])}),t.useStyle(i.getModel("lineStyle").getLineStyle()),t.style.strokeNoScale=!0;var r=e.getVisual("style");r&&r.stroke&&t.setStyle("stroke",r.stroke),t.setStyle("fill",null);var o=Hs(t);o.seriesIndex=i.seriesIndex,t.on("mousemove",(function(e){o.dataIndex=null;var n=t.hoverDataIdx;n>0&&(o.dataIndex=n+t.__startIndex)}))},t.prototype._clear=function(){this._newAdded=[],this.group.removeAll()},t}(),MP={seriesType:"lines",plan:yg(),reset:function(t){var e=t.coordinateSystem;if(e){var n=t.get("polyline"),i=t.pipelineContext.large;return{progress:function(r,o){var a=[];if(i){var s=void 0,l=r.end-r.start;if(n){for(var u=0,h=r.start;h<r.end;h++)u+=t.getLineCoordsCount(h);s=new Float32Array(l+2*u)}else s=new Float32Array(4*l);var c=0,p=[];for(h=r.start;h<r.end;h++){var d=t.getLineCoords(h,a);n&&(s[c++]=d);for(var f=0;f<d;f++)p=e.dataToPoint(a[f],!1,p),s[c++]=p[0],s[c++]=p[1]}o.setLayout("linesPoints",s)}else for(h=r.start;h<r.end;h++){var g=o.getItemModel(h),y=(d=t.getLineCoords(h,a),[]);if(n)for(var v=0;v<d;v++)y.push(e.dataToPoint(a[v]));else{y[0]=e.dataToPoint(a[0]),y[1]=e.dataToPoint(a[1]);var m=g.get(["lineStyle","curveness"]);+m&&(y[2]=[(y[0][0]+y[1][0])/2-(y[0][1]-y[1][1])*m,(y[0][1]+y[1][1])/2-(y[1][0]-y[0][0])*m])}o.setItemLayout(h,y)}}}}}},IP=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){var i=t.getData(),r=this._updateLineDraw(i,t),o=t.get("zlevel"),a=t.get(["effect","trailLength"]),s=n.getZr(),l="svg"===s.painter.getType();l||s.painter.getLayer(o).clear(!0),null==this._lastZlevel||l||s.configLayer(this._lastZlevel,{motionBlur:!1}),this._showEffect(t)&&a>0&&(l||s.configLayer(o,{motionBlur:!0,lastFrameAlpha:Math.max(Math.min(a/10+.9,1),0)})),r.updateData(i);var u=t.get("clip",!0)&&sS(t.coordinateSystem,!1,t);u?this.group.setClipPath(u):this.group.removeClipPath(),this._lastZlevel=o,this._finished=!0},e.prototype.incrementalPrepareRender=function(t,e,n){var i=t.getData();this._updateLineDraw(i,t).incrementalPrepareUpdate(i),this._clearLayer(n),this._finished=!1},e.prototype.incrementalRender=function(t,e,n){this._lineDraw.incrementalUpdate(t,e.getData()),this._finished=t.end===e.getData().count()},e.prototype.eachRendered=function(t){this._lineDraw&&this._lineDraw.eachRendered(t)},e.prototype.updateTransform=function(t,e,n){var i=t.getData(),r=t.pipelineContext;if(!this._finished||r.large||r.progressiveRender)return{update:!0};var o=MP.reset(t,e,n);o.progress&&o.progress({start:0,end:i.count(),count:i.count()},i),this._lineDraw.updateLayout(),this._clearLayer(n)},e.prototype._updateLineDraw=function(t,e){var n=this._lineDraw,i=this._showEffect(e),r=!!e.get("polyline"),o=e.pipelineContext.large;return n&&i===this._hasEffet&&r===this._isPolyline&&o===this._isLargeDraw||(n&&n.remove(),n=this._lineDraw=o?new SP:new fA(r?i?_P:xP:i?mP:dA),this._hasEffet=i,this._isPolyline=r,this._isLargeDraw=o),this.group.add(n.group),n},e.prototype._showEffect=function(t){return!!t.get(["effect","show"])},e.prototype._clearLayer=function(t){var e=t.getZr();"svg"===e.painter.getType()||null==this._lastZlevel||e.painter.getLayer(this._lastZlevel).clear(!0)},e.prototype.remove=function(t,e){this._lineDraw&&this._lineDraw.remove(),this._lineDraw=null,this._clearLayer(e)},e.prototype.dispose=function(t,e){this.remove(t,e)},e.type="lines",e}(xg),TP="undefined"==typeof Uint32Array?Array:Uint32Array,CP="undefined"==typeof Float64Array?Array:Float64Array;function DP(t){var e=t.data;e&&e[0]&&e[0][0]&&e[0][0].coord&&(t.data=z(e,(function(t){var e={coords:[t[0].coord,t[1].coord]};return t[0].name&&(e.fromName=t[0].name),t[1].name&&(e.toName=t[1].name),D([e,t[0],t[1]])})))}var AP=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.visualStyleAccessPath="lineStyle",n.visualDrawType="stroke",n}return n(e,t),e.prototype.init=function(e){e.data=e.data||[],DP(e);var n=this._processFlatCoordsArray(e.data);this._flatCoords=n.flatCoords,this._flatCoordsOffset=n.flatCoordsOffset,n.flatCoords&&(e.data=new Float32Array(n.count)),t.prototype.init.apply(this,arguments)},e.prototype.mergeOption=function(e){if(DP(e),e.data){var n=this._processFlatCoordsArray(e.data);this._flatCoords=n.flatCoords,this._flatCoordsOffset=n.flatCoordsOffset,n.flatCoords&&(e.data=new Float32Array(n.count))}t.prototype.mergeOption.apply(this,arguments)},e.prototype.appendData=function(t){var e=this._processFlatCoordsArray(t.data);e.flatCoords&&(this._flatCoords?(this._flatCoords=gt(this._flatCoords,e.flatCoords),this._flatCoordsOffset=gt(this._flatCoordsOffset,e.flatCoordsOffset)):(this._flatCoords=e.flatCoords,this._flatCoordsOffset=e.flatCoordsOffset),t.data=new Float32Array(e.count)),this.getRawData().appendData(t.data)},e.prototype._getCoordsFromItemModel=function(t){var e=this.getData().getItemModel(t),n=e.option instanceof Array?e.option:e.getShallow("coords");return n},e.prototype.getLineCoordsCount=function(t){return this._flatCoordsOffset?this._flatCoordsOffset[2*t+1]:this._getCoordsFromItemModel(t).length},e.prototype.getLineCoords=function(t,e){if(this._flatCoordsOffset){for(var n=this._flatCoordsOffset[2*t],i=this._flatCoordsOffset[2*t+1],r=0;r<i;r++)e[r]=e[r]||[],e[r][0]=this._flatCoords[n+2*r],e[r][1]=this._flatCoords[n+2*r+1];return i}var o=this._getCoordsFromItemModel(t);for(r=0;r<o.length;r++)e[r]=e[r]||[],e[r][0]=o[r][0],e[r][1]=o[r][1];return o.length},e.prototype._processFlatCoordsArray=function(t){var e=0;if(this._flatCoords&&(e=this._flatCoords.length),j(t[0])){for(var n=t.length,i=new TP(n),r=new CP(n),o=0,a=0,s=0,l=0;l<n;){s++;var u=t[l++];i[a++]=o+e,i[a++]=u;for(var h=0;h<u;h++){var c=t[l++],p=t[l++];r[o++]=c,r[o++]=p}}return{flatCoordsOffset:new Uint32Array(i.buffer,0,a),flatCoords:r,count:s}}return{flatCoordsOffset:null,flatCoords:null,count:t.length}},e.prototype.getInitialData=function(t,e){var n=new jm(["value"],this);return n.hasItemOption=!1,n.initData(t.data,[],(function(t,e,i,r){if(t instanceof Array)return NaN;n.hasItemOption=!0;var o=t.value;return null!=o?o instanceof Array?o[r]:o:void 0})),n},e.prototype.formatTooltip=function(t,e,n){var i=this.getData().getItemModel(t),r=i.get("name");if(r)return r;var o=i.get("fromName"),a=i.get("toName"),s=[];return null!=o&&s.push(o),null!=a&&s.push(a),Xf("nameValue",{name:s.join(" > ")})},e.prototype.preventIncremental=function(){return!!this.get(["effect","show"])},e.prototype.getProgressive=function(){var t=this.option.progressive;return null==t?this.option.large?1e4:this.get("progressive"):t},e.prototype.getProgressiveThreshold=function(){var t=this.option.progressiveThreshold;return null==t?this.option.large?2e4:this.get("progressiveThreshold"):t},e.prototype.getZLevelKey=function(){var t=this.getModel("effect"),e=t.get("trailLength");return this.getData().count()>this.getProgressiveThreshold()?this.id:t.get("show")&&e>0?e+"":""},e.type="series.lines",e.dependencies=["grid","polar","geo","calendar"],e.defaultOption={coordinateSystem:"geo",z:2,legendHoverLink:!0,xAxisIndex:0,yAxisIndex:0,symbol:["none","none"],symbolSize:[10,10],geoIndex:0,effect:{show:!1,period:4,constantSpeed:0,symbol:"circle",symbolSize:3,loop:!0,trailLength:.2},large:!1,largeThreshold:2e3,polyline:!1,clip:!0,label:{show:!1,position:"end"},lineStyle:{opacity:.5}},e}(sg);function kP(t){return t instanceof Array||(t=[t,t]),t}var LP={seriesType:"lines",reset:function(t){var e=kP(t.get("symbol")),n=kP(t.get("symbolSize")),i=t.getData();return i.setVisual("fromSymbol",e&&e[0]),i.setVisual("toSymbol",e&&e[1]),i.setVisual("fromSymbolSize",n&&n[0]),i.setVisual("toSymbolSize",n&&n[1]),{dataEach:i.hasItemOption?function(t,e){var n=t.getItemModel(e),i=kP(n.getShallow("symbol",!0)),r=kP(n.getShallow("symbolSize",!0));i[0]&&t.setItemVisual(e,"fromSymbol",i[0]),i[1]&&t.setItemVisual(e,"toSymbol",i[1]),r[0]&&t.setItemVisual(e,"fromSymbolSize",r[0]),r[1]&&t.setItemVisual(e,"toSymbolSize",r[1])}:null}}};var PP=function(){function t(){this.blurSize=30,this.pointSize=20,this.maxOpacity=1,this.minOpacity=0,this._gradientPixels={inRange:null,outOfRange:null};var t=h.createCanvas();this.canvas=t}return t.prototype.update=function(t,e,n,i,r,o){var a=this._getBrush(),s=this._getGradient(r,"inRange"),l=this._getGradient(r,"outOfRange"),u=this.pointSize+this.blurSize,h=this.canvas,c=h.getContext("2d"),p=t.length;h.width=e,h.height=n;for(var d=0;d<p;++d){var f=t[d],g=f[0],y=f[1],v=i(f[2]);c.globalAlpha=v,c.drawImage(a,g-u,y-u)}if(!h.width||!h.height)return h;for(var m=c.getImageData(0,0,h.width,h.height),x=m.data,_=0,b=x.length,w=this.minOpacity,S=this.maxOpacity-w;_<b;){v=x[_+3]/256;var M=4*Math.floor(255*v);if(v>0){var I=o(v)?s:l;v>0&&(v=v*S+w),x[_++]=I[M],x[_++]=I[M+1],x[_++]=I[M+2],x[_++]=I[M+3]*v*256}else _+=4}return c.putImageData(m,0,0),h},t.prototype._getBrush=function(){var t=this._brushCanvas||(this._brushCanvas=h.createCanvas()),e=this.pointSize+this.blurSize,n=2*e;t.width=n,t.height=n;var i=t.getContext("2d");return i.clearRect(0,0,n,n),i.shadowOffsetX=n,i.shadowBlur=this.blurSize,i.shadowColor="#000",i.beginPath(),i.arc(-e,e,this.pointSize,0,2*Math.PI,!0),i.closePath(),i.fill(),t},t.prototype._getGradient=function(t,e){for(var n=this._gradientPixels,i=n[e]||(n[e]=new Uint8ClampedArray(1024)),r=[0,0,0,0],o=0,a=0;a<256;a++)t[e](a/255,!0,r),i[o++]=r[0],i[o++]=r[1],i[o++]=r[2],i[o++]=r[3];return i},t}();function OP(t){var e=t.dimensions;return"lng"===e[0]&&"lat"===e[1]}var RP=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){var i;e.eachComponent("visualMap",(function(e){e.eachTargetSeries((function(n){n===t&&(i=e)}))})),this._progressiveEls=null,this.group.removeAll();var r=t.coordinateSystem;"cartesian2d"===r.type||"calendar"===r.type?this._renderOnCartesianAndCalendar(t,n,0,t.getData().count()):OP(r)&&this._renderOnGeo(r,t,i,n)},e.prototype.incrementalPrepareRender=function(t,e,n){this.group.removeAll()},e.prototype.incrementalRender=function(t,e,n,i){var r=e.coordinateSystem;r&&(OP(r)?this.render(e,n,i):(this._progressiveEls=[],this._renderOnCartesianAndCalendar(e,i,t.start,t.end,!0)))},e.prototype.eachRendered=function(t){Vh(this._progressiveEls||this.group,t)},e.prototype._renderOnCartesianAndCalendar=function(t,e,n,i,r){var o,a,s,l,u=t.coordinateSystem,h=lS(u,"cartesian2d");if(h){var c=u.getAxis("x"),p=u.getAxis("y");0,o=c.getBandWidth()+.5,a=p.getBandWidth()+.5,s=c.scale.getExtent(),l=p.scale.getExtent()}for(var d=this.group,f=t.getData(),g=t.getModel(["emphasis","itemStyle"]).getItemStyle(),y=t.getModel(["blur","itemStyle"]).getItemStyle(),v=t.getModel(["select","itemStyle"]).getItemStyle(),m=t.get(["itemStyle","borderRadius"]),x=Yh(t),_=t.getModel("emphasis"),b=_.get("focus"),w=_.get("blurScope"),S=_.get("disabled"),M=h?[f.mapDimension("x"),f.mapDimension("y"),f.mapDimension("value")]:[f.mapDimension("time"),f.mapDimension("value")],I=n;I<i;I++){var T=void 0,C=f.getItemVisual(I,"style");if(h){var D=f.get(M[0],I),A=f.get(M[1],I);if(isNaN(f.get(M[2],I))||D<s[0]||D>s[1]||A<l[0]||A>l[1])continue;var k=u.dataToPoint([D,A]);T=new Cs({shape:{x:k[0]-o/2,y:k[1]-a/2,width:o,height:a},style:C})}else{if(isNaN(f.get(M[1],I)))continue;T=new Cs({z2:1,shape:u.dataToRect([f.get(M[0],I)]).contentShape,style:C})}if(f.hasItemOption){var L=f.getItemModel(I),P=L.getModel("emphasis");g=P.getModel("itemStyle").getItemStyle(),y=L.getModel(["blur","itemStyle"]).getItemStyle(),v=L.getModel(["select","itemStyle"]).getItemStyle(),m=L.get(["itemStyle","borderRadius"]),b=P.get("focus"),w=P.get("blurScope"),S=P.get("disabled"),x=Yh(L)}T.shape.r=m;var O=t.getRawValue(I),R="-";O&&null!=O[2]&&(R=O[2]+""),Hh(T,x,{labelFetcher:t,labelDataIndex:I,defaultOpacity:C.opacity,defaultText:R}),T.ensureState("emphasis").style=g,T.ensureState("blur").style=y,T.ensureState("select").style=v,Rl(T,b,w,S),T.incremental=r,r&&(T.states.emphasis.hoverLayer=!0),d.add(T),f.setItemGraphicEl(I,T),this._progressiveEls&&this._progressiveEls.push(T)}},e.prototype._renderOnGeo=function(t,e,n,i){var r=n.targetVisuals.inRange,o=n.targetVisuals.outOfRange,a=e.getData(),s=this._hmLayer||this._hmLayer||new PP;s.blurSize=e.get("blurSize"),s.pointSize=e.get("pointSize"),s.minOpacity=e.get("minOpacity"),s.maxOpacity=e.get("maxOpacity");var l=t.getViewRect().clone(),u=t.getRoamTransform();l.applyTransform(u);var h=Math.max(l.x,0),c=Math.max(l.y,0),p=Math.min(l.width+l.x,i.getWidth()),d=Math.min(l.height+l.y,i.getHeight()),f=p-h,g=d-c,y=[a.mapDimension("lng"),a.mapDimension("lat"),a.mapDimension("value")],v=a.mapArray(y,(function(e,n,i){var r=t.dataToPoint([e,n]);return r[0]-=h,r[1]-=c,r.push(i),r})),m=n.getExtent(),x="visualMap.continuous"===n.type?function(t,e){var n=t[1]-t[0];return e=[(e[0]-t[0])/n,(e[1]-t[0])/n],function(t){return t>=e[0]&&t<=e[1]}}(m,n.option.range):function(t,e,n){var i=t[1]-t[0],r=(e=z(e,(function(e){return{interval:[(e.interval[0]-t[0])/i,(e.interval[1]-t[0])/i]}}))).length,o=0;return function(t){var i;for(i=o;i<r;i++)if((a=e[i].interval)[0]<=t&&t<=a[1]){o=i;break}if(i===r)for(i=o-1;i>=0;i--){var a;if((a=e[i].interval)[0]<=t&&t<=a[1]){o=i;break}}return i>=0&&i<r&&n[i]}}(m,n.getPieceList(),n.option.selected);s.update(v,f,g,r.color.getNormalizer(),{inRange:r.color.getColorMapper(),outOfRange:o.color.getColorMapper()},x);var _=new _s({style:{width:f,height:g,x:h,y:c,image:s.canvas},silent:!0});this.group.add(_)},e.type="heatmap",e}(xg),NP=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.getInitialData=function(t,e){return ix(null,this,{generateCoord:"value"})},e.prototype.preventIncremental=function(){var t=hd.get(this.get("coordinateSystem"));if(t&&t.dimensions)return"lng"===t.dimensions[0]&&"lat"===t.dimensions[1]},e.type="series.heatmap",e.dependencies=["grid","geo","calendar"],e.defaultOption={coordinateSystem:"cartesian2d",z:2,geoIndex:0,blurSize:30,pointSize:20,maxOpacity:1,minOpacity:0,select:{itemStyle:{borderColor:"#212121"}}},e}(sg);var EP=["itemStyle","borderWidth"],zP=[{xy:"x",wh:"width",index:0,posDesc:["left","right"]},{xy:"y",wh:"height",index:1,posDesc:["top","bottom"]}],VP=new hu,BP=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){var i=this.group,r=t.getData(),o=this._data,a=t.coordinateSystem,s=a.getBaseAxis().isHorizontal(),l=a.master.getRect(),u={ecSize:{width:n.getWidth(),height:n.getHeight()},seriesModel:t,coordSys:a,coordSysExtent:[[l.x,l.x+l.width],[l.y,l.y+l.height]],isHorizontal:s,valueDim:zP[+s],categoryDim:zP[1-+s]};return r.diff(o).add((function(t){if(r.hasValue(t)){var e=ZP(r,t),n=FP(r,t,e,u),o=KP(r,u,n);r.setItemGraphicEl(t,o),i.add(o),eO(o,u,n)}})).update((function(t,e){var n=o.getItemGraphicEl(e);if(r.hasValue(t)){var a=ZP(r,t),s=FP(r,t,a,u),l=JP(r,s);n&&l!==n.__pictorialShapeStr&&(i.remove(n),r.setItemGraphicEl(t,null),n=null),n?function(t,e,n){var i=n.animationModel,r=n.dataIndex;rh(t.__pictorialBundle,{x:n.bundlePosition[0],y:n.bundlePosition[1]},i,r),n.symbolRepeat?HP(t,e,n,!0):YP(t,e,n,!0);UP(t,n,!0),XP(t,e,n,!0)}(n,u,s):n=KP(r,u,s,!0),r.setItemGraphicEl(t,n),n.__pictorialSymbolMeta=s,i.add(n),eO(n,u,s)}else i.remove(n)})).remove((function(t){var e=o.getItemGraphicEl(t);e&&$P(o,t,e.__pictorialSymbolMeta.animationModel,e)})).execute(),this._data=r,this.group},e.prototype.remove=function(t,e){var n=this.group,i=this._data;t.get("animation")?i&&i.eachItemGraphicEl((function(e){$P(i,Hs(e).dataIndex,t,e)})):n.removeAll()},e.type="pictorialBar",e}(xg);function FP(t,e,n,i){var r=t.getItemLayout(e),o=n.get("symbolRepeat"),a=n.get("symbolClip"),s=n.get("symbolPosition")||"start",l=(n.get("symbolRotate")||0)*Math.PI/180||0,u=n.get("symbolPatternSize")||2,h=n.isAnimationEnabled(),c={dataIndex:e,layout:r,itemModel:n,symbolType:t.getItemVisual(e,"symbol")||"circle",style:t.getItemVisual(e,"style"),symbolClip:a,symbolRepeat:o,symbolRepeatDirection:n.get("symbolRepeatDirection"),symbolPatternSize:u,rotation:l,animationModel:h?n:null,hoverScale:h&&n.get(["emphasis","scale"]),z2:n.getShallow("z",!0)||0};!function(t,e,n,i,r){var o,a=i.valueDim,s=t.get("symbolBoundingData"),l=i.coordSys.getOtherAxis(i.coordSys.getBaseAxis()),u=l.toGlobalCoord(l.dataToCoord(0)),h=1-+(n[a.wh]<=0);if(Y(s)){var c=[GP(l,s[0])-u,GP(l,s[1])-u];c[1]<c[0]&&c.reverse(),o=c[h]}else o=null!=s?GP(l,s)-u:e?i.coordSysExtent[a.index][h]-u:n[a.wh];r.boundingLength=o,e&&(r.repeatCutLength=n[a.wh]);r.pxSign=o>0?1:-1}(n,o,r,i,c),function(t,e,n,i,r,o,a,s,l,u){var h,c=l.valueDim,p=l.categoryDim,d=Math.abs(n[p.wh]),f=t.getItemVisual(e,"symbolSize");h=Y(f)?f.slice():null==f?["100%","100%"]:[f,f];h[p.index]=Er(h[p.index],d),h[c.index]=Er(h[c.index],i?d:Math.abs(o)),u.symbolSize=h,(u.symbolScale=[h[0]/s,h[1]/s])[c.index]*=(l.isHorizontal?-1:1)*a}(t,e,r,o,0,c.boundingLength,c.pxSign,u,i,c),function(t,e,n,i,r){var o=t.get(EP)||0;o&&(VP.attr({scaleX:e[0],scaleY:e[1],rotation:n}),VP.updateTransform(),o/=VP.getLineScale(),o*=e[i.valueDim.index]);r.valueLineWidth=o||0}(n,c.symbolScale,l,i,c);var p=c.symbolSize,d=Oy(n.get("symbolOffset"),p);return function(t,e,n,i,r,o,a,s,l,u,h,c){var p=h.categoryDim,d=h.valueDim,f=c.pxSign,g=Math.max(e[d.index]+s,0),y=g;if(i){var v=Math.abs(l),m=it(t.get("symbolMargin"),"15%")+"",x=!1;m.lastIndexOf("!")===m.length-1&&(x=!0,m=m.slice(0,m.length-1));var _=Er(m,e[d.index]),b=Math.max(g+2*_,0),w=x?0:2*_,S=eo(i),M=S?i:nO((v+w)/b);b=g+2*(_=(v-M*g)/2/(x?M:Math.max(M-1,1))),w=x?0:2*_,S||"fixed"===i||(M=u?nO((Math.abs(u)+w)/b):0),y=M*b-w,c.repeatTimes=M,c.symbolMargin=_}var I=f*(y/2),T=c.pathPosition=[];T[p.index]=n[p.wh]/2,T[d.index]="start"===a?I:"end"===a?l-I:l/2,o&&(T[0]+=o[0],T[1]+=o[1]);var C=c.bundlePosition=[];C[p.index]=n[p.xy],C[d.index]=n[d.xy];var D=c.barRectShape=A({},n);D[d.wh]=f*Math.max(Math.abs(n[d.wh]),Math.abs(T[d.index]+I)),D[p.wh]=n[p.wh];var k=c.clipShape={};k[p.xy]=-n[p.xy],k[p.wh]=h.ecSize[p.wh],k[d.xy]=0,k[d.wh]=n[d.wh]}(n,p,r,o,0,d,s,c.valueLineWidth,c.boundingLength,c.repeatCutLength,i,c),c}function GP(t,e){return t.toGlobalCoord(t.dataToCoord(t.scale.parse(e)))}function WP(t){var e=t.symbolPatternSize,n=Ly(t.symbolType,-e/2,-e/2,e,e);return n.attr({culling:!0}),"image"!==n.type&&n.setStyle({strokeNoScale:!0}),n}function HP(t,e,n,i){var r=t.__pictorialBundle,o=n.symbolSize,a=n.valueLineWidth,s=n.pathPosition,l=e.valueDim,u=n.repeatTimes||0,h=0,c=o[e.valueDim.index]+a+2*n.symbolMargin;for(QP(t,(function(t){t.__pictorialAnimationIndex=h,t.__pictorialRepeatTimes=u,h<u?tO(t,null,f(h),n,i):tO(t,null,{scaleX:0,scaleY:0},n,i,(function(){r.remove(t)})),h++}));h<u;h++){var p=WP(n);p.__pictorialAnimationIndex=h,p.__pictorialRepeatTimes=u,r.add(p);var d=f(h);tO(p,{x:d.x,y:d.y,scaleX:0,scaleY:0},{scaleX:d.scaleX,scaleY:d.scaleY,rotation:d.rotation},n,i)}function f(t){var e=s.slice(),i=n.pxSign,r=t;return("start"===n.symbolRepeatDirection?i>0:i<0)&&(r=u-1-t),e[l.index]=c*(r-u/2+.5)+s[l.index],{x:e[0],y:e[1],scaleX:n.symbolScale[0],scaleY:n.symbolScale[1],rotation:n.rotation}}}function YP(t,e,n,i){var r=t.__pictorialBundle,o=t.__pictorialMainPath;o?tO(o,null,{x:n.pathPosition[0],y:n.pathPosition[1],scaleX:n.symbolScale[0],scaleY:n.symbolScale[1],rotation:n.rotation},n,i):(o=t.__pictorialMainPath=WP(n),r.add(o),tO(o,{x:n.pathPosition[0],y:n.pathPosition[1],scaleX:0,scaleY:0,rotation:n.rotation},{scaleX:n.symbolScale[0],scaleY:n.symbolScale[1]},n,i))}function UP(t,e,n){var i=A({},e.barRectShape),r=t.__pictorialBarRect;r?tO(r,null,{shape:i},e,n):((r=t.__pictorialBarRect=new Cs({z2:2,shape:i,silent:!0,style:{stroke:"transparent",fill:"transparent",lineWidth:0}})).disableMorphing=!0,t.add(r))}function XP(t,e,n,i){if(n.symbolClip){var r=t.__pictorialClipPath,o=A({},n.clipShape),a=e.valueDim,s=n.animationModel,l=n.dataIndex;if(r)rh(r,{shape:o},s,l);else{o[a.wh]=0,r=new Cs({shape:o}),t.__pictorialBundle.setClipPath(r),t.__pictorialClipPath=r;var u={};u[a.wh]=n.clipShape[a.wh],Bh[i?"updateProps":"initProps"](r,{shape:u},s,l)}}}function ZP(t,e){var n=t.getItemModel(e);return n.getAnimationDelayParams=jP,n.isAnimationEnabled=qP,n}function jP(t){return{index:t.__pictorialAnimationIndex,count:t.__pictorialRepeatTimes}}function qP(){return this.parentModel.isAnimationEnabled()&&!!this.getShallow("animation")}function KP(t,e,n,i){var r=new Cr,o=new Cr;return r.add(o),r.__pictorialBundle=o,o.x=n.bundlePosition[0],o.y=n.bundlePosition[1],n.symbolRepeat?HP(r,e,n):YP(r,0,n),UP(r,n,i),XP(r,e,n,i),r.__pictorialShapeStr=JP(t,n),r.__pictorialSymbolMeta=n,r}function $P(t,e,n,i){var r=i.__pictorialBarRect;r&&r.removeTextContent();var o=[];QP(i,(function(t){o.push(t)})),i.__pictorialMainPath&&o.push(i.__pictorialMainPath),i.__pictorialClipPath&&(n=null),E(o,(function(t){sh(t,{scaleX:0,scaleY:0},n,e,(function(){i.parent&&i.parent.remove(i)}))})),t.setItemGraphicEl(e,null)}function JP(t,e){return[t.getItemVisual(e.dataIndex,"symbol")||"none",!!e.symbolRepeat,!!e.symbolClip].join(":")}function QP(t,e,n){E(t.__pictorialBundle.children(),(function(i){i!==t.__pictorialBarRect&&e.call(n,i)}))}function tO(t,e,n,i,r,o){e&&t.attr(e),i.symbolClip&&!r?n&&t.attr(n):n&&Bh[r?"updateProps":"initProps"](t,n,i.animationModel,i.dataIndex,o)}function eO(t,e,n){var i=n.dataIndex,r=n.itemModel,o=r.getModel("emphasis"),a=o.getModel("itemStyle").getItemStyle(),s=r.getModel(["blur","itemStyle"]).getItemStyle(),l=r.getModel(["select","itemStyle"]).getItemStyle(),u=r.getShallow("cursor"),h=o.get("focus"),c=o.get("blurScope"),p=o.get("scale");QP(t,(function(t){if(t instanceof _s){var e=t.style;t.useStyle(A({image:e.image,x:e.x,y:e.y,width:e.width,height:e.height},n.style))}else t.useStyle(n.style);var i=t.ensureState("emphasis");i.style=a,p&&(i.scaleX=1.1*t.scaleX,i.scaleY=1.1*t.scaleY),t.ensureState("blur").style=s,t.ensureState("select").style=l,u&&(t.cursor=u),t.z2=n.z2}));var d=e.valueDim.posDesc[+(n.boundingLength>0)];Hh(t.__pictorialBarRect,Yh(r),{labelFetcher:e.seriesModel,labelDataIndex:i,defaultText:Gw(e.seriesModel.getData(),i),inheritColor:n.style.fill,defaultOpacity:n.style.opacity,defaultOutsidePosition:d}),Rl(t,h,c,o.get("disabled"))}function nO(t){var e=Math.round(t);return Math.abs(t-e)<1e-4?e:Math.ceil(t)}var iO=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.hasSymbolVisual=!0,n.defaultSymbol="roundRect",n}return n(e,t),e.prototype.getInitialData=function(e){return e.stack=null,t.prototype.getInitialData.apply(this,arguments)},e.type="series.pictorialBar",e.dependencies=["grid"],e.defaultOption=yc(MS.defaultOption,{symbol:"circle",symbolSize:null,symbolRotate:null,symbolPosition:null,symbolOffset:null,symbolMargin:null,symbolRepeat:!1,symbolRepeatDirection:"end",symbolClip:!1,symbolBoundingData:null,symbolPatternSize:400,barGap:"-100%",progressive:0,emphasis:{scale:!1},select:{itemStyle:{borderColor:"#212121"}}}),e}(MS);var rO=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n._layers=[],n}return n(e,t),e.prototype.render=function(t,e,n){var i=t.getData(),r=this,o=this.group,a=t.getLayerSeries(),s=i.getLayout("layoutInfo"),l=s.rect,u=s.boundaryGap;function h(t){return t.name}o.x=0,o.y=l.y+u[0];var c=new Mm(this._layersSeries||[],a,h,h),p=[];function d(e,n,s){var l=r._layers;if("remove"!==e){for(var u,h,c=[],d=[],f=a[n].indices,g=0;g<f.length;g++){var y=i.getItemLayout(f[g]),v=y.x,m=y.y0,x=y.y;c.push(v,m),d.push(v,m+x),u=i.getItemVisual(f[g],"style")}var _=i.getItemLayout(f[0]),b=t.getModel("label").get("margin"),w=t.getModel("emphasis");if("add"===e){var S=p[n]=new Cr;h=new rS({shape:{points:c,stackedOnPoints:d,smooth:.4,stackedOnSmooth:.4,smoothConstraint:!1},z2:0}),S.add(h),o.add(S),t.isAnimationEnabled()&&h.setClipPath(function(t,e,n){var i=new Cs({shape:{x:t.x-10,y:t.y-10,width:0,height:t.height+20}});return oh(i,{shape:{x:t.x-50,width:t.width+100,height:t.height+20}},e,n),i}(h.getBoundingRect(),t,(function(){h.removeClipPath()})))}else{S=l[s];h=S.childAt(0),o.add(S),p[n]=S,rh(h,{shape:{points:c,stackedOnPoints:d}},t),hh(h)}Hh(h,Yh(t),{labelDataIndex:f[g-1],defaultText:i.getName(f[g-1]),inheritColor:u.fill},{normal:{verticalAlign:"middle"}}),h.setTextConfig({position:null,local:!0});var M=h.getTextContent();M&&(M.x=_.x-b,M.y=_.y0+_.y/2),h.useStyle(u),i.setItemGraphicEl(n,h),Vl(h,t),Rl(h,w.get("focus"),w.get("blurScope"),w.get("disabled"))}else o.remove(l[n])}c.add(W(d,this,"add")).update(W(d,this,"update")).remove(W(d,this,"remove")).execute(),this._layersSeries=a,this._layers=p},e.type="themeRiver",e}(xg);var oO=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.init=function(e){t.prototype.init.apply(this,arguments),this.legendVisualProvider=new uM(W(this.getData,this),W(this.getRawData,this))},e.prototype.fixData=function(t){var e=t.length,n={},i=Lo(t,(function(t){return n.hasOwnProperty(t[0]+"")||(n[t[0]+""]=-1),t[2]})),r=[];i.buckets.each((function(t,e){r.push({name:e,dataList:t})}));for(var o=r.length,a=0;a<o;++a){for(var s=r[a].name,l=0;l<r[a].dataList.length;++l){var u=r[a].dataList[l][0]+"";n[u]=a}for(var u in n)n.hasOwnProperty(u)&&n[u]!==a&&(n[u]=a,t[e]=[u,0,s],e++)}return t},e.prototype.getInitialData=function(t,e){for(var n=this.getReferringComponents("singleAxis",Co).models[0].get("type"),i=B(t.data,(function(t){return void 0!==t[2]})),r=this.fixData(i||[]),o=[],a=this.nameMap=ft(),s=0,l=0;l<r.length;++l)o.push(r[l][2]),a.get(r[l][2])||(a.set(r[l][2],s),s++);var u=qm(r,{coordDimensions:["single"],dimensionsDefine:[{name:"time",type:Cm(n)},{name:"value",type:"float"},{name:"name",type:"ordinal"}],encodeDefine:{single:0,value:1,itemName:2}}).dimensions,h=new jm(u,this);return h.initData(r),h},e.prototype.getLayerSeries=function(){for(var t=this.getData(),e=t.count(),n=[],i=0;i<e;++i)n[i]=i;var r=t.mapDimension("single"),o=Lo(n,(function(e){return t.get("name",e)})),a=[];return o.buckets.each((function(e,n){e.sort((function(e,n){return t.get(r,e)-t.get(r,n)})),a.push({name:n,indices:e})})),a},e.prototype.getAxisTooltipData=function(t,e,n){Y(t)||(t=t?[t]:[]);for(var i,r=this.getData(),o=this.getLayerSeries(),a=[],s=o.length,l=0;l<s;++l){for(var u=Number.MAX_VALUE,h=-1,c=o[l].indices.length,p=0;p<c;++p){var d=r.get(t[0],o[l].indices[p]),f=Math.abs(d-e);f<=u&&(i=d,u=f,h=o[l].indices[p])}a.push(h)}return{dataIndices:a,nestestValue:i}},e.prototype.formatTooltip=function(t,e,n){var i=this.getData();return Xf("nameValue",{name:i.getName(t),value:i.get(i.mapDimension("value"),t)})},e.type="series.themeRiver",e.dependencies=["singleAxis"],e.defaultOption={z:2,colorBy:"data",coordinateSystem:"singleAxis",boundaryGap:["10%","10%"],singleAxisIndex:0,animationEasing:"linear",label:{margin:4,show:!0,position:"left",fontSize:11},emphasis:{label:{show:!0}}},e}(sg);function aO(t,e){t.eachSeriesByType("themeRiver",(function(t){var e=t.getData(),n=t.coordinateSystem,i={},r=n.getRect();i.rect=r;var o=t.get("boundaryGap"),a=n.getAxis();(i.boundaryGap=o,"horizontal"===a.orient)?(o[0]=Er(o[0],r.height),o[1]=Er(o[1],r.height),sO(e,t,r.height-o[0]-o[1])):(o[0]=Er(o[0],r.width),o[1]=Er(o[1],r.width),sO(e,t,r.width-o[0]-o[1]));e.setLayout("layoutInfo",i)}))}function sO(t,e,n){if(t.count())for(var i,r=e.coordinateSystem,o=e.getLayerSeries(),a=t.mapDimension("single"),s=t.mapDimension("value"),l=z(o,(function(e){return z(e.indices,(function(e){var n=r.dataToPoint(t.get(a,e));return n[1]=t.get(s,e),n}))})),u=function(t){for(var e=t.length,n=t[0].length,i=[],r=[],o=0,a=0;a<n;++a){for(var s=0,l=0;l<e;++l)s+=t[l][a][1];s>o&&(o=s),i.push(s)}for(var u=0;u<n;++u)r[u]=(o-i[u])/2;o=0;for(var h=0;h<n;++h){var c=i[h]+r[h];c>o&&(o=c)}return{y0:r,max:o}}(l),h=u.y0,c=n/u.max,p=o.length,d=o[0].indices.length,f=0;f<d;++f){i=h[f]*c,t.setItemLayout(o[0].indices[f],{layerIndex:0,x:l[0][f][0],y0:i,y:l[0][f][1]*c});for(var g=1;g<p;++g)i+=l[g-1][f][1]*c,t.setItemLayout(o[g].indices[f],{layerIndex:g,x:l[g][f][0],y0:i,y:l[g][f][1]*c})}}var lO=function(t){function e(e,n,i,r){var o=t.call(this)||this;o.z2=2,o.textConfig={inside:!0},Hs(o).seriesIndex=n.seriesIndex;var a=new ks({z2:4,silent:e.getModel().get(["label","silent"])});return o.setTextContent(a),o.updateData(!0,e,n,i,r),o}return n(e,t),e.prototype.updateData=function(t,e,n,i,r){this.node=e,e.piece=this,n=n||this._seriesModel,i=i||this._ecModel;var o=this;Hs(o).dataIndex=e.dataIndex;var a=e.getModel(),s=a.getModel("emphasis"),l=e.getLayout(),u=A({},l);u.label=null;var h=e.getVisual("style");h.lineJoin="bevel";var c=e.getVisual("decal");c&&(h.decal=iv(c,r));var p=oM(a.getModel("itemStyle"),u,!0);A(u,p),E(qs,(function(t){var e=o.ensureState(t),n=a.getModel([t,"itemStyle"]);e.style=n.getItemStyle();var i=oM(n,u);i&&(e.shape=i)})),t?(o.setShape(u),o.shape.r=l.r0,rh(o,{shape:{r:l.r}},n,e.dataIndex)):(rh(o,{shape:u},n),hh(o)),o.useStyle(h),this._updateLabel(n);var d=a.getShallow("cursor");d&&o.attr("cursor",d),this._seriesModel=n||this._seriesModel,this._ecModel=i||this._ecModel;var f=s.get("focus");Rl(this,"ancestor"===f?e.getAncestorsIndices():"descendant"===f?e.getDescendantIndices():f,s.get("blurScope"),s.get("disabled"))},e.prototype._updateLabel=function(t){var e=this,n=this.node.getModel(),i=n.getModel("label"),r=this.node.getLayout(),o=r.endAngle-r.startAngle,a=(r.startAngle+r.endAngle)/2,s=Math.cos(a),l=Math.sin(a),u=this,h=u.getTextContent(),c=this.node.dataIndex,p=i.get("minAngle")/180*Math.PI,d=i.get("show")&&!(null!=p&&Math.abs(o)<p);function f(t,e){var n=t.get(e);return null==n?i.get(e):n}h.ignore=!d,E(Ks,(function(i){var p="normal"===i?n.getModel("label"):n.getModel([i,"label"]),d="normal"===i,g=d?h:h.ensureState(i),y=t.getFormattedLabel(c,i);d&&(y=y||e.node.name),g.style=Uh(p,{},null,"normal"!==i,!0),y&&(g.style.text=y);var v=p.get("show");null==v||d||(g.ignore=!v);var m,x=f(p,"position"),_=d?u:u.states[i],b=_.style.fill;_.textConfig={outsideFill:"inherit"===p.get("color")?b:null,inside:"outside"!==x};var w=f(p,"distance")||0,S=f(p,"align");"outside"===x?(m=r.r+w,S=a>Math.PI/2?"right":"left"):S&&"center"!==S?"left"===S?(m=r.r0+w,a>Math.PI/2&&(S="right")):"right"===S&&(m=r.r-w,a>Math.PI/2&&(S="left")):(m=o===2*Math.PI&&0===r.r0?0:(r.r+r.r0)/2,S="center"),g.style.align=S,g.style.verticalAlign=f(p,"verticalAlign")||"middle",g.x=m*s+r.cx,g.y=m*l+r.cy;var M=f(p,"rotate"),I=0;"radial"===M?(I=-a)<-Math.PI/2&&(I+=Math.PI):"tangential"===M?(I=Math.PI/2-a)>Math.PI/2?I-=Math.PI:I<-Math.PI/2&&(I+=Math.PI):j(M)&&(I=M*Math.PI/180),g.rotation=I})),h.dirtyStyle()},e}(Cu),uO="sunburstRootToNode",hO="sunburstHighlight";var cO=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n,i){var r=this;this.seriesModel=t,this.api=n,this.ecModel=e;var o=t.getData(),a=o.tree.root,s=t.getViewRoot(),l=this.group,u=t.get("renderLabelForZeroData"),h=[];s.eachNode((function(t){h.push(t)}));var c=this._oldChildren||[];!function(i,r){if(0===i.length&&0===r.length)return;function s(t){return t.getId()}function h(s,h){!function(i,r){u||!i||i.getValue()||(i=null);if(i!==a&&r!==a)if(r&&r.piece)i?(r.piece.updateData(!1,i,t,e,n),o.setItemGraphicEl(i.dataIndex,r.piece)):function(t){if(!t)return;t.piece&&(l.remove(t.piece),t.piece=null)}(r);else if(i){var s=new lO(i,t,e,n);l.add(s),o.setItemGraphicEl(i.dataIndex,s)}}(null==s?null:i[s],null==h?null:r[h])}new Mm(r,i,s,s).add(h).update(h).remove(H(h,null)).execute()}(h,c),function(i,o){o.depth>0?(r.virtualPiece?r.virtualPiece.updateData(!1,i,t,e,n):(r.virtualPiece=new lO(i,t,e,n),l.add(r.virtualPiece)),o.piece.off("click"),r.virtualPiece.on("click",(function(t){r._rootToNode(o.parentNode)}))):r.virtualPiece&&(l.remove(r.virtualPiece),r.virtualPiece=null)}(a,s),this._initEvents(),this._oldChildren=h},e.prototype._initEvents=function(){var t=this;this.group.off("click"),this.group.on("click",(function(e){var n=!1;t.seriesModel.getViewRoot().eachNode((function(i){if(!n&&i.piece&&i.piece===e.target){var r=i.getModel().get("nodeClick");if("rootToNode"===r)t._rootToNode(i);else if("link"===r){var o=i.getModel(),a=o.get("link");if(a)dp(a,o.get("target",!0)||"_blank")}n=!0}}))}))},e.prototype._rootToNode=function(t){t!==this.seriesModel.getViewRoot()&&this.api.dispatchAction({type:uO,from:this.uid,seriesId:this.seriesModel.id,targetNode:t})},e.prototype.containPoint=function(t,e){var n=e.getData().getItemLayout(0);if(n){var i=t[0]-n.cx,r=t[1]-n.cy,o=Math.sqrt(i*i+r*r);return o<=n.r&&o>=n.r0}},e.type="sunburst",e}(xg),pO=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.ignoreStyleOnData=!0,n}return n(e,t),e.prototype.getInitialData=function(t,e){var n={name:t.name,children:t.data};dO(n);var i=this._levelModels=z(t.levels||[],(function(t){return new dc(t,this,e)}),this),r=DC.createTree(n,this,(function(t){t.wrapMethod("getItemModel",(function(t,e){var n=r.getNodeByDataIndex(e),o=i[n.depth];return o&&(t.parentModel=o),t}))}));return r.data},e.prototype.optionUpdated=function(){this.resetViewRoot()},e.prototype.getDataParams=function(e){var n=t.prototype.getDataParams.apply(this,arguments),i=this.getData().tree.getNodeByDataIndex(e);return n.treePathInfo=PC(i,this),n},e.prototype.getLevelModel=function(t){return this._levelModels&&this._levelModels[t.depth]},e.prototype.getViewRoot=function(){return this._viewRoot},e.prototype.resetViewRoot=function(t){t?this._viewRoot=t:t=this._viewRoot;var e=this.getRawData().tree.root;t&&(t===e||e.contains(t))||(this._viewRoot=e)},e.prototype.enableAriaDecal=function(){VC(this)},e.type="series.sunburst",e.defaultOption={z:2,center:["50%","50%"],radius:[0,"75%"],clockwise:!0,startAngle:90,minAngle:0,stillShowZeroSum:!0,nodeClick:"rootToNode",renderLabelForZeroData:!1,label:{rotate:"radial",show:!0,opacity:1,align:"center",position:"inside",distance:5,silent:!0},itemStyle:{borderWidth:1,borderColor:"white",borderType:"solid",shadowBlur:0,shadowColor:"rgba(0, 0, 0, 0.2)",shadowOffsetX:0,shadowOffsetY:0,opacity:1},emphasis:{focus:"descendant"},blur:{itemStyle:{opacity:.2},label:{opacity:.1}},animationType:"expansion",animationDuration:1e3,animationDurationUpdate:500,data:[],sort:"desc"},e}(sg);function dO(t){var e=0;E(t.children,(function(t){dO(t);var n=t.value;Y(n)&&(n=n[0]),e+=n}));var n=t.value;Y(n)&&(n=n[0]),(null==n||isNaN(n))&&(n=e),n<0&&(n=0),Y(t.value)?t.value[0]=n:t.value=n}var fO=Math.PI/180;function gO(t,e,n){e.eachSeriesByType(t,(function(t){var e=t.get("center"),i=t.get("radius");Y(i)||(i=[0,i]),Y(e)||(e=[e,e]);var r=n.getWidth(),o=n.getHeight(),a=Math.min(r,o),s=Er(e[0],r),l=Er(e[1],o),u=Er(i[0],a/2),h=Er(i[1],a/2),c=-t.get("startAngle")*fO,p=t.get("minAngle")*fO,d=t.getData().tree.root,f=t.getViewRoot(),g=f.depth,y=t.get("sort");null!=y&&yO(f,y);var v=0;E(f.children,(function(t){!isNaN(t.getValue())&&v++}));var m=f.getValue(),x=Math.PI/(m||v)*2,_=f.depth>0,b=f.height-(_?-1:1),w=(h-u)/(b||1),S=t.get("clockwise"),M=t.get("stillShowZeroSum"),I=S?1:-1,T=function(e,n){if(e){var i=n;if(e!==d){var r=e.getValue(),o=0===m&&M?x:r*x;o<p&&(o=p),i=n+I*o;var h=e.depth-g-(_?-1:1),c=u+w*h,f=u+w*(h+1),y=t.getLevelModel(e);if(y){var v=y.get("r0",!0),b=y.get("r",!0),C=y.get("radius",!0);null!=C&&(v=C[0],b=C[1]),null!=v&&(c=Er(v,a/2)),null!=b&&(f=Er(b,a/2))}e.setLayout({angle:o,startAngle:n,endAngle:i,clockwise:S,cx:s,cy:l,r0:c,r:f})}if(e.children&&e.children.length){var D=0;E(e.children,(function(t){D+=T(t,n+D)}))}return i-n}};if(_){var C=u,D=u+w,A=2*Math.PI;d.setLayout({angle:A,startAngle:c,endAngle:c+A,clockwise:S,cx:s,cy:l,r0:C,r:D})}T(f,c)}))}function yO(t,e){var n=t.children||[];t.children=function(t,e){if(U(e)){var n=z(t,(function(t,e){var n=t.getValue();return{params:{depth:t.depth,height:t.height,dataIndex:t.dataIndex,getValue:function(){return n}},index:e}}));return n.sort((function(t,n){return e(t.params,n.params)})),z(n,(function(e){return t[e.index]}))}var i="asc"===e;return t.sort((function(t,e){var n=(t.getValue()-e.getValue())*(i?1:-1);return 0===n?(t.dataIndex-e.dataIndex)*(i?-1:1):n}))}(n,e),n.length&&E(t.children,(function(t){yO(t,e)}))}function vO(t){var e={};t.eachSeriesByType("sunburst",(function(t){var n=t.getData(),i=n.tree;i.eachNode((function(r){var o=r.getModel().getModel("itemStyle").getItemStyle();o.fill||(o.fill=function(t,n,i){for(var r=t;r&&r.depth>1;)r=r.parentNode;var o=n.getColorFromPalette(r.name||r.dataIndex+"",e);return t.depth>1&&X(o)&&(o=Sn(o,(t.depth-1)/(i-1)*.5)),o}(r,t,i.root.height)),A(n.ensureUniqueItemVisual(r.dataIndex,"style"),o)}))}))}var mO={color:"fill",borderColor:"stroke"},xO={symbol:1,symbolSize:1,symbolKeepAspect:1,legendIcon:1,visualMeta:1,liftZ:1,decal:1},_O=So(),bO=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.optionUpdated=function(){this.currentZLevel=this.get("zlevel",!0),this.currentZ=this.get("z",!0)},e.prototype.getInitialData=function(t,e){return ix(null,this)},e.prototype.getDataParams=function(e,n,i){var r=t.prototype.getDataParams.call(this,e,n);return i&&(r.info=_O(i).info),r},e.type="series.custom",e.dependencies=["grid","polar","geo","singleAxis","calendar"],e.defaultOption={coordinateSystem:"cartesian2d",z:2,legendHoverLink:!0,clip:!1},e}(sg);function wO(t,e){return e=e||[0,0],z(["x","y"],(function(n,i){var r=this.getAxis(n),o=e[i],a=t[i]/2;return"category"===r.type?r.getBandWidth():Math.abs(r.dataToCoord(o-a)-r.dataToCoord(o+a))}),this)}function SO(t,e){return e=e||[0,0],z([0,1],(function(n){var i=e[n],r=t[n]/2,o=[],a=[];return o[n]=i-r,a[n]=i+r,o[1-n]=a[1-n]=e[1-n],Math.abs(this.dataToPoint(o)[n]-this.dataToPoint(a)[n])}),this)}function MO(t,e){var n=this.getAxis(),i=e instanceof Array?e[0]:e,r=(t instanceof Array?t[0]:t)/2;return"category"===n.type?n.getBandWidth():Math.abs(n.dataToCoord(i-r)-n.dataToCoord(i+r))}function IO(t,e){return e=e||[0,0],z(["Radius","Angle"],(function(n,i){var r=this["get"+n+"Axis"](),o=e[i],a=t[i]/2,s="category"===r.type?r.getBandWidth():Math.abs(r.dataToCoord(o-a)-r.dataToCoord(o+a));return"Angle"===n&&(s=s*Math.PI/180),s}),this)}function TO(t,e,n,i){return t&&(t.legacy||!1!==t.legacy&&!n&&!i&&"tspan"!==e&&("text"===e||mt(t,"text")))}function CO(t,e,n){var i,r,o,a=t;if("text"===e)o=a;else{o={},mt(a,"text")&&(o.text=a.text),mt(a,"rich")&&(o.rich=a.rich),mt(a,"textFill")&&(o.fill=a.textFill),mt(a,"textStroke")&&(o.stroke=a.textStroke),mt(a,"fontFamily")&&(o.fontFamily=a.fontFamily),mt(a,"fontSize")&&(o.fontSize=a.fontSize),mt(a,"fontStyle")&&(o.fontStyle=a.fontStyle),mt(a,"fontWeight")&&(o.fontWeight=a.fontWeight),r={type:"text",style:o,silent:!0},i={};var s=mt(a,"textPosition");n?i.position=s?a.textPosition:"inside":s&&(i.position=a.textPosition),mt(a,"textPosition")&&(i.position=a.textPosition),mt(a,"textOffset")&&(i.offset=a.textOffset),mt(a,"textRotation")&&(i.rotation=a.textRotation),mt(a,"textDistance")&&(i.distance=a.textDistance)}return DO(o,t),E(o.rich,(function(t){DO(t,t)})),{textConfig:i,textContent:r}}function DO(t,e){e&&(e.font=e.textFont||e.font,mt(e,"textStrokeWidth")&&(t.lineWidth=e.textStrokeWidth),mt(e,"textAlign")&&(t.align=e.textAlign),mt(e,"textVerticalAlign")&&(t.verticalAlign=e.textVerticalAlign),mt(e,"textLineHeight")&&(t.lineHeight=e.textLineHeight),mt(e,"textWidth")&&(t.width=e.textWidth),mt(e,"textHeight")&&(t.height=e.textHeight),mt(e,"textBackgroundColor")&&(t.backgroundColor=e.textBackgroundColor),mt(e,"textPadding")&&(t.padding=e.textPadding),mt(e,"textBorderColor")&&(t.borderColor=e.textBorderColor),mt(e,"textBorderWidth")&&(t.borderWidth=e.textBorderWidth),mt(e,"textBorderRadius")&&(t.borderRadius=e.textBorderRadius),mt(e,"textBoxShadowColor")&&(t.shadowColor=e.textBoxShadowColor),mt(e,"textBoxShadowBlur")&&(t.shadowBlur=e.textBoxShadowBlur),mt(e,"textBoxShadowOffsetX")&&(t.shadowOffsetX=e.textBoxShadowOffsetX),mt(e,"textBoxShadowOffsetY")&&(t.shadowOffsetY=e.textBoxShadowOffsetY))}function AO(t,e,n){var i=t;i.textPosition=i.textPosition||n.position||"inside",null!=n.offset&&(i.textOffset=n.offset),null!=n.rotation&&(i.textRotation=n.rotation),null!=n.distance&&(i.textDistance=n.distance);var r=i.textPosition.indexOf("inside")>=0,o=t.fill||"#000";kO(i,e);var a=null==i.textFill;return r?a&&(i.textFill=n.insideFill||"#fff",!i.textStroke&&n.insideStroke&&(i.textStroke=n.insideStroke),!i.textStroke&&(i.textStroke=o),null==i.textStrokeWidth&&(i.textStrokeWidth=2)):(a&&(i.textFill=t.fill||n.outsideFill||"#000"),!i.textStroke&&n.outsideStroke&&(i.textStroke=n.outsideStroke)),i.text=e.text,i.rich=e.rich,E(e.rich,(function(t){kO(t,t)})),i}function kO(t,e){e&&(mt(e,"fill")&&(t.textFill=e.fill),mt(e,"stroke")&&(t.textStroke=e.fill),mt(e,"lineWidth")&&(t.textStrokeWidth=e.lineWidth),mt(e,"font")&&(t.font=e.font),mt(e,"fontStyle")&&(t.fontStyle=e.fontStyle),mt(e,"fontWeight")&&(t.fontWeight=e.fontWeight),mt(e,"fontSize")&&(t.fontSize=e.fontSize),mt(e,"fontFamily")&&(t.fontFamily=e.fontFamily),mt(e,"align")&&(t.textAlign=e.align),mt(e,"verticalAlign")&&(t.textVerticalAlign=e.verticalAlign),mt(e,"lineHeight")&&(t.textLineHeight=e.lineHeight),mt(e,"width")&&(t.textWidth=e.width),mt(e,"height")&&(t.textHeight=e.height),mt(e,"backgroundColor")&&(t.textBackgroundColor=e.backgroundColor),mt(e,"padding")&&(t.textPadding=e.padding),mt(e,"borderColor")&&(t.textBorderColor=e.borderColor),mt(e,"borderWidth")&&(t.textBorderWidth=e.borderWidth),mt(e,"borderRadius")&&(t.textBorderRadius=e.borderRadius),mt(e,"shadowColor")&&(t.textBoxShadowColor=e.shadowColor),mt(e,"shadowBlur")&&(t.textBoxShadowBlur=e.shadowBlur),mt(e,"shadowOffsetX")&&(t.textBoxShadowOffsetX=e.shadowOffsetX),mt(e,"shadowOffsetY")&&(t.textBoxShadowOffsetY=e.shadowOffsetY),mt(e,"textShadowColor")&&(t.textShadowColor=e.textShadowColor),mt(e,"textShadowBlur")&&(t.textShadowBlur=e.textShadowBlur),mt(e,"textShadowOffsetX")&&(t.textShadowOffsetX=e.textShadowOffsetX),mt(e,"textShadowOffsetY")&&(t.textShadowOffsetY=e.textShadowOffsetY))}var LO={position:["x","y"],scale:["scaleX","scaleY"],origin:["originX","originY"]},PO=G(LO),OO=(V(Ki,(function(t,e){return t[e]=1,t}),{}),Ki.join(", "),["","style","shape","extra"]),RO=So();function NO(t,e,n,i,r){var o=t+"Animation",a=nh(t,i,r)||{},s=RO(e).userDuring;return a.duration>0&&(a.during=s?W(WO,{el:e,userDuring:s}):null,a.setToFinal=!0,a.scope=t),A(a,n[o]),a}function EO(t,e,n,i){var r=(i=i||{}).dataIndex,o=i.isInit,a=i.clearStyle,s=n.isAnimationEnabled(),l=RO(t),u=e.style;l.userDuring=e.during;var h={},c={};if(function(t,e,n){for(var i=0;i<PO.length;i++){var r=PO[i],o=LO[r],a=e[r];a&&(n[o[0]]=a[0],n[o[1]]=a[1])}for(i=0;i<Ki.length;i++){var s=Ki[i];null!=e[s]&&(n[s]=e[s])}}(0,e,c),YO("shape",e,c),YO("extra",e,c),!o&&s&&(function(t,e,n){for(var i=e.transition,r=BO(i)?Ki:ho(i||[]),o=0;o<r.length;o++){var a=r[o];if("style"!==a&&"shape"!==a&&"extra"!==a){var s=t[a];0,n[a]=s}}}(t,e,h),HO("shape",t,e,h),HO("extra",t,e,h),function(t,e,n,i){if(!n)return;var r,o=t.style;if(o){var a=n.transition,s=e.transition;if(a&&!BO(a)){var l=ho(a);!r&&(r=i.style={});for(var u=0;u<l.length;u++){var h=o[f=l[u]];r[f]=h}}else if(t.getAnimationStyleProps&&(BO(s)||BO(a)||P(s,"style")>=0)){var c=t.getAnimationStyleProps(),p=c?c.style:null;if(p){!r&&(r=i.style={});var d=G(n);for(u=0;u<d.length;u++){var f;if(p[f=d[u]]){h=o[f];r[f]=h}}}}}}(t,e,u,h)),c.style=u,function(t,e,n){var i=e.style;if(!t.isGroup&&i){if(n){t.useStyle({});for(var r=t.animators,o=0;o<r.length;o++){var a=r[o];"style"===a.targetName&&a.changeTarget(t.style)}}t.setStyle(i)}e&&(e.style=null,e&&t.attr(e),e.style=i)}(t,c,a),function(t,e){mt(e,"silent")&&(t.silent=e.silent),mt(e,"ignore")&&(t.ignore=e.ignore),t instanceof da&&mt(e,"invisible")&&(t.invisible=e.invisible);t instanceof gs&&mt(e,"autoBatch")&&(t.autoBatch=e.autoBatch)}(t,e),s)if(o){var p={};E(OO,(function(t){var n=t?e[t]:e;n&&n.enterFrom&&(t&&(p[t]=p[t]||{}),A(t?p[t]:p,n.enterFrom))}));var d=NO("enter",t,e,n,r);d.duration>0&&t.animateFrom(p,d)}else!function(t,e,n,i,r){if(r){var o=NO("update",t,e,i,n);o.duration>0&&t.animateFrom(r,o)}}(t,e,r||0,n,h);zO(t,e),u?t.dirty():t.markRedraw()}function zO(t,e){for(var n=RO(t).leaveToProps,i=0;i<OO.length;i++){var r=OO[i],o=r?e[r]:e;o&&o.leaveTo&&(n||(n=RO(t).leaveToProps={}),r&&(n[r]=n[r]||{}),A(r?n[r]:n,o.leaveTo))}}function VO(t,e,n,i){if(t){var r=t.parent,o=RO(t).leaveToProps;if(o){var a=NO("update",t,e,n,0);a.done=function(){r.remove(t),i&&i()},t.animateTo(o,a)}else r.remove(t),i&&i()}}function BO(t){return"all"===t}var FO={},GO={setTransform:function(t,e){return FO.el[t]=e,this},getTransform:function(t){return FO.el[t]},setShape:function(t,e){var n=FO.el;return(n.shape||(n.shape={}))[t]=e,n.dirtyShape&&n.dirtyShape(),this},getShape:function(t){var e=FO.el.shape;if(e)return e[t]},setStyle:function(t,e){var n=FO.el,i=n.style;return i&&(i[t]=e,n.dirtyStyle&&n.dirtyStyle()),this},getStyle:function(t){var e=FO.el.style;if(e)return e[t]},setExtra:function(t,e){return(FO.el.extra||(FO.el.extra={}))[t]=e,this},getExtra:function(t){var e=FO.el.extra;if(e)return e[t]}};function WO(){var t=this,e=t.el;if(e){var n=RO(e).userDuring,i=t.userDuring;n===i?(FO.el=e,i(GO)):t.el=t.userDuring=null}}function HO(t,e,n,i){var r=n[t];if(r){var o,a=e[t];if(a){var s=n.transition,l=r.transition;if(l)if(!o&&(o=i[t]={}),BO(l))A(o,a);else for(var u=ho(l),h=0;h<u.length;h++){var c=a[d=u[h]];o[d]=c}else if(BO(s)||P(s,t)>=0){!o&&(o=i[t]={});var p=G(a);for(h=0;h<p.length;h++){var d;c=a[d=p[h]];UO(r[d],c)&&(o[d]=c)}}}}}function YO(t,e,n){var i=e[t];if(i)for(var r=n[t]={},o=G(i),a=0;a<o.length;a++){var s=o[a];r[s]=ti(i[s])}}function UO(t,e){return N(t)?t!==e:null!=t&&isFinite(t)}var XO=So(),ZO=["percent","easing","shape","style","extra"];function jO(t){t.stopAnimation("keyframe"),t.attr(XO(t))}function qO(t,e,n){if(n.isAnimationEnabled()&&e)if(Y(e))E(e,(function(e){qO(t,e,n)}));else{var i=e.keyframes,r=e.duration;if(n&&null==r){var o=nh("enter",n,0);r=o&&o.duration}if(i&&r){var a=XO(t);E(OO,(function(n){if(!n||t[n]){var o;i.sort((function(t,e){return t.percent-e.percent})),E(i,(function(i){var s=t.animators,l=n?i[n]:i;if(l){var u=G(l);if(n||(u=B(u,(function(t){return P(ZO,t)<0}))),u.length){o||((o=t.animate(n,e.loop,!0)).scope="keyframe");for(var h=0;h<s.length;h++)s[h]!==o&&s[h].targetName===o.targetName&&s[h].stopTracks(u);n&&(a[n]=a[n]||{});var c=n?a[n]:a;E(u,(function(e){c[e]=((n?t[n]:t)||{})[e]})),o.whenWithKeys(r*i.percent,l,u,i.easing)}}})),o&&o.delay(e.delay||0).duration(r).start(e.easing)}}))}}}var KO="emphasis",$O="normal",JO="blur",QO="select",tR=[$O,KO,JO,QO],eR={normal:["itemStyle"],emphasis:[KO,"itemStyle"],blur:[JO,"itemStyle"],select:[QO,"itemStyle"]},nR={normal:["label"],emphasis:[KO,"label"],blur:[JO,"label"],select:[QO,"label"]},iR=["x","y"],rR={normal:{},emphasis:{},blur:{},select:{}},oR={cartesian2d:function(t){var e=t.master.getRect();return{coordSys:{type:"cartesian2d",x:e.x,y:e.y,width:e.width,height:e.height},api:{coord:function(e){return t.dataToPoint(e)},size:W(wO,t)}}},geo:function(t){var e=t.getBoundingRect();return{coordSys:{type:"geo",x:e.x,y:e.y,width:e.width,height:e.height,zoom:t.getZoom()},api:{coord:function(e){return t.dataToPoint(e)},size:W(SO,t)}}},singleAxis:function(t){var e=t.getRect();return{coordSys:{type:"singleAxis",x:e.x,y:e.y,width:e.width,height:e.height},api:{coord:function(e){return t.dataToPoint(e)},size:W(MO,t)}}},polar:function(t){var e=t.getRadiusAxis(),n=t.getAngleAxis(),i=e.getExtent();return i[0]>i[1]&&i.reverse(),{coordSys:{type:"polar",cx:t.cx,cy:t.cy,r:i[1],r0:i[0]},api:{coord:function(i){var r=e.dataToRadius(i[0]),o=n.dataToAngle(i[1]),a=t.coordToPoint([r,o]);return a.push(r,o*Math.PI/180),a},size:W(IO,t)}}},calendar:function(t){var e=t.getRect(),n=t.getRangeInfo();return{coordSys:{type:"calendar",x:e.x,y:e.y,width:e.width,height:e.height,cellWidth:t.getCellWidth(),cellHeight:t.getCellHeight(),rangeInfo:{start:n.start,end:n.end,weeks:n.weeks,dayCount:n.allDay}},api:{coord:function(e,n){return t.dataToPoint(e,n)}}}}};function aR(t){return t instanceof gs}function sR(t){return t instanceof da}var lR=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n,i){this._progressiveEls=null;var r=this._data,o=t.getData(),a=this.group,s=dR(t,o,e,n);r||a.removeAll(),o.diff(r).add((function(e){gR(n,null,e,s(e,i),t,a,o)})).remove((function(e){var n=r.getItemGraphicEl(e);VO(n,_O(n).option,t)})).update((function(e,l){var u=r.getItemGraphicEl(l);gR(n,u,e,s(e,i),t,a,o)})).execute();var l=t.get("clip",!0)?sS(t.coordinateSystem,!1,t):null;l?a.setClipPath(l):a.removeClipPath(),this._data=o},e.prototype.incrementalPrepareRender=function(t,e,n){this.group.removeAll(),this._data=null},e.prototype.incrementalRender=function(t,e,n,i,r){var o=e.getData(),a=dR(e,o,n,i),s=this._progressiveEls=[];function l(t){t.isGroup||(t.incremental=!0,t.ensureState("emphasis").hoverLayer=!0)}for(var u=t.start;u<t.end;u++){var h=gR(null,null,u,a(u,r),e,this.group,o);h&&(h.traverse(l),s.push(h))}},e.prototype.eachRendered=function(t){Vh(this._progressiveEls||this.group,t)},e.prototype.filterForExposedEvent=function(t,e,n,i){var r=e.element;if(null==r||n.name===r)return!0;for(;(n=n.__hostTarget||n.parent)&&n!==this.group;)if(n.name===r)return!0;return!1},e.type="custom",e}(xg);function uR(t){var e,n=t.type;if("path"===n){var i=t.shape,r=null!=i.width&&null!=i.height?{x:i.x||0,y:i.y||0,width:i.width,height:i.height}:null,o=MR(i);e=xh(o,null,r,i.layout||"center"),_O(e).customPathData=o}else if("image"===n)e=new _s({}),_O(e).customImagePath=t.style.image;else if("text"===n)e=new ks({});else if("group"===n)e=new Cr;else{if("compoundPath"===n)throw new Error('"compoundPath" is not supported yet.');var a=mh(n);if(!a){var s="";0,ao(s)}e=new a}return _O(e).customGraphicType=n,e.name=t.name,e.z2EmphasisLift=1,e.z2SelectLift=1,e}function hR(t,e,n,i,r,o,a){jO(e);var s=r&&r.normal.cfg;s&&e.setTextConfig(s),i&&null==i.transition&&(i.transition=iR);var l=i&&i.style;if(l){if("text"===e.type){var u=l;mt(u,"textFill")&&(u.fill=u.textFill),mt(u,"textStroke")&&(u.stroke=u.textStroke)}var h=void 0,c=aR(e)?l.decal:null;t&&c&&(c.dirty=!0,h=iv(c,t)),l.__decalPattern=h}sR(e)&&(l&&(h=l.__decalPattern)&&(l.decal=h));EO(e,i,o,{dataIndex:n,isInit:a,clearStyle:!0}),qO(e,i.keyframeAnimation,o)}function cR(t,e,n,i,r){var o=e.isGroup?null:e,a=r&&r[t].cfg;if(o){var s=o.ensureState(t);if(!1===i){var l=o.getState(t);l&&(l.style=null)}else s.style=i||null;a&&(s.textConfig=a),vl(o)}}function pR(t,e,n){var i=n===$O,r=i?e:xR(e,n),o=r?r.z2:null;null!=o&&((i?t:t.ensureState(n)).z2=o||0)}function dR(t,e,n,i){var r=t.get("renderItem"),o=t.coordinateSystem,a={};o&&(a=o.prepareCustoms?o.prepareCustoms(o):oR[o.type](o));for(var s,l,u=k({getWidth:i.getWidth,getHeight:i.getHeight,getZr:i.getZr,getDevicePixelRatio:i.getDevicePixelRatio,value:function(t,n){return null==n&&(n=s),e.getStore().get(e.getDimensionIndex(t||0),n)},style:function(n,i){0;null==i&&(i=s);var r=e.getItemVisual(i,"style"),o=r&&r.fill,a=r&&r.opacity,l=m(i,$O).getItemStyle();null!=o&&(l.fill=o),null!=a&&(l.opacity=a);var u={inheritColor:X(o)?o:"#000"},h=x(i,$O),c=Uh(h,null,u,!1,!0);c.text=h.getShallow("show")?rt(t.getFormattedLabel(i,$O),Gw(e,i)):null;var p=Xh(h,u,!1);return b(n,l),l=AO(l,c,p),n&&_(l,n),l.legacy=!0,l},ordinalRawValue:function(t,n){null==n&&(n=s),t=t||0;var i=e.getDimensionInfo(t);if(!i){var r=e.getDimensionIndex(t);return r>=0?e.getStore().get(r,n):void 0}var o=e.get(i.name,n),a=i&&i.ordinalMeta;return a?a.categories[o]:o},styleEmphasis:function(n,i){0;null==i&&(i=s);var r=m(i,KO).getItemStyle(),o=x(i,KO),a=Uh(o,null,null,!0,!0);a.text=o.getShallow("show")?ot(t.getFormattedLabel(i,KO),t.getFormattedLabel(i,$O),Gw(e,i)):null;var l=Xh(o,null,!0);return b(n,r),r=AO(r,a,l),n&&_(r,n),r.legacy=!0,r},visual:function(t,n){if(null==n&&(n=s),mt(mO,t)){var i=e.getItemVisual(n,"style");return i?i[mO[t]]:null}if(mt(xO,t))return e.getItemVisual(n,t)},barLayout:function(t){if("cartesian2d"===o.type){return function(t){var e=[],n=t.axis,i="axis0";if("category"===n.type){for(var r=n.getBandWidth(),o=0;o<t.count;o++)e.push(k({bandWidth:r,axisKey:i,stackId:Sx+o},t));var a=Dx(e),s=[];for(o=0;o<t.count;o++){var l=a.axis0[Sx+o];l.offsetCenter=l.offset+l.width/2,s.push(l)}return s}}(k({axis:o.getBaseAxis()},t))}},currentSeriesIndices:function(){return n.getCurrentSeriesIndices()},font:function(t){return $h(t,n)}},a.api||{}),h={context:{},seriesId:t.id,seriesName:t.name,seriesIndex:t.seriesIndex,coordSys:a.coordSys,dataInsideLength:e.count(),encode:fR(t.getData())},c={},p={},d={},f={},g=0;g<tR.length;g++){var y=tR[g];d[y]=t.getModel(eR[y]),f[y]=t.getModel(nR[y])}function v(t){return t===s?l||(l=e.getItemModel(t)):e.getItemModel(t)}function m(t,n){return e.hasItemOption?t===s?c[n]||(c[n]=v(t).getModel(eR[n])):v(t).getModel(eR[n]):d[n]}function x(t,n){return e.hasItemOption?t===s?p[n]||(p[n]=v(t).getModel(nR[n])):v(t).getModel(nR[n]):f[n]}return function(t,n){return s=t,l=null,c={},p={},r&&r(k({dataIndexInside:t,dataIndex:e.getRawIndex(t),actionType:n?n.type:null},h),u)};function _(t,e){for(var n in e)mt(e,n)&&(t[n]=e[n])}function b(t,e){t&&(t.textFill&&(e.textFill=t.textFill),t.textPosition&&(e.textPosition=t.textPosition))}}function fR(t){var e={};return E(t.dimensions,(function(n){var i=t.getDimensionInfo(n);if(!i.isExtraCoord){var r=i.coordDim;(e[r]=e[r]||[])[i.coordDimIndex]=t.getDimensionIndex(n)}})),e}function gR(t,e,n,i,r,o,a){if(i){var s=yR(t,e,n,i,r,o);return s&&a.setItemGraphicEl(n,s),s&&Rl(s,i.focus,i.blurScope,i.emphasisDisabled),s}o.remove(e)}function yR(t,e,n,i,r,o){var a=-1,s=e;e&&vR(e,i,r)&&(a=P(o.childrenRef(),e),e=null);var l,u,h=!e,c=e;c?c.clearStates():(c=uR(i),s&&(l=s,(u=c).copyTransform(l),sR(u)&&sR(l)&&(u.setStyle(l.style),u.z=l.z,u.z2=l.z2,u.zlevel=l.zlevel,u.invisible=l.invisible,u.ignore=l.ignore,aR(u)&&aR(l)&&u.setShape(l.shape)))),!1===i.morph?c.disableMorphing=!0:c.disableMorphing&&(c.disableMorphing=!1),rR.normal.cfg=rR.normal.conOpt=rR.emphasis.cfg=rR.emphasis.conOpt=rR.blur.cfg=rR.blur.conOpt=rR.select.cfg=rR.select.conOpt=null,rR.isLegacy=!1,function(t,e,n,i,r,o){if(t.isGroup)return;mR(n,null,o),mR(n,KO,o);var a=o.normal.conOpt,s=o.emphasis.conOpt,l=o.blur.conOpt,u=o.select.conOpt;if(null!=a||null!=s||null!=u||null!=l){var h=t.getTextContent();if(!1===a)h&&t.removeTextContent();else{a=o.normal.conOpt=a||{type:"text"},h?h.clearStates():(h=uR(a),t.setTextContent(h)),hR(null,h,e,a,null,i,r);for(var c=a&&a.style,p=0;p<tR.length;p++){var d=tR[p];if(d!==$O){var f=o[d].conOpt;cR(d,h,0,_R(a,f,d),null)}}c?h.dirty():h.markRedraw()}}}(c,n,i,r,h,rR),function(t,e,n,i,r){var o=n.clipPath;if(!1===o)t&&t.getClipPath()&&t.removeClipPath();else if(o){var a=t.getClipPath();a&&vR(a,o,i)&&(a=null),a||(a=uR(o),t.setClipPath(a)),hR(null,a,e,o,null,i,r)}}(c,n,i,r,h),hR(t,c,n,i,rR,r,h),mt(i,"info")&&(_O(c).info=i.info);for(var p=0;p<tR.length;p++){var d=tR[p];if(d!==$O){var f=xR(i,d);cR(d,c,0,_R(i,f,d),rR)}}return function(t,e,n){if(!t.isGroup){var i=t,r=n.currentZ,o=n.currentZLevel;i.z=r,i.zlevel=o;var a=e.z2;null!=a&&(i.z2=a||0);for(var s=0;s<tR.length;s++)pR(i,e,tR[s])}}(c,i,r),"group"===i.type&&function(t,e,n,i,r){var o=i.children,a=o?o.length:0,s=i.$mergeChildren,l="byName"===s||i.diffChildrenByName,u=!1===s;if(!a&&!l&&!u)return;if(l)return h={api:t,oldChildren:e.children()||[],newChildren:o||[],dataIndex:n,seriesModel:r,group:e},void new Mm(h.oldChildren,h.newChildren,bR,bR,h).add(wR).update(wR).remove(SR).execute();var h;u&&e.removeAll();for(var c=0;c<a;c++)o[c]&&yR(t,e.childAt(c),n,o[c],r,e);for(var p=e.childCount()-1;p>=c;p--){VO(e.childAt(p),_O(e).option,r)}}(t,c,n,i,r),a>=0?o.replaceAt(c,a):o.add(c),c}function vR(t,e,n){var i,r=_O(t),o=e.type,a=e.shape,s=e.style;return n.isUniversalTransitionEnabled()||null!=o&&o!==r.customGraphicType||"path"===o&&((i=a)&&(mt(i,"pathData")||mt(i,"d")))&&MR(a)!==r.customPathData||"image"===o&&mt(s,"image")&&s.image!==r.customImagePath}function mR(t,e,n){var i=e?xR(t,e):t,r=e?_R(t,i,KO):t.style,o=t.type,a=i?i.textConfig:null,s=t.textContent,l=s?e?xR(s,e):s:null;if(r&&(n.isLegacy||TO(r,o,!!a,!!l))){n.isLegacy=!0;var u=CO(r,o,!e);!a&&u.textConfig&&(a=u.textConfig),!l&&u.textContent&&(l=u.textContent)}if(!e&&l){var h=l;!h.type&&(h.type="text")}var c=e?n[e]:n.normal;c.cfg=a,c.conOpt=l}function xR(t,e){return e?t?t[e]:null:t}function _R(t,e,n){var i=e&&e.style;return null==i&&n===KO&&t&&(i=t.styleEmphasis),i}function bR(t,e){var n=t&&t.name;return null!=n?n:"e\0\0"+e}function wR(t,e){var n=this.context,i=null!=t?n.newChildren[t]:null,r=null!=e?n.oldChildren[e]:null;yR(n.api,r,n.dataIndex,i,n.seriesModel,n.group)}function SR(t){var e=this.context,n=e.oldChildren[t];VO(n,_O(n).option,e.seriesModel)}function MR(t){return t&&(t.pathData||t.d)}var IR=So(),TR=T,CR=W,DR=function(){function t(){this._dragging=!1,this.animationThreshold=15}return t.prototype.render=function(t,e,n,i){var r=e.get("value"),o=e.get("status");if(this._axisModel=t,this._axisPointerModel=e,this._api=n,i||this._lastValue!==r||this._lastStatus!==o){this._lastValue=r,this._lastStatus=o;var a=this._group,s=this._handle;if(!o||"hide"===o)return a&&a.hide(),void(s&&s.hide());a&&a.show(),s&&s.show();var l={};this.makeElOption(l,r,t,e,n);var u=l.graphicKey;u!==this._lastGraphicKey&&this.clear(n),this._lastGraphicKey=u;var h=this._moveAnimation=this.determineAnimation(t,e);if(a){var c=H(AR,e,h);this.updatePointerEl(a,l,c),this.updateLabelEl(a,l,c,e)}else a=this._group=new Cr,this.createPointerEl(a,l,t,e),this.createLabelEl(a,l,t,e),n.getZr().add(a);OR(a,e,!0),this._renderHandle(r)}},t.prototype.remove=function(t){this.clear(t)},t.prototype.dispose=function(t){this.clear(t)},t.prototype.determineAnimation=function(t,e){var n=e.get("animation"),i=t.axis,r="category"===i.type,o=e.get("snap");if(!o&&!r)return!1;if("auto"===n||null==n){var a=this.animationThreshold;if(r&&i.getBandWidth()>a)return!0;if(o){var s=qM(t).seriesDataCount,l=i.getExtent();return Math.abs(l[0]-l[1])/s>a}return!1}return!0===n},t.prototype.makeElOption=function(t,e,n,i,r){},t.prototype.createPointerEl=function(t,e,n,i){var r=e.pointer;if(r){var o=IR(t).pointerEl=new Bh[r.type](TR(e.pointer));t.add(o)}},t.prototype.createLabelEl=function(t,e,n,i){if(e.label){var r=IR(t).labelEl=new ks(TR(e.label));t.add(r),LR(r,i)}},t.prototype.updatePointerEl=function(t,e,n){var i=IR(t).pointerEl;i&&e.pointer&&(i.setStyle(e.pointer.style),n(i,{shape:e.pointer.shape}))},t.prototype.updateLabelEl=function(t,e,n,i){var r=IR(t).labelEl;r&&(r.setStyle(e.label.style),n(r,{x:e.label.x,y:e.label.y}),LR(r,i))},t.prototype._renderHandle=function(t){if(!this._dragging&&this.updateHandleTransform){var e,n=this._axisPointerModel,i=this._api.getZr(),r=this._handle,o=n.getModel("handle"),a=n.get("status");if(!o.get("show")||!a||"hide"===a)return r&&i.remove(r),void(this._handle=null);this._handle||(e=!0,r=this._handle=Ph(o.get("icon"),{cursor:"move",draggable:!0,onmousemove:function(t){se(t.event)},onmousedown:CR(this._onHandleDragMove,this,0,0),drift:CR(this._onHandleDragMove,this),ondragend:CR(this._onHandleDragEnd,this)}),i.add(r)),OR(r,n,!1),r.setStyle(o.getItemStyle(null,["color","borderColor","borderWidth","opacity","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY"]));var s=o.get("size");Y(s)||(s=[s,s]),r.scaleX=s[0]/2,r.scaleY=s[1]/2,Ag(this,"_doDispatchAxisPointer",o.get("throttle")||0,"fixRate"),this._moveHandleToValue(t,e)}},t.prototype._moveHandleToValue=function(t,e){AR(this._axisPointerModel,!e&&this._moveAnimation,this._handle,PR(this.getHandleTransform(t,this._axisModel,this._axisPointerModel)))},t.prototype._onHandleDragMove=function(t,e){var n=this._handle;if(n){this._dragging=!0;var i=this.updateHandleTransform(PR(n),[t,e],this._axisModel,this._axisPointerModel);this._payloadInfo=i,n.stopAnimation(),n.attr(PR(i)),IR(n).lastProp=null,this._doDispatchAxisPointer()}},t.prototype._doDispatchAxisPointer=function(){if(this._handle){var t=this._payloadInfo,e=this._axisModel;this._api.dispatchAction({type:"updateAxisPointer",x:t.cursorPoint[0],y:t.cursorPoint[1],tooltipOption:t.tooltipOption,axesInfo:[{axisDim:e.axis.dim,axisIndex:e.componentIndex}]})}},t.prototype._onHandleDragEnd=function(){if(this._dragging=!1,this._handle){var t=this._axisPointerModel.get("value");this._moveHandleToValue(t),this._api.dispatchAction({type:"hideTip"})}},t.prototype.clear=function(t){this._lastValue=null,this._lastStatus=null;var e=t.getZr(),n=this._group,i=this._handle;e&&n&&(this._lastGraphicKey=null,n&&e.remove(n),i&&e.remove(i),this._group=null,this._handle=null,this._payloadInfo=null),kg(this,"_doDispatchAxisPointer")},t.prototype.doClear=function(){},t.prototype.buildLabel=function(t,e,n){return{x:t[n=n||0],y:t[1-n],width:e[n],height:e[1-n]}},t}();function AR(t,e,n,i){kR(IR(n).lastProp,i)||(IR(n).lastProp=i,e?rh(n,i,t):(n.stopAnimation(),n.attr(i)))}function kR(t,e){if(q(t)&&q(e)){var n=!0;return E(e,(function(e,i){n=n&&kR(t[i],e)})),!!n}return t===e}function LR(t,e){t[e.get(["label","show"])?"show":"hide"]()}function PR(t){return{x:t.x||0,y:t.y||0,rotation:t.rotation||0}}function OR(t,e,n){var i=e.get("z"),r=e.get("zlevel");t&&t.traverse((function(t){"group"!==t.type&&(null!=i&&(t.z=i),null!=r&&(t.zlevel=r),t.silent=n)}))}function RR(t){var e,n=t.get("type"),i=t.getModel(n+"Style");return"line"===n?(e=i.getLineStyle()).fill=null:"shadow"===n&&((e=i.getAreaStyle()).stroke=null),e}function NR(t,e,n,i,r){var o=ER(n.get("value"),e.axis,e.ecModel,n.get("seriesDataIndices"),{precision:n.get(["label","precision"]),formatter:n.get(["label","formatter"])}),a=n.getModel("label"),s=ip(a.get("padding")||0),l=a.getFont(),u=cr(o,l),h=r.position,c=u.width+s[1]+s[3],p=u.height+s[0]+s[2],d=r.align;"right"===d&&(h[0]-=c),"center"===d&&(h[0]-=c/2);var f=r.verticalAlign;"bottom"===f&&(h[1]-=p),"middle"===f&&(h[1]-=p/2),function(t,e,n,i){var r=i.getWidth(),o=i.getHeight();t[0]=Math.min(t[0]+e,r)-e,t[1]=Math.min(t[1]+n,o)-n,t[0]=Math.max(t[0],0),t[1]=Math.max(t[1],0)}(h,c,p,i);var g=a.get("backgroundColor");g&&"auto"!==g||(g=e.get(["axisLine","lineStyle","color"])),t.label={x:h[0],y:h[1],style:Uh(a,{text:o,font:l,fill:a.getTextColor(),padding:s,backgroundColor:g}),z2:10}}function ER(t,e,n,i,r){t=e.scale.parse(t);var o=e.scale.getLabel({value:t},{precision:r.precision}),a=r.formatter;if(a){var s={value:a_(e,{value:t}),axisDimension:e.dim,axisIndex:e.index,seriesData:[]};E(i,(function(t){var e=n.getSeriesByIndex(t.seriesIndex),i=t.dataIndexInside,r=e&&e.getDataParams(i);r&&s.seriesData.push(r)})),X(a)?o=a.replace("{value}",o):U(a)&&(o=a(s))}return o}function zR(t,e,n){var i=[1,0,0,1,0,0];return zi(i,i,n.rotation),Ei(i,i,n.position),Th([t.dataToCoord(e),(n.labelOffset||0)+(n.labelDirection||1)*(n.labelMargin||0)],i)}function VR(t,e,n,i,r,o){var a=FM.innerTextLayout(n.rotation,0,n.labelDirection);n.labelMargin=r.get(["label","margin"]),NR(e,i,r,o,{position:zR(i.axis,t,n),align:a.textAlign,verticalAlign:a.textVerticalAlign})}function BR(t,e,n){return{x1:t[n=n||0],y1:t[1-n],x2:e[n],y2:e[1-n]}}function FR(t,e,n){return{x:t[n=n||0],y:t[1-n],width:e[n],height:e[1-n]}}function GR(t,e,n,i,r,o){return{cx:t,cy:e,r0:n,r:i,startAngle:r,endAngle:o,clockwise:!0}}var WR=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.makeElOption=function(t,e,n,i,r){var o=n.axis,a=o.grid,s=i.get("type"),l=HR(a,o).getOtherAxis(o).getGlobalExtent(),u=o.toGlobalCoord(o.dataToCoord(e,!0));if(s&&"none"!==s){var h=RR(i),c=YR[s](o,u,l);c.style=h,t.graphicKey=c.type,t.pointer=c}VR(e,t,kM(a.model,n),n,i,r)},e.prototype.getHandleTransform=function(t,e,n){var i=kM(e.axis.grid.model,e,{labelInside:!1});i.labelMargin=n.get(["handle","margin"]);var r=zR(e.axis,t,i);return{x:r[0],y:r[1],rotation:i.rotation+(i.labelDirection<0?Math.PI:0)}},e.prototype.updateHandleTransform=function(t,e,n,i){var r=n.axis,o=r.grid,a=r.getGlobalExtent(!0),s=HR(o,r).getOtherAxis(r).getGlobalExtent(),l="x"===r.dim?0:1,u=[t.x,t.y];u[l]+=e[l],u[l]=Math.min(a[1],u[l]),u[l]=Math.max(a[0],u[l]);var h=(s[1]+s[0])/2,c=[h,h];c[l]=u[l];return{x:u[0],y:u[1],rotation:t.rotation,cursorPoint:c,tooltipOption:[{verticalAlign:"middle"},{align:"center"}][l]}},e}(DR);function HR(t,e){var n={};return n[e.dim+"AxisIndex"]=e.index,t.getCartesian(n)}var YR={line:function(t,e,n){return{type:"Line",subPixelOptimize:!0,shape:BR([e,n[0]],[e,n[1]],UR(t))}},shadow:function(t,e,n){var i=Math.max(1,t.getBandWidth()),r=n[1]-n[0];return{type:"Rect",shape:FR([e-i/2,n[0]],[i,r],UR(t))}}};function UR(t){return"x"===t.dim?0:1}var XR=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="axisPointer",e.defaultOption={show:"auto",z:50,type:"line",snap:!1,triggerTooltip:!0,value:null,status:null,link:[],animation:null,animationDurationUpdate:200,lineStyle:{color:"#B9BEC9",width:1,type:"dashed"},shadowStyle:{color:"rgba(210,219,238,0.2)"},label:{show:!0,formatter:null,precision:"auto",margin:3,color:"#fff",padding:[5,7,5,7],backgroundColor:"auto",borderColor:null,borderWidth:0,borderRadius:3},handle:{show:!1,icon:"M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4h1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7v-1.2h6.6z M13.3,22H6.7v-1.2h6.6z M13.3,19.6H6.7v-1.2h6.6z",size:45,margin:50,color:"#333",shadowBlur:3,shadowColor:"#aaa",shadowOffsetX:0,shadowOffsetY:2,throttle:40}},e}(Tp),ZR=So(),jR=E;function qR(t,e,n){if(!r.node){var i=e.getZr();ZR(i).records||(ZR(i).records={}),function(t,e){if(ZR(t).initialized)return;function n(n,i){t.on(n,(function(n){var r=function(t){var e={showTip:[],hideTip:[]},n=function(i){var r=e[i.type];r?r.push(i):(i.dispatchAction=n,t.dispatchAction(i))};return{dispatchAction:n,pendings:e}}(e);jR(ZR(t).records,(function(t){t&&i(t,n,r.dispatchAction)})),function(t,e){var n,i=t.showTip.length,r=t.hideTip.length;i?n=t.showTip[i-1]:r&&(n=t.hideTip[r-1]);n&&(n.dispatchAction=null,e.dispatchAction(n))}(r.pendings,e)}))}ZR(t).initialized=!0,n("click",H($R,"click")),n("mousemove",H($R,"mousemove")),n("globalout",KR)}(i,e),(ZR(i).records[t]||(ZR(i).records[t]={})).handler=n}}function KR(t,e,n){t.handler("leave",null,n)}function $R(t,e,n,i){e.handler(t,n,i)}function JR(t,e){if(!r.node){var n=e.getZr();(ZR(n).records||{})[t]&&(ZR(n).records[t]=null)}}var QR=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){var i=e.getComponent("tooltip"),r=t.get("triggerOn")||i&&i.get("triggerOn")||"mousemove|click";qR("axisPointer",n,(function(t,e,n){"none"!==r&&("leave"===t||r.indexOf(t)>=0)&&n({type:"updateAxisPointer",currTrigger:t,x:e&&e.offsetX,y:e&&e.offsetY})}))},e.prototype.remove=function(t,e){JR("axisPointer",e)},e.prototype.dispose=function(t,e){JR("axisPointer",e)},e.type="axisPointer",e}(gg);function tN(t,e){var n,i=[],r=t.seriesIndex;if(null==r||!(n=e.getSeriesByIndex(r)))return{point:[]};var o=n.getData(),a=wo(o,t);if(null==a||a<0||Y(a))return{point:[]};var s=o.getItemGraphicEl(a),l=n.coordinateSystem;if(n.getTooltipPosition)i=n.getTooltipPosition(a)||[];else if(l&&l.dataToPoint)if(t.isStacked){var u=l.getBaseAxis(),h=l.getOtherAxis(u).dim,c=u.dim,p="x"===h||"radius"===h?1:0,d=o.mapDimension(c),f=[];f[p]=o.get(d,a),f[1-p]=o.get(o.getCalculationInfo("stackResultDimension"),a),i=l.dataToPoint(f)||[]}else i=l.dataToPoint(o.getValues(z(l.dimensions,(function(t){return o.mapDimension(t)})),a))||[];else if(s){var g=s.getBoundingRect().clone();g.applyTransform(s.transform),i=[g.x+g.width/2,g.y+g.height/2]}return{point:i,el:s}}var eN=So();function nN(t,e,n){var i=t.currTrigger,r=[t.x,t.y],o=t,a=t.dispatchAction||W(n.dispatchAction,n),s=e.getComponent("axisPointer").coordSysAxesInfo;if(s){sN(r)&&(r=tN({seriesIndex:o.seriesIndex,dataIndex:o.dataIndex},e).point);var l=sN(r),u=o.axesInfo,h=s.axesInfo,c="leave"===i||sN(r),p={},d={},f={list:[],map:{}},g={showPointer:H(rN,d),showTooltip:H(oN,f)};E(s.coordSysMap,(function(t,e){var n=l||t.containPoint(r);E(s.coordSysAxesInfo[e],(function(t,e){var i=t.axis,o=function(t,e){for(var n=0;n<(t||[]).length;n++){var i=t[n];if(e.axis.dim===i.axisDim&&e.axis.model.componentIndex===i.axisIndex)return i}}(u,t);if(!c&&n&&(!u||o)){var a=o&&o.value;null!=a||l||(a=i.pointToData(r)),null!=a&&iN(t,a,g,!1,p)}}))}));var y={};return E(h,(function(t,e){var n=t.linkGroup;n&&!d[e]&&E(n.axesInfo,(function(e,i){var r=d[i];if(e!==t&&r){var o=r.value;n.mapper&&(o=t.axis.scale.parse(n.mapper(o,aN(e),aN(t)))),y[t.key]=o}}))})),E(y,(function(t,e){iN(h[e],t,g,!0,p)})),function(t,e,n){var i=n.axesInfo=[];E(e,(function(e,n){var r=e.axisPointerModel.option,o=t[n];o?(!e.useHandle&&(r.status="show"),r.value=o.value,r.seriesDataIndices=(o.payloadBatch||[]).slice()):!e.useHandle&&(r.status="hide"),"show"===r.status&&i.push({axisDim:e.axis.dim,axisIndex:e.axis.model.componentIndex,value:r.value})}))}(d,h,p),function(t,e,n,i){if(sN(e)||!t.list.length)return void i({type:"hideTip"});var r=((t.list[0].dataByAxis[0]||{}).seriesDataIndices||[])[0]||{};i({type:"showTip",escapeConnect:!0,x:e[0],y:e[1],tooltipOption:n.tooltipOption,position:n.position,dataIndexInside:r.dataIndexInside,dataIndex:r.dataIndex,seriesIndex:r.seriesIndex,dataByCoordSys:t.list})}(f,r,t,a),function(t,e,n){var i=n.getZr(),r="axisPointerLastHighlights",o=eN(i)[r]||{},a=eN(i)[r]={};E(t,(function(t,e){var n=t.axisPointerModel.option;"show"===n.status&&E(n.seriesDataIndices,(function(t){var e=t.seriesIndex+" | "+t.dataIndex;a[e]=t}))}));var s=[],l=[];E(o,(function(t,e){!a[e]&&l.push(t)})),E(a,(function(t,e){!o[e]&&s.push(t)})),l.length&&n.dispatchAction({type:"downplay",escapeConnect:!0,notBlur:!0,batch:l}),s.length&&n.dispatchAction({type:"highlight",escapeConnect:!0,notBlur:!0,batch:s})}(h,0,n),p}}function iN(t,e,n,i,r){var o=t.axis;if(!o.scale.isBlank()&&o.containData(e))if(t.involveSeries){var a=function(t,e){var n=e.axis,i=n.dim,r=t,o=[],a=Number.MAX_VALUE,s=-1;return E(e.seriesModels,(function(e,l){var u,h,c=e.getData().mapDimensionsAll(i);if(e.getAxisTooltipData){var p=e.getAxisTooltipData(c,t,n);h=p.dataIndices,u=p.nestestValue}else{if(!(h=e.getData().indicesOfNearest(c[0],t,"category"===n.type?.5:null)).length)return;u=e.getData().get(c[0],h[0])}if(null!=u&&isFinite(u)){var d=t-u,f=Math.abs(d);f<=a&&((f<a||d>=0&&s<0)&&(a=f,s=d,r=u,o.length=0),E(h,(function(t){o.push({seriesIndex:e.seriesIndex,dataIndexInside:t,dataIndex:e.getData().getRawIndex(t)})})))}})),{payloadBatch:o,snapToValue:r}}(e,t),s=a.payloadBatch,l=a.snapToValue;s[0]&&null==r.seriesIndex&&A(r,s[0]),!i&&t.snap&&o.containData(l)&&null!=l&&(e=l),n.showPointer(t,e,s),n.showTooltip(t,a,l)}else n.showPointer(t,e)}function rN(t,e,n,i){t[e.key]={value:n,payloadBatch:i}}function oN(t,e,n,i){var r=n.payloadBatch,o=e.axis,a=o.model,s=e.axisPointerModel;if(e.triggerTooltip&&r.length){var l=e.coordSys.model,u=$M(l),h=t.map[u];h||(h=t.map[u]={coordSysId:l.id,coordSysIndex:l.componentIndex,coordSysType:l.type,coordSysMainType:l.mainType,dataByAxis:[]},t.list.push(h)),h.dataByAxis.push({axisDim:o.dim,axisIndex:a.componentIndex,axisType:a.type,axisId:a.id,value:i,valueLabelOpt:{precision:s.get(["label","precision"]),formatter:s.get(["label","formatter"])},seriesDataIndices:r.slice()})}}function aN(t){var e=t.axis.model,n={},i=n.axisDim=t.axis.dim;return n.axisIndex=n[i+"AxisIndex"]=e.componentIndex,n.axisName=n[i+"AxisName"]=e.name,n.axisId=n[i+"AxisId"]=e.id,n}function sN(t){return!t||null==t[0]||isNaN(t[0])||null==t[1]||isNaN(t[1])}function lN(t){QM.registerAxisPointerClass("CartesianAxisPointer",WR),t.registerComponentModel(XR),t.registerComponentView(QR),t.registerPreprocessor((function(t){if(t){(!t.axisPointer||0===t.axisPointer.length)&&(t.axisPointer={});var e=t.axisPointer.link;e&&!Y(e)&&(t.axisPointer.link=[e])}})),t.registerProcessor(t.PRIORITY.PROCESSOR.STATISTIC,(function(t,e){t.getComponent("axisPointer").coordSysAxesInfo=XM(t,e)})),t.registerAction({type:"updateAxisPointer",event:"updateAxisPointer",update:":updateAxisPointer"},nN)}var uN=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.makeElOption=function(t,e,n,i,r){var o=n.axis;"angle"===o.dim&&(this.animationThreshold=Math.PI/18);var a=o.polar,s=a.getOtherAxis(o).getExtent(),l=o.dataToCoord(e),u=i.get("type");if(u&&"none"!==u){var h=RR(i),c=hN[u](o,a,l,s);c.style=h,t.graphicKey=c.type,t.pointer=c}var p=function(t,e,n,i,r){var o=e.axis,a=o.dataToCoord(t),s=i.getAngleAxis().getExtent()[0];s=s/180*Math.PI;var l,u,h,c=i.getRadiusAxis().getExtent();if("radius"===o.dim){var p=[1,0,0,1,0,0];zi(p,p,s),Ei(p,p,[i.cx,i.cy]),l=Th([a,-r],p);var d=e.getModel("axisLabel").get("rotate")||0,f=FM.innerTextLayout(s,d*Math.PI/180,-1);u=f.textAlign,h=f.textVerticalAlign}else{var g=c[1];l=i.coordToPoint([g+r,a]);var y=i.cx,v=i.cy;u=Math.abs(l[0]-y)/g<.3?"center":l[0]>y?"left":"right",h=Math.abs(l[1]-v)/g<.3?"middle":l[1]>v?"top":"bottom"}return{position:l,align:u,verticalAlign:h}}(e,n,0,a,i.get(["label","margin"]));NR(t,n,i,r,p)},e}(DR);var hN={line:function(t,e,n,i){return"angle"===t.dim?{type:"Line",shape:BR(e.coordToPoint([i[0],n]),e.coordToPoint([i[1],n]))}:{type:"Circle",shape:{cx:e.cx,cy:e.cy,r:n}}},shadow:function(t,e,n,i){var r=Math.max(1,t.getBandWidth()),o=Math.PI/180;return"angle"===t.dim?{type:"Sector",shape:GR(e.cx,e.cy,i[0],i[1],(-n-r/2)*o,(r/2-n)*o)}:{type:"Sector",shape:GR(e.cx,e.cy,n-r/2,n+r/2,0,2*Math.PI)}}},cN=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.findAxisModel=function(t){var e;return this.ecModel.eachComponent(t,(function(t){t.getCoordSysModel()===this&&(e=t)}),this),e},e.type="polar",e.dependencies=["radiusAxis","angleAxis"],e.defaultOption={z:0,center:["50%","50%"],radius:"80%"},e}(Tp),pN=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.getCoordSysModel=function(){return this.getReferringComponents("polar",Co).models[0]},e.type="polarAxis",e}(Tp);R(pN,c_);var dN=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="angleAxis",e}(pN),fN=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="radiusAxis",e}(pN),gN=function(t){function e(e,n){return t.call(this,"radius",e,n)||this}return n(e,t),e.prototype.pointToData=function(t,e){return this.polar.pointToData(t,e)["radius"===this.dim?0:1]},e}(W_);gN.prototype.dataToRadius=W_.prototype.dataToCoord,gN.prototype.radiusToData=W_.prototype.coordToData;var yN=So(),vN=function(t){function e(e,n){return t.call(this,"angle",e,n||[0,360])||this}return n(e,t),e.prototype.pointToData=function(t,e){return this.polar.pointToData(t,e)["radius"===this.dim?0:1]},e.prototype.calculateCategoryInterval=function(){var t=this,e=t.getLabelModel(),n=t.scale,i=n.getExtent(),r=n.count();if(i[1]-i[0]<1)return 0;var o=i[0],a=t.dataToCoord(o+1)-t.dataToCoord(o),s=Math.abs(a),l=cr(null==o?"":o+"",e.getFont(),"center","top"),u=Math.max(l.height,7)/s;isNaN(u)&&(u=1/0);var h=Math.max(0,Math.floor(u)),c=yN(t.model),p=c.lastAutoInterval,d=c.lastTickCount;return null!=p&&null!=d&&Math.abs(p-h)<=1&&Math.abs(d-r)<=1&&p>h?h=p:(c.lastTickCount=r,c.lastAutoInterval=h),h},e}(W_);vN.prototype.dataToAngle=W_.prototype.dataToCoord,vN.prototype.angleToData=W_.prototype.coordToData;var mN=["radius","angle"],xN=function(){function t(t){this.dimensions=mN,this.type="polar",this.cx=0,this.cy=0,this._radiusAxis=new gN,this._angleAxis=new vN,this.axisPointerEnabled=!0,this.name=t||"",this._radiusAxis.polar=this._angleAxis.polar=this}return t.prototype.containPoint=function(t){var e=this.pointToCoord(t);return this._radiusAxis.contain(e[0])&&this._angleAxis.contain(e[1])},t.prototype.containData=function(t){return this._radiusAxis.containData(t[0])&&this._angleAxis.containData(t[1])},t.prototype.getAxis=function(t){return this["_"+t+"Axis"]},t.prototype.getAxes=function(){return[this._radiusAxis,this._angleAxis]},t.prototype.getAxesByScale=function(t){var e=[],n=this._angleAxis,i=this._radiusAxis;return n.scale.type===t&&e.push(n),i.scale.type===t&&e.push(i),e},t.prototype.getAngleAxis=function(){return this._angleAxis},t.prototype.getRadiusAxis=function(){return this._radiusAxis},t.prototype.getOtherAxis=function(t){var e=this._angleAxis;return t===e?this._radiusAxis:e},t.prototype.getBaseAxis=function(){return this.getAxesByScale("ordinal")[0]||this.getAxesByScale("time")[0]||this.getAngleAxis()},t.prototype.getTooltipAxes=function(t){var e=null!=t&&"auto"!==t?this.getAxis(t):this.getBaseAxis();return{baseAxes:[e],otherAxes:[this.getOtherAxis(e)]}},t.prototype.dataToPoint=function(t,e){return this.coordToPoint([this._radiusAxis.dataToRadius(t[0],e),this._angleAxis.dataToAngle(t[1],e)])},t.prototype.pointToData=function(t,e){var n=this.pointToCoord(t);return[this._radiusAxis.radiusToData(n[0],e),this._angleAxis.angleToData(n[1],e)]},t.prototype.pointToCoord=function(t){var e=t[0]-this.cx,n=t[1]-this.cy,i=this.getAngleAxis(),r=i.getExtent(),o=Math.min(r[0],r[1]),a=Math.max(r[0],r[1]);i.inverse?o=a-360:a=o+360;var s=Math.sqrt(e*e+n*n);e/=s,n/=s;for(var l=Math.atan2(-n,e)/Math.PI*180,u=l<o?1:-1;l<o||l>a;)l+=360*u;return[s,l]},t.prototype.coordToPoint=function(t){var e=t[0],n=t[1]/180*Math.PI;return[Math.cos(n)*e+this.cx,-Math.sin(n)*e+this.cy]},t.prototype.getArea=function(){var t=this.getAngleAxis(),e=this.getRadiusAxis().getExtent().slice();e[0]>e[1]&&e.reverse();var n=t.getExtent(),i=Math.PI/180;return{cx:this.cx,cy:this.cy,r0:e[0],r:e[1],startAngle:-n[0]*i,endAngle:-n[1]*i,clockwise:t.inverse,contain:function(t,e){var n=t-this.cx,i=e-this.cy,r=n*n+i*i-1e-4,o=this.r,a=this.r0;return r<=o*o&&r>=a*a}}},t.prototype.convertToPixel=function(t,e,n){return _N(e)===this?this.dataToPoint(n):null},t.prototype.convertFromPixel=function(t,e,n){return _N(e)===this?this.pointToData(n):null},t}();function _N(t){var e=t.seriesModel,n=t.polarModel;return n&&n.coordinateSystem||e&&e.coordinateSystem}function bN(t,e){var n=this,i=n.getAngleAxis(),r=n.getRadiusAxis();if(i.scale.setExtent(1/0,-1/0),r.scale.setExtent(1/0,-1/0),t.eachSeries((function(t){if(t.coordinateSystem===n){var e=t.getData();E(h_(e,"radius"),(function(t){r.scale.unionExtentFromData(e,t)})),E(h_(e,"angle"),(function(t){i.scale.unionExtentFromData(e,t)}))}})),i_(i.scale,i.model),i_(r.scale,r.model),"category"===i.type&&!i.onBand){var o=i.getExtent(),a=360/i.scale.count();i.inverse?o[1]+=a:o[1]-=a,i.setExtent(o[0],o[1])}}function wN(t,e){if(t.type=e.get("type"),t.scale=r_(e),t.onBand=e.get("boundaryGap")&&"category"===t.type,t.inverse=e.get("inverse"),function(t){return"angleAxis"===t.mainType}(e)){t.inverse=t.inverse!==e.get("clockwise");var n=e.get("startAngle");t.setExtent(n,n+(t.inverse?-360:360))}e.axis=t,t.model=e}var SN={dimensions:mN,create:function(t,e){var n=[];return t.eachComponent("polar",(function(t,i){var r=new xN(i+"");r.update=bN;var o=r.getRadiusAxis(),a=r.getAngleAxis(),s=t.findAxisModel("radiusAxis"),l=t.findAxisModel("angleAxis");wN(o,s),wN(a,l),function(t,e,n){var i=e.get("center"),r=n.getWidth(),o=n.getHeight();t.cx=Er(i[0],r),t.cy=Er(i[1],o);var a=t.getRadiusAxis(),s=Math.min(r,o)/2,l=e.get("radius");null==l?l=[0,"100%"]:Y(l)||(l=[0,l]);var u=[Er(l[0],s),Er(l[1],s)];a.inverse?a.setExtent(u[1],u[0]):a.setExtent(u[0],u[1])}(r,t,e),n.push(r),t.coordinateSystem=r,r.model=t})),t.eachSeries((function(t){if("polar"===t.get("coordinateSystem")){var e=t.getReferringComponents("polar",Co).models[0];0,t.coordinateSystem=e.coordinateSystem}})),n}},MN=["axisLine","axisLabel","axisTick","minorTick","splitLine","minorSplitLine","splitArea"];function IN(t,e,n){e[1]>e[0]&&(e=e.slice().reverse());var i=t.coordToPoint([e[0],n]),r=t.coordToPoint([e[1],n]);return{x1:i[0],y1:i[1],x2:r[0],y2:r[1]}}function TN(t){return t.getRadiusAxis().inverse?0:1}function CN(t){var e=t[0],n=t[t.length-1];e&&n&&Math.abs(Math.abs(e.coord-n.coord)-360)<1e-4&&t.pop()}var DN=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.axisPointerClass="PolarAxisPointer",n}return n(e,t),e.prototype.render=function(t,e){if(this.group.removeAll(),t.get("show")){var n=t.axis,i=n.polar,r=i.getRadiusAxis().getExtent(),o=n.getTicksCoords(),a=n.getMinorTicksCoords(),s=z(n.getViewLabels(),(function(t){t=T(t);var e=n.scale,i="ordinal"===e.type?e.getRawOrdinalNumber(t.tickValue):t.tickValue;return t.coord=n.dataToCoord(i),t}));CN(s),CN(o),E(MN,(function(e){!t.get([e,"show"])||n.scale.isBlank()&&"axisLine"!==e||AN[e](this.group,t,i,o,a,r,s)}),this)}},e.type="angleAxis",e}(QM),AN={axisLine:function(t,e,n,i,r,o){var a,s=e.getModel(["axisLine","lineStyle"]),l=TN(n),u=l?0:1;(a=0===o[u]?new hu({shape:{cx:n.cx,cy:n.cy,r:o[l]},style:s.getLineStyle(),z2:1,silent:!0}):new Au({shape:{cx:n.cx,cy:n.cy,r:o[l],r0:o[u]},style:s.getLineStyle(),z2:1,silent:!0})).style.fill=null,t.add(a)},axisTick:function(t,e,n,i,r,o){var a=e.getModel("axisTick"),s=(a.get("inside")?-1:1)*a.get("length"),l=o[TN(n)],u=z(i,(function(t){return new zu({shape:IN(n,[l,l+s],t.coord)})}));t.add(wh(u,{style:k(a.getModel("lineStyle").getLineStyle(),{stroke:e.get(["axisLine","lineStyle","color"])})}))},minorTick:function(t,e,n,i,r,o){if(r.length){for(var a=e.getModel("axisTick"),s=e.getModel("minorTick"),l=(a.get("inside")?-1:1)*s.get("length"),u=o[TN(n)],h=[],c=0;c<r.length;c++)for(var p=0;p<r[c].length;p++)h.push(new zu({shape:IN(n,[u,u+l],r[c][p].coord)}));t.add(wh(h,{style:k(s.getModel("lineStyle").getLineStyle(),k(a.getLineStyle(),{stroke:e.get(["axisLine","lineStyle","color"])}))}))}},axisLabel:function(t,e,n,i,r,o,a){var s=e.getCategories(!0),l=e.getModel("axisLabel"),u=l.get("margin"),h=e.get("triggerEvent");E(a,(function(i,r){var a=l,c=i.tickValue,p=o[TN(n)],d=n.coordToPoint([p+u,i.coord]),f=n.cx,g=n.cy,y=Math.abs(d[0]-f)/p<.3?"center":d[0]>f?"left":"right",v=Math.abs(d[1]-g)/p<.3?"middle":d[1]>g?"top":"bottom";if(s&&s[c]){var m=s[c];q(m)&&m.textStyle&&(a=new dc(m.textStyle,l,l.ecModel))}var x=new ks({silent:FM.isLabelSilent(e),style:Uh(a,{x:d[0],y:d[1],fill:a.getTextColor()||e.get(["axisLine","lineStyle","color"]),text:i.formattedLabel,align:y,verticalAlign:v})});if(t.add(x),h){var _=FM.makeAxisEventDataBase(e);_.targetType="axisLabel",_.value=i.rawLabel,Hs(x).eventData=_}}),this)},splitLine:function(t,e,n,i,r,o){var a=e.getModel("splitLine").getModel("lineStyle"),s=a.get("color"),l=0;s=s instanceof Array?s:[s];for(var u=[],h=0;h<i.length;h++){var c=l++%s.length;u[c]=u[c]||[],u[c].push(new zu({shape:IN(n,o,i[h].coord)}))}for(h=0;h<u.length;h++)t.add(wh(u[h],{style:k({stroke:s[h%s.length]},a.getLineStyle()),silent:!0,z:e.get("z")}))},minorSplitLine:function(t,e,n,i,r,o){if(r.length){for(var a=e.getModel("minorSplitLine").getModel("lineStyle"),s=[],l=0;l<r.length;l++)for(var u=0;u<r[l].length;u++)s.push(new zu({shape:IN(n,o,r[l][u].coord)}));t.add(wh(s,{style:a.getLineStyle(),silent:!0,z:e.get("z")}))}},splitArea:function(t,e,n,i,r,o){if(i.length){var a=e.getModel("splitArea").getModel("areaStyle"),s=a.get("color"),l=0;s=s instanceof Array?s:[s];for(var u=[],h=Math.PI/180,c=-i[0].coord*h,p=Math.min(o[0],o[1]),d=Math.max(o[0],o[1]),f=e.get("clockwise"),g=1,y=i.length;g<=y;g++){var v=g===y?i[0].coord:i[g].coord,m=l++%s.length;u[m]=u[m]||[],u[m].push(new Cu({shape:{cx:n.cx,cy:n.cy,r0:p,r:d,startAngle:c,endAngle:-v*h,clockwise:f},silent:!0})),c=-v*h}for(g=0;g<u.length;g++)t.add(wh(u[g],{style:k({fill:s[g%s.length]},a.getAreaStyle()),silent:!0}))}}},kN=["axisLine","axisTickLabel","axisName"],LN=["splitLine","splitArea","minorSplitLine"],PN=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.axisPointerClass="PolarAxisPointer",n}return n(e,t),e.prototype.render=function(t,e){if(this.group.removeAll(),t.get("show")){var n=this._axisGroup,i=this._axisGroup=new Cr;this.group.add(i);var r=t.axis,o=r.polar,a=o.getAngleAxis(),s=r.getTicksCoords(),l=r.getMinorTicksCoords(),u=a.getExtent()[0],h=r.getExtent(),c=function(t,e,n){return{position:[t.cx,t.cy],rotation:n/180*Math.PI,labelDirection:-1,tickDirection:-1,nameDirection:1,labelRotate:e.getModel("axisLabel").get("rotate"),z2:1}}(o,t,u),p=new FM(t,c);E(kN,p.add,p),i.add(p.getGroup()),Ah(n,i,t),E(LN,(function(e){t.get([e,"show"])&&!r.scale.isBlank()&&ON[e](this.group,t,o,u,h,s,l)}),this)}},e.type="radiusAxis",e}(QM),ON={splitLine:function(t,e,n,i,r,o){var a=e.getModel("splitLine").getModel("lineStyle"),s=a.get("color"),l=0;s=s instanceof Array?s:[s];for(var u=[],h=0;h<o.length;h++){var c=l++%s.length;u[c]=u[c]||[],u[c].push(new hu({shape:{cx:n.cx,cy:n.cy,r:Math.max(o[h].coord,0)}}))}for(h=0;h<u.length;h++)t.add(wh(u[h],{style:k({stroke:s[h%s.length],fill:null},a.getLineStyle()),silent:!0}))},minorSplitLine:function(t,e,n,i,r,o,a){if(a.length){for(var s=e.getModel("minorSplitLine").getModel("lineStyle"),l=[],u=0;u<a.length;u++)for(var h=0;h<a[u].length;h++)l.push(new hu({shape:{cx:n.cx,cy:n.cy,r:a[u][h].coord}}));t.add(wh(l,{style:k({fill:null},s.getLineStyle()),silent:!0}))}},splitArea:function(t,e,n,i,r,o){if(o.length){var a=e.getModel("splitArea").getModel("areaStyle"),s=a.get("color"),l=0;s=s instanceof Array?s:[s];for(var u=[],h=o[0].coord,c=1;c<o.length;c++){var p=l++%s.length;u[p]=u[p]||[],u[p].push(new Cu({shape:{cx:n.cx,cy:n.cy,r0:h,r:o[c].coord,startAngle:0,endAngle:2*Math.PI},silent:!0})),h=o[c].coord}for(c=0;c<u.length;c++)t.add(wh(u[c],{style:k({fill:s[c%s.length]},a.getAreaStyle()),silent:!0}))}}};function RN(t){return t.get("stack")||"__ec_stack_"+t.seriesIndex}function NN(t,e){return e.dim+t.model.componentIndex}function EN(t,e,n){var i={},r=function(t){var e={};E(t,(function(t,n){var i=t.getData(),r=t.coordinateSystem,o=r.getBaseAxis(),a=NN(r,o),s=o.getExtent(),l="category"===o.type?o.getBandWidth():Math.abs(s[1]-s[0])/i.count(),u=e[a]||{bandWidth:l,remainedWidth:l,autoWidthCount:0,categoryGap:"20%",gap:"30%",stacks:{}},h=u.stacks;e[a]=u;var c=RN(t);h[c]||u.autoWidthCount++,h[c]=h[c]||{width:0,maxWidth:0};var p=Er(t.get("barWidth"),l),d=Er(t.get("barMaxWidth"),l),f=t.get("barGap"),g=t.get("barCategoryGap");p&&!h[c].width&&(p=Math.min(u.remainedWidth,p),h[c].width=p,u.remainedWidth-=p),d&&(h[c].maxWidth=d),null!=f&&(u.gap=f),null!=g&&(u.categoryGap=g)}));var n={};return E(e,(function(t,e){n[e]={};var i=t.stacks,r=t.bandWidth,o=Er(t.categoryGap,r),a=Er(t.gap,1),s=t.remainedWidth,l=t.autoWidthCount,u=(s-o)/(l+(l-1)*a);u=Math.max(u,0),E(i,(function(t,e){var n=t.maxWidth;n&&n<u&&(n=Math.min(n,s),t.width&&(n=Math.min(n,t.width)),s-=n,t.width=n,l--)})),u=(s-o)/(l+(l-1)*a),u=Math.max(u,0);var h,c=0;E(i,(function(t,e){t.width||(t.width=u),h=t,c+=t.width*(1+a)})),h&&(c-=h.width*a);var p=-c/2;E(i,(function(t,i){n[e][i]=n[e][i]||{offset:p,width:t.width},p+=t.width*(1+a)}))})),n}(B(e.getSeriesByType(t),(function(t){return!e.isSeriesFiltered(t)&&t.coordinateSystem&&"polar"===t.coordinateSystem.type})));e.eachSeriesByType(t,(function(t){if("polar"===t.coordinateSystem.type){var e=t.getData(),n=t.coordinateSystem,o=n.getBaseAxis(),a=NN(n,o),s=RN(t),l=r[a][s],u=l.offset,h=l.width,c=n.getOtherAxis(o),p=t.coordinateSystem.cx,d=t.coordinateSystem.cy,f=t.get("barMinHeight")||0,g=t.get("barMinAngle")||0;i[s]=i[s]||[];for(var y=e.mapDimension(c.dim),v=e.mapDimension(o.dim),m=ex(e,y),x="radius"!==o.dim||!t.get("roundCap",!0),_=c.dataToCoord(0),b=0,w=e.count();b<w;b++){var S=e.get(y,b),M=e.get(v,b),I=S>=0?"p":"n",T=_;m&&(i[s][M]||(i[s][M]={p:_,n:_}),T=i[s][M][I]);var C=void 0,D=void 0,A=void 0,k=void 0;if("radius"===c.dim){var L=c.dataToCoord(S)-_,P=o.dataToCoord(M);Math.abs(L)<f&&(L=(L<0?-1:1)*f),C=T,D=T+L,k=(A=P-u)-h,m&&(i[s][M][I]=D)}else{var O=c.dataToCoord(S,x)-_,R=o.dataToCoord(M);Math.abs(O)<g&&(O=(O<0?-1:1)*g),D=(C=R+u)+h,A=T,k=T+O,m&&(i[s][M][I]=k)}e.setItemLayout(b,{cx:p,cy:d,r0:C,r:D,startAngle:-A*Math.PI/180,endAngle:-k*Math.PI/180,clockwise:A>=k})}}}))}var zN={startAngle:90,clockwise:!0,splitNumber:12,axisLabel:{rotate:0}},VN={splitNumber:5},BN=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="polar",e}(gg);function FN(t,e){e=e||{};var n=t.coordinateSystem,i=t.axis,r={},o=i.position,a=i.orient,s=n.getRect(),l=[s.x,s.x+s.width,s.y,s.y+s.height],u={horizontal:{top:l[2],bottom:l[3]},vertical:{left:l[0],right:l[1]}};r.position=["vertical"===a?u.vertical[o]:l[0],"horizontal"===a?u.horizontal[o]:l[3]];r.rotation=Math.PI/2*{horizontal:0,vertical:1}[a];r.labelDirection=r.tickDirection=r.nameDirection={top:-1,bottom:1,right:1,left:-1}[o],t.get(["axisTick","inside"])&&(r.tickDirection=-r.tickDirection),it(e.labelInside,t.get(["axisLabel","inside"]))&&(r.labelDirection=-r.labelDirection);var h=e.rotate;return null==h&&(h=t.get(["axisLabel","rotate"])),r.labelRotation="top"===o?-h:h,r.z2=1,r}var GN=["axisLine","axisTickLabel","axisName"],WN=["splitArea","splitLine"],HN=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.axisPointerClass="SingleAxisPointer",n}return n(e,t),e.prototype.render=function(e,n,i,r){var o=this.group;o.removeAll();var a=this._axisGroup;this._axisGroup=new Cr;var s=FN(e),l=new FM(e,s);E(GN,l.add,l),o.add(this._axisGroup),o.add(l.getGroup()),E(WN,(function(t){e.get([t,"show"])&&YN[t](this,this.group,this._axisGroup,e)}),this),Ah(a,this._axisGroup,e),t.prototype.render.call(this,e,n,i,r)},e.prototype.remove=function(){nI(this)},e.type="singleAxis",e}(QM),YN={splitLine:function(t,e,n,i){var r=i.axis;if(!r.scale.isBlank()){var o=i.getModel("splitLine"),a=o.getModel("lineStyle"),s=a.get("color");s=s instanceof Array?s:[s];for(var l=i.coordinateSystem.getRect(),u=r.isHorizontal(),h=[],c=0,p=r.getTicksCoords({tickModel:o}),d=[],f=[],g=0;g<p.length;++g){var y=r.toGlobalCoord(p[g].coord);u?(d[0]=y,d[1]=l.y,f[0]=y,f[1]=l.y+l.height):(d[0]=l.x,d[1]=y,f[0]=l.x+l.width,f[1]=y);var v=c++%s.length;h[v]=h[v]||[],h[v].push(new zu({subPixelOptimize:!0,shape:{x1:d[0],y1:d[1],x2:f[0],y2:f[1]},silent:!0}))}var m=a.getLineStyle(["color"]);for(g=0;g<h.length;++g)e.add(wh(h[g],{style:k({stroke:s[g%s.length]},m),silent:!0}))}},splitArea:function(t,e,n,i){eI(t,n,i,i)}},UN=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.getCoordSysModel=function(){return this},e.type="singleAxis",e.layoutMode="box",e.defaultOption={left:"5%",top:"5%",right:"5%",bottom:"5%",type:"value",position:"bottom",orient:"horizontal",axisLine:{show:!0,lineStyle:{width:1,type:"solid"}},tooltip:{show:!0},axisTick:{show:!0,length:6,lineStyle:{width:1}},axisLabel:{show:!0,interval:"auto"},splitLine:{show:!0,lineStyle:{type:"dashed",opacity:.2}}},e}(Tp);R(UN,c_.prototype);var XN=function(t){function e(e,n,i,r,o){var a=t.call(this,e,n,i)||this;return a.type=r||"value",a.position=o||"bottom",a}return n(e,t),e.prototype.isHorizontal=function(){var t=this.position;return"top"===t||"bottom"===t},e.prototype.pointToData=function(t,e){return this.coordinateSystem.pointToData(t)[0]},e}(W_),ZN=["single"],jN=function(){function t(t,e,n){this.type="single",this.dimension="single",this.dimensions=ZN,this.axisPointerEnabled=!0,this.model=t,this._init(t,e,n)}return t.prototype._init=function(t,e,n){var i=this.dimension,r=new XN(i,r_(t),[0,0],t.get("type"),t.get("position")),o="category"===r.type;r.onBand=o&&t.get("boundaryGap"),r.inverse=t.get("inverse"),r.orient=t.get("orient"),t.axis=r,r.model=t,r.coordinateSystem=this,this._axis=r},t.prototype.update=function(t,e){t.eachSeries((function(t){if(t.coordinateSystem===this){var e=t.getData();E(e.mapDimensionsAll(this.dimension),(function(t){this._axis.scale.unionExtentFromData(e,t)}),this),i_(this._axis.scale,this._axis.model)}}),this)},t.prototype.resize=function(t,e){this._rect=xp({left:t.get("left"),top:t.get("top"),right:t.get("right"),bottom:t.get("bottom"),width:t.get("width"),height:t.get("height")},{width:e.getWidth(),height:e.getHeight()}),this._adjustAxis()},t.prototype.getRect=function(){return this._rect},t.prototype._adjustAxis=function(){var t=this._rect,e=this._axis,n=e.isHorizontal(),i=n?[0,t.width]:[0,t.height],r=e.reverse?1:0;e.setExtent(i[r],i[1-r]),this._updateAxisTransform(e,n?t.x:t.y)},t.prototype._updateAxisTransform=function(t,e){var n=t.getExtent(),i=n[0]+n[1],r=t.isHorizontal();t.toGlobalCoord=r?function(t){return t+e}:function(t){return i-t+e},t.toLocalCoord=r?function(t){return t-e}:function(t){return i-t+e}},t.prototype.getAxis=function(){return this._axis},t.prototype.getBaseAxis=function(){return this._axis},t.prototype.getAxes=function(){return[this._axis]},t.prototype.getTooltipAxes=function(){return{baseAxes:[this.getAxis()],otherAxes:[]}},t.prototype.containPoint=function(t){var e=this.getRect(),n=this.getAxis();return"horizontal"===n.orient?n.contain(n.toLocalCoord(t[0]))&&t[1]>=e.y&&t[1]<=e.y+e.height:n.contain(n.toLocalCoord(t[1]))&&t[0]>=e.y&&t[0]<=e.y+e.height},t.prototype.pointToData=function(t){var e=this.getAxis();return[e.coordToData(e.toLocalCoord(t["horizontal"===e.orient?0:1]))]},t.prototype.dataToPoint=function(t){var e=this.getAxis(),n=this.getRect(),i=[],r="horizontal"===e.orient?0:1;return t instanceof Array&&(t=t[0]),i[r]=e.toGlobalCoord(e.dataToCoord(+t)),i[1-r]=0===r?n.y+n.height/2:n.x+n.width/2,i},t.prototype.convertToPixel=function(t,e,n){return qN(e)===this?this.dataToPoint(n):null},t.prototype.convertFromPixel=function(t,e,n){return qN(e)===this?this.pointToData(n):null},t}();function qN(t){var e=t.seriesModel,n=t.singleAxisModel;return n&&n.coordinateSystem||e&&e.coordinateSystem}var KN={create:function(t,e){var n=[];return t.eachComponent("singleAxis",(function(i,r){var o=new jN(i,t,e);o.name="single_"+r,o.resize(i,e),i.coordinateSystem=o,n.push(o)})),t.eachSeries((function(t){if("singleAxis"===t.get("coordinateSystem")){var e=t.getReferringComponents("singleAxis",Co).models[0];t.coordinateSystem=e&&e.coordinateSystem}})),n},dimensions:ZN},$N=["x","y"],JN=["width","height"],QN=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.makeElOption=function(t,e,n,i,r){var o=n.axis,a=o.coordinateSystem,s=nE(a,1-eE(o)),l=a.dataToPoint(e)[0],u=i.get("type");if(u&&"none"!==u){var h=RR(i),c=tE[u](o,l,s);c.style=h,t.graphicKey=c.type,t.pointer=c}VR(e,t,FN(n),n,i,r)},e.prototype.getHandleTransform=function(t,e,n){var i=FN(e,{labelInside:!1});i.labelMargin=n.get(["handle","margin"]);var r=zR(e.axis,t,i);return{x:r[0],y:r[1],rotation:i.rotation+(i.labelDirection<0?Math.PI:0)}},e.prototype.updateHandleTransform=function(t,e,n,i){var r=n.axis,o=r.coordinateSystem,a=eE(r),s=nE(o,a),l=[t.x,t.y];l[a]+=e[a],l[a]=Math.min(s[1],l[a]),l[a]=Math.max(s[0],l[a]);var u=nE(o,1-a),h=(u[1]+u[0])/2,c=[h,h];return c[a]=l[a],{x:l[0],y:l[1],rotation:t.rotation,cursorPoint:c,tooltipOption:{verticalAlign:"middle"}}},e}(DR),tE={line:function(t,e,n){return{type:"Line",subPixelOptimize:!0,shape:BR([e,n[0]],[e,n[1]],eE(t))}},shadow:function(t,e,n){var i=t.getBandWidth(),r=n[1]-n[0];return{type:"Rect",shape:FR([e-i/2,n[0]],[i,r],eE(t))}}};function eE(t){return t.isHorizontal()?0:1}function nE(t,e){var n=t.getRect();return[n[$N[e]],n[$N[e]]+n[JN[e]]]}var iE=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="single",e}(gg);var rE=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.init=function(e,n,i){var r=Sp(e);t.prototype.init.apply(this,arguments),oE(e,r)},e.prototype.mergeOption=function(e){t.prototype.mergeOption.apply(this,arguments),oE(this.option,e)},e.prototype.getCellSize=function(){return this.option.cellSize},e.type="calendar",e.defaultOption={z:2,left:80,top:60,cellSize:20,orient:"horizontal",splitLine:{show:!0,lineStyle:{color:"#000",width:1,type:"solid"}},itemStyle:{color:"#fff",borderWidth:1,borderColor:"#ccc"},dayLabel:{show:!0,firstDay:0,position:"start",margin:"50%",color:"#000"},monthLabel:{show:!0,position:"start",margin:5,align:"center",formatter:null,color:"#000"},yearLabel:{show:!0,position:null,margin:30,formatter:null,color:"#ccc",fontFamily:"sans-serif",fontWeight:"bolder",fontSize:20}},e}(Tp);function oE(t,e){var n,i=t.cellSize;1===(n=Y(i)?i:t.cellSize=[i,i]).length&&(n[1]=n[0]);var r=z([0,1],(function(t){return function(t,e){return null!=t[yp[e][0]]||null!=t[yp[e][1]]&&null!=t[yp[e][2]]}(e,t)&&(n[t]="auto"),null!=n[t]&&"auto"!==n[t]}));wp(t,e,{type:"box",ignoreSize:r})}var aE=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){var i=this.group;i.removeAll();var r=t.coordinateSystem,o=r.getRangeInfo(),a=r.getOrient(),s=e.getLocaleModel();this._renderDayRect(t,o,i),this._renderLines(t,o,a,i),this._renderYearText(t,o,a,i),this._renderMonthText(t,s,a,i),this._renderWeekText(t,s,o,a,i)},e.prototype._renderDayRect=function(t,e,n){for(var i=t.coordinateSystem,r=t.getModel("itemStyle").getItemStyle(),o=i.getCellWidth(),a=i.getCellHeight(),s=e.start.time;s<=e.end.time;s=i.getNextNDay(s,1).time){var l=i.dataToRect([s],!1).tl,u=new Cs({shape:{x:l[0],y:l[1],width:o,height:a},cursor:"default",style:r});n.add(u)}},e.prototype._renderLines=function(t,e,n,i){var r=this,o=t.coordinateSystem,a=t.getModel(["splitLine","lineStyle"]).getLineStyle(),s=t.get(["splitLine","show"]),l=a.lineWidth;this._tlpoints=[],this._blpoints=[],this._firstDayOfMonth=[],this._firstDayPoints=[];for(var u=e.start,h=0;u.time<=e.end.time;h++){p(u.formatedDate),0===h&&(u=o.getDateInfo(e.start.y+"-"+e.start.m));var c=u.date;c.setMonth(c.getMonth()+1),u=o.getDateInfo(c)}function p(e){r._firstDayOfMonth.push(o.getDateInfo(e)),r._firstDayPoints.push(o.dataToRect([e],!1).tl);var l=r._getLinePointsOfOneWeek(t,e,n);r._tlpoints.push(l[0]),r._blpoints.push(l[l.length-1]),s&&r._drawSplitline(l,a,i)}p(o.getNextNDay(e.end.time,1).formatedDate),s&&this._drawSplitline(r._getEdgesPoints(r._tlpoints,l,n),a,i),s&&this._drawSplitline(r._getEdgesPoints(r._blpoints,l,n),a,i)},e.prototype._getEdgesPoints=function(t,e,n){var i=[t[0].slice(),t[t.length-1].slice()],r="horizontal"===n?0:1;return i[0][r]=i[0][r]-e/2,i[1][r]=i[1][r]+e/2,i},e.prototype._drawSplitline=function(t,e,n){var i=new Ru({z2:20,shape:{points:t},style:e});n.add(i)},e.prototype._getLinePointsOfOneWeek=function(t,e,n){for(var i=t.coordinateSystem,r=i.getDateInfo(e),o=[],a=0;a<7;a++){var s=i.getNextNDay(r.time,a),l=i.dataToRect([s.time],!1);o[2*s.day]=l.tl,o[2*s.day+1]=l["horizontal"===n?"bl":"tr"]}return o},e.prototype._formatterLabel=function(t,e){return X(t)&&t?(n=t,E(e,(function(t,e){n=n.replace("{"+e+"}",i?ap(t):t)})),n):U(t)?t(e):e.nameMap;var n,i},e.prototype._yearTextPositionControl=function(t,e,n,i,r){var o=e[0],a=e[1],s=["center","bottom"];"bottom"===i?(a+=r,s=["center","top"]):"left"===i?o-=r:"right"===i?(o+=r,s=["center","top"]):a-=r;var l=0;return"left"!==i&&"right"!==i||(l=Math.PI/2),{rotation:l,x:o,y:a,style:{align:s[0],verticalAlign:s[1]}}},e.prototype._renderYearText=function(t,e,n,i){var r=t.getModel("yearLabel");if(r.get("show")){var o=r.get("margin"),a=r.get("position");a||(a="horizontal"!==n?"top":"left");var s=[this._tlpoints[this._tlpoints.length-1],this._blpoints[0]],l=(s[0][0]+s[1][0])/2,u=(s[0][1]+s[1][1])/2,h="horizontal"===n?0:1,c={top:[l,s[h][1]],bottom:[l,s[1-h][1]],left:[s[1-h][0],u],right:[s[h][0],u]},p=e.start.y;+e.end.y>+e.start.y&&(p=p+"-"+e.end.y);var d=r.get("formatter"),f={start:e.start.y,end:e.end.y,nameMap:p},g=this._formatterLabel(d,f),y=new ks({z2:30,style:Uh(r,{text:g})});y.attr(this._yearTextPositionControl(y,c[a],n,a,o)),i.add(y)}},e.prototype._monthTextPositionControl=function(t,e,n,i,r){var o="left",a="top",s=t[0],l=t[1];return"horizontal"===n?(l+=r,e&&(o="center"),"start"===i&&(a="bottom")):(s+=r,e&&(a="middle"),"start"===i&&(o="right")),{x:s,y:l,align:o,verticalAlign:a}},e.prototype._renderMonthText=function(t,e,n,i){var r=t.getModel("monthLabel");if(r.get("show")){var o=r.get("nameMap"),a=r.get("margin"),s=r.get("position"),l=r.get("align"),u=[this._tlpoints,this._blpoints];o&&!X(o)||(o&&(e=Mc(o)||e),o=e.get(["time","monthAbbr"])||[]);var h="start"===s?0:1,c="horizontal"===n?0:1;a="start"===s?-a:a;for(var p="center"===l,d=0;d<u[h].length-1;d++){var f=u[h][d].slice(),g=this._firstDayOfMonth[d];if(p){var y=this._firstDayPoints[d];f[c]=(y[c]+u[0][d+1][c])/2}var v=r.get("formatter"),m=o[+g.m-1],x={yyyy:g.y,yy:(g.y+"").slice(2),MM:g.m,M:+g.m,nameMap:m},_=this._formatterLabel(v,x),b=new ks({z2:30,style:A(Uh(r,{text:_}),this._monthTextPositionControl(f,p,n,s,a))});i.add(b)}}},e.prototype._weekTextPositionControl=function(t,e,n,i,r){var o="center",a="middle",s=t[0],l=t[1],u="start"===n;return"horizontal"===e?(s=s+i+(u?1:-1)*r[0]/2,o=u?"right":"left"):(l=l+i+(u?1:-1)*r[1]/2,a=u?"bottom":"top"),{x:s,y:l,align:o,verticalAlign:a}},e.prototype._renderWeekText=function(t,e,n,i,r){var o=t.getModel("dayLabel");if(o.get("show")){var a=t.coordinateSystem,s=o.get("position"),l=o.get("nameMap"),u=o.get("margin"),h=a.getFirstDayOfWeek();if(!l||X(l))l&&(e=Mc(l)||e),l=e.get(["time","dayOfWeekShort"])||z(e.get(["time","dayOfWeekAbbr"]),(function(t){return t[0]}));var c=a.getNextNDay(n.end.time,7-n.lweek).time,p=[a.getCellWidth(),a.getCellHeight()];u=Er(u,Math.min(p[1],p[0])),"start"===s&&(c=a.getNextNDay(n.start.time,-(7+n.fweek)).time,u=-u);for(var d=0;d<7;d++){var f,g=a.getNextNDay(c,d),y=a.dataToRect([g.time],!1).center;f=Math.abs((d+h)%7);var v=new ks({z2:30,style:A(Uh(o,{text:l[f]}),this._weekTextPositionControl(y,i,s,u,p))});r.add(v)}}},e.type="calendar",e}(gg),sE=864e5,lE=function(){function t(e,n,i){this.type="calendar",this.dimensions=t.dimensions,this.getDimensionsInfo=t.getDimensionsInfo,this._model=e}return t.getDimensionsInfo=function(){return[{name:"time",type:"time"},"value"]},t.prototype.getRangeInfo=function(){return this._rangeInfo},t.prototype.getModel=function(){return this._model},t.prototype.getRect=function(){return this._rect},t.prototype.getCellWidth=function(){return this._sw},t.prototype.getCellHeight=function(){return this._sh},t.prototype.getOrient=function(){return this._orient},t.prototype.getFirstDayOfWeek=function(){return this._firstDayOfWeek},t.prototype.getDateInfo=function(t){var e=(t=jr(t)).getFullYear(),n=t.getMonth()+1,i=n<10?"0"+n:""+n,r=t.getDate(),o=r<10?"0"+r:""+r,a=t.getDay();return{y:e+"",m:i,d:o,day:a=Math.abs((a+7-this.getFirstDayOfWeek())%7),time:t.getTime(),formatedDate:e+"-"+i+"-"+o,date:t}},t.prototype.getNextNDay=function(t,e){return 0===(e=e||0)||(t=new Date(this.getDateInfo(t).time)).setDate(t.getDate()+e),this.getDateInfo(t)},t.prototype.update=function(t,e){this._firstDayOfWeek=+this._model.getModel("dayLabel").get("firstDay"),this._orient=this._model.get("orient"),this._lineWidth=this._model.getModel("itemStyle").getItemStyle().lineWidth||0,this._rangeInfo=this._getRangeInfo(this._initRangeOption());var n=this._rangeInfo.weeks||1,i=["width","height"],r=this._model.getCellSize().slice(),o=this._model.getBoxLayoutParams(),a="horizontal"===this._orient?[n,7]:[7,n];E([0,1],(function(t){u(r,t)&&(o[i[t]]=r[t]*a[t])}));var s={width:e.getWidth(),height:e.getHeight()},l=this._rect=xp(o,s);function u(t,e){return null!=t[e]&&"auto"!==t[e]}E([0,1],(function(t){u(r,t)||(r[t]=l[i[t]]/a[t])})),this._sw=r[0],this._sh=r[1]},t.prototype.dataToPoint=function(t,e){Y(t)&&(t=t[0]),null==e&&(e=!0);var n=this.getDateInfo(t),i=this._rangeInfo,r=n.formatedDate;if(e&&!(n.time>=i.start.time&&n.time<i.end.time+sE))return[NaN,NaN];var o=n.day,a=this._getRangeInfo([i.start.time,r]).nthWeek;return"vertical"===this._orient?[this._rect.x+o*this._sw+this._sw/2,this._rect.y+a*this._sh+this._sh/2]:[this._rect.x+a*this._sw+this._sw/2,this._rect.y+o*this._sh+this._sh/2]},t.prototype.pointToData=function(t){var e=this.pointToDate(t);return e&&e.time},t.prototype.dataToRect=function(t,e){var n=this.dataToPoint(t,e);return{contentShape:{x:n[0]-(this._sw-this._lineWidth)/2,y:n[1]-(this._sh-this._lineWidth)/2,width:this._sw-this._lineWidth,height:this._sh-this._lineWidth},center:n,tl:[n[0]-this._sw/2,n[1]-this._sh/2],tr:[n[0]+this._sw/2,n[1]-this._sh/2],br:[n[0]+this._sw/2,n[1]+this._sh/2],bl:[n[0]-this._sw/2,n[1]+this._sh/2]}},t.prototype.pointToDate=function(t){var e=Math.floor((t[0]-this._rect.x)/this._sw)+1,n=Math.floor((t[1]-this._rect.y)/this._sh)+1,i=this._rangeInfo.range;return"vertical"===this._orient?this._getDateByWeeksAndDay(n,e-1,i):this._getDateByWeeksAndDay(e,n-1,i)},t.prototype.convertToPixel=function(t,e,n){var i=uE(e);return i===this?i.dataToPoint(n):null},t.prototype.convertFromPixel=function(t,e,n){var i=uE(e);return i===this?i.pointToData(n):null},t.prototype.containPoint=function(t){return console.warn("Not implemented."),!1},t.prototype._initRangeOption=function(){var t,e=this._model.get("range");if(Y(e)&&1===e.length&&(e=e[0]),Y(e))t=e;else{var n=e.toString();if(/^\d{4}$/.test(n)&&(t=[n+"-01-01",n+"-12-31"]),/^\d{4}[\/|-]\d{1,2}$/.test(n)){var i=this.getDateInfo(n),r=i.date;r.setMonth(r.getMonth()+1);var o=this.getNextNDay(r,-1);t=[i.formatedDate,o.formatedDate]}/^\d{4}[\/|-]\d{1,2}[\/|-]\d{1,2}$/.test(n)&&(t=[n,n])}if(!t)return e;var a=this._getRangeInfo(t);return a.start.time>a.end.time&&t.reverse(),t},t.prototype._getRangeInfo=function(t){var e,n=[this.getDateInfo(t[0]),this.getDateInfo(t[1])];n[0].time>n[1].time&&(e=!0,n.reverse());var i=Math.floor(n[1].time/sE)-Math.floor(n[0].time/sE)+1,r=new Date(n[0].time),o=r.getDate(),a=n[1].date.getDate();r.setDate(o+i-1);var s=r.getDate();if(s!==a)for(var l=r.getTime()-n[1].time>0?1:-1;(s=r.getDate())!==a&&(r.getTime()-n[1].time)*l>0;)i-=l,r.setDate(s-l);var u=Math.floor((i+n[0].day+6)/7),h=e?1-u:u-1;return e&&n.reverse(),{range:[n[0].formatedDate,n[1].formatedDate],start:n[0],end:n[1],allDay:i,weeks:u,nthWeek:h,fweek:n[0].day,lweek:n[1].day}},t.prototype._getDateByWeeksAndDay=function(t,e,n){var i=this._getRangeInfo(n);if(t>i.weeks||0===t&&e<i.fweek||t===i.weeks&&e>i.lweek)return null;var r=7*(t-1)-i.fweek+e,o=new Date(i.start.time);return o.setDate(+i.start.d+r),this.getDateInfo(o)},t.create=function(e,n){var i=[];return e.eachComponent("calendar",(function(r){var o=new t(r,e,n);i.push(o),r.coordinateSystem=o})),e.eachSeries((function(t){"calendar"===t.get("coordinateSystem")&&(t.coordinateSystem=i[t.get("calendarIndex")||0])})),i},t.dimensions=["time","value"],t}();function uE(t){var e=t.calendarModel,n=t.seriesModel;return e?e.coordinateSystem:n?n.coordinateSystem:null}function hE(t,e){var n;return E(e,(function(e){null!=t[e]&&"auto"!==t[e]&&(n=!0)})),n}var cE=["transition","enterFrom","leaveTo"],pE=cE.concat(["enterAnimation","updateAnimation","leaveAnimation"]);function dE(t,e,n){if(n&&(!t[n]&&e[n]&&(t[n]={}),t=t[n],e=e[n]),t&&e)for(var i=n?cE:pE,r=0;r<i.length;r++){var o=i[r];null==t[o]&&null!=e[o]&&(t[o]=e[o])}}var fE=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.preventAutoZ=!0,n}return n(e,t),e.prototype.mergeOption=function(e,n){var i=this.option.elements;this.option.elements=null,t.prototype.mergeOption.call(this,e,n),this.option.elements=i},e.prototype.optionUpdated=function(t,e){var n=this.option,i=(e?n:t).elements,r=n.elements=e?[]:n.elements,o=[];this._flatten(i,o,null);var a=yo(r,o,"normalMerge"),s=this._elOptionsToUpdate=[];E(a,(function(t,e){var n=t.newOption;n&&(s.push(n),function(t,e){var n=t.existing;if(e.id=t.keyInfo.id,!e.type&&n&&(e.type=n.type),null==e.parentId){var i=e.parentOption;i?e.parentId=i.id:n&&(e.parentId=n.parentId)}e.parentOption=null}(t,n),function(t,e,n){var i=A({},n),r=t[e],o=n.$action||"merge";"merge"===o?r?(C(r,i,!0),wp(r,i,{ignoreSize:!0}),Mp(n,r),dE(n,r),dE(n,r,"shape"),dE(n,r,"style"),dE(n,r,"extra"),n.clipPath=r.clipPath):t[e]=i:"replace"===o?t[e]=i:"remove"===o&&r&&(t[e]=null)}(r,e,n),function(t,e){if(t&&(t.hv=e.hv=[hE(e,["left","right"]),hE(e,["top","bottom"])],"group"===t.type)){var n=t,i=e;null==n.width&&(n.width=i.width=0),null==n.height&&(n.height=i.height=0)}}(r[e],n))}),this),n.elements=B(r,(function(t){return t&&delete t.$action,null!=t}))},e.prototype._flatten=function(t,e,n){E(t,(function(t){if(t){n&&(t.parentOption=n),e.push(t);var i=t.children;"group"===t.type&&i&&this._flatten(i,e,t),delete t.children}}),this)},e.prototype.useElOptionsToUpdate=function(){var t=this._elOptionsToUpdate;return this._elOptionsToUpdate=null,t},e.type="graphic",e.defaultOption={elements:[]},e}(Tp),gE={path:null,compoundPath:null,group:Cr,image:_s,text:ks},yE=So(),vE=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.init=function(){this._elMap=ft()},e.prototype.render=function(t,e,n){t!==this._lastGraphicModel&&this._clear(),this._lastGraphicModel=t,this._updateElements(t),this._relocate(t,n)},e.prototype._updateElements=function(t){var e=t.useElOptionsToUpdate();if(e){var n=this._elMap,i=this.group,r=t.get("z"),o=t.get("zlevel");E(e,(function(e){var a=xo(e.id,null),s=null!=a?n.get(a):null,l=xo(e.parentId,null),u=null!=l?n.get(l):i,h=e.type,c=e.style;"text"===h&&c&&e.hv&&e.hv[1]&&(c.textVerticalAlign=c.textBaseline=c.verticalAlign=c.align=null);var p=e.textContent,d=e.textConfig;if(c&&TO(c,h,!!d,!!p)){var f=CO(c,h,!0);!d&&f.textConfig&&(d=e.textConfig=f.textConfig),!p&&f.textContent&&(p=f.textContent)}var g=function(t){return t=A({},t),E(["id","parentId","$action","hv","bounding","textContent","clipPath"].concat(gp),(function(e){delete t[e]})),t}(e);var y=e.$action||"merge",v="merge"===y,m="replace"===y;if(v){var x=s;(T=!s)?x=xE(a,u,e.type,n):(x&&(yE(x).isNew=!1),jO(x)),x&&(EO(x,g,t,{isInit:T}),bE(x,e,r,o))}else if(m){_E(s,e,n,t);var _=xE(a,u,e.type,n);_&&(EO(_,g,t,{isInit:!0}),bE(_,e,r,o))}else"remove"===y&&(zO(s,e),_E(s,e,n,t));var b=n.get(a);if(b&&p)if(v){var w=b.getTextContent();w?w.attr(p):b.setTextContent(new ks(p))}else m&&b.setTextContent(new ks(p));if(b){var S=e.clipPath;if(S){var M=S.type,I=void 0,T=!1;if(v){var C=b.getClipPath();I=(T=!C||yE(C).type!==M)?mE(M):C}else m&&(T=!0,I=mE(M));b.setClipPath(I),EO(I,S,t,{isInit:T}),qO(I,S.keyframeAnimation,t)}var D=yE(b);b.setTextConfig(d),D.option=e,function(t,e,n){var i=Hs(t).eventData;t.silent||t.ignore||i||(i=Hs(t).eventData={componentType:"graphic",componentIndex:e.componentIndex,name:t.name});i&&(i.info=n.info)}(b,t,e),Eh({el:b,componentModel:t,itemName:b.name,itemTooltipOption:e.tooltip}),qO(b,e.keyframeAnimation,t)}}))}},e.prototype._relocate=function(t,e){for(var n=t.option.elements,i=this.group,r=this._elMap,o=e.getWidth(),a=e.getHeight(),s=["x","y"],l=0;l<n.length;l++){if((f=null!=(d=xo((p=n[l]).id,null))?r.get(d):null)&&f.isGroup){var u=(g=f.parent)===i,h=yE(f),c=yE(g);h.width=Er(h.option.width,u?o:c.width)||0,h.height=Er(h.option.height,u?a:c.height)||0}}for(l=n.length-1;l>=0;l--){var p,d,f;if(f=null!=(d=xo((p=n[l]).id,null))?r.get(d):null){var g=f.parent,y=(c=yE(g),{}),v=_p(f,p,g===i?{width:o,height:a}:{width:c.width,height:c.height},null,{hv:p.hv,boundingMode:p.bounding},y);if(!yE(f).isNew&&v){for(var m=p.transition,x={},_=0;_<s.length;_++){var b=s[_],w=y[b];m&&(BO(m)||P(m,b)>=0)?x[b]=w:f[b]=w}rh(f,x,t,0)}else f.attr(y)}}},e.prototype._clear=function(){var t=this,e=this._elMap;e.each((function(n){_E(n,yE(n).option,e,t._lastGraphicModel)})),this._elMap=ft()},e.prototype.dispose=function(){this._clear()},e.type="graphic",e}(gg);function mE(t){var e=mt(gE,t)?gE[t]:mh(t);var n=new e({});return yE(n).type=t,n}function xE(t,e,n,i){var r=mE(n);return e.add(r),i.set(t,r),yE(r).id=t,yE(r).isNew=!0,r}function _E(t,e,n,i){t&&t.parent&&("group"===t.type&&t.traverse((function(t){_E(t,e,n,i)})),VO(t,e,i),n.removeKey(yE(t).id))}function bE(t,e,n,i){if(!t.isGroup){var r=t;r.cursor=rt(e.cursor,da.prototype.cursor),r.z=rt(e.z,n||0),r.zlevel=rt(e.zlevel,i||0);var o=e.z2;null!=o&&(r.z2=o||0)}E(G(e),(function(n){var i=e[n];0===n.indexOf("on")&&U(i)&&(t[n]=i)})),t.draggable=e.draggable,null!=e.name&&(t.name=e.name),null!=e.id&&(t.id=e.id)}var wE=["x","y","radius","angle","single"],SE=["cartesian2d","polar","singleAxis"];function ME(t){return t+"Axis"}function IE(t,e){var n,i=ft(),r=[],o=ft();t.eachComponent({mainType:"dataZoom",query:e},(function(t){o.get(t.uid)||s(t)}));do{n=!1,t.eachComponent("dataZoom",a)}while(n);function a(t){!o.get(t.uid)&&function(t){var e=!1;return t.eachTargetAxis((function(t,n){var r=i.get(t);r&&r[n]&&(e=!0)})),e}(t)&&(s(t),n=!0)}function s(t){o.set(t.uid,!0),r.push(t),t.eachTargetAxis((function(t,e){(i.get(t)||i.set(t,[]))[e]=!0}))}return r}function TE(t){var e=t.ecModel,n={infoList:[],infoMap:ft()};return t.eachTargetAxis((function(t,i){var r=e.getComponent(ME(t),i);if(r){var o=r.getCoordSysModel();if(o){var a=o.uid,s=n.infoMap.get(a);s||(s={model:o,axisModels:[]},n.infoList.push(s),n.infoMap.set(a,s)),s.axisModels.push(r)}}})),n}var CE=function(){function t(){this.indexList=[],this.indexMap=[]}return t.prototype.add=function(t){this.indexMap[t]||(this.indexList.push(t),this.indexMap[t]=!0)},t}(),DE=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n._autoThrottle=!0,n._noTarget=!0,n._rangePropMode=["percent","percent"],n}return n(e,t),e.prototype.init=function(t,e,n){var i=AE(t);this.settledOption=i,this.mergeDefaultAndTheme(t,n),this._doInit(i)},e.prototype.mergeOption=function(t){var e=AE(t);C(this.option,t,!0),C(this.settledOption,e,!0),this._doInit(e)},e.prototype._doInit=function(t){var e=this.option;this._setDefaultThrottle(t),this._updateRangeUse(t);var n=this.settledOption;E([["start","startValue"],["end","endValue"]],(function(t,i){"value"===this._rangePropMode[i]&&(e[t[0]]=n[t[0]]=null)}),this),this._resetTarget()},e.prototype._resetTarget=function(){var t=this.get("orient",!0),e=this._targetAxisInfoMap=ft();this._fillSpecifiedTargetAxis(e)?this._orient=t||this._makeAutoOrientByTargetAxis():(this._orient=t||"horizontal",this._fillAutoTargetAxisByOrient(e,this._orient)),this._noTarget=!0,e.each((function(t){t.indexList.length&&(this._noTarget=!1)}),this)},e.prototype._fillSpecifiedTargetAxis=function(t){var e=!1;return E(wE,(function(n){var i=this.getReferringComponents(ME(n),Do);if(i.specified){e=!0;var r=new CE;E(i.models,(function(t){r.add(t.componentIndex)})),t.set(n,r)}}),this),e},e.prototype._fillAutoTargetAxisByOrient=function(t,e){var n=this.ecModel,i=!0;if(i){var r="vertical"===e?"y":"x";o(n.findComponents({mainType:r+"Axis"}),r)}i&&o(n.findComponents({mainType:"singleAxis",filter:function(t){return t.get("orient",!0)===e}}),"single");function o(e,n){var r=e[0];if(r){var o=new CE;if(o.add(r.componentIndex),t.set(n,o),i=!1,"x"===n||"y"===n){var a=r.getReferringComponents("grid",Co).models[0];a&&E(e,(function(t){r.componentIndex!==t.componentIndex&&a===t.getReferringComponents("grid",Co).models[0]&&o.add(t.componentIndex)}))}}}i&&E(wE,(function(e){if(i){var r=n.findComponents({mainType:ME(e),filter:function(t){return"category"===t.get("type",!0)}});if(r[0]){var o=new CE;o.add(r[0].componentIndex),t.set(e,o),i=!1}}}),this)},e.prototype._makeAutoOrientByTargetAxis=function(){var t;return this.eachTargetAxis((function(e){!t&&(t=e)}),this),"y"===t?"vertical":"horizontal"},e.prototype._setDefaultThrottle=function(t){if(t.hasOwnProperty("throttle")&&(this._autoThrottle=!1),this._autoThrottle){var e=this.ecModel.option;this.option.throttle=e.animation&&e.animationDurationUpdate>0?100:20}},e.prototype._updateRangeUse=function(t){var e=this._rangePropMode,n=this.get("rangeMode");E([["start","startValue"],["end","endValue"]],(function(i,r){var o=null!=t[i[0]],a=null!=t[i[1]];o&&!a?e[r]="percent":!o&&a?e[r]="value":n?e[r]=n[r]:o&&(e[r]="percent")}))},e.prototype.noTarget=function(){return this._noTarget},e.prototype.getFirstTargetAxisModel=function(){var t;return this.eachTargetAxis((function(e,n){null==t&&(t=this.ecModel.getComponent(ME(e),n))}),this),t},e.prototype.eachTargetAxis=function(t,e){this._targetAxisInfoMap.each((function(n,i){E(n.indexList,(function(n){t.call(e,i,n)}))}))},e.prototype.getAxisProxy=function(t,e){var n=this.getAxisModel(t,e);if(n)return n.__dzAxisProxy},e.prototype.getAxisModel=function(t,e){var n=this._targetAxisInfoMap.get(t);if(n&&n.indexMap[e])return this.ecModel.getComponent(ME(t),e)},e.prototype.setRawRange=function(t){var e=this.option,n=this.settledOption;E([["start","startValue"],["end","endValue"]],(function(i){null==t[i[0]]&&null==t[i[1]]||(e[i[0]]=n[i[0]]=t[i[0]],e[i[1]]=n[i[1]]=t[i[1]])}),this),this._updateRangeUse(t)},e.prototype.setCalculatedRange=function(t){var e=this.option;E(["start","startValue","end","endValue"],(function(n){e[n]=t[n]}))},e.prototype.getPercentRange=function(){var t=this.findRepresentativeAxisProxy();if(t)return t.getDataPercentWindow()},e.prototype.getValueRange=function(t,e){if(null!=t||null!=e)return this.getAxisProxy(t,e).getDataValueWindow();var n=this.findRepresentativeAxisProxy();return n?n.getDataValueWindow():void 0},e.prototype.findRepresentativeAxisProxy=function(t){if(t)return t.__dzAxisProxy;for(var e,n=this._targetAxisInfoMap.keys(),i=0;i<n.length;i++)for(var r=n[i],o=this._targetAxisInfoMap.get(r),a=0;a<o.indexList.length;a++){var s=this.getAxisProxy(r,o.indexList[a]);if(s.hostedBy(this))return s;e||(e=s)}return e},e.prototype.getRangePropMode=function(){return this._rangePropMode.slice()},e.prototype.getOrient=function(){return this._orient},e.type="dataZoom",e.dependencies=["xAxis","yAxis","radiusAxis","angleAxis","singleAxis","series","toolbox"],e.defaultOption={z:4,filterMode:"filter",start:0,end:100},e}(Tp);function AE(t){var e={};return E(["start","end","startValue","endValue","throttle"],(function(n){t.hasOwnProperty(n)&&(e[n]=t[n])})),e}var kE=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="dataZoom.select",e}(DE),LE=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n,i){this.dataZoomModel=t,this.ecModel=e,this.api=n},e.type="dataZoom",e}(gg),PE=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="dataZoom.select",e}(LE),OE=E,RE=Vr,NE=function(){function t(t,e,n,i){this._dimName=t,this._axisIndex=e,this.ecModel=i,this._dataZoomModel=n}return t.prototype.hostedBy=function(t){return this._dataZoomModel===t},t.prototype.getDataValueWindow=function(){return this._valueWindow.slice()},t.prototype.getDataPercentWindow=function(){return this._percentWindow.slice()},t.prototype.getTargetSeriesModels=function(){var t=[];return this.ecModel.eachSeries((function(e){if(function(t){var e=t.get("coordinateSystem");return P(SE,e)>=0}(e)){var n=ME(this._dimName),i=e.getReferringComponents(n,Co).models[0];i&&this._axisIndex===i.componentIndex&&t.push(e)}}),this),t},t.prototype.getAxisModel=function(){return this.ecModel.getComponent(this._dimName+"Axis",this._axisIndex)},t.prototype.getMinMaxSpan=function(){return T(this._minMaxSpan)},t.prototype.calculateDataWindow=function(t){var e,n=this._dataExtent,i=this.getAxisModel().axis.scale,r=this._dataZoomModel.getRangePropMode(),o=[0,100],a=[],s=[];OE(["start","end"],(function(l,u){var h=t[l],c=t[l+"Value"];"percent"===r[u]?(null==h&&(h=o[u]),c=i.parse(Nr(h,o,n))):(e=!0,h=Nr(c=null==c?n[u]:i.parse(c),n,o)),s[u]=c,a[u]=h})),RE(s),RE(a);var l=this._minMaxSpan;function u(t,e,n,r,o){var a=o?"Span":"ValueSpan";sk(0,t,n,"all",l["min"+a],l["max"+a]);for(var s=0;s<2;s++)e[s]=Nr(t[s],n,r,!0),o&&(e[s]=i.parse(e[s]))}return e?u(s,a,n,o,!1):u(a,s,o,n,!0),{valueWindow:s,percentWindow:a}},t.prototype.reset=function(t){if(t===this._dataZoomModel){var e=this.getTargetSeriesModels();this._dataExtent=function(t,e,n){var i=[1/0,-1/0];OE(n,(function(t){!function(t,e,n){e&&E(h_(e,n),(function(n){var i=e.getApproximateExtent(n);i[0]<t[0]&&(t[0]=i[0]),i[1]>t[1]&&(t[1]=i[1])}))}(i,t.getData(),e)}));var r=t.getAxisModel(),o=t_(r.axis.scale,r,i).calculate();return[o.min,o.max]}(this,this._dimName,e),this._updateMinMaxSpan();var n=this.calculateDataWindow(t.settledOption);this._valueWindow=n.valueWindow,this._percentWindow=n.percentWindow,this._setAxisModel()}},t.prototype.filterData=function(t,e){if(t===this._dataZoomModel){var n=this._dimName,i=this.getTargetSeriesModels(),r=t.get("filterMode"),o=this._valueWindow;"none"!==r&&OE(i,(function(t){var e=t.getData(),i=e.mapDimensionsAll(n);if(i.length){if("weakFilter"===r){var a=e.getStore(),s=z(i,(function(t){return e.getDimensionIndex(t)}),e);e.filterSelf((function(t){for(var e,n,r,l=0;l<i.length;l++){var u=a.get(s[l],t),h=!isNaN(u),c=u<o[0],p=u>o[1];if(h&&!c&&!p)return!0;h&&(r=!0),c&&(e=!0),p&&(n=!0)}return r&&e&&n}))}else OE(i,(function(n){if("empty"===r)t.setData(e=e.map(n,(function(t){return function(t){return t>=o[0]&&t<=o[1]}(t)?t:NaN})));else{var i={};i[n]=o,e.selectRange(i)}}));OE(i,(function(t){e.setApproximateExtent(o,t)}))}}))}},t.prototype._updateMinMaxSpan=function(){var t=this._minMaxSpan={},e=this._dataZoomModel,n=this._dataExtent;OE(["min","max"],(function(i){var r=e.get(i+"Span"),o=e.get(i+"ValueSpan");null!=o&&(o=this.getAxisModel().axis.scale.parse(o)),null!=o?r=Nr(n[0]+o,n,[0,100],!0):null!=r&&(o=Nr(r,[0,100],n,!0)-n[0]),t[i+"Span"]=r,t[i+"ValueSpan"]=o}),this)},t.prototype._setAxisModel=function(){var t=this.getAxisModel(),e=this._percentWindow,n=this._valueWindow;if(e){var i=Gr(n,[0,500]);i=Math.min(i,20);var r=t.axis.scale.rawExtentInfo;0!==e[0]&&r.setDeterminedMinMax("min",+n[0].toFixed(i)),100!==e[1]&&r.setDeterminedMinMax("max",+n[1].toFixed(i)),r.freeze()}},t}();var EE={getTargetSeries:function(t){function e(e){t.eachComponent("dataZoom",(function(n){n.eachTargetAxis((function(i,r){var o=t.getComponent(ME(i),r);e(i,r,o,n)}))}))}e((function(t,e,n,i){n.__dzAxisProxy=null}));var n=[];e((function(e,i,r,o){r.__dzAxisProxy||(r.__dzAxisProxy=new NE(e,i,o,t),n.push(r.__dzAxisProxy))}));var i=ft();return E(n,(function(t){E(t.getTargetSeriesModels(),(function(t){i.set(t.uid,t)}))})),i},overallReset:function(t,e){t.eachComponent("dataZoom",(function(t){t.eachTargetAxis((function(e,n){t.getAxisProxy(e,n).reset(t)})),t.eachTargetAxis((function(n,i){t.getAxisProxy(n,i).filterData(t,e)}))})),t.eachComponent("dataZoom",(function(t){var e=t.findRepresentativeAxisProxy();if(e){var n=e.getDataPercentWindow(),i=e.getDataValueWindow();t.setCalculatedRange({start:n[0],end:n[1],startValue:i[0],endValue:i[1]})}}))}};var zE=!1;function VE(t){zE||(zE=!0,t.registerProcessor(t.PRIORITY.PROCESSOR.FILTER,EE),function(t){t.registerAction("dataZoom",(function(t,e){E(IE(e,t),(function(e){e.setRawRange({start:t.start,end:t.end,startValue:t.startValue,endValue:t.endValue})}))}))}(t),t.registerSubTypeDefaulter("dataZoom",(function(){return"slider"})))}function BE(t){t.registerComponentModel(kE),t.registerComponentView(PE),VE(t)}var FE=function(){},GE={};function WE(t,e){GE[t]=e}function HE(t){return GE[t]}var YE=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.optionUpdated=function(){t.prototype.optionUpdated.apply(this,arguments);var e=this.ecModel;E(this.option.feature,(function(t,n){var i=HE(n);i&&(i.getDefaultOption&&(i.defaultOption=i.getDefaultOption(e)),C(t,i.defaultOption))}))},e.type="toolbox",e.layoutMode={type:"box",ignoreSize:!0},e.defaultOption={show:!0,z:6,orient:"horizontal",left:"right",top:"top",backgroundColor:"transparent",borderColor:"#ccc",borderRadius:0,borderWidth:0,padding:5,itemSize:15,itemGap:8,showTitle:!0,iconStyle:{borderColor:"#666",color:"none"},emphasis:{iconStyle:{borderColor:"#3E98C5"}},tooltip:{show:!1,position:"bottom"}},e}(Tp);function UE(t,e){var n=ip(e.get("padding")),i=e.getItemStyle(["color","opacity"]);return i.fill=e.get("backgroundColor"),t=new Cs({shape:{x:t.x-n[3],y:t.y-n[0],width:t.width+n[1]+n[3],height:t.height+n[0]+n[2],r:e.get("borderRadius")},style:i,silent:!0,z2:-1})}var XE=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.render=function(t,e,n,i){var r=this.group;if(r.removeAll(),t.get("show")){var o=+t.get("itemSize"),a="vertical"===t.get("orient"),s=t.get("feature")||{},l=this._features||(this._features={}),u=[];E(s,(function(t,e){u.push(e)})),new Mm(this._featureNames||[],u).add(h).update(h).remove(H(h,null)).execute(),this._featureNames=u,function(t,e,n){var i=e.getBoxLayoutParams(),r=e.get("padding"),o={width:n.getWidth(),height:n.getHeight()},a=xp(i,o,r);mp(e.get("orient"),t,e.get("itemGap"),a.width,a.height),_p(t,i,o,r)}(r,t,n),r.add(UE(r.getBoundingRect(),t)),a||r.eachChild((function(t){var e=t.__title,i=t.ensureState("emphasis"),a=i.textConfig||(i.textConfig={}),s=t.getTextContent(),l=s&&s.ensureState("emphasis");if(l&&!U(l)&&e){var u=l.style||(l.style={}),h=cr(e,ks.makeFont(u)),c=t.x+r.x,p=!1;t.y+r.y+o+h.height>n.getHeight()&&(a.position="top",p=!0);var d=p?-5-h.height:o+10;c+h.width/2>n.getWidth()?(a.position=["100%",d],u.align="right"):c-h.width/2<0&&(a.position=[0,d],u.align="left")}}))}function h(h,c){var p,d=u[h],f=u[c],g=s[d],y=new dc(g,t,t.ecModel);if(i&&null!=i.newTitle&&i.featureName===d&&(g.title=i.newTitle),d&&!f){if(function(t){return 0===t.indexOf("my")}(d))p={onclick:y.option.onclick,featureName:d};else{var v=HE(d);if(!v)return;p=new v}l[d]=p}else if(!(p=l[f]))return;p.uid=gc("toolbox-feature"),p.model=y,p.ecModel=e,p.api=n;var m=p instanceof FE;d||!f?!y.get("show")||m&&p.unusable?m&&p.remove&&p.remove(e,n):(!function(i,s,l){var u,h,c=i.getModel("iconStyle"),p=i.getModel(["emphasis","iconStyle"]),d=s instanceof FE&&s.getIcons?s.getIcons():i.get("icon"),f=i.get("title")||{};X(d)?(u={})[l]=d:u=d;X(f)?(h={})[l]=f:h=f;var g=i.iconPaths={};E(u,(function(l,u){var d=Ph(l,{},{x:-o/2,y:-o/2,width:o,height:o});d.setStyle(c.getItemStyle()),d.ensureState("emphasis").style=p.getItemStyle();var f=new ks({style:{text:h[u],align:p.get("textAlign"),borderRadius:p.get("textBorderRadius"),padding:p.get("textPadding"),fill:null},ignore:!0});d.setTextContent(f),Eh({el:d,componentModel:t,itemName:u,formatterParamsExtra:{title:h[u]}}),d.__title=h[u],d.on("mouseover",(function(){var e=p.getItemStyle(),i=a?null==t.get("right")&&"right"!==t.get("left")?"right":"left":null==t.get("bottom")&&"bottom"!==t.get("top")?"bottom":"top";f.setStyle({fill:p.get("textFill")||e.fill||e.stroke||"#000",backgroundColor:p.get("textBackgroundColor")}),d.setTextConfig({position:p.get("textPosition")||i}),f.ignore=!t.get("showTitle"),n.enterEmphasis(this)})).on("mouseout",(function(){"emphasis"!==i.get(["iconStatus",u])&&n.leaveEmphasis(this),f.hide()})),("emphasis"===i.get(["iconStatus",u])?_l:bl)(d),r.add(d),d.on("click",W(s.onclick,s,e,n,u)),g[u]=d}))}(y,p,d),y.setIconStatus=function(t,e){var n=this.option,i=this.iconPaths;n.iconStatus=n.iconStatus||{},n.iconStatus[t]=e,i[t]&&("emphasis"===e?_l:bl)(i[t])},p instanceof FE&&p.render&&p.render(y,e,n,i)):m&&p.dispose&&p.dispose(e,n)}},e.prototype.updateView=function(t,e,n,i){E(this._features,(function(t){t instanceof FE&&t.updateView&&t.updateView(t.model,e,n,i)}))},e.prototype.remove=function(t,e){E(this._features,(function(n){n instanceof FE&&n.remove&&n.remove(t,e)})),this.group.removeAll()},e.prototype.dispose=function(t,e){E(this._features,(function(n){n instanceof FE&&n.dispose&&n.dispose(t,e)}))},e.type="toolbox",e}(gg);var ZE=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.onclick=function(t,e){var n=this.model,i=n.get("name")||t.get("title.0.text")||"echarts",o="svg"===e.getZr().painter.getType(),a=o?"svg":n.get("type",!0)||"png",s=e.getConnectedDataURL({type:a,backgroundColor:n.get("backgroundColor",!0)||t.get("backgroundColor")||"#fff",connectedBackgroundColor:n.get("connectedBackgroundColor"),excludeComponents:n.get("excludeComponents"),pixelRatio:n.get("pixelRatio")}),l=r.browser;if(U(MouseEvent)&&(l.newEdge||!l.ie&&!l.edge)){var u=document.createElement("a");u.download=i+"."+a,u.target="_blank",u.href=s;var h=new MouseEvent("click",{view:document.defaultView,bubbles:!0,cancelable:!1});u.dispatchEvent(h)}else if(window.navigator.msSaveOrOpenBlob||o){var c=s.split(","),p=c[0].indexOf("base64")>-1,d=o?decodeURIComponent(c[1]):c[1];p&&(d=window.atob(d));var f=i+"."+a;if(window.navigator.msSaveOrOpenBlob){for(var g=d.length,y=new Uint8Array(g);g--;)y[g]=d.charCodeAt(g);var v=new Blob([y]);window.navigator.msSaveOrOpenBlob(v,f)}else{var m=document.createElement("iframe");document.body.appendChild(m);var x=m.contentWindow,_=x.document;_.open("image/svg+xml","replace"),_.write(d),_.close(),x.focus(),_.execCommand("SaveAs",!0,f),document.body.removeChild(m)}}else{var b=n.get("lang"),w='<body style="margin:0;"><img src="'+s+'" style="max-width:100%;" title="'+(b&&b[0]||"")+'" /></body>',S=window.open();S.document.write(w),S.document.title=i}},e.getDefaultOption=function(t){return{show:!0,icon:"M4.7,22.9L29.3,45.5L54.7,23.4M4.6,43.6L4.6,58L53.8,58L53.8,43.6M29.2,45.1L29.2,0",title:t.getLocaleModel().get(["toolbox","saveAsImage","title"]),type:"png",connectedBackgroundColor:"#fff",name:"",excludeComponents:["toolbox"],lang:t.getLocaleModel().get(["toolbox","saveAsImage","lang"])}},e}(FE),jE="__ec_magicType_stack__",qE=[["line","bar"],["stack"]],KE=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.getIcons=function(){var t=this.model,e=t.get("icon"),n={};return E(t.get("type"),(function(t){e[t]&&(n[t]=e[t])})),n},e.getDefaultOption=function(t){return{show:!0,type:[],icon:{line:"M4.1,28.9h7.1l9.3-22l7.4,38l9.7-19.7l3,12.8h14.9M4.1,58h51.4",bar:"M6.7,22.9h10V48h-10V22.9zM24.9,13h10v35h-10V13zM43.2,2h10v46h-10V2zM3.1,58h53.7",stack:"M8.2,38.4l-8.4,4.1l30.6,15.3L60,42.5l-8.1-4.1l-21.5,11L8.2,38.4z M51.9,30l-8.1,4.2l-13.4,6.9l-13.9-6.9L8.2,30l-8.4,4.2l8.4,4.2l22.2,11l21.5-11l8.1-4.2L51.9,30z M51.9,21.7l-8.1,4.2L35.7,30l-5.3,2.8L24.9,30l-8.4-4.1l-8.3-4.2l-8.4,4.2L8.2,30l8.3,4.2l13.9,6.9l13.4-6.9l8.1-4.2l8.1-4.1L51.9,21.7zM30.4,2.2L-0.2,17.5l8.4,4.1l8.3,4.2l8.4,4.2l5.5,2.7l5.3-2.7l8.1-4.2l8.1-4.2l8.1-4.1L30.4,2.2z"},title:t.getLocaleModel().get(["toolbox","magicType","title"]),option:{},seriesIndex:{}}},e.prototype.onclick=function(t,e,n){var i=this.model,r=i.get(["seriesIndex",n]);if($E[n]){var o,a={series:[]};E(qE,(function(t){P(t,n)>=0&&E(t,(function(t){i.setIconStatus(t,"normal")}))})),i.setIconStatus(n,"emphasis"),t.eachComponent({mainType:"series",query:null==r?null:{seriesIndex:r}},(function(t){var e=t.subType,r=t.id,o=$E[n](e,r,t,i);o&&(k(o,t.option),a.series.push(o));var s=t.coordinateSystem;if(s&&"cartesian2d"===s.type&&("line"===n||"bar"===n)){var l=s.getAxesByScale("ordinal")[0];if(l){var u=l.dim+"Axis",h=t.getReferringComponents(u,Co).models[0].componentIndex;a[u]=a[u]||[];for(var c=0;c<=h;c++)a[u][h]=a[u][h]||{};a[u][h].boundaryGap="bar"===n}}}));var s=n;"stack"===n&&(o=C({stack:i.option.title.tiled,tiled:i.option.title.stack},i.option.title),"emphasis"!==i.get(["iconStatus",n])&&(s="tiled")),e.dispatchAction({type:"changeMagicType",currentType:s,newOption:a,newTitle:o,featureName:"magicType"})}},e}(FE),$E={line:function(t,e,n,i){if("bar"===t)return C({id:e,type:"line",data:n.get("data"),stack:n.get("stack"),markPoint:n.get("markPoint"),markLine:n.get("markLine")},i.get(["option","line"])||{},!0)},bar:function(t,e,n,i){if("line"===t)return C({id:e,type:"bar",data:n.get("data"),stack:n.get("stack"),markPoint:n.get("markPoint"),markLine:n.get("markLine")},i.get(["option","bar"])||{},!0)},stack:function(t,e,n,i){var r=n.get("stack")===jE;if("line"===t||"bar"===t)return i.setIconStatus("stack",r?"normal":"emphasis"),C({id:e,stack:r?"":jE},i.get(["option","stack"])||{},!0)}};hm({type:"changeMagicType",event:"magicTypeChanged",update:"prepareAndUpdate"},(function(t,e){e.mergeOption(t.newOption)}));var JE=new Array(60).join("-"),QE="\t";function tz(t){return t.replace(/^\s\s*/,"").replace(/\s\s*$/,"")}var ez=new RegExp("[\t]+","g");function nz(t,e){var n=t.split(new RegExp("\n*"+JE+"\n*","g")),i={series:[]};return E(n,(function(t,n){if(function(t){if(t.slice(0,t.indexOf("\n")).indexOf(QE)>=0)return!0}(t)){var r=function(t){for(var e=t.split(/\n+/g),n=[],i=z(tz(e.shift()).split(ez),(function(t){return{name:t,data:[]}})),r=0;r<e.length;r++){var o=tz(e[r]).split(ez);n.push(o.shift());for(var a=0;a<o.length;a++)i[a]&&(i[a].data[r]=o[a])}return{series:i,categories:n}}(t),o=e[n],a=o.axisDim+"Axis";o&&(i[a]=i[a]||[],i[a][o.axisIndex]={data:r.categories},i.series=i.series.concat(r.series))}else{r=function(t){for(var e=t.split(/\n+/g),n=tz(e.shift()),i=[],r=0;r<e.length;r++){var o=tz(e[r]);if(o){var a=o.split(ez),s="",l=void 0,u=!1;isNaN(a[0])?(u=!0,s=a[0],a=a.slice(1),i[r]={name:s,value:[]},l=i[r].value):l=i[r]=[];for(var h=0;h<a.length;h++)l.push(+a[h]);1===l.length&&(u?i[r].value=l[0]:i[r]=l[0])}}return{name:n,data:i}}(t);i.series.push(r)}})),i}var iz=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.onclick=function(t,e){setTimeout((function(){e.dispatchAction({type:"hideTip"})}));var n=e.getDom(),i=this.model;this._dom&&n.removeChild(this._dom);var r=document.createElement("div");r.style.cssText="position:absolute;top:0;bottom:0;left:0;right:0;padding:5px",r.style.backgroundColor=i.get("backgroundColor")||"#fff";var o=document.createElement("h4"),a=i.get("lang")||[];o.innerHTML=a[0]||i.get("title"),o.style.cssText="margin:10px 20px",o.style.color=i.get("textColor");var s=document.createElement("div"),l=document.createElement("textarea");s.style.cssText="overflow:auto";var u=i.get("optionToContent"),h=i.get("contentToOption"),c=function(t){var e,n,i,r=function(t){var e={},n=[],i=[];return t.eachRawSeries((function(t){var r=t.coordinateSystem;if(!r||"cartesian2d"!==r.type&&"polar"!==r.type)n.push(t);else{var o=r.getBaseAxis();if("category"===o.type){var a=o.dim+"_"+o.index;e[a]||(e[a]={categoryAxis:o,valueAxis:r.getOtherAxis(o),series:[]},i.push({axisDim:o.dim,axisIndex:o.index})),e[a].series.push(t)}else n.push(t)}})),{seriesGroupByCategoryAxis:e,other:n,meta:i}}(t);return{value:B([(n=r.seriesGroupByCategoryAxis,i=[],E(n,(function(t,e){var n=t.categoryAxis,r=t.valueAxis.dim,o=[" "].concat(z(t.series,(function(t){return t.name}))),a=[n.model.getCategories()];E(t.series,(function(t){var e=t.getRawData();a.push(t.getRawData().mapArray(e.mapDimension(r),(function(t){return t})))}));for(var s=[o.join(QE)],l=0;l<a[0].length;l++){for(var u=[],h=0;h<a.length;h++)u.push(a[h][l]);s.push(u.join(QE))}i.push(s.join("\n"))})),i.join("\n\n"+JE+"\n\n")),(e=r.other,z(e,(function(t){var e=t.getRawData(),n=[t.name],i=[];return e.each(e.dimensions,(function(){for(var t=arguments.length,r=arguments[t-1],o=e.getName(r),a=0;a<t-1;a++)i[a]=arguments[a];n.push((o?o+QE:"")+i.join(QE))})),n.join("\n")})).join("\n\n"+JE+"\n\n"))],(function(t){return!!t.replace(/[\n\t\s]/g,"")})).join("\n\n"+JE+"\n\n"),meta:r.meta}}(t);if(U(u)){var p=u(e.getOption());X(p)?s.innerHTML=p:J(p)&&s.appendChild(p)}else{l.readOnly=i.get("readOnly");var d=l.style;d.cssText="display:block;width:100%;height:100%;font-family:monospace;font-size:14px;line-height:1.6rem;resize:none;box-sizing:border-box;outline:none",d.color=i.get("textColor"),d.borderColor=i.get("textareaBorderColor"),d.backgroundColor=i.get("textareaColor"),l.value=c.value,s.appendChild(l)}var f=c.meta,g=document.createElement("div");g.style.cssText="position:absolute;bottom:5px;left:0;right:0";var y="float:right;margin-right:20px;border:none;cursor:pointer;padding:2px 5px;font-size:12px;border-radius:3px",v=document.createElement("div"),m=document.createElement("div");y+=";background-color:"+i.get("buttonColor"),y+=";color:"+i.get("buttonTextColor");var x=this;function _(){n.removeChild(r),x._dom=null}ae(v,"click",_),ae(m,"click",(function(){if(null==h&&null!=u||null!=h&&null==u)_();else{var t;try{t=U(h)?h(s,e.getOption()):nz(l.value,f)}catch(t){throw _(),new Error("Data view format error "+t)}t&&e.dispatchAction({type:"changeDataView",newOption:t}),_()}})),v.innerHTML=a[1],m.innerHTML=a[2],m.style.cssText=v.style.cssText=y,!i.get("readOnly")&&g.appendChild(m),g.appendChild(v),r.appendChild(o),r.appendChild(s),r.appendChild(g),s.style.height=n.clientHeight-80+"px",n.appendChild(r),this._dom=r},e.prototype.remove=function(t,e){this._dom&&e.getDom().removeChild(this._dom)},e.prototype.dispose=function(t,e){this.remove(t,e)},e.getDefaultOption=function(t){return{show:!0,readOnly:!1,optionToContent:null,contentToOption:null,icon:"M17.5,17.3H33 M17.5,17.3H33 M45.4,29.5h-28 M11.5,2v56H51V14.8L38.4,2H11.5z M38.4,2.2v12.7H51 M45.4,41.7h-28",title:t.getLocaleModel().get(["toolbox","dataView","title"]),lang:t.getLocaleModel().get(["toolbox","dataView","lang"]),backgroundColor:"#fff",textColor:"#000",textareaColor:"#fff",textareaBorderColor:"#333",buttonColor:"#c23531",buttonTextColor:"#fff"}},e}(FE);function rz(t,e){return z(t,(function(t,n){var i=e&&e[n];if(q(i)&&!Y(i)){q(t)&&!Y(t)||(t={value:t});var r=null!=i.name&&null==t.name;return t=k(t,i),r&&delete t.name,t}return t}))}hm({type:"changeDataView",event:"dataViewChanged",update:"prepareAndUpdate"},(function(t,e){var n=[];E(t.newOption.series,(function(t){var i=e.getSeriesByName(t.name)[0];if(i){var r=i.get("data");n.push({name:t.name,data:rz(t.data,r)})}else n.push(A({type:"scatter"},t))})),e.mergeOption(k({series:n},t.newOption))}));var oz=E,az=So();function sz(t){var e=az(t);return e.snapshots||(e.snapshots=[{}]),e.snapshots}var lz=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.onclick=function(t,e){!function(t){az(t).snapshots=null}(t),e.dispatchAction({type:"restore",from:this.uid})},e.getDefaultOption=function(t){return{show:!0,icon:"M3.8,33.4 M47,18.9h9.8V8.7 M56.3,20.1 C52.1,9,40.5,0.6,26.8,2.1C12.6,3.7,1.6,16.2,2.1,30.6 M13,41.1H3.1v10.2 M3.7,39.9c4.2,11.1,15.8,19.5,29.5,18 c14.2-1.6,25.2-14.1,24.7-28.5",title:t.getLocaleModel().get(["toolbox","restore","title"])}},e}(FE);hm({type:"restore",event:"restore",update:"prepareAndUpdate"},(function(t,e){e.resetOption("recreate")}));var uz=["grid","xAxis","yAxis","geo","graph","polar","radiusAxis","angleAxis","bmap"],hz=function(){function t(t,e,n){var i=this;this._targetInfoList=[];var r=pz(e,t);E(dz,(function(t,e){(!n||!n.include||P(n.include,e)>=0)&&t(r,i._targetInfoList)}))}return t.prototype.setOutputRanges=function(t,e){return this.matchOutputRanges(t,e,(function(t,e,n){if((t.coordRanges||(t.coordRanges=[])).push(e),!t.coordRange){t.coordRange=e;var i=yz[t.brushType](0,n,e);t.__rangeOffset={offset:mz[t.brushType](i.values,t.range,[1,1]),xyMinMax:i.xyMinMax}}})),t},t.prototype.matchOutputRanges=function(t,e,n){E(t,(function(t){var i=this.findTargetInfo(t,e);i&&!0!==i&&E(i.coordSyses,(function(i){var r=yz[t.brushType](1,i,t.range,!0);n(t,r.values,i,e)}))}),this)},t.prototype.setInputRanges=function(t,e){E(t,(function(t){var n,i,r,o,a,s=this.findTargetInfo(t,e);if(t.range=t.range||[],s&&!0!==s){t.panelId=s.panelId;var l=yz[t.brushType](0,s.coordSys,t.coordRange),u=t.__rangeOffset;t.range=u?mz[t.brushType](l.values,u.offset,(n=l.xyMinMax,i=u.xyMinMax,r=_z(n),o=_z(i),a=[r[0]/o[0],r[1]/o[1]],isNaN(a[0])&&(a[0]=1),isNaN(a[1])&&(a[1]=1),a)):l.values}}),this)},t.prototype.makePanelOpts=function(t,e){return z(this._targetInfoList,(function(n){var i=n.getPanelRect();return{panelId:n.panelId,defaultBrushType:e?e(n):null,clipPath:uL(i),isTargetByCursor:cL(i,t,n.coordSysModel),getLinearBrushOtherExtent:hL(i)}}))},t.prototype.controlSeries=function(t,e,n){var i=this.findTargetInfo(t,n);return!0===i||i&&P(i.coordSyses,e.coordinateSystem)>=0},t.prototype.findTargetInfo=function(t,e){for(var n=this._targetInfoList,i=pz(e,t),r=0;r<n.length;r++){var o=n[r],a=t.panelId;if(a){if(o.panelId===a)return o}else for(var s=0;s<fz.length;s++)if(fz[s](i,o))return o}return!0},t}();function cz(t){return t[0]>t[1]&&t.reverse(),t}function pz(t,e){return Io(t,e,{includeMainTypes:uz})}var dz={grid:function(t,e){var n=t.xAxisModels,i=t.yAxisModels,r=t.gridModels,o=ft(),a={},s={};(n||i||r)&&(E(n,(function(t){var e=t.axis.grid.model;o.set(e.id,e),a[e.id]=!0})),E(i,(function(t){var e=t.axis.grid.model;o.set(e.id,e),s[e.id]=!0})),E(r,(function(t){o.set(t.id,t),a[t.id]=!0,s[t.id]=!0})),o.each((function(t){var r=t.coordinateSystem,o=[];E(r.getCartesians(),(function(t,e){(P(n,t.getAxis("x").model)>=0||P(i,t.getAxis("y").model)>=0)&&o.push(t)})),e.push({panelId:"grid--"+t.id,gridModel:t,coordSysModel:t,coordSys:o[0],coordSyses:o,getPanelRect:gz.grid,xAxisDeclared:a[t.id],yAxisDeclared:s[t.id]})})))},geo:function(t,e){E(t.geoModels,(function(t){var n=t.coordinateSystem;e.push({panelId:"geo--"+t.id,geoModel:t,coordSysModel:t,coordSys:n,coordSyses:[n],getPanelRect:gz.geo})}))}},fz=[function(t,e){var n=t.xAxisModel,i=t.yAxisModel,r=t.gridModel;return!r&&n&&(r=n.axis.grid.model),!r&&i&&(r=i.axis.grid.model),r&&r===e.gridModel},function(t,e){var n=t.geoModel;return n&&n===e.geoModel}],gz={grid:function(){return this.coordSys.master.getRect().clone()},geo:function(){var t=this.coordSys,e=t.getBoundingRect().clone();return e.applyTransform(Ih(t)),e}},yz={lineX:H(vz,0),lineY:H(vz,1),rect:function(t,e,n,i){var r=t?e.pointToData([n[0][0],n[1][0]],i):e.dataToPoint([n[0][0],n[1][0]],i),o=t?e.pointToData([n[0][1],n[1][1]],i):e.dataToPoint([n[0][1],n[1][1]],i),a=[cz([r[0],o[0]]),cz([r[1],o[1]])];return{values:a,xyMinMax:a}},polygon:function(t,e,n,i){var r=[[1/0,-1/0],[1/0,-1/0]];return{values:z(n,(function(n){var o=t?e.pointToData(n,i):e.dataToPoint(n,i);return r[0][0]=Math.min(r[0][0],o[0]),r[1][0]=Math.min(r[1][0],o[1]),r[0][1]=Math.max(r[0][1],o[0]),r[1][1]=Math.max(r[1][1],o[1]),o})),xyMinMax:r}}};function vz(t,e,n,i){var r=n.getAxis(["x","y"][t]),o=cz(z([0,1],(function(t){return e?r.coordToData(r.toLocalCoord(i[t]),!0):r.toGlobalCoord(r.dataToCoord(i[t]))}))),a=[];return a[t]=o,a[1-t]=[NaN,NaN],{values:o,xyMinMax:a}}var mz={lineX:H(xz,0),lineY:H(xz,1),rect:function(t,e,n){return[[t[0][0]-n[0]*e[0][0],t[0][1]-n[0]*e[0][1]],[t[1][0]-n[1]*e[1][0],t[1][1]-n[1]*e[1][1]]]},polygon:function(t,e,n){return z(t,(function(t,i){return[t[0]-n[0]*e[i][0],t[1]-n[1]*e[i][1]]}))}};function xz(t,e,n,i){return[e[0]-i[t]*n[0],e[1]-i[t]*n[1]]}function _z(t){return t?[t[0][1]-t[0][0],t[1][1]-t[1][0]]:[NaN,NaN]}var bz,wz,Sz=E,Mz=uo+"toolbox-dataZoom_",Iz=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.render=function(t,e,n,i){this._brushController||(this._brushController=new Pk(n.getZr()),this._brushController.on("brush",W(this._onBrush,this)).mount()),function(t,e,n,i,r){var o=n._isZoomActive;i&&"takeGlobalCursor"===i.type&&(o="dataZoomSelect"===i.key&&i.dataZoomSelectActive);n._isZoomActive=o,t.setIconStatus("zoom",o?"emphasis":"normal");var a=new hz(Cz(t),e,{include:["grid"]}).makePanelOpts(r,(function(t){return t.xAxisDeclared&&!t.yAxisDeclared?"lineX":!t.xAxisDeclared&&t.yAxisDeclared?"lineY":"rect"}));n._brushController.setPanels(a).enableBrush(!(!o||!a.length)&&{brushType:"auto",brushStyle:t.getModel("brushStyle").getItemStyle()})}(t,e,this,i,n),function(t,e){t.setIconStatus("back",function(t){return sz(t).length}(e)>1?"emphasis":"normal")}(t,e)},e.prototype.onclick=function(t,e,n){Tz[n].call(this)},e.prototype.remove=function(t,e){this._brushController&&this._brushController.unmount()},e.prototype.dispose=function(t,e){this._brushController&&this._brushController.dispose()},e.prototype._onBrush=function(t){var e=t.areas;if(t.isEnd&&e.length){var n={},i=this.ecModel;this._brushController.updateCovers([]),new hz(Cz(this.model),i,{include:["grid"]}).matchOutputRanges(e,i,(function(t,e,n){if("cartesian2d"===n.type){var i=t.brushType;"rect"===i?(r("x",n,e[0]),r("y",n,e[1])):r({lineX:"x",lineY:"y"}[i],n,e)}})),function(t,e){var n=sz(t);oz(e,(function(e,i){for(var r=n.length-1;r>=0&&!n[r][i];r--);if(r<0){var o=t.queryComponents({mainType:"dataZoom",subType:"select",id:i})[0];if(o){var a=o.getPercentRange();n[0][i]={dataZoomId:i,start:a[0],end:a[1]}}}})),n.push(e)}(i,n),this._dispatchZoomAction(n)}function r(t,e,r){var o=e.getAxis(t),a=o.model,s=function(t,e,n){var i;return n.eachComponent({mainType:"dataZoom",subType:"select"},(function(n){n.getAxisModel(t,e.componentIndex)&&(i=n)})),i}(t,a,i),l=s.findRepresentativeAxisProxy(a).getMinMaxSpan();null==l.minValueSpan&&null==l.maxValueSpan||(r=sk(0,r.slice(),o.scale.getExtent(),0,l.minValueSpan,l.maxValueSpan)),s&&(n[s.id]={dataZoomId:s.id,startValue:r[0],endValue:r[1]})}},e.prototype._dispatchZoomAction=function(t){var e=[];Sz(t,(function(t,n){e.push(T(t))})),e.length&&this.api.dispatchAction({type:"dataZoom",from:this.uid,batch:e})},e.getDefaultOption=function(t){return{show:!0,filterMode:"filter",icon:{zoom:"M0,13.5h26.9 M13.5,26.9V0 M32.1,13.5H58V58H13.5 V32.1",back:"M22,1.4L9.9,13.5l12.3,12.3 M10.3,13.5H54.9v44.6 H10.3v-26"},title:t.getLocaleModel().get(["toolbox","dataZoom","title"]),brushStyle:{borderWidth:0,color:"rgba(210,219,238,0.2)"}}},e}(FE),Tz={zoom:function(){var t=!this._isZoomActive;this.api.dispatchAction({type:"takeGlobalCursor",key:"dataZoomSelect",dataZoomSelectActive:t})},back:function(){this._dispatchZoomAction(function(t){var e=sz(t),n=e[e.length-1];e.length>1&&e.pop();var i={};return oz(n,(function(t,n){for(var r=e.length-1;r>=0;r--)if(t=e[r][n]){i[n]=t;break}})),i}(this.ecModel))}};function Cz(t){var e={xAxisIndex:t.get("xAxisIndex",!0),yAxisIndex:t.get("yAxisIndex",!0),xAxisId:t.get("xAxisId",!0),yAxisId:t.get("yAxisId",!0)};return null==e.xAxisIndex&&null==e.xAxisId&&(e.xAxisIndex="all"),null==e.yAxisIndex&&null==e.yAxisId&&(e.yAxisIndex="all"),e}bz="dataZoom",wz=function(t){var e=t.getComponent("toolbox",0),n=["feature","dataZoom"];if(e&&null!=e.get(n)){var i=e.getModel(n),r=[],o=Io(t,Cz(i));return Sz(o.xAxisModels,(function(t){return a(t,"xAxis","xAxisIndex")})),Sz(o.yAxisModels,(function(t){return a(t,"yAxis","yAxisIndex")})),r}function a(t,e,n){var o=t.componentIndex,a={type:"select",$fromToolbox:!0,filterMode:i.get("filterMode",!0)||"filter",id:Mz+e+o};a[n]=o,r.push(a)}},lt(null==jp.get(bz)&&wz),jp.set(bz,wz);var Dz=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="tooltip",e.dependencies=["axisPointer"],e.defaultOption={z:60,show:!0,showContent:!0,trigger:"item",triggerOn:"mousemove|click",alwaysShowContent:!1,displayMode:"single",renderMode:"auto",confine:null,showDelay:0,hideDelay:100,transitionDuration:.4,enterable:!1,backgroundColor:"#fff",shadowBlur:10,shadowColor:"rgba(0, 0, 0, .2)",shadowOffsetX:1,shadowOffsetY:2,borderRadius:4,borderWidth:1,padding:null,extraCssText:"",axisPointer:{type:"line",axis:"auto",animation:"auto",animationDurationUpdate:200,animationEasingUpdate:"exponentialOut",crossStyle:{color:"#999",width:1,type:"dashed",textStyle:{}}},textStyle:{color:"#666",fontSize:14}},e}(Tp);function Az(t){var e=t.get("confine");return null!=e?!!e:"richText"===t.get("renderMode")}function kz(t){if(r.domSupported)for(var e=document.documentElement.style,n=0,i=t.length;n<i;n++)if(t[n]in e)return t[n]}var Lz=kz(["transform","webkitTransform","OTransform","MozTransform","msTransform"]);function Pz(t,e){if(!t)return e;e=np(e,!0);var n=t.indexOf(e);return(t=-1===n?e:"-"+t.slice(0,n)+"-"+e).toLowerCase()}var Oz=Pz(kz(["webkitTransition","transition","OTransition","MozTransition","msTransition"]),"transition"),Rz=Pz(Lz,"transform"),Nz="position:absolute;display:block;border-style:solid;white-space:nowrap;z-index:9999999;"+(r.transform3dSupported?"will-change:transform;":"");function Ez(t,e,n){var i=t.toFixed(0)+"px",o=e.toFixed(0)+"px";if(!r.transformSupported)return n?"top:"+o+";left:"+i+";":[["top",o],["left",i]];var a=r.transform3dSupported,s="translate"+(a?"3d":"")+"("+i+","+o+(a?",0":"")+")";return n?"top:0;left:0;"+Rz+":"+s+";":[["top",0],["left",0],[Lz,s]]}function zz(t,e,n){var i=[],o=t.get("transitionDuration"),a=t.get("backgroundColor"),s=t.get("shadowBlur"),l=t.get("shadowColor"),u=t.get("shadowOffsetX"),h=t.get("shadowOffsetY"),c=t.getModel("textStyle"),p=ng(t,"html"),d=u+"px "+h+"px "+s+"px "+l;return i.push("box-shadow:"+d),e&&o&&i.push(function(t,e){var n="cubic-bezier(0.23,1,0.32,1)",i=" "+t/2+"s "+n,o="opacity"+i+",visibility"+i;return e||(i=" "+t+"s "+n,o+=r.transformSupported?","+Rz+i:",left"+i+",top"+i),Oz+":"+o}(o,n)),a&&i.push("background-color:"+a),E(["width","color","radius"],(function(e){var n="border-"+e,r=np(n),o=t.get(r);null!=o&&i.push(n+":"+o+("color"===e?"":"px"))})),i.push(function(t){var e=[],n=t.get("fontSize"),i=t.getTextColor();i&&e.push("color:"+i),e.push("font:"+t.getFont()),n&&e.push("line-height:"+Math.round(3*n/2)+"px");var r=t.get("textShadowColor"),o=t.get("textShadowBlur")||0,a=t.get("textShadowOffsetX")||0,s=t.get("textShadowOffsetY")||0;return r&&o&&e.push("text-shadow:"+a+"px "+s+"px "+o+"px "+r),E(["decoration","align"],(function(n){var i=t.get(n);i&&e.push("text-"+n+":"+i)})),e.join(";")}(c)),null!=p&&i.push("padding:"+ip(p).join("px ")+"px"),i.join(";")+";"}function Vz(t,e,n,i,r){var o=e&&e.painter;if(n){var a=o&&o.getViewportRoot();a&&function(t,e,n,i,r){$t(Kt,e,i,r,!0)&&$t(t,n,Kt[0],Kt[1])}(t,a,document.body,i,r)}else{t[0]=i,t[1]=r;var s=o&&o.getViewportRootOffset();s&&(t[0]+=s.offsetLeft,t[1]+=s.offsetTop)}t[2]=t[0]/e.getWidth(),t[3]=t[1]/e.getHeight()}var Bz=function(){function t(t,e,n){if(this._show=!1,this._styleCoord=[0,0,0,0],this._enterable=!0,this._firstShow=!0,this._longHide=!0,r.wxa)return null;var i=document.createElement("div");i.domBelongToZr=!0,this.el=i;var o=this._zr=e.getZr(),a=this._appendToBody=n&&n.appendToBody;Vz(this._styleCoord,o,a,e.getWidth()/2,e.getHeight()/2),a?document.body.appendChild(i):t.appendChild(i),this._container=t;var s=this;i.onmouseenter=function(){s._enterable&&(clearTimeout(s._hideTimeout),s._show=!0),s._inContent=!0},i.onmousemove=function(t){if(t=t||window.event,!s._enterable){var e=o.handler;oe(o.painter.getViewportRoot(),t,!0),e.dispatch("mousemove",t)}},i.onmouseleave=function(){s._inContent=!1,s._enterable&&s._show&&s.hideLater(s._hideDelay)}}return t.prototype.update=function(t){var e,n,i,r=this._container,o=(n="position",(i=(e=r).currentStyle||document.defaultView&&document.defaultView.getComputedStyle(e))?n?i[n]:i:null),a=r.style;"absolute"!==a.position&&"absolute"!==o&&(a.position="relative"),t.get("alwaysShowContent")&&this._moveIfResized(),this.el.className=t.get("className")||""},t.prototype.show=function(t,e){clearTimeout(this._hideTimeout),clearTimeout(this._longHideTimeout);var n=this.el,i=n.style,r=this._styleCoord;n.innerHTML?i.cssText=Nz+zz(t,!this._firstShow,this._longHide)+Ez(r[0],r[1],!0)+"border-color:"+pp(e)+";"+(t.get("extraCssText")||"")+";pointer-events:"+(this._enterable?"auto":"none"):i.display="none",this._show=!0,this._firstShow=!1,this._longHide=!1},t.prototype.setContent=function(t,e,n,i,r){var o=this.el;if(null!=t){var a="";if(X(r)&&"item"===n.get("trigger")&&!Az(n)&&(a=function(t,e,n){if(!X(n)||"inside"===n)return"";var i=t.get("backgroundColor"),r=t.get("borderWidth");e=pp(e);var o,a,s="left"===(o=n)?"right":"right"===o?"left":"top"===o?"bottom":"top",l=Math.max(1.5*Math.round(r),6),u="",h=Rz+":";P(["left","right"],s)>-1?(u+="top:50%",h+="translateY(-50%) rotate("+(a="left"===s?-225:-45)+"deg)"):(u+="left:50%",h+="translateX(-50%) rotate("+(a="top"===s?225:45)+"deg)");var c=a*Math.PI/180,p=l+r,d=p*Math.abs(Math.cos(c))+p*Math.abs(Math.sin(c)),f=e+" solid "+r+"px;";return'<div style="'+["position:absolute;width:"+l+"px;height:"+l+"px;",(u+=";"+s+":-"+Math.round(100*((d-Math.SQRT2*r)/2+Math.SQRT2*r-(d-p)/2))/100+"px")+";"+h+";","border-bottom:"+f,"border-right:"+f,"background-color:"+i+";"].join("")+'"></div>'}(n,i,r)),X(t))o.innerHTML=t+a;else if(t){o.innerHTML="",Y(t)||(t=[t]);for(var s=0;s<t.length;s++)J(t[s])&&t[s].parentNode!==o&&o.appendChild(t[s]);if(a&&o.childNodes.length){var l=document.createElement("div");l.innerHTML=a,o.appendChild(l)}}}else o.innerHTML=""},t.prototype.setEnterable=function(t){this._enterable=t},t.prototype.getSize=function(){var t=this.el;return[t.offsetWidth,t.offsetHeight]},t.prototype.moveTo=function(t,e){var n=this._styleCoord;if(Vz(n,this._zr,this._appendToBody,t,e),null!=n[0]&&null!=n[1]){var i=this.el.style;E(Ez(n[0],n[1]),(function(t){i[t[0]]=t[1]}))}},t.prototype._moveIfResized=function(){var t=this._styleCoord[2],e=this._styleCoord[3];this.moveTo(t*this._zr.getWidth(),e*this._zr.getHeight())},t.prototype.hide=function(){var t=this,e=this.el.style;e.visibility="hidden",e.opacity="0",r.transform3dSupported&&(e.willChange=""),this._show=!1,this._longHideTimeout=setTimeout((function(){return t._longHide=!0}),500)},t.prototype.hideLater=function(t){!this._show||this._inContent&&this._enterable||(t?(this._hideDelay=t,this._show=!1,this._hideTimeout=setTimeout(W(this.hide,this),t)):this.hide())},t.prototype.isShow=function(){return this._show},t.prototype.dispose=function(){this.el.parentNode.removeChild(this.el)},t}(),Fz=function(){function t(t){this._show=!1,this._styleCoord=[0,0,0,0],this._enterable=!0,this._zr=t.getZr(),Hz(this._styleCoord,this._zr,t.getWidth()/2,t.getHeight()/2)}return t.prototype.update=function(t){t.get("alwaysShowContent")&&this._moveIfResized()},t.prototype.show=function(){this._hideTimeout&&clearTimeout(this._hideTimeout),this.el.show(),this._show=!0},t.prototype.setContent=function(t,e,n,i,r){var o=this;q(t)&&ao(""),this.el&&this._zr.remove(this.el);var a=n.getModel("textStyle");this.el=new ks({style:{rich:e.richTextStyles,text:t,lineHeight:22,borderWidth:1,borderColor:i,textShadowColor:a.get("textShadowColor"),fill:n.get(["textStyle","color"]),padding:ng(n,"richText"),verticalAlign:"top",align:"left"},z:n.get("z")}),E(["backgroundColor","borderRadius","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY"],(function(t){o.el.style[t]=n.get(t)})),E(["textShadowBlur","textShadowOffsetX","textShadowOffsetY"],(function(t){o.el.style[t]=a.get(t)||0})),this._zr.add(this.el);var s=this;this.el.on("mouseover",(function(){s._enterable&&(clearTimeout(s._hideTimeout),s._show=!0),s._inContent=!0})),this.el.on("mouseout",(function(){s._enterable&&s._show&&s.hideLater(s._hideDelay),s._inContent=!1}))},t.prototype.setEnterable=function(t){this._enterable=t},t.prototype.getSize=function(){var t=this.el,e=this.el.getBoundingRect(),n=Wz(t.style);return[e.width+n.left+n.right,e.height+n.top+n.bottom]},t.prototype.moveTo=function(t,e){var n=this.el;if(n){var i=this._styleCoord;Hz(i,this._zr,t,e),t=i[0],e=i[1];var r=n.style,o=Gz(r.borderWidth||0),a=Wz(r);n.x=t+o+a.left,n.y=e+o+a.top,n.markRedraw()}},t.prototype._moveIfResized=function(){var t=this._styleCoord[2],e=this._styleCoord[3];this.moveTo(t*this._zr.getWidth(),e*this._zr.getHeight())},t.prototype.hide=function(){this.el&&this.el.hide(),this._show=!1},t.prototype.hideLater=function(t){!this._show||this._inContent&&this._enterable||(t?(this._hideDelay=t,this._show=!1,this._hideTimeout=setTimeout(W(this.hide,this),t)):this.hide())},t.prototype.isShow=function(){return this._show},t.prototype.dispose=function(){this._zr.remove(this.el)},t}();function Gz(t){return Math.max(0,t)}function Wz(t){var e=Gz(t.shadowBlur||0),n=Gz(t.shadowOffsetX||0),i=Gz(t.shadowOffsetY||0);return{left:Gz(e-n),right:Gz(e+n),top:Gz(e-i),bottom:Gz(e+i)}}function Hz(t,e,n,i){t[0]=n,t[1]=i,t[2]=t[0]/e.getWidth(),t[3]=t[1]/e.getHeight()}var Yz=new Cs({shape:{x:-1,y:-1,width:2,height:2}}),Uz=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.init=function(t,e){if(!r.node&&e.getDom()){var n,i=t.getComponent("tooltip"),o=this._renderMode="auto"===(n=i.get("renderMode"))?r.domSupported?"html":"richText":n||"html";this._tooltipContent="richText"===o?new Fz(e):new Bz(e.getDom(),e,{appendToBody:i.get("appendToBody",!0)})}},e.prototype.render=function(t,e,n){if(!r.node&&n.getDom()){this.group.removeAll(),this._tooltipModel=t,this._ecModel=e,this._api=n,this._alwaysShowContent=t.get("alwaysShowContent");var i=this._tooltipContent;i.update(t),i.setEnterable(t.get("enterable")),this._initGlobalListener(),this._keepShow(),"richText"!==this._renderMode&&t.get("transitionDuration")?Ag(this,"_updatePosition",50,"fixRate"):kg(this,"_updatePosition")}},e.prototype._initGlobalListener=function(){var t=this._tooltipModel.get("triggerOn");qR("itemTooltip",this._api,W((function(e,n,i){"none"!==t&&(t.indexOf(e)>=0?this._tryShow(n,i):"leave"===e&&this._hide(i))}),this))},e.prototype._keepShow=function(){var t=this._tooltipModel,e=this._ecModel,n=this._api;if(null!=this._lastX&&null!=this._lastY&&"none"!==t.get("triggerOn")){var i=this;clearTimeout(this._refreshUpdateTimeout),this._refreshUpdateTimeout=setTimeout((function(){!n.isDisposed()&&i.manuallyShowTip(t,e,n,{x:i._lastX,y:i._lastY,dataByCoordSys:i._lastDataByCoordSys})}))}},e.prototype.manuallyShowTip=function(t,e,n,i){if(i.from!==this.uid&&!r.node&&n.getDom()){var o=Zz(i,n);this._ticket="";var a=i.dataByCoordSys,s=function(t,e,n){var i=To(t).queryOptionMap,r=i.keys()[0];if(!r||"series"===r)return;var o,a=Ao(e,r,i.get(r),{useDefault:!1,enableAll:!1,enableNone:!1}).models[0];if(!a)return;if(n.getViewOfComponentModel(a).group.traverse((function(e){var n=Hs(e).tooltipConfig;if(n&&n.name===t.name)return o=e,!0})),o)return{componentMainType:r,componentIndex:a.componentIndex,el:o}}(i,e,n);if(s){var l=s.el.getBoundingRect().clone();l.applyTransform(s.el.transform),this._tryShow({offsetX:l.x+l.width/2,offsetY:l.y+l.height/2,target:s.el,position:i.position,positionDefault:"bottom"},o)}else if(i.tooltip&&null!=i.x&&null!=i.y){var u=Yz;u.x=i.x,u.y=i.y,u.update(),Hs(u).tooltipConfig={name:null,option:i.tooltip},this._tryShow({offsetX:i.x,offsetY:i.y,target:u},o)}else if(a)this._tryShow({offsetX:i.x,offsetY:i.y,position:i.position,dataByCoordSys:a,tooltipOption:i.tooltipOption},o);else if(null!=i.seriesIndex){if(this._manuallyAxisShowTip(t,e,n,i))return;var h=tN(i,e),c=h.point[0],p=h.point[1];null!=c&&null!=p&&this._tryShow({offsetX:c,offsetY:p,target:h.el,position:i.position,positionDefault:"bottom"},o)}else null!=i.x&&null!=i.y&&(n.dispatchAction({type:"updateAxisPointer",x:i.x,y:i.y}),this._tryShow({offsetX:i.x,offsetY:i.y,position:i.position,target:n.getZr().findHover(i.x,i.y).target},o))}},e.prototype.manuallyHideTip=function(t,e,n,i){var r=this._tooltipContent;!this._alwaysShowContent&&this._tooltipModel&&r.hideLater(this._tooltipModel.get("hideDelay")),this._lastX=this._lastY=this._lastDataByCoordSys=null,i.from!==this.uid&&this._hide(Zz(i,n))},e.prototype._manuallyAxisShowTip=function(t,e,n,i){var r=i.seriesIndex,o=i.dataIndex,a=e.getComponent("axisPointer").coordSysAxesInfo;if(null!=r&&null!=o&&null!=a){var s=e.getSeriesByIndex(r);if(s)if("axis"===Xz([s.getData().getItemModel(o),s,(s.coordinateSystem||{}).model],this._tooltipModel).get("trigger"))return n.dispatchAction({type:"updateAxisPointer",seriesIndex:r,dataIndex:o,position:i.position}),!0}},e.prototype._tryShow=function(t,e){var n=t.target;if(this._tooltipModel){this._lastX=t.offsetX,this._lastY=t.offsetY;var i=t.dataByCoordSys;if(i&&i.length)this._showAxisTooltip(i,t);else if(n){var r,o;this._lastDataByCoordSys=null,xy(n,(function(t){return null!=Hs(t).dataIndex?(r=t,!0):null!=Hs(t).tooltipConfig?(o=t,!0):void 0}),!0),r?this._showSeriesItemTooltip(t,r,e):o?this._showComponentItemTooltip(t,o,e):this._hide(e)}else this._lastDataByCoordSys=null,this._hide(e)}},e.prototype._showOrMove=function(t,e){var n=t.get("showDelay");e=W(e,this),clearTimeout(this._showTimout),n>0?this._showTimout=setTimeout(e,n):e()},e.prototype._showAxisTooltip=function(t,e){var n=this._ecModel,i=this._tooltipModel,r=[e.offsetX,e.offsetY],o=Xz([e.tooltipOption],i),a=this._renderMode,s=[],l=Xf("section",{blocks:[],noHeader:!0}),u=[],h=new ig;E(t,(function(t){E(t.dataByAxis,(function(t){var e=n.getComponent(t.axisDim+"Axis",t.axisIndex),r=t.value;if(e&&null!=r){var o=ER(r,e.axis,n,t.seriesDataIndices,t.valueLabelOpt),c=Xf("section",{header:o,noHeader:!ut(o),sortBlocks:!0,blocks:[]});l.blocks.push(c),E(t.seriesDataIndices,(function(l){var p=n.getSeriesByIndex(l.seriesIndex),d=l.dataIndexInside,f=p.getDataParams(d);if(!(f.dataIndex<0)){f.axisDim=t.axisDim,f.axisIndex=t.axisIndex,f.axisType=t.axisType,f.axisId=t.axisId,f.axisValue=a_(e.axis,{value:r}),f.axisValueLabel=o,f.marker=h.makeTooltipMarker("item",pp(f.color),a);var g=uf(p.formatTooltip(d,!0,null)),y=g.frag;if(y){var v=Xz([p],i).get("valueFormatter");c.blocks.push(v?A({valueFormatter:v},y):y)}g.text&&u.push(g.text),s.push(f)}}))}}))})),l.blocks.reverse(),u.reverse();var c=e.position,p=o.get("order"),d=Jf(l,h,a,p,n.get("useUTC"),o.get("textStyle"));d&&u.unshift(d);var f="richText"===a?"\n\n":"<br/>",g=u.join(f);this._showOrMove(o,(function(){this._updateContentNotChangedOnAxis(t,s)?this._updatePosition(o,c,r[0],r[1],this._tooltipContent,s):this._showTooltipContent(o,g,s,Math.random()+"",r[0],r[1],c,null,h)}))},e.prototype._showSeriesItemTooltip=function(t,e,n){var i=this._ecModel,r=Hs(e),o=r.seriesIndex,a=i.getSeriesByIndex(o),s=r.dataModel||a,l=r.dataIndex,u=r.dataType,h=s.getData(u),c=this._renderMode,p=t.positionDefault,d=Xz([h.getItemModel(l),s,a&&(a.coordinateSystem||{}).model],this._tooltipModel,p?{position:p}:null),f=d.get("trigger");if(null==f||"item"===f){var g=s.getDataParams(l,u),y=new ig;g.marker=y.makeTooltipMarker("item",pp(g.color),c);var v=uf(s.formatTooltip(l,!1,u)),m=d.get("order"),x=d.get("valueFormatter"),_=v.frag,b=_?Jf(x?A({valueFormatter:x},_):_,y,c,m,i.get("useUTC"),d.get("textStyle")):v.text,w="item_"+s.name+"_"+l;this._showOrMove(d,(function(){this._showTooltipContent(d,b,g,w,t.offsetX,t.offsetY,t.position,t.target,y)})),n({type:"showTip",dataIndexInside:l,dataIndex:h.getRawIndex(l),seriesIndex:o,from:this.uid})}},e.prototype._showComponentItemTooltip=function(t,e,n){var i=Hs(e),r=i.tooltipConfig.option||{};if(X(r)){r={content:r,formatter:r}}var o=[r],a=this._ecModel.getComponent(i.componentMainType,i.componentIndex);a&&o.push(a),o.push({formatter:r.content});var s=t.positionDefault,l=Xz(o,this._tooltipModel,s?{position:s}:null),u=l.get("content"),h=Math.random()+"",c=new ig;this._showOrMove(l,(function(){var n=T(l.get("formatterParams")||{});this._showTooltipContent(l,u,n,h,t.offsetX,t.offsetY,t.position,e,c)})),n({type:"showTip",from:this.uid})},e.prototype._showTooltipContent=function(t,e,n,i,r,o,a,s,l){if(this._ticket="",t.get("showContent")&&t.get("show")){var u=this._tooltipContent;u.setEnterable(t.get("enterable"));var h=t.get("formatter");a=a||t.get("position");var c=e,p=this._getNearestPoint([r,o],n,t.get("trigger"),t.get("borderColor")).color;if(h)if(X(h)){var d=t.ecModel.get("useUTC"),f=Y(n)?n[0]:n;c=h,f&&f.axisType&&f.axisType.indexOf("time")>=0&&(c=Vc(f.axisValue,c,d)),c=hp(c,n,!0)}else if(U(h)){var g=W((function(e,i){e===this._ticket&&(u.setContent(i,l,t,p,a),this._updatePosition(t,a,r,o,u,n,s))}),this);this._ticket=i,c=h(n,i,g)}else c=h;u.setContent(c,l,t,p,a),u.show(t,p),this._updatePosition(t,a,r,o,u,n,s)}},e.prototype._getNearestPoint=function(t,e,n,i){return"axis"===n||Y(e)?{color:i||("html"===this._renderMode?"#fff":"none")}:Y(e)?void 0:{color:i||e.color||e.borderColor}},e.prototype._updatePosition=function(t,e,n,i,r,o,a){var s=this._api.getWidth(),l=this._api.getHeight();e=e||t.get("position");var u=r.getSize(),h=t.get("align"),c=t.get("verticalAlign"),p=a&&a.getBoundingRect().clone();if(a&&p.applyTransform(a.transform),U(e)&&(e=e([n,i],o,r.el,p,{viewSize:[s,l],contentSize:u.slice()})),Y(e))n=Er(e[0],s),i=Er(e[1],l);else if(q(e)){var d=e;d.width=u[0],d.height=u[1];var f=xp(d,{width:s,height:l});n=f.x,i=f.y,h=null,c=null}else if(X(e)&&a){var g=function(t,e,n,i){var r=n[0],o=n[1],a=Math.ceil(Math.SQRT2*i)+8,s=0,l=0,u=e.width,h=e.height;switch(t){case"inside":s=e.x+u/2-r/2,l=e.y+h/2-o/2;break;case"top":s=e.x+u/2-r/2,l=e.y-o-a;break;case"bottom":s=e.x+u/2-r/2,l=e.y+h+a;break;case"left":s=e.x-r-a,l=e.y+h/2-o/2;break;case"right":s=e.x+u+a,l=e.y+h/2-o/2}return[s,l]}(e,p,u,t.get("borderWidth"));n=g[0],i=g[1]}else{g=function(t,e,n,i,r,o,a){var s=n.getSize(),l=s[0],u=s[1];null!=o&&(t+l+o+2>i?t-=l+o:t+=o);null!=a&&(e+u+a>r?e-=u+a:e+=a);return[t,e]}(n,i,r,s,l,h?null:20,c?null:20);n=g[0],i=g[1]}if(h&&(n-=jz(h)?u[0]/2:"right"===h?u[0]:0),c&&(i-=jz(c)?u[1]/2:"bottom"===c?u[1]:0),Az(t)){g=function(t,e,n,i,r){var o=n.getSize(),a=o[0],s=o[1];return t=Math.min(t+a,i)-a,e=Math.min(e+s,r)-s,t=Math.max(t,0),e=Math.max(e,0),[t,e]}(n,i,r,s,l);n=g[0],i=g[1]}r.moveTo(n,i)},e.prototype._updateContentNotChangedOnAxis=function(t,e){var n=this._lastDataByCoordSys,i=this._cbParamsList,r=!!n&&n.length===t.length;return r&&E(n,(function(n,o){var a=n.dataByAxis||[],s=(t[o]||{}).dataByAxis||[];(r=r&&a.length===s.length)&&E(a,(function(t,n){var o=s[n]||{},a=t.seriesDataIndices||[],l=o.seriesDataIndices||[];(r=r&&t.value===o.value&&t.axisType===o.axisType&&t.axisId===o.axisId&&a.length===l.length)&&E(a,(function(t,e){var n=l[e];r=r&&t.seriesIndex===n.seriesIndex&&t.dataIndex===n.dataIndex})),i&&E(t.seriesDataIndices,(function(t){var n=t.seriesIndex,o=e[n],a=i[n];o&&a&&a.data!==o.data&&(r=!1)}))}))})),this._lastDataByCoordSys=t,this._cbParamsList=e,!!r},e.prototype._hide=function(t){this._lastDataByCoordSys=null,t({type:"hideTip",from:this.uid})},e.prototype.dispose=function(t,e){!r.node&&e.getDom()&&(kg(this,"_updatePosition"),this._tooltipContent.dispose(),JR("itemTooltip",e))},e.type="tooltip",e}(gg);function Xz(t,e,n){var i,r=e.ecModel;n?(i=new dc(n,r,r),i=new dc(e.option,i,r)):i=e;for(var o=t.length-1;o>=0;o--){var a=t[o];a&&(a instanceof dc&&(a=a.get("tooltip",!0)),X(a)&&(a={formatter:a}),a&&(i=new dc(a,i,r)))}return i}function Zz(t,e){return t.dispatchAction||W(e.dispatchAction,e)}function jz(t){return"center"===t||"middle"===t}var qz=["rect","polygon","keep","clear"];function Kz(t,e){var n=ho(t?t.brush:[]);if(n.length){var i=[];E(n,(function(t){var e=t.hasOwnProperty("toolbox")?t.toolbox:[];e instanceof Array&&(i=i.concat(e))}));var r=t&&t.toolbox;Y(r)&&(r=r[0]),r||(r={feature:{}},t.toolbox=[r]);var o=r.feature||(r.feature={}),a=o.brush||(o.brush={}),s=a.type||(a.type=[]);s.push.apply(s,i),function(t){var e={};E(t,(function(t){e[t]=1})),t.length=0,E(e,(function(e,n){t.push(n)}))}(s),e&&!s.length&&s.push.apply(s,qz)}}var $z=E;function Jz(t){if(t)for(var e in t)if(t.hasOwnProperty(e))return!0}function Qz(t,e,n){var i={};return $z(e,(function(e){var r,o=i[e]=((r=function(){}).prototype.__hidden=r.prototype,new r);$z(t[e],(function(t,i){if(nD.isValidType(i)){var r={type:i,visual:t};n&&n(r,e),o[i]=new nD(r),"opacity"===i&&((r=T(r)).type="colorAlpha",o.__hidden.__alphaForOpacity=new nD(r))}}))})),i}function tV(t,e,n){var i;E(n,(function(t){e.hasOwnProperty(t)&&Jz(e[t])&&(i=!0)})),i&&E(n,(function(n){e.hasOwnProperty(n)&&Jz(e[n])?t[n]=T(e[n]):delete t[n]}))}var eV={lineX:nV(0),lineY:nV(1),rect:{point:function(t,e,n){return t&&n.boundingRect.contain(t[0],t[1])},rect:function(t,e,n){return t&&n.boundingRect.intersect(t)}},polygon:{point:function(t,e,n){return t&&n.boundingRect.contain(t[0],t[1])&&g_(n.range,t[0],t[1])},rect:function(t,e,n){var i=n.range;if(!t||i.length<=1)return!1;var r=t.x,o=t.y,a=t.width,s=t.height,l=i[0];return!!(g_(i,r,o)||g_(i,r+a,o)||g_(i,r,o+s)||g_(i,r+a,o+s)||sr.create(t).contain(l[0],l[1])||Oh(r,o,r+a,o,i)||Oh(r,o,r,o+s,i)||Oh(r+a,o,r+a,o+s,i)||Oh(r,o+s,r+a,o+s,i))||void 0}}};function nV(t){var e=["x","y"],n=["width","height"];return{point:function(e,n,i){if(e){var r=i.range;return iV(e[t],r)}},rect:function(i,r,o){if(i){var a=o.range,s=[i[e[t]],i[e[t]]+i[n[t]]];return s[1]<s[0]&&s.reverse(),iV(s[0],a)||iV(s[1],a)||iV(a[0],s)||iV(a[1],s)}}}}function iV(t,e){return e[0]<=t&&t<=e[1]}var rV=["inBrush","outOfBrush"],oV="__ecBrushSelect",aV="__ecInBrushSelectEvent";function sV(t){t.eachComponent({mainType:"brush"},(function(e){(e.brushTargetManager=new hz(e.option,t)).setInputRanges(e.areas,t)}))}function lV(t,e,n){var i,r,o=[];t.eachComponent({mainType:"brush"},(function(t){n&&"takeGlobalCursor"===n.type&&t.setBrushOption("brush"===n.key?n.brushOption:{brushType:!1})})),sV(t),t.eachComponent({mainType:"brush"},(function(e,n){var a={brushId:e.id,brushIndex:n,brushName:e.name,areas:T(e.areas),selected:[]};o.push(a);var s=e.option,l=s.brushLink,u=[],h=[],c=[],p=!1;n||(i=s.throttleType,r=s.throttleDelay);var d=z(e.areas,(function(t){var e=cV[t.brushType],n=k({boundingRect:e?e(t):void 0},t);return n.selectors=function(t){var e=t.brushType,n={point:function(i){return eV[e].point(i,n,t)},rect:function(i){return eV[e].rect(i,n,t)}};return n}(n),n})),f=Qz(e.option,rV,(function(t){t.mappingMethod="fixed"}));function g(t){return"all"===l||!!u[t]}function y(t){return!!t.length}Y(l)&&E(l,(function(t){u[t]=1})),t.eachSeries((function(n,i){var r=c[i]=[];"parallel"===n.subType?function(t,e){var n=t.coordinateSystem;p=p||n.hasAxisBrushed(),g(e)&&n.eachActiveState(t.getData(),(function(t,e){"active"===t&&(h[e]=1)}))}(n,i):function(n,i,r){if(!n.brushSelector||function(t,e){var n=t.option.seriesIndex;return null!=n&&"all"!==n&&(Y(n)?P(n,e)<0:e!==n)}(e,i))return;if(E(d,(function(i){e.brushTargetManager.controlSeries(i,n,t)&&r.push(i),p=p||y(r)})),g(i)&&y(r)){var o=n.getData();o.each((function(t){hV(n,r,o,t)&&(h[t]=1)}))}}(n,i,r)})),t.eachSeries((function(t,e){var n={seriesId:t.id,seriesIndex:e,seriesName:t.name,dataIndex:[]};a.selected.push(n);var i=c[e],r=t.getData(),o=g(e)?function(t){return h[t]?(n.dataIndex.push(r.getRawIndex(t)),"inBrush"):"outOfBrush"}:function(e){return hV(t,i,r,e)?(n.dataIndex.push(r.getRawIndex(e)),"inBrush"):"outOfBrush"};(g(e)?p:y(i))&&function(t,e,n,i,r,o){var a,s={};function l(t){return fy(n,a,t)}function u(t,e){yy(n,a,t,e)}function h(t,h){a=null==o?t:h;var c=n.getRawDataItem(a);if(!c||!1!==c.visualMap)for(var p=i.call(r,t),d=e[p],f=s[p],g=0,y=f.length;g<y;g++){var v=f[g];d[v]&&d[v].applyVisual(t,l,u)}}E(t,(function(t){var n=nD.prepareVisualTypes(e[t]);s[t]=n})),null==o?n.each(h):n.each([o],h)}(rV,f,r,o)}))})),function(t,e,n,i,r){if(!r)return;var o=t.getZr();if(o[aV])return;o.__ecBrushSelect||(o.__ecBrushSelect=uV);Ag(o,oV,n,e)(t,i)}(e,i,r,o,n)}function uV(t,e){if(!t.isDisposed()){var n=t.getZr();n[aV]=!0,t.dispatchAction({type:"brushSelect",batch:e}),n[aV]=!1}}function hV(t,e,n,i){for(var r=0,o=e.length;r<o;r++){var a=e[r];if(t.brushSelector(i,n,a.selectors,a))return!0}}var cV={rect:function(t){return pV(t.range)},polygon:function(t){for(var e,n=t.range,i=0,r=n.length;i<r;i++){e=e||[[1/0,-1/0],[1/0,-1/0]];var o=n[i];o[0]<e[0][0]&&(e[0][0]=o[0]),o[0]>e[0][1]&&(e[0][1]=o[0]),o[1]<e[1][0]&&(e[1][0]=o[1]),o[1]>e[1][1]&&(e[1][1]=o[1])}return e&&pV(e)}};function pV(t){return new sr(t[0][0],t[1][0],t[0][1]-t[0][0],t[1][1]-t[1][0])}var dV=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.init=function(t,e){this.ecModel=t,this.api=e,this.model,(this._brushController=new Pk(e.getZr())).on("brush",W(this._onBrush,this)).mount()},e.prototype.render=function(t,e,n,i){this.model=t,this._updateController(t,e,n,i)},e.prototype.updateTransform=function(t,e,n,i){sV(e),this._updateController(t,e,n,i)},e.prototype.updateVisual=function(t,e,n,i){this.updateTransform(t,e,n,i)},e.prototype.updateView=function(t,e,n,i){this._updateController(t,e,n,i)},e.prototype._updateController=function(t,e,n,i){(!i||i.$from!==t.id)&&this._brushController.setPanels(t.brushTargetManager.makePanelOpts(n)).enableBrush(t.brushOption).updateCovers(t.areas.slice())},e.prototype.dispose=function(){this._brushController.dispose()},e.prototype._onBrush=function(t){var e=this.model.id,n=this.model.brushTargetManager.setOutputRanges(t.areas,this.ecModel);(!t.isEnd||t.removeOnClick)&&this.api.dispatchAction({type:"brush",brushId:e,areas:T(n),$from:e}),t.isEnd&&this.api.dispatchAction({type:"brushEnd",brushId:e,areas:T(n),$from:e})},e.type="brush",e}(gg),fV=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.areas=[],n.brushOption={},n}return n(e,t),e.prototype.optionUpdated=function(t,e){var n=this.option;!e&&tV(n,t,["inBrush","outOfBrush"]);var i=n.inBrush=n.inBrush||{};n.outOfBrush=n.outOfBrush||{color:"#ddd"},i.hasOwnProperty("liftZ")||(i.liftZ=5)},e.prototype.setAreas=function(t){t&&(this.areas=z(t,(function(t){return gV(this.option,t)}),this))},e.prototype.setBrushOption=function(t){this.brushOption=gV(this.option,t),this.brushType=this.brushOption.brushType},e.type="brush",e.dependencies=["geo","grid","xAxis","yAxis","parallel","series"],e.defaultOption={seriesIndex:"all",brushType:"rect",brushMode:"single",transformable:!0,brushStyle:{borderWidth:1,color:"rgba(210,219,238,0.3)",borderColor:"#D2DBEE"},throttleType:"fixRate",throttleDelay:0,removeOnClick:!0,z:1e4},e}(Tp);function gV(t,e){return C({brushType:t.brushType,brushMode:t.brushMode,transformable:t.transformable,brushStyle:new dc(t.brushStyle).getItemStyle(),removeOnClick:t.removeOnClick,z:t.z},e,!0)}var yV=["rect","polygon","lineX","lineY","keep","clear"],vV=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e.prototype.render=function(t,e,n){var i,r,o;e.eachComponent({mainType:"brush"},(function(t){i=t.brushType,r=t.brushOption.brushMode||"single",o=o||!!t.areas.length})),this._brushType=i,this._brushMode=r,E(t.get("type",!0),(function(e){t.setIconStatus(e,("keep"===e?"multiple"===r:"clear"===e?o:e===i)?"emphasis":"normal")}))},e.prototype.updateView=function(t,e,n){this.render(t,e,n)},e.prototype.getIcons=function(){var t=this.model,e=t.get("icon",!0),n={};return E(t.get("type",!0),(function(t){e[t]&&(n[t]=e[t])})),n},e.prototype.onclick=function(t,e,n){var i=this._brushType,r=this._brushMode;"clear"===n?(e.dispatchAction({type:"axisAreaSelect",intervals:[]}),e.dispatchAction({type:"brush",command:"clear",areas:[]})):e.dispatchAction({type:"takeGlobalCursor",key:"brush",brushOption:{brushType:"keep"===n?i:i!==n&&n,brushMode:"keep"===n?"multiple"===r?"single":"multiple":r}})},e.getDefaultOption=function(t){return{show:!0,type:yV.slice(),icon:{rect:"M7.3,34.7 M0.4,10V-0.2h9.8 M89.6,10V-0.2h-9.8 M0.4,60v10.2h9.8 M89.6,60v10.2h-9.8 M12.3,22.4V10.5h13.1 M33.6,10.5h7.8 M49.1,10.5h7.8 M77.5,22.4V10.5h-13 M12.3,31.1v8.2 M77.7,31.1v8.2 M12.3,47.6v11.9h13.1 M33.6,59.5h7.6 M49.1,59.5 h7.7 M77.5,47.6v11.9h-13",polygon:"M55.2,34.9c1.7,0,3.1,1.4,3.1,3.1s-1.4,3.1-3.1,3.1 s-3.1-1.4-3.1-3.1S53.5,34.9,55.2,34.9z M50.4,51c1.7,0,3.1,1.4,3.1,3.1c0,1.7-1.4,3.1-3.1,3.1c-1.7,0-3.1-1.4-3.1-3.1 C47.3,52.4,48.7,51,50.4,51z M55.6,37.1l1.5-7.8 M60.1,13.5l1.6-8.7l-7.8,4 M59,19l-1,5.3 M24,16.1l6.4,4.9l6.4-3.3 M48.5,11.6 l-5.9,3.1 M19.1,12.8L9.7,5.1l1.1,7.7 M13.4,29.8l1,7.3l6.6,1.6 M11.6,18.4l1,6.1 M32.8,41.9 M26.6,40.4 M27.3,40.2l6.1,1.6 M49.9,52.1l-5.6-7.6l-4.9-1.2",lineX:"M15.2,30 M19.7,15.6V1.9H29 M34.8,1.9H40.4 M55.3,15.6V1.9H45.9 M19.7,44.4V58.1H29 M34.8,58.1H40.4 M55.3,44.4 V58.1H45.9 M12.5,20.3l-9.4,9.6l9.6,9.8 M3.1,29.9h16.5 M62.5,20.3l9.4,9.6L62.3,39.7 M71.9,29.9H55.4",lineY:"M38.8,7.7 M52.7,12h13.2v9 M65.9,26.6V32 M52.7,46.3h13.2v-9 M24.9,12H11.8v9 M11.8,26.6V32 M24.9,46.3H11.8v-9 M48.2,5.1l-9.3-9l-9.4,9.2 M38.9-3.9V12 M48.2,53.3l-9.3,9l-9.4-9.2 M38.9,62.3V46.4",keep:"M4,10.5V1h10.3 M20.7,1h6.1 M33,1h6.1 M55.4,10.5V1H45.2 M4,17.3v6.6 M55.6,17.3v6.6 M4,30.5V40h10.3 M20.7,40 h6.1 M33,40h6.1 M55.4,30.5V40H45.2 M21,18.9h62.9v48.6H21V18.9z",clear:"M22,14.7l30.9,31 M52.9,14.7L22,45.7 M4.7,16.8V4.2h13.1 M26,4.2h7.8 M41.6,4.2h7.8 M70.3,16.8V4.2H57.2 M4.7,25.9v8.6 M70.3,25.9v8.6 M4.7,43.2v12.6h13.1 M26,55.8h7.8 M41.6,55.8h7.8 M70.3,43.2v12.6H57.2"},title:t.getLocaleModel().get(["toolbox","brush","title"])}},e}(FE);var mV=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.layoutMode={type:"box",ignoreSize:!0},n}return n(e,t),e.type="title",e.defaultOption={z:6,show:!0,text:"",target:"blank",subtext:"",subtarget:"blank",left:0,top:0,backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderWidth:0,padding:5,itemGap:10,textStyle:{fontSize:18,fontWeight:"bold",color:"#464646"},subtextStyle:{fontSize:12,color:"#6E7079"}},e}(Tp),xV=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.render=function(t,e,n){if(this.group.removeAll(),t.get("show")){var i=this.group,r=t.getModel("textStyle"),o=t.getModel("subtextStyle"),a=t.get("textAlign"),s=rt(t.get("textBaseline"),t.get("textVerticalAlign")),l=new ks({style:Uh(r,{text:t.get("text"),fill:r.getTextColor()},{disableBox:!0}),z2:10}),u=l.getBoundingRect(),h=t.get("subtext"),c=new ks({style:Uh(o,{text:h,fill:o.getTextColor(),y:u.height+t.get("itemGap"),verticalAlign:"top"},{disableBox:!0}),z2:10}),p=t.get("link"),d=t.get("sublink"),f=t.get("triggerEvent",!0);l.silent=!p&&!f,c.silent=!d&&!f,p&&l.on("click",(function(){dp(p,"_"+t.get("target"))})),d&&c.on("click",(function(){dp(d,"_"+t.get("subtarget"))})),Hs(l).eventData=Hs(c).eventData=f?{componentType:"title",componentIndex:t.componentIndex}:null,i.add(l),h&&i.add(c);var g=i.getBoundingRect(),y=t.getBoxLayoutParams();y.width=g.width,y.height=g.height;var v=xp(y,{width:n.getWidth(),height:n.getHeight()},t.get("padding"));a||("middle"===(a=t.get("left")||t.get("right"))&&(a="center"),"right"===a?v.x+=v.width:"center"===a&&(v.x+=v.width/2)),s||("center"===(s=t.get("top")||t.get("bottom"))&&(s="middle"),"bottom"===s?v.y+=v.height:"middle"===s&&(v.y+=v.height/2),s=s||"top"),i.x=v.x,i.y=v.y,i.markRedraw();var m={align:a,verticalAlign:s};l.setStyle(m),c.setStyle(m),g=i.getBoundingRect();var x=v.margin,_=t.getItemStyle(["color","opacity"]);_.fill=t.get("backgroundColor");var b=new Cs({shape:{x:g.x-x[3],y:g.y-x[0],width:g.width+x[1]+x[3],height:g.height+x[0]+x[2],r:t.get("borderRadius")},style:_,subPixelOptimize:!0,silent:!0});i.add(b)}},e.type="title",e}(gg);var _V=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.layoutMode="box",n}return n(e,t),e.prototype.init=function(t,e,n){this.mergeDefaultAndTheme(t,n),this._initData()},e.prototype.mergeOption=function(e){t.prototype.mergeOption.apply(this,arguments),this._initData()},e.prototype.setCurrentIndex=function(t){null==t&&(t=this.option.currentIndex);var e=this._data.count();this.option.loop?t=(t%e+e)%e:(t>=e&&(t=e-1),t<0&&(t=0)),this.option.currentIndex=t},e.prototype.getCurrentIndex=function(){return this.option.currentIndex},e.prototype.isIndexMax=function(){return this.getCurrentIndex()>=this._data.count()-1},e.prototype.setPlayState=function(t){this.option.autoPlay=!!t},e.prototype.getPlayState=function(){return!!this.option.autoPlay},e.prototype._initData=function(){var t,e=this.option,n=e.data||[],i=e.axisType,r=this._names=[];"category"===i?(t=[],E(n,(function(e,n){var i,o=xo(fo(e),"");q(e)?(i=T(e)).value=n:i=n,t.push(i),r.push(o)}))):t=n;var o={category:"ordinal",time:"time",value:"number"}[i]||"number";(this._data=new jm([{name:"value",type:o}],this)).initData(t,r)},e.prototype.getData=function(){return this._data},e.prototype.getCategories=function(){if("category"===this.get("axisType"))return this._names.slice()},e.type="timeline",e.defaultOption={z:4,show:!0,axisType:"time",realtime:!0,left:"20%",top:null,right:"20%",bottom:0,width:null,height:40,padding:5,controlPosition:"left",autoPlay:!1,rewind:!1,loop:!0,playInterval:2e3,currentIndex:0,itemStyle:{},label:{color:"#000"},data:[]},e}(Tp),bV=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="timeline.slider",e.defaultOption=yc(_V.defaultOption,{backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderWidth:0,orient:"horizontal",inverse:!1,tooltip:{trigger:"item"},symbol:"circle",symbolSize:12,lineStyle:{show:!0,width:2,color:"#DAE1F5"},label:{position:"auto",show:!0,interval:"auto",rotate:0,color:"#A4B1D7"},itemStyle:{color:"#A4B1D7",borderWidth:1},checkpointStyle:{symbol:"circle",symbolSize:15,color:"#316bf3",borderColor:"#fff",borderWidth:2,shadowBlur:2,shadowOffsetX:1,shadowOffsetY:1,shadowColor:"rgba(0, 0, 0, 0.3)",animation:!0,animationDuration:300,animationEasing:"quinticInOut"},controlStyle:{show:!0,showPlayBtn:!0,showPrevBtn:!0,showNextBtn:!0,itemSize:24,itemGap:12,position:"left",playIcon:"path://M31.6,53C17.5,53,6,41.5,6,27.4S17.5,1.8,31.6,1.8C45.7,1.8,57.2,13.3,57.2,27.4S45.7,53,31.6,53z M31.6,3.3 C18.4,3.3,7.5,14.1,7.5,27.4c0,13.3,10.8,24.1,24.1,24.1C44.9,51.5,55.7,40.7,55.7,27.4C55.7,14.1,44.9,3.3,31.6,3.3z M24.9,21.3 c0-2.2,1.6-3.1,3.5-2l10.5,6.1c1.899,1.1,1.899,2.9,0,4l-10.5,6.1c-1.9,1.1-3.5,0.2-3.5-2V21.3z",stopIcon:"path://M30.9,53.2C16.8,53.2,5.3,41.7,5.3,27.6S16.8,2,30.9,2C45,2,56.4,13.5,56.4,27.6S45,53.2,30.9,53.2z M30.9,3.5C17.6,3.5,6.8,14.4,6.8,27.6c0,13.3,10.8,24.1,24.101,24.1C44.2,51.7,55,40.9,55,27.6C54.9,14.4,44.1,3.5,30.9,3.5z M36.9,35.8c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H36c0.5,0,0.9,0.4,0.9,1V35.8z M27.8,35.8 c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H27c0.5,0,0.9,0.4,0.9,1L27.8,35.8L27.8,35.8z",nextIcon:"M2,18.5A1.52,1.52,0,0,1,.92,18a1.49,1.49,0,0,1,0-2.12L7.81,9.36,1,3.11A1.5,1.5,0,1,1,3,.89l8,7.34a1.48,1.48,0,0,1,.49,1.09,1.51,1.51,0,0,1-.46,1.1L3,18.08A1.5,1.5,0,0,1,2,18.5Z",prevIcon:"M10,.5A1.52,1.52,0,0,1,11.08,1a1.49,1.49,0,0,1,0,2.12L4.19,9.64,11,15.89a1.5,1.5,0,1,1-2,2.22L1,10.77A1.48,1.48,0,0,1,.5,9.68,1.51,1.51,0,0,1,1,8.58L9,.92A1.5,1.5,0,0,1,10,.5Z",prevBtnSize:18,nextBtnSize:18,color:"#A4B1D7",borderColor:"#A4B1D7",borderWidth:1},emphasis:{label:{show:!0,color:"#6f778d"},itemStyle:{color:"#316BF3"},controlStyle:{color:"#316BF3",borderColor:"#316BF3",borderWidth:2}},progress:{lineStyle:{color:"#316BF3"},itemStyle:{color:"#316BF3"},label:{color:"#6f778d"}},data:[]}),e}(_V);R(bV,lf.prototype);var wV=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="timeline",e}(gg),SV=function(t){function e(e,n,i,r){var o=t.call(this,e,n,i)||this;return o.type=r||"value",o}return n(e,t),e.prototype.getLabelModel=function(){return this.model.getModel("label")},e.prototype.isHorizontal=function(){return"horizontal"===this.model.get("orient")},e}(W_),MV=Math.PI,IV=So(),TV=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.init=function(t,e){this.api=e},e.prototype.render=function(t,e,n){if(this.model=t,this.api=n,this.ecModel=e,this.group.removeAll(),t.get("show",!0)){var i=this._layout(t,n),r=this._createGroup("_mainGroup"),o=this._createGroup("_labelGroup"),a=this._axis=this._createAxis(i,t);t.formatTooltip=function(t){return Xf("nameValue",{noName:!0,value:a.scale.getLabel({value:t})})},E(["AxisLine","AxisTick","Control","CurrentPointer"],(function(e){this["_render"+e](i,r,a,t)}),this),this._renderAxisLabel(i,o,a,t),this._position(i,t)}this._doPlayStop(),this._updateTicksStatus()},e.prototype.remove=function(){this._clearTimer(),this.group.removeAll()},e.prototype.dispose=function(){this._clearTimer()},e.prototype._layout=function(t,e){var n,i,r,o,a=t.get(["label","position"]),s=t.get("orient"),l=function(t,e){return xp(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()},t.get("padding"))}(t,e),u={horizontal:"center",vertical:(n=null==a||"auto"===a?"horizontal"===s?l.y+l.height/2<e.getHeight()/2?"-":"+":l.x+l.width/2<e.getWidth()/2?"+":"-":X(a)?{horizontal:{top:"-",bottom:"+"},vertical:{left:"-",right:"+"}}[s][a]:a)>=0||"+"===n?"left":"right"},h={horizontal:n>=0||"+"===n?"top":"bottom",vertical:"middle"},c={horizontal:0,vertical:MV/2},p="vertical"===s?l.height:l.width,d=t.getModel("controlStyle"),f=d.get("show",!0),g=f?d.get("itemSize"):0,y=f?d.get("itemGap"):0,v=g+y,m=t.get(["label","rotate"])||0;m=m*MV/180;var x=d.get("position",!0),_=f&&d.get("showPlayBtn",!0),b=f&&d.get("showPrevBtn",!0),w=f&&d.get("showNextBtn",!0),S=0,M=p;"left"===x||"bottom"===x?(_&&(i=[0,0],S+=v),b&&(r=[S,0],S+=v),w&&(o=[M-g,0],M-=v)):(_&&(i=[M-g,0],M-=v),b&&(r=[0,0],S+=v),w&&(o=[M-g,0],M-=v));var I=[S,M];return t.get("inverse")&&I.reverse(),{viewRect:l,mainLength:p,orient:s,rotation:c[s],labelRotation:m,labelPosOpt:n,labelAlign:t.get(["label","align"])||u[s],labelBaseline:t.get(["label","verticalAlign"])||t.get(["label","baseline"])||h[s],playPosition:i,prevBtnPosition:r,nextBtnPosition:o,axisExtent:I,controlSize:g,controlGap:y}},e.prototype._position=function(t,e){var n=this._mainGroup,i=this._labelGroup,r=t.viewRect;if("vertical"===t.orient){var o=[1,0,0,1,0,0],a=r.x,s=r.y+r.height;Ei(o,o,[-a,-s]),zi(o,o,-MV/2),Ei(o,o,[a,s]),(r=r.clone()).applyTransform(o)}var l=y(r),u=y(n.getBoundingRect()),h=y(i.getBoundingRect()),c=[n.x,n.y],p=[i.x,i.y];p[0]=c[0]=l[0][0];var d,f=t.labelPosOpt;null==f||X(f)?(v(c,u,l,1,d="+"===f?0:1),v(p,h,l,1,1-d)):(v(c,u,l,1,d=f>=0?0:1),p[1]=c[1]+f);function g(t){t.originX=l[0][0]-t.x,t.originY=l[1][0]-t.y}function y(t){return[[t.x,t.x+t.width],[t.y,t.y+t.height]]}function v(t,e,n,i,r){t[i]+=n[i][r]-e[i][r]}n.setPosition(c),i.setPosition(p),n.rotation=i.rotation=t.rotation,g(n),g(i)},e.prototype._createAxis=function(t,e){var n=e.getData(),i=e.get("axisType"),r=function(t,e){if(e=e||t.get("type"))switch(e){case"category":return new yx({ordinalMeta:t.getCategories(),extent:[1/0,-1/0]});case"time":return new Ox({locale:t.ecModel.getLocaleModel(),useUTC:t.ecModel.get("useUTC")});default:return new mx}}(e,i);r.getTicks=function(){return n.mapArray(["value"],(function(t){return{value:t}}))};var o=n.getDataExtent("value");r.setExtent(o[0],o[1]),r.calcNiceTicks();var a=new SV("value",r,t.axisExtent,i);return a.model=e,a},e.prototype._createGroup=function(t){var e=this[t]=new Cr;return this.group.add(e),e},e.prototype._renderAxisLine=function(t,e,n,i){var r=n.getExtent();if(i.get(["lineStyle","show"])){var o=new zu({shape:{x1:r[0],y1:0,x2:r[1],y2:0},style:A({lineCap:"round"},i.getModel("lineStyle").getLineStyle()),silent:!0,z2:1});e.add(o);var a=this._progressLine=new zu({shape:{x1:r[0],x2:this._currentPointer?this._currentPointer.x:r[0],y1:0,y2:0},style:k({lineCap:"round",lineWidth:o.style.lineWidth},i.getModel(["progress","lineStyle"]).getLineStyle()),silent:!0,z2:1});e.add(a)}},e.prototype._renderAxisTick=function(t,e,n,i){var r=this,o=i.getData(),a=n.scale.getTicks();this._tickSymbols=[],E(a,(function(t){var a=n.dataToCoord(t.value),s=o.getItemModel(t.value),l=s.getModel("itemStyle"),u=s.getModel(["emphasis","itemStyle"]),h=s.getModel(["progress","itemStyle"]),c={x:a,y:0,onclick:W(r._changeTimeline,r,t.value)},p=CV(s,l,e,c);p.ensureState("emphasis").style=u.getItemStyle(),p.ensureState("progress").style=h.getItemStyle(),Ol(p);var d=Hs(p);s.get("tooltip")?(d.dataIndex=t.value,d.dataModel=i):d.dataIndex=d.dataModel=null,r._tickSymbols.push(p)}))},e.prototype._renderAxisLabel=function(t,e,n,i){var r=this;if(n.getLabelModel().get("show")){var o=i.getData(),a=n.getViewLabels();this._tickLabels=[],E(a,(function(i){var a=i.tickValue,s=o.getItemModel(a),l=s.getModel("label"),u=s.getModel(["emphasis","label"]),h=s.getModel(["progress","label"]),c=n.dataToCoord(i.tickValue),p=new ks({x:c,y:0,rotation:t.labelRotation-t.rotation,onclick:W(r._changeTimeline,r,a),silent:!1,style:Uh(l,{text:i.formattedLabel,align:t.labelAlign,verticalAlign:t.labelBaseline})});p.ensureState("emphasis").style=Uh(u),p.ensureState("progress").style=Uh(h),e.add(p),Ol(p),IV(p).dataIndex=a,r._tickLabels.push(p)}))}},e.prototype._renderControl=function(t,e,n,i){var r=t.controlSize,o=t.rotation,a=i.getModel("controlStyle").getItemStyle(),s=i.getModel(["emphasis","controlStyle"]).getItemStyle(),l=i.getPlayState(),u=i.get("inverse",!0);function h(t,n,l,u){if(t){var h=gr(rt(i.get(["controlStyle",n+"BtnSize"]),r),r),c=function(t,e,n,i){var r=i.style,o=Ph(t.get(["controlStyle",e]),i||{},new sr(n[0],n[1],n[2],n[3]));r&&o.setStyle(r);return o}(i,n+"Icon",[0,-h/2,h,h],{x:t[0],y:t[1],originX:r/2,originY:0,rotation:u?-o:0,rectHover:!0,style:a,onclick:l});c.ensureState("emphasis").style=s,e.add(c),Ol(c)}}h(t.nextBtnPosition,"next",W(this._changeTimeline,this,u?"-":"+")),h(t.prevBtnPosition,"prev",W(this._changeTimeline,this,u?"+":"-")),h(t.playPosition,l?"stop":"play",W(this._handlePlayClick,this,!l),!0)},e.prototype._renderCurrentPointer=function(t,e,n,i){var r=i.getData(),o=i.getCurrentIndex(),a=r.getItemModel(o).getModel("checkpointStyle"),s=this,l={onCreate:function(t){t.draggable=!0,t.drift=W(s._handlePointerDrag,s),t.ondragend=W(s._handlePointerDragend,s),DV(t,s._progressLine,o,n,i,!0)},onUpdate:function(t){DV(t,s._progressLine,o,n,i)}};this._currentPointer=CV(a,a,this._mainGroup,{},this._currentPointer,l)},e.prototype._handlePlayClick=function(t){this._clearTimer(),this.api.dispatchAction({type:"timelinePlayChange",playState:t,from:this.uid})},e.prototype._handlePointerDrag=function(t,e,n){this._clearTimer(),this._pointerChangeTimeline([n.offsetX,n.offsetY])},e.prototype._handlePointerDragend=function(t){this._pointerChangeTimeline([t.offsetX,t.offsetY],!0)},e.prototype._pointerChangeTimeline=function(t,e){var n=this._toAxisCoord(t)[0],i=Vr(this._axis.getExtent().slice());n>i[1]&&(n=i[1]),n<i[0]&&(n=i[0]),this._currentPointer.x=n,this._currentPointer.markRedraw(),this._progressLine.shape.x2=n,this._progressLine.dirty();var r=this._findNearestTick(n),o=this.model;(e||r!==o.getCurrentIndex()&&o.get("realtime"))&&this._changeTimeline(r)},e.prototype._doPlayStop=function(){var t=this;this._clearTimer(),this.model.getPlayState()&&(this._timer=setTimeout((function(){var e=t.model;t._changeTimeline(e.getCurrentIndex()+(e.get("rewind",!0)?-1:1))}),this.model.get("playInterval")))},e.prototype._toAxisCoord=function(t){return Th(t,this._mainGroup.getLocalTransform(),!0)},e.prototype._findNearestTick=function(t){var e,n=this.model.getData(),i=1/0,r=this._axis;return n.each(["value"],(function(n,o){var a=r.dataToCoord(n),s=Math.abs(a-t);s<i&&(i=s,e=o)})),e},e.prototype._clearTimer=function(){this._timer&&(clearTimeout(this._timer),this._timer=null)},e.prototype._changeTimeline=function(t){var e=this.model.getCurrentIndex();"+"===t?t=e+1:"-"===t&&(t=e-1),this.api.dispatchAction({type:"timelineChange",currentIndex:t,from:this.uid})},e.prototype._updateTicksStatus=function(){var t=this.model.getCurrentIndex(),e=this._tickSymbols,n=this._tickLabels;if(e)for(var i=0;i<e.length;i++)e&&e[i]&&e[i].toggleState("progress",i<t);if(n)for(i=0;i<n.length;i++)n&&n[i]&&n[i].toggleState("progress",IV(n[i]).dataIndex<=t)},e.type="timeline.slider",e}(wV);function CV(t,e,n,i,r,o){var a=e.get("color");r?(r.setColor(a),n.add(r),o&&o.onUpdate(r)):((r=Ly(t.get("symbol"),-1,-1,2,2,a)).setStyle("strokeNoScale",!0),n.add(r),o&&o.onCreate(r));var s=e.getItemStyle(["color"]);r.setStyle(s),i=C({rectHover:!0,z2:100},i,!0);var l=Py(t.get("symbolSize"));i.scaleX=l[0]/2,i.scaleY=l[1]/2;var u=Oy(t.get("symbolOffset"),l);u&&(i.x=(i.x||0)+u[0],i.y=(i.y||0)+u[1]);var h=t.get("symbolRotate");return i.rotation=(h||0)*Math.PI/180||0,r.attr(i),r.updateTransform(),r}function DV(t,e,n,i,r,o){if(!t.dragging){var a=r.getModel("checkpointStyle"),s=i.dataToCoord(r.getData().get("value",n));if(o||!a.get("animation",!0))t.attr({x:s,y:0}),e&&e.attr({shape:{x2:s}});else{var l={duration:a.get("animationDuration",!0),easing:a.get("animationEasing",!0)};t.stopAnimation(null,!0),t.animateTo({x:s,y:0},l),e&&e.animateTo({shape:{x2:s}},l)}}}function AV(t){var e=t&&t.timeline;Y(e)||(e=e?[e]:[]),E(e,(function(t){t&&function(t){var e=t.type,n={number:"value",time:"time"};n[e]&&(t.axisType=n[e],delete t.type);if(kV(t),LV(t,"controlPosition")){var i=t.controlStyle||(t.controlStyle={});LV(i,"position")||(i.position=t.controlPosition),"none"!==i.position||LV(i,"show")||(i.show=!1,delete i.position),delete t.controlPosition}E(t.data||[],(function(t){q(t)&&!Y(t)&&(!LV(t,"value")&&LV(t,"name")&&(t.value=t.name),kV(t))}))}(t)}))}function kV(t){var e=t.itemStyle||(t.itemStyle={}),n=e.emphasis||(e.emphasis={}),i=t.label||t.label||{},r=i.normal||(i.normal={}),o={normal:1,emphasis:1};E(i,(function(t,e){o[e]||LV(r,e)||(r[e]=t)})),n.label&&!LV(i,"emphasis")&&(i.emphasis=n.label,delete n.label)}function LV(t,e){return t.hasOwnProperty(e)}function PV(t,e){if(!t)return!1;for(var n=Y(t)?t:[t],i=0;i<n.length;i++)if(n[i]&&n[i][e])return!0;return!1}function OV(t){co(t,"label",["show"])}var RV=So(),NV=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.createdBySelf=!1,n}return n(e,t),e.prototype.init=function(t,e,n){this.mergeDefaultAndTheme(t,n),this._mergeOption(t,n,!1,!0)},e.prototype.isAnimationEnabled=function(){if(r.node)return!1;var t=this.__hostSeries;return this.getShallow("animation")&&t&&t.isAnimationEnabled()},e.prototype.mergeOption=function(t,e){this._mergeOption(t,e,!1,!1)},e.prototype._mergeOption=function(t,e,n,i){var r=this.mainType;n||e.eachSeries((function(t){var n=t.get(this.mainType,!0),o=RV(t)[r];n&&n.data?(o?o._mergeOption(n,e,!0):(i&&OV(n),E(n.data,(function(t){t instanceof Array?(OV(t[0]),OV(t[1])):OV(t)})),A(o=this.createMarkerModelFromSeries(n,this,e),{mainType:this.mainType,seriesIndex:t.seriesIndex,name:t.name,createdBySelf:!0}),o.__hostSeries=t),RV(t)[r]=o):RV(t)[r]=null}),this)},e.prototype.formatTooltip=function(t,e,n){var i=this.getData(),r=this.getRawValue(t),o=i.getName(t);return Xf("section",{header:this.name,blocks:[Xf("nameValue",{name:o,value:r,noName:!o,noValue:null==r})]})},e.prototype.getData=function(){return this._data},e.prototype.setData=function(t){this._data=t},e.getMarkerModelFromSeries=function(t,e){return RV(t)[e]},e.type="marker",e.dependencies=["series","grid","polar","geo"],e}(Tp);R(NV,lf.prototype);var EV=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.createMarkerModelFromSeries=function(t,n,i){return new e(t,n,i)},e.type="markPoint",e.defaultOption={z:5,symbol:"pin",symbolSize:50,tooltip:{trigger:"item"},label:{show:!0,position:"inside"},itemStyle:{borderWidth:2},emphasis:{label:{show:!0}}},e}(NV);function zV(t,e,n,i,r,o){var a=[],s=ex(e,i)?e.getCalculationInfo("stackResultDimension"):i,l=HV(e,s,t),u=e.indicesOfNearest(s,l)[0];a[r]=e.get(n,u),a[o]=e.get(s,u);var h=e.get(i,u),c=Br(e.get(i,u));return(c=Math.min(c,20))>=0&&(a[o]=+a[o].toFixed(c)),[a,h]}var VV={min:H(zV,"min"),max:H(zV,"max"),average:H(zV,"average"),median:H(zV,"median")};function BV(t,e){var n=t.getData(),i=t.coordinateSystem;if(e&&!function(t){return!isNaN(parseFloat(t.x))&&!isNaN(parseFloat(t.y))}(e)&&!Y(e.coord)&&i){var r=i.dimensions,o=FV(e,n,i,t);if((e=T(e)).type&&VV[e.type]&&o.baseAxis&&o.valueAxis){var a=P(r,o.baseAxis.dim),s=P(r,o.valueAxis.dim),l=VV[e.type](n,o.baseDataDim,o.valueDataDim,a,s);e.coord=l[0],e.value=l[1]}else{for(var u=[null!=e.xAxis?e.xAxis:e.radiusAxis,null!=e.yAxis?e.yAxis:e.angleAxis],h=0;h<2;h++)VV[u[h]]&&(u[h]=HV(n,n.mapDimension(r[h]),u[h]));e.coord=u}}return e}function FV(t,e,n,i){var r={};return null!=t.valueIndex||null!=t.valueDim?(r.valueDataDim=null!=t.valueIndex?e.getDimension(t.valueIndex):t.valueDim,r.valueAxis=n.getAxis(function(t,e){var n=t.getData().getDimensionInfo(e);return n&&n.coordDim}(i,r.valueDataDim)),r.baseAxis=n.getOtherAxis(r.valueAxis),r.baseDataDim=e.mapDimension(r.baseAxis.dim)):(r.baseAxis=i.getBaseAxis(),r.valueAxis=n.getOtherAxis(r.baseAxis),r.baseDataDim=e.mapDimension(r.baseAxis.dim),r.valueDataDim=e.mapDimension(r.valueAxis.dim)),r}function GV(t,e){return!(t&&t.containData&&e.coord&&!function(t){return!(isNaN(parseFloat(t.x))&&isNaN(parseFloat(t.y)))}(e))||t.containData(e.coord)}function WV(t,e){return t?function(t,n,i,r){return df(r<2?t.coord&&t.coord[r]:t.value,e[r])}:function(t,n,i,r){return df(t.value,e[r])}}function HV(t,e,n){if("average"===n){var i=0,r=0;return t.each(e,(function(t,e){isNaN(t)||(i+=t,r++)})),i/r}return"median"===n?t.getMedian(e):t.getDataExtent(e)["max"===n?1:0]}var YV=So(),UV=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.init=function(){this.markerGroupMap=ft()},e.prototype.render=function(t,e,n){var i=this,r=this.markerGroupMap;r.each((function(t){YV(t).keep=!1})),e.eachSeries((function(t){var r=NV.getMarkerModelFromSeries(t,i.type);r&&i.renderSeries(t,r,e,n)})),r.each((function(t){!YV(t).keep&&i.group.remove(t.group)}))},e.prototype.markKeep=function(t){YV(t).keep=!0},e.prototype.toggleBlurSeries=function(t,e){var n=this;E(t,(function(t){var i=NV.getMarkerModelFromSeries(t,n.type);i&&i.getData().eachItemGraphicEl((function(t){t&&(e?wl(t):Sl(t))}))}))},e.type="marker",e}(gg);function XV(t,e,n){var i=e.coordinateSystem;t.each((function(r){var o,a=t.getItemModel(r),s=Er(a.get("x"),n.getWidth()),l=Er(a.get("y"),n.getHeight());if(isNaN(s)||isNaN(l)){if(e.getMarkerPosition)o=e.getMarkerPosition(t.getValues(t.dimensions,r));else if(i){var u=t.get(i.dimensions[0],r),h=t.get(i.dimensions[1],r);o=i.dataToPoint([u,h])}}else o=[s,l];isNaN(s)||(o[0]=s),isNaN(l)||(o[1]=l),t.setItemLayout(r,o)}))}var ZV=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.updateTransform=function(t,e,n){e.eachSeries((function(t){var e=NV.getMarkerModelFromSeries(t,"markPoint");e&&(XV(e.getData(),t,n),this.markerGroupMap.get(t.id).updateLayout())}),this)},e.prototype.renderSeries=function(t,e,n,i){var r=t.coordinateSystem,o=t.id,a=t.getData(),s=this.markerGroupMap,l=s.get(o)||s.set(o,new jw),u=function(t,e,n){var i;i=t?z(t&&t.dimensions,(function(t){return A(A({},e.getData().getDimensionInfo(e.getData().mapDimension(t))||{}),{name:t,ordinalMeta:null})})):[{name:"value",type:"float"}];var r=new jm(i,n),o=z(n.get("data"),H(BV,e));t&&(o=B(o,H(GV,t)));var a=WV(!!t,i);return r.initData(o,null,a),r}(r,t,e);e.setData(u),XV(e.getData(),t,i),u.each((function(t){var n=u.getItemModel(t),i=n.getShallow("symbol"),r=n.getShallow("symbolSize"),o=n.getShallow("symbolRotate"),s=n.getShallow("symbolOffset"),l=n.getShallow("symbolKeepAspect");if(U(i)||U(r)||U(o)||U(s)){var h=e.getRawValue(t),c=e.getDataParams(t);U(i)&&(i=i(h,c)),U(r)&&(r=r(h,c)),U(o)&&(o=o(h,c)),U(s)&&(s=s(h,c))}var p=n.getModel("itemStyle").getItemStyle(),d=gy(a,"color");p.fill||(p.fill=d),u.setItemVisual(t,{symbol:i,symbolSize:r,symbolRotate:o,symbolOffset:s,symbolKeepAspect:l,style:p})})),l.updateData(u),this.group.add(l.group),u.eachItemGraphicEl((function(t){t.traverse((function(t){Hs(t).dataModel=e}))})),this.markKeep(l),l.group.silent=e.get("silent")||t.get("silent")},e.type="markPoint",e}(UV);var jV=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.createMarkerModelFromSeries=function(t,n,i){return new e(t,n,i)},e.type="markLine",e.defaultOption={z:5,symbol:["circle","arrow"],symbolSize:[8,16],symbolOffset:0,precision:2,tooltip:{trigger:"item"},label:{show:!0,position:"end",distance:5},lineStyle:{type:"dashed"},emphasis:{label:{show:!0},lineStyle:{width:3}},animationEasing:"linear"},e}(NV),qV=So(),KV=function(t,e,n,i){var r,o=t.getData();if(Y(i))r=i;else{var a=i.type;if("min"===a||"max"===a||"average"===a||"median"===a||null!=i.xAxis||null!=i.yAxis){var s=void 0,l=void 0;if(null!=i.yAxis||null!=i.xAxis)s=e.getAxis(null!=i.yAxis?"y":"x"),l=it(i.yAxis,i.xAxis);else{var u=FV(i,o,e,t);s=u.valueAxis,l=HV(o,nx(o,u.valueDataDim),a)}var h="x"===s.dim?0:1,c=1-h,p=T(i),d={coord:[]};p.type=null,p.coord=[],p.coord[c]=-1/0,d.coord[c]=1/0;var f=n.get("precision");f>=0&&j(l)&&(l=+l.toFixed(Math.min(f,20))),p.coord[h]=d.coord[h]=l,r=[p,d,{type:a,valueIndex:i.valueIndex,value:l}]}else r=[]}var g=[BV(t,r[0]),BV(t,r[1]),A({},r[2])];return g[2].type=g[2].type||null,C(g[2],g[0]),C(g[2],g[1]),g};function $V(t){return!isNaN(t)&&!isFinite(t)}function JV(t,e,n,i){var r=1-t,o=i.dimensions[t];return $V(e[r])&&$V(n[r])&&e[t]===n[t]&&i.getAxis(o).containData(e[t])}function QV(t,e){if("cartesian2d"===t.type){var n=e[0].coord,i=e[1].coord;if(n&&i&&(JV(1,n,i,t)||JV(0,n,i,t)))return!0}return GV(t,e[0])&&GV(t,e[1])}function tB(t,e,n,i,r){var o,a=i.coordinateSystem,s=t.getItemModel(e),l=Er(s.get("x"),r.getWidth()),u=Er(s.get("y"),r.getHeight());if(isNaN(l)||isNaN(u)){if(i.getMarkerPosition)o=i.getMarkerPosition(t.getValues(t.dimensions,e));else{var h=a.dimensions,c=t.get(h[0],e),p=t.get(h[1],e);o=a.dataToPoint([c,p])}if(lS(a,"cartesian2d")){var d=a.getAxis("x"),f=a.getAxis("y");h=a.dimensions;$V(t.get(h[0],e))?o[0]=d.toGlobalCoord(d.getExtent()[n?0:1]):$V(t.get(h[1],e))&&(o[1]=f.toGlobalCoord(f.getExtent()[n?0:1]))}isNaN(l)||(o[0]=l),isNaN(u)||(o[1]=u)}else o=[l,u];t.setItemLayout(e,o)}var eB=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.updateTransform=function(t,e,n){e.eachSeries((function(t){var e=NV.getMarkerModelFromSeries(t,"markLine");if(e){var i=e.getData(),r=qV(e).from,o=qV(e).to;r.each((function(e){tB(r,e,!0,t,n),tB(o,e,!1,t,n)})),i.each((function(t){i.setItemLayout(t,[r.getItemLayout(t),o.getItemLayout(t)])})),this.markerGroupMap.get(t.id).updateLayout()}}),this)},e.prototype.renderSeries=function(t,e,n,i){var r=t.coordinateSystem,o=t.id,a=t.getData(),s=this.markerGroupMap,l=s.get(o)||s.set(o,new fA);this.group.add(l.group);var u=function(t,e,n){var i;i=t?z(t&&t.dimensions,(function(t){return A(A({},e.getData().getDimensionInfo(e.getData().mapDimension(t))||{}),{name:t,ordinalMeta:null})})):[{name:"value",type:"float"}];var r=new jm(i,n),o=new jm(i,n),a=new jm([],n),s=z(n.get("data"),H(KV,e,t,n));t&&(s=B(s,H(QV,t)));var l=WV(!!t,i);return r.initData(z(s,(function(t){return t[0]})),null,l),o.initData(z(s,(function(t){return t[1]})),null,l),a.initData(z(s,(function(t){return t[2]}))),a.hasItemOption=!0,{from:r,to:o,line:a}}(r,t,e),h=u.from,c=u.to,p=u.line;qV(e).from=h,qV(e).to=c,e.setData(p);var d=e.get("symbol"),f=e.get("symbolSize"),g=e.get("symbolRotate"),y=e.get("symbolOffset");function v(e,n,r){var o=e.getItemModel(n);tB(e,n,r,t,i);var s=o.getModel("itemStyle").getItemStyle();null==s.fill&&(s.fill=gy(a,"color")),e.setItemVisual(n,{symbolKeepAspect:o.get("symbolKeepAspect"),symbolOffset:rt(o.get("symbolOffset",!0),y[r?0:1]),symbolRotate:rt(o.get("symbolRotate",!0),g[r?0:1]),symbolSize:rt(o.get("symbolSize"),f[r?0:1]),symbol:rt(o.get("symbol",!0),d[r?0:1]),style:s})}Y(d)||(d=[d,d]),Y(f)||(f=[f,f]),Y(g)||(g=[g,g]),Y(y)||(y=[y,y]),u.from.each((function(t){v(h,t,!0),v(c,t,!1)})),p.each((function(t){var e=p.getItemModel(t).getModel("lineStyle").getLineStyle();p.setItemLayout(t,[h.getItemLayout(t),c.getItemLayout(t)]),null==e.stroke&&(e.stroke=h.getItemVisual(t,"style").fill),p.setItemVisual(t,{fromSymbolKeepAspect:h.getItemVisual(t,"symbolKeepAspect"),fromSymbolOffset:h.getItemVisual(t,"symbolOffset"),fromSymbolRotate:h.getItemVisual(t,"symbolRotate"),fromSymbolSize:h.getItemVisual(t,"symbolSize"),fromSymbol:h.getItemVisual(t,"symbol"),toSymbolKeepAspect:c.getItemVisual(t,"symbolKeepAspect"),toSymbolOffset:c.getItemVisual(t,"symbolOffset"),toSymbolRotate:c.getItemVisual(t,"symbolRotate"),toSymbolSize:c.getItemVisual(t,"symbolSize"),toSymbol:c.getItemVisual(t,"symbol"),style:e})})),l.updateData(p),u.line.eachItemGraphicEl((function(t,n){t.traverse((function(t){Hs(t).dataModel=e}))})),this.markKeep(l),l.group.silent=e.get("silent")||t.get("silent")},e.type="markLine",e}(UV);var nB=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.createMarkerModelFromSeries=function(t,n,i){return new e(t,n,i)},e.type="markArea",e.defaultOption={z:1,tooltip:{trigger:"item"},animation:!1,label:{show:!0,position:"top"},itemStyle:{borderWidth:0},emphasis:{label:{show:!0,position:"top"}}},e}(NV),iB=So(),rB=function(t,e,n,i){var r=BV(t,i[0]),o=BV(t,i[1]),a=r.coord,s=o.coord;a[0]=it(a[0],-1/0),a[1]=it(a[1],-1/0),s[0]=it(s[0],1/0),s[1]=it(s[1],1/0);var l=D([{},r,o]);return l.coord=[r.coord,o.coord],l.x0=r.x,l.y0=r.y,l.x1=o.x,l.y1=o.y,l};function oB(t){return!isNaN(t)&&!isFinite(t)}function aB(t,e,n,i){var r=1-t;return oB(e[r])&&oB(n[r])}function sB(t,e){var n=e.coord[0],i=e.coord[1];return!!(lS(t,"cartesian2d")&&n&&i&&(aB(1,n,i)||aB(0,n,i)))||(GV(t,{coord:n,x:e.x0,y:e.y0})||GV(t,{coord:i,x:e.x1,y:e.y1}))}function lB(t,e,n,i,r){var o,a=i.coordinateSystem,s=t.getItemModel(e),l=Er(s.get(n[0]),r.getWidth()),u=Er(s.get(n[1]),r.getHeight());if(isNaN(l)||isNaN(u)){if(i.getMarkerPosition)o=i.getMarkerPosition(t.getValues(n,e));else{var h=[d=t.get(n[0],e),f=t.get(n[1],e)];a.clampData&&a.clampData(h,h),o=a.dataToPoint(h,!0)}if(lS(a,"cartesian2d")){var c=a.getAxis("x"),p=a.getAxis("y"),d=t.get(n[0],e),f=t.get(n[1],e);oB(d)?o[0]=c.toGlobalCoord(c.getExtent()["x0"===n[0]?0:1]):oB(f)&&(o[1]=p.toGlobalCoord(p.getExtent()["y0"===n[1]?0:1]))}isNaN(l)||(o[0]=l),isNaN(u)||(o[1]=u)}else o=[l,u];return o}var uB=[["x0","y0"],["x1","y0"],["x1","y1"],["x0","y1"]],hB=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.updateTransform=function(t,e,n){e.eachSeries((function(t){var e=NV.getMarkerModelFromSeries(t,"markArea");if(e){var i=e.getData();i.each((function(e){var r=z(uB,(function(r){return lB(i,e,r,t,n)}));i.setItemLayout(e,r),i.getItemGraphicEl(e).setShape("points",r)}))}}),this)},e.prototype.renderSeries=function(t,e,n,i){var r=t.coordinateSystem,o=t.id,a=t.getData(),s=this.markerGroupMap,l=s.get(o)||s.set(o,{group:new Cr});this.group.add(l.group),this.markKeep(l);var u=function(t,e,n){var i,r,o=["x0","y0","x1","y1"];if(t){var a=z(t&&t.dimensions,(function(t){var n=e.getData();return A(A({},n.getDimensionInfo(n.mapDimension(t))||{}),{name:t,ordinalMeta:null})}));r=z(o,(function(t,e){return{name:t,type:a[e%2].type}})),i=new jm(r,n)}else i=new jm(r=[{name:"value",type:"float"}],n);var s=z(n.get("data"),H(rB,e,t,n));t&&(s=B(s,H(sB,t)));var l=t?function(t,e,n,i){return df(t.coord[Math.floor(i/2)][i%2],r[i])}:function(t,e,n,i){return df(t.value,r[i])};return i.initData(s,null,l),i.hasItemOption=!0,i}(r,t,e);e.setData(u),u.each((function(e){var n=z(uB,(function(n){return lB(u,e,n,t,i)})),o=r.getAxis("x").scale,s=r.getAxis("y").scale,l=o.getExtent(),h=s.getExtent(),c=[o.parse(u.get("x0",e)),o.parse(u.get("x1",e))],p=[s.parse(u.get("y0",e)),s.parse(u.get("y1",e))];Vr(c),Vr(p);var d=!!(l[0]>c[1]||l[1]<c[0]||h[0]>p[1]||h[1]<p[0]);u.setItemLayout(e,{points:n,allClipped:d});var f=u.getItemModel(e).getModel("itemStyle").getItemStyle(),g=gy(a,"color");f.fill||(f.fill=g,X(f.fill)&&(f.fill=An(f.fill,.4))),f.stroke||(f.stroke=g),u.setItemVisual(e,"style",f)})),u.diff(iB(l).data).add((function(t){var e=u.getItemLayout(t);if(!e.allClipped){var n=new Pu({shape:{points:e.points}});u.setItemGraphicEl(t,n),l.group.add(n)}})).update((function(t,n){var i=iB(l).data.getItemGraphicEl(n),r=u.getItemLayout(t);r.allClipped?i&&l.group.remove(i):(i?rh(i,{shape:{points:r.points}},e,t):i=new Pu({shape:{points:r.points}}),u.setItemGraphicEl(t,i),l.group.add(i))})).remove((function(t){var e=iB(l).data.getItemGraphicEl(t);l.group.remove(e)})).execute(),u.eachItemGraphicEl((function(t,n){var i=u.getItemModel(n),r=u.getItemVisual(n,"style");t.useStyle(u.getItemVisual(n,"style")),Hh(t,Yh(i),{labelFetcher:e,labelDataIndex:n,defaultText:u.getName(n)||"",inheritColor:X(r.fill)?An(r.fill,1):"#000"}),Vl(t,i),Rl(t,null,null,i.get(["emphasis","disabled"])),Hs(t).dataModel=e})),iB(l).data=u,l.group.silent=e.get("silent")||t.get("silent")},e.type="markArea",e}(UV);var cB=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.layoutMode={type:"box",ignoreSize:!0},n}return n(e,t),e.prototype.init=function(t,e,n){this.mergeDefaultAndTheme(t,n),t.selected=t.selected||{},this._updateSelector(t)},e.prototype.mergeOption=function(e,n){t.prototype.mergeOption.call(this,e,n),this._updateSelector(e)},e.prototype._updateSelector=function(t){var e=t.selector,n=this.ecModel;!0===e&&(e=t.selector=["all","inverse"]),Y(e)&&E(e,(function(t,i){X(t)&&(t={type:t}),e[i]=C(t,function(t,e){return"all"===e?{type:"all",title:t.getLocaleModel().get(["legend","selector","all"])}:"inverse"===e?{type:"inverse",title:t.getLocaleModel().get(["legend","selector","inverse"])}:void 0}(n,t.type))}))},e.prototype.optionUpdated=function(){this._updateData(this.ecModel);var t=this._data;if(t[0]&&"single"===this.get("selectedMode")){for(var e=!1,n=0;n<t.length;n++){var i=t[n].get("name");if(this.isSelected(i)){this.select(i),e=!0;break}}!e&&this.select(t[0].get("name"))}},e.prototype._updateData=function(t){var e=[],n=[];t.eachRawSeries((function(i){var r,o=i.name;if(n.push(o),i.legendVisualProvider){var a=i.legendVisualProvider.getAllNames();t.isSeriesFiltered(i)||(n=n.concat(a)),a.length?e=e.concat(a):r=!0}else r=!0;r&&_o(i)&&e.push(i.name)})),this._availableNames=n;var i=z(this.get("data")||e,(function(t){return(X(t)||j(t))&&(t={name:t}),new dc(t,this,this.ecModel)}),this);this._data=i},e.prototype.getData=function(){return this._data},e.prototype.select=function(t){var e=this.option.selected;"single"===this.get("selectedMode")&&E(this._data,(function(t){e[t.get("name")]=!1}));e[t]=!0},e.prototype.unSelect=function(t){"single"!==this.get("selectedMode")&&(this.option.selected[t]=!1)},e.prototype.toggleSelected=function(t){var e=this.option.selected;e.hasOwnProperty(t)||(e[t]=!0),this[e[t]?"unSelect":"select"](t)},e.prototype.allSelect=function(){var t=this._data,e=this.option.selected;E(t,(function(t){e[t.get("name",!0)]=!0}))},e.prototype.inverseSelect=function(){var t=this._data,e=this.option.selected;E(t,(function(t){var n=t.get("name",!0);e.hasOwnProperty(n)||(e[n]=!0),e[n]=!e[n]}))},e.prototype.isSelected=function(t){var e=this.option.selected;return!(e.hasOwnProperty(t)&&!e[t])&&P(this._availableNames,t)>=0},e.prototype.getOrient=function(){return"vertical"===this.get("orient")?{index:1,name:"vertical"}:{index:0,name:"horizontal"}},e.type="legend.plain",e.dependencies=["series"],e.defaultOption={z:4,show:!0,orient:"horizontal",left:"center",top:0,align:"auto",backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderRadius:0,borderWidth:0,padding:5,itemGap:10,itemWidth:25,itemHeight:14,symbolRotate:"inherit",symbolKeepAspect:!0,inactiveColor:"#ccc",inactiveBorderColor:"#ccc",inactiveBorderWidth:"auto",itemStyle:{color:"inherit",opacity:"inherit",borderColor:"inherit",borderWidth:"auto",borderCap:"inherit",borderJoin:"inherit",borderDashOffset:"inherit",borderMiterLimit:"inherit"},lineStyle:{width:"auto",color:"inherit",inactiveColor:"#ccc",inactiveWidth:2,opacity:"inherit",type:"inherit",cap:"inherit",join:"inherit",dashOffset:"inherit",miterLimit:"inherit"},textStyle:{color:"#333"},selectedMode:!0,selector:!1,selectorLabel:{show:!0,borderRadius:10,padding:[3,5,3,5],fontSize:12,fontFamily:"sans-serif",color:"#666",borderWidth:1,borderColor:"#666"},emphasis:{selectorLabel:{show:!0,color:"#eee",backgroundColor:"#666"}},selectorPosition:"auto",selectorItemGap:7,selectorButtonGap:10,tooltip:{show:!1}},e}(Tp),pB=H,dB=E,fB=Cr,gB=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.newlineDisabled=!1,n}return n(e,t),e.prototype.init=function(){this.group.add(this._contentGroup=new fB),this.group.add(this._selectorGroup=new fB),this._isFirstRender=!0},e.prototype.getContentGroup=function(){return this._contentGroup},e.prototype.getSelectorGroup=function(){return this._selectorGroup},e.prototype.render=function(t,e,n){var i=this._isFirstRender;if(this._isFirstRender=!1,this.resetInner(),t.get("show",!0)){var r=t.get("align"),o=t.get("orient");r&&"auto"!==r||(r="right"===t.get("left")&&"vertical"===o?"right":"left");var a=t.get("selector",!0),s=t.get("selectorPosition",!0);!a||s&&"auto"!==s||(s="horizontal"===o?"end":"start"),this.renderInner(r,t,e,n,a,o,s);var l=t.getBoxLayoutParams(),u={width:n.getWidth(),height:n.getHeight()},h=t.get("padding"),c=xp(l,u,h),p=this.layoutInner(t,r,c,i,a,s),d=xp(k({width:p.width,height:p.height},l),u,h);this.group.x=d.x-p.x,this.group.y=d.y-p.y,this.group.markRedraw(),this.group.add(this._backgroundEl=UE(p,t))}},e.prototype.resetInner=function(){this.getContentGroup().removeAll(),this._backgroundEl&&this.group.remove(this._backgroundEl),this.getSelectorGroup().removeAll()},e.prototype.renderInner=function(t,e,n,i,r,o,a){var s=this.getContentGroup(),l=ft(),u=e.get("selectedMode"),h=[];n.eachRawSeries((function(t){!t.get("legendHoverLink")&&h.push(t.id)})),dB(e.getData(),(function(r,o){var a=r.get("name");if(!this.newlineDisabled&&(""===a||"\n"===a)){var c=new fB;return c.newline=!0,void s.add(c)}var p=n.getSeriesByName(a)[0];if(!l.get(a)){if(p){var d=p.getData(),f=d.getVisual("legendLineStyle")||{},g=d.getVisual("legendIcon"),y=d.getVisual("style");this._createItem(p,a,o,r,e,t,f,y,g,u).on("click",pB(yB,a,null,i,h)).on("mouseover",pB(mB,p.name,null,i,h)).on("mouseout",pB(xB,p.name,null,i,h)),l.set(a,!0)}else n.eachRawSeries((function(n){if(!l.get(a)&&n.legendVisualProvider){var s=n.legendVisualProvider;if(!s.containName(a))return;var c=s.indexOfName(a),p=s.getItemVisual(c,"style"),d=s.getItemVisual(c,"legendIcon"),f=bn(p.fill);f&&0===f[3]&&(f[3]=.2,p=A(A({},p),{fill:kn(f,"rgba")})),this._createItem(n,a,o,r,e,t,{},p,d,u).on("click",pB(yB,null,a,i,h)).on("mouseover",pB(mB,null,a,i,h)).on("mouseout",pB(xB,null,a,i,h)),l.set(a,!0)}}),this);0}}),this),r&&this._createSelector(r,e,i,o,a)},e.prototype._createSelector=function(t,e,n,i,r){var o=this.getSelectorGroup();dB(t,(function(t){var i=t.type,r=new ks({style:{x:0,y:0,align:"center",verticalAlign:"middle"},onclick:function(){n.dispatchAction({type:"all"===i?"legendAllSelect":"legendInverseSelect"})}});o.add(r),Hh(r,{normal:e.getModel("selectorLabel"),emphasis:e.getModel(["emphasis","selectorLabel"])},{defaultText:t.title}),Ol(r)}))},e.prototype._createItem=function(t,e,n,i,r,o,a,s,l,u){var h=t.visualDrawType,c=r.get("itemWidth"),p=r.get("itemHeight"),d=r.isSelected(e),f=i.get("symbolRotate"),g=i.get("symbolKeepAspect"),y=i.get("icon"),v=function(t,e,n,i,r,o){function a(t,e){"auto"===t.lineWidth&&(t.lineWidth=e.lineWidth>0?2:0),dB(t,(function(n,i){"inherit"===t[i]&&(t[i]=e[i])}))}var s=e.getModel("itemStyle").getItemStyle(),l=0===t.lastIndexOf("empty",0)?"fill":"stroke";s.decal=i.decal,"inherit"===s.fill&&(s.fill=i[r]);"inherit"===s.stroke&&(s.stroke=i[l]);"inherit"===s.opacity&&(s.opacity=("fill"===r?i:n).opacity);a(s,i);var u=e.getModel("lineStyle"),h=u.getLineStyle();if(a(h,n),"auto"===s.fill&&(s.fill=i.fill),"auto"===s.stroke&&(s.stroke=i.fill),"auto"===h.stroke&&(h.stroke=i.fill),!o){var c=e.get("inactiveBorderWidth"),p=s[l];s.lineWidth="auto"===c?i.lineWidth>0&&p?2:0:s.lineWidth,s.fill=e.get("inactiveColor"),s.stroke=e.get("inactiveBorderColor"),h.stroke=u.get("inactiveColor"),h.lineWidth=u.get("inactiveWidth")}return{itemStyle:s,lineStyle:h}}(l=y||l||"roundRect",i,a,s,h,d),m=new fB,x=i.getModel("textStyle");if(!U(t.getLegendIcon)||y&&"inherit"!==y){var _="inherit"===y&&t.getData().getVisual("symbol")?"inherit"===f?t.getData().getVisual("symbolRotate"):f:0;m.add(function(t){var e=t.icon||"roundRect",n=Ly(e,0,0,t.itemWidth,t.itemHeight,t.itemStyle.fill,t.symbolKeepAspect);n.setStyle(t.itemStyle),n.rotation=(t.iconRotate||0)*Math.PI/180,n.setOrigin([t.itemWidth/2,t.itemHeight/2]),e.indexOf("empty")>-1&&(n.style.stroke=n.style.fill,n.style.fill="#fff",n.style.lineWidth=2);return n}({itemWidth:c,itemHeight:p,icon:l,iconRotate:_,itemStyle:v.itemStyle,lineStyle:v.lineStyle,symbolKeepAspect:g}))}else m.add(t.getLegendIcon({itemWidth:c,itemHeight:p,icon:l,iconRotate:f,itemStyle:v.itemStyle,lineStyle:v.lineStyle,symbolKeepAspect:g}));var b="left"===o?c+5:-5,w=o,S=r.get("formatter"),M=e;X(S)&&S?M=S.replace("{name}",null!=e?e:""):U(S)&&(M=S(e));var I=i.get("inactiveColor");m.add(new ks({style:Uh(x,{text:M,x:b,y:p/2,fill:d?x.getTextColor():I,align:w,verticalAlign:"middle"})}));var T=new Cs({shape:m.getBoundingRect(),invisible:!0}),C=i.getModel("tooltip");return C.get("show")&&Eh({el:T,componentModel:r,itemName:e,itemTooltipOption:C.option}),m.add(T),m.eachChild((function(t){t.silent=!0})),T.silent=!u,this.getContentGroup().add(m),Ol(m),m.__legendDataIndex=n,m},e.prototype.layoutInner=function(t,e,n,i,r,o){var a=this.getContentGroup(),s=this.getSelectorGroup();mp(t.get("orient"),a,t.get("itemGap"),n.width,n.height);var l=a.getBoundingRect(),u=[-l.x,-l.y];if(s.markRedraw(),a.markRedraw(),r){mp("horizontal",s,t.get("selectorItemGap",!0));var h=s.getBoundingRect(),c=[-h.x,-h.y],p=t.get("selectorButtonGap",!0),d=t.getOrient().index,f=0===d?"width":"height",g=0===d?"height":"width",y=0===d?"y":"x";"end"===o?c[d]+=l[f]+p:u[d]+=h[f]+p,c[1-d]+=l[g]/2-h[g]/2,s.x=c[0],s.y=c[1],a.x=u[0],a.y=u[1];var v={x:0,y:0};return v[f]=l[f]+p+h[f],v[g]=Math.max(l[g],h[g]),v[y]=Math.min(0,h[y]+c[1-d]),v}return a.x=u[0],a.y=u[1],this.group.getBoundingRect()},e.prototype.remove=function(){this.getContentGroup().removeAll(),this._isFirstRender=!0},e.type="legend.plain",e}(gg);function yB(t,e,n,i){xB(t,e,n,i),n.dispatchAction({type:"legendToggleSelect",name:null!=t?t:e}),mB(t,e,n,i)}function vB(t){for(var e,n=t.getZr().storage.getDisplayList(),i=0,r=n.length;i<r&&!(e=n[i].states.emphasis);)i++;return e&&e.hoverLayer}function mB(t,e,n,i){vB(n)||n.dispatchAction({type:"highlight",seriesName:t,name:e,excludeSeriesId:i})}function xB(t,e,n,i){vB(n)||n.dispatchAction({type:"downplay",seriesName:t,name:e,excludeSeriesId:i})}function _B(t){var e=t.findComponents({mainType:"legend"});e&&e.length&&t.filterSeries((function(t){for(var n=0;n<e.length;n++)if(!e[n].isSelected(t.name))return!1;return!0}))}function bB(t,e,n){var i,r={},o="toggleSelected"===t;return n.eachComponent("legend",(function(n){o&&null!=i?n[i?"select":"unSelect"](e.name):"allSelect"===t||"inverseSelect"===t?n[t]():(n[t](e.name),i=n.isSelected(e.name)),E(n.getData(),(function(t){var e=t.get("name");if("\n"!==e&&""!==e){var i=n.isSelected(e);r.hasOwnProperty(e)?r[e]=r[e]&&i:r[e]=i}}))})),"allSelect"===t||"inverseSelect"===t?{selected:r}:{name:e.name,selected:r}}function wB(t){t.registerComponentModel(cB),t.registerComponentView(gB),t.registerProcessor(t.PRIORITY.PROCESSOR.SERIES_FILTER,_B),t.registerSubTypeDefaulter("legend",(function(){return"plain"})),function(t){t.registerAction("legendToggleSelect","legendselectchanged",H(bB,"toggleSelected")),t.registerAction("legendAllSelect","legendselectall",H(bB,"allSelect")),t.registerAction("legendInverseSelect","legendinverseselect",H(bB,"inverseSelect")),t.registerAction("legendSelect","legendselected",H(bB,"select")),t.registerAction("legendUnSelect","legendunselected",H(bB,"unSelect"))}(t)}var SB=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.setScrollDataIndex=function(t){this.option.scrollDataIndex=t},e.prototype.init=function(e,n,i){var r=Sp(e);t.prototype.init.call(this,e,n,i),MB(this,e,r)},e.prototype.mergeOption=function(e,n){t.prototype.mergeOption.call(this,e,n),MB(this,this.option,e)},e.type="legend.scroll",e.defaultOption=yc(cB.defaultOption,{scrollDataIndex:0,pageButtonItemGap:5,pageButtonGap:null,pageButtonPosition:"end",pageFormatter:"{current}/{total}",pageIcons:{horizontal:["M0,0L12,-10L12,10z","M0,0L-12,-10L-12,10z"],vertical:["M0,0L20,0L10,-20z","M0,0L20,0L10,20z"]},pageIconColor:"#2f4554",pageIconInactiveColor:"#aaa",pageIconSize:15,pageTextStyle:{color:"#333"},animationDurationUpdate:800}),e}(cB);function MB(t,e,n){var i=[1,1];i[t.getOrient().index]=0,wp(e,n,{type:"box",ignoreSize:!!i})}var IB=Cr,TB=["width","height"],CB=["x","y"],DB=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.newlineDisabled=!0,n._currentIndex=0,n}return n(e,t),e.prototype.init=function(){t.prototype.init.call(this),this.group.add(this._containerGroup=new IB),this._containerGroup.add(this.getContentGroup()),this.group.add(this._controllerGroup=new IB)},e.prototype.resetInner=function(){t.prototype.resetInner.call(this),this._controllerGroup.removeAll(),this._containerGroup.removeClipPath(),this._containerGroup.__rectSize=null},e.prototype.renderInner=function(e,n,i,r,o,a,s){var l=this;t.prototype.renderInner.call(this,e,n,i,r,o,a,s);var u=this._controllerGroup,h=n.get("pageIconSize",!0),c=Y(h)?h:[h,h];d("pagePrev",0);var p=n.getModel("pageTextStyle");function d(t,e){var i=t+"DataIndex",o=Ph(n.get("pageIcons",!0)[n.getOrient().name][e],{onclick:W(l._pageGo,l,i,n,r)},{x:-c[0]/2,y:-c[1]/2,width:c[0],height:c[1]});o.name=t,u.add(o)}u.add(new ks({name:"pageText",style:{text:"xx/xx",fill:p.getTextColor(),font:p.getFont(),verticalAlign:"middle",align:"center"},silent:!0})),d("pageNext",1)},e.prototype.layoutInner=function(t,e,n,i,r,o){var a=this.getSelectorGroup(),s=t.getOrient().index,l=TB[s],u=CB[s],h=TB[1-s],c=CB[1-s];r&&mp("horizontal",a,t.get("selectorItemGap",!0));var p=t.get("selectorButtonGap",!0),d=a.getBoundingRect(),f=[-d.x,-d.y],g=T(n);r&&(g[l]=n[l]-d[l]-p);var y=this._layoutContentAndController(t,i,g,s,l,h,c,u);if(r){if("end"===o)f[s]+=y[l]+p;else{var v=d[l]+p;f[s]-=v,y[u]-=v}y[l]+=d[l]+p,f[1-s]+=y[c]+y[h]/2-d[h]/2,y[h]=Math.max(y[h],d[h]),y[c]=Math.min(y[c],d[c]+f[1-s]),a.x=f[0],a.y=f[1],a.markRedraw()}return y},e.prototype._layoutContentAndController=function(t,e,n,i,r,o,a,s){var l=this.getContentGroup(),u=this._containerGroup,h=this._controllerGroup;mp(t.get("orient"),l,t.get("itemGap"),i?n.width:null,i?null:n.height),mp("horizontal",h,t.get("pageButtonItemGap",!0));var c=l.getBoundingRect(),p=h.getBoundingRect(),d=this._showController=c[r]>n[r],f=[-c.x,-c.y];e||(f[i]=l[s]);var g=[0,0],y=[-p.x,-p.y],v=rt(t.get("pageButtonGap",!0),t.get("itemGap",!0));d&&("end"===t.get("pageButtonPosition",!0)?y[i]+=n[r]-p[r]:g[i]+=p[r]+v);y[1-i]+=c[o]/2-p[o]/2,l.setPosition(f),u.setPosition(g),h.setPosition(y);var m={x:0,y:0};if(m[r]=d?n[r]:c[r],m[o]=Math.max(c[o],p[o]),m[a]=Math.min(0,p[a]+y[1-i]),u.__rectSize=n[r],d){var x={x:0,y:0};x[r]=Math.max(n[r]-p[r]-v,0),x[o]=m[o],u.setClipPath(new Cs({shape:x})),u.__rectSize=x[r]}else h.eachChild((function(t){t.attr({invisible:!0,silent:!0})}));var _=this._getPageInfo(t);return null!=_.pageIndex&&rh(l,{x:_.contentPosition[0],y:_.contentPosition[1]},d?t:null),this._updatePageInfoView(t,_),m},e.prototype._pageGo=function(t,e,n){var i=this._getPageInfo(e)[t];null!=i&&n.dispatchAction({type:"legendScroll",scrollDataIndex:i,legendId:e.id})},e.prototype._updatePageInfoView=function(t,e){var n=this._controllerGroup;E(["pagePrev","pageNext"],(function(i){var r=null!=e[i+"DataIndex"],o=n.childOfName(i);o&&(o.setStyle("fill",r?t.get("pageIconColor",!0):t.get("pageIconInactiveColor",!0)),o.cursor=r?"pointer":"default")}));var i=n.childOfName("pageText"),r=t.get("pageFormatter"),o=e.pageIndex,a=null!=o?o+1:0,s=e.pageCount;i&&r&&i.setStyle("text",X(r)?r.replace("{current}",null==a?"":a+"").replace("{total}",null==s?"":s+""):r({current:a,total:s}))},e.prototype._getPageInfo=function(t){var e=t.get("scrollDataIndex",!0),n=this.getContentGroup(),i=this._containerGroup.__rectSize,r=t.getOrient().index,o=TB[r],a=CB[r],s=this._findTargetItemIndex(e),l=n.children(),u=l[s],h=l.length,c=h?1:0,p={contentPosition:[n.x,n.y],pageCount:c,pageIndex:c-1,pagePrevDataIndex:null,pageNextDataIndex:null};if(!u)return p;var d=m(u);p.contentPosition[r]=-d.s;for(var f=s+1,g=d,y=d,v=null;f<=h;++f)(!(v=m(l[f]))&&y.e>g.s+i||v&&!x(v,g.s))&&(g=y.i>g.i?y:v)&&(null==p.pageNextDataIndex&&(p.pageNextDataIndex=g.i),++p.pageCount),y=v;for(f=s-1,g=d,y=d,v=null;f>=-1;--f)(v=m(l[f]))&&x(y,v.s)||!(g.i<y.i)||(y=g,null==p.pagePrevDataIndex&&(p.pagePrevDataIndex=g.i),++p.pageCount,++p.pageIndex),g=v;return p;function m(t){if(t){var e=t.getBoundingRect(),n=e[a]+t[a];return{s:n,e:n+e[o],i:t.__legendDataIndex}}}function x(t,e){return t.e>=e&&t.s<=e+i}},e.prototype._findTargetItemIndex=function(t){return this._showController?(this.getContentGroup().eachChild((function(i,r){var o=i.__legendDataIndex;null==n&&null!=o&&(n=r),o===t&&(e=r)})),null!=e?e:n):0;var e,n},e.type="legend.scroll",e}(gB);function AB(t){bm(wB),t.registerComponentModel(SB),t.registerComponentView(DB),function(t){t.registerAction("legendScroll","legendscroll",(function(t,e){var n=t.scrollDataIndex;null!=n&&e.eachComponent({mainType:"legend",subType:"scroll",query:t},(function(t){t.setScrollDataIndex(n)}))}))}(t)}var kB=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="dataZoom.inside",e.defaultOption=yc(DE.defaultOption,{disabled:!1,zoomLock:!1,zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!1,preventDefaultMouseMove:!0}),e}(DE),LB=So();function PB(t,e,n){LB(t).coordSysRecordMap.each((function(t){var i=t.dataZoomInfoMap.get(e.uid);i&&(i.getRange=n)}))}function OB(t,e){if(e){t.removeKey(e.model.uid);var n=e.controller;n&&n.dispose()}}function RB(t,e){t.isDisposed()||t.dispatchAction({type:"dataZoom",animation:{easing:"cubicOut",duration:100},batch:e})}function NB(t,e,n,i){return t.coordinateSystem.containPoint([n,i])}function EB(t){t.registerProcessor(t.PRIORITY.PROCESSOR.FILTER,(function(t,e){var n=LB(e),i=n.coordSysRecordMap||(n.coordSysRecordMap=ft());i.each((function(t){t.dataZoomInfoMap=null})),t.eachComponent({mainType:"dataZoom",subType:"inside"},(function(t){E(TE(t).infoList,(function(n){var r=n.model.uid,o=i.get(r)||i.set(r,function(t,e){var n={model:e,containsPoint:H(NB,e),dispatchAction:H(RB,t),dataZoomInfoMap:null,controller:null},i=n.controller=new AI(t.getZr());return E(["pan","zoom","scrollMove"],(function(t){i.on(t,(function(e){var i=[];n.dataZoomInfoMap.each((function(r){if(e.isAvailableBehavior(r.model.option)){var o=(r.getRange||{})[t],a=o&&o(r.dzReferCoordSysInfo,n.model.mainType,n.controller,e);!r.model.get("disabled",!0)&&a&&i.push({dataZoomId:r.model.id,start:a[0],end:a[1]})}})),i.length&&n.dispatchAction(i)}))})),n}(e,n.model));(o.dataZoomInfoMap||(o.dataZoomInfoMap=ft())).set(t.uid,{dzReferCoordSysInfo:n,model:t,getRange:null})}))})),i.each((function(t){var e,n=t.controller,r=t.dataZoomInfoMap;if(r){var o=r.keys()[0];null!=o&&(e=r.get(o))}if(e){var a=function(t){var e,n="type_",i={type_true:2,type_move:1,type_false:0,type_undefined:-1},r=!0;return t.each((function(t){var o=t.model,a=!o.get("disabled",!0)&&(!o.get("zoomLock",!0)||"move");i[n+a]>i[n+e]&&(e=a),r=r&&o.get("preventDefaultMouseMove",!0)})),{controlType:e,opt:{zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!0,preventDefaultMouseMove:!!r}}}(r);n.enable(a.controlType,a.opt),n.setPointerChecker(t.containsPoint),Ag(t,"dispatchAction",e.model.get("throttle",!0),"fixRate")}else OB(i,t)}))}))}var zB=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="dataZoom.inside",e}return n(e,t),e.prototype.render=function(e,n,i){t.prototype.render.apply(this,arguments),e.noTarget()?this._clear():(this.range=e.getPercentRange(),PB(i,e,{pan:W(VB.pan,this),zoom:W(VB.zoom,this),scrollMove:W(VB.scrollMove,this)}))},e.prototype.dispose=function(){this._clear(),t.prototype.dispose.apply(this,arguments)},e.prototype._clear=function(){!function(t,e){for(var n=LB(t).coordSysRecordMap,i=n.keys(),r=0;r<i.length;r++){var o=i[r],a=n.get(o),s=a.dataZoomInfoMap;if(s){var l=e.uid;s.get(l)&&(s.removeKey(l),s.keys().length||OB(n,a))}}}(this.api,this.dataZoomModel),this.range=null},e.type="dataZoom.inside",e}(LE),VB={zoom:function(t,e,n,i){var r=this.range,o=r.slice(),a=t.axisModels[0];if(a){var s=FB[e](null,[i.originX,i.originY],a,n,t),l=(s.signal>0?s.pixelStart+s.pixelLength-s.pixel:s.pixel-s.pixelStart)/s.pixelLength*(o[1]-o[0])+o[0],u=Math.max(1/i.scale,0);o[0]=(o[0]-l)*u+l,o[1]=(o[1]-l)*u+l;var h=this.dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();return sk(0,o,[0,100],0,h.minSpan,h.maxSpan),this.range=o,r[0]!==o[0]||r[1]!==o[1]?o:void 0}},pan:BB((function(t,e,n,i,r,o){var a=FB[i]([o.oldX,o.oldY],[o.newX,o.newY],e,r,n);return a.signal*(t[1]-t[0])*a.pixel/a.pixelLength})),scrollMove:BB((function(t,e,n,i,r,o){return FB[i]([0,0],[o.scrollDelta,o.scrollDelta],e,r,n).signal*(t[1]-t[0])*o.scrollDelta}))};function BB(t){return function(e,n,i,r){var o=this.range,a=o.slice(),s=e.axisModels[0];if(s)return sk(t(a,s,e,n,i,r),a,[0,100],"all"),this.range=a,o[0]!==a[0]||o[1]!==a[1]?a:void 0}}var FB={grid:function(t,e,n,i,r){var o=n.axis,a={},s=r.model.coordinateSystem.getRect();return t=t||[0,0],"x"===o.dim?(a.pixel=e[0]-t[0],a.pixelLength=s.width,a.pixelStart=s.x,a.signal=o.inverse?1:-1):(a.pixel=e[1]-t[1],a.pixelLength=s.height,a.pixelStart=s.y,a.signal=o.inverse?-1:1),a},polar:function(t,e,n,i,r){var o=n.axis,a={},s=r.model.coordinateSystem,l=s.getRadiusAxis().getExtent(),u=s.getAngleAxis().getExtent();return t=t?s.pointToCoord(t):[0,0],e=s.pointToCoord(e),"radiusAxis"===n.mainType?(a.pixel=e[0]-t[0],a.pixelLength=l[1]-l[0],a.pixelStart=l[0],a.signal=o.inverse?1:-1):(a.pixel=e[1]-t[1],a.pixelLength=u[1]-u[0],a.pixelStart=u[0],a.signal=o.inverse?-1:1),a},singleAxis:function(t,e,n,i,r){var o=n.axis,a=r.model.coordinateSystem.getRect(),s={};return t=t||[0,0],"horizontal"===o.orient?(s.pixel=e[0]-t[0],s.pixelLength=a.width,s.pixelStart=a.x,s.signal=o.inverse?1:-1):(s.pixel=e[1]-t[1],s.pixelLength=a.height,s.pixelStart=a.y,s.signal=o.inverse?-1:1),s}};function GB(t){VE(t),t.registerComponentModel(kB),t.registerComponentView(zB),EB(t)}var WB=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.type="dataZoom.slider",e.layoutMode="box",e.defaultOption=yc(DE.defaultOption,{show:!0,right:"ph",top:"ph",width:"ph",height:"ph",left:null,bottom:null,borderColor:"#d2dbee",borderRadius:3,backgroundColor:"rgba(47,69,84,0)",dataBackground:{lineStyle:{color:"#d2dbee",width:.5},areaStyle:{color:"#d2dbee",opacity:.2}},selectedDataBackground:{lineStyle:{color:"#8fb0f7",width:.5},areaStyle:{color:"#8fb0f7",opacity:.2}},fillerColor:"rgba(135,175,274,0.2)",handleIcon:"path://M-9.35,34.56V42m0-40V9.5m-2,0h4a2,2,0,0,1,2,2v21a2,2,0,0,1-2,2h-4a2,2,0,0,1-2-2v-21A2,2,0,0,1-11.35,9.5Z",handleSize:"100%",handleStyle:{color:"#fff",borderColor:"#ACB8D1"},moveHandleSize:7,moveHandleIcon:"path://M-320.9-50L-320.9-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-348-41-339-50-320.9-50z M-212.3-50L-212.3-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-239.4-41-230.4-50-212.3-50z M-103.7-50L-103.7-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-130.9-41-121.8-50-103.7-50z",moveHandleStyle:{color:"#D2DBEE",opacity:.7},showDetail:!0,showDataShadow:"auto",realtime:!0,zoomLock:!1,textStyle:{color:"#6E7079"},brushSelect:!0,brushStyle:{color:"rgba(135,175,274,0.15)"},emphasis:{handleStyle:{borderColor:"#8FB0F7"},moveHandleStyle:{color:"#8FB0F7"}}}),e}(DE),HB=Cs,YB="horizontal",UB="vertical",XB=["line","bar","candlestick","scatter"],ZB={easing:"cubicOut",duration:100,delay:0},jB=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n._displayables={},n}return n(e,t),e.prototype.init=function(t,e){this.api=e,this._onBrush=W(this._onBrush,this),this._onBrushEnd=W(this._onBrushEnd,this)},e.prototype.render=function(e,n,i,r){if(t.prototype.render.apply(this,arguments),Ag(this,"_dispatchZoomAction",e.get("throttle"),"fixRate"),this._orient=e.getOrient(),!1!==e.get("show")){if(e.noTarget())return this._clear(),void this.group.removeAll();r&&"dataZoom"===r.type&&r.from===this.uid||this._buildView(),this._updateView()}else this.group.removeAll()},e.prototype.dispose=function(){this._clear(),t.prototype.dispose.apply(this,arguments)},e.prototype._clear=function(){kg(this,"_dispatchZoomAction");var t=this.api.getZr();t.off("mousemove",this._onBrush),t.off("mouseup",this._onBrushEnd)},e.prototype._buildView=function(){var t=this.group;t.removeAll(),this._brushing=!1,this._displayables.brushRect=null,this._resetLocation(),this._resetInterval();var e=this._displayables.sliderGroup=new Cr;this._renderBackground(),this._renderHandle(),this._renderDataShadow(),t.add(e),this._positionGroup()},e.prototype._resetLocation=function(){var t=this.dataZoomModel,e=this.api,n=t.get("brushSelect")?7:0,i=this._findCoordRect(),r={width:e.getWidth(),height:e.getHeight()},o=this._orient===YB?{right:r.width-i.x-i.width,top:r.height-30-7-n,width:i.width,height:30}:{right:7,top:i.y,width:30,height:i.height},a=Sp(t.option);E(["right","top","width","height"],(function(t){"ph"===a[t]&&(a[t]=o[t])}));var s=xp(a,r);this._location={x:s.x,y:s.y},this._size=[s.width,s.height],this._orient===UB&&this._size.reverse()},e.prototype._positionGroup=function(){var t=this.group,e=this._location,n=this._orient,i=this.dataZoomModel.getFirstTargetAxisModel(),r=i&&i.get("inverse"),o=this._displayables.sliderGroup,a=(this._dataShadowInfo||{}).otherAxisInverse;o.attr(n!==YB||r?n===YB&&r?{scaleY:a?1:-1,scaleX:-1}:n!==UB||r?{scaleY:a?-1:1,scaleX:-1,rotation:Math.PI/2}:{scaleY:a?-1:1,scaleX:1,rotation:Math.PI/2}:{scaleY:a?1:-1,scaleX:1});var s=t.getBoundingRect([o]);t.x=e.x-s.x,t.y=e.y-s.y,t.markRedraw()},e.prototype._getViewExtent=function(){return[0,this._size[0]]},e.prototype._renderBackground=function(){var t=this.dataZoomModel,e=this._size,n=this._displayables.sliderGroup,i=t.get("brushSelect");n.add(new HB({silent:!0,shape:{x:0,y:0,width:e[0],height:e[1]},style:{fill:t.get("backgroundColor")},z2:-40}));var r=new HB({shape:{x:0,y:0,width:e[0],height:e[1]},style:{fill:"transparent"},z2:0,onclick:W(this._onClickPanel,this)}),o=this.api.getZr();i?(r.on("mousedown",this._onBrushStart,this),r.cursor="crosshair",o.on("mousemove",this._onBrush),o.on("mouseup",this._onBrushEnd)):(o.off("mousemove",this._onBrush),o.off("mouseup",this._onBrushEnd)),n.add(r)},e.prototype._renderDataShadow=function(){var t=this._dataShadowInfo=this._prepareDataShadowInfo();if(this._displayables.dataShadowSegs=[],t){var e=this._size,n=this._shadowSize||[],i=t.series,r=i.getRawData(),o=i.getShadowDim?i.getShadowDim():t.otherDim;if(null!=o){var a=this._shadowPolygonPts,s=this._shadowPolylinePts;if(r!==this._shadowData||o!==this._shadowDim||e[0]!==n[0]||e[1]!==n[1]){var l=r.getDataExtent(o),u=.3*(l[1]-l[0]);l=[l[0]-u,l[1]+u];var h,c=[0,e[1]],p=[0,e[0]],d=[[e[0],0],[0,0]],f=[],g=p[1]/(r.count()-1),y=0,v=Math.round(r.count()/e[0]);r.each([o],(function(t,e){if(v>0&&e%v)y+=g;else{var n=null==t||isNaN(t)||""===t,i=n?0:Nr(t,l,c,!0);n&&!h&&e?(d.push([d[d.length-1][0],0]),f.push([f[f.length-1][0],0])):!n&&h&&(d.push([y,0]),f.push([y,0])),d.push([y,i]),f.push([y,i]),y+=g,h=n}})),a=this._shadowPolygonPts=d,s=this._shadowPolylinePts=f}this._shadowData=r,this._shadowDim=o,this._shadowSize=[e[0],e[1]];for(var m=this.dataZoomModel,x=0;x<3;x++){var _=b(1===x);this._displayables.sliderGroup.add(_),this._displayables.dataShadowSegs.push(_)}}}function b(t){var e=m.getModel(t?"selectedDataBackground":"dataBackground"),n=new Cr,i=new Pu({shape:{points:a},segmentIgnoreThreshold:1,style:e.getModel("areaStyle").getAreaStyle(),silent:!0,z2:-20}),r=new Ru({shape:{points:s},segmentIgnoreThreshold:1,style:e.getModel("lineStyle").getLineStyle(),silent:!0,z2:-19});return n.add(i),n.add(r),n}},e.prototype._prepareDataShadowInfo=function(){var t=this.dataZoomModel,e=t.get("showDataShadow");if(!1!==e){var n,i=this.ecModel;return t.eachTargetAxis((function(r,o){E(t.getAxisProxy(r,o).getTargetSeriesModels(),(function(t){if(!(n||!0!==e&&P(XB,t.get("type"))<0)){var a,s=i.getComponent(ME(r),o).axis,l={x:"y",y:"x",radius:"angle",angle:"radius"}[r],u=t.coordinateSystem;null!=l&&u.getOtherAxis&&(a=u.getOtherAxis(s).inverse),l=t.getData().mapDimension(l),n={thisAxis:s,series:t,thisDim:r,otherDim:l,otherAxisInverse:a}}}),this)}),this),n}},e.prototype._renderHandle=function(){var t=this.group,e=this._displayables,n=e.handles=[null,null],i=e.handleLabels=[null,null],r=this._displayables.sliderGroup,o=this._size,a=this.dataZoomModel,s=this.api,l=a.get("borderRadius")||0,u=a.get("brushSelect"),h=e.filler=new HB({silent:u,style:{fill:a.get("fillerColor")},textConfig:{position:"inside"}});r.add(h),r.add(new HB({silent:!0,subPixelOptimize:!0,shape:{x:0,y:0,width:o[0],height:o[1],r:l},style:{stroke:a.get("dataBackgroundColor")||a.get("borderColor"),lineWidth:1,fill:"rgba(0,0,0,0)"}})),E([0,1],(function(e){var o=a.get("handleIcon");!Dy[o]&&o.indexOf("path://")<0&&o.indexOf("image://")<0&&(o="path://"+o);var s=Ly(o,-1,0,2,2,null,!0);s.attr({cursor:qB(this._orient),draggable:!0,drift:W(this._onDragMove,this,e),ondragend:W(this._onDragEnd,this),onmouseover:W(this._showDataInfo,this,!0),onmouseout:W(this._showDataInfo,this,!1),z2:5});var l=s.getBoundingRect(),u=a.get("handleSize");this._handleHeight=Er(u,this._size[1]),this._handleWidth=l.width/l.height*this._handleHeight,s.setStyle(a.getModel("handleStyle").getItemStyle()),s.style.strokeNoScale=!0,s.rectHover=!0,s.ensureState("emphasis").style=a.getModel(["emphasis","handleStyle"]).getItemStyle(),Ol(s);var h=a.get("handleColor");null!=h&&(s.style.fill=h),r.add(n[e]=s);var c=a.getModel("textStyle");t.add(i[e]=new ks({silent:!0,invisible:!0,style:Uh(c,{x:0,y:0,text:"",verticalAlign:"middle",align:"center",fill:c.getTextColor(),font:c.getFont()}),z2:10}))}),this);var c=h;if(u){var p=Er(a.get("moveHandleSize"),o[1]),d=e.moveHandle=new Cs({style:a.getModel("moveHandleStyle").getItemStyle(),silent:!0,shape:{r:[0,0,2,2],y:o[1]-.5,height:p}}),f=.8*p,g=e.moveHandleIcon=Ly(a.get("moveHandleIcon"),-f/2,-f/2,f,f,"#fff",!0);g.silent=!0,g.y=o[1]+p/2-.5,d.ensureState("emphasis").style=a.getModel(["emphasis","moveHandleStyle"]).getItemStyle();var y=Math.min(o[1]/2,Math.max(p,10));(c=e.moveZone=new Cs({invisible:!0,shape:{y:o[1]-y,height:p+y}})).on("mouseover",(function(){s.enterEmphasis(d)})).on("mouseout",(function(){s.leaveEmphasis(d)})),r.add(d),r.add(g),r.add(c)}c.attr({draggable:!0,cursor:qB(this._orient),drift:W(this._onDragMove,this,"all"),ondragstart:W(this._showDataInfo,this,!0),ondragend:W(this._onDragEnd,this),onmouseover:W(this._showDataInfo,this,!0),onmouseout:W(this._showDataInfo,this,!1)})},e.prototype._resetInterval=function(){var t=this._range=this.dataZoomModel.getPercentRange(),e=this._getViewExtent();this._handleEnds=[Nr(t[0],[0,100],e,!0),Nr(t[1],[0,100],e,!0)]},e.prototype._updateInterval=function(t,e){var n=this.dataZoomModel,i=this._handleEnds,r=this._getViewExtent(),o=n.findRepresentativeAxisProxy().getMinMaxSpan(),a=[0,100];sk(e,i,r,n.get("zoomLock")?"all":t,null!=o.minSpan?Nr(o.minSpan,a,r,!0):null,null!=o.maxSpan?Nr(o.maxSpan,a,r,!0):null);var s=this._range,l=this._range=Vr([Nr(i[0],r,a,!0),Nr(i[1],r,a,!0)]);return!s||s[0]!==l[0]||s[1]!==l[1]},e.prototype._updateView=function(t){var e=this._displayables,n=this._handleEnds,i=Vr(n.slice()),r=this._size;E([0,1],(function(t){var i=e.handles[t],o=this._handleHeight;i.attr({scaleX:o/2,scaleY:o/2,x:n[t]+(t?-1:1),y:r[1]/2-o/2})}),this),e.filler.setShape({x:i[0],y:0,width:i[1]-i[0],height:r[1]});var o={x:i[0],width:i[1]-i[0]};e.moveHandle&&(e.moveHandle.setShape(o),e.moveZone.setShape(o),e.moveZone.getBoundingRect(),e.moveHandleIcon&&e.moveHandleIcon.attr("x",o.x+o.width/2));for(var a=e.dataShadowSegs,s=[0,i[0],i[1],r[0]],l=0;l<a.length;l++){var u=a[l],h=u.getClipPath();h||(h=new Cs,u.setClipPath(h)),h.setShape({x:s[l],y:0,width:s[l+1]-s[l],height:r[1]})}this._updateDataInfo(t)},e.prototype._updateDataInfo=function(t){var e=this.dataZoomModel,n=this._displayables,i=n.handleLabels,r=this._orient,o=["",""];if(e.get("showDetail")){var a=e.findRepresentativeAxisProxy();if(a){var s=a.getAxisModel().axis,l=this._range,u=t?a.calculateDataWindow({start:l[0],end:l[1]}).valueWindow:a.getDataValueWindow();o=[this._formatLabel(u[0],s),this._formatLabel(u[1],s)]}}var h=Vr(this._handleEnds.slice());function c(t){var e=Ih(n.handles[t].parent,this.group),a=Ch(0===t?"right":"left",e),s=this._handleWidth/2+5,l=Th([h[t]+(0===t?-s:s),this._size[1]/2],e);i[t].setStyle({x:l[0],y:l[1],verticalAlign:r===YB?"middle":a,align:r===YB?a:"center",text:o[t]})}c.call(this,0),c.call(this,1)},e.prototype._formatLabel=function(t,e){var n=this.dataZoomModel,i=n.get("labelFormatter"),r=n.get("labelPrecision");null!=r&&"auto"!==r||(r=e.getPixelPrecision());var o=null==t||isNaN(t)?"":"category"===e.type||"time"===e.type?e.scale.getLabel({value:Math.round(t)}):t.toFixed(Math.min(r,20));return U(i)?i(t,o):X(i)?i.replace("{value}",o):o},e.prototype._showDataInfo=function(t){t=this._dragging||t;var e=this._displayables,n=e.handleLabels;n[0].attr("invisible",!t),n[1].attr("invisible",!t),e.moveHandle&&this.api[t?"enterEmphasis":"leaveEmphasis"](e.moveHandle,1)},e.prototype._onDragMove=function(t,e,n,i){this._dragging=!0,se(i.event);var r=Th([e,n],this._displayables.sliderGroup.getLocalTransform(),!0),o=this._updateInterval(t,r[0]),a=this.dataZoomModel.get("realtime");this._updateView(!a),o&&a&&this._dispatchZoomAction(!0)},e.prototype._onDragEnd=function(){this._dragging=!1,this._showDataInfo(!1),!this.dataZoomModel.get("realtime")&&this._dispatchZoomAction(!1)},e.prototype._onClickPanel=function(t){var e=this._size,n=this._displayables.sliderGroup.transformCoordToLocal(t.offsetX,t.offsetY);if(!(n[0]<0||n[0]>e[0]||n[1]<0||n[1]>e[1])){var i=this._handleEnds,r=(i[0]+i[1])/2,o=this._updateInterval("all",n[0]-r);this._updateView(),o&&this._dispatchZoomAction(!1)}},e.prototype._onBrushStart=function(t){var e=t.offsetX,n=t.offsetY;this._brushStart=new Ji(e,n),this._brushing=!0,this._brushStartTime=+new Date},e.prototype._onBrushEnd=function(t){if(this._brushing){var e=this._displayables.brushRect;if(this._brushing=!1,e){e.attr("ignore",!0);var n=e.shape;if(!(+new Date-this._brushStartTime<200&&Math.abs(n.width)<5)){var i=this._getViewExtent(),r=[0,100];this._range=Vr([Nr(n.x,i,r,!0),Nr(n.x+n.width,i,r,!0)]),this._handleEnds=[n.x,n.x+n.width],this._updateView(),this._dispatchZoomAction(!1)}}}},e.prototype._onBrush=function(t){this._brushing&&(se(t.event),this._updateBrushRect(t.offsetX,t.offsetY))},e.prototype._updateBrushRect=function(t,e){var n=this._displayables,i=this.dataZoomModel,r=n.brushRect;r||(r=n.brushRect=new HB({silent:!0,style:i.getModel("brushStyle").getItemStyle()}),n.sliderGroup.add(r)),r.attr("ignore",!1);var o=this._brushStart,a=this._displayables.sliderGroup,s=a.transformCoordToLocal(t,e),l=a.transformCoordToLocal(o.x,o.y),u=this._size;s[0]=Math.max(Math.min(u[0],s[0]),0),r.setShape({x:l[0],y:0,width:s[0]-l[0],height:u[1]})},e.prototype._dispatchZoomAction=function(t){var e=this._range;this.api.dispatchAction({type:"dataZoom",from:this.uid,dataZoomId:this.dataZoomModel.id,animation:t?ZB:null,start:e[0],end:e[1]})},e.prototype._findCoordRect=function(){var t,e=TE(this.dataZoomModel).infoList;if(!t&&e.length){var n=e[0].model.coordinateSystem;t=n.getRect&&n.getRect()}if(!t){var i=this.api.getWidth(),r=this.api.getHeight();t={x:.2*i,y:.2*r,width:.6*i,height:.6*r}}return t},e.type="dataZoom.slider",e}(LE);function qB(t){return"vertical"===t?"ns-resize":"ew-resize"}function KB(t){t.registerComponentModel(WB),t.registerComponentView(jB),VE(t)}var $B=function(t,e,n){var i=T((JB[t]||{})[e]);return n&&Y(i)?i[i.length-1]:i},JB={color:{active:["#006edd","#e0ffff"],inactive:["rgba(0,0,0,0)"]},colorHue:{active:[0,360],inactive:[0,0]},colorSaturation:{active:[.3,1],inactive:[0,0]},colorLightness:{active:[.9,.5],inactive:[0,0]},colorAlpha:{active:[.3,1],inactive:[0,0]},opacity:{active:[.3,1],inactive:[0,0]},symbol:{active:["circle","roundRect","diamond"],inactive:["none"]},symbolSize:{active:[10,50],inactive:[0,0]}},QB=nD.mapVisual,tF=nD.eachVisual,eF=Y,nF=E,iF=Vr,rF=Nr,oF=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.stateList=["inRange","outOfRange"],n.replacableOptionKeys=["inRange","outOfRange","target","controller","color"],n.layoutMode={type:"box",ignoreSize:!0},n.dataBound=[-1/0,1/0],n.targetVisuals={},n.controllerVisuals={},n}return n(e,t),e.prototype.init=function(t,e,n){this.mergeDefaultAndTheme(t,n)},e.prototype.optionUpdated=function(t,e){var n=this.option;!e&&tV(n,t,this.replacableOptionKeys),this.textStyleModel=this.getModel("textStyle"),this.resetItemSize(),this.completeVisualOption()},e.prototype.resetVisual=function(t){var e=this.stateList;t=W(t,this),this.controllerVisuals=Qz(this.option.controller,e,t),this.targetVisuals=Qz(this.option.target,e,t)},e.prototype.getItemSymbol=function(){return null},e.prototype.getTargetSeriesIndices=function(){var t=this.option.seriesIndex,e=[];return null==t||"all"===t?this.ecModel.eachSeries((function(t,n){e.push(n)})):e=ho(t),e},e.prototype.eachTargetSeries=function(t,e){E(this.getTargetSeriesIndices(),(function(n){var i=this.ecModel.getSeriesByIndex(n);i&&t.call(e,i)}),this)},e.prototype.isTargetSeries=function(t){var e=!1;return this.eachTargetSeries((function(n){n===t&&(e=!0)})),e},e.prototype.formatValueText=function(t,e,n){var i,r=this.option,o=r.precision,a=this.dataBound,s=r.formatter;n=n||["<",">"],Y(t)&&(t=t.slice(),i=!0);var l=e?t:i?[u(t[0]),u(t[1])]:u(t);return X(s)?s.replace("{value}",i?l[0]:l).replace("{value2}",i?l[1]:l):U(s)?i?s(t[0],t[1]):s(t):i?t[0]===a[0]?n[0]+" "+l[1]:t[1]===a[1]?n[1]+" "+l[0]:l[0]+" - "+l[1]:l;function u(t){return t===a[0]?"min":t===a[1]?"max":(+t).toFixed(Math.min(o,20))}},e.prototype.resetExtent=function(){var t=this.option,e=iF([t.min,t.max]);this._dataExtent=e},e.prototype.getDataDimensionIndex=function(t){var e=this.option.dimension;if(null!=e)return t.getDimensionIndex(e);for(var n=t.dimensions,i=n.length-1;i>=0;i--){var r=n[i],o=t.getDimensionInfo(r);if(!o.isCalculationCoord)return o.storeDimIndex}},e.prototype.getExtent=function(){return this._dataExtent.slice()},e.prototype.completeVisualOption=function(){var t=this.ecModel,e=this.option,n={inRange:e.inRange,outOfRange:e.outOfRange},i=e.target||(e.target={}),r=e.controller||(e.controller={});C(i,n),C(r,n);var o=this.isCategory();function a(n){eF(e.color)&&!n.inRange&&(n.inRange={color:e.color.slice().reverse()}),n.inRange=n.inRange||{color:t.get("gradientColor")}}a.call(this,i),a.call(this,r),function(t,e,n){var i=t[e],r=t[n];i&&!r&&(r=t[n]={},nF(i,(function(t,e){if(nD.isValidType(e)){var n=$B(e,"inactive",o);null!=n&&(r[e]=n,"color"!==e||r.hasOwnProperty("opacity")||r.hasOwnProperty("colorAlpha")||(r.opacity=[0,0]))}})))}.call(this,i,"inRange","outOfRange"),function(t){var e=(t.inRange||{}).symbol||(t.outOfRange||{}).symbol,n=(t.inRange||{}).symbolSize||(t.outOfRange||{}).symbolSize,i=this.get("inactiveColor"),r=this.getItemSymbol()||"roundRect";nF(this.stateList,(function(a){var s=this.itemSize,l=t[a];l||(l=t[a]={color:o?i:[i]}),null==l.symbol&&(l.symbol=e&&T(e)||(o?r:[r])),null==l.symbolSize&&(l.symbolSize=n&&T(n)||(o?s[0]:[s[0],s[0]])),l.symbol=QB(l.symbol,(function(t){return"none"===t?r:t}));var u=l.symbolSize;if(null!=u){var h=-1/0;tF(u,(function(t){t>h&&(h=t)})),l.symbolSize=QB(u,(function(t){return rF(t,[0,h],[0,s[0]],!0)}))}}),this)}.call(this,r)},e.prototype.resetItemSize=function(){this.itemSize=[parseFloat(this.get("itemWidth")),parseFloat(this.get("itemHeight"))]},e.prototype.isCategory=function(){return!!this.option.categories},e.prototype.setSelected=function(t){},e.prototype.getSelected=function(){return null},e.prototype.getValueState=function(t){return null},e.prototype.getVisualMeta=function(t){return null},e.type="visualMap",e.dependencies=["series"],e.defaultOption={show:!0,z:4,seriesIndex:"all",min:0,max:200,left:0,right:null,top:null,bottom:0,itemWidth:null,itemHeight:null,inverse:!1,orient:"vertical",backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",contentColor:"#5793f3",inactiveColor:"#aaa",borderWidth:0,padding:5,textGap:10,precision:0,textStyle:{color:"#333"}},e}(Tp),aF=[20,140],sF=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.optionUpdated=function(e,n){t.prototype.optionUpdated.apply(this,arguments),this.resetExtent(),this.resetVisual((function(t){t.mappingMethod="linear",t.dataExtent=this.getExtent()})),this._resetRange()},e.prototype.resetItemSize=function(){t.prototype.resetItemSize.apply(this,arguments);var e=this.itemSize;(null==e[0]||isNaN(e[0]))&&(e[0]=aF[0]),(null==e[1]||isNaN(e[1]))&&(e[1]=aF[1])},e.prototype._resetRange=function(){var t=this.getExtent(),e=this.option.range;!e||e.auto?(t.auto=1,this.option.range=t):Y(e)&&(e[0]>e[1]&&e.reverse(),e[0]=Math.max(e[0],t[0]),e[1]=Math.min(e[1],t[1]))},e.prototype.completeVisualOption=function(){t.prototype.completeVisualOption.apply(this,arguments),E(this.stateList,(function(t){var e=this.option.controller[t].symbolSize;e&&e[0]!==e[1]&&(e[0]=e[1]/3)}),this)},e.prototype.setSelected=function(t){this.option.range=t.slice(),this._resetRange()},e.prototype.getSelected=function(){var t=this.getExtent(),e=Vr((this.get("range")||[]).slice());return e[0]>t[1]&&(e[0]=t[1]),e[1]>t[1]&&(e[1]=t[1]),e[0]<t[0]&&(e[0]=t[0]),e[1]<t[0]&&(e[1]=t[0]),e},e.prototype.getValueState=function(t){var e=this.option.range,n=this.getExtent();return(e[0]<=n[0]||e[0]<=t)&&(e[1]>=n[1]||t<=e[1])?"inRange":"outOfRange"},e.prototype.findTargetDataIndices=function(t){var e=[];return this.eachTargetSeries((function(n){var i=[],r=n.getData();r.each(this.getDataDimensionIndex(r),(function(e,n){t[0]<=e&&e<=t[1]&&i.push(n)}),this),e.push({seriesId:n.id,dataIndex:i})}),this),e},e.prototype.getVisualMeta=function(t){var e=lF(this,"outOfRange",this.getExtent()),n=lF(this,"inRange",this.option.range.slice()),i=[];function r(e,n){i.push({value:e,color:t(e,n)})}for(var o=0,a=0,s=n.length,l=e.length;a<l&&(!n.length||e[a]<=n[0]);a++)e[a]<n[o]&&r(e[a],"outOfRange");for(var u=1;o<s;o++,u=0)u&&i.length&&r(n[o],"outOfRange"),r(n[o],"inRange");for(u=1;a<l;a++)(!n.length||n[n.length-1]<e[a])&&(u&&(i.length&&r(i[i.length-1].value,"outOfRange"),u=0),r(e[a],"outOfRange"));var h=i.length;return{stops:i,outerColors:[h?i[0].color:"transparent",h?i[h-1].color:"transparent"]}},e.type="visualMap.continuous",e.defaultOption=yc(oF.defaultOption,{align:"auto",calculable:!1,hoverLink:!0,realtime:!0,handleIcon:"path://M-11.39,9.77h0a3.5,3.5,0,0,1-3.5,3.5h-22a3.5,3.5,0,0,1-3.5-3.5h0a3.5,3.5,0,0,1,3.5-3.5h22A3.5,3.5,0,0,1-11.39,9.77Z",handleSize:"120%",handleStyle:{borderColor:"#fff",borderWidth:1},indicatorIcon:"circle",indicatorSize:"50%",indicatorStyle:{borderColor:"#fff",borderWidth:2,shadowBlur:2,shadowOffsetX:1,shadowOffsetY:1,shadowColor:"rgba(0,0,0,0.2)"}}),e}(oF);function lF(t,e,n){if(n[0]===n[1])return n.slice();for(var i=(n[1]-n[0])/200,r=n[0],o=[],a=0;a<=200&&r<n[1];a++)o.push(r),r+=i;return o.push(n[1]),o}var uF=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n.autoPositionValues={left:1,right:1,top:1,bottom:1},n}return n(e,t),e.prototype.init=function(t,e){this.ecModel=t,this.api=e},e.prototype.render=function(t,e,n,i){this.visualMapModel=t,!1!==t.get("show")?this.doRender(t,e,n,i):this.group.removeAll()},e.prototype.renderBackground=function(t){var e=this.visualMapModel,n=ip(e.get("padding")||0),i=t.getBoundingRect();t.add(new Cs({z2:-1,silent:!0,shape:{x:i.x-n[3],y:i.y-n[0],width:i.width+n[3]+n[1],height:i.height+n[0]+n[2]},style:{fill:e.get("backgroundColor"),stroke:e.get("borderColor"),lineWidth:e.get("borderWidth")}}))},e.prototype.getControllerVisual=function(t,e,n){var i=(n=n||{}).forceState,r=this.visualMapModel,o={};if("color"===e){var a=r.get("contentColor");o.color=a}function s(t){return o[t]}function l(t,e){o[t]=e}var u=r.controllerVisuals[i||r.getValueState(t)];return E(nD.prepareVisualTypes(u),(function(i){var r=u[i];n.convertOpacityToAlpha&&"opacity"===i&&(i="colorAlpha",r=u.__alphaForOpacity),nD.dependsOn(i,e)&&r&&r.applyVisual(t,s,l)})),o[e]},e.prototype.positionGroup=function(t){var e=this.visualMapModel,n=this.api;_p(t,e.getBoxLayoutParams(),{width:n.getWidth(),height:n.getHeight()})},e.prototype.doRender=function(t,e,n,i){},e.type="visualMap",e}(gg),hF=[["left","right","width"],["top","bottom","height"]];function cF(t,e,n){var i=t.option,r=i.align;if(null!=r&&"auto"!==r)return r;for(var o={width:e.getWidth(),height:e.getHeight()},a="horizontal"===i.orient?1:0,s=hF[a],l=[0,null,10],u={},h=0;h<3;h++)u[hF[1-a][h]]=l[h],u[s[h]]=2===h?n[0]:i[s[h]];var c=[["x","width",3],["y","height",0]][a],p=xp(u,o,i.padding);return s[(p.margin[c[2]]||0)+p[c[0]]+.5*p[c[1]]<.5*o[c[1]]?0:1]}function pF(t,e){return E(t||[],(function(t){null!=t.dataIndex&&(t.dataIndexInside=t.dataIndex,t.dataIndex=null),t.highlightKey="visualMap"+(e?e.componentIndex:"")})),t}var dF=Nr,fF=E,gF=Math.min,yF=Math.max,vF=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n._shapes={},n._dataInterval=[],n._handleEnds=[],n._hoverLinkDataIndices=[],n}return n(e,t),e.prototype.doRender=function(t,e,n,i){this._api=n,i&&"selectDataRange"===i.type&&i.from===this.uid||this._buildView()},e.prototype._buildView=function(){this.group.removeAll();var t=this.visualMapModel,e=this.group;this._orient=t.get("orient"),this._useHandle=t.get("calculable"),this._resetInterval(),this._renderBar(e);var n=t.get("text");this._renderEndsText(e,n,0),this._renderEndsText(e,n,1),this._updateView(!0),this.renderBackground(e),this._updateView(),this._enableHoverLinkToSeries(),this._enableHoverLinkFromSeries(),this.positionGroup(e)},e.prototype._renderEndsText=function(t,e,n){if(e){var i=e[1-n];i=null!=i?i+"":"";var r=this.visualMapModel,o=r.get("textGap"),a=r.itemSize,s=this._shapes.mainGroup,l=this._applyTransform([a[0]/2,0===n?-o:a[1]+o],s),u=this._applyTransform(0===n?"bottom":"top",s),h=this._orient,c=this.visualMapModel.textStyleModel;this.group.add(new ks({style:Uh(c,{x:l[0],y:l[1],verticalAlign:"horizontal"===h?"middle":u,align:"horizontal"===h?u:"center",text:i})}))}},e.prototype._renderBar=function(t){var e=this.visualMapModel,n=this._shapes,i=e.itemSize,r=this._orient,o=this._useHandle,a=cF(e,this.api,i),s=n.mainGroup=this._createBarGroup(a),l=new Cr;s.add(l),l.add(n.outOfRange=mF()),l.add(n.inRange=mF(null,o?_F(this._orient):null,W(this._dragHandle,this,"all",!1),W(this._dragHandle,this,"all",!0))),l.setClipPath(new Cs({shape:{x:0,y:0,width:i[0],height:i[1],r:3}}));var u=e.textStyleModel.getTextRect("国"),h=yF(u.width,u.height);o&&(n.handleThumbs=[],n.handleLabels=[],n.handleLabelPoints=[],this._createHandle(e,s,0,i,h,r),this._createHandle(e,s,1,i,h,r)),this._createIndicator(e,s,i,h,r),t.add(s)},e.prototype._createHandle=function(t,e,n,i,r,o){var a=W(this._dragHandle,this,n,!1),s=W(this._dragHandle,this,n,!0),l=gr(t.get("handleSize"),i[0]),u=Ly(t.get("handleIcon"),-l/2,-l/2,l,l,null,!0),h=_F(this._orient);u.attr({cursor:h,draggable:!0,drift:a,ondragend:s,onmousemove:function(t){se(t.event)}}),u.x=i[0]/2,u.useStyle(t.getModel("handleStyle").getItemStyle()),u.setStyle({strokeNoScale:!0,strokeFirst:!0}),u.style.lineWidth*=2,u.ensureState("emphasis").style=t.getModel(["emphasis","handleStyle"]).getItemStyle(),Bl(u,!0),e.add(u);var c=this.visualMapModel.textStyleModel,p=new ks({cursor:h,draggable:!0,drift:a,onmousemove:function(t){se(t.event)},ondragend:s,style:Uh(c,{x:0,y:0,text:""})});p.ensureState("blur").style={opacity:.1},p.stateTransition={duration:200},this.group.add(p);var d=[l,0],f=this._shapes;f.handleThumbs[n]=u,f.handleLabelPoints[n]=d,f.handleLabels[n]=p},e.prototype._createIndicator=function(t,e,n,i,r){var o=gr(t.get("indicatorSize"),n[0]),a=Ly(t.get("indicatorIcon"),-o/2,-o/2,o,o,null,!0);a.attr({cursor:"move",invisible:!0,silent:!0,x:n[0]/2});var s=t.getModel("indicatorStyle").getItemStyle();if(a instanceof _s){var l=a.style;a.useStyle(A({image:l.image,x:l.x,y:l.y,width:l.width,height:l.height},s))}else a.useStyle(s);e.add(a);var u=this.visualMapModel.textStyleModel,h=new ks({silent:!0,invisible:!0,style:Uh(u,{x:0,y:0,text:""})});this.group.add(h);var c=[("horizontal"===r?i/2:6)+n[0]/2,0],p=this._shapes;p.indicator=a,p.indicatorLabel=h,p.indicatorLabelPoint=c,this._firstShowIndicator=!0},e.prototype._dragHandle=function(t,e,n,i){if(this._useHandle){if(this._dragging=!e,!e){var r=this._applyTransform([n,i],this._shapes.mainGroup,!0);this._updateInterval(t,r[1]),this._hideIndicator(),this._updateView()}e===!this.visualMapModel.get("realtime")&&this.api.dispatchAction({type:"selectDataRange",from:this.uid,visualMapId:this.visualMapModel.id,selected:this._dataInterval.slice()}),e?!this._hovering&&this._clearHoverLinkToSeries():xF(this.visualMapModel)&&this._doHoverLinkToSeries(this._handleEnds[t],!1)}},e.prototype._resetInterval=function(){var t=this.visualMapModel,e=this._dataInterval=t.getSelected(),n=t.getExtent(),i=[0,t.itemSize[1]];this._handleEnds=[dF(e[0],n,i,!0),dF(e[1],n,i,!0)]},e.prototype._updateInterval=function(t,e){e=e||0;var n=this.visualMapModel,i=this._handleEnds,r=[0,n.itemSize[1]];sk(e,i,r,t,0);var o=n.getExtent();this._dataInterval=[dF(i[0],r,o,!0),dF(i[1],r,o,!0)]},e.prototype._updateView=function(t){var e=this.visualMapModel,n=e.getExtent(),i=this._shapes,r=[0,e.itemSize[1]],o=t?r:this._handleEnds,a=this._createBarVisual(this._dataInterval,n,o,"inRange"),s=this._createBarVisual(n,n,r,"outOfRange");i.inRange.setStyle({fill:a.barColor}).setShape("points",a.barPoints),i.outOfRange.setStyle({fill:s.barColor}).setShape("points",s.barPoints),this._updateHandle(o,a)},e.prototype._createBarVisual=function(t,e,n,i){var r={forceState:i,convertOpacityToAlpha:!0},o=this._makeColorGradient(t,r),a=[this.getControllerVisual(t[0],"symbolSize",r),this.getControllerVisual(t[1],"symbolSize",r)],s=this._createBarPoints(n,a);return{barColor:new Xu(0,0,0,1,o),barPoints:s,handlesColor:[o[0].color,o[o.length-1].color]}},e.prototype._makeColorGradient=function(t,e){var n=[],i=(t[1]-t[0])/100;n.push({color:this.getControllerVisual(t[0],"color",e),offset:0});for(var r=1;r<100;r++){var o=t[0]+i*r;if(o>t[1])break;n.push({color:this.getControllerVisual(o,"color",e),offset:r/100})}return n.push({color:this.getControllerVisual(t[1],"color",e),offset:1}),n},e.prototype._createBarPoints=function(t,e){var n=this.visualMapModel.itemSize;return[[n[0]-e[0],t[0]],[n[0],t[0]],[n[0],t[1]],[n[0]-e[1],t[1]]]},e.prototype._createBarGroup=function(t){var e=this._orient,n=this.visualMapModel.get("inverse");return new Cr("horizontal"!==e||n?"horizontal"===e&&n?{scaleX:"bottom"===t?-1:1,rotation:-Math.PI/2}:"vertical"!==e||n?{scaleX:"left"===t?1:-1}:{scaleX:"left"===t?1:-1,scaleY:-1}:{scaleX:"bottom"===t?1:-1,rotation:Math.PI/2})},e.prototype._updateHandle=function(t,e){if(this._useHandle){var n=this._shapes,i=this.visualMapModel,r=n.handleThumbs,o=n.handleLabels,a=i.itemSize,s=i.getExtent();fF([0,1],(function(l){var u=r[l];u.setStyle("fill",e.handlesColor[l]),u.y=t[l];var h=dF(t[l],[0,a[1]],s,!0),c=this.getControllerVisual(h,"symbolSize");u.scaleX=u.scaleY=c/a[0],u.x=a[0]-c/2;var p=Th(n.handleLabelPoints[l],Ih(u,this.group));o[l].setStyle({x:p[0],y:p[1],text:i.formatValueText(this._dataInterval[l]),verticalAlign:"middle",align:"vertical"===this._orient?this._applyTransform("left",n.mainGroup):"center"})}),this)}},e.prototype._showIndicator=function(t,e,n,i){var r=this.visualMapModel,o=r.getExtent(),a=r.itemSize,s=[0,a[1]],l=this._shapes,u=l.indicator;if(u){u.attr("invisible",!1);var h=this.getControllerVisual(t,"color",{convertOpacityToAlpha:!0}),c=this.getControllerVisual(t,"symbolSize"),p=dF(t,o,s,!0),d=a[0]-c/2,f={x:u.x,y:u.y};u.y=p,u.x=d;var g=Th(l.indicatorLabelPoint,Ih(u,this.group)),y=l.indicatorLabel;y.attr("invisible",!1);var v=this._applyTransform("left",l.mainGroup),m="horizontal"===this._orient;y.setStyle({text:(n||"")+r.formatValueText(e),verticalAlign:m?v:"middle",align:m?"center":v});var x={x:d,y:p,style:{fill:h}},_={style:{x:g[0],y:g[1]}};if(r.ecModel.isAnimationEnabled()&&!this._firstShowIndicator){var b={duration:100,easing:"cubicInOut",additive:!0};u.x=f.x,u.y=f.y,u.animateTo(x,b),y.animateTo(_,b)}else u.attr(x),y.attr(_);this._firstShowIndicator=!1;var w=this._shapes.handleLabels;if(w)for(var S=0;S<w.length;S++)this._api.enterBlur(w[S])}},e.prototype._enableHoverLinkToSeries=function(){var t=this;this._shapes.mainGroup.on("mousemove",(function(e){if(t._hovering=!0,!t._dragging){var n=t.visualMapModel.itemSize,i=t._applyTransform([e.offsetX,e.offsetY],t._shapes.mainGroup,!0,!0);i[1]=gF(yF(0,i[1]),n[1]),t._doHoverLinkToSeries(i[1],0<=i[0]&&i[0]<=n[0])}})).on("mouseout",(function(){t._hovering=!1,!t._dragging&&t._clearHoverLinkToSeries()}))},e.prototype._enableHoverLinkFromSeries=function(){var t=this.api.getZr();this.visualMapModel.option.hoverLink?(t.on("mouseover",this._hoverLinkFromSeriesMouseOver,this),t.on("mouseout",this._hideIndicator,this)):this._clearHoverLinkFromSeries()},e.prototype._doHoverLinkToSeries=function(t,e){var n=this.visualMapModel,i=n.itemSize;if(n.option.hoverLink){var r=[0,i[1]],o=n.getExtent();t=gF(yF(r[0],t),r[1]);var a=function(t,e,n){var i=6,r=t.get("hoverLinkDataSize");r&&(i=dF(r,e,n,!0)/2);return i}(n,o,r),s=[t-a,t+a],l=dF(t,r,o,!0),u=[dF(s[0],r,o,!0),dF(s[1],r,o,!0)];s[0]<r[0]&&(u[0]=-1/0),s[1]>r[1]&&(u[1]=1/0),e&&(u[0]===-1/0?this._showIndicator(l,u[1],"< ",a):u[1]===1/0?this._showIndicator(l,u[0],"> ",a):this._showIndicator(l,l,"≈ ",a));var h=this._hoverLinkDataIndices,c=[];(e||xF(n))&&(c=this._hoverLinkDataIndices=n.findTargetDataIndices(u));var p=function(t,e){var n={},i={};return r(t||[],n),r(e||[],i,n),[o(n),o(i)];function r(t,e,n){for(var i=0,r=t.length;i<r;i++){var o=xo(t[i].seriesId,null);if(null==o)return;for(var a=ho(t[i].dataIndex),s=n&&n[o],l=0,u=a.length;l<u;l++){var h=a[l];s&&s[h]?s[h]=null:(e[o]||(e[o]={}))[h]=1}}}function o(t,e){var n=[];for(var i in t)if(t.hasOwnProperty(i)&&null!=t[i])if(e)n.push(+i);else{var r=o(t[i],!0);r.length&&n.push({seriesId:i,dataIndex:r})}return n}}(h,c);this._dispatchHighDown("downplay",pF(p[0],n)),this._dispatchHighDown("highlight",pF(p[1],n))}},e.prototype._hoverLinkFromSeriesMouseOver=function(t){var e=t.target,n=this.visualMapModel;if(e&&null!=Hs(e).dataIndex){var i=Hs(e),r=this.ecModel.getSeriesByIndex(i.seriesIndex);if(n.isTargetSeries(r)){var o=r.getData(i.dataType),a=o.getStore().get(n.getDataDimensionIndex(o),i.dataIndex);isNaN(a)||this._showIndicator(a,a)}}},e.prototype._hideIndicator=function(){var t=this._shapes;t.indicator&&t.indicator.attr("invisible",!0),t.indicatorLabel&&t.indicatorLabel.attr("invisible",!0);var e=this._shapes.handleLabels;if(e)for(var n=0;n<e.length;n++)this._api.leaveBlur(e[n])},e.prototype._clearHoverLinkToSeries=function(){this._hideIndicator();var t=this._hoverLinkDataIndices;this._dispatchHighDown("downplay",pF(t,this.visualMapModel)),t.length=0},e.prototype._clearHoverLinkFromSeries=function(){this._hideIndicator();var t=this.api.getZr();t.off("mouseover",this._hoverLinkFromSeriesMouseOver),t.off("mouseout",this._hideIndicator)},e.prototype._applyTransform=function(t,e,n,i){var r=Ih(e,i?null:this.group);return Y(t)?Th(t,r,n):Ch(t,r,n)},e.prototype._dispatchHighDown=function(t,e){e&&e.length&&this.api.dispatchAction({type:t,batch:e})},e.prototype.dispose=function(){this._clearHoverLinkFromSeries(),this._clearHoverLinkToSeries()},e.prototype.remove=function(){this._clearHoverLinkFromSeries(),this._clearHoverLinkToSeries()},e.type="visualMap.continuous",e}(uF);function mF(t,e,n,i){return new Pu({shape:{points:t},draggable:!!n,cursor:e,drift:n,onmousemove:function(t){se(t.event)},ondragend:i})}function xF(t){var e=t.get("hoverLinkOnHandle");return!!(null==e?t.get("realtime"):e)}function _F(t){return"vertical"===t?"ns-resize":"ew-resize"}var bF={type:"selectDataRange",event:"dataRangeSelected",update:"update"},wF=function(t,e){e.eachComponent({mainType:"visualMap",query:t},(function(e){e.setSelected(t.selected)}))},SF=[{createOnAllSeries:!0,reset:function(t,e){var n=[];return e.eachComponent("visualMap",(function(e){var i,r,o,a,s,l=t.pipelineContext;!e.isTargetSeries(t)||l&&l.large||n.push((i=e.stateList,r=e.targetVisuals,o=W(e.getValueState,e),a=e.getDataDimensionIndex(t.getData()),s={},E(i,(function(t){var e=nD.prepareVisualTypes(r[t]);s[t]=e})),{progress:function(t,e){var n,i;function l(t){return fy(e,i,t)}function u(t,n){yy(e,i,t,n)}null!=a&&(n=e.getDimensionIndex(a));for(var h=e.getStore();null!=(i=t.next());){var c=e.getRawDataItem(i);if(!c||!1!==c.visualMap)for(var p=null!=a?h.get(n,i):i,d=o(p),f=r[d],g=s[d],y=0,v=g.length;y<v;y++){var m=g[y];f[m]&&f[m].applyVisual(p,l,u)}}}}))})),n}},{createOnAllSeries:!0,reset:function(t,e){var n=t.getData(),i=[];e.eachComponent("visualMap",(function(e){if(e.isTargetSeries(t)){var r=e.getVisualMeta(W(MF,null,t,e))||{stops:[],outerColors:[]},o=e.getDataDimensionIndex(n);o>=0&&(r.dimension=o,i.push(r))}})),t.getData().setVisual("visualMeta",i)}}];function MF(t,e,n,i){for(var r=e.targetVisuals[i],o=nD.prepareVisualTypes(r),a={color:gy(t.getData(),"color")},s=0,l=o.length;s<l;s++){var u=o[s],h=r["opacity"===u?"__alphaForOpacity":u];h&&h.applyVisual(n,c,p)}return a.color;function c(t){return a[t]}function p(t,e){a[t]=e}}var IF=E;function TF(t){var e=t&&t.visualMap;Y(e)||(e=e?[e]:[]),IF(e,(function(t){if(t){CF(t,"splitList")&&!CF(t,"pieces")&&(t.pieces=t.splitList,delete t.splitList);var e=t.pieces;e&&Y(e)&&IF(e,(function(t){q(t)&&(CF(t,"start")&&!CF(t,"min")&&(t.min=t.start),CF(t,"end")&&!CF(t,"max")&&(t.max=t.end))}))}}))}function CF(t,e){return t&&t.hasOwnProperty&&t.hasOwnProperty(e)}var DF=!1;function AF(t){DF||(DF=!0,t.registerSubTypeDefaulter("visualMap",(function(t){return t.categories||(t.pieces?t.pieces.length>0:t.splitNumber>0)&&!t.calculable?"piecewise":"continuous"})),t.registerAction(bF,wF),E(SF,(function(e){t.registerVisual(t.PRIORITY.VISUAL.COMPONENT,e)})),t.registerPreprocessor(TF))}function kF(t){t.registerComponentModel(sF),t.registerComponentView(vF),AF(t)}var LF=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n._pieceList=[],n}return n(e,t),e.prototype.optionUpdated=function(e,n){t.prototype.optionUpdated.apply(this,arguments),this.resetExtent();var i=this._mode=this._determineMode();this._pieceList=[],PF[this._mode].call(this,this._pieceList),this._resetSelected(e,n);var r=this.option.categories;this.resetVisual((function(t,e){"categories"===i?(t.mappingMethod="category",t.categories=T(r)):(t.dataExtent=this.getExtent(),t.mappingMethod="piecewise",t.pieceList=z(this._pieceList,(function(t){return t=T(t),"inRange"!==e&&(t.visual=null),t})))}))},e.prototype.completeVisualOption=function(){var e=this.option,n={},i=nD.listVisualTypes(),r=this.isCategory();function o(t,e,n){return t&&t[e]&&t[e].hasOwnProperty(n)}E(e.pieces,(function(t){E(i,(function(e){t.hasOwnProperty(e)&&(n[e]=1)}))})),E(n,(function(t,n){var i=!1;E(this.stateList,(function(t){i=i||o(e,t,n)||o(e.target,t,n)}),this),!i&&E(this.stateList,(function(t){(e[t]||(e[t]={}))[n]=$B(n,"inRange"===t?"active":"inactive",r)}))}),this),t.prototype.completeVisualOption.apply(this,arguments)},e.prototype._resetSelected=function(t,e){var n=this.option,i=this._pieceList,r=(e?n:t).selected||{};if(n.selected=r,E(i,(function(t,e){var n=this.getSelectedMapKey(t);r.hasOwnProperty(n)||(r[n]=!0)}),this),"single"===n.selectedMode){var o=!1;E(i,(function(t,e){var n=this.getSelectedMapKey(t);r[n]&&(o?r[n]=!1:o=!0)}),this)}},e.prototype.getItemSymbol=function(){return this.get("itemSymbol")},e.prototype.getSelectedMapKey=function(t){return"categories"===this._mode?t.value+"":t.index+""},e.prototype.getPieceList=function(){return this._pieceList},e.prototype._determineMode=function(){var t=this.option;return t.pieces&&t.pieces.length>0?"pieces":this.option.categories?"categories":"splitNumber"},e.prototype.setSelected=function(t){this.option.selected=T(t)},e.prototype.getValueState=function(t){var e=nD.findPieceIndex(t,this._pieceList);return null!=e&&this.option.selected[this.getSelectedMapKey(this._pieceList[e])]?"inRange":"outOfRange"},e.prototype.findTargetDataIndices=function(t){var e=[],n=this._pieceList;return this.eachTargetSeries((function(i){var r=[],o=i.getData();o.each(this.getDataDimensionIndex(o),(function(e,i){nD.findPieceIndex(e,n)===t&&r.push(i)}),this),e.push({seriesId:i.id,dataIndex:r})}),this),e},e.prototype.getRepresentValue=function(t){var e;if(this.isCategory())e=t.value;else if(null!=t.value)e=t.value;else{var n=t.interval||[];e=n[0]===-1/0&&n[1]===1/0?0:(n[0]+n[1])/2}return e},e.prototype.getVisualMeta=function(t){if(!this.isCategory()){var e=[],n=["",""],i=this,r=this._pieceList.slice();if(r.length){var o=r[0].interval[0];o!==-1/0&&r.unshift({interval:[-1/0,o]}),(o=r[r.length-1].interval[1])!==1/0&&r.push({interval:[o,1/0]})}else r.push({interval:[-1/0,1/0]});var a=-1/0;return E(r,(function(t){var e=t.interval;e&&(e[0]>a&&s([a,e[0]],"outOfRange"),s(e.slice()),a=e[1])}),this),{stops:e,outerColors:n}}function s(r,o){var a=i.getRepresentValue({interval:r});o||(o=i.getValueState(a));var s=t(a,o);r[0]===-1/0?n[0]=s:r[1]===1/0?n[1]=s:e.push({value:r[0],color:s},{value:r[1],color:s})}},e.type="visualMap.piecewise",e.defaultOption=yc(oF.defaultOption,{selected:null,minOpen:!1,maxOpen:!1,align:"auto",itemWidth:20,itemHeight:14,itemSymbol:"roundRect",pieces:null,categories:null,splitNumber:5,selectedMode:"multiple",itemGap:10,hoverLink:!0}),e}(oF),PF={splitNumber:function(t){var e=this.option,n=Math.min(e.precision,20),i=this.getExtent(),r=e.splitNumber;r=Math.max(parseInt(r,10),1),e.splitNumber=r;for(var o=(i[1]-i[0])/r;+o.toFixed(n)!==o&&n<5;)n++;e.precision=n,o=+o.toFixed(n),e.minOpen&&t.push({interval:[-1/0,i[0]],close:[0,0]});for(var a=0,s=i[0];a<r;s+=o,a++){var l=a===r-1?i[1]:s+o;t.push({interval:[s,l],close:[1,1]})}e.maxOpen&&t.push({interval:[i[1],1/0],close:[0,0]}),Qr(t),E(t,(function(t,e){t.index=e,t.text=this.formatValueText(t.interval)}),this)},categories:function(t){var e=this.option;E(e.categories,(function(e){t.push({text:this.formatValueText(e,!0),value:e})}),this),OF(e,t)},pieces:function(t){var e=this.option;E(e.pieces,(function(e,n){q(e)||(e={value:e});var i={text:"",index:n};if(null!=e.label&&(i.text=e.label),e.hasOwnProperty("value")){var r=i.value=e.value;i.interval=[r,r],i.close=[1,1]}else{for(var o=i.interval=[],a=i.close=[0,0],s=[1,0,1],l=[-1/0,1/0],u=[],h=0;h<2;h++){for(var c=[["gte","gt","min"],["lte","lt","max"]][h],p=0;p<3&&null==o[h];p++)o[h]=e[c[p]],a[h]=s[p],u[h]=2===p;null==o[h]&&(o[h]=l[h])}u[0]&&o[1]===1/0&&(a[0]=0),u[1]&&o[0]===-1/0&&(a[1]=0),o[0]===o[1]&&a[0]&&a[1]&&(i.value=o[0])}i.visual=nD.retrieveVisuals(e),t.push(i)}),this),OF(e,t),Qr(t),E(t,(function(t){var e=t.close,n=[["<","≤"][e[1]],[">","≥"][e[0]]];t.text=t.text||this.formatValueText(null!=t.value?t.value:t.interval,!1,n)}),this)}};function OF(t,e){var n=t.inverse;("vertical"===t.orient?!n:n)&&e.reverse()}var RF=function(t){function e(){var n=null!==t&&t.apply(this,arguments)||this;return n.type=e.type,n}return n(e,t),e.prototype.doRender=function(){var t=this.group;t.removeAll();var e=this.visualMapModel,n=e.get("textGap"),i=e.textStyleModel,r=i.getFont(),o=i.getTextColor(),a=this._getItemAlign(),s=e.itemSize,l=this._getViewData(),u=l.endsText,h=it(e.get("showLabel",!0),!u);u&&this._renderEndsText(t,u[0],s,h,a),E(l.viewPieceList,(function(i){var l=i.piece,u=new Cr;u.onclick=W(this._onItemClick,this,l),this._enableHoverLink(u,i.indexInModelPieceList);var c=e.getRepresentValue(l);if(this._createItemSymbol(u,c,[0,0,s[0],s[1]]),h){var p=this.visualMapModel.getValueState(c);u.add(new ks({style:{x:"right"===a?-n:s[0]+n,y:s[1]/2,text:l.text,verticalAlign:"middle",align:a,font:r,fill:o,opacity:"outOfRange"===p?.5:1}}))}t.add(u)}),this),u&&this._renderEndsText(t,u[1],s,h,a),mp(e.get("orient"),t,e.get("itemGap")),this.renderBackground(t),this.positionGroup(t)},e.prototype._enableHoverLink=function(t,e){var n=this;t.on("mouseover",(function(){return i("highlight")})).on("mouseout",(function(){return i("downplay")}));var i=function(t){var i=n.visualMapModel;i.option.hoverLink&&n.api.dispatchAction({type:t,batch:pF(i.findTargetDataIndices(e),i)})}},e.prototype._getItemAlign=function(){var t=this.visualMapModel,e=t.option;if("vertical"===e.orient)return cF(t,this.api,t.itemSize);var n=e.align;return n&&"auto"!==n||(n="left"),n},e.prototype._renderEndsText=function(t,e,n,i,r){if(e){var o=new Cr,a=this.visualMapModel.textStyleModel;o.add(new ks({style:Uh(a,{x:i?"right"===r?n[0]:0:n[0]/2,y:n[1]/2,verticalAlign:"middle",align:i?r:"center",text:e})})),t.add(o)}},e.prototype._getViewData=function(){var t=this.visualMapModel,e=z(t.getPieceList(),(function(t,e){return{piece:t,indexInModelPieceList:e}})),n=t.get("text"),i=t.get("orient"),r=t.get("inverse");return("horizontal"===i?r:!r)?e.reverse():n&&(n=n.slice().reverse()),{viewPieceList:e,endsText:n}},e.prototype._createItemSymbol=function(t,e,n){t.add(Ly(this.getControllerVisual(e,"symbol"),n[0],n[1],n[2],n[3],this.getControllerVisual(e,"color")))},e.prototype._onItemClick=function(t){var e=this.visualMapModel,n=e.option,i=T(n.selected),r=e.getSelectedMapKey(t);"single"===n.selectedMode?(i[r]=!0,E(i,(function(t,e){i[e]=e===r}))):i[r]=!i[r],this.api.dispatchAction({type:"selectDataRange",from:this.uid,visualMapId:this.visualMapModel.id,selected:i})},e.type="visualMap.piecewise",e}(uF);function NF(t){t.registerComponentModel(LF),t.registerComponentView(RF),AF(t)}var EF={label:{enabled:!0},decal:{show:!1}},zF=So(),VF={};function BF(t,e){var n=t.getModel("aria");if(n.get("enabled")){var i=T(EF);C(i.label,t.getLocaleModel().get("aria"),!1),C(n.option,i,!1),function(){if(n.getModel("decal").get("show")){var e=ft();t.eachSeries((function(t){if(!t.isColorBySeries()){var n=e.get(t.type);n||(n={},e.set(t.type,n)),zF(t).scope=n}})),t.eachRawSeries((function(e){if(!t.isSeriesFiltered(e))if(U(e.enableAriaDecal))e.enableAriaDecal();else{var n=e.getData();if(e.isColorBySeries()){var i=ed(e.ecModel,e.name,VF,t.getSeriesCount()),r=n.getVisual("decal");n.setVisual("decal",u(r,i))}else{var o=e.getRawData(),a={},s=zF(e).scope;n.each((function(t){var e=n.getRawIndex(t);a[e]=t}));var l=o.count();o.each((function(t){var i=a[t],r=o.getName(t)||t+"",h=ed(e.ecModel,r,s,l),c=n.getItemVisual(i,"decal");n.setItemVisual(i,"decal",u(c,h))}))}}function u(t,e){var n=t?A(A({},e),t):e;return n.dirty=!0,n}}))}}(),function(){var i=t.getLocaleModel().get("aria"),o=n.getModel("label");if(o.option=k(o.option,i),!o.get("enabled"))return;var a=e.getZr().dom;if(o.get("description"))return void a.setAttribute("aria-label",o.get("description"));var s,l=t.getSeriesCount(),u=o.get(["data","maxCount"])||10,h=o.get(["series","maxCount"])||10,c=Math.min(l,h);if(l<1)return;var p=function(){var e=t.get("title");e&&e.length&&(e=e[0]);return e&&e.text}();if(p){var d=o.get(["general","withTitle"]);s=r(d,{title:p})}else s=o.get(["general","withoutTitle"]);var f=[],g=l>1?o.get(["series","multiple","prefix"]):o.get(["series","single","prefix"]);s+=r(g,{seriesCount:l}),t.eachSeries((function(e,n){if(n<c){var i=void 0,a=e.get("name")?"withName":"withoutName";i=r(i=l>1?o.get(["series","multiple",a]):o.get(["series","single",a]),{seriesId:e.seriesIndex,seriesName:e.get("name"),seriesType:(x=e.subType,t.getLocaleModel().get(["series","typeNames"])[x]||"自定义图")});var s=e.getData();if(s.count()>u)i+=r(o.get(["data","partialData"]),{displayCnt:u});else i+=o.get(["data","allData"]);for(var h=o.get(["data","separator","middle"]),p=o.get(["data","separator","end"]),d=[],g=0;g<s.count();g++)if(g<u){var y=s.getName(g),v=s.getValues(g),m=o.get(["data",y?"withName":"withoutName"]);d.push(r(m,{name:y,value:v.join(h)}))}i+=d.join(h)+p,f.push(i)}var x}));var y=o.getModel(["series","multiple","separator"]),v=y.get("middle"),m=y.get("end");s+=f.join(v)+m,a.setAttribute("aria-label",s)}()}function r(t,e){if(!X(t))return t;var n=t;return E(e,(function(t,e){n=n.replace(new RegExp("\\{\\s*"+e+"\\s*\\}","g"),t)})),n}}function FF(t){if(t&&t.aria){var e=t.aria;null!=e.show&&(e.enabled=e.show),e.label=e.label||{},E(["description","general","series","data"],(function(t){null!=e[t]&&(e.label[t]=e[t])}))}}var GF={value:"eq","<":"lt","<=":"lte",">":"gt",">=":"gte","=":"eq","!=":"ne","<>":"ne"},WF=function(){function t(t){if(null==(this._condVal=X(t)?new RegExp(t):et(t)?t:null)){var e="";0,ao(e)}}return t.prototype.evaluate=function(t){var e=typeof t;return X(e)?this._condVal.test(t):!!j(e)&&this._condVal.test(t+"")},t}(),HF=function(){function t(){}return t.prototype.evaluate=function(){return this.value},t}(),YF=function(){function t(){}return t.prototype.evaluate=function(){for(var t=this.children,e=0;e<t.length;e++)if(!t[e].evaluate())return!1;return!0},t}(),UF=function(){function t(){}return t.prototype.evaluate=function(){for(var t=this.children,e=0;e<t.length;e++)if(t[e].evaluate())return!0;return!1},t}(),XF=function(){function t(){}return t.prototype.evaluate=function(){return!this.child.evaluate()},t}(),ZF=function(){function t(){}return t.prototype.evaluate=function(){for(var t=!!this.valueParser,e=(0,this.getValue)(this.valueGetterParam),n=t?this.valueParser(e):null,i=0;i<this.subCondList.length;i++)if(!this.subCondList[i].evaluate(t?n:e))return!1;return!0},t}();function jF(t,e){if(!0===t||!1===t){var n=new HF;return n.value=t,n}var i="";return KF(t)||ao(i),t.and?qF("and",t,e):t.or?qF("or",t,e):t.not?function(t,e){var n=t.not,i="";0;KF(n)||ao(i);var r=new XF;r.child=jF(n,e),r.child||ao(i);return r}(t,e):function(t,e){for(var n="",i=e.prepareGetValue(t),r=[],o=G(t),a=t.parser,s=a?gf(a):null,l=0;l<o.length;l++){var u=o[l];if("parser"!==u&&!e.valueGetterAttrMap.get(u)){var h=mt(GF,u)?GF[u]:u,c=t[u],p=s?s(c):c,d=_f(h,p)||"reg"===h&&new WF(p);d||ao(n),r.push(d)}}r.length||ao(n);var f=new ZF;return f.valueGetterParam=i,f.valueParser=s,f.getValue=e.getValue,f.subCondList=r,f}(t,e)}function qF(t,e,n){var i=e[t],r="";Y(i)||ao(r),i.length||ao(r);var o="and"===t?new YF:new UF;return o.children=z(i,(function(t){return jF(t,n)})),o.children.length||ao(r),o}function KF(t){return q(t)&&!N(t)}var $F=function(){function t(t,e){this._cond=jF(t,e)}return t.prototype.evaluate=function(){return this._cond.evaluate()},t}();var JF={type:"echarts:filter",transform:function(t){for(var e,n,i,r=t.upstream,o=(n=t.config,i={valueGetterAttrMap:ft({dimension:!0}),prepareGetValue:function(t){var e="",n=t.dimension;mt(t,"dimension")||ao(e);var i=r.getDimensionInfo(n);return i||ao(e),{dimIdx:i.index}},getValue:function(t){return r.retrieveValueFromItem(e,t.dimIdx)}},new $F(n,i)),a=[],s=0,l=r.count();s<l;s++)e=r.getRawDataItem(s),o.evaluate()&&a.push(e);return{data:a}}};var QF={type:"echarts:sort",transform:function(t){var e=t.upstream,n=t.config,i="",r=ho(n);r.length||ao(i);var o=[];E(r,(function(t){var n=t.dimension,r=t.order,a=t.parser,s=t.incomparable;if(null==n&&ao(i),"asc"!==r&&"desc"!==r&&ao(i),s&&"min"!==s&&"max"!==s){var l="";0,ao(l)}if("asc"!==r&&"desc"!==r){var u="";0,ao(u)}var h=e.getDimensionInfo(n);h||ao(i);var c=a?gf(a):null;a&&!c&&ao(i),o.push({dimIdx:h.index,parser:c,comparator:new mf(r,s)})}));var a=e.sourceFormat;a!==Pp&&a!==Op&&ao(i);for(var s=[],l=0,u=e.count();l<u;l++)s.push(e.getRawDataItem(l));return s.sort((function(t,n){for(var i=0;i<o.length;i++){var r=o[i],a=e.retrieveValueFromItem(t,r.dimIdx),s=e.retrieveValueFromItem(n,r.dimIdx);r.parser&&(a=r.parser(a),s=r.parser(s));var l=r.comparator.evaluate(a,s);if(0!==l)return l}return 0})),{data:s}}};var tG=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="dataset",e}return n(e,t),e.prototype.init=function(e,n,i){t.prototype.init.call(this,e,n,i),this._sourceManager=new Bf(this),Ff(this)},e.prototype.mergeOption=function(e,n){t.prototype.mergeOption.call(this,e,n),Ff(this)},e.prototype.optionUpdated=function(){this._sourceManager.dirty()},e.prototype.getSourceManager=function(){return this._sourceManager},e.type="dataset",e.defaultOption={seriesLayoutBy:zp},e}(Tp),eG=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.type="dataset",e}return n(e,t),e.type="dataset",e}(gg);var nG=qa.CMD;function iG(t,e){return Math.abs(t-e)<1e-5}function rG(t){var e,n,i,r,o,a=t.data,s=t.len(),l=[],u=0,h=0,c=0,p=0;function d(t,n){e&&e.length>2&&l.push(e),e=[t,n]}function f(t,n,i,r){iG(t,i)&&iG(n,r)||e.push(t,n,i,r,i,r)}function g(t,n,i,r,o,a){var s=Math.abs(n-t),l=4*Math.tan(s/4)/3,u=n<t?-1:1,h=Math.cos(t),c=Math.sin(t),p=Math.cos(n),d=Math.sin(n),f=h*o+i,g=c*a+r,y=p*o+i,v=d*a+r,m=o*l*u,x=a*l*u;e.push(f-m*c,g+x*h,y+m*d,v-x*p,y,v)}for(var y=0;y<s;){var v=a[y++],m=1===y;switch(m&&(c=u=a[y],p=h=a[y+1],v!==nG.L&&v!==nG.C&&v!==nG.Q||(e=[c,p])),v){case nG.M:u=c=a[y++],h=p=a[y++],d(c,p);break;case nG.L:f(u,h,n=a[y++],i=a[y++]),u=n,h=i;break;case nG.C:e.push(a[y++],a[y++],a[y++],a[y++],u=a[y++],h=a[y++]);break;case nG.Q:n=a[y++],i=a[y++],r=a[y++],o=a[y++],e.push(u+2/3*(n-u),h+2/3*(i-h),r+2/3*(n-r),o+2/3*(i-o),r,o),u=r,h=o;break;case nG.A:var x=a[y++],_=a[y++],b=a[y++],w=a[y++],S=a[y++],M=a[y++]+S;y+=1;var I=!a[y++];n=Math.cos(S)*b+x,i=Math.sin(S)*w+_,m?d(c=n,p=i):f(u,h,n,i),u=Math.cos(M)*b+x,h=Math.sin(M)*w+_;for(var T=(I?-1:1)*Math.PI/2,C=S;I?C>M:C<M;C+=T){g(C,I?Math.max(C+T,M):Math.min(C+T,M),x,_,b,w)}break;case nG.R:c=u=a[y++],p=h=a[y++],n=c+a[y++],i=p+a[y++],d(n,p),f(n,p,n,i),f(n,i,c,i),f(c,i,c,p),f(c,p,n,p);break;case nG.Z:e&&f(u,h,c,p),u=c,h=p}}return e&&e.length>2&&l.push(e),l}function oG(t,e,n,i,r,o,a,s,l,u){if(iG(t,n)&&iG(e,i)&&iG(r,a)&&iG(o,s))l.push(a,s);else{var h=2/u,c=h*h,p=a-t,d=s-e,f=Math.sqrt(p*p+d*d);p/=f,d/=f;var g=n-t,y=i-e,v=r-a,m=o-s,x=g*g+y*y,_=v*v+m*m;if(x<c&&_<c)l.push(a,s);else{var b=p*g+d*y,w=-p*v-d*m;if(x-b*b<c&&b>=0&&_-w*w<c&&w>=0)l.push(a,s);else{var S=[],M=[];Ze(t,n,r,a,.5,S),Ze(e,i,o,s,.5,M),oG(S[0],M[0],S[1],M[1],S[2],M[2],S[3],M[3],l,u),oG(S[4],M[4],S[5],M[5],S[6],M[6],S[7],M[7],l,u)}}}}function aG(t,e,n){var i=t[e],r=t[1-e],o=Math.abs(i/r),a=Math.ceil(Math.sqrt(o*n)),s=Math.floor(n/a);0===s&&(s=1,a=n);for(var l=[],u=0;u<a;u++)l.push(s);var h=n-a*s;if(h>0)for(u=0;u<h;u++)l[u%a]+=1;return l}function sG(t,e,n){for(var i=t.r0,r=t.r,o=t.startAngle,a=t.endAngle,s=Math.abs(a-o),l=s*r,u=r-i,h=l>Math.abs(u),c=aG([l,u],h?0:1,e),p=(h?s:u)/c.length,d=0;d<c.length;d++)for(var f=(h?u:s)/c[d],g=0;g<c[d];g++){var y={};h?(y.startAngle=o+p*d,y.endAngle=o+p*(d+1),y.r0=i+f*g,y.r=i+f*(g+1)):(y.startAngle=o+f*g,y.endAngle=o+f*(g+1),y.r0=i+p*d,y.r=i+p*(d+1)),y.clockwise=t.clockwise,y.cx=t.cx,y.cy=t.cy,n.push(y)}}function lG(t,e,n,i){return t*i-n*e}function uG(t,e,n,i,r,o,a,s){var l=n-t,u=i-e,h=a-r,c=s-o,p=lG(h,c,l,u);if(Math.abs(p)<1e-6)return null;var d=lG(t-r,e-o,h,c)/p;return d<0||d>1?null:new Ji(d*l+t,d*u+e)}function hG(t,e,n){var i=new Ji;Ji.sub(i,n,e),i.normalize();var r=new Ji;return Ji.sub(r,t,e),r.dot(i)}function cG(t,e){var n=t[t.length-1];n&&n[0]===e[0]&&n[1]===e[1]||t.push(e)}function pG(t){var e=t.points,n=[],i=[];Ma(e,n,i);var r=new sr(n[0],n[1],i[0]-n[0],i[1]-n[1]),o=r.width,a=r.height,s=r.x,l=r.y,u=new Ji,h=new Ji;return o>a?(u.x=h.x=s+o/2,u.y=l,h.y=l+a):(u.y=h.y=l+a/2,u.x=s,h.x=s+o),function(t,e,n){for(var i=t.length,r=[],o=0;o<i;o++){var a=t[o],s=t[(o+1)%i],l=uG(a[0],a[1],s[0],s[1],e.x,e.y,n.x,n.y);l&&r.push({projPt:hG(l,e,n),pt:l,idx:o})}if(r.length<2)return[{points:t},{points:t}];r.sort((function(t,e){return t.projPt-e.projPt}));var u=r[0],h=r[r.length-1];if(h.idx<u.idx){var c=u;u=h,h=c}var p=[u.pt.x,u.pt.y],d=[h.pt.x,h.pt.y],f=[p],g=[d];for(o=u.idx+1;o<=h.idx;o++)cG(f,t[o].slice());for(cG(f,d),cG(f,p),o=h.idx+1;o<=u.idx+i;o++)cG(g,t[o%i].slice());return cG(g,p),cG(g,d),[{points:f},{points:g}]}(e,u,h)}function dG(t,e,n,i){if(1===n)i.push(e);else{var r=Math.floor(n/2),o=t(e);dG(t,o[0],r,i),dG(t,o[1],n-r,i)}return i}function fG(t,e){e.setStyle(t.style),e.z=t.z,e.z2=t.z2,e.zlevel=t.zlevel}function gG(t,e){var n,i=[],r=t.shape;switch(t.type){case"rect":!function(t,e,n){for(var i=t.width,r=t.height,o=i>r,a=aG([i,r],o?0:1,e),s=o?"width":"height",l=o?"height":"width",u=o?"x":"y",h=o?"y":"x",c=t[s]/a.length,p=0;p<a.length;p++)for(var d=t[l]/a[p],f=0;f<a[p];f++){var g={};g[u]=p*c,g[h]=f*d,g[s]=c,g[l]=d,g.x+=t.x,g.y+=t.y,n.push(g)}}(r,e,i),n=Cs;break;case"sector":sG(r,e,i),n=Cu;break;case"circle":sG({r0:0,r:r.r,startAngle:0,endAngle:2*Math.PI,cx:r.cx,cy:r.cy},e,i),n=Cu;break;default:var o=t.getComputedTransform(),a=o?Math.sqrt(Math.max(o[0]*o[0]+o[1]*o[1],o[2]*o[2]+o[3]*o[3])):1,s=z(function(t,e){var n=rG(t),i=[];e=e||1;for(var r=0;r<n.length;r++){var o=n[r],a=[],s=o[0],l=o[1];a.push(s,l);for(var u=2;u<o.length;){var h=o[u++],c=o[u++],p=o[u++],d=o[u++],f=o[u++],g=o[u++];oG(s,l,h,c,p,d,f,g,a,e),s=f,l=g}i.push(a)}return i}(t.getUpdatedPathProxy(),a),(function(t){return function(t){for(var e=[],n=0;n<t.length;)e.push([t[n++],t[n++]]);return e}(t)})),l=s.length;if(0===l)dG(pG,{points:s[0]},e,i);else if(l===e)for(var u=0;u<l;u++)i.push({points:s[u]});else{var h=0,c=z(s,(function(t){var e=[],n=[];Ma(t,e,n);var i=(n[1]-e[1])*(n[0]-e[0]);return h+=i,{poly:t,area:i}}));c.sort((function(t,e){return e.area-t.area}));var p=e;for(u=0;u<l;u++){var d=c[u];if(p<=0)break;var f=u===l-1?p:Math.ceil(d.area/h*e);f<0||(dG(pG,{points:d.poly},f,i),p-=f)}}n=Pu}if(!n)return function(t,e){for(var n=[],i=0;i<e;i++)n.push(lu(t));return n}(t,e);var g=[];for(u=0;u<i.length;u++){var y=new n;y.setShape(i[u]),fG(t,y),g.push(y)}return g}function yG(t,e){var n=t.length,i=e.length;if(n===i)return[t,e];for(var r=[],o=[],a=n<i?t:e,s=Math.min(n,i),l=Math.abs(i-n)/6,u=(s-2)/6,h=Math.ceil(l/u)+1,c=[a[0],a[1]],p=l,d=2;d<s;){var f=a[d-2],g=a[d-1],y=a[d++],v=a[d++],m=a[d++],x=a[d++],_=a[d++],b=a[d++];if(p<=0)c.push(y,v,m,x,_,b);else{for(var w=Math.min(p,h-1)+1,S=1;S<=w;S++){var M=S/w;Ze(f,y,m,_,M,r),Ze(g,v,x,b,M,o),f=r[3],g=o[3],c.push(r[1],o[1],r[2],o[2],f,g),y=r[5],v=o[5],m=r[6],x=o[6]}p-=w-1}}return a===t?[c,e]:[t,c]}function vG(t,e){for(var n=t.length,i=t[n-2],r=t[n-1],o=[],a=0;a<e.length;)o[a++]=i,o[a++]=r;return o}function mG(t){for(var e=0,n=0,i=0,r=t.length,o=0,a=r-2;o<r;a=o,o+=2){var s=t[a],l=t[a+1],u=t[o],h=t[o+1],c=s*h-u*l;e+=c,n+=(s+u)*c,i+=(l+h)*c}return 0===e?[t[0]||0,t[1]||0]:[n/e/3,i/e/3,e]}function xG(t,e,n,i){for(var r=(t.length-2)/6,o=1/0,a=0,s=t.length,l=s-2,u=0;u<r;u++){for(var h=6*u,c=0,p=0;p<s;p+=2){var d=0===p?h:(h+p-2)%l+2,f=t[d]-n[0],g=t[d+1]-n[1],y=e[p]-i[0]-f,v=e[p+1]-i[1]-g;c+=y*y+v*v}c<o&&(o=c,a=u)}return a}function _G(t){for(var e=[],n=t.length,i=0;i<n;i+=2)e[i]=t[n-i-2],e[i+1]=t[n-i-1];return e}function bG(t){return t.__isCombineMorphing}var wG="__mOriginal_";function SG(t,e,n){var i=wG+e,r=t[i]||t[e];t[i]||(t[i]=t[e]);var o=n.replace,a=n.after,s=n.before;t[e]=function(){var t,e=arguments;return s&&s.apply(this,e),t=o?o.apply(this,e):r.apply(this,e),a&&a.apply(this,e),t}}function MG(t,e){var n=wG+e;t[n]&&(t[e]=t[n],t[n]=null)}function IG(t,e){for(var n=0;n<t.length;n++)for(var i=t[n],r=0;r<i.length;){var o=i[r],a=i[r+1];i[r++]=e[0]*o+e[2]*a+e[4],i[r++]=e[1]*o+e[3]*a+e[5]}}function TG(t,e){var n=t.getUpdatedPathProxy(),i=e.getUpdatedPathProxy(),r=function(t,e){for(var n,i,r,o=[],a=[],s=0;s<Math.max(t.length,e.length);s++){var l=t[s],u=e[s],h=void 0,c=void 0;l?u?(i=h=(n=yG(l,u))[0],r=c=n[1]):(c=vG(r||l,l),h=l):(h=vG(i||u,u),c=u),o.push(h),a.push(c)}return[o,a]}(rG(n),rG(i)),o=r[0],a=r[1],s=t.getComputedTransform(),l=e.getComputedTransform();s&&IG(o,s),l&&IG(a,l),SG(e,"updateTransform",{replace:function(){this.transform=null}}),e.transform=null;var u=function(t,e,n,i){for(var r,o=[],a=0;a<t.length;a++){var s=t[a],l=e[a],u=mG(s),h=mG(l);null==r&&(r=u[2]<0!=h[2]<0);var c=[],p=[],d=0,f=1/0,g=[],y=s.length;r&&(s=_G(s));for(var v=6*xG(s,l,u,h),m=y-2,x=0;x<m;x+=2){var _=(v+x)%m+2;c[x+2]=s[_]-u[0],c[x+3]=s[_+1]-u[1]}if(c[0]=s[v]-u[0],c[1]=s[v+1]-u[1],n>0)for(var b=i/n,w=-i/2;w<=i/2;w+=b){var S=Math.sin(w),M=Math.cos(w),I=0;for(x=0;x<s.length;x+=2){var T=c[x],C=c[x+1],D=l[x]-h[0],A=l[x+1]-h[1],k=D*M-A*S,L=D*S+A*M;g[x]=k,g[x+1]=L;var P=k-T,O=L-C;I+=P*P+O*O}if(I<f){f=I,d=w;for(var R=0;R<g.length;R++)p[R]=g[R]}}else for(var N=0;N<y;N+=2)p[N]=l[N]-h[0],p[N+1]=l[N+1]-h[1];o.push({from:c,to:p,fromCp:u,toCp:h,rotation:-d})}return o}(o,a,10,Math.PI),h=[];SG(e,"buildPath",{replace:function(t){for(var n=e.__morphT,i=1-n,r=[],o=0;o<u.length;o++){var a=u[o],s=a.from,l=a.to,c=a.rotation*n,p=a.fromCp,d=a.toCp,f=Math.sin(c),g=Math.cos(c);Bt(r,p,d,n);for(var y=0;y<s.length;y+=2){var v=s[y],m=s[y+1],x=v*i+(S=l[y])*n,_=m*i+(M=l[y+1])*n;h[y]=x*g-_*f+r[0],h[y+1]=x*f+_*g+r[1]}var b=h[0],w=h[1];t.moveTo(b,w);for(y=2;y<s.length;){var S=h[y++],M=h[y++],I=h[y++],T=h[y++],C=h[y++],D=h[y++];b===S&&w===M&&I===C&&T===D?t.lineTo(C,D):t.bezierCurveTo(S,M,I,T,C,D),b=C,w=D}}}})}function CG(t,e,n){if(!t||!e)return e;var i=n.done,r=n.during;return TG(t,e),e.__morphT=0,e.animateTo({__morphT:1},k({during:function(t){e.dirtyShape(),r&&r(t)},done:function(){MG(e,"buildPath"),MG(e,"updateTransform"),e.__morphT=-1,e.createPathProxy(),e.dirtyShape(),i&&i()}},n)),e}function DG(t,e,n,i,r,o){t=r===n?0:Math.round(32767*(t-n)/(r-n)),e=o===i?0:Math.round(32767*(e-i)/(o-i));for(var a,s=0,l=32768;l>0;l/=2){var u=0,h=0;(t&l)>0&&(u=1),(e&l)>0&&(h=1),s+=l*l*(3*u^h),0===h&&(1===u&&(t=l-1-t,e=l-1-e),a=t,t=e,e=a)}return s}function AG(t){var e=1/0,n=1/0,i=-1/0,r=-1/0,o=z(t,(function(t){var o=t.getBoundingRect(),a=t.getComputedTransform(),s=o.x+o.width/2+(a?a[4]:0),l=o.y+o.height/2+(a?a[5]:0);return e=Math.min(s,e),n=Math.min(l,n),i=Math.max(s,i),r=Math.max(l,r),[s,l]}));return z(o,(function(o,a){return{cp:o,z:DG(o[0],o[1],e,n,i,r),path:t[a]}})).sort((function(t,e){return t.z-e.z})).map((function(t){return t.path}))}function kG(t){return gG(t.path,t.count)}function LG(t){return Y(t[0])}function PG(t,e){for(var n=[],i=t.length,r=0;r<i;r++)n.push({one:t[r],many:[]});for(r=0;r<e.length;r++){var o=e[r].length,a=void 0;for(a=0;a<o;a++)n[a%i].many.push(e[r][a])}var s=0;for(r=i-1;r>=0;r--)if(!n[r].many.length){var l=n[s].many;if(l.length<=1){if(!s)return n;s=0}o=l.length;var u=Math.ceil(o/2);n[r].many=l.slice(u,o),n[s].many=l.slice(0,u),s++}return n}var OG={clone:function(t){for(var e=[],n=1-Math.pow(1-t.path.style.opacity,1/t.count),i=0;i<t.count;i++){var r=lu(t.path);r.setStyle("opacity",n),e.push(r)}return e},split:null};function RG(t,e,n,i,r,o){if(t.length&&e.length){var a=nh("update",i,r);if(a&&a.duration>0){var s,l,u=i.getModel("universalTransition").get("delay"),h=Object.assign({setToFinal:!0},a);LG(t)&&(s=t,l=e),LG(e)&&(s=e,l=t);for(var c=s?s===t:t.length>e.length,p=s?PG(l,s):PG(c?e:t,[c?t:e]),d=0,f=0;f<p.length;f++)d+=p[f].many.length;var g=0;for(f=0;f<p.length;f++)y(p[f],c,g,d),g+=p[f].many.length}}function y(t,e,i,r,a){var s=t.many,l=t.one;if(1!==s.length||a)for(var c=k({dividePath:OG[n],individualDelay:u&&function(t,e,n,o){return u(t+i,r)}},h),p=e?function(t,e,n){var i=[];!function t(e){for(var n=0;n<e.length;n++){var r=e[n];bG(r)?t(r.childrenRef()):r instanceof gs&&i.push(r)}}(t);var r=i.length;if(!r)return{fromIndividuals:[],toIndividuals:[],count:0};var o=(n.dividePath||kG)({path:e,count:r});if(o.length!==r)return console.error("Invalid morphing: unmatched splitted path"),{fromIndividuals:[],toIndividuals:[],count:0};i=AG(i),o=AG(o);for(var a=n.done,s=n.during,l=n.individualDelay,u=new qi,h=0;h<r;h++){var c=i[h],p=o[h];p.parent=e,p.copyTransform(u),l||TG(c,p)}function d(t){for(var e=0;e<o.length;e++)o[e].addSelfToZr(t)}function f(){e.__isCombineMorphing=!1,e.__morphT=-1,e.childrenRef=null,MG(e,"addSelfToZr"),MG(e,"removeSelfFromZr")}e.__isCombineMorphing=!0,e.childrenRef=function(){return o},SG(e,"addSelfToZr",{after:function(t){d(t)}}),SG(e,"removeSelfFromZr",{after:function(t){for(var e=0;e<o.length;e++)o[e].removeSelfFromZr(t)}});var g=o.length;if(l){var y=g,v=function(){0==--y&&(f(),a&&a())};for(h=0;h<g;h++){var m=l?k({delay:(n.delay||0)+l(h,g,i[h],o[h]),done:v},n):n;CG(i[h],o[h],m)}}else e.__morphT=0,e.animateTo({__morphT:1},k({during:function(t){for(var n=0;n<g;n++){var i=o[n];i.__morphT=e.__morphT,i.dirtyShape()}s&&s(t)},done:function(){f();for(var e=0;e<t.length;e++)MG(t[e],"updateTransform");a&&a()}},n));return e.__zr&&d(e.__zr),{fromIndividuals:i,toIndividuals:o,count:g}}(s,l,c):function(t,e,n){var i=e.length,r=[],o=n.dividePath||kG;if(bG(t)){!function t(e){for(var n=0;n<e.length;n++){var i=e[n];bG(i)?t(i.childrenRef()):i instanceof gs&&r.push(i)}}(t.childrenRef());var a=r.length;if(a<i)for(var s=0,l=a;l<i;l++)r.push(lu(r[s++%a]));r.length=i}else{r=o({path:t,count:i});var u=t.getComputedTransform();for(l=0;l<r.length;l++)r[l].setLocalTransform(u);if(r.length!==i)return console.error("Invalid morphing: unmatched splitted path"),{fromIndividuals:[],toIndividuals:[],count:0}}r=AG(r),e=AG(e);var h=n.individualDelay;for(l=0;l<i;l++){var c=h?k({delay:(n.delay||0)+h(l,i,r[l],e[l])},n):n;CG(r[l],e[l],c)}return{fromIndividuals:r,toIndividuals:e,count:e.length}}(l,s,c),d=p.fromIndividuals,f=p.toIndividuals,g=d.length,v=0;v<g;v++){m=u?k({delay:u(v,g)},h):h;o(d[v],f[v],e?s[v]:t.one,e?t.one:s[v],m)}else{var m,x=e?s[0]:l,_=e?l:s[0];if(bG(x))y({many:[x],one:_},!0,i,r,!0);else CG(x,_,m=u?k({delay:u(i,r)},h):h),o(x,_,x,_,m)}}}function NG(t){if(!t)return[];if(Y(t)){for(var e=[],n=0;n<t.length;n++)e.push(NG(t[n]));return e}var i=[];return t.traverse((function(t){t instanceof gs&&!t.disableMorphing&&!t.invisible&&!t.ignore&&i.push(t)})),i}var EG=So();function zG(t){var e=[];return E(t,(function(t){var n=t.data;if(!(n.count()>1e4))for(var i=n.getIndices(),r=function(t){for(var e=t.dimensions,n=0;n<e.length;n++){var i=t.getDimensionInfo(e[n]);if(i&&0===i.otherDims.itemGroupId)return e[n]}}(n),o=0;o<i.length;o++)e.push({data:n,dim:t.dim||r,divide:t.divide,dataIndex:o})})),e}function VG(t,e,n){t.traverse((function(t){t instanceof gs&&oh(t,{style:{opacity:0}},e,{dataIndex:n,isFrom:!0})}))}function BG(t){if(t.parent){var e=t.getComputedTransform();t.setLocalTransform(e),t.parent.remove(t)}}function FG(t){t.stopAnimation(),t.isGroup&&t.traverse((function(t){t.stopAnimation()}))}function GG(t,e,n){var i=nh("update",n,e);i&&t.traverse((function(t){if(t instanceof da){var e=function(t){return eh(t).oldStyle}(t);e&&t.animateFrom({style:e},i)}}))}function WG(t,e,n){var i=zG(t),r=zG(e);function o(t,e,n,i,r){(n||t)&&e.animateFrom({style:n&&n!==t?A(A({},n.style),t.style):t.style},r)}function a(t){for(var e=0;e<t.length;e++)if(t[e].dim)return t[e].dim}var s=a(i),l=a(r),u=!1;function h(t,e){return function(n){var i=n.data,r=n.dataIndex;if(e)return i.getId(r);var o=i.hostModel&&i.hostModel.get("dataGroupId"),a=t?s||l:l||s,u=a&&i.getDimensionInfo(a),h=u&&u.ordinalMeta;if(u){var c=i.get(u.name,r);return h&&h.categories[c]||c+""}var p=i.getRawDataItem(r);return p&&p.groupId?p.groupId+"":o||i.getId(r)}}var c=function(t,e){var n=t.length;if(n!==e.length)return!1;for(var i=0;i<n;i++){var r=t[i],o=e[i];if(r.data.getId(r.dataIndex)!==o.data.getId(o.dataIndex))return!1}return!0}(i,r),p={};if(!c)for(var d=0;d<r.length;d++){var f=r[d],g=f.data.getItemGraphicEl(f.dataIndex);g&&(p[g.id]=!0)}function y(t,e){var n=i[e],a=r[t],s=a.data.hostModel,l=n.data.getItemGraphicEl(n.dataIndex),h=a.data.getItemGraphicEl(a.dataIndex);l!==h?l&&p[l.id]||h&&(FG(h),l?(FG(l),BG(l),u=!0,RG(NG(l),NG(h),a.divide,s,t,o)):VG(h,s,t)):h&&GG(h,a.dataIndex,s)}new Mm(i,r,h(!0,c),h(!1,c),null,"multiple").update(y).updateManyToOne((function(t,e){var n=r[t],a=n.data,s=a.hostModel,l=a.getItemGraphicEl(n.dataIndex),h=B(z(e,(function(t){return i[t].data.getItemGraphicEl(i[t].dataIndex)})),(function(t){return t&&t!==l&&!p[t.id]}));l&&(FG(l),h.length?(E(h,(function(t){FG(t),BG(t)})),u=!0,RG(NG(h),NG(l),n.divide,s,t,o)):VG(l,s,n.dataIndex))})).updateOneToMany((function(t,e){var n=i[e],a=n.data.getItemGraphicEl(n.dataIndex);if(!a||!p[a.id]){var s=B(z(t,(function(t){return r[t].data.getItemGraphicEl(r[t].dataIndex)})),(function(t){return t&&t!==a})),l=r[t[0]].data.hostModel;s.length&&(E(s,(function(t){return FG(t)})),a?(FG(a),BG(a),u=!0,RG(NG(a),NG(s),n.divide,l,t[0],o)):E(s,(function(e){return VG(e,l,t[0])})))}})).updateManyToMany((function(t,e){new Mm(e,t,(function(t){return i[t].data.getId(i[t].dataIndex)}),(function(t){return r[t].data.getId(r[t].dataIndex)})).update((function(n,i){y(t[n],e[i])})).execute()})).execute(),u&&E(e,(function(t){var e=t.data.hostModel,i=e&&n.getViewOfSeriesModel(e),r=nh("update",e,0);i&&e.isAnimationEnabled()&&r&&r.duration>0&&i.group.traverse((function(t){t instanceof gs&&!t.animators.length&&t.animateFrom({style:{opacity:0}},r)}))}))}function HG(t){var e=t.getModel("universalTransition").get("seriesKey");return e||t.id}function YG(t){return Y(t)?t.sort().join(","):t}function UG(t){if(t.hostModel)return t.hostModel.getModel("universalTransition").get("divideShape")}function XG(t,e){for(var n=0;n<t.length;n++){if(null!=e.seriesIndex&&e.seriesIndex===t[n].seriesIndex||null!=e.seriesId&&e.seriesId===t[n].id)return n}}bm([function(t){t.registerPainter("canvas",Bw)}]),bm([function(t){t.registerPainter("svg",Pw)}]),bm([function(t){t.registerChartView(xS),t.registerSeriesModel(Fw),t.registerLayout(_S("line",!0)),t.registerVisual({seriesType:"line",reset:function(t){var e=t.getData(),n=t.getModel("lineStyle").getLineStyle();n&&!n.stroke&&(n.stroke=e.getVisual("style").fill),e.setVisual("legendLineStyle",n)}}),t.registerProcessor(t.PRIORITY.PROCESSOR.STATISTIC,SS("line"))},function(t){t.registerChartView(PS),t.registerSeriesModel(IS),t.registerLayout(t.PRIORITY.VISUAL.LAYOUT,H(Ax,"bar")),t.registerLayout(t.PRIORITY.VISUAL.PROGRESSIVE_LAYOUT,kx("bar")),t.registerProcessor(t.PRIORITY.PROCESSOR.STATISTIC,SS("bar")),t.registerAction({type:"changeAxisOrder",event:"changeAxisOrder",update:"update"},(function(t,e){var n=t.componentType||"series";e.eachComponent({mainType:n,query:t},(function(e){t.sortInfo&&e.axis.setCategorySortInfo(t.sortInfo)}))}))},function(t){t.registerChartView(sM),t.registerSeriesModel(hM),vy("pie",t.registerAction),t.registerLayout(H(JS,"pie")),t.registerProcessor(QS("pie")),t.registerProcessor(function(t){return{seriesType:t,reset:function(t,e){var n=t.getData();n.filterSelf((function(t){var e=n.mapDimension("value"),i=n.get(e,t);return!(j(i)&&!isNaN(i)&&i<0)}))}}}("pie"))},function(t){bm(cI),t.registerSeriesModel(cM),t.registerChartView(gM),t.registerLayout(_S("scatter"))},function(t){bm(II),t.registerChartView(yI),t.registerSeriesModel(vI),t.registerLayout(pI),t.registerProcessor(QS("radar")),t.registerPreprocessor(gI)},function(t){bm(QT),t.registerChartView(NT),t.registerSeriesModel(ET),t.registerLayout(VT),t.registerProcessor(t.PRIORITY.PROCESSOR.STATISTIC,zT),vy("map",t.registerAction)},function(t){t.registerChartView(cC),t.registerSeriesModel(OC),t.registerLayout(NC),t.registerVisual(EC),function(t){t.registerAction({type:"treeExpandAndCollapse",event:"treeExpandAndCollapse",update:"update"},(function(t,e){e.eachComponent({mainType:"series",subType:"tree",query:t},(function(e){var n=t.dataIndex,i=e.getData().tree.getNodeByDataIndex(n);i.isExpand=!i.isExpand}))})),t.registerAction({type:"treeRoam",event:"treeRoam",update:"none"},(function(t,e){e.eachComponent({mainType:"series",subType:"tree",query:t},(function(e){var n=KT(e.coordinateSystem,t);e.setCenter&&e.setCenter(n.center),e.setZoom&&e.setZoom(n.zoom)}))}))}(t)},function(t){t.registerSeriesModel(BC),t.registerChartView(JC),t.registerVisual(gD),t.registerLayout(DD),function(t){for(var e=0;e<zC.length;e++)t.registerAction({type:zC[e],update:"updateView"},xt);t.registerAction({type:"treemapRootToNode",update:"updateView"},(function(t,e){e.eachComponent({mainType:"series",subType:"treemap",query:t},(function(e,n){var i=AC(t,["treemapZoomToNode","treemapRootToNode"],e);if(i){var r=e.getViewRoot();r&&(t.direction=LC(r,i.node)?"rollUp":"drillDown"),e.resetViewRoot(i.node)}}))}))}(t)},function(t){t.registerChartView(CA),t.registerSeriesModel(RA),t.registerProcessor(RD),t.registerVisual(ND),t.registerVisual(zD),t.registerLayout(ZD),t.registerLayout(t.PRIORITY.VISUAL.POST_CHART_LAYOUT,tA),t.registerLayout(nA),t.registerCoordinateSystem("graphView",{dimensions:FT.dimensions,create:iA}),t.registerAction({type:"focusNodeAdjacency",event:"focusNodeAdjacency",update:"series:focusNodeAdjacency"},xt),t.registerAction({type:"unfocusNodeAdjacency",event:"unfocusNodeAdjacency",update:"series:unfocusNodeAdjacency"},xt),t.registerAction(NA,(function(t,e){e.eachComponent({mainType:"series",query:t},(function(e){var n=KT(e.coordinateSystem,t);e.setCenter&&e.setCenter(n.center),e.setZoom&&e.setZoom(n.zoom)}))}))},function(t){t.registerChartView(BA),t.registerSeriesModel(FA)},function(t){t.registerChartView(HA),t.registerSeriesModel(YA),t.registerLayout(UA),t.registerProcessor(QS("funnel"))},function(t){bm(vL),t.registerChartView(XA),t.registerSeriesModel($A),t.registerVisual(t.PRIORITY.VISUAL.BRUSH,tk)},function(t){t.registerChartView(_L),t.registerSeriesModel(bL),t.registerLayout(wL),t.registerVisual(RL),t.registerAction({type:"dragNode",event:"dragnode",update:"update"},(function(t,e){e.eachComponent({mainType:"series",subType:"sankey",query:t},(function(e){e.setNodePosition(t.dataIndex,[t.localX,t.localY])}))}))},function(t){t.registerSeriesModel(EL),t.registerChartView(zL),t.registerVisual(HL),t.registerLayout(UL),t.registerTransform(XL)},function(t){t.registerChartView(jL),t.registerSeriesModel(oP),t.registerPreprocessor(aP),t.registerVisual(cP),t.registerLayout(pP)},function(t){t.registerChartView(yP),t.registerSeriesModel(vP),t.registerLayout(_S("effectScatter"))},function(t){t.registerChartView(IP),t.registerSeriesModel(AP),t.registerLayout(MP),t.registerVisual(LP)},function(t){t.registerChartView(RP),t.registerSeriesModel(NP)},function(t){t.registerChartView(BP),t.registerSeriesModel(iO),t.registerLayout(t.PRIORITY.VISUAL.LAYOUT,H(Ax,"pictorialBar")),t.registerLayout(t.PRIORITY.VISUAL.PROGRESSIVE_LAYOUT,kx("pictorialBar"))},function(t){t.registerChartView(rO),t.registerSeriesModel(oO),t.registerLayout(aO),t.registerProcessor(QS("themeRiver"))},function(t){t.registerChartView(cO),t.registerSeriesModel(pO),t.registerLayout(H(gO,"sunburst")),t.registerProcessor(H(QS,"sunburst")),t.registerVisual(vO),function(t){t.registerAction({type:uO,update:"updateView"},(function(t,e){e.eachComponent({mainType:"series",subType:"sunburst",query:t},(function(e,n){var i=AC(t,[uO],e);if(i){var r=e.getViewRoot();r&&(t.direction=LC(r,i.node)?"rollUp":"drillDown"),e.resetViewRoot(i.node)}}))})),t.registerAction({type:hO,update:"none"},(function(t,e,n){t=A({},t),e.eachComponent({mainType:"series",subType:"sunburst",query:t},(function(e){var n=AC(t,[hO],e);n&&(t.dataIndex=n.node.dataIndex)})),n.dispatchAction(A(t,{type:"highlight"}))})),t.registerAction({type:"sunburstUnhighlight",update:"updateView"},(function(t,e,n){t=A({},t),n.dispatchAction(A(t,{type:"downplay"}))}))}(t)},function(t){t.registerChartView(lR),t.registerSeriesModel(bO)}]),bm((function(t){bm(cI),bm(lN)})),bm((function(t){bm(lN),QM.registerAxisPointerClass("PolarAxisPointer",uN),t.registerCoordinateSystem("polar",SN),t.registerComponentModel(cN),t.registerComponentView(BN),SM(t,"angle",dN,zN),SM(t,"radius",fN,VN),t.registerComponentView(DN),t.registerComponentView(PN),t.registerLayout(H(EN,"bar"))})),bm(QT),bm((function(t){bm(lN),QM.registerAxisPointerClass("SingleAxisPointer",QN),t.registerComponentView(iE),t.registerComponentView(HN),t.registerComponentModel(UN),SM(t,"single",UN,UN.defaultOption),t.registerCoordinateSystem("single",KN)})),bm(vL),bm((function(t){t.registerComponentModel(rE),t.registerComponentView(aE),t.registerCoordinateSystem("calendar",lE)})),bm((function(t){t.registerComponentModel(fE),t.registerComponentView(vE),t.registerPreprocessor((function(t){var e=t.graphic;Y(e)?e[0]&&e[0].elements?t.graphic=[t.graphic[0]]:t.graphic=[{elements:e}]:e&&!e.elements&&(t.graphic=[{elements:[e]}])}))})),bm((function(t){t.registerComponentModel(YE),t.registerComponentView(XE),WE("saveAsImage",ZE),WE("magicType",KE),WE("dataView",iz),WE("dataZoom",Iz),WE("restore",lz),bm(BE)})),bm((function(t){bm(lN),t.registerComponentModel(Dz),t.registerComponentView(Uz),t.registerAction({type:"showTip",event:"showTip",update:"tooltip:manuallyShowTip"},xt),t.registerAction({type:"hideTip",event:"hideTip",update:"tooltip:manuallyHideTip"},xt)})),bm(lN),bm((function(t){t.registerComponentView(dV),t.registerComponentModel(fV),t.registerPreprocessor(Kz),t.registerVisual(t.PRIORITY.VISUAL.BRUSH,lV),t.registerAction({type:"brush",event:"brush",update:"updateVisual"},(function(t,e){e.eachComponent({mainType:"brush",query:t},(function(e){e.setAreas(t.areas)}))})),t.registerAction({type:"brushSelect",event:"brushSelected",update:"none"},xt),t.registerAction({type:"brushEnd",event:"brushEnd",update:"none"},xt),WE("brush",vV)})),bm((function(t){t.registerComponentModel(mV),t.registerComponentView(xV)})),bm((function(t){t.registerComponentModel(bV),t.registerComponentView(TV),t.registerSubTypeDefaulter("timeline",(function(){return"slider"})),function(t){t.registerAction({type:"timelineChange",event:"timelineChanged",update:"prepareAndUpdate"},(function(t,e,n){var i=e.getComponent("timeline");return i&&null!=t.currentIndex&&(i.setCurrentIndex(t.currentIndex),!i.get("loop",!0)&&i.isIndexMax()&&i.getPlayState()&&(i.setPlayState(!1),n.dispatchAction({type:"timelinePlayChange",playState:!1,from:t.from}))),e.resetOption("timeline",{replaceMerge:i.get("replaceMerge",!0)}),k({currentIndex:i.option.currentIndex},t)})),t.registerAction({type:"timelinePlayChange",event:"timelinePlayChanged",update:"update"},(function(t,e){var n=e.getComponent("timeline");n&&null!=t.playState&&n.setPlayState(t.playState)}))}(t),t.registerPreprocessor(AV)})),bm((function(t){t.registerComponentModel(EV),t.registerComponentView(ZV),t.registerPreprocessor((function(t){PV(t.series,"markPoint")&&(t.markPoint=t.markPoint||{})}))})),bm((function(t){t.registerComponentModel(jV),t.registerComponentView(eB),t.registerPreprocessor((function(t){PV(t.series,"markLine")&&(t.markLine=t.markLine||{})}))})),bm((function(t){t.registerComponentModel(nB),t.registerComponentView(hB),t.registerPreprocessor((function(t){PV(t.series,"markArea")&&(t.markArea=t.markArea||{})}))})),bm((function(t){bm(wB),bm(AB)})),bm((function(t){bm(GB),bm(KB)})),bm(GB),bm(KB),bm((function(t){bm(kF),bm(NF)})),bm(kF),bm(NF),bm((function(t){t.registerPreprocessor(FF),t.registerVisual(t.PRIORITY.VISUAL.ARIA,BF)})),bm((function(t){t.registerTransform(JF),t.registerTransform(QF)})),bm((function(t){t.registerComponentModel(tG),t.registerComponentView(eG)})),bm((function(t){t.registerUpdateLifecycle("series:beforeupdate",(function(t,e,n){E(ho(n.seriesTransition),(function(t){E(ho(t.to),(function(t){for(var e=n.updatedSeries,i=0;i<e.length;i++)(null!=t.seriesIndex&&t.seriesIndex===e[i].seriesIndex||null!=t.seriesId&&t.seriesId===e[i].id)&&(e[i].__universalTransitionEnabled=!0)}))}))})),t.registerUpdateLifecycle("series:transition",(function(t,e,n){var i=EG(e);if(i.oldSeries&&n.updatedSeries&&n.optionChanged){var r=n.seriesTransition;if(r)E(ho(r),(function(t){!function(t,e,n,i){var r=[],o=[];E(ho(t.from),(function(t){var n=XG(e.oldSeries,t);n>=0&&r.push({data:e.oldData[n],divide:UG(e.oldData[n]),dim:t.dimension})})),E(ho(t.to),(function(t){var e=XG(n.updatedSeries,t);if(e>=0){var i=n.updatedSeries[e].getData();o.push({data:i,divide:UG(i),dim:t.dimension})}})),r.length>0&&o.length>0&&WG(r,o,i)}(t,i,n,e)}));else{var o=function(t,e){var n=ft(),i=ft(),r=ft();return E(t.oldSeries,(function(e,n){var o=t.oldData[n],a=HG(e),s=YG(a);i.set(s,o),Y(a)&&E(a,(function(t){r.set(t,{data:o,key:s})}))})),E(e.updatedSeries,(function(t){if(t.isUniversalTransitionEnabled()&&t.isAnimationEnabled()){var e=t.getData(),o=HG(t),a=YG(o),s=i.get(a);if(s)n.set(a,{oldSeries:[{divide:UG(s),data:s}],newSeries:[{divide:UG(e),data:e}]});else if(Y(o)){var l=[];E(o,(function(t){var e=i.get(t);e&&l.push({divide:UG(e),data:e})})),l.length&&n.set(a,{oldSeries:l,newSeries:[{data:e,divide:UG(e)}]})}else{var u=r.get(o);if(u){var h=n.get(u.key);h||(h={oldSeries:[{data:u.data,divide:UG(u.data)}],newSeries:[]},n.set(u.key,h)),h.newSeries.push({data:e,divide:UG(e)})}}}})),n}(i,n);E(o.keys(),(function(t){var n=o.get(t);WG(n.oldSeries,n.newSeries,e)}))}E(n.updatedSeries,(function(t){t.__universalTransitionEnabled&&(t.__universalTransitionEnabled=!1)}))}for(var a=t.getSeries(),s=i.oldSeries=[],l=i.oldData=[],u=0;u<a.length;u++){var h=a[u].getData();h.count()<1e4&&(s.push(a[u]),l.push(h))}}))})),bm((function(t){t.registerUpdateLifecycle("series:beforeupdate",(function(t,e,n){var i=Cb(e).labelManager;i||(i=Cb(e).labelManager=new Tb),i.clearLabels()})),t.registerUpdateLifecycle("series:layoutlabels",(function(t,e,n){var i=Cb(e).labelManager;n.updatedSeries.forEach((function(t){i.addLabelsOfSeries(e.getViewOfSeriesModel(t))})),i.updateLayoutConfig(e),i.layout(e),i.processLabelsOverall()}))})),t.Axis=W_,t.ChartView=xg,t.ComponentModel=Tp,t.ComponentView=gg,t.List=jm,t.Model=dc,t.PRIORITY=dv,t.SeriesModel=sg,t.color=Pn,t.connect=function(t){if(Y(t)){var e=t;t=null,E(e,(function(e){null!=e.group&&(t=e.group)})),t=t||"g_"+Qv++,E(e,(function(e){e.group=t}))}return $v[t]=!0,t},t.dataTool={},t.dependencies={zrender:"5.3.1"},t.disConnect=em,t.disconnect=nm,t.dispose=function(t){X(t)?t=Kv[t]:t instanceof Bv||(t=im(t)),t instanceof Bv&&!t.isDisposed()&&t.dispose()},t.env=r,t.extendChartView=function(t){var e=xg.extend(t);return xg.registerClass(e),e},t.extendComponentModel=function(t){var e=Tp.extend(t);return Tp.registerClass(e),e},t.extendComponentView=function(t){var e=gg.extend(t);return gg.registerClass(e),e},t.extendSeriesModel=function(t){var e=sg.extend(t);return sg.registerClass(e),e},t.format=k_,t.getCoordinateSystemDimensions=function(t){var e=hd.get(t);if(e)return e.getDimensionsInfo?e.getDimensionsInfo():e.dimensions.slice()},t.getInstanceByDom=im,t.getInstanceById=function(t){return Kv[t]},t.getMap=function(t){var e=uv("getMap");return e&&e(t)},t.graphic=A_,t.helper=d_,t.init=function(t,e,n){var i=!(n&&n.ssr);if(i){0;var r=im(t);if(r)return r;0}var o=new Bv(t,e,n);return o.id="ec_"+Jv++,Kv[o.id]=o,i&&ko(t,tm,o.id),Rv(o),sv.trigger("afterinit",o),o},t.innerDrawElementOnCanvas=Jy,t.matrix=Gi,t.number=C_,t.parseGeoJSON=T_,t.parseGeoJson=T_,t.registerAction=hm,t.registerCoordinateSystem=cm,t.registerLayout=pm,t.registerLoading=ym,t.registerLocale=Sc,t.registerMap=vm,t.registerPostInit=sm,t.registerPostUpdate=lm,t.registerPreprocessor=om,t.registerProcessor=am,t.registerTheme=rm,t.registerTransform=mm,t.registerUpdateLifecycle=um,t.registerVisual=dm,t.setCanvasCreator=function(t){c({createCanvas:t})},t.setPlatformAPI=c,t.throttle=Dg,t.time=D_,t.use=bm,t.util=L_,t.vector=Ht,t.version="5.3.2",t.zrUtil=bt,t.zrender=Or,Object.defineProperty(t,"__esModule",{value:!0})})); \ No newline at end of file
diff --git a/assets/lib/echarts/macarons.js b/assets/lib/echarts/macarons.js
deleted file mode 100644
index d6094aed..00000000
--- a/assets/lib/echarts/macarons.js
+++ /dev/null
@@ -1,240 +0,0 @@
-/*
-* Licensed to the Apache Software Foundation (ASF) under one
-* or more contributor license agreements. See the NOTICE file
-* distributed with this work for additional information
-* regarding copyright ownership. The ASF licenses this file
-* to you under the Apache License, Version 2.0 (the
-* "License"); you may not use this file except in compliance
-* with the License. You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing,
-* software distributed under the License is distributed on an
-* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-* KIND, either express or implied. See the License for the
-* specific language governing permissions and limitations
-* under the License.
-*/
-
-(function(root, factory) {
- if (typeof define === 'function' && define.amd) {
- // AMD. Register as an anonymous module.
- define(['exports', 'echarts'], factory);
- } else if (
- typeof exports === 'object' &&
- typeof exports.nodeName !== 'string'
- ) {
- // CommonJS
- factory(exports, require('echarts'));
- } else {
- // Browser globals
- factory({}, root.echarts);
- }
-})(this, function(exports, echarts) {
- var log = function(msg) {
- if (typeof console !== 'undefined') {
- console && console.error && console.error(msg);
- }
- };
- if (!echarts) {
- log('ECharts is not Loaded');
- return;
- }
-
- var colorPalette = [
- '#2ec7c9',
- '#b6a2de',
- '#5ab1ef',
- '#ffb980',
- '#d87a80',
- '#8d98b3',
- '#e5cf0d',
- '#97b552',
- '#95706d',
- '#dc69aa',
- '#07a2a4',
- '#9a7fd1',
- '#588dd5',
- '#f5994e',
- '#c05050',
- '#59678c',
- '#c9ab00',
- '#7eb00a',
- '#6f5553',
- '#c14089'
- ];
-
- var theme = {
- color: colorPalette,
-
- title: {
- textStyle: {
- fontWeight: 'normal',
- color: '#008acd'
- }
- },
-
- visualMap: {
- itemWidth: 15,
- color: ['#5ab1ef', '#e0ffff']
- },
-
- toolbox: {
- iconStyle: {
- normal: {
- borderColor: colorPalette[0]
- }
- }
- },
-
- tooltip: {
- backgroundColor: 'rgba(50,50,50,0.5)',
- axisPointer: {
- type: 'line',
- lineStyle: {
- color: '#008acd'
- },
- crossStyle: {
- color: '#008acd'
- },
- shadowStyle: {
- color: 'rgba(200,200,200,0.2)'
- }
- }
- },
-
- dataZoom: {
- dataBackgroundColor: '#efefff',
- fillerColor: 'rgba(182,162,222,0.2)',
- handleColor: '#008acd'
- },
-
- grid: {
- borderColor: '#eee'
- },
-
- categoryAxis: {
- axisLine: {
- lineStyle: {
- color: '#008acd'
- }
- },
- splitLine: {
- lineStyle: {
- color: ['#eee']
- }
- }
- },
-
- valueAxis: {
- axisLine: {
- lineStyle: {
- color: '#008acd'
- }
- },
- splitArea: {
- show: true,
- areaStyle: {
- color: ['rgba(250,250,250,0.1)', 'rgba(200,200,200,0.1)']
- }
- },
- splitLine: {
- lineStyle: {
- color: ['#eee']
- }
- }
- },
-
- timeline: {
- lineStyle: {
- color: '#008acd'
- },
- controlStyle: {
- color: '#008acd',
- borderColor: '#008acd'
- },
- symbol: 'emptyCircle',
- symbolSize: 3
- },
-
- line: {
- smooth: true,
- symbol: 'emptyCircle',
- symbolSize: 3
- },
-
- candlestick: {
- itemStyle: {
- color: '#d87a80',
- color0: '#2ec7c9'
- },
- lineStyle: {
- width: 1,
- color: '#d87a80',
- color0: '#2ec7c9'
- },
- areaStyle: {
- color: '#2ec7c9',
- color0: '#b6a2de'
- }
- },
-
- scatter: {
- symbol: 'circle',
- symbolSize: 4
- },
-
- map: {
- itemStyle: {
- color: '#ddd'
- },
- areaStyle: {
- color: '#fe994e'
- },
- label: {
- color: '#d87a80'
- }
- },
-
- graph: {
- itemStyle: {
- color: '#d87a80'
- },
- linkStyle: {
- color: '#2ec7c9'
- }
- },
-
- gauge: {
- axisLine: {
- lineStyle: {
- color: [
- [0.2, '#2ec7c9'],
- [0.8, '#5ab1ef'],
- [1, '#d87a80']
- ],
- width: 10
- }
- },
- axisTick: {
- splitNumber: 10,
- length: 15,
- lineStyle: {
- color: 'auto'
- }
- },
- splitLine: {
- length: 22,
- lineStyle: {
- color: 'auto'
- }
- },
- pointer: {
- width: 5
- }
- }
- };
-
- echarts.registerTheme('macarons', theme);
-});
diff --git a/assets/lib/echarts/theme/dark.yml b/assets/lib/echarts/theme/dark.yml
new file mode 100644
index 00000000..d6e7509e
--- /dev/null
+++ b/assets/lib/echarts/theme/dark.yml
@@ -0,0 +1,273 @@
+# dark theme based on chalk theme
+color:
+ - '#fc97af'
+ - '#87f7cf'
+ - '#f7f494'
+ - '#72ccff'
+ - '#f7c5a0'
+ - '#d4a4eb'
+ - '#d2f5a6'
+ - '#76f2f2'
+backgroundColor: rgba(41,52,65,1)
+textStyle: {}
+title:
+ textStyle:
+ color: '#ffffff'
+ subtextStyle:
+ color: '#dddddd'
+line:
+ itemStyle:
+ borderWidth: 1
+ lineStyle:
+ width: 2
+ symbolSize: 6
+ symbol: circle
+ smooth: true
+radar:
+ itemStyle:
+ borderWidth: 1
+ lineStyle:
+ width: 2
+ symbolSize: 3
+ symbol: circle
+ smooth: true
+bar:
+ itemStyle:
+ barBorderWidth: 0
+ barBorderColor: '#ccc'
+pie:
+ itemStyle:
+ borderWidth: 0
+ borderColor: '#ccc'
+scatter:
+ itemStyle:
+ borderWidth: 0
+ borderColor: '#ccc'
+boxplot:
+ itemStyle:
+ borderWidth: 0
+ borderColor: '#ccc'
+parallel:
+ itemStyle:
+ borderWidth: 0
+ borderColor: '#ccc'
+sankey:
+ itemStyle:
+ borderWidth: 0
+ borderColor: '#ccc'
+funnel:
+ itemStyle:
+ borderWidth: 0
+ borderColor: '#ccc'
+gauge:
+ itemStyle:
+ borderWidth: 0
+ borderColor: '#ccc'
+candlestick:
+ itemStyle:
+ color: '#fc97af'
+ color0: transparent
+ borderColor: '#fc97af'
+ borderColor0: '#87f7cf'
+ borderWidth: 1
+graph:
+ itemStyle:
+ borderWidth: 0
+ borderColor: '#ccc'
+ lineStyle:
+ width: 1
+ color: '#ffffff'
+ symbolSize: 3
+ symbol: emptyCircle
+ smooth: true
+ color:
+ - '#fc97af'
+ - '#87f7cf'
+ - '#f7f494'
+ - '#72ccff'
+ - '#f7c5a0'
+ - '#d4a4eb'
+ - '#d2f5a6'
+ - '#76f2f2'
+ label:
+ color: '#293441'
+map:
+ itemStyle:
+ areaColor: '#f3f3f3'
+ borderColor: '#999999'
+ borderWidth: 0.5
+ label:
+ color: '#893448'
+ emphasis:
+ itemStyle:
+ areaColor: rgba(255,178,72,1)
+ borderColor: '#eb8146'
+ borderWidth: 1
+ label:
+ color: rgb(137,52,72)
+geo:
+ itemStyle:
+ areaColor: '#f3f3f3'
+ borderColor: '#999999'
+ borderWidth: 0.5
+ label:
+ color: '#893448'
+ emphasis:
+ itemStyle:
+ areaColor: rgba(255,178,72,1)
+ borderColor: '#eb8146'
+ borderWidth: 1
+ label:
+ color: rgb(137,52,72)
+categoryAxis:
+ axisLine:
+ show: true
+ lineStyle:
+ color: '#666666'
+ axisTick:
+ show: true
+ lineStyle:
+ color: '#333'
+ axisLabel:
+ show: true
+ color: '#aaaaaa'
+ splitLine:
+ show: false
+ lineStyle:
+ color:
+ - '#e6e6e6'
+ splitArea:
+ show: false
+ areaStyle:
+ color:
+ - rgba(250,250,250,0.05)
+ - rgba(200,200,200,0.02)
+valueAxis:
+ axisLine:
+ show: true
+ lineStyle:
+ color: '#666666'
+ axisTick:
+ show: true
+ lineStyle:
+ color: '#333'
+ axisLabel:
+ show: true
+ color: '#aaaaaa'
+ splitLine:
+ show: true
+ lineStyle:
+ color:
+ - '#e6e6e6'
+ splitArea:
+ show: false
+ areaStyle:
+ color:
+ - rgba(250,250,250,0.05)
+ - rgba(200,200,200,0.02)
+logAxis:
+ axisLine:
+ show: true
+ lineStyle:
+ color: '#666666'
+ axisTick:
+ show: true
+ lineStyle:
+ color: '#333'
+ axisLabel:
+ show: true
+ color: '#aaaaaa'
+ splitLine:
+ show: true
+ lineStyle:
+ color:
+ - '#e6e6e6'
+ splitArea:
+ show: true
+ areaStyle:
+ color:
+ - rgba(250,250,250,0.05)
+ - rgba(200,200,200,0.02)
+timeAxis:
+ axisLine:
+ show: true
+ lineStyle:
+ color: '#666666'
+ axisTick:
+ show: true
+ lineStyle:
+ color: '#333'
+ axisLabel:
+ show: true
+ color: '#aaaaaa'
+ splitLine:
+ show: true
+ lineStyle:
+ color:
+ - '#e6e6e6'
+ splitArea:
+ show: false
+ areaStyle:
+ color:
+ - rgba(250,250,250,0.05)
+ - rgba(200,200,200,0.02)
+toolbox:
+ iconStyle:
+ borderColor: '#999999'
+ emphasis:
+ iconStyle:
+ borderColor: '#666666'
+legend:
+ textStyle:
+ color: '#999999'
+tooltip:
+ axisPointer:
+ lineStyle:
+ color: '#cccccc'
+ width: 1
+ crossStyle:
+ color: '#cccccc'
+ width: 1
+timeline:
+ lineStyle:
+ color: '#87f7cf'
+ width: 1
+ itemStyle:
+ color: '#87f7cf'
+ borderWidth: 1
+ controlStyle:
+ color: '#87f7cf'
+ borderColor: '#87f7cf'
+ borderWidth: 0.5
+ checkpointStyle:
+ color: '#fc97af'
+ borderColor: '#fc97af'
+ label:
+ color: '#87f7cf'
+ emphasis:
+ itemStyle:
+ color: '#f7f494'
+ controlStyle:
+ color: '#87f7cf'
+ borderColor: '#87f7cf'
+ borderWidth: 0.5
+ label:
+ color: '#87f7cf'
+visualMap:
+ color:
+ - '#fc97af'
+ - '#87f7cf'
+dataZoom:
+ backgroundColor: rgba(255,255,255,0)
+ dataBackgroundColor: rgba(114,204,255,1)
+ fillerColor: rgba(114,204,255,0.2)
+ handleColor: '#72ccff'
+ handleSize: 100%
+ textStyle:
+ color: '#333333'
+markPoint:
+ label:
+ color: '#293441'
+ emphasis:
+ label:
+ color: '#293441'
diff --git a/assets/lib/echarts/theme/light.yml b/assets/lib/echarts/theme/light.yml
new file mode 100644
index 00000000..87447ae9
--- /dev/null
+++ b/assets/lib/echarts/theme/light.yml
@@ -0,0 +1,297 @@
+# light theme based on macarons theme
+color:
+ - '#2ec7c9'
+ - '#b6a2de'
+ - '#5ab1ef'
+ - '#ffb980'
+ - '#d87a80'
+ - '#8d98b3'
+ - '#e5cf0d'
+ - '#97b552'
+ - '#95706d'
+ - '#dc69aa'
+ - '#07a2a4'
+ - '#9a7fd1'
+ - '#588dd5'
+ - '#f5994e'
+ - '#c05050'
+ - '#59678c'
+ - '#c9ab00'
+ - '#7eb00a'
+ - '#6f5553'
+ - '#c14089'
+backgroundColor: rgba(0,0,0,0)
+textStyle: {}
+title:
+ textStyle:
+ color: '#008acd'
+ subtextStyle:
+ color: '#aaaaaa'
+line:
+ itemStyle:
+ borderWidth: 1
+ lineStyle:
+ width: 2
+ symbolSize: 5
+ symbol: emptyCircle
+ smooth: true
+radar:
+ itemStyle:
+ borderWidth: 1
+ lineStyle:
+ width: 2
+ symbolSize: 3
+ symbol: emptyCircle
+ smooth: true
+bar:
+ itemStyle:
+ barBorderWidth: 0
+ barBorderColor: '#ccc'
+pie:
+ itemStyle:
+ borderWidth: 0
+ borderColor: '#ccc'
+scatter:
+ itemStyle:
+ borderWidth: 0
+ borderColor: '#ccc'
+boxplot:
+ itemStyle:
+ borderWidth: 0
+ borderColor: '#ccc'
+parallel:
+ itemStyle:
+ borderWidth: 0
+ borderColor: '#ccc'
+sankey:
+ itemStyle:
+ borderWidth: 0
+ borderColor: '#ccc'
+funnel:
+ itemStyle:
+ borderWidth: 0
+ borderColor: '#ccc'
+gauge:
+ itemStyle:
+ borderWidth: 0
+ borderColor: '#ccc'
+candlestick:
+ itemStyle:
+ color: '#d87a80'
+ color0: '#2ec7c9'
+ borderColor: '#d87a80'
+ borderColor0: '#2ec7c9'
+ borderWidth: 1
+graph:
+ itemStyle:
+ borderWidth: 0
+ borderColor: '#ccc'
+ lineStyle:
+ width: 1
+ color: '#aaaaaa'
+ symbolSize: 3
+ symbol: emptyCircle
+ smooth: true
+ color:
+ - '#2ec7c9'
+ - '#b6a2de'
+ - '#5ab1ef'
+ - '#ffb980'
+ - '#d87a80'
+ - '#8d98b3'
+ - '#e5cf0d'
+ - '#97b552'
+ - '#95706d'
+ - '#dc69aa'
+ - '#07a2a4'
+ - '#9a7fd1'
+ - '#588dd5'
+ - '#f5994e'
+ - '#c05050'
+ - '#59678c'
+ - '#c9ab00'
+ - '#7eb00a'
+ - '#6f5553'
+ - '#c14089'
+ label:
+ color: '#eeeeee'
+map:
+ itemStyle:
+ areaColor: '#dddddd'
+ borderColor: '#eeeeee'
+ borderWidth: 0.5
+ label:
+ color: '#d87a80'
+ emphasis:
+ itemStyle:
+ areaColor: rgba(254,153,78,1)
+ borderColor: '#444'
+ borderWidth: 1
+ label:
+ color: rgb(100,0,0)
+geo:
+ itemStyle:
+ areaColor: '#dddddd'
+ borderColor: '#eeeeee'
+ borderWidth: 0.5
+ label:
+ color: '#d87a80'
+ emphasis:
+ itemStyle:
+ areaColor: rgba(254,153,78,1)
+ borderColor: '#444'
+ borderWidth: 1
+ label:
+ color: rgb(100,0,0)
+categoryAxis:
+ axisLine:
+ show: true
+ lineStyle:
+ color: '#008acd'
+ axisTick:
+ show: true
+ lineStyle:
+ color: '#333'
+ axisLabel:
+ show: true
+ color: '#333'
+ splitLine:
+ show: false
+ lineStyle:
+ color:
+ - '#eee'
+ splitArea:
+ show: false
+ areaStyle:
+ color:
+ - rgba(250,250,250,0.3)
+ - rgba(200,200,200,0.3)
+valueAxis:
+ axisLine:
+ show: true
+ lineStyle:
+ color: '#008acd'
+ axisTick:
+ show: true
+ lineStyle:
+ color: '#333'
+ axisLabel:
+ show: true
+ color: '#333'
+ splitLine:
+ show: true
+ lineStyle:
+ color:
+ - '#eee'
+ splitArea:
+ show: true
+ areaStyle:
+ color:
+ - rgba(250,250,250,0.3)
+ - rgba(200,200,200,0.3)
+logAxis:
+ axisLine:
+ show: true
+ lineStyle:
+ color: '#008acd'
+ axisTick:
+ show: true
+ lineStyle:
+ color: '#333'
+ axisLabel:
+ show: true
+ color: '#333'
+ splitLine:
+ show: true
+ lineStyle:
+ color:
+ - '#eee'
+ splitArea:
+ show: true
+ areaStyle:
+ color:
+ - rgba(250,250,250,0.3)
+ - rgba(200,200,200,0.3)
+timeAxis:
+ axisLine:
+ show: true
+ lineStyle:
+ color: '#008acd'
+ axisTick:
+ show: true
+ lineStyle:
+ color: '#333'
+ axisLabel:
+ show: true
+ color: '#333'
+ splitLine:
+ show: true
+ lineStyle:
+ color:
+ - '#eee'
+ splitArea:
+ show: false
+ areaStyle:
+ color:
+ - rgba(250,250,250,0.3)
+ - rgba(200,200,200,0.3)
+toolbox:
+ iconStyle:
+ borderColor: '#2ec7c9'
+ emphasis:
+ iconStyle:
+ borderColor: '#18a4a6'
+legend:
+ textStyle:
+ color: '#333333'
+tooltip:
+ axisPointer:
+ lineStyle:
+ color: '#008acd'
+ width: 1
+ crossStyle:
+ color: '#008acd'
+ width: 1
+timeline:
+ lineStyle:
+ color: '#008acd'
+ width: 1
+ itemStyle:
+ color: '#008acd'
+ borderWidth: 1
+ controlStyle:
+ color: '#008acd'
+ borderColor: '#008acd'
+ borderWidth: 0.5
+ checkpointStyle:
+ color: '#2ec7c9'
+ borderColor: '#2ec7c9'
+ label:
+ color: '#008acd'
+ emphasis:
+ itemStyle:
+ color: '#a9334c'
+ controlStyle:
+ color: '#008acd'
+ borderColor: '#008acd'
+ borderWidth: 0.5
+ label:
+ color: '#008acd'
+visualMap:
+ color:
+ - '#5ab1ef'
+ - '#e0ffff'
+dataZoom:
+ backgroundColor: rgba(47,69,84,0)
+ dataBackgroundColor: '#efefff'
+ fillerColor: rgba(182,162,222,0.2)
+ handleColor: '#008acd'
+ handleSize: 100%
+ textStyle:
+ color: '#333333'
+markPoint:
+ label:
+ color: '#eeeeee'
+ emphasis:
+ label:
+ color: '#eeeeee'
diff --git a/assets/lib/fontawesome-free/all.min.css b/assets/lib/fontawesome-free/all.min.css
index 3d28ab20..9b2ac090 100644
--- a/assets/lib/fontawesome-free/all.min.css
+++ b/assets/lib/fontawesome-free/all.min.css
@@ -1,5 +1,6 @@
/*!
- * Font Awesome Free 5.13.0 by @fontawesome - https://fontawesome.com
+ * Font Awesome Free 6.1.1 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
+ * Copyright 2022 Fonticons, Inc.
*/
-.fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adobe:before{content:"\f778"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-artstation:before{content:"\f77a"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-atlas:before{content:"\f558"}.fa-atlassian:before{content:"\f77b"}.fa-atom:before{content:"\f5d2"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-award:before{content:"\f559"}.fa-aws:before{content:"\f375"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before{content:"\f77d"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-bacon:before{content:"\f7e5"}.fa-bahai:before{content:"\f666"}.fa-balance-scale:before{content:"\f24e"}.fa-balance-scale-left:before{content:"\f515"}.fa-balance-scale-right:before{content:"\f516"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-battle-net:before{content:"\f835"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bible:before{content:"\f647"}.fa-bicycle:before{content:"\f206"}.fa-biking:before{content:"\f84a"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blind:before{content:"\f29d"}.fa-blog:before{content:"\f781"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-dead:before{content:"\f6b7"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-reader:before{content:"\f5da"}.fa-bookmark:before{content:"\f02e"}.fa-bootstrap:before{content:"\f836"}.fa-border-all:before{content:"\f84c"}.fa-border-none:before{content:"\f850"}.fa-border-style:before{content:"\f853"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-box-tissue:before{content:"\f95b"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-bread-slice:before{content:"\f7ec"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-brush:before{content:"\f55d"}.fa-btc:before{content:"\f15a"}.fa-buffer:before{content:"\f837"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-business-time:before{content:"\f64a"}.fa-buy-n-large:before{content:"\f8a6"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-calendar-week:before{content:"\f784"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-campground:before{content:"\f6bb"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-car-alt:before{content:"\f5de"}.fa-car-battery:before{content:"\f5df"}.fa-car-crash:before{content:"\f5e1"}.fa-car-side:before{content:"\f5e4"}.fa-caravan:before{content:"\f8ff"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-charging-station:before{content:"\f5e7"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-double:before{content:"\f560"}.fa-check-square:before{content:"\f14a"}.fa-cheese:before{content:"\f7ef"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-chromecast:before{content:"\f838"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-city:before{content:"\f64f"}.fa-clinic-medical:before{content:"\f7f2"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-compress-alt:before{content:"\f422"}.fa-compress-arrows-alt:before{content:"\f78c"}.fa-concierge-bell:before{content:"\f562"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-cotton-bureau:before{content:"\f89e"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-credit-card:before{content:"\f09d"}.fa-critical-role:before{content:"\f6c9"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-crutch:before{content:"\f7f7"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dailymotion:before{content:"\f952"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-delicious:before{content:"\f1a5"}.fa-democrat:before{content:"\f747"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dharmachakra:before{content:"\f655"}.fa-dhl:before{content:"\f790"}.fa-diagnoses:before{content:"\f470"}.fa-diaspora:before{content:"\f791"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-directions:before{content:"\f5eb"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-disease:before{content:"\f7fa"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-drafting-compass:before{content:"\f568"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edit:before{content:"\f044"}.fa-egg:before{content:"\f7fb"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-ethernet:before{content:"\f796"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-evernote:before{content:"\f839"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-alt:before{content:"\f424"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fan:before{content:"\f863"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-faucet:before{content:"\f905"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before{content:"\f56b"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-figma:before{content:"\f799"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-download:before{content:"\f56d"}.fa-file-excel:before{content:"\f1c3"}.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-upload:before{content:"\f574"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-alt:before{content:"\f7e4"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-firefox-browser:before{content:"\f907"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-fish:before{content:"\f578"}.fa-fist-raised:before{content:"\f6de"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flushed:before{content:"\f579"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-funnel-dollar:before{content:"\f662"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-git:before{content:"\f1d3"}.fa-git-alt:before{content:"\f841"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-cheers:before{content:"\f79f"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glass-whiskey:before{content:"\f7a0"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-globe-africa:before{content:"\f57c"}.fa-globe-americas:before{content:"\f57d"}.fa-globe-asia:before{content:"\f57e"}.fa-globe-europe:before{content:"\f7a2"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-grimace:before{content:"\f57f"}.fa-grin:before{content:"\f580"}.fa-grin-alt:before{content:"\f581"}.fa-grin-beam:before{content:"\f582"}.fa-grin-beam-sweat:before{content:"\f583"}.fa-grin-hearts:before{content:"\f584"}.fa-grin-squint:before{content:"\f585"}.fa-grin-squint-tears:before{content:"\f586"}.fa-grin-stars:before{content:"\f587"}.fa-grin-tears:before{content:"\f588"}.fa-grin-tongue:before{content:"\f589"}.fa-grin-tongue-squint:before{content:"\f58a"}.fa-grin-tongue-wink:before{content:"\f58b"}.fa-grin-wink:before{content:"\f58c"}.fa-grip-horizontal:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guitar:before{content:"\f7a6"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hamburger:before{content:"\f805"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-medical:before{content:"\f95c"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-holding-water:before{content:"\f4c1"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-middle-finger:before{content:"\f806"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-sparkles:before{content:"\f95d"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-hands-wash:before{content:"\f95e"}.fa-handshake:before{content:"\f2b5"}.fa-handshake-alt-slash:before{content:"\f95f"}.fa-handshake-slash:before{content:"\f960"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-hat:before{content:"\f807"}.fa-hashtag:before{content:"\f292"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-hat-wizard:before{content:"\f6e8"}.fa-hdd:before{content:"\f0a0"}.fa-head-side-cough:before{content:"\f961"}.fa-head-side-cough-slash:before{content:"\f962"}.fa-head-side-mask:before{content:"\f963"}.fa-head-side-virus:before{content:"\f964"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-broken:before{content:"\f7a9"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-highlighter:before{content:"\f591"}.fa-hiking:before{content:"\f6ec"}.fa-hippo:before{content:"\f6ed"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hospital-user:before{content:"\f80d"}.fa-hot-tub:before{content:"\f593"}.fa-hotdog:before{content:"\f80f"}.fa-hotel:before{content:"\f594"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-house-damage:before{content:"\f6f1"}.fa-house-user:before{content:"\f965"}.fa-houzz:before{content:"\f27c"}.fa-hryvnia:before{content:"\f6f2"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-icicles:before{content:"\f7ad"}.fa-icons:before{content:"\f86d"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-ideal:before{content:"\f913"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-instagram:before{content:"\f16d"}.fa-instagram-square:before{content:"\f955"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi:before{content:"\f669"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joint:before{content:"\f595"}.fa-joomla:before{content:"\f1aa"}.fa-journal-whills:before{content:"\f66a"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaaba:before{content:"\f66b"}.fa-kaggle:before{content:"\f5fa"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-khanda:before{content:"\f66d"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-landmark:before{content:"\f66f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-house:before{content:"\f966"}.fa-laptop-medical:before{content:"\f812"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-laugh:before{content:"\f599"}.fa-laugh-beam:before{content:"\f59a"}.fa-laugh-squint:before{content:"\f59b"}.fa-laugh-wink:before{content:"\f59c"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-luggage-cart:before{content:"\f59d"}.fa-lungs:before{content:"\f604"}.fa-lungs-virus:before{content:"\f967"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mail-bulk:before{content:"\f674"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marked:before{content:"\f59f"}.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-markdown:before{content:"\f60f"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mask:before{content:"\f6fa"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-mdb:before{content:"\f8ca"}.fa-medal:before{content:"\f5a2"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-meh:before{content:"\f11a"}.fa-meh-blank:before{content:"\f5a4"}.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-memory:before{content:"\f538"}.fa-mendeley:before{content:"\f7b3"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-meteor:before{content:"\f753"}.fa-microblog:before{content:"\f91a"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mitten:before{content:"\f7b5"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mixer:before{content:"\f956"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-motorcycle:before{content:"\f21c"}.fa-mountain:before{content:"\f6fc"}.fa-mouse:before{content:"\f8cc"}.fa-mouse-pointer:before{content:"\f245"}.fa-mug-hot:before{content:"\f7b6"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nimblr:before{content:"\f5a8"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-oil-can:before{content:"\f613"}.fa-old-republic:before{content:"\f510"}.fa-om:before{content:"\f679"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-orcid:before{content:"\f8d2"}.fa-osi:before{content:"\f41a"}.fa-otter:before{content:"\f700"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-pager:before{content:"\f815"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-passport:before{content:"\f5ab"}.fa-pastafarianism:before{content:"\f67b"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-penny-arcade:before{content:"\f704"}.fa-people-arrows:before{content:"\f968"}.fa-people-carry:before{content:"\f4ce"}.fa-pepper-hot:before{content:"\f816"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-person-booth:before{content:"\f756"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-alt:before{content:"\f879"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-square-alt:before{content:"\f87b"}.fa-phone-volume:before{content:"\f2a0"}.fa-photo-video:before{content:"\f87c"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-square:before{content:"\f91e"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-pizza-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-plane-slash:before{content:"\f969"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poll:before{content:"\f681"}.fa-poll-h:before{content:"\f682"}.fa-poo:before{content:"\f2fe"}.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-pray:before{content:"\f683"}.fa-praying-hands:before{content:"\f684"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pump-medical:before{content:"\f96a"}.fa-pump-soap:before{content:"\f96b"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-quran:before{content:"\f687"}.fa-r-project:before{content:"\f4f7"}.fa-radiation:before{content:"\f7b9"}.fa-radiation-alt:before{content:"\f7ba"}.fa-rainbow:before{content:"\f75b"}.fa-random:before{content:"\f074"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-record-vinyl:before{content:"\f8d9"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redhat:before{content:"\f7bc"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-remove-format:before{content:"\f87d"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-republican:before{content:"\f75e"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-rev:before{content:"\f5b2"}.fa-ribbon:before{content:"\f4d6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-route:before{content:"\f4d7"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-running:before{content:"\f70c"}.fa-rupee-sign:before{content:"\f156"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-salesforce:before{content:"\f83b"}.fa-sass:before{content:"\f41e"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-scroll:before{content:"\f70e"}.fa-sd-card:before{content:"\f7c2"}.fa-search:before{content:"\f002"}.fa-search-dollar:before{content:"\f688"}.fa-search-location:before{content:"\f689"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-shapes:before{content:"\f61f"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-shield-virus:before{content:"\f96c"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopify:before{content:"\f957"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shower:before{content:"\f2cc"}.fa-shuttle-van:before{content:"\f5b6"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-sim-card:before{content:"\f7c4"}.fa-simplybuilt:before{content:"\f215"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skating:before{content:"\f7c5"}.fa-sketch:before{content:"\f7c6"}.fa-skiing:before{content:"\f7c9"}.fa-skiing-nordic:before{content:"\f7ca"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-wink:before{content:"\f4da"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-sms:before{content:"\f7cd"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowboarding:before{content:"\f7ce"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-soap:before{content:"\f96e"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-down-alt:before{content:"\f884"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-amount-up-alt:before{content:"\f885"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-speaker-deck:before{content:"\f83c"}.fa-spell-check:before{content:"\f891"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-square-root-alt:before{content:"\f698"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stackpath:before{content:"\f842"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-stopwatch-20:before{content:"\f96f"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-store-alt-slash:before{content:"\f970"}.fa-store-slash:before{content:"\f971"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-surprise:before{content:"\f5c2"}.fa-suse:before{content:"\f7d6"}.fa-swatchbook:before{content:"\f5c3"}.fa-swift:before{content:"\f8e1"}.fa-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.fa-symfony:before{content:"\f83d"}.fa-synagogue:before{content:"\f69b"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-tenge:before{content:"\f7d7"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-the-red-yeti:before{content:"\f69d"}.fa-theater-masks:before{content:"\f630"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-think-peaks:before{content:"\f731"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.fa-tired:before{content:"\f5c8"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toilet-paper-slash:before{content:"\f972"}.fa-toolbox:before{content:"\f552"}.fa-tools:before{content:"\f7d9"}.fa-tooth:before{content:"\f5c9"}.fa-torah:before{content:"\f6a0"}.fa-torii-gate:before{content:"\f6a1"}.fa-tractor:before{content:"\f722"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-trailer:before{content:"\f941"}.fa-train:before{content:"\f238"}.fa-tram:before{content:"\f7da"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-trash-restore:before{content:"\f829"}.fa-trash-restore-alt:before{content:"\f82a"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-tripadvisor:before{content:"\f262"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbraco:before{content:"\f8e8"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-unity:before{content:"\f949"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-injured:before{content:"\f728"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-virus:before{content:"\f974"}.fa-virus-slash:before{content:"\f975"}.fa-viruses:before{content:"\f976"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-voicemail:before{content:"\f897"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-mute:before{content:"\f6a9"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vote-yea:before{content:"\f772"}.fa-vr-cardboard:before{content:"\f729"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-water:before{content:"\f773"}.fa-wave-square:before{content:"\f83e"}.fa-waze:before{content:"\f83f"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-wind:before{content:"\f72e"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before{content:"\f5ce"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wpressr:before{content:"\f3e4"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yammer:before{content:"\f840"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-brands-400.eot);src:url(../webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.woff) format("woff"),url(../webfonts/fa-brands-400.ttf) format("truetype"),url(../webfonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:"Font Awesome 5 Brands"}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.eot);src:url(../webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.woff) format("woff"),url(../webfonts/fa-regular-400.ttf) format("truetype"),url(../webfonts/fa-regular-400.svg#fontawesome) format("svg")}.fab,.far{font-weight:400}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.eot);src:url(../webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.woff) format("woff"),url(../webfonts/fa-solid-900.ttf) format("truetype"),url(../webfonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:"Font Awesome 5 Free"}.fa,.fas{font-weight:900} \ No newline at end of file
+.fa{font-family:var(--fa-style-family,"Font Awesome 6 Free");font-weight:var(--fa-style,900)}.fa,.fa-brands,.fa-duotone,.fa-light,.fa-regular,.fa-solid,.fa-thin,.fab,.fad,.fal,.far,.fas,.fat{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:var(--fa-display,inline-block);font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.08333em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.07143em;vertical-align:.05357em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.04167em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin,2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc(var(--fa-li-width, 2em)*-1);position:absolute;text-align:center;width:var(--fa-li-width,2em);line-height:inherit}.fa-border{border-radius:var(--fa-border-radius,.1em);border:var(--fa-border-width,.08em) var(--fa-border-style,solid) var(--fa-border-color,#eee);padding:var(--fa-border-padding,.2em .25em .15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin,.3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin,.3em)}.fa-beat{-webkit-animation-name:fa-beat;animation-name:fa-beat;-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-bounce{-webkit-animation-name:fa-bounce;animation-name:fa-bounce;-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1))}.fa-fade{-webkit-animation-name:fa-fade;animation-name:fa-fade;-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-beat-fade,.fa-fade{-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s)}.fa-beat-fade{-webkit-animation-name:fa-beat-fade;animation-name:fa-beat-fade;-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-flip{-webkit-animation-name:fa-flip;animation-name:fa-flip;-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-shake{-webkit-animation-name:fa-shake;animation-name:fa-shake;-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-shake,.fa-spin{-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal)}.fa-spin{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-duration:var(--fa-animation-duration,2s);animation-duration:var(--fa-animation-duration,2s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin-reverse{--fa-animation-direction:reverse}.fa-pulse,.fa-spin-pulse{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,steps(8));animation-timing-function:var(--fa-animation-timing,steps(8))}@media (prefers-reduced-motion:reduce){.fa-beat,.fa-beat-fade,.fa-bounce,.fa-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{-webkit-animation-delay:-1ms;animation-delay:-1ms;-webkit-animation-duration:1ms;animation-duration:1ms;-webkit-animation-iteration-count:1;animation-iteration-count:1;transition-delay:0s;transition-duration:0s}}@-webkit-keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@-webkit-keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@-webkit-keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@-webkit-keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@-webkit-keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@-webkit-keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}.fa-rotate-by{-webkit-transform:rotate(var(--fa-rotate-angle,none));transform:rotate(var(--fa-rotate-angle,none))}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%;z-index:var(--fa-stack-z-index,auto)}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:var(--fa-inverse,#fff)}.fa-0:before{content:"\30"}.fa-1:before{content:"\31"}.fa-2:before{content:"\32"}.fa-3:before{content:"\33"}.fa-4:before{content:"\34"}.fa-5:before{content:"\35"}.fa-6:before{content:"\36"}.fa-7:before{content:"\37"}.fa-8:before{content:"\38"}.fa-9:before{content:"\39"}.fa-a:before{content:"\41"}.fa-address-book:before,.fa-contact-book:before{content:"\f2b9"}.fa-address-card:before,.fa-contact-card:before,.fa-vcard:before{content:"\f2bb"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-anchor:before{content:"\f13d"}.fa-anchor-circle-check:before{content:"\e4aa"}.fa-anchor-circle-exclamation:before{content:"\e4ab"}.fa-anchor-circle-xmark:before{content:"\e4ac"}.fa-anchor-lock:before{content:"\e4ad"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-double-down:before,.fa-angles-down:before{content:"\f103"}.fa-angle-double-left:before,.fa-angles-left:before{content:"\f100"}.fa-angle-double-right:before,.fa-angles-right:before{content:"\f101"}.fa-angle-double-up:before,.fa-angles-up:before{content:"\f102"}.fa-ankh:before{content:"\f644"}.fa-apple-alt:before,.fa-apple-whole:before{content:"\f5d1"}.fa-archway:before{content:"\f557"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-down-1-9:before,.fa-sort-numeric-asc:before,.fa-sort-numeric-down:before{content:"\f162"}.fa-arrow-down-9-1:before,.fa-sort-numeric-desc:before,.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-arrow-down-a-z:before,.fa-sort-alpha-asc:before,.fa-sort-alpha-down:before{content:"\f15d"}.fa-arrow-down-long:before,.fa-long-arrow-down:before{content:"\f175"}.fa-arrow-down-short-wide:before,.fa-sort-amount-desc:before,.fa-sort-amount-down-alt:before{content:"\f884"}.fa-arrow-down-up-across-line:before{content:"\e4af"}.fa-arrow-down-up-lock:before{content:"\e4b0"}.fa-arrow-down-wide-short:before,.fa-sort-amount-asc:before,.fa-sort-amount-down:before{content:"\f160"}.fa-arrow-down-z-a:before,.fa-sort-alpha-desc:before,.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-left-long:before,.fa-long-arrow-left:before{content:"\f177"}.fa-arrow-pointer:before,.fa-mouse-pointer:before{content:"\f245"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-right-arrow-left:before,.fa-exchange:before{content:"\f0ec"}.fa-arrow-right-from-bracket:before,.fa-sign-out:before{content:"\f08b"}.fa-arrow-right-long:before,.fa-long-arrow-right:before{content:"\f178"}.fa-arrow-right-to-bracket:before,.fa-sign-in:before{content:"\f090"}.fa-arrow-right-to-city:before{content:"\e4b3"}.fa-arrow-left-rotate:before,.fa-arrow-rotate-back:before,.fa-arrow-rotate-backward:before,.fa-arrow-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-arrow-right-rotate:before,.fa-arrow-rotate-forward:before,.fa-arrow-rotate-right:before,.fa-redo:before{content:"\f01e"}.fa-arrow-trend-down:before{content:"\e097"}.fa-arrow-trend-up:before{content:"\e098"}.fa-arrow-turn-down:before,.fa-level-down:before{content:"\f149"}.fa-arrow-turn-up:before,.fa-level-up:before{content:"\f148"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-up-1-9:before,.fa-sort-numeric-up:before{content:"\f163"}.fa-arrow-up-9-1:before,.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-arrow-up-a-z:before,.fa-sort-alpha-up:before{content:"\f15e"}.fa-arrow-up-from-bracket:before{content:"\e09a"}.fa-arrow-up-from-ground-water:before{content:"\e4b5"}.fa-arrow-up-from-water-pump:before{content:"\e4b6"}.fa-arrow-up-long:before,.fa-long-arrow-up:before{content:"\f176"}.fa-arrow-up-right-dots:before{content:"\e4b7"}.fa-arrow-up-right-from-square:before,.fa-external-link:before{content:"\f08e"}.fa-arrow-up-short-wide:before,.fa-sort-amount-up-alt:before{content:"\f885"}.fa-arrow-up-wide-short:before,.fa-sort-amount-up:before{content:"\f161"}.fa-arrow-up-z-a:before,.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-arrows-down-to-line:before{content:"\e4b8"}.fa-arrows-down-to-people:before{content:"\e4b9"}.fa-arrows-h:before,.fa-arrows-left-right:before{content:"\f07e"}.fa-arrows-left-right-to-line:before{content:"\e4ba"}.fa-arrows-rotate:before,.fa-refresh:before,.fa-sync:before{content:"\f021"}.fa-arrows-spin:before{content:"\e4bb"}.fa-arrows-split-up-and-left:before{content:"\e4bc"}.fa-arrows-to-circle:before{content:"\e4bd"}.fa-arrows-to-dot:before{content:"\e4be"}.fa-arrows-to-eye:before{content:"\e4bf"}.fa-arrows-turn-right:before{content:"\e4c0"}.fa-arrows-turn-to-dots:before{content:"\e4c1"}.fa-arrows-up-down:before,.fa-arrows-v:before{content:"\f07d"}.fa-arrows-up-down-left-right:before,.fa-arrows:before{content:"\f047"}.fa-arrows-up-to-line:before{content:"\e4c2"}.fa-asterisk:before{content:"\2a"}.fa-at:before{content:"\40"}.fa-atom:before{content:"\f5d2"}.fa-audio-description:before{content:"\f29e"}.fa-austral-sign:before{content:"\e0a9"}.fa-award:before{content:"\f559"}.fa-b:before{content:"\42"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before,.fa-carriage-baby:before{content:"\f77d"}.fa-backward:before{content:"\f04a"}.fa-backward-fast:before,.fa-fast-backward:before{content:"\f049"}.fa-backward-step:before,.fa-step-backward:before{content:"\f048"}.fa-bacon:before{content:"\f7e5"}.fa-bacteria:before{content:"\e059"}.fa-bacterium:before{content:"\e05a"}.fa-bag-shopping:before,.fa-shopping-bag:before{content:"\f290"}.fa-bahai:before{content:"\f666"}.fa-baht-sign:before{content:"\e0ac"}.fa-ban:before,.fa-cancel:before{content:"\f05e"}.fa-ban-smoking:before,.fa-smoking-ban:before{content:"\f54d"}.fa-band-aid:before,.fa-bandage:before{content:"\f462"}.fa-barcode:before{content:"\f02a"}.fa-bars:before,.fa-navicon:before{content:"\f0c9"}.fa-bars-progress:before,.fa-tasks-alt:before{content:"\f828"}.fa-bars-staggered:before,.fa-reorder:before,.fa-stream:before{content:"\f550"}.fa-baseball-ball:before,.fa-baseball:before{content:"\f433"}.fa-baseball-bat-ball:before{content:"\f432"}.fa-basket-shopping:before,.fa-shopping-basket:before{content:"\f291"}.fa-basketball-ball:before,.fa-basketball:before{content:"\f434"}.fa-bath:before,.fa-bathtub:before{content:"\f2cd"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-battery-5:before,.fa-battery-full:before,.fa-battery:before{content:"\f240"}.fa-battery-3:before,.fa-battery-half:before{content:"\f242"}.fa-battery-2:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-4:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-bed:before{content:"\f236"}.fa-bed-pulse:before,.fa-procedures:before{content:"\f487"}.fa-beer-mug-empty:before,.fa-beer:before{content:"\f0fc"}.fa-bell:before{content:"\f0f3"}.fa-bell-concierge:before,.fa-concierge-bell:before{content:"\f562"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bicycle:before{content:"\f206"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-bitcoin-sign:before{content:"\e0b4"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blog:before{content:"\f781"}.fa-bold:before{content:"\f032"}.fa-bolt:before,.fa-zap:before{content:"\f0e7"}.fa-bolt-lightning:before{content:"\e0b7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-atlas:before,.fa-book-atlas:before{content:"\f558"}.fa-bible:before,.fa-book-bible:before{content:"\f647"}.fa-book-bookmark:before{content:"\e0bb"}.fa-book-journal-whills:before,.fa-journal-whills:before{content:"\f66a"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-open-reader:before,.fa-book-reader:before{content:"\f5da"}.fa-book-quran:before,.fa-quran:before{content:"\f687"}.fa-book-dead:before,.fa-book-skull:before{content:"\f6b7"}.fa-bookmark:before{content:"\f02e"}.fa-border-all:before{content:"\f84c"}.fa-border-none:before{content:"\f850"}.fa-border-style:before,.fa-border-top-left:before{content:"\f853"}.fa-bore-hole:before{content:"\e4c3"}.fa-bottle-droplet:before{content:"\e4c4"}.fa-bottle-water:before{content:"\e4c5"}.fa-bowl-food:before{content:"\e4c6"}.fa-bowl-rice:before{content:"\e2eb"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-archive:before,.fa-box-archive:before{content:"\f187"}.fa-box-open:before{content:"\f49e"}.fa-box-tissue:before{content:"\e05b"}.fa-boxes-packing:before{content:"\e4c7"}.fa-boxes-alt:before,.fa-boxes-stacked:before,.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-brazilian-real-sign:before{content:"\e46c"}.fa-bread-slice:before{content:"\f7ec"}.fa-bridge:before{content:"\e4c8"}.fa-bridge-circle-check:before{content:"\e4c9"}.fa-bridge-circle-exclamation:before{content:"\e4ca"}.fa-bridge-circle-xmark:before{content:"\e4cb"}.fa-bridge-lock:before{content:"\e4cc"}.fa-bridge-water:before{content:"\e4ce"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broom:before{content:"\f51a"}.fa-broom-ball:before,.fa-quidditch-broom-ball:before,.fa-quidditch:before{content:"\f458"}.fa-brush:before{content:"\f55d"}.fa-bucket:before{content:"\e4cf"}.fa-bug:before{content:"\f188"}.fa-bug-slash:before{content:"\e490"}.fa-bugs:before{content:"\e4d0"}.fa-building:before{content:"\f1ad"}.fa-building-circle-arrow-right:before{content:"\e4d1"}.fa-building-circle-check:before{content:"\e4d2"}.fa-building-circle-exclamation:before{content:"\e4d3"}.fa-building-circle-xmark:before{content:"\e4d4"}.fa-bank:before,.fa-building-columns:before,.fa-institution:before,.fa-museum:before,.fa-university:before{content:"\f19c"}.fa-building-flag:before{content:"\e4d5"}.fa-building-lock:before{content:"\e4d6"}.fa-building-ngo:before{content:"\e4d7"}.fa-building-shield:before{content:"\e4d8"}.fa-building-un:before{content:"\e4d9"}.fa-building-user:before{content:"\e4da"}.fa-building-wheat:before{content:"\e4db"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burger:before,.fa-hamburger:before{content:"\f805"}.fa-burst:before{content:"\e4dc"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before,.fa-bus-simple:before{content:"\f55e"}.fa-briefcase-clock:before,.fa-business-time:before{content:"\f64a"}.fa-c:before{content:"\43"}.fa-birthday-cake:before,.fa-cake-candles:before,.fa-cake:before{content:"\f1fd"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-alt:before,.fa-calendar-days:before{content:"\f073"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-week:before{content:"\f784"}.fa-calendar-times:before,.fa-calendar-xmark:before{content:"\f273"}.fa-camera-alt:before,.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-camera-rotate:before{content:"\e0d8"}.fa-campground:before{content:"\f6bb"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-battery-car:before,.fa-car-battery:before{content:"\f5df"}.fa-car-burst:before,.fa-car-crash:before{content:"\f5e1"}.fa-car-on:before{content:"\e4dd"}.fa-car-alt:before,.fa-car-rear:before{content:"\f5de"}.fa-car-side:before{content:"\f5e4"}.fa-car-tunnel:before{content:"\e4de"}.fa-caravan:before{content:"\f8ff"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-flatbed:before,.fa-dolly-flatbed:before{content:"\f474"}.fa-cart-flatbed-suitcase:before,.fa-luggage-cart:before{content:"\f59d"}.fa-cart-plus:before{content:"\f217"}.fa-cart-shopping:before,.fa-shopping-cart:before{content:"\f07a"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cedi-sign:before{content:"\e0df"}.fa-cent-sign:before{content:"\e3f5"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-blackboard:before,.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before,.fa-chalkboard-user:before{content:"\f51c"}.fa-champagne-glasses:before,.fa-glass-cheers:before{content:"\f79f"}.fa-charging-station:before{content:"\f5e7"}.fa-area-chart:before,.fa-chart-area:before{content:"\f1fe"}.fa-bar-chart:before,.fa-chart-bar:before{content:"\f080"}.fa-chart-column:before{content:"\e0e3"}.fa-chart-gantt:before{content:"\e0e4"}.fa-chart-line:before,.fa-line-chart:before{content:"\f201"}.fa-chart-pie:before,.fa-pie-chart:before{content:"\f200"}.fa-chart-simple:before{content:"\e473"}.fa-check:before{content:"\f00c"}.fa-check-double:before{content:"\f560"}.fa-check-to-slot:before,.fa-vote-yea:before{content:"\f772"}.fa-cheese:before{content:"\f7ef"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-child-dress:before{content:"\e59c"}.fa-child-reaching:before{content:"\e59d"}.fa-child-rifle:before{content:"\e4e0"}.fa-children:before{content:"\e4e1"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-arrow-circle-down:before,.fa-circle-arrow-down:before{content:"\f0ab"}.fa-arrow-circle-left:before,.fa-circle-arrow-left:before{content:"\f0a8"}.fa-arrow-circle-right:before,.fa-circle-arrow-right:before{content:"\f0a9"}.fa-arrow-circle-up:before,.fa-circle-arrow-up:before{content:"\f0aa"}.fa-check-circle:before,.fa-circle-check:before{content:"\f058"}.fa-chevron-circle-down:before,.fa-circle-chevron-down:before{content:"\f13a"}.fa-chevron-circle-left:before,.fa-circle-chevron-left:before{content:"\f137"}.fa-chevron-circle-right:before,.fa-circle-chevron-right:before{content:"\f138"}.fa-chevron-circle-up:before,.fa-circle-chevron-up:before{content:"\f139"}.fa-circle-dollar-to-slot:before,.fa-donate:before{content:"\f4b9"}.fa-circle-dot:before,.fa-dot-circle:before{content:"\f192"}.fa-arrow-alt-circle-down:before,.fa-circle-down:before{content:"\f358"}.fa-circle-exclamation:before,.fa-exclamation-circle:before{content:"\f06a"}.fa-circle-h:before,.fa-hospital-symbol:before{content:"\f47e"}.fa-adjust:before,.fa-circle-half-stroke:before{content:"\f042"}.fa-circle-info:before,.fa-info-circle:before{content:"\f05a"}.fa-arrow-alt-circle-left:before,.fa-circle-left:before{content:"\f359"}.fa-circle-minus:before,.fa-minus-circle:before{content:"\f056"}.fa-circle-nodes:before{content:"\e4e2"}.fa-circle-notch:before{content:"\f1ce"}.fa-circle-pause:before,.fa-pause-circle:before{content:"\f28b"}.fa-circle-play:before,.fa-play-circle:before{content:"\f144"}.fa-circle-plus:before,.fa-plus-circle:before{content:"\f055"}.fa-circle-question:before,.fa-question-circle:before{content:"\f059"}.fa-circle-radiation:before,.fa-radiation-alt:before{content:"\f7ba"}.fa-arrow-alt-circle-right:before,.fa-circle-right:before{content:"\f35a"}.fa-circle-stop:before,.fa-stop-circle:before{content:"\f28d"}.fa-arrow-alt-circle-up:before,.fa-circle-up:before{content:"\f35b"}.fa-circle-user:before,.fa-user-circle:before{content:"\f2bd"}.fa-circle-xmark:before,.fa-times-circle:before,.fa-xmark-circle:before{content:"\f057"}.fa-city:before{content:"\f64f"}.fa-clapperboard:before{content:"\e131"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clipboard-question:before{content:"\e4e3"}.fa-clipboard-user:before{content:"\f7f3"}.fa-clock-four:before,.fa-clock:before{content:"\f017"}.fa-clock-rotate-left:before,.fa-history:before{content:"\f1da"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-arrow-down:before,.fa-cloud-download-alt:before,.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-arrow-up:before,.fa-cloud-upload-alt:before,.fa-cloud-upload:before{content:"\f0ee"}.fa-cloud-bolt:before,.fa-thunderstorm:before{content:"\f76c"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-showers-water:before{content:"\e4e4"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-clover:before{content:"\e139"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-code-commit:before{content:"\f386"}.fa-code-compare:before{content:"\e13a"}.fa-code-fork:before{content:"\e13b"}.fa-code-merge:before{content:"\f387"}.fa-code-pull-request:before{content:"\e13c"}.fa-coins:before{content:"\f51e"}.fa-colon-sign:before{content:"\e140"}.fa-comment:before{content:"\f075"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before,.fa-commenting:before{content:"\f4ad"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-slash:before{content:"\f4b3"}.fa-comment-sms:before,.fa-sms:before{content:"\f7cd"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compass-drafting:before,.fa-drafting-compass:before{content:"\f568"}.fa-compress:before{content:"\f066"}.fa-computer:before{content:"\e4e5"}.fa-computer-mouse:before,.fa-mouse:before{content:"\f8cc"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-couch:before{content:"\f4b8"}.fa-cow:before{content:"\f6c8"}.fa-credit-card-alt:before,.fa-credit-card:before{content:"\f09d"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before,.fa-crop-simple:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-crutch:before{content:"\f7f7"}.fa-cruzeiro-sign:before{content:"\e152"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cubes-stacked:before{content:"\e4e6"}.fa-d:before{content:"\44"}.fa-database:before{content:"\f1c0"}.fa-backspace:before,.fa-delete-left:before{content:"\f55a"}.fa-democrat:before{content:"\f747"}.fa-desktop-alt:before,.fa-desktop:before{content:"\f390"}.fa-dharmachakra:before{content:"\f655"}.fa-diagram-next:before{content:"\e476"}.fa-diagram-predecessor:before{content:"\e477"}.fa-diagram-project:before,.fa-project-diagram:before{content:"\f542"}.fa-diagram-successor:before{content:"\e47a"}.fa-diamond:before{content:"\f219"}.fa-diamond-turn-right:before,.fa-directions:before{content:"\f5eb"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-disease:before{content:"\f7fa"}.fa-display:before{content:"\e163"}.fa-divide:before{content:"\f529"}.fa-dna:before{content:"\f471"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before,.fa-dollar:before,.fa-usd:before{content:"\24"}.fa-dolly-box:before,.fa-dolly:before{content:"\f472"}.fa-dong-sign:before{content:"\e169"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dove:before{content:"\f4ba"}.fa-compress-alt:before,.fa-down-left-and-up-right-to-center:before{content:"\f422"}.fa-down-long:before,.fa-long-arrow-alt-down:before{content:"\f309"}.fa-download:before{content:"\f019"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-droplet:before,.fa-tint:before{content:"\f043"}.fa-droplet-slash:before,.fa-tint-slash:before{content:"\f5c7"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-e:before{content:"\45"}.fa-deaf:before,.fa-deafness:before,.fa-ear-deaf:before,.fa-hard-of-hearing:before{content:"\f2a4"}.fa-assistive-listening-systems:before,.fa-ear-listen:before{content:"\f2a2"}.fa-earth-africa:before,.fa-globe-africa:before{content:"\f57c"}.fa-earth-america:before,.fa-earth-americas:before,.fa-earth:before,.fa-globe-americas:before{content:"\f57d"}.fa-earth-asia:before,.fa-globe-asia:before{content:"\f57e"}.fa-earth-europe:before,.fa-globe-europe:before{content:"\f7a2"}.fa-earth-oceania:before,.fa-globe-oceania:before{content:"\e47b"}.fa-egg:before{content:"\f7fb"}.fa-eject:before{content:"\f052"}.fa-elevator:before{content:"\e16d"}.fa-ellipsis-h:before,.fa-ellipsis:before{content:"\f141"}.fa-ellipsis-v:before,.fa-ellipsis-vertical:before{content:"\f142"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-circle-check:before{content:"\e4e8"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelopes-bulk:before,.fa-mail-bulk:before{content:"\f674"}.fa-equals:before{content:"\3d"}.fa-eraser:before{content:"\f12d"}.fa-ethernet:before{content:"\f796"}.fa-eur:before,.fa-euro-sign:before,.fa-euro:before{content:"\f153"}.fa-exclamation:before{content:"\21"}.fa-expand:before{content:"\f065"}.fa-explosion:before{content:"\e4e9"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper-empty:before,.fa-eye-dropper:before,.fa-eyedropper:before{content:"\f1fb"}.fa-eye-low-vision:before,.fa-low-vision:before{content:"\f2a8"}.fa-eye-slash:before{content:"\f070"}.fa-f:before{content:"\46"}.fa-angry:before,.fa-face-angry:before{content:"\f556"}.fa-dizzy:before,.fa-face-dizzy:before{content:"\f567"}.fa-face-flushed:before,.fa-flushed:before{content:"\f579"}.fa-face-frown:before,.fa-frown:before{content:"\f119"}.fa-face-frown-open:before,.fa-frown-open:before{content:"\f57a"}.fa-face-grimace:before,.fa-grimace:before{content:"\f57f"}.fa-face-grin:before,.fa-grin:before{content:"\f580"}.fa-face-grin-beam:before,.fa-grin-beam:before{content:"\f582"}.fa-face-grin-beam-sweat:before,.fa-grin-beam-sweat:before{content:"\f583"}.fa-face-grin-hearts:before,.fa-grin-hearts:before{content:"\f584"}.fa-face-grin-squint:before,.fa-grin-squint:before{content:"\f585"}.fa-face-grin-squint-tears:before,.fa-grin-squint-tears:before{content:"\f586"}.fa-face-grin-stars:before,.fa-grin-stars:before{content:"\f587"}.fa-face-grin-tears:before,.fa-grin-tears:before{content:"\f588"}.fa-face-grin-tongue:before,.fa-grin-tongue:before{content:"\f589"}.fa-face-grin-tongue-squint:before,.fa-grin-tongue-squint:before{content:"\f58a"}.fa-face-grin-tongue-wink:before,.fa-grin-tongue-wink:before{content:"\f58b"}.fa-face-grin-wide:before,.fa-grin-alt:before{content:"\f581"}.fa-face-grin-wink:before,.fa-grin-wink:before{content:"\f58c"}.fa-face-kiss:before,.fa-kiss:before{content:"\f596"}.fa-face-kiss-beam:before,.fa-kiss-beam:before{content:"\f597"}.fa-face-kiss-wink-heart:before,.fa-kiss-wink-heart:before{content:"\f598"}.fa-face-laugh:before,.fa-laugh:before{content:"\f599"}.fa-face-laugh-beam:before,.fa-laugh-beam:before{content:"\f59a"}.fa-face-laugh-squint:before,.fa-laugh-squint:before{content:"\f59b"}.fa-face-laugh-wink:before,.fa-laugh-wink:before{content:"\f59c"}.fa-face-meh:before,.fa-meh:before{content:"\f11a"}.fa-face-meh-blank:before,.fa-meh-blank:before{content:"\f5a4"}.fa-face-rolling-eyes:before,.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-face-sad-cry:before,.fa-sad-cry:before{content:"\f5b3"}.fa-face-sad-tear:before,.fa-sad-tear:before{content:"\f5b4"}.fa-face-smile:before,.fa-smile:before{content:"\f118"}.fa-face-smile-beam:before,.fa-smile-beam:before{content:"\f5b8"}.fa-face-smile-wink:before,.fa-smile-wink:before{content:"\f4da"}.fa-face-surprise:before,.fa-surprise:before{content:"\f5c2"}.fa-face-tired:before,.fa-tired:before{content:"\f5c8"}.fa-fan:before{content:"\f863"}.fa-faucet:before{content:"\e005"}.fa-faucet-drip:before{content:"\e006"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before,.fa-feather-pointed:before{content:"\f56b"}.fa-ferry:before{content:"\e4ea"}.fa-file:before{content:"\f15b"}.fa-file-arrow-down:before,.fa-file-download:before{content:"\f56d"}.fa-file-arrow-up:before,.fa-file-upload:before{content:"\f574"}.fa-file-audio:before{content:"\f1c7"}.fa-file-circle-check:before{content:"\e493"}.fa-file-circle-exclamation:before{content:"\e4eb"}.fa-file-circle-minus:before{content:"\e4ed"}.fa-file-circle-plus:before{content:"\e4ee"}.fa-file-circle-question:before{content:"\e4ef"}.fa-file-circle-xmark:before{content:"\e494"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-excel:before{content:"\f1c3"}.fa-arrow-right-from-file:before,.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-arrow-right-to-file:before,.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-alt:before,.fa-file-lines:before,.fa-file-text:before{content:"\f15c"}.fa-file-medical:before{content:"\f477"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-edit:before,.fa-file-pen:before{content:"\f31c"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-shield:before{content:"\e4f0"}.fa-file-signature:before{content:"\f573"}.fa-file-video:before{content:"\f1c8"}.fa-file-medical-alt:before,.fa-file-waveform:before{content:"\f478"}.fa-file-word:before{content:"\f1c2"}.fa-file-archive:before,.fa-file-zipper:before{content:"\f1c6"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-filter-circle-dollar:before,.fa-funnel-dollar:before{content:"\f662"}.fa-filter-circle-xmark:before{content:"\e17b"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-burner:before{content:"\e4f1"}.fa-fire-extinguisher:before{content:"\f134"}.fa-fire-alt:before,.fa-fire-flame-curved:before{content:"\f7e4"}.fa-burn:before,.fa-fire-flame-simple:before{content:"\f46a"}.fa-fish:before{content:"\f578"}.fa-fish-fins:before{content:"\e4f2"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flask-vial:before{content:"\e4f3"}.fa-floppy-disk:before,.fa-save:before{content:"\f0c7"}.fa-florin-sign:before{content:"\e184"}.fa-folder-blank:before,.fa-folder:before{content:"\f07b"}.fa-folder-closed:before{content:"\e185"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-folder-tree:before{content:"\f802"}.fa-font:before{content:"\f031"}.fa-football-ball:before,.fa-football:before{content:"\f44e"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before,.fa-forward-fast:before{content:"\f050"}.fa-forward-step:before,.fa-step-forward:before{content:"\f051"}.fa-franc-sign:before{content:"\e18f"}.fa-frog:before{content:"\f52e"}.fa-futbol-ball:before,.fa-futbol:before,.fa-soccer-ball:before{content:"\f1e3"}.fa-g:before{content:"\47"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-dashboard:before,.fa-gauge-med:before,.fa-gauge:before,.fa-tachometer-alt-average:before{content:"\f624"}.fa-gauge-high:before,.fa-tachometer-alt-fast:before,.fa-tachometer-alt:before{content:"\f625"}.fa-gauge-simple-med:before,.fa-gauge-simple:before,.fa-tachometer-average:before{content:"\f629"}.fa-gauge-simple-high:before,.fa-tachometer-fast:before,.fa-tachometer:before{content:"\f62a"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-cog:before,.fa-gear:before{content:"\f013"}.fa-cogs:before,.fa-gears:before{content:"\f085"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-glass-water:before{content:"\e4f4"}.fa-glass-water-droplet:before{content:"\e4f5"}.fa-glasses:before{content:"\f530"}.fa-globe:before{content:"\f0ac"}.fa-golf-ball-tee:before,.fa-golf-ball:before{content:"\f450"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\f19d"}.fa-greater-than:before{content:"\3e"}.fa-greater-than-equal:before{content:"\f532"}.fa-grip-horizontal:before,.fa-grip:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-group-arrows-rotate:before{content:"\e4f6"}.fa-guarani-sign:before{content:"\e19a"}.fa-guitar:before{content:"\f7a6"}.fa-gun:before{content:"\e19b"}.fa-h:before{content:"\48"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-paper:before,.fa-hand:before{content:"\f256"}.fa-hand-back-fist:before,.fa-hand-rock:before{content:"\f255"}.fa-allergies:before,.fa-hand-dots:before{content:"\f461"}.fa-fist-raised:before,.fa-hand-fist:before{content:"\f6de"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-dollar:before,.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-holding-droplet:before,.fa-hand-holding-water:before{content:"\f4c1"}.fa-hand-holding-hand:before{content:"\e4f7"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-medical:before{content:"\e05c"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-middle-finger:before{content:"\f806"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-sparkles:before{content:"\e05d"}.fa-hand-spock:before{content:"\f259"}.fa-handcuffs:before{content:"\e4f8"}.fa-hands:before,.fa-sign-language:before,.fa-signing:before{content:"\f2a7"}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before,.fa-hands-american-sign-language-interpreting:before,.fa-hands-asl-interpreting:before{content:"\f2a3"}.fa-hands-bound:before{content:"\e4f9"}.fa-hands-bubbles:before,.fa-hands-wash:before{content:"\e05e"}.fa-hands-clapping:before{content:"\e1a8"}.fa-hands-holding:before{content:"\f4c2"}.fa-hands-holding-child:before{content:"\e4fa"}.fa-hands-holding-circle:before{content:"\e4fb"}.fa-hands-praying:before,.fa-praying-hands:before{content:"\f684"}.fa-handshake:before{content:"\f2b5"}.fa-hands-helping:before,.fa-handshake-angle:before{content:"\f4c4"}.fa-handshake-alt:before,.fa-handshake-simple:before{content:"\f4c6"}.fa-handshake-alt-slash:before,.fa-handshake-simple-slash:before{content:"\e05f"}.fa-handshake-slash:before{content:"\e060"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-drive:before,.fa-hdd:before{content:"\f0a0"}.fa-hashtag:before{content:"\23"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-hat-wizard:before{content:"\f6e8"}.fa-head-side-cough:before{content:"\e061"}.fa-head-side-cough-slash:before{content:"\e062"}.fa-head-side-mask:before{content:"\e063"}.fa-head-side-virus:before{content:"\e064"}.fa-header:before,.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before,.fa-headphones-simple:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-circle-bolt:before{content:"\e4fc"}.fa-heart-circle-check:before{content:"\e4fd"}.fa-heart-circle-exclamation:before{content:"\e4fe"}.fa-heart-circle-minus:before{content:"\e4ff"}.fa-heart-circle-plus:before{content:"\e500"}.fa-heart-circle-xmark:before{content:"\e501"}.fa-heart-broken:before,.fa-heart-crack:before{content:"\f7a9"}.fa-heart-pulse:before,.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-helicopter-symbol:before{content:"\e502"}.fa-hard-hat:before,.fa-hat-hard:before,.fa-helmet-safety:before{content:"\f807"}.fa-helmet-un:before{content:"\e503"}.fa-highlighter:before{content:"\f591"}.fa-hill-avalanche:before{content:"\e507"}.fa-hill-rockslide:before{content:"\e508"}.fa-hippo:before{content:"\f6ed"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital-alt:before,.fa-hospital-wide:before,.fa-hospital:before{content:"\f0f8"}.fa-hospital-user:before{content:"\f80d"}.fa-hot-tub-person:before,.fa-hot-tub:before{content:"\f593"}.fa-hotdog:before{content:"\f80f"}.fa-hotel:before{content:"\f594"}.fa-hourglass-2:before,.fa-hourglass-half:before,.fa-hourglass:before{content:"\f254"}.fa-hourglass-empty:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-home-alt:before,.fa-home-lg-alt:before,.fa-home:before,.fa-house:before{content:"\f015"}.fa-home-lg:before,.fa-house-chimney:before{content:"\e3af"}.fa-house-chimney-crack:before,.fa-house-damage:before{content:"\f6f1"}.fa-clinic-medical:before,.fa-house-chimney-medical:before{content:"\f7f2"}.fa-house-chimney-user:before{content:"\e065"}.fa-house-chimney-window:before{content:"\e00d"}.fa-house-circle-check:before{content:"\e509"}.fa-house-circle-exclamation:before{content:"\e50a"}.fa-house-circle-xmark:before{content:"\e50b"}.fa-house-crack:before{content:"\e3b1"}.fa-house-fire:before{content:"\e50c"}.fa-house-flag:before{content:"\e50d"}.fa-house-flood-water:before{content:"\e50e"}.fa-house-flood-water-circle-arrow-right:before{content:"\e50f"}.fa-house-laptop:before,.fa-laptop-house:before{content:"\e066"}.fa-house-lock:before{content:"\e510"}.fa-house-medical:before{content:"\e3b2"}.fa-house-medical-circle-check:before{content:"\e511"}.fa-house-medical-circle-exclamation:before{content:"\e512"}.fa-house-medical-circle-xmark:before{content:"\e513"}.fa-house-medical-flag:before{content:"\e514"}.fa-house-signal:before{content:"\e012"}.fa-house-tsunami:before{content:"\e515"}.fa-home-user:before,.fa-house-user:before{content:"\e1b0"}.fa-hryvnia-sign:before,.fa-hryvnia:before{content:"\f6f2"}.fa-hurricane:before{content:"\f751"}.fa-i:before{content:"\49"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-icicles:before{content:"\f7ad"}.fa-heart-music-camera-bolt:before,.fa-icons:before{content:"\f86d"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before,.fa-id-card-clip:before{content:"\f47f"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-image-portrait:before,.fa-portrait:before{content:"\f3e0"}.fa-images:before{content:"\f302"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-indian-rupee-sign:before,.fa-indian-rupee:before,.fa-inr:before{content:"\e1bc"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-italic:before{content:"\f033"}.fa-j:before{content:"\4a"}.fa-jar:before{content:"\e516"}.fa-jar-wheat:before{content:"\e517"}.fa-jedi:before{content:"\f669"}.fa-fighter-jet:before,.fa-jet-fighter:before{content:"\f0fb"}.fa-jet-fighter-up:before{content:"\e518"}.fa-joint:before{content:"\f595"}.fa-jug-detergent:before{content:"\e519"}.fa-k:before{content:"\4b"}.fa-kaaba:before{content:"\f66b"}.fa-key:before{content:"\f084"}.fa-keyboard:before{content:"\f11c"}.fa-khanda:before{content:"\f66d"}.fa-kip-sign:before{content:"\e1c4"}.fa-first-aid:before,.fa-kit-medical:before{content:"\f479"}.fa-kitchen-set:before{content:"\e51a"}.fa-kiwi-bird:before{content:"\f535"}.fa-l:before{content:"\4c"}.fa-land-mine-on:before{content:"\e51b"}.fa-landmark:before{content:"\f66f"}.fa-landmark-alt:before,.fa-landmark-dome:before{content:"\f752"}.fa-landmark-flag:before{content:"\e51c"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-file:before{content:"\e51d"}.fa-laptop-medical:before{content:"\f812"}.fa-lari-sign:before{content:"\e1c8"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-left-long:before,.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-arrows-alt-h:before,.fa-left-right:before{content:"\f337"}.fa-lemon:before{content:"\f094"}.fa-less-than:before{content:"\3c"}.fa-less-than-equal:before{content:"\f537"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-lines-leaning:before{content:"\e51e"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-chain-broken:before,.fa-chain-slash:before,.fa-link-slash:before,.fa-unlink:before{content:"\f127"}.fa-lira-sign:before{content:"\f195"}.fa-list-squares:before,.fa-list:before{content:"\f03a"}.fa-list-check:before,.fa-tasks:before{content:"\f0ae"}.fa-list-1-2:before,.fa-list-numeric:before,.fa-list-ol:before{content:"\f0cb"}.fa-list-dots:before,.fa-list-ul:before{content:"\f0ca"}.fa-litecoin-sign:before{content:"\e1d3"}.fa-location-arrow:before{content:"\f124"}.fa-location-crosshairs:before,.fa-location:before{content:"\f601"}.fa-location-dot:before,.fa-map-marker-alt:before{content:"\f3c5"}.fa-location-pin:before,.fa-map-marker:before{content:"\f041"}.fa-location-pin-lock:before{content:"\e51f"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-locust:before{content:"\e520"}.fa-lungs:before{content:"\f604"}.fa-lungs-virus:before{content:"\e067"}.fa-m:before{content:"\4d"}.fa-magnet:before{content:"\f076"}.fa-magnifying-glass:before,.fa-search:before{content:"\f002"}.fa-magnifying-glass-arrow-right:before{content:"\e521"}.fa-magnifying-glass-chart:before{content:"\e522"}.fa-magnifying-glass-dollar:before,.fa-search-dollar:before{content:"\f688"}.fa-magnifying-glass-location:before,.fa-search-location:before{content:"\f689"}.fa-magnifying-glass-minus:before,.fa-search-minus:before{content:"\f010"}.fa-magnifying-glass-plus:before,.fa-search-plus:before{content:"\f00e"}.fa-manat-sign:before{content:"\e1d5"}.fa-map:before{content:"\f279"}.fa-map-location:before,.fa-map-marked:before{content:"\f59f"}.fa-map-location-dot:before,.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-pin:before{content:"\f276"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-and-venus:before{content:"\f224"}.fa-mars-and-venus-burst:before{content:"\e523"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before,.fa-mars-stroke-right:before{content:"\f22b"}.fa-mars-stroke-up:before,.fa-mars-stroke-v:before{content:"\f22a"}.fa-glass-martini-alt:before,.fa-martini-glass:before{content:"\f57b"}.fa-cocktail:before,.fa-martini-glass-citrus:before{content:"\f561"}.fa-glass-martini:before,.fa-martini-glass-empty:before{content:"\f000"}.fa-mask:before{content:"\f6fa"}.fa-mask-face:before{content:"\e1d7"}.fa-mask-ventilator:before{content:"\e524"}.fa-masks-theater:before,.fa-theater-masks:before{content:"\f630"}.fa-mattress-pillow:before{content:"\e525"}.fa-expand-arrows-alt:before,.fa-maximize:before{content:"\f31e"}.fa-medal:before{content:"\f5a2"}.fa-memory:before{content:"\f538"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-comment-alt:before,.fa-message:before{content:"\f27a"}.fa-meteor:before{content:"\f753"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before,.fa-microphone-lines:before{content:"\f3c9"}.fa-microphone-alt-slash:before,.fa-microphone-lines-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-mill-sign:before{content:"\e1ed"}.fa-compress-arrows-alt:before,.fa-minimize:before{content:"\f78c"}.fa-minus:before,.fa-subtract:before{content:"\f068"}.fa-mitten:before{content:"\f7b5"}.fa-mobile-android:before,.fa-mobile-phone:before,.fa-mobile:before{content:"\f3ce"}.fa-mobile-button:before{content:"\f10b"}.fa-mobile-retro:before{content:"\e527"}.fa-mobile-android-alt:before,.fa-mobile-screen:before{content:"\f3cf"}.fa-mobile-alt:before,.fa-mobile-screen-button:before{content:"\f3cd"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-1:before,.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-1-wave:before,.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-bill-transfer:before{content:"\e528"}.fa-money-bill-trend-up:before{content:"\e529"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wheat:before{content:"\e52a"}.fa-money-bills:before{content:"\e1f3"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before,.fa-money-check-dollar:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-mosquito:before{content:"\e52b"}.fa-mosquito-net:before{content:"\e52c"}.fa-motorcycle:before{content:"\f21c"}.fa-mound:before{content:"\e52d"}.fa-mountain:before{content:"\f6fc"}.fa-mountain-city:before{content:"\e52e"}.fa-mountain-sun:before{content:"\e52f"}.fa-mug-hot:before{content:"\f7b6"}.fa-coffee:before,.fa-mug-saucer:before{content:"\f0f4"}.fa-music:before{content:"\f001"}.fa-n:before{content:"\4e"}.fa-naira-sign:before{content:"\e1f6"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-not-equal:before{content:"\f53e"}.fa-note-sticky:before,.fa-sticky-note:before{content:"\f249"}.fa-notes-medical:before{content:"\f481"}.fa-o:before{content:"\4f"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-oil-can:before{content:"\f613"}.fa-oil-well:before{content:"\e532"}.fa-om:before{content:"\f679"}.fa-otter:before{content:"\f700"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-p:before{content:"\50"}.fa-pager:before{content:"\f815"}.fa-paint-roller:before{content:"\f5aa"}.fa-paint-brush:before,.fa-paintbrush:before{content:"\f1fc"}.fa-palette:before{content:"\f53f"}.fa-pallet:before{content:"\f482"}.fa-panorama:before{content:"\e209"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-passport:before{content:"\f5ab"}.fa-file-clipboard:before,.fa-paste:before{content:"\f0ea"}.fa-pause:before{content:"\f04c"}.fa-paw:before{content:"\f1b0"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before,.fa-pen-clip:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-ruler:before,.fa-pencil-ruler:before{content:"\f5ae"}.fa-edit:before,.fa-pen-to-square:before{content:"\f044"}.fa-pencil-alt:before,.fa-pencil:before{content:"\f303"}.fa-people-arrows-left-right:before,.fa-people-arrows:before{content:"\e068"}.fa-people-carry-box:before,.fa-people-carry:before{content:"\f4ce"}.fa-people-group:before{content:"\e533"}.fa-people-line:before{content:"\e534"}.fa-people-pulling:before{content:"\e535"}.fa-people-robbery:before{content:"\e536"}.fa-people-roof:before{content:"\e537"}.fa-pepper-hot:before{content:"\f816"}.fa-percent:before,.fa-percentage:before{content:"\25"}.fa-male:before,.fa-person:before{content:"\f183"}.fa-person-arrow-down-to-line:before{content:"\e538"}.fa-person-arrow-up-from-line:before{content:"\e539"}.fa-biking:before,.fa-person-biking:before{content:"\f84a"}.fa-person-booth:before{content:"\f756"}.fa-person-breastfeeding:before{content:"\e53a"}.fa-person-burst:before{content:"\e53b"}.fa-person-cane:before{content:"\e53c"}.fa-person-chalkboard:before{content:"\e53d"}.fa-person-circle-check:before{content:"\e53e"}.fa-person-circle-exclamation:before{content:"\e53f"}.fa-person-circle-minus:before{content:"\e540"}.fa-person-circle-plus:before{content:"\e541"}.fa-person-circle-question:before{content:"\e542"}.fa-person-circle-xmark:before{content:"\e543"}.fa-digging:before,.fa-person-digging:before{content:"\f85e"}.fa-diagnoses:before,.fa-person-dots-from-line:before{content:"\f470"}.fa-female:before,.fa-person-dress:before{content:"\f182"}.fa-person-dress-burst:before{content:"\e544"}.fa-person-drowning:before{content:"\e545"}.fa-person-falling:before{content:"\e546"}.fa-person-falling-burst:before{content:"\e547"}.fa-person-half-dress:before{content:"\e548"}.fa-person-harassing:before{content:"\e549"}.fa-hiking:before,.fa-person-hiking:before{content:"\f6ec"}.fa-person-military-pointing:before{content:"\e54a"}.fa-person-military-rifle:before{content:"\e54b"}.fa-person-military-to-person:before{content:"\e54c"}.fa-person-praying:before,.fa-pray:before{content:"\f683"}.fa-person-pregnant:before{content:"\e31e"}.fa-person-rays:before{content:"\e54d"}.fa-person-rifle:before{content:"\e54e"}.fa-person-running:before,.fa-running:before{content:"\f70c"}.fa-person-shelter:before{content:"\e54f"}.fa-person-skating:before,.fa-skating:before{content:"\f7c5"}.fa-person-skiing:before,.fa-skiing:before{content:"\f7c9"}.fa-person-skiing-nordic:before,.fa-skiing-nordic:before{content:"\f7ca"}.fa-person-snowboarding:before,.fa-snowboarding:before{content:"\f7ce"}.fa-person-swimming:before,.fa-swimmer:before{content:"\f5c4"}.fa-person-through-window:before{content:"\e433"}.fa-person-walking:before,.fa-walking:before{content:"\f554"}.fa-person-walking-arrow-loop-left:before{content:"\e551"}.fa-person-walking-arrow-right:before{content:"\e552"}.fa-person-walking-dashed-line-arrow-right:before{content:"\e553"}.fa-person-walking-luggage:before{content:"\e554"}.fa-blind:before,.fa-person-walking-with-cane:before{content:"\f29d"}.fa-peseta-sign:before{content:"\e221"}.fa-peso-sign:before{content:"\e222"}.fa-phone:before{content:"\f095"}.fa-phone-alt:before,.fa-phone-flip:before{content:"\f879"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-volume:before,.fa-volume-control-phone:before{content:"\f2a0"}.fa-photo-film:before,.fa-photo-video:before{content:"\f87c"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pizza-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-circle-check:before{content:"\e555"}.fa-plane-circle-exclamation:before{content:"\e556"}.fa-plane-circle-xmark:before{content:"\e557"}.fa-plane-departure:before{content:"\f5b0"}.fa-plane-lock:before{content:"\e558"}.fa-plane-slash:before{content:"\e069"}.fa-plane-up:before{content:"\e22d"}.fa-plant-wilt:before{content:"\e43b"}.fa-plate-wheat:before{content:"\e55a"}.fa-play:before{content:"\f04b"}.fa-plug:before{content:"\f1e6"}.fa-plug-circle-bolt:before{content:"\e55b"}.fa-plug-circle-check:before{content:"\e55c"}.fa-plug-circle-exclamation:before{content:"\e55d"}.fa-plug-circle-minus:before{content:"\e55e"}.fa-plug-circle-plus:before{content:"\e55f"}.fa-plug-circle-xmark:before{content:"\e560"}.fa-add:before,.fa-plus:before{content:"\2b"}.fa-plus-minus:before{content:"\e43c"}.fa-podcast:before{content:"\f2ce"}.fa-poo:before{content:"\f2fe"}.fa-poo-bolt:before,.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-power-off:before{content:"\f011"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before,.fa-prescription-bottle-medical:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-pump-medical:before{content:"\e06a"}.fa-pump-soap:before{content:"\e06b"}.fa-puzzle-piece:before{content:"\f12e"}.fa-q:before{content:"\51"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\3f"}.fa-quote-left-alt:before,.fa-quote-left:before{content:"\f10d"}.fa-quote-right-alt:before,.fa-quote-right:before{content:"\f10e"}.fa-r:before{content:"\52"}.fa-radiation:before{content:"\f7b9"}.fa-radio:before{content:"\f8d7"}.fa-rainbow:before{content:"\f75b"}.fa-ranking-star:before{content:"\e561"}.fa-receipt:before{content:"\f543"}.fa-record-vinyl:before{content:"\f8d9"}.fa-ad:before,.fa-rectangle-ad:before{content:"\f641"}.fa-list-alt:before,.fa-rectangle-list:before{content:"\f022"}.fa-rectangle-times:before,.fa-rectangle-xmark:before,.fa-times-rectangle:before,.fa-window-close:before{content:"\f410"}.fa-recycle:before{content:"\f1b8"}.fa-registered:before{content:"\f25d"}.fa-repeat:before{content:"\f363"}.fa-mail-reply:before,.fa-reply:before{content:"\f3e5"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-republican:before{content:"\f75e"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-ribbon:before{content:"\f4d6"}.fa-right-from-bracket:before,.fa-sign-out-alt:before{content:"\f2f5"}.fa-exchange-alt:before,.fa-right-left:before{content:"\f362"}.fa-long-arrow-alt-right:before,.fa-right-long:before{content:"\f30b"}.fa-right-to-bracket:before,.fa-sign-in-alt:before{content:"\f2f6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-road-barrier:before{content:"\e562"}.fa-road-bridge:before{content:"\e563"}.fa-road-circle-check:before{content:"\e564"}.fa-road-circle-exclamation:before{content:"\e565"}.fa-road-circle-xmark:before{content:"\e566"}.fa-road-lock:before{content:"\e567"}.fa-road-spikes:before{content:"\e568"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rotate:before,.fa-sync-alt:before{content:"\f2f1"}.fa-rotate-back:before,.fa-rotate-backward:before,.fa-rotate-left:before,.fa-undo-alt:before{content:"\f2ea"}.fa-redo-alt:before,.fa-rotate-forward:before,.fa-rotate-right:before{content:"\f2f9"}.fa-route:before{content:"\f4d7"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-rouble:before,.fa-rub:before,.fa-ruble-sign:before,.fa-ruble:before{content:"\f158"}.fa-rug:before{content:"\e569"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-rupee-sign:before,.fa-rupee:before{content:"\f156"}.fa-rupiah-sign:before{content:"\e23d"}.fa-s:before{content:"\53"}.fa-sack-dollar:before{content:"\f81d"}.fa-sack-xmark:before{content:"\e56a"}.fa-sailboat:before{content:"\e445"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-balance-scale:before,.fa-scale-balanced:before{content:"\f24e"}.fa-balance-scale-left:before,.fa-scale-unbalanced:before{content:"\f515"}.fa-balance-scale-right:before,.fa-scale-unbalanced-flip:before{content:"\f516"}.fa-school:before{content:"\f549"}.fa-school-circle-check:before{content:"\e56b"}.fa-school-circle-exclamation:before{content:"\e56c"}.fa-school-circle-xmark:before{content:"\e56d"}.fa-school-flag:before{content:"\e56e"}.fa-school-lock:before{content:"\e56f"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-screwdriver:before{content:"\f54a"}.fa-screwdriver-wrench:before,.fa-tools:before{content:"\f7d9"}.fa-scroll:before{content:"\f70e"}.fa-scroll-torah:before,.fa-torah:before{content:"\f6a0"}.fa-sd-card:before{content:"\f7c2"}.fa-section:before{content:"\e447"}.fa-seedling:before,.fa-sprout:before{content:"\f4d8"}.fa-server:before{content:"\f233"}.fa-shapes:before,.fa-triangle-circle-square:before{content:"\f61f"}.fa-arrow-turn-right:before,.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-share-from-square:before,.fa-share-square:before{content:"\f14d"}.fa-share-alt:before,.fa-share-nodes:before{content:"\f1e0"}.fa-sheet-plastic:before{content:"\e571"}.fa-ils:before,.fa-shekel-sign:before,.fa-shekel:before,.fa-sheqel-sign:before,.fa-sheqel:before{content:"\f20b"}.fa-shield-blank:before,.fa-shield:before{content:"\f132"}.fa-shield-cat:before{content:"\e572"}.fa-shield-dog:before{content:"\e573"}.fa-shield-alt:before,.fa-shield-halved:before{content:"\f3ed"}.fa-shield-heart:before{content:"\e574"}.fa-shield-virus:before{content:"\e06c"}.fa-ship:before{content:"\f21a"}.fa-shirt:before,.fa-t-shirt:before,.fa-tshirt:before{content:"\f553"}.fa-shoe-prints:before{content:"\f54b"}.fa-shop:before,.fa-store-alt:before{content:"\f54f"}.fa-shop-lock:before{content:"\e4a5"}.fa-shop-slash:before,.fa-store-alt-slash:before{content:"\e070"}.fa-shower:before{content:"\f2cc"}.fa-shrimp:before{content:"\e448"}.fa-random:before,.fa-shuffle:before{content:"\f074"}.fa-shuttle-space:before,.fa-space-shuttle:before{content:"\f197"}.fa-sign-hanging:before,.fa-sign:before{content:"\f4d9"}.fa-signal-5:before,.fa-signal-perfect:before,.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-map-signs:before,.fa-signs-post:before{content:"\f277"}.fa-sim-card:before{content:"\f7c4"}.fa-sink:before{content:"\e06d"}.fa-sitemap:before{content:"\f0e8"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before,.fa-sliders:before{content:"\f1de"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-soap:before{content:"\e06e"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-spa:before{content:"\f5bb"}.fa-pastafarianism:before,.fa-spaghetti-monster-flying:before{content:"\f67b"}.fa-spell-check:before{content:"\f891"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spoon:before,.fa-utensil-spoon:before{content:"\f2e5"}.fa-spray-can:before{content:"\f5bd"}.fa-air-freshener:before,.fa-spray-can-sparkles:before{content:"\f5d0"}.fa-square:before{content:"\f0c8"}.fa-external-link-square:before,.fa-square-arrow-up-right:before{content:"\f14c"}.fa-caret-square-down:before,.fa-square-caret-down:before{content:"\f150"}.fa-caret-square-left:before,.fa-square-caret-left:before{content:"\f191"}.fa-caret-square-right:before,.fa-square-caret-right:before{content:"\f152"}.fa-caret-square-up:before,.fa-square-caret-up:before{content:"\f151"}.fa-check-square:before,.fa-square-check:before{content:"\f14a"}.fa-envelope-square:before,.fa-square-envelope:before{content:"\f199"}.fa-square-full:before{content:"\f45c"}.fa-h-square:before,.fa-square-h:before{content:"\f0fd"}.fa-minus-square:before,.fa-square-minus:before{content:"\f146"}.fa-square-nfi:before{content:"\e576"}.fa-parking:before,.fa-square-parking:before{content:"\f540"}.fa-pen-square:before,.fa-pencil-square:before,.fa-square-pen:before{content:"\f14b"}.fa-square-person-confined:before{content:"\e577"}.fa-phone-square:before,.fa-square-phone:before{content:"\f098"}.fa-phone-square-alt:before,.fa-square-phone-flip:before{content:"\f87b"}.fa-plus-square:before,.fa-square-plus:before{content:"\f0fe"}.fa-poll-h:before,.fa-square-poll-horizontal:before{content:"\f682"}.fa-poll:before,.fa-square-poll-vertical:before{content:"\f681"}.fa-square-root-alt:before,.fa-square-root-variable:before{content:"\f698"}.fa-rss-square:before,.fa-square-rss:before{content:"\f143"}.fa-share-alt-square:before,.fa-square-share-nodes:before{content:"\f1e1"}.fa-external-link-square-alt:before,.fa-square-up-right:before{content:"\f360"}.fa-square-virus:before{content:"\e578"}.fa-square-xmark:before,.fa-times-square:before,.fa-xmark-square:before{content:"\f2d3"}.fa-rod-asclepius:before,.fa-rod-snake:before,.fa-staff-aesculapius:before,.fa-staff-snake:before{content:"\e579"}.fa-stairs:before{content:"\e289"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before,.fa-star-half-stroke:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-gbp:before,.fa-pound-sign:before,.fa-sterling-sign:before{content:"\f154"}.fa-stethoscope:before{content:"\f0f1"}.fa-stop:before{content:"\f04d"}.fa-stopwatch:before{content:"\f2f2"}.fa-stopwatch-20:before{content:"\e06f"}.fa-store:before{content:"\f54e"}.fa-store-slash:before{content:"\e071"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stroopwafel:before{content:"\f551"}.fa-subscript:before{content:"\f12c"}.fa-suitcase:before{content:"\f0f2"}.fa-medkit:before,.fa-suitcase-medical:before{content:"\f0fa"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-sun-plant-wilt:before{content:"\e57a"}.fa-superscript:before{content:"\f12b"}.fa-swatchbook:before{content:"\f5c3"}.fa-synagogue:before{content:"\f69b"}.fa-syringe:before{content:"\f48e"}.fa-t:before{content:"\54"}.fa-table:before{content:"\f0ce"}.fa-table-cells:before,.fa-th:before{content:"\f00a"}.fa-table-cells-large:before,.fa-th-large:before{content:"\f009"}.fa-columns:before,.fa-table-columns:before{content:"\f0db"}.fa-table-list:before,.fa-th-list:before{content:"\f00b"}.fa-ping-pong-paddle-ball:before,.fa-table-tennis-paddle-ball:before,.fa-table-tennis:before{content:"\f45d"}.fa-tablet-android:before,.fa-tablet:before{content:"\f3fb"}.fa-tablet-button:before{content:"\f10a"}.fa-tablet-alt:before,.fa-tablet-screen-button:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-digital-tachograph:before,.fa-tachograph-digital:before{content:"\f566"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tarp:before{content:"\e57b"}.fa-tarp-droplet:before{content:"\e57c"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-temperature-arrow-down:before,.fa-temperature-down:before{content:"\e03f"}.fa-temperature-arrow-up:before,.fa-temperature-up:before{content:"\e040"}.fa-temperature-0:before,.fa-temperature-empty:before,.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-temperature-4:before,.fa-temperature-full:before,.fa-thermometer-4:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-temperature-2:before,.fa-temperature-half:before,.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-temperature-1:before,.fa-temperature-quarter:before,.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-temperature-3:before,.fa-temperature-three-quarters:before,.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-tenge-sign:before,.fa-tenge:before{content:"\f7d7"}.fa-tent:before{content:"\e57d"}.fa-tent-arrow-down-to-line:before{content:"\e57e"}.fa-tent-arrow-left-right:before{content:"\e57f"}.fa-tent-arrow-turn-left:before{content:"\e580"}.fa-tent-arrows-down:before{content:"\e581"}.fa-tents:before{content:"\e582"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-remove-format:before,.fa-text-slash:before{content:"\f87d"}.fa-text-width:before{content:"\f035"}.fa-thermometer:before{content:"\f491"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumb-tack:before,.fa-thumbtack:before{content:"\f08d"}.fa-ticket:before{content:"\f145"}.fa-ticket-alt:before,.fa-ticket-simple:before{content:"\f3ff"}.fa-timeline:before{content:"\e29c"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toilet-paper-slash:before{content:"\e072"}.fa-toilet-portable:before{content:"\e583"}.fa-toilets-portable:before{content:"\e584"}.fa-toolbox:before{content:"\f552"}.fa-tooth:before{content:"\f5c9"}.fa-torii-gate:before{content:"\f6a1"}.fa-tornado:before{content:"\f76f"}.fa-broadcast-tower:before,.fa-tower-broadcast:before{content:"\f519"}.fa-tower-cell:before{content:"\e585"}.fa-tower-observation:before{content:"\e586"}.fa-tractor:before{content:"\f722"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-trailer:before{content:"\e041"}.fa-train:before{content:"\f238"}.fa-subway:before,.fa-train-subway:before{content:"\f239"}.fa-train-tram:before,.fa-tram:before{content:"\f7da"}.fa-transgender-alt:before,.fa-transgender:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-arrow-up:before,.fa-trash-restore:before{content:"\f829"}.fa-trash-alt:before,.fa-trash-can:before{content:"\f2ed"}.fa-trash-can-arrow-up:before,.fa-trash-restore-alt:before{content:"\f82a"}.fa-tree:before{content:"\f1bb"}.fa-tree-city:before{content:"\e587"}.fa-exclamation-triangle:before,.fa-triangle-exclamation:before,.fa-warning:before{content:"\f071"}.fa-trophy:before{content:"\f091"}.fa-trowel:before{content:"\e589"}.fa-trowel-bricks:before{content:"\e58a"}.fa-truck:before{content:"\f0d1"}.fa-truck-arrow-right:before{content:"\e58b"}.fa-truck-droplet:before{content:"\e58c"}.fa-shipping-fast:before,.fa-truck-fast:before{content:"\f48b"}.fa-truck-field:before{content:"\e58d"}.fa-truck-field-un:before{content:"\e58e"}.fa-truck-front:before{content:"\e2b7"}.fa-ambulance:before,.fa-truck-medical:before{content:"\f0f9"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-truck-plane:before{content:"\e58f"}.fa-truck-loading:before,.fa-truck-ramp-box:before{content:"\f4de"}.fa-teletype:before,.fa-tty:before{content:"\f1e4"}.fa-try:before,.fa-turkish-lira-sign:before,.fa-turkish-lira:before{content:"\e2bb"}.fa-level-down-alt:before,.fa-turn-down:before{content:"\f3be"}.fa-level-up-alt:before,.fa-turn-up:before{content:"\f3bf"}.fa-television:before,.fa-tv-alt:before,.fa-tv:before{content:"\f26c"}.fa-u:before{content:"\55"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-underline:before{content:"\f0cd"}.fa-universal-access:before{content:"\f29a"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before,.fa-unlock-keyhole:before{content:"\f13e"}.fa-arrows-alt-v:before,.fa-up-down:before{content:"\f338"}.fa-arrows-alt:before,.fa-up-down-left-right:before{content:"\f0b2"}.fa-long-arrow-alt-up:before,.fa-up-long:before{content:"\f30c"}.fa-expand-alt:before,.fa-up-right-and-down-left-from-center:before{content:"\f424"}.fa-external-link-alt:before,.fa-up-right-from-square:before{content:"\f35d"}.fa-upload:before{content:"\f093"}.fa-user:before{content:"\f007"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-clock:before{content:"\f4fd"}.fa-user-doctor:before,.fa-user-md:before{content:"\f0f0"}.fa-user-cog:before,.fa-user-gear:before{content:"\f4fe"}.fa-user-graduate:before{content:"\f501"}.fa-user-friends:before,.fa-user-group:before{content:"\f500"}.fa-user-injured:before{content:"\f728"}.fa-user-alt:before,.fa-user-large:before{content:"\f406"}.fa-user-alt-slash:before,.fa-user-large-slash:before{content:"\f4fa"}.fa-user-lock:before{content:"\f502"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-edit:before,.fa-user-pen:before{content:"\f4ff"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before,.fa-user-xmark:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-between-lines:before{content:"\e591"}.fa-users-cog:before,.fa-users-gear:before{content:"\f509"}.fa-users-line:before{content:"\e592"}.fa-users-rays:before{content:"\e593"}.fa-users-rectangle:before{content:"\e594"}.fa-users-slash:before{content:"\e073"}.fa-users-viewfinder:before{content:"\e595"}.fa-cutlery:before,.fa-utensils:before{content:"\f2e7"}.fa-v:before{content:"\56"}.fa-shuttle-van:before,.fa-van-shuttle:before{content:"\f5b6"}.fa-vault:before{content:"\e2c5"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-vest:before{content:"\e085"}.fa-vest-patches:before{content:"\e086"}.fa-vial:before{content:"\f492"}.fa-vial-circle-check:before{content:"\e596"}.fa-vial-virus:before{content:"\e597"}.fa-vials:before{content:"\f493"}.fa-video-camera:before,.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-virus:before{content:"\e074"}.fa-virus-covid:before{content:"\e4a8"}.fa-virus-covid-slash:before{content:"\e4a9"}.fa-virus-slash:before{content:"\e075"}.fa-viruses:before{content:"\e076"}.fa-voicemail:before{content:"\f897"}.fa-volcano:before{content:"\f770"}.fa-volleyball-ball:before,.fa-volleyball:before{content:"\f45f"}.fa-volume-high:before,.fa-volume-up:before{content:"\f028"}.fa-volume-down:before,.fa-volume-low:before{content:"\f027"}.fa-volume-off:before{content:"\f026"}.fa-volume-mute:before,.fa-volume-times:before,.fa-volume-xmark:before{content:"\f6a9"}.fa-vr-cardboard:before{content:"\f729"}.fa-w:before{content:"\57"}.fa-walkie-talkie:before{content:"\f8ef"}.fa-wallet:before{content:"\f555"}.fa-magic:before,.fa-wand-magic:before{content:"\f0d0"}.fa-magic-wand-sparkles:before,.fa-wand-magic-sparkles:before{content:"\e2ca"}.fa-wand-sparkles:before{content:"\f72b"}.fa-warehouse:before{content:"\f494"}.fa-water:before{content:"\f773"}.fa-ladder-water:before,.fa-swimming-pool:before,.fa-water-ladder:before{content:"\f5c5"}.fa-wave-square:before{content:"\f83e"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weight-scale:before,.fa-weight:before{content:"\f496"}.fa-wheat-alt:before,.fa-wheat-awn:before{content:"\e2cd"}.fa-wheat-awn-circle-exclamation:before{content:"\e598"}.fa-wheelchair:before{content:"\f193"}.fa-wheelchair-alt:before,.fa-wheelchair-move:before{content:"\e2ce"}.fa-glass-whiskey:before,.fa-whiskey-glass:before{content:"\f7a0"}.fa-wifi-3:before,.fa-wifi-strong:before,.fa-wifi:before{content:"\f1eb"}.fa-wind:before{content:"\f72e"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before,.fa-wine-glass-empty:before{content:"\f5ce"}.fa-krw:before,.fa-won-sign:before,.fa-won:before{content:"\f159"}.fa-worm:before{content:"\e599"}.fa-wrench:before{content:"\f0ad"}.fa-x:before{content:"\58"}.fa-x-ray:before{content:"\f497"}.fa-close:before,.fa-multiply:before,.fa-remove:before,.fa-times:before,.fa-xmark:before{content:"\f00d"}.fa-xmarks-lines:before{content:"\e59a"}.fa-y:before{content:"\59"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen-sign:before,.fa-yen:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-z:before{content:"\5a"}.fa-sr-only,.fa-sr-only-focusable:not(:focus),.sr-only,.sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}:host,:root{--fa-font-brands:normal 400 1em/1 "Font Awesome 6 Brands"}@font-face{font-family:"Font Awesome 6 Brands";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}.fa-brands,.fab{font-family:"Font Awesome 6 Brands";font-weight:400}.fa-42-group:before,.fa-innosoft:before{content:"\e080"}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-adn:before{content:"\f170"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-alipay:before{content:"\f642"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-amilia:before{content:"\f36d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-pay:before{content:"\f415"}.fa-artstation:before{content:"\f77a"}.fa-asymmetrik:before{content:"\f372"}.fa-atlassian:before{content:"\f77b"}.fa-audible:before{content:"\f373"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-aws:before{content:"\f375"}.fa-bandcamp:before{content:"\f2d5"}.fa-battle-net:before{content:"\f835"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bilibili:before{content:"\e3d9"}.fa-bimobject:before{content:"\f378"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bootstrap:before{content:"\f836"}.fa-bots:before{content:"\e340"}.fa-btc:before{content:"\f15a"}.fa-buffer:before{content:"\f837"}.fa-buromobelexperte:before{content:"\f37f"}.fa-buy-n-large:before{content:"\f8a6"}.fa-buysellads:before{content:"\f20d"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-chrome:before{content:"\f268"}.fa-chromecast:before{content:"\f838"}.fa-cloudflare:before{content:"\e07d"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cmplid:before{content:"\e360"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cotton-bureau:before{content:"\f89e"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-critical-role:before{content:"\f6c9"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dailymotion:before{content:"\e052"}.fa-dashcube:before{content:"\f210"}.fa-deezer:before{content:"\e077"}.fa-delicious:before{content:"\f1a5"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dhl:before{content:"\f790"}.fa-diaspora:before{content:"\f791"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-draft2digital:before{content:"\f396"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drupal:before{content:"\f1a9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edge-legacy:before{content:"\e078"}.fa-elementor:before{content:"\f430"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envira:before{content:"\f299"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-etsy:before{content:"\f2d7"}.fa-evernote:before{content:"\f839"}.fa-expeditedssl:before{content:"\f23e"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-figma:before{content:"\f799"}.fa-firefox:before{content:"\f269"}.fa-firefox-browser:before{content:"\e007"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-fly:before{content:"\f417"}.fa-font-awesome-flag:before,.fa-font-awesome-logo-full:before,.fa-font-awesome:before{content:"\f2b4"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-fulcrum:before{content:"\f50b"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-git:before{content:"\f1d3"}.fa-git-alt:before{content:"\f841"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-gofore:before{content:"\f3a7"}.fa-golang:before{content:"\e40f"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-pay:before{content:"\e079"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guilded:before{content:"\e07e"}.fa-gulp:before{content:"\f3ae"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hashnode:before{content:"\e499"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-hive:before{content:"\e07f"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-hotjar:before{content:"\f3b1"}.fa-houzz:before{content:"\f27c"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-ideal:before{content:"\e013"}.fa-imdb:before{content:"\f2d8"}.fa-instagram:before{content:"\f16d"}.fa-instagram-square:before{content:"\e055"}.fa-instalod:before{content:"\e081"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joomla:before{content:"\f1aa"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaggle:before{content:"\f5fa"}.fa-keybase:before{content:"\f4f5"}.fa-keycdn:before{content:"\f3ba"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-korvue:before{content:"\f42f"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-leanpub:before{content:"\f212"}.fa-less:before{content:"\f41d"}.fa-line:before{content:"\f3c0"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-mailchimp:before{content:"\f59e"}.fa-mandalorian:before{content:"\f50f"}.fa-markdown:before{content:"\f60f"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-mdb:before{content:"\f8ca"}.fa-medapps:before{content:"\f3c6"}.fa-medium-m:before,.fa-medium:before{content:"\f23a"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-mendeley:before{content:"\f7b3"}.fa-microblog:before{content:"\e01a"}.fa-microsoft:before{content:"\f3ca"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mixer:before{content:"\e056"}.fa-mizuni:before{content:"\f3cc"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-nfc-directional:before{content:"\e530"}.fa-nfc-symbol:before{content:"\e531"}.fa-nimblr:before{content:"\f5a8"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-octopus-deploy:before{content:"\e082"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-old-republic:before{content:"\f510"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-orcid:before{content:"\f8d2"}.fa-osi:before{content:"\f41a"}.fa-padlet:before{content:"\e4a0"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-palfed:before{content:"\f3d8"}.fa-patreon:before{content:"\f3d9"}.fa-paypal:before{content:"\f1ed"}.fa-perbyte:before{content:"\e083"}.fa-periscope:before{content:"\f3da"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-square:before{content:"\e01e"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-pix:before{content:"\e43a"}.fa-playstation:before{content:"\f3df"}.fa-product-hunt:before{content:"\f288"}.fa-pushed:before{content:"\f3e1"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-r-project:before{content:"\f4f7"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redhat:before{content:"\f7bc"}.fa-renren:before{content:"\f18b"}.fa-replyd:before{content:"\f3e6"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-rev:before{content:"\f5b2"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-rust:before{content:"\e07a"}.fa-safari:before{content:"\f267"}.fa-salesforce:before{content:"\f83b"}.fa-sass:before{content:"\f41e"}.fa-schlix:before{content:"\f3ea"}.fa-screenpal:before{content:"\e570"}.fa-scribd:before{content:"\f28a"}.fa-searchengin:before{content:"\f3eb"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-servicestack:before{content:"\f3ec"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shopify:before{content:"\e057"}.fa-shopware:before{content:"\f5b5"}.fa-simplybuilt:before{content:"\f215"}.fa-sistrix:before{content:"\f3ee"}.fa-sith:before{content:"\f512"}.fa-sitrox:before{content:"\e44a"}.fa-sketch:before{content:"\f7c6"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack-hash:before,.fa-slack:before{content:"\f198"}.fa-slideshare:before{content:"\f1e7"}.fa-snapchat-ghost:before,.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-square:before{content:"\f2ad"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-speakap:before{content:"\f3f3"}.fa-speaker-deck:before{content:"\f83c"}.fa-spotify:before{content:"\f1bc"}.fa-square-font-awesome:before{content:"\f425"}.fa-font-awesome-alt:before,.fa-square-font-awesome-stroke:before{content:"\f35c"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stackpath:before{content:"\f842"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-sticker-mule:before{content:"\f3f7"}.fa-strava:before{content:"\f428"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-superpowers:before{content:"\f2dd"}.fa-supple:before{content:"\f3f9"}.fa-suse:before{content:"\f7d6"}.fa-swift:before{content:"\f8e1"}.fa-symfony:before{content:"\f83d"}.fa-teamspeak:before{content:"\f4f9"}.fa-telegram-plane:before,.fa-telegram:before{content:"\f2c6"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-the-red-yeti:before{content:"\f69d"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-think-peaks:before{content:"\f731"}.fa-tiktok:before{content:"\e07b"}.fa-trade-federation:before{content:"\f513"}.fa-trello:before{content:"\f181"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbraco:before{content:"\f8e8"}.fa-uncharted:before{content:"\e084"}.fa-uniregistry:before{content:"\f404"}.fa-unity:before{content:"\e049"}.fa-unsplash:before{content:"\e07c"}.fa-untappd:before{content:"\f405"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-vaadin:before{content:"\f408"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-viber:before{content:"\f409"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-vuejs:before{content:"\f41f"}.fa-watchman-monitoring:before{content:"\e087"}.fa-waze:before{content:"\f83f"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-whmcs:before{content:"\f40d"}.fa-wikipedia-w:before{content:"\f266"}.fa-windows:before{content:"\f17a"}.fa-wirsindhandwerk:before,.fa-wsh:before{content:"\e2d0"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wodu:before{content:"\e088"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wpressr:before{content:"\f3e4"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yammer:before{content:"\f840"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}:host,:root{--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}.fa-regular,.far{font-family:"Font Awesome 6 Free";font-weight:400}:host,:root{--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}.fa-solid,.fas{font-family:"Font Awesome 6 Free";font-weight:900}@font-face{font-family:"Font Awesome 5 Brands";font-display:block;font-weight:400;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:900;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:400;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype");unicode-range:u+f003,u+f006,u+f014,u+f016-f017,u+f01a-f01b,u+f01d,u+f022,u+f03e,u+f044,u+f046,u+f05c-f05d,u+f06e,u+f070,u+f087-f088,u+f08a,u+f094,u+f096-f097,u+f09d,u+f0a0,u+f0a2,u+f0a4-f0a7,u+f0c5,u+f0c7,u+f0e5-f0e6,u+f0eb,u+f0f6-f0f8,u+f10c,u+f114-f115,u+f118-f11a,u+f11c-f11d,u+f133,u+f147,u+f14e,u+f150-f152,u+f185-f186,u+f18e,u+f190-f192,u+f196,u+f1c1-f1c9,u+f1d9,u+f1db,u+f1e3,u+f1ea,u+f1f7,u+f1f9,u+f20a,u+f247-f248,u+f24a,u+f24d,u+f255-f25b,u+f25d,u+f271-f274,u+f278,u+f27b,u+f28c,u+f28e,u+f29c,u+f2b5,u+f2b7,u+f2ba,u+f2bc,u+f2be,u+f2c0-f2c1,u+f2c3,u+f2d0,u+f2d2,u+f2d4,u+f2dc}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-v4compatibility.woff2) format("woff2"),url(../webfonts/fa-v4compatibility.ttf) format("truetype");unicode-range:u+f041,u+f047,u+f065-f066,u+f07d-f07e,u+f080,u+f08b,u+f08e,u+f090,u+f09a,u+f0ac,u+f0ae,u+f0b2,u+f0d0,u+f0d6,u+f0e4,u+f0ec,u+f10a-f10b,u+f123,u+f13e,u+f148-f149,u+f14c,u+f156,u+f15e,u+f160-f161,u+f163,u+f175-f178,u+f195,u+f1f8,u+f219,u+f250,u+f252,u+f27a} \ No newline at end of file
diff --git a/assets/lib/gitalk/gitalk.css b/assets/lib/gitalk/gitalk.css
index 71a80c19..365cad04 100644
--- a/assets/lib/gitalk/gitalk.css
+++ b/assets/lib/gitalk/gitalk.css
@@ -835,6 +835,7 @@
.gt-container .gt-avatar-github {
width: 3em;
height: 3em;
+ cursor: pointer;
}
@media (max-width: 479px) {
.gt-container .gt-avatar-github {
diff --git a/assets/lib/gitalk/gitalk.min.js b/assets/lib/gitalk/gitalk.min.js
index 39757cda..10f180c2 100644
--- a/assets/lib/gitalk/gitalk.min.js
+++ b/assets/lib/gitalk/gitalk.min.js
@@ -1,4 +1,4 @@
-!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.Gitalk=t():e.Gitalk=t()}(this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/dist",t(t.s=82)}([function(e,t){var n=e.exports={version:"2.6.11"};"number"==typeof __e&&(__e=n)},function(e,t){var n=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(e,t,n){var r=n(39)("wks"),o=n(25),i=n(1).Symbol,a="function"==typeof i;(e.exports=function(e){return r[e]||(r[e]=a&&i[e]||(a?i:o)("Symbol."+e))}).store=r},function(e,t,n){"use strict";function r(e){return"[object Array]"===C.call(e)}function o(e){return void 0===e}function i(e){return null!==e&&!o(e)&&null!==e.constructor&&!o(e.constructor)&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}function a(e){return"[object ArrayBuffer]"===C.call(e)}function u(e){return"undefined"!=typeof FormData&&e instanceof FormData}function s(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&e.buffer instanceof ArrayBuffer}function c(e){return"string"==typeof e}function l(e){return"number"==typeof e}function f(e){return null!==e&&"object"==typeof e}function p(e){return"[object Date]"===C.call(e)}function d(e){return"[object File]"===C.call(e)}function h(e){return"[object Blob]"===C.call(e)}function m(e){return"[object Function]"===C.call(e)}function v(e){return f(e)&&m(e.pipe)}function y(e){return"undefined"!=typeof URLSearchParams&&e instanceof URLSearchParams}function g(e){return e.replace(/^\s*/,"").replace(/\s*$/,"")}function b(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)}function w(e,t){if(null!==e&&void 0!==e)if("object"!=typeof e&&(e=[e]),r(e))for(var n=0,o=e.length;n<o;n++)t.call(null,e[n],n,e);else for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.call(null,e[i],i,e)}function _(){function e(e,n){"object"==typeof t[n]&&"object"==typeof e?t[n]=_(t[n],e):t[n]=e}for(var t={},n=0,r=arguments.length;n<r;n++)w(arguments[n],e);return t}function x(){function e(e,n){"object"==typeof t[n]&&"object"==typeof e?t[n]=x(t[n],e):t[n]="object"==typeof e?x({},e):e}for(var t={},n=0,r=arguments.length;n<r;n++)w(arguments[n],e);return t}function S(e,t,n){return w(t,function(t,r){e[r]=n&&"function"==typeof t?E(t,n):t}),e}var E=n(72),C=Object.prototype.toString;e.exports={isArray:r,isArrayBuffer:a,isBuffer:i,isFormData:u,isArrayBufferView:s,isString:c,isNumber:l,isObject:f,isUndefined:o,isDate:p,isFile:d,isBlob:h,isFunction:m,isStream:v,isURLSearchParams:y,isStandardBrowserEnv:b,forEach:w,merge:_,deepMerge:x,extend:S,trim:g}},function(e,t,n){var r=n(1),o=n(0),i=n(13),a=n(11),u=n(12),s=function(e,t,n){var c,l,f,p=e&s.F,d=e&s.G,h=e&s.S,m=e&s.P,v=e&s.B,y=e&s.W,g=d?o:o[t]||(o[t]={}),b=g.prototype,w=d?r:h?r[t]:(r[t]||{}).prototype;d&&(n=t);for(c in n)(l=!p&&w&&void 0!==w[c])&&u(g,c)||(f=l?w[c]:n[c],g[c]=d&&"function"!=typeof w[c]?n[c]:v&&l?i(f,r):y&&w[c]==f?function(e){var t=function(t,n,r){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,n)}return new e(t,n,r)}return e.apply(this,arguments)};return t.prototype=e.prototype,t}(f):m&&"function"==typeof f?i(Function.call,f):f,m&&((g.virtual||(g.virtual={}))[c]=f,e&s.R&&b&&!b[c]&&a(b,c,f)))};s.F=1,s.G=2,s.S=4,s.P=8,s.B=16,s.W=32,s.U=64,s.R=128,e.exports=s},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){function r(){return null}function o(e){var t=e.nodeName,n=e.attributes;e.attributes={},t.defaultProps&&_(e.attributes,t.defaultProps),n&&_(e.attributes,n)}function i(e,t){var n,r,o;if(t){for(o in t)if(n=W.test(o))break;if(n){r=e.attributes={};for(o in t)t.hasOwnProperty(o)&&(r[W.test(o)?o.replace(/([A-Z0-9])/,"-$1").toLowerCase():o]=t[o])}}}function a(e,t,n){var r=t&&t._preactCompatRendered&&t._preactCompatRendered.base;r&&r.parentNode!==t&&(r=null),r||(r=t.children[0]);for(var o=t.childNodes.length;o--;)t.childNodes[o]!==r&&t.removeChild(t.childNodes[o]);var i=G.render(e,t,r);return t&&(t._preactCompatRendered=i&&(i._component||{base:i})),"function"==typeof n&&n(),i&&i._component||i}function u(e,t,n,r){var o=G.h(J,{context:e.context},t),i=a(o,n);return r&&r(i),i._component||i.base}function s(e){var t=e._preactCompatRendered&&e._preactCompatRendered.base;return!(!t||t.parentNode!==e)&&(G.render(G.h(r),e,t),!0)}function c(e){return h.bind(null,e)}function l(e,t){for(var n=t||0;n<e.length;n++){var r=e[n];Array.isArray(r)?l(r):r&&"object"==typeof r&&!y(r)&&(r.props&&r.type||r.attributes&&r.nodeName||r.children)&&(e[n]=h(r.type||r.nodeName,r.props||r.attributes,r.children))}}function f(e){return"function"==typeof e&&!(e.prototype&&e.prototype.render)}function p(e){return C({displayName:e.displayName||e.name,render:function(){return e(this.props,this.context)}})}function d(e){var t=e[$];return t?!0===t?e:t:(t=p(e),Object.defineProperty(t,$,{configurable:!0,value:!0}),t.displayName=e.displayName,t.propTypes=e.propTypes,t.defaultProps=e.defaultProps,Object.defineProperty(e,$,{configurable:!0,value:t}),t)}function h(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return l(e,2),m(G.h.apply(void 0,e))}function m(e){e.preactCompatNormalized=!0,w(e),f(e.nodeName)&&(e.nodeName=d(e.nodeName));var t=e.attributes.ref,n=t&&typeof t;return!Z||"string"!==n&&"number"!==n||(e.attributes.ref=g(t,Z)),b(e),e}function v(e,t){for(var n=[],r=arguments.length-2;r-- >0;)n[r]=arguments[r+2];if(!y(e))return e;var o=e.attributes||e.props,i=G.h(e.nodeName||e.type,o,e.children||o&&o.children),a=[i,t];return n&&n.length?a.push(n):t&&t.children&&a.push(t.children),m(G.cloneElement.apply(void 0,a))}function y(e){return e&&(e instanceof Y||e.$$typeof===H)}function g(e,t){return t._refProxies[e]||(t._refProxies[e]=function(n){t&&t.refs&&(t.refs[e]=n,null===n&&(delete t._refProxies[e],t=null))})}function b(e){var t=e.nodeName,n=e.attributes;if(n&&"string"==typeof t){var r={};for(var o in n)r[o.toLowerCase()]=o;if(r.ondoubleclick&&(n.ondblclick=n[r.ondoubleclick],delete n[r.ondoubleclick]),r.onchange&&("textarea"===t||"input"===t.toLowerCase()&&!/^fil|che|rad/i.test(n.type))){var i=r.oninput||"oninput";n[i]||(n[i]=P([n[i],n[r.onchange]]),delete n[r.onchange])}}}function w(e){var t=e.attributes;if(t){var n=t.className||t.class;n&&(t.className=n)}}function _(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e}function x(e,t){for(var n in e)if(!(n in t))return!0;for(var r in t)if(e[r]!==t[r])return!0;return!1}function S(e){return e&&e.base||e}function E(){}function C(e){function t(e,t){k(this),I.call(this,e,t,V),T.call(this,e,t)}return e=_({constructor:t},e),e.mixins&&O(e,N(e.mixins)),e.statics&&_(t,e.statics),e.propTypes&&(t.propTypes=e.propTypes),e.defaultProps&&(t.defaultProps=e.defaultProps),e.getDefaultProps&&(t.defaultProps=e.getDefaultProps()),E.prototype=I.prototype,t.prototype=_(new E,e),t.displayName=e.displayName||"Component",t}function N(e){for(var t={},n=0;n<e.length;n++){var r=e[n];for(var o in r)r.hasOwnProperty(o)&&"function"==typeof r[o]&&(t[o]||(t[o]=[])).push(r[o])}return t}function O(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=P(t[n].concat(e[n]||Q),"getDefaultProps"===n||"getInitialState"===n||"getChildContext"===n))}function k(e){for(var t in e){var n=e[t];"function"!=typeof n||n.__bound||U.hasOwnProperty(t)||((e[t]=n.bind(e)).__bound=!0)}}function M(e,t,n){if("string"==typeof t&&(t=e.constructor.prototype[t]),"function"==typeof t)return t.apply(e,n)}function P(e,t){return function(){for(var n,r=arguments,o=this,i=0;i<e.length;i++){var a=M(o,e[i],r);if(t&&null!=a){n||(n={});for(var u in a)a.hasOwnProperty(u)&&(n[u]=a[u])}else void 0!==a&&(n=a)}return n}}function T(e,t){A.call(this,e,t),this.componentWillReceiveProps=P([A,this.componentWillReceiveProps||"componentWillReceiveProps"]),this.render=P([A,j,this.render||"render",D])}function A(e,t){if(e){var n=e.children;if(n&&Array.isArray(n)&&1===n.length&&(e.children=n[0],e.children&&"object"==typeof e.children&&(e.children.length=1,e.children[0]=e.children)),X){var r="function"==typeof this?this:this.constructor,o=this.propTypes||r.propTypes,i=this.displayName||r.name;o&&F.a.checkPropTypes(o,e,"prop",i)}}}function j(e){Z=this}function D(){Z===this&&(Z=null)}function I(e,t,n){G.Component.call(this,e,t),this.state=this.getInitialState?this.getInitialState():{},this.refs={},this._refProxies={},n!==V&&T.call(this,e,t)}function L(e,t){I.call(this,e,t)}n.d(t,"version",function(){return B}),n.d(t,"DOM",function(){return te}),n.d(t,"Children",function(){return ee}),n.d(t,"render",function(){return a}),n.d(t,"createClass",function(){return C}),n.d(t,"createFactory",function(){return c}),n.d(t,"createElement",function(){return h}),n.d(t,"cloneElement",function(){return v}),n.d(t,"isValidElement",function(){return y}),n.d(t,"findDOMNode",function(){return S}),n.d(t,"unmountComponentAtNode",function(){return s}),n.d(t,"Component",function(){return I}),n.d(t,"PureComponent",function(){return L}),n.d(t,"unstable_renderSubtreeIntoContainer",function(){return u});var R=n(86),F=n.n(R),G=n(93);n.n(G);n.d(t,"PropTypes",function(){return F.a});var B="15.1.0",z="a abbr address area article aside audio b base bdi bdo big blockquote body br button canvas caption cite code col colgroup data datalist dd del details dfn dialog div dl dt em embed fieldset figcaption figure footer form h1 h2 h3 h4 h5 h6 head header hgroup hr html i iframe img input ins kbd keygen label legend li link main map mark menu menuitem meta meter nav noscript object ol optgroup option output p param picture pre progress q rp rt ruby s samp script section select small source span strong style sub summary sup table tbody td textarea tfoot th thead time title tr track u ul var video wbr circle clipPath defs ellipse g image line linearGradient mask path pattern polygon polyline radialGradient rect stop svg text tspan".split(" "),H="undefined"!=typeof Symbol&&Symbol.for&&Symbol.for("react.element")||60103,$="undefined"!=typeof Symbol?Symbol.for("__preactCompatWrapper"):"__preactCompatWrapper",U={constructor:1,render:1,shouldComponentUpdate:1,componentWillReceiveProps:1,componentWillUpdate:1,componentDidUpdate:1,componentWillMount:1,componentDidMount:1,componentWillUnmount:1,componentDidUnmount:1},W=/^(?:accent|alignment|arabic|baseline|cap|clip|color|fill|flood|font|glyph|horiz|marker|overline|paint|stop|strikethrough|stroke|text|underline|unicode|units|v|vert|word|writing|x)[A-Z]/,V={},X=void 0===e||!e.env||"production"!==e.env.NODE_ENV,Y=G.h("a",null).constructor;Y.prototype.$$typeof=H,Y.prototype.preactCompatUpgraded=!1,Y.prototype.preactCompatNormalized=!1,Object.defineProperty(Y.prototype,"type",{get:function(){return this.nodeName},set:function(e){this.nodeName=e},configurable:!0}),Object.defineProperty(Y.prototype,"props",{get:function(){return this.attributes},set:function(e){this.attributes=e},configurable:!0});var q=G.options.event;G.options.event=function(e){return q&&(e=q(e)),e.persist=Object,e.nativeEvent=e,e};var K=G.options.vnode;G.options.vnode=function(e){if(!e.preactCompatUpgraded){e.preactCompatUpgraded=!0;var t=e.nodeName,n=e.attributes=_({},e.attributes);"function"==typeof t?(!0===t[$]||t.prototype&&"isReactComponent"in t.prototype)&&(e.children&&""===String(e.children)&&(e.children=void 0),e.children&&(n.children=e.children),e.preactCompatNormalized||m(e),o(e)):(e.children&&""===String(e.children)&&(e.children=void 0),e.children&&(n.children=e.children),n.defaultValue&&(n.value||0===n.value||(n.value=n.defaultValue),delete n.defaultValue),i(e,n))}K&&K(e)};var J=function(){};J.prototype.getChildContext=function(){return this.props.context},J.prototype.render=function(e){return e.children[0]};for(var Z,Q=[],ee={map:function(e,t,n){return null==e?null:(e=ee.toArray(e),n&&n!==e&&(t=t.bind(n)),e.map(t))},forEach:function(e,t,n){if(null==e)return null;e=ee.toArray(e),n&&n!==e&&(t=t.bind(n)),e.forEach(t)},count:function(e){return e&&e.length||0},only:function(e){if(e=ee.toArray(e),1!==e.length)throw new Error("Children.only() expects only one child.");return e[0]},toArray:function(e){return null==e?[]:Array.isArray&&Array.isArray(e)?e:Q.concat(e)}},te={},ne=z.length;ne--;)te[z[ne]]=c(z[ne]);_(I.prototype=new G.Component,{constructor:I,isReactComponent:{},replaceState:function(e,t){var n=this;this.setState(e,t);for(var r in n.state)r in e||delete n.state[r]},getDOMNode:function(){return this.base},isMounted:function(){return!!this.base}}),E.prototype=I.prototype,L.prototype=new E,L.prototype.isPureReactComponent=!0,L.prototype.shouldComponentUpdate=function(e,t){return x(this.props,e)||x(this.state,t)};var re={version:B,DOM:te,PropTypes:F.a,Children:ee,render:a,createClass:C,createFactory:c,createElement:h,cloneElement:v,isValidElement:y,findDOMNode:S,unmountComponentAtNode:s,Component:I,PureComponent:L,unstable_renderSubtreeIntoContainer:u};t.default=re}.call(t,n(9))},function(e,t,n){var r=n(10);e.exports=function(e){if(!r(e))throw TypeError(e+" is not an object!");return e}},function(e,t,n){var r=n(6),o=n(48),i=n(32),a=Object.defineProperty;t.f=n(8)?Object.defineProperty:function(e,t,n){if(r(e),t=i(t,!0),r(n),o)try{return a(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(e[t]=n.value),e}},function(e,t,n){e.exports=!n(14)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(e,t){function n(){throw new Error("setTimeout has not been defined")}function r(){throw new Error("clearTimeout has not been defined")}function o(e){if(l===setTimeout)return setTimeout(e,0);if((l===n||!l)&&setTimeout)return l=setTimeout,setTimeout(e,0);try{return l(e,0)}catch(t){try{return l.call(null,e,0)}catch(t){return l.call(this,e,0)}}}function i(e){if(f===clearTimeout)return clearTimeout(e);if((f===r||!f)&&clearTimeout)return f=clearTimeout,clearTimeout(e);try{return f(e)}catch(t){try{return f.call(null,e)}catch(t){return f.call(this,e)}}}function a(){m&&d&&(m=!1,d.length?h=d.concat(h):v=-1,h.length&&u())}function u(){if(!m){var e=o(a);m=!0;for(var t=h.length;t;){for(d=h,h=[];++v<t;)d&&d[v].run();v=-1,t=h.length}d=null,m=!1,i(e)}}function s(e,t){this.fun=e,this.array=t}function c(){}var l,f,p=e.exports={};!function(){try{l="function"==typeof setTimeout?setTimeout:n}catch(e){l=n}try{f="function"==typeof clearTimeout?clearTimeout:r}catch(e){f=r}}();var d,h=[],m=!1,v=-1;p.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];h.push(new s(e,t)),1!==h.length||m||o(u)},s.prototype.run=function(){this.fun.apply(null,this.array)},p.title="browser",p.browser=!0,p.env={},p.argv=[],p.version="",p.versions={},p.on=c,p.addListener=c,p.once=c,p.off=c,p.removeListener=c,p.removeAllListeners=c,p.emit=c,p.prependListener=c,p.prependOnceListener=c,p.listeners=function(e){return[]},p.binding=function(e){throw new Error("process.binding is not supported")},p.cwd=function(){return"/"},p.chdir=function(e){throw new Error("process.chdir is not supported")},p.umask=function(){return 0}},function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,t,n){var r=n(7),o=n(19);e.exports=n(8)?function(e,t,n){return r.f(e,t,o(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},function(e,t,n){var r=n(24);e.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,o){return e.call(t,n,r,o)}}return function(){return e.apply(t,arguments)}}},function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,t){e.exports={}},function(e,t,n){var r=n(54),o=n(35);e.exports=function(e){return r(o(e))}},function(e,t,n){var r=n(35);e.exports=function(e){return Object(r(e))}},function(e,t,n){function r(e,t){if(l(e))return new Date(e.getTime());if("string"!=typeof e)return new Date(e);var n=t||{},r=n.additionalDigits;r=null==r?d:Number(r);var c=o(e),f=i(c.date,r),h=f.year,m=f.restDateString,v=a(m,h);if(v){var y,g=v.getTime(),b=0;return c.time&&(b=u(c.time)),c.timezone?y=s(c.timezone):(y=new Date(g+b).getTimezoneOffset(),y=new Date(g+b+y*p).getTimezoneOffset()),new Date(g+b+y*p)}return new Date(e)}function o(e){var t,n={},r=e.split(h);if(m.test(r[0])?(n.date=null,t=r[0]):(n.date=r[0],t=r[1]),t){var o=k.exec(t);o?(n.time=t.replace(o[1],""),n.timezone=o[1]):n.time=t}return n}function i(e,t){var n,r=y[t],o=b[t];if(n=g.exec(e)||o.exec(e)){var i=n[1];return{year:parseInt(i,10),restDateString:e.slice(i.length)}}if(n=v.exec(e)||r.exec(e)){var a=n[1];return{year:100*parseInt(a,10),restDateString:e.slice(a.length)}}return{year:null}}function a(e,t){if(null===t)return null;var n,r,o,i;if(0===e.length)return r=new Date(0),r.setUTCFullYear(t),r;if(n=w.exec(e))return r=new Date(0),o=parseInt(n[1],10)-1,r.setUTCFullYear(t,o),r;if(n=_.exec(e)){r=new Date(0);var a=parseInt(n[1],10);return r.setUTCFullYear(t,0,a),r}if(n=x.exec(e)){r=new Date(0),o=parseInt(n[1],10)-1;var u=parseInt(n[2],10);return r.setUTCFullYear(t,o,u),r}if(n=S.exec(e))return i=parseInt(n[1],10)-1,c(t,i);if(n=E.exec(e)){i=parseInt(n[1],10)-1;return c(t,i,parseInt(n[2],10)-1)}return null}function u(e){var t,n,r;if(t=C.exec(e))return(n=parseFloat(t[1].replace(",",".")))%24*f;if(t=N.exec(e))return n=parseInt(t[1],10),r=parseFloat(t[2].replace(",",".")),n%24*f+r*p;if(t=O.exec(e)){n=parseInt(t[1],10),r=parseInt(t[2],10);var o=parseFloat(t[3].replace(",","."));return n%24*f+r*p+1e3*o}return null}function s(e){var t,n;return(t=M.exec(e))?0:(t=P.exec(e))?(n=60*parseInt(t[2],10),"+"===t[1]?-n:n):(t=T.exec(e),t?(n=60*parseInt(t[2],10)+parseInt(t[3],10),"+"===t[1]?-n:n):0)}function c(e,t,n){t=t||0,n=n||0;var r=new Date(0);r.setUTCFullYear(e,0,4);var o=r.getUTCDay()||7,i=7*t+n+1-o;return r.setUTCDate(r.getUTCDate()+i),r}var l=n(202),f=36e5,p=6e4,d=2,h=/[T ]/,m=/:/,v=/^(\d{2})$/,y=[/^([+-]\d{2})$/,/^([+-]\d{3})$/,/^([+-]\d{4})$/],g=/^(\d{4})/,b=[/^([+-]\d{4})/,/^([+-]\d{5})/,/^([+-]\d{6})/],w=/^-(\d{2})$/,_=/^-?(\d{3})$/,x=/^-?(\d{2})-?(\d{2})$/,S=/^-?W(\d{2})$/,E=/^-?W(\d{2})-?(\d{1})$/,C=/^(\d{2}([.,]\d*)?)$/,N=/^(\d{2}):?(\d{2}([.,]\d*)?)$/,O=/^(\d{2}):?(\d{2}):?(\d{2}([.,]\d*)?)$/,k=/([Z+-].*)$/,M=/^(Z)$/,P=/^([+-])(\d{2})$/,T=/^([+-])(\d{2}):?(\d{2})$/;e.exports=r},function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t,n){"use strict";var r=n(101)(!0);n(51)(String,"String",function(e){this._t=String(e),this._i=0},function(){var e,t=this._t,n=this._i;return n>=t.length?{value:void 0,done:!0}:(e=r(t,n),this._i+=e.length,{value:e,done:!1})})},function(e,t){e.exports=!0},function(e,t,n){var r=n(53),o=n(40);e.exports=Object.keys||function(e){return r(e,o)}},function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},function(e,t){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},function(e,t){var n=0,r=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++n+r).toString(36))}},function(e,t,n){var r=n(7).f,o=n(12),i=n(2)("toStringTag");e.exports=function(e,t,n){e&&!o(e=n?e:e.prototype,i)&&r(e,i,{configurable:!0,value:t})}},function(e,t,n){n(106);for(var r=n(1),o=n(11),i=n(15),a=n(2)("toStringTag"),u="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","),s=0;s<u.length;s++){var c=u[s],l=r[c],f=l&&l.prototype;f&&!f[a]&&o(f,a,c),i[c]=i.Array}},function(e,t){t.f={}.propertyIsEnumerable},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}},function(e,t,n){"use strict";t.__esModule=!0;var r=n(83),o=function(e){return e&&e.__esModule?e:{default:e}}(r);t.default=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),(0,o.default)(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}()},function(e,t,n){var r=n(10),o=n(1).document,i=r(o)&&r(o.createElement);e.exports=function(e){return i?o.createElement(e):{}}},function(e,t,n){var r=n(10);e.exports=function(e,t){if(!r(e))return e;var n,o;if(t&&"function"==typeof(n=e.toString)&&!r(o=n.call(e)))return o;if("function"==typeof(n=e.valueOf)&&!r(o=n.call(e)))return o;if(!t&&"function"==typeof(n=e.toString)&&!r(o=n.call(e)))return o;throw TypeError("Can't convert object to primitive value")}},function(e,t,n){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},function(e,t){var n=Math.ceil,r=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?r:n)(e)}},function(e,t){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},function(e,t,n){var r=n(6),o=n(103),i=n(40),a=n(38)("IE_PROTO"),u=function(){},s=function(){var e,t=n(31)("iframe"),r=i.length;for(t.style.display="none",n(55).appendChild(t),t.src="javascript:",e=t.contentWindow.document,e.open(),e.write("<script>document.F=Object<\/script>"),e.close(),s=e.F;r--;)delete s.prototype[i[r]];return s()};e.exports=Object.create||function(e,t){var n;return null!==e?(u.prototype=r(e),n=new u,u.prototype=null,n[a]=e):n=s(),void 0===t?n:o(n,t)}},function(e,t,n){var r=n(34),o=Math.min;e.exports=function(e){return e>0?o(r(e),9007199254740991):0}},function(e,t,n){var r=n(39)("keys"),o=n(25);e.exports=function(e){return r[e]||(r[e]=o(e))}},function(e,t,n){var r=n(0),o=n(1),i=o["__core-js_shared__"]||(o["__core-js_shared__"]={});(e.exports=function(e,t){return i[e]||(i[e]=void 0!==t?t:{})})("versions",[]).push({version:r.version,mode:n(21)?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},function(e,t){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(e,t,n){var r=n(23),o=n(2)("toStringTag"),i="Arguments"==r(function(){return arguments}()),a=function(e,t){try{return e[t]}catch(e){}};e.exports=function(e){var t,n,u;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=a(t=Object(e),o))?n:i?r(t):"Object"==(u=r(t))&&"function"==typeof t.callee?"Arguments":u}},function(e,t,n){var r=n(41),o=n(2)("iterator"),i=n(15);e.exports=n(0).getIteratorMethod=function(e){if(void 0!=e)return e[o]||e["@@iterator"]||i[r(e)]}},function(e,t,n){"use strict";function r(e){var t,n;this.promise=new e(function(e,r){if(void 0!==t||void 0!==n)throw TypeError("Bad Promise constructor");t=e,n=r}),this.resolve=o(t),this.reject=o(n)}var o=n(24);e.exports.f=function(e){return new r(e)}},function(e,t){t.f=Object.getOwnPropertySymbols},function(e,t,n){t.f=n(2)},function(e,t,n){var r=n(1),o=n(0),i=n(21),a=n(45),u=n(7).f;e.exports=function(e){var t=o.Symbol||(o.Symbol=i?{}:r.Symbol||{});"_"==e.charAt(0)||e in t||u(t,e,{value:a.f(e)})}},function(e,t,n){"use strict";function r(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n={};return Object.keys(e).forEach(function(r){-1===t.indexOf(r)&&(n[r]=e[r])}),n}function o(e,t){if(e===t)return!0;var n=!Array.isArray(e)||!Array.isArray(t),r=e.length!==t.length;return!n&&!r&&e.every(function(e,n){return e===t[n]})}Object.defineProperty(t,"__esModule",{value:!0}),t.omit=r,t.arraysEqual=o;t.isElementAnSFC=function(e){return!("string"==typeof e.type||e.type.prototype.isReactComponent)},t.hyphenate=function(e){var t={};return function(n){return t[n]||(t[n]=e(n)),t[n]}}(function(e){return e.replace(/([A-Z])/g,"-$1").toLowerCase()})},function(e,t,n){e.exports=!n(8)&&!n(14)(function(){return 7!=Object.defineProperty(n(31)("div"),"a",{get:function(){return 7}}).a})},function(e,t,n){"use strict";(function(t){"production"===t.env.NODE_ENV?e.exports=n(87):e.exports=n(88)}).call(t,n(9))},function(e,t){},function(e,t,n){"use strict";var r=n(21),o=n(4),i=n(52),a=n(11),u=n(15),s=n(102),c=n(26),l=n(56),f=n(2)("iterator"),p=!([].keys&&"next"in[].keys()),d=function(){return this};e.exports=function(e,t,n,h,m,v,y){s(n,t,h);var g,b,w,_=function(e){if(!p&&e in C)return C[e];switch(e){case"keys":case"values":return function(){return new n(this,e)}}return function(){return new n(this,e)}},x=t+" Iterator",S="values"==m,E=!1,C=e.prototype,N=C[f]||C["@@iterator"]||m&&C[m],O=N||_(m),k=m?S?_("entries"):O:void 0,M="Array"==t?C.entries||N:N;if(M&&(w=l(M.call(new e)))!==Object.prototype&&w.next&&(c(w,x,!0),r||"function"==typeof w[f]||a(w,f,d)),S&&N&&"values"!==N.name&&(E=!0,O=function(){return N.call(this)}),r&&!y||!p&&!E&&C[f]||a(C,f,O),u[t]=O,u[x]=d,m)if(g={values:S?O:_("values"),keys:v?O:_("keys"),entries:k},y)for(b in g)b in C||i(C,b,g[b]);else o(o.P+o.F*(p||E),t,g);return g}},function(e,t,n){e.exports=n(11)},function(e,t,n){var r=n(12),o=n(16),i=n(104)(!1),a=n(38)("IE_PROTO");e.exports=function(e,t){var n,u=o(e),s=0,c=[];for(n in u)n!=a&&r(u,n)&&c.push(n);for(;t.length>s;)r(u,n=t[s++])&&(~i(c,n)||c.push(n));return c}},function(e,t,n){var r=n(23);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==r(e)?e.split(""):Object(e)}},function(e,t,n){var r=n(1).document;e.exports=r&&r.documentElement},function(e,t,n){var r=n(12),o=n(17),i=n(38)("IE_PROTO"),a=Object.prototype;e.exports=Object.getPrototypeOf||function(e){return e=o(e),r(e,i)?e[i]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?a:null}},function(e,t,n){var r=n(6);e.exports=function(e,t,n,o){try{return o?t(r(n)[0],n[1]):t(n)}catch(t){var i=e.return;throw void 0!==i&&r(i.call(e)),t}}},function(e,t,n){var r=n(15),o=n(2)("iterator"),i=Array.prototype;e.exports=function(e){return void 0!==e&&(r.Array===e||i[o]===e)}},function(e,t,n){var r=n(6),o=n(24),i=n(2)("species");e.exports=function(e,t){var n,a=r(e).constructor;return void 0===a||void 0==(n=r(a)[i])?t:o(n)}},function(e,t,n){var r,o,i,a=n(13),u=n(112),s=n(55),c=n(31),l=n(1),f=l.process,p=l.setImmediate,d=l.clearImmediate,h=l.MessageChannel,m=l.Dispatch,v=0,y={},g=function(){var e=+this;if(y.hasOwnProperty(e)){var t=y[e];delete y[e],t()}},b=function(e){g.call(e.data)};p&&d||(p=function(e){for(var t=[],n=1;arguments.length>n;)t.push(arguments[n++]);return y[++v]=function(){u("function"==typeof e?e:Function(e),t)},r(v),v},d=function(e){delete y[e]},"process"==n(23)(f)?r=function(e){f.nextTick(a(g,e,1))}:m&&m.now?r=function(e){m.now(a(g,e,1))}:h?(o=new h,i=o.port2,o.port1.onmessage=b,r=a(i.postMessage,i,1)):l.addEventListener&&"function"==typeof postMessage&&!l.importScripts?(r=function(e){l.postMessage(e+"","*")},l.addEventListener("message",b,!1)):r="onreadystatechange"in c("script")?function(e){s.appendChild(c("script")).onreadystatechange=function(){s.removeChild(this),g.call(e)}}:function(e){setTimeout(a(g,e,1),0)}),e.exports={set:p,clear:d}},function(e,t){e.exports=function(e){try{return{e:!1,v:e()}}catch(e){return{e:!0,v:e}}}},function(e,t,n){var r=n(6),o=n(10),i=n(43);e.exports=function(e,t){if(r(e),o(t)&&t.constructor===e)return t;var n=i.f(e);return(0,n.resolve)(t),n.promise}},function(e,t,n){var r=n(2)("iterator"),o=!1;try{var i=[7][r]();i.return=function(){o=!0},Array.from(i,function(){throw 2})}catch(e){}e.exports=function(e,t){if(!t&&!o)return!1;var n=!1;try{var i=[7],a=i[r]();a.next=function(){return{done:n=!0}},i[r]=function(){return a},e(i)}catch(e){}return n}},function(e,t,n){e.exports={default:n(123),__esModule:!0}},function(e,t,n){var r=n(4),o=n(0),i=n(14);e.exports=function(e,t){var n=(o.Object||{})[e]||Object[e],a={};a[e]=t(n),r(r.S+r.F*i(function(){n(1)}),"Object",a)}},function(e,t,n){"use strict";t.__esModule=!0;var r=n(67),o=function(e){return e&&e.__esModule?e:{default:e}}(r);t.default=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==(void 0===t?"undefined":(0,o.default)(t))&&"function"!=typeof t?e:t}},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var o=n(125),i=r(o),a=n(127),u=r(a),s="function"==typeof u.default&&"symbol"==typeof i.default?function(e){return typeof e}:function(e){return e&&"function"==typeof u.default&&e.constructor===u.default&&e!==u.default.prototype?"symbol":typeof e};t.default="function"==typeof u.default&&"symbol"===s(i.default)?function(e){return void 0===e?"undefined":s(e)}:function(e){return e&&"function"==typeof u.default&&e.constructor===u.default&&e!==u.default.prototype?"symbol":void 0===e?"undefined":s(e)}},function(e,t,n){var r=n(53),o=n(40).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return r(e,o)}},function(e,t,n){var r=n(28),o=n(19),i=n(16),a=n(32),u=n(12),s=n(48),c=Object.getOwnPropertyDescriptor;t.f=n(8)?c:function(e,t){if(e=i(e),t=a(t,!0),s)try{return c(e,t)}catch(e){}if(u(e,t))return o(!r.f.call(e,t),e[t])}},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var o=n(136),i=r(o),a=n(140),u=r(a),s=n(67),c=r(s);t.default=function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+(void 0===t?"undefined":(0,c.default)(t)));e.prototype=(0,u.default)(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(i.default?(0,i.default)(e,t):e.__proto__=t)}},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.hasClassInParent=t.formatErrorMsg=t.getMetaContent=t.axiosGithub=t.axiosJSON=t.queryStringify=t.queryParse=void 0;var o=n(161),i=r(o),a=n(164),u=r(a),s=n(171),c=r(s);t.queryParse=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.location.search;if(!e)return{};var t="?"===e[0]?e.substring(1):e,n={};return t.split("&").forEach(function(e){var t=e.split("="),r=(0,u.default)(t,2),o=r[0],i=r[1];o&&(n[decodeURIComponent(o)]=decodeURIComponent(i))}),n},t.queryStringify=function(e){return(0,i.default)(e).map(function(t){return t+"="+encodeURIComponent(e[t]||"")}).join("&")},t.axiosJSON=c.default.create({headers:{Accept:"application/json"}}),t.axiosGithub=c.default.create({baseURL:"https://api.github.com",headers:{Accept:"application/json"}}),t.getMetaContent=function(e,t){t||(t="content");var n=window.document.querySelector("meta[name='"+e+"']");return n&&n.getAttribute(t)},t.formatErrorMsg=function(e){var t="Error: ";return e.response&&e.response.data&&e.response.data.message?(t+=e.response.data.message+". ",e.response.data.errors&&(t+=e.response.data.errors.map(function(e){return e.message}).join(", "))):t+=e.message,t},t.hasClassInParent=function e(t){for(var n=arguments.length,r=Array(n>1?n-1:0),o=1;o<n;o++)r[o-1]=arguments[o];var i=!1;if(void 0===t.className)return!1;var a=t.className.split(" ");return r.forEach(function(e,t){i=i||a.indexOf(e)>=0}),i||t.parentNode&&e(t.parentNode,r)}},function(e,t,n){"use strict";e.exports=function(e,t){return function(){for(var n=new Array(arguments.length),r=0;r<n.length;r++)n[r]=arguments[r];return e.apply(t,n)}}},function(e,t,n){"use strict";function r(e){return encodeURIComponent(e).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var o=n(3);e.exports=function(e,t,n){if(!t)return e;var i;if(n)i=n(t);else if(o.isURLSearchParams(t))i=t.toString();else{var a=[];o.forEach(t,function(e,t){null!==e&&void 0!==e&&(o.isArray(e)?t+="[]":e=[e],o.forEach(e,function(e){o.isDate(e)?e=e.toISOString():o.isObject(e)&&(e=JSON.stringify(e)),a.push(r(t)+"="+r(e))}))}),i=a.join("&")}if(i){var u=e.indexOf("#");-1!==u&&(e=e.slice(0,u)),e+=(-1===e.indexOf("?")?"?":"&")+i}return e}},function(e,t,n){"use strict";e.exports=function(e){return!(!e||!e.__CANCEL__)}},function(e,t,n){"use strict";(function(t){function r(e,t){!o.isUndefined(e)&&o.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}var o=n(3),i=n(177),a={"Content-Type":"application/x-www-form-urlencoded"},u={adapter:function(){var e;return"undefined"!=typeof XMLHttpRequest?e=n(76):void 0!==t&&"[object process]"===Object.prototype.toString.call(t)&&(e=n(76)),e}(),transformRequest:[function(e,t){return i(t,"Accept"),i(t,"Content-Type"),o.isFormData(e)||o.isArrayBuffer(e)||o.isBuffer(e)||o.isStream(e)||o.isFile(e)||o.isBlob(e)?e:o.isArrayBufferView(e)?e.buffer:o.isURLSearchParams(e)?(r(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):o.isObject(e)?(r(t,"application/json;charset=utf-8"),JSON.stringify(e)):e}],transformResponse:[function(e){if("string"==typeof e)try{e=JSON.parse(e)}catch(e){}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,validateStatus:function(e){return e>=200&&e<300}};u.headers={common:{Accept:"application/json, text/plain, */*"}},o.forEach(["delete","get","head"],function(e){u.headers[e]={}}),o.forEach(["post","put","patch"],function(e){u.headers[e]=o.merge(a)}),e.exports=u}).call(t,n(9))},function(e,t,n){"use strict";var r=n(3),o=n(178),i=n(73),a=n(180),u=n(183),s=n(184),c=n(77);e.exports=function(e){return new Promise(function(t,l){var f=e.data,p=e.headers;r.isFormData(f)&&delete p["Content-Type"];var d=new XMLHttpRequest;if(e.auth){var h=e.auth.username||"",m=e.auth.password||"";p.Authorization="Basic "+btoa(h+":"+m)}var v=a(e.baseURL,e.url);if(d.open(e.method.toUpperCase(),i(v,e.params,e.paramsSerializer),!0),d.timeout=e.timeout,d.onreadystatechange=function(){if(d&&4===d.readyState&&(0!==d.status||d.responseURL&&0===d.responseURL.indexOf("file:"))){var n="getAllResponseHeaders"in d?u(d.getAllResponseHeaders()):null,r=e.responseType&&"text"!==e.responseType?d.response:d.responseText,i={data:r,status:d.status,statusText:d.statusText,headers:n,config:e,request:d};o(t,l,i),d=null}},d.onabort=function(){d&&(l(c("Request aborted",e,"ECONNABORTED",d)),d=null)},d.onerror=function(){l(c("Network Error",e,null,d)),d=null},d.ontimeout=function(){var t="timeout of "+e.timeout+"ms exceeded";e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),l(c(t,e,"ECONNABORTED",d)),d=null},r.isStandardBrowserEnv()){var y=n(185),g=(e.withCredentials||s(v))&&e.xsrfCookieName?y.read(e.xsrfCookieName):void 0;g&&(p[e.xsrfHeaderName]=g)}if("setRequestHeader"in d&&r.forEach(p,function(e,t){void 0===f&&"content-type"===t.toLowerCase()?delete p[t]:d.setRequestHeader(t,e)}),r.isUndefined(e.withCredentials)||(d.withCredentials=!!e.withCredentials),e.responseType)try{d.responseType=e.responseType}catch(t){if("json"!==e.responseType)throw t}"function"==typeof e.onDownloadProgress&&d.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&d.upload&&d.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then(function(e){d&&(d.abort(),l(e),d=null)}),void 0===f&&(f=null),d.send(f)})}},function(e,t,n){"use strict";var r=n(179);e.exports=function(e,t,n,o,i){var a=new Error(e);return r(a,t,n,o,i)}},function(e,t,n){"use strict";var r=n(3);e.exports=function(e,t){t=t||{};var n={},o=["url","method","params","data"],i=["headers","auth","proxy"],a=["baseURL","url","transformRequest","transformResponse","paramsSerializer","timeout","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","maxContentLength","validateStatus","maxRedirects","httpAgent","httpsAgent","cancelToken","socketPath"];r.forEach(o,function(e){void 0!==t[e]&&(n[e]=t[e])}),r.forEach(i,function(o){r.isObject(t[o])?n[o]=r.deepMerge(e[o],t[o]):void 0!==t[o]?n[o]=t[o]:r.isObject(e[o])?n[o]=r.deepMerge(e[o]):void 0!==e[o]&&(n[o]=e[o])}),r.forEach(a,function(r){void 0!==t[r]?n[r]=t[r]:void 0!==e[r]&&(n[r]=e[r])});var u=o.concat(i).concat(a),s=Object.keys(t).filter(function(e){return-1===u.indexOf(e)});return r.forEach(s,function(r){void 0!==t[r]?n[r]=t[r]:void 0!==e[r]&&(n[r]=e[r])}),n}},function(e,t,n){"use strict";function r(e){this.message=e}r.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},r.prototype.__CANCEL__=!0,e.exports=r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(5),o=function(e){return e&&e.__esModule?e:{default:e}}(r);t.default=function(e){var t=e.src,n=e.className,r=e.alt,i=e.onError;return o.default.createElement("div",{className:"gt-avatar "+n},o.default.createElement("img",{src:t,alt:"@"+r,onError:i}))}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(5),o=function(e){return e&&e.__esModule?e:{default:e}}(r);t.default=function(e){var t=e.className,r=e.text,i=e.name;return o.default.createElement("span",{className:"gt-ico "+t},o.default.createElement("span",{className:"gt-svg",dangerouslySetInnerHTML:{__html:n(191)("./"+i+".svg")}}),r&&o.default.createElement("span",{className:"gt-ico-text"},r))}},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}var o=n(29),i=r(o),a=n(30),u=r(a),s=n(5),c=r(s),l=n(5);n(94);var f=n(98),p=r(f),d=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(0,i.default)(this,e),this.options=t}return(0,u.default)(e,[{key:"render",value:function(e,t){var n=null;if(!(e=e||this.options.container))throw new Error("Container is required: "+e);if(e instanceof HTMLElement)n=e;else if(!(n=window.document.getElementById(e)))throw new Error("Container not found, window.document.getElementById: "+e);return t||(t=function(){}),(0,l.render)(c.default.createElement(p.default,{options:this.options}),n,t)}}]),e}();e.exports=d},function(e,t,n){e.exports={default:n(84),__esModule:!0}},function(e,t,n){n(85);var r=n(0).Object;e.exports=function(e,t,n){return r.defineProperty(e,t,n)}},function(e,t,n){var r=n(4);r(r.S+r.F*!n(8),"Object",{defineProperty:n(7).f})},function(e,t,n){(function(t){if("production"!==t.env.NODE_ENV){var r=n(49);e.exports=n(89)(r.isElement,!0)}else e.exports=n(92)()}).call(t,n(9))},function(e,t,n){"use strict";function r(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case a:switch(e=e.type){case d:case h:case s:case l:case c:case v:return e;default:switch(e=e&&e.$$typeof){case p:case m:case b:case g:case f:return e;default:return t}}case u:return t}}}function o(e){return r(e)===h}/** @license React v16.12.0
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.Gitalk=t():e.Gitalk=t()}(this,function(){return function(e){function t(a){if(n[a])return n[a].exports;var i=n[a]={i:a,l:!1,exports:{}};return e[a].call(i.exports,i,i.exports,t),i.l=!0,i.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,a){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:a})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/dist",t(t.s=191)}([function(e,t,n){"use strict";function a(e,t){if(t.length<e)throw new TypeError(e+" argument"+(e>1?"s":"")+" required, but only "+t.length+" present")}t.a=a},function(e,t,n){"use strict";function a(e){i.a(1,arguments);var t=Object.prototype.toString.call(e);return e instanceof Date||"object"==typeof e&&"[object Date]"===t?new Date(e.getTime()):"number"==typeof e||"[object Number]"===t?new Date(e):("string"!=typeof e&&"[object String]"!==t||"undefined"==typeof console||(console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://git.io/fjule"),console.warn((new Error).stack)),new Date(NaN))}t.a=a;var i=n(0)},function(e,t,n){"use strict";function a(e){return function(t){var n=t||{},a=n.width?String(n.width):e.defaultWidth;return e.formats[a]||e.formats[e.defaultWidth]}}t.a=a},function(e,t,n){"use strict";function a(e){return function(t,n){var a,i=n||{},r=i.context?String(i.context):"standalone";if("formatting"===r&&e.formattingValues){var o=e.defaultFormattingWidth||e.defaultWidth,u=i.width?String(i.width):o;a=e.formattingValues[u]||e.formattingValues[o]}else{var s=e.defaultWidth,d=i.width?String(i.width):e.defaultWidth;a=e.values[d]||e.values[s]}return a[e.argumentCallback?e.argumentCallback(t):t]}}t.a=a},function(e,t,n){"use strict";function a(e){return function(t,n){var a=String(t),i=n||{},r=a.match(e.matchPattern);if(!r)return null;var o=r[0],u=a.match(e.parsePattern);if(!u)return null;var s=e.valueCallback?e.valueCallback(u[0]):u[0];return s=i.valueCallback?i.valueCallback(s):s,{value:s,rest:a.slice(o.length)}}}t.a=a},function(e,t,n){"use strict";function a(e){return function(t,n){var a=String(t),o=n||{},u=o.width,s=u&&e.matchPatterns[u]||e.matchPatterns[e.defaultMatchWidth],d=a.match(s);if(!d)return null;var c,l=d[0],m=u&&e.parsePatterns[u]||e.parsePatterns[e.defaultParseWidth];return c="[object Array]"===Object.prototype.toString.call(m)?r(m,function(e){return e.test(l)}):i(m,function(e){return e.test(l)}),c=e.valueCallback?e.valueCallback(c):c,c=o.valueCallback?o.valueCallback(c):c,{value:c,rest:a.slice(l.length)}}}function i(e,t){for(var n in e)if(e.hasOwnProperty(n)&&t(e[n]))return n}function r(e,t){for(var n=0;n<e.length;n++)if(t(e[n]))return n}t.a=a},function(e,t,n){"use strict";function a(e){if(null===e||!0===e||!1===e)return NaN;var t=Number(e);return isNaN(t)?t:t<0?Math.ceil(t):Math.floor(t)}t.a=a},function(e,t){var n=e.exports={version:"2.6.11"};"number"==typeof __e&&(__e=n)},function(e,t){var n=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(e,t,n){var a=n(74)("wks"),i=n(52),r=n(8).Symbol,o="function"==typeof r;(e.exports=function(e){return a[e]||(a[e]=o&&r[e]||(o?r:i)("Symbol."+e))}).store=a},function(e,t,n){"use strict";function a(e){return"[object Array]"===x.call(e)}function i(e){return void 0===e}function r(e){return null!==e&&!i(e)&&null!==e.constructor&&!i(e.constructor)&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}function o(e){return"[object ArrayBuffer]"===x.call(e)}function u(e){return"undefined"!=typeof FormData&&e instanceof FormData}function s(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&e.buffer instanceof ArrayBuffer}function d(e){return"string"==typeof e}function c(e){return"number"==typeof e}function l(e){return null!==e&&"object"==typeof e}function m(e){return"[object Date]"===x.call(e)}function f(e){return"[object File]"===x.call(e)}function h(e){return"[object Blob]"===x.call(e)}function p(e){return"[object Function]"===x.call(e)}function g(e){return l(e)&&p(e.pipe)}function v(e){return"undefined"!=typeof URLSearchParams&&e instanceof URLSearchParams}function w(e){return e.replace(/^\s*/,"").replace(/\s*$/,"")}function b(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)}function y(e,t){if(null!==e&&void 0!==e)if("object"!=typeof e&&(e=[e]),a(e))for(var n=0,i=e.length;n<i;n++)t.call(null,e[n],n,e);else for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.call(null,e[r],r,e)}function M(){function e(e,n){"object"==typeof t[n]&&"object"==typeof e?t[n]=M(t[n],e):t[n]=e}for(var t={},n=0,a=arguments.length;n<a;n++)y(arguments[n],e);return t}function k(){function e(e,n){"object"==typeof t[n]&&"object"==typeof e?t[n]=k(t[n],e):t[n]="object"==typeof e?k({},e):e}for(var t={},n=0,a=arguments.length;n<a;n++)y(arguments[n],e);return t}function P(e,t,n){return y(t,function(t,a){e[a]=n&&"function"==typeof t?W(t,n):t}),e}var W=n(122),x=Object.prototype.toString;e.exports={isArray:a,isArrayBuffer:o,isBuffer:r,isFormData:u,isArrayBufferView:s,isString:d,isNumber:c,isObject:l,isUndefined:i,isDate:m,isFile:f,isBlob:h,isFunction:p,isStream:g,isURLSearchParams:v,isStandardBrowserEnv:b,forEach:y,merge:M,deepMerge:k,extend:P,trim:w}},function(e,t,n){var a=n(8),i=n(7),r=n(29),o=n(23),u=n(24),s=function(e,t,n){var d,c,l,m=e&s.F,f=e&s.G,h=e&s.S,p=e&s.P,g=e&s.B,v=e&s.W,w=f?i:i[t]||(i[t]={}),b=w.prototype,y=f?a:h?a[t]:(a[t]||{}).prototype;f&&(n=t);for(d in n)(c=!m&&y&&void 0!==y[d])&&u(w,d)||(l=c?y[d]:n[d],w[d]=f&&"function"!=typeof y[d]?n[d]:g&&c?r(l,a):v&&y[d]==l?function(e){var t=function(t,n,a){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,n)}return new e(t,n,a)}return e.apply(this,arguments)};return t.prototype=e.prototype,t}(l):p&&"function"==typeof l?r(Function.call,l):l,p&&((w.virtual||(w.virtual={}))[d]=l,e&s.R&&b&&!b[d]&&o(b,d,l)))};s.F=1,s.G=2,s.S=4,s.P=8,s.B=16,s.W=32,s.U=64,s.R=128,e.exports=s},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){function a(){return null}function i(e){var t=e.nodeName,n=e.attributes;e.attributes={},t.defaultProps&&M(e.attributes,t.defaultProps),n&&M(e.attributes,n)}function r(e,t){var n,a,i;if(t){for(i in t)if(n=R.test(i))break;if(n){a=e.attributes={};for(i in t)t.hasOwnProperty(i)&&(a[R.test(i)?i.replace(/([A-Z0-9])/,"-$1").toLowerCase():i]=t[i])}}}function o(e,t,n){var a=t&&t._preactCompatRendered&&t._preactCompatRendered.base;a&&a.parentNode!==t&&(a=null),a||(a=t.children[0]);for(var i=t.childNodes.length;i--;)t.childNodes[i]!==a&&t.removeChild(t.childNodes[i]);var r=I.render(e,t,a);return t&&(t._preactCompatRendered=r&&(r._component||{base:r})),"function"==typeof n&&n(),r&&r._component||r}function u(e,t,n,a){var i=I.h(V,{context:e.context},t),r=o(i,n);return a&&a(r),r._component||r.base}function s(e){var t=e._preactCompatRendered&&e._preactCompatRendered.base;return!(!t||t.parentNode!==e)&&(I.render(I.h(a),e,t),!0)}function d(e){return h.bind(null,e)}function c(e,t){for(var n=t||0;n<e.length;n++){var a=e[n];Array.isArray(a)?c(a):a&&"object"==typeof a&&!v(a)&&(a.props&&a.type||a.attributes&&a.nodeName||a.children)&&(e[n]=h(a.type||a.nodeName,a.props||a.attributes,a.children))}}function l(e){return"function"==typeof e&&!(e.prototype&&e.prototype.render)}function m(e){return x({displayName:e.displayName||e.name,render:function(){return e(this.props,this.context)}})}function f(e){var t=e[q];return t?!0===t?e:t:(t=m(e),Object.defineProperty(t,q,{configurable:!0,value:!0}),t.displayName=e.displayName,t.propTypes=e.propTypes,t.defaultProps=e.defaultProps,Object.defineProperty(e,q,{configurable:!0,value:t}),t)}function h(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return c(e,2),p(I.h.apply(void 0,e))}function p(e){e.preactCompatNormalized=!0,y(e),l(e.nodeName)&&(e.nodeName=f(e.nodeName));var t=e.attributes.ref,n=t&&typeof t;return!Q||"string"!==n&&"number"!==n||(e.attributes.ref=w(t,Q)),b(e),e}function g(e,t){for(var n=[],a=arguments.length-2;a-- >0;)n[a]=arguments[a+2];if(!v(e))return e;var i=e.attributes||e.props,r=I.h(e.nodeName||e.type,i,e.children||i&&i.children),o=[r,t];return n&&n.length?o.push(n):t&&t.children&&o.push(t.children),p(I.cloneElement.apply(void 0,o))}function v(e){return e&&(e instanceof J||e.$$typeof===L)}function w(e,t){return t._refProxies[e]||(t._refProxies[e]=function(n){t&&t.refs&&(t.refs[e]=n,null===n&&(delete t._refProxies[e],t=null))})}function b(e){var t=e.nodeName,n=e.attributes;if(n&&"string"==typeof t){var a={};for(var i in n)a[i.toLowerCase()]=i;if(a.ondoubleclick&&(n.ondblclick=n[a.ondoubleclick],delete n[a.ondoubleclick]),a.onchange&&("textarea"===t||"input"===t.toLowerCase()&&!/^fil|che|rad/i.test(n.type))){var r=a.oninput||"oninput";n[r]||(n[r]=z([n[r],n[a.onchange]]),delete n[a.onchange])}}}function y(e){var t=e.attributes;if(t){var n=t.className||t.class;n&&(t.className=n)}}function M(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e}function k(e,t){for(var n in e)if(!(n in t))return!0;for(var a in t)if(e[a]!==t[a])return!0;return!1}function P(e){return e&&e.base||e}function W(){}function x(e){function t(e,t){S(this),A.call(this,e,t,U),N.call(this,e,t)}return e=M({constructor:t},e),e.mixins&&T(e,j(e.mixins)),e.statics&&M(t,e.statics),e.propTypes&&(t.propTypes=e.propTypes),e.defaultProps&&(t.defaultProps=e.defaultProps),e.getDefaultProps&&(t.defaultProps=e.getDefaultProps()),W.prototype=A.prototype,t.prototype=M(new W,e),t.displayName=e.displayName||"Component",t}function j(e){for(var t={},n=0;n<e.length;n++){var a=e[n];for(var i in a)a.hasOwnProperty(i)&&"function"==typeof a[i]&&(t[i]||(t[i]=[])).push(a[i])}return t}function T(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=z(t[n].concat(e[n]||Z),"getDefaultProps"===n||"getInitialState"===n||"getChildContext"===n))}function S(e){for(var t in e){var n=e[t];"function"!=typeof n||n.__bound||G.hasOwnProperty(t)||((e[t]=n.bind(e)).__bound=!0)}}function C(e,t,n){if("string"==typeof t&&(t=e.constructor.prototype[t]),"function"==typeof t)return t.apply(e,n)}function z(e,t){return function(){for(var n,a=arguments,i=this,r=0;r<e.length;r++){var o=C(i,e[r],a);if(t&&null!=o){n||(n={});for(var u in o)o.hasOwnProperty(u)&&(n[u]=o[u])}else void 0!==o&&(n=o)}return n}}function N(e,t){D.call(this,e,t),this.componentWillReceiveProps=z([D,this.componentWillReceiveProps||"componentWillReceiveProps"]),this.render=z([D,E,this.render||"render",H])}function D(e,t){if(e){var n=e.children;if(n&&Array.isArray(n)&&1===n.length&&(e.children=n[0],e.children&&"object"==typeof e.children&&(e.children.length=1,e.children[0]=e.children)),K){var a="function"==typeof this?this:this.constructor,i=this.propTypes||a.propTypes,r=this.displayName||a.name;i&&X.a.checkPropTypes(i,e,"prop",r)}}}function E(e){Q=this}function H(){Q===this&&(Q=null)}function A(e,t,n){I.Component.call(this,e,t),this.state=this.getInitialState?this.getInitialState():{},this.refs={},this._refProxies={},n!==U&&N.call(this,e,t)}function _(e,t){A.call(this,e,t)}n.d(t,"version",function(){return Y}),n.d(t,"DOM",function(){return te}),n.d(t,"Children",function(){return ee}),n.d(t,"render",function(){return o}),n.d(t,"createClass",function(){return x}),n.d(t,"createFactory",function(){return d}),n.d(t,"createElement",function(){return h}),n.d(t,"cloneElement",function(){return g}),n.d(t,"isValidElement",function(){return v}),n.d(t,"findDOMNode",function(){return P}),n.d(t,"unmountComponentAtNode",function(){return s}),n.d(t,"Component",function(){return A}),n.d(t,"PureComponent",function(){return _}),n.d(t,"unstable_renderSubtreeIntoContainer",function(){return u});var O=n(195),X=n.n(O),I=n(202);n.n(I);n.d(t,"PropTypes",function(){return X.a});var Y="15.1.0",F="a abbr address area article aside audio b base bdi bdo big blockquote body br button canvas caption cite code col colgroup data datalist dd del details dfn dialog div dl dt em embed fieldset figcaption figure footer form h1 h2 h3 h4 h5 h6 head header hgroup hr html i iframe img input ins kbd keygen label legend li link main map mark menu menuitem meta meter nav noscript object ol optgroup option output p param picture pre progress q rp rt ruby s samp script section select small source span strong style sub summary sup table tbody td textarea tfoot th thead time title tr track u ul var video wbr circle clipPath defs ellipse g image line linearGradient mask path pattern polygon polyline radialGradient rect stop svg text tspan".split(" "),L="undefined"!=typeof Symbol&&Symbol.for&&Symbol.for("react.element")||60103,q="undefined"!=typeof Symbol?Symbol.for("__preactCompatWrapper"):"__preactCompatWrapper",G={constructor:1,render:1,shouldComponentUpdate:1,componentWillReceiveProps:1,componentWillUpdate:1,componentDidUpdate:1,componentWillMount:1,componentDidMount:1,componentWillUnmount:1,componentDidUnmount:1},R=/^(?:accent|alignment|arabic|baseline|cap|clip|color|fill|flood|font|glyph|horiz|marker|overline|paint|stop|strikethrough|stroke|text|underline|unicode|units|v|vert|word|writing|x)[A-Z]/,U={},K=void 0===e||!e.env||"production"!==e.env.NODE_ENV,J=I.h("a",null).constructor;J.prototype.$$typeof=L,J.prototype.preactCompatUpgraded=!1,J.prototype.preactCompatNormalized=!1,Object.defineProperty(J.prototype,"type",{get:function(){return this.nodeName},set:function(e){this.nodeName=e},configurable:!0}),Object.defineProperty(J.prototype,"props",{get:function(){return this.attributes},set:function(e){this.attributes=e},configurable:!0});var B=I.options.event;I.options.event=function(e){return B&&(e=B(e)),e.persist=Object,e.nativeEvent=e,e};var $=I.options.vnode;I.options.vnode=function(e){if(!e.preactCompatUpgraded){e.preactCompatUpgraded=!0;var t=e.nodeName,n=e.attributes=M({},e.attributes);"function"==typeof t?(!0===t[q]||t.prototype&&"isReactComponent"in t.prototype)&&(e.children&&""===String(e.children)&&(e.children=void 0),e.children&&(n.children=e.children),e.preactCompatNormalized||p(e),i(e)):(e.children&&""===String(e.children)&&(e.children=void 0),e.children&&(n.children=e.children),n.defaultValue&&(n.value||0===n.value||(n.value=n.defaultValue),delete n.defaultValue),r(e,n))}$&&$(e)};var V=function(){};V.prototype.getChildContext=function(){return this.props.context},V.prototype.render=function(e){return e.children[0]};for(var Q,Z=[],ee={map:function(e,t,n){return null==e?null:(e=ee.toArray(e),n&&n!==e&&(t=t.bind(n)),e.map(t))},forEach:function(e,t,n){if(null==e)return null;e=ee.toArray(e),n&&n!==e&&(t=t.bind(n)),e.forEach(t)},count:function(e){return e&&e.length||0},only:function(e){if(e=ee.toArray(e),1!==e.length)throw new Error("Children.only() expects only one child.");return e[0]},toArray:function(e){return null==e?[]:Array.isArray&&Array.isArray(e)?e:Z.concat(e)}},te={},ne=F.length;ne--;)te[F[ne]]=d(F[ne]);M(A.prototype=new I.Component,{constructor:A,isReactComponent:{},replaceState:function(e,t){var n=this;this.setState(e,t);for(var a in n.state)a in e||delete n.state[a]},getDOMNode:function(){return this.base},isMounted:function(){return!!this.base}}),W.prototype=A.prototype,_.prototype=new W,_.prototype.isPureReactComponent=!0,_.prototype.shouldComponentUpdate=function(e,t){return k(this.props,e)||k(this.state,t)};var ae={version:Y,DOM:te,PropTypes:X.a,Children:ee,render:o,createClass:x,createFactory:d,createElement:h,cloneElement:g,isValidElement:v,findDOMNode:P,unmountComponentAtNode:s,Component:A,PureComponent:_,unstable_renderSubtreeIntoContainer:u};t.default=ae}.call(t,n(18))},function(e,t,n){"use strict";function a(e,t,n){r.a(2,arguments);var a=i.a(e,n),o=i.a(t,n);return a.getTime()===o.getTime()}t.a=a;var i=n(50),r=n(0)},function(e,t,n){var a=n(20);e.exports=function(e){if(!a(e))throw TypeError(e+" is not an object!");return e}},function(e,t,n){"use strict";function a(e){r.a(1,arguments);var t=i.a(e);return!isNaN(t)}t.a=a;var i=n(1),r=n(0)},function(e,t,n){var a=n(14),i=n(98),r=n(67),o=Object.defineProperty;t.f=n(17)?Object.defineProperty:function(e,t,n){if(a(e),t=r(t,!0),a(n),i)try{return o(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(e[t]=n.value),e}},function(e,t,n){e.exports=!n(30)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(e,t){function n(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function i(e){if(c===setTimeout)return setTimeout(e,0);if((c===n||!c)&&setTimeout)return c=setTimeout,setTimeout(e,0);try{return c(e,0)}catch(t){try{return c.call(null,e,0)}catch(t){return c.call(this,e,0)}}}function r(e){if(l===clearTimeout)return clearTimeout(e);if((l===a||!l)&&clearTimeout)return l=clearTimeout,clearTimeout(e);try{return l(e)}catch(t){try{return l.call(null,e)}catch(t){return l.call(this,e)}}}function o(){p&&f&&(p=!1,f.length?h=f.concat(h):g=-1,h.length&&u())}function u(){if(!p){var e=i(o);p=!0;for(var t=h.length;t;){for(f=h,h=[];++g<t;)f&&f[g].run();g=-1,t=h.length}f=null,p=!1,r(e)}}function s(e,t){this.fun=e,this.array=t}function d(){}var c,l,m=e.exports={};!function(){try{c="function"==typeof setTimeout?setTimeout:n}catch(e){c=n}try{l="function"==typeof clearTimeout?clearTimeout:a}catch(e){l=a}}();var f,h=[],p=!1,g=-1;m.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];h.push(new s(e,t)),1!==h.length||p||i(u)},s.prototype.run=function(){this.fun.apply(null,this.array)},m.title="browser",m.browser=!0,m.env={},m.argv=[],m.version="",m.versions={},m.on=d,m.addListener=d,m.once=d,m.off=d,m.removeListener=d,m.removeAllListeners=d,m.emit=d,m.prependListener=d,m.prependOnceListener=d,m.listeners=function(e){return[]},m.binding=function(e){throw new Error("process.binding is not supported")},m.cwd=function(){return"/"},m.chdir=function(e){throw new Error("process.chdir is not supported")},m.umask=function(){return 0}},function(e,t,n){"use strict";function a(e){return e.getTime()%r}function i(e){var t=new Date(e.getTime()),n=Math.ceil(t.getTimezoneOffset());t.setSeconds(0,0);var i=n>0,o=i?(r+a(t))%r:a(t);return n*r+o}t.a=i;var r=6e4},function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,t,n){"use strict";function a(e,t){o.a(2,arguments);var n=r.a(e),a=i.a(t);return isNaN(a)?new Date(NaN):a?(n.setDate(n.getDate()+a),n):n}t.a=a;var i=n(6),r=n(1),o=n(0)},function(e,t,n){"use strict";function a(e,t){o.a(1,arguments);var n=t||{},a=n.locale,u=a&&a.options&&a.options.weekStartsOn,s=null==u?0:r.a(u),d=null==n.weekStartsOn?s:r.a(n.weekStartsOn);if(!(d>=0&&d<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var c=i.a(e),l=c.getDay(),m=(l<d?7:0)+l-d;return c.setDate(c.getDate()-m),c.setHours(0,0,0,0),c}t.a=a;var i=n(1),r=n(6),o=n(0)},function(e,t,n){var a=n(16),i=n(39);e.exports=n(17)?function(e,t,n){return a.f(e,t,i(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},function(e,t,n){"use strict";function a(e){return r.a(1,arguments),i.a(e,{weekStartsOn:1})}t.a=a;var i=n(22),r=n(0)},function(e,t,n){"use strict";function a(e,t){o.a(2,arguments);var n=r.a(e),a=r.a(t),s=n.getTime()-i.a(n),d=a.getTime()-i.a(a);return Math.round((s-d)/u)}t.a=a;var i=n(19),r=n(57),o=n(0),u=864e5},function(e,t,n){"use strict";function a(e,t){r.a(2,arguments);var n=i.a(e),a=i.a(t),o=n.getTime()-a.getTime();return o<0?-1:o>0?1:o}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";var a=n(48),i=n(339),r=n(35),o=n(36),u=n(37),s={code:"en-US",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:0,firstWeekContainsDate:1}};t.a=s},function(e,t,n){var a=n(51);e.exports=function(e,t,n){if(a(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,a){return e.call(t,n,a)};case 3:return function(n,a,i){return e.call(t,n,a,i)}}return function(){return e.apply(t,arguments)}}},function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,t){e.exports={}},function(e,t,n){var a=n(104),i=n(70);e.exports=function(e){return a(i(e))}},function(e,t,n){var a=n(70);e.exports=function(e){return Object(a(e))}},function(e,t,n){"use strict";function a(e){o.a(1,arguments);var t=i.a(e),n=t.getFullYear(),a=new Date(0);a.setFullYear(n+1,0,4),a.setHours(0,0,0,0);var u=r.a(a),s=new Date(0);s.setFullYear(n,0,4),s.setHours(0,0,0,0);var d=r.a(s);return t.getTime()>=u.getTime()?n+1:t.getTime()>=d.getTime()?n:n-1}t.a=a;var i=n(1),r=n(25),o=n(0)},function(e,t,n){"use strict";function a(e,t,n,a){return i[e]}t.a=a;var i={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"}},function(e,t,n){"use strict";function a(e,t){var n=Number(e),a=n%100;if(a>20||a<10)switch(a%10){case 1:return n+"st";case 2:return n+"nd";case 3:return n+"rd"}return n+"th"}var i=n(3),r={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},o={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},u={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},s={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},d={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},c={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},l={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:u,defaultWidth:"wide"}),day:i.a({values:s,defaultWidth:"wide"}),dayPeriod:i.a({values:d,defaultWidth:"wide",formattingValues:c,defaultFormattingWidth:"wide"})};t.a=l},function(e,t,n){"use strict";var a=n(4),i=n(5),r=/^(\d+)(th|st|nd|rd)?/i,o=/\d+/i,u={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},s={any:[/^b/i,/^(a|c)/i]},d={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},c={any:[/1/i,/2/i,/3/i,/4/i]},l={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},m={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},f={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},h={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},p={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},g={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},v={ordinalNumber:a.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:i.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:i.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:i.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:i.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:i.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";function a(e,t){for(var n=e<0?"-":"",a=Math.abs(e).toString();a.length<t;)a="0"+a;return n+a}t.a=a},function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t,n){"use strict";var a=n(210)(!0);n(101)(String,"String",function(e){this._t=String(e),this._i=0},function(){var e,t=this._t,n=this._i;return n>=t.length?{value:void 0,done:!0}:(e=a(t,n),this._i+=e.length,{value:e,done:!1})})},function(e,t){e.exports=!0},function(e,t,n){var a=n(103),i=n(75);e.exports=Object.keys||function(e){return a(e,i)}},function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},function(e,t,n){"use strict";function a(e,t){o.a(2,arguments);var n=r.a(e),a=i.a(t);if(isNaN(a))return new Date(NaN);if(!a)return n;var u=n.getDate(),s=new Date(n.getTime());return s.setMonth(n.getMonth()+a+1,0),u>=s.getDate()?s:(n.setFullYear(s.getFullYear(),s.getMonth(),u),n)}t.a=a;var i=n(6),r=n(1),o=n(0)},function(e,t,n){"use strict";function a(e,t){o.a(2,arguments);var n=r.a(e).getTime(),a=i.a(t);return new Date(n+a)}t.a=a;var i=n(6),r=n(1),o=n(0)},function(e,t,n){"use strict";function a(e){o.a(1,arguments);var t=i.a(e),n=new Date(0);return n.setFullYear(t,0,4),n.setHours(0,0,0,0),r.a(n)}t.a=a;var i=n(34),r=n(25),o=n(0)},function(e,t,n){"use strict";function a(e,t){r.a(2,arguments);var n=i.a(e),a=i.a(t);return n.getTime()===a.getTime()}t.a=a;var i=n(57),r=n(0)},function(e,t,n){"use strict";function a(e,t,n){n=n||{};var a;return a="string"==typeof i[e]?i[e]:1===t?i[e].one:i[e].other.replace("{{count}}",t),n.addSuffix?n.comparison>0?"in "+a:a+" ago":a}t.a=a;var i={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}}},function(e,t,n){"use strict";function a(e,t){o.a(2,arguments);var n=i.a(t);return r.a(e,-n)}t.a=a;var i=n(6),r=n(45),o=n(0)},function(e,t,n){"use strict";function a(e,t){o.a(1,arguments);var n=t||{},a=n.locale,u=a&&a.options&&a.options.weekStartsOn,s=null==u?0:i.a(u),d=null==n.weekStartsOn?s:i.a(n.weekStartsOn);if(!(d>=0&&d<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var c=r.a(e),l=c.getUTCDay(),m=(l<d?7:0)+l-d;return c.setUTCDate(c.getUTCDate()-m),c.setUTCHours(0,0,0,0),c}t.a=a;var i=n(6),r=n(1),o=n(0)},function(e,t){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},function(e,t){var n=0,a=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++n+a).toString(36))}},function(e,t,n){var a=n(16).f,i=n(24),r=n(9)("toStringTag");e.exports=function(e,t,n){e&&!i(e=n?e:e.prototype,r)&&a(e,r,{configurable:!0,value:t})}},function(e,t,n){n(215);for(var a=n(8),i=n(23),r=n(31),o=n(9)("toStringTag"),u="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","),s=0;s<u.length;s++){var d=u[s],c=a[d],l=c&&c.prototype;l&&!l[o]&&i(l,o,d),r[d]=r.Array}},function(e,t){t.f={}.propertyIsEnumerable},function(e,t,n){"use strict";function a(e){r.a(1,arguments);var t=i.a(e),n=t.getDay();return 0===n||6===n}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e){r.a(1,arguments);var t=i.a(e);return t.setHours(0,0,0,0),t}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e,t){o.a(2,arguments);var n=i.a(t),a=7*n;return r.a(e,a)}t.a=a;var i=n(6),r=n(21),o=n(0)},function(e,t,n){"use strict";function a(e,t){r.a(2,arguments);var n=i.a(e),a=i.a(t);return n.getTime()-a.getTime()}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e,t){u.a(2,arguments);var n=i.a(e),a=i.a(t),s=o.a(n,a),d=Math.abs(r.a(n,a));n.setMonth(n.getMonth()-s*d);var c=o.a(n,a)===-s,l=s*(d-c);return 0===l?0:l}t.a=a;var i=n(1),r=n(140),o=n(27),u=n(0)},function(e,t,n){"use strict";function a(e,t){r.a(2,arguments);var n=i.a(e,t)/1e3;return n>0?Math.floor(n):Math.ceil(n)}t.a=a;var i=n(59),r=n(0)},function(e,t,n){"use strict";function a(e){r.a(1,arguments);var t=i.a(e);return t.setDate(1),t.setHours(0,0,0,0),t}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e){r.a(1,arguments);var t=i.a(e),n=t.getUTCDay(),a=(n<1?7:0)+n-1;return t.setUTCDate(t.getUTCDate()-a),t.setUTCHours(0,0,0,0),t}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}},function(e,t,n){"use strict";t.__esModule=!0;var a=n(192),i=function(e){return e&&e.__esModule?e:{default:e}}(a);t.default=function(){function e(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),(0,i.default)(e,a.key,a)}}return function(t,n,a){return n&&e(t.prototype,n),a&&e(t,a),t}}()},function(e,t,n){var a=n(20),i=n(8).document,r=a(i)&&a(i.createElement);e.exports=function(e){return r?i.createElement(e):{}}},function(e,t,n){var a=n(20);e.exports=function(e,t){if(!a(e))return e;var n,i;if(t&&"function"==typeof(n=e.toString)&&!a(i=n.call(e)))return i;if("function"==typeof(n=e.valueOf)&&!a(i=n.call(e)))return i;if(!t&&"function"==typeof(n=e.toString)&&!a(i=n.call(e)))return i;throw TypeError("Can't convert object to primitive value")}},function(e,t,n){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},function(e,t){var n=Math.ceil,a=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?a:n)(e)}},function(e,t){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},function(e,t,n){var a=n(14),i=n(212),r=n(75),o=n(73)("IE_PROTO"),u=function(){},s=function(){var e,t=n(66)("iframe"),a=r.length;for(t.style.display="none",n(105).appendChild(t),t.src="javascript:",e=t.contentWindow.document,e.open(),e.write("<script>document.F=Object<\/script>"),e.close(),s=e.F;a--;)delete s.prototype[r[a]];return s()};e.exports=Object.create||function(e,t){var n;return null!==e?(u.prototype=a(e),n=new u,u.prototype=null,n[o]=e):n=s(),void 0===t?n:i(n,t)}},function(e,t,n){var a=n(69),i=Math.min;e.exports=function(e){return e>0?i(a(e),9007199254740991):0}},function(e,t,n){var a=n(74)("keys"),i=n(52);e.exports=function(e){return a[e]||(a[e]=i(e))}},function(e,t,n){var a=n(7),i=n(8),r=i["__core-js_shared__"]||(i["__core-js_shared__"]={});(e.exports=function(e,t){return r[e]||(r[e]=void 0!==t?t:{})})("versions",[]).push({version:a.version,mode:n(41)?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},function(e,t){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(e,t,n){var a=n(43),i=n(9)("toStringTag"),r="Arguments"==a(function(){return arguments}()),o=function(e,t){try{return e[t]}catch(e){}};e.exports=function(e){var t,n,u;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=o(t=Object(e),i))?n:r?a(t):"Object"==(u=a(t))&&"function"==typeof t.callee?"Arguments":u}},function(e,t,n){var a=n(76),i=n(9)("iterator"),r=n(31);e.exports=n(7).getIteratorMethod=function(e){if(void 0!=e)return e[i]||e["@@iterator"]||r[a(e)]}},function(e,t,n){"use strict";function a(e){var t,n;this.promise=new e(function(e,a){if(void 0!==t||void 0!==n)throw TypeError("Bad Promise constructor");t=e,n=a}),this.resolve=i(t),this.reject=i(n)}var i=n(51);e.exports.f=function(e){return new a(e)}},function(e,t){t.f=Object.getOwnPropertySymbols},function(e,t,n){t.f=n(9)},function(e,t,n){var a=n(8),i=n(7),r=n(41),o=n(80),u=n(16).f;e.exports=function(e){var t=i.Symbol||(i.Symbol=r?{}:a.Symbol||{});"_"==e.charAt(0)||e in t||u(t,e,{value:o.f(e)})}},function(e,t,n){"use strict";function a(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n={};return Object.keys(e).forEach(function(a){-1===t.indexOf(a)&&(n[a]=e[a])}),n}function i(e,t){if(e===t)return!0;var n=!Array.isArray(e)||!Array.isArray(t),a=e.length!==t.length;return!n&&!a&&e.every(function(e,n){return e===t[n]})}Object.defineProperty(t,"__esModule",{value:!0}),t.omit=a,t.arraysEqual=i;t.isElementAnSFC=function(e){return!("string"==typeof e.type||e.type.prototype.isReactComponent)},t.hyphenate=function(e){var t={};return function(n){return t[n]||(t[n]=e(n)),t[n]}}(function(e){return e.replace(/([A-Z])/g,"-$1").toLowerCase()})},function(e,t,n){"use strict";function a(e){return r.a(1,arguments),0===i.a(e).getDay()}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e,t){o.a(2,arguments);var n=i.a(t);return r.a(e,n*u)}t.a=a;var i=n(6),r=n(45),o=n(0),u=36e5},function(e,t,n){"use strict";function a(e,t){o.a(2,arguments);var n=i.a(t),a=3*n;return r.a(e,a)}t.a=a;var i=n(6),r=n(44),o=n(0)},function(e,t,n){"use strict";function a(e,t){var n=e.getFullYear()-t.getFullYear()||e.getMonth()-t.getMonth()||e.getDate()-t.getDate()||e.getHours()-t.getHours()||e.getMinutes()-t.getMinutes()||e.getSeconds()-t.getSeconds()||e.getMilliseconds()-t.getMilliseconds();return n<0?-1:n>0?1:n}function i(e,t){u.a(2,arguments);var n=r.a(e),i=r.a(t),s=a(n,i),d=Math.abs(o.a(n,i));n.setDate(n.getDate()-s*d);var c=a(n,i)===-s,l=s*(d-c);return 0===l?0:l}t.a=i;var r=n(1),o=n(26),u=n(0)},function(e,t,n){"use strict";function a(e){r.a(1,arguments);var t=i.a(e),n=t.getMonth(),a=n-n%3;return t.setMonth(a,1),t.setHours(0,0,0,0),t}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e){u.a(1,arguments);for(var t=i.a(e),n=[],a=0;a<t.length;){var s=t[a++];o.a(s)&&(n.push(s),r.a(s)&&(a+=5))}return n}t.a=a;var i=n(148),r=n(83),o=n(56),u=n(0)},function(e,t,n){"use strict";function a(e){r.a(1,arguments);var t=i.a(e),n=t.getMonth();return t.setFullYear(t.getFullYear(),n+1,0),t.setHours(23,59,59,999),t}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e){r.a(1,arguments);var t=i.a(e),n=new Date(0);return n.setFullYear(t.getFullYear(),0,1),n.setHours(0,0,0,0),n}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e){r.a(1,arguments);var t=i.a(e);return t.setHours(23,59,59,999),t}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e,t){u.a(1,arguments);var n=r.a(e,t),a=n.getUTCFullYear(),s=t||{},d=s.locale,c=d&&d.options&&d.options.firstWeekContainsDate,l=null==c?1:i.a(c),m=null==s.firstWeekContainsDate?l:i.a(s.firstWeekContainsDate);if(!(m>=1&&m<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var f=new Date(0);f.setUTCFullYear(a+1,0,m),f.setUTCHours(0,0,0,0);var h=o.a(f,t),p=new Date(0);p.setUTCFullYear(a,0,m),p.setUTCHours(0,0,0,0);var g=o.a(p,t);return n.getTime()>=h.getTime()?a+1:n.getTime()>=g.getTime()?a:a-1}t.a=a;var i=n(6),r=n(1),o=n(50),u=n(0)},function(e,t,n){"use strict";function a(e,t){u.a(1,arguments);var n=t||{},a=n.locale,s=a&&a.options&&a.options.firstWeekContainsDate,d=null==s?1:o.a(s),c=null==n.firstWeekContainsDate?d:o.a(n.firstWeekContainsDate),l=i.a(e,t),m=new Date(0);return m.setFullYear(l,0,c),m.setHours(0,0,0,0),r.a(m,t)}t.a=a;var i=n(170),r=n(22),o=n(6),u=n(0)},function(e,t,n){"use strict";function a(e,t){o.a(2,arguments);var n=i.a(t);return r.a(e,-n)}t.a=a;var i=n(6),r=n(21),o=n(0)},function(e,t,n){"use strict";function a(e,t,n){r.a(2,arguments);var a=i.a(e,n),o=i.a(t,n);return a.getTime()===o.getTime()}t.a=a;var i=n(22),r=n(0)},function(e,t,n){"use strict";function a(e,t){u.a(2,arguments);var n=r.a(e),a=i.a(t),s=n.getFullYear(),d=n.getDate(),c=new Date(0);c.setFullYear(s,a,15),c.setHours(0,0,0,0);var l=o.a(c);return n.setMonth(a,Math.min(d,l)),n}t.a=a;var i=n(6),r=n(1),o=n(164),u=n(0)},function(e,t,n){"use strict";function a(e){var t=h.localeToNumber(e),n=h.numberToLocale(t);switch(t%10){case 2:case 3:case 4:case 6:case 1:case 5:case 7:case 8:case 9:case 0:return n}}function i(e){var t=e.toString().replace(/[१२३४५६७८९०]/g,function(e){return u.number[e]});return Number(t)}function r(e){return e.toString().replace(/\d/g,function(e){return u.locale[e]})}var o=n(3),u={locale:{1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},number:{"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"}},s={narrow:["ईसा-पूर्व","ईस्वी"],abbreviated:["ईसा-पूर्व","ईस्वी"],wide:["ईसा-पूर्व","ईसवी सन"]},d={narrow:["1","2","3","4"],abbreviated:["ति1","ति2","ति3","ति4"],wide:["पहली तिमाही","दूसरी तिमाही","तीसरी तिमाही","चौथी तिमाही"]},c={narrow:["ज","फ़","मा","अ","मई","जू","जु","अग","सि","अक्तू","न","दि"],abbreviated:["जन","फ़र","मार्च","अप्रैल","मई","जून","जुल","अग","सित","अक्तू","नव","दिस"],wide:["जनवरी","फ़रवरी","मार्च","अप्रैल","मई","जून","जुलाई","अगस्त","सितंबर","अक्तूबर","नवंबर","दिसंबर"]},l={narrow:["र","सो","मं","बु","गु","शु","श"],short:["र","सो","मं","बु","गु","शु","श"],abbreviated:["रवि","सोम","मंगल","बुध","गुरु","शुक्र","शनि"],wide:["रविवार","सोमवार","मंगलवार","बुधवार","गुरुवार","शुक्रवार","शनिवार"]},m={narrow:{am:"पूर्वाह्न",pm:"अपराह्न",midnight:"मध्यरात्रि",noon:"दोपहर",morning:"सुबह",afternoon:"दोपहर",evening:"शाम",night:"रात"},abbreviated:{am:"पूर्वाह्न",pm:"अपराह्न",midnight:"मध्यरात्रि",noon:"दोपहर",morning:"सुबह",afternoon:"दोपहर",evening:"शाम",night:"रात"},wide:{am:"पूर्वाह्न",pm:"अपराह्न",midnight:"मध्यरात्रि",noon:"दोपहर",morning:"सुबह",afternoon:"दोपहर",evening:"शाम",night:"रात"}},f={narrow:{am:"पूर्वाह्न",pm:"अपराह्न",midnight:"मध्यरात्रि",noon:"दोपहर",morning:"सुबह",afternoon:"दोपहर",evening:"शाम",night:"रात"},abbreviated:{am:"पूर्वाह्न",pm:"अपराह्न",midnight:"मध्यरात्रि",noon:"दोपहर",morning:"सुबह",afternoon:"दोपहर",evening:"शाम",night:"रात"},wide:{am:"पूर्वाह्न",pm:"अपराह्न",midnight:"मध्यरात्रि",noon:"दोपहर",morning:"सुबह",afternoon:"दोपहर",evening:"शाम",night:"रात"}},h={localeToNumber:i,numberToLocale:r,ordinalNumber:a,era:o.a({values:s,defaultWidth:"wide"}),quarter:o.a({values:d,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:o.a({values:c,defaultWidth:"wide"}),day:o.a({values:l,defaultWidth:"wide"}),dayPeriod:o.a({values:m,defaultWidth:"wide",formattingValues:f,defaultFormattingWidth:"wide"})};t.a=h},function(e,t,n){e.exports=!n(17)&&!n(30)(function(){return 7!=Object.defineProperty(n(66)("div"),"a",{get:function(){return 7}}).a})},function(e,t,n){"use strict";(function(t){"production"===t.env.NODE_ENV?e.exports=n(196):e.exports=n(197)}).call(t,n(18))},function(e,t){},function(e,t,n){"use strict";var a=n(41),i=n(11),r=n(102),o=n(23),u=n(31),s=n(211),d=n(53),c=n(106),l=n(9)("iterator"),m=!([].keys&&"next"in[].keys()),f=function(){return this};e.exports=function(e,t,n,h,p,g,v){s(n,t,h);var w,b,y,M=function(e){if(!m&&e in x)return x[e];switch(e){case"keys":case"values":return function(){return new n(this,e)}}return function(){return new n(this,e)}},k=t+" Iterator",P="values"==p,W=!1,x=e.prototype,j=x[l]||x["@@iterator"]||p&&x[p],T=j||M(p),S=p?P?M("entries"):T:void 0,C="Array"==t?x.entries||j:j;if(C&&(y=c(C.call(new e)))!==Object.prototype&&y.next&&(d(y,k,!0),a||"function"==typeof y[l]||o(y,l,f)),P&&j&&"values"!==j.name&&(W=!0,T=function(){return j.call(this)}),a&&!v||!m&&!W&&x[l]||o(x,l,T),u[t]=T,u[k]=f,p)if(w={values:P?T:M("values"),keys:g?T:M("keys"),entries:S},v)for(b in w)b in x||r(x,b,w[b]);else i(i.P+i.F*(m||W),t,w);return w}},function(e,t,n){e.exports=n(23)},function(e,t,n){var a=n(24),i=n(32),r=n(213)(!1),o=n(73)("IE_PROTO");e.exports=function(e,t){var n,u=i(e),s=0,d=[];for(n in u)n!=o&&a(u,n)&&d.push(n);for(;t.length>s;)a(u,n=t[s++])&&(~r(d,n)||d.push(n));return d}},function(e,t,n){var a=n(43);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==a(e)?e.split(""):Object(e)}},function(e,t,n){var a=n(8).document;e.exports=a&&a.documentElement},function(e,t,n){var a=n(24),i=n(33),r=n(73)("IE_PROTO"),o=Object.prototype;e.exports=Object.getPrototypeOf||function(e){return e=i(e),a(e,r)?e[r]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?o:null}},function(e,t,n){var a=n(14);e.exports=function(e,t,n,i){try{return i?t(a(n)[0],n[1]):t(n)}catch(t){var r=e.return;throw void 0!==r&&a(r.call(e)),t}}},function(e,t,n){var a=n(31),i=n(9)("iterator"),r=Array.prototype;e.exports=function(e){return void 0!==e&&(a.Array===e||r[i]===e)}},function(e,t,n){var a=n(14),i=n(51),r=n(9)("species");e.exports=function(e,t){var n,o=a(e).constructor;return void 0===o||void 0==(n=a(o)[r])?t:i(n)}},function(e,t,n){var a,i,r,o=n(29),u=n(221),s=n(105),d=n(66),c=n(8),l=c.process,m=c.setImmediate,f=c.clearImmediate,h=c.MessageChannel,p=c.Dispatch,g=0,v={},w=function(){var e=+this;if(v.hasOwnProperty(e)){var t=v[e];delete v[e],t()}},b=function(e){w.call(e.data)};m&&f||(m=function(e){for(var t=[],n=1;arguments.length>n;)t.push(arguments[n++]);return v[++g]=function(){u("function"==typeof e?e:Function(e),t)},a(g),g},f=function(e){delete v[e]},"process"==n(43)(l)?a=function(e){l.nextTick(o(w,e,1))}:p&&p.now?a=function(e){p.now(o(w,e,1))}:h?(i=new h,r=i.port2,i.port1.onmessage=b,a=o(r.postMessage,r,1)):c.addEventListener&&"function"==typeof postMessage&&!c.importScripts?(a=function(e){c.postMessage(e+"","*")},c.addEventListener("message",b,!1)):a="onreadystatechange"in d("script")?function(e){s.appendChild(d("script")).onreadystatechange=function(){s.removeChild(this),w.call(e)}}:function(e){setTimeout(o(w,e,1),0)}),e.exports={set:m,clear:f}},function(e,t){e.exports=function(e){try{return{e:!1,v:e()}}catch(e){return{e:!0,v:e}}}},function(e,t,n){var a=n(14),i=n(20),r=n(78);e.exports=function(e,t){if(a(e),i(t)&&t.constructor===e)return t;var n=r.f(e);return(0,n.resolve)(t),n.promise}},function(e,t,n){var a=n(9)("iterator"),i=!1;try{var r=[7][a]();r.return=function(){i=!0},Array.from(r,function(){throw 2})}catch(e){}e.exports=function(e,t){if(!t&&!i)return!1;var n=!1;try{var r=[7],o=r[a]();o.next=function(){return{done:n=!0}},r[a]=function(){return o},e(r)}catch(e){}return n}},function(e,t,n){e.exports={default:n(232),__esModule:!0}},function(e,t,n){var a=n(11),i=n(7),r=n(30);e.exports=function(e,t){var n=(i.Object||{})[e]||Object[e],o={};o[e]=t(n),a(a.S+a.F*r(function(){n(1)}),"Object",o)}},function(e,t,n){"use strict";t.__esModule=!0;var a=n(117),i=function(e){return e&&e.__esModule?e:{default:e}}(a);t.default=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==(void 0===t?"undefined":(0,i.default)(t))&&"function"!=typeof t?e:t}},function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var i=n(234),r=a(i),o=n(236),u=a(o),s="function"==typeof u.default&&"symbol"==typeof r.default?function(e){return typeof e}:function(e){return e&&"function"==typeof u.default&&e.constructor===u.default&&e!==u.default.prototype?"symbol":typeof e};t.default="function"==typeof u.default&&"symbol"===s(r.default)?function(e){return void 0===e?"undefined":s(e)}:function(e){return e&&"function"==typeof u.default&&e.constructor===u.default&&e!==u.default.prototype?"symbol":void 0===e?"undefined":s(e)}},function(e,t,n){var a=n(103),i=n(75).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return a(e,i)}},function(e,t,n){var a=n(55),i=n(39),r=n(32),o=n(67),u=n(24),s=n(98),d=Object.getOwnPropertyDescriptor;t.f=n(17)?d:function(e,t){if(e=r(e),t=o(t,!0),s)try{return d(e,t)}catch(e){}if(u(e,t))return i(!a.f.call(e,t),e[t])}},function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var i=n(245),r=a(i),o=n(249),u=a(o),s=n(117),d=a(s);t.default=function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+(void 0===t?"undefined":(0,d.default)(t)));e.prototype=(0,u.default)(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(r.default?(0,r.default)(e,t):e.__proto__=t)}},function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.hasClassInParent=t.formatErrorMsg=t.getMetaContent=t.axiosGithub=t.axiosJSON=t.queryStringify=t.queryParse=void 0;var i=n(272),r=a(i),o=n(275),u=a(o),s=n(282),d=a(s);t.queryParse=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.location.search;if(!e)return{};var t="?"===e[0]?e.substring(1):e,n={};return t.split("&").forEach(function(e){var t=e.split("="),a=(0,u.default)(t,2),i=a[0],r=a[1];i&&(n[decodeURIComponent(i)]=decodeURIComponent(r))}),n},t.queryStringify=function(e){return(0,r.default)(e).map(function(t){return t+"="+encodeURIComponent(e[t]||"")}).join("&")},t.axiosJSON=d.default.create({headers:{Accept:"application/json"}}),t.axiosGithub=d.default.create({baseURL:"https://api.github.com",headers:{Accept:"application/json"}}),t.getMetaContent=function(e,t){t||(t="content");var n=window.document.querySelector("meta[name='"+e+"']");return n&&n.getAttribute(t)},t.formatErrorMsg=function(e){var t="Error: ";return e.response&&e.response.data&&e.response.data.message?(t+=e.response.data.message+". ",e.response.data.errors&&(t+=e.response.data.errors.map(function(e){return e.message}).join(", "))):t+=e.message,t},t.hasClassInParent=function e(t){for(var n=arguments.length,a=Array(n>1?n-1:0),i=1;i<n;i++)a[i-1]=arguments[i];var r=!1;if(void 0===t.className)return!1;var o=t.className.split(" ");return a.forEach(function(e,t){r=r||o.indexOf(e)>=0}),r||t.parentNode&&e(t.parentNode,a)}},function(e,t,n){"use strict";e.exports=function(e,t){return function(){for(var n=new Array(arguments.length),a=0;a<n.length;a++)n[a]=arguments[a];return e.apply(t,n)}}},function(e,t,n){"use strict";function a(e){return encodeURIComponent(e).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var i=n(10);e.exports=function(e,t,n){if(!t)return e;var r;if(n)r=n(t);else if(i.isURLSearchParams(t))r=t.toString();else{var o=[];i.forEach(t,function(e,t){null!==e&&void 0!==e&&(i.isArray(e)?t+="[]":e=[e],i.forEach(e,function(e){i.isDate(e)?e=e.toISOString():i.isObject(e)&&(e=JSON.stringify(e)),o.push(a(t)+"="+a(e))}))}),r=o.join("&")}if(r){var u=e.indexOf("#");-1!==u&&(e=e.slice(0,u)),e+=(-1===e.indexOf("?")?"?":"&")+r}return e}},function(e,t,n){"use strict";e.exports=function(e){return!(!e||!e.__CANCEL__)}},function(e,t,n){"use strict";(function(t){function a(e,t){!i.isUndefined(e)&&i.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}var i=n(10),r=n(288),o={"Content-Type":"application/x-www-form-urlencoded"},u={adapter:function(){var e;return"undefined"!=typeof XMLHttpRequest?e=n(126):void 0!==t&&"[object process]"===Object.prototype.toString.call(t)&&(e=n(126)),e}(),transformRequest:[function(e,t){return r(t,"Accept"),r(t,"Content-Type"),i.isFormData(e)||i.isArrayBuffer(e)||i.isBuffer(e)||i.isStream(e)||i.isFile(e)||i.isBlob(e)?e:i.isArrayBufferView(e)?e.buffer:i.isURLSearchParams(e)?(a(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):i.isObject(e)?(a(t,"application/json;charset=utf-8"),JSON.stringify(e)):e}],transformResponse:[function(e){if("string"==typeof e)try{e=JSON.parse(e)}catch(e){}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,validateStatus:function(e){return e>=200&&e<300}};u.headers={common:{Accept:"application/json, text/plain, */*"}},i.forEach(["delete","get","head"],function(e){u.headers[e]={}}),i.forEach(["post","put","patch"],function(e){u.headers[e]=i.merge(o)}),e.exports=u}).call(t,n(18))},function(e,t,n){"use strict";var a=n(10),i=n(289),r=n(123),o=n(291),u=n(294),s=n(295),d=n(127);e.exports=function(e){return new Promise(function(t,c){var l=e.data,m=e.headers;a.isFormData(l)&&delete m["Content-Type"];var f=new XMLHttpRequest;if(e.auth){var h=e.auth.username||"",p=e.auth.password||"";m.Authorization="Basic "+btoa(h+":"+p)}var g=o(e.baseURL,e.url);if(f.open(e.method.toUpperCase(),r(g,e.params,e.paramsSerializer),!0),f.timeout=e.timeout,f.onreadystatechange=function(){if(f&&4===f.readyState&&(0!==f.status||f.responseURL&&0===f.responseURL.indexOf("file:"))){var n="getAllResponseHeaders"in f?u(f.getAllResponseHeaders()):null,a=e.responseType&&"text"!==e.responseType?f.response:f.responseText,r={data:a,status:f.status,statusText:f.statusText,headers:n,config:e,request:f};i(t,c,r),f=null}},f.onabort=function(){f&&(c(d("Request aborted",e,"ECONNABORTED",f)),f=null)},f.onerror=function(){c(d("Network Error",e,null,f)),f=null},f.ontimeout=function(){var t="timeout of "+e.timeout+"ms exceeded";e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),c(d(t,e,"ECONNABORTED",f)),f=null},a.isStandardBrowserEnv()){var v=n(296),w=(e.withCredentials||s(g))&&e.xsrfCookieName?v.read(e.xsrfCookieName):void 0;w&&(m[e.xsrfHeaderName]=w)}if("setRequestHeader"in f&&a.forEach(m,function(e,t){void 0===l&&"content-type"===t.toLowerCase()?delete m[t]:f.setRequestHeader(t,e)}),a.isUndefined(e.withCredentials)||(f.withCredentials=!!e.withCredentials),e.responseType)try{f.responseType=e.responseType}catch(t){if("json"!==e.responseType)throw t}"function"==typeof e.onDownloadProgress&&f.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&f.upload&&f.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then(function(e){f&&(f.abort(),c(e),f=null)}),void 0===l&&(l=null),f.send(l)})}},function(e,t,n){"use strict";var a=n(290);e.exports=function(e,t,n,i,r){var o=new Error(e);return a(o,t,n,i,r)}},function(e,t,n){"use strict";var a=n(10);e.exports=function(e,t){t=t||{};var n={},i=["url","method","params","data"],r=["headers","auth","proxy"],o=["baseURL","url","transformRequest","transformResponse","paramsSerializer","timeout","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","maxContentLength","validateStatus","maxRedirects","httpAgent","httpsAgent","cancelToken","socketPath"];a.forEach(i,function(e){void 0!==t[e]&&(n[e]=t[e])}),a.forEach(r,function(i){a.isObject(t[i])?n[i]=a.deepMerge(e[i],t[i]):void 0!==t[i]?n[i]=t[i]:a.isObject(e[i])?n[i]=a.deepMerge(e[i]):void 0!==e[i]&&(n[i]=e[i])}),a.forEach(o,function(a){void 0!==t[a]?n[a]=t[a]:void 0!==e[a]&&(n[a]=e[a])});var u=i.concat(r).concat(o),s=Object.keys(t).filter(function(e){return-1===u.indexOf(e)});return a.forEach(s,function(a){void 0!==t[a]?n[a]=t[a]:void 0!==e[a]&&(n[a]=e[a])}),n}},function(e,t,n){"use strict";function a(e){this.message=e}a.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},a.prototype.__CANCEL__=!0,e.exports=a},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var a=n(12),i=function(e){return e&&e.__esModule?e:{default:e}}(a);t.default=function(e){var t=e.src,n=e.className,a=e.alt,r=e.defaultSrc,o=void 0===r?"//cdn.jsdelivr.net/npm/gitalk@1/src/assets/icon/github.svg":r;return i.default.createElement("div",{className:"gt-avatar "+n},i.default.createElement("img",{src:t||o,alt:"@"+a,onError:function(e){e.target.src=o}}))}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var a=n(12),i=function(e){return e&&e.__esModule?e:{default:e}}(a);t.default=function(e){var t=e.className,a=e.text,r=e.name;return i.default.createElement("span",{className:"gt-ico "+t},i.default.createElement("span",{className:"gt-svg",dangerouslySetInnerHTML:{__html:n(302)("./"+r+".svg")}}),a&&i.default.createElement("span",{className:"gt-ico-text"},a))}},function(e,t,n){"use strict";function a(e,t){u.a(2,arguments);var n=r.a(e),a=i.a(n),c=o.a(t);if(isNaN(c))return new Date(NaN);var l=n.getHours(),m=c<0?-1:1,f=o.a(c/5);n.setDate(n.getDate()+7*f);for(var h=Math.abs(c%5);h>0;)n.setDate(n.getDate()+m),i.a(n)||(h-=1);return a&&i.a(n)&&0!==c&&(d.a(n)&&n.setDate(n.getDate()+(m<0?2:-1)),s.a(n)&&n.setDate(n.getDate()+(m<0?1:-2))),n.setHours(l),n}t.a=a;var i=n(56),r=n(1),o=n(6),u=n(0),s=n(83),d=n(133)},function(e,t,n){"use strict";function a(e){return r.a(1,arguments),6===i.a(e).getDay()}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e,t){u.a(2,arguments);var n=i.a(t);return o.a(e,r.a(e)+n)}t.a=a;var i=n(6),r=n(34),o=n(135),u=n(0)},function(e,t,n){"use strict";function a(e,t){s.a(2,arguments);var n=r.a(e),a=i.a(t),d=u.a(n,o.a(n)),c=new Date(0);return c.setFullYear(a,0,4),c.setHours(0,0,0,0),n=o.a(c),n.setDate(n.getDate()+d),n}t.a=a;var i=n(6),r=n(1),o=n(46),u=n(26),s=n(0)},function(e,t,n){"use strict";function a(e,t){o.a(2,arguments);var n=i.a(t);return r.a(e,n*u)}t.a=a;var i=n(6),r=n(45),o=n(0),u=6e4},function(e,t,n){"use strict";function a(e,t){o.a(2,arguments);var n=i.a(t);return r.a(e,1e3*n)}t.a=a;var i=n(6),r=n(45),o=n(0)},function(e,t,n){"use strict";function a(e,t){o.a(2,arguments);var n=i.a(t);return r.a(e,12*n)}t.a=a;var i=n(6),r=n(44),o=n(0)},function(e,t,n){"use strict";function a(e,t){return r.a(2,arguments),i.a(e)-i.a(t)}t.a=a;var i=n(34),r=n(0)},function(e,t,n){"use strict";function a(e,t){r.a(2,arguments);var n=i.a(e),a=i.a(t);return 12*(n.getFullYear()-a.getFullYear())+(n.getMonth()-a.getMonth())}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e){r.a(1,arguments);var t=i.a(e);return Math.floor(t.getMonth()/3)+1}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e,t,n){o.a(2,arguments);var a=i.a(e,n),s=i.a(t,n),d=a.getTime()-r.a(a),c=s.getTime()-r.a(s);return Math.round((d-c)/u)}t.a=a;var i=n(22),r=n(19),o=n(0),u=6048e5},function(e,t,n){"use strict";function a(e,t){r.a(2,arguments);var n=i.a(e),a=i.a(t);return n.getFullYear()-a.getFullYear()}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e,t){r.a(2,arguments);var n=i.a(e,t)/o;return n>0?Math.floor(n):Math.ceil(n)}t.a=a;var i=n(59),r=n(0),o=36e5},function(e,t,n){"use strict";function a(e,t){o.a(2,arguments);var n=i.a(t);return r.a(e,-n)}t.a=a;var i=n(6),r=n(134),o=n(0)},function(e,t,n){"use strict";function a(e,t){r.a(2,arguments);var n=i.a(e,t)/o;return n>0?Math.floor(n):Math.ceil(n)}t.a=a;var i=n(59),r=n(0),o=6e4},function(e,t,n){"use strict";function a(e,t){u.a(2,arguments);var n=i.a(e),a=i.a(t),s=o.a(n,a),d=Math.abs(r.a(n,a));n.setFullYear("1584"),a.setFullYear("1584");var c=o.a(n,a)===-s,l=s*(d-c);return 0===l?0:l}t.a=a;var i=n(1),r=n(143),o=n(27),u=n(0)},function(e,t,n){"use strict";function a(e,t){r.a(1,arguments);var n=e||{},a=i.a(n.start),o=i.a(n.end),u=o.getTime();if(!(a.getTime()<=u))throw new RangeError("Invalid interval");var s=[],d=a;d.setHours(0,0,0,0);var c=t&&"step"in t?Number(t.step):1;if(c<1||isNaN(c))throw new RangeError("`options.step` must be a number greater than 1");for(;d.getTime()<=u;)s.push(i.a(d)),d.setDate(d.getDate()+c),d.setHours(0,0,0,0);return s}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e){r.a(1,arguments);var t=i.a(e),n=t.getFullYear();return t.setFullYear(n+1,0,0),t.setHours(23,59,59,999),t}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e,t){o.a(1,arguments);var n=t||{},a=n.locale,u=a&&a.options&&a.options.weekStartsOn,s=null==u?0:r.a(u),d=null==n.weekStartsOn?s:r.a(n.weekStartsOn);if(!(d>=0&&d<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var c=i.a(e),l=c.getDay(),m=6+(l<d?-7:0)-(l-d);return c.setDate(c.getDate()+m),c.setHours(23,59,59,999),c}t.a=a;var i=n(1),r=n(6),o=n(0)},function(e,t,n){"use strict";function a(e,t,n){h.a(2,arguments);var a=String(t),v=n||{},w=v.locale||o.a,y=w.options&&w.options.firstWeekContainsDate,M=null==y?1:f.a(y),k=null==v.firstWeekContainsDate?M:f.a(v.firstWeekContainsDate);if(!(k>=1&&k<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var P=w.options&&w.options.weekStartsOn,W=null==P?0:f.a(P),x=null==v.weekStartsOn?W:f.a(v.weekStartsOn);if(!(x>=0&&x<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");if(!w.localize)throw new RangeError("locale must contain localize property");if(!w.formatLong)throw new RangeError("locale must contain formatLong property");var j=s.a(e);if(!r.a(j))throw new RangeError("Invalid time value");var T=l.a(j),S=u.a(j,T),C={firstWeekContainsDate:k,weekStartsOn:x,locale:w,_originalDate:j};return a.match(g).map(function(e){var t=e[0];if("p"===t||"P"===t){return(0,c.a[t])(e,w.formatLong,C)}return e}).join("").match(p).map(function(n){if("''"===n)return"'";var a=n[0];if("'"===a)return i(n);var r=d.a[a];if(r)return!v.useAdditionalWeekYearTokens&&m.b(n)&&m.c(n,t,e),!v.useAdditionalDayOfYearTokens&&m.a(n)&&m.c(n,t,e),r(S,n,w.localize,C);if(a.match(b))throw new RangeError("Format string contains an unescaped latin alphabet character `"+a+"`");return n}).join("")}function i(e){return e.match(v)[1].replace(w,"'")}t.a=a;var r=n(15),o=n(28),u=n(49),s=n(1),d=n(340),c=n(156),l=n(19),m=n(157),f=n(6),h=n(0),p=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,g=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,v=/^'([^]*?)'?$/,w=/''/g,b=/[a-zA-Z]/},function(e,t,n){"use strict";var a=n(38),i={y:function(e,t){var n=e.getUTCFullYear(),i=n>0?n:1-n;return a.a("yy"===t?i%100:i,t.length)},M:function(e,t){var n=e.getUTCMonth();return"M"===t?String(n+1):a.a(n+1,2)},d:function(e,t){return a.a(e.getUTCDate(),t.length)},a:function(e,t){var n=e.getUTCHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":case"aaa":return n.toUpperCase();case"aaaaa":return n[0];case"aaaa":default:return"am"===n?"a.m.":"p.m."}},h:function(e,t){return a.a(e.getUTCHours()%12||12,t.length)},H:function(e,t){return a.a(e.getUTCHours(),t.length)},m:function(e,t){return a.a(e.getUTCMinutes(),t.length)},s:function(e,t){return a.a(e.getUTCSeconds(),t.length)},S:function(e,t){var n=t.length,i=e.getUTCMilliseconds(),r=Math.floor(i*Math.pow(10,n-3));return a.a(r,t.length)}};t.a=i},function(e,t,n){"use strict";function a(e){u.a(1,arguments);var t=i.a(e),n=r.a(t).getTime()-o.a(t).getTime();return Math.round(n/s)+1}t.a=a;var i=n(1),r=n(63),o=n(342),u=n(0),s=6048e5},function(e,t,n){"use strict";function a(e){o.a(1,arguments);var t=i.a(e),n=t.getUTCFullYear(),a=new Date(0);a.setUTCFullYear(n+1,0,4),a.setUTCHours(0,0,0,0);var u=r.a(a),s=new Date(0);s.setUTCFullYear(n,0,4),s.setUTCHours(0,0,0,0);var d=r.a(s);return t.getTime()>=u.getTime()?n+1:t.getTime()>=d.getTime()?n:n-1}t.a=a;var i=n(1),r=n(63),o=n(0)},function(e,t,n){"use strict";function a(e,t){u.a(1,arguments);var n=i.a(e),a=r.a(n,t).getTime()-o.a(n,t).getTime();return Math.round(a/s)+1}t.a=a;var i=n(1),r=n(50),o=n(343),u=n(0),s=6048e5},function(e,t,n){"use strict";function a(e,t){switch(e){case"P":return t.date({width:"short"});case"PP":return t.date({width:"medium"});case"PPP":return t.date({width:"long"});case"PPPP":default:return t.date({width:"full"})}}function i(e,t){switch(e){case"p":return t.time({width:"short"});case"pp":return t.time({width:"medium"});case"ppp":return t.time({width:"long"});case"pppp":default:return t.time({width:"full"})}}function r(e,t){var n=e.match(/(P+)(p+)?/),r=n[1],o=n[2];if(!o)return a(e,t);var u;switch(r){case"P":u=t.dateTime({width:"short"});break;case"PP":u=t.dateTime({width:"medium"});break;case"PPP":u=t.dateTime({width:"long"});break;case"PPPP":default:u=t.dateTime({width:"full"})}return u.replace("{{date}}",a(r,t)).replace("{{time}}",i(o,t))}var o={p:i,P:r};t.a=o},function(e,t,n){"use strict";function a(e){return-1!==o.indexOf(e)}function i(e){return-1!==u.indexOf(e)}function r(e,t,n){if("YYYY"===e)throw new RangeError("Use `yyyy` instead of `YYYY` (in `".concat(t,"`) for formatting years to the input `").concat(n,"`; see: https://git.io/fxCyr"));if("YY"===e)throw new RangeError("Use `yy` instead of `YY` (in `".concat(t,"`) for formatting years to the input `").concat(n,"`; see: https://git.io/fxCyr"));if("D"===e)throw new RangeError("Use `d` instead of `D` (in `".concat(t,"`) for formatting days of the month to the input `").concat(n,"`; see: https://git.io/fxCyr"));if("DD"===e)throw new RangeError("Use `dd` instead of `DD` (in `".concat(t,"`) for formatting days of the month to the input `").concat(n,"`; see: https://git.io/fxCyr"))}t.a=a,t.b=i,t.c=r;var o=["D","DD"],u=["YY","YYYY"]},function(e,t,n){"use strict";function a(e,t,n){l.a(2,arguments);var a=n||{},g=a.locale||u.a;if(!g.formatDistance)throw new RangeError("locale must contain formatDistance property");var v=i.a(e,t);if(isNaN(v))throw new RangeError("Invalid time value");var w=d.a(a);w.addSuffix=Boolean(a.addSuffix),w.comparison=v;var b,y;v>0?(b=s.a(t),y=s.a(e)):(b=s.a(e),y=s.a(t));var M,k=o.a(y,b),P=(c.a(y)-c.a(b))/1e3,W=Math.round((k-P)/60);if(W<2)return a.includeSeconds?k<5?g.formatDistance("lessThanXSeconds",5,w):k<10?g.formatDistance("lessThanXSeconds",10,w):k<20?g.formatDistance("lessThanXSeconds",20,w):k<40?g.formatDistance("halfAMinute",null,w):k<60?g.formatDistance("lessThanXMinutes",1,w):g.formatDistance("xMinutes",1,w):0===W?g.formatDistance("lessThanXMinutes",1,w):g.formatDistance("xMinutes",W,w);if(W<45)return g.formatDistance("xMinutes",W,w);if(W<90)return g.formatDistance("aboutXHours",1,w);if(W<m){var x=Math.round(W/60);return g.formatDistance("aboutXHours",x,w)}if(W<f)return g.formatDistance("xDays",1,w);if(W<h){var j=Math.round(W/m);return g.formatDistance("xDays",j,w)}if(W<p)return M=Math.round(W/h),g.formatDistance("aboutXMonths",M,w);if((M=r.a(y,b))<12){var T=Math.round(W/h);return g.formatDistance("xMonths",T,w)}var S=M%12,C=Math.floor(M/12);return S<3?g.formatDistance("aboutXYears",C,w):S<9?g.formatDistance("overXYears",C,w):g.formatDistance("almostXYears",C+1,w)}t.a=a;var i=n(27),r=n(60),o=n(61),u=n(28),s=n(1),d=n(159),c=n(19),l=n(0),m=1440,f=2520,h=43200,p=86400},function(e,t,n){"use strict";function a(e){return i.a({},e)}t.a=a;var i=n(160)},function(e,t,n){"use strict";function a(e,t){if(null==e)throw new TypeError("assign requires that input parameter not be null or undefined");t=t||{};for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e}t.a=a},function(e,t,n){"use strict";function a(e,t,n){c.a(2,arguments);var a=n||{},h=a.locale||d.a;if(!h.formatDistance)throw new RangeError("locale must contain localize.formatDistance property");var p=r.a(e,t);if(isNaN(p))throw new RangeError("Invalid time value");var g=s.a(a);g.addSuffix=Boolean(a.addSuffix),g.comparison=p;var v,w;p>0?(v=o.a(t),w=o.a(e)):(v=o.a(e),w=o.a(t));var b,y=null==a.roundingMethod?"round":String(a.roundingMethod);if("floor"===y)b=Math.floor;else if("ceil"===y)b=Math.ceil;else{if("round"!==y)throw new RangeError("roundingMethod must be 'floor', 'ceil' or 'round'");b=Math.round}var M,k=u.a(w,v),P=(i.a(w)-i.a(v))/1e3,W=b((k-P)/60);if("second"===(M=null==a.unit?W<1?"second":W<60?"minute":W<l?"hour":W<m?"day":W<f?"month":"year":String(a.unit)))return h.formatDistance("xSeconds",k,g);if("minute"===M)return h.formatDistance("xMinutes",W,g);if("hour"===M){var x=b(W/60);return h.formatDistance("xHours",x,g)}if("day"===M){var j=b(W/l);return h.formatDistance("xDays",j,g)}if("month"===M){var T=b(W/m);return h.formatDistance("xMonths",T,g)}if("year"===M){var S=b(W/f);return h.formatDistance("xYears",S,g)}throw new RangeError("unit must be 'second', 'minute', 'hour', 'day', 'month' or 'year'")}t.a=a;var i=n(19),r=n(27),o=n(1),u=n(61),s=n(159),d=n(28),c=n(0),l=1440,m=43200,f=525600},function(e,t,n){"use strict";function a(e){return r.a(1,arguments),i.a(e).getDate()}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e){return r.a(1,arguments),i.a(e).getDay()}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e){r.a(1,arguments);var t=i.a(e),n=t.getFullYear(),a=t.getMonth(),o=new Date(0);return o.setFullYear(n,a+1,0),o.setHours(0,0,0,0),o.getDate()}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e){r.a(1,arguments);var t=i.a(e),n=t.getFullYear();return n%400==0||n%4==0&&n%100!=0}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e){r.a(1,arguments);var t=i.a(e),n=t.getDay();return 0===n&&(n=7),n}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e){u.a(1,arguments);var t=i.a(e),n=r.a(t).getTime()-o.a(t).getTime();return Math.round(n/s)+1}t.a=a;var i=n(1),r=n(25),o=n(46),u=n(0),s=6048e5},function(e,t,n){"use strict";function a(e){return r.a(1,arguments),i.a(e).getTime()}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e,t){u.a(1,arguments);var n=o.a(e),a=i.a(n,t).getTime()-r.a(n,t).getTime();return Math.round(a/s)+1}t.a=a;var i=n(22),r=n(93),o=n(1),u=n(0),s=6048e5},function(e,t,n){"use strict";function a(e,t){u.a(1,arguments);var n=r.a(e),a=n.getFullYear(),s=t||{},d=s.locale,c=d&&d.options&&d.options.firstWeekContainsDate,l=null==c?1:o.a(c),m=null==s.firstWeekContainsDate?l:o.a(s.firstWeekContainsDate);if(!(m>=1&&m<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var f=new Date(0);f.setFullYear(a+1,0,m),f.setHours(0,0,0,0);var h=i.a(f,t),p=new Date(0);p.setFullYear(a,0,m),p.setHours(0,0,0,0);var g=i.a(p,t);return n.getTime()>=h.getTime()?a+1:n.getTime()>=g.getTime()?a:a-1}t.a=a;var i=n(22),r=n(1),o=n(6),u=n(0)},function(e,t,n){"use strict";function a(e){r.a(1,arguments);var t=i.a(e),n=t.getMonth();return t.setFullYear(t.getFullYear(),n+1,0),t.setHours(0,0,0,0),t}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e,t){if(u.a(2,arguments),!t||"object"!=typeof t)return new Date(NaN);var n="years"in t?s.a(t.years):0,a="months"in t?s.a(t.months):0,d="weeks"in t?s.a(t.weeks):0,c="days"in t?s.a(t.days):0,l="hours"in t?s.a(t.hours):0,m="minutes"in t?s.a(t.minutes):0,f="seconds"in t?s.a(t.seconds):0,h=r.a(o.a(e),a+12*n),p=i.a(h,c+7*d),g=m+60*l,v=f+60*g,w=1e3*v;return new Date(p.getTime()-w)}t.a=a;var i=n(94),r=n(173),o=n(1),u=n(0),s=n(6)},function(e,t,n){"use strict";function a(e,t){o.a(2,arguments);var n=i.a(t);return r.a(e,-n)}t.a=a;var i=n(6),r=n(44),o=n(0)},function(e,t,n){"use strict";function a(e,t,n,a){p.a(3,arguments);var b=String(e),y=String(t),P=a||{},W=P.locale||o.a;if(!W.match)throw new RangeError("locale must contain match property");var x=W.options&&W.options.firstWeekContainsDate,j=null==x?1:f.a(x),T=null==P.firstWeekContainsDate?j:f.a(P.firstWeekContainsDate);if(!(T>=1&&T<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var S=W.options&&W.options.weekStartsOn,C=null==S?0:f.a(S),z=null==P.weekStartsOn?C:f.a(P.weekStartsOn);if(!(z>=0&&z<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");if(""===y)return""===b?s.a(n):new Date(NaN);var N,D={firstWeekContainsDate:T,weekStartsOn:z,locale:W},E=[{priority:g,subPriority:-1,set:i,index:0}],H=y.match(w).map(function(e){var t=e[0];if("p"===t||"P"===t){return(0,c.a[t])(e,W.formatLong,D)}return e}).join("").match(v),A=[];for(N=0;N<H.length;N++){var _=H[N];!P.useAdditionalWeekYearTokens&&m.b(_)&&m.c(_,y,e),!P.useAdditionalDayOfYearTokens&&m.a(_)&&m.c(_,y,e);var O=_[0],X=h.a[O];if(X){var I=X.incompatibleTokens;if(Array.isArray(I)){for(var Y=void 0,F=0;F<A.length;F++){var L=A[F].token;if(-1!==I.indexOf(L)||L===O){Y=A[F];break}}if(Y)throw new RangeError("The format string mustn't contain `".concat(Y.fullToken,"` and `").concat(_,"` at the same time"))}else if("*"===X.incompatibleTokens&&A.length)throw new RangeError("The format string mustn't contain `".concat(_,"` and any other token at the same time"));A.push({token:O,fullToken:_});var q=X.parse(b,_,W.match,D);if(!q)return new Date(NaN);E.push({priority:X.priority,subPriority:X.subPriority||0,set:X.set,validate:X.validate,value:q.value,index:E.length}),b=q.rest}else{if(O.match(k))throw new RangeError("Format string contains an unescaped latin alphabet character `"+O+"`");if("''"===_?_="'":"'"===O&&(_=r(_)),0!==b.indexOf(_))return new Date(NaN);b=b.slice(_.length)}}if(b.length>0&&M.test(b))return new Date(NaN);var G=E.map(function(e){return e.priority}).sort(function(e,t){return t-e}).filter(function(e,t,n){return n.indexOf(e)===t}).map(function(e){return E.filter(function(t){return t.priority===e}).sort(function(e,t){return t.subPriority-e.subPriority})}).map(function(e){return e[0]}),R=s.a(n);if(isNaN(R))return new Date(NaN);var U=u.a(R,l.a(R)),K={};for(N=0;N<G.length;N++){var J=G[N];if(J.validate&&!J.validate(U,J.value,D))return new Date(NaN);var B=J.set(U,K,J.value,D);B[0]?(U=B[0],d.a(K,B[1])):U=B}return U}function i(e,t){if(t.timestampIsSet)return e;var n=new Date(0);return n.setFullYear(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()),n.setHours(e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds()),n}function r(e){return e.match(b)[1].replace(y,"'")}t.a=a;var o=n(28),u=n(49),s=n(1),d=n(160),c=n(156),l=n(19),m=n(157),f=n(6),h=n(379),p=n(0),g=10,v=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,w=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,b=/^'([^]*?)'?$/,y=/''/g,M=/\S/,k=/[a-zA-Z]/},function(e,t,n){"use strict";function a(e,t){r.a(2,arguments);var n=i.a(e),a=i.a(t);return n.getTime()===a.getTime()}t.a=a;var i=n(176),r=n(0)},function(e,t,n){"use strict";function a(e){r.a(1,arguments);var t=i.a(e);return t.setMinutes(0,0,0),t}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e,t){return r.a(2,arguments),i.a(e,t,{weekStartsOn:1})}t.a=a;var i=n(95),r=n(0)},function(e,t,n){"use strict";function a(e,t){r.a(2,arguments);var n=i.a(e),a=i.a(t);return n.getTime()===a.getTime()}t.a=a;var i=n(179),r=n(0)},function(e,t,n){"use strict";function a(e){r.a(1,arguments);var t=i.a(e);return t.setSeconds(0,0),t}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e,t){r.a(2,arguments);var n=i.a(e),a=i.a(t);return n.getFullYear()===a.getFullYear()&&n.getMonth()===a.getMonth()}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e,t){r.a(2,arguments);var n=i.a(e),a=i.a(t);return n.getTime()===a.getTime()}t.a=a;var i=n(87),r=n(0)},function(e,t,n){"use strict";function a(e,t){r.a(2,arguments);var n=i.a(e),a=i.a(t);return n.getTime()===a.getTime()}t.a=a;var i=n(183),r=n(0)},function(e,t,n){"use strict";function a(e){r.a(1,arguments);var t=i.a(e);return t.setMilliseconds(0),t}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e,t){r.a(2,arguments);var n=i.a(e),a=i.a(t);return n.getFullYear()===a.getFullYear()}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e,t){o.a(1,arguments);var n=t||{},a=n.locale,u=a&&a.options&&a.options.weekStartsOn,s=null==u?0:r.a(u),d=null==n.weekStartsOn?s:r.a(n.weekStartsOn);if(!(d>=0&&d<=6))throw new RangeError("weekStartsOn must be between 0 and 6");var c=i.a(e),l=c.getDay(),m=6+(l<d?-7:0)-(l-d);return c.setHours(0,0,0,0),c.setDate(c.getDate()+m),c}t.a=a;var i=n(1),r=n(6),o=n(0)},function(e,t,n){"use strict";function a(e,t){if(e>18&&e<=31)return t+"শে";switch(e){case 1:return t+"লা";case 2:case 3:return t+"রা";case 4:return t+"ঠা";default:return t+"ই"}}function i(e,t){var n=p.localeToNumber(e),i=p.numberToLocale(n);if("date"===t.unit)return a(n,i);if(n>10||0===n)return i+"তম";switch(n%10){case 2:case 3:return i+"য়";case 4:return i+"র্থ";case 6:return i+"ষ্ঠ";case 1:case 5:case 7:case 8:case 9:case 0:return i+"ম"}}function r(e){var t=e.toString().replace(/[১২৩৪৫৬৭৮৯০]/g,function(e){return s.number[e]});return Number(t)}function o(e){return e.toString().replace(/\d/g,function(e){return s.locale[e]})}var u=n(3),s={locale:{1:"১",2:"২",3:"৩",4:"৪",5:"৫",6:"৬",7:"৭",8:"৮",9:"৯",0:"০"},number:{"১":"1","২":"2","৩":"3","৪":"4","৫":"5","৬":"6","৭":"7","৮":"8","৯":"9","০":"0"}},d={narrow:["খ্রিঃপূঃ","খ্রিঃ"],abbreviated:["খ্রিঃপূর্ব","খ্রিঃ"],wide:["খ্রিস্টপূর্ব","খ্রিস্টাব্দ"]},c={narrow:["১","২","৩","৪"],abbreviated:["১ত্রৈ","২ত্রৈ","৩ত্রৈ","৪ত্রৈ"],wide:["১ম ত্রৈমাসিক","২য় ত্রৈমাসিক","৩য় ত্রৈমাসিক","৪র্থ ত্রৈমাসিক"]},l={narrow:["জানু","ফেব্রু","মার্চ","এপ্রিল","মে","জুন","জুলাই","আগস্ট","সেপ্ট","অক্টো","নভে","ডিসে"],abbreviated:["জানু","ফেব্রু","মার্চ","এপ্রিল","মে","জুন","জুলাই","আগস্ট","সেপ্ট","অক্টো","নভে","ডিসে"],wide:["জানুয়ারি","ফেব্রুয়ারি","মার্চ","এপ্রিল","মে","জুন","জুলাই","আগস্ট","সেপ্টেম্বর","অক্টোবর","নভেম্বর","ডিসেম্বর"]},m={narrow:["র","সো","ম","বু","বৃ","শু","শ"],short:["রবি","সোম","মঙ্গল","বুধ","বৃহ","শুক্র","শনি"],abbreviated:["রবি","সোম","মঙ্গল","বুধ","বৃহ","শুক্র","শনি"],wide:["রবিবার","সোমবার","মঙ্গলবার","বুধবার","বৃহস্পতিবার ","শুক্রবার","শনিবার"]},f={narrow:{am:"পূ",pm:"অপ",midnight:"মধ্যরাত",noon:"মধ্যাহ্ন",morning:"সকাল",afternoon:"বিকাল",evening:"সন্ধ্যা",night:"রাত"},abbreviated:{am:"পূর্বাহ্ন",pm:"অপরাহ্ন",midnight:"মধ্যরাত",noon:"মধ্যাহ্ন",morning:"সকাল",afternoon:"বিকাল",evening:"সন্ধ্যা",night:"রাত"},wide:{am:"পূর্বাহ্ন",pm:"অপরাহ্ন",midnight:"মধ্যরাত",noon:"মধ্যাহ্ন",morning:"সকাল",afternoon:"বিকাল",evening:"সন্ধ্যা",night:"রাত"}},h={narrow:{am:"পূ",pm:"অপ",midnight:"মধ্যরাত",noon:"মধ্যাহ্ন",morning:"সকাল",afternoon:"বিকাল",evening:"সন্ধ্যা",night:"রাত"},abbreviated:{am:"পূর্বাহ্ন",pm:"অপরাহ্ন",midnight:"মধ্যরাত",noon:"মধ্যাহ্ন",morning:"সকাল",afternoon:"বিকাল",evening:"সন্ধ্যা",night:"রাত"},wide:{am:"পূর্বাহ্ন",pm:"অপরাহ্ন",midnight:"মধ্যরাত",noon:"মধ্যাহ্ন",morning:"সকাল",afternoon:"বিকাল",evening:"সন্ধ্যা",night:"রাত"}},p={localeToNumber:r,numberToLocale:o,ordinalNumber:i,era:u.a({values:d,defaultWidth:"wide"}),quarter:u.a({values:c,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:u.a({values:l,defaultWidth:"wide"}),day:u.a({values:m,defaultWidth:"wide"}),dayPeriod:u.a({values:f,defaultWidth:"wide",formattingValues:h,defaultFormattingWidth:"wide"})};t.a=p},function(e,t,n){"use strict";function a(e,t,n){n=n||{};var a;return a="string"==typeof i[e]?i[e]:1===t?i[e].one:i[e].other.replace("{{count}}",t),n.addSuffix?n.comparison>0?"dans "+a:"il y a "+a:a}t.a=a;var i={lessThanXSeconds:{one:"moins d’une seconde",other:"moins de {{count}} secondes"},xSeconds:{one:"1 seconde",other:"{{count}} secondes"},halfAMinute:"30 secondes",lessThanXMinutes:{one:"moins d’une minute",other:"moins de {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"environ 1 heure",other:"environ {{count}} heures"},xHours:{one:"1 heure",other:"{{count}} heures"},xDays:{one:"1 jour",other:"{{count}} jours"},aboutXWeeks:{one:"environ 1 semaine",other:"environ {{count}} semaines"},xWeeks:{one:"1 semaine",other:"{{count}} semaines"},aboutXMonths:{one:"environ 1 mois",other:"environ {{count}} mois"},xMonths:{one:"1 mois",other:"{{count}} mois"},aboutXYears:{one:"environ 1 an",other:"environ {{count}} ans"},xYears:{one:"1 an",other:"{{count}} ans"},overXYears:{one:"plus d’un an",other:"plus de {{count}} ans"},almostXYears:{one:"presqu’un an",other:"presque {{count}} ans"}}},function(e,t,n){"use strict";function a(e,t,n,a){return i[e]}t.a=a;var i={lastWeek:"eeee 'dernier à' p",yesterday:"'hier à' p",today:"'aujourd’hui à' p",tomorrow:"'demain à' p'",nextWeek:"eeee 'prochain à' p",other:"P"}},function(e,t,n){"use strict";function a(e,t){var n,a=Number(e),i=t||{},r=String(i.unit);return 0===a?a:(n="year"===r||"hour"===r||"week"===r?1===a?"ère":"ème":1===a?"er":"ème",a+n)}var i=n(3),r={narrow:["av. J.-C","ap. J.-C"],abbreviated:["av. J.-C","ap. J.-C"],wide:["avant Jésus-Christ","après Jésus-Christ"]},o={narrow:["T1","T2","T3","T4"],abbreviated:["1er trim.","2ème trim.","3ème trim.","4ème trim."],wide:["1er trimestre","2ème trimestre","3ème trimestre","4ème trimestre"]},u={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],wide:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"]},s={narrow:["D","L","M","M","J","V","S"],short:["di","lu","ma","me","je","ve","sa"],abbreviated:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],wide:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"]},d={narrow:{am:"AM",pm:"PM",midnight:"minuit",noon:"midi",morning:"mat.",afternoon:"ap.m.",evening:"soir",night:"mat."},abbreviated:{am:"AM",pm:"PM",midnight:"minuit",noon:"midi",morning:"matin",afternoon:"après-midi",evening:"soir",night:"matin"},wide:{am:"AM",pm:"PM",midnight:"minuit",noon:"midi",morning:"du matin",afternoon:"de l’après-midi",evening:"du soir",night:"du matin"}},c={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:u,defaultWidth:"wide"}),day:i.a({values:s,defaultWidth:"wide"}),dayPeriod:i.a({values:d,defaultWidth:"wide"})};t.a=c},function(e,t,n){"use strict";var a=n(4),i=n(5),r=/^(\d+)(ième|ère|ème|er|e)?/i,o=/\d+/i,u={narrow:/^(av\.J\.C|ap\.J\.C|ap\.J\.-C)/i,abbreviated:/^(av\.J\.-C|av\.J-C|apr\.J\.-C|apr\.J-C|ap\.J-C)/i,wide:/^(avant Jésus-Christ|après Jésus-Christ)/i},s={any:[/^av/i,/^ap/i]},d={narrow:/^[1234]/i,abbreviated:/^t[1234]/i,wide:/^[1234](er|ème|e)? trimestre/i},c={any:[/1/i,/2/i,/3/i,/4/i]},l={narrow:/^[jfmasond]/i,abbreviated:/^(janv|févr|mars|avr|mai|juin|juill|juil|août|sept|oct|nov|déc)\.?/i,wide:/^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i},m={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^av/i,/^ma/i,/^juin/i,/^juil/i,/^ao/i,/^s/i,/^o/i,/^n/i,/^d/i]},f={narrow:/^[lmjvsd]/i,short:/^(di|lu|ma|me|je|ve|sa)/i,abbreviated:/^(dim|lun|mar|mer|jeu|ven|sam)\.?/i,wide:/^(dimanche|lundi|mardi|mercredi|jeudi|vendredi|samedi)/i},h={narrow:[/^d/i,/^l/i,/^m/i,/^m/i,/^j/i,/^v/i,/^s/i],any:[/^di/i,/^lu/i,/^ma/i,/^me/i,/^je/i,/^ve/i,/^sa/i]},p={narrow:/^(a|p|minuit|midi|mat\.?|ap\.?m\.?|soir|nuit)/i,any:/^([ap]\.?\s?m\.?|du matin|de l'après[-\s]midi|du soir|de la nuit)/i},g={any:{am:/^a/i,pm:/^p/i,midnight:/^min/i,noon:/^mid/i,morning:/mat/i,afternoon:/ap/i,evening:/soir/i,night:/nuit/i}},v={ordinalNumber:a.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:i.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:i.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:i.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:i.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:i.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}var i=n(64),r=a(i),o=n(65),u=a(o),s=n(12),d=a(s),c=n(12);n(203);var l=n(207),m=a(l),f=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(0,r.default)(this,e),this.options=t}return(0,u.default)(e,[{key:"render",value:function(e,t){var n=null;if(!(e=e||this.options.container))throw new Error("Container is required: "+e);if(e instanceof HTMLElement)n=e;else if(!(n=window.document.getElementById(e)))throw new Error("Container not found, window.document.getElementById: "+e);return t||(t=function(){}),(0,c.render)(d.default.createElement(m.default,{options:this.options}),n,t)}}]),e}();e.exports=f},function(e,t,n){e.exports={default:n(193),__esModule:!0}},function(e,t,n){n(194);var a=n(7).Object;e.exports=function(e,t,n){return a.defineProperty(e,t,n)}},function(e,t,n){var a=n(11);a(a.S+a.F*!n(17),"Object",{defineProperty:n(16).f})},function(e,t,n){(function(t){if("production"!==t.env.NODE_ENV){var a=n(99);e.exports=n(198)(a.isElement,!0)}else e.exports=n(201)()}).call(t,n(18))},function(e,t,n){"use strict";function a(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case o:switch(e=e.type){case f:case h:case s:case c:case d:case g:return e;default:switch(e=e&&e.$$typeof){case m:case p:case b:case w:case l:return e;default:return t}}case u:return t}}}function i(e){return a(e)===h}/** @license React v16.12.0
* react-is.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
@@ -6,7 +6,7 @@
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
-Object.defineProperty(t,"__esModule",{value:!0});var i="function"==typeof Symbol&&Symbol.for,a=i?Symbol.for("react.element"):60103,u=i?Symbol.for("react.portal"):60106,s=i?Symbol.for("react.fragment"):60107,c=i?Symbol.for("react.strict_mode"):60108,l=i?Symbol.for("react.profiler"):60114,f=i?Symbol.for("react.provider"):60109,p=i?Symbol.for("react.context"):60110,d=i?Symbol.for("react.async_mode"):60111,h=i?Symbol.for("react.concurrent_mode"):60111,m=i?Symbol.for("react.forward_ref"):60112,v=i?Symbol.for("react.suspense"):60113,y=i?Symbol.for("react.suspense_list"):60120,g=i?Symbol.for("react.memo"):60115,b=i?Symbol.for("react.lazy"):60116,w=i?Symbol.for("react.fundamental"):60117,_=i?Symbol.for("react.responder"):60118,x=i?Symbol.for("react.scope"):60119;t.typeOf=r,t.AsyncMode=d,t.ConcurrentMode=h,t.ContextConsumer=p,t.ContextProvider=f,t.Element=a,t.ForwardRef=m,t.Fragment=s,t.Lazy=b,t.Memo=g,t.Portal=u,t.Profiler=l,t.StrictMode=c,t.Suspense=v,t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===s||e===h||e===l||e===c||e===v||e===y||"object"==typeof e&&null!==e&&(e.$$typeof===b||e.$$typeof===g||e.$$typeof===f||e.$$typeof===p||e.$$typeof===m||e.$$typeof===w||e.$$typeof===_||e.$$typeof===x)},t.isAsyncMode=function(e){return o(e)||r(e)===d},t.isConcurrentMode=o,t.isContextConsumer=function(e){return r(e)===p},t.isContextProvider=function(e){return r(e)===f},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===a},t.isForwardRef=function(e){return r(e)===m},t.isFragment=function(e){return r(e)===s},t.isLazy=function(e){return r(e)===b},t.isMemo=function(e){return r(e)===g},t.isPortal=function(e){return r(e)===u},t.isProfiler=function(e){return r(e)===l},t.isStrictMode=function(e){return r(e)===c},t.isSuspense=function(e){return r(e)===v}},function(e,t,n){"use strict";(function(e){/** @license React v16.12.0
+Object.defineProperty(t,"__esModule",{value:!0});var r="function"==typeof Symbol&&Symbol.for,o=r?Symbol.for("react.element"):60103,u=r?Symbol.for("react.portal"):60106,s=r?Symbol.for("react.fragment"):60107,d=r?Symbol.for("react.strict_mode"):60108,c=r?Symbol.for("react.profiler"):60114,l=r?Symbol.for("react.provider"):60109,m=r?Symbol.for("react.context"):60110,f=r?Symbol.for("react.async_mode"):60111,h=r?Symbol.for("react.concurrent_mode"):60111,p=r?Symbol.for("react.forward_ref"):60112,g=r?Symbol.for("react.suspense"):60113,v=r?Symbol.for("react.suspense_list"):60120,w=r?Symbol.for("react.memo"):60115,b=r?Symbol.for("react.lazy"):60116,y=r?Symbol.for("react.fundamental"):60117,M=r?Symbol.for("react.responder"):60118,k=r?Symbol.for("react.scope"):60119;t.typeOf=a,t.AsyncMode=f,t.ConcurrentMode=h,t.ContextConsumer=m,t.ContextProvider=l,t.Element=o,t.ForwardRef=p,t.Fragment=s,t.Lazy=b,t.Memo=w,t.Portal=u,t.Profiler=c,t.StrictMode=d,t.Suspense=g,t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===s||e===h||e===c||e===d||e===g||e===v||"object"==typeof e&&null!==e&&(e.$$typeof===b||e.$$typeof===w||e.$$typeof===l||e.$$typeof===m||e.$$typeof===p||e.$$typeof===y||e.$$typeof===M||e.$$typeof===k)},t.isAsyncMode=function(e){return i(e)||a(e)===f},t.isConcurrentMode=i,t.isContextConsumer=function(e){return a(e)===m},t.isContextProvider=function(e){return a(e)===l},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===o},t.isForwardRef=function(e){return a(e)===p},t.isFragment=function(e){return a(e)===s},t.isLazy=function(e){return a(e)===b},t.isMemo=function(e){return a(e)===w},t.isPortal=function(e){return a(e)===u},t.isProfiler=function(e){return a(e)===c},t.isStrictMode=function(e){return a(e)===d},t.isSuspense=function(e){return a(e)===g}},function(e,t,n){"use strict";(function(e){/** @license React v16.12.0
* react-is.development.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
@@ -14,22 +14,22 @@ Object.defineProperty(t,"__esModule",{value:!0});var i="function"==typeof Symbol
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
-"production"!==e.env.NODE_ENV&&function(){function e(e){return"string"==typeof e||"function"==typeof e||e===b||e===C||e===_||e===w||e===O||e===k||"object"==typeof e&&null!==e&&(e.$$typeof===P||e.$$typeof===M||e.$$typeof===x||e.$$typeof===S||e.$$typeof===N||e.$$typeof===T||e.$$typeof===A||e.$$typeof===j)}function n(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case y:var n=e.type;switch(n){case E:case C:case b:case _:case w:case O:return n;default:var r=n&&n.$$typeof;switch(r){case S:case N:case P:case M:case x:return r;default:return t}}case g:return t}}}function r(e){return K||(K=!0,L(!1,"The ReactIs.isAsyncMode() alias has been deprecated, and will be removed in React 17+. Update your code to use ReactIs.isConcurrentMode() instead. It has the exact same API.")),o(e)||n(e)===E}function o(e){return n(e)===C}function i(e){return n(e)===S}function a(e){return n(e)===x}function u(e){return"object"==typeof e&&null!==e&&e.$$typeof===y}function s(e){return n(e)===N}function c(e){return n(e)===b}function l(e){return n(e)===P}function f(e){return n(e)===M}function p(e){return n(e)===g}function d(e){return n(e)===_}function h(e){return n(e)===w}function m(e){return n(e)===O}Object.defineProperty(t,"__esModule",{value:!0});var v="function"==typeof Symbol&&Symbol.for,y=v?Symbol.for("react.element"):60103,g=v?Symbol.for("react.portal"):60106,b=v?Symbol.for("react.fragment"):60107,w=v?Symbol.for("react.strict_mode"):60108,_=v?Symbol.for("react.profiler"):60114,x=v?Symbol.for("react.provider"):60109,S=v?Symbol.for("react.context"):60110,E=v?Symbol.for("react.async_mode"):60111,C=v?Symbol.for("react.concurrent_mode"):60111,N=v?Symbol.for("react.forward_ref"):60112,O=v?Symbol.for("react.suspense"):60113,k=v?Symbol.for("react.suspense_list"):60120,M=v?Symbol.for("react.memo"):60115,P=v?Symbol.for("react.lazy"):60116,T=v?Symbol.for("react.fundamental"):60117,A=v?Symbol.for("react.responder"):60118,j=v?Symbol.for("react.scope"):60119,D=function(){},I=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];var o=0,i="Warning: "+e.replace(/%s/g,function(){return n[o++]});"undefined"!=typeof console&&console.warn(i);try{throw new Error(i)}catch(e){}};D=function(e,t){if(void 0===t)throw new Error("`lowPriorityWarningWithoutStack(condition, format, ...args)` requires a warning message argument");if(!e){for(var n=arguments.length,r=new Array(n>2?n-2:0),o=2;o<n;o++)r[o-2]=arguments[o];I.apply(void 0,[t].concat(r))}};var L=D,R=E,F=C,G=S,B=x,z=y,H=N,$=b,U=P,W=M,V=g,X=_,Y=w,q=O,K=!1;t.typeOf=n,t.AsyncMode=R,t.ConcurrentMode=F,t.ContextConsumer=G,t.ContextProvider=B,t.Element=z,t.ForwardRef=H,t.Fragment=$,t.Lazy=U,t.Memo=W,t.Portal=V,t.Profiler=X,t.StrictMode=Y,t.Suspense=q,t.isValidElementType=e,t.isAsyncMode=r,t.isConcurrentMode=o,t.isContextConsumer=i,t.isContextProvider=a,t.isElement=u,t.isForwardRef=s,t.isFragment=c,t.isLazy=l,t.isMemo=f,t.isPortal=p,t.isProfiler=d,t.isStrictMode=h,t.isSuspense=m}()}).call(t,n(9))},function(e,t,n){"use strict";(function(t){function r(){return null}var o=n(49),i=n(90),a=n(33),u=n(91),s=Function.call.bind(Object.prototype.hasOwnProperty),c=function(){};"production"!==t.env.NODE_ENV&&(c=function(e){var t="Warning: "+e;"undefined"!=typeof console&&console.error(t);try{throw new Error(t)}catch(e){}}),e.exports=function(e,n){function l(e){var t=e&&(k&&e[k]||e[M]);if("function"==typeof t)return t}function f(e,t){return e===t?0!==e||1/e==1/t:e!==e&&t!==t}function p(e){this.message=e,this.stack=""}function d(e){function r(r,u,s,l,f,d,h){if(l=l||P,d=d||s,h!==a){if(n){var m=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use `PropTypes.checkPropTypes()` to call them. Read more at http://fb.me/use-check-prop-types");throw m.name="Invariant Violation",m}if("production"!==t.env.NODE_ENV&&"undefined"!=typeof console){var v=l+":"+s;!o[v]&&i<3&&(c("You are manually calling a React.PropTypes validation function for the `"+d+"` prop on `"+l+"`. This is deprecated and will throw in the standalone `prop-types` package. You may be seeing this warning due to a third-party PropTypes library. See https://fb.me/react-warning-dont-call-proptypes for details."),o[v]=!0,i++)}}return null==u[s]?r?new p(null===u[s]?"The "+f+" `"+d+"` is marked as required in `"+l+"`, but its value is `null`.":"The "+f+" `"+d+"` is marked as required in `"+l+"`, but its value is `undefined`."):null:e(u,s,l,f,d)}if("production"!==t.env.NODE_ENV)var o={},i=0;var u=r.bind(null,!1);return u.isRequired=r.bind(null,!0),u}function h(e){function t(t,n,r,o,i,a){var u=t[n];if(E(u)!==e)return new p("Invalid "+o+" `"+i+"` of type `"+C(u)+"` supplied to `"+r+"`, expected `"+e+"`.");return null}return d(t)}function m(e){function t(t,n,r,o,i){if("function"!=typeof e)return new p("Property `"+i+"` of component `"+r+"` has invalid PropType notation inside arrayOf.");var u=t[n];if(!Array.isArray(u)){return new p("Invalid "+o+" `"+i+"` of type `"+E(u)+"` supplied to `"+r+"`, expected an array.")}for(var s=0;s<u.length;s++){var c=e(u,s,r,o,i+"["+s+"]",a);if(c instanceof Error)return c}return null}return d(t)}function v(e){function t(t,n,r,o,i){if(!(t[n]instanceof e)){var a=e.name||P;return new p("Invalid "+o+" `"+i+"` of type `"+O(t[n])+"` supplied to `"+r+"`, expected instance of `"+a+"`.")}return null}return d(t)}function y(e){function n(t,n,r,o,i){for(var a=t[n],u=0;u<e.length;u++)if(f(a,e[u]))return null;var s=JSON.stringify(e,function(e,t){return"symbol"===C(t)?String(t):t});return new p("Invalid "+o+" `"+i+"` of value `"+String(a)+"` supplied to `"+r+"`, expected one of "+s+".")}return Array.isArray(e)?d(n):("production"!==t.env.NODE_ENV&&c(arguments.length>1?"Invalid arguments supplied to oneOf, expected an array, got "+arguments.length+" arguments. A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).":"Invalid argument supplied to oneOf, expected an array."),r)}function g(e){function t(t,n,r,o,i){if("function"!=typeof e)return new p("Property `"+i+"` of component `"+r+"` has invalid PropType notation inside objectOf.");var u=t[n],c=E(u);if("object"!==c)return new p("Invalid "+o+" `"+i+"` of type `"+c+"` supplied to `"+r+"`, expected an object.");for(var l in u)if(s(u,l)){var f=e(u,l,r,o,i+"."+l,a);if(f instanceof Error)return f}return null}return d(t)}function b(e){function n(t,n,r,o,i){for(var u=0;u<e.length;u++){if(null==(0,e[u])(t,n,r,o,i,a))return null}return new p("Invalid "+o+" `"+i+"` supplied to `"+r+"`.")}if(!Array.isArray(e))return"production"!==t.env.NODE_ENV&&c("Invalid argument supplied to oneOfType, expected an instance of array."),r;for(var o=0;o<e.length;o++){var i=e[o];if("function"!=typeof i)return c("Invalid argument supplied to oneOfType. Expected an array of check functions, but received "+N(i)+" at index "+o+"."),r}return d(n)}function w(e){function t(t,n,r,o,i){var u=t[n],s=E(u);if("object"!==s)return new p("Invalid "+o+" `"+i+"` of type `"+s+"` supplied to `"+r+"`, expected `object`.");for(var c in e){var l=e[c];if(l){var f=l(u,c,r,o,i+"."+c,a);if(f)return f}}return null}return d(t)}function _(e){function t(t,n,r,o,u){var s=t[n],c=E(s);if("object"!==c)return new p("Invalid "+o+" `"+u+"` of type `"+c+"` supplied to `"+r+"`, expected `object`.");var l=i({},t[n],e);for(var f in l){var d=e[f];if(!d)return new p("Invalid "+o+" `"+u+"` key `"+f+"` supplied to `"+r+"`.\nBad object: "+JSON.stringify(t[n],null," ")+"\nValid keys: "+JSON.stringify(Object.keys(e),null," "));var h=d(s,f,r,o,u+"."+f,a);if(h)return h}return null}return d(t)}function x(t){switch(typeof t){case"number":case"string":case"undefined":return!0;case"boolean":return!t;case"object":if(Array.isArray(t))return t.every(x);if(null===t||e(t))return!0;var n=l(t);if(!n)return!1;var r,o=n.call(t);if(n!==t.entries){for(;!(r=o.next()).done;)if(!x(r.value))return!1}else for(;!(r=o.next()).done;){var i=r.value;if(i&&!x(i[1]))return!1}return!0;default:return!1}}function S(e,t){return"symbol"===e||!!t&&("Symbol"===t["@@toStringTag"]||"function"==typeof Symbol&&t instanceof Symbol)}function E(e){var t=typeof e;return Array.isArray(e)?"array":e instanceof RegExp?"object":S(t,e)?"symbol":t}function C(e){if(void 0===e||null===e)return""+e;var t=E(e);if("object"===t){if(e instanceof Date)return"date";if(e instanceof RegExp)return"regexp"}return t}function N(e){var t=C(e);switch(t){case"array":case"object":return"an "+t;case"boolean":case"date":case"regexp":return"a "+t;default:return t}}function O(e){return e.constructor&&e.constructor.name?e.constructor.name:P}var k="function"==typeof Symbol&&Symbol.iterator,M="@@iterator",P="<<anonymous>>",T={array:h("array"),bool:h("boolean"),func:h("function"),number:h("number"),object:h("object"),string:h("string"),symbol:h("symbol"),any:function(){return d(r)}(),arrayOf:m,element:function(){function t(t,n,r,o,i){var a=t[n];if(!e(a)){return new p("Invalid "+o+" `"+i+"` of type `"+E(a)+"` supplied to `"+r+"`, expected a single ReactElement.")}return null}return d(t)}(),elementType:function(){function e(e,t,n,r,i){var a=e[t];if(!o.isValidElementType(a)){return new p("Invalid "+r+" `"+i+"` of type `"+E(a)+"` supplied to `"+n+"`, expected a single ReactElement type.")}return null}return d(e)}(),instanceOf:v,node:function(){function e(e,t,n,r,o){return x(e[t])?null:new p("Invalid "+r+" `"+o+"` supplied to `"+n+"`, expected a ReactNode.")}return d(e)}(),objectOf:g,oneOf:y,oneOfType:b,shape:w,exact:_};return p.prototype=Error.prototype,T.checkPropTypes=u,T.resetWarningCache=u.resetWarningCache,T.PropTypes=T,T}}).call(t,n(9))},function(e,t,n){"use strict";function r(e){if(null===e||void 0===e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}/*
+"production"!==e.env.NODE_ENV&&function(){function e(e){return"string"==typeof e||"function"==typeof e||e===b||e===x||e===M||e===y||e===T||e===S||"object"==typeof e&&null!==e&&(e.$$typeof===z||e.$$typeof===C||e.$$typeof===k||e.$$typeof===P||e.$$typeof===j||e.$$typeof===N||e.$$typeof===D||e.$$typeof===E)}function n(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case v:var n=e.type;switch(n){case W:case x:case b:case M:case y:case T:return n;default:var a=n&&n.$$typeof;switch(a){case P:case j:case z:case C:case k:return a;default:return t}}case w:return t}}}function a(e){return $||($=!0,_(!1,"The ReactIs.isAsyncMode() alias has been deprecated, and will be removed in React 17+. Update your code to use ReactIs.isConcurrentMode() instead. It has the exact same API.")),i(e)||n(e)===W}function i(e){return n(e)===x}function r(e){return n(e)===P}function o(e){return n(e)===k}function u(e){return"object"==typeof e&&null!==e&&e.$$typeof===v}function s(e){return n(e)===j}function d(e){return n(e)===b}function c(e){return n(e)===z}function l(e){return n(e)===C}function m(e){return n(e)===w}function f(e){return n(e)===M}function h(e){return n(e)===y}function p(e){return n(e)===T}Object.defineProperty(t,"__esModule",{value:!0});var g="function"==typeof Symbol&&Symbol.for,v=g?Symbol.for("react.element"):60103,w=g?Symbol.for("react.portal"):60106,b=g?Symbol.for("react.fragment"):60107,y=g?Symbol.for("react.strict_mode"):60108,M=g?Symbol.for("react.profiler"):60114,k=g?Symbol.for("react.provider"):60109,P=g?Symbol.for("react.context"):60110,W=g?Symbol.for("react.async_mode"):60111,x=g?Symbol.for("react.concurrent_mode"):60111,j=g?Symbol.for("react.forward_ref"):60112,T=g?Symbol.for("react.suspense"):60113,S=g?Symbol.for("react.suspense_list"):60120,C=g?Symbol.for("react.memo"):60115,z=g?Symbol.for("react.lazy"):60116,N=g?Symbol.for("react.fundamental"):60117,D=g?Symbol.for("react.responder"):60118,E=g?Symbol.for("react.scope"):60119,H=function(){},A=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),a=1;a<t;a++)n[a-1]=arguments[a];var i=0,r="Warning: "+e.replace(/%s/g,function(){return n[i++]});"undefined"!=typeof console&&console.warn(r);try{throw new Error(r)}catch(e){}};H=function(e,t){if(void 0===t)throw new Error("`lowPriorityWarningWithoutStack(condition, format, ...args)` requires a warning message argument");if(!e){for(var n=arguments.length,a=new Array(n>2?n-2:0),i=2;i<n;i++)a[i-2]=arguments[i];A.apply(void 0,[t].concat(a))}};var _=H,O=W,X=x,I=P,Y=k,F=v,L=j,q=b,G=z,R=C,U=w,K=M,J=y,B=T,$=!1;t.typeOf=n,t.AsyncMode=O,t.ConcurrentMode=X,t.ContextConsumer=I,t.ContextProvider=Y,t.Element=F,t.ForwardRef=L,t.Fragment=q,t.Lazy=G,t.Memo=R,t.Portal=U,t.Profiler=K,t.StrictMode=J,t.Suspense=B,t.isValidElementType=e,t.isAsyncMode=a,t.isConcurrentMode=i,t.isContextConsumer=r,t.isContextProvider=o,t.isElement=u,t.isForwardRef=s,t.isFragment=d,t.isLazy=c,t.isMemo=l,t.isPortal=m,t.isProfiler=f,t.isStrictMode=h,t.isSuspense=p}()}).call(t,n(18))},function(e,t,n){"use strict";(function(t){function a(){return null}var i=n(99),r=n(199),o=n(68),u=n(200),s=Function.call.bind(Object.prototype.hasOwnProperty),d=function(){};"production"!==t.env.NODE_ENV&&(d=function(e){var t="Warning: "+e;"undefined"!=typeof console&&console.error(t);try{throw new Error(t)}catch(e){}}),e.exports=function(e,n){function c(e){var t=e&&(S&&e[S]||e[C]);if("function"==typeof t)return t}function l(e,t){return e===t?0!==e||1/e==1/t:e!==e&&t!==t}function m(e){this.message=e,this.stack=""}function f(e){function a(a,u,s,c,l,f,h){if(c=c||z,f=f||s,h!==o){if(n){var p=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use `PropTypes.checkPropTypes()` to call them. Read more at http://fb.me/use-check-prop-types");throw p.name="Invariant Violation",p}if("production"!==t.env.NODE_ENV&&"undefined"!=typeof console){var g=c+":"+s;!i[g]&&r<3&&(d("You are manually calling a React.PropTypes validation function for the `"+f+"` prop on `"+c+"`. This is deprecated and will throw in the standalone `prop-types` package. You may be seeing this warning due to a third-party PropTypes library. See https://fb.me/react-warning-dont-call-proptypes for details."),i[g]=!0,r++)}}return null==u[s]?a?new m(null===u[s]?"The "+l+" `"+f+"` is marked as required in `"+c+"`, but its value is `null`.":"The "+l+" `"+f+"` is marked as required in `"+c+"`, but its value is `undefined`."):null:e(u,s,c,l,f)}if("production"!==t.env.NODE_ENV)var i={},r=0;var u=a.bind(null,!1);return u.isRequired=a.bind(null,!0),u}function h(e){function t(t,n,a,i,r,o){var u=t[n];if(W(u)!==e)return new m("Invalid "+i+" `"+r+"` of type `"+x(u)+"` supplied to `"+a+"`, expected `"+e+"`.");return null}return f(t)}function p(e){function t(t,n,a,i,r){if("function"!=typeof e)return new m("Property `"+r+"` of component `"+a+"` has invalid PropType notation inside arrayOf.");var u=t[n];if(!Array.isArray(u)){return new m("Invalid "+i+" `"+r+"` of type `"+W(u)+"` supplied to `"+a+"`, expected an array.")}for(var s=0;s<u.length;s++){var d=e(u,s,a,i,r+"["+s+"]",o);if(d instanceof Error)return d}return null}return f(t)}function g(e){function t(t,n,a,i,r){if(!(t[n]instanceof e)){var o=e.name||z;return new m("Invalid "+i+" `"+r+"` of type `"+T(t[n])+"` supplied to `"+a+"`, expected instance of `"+o+"`.")}return null}return f(t)}function v(e){function n(t,n,a,i,r){for(var o=t[n],u=0;u<e.length;u++)if(l(o,e[u]))return null;var s=JSON.stringify(e,function(e,t){return"symbol"===x(t)?String(t):t});return new m("Invalid "+i+" `"+r+"` of value `"+String(o)+"` supplied to `"+a+"`, expected one of "+s+".")}return Array.isArray(e)?f(n):("production"!==t.env.NODE_ENV&&d(arguments.length>1?"Invalid arguments supplied to oneOf, expected an array, got "+arguments.length+" arguments. A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).":"Invalid argument supplied to oneOf, expected an array."),a)}function w(e){function t(t,n,a,i,r){if("function"!=typeof e)return new m("Property `"+r+"` of component `"+a+"` has invalid PropType notation inside objectOf.");var u=t[n],d=W(u);if("object"!==d)return new m("Invalid "+i+" `"+r+"` of type `"+d+"` supplied to `"+a+"`, expected an object.");for(var c in u)if(s(u,c)){var l=e(u,c,a,i,r+"."+c,o);if(l instanceof Error)return l}return null}return f(t)}function b(e){function n(t,n,a,i,r){for(var u=0;u<e.length;u++){if(null==(0,e[u])(t,n,a,i,r,o))return null}return new m("Invalid "+i+" `"+r+"` supplied to `"+a+"`.")}if(!Array.isArray(e))return"production"!==t.env.NODE_ENV&&d("Invalid argument supplied to oneOfType, expected an instance of array."),a;for(var i=0;i<e.length;i++){var r=e[i];if("function"!=typeof r)return d("Invalid argument supplied to oneOfType. Expected an array of check functions, but received "+j(r)+" at index "+i+"."),a}return f(n)}function y(e){function t(t,n,a,i,r){var u=t[n],s=W(u);if("object"!==s)return new m("Invalid "+i+" `"+r+"` of type `"+s+"` supplied to `"+a+"`, expected `object`.");for(var d in e){var c=e[d];if(c){var l=c(u,d,a,i,r+"."+d,o);if(l)return l}}return null}return f(t)}function M(e){function t(t,n,a,i,u){var s=t[n],d=W(s);if("object"!==d)return new m("Invalid "+i+" `"+u+"` of type `"+d+"` supplied to `"+a+"`, expected `object`.");var c=r({},t[n],e);for(var l in c){var f=e[l];if(!f)return new m("Invalid "+i+" `"+u+"` key `"+l+"` supplied to `"+a+"`.\nBad object: "+JSON.stringify(t[n],null," ")+"\nValid keys: "+JSON.stringify(Object.keys(e),null," "));var h=f(s,l,a,i,u+"."+l,o);if(h)return h}return null}return f(t)}function k(t){switch(typeof t){case"number":case"string":case"undefined":return!0;case"boolean":return!t;case"object":if(Array.isArray(t))return t.every(k);if(null===t||e(t))return!0;var n=c(t);if(!n)return!1;var a,i=n.call(t);if(n!==t.entries){for(;!(a=i.next()).done;)if(!k(a.value))return!1}else for(;!(a=i.next()).done;){var r=a.value;if(r&&!k(r[1]))return!1}return!0;default:return!1}}function P(e,t){return"symbol"===e||!!t&&("Symbol"===t["@@toStringTag"]||"function"==typeof Symbol&&t instanceof Symbol)}function W(e){var t=typeof e;return Array.isArray(e)?"array":e instanceof RegExp?"object":P(t,e)?"symbol":t}function x(e){if(void 0===e||null===e)return""+e;var t=W(e);if("object"===t){if(e instanceof Date)return"date";if(e instanceof RegExp)return"regexp"}return t}function j(e){var t=x(e);switch(t){case"array":case"object":return"an "+t;case"boolean":case"date":case"regexp":return"a "+t;default:return t}}function T(e){return e.constructor&&e.constructor.name?e.constructor.name:z}var S="function"==typeof Symbol&&Symbol.iterator,C="@@iterator",z="<<anonymous>>",N={array:h("array"),bool:h("boolean"),func:h("function"),number:h("number"),object:h("object"),string:h("string"),symbol:h("symbol"),any:function(){return f(a)}(),arrayOf:p,element:function(){function t(t,n,a,i,r){var o=t[n];if(!e(o)){return new m("Invalid "+i+" `"+r+"` of type `"+W(o)+"` supplied to `"+a+"`, expected a single ReactElement.")}return null}return f(t)}(),elementType:function(){function e(e,t,n,a,r){var o=e[t];if(!i.isValidElementType(o)){return new m("Invalid "+a+" `"+r+"` of type `"+W(o)+"` supplied to `"+n+"`, expected a single ReactElement type.")}return null}return f(e)}(),instanceOf:g,node:function(){function e(e,t,n,a,i){return k(e[t])?null:new m("Invalid "+a+" `"+i+"` supplied to `"+n+"`, expected a ReactNode.")}return f(e)}(),objectOf:w,oneOf:v,oneOfType:b,shape:y,exact:M};return m.prototype=Error.prototype,N.checkPropTypes=u,N.resetWarningCache=u.resetWarningCache,N.PropTypes=N,N}}).call(t,n(18))},function(e,t,n){"use strict";function a(e){if(null===e||void 0===e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}/*
object-assign
(c) Sindre Sorhus
@license MIT
*/
-var o=Object.getOwnPropertySymbols,i=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return t[e]}).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach(function(e){r[e]=e}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var n,u,s=r(e),c=1;c<arguments.length;c++){n=Object(arguments[c]);for(var l in n)i.call(n,l)&&(s[l]=n[l]);if(o){u=o(n);for(var f=0;f<u.length;f++)a.call(n,u[f])&&(s[u[f]]=n[u[f]])}}return s}},function(e,t,n){"use strict";(function(t){function r(e,n,r,s,c){if("production"!==t.env.NODE_ENV)for(var l in e)if(u(e,l)){var f;try{if("function"!=typeof e[l]){var p=Error((s||"React class")+": "+r+" type `"+l+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof e[l]+"`.");throw p.name="Invariant Violation",p}f=e[l](n,l,s,r,null,i)}catch(e){f=e}if(!f||f instanceof Error||o((s||"React class")+": type specification of "+r+" `"+l+"` is invalid; the type checker function must return `null` or an `Error` but returned a "+typeof f+". You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument)."),f instanceof Error&&!(f.message in a)){a[f.message]=!0;var d=c?c():"";o("Failed "+r+" type: "+f.message+(null!=d?d:""))}}}var o=function(){};if("production"!==t.env.NODE_ENV){var i=n(33),a={},u=Function.call.bind(Object.prototype.hasOwnProperty);o=function(e){var t="Warning: "+e;"undefined"!=typeof console&&console.error(t);try{throw new Error(t)}catch(e){}}}r.resetWarningCache=function(){"production"!==t.env.NODE_ENV&&(a={})},e.exports=r}).call(t,n(9))},function(e,t,n){"use strict";function r(){}function o(){}var i=n(33);o.resetWarningCache=r,e.exports=function(){function e(e,t,n,r,o,a){if(a!==i){var u=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw u.name="Invariant Violation",u}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:r};return n.PropTypes=n,n}},function(e,t,n){!function(){"use strict";function t(){}function n(e,n){var r,o,i,a,u=j;for(a=arguments.length;a-- >2;)A.push(arguments[a]);for(n&&null!=n.children&&(A.length||A.push(n.children),delete n.children);A.length;)if((o=A.pop())&&void 0!==o.pop)for(a=o.length;a--;)A.push(o[a]);else!0!==o&&!1!==o||(o=null),(i="function"!=typeof e)&&(null==o?o="":"number"==typeof o?o=String(o):"string"!=typeof o&&(i=!1)),i&&r?u[u.length-1]+=o:u===j?u=[o]:u.push(o),r=i;var s=new t;return s.nodeName=e,s.children=u,s.attributes=null==n?void 0:n,s.key=null==n?void 0:n.key,void 0!==T.vnode&&T.vnode(s),s}function r(e,t){for(var n in t)e[n]=t[n];return e}function o(e,t){return n(e.nodeName,r(r({},e.attributes),t),arguments.length>2?[].slice.call(arguments,2):e.children)}function i(e){!e.__d&&(e.__d=!0)&&1==I.push(e)&&(T.debounceRendering||setTimeout)(a)}function a(){var e,t=I;for(I=[];e=t.pop();)e.__d&&N(e)}function u(e,t,n){return"string"==typeof t||"number"==typeof t?void 0!==e.splitText:"string"==typeof t.nodeName?!e._componentConstructor&&s(e,t.nodeName):n||e._componentConstructor===t.nodeName}function s(e,t){return e.__n===t||e.nodeName.toLowerCase()===t.toLowerCase()}function c(e){var t=r({},e.attributes);t.children=e.children;var n=e.nodeName.defaultProps;if(void 0!==n)for(var o in n)void 0===t[o]&&(t[o]=n[o]);return t}function l(e,t){var n=t?document.createElementNS("http://www.w3.org/2000/svg",e):document.createElement(e);return n.__n=e,n}function f(e){e.parentNode&&e.parentNode.removeChild(e)}function p(e,t,n,r,o){if("className"===t&&(t="class"),"key"===t);else if("ref"===t)n&&n(null),r&&r(e);else if("class"!==t||o)if("style"===t){if(r&&"string"!=typeof r&&"string"!=typeof n||(e.style.cssText=r||""),r&&"object"==typeof r){if("string"!=typeof n)for(var i in n)i in r||(e.style[i]="");for(var i in r)e.style[i]="number"==typeof r[i]&&!1===D.test(i)?r[i]+"px":r[i]}}else if("dangerouslySetInnerHTML"===t)r&&(e.innerHTML=r.__html||"");else if("o"==t[0]&&"n"==t[1]){var a=t!==(t=t.replace(/Capture$/,""));t=t.toLowerCase().substring(2),r?n||e.addEventListener(t,h,a):e.removeEventListener(t,h,a),(e.__l||(e.__l={}))[t]=r}else if("list"!==t&&"type"!==t&&!o&&t in e)d(e,t,null==r?"":r),null!=r&&!1!==r||e.removeAttribute(t);else{var u=o&&t!==(t=t.replace(/^xlink\:?/,""));null==r||!1===r?u?e.removeAttributeNS("http://www.w3.org/1999/xlink",t.toLowerCase()):e.removeAttribute(t):"function"!=typeof r&&(u?e.setAttributeNS("http://www.w3.org/1999/xlink",t.toLowerCase(),r):e.setAttribute(t,r))}else e.className=r||""}function d(e,t,n){try{e[t]=n}catch(e){}}function h(e){return this.__l[e.type](T.event&&T.event(e)||e)}function m(){for(var e;e=L.pop();)T.afterMount&&T.afterMount(e),e.componentDidMount&&e.componentDidMount()}function v(e,t,n,r,o,i){R++||(F=null!=o&&void 0!==o.ownerSVGElement,G=null!=e&&!("__preactattr_"in e));var a=y(e,t,n,r,i);return o&&a.parentNode!==o&&o.appendChild(a),--R||(G=!1,i||m()),a}function y(e,t,n,r,o){var i=e,a=F;if(null==t&&(t=""),"string"==typeof t)return e&&void 0!==e.splitText&&e.parentNode&&(!e._component||o)?e.nodeValue!=t&&(e.nodeValue=t):(i=document.createTextNode(t),e&&(e.parentNode&&e.parentNode.replaceChild(i,e),b(e,!0))),i.__preactattr_=!0,i;if("function"==typeof t.nodeName)return O(e,t,n,r);if(F="svg"===t.nodeName||"foreignObject"!==t.nodeName&&F,(!e||!s(e,String(t.nodeName)))&&(i=l(String(t.nodeName),F),e)){for(;e.firstChild;)i.appendChild(e.firstChild);e.parentNode&&e.parentNode.replaceChild(i,e),b(e,!0)}var u=i.firstChild,c=i.__preactattr_||(i.__preactattr_={}),f=t.children;return!G&&f&&1===f.length&&"string"==typeof f[0]&&null!=u&&void 0!==u.splitText&&null==u.nextSibling?u.nodeValue!=f[0]&&(u.nodeValue=f[0]):(f&&f.length||null!=u)&&g(i,f,n,r,G||null!=c.dangerouslySetInnerHTML),_(i,t.attributes,c),F=a,i}function g(e,t,n,r,o){var i,a,s,c,l=e.childNodes,p=[],d={},h=0,m=0,v=l.length,g=0,w=t?t.length:0;if(0!==v)for(var _=0;_<v;_++){var x=l[_],S=x.__preactattr_,E=w&&S?x._component?x._component.__k:S.key:null;null!=E?(h++,d[E]=x):(S||(void 0!==x.splitText?!o||x.nodeValue.trim():o))&&(p[g++]=x)}if(0!==w)for(var _=0;_<w;_++){s=t[_],c=null;var E=s.key;if(null!=E)h&&void 0!==d[E]&&(c=d[E],d[E]=void 0,h--);else if(!c&&m<g)for(i=m;i<g;i++)if(void 0!==p[i]&&u(a=p[i],s,o)){c=a,p[i]=void 0,i===g-1&&g--,i===m&&m++;break}c=y(c,s,n,r),c&&c!==e&&(_>=v?e.appendChild(c):c!==l[_]&&(c===l[_+1]?f(l[_]):e.insertBefore(c,l[_]||null)))}if(h)for(var _ in d)void 0!==d[_]&&b(d[_],!1);for(;m<=g;)void 0!==(c=p[g--])&&b(c,!1)}function b(e,t){var n=e._component;n?k(n):(null!=e.__preactattr_&&e.__preactattr_.ref&&e.__preactattr_.ref(null),!1!==t&&null!=e.__preactattr_||f(e),w(e))}function w(e){for(e=e.lastChild;e;){var t=e.previousSibling;b(e,!0),e=t}}function _(e,t,n){var r;for(r in n)t&&null!=t[r]||null==n[r]||p(e,r,n[r],n[r]=void 0,F);for(r in t)"children"===r||"innerHTML"===r||r in n&&t[r]===("value"===r||"checked"===r?e[r]:n[r])||p(e,r,n[r],n[r]=t[r],F)}function x(e){var t=e.constructor.name;(B[t]||(B[t]=[])).push(e)}function S(e,t,n){var r,o=B[e.name];if(e.prototype&&e.prototype.render?(r=new e(t,n),M.call(r,t,n)):(r=new M(t,n),r.constructor=e,r.render=E),o)for(var i=o.length;i--;)if(o[i].constructor===e){r.__b=o[i].__b,o.splice(i,1);break}return r}function E(e,t,n){return this.constructor(e,n)}function C(e,t,n,r,o){e.__x||(e.__x=!0,(e.__r=t.ref)&&delete t.ref,(e.__k=t.key)&&delete t.key,!e.base||o?e.componentWillMount&&e.componentWillMount():e.componentWillReceiveProps&&e.componentWillReceiveProps(t,r),r&&r!==e.context&&(e.__c||(e.__c=e.context),e.context=r),e.__p||(e.__p=e.props),e.props=t,e.__x=!1,0!==n&&(1!==n&&!1===T.syncComponentUpdates&&e.base?i(e):N(e,1,o)),e.__r&&e.__r(e))}function N(e,t,n,o){if(!e.__x){var i,a,u,s=e.props,l=e.state,f=e.context,p=e.__p||s,d=e.__s||l,h=e.__c||f,y=e.base,g=e.__b,w=y||g,_=e._component,x=!1;if(y&&(e.props=p,e.state=d,e.context=h,2!==t&&e.shouldComponentUpdate&&!1===e.shouldComponentUpdate(s,l,f)?x=!0:e.componentWillUpdate&&e.componentWillUpdate(s,l,f),e.props=s,e.state=l,e.context=f),e.__p=e.__s=e.__c=e.__b=null,e.__d=!1,!x){i=e.render(s,l,f),e.getChildContext&&(f=r(r({},f),e.getChildContext()));var E,O,M=i&&i.nodeName;if("function"==typeof M){var P=c(i);a=_,a&&a.constructor===M&&P.key==a.__k?C(a,P,1,f,!1):(E=a,e._component=a=S(M,P,f),a.__b=a.__b||g,a.__u=e,C(a,P,0,f,!1),N(a,1,n,!0)),O=a.base}else u=w,E=_,E&&(u=e._component=null),(w||1===t)&&(u&&(u._component=null),O=v(u,i,f,n||!y,w&&w.parentNode,!0));if(w&&O!==w&&a!==_){var A=w.parentNode;A&&O!==A&&(A.replaceChild(O,w),E||(w._component=null,b(w,!1)))}if(E&&k(E),e.base=O,O&&!o){for(var j=e,D=e;D=D.__u;)(j=D).base=O;O._component=j,O._componentConstructor=j.constructor}}if(!y||n?L.unshift(e):x||(m(),e.componentDidUpdate&&e.componentDidUpdate(p,d,h),T.afterUpdate&&T.afterUpdate(e)),null!=e.__h)for(;e.__h.length;)e.__h.pop().call(e);R||o||m()}}function O(e,t,n,r){for(var o=e&&e._component,i=o,a=e,u=o&&e._componentConstructor===t.nodeName,s=u,l=c(t);o&&!s&&(o=o.__u);)s=o.constructor===t.nodeName;return o&&s&&(!r||o._component)?(C(o,l,3,n,r),e=o.base):(i&&!u&&(k(i),e=a=null),o=S(t.nodeName,l,n),e&&!o.__b&&(o.__b=e,a=null),C(o,l,1,n,r),e=o.base,a&&e!==a&&(a._component=null,b(a,!1))),e}function k(e){T.beforeUnmount&&T.beforeUnmount(e);var t=e.base;e.__x=!0,e.componentWillUnmount&&e.componentWillUnmount(),e.base=null;var n=e._component;n?k(n):t&&(t.__preactattr_&&t.__preactattr_.ref&&t.__preactattr_.ref(null),e.__b=t,f(t),x(e),w(t)),e.__r&&e.__r(null)}function M(e,t){this.__d=!0,this.context=t,this.props=e,this.state=this.state||{}}function P(e,t,n){return v(n,e,{},!1,t,!1)}var T={},A=[],j=[],D=/acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i,I=[],L=[],R=0,F=!1,G=!1,B={};r(M.prototype,{setState:function(e,t){var n=this.state;this.__s||(this.__s=r({},n)),r(n,"function"==typeof e?e(n,this.props):e),t&&(this.__h=this.__h||[]).push(t),i(this)},forceUpdate:function(e){e&&(this.__h=this.__h||[]).push(e),N(this,2)},render:function(){}});var z={h:n,createElement:n,cloneElement:o,Component:M,render:P,rerender:a,options:T};e.exports=z}()},function(e,t,n){"use strict";e.exports=n(95).polyfill()},function(e,t,n){(function(t,r){/*!
+var i=Object.getOwnPropertySymbols,r=Object.prototype.hasOwnProperty,o=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return t[e]}).join(""))return!1;var a={};return"abcdefghijklmnopqrst".split("").forEach(function(e){a[e]=e}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},a)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var n,u,s=a(e),d=1;d<arguments.length;d++){n=Object(arguments[d]);for(var c in n)r.call(n,c)&&(s[c]=n[c]);if(i){u=i(n);for(var l=0;l<u.length;l++)o.call(n,u[l])&&(s[u[l]]=n[u[l]])}}return s}},function(e,t,n){"use strict";(function(t){function a(e,n,a,s,d){if("production"!==t.env.NODE_ENV)for(var c in e)if(u(e,c)){var l;try{if("function"!=typeof e[c]){var m=Error((s||"React class")+": "+a+" type `"+c+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof e[c]+"`.");throw m.name="Invariant Violation",m}l=e[c](n,c,s,a,null,r)}catch(e){l=e}if(!l||l instanceof Error||i((s||"React class")+": type specification of "+a+" `"+c+"` is invalid; the type checker function must return `null` or an `Error` but returned a "+typeof l+". You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument)."),l instanceof Error&&!(l.message in o)){o[l.message]=!0;var f=d?d():"";i("Failed "+a+" type: "+l.message+(null!=f?f:""))}}}var i=function(){};if("production"!==t.env.NODE_ENV){var r=n(68),o={},u=Function.call.bind(Object.prototype.hasOwnProperty);i=function(e){var t="Warning: "+e;"undefined"!=typeof console&&console.error(t);try{throw new Error(t)}catch(e){}}}a.resetWarningCache=function(){"production"!==t.env.NODE_ENV&&(o={})},e.exports=a}).call(t,n(18))},function(e,t,n){"use strict";function a(){}function i(){}var r=n(68);i.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,i,o){if(o!==r){var u=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw u.name="Invariant Violation",u}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:a};return n.PropTypes=n,n}},function(e,t,n){!function(){"use strict";function t(){}function n(e,n){var a,i,r,o,u=E;for(o=arguments.length;o-- >2;)D.push(arguments[o]);for(n&&null!=n.children&&(D.length||D.push(n.children),delete n.children);D.length;)if((i=D.pop())&&void 0!==i.pop)for(o=i.length;o--;)D.push(i[o]);else!0!==i&&!1!==i||(i=null),(r="function"!=typeof e)&&(null==i?i="":"number"==typeof i?i=String(i):"string"!=typeof i&&(r=!1)),r&&a?u[u.length-1]+=i:u===E?u=[i]:u.push(i),a=r;var s=new t;return s.nodeName=e,s.children=u,s.attributes=null==n?void 0:n,s.key=null==n?void 0:n.key,void 0!==N.vnode&&N.vnode(s),s}function a(e,t){for(var n in t)e[n]=t[n];return e}function i(e,t){return n(e.nodeName,a(a({},e.attributes),t),arguments.length>2?[].slice.call(arguments,2):e.children)}function r(e){!e.__d&&(e.__d=!0)&&1==A.push(e)&&(N.debounceRendering||setTimeout)(o)}function o(){var e,t=A;for(A=[];e=t.pop();)e.__d&&j(e)}function u(e,t,n){return"string"==typeof t||"number"==typeof t?void 0!==e.splitText:"string"==typeof t.nodeName?!e._componentConstructor&&s(e,t.nodeName):n||e._componentConstructor===t.nodeName}function s(e,t){return e.__n===t||e.nodeName.toLowerCase()===t.toLowerCase()}function d(e){var t=a({},e.attributes);t.children=e.children;var n=e.nodeName.defaultProps;if(void 0!==n)for(var i in n)void 0===t[i]&&(t[i]=n[i]);return t}function c(e,t){var n=t?document.createElementNS("http://www.w3.org/2000/svg",e):document.createElement(e);return n.__n=e,n}function l(e){e.parentNode&&e.parentNode.removeChild(e)}function m(e,t,n,a,i){if("className"===t&&(t="class"),"key"===t);else if("ref"===t)n&&n(null),a&&a(e);else if("class"!==t||i)if("style"===t){if(a&&"string"!=typeof a&&"string"!=typeof n||(e.style.cssText=a||""),a&&"object"==typeof a){if("string"!=typeof n)for(var r in n)r in a||(e.style[r]="");for(var r in a)e.style[r]="number"==typeof a[r]&&!1===H.test(r)?a[r]+"px":a[r]}}else if("dangerouslySetInnerHTML"===t)a&&(e.innerHTML=a.__html||"");else if("o"==t[0]&&"n"==t[1]){var o=t!==(t=t.replace(/Capture$/,""));t=t.toLowerCase().substring(2),a?n||e.addEventListener(t,h,o):e.removeEventListener(t,h,o),(e.__l||(e.__l={}))[t]=a}else if("list"!==t&&"type"!==t&&!i&&t in e)f(e,t,null==a?"":a),null!=a&&!1!==a||e.removeAttribute(t);else{var u=i&&t!==(t=t.replace(/^xlink\:?/,""));null==a||!1===a?u?e.removeAttributeNS("http://www.w3.org/1999/xlink",t.toLowerCase()):e.removeAttribute(t):"function"!=typeof a&&(u?e.setAttributeNS("http://www.w3.org/1999/xlink",t.toLowerCase(),a):e.setAttribute(t,a))}else e.className=a||""}function f(e,t,n){try{e[t]=n}catch(e){}}function h(e){return this.__l[e.type](N.event&&N.event(e)||e)}function p(){for(var e;e=_.pop();)N.afterMount&&N.afterMount(e),e.componentDidMount&&e.componentDidMount()}function g(e,t,n,a,i,r){O++||(X=null!=i&&void 0!==i.ownerSVGElement,I=null!=e&&!("__preactattr_"in e));var o=v(e,t,n,a,r);return i&&o.parentNode!==i&&i.appendChild(o),--O||(I=!1,r||p()),o}function v(e,t,n,a,i){var r=e,o=X;if(null==t&&(t=""),"string"==typeof t)return e&&void 0!==e.splitText&&e.parentNode&&(!e._component||i)?e.nodeValue!=t&&(e.nodeValue=t):(r=document.createTextNode(t),e&&(e.parentNode&&e.parentNode.replaceChild(r,e),b(e,!0))),r.__preactattr_=!0,r;if("function"==typeof t.nodeName)return T(e,t,n,a);if(X="svg"===t.nodeName||"foreignObject"!==t.nodeName&&X,(!e||!s(e,String(t.nodeName)))&&(r=c(String(t.nodeName),X),e)){for(;e.firstChild;)r.appendChild(e.firstChild);e.parentNode&&e.parentNode.replaceChild(r,e),b(e,!0)}var u=r.firstChild,d=r.__preactattr_||(r.__preactattr_={}),l=t.children;return!I&&l&&1===l.length&&"string"==typeof l[0]&&null!=u&&void 0!==u.splitText&&null==u.nextSibling?u.nodeValue!=l[0]&&(u.nodeValue=l[0]):(l&&l.length||null!=u)&&w(r,l,n,a,I||null!=d.dangerouslySetInnerHTML),M(r,t.attributes,d),X=o,r}function w(e,t,n,a,i){var r,o,s,d,c=e.childNodes,m=[],f={},h=0,p=0,g=c.length,w=0,y=t?t.length:0;if(0!==g)for(var M=0;M<g;M++){var k=c[M],P=k.__preactattr_,W=y&&P?k._component?k._component.__k:P.key:null;null!=W?(h++,f[W]=k):(P||(void 0!==k.splitText?!i||k.nodeValue.trim():i))&&(m[w++]=k)}if(0!==y)for(var M=0;M<y;M++){s=t[M],d=null;var W=s.key;if(null!=W)h&&void 0!==f[W]&&(d=f[W],f[W]=void 0,h--);else if(!d&&p<w)for(r=p;r<w;r++)if(void 0!==m[r]&&u(o=m[r],s,i)){d=o,m[r]=void 0,r===w-1&&w--,r===p&&p++;break}d=v(d,s,n,a),d&&d!==e&&(M>=g?e.appendChild(d):d!==c[M]&&(d===c[M+1]?l(c[M]):e.insertBefore(d,c[M]||null)))}if(h)for(var M in f)void 0!==f[M]&&b(f[M],!1);for(;p<=w;)void 0!==(d=m[w--])&&b(d,!1)}function b(e,t){var n=e._component;n?S(n):(null!=e.__preactattr_&&e.__preactattr_.ref&&e.__preactattr_.ref(null),!1!==t&&null!=e.__preactattr_||l(e),y(e))}function y(e){for(e=e.lastChild;e;){var t=e.previousSibling;b(e,!0),e=t}}function M(e,t,n){var a;for(a in n)t&&null!=t[a]||null==n[a]||m(e,a,n[a],n[a]=void 0,X);for(a in t)"children"===a||"innerHTML"===a||a in n&&t[a]===("value"===a||"checked"===a?e[a]:n[a])||m(e,a,n[a],n[a]=t[a],X)}function k(e){var t=e.constructor.name;(Y[t]||(Y[t]=[])).push(e)}function P(e,t,n){var a,i=Y[e.name];if(e.prototype&&e.prototype.render?(a=new e(t,n),C.call(a,t,n)):(a=new C(t,n),a.constructor=e,a.render=W),i)for(var r=i.length;r--;)if(i[r].constructor===e){a.__b=i[r].__b,i.splice(r,1);break}return a}function W(e,t,n){return this.constructor(e,n)}function x(e,t,n,a,i){e.__x||(e.__x=!0,(e.__r=t.ref)&&delete t.ref,(e.__k=t.key)&&delete t.key,!e.base||i?e.componentWillMount&&e.componentWillMount():e.componentWillReceiveProps&&e.componentWillReceiveProps(t,a),a&&a!==e.context&&(e.__c||(e.__c=e.context),e.context=a),e.__p||(e.__p=e.props),e.props=t,e.__x=!1,0!==n&&(1!==n&&!1===N.syncComponentUpdates&&e.base?r(e):j(e,1,i)),e.__r&&e.__r(e))}function j(e,t,n,i){if(!e.__x){var r,o,u,s=e.props,c=e.state,l=e.context,m=e.__p||s,f=e.__s||c,h=e.__c||l,v=e.base,w=e.__b,y=v||w,M=e._component,k=!1;if(v&&(e.props=m,e.state=f,e.context=h,2!==t&&e.shouldComponentUpdate&&!1===e.shouldComponentUpdate(s,c,l)?k=!0:e.componentWillUpdate&&e.componentWillUpdate(s,c,l),e.props=s,e.state=c,e.context=l),e.__p=e.__s=e.__c=e.__b=null,e.__d=!1,!k){r=e.render(s,c,l),e.getChildContext&&(l=a(a({},l),e.getChildContext()));var W,T,C=r&&r.nodeName;if("function"==typeof C){var z=d(r);o=M,o&&o.constructor===C&&z.key==o.__k?x(o,z,1,l,!1):(W=o,e._component=o=P(C,z,l),o.__b=o.__b||w,o.__u=e,x(o,z,0,l,!1),j(o,1,n,!0)),T=o.base}else u=y,W=M,W&&(u=e._component=null),(y||1===t)&&(u&&(u._component=null),T=g(u,r,l,n||!v,y&&y.parentNode,!0));if(y&&T!==y&&o!==M){var D=y.parentNode;D&&T!==D&&(D.replaceChild(T,y),W||(y._component=null,b(y,!1)))}if(W&&S(W),e.base=T,T&&!i){for(var E=e,H=e;H=H.__u;)(E=H).base=T;T._component=E,T._componentConstructor=E.constructor}}if(!v||n?_.unshift(e):k||(p(),e.componentDidUpdate&&e.componentDidUpdate(m,f,h),N.afterUpdate&&N.afterUpdate(e)),null!=e.__h)for(;e.__h.length;)e.__h.pop().call(e);O||i||p()}}function T(e,t,n,a){for(var i=e&&e._component,r=i,o=e,u=i&&e._componentConstructor===t.nodeName,s=u,c=d(t);i&&!s&&(i=i.__u);)s=i.constructor===t.nodeName;return i&&s&&(!a||i._component)?(x(i,c,3,n,a),e=i.base):(r&&!u&&(S(r),e=o=null),i=P(t.nodeName,c,n),e&&!i.__b&&(i.__b=e,o=null),x(i,c,1,n,a),e=i.base,o&&e!==o&&(o._component=null,b(o,!1))),e}function S(e){N.beforeUnmount&&N.beforeUnmount(e);var t=e.base;e.__x=!0,e.componentWillUnmount&&e.componentWillUnmount(),e.base=null;var n=e._component;n?S(n):t&&(t.__preactattr_&&t.__preactattr_.ref&&t.__preactattr_.ref(null),e.__b=t,l(t),k(e),y(t)),e.__r&&e.__r(null)}function C(e,t){this.__d=!0,this.context=t,this.props=e,this.state=this.state||{}}function z(e,t,n){return g(n,e,{},!1,t,!1)}var N={},D=[],E=[],H=/acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i,A=[],_=[],O=0,X=!1,I=!1,Y={};a(C.prototype,{setState:function(e,t){var n=this.state;this.__s||(this.__s=a({},n)),a(n,"function"==typeof e?e(n,this.props):e),t&&(this.__h=this.__h||[]).push(t),r(this)},forceUpdate:function(e){e&&(this.__h=this.__h||[]).push(e),j(this,2)},render:function(){}});var F={h:n,createElement:n,cloneElement:i,Component:C,render:z,rerender:o,options:N};e.exports=F}()},function(e,t,n){"use strict";e.exports=n(204).polyfill()},function(e,t,n){(function(t,a){/*!
* @overview es6-promise - a tiny implementation of Promises/A+.
* @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)
* @license Licensed under MIT license
* See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE
* @version 4.1.1
*/
-!function(t,n){e.exports=n()}(0,function(){"use strict";function e(e){var t=typeof e;return null!==e&&("object"===t||"function"===t)}function o(e){return"function"==typeof e}function i(e){W=e}function a(e){V=e}function u(){return void 0!==U?function(){U(c)}:s()}function s(){var e=setTimeout;return function(){return e(c,1)}}function c(){for(var e=0;e<$;e+=2){(0,Z[e])(Z[e+1]),Z[e]=void 0,Z[e+1]=void 0}$=0}function l(e,t){var n=arguments,r=this,o=new this.constructor(p);void 0===o[ee]&&T(o);var i=r._state;return i?function(){var e=n[i-1];V(function(){return k(i,o,e,r._result)})}():E(r,o,e,t),o}function f(e){var t=this;if(e&&"object"==typeof e&&e.constructor===t)return e;var n=new t(p);return w(n,e),n}function p(){}function d(){return new TypeError("You cannot resolve a promise with itself")}function h(){return new TypeError("A promises callback cannot return that same promise.")}function m(e){try{return e.then}catch(e){return oe.error=e,oe}}function v(e,t,n,r){try{e.call(t,n,r)}catch(e){return e}}function y(e,t,n){V(function(e){var r=!1,o=v(n,t,function(n){r||(r=!0,t!==n?w(e,n):x(e,n))},function(t){r||(r=!0,S(e,t))},"Settle: "+(e._label||" unknown promise"));!r&&o&&(r=!0,S(e,o))},e)}function g(e,t){t._state===ne?x(e,t._result):t._state===re?S(e,t._result):E(t,void 0,function(t){return w(e,t)},function(t){return S(e,t)})}function b(e,t,n){t.constructor===e.constructor&&n===l&&t.constructor.resolve===f?g(e,t):n===oe?(S(e,oe.error),oe.error=null):void 0===n?x(e,t):o(n)?y(e,t,n):x(e,t)}function w(t,n){t===n?S(t,d()):e(n)?b(t,n,m(n)):x(t,n)}function _(e){e._onerror&&e._onerror(e._result),C(e)}function x(e,t){e._state===te&&(e._result=t,e._state=ne,0!==e._subscribers.length&&V(C,e))}function S(e,t){e._state===te&&(e._state=re,e._result=t,V(_,e))}function E(e,t,n,r){var o=e._subscribers,i=o.length;e._onerror=null,o[i]=t,o[i+ne]=n,o[i+re]=r,0===i&&e._state&&V(C,e)}function C(e){var t=e._subscribers,n=e._state;if(0!==t.length){for(var r=void 0,o=void 0,i=e._result,a=0;a<t.length;a+=3)r=t[a],o=t[a+n],r?k(n,r,o,i):o(i);e._subscribers.length=0}}function N(){this.error=null}function O(e,t){try{return e(t)}catch(e){return ie.error=e,ie}}function k(e,t,n,r){var i=o(n),a=void 0,u=void 0,s=void 0,c=void 0;if(i){if(a=O(n,r),a===ie?(c=!0,u=a.error,a.error=null):s=!0,t===a)return void S(t,h())}else a=r,s=!0;t._state!==te||(i&&s?w(t,a):c?S(t,u):e===ne?x(t,a):e===re&&S(t,a))}function M(e,t){try{t(function(t){w(e,t)},function(t){S(e,t)})}catch(t){S(e,t)}}function P(){return ae++}function T(e){e[ee]=ae++,e._state=void 0,e._result=void 0,e._subscribers=[]}function A(e,t){this._instanceConstructor=e,this.promise=new e(p),this.promise[ee]||T(this.promise),H(t)?(this.length=t.length,this._remaining=t.length,this._result=new Array(this.length),0===this.length?x(this.promise,this._result):(this.length=this.length||0,this._enumerate(t),0===this._remaining&&x(this.promise,this._result))):S(this.promise,j())}function j(){return new Error("Array Methods must be provided an Array")}function D(e){return new A(this,e).promise}function I(e){var t=this;return new t(H(e)?function(n,r){for(var o=e.length,i=0;i<o;i++)t.resolve(e[i]).then(n,r)}:function(e,t){return t(new TypeError("You must pass an array to race."))})}function L(e){var t=this,n=new t(p);return S(n,e),n}function R(){throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")}function F(){throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.")}function G(e){this[ee]=P(),this._result=this._state=void 0,this._subscribers=[],p!==e&&("function"!=typeof e&&R(),this instanceof G?M(this,e):F())}function B(){var e=void 0;if(void 0!==r)e=r;else if("undefined"!=typeof self)e=self;else try{e=Function("return this")()}catch(e){throw new Error("polyfill failed because global object is unavailable in this environment")}var t=e.Promise;if(t){var n=null;try{n=Object.prototype.toString.call(t.resolve())}catch(e){}if("[object Promise]"===n&&!t.cast)return}e.Promise=G}var z=void 0;z=Array.isArray?Array.isArray:function(e){return"[object Array]"===Object.prototype.toString.call(e)};var H=z,$=0,U=void 0,W=void 0,V=function(e,t){Z[$]=e,Z[$+1]=t,2===($+=2)&&(W?W(c):Q())},X="undefined"!=typeof window?window:void 0,Y=X||{},q=Y.MutationObserver||Y.WebKitMutationObserver,K="undefined"==typeof self&&void 0!==t&&"[object process]"==={}.toString.call(t),J="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel,Z=new Array(1e3),Q=void 0;Q=K?function(){return function(){return t.nextTick(c)}}():q?function(){var e=0,t=new q(c),n=document.createTextNode("");return t.observe(n,{characterData:!0}),function(){n.data=e=++e%2}}():J?function(){var e=new MessageChannel;return e.port1.onmessage=c,function(){return e.port2.postMessage(0)}}():void 0===X?function(){try{var e=n(97);return U=e.runOnLoop||e.runOnContext,u()}catch(e){return s()}}():s();var ee=Math.random().toString(36).substring(16),te=void 0,ne=1,re=2,oe=new N,ie=new N,ae=0;return A.prototype._enumerate=function(e){for(var t=0;this._state===te&&t<e.length;t++)this._eachEntry(e[t],t)},A.prototype._eachEntry=function(e,t){var n=this._instanceConstructor,r=n.resolve;if(r===f){var o=m(e);if(o===l&&e._state!==te)this._settledAt(e._state,t,e._result);else if("function"!=typeof o)this._remaining--,this._result[t]=e;else if(n===G){var i=new n(p);b(i,e,o),this._willSettleAt(i,t)}else this._willSettleAt(new n(function(t){return t(e)}),t)}else this._willSettleAt(r(e),t)},A.prototype._settledAt=function(e,t,n){var r=this.promise;r._state===te&&(this._remaining--,e===re?S(r,n):this._result[t]=n),0===this._remaining&&x(r,this._result)},A.prototype._willSettleAt=function(e,t){var n=this;E(e,void 0,function(e){return n._settledAt(ne,t,e)},function(e){return n._settledAt(re,t,e)})},G.all=D,G.race=I,G.resolve=f,G.reject=L,G._setScheduler=i,G._setAsap=a,G._asap=V,G.prototype={constructor:G,then:l,catch:function(e){return this.then(null,e)}},G.polyfill=B,G.Promise=G,G})}).call(t,n(9),n(96))},function(e,t){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t){},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}var o=n(99),i=r(o),a=n(119),u=r(a),s=n(64),c=r(s),l=n(29),f=r(l),p=n(30),d=r(p),h=n(66),m=r(h),v=n(70),y=r(v),g=n(5),b=r(g),w=n(143),_=r(w),x=n(150),S=r(x),E=n(151),C=r(E);n(160);var N=n(71),O=n(80),k=r(O),M=n(188),P=r(M),T=n(189),A=r(T),j=n(190),D=r(j),I=n(81),L=r(I),R=n(218),F=n(219),G=r(F),B=function(e){function t(e){(0,f.default)(this,t);var n=(0,m.default)(this,(t.__proto__||(0,c.default)(t)).call(this,e));n.state={user:null,issue:null,comments:[],localComments:[],comment:"",page:1,pagerDirection:"last",cursor:null,previewHtml:"",isNoInit:!1,isIniting:!0,isCreating:!1,isLoading:!1,isLoadMore:!1,isLoadOver:!1,isIssueCreating:!1,isPopupVisible:!1,isInputFocused:!1,isPreview:!1,isOccurError:!1,errorMsg:""},n.getCommentsV3=function(e){var t=n.options,r=t.clientID,o=t.clientSecret,i=t.perPage,a=n.state.page;return n.getIssue().then(function(e){if(e)return N.axiosGithub.get(e.comments_url,{headers:{Accept:"application/vnd.github.v3.full+json"},auth:{username:r,password:o},params:{per_page:i,page:a}}).then(function(e){var t=n.state,r=t.comments,o=t.issue,u=!1,s=r.concat(e.data);return(s.length>=o.comments||e.data.length<i)&&(u=!0),n.setState({comments:s,isLoadOver:u,page:a+1}),s})})},n.getRef=function(e){n.publicBtnEL=e},n.reply=function(e){return function(){var t=n.state.comment,r=e.body,o=r.split("\n");o.unshift("@"+e.user.login),o=o.map(function(e){return"> "+e}),o.push(""),o.push(""),t&&o.unshift(""),n.setState({comment:t+o.join("\n")},function(){S.default.update(n.commentEL),n.commentEL.focus()})}},n.handlePopup=function(e){e.preventDefault(),e.stopPropagation();var t=!n.state.isPopupVisible,r=function e(t){(0,N.hasClassInParent)(t.target,"gt-user","gt-popup")||(window.document.removeEventListener("click",e),n.setState({isPopupVisible:!1}))};n.setState({isPopupVisible:t}),t?window.document.addEventListener("click",r):window.document.removeEventListener("click",r)},n.handleLogin=function(){var e=n.state.comment;window.localStorage.setItem(R.GT_COMMENT,encodeURIComponent(e)),window.location.href=n.loginLink},n.handleIssueCreate=function(){n.setState({isIssueCreating:!0}),n.createIssue().then(function(e){return n.setState({isIssueCreating:!1,isOccurError:!1}),n.getComments(e)}).catch(function(e){n.setState({isIssueCreating:!1,isOccurError:!0,errorMsg:(0,N.formatErrorMsg)(e)})}).then(function(e){e&&n.setState({isNoInit:!1})})},n.handleCommentCreate=function(e){if(!n.state.comment.length)return e&&e.preventDefault(),void n.commentEL.focus();n.setState(function(e){if(!e.isCreating)return n.createComment().then(function(){return n.setState({isCreating:!1,isOccurError:!1})}).catch(function(e){n.setState({isCreating:!1,isOccurError:!0,errorMsg:(0,N.formatErrorMsg)(e)})}),{isCreating:!0}})},n.handleCommentPreview=function(e){n.setState({isPreview:!n.state.isPreview}),N.axiosGithub.post("/markdown",{text:n.state.comment},{headers:n.accessToken&&{Authorization:"token "+n.accessToken}}).then(function(e){n.setState({previewHtml:e.data})}).catch(function(e){n.setState({isOccurError:!0,errorMsg:(0,N.formatErrorMsg)(e)})})},n.handleCommentLoad=function(){var e=n.state,t=e.issue;e.isLoadMore||(n.setState({isLoadMore:!0}),n.getComments(t).then(function(){return n.setState({isLoadMore:!1})}))},n.handleCommentChange=function(e){return n.setState({comment:e.target.value})},n.handleLogout=function(){n.logout(),window.location.reload()},n.handleCommentFocus=function(e){if(!n.options.distractionFreeMode)return e.preventDefault();n.setState({isInputFocused:!0})},n.handleCommentBlur=function(e){if(!n.options.distractionFreeMode)return e.preventDefault();n.setState({isInputFocused:!1})},n.handleSort=function(e){return function(t){n.setState({pagerDirection:e})}},n.handleCommentKeyDown=function(e){n.options.enableHotKey&&(e.metaKey||e.ctrlKey)&&13===e.keyCode&&(n.publicBtnEL&&n.publicBtnEL.focus(),n.handleCommentCreate())},n.options=(0,u.default)({},{id:window.location.href,number:-1,labels:["Gitalk"],title:window.document.title,body:"",language:window.navigator.language||window.navigator.userLanguage,perPage:10,pagerDirection:"last",createIssueManually:!1,distractionFreeMode:!1,proxy:"https://cors-anywhere.herokuapp.com/https://github.com/login/oauth/access_token",flipMoveOptions:{staggerDelayBy:150,appearAnimation:"accordionVertical",enterAnimation:"accordionVertical",leaveAnimation:"accordionVertical"},enableHotKey:!0,url:window.location.href,defaultAuthor:{avatarUrl:"//avatars1.githubusercontent.com/u/29697133?s=50",login:"null",url:""},updateCountCallback:null},e.options),n.state.pagerDirection=n.options.pagerDirection;var r=window.localStorage.getItem(R.GT_COMMENT);r&&(n.state.comment=decodeURIComponent(r),window.localStorage.removeItem(R.GT_COMMENT));var o=(0,N.queryParse)();if(o.code){var i=o.code;delete o.code;var a=""+window.location.origin+window.location.pathname+(0,N.queryStringify)(o)+window.location.hash;history.replaceState(null,null,a),n.options=(0,u.default)({},n.options,{url:a,id:a},e.options),N.axiosJSON.post(n.options.proxy,{code:i,client_id:n.options.clientID,client_secret:n.options.clientSecret}).then(function(e){e.data&&e.data.access_token?(n.accessToken=e.data.access_token,n.getInit().then(function(){return n.setState({isIniting:!1})}).catch(function(e){console.log("err:",e),n.setState({isIniting:!1,isOccurError:!0,errorMsg:(0,N.formatErrorMsg)(e)})})):(console.log("res.data err:",e.data),n.setState({isOccurError:!0,errorMsg:(0,N.formatErrorMsg)(new Error("no access token"))}))}).catch(function(e){console.log("err: ",e),n.setState({isOccurError:!0,errorMsg:(0,N.formatErrorMsg)(e)})})}else n.getInit().then(function(){return n.setState({isIniting:!1})}).catch(function(e){console.log("err:",e),n.setState({isIniting:!1,isOccurError:!0,errorMsg:(0,N.formatErrorMsg)(e)})});return n.i18n=(0,C.default)(n.options.language),n}return(0,y.default)(t,e),(0,d.default)(t,[{key:"componentDidUpdate",value:function(){this.commentEL&&(0,S.default)(this.commentEL)}},{key:"getInit",value:function(){var e=this;return this.getUserInfo().then(function(){return e.getIssue()}).then(function(t){return e.getComments(t)})}},{key:"getUserInfo",value:function(){var e=this;return N.axiosGithub.get("/user",{headers:{Authorization:"token "+this.accessToken}}).then(function(t){e.setState({user:t.data})}).catch(function(t){e.logout()})}},{key:"getIssueById",value:function(){var e=this,t=this.options,n=t.owner,r=t.repo,o=t.number,a=t.clientID,u=t.clientSecret,s="/repos/"+n+"/"+r+"/issues/"+o;return new i.default(function(t,n){N.axiosGithub.get(s,{auth:{username:a,password:u},params:{t:Date.now()}}).then(function(n){var r=null;n&&n.data&&n.data.number===o&&(r=n.data,e.setState({issue:r,isNoInit:!1})),t(r)}).catch(function(e){404===e.response.status&&t(null),n(e)})})}},{key:"getIssueByLabels",value:function(){var e=this,t=this.options,n=t.owner,r=t.repo,o=t.id,i=t.labels,a=t.clientID,u=t.clientSecret;return N.axiosGithub.get("/repos/"+n+"/"+r+"/issues",{auth:{username:a,password:u},params:{labels:i.concat(o).join(","),t:Date.now()}}).then(function(t){var n=e.options.createIssueManually,r=!1,o=null;if(t&&t.data&&t.data.length)o=t.data[0];else{if(!n&&e.isAdmin)return e.createIssue();r=!0}return e.setState({issue:o,isNoInit:r}),o})}},{key:"getIssue",value:function(){var e=this,t=this.options.number,n=this.state.issue;return n?(this.setState({isNoInit:!1}),i.default.resolve(n)):"number"==typeof t&&t>0?this.getIssueById().then(function(t){return t||e.getIssueByLabels()}):this.getIssueByLabels()}},{key:"createIssue",value:function(){var e=this,t=this.options,n=t.owner,r=t.repo,o=t.title,i=t.body,a=t.id,u=t.labels,s=t.url;return N.axiosGithub.post("/repos/"+n+"/"+r+"/issues",{title:o,labels:u.concat(a),body:i||s+" \n\n "+((0,N.getMetaContent)("description")||(0,N.getMetaContent)("description","og:description")||"")},{headers:{Authorization:"token "+this.accessToken}}).then(function(t){return e.setState({issue:t.data}),t.data})}},{key:"getComments",value:function(e){if(e)return this.accessToken?G.default.call(this,e):this.getCommentsV3(e)}},{key:"createComment",value:function(){var e=this,t=this.state,n=t.comment,r=t.localComments,o=t.comments;return this.getIssue().then(function(t){return N.axiosGithub.post(t.comments_url,{body:n},{headers:{Accept:"application/vnd.github.v3.full+json",Authorization:"token "+e.accessToken}})}).then(function(t){e.setState({comment:"",comments:o.concat(t.data),localComments:r.concat(t.data)})})}},{key:"logout",value:function(){this.setState({user:null}),window.localStorage.removeItem(R.GT_ACCESS_TOKEN)}},{key:"like",value:function(e){var t=this,n=this.options,r=n.owner,o=n.repo,i=this.state.user,a=this.state.comments;N.axiosGithub.post("/repos/"+r+"/"+o+"/issues/comments/"+e.id+"/reactions",{content:"heart"},{headers:{Authorization:"token "+this.accessToken,Accept:"application/vnd.github.squirrel-girl-preview"}}).then(function(n){a=a.map(function(t){return t.id===e.id&&(t.reactions?~t.reactions.nodes.findIndex(function(e){return e.user.login===i.login})||(t.reactions.totalCount+=1):(t.reactions={nodes:[]},t.reactions.totalCount=1),t.reactions.nodes.push(n.data),t.reactions.viewerHasReacted=!0),t}),t.setState({comments:a})})}},{key:"unLike",value:function(e){var t=this,n=this.state.user,r=this.state.comments;N.axiosGithub.post("/graphql",function(e){return{operationName:"RemoveReaction",query:'\n mutation RemoveReaction{\n removeReaction (input:{\n subjectId: "'+e+'",\n content: HEART\n }) {\n reaction {\n content\n }\n }\n }\n '}}(e.gId),{headers:{Authorization:"bearer "+this.accessToken}}).then(function(o){o.data&&(r=r.map(function(t){if(t.id===e.id){var r=t.reactions.nodes.findIndex(function(e){return e.user.login===n.login});~r&&(t.reactions.totalCount-=1,t.reactions.nodes.splice(r,1)),t.reactions.viewerHasReacted=!1}return t}),t.setState({comments:r}))})}},{key:"initing",value:function(){return b.default.createElement("div",{className:"gt-initing"},b.default.createElement("i",{className:"gt-loader"}),b.default.createElement("p",{className:"gt-initing-text"},this.i18n.t("init")))}},{key:"noInit",value:function(){var e=this.state,t=e.user,n=e.isIssueCreating,r=this.options,o=r.owner,i=r.repo,a=r.admin;return b.default.createElement("div",{className:"gt-no-init",key:"no-init"},b.default.createElement("p",{dangerouslySetInnerHTML:{__html:this.i18n.t("no-found-related",{link:'<a href="https://github.com/'+o+"/"+i+'/issues">Issues</a>'})}}),b.default.createElement("p",null,this.i18n.t("please-contact",{user:[].concat(a).map(function(e){return"@"+e}).join(" ")})),this.isAdmin?b.default.createElement("p",null,b.default.createElement(P.default,{onClick:this.handleIssueCreate,isLoading:n,text:this.i18n.t("init-issue")})):null,!t&&b.default.createElement(P.default,{className:"gt-btn-login",onClick:this.handleLogin,text:this.i18n.t("login-with-github")}))}},{key:"handleImageErrored",value:function(e){e.target.src="https://cdn.jsdelivr.net/npm/gitalk@1/src/assets/icon/github.svg"}},{key:"header",value:function(){var e=this,t=this.state,n=t.user,r=t.comment,o=t.isCreating,i=t.previewHtml,a=t.isPreview;return b.default.createElement("div",{className:"gt-header",key:"header"},n?b.default.createElement(k.default,{className:"gt-header-avatar",src:n.avatar_url,alt:n.login,onError:this.handleImageErrored.bind(this)}):b.default.createElement("a",{className:"gt-avatar-github",onMouseDown:this.handleLogin},b.default.createElement(L.default,{className:"gt-ico-github",name:"github"})),b.default.createElement("div",{className:"gt-header-comment"},b.default.createElement("textarea",{ref:function(t){e.commentEL=t},className:"gt-header-textarea "+(a?"hide":""),value:r,onChange:this.handleCommentChange,onFocus:this.handleCommentFocus,onBlur:this.handleCommentBlur,onKeyDown:this.handleCommentKeyDown,placeholder:this.i18n.t("leave-a-comment")}),b.default.createElement("div",{className:"gt-header-preview markdown-body "+(a?"":"hide"),dangerouslySetInnerHTML:{__html:i}}),b.default.createElement("div",{className:"gt-header-controls"},b.default.createElement("a",{className:"gt-header-controls-tip",href:"https://guides.github.com/features/mastering-markdown/",target:"_blank"},b.default.createElement(L.default,{className:"gt-ico-tip",name:"tip",text:this.i18n.t("support-markdown")})),n&&b.default.createElement(P.default,{getRef:this.getRef,className:"gt-btn-public",onMouseDown:this.handleCommentCreate,text:this.i18n.t("comment"),isLoading:o}),b.default.createElement(P.default,{className:"gt-btn-preview",onMouseDown:this.handleCommentPreview,text:a?this.i18n.t("edit"):this.i18n.t("preview")}),!n&&b.default.createElement(P.default,{className:"gt-btn-login",onMouseDown:this.handleLogin,text:this.i18n.t("login-with-github")}))))}},{key:"comments",value:function(){var e=this,t=this.state,n=t.user,r=t.comments,o=t.isLoadOver,i=t.isLoadMore,a=t.pagerDirection,u=this.options,s=u.language,c=u.flipMoveOptions,l=u.admin,f=r.concat([]);return"last"===a&&this.accessToken&&f.reverse(),b.default.createElement("div",{className:"gt-comments",key:"comments"},b.default.createElement(_.default,c,f.map(function(t){return b.default.createElement(D.default,{comment:t,key:t.id,user:n,language:s,commentedText:e.i18n.t("commented"),admin:l,replyCallback:e.reply(t),likeCallback:t.reactions&&t.reactions.viewerHasReacted?e.unLike.bind(e,t):e.like.bind(e,t)})})),!f.length&&b.default.createElement("p",{className:"gt-comments-null"},this.i18n.t("first-comment-person")),!o&&f.length?b.default.createElement("div",{className:"gt-comments-controls"},b.default.createElement(P.default,{className:"gt-btn-loadmore",onClick:this.handleCommentLoad,isLoading:i,text:this.i18n.t("load-more")})):null)}},{key:"meta",value:function(){var e=this.state,t=e.user,n=e.issue,r=e.isPopupVisible,o=e.pagerDirection,i=e.localComments,a=(n&&n.comments)+i.length,u="last"===o,s=this.options.updateCountCallback;if(s&&"[object Function]"==={}.toString.call(s))try{s(a)}catch(e){console.log("An error occurred executing the updateCountCallback:",e)}return b.default.createElement("div",{className:"gt-meta",key:"meta"},b.default.createElement("span",{className:"gt-counts",dangerouslySetInnerHTML:{__html:this.i18n.t("counts",{counts:'<a class="gt-link gt-link-counts" href="'+(n&&n.html_url)+'" target="_blank">'+a+"</a>",smart_count:a})}}),r&&b.default.createElement("div",{className:"gt-popup"},t?b.default.createElement(A.default,{className:"gt-action-sortasc"+(u?"":" is--active"),onClick:this.handleSort("first"),text:this.i18n.t("sort-asc")}):null,t?b.default.createElement(A.default,{className:"gt-action-sortdesc"+(u?" is--active":""),onClick:this.handleSort("last"),text:this.i18n.t("sort-desc")}):null,t?b.default.createElement(A.default,{className:"gt-action-logout",onClick:this.handleLogout,text:this.i18n.t("logout")}):b.default.createElement("a",{className:"gt-action gt-action-login",onMouseDown:this.handleLogin},this.i18n.t("login-with-github")),b.default.createElement("div",{className:"gt-copyright"},b.default.createElement("a",{className:"gt-link gt-link-project",href:"https://github.com/gitalk/gitalk",target:"_blank"},"Gitalk"),b.default.createElement("span",{className:"gt-version"},R.GT_VERSION))),b.default.createElement("div",{className:"gt-user"},t?b.default.createElement("div",{className:r?"gt-user-inner is--poping":"gt-user-inner",onClick:this.handlePopup},b.default.createElement("span",{className:"gt-user-name"},t.login),b.default.createElement(L.default,{className:"gt-ico-arrdown",name:"arrow_down"})):b.default.createElement("div",{className:r?"gt-user-inner is--poping":"gt-user-inner",onClick:this.handlePopup},b.default.createElement("span",{className:"gt-user-name"},this.i18n.t("anonymous")),b.default.createElement(L.default,{className:"gt-ico-arrdown",name:"arrow_down"}))))}},{key:"render",value:function(){var e=this.state,t=e.isIniting,n=e.isNoInit,r=e.isOccurError,o=e.errorMsg,i=e.isInputFocused;return b.default.createElement("div",{className:"gt-container"+(i?" gt-input-focused":"")},t&&this.initing(),!t&&(n?[]:[this.meta()]),r&&b.default.createElement("div",{className:"gt-error"},o),!t&&(n?[this.noInit()]:[this.header(),this.comments()]))}},{key:"accessToken",get:function(){return this._accessToke||window.localStorage.getItem(R.GT_ACCESS_TOKEN)},set:function(e){window.localStorage.setItem(R.GT_ACCESS_TOKEN,e),this._accessToken=e}},{key:"loginLink",get:function(){var e=this.options.clientID,t={client_id:e,redirect_uri:window.location.href,scope:"public_repo"};return"https://github.com/login/oauth/authorize?"+(0,N.queryStringify)(t)}},{key:"isAdmin",get:function(){var e=this.options.admin,t=this.state.user;return t&&~[].concat(e).map(function(e){return e.toLowerCase()}).indexOf(t.login.toLowerCase())}}]),t}(g.Component);e.exports=B},function(e,t,n){e.exports={default:n(100),__esModule:!0}},function(e,t,n){n(50),n(20),n(27),n(109),n(117),n(118),e.exports=n(0).Promise},function(e,t,n){var r=n(34),o=n(35);e.exports=function(e){return function(t,n){var i,a,u=String(o(t)),s=r(n),c=u.length;return s<0||s>=c?e?"":void 0:(i=u.charCodeAt(s),i<55296||i>56319||s+1===c||(a=u.charCodeAt(s+1))<56320||a>57343?e?u.charAt(s):i:e?u.slice(s,s+2):a-56320+(i-55296<<10)+65536)}}},function(e,t,n){"use strict";var r=n(36),o=n(19),i=n(26),a={};n(11)(a,n(2)("iterator"),function(){return this}),e.exports=function(e,t,n){e.prototype=r(a,{next:o(1,n)}),i(e,t+" Iterator")}},function(e,t,n){var r=n(7),o=n(6),i=n(22);e.exports=n(8)?Object.defineProperties:function(e,t){o(e);for(var n,a=i(t),u=a.length,s=0;u>s;)r.f(e,n=a[s++],t[n]);return e}},function(e,t,n){var r=n(16),o=n(37),i=n(105);e.exports=function(e){return function(t,n,a){var u,s=r(t),c=o(s.length),l=i(a,c);if(e&&n!=n){for(;c>l;)if((u=s[l++])!=u)return!0}else for(;c>l;l++)if((e||l in s)&&s[l]===n)return e||l||0;return!e&&-1}}},function(e,t,n){var r=n(34),o=Math.max,i=Math.min;e.exports=function(e,t){return e=r(e),e<0?o(e+t,0):i(e,t)}},function(e,t,n){"use strict";var r=n(107),o=n(108),i=n(15),a=n(16);e.exports=n(51)(Array,"Array",function(e,t){this._t=a(e),this._i=0,this._k=t},function(){var e=this._t,t=this._k,n=this._i++;return!e||n>=e.length?(this._t=void 0,o(1)):"keys"==t?o(0,n):"values"==t?o(0,e[n]):o(0,[n,e[n]])},"values"),i.Arguments=i.Array,r("keys"),r("values"),r("entries")},function(e,t){e.exports=function(){}},function(e,t){e.exports=function(e,t){return{value:t,done:!!e}}},function(e,t,n){"use strict";var r,o,i,a,u=n(21),s=n(1),c=n(13),l=n(41),f=n(4),p=n(10),d=n(24),h=n(110),m=n(111),v=n(59),y=n(60).set,g=n(113)(),b=n(43),w=n(61),_=n(114),x=n(62),S=s.TypeError,E=s.process,C=E&&E.versions,N=C&&C.v8||"",O=s.Promise,k="process"==l(E),M=function(){},P=o=b.f,T=!!function(){try{var e=O.resolve(1),t=(e.constructor={})[n(2)("species")]=function(e){e(M,M)};return(k||"function"==typeof PromiseRejectionEvent)&&e.then(M)instanceof t&&0!==N.indexOf("6.6")&&-1===_.indexOf("Chrome/66")}catch(e){}}(),A=function(e){var t;return!(!p(e)||"function"!=typeof(t=e.then))&&t},j=function(e,t){if(!e._n){e._n=!0;var n=e._c;g(function(){for(var r=e._v,o=1==e._s,i=0;n.length>i;)!function(t){var n,i,a,u=o?t.ok:t.fail,s=t.resolve,c=t.reject,l=t.domain;try{u?(o||(2==e._h&&L(e),e._h=1),!0===u?n=r:(l&&l.enter(),n=u(r),l&&(l.exit(),a=!0)),n===t.promise?c(S("Promise-chain cycle")):(i=A(n))?i.call(n,s,c):s(n)):c(r)}catch(e){l&&!a&&l.exit(),c(e)}}(n[i++]);e._c=[],e._n=!1,t&&!e._h&&D(e)})}},D=function(e){y.call(s,function(){var t,n,r,o=e._v,i=I(e);if(i&&(t=w(function(){k?E.emit("unhandledRejection",o,e):(n=s.onunhandledrejection)?n({promise:e,reason:o}):(r=s.console)&&r.error&&r.error("Unhandled promise rejection",o)}),e._h=k||I(e)?2:1),e._a=void 0,i&&t.e)throw t.v})},I=function(e){return 1!==e._h&&0===(e._a||e._c).length},L=function(e){y.call(s,function(){var t;k?E.emit("rejectionHandled",e):(t=s.onrejectionhandled)&&t({promise:e,reason:e._v})})},R=function(e){var t=this;t._d||(t._d=!0,t=t._w||t,t._v=e,t._s=2,t._a||(t._a=t._c.slice()),j(t,!0))},F=function(e){var t,n=this;if(!n._d){n._d=!0,n=n._w||n;try{if(n===e)throw S("Promise can't be resolved itself");(t=A(e))?g(function(){var r={_w:n,_d:!1};try{t.call(e,c(F,r,1),c(R,r,1))}catch(e){R.call(r,e)}}):(n._v=e,n._s=1,j(n,!1))}catch(e){R.call({_w:n,_d:!1},e)}}};T||(O=function(e){h(this,O,"Promise","_h"),d(e),r.call(this);try{e(c(F,this,1),c(R,this,1))}catch(e){R.call(this,e)}},r=function(e){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1},r.prototype=n(115)(O.prototype,{then:function(e,t){var n=P(v(this,O));return n.ok="function"!=typeof e||e,n.fail="function"==typeof t&&t,n.domain=k?E.domain:void 0,this._c.push(n),this._a&&this._a.push(n),this._s&&j(this,!1),n.promise},catch:function(e){return this.then(void 0,e)}}),i=function(){var e=new r;this.promise=e,this.resolve=c(F,e,1),this.reject=c(R,e,1)},b.f=P=function(e){return e===O||e===a?new i(e):o(e)}),f(f.G+f.W+f.F*!T,{Promise:O}),n(26)(O,"Promise"),n(116)("Promise"),a=n(0).Promise,f(f.S+f.F*!T,"Promise",{reject:function(e){var t=P(this);return(0,t.reject)(e),t.promise}}),f(f.S+f.F*(u||!T),"Promise",{resolve:function(e){return x(u&&this===a?O:this,e)}}),f(f.S+f.F*!(T&&n(63)(function(e){O.all(e).catch(M)})),"Promise",{all:function(e){var t=this,n=P(t),r=n.resolve,o=n.reject,i=w(function(){var n=[],i=0,a=1;m(e,!1,function(e){var u=i++,s=!1;n.push(void 0),a++,t.resolve(e).then(function(e){s||(s=!0,n[u]=e,--a||r(n))},o)}),--a||r(n)});return i.e&&o(i.v),n.promise},race:function(e){var t=this,n=P(t),r=n.reject,o=w(function(){m(e,!1,function(e){t.resolve(e).then(n.resolve,r)})});return o.e&&r(o.v),n.promise}})},function(e,t){e.exports=function(e,t,n,r){if(!(e instanceof t)||void 0!==r&&r in e)throw TypeError(n+": incorrect invocation!");return e}},function(e,t,n){var r=n(13),o=n(57),i=n(58),a=n(6),u=n(37),s=n(42),c={},l={},t=e.exports=function(e,t,n,f,p){var d,h,m,v,y=p?function(){return e}:s(e),g=r(n,f,t?2:1),b=0;if("function"!=typeof y)throw TypeError(e+" is not iterable!");if(i(y)){for(d=u(e.length);d>b;b++)if((v=t?g(a(h=e[b])[0],h[1]):g(e[b]))===c||v===l)return v}else for(m=y.call(e);!(h=m.next()).done;)if((v=o(m,g,h.value,t))===c||v===l)return v};t.BREAK=c,t.RETURN=l},function(e,t){e.exports=function(e,t,n){var r=void 0===n;switch(t.length){case 0:return r?e():e.call(n);case 1:return r?e(t[0]):e.call(n,t[0]);case 2:return r?e(t[0],t[1]):e.call(n,t[0],t[1]);case 3:return r?e(t[0],t[1],t[2]):e.call(n,t[0],t[1],t[2]);case 4:return r?e(t[0],t[1],t[2],t[3]):e.call(n,t[0],t[1],t[2],t[3])}return e.apply(n,t)}},function(e,t,n){var r=n(1),o=n(60).set,i=r.MutationObserver||r.WebKitMutationObserver,a=r.process,u=r.Promise,s="process"==n(23)(a);e.exports=function(){var e,t,n,c=function(){var r,o;for(s&&(r=a.domain)&&r.exit();e;){o=e.fn,e=e.next;try{o()}catch(r){throw e?n():t=void 0,r}}t=void 0,r&&r.enter()};if(s)n=function(){a.nextTick(c)};else if(!i||r.navigator&&r.navigator.standalone)if(u&&u.resolve){var l=u.resolve(void 0);n=function(){l.then(c)}}else n=function(){o.call(r,c)};else{var f=!0,p=document.createTextNode("");new i(c).observe(p,{characterData:!0}),n=function(){p.data=f=!f}}return function(r){var o={fn:r,next:void 0};t&&(t.next=o),e||(e=o,n()),t=o}}},function(e,t,n){var r=n(1),o=r.navigator;e.exports=o&&o.userAgent||""},function(e,t,n){var r=n(11);e.exports=function(e,t,n){for(var o in t)n&&e[o]?e[o]=t[o]:r(e,o,t[o]);return e}},function(e,t,n){"use strict";var r=n(1),o=n(0),i=n(7),a=n(8),u=n(2)("species");e.exports=function(e){var t="function"==typeof o[e]?o[e]:r[e];a&&t&&!t[u]&&i.f(t,u,{configurable:!0,get:function(){return this}})}},function(e,t,n){"use strict";var r=n(4),o=n(0),i=n(1),a=n(59),u=n(62);r(r.P+r.R,"Promise",{finally:function(e){var t=a(this,o.Promise||i.Promise),n="function"==typeof e;return this.then(n?function(n){return u(t,e()).then(function(){return n})}:e,n?function(n){return u(t,e()).then(function(){throw n})}:e)}})},function(e,t,n){"use strict";var r=n(4),o=n(43),i=n(61);r(r.S,"Promise",{try:function(e){var t=o.f(this),n=i(e);return(n.e?t.reject:t.resolve)(n.v),t.promise}})},function(e,t,n){e.exports={default:n(120),__esModule:!0}},function(e,t,n){n(121),e.exports=n(0).Object.assign},function(e,t,n){var r=n(4);r(r.S+r.F,"Object",{assign:n(122)})},function(e,t,n){"use strict";var r=n(8),o=n(22),i=n(44),a=n(28),u=n(17),s=n(54),c=Object.assign;e.exports=!c||n(14)(function(){var e={},t={},n=Symbol(),r="abcdefghijklmnopqrst";return e[n]=7,r.split("").forEach(function(e){t[e]=e}),7!=c({},e)[n]||Object.keys(c({},t)).join("")!=r})?function(e,t){for(var n=u(e),c=arguments.length,l=1,f=i.f,p=a.f;c>l;)for(var d,h=s(arguments[l++]),m=f?o(h).concat(f(h)):o(h),v=m.length,y=0;v>y;)d=m[y++],r&&!p.call(h,d)||(n[d]=h[d]);return n}:c},function(e,t,n){n(124),e.exports=n(0).Object.getPrototypeOf},function(e,t,n){var r=n(17),o=n(56);n(65)("getPrototypeOf",function(){return function(e){return o(r(e))}})},function(e,t,n){e.exports={default:n(126),__esModule:!0}},function(e,t,n){n(20),n(27),e.exports=n(45).f("iterator")},function(e,t,n){e.exports={default:n(128),__esModule:!0}},function(e,t,n){n(129),n(50),n(134),n(135),e.exports=n(0).Symbol},function(e,t,n){"use strict";var r=n(1),o=n(12),i=n(8),a=n(4),u=n(52),s=n(130).KEY,c=n(14),l=n(39),f=n(26),p=n(25),d=n(2),h=n(45),m=n(46),v=n(131),y=n(132),g=n(6),b=n(10),w=n(17),_=n(16),x=n(32),S=n(19),E=n(36),C=n(133),N=n(69),O=n(44),k=n(7),M=n(22),P=N.f,T=k.f,A=C.f,j=r.Symbol,D=r.JSON,I=D&&D.stringify,L=d("_hidden"),R=d("toPrimitive"),F={}.propertyIsEnumerable,G=l("symbol-registry"),B=l("symbols"),z=l("op-symbols"),H=Object.prototype,$="function"==typeof j&&!!O.f,U=r.QObject,W=!U||!U.prototype||!U.prototype.findChild,V=i&&c(function(){return 7!=E(T({},"a",{get:function(){return T(this,"a",{value:7}).a}})).a})?function(e,t,n){var r=P(H,t);r&&delete H[t],T(e,t,n),r&&e!==H&&T(H,t,r)}:T,X=function(e){var t=B[e]=E(j.prototype);return t._k=e,t},Y=$&&"symbol"==typeof j.iterator?function(e){return"symbol"==typeof e}:function(e){return e instanceof j},q=function(e,t,n){return e===H&&q(z,t,n),g(e),t=x(t,!0),g(n),o(B,t)?(n.enumerable?(o(e,L)&&e[L][t]&&(e[L][t]=!1),n=E(n,{enumerable:S(0,!1)})):(o(e,L)||T(e,L,S(1,{})),e[L][t]=!0),V(e,t,n)):T(e,t,n)},K=function(e,t){g(e);for(var n,r=v(t=_(t)),o=0,i=r.length;i>o;)q(e,n=r[o++],t[n]);return e},J=function(e,t){return void 0===t?E(e):K(E(e),t)},Z=function(e){var t=F.call(this,e=x(e,!0));return!(this===H&&o(B,e)&&!o(z,e))&&(!(t||!o(this,e)||!o(B,e)||o(this,L)&&this[L][e])||t)},Q=function(e,t){if(e=_(e),t=x(t,!0),e!==H||!o(B,t)||o(z,t)){var n=P(e,t);return!n||!o(B,t)||o(e,L)&&e[L][t]||(n.enumerable=!0),n}},ee=function(e){for(var t,n=A(_(e)),r=[],i=0;n.length>i;)o(B,t=n[i++])||t==L||t==s||r.push(t);return r},te=function(e){for(var t,n=e===H,r=A(n?z:_(e)),i=[],a=0;r.length>a;)!o(B,t=r[a++])||n&&!o(H,t)||i.push(B[t]);return i};$||(j=function(){if(this instanceof j)throw TypeError("Symbol is not a constructor!");var e=p(arguments.length>0?arguments[0]:void 0),t=function(n){this===H&&t.call(z,n),o(this,L)&&o(this[L],e)&&(this[L][e]=!1),V(this,e,S(1,n))};return i&&W&&V(H,e,{configurable:!0,set:t}),X(e)},u(j.prototype,"toString",function(){return this._k}),N.f=Q,k.f=q,n(68).f=C.f=ee,n(28).f=Z,O.f=te,i&&!n(21)&&u(H,"propertyIsEnumerable",Z,!0),h.f=function(e){return X(d(e))}),a(a.G+a.W+a.F*!$,{Symbol:j});for(var ne="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),re=0;ne.length>re;)d(ne[re++]);for(var oe=M(d.store),ie=0;oe.length>ie;)m(oe[ie++]);a(a.S+a.F*!$,"Symbol",{for:function(e){return o(G,e+="")?G[e]:G[e]=j(e)},keyFor:function(e){if(!Y(e))throw TypeError(e+" is not a symbol!");for(var t in G)if(G[t]===e)return t},useSetter:function(){W=!0},useSimple:function(){W=!1}}),a(a.S+a.F*!$,"Object",{create:J,defineProperty:q,defineProperties:K,getOwnPropertyDescriptor:Q,getOwnPropertyNames:ee,getOwnPropertySymbols:te});var ae=c(function(){O.f(1)});a(a.S+a.F*ae,"Object",{getOwnPropertySymbols:function(e){return O.f(w(e))}}),D&&a(a.S+a.F*(!$||c(function(){var e=j();return"[null]"!=I([e])||"{}"!=I({a:e})||"{}"!=I(Object(e))})),"JSON",{stringify:function(e){for(var t,n,r=[e],o=1;arguments.length>o;)r.push(arguments[o++]);if(n=t=r[1],(b(t)||void 0!==e)&&!Y(e))return y(t)||(t=function(e,t){if("function"==typeof n&&(t=n.call(this,e,t)),!Y(t))return t}),r[1]=t,I.apply(D,r)}}),j.prototype[R]||n(11)(j.prototype,R,j.prototype.valueOf),f(j,"Symbol"),f(Math,"Math",!0),f(r.JSON,"JSON",!0)},function(e,t,n){var r=n(25)("meta"),o=n(10),i=n(12),a=n(7).f,u=0,s=Object.isExtensible||function(){return!0},c=!n(14)(function(){return s(Object.preventExtensions({}))}),l=function(e){a(e,r,{value:{i:"O"+ ++u,w:{}}})},f=function(e,t){if(!o(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!i(e,r)){if(!s(e))return"F";if(!t)return"E";l(e)}return e[r].i},p=function(e,t){if(!i(e,r)){if(!s(e))return!0;if(!t)return!1;l(e)}return e[r].w},d=function(e){return c&&h.NEED&&s(e)&&!i(e,r)&&l(e),e},h=e.exports={KEY:r,NEED:!1,fastKey:f,getWeak:p,onFreeze:d}},function(e,t,n){var r=n(22),o=n(44),i=n(28);e.exports=function(e){var t=r(e),n=o.f;if(n)for(var a,u=n(e),s=i.f,c=0;u.length>c;)s.call(e,a=u[c++])&&t.push(a);return t}},function(e,t,n){var r=n(23);e.exports=Array.isArray||function(e){return"Array"==r(e)}},function(e,t,n){var r=n(16),o=n(68).f,i={}.toString,a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],u=function(e){try{return o(e)}catch(e){return a.slice()}};e.exports.f=function(e){return a&&"[object Window]"==i.call(e)?u(e):o(r(e))}},function(e,t,n){n(46)("asyncIterator")},function(e,t,n){n(46)("observable")},function(e,t,n){e.exports={default:n(137),__esModule:!0}},function(e,t,n){n(138),e.exports=n(0).Object.setPrototypeOf},function(e,t,n){var r=n(4);r(r.S,"Object",{setPrototypeOf:n(139).set})},function(e,t,n){var r=n(10),o=n(6),i=function(e,t){if(o(e),!r(t)&&null!==t)throw TypeError(t+": can't set as prototype!")};e.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(e,t,r){try{r=n(13)(Function.call,n(69).f(Object.prototype,"__proto__").set,2),r(e,[]),t=!(e instanceof Array)}catch(e){t=!0}return function(e,n){return i(e,n),t?e.__proto__=n:r(e,n),e}}({},!1):void 0),check:i}},function(e,t,n){e.exports={default:n(141),__esModule:!0}},function(e,t,n){n(142);var r=n(0).Object;e.exports=function(e,t){return r.create(e,t)}},function(e,t,n){var r=n(4);r(r.S,"Object",{create:n(36)})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(144),o=function(e){return e&&e.__esModule?e:{default:e}}(r);t.default=o.default,e.exports=t.default},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function u(e){return e.key||""}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){var n=[],r=!0,o=!1,i=void 0;try{for(var a,u=e[Symbol.iterator]();!(r=(a=u.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{!r&&u.return&&u.return()}finally{if(o)throw i}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),c=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},l=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),f=n(5),p=r(f);n(145);var d=n(146),h=r(d),m=n(149),v=n(47),y=(0,m.whichTransitionEvent)(),g=!y,b=function(e){function t(){var e,n,r,a;o(this,t);for(var l=arguments.length,p=Array(l),d=0;d<l;d++)p[d]=arguments[d];return n=r=i(this,(e=t.__proto__||Object.getPrototypeOf(t)).call.apply(e,[this].concat(p))),r.state={children:f.Children.toArray(r.props.children).map(function(e){return c({},e,{element:e,appearing:!0})})},r.childrenData={},r.parentData={domNode:null,boundingBox:null},r.heightPlaceholderData={domNode:null},r.remainingAnimations=0,r.childrenToAnimate=[],r.runAnimation=function(){r.state.children.filter(r.doesChildNeedToBeAnimated).forEach(function(e,t){r.remainingAnimations+=1,r.childrenToAnimate.push(u(e)),r.animateChild(e,t)}),"function"==typeof r.props.onStartAll&&r.callChildrenHook(r.props.onStartAll)},r.doesChildNeedToBeAnimated=function(e){if(!u(e))return!1;var t=r.getChildData(u(e)),n=t.domNode,o=t.boundingBox,i=r.parentData.boundingBox;if(!n)return!1;var a=r.props,c=a.appearAnimation,l=a.enterAnimation,f=a.leaveAnimation,p=a.getPosition,d=e.appearing&&c,h=e.entering&&l,v=e.leaving&&f;if(d||h||v)return!0;var y=(0,m.getPositionDelta)({childDomNode:n,childBoundingBox:o,parentBoundingBox:i,getPosition:p}),g=s(y,2),b=g[0],w=g[1];return 0!==b||0!==w},a=n,i(r,a)}return a(t,e),l(t,[{key:"componentDidMount",value:function(){this.props.appearAnimation&&!this.isAnimationDisabled(this.props)&&(this.prepForAnimation(),this.runAnimation())}},{key:"componentWillReceiveProps",value:function(e){this.updateBoundingBoxCaches();var t=f.Children.toArray(e.children);this.setState({children:this.isAnimationDisabled(e)?t.map(function(e){return c({},e,{element:e})}):this.calculateNextSetOfChildren(t)})}},{key:"componentDidUpdate",value:function(e){var t=f.Children.toArray(this.props.children).map(function(e){return e.key}),n=f.Children.toArray(e.children).map(function(e){return e.key});!(0,v.arraysEqual)(t,n)&&!this.isAnimationDisabled(this.props)&&(this.prepForAnimation(),this.runAnimation())}},{key:"calculateNextSetOfChildren",value:function(e){var t=this,n=e.map(function(e){var n=t.findChildByKey(e.key||""),r=!n||n.leaving;return c({},e,{element:e,entering:r})}),r=0;return this.state.children.forEach(function(o,i){if(!e.find(function(e){return e.key===u(o)})&&t.props.leaveAnimation){var a=c({},o,{leaving:!0}),s=i+r;n.splice(s,0,a),r+=1}}),n}},{key:"prepForAnimation",value:function(){var e=this,t=this.props,n=t.leaveAnimation,r=t.maintainContainerHeight,o=t.getPosition;if(n){this.state.children.filter(function(e){return e.leaving}).forEach(function(t){var n=e.getChildData(u(t));n.boundingBox&&(0,m.removeNodeFromDOMFlow)(n,e.props.verticalAlignment)}),r&&this.heightPlaceholderData.domNode&&(0,m.updateHeightPlaceholder)({domNode:this.heightPlaceholderData.domNode,parentData:this.parentData,getPosition:o})}this.state.children.forEach(function(t){var n=e.getChildData(u(t)),r=n.domNode;r&&(t.entering||t.leaving||(0,m.applyStylesToDOMNode)({domNode:r,styles:{transition:""}}))})}},{key:"animateChild",value:function(e,t){var n=this,r=this.getChildData(u(e)),o=r.domNode;o&&((0,m.applyStylesToDOMNode)({domNode:o,styles:this.computeInitialStyles(e)}),this.props.onStart&&this.props.onStart(e,o),requestAnimationFrame(function(){requestAnimationFrame(function(){var r={transition:(0,m.createTransitionString)(t,n.props),transform:"",opacity:""};e.appearing&&n.props.appearAnimation?r=c({},r,n.props.appearAnimation.to):e.entering&&n.props.enterAnimation?r=c({},r,n.props.enterAnimation.to):e.leaving&&n.props.leaveAnimation&&(r=c({},r,n.props.leaveAnimation.to)),(0,m.applyStylesToDOMNode)({domNode:o,styles:r})})}),this.bindTransitionEndHandler(e))}},{key:"bindTransitionEndHandler",value:function(e){var t=this,n=this.getChildData(u(e)),r=n.domNode;if(r){var o=function n(o){o.target===r&&(r.style.transition="",t.triggerFinishHooks(e,r),r.removeEventListener(y,n),e.leaving&&t.removeChildData(u(e)))};r.addEventListener(y,o)}}},{key:"triggerFinishHooks",value:function(e,t){var n=this;if(this.props.onFinish&&this.props.onFinish(e,t),this.remainingAnimations-=1,0===this.remainingAnimations){var r=this.state.children.filter(function(e){return!e.leaving}).map(function(e){return c({},e,{appearing:!1,entering:!1})});this.setState({children:r},function(){"function"==typeof n.props.onFinishAll&&n.callChildrenHook(n.props.onFinishAll),n.childrenToAnimate=[]}),this.heightPlaceholderData.domNode&&(this.heightPlaceholderData.domNode.style.height="0")}}},{key:"callChildrenHook",value:function(e){var t=this,n=[],r=[];this.childrenToAnimate.forEach(function(e){var o=t.findChildByKey(e);o&&(n.push(o),t.hasChildData(e)&&r.push(t.getChildData(e).domNode))}),e(n,r)}},{key:"updateBoundingBoxCaches",value:function(){var e=this,t=this.parentData.domNode;t&&(this.parentData.boundingBox=this.props.getPosition(t),this.state.children.forEach(function(n){var r=u(n);if(r&&e.hasChildData(r)){var o=e.getChildData(r);o.domNode&&n&&e.setChildData(r,{boundingBox:(0,m.getRelativeBoundingBox)({childDomNode:o.domNode,parentDomNode:t,getPosition:e.props.getPosition})})}}))}},{key:"computeInitialStyles",value:function(e){if(e.appearing)return this.props.appearAnimation?this.props.appearAnimation.from:{};if(e.entering)return this.props.enterAnimation?c({position:"",top:"",left:"",right:"",bottom:""},this.props.enterAnimation.from):{};if(e.leaving)return this.props.leaveAnimation?this.props.leaveAnimation.from:{};var t=this.getChildData(u(e)),n=t.domNode,r=t.boundingBox,o=this.parentData.boundingBox;if(!n)return{};var i=(0,m.getPositionDelta)({childDomNode:n,childBoundingBox:r,parentBoundingBox:o,getPosition:this.props.getPosition}),a=s(i,2);return{transform:"translate("+a[0]+"px, "+a[1]+"px)"}}},{key:"isAnimationDisabled",value:function(e){return g||e.disableAllAnimations||0===e.duration&&0===e.delay&&0===e.staggerDurationBy&&0===e.staggerDelayBy}},{key:"findChildByKey",value:function(e){return this.state.children.find(function(t){return u(t)===e})}},{key:"hasChildData",value:function(e){return Object.prototype.hasOwnProperty.call(this.childrenData,e)}},{key:"getChildData",value:function(e){return this.hasChildData(e)?this.childrenData[e]:{}}},{key:"setChildData",value:function(e,t){this.childrenData[e]=c({},this.getChildData(e),t)}},{key:"removeChildData",value:function(e){delete this.childrenData[e]}},{key:"createHeightPlaceholder",value:function(){var e=this,t=this.props.typeName,n="ul"===t||"ol"===t,r=n?"li":"div";return p.default.createElement(r,{key:"height-placeholder",ref:function(t){e.heightPlaceholderData.domNode=t},style:{visibility:"hidden",height:0}})}},{key:"childrenWithRefs",value:function(){var e=this;return this.state.children.map(function(t){return p.default.cloneElement(t.element,{ref:function(n){if(n){var r=(0,m.getNativeNode)(n);e.setChildData(u(t),{domNode:r})}}})})}},{key:"render",value:function(){var e=this,t=this.props,n=t.typeName,r=t.delegated,o=t.leaveAnimation,i=t.maintainContainerHeight,a=c({},r,{ref:function(t){e.parentData.domNode=t}}),u=this.childrenWithRefs();return o&&i&&u.push(this.createHeightPlaceholder()),p.default.createElement(n,a,u)}}]),t}(f.Component);t.default=(0,h.default)(b),e.exports=t.default},function(e,t,n){"use strict";Array.prototype.find||(Array.prototype.find=function(e){if(null===this)throw new TypeError("Array.prototype.find called on null or undefined");if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var t=Object(this),n=t.length>>>0,r=arguments[1],o=void 0,i=0;i<n;i++)if(o=t[i],e.call(r,o,i,t))return o}),Array.prototype.every||(Array.prototype.every=function(e,t){var n,r;if(null==this)throw new TypeError("this is null or not defined");var o=Object(this),i=o.length>>>0;if("function"!=typeof e)throw new TypeError;for(arguments.length>1&&(n=t),r=0;r<i;){var a;if(r in o){a=o[r];if(!e.call(n,a,r,o))return!1}r++}return!0}),Array.isArray||(Array.isArray=function(e){return"[object Array]"===Object.prototype.toString.call(e)})},function(e,t,n){"use strict";(function(r){function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function u(e){var t,n;return n=t=function(t){function n(){return o(this,n),i(this,(n.__proto__||Object.getPrototypeOf(n)).apply(this,arguments))}return a(n,t),l(n,[{key:"checkForStatelessFunctionalComponents",value:function(e){if("production"!==v){f.Children.toArray(e).every(function(e){return!(0,m.isElementAnSFC)(e)||void 0===e.key})||(0,d.statelessFunctionalComponentSupplied)()}}},{key:"convertProps",value:function(e){var t={children:e.children,easing:e.easing,onStart:e.onStart,onFinish:e.onFinish,onStartAll:e.onStartAll,onFinishAll:e.onFinishAll,typeName:e.typeName,disableAllAnimations:e.disableAllAnimations,getPosition:e.getPosition,maintainContainerHeight:e.maintainContainerHeight,verticalAlignment:e.verticalAlignment,duration:this.convertTimingProp("duration"),delay:this.convertTimingProp("delay"),staggerDurationBy:this.convertTimingProp("staggerDurationBy"),staggerDelayBy:this.convertTimingProp("staggerDelayBy"),appearAnimation:this.convertAnimationProp(e.appearAnimation,h.appearPresets),enterAnimation:this.convertAnimationProp(e.enterAnimation,h.enterPresets),leaveAnimation:this.convertAnimationProp(e.leaveAnimation,h.leavePresets),delegated:{}};this.checkForStatelessFunctionalComponents(t.children),void 0!==e.disableAnimations&&("production"!==v&&(0,d.deprecatedDisableAnimations)(),t.disableAllAnimations=e.disableAnimations);var n=Object.keys(t),r=(0,m.omit)(this.props,n);return r.style=c({position:"relative"},r.style),t.delegated=r,t}},{key:"convertTimingProp",value:function(e){var t=this.props[e],r="number"==typeof t?t:parseInt(t,10);if(isNaN(r)){var o=n.defaultProps[e];return"production"!==v&&(0,d.invalidTypeForTimingProp)({prop:e,value:t,defaultValue:o}),o}return r}},{key:"convertAnimationProp",value:function(e,t){switch(void 0===e?"undefined":s(e)){case"boolean":return t[e?h.defaultPreset:h.disablePreset];case"string":var n=Object.keys(t);return-1===n.indexOf(e)?("production"!==v&&(0,d.invalidEnterLeavePreset)({value:e,acceptableValues:n.join(", "),defaultValue:h.defaultPreset}),t[h.defaultPreset]):t[e];default:return e}}},{key:"render",value:function(){return p.default.createElement(e,this.convertProps(this.props))}}]),n}(f.Component),t.defaultProps={easing:"ease-in-out",duration:350,delay:0,staggerDurationBy:0,staggerDelayBy:0,typeName:"div",enterAnimation:h.defaultPreset,leaveAnimation:h.defaultPreset,disableAllAnimations:!1,getPosition:function(e){return e.getBoundingClientRect()},maintainContainerHeight:!1,verticalAlignment:"top"},n}Object.defineProperty(t,"__esModule",{value:!0});var s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},c=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},l=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),f=n(5),p=function(e){return e&&e.__esModule?e:{default:e}}(f),d=n(147),h=n(148),m=n(47),v=void 0;try{v=r.env.NODE_ENV}catch(e){v="development"}t.default=u,e.exports=t.default}).call(t,n(9))},function(e,t,n){"use strict";function r(e){var t=!1;return function(){t||(console.warn(e),t=!0)}}Object.defineProperty(t,"__esModule",{value:!0});t.statelessFunctionalComponentSupplied=r("\n>> Error, via react-flip-move <<\n\nYou provided a stateless functional component as a child to <FlipMove>. Unfortunately, SFCs aren't supported, because Flip Move needs access to the backing instances via refs, and SFCs don't have a public instance that holds that info.\n\nPlease wrap your components in a native element (eg. <div>), or a non-functional component.\n"),t.invalidTypeForTimingProp=function(e){return console.error("\n>> Error, via react-flip-move <<\n\nThe prop you provided for '"+e.prop+"' is invalid. It needs to be a positive integer, or a string that can be resolved to a number. The value you provided is '"+e.value+"'.\n\nAs a result, the default value for this parameter will be used, which is '"+e.defaultValue+"'.\n")},t.deprecatedDisableAnimations=r("\n>> Warning, via react-flip-move <<\n\nThe 'disableAnimations' prop you provided is deprecated. Please switch to use 'disableAllAnimations'.\n\nThis will become a silent error in future versions of react-flip-move.\n"),t.invalidEnterLeavePreset=function(e){return console.error("\n>> Error, via react-flip-move <<\n\nThe enter/leave preset you provided is invalid. We don't currently have a '"+e.value+" preset.'\n\nAcceptable values are "+e.acceptableValues+". The default value of '"+e.defaultValue+"' will be used.\n")}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=t.enterPresets={elevator:{from:{transform:"scale(0)",opacity:"0"},to:{transform:"",opacity:""}},fade:{from:{opacity:"0"},to:{opacity:""}},accordionVertical:{from:{transform:"scaleY(0)",transformOrigin:"center top"},to:{transform:"",transformOrigin:"center top"}},accordionHorizontal:{from:{transform:"scaleX(0)",transformOrigin:"left center"},to:{transform:"",transformOrigin:"left center"}},none:null},o=t.leavePresets={elevator:{from:{transform:"scale(1)",opacity:"1"},to:{transform:"scale(0)",opacity:"0"}},fade:{from:{opacity:"1"},to:{opacity:"0"}},accordionVertical:{from:{transform:"scaleY(1)",transformOrigin:"center top"},to:{transform:"scaleY(0)",transformOrigin:"center top"}},accordionHorizontal:{from:{transform:"scaleX(1)",transformOrigin:"left center"},to:{transform:"scaleX(0)",transformOrigin:"left center"}},none:null};t.appearPresets=r;r.accordianVertical=r.accordionVertical,r.accordianHorizontal=r.accordionHorizontal,o.accordianVertical=o.accordionVertical,o.accordianHorizontal=o.accordionHorizontal;t.defaultPreset="elevator",t.disablePreset="none"},function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e){var t=e.domNode,n=e.styles;Object.keys(n).forEach(function(e){t.style.setProperty((0,s.hyphenate)(e),n[e])})}function i(){var e={transition:"transitionend","-o-transition":"oTransitionEnd","-moz-transition":"transitionend","-webkit-transition":"webkitTransitionEnd"};if("undefined"==typeof document)return"";var t=document.createElement("fakeelement"),n=Object.keys(e).find(function(e){return void 0!==t.style.getPropertyValue(e)});return n?e[n]:""}Object.defineProperty(t,"__esModule",{value:!0}),t.createTransitionString=t.getNativeNode=t.updateHeightPlaceholder=t.removeNodeFromDOMFlow=t.getPositionDelta=t.getRelativeBoundingBox=void 0;var a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e};t.applyStylesToDOMNode=o,t.whichTransitionEvent=i;var u=n(5),s=n(47);t.getRelativeBoundingBox=function(e){var t=e.childDomNode,n=e.parentDomNode,r=e.getPosition,o=r(n),i=r(t),a=i.top,u=i.left,s=i.right,c=i.bottom,l=i.width,f=i.height;return{top:a-o.top,left:u-o.left,right:o.right-s,bottom:o.bottom-c,width:l,height:f}},t.getPositionDelta=function(e){var t=e.childDomNode,n=e.childBoundingBox,r=e.parentBoundingBox,o=e.getPosition,i={top:0,left:0,right:0,bottom:0,height:0,width:0},a=n||i,u=r||i,s=o(t),c={top:s.top-u.top,left:s.left-u.left};return[a.left-c.left,a.top-c.top]},t.removeNodeFromDOMFlow=function(e,t){var n=e.domNode,i=e.boundingBox;if(n&&i){var u=window.getComputedStyle(n),s=["margin-top","margin-left","margin-right"],c=s.reduce(function(e,t){var n=u.getPropertyValue(t);return a({},e,r({},t,Number(n.replace("px",""))))},{});o({domNode:n,styles:{position:"absolute",top:("bottom"===t?i.top-i.height:i.top)-c["margin-top"]+"px",left:i.left-c["margin-left"]+"px",right:i.right-c["margin-right"]+"px"}})}},t.updateHeightPlaceholder=function(e){var t=e.domNode,n=e.parentData,r=e.getPosition,i=n.domNode,a=n.boundingBox;if(i&&a){o({domNode:t,styles:{height:"0"}});var u=a.height,s=r(i).height,c=u-s;o({domNode:t,styles:{height:c>0?c+"px":"0"}})}},t.getNativeNode=function(e){if("undefined"==typeof HTMLElement)return null;if(e instanceof HTMLElement)return e;var t=(0,u.findDOMNode)(e);return t instanceof HTMLElement?t:null},t.createTransitionString=function(e,t){var n=t.delay,r=t.duration,o=t.staggerDurationBy,i=t.staggerDelayBy,a=t.easing;return n+=e*i,r+=e*o,["transform","opacity"].map(function(e){return e+" "+r+"ms "+a+" "+n+"ms"}).join(", ")}},function(e,t,n){var r,o,i;/*!
+!function(t,n){e.exports=n()}(0,function(){"use strict";function e(e){var t=typeof e;return null!==e&&("object"===t||"function"===t)}function i(e){return"function"==typeof e}function r(e){R=e}function o(e){U=e}function u(){return void 0!==G?function(){G(d)}:s()}function s(){var e=setTimeout;return function(){return e(d,1)}}function d(){for(var e=0;e<q;e+=2){(0,Q[e])(Q[e+1]),Q[e]=void 0,Q[e+1]=void 0}q=0}function c(e,t){var n=arguments,a=this,i=new this.constructor(m);void 0===i[ee]&&N(i);var r=a._state;return r?function(){var e=n[r-1];U(function(){return S(r,i,e,a._result)})}():W(a,i,e,t),i}function l(e){var t=this;if(e&&"object"==typeof e&&e.constructor===t)return e;var n=new t(m);return y(n,e),n}function m(){}function f(){return new TypeError("You cannot resolve a promise with itself")}function h(){return new TypeError("A promises callback cannot return that same promise.")}function p(e){try{return e.then}catch(e){return ie.error=e,ie}}function g(e,t,n,a){try{e.call(t,n,a)}catch(e){return e}}function v(e,t,n){U(function(e){var a=!1,i=g(n,t,function(n){a||(a=!0,t!==n?y(e,n):k(e,n))},function(t){a||(a=!0,P(e,t))},"Settle: "+(e._label||" unknown promise"));!a&&i&&(a=!0,P(e,i))},e)}function w(e,t){t._state===ne?k(e,t._result):t._state===ae?P(e,t._result):W(t,void 0,function(t){return y(e,t)},function(t){return P(e,t)})}function b(e,t,n){t.constructor===e.constructor&&n===c&&t.constructor.resolve===l?w(e,t):n===ie?(P(e,ie.error),ie.error=null):void 0===n?k(e,t):i(n)?v(e,t,n):k(e,t)}function y(t,n){t===n?P(t,f()):e(n)?b(t,n,p(n)):k(t,n)}function M(e){e._onerror&&e._onerror(e._result),x(e)}function k(e,t){e._state===te&&(e._result=t,e._state=ne,0!==e._subscribers.length&&U(x,e))}function P(e,t){e._state===te&&(e._state=ae,e._result=t,U(M,e))}function W(e,t,n,a){var i=e._subscribers,r=i.length;e._onerror=null,i[r]=t,i[r+ne]=n,i[r+ae]=a,0===r&&e._state&&U(x,e)}function x(e){var t=e._subscribers,n=e._state;if(0!==t.length){for(var a=void 0,i=void 0,r=e._result,o=0;o<t.length;o+=3)a=t[o],i=t[o+n],a?S(n,a,i,r):i(r);e._subscribers.length=0}}function j(){this.error=null}function T(e,t){try{return e(t)}catch(e){return re.error=e,re}}function S(e,t,n,a){var r=i(n),o=void 0,u=void 0,s=void 0,d=void 0;if(r){if(o=T(n,a),o===re?(d=!0,u=o.error,o.error=null):s=!0,t===o)return void P(t,h())}else o=a,s=!0;t._state!==te||(r&&s?y(t,o):d?P(t,u):e===ne?k(t,o):e===ae&&P(t,o))}function C(e,t){try{t(function(t){y(e,t)},function(t){P(e,t)})}catch(t){P(e,t)}}function z(){return oe++}function N(e){e[ee]=oe++,e._state=void 0,e._result=void 0,e._subscribers=[]}function D(e,t){this._instanceConstructor=e,this.promise=new e(m),this.promise[ee]||N(this.promise),L(t)?(this.length=t.length,this._remaining=t.length,this._result=new Array(this.length),0===this.length?k(this.promise,this._result):(this.length=this.length||0,this._enumerate(t),0===this._remaining&&k(this.promise,this._result))):P(this.promise,E())}function E(){return new Error("Array Methods must be provided an Array")}function H(e){return new D(this,e).promise}function A(e){var t=this;return new t(L(e)?function(n,a){for(var i=e.length,r=0;r<i;r++)t.resolve(e[r]).then(n,a)}:function(e,t){return t(new TypeError("You must pass an array to race."))})}function _(e){var t=this,n=new t(m);return P(n,e),n}function O(){throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")}function X(){throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.")}function I(e){this[ee]=z(),this._result=this._state=void 0,this._subscribers=[],m!==e&&("function"!=typeof e&&O(),this instanceof I?C(this,e):X())}function Y(){var e=void 0;if(void 0!==a)e=a;else if("undefined"!=typeof self)e=self;else try{e=Function("return this")()}catch(e){throw new Error("polyfill failed because global object is unavailable in this environment")}var t=e.Promise;if(t){var n=null;try{n=Object.prototype.toString.call(t.resolve())}catch(e){}if("[object Promise]"===n&&!t.cast)return}e.Promise=I}var F=void 0;F=Array.isArray?Array.isArray:function(e){return"[object Array]"===Object.prototype.toString.call(e)};var L=F,q=0,G=void 0,R=void 0,U=function(e,t){Q[q]=e,Q[q+1]=t,2===(q+=2)&&(R?R(d):Z())},K="undefined"!=typeof window?window:void 0,J=K||{},B=J.MutationObserver||J.WebKitMutationObserver,$="undefined"==typeof self&&void 0!==t&&"[object process]"==={}.toString.call(t),V="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel,Q=new Array(1e3),Z=void 0;Z=$?function(){return function(){return t.nextTick(d)}}():B?function(){var e=0,t=new B(d),n=document.createTextNode("");return t.observe(n,{characterData:!0}),function(){n.data=e=++e%2}}():V?function(){var e=new MessageChannel;return e.port1.onmessage=d,function(){return e.port2.postMessage(0)}}():void 0===K?function(){try{var e=n(206);return G=e.runOnLoop||e.runOnContext,u()}catch(e){return s()}}():s();var ee=Math.random().toString(36).substring(16),te=void 0,ne=1,ae=2,ie=new j,re=new j,oe=0;return D.prototype._enumerate=function(e){for(var t=0;this._state===te&&t<e.length;t++)this._eachEntry(e[t],t)},D.prototype._eachEntry=function(e,t){var n=this._instanceConstructor,a=n.resolve;if(a===l){var i=p(e);if(i===c&&e._state!==te)this._settledAt(e._state,t,e._result);else if("function"!=typeof i)this._remaining--,this._result[t]=e;else if(n===I){var r=new n(m);b(r,e,i),this._willSettleAt(r,t)}else this._willSettleAt(new n(function(t){return t(e)}),t)}else this._willSettleAt(a(e),t)},D.prototype._settledAt=function(e,t,n){var a=this.promise;a._state===te&&(this._remaining--,e===ae?P(a,n):this._result[t]=n),0===this._remaining&&k(a,this._result)},D.prototype._willSettleAt=function(e,t){var n=this;W(e,void 0,function(e){return n._settledAt(ne,t,e)},function(e){return n._settledAt(ae,t,e)})},I.all=H,I.race=A,I.resolve=l,I.reject=_,I._setScheduler=r,I._setAsap=o,I._asap=U,I.prototype={constructor:I,then:c,catch:function(e){return this.then(null,e)}},I.polyfill=Y,I.Promise=I,I})}).call(t,n(18),n(205))},function(e,t){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t){},function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}var i=n(208),r=a(i),o=n(228),u=a(o),s=n(114),d=a(s),c=n(64),l=a(c),m=n(65),f=a(m),h=n(116),p=a(h),g=n(120),v=a(g),w=n(12),b=a(w),y=n(252),M=a(y),k=n(259),P=a(k),W=n(260),x=a(W);n(271);var j=n(121),T=n(130),S=a(T),C=n(299),z=a(C),N=n(300),D=a(N),E=n(301),H=a(E),A=n(131),_=a(A),O=n(856),X=n(857),I=a(X),Y=function(e){function t(e){(0,l.default)(this,t);var n=(0,p.default)(this,(t.__proto__||(0,d.default)(t)).call(this,e));n.state={user:null,issue:null,comments:[],localComments:[],comment:"",page:1,pagerDirection:"last",cursor:null,previewHtml:"",isNoInit:!1,isIniting:!0,isCreating:!1,isLoading:!1,isLoadMore:!1,isLoadOver:!1,isIssueCreating:!1,isPopupVisible:!1,isInputFocused:!1,isPreview:!1,isOccurError:!1,errorMsg:""},n.getCommentsV3=function(e){var t=n.options,a=t.clientID,i=t.clientSecret,r=t.perPage,o=n.state.page;return n.getIssue().then(function(e){if(e)return j.axiosGithub.get(e.comments_url,{headers:{Accept:"application/vnd.github.v3.full+json"},auth:{username:a,password:i},params:{per_page:r,page:o}}).then(function(e){var t=n.state,a=t.comments,i=t.issue,u=!1,s=a.concat(e.data);return(s.length>=i.comments||e.data.length<r)&&(u=!0),n.setState({comments:s,isLoadOver:u,page:o+1}),s})})},n.getRef=function(e){n.publicBtnEL=e},n.reply=function(e){return function(){var t=n.state.comment,a=e.body,i=a.split("\n");i.unshift("@"+e.user.login),i=i.map(function(e){return"> "+e}),i.push(""),i.push(""),t&&i.unshift(""),n.setState({comment:t+i.join("\n")},function(){P.default.update(n.commentEL),n.commentEL.focus()})}},n.handlePopup=function(e){e.preventDefault(),e.stopPropagation();var t=!n.state.isPopupVisible,a=function e(t){(0,j.hasClassInParent)(t.target,"gt-user","gt-popup")||(window.document.removeEventListener("click",e),n.setState({isPopupVisible:!1}))};n.setState({isPopupVisible:t}),t?window.document.addEventListener("click",a):window.document.removeEventListener("click",a)},n.handleLogin=function(){var e=n.state.comment;window.localStorage.setItem(O.GT_COMMENT,encodeURIComponent(e)),window.location.href=n.loginLink},n.handleIssueCreate=function(){n.setState({isIssueCreating:!0}),n.createIssue().then(function(e){return n.setState({isIssueCreating:!1,isOccurError:!1}),n.getComments(e)}).catch(function(e){n.setState({isIssueCreating:!1,isOccurError:!0,errorMsg:(0,j.formatErrorMsg)(e)})}).then(function(e){e&&n.setState({isNoInit:!1})})},n.handleCommentCreate=function(e){if(!n.state.comment.length)return e&&e.preventDefault(),void n.commentEL.focus();n.setState(function(e){if(!e.isCreating)return n.createComment().then(function(){return n.setState({isCreating:!1,isOccurError:!1})}).catch(function(e){n.setState({isCreating:!1,isOccurError:!0,errorMsg:(0,j.formatErrorMsg)(e)})}),{isCreating:!0}})},n.handleCommentPreview=function(e){n.setState({isPreview:!n.state.isPreview}),j.axiosGithub.post("/markdown",{text:n.state.comment},{headers:n.accessToken&&{Authorization:"token "+n.accessToken}}).then(function(e){n.setState({previewHtml:e.data})}).catch(function(e){n.setState({isOccurError:!0,errorMsg:(0,j.formatErrorMsg)(e)})})},n.handleCommentLoad=function(){var e=n.state,t=e.issue;e.isLoadMore||(n.setState({isLoadMore:!0}),n.getComments(t).then(function(){return n.setState({isLoadMore:!1})}))},n.handleCommentChange=function(e){return n.setState({comment:e.target.value})},n.handleLogout=function(){n.logout(),window.location.reload()},n.handleCommentFocus=function(e){if(!n.options.distractionFreeMode)return e.preventDefault();n.setState({isInputFocused:!0})},n.handleCommentBlur=function(e){if(!n.options.distractionFreeMode)return e.preventDefault();n.setState({isInputFocused:!1})},n.handleSort=function(e){return function(t){n.setState({pagerDirection:e})}},n.handleCommentKeyDown=function(e){n.options.enableHotKey&&(e.metaKey||e.ctrlKey)&&13===e.keyCode&&(n.publicBtnEL&&n.publicBtnEL.focus(),n.handleCommentCreate())},n.options=(0,u.default)({},{id:window.location.href,number:-1,labels:["Gitalk"],title:window.document.title,body:"",language:window.navigator.language||window.navigator.userLanguage,perPage:10,pagerDirection:"last",createIssueManually:!1,distractionFreeMode:!1,proxy:"https://cors-anywhere.azm.workers.dev/https://github.com/login/oauth/access_token",flipMoveOptions:{staggerDelayBy:150,appearAnimation:"accordionVertical",enterAnimation:"accordionVertical",leaveAnimation:"accordionVertical"},enableHotKey:!0,url:window.location.href,defaultAuthor:{avatarUrl:"//avatars1.githubusercontent.com/u/29697133?s=50",login:"null",url:""},updateCountCallback:null},e.options),n.state.pagerDirection=n.options.pagerDirection;var a=window.localStorage.getItem(O.GT_COMMENT);a&&(n.state.comment=decodeURIComponent(a),window.localStorage.removeItem(O.GT_COMMENT));var i=(0,j.queryParse)();if(i.code){var r=i.code;delete i.code;var o=""+window.location.origin+window.location.pathname+(0,j.queryStringify)(i)+window.location.hash;history.replaceState(null,null,o),n.options=(0,u.default)({},n.options,{url:o,id:o},e.options),j.axiosJSON.post(n.options.proxy,{code:r,client_id:n.options.clientID,client_secret:n.options.clientSecret}).then(function(e){e.data&&e.data.access_token?(n.accessToken=e.data.access_token,n.getInit().then(function(){return n.setState({isIniting:!1})}).catch(function(e){console.log("err:",e),n.setState({isIniting:!1,isOccurError:!0,errorMsg:(0,j.formatErrorMsg)(e)})})):(console.log("res.data err:",e.data),n.setState({isOccurError:!0,errorMsg:(0,j.formatErrorMsg)(new Error("no access token"))}))}).catch(function(e){console.log("err: ",e),n.setState({isOccurError:!0,errorMsg:(0,j.formatErrorMsg)(e)})})}else n.getInit().then(function(){return n.setState({isIniting:!1})}).catch(function(e){console.log("err:",e),n.setState({isIniting:!1,isOccurError:!0,errorMsg:(0,j.formatErrorMsg)(e)})});return n.i18n=(0,x.default)(n.options.language),n}return(0,v.default)(t,e),(0,f.default)(t,[{key:"componentDidUpdate",value:function(){this.commentEL&&(0,P.default)(this.commentEL)}},{key:"getInit",value:function(){var e=this;return this.getUserInfo().then(function(){return e.getIssue()}).then(function(t){return e.getComments(t)})}},{key:"getUserInfo",value:function(){var e=this;return this.accessToken?j.axiosGithub.get("/user",{headers:{Authorization:"token "+this.accessToken}}).then(function(t){e.setState({user:t.data})}).catch(function(t){e.logout()}):new r.default(function(e){e()})}},{key:"getIssueById",value:function(){var e=this,t=this.options,n=t.owner,a=t.repo,i=t.number,o=t.clientID,u=t.clientSecret,s="/repos/"+n+"/"+a+"/issues/"+i;return new r.default(function(t,n){j.axiosGithub.get(s,{auth:{username:o,password:u},params:{t:Date.now()}}).then(function(n){var a=null;n&&n.data&&n.data.number===i&&(a=n.data,e.setState({issue:a,isNoInit:!1})),t(a)}).catch(function(e){404===e.response.status&&t(null),n(e)})})}},{key:"getIssueByLabels",value:function(){var e=this,t=this.options,n=t.owner,a=t.repo,i=t.id,r=t.labels,o=t.clientID,u=t.clientSecret;return j.axiosGithub.get("/repos/"+n+"/"+a+"/issues",{auth:{username:o,password:u},params:{labels:r.concat(i).join(","),t:Date.now()}}).then(function(t){var n=e.options.createIssueManually,a=!1,i=null;if(t&&t.data&&t.data.length)i=t.data[0];else{if(!n&&e.isAdmin)return e.createIssue();a=!0}return e.setState({issue:i,isNoInit:a}),i})}},{key:"getIssue",value:function(){var e=this,t=this.options.number,n=this.state.issue;return n?(this.setState({isNoInit:!1}),r.default.resolve(n)):"number"==typeof t&&t>0?this.getIssueById().then(function(t){return t||e.getIssueByLabels()}):this.getIssueByLabels()}},{key:"createIssue",value:function(){var e=this,t=this.options,n=t.owner,a=t.repo,i=t.title,r=t.body,o=t.id,u=t.labels,s=t.url;return j.axiosGithub.post("/repos/"+n+"/"+a+"/issues",{title:i,labels:u.concat(o),body:r||s+" \n\n "+((0,j.getMetaContent)("description")||(0,j.getMetaContent)("description","og:description")||"")},{headers:{Authorization:"token "+this.accessToken}}).then(function(t){return e.setState({issue:t.data}),t.data})}},{key:"getComments",value:function(e){if(e)return this.accessToken?I.default.call(this,e):this.getCommentsV3(e)}},{key:"createComment",value:function(){var e=this,t=this.state,n=t.comment,a=t.localComments,i=t.comments;return this.getIssue().then(function(t){return j.axiosGithub.post(t.comments_url,{body:n},{headers:{Accept:"application/vnd.github.v3.full+json",Authorization:"token "+e.accessToken}})}).then(function(t){e.setState({comment:"",comments:i.concat(t.data),localComments:a.concat(t.data)})})}},{key:"logout",value:function(){this.setState({user:null}),window.localStorage.removeItem(O.GT_ACCESS_TOKEN)}},{key:"like",value:function(e){var t=this,n=this.options,a=n.owner,i=n.repo,r=this.state.user,o=this.state.comments;j.axiosGithub.post("/repos/"+a+"/"+i+"/issues/comments/"+e.id+"/reactions",{content:"heart"},{headers:{Authorization:"token "+this.accessToken,Accept:"application/vnd.github.squirrel-girl-preview"}}).then(function(n){o=o.map(function(t){return t.id===e.id?(t.reactions?~t.reactions.nodes.findIndex(function(e){return e.user.login===r.login})||(t.reactions.totalCount+=1):(t.reactions={nodes:[]},t.reactions.totalCount=1),t.reactions.nodes.push(n.data),t.reactions.viewerHasReacted=!0,(0,u.default)({},t)):t}),t.setState({comments:o})})}},{key:"unLike",value:function(e){var t=this,n=this.state.user,a=this.state.comments;j.axiosGithub.post("/graphql",function(e){return{operationName:"RemoveReaction",query:'\n mutation RemoveReaction{\n removeReaction (input:{\n subjectId: "'+e+'",\n content: HEART\n }) {\n reaction {\n content\n }\n }\n }\n '}}(e.gId),{headers:{Authorization:"bearer "+this.accessToken}}).then(function(i){i.data&&(a=a.map(function(t){if(t.id===e.id){var a=t.reactions.nodes.findIndex(function(e){return e.user.login===n.login});return~a&&(t.reactions.totalCount-=1,t.reactions.nodes.splice(a,1)),t.reactions.viewerHasReacted=!1,(0,u.default)({},t)}return t}),t.setState({comments:a}))})}},{key:"initing",value:function(){return b.default.createElement("div",{className:"gt-initing"},b.default.createElement("i",{className:"gt-loader"}),b.default.createElement("p",{className:"gt-initing-text"},this.i18n.t("init")))}},{key:"noInit",value:function(){var e=this.state,t=e.user,n=e.isIssueCreating,a=this.options,i=a.owner,r=a.repo,o=a.admin;return b.default.createElement("div",{className:"gt-no-init",key:"no-init"},b.default.createElement("p",{dangerouslySetInnerHTML:{__html:this.i18n.t("no-found-related",{link:'<a href="https://github.com/'+i+"/"+r+'/issues">Issues</a>'})}}),b.default.createElement("p",null,this.i18n.t("please-contact",{user:[].concat(o).map(function(e){return"@"+e}).join(" ")})),this.isAdmin?b.default.createElement("p",null,b.default.createElement(z.default,{onClick:this.handleIssueCreate,isLoading:n,text:this.i18n.t("init-issue")})):null,!t&&b.default.createElement(z.default,{className:"gt-btn-login",onClick:this.handleLogin,text:this.i18n.t("login-with-github")}))}},{key:"header",value:function(){var e=this,t=this.state,n=t.user,a=t.comment,i=t.isCreating,r=t.previewHtml,o=t.isPreview;return b.default.createElement("div",{className:"gt-header",key:"header"},n?b.default.createElement(S.default,{className:"gt-header-avatar",src:n.avatar_url,alt:n.login}):b.default.createElement("a",{className:"gt-avatar-github",onClick:this.handleLogin},b.default.createElement(_.default,{className:"gt-ico-github",name:"github"})),b.default.createElement("div",{className:"gt-header-comment"},b.default.createElement("textarea",{ref:function(t){e.commentEL=t},className:"gt-header-textarea "+(o?"hide":""),value:a,onChange:this.handleCommentChange,onFocus:this.handleCommentFocus,onBlur:this.handleCommentBlur,onKeyDown:this.handleCommentKeyDown,placeholder:this.i18n.t("leave-a-comment")}),b.default.createElement("div",{className:"gt-header-preview markdown-body "+(o?"":"hide"),dangerouslySetInnerHTML:{__html:r}}),b.default.createElement("div",{className:"gt-header-controls"},b.default.createElement("a",{className:"gt-header-controls-tip",href:"https://guides.github.com/features/mastering-markdown/",target:"_blank",rel:"noopener noreferrer"},b.default.createElement(_.default,{className:"gt-ico-tip",name:"tip",text:this.i18n.t("support-markdown")})),n&&b.default.createElement(z.default,{getRef:this.getRef,className:"gt-btn-public",onClick:this.handleCommentCreate,text:this.i18n.t("comment"),isLoading:i}),b.default.createElement(z.default,{className:"gt-btn-preview",onClick:this.handleCommentPreview,text:o?this.i18n.t("edit"):this.i18n.t("preview")}),!n&&b.default.createElement(z.default,{className:"gt-btn-login",onClick:this.handleLogin,text:this.i18n.t("login-with-github")}))))}},{key:"comments",value:function(){var e=this,t=this.state,n=t.user,a=t.comments,i=t.isLoadOver,r=t.isLoadMore,o=t.pagerDirection,u=this.options,s=u.language,d=u.flipMoveOptions,c=u.admin,l=a.concat([]);return"last"===o&&this.accessToken&&l.reverse(),b.default.createElement("div",{className:"gt-comments",key:"comments"},b.default.createElement(M.default,d,l.map(function(t){return b.default.createElement(H.default,{comment:t,key:t.id,user:n,language:s,commentedText:e.i18n.t("commented"),admin:c,replyCallback:e.reply(t),likeCallback:t.reactions&&t.reactions.viewerHasReacted?e.unLike.bind(e,t):e.like.bind(e,t)})})),!l.length&&b.default.createElement("p",{className:"gt-comments-null"},this.i18n.t("first-comment-person")),!i&&l.length?b.default.createElement("div",{className:"gt-comments-controls"},b.default.createElement(z.default,{className:"gt-btn-loadmore",onClick:this.handleCommentLoad,isLoading:r,text:this.i18n.t("load-more")})):null)}},{key:"meta",value:function(){var e=this.state,t=e.user,n=e.issue,a=e.isPopupVisible,i=e.pagerDirection,r=e.localComments,o=(n&&n.comments)+r.length,u="last"===i,s=this.options.updateCountCallback;if(s&&"[object Function]"==={}.toString.call(s))try{s(o)}catch(e){console.log("An error occurred executing the updateCountCallback:",e)}return b.default.createElement("div",{className:"gt-meta",key:"meta"},b.default.createElement("span",{className:"gt-counts",dangerouslySetInnerHTML:{__html:this.i18n.t("counts",{counts:'<a class="gt-link gt-link-counts" href="'+(n&&n.html_url)+'" target="_blank" rel="noopener noreferrer">'+o+"</a>",smart_count:o})}}),a&&b.default.createElement("div",{className:"gt-popup"},t?b.default.createElement(D.default,{className:"gt-action-sortasc"+(u?"":" is--active"),onClick:this.handleSort("first"),text:this.i18n.t("sort-asc")}):null,t?b.default.createElement(D.default,{className:"gt-action-sortdesc"+(u?" is--active":""),onClick:this.handleSort("last"),text:this.i18n.t("sort-desc")}):null,t?b.default.createElement(D.default,{className:"gt-action-logout",onClick:this.handleLogout,text:this.i18n.t("logout")}):b.default.createElement("a",{className:"gt-action gt-action-login",onClick:this.handleLogin},this.i18n.t("login-with-github")),b.default.createElement("div",{className:"gt-copyright"},b.default.createElement("a",{className:"gt-link gt-link-project",href:"https://github.com/gitalk/gitalk",target:"_blank",rel:"noopener noreferrer"},"Gitalk"),b.default.createElement("span",{className:"gt-version"},O.GT_VERSION))),b.default.createElement("div",{className:"gt-user"},t?b.default.createElement("div",{className:a?"gt-user-inner is--poping":"gt-user-inner",onClick:this.handlePopup},b.default.createElement("span",{className:"gt-user-name"},t.login),b.default.createElement(_.default,{className:"gt-ico-arrdown",name:"arrow_down"})):b.default.createElement("div",{className:a?"gt-user-inner is--poping":"gt-user-inner",onClick:this.handlePopup},b.default.createElement("span",{className:"gt-user-name"},this.i18n.t("anonymous")),b.default.createElement(_.default,{className:"gt-ico-arrdown",name:"arrow_down"}))))}},{key:"render",value:function(){var e=this.state,t=e.isIniting,n=e.isNoInit,a=e.isOccurError,i=e.errorMsg,r=e.isInputFocused;return b.default.createElement("div",{className:"gt-container"+(r?" gt-input-focused":"")},t&&this.initing(),!t&&(n?[]:[this.meta()]),a&&b.default.createElement("div",{className:"gt-error"},i),!t&&(n?[this.noInit()]:[this.header(),this.comments()]))}},{key:"accessToken",get:function(){return this._accessToke||window.localStorage.getItem(O.GT_ACCESS_TOKEN)},set:function(e){window.localStorage.setItem(O.GT_ACCESS_TOKEN,e),this._accessToken=e}},{key:"loginLink",get:function(){var e=this.options.clientID,t={client_id:e,redirect_uri:window.location.href,scope:"public_repo"};return"https://github.com/login/oauth/authorize?"+(0,j.queryStringify)(t)}},{key:"isAdmin",get:function(){var e=this.options.admin,t=this.state.user;return t&&~[].concat(e).map(function(e){return e.toLowerCase()}).indexOf(t.login.toLowerCase())}}]),t}(w.Component);e.exports=Y},function(e,t,n){e.exports={default:n(209),__esModule:!0}},function(e,t,n){n(100),n(40),n(54),n(218),n(226),n(227),e.exports=n(7).Promise},function(e,t,n){var a=n(69),i=n(70);e.exports=function(e){return function(t,n){var r,o,u=String(i(t)),s=a(n),d=u.length;return s<0||s>=d?e?"":void 0:(r=u.charCodeAt(s),r<55296||r>56319||s+1===d||(o=u.charCodeAt(s+1))<56320||o>57343?e?u.charAt(s):r:e?u.slice(s,s+2):o-56320+(r-55296<<10)+65536)}}},function(e,t,n){"use strict";var a=n(71),i=n(39),r=n(53),o={};n(23)(o,n(9)("iterator"),function(){return this}),e.exports=function(e,t,n){e.prototype=a(o,{next:i(1,n)}),r(e,t+" Iterator")}},function(e,t,n){var a=n(16),i=n(14),r=n(42);e.exports=n(17)?Object.defineProperties:function(e,t){i(e);for(var n,o=r(t),u=o.length,s=0;u>s;)a.f(e,n=o[s++],t[n]);return e}},function(e,t,n){var a=n(32),i=n(72),r=n(214);e.exports=function(e){return function(t,n,o){var u,s=a(t),d=i(s.length),c=r(o,d);if(e&&n!=n){for(;d>c;)if((u=s[c++])!=u)return!0}else for(;d>c;c++)if((e||c in s)&&s[c]===n)return e||c||0;return!e&&-1}}},function(e,t,n){var a=n(69),i=Math.max,r=Math.min;e.exports=function(e,t){return e=a(e),e<0?i(e+t,0):r(e,t)}},function(e,t,n){"use strict";var a=n(216),i=n(217),r=n(31),o=n(32);e.exports=n(101)(Array,"Array",function(e,t){this._t=o(e),this._i=0,this._k=t},function(){var e=this._t,t=this._k,n=this._i++;return!e||n>=e.length?(this._t=void 0,i(1)):"keys"==t?i(0,n):"values"==t?i(0,e[n]):i(0,[n,e[n]])},"values"),r.Arguments=r.Array,a("keys"),a("values"),a("entries")},function(e,t){e.exports=function(){}},function(e,t){e.exports=function(e,t){return{value:t,done:!!e}}},function(e,t,n){"use strict";var a,i,r,o,u=n(41),s=n(8),d=n(29),c=n(76),l=n(11),m=n(20),f=n(51),h=n(219),p=n(220),g=n(109),v=n(110).set,w=n(222)(),b=n(78),y=n(111),M=n(223),k=n(112),P=s.TypeError,W=s.process,x=W&&W.versions,j=x&&x.v8||"",T=s.Promise,S="process"==c(W),C=function(){},z=i=b.f,N=!!function(){try{var e=T.resolve(1),t=(e.constructor={})[n(9)("species")]=function(e){e(C,C)};return(S||"function"==typeof PromiseRejectionEvent)&&e.then(C)instanceof t&&0!==j.indexOf("6.6")&&-1===M.indexOf("Chrome/66")}catch(e){}}(),D=function(e){var t;return!(!m(e)||"function"!=typeof(t=e.then))&&t},E=function(e,t){if(!e._n){e._n=!0;var n=e._c;w(function(){for(var a=e._v,i=1==e._s,r=0;n.length>r;)!function(t){var n,r,o,u=i?t.ok:t.fail,s=t.resolve,d=t.reject,c=t.domain;try{u?(i||(2==e._h&&_(e),e._h=1),!0===u?n=a:(c&&c.enter(),n=u(a),c&&(c.exit(),o=!0)),n===t.promise?d(P("Promise-chain cycle")):(r=D(n))?r.call(n,s,d):s(n)):d(a)}catch(e){c&&!o&&c.exit(),d(e)}}(n[r++]);e._c=[],e._n=!1,t&&!e._h&&H(e)})}},H=function(e){v.call(s,function(){var t,n,a,i=e._v,r=A(e);if(r&&(t=y(function(){S?W.emit("unhandledRejection",i,e):(n=s.onunhandledrejection)?n({promise:e,reason:i}):(a=s.console)&&a.error&&a.error("Unhandled promise rejection",i)}),e._h=S||A(e)?2:1),e._a=void 0,r&&t.e)throw t.v})},A=function(e){return 1!==e._h&&0===(e._a||e._c).length},_=function(e){v.call(s,function(){var t;S?W.emit("rejectionHandled",e):(t=s.onrejectionhandled)&&t({promise:e,reason:e._v})})},O=function(e){var t=this;t._d||(t._d=!0,t=t._w||t,t._v=e,t._s=2,t._a||(t._a=t._c.slice()),E(t,!0))},X=function(e){var t,n=this;if(!n._d){n._d=!0,n=n._w||n;try{if(n===e)throw P("Promise can't be resolved itself");(t=D(e))?w(function(){var a={_w:n,_d:!1};try{t.call(e,d(X,a,1),d(O,a,1))}catch(e){O.call(a,e)}}):(n._v=e,n._s=1,E(n,!1))}catch(e){O.call({_w:n,_d:!1},e)}}};N||(T=function(e){h(this,T,"Promise","_h"),f(e),a.call(this);try{e(d(X,this,1),d(O,this,1))}catch(e){O.call(this,e)}},a=function(e){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1},a.prototype=n(224)(T.prototype,{then:function(e,t){var n=z(g(this,T));return n.ok="function"!=typeof e||e,n.fail="function"==typeof t&&t,n.domain=S?W.domain:void 0,this._c.push(n),this._a&&this._a.push(n),this._s&&E(this,!1),n.promise},catch:function(e){return this.then(void 0,e)}}),r=function(){var e=new a;this.promise=e,this.resolve=d(X,e,1),this.reject=d(O,e,1)},b.f=z=function(e){return e===T||e===o?new r(e):i(e)}),l(l.G+l.W+l.F*!N,{Promise:T}),n(53)(T,"Promise"),n(225)("Promise"),o=n(7).Promise,l(l.S+l.F*!N,"Promise",{reject:function(e){var t=z(this);return(0,t.reject)(e),t.promise}}),l(l.S+l.F*(u||!N),"Promise",{resolve:function(e){return k(u&&this===o?T:this,e)}}),l(l.S+l.F*!(N&&n(113)(function(e){T.all(e).catch(C)})),"Promise",{all:function(e){var t=this,n=z(t),a=n.resolve,i=n.reject,r=y(function(){var n=[],r=0,o=1;p(e,!1,function(e){var u=r++,s=!1;n.push(void 0),o++,t.resolve(e).then(function(e){s||(s=!0,n[u]=e,--o||a(n))},i)}),--o||a(n)});return r.e&&i(r.v),n.promise},race:function(e){var t=this,n=z(t),a=n.reject,i=y(function(){p(e,!1,function(e){t.resolve(e).then(n.resolve,a)})});return i.e&&a(i.v),n.promise}})},function(e,t){e.exports=function(e,t,n,a){if(!(e instanceof t)||void 0!==a&&a in e)throw TypeError(n+": incorrect invocation!");return e}},function(e,t,n){var a=n(29),i=n(107),r=n(108),o=n(14),u=n(72),s=n(77),d={},c={},t=e.exports=function(e,t,n,l,m){var f,h,p,g,v=m?function(){return e}:s(e),w=a(n,l,t?2:1),b=0;if("function"!=typeof v)throw TypeError(e+" is not iterable!");if(r(v)){for(f=u(e.length);f>b;b++)if((g=t?w(o(h=e[b])[0],h[1]):w(e[b]))===d||g===c)return g}else for(p=v.call(e);!(h=p.next()).done;)if((g=i(p,w,h.value,t))===d||g===c)return g};t.BREAK=d,t.RETURN=c},function(e,t){e.exports=function(e,t,n){var a=void 0===n;switch(t.length){case 0:return a?e():e.call(n);case 1:return a?e(t[0]):e.call(n,t[0]);case 2:return a?e(t[0],t[1]):e.call(n,t[0],t[1]);case 3:return a?e(t[0],t[1],t[2]):e.call(n,t[0],t[1],t[2]);case 4:return a?e(t[0],t[1],t[2],t[3]):e.call(n,t[0],t[1],t[2],t[3])}return e.apply(n,t)}},function(e,t,n){var a=n(8),i=n(110).set,r=a.MutationObserver||a.WebKitMutationObserver,o=a.process,u=a.Promise,s="process"==n(43)(o);e.exports=function(){var e,t,n,d=function(){var a,i;for(s&&(a=o.domain)&&a.exit();e;){i=e.fn,e=e.next;try{i()}catch(a){throw e?n():t=void 0,a}}t=void 0,a&&a.enter()};if(s)n=function(){o.nextTick(d)};else if(!r||a.navigator&&a.navigator.standalone)if(u&&u.resolve){var c=u.resolve(void 0);n=function(){c.then(d)}}else n=function(){i.call(a,d)};else{var l=!0,m=document.createTextNode("");new r(d).observe(m,{characterData:!0}),n=function(){m.data=l=!l}}return function(a){var i={fn:a,next:void 0};t&&(t.next=i),e||(e=i,n()),t=i}}},function(e,t,n){var a=n(8),i=a.navigator;e.exports=i&&i.userAgent||""},function(e,t,n){var a=n(23);e.exports=function(e,t,n){for(var i in t)n&&e[i]?e[i]=t[i]:a(e,i,t[i]);return e}},function(e,t,n){"use strict";var a=n(8),i=n(7),r=n(16),o=n(17),u=n(9)("species");e.exports=function(e){var t="function"==typeof i[e]?i[e]:a[e];o&&t&&!t[u]&&r.f(t,u,{configurable:!0,get:function(){return this}})}},function(e,t,n){"use strict";var a=n(11),i=n(7),r=n(8),o=n(109),u=n(112);a(a.P+a.R,"Promise",{finally:function(e){var t=o(this,i.Promise||r.Promise),n="function"==typeof e;return this.then(n?function(n){return u(t,e()).then(function(){return n})}:e,n?function(n){return u(t,e()).then(function(){throw n})}:e)}})},function(e,t,n){"use strict";var a=n(11),i=n(78),r=n(111);a(a.S,"Promise",{try:function(e){var t=i.f(this),n=r(e);return(n.e?t.reject:t.resolve)(n.v),t.promise}})},function(e,t,n){e.exports={default:n(229),__esModule:!0}},function(e,t,n){n(230),e.exports=n(7).Object.assign},function(e,t,n){var a=n(11);a(a.S+a.F,"Object",{assign:n(231)})},function(e,t,n){"use strict";var a=n(17),i=n(42),r=n(79),o=n(55),u=n(33),s=n(104),d=Object.assign;e.exports=!d||n(30)(function(){var e={},t={},n=Symbol(),a="abcdefghijklmnopqrst";return e[n]=7,a.split("").forEach(function(e){t[e]=e}),7!=d({},e)[n]||Object.keys(d({},t)).join("")!=a})?function(e,t){for(var n=u(e),d=arguments.length,c=1,l=r.f,m=o.f;d>c;)for(var f,h=s(arguments[c++]),p=l?i(h).concat(l(h)):i(h),g=p.length,v=0;g>v;)f=p[v++],a&&!m.call(h,f)||(n[f]=h[f]);return n}:d},function(e,t,n){n(233),e.exports=n(7).Object.getPrototypeOf},function(e,t,n){var a=n(33),i=n(106);n(115)("getPrototypeOf",function(){return function(e){return i(a(e))}})},function(e,t,n){e.exports={default:n(235),__esModule:!0}},function(e,t,n){n(40),n(54),e.exports=n(80).f("iterator")},function(e,t,n){e.exports={default:n(237),__esModule:!0}},function(e,t,n){n(238),n(100),n(243),n(244),e.exports=n(7).Symbol},function(e,t,n){"use strict";var a=n(8),i=n(24),r=n(17),o=n(11),u=n(102),s=n(239).KEY,d=n(30),c=n(74),l=n(53),m=n(52),f=n(9),h=n(80),p=n(81),g=n(240),v=n(241),w=n(14),b=n(20),y=n(33),M=n(32),k=n(67),P=n(39),W=n(71),x=n(242),j=n(119),T=n(79),S=n(16),C=n(42),z=j.f,N=S.f,D=x.f,E=a.Symbol,H=a.JSON,A=H&&H.stringify,_=f("_hidden"),O=f("toPrimitive"),X={}.propertyIsEnumerable,I=c("symbol-registry"),Y=c("symbols"),F=c("op-symbols"),L=Object.prototype,q="function"==typeof E&&!!T.f,G=a.QObject,R=!G||!G.prototype||!G.prototype.findChild,U=r&&d(function(){return 7!=W(N({},"a",{get:function(){return N(this,"a",{value:7}).a}})).a})?function(e,t,n){var a=z(L,t);a&&delete L[t],N(e,t,n),a&&e!==L&&N(L,t,a)}:N,K=function(e){var t=Y[e]=W(E.prototype);return t._k=e,t},J=q&&"symbol"==typeof E.iterator?function(e){return"symbol"==typeof e}:function(e){return e instanceof E},B=function(e,t,n){return e===L&&B(F,t,n),w(e),t=k(t,!0),w(n),i(Y,t)?(n.enumerable?(i(e,_)&&e[_][t]&&(e[_][t]=!1),n=W(n,{enumerable:P(0,!1)})):(i(e,_)||N(e,_,P(1,{})),e[_][t]=!0),U(e,t,n)):N(e,t,n)},$=function(e,t){w(e);for(var n,a=g(t=M(t)),i=0,r=a.length;r>i;)B(e,n=a[i++],t[n]);return e},V=function(e,t){return void 0===t?W(e):$(W(e),t)},Q=function(e){var t=X.call(this,e=k(e,!0));return!(this===L&&i(Y,e)&&!i(F,e))&&(!(t||!i(this,e)||!i(Y,e)||i(this,_)&&this[_][e])||t)},Z=function(e,t){if(e=M(e),t=k(t,!0),e!==L||!i(Y,t)||i(F,t)){var n=z(e,t);return!n||!i(Y,t)||i(e,_)&&e[_][t]||(n.enumerable=!0),n}},ee=function(e){for(var t,n=D(M(e)),a=[],r=0;n.length>r;)i(Y,t=n[r++])||t==_||t==s||a.push(t);return a},te=function(e){for(var t,n=e===L,a=D(n?F:M(e)),r=[],o=0;a.length>o;)!i(Y,t=a[o++])||n&&!i(L,t)||r.push(Y[t]);return r};q||(E=function(){if(this instanceof E)throw TypeError("Symbol is not a constructor!");var e=m(arguments.length>0?arguments[0]:void 0),t=function(n){this===L&&t.call(F,n),i(this,_)&&i(this[_],e)&&(this[_][e]=!1),U(this,e,P(1,n))};return r&&R&&U(L,e,{configurable:!0,set:t}),K(e)},u(E.prototype,"toString",function(){return this._k}),j.f=Z,S.f=B,n(118).f=x.f=ee,n(55).f=Q,T.f=te,r&&!n(41)&&u(L,"propertyIsEnumerable",Q,!0),h.f=function(e){return K(f(e))}),o(o.G+o.W+o.F*!q,{Symbol:E});for(var ne="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),ae=0;ne.length>ae;)f(ne[ae++]);for(var ie=C(f.store),re=0;ie.length>re;)p(ie[re++]);o(o.S+o.F*!q,"Symbol",{for:function(e){return i(I,e+="")?I[e]:I[e]=E(e)},keyFor:function(e){if(!J(e))throw TypeError(e+" is not a symbol!");for(var t in I)if(I[t]===e)return t},useSetter:function(){R=!0},useSimple:function(){R=!1}}),o(o.S+o.F*!q,"Object",{create:V,defineProperty:B,defineProperties:$,getOwnPropertyDescriptor:Z,getOwnPropertyNames:ee,getOwnPropertySymbols:te});var oe=d(function(){T.f(1)});o(o.S+o.F*oe,"Object",{getOwnPropertySymbols:function(e){return T.f(y(e))}}),H&&o(o.S+o.F*(!q||d(function(){var e=E();return"[null]"!=A([e])||"{}"!=A({a:e})||"{}"!=A(Object(e))})),"JSON",{stringify:function(e){for(var t,n,a=[e],i=1;arguments.length>i;)a.push(arguments[i++]);if(n=t=a[1],(b(t)||void 0!==e)&&!J(e))return v(t)||(t=function(e,t){if("function"==typeof n&&(t=n.call(this,e,t)),!J(t))return t}),a[1]=t,A.apply(H,a)}}),E.prototype[O]||n(23)(E.prototype,O,E.prototype.valueOf),l(E,"Symbol"),l(Math,"Math",!0),l(a.JSON,"JSON",!0)},function(e,t,n){var a=n(52)("meta"),i=n(20),r=n(24),o=n(16).f,u=0,s=Object.isExtensible||function(){return!0},d=!n(30)(function(){return s(Object.preventExtensions({}))}),c=function(e){o(e,a,{value:{i:"O"+ ++u,w:{}}})},l=function(e,t){if(!i(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!r(e,a)){if(!s(e))return"F";if(!t)return"E";c(e)}return e[a].i},m=function(e,t){if(!r(e,a)){if(!s(e))return!0;if(!t)return!1;c(e)}return e[a].w},f=function(e){return d&&h.NEED&&s(e)&&!r(e,a)&&c(e),e},h=e.exports={KEY:a,NEED:!1,fastKey:l,getWeak:m,onFreeze:f}},function(e,t,n){var a=n(42),i=n(79),r=n(55);e.exports=function(e){var t=a(e),n=i.f;if(n)for(var o,u=n(e),s=r.f,d=0;u.length>d;)s.call(e,o=u[d++])&&t.push(o);return t}},function(e,t,n){var a=n(43);e.exports=Array.isArray||function(e){return"Array"==a(e)}},function(e,t,n){var a=n(32),i=n(118).f,r={}.toString,o="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],u=function(e){try{return i(e)}catch(e){return o.slice()}};e.exports.f=function(e){return o&&"[object Window]"==r.call(e)?u(e):i(a(e))}},function(e,t,n){n(81)("asyncIterator")},function(e,t,n){n(81)("observable")},function(e,t,n){e.exports={default:n(246),__esModule:!0}},function(e,t,n){n(247),e.exports=n(7).Object.setPrototypeOf},function(e,t,n){var a=n(11);a(a.S,"Object",{setPrototypeOf:n(248).set})},function(e,t,n){var a=n(20),i=n(14),r=function(e,t){if(i(e),!a(t)&&null!==t)throw TypeError(t+": can't set as prototype!")};e.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(e,t,a){try{a=n(29)(Function.call,n(119).f(Object.prototype,"__proto__").set,2),a(e,[]),t=!(e instanceof Array)}catch(e){t=!0}return function(e,n){return r(e,n),t?e.__proto__=n:a(e,n),e}}({},!1):void 0),check:r}},function(e,t,n){e.exports={default:n(250),__esModule:!0}},function(e,t,n){n(251);var a=n(7).Object;e.exports=function(e,t){return a.create(e,t)}},function(e,t,n){var a=n(11);a(a.S,"Object",{create:n(71)})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var a=n(253),i=function(e){return e&&e.__esModule?e:{default:e}}(a);t.default=i.default,e.exports=t.default},function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function u(e){return e.key||""}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){var n=[],a=!0,i=!1,r=void 0;try{for(var o,u=e[Symbol.iterator]();!(a=(o=u.next()).done)&&(n.push(o.value),!t||n.length!==t);a=!0);}catch(e){i=!0,r=e}finally{try{!a&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),d=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},c=function(){function e(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,n,a){return n&&e(t.prototype,n),a&&e(t,a),t}}(),l=n(12),m=a(l);n(254);var f=n(255),h=a(f),p=n(258),g=n(82),v=(0,p.whichTransitionEvent)(),w=!v,b=function(e){function t(){var e,n,a,o;i(this,t);for(var c=arguments.length,m=Array(c),f=0;f<c;f++)m[f]=arguments[f];return n=a=r(this,(e=t.__proto__||Object.getPrototypeOf(t)).call.apply(e,[this].concat(m))),a.state={children:l.Children.toArray(a.props.children).map(function(e){return d({},e,{element:e,appearing:!0})})},a.childrenData={},a.parentData={domNode:null,boundingBox:null},a.heightPlaceholderData={domNode:null},a.remainingAnimations=0,a.childrenToAnimate=[],a.runAnimation=function(){a.state.children.filter(a.doesChildNeedToBeAnimated).forEach(function(e,t){a.remainingAnimations+=1,a.childrenToAnimate.push(u(e)),a.animateChild(e,t)}),"function"==typeof a.props.onStartAll&&a.callChildrenHook(a.props.onStartAll)},a.doesChildNeedToBeAnimated=function(e){if(!u(e))return!1;var t=a.getChildData(u(e)),n=t.domNode,i=t.boundingBox,r=a.parentData.boundingBox;if(!n)return!1;var o=a.props,d=o.appearAnimation,c=o.enterAnimation,l=o.leaveAnimation,m=o.getPosition,f=e.appearing&&d,h=e.entering&&c,g=e.leaving&&l;if(f||h||g)return!0;var v=(0,p.getPositionDelta)({childDomNode:n,childBoundingBox:i,parentBoundingBox:r,getPosition:m}),w=s(v,2),b=w[0],y=w[1];return 0!==b||0!==y},o=n,r(a,o)}return o(t,e),c(t,[{key:"componentDidMount",value:function(){this.props.appearAnimation&&!this.isAnimationDisabled(this.props)&&(this.prepForAnimation(),this.runAnimation())}},{key:"componentWillReceiveProps",value:function(e){this.updateBoundingBoxCaches();var t=l.Children.toArray(e.children);this.setState({children:this.isAnimationDisabled(e)?t.map(function(e){return d({},e,{element:e})}):this.calculateNextSetOfChildren(t)})}},{key:"componentDidUpdate",value:function(e){var t=l.Children.toArray(this.props.children).map(function(e){return e.key}),n=l.Children.toArray(e.children).map(function(e){return e.key});!(0,g.arraysEqual)(t,n)&&!this.isAnimationDisabled(this.props)&&(this.prepForAnimation(),this.runAnimation())}},{key:"calculateNextSetOfChildren",value:function(e){var t=this,n=e.map(function(e){var n=t.findChildByKey(e.key||""),a=!n||n.leaving;return d({},e,{element:e,entering:a})}),a=0;return this.state.children.forEach(function(i,r){if(!e.find(function(e){return e.key===u(i)})&&t.props.leaveAnimation){var o=d({},i,{leaving:!0}),s=r+a;n.splice(s,0,o),a+=1}}),n}},{key:"prepForAnimation",value:function(){var e=this,t=this.props,n=t.leaveAnimation,a=t.maintainContainerHeight,i=t.getPosition;if(n){this.state.children.filter(function(e){return e.leaving}).forEach(function(t){var n=e.getChildData(u(t));n.boundingBox&&(0,p.removeNodeFromDOMFlow)(n,e.props.verticalAlignment)}),a&&this.heightPlaceholderData.domNode&&(0,p.updateHeightPlaceholder)({domNode:this.heightPlaceholderData.domNode,parentData:this.parentData,getPosition:i})}this.state.children.forEach(function(t){var n=e.getChildData(u(t)),a=n.domNode;a&&(t.entering||t.leaving||(0,p.applyStylesToDOMNode)({domNode:a,styles:{transition:""}}))})}},{key:"animateChild",value:function(e,t){var n=this,a=this.getChildData(u(e)),i=a.domNode;i&&((0,p.applyStylesToDOMNode)({domNode:i,styles:this.computeInitialStyles(e)}),this.props.onStart&&this.props.onStart(e,i),requestAnimationFrame(function(){requestAnimationFrame(function(){var a={transition:(0,p.createTransitionString)(t,n.props),transform:"",opacity:""};e.appearing&&n.props.appearAnimation?a=d({},a,n.props.appearAnimation.to):e.entering&&n.props.enterAnimation?a=d({},a,n.props.enterAnimation.to):e.leaving&&n.props.leaveAnimation&&(a=d({},a,n.props.leaveAnimation.to)),(0,p.applyStylesToDOMNode)({domNode:i,styles:a})})}),this.bindTransitionEndHandler(e))}},{key:"bindTransitionEndHandler",value:function(e){var t=this,n=this.getChildData(u(e)),a=n.domNode;if(a){var i=function n(i){i.target===a&&(a.style.transition="",t.triggerFinishHooks(e,a),a.removeEventListener(v,n),e.leaving&&t.removeChildData(u(e)))};a.addEventListener(v,i)}}},{key:"triggerFinishHooks",value:function(e,t){var n=this;if(this.props.onFinish&&this.props.onFinish(e,t),this.remainingAnimations-=1,0===this.remainingAnimations){var a=this.state.children.filter(function(e){return!e.leaving}).map(function(e){return d({},e,{appearing:!1,entering:!1})});this.setState({children:a},function(){"function"==typeof n.props.onFinishAll&&n.callChildrenHook(n.props.onFinishAll),n.childrenToAnimate=[]}),this.heightPlaceholderData.domNode&&(this.heightPlaceholderData.domNode.style.height="0")}}},{key:"callChildrenHook",value:function(e){var t=this,n=[],a=[];this.childrenToAnimate.forEach(function(e){var i=t.findChildByKey(e);i&&(n.push(i),t.hasChildData(e)&&a.push(t.getChildData(e).domNode))}),e(n,a)}},{key:"updateBoundingBoxCaches",value:function(){var e=this,t=this.parentData.domNode;t&&(this.parentData.boundingBox=this.props.getPosition(t),this.state.children.forEach(function(n){var a=u(n);if(a&&e.hasChildData(a)){var i=e.getChildData(a);i.domNode&&n&&e.setChildData(a,{boundingBox:(0,p.getRelativeBoundingBox)({childDomNode:i.domNode,parentDomNode:t,getPosition:e.props.getPosition})})}}))}},{key:"computeInitialStyles",value:function(e){if(e.appearing)return this.props.appearAnimation?this.props.appearAnimation.from:{};if(e.entering)return this.props.enterAnimation?d({position:"",top:"",left:"",right:"",bottom:""},this.props.enterAnimation.from):{};if(e.leaving)return this.props.leaveAnimation?this.props.leaveAnimation.from:{};var t=this.getChildData(u(e)),n=t.domNode,a=t.boundingBox,i=this.parentData.boundingBox;if(!n)return{};var r=(0,p.getPositionDelta)({childDomNode:n,childBoundingBox:a,parentBoundingBox:i,getPosition:this.props.getPosition}),o=s(r,2);return{transform:"translate("+o[0]+"px, "+o[1]+"px)"}}},{key:"isAnimationDisabled",value:function(e){return w||e.disableAllAnimations||0===e.duration&&0===e.delay&&0===e.staggerDurationBy&&0===e.staggerDelayBy}},{key:"findChildByKey",value:function(e){return this.state.children.find(function(t){return u(t)===e})}},{key:"hasChildData",value:function(e){return Object.prototype.hasOwnProperty.call(this.childrenData,e)}},{key:"getChildData",value:function(e){return this.hasChildData(e)?this.childrenData[e]:{}}},{key:"setChildData",value:function(e,t){this.childrenData[e]=d({},this.getChildData(e),t)}},{key:"removeChildData",value:function(e){delete this.childrenData[e]}},{key:"createHeightPlaceholder",value:function(){var e=this,t=this.props.typeName,n="ul"===t||"ol"===t,a=n?"li":"div";return m.default.createElement(a,{key:"height-placeholder",ref:function(t){e.heightPlaceholderData.domNode=t},style:{visibility:"hidden",height:0}})}},{key:"childrenWithRefs",value:function(){var e=this;return this.state.children.map(function(t){return m.default.cloneElement(t.element,{ref:function(n){if(n){var a=(0,p.getNativeNode)(n);e.setChildData(u(t),{domNode:a})}}})})}},{key:"render",value:function(){var e=this,t=this.props,n=t.typeName,a=t.delegated,i=t.leaveAnimation,r=t.maintainContainerHeight,o=d({},a,{ref:function(t){e.parentData.domNode=t}}),u=this.childrenWithRefs();return i&&r&&u.push(this.createHeightPlaceholder()),m.default.createElement(n,o,u)}}]),t}(l.Component);t.default=(0,h.default)(b),e.exports=t.default},function(e,t,n){"use strict";Array.prototype.find||(Array.prototype.find=function(e){if(null===this)throw new TypeError("Array.prototype.find called on null or undefined");if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var t=Object(this),n=t.length>>>0,a=arguments[1],i=void 0,r=0;r<n;r++)if(i=t[r],e.call(a,i,r,t))return i}),Array.prototype.every||(Array.prototype.every=function(e,t){var n,a;if(null==this)throw new TypeError("this is null or not defined");var i=Object(this),r=i.length>>>0;if("function"!=typeof e)throw new TypeError;for(arguments.length>1&&(n=t),a=0;a<r;){var o;if(a in i){o=i[a];if(!e.call(n,o,a,i))return!1}a++}return!0}),Array.isArray||(Array.isArray=function(e){return"[object Array]"===Object.prototype.toString.call(e)})},function(e,t,n){"use strict";(function(a){function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function u(e){var t,n;return n=t=function(t){function n(){return i(this,n),r(this,(n.__proto__||Object.getPrototypeOf(n)).apply(this,arguments))}return o(n,t),c(n,[{key:"checkForStatelessFunctionalComponents",value:function(e){if("production"!==g){l.Children.toArray(e).every(function(e){return!(0,p.isElementAnSFC)(e)||void 0===e.key})||(0,f.statelessFunctionalComponentSupplied)()}}},{key:"convertProps",value:function(e){var t={children:e.children,easing:e.easing,onStart:e.onStart,onFinish:e.onFinish,onStartAll:e.onStartAll,onFinishAll:e.onFinishAll,typeName:e.typeName,disableAllAnimations:e.disableAllAnimations,getPosition:e.getPosition,maintainContainerHeight:e.maintainContainerHeight,verticalAlignment:e.verticalAlignment,duration:this.convertTimingProp("duration"),delay:this.convertTimingProp("delay"),staggerDurationBy:this.convertTimingProp("staggerDurationBy"),staggerDelayBy:this.convertTimingProp("staggerDelayBy"),appearAnimation:this.convertAnimationProp(e.appearAnimation,h.appearPresets),enterAnimation:this.convertAnimationProp(e.enterAnimation,h.enterPresets),leaveAnimation:this.convertAnimationProp(e.leaveAnimation,h.leavePresets),delegated:{}};this.checkForStatelessFunctionalComponents(t.children),void 0!==e.disableAnimations&&("production"!==g&&(0,f.deprecatedDisableAnimations)(),t.disableAllAnimations=e.disableAnimations);var n=Object.keys(t),a=(0,p.omit)(this.props,n);return a.style=d({position:"relative"},a.style),t.delegated=a,t}},{key:"convertTimingProp",value:function(e){var t=this.props[e],a="number"==typeof t?t:parseInt(t,10);if(isNaN(a)){var i=n.defaultProps[e];return"production"!==g&&(0,f.invalidTypeForTimingProp)({prop:e,value:t,defaultValue:i}),i}return a}},{key:"convertAnimationProp",value:function(e,t){switch(void 0===e?"undefined":s(e)){case"boolean":return t[e?h.defaultPreset:h.disablePreset];case"string":var n=Object.keys(t);return-1===n.indexOf(e)?("production"!==g&&(0,f.invalidEnterLeavePreset)({value:e,acceptableValues:n.join(", "),defaultValue:h.defaultPreset}),t[h.defaultPreset]):t[e];default:return e}}},{key:"render",value:function(){return m.default.createElement(e,this.convertProps(this.props))}}]),n}(l.Component),t.defaultProps={easing:"ease-in-out",duration:350,delay:0,staggerDurationBy:0,staggerDelayBy:0,typeName:"div",enterAnimation:h.defaultPreset,leaveAnimation:h.defaultPreset,disableAllAnimations:!1,getPosition:function(e){return e.getBoundingClientRect()},maintainContainerHeight:!1,verticalAlignment:"top"},n}Object.defineProperty(t,"__esModule",{value:!0});var s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},d=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},c=function(){function e(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,n,a){return n&&e(t.prototype,n),a&&e(t,a),t}}(),l=n(12),m=function(e){return e&&e.__esModule?e:{default:e}}(l),f=n(256),h=n(257),p=n(82),g=void 0;try{g=a.env.NODE_ENV}catch(e){g="development"}t.default=u,e.exports=t.default}).call(t,n(18))},function(e,t,n){"use strict";function a(e){var t=!1;return function(){t||(console.warn(e),t=!0)}}Object.defineProperty(t,"__esModule",{value:!0});t.statelessFunctionalComponentSupplied=a("\n>> Error, via react-flip-move <<\n\nYou provided a stateless functional component as a child to <FlipMove>. Unfortunately, SFCs aren't supported, because Flip Move needs access to the backing instances via refs, and SFCs don't have a public instance that holds that info.\n\nPlease wrap your components in a native element (eg. <div>), or a non-functional component.\n"),t.invalidTypeForTimingProp=function(e){return console.error("\n>> Error, via react-flip-move <<\n\nThe prop you provided for '"+e.prop+"' is invalid. It needs to be a positive integer, or a string that can be resolved to a number. The value you provided is '"+e.value+"'.\n\nAs a result, the default value for this parameter will be used, which is '"+e.defaultValue+"'.\n")},t.deprecatedDisableAnimations=a("\n>> Warning, via react-flip-move <<\n\nThe 'disableAnimations' prop you provided is deprecated. Please switch to use 'disableAllAnimations'.\n\nThis will become a silent error in future versions of react-flip-move.\n"),t.invalidEnterLeavePreset=function(e){return console.error("\n>> Error, via react-flip-move <<\n\nThe enter/leave preset you provided is invalid. We don't currently have a '"+e.value+" preset.'\n\nAcceptable values are "+e.acceptableValues+". The default value of '"+e.defaultValue+"' will be used.\n")}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var a=t.enterPresets={elevator:{from:{transform:"scale(0)",opacity:"0"},to:{transform:"",opacity:""}},fade:{from:{opacity:"0"},to:{opacity:""}},accordionVertical:{from:{transform:"scaleY(0)",transformOrigin:"center top"},to:{transform:"",transformOrigin:"center top"}},accordionHorizontal:{from:{transform:"scaleX(0)",transformOrigin:"left center"},to:{transform:"",transformOrigin:"left center"}},none:null},i=t.leavePresets={elevator:{from:{transform:"scale(1)",opacity:"1"},to:{transform:"scale(0)",opacity:"0"}},fade:{from:{opacity:"1"},to:{opacity:"0"}},accordionVertical:{from:{transform:"scaleY(1)",transformOrigin:"center top"},to:{transform:"scaleY(0)",transformOrigin:"center top"}},accordionHorizontal:{from:{transform:"scaleX(1)",transformOrigin:"left center"},to:{transform:"scaleX(0)",transformOrigin:"left center"}},none:null};t.appearPresets=a;a.accordianVertical=a.accordionVertical,a.accordianHorizontal=a.accordionHorizontal,i.accordianVertical=i.accordionVertical,i.accordianHorizontal=i.accordionHorizontal;t.defaultPreset="elevator",t.disablePreset="none"},function(e,t,n){"use strict";function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e){var t=e.domNode,n=e.styles;Object.keys(n).forEach(function(e){t.style.setProperty((0,s.hyphenate)(e),n[e])})}function r(){var e={transition:"transitionend","-o-transition":"oTransitionEnd","-moz-transition":"transitionend","-webkit-transition":"webkitTransitionEnd"};if("undefined"==typeof document)return"";var t=document.createElement("fakeelement"),n=Object.keys(e).find(function(e){return void 0!==t.style.getPropertyValue(e)});return n?e[n]:""}Object.defineProperty(t,"__esModule",{value:!0}),t.createTransitionString=t.getNativeNode=t.updateHeightPlaceholder=t.removeNodeFromDOMFlow=t.getPositionDelta=t.getRelativeBoundingBox=void 0;var o=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e};t.applyStylesToDOMNode=i,t.whichTransitionEvent=r;var u=n(12),s=n(82);t.getRelativeBoundingBox=function(e){var t=e.childDomNode,n=e.parentDomNode,a=e.getPosition,i=a(n),r=a(t),o=r.top,u=r.left,s=r.right,d=r.bottom,c=r.width,l=r.height;return{top:o-i.top,left:u-i.left,right:i.right-s,bottom:i.bottom-d,width:c,height:l}},t.getPositionDelta=function(e){var t=e.childDomNode,n=e.childBoundingBox,a=e.parentBoundingBox,i=e.getPosition,r={top:0,left:0,right:0,bottom:0,height:0,width:0},o=n||r,u=a||r,s=i(t),d={top:s.top-u.top,left:s.left-u.left};return[o.left-d.left,o.top-d.top]},t.removeNodeFromDOMFlow=function(e,t){var n=e.domNode,r=e.boundingBox;if(n&&r){var u=window.getComputedStyle(n),s=["margin-top","margin-left","margin-right"],d=s.reduce(function(e,t){var n=u.getPropertyValue(t);return o({},e,a({},t,Number(n.replace("px",""))))},{});i({domNode:n,styles:{position:"absolute",top:("bottom"===t?r.top-r.height:r.top)-d["margin-top"]+"px",left:r.left-d["margin-left"]+"px",right:r.right-d["margin-right"]+"px"}})}},t.updateHeightPlaceholder=function(e){var t=e.domNode,n=e.parentData,a=e.getPosition,r=n.domNode,o=n.boundingBox;if(r&&o){i({domNode:t,styles:{height:"0"}});var u=o.height,s=a(r).height,d=u-s;i({domNode:t,styles:{height:d>0?d+"px":"0"}})}},t.getNativeNode=function(e){if("undefined"==typeof HTMLElement)return null;if(e instanceof HTMLElement)return e;var t=(0,u.findDOMNode)(e);return t instanceof HTMLElement?t:null},t.createTransitionString=function(e,t){var n=t.delay,a=t.duration,i=t.staggerDurationBy,r=t.staggerDelayBy,o=t.easing;return n+=e*r,a+=e*i,["transform","opacity"].map(function(e){return e+" "+a+"ms "+o+" "+n+"ms"}).join(", ")}},function(e,t,n){var a,i,r;/*!
Autosize 3.0.21
license: MIT
http://www.jacklmoore.com/autosize
*/
-!function(n,a){o=[t,e],r=a,void 0!==(i="function"==typeof r?r.apply(t,o):r)&&(e.exports=i)}(0,function(e,t){"use strict";function n(e){function t(t){var n=e.style.width;e.style.width="0px",e.offsetWidth,e.style.width=n,e.style.overflowY=t}function n(e){for(var t=[];e&&e.parentNode&&e.parentNode instanceof Element;)e.parentNode.scrollTop&&t.push({node:e.parentNode,scrollTop:e.parentNode.scrollTop}),e=e.parentNode;return t}function r(){var t=e.style.height,r=n(e),o=document.documentElement&&document.documentElement.scrollTop;e.style.height="auto";var i=e.scrollHeight+u;if(0===e.scrollHeight)return void(e.style.height=t);e.style.height=i+"px",s=e.clientWidth,r.forEach(function(e){e.node.scrollTop=e.scrollTop}),o&&(document.documentElement.scrollTop=o)}function o(){r();var n=Math.round(parseFloat(e.style.height)),o=window.getComputedStyle(e,null),i="content-box"===o.boxSizing?Math.round(parseFloat(o.height)):e.offsetHeight;if(i!==n?"hidden"===o.overflowY&&(t("scroll"),r(),i="content-box"===o.boxSizing?Math.round(parseFloat(window.getComputedStyle(e,null).height)):e.offsetHeight):"hidden"!==o.overflowY&&(t("hidden"),r(),i="content-box"===o.boxSizing?Math.round(parseFloat(window.getComputedStyle(e,null).height)):e.offsetHeight),c!==i){c=i;var u=a("autosize:resized");try{e.dispatchEvent(u)}catch(e){}}}if(e&&e.nodeName&&"TEXTAREA"===e.nodeName&&!i.has(e)){var u=null,s=e.clientWidth,c=null,l=function(){e.clientWidth!==s&&o()},f=function(t){window.removeEventListener("resize",l,!1),e.removeEventListener("input",o,!1),e.removeEventListener("keyup",o,!1),e.removeEventListener("autosize:destroy",f,!1),e.removeEventListener("autosize:update",o,!1),Object.keys(t).forEach(function(n){e.style[n]=t[n]}),i.delete(e)}.bind(e,{height:e.style.height,resize:e.style.resize,overflowY:e.style.overflowY,overflowX:e.style.overflowX,wordWrap:e.style.wordWrap});e.addEventListener("autosize:destroy",f,!1),"onpropertychange"in e&&"oninput"in e&&e.addEventListener("keyup",o,!1),window.addEventListener("resize",l,!1),e.addEventListener("input",o,!1),e.addEventListener("autosize:update",o,!1),e.style.overflowX="hidden",e.style.wordWrap="break-word",i.set(e,{destroy:f,update:o}),function(){var t=window.getComputedStyle(e,null);"vertical"===t.resize?e.style.resize="none":"both"===t.resize&&(e.style.resize="horizontal"),u="content-box"===t.boxSizing?-(parseFloat(t.paddingTop)+parseFloat(t.paddingBottom)):parseFloat(t.borderTopWidth)+parseFloat(t.borderBottomWidth),isNaN(u)&&(u=0),o()}()}}function r(e){var t=i.get(e);t&&t.destroy()}function o(e){var t=i.get(e);t&&t.update()}var i="function"==typeof Map?new Map:function(){var e=[],t=[];return{has:function(t){return e.indexOf(t)>-1},get:function(n){return t[e.indexOf(n)]},set:function(n,r){-1===e.indexOf(n)&&(e.push(n),t.push(r))},delete:function(n){var r=e.indexOf(n);r>-1&&(e.splice(r,1),t.splice(r,1))}}}(),a=function(e){return new Event(e,{bubbles:!0})};try{new Event("test")}catch(e){a=function(e){var t=document.createEvent("Event");return t.initEvent(e,!0,!1),t}}var u=null;"undefined"==typeof window||"function"!=typeof window.getComputedStyle?(u=function(e){return e},u.destroy=function(e){return e},u.update=function(e){return e}):(u=function(e,t){return e&&Array.prototype.forEach.call(e.length?e:[e],function(e){return n(e)}),e},u.destroy=function(e){return e&&Array.prototype.forEach.call(e.length?e:[e],r),e},u.update=function(e){return e&&Array.prototype.forEach.call(e.length?e:[e],o),e}),t.exports=u})},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return new i.default({phrases:w[e]||w.en,locale:e})};var o=n(152),i=r(o),a=n(153),u=r(a),s=n(154),c=r(s),l=n(155),f=r(l),p=n(156),d=r(p),h=n(157),m=r(h),v=n(158),y=r(v),g=n(159),b=r(g),w={zh:u.default,"zh-CN":u.default,"zh-TW":c.default,en:f.default,"es-ES":d.default,fr:m.default,ru:y.default,de:b.default}},function(e,t,n){var r,o;!function(n,i){r=[],void 0!==(o=function(){return i(n)}.apply(t,r))&&(e.exports=o)}(this,function(e){"use strict";function t(e){e=e||{},this.phrases={},this.extend(e.phrases||{}),this.currentLocale=e.locale||"en",this.allowMissing=!!e.allowMissing,this.warn=e.warn||s}function n(e){var t,n,r,o={};for(t in e)if(e.hasOwnProperty(t)){n=e[t];for(r in n)o[n[r]]=t}return o}function r(e){var t=/^\s+|\s+$/g;return e.replace(t,"")}function o(e,t,n){var o,i,u;return null!=n&&e?(i=e.split(l),u=i[a(t,n)]||i[0],o=r(u)):o=e,o}function i(e){var t=n(p);return t[e]||t.en}function a(e,t){return f[i(e)](t)}function u(e,t){for(var n in t)"_"!==n&&t.hasOwnProperty(n)&&(e=e.replace(new RegExp("%\\{"+n+"\\}","g"),t[n]));return e}function s(t){e.console&&e.console.warn&&e.console.warn("WARNING: "+t)}function c(e){var t={};for(var n in e)t[n]=e[n];return t}t.VERSION="0.4.3",t.prototype.locale=function(e){return e&&(this.currentLocale=e),this.currentLocale},t.prototype.extend=function(e,t){var n;for(var r in e)e.hasOwnProperty(r)&&(n=e[r],t&&(r=t+"."+r),"object"==typeof n?this.extend(n,r):this.phrases[r]=n)},t.prototype.clear=function(){this.phrases={}},t.prototype.replace=function(e){this.clear(),this.extend(e)},t.prototype.t=function(e,t){var n,r;return t=null==t?{}:t,"number"==typeof t&&(t={smart_count:t}),"string"==typeof this.phrases[e]?n=this.phrases[e]:"string"==typeof t._?n=t._:this.allowMissing?n=e:(this.warn('Missing translation for key: "'+e+'"'),r=e),"string"==typeof n&&(t=c(t),r=o(n,this.currentLocale,t.smart_count),r=u(r,t)),r},t.prototype.has=function(e){return e in this.phrases};var l="||||",f={chinese:function(e){return 0},german:function(e){return 1!==e?1:0},french:function(e){return e>1?1:0},russian:function(e){return e%10==1&&e%100!=11?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2},czech:function(e){return 1===e?0:e>=2&&e<=4?1:2},polish:function(e){return 1===e?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2},icelandic:function(e){return e%10!=1||e%100==11?1:0}},p={chinese:["fa","id","ja","ko","lo","ms","th","tr","zh"],german:["da","de","en","es","fi","el","he","hu","it","nl","no","pt","sv"],french:["fr","tl","pt-br"],russian:["hr","ru"],czech:["cs"],polish:["pl"],icelandic:["is"]};return t})},function(e,t){e.exports={init:"Gitalk 加载中 ...","no-found-related":"未找到相关的 %{link} 进行评论","please-contact":"请联系 %{user} 初始化创建","init-issue":"初始化 Issue","leave-a-comment":"说点什么",preview:"预览",edit:"编辑",comment:"评论","support-markdown":"支持 Markdown 语法","login-with-github":"使用 GitHub 登录","first-comment-person":"来做第一个留言的人吧!",commented:"发表于","load-more":"加载更多",counts:"%{counts} 条评论","sort-asc":"从旧到新排序","sort-desc":"从新到旧排序",logout:"注销",anonymous:"未登录用户"}},function(e,t){e.exports={init:"Gitalk 載入中…","no-found-related":"未找到相關的 %{link}","please-contact":"請聯絡 %{user} 初始化評論","init-issue":"初始化 Issue","leave-a-comment":"寫點什麼",preview:"預覽",edit:"編輯",comment:"評論","support-markdown":"支援 Markdown 語法","login-with-github":"使用 GitHub 登入","first-comment-person":"成為首個留言的人吧!",commented:"評論於","load-more":"載入更多",counts:"%{counts} 筆評論","sort-asc":"從舊至新排序","sort-desc":"從新至舊排序",logout:"登出",anonymous:"訪客"}},function(e,t){e.exports={init:"Gitalking ...","no-found-related":"Related %{link} not found","please-contact":"Please contact %{user} to initialize the comment","init-issue":"Init Issue","leave-a-comment":"Leave a comment",preview:"Preview",edit:"Edit",comment:"Comment","support-markdown":"Markdown is supported","login-with-github":"Login with GitHub","first-comment-person":"Be the first person to leave a comment!",commented:"commented","load-more":"Load more",counts:"%{counts} comment |||| %{counts} comments","sort-asc":"Sort by Oldest","sort-desc":"Sort by Latest",logout:"Logout",anonymous:"Anonymous"}},function(e,t){e.exports={init:"Gitalking ...","no-found-related":"Link %{link} no encontrado","please-contact":"Por favor contacta con %{user} para inicializar el comentario","init-issue":"Iniciar Issue","leave-a-comment":"Deja un comentario",preview:"Avance",edit:"Editar",comment:"Comentario","support-markdown":"Markdown es soportado","login-with-github":"Entrar con GitHub","first-comment-person":"Sé el primero en dejar un comentario!",commented:"comentó","load-more":"Cargar más",counts:"%{counts} comentario |||| %{counts} comentarios","sort-asc":"Ordenar por Antiguos","sort-desc":"Ordenar por Recientes",logout:"Salir",anonymous:"Anónimo"}},function(e,t){e.exports={init:"Gitalking ...","no-found-related":"Lien %{link} non trouvé","please-contact":"S’il vous plaît contactez %{user} pour initialiser les commentaires","init-issue":"Initialisation des issues","leave-a-comment":"Laisser un commentaire",preview:"Aperçu",edit:"Modifier",comment:"Commentaire","support-markdown":"Markdown est supporté","login-with-github":"Se connecter avec GitHub","first-comment-person":"Être le premier à laisser un commentaire !",commented:"commenter","load-more":"Charger plus",counts:"%{counts} commentaire |||| %{counts} commentaires","sort-asc":"Trier par plus ancien","sort-desc":"Trier par plus récent",logout:"Déconnexion",anonymous:"Anonyme"}},function(e,t){e.exports={init:"Gitalking ...","no-found-related":"Связанные %{link} не найдены","please-contact":"Пожалуйста, свяжитесь с %{user} чтобы инициализировать комментарий","init-issue":"Выпуск инициализации","leave-a-comment":"Оставить комментарий",preview:"Предварительный просмотр",edit:"Pедактировать",comment:"Комментарий","support-markdown":"Поддерживается Markdown","login-with-github":"Вход через GitHub","first-comment-person":"Будьте первым, кто оставил комментарий",commented:"прокомментированный","load-more":"Загрузить ещё",counts:"%{counts} комментарий |||| %{counts} комментарьев","sort-asc":"Сортировать по старым","sort-desc":"Сортировать по последним",logout:"Выход",anonymous:"Анонимный"}},function(e,t){e.exports={init:"Gitalking ...","no-found-related":"Zugehöriger %{link} nicht gefunden","please-contact":"Bitte kontaktiere %{user} um den Kommentar zu initialisieren","init-issue":"Initialisiere Issue","leave-a-comment":"Hinterlasse einen Kommentar",preview:"Vorschau",edit:"Editieren",comment:"Kommentieren","support-markdown":"Markdown wird unterstützt","login-with-github":"Mit GitHub-Account anmelden","first-comment-person":"Sei die erste Person, welche einen Kommentar hinterlässt!",commented:"kommentierte","load-more":"Zeige mehr",counts:"%{counts} Kommentar |||| %{counts} Kommentare","sort-asc":"Älteste zuerst","sort-desc":"Neuste zuerst",logout:"Abmelden",anonymous:"Anonym"}},function(e,t){},function(e,t,n){e.exports={default:n(162),__esModule:!0}},function(e,t,n){n(163),e.exports=n(0).Object.keys},function(e,t,n){var r=n(17),o=n(22);n(65)("keys",function(){return function(e){return o(r(e))}})},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var o=n(165),i=r(o),a=n(168),u=r(a);t.default=function(){function e(e,t){var n=[],r=!0,o=!1,i=void 0;try{for(var a,s=(0,u.default)(e);!(r=(a=s.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{!r&&s.return&&s.return()}finally{if(o)throw i}}return n}return function(t,n){if(Array.isArray(t))return t;if((0,i.default)(Object(t)))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}()},function(e,t,n){e.exports={default:n(166),__esModule:!0}},function(e,t,n){n(27),n(20),e.exports=n(167)},function(e,t,n){var r=n(41),o=n(2)("iterator"),i=n(15);e.exports=n(0).isIterable=function(e){var t=Object(e);return void 0!==t[o]||"@@iterator"in t||i.hasOwnProperty(r(t))}},function(e,t,n){e.exports={default:n(169),__esModule:!0}},function(e,t,n){n(27),n(20),e.exports=n(170)},function(e,t,n){var r=n(6),o=n(42);e.exports=n(0).getIterator=function(e){var t=o(e);if("function"!=typeof t)throw TypeError(e+" is not iterable!");return r(t.call(e))}},function(e,t,n){e.exports=n(172)},function(e,t,n){"use strict";function r(e){var t=new a(e),n=i(a.prototype.request,t);return o.extend(n,a.prototype,t),o.extend(n,t),n}var o=n(3),i=n(72),a=n(173),u=n(78),s=n(75),c=r(s);c.Axios=a,c.create=function(e){return r(u(c.defaults,e))},c.Cancel=n(79),c.CancelToken=n(186),c.isCancel=n(74),c.all=function(e){return Promise.all(e)},c.spread=n(187),e.exports=c,e.exports.default=c},function(e,t,n){"use strict";function r(e){this.defaults=e,this.interceptors={request:new a,response:new a}}var o=n(3),i=n(73),a=n(174),u=n(175),s=n(78);r.prototype.request=function(e){"string"==typeof e?(e=arguments[1]||{},e.url=arguments[0]):e=e||{},e=s(this.defaults,e),e.method?e.method=e.method.toLowerCase():this.defaults.method?e.method=this.defaults.method.toLowerCase():e.method="get";var t=[u,void 0],n=Promise.resolve(e);for(this.interceptors.request.forEach(function(e){t.unshift(e.fulfilled,e.rejected)}),this.interceptors.response.forEach(function(e){t.push(e.fulfilled,e.rejected)});t.length;)n=n.then(t.shift(),t.shift());return n},r.prototype.getUri=function(e){return e=s(this.defaults,e),i(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},o.forEach(["delete","get","head","options"],function(e){r.prototype[e]=function(t,n){return this.request(o.merge(n||{},{method:e,url:t}))}}),o.forEach(["post","put","patch"],function(e){r.prototype[e]=function(t,n,r){return this.request(o.merge(r||{},{method:e,url:t,data:n}))}}),e.exports=r},function(e,t,n){"use strict";function r(){this.handlers=[]}var o=n(3);r.prototype.use=function(e,t){return this.handlers.push({fulfilled:e,rejected:t}),this.handlers.length-1},r.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},r.prototype.forEach=function(e){o.forEach(this.handlers,function(t){null!==t&&e(t)})},e.exports=r},function(e,t,n){"use strict";function r(e){e.cancelToken&&e.cancelToken.throwIfRequested()}var o=n(3),i=n(176),a=n(74),u=n(75);e.exports=function(e){return r(e),e.headers=e.headers||{},e.data=i(e.data,e.headers,e.transformRequest),e.headers=o.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),o.forEach(["delete","get","head","post","put","patch","common"],function(t){delete e.headers[t]}),(e.adapter||u.adapter)(e).then(function(t){return r(e),t.data=i(t.data,t.headers,e.transformResponse),t},function(t){return a(t)||(r(e),t&&t.response&&(t.response.data=i(t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)})}},function(e,t,n){"use strict";var r=n(3);e.exports=function(e,t,n){return r.forEach(n,function(n){e=n(e,t)}),e}},function(e,t,n){"use strict";var r=n(3);e.exports=function(e,t){r.forEach(e,function(n,r){r!==t&&r.toUpperCase()===t.toUpperCase()&&(e[t]=n,delete e[r])})}},function(e,t,n){"use strict";var r=n(77);e.exports=function(e,t,n){var o=n.config.validateStatus;!o||o(n.status)?e(n):t(r("Request failed with status code "+n.status,n.config,null,n.request,n))}},function(e,t,n){"use strict";e.exports=function(e,t,n,r,o){return e.config=t,n&&(e.code=n),e.request=r,e.response=o,e.isAxiosError=!0,e.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},e}},function(e,t,n){"use strict";var r=n(181),o=n(182);e.exports=function(e,t){return e&&!r(t)?o(e,t):t}},function(e,t,n){"use strict";e.exports=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)}},function(e,t,n){"use strict";e.exports=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}},function(e,t,n){"use strict";var r=n(3),o=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];e.exports=function(e){var t,n,i,a={};return e?(r.forEach(e.split("\n"),function(e){if(i=e.indexOf(":"),t=r.trim(e.substr(0,i)).toLowerCase(),n=r.trim(e.substr(i+1)),t){if(a[t]&&o.indexOf(t)>=0)return;a[t]="set-cookie"===t?(a[t]?a[t]:[]).concat([n]):a[t]?a[t]+", "+n:n}}),a):a}},function(e,t,n){"use strict";var r=n(3);e.exports=r.isStandardBrowserEnv()?function(){function e(e){var t=e;return n&&(o.setAttribute("href",t),t=o.href),o.setAttribute("href",t),{href:o.href,protocol:o.protocol?o.protocol.replace(/:$/,""):"",host:o.host,search:o.search?o.search.replace(/^\?/,""):"",hash:o.hash?o.hash.replace(/^#/,""):"",hostname:o.hostname,port:o.port,pathname:"/"===o.pathname.charAt(0)?o.pathname:"/"+o.pathname}}var t,n=/(msie|trident)/i.test(navigator.userAgent),o=document.createElement("a");return t=e(window.location.href),function(n){var o=r.isString(n)?e(n):n;return o.protocol===t.protocol&&o.host===t.host}}():function(){return function(){return!0}}()},function(e,t,n){"use strict";var r=n(3);e.exports=r.isStandardBrowserEnv()?function(){return{write:function(e,t,n,o,i,a){var u=[];u.push(e+"="+encodeURIComponent(t)),r.isNumber(n)&&u.push("expires="+new Date(n).toGMTString()),r.isString(o)&&u.push("path="+o),r.isString(i)&&u.push("domain="+i),!0===a&&u.push("secure"),document.cookie=u.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}}():function(){return{write:function(){},read:function(){return null},remove:function(){}}}()},function(e,t,n){"use strict";function r(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise(function(e){t=e});var n=this;e(function(e){n.reason||(n.reason=new o(e),t(n.reason))})}var o=n(79);r.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},r.source=function(){var e;return{token:new r(function(t){e=t}),cancel:e}},e.exports=r},function(e,t,n){"use strict";e.exports=function(e){return function(t){return e.apply(null,t)}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(5),o=function(e){return e&&e.__esModule?e:{default:e}}(r);t.default=function(e){var t=e.className,n=e.getRef,r=e.onClick,i=e.onMouseDown,a=e.text,u=e.isLoading;return o.default.createElement("button",{ref:function(e){return n&&n(e)},className:"gt-btn "+t,onClick:r,onMouseDown:i},o.default.createElement("span",{className:"gt-btn-text"},a),u&&o.default.createElement("span",{className:"gt-btn-loading gt-spinner"}))}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(5),o=function(e){return e&&e.__esModule?e:{default:e}}(r);t.default=function(e){var t=e.className,n=e.onClick,r=e.text;return o.default.createElement("a",{className:"gt-action "+t,onClick:n},o.default.createElement("span",{className:"gt-action-text"},r))}},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n(64),i=r(o),a=n(29),u=r(a),s=n(30),c=r(s),l=n(66),f=r(l),p=n(70),d=r(p),h=n(5),m=r(h),v=n(80),y=r(v),g=n(81),b=r(g),w=n(199),_=r(w),x=n(212),S=r(x),E=n(213),C=r(E),N=n(214),O=r(N),k=n(215),M=r(k),P=n(216),T=r(P);n(217);var A=(0,S.default)(),j=(0,C.default)(),D=(0,O.default)(),I=(0,M.default)(),L=(0,T.default)();"undefined"!=typeof window&&(window.GT_i18n_distanceInWordsLocaleMap={zh:A,"zh-CN":A,"zh-TW":j,"es-ES":D,fr:I,ru:L});var R=function(e){function t(){return(0,u.default)(this,t),(0,f.default)(this,(t.__proto__||(0,i.default)(t)).apply(this,arguments))}return(0,d.default)(t,e),(0,c.default)(t,[{key:"shouldComponentUpdate",value:function(){return!1}},{key:"componentDidMount",value:function(){var e=this.node,t=e.querySelector(".email-hidden-toggle>a");t&&t.addEventListener("click",function(t){t.preventDefault(),e.querySelector(".email-hidden-reply").classList.toggle("expanded")},!0)}},{key:"handleImageErrored",value:function(e){e.target.src="https://cdn.jsdelivr.net/npm/gitalk@1/src/assets/icon/github.svg"}},{key:"render",value:function(){var e=this,t=this.props,n=t.comment,r=t.user,o=t.language,i=t.commentedText,a=void 0===i?"":i,u=t.admin,s=void 0===u?[]:u,c=t.replyCallback,l=t.likeCallback,f=r&&n.user.login===r.login,p=~[].concat(s).map(function(e){return e.toLowerCase()}).indexOf(n.user.login.toLowerCase()),d=n.reactions,h="";return d&&d.totalCount&&(h=d.totalCount,100===d.totalCount&&d.pageInfo&&d.pageInfo.hasNextPage&&(h="100+")),m.default.createElement("div",{ref:function(t){e.node=t},className:"gt-comment "+(p?"gt-comment-admin":"")},m.default.createElement(y.default,{className:"gt-comment-avatar",src:n.user&&n.user.avatar_url,alt:n.user&&n.user.login,onError:this.handleImageErrored.bind(this)}),m.default.createElement("div",{className:"gt-comment-content"},m.default.createElement("div",{className:"gt-comment-header"},m.default.createElement("div",{className:"gt-comment-block-"+(r?"2":"1")}),m.default.createElement("a",{className:"gt-comment-username",href:n.user&&n.user.html_url},n.user&&n.user.login),m.default.createElement("span",{className:"gt-comment-text"},a),m.default.createElement("span",{className:"gt-comment-date"},(0,_.default)(n.created_at,{addSuffix:!0,locale:{distanceInWords:window.GT_i18n_distanceInWordsLocaleMap[o]}})),d&&m.default.createElement("a",{className:"gt-comment-like",title:"Like",onClick:l},d.viewerHasReacted?m.default.createElement(b.default,{className:"gt-ico-heart",name:"heart_on",text:h}):m.default.createElement(b.default,{className:"gt-ico-heart",name:"heart",text:h})),f?m.default.createElement("a",{href:n.html_url,className:"gt-comment-edit",title:"Edit",target:"_blank"},m.default.createElement(b.default,{className:"gt-ico-edit",name:"edit"})):m.default.createElement("a",{className:"gt-comment-reply",title:"Reply",onClick:c},m.default.createElement(b.default,{className:"gt-ico-reply",name:"reply"}))),m.default.createElement("div",{className:"gt-comment-body markdown-body",dangerouslySetInnerHTML:{__html:n.body_html}})))}}]),t}(h.Component);t.default=R},function(e,t,n){function r(e){return n(o(e))}function o(e){var t=i[e];if(!(t+1))throw new Error("Cannot find module '"+e+"'.");return t}var i={"./arrow_down.svg":192,"./edit.svg":193,"./github.svg":194,"./heart.svg":195,"./heart_on.svg":196,"./reply.svg":197,"./tip.svg":198};r.keys=function(){return Object.keys(i)},r.resolve=o,e.exports=r,r.id=191},function(e,t){e.exports='<svg viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" p-id="1619"><path d="M511.872 676.8c-0.003 0-0.006 0-0.008 0-9.137 0-17.379-3.829-23.21-9.97l-251.277-265.614c-5.415-5.72-8.743-13.464-8.744-21.984 0-17.678 14.33-32.008 32.008-32.008 9.157 0 17.416 3.845 23.25 10.009l228.045 241.103 228.224-241.088c5.855-6.165 14.113-10.001 23.266-10.001 8.516 0 16.256 3.32 21.998 8.736 12.784 12.145 13.36 32.434 1.264 45.233l-251.52 265.6c-5.844 6.155-14.086 9.984-23.223 9.984-0.025 0-0.051 0-0.076 0z" p-id="1620"></path></svg>'},function(e,t){e.exports='<svg viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg">\n <path d="M785.333333 85.333333C774.666667 85.333333 763.2 90.133333 754.666667 98.666667L682.666667 170.666667 853.333333 341.333333 925.333333 269.333333C942.4 252.266667 942.4 222.133333 925.333333 209.333333L814.666667 98.666667C806.133333 90.133333 796 85.333333 785.333333 85.333333zM640 217.333333 85.333333 768 85.333333 938.666667 256 938.666667 806.666667 384 640 217.333333z"></path>\n</svg>\n'},function(e,t){e.exports='<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg">\n <path d="M64 524C64 719.602 189.356 885.926 364.113 947.017 387.65799 953 384 936.115 384 924.767L384 847.107C248.118 863.007 242.674 773.052 233.5 758.001 215 726.501 171.5 718.501 184.5 703.501 215.5 687.501 247 707.501 283.5 761.501 309.956 800.642 361.366 794.075 387.658 787.497 393.403 763.997 405.637 743.042 422.353 726.638 281.774 701.609 223 615.67 223 513.5 223 464.053 239.322 418.406 271.465 381.627 251.142 320.928 273.421 269.19 276.337 261.415 334.458 256.131 394.888 302.993 399.549 306.685 432.663 297.835 470.341 293 512.5 293 554.924 293 592.81 297.896 626.075 306.853 637.426 298.219 693.46 258.054 747.5 262.966 750.382 270.652 772.185 321.292 753.058 381.083 785.516 417.956 802 463.809 802 513.5 802 615.874 742.99 701.953 601.803 726.786 625.381 750.003 640 782.295 640 818.008L640 930.653C640.752 939.626 640 948.664978 655.086 948.665 832.344 888.962 960 721.389 960 524 960 276.576 759.424 76 512 76 264.577 76 64 276.576 64 524Z"></path>\n</svg>\n'},function(e,t){e.exports='<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">\n <path d="M527.061333 166.528A277.333333 277.333333 0 0 1 1000.618667 362.666667a277.333333 277.333333 0 0 1-81.28 196.138666l-377.173334 377.173334a42.666667 42.666667 0 0 1-60.330666 0l-377.173334-377.173334a277.376 277.376 0 0 1 392.277334-392.277333l15.061333 15.061333 15.061333-15.061333z m286.72 377.173333l45.226667-45.226666a192 192 0 0 0-135.808-327.893334 192 192 0 0 0-135.808 56.32l-45.226667 45.226667a42.666667 42.666667 0 0 1-60.330666 0l-45.226667-45.226667a192.042667 192.042667 0 0 0-271.616 271.573334L512 845.482667l301.781333-301.781334z"></path>\n</svg>\n'},function(e,t){e.exports='<svg t="1512463363724" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">\n <path d="M527.061333 166.528A277.333333 277.333333 0 0 1 1000.618667 362.666667a277.333333 277.333333 0 0 1-81.28 196.138666l-377.173334 377.173334a42.666667 42.666667 0 0 1-60.330666 0l-377.173334-377.173334a277.376 277.376 0 0 1 392.277334-392.277333l15.061333 15.061333 15.061333-15.061333z"></path>\n</svg>\n'},function(e,t){e.exports='<svg viewBox="0 0 1332 1024" version="1.1" xmlns="http://www.w3.org/2000/svg">\n <path d="M529.066665 273.066666 529.066665 0 51.2 477.866666 529.066665 955.733335 529.066665 675.84C870.4 675.84 1109.333335 785.066665 1280 1024 1211.733335 682.666665 1006.933335 341.333334 529.066665 273.066666"></path>\n</svg>\n'},function(e,t){e.exports='<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg">\n <path d="M512 366.949535c-16.065554 0-29.982212 13.405016-29.982212 29.879884l0 359.070251c0 16.167882 13.405016 29.879884 29.982212 29.879884 15.963226 0 29.879884-13.405016 29.879884-29.879884L541.879884 396.829419C541.879884 380.763865 528.474868 366.949535 512 366.949535L512 366.949535z"\n p-id="3083"></path>\n <path d="M482.017788 287.645048c0-7.776956 3.274508-15.553912 8.80024-21.181973 5.525732-5.525732 13.302688-8.80024 21.181973-8.80024 7.776956 0 15.553912 3.274508 21.079644 8.80024 5.525732 5.62806 8.80024 13.405016 8.80024 21.181973 0 7.776956-3.274508 15.656241-8.80024 21.181973-5.525732 5.525732-13.405016 8.697911-21.079644 8.697911-7.879285 0-15.656241-3.274508-21.181973-8.697911C485.292295 303.301289 482.017788 295.524333 482.017788 287.645048L482.017788 287.645048z"\n p-id="3084"></path>\n <path d="M512 946.844409c-239.8577 0-434.895573-195.037873-434.895573-434.895573 0-239.8577 195.037873-434.895573 434.895573-434.895573 239.755371 0 434.895573 195.037873 434.895573 434.895573C946.895573 751.806535 751.755371 946.844409 512 946.844409zM512 126.17088c-212.740682 0-385.880284 173.037274-385.880284 385.777955 0 212.740682 173.037274 385.777955 385.880284 385.777955 212.740682 0 385.777955-173.037274 385.777955-385.777955C897.777955 299.208154 724.740682 126.17088 512 126.17088z"\n p-id="3085"></path>\n</svg>\n'},function(e,t,n){function r(e,t){return o(Date.now(),e,t)}var o=n(200);e.exports=r},function(e,t,n){function r(e,t,n){var r=n||{},d=o(e,t),h=r.locale,m=s.distanceInWords.localize;h&&h.distanceInWords&&h.distanceInWords.localize&&(m=h.distanceInWords.localize);var v,y,g={addSuffix:Boolean(r.addSuffix),comparison:d};d>0?(v=i(e),y=i(t)):(v=i(t),y=i(e));var b,w=a(y,v),_=y.getTimezoneOffset()-v.getTimezoneOffset(),x=Math.round(w/60)-_;if(x<2)return r.includeSeconds?w<5?m("lessThanXSeconds",5,g):w<10?m("lessThanXSeconds",10,g):w<20?m("lessThanXSeconds",20,g):w<40?m("halfAMinute",null,g):w<60?m("lessThanXMinutes",1,g):m("xMinutes",1,g):0===x?m("lessThanXMinutes",1,g):m("xMinutes",x,g);if(x<45)return m("xMinutes",x,g);if(x<90)return m("aboutXHours",1,g);if(x<c){return m("aboutXHours",Math.round(x/60),g)}if(x<l)return m("xDays",1,g);if(x<f){return m("xDays",Math.round(x/c),g)}if(x<p)return b=Math.round(x/f),m("aboutXMonths",b,g);if((b=u(y,v))<12){return m("xMonths",Math.round(x/f),g)}var S=b%12,E=Math.floor(b/12);return S<3?m("aboutXYears",E,g):S<9?m("overXYears",E,g):m("almostXYears",E+1,g)}var o=n(201),i=n(18),a=n(203),u=n(205),s=n(208),c=1440,l=2520,f=43200,p=86400;e.exports=r},function(e,t,n){function r(e,t){var n=o(e),r=n.getTime(),i=o(t),a=i.getTime();return r>a?-1:r<a?1:0}var o=n(18);e.exports=r},function(e,t){function n(e){return e instanceof Date}e.exports=n},function(e,t,n){function r(e,t){var n=o(e,t)/1e3;return n>0?Math.floor(n):Math.ceil(n)}var o=n(204);e.exports=r},function(e,t,n){function r(e,t){var n=o(e),r=o(t);return n.getTime()-r.getTime()}var o=n(18);e.exports=r},function(e,t,n){function r(e,t){var n=o(e),r=o(t),u=a(n,r),s=Math.abs(i(n,r));return n.setMonth(n.getMonth()-u*s),u*(s-(a(n,r)===-u))}var o=n(18),i=n(206),a=n(207);e.exports=r},function(e,t,n){function r(e,t){var n=o(e),r=o(t);return 12*(n.getFullYear()-r.getFullYear())+(n.getMonth()-r.getMonth())}var o=n(18);e.exports=r},function(e,t,n){function r(e,t){var n=o(e),r=n.getTime(),i=o(t),a=i.getTime();return r<a?-1:r>a?1:0}var o=n(18);e.exports=r},function(e,t,n){var r=n(209),o=n(210);e.exports={distanceInWords:r(),format:o()}},function(e,t){function n(){function e(e,n,r){r=r||{};var o;return o="string"==typeof t[e]?t[e]:1===n?t[e].one:t[e].other.replace("{{count}}",n),r.addSuffix?r.comparison>0?"in "+o:o+" ago":o}var t={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}};return{localize:e}}e.exports=n},function(e,t,n){function r(){var e=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],t=["January","February","March","April","May","June","July","August","September","October","November","December"],n=["Su","Mo","Tu","We","Th","Fr","Sa"],r=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],a=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],u=["AM","PM"],s=["am","pm"],c=["a.m.","p.m."],l={MMM:function(t){return e[t.getMonth()]},MMMM:function(e){return t[e.getMonth()]},dd:function(e){return n[e.getDay()]},ddd:function(e){return r[e.getDay()]},dddd:function(e){return a[e.getDay()]},A:function(e){return e.getHours()/12>=1?u[1]:u[0]},a:function(e){return e.getHours()/12>=1?s[1]:s[0]},aa:function(e){return e.getHours()/12>=1?c[1]:c[0]}};return["M","D","DDD","d","Q","W"].forEach(function(e){l[e+"o"]=function(t,n){return o(n[e](t))}}),{formatters:l,formattingTokensRegExp:i(l)}}function o(e){var t=e%100;if(t>20||t<10)switch(t%10){case 1:return e+"st";case 2:return e+"nd";case 3:return e+"rd"}return e+"th"}var i=n(211);e.exports=r},function(e,t){function n(e){var t=[];for(var n in e)e.hasOwnProperty(n)&&t.push(n);var o=r.concat(t).sort().reverse();return new RegExp("(\\[[^\\[]*\\])|(\\\\)?("+o.join("|")+"|.)","g")}var r=["M","MM","Q","D","DD","DDD","DDDD","d","E","W","WW","YY","YYYY","GG","GGGG","H","HH","h","hh","m","mm","s","ss","S","SS","SSS","Z","ZZ","X","x"];e.exports=n},function(e,t){function n(){function e(e,n,r){r=r||{};var o;return o="string"==typeof t[e]?t[e]:1===n?t[e].one:t[e].other.replace("{{count}}",n),r.addSuffix?r.comparison>0?o+"内":o+"前":o}var t={lessThanXSeconds:{one:"不到 1 秒",other:"不到 {{count}} 秒"},xSeconds:{one:"1 秒",other:"{{count}} 秒"},halfAMinute:"半分钟",lessThanXMinutes:{one:"不到 1 分钟",other:"不到 {{count}} 分钟"},xMinutes:{one:"1 分钟",other:"{{count}} 分钟"},xHours:{one:"1 小时",other:"{{count}} 小时"},aboutXHours:{one:"大约 1 小时",other:"大约 {{count}} 小时"},xDays:{one:"1 天",other:"{{count}} 天"},aboutXMonths:{one:"大约 1 个月",other:"大约 {{count}} 个月"},xMonths:{one:"1 个月",other:"{{count}} 个月"},aboutXYears:{one:"大约 1 年",other:"大约 {{count}} 年"},xYears:{one:"1 年",other:"{{count}} 年"},overXYears:{one:"超过 1 年",other:"超过 {{count}} 年"},almostXYears:{one:"将近 1 年",other:"将近 {{count}} 年"}};return{localize:e}}e.exports=n},function(e,t){function n(){function e(e,n,r){r=r||{};var o;return o="string"==typeof t[e]?t[e]:1===n?t[e].one:t[e].other.replace("{{count}}",n),r.addSuffix?r.comparison>0?o+"內":o+"前":o}var t={lessThanXSeconds:{one:"少於 1 秒",other:"少於 {{count}} 秒"},xSeconds:{one:"1 秒",other:"{{count}} 秒"},halfAMinute:"半分鐘",lessThanXMinutes:{one:"少於 1 分鐘",other:"少於 {{count}} 分鐘"},xMinutes:{one:"1 分鐘",other:"{{count}} 分鐘"},xHours:{one:"1 小時",other:"{{count}} 小時"},aboutXHours:{one:"大約 1 小時",other:"大約 {{count}} 小時"},xDays:{one:"1 天",other:"{{count}} 天"},aboutXMonths:{one:"大約 1 個月",other:"大約 {{count}} 個月"},xMonths:{one:"1 個月",other:"{{count}} 個月"},aboutXYears:{one:"大約 1 年",other:"大約 {{count}} 年"},xYears:{one:"1 年",other:"{{count}} 年"},overXYears:{one:"超過 1 年",other:"超過 {{count}} 年"},almostXYears:{one:"將近 1 年",other:"將近 {{count}} 年"}};return{localize:e}}e.exports=n},function(e,t){function n(){function e(e,n,r){r=r||{};var o;return o="string"==typeof t[e]?t[e]:1===n?t[e].one:t[e].other.replace("{{count}}",n),r.addSuffix?r.comparison>0?"en "+o:"hace "+o:o}var t={lessThanXSeconds:{one:"menos de un segundo",other:"menos de {{count}} segundos"},xSeconds:{one:"1 segundo",other:"{{count}} segundos"},halfAMinute:"medio minuto",lessThanXMinutes:{one:"menos de un minuto",other:"menos de {{count}} minutos"},xMinutes:{one:"1 minuto",other:"{{count}} minutos"},aboutXHours:{one:"alrededor de 1 hora",other:"alrededor de {{count}} horas"},xHours:{one:"1 hora",other:"{{count}} horas"},xDays:{one:"1 día",other:"{{count}} días"},aboutXMonths:{one:"alrededor de 1 mes",other:"alrededor de {{count}} meses"},xMonths:{one:"1 mes",other:"{{count}} meses"},aboutXYears:{one:"alrededor de 1 año",other:"alrededor de {{count}} años"},xYears:{one:"1 año",other:"{{count}} años"},overXYears:{one:"más de 1 año",other:"más de {{count}} años"},almostXYears:{one:"casi 1 año",other:"casi {{count}} años"}};return{localize:e}}e.exports=n},function(e,t){function n(){function e(e,n,r){r=r||{};var o;return o="string"==typeof t[e]?t[e]:1===n?t[e].one:t[e].other.replace("{{count}}",n),r.addSuffix?r.comparison>0?"dans "+o:"il y a "+o:o}var t={lessThanXSeconds:{one:"moins d’une seconde",other:"moins de {{count}} secondes"},xSeconds:{one:"1 seconde",other:"{{count}} secondes"},halfAMinute:"30 secondes",lessThanXMinutes:{one:"moins d’une minute",other:"moins de {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"environ 1 heure",other:"environ {{count}} heures"},xHours:{one:"1 heure",other:"{{count}} heures"},xDays:{one:"1 jour",other:"{{count}} jours"},aboutXMonths:{one:"environ 1 mois",other:"environ {{count}} mois"},xMonths:{one:"1 mois",other:"{{count}} mois"},aboutXYears:{one:"environ 1 an",other:"environ {{count}} ans"},xYears:{one:"1 an",other:"{{count}} ans"},overXYears:{one:"plus d’un an",other:"plus de {{count}} ans"},almostXYears:{one:"presqu’un an",other:"presque {{count}} ans"}};return{localize:e}}e.exports=n},function(e,t){function n(e,t){if(void 0!==e.one&&1===t)return e.one;var n=t%10,r=t%100;return 1===n&&11!==r?e.singularNominative.replace("{{count}}",t):n>=2&&n<=4&&(r<10||r>20)?e.singularGenitive.replace("{{count}}",t):e.pluralGenitive.replace("{{count}}",t)}function r(e){return function(t,r){return r.addSuffix?r.comparison>0?e.future?n(e.future,t):"через "+n(e.regular,t):e.past?n(e.past,t):n(e.regular,t)+" назад":n(e.regular,t)}}function o(){function e(e,n,r){return r=r||{},t[e](n,r)}var t={lessThanXSeconds:r({regular:{one:"меньше секунды",singularNominative:"меньше {{count}} секунды",singularGenitive:"меньше {{count}} секунд",pluralGenitive:"меньше {{count}} секунд"},future:{one:"меньше, чем через секунду",singularNominative:"меньше, чем через {{count}} секунду",singularGenitive:"меньше, чем через {{count}} секунды",pluralGenitive:"меньше, чем через {{count}} секунд"}}),xSeconds:r({regular:{singularNominative:"{{count}} секунда",singularGenitive:"{{count}} секунды",pluralGenitive:"{{count}} секунд"},past:{singularNominative:"{{count}} секунду назад",singularGenitive:"{{count}} секунды назад",pluralGenitive:"{{count}} секунд назад"},future:{singularNominative:"через {{count}} секунду",singularGenitive:"через {{count}} секунды",pluralGenitive:"через {{count}} секунд"}}),halfAMinute:function(e,t){return t.addSuffix?t.comparison>0?"через полминуты":"полминуты назад":"полминуты"},lessThanXMinutes:r({regular:{one:"меньше минуты",singularNominative:"меньше {{count}} минуты",singularGenitive:"меньше {{count}} минут",pluralGenitive:"меньше {{count}} минут"},future:{one:"меньше, чем через минуту",singularNominative:"меньше, чем через {{count}} минуту",singularGenitive:"меньше, чем через {{count}} минуты",pluralGenitive:"меньше, чем через {{count}} минут"}}),xMinutes:r({regular:{singularNominative:"{{count}} минута",singularGenitive:"{{count}} минуты",pluralGenitive:"{{count}} минут"},past:{singularNominative:"{{count}} минуту назад",singularGenitive:"{{count}} минуты назад",pluralGenitive:"{{count}} минут назад"},future:{singularNominative:"через {{count}} минуту",singularGenitive:"через {{count}} минуты",pluralGenitive:"через {{count}} минут"}}),aboutXHours:r({regular:{singularNominative:"около {{count}} часа",singularGenitive:"около {{count}} часов",pluralGenitive:"около {{count}} часов"},future:{singularNominative:"приблизительно через {{count}} час",singularGenitive:"приблизительно через {{count}} часа",pluralGenitive:"приблизительно через {{count}} часов"}}),xHours:r({regular:{singularNominative:"{{count}} час",singularGenitive:"{{count}} часа",pluralGenitive:"{{count}} часов"}}),xDays:r({regular:{singularNominative:"{{count}} день",singularGenitive:"{{count}} дня",pluralGenitive:"{{count}} дней"}}),aboutXMonths:r({regular:{singularNominative:"около {{count}} месяца",singularGenitive:"около {{count}} месяцев",pluralGenitive:"около {{count}} месяцев"},future:{singularNominative:"приблизительно через {{count}} месяц",singularGenitive:"приблизительно через {{count}} месяца",pluralGenitive:"приблизительно через {{count}} месяцев"}}),xMonths:r({regular:{singularNominative:"{{count}} месяц",singularGenitive:"{{count}} месяца",pluralGenitive:"{{count}} месяцев"}}),aboutXYears:r({regular:{singularNominative:"около {{count}} года",singularGenitive:"около {{count}} лет",pluralGenitive:"около {{count}} лет"},future:{singularNominative:"приблизительно через {{count}} год",singularGenitive:"приблизительно через {{count}} года",pluralGenitive:"приблизительно через {{count}} лет"}}),xYears:r({regular:{singularNominative:"{{count}} год",singularGenitive:"{{count}} года",pluralGenitive:"{{count}} лет"}}),overXYears:r({regular:{singularNominative:"больше {{count}} года",singularGenitive:"больше {{count}} лет",pluralGenitive:"больше {{count}} лет"},future:{singularNominative:"больше, чем через {{count}} год",singularGenitive:"больше, чем через {{count}} года",pluralGenitive:"больше, чем через {{count}} лет"}}),almostXYears:r({regular:{singularNominative:"почти {{count}} год",singularGenitive:"почти {{count}} года",pluralGenitive:"почти {{count}} лет"},future:{singularNominative:"почти через {{count}} год",singularGenitive:"почти через {{count}} года",pluralGenitive:"почти через {{count}} лет"}})};return{localize:e}}e.exports=o},function(e,t){},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.GT_ACCESS_TOKEN="GT_ACCESS_TOKEN",t.GT_VERSION="1.6.2",t.GT_COMMENT="GT_COMMENT"},function(e,t,n){"use strict";function r(e){var t=this,n=this.options,r=n.owner,o=n.repo,s=n.perPage,c=n.pagerDirection,l=n.defaultAuthor,f=this.state,p=f.cursor,d=f.comments;return a.axiosGithub.post("/graphql",u({owner:r,repo:o,id:e.number,pageSize:s,cursor:p},c),{headers:{Authorization:"bearer "+this.accessToken}}).then(function(n){var a=n.data.data.repository.issue.comments,u=a.nodes.map(function(t){var n=t.author||l;return{id:t.databaseId,gId:t.id,user:{avatar_url:n.avatarUrl,login:n.login,html_url:n.url},created_at:t.createdAt,body_html:t.bodyHTML,body:t.body,html_url:"https://github.com/"+r+"/"+o+"/issues/"+e.number+"#issuecomment-"+t.databaseId,reactions:t.reactions}}),s=void 0;s="last"===c?[].concat((0,i.default)(u),(0,i.default)(d)):[].concat((0,i.default)(d),(0,i.default)(u));var f=!1===a.pageInfo.hasPreviousPage||!1===a.pageInfo.hasNextPage;return t.setState({comments:s,isLoadOver:f,cursor:a.pageInfo.startCursor||a.pageInfo.endCursor}),s})}Object.defineProperty(t,"__esModule",{value:!0});var o=n(220),i=function(e){return e&&e.__esModule?e:{default:e}}(o),a=n(71),u=function(e,t){var n="last"===t?"before":"after",r="\n query getIssueAndComments(\n $owner: String!,\n $repo: String!,\n $id: Int!,\n $cursor: String,\n $pageSize: Int!\n ) {\n repository(owner: $owner, name: $repo) {\n issue(number: $id) {\n title\n url\n bodyHTML\n createdAt\n comments("+t+": $pageSize, "+n+": $cursor) {\n totalCount\n pageInfo {\n "+("last"===t?"hasPreviousPage":"hasNextPage")+"\n "+("before"===n?"startCursor":"endCursor")+"\n }\n nodes {\n id\n databaseId\n author {\n avatarUrl\n login\n url\n }\n bodyHTML\n body\n createdAt\n reactions(first: 100, content: HEART) {\n totalCount\n viewerHasReacted\n pageInfo{\n hasNextPage\n }\n nodes {\n id\n databaseId\n user {\n login\n }\n }\n }\n }\n }\n }\n }\n }\n ";return null===e.cursor&&delete e.cursor,{operationName:"getIssueAndComments",query:r,variables:e}};t.default=r},function(e,t,n){"use strict";t.__esModule=!0;var r=n(221),o=function(e){return e&&e.__esModule?e:{default:e}}(r);t.default=function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return(0,o.default)(e)}},function(e,t,n){e.exports={default:n(222),__esModule:!0}},function(e,t,n){n(20),n(223),e.exports=n(0).Array.from},function(e,t,n){"use strict";var r=n(13),o=n(4),i=n(17),a=n(57),u=n(58),s=n(37),c=n(224),l=n(42);o(o.S+o.F*!n(63)(function(e){Array.from(e)}),"Array",{from:function(e){var t,n,o,f,p=i(e),d="function"==typeof this?this:Array,h=arguments.length,m=h>1?arguments[1]:void 0,v=void 0!==m,y=0,g=l(p);if(v&&(m=r(m,h>2?arguments[2]:void 0,2)),void 0==g||d==Array&&u(g))for(t=s(p.length),n=new d(t);t>y;y++)c(n,y,v?m(p[y],y):p[y]);else for(f=g.call(p),n=new d;!(o=f.next()).done;y++)c(n,y,v?a(f,m,[o.value,y],!0):o.value);return n.length=y,n}})},function(e,t,n){"use strict";var r=n(7),o=n(19);e.exports=function(e,t,n){t in e?r.f(e,t,o(0,n)):e[t]=n}}])});
+!function(n,o){i=[t,e],a=o,void 0!==(r="function"==typeof a?a.apply(t,i):a)&&(e.exports=r)}(0,function(e,t){"use strict";function n(e){function t(t){var n=e.style.width;e.style.width="0px",e.offsetWidth,e.style.width=n,e.style.overflowY=t}function n(e){for(var t=[];e&&e.parentNode&&e.parentNode instanceof Element;)e.parentNode.scrollTop&&t.push({node:e.parentNode,scrollTop:e.parentNode.scrollTop}),e=e.parentNode;return t}function a(){var t=e.style.height,a=n(e),i=document.documentElement&&document.documentElement.scrollTop;e.style.height="auto";var r=e.scrollHeight+u;if(0===e.scrollHeight)return void(e.style.height=t);e.style.height=r+"px",s=e.clientWidth,a.forEach(function(e){e.node.scrollTop=e.scrollTop}),i&&(document.documentElement.scrollTop=i)}function i(){a();var n=Math.round(parseFloat(e.style.height)),i=window.getComputedStyle(e,null),r="content-box"===i.boxSizing?Math.round(parseFloat(i.height)):e.offsetHeight;if(r!==n?"hidden"===i.overflowY&&(t("scroll"),a(),r="content-box"===i.boxSizing?Math.round(parseFloat(window.getComputedStyle(e,null).height)):e.offsetHeight):"hidden"!==i.overflowY&&(t("hidden"),a(),r="content-box"===i.boxSizing?Math.round(parseFloat(window.getComputedStyle(e,null).height)):e.offsetHeight),d!==r){d=r;var u=o("autosize:resized");try{e.dispatchEvent(u)}catch(e){}}}if(e&&e.nodeName&&"TEXTAREA"===e.nodeName&&!r.has(e)){var u=null,s=e.clientWidth,d=null,c=function(){e.clientWidth!==s&&i()},l=function(t){window.removeEventListener("resize",c,!1),e.removeEventListener("input",i,!1),e.removeEventListener("keyup",i,!1),e.removeEventListener("autosize:destroy",l,!1),e.removeEventListener("autosize:update",i,!1),Object.keys(t).forEach(function(n){e.style[n]=t[n]}),r.delete(e)}.bind(e,{height:e.style.height,resize:e.style.resize,overflowY:e.style.overflowY,overflowX:e.style.overflowX,wordWrap:e.style.wordWrap});e.addEventListener("autosize:destroy",l,!1),"onpropertychange"in e&&"oninput"in e&&e.addEventListener("keyup",i,!1),window.addEventListener("resize",c,!1),e.addEventListener("input",i,!1),e.addEventListener("autosize:update",i,!1),e.style.overflowX="hidden",e.style.wordWrap="break-word",r.set(e,{destroy:l,update:i}),function(){var t=window.getComputedStyle(e,null);"vertical"===t.resize?e.style.resize="none":"both"===t.resize&&(e.style.resize="horizontal"),u="content-box"===t.boxSizing?-(parseFloat(t.paddingTop)+parseFloat(t.paddingBottom)):parseFloat(t.borderTopWidth)+parseFloat(t.borderBottomWidth),isNaN(u)&&(u=0),i()}()}}function a(e){var t=r.get(e);t&&t.destroy()}function i(e){var t=r.get(e);t&&t.update()}var r="function"==typeof Map?new Map:function(){var e=[],t=[];return{has:function(t){return e.indexOf(t)>-1},get:function(n){return t[e.indexOf(n)]},set:function(n,a){-1===e.indexOf(n)&&(e.push(n),t.push(a))},delete:function(n){var a=e.indexOf(n);a>-1&&(e.splice(a,1),t.splice(a,1))}}}(),o=function(e){return new Event(e,{bubbles:!0})};try{new Event("test")}catch(e){o=function(e){var t=document.createEvent("Event");return t.initEvent(e,!0,!1),t}}var u=null;"undefined"==typeof window||"function"!=typeof window.getComputedStyle?(u=function(e){return e},u.destroy=function(e){return e},u.update=function(e){return e}):(u=function(e,t){return e&&Array.prototype.forEach.call(e.length?e:[e],function(e){return n(e)}),e},u.destroy=function(e){return e&&Array.prototype.forEach.call(e.length?e:[e],a),e},u.update=function(e){return e&&Array.prototype.forEach.call(e.length?e:[e],i),e}),t.exports=u})},function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return new r.default({phrases:W[e]||W.en,locale:e})};var i=n(261),r=a(i),o=n(262),u=a(o),s=n(263),d=a(s),c=n(264),l=a(c),m=n(265),f=a(m),h=n(266),p=a(h),g=n(267),v=a(g),w=n(268),b=a(w),y=n(269),M=a(y),k=n(270),P=a(k),W={zh:u.default,"zh-CN":u.default,"zh-TW":d.default,en:l.default,"es-ES":f.default,fr:p.default,ru:v.default,de:b.default,pl:M.default,ko:P.default}},function(e,t,n){var a,i;!function(n,r){a=[],void 0!==(i=function(){return r(n)}.apply(t,a))&&(e.exports=i)}(this,function(e){"use strict";function t(e){e=e||{},this.phrases={},this.extend(e.phrases||{}),this.currentLocale=e.locale||"en",this.allowMissing=!!e.allowMissing,this.warn=e.warn||s}function n(e){var t,n,a,i={};for(t in e)if(e.hasOwnProperty(t)){n=e[t];for(a in n)i[n[a]]=t}return i}function a(e){var t=/^\s+|\s+$/g;return e.replace(t,"")}function i(e,t,n){var i,r,u;return null!=n&&e?(r=e.split(c),u=r[o(t,n)]||r[0],i=a(u)):i=e,i}function r(e){var t=n(m);return t[e]||t.en}function o(e,t){return l[r(e)](t)}function u(e,t){for(var n in t)"_"!==n&&t.hasOwnProperty(n)&&(e=e.replace(new RegExp("%\\{"+n+"\\}","g"),t[n]));return e}function s(t){e.console&&e.console.warn&&e.console.warn("WARNING: "+t)}function d(e){var t={};for(var n in e)t[n]=e[n];return t}t.VERSION="0.4.3",t.prototype.locale=function(e){return e&&(this.currentLocale=e),this.currentLocale},t.prototype.extend=function(e,t){var n;for(var a in e)e.hasOwnProperty(a)&&(n=e[a],t&&(a=t+"."+a),"object"==typeof n?this.extend(n,a):this.phrases[a]=n)},t.prototype.clear=function(){this.phrases={}},t.prototype.replace=function(e){this.clear(),this.extend(e)},t.prototype.t=function(e,t){var n,a;return t=null==t?{}:t,"number"==typeof t&&(t={smart_count:t}),"string"==typeof this.phrases[e]?n=this.phrases[e]:"string"==typeof t._?n=t._:this.allowMissing?n=e:(this.warn('Missing translation for key: "'+e+'"'),a=e),"string"==typeof n&&(t=d(t),a=i(n,this.currentLocale,t.smart_count),a=u(a,t)),a},t.prototype.has=function(e){return e in this.phrases};var c="||||",l={chinese:function(e){return 0},german:function(e){return 1!==e?1:0},french:function(e){return e>1?1:0},russian:function(e){return e%10==1&&e%100!=11?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2},czech:function(e){return 1===e?0:e>=2&&e<=4?1:2},polish:function(e){return 1===e?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2},icelandic:function(e){return e%10!=1||e%100==11?1:0}},m={chinese:["fa","id","ja","ko","lo","ms","th","tr","zh"],german:["da","de","en","es","fi","el","he","hu","it","nl","no","pt","sv"],french:["fr","tl","pt-br"],russian:["hr","ru"],czech:["cs"],polish:["pl"],icelandic:["is"]};return t})},function(e,t){e.exports={init:"Gitalk 加载中 ...","no-found-related":"未找到相关的 %{link} 进行评论","please-contact":"请联系 %{user} 初始化创建","init-issue":"初始化 Issue","leave-a-comment":"说点什么",preview:"预览",edit:"编辑",comment:"评论","support-markdown":"支持 Markdown 语法","login-with-github":"使用 GitHub 登录","first-comment-person":"来做第一个留言的人吧!",commented:"发表于","load-more":"加载更多",counts:"%{counts} 条评论","sort-asc":"从旧到新排序","sort-desc":"从新到旧排序",logout:"注销",anonymous:"未登录用户"}},function(e,t){e.exports={init:"Gitalk 載入中…","no-found-related":"未找到相關的 %{link}","please-contact":"請聯絡 %{user} 初始化評論","init-issue":"初始化 Issue","leave-a-comment":"寫點什麼",preview:"預覽",edit:"編輯",comment:"評論","support-markdown":"支援 Markdown 語法","login-with-github":"使用 GitHub 登入","first-comment-person":"成為首個留言的人吧!",commented:"評論於","load-more":"載入更多",counts:"%{counts} 筆評論","sort-asc":"從舊至新排序","sort-desc":"從新至舊排序",logout:"登出",anonymous:"訪客"}},function(e,t){e.exports={init:"Gitalking ...","no-found-related":"Related %{link} not found","please-contact":"Please contact %{user} to initialize the comment","init-issue":"Init Issue","leave-a-comment":"Leave a comment",preview:"Preview",edit:"Edit",comment:"Comment","support-markdown":"Markdown is supported","login-with-github":"Login with GitHub","first-comment-person":"Be the first person to leave a comment!",commented:"commented","load-more":"Load more",counts:"%{counts} comment |||| %{counts} comments","sort-asc":"Sort by Oldest","sort-desc":"Sort by Latest",logout:"Logout",anonymous:"Anonymous"}},function(e,t){e.exports={init:"Gitalking ...","no-found-related":"Link %{link} no encontrado","please-contact":"Por favor contacta con %{user} para inicializar el comentario","init-issue":"Iniciar Issue","leave-a-comment":"Deja un comentario",preview:"Avance",edit:"Editar",comment:"Comentario","support-markdown":"Markdown es soportado","login-with-github":"Entrar con GitHub","first-comment-person":"Sé el primero en dejar un comentario!",commented:"comentó","load-more":"Cargar más",counts:"%{counts} comentario |||| %{counts} comentarios","sort-asc":"Ordenar por Antiguos","sort-desc":"Ordenar por Recientes",logout:"Salir",anonymous:"Anónimo"}},function(e,t){e.exports={init:"Gitalking ...","no-found-related":"Lien %{link} non trouvé","please-contact":"S’il vous plaît contactez %{user} pour initialiser les commentaires","init-issue":"Initialisation des issues","leave-a-comment":"Laisser un commentaire",preview:"Aperçu",edit:"Modifier",comment:"Commentaire","support-markdown":"Markdown est supporté","login-with-github":"Se connecter avec GitHub","first-comment-person":"Être le premier à laisser un commentaire !",commented:"commenter","load-more":"Charger plus",counts:"%{counts} commentaire |||| %{counts} commentaires","sort-asc":"Trier par plus ancien","sort-desc":"Trier par plus récent",logout:"Déconnexion",anonymous:"Anonyme"}},function(e,t){e.exports={init:"Gitalking ...","no-found-related":"Связанные %{link} не найдены","please-contact":"Пожалуйста, свяжитесь с %{user} чтобы инициализировать комментарий","init-issue":"Выпуск инициализации","leave-a-comment":"Оставить комментарий",preview:"Предварительный просмотр",edit:"Pедактировать",comment:"Комментарий","support-markdown":"Поддерживается Markdown","login-with-github":"Вход через GitHub","first-comment-person":"Будьте первым, кто оставил комментарий",commented:"прокомментированный","load-more":"Загрузить ещё",counts:"%{counts} комментарий |||| %{counts} комментариев","sort-asc":"Сортировать по старым","sort-desc":"Сортировать по последним",logout:"Выход",anonymous:"Анонимный"}},function(e,t){e.exports={init:"Gitalking ...","no-found-related":"Zugehöriger %{link} nicht gefunden","please-contact":"Bitte kontaktiere %{user} um den Kommentar zu initialisieren","init-issue":"Initialisiere Issue","leave-a-comment":"Hinterlasse einen Kommentar",preview:"Vorschau",edit:"Editieren",comment:"Kommentieren","support-markdown":"Markdown wird unterstützt","login-with-github":"Mit GitHub-Account anmelden","first-comment-person":"Sei die erste Person, welche einen Kommentar hinterlässt!",commented:"kommentierte","load-more":"Zeige mehr",counts:"%{counts} Kommentar |||| %{counts} Kommentare","sort-asc":"Älteste zuerst","sort-desc":"Neuste zuerst",logout:"Abmelden",anonymous:"Anonym"}},function(e,t){e.exports={init:"Gitalking ...","no-found-related":"Nie znaleziono powiązanego zgłoszenia: %{link}","please-contact":"Skontaktuj się z %{user}, aby umożliwić komentowanie","init-issue":"Utwórz zgłoszenie (GitHub Issue)","leave-a-comment":"Skomentuj",preview:"Podgląd",edit:"Edytuj",comment:"Wyślij","support-markdown":"Możesz użyć składni Markdown","login-with-github":"Zaloguj się poprzez GitHub","first-comment-person":"Skomentuj jako pierwszy!",commented:"skomentowany","load-more":"Załaduj więcej",counts:"%{counts} komentarz |||| %{counts} komentarze |||| %{counts} komentarzy","sort-asc":"Sortuj od najstarszych","sort-desc":"Sortuj od najnowszych",logout:"Wyloguj",anonymous:"Anonimowy"}},function(e,t){e.exports={init:"초기화 중 ...","no-found-related":"관련 링크를 찾을 수 없습니다: %{link} ","please-contact":"초기화를 위해 %{user} 에게 연락해 주세요","init-issue":"이슈 초기화","leave-a-comment":"댓글을 남겨보세요",preview:"미리보기",edit:"수정하기",comment:"댓글 달기","support-markdown":"마크다운(Markdown) 문법 지원","login-with-github":"GitHub로 로그인하기","first-comment-person":"첫 번째로 댓글을 남겨보세요!",commented:"님이 작성함","load-more":"더 보기",counts:"댓글 %{counts} 개","sort-asc":"오래된 댓글 먼저","sort-desc":"최신 댓글 먼저",logout:"로그아웃",anonymous:"익명"}},function(e,t){},function(e,t,n){e.exports={default:n(273),__esModule:!0}},function(e,t,n){n(274),e.exports=n(7).Object.keys},function(e,t,n){var a=n(33),i=n(42);n(115)("keys",function(){return function(e){return i(a(e))}})},function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var i=n(276),r=a(i),o=n(279),u=a(o);t.default=function(){function e(e,t){var n=[],a=!0,i=!1,r=void 0;try{for(var o,s=(0,u.default)(e);!(a=(o=s.next()).done)&&(n.push(o.value),!t||n.length!==t);a=!0);}catch(e){i=!0,r=e}finally{try{!a&&s.return&&s.return()}finally{if(i)throw r}}return n}return function(t,n){if(Array.isArray(t))return t;if((0,r.default)(Object(t)))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}()},function(e,t,n){e.exports={default:n(277),__esModule:!0}},function(e,t,n){n(54),n(40),e.exports=n(278)},function(e,t,n){var a=n(76),i=n(9)("iterator"),r=n(31);e.exports=n(7).isIterable=function(e){var t=Object(e);return void 0!==t[i]||"@@iterator"in t||r.hasOwnProperty(a(t))}},function(e,t,n){e.exports={default:n(280),__esModule:!0}},function(e,t,n){n(54),n(40),e.exports=n(281)},function(e,t,n){var a=n(14),i=n(77);e.exports=n(7).getIterator=function(e){var t=i(e);if("function"!=typeof t)throw TypeError(e+" is not iterable!");return a(t.call(e))}},function(e,t,n){e.exports=n(283)},function(e,t,n){"use strict";function a(e){var t=new o(e),n=r(o.prototype.request,t);return i.extend(n,o.prototype,t),i.extend(n,t),n}var i=n(10),r=n(122),o=n(284),u=n(128),s=n(125),d=a(s);d.Axios=o,d.create=function(e){return a(u(d.defaults,e))},d.Cancel=n(129),d.CancelToken=n(297),d.isCancel=n(124),d.all=function(e){return Promise.all(e)},d.spread=n(298),e.exports=d,e.exports.default=d},function(e,t,n){"use strict";function a(e){this.defaults=e,this.interceptors={request:new o,response:new o}}var i=n(10),r=n(123),o=n(285),u=n(286),s=n(128);a.prototype.request=function(e){"string"==typeof e?(e=arguments[1]||{},e.url=arguments[0]):e=e||{},e=s(this.defaults,e),e.method?e.method=e.method.toLowerCase():this.defaults.method?e.method=this.defaults.method.toLowerCase():e.method="get";var t=[u,void 0],n=Promise.resolve(e);for(this.interceptors.request.forEach(function(e){t.unshift(e.fulfilled,e.rejected)}),this.interceptors.response.forEach(function(e){t.push(e.fulfilled,e.rejected)});t.length;)n=n.then(t.shift(),t.shift());return n},a.prototype.getUri=function(e){return e=s(this.defaults,e),r(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},i.forEach(["delete","get","head","options"],function(e){a.prototype[e]=function(t,n){return this.request(i.merge(n||{},{method:e,url:t}))}}),i.forEach(["post","put","patch"],function(e){a.prototype[e]=function(t,n,a){return this.request(i.merge(a||{},{method:e,url:t,data:n}))}}),e.exports=a},function(e,t,n){"use strict";function a(){this.handlers=[]}var i=n(10);a.prototype.use=function(e,t){return this.handlers.push({fulfilled:e,rejected:t}),this.handlers.length-1},a.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},a.prototype.forEach=function(e){i.forEach(this.handlers,function(t){null!==t&&e(t)})},e.exports=a},function(e,t,n){"use strict";function a(e){e.cancelToken&&e.cancelToken.throwIfRequested()}var i=n(10),r=n(287),o=n(124),u=n(125);e.exports=function(e){return a(e),e.headers=e.headers||{},e.data=r(e.data,e.headers,e.transformRequest),e.headers=i.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),i.forEach(["delete","get","head","post","put","patch","common"],function(t){delete e.headers[t]}),(e.adapter||u.adapter)(e).then(function(t){return a(e),t.data=r(t.data,t.headers,e.transformResponse),t},function(t){return o(t)||(a(e),t&&t.response&&(t.response.data=r(t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)})}},function(e,t,n){"use strict";var a=n(10);e.exports=function(e,t,n){return a.forEach(n,function(n){e=n(e,t)}),e}},function(e,t,n){"use strict";var a=n(10);e.exports=function(e,t){a.forEach(e,function(n,a){a!==t&&a.toUpperCase()===t.toUpperCase()&&(e[t]=n,delete e[a])})}},function(e,t,n){"use strict";var a=n(127);e.exports=function(e,t,n){var i=n.config.validateStatus;!i||i(n.status)?e(n):t(a("Request failed with status code "+n.status,n.config,null,n.request,n))}},function(e,t,n){"use strict";e.exports=function(e,t,n,a,i){return e.config=t,n&&(e.code=n),e.request=a,e.response=i,e.isAxiosError=!0,e.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},e}},function(e,t,n){"use strict";var a=n(292),i=n(293);e.exports=function(e,t){return e&&!a(t)?i(e,t):t}},function(e,t,n){"use strict";e.exports=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)}},function(e,t,n){"use strict";e.exports=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}},function(e,t,n){"use strict";var a=n(10),i=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];e.exports=function(e){var t,n,r,o={};return e?(a.forEach(e.split("\n"),function(e){if(r=e.indexOf(":"),t=a.trim(e.substr(0,r)).toLowerCase(),n=a.trim(e.substr(r+1)),t){if(o[t]&&i.indexOf(t)>=0)return;o[t]="set-cookie"===t?(o[t]?o[t]:[]).concat([n]):o[t]?o[t]+", "+n:n}}),o):o}},function(e,t,n){"use strict";var a=n(10);e.exports=a.isStandardBrowserEnv()?function(){function e(e){var t=e;return n&&(i.setAttribute("href",t),t=i.href),i.setAttribute("href",t),{href:i.href,protocol:i.protocol?i.protocol.replace(/:$/,""):"",host:i.host,search:i.search?i.search.replace(/^\?/,""):"",hash:i.hash?i.hash.replace(/^#/,""):"",hostname:i.hostname,port:i.port,pathname:"/"===i.pathname.charAt(0)?i.pathname:"/"+i.pathname}}var t,n=/(msie|trident)/i.test(navigator.userAgent),i=document.createElement("a");return t=e(window.location.href),function(n){var i=a.isString(n)?e(n):n;return i.protocol===t.protocol&&i.host===t.host}}():function(){return function(){return!0}}()},function(e,t,n){"use strict";var a=n(10);e.exports=a.isStandardBrowserEnv()?function(){return{write:function(e,t,n,i,r,o){var u=[];u.push(e+"="+encodeURIComponent(t)),a.isNumber(n)&&u.push("expires="+new Date(n).toGMTString()),a.isString(i)&&u.push("path="+i),a.isString(r)&&u.push("domain="+r),!0===o&&u.push("secure"),document.cookie=u.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}}():function(){return{write:function(){},read:function(){return null},remove:function(){}}}()},function(e,t,n){"use strict";function a(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise(function(e){t=e});var n=this;e(function(e){n.reason||(n.reason=new i(e),t(n.reason))})}var i=n(129);a.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},a.source=function(){var e;return{token:new a(function(t){e=t}),cancel:e}},e.exports=a},function(e,t,n){"use strict";e.exports=function(e){return function(t){return e.apply(null,t)}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var a=n(12),i=function(e){return e&&e.__esModule?e:{default:e}}(a);t.default=function(e){var t=e.className,n=e.getRef,a=e.onClick,r=e.onMouseDown,o=e.text,u=e.isLoading;return i.default.createElement("button",{ref:function(e){return n&&n(e)},className:"gt-btn "+t,onClick:a,onMouseDown:r},i.default.createElement("span",{className:"gt-btn-text"},o),u&&i.default.createElement("span",{className:"gt-btn-loading gt-spinner"}))}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var a=n(12),i=function(e){return e&&e.__esModule?e:{default:e}}(a);t.default=function(e){var t=e.className,n=e.onClick,a=e.text;return i.default.createElement("a",{className:"gt-action "+t,onClick:n},i.default.createElement("span",{className:"gt-action-text"},a))}},function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var i=n(114),r=a(i),o=n(64),u=a(o),s=n(65),d=a(s),c=n(116),l=a(c),m=n(120),f=a(m),h=n(12),p=a(h),g=n(130),v=a(g),w=n(131),b=a(w),y=n(310),M=n(439);n(855),"undefined"!=typeof window&&(window.GT_i18n_LocaleMap={zh:M.zhCN,"zh-CN":M.zhCN,"zh-TW":M.zhTW,"es-ES":M.es,fr:M.fr,ru:M.ru,pl:M.pl,ko:M.ko,de:M.de});var k=function(e){function t(){return(0,u.default)(this,t),(0,l.default)(this,(t.__proto__||(0,r.default)(t)).apply(this,arguments))}return(0,f.default)(t,e),(0,d.default)(t,[{key:"shouldComponentUpdate",value:function(e){return e.comment!==this.props.comment}},{key:"componentDidMount",value:function(){var e=this.node,t=e.querySelector(".email-hidden-toggle>a");t&&t.addEventListener("click",function(t){t.preventDefault(),e.querySelector(".email-hidden-reply").classList.toggle("expanded")},!0)}},{key:"render",value:function(){var e=this,t=this.props,n=t.comment,a=t.user,i=t.language,r=t.commentedText,o=void 0===r?"":r,u=t.admin,s=void 0===u?[]:u,d=t.replyCallback,c=t.likeCallback,l=a&&n.user.login===a.login,m=~[].concat(s).map(function(e){return e.toLowerCase()}).indexOf(n.user.login.toLowerCase()),f=n.reactions,h="";return f&&f.totalCount&&(h=f.totalCount,100===f.totalCount&&f.pageInfo&&f.pageInfo.hasNextPage&&(h="100+")),p.default.createElement("div",{ref:function(t){e.node=t},className:"gt-comment "+(m?"gt-comment-admin":"")},p.default.createElement(v.default,{className:"gt-comment-avatar",src:n.user&&n.user.avatar_url,alt:n.user&&n.user.login}),p.default.createElement("div",{className:"gt-comment-content"},p.default.createElement("div",{className:"gt-comment-header"},p.default.createElement("div",{className:"gt-comment-block-"+(a?"2":"1")}),p.default.createElement("a",{className:"gt-comment-username",href:n.user&&n.user.html_url},n.user&&n.user.login),p.default.createElement("span",{className:"gt-comment-text"},o),p.default.createElement("span",{className:"gt-comment-date"},(0,y.formatDistanceToNow)((0,y.parseISO)(n.created_at),{addSuffix:!0,locale:window.GT_i18n_LocaleMap[i]})),f&&p.default.createElement("a",{className:"gt-comment-like",title:"Like",onClick:c},f.viewerHasReacted?p.default.createElement(b.default,{className:"gt-ico-heart",name:"heart_on",text:h}):p.default.createElement(b.default,{className:"gt-ico-heart",name:"heart",text:h})),l?p.default.createElement("a",{href:n.html_url,className:"gt-comment-edit",title:"Edit",target:"_blank",rel:"noopener noreferrer"},p.default.createElement(b.default,{className:"gt-ico-edit",name:"edit"})):p.default.createElement("a",{className:"gt-comment-reply",title:"Reply",onClick:d},p.default.createElement(b.default,{className:"gt-ico-reply",name:"reply"}))),p.default.createElement("div",{className:"gt-comment-body markdown-body",dangerouslySetInnerHTML:{__html:n.body_html}})))}}]),t}(h.Component);t.default=k},function(e,t,n){function a(e){return n(i(e))}function i(e){var t=r[e];if(!(t+1))throw new Error("Cannot find module '"+e+"'.");return t}var r={"./arrow_down.svg":303,"./edit.svg":304,"./github.svg":305,"./heart.svg":306,"./heart_on.svg":307,"./reply.svg":308,"./tip.svg":309};a.keys=function(){return Object.keys(r)},a.resolve=i,e.exports=a,a.id=302},function(e,t){e.exports='<svg viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" p-id="1619"><path d="M511.872 676.8c-0.003 0-0.006 0-0.008 0-9.137 0-17.379-3.829-23.21-9.97l-251.277-265.614c-5.415-5.72-8.743-13.464-8.744-21.984 0-17.678 14.33-32.008 32.008-32.008 9.157 0 17.416 3.845 23.25 10.009l228.045 241.103 228.224-241.088c5.855-6.165 14.113-10.001 23.266-10.001 8.516 0 16.256 3.32 21.998 8.736 12.784 12.145 13.36 32.434 1.264 45.233l-251.52 265.6c-5.844 6.155-14.086 9.984-23.223 9.984-0.025 0-0.051 0-0.076 0z" p-id="1620"></path></svg>'},function(e,t){e.exports='<svg viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg">\n <path d="M785.333333 85.333333C774.666667 85.333333 763.2 90.133333 754.666667 98.666667L682.666667 170.666667 853.333333 341.333333 925.333333 269.333333C942.4 252.266667 942.4 222.133333 925.333333 209.333333L814.666667 98.666667C806.133333 90.133333 796 85.333333 785.333333 85.333333zM640 217.333333 85.333333 768 85.333333 938.666667 256 938.666667 806.666667 384 640 217.333333z"></path>\n</svg>\n'},function(e,t){e.exports='<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg">\n <path d="M64 524C64 719.602 189.356 885.926 364.113 947.017 387.65799 953 384 936.115 384 924.767L384 847.107C248.118 863.007 242.674 773.052 233.5 758.001 215 726.501 171.5 718.501 184.5 703.501 215.5 687.501 247 707.501 283.5 761.501 309.956 800.642 361.366 794.075 387.658 787.497 393.403 763.997 405.637 743.042 422.353 726.638 281.774 701.609 223 615.67 223 513.5 223 464.053 239.322 418.406 271.465 381.627 251.142 320.928 273.421 269.19 276.337 261.415 334.458 256.131 394.888 302.993 399.549 306.685 432.663 297.835 470.341 293 512.5 293 554.924 293 592.81 297.896 626.075 306.853 637.426 298.219 693.46 258.054 747.5 262.966 750.382 270.652 772.185 321.292 753.058 381.083 785.516 417.956 802 463.809 802 513.5 802 615.874 742.99 701.953 601.803 726.786 625.381 750.003 640 782.295 640 818.008L640 930.653C640.752 939.626 640 948.664978 655.086 948.665 832.344 888.962 960 721.389 960 524 960 276.576 759.424 76 512 76 264.577 76 64 276.576 64 524Z"></path>\n</svg>\n'},function(e,t){e.exports='<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">\n <path d="M527.061333 166.528A277.333333 277.333333 0 0 1 1000.618667 362.666667a277.333333 277.333333 0 0 1-81.28 196.138666l-377.173334 377.173334a42.666667 42.666667 0 0 1-60.330666 0l-377.173334-377.173334a277.376 277.376 0 0 1 392.277334-392.277333l15.061333 15.061333 15.061333-15.061333z m286.72 377.173333l45.226667-45.226666a192 192 0 0 0-135.808-327.893334 192 192 0 0 0-135.808 56.32l-45.226667 45.226667a42.666667 42.666667 0 0 1-60.330666 0l-45.226667-45.226667a192.042667 192.042667 0 0 0-271.616 271.573334L512 845.482667l301.781333-301.781334z"></path>\n</svg>\n'},function(e,t){e.exports='<svg t="1512463363724" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">\n <path d="M527.061333 166.528A277.333333 277.333333 0 0 1 1000.618667 362.666667a277.333333 277.333333 0 0 1-81.28 196.138666l-377.173334 377.173334a42.666667 42.666667 0 0 1-60.330666 0l-377.173334-377.173334a277.376 277.376 0 0 1 392.277334-392.277333l15.061333 15.061333 15.061333-15.061333z"></path>\n</svg>\n'},function(e,t){e.exports='<svg viewBox="0 0 1332 1024" version="1.1" xmlns="http://www.w3.org/2000/svg">\n <path d="M529.066665 273.066666 529.066665 0 51.2 477.866666 529.066665 955.733335 529.066665 675.84C870.4 675.84 1109.333335 785.066665 1280 1024 1211.733335 682.666665 1006.933335 341.333334 529.066665 273.066666"></path>\n</svg>\n'},function(e,t){e.exports='<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg">\n <path d="M512 366.949535c-16.065554 0-29.982212 13.405016-29.982212 29.879884l0 359.070251c0 16.167882 13.405016 29.879884 29.982212 29.879884 15.963226 0 29.879884-13.405016 29.879884-29.879884L541.879884 396.829419C541.879884 380.763865 528.474868 366.949535 512 366.949535L512 366.949535z"\n p-id="3083"></path>\n <path d="M482.017788 287.645048c0-7.776956 3.274508-15.553912 8.80024-21.181973 5.525732-5.525732 13.302688-8.80024 21.181973-8.80024 7.776956 0 15.553912 3.274508 21.079644 8.80024 5.525732 5.62806 8.80024 13.405016 8.80024 21.181973 0 7.776956-3.274508 15.656241-8.80024 21.181973-5.525732 5.525732-13.405016 8.697911-21.079644 8.697911-7.879285 0-15.656241-3.274508-21.181973-8.697911C485.292295 303.301289 482.017788 295.524333 482.017788 287.645048L482.017788 287.645048z"\n p-id="3084"></path>\n <path d="M512 946.844409c-239.8577 0-434.895573-195.037873-434.895573-434.895573 0-239.8577 195.037873-434.895573 434.895573-434.895573 239.755371 0 434.895573 195.037873 434.895573 434.895573C946.895573 751.806535 751.755371 946.844409 512 946.844409zM512 126.17088c-212.740682 0-385.880284 173.037274-385.880284 385.777955 0 212.740682 173.037274 385.777955 385.880284 385.777955 212.740682 0 385.777955-173.037274 385.777955-385.777955C897.777955 299.208154 724.740682 126.17088 512 126.17088z"\n p-id="3085"></path>\n</svg>\n'},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var a=n(311);n.d(t,"add",function(){return a.a});var i=n(132);n.d(t,"addBusinessDays",function(){return i.a});var r=n(21);n.d(t,"addDays",function(){return r.a});var o=n(84);n.d(t,"addHours",function(){return o.a});var u=n(134);n.d(t,"addISOWeekYears",function(){return u.a});var s=n(45);n.d(t,"addMilliseconds",function(){return s.a});var d=n(136);n.d(t,"addMinutes",function(){return d.a});var c=n(44);n.d(t,"addMonths",function(){return c.a});var l=n(85);n.d(t,"addQuarters",function(){return l.a});var m=n(137);n.d(t,"addSeconds",function(){return m.a});var f=n(58);n.d(t,"addWeeks",function(){return f.a});var h=n(138);n.d(t,"addYears",function(){return h.a});var p=n(312);n.d(t,"areIntervalsOverlapping",function(){return p.a});var g=n(313);n.d(t,"closestIndexTo",function(){return g.a});var v=n(314);n.d(t,"closestTo",function(){return v.a});var w=n(27);n.d(t,"compareAsc",function(){return w.a});var b=n(315);n.d(t,"compareDesc",function(){return b.a});var y=n(316);n.d(t,"differenceInBusinessDays",function(){return y.a});var M=n(26);n.d(t,"differenceInCalendarDays",function(){return M.a});var k=n(139);n.d(t,"differenceInCalendarISOWeekYears",function(){return k.a});var P=n(317);n.d(t,"differenceInCalendarISOWeeks",function(){return P.a});var W=n(140);n.d(t,"differenceInCalendarMonths",function(){return W.a});var x=n(318);n.d(t,"differenceInCalendarQuarters",function(){return x.a});var j=n(142);n.d(t,"differenceInCalendarWeeks",function(){return j.a});var T=n(143);n.d(t,"differenceInCalendarYears",function(){return T.a});var S=n(86);n.d(t,"differenceInDays",function(){return S.a});var C=n(144);n.d(t,"differenceInHours",function(){return C.a});var z=n(319);n.d(t,"differenceInISOWeekYears",function(){return z.a});var N=n(59);n.d(t,"differenceInMilliseconds",function(){return N.a});var D=n(146);n.d(t,"differenceInMinutes",function(){return D.a});var E=n(60);n.d(t,"differenceInMonths",function(){return E.a});var H=n(320);n.d(t,"differenceInQuarters",function(){return H.a});var A=n(61);n.d(t,"differenceInSeconds",function(){return A.a});var _=n(321);n.d(t,"differenceInWeeks",function(){return _.a});var O=n(147);n.d(t,"differenceInYears",function(){return O.a});var X=n(148);n.d(t,"eachDayOfInterval",function(){return X.a});var I=n(322);n.d(t,"eachHourOfInterval",function(){return I.a});var Y=n(323);n.d(t,"eachMonthOfInterval",function(){return Y.a});var F=n(324);n.d(t,"eachQuarterOfInterval",function(){return F.a});var L=n(325);n.d(t,"eachWeekOfInterval",function(){return L.a});var q=n(88);n.d(t,"eachWeekendOfInterval",function(){return q.a});var G=n(326);n.d(t,"eachWeekendOfMonth",function(){return G.a});var R=n(327);n.d(t,"eachWeekendOfYear",function(){return R.a});var U=n(328);n.d(t,"eachYearOfInterval",function(){return U.a});var K=n(91);n.d(t,"endOfDay",function(){return K.a});var J=n(329);n.d(t,"endOfDecade",function(){return J.a});var B=n(330);n.d(t,"endOfHour",function(){return B.a});var $=n(331);n.d(t,"endOfISOWeek",function(){return $.a});var V=n(332);n.d(t,"endOfISOWeekYear",function(){return V.a});var Q=n(333);n.d(t,"endOfMinute",function(){return Q.a});var Z=n(89);n.d(t,"endOfMonth",function(){return Z.a});var ee=n(334);n.d(t,"endOfQuarter",function(){return ee.a});var te=n(335);n.d(t,"endOfSecond",function(){return te.a});var ne=n(336);n.d(t,"endOfToday",function(){return ne.a});var ae=n(337);n.d(t,"endOfTomorrow",function(){return ae.a});var ie=n(150);n.d(t,"endOfWeek",function(){return ie.a});var re=n(149);n.d(t,"endOfYear",function(){return re.a});var oe=n(338);n.d(t,"endOfYesterday",function(){return oe.a});var ue=n(151);n.d(t,"format",function(){return ue.a});var se=n(158);n.d(t,"formatDistance",function(){return se.a});var de=n(161);n.d(t,"formatDistanceStrict",function(){return de.a});var ce=n(344);n.d(t,"formatDistanceToNow",function(){return ce.a});var le=n(345);n.d(t,"formatDistanceToNowStrict",function(){return le.a});var me=n(346);n.d(t,"formatDuration",function(){return me.a});var fe=n(347);n.d(t,"formatISO",function(){return fe.a});var he=n(348);n.d(t,"formatISO9075",function(){return he.a});var pe=n(349);n.d(t,"formatISODuration",function(){return pe.a});var ge=n(350);n.d(t,"formatRFC3339",function(){return ge.a});var ve=n(351);n.d(t,"formatRFC7231",function(){return ve.a});var we=n(352);n.d(t,"formatRelative",function(){return we.a});var be=n(353);n.d(t,"fromUnixTime",function(){return be.a});var ye=n(162);n.d(t,"getDate",function(){return ye.a});var Me=n(163);n.d(t,"getDay",function(){return Me.a});var ke=n(354);n.d(t,"getDayOfYear",function(){return ke.a});var Pe=n(164);n.d(t,"getDaysInMonth",function(){return Pe.a});var We=n(355);n.d(t,"getDaysInYear",function(){return We.a});var xe=n(356);n.d(t,"getDecade",function(){return xe.a});var je=n(357);n.d(t,"getHours",function(){return je.a});var Te=n(166);n.d(t,"getISODay",function(){return Te.a});var Se=n(167);n.d(t,"getISOWeek",function(){return Se.a});var Ce=n(34);n.d(t,"getISOWeekYear",function(){return Ce.a});var ze=n(358);n.d(t,"getISOWeeksInYear",function(){return ze.a});var Ne=n(359);n.d(t,"getMilliseconds",function(){return Ne.a});var De=n(360);n.d(t,"getMinutes",function(){return De.a});var Ee=n(361);n.d(t,"getMonth",function(){return Ee.a});var He=n(362);n.d(t,"getOverlappingDaysInIntervals",function(){return He.a});var Ae=n(141);n.d(t,"getQuarter",function(){return Ae.a});var _e=n(363);n.d(t,"getSeconds",function(){return _e.a});var Oe=n(168);n.d(t,"getTime",function(){return Oe.a});var Xe=n(364);n.d(t,"getUnixTime",function(){return Xe.a});var Ie=n(169);n.d(t,"getWeek",function(){return Ie.a});var Ye=n(365);n.d(t,"getWeekOfMonth",function(){return Ye.a});var Fe=n(170);n.d(t,"getWeekYear",function(){return Fe.a});var Le=n(366);n.d(t,"getWeeksInMonth",function(){return Le.a});var qe=n(367);n.d(t,"getYear",function(){return qe.a});var Ge=n(368);n.d(t,"intervalToDuration",function(){return Ge.a});var Re=n(369);n.d(t,"isAfter",function(){return Re.a});var Ue=n(370);n.d(t,"isBefore",function(){return Ue.a});var Ke=n(371);n.d(t,"isDate",function(){return Ke.a});var Je=n(372);n.d(t,"isEqual",function(){return Je.a});var Be=n(373);n.d(t,"isExists",function(){return Be.a});var $e=n(374);n.d(t,"isFirstDayOfMonth",function(){return $e.a});var Ve=n(375);n.d(t,"isFriday",function(){return Ve.a});var Qe=n(376);n.d(t,"isFuture",function(){return Qe.a});var Ze=n(377);n.d(t,"isLastDayOfMonth",function(){return Ze.a});var et=n(165);n.d(t,"isLeapYear",function(){return et.a});var tt=n(378);n.d(t,"isMatch",function(){return tt.a});var nt=n(384);n.d(t,"isMonday",function(){return nt.a});var at=n(385);n.d(t,"isPast",function(){return at.a});var it=n(47);n.d(t,"isSameDay",function(){return it.a});var rt=n(175);n.d(t,"isSameHour",function(){return rt.a});var ot=n(177);n.d(t,"isSameISOWeek",function(){return ot.a});var ut=n(386);n.d(t,"isSameISOWeekYear",function(){return ut.a});var st=n(178);n.d(t,"isSameMinute",function(){return st.a});var dt=n(180);n.d(t,"isSameMonth",function(){return dt.a});var ct=n(181);n.d(t,"isSameQuarter",function(){return ct.a});var lt=n(182);n.d(t,"isSameSecond",function(){return lt.a});var mt=n(95);n.d(t,"isSameWeek",function(){return mt.a});var ft=n(184);n.d(t,"isSameYear",function(){return ft.a});var ht=n(133);n.d(t,"isSaturday",function(){return ht.a});var pt=n(83);n.d(t,"isSunday",function(){return pt.a});var gt=n(387);n.d(t,"isThisHour",function(){return gt.a});var vt=n(388);n.d(t,"isThisISOWeek",function(){return vt.a});var wt=n(389);n.d(t,"isThisMinute",function(){return wt.a});var bt=n(390);n.d(t,"isThisMonth",function(){return bt.a});var yt=n(391);n.d(t,"isThisQuarter",function(){return yt.a});var Mt=n(392);n.d(t,"isThisSecond",function(){return Mt.a});var kt=n(393);n.d(t,"isThisWeek",function(){return kt.a});var Pt=n(394);n.d(t,"isThisYear",function(){return Pt.a});var Wt=n(395);n.d(t,"isThursday",function(){return Wt.a});var xt=n(396);n.d(t,"isToday",function(){return xt.a});var jt=n(397);n.d(t,"isTomorrow",function(){return jt.a});var Tt=n(398);n.d(t,"isTuesday",function(){return Tt.a});var St=n(15);n.d(t,"isValid",function(){return St.a});var Ct=n(399);n.d(t,"isWednesday",function(){return Ct.a});var zt=n(56);n.d(t,"isWeekend",function(){return zt.a});var Nt=n(400);n.d(t,"isWithinInterval",function(){return Nt.a});var Dt=n(401);n.d(t,"isYesterday",function(){return Dt.a});var Et=n(402);n.d(t,"lastDayOfDecade",function(){return Et.a});var Ht=n(403);n.d(t,"lastDayOfISOWeek",function(){return Ht.a});var At=n(404);n.d(t,"lastDayOfISOWeekYear",function(){return At.a});var _t=n(171);n.d(t,"lastDayOfMonth",function(){return _t.a});var Ot=n(405);n.d(t,"lastDayOfQuarter",function(){return Ot.a});var Xt=n(185);n.d(t,"lastDayOfWeek",function(){return Xt.a});var It=n(406);n.d(t,"lastDayOfYear",function(){return It.a});var Yt=n(407);n.d(t,"lightFormat",function(){return Yt.a});var Ft=n(408);n.d(t,"max",function(){return Ft.a});var Lt=n(409);n.d(t,"min",function(){return Lt.a});var qt=n(174);n.d(t,"parse",function(){return qt.a});var Gt=n(410);n.d(t,"parseISO",function(){return Gt.a});var Rt=n(411);n.d(t,"parseJSON",function(){return Rt.a});var Ut=n(412);n.d(t,"roundToNearestMinutes",function(){return Ut.a});var Kt=n(413);n.d(t,"set",function(){return Kt.a});var Jt=n(414);n.d(t,"setDate",function(){return Jt.a});var Bt=n(415);n.d(t,"setDay",function(){return Bt.a});var $t=n(416);n.d(t,"setDayOfYear",function(){return $t.a});var Vt=n(417);n.d(t,"setHours",function(){return Vt.a});var Qt=n(418);n.d(t,"setISODay",function(){return Qt.a});var Zt=n(419);n.d(t,"setISOWeek",function(){return Zt.a});var en=n(135);n.d(t,"setISOWeekYear",function(){return en.a});var tn=n(420);n.d(t,"setMilliseconds",function(){return tn.a});var nn=n(421);n.d(t,"setMinutes",function(){return nn.a});var an=n(96);n.d(t,"setMonth",function(){return an.a});var rn=n(422);n.d(t,"setQuarter",function(){return rn.a});var on=n(423);n.d(t,"setSeconds",function(){return on.a});var un=n(424);n.d(t,"setWeek",function(){return un.a});var sn=n(425);n.d(t,"setWeekYear",function(){return sn.a});var dn=n(426);n.d(t,"setYear",function(){return dn.a});var cn=n(57);n.d(t,"startOfDay",function(){return cn.a});var ln=n(427);n.d(t,"startOfDecade",function(){return ln.a});var mn=n(176);n.d(t,"startOfHour",function(){return mn.a});var fn=n(25);n.d(t,"startOfISOWeek",function(){return fn.a});var hn=n(46);n.d(t,"startOfISOWeekYear",function(){return hn.a});var pn=n(179);n.d(t,"startOfMinute",function(){return pn.a});var gn=n(62);n.d(t,"startOfMonth",function(){return gn.a});var vn=n(87);n.d(t,"startOfQuarter",function(){return vn.a});var wn=n(183);n.d(t,"startOfSecond",function(){return wn.a});var bn=n(428);n.d(t,"startOfToday",function(){return bn.a});var yn=n(429);n.d(t,"startOfTomorrow",function(){return yn.a});var Mn=n(22);n.d(t,"startOfWeek",function(){return Mn.a});var kn=n(93);n.d(t,"startOfWeekYear",function(){return kn.a});var Pn=n(90);n.d(t,"startOfYear",function(){return Pn.a});var Wn=n(430);n.d(t,"startOfYesterday",function(){return Wn.a});var xn=n(172);n.d(t,"sub",function(){return xn.a});var jn=n(431);n.d(t,"subBusinessDays",function(){return jn.a});var Tn=n(94);n.d(t,"subDays",function(){return Tn.a});var Sn=n(432);n.d(t,"subHours",function(){return Sn.a});var Cn=n(145);n.d(t,"subISOWeekYears",function(){return Cn.a});var zn=n(49);n.d(t,"subMilliseconds",function(){return zn.a});var Nn=n(433);n.d(t,"subMinutes",function(){return Nn.a});var Dn=n(173);n.d(t,"subMonths",function(){return Dn.a});var En=n(434);n.d(t,"subQuarters",function(){return En.a});var Hn=n(435);n.d(t,"subSeconds",function(){return Hn.a});var An=n(436);n.d(t,"subWeeks",function(){return An.a});var _n=n(437);n.d(t,"subYears",function(){return _n.a});var On=n(1);n.d(t,"toDate",function(){return On.a});var Xn=n(438);n.d(t,"maxTime",function(){return Xn.a}),n.d(t,"minTime",function(){return Xn.b})},function(e,t,n){"use strict";function a(e,t){if(u.a(2,arguments),!t||"object"!=typeof t)return new Date(NaN);var n="years"in t?s.a(t.years):0,a="months"in t?s.a(t.months):0,d="weeks"in t?s.a(t.weeks):0,c="days"in t?s.a(t.days):0,l="hours"in t?s.a(t.hours):0,m="minutes"in t?s.a(t.minutes):0,f="seconds"in t?s.a(t.seconds):0,h=o.a(e),p=a||n?r.a(h,a+12*n):h,g=c||d?i.a(p,c+7*d):p,v=m+60*l,w=f+60*v,b=1e3*w;return new Date(g.getTime()+b)}t.a=a;var i=n(21),r=n(44),o=n(1),u=n(0),s=n(6)},function(e,t,n){"use strict";function a(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};r.a(2,arguments);var a=e||{},o=t||{},u=i.a(a.start).getTime(),s=i.a(a.end).getTime(),d=i.a(o.start).getTime(),c=i.a(o.end).getTime();if(!(u<=s&&d<=c))throw new RangeError("Invalid interval");return n.inclusive?u<=c&&d<=s:u<c&&d<s}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e,t){r.a(2,arguments);var n=i.a(e);if(isNaN(n))return NaN;var a,o=n.getTime();a=null==t?[]:"function"==typeof t.forEach?t:Array.prototype.slice.call(t);var u,s;return a.forEach(function(e,t){var n=i.a(e);if(isNaN(n))return u=NaN,void(s=NaN);var a=Math.abs(o-n.getTime());(null==u||a<s)&&(u=t,s=a)}),u}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e,t){r.a(2,arguments);var n=i.a(e);if(isNaN(n))return new Date(NaN);var a,o=n.getTime();a=null==t?[]:"function"==typeof t.forEach?t:Array.prototype.slice.call(t);var u,s;return a.forEach(function(e){var t=i.a(e);if(isNaN(t))return u=new Date(NaN),void(s=NaN);var n=Math.abs(o-t.getTime());(null==u||n<s)&&(u=t,s=n)}),u}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e,t){r.a(2,arguments);var n=i.a(e),a=i.a(t),o=n.getTime()-a.getTime();return o>0?-1:o<0?1:o}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e,t){l.a(2,arguments);var n=o.a(e),a=o.a(t);if(!i.a(n)||!i.a(a))return new Date(NaN);var m=u.a(n,a),f=m<0?-1:1,h=c.a(m/7),p=5*h;for(a=s.a(a,7*h);!d.a(n,a);)p+=r.a(a)?0:f,a=s.a(a,f);return 0===p?0:p}t.a=a;var i=n(15),r=n(56),o=n(1),u=n(26),s=n(21),d=n(47),c=n(6),l=n(0)},function(e,t,n){"use strict";function a(e,t){o.a(2,arguments);var n=r.a(e),a=r.a(t),s=n.getTime()-i.a(n),d=a.getTime()-i.a(a);return Math.round((s-d)/u)}t.a=a;var i=n(19),r=n(25),o=n(0),u=6048e5},function(e,t,n){"use strict";function a(e,t){o.a(2,arguments);var n=r.a(e),a=r.a(t);return 4*(n.getFullYear()-a.getFullYear())+(i.a(n)-i.a(a))}t.a=a;var i=n(141),r=n(1),o=n(0)},function(e,t,n){"use strict";function a(e,t){s.a(2,arguments);var n=i.a(e),a=i.a(t),d=o.a(n,a),c=Math.abs(r.a(n,a));n=u.a(n,d*c);var l=o.a(n,a)===-d,m=d*(c-l);return 0===m?0:m}t.a=a;var i=n(1),r=n(139),o=n(27),u=n(145),s=n(0)},function(e,t,n){"use strict";function a(e,t){r.a(2,arguments);var n=i.a(e,t)/3;return n>0?Math.floor(n):Math.ceil(n)}t.a=a;var i=n(60),r=n(0)},function(e,t,n){"use strict";function a(e,t){r.a(2,arguments);var n=i.a(e,t)/7;return n>0?Math.floor(n):Math.ceil(n)}t.a=a;var i=n(86),r=n(0)},function(e,t,n){"use strict";function a(e,t){o.a(1,arguments);var n=e||{},a=r.a(n.start),u=r.a(n.end),s=a.getTime(),d=u.getTime();if(!(s<=d))throw new RangeError("Invalid interval");var c=[],l=a;l.setMinutes(0,0,0);var m=t&&"step"in t?Number(t.step):1;if(m<1||isNaN(m))throw new RangeError("`options.step` must be a number greater than 1");for(;l.getTime()<=d;)c.push(r.a(l)),l=i.a(l,m);return c}t.a=a;var i=n(84),r=n(1),o=n(0)},function(e,t,n){"use strict";function a(e){r.a(1,arguments);var t=e||{},n=i.a(t.start),a=i.a(t.end),o=a.getTime();if(!(n.getTime()<=o))throw new RangeError("Invalid interval");var u=[],s=n;for(s.setHours(0,0,0,0),s.setDate(1);s.getTime()<=o;)u.push(i.a(s)),s.setMonth(s.getMonth()+1);return u}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e){u.a(1,arguments);var t=e||{},n=o.a(t.start),a=o.a(t.end),s=a.getTime();if(!(n.getTime()<=s))throw new RangeError("Invalid interval");var d=r.a(n);s=r.a(a).getTime();for(var c=[],l=d;l.getTime()<=s;)c.push(o.a(l)),l=i.a(l,1);return c}t.a=a;var i=n(85),r=n(87),o=n(1),u=n(0)},function(e,t,n){"use strict";function a(e,t){u.a(1,arguments);var n=e||{},a=o.a(n.start),s=o.a(n.end),d=s.getTime();if(!(a.getTime()<=d))throw new RangeError("Invalid interval");var c=r.a(a,t),l=r.a(s,t);c.setHours(15),l.setHours(15),d=l.getTime();for(var m=[],f=c;f.getTime()<=d;)f.setHours(0),m.push(o.a(f)),f=i.a(f,1),f.setHours(15);return m}t.a=a;var i=n(58),r=n(22),o=n(1),u=n(0)},function(e,t,n){"use strict";function a(e){u.a(1,arguments);var t=r.a(e);if(isNaN(t))throw new RangeError("The passed date is invalid");var n=o.a(e);return i.a({start:t,end:n})}t.a=a;var i=n(88),r=n(62),o=n(89),u=n(0)},function(e,t,n){"use strict";function a(e){u.a(1,arguments);var t=r.a(e);if(isNaN(t))throw new RangeError("The passed date is invalid");var n=o.a(e);return i.a({start:t,end:n})}t.a=a;var i=n(88),r=n(90),o=n(149),u=n(0)},function(e,t,n){"use strict";function a(e){r.a(1,arguments);var t=e||{},n=i.a(t.start),a=i.a(t.end),o=a.getTime();if(!(n.getTime()<=o))throw new RangeError("Invalid interval");var u=[],s=n;for(s.setHours(0,0,0,0),s.setMonth(0,1);s.getTime()<=o;)u.push(i.a(s)),s.setFullYear(s.getFullYear()+1);return u}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e){r.a(1,arguments);var t=i.a(e),n=t.getFullYear(),a=9+10*Math.floor(n/10);return t.setFullYear(a,11,31),t.setHours(23,59,59,999),t}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e){r.a(1,arguments);var t=i.a(e);return t.setMinutes(59,59,999),t}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e){return r.a(1,arguments),i.a(e,{weekStartsOn:1})}t.a=a;var i=n(150),r=n(0)},function(e,t,n){"use strict";function a(e){o.a(1,arguments);var t=i.a(e),n=new Date(0);n.setFullYear(t+1,0,4),n.setHours(0,0,0,0);var a=r.a(n);return a.setMilliseconds(a.getMilliseconds()-1),a}t.a=a;var i=n(34),r=n(25),o=n(0)},function(e,t,n){"use strict";function a(e){r.a(1,arguments);var t=i.a(e);return t.setSeconds(59,999),t}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e){r.a(1,arguments);var t=i.a(e),n=t.getMonth(),a=n-n%3+3;return t.setMonth(a,0),t.setHours(23,59,59,999),t}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e){r.a(1,arguments);var t=i.a(e);return t.setMilliseconds(999),t}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(){return i.a(Date.now())}t.a=a;var i=n(91)},function(e,t,n){"use strict";function a(){var e=new Date,t=e.getFullYear(),n=e.getMonth(),a=e.getDate(),i=new Date(0);return i.setFullYear(t,n,a+1),i.setHours(23,59,59,999),i}t.a=a},function(e,t,n){"use strict";function a(){var e=new Date,t=e.getFullYear(),n=e.getMonth(),a=e.getDate(),i=new Date(0);return i.setFullYear(t,n,a-1),i.setHours(23,59,59,999),i}t.a=a},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},r={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},o={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e,t){var n=e>0?"-":"+",a=Math.abs(e),i=Math.floor(a/60),r=a%60;if(0===r)return n+String(i);var o=t||"";return n+String(i)+o+m.a(r,2)}function i(e,t){if(e%60==0){return(e>0?"-":"+")+m.a(Math.abs(e)/60,2)}return r(e,t)}function r(e,t){var n=t||"",a=e>0?"-":"+",i=Math.abs(e);return a+m.a(Math.floor(i/60),2)+n+m.a(i%60,2)}var o=n(152),u=n(341),s=n(153),d=n(154),c=n(155),l=n(92),m=n(38),f={am:"am",pm:"pm",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},h={G:function(e,t,n){var a=e.getUTCFullYear()>0?1:0;switch(t){case"G":case"GG":case"GGG":return n.era(a,{width:"abbreviated"});case"GGGGG":return n.era(a,{width:"narrow"});case"GGGG":default:return n.era(a,{width:"wide"})}},y:function(e,t,n){if("yo"===t){var a=e.getUTCFullYear(),i=a>0?a:1-a;return n.ordinalNumber(i,{unit:"year"})}return o.a.y(e,t)},Y:function(e,t,n,a){var i=l.a(e,a),r=i>0?i:1-i;if("YY"===t){var o=r%100;return m.a(o,2)}return"Yo"===t?n.ordinalNumber(r,{unit:"year"}):m.a(r,t.length)},R:function(e,t){var n=d.a(e);return m.a(n,t.length)},u:function(e,t){var n=e.getUTCFullYear();return m.a(n,t.length)},Q:function(e,t,n){var a=Math.ceil((e.getUTCMonth()+1)/3);switch(t){case"Q":return String(a);case"QQ":return m.a(a,2);case"Qo":return n.ordinalNumber(a,{unit:"quarter"});case"QQQ":return n.quarter(a,{width:"abbreviated",context:"formatting"});case"QQQQQ":return n.quarter(a,{width:"narrow",context:"formatting"});case"QQQQ":default:return n.quarter(a,{width:"wide",context:"formatting"})}},q:function(e,t,n){var a=Math.ceil((e.getUTCMonth()+1)/3);switch(t){case"q":return String(a);case"qq":return m.a(a,2);case"qo":return n.ordinalNumber(a,{unit:"quarter"});case"qqq":return n.quarter(a,{width:"abbreviated",context:"standalone"});case"qqqqq":return n.quarter(a,{width:"narrow",context:"standalone"});case"qqqq":default:return n.quarter(a,{width:"wide",context:"standalone"})}},M:function(e,t,n){var a=e.getUTCMonth();switch(t){case"M":case"MM":return o.a.M(e,t);case"Mo":return n.ordinalNumber(a+1,{unit:"month"});case"MMM":return n.month(a,{width:"abbreviated",context:"formatting"});case"MMMMM":return n.month(a,{width:"narrow",context:"formatting"});case"MMMM":default:return n.month(a,{width:"wide",context:"formatting"})}},L:function(e,t,n){var a=e.getUTCMonth();switch(t){case"L":return String(a+1);case"LL":return m.a(a+1,2);case"Lo":return n.ordinalNumber(a+1,{unit:"month"});case"LLL":return n.month(a,{width:"abbreviated",context:"standalone"});case"LLLLL":return n.month(a,{width:"narrow",context:"standalone"});case"LLLL":default:return n.month(a,{width:"wide",context:"standalone"})}},w:function(e,t,n,a){var i=c.a(e,a);return"wo"===t?n.ordinalNumber(i,{unit:"week"}):m.a(i,t.length)},I:function(e,t,n){var a=s.a(e);return"Io"===t?n.ordinalNumber(a,{unit:"week"}):m.a(a,t.length)},d:function(e,t,n){return"do"===t?n.ordinalNumber(e.getUTCDate(),{unit:"date"}):o.a.d(e,t)},D:function(e,t,n){var a=u.a(e);return"Do"===t?n.ordinalNumber(a,{unit:"dayOfYear"}):m.a(a,t.length)},E:function(e,t,n){var a=e.getUTCDay();switch(t){case"E":case"EE":case"EEE":return n.day(a,{width:"abbreviated",context:"formatting"});case"EEEEE":return n.day(a,{width:"narrow",context:"formatting"});case"EEEEEE":return n.day(a,{width:"short",context:"formatting"});case"EEEE":default:return n.day(a,{width:"wide",context:"formatting"})}},e:function(e,t,n,a){var i=e.getUTCDay(),r=(i-a.weekStartsOn+8)%7||7;switch(t){case"e":return String(r);case"ee":return m.a(r,2);case"eo":return n.ordinalNumber(r,{unit:"day"});case"eee":return n.day(i,{width:"abbreviated",context:"formatting"});case"eeeee":return n.day(i,{width:"narrow",context:"formatting"});case"eeeeee":return n.day(i,{width:"short",context:"formatting"});case"eeee":default:return n.day(i,{width:"wide",context:"formatting"})}},c:function(e,t,n,a){var i=e.getUTCDay(),r=(i-a.weekStartsOn+8)%7||7;switch(t){case"c":return String(r);case"cc":return m.a(r,t.length);case"co":return n.ordinalNumber(r,{unit:"day"});case"ccc":return n.day(i,{width:"abbreviated",context:"standalone"});case"ccccc":return n.day(i,{width:"narrow",context:"standalone"});case"cccccc":return n.day(i,{width:"short",context:"standalone"});case"cccc":default:return n.day(i,{width:"wide",context:"standalone"})}},i:function(e,t,n){var a=e.getUTCDay(),i=0===a?7:a;switch(t){case"i":return String(i);case"ii":return m.a(i,t.length);case"io":return n.ordinalNumber(i,{unit:"day"});case"iii":return n.day(a,{width:"abbreviated",context:"formatting"});case"iiiii":return n.day(a,{width:"narrow",context:"formatting"});case"iiiiii":return n.day(a,{width:"short",context:"formatting"});case"iiii":default:return n.day(a,{width:"wide",context:"formatting"})}},a:function(e,t,n){var a=e.getUTCHours(),i=a/12>=1?"pm":"am";switch(t){case"a":case"aa":case"aaa":return n.dayPeriod(i,{width:"abbreviated",context:"formatting"});case"aaaaa":return n.dayPeriod(i,{width:"narrow",context:"formatting"});case"aaaa":default:return n.dayPeriod(i,{width:"wide",context:"formatting"})}},b:function(e,t,n){var a,i=e.getUTCHours();switch(a=12===i?f.noon:0===i?f.midnight:i/12>=1?"pm":"am",t){case"b":case"bb":case"bbb":return n.dayPeriod(a,{width:"abbreviated",context:"formatting"});case"bbbbb":return n.dayPeriod(a,{width:"narrow",context:"formatting"});case"bbbb":default:return n.dayPeriod(a,{width:"wide",context:"formatting"})}},B:function(e,t,n){var a,i=e.getUTCHours();switch(a=i>=17?f.evening:i>=12?f.afternoon:i>=4?f.morning:f.night,t){case"B":case"BB":case"BBB":return n.dayPeriod(a,{width:"abbreviated",context:"formatting"});case"BBBBB":return n.dayPeriod(a,{width:"narrow",context:"formatting"});case"BBBB":default:return n.dayPeriod(a,{width:"wide",context:"formatting"})}},h:function(e,t,n){if("ho"===t){var a=e.getUTCHours()%12;return 0===a&&(a=12),n.ordinalNumber(a,{unit:"hour"})}return o.a.h(e,t)},H:function(e,t,n){return"Ho"===t?n.ordinalNumber(e.getUTCHours(),{unit:"hour"}):o.a.H(e,t)},K:function(e,t,n){var a=e.getUTCHours()%12;return"Ko"===t?n.ordinalNumber(a,{unit:"hour"}):m.a(a,t.length)},k:function(e,t,n){var a=e.getUTCHours();return 0===a&&(a=24),"ko"===t?n.ordinalNumber(a,{unit:"hour"}):m.a(a,t.length)},m:function(e,t,n){return"mo"===t?n.ordinalNumber(e.getUTCMinutes(),{unit:"minute"}):o.a.m(e,t)},s:function(e,t,n){return"so"===t?n.ordinalNumber(e.getUTCSeconds(),{unit:"second"}):o.a.s(e,t)},S:function(e,t){return o.a.S(e,t)},X:function(e,t,n,a){var o=a._originalDate||e,u=o.getTimezoneOffset();if(0===u)return"Z";switch(t){case"X":return i(u);case"XXXX":case"XX":return r(u);case"XXXXX":case"XXX":default:return r(u,":")}},x:function(e,t,n,a){var o=a._originalDate||e,u=o.getTimezoneOffset();switch(t){case"x":return i(u);case"xxxx":case"xx":return r(u);case"xxxxx":case"xxx":default:return r(u,":")}},O:function(e,t,n,i){var o=i._originalDate||e,u=o.getTimezoneOffset();switch(t){case"O":case"OO":case"OOO":return"GMT"+a(u,":");case"OOOO":default:return"GMT"+r(u,":")}},z:function(e,t,n,i){var o=i._originalDate||e,u=o.getTimezoneOffset();switch(t){case"z":case"zz":case"zzz":return"GMT"+a(u,":");case"zzzz":default:return"GMT"+r(u,":")}},t:function(e,t,n,a){var i=a._originalDate||e,r=Math.floor(i.getTime()/1e3);return m.a(r,t.length)},T:function(e,t,n,a){var i=a._originalDate||e,r=i.getTime();return m.a(r,t.length)}};t.a=h},function(e,t,n){"use strict";function a(e){r.a(1,arguments);var t=i.a(e),n=t.getTime();t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0);var a=t.getTime(),u=n-a;return Math.floor(u/o)+1}t.a=a;var i=n(1),r=n(0),o=864e5},function(e,t,n){"use strict";function a(e){o.a(1,arguments);var t=i.a(e),n=new Date(0);return n.setUTCFullYear(t,0,4),n.setUTCHours(0,0,0,0),r.a(n)}t.a=a;var i=n(154),r=n(63),o=n(0)},function(e,t,n){"use strict";function a(e,t){u.a(1,arguments);var n=t||{},a=n.locale,s=a&&a.options&&a.options.firstWeekContainsDate,d=null==s?1:i.a(s),c=null==n.firstWeekContainsDate?d:i.a(n.firstWeekContainsDate),l=r.a(e,t),m=new Date(0);return m.setUTCFullYear(l,0,c),m.setUTCHours(0,0,0,0),o.a(m,t)}t.a=a;var i=n(6),r=n(92),o=n(50),u=n(0)},function(e,t,n){"use strict";function a(e,t){return r.a(1,arguments),i.a(e,Date.now(),t)}t.a=a;var i=n(158),r=n(0)},function(e,t,n){"use strict";function a(e,t){return r.a(1,arguments),i.a(e,Date.now(),t)}t.a=a;var i=n(161),r=n(0)},function(e,t,n){"use strict";function a(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(arguments.length<1)throw new TypeError("1 argument required, but only ".concat(arguments.length," present"));var n=t.format||r,a=t.locale||i.a,o=t.zero||!1,u=t.delimiter||" ";return n.reduce(function(t,n){var i="x".concat(n.replace(/(^.)/,function(e){return e.toUpperCase()}));return"number"==typeof e[n]&&(o||e[n])?t.concat(a.formatDistance(i,e[n])):t},[]).join(u)}t.a=a;var i=n(28),r=["years","months","weeks","days","hours","minutes","seconds"]},function(e,t,n){"use strict";function a(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only ".concat(arguments.length," present"));var n=i.a(e);if(!r.a(n))throw new RangeError("Invalid time value");var a=t||{},u=null==a.format?"extended":String(a.format),s=null==a.representation?"complete":String(a.representation);if("extended"!==u&&"basic"!==u)throw new RangeError("format must be 'extended' or 'basic'");if("date"!==s&&"time"!==s&&"complete"!==s)throw new RangeError("representation must be 'date', 'time', or 'complete'");var d="",c="",l="extended"===u?"-":"",m="extended"===u?":":"";if("time"!==s){var f=o.a(n.getDate(),2),h=o.a(n.getMonth()+1,2);d="".concat(o.a(n.getFullYear(),4)).concat(l).concat(h).concat(l).concat(f)}if("date"!==s){var p=n.getTimezoneOffset();if(0!==p){var g=Math.abs(p),v=o.a(Math.floor(g/60),2),w=o.a(g%60,2);c="".concat(p<0?"+":"-").concat(v,":").concat(w)}else c="Z";var b=o.a(n.getHours(),2),y=o.a(n.getMinutes(),2),M=o.a(n.getSeconds(),2),k=""===d?"":"T",P=[b,y,M].join(m);d="".concat(d).concat(k).concat(P).concat(c)}return d}t.a=a;var i=n(1),r=n(15),o=n(38)},function(e,t,n){"use strict";function a(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only ".concat(arguments.length," present"));var n=i.a(e);if(!r.a(n))throw new RangeError("Invalid time value");var a=t||{},u=null==a.format?"extended":String(a.format),s=null==a.representation?"complete":String(a.representation);if("extended"!==u&&"basic"!==u)throw new RangeError("format must be 'extended' or 'basic'");if("date"!==s&&"time"!==s&&"complete"!==s)throw new RangeError("representation must be 'date', 'time', or 'complete'");var d="",c="extended"===u?"-":"",l="extended"===u?":":"";if("time"!==s){var m=o.a(n.getDate(),2),f=o.a(n.getMonth()+1,2);d="".concat(o.a(n.getFullYear(),4)).concat(c).concat(f).concat(c).concat(m)}if("date"!==s){var h=o.a(n.getHours(),2),p=o.a(n.getMinutes(),2),g=o.a(n.getSeconds(),2),v=""===d?"":" ";d="".concat(d).concat(v).concat(h).concat(l).concat(p).concat(l).concat(g)}return d}t.a=a;var i=n(1),r=n(15),o=n(38)},function(e,t,n){"use strict";function a(e){if(i.a(1,arguments),"object"!=typeof e)throw new Error("Duration must be an object");var t=e.years,n=void 0===t?0:t,a=e.months,r=void 0===a?0:a,o=e.days,u=void 0===o?0:o,s=e.hours,d=void 0===s?0:s,c=e.minutes,l=void 0===c?0:c,m=e.seconds,f=void 0===m?0:m;return"P".concat(n,"Y").concat(r,"M").concat(u,"DT").concat(d,"H").concat(l,"M").concat(f,"S")}t.a=a;var i=n(0)},function(e,t,n){"use strict";function a(e,t){if(arguments.length<1)throw new TypeError("1 arguments required, but only ".concat(arguments.length," present"));var n=i.a(e);if(!r.a(n))throw new RangeError("Invalid time value");var a=t||{},s=null==a.fractionDigits?0:u.a(a.fractionDigits);if(!(s>=0&&s<=3))throw new RangeError("fractionDigits must be between 0 and 3 inclusively");var d=o.a(n.getDate(),2),c=o.a(n.getMonth()+1,2),l=n.getFullYear(),m=o.a(n.getHours(),2),f=o.a(n.getMinutes(),2),h=o.a(n.getSeconds(),2),p="";if(s>0){var g=n.getMilliseconds(),v=Math.floor(g*Math.pow(10,s-3));p="."+o.a(v,s)}var w="",b=n.getTimezoneOffset();if(0!==b){var y=Math.abs(b),M=o.a(u.a(y/60),2),k=o.a(y%60,2);w="".concat(b<0?"+":"-").concat(M,":").concat(k)}else w="Z";return"".concat(l,"-").concat(c,"-").concat(d,"T").concat(m,":").concat(f,":").concat(h).concat(p).concat(w)}t.a=a;var i=n(1),r=n(15),o=n(38),u=n(6)},function(e,t,n){"use strict";function a(e){if(arguments.length<1)throw new TypeError("1 arguments required, but only ".concat(arguments.length," present"));var t=i.a(e);if(!r.a(t))throw new RangeError("Invalid time value");var n=u[t.getUTCDay()],a=o.a(t.getUTCDate(),2),d=s[t.getUTCMonth()],c=t.getUTCFullYear(),l=o.a(t.getUTCHours(),2),m=o.a(t.getUTCMinutes(),2),f=o.a(t.getUTCSeconds(),2);return"".concat(n,", ").concat(a," ").concat(d," ").concat(c," ").concat(l,":").concat(m,":").concat(f," GMT")}t.a=a;var i=n(1),r=n(15),o=n(38),u=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],s=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]},function(e,t,n){"use strict";function a(e,t,n){c.a(2,arguments);var a=s.a(e),l=s.a(t),m=n||{},f=m.locale||o.a;if(!f.localize)throw new RangeError("locale must contain localize property");if(!f.formatLong)throw new RangeError("locale must contain formatLong property");if(!f.formatRelative)throw new RangeError("locale must contain formatRelative property");var h=i.a(a,l);if(isNaN(h))throw new RangeError("Invalid time value");var p;p=h<-6?"other":h<-1?"lastWeek":h<0?"yesterday":h<1?"today":h<2?"tomorrow":h<7?"nextWeek":"other";var g=u.a(a,d.a(a)),v=u.a(l,d.a(l)),w=f.formatRelative(p,g,v,m);return r.a(a,w,m)}t.a=a;var i=n(26),r=n(151),o=n(28),u=n(49),s=n(1),d=n(19),c=n(0)},function(e,t,n){"use strict";function a(e){o.a(1,arguments);var t=r.a(e);return i.a(1e3*t)}t.a=a;var i=n(1),r=n(6),o=n(0)},function(e,t,n){"use strict";function a(e){u.a(1,arguments);var t=i.a(e);return o.a(t,r.a(t))+1}t.a=a;var i=n(1),r=n(90),o=n(26),u=n(0)},function(e,t,n){"use strict";function a(e){o.a(1,arguments);var t=i.a(e);return isNaN(t)?NaN:r.a(t)?366:365}t.a=a;var i=n(1),r=n(165),o=n(0)},function(e,t,n){"use strict";function a(e){r.a(1,arguments);var t=i.a(e),n=t.getFullYear();return 10*Math.floor(n/10)}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e){return r.a(1,arguments),i.a(e).getHours()}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e){o.a(1,arguments);var t=i.a(e),n=i.a(r.a(t,60)),a=n.valueOf()-t.valueOf();return Math.round(a/u)}t.a=a;var i=n(46),r=n(58),o=n(0),u=6048e5},function(e,t,n){"use strict";function a(e){return r.a(1,arguments),i.a(e).getMilliseconds()}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e){return r.a(1,arguments),i.a(e).getMinutes()}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e){return r.a(1,arguments),i.a(e).getMonth()}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e,t){r.a(2,arguments);var n=e||{},a=t||{},u=i.a(n.start).getTime(),s=i.a(n.end).getTime(),d=i.a(a.start).getTime(),c=i.a(a.end).getTime();if(!(u<=s&&d<=c))throw new RangeError("Invalid interval");if(!(u<c&&d<s))return 0;var l=d<u?u:d,m=c>s?s:c,f=m-l;return Math.ceil(f/o)}t.a=a;var i=n(1),r=n(0),o=864e5},function(e,t,n){"use strict";function a(e){return r.a(1,arguments),i.a(e).getSeconds()}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e){return r.a(1,arguments),Math.floor(i.a(e)/1e3)}t.a=a;var i=n(168),r=n(0)},function(e,t,n){"use strict";function a(e,t){s.a(1,arguments);var n=t||{},a=n.locale,d=a&&a.options&&a.options.weekStartsOn,c=null==d?0:u.a(d),l=null==n.weekStartsOn?c:u.a(n.weekStartsOn);if(!(l>=0&&l<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var m=i.a(e);if(isNaN(m))return m;var f=r.a(o.a(e)),h=0;h=f>=l?l+7-f:l-f;var p=1;if(m>h){var g=m-h;p+=Math.ceil(g/7)}return p}t.a=a;var i=n(162),r=n(163),o=n(62),u=n(6),s=n(0)},function(e,t,n){"use strict";function a(e,t){return u.a(1,arguments),i.a(r.a(e),o.a(e),t)+1}t.a=a;var i=n(142),r=n(171),o=n(62),u=n(0)},function(e,t,n){"use strict";function a(e){return r.a(1,arguments),i.a(e).getFullYear()}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e){var t=e.start,n=e.end;m.a(1,arguments);var a=f.a(t),p=f.a(n);if(!l.a(a))throw new RangeError("Start Date is invalid");if(!l.a(p))throw new RangeError("End Date is invalid");var g={years:0,months:0,days:0,hours:0,minutes:0,seconds:0},v=i.a(a,p);g.years=Math.abs(r.a(a,p));var w=h.a(a,{years:v*g.years});g.months=Math.abs(o.a(w,p));var b=h.a(w,{months:v*g.months});g.days=Math.abs(u.a(b,p));var y=h.a(b,{days:v*g.days});g.hours=Math.abs(s.a(y,p));var M=h.a(y,{hours:v*g.hours});g.minutes=Math.abs(d.a(M,p));var k=h.a(M,{minutes:v*g.minutes});return g.seconds=Math.abs(c.a(k,p)),g}t.a=a;var i=n(27),r=n(147),o=n(60),u=n(86),s=n(144),d=n(146),c=n(61),l=n(15),m=n(0),f=n(1),h=n(172)},function(e,t,n){"use strict";function a(e,t){r.a(2,arguments);var n=i.a(e),a=i.a(t);return n.getTime()>a.getTime()}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e,t){r.a(2,arguments);var n=i.a(e),a=i.a(t);return n.getTime()<a.getTime()}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e){return i.a(1,arguments),e instanceof Date||"object"==typeof e&&"[object Date]"===Object.prototype.toString.call(e)}t.a=a;var i=n(0)},function(e,t,n){"use strict";function a(e,t){r.a(2,arguments);var n=i.a(e),a=i.a(t);return n.getTime()===a.getTime()}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e,t,n){if(arguments.length<3)throw new TypeError("3 argument required, but only "+arguments.length+" present");var a=new Date(e,t,n);return a.getFullYear()===e&&a.getMonth()===t&&a.getDate()===n}t.a=a},function(e,t,n){"use strict";function a(e){return r.a(1,arguments),1===i.a(e).getDate()}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e){return r.a(1,arguments),5===i.a(e).getDay()}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e){return r.a(1,arguments),i.a(e).getTime()>Date.now()}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e){u.a(1,arguments);var t=i.a(e);return r.a(t).getTime()===o.a(t).getTime()}t.a=a;var i=n(1),r=n(91),o=n(89),u=n(0)},function(e,t,n){"use strict";function a(e,t,n){return o.a(2,arguments),r.a(i.a(e,t,new Date,n))}t.a=a;var i=n(174),r=n(15),o=n(0)},function(e,t,n){"use strict";function a(e,t,n){var a=t.match(e);if(!a)return null;var i=parseInt(a[0],10);return{value:n?n(i):i,rest:t.slice(a[0].length)}}function i(e,t){var n=t.match(e);if(!n)return null;if("Z"===n[0])return{value:0,rest:t.slice(1)};var a="+"===n[1]?1:-1,i=n[2]?parseInt(n[2],10):0,r=n[3]?parseInt(n[3],10):0,o=n[5]?parseInt(n[5],10):0;return{value:a*(i*w+r*b+o*y),rest:t.slice(n[0].length)}}function r(e,t){return a(M.anyDigitsSigned,e,t)}function o(e,t,n){switch(e){case 1:return a(M.singleDigit,t,n);case 2:return a(M.twoDigits,t,n);case 3:return a(M.threeDigits,t,n);case 4:return a(M.fourDigits,t,n);default:return a(new RegExp("^\\d{1,"+e+"}"),t,n)}}function u(e,t,n){switch(e){case 1:return a(M.singleDigitSigned,t,n);case 2:return a(M.twoDigitsSigned,t,n);case 3:return a(M.threeDigitsSigned,t,n);case 4:return a(M.fourDigitsSigned,t,n);default:return a(new RegExp("^-?\\d{1,"+e+"}"),t,n)}}function s(e){switch(e){case"morning":return 4;case"evening":return 17;case"pm":case"noon":case"afternoon":return 12;case"am":case"midnight":case"night":default:return 0}}function d(e,t){var n,a=t>0,i=a?t:1-t;if(i<=50)n=e||100;else{var r=i+50;n=e+100*Math.floor(r/100)-(e>=r%100?100:0)}return a?n:1-n}function c(e){return e%400==0||e%4==0&&e%100!=0}var l=n(92),m=n(380),f=n(381),h=n(382),p=n(383),g=n(63),v=n(50),w=36e5,b=6e4,y=1e3,M={month:/^(1[0-2]|0?\d)/,date:/^(3[0-1]|[0-2]?\d)/,dayOfYear:/^(36[0-6]|3[0-5]\d|[0-2]?\d?\d)/,week:/^(5[0-3]|[0-4]?\d)/,hour23h:/^(2[0-3]|[0-1]?\d)/,hour24h:/^(2[0-4]|[0-1]?\d)/,hour11h:/^(1[0-1]|0?\d)/,hour12h:/^(1[0-2]|0?\d)/,minute:/^[0-5]?\d/,second:/^[0-5]?\d/,singleDigit:/^\d/,twoDigits:/^\d{1,2}/,threeDigits:/^\d{1,3}/,fourDigits:/^\d{1,4}/,anyDigitsSigned:/^-?\d+/,singleDigitSigned:/^-?\d/,twoDigitsSigned:/^-?\d{1,2}/,threeDigitsSigned:/^-?\d{1,3}/,fourDigitsSigned:/^-?\d{1,4}/},k={basicOptionalMinutes:/^([+-])(\d{2})(\d{2})?|Z/,basic:/^([+-])(\d{2})(\d{2})|Z/,basicOptionalSeconds:/^([+-])(\d{2})(\d{2})((\d{2}))?|Z/,extended:/^([+-])(\d{2}):(\d{2})|Z/,extendedOptionalSeconds:/^([+-])(\d{2}):(\d{2})(:(\d{2}))?|Z/},P=[31,28,31,30,31,30,31,31,30,31,30,31],W=[31,29,31,30,31,30,31,31,30,31,30,31],x={G:{priority:140,parse:function(e,t,n,a){switch(t){case"G":case"GG":case"GGG":return n.era(e,{width:"abbreviated"})||n.era(e,{width:"narrow"});case"GGGGG":return n.era(e,{width:"narrow"});case"GGGG":default:return n.era(e,{width:"wide"})||n.era(e,{width:"abbreviated"})||n.era(e,{width:"narrow"})}},set:function(e,t,n,a){return t.era=n,e.setUTCFullYear(n,0,1),e.setUTCHours(0,0,0,0),e},incompatibleTokens:["R","u","t","T"]},y:{priority:130,parse:function(e,t,n,a){var i=function(e){return{year:e,isTwoDigitYear:"yy"===t}};switch(t){case"y":return o(4,e,i);case"yo":return n.ordinalNumber(e,{unit:"year",valueCallback:i});default:return o(t.length,e,i)}},validate:function(e,t,n){return t.isTwoDigitYear||t.year>0},set:function(e,t,n,a){var i=e.getUTCFullYear();if(n.isTwoDigitYear){var r=d(n.year,i);return e.setUTCFullYear(r,0,1),e.setUTCHours(0,0,0,0),e}var o="era"in t&&1!==t.era?1-n.year:n.year;return e.setUTCFullYear(o,0,1),e.setUTCHours(0,0,0,0),e},incompatibleTokens:["Y","R","u","w","I","i","e","c","t","T"]},Y:{priority:130,parse:function(e,t,n,a){var i=function(e){return{year:e,isTwoDigitYear:"YY"===t}};switch(t){case"Y":return o(4,e,i);case"Yo":return n.ordinalNumber(e,{unit:"year",valueCallback:i});default:return o(t.length,e,i)}},validate:function(e,t,n){return t.isTwoDigitYear||t.year>0},set:function(e,t,n,a){var i=l.a(e,a);if(n.isTwoDigitYear){var r=d(n.year,i);return e.setUTCFullYear(r,0,a.firstWeekContainsDate),e.setUTCHours(0,0,0,0),v.a(e,a)}var o="era"in t&&1!==t.era?1-n.year:n.year;return e.setUTCFullYear(o,0,a.firstWeekContainsDate),e.setUTCHours(0,0,0,0),v.a(e,a)},incompatibleTokens:["y","R","u","Q","q","M","L","I","d","D","i","t","T"]},R:{priority:130,parse:function(e,t,n,a){return"R"===t?u(4,e):u(t.length,e)},set:function(e,t,n,a){var i=new Date(0);return i.setUTCFullYear(n,0,4),i.setUTCHours(0,0,0,0),g.a(i)},incompatibleTokens:["G","y","Y","u","Q","q","M","L","w","d","D","e","c","t","T"]},u:{priority:130,parse:function(e,t,n,a){return"u"===t?u(4,e):u(t.length,e)},set:function(e,t,n,a){return e.setUTCFullYear(n,0,1),e.setUTCHours(0,0,0,0),e},incompatibleTokens:["G","y","Y","R","w","I","i","e","c","t","T"]},Q:{priority:120,parse:function(e,t,n,a){switch(t){case"Q":case"QQ":return o(t.length,e);case"Qo":return n.ordinalNumber(e,{unit:"quarter"});case"QQQ":return n.quarter(e,{width:"abbreviated",context:"formatting"})||n.quarter(e,{width:"narrow",context:"formatting"});case"QQQQQ":return n.quarter(e,{width:"narrow",context:"formatting"});case"QQQQ":default:return n.quarter(e,{width:"wide",context:"formatting"})||n.quarter(e,{width:"abbreviated",context:"formatting"})||n.quarter(e,{width:"narrow",context:"formatting"})}},validate:function(e,t,n){return t>=1&&t<=4},set:function(e,t,n,a){return e.setUTCMonth(3*(n-1),1),e.setUTCHours(0,0,0,0),e},incompatibleTokens:["Y","R","q","M","L","w","I","d","D","i","e","c","t","T"]},q:{priority:120,parse:function(e,t,n,a){switch(t){case"q":case"qq":return o(t.length,e);case"qo":return n.ordinalNumber(e,{unit:"quarter"});case"qqq":return n.quarter(e,{width:"abbreviated",context:"standalone"})||n.quarter(e,{width:"narrow",context:"standalone"});case"qqqqq":return n.quarter(e,{width:"narrow",context:"standalone"});case"qqqq":default:return n.quarter(e,{width:"wide",context:"standalone"})||n.quarter(e,{width:"abbreviated",context:"standalone"})||n.quarter(e,{width:"narrow",context:"standalone"})}},validate:function(e,t,n){return t>=1&&t<=4},set:function(e,t,n,a){return e.setUTCMonth(3*(n-1),1),e.setUTCHours(0,0,0,0),e},incompatibleTokens:["Y","R","Q","M","L","w","I","d","D","i","e","c","t","T"]},M:{priority:110,parse:function(e,t,n,i){var r=function(e){return e-1};switch(t){case"M":return a(M.month,e,r);case"MM":return o(2,e,r);case"Mo":return n.ordinalNumber(e,{unit:"month",valueCallback:r});case"MMM":return n.month(e,{width:"abbreviated",context:"formatting"})||n.month(e,{width:"narrow",context:"formatting"});case"MMMMM":return n.month(e,{width:"narrow",context:"formatting"});case"MMMM":default:return n.month(e,{width:"wide",context:"formatting"})||n.month(e,{width:"abbreviated",context:"formatting"})||n.month(e,{width:"narrow",context:"formatting"})}},validate:function(e,t,n){return t>=0&&t<=11},set:function(e,t,n,a){return e.setUTCMonth(n,1),e.setUTCHours(0,0,0,0),e},incompatibleTokens:["Y","R","q","Q","L","w","I","D","i","e","c","t","T"]},L:{priority:110,parse:function(e,t,n,i){var r=function(e){return e-1};switch(t){case"L":return a(M.month,e,r);case"LL":return o(2,e,r);case"Lo":return n.ordinalNumber(e,{unit:"month",valueCallback:r});case"LLL":return n.month(e,{width:"abbreviated",context:"standalone"})||n.month(e,{width:"narrow",context:"standalone"});case"LLLLL":return n.month(e,{width:"narrow",context:"standalone"});case"LLLL":default:return n.month(e,{width:"wide",context:"standalone"})||n.month(e,{width:"abbreviated",context:"standalone"})||n.month(e,{width:"narrow",context:"standalone"})}},validate:function(e,t,n){return t>=0&&t<=11},set:function(e,t,n,a){return e.setUTCMonth(n,1),e.setUTCHours(0,0,0,0),e},incompatibleTokens:["Y","R","q","Q","M","w","I","D","i","e","c","t","T"]},w:{priority:100,parse:function(e,t,n,i){switch(t){case"w":return a(M.week,e);case"wo":return n.ordinalNumber(e,{unit:"week"});default:return o(t.length,e)}},validate:function(e,t,n){return t>=1&&t<=53},set:function(e,t,n,a){return v.a(p.a(e,n,a),a)},incompatibleTokens:["y","R","u","q","Q","M","L","I","d","D","i","t","T"]},I:{priority:100,parse:function(e,t,n,i){switch(t){case"I":return a(M.week,e);case"Io":return n.ordinalNumber(e,{unit:"week"});default:return o(t.length,e)}},validate:function(e,t,n){return t>=1&&t<=53},set:function(e,t,n,a){return g.a(h.a(e,n,a),a)},incompatibleTokens:["y","Y","u","q","Q","M","L","w","d","D","e","c","t","T"]},d:{priority:90,subPriority:1,parse:function(e,t,n,i){switch(t){case"d":return a(M.date,e);case"do":return n.ordinalNumber(e,{unit:"date"});default:return o(t.length,e)}},validate:function(e,t,n){var a=e.getUTCFullYear(),i=c(a),r=e.getUTCMonth();return i?t>=1&&t<=W[r]:t>=1&&t<=P[r]},set:function(e,t,n,a){return e.setUTCDate(n),e.setUTCHours(0,0,0,0),e},incompatibleTokens:["Y","R","q","Q","w","I","D","i","e","c","t","T"]},D:{priority:90,subPriority:1,parse:function(e,t,n,i){switch(t){case"D":case"DD":return a(M.dayOfYear,e);case"Do":return n.ordinalNumber(e,{unit:"date"});default:return o(t.length,e)}},validate:function(e,t,n){return c(e.getUTCFullYear())?t>=1&&t<=366:t>=1&&t<=365},set:function(e,t,n,a){return e.setUTCMonth(0,n),e.setUTCHours(0,0,0,0),e},incompatibleTokens:["Y","R","q","Q","M","L","w","I","d","E","i","e","c","t","T"]},E:{priority:90,parse:function(e,t,n,a){switch(t){case"E":case"EE":case"EEE":return n.day(e,{width:"abbreviated",context:"formatting"})||n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"});case"EEEEE":return n.day(e,{width:"narrow",context:"formatting"});case"EEEEEE":return n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"});case"EEEE":default:return n.day(e,{width:"wide",context:"formatting"})||n.day(e,{width:"abbreviated",context:"formatting"})||n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"})}},validate:function(e,t,n){return t>=0&&t<=6},set:function(e,t,n,a){return e=m.a(e,n,a),e.setUTCHours(0,0,0,0),e},incompatibleTokens:["D","i","e","c","t","T"]},e:{priority:90,parse:function(e,t,n,a){var i=function(e){var t=7*Math.floor((e-1)/7);return(e+a.weekStartsOn+6)%7+t};switch(t){case"e":case"ee":return o(t.length,e,i);case"eo":return n.ordinalNumber(e,{unit:"day",valueCallback:i});case"eee":return n.day(e,{width:"abbreviated",context:"formatting"})||n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"});case"eeeee":return n.day(e,{width:"narrow",context:"formatting"});case"eeeeee":return n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"});case"eeee":default:return n.day(e,{width:"wide",context:"formatting"})||n.day(e,{width:"abbreviated",context:"formatting"})||n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"})}},validate:function(e,t,n){return t>=0&&t<=6},set:function(e,t,n,a){return e=m.a(e,n,a),e.setUTCHours(0,0,0,0),e},incompatibleTokens:["y","R","u","q","Q","M","L","I","d","D","E","i","c","t","T"]},c:{priority:90,parse:function(e,t,n,a){var i=function(e){var t=7*Math.floor((e-1)/7);return(e+a.weekStartsOn+6)%7+t};switch(t){case"c":case"cc":return o(t.length,e,i);case"co":return n.ordinalNumber(e,{unit:"day",valueCallback:i});case"ccc":return n.day(e,{width:"abbreviated",context:"standalone"})||n.day(e,{width:"short",context:"standalone"})||n.day(e,{width:"narrow",context:"standalone"});case"ccccc":return n.day(e,{width:"narrow",context:"standalone"});case"cccccc":return n.day(e,{width:"short",context:"standalone"})||n.day(e,{width:"narrow",context:"standalone"});case"cccc":default:return n.day(e,{width:"wide",context:"standalone"})||n.day(e,{width:"abbreviated",context:"standalone"})||n.day(e,{width:"short",context:"standalone"})||n.day(e,{width:"narrow",context:"standalone"})}},validate:function(e,t,n){return t>=0&&t<=6},set:function(e,t,n,a){return e=m.a(e,n,a),e.setUTCHours(0,0,0,0),e},incompatibleTokens:["y","R","u","q","Q","M","L","I","d","D","E","i","e","t","T"]},i:{priority:90,parse:function(e,t,n,a){var i=function(e){return 0===e?7:e};switch(t){case"i":case"ii":return o(t.length,e);case"io":return n.ordinalNumber(e,{unit:"day"});case"iii":return n.day(e,{width:"abbreviated",context:"formatting",valueCallback:i})||n.day(e,{width:"short",context:"formatting",valueCallback:i})||n.day(e,{width:"narrow",context:"formatting",valueCallback:i});case"iiiii":return n.day(e,{width:"narrow",context:"formatting",valueCallback:i});case"iiiiii":return n.day(e,{width:"short",context:"formatting",valueCallback:i})||n.day(e,{width:"narrow",context:"formatting",valueCallback:i});case"iiii":default:return n.day(e,{width:"wide",context:"formatting",valueCallback:i})||n.day(e,{width:"abbreviated",context:"formatting",valueCallback:i})||n.day(e,{width:"short",context:"formatting",valueCallback:i})||n.day(e,{width:"narrow",context:"formatting",valueCallback:i})}},validate:function(e,t,n){return t>=1&&t<=7},set:function(e,t,n,a){return e=f.a(e,n,a),e.setUTCHours(0,0,0,0),e},incompatibleTokens:["y","Y","u","q","Q","M","L","w","d","D","E","e","c","t","T"]},a:{priority:80,parse:function(e,t,n,a){switch(t){case"a":case"aa":case"aaa":return n.dayPeriod(e,{width:"abbreviated",context:"formatting"})||n.dayPeriod(e,{width:"narrow",context:"formatting"});case"aaaaa":return n.dayPeriod(e,{width:"narrow",context:"formatting"});case"aaaa":default:return n.dayPeriod(e,{width:"wide",context:"formatting"})||n.dayPeriod(e,{width:"abbreviated",context:"formatting"})||n.dayPeriod(e,{width:"narrow",context:"formatting"})}},set:function(e,t,n,a){return e.setUTCHours(s(n),0,0,0),e},incompatibleTokens:["b","B","H","K","k","t","T"]},b:{priority:80,parse:function(e,t,n,a){switch(t){case"b":case"bb":case"bbb":return n.dayPeriod(e,{width:"abbreviated",context:"formatting"})||n.dayPeriod(e,{width:"narrow",context:"formatting"});case"bbbbb":return n.dayPeriod(e,{width:"narrow",context:"formatting"});case"bbbb":default:return n.dayPeriod(e,{width:"wide",context:"formatting"})||n.dayPeriod(e,{width:"abbreviated",context:"formatting"})||n.dayPeriod(e,{width:"narrow",context:"formatting"})}},set:function(e,t,n,a){return e.setUTCHours(s(n),0,0,0),e},incompatibleTokens:["a","B","H","K","k","t","T"]},B:{priority:80,parse:function(e,t,n,a){switch(t){case"B":case"BB":case"BBB":return n.dayPeriod(e,{width:"abbreviated",context:"formatting"})||n.dayPeriod(e,{width:"narrow",context:"formatting"});case"BBBBB":return n.dayPeriod(e,{width:"narrow",context:"formatting"});case"BBBB":default:return n.dayPeriod(e,{width:"wide",context:"formatting"})||n.dayPeriod(e,{width:"abbreviated",context:"formatting"})||n.dayPeriod(e,{width:"narrow",context:"formatting"})}},set:function(e,t,n,a){return e.setUTCHours(s(n),0,0,0),e},incompatibleTokens:["a","b","t","T"]},h:{priority:70,parse:function(e,t,n,i){switch(t){case"h":return a(M.hour12h,e);case"ho":return n.ordinalNumber(e,{unit:"hour"});default:return o(t.length,e)}},validate:function(e,t,n){return t>=1&&t<=12},set:function(e,t,n,a){var i=e.getUTCHours()>=12;return i&&n<12?e.setUTCHours(n+12,0,0,0):i||12!==n?e.setUTCHours(n,0,0,0):e.setUTCHours(0,0,0,0),e},incompatibleTokens:["H","K","k","t","T"]},H:{priority:70,parse:function(e,t,n,i){switch(t){case"H":return a(M.hour23h,e);case"Ho":return n.ordinalNumber(e,{unit:"hour"});default:return o(t.length,e)}},validate:function(e,t,n){return t>=0&&t<=23},set:function(e,t,n,a){return e.setUTCHours(n,0,0,0),e},incompatibleTokens:["a","b","h","K","k","t","T"]},K:{priority:70,parse:function(e,t,n,i){switch(t){case"K":return a(M.hour11h,e);case"Ko":return n.ordinalNumber(e,{unit:"hour"});default:return o(t.length,e)}},validate:function(e,t,n){return t>=0&&t<=11},set:function(e,t,n,a){return e.getUTCHours()>=12&&n<12?e.setUTCHours(n+12,0,0,0):e.setUTCHours(n,0,0,0),e},incompatibleTokens:["a","b","h","H","k","t","T"]},k:{priority:70,parse:function(e,t,n,i){switch(t){case"k":return a(M.hour24h,e);case"ko":return n.ordinalNumber(e,{unit:"hour"});default:return o(t.length,e)}},validate:function(e,t,n){return t>=1&&t<=24},set:function(e,t,n,a){var i=n<=24?n%24:n;return e.setUTCHours(i,0,0,0),e},incompatibleTokens:["a","b","h","H","K","t","T"]},m:{priority:60,parse:function(e,t,n,i){switch(t){case"m":return a(M.minute,e);case"mo":return n.ordinalNumber(e,{unit:"minute"});default:return o(t.length,e)}},validate:function(e,t,n){return t>=0&&t<=59},set:function(e,t,n,a){return e.setUTCMinutes(n,0,0),e},incompatibleTokens:["t","T"]},s:{priority:50,parse:function(e,t,n,i){switch(t){case"s":return a(M.second,e);case"so":return n.ordinalNumber(e,{unit:"second"});default:return o(t.length,e)}},validate:function(e,t,n){return t>=0&&t<=59},set:function(e,t,n,a){return e.setUTCSeconds(n,0),e},incompatibleTokens:["t","T"]},S:{priority:30,parse:function(e,t,n,a){var i=function(e){return Math.floor(e*Math.pow(10,3-t.length))};return o(t.length,e,i)},set:function(e,t,n,a){return e.setUTCMilliseconds(n),e},incompatibleTokens:["t","T"]},X:{priority:10,parse:function(e,t,n,a){switch(t){case"X":return i(k.basicOptionalMinutes,e);case"XX":return i(k.basic,e);case"XXXX":return i(k.basicOptionalSeconds,e);case"XXXXX":return i(k.extendedOptionalSeconds,e);case"XXX":default:return i(k.extended,e)}},set:function(e,t,n,a){return t.timestampIsSet?e:new Date(e.getTime()-n)},incompatibleTokens:["t","T","x"]},x:{priority:10,parse:function(e,t,n,a){switch(t){case"x":return i(k.basicOptionalMinutes,e);case"xx":return i(k.basic,e);case"xxxx":return i(k.basicOptionalSeconds,e);case"xxxxx":return i(k.extendedOptionalSeconds,e);case"xxx":default:return i(k.extended,e)}},set:function(e,t,n,a){return t.timestampIsSet?e:new Date(e.getTime()-n)},incompatibleTokens:["t","T","X"]},t:{priority:40,parse:function(e,t,n,a){return r(e)},set:function(e,t,n,a){return[new Date(1e3*n),{timestampIsSet:!0}]},incompatibleTokens:"*"},T:{priority:20,parse:function(e,t,n,a){return r(e)},set:function(e,t,n,a){return[new Date(n),{timestampIsSet:!0}]},incompatibleTokens:"*"}};t.a=x},function(e,t,n){"use strict";function a(e,t,n){o.a(2,arguments);var a=n||{},u=a.locale,s=u&&u.options&&u.options.weekStartsOn,d=null==s?0:i.a(s),c=null==a.weekStartsOn?d:i.a(a.weekStartsOn);if(!(c>=0&&c<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var l=r.a(e),m=i.a(t),f=l.getUTCDay(),h=m%7,p=(h+7)%7,g=(p<c?7:0)+m-f;return l.setUTCDate(l.getUTCDate()+g),l}t.a=a;var i=n(6),r=n(1),o=n(0)},function(e,t,n){"use strict";function a(e,t){o.a(2,arguments);var n=i.a(t);n%7==0&&(n-=7);var a=r.a(e),u=a.getUTCDay(),s=n%7,d=(s+7)%7,c=(d<1?7:0)+n-u;return a.setUTCDate(a.getUTCDate()+c),a}t.a=a;var i=n(6),r=n(1),o=n(0)},function(e,t,n){"use strict";function a(e,t){u.a(2,arguments);var n=r.a(e),a=i.a(t),s=o.a(n)-a;return n.setUTCDate(n.getUTCDate()-7*s),n}t.a=a;var i=n(6),r=n(1),o=n(153),u=n(0)},function(e,t,n){"use strict";function a(e,t,n){u.a(2,arguments);var a=r.a(e),s=i.a(t),d=o.a(a,n)-s;return a.setUTCDate(a.getUTCDate()-7*d),a}t.a=a;var i=n(6),r=n(1),o=n(155),u=n(0)},function(e,t,n){"use strict";function a(e){return r.a(1,arguments),1===i.a(e).getDay()}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e){return r.a(1,arguments),i.a(e).getTime()<Date.now()}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e,t){r.a(2,arguments);var n=i.a(e),a=i.a(t);return n.getTime()===a.getTime()}t.a=a;var i=n(46),r=n(0)},function(e,t,n){"use strict";function a(e){return r.a(1,arguments),i.a(Date.now(),e)}t.a=a;var i=n(175),r=n(0)},function(e,t,n){"use strict";function a(e){return r.a(1,arguments),i.a(e,Date.now())}t.a=a;var i=n(177),r=n(0)},function(e,t,n){"use strict";function a(e){return r.a(1,arguments),i.a(Date.now(),e)}t.a=a;var i=n(178),r=n(0)},function(e,t,n){"use strict";function a(e){return r.a(1,arguments),i.a(Date.now(),e)}t.a=a;var i=n(180),r=n(0)},function(e,t,n){"use strict";function a(e){return r.a(1,arguments),i.a(Date.now(),e)}t.a=a;var i=n(181),r=n(0)},function(e,t,n){"use strict";function a(e){return r.a(1,arguments),i.a(Date.now(),e)}t.a=a;var i=n(182),r=n(0)},function(e,t,n){"use strict";function a(e,t){return r.a(1,arguments),i.a(e,Date.now(),t)}t.a=a;var i=n(95),r=n(0)},function(e,t,n){"use strict";function a(e){return r.a(1,arguments),i.a(e,Date.now())}t.a=a;var i=n(184),r=n(0)},function(e,t,n){"use strict";function a(e){return r.a(1,arguments),4===i.a(e).getDay()}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e){return r.a(1,arguments),i.a(e,Date.now())}t.a=a;var i=n(47),r=n(0)},function(e,t,n){"use strict";function a(e){return o.a(1,arguments),r.a(e,i.a(Date.now(),1))}t.a=a;var i=n(21),r=n(47),o=n(0)},function(e,t,n){"use strict";function a(e){return r.a(1,arguments),2===i.a(e).getDay()}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e){return r.a(1,arguments),3===i.a(e).getDay()}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e,t){r.a(2,arguments);var n=t||{},a=i.a(e).getTime(),o=i.a(n.start).getTime(),u=i.a(n.end).getTime();if(!(o<=u))throw new RangeError("Invalid interval");return a>=o&&a<=u}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e){return o.a(1,arguments),i.a(e,r.a(Date.now(),1))}t.a=a;var i=n(47),r=n(94),o=n(0)},function(e,t,n){"use strict";function a(e){r.a(1,arguments);var t=i.a(e),n=t.getFullYear(),a=9+10*Math.floor(n/10);return t.setFullYear(a+1,0,0),t.setHours(0,0,0,0),t}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e){return r.a(1,arguments),i.a(e,{weekStartsOn:1})}t.a=a;var i=n(185),r=n(0)},function(e,t,n){"use strict";function a(e){o.a(1,arguments);var t=i.a(e),n=new Date(0);n.setFullYear(t+1,0,4),n.setHours(0,0,0,0);var a=r.a(n);return a.setDate(a.getDate()-1),a}t.a=a;var i=n(34),r=n(25),o=n(0)},function(e,t,n){"use strict";function a(e){r.a(1,arguments);var t=i.a(e),n=t.getMonth(),a=n-n%3+3;return t.setMonth(a,0),t.setHours(0,0,0,0),t}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e){r.a(1,arguments);var t=i.a(e),n=t.getFullYear();return t.setFullYear(n+1,0,0),t.setHours(0,0,0,0),t}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e,t){c.a(2,arguments);var n=String(t),a=r.a(e);if(!s.a(a))throw new RangeError("Invalid time value");var m=u.a(a),f=d.a(a,m);return n.match(l).map(function(e){if("''"===e)return"'";var t=e[0];if("'"===t)return i(e);var n=o.a[t];if(n)return n(f,e,null,{});if(t.match(h))throw new RangeError("Format string contains an unescaped latin alphabet character `"+t+"`");return e}).join("")}function i(e){return e.match(m)[1].replace(f,"'")}t.a=a;var r=n(1),o=n(152),u=n(19),s=n(15),d=n(49),c=n(0),l=/(\w)\1*|''|'(''|[^'])+('|$)|./g,m=/^'([^]*?)'?$/,f=/''/g,h=/[a-zA-Z]/},function(e,t,n){"use strict";function a(e){r.a(1,arguments);var t;if(e&&"function"==typeof e.forEach)t=e;else{if("object"!=typeof e||null===e)return new Date(NaN);t=Array.prototype.slice.call(e)}var n;return t.forEach(function(e){var t=i.a(e);(void 0===n||n<t||isNaN(t))&&(n=t)}),n||new Date(NaN)}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e){r.a(1,arguments);var t;if(e&&"function"==typeof e.forEach)t=e;else{if("object"!=typeof e||null===e)return new Date(NaN);t=Array.prototype.slice.call(e)}var n;return t.forEach(function(e){var t=i.a(e);(void 0===n||n>t||isNaN(t))&&(n=t)}),n||new Date(NaN)}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e,t){b.a(1,arguments);var n=t||{},a=null==n.additionalDigits?k:w.a(n.additionalDigits);if(2!==a&&1!==a&&0!==a)throw new RangeError("additionalDigits must be 0, 1 or 2");if("string"!=typeof e&&"[object String]"!==Object.prototype.toString.call(e))return new Date(NaN);var u,d=i(e);if(d.date){var l=r(d.date,a);u=o(l.restDateString,l.year)}if(isNaN(u)||!u)return new Date(NaN);var m,f=u.getTime(),h=0;if(d.time&&(h=s(d.time),isNaN(h)||null===h))return new Date(NaN);if(!d.timezone){var p=new Date(f+h),g=new Date(p.getUTCFullYear(),p.getUTCMonth(),p.getUTCDate(),p.getUTCHours(),p.getUTCMinutes(),p.getUTCSeconds(),p.getUTCMilliseconds());return g.setFullYear(p.getUTCFullYear()),g}return m=c(d.timezone),isNaN(m)?new Date(NaN):new Date(f+h+m)}function i(e){var t,n={},a=e.split(P.dateTimeDelimiter);if(a.length>2)return n;if(/:/.test(a[0])?(n.date=null,t=a[0]):(n.date=a[0],t=a[1],P.timeZoneDelimiter.test(n.date)&&(n.date=e.split(P.timeZoneDelimiter)[0],t=e.substr(n.date.length,e.length))),t){var i=P.timezone.exec(t);i?(n.time=t.replace(i[1],""),n.timezone=i[1]):n.time=t}return n}function r(e,t){var n=new RegExp("^(?:(\\d{4}|[+-]\\d{"+(4+t)+"})|(\\d{2}|[+-]\\d{"+(2+t)+"})$)"),a=e.match(n);if(!a)return{year:null};var i=a[1]&&parseInt(a[1]),r=a[2]&&parseInt(a[2]);return{year:null==r?i:100*r,restDateString:e.slice((a[1]||a[2]).length)}}function o(e,t){if(null===t)return null;var n=e.match(W);if(!n)return null;var a=!!n[4],i=u(n[1]),r=u(n[2])-1,o=u(n[3]),s=u(n[4]),d=u(n[5])-1;if(a)return p(t,s,d)?l(t,s,d):new Date(NaN);var c=new Date(0);return f(t,r,o)&&h(t,i)?(c.setUTCFullYear(t,r,Math.max(i,o)),c):new Date(NaN)}function u(e){return e?parseInt(e):1}function s(e){var t=e.match(x);if(!t)return null;var n=d(t[1]),a=d(t[2]),i=d(t[3]);return g(n,a,i)?n*y+a*M+1e3*i:NaN}function d(e){return e&&parseFloat(e.replace(",","."))||0}function c(e){if("Z"===e)return 0;var t=e.match(j);if(!t)return 0;var n="+"===t[1]?-1:1,a=parseInt(t[2]),i=t[3]&&parseInt(t[3])||0;return v(a,i)?n*(a*y+i*M):NaN}function l(e,t,n){var a=new Date(0);a.setUTCFullYear(e,0,4);var i=a.getUTCDay()||7,r=7*(t-1)+n+1-i;return a.setUTCDate(a.getUTCDate()+r),a}function m(e){return e%400==0||e%4==0&&e%100}function f(e,t,n){return t>=0&&t<=11&&n>=1&&n<=(T[t]||(m(e)?29:28))}function h(e,t){return t>=1&&t<=(m(e)?366:365)}function p(e,t,n){return t>=1&&t<=53&&n>=0&&n<=6}function g(e,t,n){return 24===e?0===t&&0===n:n>=0&&n<60&&t>=0&&t<60&&e>=0&&e<25}function v(e,t){return t>=0&&t<=59}t.a=a;var w=n(6),b=n(0),y=36e5,M=6e4,k=2,P={dateTimeDelimiter:/[T ]/,timeZoneDelimiter:/[Z ]/i,timezone:/([Z+-].*)$/},W=/^-?(?:(\d{3})|(\d{2})(?:-?(\d{2}))?|W(\d{2})(?:-?(\d{1}))?|)$/,x=/^(\d{2}(?:[.,]\d*)?)(?::?(\d{2}(?:[.,]\d*)?))?(?::?(\d{2}(?:[.,]\d*)?))?$/,j=/^([+-])(\d{2})(?::?(\d{2}))?$/,T=[31,null,31,30,31,30,31,31,30,31,30,31]},function(e,t,n){"use strict";function a(e){if(r.a(1,arguments),"string"==typeof e){var t=e.match(/(\d{4})-(\d{2})-(\d{2})[T ](\d{2}):(\d{2}):(\d{2})(?:\.(\d{0,7}))?(?:Z|\+00:?00)?/);return t?new Date(Date.UTC(+t[1],t[2]-1,+t[3],+t[4],+t[5],+t[6],+((t[7]||"0")+"00").substring(0,3))):new Date(NaN)}return i.a(e)}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only none provided present");var n=t&&"nearestTo"in t?r.a(t.nearestTo):1;if(n<1||n>30)throw new RangeError("`options.nearestTo` must be between 1 and 30");var a=i.a(e),o=a.getSeconds(),u=a.getMinutes()+o/60,s=Math.floor(u/n)*n,d=u%n,c=Math.round(d/n)*n;return new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours(),s+c)}t.a=a;var i=n(1),r=n(6)},function(e,t,n){"use strict";function a(e,t){if(u.a(2,arguments),"object"!=typeof t||null===t)throw new RangeError("values parameter must be an object");var n=i.a(e);return isNaN(n)?new Date(NaN):(null!=t.year&&n.setFullYear(t.year),null!=t.month&&(n=r.a(n,t.month)),null!=t.date&&n.setDate(o.a(t.date)),null!=t.hours&&n.setHours(o.a(t.hours)),null!=t.minutes&&n.setMinutes(o.a(t.minutes)),null!=t.seconds&&n.setSeconds(o.a(t.seconds)),null!=t.milliseconds&&n.setMilliseconds(o.a(t.milliseconds)),n)}t.a=a;var i=n(1),r=n(96),o=n(6),u=n(0)},function(e,t,n){"use strict";function a(e,t){o.a(2,arguments);var n=r.a(e),a=i.a(t);return n.setDate(a),n}t.a=a;var i=n(6),r=n(1),o=n(0)},function(e,t,n){"use strict";function a(e,t,n){u.a(2,arguments);var a=n||{},s=a.locale,d=s&&s.options&&s.options.weekStartsOn,c=null==d?0:o.a(d),l=null==a.weekStartsOn?c:o.a(a.weekStartsOn);if(!(l>=0&&l<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var m=r.a(e,a),f=o.a(t),h=m.getDay(),p=f%7,g=(p+7)%7,v=7-l,w=f<0||f>6?f-(h+v)%7:(g+v)%7-(h+v)%7;return i.a(m,w,a)}t.a=a;var i=n(21),r=n(1),o=n(6),u=n(0)},function(e,t,n){"use strict";function a(e,t){o.a(2,arguments);var n=r.a(e),a=i.a(t);return n.setMonth(0),n.setDate(a),n}t.a=a;var i=n(6),r=n(1),o=n(0)},function(e,t,n){"use strict";function a(e,t){o.a(2,arguments);var n=r.a(e),a=i.a(t);return n.setHours(a),n}t.a=a;var i=n(6),r=n(1),o=n(0)},function(e,t,n){"use strict";function a(e,t){s.a(2,arguments);var n=r.a(e),a=i.a(t),d=u.a(n),c=a-d;return o.a(n,c)}t.a=a;var i=n(6),r=n(1),o=n(21),u=n(166),s=n(0)},function(e,t,n){"use strict";function a(e,t){u.a(2,arguments);var n=r.a(e),a=i.a(t),s=o.a(n)-a;return n.setDate(n.getDate()-7*s),n}t.a=a;var i=n(6),r=n(1),o=n(167),u=n(0)},function(e,t,n){"use strict";function a(e,t){o.a(2,arguments);var n=r.a(e),a=i.a(t);return n.setMilliseconds(a),n}t.a=a;var i=n(6),r=n(1),o=n(0)},function(e,t,n){"use strict";function a(e,t){o.a(2,arguments);var n=r.a(e),a=i.a(t);return n.setMinutes(a),n}t.a=a;var i=n(6),r=n(1),o=n(0)},function(e,t,n){"use strict";function a(e,t){u.a(2,arguments);var n=r.a(e),a=i.a(t),s=Math.floor(n.getMonth()/3)+1,d=a-s;return o.a(n,n.getMonth()+3*d)}t.a=a;var i=n(6),r=n(1),o=n(96),u=n(0)},function(e,t,n){"use strict";function a(e,t){o.a(2,arguments);var n=r.a(e),a=i.a(t);return n.setSeconds(a),n}t.a=a;var i=n(6),r=n(1),o=n(0)},function(e,t,n){"use strict";function a(e,t,n){u.a(2,arguments);var a=r.a(e),s=o.a(t),d=i.a(a,n)-s;return a.setDate(a.getDate()-7*d),a}t.a=a;var i=n(169),r=n(1),o=n(6),u=n(0)},function(e,t,n){"use strict";function a(e,t,n){s.a(2,arguments);var a=n||{},d=a.locale,c=d&&d.options&&d.options.firstWeekContainsDate,l=null==c?1:u.a(c),m=null==a.firstWeekContainsDate?l:u.a(a.firstWeekContainsDate),f=o.a(e),h=u.a(t),p=i.a(f,r.a(f,n)),g=new Date(0);return g.setFullYear(h,0,m),g.setHours(0,0,0,0),f=r.a(g,n),f.setDate(f.getDate()+p),f}t.a=a;var i=n(26),r=n(93),o=n(1),u=n(6),s=n(0)},function(e,t,n){"use strict";function a(e,t){o.a(2,arguments);var n=r.a(e),a=i.a(t);return isNaN(n)?new Date(NaN):(n.setFullYear(a),n)}t.a=a;var i=n(6),r=n(1),o=n(0)},function(e,t,n){"use strict";function a(e){r.a(1,arguments);var t=i.a(e),n=t.getFullYear(),a=10*Math.floor(n/10);return t.setFullYear(a,0,1),t.setHours(0,0,0,0),t}t.a=a;var i=n(1),r=n(0)},function(e,t,n){"use strict";function a(){return i.a(Date.now())}t.a=a;var i=n(57)},function(e,t,n){"use strict";function a(){var e=new Date,t=e.getFullYear(),n=e.getMonth(),a=e.getDate(),i=new Date(0);return i.setFullYear(t,n,a+1),i.setHours(0,0,0,0),i}t.a=a},function(e,t,n){"use strict";function a(){var e=new Date,t=e.getFullYear(),n=e.getMonth(),a=e.getDate(),i=new Date(0);return i.setFullYear(t,n,a-1),i.setHours(0,0,0,0),i}t.a=a},function(e,t,n){"use strict";function a(e,t){o.a(2,arguments);var n=i.a(t);return r.a(e,-n)}t.a=a;var i=n(6),r=n(132),o=n(0)},function(e,t,n){"use strict";function a(e,t){o.a(2,arguments);var n=i.a(t);return r.a(e,-n)}t.a=a;var i=n(6),r=n(84),o=n(0)},function(e,t,n){"use strict";function a(e,t){o.a(2,arguments);var n=i.a(t);return r.a(e,-n)}t.a=a;var i=n(6),r=n(136),o=n(0)},function(e,t,n){"use strict";function a(e,t){o.a(2,arguments);var n=i.a(t);return r.a(e,-n)}t.a=a;var i=n(6),r=n(85),o=n(0)},function(e,t,n){"use strict";function a(e,t){o.a(2,arguments);var n=i.a(t);return r.a(e,-n)}t.a=a;var i=n(6),r=n(137),o=n(0)},function(e,t,n){"use strict";function a(e,t){o.a(2,arguments);var n=i.a(t);return r.a(e,-n)}t.a=a;var i=n(6),r=n(58),o=n(0)},function(e,t,n){"use strict";function a(e,t){o.a(2,arguments);var n=i.a(t);return r.a(e,-n)}t.a=a;var i=n(6),r=n(138),o=n(0)},function(e,t,n){"use strict";n.d(t,"a",function(){return a}),n.d(t,"b",function(){return i});var a=24*Math.pow(10,8)*60*60*1e3,i=-a},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var a=n(440);n.d(t,"af",function(){return a.a});var i=n(446);n.d(t,"arDZ",function(){return i.a});var r=n(452);n.d(t,"arMA",function(){return r.a});var o=n(458);n.d(t,"arSA",function(){return o.a});var u=n(464);n.d(t,"az",function(){return u.a});var s=n(470);n.d(t,"be",function(){return s.a});var d=n(476);n.d(t,"bg",function(){return d.a});var c=n(482);n.d(t,"bn",function(){return c.a});var l=n(487);n.d(t,"ca",function(){return l.a});var m=n(493);n.d(t,"cs",function(){return m.a});var f=n(499);n.d(t,"cy",function(){return f.a});var h=n(505);n.d(t,"da",function(){return h.a});var p=n(511);n.d(t,"de",function(){return p.a});var g=n(517);n.d(t,"el",function(){return g.a});var v=n(523);n.d(t,"enAU",function(){return v.a});var w=n(525);n.d(t,"enCA",function(){return w.a});var b=n(528);n.d(t,"enGB",function(){return b.a});var y=n(530);n.d(t,"enIN",function(){return y.a});var M=n(532);n.d(t,"enNZ",function(){return M.a});var k=n(28);n.d(t,"enUS",function(){return k.a});var P=n(534);n.d(t,"eo",function(){return P.a});var W=n(540);n.d(t,"es",function(){return W.a});var x=n(546);n.d(t,"et",function(){return x.a});var j=n(552);n.d(t,"eu",function(){return j.a});var T=n(558);n.d(t,"faIR",function(){return T.a});var S=n(564);n.d(t,"fi",function(){return S.a});var C=n(570);n.d(t,"fr",function(){return C.a});var z=n(572);n.d(t,"frCA",function(){return z.a});var N=n(574);n.d(t,"frCH",function(){return N.a});var D=n(580);n.d(t,"gd",function(){return D.a});var E=n(586);n.d(t,"gl",function(){return E.a});var H=n(592);n.d(t,"gu",function(){return H.a});var A=n(598);n.d(t,"he",function(){return A.a});var _=n(604);n.d(t,"hi",function(){return _.a});var O=n(609);n.d(t,"hr",function(){return O.a});var X=n(615);n.d(t,"hu",function(){return X.a});var I=n(621);n.d(t,"hy",function(){return I.a});var Y=n(627);n.d(t,"id",function(){return Y.a});var F=n(633);n.d(t,"is",function(){return F.a});var L=n(639);n.d(t,"it",function(){return L.a});var q=n(645);n.d(t,"ja",function(){return q.a});var G=n(651);n.d(t,"ka",function(){return G.a});var R=n(657);n.d(t,"kk",function(){return R.a});var U=n(663);n.d(t,"kn",function(){return U.a});var K=n(669);n.d(t,"ko",function(){return K.a});var J=n(675);n.d(t,"lb",function(){return J.a});var B=n(681);n.d(t,"lt",function(){return B.a});var $=n(687);n.d(t,"lv",function(){return $.a});var V=n(693);n.d(t,"mk",function(){return V.a});var Q=n(699);n.d(t,"ms",function(){return Q.a});var Z=n(705);n.d(t,"mt",function(){return Z.a});var ee=n(711);n.d(t,"nb",function(){return ee.a});var te=n(717);n.d(t,"nl",function(){return te.a});var ne=n(723);n.d(t,"nlBE",function(){return ne.a});var ae=n(729);n.d(t,"nn",function(){return ae.a});var ie=n(735);n.d(t,"pl",function(){return ie.a});var re=n(741);n.d(t,"pt",function(){return re.a});var oe=n(747);n.d(t,"ptBR",function(){return oe.a});var ue=n(753);n.d(t,"ro",function(){return ue.a});var se=n(759);n.d(t,"ru",function(){return se.a});var de=n(765);n.d(t,"sk",function(){return de.a});var ce=n(771);n.d(t,"sl",function(){return ce.a});var le=n(777);n.d(t,"sr",function(){return le.a});var me=n(783);n.d(t,"srLatn",function(){return me.a});var fe=n(789);n.d(t,"sv",function(){return fe.a});var he=n(795);n.d(t,"ta",function(){return he.a});var pe=n(801);n.d(t,"te",function(){return pe.a});var ge=n(807);n.d(t,"th",function(){return ge.a});var ve=n(813);n.d(t,"tr",function(){return ve.a});var we=n(819);n.d(t,"ug",function(){return we.a});var be=n(825);n.d(t,"uk",function(){return be.a});var ye=n(831);n.d(t,"uz",function(){return ye.a});var Me=n(837);n.d(t,"vi",function(){return Me.a});var ke=n(843);n.d(t,"zhCN",function(){return ke.a});var Pe=n(849);n.d(t,"zhTW",function(){return Pe.a})},function(e,t,n){"use strict";var a=n(441),i=n(442),r=n(443),o=n(444),u=n(445),s={code:"af",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:0,firstWeekContainsDate:1}};t.a=s},function(e,t,n){"use strict";function a(e,t,n){n=n||{};var a;return a="string"==typeof i[e]?i[e]:1===t?i[e].one:i[e].other.replace("{{count}}",t),n.addSuffix?n.comparison>0?"oor "+a:a+" gelede":a}t.a=a;var i={lessThanXSeconds:{one:"minder as 'n sekonde",other:"minder as {{count}} sekondes"},xSeconds:{one:"1 sekonde",other:"{{count}} sekondes"},halfAMinute:"'n halwe minuut",lessThanXMinutes:{one:"minder as 'n minuut",other:"minder as {{count}} minute"},xMinutes:{one:"'n minuut",other:"{{count}} minute"},aboutXHours:{one:"ongeveer 1 uur",other:"ongeveer {{count}} ure"},xHours:{one:"1 uur",other:"{{count}} ure"},xDays:{one:"1 dag",other:"{{count}} dae"},aboutXWeeks:{one:"ongeveer 1 week",other:"ongeveer {{count}} weke"},xWeeks:{one:"1 week",other:"{{count}} weke"},aboutXMonths:{one:"ongeveer 1 maand",other:"ongeveer {{count}} maande"},xMonths:{one:"1 maand",other:"{{count}} maande"},aboutXYears:{one:"ongeveer 1 jaar",other:"ongeveer {{count}} jaar"},xYears:{one:"1 jaar",other:"{{count}} jaar"},overXYears:{one:"meer as 1 jaar",other:"meer as {{count}} jaar"},almostXYears:{one:"byna 1 jaar",other:"byna {{count}} jaar"}}},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE, d MMMM yyyy",long:"d MMMM yyyy",medium:"d MMM yyyy",short:"yyyy/MM/dd"},r={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},o={full:"{{date}} 'om' {{time}}",long:"{{date}} 'om' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e){return i[e]}t.a=a;var i={lastWeek:"'verlede' eeee 'om' p",yesterday:"'gister om' p",today:"'vandag om' p",tomorrow:"'môre om' p",nextWeek:"eeee 'om' p",other:"P"}},function(e,t,n){"use strict";function a(e){var t=Number(e),n=t%100;if(n<20)switch(n){case 1:case 8:return t+"ste";default:return t+"de"}return t+"ste"}var i=n(3),r={narrow:["vC","nC"],abbreviated:["vC","nC"],wide:["voor Christus","na Christus"]},o={narrow:["1","2","3","4"],abbreviated:["K1","K2","K3","K4"],wide:["1ste kwartaal","2de kwartaal","3de kwartaal","4de kwartaal"]},u={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mrt","Apr","Mei","Jun","Jul","Aug","Sep","Okt","Nov","Des"],wide:["Januarie","Februarie","Maart","April","Mei","Junie","Julie","Augustus","September","Oktober","November","Desember"]},s={narrow:["S","M","D","W","D","V","S"],short:["So","Ma","Di","Wo","Do","Vr","Sa"],abbreviated:["Son","Maa","Din","Woe","Don","Vry","Sat"],wide:["Sondag","Maandag","Dinsdag","Woensdag","Donderdag","Vrydag","Saterdag"]},d={narrow:{am:"vm",pm:"nm",midnight:"middernag",noon:"middaguur",morning:"oggend",afternoon:"middag",evening:"laat middag",night:"aand"},abbreviated:{am:"vm",pm:"nm",midnight:"middernag",noon:"middaguur",morning:"oggend",afternoon:"middag",evening:"laat middag",night:"aand"},wide:{am:"vm",pm:"nm",midnight:"middernag",noon:"middaguur",morning:"oggend",afternoon:"middag",evening:"laat middag",night:"aand"}},c={narrow:{am:"vm",pm:"nm",midnight:"middernag",noon:"uur die middag",morning:"uur die oggend",afternoon:"uur die middag",evening:"uur die aand",night:"uur die aand"},abbreviated:{am:"vm",pm:"nm",midnight:"middernag",noon:"uur die middag",morning:"uur die oggend",afternoon:"uur die middag",evening:"uur die aand",night:"uur die aand"},wide:{am:"vm",pm:"nm",midnight:"middernag",noon:"uur die middag",morning:"uur die oggend",afternoon:"uur die middag",evening:"uur die aand",night:"uur die aand"}},l={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:u,defaultWidth:"wide"}),day:i.a({values:s,defaultWidth:"wide"}),dayPeriod:i.a({values:d,defaultWidth:"wide",formattingValues:c,defaultFormattingWidth:"wide"})};t.a=l},function(e,t,n){"use strict";var a=n(4),i=n(5),r=/^(\d+)(ste|de)?/i,o=/\d+/i,u={narrow:/^([vn]\.? ?C\.?)/,abbreviated:/^([vn]\. ?C\.?)/,wide:/^((voor|na) Christus)/},s={any:[/^v/,/^n/]},d={narrow:/^[1234]/i,abbreviated:/^K[1234]/i,wide:/^[1234](st|d)e kwartaal/i},c={any:[/1/i,/2/i,/3/i,/4/i]},l={narrow:/^[jfmasond]/i,abbreviated:/^(Jan|Feb|Mrt|Apr|Mei|Jun|Jul|Aug|Sep|Okt|Nov|Dec)\.?/i,wide:/^(Januarie|Februarie|Maart|April|Mei|Junie|Julie|Augustus|September|Oktober|November|Desember)/i},m={narrow:[/^J/i,/^F/i,/^M/i,/^A/i,/^M/i,/^J/i,/^J/i,/^A/i,/^S/i,/^O/i,/^N/i,/^D/i],any:[/^Jan/i,/^Feb/i,/^Mrt/i,/^Apr/i,/^Mei/i,/^Jun/i,/^Jul/i,/^Aug/i,/^Sep/i,/^Okt/i,/^Nov/i,/^Dec/i]},f={narrow:/^[smdwv]/i,short:/^(So|Ma|Di|Wo|Do|Vr|Sa)/i,abbreviated:/^(Son|Maa|Din|Woe|Don|Vry|Sat)/i,wide:/^(Sondag|Maandag|Dinsdag|Woensdag|Donderdag|Vrydag|Saterdag)/i},h={narrow:[/^S/i,/^M/i,/^D/i,/^W/i,/^D/i,/^V/i,/^S/i],any:[/^So/i,/^Ma/i,/^Di/i,/^Wo/i,/^Do/i,/^Vr/i,/^Sa/i]},p={any:/^(vm|nm|middernag|(?:uur )?die (oggend|middag|aand))/i},g={any:{am:/^vm/i,pm:/^nm/i,midnight:/^middernag/i,noon:/^middaguur/i,morning:/oggend/i,afternoon:/middag/i,evening:/laat middag/i,night:/aand/i}},v={ordinalNumber:a.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:i.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:i.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:i.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:i.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:i.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(447),i=n(448),r=n(449),o=n(450),u=n(451),s={code:"ar-DZ",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:0,firstWeekContainsDate:1}};t.a=s},function(e,t,n){"use strict";function a(e,t,n){n=n||{};var a;return a="string"==typeof i[e]?i[e]:1===t?i[e].one:2===t?i[e].two:t<=10?i[e].threeToTen.replace("{{count}}",t):i[e].other.replace("{{count}}",t),n.addSuffix?n.comparison>0?"في خلال "+a:"منذ "+a:a}t.a=a;var i={lessThanXSeconds:{one:"أقل من ثانية واحدة",two:"أقل من ثانتين",threeToTen:"أقل من {{count}} ثواني",other:"أقل من {{count}} ثانية"},xSeconds:{one:"ثانية واحدة",two:"ثانتين",threeToTen:"{{count}} ثواني",other:"{{count}} ثانية"},halfAMinute:"نصف دقيقة",lessThanXMinutes:{one:"أقل من دقيقة",two:"أقل من دقيقتين",threeToTen:"أقل من {{count}} دقائق",other:"أقل من {{count}} دقيقة"},xMinutes:{one:"دقيقة واحدة",two:"دقيقتين",threeToTen:"{{count}} دقائق",other:"{{count}} دقيقة"},aboutXHours:{one:"ساعة واحدة تقريباً",two:"ساعتين تقريباً",threeToTen:"{{count}} ساعات تقريباً",other:"{{count}} ساعة تقريباً"},xHours:{one:"ساعة واحدة",two:"ساعتين",threeToTen:"{{count}} ساعات",other:"{{count}} ساعة"},xDays:{one:"يوم واحد",two:"يومين",threeToTen:"{{count}} أيام",other:"{{count}} يوم"},aboutXWeeks:{one:"أسبوع واحد تقريباً",two:"أسبوعين تقريباً",threeToTen:"{{count}} أسابيع تقريباً",other:"{{count}} أسبوع تقريباً"},xWeeks:{one:"أسبوع واحد",two:"أسبوعين",threeToTen:"{{count}} أسابيع",other:"{{count}} أسبوع"},aboutXMonths:{one:"شهر واحد تقريباً",two:"شهرين تقريباً",threeToTen:"{{count}} أشهر تقريباً",other:"{{count}} شهر تقريباً"},xMonths:{one:"شهر واحد",two:"شهرين",threeToTen:"{{count}} أشهر",other:"{{count}} شهر"},aboutXYears:{one:"عام واحد تقريباً",two:"عامين تقريباً",threeToTen:"{{count}} أعوام تقريباً",other:"{{count}} عام تقريباً"},xYears:{one:"عام واحد",two:"عامين",threeToTen:"{{count}} أعوام",other:"{{count}} عام"},overXYears:{one:"أكثر من عام",two:"أكثر من عامين",threeToTen:"أكثر من {{count}} أعوام",other:"أكثر من {{count}} عام"},almostXYears:{one:"عام واحد تقريباً",two:"عامين تقريباً",threeToTen:"{{count}} أعوام تقريباً",other:"{{count}} عام تقريباً"}}},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},r={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},o={full:"{{date}} 'عند' {{time}}",long:"{{date}} 'عند' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e,t,n,a){return i[e]}t.a=a;var i={lastWeek:"'أخر' eeee 'عند' p",yesterday:"'أمس عند' p",today:"'اليوم عند' p",tomorrow:"'غداً عند' p",nextWeek:"eeee 'عند' p",other:"P"}},function(e,t,n){"use strict";function a(e){return String(e)}var i=n(3),r={narrow:["ق","ب"],abbreviated:["ق.م.","ب.م."],wide:["قبل الميلاد","بعد الميلاد"]},o={narrow:["1","2","3","4"],abbreviated:["ر1","ر2","ر3","ر4"],wide:["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"]},u={narrow:["ج","ف","م","أ","م","ج","ج","أ","س","أ","ن","د"],abbreviated:["جانـ","فيفـ","مارس","أفريل","مايـ","جوانـ","جويـ","أوت","سبتـ","أكتـ","نوفـ","ديسـ"],wide:["جانفي","فيفري","مارس","أفريل","ماي","جوان","جويلية","أوت","سبتمبر","أكتوبر","نوفمبر","ديسمبر"]},s={narrow:["ح","ن","ث","ر","خ","ج","س"],short:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],abbreviated:["أحد","اثنـ","ثلا","أربـ","خميـ","جمعة","سبت"],wide:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"]},d={narrow:{am:"ص",pm:"م",midnight:"ن",noon:"ظ",morning:"صباحاً",afternoon:"بعد الظهر",evening:"مساءاً",night:"ليلاً"},abbreviated:{am:"ص",pm:"م",midnight:"نصف الليل",noon:"ظهر",morning:"صباحاً",afternoon:"بعد الظهر",evening:"مساءاً",night:"ليلاً"},wide:{am:"ص",pm:"م",midnight:"نصف الليل",noon:"ظهر",morning:"صباحاً",afternoon:"بعد الظهر",evening:"مساءاً",night:"ليلاً"}},c={narrow:{am:"ص",pm:"م",midnight:"ن",noon:"ظ",morning:"في الصباح",afternoon:"بعد الظـهر",evening:"في المساء",night:"في الليل"},abbreviated:{am:"ص",pm:"م",midnight:"نصف الليل",noon:"ظهر",morning:"في الصباح",evening:"في المساء",night:"في الليل"},wide:{am:"ص",pm:"م",midnight:"نصف الليل",noon:"ظهر",afternoon:"بعد الظـهر",evening:"في المساء",night:"في الليل"}},l={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:u,defaultWidth:"wide"}),day:i.a({values:s,defaultWidth:"wide"}),dayPeriod:i.a({values:d,defaultWidth:"wide",formattingValues:c,defaultFormattingWidth:"wide"})};t.a=l},function(e,t,n){"use strict";var a=n(4),i=n(5),r=/^(\d+)(th|st|nd|rd)?/i,o=/\d+/i,u={narrow:/^(ق|ب)/i,abbreviated:/^(ق\.?\s?م\.?|ق\.?\s?م\.?\s?|a\.?\s?d\.?|c\.?\s?)/i,wide:/^(قبل الميلاد|قبل الميلاد|بعد الميلاد|بعد الميلاد)/i},s={any:[/^قبل/i,/^بعد/i]},d={narrow:/^[1234]/i,abbreviated:/^ر[1234]/i,wide:/^الربع [1234]/i},c={any:[/1/i,/2/i,/3/i,/4/i]},l={narrow:/^[جفمأسند]/i,abbreviated:/^(جان|فيف|مار|أفر|ماي|جوا|جوي|أوت|سبت|أكت|نوف|ديس)/i,wide:/^(جانفي|فيفري|مارس|أفريل|ماي|جوان|جويلية|أوت|سبتمبر|أكتوبر|نوفمبر|ديسمبر)/i},m={narrow:[/^ج/i,/^ف/i,/^م/i,/^أ/i,/^م/i,/^ج/i,/^ج/i,/^أ/i,/^س/i,/^أ/i,/^ن/i,/^د/i],any:[/^جان/i,/^فيف/i,/^مار/i,/^أفر/i,/^ماي/i,/^جوا/i,/^جوي/i,/^أوت/i,/^سبت/i,/^أكت/i,/^نوف/i,/^ديس/i]},f={narrow:/^[حنثرخجس]/i,short:/^(أحد|اثنين|ثلاثاء|أربعاء|خميس|جمعة|سبت)/i,abbreviated:/^(أحد|اثن|ثلا|أرب|خمي|جمعة|سبت)/i,wide:/^(الأحد|الاثنين|الثلاثاء|الأربعاء|الخميس|الجمعة|السبت)/i},h={narrow:[/^ح/i,/^ن/i,/^ث/i,/^ر/i,/^خ/i,/^ج/i,/^س/i],wide:[/^الأحد/i,/^الاثنين/i,/^الثلاثاء/i,/^الأربعاء/i,/^الخميس/i,/^الجمعة/i,/^السبت/i],any:[/^أح/i,/^اث/i,/^ث/i,/^أر/i,/^خ/i,/^ج/i,/^س/i]},p={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},g={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},v={ordinalNumber:a.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:i.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:i.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:i.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:i.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:i.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(453),i=n(454),r=n(455),o=n(456),u=n(457),s={code:"ar-MA",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:1}};t.a=s},function(e,t,n){"use strict";function a(e,t,n){n=n||{};var a;return a="string"==typeof i[e]?i[e]:1===t?i[e].one:2===t?i[e].two:t<=10?i[e].threeToTen.replace("{{count}}",t):i[e].other.replace("{{count}}",t),n.addSuffix?n.comparison>0?"في خلال "+a:"منذ "+a:a}t.a=a;var i={lessThanXSeconds:{one:"أقل من ثانية واحدة",two:"أقل من ثانتين",threeToTen:"أقل من {{count}} ثواني",other:"أقل من {{count}} ثانية"},xSeconds:{one:"ثانية واحدة",two:"ثانتين",threeToTen:"{{count}} ثواني",other:"{{count}} ثانية"},halfAMinute:"نصف دقيقة",lessThanXMinutes:{one:"أقل من دقيقة",two:"أقل من دقيقتين",threeToTen:"أقل من {{count}} دقائق",other:"أقل من {{count}} دقيقة"},xMinutes:{one:"دقيقة واحدة",two:"دقيقتين",threeToTen:"{{count}} دقائق",other:"{{count}} دقيقة"},aboutXHours:{one:"ساعة واحدة تقريباً",two:"ساعتين تقريباً",threeToTen:"{{count}} ساعات تقريباً",other:"{{count}} ساعة تقريباً"},xHours:{one:"ساعة واحدة",two:"ساعتين",threeToTen:"{{count}} ساعات",other:"{{count}} ساعة"},xDays:{one:"يوم واحد",two:"يومين",threeToTen:"{{count}} أيام",other:"{{count}} يوم"},aboutXWeeks:{one:"أسبوع واحد تقريباً",two:"أسبوعين تقريباً",threeToTen:"{{count}} أسابيع تقريباً",other:"{{count}} أسبوع تقريباً"},xWeeks:{one:"أسبوع واحد",two:"أسبوعين",threeToTen:"{{count}} أسابيع",other:"{{count}} أسبوع"},aboutXMonths:{one:"شهر واحد تقريباً",two:"شهرين تقريباً",threeToTen:"{{count}} أشهر تقريباً",other:"{{count}} شهر تقريباً"},xMonths:{one:"شهر واحد",two:"شهرين",threeToTen:"{{count}} أشهر",other:"{{count}} شهر"},aboutXYears:{one:"عام واحد تقريباً",two:"عامين تقريباً",threeToTen:"{{count}} أعوام تقريباً",other:"{{count}} عام تقريباً"},xYears:{one:"عام واحد",two:"عامين",threeToTen:"{{count}} أعوام",other:"{{count}} عام"},overXYears:{one:"أكثر من عام",two:"أكثر من عامين",threeToTen:"أكثر من {{count}} أعوام",other:"أكثر من {{count}} عام"},almostXYears:{one:"عام واحد تقريباً",two:"عامين تقريباً",threeToTen:"{{count}} أعوام تقريباً",other:"{{count}} عام تقريباً"}}},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},r={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},o={full:"{{date}} 'عند' {{time}}",long:"{{date}} 'عند' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e,t,n,a){return i[e]}t.a=a;var i={lastWeek:"'أخر' eeee 'عند' p",yesterday:"'أمس عند' p",today:"'اليوم عند' p",tomorrow:"'غداً عند' p",nextWeek:"eeee 'عند' p",other:"P"}},function(e,t,n){"use strict";function a(e){return String(e)}var i=n(3),r={narrow:["ق","ب"],abbreviated:["ق.م.","ب.م."],wide:["قبل الميلاد","بعد الميلاد"]},o={narrow:["1","2","3","4"],abbreviated:["ر1","ر2","ر3","ر4"],wide:["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"]},u={narrow:["ي","ف","م","أ","م","ي","ي","غ","ش","أ","ن","د"],abbreviated:["ينا","فبر","مارس","أبريل","ماي","يونـ","يولـ","غشت","شتنـ","أكتـ","نونـ","دجنـ"],wide:["يناير","فبراير","مارس","أبريل","ماي","يونيو","يوليوز","غشت","شتنبر","أكتوبر","نونبر","دجنبر"]},s={narrow:["ح","ن","ث","ر","خ","ج","س"],short:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],abbreviated:["أحد","اثنـ","ثلا","أربـ","خميـ","جمعة","سبت"],wide:["الأحد","الإثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"]},d={narrow:{am:"ص",pm:"م",midnight:"ن",noon:"ظ",morning:"صباحاً",afternoon:"بعد الظهر",evening:"مساءاً",night:"ليلاً"},abbreviated:{am:"ص",pm:"م",midnight:"نصف الليل",noon:"ظهر",morning:"صباحاً",afternoon:"بعد الظهر",evening:"مساءاً",night:"ليلاً"},wide:{am:"ص",pm:"م",midnight:"نصف الليل",noon:"ظهر",morning:"صباحاً",afternoon:"بعد الظهر",evening:"مساءاً",night:"ليلاً"}},c={narrow:{am:"ص",pm:"م",midnight:"ن",noon:"ظ",morning:"في الصباح",afternoon:"بعد الظـهر",evening:"في المساء",night:"في الليل"},abbreviated:{am:"ص",pm:"م",midnight:"نصف الليل",noon:"ظهر",morning:"في الصباح",evening:"في المساء",night:"في الليل"},wide:{am:"ص",pm:"م",midnight:"نصف الليل",noon:"ظهر",afternoon:"بعد الظـهر",evening:"في المساء",night:"في الليل"}},l={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:u,defaultWidth:"wide"}),day:i.a({values:s,defaultWidth:"wide"}),dayPeriod:i.a({values:d,defaultWidth:"wide",formattingValues:c,defaultFormattingWidth:"wide"})};t.a=l},function(e,t,n){"use strict";var a=n(4),i=n(5),r=/^(\d+)(th|st|nd|rd)?/i,o=/\d+/i,u={narrow:/^(ق|ب)/i,abbreviated:/^(ق\.?\s?م\.?|ق\.?\s?م\.?\s?|a\.?\s?d\.?|c\.?\s?)/i,wide:/^(قبل الميلاد|قبل الميلاد|بعد الميلاد|بعد الميلاد)/i},s={any:[/^قبل/i,/^بعد/i]},d={narrow:/^[1234]/i,abbreviated:/^ر[1234]/i,wide:/^الربع [1234]/i},c={any:[/1/i,/2/i,/3/i,/4/i]},l={narrow:/^[يفمأمسند]/i,abbreviated:/^(ين|ف|مار|أب|ماي|يون|يول|غش|شت|أك|ن|د)/i,wide:/^(ين|ف|مار|أب|ماي|يون|يول|غش|شت|أك|ن|د)/i},m={narrow:[/^ي/i,/^ف/i,/^م/i,/^أ/i,/^م/i,/^ي/i,/^ي/i,/^غ/i,/^ش/i,/^أ/i,/^ن/i,/^د/i],any:[/^ين/i,/^فب/i,/^مار/i,/^أب/i,/^ماي/i,/^يون/i,/^يول/i,/^غشت/i,/^ش/i,/^أك/i,/^ن/i,/^د/i]},f={narrow:/^[حنثرخجس]/i,short:/^(أحد|إثنين|ثلاثاء|أربعاء|خميس|جمعة|سبت)/i,abbreviated:/^(أحد|إثن|ثلا|أرب|خمي|جمعة|سبت)/i,wide:/^(الأحد|الإثنين|الثلاثاء|الأربعاء|الخميس|الجمعة|السبت)/i},h={narrow:[/^ح/i,/^ن/i,/^ث/i,/^ر/i,/^خ/i,/^ج/i,/^س/i],wide:[/^الأحد/i,/^الإثنين/i,/^الثلاثاء/i,/^الأربعاء/i,/^الخميس/i,/^الجمعة/i,/^السبت/i],any:[/^أح/i,/^إث/i,/^ث/i,/^أر/i,/^خ/i,/^ج/i,/^س/i]},p={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},g={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},v={ordinalNumber:a.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:i.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:i.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:i.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:i.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:i.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(459),i=n(460),r=n(461),o=n(462),u=n(463),s={code:"ar-SA",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:0,firstWeekContainsDate:1}};t.a=s},function(e,t,n){"use strict";function a(e,t,n){n=n||{};var a;return a="string"==typeof i[e]?i[e]:1===t?i[e].one:2===t?i[e].two:t<=10?i[e].threeToTen.replace("{{count}}",t):i[e].other.replace("{{count}}",t),n.addSuffix?n.comparison>0?"في خلال "+a:"منذ "+a:a}t.a=a;var i={lessThanXSeconds:{one:"أقل من ثانية واحدة",two:"أقل من ثانتين",threeToTen:"أقل من {{count}} ثواني",other:"أقل من {{count}} ثانية"},xSeconds:{one:"ثانية واحدة",two:"ثانتين",threeToTen:"{{count}} ثواني",other:"{{count}} ثانية"},halfAMinute:"نصف دقيقة",lessThanXMinutes:{one:"أقل من دقيقة",two:"أقل من دقيقتين",threeToTen:"أقل من {{count}} دقائق",other:"أقل من {{count}} دقيقة"},xMinutes:{one:"دقيقة واحدة",two:"دقيقتين",threeToTen:"{{count}} دقائق",other:"{{count}} دقيقة"},aboutXHours:{one:"ساعة واحدة تقريباً",two:"ساعتين تقريباً",threeToTen:"{{count}} ساعات تقريباً",other:"{{count}} ساعة تقريباً"},xHours:{one:"ساعة واحدة",two:"ساعتين",threeToTen:"{{count}} ساعات",other:"{{count}} ساعة"},xDays:{one:"يوم واحد",two:"يومين",threeToTen:"{{count}} أيام",other:"{{count}} يوم"},aboutXWeeks:{one:"أسبوع واحد تقريباً",two:"أسبوعين تقريباً",threeToTen:"{{count}} أسابيع تقريباً",other:"{{count}} أسبوع تقريباً"},xWeeks:{one:"أسبوع واحد",two:"أسبوعين",threeToTen:"{{count}} أسابيع",other:"{{count}} أسبوع"},aboutXMonths:{one:"شهر واحد تقريباً",two:"شهرين تقريباً",threeToTen:"{{count}} أشهر تقريباً",other:"{{count}} شهر تقريباً"},xMonths:{one:"شهر واحد",two:"شهرين",threeToTen:"{{count}} أشهر",other:"{{count}} شهر"},aboutXYears:{one:"عام واحد تقريباً",two:"عامين تقريباً",threeToTen:"{{count}} أعوام تقريباً",other:"{{count}} عام تقريباً"},xYears:{one:"عام واحد",two:"عامين",threeToTen:"{{count}} أعوام",other:"{{count}} عام"},overXYears:{one:"أكثر من عام",two:"أكثر من عامين",threeToTen:"أكثر من {{count}} أعوام",other:"أكثر من {{count}} عام"},almostXYears:{one:"عام واحد تقريباً",two:"عامين تقريباً",threeToTen:"{{count}} أعوام تقريباً",other:"{{count}} عام تقريباً"}}},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},r={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},o={full:"{{date}} 'عند' {{time}}",long:"{{date}} 'عند' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e,t,n,a){return i[e]}t.a=a;var i={lastWeek:"'أخر' eeee 'عند' p",yesterday:"'أمس عند' p",today:"'اليوم عند' p",tomorrow:"'غداً عند' p",nextWeek:"eeee 'عند' p",other:"P"}},function(e,t,n){"use strict";function a(e){return String(e)}var i=n(3),r={narrow:["ق","ب"],abbreviated:["ق.م.","ب.م."],wide:["قبل الميلاد","بعد الميلاد"]},o={narrow:["1","2","3","4"],abbreviated:["ر1","ر2","ر3","ر4"],wide:["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"]},u={narrow:["ي","ف","م","أ","م","ي","ي","أ","س","أ","ن","د"],abbreviated:["ينا","فبر","مارس","أبريل","مايو","يونـ","يولـ","أغسـ","سبتـ","أكتـ","نوفـ","ديسـ"],wide:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"]},s={narrow:["ح","ن","ث","ر","خ","ج","س"],short:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],abbreviated:["أحد","اثنـ","ثلا","أربـ","خميـ","جمعة","سبت"],wide:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"]},d={narrow:{am:"ص",pm:"م",midnight:"ن",noon:"ظ",morning:"صباحاً",afternoon:"بعد الظهر",evening:"مساءاً",night:"ليلاً"},abbreviated:{am:"ص",pm:"م",midnight:"نصف الليل",noon:"ظهر",morning:"صباحاً",afternoon:"بعد الظهر",evening:"مساءاً",night:"ليلاً"},wide:{am:"ص",pm:"م",midnight:"نصف الليل",noon:"ظهر",morning:"صباحاً",afternoon:"بعد الظهر",evening:"مساءاً",night:"ليلاً"}},c={narrow:{am:"ص",pm:"م",midnight:"ن",noon:"ظ",morning:"في الصباح",afternoon:"بعد الظـهر",evening:"في المساء",night:"في الليل"},abbreviated:{am:"ص",pm:"م",midnight:"نصف الليل",noon:"ظهر",morning:"في الصباح",evening:"في المساء",night:"في الليل"},wide:{am:"ص",pm:"م",midnight:"نصف الليل",noon:"ظهر",afternoon:"بعد الظـهر",evening:"في المساء",night:"في الليل"}},l={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:u,defaultWidth:"wide"}),day:i.a({values:s,defaultWidth:"wide"}),dayPeriod:i.a({values:d,defaultWidth:"wide",formattingValues:c,defaultFormattingWidth:"wide"})};t.a=l},function(e,t,n){"use strict";var a=n(4),i=n(5),r=/^(\d+)(th|st|nd|rd)?/i,o=/\d+/i,u={narrow:/^(ق|ب)/i,abbreviated:/^(ق\.?\s?م\.?|ق\.?\s?م\.?\s?|a\.?\s?d\.?|c\.?\s?)/i,wide:/^(قبل الميلاد|قبل الميلاد|بعد الميلاد|بعد الميلاد)/i},s={any:[/^قبل/i,/^بعد/i]},d={narrow:/^[1234]/i,abbreviated:/^ر[1234]/i,wide:/^الربع [1234]/i},c={any:[/1/i,/2/i,/3/i,/4/i]},l={narrow:/^[يفمأمسند]/i,abbreviated:/^(ين|ف|مار|أب|ماي|يون|يول|أغ|س|أك|ن|د)/i,wide:/^(ين|ف|مار|أب|ماي|يون|يول|أغ|س|أك|ن|د)/i},m={narrow:[/^ي/i,/^ف/i,/^م/i,/^أ/i,/^م/i,/^ي/i,/^ي/i,/^أ/i,/^س/i,/^أ/i,/^ن/i,/^د/i],any:[/^ين/i,/^ف/i,/^مار/i,/^أب/i,/^ماي/i,/^يون/i,/^يول/i,/^أغ/i,/^س/i,/^أك/i,/^ن/i,/^د/i]},f={narrow:/^[حنثرخجس]/i,short:/^(أحد|اثنين|ثلاثاء|أربعاء|خميس|جمعة|سبت)/i,abbreviated:/^(أحد|اثن|ثلا|أرب|خمي|جمعة|سبت)/i,wide:/^(الأحد|الاثنين|الثلاثاء|الأربعاء|الخميس|الجمعة|السبت)/i},h={narrow:[/^ح/i,/^ن/i,/^ث/i,/^ر/i,/^خ/i,/^ج/i,/^س/i],wide:[/^الأحد/i,/^الاثنين/i,/^الثلاثاء/i,/^الأربعاء/i,/^الخميس/i,/^الجمعة/i,/^السبت/i],any:[/^أح/i,/^اث/i,/^ث/i,/^أر/i,/^خ/i,/^ج/i,/^س/i]},p={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},g={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},v={ordinalNumber:a.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:i.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:i.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:i.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:i.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:i.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(465),i=n(466),r=n(467),o=n(468),u=n(469),s={code:"az",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:1}};t.a=s},function(e,t,n){"use strict";function a(e,t,n){n=n||{};var a;return a="string"==typeof i[e]?i[e]:1===t?i[e].one:i[e].other.replace("{{count}}",t),n.addSuffix?n.comparison>0?a+" əvvəl":a+" sonra":a}t.a=a;var i={lessThanXSeconds:{one:"bir saniyədən az",other:"{{count}} bir saniyədən az"},xSeconds:{one:"1 saniyə",other:"{{count}} saniyə"},halfAMinute:"yarım dəqiqə",lessThanXMinutes:{one:"bir dəqiqədən az",other:"{{count}} bir dəqiqədən az"},xMinutes:{one:"bir dəqiqə",other:"{{count}} dəqiqə"},aboutXHours:{one:"təxminən 1 saat",other:"təxminən {{count}} saat"},xHours:{one:"1 saat",other:"{{count}} saat"},xDays:{one:"1 gün",other:"{{count}} gün"},aboutXWeeks:{one:"təxminən 1 həftə",other:"təxminən {{count}} həftə"},xWeeks:{one:"1 həftə",other:"{{count}} həftə"},aboutXMonths:{one:"təxminən 1 ay",other:"təxminən {{count}} ay"},xMonths:{one:"1 ay",other:"{{count}} ay"},aboutXYears:{one:"təxminən 1 il",other:"təxminən {{count}} il"},xYears:{one:"1 il",other:"{{count}} il"},overXYears:{one:"1 ildən çox",other:"{{count}} ildən çox"},almostXYears:{one:"demək olar ki 1 il",other:"demək olar ki {{count}} il"}}},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE, do MMMM y 'il'",long:"do MMMM y 'il'",medium:"d MMM y 'il'",short:"dd.MM.yyyy"},r={full:"H:mm:ss zzzz",long:"H:mm:ss z",medium:"H:mm:ss",short:"H:mm"},o={full:"{{date}} {{time}} - 'də'",long:"{{date}} {{time}} - 'də'",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e,t,n,a){return i[e]}t.a=a;var i={lastWeek:"'sonuncu' eeee p -'də'",yesterday:"'dünən' p -'də'",today:"'bugün' p -'də'",tomorrow:"'sabah' p -'də'",nextWeek:"eeee p -'də'",other:"P"}},function(e,t,n){"use strict";function a(e){if(0===e)return e+"-ıncı";var t=e%10,n=e%100-t,a=e>=100?100:null;return m[t]||m[n]||m[a]}function i(e,t){var n=Number(e);return n+a(n)}var r=n(3),o={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Hz. İsa'dan öncə","Anno Domini"]},u={narrow:["1","2","3","4"],abbreviated:["K1","K2","K3","K4"],wide:["1ci kvartal","2ci kvartal","3cü kvartal","4cü kvartal"]},s={narrow:["Y","F","M","A","M","I","I","A","S","O","N","D"],abbreviated:["Yan","Fev","Mar","Apr","May","İyun","İyul","Avq","Sen","Okt","Noy","Dek"],wide:["Yanvar","Fevral","Mart","Aprel","May","İyun","İyul","Avqust","Sentyabr","Oktyabr","Noyabr","Dekabr"]},d={narrow:["B.","B.e","Ç.a","Ç.","C.a","C.","Ş."],short:["B.","B.e","Ç.a","Ç.","C.a","C.","Ş."],abbreviated:["Baz","Baz.e","Çər.a","Çər","Cüm.a","Cüm","Şə"],wide:["Bazar","Bazar ertəsi","Çərşənbə axşamı","Çərşənbə","Cümə axşamı","Cümə","Şənbə"]},c={narrow:{am:"am",pm:"pm",midnight:"gecəyarı",noon:"gün",morning:"səhər",afternoon:"gündüz",evening:"axşam",night:"gecə"},abbreviated:{am:"AM",pm:"PM",midnight:"gecəyarı",noon:"gün",morning:"səhər",afternoon:"gündüz",evening:"axşam",night:"gecə"},wide:{am:"a.m.",pm:"p.m.",midnight:"gecəyarı",noon:"gün",morning:"səhər",afternoon:"gündüz",evening:"axşam",night:"gecə"}},l={narrow:{am:"a",pm:"p",midnight:"gecəyarı",noon:"gün",morning:"səhər",afternoon:"gündüz",evening:"axşam",night:"gecə"},abbreviated:{am:"AM",pm:"PM",midnight:"gecəyarı",noon:"gün",morning:"səhər",afternoon:"gündüz",evening:"axşam",night:"gecə"},wide:{am:"a.m.",pm:"p.m.",midnight:"gecəyarı",noon:"gün",morning:"səhər",afternoon:"gündüz",evening:"axşam",night:"gecə"}},m={1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20:"-nci",50:"-nci",3:"-üncü",4:"-üncü",100:"-üncü",6:"-ncı",9:"-uncu",10:"-uncu",30:"-uncu",60:"-ıncı",90:"-ıncı"},f={ordinalNumber:i,era:r.a({values:o,defaultWidth:"wide"}),quarter:r.a({values:u,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:r.a({values:s,defaultWidth:"wide"}),day:r.a({values:d,defaultWidth:"wide"}),dayPeriod:r.a({values:c,defaultWidth:"wide",formattingValues:l,defaultFormattingWidth:"wide"})};t.a=f},function(e,t,n){"use strict";var a=n(4),i=n(5),r=/^(\d+)(-?(ci|inci|nci|uncu|üncü|ncı))?/i,o=/\d+/i,u={narrow:/^(b|a)$/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)$/i,wide:/^(Hz. İsa'dan öncə|ümumi eradan əvvəl|anno domini|ümumi dövr)$/i},s={any:[/^b$/i,/^(a|c)$/i]},d={narrow:/^[1234]$/i,abbreviated:/^K[1234]$/i,wide:/^[1234](ci)? kvartal$/i},c={any:[/1/i,/2/i,/3/i,/4/i]},l={narrow:/^[(?-i)yfmaisond]$/i,abbreviated:/^(Yan|Fev|Mar|Apr|May|İyun|İyul|Avq|Sen|Okt|Noy|Dek)$/i,wide:/^(Yanvar|Fevral|Mart|Aprel|May|İyun|İyul|Avgust|Sentyabr|Oktyabr|Noyabr|Dekabr)$/i},m={narrow:[/^[(?-i)y]$/i,/^[(?-i)f]$/i,/^[(?-i)m]$/i,/^[(?-i)a]$/i,/^[(?-i)m]$/i,/^[(?-i)i]$/i,/^[(?-i)i]$/i,/^[(?-i)a]$/i,/^[(?-i)s]$/i,/^[(?-i)o]$/i,/^[(?-i)n]$/i,/^[(?-i)d]$/i],abbreviated:[/^Yan$/i,/^Fev$/i,/^Mar$/i,/^Apr$/i,/^May$/i,/^İyun$/i,/^İyul$/i,/^Avg$/i,/^Sen$/i,/^Okt$/i,/^Noy$/i,/^Dek$/i],wide:[/^Yanvar$/i,/^Fevral$/i,/^Mart$/i,/^Aprel$/i,/^May$/i,/^İyun$/i,/^İyul$/i,/^Avgust$/i,/^Sentyabr$/i,/^Oktyabr$/i,/^Noyabr$/i,/^Dekabr$/i]},f={narrow:/^(B\.|B\.e|Ç\.a|Ç\.|C\.a|C\.|Ş\.)$/i,short:/^(B\.|B\.e|Ç\.a|Ç\.|C\.a|C\.|Ş\.)$/i,abbreviated:/^(Baz\.e|Çər|Çər\.a|Cüm|Cüm\.a|Şə)$/i,wide:/^(Bazar|Bazar ertəsi|Çərşənbə axşamı|Çərşənbə|Cümə axşamı|Cümə|Şənbə)$/i},h={narrow:[/^B\.$/i,/^B\.e$/i,/^Ç\.a$/i,/^Ç\.$/i,/^C\.a$/i,/^C\.$/i,/^Ş\.$/i],abbreviated:[/^Baz\.e$/i,/^Çər$/i,/^Çər\.a$/i,/^Cüm$/i,/^Cüm\.a$/i,/^Şə$/i],wide:[/^Bazar$/i,/^Bazar ertəsi$/i,/^Çərşənbə axşamı$/i,/^Çərşənbə$/i,/^Cümə axşamı$/i,/^Cümə$/i,/^Şənbə$/i],any:[/^B\.$/i,/^B\.e$/i,/^Ç\.a$/i,/^Ç\.$/i,/^C\.a$/i,/^C\.$/i,/^Ş\.$/i]},p={narrow:/^(a|p|gecəyarı|gün|səhər|gündüz|axşam|gecə)$/i,any:/^(am|pm|a\.m\.|p\.m\.|AM|PM|gecəyarı|gün|səhər|gündüz|axşam|gecə)$/i},g={any:{am:/^a$/i,pm:/^p$/i,midnight:/^gecəyarı$/i,noon:/^gün$/i,morning:/səhər$/i,afternoon:/gündüz$/i,evening:/axşam$/i,night:/gecə$/i}},v={ordinalNumber:a.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:i.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:i.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:i.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:i.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:i.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(471),i=n(472),r=n(473),o=n(474),u=n(475),s={code:"be",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:1}};t.a=s},function(e,t,n){"use strict";function a(e,t){if(void 0!==e.one&&1===t)return e.one;var n=t%10,a=t%100;return 1===n&&11!==a?e.singularNominative.replace("{{count}}",t):n>=2&&n<=4&&(a<10||a>20)?e.singularGenitive.replace("{{count}}",t):e.pluralGenitive.replace("{{count}}",t)}function i(e){return function(t,n){return n.addSuffix?n.comparison>0?e.future?a(e.future,t):"праз "+a(e.regular,t):e.past?a(e.past,t):a(e.regular,t)+" таму":a(e.regular,t)}}function r(e,t,n){return n=n||{},o[e](t,n)}t.a=r;var o={lessThanXSeconds:i({regular:{one:"менш за секунду",singularNominative:"менш за {{count}} секунду",singularGenitive:"менш за {{count}} секунды",pluralGenitive:"менш за {{count}} секунд"},future:{one:"менш, чым праз секунду",singularNominative:"менш, чым праз {{count}} секунду",singularGenitive:"менш, чым праз {{count}} секунды",pluralGenitive:"менш, чым праз {{count}} секунд"}}),xSeconds:i({regular:{singularNominative:"{{count}} секунда",singularGenitive:"{{count}} секунды",pluralGenitive:"{{count}} секунд"},past:{singularNominative:"{{count}} секунду таму",singularGenitive:"{{count}} секунды таму",pluralGenitive:"{{count}} секунд таму"},future:{singularNominative:"праз {{count}} секунду",singularGenitive:"праз {{count}} секунды",pluralGenitive:"праз {{count}} секунд"}}),halfAMinute:function(e,t){return t.addSuffix?t.comparison>0?"праз паўхвіліны":"паўхвіліны таму":"паўхвіліны"},lessThanXMinutes:i({regular:{one:"менш за хвіліну",singularNominative:"менш за {{count}} хвіліну",singularGenitive:"менш за {{count}} хвіліны",pluralGenitive:"менш за {{count}} хвілін"},future:{one:"менш, чым праз хвіліну",singularNominative:"менш, чым праз {{count}} хвіліну",singularGenitive:"менш, чым праз {{count}} хвіліны",pluralGenitive:"менш, чым праз {{count}} хвілін"}}),xMinutes:i({regular:{singularNominative:"{{count}} хвіліна",singularGenitive:"{{count}} хвіліны",pluralGenitive:"{{count}} хвілін"},past:{singularNominative:"{{count}} хвіліну таму",singularGenitive:"{{count}} хвіліны таму",pluralGenitive:"{{count}} хвілін таму"},future:{singularNominative:"праз {{count}} хвіліну",singularGenitive:"праз {{count}} хвіліны",pluralGenitive:"праз {{count}} хвілін"}}),aboutXHours:i({regular:{singularNominative:"каля {{count}} гадзіны",singularGenitive:"каля {{count}} гадзін",pluralGenitive:"каля {{count}} гадзін"},future:{singularNominative:"прыблізна праз {{count}} гадзіну",singularGenitive:"прыблізна праз {{count}} гадзіны",pluralGenitive:"прыблізна праз {{count}} гадзін"}}),xHours:i({regular:{singularNominative:"{{count}} гадзіна",singularGenitive:"{{count}} гадзіны",pluralGenitive:"{{count}} гадзін"},past:{singularNominative:"{{count}} гадзіну таму",singularGenitive:"{{count}} гадзіны таму",pluralGenitive:"{{count}} гадзін таму"},future:{singularNominative:"праз {{count}} гадзіну",singularGenitive:"праз {{count}} гадзіны",pluralGenitive:"праз {{count}} гадзін"}}),xDays:i({regular:{singularNominative:"{{count}} дзень",singularGenitive:"{{count}} дні",pluralGenitive:"{{count}} дзён"}}),aboutXWeeks:i({regular:{singularNominative:"каля {{count}} месяца",singularGenitive:"каля {{count}} месяцаў",pluralGenitive:"каля {{count}} месяцаў"},future:{singularNominative:"прыблізна праз {{count}} месяц",singularGenitive:"прыблізна праз {{count}} месяцы",pluralGenitive:"прыблізна праз {{count}} месяцаў"}}),xWeeks:i({regular:{singularNominative:"{{count}} месяц",singularGenitive:"{{count}} месяцы",pluralGenitive:"{{count}} месяцаў"}}),aboutXMonths:i({regular:{singularNominative:"каля {{count}} месяца",singularGenitive:"каля {{count}} месяцаў",pluralGenitive:"каля {{count}} месяцаў"},future:{singularNominative:"прыблізна праз {{count}} месяц",singularGenitive:"прыблізна праз {{count}} месяцы",pluralGenitive:"прыблізна праз {{count}} месяцаў"}}),xMonths:i({regular:{singularNominative:"{{count}} месяц",singularGenitive:"{{count}} месяцы",pluralGenitive:"{{count}} месяцаў"}}),aboutXYears:i({regular:{singularNominative:"каля {{count}} года",singularGenitive:"каля {{count}} гадоў",pluralGenitive:"каля {{count}} гадоў"},future:{singularNominative:"прыблізна праз {{count}} год",singularGenitive:"прыблізна праз {{count}} гады",pluralGenitive:"прыблізна праз {{count}} гадоў"}}),xYears:i({regular:{singularNominative:"{{count}} год",singularGenitive:"{{count}} гады",pluralGenitive:"{{count}} гадоў"}}),overXYears:i({regular:{singularNominative:"больш за {{count}} год",singularGenitive:"больш за {{count}} гады",pluralGenitive:"больш за {{count}} гадоў"},future:{singularNominative:"больш, чым праз {{count}} год",singularGenitive:"больш, чым праз {{count}} гады",pluralGenitive:"больш, чым праз {{count}} гадоў"}}),almostXYears:i({regular:{singularNominative:"амаль {{count}} год",singularGenitive:"амаль {{count}} гады",pluralGenitive:"амаль {{count}} гадоў"},future:{singularNominative:"амаль праз {{count}} год",singularGenitive:"амаль праз {{count}} гады",pluralGenitive:"амаль праз {{count}} гадоў"}})}},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE, d MMMM y 'г.'",long:"d MMMM y 'г.'",medium:"d MMM y 'г.'",short:"dd.MM.y"},r={full:"H:mm:ss zzzz",long:"H:mm:ss z",medium:"H:mm:ss",short:"H:mm"},o={any:"{{date}}, {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"any"})};t.a=u},function(e,t,n){"use strict";function a(e){var t=s[e];switch(e){case 0:case 3:case 5:case 6:return"'у мінулую "+t+" а' p";case 1:case 2:case 4:return"'у мінулы "+t+" а' p"}}function i(e){return"'у "+s[e]+" а' p"}function r(e){var t=s[e];switch(e){case 0:case 3:case 5:case 6:return"'у наступную "+t+" а' p";case 1:case 2:case 4:return"'у наступны "+t+" а' p"}}function o(e,t,n,a){var i=d[e];return"function"==typeof i?i(t,n,a):i}t.a=o;var u=n(13),s=["нядзелю","панядзелак","аўторак","сераду","чацвер","пятніцу","суботу"],d={lastWeek:function(e,t,n){var r=e.getUTCDay();return u.a(e,t,n)?i(r):a(r)},yesterday:"'учора а' p",today:"'сёння а' p",tomorrow:"'заўтра а' p",nextWeek:function(e,t,n){var a=e.getUTCDay();return u.a(e,t,n)?i(a):r(a)},other:"P"}},function(e,t,n){"use strict";function a(e,t){var n,a=t||{},i=String(a.unit),r=Number(e);return n="date"===i?"-га":"hour"===i||"minute"===i||"second"===i?"-я":r%10!=2&&r%10!=3||r%100==12||r%100==13?"-ы":"-і",r+n}var i=n(3),r={narrow:["да н.э.","н.э."],abbreviated:["да н. э.","н. э."],wide:["да нашай эры","нашай эры"]},o={narrow:["1","2","3","4"],abbreviated:["1-ы кв.","2-і кв.","3-і кв.","4-ы кв."],wide:["1-ы квартал","2-і квартал","3-і квартал","4-ы квартал"]},u={narrow:["С","Л","С","К","М","Ч","Л","Ж","В","К","Л","С"],abbreviated:["студз.","лют.","сак.","крас.","май","чэрв.","ліп.","жн.","вер.","кастр.","ліст.","снеж."],wide:["студзень","люты","сакавік","красавік","май","чэрвень","ліпень","жнівень","верасень","кастрычнік","лістапад","снежань"]},s={narrow:["С","Л","С","К","М","Ч","Л","Ж","В","К","Л","С"],abbreviated:["студз.","лют.","сак.","крас.","мая","чэрв.","ліп.","жн.","вер.","кастр.","ліст.","снеж."],wide:["студзеня","лютага","сакавіка","красавіка","мая","чэрвеня","ліпеня","жніўня","верасня","кастрычніка","лістапада","снежня"]},d={narrow:["Н","П","А","С","Ч","П","С"],short:["нд","пн","аў","ср","чц","пт","сб"],abbreviated:["нядз","пан","аўт","сер","чац","пят","суб"],wide:["нядзеля","панядзелак","аўторак","серада","чацвер","пятніца","субота"]},c={narrow:{am:"ДП",pm:"ПП",midnight:"поўн.",noon:"поўд.",morning:"ран.",afternoon:"дзень",evening:"веч.",night:"ноч"},abbreviated:{am:"ДП",pm:"ПП",midnight:"поўн.",noon:"поўд.",morning:"ран.",afternoon:"дзень",evening:"веч.",night:"ноч"},wide:{am:"ДП",pm:"ПП",midnight:"поўнач",noon:"поўдзень",morning:"раніца",afternoon:"дзень",evening:"вечар",night:"ноч"}},l={narrow:{am:"ДП",pm:"ПП",midnight:"поўн.",noon:"поўд.",morning:"ран.",afternoon:"дня",evening:"веч.",night:"ночы"},abbreviated:{am:"ДП",pm:"ПП",midnight:"поўн.",noon:"поўд.",morning:"ран.",afternoon:"дня",evening:"веч.",night:"ночы"},wide:{am:"ДП",pm:"ПП",midnight:"поўнач",noon:"поўдзень",morning:"раніцы",afternoon:"дня",evening:"вечара",night:"ночы"}},m={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:u,defaultWidth:"wide",formattingValues:s,defaultFormattingWidth:"wide"}),day:i.a({values:d,defaultWidth:"wide"}),dayPeriod:i.a({values:c,defaultWidth:"any",formattingValues:l,defaultFormattingWidth:"wide"})};t.a=m},function(e,t,n){"use strict";var a=n(4),i=n(5),r=/^(\d+)(-?(е|я|га|і|ы|ае|ая|яя|шы|гі|ці|ты|мы))?/i,o=/\d+/i,u={narrow:/^((да )?н\.?\s?э\.?)/i,abbreviated:/^((да )?н\.?\s?э\.?)/i,wide:/^(да нашай эры|нашай эры|наша эра)/i},s={any:[/^д/i,/^н/i]},d={narrow:/^[1234]/i,abbreviated:/^[1234](-?[ыі]?)? кв.?/i,wide:/^[1234](-?[ыі]?)? квартал/i},c={any:[/1/i,/2/i,/3/i,/4/i]},l={narrow:/^[слкмчжв]/i,abbreviated:/^(студз|лют|сак|крас|ма[йя]|чэрв|ліп|жн|вер|кастр|ліст|снеж)\.?/i,wide:/^(студзен[ья]|лют(ы|ага)|сакавіка?|красавіка?|ма[йя]|чэрвен[ья]|ліпен[ья]|жні(вень|ўня)|верас(ень|ня)|кастрычніка?|лістапада?|снеж(ань|ня))/i},m={narrow:[/^с/i,/^л/i,/^с/i,/^к/i,/^м/i,/^ч/i,/^л/i,/^ж/i,/^в/i,/^к/i,/^л/i,/^с/i],any:[/^ст/i,/^лю/i,/^са/i,/^кр/i,/^ма/i,/^ч/i,/^ліп/i,/^ж/i,/^в/i,/^ка/i,/^ліс/i,/^сн/i]},f={narrow:/^[нпасч]/i,short:/^(нд|ня|пн|па|аў|ат|ср|се|чц|ча|пт|пя|сб|су)\.?/i,abbreviated:/^(нядз?|ндз|пнд|пан|аўт|срд|сер|чцв|чац|птн|пят|суб).?/i,wide:/^(нядзел[яі]|панядзел(ак|ка)|аўтор(ак|ка)|серад[аы]|чацв(ер|ярга)|пятніц[аы]|субот[аы])/i},h={narrow:[/^н/i,/^п/i,/^а/i,/^с/i,/^ч/i,/^п/i,/^с/i],any:[/^н/i,/^п[ан]/i,/^а/i,/^с[ер]/i,/^ч/i,/^п[ят]/i,/^с[уб]/i]},p={narrow:/^([дп]п|поўн\.?|поўд\.?|ран\.?|дзень|дня|веч\.?|ночы?)/i,abbreviated:/^([дп]п|поўн\.?|поўд\.?|ран\.?|дзень|дня|веч\.?|ночы?)/i,wide:/^([дп]п|поўнач|поўдзень|раніц[аы]|дзень|дня|вечара?|ночы?)/i},g={any:{am:/^дп/i,pm:/^пп/i,midnight:/^поўн/i,noon:/^поўд/i,morning:/^р/i,afternoon:/^д[зн]/i,evening:/^в/i,night:/^н/i}},v={ordinalNumber:a.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:i.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:i.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:i.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:i.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:i.a({matchPatterns:p,defaultMatchWidth:"wide",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(477),i=n(478),r=n(479),o=n(480),u=n(481),s={code:"bg",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:1}};t.a=s},function(e,t,n){"use strict";function a(e,t,n){n=n||{};var a;return a="string"==typeof i[e]?i[e]:1===t?i[e].one:i[e].other.replace("{{count}}",t),n.addSuffix?n.comparison>0?"след "+a:"преди "+a:a}t.a=a;var i={lessThanXSeconds:{one:"по-малко от секунда",other:"по-малко от {{count}} секунди"},xSeconds:{one:"1 секунда",other:"{{count}} секунди"},halfAMinute:"половин минута",lessThanXMinutes:{one:"по-малко от минута",other:"по-малко от {{count}} минути"},xMinutes:{one:"1 минута",other:"{{count}} минути"},aboutXHours:{one:"около час",other:"около {{count}} часа"},xHours:{one:"1 час",other:"{{count}} часа"},xDays:{one:"1 ден",other:"{{count}} дни"},aboutXWeeks:{one:"около седмица",other:"около {{count}} седмици"},xWeeks:{one:"1 седмица",other:"{{count}} седмици"},aboutXMonths:{one:"около месец",other:"около {{count}} месеца"},xMonths:{one:"1 месец",other:"{{count}} месеца"},aboutXYears:{one:"около година",other:"около {{count}} години"},xYears:{one:"1 година",other:"{{count}} години"},overXYears:{one:"над година",other:"над {{count}} години"},almostXYears:{one:"почти година",other:"почти {{count}} години"}}},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE, dd MMMM yyyy",long:"dd MMMM yyyy",medium:"dd MMM yyyy",short:"dd/MM/yyyy"},r={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"H:mm"},o={any:"{{date}} {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"any"})};t.a=u},function(e,t,n){"use strict";function a(e){var t=s[e];switch(e){case 0:case 3:case 6:return"'миналата "+t+" в' p";case 1:case 2:case 4:case 5:return"'миналия "+t+" в' p"}}function i(e){var t=s[e];return 2===e?"'във "+t+" в' p":"'в "+t+" в' p"}function r(e){var t=s[e];switch(e){case 0:case 3:case 6:return"'следващата "+t+" в' p";case 1:case 2:case 4:case 5:return"'следващия "+t+" в' p"}}function o(e,t,n,a){var i=d[e];return"function"==typeof i?i(t,n,a):i}t.a=o;var u=n(13),s=["неделя","понеделник","вторник","сряда","четвъртък","петък","събота"],d={lastWeek:function(e,t,n){var r=e.getUTCDay();return u.a(e,t,n)?i(r):a(r)},yesterday:"'вчера в' p",today:"'днес в' p",tomorrow:"'утре в' p",nextWeek:function(e,t,n){var a=e.getUTCDay();return u.a(e,t,n)?i(a):r(a)},other:"P"}},function(e,t,n){"use strict";function a(e){return"year"===e||"week"===e||"minute"===e||"second"===e}function i(e){return"quarter"===e}function r(e,t,n,r,o){return e+"-"+(i(t)?o:a(t)?r:n)}function o(e,t){var n=t||{},a=String(n.unit),i=Number(e);if(0===i)return r(0,a,"ев","ева","ево");if(i%1e3==0)return r(i,a,"ен","на","но");if(i%100==0)return r(i,a,"тен","тна","тно");var o=i%100;if(o>20||o<10)switch(o%10){case 1:return r(i,a,"ви","ва","во");case 2:return r(i,a,"ри","ра","ро");case 7:case 8:return r(i,a,"ми","ма","мо")}return r(i,a,"ти","та","то")}var u=n(3),s={narrow:["пр.н.е.","н.е."],abbreviated:["преди н. е.","н. е."],wide:["преди новата ера","новата ера"]},d={narrow:["1","2","3","4"],abbreviated:["1-во тримес.","2-ро тримес.","3-то тримес.","4-то тримес."],wide:["1-во тримесечие","2-ро тримесечие","3-то тримесечие","4-то тримесечие"]},c={abbreviated:["яну","фев","мар","апр","май","юни","юли","авг","сеп","окт","ное","дек"],wide:["януари","февруари","март","април","май","юни","юли","август","септември","октомври","ноември","декември"]},l={narrow:["Н","П","В","С","Ч","П","С"],short:["нд","пн","вт","ср","чт","пт","сб"],abbreviated:["нед","пон","вто","сря","чет","пет","съб"],wide:["неделя","понеделник","вторник","сряда","четвъртък","петък","събота"]},m={wide:{am:"преди обяд",pm:"след обяд",midnight:"в полунощ",noon:"на обяд",morning:"сутринта",afternoon:"следобед",evening:"вечерта",night:"през нощта"}},f={ordinalNumber:o,era:u.a({values:s,defaultWidth:"wide"}),quarter:u.a({values:d,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:u.a({values:c,defaultWidth:"wide"}),day:u.a({values:l,defaultWidth:"wide"}),dayPeriod:u.a({values:m,defaultWidth:"wide"})};t.a=f},function(e,t,n){"use strict";var a=n(5),i=n(4),r=/^(\d+)(-?[врмт][аи]|-?т?(ен|на)|-?(ев|ева))?/i,o=/\d+/i,u={narrow:/^((пр)?н\.?\s?е\.?)/i,abbreviated:/^((пр)?н\.?\s?е\.?)/i,wide:/^(преди новата ера|новата ера|нова ера)/i},s={any:[/^п/i,/^н/i]},d={narrow:/^[1234]/i,abbreviated:/^[1234](-?[врт]?o?)? тримес.?/i,wide:/^[1234](-?[врт]?о?)? тримесечие/i},c={any:[/1/i,/2/i,/3/i,/4/i]},l={narrow:/^[нпвсч]/i,short:/^(нд|пн|вт|ср|чт|пт|сб)/i,abbreviated:/^(нед|пон|вто|сря|чет|пет|съб)/i,wide:/^(неделя|понеделник|вторник|сряда|четвъртък|петък|събота)/i},m={narrow:[/^н/i,/^п/i,/^в/i,/^с/i,/^ч/i,/^п/i,/^с/i],any:[/^н[ед]/i,/^п[он]/i,/^вт/i,/^ср/i,/^ч[ет]/i,/^п[ет]/i,/^с[ъб]/i]},f={abbreviated:/^(яну|фев|мар|апр|май|юни|юли|авг|сеп|окт|ное|дек)/i,wide:/^(януари|февруари|март|април|май|юни|юли|август|септември|октомври|ноември|декември)/i},h={any:[/^я/i,/^ф/i,/^мар/i,/^ап/i,/^май/i,/^юн/i,/^юл/i,/^ав/i,/^се/i,/^окт/i,/^но/i,/^де/i]},p={any:/^(преди о|след о|в по|на о|през|веч|сут|следо)/i},g={any:{am:/^преди о/i,pm:/^след о/i,midnight:/^в пол/i,noon:/^на об/i,morning:/^сут/i,afternoon:/^следо/i,evening:/^веч/i,night:/^през н/i}},v={ordinalNumber:i.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:a.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:a.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:a.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),day:a.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),dayPeriod:a.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(483),i=n(484),r=n(485),o=n(186),u=n(486),s={code:"bn",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:0,firstWeekContainsDate:1}};t.a=s},function(e,t,n){"use strict";function a(e,t,n){n=n||{};var a;return a="string"==typeof r[e]?r[e]:1===t?r[e].one:r[e].other.replace("{{count}}",i.a.numberToLocale(t)),n.addSuffix?n.comparison>0?a+" এর মধ্যে":a+" আগে":a}t.a=a;var i=n(186),r={lessThanXSeconds:{one:"প্রায় ১ সেকেন্ড",other:"প্রায় {{count}} সেকেন্ড"},xSeconds:{one:"১ সেকেন্ড",other:"{{count}} সেকেন্ড"},halfAMinute:"আধ মিনিট",lessThanXMinutes:{one:"প্রায় ১ মিনিট",other:"প্রায় {{count}} মিনিট"},xMinutes:{one:"১ মিনিট",other:"{{count}} মিনিট"},aboutXHours:{one:"প্রায় ১ ঘন্টা",other:"প্রায় {{count}} ঘন্টা"},xHours:{one:"১ ঘন্টা",other:"{{count}} ঘন্টা"},xDays:{one:"১ দিন",other:"{{count}} দিন"},aboutXWeeks:{one:"প্রায় ১ সপ্তাহ",other:"প্রায় {{count}} সপ্তাহ"},xWeeks:{one:"১ সপ্তাহ",other:"{{count}} সপ্তাহ"},aboutXMonths:{one:"প্রায় ১ মাস",other:"প্রায় {{count}} মাস"},xMonths:{one:"১ মাস",other:"{{count}} মাস"},aboutXYears:{one:"প্রায় ১ বছর",other:"প্রায় {{count}} বছর"},xYears:{one:"১ বছর",other:"{{count}} বছর"},overXYears:{one:"১ বছরের বেশি",other:"{{count}} বছরের বেশি"},almostXYears:{one:"প্রায় ১ বছর",other:"প্রায় {{count}} বছর"}}},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},r={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},o={full:"{{date}} {{time}} 'সময়'",long:"{{date}} {{time}} 'সময়'",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e,t,n,a){return i[e]}t.a=a;var i={lastWeek:"'গত' eeee 'সময়' p",yesterday:"'গতকাল' 'সময়' p",today:"'আজ' 'সময়' p",tomorrow:"'আগামীকাল' 'সময়' p",nextWeek:"eeee 'সময়' p",other:"P"}},function(e,t,n){"use strict";var a=n(4),i=n(5),r=/^(\d+)(ম|য়|র্থ|ষ্ঠ|শে|ই|তম)?/i,o=/\d+/i,u={narrow:/^(খ্রিঃপূঃ|খ্রিঃ)/i,abbreviated:/^(খ্রিঃপূর্ব|খ্রিঃ)/i,wide:/^(খ্রিস্টপূর্ব|খ্রিস্টাব্দ)/i},s={narrow:[/^খ্রিঃপূঃ/i,/^খ্রিঃ/i],abbreviated:[/^খ্রিঃপূর্ব/i,/^খ্রিঃ/i],wide:[/^খ্রিস্টপূর্ব/i,/^খ্রিস্টাব্দ/i]},d={narrow:/^[১২৩৪]/i,abbreviated:/^[১২৩৪]ত্রৈ/i,wide:/^[১২৩৪](ম|য়|র্থ)? ত্রৈমাসিক/i},c={any:[/১/i,/২/i,/৩/i,/৪/i]},l={narrow:/^(জানু|ফেব্রু|মার্চ|এপ্রিল|মে|জুন|জুলাই|আগস্ট|সেপ্ট|অক্টো|নভে|ডিসে)/i,abbreviated:/^(জানু|ফেব্রু|মার্চ|এপ্রিল|মে|জুন|জুলাই|আগস্ট|সেপ্ট|অক্টো|নভে|ডিসে)/i,wide:/^(জানুয়ারি|ফেব্রুয়ারি|মার্চ|এপ্রিল|মে|জুন|জুলাই|আগস্ট|সেপ্টেম্বর|অক্টোবর|নভেম্বর|ডিসেম্বর)/i},m={any:[/^জানু/i,/^ফেব্রু/i,/^মার্চ/i,/^এপ্রিল/i,/^মে/i,/^জুন/i,/^জুলাই/i,/^আগস্ট/i,/^সেপ্ট/i,/^অক্টো/i,/^নভে/i,/^ডিসে/i]},f={narrow:/^(র|সো|ম|বু|বৃ|শু|শ)+/i,short:/^(রবি|সোম|মঙ্গল|বুধ|বৃহ|শুক্র|শনি)+/i,abbreviated:/^(রবি|সোম|মঙ্গল|বুধ|বৃহ|শুক্র|শনি)+/i,wide:/^(রবিবার|সোমবার|মঙ্গলবার|বুধবার|বৃহস্পতিবার |শুক্রবার|শনিবার)+/i},h={narrow:[/^র/i,/^সো/i,/^ম/i,/^বু/i,/^বৃ/i,/^শু/i,/^শ/i],short:[/^রবি/i,/^সোম/i,/^মঙ্গল/i,/^বুধ/i,/^বৃহ/i,/^শুক্র/i,/^শনি/i],abbreviated:[/^রবি/i,/^সোম/i,/^মঙ্গল/i,/^বুধ/i,/^বৃহ/i,/^শুক্র/i,/^শনি/i],wide:[/^রবিবার/i,/^সোমবার/i,/^মঙ্গলবার/i,/^বুধবার/i,/^বৃহস্পতিবার /i,/^শুক্রবার/i,/^শনিবার/i]},p={narrow:/^(পূ|অপ|মধ্যরাত|মধ্যাহ্ন|সকাল|বিকাল|সন্ধ্যা|রাত)/i,abbreviated:/^(পূর্বাহ্ন|অপরাহ্ন|মধ্যরাত|মধ্যাহ্ন|সকাল|বিকাল|সন্ধ্যা|রাত)/i,wide:/^(পূর্বাহ্ন|অপরাহ্ন|মধ্যরাত|মধ্যাহ্ন|সকাল|বিকাল|সন্ধ্যা|রাত)/i},g={any:{am:/^পূ/i,pm:/^অপ/i,midnight:/^মধ্যরাত/i,noon:/^মধ্যাহ্ন/i,morning:/সকাল/i,afternoon:/বিকাল/i,evening:/সন্ধ্যা/i,night:/রাত/i}},v={ordinalNumber:a.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:i.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:i.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:i.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:i.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:i.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(488),i=n(489),r=n(490),o=n(491),u=n(492),s={code:"ca",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:4}};t.a=s},function(e,t,n){"use strict";function a(e,t,n){n=n||{};var a;return a="string"==typeof i[e]?i[e]:1===t?i[e].one:11===t&&i[e].eleven?i[e].eleven:i[e].other.replace("{{count}}",t),n.addSuffix?n.comparison>0?"en "+a:"fa "+a:a}t.a=a;var i={lessThanXSeconds:{one:"menys d'un segon",eleven:"menys d'onze segons",other:"menys de {{count}} segons"},xSeconds:{one:"1 segon",other:"{{count}} segons"},halfAMinute:"mig minut",lessThanXMinutes:{one:"menys d'un minut",eleven:"menys d'onze minuts",other:"menys de {{count}} minuts"},xMinutes:{one:"1 minut",other:"{{count}} minuts"},aboutXHours:{one:"aproximadament una hora",other:"aproximadament {{count}} hores"},xHours:{one:"1 hora",other:"{{count}} hores"},xDays:{one:"1 dia",other:"{{count}} dies"},aboutXWeeks:{one:"aproximadament una setmana",other:"aproximadament {{count}} setmanes"},xWeeks:{one:"1 setmana",other:"{{count}} setmanes"},aboutXMonths:{one:"aproximadament un mes",other:"aproximadament {{count}} mesos"},xMonths:{one:"1 mes",other:"{{count}} mesos"},aboutXYears:{one:"aproximadament un any",other:"aproximadament {{count}} anys"},xYears:{one:"1 any",other:"{{count}} anys"},overXYears:{one:"més d'un any",eleven:"més d'onze anys",other:"més de {{count}} anys"},almostXYears:{one:"gairebé un any",other:"gairebé {{count}} anys"}}},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE, d 'de' MMMM y",long:"d 'de' MMMM y",medium:"d MMM y",short:"dd/MM/y"},r={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},o={full:"{{date}} 'a les' {{time}}",long:"{{date}} 'a les' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e,t,n,a){return 1!==t.getUTCHours()?r[e]:i[e]}t.a=a;var i={lastWeek:"'el' eeee 'passat a la' LT",yesterday:"'ahir a la' p",today:"'avui a la' p",tomorrow:"'demà a la' p",nextWeek:"eeee 'a la' p",other:"P"},r={lastWeek:"'el' eeee 'passat a les' p",yesterday:"'ahir a les' p",today:"'avui a les' p",tomorrow:"'demà a les' p",nextWeek:"eeee 'a les' p",other:"P"}},function(e,t,n){"use strict";function a(e,t){var n=Number(e),a=n%100;if(a>20||a<10)switch(a%10){case 1:return n+"r";case 2:return n+"n";case 3:return n+"r";case 4:return n+"t"}return n+"è"}var i=n(3),r={narrow:["aC","dC"],abbreviated:["a. de C.","d. de C."],wide:["abans de Crist","després de Crist"]},o={narrow:["1","2","3","4"],abbreviated:["T1","T2","T3","T4"],wide:["1r trimestre","2n trimestre","3r trimestre","4t trimestre"]},u={narrow:["GN","FB","MÇ","AB","MG","JN","JL","AG","ST","OC","NV","DS"],abbreviated:["gen.","febr.","març","abr.","maig","juny","jul.","ag.","set.","oct.","nov.","des."],wide:["gener","febrer","març","abril","maig","juny","juliol","agost","setembre","octubre","novembre","desembre"]},s={narrow:["dg.","dl.","dt.","dm.","dj.","dv.","ds."],short:["dg.","dl.","dt.","dm.","dj.","dv.","ds."],abbreviated:["dg.","dl.","dt.","dm.","dj.","dv.","ds."],wide:["diumenge","dilluns","dimarts","dimecres","dijous","divendres","dissabte"]},d={narrow:{am:"am",pm:"pm",midnight:"mitjanit",noon:"migdia",morning:"matí",afternoon:"tarda",evening:"vespre",night:"nit"},abbreviated:{am:"a.m.",pm:"p.m.",midnight:"mitjanit",noon:"migdia",morning:"matí",afternoon:"tarda",evening:"vespre",night:"nit"},wide:{am:"ante meridiem",pm:"post meridiem",midnight:"mitjanit",noon:"migdia",morning:"matí",afternoon:"tarda",evening:"vespre",night:"nit"}},c={narrow:{am:"am",pm:"pm",midnight:"de la mitjanit",noon:"del migdia",morning:"del matí",afternoon:"de la tarda",evening:"del vespre",night:"de la nit"},abbreviated:{am:"AM",pm:"PM",midnight:"de la mitjanit",noon:"del migdia",morning:"del matí",afternoon:"de la tarda",evening:"del vespre",night:"de la nit"},wide:{am:"ante meridiem",pm:"post meridiem",midnight:"de la mitjanit",noon:"del migdia",morning:"del matí",afternoon:"de la tarda",evening:"del vespre",night:"de la nit"}},l={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:u,defaultWidth:"wide"}),day:i.a({values:s,defaultWidth:"wide"}),dayPeriod:i.a({values:d,defaultWidth:"wide",formattingValues:c,defaultFormattingWidth:"wide"})};t.a=l},function(e,t,n){"use strict";var a=n(5),i=n(4),r=/^(\d+)(è|r|n|r|t)?/i,o=/\d+/i,u={narrow:/^(aC|dC)/i,abbreviated:/^(a. de C.|d. de C.)/i,wide:/^(abans de Crist|despr[eé]s de Crist)/i},s={narrow:[/^aC/i,/^dC/i],abbreviated:[/^(a. de C.)/i,/^(d. de C.)/i],wide:[/^(abans de Crist)/i,/^(despr[eé]s de Crist)/i]},d={narrow:/^[1234]/i,abbreviated:/^T[1234]/i,wide:/^[1234](è|r|n|r|t)? trimestre/i},c={any:[/1/i,/2/i,/3/i,/4/i]},l={narrow:/^(GN|FB|MÇ|AB|MG|JN|JL|AG|ST|OC|NV|DS)/i,abbreviated:/^(gen.|febr.|març|abr.|maig|juny|jul.|ag.|set.|oct.|nov.|des.)/i,wide:/^(gener|febrer|març|abril|maig|juny|juliol|agost|setembre|octubre|novembre|desembre)/i},m={narrow:[/^GN/i,/^FB/i,/^MÇ/i,/^AB/i,/^MG/i,/^JN/i,/^JL/i,/^AG/i,/^ST/i,/^OC/i,/^NV/i,/^DS/i],abbreviated:[/^gen./i,/^febr./i,/^març/i,/^abr./i,/^maig/i,/^juny/i,/^jul./i,/^ag./i,/^set./i,/^oct./i,/^nov./i,/^des./i],wide:[/^gener/i,/^febrer/i,/^març/i,/^abril/i,/^maig/i,/^juny/i,/^juliol/i,/^agost/i,/^setembre/i,/^octubre/i,/^novembre/i,/^desembre/i]},f={narrow:/^(dg\.|dl\.|dt\.|dm\.|dj\.|dv\.|ds\.)/i,short:/^(dg\.|dl\.|dt\.|dm\.|dj\.|dv\.|ds\.)/i,abbreviated:/^(dg\.|dl\.|dt\.|dm\.|dj\.|dv\.|ds\.)/i,wide:/^(diumenge|dilluns|dimarts|dimecres|dijous|divendres|dissabte)/i},h={narrow:[/^dg./i,/^dl./i,/^dt./i,/^dm./i,/^dj./i,/^dv./i,/^ds./i],abbreviated:[/^dg./i,/^dl./i,/^dt./i,/^dm./i,/^dj./i,/^dv./i,/^ds./i],wide:[/^diumenge/i,/^dilluns/i,/^dimarts/i,/^dimecres/i,/^dijous/i,/^divendres/i,/^disssabte/i]},p={narrow:/^(a|p|mn|md|(del|de la) (matí|tarda|vespre|nit))/i,abbreviated:/^([ap]\.?\s?m\.?|mitjanit|migdia|(del|de la) (matí|tarda|vespre|nit))/i,wide:/^(ante meridiem|post meridiem|mitjanit|migdia|(del|de la) (matí|tarda|vespre|nit))/i},g={any:{am:/^a/i,pm:/^p/i,midnight:/^mitjanit/i,noon:/^migdia/i,morning:/matí/i,afternoon:/tarda/i,evening:/vespre/i,night:/nit/i}},v={ordinalNumber:i.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:a.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:a.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:a.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:a.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:a.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(494),i=n(495),r=n(496),o=n(497),u=n(498),s={code:"cs",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:4}};t.a=s},function(e,t,n){"use strict";function a(e,t,n){n=n||{};var a,r=i[e];a="object"==typeof r.other?"other":1===t?"one":t>1&&t<5||0===t?"few":"many";var o,u=!0===n.addSuffix,s=n.comparison;return o=u&&-1===s?"past":u&&1===s?"future":"regular",r[a][o].replace("{{count}}",t)}t.a=a;var i={lessThanXSeconds:{one:{regular:"méně než vteřina",past:"před méně než vteřinou",future:"za méně než vteřinu"},few:{regular:"méně než {{count}} vteřiny",past:"před méně než {{count}} vteřinami",future:"za méně než {{count}} vteřiny"},many:{regular:"méně než {{count}} vteřin",past:"před méně než {{count}} vteřinami",future:"za méně než {{count}} vteřin"}},xSeconds:{one:{regular:"vteřina",past:"před vteřinou",future:"za vteřinu"},few:{regular:"{{count}} vteřiny",past:"před {{count}} vteřinami",future:"za {{count}} vteřiny"},many:{regular:"{{count}} vteřin",past:"před {{count}} vteřinami",future:"za {{count}} vteřin"}},halfAMinute:{other:{regular:"půl minuty",past:"před půl minutou",future:"za půl minuty"}},lessThanXMinutes:{one:{regular:"méně než minuta",past:"před méně než minutou",future:"za méně než minutu"},few:{regular:"méně než {{count}} minuty",past:"před méně než {{count}} minutami",future:"za méně než {{count}} minuty"},many:{regular:"méně než {{count}} minut",past:"před méně než {{count}} minutami",future:"za méně než {{count}} minut"}},xMinutes:{one:{regular:"minuta",past:"před minutou",future:"za minutu"},few:{regular:"{{count}} minuty",past:"před {{count}} minutami",future:"za {{count}} minuty"},many:{regular:"{{count}} minut",past:"před {{count}} minutami",future:"za {{count}} minut"}},aboutXHours:{one:{regular:"přibližně hodina",past:"přibližně před hodinou",future:"přibližně za hodinu"},few:{regular:"přibližně {{count}} hodiny",past:"přibližně před {{count}} hodinami",future:"přibližně za {{count}} hodiny"},many:{regular:"přibližně {{count}} hodin",past:"přibližně před {{count}} hodinami",future:"přibližně za {{count}} hodin"}},xHours:{one:{regular:"hodina",past:"před hodinou",future:"za hodinu"},few:{regular:"{{count}} hodiny",past:"před {{count}} hodinami",future:"za {{count}} hodiny"},many:{regular:"{{count}} hodin",past:"před {{count}} hodinami",future:"za {{count}} hodin"}},xDays:{one:{regular:"den",past:"před dnem",future:"za den"},few:{regular:"{{count}} dny",past:"před {{count}} dny",future:"za {{count}} dny"},many:{regular:"{{count}} dní",past:"před {{count}} dny",future:"za {{count}} dní"}},aboutXWeeks:{one:{regular:"přibližně týden",past:"přibližně před týdnem",future:"přibližně za týden"},few:{regular:"přibližně {{count}} týdny",past:"přibližně před {{count}} týdny",future:"přibližně za {{count}} týdny"},many:{regular:"přibližně {{count}} týdnů",past:"přibližně před {{count}} týdny",future:"přibližně za {{count}} týdnů"}},xWeeks:{one:{regular:"týden",past:"před týdnem",future:"za týden"},few:{regular:"{{count}} týdny",past:"před {{count}} týdny",future:"za {{count}} týdny"},many:{regular:"{{count}} týdnů",past:"před {{count}} týdny",future:"za {{count}} týdnů"}},aboutXMonths:{one:{regular:"přibližně měsíc",past:"přibližně před měsícem",future:"přibližně za měsíc"},few:{regular:"přibližně {{count}} měsíce",past:"přibližně před {{count}} měsíci",future:"přibližně za {{count}} měsíce"},many:{regular:"přibližně {{count}} měsíců",past:"přibližně před {{count}} měsíci",future:"přibližně za {{count}} měsíců"}},xMonths:{one:{regular:"měsíc",past:"před měsícem",future:"za měsíc"},few:{regular:"{{count}} měsíce",past:"před {{count}} měsíci",future:"za {{count}} měsíce"},many:{regular:"{{count}} měsíců",past:"před {{count}} měsíci",future:"za {{count}} měsíců"}},aboutXYears:{one:{regular:"přibližně rok",past:"přibližně před rokem",future:"přibližně za rok"},few:{regular:"přibližně {{count}} roky",past:"přibližně před {{count}} roky",future:"přibližně za {{count}} roky"},many:{regular:"přibližně {{count}} roků",past:"přibližně před {{count}} roky",future:"přibližně za {{count}} roků"}},xYears:{one:{regular:"rok",past:"před rokem",future:"za rok"},few:{regular:"{{count}} roky",past:"před {{count}} roky",future:"za {{count}} roky"},many:{regular:"{{count}} roků",past:"před {{count}} roky",future:"za {{count}} roků"}},overXYears:{one:{regular:"více než rok",past:"před více než rokem",future:"za více než rok"},few:{regular:"více než {{count}} roky",past:"před více než {{count}} roky",future:"za více než {{count}} roky"},many:{regular:"více než {{count}} roků",past:"před více než {{count}} roky",future:"za více než {{count}} roků"}},almostXYears:{one:{regular:"skoro rok",past:"skoro před rokem",future:"skoro za rok"},few:{regular:"skoro {{count}} roky",past:"skoro před {{count}} roky",future:"skoro za {{count}} roky"},many:{regular:"skoro {{count}} roků",past:"skoro před {{count}} roky",future:"skoro za {{count}} roků"}}}},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE, d. MMMM yyyy",long:"d. MMMM yyyy",medium:"d.M.yyyy",short:"d.M.yy"},r={full:"H:mm:ss zzzz",long:"H:mm:ss z",medium:"H:mm:ss",short:"H:mm"},o={full:"{{date}} 'v' {{time}}",long:"{{date}} 'v' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e,t,n,a){var i=r[e];return"function"==typeof i?i(t,n,a):i}t.a=a;var i=["neděli","pondělí","úterý","středu","čtvrtek","pátek","sobotu"],r={lastWeek:"'poslední' eeee 've' p",yesterday:"'včera v' p",today:"'dnes v' p",tomorrow:"'zítra v' p",nextWeek:function(e,t,n){var a=e.getUTCDay();return"'v "+i[a]+" o' p"},other:"P"}},function(e,t,n){"use strict";function a(e){return Number(e)+"."}var i=n(3),r={narrow:["př. n. l.","n. l."],abbreviated:["př. n. l.","n. l."],wide:["před naším letopočtem","našeho letopočtu"]},o={narrow:["1","2","3","4"],abbreviated:["1. čtvrtletí","2. čtvrtletí","3. čtvrtletí","4. čtvrtletí"],wide:["1. čtvrtletí","2. čtvrtletí","3. čtvrtletí","4. čtvrtletí"]},u={narrow:["L","Ú","B","D","K","Č","Č","S","Z","Ř","L","P"],abbreviated:["led","úno","bře","dub","kvě","čvn","čvc","srp","zář","říj","lis","pro"],wide:["leden","únor","březen","duben","květen","červen","červenec","srpen","září","říjen","listopad","prosinec"]},s={narrow:["L","Ú","B","D","K","Č","Č","S","Z","Ř","L","P"],abbreviated:["led","úno","bře","dub","kvě","čvn","čvc","srp","zář","říj","lis","pro"],wide:["ledna","února","března","dubna","května","června","července","srpna","září","října","listopadu","prosince"]},d={narrow:["ne","po","út","st","čt","pá","so"],short:["ne","po","út","st","čt","pá","so"],abbreviated:["ned","pon","úte","stř","čtv","pát","sob"],wide:["neděle","pondělí","úterý","středa","čtvrtek","pátek","sobota"]},c={narrow:{am:"dop.",pm:"odp.",midnight:"půlnoc",noon:"poledne",morning:"ráno",afternoon:"odpoledne",evening:"večer",night:"noc"},abbreviated:{am:"dop.",pm:"odp.",midnight:"půlnoc",noon:"poledne",morning:"ráno",afternoon:"odpoledne",evening:"večer",night:"noc"},wide:{am:"dopoledne",pm:"odpoledne",midnight:"půlnoc",noon:"poledne",morning:"ráno",afternoon:"odpoledne",evening:"večer",night:"noc"}},l={narrow:{am:"dop.",pm:"odp.",midnight:"půlnoc",noon:"poledne",morning:"ráno",afternoon:"odpoledne",evening:"večer",night:"noc"},abbreviated:{am:"dop.",pm:"odp.",midnight:"půlnoc",noon:"poledne",morning:"ráno",afternoon:"odpoledne",evening:"večer",night:"noc"},wide:{am:"dopoledne",pm:"odpoledne",midnight:"půlnoc",noon:"poledne",morning:"ráno",afternoon:"odpoledne",evening:"večer",night:"noc"}},m={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:u,defaultWidth:"wide",formattingValues:s,defaultFormattingWidth:"wide"}),day:i.a({values:d,defaultWidth:"wide"}),dayPeriod:i.a({values:c,defaultWidth:"wide",formattingValues:l,defaultFormattingWidth:"wide"})};t.a=m},function(e,t,n){"use strict";var a=n(5),i=n(4),r=/^(\d+)\.?/i,o=/\d+/i,u={narrow:/^(p[řr]ed Kr\.|pred n\. l\.|po Kr\.|n\. l\.)/i,abbreviated:/^(pe[řr]ed Kr\.|pe[řr]ed n\. l\.|po Kr\.|n\. l\.)/i,wide:/^(p[řr]ed Kristem|pred na[šs][íi]m letopo[čc]tem|po Kristu|na[šs]eho letopo[čc]tu)/i},s={any:[/^p[řr]/i,/^(po|n)/i]},d={narrow:/^[1234]/i,abbreviated:/^[1234]\. [čc]tvrtlet[íi]/i,wide:/^[1234]\. [čc]tvrtlet[íi]/i},c={any:[/1/i,/2/i,/3/i,/4/i]},l={narrow:/^[lúubdkčcszřrlp]/i,abbreviated:/^(led|[úu]no|b[řr]e|dub|kv[ěe]|[čc]vn|[čc]vc|srp|z[áa][řr]|[řr][íi]j|lis|pro)/i,wide:/^(leden|ledna|[úu]nora?|b[řr]ezen|b[řr]ezna|duben|dubna|kv[ěe]ten|kv[ěe]tna|[čc]erven(ec|ce)?|[čc]ervna|srpen|srpna|z[áa][řr][íi]|[řr][íi]jen|[řr][íi]jna|listopad(a|u)?|prosinec|prosince)/i},m={narrow:[/^l/i,/^[úu]/i,/^b/i,/^d/i,/^k/i,/^[čc]/i,/^[čc]/i,/^s/i,/^z/i,/^[řr]/i,/^l/i,/^p/i],any:[/^led/i,/^[úu]n/i,/^b[řr]e/i,/^dub/i,/^kv[ěe]/i,/^[čc]vn|[čc]erven(?!\w)|[čc]ervna/i,/^[čc]vc|[čc]erven(ec|ce)/i,/^srp/i,/^z[áa][řr]/i,/^[řr][íi]j/i,/^lis/i,/^pro/i]},f={narrow:/^[npuúsčps]/i,short:/^(ne|po|[úu]t|st|[čc]t|p[áa]|so)/i,abbreviated:/^(ne|po|[úu]t|st|[čc]t|p[áa]|so)/i,wide:/^(ned[ěe]le|pond[ěe]l[íi]|[úu]ter[ýy]|st[řr]eda|[čc]tvrtek|p[áa]tek|sobota)/i},h={narrow:[/^n/i,/^p/i,/^[úu]/i,/^s/i,/^[čc]/i,/^p/i,/^s/i],any:[/^ne/i,/^po/i,/^ut/i,/^st/i,/^[čc]t/i,/^p/i,/^so/i]},p={any:/^dopoledne|dop\.?|odpoledne|odp\.?|půlnoc|poledne|r[áa]no|odpoledne|ve[čc]er|(v )?noci/i},g={any:{am:/^dop/i,pm:/^odp/i,midnight:/^p[ůu]lnoc/i,noon:/^poledne/i,morning:/r[áa]no/i,afternoon:/odpoledne/i,evening:/ve[čc]er/i,night:/noc/i}},v={ordinalNumber:i.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:a.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:a.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:a.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:a.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:a.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(500),i=n(501),r=n(502),o=n(503),u=n(504),s={code:"cy",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:0,firstWeekContainsDate:1}};t.a=s},function(e,t,n){"use strict";function a(e,t,n){n=n||{};var a;return a="string"==typeof i[e]?i[e]:1===t?i[e].one:2===t&&i[e].two?i[e].two:i[e].other.replace("{{count}}",t),n.addSuffix?n.comparison>0?"mewn "+a:a+" yn ôl":a}t.a=a;var i={lessThanXSeconds:{one:"llai na eiliad",other:"llai na {{count}} eiliad"},xSeconds:{one:"1 eiliad",other:"{{count}} eiliad"},halfAMinute:"hanner munud",lessThanXMinutes:{one:"llai na munud",two:"llai na 2 funud",other:"llai na {{count}} munud"},xMinutes:{one:"1 munud",two:"2 funud",other:"{{count}} munud"},aboutXHours:{one:"tua 1 awr",other:"tua {{count}} awr"},xHours:{one:"1 awr",other:"{{count}} awr"},xDays:{one:"1 diwrnod",two:"2 ddiwrnod",other:"{{count}} diwrnod"},aboutXWeeks:{one:"tua 1 wythnos",two:"tua pythefnos",other:"tua {{count}} wythnos"},xWeeks:{one:"1 wythnos",two:"pythefnos",other:"{{count}} wythnos"},aboutXMonths:{one:"tua 1 mis",two:"tua 2 fis",other:"tua {{count}} mis"},xMonths:{one:"1 mis",two:"2 fis",other:"{{count}} mis"},aboutXYears:{one:"tua 1 flwyddyn",two:"tua 2 flynedd",other:"tua {{count}} mlynedd"},xYears:{one:"1 flwyddyn",two:"2 flynedd",other:"{{count}} mlynedd"},overXYears:{one:"dros 1 flwyddyn",two:"dros 2 flynedd",other:"dros {{count}} mlynedd"},almostXYears:{one:"bron 1 flwyddyn",two:"bron 2 flynedd",other:"bron {{count}} mlynedd"}}},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE, d MMMM yyyy",long:"d MMMM yyyy",medium:"d MMM yyyy",short:"dd/MM/yyyy"},r={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},o={full:"{{date}} 'am' {{time}}",long:"{{date}} 'am' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e,t,n,a){return i[e]}t.a=a;var i={lastWeek:"eeee 'diwethaf am' p",yesterday:"'ddoe am' p",today:"'heddiw am' p",tomorrow:"'yfory am' p",nextWeek:"eeee 'am' p",other:"P"}},function(e,t,n){"use strict";function a(e,t){var n=Number(e);if(n<20)switch(n){case 0:return n+"fed";case 1:return n+"af";case 2:return n+"ail";case 3:case 4:return n+"ydd";case 5:case 6:return n+"ed";case 7:case 8:case 9:case 10:case 12:case 15:case 18:return n+"fed";case 11:case 13:case 14:case 16:case 17:case 19:return n+"eg"}else if(n>=50&&n<=60||80===n||n>=100)return n+"fed";return n+"ain"}var i=n(3),r={narrow:["C","O"],abbreviated:["CC","OC"],wide:["Cyn Crist","Ar ôl Crist"]},o={narrow:["1","2","3","4"],abbreviated:["Ch1","Ch2","Ch3","Ch4"],wide:["Chwarter 1af","2ail chwarter","3ydd chwarter","4ydd chwarter"]},u={narrow:["I","Ch","Ma","E","Mi","Me","G","A","Md","H","T","Rh"],abbreviated:["Ion","Chwe","Maw","Ebr","Mai","Meh","Gor","Aws","Med","Hyd","Tach","Rhag"],wide:["Ionawr","Chwefror","Mawrth","Ebrill","Mai","Mehefin","Gorffennaf","Awst","Medi","Hydref","Tachwedd","Rhagfyr"]},s={narrow:["S","Ll","M","M","I","G","S"],short:["Su","Ll","Ma","Me","Ia","Gw","Sa"],abbreviated:["Sul","Llun","Maw","Mer","Iau","Gwe","Sad"],wide:["dydd Sul","dydd Llun","dydd Mawrth","dydd Mercher","dydd Iau","dydd Gwener","dydd Sadwrn"]},d={narrow:{am:"b",pm:"h",midnight:"hn",noon:"hd",morning:"bore",afternoon:"prynhawn",evening:"gyda'r nos",night:"nos"},abbreviated:{am:"yb",pm:"yh",midnight:"hanner nos",noon:"hanner dydd",morning:"bore",afternoon:"prynhawn",evening:"gyda'r nos",night:"nos"},wide:{am:"y.b.",pm:"y.h.",midnight:"hanner nos",noon:"hanner dydd",morning:"bore",afternoon:"prynhawn",evening:"gyda'r nos",night:"nos"}},c={narrow:{am:"b",pm:"h",midnight:"hn",noon:"hd",morning:"yn y bore",afternoon:"yn y prynhawn",evening:"gyda'r nos",night:"yn y nos"},abbreviated:{am:"yb",pm:"yh",midnight:"hanner nos",noon:"hanner dydd",morning:"yn y bore",afternoon:"yn y prynhawn",evening:"gyda'r nos",night:"yn y nos"},wide:{am:"y.b.",pm:"y.h.",midnight:"hanner nos",noon:"hanner dydd",morning:"yn y bore",afternoon:"yn y prynhawn",evening:"gyda'r nos",night:"yn y nos"}},l={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:u,defaultWidth:"wide"}),day:i.a({values:s,defaultWidth:"wide"}),dayPeriod:i.a({values:d,defaultWidth:"wide",formattingValues:c,defaultFormattingWidth:"wide"})};t.a=l},function(e,t,n){"use strict";var a=n(4),i=n(5),r=/^(\d+)(af|ail|ydd|ed|fed|eg|ain)?/i,o=/\d+/i,u={narrow:/^(c|o)/i,abbreviated:/^(c\.?\s?c\.?|o\.?\s?c\.?)/i,wide:/^(cyn christ|ar ôl crist|ar ol crist)/i},s={wide:[/^c/i,/^(ar ôl crist|ar ol crist)/i],any:[/^c/i,/^o/i]},d={narrow:/^[1234]/i,abbreviated:/^ch[1234]/i,wide:/^(chwarter 1af)|([234](ail|ydd)? chwarter)/i},c={any:[/1/i,/2/i,/3/i,/4/i]},l={narrow:/^(i|ch|m|e|g|a|h|t|rh)/i,abbreviated:/^(ion|chwe|maw|ebr|mai|meh|gor|aws|med|hyd|tach|rhag)/i,wide:/^(ionawr|chwefror|mawrth|ebrill|mai|mehefin|gorffennaf|awst|medi|hydref|tachwedd|rhagfyr)/i},m={narrow:[/^i/i,/^ch/i,/^m/i,/^e/i,/^m/i,/^m/i,/^g/i,/^a/i,/^m/i,/^h/i,/^t/i,/^rh/i],any:[/^io/i,/^ch/i,/^maw/i,/^e/i,/^mai/i,/^meh/i,/^g/i,/^a/i,/^med/i,/^h/i,/^t/i,/^rh/i]},f={narrow:/^(s|ll|m|i|g)/i,short:/^(su|ll|ma|me|ia|gw|sa)/i,abbreviated:/^(sul|llun|maw|mer|iau|gwe|sad)/i,wide:/^dydd (sul|llun|mawrth|mercher|iau|gwener|sadwrn)/i},h={narrow:[/^s/i,/^ll/i,/^m/i,/^m/i,/^i/i,/^g/i,/^s/i],wide:[/^dydd su/i,/^dydd ll/i,/^dydd ma/i,/^dydd me/i,/^dydd i/i,/^dydd g/i,/^dydd sa/i],any:[/^su/i,/^ll/i,/^ma/i,/^me/i,/^i/i,/^g/i,/^sa/i]},p={narrow:/^(b|h|hn|hd|(yn y|y|yr|gyda'r) (bore|prynhawn|nos|hwyr))/i,any:/^(y\.?\s?[bh]\.?|hanner nos|hanner dydd|(yn y|y|yr|gyda'r) (bore|prynhawn|nos|hwyr))/i},g={any:{am:/^b|(y\.?\s?b\.?)/i,pm:/^h|(y\.?\s?h\.?)|(yr hwyr)/i,midnight:/^hn|hanner nos/i,noon:/^hd|hanner dydd/i,morning:/bore/i,afternoon:/prynhawn/i,evening:/^gyda'r nos$/i,night:/blah/i}},v={ordinalNumber:a.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:i.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:i.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:i.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:i.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:i.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(506),i=n(507),r=n(508),o=n(509),u=n(510),s={code:"da",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:4}};t.a=s},function(e,t,n){"use strict";function a(e,t,n){n=n||{};var a;return a="string"==typeof i[e]?i[e]:1===t?i[e].one:i[e].other.replace("{{count}}",t),n.addSuffix?n.comparison>0?"om "+a:a+" siden":a}t.a=a;var i={lessThanXSeconds:{one:"mindre end ét sekund",other:"mindre end {{count}} sekunder"},xSeconds:{one:"1 sekund",other:"{{count}} sekunder"},halfAMinute:"ét halvt minut",lessThanXMinutes:{one:"mindre end ét minut",other:"mindre end {{count}} minutter"},xMinutes:{one:"1 minut",other:"{{count}} minutter"},aboutXHours:{one:"cirka 1 time",other:"cirka {{count}} timer"},xHours:{one:"1 time",other:"{{count}} timer"},xDays:{one:"1 dag",other:"{{count}} dage"},aboutXWeeks:{one:"cirka 1 uge",other:"cirka {{count}} uger"},xWeeks:{one:"1 uge",other:"{{count}} uger"},aboutXMonths:{one:"cirka 1 måned",other:"cirka {{count}} måneder"},xMonths:{one:"1 måned",other:"{{count}} måneder"},aboutXYears:{one:"cirka 1 år",other:"cirka {{count}} år"},xYears:{one:"1 år",other:"{{count}} år"},overXYears:{one:"over 1 år",other:"over {{count}} år"},almostXYears:{one:"næsten 1 år",other:"næsten {{count}} år"}}},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE 'den' d. MMMM y",long:"d. MMMM y",medium:"d. MMM y",short:"dd/MM/y"},r={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},o={full:"{{date}} 'kl'. {{time}}",long:"{{date}} 'kl'. {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e,t,n,a){return i[e]}t.a=a;var i={lastWeek:"'sidste' eeee 'kl.' p",yesterday:"'i går kl.' p",today:"'i dag kl.' p",tomorrow:"'i morgen kl.' p",nextWeek:"'på' eeee 'kl.' p",other:"P"}},function(e,t,n){"use strict";function a(e){return Number(e)+"."}var i=n(3),r={narrow:["fvt","vt"],abbreviated:["f.v.t.","v.t."],wide:["før vesterlandsk tidsregning","vesterlandsk tidsregning"]},o={narrow:["1","2","3","4"],abbreviated:["1. kvt.","2. kvt.","3. kvt.","4. kvt."],wide:["1. kvartal","2. kvartal","3. kvartal","4. kvartal"]},u={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["jan.","feb.","mar.","apr.","maj","jun.","jul.","aug.","sep.","okt.","nov.","dec."],wide:["januar","februar","marts","april","maj","juni","juli","august","september","oktober","november","december"]},s={narrow:["S","M","T","O","T","F","L"],short:["sø","ma","ti","on","to","fr","lø"],abbreviated:["søn.","man.","tir.","ons.","tor.","fre.","lør."],wide:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"]},d={narrow:{am:"a",pm:"p",midnight:"midnat",noon:"middag",morning:"morgen",afternoon:"eftermiddag",evening:"aften",night:"nat"},abbreviated:{am:"AM",pm:"PM",midnight:"midnat",noon:"middag",morning:"morgen",afternoon:"eftermiddag",evening:"aften",night:"nat"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnat",noon:"middag",morning:"morgen",afternoon:"eftermiddag",evening:"aften",night:"nat"}},c={narrow:{am:"a",pm:"p",midnight:"midnat",noon:"middag",morning:"om morgenen",afternoon:"om eftermiddagen",evening:"om aftenen",night:"om natten"},abbreviated:{am:"AM",pm:"PM",midnight:"midnat",noon:"middag",morning:"om morgenen",afternoon:"om eftermiddagen",evening:"om aftenen",night:"om natten"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnat",noon:"middag",morning:"om morgenen",afternoon:"om eftermiddagen",evening:"om aftenen",night:"om natten"}},l={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:u,defaultWidth:"wide"}),day:i.a({values:s,defaultWidth:"wide"}),dayPeriod:i.a({values:d,defaultWidth:"wide",formattingValues:c,defaultFormattingWidth:"wide"})};t.a=l},function(e,t,n){"use strict";var a=n(5),i=n(4),r=/^(\d+)(\.)?/i,o=/\d+/i,u={narrow:/^(fKr|fvt|eKr|vt)/i,abbreviated:/^(f\.Kr\.?|f\.v\.t\.?|e\.Kr\.?|v\.t\.)/i,wide:/^(f.Kr.|før vesterlandsk tidsregning|e.Kr.|vesterlandsk tidsregning)/i},s={any:[/^f/i,/^(v|e)/i]},d={narrow:/^[1234]/i,abbreviated:/^[1234]. kvt\./i,wide:/^[1234]\.? kvartal/i},c={any:[/1/i,/2/i,/3/i,/4/i]},l={narrow:/^[jfmasond]/i,abbreviated:/^(jan.|feb.|mar.|apr.|maj|jun.|jul.|aug.|sep.|okt.|nov.|dec.)/i,wide:/^(januar|februar|marts|april|maj|juni|juli|august|september|oktober|november|december)/i},m={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^maj/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},f={narrow:/^[smtofl]/i,short:/^(søn.|man.|tir.|ons.|tor.|fre.|lør.)/i,abbreviated:/^(søn|man|tir|ons|tor|fre|lør)/i,wide:/^(søndag|mandag|tirsdag|onsdag|torsdag|fredag|lørdag)/i},h={narrow:[/^s/i,/^m/i,/^t/i,/^o/i,/^t/i,/^f/i,/^l/i],any:[/^s/i,/^m/i,/^ti/i,/^o/i,/^to/i,/^f/i,/^l/i]},p={narrow:/^(a|p|midnat|middag|(om) (morgenen|eftermiddagen|aftenen|natten))/i,any:/^([ap]\.?\s?m\.?|midnat|middag|(om) (morgenen|eftermiddagen|aftenen|natten))/i},g={any:{am:/^a/i,pm:/^p/i,midnight:/midnat/i,noon:/middag/i,morning:/morgen/i,afternoon:/eftermiddag/i,evening:/aften/i,night:/nat/i}},v={ordinalNumber:i.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:a.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:a.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:a.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:a.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:a.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(512),i=n(513),r=n(514),o=n(515),u=n(516),s={code:"de",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:4}};t.a=s},function(e,t,n){"use strict";function a(e,t,n){n=n||{};var a,r=n.addSuffix?i[e].withPreposition:i[e].standalone;return a="string"==typeof r?r:1===t?r.one:r.other.replace("{{count}}",t),n.addSuffix?n.comparison>0?"in "+a:"vor "+a:a}t.a=a;var i={lessThanXSeconds:{standalone:{one:"weniger als eine Sekunde",other:"weniger als {{count}} Sekunden"},withPreposition:{one:"weniger als einer Sekunde",other:"weniger als {{count}} Sekunden"}},xSeconds:{standalone:{one:"eine Sekunde",other:"{{count}} Sekunden"},withPreposition:{one:"einer Sekunde",other:"{{count}} Sekunden"}},halfAMinute:{standalone:"eine halbe Minute",withPreposition:"einer halben Minute"},lessThanXMinutes:{standalone:{one:"weniger als eine Minute",other:"weniger als {{count}} Minuten"},withPreposition:{one:"weniger als einer Minute",other:"weniger als {{count}} Minuten"}},xMinutes:{standalone:{one:"eine Minute",other:"{{count}} Minuten"},withPreposition:{one:"einer Minute",other:"{{count}} Minuten"}},aboutXHours:{standalone:{one:"etwa eine Stunde",other:"etwa {{count}} Stunden"},withPreposition:{one:"etwa einer Stunde",other:"etwa {{count}} Stunden"}},xHours:{standalone:{one:"eine Stunde",other:"{{count}} Stunden"},withPreposition:{one:"einer Stunde",other:"{{count}} Stunden"}},xDays:{standalone:{one:"ein Tag",other:"{{count}} Tage"},withPreposition:{one:"einem Tag",other:"{{count}} Tagen"}},aboutXWeeks:{standalone:{one:"etwa ein Woche",other:"etwa {{count}} Wochen"},withPreposition:{one:"etwa einem Woche",other:"etwa {{count}} Wochen"}},xWeeks:{standalone:{one:"ein Woche",other:"{{count}} Wochen"},withPreposition:{one:"einem Woche",other:"{{count}} Wochen"}},aboutXMonths:{standalone:{one:"etwa ein Monat",other:"etwa {{count}} Monate"},withPreposition:{one:"etwa einem Monat",other:"etwa {{count}} Monaten"}},xMonths:{standalone:{one:"ein Monat",other:"{{count}} Monate"},withPreposition:{one:"einem Monat",other:"{{count}} Monaten"}},aboutXYears:{standalone:{one:"etwa ein Jahr",other:"etwa {{count}} Jahre"},withPreposition:{one:"etwa einem Jahr",other:"etwa {{count}} Jahren"}},xYears:{standalone:{one:"ein Jahr",other:"{{count}} Jahre"},withPreposition:{one:"einem Jahr",other:"{{count}} Jahren"}},overXYears:{standalone:{one:"mehr als ein Jahr",other:"mehr als {{count}} Jahre"},withPreposition:{one:"mehr als einem Jahr",other:"mehr als {{count}} Jahren"}},almostXYears:{standalone:{one:"fast ein Jahr",other:"fast {{count}} Jahre"},withPreposition:{one:"fast einem Jahr",other:"fast {{count}} Jahren"}}}},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE, do MMMM y",long:"do MMMM y",medium:"do MMM. y",short:"dd.MM.y"},r={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},o={full:"{{date}} 'um' {{time}}",long:"{{date}} 'um' {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e,t,n,a){return i[e]}t.a=a;var i={lastWeek:"'letzten' eeee 'um' p",yesterday:"'gestern um' p",today:"'heute um' p",tomorrow:"'morgen um' p",nextWeek:"eeee 'um' p",other:"P"}},function(e,t,n){"use strict";function a(e,t){return Number(e)+"."}var i=n(3),r={narrow:["v.Chr.","n.Chr."],abbreviated:["v.Chr.","n.Chr."],wide:["vor Christus","nach Christus"]},o={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1. Quartal","2. Quartal","3. Quartal","4. Quartal"]},u={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],wide:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"]},s={narrow:["S","M","D","M","D","F","S"],short:["So","Mo","Di","Mi","Do","Fr","Sa"],abbreviated:["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],wide:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"]},d={narrow:{am:"vm.",pm:"nm.",midnight:"Mitternacht",noon:"Mittag",morning:"Morgen",afternoon:"Nachm.",evening:"Abend",night:"Nacht"},abbreviated:{am:"vorm.",pm:"nachm.",midnight:"Mitternacht",noon:"Mittag",morning:"Morgen",afternoon:"Nachmittag",evening:"Abend",night:"Nacht"},wide:{am:"vormittags",pm:"nachmittags",midnight:"Mitternacht",noon:"Mittag",morning:"Morgen",afternoon:"Nachmittag",evening:"Abend",night:"Nacht"}},c={narrow:{am:"vm.",pm:"nm.",midnight:"Mitternacht",noon:"Mittag",morning:"morgens",afternoon:"nachm.",evening:"abends",night:"nachts"},abbreviated:{am:"vorm.",pm:"nachm.",midnight:"Mitternacht",noon:"Mittag",morning:"morgens",afternoon:"nachmittags",evening:"abends",night:"nachts"},wide:{am:"vormittags",pm:"nachmittags",midnight:"Mitternacht",noon:"Mittag",morning:"morgens",afternoon:"nachmittags",evening:"abends",night:"nachts"}},l={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:u,defaultWidth:"wide"}),day:i.a({values:s,defaultWidth:"wide"}),dayPeriod:i.a({values:d,defaultWidth:"wide",formattingValues:c,defaultFormattingWidth:"wide"})};t.a=l},function(e,t,n){"use strict";var a=n(4),i=n(5),r=/^(\d+)(\.)?/i,o=/\d+/i,u={narrow:/^(v\.? ?Chr\.?|n\.? ?Chr\.?)/i,abbreviated:/^(v\.? ?Chr\.?|n\.? ?Chr\.?)/i,wide:/^(vor Christus|vor unserer Zeitrechnung|nach Christus|unserer Zeitrechnung)/i},s={any:[/^v/i,/^n/i]},d={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](\.)? Quartal/i},c={any:[/1/i,/2/i,/3/i,/4/i]},l={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mär|apr|mai|jun|jul|aug|sep|okt|nov|dez)/i,wide:/^(januar|februar|märz|april|mai|juni|juli|august|september|oktober|november|dezember)/i},m={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mär/i,/^ap/i,/^mai/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},f={narrow:/^[smdmf]/i,short:/^(so|mo|di|mi|do|fr|sa)/i,abbreviated:/^(son?|mon?|die?|mit?|don?|fre?|sam?)\.?/i,wide:/^(sonntag|montag|dienstag|mittwoch|donnerstag|freitag|samstag)/i},h={any:[/^so/i,/^mo/i,/^di/i,/^mi/i,/^do/i,/^f/i,/^sa/i]},p={narrow:/^(vm\.?|nm\.?|Mitternacht|Mittag|morgens|nachm\.?|abends|nachts)/i,abbreviated:/^(vorm\.?|nachm\.?|Mitternacht|Mittag|morgens|nachm\.?|abends|nachts)/i,wide:/^(vormittags|nachmittags|Mitternacht|Mittag|morgens|nachmittags|abends|nachts)/i},g={any:{am:/^v/i,pm:/^n/i,midnight:/^Mitte/i,noon:/^Mitta/i,morning:/morgens/i,afternoon:/nachmittags/i,evening:/abends/i,night:/nachts/i}},v={ordinalNumber:a.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:i.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:i.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:i.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:i.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:i.a({matchPatterns:p,defaultMatchWidth:"wide",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(518),i=n(519),r=n(520),o=n(521),u=n(522),s={code:"el",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:4}};t.a=s},function(e,t,n){"use strict";function a(e,t,n){n=n||{};var a;return a="string"==typeof i[e]?i[e]:1===t?i[e].one:i[e].other.replace("{{count}}",t),n.addSuffix?n.comparison>0?"σε "+a:a+" πριν":a}t.a=a;var i={lessThanXSeconds:{one:"λιγότερο από ένα δευτερόλεπτο",other:"λιγότερο από {{count}} δευτερόλεπτα"},xSeconds:{one:"1 δευτερόλεπτο",other:"{{count}} δευτερόλεπτα"},halfAMinute:"μισό λεπτό",lessThanXMinutes:{one:"λιγότερο από ένα λεπτό",other:"λιγότερο από {{count}} λεπτά"},xMinutes:{one:"1 λεπτό",other:"{{count}} λεπτά"},aboutXHours:{one:"περίπου 1 ώρα",other:"περίπου {{count}} ώρες"},xHours:{one:"1 ώρα",other:"{{count}} ώρες"},xDays:{one:"1 ημέρα",other:"{{count}} ημέρες"},aboutXWeeks:{one:"περίπου 1 εβδομάδα",other:"περίπου {{count}} εβδομάδες"},xWeeks:{one:"1 εβδομάδα",other:"{{count}} εβδομάδες"},aboutXMonths:{one:"περίπου 1 μήνας",other:"περίπου {{count}} μήνες"},xMonths:{one:"1 μήνας",other:"{{count}} μήνες"},aboutXYears:{one:"περίπου 1 χρόνο",other:"περίπου {{count}} χρόνια"},xYears:{one:"1 χρόνο",other:"{{count}} χρόνια"},overXYears:{one:"πάνω από 1 χρόνο",other:"πάνω από {{count}} χρόνια"},almostXYears:{one:"περίπου 1 χρόνο",other:"περίπου {{count}} χρόνια"}}},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE, d MMMM y",long:"d MMMM y",medium:"d MMM y",short:"d/M/yy"},r={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},o={full:"{{date}} - {{time}}",long:"{{date}} - {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e,t,n,a){var r=i[e];return"function"==typeof r?r(t,n,a):r}t.a=a;var i={lastWeek:function(e){switch(e.getUTCDay()){case 6:return"'το προηγούμενο' eeee 'στις' p";default:return"'την προηγούμενη' eeee 'στις' p"}},yesterday:"'χθες στις' p",today:"'σήμερα στις' p",tomorrow:"'αύριο στις' p",nextWeek:"eeee 'στις' p",other:"P"}},function(e,t,n){"use strict";function a(e,t){var n,a=t||{},i=String(a.unit);return n="year"===i||"month"===i?"ος":"week"===i||"dayOfYear"===i||"day"===i||"hour"===i||"date"===i?"η":"ο",e+n}var i=n(3),r={narrow:["πΧ","μΧ"],abbreviated:["π.Χ.","μ.Χ."],wide:["προ Χριστού","μετά Χριστόν"]},o={narrow:["1","2","3","4"],abbreviated:["Τ1","Τ2","Τ3","Τ4"],wide:["1ο τρίμηνο","2ο τρίμηνο","3ο τρίμηνο","4ο τρίμηνο"]},u={narrow:["Ι","Φ","Μ","Α","Μ","Ι","Ι","Α","Σ","Ο","Ν","Δ"],abbreviated:["Ιαν","Φεβ","Μάρ","Απρ","Μάι","Ιούν","Ιούλ","Αύγ","Σεπ","Οκτ","Νοέ","Δεκ"],wide:["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"]},s={narrow:["Ι","Φ","Μ","Α","Μ","Ι","Ι","Α","Σ","Ο","Ν","Δ"],abbreviated:["Ιαν","Φεβ","Μαρ","Απρ","Μαΐ","Ιουν","Ιουλ","Αυγ","Σεπ","Οκτ","Νοε","Δεκ"],wide:["Ιανουαρίου","Φεβρουαρίου","Μαρτίου","Απριλίου","Μαΐου","Ιουνίου","Ιουλίου","Αυγούστου","Σεπτεμβρίου","Οκτωβρίου","Νοεμβρίου","Δεκεμβρίου"]},d={narrow:["Κ","Δ","T","Τ","Π","Π","Σ"],short:["Κυ","Δε","Τρ","Τε","Πέ","Πα","Σά"],abbreviated:["Κυρ","Δευ","Τρί","Τετ","Πέμ","Παρ","Σάβ"],wide:["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"]},c={narrow:{am:"πμ",pm:"μμ",midnight:"μεσάνυχτα",noon:"μεσημέρι",morning:"πρωί",afternoon:"απόγευμα",evening:"βράδυ",night:"νύχτα"},abbreviated:{am:"π.μ.",pm:"μ.μ.",midnight:"μεσάνυχτα",noon:"μεσημέρι",morning:"πρωί",afternoon:"απόγευμα",evening:"βράδυ",night:"νύχτα"},wide:{am:"π.μ.",pm:"μ.μ.",midnight:"μεσάνυχτα",noon:"μεσημέρι",morning:"πρωί",afternoon:"απόγευμα",evening:"βράδυ",night:"νύχτα"}},l={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:u,defaultWidth:"wide",formattingValues:s,defaultFormattingWidth:"wide"}),day:i.a({values:d,defaultWidth:"wide"}),dayPeriod:i.a({values:c,defaultWidth:"wide"})};t.a=l},function(e,t,n){"use strict";var a=n(4),i=n(5),r=/^(\d+)(ος|η|ο)?/i,o=/\d+/i,u={narrow:/^(πΧ|μΧ)/i,abbreviated:/^(π\.?\s?χ\.?|π\.?\s?κ\.?\s?χ\.?|μ\.?\s?χ\.?|κ\.?\s?χ\.?)/i,wide:/^(προ Χριστο(ύ|υ)|πριν απ(ό|ο) την Κοιν(ή|η) Χρονολογ(ί|ι)α|μετ(ά|α) Χριστ(ό|ο)ν|Κοιν(ή|η) Χρονολογ(ί|ι)α)/i},s={any:[/^π/i,/^(μ|κ)/i]},d={narrow:/^[1234]/i,abbreviated:/^τ[1234]/i,wide:/^[1234]ο? τρ(ί|ι)μηνο/i},c={any:[/1/i,/2/i,/3/i,/4/i]},l={narrow:/^[ιφμαμιιασονδ]/i,abbreviated:/^(ιαν|φεβ|μ[άα]ρ|απρ|μ[άα][ιΐ]|ιο[ύυ]ν|ιο[ύυ]λ|α[ύυ]γ|σεπ|οκτ|νο[έε]|δεκ)/i,wide:/^(μ[άα][ιΐ]|α[ύυ]γο[υύ]στ)(ος|ου)|(ιανου[άα]ρ|φεβρου[άα]ρ|μ[άα]ρτ|απρ[ίι]λ|ιο[ύυ]ν|ιο[ύυ]λ|σεπτ[έε]μβρ|οκτ[ώω]βρ|νο[έε]μβρ|δεκ[έε]μβρ)(ιος|ίου)/i},m={narrow:[/^ι/i,/^φ/i,/^μ/i,/^α/i,/^μ/i,/^ι/i,/^ι/i,/^α/i,/^σ/i,/^ο/i,/^ν/i,/^δ/i],any:[/^ια/i,/^φ/i,/^μ[άα]ρ/i,/^απ/i,/^μ[άα][ιΐ]/i,/^ιο[ύυ]ν/i,/^ιο[ύυ]λ/i,/^α[ύυ]/i,/^σ/i,/^ο/i,/^ν/i,/^δ/i]},f={narrow:/^[κδτπσ]/i,short:/^(κυ|δε|τρ|τε|π[εέ]|π[αά]|σ[αά])/i,abbreviated:/^(κυρ|δευ|τρι|τετ|πεμ|παρ|σαβ)/i,wide:/^(κυριακ(ή|η)|δευτ(έ|ε)ρα|τρ(ί|ι)τη|τετ(ά|α)ρτη|π(έ|ε)μπτη|παρασκευ(ή|η)|σ(ά|α)ββατο)/i},h={narrow:[/^κ/i,/^δ/i,/^τ/i,/^τ/i,/^π/i,/^π/i,/^σ/i],any:[/^κ/i,/^δ/i,/^τρ/i,/^τε/i,/^π[εέ]/i,/^π[αά]/i,/^σ/i]},p={narrow:/^(πμ|μμ|μεσ(ά|α)νυχτα|μεσημ(έ|ε)ρι|πρω(ί|ι)|απ(ό|ο)γευμα|βρ(ά|α)δυ|ν(ύ|υ)χτα)/i,any:/^([πμ]\.?\s?μ\.?|μεσ(ά|α)νυχτα|μεσημ(έ|ε)ρι|πρω(ί|ι)|απ(ό|ο)γευμα|βρ(ά|α)δυ|ν(ύ|υ)χτα)/i},g={any:{am:/^πμ|π\.\s?μ\./i,pm:/^μμ|μ\.\s?μ\./i,midnight:/^μεσάν/i,noon:/^μεσημ(έ|ε)/i,morning:/πρω(ί|ι)/i,afternoon:/απ(ό|ο)γευμα/i,evening:/βρ(ά|α)δυ/i,night:/ν(ύ|υ)χτα/i}},v={ordinalNumber:a.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:i.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:i.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:i.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:i.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:i.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(48),i=n(524),r=n(35),o=n(36),u=n(37),s={code:"en-AU",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:4}};t.a=s},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE, d MMMM yyyy",long:"d MMMM yyyy",medium:"d MMM yyyy",short:"dd/MM/yyyy"},r={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},o={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";var a=n(526),i=n(527),r=n(35),o=n(36),u=n(37),s={code:"en-CA",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:0,firstWeekContainsDate:1}};t.a=s},function(e,t,n){"use strict";function a(e,t,n){n=n||{};var a;return a="string"==typeof i[e]?i[e]:1===t?i[e].one:i[e].other.replace("{{count}}",t),n.addSuffix?n.comparison>0?"in "+a:a+" ago":a}t.a=a;var i={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"a second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"a minute",other:"{{count}} minutes"},aboutXHours:{one:"about an hour",other:"about {{count}} hours"},xHours:{one:"an hour",other:"{{count}} hours"},xDays:{one:"a day",other:"{{count}} days"},aboutXWeeks:{one:"about a week",other:"about {{count}} weeks"},xWeeks:{one:"a week",other:"{{count}} weeks"},aboutXMonths:{one:"about a month",other:"about {{count}} months"},xMonths:{one:"a month",other:"{{count}} months"},aboutXYears:{one:"about a year",other:"about {{count}} years"},xYears:{one:"a year",other:"{{count}} years"},overXYears:{one:"over a year",other:"over {{count}} years"},almostXYears:{one:"almost a year",other:"almost {{count}} years"}}},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE, MMMM do, yyyy",long:"MMMM do, yyyy",medium:"MMM d, yyyy",short:"yyyy-MM-dd"},r={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},o={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";var a=n(48),i=n(529),r=n(35),o=n(36),u=n(37),s={code:"en-GB",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:4}};t.a=s},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE, d MMMM yyyy",long:"d MMMM yyyy",medium:"d MMM yyyy",short:"dd/MM/yyyy"},r={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},o={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";var a=n(48),i=n(531),r=n(35),o=n(36),u=n(37),s={code:"en-IN",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:4}};t.a=s},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE, d MMMM yyyy",long:"d MMMM, yyyy",medium:"d MMM, yyyy",short:"dd/MM/yyyy"},r={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},o={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";var a=n(48),i=n(533),r=n(35),o=n(36),u=n(37),s={code:"en-NZ",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:4}};t.a=s},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE, d MMMM yyyy",long:"d MMMM yyyy",medium:"d MMM yyyy",short:"dd/MM/yyyy"},r={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},o={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";var a=n(535),i=n(536),r=n(537),o=n(538),u=n(539),s={code:"eo",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:4}};t.a=s},function(e,t,n){"use strict";function a(e,t,n){n=n||{};var a;return a="string"==typeof i[e]?i[e]:1===t?i[e].one:i[e].other.replace("{{count}}",t),n.addSuffix?n.comparison>0?"post "+a:"antaŭ "+a:a}t.a=a;var i={lessThanXSeconds:{one:"malpli ol sekundo",other:"malpli ol {{count}} sekundoj"},xSeconds:{one:"1 sekundo",other:"{{count}} sekundoj"},halfAMinute:"duonminuto",lessThanXMinutes:{one:"malpli ol minuto",other:"malpli ol {{count}} minutoj"},xMinutes:{one:"1 minuto",other:"{{count}} minutoj"},aboutXHours:{one:"proksimume 1 horo",other:"proksimume {{count}} horoj"},xHours:{one:"1 horo",other:"{{count}} horoj"},xDays:{one:"1 tago",other:"{{count}} tagoj"},aboutXMonths:{one:"proksimume 1 monato",other:"proksimume {{count}} monatoj"},xWeeks:{one:"1 semajno",other:"{{count}} semajnoj"},aboutXWeeks:{one:"proksimume 1 semajno",other:"proksimume {{count}} semajnoj"},xMonths:{one:"1 monato",other:"{{count}} monatoj"},aboutXYears:{one:"proksimume 1 jaro",other:"proksimume {{count}} jaroj"},xYears:{one:"1 jaro",other:"{{count}} jaroj"},overXYears:{one:"pli ol 1 jaro",other:"pli ol {{count}} jaroj"},almostXYears:{one:"preskaŭ 1 jaro",other:"preskaŭ {{count}} jaroj"}}},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE, do 'de' MMMM y",long:"y-MMMM-dd",medium:"y-MMM-dd",short:"yyyy-MM-dd"},r={full:"Ho 'horo kaj' m:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},o={any:"{{date}} {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"any"})};t.a=u},function(e,t,n){"use strict";function a(e,t,n,a){return i[e]}t.a=a;var i={lastWeek:"'pasinta' eeee 'je' p",yesterday:"'hieraŭ je' p",today:"'hodiaŭ je' p",tomorrow:"'morgaŭ je' p",nextWeek:"eeee 'je' p",other:"P"}},function(e,t,n){"use strict";function a(e){return Number(e)+"-a"}var i=n(3),r={narrow:["aK","pK"],abbreviated:["a.K.E.","p.K.E."],wide:["antaŭ Komuna Erao","Komuna Erao"]},o={narrow:["1","2","3","4"],abbreviated:["K1","K2","K3","K4"],wide:["1-a kvaronjaro","2-a kvaronjaro","3-a kvaronjaro","4-a kvaronjaro"]},u={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["jan","feb","mar","apr","maj","jun","jul","aŭg","sep","okt","nov","dec"],wide:["januaro","februaro","marto","aprilo","majo","junio","julio","aŭgusto","septembro","oktobro","novembro","decembro"]},s={narrow:["D","L","M","M","Ĵ","V","S"],short:["di","lu","ma","me","ĵa","ve","sa"],abbreviated:["dim","lun","mar","mer","ĵaŭ","ven","sab"],wide:["dimanĉo","lundo","mardo","merkredo","ĵaŭdo","vendredo","sabato"]},d={narrow:{am:"a",pm:"p",midnight:"noktomezo",noon:"tagmezo",morning:"matene",afternoon:"posttagmeze",evening:"vespere",night:"nokte"},abbreviated:{am:"a.t.m.",pm:"p.t.m.",midnight:"noktomezo",noon:"tagmezo",morning:"matene",afternoon:"posttagmeze",evening:"vespere",night:"nokte"},wide:{am:"antaŭtagmeze",pm:"posttagmeze",midnight:"noktomezo",noon:"tagmezo",morning:"matene",afternoon:"posttagmeze",evening:"vespere",night:"nokte"}},c={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:u,defaultWidth:"wide"}),day:i.a({values:s,defaultWidth:"wide"}),dayPeriod:i.a({values:d,defaultWidth:"wide"})};t.a=c},function(e,t,n){"use strict";var a=n(4),i=n(5),r=/^(\d+)(-?a)?/i,o=/\d+/i,u={narrow:/^([ap]k)/i,abbreviated:/^([ap]\.?\s?k\.?\s?e\.?)/i,wide:/^((antaǔ |post )?komuna erao)/i},s={any:[/^a/i,/^[kp]/i]},d={narrow:/^[1234]/i,abbreviated:/^k[1234]/i,wide:/^[1234](-?a)? kvaronjaro/i},c={any:[/1/i,/2/i,/3/i,/4/i]},l={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|maj|jun|jul|a(ŭ|ux|uh|u)g|sep|okt|nov|dec)/i,wide:/^(januaro|februaro|marto|aprilo|majo|junio|julio|a(ŭ|ux|uh|u)gusto|septembro|oktobro|novembro|decembro)/i},m={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^maj/i,/^jun/i,/^jul/i,/^a(u|ŭ)/i,/^s/i,/^o/i,/^n/i,/^d/i]},f={narrow:/^[dlmĵjvs]/i,short:/^(di|lu|ma|me|(ĵ|jx|jh|j)a|ve|sa)/i,abbreviated:/^(dim|lun|mar|mer|(ĵ|jx|jh|j)a(ŭ|ux|uh|u)|ven|sab)/i,wide:/^(diman(ĉ|cx|ch|c)o|lundo|mardo|merkredo|(ĵ|jx|jh|j)a(ŭ|ux|uh|u)do|vendredo|sabato)/i},h={narrow:[/^d/i,/^l/i,/^m/i,/^m/i,/^(j|ĵ)/i,/^v/i,/^s/i],any:[/^d/i,/^l/i,/^ma/i,/^me/i,/^(j|ĵ)/i,/^v/i,/^s/i]},p={narrow:/^([ap]|(posttagmez|noktomez|tagmez|maten|vesper|nokt)[eo])/i,abbreviated:/^([ap][.\s]?t[.\s]?m[.\s]?|(posttagmez|noktomez|tagmez|maten|vesper|nokt)[eo])/i,wide:/^(anta(ŭ|ux)tagmez|posttagmez|noktomez|tagmez|maten|vesper|nokt)[eo]/i},g={any:{am:/^a/i,pm:/^p/i,midnight:/^noktom/i,noon:/^t/i,morning:/^m/i,afternoon:/^posttagmeze/i,evening:/^v/i,night:/^n/i}},v={ordinalNumber:a.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:i.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:i.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:i.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:i.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:i.a({matchPatterns:p,defaultMatchWidth:"wide",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(541),i=n(542),r=n(543),o=n(544),u=n(545),s={code:"es",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:1}};t.a=s},function(e,t,n){"use strict";function a(e,t,n){n=n||{};var a;return a="string"==typeof i[e]?i[e]:1===t?i[e].one:i[e].other.replace("{{count}}",t),n.addSuffix?n.comparison>0?"en "+a:"hace "+a:a}t.a=a;var i={lessThanXSeconds:{one:"menos de un segundo",other:"menos de {{count}} segundos"},xSeconds:{one:"1 segundo",other:"{{count}} segundos"},halfAMinute:"medio minuto",lessThanXMinutes:{one:"menos de un minuto",other:"menos de {{count}} minutos"},xMinutes:{one:"1 minuto",other:"{{count}} minutos"},aboutXHours:{one:"alrededor de 1 hora",other:"alrededor de {{count}} horas"},xHours:{one:"1 hora",other:"{{count}} horas"},xDays:{one:"1 día",other:"{{count}} días"},aboutXWeeks:{one:"alrededor de 1 semana",other:"alrededor de {{count}} semanas"},xWeeks:{one:"1 semana",other:"{{count}} semanas"},aboutXMonths:{one:"alrededor de 1 mes",other:"alrededor de {{count}} meses"},xMonths:{one:"1 mes",other:"{{count}} meses"},aboutXYears:{one:"alrededor de 1 año",other:"alrededor de {{count}} años"},xYears:{one:"1 año",other:"{{count}} años"},overXYears:{one:"más de 1 año",other:"más de {{count}} años"},almostXYears:{one:"casi 1 año",other:"casi {{count}} años"}}},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE, d 'de' MMMM 'de' y",long:"d 'de' MMMM 'de' y",medium:"d MMM y",short:"dd/MM/y"},r={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},o={full:"{{date}} 'a las' {{time}}",long:"{{date}} 'a las' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e,t,n,a){return 1!==t.getUTCHours()?r[e]:i[e]}t.a=a;var i={lastWeek:"'el' eeee 'pasado a la' LT",yesterday:"'ayer a la' p",today:"'hoy a la' p",tomorrow:"'mañana a la' p",nextWeek:"eeee 'a la' p",other:"P"},r={lastWeek:"'el' eeee 'pasado a las' p",yesterday:"'ayer a las' p",today:"'hoy a las' p",tomorrow:"'mañana a las' p",nextWeek:"eeee 'a las' p",other:"P"}},function(e,t,n){"use strict";function a(e){return Number(e)+"º"}var i=n(3),r={narrow:["AC","DC"],abbreviated:["AC","DC"],wide:["antes de cristo","después de cristo"]},o={narrow:["1","2","3","4"],abbreviated:["T1","T2","T3","T4"],wide:["1º trimestre","2º trimestre","3º trimestre","4º trimestre"]},u={narrow:["e","f","m","a","m","j","j","a","s","o","n","d"],abbreviated:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],wide:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"]},s={narrow:["d","l","m","m","j","v","s"],short:["do","lu","ma","mi","ju","vi","sa"],abbreviated:["dom","lun","mar","mié","jue","vie","sáb"],wide:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"]},d={narrow:{am:"a",pm:"p",midnight:"mn",noon:"md",morning:"mañana",afternoon:"tarde",evening:"tarde",night:"noche"},abbreviated:{am:"AM",pm:"PM",midnight:"medianoche",noon:"mediodia",morning:"mañana",afternoon:"tarde",evening:"tarde",night:"noche"},wide:{am:"a.m.",pm:"p.m.",midnight:"medianoche",noon:"mediodia",morning:"mañana",afternoon:"tarde",evening:"tarde",night:"noche"}},c={narrow:{am:"a",pm:"p",midnight:"mn",noon:"md",morning:"de la mañana",afternoon:"de la tarde",evening:"de la tarde",night:"de la noche"},abbreviated:{am:"AM",pm:"PM",midnight:"medianoche",noon:"mediodia",morning:"de la mañana",afternoon:"de la tarde",evening:"de la tarde",night:"de la noche"},wide:{am:"a.m.",pm:"p.m.",midnight:"medianoche",noon:"mediodia",morning:"de la mañana",afternoon:"de la tarde",evening:"de la tarde",night:"de la noche"}},l={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:u,defaultWidth:"wide"}),day:i.a({values:s,defaultWidth:"wide"}),dayPeriod:i.a({values:d,defaultWidth:"wide",formattingValues:c,defaultFormattingWidth:"wide"})};t.a=l},function(e,t,n){"use strict";var a=n(4),i=n(5),r=/^(\d+)(º)?/i,o=/\d+/i,u={narrow:/^(ac|dc|a|d)/i,abbreviated:/^(a\.?\s?c\.?|a\.?\s?e\.?\s?c\.?|d\.?\s?c\.?|e\.?\s?c\.?)/i,wide:/^(antes de cristo|antes de la era com[uú]n|despu[eé]s de cristo|era com[uú]n)/i},s={any:[/^ac/i,/^dc/i],wide:[/^(antes de cristo|antes de la era com[uú]n)/i,/^(despu[eé]s de cristo|era com[uú]n)/i]},d={narrow:/^[1234]/i,abbreviated:/^T[1234]/i,wide:/^[1234](º)? trimestre/i},c={any:[/1/i,/2/i,/3/i,/4/i]},l={narrow:/^[efmajsond]/i,abbreviated:/^(ene|feb|mar|abr|may|jun|jul|ago|sep|oct|nov|dic)/i,wide:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i},m={narrow:[/^e/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^en/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i]},f={narrow:/^[dlmjvs]/i,short:/^(do|lu|ma|mi|ju|vi|sa)/i,abbreviated:/^(dom|lun|mar|mie|jue|vie|sab)/i,wide:/^(domingo|lunes|martes|mi[ée]rcoles|jueves|viernes|s[áa]bado)/i},h={narrow:[/^d/i,/^l/i,/^m/i,/^m/i,/^j/i,/^v/i,/^s/i],any:[/^do/i,/^lu/i,/^ma/i,/^mi/i,/^ju/i,/^vi/i,/^sa/i]},p={narrow:/^(a|p|mn|md|(de la|a las) (mañana|tarde|noche))/i,any:/^([ap]\.?\s?m\.?|medianoche|mediodia|(de la|a las) (mañana|tarde|noche))/i},g={any:{am:/^a/i,pm:/^p/i,midnight:/^mn/i,noon:/^md/i,morning:/mañana/i,afternoon:/tarde/i,evening:/tarde/i,night:/noche/i}},v={ordinalNumber:a.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:i.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:i.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:i.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:i.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:i.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(547),i=n(548),r=n(549),o=n(550),u=n(551),s={code:"et",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:4}};t.a=s},function(e,t,n){"use strict";function a(e,t,n){n=n||{};var a,r=n.addSuffix?i[e].withPreposition:i[e].standalone;return a="string"==typeof r?r:1===t?r.one:r.other.replace("{{count}}",t),n.addSuffix?n.comparison>0?a+" pärast":a+" eest":a}t.a=a;var i={lessThanXSeconds:{standalone:{one:"vähem kui üks sekund",other:"vähem kui {{count}} sekundit"},withPreposition:{one:"vähem kui ühe sekundi",other:"vähem kui {{count}} sekundi"}},xSeconds:{standalone:{one:"üks sekund",other:"{{count}} sekundit"},withPreposition:{one:"ühe sekundi",other:"{{count}} sekundi"}},halfAMinute:{standalone:"pool minutit",withPreposition:"poole minuti"},lessThanXMinutes:{standalone:{one:"vähem kui üks minut",other:"vähem kui {{count}} minutit"},withPreposition:{one:"vähem kui ühe minuti",other:"vähem kui {{count}} minuti"}},xMinutes:{standalone:{one:"üks minut",other:"{{count}} minutit"},withPreposition:{one:"ühe minuti",other:"{{count}} minuti"}},aboutXHours:{standalone:{one:"umbes üks tund",other:"umbes {{count}} tundi"},withPreposition:{one:"umbes ühe tunni",other:"umbes {{count}} tunni"}},xHours:{standalone:{one:"üks tund",other:"{{count}} tundi"},withPreposition:{one:"ühe tunni",other:"{{count}} tunni"}},xDays:{standalone:{one:"üks päev",other:"{{count}} päeva"},withPreposition:{one:"ühe päeva",other:"{{count}} päeva"}},aboutXWeeks:{standalone:{one:"umbes üks nädal",other:"umbes {{count}} nädalat"},withPreposition:{one:"umbes ühe nädala",other:"umbes {{count}} nädala"}},xWeeks:{standalone:{one:"üks nädal",other:"{{count}} nädalat"},withPreposition:{one:"ühe nädala",other:"{{count}} nädala"}},aboutXMonths:{standalone:{one:"umbes üks kuu",other:"umbes {{count}} kuud"},withPreposition:{one:"umbes ühe kuu",other:"umbes {{count}} kuu"}},xMonths:{standalone:{one:"üks kuu",other:"{{count}} kuud"},withPreposition:{one:"ühe kuu",other:"{{count}} kuu"}},aboutXYears:{standalone:{one:"umbes üks aasta",other:"umbes {{count}} aastat"},withPreposition:{one:"umbes ühe aasta",other:"umbes {{count}} aasta"}},xYears:{standalone:{one:"üks aasta",other:"{{count}} aastat"},withPreposition:{one:"ühe aasta",other:"{{count}} aasta"}},overXYears:{standalone:{one:"rohkem kui üks aasta",other:"rohkem kui {{count}} aastat"},withPreposition:{one:"rohkem kui ühe aasta",other:"rohkem kui {{count}} aasta"}},almostXYears:{standalone:{one:"peaaegu üks aasta",other:"peaaegu {{count}} aastat"},withPreposition:{one:"peaaegu ühe aasta",other:"peaaegu {{count}} aasta"}}}},function(e,t,n){"use strict";var a=n(2),i={full:"eeee, d. MMMM y",long:"d. MMMM y",medium:"d. MMM y",short:"dd.MM.y"},r={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},o={full:"{{date}} 'kell' {{time}}",long:"{{date}} 'kell' {{time}}",medium:"{{date}}. {{time}}",short:"{{date}}. {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e,t,n,a){return i[e]}t.a=a;var i={lastWeek:"'eelmine' eeee 'kell' p",yesterday:"'eile kell' p",today:"'täna kell' p",tomorrow:"'homme kell' p",nextWeek:"'järgmine' eeee 'kell' p",other:"P"}},function(e,t,n){"use strict";function a(e){return Number(e)+"."}var i=n(3),r={narrow:["e.m.a","m.a.j"],abbreviated:["e.m.a","m.a.j"],wide:["enne meie ajaarvamist","meie ajaarvamise järgi"]},o={narrow:["1","2","3","4"],abbreviated:["K1","K2","K3","K4"],wide:["1. kvartal","2. kvartal","3. kvartal","4. kvartal"]},u={narrow:["J","V","M","A","M","J","J","A","S","O","N","D"],abbreviated:["jaan","veebr","märts","apr","mai","juuni","juuli","aug","sept","okt","nov","dets"],wide:["jaanuar","veebruar","märts","aprill","mai","juuni","juuli","august","september","oktoober","november","detsember"]},s={narrow:["P","E","T","K","N","R","L"],short:["P","E","T","K","N","R","L"],abbreviated:["pühap.","esmasp.","teisip.","kolmap.","neljap.","reede.","laup."],wide:["pühapäev","esmaspäev","teisipäev","kolmapäev","neljapäev","reede","laupäev"]},d={narrow:{am:"AM",pm:"PM",midnight:"kesköö",noon:"keskpäev",morning:"hommik",afternoon:"pärastlõuna",evening:"õhtu",night:"öö"},abbreviated:{am:"AM",pm:"PM",midnight:"kesköö",noon:"keskpäev",morning:"hommik",afternoon:"pärastlõuna",evening:"õhtu",night:"öö"},wide:{am:"AM",pm:"PM",midnight:"kesköö",noon:"keskpäev",morning:"hommik",afternoon:"pärastlõuna",evening:"õhtu",night:"öö"}},c={narrow:{am:"AM",pm:"PM",midnight:"keskööl",noon:"keskpäeval",morning:"hommikul",afternoon:"pärastlõunal",evening:"õhtul",night:"öösel"},abbreviated:{am:"AM",pm:"PM",midnight:"keskööl",noon:"keskpäeval",morning:"hommikul",afternoon:"pärastlõunal",evening:"õhtul",night:"öösel"},wide:{am:"AM",pm:"PM",midnight:"keskööl",noon:"keskpäeval",morning:"hommikul",afternoon:"pärastlõunal",evening:"õhtul",night:"öösel"}},l={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:u,formattingValues:u,defaultWidth:"wide"}),day:i.a({values:s,formattingValues:s,defaultWidth:"wide"}),dayPeriod:i.a({values:d,formattingValues:c,defaultWidth:"wide"})};t.a=l},function(e,t,n){"use strict";var a=n(4),i=n(5),r=/^\d+\./i,o=/\d+/i,u={narrow:/^(e\.m\.a|m\.a\.j|eKr|pKr)/i,abbreviated:/^(e\.m\.a|m\.a\.j|eKr|pKr)/i,wide:/^(enne meie ajaarvamist|meie ajaarvamise järgi|enne Kristust|pärast Kristust)/i},s={any:[/^e/i,/^(m|p)/i]},d={narrow:/^[1234]/i,abbreviated:/^K[1234]/i,wide:/^[1234](\.)? kvartal/i},c={any:[/1/i,/2/i,/3/i,/4/i]},l={narrow:/^[jvmasond]/i,abbreviated:/^('jaan|veebr|märts|apr|mai|juuni|juuli|aug|sept|okt|nov|dets')/i,wide:/^('jaanuar|veebruar|märts|aprill|mai|juuni|juuli|august|september|oktoober|november|detsember')/i},m={narrow:[/^j/i,/^v/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^v/i,/^mär/i,/^ap/i,/^mai/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},f={narrow:/^[petknrl]/i,short:/^[petknrl]/i,abbreviated:/^(püh?|esm?|tei?|kolm?|nel?|ree?|laup?)\.?/i,wide:/^('pühapäev|esmaspäev|teisipäev|kolmapäev|neljapäev|reede|laupäev')/i},h={any:[/^p/i,/^e/i,/^t/i,/^k/i,/^n/i,/^r/i,/^l/i]},p={any:/^(am|pm|kesköö|keskpäev|hommik|pärastlõuna|õhtu|öö)/i},g={any:{am:/^a/i,pm:/^p/i,midnight:/^keskö/i,noon:/^keskp/i,morning:/hommik/i,afternoon:/pärastlõuna/i,evening:/õhtu/i,night:/öö/i}},v={ordinalNumber:a.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:i.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:i.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:i.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:i.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:i.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(553),i=n(554),r=n(555),o=n(556),u=n(557),s={code:"eu",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:1}};t.a=s},function(e,t,n){"use strict";function a(e,t,n){n=n||{};var a;return a="string"==typeof i[e]?i[e]:1===t?i[e].one:i[e].other.replace("{{count}}",t),n.addSuffix?n.comparison>0?"en "+a:"duela "+a:a}t.a=a;var i={lessThanXSeconds:{one:"segundo bat baino gutxiago",other:"{{count}} segundo baino gutxiago"},xSeconds:{one:"1 segundo",other:"{{count}} segundo"},halfAMinute:"minutu erdi",lessThanXMinutes:{one:"minutu bat baino gutxiago",other:"{{count}} minutu baino gutxiago"},xMinutes:{one:"1 minutu",other:"{{count}} minutu"},aboutXHours:{one:"1 ordu gutxi gorabehera",other:"{{count}} ordu gutxi gorabehera"},xHours:{one:"1 ordu",other:"{{count}} ordu"},xDays:{one:"1 egun",other:"{{count}} egun"},aboutXWeeks:{one:"aste 1 inguru",other:"{{count}} aste inguru"},xWeeks:{one:"1 aste",other:"{{count}} astean"},aboutXMonths:{one:"1 hilabete gutxi gorabehera",other:"{{count}} hilabete gutxi gorabehera"},xMonths:{one:"1 hilabete",other:"{{count}} hilabete"},aboutXYears:{one:"1 urte gutxi gorabehera",other:"{{count}} urte gutxi gorabehera"},xYears:{one:"1 urte",other:"{{count}} urte"},overXYears:{one:"1 urte baino gehiago",other:"{{count}} urte baino gehiago"},almostXYears:{one:"ia 1 urte",other:"ia {{count}} urte"}}},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE, d 'de' MMMM y",long:"d 'de' MMMM y",medium:"d MMM y",short:"dd/MM/y"},r={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},o={full:"{{date}} 'tan' {{time}}",long:"{{date}} 'tan' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e,t,n,a){return 1!==t.getUTCHours()?r[e]:i[e]}t.a=a;var i={lastWeek:"'joan den' eeee, LT",yesterday:"'atzo,' p",today:"'gaur,' p",tomorrow:"'bihar,' p",nextWeek:"eeee, p",other:"P"},r={lastWeek:"'joan den' eeee, p",yesterday:"'atzo,' p",today:"'gaur,' p",tomorrow:"'bihar,' p",nextWeek:"eeee, p",other:"P"}},function(e,t,n){"use strict";function a(e){return Number(e)+"."}var i=n(3),r={narrow:["k.a.","k.o."],abbreviated:["k.a.","k.o."],wide:["kristo aurretik","kristo ondoren"]},o={narrow:["1","2","3","4"],abbreviated:["1H","2H","3H","4H"],wide:["1. hiruhilekoa","2. hiruhilekoa","3. hiruhilekoa","4. hiruhilekoa"]},u={narrow:["u","o","m","a","m","e","u","a","i","u","a","a"],abbreviated:["urt","ots","mar","api","mai","eka","uzt","abu","ira","urr","aza","abe"],wide:["urtarrila","otsaila","martxoa","apirila","maiatza","ekaina","uztaila","abuztua","iraila","urria","azaroa","abendua"]},s={narrow:["i","a","a","a","o","o","l"],short:["ig","al","as","az","og","or","lr"],abbreviated:["iga","ast","ast","ast","ost","ost","lar"],wide:["igandea","astelehena","asteartea","asteazkena","osteguna","ostirala","larunbata"]},d={narrow:{am:"a",pm:"p",midnight:"ge",noon:"eg",morning:"goiza",afternoon:"arratsaldea",evening:"arratsaldea",night:"gaua"},abbreviated:{am:"AM",pm:"PM",midnight:"gauerdia",noon:"eguerdia",morning:"goiza",afternoon:"arratsaldea",evening:"arratsaldea",night:"gaua"},wide:{am:"a.m.",pm:"p.m.",midnight:"gauerdia",noon:"eguerdia",morning:"goiza",afternoon:"arratsaldea",evening:"arratsaldea",night:"gaua"}},c={narrow:{am:"a",pm:"p",midnight:"ge",noon:"eg",morning:"goizean",afternoon:"arratsaldean",evening:"arratsaldean",night:"gauean"},abbreviated:{am:"AM",pm:"PM",midnight:"gauerdia",noon:"eguerdia",morning:"goizean",afternoon:"arratsaldean",evening:"arratsaldean",night:"gauean"},wide:{am:"a.m.",pm:"p.m.",midnight:"gauerdia",noon:"eguerdia",morning:"goizean",afternoon:"arratsaldean",evening:"arratsaldean",night:"gauean"}},l={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:u,defaultWidth:"wide"}),day:i.a({values:s,defaultWidth:"wide"}),dayPeriod:i.a({values:d,defaultWidth:"wide",formattingValues:c,defaultFormattingWidth:"wide"})};t.a=l},function(e,t,n){"use strict";var a=n(4),i=n(5),r=/^(\d+)(.)?/i,o=/\d+/i,u={narrow:/^(k.a.|k.o.)/i,abbreviated:/^(k.a.|k.o.)/i,wide:/^(kristo aurretik|kristo ondoren)/i},s={narrow:[/^k.a./i,/^k.o./i],abbreviated:[/^(k.a.)/i,/^(k.o.)/i],wide:[/^(kristo aurretik)/i,/^(kristo ondoren)/i]},d={narrow:/^[1234]/i,abbreviated:/^[1234]H/i,wide:/^[1234](.)? hiruhilekoa/i},c={any:[/1/i,/2/i,/3/i,/4/i]},l={narrow:/^[uomaei]/i,abbreviated:/^(urt|ots|mar|api|mai|eka|uzt|abu|ira|urr|aza|abe)/i,wide:/^(urtarrila|otsaila|martxoa|apirila|maiatza|ekaina|uztaila|abuztua|iraila|urria|azaroa|abendua)/i},m={narrow:[/^u/i,/^o/i,/^m/i,/^a/i,/^m/i,/^e/i,/^u/i,/^a/i,/^i/i,/^u/i,/^a/i,/^a/i],any:[/^urt/i,/^ots/i,/^mar/i,/^api/i,/^mai/i,/^eka/i,/^uzt/i,/^abu/i,/^ira/i,/^urr/i,/^aza/i,/^abe/i]},f={narrow:/^[iaol]/i,short:/^(ig|al|as|az|og|or|lr)/i,abbreviated:/^(iga|ast|ast|ast|ost|ost|lar)/i,wide:/^(igandea|astelehena|asteartea|asteazkena|osteguna|ostirala|larunbata)/i},h={narrow:[/^i/i,/^a/i,/^a/i,/^a/i,/^o/i,/^o/i,/^l/i],short:[/^ig/i,/^al/i,/^as/i,/^az/i,/^og/i,/^or/i,/^lr/i],abbreviated:[/^iga/i,/^ast/i,/^ast/i,/^ast/i,/^ost/i,/^ost/i,/^lar/i],wide:[/^igandea/i,/^astelehena/i,/^asteartea/i,/^asteazkena/i,/^osteguna/i,/^ostirala/i,/^larunbata/i]},p={narrow:/^(a|p|ge|eg|((goiza|goizean)|arratsaldea|(gaua|gauean)))/i,any:/^([ap]\.?\s?m\.?|gauerdia|eguerdia|((goiza|goizean)|arratsaldea|(gaua|gauean)))/i},g={narrow:{am:/^a/i,pm:/^p/i,midnight:/^ge/i,noon:/^eg/i,morning:/goiz/i,afternoon:/arratsaldea/i,evening:/arratsaldea/i,night:/gau/i},any:{am:/^a/i,pm:/^p/i,midnight:/^gauerdia/i,noon:/^eguerdia/i,morning:/goiz/i,afternoon:/arratsaldea/i,evening:/arratsaldea/i,night:/gau/i}},v={ordinalNumber:a.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:i.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:i.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:i.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:i.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:i.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(559),i=n(560),r=n(561),o=n(562),u=n(563),s={code:"fa-IR",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:0,firstWeekContainsDate:1}};t.a=s},function(e,t,n){"use strict";function a(e,t,n){n=n||{};var a;return a="string"==typeof i[e]?i[e]:1===t?i[e].one:i[e].other.replace("{{count}}",t),n.addSuffix?n.comparison>0?"در "+a:a+" قبل":a}t.a=a;var i={lessThanXSeconds:{one:"کمتر از یک ثانیه",other:"کمتر از {{count}} ثانیه"},xSeconds:{one:"1 ثانیه",other:"{{count}} ثانیه"},halfAMinute:"نیم دقیقه",lessThanXMinutes:{one:"کمتر از یک دقیقه",other:"کمتر از {{count}} دقیقه"},xMinutes:{one:"1 دقیقه",other:"{{count}} دقیقه"},aboutXHours:{one:"حدود 1 ساعت",other:"حدود {{count}} ساعت"},xHours:{one:"1 ساعت",other:"{{count}} ساعت"},xDays:{one:"1 روز",other:"{{count}} روز"},aboutXWeeks:{one:"حدود 1 هفته",other:"حدود {{count}} هفته"},xWeeks:{one:"1 هفته",other:"{{count}} هفته"},aboutXMonths:{one:"حدود 1 ماه",other:"حدود {{count}} ماه"},xMonths:{one:"1 ماه",other:"{{count}} ماه"},aboutXYears:{one:"حدود 1 سال",other:"حدود {{count}} سال"},xYears:{one:"1 سال",other:"{{count}} سال"},overXYears:{one:"بیشتر از 1 سال",other:"بیشتر از {{count}} سال"},almostXYears:{one:"نزدیک 1 سال",other:"نزدیک {{count}} سال"}}},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE do MMMM y",long:"do MMMM y",medium:"d MMM y",short:"yyyy/MM/dd"},r={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},o={full:"{{date}} 'در' {{time}}",long:"{{date}} 'در' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e,t,n,a){return i[e]}t.a=a;var i={lastWeek:"eeee 'گذشته در' p",yesterday:"'دیروز در' p",today:"'امروز در' p",tomorrow:"'فردا در' p",nextWeek:"eeee 'در' p",other:"P"}},function(e,t,n){"use strict";function a(e){return String(e)}var i=n(3),r={narrow:["ق","ب"],abbreviated:["ق.م.","ب.م."],wide:["قبل از میلاد","بعد از میلاد"]},o={narrow:["1","2","3","4"],abbreviated:["س‌م1","س‌م2","س‌م3","س‌م4"],wide:["سه‌ماهه 1","سه‌ماهه 2","سه‌ماهه 3","سه‌ماهه 4"]},u={narrow:["ژ","ف","م","آ","م","ج","ج","آ","س","ا","ن","د"],abbreviated:["ژانـ","فور","مارس","آپر","می","جون","جولـ","آگو","سپتـ","اکتـ","نوامـ","دسامـ"],wide:["ژانویه","فوریه","مارس","آپریل","می","جون","جولای","آگوست","سپتامبر","اکتبر","نوامبر","دسامبر"]},s={narrow:["ی","د","س","چ","پ","ج","ش"],short:["1ش","2ش","3ش","4ش","5ش","ج","ش"],abbreviated:["یکشنبه","دوشنبه","سه‌شنبه","چهارشنبه","پنجشنبه","جمعه","شنبه"],wide:["یکشنبه","دوشنبه","سه‌شنبه","چهارشنبه","پنجشنبه","جمعه","شنبه"]},d={narrow:{am:"ق",pm:"ب",midnight:"ن",noon:"ظ",morning:"ص",afternoon:"ب.ظ.",evening:"ع",night:"ش"},abbreviated:{am:"ق.ظ.",pm:"ب.ظ.",midnight:"نیمه‌شب",noon:"ظهر",morning:"صبح",afternoon:"بعدازظهر",evening:"عصر",night:"شب"},wide:{am:"قبل‌ازظهر",pm:"بعدازظهر",midnight:"نیمه‌شب",noon:"ظهر",morning:"صبح",afternoon:"بعدازظهر",evening:"عصر",night:"شب"}},c={narrow:{am:"ق",pm:"ب",midnight:"ن",noon:"ظ",morning:"ص",afternoon:"ب.ظ.",evening:"ع",night:"ش"},abbreviated:{am:"ق.ظ.",pm:"ب.ظ.",midnight:"نیمه‌شب",noon:"ظهر",morning:"صبح",afternoon:"بعدازظهر",evening:"عصر",night:"شب"},wide:{am:"قبل‌ازظهر",pm:"بعدازظهر",midnight:"نیمه‌شب",noon:"ظهر",morning:"صبح",afternoon:"بعدازظهر",evening:"عصر",night:"شب"}},l={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:u,defaultWidth:"wide"}),day:i.a({values:s,defaultWidth:"wide"}),dayPeriod:i.a({values:d,defaultWidth:"wide",formattingValues:c,defaultFormattingWidth:"wide"})};t.a=l},function(e,t,n){"use strict";var a=n(4),i=n(5),r=/^(\d+)(th|st|nd|rd)?/i,o=/\d+/i,u={narrow:/^(ق|ب)/i,abbreviated:/^(ق\.?\s?م\.?|ق\.?\s?د\.?\s?م\.?|م\.?\s?|د\.?\s?م\.?)/i,wide:/^(قبل از میلاد|قبل از دوران مشترک|میلادی|دوران مشترک|بعد از میلاد)/i},s={any:[/^قبل/i,/^بعد/i]},d={narrow:/^[1234]/i,abbreviated:/^س‌م[1234]/i,wide:/^سه‌ماهه [1234]/i},c={any:[/1/i,/2/i,/3/i,/4/i]},l={narrow:/^[جژفمآاماسند]/i,abbreviated:/^(جنو|ژانـ|ژانویه|فوریه|فور|مارس|آوریل|آپر|مه|می|ژوئن|جون|جول|جولـ|ژوئیه|اوت|آگو|سپتمبر|سپتامبر|اکتبر|اکتوبر|نوامبر|نوامـ|دسامبر|دسامـ|دسم)/i,wide:/^(ژانویه|جنوری|فبروری|فوریه|مارچ|مارس|آپریل|اپریل|ایپریل|آوریل|مه|می|ژوئن|جون|جولای|ژوئیه|آگست|اگست|آگوست|اوت|سپتمبر|سپتامبر|اکتبر|اکتوبر|نوامبر|نومبر|دسامبر|دسمبر)/i},m={narrow:[/^(ژ|ج)/i,/^ف/i,/^م/i,/^(آ|ا)/i,/^م/i,/^(ژ|ج)/i,/^(ج|ژ)/i,/^(آ|ا)/i,/^س/i,/^ا/i,/^ن/i,/^د/i],any:[/^ژا/i,/^ف/i,/^ما/i,/^آپ/i,/^(می|مه)/i,/^(ژوئن|جون)/i,/^(ژوئی|جول)/i,/^(اوت|آگ)/i,/^س/i,/^(اوک|اک)/i,/^ن/i,/^د/i]},f={narrow:/^[شیدسچپج]/i,short:/^(ش|ج|1ش|2ش|3ش|4ش|5ش)/i,abbreviated:/^(یکشنبه|دوشنبه|سه‌شنبه|چهارشنبه|پنج‌شنبه|جمعه|شنبه)/i,wide:/^(یکشنبه|دوشنبه|سه‌شنبه|چهارشنبه|پنج‌شنبه|جمعه|شنبه)/i},h={narrow:[/^ی/i,/^دو/i,/^س/i,/^چ/i,/^پ/i,/^ج/i,/^ش/i],any:[/^(ی|1ش|یکشنبه)/i,/^(د|2ش|دوشنبه)/i,/^(س|3ش|سه‌شنبه)/i,/^(چ|4ش|چهارشنبه)/i,/^(پ|5ش|پنجشنبه)/i,/^(ج|جمعه)/i,/^(ش|شنبه)/i]},p={narrow:/^(ب|ق|ن|ظ|ص|ب.ظ.|ع|ش)/i,abbreviated:/^(ق.ظ.|ب.ظ.|نیمه‌شب|ظهر|صبح|بعدازظهر|عصر|شب)/i,wide:/^(قبل‌ازظهر|نیمه‌شب|ظهر|صبح|بعدازظهر|عصر|شب)/i},g={any:{am:/^(ق|ق.ظ.|قبل‌ازظهر)/i,pm:/^(ب|ب.ظ.|بعدازظهر)/i,midnight:/^(‌نیمه‌شب|ن)/i,noon:/^(ظ|ظهر)/i,morning:/(ص|صبح)/i,afternoon:/(ب|ب.ظ.|بعدازظهر)/i,evening:/(ع|عصر)/i,night:/(ش|شب)/i}},v={ordinalNumber:a.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:i.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:i.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:i.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:i.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:i.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(565),i=n(566),r=n(567),o=n(568),u=n(569),s={code:"fi",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:4}};t.a=s},function(e,t,n){"use strict";function a(e){return e.replace(/sekuntia?/,"sekunnin")}function i(e){return e.replace(/minuuttia?/,"minuutin")}function r(e){return e.replace(/tuntia?/,"tunnin")}function o(e){return e.replace(/päivää?/,"päivän")}function u(e){return e.replace(/(viikko|viikkoa)/,"viikon")}function s(e){return e.replace(/(kuukausi|kuukautta)/,"kuukauden")}function d(e){return e.replace(/(vuosi|vuotta)/,"vuoden")}function c(e,t,n){n=n||{};var a=l[e],i=1===t?a.one:a.other.replace("{{count}}",t);return n.addSuffix?n.comparison>0?a.futureTense(i)+" kuluttua":i+" sitten":i}t.a=c;var l={lessThanXSeconds:{one:"alle sekunti",other:"alle {{count}} sekuntia",futureTense:a},xSeconds:{one:"sekunti",other:"{{count}} sekuntia",futureTense:a},halfAMinute:{one:"puoli minuuttia",other:"puoli minuuttia",futureTense:function(e){return"puolen minuutin"}},lessThanXMinutes:{one:"alle minuutti",other:"alle {{count}} minuuttia",futureTense:i},xMinutes:{one:"minuutti",other:"{{count}} minuuttia",futureTense:i},aboutXHours:{one:"noin tunti",other:"noin {{count}} tuntia",futureTense:r},xHours:{one:"tunti",other:"{{count}} tuntia",futureTense:r},xDays:{one:"päivä",other:"{{count}} päivää",futureTense:o},aboutXWeeks:{one:"noin viikko",other:"noin {{count}} viikkoa",futureTense:u},xWeeks:{one:"viikko",other:"{{count}} viikkoa",futureTense:u},aboutXMonths:{one:"noin kuukausi",other:"noin {{count}} kuukautta",futureTense:s},xMonths:{one:"kuukausi",other:"{{count}} kuukautta",futureTense:s},aboutXYears:{one:"noin vuosi",other:"noin {{count}} vuotta",futureTense:d},xYears:{one:"vuosi",other:"{{count}} vuotta",futureTense:d},overXYears:{one:"yli vuosi",other:"yli {{count}} vuotta",futureTense:d},almostXYears:{one:"lähes vuosi",other:"lähes {{count}} vuotta",futureTense:d}}},function(e,t,n){"use strict";var a=n(2),i={full:"eeee d. MMMM y",long:"d. MMMM y",medium:"d. MMM y",short:"d.M.y"},r={full:"HH.mm.ss zzzz",long:"HH.mm.ss z",medium:"HH.mm.ss",short:"HH.mm"},o={full:"{{date}} 'klo' {{time}}",long:"{{date}} 'klo' {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e,t,n,a){return i[e]}t.a=a;var i={lastWeek:"'viime' eeee 'klo' p",yesterday:"'eilen klo' p",today:"'tänään klo' p",tomorrow:"'huomenna klo' p",nextWeek:"'ensi' eeee 'klo' p",other:"P"}},function(e,t,n){"use strict";function a(e){return Number(e)+"."}var i=n(3),r={narrow:["eaa.","jaa."],abbreviated:["eaa.","jaa."],wide:["ennen ajanlaskun alkua","jälkeen ajanlaskun alun"]},o={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1. kvartaali","2. kvartaali","3. kvartaali","4. kvartaali"]},u={narrow:["T","H","M","H","T","K","H","E","S","L","M","J"],abbreviated:["tammi","helmi","maalis","huhti","touko","kesä","heinä","elo","syys","loka","marras","joulu"],wide:["tammikuu","helmikuu","maaliskuu","huhtikuu","toukokuu","kesäkuu","heinäkuu","elokuu","syyskuu","lokakuu","marraskuu","joulukuu"]},s={narrow:u.narrow,abbreviated:u.abbreviated,wide:u.wide.map(function(e){return e+"ta"})},d={narrow:["S","M","T","K","T","P","L"],short:["su","ma","ti","ke","to","pe","la"],abbreviated:["sunn.","maan.","tiis.","kesk.","torst.","perj.","la"],wide:["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"]},c={narrow:d.narrow,short:d.short,abbreviated:d.abbreviated,wide:d.wide.map(function(e){return e+"na"})},l={narrow:{am:"ap",pm:"ip",midnight:"keskiyö",noon:"keskipäivä",morning:"ap",afternoon:"ip",evening:"illalla",night:"yöllä"},abbreviated:{am:"ap",pm:"ip",midnight:"keskiyö",noon:"keskipäivä",morning:"ap",afternoon:"ip",evening:"illalla",night:"yöllä"},wide:{am:"ap",pm:"ip",midnight:"keskiyöllä",noon:"keskipäivällä",morning:"aamupäivällä",afternoon:"iltapäivällä",evening:"illalla",night:"yöllä"}},m={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:u,formattingValues:s,defaultWidth:"wide"}),day:i.a({values:d,formattingValues:c,defaultWidth:"wide"}),dayPeriod:i.a({values:l,defaultWidth:"wide"})};t.a=m},function(e,t,n){"use strict";var a=n(4),i=n(5),r=/^(\d+)(\.)/i,o=/\d+/i,u={narrow:/^(e|j)/i,abbreviated:/^(eaa.|jaa.)/i,wide:/^(ennen ajanlaskun alkua|jälkeen ajanlaskun alun)/i},s={any:[/^e/i,/^j/i]},d={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234]\.? kvartaali/i},c={any:[/1/i,/2/i,/3/i,/4/i]},l={narrow:/^[thmkeslj]/i,abbreviated:/^(tammi|helmi|maalis|huhti|touko|kesä|heinä|elo|syys|loka|marras|joulu)/i,wide:/^(tammikuu|helmikuu|maaliskuu|huhtikuu|toukokuu|kesäkuu|heinäkuu|elokuu|syyskuu|lokakuu|marraskuu|joulukuu)(ta)?/i},m={narrow:[/^t/i,/^h/i,/^m/i,/^h/i,/^t/i,/^k/i,/^h/i,/^e/i,/^s/i,/^l/i,/^m/i,/^j/i],any:[/^ta/i,/^hel/i,/^maa/i,/^hu/i,/^to/i,/^k/i,/^hei/i,/^e/i,/^s/i,/^l/i,/^mar/i,/^j/i]},f={narrow:/^[smtkpl]/i,short:/^(su|ma|ti|ke|to|pe|la)/i,abbreviated:/^(sunn.|maan.|tiis.|kesk.|torst.|perj.|la)/i,wide:/^(sunnuntai|maanantai|tiistai|keskiviikko|torstai|perjantai|lauantai)(na)?/i},h={narrow:[/^s/i,/^m/i,/^t/i,/^k/i,/^t/i,/^p/i,/^l/i],any:[/^s/i,/^m/i,/^ti/i,/^k/i,/^to/i,/^p/i,/^l/i]},p={narrow:/^(ap|ip|keskiyö|keskipäivä|aamupäivällä|iltapäivällä|illalla|yöllä)/i,any:/^(ap|ip|keskiyöllä|keskipäivällä|aamupäivällä|iltapäivällä|illalla|yöllä)/i},g={any:{am:/^ap/i,pm:/^ip/i,midnight:/^keskiyö/i,noon:/^keskipäivä/i,morning:/aamupäivällä/i,afternoon:/iltapäivällä/i,evening:/illalla/i,night:/yöllä/i}},v={ordinalNumber:a.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:i.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:i.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:i.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:i.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:i.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(187),i=n(571),r=n(188),o=n(189),u=n(190),s={code:"fr",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:1}};t.a=s},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE d MMMM y",long:"d MMMM y",medium:"d MMM y",short:"dd/MM/y"},r={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},o={full:"{{date}} 'à' {{time}}",long:"{{date}} 'à' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";var a=n(187),i=n(188),r=n(189),o=n(190),u=n(573),s={code:"fr-CA",formatDistance:a.a,formatLong:u.a,formatRelative:i.a,localize:r.a,match:o.a,options:{weekStartsOn:0,firstWeekContainsDate:1}};t.a=s},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE d MMMM y",long:"d MMMM y",medium:"d MMM y",short:"yy-MM-dd"},r={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},o={full:"{{date}} 'à' {{time}}",long:"{{date}} 'à' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";var a=n(575),i=n(576),r=n(577),o=n(578),u=n(579),s={code:"fr-CH",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:4}};t.a=s},function(e,t,n){"use strict";function a(e,t,n){n=n||{};var a;return a="string"==typeof i[e]?i[e]:1===t?i[e].one:i[e].other.replace("{{count}}",t),n.addSuffix?n.comparison>0?"dans "+a:"il y a "+a:a}t.a=a;var i={lessThanXSeconds:{one:"moins d’une seconde",other:"moins de {{count}} secondes"},xSeconds:{one:"1 seconde",other:"{{count}} secondes"},halfAMinute:"30 secondes",lessThanXMinutes:{one:"moins d’une minute",other:"moins de {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"environ 1 heure",other:"environ {{count}} heures"},xHours:{one:"1 heure",other:"{{count}} heures"},xDays:{one:"1 jour",other:"{{count}} jours"},aboutXWeeks:{one:"environ 1 semaine",other:"environ {{count}} semaines"},xWeeks:{one:"1 semaine",other:"{{count}} semaines"},aboutXMonths:{one:"environ 1 mois",other:"environ {{count}} mois"},xMonths:{one:"1 mois",other:"{{count}} mois"},aboutXYears:{one:"environ 1 an",other:"environ {{count}} ans"},xYears:{one:"1 an",other:"{{count}} ans"},overXYears:{one:"plus d’un an",other:"plus de {{count}} ans"},almostXYears:{one:"presqu’un an",other:"presque {{count}} ans"}}},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE d MMMM y",long:"d MMMM y",medium:"d MMM y",short:"dd.MM.y"},r={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},o={full:"{{date}} 'à' {{time}}",long:"{{date}} 'à' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e,t,n,a){return i[e]}t.a=a;var i={lastWeek:"eeee 'la semaine dernière à' p",yesterday:"'hier à' p",today:"'aujourd’hui à' p",tomorrow:"'demain à' p'",nextWeek:"eeee 'la semaine prochaine à' p",other:"P"}},function(e,t,n){"use strict";function a(e,t){var n,a=Number(e),i=t||{},r=String(i.unit);return 0===a?a:(n="year"===r||"hour"===r||"week"===r?1===a?"ère":"ème":1===a?"er":"ème",a+n)}var i=n(3),r={narrow:["av. J.-C","ap. J.-C"],abbreviated:["av. J.-C","ap. J.-C"],wide:["avant Jésus-Christ","après Jésus-Christ"]},o={narrow:["T1","T2","T3","T4"],abbreviated:["1er trim.","2ème trim.","3ème trim.","4ème trim."],wide:["1er trimestre","2ème trimestre","3ème trimestre","4ème trimestre"]},u={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],wide:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"]},s={narrow:["D","L","M","M","J","V","S"],short:["di","lu","ma","me","je","ve","sa"],abbreviated:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],wide:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"]},d={narrow:{am:"AM",pm:"PM",midnight:"minuit",noon:"midi",morning:"mat.",afternoon:"ap.m.",evening:"soir",night:"mat."},abbreviated:{am:"AM",pm:"PM",midnight:"minuit",noon:"midi",morning:"matin",afternoon:"après-midi",evening:"soir",night:"matin"},wide:{am:"AM",pm:"PM",midnight:"minuit",noon:"midi",morning:"du matin",afternoon:"de l’après-midi",evening:"du soir",night:"du matin"}},c={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:u,defaultWidth:"wide"}),day:i.a({values:s,defaultWidth:"wide"}),dayPeriod:i.a({values:d,defaultWidth:"wide"})};t.a=c},function(e,t,n){"use strict";var a=n(4),i=n(5),r=/^(\d+)(ième|ère|ème|er|e)?/i,o=/\d+/i,u={narrow:/^(av\.J\.C|ap\.J\.C|ap\.J\.-C)/i,abbreviated:/^(av\.J\.-C|av\.J-C|apr\.J\.-C|apr\.J-C|ap\.J-C)/i,wide:/^(avant Jésus-Christ|après Jésus-Christ)/i},s={any:[/^av/i,/^ap/i]},d={narrow:/^[1234]/i,abbreviated:/^t[1234]/i,wide:/^[1234](er|ème|e)? trimestre/i},c={any:[/1/i,/2/i,/3/i,/4/i]},l={narrow:/^[jfmasond]/i,abbreviated:/^(janv|févr|mars|avr|mai|juin|juill|juil|août|sept|oct|nov|déc)\.?/i,wide:/^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i},m={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^av/i,/^ma/i,/^juin/i,/^juil/i,/^ao/i,/^s/i,/^o/i,/^n/i,/^d/i]},f={narrow:/^[lmjvsd]/i,short:/^(di|lu|ma|me|je|ve|sa)/i,abbreviated:/^(dim|lun|mar|mer|jeu|ven|sam)\.?/i,wide:/^(dimanche|lundi|mardi|mercredi|jeudi|vendredi|samedi)/i},h={narrow:[/^d/i,/^l/i,/^m/i,/^m/i,/^j/i,/^v/i,/^s/i],any:[/^di/i,/^lu/i,/^ma/i,/^me/i,/^je/i,/^ve/i,/^sa/i]},p={narrow:/^(a|p|minuit|midi|mat\.?|ap\.?m\.?|soir|nuit)/i,any:/^([ap]\.?\s?m\.?|du matin|de l'après[-\s]midi|du soir|de la nuit)/i},g={any:{am:/^a/i,pm:/^p/i,midnight:/^min/i,noon:/^mid/i,morning:/mat/i,afternoon:/ap/i,evening:/soir/i,night:/nuit/i}},v={ordinalNumber:a.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:i.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:i.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:i.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:i.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:i.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(581),i=n(582),r=n(583),o=n(584),u=n(585),s={code:"gd",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:0,firstWeekContainsDate:1}};t.a=s},function(e,t,n){"use strict";function a(e,t,n){n=n||{};var a;return a="string"==typeof i[e]?i[e]:1===t?i[e].one:2===t&&i[e].two?i[e].two:9===t&&i[e].nine?i[e].nine:20===t&&i[e].twenty?i[e].twenty:30===t&&i[e].thirty?i[e].thirty:i[e].other.replace("{{count}}",t),n.addSuffix?n.comparison>0?"ann an "+a:"o chionn "+a:a}t.a=a;var i={lessThanXSeconds:{one:"nas lugha na diog",other:"nas lugha na {{count}} diogan"},xSeconds:{one:"1 diog",two:"2 dhiog",twenty:"20 diog",other:"{{count}} diogan"},halfAMinute:"leth mhionaid",lessThanXMinutes:{one:"nas lugha na mionaid",other:"nas lugha na {{count}} mionaidean"},xMinutes:{one:"1 mionaid",two:"2 mhionaid",twenty:"20 mionaid",other:"{{count}} mionaidean"},aboutXHours:{one:"mu uair de thìde",other:"mu {{count}} uairean de thìde"},xHours:{one:"1 uair de thìde",two:"2 uair de thìde",twenty:"20 uair de thìde",other:"{{count}} uairean de thìde"},xDays:{one:"1 là",other:"{{count}} là"},aboutXWeeks:{one:"mu 1 seachdain",other:"mu {{count}} seachdainean"},xWeeks:{one:"1 seachdain",other:"{{count}} seachdainean"},aboutXMonths:{one:"mu mhìos",other:"mu {{count}} mìosan"},xMonths:{one:"1 mìos",other:"{{count}} mìosan"},aboutXYears:{one:"mu bhliadhna",other:"mu {{count}} bliadhnaichean"},xYears:{one:"1 bhliadhna",other:"{{count}} bliadhna"},overXYears:{one:"còrr is bliadhna",other:"còrr is {{count}} bliadhnaichean"},almostXYears:{one:"cha mhòr bliadhna",other:"cha mhòr {{count}} bliadhnaichean"}}},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},r={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},o={full:"{{date}} 'aig' {{time}}",long:"{{date}} 'aig' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e,t,n,a){return i[e]}t.a=a;var i={lastWeek:"'mu dheireadh' eeee 'aig' p",yesterday:"'an-dè aig' p",today:"'an-diugh aig' p",tomorrow:"'a-màireach aig' p",nextWeek:"eeee 'aig' p",other:"P"}},function(e,t,n){"use strict";function a(e,t){var n=Number(e),a=n%100;if(a>20||a<10)switch(a%10){case 1:return n+"d";case 2:return n+"na"}return 12===a?n+"na":n+"mh"}var i=n(3),r={narrow:["R","A"],abbreviated:["RC","AD"],wide:["ro Chrìosta","anno domini"]},o={narrow:["1","2","3","4"],abbreviated:["C1","C2","C3","C4"],wide:["a' chiad chairteal","an dàrna cairteal","an treas cairteal","an ceathramh cairteal"]},u={narrow:["F","G","M","G","C","Ò","I","L","S","D","S","D"],abbreviated:["Faoi","Gear","Màrt","Gibl","Cèit","Ògmh","Iuch","Lùn","Sult","Dàmh","Samh","Dùbh"],wide:["Am Faoilleach","An Gearran","Am Màrt","An Giblean","An Cèitean","An t-Ògmhios","An t-Iuchar","An Lùnastal","An t-Sultain","An Dàmhair","An t-Samhain","An Dùbhlachd"]},s={narrow:["D","L","M","C","A","H","S"],short:["Dò","Lu","Mà","Ci","Ar","Ha","Sa"],abbreviated:["Did","Dil","Dim","Dic","Dia","Dih","Dis"],wide:["Didòmhnaich","Diluain","Dimàirt","Diciadain","Diardaoin","Dihaoine","Disathairne"]},d={narrow:{am:"m",pm:"f",midnight:"m.o.",noon:"m.l.",morning:"madainn",afternoon:"feasgar",evening:"feasgar",night:"oidhche"},abbreviated:{am:"M.",pm:"F.",midnight:"meadhan oidhche",noon:"meadhan là",morning:"madainn",afternoon:"feasgar",evening:"feasgar",night:"oidhche"},wide:{am:"m.",pm:"f.",midnight:"meadhan oidhche",noon:"meadhan là",morning:"madainn",afternoon:"feasgar",evening:"feasgar",night:"oidhche"}},c={narrow:{am:"m",pm:"f",midnight:"m.o.",noon:"m.l.",morning:"sa mhadainn",afternoon:"feasgar",evening:"feasgar",night:"air an oidhche"},abbreviated:{am:"M.",pm:"F.",midnight:"meadhan oidhche",noon:"meadhan là",morning:"sa mhadainn",afternoon:"feasgar",evening:"feasgar",night:"air an oidhche"},wide:{am:"m.",pm:"f.",midnight:"meadhan oidhche",noon:"meadhan là",morning:"sa mhadainn",afternoon:"feasgar",evening:"feasgar",night:"air an oidhche"}},l={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:u,defaultWidth:"wide"}),day:i.a({values:s,defaultWidth:"wide"}),dayPeriod:i.a({values:d,defaultWidth:"wide",formattingValues:c,defaultFormattingWidth:"wide"})};t.a=l},function(e,t,n){"use strict";var a=n(4),i=n(5),r=/^(\d+)(d|na|tr|mh)?/i,o=/\d+/i,u={narrow:/^(r|a)/i,abbreviated:/^(r\.?\s?c\.?|r\.?\s?a\.?\s?c\.?|a\.?\s?d\.?|a\.?\s?c\.?)/i,wide:/^(ro Chrìosta|ron aois choitchinn|anno domini|aois choitcheann)/i},s={any:[/^b/i,/^(a|c)/i]},d={narrow:/^[1234]/i,abbreviated:/^c[1234]/i,wide:/^[1234](cd|na|tr|mh)? cairteal/i},c={any:[/1/i,/2/i,/3/i,/4/i]},l={narrow:/^[fgmcòilsd]/i,abbreviated:/^(faoi|gear|màrt|gibl|cèit|ògmh|iuch|lùn|sult|dàmh|samh|dùbh)/i,wide:/^(am faoilleach|an gearran|am màrt|an giblean|an cèitean|an t-Ògmhios|an t-Iuchar|an lùnastal|an t-Sultain|an dàmhair|an t-Samhain|an dùbhlachd)/i},m={narrow:[/^f/i,/^g/i,/^m/i,/^g/i,/^c/i,/^ò/i,/^i/i,/^l/i,/^s/i,/^d/i,/^s/i,/^d/i],any:[/^fa/i,/^ge/i,/^mà/i,/^gi/i,/^c/i,/^ò/i,/^i/i,/^l/i,/^su/i,/^d/i,/^sa/i,/^d/i]},f={narrow:/^[dlmcahs]/i,short:/^(dò|lu|mà|ci|ar|ha|sa)/i,abbreviated:/^(did|dil|dim|dic|dia|dih|dis)/i,wide:/^(didòmhnaich|diluain|dimàirt|diciadain|diardaoin|dihaoine|disathairne)/i},h={narrow:[/^d/i,/^l/i,/^m/i,/^c/i,/^a/i,/^h/i,/^s/i],any:[/^d/i,/^l/i,/^m/i,/^c/i,/^a/i,/^h/i,/^s/i]},p={narrow:/^(a|p|mi|n|(san|aig) (madainn|feasgar|feasgar|oidhche))/i,any:/^([ap]\.?\s?m\.?|meadhan oidhche|meadhan là|(san|aig) (madainn|feasgar|feasgar|oidhche))/i},g={any:{am:/^m/i,pm:/^f/i,midnight:/^meadhan oidhche/i,noon:/^meadhan là/i,morning:/sa mhadainn/i,afternoon:/feasgar/i,evening:/feasgar/i,night:/air an oidhche/i}},v={ordinalNumber:a.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:i.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:i.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:i.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:i.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:i.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(587),i=n(588),r=n(589),o=n(590),u=n(591),s={code:"gl",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:1}};t.a=s},function(e,t,n){"use strict";function a(e,t,n){n=n||{};var a;return a="string"==typeof i[e]?i[e]:1===t?i[e].one:i[e].other.replace("{{count}}",t),n.addSuffix?n.comparison>0?"en "+a:"hai "+a:a}t.a=a;var i={lessThanXSeconds:{one:"menos dun segundo",other:"menos de {{count}} segundos"},xSeconds:{one:"1 segundo",other:"{{count}} segundos"},halfAMinute:"medio minuto",lessThanXMinutes:{one:"menos dun minuto",other:"menos de {{count}} minutos"},xMinutes:{one:"1 minuto",other:"{{count}} minutos"},aboutXHours:{one:"arredor dunha hora",other:"arredor de {{count}} horas"},xHours:{one:"1 hora",other:"{{count}} horas"},xDays:{one:"1 día",other:"{{count}} días"},aboutXWeeks:{one:"arredor dunha semana",other:"arredor de {{count}} semanas"},xWeeks:{one:"1 semana",other:"{{count}} semanas"},aboutXMonths:{one:"arredor de 1 mes",other:"arredor de {{count}} meses"},xMonths:{one:"1 mes",other:"{{count}} meses"},aboutXYears:{one:"arredor dun ano",other:"arredor de {{count}} anos"},xYears:{one:"1 ano",other:"{{count}} anos"},overXYears:{one:"máis dun ano",other:"máis de {{count}} anos"},almostXYears:{one:"case un ano",other:"case {{count}} anos"}}},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE, d 'de' MMMM y",long:"d 'de' MMMM y",medium:"d MMM y",short:"dd/MM/y"},r={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},o={full:"{{date}} 'ás' {{time}}",long:"{{date}} 'ás' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e,t,n,a){return 1!==t.getUTCHours()?r[e]:i[e]}t.a=a;var i={lastWeek:"'o' eeee 'pasado á' LT",yesterday:"'onte á' p",today:"'hoxe á' p",tomorrow:"'mañá á' p",nextWeek:"eeee 'á' p",other:"P"},r={lastWeek:"'o' eeee 'pasado ás' p",yesterday:"'onte ás' p",today:"'hoxe ás' p",tomorrow:"'mañá ás' p",nextWeek:"eeee 'ás' p",other:"P"}},function(e,t,n){"use strict";function a(e){return Number(e)+"º"}var i=n(3),r={narrow:["AC","DC"],abbreviated:["AC","DC"],wide:["antes de cristo","despois de cristo"]},o={narrow:["1","2","3","4"],abbreviated:["T1","T2","T3","T4"],wide:["1º trimestre","2º trimestre","3º trimestre","4º trimestre"]},u={narrow:["e","f","m","a","m","j","j","a","s","o","n","d"],abbreviated:["xan","feb","mar","abr","mai","xun","xul","ago","set","out","nov","dec"],wide:["xaneiro","febreiro","marzo","abril","maio","xuño","xullo","agosto","setembro","outubro","novembro","decembro"]},s={narrow:["d","l","m","m","j","v","s"],short:["do","lu","ma","me","xo","ve","sa"],abbreviated:["dom","lun","mar","mer","xov","ven","sab"],wide:["domingo","luns","martes","mércores","xoves","venres","sábado"]},d={narrow:{am:"a",pm:"p",midnight:"mn",noon:"md",morning:"mañá",afternoon:"tarde",evening:"tarde",night:"noite"},abbreviated:{am:"AM",pm:"PM",midnight:"medianoite",noon:"mediodía",morning:"mañá",afternoon:"tarde",evening:"tardiña",night:"noite"},wide:{am:"a.m.",pm:"p.m.",midnight:"medianoite",noon:"mediodía",morning:"mañá",afternoon:"tarde",evening:"tardiña",night:"noite"}},c={narrow:{am:"a",pm:"p",midnight:"mn",noon:"md",morning:"da mañá",afternoon:"da tarde",evening:"da tardiña",night:"da noite"},abbreviated:{am:"AM",pm:"PM",midnight:"medianoite",noon:"mediodía",morning:"da mañá",afternoon:"da tarde",evening:"da tardiña",night:"da noite"},wide:{am:"a.m.",pm:"p.m.",midnight:"medianoite",noon:"mediodía",morning:"da mañá",afternoon:"da tarde",evening:"da tardiña",night:"da noite"}},l={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:u,defaultWidth:"wide"}),day:i.a({values:s,defaultWidth:"wide"}),dayPeriod:i.a({values:d,defaultWidth:"wide",formattingValues:c,defaultFormattingWidth:"wide"})};t.a=l},function(e,t,n){"use strict";var a=n(4),i=n(5),r=/^(\d+)(º)?/i,o=/\d+/i,u={narrow:/^(ac|dc|a|d)/i,abbreviated:/^(a\.?\s?c\.?|a\.?\s?e\.?\s?c\.?|d\.?\s?c\.?|e\.?\s?c\.?)/i,wide:/^(antes de cristo|antes da era com[uú]n|despois de cristo|era com[uú]n)/i},s={any:[/^ac/i,/^dc/i],wide:[/^(antes de cristo|antes da era com[uú]n)/i,/^(despois de cristo|era com[uú]n)/i]},d={narrow:/^[1234]/i,abbreviated:/^T[1234]/i,wide:/^[1234](º)? trimestre/i},c={any:[/1/i,/2/i,/3/i,/4/i]},l={narrow:/^[xfmasond]/i,abbreviated:/^(xan|feb|mar|abr|mai|xun|xul|ago|set|out|nov|dec)/i,wide:/^(xaneiro|febreiro|marzo|abril|maio|xuño|xullo|agosto|setembro|outubro|novembro|decembro)/i},m={narrow:[/^x/i,/^f/i,/^m/i,/^a/i,/^m/i,/^x/i,/^x/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^xan/i,/^feb/i,/^mar/i,/^abr/i,/^mai/i,/^xun/i,/^xul/i,/^ago/i,/^set/i,/^out/i,/^nov/i,/^dec/i]},f={narrow:/^[dlmxvs]/i,short:/^(do|lu|ma|me|xo|ve|sa)/i,abbreviated:/^(dom|lun|mar|mer|xov|ven|sab)/i,wide:/^(domingo|luns|martes|m[eé]rcores|xoves|venres|s[áa]bado)/i},h={narrow:[/^d/i,/^l/i,/^m/i,/^m/i,/^x/i,/^v/i,/^s/i],any:[/^do/i,/^lu/i,/^ma/i,/^me/i,/^xo/i,/^ve/i,/^sa/i]},p={narrow:/^(a|p|mn|md|(da|[aá]s) (mañ[aá]|tarde|noite))/i,any:/^([ap]\.?\s?m\.?|medianoite|mediod[ií]a|(da|[aá]s) (mañ[aá]|tarde|noite))/i},g={any:{am:/^a/i,pm:/^p/i,midnight:/^mn/i,noon:/^md/i,morning:/mañ[aá]/i,afternoon:/tarde/i,evening:/tardiña/i,night:/noite/i}},v={ordinalNumber:a.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:i.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:i.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:i.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:i.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:i.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(593),i=n(594),r=n(595),o=n(596),u=n(597),s={code:"gu",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:4}};t.a=s},function(e,t,n){"use strict";function a(e,t,n){n=n||{};var a;return a="string"==typeof i[e]?i[e]:1===t?i[e].one:i[e].other.replace("{{count}}",t),n.addSuffix?n.comparison>0?a+"માં":a+" પહેલાં":a}t.a=a;var i={lessThanXSeconds:{one:"હમણાં",other:"​આશરે {{count}} સેકંડ"},xSeconds:{one:"1 સેકંડ",other:"{{count}} સેકંડ"},halfAMinute:"અડધી મિનિટ",lessThanXMinutes:{one:"આ મિનિટ",other:"​આશરે {{count}} મિનિટ"},xMinutes:{one:"1 મિનિટ",other:"{{count}} મિનિટ"},aboutXHours:{one:"​આશરે 1 કલાક",other:"​આશરે {{count}} કલાક"},xHours:{one:"1 કલાક",other:"{{count}} કલાક"},xDays:{one:"1 દિવસ",other:"{{count}} દિવસ"},aboutXWeeks:{one:"આશરે 1 અઠવાડિયું",other:"આશરે {{count}} અઠવાડિયા"},xWeeks:{one:"1 અઠવાડિયું",other:"{{count}} અઠવાડિયા"},aboutXMonths:{one:"આશરે 1 મહિનો",other:"આશરે {{count}} મહિના"},xMonths:{one:"1 મહિનો",other:"{{count}} મહિના"},aboutXYears:{one:"આશરે 1 વર્ષ",other:"આશરે {{count}} વર્ષ"},xYears:{one:"1 વર્ષ",other:"{{count}} વર્ષ"},overXYears:{one:"1 વર્ષથી વધુ",other:"{{count}} વર્ષથી વધુ"},almostXYears:{one:"લગભગ 1 વર્ષ",other:"લગભગ {{count}} વર્ષ"}}},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE, d MMMM, y",long:"d MMMM, y",medium:"d MMM, y",short:"d/M/yy"},r={full:"hh:mm:ss a zzzz",long:"hh:mm:ss a z",medium:"hh:mm:ss a",short:"hh:mm a"},o={full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e,t,n,a){return i[e]}t.a=a;var i={lastWeek:"'પાછલા' eeee p",yesterday:"'ગઈકાલે' p",today:"'આજે' p",tomorrow:"'આવતીકાલે' p",nextWeek:"eeee p",other:"P"}},function(e,t,n){"use strict";function a(e,t){return Number(e)}var i=n(3),r={narrow:["ઈસપૂ","ઈસ"],abbreviated:["ઈ.સ.પૂર્વે","ઈ.સ."],wide:["ઈસવીસન પૂર્વે","ઈસવીસન"]},o={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1લો ત્રિમાસ","2જો ત્રિમાસ","3જો ત્રિમાસ","4થો ત્રિમાસ"]},u={narrow:["જા","ફે","મા","એ","મે","જૂ","જુ","ઓ","સ","ઓ","ન","ડિ"],abbreviated:["જાન્યુ","ફેબ્રુ","માર્ચ","એપ્રિલ","મે","જૂન","જુલાઈ","ઑગસ્ટ","સપ્ટે","ઓક્ટો","નવે","ડિસે"],wide:["જાન્યુઆરી","ફેબ્રુઆરી","માર્ચ","એપ્રિલ","મે","જૂન","જુલાઇ","ઓગસ્ટ","સપ્ટેમ્બર","ઓક્ટોબર","નવેમ્બર","ડિસેમ્બર"]},s={narrow:["ર","સો","મં","બુ","ગુ","શુ","શ"],short:["ર","સો","મં","બુ","ગુ","શુ","શ"],abbreviated:["રવિ","સોમ","મંગળ","બુધ","ગુરુ","શુક્ર","શનિ"],wide:["રવિવાર","સોમવાર","મંગળવાર","બુધવાર","ગુરુવાર","શુક્રવાર","શનિવાર"]},d={narrow:{am:"AM",pm:"PM",midnight:"મ.રાત્રિ",noon:"બ.",morning:"સવારે",afternoon:"બપોરે",evening:"સાંજે",night:"રાત્રે"},abbreviated:{am:"AM",pm:"PM",midnight:"​મધ્યરાત્રિ",noon:"બપોરે",morning:"સવારે",afternoon:"બપોરે",evening:"સાંજે",night:"રાત્રે"},wide:{am:"AM",pm:"PM",midnight:"​મધ્યરાત્રિ",noon:"બપોરે",morning:"સવારે",afternoon:"બપોરે",evening:"સાંજે",night:"રાત્રે"}},c={narrow:{am:"AM",pm:"PM",midnight:"મ.રાત્રિ",noon:"બપોરે",morning:"સવારે",afternoon:"બપોરે",evening:"સાંજે",night:"રાત્રે"},abbreviated:{am:"AM",pm:"PM",midnight:"મધ્યરાત્રિ",noon:"બપોરે",morning:"સવારે",afternoon:"બપોરે",evening:"સાંજે",night:"રાત્રે"},wide:{am:"AM",pm:"PM",midnight:"​મધ્યરાત્રિ",noon:"બપોરે",morning:"સવારે",afternoon:"બપોરે",evening:"સાંજે",night:"રાત્રે"}},l={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:u,defaultWidth:"wide"}),day:i.a({values:s,defaultWidth:"wide"}),dayPeriod:i.a({values:d,defaultWidth:"wide",formattingValues:c,defaultFormattingWidth:"wide"})};t.a=l},function(e,t,n){"use strict";var a=n(4),i=n(5),r=/^(\d+)(લ|જ|થ|ઠ્ઠ|મ)?/i,o=/\d+/i,u={narrow:/^(ઈસપૂ|ઈસ)/i,abbreviated:/^(ઈ\.સ\.પૂર્વે|ઈ\.સ\.)/i,wide:/^(ઈસવીસન\sપૂર્વે|ઈસવીસન)/i},s={any:[/^(ઈસપૂ|ઈસ)/i,/^(ઈ\.સ\.પૂર્વે|ઈ\.સ\.)/i,/^(ઈસવીસન\sપૂર્વે|ઈસવીસન)/i]},d={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](લો|જો|થો)? ત્રિમાસ/i},c={any:[/1/i,/2/i,/3/i,/4/i]},l={narrow:/^[જાફેમાએમેજૂજુઓસઓનડિ]/i,abbreviated:/^(જાન્યુ|ફેબ્રુ|માર્ચ|એપ્રિલ|મે|જૂન|જુલાઈ|ઑગસ્ટ|સપ્ટે|ઓક્ટો|નવે|ડિસે)/i,wide:/^(જાન્યુઆરી|ફેબ્રુઆરી|માર્ચ|એપ્રિલ|મે|જૂન|જુલાઇ|ઓગસ્ટ|સપ્ટેમ્બર|ઓક્ટોબર|નવેમ્બર|ડિસેમ્બર)/i},m={narrow:[/^જા/i,/^ફે/i,/^મા/i,/^એ/i,/^મે/i,/^જૂ/i,/^જુ/i,/^ઑગ/i,/^સ/i,/^ઓક્ટો/i,/^ન/i,/^ડિ/i],any:[/^જા/i,/^ફે/i,/^મા/i,/^એ/i,/^મે/i,/^જૂ/i,/^જુ/i,/^ઑગ/i,/^સ/i,/^ઓક્ટો/i,/^ન/i,/^ડિ/i]},f={narrow:/^(ર|સો|મં|બુ|ગુ|શુ|શ)/i,short:/^(ર|સો|મં|બુ|ગુ|શુ|શ)/i,abbreviated:/^(રવિ|સોમ|મંગળ|બુધ|ગુરુ|શુક્ર|શનિ)/i,wide:/^(રવિવાર|સોમવાર|મંગળવાર|બુધવાર|ગુરુવાર|શુક્રવાર|શનિવાર)/i},h={narrow:[/^ર/i,/^સો/i,/^મં/i,/^બુ/i,/^ગુ/i,/^શુ/i,/^શ/i],any:[/^ર/i,/^સો/i,/^મં/i,/^બુ/i,/^ગુ/i,/^શુ/i,/^શ/i]},p={narrow:/^(a|p|મ\.?|સ|બ|સાં|રા)/i,any:/^(a|p|મ\.?|સ|બ|સાં|રા)/i},g={any:{am:/^a/i,pm:/^p/i,midnight:/^મ\.?/i,noon:/^બ/i,morning:/સ/i,afternoon:/બ/i,evening:/સાં/i,night:/રા/i}},v={ordinalNumber:a.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:i.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:i.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:i.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:i.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:i.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(599),i=n(600),r=n(601),o=n(602),u=n(603),s={code:"he",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:0,firstWeekContainsDate:1}};t.a=s},function(e,t,n){"use strict";function a(e,t,n){if(n=n||{},"xDays"===e&&n.addSuffix&&t<=2){var a={1:"אתמול",2:"שלשום"},r={1:"מחר",2:"מחרתיים"};return n.comparison>0?r[t]:a[t]}var o;return o="string"==typeof i[e]?i[e]:1===t?i[e].one:2===t?i[e].two:i[e].other.replace("{{count}}",t),n.addSuffix?n.comparison>0?"בעוד "+o:"לפני "+o:o}t.a=a;var i={lessThanXSeconds:{one:"פחות משנייה",two:"פחות משתי שניות",other:"פחות מ־{{count}} שניות"},xSeconds:{one:"שנייה",two:"שתי שניות",other:"{{count}} שניות"},halfAMinute:"חצי דקה",lessThanXMinutes:{one:"פחות מדקה",two:"פחות משתי דקות",other:"פחות מ־{{count}} דקות"},xMinutes:{one:"דקה",two:"שתי דקות",other:"{{count}} דקות"},aboutXHours:{one:"כשעה",two:"כשעתיים",other:"כ־{{count}} שעות"},xHours:{one:"שעה",two:"שעתיים",other:"{{count}} שעות"},xDays:{one:"יום",two:"יומיים",other:"{{count}} ימים"},aboutXWeeks:{one:"כשבוע",two:"כשבועיים",other:"כ־{{count}} שבועות"},xWeeks:{one:"שבוע",two:"שבועיים",other:"{{count}} שבועות"},aboutXMonths:{one:"כחודש",two:"כחודשיים",other:"כ־{{count}} חודשים"},xMonths:{one:"חודש",two:"חודשיים",other:"{{count}} חודשים"},aboutXYears:{one:"כשנה",two:"כשנתיים",other:"כ־{{count}} שנים"},xYears:{one:"שנה",two:"שנתיים",other:"{{count}} שנים"},overXYears:{one:"יותר משנה",two:"יותר משנתיים",other:"יותר מ־{{count}} שנים"},almostXYears:{one:"כמעט שנה",two:"כמעט שנתיים",other:"כמעט {{count}} שנים"}}},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE, d בMMMM y",long:"d בMMMM y",medium:"d בMMM y",short:"d.M.y"},r={full:"H:mm:ss zzzz",long:"H:mm:ss z",medium:"H:mm:ss",short:"H:mm"},o={full:"{{date}} 'בשעה' {{time}}",long:"{{date}} 'בשעה' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e,t,n,a){return i[e]}t.a=a;var i={lastWeek:"eeee 'שעבר בשעה' p",yesterday:"'אתמול בשעה' p",today:"'היום בשעה' p",tomorrow:"'מחר בשעה' p",nextWeek:"eeee 'בשעה' p",other:"P"}},function(e,t,n){"use strict";function a(e,t){var n=Number(e);if(n<=0||n>10)return n;var a=t||{},i=String(a.unit),r=["year","hour","minute","second"].indexOf(i)>=0,o=["ראשון","שני","שלישי","רביעי","חמישי","שישי","שביעי","שמיני","תשיעי","עשירי"],u=["ראשונה","שנייה","שלישית","רביעית","חמישית","שישית","שביעית","שמינית","תשיעית","עשירית"],s=n-1;return r?u[s]:o[s]}var i=n(3),r={narrow:["לפנה״ס","לספירה"],abbreviated:["לפנה״ס","לספירה"],wide:["לפני הספירה","לספירה"]},o={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["רבעון 1","רבעון 2","רבעון 3","רבעון 4"]},u={narrow:["1","2","3","4","5","6","7","8","9","10","11","12"],abbreviated:["ינו׳","פבר׳","מרץ","אפר׳","מאי","יוני","יולי","אוג׳","ספט׳","אוק׳","נוב׳","דצמ׳"],wide:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"]},s={narrow:["א׳","ב׳","ג׳","ד׳","ה׳","ו׳","ש׳"],short:["א׳","ב׳","ג׳","ד׳","ה׳","ו׳","ש׳"],abbreviated:["יום א׳","יום ב׳","יום ג׳","יום ד׳","יום ה׳","יום ו׳","שבת"],wide:["יום ראשון","יום שני","יום שלישי","יום רביעי","יום חמישי","יום שישי","יום שבת"]},d={narrow:{am:"לפנה״צ",pm:"אחה״צ",midnight:"חצות",noon:"צהריים",morning:"בוקר",afternoon:"אחר הצהריים",evening:"ערב",night:"לילה"},abbreviated:{am:"לפנה״צ",pm:"אחה״צ",midnight:"חצות",noon:"צהריים",morning:"בוקר",afternoon:"אחר הצהריים",evening:"ערב",night:"לילה"},wide:{am:"לפנה״צ",pm:"אחה״צ",midnight:"חצות",noon:"צהריים",morning:"בוקר",afternoon:"אחר הצהריים",evening:"ערב",night:"לילה"}},c={narrow:{am:"לפנה״צ",pm:"אחה״צ",midnight:"חצות",noon:"צהריים",morning:"בבוקר",afternoon:"בצהריים",evening:"בערב",night:"בלילה"},abbreviated:{am:"לפנה״צ",pm:"אחה״צ",midnight:"חצות",noon:"צהריים",morning:"בבוקר",afternoon:"אחר הצהריים",evening:"בערב",night:"בלילה"},wide:{am:"לפנה״צ",pm:"אחה״צ",midnight:"חצות",noon:"צהריים",morning:"בבוקר",afternoon:"אחר הצהריים",evening:"בערב",night:"בלילה"}},l={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:u,defaultWidth:"wide"}),day:i.a({values:s,defaultWidth:"wide"}),dayPeriod:i.a({values:d,defaultWidth:"wide",formattingValues:c,defaultFormattingWidth:"wide"})};t.a=l},function(e,t,n){"use strict";var a=n(4),i=n(5),r=/^(\d+|(ראשון|שני|שלישי|רביעי|חמישי|שישי|שביעי|שמיני|תשיעי|עשירי|ראשונה|שנייה|שלישית|רביעית|חמישית|שישית|שביעית|שמינית|תשיעית|עשירית))/i,o=/^(\d+|רא|שנ|של|רב|ח|שי|שב|שמ|ת|ע)/i,u={narrow:/^ל(ספירה|פנה״ס)/i,abbreviated:/^ל(ספירה|פנה״ס)/i,wide:/^ל(פני ה)?ספירה/i},s={any:[/^לפ/i,/^לס/i]},d={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^רבעון [1234]/i},c={any:[/1/i,/2/i,/3/i,/4/i]},l={narrow:/^\d+/i,abbreviated:/^(ינו|פבר|מרץ|אפר|מאי|יוני|יולי|אוג|ספט|אוק|נוב|דצמ)׳?/i,wide:/^(ינואר|פברואר|מרץ|אפריל|מאי|יוני|יולי|אוגוסט|ספטמבר|אוקטובר|נובמבר|דצמבר)/i},m={narrow:[/^1$/i,/^2/i,/^3/i,/^4/i,/^5/i,/^6/i,/^7/i,/^8/i,/^9/i,/^10/i,/^11/i,/^12/i],any:[/^ינ/i,/^פ/i,/^מר/i,/^אפ/i,/^מא/i,/^יונ/i,/^יול/i,/^אוג/i,/^ס/i,/^אוק/i,/^נ/i,/^ד/i]},f={narrow:/^[אבגדהוש]׳/i,short:/^[אבגדהוש]׳/i,abbreviated:/^(שבת|יום (א|ב|ג|ד|ה|ו)׳)/i,wide:/^יום (ראשון|שני|שלישי|רביעי|חמישי|שישי|שבת)/i},h={abbreviated:[/א׳$/i,/ב׳$/i,/ג׳$/i,/ד׳$/i,/ה׳$/i,/ו׳$/i,/^ש/i],wide:[/ן$/i,/ני$/i,/לישי$/i,/עי$/i,/מישי$/i,/שישי$/i,/ת$/i],any:[/^א/i,/^ב/i,/^ג/i,/^ד/i,/^ה/i,/^ו/i,/^ש/i]},p={any:/^(אחר ה|ב)?(חצות|צהריים|בוקר|ערב|לילה|אחה״צ|לפנה״צ)/i},g={any:{am:/^לפ/i,pm:/^אחה/i,midnight:/^ח/i,noon:/^צ/i,morning:/בוקר/i,afternoon:/בצ|אחר/i,evening:/ערב/i,night:/לילה/i}},v=["רא","שנ","של","רב","ח","שי","שב","שמ","ת","ע"],w={ordinalNumber:a.a({matchPattern:r,parsePattern:o,valueCallback:function(e){var t=parseInt(e,10);return isNaN(t)?v.indexOf(e)+1:t}}),era:i.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:i.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:i.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:i.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:i.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=w},function(e,t,n){"use strict";var a=n(605),i=n(606),r=n(607),o=n(97),u=n(608),s={code:"hi",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:0,firstWeekContainsDate:4}};t.a=s},function(e,t,n){"use strict";function a(e,t,n){n=n||{};var a;return a="string"==typeof r[e]?r[e]:1===t?r[e].one:r[e].other.replace("{{count}}",i.a.numberToLocale(t)),n.addSuffix?n.comparison>0?a+"मे ":a+" पहले":a}t.a=a;var i=n(97),r={lessThanXSeconds:{one:"१ सेकंड से कम",other:"{{count}} सेकंड से कम"},xSeconds:{one:"१ सेकंड",other:"{{count}} सेकंड"},halfAMinute:"आधा मिनट",lessThanXMinutes:{one:"१ मिनट से कम",other:"{{count}} मिनट से कम"},xMinutes:{one:"१ मिनट",other:"{{count}} मिनट"},aboutXHours:{one:"लगभग १ घंटा",other:"लगभग {{count}} घंटे"},xHours:{one:"१ घंटा",other:"{{count}} घंटे"},xDays:{one:"१ दिन",other:"{{count}} दिन"},aboutXWeeks:{one:"लगभग १ सप्ताह",other:"लगभग {{count}} सप्ताह"},xWeeks:{one:"१ सप्ताह",other:"{{count}} सप्ताह"},aboutXMonths:{one:"लगभग १ महीना",other:"लगभग {{count}} महीने"},xMonths:{one:"१ महीना",other:"{{count}} महीने"},aboutXYears:{one:"लगभग १ वर्ष",other:"लगभग {{count}} वर्ष"},xYears:{one:"१ वर्ष",other:"{{count}} वर्ष"},overXYears:{one:"१ वर्ष से अधिक",other:"{{count}} वर्ष से अधिक"},almostXYears:{one:"लगभग १ वर्ष",other:"लगभग {{count}} वर्ष"}}},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE, do MMMM, y",long:"do MMMM, y",medium:"d MMM, y",short:"dd/MM/yyyy"},r={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},o={full:"{{date}} 'को' {{time}}",long:"{{date}} 'को' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e,t,n,a){return i[e]}t.a=a;var i={lastWeek:"'पिछले' eeee p",yesterday:"'कल' p",today:"'आज' p",tomorrow:"'कल' p",nextWeek:"eeee 'को' p",other:"P"}},function(e,t,n){"use strict";var a=n(4),i=n(5),r=n(97),o=/^[०१२३४५६७८९]+/i,u=/^[०१२३४५६७८९]+/i,s={narrow:/^(ईसा-पूर्व|ईस्वी)/i,abbreviated:/^(ईसा\.?\s?पूर्व\.?|ईसा\.?)/i,wide:/^(ईसा-पूर्व|ईसवी पूर्व|ईसवी सन|ईसवी)/i},d={any:[/^b/i,/^(a|c)/i]},c={narrow:/^[1234]/i,abbreviated:/^ति[1234]/i,wide:/^[1234](पहली|दूसरी|तीसरी|चौथी)? तिमाही/i},l={any:[/1/i,/2/i,/3/i,/4/i]},m={narrow:/^[जफ़माअप्मईजूनजुअगसिअक्तनदि]/i,abbreviated:/^(जन|फ़र|मार्च|अप्|मई|जून|जुल|अग|सित|अक्तू|नव|दिस)/i,wide:/^(जनवरी|फ़रवरी|मार्च|अप्रैल|मई|जून|जुलाई|अगस्त|सितंबर|अक्तूबर|नवंबर|दिसंबर)/i},f={narrow:[/^ज/i,/^फ़/i,/^मा/i,/^अप्/i,/^मई/i,/^जू/i,/^जु/i,/^अग/i,/^सि/i,/^अक्तू/i,/^न/i,/^दि/i],any:[/^जन/i,/^फ़/i,/^मा/i,/^अप्/i,/^मई/i,/^जू/i,/^जु/i,/^अग/i,/^सि/i,/^अक्तू/i,/^नव/i,/^दिस/i]},h={narrow:/^[रविसोममंगलबुधगुरुशुक्रशनि]/i,short:/^(रवि|सोम|मंगल|बुध|गुरु|शुक्र|शनि)/i,abbreviated:/^(रवि|सोम|मंगल|बुध|गुरु|शुक्र|शनि)/i,wide:/^(रविवार|सोमवार|मंगलवार|बुधवार|गुरुवार|शुक्रवार|शनिवार)/i},p={narrow:[/^रवि/i,/^सोम/i,/^मंगल/i,/^बुध/i,/^गुरु/i,/^शुक्र/i,/^शनि/i],any:[/^रवि/i,/^सोम/i,/^मंगल/i,/^बुध/i,/^गुरु/i,/^शुक्र/i,/^शनि/i]},g={narrow:/^(पू|अ|म|द.\?|सु|दो|शा|रा)/i,any:/^(पूर्वाह्न|अपराह्न|म|द.\?|सु|दो|शा|रा)/i},v={any:{am:/^पूर्वाह्न/i,pm:/^अपराह्न/i,midnight:/^मध्य/i,noon:/^दो/i,morning:/सु/i,afternoon:/दो/i,evening:/शा/i,night:/रा/i}},w={ordinalNumber:a.a({matchPattern:o,parsePattern:u,valueCallback:r.a.localeToNumber}),era:i.a({matchPatterns:s,defaultMatchWidth:"wide",parsePatterns:d,defaultParseWidth:"any"}),quarter:i.a({matchPatterns:c,defaultMatchWidth:"wide",parsePatterns:l,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:i.a({matchPatterns:m,defaultMatchWidth:"wide",parsePatterns:f,defaultParseWidth:"any"}),day:i.a({matchPatterns:h,defaultMatchWidth:"wide",parsePatterns:p,defaultParseWidth:"any"}),dayPeriod:i.a({matchPatterns:g,defaultMatchWidth:"any",parsePatterns:v,defaultParseWidth:"any"})};t.a=w},function(e,t,n){"use strict";var a=n(610),i=n(611),r=n(612),o=n(613),u=n(614),s={code:"hr",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:1}};t.a=s},function(e,t,n){"use strict";function a(e,t,n){n=n||{};var a;return a="string"==typeof i[e]?i[e]:1===t?n.addSuffix?n.comparison>0?i[e].one.withPrepositionIn:i[e].one.withPrepositionAgo:i[e].one.standalone:t%10>1&&t%10<5&&"1"!==String(t).substr(-2,1)?i[e].dual.replace("{{count}}",t):i[e].other.replace("{{count}}",t),n.addSuffix?n.comparison>0?"za "+a:"prije "+a:a}t.a=a;var i={lessThanXSeconds:{one:{standalone:"manje od 1 sekunde",withPrepositionAgo:"manje od 1 sekunde",withPrepositionIn:"manje od 1 sekundu"},dual:"manje od {{count}} sekunde",other:"manje od {{count}} sekundi"},xSeconds:{one:{standalone:"1 sekunda",withPrepositionAgo:"1 sekunde",withPrepositionIn:"1 sekundu"},dual:"{{count}} sekunde",other:"{{count}} sekundi"},halfAMinute:"pola minute",lessThanXMinutes:{one:{standalone:"manje od 1 minute",withPrepositionAgo:"manje od 1 minute",withPrepositionIn:"manje od 1 minutu"},dual:"manje od {{count}} minute",other:"manje od {{count}} minuta"},xMinutes:{one:{standalone:"1 minuta",withPrepositionAgo:"1 minute",withPrepositionIn:"1 minutu"},dual:"{{count}} minute",other:"{{count}} minuta"},aboutXHours:{one:{standalone:"oko 1 sat",withPrepositionAgo:"oko 1 sat",withPrepositionIn:"oko 1 sat"},dual:"oko {{count}} sata",other:"oko {{count}} sati"},xHours:{one:{standalone:"1 sat",withPrepositionAgo:"1 sat",withPrepositionIn:"1 sat"},dual:"{{count}} sata",other:"{{count}} sati"},xDays:{one:{standalone:"1 dan",withPrepositionAgo:"1 dan",withPrepositionIn:"1 dan"},dual:"{{count}} dana",other:"{{count}} dana"},aboutXWeeks:{one:{standalone:"oko 1 tjedan",withPrepositionAgo:"oko 1 tjedan",withPrepositionIn:"oko 1 tjedan"},dual:"oko {{count}} tjedna",other:"oko {{count}} tjedana"},xWeeks:{one:{standalone:"1 tjedan",withPrepositionAgo:"1 tjedan",withPrepositionIn:"1 tjedan"},dual:"{{count}} tjedna",other:"{{count}} tjedana"},aboutXMonths:{one:{standalone:"oko 1 mjesec",withPrepositionAgo:"oko 1 mjesec",withPrepositionIn:"oko 1 mjesec"},dual:"oko {{count}} mjeseca",other:"oko {{count}} mjeseci"},xMonths:{one:{standalone:"1 mjesec",withPrepositionAgo:"1 mjesec",withPrepositionIn:"1 mjesec"},dual:"{{count}} mjeseca",other:"{{count}} mjeseci"},aboutXYears:{one:{standalone:"oko 1 godinu",withPrepositionAgo:"oko 1 godinu",withPrepositionIn:"oko 1 godinu"},dual:"oko {{count}} godine",other:"oko {{count}} godina"},xYears:{one:{standalone:"1 godina",withPrepositionAgo:"1 godine",withPrepositionIn:"1 godinu"},dual:"{{count}} godine",other:"{{count}} godina"},overXYears:{one:{standalone:"preko 1 godinu",withPrepositionAgo:"preko 1 godinu",withPrepositionIn:"preko 1 godinu"},dual:"preko {{count}} godine",other:"preko {{count}} godina"},almostXYears:{one:{standalone:"gotovo 1 godinu",withPrepositionAgo:"gotovo 1 godinu",withPrepositionIn:"gotovo 1 godinu"},dual:"gotovo {{count}} godine",other:"gotovo {{count}} godina"}}},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE, d. MMMM y.",long:"d. MMMM y.",medium:"d. MMM y.",short:"dd. MM. y."},r={full:"HH:mm:ss (zzzz)",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},o={full:"{{date}} 'u' {{time}}",long:"{{date}} 'u' {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e,t,n,a){var r=i[e];return"function"==typeof r?r(t):r}t.a=a;var i={lastWeek:function(e){switch(e.getUTCDay()){case 0:return"'prošlu nedjelju u' p";case 3:return"'prošlu srijedu u' p";case 6:return"'prošlu subotu u' p";default:return"'prošli' EEEE 'u' p"}},yesterday:"'jučer u' p",today:"'danas u' p",tomorrow:"'sutra u' p",nextWeek:function(e){switch(e.getUTCDay()){case 0:return"'iduću nedjelju u' p";case 3:return"'iduću srijedu u' p";case 6:return"'iduću subotu u' p";default:return"'prošli' EEEE 'u' p"}},other:"P"}},function(e,t,n){"use strict";function a(e){var t=Number(e);return String(t).concat(".")}var i=n(3),r={narrow:["pr.n.e.","AD"],abbreviated:["pr. Kr.","po. Kr."],wide:["Prije Krista","Poslije Krista"]},o={narrow:["1.","2.","3.","4.","5.","6.","7.","8.","9.","10.","11.","12."],abbreviated:["sij","velj","ožu","tra","svi","lip","srp","kol","ruj","lis","stu","pro"],wide:["siječanj","veljača","ožujak","travanj","svibanj","lipanj","srpanj","kolovoz","rujan","listopad","studeni","prosinac"]},u={narrow:["1.","2.","3.","4.","5.","6.","7.","8.","9.","10.","11.","12."],abbreviated:["sij","velj","ožu","tra","svi","lip","srp","kol","ruj","lis","stu","pro"],wide:["siječnja","veljače","ožujka","travnja","svibnja","lipnja","srpnja","kolovoza","rujna","listopada","studenog","prosinca"]},s={narrow:["1.","2.","3.","4."],abbreviated:["1. kv.","2. kv.","3. kv.","4. kv."],wide:["1. kvartal","2. kvartal","3. kvartal","4. kvartal"]},d={narrow:["N","P","U","S","Č","P","S"],short:["ned","pon","uto","sri","čet","pet","sub"],abbreviated:["ned","pon","uto","sri","čet","pet","sub"],wide:["nedjelja","ponedjeljak","utorak","srijeda","četvrtak","petak","subota"]},c={narrow:{am:"AM",pm:"PM",midnight:"ponoć",noon:"podne",morning:"ujutro",afternoon:"popodne",evening:"navečer",night:"noću"},abbreviated:{am:"AM",pm:"PM",midnight:"ponoć",noon:"podne",morning:"ujutro",afternoon:"popodne",evening:"navečer",night:"noću"},wide:{am:"AM",pm:"PM",midnight:"ponoć",noon:"podne",morning:"ujutro",afternoon:"poslije podne",evening:"navečer",night:"noću"}},l={narrow:{am:"AM",pm:"PM",midnight:"ponoć",noon:"podne",morning:"ujutro",afternoon:"popodne",evening:"navečer",night:"noću"},abbreviated:{am:"AM",pm:"PM",midnight:"ponoć",noon:"podne",morning:"ujutro",afternoon:"popodne",evening:"navečer",night:"noću"},wide:{am:"AM",pm:"PM",midnight:"ponoć",noon:"podne",morning:"ujutro",afternoon:"poslije podne",evening:"navečer",night:"noću"}},m={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:s,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:o,defaultWidth:"wide",formattingValues:u,defaultFormattingWidth:"wide"}),day:i.a({values:d,defaultWidth:"wide"}),dayPeriod:i.a({values:l,defaultWidth:"wide",formattingValues:c,defaultFormattingWidth:"wide"})};t.a=m},function(e,t,n){"use strict";var a=n(5),i=n(4),r=/^(\d+)\./i,o=/\d+/i,u={narrow:/^(pr\.n\.e\.|AD)/i,abbreviated:/^(pr\.\s?Kr\.|po\.\s?Kr\.)/i,wide:/^(Prije Krista|prije nove ere|Poslije Krista|nova era)/i},s={any:[/^pr/i,/^(po|nova)/i]},d={narrow:/^[1234]/i,abbreviated:/^[1234]\.\s?kv\.?/i,wide:/^[1234]\. kvartal/i},c={any:[/1/i,/2/i,/3/i,/4/i]},l={narrow:/^(10|11|12|[123456789])\./i,abbreviated:/^(sij|velj|(ožu|ozu)|tra|svi|lip|srp|kol|ruj|lis|stu|pro)/i,wide:/^((siječanj|siječnja|sijecanj|sijecnja)|(veljača|veljače|veljaca|veljace)|(ožujak|ožujka|ozujak|ozujka)|(travanj|travnja)|(svibanj|svibnja)|(lipanj|lipnja)|(srpanj|srpnja)|(kolovoz|kolovoza)|(rujan|rujna)|(listopad|listopada)|(studeni|studenog)|(prosinac|prosinca))/i},m={narrow:[/(10|11|12|[123456789])/i],abbreviated:[/^sij/i,/^velj/i,/^(ožu|ozu)/i,/^tra/i,/^svi/i,/^lip/i,/^srp/i,/^kol/i,/^ruj/i,/^lis/i,/^stu/i,/^pro/i],wide:[/^sij/i,/^velj/i,/^(ožu|ozu)/i,/^tra/i,/^svi/i,/^lip/i,/^srp/i,/^kol/i,/^ruj/i,/^lis/i,/^stu/i,/^pro/i]},f={narrow:/^[npusčc]/i,short:/^(ned|pon|uto|sri|(čet|cet)|pet|sub)/i,abbreviated:/^(ned|pon|uto|sri|(čet|cet)|pet|sub)/i,wide:/^(nedjelja|ponedjeljak|utorak|srijeda|(četvrtak|cetvrtak)|petak|subota)/i},h={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},p={any:/^(am|pm|ponoc|ponoć|(po)?podne|navecer|navečer|noću|poslije podne|ujutro)/i},g={any:{am:/^a/i,pm:/^p/i,midnight:/^pono/i,noon:/^pod/i,morning:/jutro/i,afternoon:/(poslije\s|po)+podne/i,evening:/(navece|naveče)/i,night:/(nocu|noću)/i}},v={ordinalNumber:i.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:a.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:a.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:a.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"wide"}),day:a.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:a.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(616),i=n(617),r=n(618),o=n(619),u=n(620),s={code:"hu",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:4}};t.a=s},function(e,t,n){"use strict";function a(e,t,n,a){var i=t?u[n][a]:o[n];return"halfaminute"===n?i:e+i}function i(e,t,n){n=n||{};var i,o=e.match(/about|over|almost|lessthan/i),u=e.replace(o,"");return i=a(t,n.addSuffix,u.toLowerCase(),n.comparison),o&&(i=r[o[0].toLowerCase()]+" "+i),i}t.a=i;var r={about:"körülbelül",over:"több mint",almost:"majdnem",lessthan:"kevesebb mint"},o={xseconds:" másodperc",halfaminute:"fél perc",xminutes:" perc",xhours:" óra",xdays:" nap",xweeks:" hét",xmonths:" hónap",xyears:" év"},u={xseconds:{"-1":" másodperccel ezelőtt",1:" másodperc múlva",0:" másodperce"},halfaminute:{"-1":"fél perccel ezelőtt",1:"fél perc múlva",0:"fél perce"},xminutes:{"-1":" perccel ezelőtt",1:" perc múlva",0:" perce"},xhours:{"-1":" órával ezelőtt",1:" óra múlva",0:" órája"},xdays:{"-1":" nappal ezelőtt",1:" nap múlva",0:" napja"},xweeks:{"-1":" héttel ezelőtt",1:" hét múlva",0:" hete"},xmonths:{"-1":" hónappal ezelőtt",1:" hónap múlva",0:" hónapja"},xyears:{"-1":" évvel ezelőtt",1:" év múlva",0:" éve"}}},function(e,t,n){"use strict";var a=n(2),i={full:"y. MMMM d., EEEE",long:"y. MMMM d.",medium:"y. MMM d.",short:"y. MM. dd."},r={full:"H:mm:ss zzzz",long:"H:mm:ss z",medium:"H:mm:ss",short:"H:mm"},o={full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e){return function(t,n,a){var i=t.getUTCDay();return(e?"":"'múlt' ")+"'"+r[i]+"' p'-kor'"}}function i(e,t,n,a){var i=o[e];return"function"==typeof i?i(t,n,a):i}t.a=i;var r=["vasárnap","hétfőn","kedden","szerdán","csütörtökön","pénteken","szombaton"],o={lastWeek:a(!1),yesterday:"'tegnap' p'-kor'",today:"'ma' p'-kor'",tomorrow:"'holnap' p'-kor'",nextWeek:a(!0),other:"P"}},function(e,t,n){"use strict";function a(e,t){return Number(e)+"."}var i=n(3),r={narrow:["ie.","isz."],abbreviated:["i. e.","i. sz."],wide:["Krisztus előtt","időszámításunk szerint"]},o={narrow:["1.","2.","3.","4."],abbreviated:["1. n.év","2. n.év","3. n.év","4. n.év"],wide:["1. negyedév","2. negyedév","3. negyedév","4. negyedév"]},u={narrow:["I.","II.","III.","IV."],abbreviated:["I. n.év","II. n.év","III. n.év","IV. n.év"],wide:["I. negyedév","II. negyedév","III. negyedév","IV. negyedév"]},s={narrow:["J","F","M","Á","M","J","J","A","Sz","O","N","D"],abbreviated:["jan.","febr.","márc.","ápr.","máj.","jún.","júl.","aug.","szept.","okt.","nov.","dec."],wide:["január","február","március","április","május","június","július","augusztus","szeptember","október","november","december"]},d={narrow:["V","H","K","Sz","Cs","P","Sz"],short:["V","H","K","Sze","Cs","P","Szo"],abbreviated:["V","H","K","Sze","Cs","P","Szo"],wide:["vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"]},c={narrow:{am:"de.",pm:"du.",midnight:"éjfél",noon:"dél",morning:"reggel",afternoon:"du.",evening:"este",night:"éjjel"},abbreviated:{am:"de.",pm:"du.",midnight:"éjfél",noon:"dél",morning:"reggel",afternoon:"du.",evening:"este",night:"éjjel"},wide:{am:"de.",pm:"du.",midnight:"éjfél",noon:"dél",morning:"reggel",afternoon:"délután",evening:"este",night:"éjjel"}},l={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",formattingValues:u,argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:s,defaultWidth:"wide"}),day:i.a({values:d,defaultWidth:"wide"}),dayPeriod:i.a({values:c,defaultWidth:"wide",defaultFormattingWidth:"wide"})};t.a=l},function(e,t,n){"use strict";var a=n(4),i=n(5),r=/^(\d+)\.?/i,o=/\d+/i,u={narrow:/^(ie\.|isz\.)/i,abbreviated:/^(i\.\s?e\.?|b?\s?c\s?e|i\.\s?sz\.?)/i,wide:/^(Krisztus előtt|időszámításunk előtt|időszámításunk szerint|i\. sz\.)/i},s={narrow:[/ie/i,/isz/i],abbreviated:[/^(i\.?\s?e\.?|b\s?ce)/i,/^(i\.?\s?sz\.?|c\s?e)/i],any:[/előtt/i,/(szerint|i. sz.)/i]},d={narrow:/^[1234]\.?/i,abbreviated:/^[1234]?\.?\s?n\.év/i,wide:/^([1234]|I|II|III|IV)?\.?\s?negyedév/i},c={any:[/1|I$/i,/2|II$/i,/3|III/i,/4|IV/i]},l={narrow:/^[jfmaásond]|sz/i,abbreviated:/^(jan\.?|febr\.?|márc\.?|ápr\.?|máj\.?|jún\.?|júl\.?|aug\.?|szept\.?|okt\.?|nov\.?|dec\.?)/i,wide:/^(január|február|március|április|május|június|július|augusztus|szeptember|október|november|december)/i},m={narrow:[/^j/i,/^f/i,/^m/i,/^a|á/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s|sz/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^már/i,/^áp/i,/^máj/i,/^jún/i,/^júl/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},f={narrow:/^([vhkpc]|sz|cs|sz)/i,short:/^([vhkp]|sze|cs|szo)/i,abbreviated:/^([vhkp]|sze|cs|szo)/i,wide:/^(vasárnap|hétfő|kedd|szerda|csütörtök|péntek|szombat)/i},h={narrow:[/^v/i,/^h/i,/^k/i,/^sz/i,/^c/i,/^p/i,/^sz/i],any:[/^v/i,/^h/i,/^k/i,/^sze/i,/^c/i,/^p/i,/^szo/i]},p={any:/^((de|du)\.?|éjfél|délután|dél|reggel|este|éjjel)/i},g={any:{am:/^de\.?/i,pm:/^du\.?/i,midnight:/^éjf/i,noon:/^dé/i,morning:/reg/i,afternoon:/^délu\.?/i,evening:/es/i,night:/éjj/i}},v={ordinalNumber:a.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:i.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:i.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:i.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:i.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:i.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(622),i=n(623),r=n(624),o=n(625),u=n(626),s={code:"hy",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:1}};t.a=s},function(e,t,n){"use strict";function a(e,t,n){n=n||{};var a;return a="string"==typeof i[e]?i[e]:1===t?i[e].one:i[e].other.replace("{{count}}",t),n.addSuffix?n.comparison>0?a+" հետո":a+" առաջ":a}t.a=a;var i={lessThanXSeconds:{one:"ավելի քիչ քան 1 վայրկյան",other:"ավելի քիչ քան {{count}} վայրկյան"},xSeconds:{one:"1 վայրկյան",other:"{{count}} վայրկյան"},halfAMinute:"կես րոպե",lessThanXMinutes:{one:"ավելի քիչ քան 1 րոպե",other:"ավելի քիչ քան {{count}} րոպե"},xMinutes:{one:"1 րոպե",other:"{{count}} րոպե"},aboutXHours:{one:"մոտ 1 ժամ",other:"մոտ {{count}} ժամ"},xHours:{one:"1 ժամ",other:"{{count}} ժամ"},xDays:{one:"1 օր",other:"{{count}} օր"},aboutXWeeks:{one:"մոտ 1 շաբաթ",other:"մոտ {{count}} շաբաթ"},xWeeks:{one:"1 շաբաթ",other:"{{count}} շաբաթ"},aboutXMonths:{one:"մոտ 1 ամիս",other:"մոտ {{count}} ամիս"},xMonths:{one:"1 ամիս",other:"{{count}} ամիս"},aboutXYears:{one:"մոտ 1 տարի",other:"մոտ {{count}} տարի"},xYears:{one:"1 տարի",other:"{{count}} տարի"},overXYears:{one:"ավելի քան 1 տարի",other:"ավելի քան {{count}} տարի"},almostXYears:{one:"համարյա 1 տարի",other:"համարյա {{count}} տարի"}}},function(e,t,n){"use strict";var a=n(2),i={full:"d MMMM, y, EEEE",long:"d MMMM, y",medium:"d MMM, y",short:"dd.MM.yyyy"},r={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},o={full:"{{date}} 'ժ․'{{time}}",long:"{{date}} 'ժ․'{{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e,t,n,a){return i[e]}t.a=a;var i={lastWeek:"'նախորդ' eeee p'֊ին'",yesterday:"'երեկ' p'֊ին'",today:"'այսօր' p'֊ին'",tomorrow:"'վաղը' p'֊ին'",nextWeek:"'հաջորդ' eeee p'֊ին'",other:"P"}},function(e,t,n){"use strict";function a(e,t){var n=Number(e),a=n%100;return a<10&&a%10==1?n+"֊ին":n+"֊րդ"}var i=n(3),r={narrow:["Ք","Մ"],abbreviated:["ՔԱ","ՄԹ"],wide:["Քրիստոսից առաջ","Մեր թվարկության"]},o={narrow:["1","2","3","4"],abbreviated:["Ք1","Ք2","Ք3","Ք4"],wide:["1֊ին քառորդ","2֊րդ քառորդ","3֊րդ քառորդ","4֊րդ քառորդ"]},u={narrow:["Հ","Փ","Մ","Ա","Մ","Հ","Հ","Օ","Ս","Հ","Ն","Դ"],abbreviated:["հուն","փետ","մար","ապր","մայ","հուն","հուլ","օգս","սեպ","հոկ","նոյ","դեկ"],wide:["հունվար","փետրվար","մարտ","ապրիլ","մայիս","հունիս","հուլիս","օգոստոս","սեպտեմբեր","հոկտեմբեր","նոյեմբեր","դեկտեմբեր"]},s={narrow:["Կ","Ե","Ե","Չ","Հ","Ո","Շ"],short:["կր","եր","եք","չք","հգ","ուր","շբ"],abbreviated:["կիր","երկ","երք","չոր","հնգ","ուրբ","շաբ"],wide:["կիրակի","երկուշաբթի","երեքշաբթի","չորեքշաբթի","հինգշաբթի","ուրբաթ","շաբաթ"]},d={narrow:{am:"a",pm:"p",midnight:"կեսգշ",noon:"կեսօր",morning:"առավոտ",afternoon:"ցերեկ",evening:"երեկո",night:"գիշեր"},abbreviated:{am:"AM",pm:"PM",midnight:"կեսգիշեր",noon:"կեսօր",morning:"առավոտ",afternoon:"ցերեկ",evening:"երեկո",night:"գիշեր"},wide:{am:"a.m.",pm:"p.m.",midnight:"կեսգիշեր",noon:"կեսօր",morning:"առավոտ",afternoon:"ցերեկ",evening:"երեկո",night:"գիշեր"}},c={narrow:{am:"a",pm:"p",midnight:"կեսգշ",noon:"կեսօր",morning:"առավոտը",afternoon:"ցերեկը",evening:"երեկոյան",night:"գիշերը"},abbreviated:{am:"AM",pm:"PM",midnight:"կեսգիշերին",noon:"կեսօրին",morning:"առավոտը",afternoon:"ցերեկը",evening:"երեկոյան",night:"գիշերը"},wide:{am:"a.m.",pm:"p.m.",midnight:"կեսգիշերին",noon:"կեսօրին",morning:"առավոտը",afternoon:"ցերեկը",evening:"երեկոյան",night:"գիշերը"}},l={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:u,defaultWidth:"wide"}),day:i.a({values:s,defaultWidth:"wide"}),dayPeriod:i.a({values:d,defaultWidth:"wide",formattingValues:c,defaultFormattingWidth:"wide"})};t.a=l},function(e,t,n){"use strict";var a=n(4),i=n(5),r=/^(\d+)((-|֊)?(ին|րդ))?/i,o=/\d+/i,u={narrow:/^(Ք|Մ)/i,abbreviated:/^(Ք\.?\s?Ա\.?|Մ\.?\s?Թ\.?\s?Ա\.?|Մ\.?\s?Թ\.?|Ք\.?\s?Հ\.?)/i,wide:/^(քրիստոսից առաջ|մեր թվարկությունից առաջ|մեր թվարկության|քրիստոսից հետո)/i},s={any:[/^(ք|մ)/i]},d={narrow:/^[1234]/i,abbreviated:/^ք[1234]/i,wide:/^[1234]((-|֊)?(ին|րդ)) քառորդ/i},c={any:[/1/i,/2/i,/3/i,/4/i]},l={narrow:/^[հփմաօսնդ]/i,abbreviated:/^(հուն|փետ|մար|ապր|մայ|հուն|հուլ|օգս|սեպ|հոկ|նոյ|դեկ)/i,wide:/^(հունվար|փետրվար|մարտ|ապրիլ|մայիս|հունիս|հուլիս|օգոստոս|սեպտեմբեր|հոկտեմբեր|նոյեմբեր|դեկտեմբեր)/i},m={narrow:[/^հ/i,/^փ/i,/^մ/i,/^ա/i,/^մ/i,/^հ/i,/^հ/i,/^օ/i,/^ս/i,/^հ/i,/^ն/i,/^դ/i],any:[/^հու/i,/^փ/i,/^մար/i,/^ա/i,/^մայ/i,/^հուն/i,/^հուլ/i,/^օ/i,/^ս/i,/^հոկ/i,/^ն/i,/^դ/i]},f={narrow:/^[եչհոշկ]/i,short:/^(կր|եր|եք|չք|հգ|ուր|շբ)/i,abbreviated:/^(կիր|երկ|երք|չոր|հնգ|ուրբ|շաբ)/i,wide:/^(կիրակի|երկուշաբթի|երեքշաբթի|չորեքշաբթի|հինգշաբթի|ուրբաթ|շաբաթ)/i},h={narrow:[/^կ/i,/^ե/i,/^ե/i,/^չ/i,/^հ/i,/^(ո|Ո)/,/^շ/i],short:[/^կ/i,/^եր/i,/^եք/i,/^չ/i,/^հ/i,/^(ո|Ո)/,/^շ/i],abbreviated:[/^կ/i,/^երկ/i,/^երք/i,/^չ/i,/^հ/i,/^(ո|Ո)/,/^շ/i],wide:[/^կ/i,/^երկ/i,/^երե/i,/^չ/i,/^հ/i,/^(ո|Ո)/,/^շ/i]},p={narrow:/^([ap]|կեսգշ|կեսօր|(առավոտը?|ցերեկը?|երեկո(յան)?|գիշերը?))/i,any:/^([ap]\.?\s?m\.?|կեսգիշեր(ին)?|կեսօր(ին)?|(առավոտը?|ցերեկը?|երեկո(յան)?|գիշերը?))/i},g={any:{am:/^a/i,pm:/^p/i,midnight:/կեսգիշեր/i,noon:/կեսօր/i,morning:/առավոտ/i,afternoon:/ցերեկ/i,evening:/երեկո/i,night:/գիշեր/i}},v={ordinalNumber:a.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:i.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:i.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:i.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:i.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:i.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(628),i=n(629),r=n(630),o=n(631),u=n(632),s={code:"id",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:1}};t.a=s},function(e,t,n){"use strict";function a(e,t,n){n=n||{};var a;return a="string"==typeof i[e]?i[e]:1===t?i[e].one:i[e].other.replace("{{count}}",t),n.addSuffix?n.comparison>0?"dalam waktu "+a:a+" yang lalu":a}t.a=a;var i={lessThanXSeconds:{one:"kurang dari 1 detik",other:"kurang dari {{count}} detik"},xSeconds:{one:"1 detik",other:"{{count}} detik"},halfAMinute:"setengah menit",lessThanXMinutes:{one:"kurang dari 1 menit",other:"kurang dari {{count}} menit"},xMinutes:{one:"1 menit",other:"{{count}} menit"},aboutXHours:{one:"sekitar 1 jam",other:"sekitar {{count}} jam"},xHours:{one:"1 jam",other:"{{count}} jam"},xDays:{one:"1 hari",other:"{{count}} hari"},aboutXWeeks:{one:"sekitar 1 minggu",other:"sekitar {{count}} minggu"},xWeeks:{one:"1 minggu",other:"{{count}} minggu"},aboutXMonths:{one:"sekitar 1 bulan",other:"sekitar {{count}} bulan"},xMonths:{one:"1 bulan",other:"{{count}} bulan"},aboutXYears:{one:"sekitar 1 tahun",other:"sekitar {{count}} tahun"},xYears:{one:"1 tahun",other:"{{count}} tahun"},overXYears:{one:"lebih dari 1 tahun",other:"lebih dari {{count}} tahun"},almostXYears:{one:"hampir 1 tahun",other:"hampir {{count}} tahun"}}},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE, d MMMM yyyy",long:"d MMMM yyyy",medium:"d MMM yyyy",short:"d/M/yyyy"},r={full:"HH.mm.ss",long:"HH.mm.ss",medium:"HH.mm",short:"HH.mm"},o={full:"{{date}} 'pukul' {{time}}",long:"{{date}} 'pukul' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e,t,n,a){return i[e]}t.a=a;var i={lastWeek:"eeee 'lalu pukul' p",yesterday:"'Kemarin pukul' p",today:"'Hari ini pukul' p",tomorrow:"'Besok pukul' p",nextWeek:"eeee 'pukul' p",other:"P"}},function(e,t,n){"use strict";function a(e,t){var n=Number(e);return"ke-"+n}var i=n(3),r={narrow:["SM","M"],abbreviated:["SM","M"],wide:["Sebelum Masehi","Masehi"]},o={narrow:["1","2","3","4"],abbreviated:["K1","K2","K3","K4"],wide:["Kuartal ke-1","Kuartal ke-2","Kuartal ke-3","Kuartal ke-4"]},u={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Ags","Sep","Okt","Nov","Des"],wide:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"]},s={narrow:["M","S","S","R","K","J","S"],short:["Min","Sen","Sel","Rab","Kam","Jum","Sab"],abbreviated:["Min","Sen","Sel","Rab","Kam","Jum","Sab"],wide:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"]},d={narrow:{am:"AM",pm:"PM",midnight:"tengah malam",noon:"tengah hari",morning:"pagi",afternoon:"siang",evening:"sore",night:"malam"},abbreviated:{am:"AM",pm:"PM",midnight:"tengah malam",noon:"tengah hari",morning:"pagi",afternoon:"siang",evening:"sore",night:"malam"},wide:{am:"AM",pm:"PM",midnight:"tengah malam",noon:"tengah hari",morning:"pagi",afternoon:"siang",evening:"sore",night:"malam"}},c={narrow:{am:"AM",pm:"PM",midnight:"tengah malam",noon:"tengah hari",morning:"pagi",afternoon:"siang",evening:"sore",night:"malam"},abbreviated:{am:"AM",pm:"PM",midnight:"tengah malam",noon:"tengah hari",morning:"pagi",afternoon:"siang",evening:"sore",night:"malam"},wide:{am:"AM",pm:"PM",midnight:"tengah malam",noon:"tengah hari",morning:"pagi",afternoon:"siang",evening:"sore",night:"malam"}},l={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:u,defaultWidth:"wide"}),day:i.a({values:s,defaultWidth:"wide"}),dayPeriod:i.a({values:d,defaultWidth:"wide",formattingValues:c,defaultFormattingWidth:"wide"})};t.a=l},function(e,t,n){"use strict";var a=n(5),i=n(4),r=/^ke-(\d+)?/i,o=/\d+/i,u={narrow:/^(sm|m)/i,abbreviated:/^(s\.?\s?m\.?|s\.?\s?e\.?\s?u\.?|m\.?|e\.?\s?u\.?)/i,wide:/^(sebelum masehi|sebelum era umum|masehi|era umum)/i},s={any:[/^s/i,/^(m|e)/i]},d={narrow:/^[1234]/i,abbreviated:/^K-?\s[1234]/i,wide:/^Kuartal ke-?\s?[1234]/i},c={any:[/1/i,/2/i,/3/i,/4/i]},l={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|mei|jun|jul|agt|sep|okt|nov|des)/i,wide:/^(januari|februari|maret|april|mei|juni|juli|agustus|september|oktober|november|desember)/i},m={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^ma/i,/^ap/i,/^me/i,/^jun/i,/^jul/i,/^ag/i,/^s/i,/^o/i,/^n/i,/^d/i]},f={narrow:/^[srkjm]/i,short:/^(min|sen|sel|rab|kam|jum|sab)/i,abbreviated:/^(min|sen|sel|rab|kam|jum|sab)/i,wide:/^(minggu|senin|selasa|rabu|kamis|jumat|sabtu)/i},h={narrow:[/^m/i,/^s/i,/^s/i,/^r/i,/^k/i,/^j/i,/^s/i],any:[/^m/i,/^sen/i,/^sel/i,/^r/i,/^k/i,/^j/i,/^sa/i]},p={narrow:/^(a|p|tengah m|tengah h|(di(\swaktu)?) (pagi|siang|sore|malam))/i,any:/^([ap]\.?\s?m\.?|tengah malam|tengah hari|(di(\swaktu)?) (pagi|siang|sore|malam))/i},g={any:{am:/^a/i,pm:/^pm/i,midnight:/^tengah m/i,noon:/^tengah h/i,morning:/pagi/i,afternoon:/siang/i,evening:/sore/i,night:/malam/i}},v={ordinalNumber:i.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:a.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:a.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:a.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:a.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:a.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(634),i=n(635),r=n(636),o=n(637),u=n(638),s={code:"is",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:4}};t.a=s},function(e,t,n){"use strict";function a(e,t,n){n=n||{};var a;return a="string"==typeof i[e]?i[e]:1===t?i[e].one:i[e].other.replace("{{count}}",t),n.addSuffix?n.comparison>0?"í "+a:a+" síðan":a}t.a=a;var i={lessThanXSeconds:{one:"minna en 1 sekúnda",other:"minna en {{count}} sekúndur"},xSeconds:{one:"1 sekúnda",other:"{{count}} sekúndur"},halfAMinute:"hálf mínúta",lessThanXMinutes:{one:"minna en 1 mínúta",other:"minna en {{count}} mínútur"},xMinutes:{one:"1 mínúta",other:"{{count}} mínútur"},aboutXHours:{one:"u.þ.b. 1 klukkustund",other:"u.þ.b. {{count}} klukkustundir"},xHours:{one:"1 klukkustund",other:"{{count}} klukkustundir"},xDays:{one:"1 dagur",other:"{{count}} dagar"},aboutXWeeks:{one:"um viku",other:"um {{count}} vikur"},xWeeks:{one:"1 viku",other:"{{count}} vikur"},aboutXMonths:{one:"u.þ.b. 1 mánuður",other:"u.þ.b. {{count}} mánuðir"},xMonths:{one:"1 mánuður",other:"{{count}} mánuðir"},aboutXYears:{one:"u.þ.b. 1 ár",other:"u.þ.b. {{count}} ár"},xYears:{one:"1 ár",other:"{{count}} ár"},overXYears:{one:"meira en 1 ár",other:"meira en {{count}} ár"},almostXYears:{one:"næstum 1 ár",other:"næstum {{count}} ár"}}},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE, do MMMM y",long:"do MMMM y",medium:"do MMM y",short:"d.MM.y"},r={full:"'kl'. HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},o={full:"{{date}} 'kl.' {{time}}",long:"{{date}} 'kl.' {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e,t,n,a){return i[e]}t.a=a;var i={lastWeek:"'síðasta' dddd 'kl.' p",yesterday:"'í gær kl.' p",today:"'í dag kl.' p",tomorrow:"'á morgun kl.' p",nextWeek:"dddd 'kl.' p",other:"L"}},function(e,t,n){"use strict";function a(e,t){return Number(e)+"."}var i=n(3),r={narrow:["f.Kr.","e.Kr."],abbreviated:["f.Kr.","e.Kr."],wide:["fyrir Krist","eftir Krist"]},o={narrow:["1","2","3","4"],abbreviated:["1F","2F","3F","4F"],wide:["1. fjórðungur","2. fjórðungur","3. fjórðungur","4. fjórðungur"]},u={narrow:["J","F","M","A","M","J","J","Á","S","Ó","N","D"],abbreviated:["jan.","feb.","mars","apríl","maí","júní","júlí","ágúst","sept.","okt.","nóv.","des."],wide:["janúar","febrúar","mars","apríl","maí","júní","júlí","ágúst","september","október","nóvember","desember"]},s={narrow:["S","M","Þ","M","F","F","L"],short:["Su","Má","Þr","Mi","Fi","Fö","La"],abbreviated:["sun.","mán.","þri.","mið.","fim.","fös.","lau"],wide:["sunnudagur","mánudagur","þriðjudagur","miðvikudagur","fimmtudagur","föstudagur","laugardagur"]},d={narrow:{am:"f",pm:"e",midnight:"miðnætti",noon:"hádegi",morning:"morgunn",afternoon:"síðdegi",evening:"kvöld",night:"nótt"},abbreviated:{am:"f.h.",pm:"e.h.",midnight:"miðnætti",noon:"hádegi",morning:"morgunn",afternoon:"síðdegi",evening:"kvöld",night:"nótt"},wide:{am:"fyrir hádegi",pm:"eftir hádegi",midnight:"miðnætti",noon:"hádegi",morning:"morgunn",afternoon:"síðdegi",evening:"kvöld",night:"nótt"}},c={narrow:{am:"f",pm:"e",midnight:"á miðnætti",noon:"á hádegi",morning:"að morgni",afternoon:"síðdegis",evening:"um kvöld",night:"um nótt"},abbreviated:{am:"f.h.",pm:"e.h.",midnight:"á miðnætti",noon:"á hádegi",morning:"að morgni",afternoon:"síðdegis",evening:"um kvöld",night:"um nótt"},wide:{am:"fyrir hádegi",pm:"eftir hádegi",midnight:"á miðnætti",noon:"á hádegi",morning:"að morgni",afternoon:"síðdegis",evening:"um kvöld",night:"um nótt"}},l={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:u,defaultWidth:"wide"}),day:i.a({values:s,defaultWidth:"wide"}),dayPeriod:i.a({values:d,defaultWidth:"wide",formattingValues:c,defaultFormattingWidth:"wide"})};t.a=l},function(e,t,n){"use strict";var a=n(4),i=n(5),r=/^(\d+)(th|st|nd|rd)?/i,o=/\d+/i,u={narrow:/^(f\.Kr\.|e\.Kr\.)/i,abbreviated:/^(f\.Kr\.|e\.Kr\.)/i,wide:/^(fyrir Krist|eftir Krist)/i},s={any:[/^(f\.Kr\.|e\.Kr\.)/i]},d={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234] fjórðungur/i},c={any:[/1/i,/2/i,/3/i,/4/i]},l={narrow:/^[jfmásónd]/i,abbreviated:/^(jan\.|feb\.|mars\.|apríl\.|maí|júní|júlí|águst|sep\.|oct\.|nov\.|dec\.)/i,wide:/^(januar|februar|mars|apríl|maí|júní|júlí|águst|september|október|nóvember|desember)/i},m={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^á/i,/^s/i,/^ó/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^maí/i,/^jún/i,/^júl/i,/^áu/i,/^s/i,/^ó/i,/^n/i,/^d/i]},f={narrow:/^[smtwf]/i,short:/^(su|má|þr|mi|fi|fö|la)/i,abbreviated:/^(sun|mán|þri|mið|fim|fös|lau)\.?/i,wide:/^(sunnudagur|mánudagur|þriðjudagur|miðvikudagur|fimmtudagur|föstudagur|laugardagur)/i},h={narrow:[/^s/i,/^m/i,/^þ/i,/^m/i,/^f/i,/^f/i,/^l/i],any:[/^su/i,/^má/i,/^þr/i,/^mi/i,/^fi/i,/^fö/i,/^la/i]},p={narrow:/^(f|e|síðdegis|(á|að|um) (morgni|kvöld|nótt|miðnætti))/i,any:/^(fyrir hádegi|eftir hádegi|[ef]\.?h\.?|síðdegis|morgunn|(á|að|um) (morgni|kvöld|nótt|miðnætti))/i},g={any:{am:/^f/i,pm:/^e/i,midnight:/^mi/i,noon:/^há/i,morning:/morgunn/i,afternoon:/síðdegi/i,evening:/kvöld/i,night:/nótt/i}},v={ordinalNumber:a.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:i.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:i.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:i.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:i.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:i.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(640),i=n(641),r=n(642),o=n(643),u=n(644),s={code:"it",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:4}};t.a=s},function(e,t,n){"use strict";function a(e,t,n){n=n||{};var a;return a="string"==typeof i[e]?i[e]:1===t?i[e].one:i[e].other.replace("{{count}}",t),n.addSuffix?n.comparison>0?"tra "+a:a+" fa":a}t.a=a;var i={lessThanXSeconds:{one:"meno di un secondo",other:"meno di {{count}} secondi"},xSeconds:{one:"un secondo",other:"{{count}} secondi"},halfAMinute:"alcuni secondi",lessThanXMinutes:{one:"meno di un minuto",other:"meno di {{count}} minuti"},xMinutes:{one:"un minuto",other:"{{count}} minuti"},aboutXHours:{one:"circa un'ora",other:"circa {{count}} ore"},xHours:{one:"un'ora",other:"{{count}} ore"},xDays:{one:"un giorno",other:"{{count}} giorni"},aboutXWeeks:{one:"circa una settimana",other:"circa {{count}} settimane"},xWeeks:{one:"una settimana",other:"{{count}} settimane"},aboutXMonths:{one:"circa un mese",other:"circa {{count}} mesi"},xMonths:{one:"un mese",other:"{{count}} mesi"},aboutXYears:{one:"circa un anno",other:"circa {{count}} anni"},xYears:{one:"un anno",other:"{{count}} anni"},overXYears:{one:"più di un anno",other:"più di {{count}} anni"},almostXYears:{one:"quasi un anno",other:"quasi {{count}} anni"}}},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE d MMMM y",long:"d MMMM y",medium:"d MMM y",short:"dd/MM/y"},r={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},o={full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e){switch(e){case 0:return"'domenica scorsa alle' p";default:return"'"+s[e]+" scorso alle' p"}}function i(e){return"'"+s[e]+" alle' p"}function r(e){switch(e){case 0:return"'domenica prossima alle' p";default:return"'"+s[e]+" prossimo alle' p"}}function o(e,t,n,a){var i=d[e];return"function"==typeof i?i(t,n,a):i}t.a=o;var u=n(13),s=["domenica","lunedì","martedì","mercoledì","giovedì","venerdì","sabato"],d={lastWeek:function(e,t,n){var r=e.getUTCDay();return u.a(e,t,n)?i(r):a(r)},yesterday:"'ieri alle' p",today:"'oggi alle' p",tomorrow:"'domani alle' p",nextWeek:function(e,t,n){var a=e.getUTCDay();return u.a(e,t,n)?i(a):r(a)},other:"P"}},function(e,t,n){"use strict";function a(e){return Number(e)+"º"}var i=n(3),r={narrow:["aC","dC"],abbreviated:["a.C.","d.C."],wide:["avanti Cristo","dopo Cristo"]},o={narrow:["1","2","3","4"],abbreviated:["T1","T2","T3","T4"],wide:["1º trimestre","2º trimestre","3º trimestre","4º trimestre"]},u={narrow:["G","F","M","A","M","G","L","A","S","O","N","D"],abbreviated:["gen","feb","mar","apr","mag","giu","lug","ago","set","ott","nov","dic"],wide:["gennaio","febbraio","marzo","aprile","maggio","giugno","luglio","agosto","settembre","ottobre","novembre","dicembre"]},s={narrow:["D","L","M","M","G","V","S"],short:["dom","lun","mar","mer","gio","ven","sab"],abbreviated:["dom","lun","mar","mer","gio","ven","sab"],wide:["domenica","lunedì","martedì","mercoledì","giovedì","venerdì","sabato"]},d={narrow:{am:"m.",pm:"p.",midnight:"mezzanotte",noon:"mezzogiorno",morning:"mattina",afternoon:"pomeriggio",evening:"sera",night:"notte"},abbreviated:{am:"AM",pm:"PM",midnight:"mezzanotte",noon:"mezzogiorno",morning:"mattina",afternoon:"pomeriggio",evening:"sera",night:"notte"},wide:{am:"AM",pm:"PM",midnight:"mezzanotte",noon:"mezzogiorno",morning:"mattina",afternoon:"pomeriggio",evening:"sera",night:"notte"}},c={narrow:{am:"m.",pm:"p.",midnight:"mezzanotte",noon:"mezzogiorno",morning:"di mattina",afternoon:"del pomeriggio",evening:"di sera",night:"di notte"},abbreviated:{am:"AM",pm:"PM",midnight:"mezzanotte",noon:"mezzogiorno",morning:"di mattina",afternoon:"del pomeriggio",evening:"di sera",night:"di notte"},wide:{am:"AM",pm:"PM",midnight:"mezzanotte",noon:"mezzogiorno",morning:"di mattina",afternoon:"del pomeriggio",evening:"di sera",night:"di notte"}},l={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:u,defaultWidth:"wide"}),day:i.a({values:s,defaultWidth:"wide"}),dayPeriod:i.a({values:d,defaultWidth:"wide",formattingValues:c,defaultFormattingWidth:"wide"})};t.a=l},function(e,t,n){"use strict";var a=n(4),i=n(5),r=/^(\d+)(º)?/i,o=/\d+/i,u={narrow:/^(aC|dC)/i,abbreviated:/^(a\.?\s?C\.?|a\.?\s?e\.?\s?v\.?|d\.?\s?C\.?|e\.?\s?v\.?)/i,wide:/^(avanti Cristo|avanti Era Volgare|dopo Cristo|Era Volgare)/i},s={any:[/^a/i,/^(d|e)/i]},d={narrow:/^[1234]/i,abbreviated:/^t[1234]/i,wide:/^[1234](º)? trimestre/i},c={any:[/1/i,/2/i,/3/i,/4/i]},l={narrow:/^[gfmalsond]/i,abbreviated:/^(gen|feb|mar|apr|mag|giu|lug|ago|set|ott|nov|dic)/i,wide:/^(gennaio|febbraio|marzo|aprile|maggio|giugno|luglio|agosto|settembre|ottobre|novembre|dicembre)/i},m={narrow:[/^g/i,/^f/i,/^m/i,/^a/i,/^m/i,/^g/i,/^l/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ge/i,/^f/i,/^mar/i,/^ap/i,/^mag/i,/^gi/i,/^l/i,/^ag/i,/^s/i,/^o/i,/^n/i,/^d/i]},f={narrow:/^[dlmgvs]/i,short:/^(do|lu|ma|me|gi|ve|sa)/i,abbreviated:/^(dom|lun|mar|mer|gio|ven|sab)/i,wide:/^(domenica|luned[i|ì]|marted[i|ì]|mercoled[i|ì]|gioved[i|ì]|venerd[i|ì]|sabato)/i},h={narrow:[/^d/i,/^l/i,/^m/i,/^m/i,/^g/i,/^v/i,/^s/i],any:[/^d/i,/^l/i,/^ma/i,/^me/i,/^g/i,/^v/i,/^s/i]},p={narrow:/^(a|m\.|p|mezzanotte|mezzogiorno|(di|del) (mattina|pomeriggio|sera|notte))/i,any:/^([ap]\.?\s?m\.?|mezzanotte|mezzogiorno|(di|del) (mattina|pomeriggio|sera|notte))/i},g={any:{am:/^a/i,pm:/^p/i,midnight:/^mezza/i,noon:/^mezzo/i,morning:/mattina/i,afternoon:/pomeriggio/i,evening:/sera/i,night:/notte/i}},v={ordinalNumber:a.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:i.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:i.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:i.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:i.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:i.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(646),i=n(647),r=n(648),o=n(649),u=n(650),s={code:"ja",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:1}};t.a=s},function(e,t,n){"use strict";function a(e,t,n){n=n||{};var a;return a="string"==typeof i[e]?i[e]:1===t?n.addSuffix&&i[e].oneWithSuffix?i[e].oneWithSuffix:i[e].one:n.addSuffix&&i[e].otherWithSuffix?i[e].otherWithSuffix.replace("{{count}}",t):i[e].other.replace("{{count}}",t),n.addSuffix?n.comparison>0?a+"後":a+"前":a}t.a=a;var i={lessThanXSeconds:{one:"1秒未満",other:"{{count}}秒未満",oneWithSuffix:"約1秒",otherWithSuffix:"約{{count}}秒"},xSeconds:{one:"1秒",other:"{{count}}秒"},halfAMinute:"30秒",lessThanXMinutes:{one:"1分未満",other:"{{count}}分未満",oneWithSuffix:"約1分",otherWithSuffix:"約{{count}}分"},xMinutes:{one:"1分",other:"{{count}}分"},aboutXHours:{one:"約1時間",other:"約{{count}}時間"},xHours:{one:"1時間",other:"{{count}}時間"},xDays:{one:"1日",other:"{{count}}日"},aboutXWeeks:{one:"約1週間",other:"約{{count}}週間"},xWeeks:{one:"1週間",other:"{{count}}週間"},aboutXMonths:{one:"約1か月",other:"約{{count}}か月"},xMonths:{one:"1か月",other:"{{count}}か月"},aboutXYears:{one:"約1年",other:"約{{count}}年"},xYears:{one:"1年",other:"{{count}}年"},overXYears:{one:"1年以上",other:"{{count}}年以上"},almostXYears:{one:"1年近く",other:"{{count}}年近く"}}},function(e,t,n){"use strict";var a=n(2),i={full:"y年M月d日EEEE",long:"y年M月d日",medium:"y/MM/dd",short:"y/MM/dd"},r={full:"H時mm分ss秒 zzzz",long:"H:mm:ss z",medium:"H:mm:ss",short:"H:mm"},o={full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e,t,n,a){return i[e]}t.a=a;var i={lastWeek:"先週のeeeeのp",yesterday:"昨日のp",today:"今日のp",tomorrow:"明日のp",nextWeek:"翌週のeeeeのp",other:"P"}},function(e,t,n){"use strict";function a(e,t){var n=Number(e),a=t||{};return"date"===String(a.unit)?n+"日":n}var i=n(3),r={narrow:["BC","AC"],abbreviated:["紀元前","西暦"],wide:["紀元前","西暦"]},o={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["第1四半期","第2四半期","第3四半期","第4四半期"]},u={narrow:["1","2","3","4","5","6","7","8","9","10","11","12"],abbreviated:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],wide:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"]},s={narrow:["日","月","火","水","木","金","土"],short:["日","月","火","水","木","金","土"],abbreviated:["日","月","火","水","木","金","土"],wide:["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"]},d={narrow:{am:"午前",pm:"午後",midnight:"深夜",noon:"正午",morning:"朝",afternoon:"午後",evening:"夜",night:"深夜"},abbreviated:{am:"午前",pm:"午後",midnight:"深夜",noon:"正午",morning:"朝",afternoon:"午後",evening:"夜",night:"深夜"},wide:{am:"午前",pm:"午後",midnight:"深夜",noon:"正午",morning:"朝",afternoon:"午後",evening:"夜",night:"深夜"}},c={narrow:{am:"午前",pm:"午後",midnight:"深夜",noon:"正午",morning:"朝",afternoon:"午後",evening:"夜",night:"深夜"},abbreviated:{am:"午前",pm:"午後",midnight:"深夜",noon:"正午",morning:"朝",afternoon:"午後",evening:"夜",night:"深夜"},wide:{am:"午前",pm:"午後",midnight:"深夜",noon:"正午",morning:"朝",afternoon:"午後",evening:"夜",night:"深夜"}},l={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:u,defaultWidth:"wide"}),day:i.a({values:s,defaultWidth:"wide"}),dayPeriod:i.a({values:d,defaultWidth:"wide",formattingValues:c,defaultFormattingWidth:"wide"})};t.a=l},function(e,t,n){"use strict";var a=n(4),i=n(5),r=/^第?\d+(日)?/i,o=/\d+/i,u={narrow:/^(B\.?C\.?|A\.?D\.?)/i,abbreviated:/^(紀元[前後]|西暦)/i,wide:/^(紀元[前後]|西暦)/i},s={narrow:[/^B/i,/^A/i],any:[/^(紀元前)/i,/^(西暦|紀元後)/i]},d={narrow:/^[1234]/i,abbreviated:/^Q[1234]/i,wide:/^第[1234一二三四1234]四半期/i},c={any:[/(1|一|1)/i,/(2|二|2)/i,/(3|三|3)/i,/(4|四|4)/i]},l={narrow:/^([123456789]|1[012])/,abbreviated:/^([123456789]|1[012])月/i,wide:/^([123456789]|1[012])月/i},m={any:[/^1\D/,/^2/,/^3/,/^4/,/^5/,/^6/,/^7/,/^8/,/^9/,/^10/,/^11/,/^12/]},f={narrow:/^[日月火水木金土]/,short:/^[日月火水木金土]/,abbreviated:/^[日月火水木金土]/,wide:/^[日月火水木金土]曜日/},h={any:[/^日/,/^月/,/^火/,/^水/,/^木/,/^金/,/^土/]},p={any:/^(AM|PM|午前|午後|正午|深夜|真夜中|夜|朝)/i},g={any:{am:/^(A|午前)/i,pm:/^(P|午後)/i,midnight:/^深夜|真夜中/i,noon:/^正午/i,morning:/^朝/i,afternoon:/^午後/i,evening:/^夜/i,night:/^深夜/i}},v={ordinalNumber:a.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:i.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:i.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:i.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:i.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:i.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(652),i=n(653),r=n(654),o=n(655),u=n(656),s={code:"ka",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:1}};t.a=s},function(e,t,n){"use strict";function a(e,t,n){n=n||{};return"string"==typeof i[e]?i[e]:n.addSuffix&&n.comparison>0?i[e].future.replace("{{count}}",t):n.addSuffix&&n.comparison<=0?i[e].past.replace("{{count}}",t):i[e].present.replace("{{count}}",t)}t.a=a;var i={lessThanXSeconds:{past:"{{count}} წამზე ნაკლები ხნის წინ",present:"{{count}} წამზე ნაკლები",future:"{{count}} წამზე ნაკლებში"},xSeconds:{past:"{{count}} წამის წინ",present:"{{count}} წამი",future:"{{count}} წამში"},halfAMinute:{past:"ნახევარი წუთის წინ",present:"ნახევარი წუთი",future:"ნახევარი წუთში"},lessThanXMinutes:{past:"{{count}} წუთზე ნაკლები ხნის წინ",present:"{{count}} წუთზე ნაკლები",future:"{{count}} წუთზე ნაკლებში"},xMinutes:{past:"{{count}} წუთის წინ",present:"{{count}} წუთი",future:"{{count}} წუთში"},aboutXHours:{past:"დაახლოებით {{count}} საათის წინ",present:"დაახლოებით {{count}} საათი",future:"დაახლოებით {{count}} საათში"},xHours:{past:"{{count}} საათის წინ",present:"{{count}} საათი",future:"{{count}} საათში"},xDays:{past:"{{count}} დღის წინ",present:"{{count}} დღე",future:"{{count}} დღეში"},aboutXWeeks:{past:"დაახლოებით {{count}} კვირას წინ",present:"დაახლოებით {{count}} კვირა",future:"დაახლოებით {{count}} კვირაში"},xWeeks:{past:"{{count}} კვირას კვირა",present:"{{count}} კვირა",future:"{{count}} კვირაში"},aboutXMonths:{past:"დაახლოებით {{count}} თვის წინ",present:"დაახლოებით {{count}} თვე",future:"დაახლოებით {{count}} თვეში"},xMonths:{past:"{{count}} თვის წინ",present:"{{count}} თვე",future:"{{count}} თვეში"},aboutXYears:{past:"დაახლოებით {{count}} წლის წინ",present:"დაახლოებით {{count}} წელი",future:"დაახლოებით {{count}} წელში"},xYears:{past:"{{count}} წლის წინ",present:"{{count}} წელი",future:"{{count}} წელში"},overXYears:{past:"{{count}} წელზე მეტი ხნის წინ",present:"{{count}} წელზე მეტი",future:"{{count}} წელზე მეტი ხნის შემდეგ"},almostXYears:{past:"თითქმის {{count}} წლის წინ",present:"თითქმის {{count}} წელი",future:"თითქმის {{count}} წელში"}}},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE, do MMMM, y",long:"do, MMMM, y",medium:"d, MMM, y",short:"dd/MM/yyyy"},r={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},o={full:"{{date}} {{time}}'-ზე'",long:"{{date}} {{time}}'-ზე'",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e,t,n,a){return i[e]}t.a=a;var i={lastWeek:"'წინა' eeee LT'-ზე'",yesterday:"'გუშინ' LT'-ზე'",today:"'დღეს' LT'-ზე'",tomorrow:"'ხვალ' LT'-ზე'",nextWeek:"'შემდეგი' eeee LT'-ზე'",other:"L"}},function(e,t,n){"use strict";function a(e,t){var n=Number(e);return 1===n?n+"-ლი":n+"-ე"}var i=n(3),r={narrow:["ჩ.წ-მდე","ჩ.წ"],abbreviated:["ჩვ.წ-მდე","ჩვ.წ"],wide:["ჩვენს წელთაღრიცხვამდე","ჩვენი წელთაღრიცხვით"]},o={narrow:["1","2","3","4"],abbreviated:["1-ლი კვ","2-ე კვ","3-ე კვ","4-ე კვ"],wide:["1-ლი კვარტალი","2-ე კვარტალი","3-ე კვარტალი","4-ე კვარტალი"]},u={narrow:["ია","თე","მა","აპ","მს","ვნ","ვლ","აგ","სე","ოქ","ნო","დე"],abbreviated:["იან","თებ","მარ","აპრ","მაი","ივნ","ივლ","აგვ","სექ","ოქტ","ნოე","დეკ"],wide:["იანვარი","თებერვალი","მარტი","აპრილი","მაისი","ივნისი","ივლისი","აგვისტო","სექტემბერი","ოქტომბერი","ნოემბერი","დეკემბერი"]},s={narrow:["კვ","ორ","სა","ოთ","ხუ","პა","შა"],short:["კვი","ორშ","სამ","ოთხ","ხუთ","პარ","შაბ"],abbreviated:["კვი","ორშ","სამ","ოთხ","ხუთ","პარ","შაბ"],wide:["კვირა","ორშაბათი","სამშაბათი","ოთხშაბათი","ხუთშაბათი","პარასკევი","შაბათი"]},d={narrow:{am:"a",pm:"p",midnight:"შუაღამე",noon:"შუადღე",morning:"დილა",afternoon:"საღამო",evening:"საღამო",night:"ღამე"},abbreviated:{am:"AM",pm:"PM",midnight:"შუაღამე",noon:"შუადღე",morning:"დილა",afternoon:"საღამო",evening:"საღამო",night:"ღამე"},wide:{am:"a.m.",pm:"p.m.",midnight:"შუაღამე",noon:"შუადღე",morning:"დილა",afternoon:"საღამო",evening:"საღამო",night:"ღამე"}},c={narrow:{am:"a",pm:"p",midnight:"შუაღამით",noon:"შუადღისას",morning:"დილით",afternoon:"ნაშუადღევს",evening:"საღამოს",night:"ღამით"},abbreviated:{am:"AM",pm:"PM",midnight:"შუაღამით",noon:"შუადღისას",morning:"დილით",afternoon:"ნაშუადღევს",evening:"საღამოს",night:"ღამით"},wide:{am:"a.m.",pm:"p.m.",midnight:"შუაღამით",noon:"შუადღისას",morning:"დილით",afternoon:"ნაშუადღევს",evening:"საღამოს",night:"ღამით"}},l={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:u,defaultWidth:"wide"}),day:i.a({values:s,defaultWidth:"wide"}),dayPeriod:i.a({values:d,defaultWidth:"wide",formattingValues:c,defaultFormattingWidth:"wide"})};t.a=l},function(e,t,n){"use strict";var a=n(4),i=n(5),r=/^(\d+)(-ლი|-ე)?/i,o=/\d+/i,u={narrow:/^(ჩვ?\.წ)/i,abbreviated:/^(ჩვ?\.წ)/i,wide:/^(ჩვენს წელთაღრიცხვამდე|ქრისტეშობამდე|ჩვენი წელთაღრიცხვით|ქრისტეშობიდან)/i},s={any:[/^(ჩვენს წელთაღრიცხვამდე|ქრისტეშობამდე)/i,/^(ჩვენი წელთაღრიცხვით|ქრისტეშობიდან)/i]},d={narrow:/^[1234]/i,abbreviated:/^[1234]-(ლი|ე)? კვ/i,wide:/^[1234]-(ლი|ე)? კვარტალი/i},c={any:[/1/i,/2/i,/3/i,/4/i]},l={any:/^(ია|თე|მა|აპ|მს|ვნ|ვლ|აგ|სე|ოქ|ნო|დე)/i},m={any:[/^ია/i,/^თ/i,/^მარ/i,/^აპ/i,/^მაი/i,/^ი?ვნ/i,/^ი?ვლ/i,/^აგ/i,/^ს/i,/^ო/i,/^ნ/i,/^დ/i]},f={narrow:/^(კვ|ორ|სა|ოთ|ხუ|პა|შა)/i,short:/^(კვი|ორშ|სამ|ოთხ|ხუთ|პარ|შაბ)/i,long:/^(კვირა|ორშაბათი|სამშაბათი|ოთხშაბათი|ხუთშაბათი|პარასკევი|შაბათი)/i},h={any:[/^კვ/i,/^ორ/i,/^სა/i,/^ოთ/i,/^ხუ/i,/^პა/i,/^შა/i]},p={any:/^([ap]\.?\s?m\.?|შუაღ|დილ)/i},g={any:{am:/^a/i,pm:/^p/i,midnight:/^შუაღ/i,noon:/^შუადღ/i,morning:/^დილ/i,afternoon:/ნაშუადღევს/i,evening:/საღამო/i,night:/ღამ/i}},v={ordinalNumber:a.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:i.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:i.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:i.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:i.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:i.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(658),i=n(659),r=n(660),o=n(661),u=n(662),s={code:"kk",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:1}};t.a=s},function(e,t,n){"use strict";function a(e,t){if(void 0!==e.one&&1===t)return e.one;var n=t%10,a=t%100;return 1===n&&11!==a?e.singularNominative.replace("{{count}}",t):n>=2&&n<=4&&(a<10||a>20)?e.singularGenitive.replace("{{count}}",t):e.pluralGenitive.replace("{{count}}",t)}function i(e){return function(t,n){return n.addSuffix?n.comparison>0?e.future?a(e.future,t):a(e.regular,t)+" кейін":e.past?a(e.past,t):a(e.regular,t)+" бұрын":a(e.regular,t)}}function r(e,t,n){return n=n||{},o[e](t,n)}t.a=r;var o={lessThanXSeconds:i({regular:{one:"1 секундтан аз",singularNominative:"{{count}} секундтан аз",singularGenitive:"{{count}} секундтан аз",pluralGenitive:"{{count}} секундтан аз"},future:{one:"бір секундтан кейін",singularNominative:"{{count}} секундтан кейін",singularGenitive:"{{count}} секундтан кейін",pluralGenitive:"{{count}} секундтан кейін"}}),xSeconds:i({regular:{singularNominative:"{{count}} секунд",singularGenitive:"{{count}} секунд",pluralGenitive:"{{count}} секунд"},past:{singularNominative:"{{count}} секунд бұрын",singularGenitive:"{{count}} секунд бұрын",pluralGenitive:"{{count}} секунд бұрын"},future:{singularNominative:"{{count}} секундтан кейін",singularGenitive:"{{count}} секундтан кейін",pluralGenitive:"{{count}} секундтан кейін"}}),halfAMinute:function(e,t){return t.addSuffix?t.comparison>0?"жарты минут ішінде":"жарты минут бұрын":"жарты минут"},lessThanXMinutes:i({regular:{one:"1 минуттан аз",singularNominative:"{{count}} минуттан аз",singularGenitive:"{{count}} минуттан аз",pluralGenitive:"{{count}} минуттан аз"},future:{one:"минуттан кем ",singularNominative:"{{count}} минуттан кем",singularGenitive:"{{count}} минуттан кем",pluralGenitive:"{{count}} минуттан кем"}}),xMinutes:i({regular:{singularNominative:"{{count}} минут",singularGenitive:"{{count}} минут",pluralGenitive:"{{count}} минут"},past:{singularNominative:"{{count}} минут бұрын",singularGenitive:"{{count}} минут бұрын",pluralGenitive:"{{count}} минут бұрын"},future:{singularNominative:"{{count}} минуттан кейін",singularGenitive:"{{count}} минуттан кейін",pluralGenitive:"{{count}} минуттан кейін"}}),aboutXHours:i({regular:{singularNominative:"шамамен {{count}} сағат",singularGenitive:"шамамен {{count}} сағат",pluralGenitive:"шамамен {{count}} сағат"},future:{singularNominative:"шамамен {{count}} сағаттан кейін",singularGenitive:"шамамен {{count}} сағаттан кейін",pluralGenitive:"шамамен {{count}} сағаттан кейін"}}),xHours:i({regular:{singularNominative:"{{count}} сағат",singularGenitive:"{{count}} сағат",pluralGenitive:"{{count}} сағат"}}),xDays:i({regular:{singularNominative:"{{count}} күн",singularGenitive:"{{count}} күн",pluralGenitive:"{{count}} күн"},future:{singularNominative:"{{count}} күннен кейін",singularGenitive:"{{count}} күннен кейін",pluralGenitive:"{{count}} күннен кейін"}}),aboutXWeeks:{one:"шамамен 1 апта",other:"шамамен {{count}} апта"},xWeeks:{one:"1 апта",other:"{{count}} апта"},aboutXMonths:i({regular:{singularNominative:"шамамен {{count}} ай",singularGenitive:"шамамен {{count}} ай",pluralGenitive:"шамамен {{count}} ай"},future:{singularNominative:"шамамен {{count}} айдан кейін",singularGenitive:"шамамен {{count}} айдан кейін",pluralGenitive:"шамамен {{count}} айдан кейін"}}),xMonths:i({regular:{singularNominative:"{{count}} ай",singularGenitive:"{{count}} ай",pluralGenitive:"{{count}} ай"}}),aboutXYears:i({regular:{singularNominative:"шамамен {{count}} жыл",singularGenitive:"шамамен {{count}} жыл",pluralGenitive:"шамамен {{count}} жыл"},future:{singularNominative:"шамамен {{count}} жылдан кейін",singularGenitive:"шамамен {{count}} жылдан кейін",pluralGenitive:"шамамен {{count}} жылдан кейін"}}),xYears:i({regular:{singularNominative:"{{count}} жыл",singularGenitive:"{{count}} жыл",pluralGenitive:"{{count}} жыл"},future:{singularNominative:"{{count}} жылдан кейін",singularGenitive:"{{count}} жылдан кейін",pluralGenitive:"{{count}} жылдан кейін"}}),overXYears:i({regular:{singularNominative:"{{count}} жылдан астам",singularGenitive:"{{count}} жылдан астам",pluralGenitive:"{{count}} жылдан астам"},future:{singularNominative:"{{count}} жылдан астам",singularGenitive:"{{count}} жылдан астам",pluralGenitive:"{{count}} жылдан астам"}}),almostXYears:i({regular:{singularNominative:"{{count}} жылға жақын",singularGenitive:"{{count}} жылға жақын",pluralGenitive:"{{count}} жылға жақын"},future:{singularNominative:"{{count}} жылдан кейін",singularGenitive:"{{count}} жылдан кейін",pluralGenitive:"{{count}} жылдан кейін"}})}},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE, do MMMM y 'ж.'",long:"do MMMM y 'ж.'",medium:"d MMM y 'ж.'",short:"dd.MM.yyyy"},r={full:"H:mm:ss zzzz",long:"H:mm:ss z",medium:"H:mm:ss",short:"H:mm"},o={any:"{{date}}, {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"any"})};t.a=u},function(e,t,n){"use strict";function a(e){return"'өткен "+s[e]+" сағат' p'-де'"}function i(e){return"'"+s[e]+" сағат' p'-де'"}function r(e){return"'келесі "+s[e]+" сағат' p'-де'"}function o(e,t,n,a){var i=d[e];return"function"==typeof i?i(t,n,a):i}t.a=o;var u=n(13),s=["жексенбіде","дүйсенбіде","сейсенбіде","сәрсенбіде","бейсенбіде","жұмада","сенбіде"],d={lastWeek:function(e,t,n){var r=e.getUTCDay();return u.a(e,t,n)?i(r):a(r)},yesterday:"'кеше сағат' p'-де'",today:"'бүгін сағат' p'-де'",tomorrow:"'ертең сағат' p'-де'",nextWeek:function(e,t,n){var a=e.getUTCDay();return u.a(e,t,n)?i(a):r(a)},other:"P"}},function(e,t,n){"use strict";function a(e,t){var n,a=t||{};String(a.unit);return n="-ші",e+n}var i=n(3),r={narrow:["б.з.д.","б.з."],abbreviated:["б.з.д.","б.з."],wide:["біздің заманымызға дейін","біздің заманымыз"]},o={narrow:["1","2","3","4"],abbreviated:["1-ші тоқ.","2-ші тоқ.","3-ші тоқ.","4-ші тоқ."],wide:["1-ші тоқсан","2-ші тоқсан","3-ші тоқсан","4-ші тоқсан"]},u={narrow:["Қ","А","Н","С","М","М","Ш","Т","Қ","Қ","Қ","Ж"],abbreviated:["қаң","ақп","нау","сәу","мам","мау","шіл","там","қыр","қаз","қар","жел"],wide:["қаңтар","ақпан","наурыз","сәуір","мамыр","маусым","шілде","тамыз","қыркүйек","қазан","қараша","желтоқсан"]},s={narrow:["Қ","А","Н","С","М","М","Ш","Т","Қ","Қ","Қ","Ж"],abbreviated:["қаң","ақп","нау","сәу","мам","мау","шіл","там","қыр","қаз","қар","жел"],wide:["қаңтар","ақпан","наурыз","сәуір","мамыр","маусым","шілде","тамыз","қыркүйек","қазан","қараша","желтоқсан"]},d={narrow:["Ж","Д","С","С","Б","Ж","С"],short:["жс","дс","сс","ср","бс","жм","сб"],abbreviated:["жс","дс","сс","ср","бс","жм","сб"],wide:["жексенбі","дүйсенбі","сейсенбі","сәрсенбі","бейсенбі","жұма","сенбі"]},c={narrow:{am:"ТД",pm:"ТК",midnight:"түн ортасы",noon:"түс",morning:"таң",afternoon:"күндіз",evening:"кеш",night:"түн"},wide:{am:"ТД",pm:"ТК",midnight:"түн ортасы",noon:"түс",morning:"таң",afternoon:"күндіз",evening:"кеш",night:"түн"}},l={narrow:{am:"ТД",pm:"ТК",midnight:"түн ортасында",noon:"түс",morning:"таң",afternoon:"күн",evening:"кеш",night:"түн"},wide:{am:"ТД",pm:"ТК",midnight:"түн ортасында",noon:"түсте",morning:"таңертең",afternoon:"күндіз",evening:"кеште",night:"түнде"}},m={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:u,defaultWidth:"wide",formattingValues:s,defaultFormattingWidth:"wide"}),day:i.a({values:d,defaultWidth:"wide"}),dayPeriod:i.a({values:c,defaultWidth:"any",formattingValues:l,defaultFormattingWidth:"wide"})};t.a=m},function(e,t,n){"use strict";var a=n(4),i=n(5),r=/^(\d+)(-?(ші|шы))?/i,o=/\d+/i,u={narrow:/^((б )?з\.?\s?д\.?)/i,abbreviated:/^((б )?з\.?\s?д\.?)/i,wide:/^(біздің заманымызға дейін|біздің заманымыз|біздің заманымыздан)/i},s={any:[/^б/i,/^з/i]},d={narrow:/^[1234]/i,abbreviated:/^[1234](-?ші)? тоқ.?/i,wide:/^[1234](-?ші)? тоқсан/i},c={any:[/1/i,/2/i,/3/i,/4/i]},l={narrow:/^(қ|а|н|с|м|мау|ш|т|қыр|қаз|қар|ж)/i,abbreviated:/^(қаң|ақп|нау|сәу|мам|мау|шіл|там|қыр|қаз|қар|жел)/i,wide:/^(қаңтар|ақпан|наурыз|сәуір|мамыр|маусым|шілде|тамыз|қыркүйек|қазан|қараша|желтоқсан)/i},m={narrow:[/^қ/i,/^а/i,/^н/i,/^с/i,/^м/i,/^м/i,/^ш/i,/^т/i,/^қ/i,/^қ/i,/^қ/i,/^ж/i],abbreviated:[/^қаң/i,/^ақп/i,/^нау/i,/^сәу/i,/^мам/i,/^мау/i,/^шіл/i,/^там/i,/^қыр/i,/^қаз/i,/^қар/i,/^жел/i],any:[/^қ/i,/^а/i,/^н/i,/^с/i,/^м/i,/^м/i,/^ш/i,/^т/i,/^қ/i,/^қ/i,/^қ/i,/^ж/i]},f={narrow:/^(ж|д|с|с|б|ж|с)/i,short:/^(жс|дс|сс|ср|бс|жм|сб)/i,wide:/^(жексенбі|дүйсенбі|сейсенбі|сәрсенбі|бейсенбі|жұма|сенбі)/i},h={narrow:[/^ж/i,/^д/i,/^с/i,/^с/i,/^б/i,/^ж/i,/^с/i],short:[/^жс/i,/^дс/i,/^сс/i,/^ср/i,/^бс/i,/^жм/i,/^сб/i],any:[/^ж[ек]/i,/^д[үй]/i,/^сe[й]/i,/^сә[р]/i,/^б[ей]/i,/^ж[ұм]/i,/^се[н]/i]},p={narrow:/^Т\.?\s?[ДК]\.?|түн ортасында|((түсте|таңертең|таңда|таңертең|таңмен|таң|күндіз|күн|кеште|кеш|түнде|түн)\.?)/i,wide:/^Т\.?\s?[ДК]\.?|түн ортасында|((түсте|таңертең|таңда|таңертең|таңмен|таң|күндіз|күн|кеште|кеш|түнде|түн)\.?)/i,any:/^Т\.?\s?[ДК]\.?|түн ортасында|((түсте|таңертең|таңда|таңертең|таңмен|таң|күндіз|күн|кеште|кеш|түнде|түн)\.?)/i},g={any:{am:/^ТД/i,pm:/^ТК/i,midnight:/^түн орта/i,noon:/^күндіз/i,morning:/таң/i,afternoon:/түс/i,evening:/кеш/i,night:/түн/i}},v={ordinalNumber:a.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:i.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:i.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:i.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:i.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:i.a({matchPatterns:p,defaultMatchWidth:"wide",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(664),i=n(665),r=n(666),o=n(667),u=n(668),s={code:"kn",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:1}};t.a=s},function(e,t,n){"use strict";function a(e,t){return t.addSuffix?t.comparison>0?e.future:e.past:e.default}function i(e,t,n){n=n||{};var i;return i="string"==typeof r[e]?r[e]:1===t?a(r[e].one,n):a(r[e].other,n),i.replace("{{count}}",t)}t.a=i;var r={lessThanXSeconds:{one:{default:"1 ಸೆಕೆಂಡ್‌ಗಿಂತ ಕಡಿಮೆ",future:"1 ಸೆಕೆಂಡ್‌ಗಿಂತ ಕಡಿಮೆ",past:"1 ಸೆಕೆಂಡ್‌ಗಿಂತ ಕಡಿಮೆ"},other:{default:"{{count}} ಸೆಕೆಂಡ್‌ಗಿಂತ ಕಡಿಮೆ",future:"{{count}} ಸೆಕೆಂಡ್‌ಗಿಂತ ಕಡಿಮೆ",past:"{{count}} ಸೆಕೆಂಡ್‌ಗಿಂತ ಕಡಿಮೆ"}},xSeconds:{one:{default:"1 ಸೆಕೆಂಡ್",future:"1 ಸೆಕೆಂಡ್‌ನಲ್ಲಿ",past:"1 ಸೆಕೆಂಡ್ ಹಿಂದೆ"},other:{default:"{{count}} ಸೆಕೆಂಡುಗಳು",future:"{{count}} ಸೆಕೆಂಡ್‌ಗಳಲ್ಲಿ",past:"{{count}} ಸೆಕೆಂಡ್ ಹಿಂದೆ"}},halfAMinute:{other:{default:"ಅರ್ಧ ನಿಮಿಷ",future:"ಅರ್ಧ ನಿಮಿಷದಲ್ಲಿ",past:"ಅರ್ಧ ನಿಮಿಷದ ಹಿಂದೆ"}},lessThanXMinutes:{one:{default:"1 ನಿಮಿಷಕ್ಕಿಂತ ಕಡಿಮೆ",future:"1 ನಿಮಿಷಕ್ಕಿಂತ ಕಡಿಮೆ",past:"1 ನಿಮಿಷಕ್ಕಿಂತ ಕಡಿಮೆ"},other:{default:"{{count}} ನಿಮಿಷಕ್ಕಿಂತ ಕಡಿಮೆ",future:"{{count}} ನಿಮಿಷಕ್ಕಿಂತ ಕಡಿಮೆ",past:"{{count}} ನಿಮಿಷಕ್ಕಿಂತ ಕಡಿಮೆ"}},xMinutes:{one:{default:"1 ನಿಮಿಷ",future:"1 ನಿಮಿಷದಲ್ಲಿ",past:"1 ನಿಮಿಷದ ಹಿಂದೆ"},other:{default:"{{count}} ನಿಮಿಷಗಳು",future:"{{count}} ನಿಮಿಷಗಳಲ್ಲಿ",past:"{{count}} ನಿಮಿಷಗಳ ಹಿಂದೆ"}},aboutXHours:{one:{default:"ಸುಮಾರು 1 ಗಂಟೆ",future:"ಸುಮಾರು 1 ಗಂಟೆಯಲ್ಲಿ",past:"ಸುಮಾರು 1 ಗಂಟೆ ಹಿಂದೆ"},other:{default:"ಸುಮಾರು {{count}} ಗಂಟೆಗಳು",future:"ಸುಮಾರು {{count}} ಗಂಟೆಗಳಲ್ಲಿ",past:"ಸುಮಾರು {{count}} ಗಂಟೆಗಳ ಹಿಂದೆ"}},xHours:{one:{default:"1 ಗಂಟೆ",future:"1 ಗಂಟೆಯಲ್ಲಿ",past:"1 ಗಂಟೆ ಹಿಂದೆ"},other:{default:"{{count}} ಗಂಟೆಗಳು",future:"{{count}} ಗಂಟೆಗಳಲ್ಲಿ",past:"{{count}} ಗಂಟೆಗಳ ಹಿಂದೆ"}},xDays:{one:{default:"1 ದಿನ",future:"1 ದಿನದಲ್ಲಿ",past:"1 ದಿನದ ಹಿಂದೆ"},other:{default:"{{count}} ದಿನಗಳು",future:"{{count}} ದಿನಗಳಲ್ಲಿ",past:"{{count}} ದಿನಗಳ ಹಿಂದೆ"}},aboutXMonths:{one:{default:"ಸುಮಾರು 1 ತಿಂಗಳು",future:"ಸುಮಾರು 1 ತಿಂಗಳಲ್ಲಿ",past:"ಸುಮಾರು 1 ತಿಂಗಳ ಹಿಂದೆ"},other:{default:"ಸುಮಾರು {{count}} ತಿಂಗಳು",future:"ಸುಮಾರು {{count}} ತಿಂಗಳುಗಳಲ್ಲಿ",past:"ಸುಮಾರು {{count}} ತಿಂಗಳುಗಳ ಹಿಂದೆ"}},xMonths:{one:{default:"1 ತಿಂಗಳು",future:"1 ತಿಂಗಳಲ್ಲಿ",past:"1 ತಿಂಗಳ ಹಿಂದೆ"},other:{default:"{{count}} ತಿಂಗಳು",future:"{{count}} ತಿಂಗಳುಗಳಲ್ಲಿ",past:"{{count}} ತಿಂಗಳುಗಳ ಹಿಂದೆ"}},aboutXYears:{one:{default:"ಸುಮಾರು 1 ವರ್ಷ",future:"ಸುಮಾರು 1 ವರ್ಷದಲ್ಲಿ",past:"ಸುಮಾರು 1 ವರ್ಷದ ಹಿಂದೆ"},other:{default:"ಸುಮಾರು {{count}} ವರ್ಷಗಳು",future:"ಸುಮಾರು {{count}} ವರ್ಷಗಳಲ್ಲಿ",past:"ಸುಮಾರು {{count}} ವರ್ಷಗಳ ಹಿಂದೆ"}},xYears:{one:{default:"1 ವರ್ಷ",future:"1 ವರ್ಷದಲ್ಲಿ",past:"1 ವರ್ಷದ ಹಿಂದೆ"},other:{default:"{{count}} ವರ್ಷಗಳು",future:"{{count}} ವರ್ಷಗಳಲ್ಲಿ",past:"{{count}} ವರ್ಷಗಳ ಹಿಂದೆ"}},overXYears:{one:{default:"1 ವರ್ಷದ ಮೇಲೆ",future:"1 ವರ್ಷದ ಮೇಲೆ",past:"1 ವರ್ಷದ ಮೇಲೆ"},other:{default:"{{count}} ವರ್ಷಗಳ ಮೇಲೆ",future:"{{count}} ವರ್ಷಗಳ ಮೇಲೆ",past:"{{count}} ವರ್ಷಗಳ ಮೇಲೆ"}},almostXYears:{one:{default:"ಬಹುತೇಕ 1 ವರ್ಷದಲ್ಲಿ",future:"ಬಹುತೇಕ 1 ವರ್ಷದಲ್ಲಿ",past:"ಬಹುತೇಕ 1 ವರ್ಷದಲ್ಲಿ"},other:{default:"ಬಹುತೇಕ {{count}} ವರ್ಷಗಳಲ್ಲಿ",future:"ಬಹುತೇಕ {{count}} ವರ್ಷಗಳಲ್ಲಿ",past:"ಬಹುತೇಕ {{count}} ವರ್ಷಗಳಲ್ಲಿ"}}}},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE, MMMM d, y",long:"MMMM d, y",medium:"MMM d, y",short:"d/M/yy"},r={full:"hh:mm:ss a zzzz",long:"hh:mm:ss a z",medium:"hh:mm:ss a",short:"hh:mm a"},o={full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e,t,n,a){return i[e]}t.a=a;var i={lastWeek:"'ಕಳೆದ' eeee p 'ಕ್ಕೆ'",yesterday:"'ನಿನ್ನೆ' p 'ಕ್ಕೆ'",today:"'ಇಂದು' p 'ಕ್ಕೆ'",tomorrow:"'ನಾಳೆ' p 'ಕ್ಕೆ'",nextWeek:"eeee p 'ಕ್ಕೆ'",other:"P"}},function(e,t,n){"use strict";function a(e,t){return Number(e)+"ನೇ"}var i=n(3),r={narrow:["ಕ್ರಿ.ಪೂ","ಕ್ರಿ.ಶ"],abbreviated:["ಕ್ರಿ.ಪೂ","ಕ್ರಿ.ಶ"],wide:["ಕ್ರಿಸ್ತ ಪೂರ್ವ","ಕ್ರಿಸ್ತ ಶಕ"]},o={narrow:["1","2","3","4"],abbreviated:["ತ್ರೈ 1","ತ್ರೈ 2","ತ್ರೈ 3","ತ್ರೈ 4"],wide:["1ನೇ ತ್ರೈಮಾಸಿಕ","2ನೇ ತ್ರೈಮಾಸಿಕ","3ನೇ ತ್ರೈಮಾಸಿಕ","4ನೇ ತ್ರೈಮಾಸಿಕ"]},u={narrow:["ಜ","ಫೆ","ಮಾ","ಏ","ಮೇ","ಜೂ","ಜು","ಆ","ಸೆ","ಅ","ನ","ಡಿ"],abbreviated:["ಜನ","ಫೆಬ್ರ","ಮಾರ್ಚ್","ಏಪ್ರಿ","ಮೇ","ಜೂನ್","ಜುಲೈ","ಆಗ","ಸೆಪ್ಟೆಂ","ಅಕ್ಟೋ","ನವೆಂ","ಡಿಸೆಂ"],wide:["ಜನವರಿ","ಫೆಬ್ರವರಿ","ಮಾರ್ಚ್","ಏಪ್ರಿಲ್","ಮೇ","ಜೂನ್","ಜುಲೈ","ಆಗಸ್ಟ್","ಸೆಪ್ಟೆಂಬರ್","ಅಕ್ಟೋಬರ್","ನವೆಂಬರ್","ಡಿಸೆಂಬರ್"]},s={narrow:["ಭಾ","ಸೋ","ಮಂ","ಬು","ಗು","ಶು","ಶ"],short:["ಭಾನು","ಸೋಮ","ಮಂಗಳ","ಬುಧ","ಗುರು","ಶುಕ್ರ","ಶನಿ"],abbreviated:["ಭಾನು","ಸೋಮ","ಮಂಗಳ","ಬುಧ","ಗುರು","ಶುಕ್ರ","ಶನಿ"],wide:["ಭಾನುವಾರ","ಸೋಮವಾರ","ಮಂಗಳವಾರ","ಬುಧವಾರ","ಗುರುವಾರ","ಶುಕ್ರವಾರ","ಶನಿವಾರ"]},d={narrow:{am:"ಪೂರ್ವಾಹ್ನ",pm:"ಅಪರಾಹ್ನ",midnight:"ಮಧ್ಯರಾತ್ರಿ",noon:"ಮಧ್ಯಾಹ್ನ",morning:"ಬೆಳಗ್ಗೆ",afternoon:"ಮಧ್ಯಾಹ್ನ",evening:"ಸಂಜೆ",night:"ರಾತ್ರಿ"},abbreviated:{am:"ಪೂರ್ವಾಹ್ನ",pm:"ಅಪರಾಹ್ನ",midnight:"ಮಧ್ಯರಾತ್ರಿ",noon:"ಮಧ್ಯಾನ್ಹ",morning:"ಬೆಳಗ್ಗೆ",afternoon:"ಮಧ್ಯಾನ್ಹ",evening:"ಸಂಜೆ",night:"ರಾತ್ರಿ"},wide:{am:"ಪೂರ್ವಾಹ್ನ",pm:"ಅಪರಾಹ್ನ",midnight:"ಮಧ್ಯರಾತ್ರಿ",noon:"ಮಧ್ಯಾನ್ಹ",morning:"ಬೆಳಗ್ಗೆ",afternoon:"ಮಧ್ಯಾನ್ಹ",evening:"ಸಂಜೆ",night:"ರಾತ್ರಿ"}},c={narrow:{am:"ಪೂ",pm:"ಅ",midnight:"ಮಧ್ಯರಾತ್ರಿ",noon:"ಮಧ್ಯಾನ್ಹ",morning:"ಬೆಳಗ್ಗೆ",afternoon:"ಮಧ್ಯಾನ್ಹ",evening:"ಸಂಜೆ",night:"ರಾತ್ರಿ"},abbreviated:{am:"ಪೂರ್ವಾಹ್ನ",pm:"ಅಪರಾಹ್ನ",midnight:"ಮಧ್ಯ ರಾತ್ರಿ",noon:"ಮಧ್ಯಾನ್ಹ",morning:"ಬೆಳಗ್ಗೆ",afternoon:"ಮಧ್ಯಾನ್ಹ",evening:"ಸಂಜೆ",night:"ರಾತ್ರಿ"},wide:{am:"ಪೂರ್ವಾಹ್ನ",pm:"ಅಪರಾಹ್ನ",midnight:"ಮಧ್ಯ ರಾತ್ರಿ",noon:"ಮಧ್ಯಾನ್ಹ",morning:"ಬೆಳಗ್ಗೆ",afternoon:"ಮಧ್ಯಾನ್ಹ",evening:"ಸಂಜೆ",night:"ರಾತ್ರಿ"}},l={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:u,defaultWidth:"wide"}),day:i.a({values:s,defaultWidth:"wide"}),dayPeriod:i.a({values:d,defaultWidth:"wide",formattingValues:c,defaultFormattingWidth:"wide"})};t.a=l},function(e,t,n){"use strict";var a=n(4),i=n(5),r=/^(\d+)(ನೇ|ನೆ)?/i,o=/\d+/i,u={narrow:/^(ಕ್ರಿ.ಪೂ|ಕ್ರಿ.ಶ)/i,abbreviated:/^(ಕ್ರಿ\.?\s?ಪೂ\.?|ಕ್ರಿ\.?\s?ಶ\.?|ಪ್ರ\.?\s?ಶ\.?)/i,wide:/^(ಕ್ರಿಸ್ತ ಪೂರ್ವ|ಕ್ರಿಸ್ತ ಶಕ|ಪ್ರಸಕ್ತ ಶಕ)/i},s={any:[/^ಪೂ/i,/^(ಶ|ಪ್ರ)/i]},d={narrow:/^[1234]/i,abbreviated:/^ತ್ರೈ[1234]|ತ್ರೈ [1234]| [1234]ತ್ರೈ/i,wide:/^[1234](ನೇ)? ತ್ರೈಮಾಸಿಕ/i},c={any:[/1/i,/2/i,/3/i,/4/i]},l={narrow:/^(ಜೂ|ಜು|ಜ|ಫೆ|ಮಾ|ಏ|ಮೇ|ಆ|ಸೆ|ಅ|ನ|ಡಿ)/i,abbreviated:/^(ಜನ|ಫೆಬ್ರ|ಮಾರ್ಚ್|ಏಪ್ರಿ|ಮೇ|ಜೂನ್|ಜುಲೈ|ಆಗ|ಸೆಪ್ಟೆಂ|ಅಕ್ಟೋ|ನವೆಂ|ಡಿಸೆಂ)/i,wide:/^(ಜನವರಿ|ಫೆಬ್ರವರಿ|ಮಾರ್ಚ್|ಏಪ್ರಿಲ್|ಮೇ|ಜೂನ್|ಜುಲೈ|ಆಗಸ್ಟ್|ಸೆಪ್ಟೆಂಬರ್|ಅಕ್ಟೋಬರ್|ನವೆಂಬರ್|ಡಿಸೆಂಬರ್)/i},m={narrow:[/^ಜ$/i,/^ಫೆ/i,/^ಮಾ/i,/^ಏ/i,/^ಮೇ/i,/^ಜೂ/i,/^ಜು$/i,/^ಆ/i,/^ಸೆ/i,/^ಅ/i,/^ನ/i,/^ಡಿ/i],any:[/^ಜನ/i,/^ಫೆ/i,/^ಮಾ/i,/^ಏ/i,/^ಮೇ/i,/^ಜೂನ್/i,/^ಜುಲೈ/i,/^ಆ/i,/^ಸೆ/i,/^ಅ/i,/^ನ/i,/^ಡಿ/i]},f={narrow:/^(ಭಾ|ಸೋ|ಮ|ಬು|ಗು|ಶು|ಶ)/i,short:/^(ಭಾನು|ಸೋಮ|ಮಂಗಳ|ಬುಧ|ಗುರು|ಶುಕ್ರ|ಶನಿ)/i,abbreviated:/^(ಭಾನು|ಸೋಮ|ಮಂಗಳ|ಬುಧ|ಗುರು|ಶುಕ್ರ|ಶನಿ)/i,wide:/^(ಭಾನುವಾರ|ಸೋಮವಾರ|ಮಂಗಳವಾರ|ಬುಧವಾರ|ಗುರುವಾರ|ಶುಕ್ರವಾರ|ಶನಿವಾರ)/i},h={narrow:[/^ಭಾ/i,/^ಸೋ/i,/^ಮ/i,/^ಬು/i,/^ಗು/i,/^ಶು/i,/^ಶ/i],any:[/^ಭಾ/i,/^ಸೋ/i,/^ಮ/i,/^ಬು/i,/^ಗು/i,/^ಶು/i,/^ಶ/i]},p={narrow:/^(ಪೂ|ಅ|ಮಧ್ಯರಾತ್ರಿ|ಮಧ್ಯಾನ್ಹ|ಬೆಳಗ್ಗೆ|ಸಂಜೆ|ರಾತ್ರಿ)/i,any:/^(ಪೂರ್ವಾಹ್ನ|ಅಪರಾಹ್ನ|ಮಧ್ಯರಾತ್ರಿ|ಮಧ್ಯಾನ್ಹ|ಬೆಳಗ್ಗೆ|ಸಂಜೆ|ರಾತ್ರಿ)/i},g={any:{am:/^ಪೂ/i,pm:/^ಅ/i,midnight:/ಮಧ್ಯರಾತ್ರಿ/i,noon:/ಮಧ್ಯಾನ್ಹ/i,morning:/ಬೆಳಗ್ಗೆ/i,afternoon:/ಮಧ್ಯಾನ್ಹ/i,evening:/ಸಂಜೆ/i,night:/ರಾತ್ರಿ/i}},v={ordinalNumber:a.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:i.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:i.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:i.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:i.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:i.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(670),i=n(671),r=n(672),o=n(673),u=n(674),s={code:"ko",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:0,firstWeekContainsDate:1}};t.a=s},function(e,t,n){"use strict";function a(e,t,n){n=n||{};var a;return a="string"==typeof i[e]?i[e]:1===t?i[e].one:i[e].other.replace("{{count}}",t),n.addSuffix?n.comparison>0?a+" 후":a+" 전":a}t.a=a;var i={lessThanXSeconds:{one:"1초 미만",other:"{{count}}초 미만"},xSeconds:{one:"1초",other:"{{count}}초"},halfAMinute:"30초",lessThanXMinutes:{one:"1분 미만",other:"{{count}}분 미만"},xMinutes:{one:"1분",other:"{{count}}분"},aboutXHours:{one:"약 1시간",other:"약 {{count}}시간"},xHours:{one:"1시간",other:"{{count}}시간"},xDays:{one:"1일",other:"{{count}}일"},aboutXWeeks:{one:"약 1주",other:"약 {{count}}주"},xWeeks:{one:"1주",other:"{{count}}주"},aboutXMonths:{one:"약 1개월",other:"약 {{count}}개월"},xMonths:{one:"1개월",other:"{{count}}개월"},aboutXYears:{one:"약 1년",other:"약 {{count}}년"},xYears:{one:"1년",other:"{{count}}년"},overXYears:{one:"1년 이상",other:"{{count}}년 이상"},almostXYears:{one:"거의 1년",other:"거의 {{count}}년"}}},function(e,t,n){"use strict";var a=n(2),i={full:"y년 M월 d일 EEEE",long:"y년 M월 d일",medium:"y.MM.dd",short:"y.MM.dd"},r={full:"a H시 mm분 ss초 zzzz",long:"a H:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},o={full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e,t,n,a){return i[e]}t.a=a;var i={lastWeek:"'지난' eeee p",yesterday:"'어제' p",today:"'오늘' p",tomorrow:"'내일' p",nextWeek:"'다음' eeee p",other:"P"}},function(e,t,n){"use strict";function a(e,t){var n=Number(e),a=t||{};switch(String(a.unit)){case"minute":case"second":return n;case"date":return n+"일";default:return n+"번째"}}var i=n(3),r={narrow:["BC","AD"],abbreviated:["BC","AD"],wide:["기원전","서기"]},o={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1분기","2분기","3분기","4분기"]},u={narrow:["1","2","3","4","5","6","7","8","9","10","11","12"],abbreviated:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],wide:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"]},s={narrow:["일","월","화","수","목","금","토"],short:["일","월","화","수","목","금","토"],abbreviated:["일","월","화","수","목","금","토"],wide:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"]},d={narrow:{am:"오전",pm:"오후",midnight:"자정",noon:"정오",morning:"아침",afternoon:"오후",evening:"저녁",night:"밤"},abbreviated:{am:"오전",pm:"오후",midnight:"자정",noon:"정오",morning:"아침",afternoon:"오후",evening:"저녁",night:"밤"},wide:{am:"오전",pm:"오후",midnight:"자정",noon:"정오",morning:"아침",afternoon:"오후",evening:"저녁",night:"밤"}},c={narrow:{am:"오전",pm:"오후",midnight:"자정",noon:"정오",morning:"아침",afternoon:"오후",evening:"저녁",night:"밤"},abbreviated:{am:"오전",pm:"오후",midnight:"자정",noon:"정오",morning:"아침",afternoon:"오후",evening:"저녁",night:"밤"},wide:{am:"오전",pm:"오후",midnight:"자정",noon:"정오",morning:"아침",afternoon:"오후",evening:"저녁",night:"밤"}},l={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:u,defaultWidth:"wide"}),day:i.a({values:s,defaultWidth:"wide"}),dayPeriod:i.a({values:d,defaultWidth:"wide",formattingValues:c,defaultFormattingWidth:"wide"})};t.a=l},function(e,t,n){"use strict";var a=n(4),i=n(5),r=/^(\d+)(일|번째)?/i,o=/\d+/i,u={narrow:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(기원전|서기)/i},s={any:[/^(bc|기원전)/i,/^(ad|서기)/i]},d={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234]사?분기/i},c={any:[/1/i,/2/i,/3/i,/4/i]},l={narrow:/^(1[012]|[123456789])/,abbreviated:/^(1[012]|[123456789])월/i,wide:/^(1[012]|[123456789])월/i},m={any:[/^1월?$/,/^2/,/^3/,/^4/,/^5/,/^6/,/^7/,/^8/,/^9/,/^10/,/^11/,/^12/]},f={narrow:/^[일월화수목금토]/,short:/^[일월화수목금토]/,abbreviated:/^[일월화수목금토]/,wide:/^[일월화수목금토]요일/},h={any:[/^일/,/^월/,/^화/,/^수/,/^목/,/^금/,/^토/]},p={any:/^(am|pm|오전|오후|자정|정오|아침|저녁|밤)/i},g={any:{am:/^(am|오전)/i,pm:/^(pm|오후)/i,midnight:/^자정/i,noon:/^정오/i,morning:/^아침/i,afternoon:/^오후/i,evening:/^저녁/i,night:/^밤/i}},v={ordinalNumber:a.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:i.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:i.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:i.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:i.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:i.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(676),i=n(677),r=n(678),o=n(679),u=n(680),s={code:"lb",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:4}};t.a=s},function(e,t,n){"use strict";function a(e){var t=e.charAt(0).toLowerCase();if(-1!=u.indexOf(t)||-1!=o.indexOf(t))return!0;var n=e.split(" ")[0],a=parseInt(n);return!isNaN(a)&&-1!=s.indexOf(a%10)&&-1==d.indexOf(parseInt(n.substring(0,2)))}function i(e,t,n){n=n||{};var i,o=n.addSuffix?r[e].withPreposition:r[e].standalone;return i="string"==typeof o?o:1===t?o.one:o.other.replace("{{count}}",t),n.addSuffix?n.comparison>0?"a"+(a(i)?"n":"")+" "+i:"viru"+(a(i)?"n":"")+" "+i:i}t.a=i;var r={lessThanXSeconds:{standalone:{one:"manner wéi eng Sekonn",other:"manner wéi {{count}} Sekonnen"},withPreposition:{one:"manner wéi enger Sekonn",other:"manner wéi {{count}} Sekonnen"}},xSeconds:{standalone:{one:"eng Sekonn",other:"{{count}} Sekonnen"},withPreposition:{one:"enger Sekonn",other:"{{count}} Sekonnen"}},halfAMinute:{standalone:"eng hallef Minutt",withPreposition:"enger hallwer Minutt"},lessThanXMinutes:{standalone:{one:"manner wéi eng Minutt",other:"manner wéi {{count}} Minutten"},withPreposition:{one:"manner wéi enger Minutt",other:"manner wéi {{count}} Minutten"}},xMinutes:{standalone:{one:"eng Minutt",other:"{{count}} Minutten"},withPreposition:{one:"enger Minutt",other:"{{count}} Minutten"}},aboutXHours:{standalone:{one:"ongeféier eng Stonn",other:"ongeféier {{count}} Stonnen"},withPreposition:{one:"ongeféier enger Stonn",other:"ongeféier {{count}} Stonnen"}},xHours:{standalone:{one:"eng Stonn",other:"{{count}} Stonnen"},withPreposition:{one:"enger Stonn",other:"{{count}} Stonnen"}},xDays:{standalone:{one:"een Dag",other:"{{count}} Deeg"},withPreposition:{one:"engem Dag",other:"{{count}} Deeg"}},aboutXWeeks:{standalone:{one:"ongeféier eng Woch",other:"ongeféier {{count}} Wochen"},withPreposition:{one:"ongeféier enger Woche",other:"ongeféier {{count}} Wochen"}},xWeeks:{standalone:{one:"eng Woch",other:"{{count}} Wochen"},withPreposition:{one:"enger Woch",other:"{{count}} Wochen"}},aboutXMonths:{standalone:{one:"ongeféier ee Mount",other:"ongeféier {{count}} Méint"},withPreposition:{one:"ongeféier engem Mount",other:"ongeféier {{count}} Méint"}},xMonths:{standalone:{one:"ee Mount",other:"{{count}} Méint"},withPreposition:{one:"engem Mount",other:"{{count}} Méint"}},aboutXYears:{standalone:{one:"ongeféier ee Joer",other:"ongeféier {{count}} Joer"},withPreposition:{one:"ongeféier engem Joer",other:"ongeféier {{count}} Joer"}},xYears:{standalone:{one:"ee Joer",other:"{{count}} Joer"},withPreposition:{one:"engem Joer",other:"{{count}} Joer"}},overXYears:{standalone:{one:"méi wéi ee Joer",other:"méi wéi {{count}} Joer"},withPreposition:{one:"méi wéi engem Joer",other:"méi wéi {{count}} Joer"}},almostXYears:{standalone:{one:"bal ee Joer",other:"bal {{count}} Joer"},withPreposition:{one:"bal engem Joer",other:"bal {{count}} Joer"}}},o=["d","h","n","t","z"],u=["a,","e","i","o","u"],s=[0,1,2,3,8,9],d=[40,50,60,70]},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE, do MMMM y",long:"do MMMM y",medium:"do MMM y",short:"dd.MM.yy"},r={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},o={full:"{{date}} 'um' {{time}}",long:"{{date}} 'um' {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e,t,n,a){var r=i[e];return"function"==typeof r?r(t):r}t.a=a;var i={lastWeek:function(e){var t=e.getUTCDay(),n="'läschte";return 2!==t&&4!==t||(n+="n"),n+="' eeee 'um' p"},yesterday:"'gëschter um' p",today:"'haut um' p",tomorrow:"'moien um' p",nextWeek:"eeee 'um' p",other:"P"}},function(e,t,n){"use strict";function a(e,t){return Number(e)+"."}var i=n(3),r={narrow:["v.Chr.","n.Chr."],abbreviated:["v.Chr.","n.Chr."],wide:["viru Christus","no Christus"]},o={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1. Quartal","2. Quartal","3. Quartal","4. Quartal"]},u={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mäe","Abr","Mee","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],wide:["Januar","Februar","Mäerz","Abrëll","Mee","Juni","Juli","August","September","Oktober","November","Dezember"]},s={narrow:["S","M","D","M","D","F","S"],short:["So","Mé","Dë","Më","Do","Fr","Sa"],abbreviated:["So.","Mé.","Dë.","Më.","Do.","Fr.","Sa."],wide:["Sonndeg","Méindeg","Dënschdeg","Mëttwoch","Donneschdeg","Freideg","Samschdeg"]},d={narrow:{am:"mo.",pm:"nomë.",midnight:"Mëtternuecht",noon:"Mëtteg",morning:"Moien",afternoon:"Nomëtteg",evening:"Owend",night:"Nuecht"},abbreviated:{am:"moies",pm:"nomëttes",midnight:"Mëtternuecht",noon:"Mëtteg",morning:"Moien",afternoon:"Nomëtteg",evening:"Owend",night:"Nuecht"},wide:{am:"moies",pm:"nomëttes",midnight:"Mëtternuecht",noon:"Mëtteg",morning:"Moien",afternoon:"Nomëtteg",evening:"Owend",night:"Nuecht"}},c={narrow:{am:"mo.",pm:"nom.",midnight:"Mëtternuecht",noon:"mëttes",morning:"moies",afternoon:"nomëttes",evening:"owes",night:"nuets"},abbreviated:{am:"moies",pm:"nomëttes",midnight:"Mëtternuecht",noon:"mëttes",morning:"moies",afternoon:"nomëttes",evening:"owes",night:"nuets"},wide:{am:"moies",pm:"nomëttes",midnight:"Mëtternuecht",noon:"mëttes",morning:"moies",afternoon:"nomëttes",evening:"owes",night:"nuets"}},l={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:u,defaultWidth:"wide"}),day:i.a({values:s,defaultWidth:"wide"}),dayPeriod:i.a({values:d,defaultWidth:"wide",formattingValues:c,defaultFormattingWidth:"wide"})};t.a=l},function(e,t,n){"use strict";var a=n(4),i=n(5),r=/^(\d+)(\.)?/i,o=/\d+/i,u={narrow:/^(v\.? ?Chr\.?|n\.? ?Chr\.?)/i,abbreviated:/^(v\.? ?Chr\.?|n\.? ?Chr\.?)/i,wide:/^(viru Christus|virun eiser Zäitrechnung|no Christus|eiser Zäitrechnung)/i},s={any:[/^v/i,/^n/i]},d={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](\.)? Quartal/i},c={any:[/1/i,/2/i,/3/i,/4/i]},l={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mäe|abr|mee|jun|jul|aug|sep|okt|nov|dez)/i,wide:/^(januar|februar|mäerz|abrëll|mee|juni|juli|august|september|oktober|november|dezember)/i},m={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mä/i,/^ab/i,/^me/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},f={narrow:/^[smdf]/i,short:/^(so|mé|dë|më|do|fr|sa)/i,abbreviated:/^(son?|méi?|dën?|mët?|don?|fre?|sam?)\.?/i,wide:/^(sonndeg|méindeg|dënschdeg|mëttwoch|donneschdeg|freideg|samschdeg)/i},h={any:[/^so/i,/^mé/i,/^dë/i,/^më/i,/^do/i,/^f/i,/^sa/i]},p={narrow:/^(mo\.?|nomë\.?|Mëtternuecht|mëttes|moies|nomëttes|owes|nuets)/i,abbreviated:/^(moi\.?|nomët\.?|Mëtternuecht|mëttes|moies|nomëttes|owes|nuets)/i,wide:/^(moies|nomëttes|Mëtternuecht|mëttes|moies|nomëttes|owes|nuets)/i},g={any:{am:/^m/i,pm:/^n/i,midnight:/^Mëtter/i,noon:/^mëttes/i,morning:/moies/i,afternoon:/nomëttes/i,evening:/owes/i,night:/nuets/i}},v={ordinalNumber:a.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:i.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:i.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:i.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:i.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:i.a({matchPatterns:p,defaultMatchWidth:"wide",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(682),i=n(683),r=n(684),o=n(685),u=n(686),s={code:"lt",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:4}};t.a=s},function(e,t,n){"use strict";function a(e,t,n,a){return t?a?"kelių sekundžių":"kelias sekundes":"kelios sekundės"}function i(e,t,n,a){return t?a?o(n)[1]:o(n)[2]:o(n)[0]}function r(e){return e%10==0||e>10&&e<20}function o(e){return c[e].split("_")}function u(e,t,n,a){var u=e+" ";return 1===e?u+i(e,t,n[0],a):t?a?u+o(n)[1]:u+(r(e)?o(n)[1]:o(n)[2]):u+(r(e)?o(n)[1]:o(n)[0])}function s(e,t,n){n=n||{};var a,i=e.match(/about|over|almost|lessthan/i),r=e.replace(i,"");return a="string"==typeof d[e]?d[e]:1===t?d[e].one(t,n.addSuffix,r.toLowerCase()+"_one"):d[e].other(t,n.addSuffix,r.toLowerCase()+"_other"),i&&(a=c[i[0].toLowerCase()]+" "+a),n.addSuffix?n.comparison>0?"po "+a:"prieš "+a:a}t.a=s;var d={lessThanXSeconds:{one:a,other:u},xSeconds:{one:a,other:u},halfAMinute:"pusė minutės",lessThanXMinutes:{one:i,other:u},xMinutes:{one:i,other:u},aboutXHours:{one:i,other:u},xHours:{one:i,other:u},xDays:{one:i,other:u},aboutWeeks:{one:i,other:u},xWeeks:{one:i,other:u},aboutXMonths:{one:i,other:u},xMonths:{one:i,other:u},aboutXYears:{one:i,other:u},xYears:{one:i,other:u},overXYears:{one:i,other:u},almostXYears:{one:i,other:u}},c={xseconds_other:"sekundė_sekundžių_sekundes",xminutes_one:"minutė_minutės_minutę",xminutes_other:"minutės_minučių_minutes",xhours_one:"valanda_valandos_valandą",xhours_other:"valandos_valandų_valandas",xdays_one:"diena_dienos_dieną",xdays_other:"dienos_dienų_dienas",xweeks_one:"savaitė_savaitės_savaitę",xweeks_other:"savaitės_savaičių_savaites",xmonths_one:"mėnuo_mėnesio_mėnesį",xmonths_other:"mėnesiai_mėnesių_mėnesius",xyears_one:"metai_metų_metus",xyears_other:"metai_metų_metus",about:"apie",over:"daugiau nei",almost:"beveik",lessthan:"mažiau nei"}},function(e,t,n){"use strict";var a=n(2),i={full:"y 'm'. MMMM d 'd'., EEEE",long:"y 'm'. MMMM d 'd'.",medium:"y-MM-dd",short:"y-MM-dd"},r={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},o={full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e,t,n,a){return i[e]}t.a=a;var i={lastWeek:"'Praėjusį' eeee p",yesterday:"'Vakar' p",today:"'Šiandien' p",tomorrow:"'Rytoj' p",nextWeek:"eeee p",other:"P"}},function(e,t,n){"use strict";function a(e,t){return Number(e)+"-oji"}var i=n(3),r={narrow:["pr. Kr.","po Kr."],abbreviated:["pr. Kr.","po Kr."],wide:["prieš Kristų","po Kristaus"]},o={narrow:["1","2","3","4"],abbreviated:["I ketv.","II ketv.","III ketv.","IV ketv."],wide:["I ketvirtis","II ketvirtis","III ketvirtis","IV ketvirtis"]},u={narrow:["1","2","3","4"],abbreviated:["I k.","II k.","III k.","IV k."],wide:["I ketvirtis","II ketvirtis","III ketvirtis","IV ketvirtis"]},s={narrow:["S","V","K","B","G","B","L","R","R","S","L","G"],abbreviated:["saus.","vas.","kov.","bal.","geg.","birž.","liep.","rugp.","rugs.","spal.","lapkr.","gruod."],wide:["sausis","vasaris","kovas","balandis","gegužė","birželis","liepa","rugpjūtis","rugsėjis","spalis","lapkritis","gruodis"]},d={narrow:["S","V","K","B","G","B","L","R","R","S","L","G"],abbreviated:["saus.","vas.","kov.","bal.","geg.","birž.","liep.","rugp.","rugs.","spal.","lapkr.","gruod."],wide:["sausio","vasario","kovo","balandžio","gegužės","birželio","liepos","rugpjūčio","rugsėjo","spalio","lapkričio","gruodžio"]},c={narrow:["S","P","A","T","K","P","Š"],short:["Sk","Pr","An","Tr","Kt","Pn","Št"],abbreviated:["sk","pr","an","tr","kt","pn","št"],wide:["sekmadienis","pirmadienis","antradienis","trečiadienis","ketvirtadienis","penktadienis","šeštadienis"]},l={narrow:["S","P","A","T","K","P","Š"],short:["Sk","Pr","An","Tr","Kt","Pn","Št"],abbreviated:["sk","pr","an","tr","kt","pn","št"],wide:["sekmadienį","pirmadienį","antradienį","trečiadienį","ketvirtadienį","penktadienį","šeštadienį"]},m={narrow:{am:"pr. p.",pm:"pop.",midnight:"vidurnaktis",noon:"vidurdienis",morning:"rytas",afternoon:"diena",evening:"vakaras",night:"naktis"},abbreviated:{am:"priešpiet",pm:"popiet",midnight:"vidurnaktis",noon:"vidurdienis",morning:"rytas",afternoon:"diena",evening:"vakaras",night:"naktis"},wide:{am:"priešpiet",pm:"popiet",midnight:"vidurnaktis",noon:"vidurdienis",morning:"rytas",afternoon:"diena",evening:"vakaras",night:"naktis"}},f={narrow:{am:"pr. p.",pm:"pop.",midnight:"vidurnaktis",noon:"perpiet",morning:"rytas",afternoon:"popietė",evening:"vakaras",night:"naktis"},abbreviated:{am:"priešpiet",pm:"popiet",midnight:"vidurnaktis",noon:"perpiet",morning:"rytas",afternoon:"popietė",evening:"vakaras",night:"naktis"},wide:{am:"priešpiet",pm:"popiet",midnight:"vidurnaktis",noon:"perpiet",morning:"rytas",afternoon:"popietė",evening:"vakaras",night:"naktis"}},h={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",formattingValues:u,defaultFormattingWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:s,defaultWidth:"wide",formattingValues:d,defaultFormattingWidth:"wide"}),day:i.a({values:c,defaultWidth:"wide",formattingValues:l,defaultFormattingWidth:"wide"}),dayPeriod:i.a({values:m,defaultWidth:"wide",formattingValues:f,defaultFormattingWidth:"wide"})};t.a=h},function(e,t,n){"use strict";var a=n(4),i=n(5),r=/^(\d+)(-oji)?/i,o=/\d+/i,u={narrow:/^p(r|o)\.?\s?(kr\.?|me)/i,abbreviated:/^(pr\.\s?(kr\.|m\.\s?e\.)|po\s?kr\.|mūsų eroje)/i,wide:/^(prieš Kristų|prieš mūsų erą|po Kristaus|mūsų eroje)/i},s={wide:[/prieš/i,/(po|mūsų)/i],any:[/^pr/i,/^(po|m)/i]},d={narrow:/^([1234])/i,abbreviated:/^(I|II|III|IV)\s?ketv?\.?/i,wide:/^(I|II|III|IV)\s?ketvirtis/i},c={narrow:[/1/i,/2/i,/3/i,/4/i],any:[/I$/i,/II$/i,/III/i,/IV/i]},l={narrow:/^[svkbglr]/i,abbreviated:/^(saus\.|vas\.|kov\.|bal\.|geg\.|birž\.|liep\.|rugp\.|rugs\.|spal\.|lapkr\.|gruod\.)/i,wide:/^(sausi(s|o)|vasari(s|o)|kov(a|o)s|balandž?i(s|o)|gegužės?|birželi(s|o)|liep(a|os)|rugpjū(t|č)i(s|o)|rugsėj(is|o)|spali(s|o)|lapkri(t|č)i(s|o)|gruodž?i(s|o))/i},m={narrow:[/^s/i,/^v/i,/^k/i,/^b/i,/^g/i,/^b/i,/^l/i,/^r/i,/^r/i,/^s/i,/^l/i,/^g/i],any:[/^saus/i,/^vas/i,/^kov/i,/^bal/i,/^geg/i,/^birž/i,/^liep/i,/^rugp/i,/^rugs/i,/^spal/i,/^lapkr/i,/^gruod/i]},f={narrow:/^[spatkš]/i,short:/^(sk|pr|an|tr|kt|pn|št)/i,abbreviated:/^(sk|pr|an|tr|kt|pn|št)/i,wide:/^(sekmadien(is|į)|pirmadien(is|į)|antradien(is|į)|trečiadien(is|į)|ketvirtadien(is|į)|penktadien(is|į)|šeštadien(is|į))/i},h={narrow:[/^s/i,/^p/i,/^a/i,/^t/i,/^k/i,/^p/i,/^š/i],wide:[/^se/i,/^pi/i,/^an/i,/^tr/i,/^ke/i,/^pe/i,/^še/i],any:[/^sk/i,/^pr/i,/^an/i,/^tr/i,/^kt/i,/^pn/i,/^št/i]},p={narrow:/^(pr.\s?p.|pop.|vidurnaktis|(vidurdienis|perpiet)|rytas|(diena|popietė)|vakaras|naktis)/i,any:/^(priešpiet|popiet$|vidurnaktis|(vidurdienis|perpiet)|rytas|(diena|popietė)|vakaras|naktis)/i},g={narrow:{am:/^pr/i,pm:/^pop./i,midnight:/^vidurnaktis/i,noon:/^(vidurdienis|perp)/i,morning:/rytas/i,afternoon:/(die|popietė)/i,evening:/vakaras/i,night:/naktis/i},any:{am:/^pr/i,pm:/^popiet$/i,midnight:/^vidurnaktis/i,noon:/^(vidurdienis|perp)/i,morning:/rytas/i,afternoon:/(die|popietė)/i,evening:/vakaras/i,night:/naktis/i}},v={ordinalNumber:a.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:i.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:i.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:i.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:i.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:i.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(688),i=n(689),r=n(690),o=n(691),u=n(692),s={code:"lv",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:4}};t.a=s},function(e,t,n){"use strict";function a(e){return function(t,n){if(1===t)return n.addSuffix?e.one[0].replace("{{time}}",e.one[2]):e.one[0].replace("{{time}}",e.one[1]);var a=t%10==1&&t%100!=11;return n.addSuffix?e.other[0].replace("{{time}}",a?e.other[3]:e.other[4]).replace("{{count}}",t):e.other[0].replace("{{time}}",a?e.other[1]:e.other[2]).replace("{{count}}",t)}}function i(e,t,n){n=n||{};var a=r[e](t,n);return n.addSuffix?n.comparison>0?"pēc "+a:"pirms "+a:a}t.a=i;var r={lessThanXSeconds:a({one:["mazāk par {{time}}","sekundi","sekundi"],other:["mazāk nekā {{count}} {{time}}","sekunde","sekundes","sekundes","sekundēm"]}),xSeconds:a({one:["1 {{time}}","sekunde","sekundes"],other:["{{count}} {{time}}","sekunde","sekundes","sekundes","sekundēm"]}),halfAMinute:function(e,t){return t.addSuffix?"pusminūtes":"pusminūte"},lessThanXMinutes:a({one:["mazāk par {{time}}","minūti","minūti"],other:["mazāk nekā {{count}} {{time}}","minūte","minūtes","minūtes","minūtēm"]}),xMinutes:a({one:["1 {{time}}","minūte","minūtes"],other:["{{count}} {{time}}","minūte","minūtes","minūtes","minūtēm"]}),aboutXHours:a({one:["apmēram 1 {{time}}","stunda","stundas"],other:["apmēram {{count}} {{time}}","stunda","stundas","stundas","stundām"]}),xHours:a({one:["1 {{time}}","stunda","stundas"],other:["{{count}} {{time}}","stunda","stundas","stundas","stundām"]}),xDays:a({one:["1 {{time}}","diena","dienas"],other:["{{count}} {{time}}","diena","dienas","dienas","dienām"]}),aboutXWeeks:a({one:["apmēram 1 {{time}}","nedēļa","nedēļas"],other:["apmēram {{count}} {{time}}","nedēļa","nedēļu","nedēļas","nedēļām"]}),xWeeks:a({one:["1 {{time}}","nedēļa","nedēļas"],other:["{{count}} {{time}}","nedēļa","nedēļu","nedēļas","nedēļām"]}),aboutXMonths:a({one:["apmēram 1 {{time}}","mēnesis","mēneša"],other:["apmēram {{count}} {{time}}","mēnesis","mēneši","mēneša","mēnešiem"]}),xMonths:a({one:["1 {{time}}","mēnesis","mēneša"],other:["{{count}} {{time}}","mēnesis","mēneši","mēneša","mēnešiem"]}),aboutXYears:a({one:["apmēram 1 {{time}}","gads","gada"],other:["apmēram {{count}} {{time}}","gads","gadi","gada","gadiem"]}),xYears:a({one:["1 {{time}}","gads","gada"],other:["{{count}} {{time}}","gads","gadi","gada","gadiem"]}),overXYears:a({one:["ilgāk par 1 {{time}}","gadu","gadu"],other:["vairāk nekā {{count}} {{time}}","gads","gadi","gada","gadiem"]}),almostXYears:a({one:["gandrīz 1 {{time}}","gads","gada"],other:["vairāk nekā {{count}} {{time}}","gads","gadi","gada","gadiem"]})}},function(e,t,n){"use strict";var a=n(2),i={full:"y. 'gada' M. MMMM., EEEE",long:"y. 'gada' M. MMMM",medium:"dd.MM.y.",short:"dd.MM.y."},r={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},o={full:"{{date}} 'plkst.' {{time}}",long:"{{date}} 'plkst.' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e,t,n,a){var i=o[e];return"function"==typeof i?i(t,n,a):i}t.a=a;var i=n(13),r=["svētdienā","pirmdienā","otrdienā","trešdienā","ceturtdienā","piektdienā","sestdienā"],o={lastWeek:function(e,t,n){return i.a(e,t,n)?"eeee 'plkst.' p":"'Pagājušā "+r[e.getUTCDay()]+" plkst.' p"},yesterday:"'Vakar plkst.' p",today:"'Šodien plkst.' p",tomorrow:"'Rīt plkst.' p",nextWeek:function(e,t,n){return i.a(e,t,n)?"eeee 'plkst.' p":"'Nākamajā "+r[e.getUTCDay()]+" plkst.' p"},other:"P"}},function(e,t,n){"use strict";function a(e,t){return e+"."}var i=n(3),r={narrow:["p.m.ē","m.ē"],abbreviated:["p. m. ē.","m. ē."],wide:["pirms mūsu ēras","mūsu ērā"]},o={narrow:["1","2","3","4"],abbreviated:["1. cet.","2. cet.","3. cet.","4. cet."],wide:["pirmais ceturksnis","otrais ceturksnis","trešais ceturksnis","ceturtais ceturksnis"]},u={narrow:["1","2","3","4"],abbreviated:["1. cet.","2. cet.","3. cet.","4. cet."],wide:["pirmajā ceturksnī","otrajā ceturksnī","trešajā ceturksnī","ceturtajā ceturksnī"]},s={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["janv.","febr.","marts","apr.","maijs","jūn.","jūl.","aug.","sept.","okt.","nov.","dec."],wide:["janvāris","februāris","marts","aprīlis","maijs","jūnijs","jūlijs","augusts","septembris","oktobris","novembris","decembris"]},d={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["janv.","febr.","martā","apr.","maijs","jūn.","jūl.","aug.","sept.","okt.","nov.","dec."],wide:["janvārī","februārī","martā","aprīlī","maijā","jūnijā","jūlijā","augustā","septembrī","oktobrī","novembrī","decembrī"]},c={narrow:["S","P","O","T","C","P","S"],short:["Sv","P","O","T","C","Pk","S"],abbreviated:["svētd.","pirmd.","otrd.","trešd.","ceturtd.","piektd.","sestd."],wide:["svētdiena","pirmdiena","otrdiena","trešdiena","ceturtdiena","piektdiena","sestdiena"]},l={narrow:["S","P","O","T","C","P","S"],short:["Sv","P","O","T","C","Pk","S"],abbreviated:["svētd.","pirmd.","otrd.","trešd.","ceturtd.","piektd.","sestd."],wide:["svētdienā","pirmdienā","otrdienā","trešdienā","ceturtdienā","piektdienā","sestdienā"]},m={narrow:{am:"am",pm:"pm",midnight:"pusn.",noon:"pusd.",morning:"rīts",afternoon:"diena",evening:"vakars",night:"nakts"},abbreviated:{am:"am",pm:"pm",midnight:"pusn.",noon:"pusd.",morning:"rīts",afternoon:"pēcpusd.",evening:"vakars",night:"nakts"},wide:{am:"am",pm:"pm",midnight:"pusnakts",noon:"pusdienlaiks",morning:"rīts",afternoon:"pēcpusdiena",evening:"vakars",night:"nakts"}},f={narrow:{am:"am",pm:"pm",midnight:"pusn.",noon:"pusd.",morning:"rītā",afternoon:"dienā",evening:"vakarā",night:"naktī"},abbreviated:{am:"am",pm:"pm",midnight:"pusn.",noon:"pusd.",morning:"rītā",afternoon:"pēcpusd.",evening:"vakarā",night:"naktī"},wide:{am:"am",pm:"pm",midnight:"pusnaktī",noon:"pusdienlaikā",morning:"rītā",afternoon:"pēcpusdienā",evening:"vakarā",night:"naktī"}},h={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",formattingValues:u,defaultFormattingWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:s,defaultWidth:"wide",formattingValues:d,defaultFormattingWidth:"wide"}),day:i.a({values:c,defaultWidth:"wide",formattingValues:l,defaultFormattingWidth:"wide"}),dayPeriod:i.a({values:m,defaultWidth:"wide",formattingValues:f,defaultFormattingWidth:"wide"})};t.a=h},function(e,t,n){"use strict";var a=n(4),i=n(5),r=/^(\d+)\./i,o=/\d+/i,u={narrow:/^(p\.m\.ē|m\.ē)/i,abbreviated:/^(p\. m\. ē\.|m\. ē\.)/i,wide:/^(pirms mūsu ēras|mūsu ērā)/i},s={any:[/^p/i,/^m/i]},d={narrow:/^[1234]/i,abbreviated:/^[1234](\. cet\.)/i,wide:/^(pirma(is|jā)|otra(is|jā)|treša(is|jā)|ceturta(is|jā)) ceturksn(is|ī)/i},c={narrow:[/^1/i,/^2/i,/^3/i,/^4/i],abbreviated:[/^1/i,/^2/i,/^3/i,/^4/i],wide:[/^p/i,/^o/i,/^t/i,/^c/i]},l={narrow:/^[jfmasond]/i,abbreviated:/^(janv\.|febr\.|marts|apr\.|maijs|jūn\.|jūl\.|aug\.|sept\.|okt\.|nov\.|dec\.)/i,wide:/^(janvār(is|ī)|februār(is|ī)|mart[sā]|aprīl(is|ī)|maij[sā]|jūnij[sā]|jūlij[sā]|august[sā]|septembr(is|ī)|oktobr(is|ī)|novembr(is|ī)|decembr(is|ī))/i},m={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^mai/i,/^jūn/i,/^jūl/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},f={narrow:/^[spotc]/i,short:/^(sv|pi|o|t|c|pk|s)/i,abbreviated:/^(svētd\.|pirmd\.|otrd.\|trešd\.|ceturtd\.|piektd\.|sestd\.)/i,wide:/^(svētdien(a|ā)|pirmdien(a|ā)|otrdien(a|ā)|trešdien(a|ā)|ceturtdien(a|ā)|piektdien(a|ā)|sestdien(a|ā))/i},h={narrow:[/^s/i,/^p/i,/^o/i,/^t/i,/^c/i,/^p/i,/^s/i],any:[/^sv/i,/^pi/i,/^o/i,/^t/i,/^c/i,/^p/i,/^se/i]},p={narrow:/^(am|pm|pusn\.|pusd\.|rīt(s|ā)|dien(a|ā)|vakar(s|ā)|nakt(s|ī))/,abbreviated:/^(am|pm|pusn\.|pusd\.|rīt(s|ā)|pēcpusd\.|vakar(s|ā)|nakt(s|ī))/,wide:/^(am|pm|pusnakt(s|ī)|pusdienlaik(s|ā)|rīt(s|ā)|pēcpusdien(a|ā)|vakar(s|ā)|nakt(s|ī))/i},g={any:{am:/^am/i,pm:/^pm/i,midnight:/^pusn/i,noon:/^pusd/i,morning:/^r/i,afternoon:/^(d|pēc)/i,evening:/^v/i,night:/^n/i}},v={ordinalNumber:a.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:i.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:i.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:i.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:i.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:i.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(694),i=n(695),r=n(696),o=n(697),u=n(698),s={code:"mk",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:4}};t.a=s},function(e,t,n){"use strict";function a(e,t,n){n=n||{};var a;return a="string"==typeof i[e]?i[e]:1===t?i[e].one:i[e].other.replace("{{count}}",t),n.addSuffix?n.comparison>0?"за "+a:"пред "+a:a}t.a=a;var i={lessThanXSeconds:{one:"помалку од секунда",other:"помалку од {{count}} секунди"},xSeconds:{one:"1 секунда",other:"{{count}} секунди"},halfAMinute:"половина минута",lessThanXMinutes:{one:"помалку од минута",other:"помалку од {{count}} минути"},xMinutes:{one:"1 минута",other:"{{count}} минути"},aboutXHours:{one:"околу 1 час",other:"околу {{count}} часа"},xHours:{one:"1 час",other:"{{count}} часа"},xDays:{one:"1 ден",other:"{{count}} дена"},aboutXWeeks:{one:"околу 1 недела",other:"околу {{count}} месеци"},xWeeks:{one:"1 недела",other:"{{count}} недели"},aboutXMonths:{one:"околу 1 месец",other:"околу {{count}} недели"},xMonths:{one:"1 месец",other:"{{count}} месеци"},aboutXYears:{one:"околу 1 година",other:"околу {{count}} години"},xYears:{one:"1 година",other:"{{count}} години"},overXYears:{one:"повеќе од 1 година",other:"повеќе од {{count}} години"},almostXYears:{one:"безмалку 1 година",other:"безмалку {{count}} години"}}},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE, dd MMMM yyyy",long:"dd MMMM yyyy",medium:"dd MMM yyyy",short:"dd/MM/yyyy"},r={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"H:mm"},o={any:"{{date}} {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"any"})};t.a=u},function(e,t,n){"use strict";function a(e){var t=s[e];switch(e){case 0:case 3:case 6:return"'минатата "+t+" во' p";case 1:case 2:case 4:case 5:return"'минатиот "+t+" во' p"}}function i(e){var t=s[e];switch(e){case 0:case 3:case 6:return"'ова "+t+" вo' p";case 1:case 2:case 4:case 5:return"'овој "+t+" вo' p"}}function r(e){var t=s[e];switch(e){case 0:case 3:case 6:return"'следната "+t+" вo' p";case 1:case 2:case 4:case 5:return"'следниот "+t+" вo' p"}}function o(e,t,n,a){var i=d[e];return"function"==typeof i?i(t,n,a):i}t.a=o;var u=n(13),s=["недела","понеделник","вторник","среда","четврток","петок","сабота"],d={lastWeek:function(e,t,n){var r=e.getUTCDay();return u.a(e,t,n)?i(r):a(r)},yesterday:"'вчера во' p",today:"'денес во' p",tomorrow:"'утре во' p",nextWeek:function(e,t,n){var a=e.getUTCDay();return u.a(e,t,n)?i(a):r(a)},other:"P"}},function(e,t,n){"use strict";function a(e){var t=Number(e),n=t%100;if(n>20||n<10)switch(n%10){case 1:return t+"-ви";case 2:return t+"-ри";case 7:case 8:return t+"-ми"}return t+"-ти"}var i=n(3),r={narrow:["пр.н.е.","н.е."],abbreviated:["пред н. е.","н. е."],wide:["пред нашата ера","нашата ера"]},o={narrow:["1","2","3","4"],abbreviated:["1-ви кв.","2-ри кв.","3-ти кв.","4-ти кв."],wide:["1-ви квартал","2-ри квартал","3-ти квартал","4-ти квартал"]},u={abbreviated:["јан","фев","мар","апр","мај","јун","јул","авг","септ","окт","ноем","дек"],wide:["јануари","февруари","март","април","мај","јуни","јули","август","септември","октомври","ноември","декември"]},s={narrow:["Н","П","В","С","Ч","П","С"],short:["не","по","вт","ср","че","пе","са"],abbreviated:["нед","пон","вто","сре","чет","пет","саб"],wide:["недела","понеделник","вторник","среда","четврток","петок","сабота"]},d={wide:{am:"претпладне",pm:"попладне",midnight:"полноќ",noon:"напладне",morning:"наутро",afternoon:"попладне",evening:"навечер",night:"ноќе"}},c={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:u,defaultWidth:"wide"}),day:i.a({values:s,defaultWidth:"wide"}),dayPeriod:i.a({values:d,defaultWidth:"wide"})};t.a=c},function(e,t,n){"use strict";var a=n(5),i=n(4),r=/^(\d+)(-?[врмт][и])?/i,o=/\d+/i,u={narrow:/^((пр)?н\.?\s?е\.?)/i,abbreviated:/^((пр)?н\.?\s?е\.?)/i,wide:/^(пред нашата ера|нашата ера)/i},s={any:[/^п/i,/^н/i]},d={narrow:/^[1234]/i,abbreviated:/^[1234](-?[врт]?и?)? кв.?/i,wide:/^[1234](-?[врт]?и?)? квартал/i},c={any:[/1/i,/2/i,/3/i,/4/i]},l={narrow:/^[нпвсч]/i,short:/^(не|по|вт|ср|че|пе|са)/i,abbreviated:/^(нед|пон|вто|сре|чет|пет|саб)/i,wide:/^(недела|понеделник|вторник|среда|четврток|петок|сабота)/i},m={narrow:[/^н/i,/^п/i,/^в/i,/^с/i,/^ч/i,/^п/i,/^с/i],any:[/^н[ед]/i,/^п[он]/i,/^вт/i,/^ср/i,/^ч[ет]/i,/^п[ет]/i,/^с[аб]/i]},f={abbreviated:/^(јан|фев|мар|апр|мај|јун|јул|авг|сеп|окт|ноем|дек)/i,wide:/^(јануари|февруари|март|април|мај|јуни|јули|август|септември|октомври|ноември|декември)/i},h={any:[/^ја/i,/^Ф/i,/^мар/i,/^ап/i,/^мај/i,/^јун/i,/^јул/i,/^ав/i,/^се/i,/^окт/i,/^но/i,/^де/i]},p={any:/^(претп|попл|полноќ|утро|пладне|вечер|ноќ)/i},g={any:{am:/претпладне/i,pm:/попладне/i,midnight:/полноќ/i,noon:/напладне/i,morning:/наутро/i,afternoon:/попладне/i,evening:/навечер/i,night:/ноќе/i}},v={ordinalNumber:i.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:a.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:a.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:a.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),day:a.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),dayPeriod:a.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(700),i=n(701),r=n(702),o=n(703),u=n(704),s={code:"ms",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:1}};t.a=s},function(e,t,n){"use strict";function a(e,t,n){n=n||{};var a;return a="string"==typeof i[e]?i[e]:1===t?i[e].one:i[e].other.replace("{{count}}",t),n.addSuffix?n.comparison>0?"dalam masa "+a:a+" yang lalu":a}t.a=a;var i={lessThanXSeconds:{one:"kurang dari 1 saat",other:"kurang dari {{count}} saat"},xSeconds:{one:"1 saat",other:"{{count}} saat"},halfAMinute:"setengah minit",lessThanXMinutes:{one:"kurang dari 1 minit",other:"kurang dari {{count}} minit"},xMinutes:{one:"1 minit",other:"{{count}} minit"},aboutXHours:{one:"sekitar 1 jam",other:"sekitar {{count}} jam"},xHours:{one:"1 jam",other:"{{count}} jam"},xDays:{one:"1 hari",other:"{{count}} hari"},aboutXWeeks:{one:"sekitar 1 minggu",other:"sekitar {{count}} minggu"},xWeeks:{one:"1 minggu",other:"{{count}} minggu"},aboutXMonths:{one:"sekitar 1 bulan",other:"sekitar {{count}} bulan"},xMonths:{one:"1 bulan",other:"{{count}} bulan"},aboutXYears:{one:"sekitar 1 tahun",other:"sekitar {{count}} tahun"},xYears:{one:"1 tahun",other:"{{count}} tahun"},overXYears:{one:"lebih dari 1 tahun",other:"lebih dari {{count}} tahun"},almostXYears:{one:"hampir 1 tahun",other:"hampir {{count}} tahun"}}},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE, d MMMM yyyy",long:"d MMMM yyyy",medium:"d MMM yyyy",short:"d/M/yyyy"},r={full:"HH.mm.ss",long:"HH.mm.ss",medium:"HH.mm",short:"HH.mm"},o={full:"{{date}} 'pukul' {{time}}",long:"{{date}} 'pukul' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e,t,n,a){return i[e]}t.a=a;var i={lastWeek:"eeee 'lepas pada jam' p",yesterday:"'Semalam pada jam' p",today:"'Hari ini pada jam' p",tomorrow:"'Esok pada jam' p",nextWeek:"eeee 'pada jam' p",other:"P"}},function(e,t,n){"use strict";function a(e,t){var n=Number(e);return"ke-"+n}var i=n(3),r={narrow:["SM","M"],abbreviated:["SM","M"],wide:["Sebelum Masihi","Masihi"]},o={narrow:["1","2","3","4"],abbreviated:["S1","S2","S3","S4"],wide:["Suku pertama","Suku kedua","Suku ketiga","Suku keempat"]},u={narrow:["J","F","M","A","M","J","J","O","S","O","N","D"],abbreviated:["Jan","Feb","Mac","Apr","Mei","Jun","Jul","Ogo","Sep","Okt","Nov","Dis"],wide:["Januari","Februari","Mac","April","Mei","Jun","Julai","Ogos","September","Oktober","November","Disember"]},s={narrow:["A","I","S","R","K","J","S"],short:["Ahd","Isn","Sel","Rab","Kha","Jum","Sab"],abbreviated:["Ahd","Isn","Sel","Rab","Kha","Jum","Sab"],wide:["Ahad","Isnin","Selasa","Rabu","Khamis","Jumaat","Sabtu"]},d={narrow:{am:"am",pm:"pm",midnight:"tgh malam",noon:"tgh hari",morning:"pagi",afternoon:"tengah hari",evening:"petang",night:"malam"},abbreviated:{am:"AM",pm:"PM",midnight:"tengah malam",noon:"tengah hari",morning:"pagi",afternoon:"tengah hari",evening:"petang",night:"malam"},wide:{am:"a.m.",pm:"p.m.",midnight:"tengah malam",noon:"tengah hari",morning:"pagi",afternoon:"tengah hari",evening:"petang",night:"malam"}},c={narrow:{am:"am",pm:"pm",midnight:"tengah malam",noon:"tengah hari",morning:"pagi",afternoon:"tengah hari",evening:"petang",night:"malam"},abbreviated:{am:"AM",pm:"PM",midnight:"tengah malam",noon:"tengah hari",morning:"pagi",afternoon:"tengah hari",evening:"petang",night:"malam"},wide:{am:"a.m.",pm:"p.m.",midnight:"tengah malam",noon:"tengah hari",morning:"pagi",afternoon:"tengah hari",evening:"petang",night:"malam"}},l={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:u,defaultWidth:"wide"}),day:i.a({values:s,defaultWidth:"wide"}),dayPeriod:i.a({values:d,defaultWidth:"wide",formattingValues:c,defaultFormattingWidth:"wide"})};t.a=l},function(e,t,n){"use strict";var a=n(5),i=n(4),r=/^ke-(\d+)?/i,o=/petama|\d+/i,u={narrow:/^(sm|m)/i,abbreviated:/^(s\.?\s?m\.?|m\.?)/i,wide:/^(sebelum masihi|masihi)/i},s={any:[/^s/i,/^(m)/i]},d={narrow:/^[1234]/i,abbreviated:/^S[1234]/i,wide:/Suku (pertama|kedua|ketiga|keempat)/i},c={any:[/pertama|1/i,/kedua|2/i,/ketiga|3/i,/keempat|4/i]},l={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mac|apr|mei|jun|jul|ogo|sep|okt|nov|dis)/i,wide:/^(januari|februari|mac|april|mei|jun|julai|ogos|september|oktober|november|disember)/i},m={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^o/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^ma/i,/^ap/i,/^me/i,/^jun/i,/^jul/i,/^og/i,/^s/i,/^ok/i,/^n/i,/^d/i]},f={narrow:/^[aisrkj]/i,short:/^(ahd|isn|sel|rab|kha|jum|sab)/i,abbreviated:/^(ahd|isn|sel|rab|kha|jum|sab)/i,wide:/^(ahad|isnin|selasa|rabu|khamis|jumaat|sabtu)/i},h={narrow:[/^a/i,/^i/i,/^s/i,/^r/i,/^k/i,/^j/i,/^s/i],any:[/^a/i,/^i/i,/^se/i,/^r/i,/^k/i,/^j/i,/^sa/i]},p={narrow:/^(am|pm|tengah malam|tengah hari|pagi|petang|malam)/i,any:/^([ap]\.?\s?m\.?|tengah malam|tengah hari|pagi|petang|malam)/i},g={any:{am:/^a/i,pm:/^pm/i,midnight:/^tengah m/i,noon:/^tengah h/i,morning:/pa/i,afternoon:/tengah h/i,evening:/pe/i,night:/m/i}},v={ordinalNumber:i.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:a.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:a.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:a.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:a.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:a.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(706),i=n(707),r=n(708),o=n(709),u=n(710),s={code:"mt",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:4}};t.a=s},function(e,t,n){"use strict";function a(e,t,n){n=n||{};var a,r=e.match(/years/i);return a="string"==typeof i[e]?i[e]:1===t?i[e].one:2===t&&r?i[e].two:i[e].other.replace("{{count}}",t),n.addSuffix?n.comparison>0?"f'"+a:a+" ilu":a}t.a=a;var i={lessThanXSeconds:{one:"inqas minn sekonda",other:"inqas minn {{count}} sekondi"},xSeconds:{one:"sekonda",other:"{{count}} sekondi"},halfAMinute:"nofs minuta",lessThanXMinutes:{one:"inqas minn minuta",other:"inqas minn {{count}} minuti"},xMinutes:{one:"minuta",other:"{{count}} minuti"},aboutXHours:{one:"madwar siegħa",other:"madwar {{count}} siegħat"},xHours:{one:"siegħa",other:"{{count}} siegħat"},xDays:{one:"ġurnata",other:"{{count}} ġranet"},aboutXWeeks:{one:"madwar ġimgħa",other:"madwar {{count}} ġimgħat"},xWeeks:{one:"ġimgħa",other:"{{count}} ġimgħat"},aboutXMonths:{one:"madwar xahar",other:"madwar {{count}} xhur"},xMonths:{one:"xahar",other:"{{count}} xhur"},aboutXYears:{one:"madwar sena",two:"madwar sentejn",other:"madwar {{count}} snin"},xYears:{one:"sena",two:"sentejn",other:"{{count}} snin"},overXYears:{one:"aktar minn sena",two:"aktar minn sentejn",other:"aktar minn {{count}} snin"},almostXYears:{one:"kważi sena",two:"kważi sentejn",other:"kważi {{count}} snin"}}},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE, d MMMM yyyy",long:"d MMMM yyyy",medium:"d MMM yyyy",short:"dd/MM/yyyy"},r={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},o={full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e,t,n,a){return i[e]}t.a=a;var i={lastWeek:"eeee 'li għadda' 'fil-'p",yesterday:"'Il-bieraħ fil-'p",today:"'Illum fil-'p",tomorrow:"'Għada fil-'p",nextWeek:"eeee 'fil-'p",other:"P"}},function(e,t,n){"use strict";function a(e){return Number(e)+"º"}var i=n(3),r={narrow:["Q","W"],abbreviated:["QK","WK"],wide:["qabel Kristu","wara Kristu"]},o={narrow:["1","2","3","4"],abbreviated:["K1","K2","K3","K4"],wide:["1. kwart","2. kwart","3. kwart","4. kwart"]},u={narrow:["J","F","M","A","M","Ġ","L","A","S","O","N","D"],abbreviated:["Jan","Fra","Mar","Apr","Mej","Ġun","Lul","Aww","Set","Ott","Nov","Diċ"],wide:["Jannar","Frar","Marzu","April","Mejju","Ġunju","Lulju","Awwissu","Settembru","Ottubru","Novembru","Diċembru"]},s={narrow:["Ħ","T","T","E","Ħ","Ġ","S"],short:["Ħa","Tn","Tl","Er","Ħa","Ġi","Si"],abbreviated:["Ħad","Tne","Tli","Erb","Ħam","Ġim","Sib"],wide:["Il-Ħadd","It-Tnejn","It-Tlieta","L-Erbgħa","Il-Ħamis","Il-Ġimgħa","Is-Sibt"]},d={narrow:{am:"a",pm:"p",midnight:"nofsillejl",noon:"nofsinhar",morning:"għodwa",afternoon:"wara nofsinhar",evening:"filgħaxija",night:"lejl"},abbreviated:{am:"AM",pm:"PM",midnight:"nofsillejl",noon:"nofsinhar",morning:"għodwa",afternoon:"wara nofsinhar",evening:"filgħaxija",night:"lejl"},wide:{am:"a.m.",pm:"p.m.",midnight:"nofsillejl",noon:"nofsinhar",morning:"għodwa",afternoon:"wara nofsinhar",evening:"filgħaxija",night:"lejl"}},c={narrow:{am:"a",pm:"p",midnight:"f'nofsillejl",noon:"f'nofsinhar",morning:"filgħodu",afternoon:"wara nofsinhar",evening:"filgħaxija",night:"billejl"},abbreviated:{am:"AM",pm:"PM",midnight:"f'nofsillejl",noon:"f'nofsinhar",morning:"filgħodu",afternoon:"wara nofsinhar",evening:"filgħaxija",night:"billejl"},wide:{am:"a.m.",pm:"p.m.",midnight:"f'nofsillejl",noon:"f'nofsinhar",morning:"filgħodu",afternoon:"wara nofsinhar",evening:"filgħaxija",night:"billejl"}},l={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:u,defaultWidth:"wide"}),day:i.a({values:s,defaultWidth:"wide"}),dayPeriod:i.a({values:d,defaultWidth:"wide",formattingValues:c,defaultFormattingWidth:"wide"})};t.a=l},function(e,t,n){"use strict";var a=n(4),i=n(5),r=/^(\d+)(º)?/i,o=/\d+/i,u={narrow:/^(q|w)/i,abbreviated:/^(q\.?\s?k\.?|b\.?\s?c\.?\s?e\.?|w\.?\s?k\.?)/i,wide:/^(qabel kristu|before common era|wara kristu|common era)/i},s={any:[/^(q|b)/i,/^(w|c)/i]},d={narrow:/^[1234]/i,abbreviated:/^k[1234]/i,wide:/^[1234](\.)? kwart/i},c={any:[/1/i,/2/i,/3/i,/4/i]},l={narrow:/^[jfmaglsond]/i,abbreviated:/^(jan|fra|mar|apr|mej|ġun|lul|aww|set|ott|nov|diċ)/i,wide:/^(jannar|frar|marzu|april|mejju|ġunju|lulju|awwissu|settembru|ottubru|novembru|diċembru)/i},m={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^ġ/i,/^l/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^mej/i,/^ġ/i,/^l/i,/^aw/i,/^s/i,/^o/i,/^n/i,/^d/i]},f={narrow:/^[ħteġs]/i,short:/^(ħa|tn|tl|er|ħa|ġi|si)/i,abbreviated:/^(ħad|tne|tli|erb|ħam|ġim|sib)/i,wide:/^(il-ħadd|it-tnejn|it-tlieta|l-erbgħa|il-ħamis|il-ġimgħa|is-sibt)/i},h={narrow:[/^ħ/i,/^t/i,/^t/i,/^e/i,/^ħ/i,/^ġ/i,/^s/i],any:[/^(il-)?ħad/i,/^(it-)?tn/i,/^(it-)?tl/i,/^(l-)?er/i,/^(il-)?ham/i,/^(il-)?ġi/i,/^(is-)?si/i]},p={narrow:/^(a|p|f'nofsillejl|f'nofsinhar|(ta') (għodwa|wara nofsinhar|filgħaxija|lejl))/i,any:/^([ap]\.?\s?m\.?|f'nofsillejl|f'nofsinhar|(ta') (għodwa|wara nofsinhar|filgħaxija|lejl))/i},g={any:{am:/^a/i,pm:/^p/i,midnight:/^f'nofsillejl/i,noon:/^f'nofsinhar/i,morning:/għodwa/i,afternoon:/wara(\s.*)nofsinhar/i,evening:/filgħaxija/i,night:/lejl/i}},v={ordinalNumber:a.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:i.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:i.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:i.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:i.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:i.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(712),i=n(713),r=n(714),o=n(715),u=n(716),s={code:"nb",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:4}};t.a=s},function(e,t,n){"use strict";function a(e,t,n){n=n||{onlyNumeric:!1};var a,o=i[e];return a="string"==typeof o?o:0===t||t>1?n.onlyNumeric?o.plural.replace("{{count}}",t):o.plural.replace("{{count}}",t<13?r[t]:t):o.singular,n.addSuffix?n.comparison>0?"om "+a:a+" siden":a}t.a=a;var i={lessThanXSeconds:{singular:"mindre enn ett sekund",plural:"mindre enn {{count}} sekunder"},xSeconds:{singular:"ett sekund",plural:"{{count}} sekunder"},halfAMinute:"et halvt minutt",lessThanXMinutes:{singular:"mindre enn ett minutt",plural:"mindre enn {{count}} minutter"},xMinutes:{singular:"ett minutt",plural:"{{count}} minutter"},aboutXHours:{singular:"omtrent en time",plural:"omtrent {{count}} timer"},xHours:{singular:"en time",plural:"{{count}} timer"},xDays:{singular:"en dag",plural:"{{count}} dager"},aboutXWeeks:{singular:"omtrent en uke",plural:"omtrent {{count}} uker"},xWeeks:{singular:"en uke",plural:"{{count}} uker"},aboutXMonths:{singular:"omtrent en måned",plural:"omtrent {{count}} måneder"},xMonths:{singular:"en måned",plural:"{{count}} måneder"},aboutXYears:{singular:"omtrent ett år",plural:"omtrent {{count}} år"},xYears:{singular:"ett år",plural:"{{count}} år"},overXYears:{singular:"over ett år",plural:"over {{count}} år"},almostXYears:{singular:"nesten ett år",plural:"nesten {{count}} år"}},r=["null","en","to","tre","fire","fem","seks","sju","åtte","ni","ti","elleve","tolv"]},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE d. MMMM y",long:"d. MMMM y",medium:"d. MMM y",short:"dd.MM.y"},r={full:"'kl'. HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},o={full:"{{date}} 'kl.' {{time}}",long:"{{date}} 'kl.' {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e,t,n,a){return i[e]}t.a=a;var i={lastWeek:"'forrige' eeee 'kl.' p",yesterday:"'i går kl.' p",today:"'i dag kl.' p",tomorrow:"'i morgen kl.' p",nextWeek:"EEEE 'kl.' p",other:"P"}},function(e,t,n){"use strict";function a(e){return Number(e)+"."}var i=n(3),r={narrow:["f.Kr.","e.Kr."],abbreviated:["f.Kr.","e.Kr."],wide:["før Kristus","etter Kristus"]},o={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1. kvartal","2. kvartal","3. kvartal","4. kvartal"]},u={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["jan.","feb.","mars","apr.","mai","juni","juli","aug.","sep.","okt.","nov.","des."],wide:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"]},s={narrow:["S","M","T","O","T","F","L"],short:["sø","ma","ti","on","to","fr","lø"],abbreviated:["søn","man","tir","ons","tor","fre","lør"],wide:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"]},d={narrow:{am:"a",pm:"p",midnight:"midnatt",noon:"middag",morning:"på morg.",afternoon:"på etterm.",evening:"på kvelden",night:"på natten"},abbreviated:{am:"a.m.",pm:"p.m.",midnight:"midnatt",noon:"middag",morning:"på morg.",afternoon:"på etterm.",evening:"på kvelden",night:"på natten"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnatt",noon:"middag",morning:"på morgenen",afternoon:"på ettermiddagen",evening:"på kvelden",night:"på natten"}},c={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:u,defaultWidth:"wide"}),day:i.a({values:s,defaultWidth:"wide"}),dayPeriod:i.a({values:d,defaultWidth:"wide"})};t.a=c},function(e,t,n){"use strict";var a=n(4),i=n(5),r=/^(\d+)\.?/i,o=/\d+/i,u={narrow:/^(f\.? ?Kr\.?|fvt\.?|e\.? ?Kr\.?|evt\.?)/i,abbreviated:/^(f\.? ?Kr\.?|fvt\.?|e\.? ?Kr\.?|evt\.?)/i,wide:/^(før Kristus|før vår tid|etter Kristus|vår tid)/i},s={any:[/^f/i,/^e/i]},d={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](\.)? kvartal/i},c={any:[/1/i,/2/i,/3/i,/4/i]},l={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mars?|apr|mai|juni?|juli?|aug|sep|okt|nov|des)\.?/i,wide:/^(januar|februar|mars|april|mai|juni|juli|august|september|oktober|november|desember)/i},m={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^mai/i,/^jun/i,/^jul/i,/^aug/i,/^s/i,/^o/i,/^n/i,/^d/i]},f={narrow:/^[smtofl]/i,short:/^(sø|ma|ti|on|to|fr|lø)/i,abbreviated:/^(søn|man|tir|ons|tor|fre|lør)/i,wide:/^(søndag|mandag|tirsdag|onsdag|torsdag|fredag|lørdag)/i},h={any:[/^s/i,/^m/i,/^ti/i,/^o/i,/^to/i,/^f/i,/^l/i]},p={narrow:/^(midnatt|middag|(på) (morgenen|ettermiddagen|kvelden|natten)|[ap])/i,any:/^([ap]\.?\s?m\.?|midnatt|middag|(på) (morgenen|ettermiddagen|kvelden|natten))/i},g={any:{am:/^a(\.?\s?m\.?)?$/i,pm:/^p(\.?\s?m\.?)?$/i,midnight:/^midn/i,noon:/^midd/i,morning:/morgen/i,afternoon:/ettermiddag/i,evening:/kveld/i,night:/natt/i}},v={ordinalNumber:a.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:i.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:i.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:i.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:i.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:i.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(718),i=n(719),r=n(720),o=n(721),u=n(722),s={code:"nl",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:4}};t.a=s},function(e,t,n){"use strict";function a(e,t,n){n=n||{};var a;return a="string"==typeof i[e]?i[e]:1===t?i[e].one:i[e].other.replace("{{count}}",t),n.addSuffix?n.comparison>0?"over "+a:a+" geleden":a}t.a=a;var i={lessThanXSeconds:{one:"minder dan een seconde",other:"minder dan {{count}} seconden"},xSeconds:{one:"1 seconde",other:"{{count}} seconden"},halfAMinute:"een halve minuut",lessThanXMinutes:{one:"minder dan een minuut",other:"minder dan {{count}} minuten"},xMinutes:{one:"een minuut",other:"{{count}} minuten"},aboutXHours:{one:"ongeveer 1 uur",other:"ongeveer {{count}} uur"},xHours:{one:"1 uur",other:"{{count}} uur"},xDays:{one:"1 dag",other:"{{count}} dagen"},aboutXWeeks:{one:"ongeveer 1 week",other:"ongeveer {{count}} weken"},xWeeks:{one:"1 week",other:"{{count}} weken"},aboutXMonths:{one:"ongeveer 1 maand",other:"ongeveer {{count}} maanden"},xMonths:{one:"1 maand",other:"{{count}} maanden"},aboutXYears:{one:"ongeveer 1 jaar",other:"ongeveer {{count}} jaar"},xYears:{one:"1 jaar",other:"{{count}} jaar"},overXYears:{one:"meer dan 1 jaar",other:"meer dan {{count}} jaar"},almostXYears:{one:"bijna 1 jaar",other:"bijna {{count}} jaar"}}},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE d MMMM y",long:"d MMMM y",medium:"d MMM y",short:"dd-MM-y"},r={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},o={full:"{{date}} 'om' {{time}}",long:"{{date}} 'om' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e,t,n,a){return i[e]}t.a=a;var i={lastWeek:"'afgelopen' eeee 'om' p",yesterday:"'gisteren om' p",today:"'vandaag om' p",tomorrow:"'morgen om' p",nextWeek:"eeee 'om' p",other:"P"}},function(e,t,n){"use strict";function a(e){return Number(e)+"e"}var i=n(3),r={narrow:["v.C.","n.C."],abbreviated:["v.Chr.","n.Chr."],wide:["voor Christus","na Christus"]},o={narrow:["1","2","3","4"],abbreviated:["K1","K2","K3","K4"],wide:["1e kwartaal","2e kwartaal","3e kwartaal","4e kwartaal"]},u={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["jan.","feb.","mrt.","apr.","mei","jun.","jul.","aug.","sep.","okt.","nov.","dec."],wide:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"]},s={narrow:["Z","M","D","W","D","V","Z"],short:["zo","ma","di","wo","do","vr","za"],abbreviated:["zon","maa","din","woe","don","vri","zat"],wide:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"]},d={narrow:{am:"AM",pm:"PM",midnight:"middernacht",noon:"het middaguur",morning:"'s ochtends",afternoon:"'s middags",evening:"'s avonds",night:"'s nachts"},abbreviated:{am:"AM",pm:"PM",midnight:"middernacht",noon:"het middaguur",morning:"'s ochtends",afternoon:"'s middags",evening:"'s avonds",night:"'s nachts"},wide:{am:"AM",pm:"PM",midnight:"middernacht",noon:"het middaguur",morning:"'s ochtends",afternoon:"'s middags",evening:"'s avonds",night:"'s nachts"}},c={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:u,defaultWidth:"wide"}),day:i.a({values:s,defaultWidth:"wide"}),dayPeriod:i.a({values:d,defaultWidth:"wide"})};t.a=c},function(e,t,n){"use strict";var a=n(4),i=n(5),r=/^(\d+)e?/i,o=/\d+/i,u={narrow:/^([vn]\.? ?C\.?)/,abbreviated:/^([vn]\. ?Chr\.?)/,wide:/^((voor|na) Christus)/},s={any:[/^v/,/^n/]},d={narrow:/^[1234]/i,abbreviated:/^K[1234]/i,wide:/^[1234]e kwartaal/i},c={any:[/1/i,/2/i,/3/i,/4/i]},l={narrow:/^[jfmasond]/i,abbreviated:/^(jan.|feb.|mrt.|apr.|mei|jun.|jul.|aug.|sep.|okt.|nov.|dec.)/i,wide:/^(januari|februari|maart|april|mei|juni|juli|augustus|september|oktober|november|december)/i},m={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^jan/i,/^feb/i,/^m(r|a)/i,/^apr/i,/^mei/i,/^jun/i,/^jul/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i]},f={narrow:/^[zmdwv]/i,short:/^(zo|ma|di|wo|do|vr|za)/i,abbreviated:/^(zon|maa|din|woe|don|vri|zat)/i,wide:/^(zondag|maandag|dinsdag|woensdag|donderdag|vrijdag|zaterdag)/i},h={narrow:[/^z/i,/^m/i,/^d/i,/^w/i,/^d/i,/^v/i,/^z/i],any:[/^zo/i,/^ma/i,/^di/i,/^wo/i,/^do/i,/^vr/i,/^za/i]},p={any:/^(am|pm|middernacht|het middaguur|'s (ochtends|middags|avonds|nachts))/i},g={any:{am:/^am/i,pm:/^pm/i,midnight:/^middernacht/i,noon:/^het middaguur/i,morning:/ochtend/i,afternoon:/middag/i,evening:/avond/i,night:/nacht/i}},v={ordinalNumber:a.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:i.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:i.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:i.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:i.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:i.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(724),i=n(725),r=n(726),o=n(727),u=n(728),s={code:"nl-BE",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:4}};t.a=s},function(e,t,n){"use strict";function a(e,t,n){n=n||{};var a;return a="string"==typeof i[e]?i[e]:1===t?i[e].one:i[e].other.replace("{{count}}",t),n.addSuffix?n.comparison>0?"over "+a:a+" geleden":a}t.a=a;var i={lessThanXSeconds:{one:"minder dan een seconde",other:"minder dan {{count}} seconden"},xSeconds:{one:"1 seconde",other:"{{count}} seconden"},halfAMinute:"een halve minuut",lessThanXMinutes:{one:"minder dan een minuut",other:"minder dan {{count}} minuten"},xMinutes:{one:"een minuut",other:"{{count}} minuten"},aboutXHours:{one:"ongeveer 1 uur",other:"ongeveer {{count}} uur"},xHours:{one:"1 uur",other:"{{count}} uur"},xDays:{one:"1 dag",other:"{{count}} dagen"},aboutXWeeks:{one:"ongeveer 1 week",other:"ongeveer {{count}} weken"},xWeeks:{one:"1 week",other:"{{count}} weken"},aboutXMonths:{one:"ongeveer 1 maand",other:"ongeveer {{count}} maanden"},xMonths:{one:"1 maand",other:"{{count}} maanden"},aboutXYears:{one:"ongeveer 1 jaar",other:"ongeveer {{count}} jaar"},xYears:{one:"1 jaar",other:"{{count}} jaar"},overXYears:{one:"meer dan 1 jaar",other:"meer dan {{count}} jaar"},almostXYears:{one:"bijna 1 jaar",other:"bijna {{count}} jaar"}}},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE d MMMM y",long:"d MMMM y",medium:"d MMM y",short:"dd-MM-y"},r={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},o={full:"{{date}} 'om' {{time}}",long:"{{date}} 'om' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e,t,n,a){return i[e]}t.a=a;var i={lastWeek:"'vorige' eeee 'om' p",yesterday:"'gisteren om' p",today:"'vandaag om' p",tomorrow:"'morgen om' p",nextWeek:"eeee 'om' p",other:"P"}},function(e,t,n){"use strict";function a(e){return Number(e)+"e"}var i=n(3),r={narrow:["v.C.","n.C."],abbreviated:["v.Chr.","n.Chr."],wide:["voor Christus","na Christus"]},o={narrow:["1","2","3","4"],abbreviated:["K1","K2","K3","K4"],wide:["1e kwartaal","2e kwartaal","3e kwartaal","4e kwartaal"]},u={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["jan.","feb.","mrt.","apr.","mei","jun.","jul.","aug.","sep.","okt.","nov.","dec."],wide:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"]},s={narrow:["Z","M","D","W","D","V","Z"],short:["zo","ma","di","wo","do","vr","za"],abbreviated:["zon","maa","din","woe","don","vri","zat"],wide:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"]},d={narrow:{am:"AM",pm:"PM",midnight:"middernacht",noon:"het middag",morning:"'s ochtends",afternoon:"'s namiddags",evening:"'s avonds",night:"'s nachts"},abbreviated:{am:"AM",pm:"PM",midnight:"middernacht",noon:"het middag",morning:"'s ochtends",afternoon:"'s namiddags",evening:"'s avonds",night:"'s nachts"},wide:{am:"AM",pm:"PM",midnight:"middernacht",noon:"het middag",morning:"'s ochtends",afternoon:"'s namiddags",evening:"'s avonds",night:"'s nachts"}},c={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:u,defaultWidth:"wide"}),day:i.a({values:s,defaultWidth:"wide"}),dayPeriod:i.a({values:d,defaultWidth:"wide"})};t.a=c},function(e,t,n){"use strict";var a=n(4),i=n(5),r=/^(\d+)e?/i,o=/\d+/i,u={narrow:/^([vn]\.? ?C\.?)/,abbreviated:/^([vn]\. ?Chr\.?)/,wide:/^((voor|na) Christus)/},s={any:[/^v/,/^n/]},d={narrow:/^[1234]/i,abbreviated:/^K[1234]/i,wide:/^[1234]e kwartaal/i},c={any:[/1/i,/2/i,/3/i,/4/i]},l={narrow:/^[jfmasond]/i,abbreviated:/^(jan.|feb.|mrt.|apr.|mei|jun.|jul.|aug.|sep.|okt.|nov.|dec.)/i,wide:/^(januari|februari|maart|april|mei|juni|juli|augustus|september|oktober|november|december)/i},m={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^jan/i,/^feb/i,/^m(r|a)/i,/^apr/i,/^mei/i,/^jun/i,/^jul/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i]},f={narrow:/^[zmdwv]/i,short:/^(zo|ma|di|wo|do|vr|za)/i,abbreviated:/^(zon|maa|din|woe|don|vri|zat)/i,wide:/^(zondag|maandag|dinsdag|woensdag|donderdag|vrijdag|zaterdag)/i},h={narrow:[/^z/i,/^m/i,/^d/i,/^w/i,/^d/i,/^v/i,/^z/i],any:[/^zo/i,/^ma/i,/^di/i,/^wo/i,/^do/i,/^vr/i,/^za/i]},p={any:/^(am|pm|middernacht|het middaguur|'s (ochtends|middags|avonds|nachts))/i},g={any:{am:/^am/i,pm:/^pm/i,midnight:/^middernacht/i,noon:/^het middaguur/i,morning:/ochtend/i,afternoon:/middag/i,evening:/avond/i,night:/nacht/i}},v={ordinalNumber:a.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:i.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:i.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:i.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:i.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:i.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(730),i=n(731),r=n(732),o=n(733),u=n(734),s={code:"nn",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:4}};t.a=s},function(e,t,n){"use strict";function a(e,t,n){n=n||{onlyNumeric:!1};var a,o=i[e];return a="string"==typeof o?o:0===t||t>1?n.onlyNumeric?o.plural.replace("{{count}}",t):o.plural.replace("{{count}}",t<13?r[t]:t):o.singular,n.addSuffix?n.comparison>0?"om "+a:a+" sidan":a}t.a=a;var i={lessThanXSeconds:{singular:"mindre enn eitt sekund",plural:"mindre enn {{count}} sekund"},xSeconds:{singular:"eitt sekund",plural:"{{count}} sekund"},halfAMinute:"eit halvt minutt",lessThanXMinutes:{singular:"mindre enn eitt minutt",plural:"mindre enn {{count}} minutt"},xMinutes:{singular:"eitt minutt",plural:"{{count}} minutt"},aboutXHours:{singular:"omtrent ein time",plural:"omtrent {{count}} timar"},xHours:{singular:"ein time",plural:"{{count}} timar"},xDays:{singular:"ein dag",plural:"{{count}} dagar"},aboutXWeeks:{singular:"omtrent ei veke",plural:"omtrent {{count}} veker"},xWeeks:{singular:"ei veke",plural:"{{count}} veker"},aboutXMonths:{singular:"omtrent ein månad",plural:"omtrent {{count}} månader"},xMonths:{singular:"ein månad",plural:"{{count}} månader"},aboutXYears:{singular:"omtrent eitt år",plural:"omtrent {{count}} år"},xYears:{singular:"eitt år",plural:"{{count}} år"},overXYears:{singular:"over eitt år",plural:"over {{count}} år"},almostXYears:{singular:"nesten eitt år",plural:"nesten {{count}} år"}},r=["null","ein","to","tre","fire","fem","seks","sju","åtte","ni","ti","elleve","tolv"]},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE d. MMMM y",long:"d. MMMM y",medium:"d. MMM y",short:"dd.MM.y"},r={full:"'kl'. HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},o={full:"{{date}} 'kl.' {{time}}",long:"{{date}} 'kl.' {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e,t,n,a){return i[e]}t.a=a;var i={lastWeek:"'førre' eeee 'kl.' p",yesterday:"'i går kl.' p",today:"'i dag kl.' p",tomorrow:"'i morgon kl.' p",nextWeek:"EEEE 'kl.' p",other:"P"}},function(e,t,n){"use strict";function a(e){return Number(e)+"."}var i=n(3),r={narrow:["f.Kr.","e.Kr."],abbreviated:["f.Kr.","e.Kr."],wide:["før Kristus","etter Kristus"]},o={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1. kvartal","2. kvartal","3. kvartal","4. kvartal"]},u={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["jan.","feb.","mars","apr.","mai","juni","juli","aug.","sep.","okt.","nov.","des."],wide:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"]},s={narrow:["S","M","T","O","T","F","L"],short:["su","må","ty","on","to","fr","lau"],abbreviated:["sun","mån","tys","ons","tor","fre","laur"],wide:["sundag","måndag","tysdag","onsdag","torsdag","fredag","laurdag"]},d={narrow:{am:"a",pm:"p",midnight:"midnatt",noon:"middag",morning:"på morg.",afternoon:"på etterm.",evening:"på kvelden",night:"på natta"},abbreviated:{am:"a.m.",pm:"p.m.",midnight:"midnatt",noon:"middag",morning:"på morg.",afternoon:"på etterm.",evening:"på kvelden",night:"på natta"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnatt",noon:"middag",morning:"på morgonen",afternoon:"på ettermiddagen",evening:"på kvelden",night:"på natta"}},c={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:u,defaultWidth:"wide"}),day:i.a({values:s,defaultWidth:"wide"}),dayPeriod:i.a({values:d,defaultWidth:"wide"})};t.a=c},function(e,t,n){"use strict";var a=n(4),i=n(5),r=/^(\d+)\.?/i,o=/\d+/i,u={narrow:/^(f\.? ?Kr\.?|fvt\.?|e\.? ?Kr\.?|evt\.?)/i,abbreviated:/^(f\.? ?Kr\.?|fvt\.?|e\.? ?Kr\.?|evt\.?)/i,wide:/^(før Kristus|før vår tid|etter Kristus|vår tid)/i},s={any:[/^f/i,/^e/i]},d={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](\.)? kvartal/i},c={any:[/1/i,/2/i,/3/i,/4/i]},l={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mars?|apr|mai|juni?|juli?|aug|sep|okt|nov|des)\.?/i,wide:/^(januar|februar|mars|april|mai|juni|juli|august|september|oktober|november|desember)/i},m={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^mai/i,/^jun/i,/^jul/i,/^aug/i,/^s/i,/^o/i,/^n/i,/^d/i]},f={narrow:/^[smtofl]/i,short:/^(su|må|ty|on|to|fr|la)/i,abbreviated:/^(sun|mån|tys|ons|tor|fre|laur)/i,wide:/^(sundag|måndag|tysdag|onsdag|torsdag|fredag|laurdag)/i},h={any:[/^s/i,/^m/i,/^ty/i,/^o/i,/^to/i,/^f/i,/^l/i]},p={narrow:/^(midnatt|middag|(på) (morgonen|ettermiddagen|kvelden|natta)|[ap])/i,any:/^([ap]\.?\s?m\.?|midnatt|middag|(på) (morgonen|ettermiddagen|kvelden|natta))/i},g={any:{am:/^a(\.?\s?m\.?)?$/i,pm:/^p(\.?\s?m\.?)?$/i,midnight:/^midn/i,noon:/^midd/i,morning:/morgon/i,afternoon:/ettermiddag/i,evening:/kveld/i,night:/natt/i}},v={ordinalNumber:a.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:i.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:i.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:i.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:i.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:i.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(736),i=n(737),r=n(738),o=n(739),u=n(740),s={code:"pl",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:4}};t.a=s},function(e,t,n){"use strict";function a(e,t){if(1===t)return e.one;var n=t%100;if(n<=20&&n>10)return e.other;var a=n%10;return a>=2&&a<=4?e.twoFour:e.other}function i(e,t,n){n=n||"regular";var i=a(e,t);return(i[n]||i).replace("{{count}}",t)}function r(e,t,n){n=n||{};var a=o[e];return n.addSuffix?n.comparison>0?"za "+i(a,t,"future"):i(a,t,"past")+" temu":i(a,t)}t.a=r;var o={lessThanXSeconds:{one:{regular:"mniej niż sekunda",past:"mniej niż sekundę",future:"mniej niż sekundę"},twoFour:"mniej niż {{count}} sekundy",other:"mniej niż {{count}} sekund"},xSeconds:{one:{regular:"sekunda",past:"sekundę",future:"sekundę"},twoFour:"{{count}} sekundy",other:"{{count}} sekund"},halfAMinute:{one:"pół minuty",twoFour:"pół minuty",other:"pół minuty"},lessThanXMinutes:{one:{regular:"mniej niż minuta",past:"mniej niż minutę",future:"mniej niż minutę"},twoFour:"mniej niż {{count}} minuty",other:"mniej niż {{count}} minut"},xMinutes:{one:{regular:"minuta",past:"minutę",future:"minutę"},twoFour:"{{count}} minuty",other:"{{count}} minut"},aboutXHours:{one:{regular:"około godzina",past:"około godziny",future:"około godzinę"},twoFour:"około {{count}} godziny",other:"około {{count}} godzin"},xHours:{one:{regular:"godzina",past:"godzinę",future:"godzinę"},twoFour:"{{count}} godziny",other:"{{count}} godzin"},xDays:{one:{regular:"dzień",past:"dzień",future:"1 dzień"},twoFour:"{{count}} dni",other:"{{count}} dni"},aboutXWeeks:{one:"około tygodnia",twoFour:"około {{count}} tygodni",other:"około {{count}} tygodni"},xWeeks:{one:"tydzień",twoFour:"{{count}} tygodnie",other:"{{count}} tygodni"},aboutXMonths:{one:"około miesiąc",twoFour:"około {{count}} miesiące",other:"około {{count}} miesięcy"},xMonths:{one:"miesiąc",twoFour:"{{count}} miesiące",other:"{{count}} miesięcy"},aboutXYears:{one:"około rok",twoFour:"około {{count}} lata",other:"około {{count}} lat"},xYears:{one:"rok",twoFour:"{{count}} lata",other:"{{count}} lat"},overXYears:{one:"ponad rok",twoFour:"ponad {{count}} lata",other:"ponad {{count}} lat"},almostXYears:{one:"prawie rok",twoFour:"prawie {{count}} lata",other:"prawie {{count}} lat"}}},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE, do MMMM y",long:"do MMMM y",medium:"do MMM y",short:"dd.MM.y"},r={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},o={full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e,t,n,a){if(u.a(t,n,a))return d;if("lastWeek"===e)return s;if("nextWeek"===e)return c;throw new Error("Cannot determine adjectives for token ".concat(e))}function i(e,t,n,i){var r=t.getUTCDay();return a(e,t,n,i)[l[r]]}function r(e,t,n,a){return"'".concat(i(e,t,n,a),"' eeee 'o' p")}function o(e,t,n,a){var i=m[e];return"function"==typeof i?i(e,t,n,a):i}t.a=o;var u=n(13),s={masculine:"ostatni",feminine:"ostatnia"},d={masculine:"ten",feminine:"ta"},c={masculine:"następny",feminine:"następna"},l={0:"feminine",1:"masculine",2:"masculine",3:"feminine",4:"masculine",5:"masculine",6:"feminine"},m={lastWeek:r,yesterday:"'wczoraj o' p",today:"'dzisiaj o' p",tomorrow:"'jutro o' p",nextWeek:r,other:"P"}},function(e,t,n){"use strict";function a(e){var t=Number(e);return String(t)}var i=n(3),r={narrow:["p.n.e.","n.e."],abbreviated:["p.n.e.","n.e."],wide:["przed naszą erą","naszej ery"]},o={narrow:["1","2","3","4"],abbreviated:["I kw.","II kw.","III kw.","IV kw."],wide:["I kwartał","II kwartał","III kwartał","IV kwartał"]},u={narrow:["S","L","M","K","M","C","L","S","W","P","L","G"],abbreviated:["sty","lut","mar","kwi","maj","cze","lip","sie","wrz","paź","lis","gru"],wide:["styczeń","luty","marzec","kwiecień","maj","czerwiec","lipiec","sierpień","wrzesień","październik","listopad","grudzień"]},s={narrow:["s","l","m","k","m","c","l","s","w","p","l","g"],abbreviated:["sty","lut","mar","kwi","maj","cze","lip","sie","wrz","paź","lis","gru"],wide:["stycznia","lutego","marca","kwietnia","maja","czerwca","lipca","sierpnia","września","października","listopada","grudnia"]},d={narrow:["N","P","W","Ś","C","P","S"],short:["nie","pon","wto","śro","czw","pią","sob"],abbreviated:["niedz.","pon.","wt.","śr.","czw.","pt.","sob."],wide:["niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"]},c={narrow:["n","p","w","ś","c","p","s"],short:["nie","pon","wto","śro","czw","pią","sob"],abbreviated:["niedz.","pon.","wt.","śr.","czw.","pt.","sob."],wide:["niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"]},l={narrow:{am:"a",pm:"p",midnight:"półn.",noon:"poł",morning:"rano",afternoon:"popoł.",evening:"wiecz.",night:"noc"},abbreviated:{am:"AM",pm:"PM",midnight:"północ",noon:"południe",morning:"rano",afternoon:"popołudnie",evening:"wieczór",night:"noc"},wide:{am:"AM",pm:"PM",midnight:"północ",noon:"południe",morning:"rano",afternoon:"popołudnie",evening:"wieczór",night:"noc"}},m={narrow:{am:"a",pm:"p",midnight:"o półn.",noon:"w poł.",morning:"rano",afternoon:"po poł.",evening:"wiecz.",night:"w nocy"},abbreviated:{am:"AM",pm:"PM",midnight:"o północy",noon:"w południe",morning:"rano",afternoon:"po południu",evening:"wieczorem",night:"w nocy"},wide:{am:"AM",pm:"PM",midnight:"o północy",noon:"w południe",morning:"rano",afternoon:"po południu",evening:"wieczorem",night:"w nocy"}},f={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:u,defaultWidth:"wide",formattingValues:s,defaultFormattingWidth:"wide"}),day:i.a({values:d,defaultWidth:"wide",formattingValues:c,defaultFormattingWidth:"wide"}),dayPeriod:i.a({values:l,defaultWidth:"wide",formattingValues:m,defaultFormattingWidth:"wide"})};t.a=f},function(e,t,n){"use strict";var a=n(4),i=n(5),r=/^(\d+)?/i,o=/\d+/i,u={narrow:/^(p\.?\s*n\.?\s*e\.?\s*|n\.?\s*e\.?\s*)/i,abbreviated:/^(p\.?\s*n\.?\s*e\.?\s*|n\.?\s*e\.?\s*)/i,wide:/^(przed\s*nasz(ą|a)\s*er(ą|a)|naszej\s*ery)/i},s={any:[/^p/i,/^n/i]},d={narrow:/^[1234]/i,abbreviated:/^(I|II|III|IV)\s*kw\.?/i,wide:/^(I|II|III|IV)\s*kwarta(ł|l)/i},c={narrow:[/1/i,/2/i,/3/i,/4/i],any:[/^I kw/i,/^II kw/i,/^III kw/i,/^IV kw/i]},l={narrow:/^[slmkcwpg]/i,abbreviated:/^(sty|lut|mar|kwi|maj|cze|lip|sie|wrz|pa(ź|z)|lis|gru)/i,wide:/^(stycznia|stycze(ń|n)|lutego|luty|marca|marzec|kwietnia|kwiecie(ń|n)|maja|maj|czerwca|czerwiec|lipca|lipiec|sierpnia|sierpie(ń|n)|wrze(ś|s)nia|wrzesie(ń|n)|pa(ź|z)dziernika|pa(ź|z)dziernik|listopada|listopad|grudnia|grudzie(ń|n))/i},m={narrow:[/^s/i,/^l/i,/^m/i,/^k/i,/^m/i,/^c/i,/^l/i,/^s/i,/^w/i,/^p/i,/^l/i,/^g/i],any:[/^st/i,/^lu/i,/^mar/i,/^k/i,/^maj/i,/^c/i,/^lip/i,/^si/i,/^w/i,/^p/i,/^lis/i,/^g/i]},f={narrow:/^[npwścs]/i,short:/^(nie|pon|wto|(ś|s)ro|czw|pi(ą|a)|sob)/i,abbreviated:/^(niedz|pon|wt|(ś|s)r|czw|pt|sob)\.?/i,wide:/^(niedziela|poniedzia(ł|l)ek|wtorek|(ś|s)roda|czwartek|pi(ą|a)tek|sobota)/i},h={narrow:[/^n/i,/^p/i,/^w/i,/^ś/i,/^c/i,/^p/i,/^s/i],abbreviated:[/^n/i,/^po/i,/^w/i,/^(ś|s)r/i,/^c/i,/^pt/i,/^so/i],any:[/^n/i,/^po/i,/^w/i,/^(ś|s)r/i,/^c/i,/^pi/i,/^so/i]},p={narrow:/^(^a$|^p$|pó(ł|l)n\.?|o\s*pó(ł|l)n\.?|po(ł|l)\.?|w\s*po(ł|l)\.?|po\s*po(ł|l)\.?|rano|wiecz\.?|noc|w\s*nocy)/i,any:/^(am|pm|pó(ł|l)noc|o\s*pó(ł|l)nocy|po(ł|l)udnie|w\s*po(ł|l)udnie|popo(ł|l)udnie|po\s*po(ł|l)udniu|rano|wieczór|wieczorem|noc|w\s*nocy)/i},g={narrow:{am:/^a$/i,pm:/^p$/i,midnight:/pó(ł|l)n/i,noon:/po(ł|l)/i,morning:/rano/i,afternoon:/po\s*po(ł|l)/i,evening:/wiecz/i,night:/noc/i},any:{am:/^am/i,pm:/^pm/i,midnight:/pó(ł|l)n/i,noon:/po(ł|l)/i,morning:/rano/i,afternoon:/po\s*po(ł|l)/i,evening:/wiecz/i,night:/noc/i}},v={ordinalNumber:a.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:i.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:i.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:i.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:i.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:i.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(742),i=n(743),r=n(744),o=n(745),u=n(746),s={code:"pt",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:4}};t.a=s},function(e,t,n){"use strict";function a(e,t,n){n=n||{};var a;return a="string"==typeof i[e]?i[e]:1===t?i[e].one:i[e].other.replace("{{count}}",t),n.addSuffix?n.comparison>0?"daqui a "+a:"há "+a:a}t.a=a;var i={lessThanXSeconds:{one:"menos de um segundo",other:"menos de {{count}} segundos"},xSeconds:{one:"1 segundo",other:"{{count}} segundos"},halfAMinute:"meio minuto",lessThanXMinutes:{one:"menos de um minuto",other:"menos de {{count}} minutos"},xMinutes:{one:"1 minuto",other:"{{count}} minutos"},aboutXHours:{one:"aproximadamente 1 hora",other:"aproximadamente {{count}} horas"},xHours:{one:"1 hora",other:"{{count}} horas"},xDays:{one:"1 dia",other:"{{count}} dias"},aboutXWeeks:{one:"aproximadamente 1 mês",other:"aproximadamente {{count}} meses"},xWeeks:{one:"1 mês",other:"{{count}} meses"},aboutXMonths:{one:"aproximadamente 1 mês",other:"aproximadamente {{count}} meses"},xMonths:{one:"1 mês",other:"{{count}} meses"},aboutXYears:{one:"aproximadamente 1 ano",other:"aproximadamente {{count}} anos"},xYears:{one:"1 ano",other:"{{count}} anos"},overXYears:{one:"mais de 1 ano",other:"mais de {{count}} anos"},almostXYears:{one:"quase 1 ano",other:"quase {{count}} anos"}}},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE, d 'de' MMMM 'de' y",long:"d 'de' MMMM 'de' y",medium:"d 'de' MMM 'de' y",short:"dd/MM/y"},r={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},o={full:"{{date}} 'às' {{time}}",long:"{{date}} 'às' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e,t,n,a){return i[e]}t.a=a;var i={lastWeek:"'na última' eeee 'às' p",yesterday:"'ontem às' p",today:"'hoje às' p",tomorrow:"'amanhã às' p",nextWeek:"eeee 'às' p",other:"P"}},function(e,t,n){"use strict";function a(e){return Number(e)+"º"}var i=n(3),r={narrow:["aC","dC"],abbreviated:["a.C.","d.C."],wide:["antes de Cristo","depois de Cristo"]},o={narrow:["1","2","3","4"],abbreviated:["T1","T2","T3","T4"],wide:["1º trimestre","2º trimestre","3º trimestre","4º trimestre"]},u={narrow:["j","f","m","a","m","j","j","a","s","o","n","d"],abbreviated:["jan","fev","mar","abr","mai","jun","jul","ago","set","out","nov","dez"],wide:["janeiro","fevereiro","março","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"]},s={narrow:["d","s","t","q","q","s","s"],short:["dom","seg","ter","qua","qui","sex","sáb"],abbreviated:["dom","seg","ter","qua","qui","sex","sáb"],wide:["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"]},d={narrow:{am:"AM",pm:"PM",midnight:"meia-noite",noon:"meio-dia",morning:"manhã",afternoon:"tarde",evening:"noite",night:"madrugada"},abbreviated:{am:"AM",pm:"PM",midnight:"meia-noite",noon:"meio-dia",morning:"manhã",afternoon:"tarde",evening:"noite",night:"madrugada"},wide:{am:"AM",pm:"PM",midnight:"meia-noite",noon:"meio-dia",morning:"manhã",afternoon:"tarde",evening:"noite",night:"madrugada"}},c={narrow:{am:"AM",pm:"PM",midnight:"meia-noite",noon:"meio-dia",morning:"da manhã",afternoon:"da tarde",evening:"da noite",night:"da madrugada"},abbreviated:{am:"AM",pm:"PM",midnight:"meia-noite",noon:"meio-dia",morning:"da manhã",afternoon:"da tarde",evening:"da noite",night:"da madrugada"},wide:{am:"AM",pm:"PM",midnight:"meia-noite",noon:"meio-dia",morning:"da manhã",afternoon:"da tarde",evening:"da noite",night:"da madrugada"}},l={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:u,defaultWidth:"wide"}),day:i.a({values:s,defaultWidth:"wide"}),dayPeriod:i.a({values:d,defaultWidth:"wide",formattingValues:c,defaultFormattingWidth:"wide"})};t.a=l},function(e,t,n){"use strict";var a=n(4),i=n(5),r=/^(\d+)(º|ª)?/i,o=/\d+/i,u={narrow:/^(ac|dc|a|d)/i,abbreviated:/^(a\.?\s?c\.?|a\.?\s?e\.?\s?c\.?|d\.?\s?c\.?|e\.?\s?c\.?)/i,wide:/^(antes de cristo|antes da era comum|depois de cristo|era comum)/i},s={any:[/^ac/i,/^dc/i],wide:[/^(antes de cristo|antes da era comum)/i,/^(depois de cristo|era comum)/i]},d={narrow:/^[1234]/i,abbreviated:/^T[1234]/i,wide:/^[1234](º|ª)? trimestre/i},c={any:[/1/i,/2/i,/3/i,/4/i]},l={narrow:/^[jfmasond]/i,abbreviated:/^(jan|fev|mar|abr|mai|jun|jul|ago|set|out|nov|dez)/i,wide:/^(janeiro|fevereiro|março|abril|maio|junho|julho|agosto|setembro|outubro|novembro|dezembro)/i},m={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ab/i,/^mai/i,/^jun/i,/^jul/i,/^ag/i,/^s/i,/^o/i,/^n/i,/^d/i]},f={narrow:/^[dstq]/i,short:/^(dom|seg|ter|qua|qui|sex|s[áa]b)/i,abbreviated:/^(dom|seg|ter|qua|qui|sex|s[áa]b)/i,wide:/^(domingo|segunda-?\s?feira|terça-?\s?feira|quarta-?\s?feira|quinta-?\s?feira|sexta-?\s?feira|s[áa]bado)/i},h={narrow:[/^d/i,/^s/i,/^t/i,/^q/i,/^q/i,/^s/i,/^s/i],any:[/^d/i,/^seg/i,/^t/i,/^qua/i,/^qui/i,/^sex/i,/^s[áa]/i]},p={narrow:/^(a|p|meia-?\s?noite|meio-?\s?dia|(da) (manh[ãa]|tarde|noite|madrugada))/i,any:/^([ap]\.?\s?m\.?|meia-?\s?noite|meio-?\s?dia|(da) (manh[ãa]|tarde|noite|madrugada))/i},g={any:{am:/^a/i,pm:/^p/i,midnight:/^meia/i,noon:/^meio/i,morning:/manh[ãa]/i,afternoon:/tarde/i,evening:/noite/i,night:/madrugada/i}},v={ordinalNumber:a.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:i.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:i.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:i.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:i.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:i.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(748),i=n(749),r=n(750),o=n(751),u=n(752),s={code:"pt-BR",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:0,firstWeekContainsDate:1}};t.a=s},function(e,t,n){"use strict";function a(e,t,n){n=n||{};var a;return a="string"==typeof i[e]?i[e]:1===t?i[e].one:i[e].other.replace("{{count}}",t),n.addSuffix?n.comparison>0?"em "+a:"há "+a:a}t.a=a;var i={lessThanXSeconds:{one:"menos de um segundo",other:"menos de {{count}} segundos"},xSeconds:{one:"1 segundo",other:"{{count}} segundos"},halfAMinute:"meio minuto",lessThanXMinutes:{one:"menos de um minuto",other:"menos de {{count}} minutos"},xMinutes:{one:"1 minuto",other:"{{count}} minutos"},aboutXHours:{one:"cerca de 1 hora",other:"cerca de {{count}} horas"},xHours:{one:"1 hora",other:"{{count}} horas"},xDays:{one:"1 dia",other:"{{count}} dias"},aboutXWeeks:{one:"cerca de 1 mês",other:"cerca de {{count}} meses"},xWeeks:{one:"1 mês",other:"{{count}} meses"},aboutXMonths:{one:"cerca de 1 mês",other:"cerca de {{count}} meses"},xMonths:{one:"1 mês",other:"{{count}} meses"},aboutXYears:{one:"cerca de 1 ano",other:"cerca de {{count}} anos"},xYears:{one:"1 ano",other:"{{count}} anos"},overXYears:{one:"mais de 1 ano",other:"mais de {{count}} anos"},almostXYears:{one:"quase 1 ano",other:"quase {{count}} anos"}}},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE, d 'de' MMMM 'de' y",long:"d 'de' MMMM 'de' y",medium:"d MMM y",short:"dd/MM/yyyy"},r={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},o={full:"{{date}} 'às' {{time}}",long:"{{date}} 'às' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e,t,n,a){var r=i[e];return"function"==typeof r?r(t,n,a):r}t.a=a;var i={lastWeek:function(e,t,n){var a=e.getUTCDay();return"'"+(0===a||6===a?"último":"última")+"' eeee 'às' p"},yesterday:"'ontem às' p",today:"'hoje às' p",tomorrow:"'amanhã às' p",nextWeek:"eeee 'às' p",other:"P"}},function(e,t,n){"use strict";function a(e,t){var n=Number(e),a=t||{},i=String(a.unit);return"week"===i||"isoWeek"===i?n+"ª":n+"º"}var i=n(3),r={narrow:["AC","DC"],abbreviated:["AC","DC"],wide:["antes de cristo","depois de cristo"]},o={narrow:["1","2","3","4"],abbreviated:["T1","T2","T3","T4"],wide:["1º trimestre","2º trimestre","3º trimestre","4º trimestre"]},u={narrow:["j","f","m","a","m","j","j","a","s","o","n","d"],abbreviated:["jan","fev","mar","abr","mai","jun","jul","ago","set","out","nov","dez"],wide:["janeiro","fevereiro","março","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"]},s={narrow:["do","2ª","3ª","4ª","5ª","6ª","sá"],short:["do","2ª","3ª","4ª","5ª","6ª","sá"],abbreviated:["dom","seg","ter","qua","qui","sex","sáb"],wide:["domingo","segunda","terça","quarta","quinta","sexta","sábado"]},d={narrow:{am:"a",pm:"p",midnight:"mn",noon:"md",morning:"manhã",afternoon:"tarde",evening:"tarde",night:"noite"},abbreviated:{am:"AM",pm:"PM",midnight:"meia-noite",noon:"meio-dia",morning:"manhã",afternoon:"tarde",evening:"tarde",night:"noite"},wide:{am:"a.m.",pm:"p.m.",midnight:"meia-noite",noon:"meio-dia",morning:"manhã",afternoon:"tarde",evening:"tarde",night:"noite"}},c={narrow:{am:"a",pm:"p",midnight:"mn",noon:"md",morning:"da manhã",afternoon:"da tarde",evening:"da tarde",night:"da noite"},abbreviated:{am:"AM",pm:"PM",midnight:"meia-noite",noon:"meio-dia",morning:"da manhã",afternoon:"da tarde",evening:"da tarde",night:"da noite"},wide:{am:"a.m.",pm:"p.m.",midnight:"meia-noite",noon:"meio-dia",morning:"da manhã",afternoon:"da tarde",evening:"da tarde",night:"da noite"}},l={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:u,defaultWidth:"wide"}),day:i.a({values:s,defaultWidth:"wide"}),dayPeriod:i.a({values:d,defaultWidth:"wide",formattingValues:c,defaultFormattingWidth:"wide"})};t.a=l},function(e,t,n){"use strict";var a=n(5),i=n(4),r=/^(\d+)[ºªo]?/i,o=/\d+/i,u={narrow:/^(ac|dc|a|d)/i,abbreviated:/^(a\.?\s?c\.?|d\.?\s?c\.?)/i,wide:/^(antes de cristo|depois de cristo)/i},s={any:[/^ac/i,/^dc/i],wide:[/^antes de cristo/i,/^depois de cristo/i]},d={narrow:/^[1234]/i,abbreviated:/^T[1234]/i,wide:/^[1234](º)? trimestre/i},c={any:[/1/i,/2/i,/3/i,/4/i]},l={narrow:/^[jfmajsond]/i,abbreviated:/^(jan|fev|mar|abr|mai|jun|jul|ago|set|out|nov|dez)/i,wide:/^(janeiro|fevereiro|março|abril|maio|junho|julho|agosto|setembro|outubro|novembro|dezembro)/i},m={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^fev/i,/^mar/i,/^abr/i,/^mai/i,/^jun/i,/^jul/i,/^ago/i,/^set/i,/^out/i,/^nov/i,/^dez/i]},f={narrow:/^(dom|[23456]ª?|s[aá]b)/i,short:/^(dom|[23456]ª?|s[aá]b)/i,abbreviated:/^(dom|seg|ter|qua|qui|sex|s[aá]b)/i,wide:/^(domingo|(segunda|ter[cç]a|quarta|quinta|sexta)([- ]feira)?|s[aá]bado)/i},h={short:[/^d/i,/^2/i,/^3/i,/^4/i,/^5/i,/^6/i,/^s[aá]/i],narrow:[/^d/i,/^2/i,/^3/i,/^4/i,/^5/i,/^6/i,/^s[aá]/i],any:[/^d/i,/^seg/i,/^t/i,/^qua/i,/^qui/i,/^sex/i,/^s[aá]b/i]},p={narrow:/^(a|p|mn|md|(da) (manhã|tarde|noite))/i,any:/^([ap]\.?\s?m\.?|meia[-\s]noite|meio[-\s]dia|(da) (manhã|tarde|noite))/i},g={any:{am:/^a/i,pm:/^p/i,midnight:/^mn|^meia[-\s]noite/i,noon:/^md|^meio[-\s]dia/i,morning:/manhã/i,afternoon:/tarde/i,evening:/tarde/i,night:/noite/i}},v={ordinalNumber:i.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:a.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:a.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:a.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:a.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:a.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(754),i=n(755),r=n(756),o=n(757),u=n(758),s={code:"ro",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:1}};t.a=s},function(e,t,n){"use strict";function a(e,t,n){n=n||{};var a;return a="string"==typeof i[e]?i[e]:1===t?i[e].one:i[e].other.replace("{{count}}",t),n.addSuffix?n.comparison>0?"în "+a:a+" în urmă":a}t.a=a;var i={lessThanXSeconds:{one:"mai puțin de o secundă",other:"mai puțin de {{count}} secunde"},xSeconds:{one:"1 secundă",other:"{{count}} secunde"},halfAMinute:"jumătate de minut",lessThanXMinutes:{one:"mai puțin de un minut",other:"mai puțin de {{count}} minute"},xMinutes:{one:"1 minut",other:"{{count}} minute"},aboutXHours:{one:"circa 1 oră",other:"circa {{count}} ore"},xHours:{one:"1 oră",other:"{{count}} ore"},xDays:{one:"1 zi",other:"{{count}} zile"},aboutXWeeks:{one:"circa o săptămână",other:"circa {{count}} săptămâni"},xWeeks:{one:"1 săptămână",other:"{{count}} săptămâni"},aboutXMonths:{one:"circa 1 lună",other:"circa {{count}} luni"},xMonths:{one:"1 lună",other:"{{count}} luni"},aboutXYears:{one:"circa 1 an",other:"circa {{count}} ani"},xYears:{one:"1 an",other:"{{count}} ani"},overXYears:{one:"peste 1 an",other:"peste {{count}} ani"},almostXYears:{one:"aproape 1 an",other:"aproape {{count}} ani"}}},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE, d MMMM yyyy",long:"d MMMM yyyy",medium:"d MMM yyyy",short:"dd/MM/yyyy"},r={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},o={full:"{{date}} 'la' {{time}}",long:"{{date}} 'la' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e,t,n,a){return i[e]}t.a=a;var i={lastWeek:"eeee 'trecută la' p",yesterday:"'ieri la' p",today:"'astăzi la' p",tomorrow:"'mâine la' p",nextWeek:"eeee 'viitoare la' p",other:"P"}},function(e,t,n){"use strict";function a(e){var t=Number(e);return String(t)}var i=n(3),r={narrow:["Î","D"],abbreviated:["Î.d.C.","D.C."],wide:["Înainte de Cristos","După Cristos"]},o={narrow:["1","2","3","4"],abbreviated:["T1","T2","T3","T4"],wide:["primul trimestru","al doilea trimestru","al treilea trimestru","al patrulea trimestru"]},u={narrow:["I","F","M","A","M","I","I","A","S","O","N","D"],abbreviated:["ian","feb","mar","apr","mai","iun","iul","aug","sep","oct","noi","dec"],wide:["ianuarie","februarie","martie","aprilie","mai","iunie","iulie","august","septembrie","octombrie","noiembrie","decembrie"]},s={narrow:["d","l","m","m","j","v","s"],short:["du","lu","ma","mi","jo","vi","sâ"],abbreviated:["dum","lun","mar","mie","joi","vin","sâm"],wide:["duminică","luni","marți","miercuri","joi","vineri","sâmbătă"]},d={narrow:{am:"a",pm:"p",midnight:"mn",noon:"ami",morning:"dim",afternoon:"da",evening:"s",night:"n"},abbreviated:{am:"AM",pm:"PM",midnight:"miezul nopții",noon:"amiază",morning:"dimineață",afternoon:"după-amiază",evening:"seară",night:"noapte"},wide:{am:"a.m.",pm:"p.m.",midnight:"miezul nopții",noon:"amiază",morning:"dimineață",afternoon:"după-amiază",evening:"seară",night:"noapte"}},c={narrow:{am:"a",pm:"p",midnight:"mn",noon:"amiază",morning:"dimineață",afternoon:"după-amiază",evening:"seară",night:"noapte"},abbreviated:{am:"AM",pm:"PM",midnight:"miezul nopții",noon:"amiază",morning:"dimineață",afternoon:"după-amiază",evening:"seară",night:"noapte"},wide:{am:"a.m.",pm:"p.m.",midnight:"miezul nopții",noon:"amiază",morning:"dimineață",afternoon:"după-amiază",evening:"seară",night:"noapte"}},l={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:u,defaultWidth:"wide"}),day:i.a({values:s,defaultWidth:"wide"}),dayPeriod:i.a({values:d,defaultWidth:"wide",formattingValues:c,defaultFormattingWidth:"wide"})};t.a=l},function(e,t,n){"use strict";var a=n(4),i=n(5),r=/^(\d+)?/i,o=/\d+/i,u={narrow:/^(Î|D)/i,abbreviated:/^(Î\.?\s?d\.?\s?C\.?|Î\.?\s?e\.?\s?n\.?|D\.?\s?C\.?|e\.?\s?n\.?)/i,wide:/^(Înainte de Cristos|Înaintea erei noastre|După Cristos|Era noastră)/i},s={any:[/^ÎC/i,/^DC/i],wide:[/^(Înainte de Cristos|Înaintea erei noastre)/i,/^(După Cristos|Era noastră)/i]},d={narrow:/^[1234]/i,abbreviated:/^T[1234]/i,wide:/^trimestrul [1234]/i},c={any:[/1/i,/2/i,/3/i,/4/i]},l={narrow:/^[ifmaasond]/i,abbreviated:/^(ian|feb|mar|apr|mai|iun|iul|aug|sep|oct|noi|dec)/i,wide:/^(ianuarie|februarie|martie|aprilie|mai|iunie|iulie|august|septembrie|octombrie|noiembrie|decembrie)/i},m={narrow:[/^i/i,/^f/i,/^m/i,/^a/i,/^m/i,/^i/i,/^i/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ia/i,/^f/i,/^mar/i,/^ap/i,/^mai/i,/^iun/i,/^iul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},f={narrow:/^[dlmjvs]/i,short:/^(d|l|ma|mi|j|v|s)/i,abbreviated:/^(dum|lun|mar|mie|jo|vi|sâ)/i,wide:/^(duminica|luni|marţi|miercuri|joi|vineri|sâmbătă)/i},h={narrow:[/^d/i,/^l/i,/^m/i,/^m/i,/^j/i,/^v/i,/^s/i],any:[/^d/i,/^l/i,/^ma/i,/^mi/i,/^j/i,/^v/i,/^s/i]},p={narrow:/^(a|p|mn|a|(dimineaţa|după-amiaza|seara|noaptea))/i,any:/^([ap]\.?\s?m\.?|miezul nopții|amiaza|(dimineaţa|după-amiaza|seara|noaptea))/i},g={any:{am:/^a/i,pm:/^p/i,midnight:/^mn/i,noon:/amiaza/i,morning:/dimineaţa/i,afternoon:/după-amiaza/i,evening:/seara/i,night:/noaptea/i}},v={ordinalNumber:a.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:i.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:i.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:i.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:i.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:i.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(760),i=n(761),r=n(762),o=n(763),u=n(764),s={code:"ru",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:1}};t.a=s},function(e,t,n){"use strict";function a(e,t){if(void 0!==e.one&&1===t)return e.one;var n=t%10,a=t%100;return 1===n&&11!==a?e.singularNominative.replace("{{count}}",t):n>=2&&n<=4&&(a<10||a>20)?e.singularGenitive.replace("{{count}}",t):e.pluralGenitive.replace("{{count}}",t)}function i(e){return function(t,n){return n.addSuffix?n.comparison>0?e.future?a(e.future,t):"через "+a(e.regular,t):e.past?a(e.past,t):a(e.regular,t)+" назад":a(e.regular,t)}}function r(e,t,n){return n=n||{},o[e](t,n)}t.a=r;var o={lessThanXSeconds:i({regular:{one:"меньше секунды",singularNominative:"меньше {{count}} секунды",singularGenitive:"меньше {{count}} секунд",pluralGenitive:"меньше {{count}} секунд"},future:{one:"меньше, чем через секунду",singularNominative:"меньше, чем через {{count}} секунду",singularGenitive:"меньше, чем через {{count}} секунды",pluralGenitive:"меньше, чем через {{count}} секунд"}}),xSeconds:i({regular:{singularNominative:"{{count}} секунда",singularGenitive:"{{count}} секунды",pluralGenitive:"{{count}} секунд"},past:{singularNominative:"{{count}} секунду назад",singularGenitive:"{{count}} секунды назад",pluralGenitive:"{{count}} секунд назад"},future:{singularNominative:"через {{count}} секунду",singularGenitive:"через {{count}} секунды",pluralGenitive:"через {{count}} секунд"}}),halfAMinute:function(e,t){return t.addSuffix?t.comparison>0?"через полминуты":"полминуты назад":"полминуты"},lessThanXMinutes:i({regular:{one:"меньше минуты",singularNominative:"меньше {{count}} минуты",singularGenitive:"меньше {{count}} минут",pluralGenitive:"меньше {{count}} минут"},future:{one:"меньше, чем через минуту",singularNominative:"меньше, чем через {{count}} минуту",singularGenitive:"меньше, чем через {{count}} минуты",pluralGenitive:"меньше, чем через {{count}} минут"}}),xMinutes:i({regular:{singularNominative:"{{count}} минута",singularGenitive:"{{count}} минуты",pluralGenitive:"{{count}} минут"},past:{singularNominative:"{{count}} минуту назад",singularGenitive:"{{count}} минуты назад",pluralGenitive:"{{count}} минут назад"},future:{singularNominative:"через {{count}} минуту",singularGenitive:"через {{count}} минуты",pluralGenitive:"через {{count}} минут"}}),aboutXHours:i({regular:{singularNominative:"около {{count}} часа",singularGenitive:"около {{count}} часов",pluralGenitive:"около {{count}} часов"},future:{singularNominative:"приблизительно через {{count}} час",singularGenitive:"приблизительно через {{count}} часа",pluralGenitive:"приблизительно через {{count}} часов"}}),xHours:i({regular:{singularNominative:"{{count}} час",singularGenitive:"{{count}} часа",pluralGenitive:"{{count}} часов"}}),xDays:i({regular:{singularNominative:"{{count}} день",singularGenitive:"{{count}} дня",pluralGenitive:"{{count}} дней"}}),aboutXWeeks:i({regular:{singularNominative:"около {{count}} недели",singularGenitive:"около {{count}} недель",pluralGenitive:"около {{count}} недель"},future:{singularNominative:"приблизительно через {{count}} неделю",singularGenitive:"приблизительно через {{count}} недели",pluralGenitive:"приблизительно через {{count}} недель"}}),xWeeks:i({regular:{singularNominative:"{{count}} неделя",singularGenitive:"{{count}} недели",pluralGenitive:"{{count}} недель"}}),aboutXMonths:i({regular:{singularNominative:"около {{count}} месяца",singularGenitive:"около {{count}} месяцев",pluralGenitive:"около {{count}} месяцев"},future:{singularNominative:"приблизительно через {{count}} месяц",singularGenitive:"приблизительно через {{count}} месяца",pluralGenitive:"приблизительно через {{count}} месяцев"}}),xMonths:i({regular:{singularNominative:"{{count}} месяц",singularGenitive:"{{count}} месяца",pluralGenitive:"{{count}} месяцев"}}),aboutXYears:i({regular:{singularNominative:"около {{count}} года",singularGenitive:"около {{count}} лет",pluralGenitive:"около {{count}} лет"},future:{singularNominative:"приблизительно через {{count}} год",singularGenitive:"приблизительно через {{count}} года",pluralGenitive:"приблизительно через {{count}} лет"}}),xYears:i({regular:{singularNominative:"{{count}} год",singularGenitive:"{{count}} года",pluralGenitive:"{{count}} лет"}}),overXYears:i({regular:{singularNominative:"больше {{count}} года",singularGenitive:"больше {{count}} лет",pluralGenitive:"больше {{count}} лет"},future:{singularNominative:"больше, чем через {{count}} год",singularGenitive:"больше, чем через {{count}} года",pluralGenitive:"больше, чем через {{count}} лет"}}),almostXYears:i({regular:{singularNominative:"почти {{count}} год",singularGenitive:"почти {{count}} года",pluralGenitive:"почти {{count}} лет"},future:{singularNominative:"почти через {{count}} год",singularGenitive:"почти через {{count}} года",pluralGenitive:"почти через {{count}} лет"}})}},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE, do MMMM y 'г.'",long:"do MMMM y 'г.'",medium:"d MMM y 'г.'",short:"dd.MM.y"},r={full:"H:mm:ss zzzz",long:"H:mm:ss z",medium:"H:mm:ss",short:"H:mm"},o={any:"{{date}}, {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"any"})};t.a=u},function(e,t,n){"use strict";function a(e){var t=s[e];switch(e){case 0:return"'в прошлое "+t+" в' p";case 1:case 2:case 4:return"'в прошлый "+t+" в' p";case 3:case 5:case 6:return"'в прошлую "+t+" в' p"}}function i(e){var t=s[e];return 2===e?"'во "+t+" в' p":"'в "+t+" в' p"}function r(e){var t=s[e];switch(e){case 0:return"'в следующее "+t+" в' p";case 1:case 2:case 4:return"'в следующий "+t+" в' p";case 3:case 5:case 6:return"'в следующую "+t+" в' p"}}function o(e,t,n,a){var i=d[e];return"function"==typeof i?i(t,n,a):i}t.a=o;var u=n(13),s=["воскресенье","понедельник","вторник","среду","четверг","пятницу","субботу"],d={lastWeek:function(e,t,n){var r=e.getUTCDay();return u.a(e,t,n)?i(r):a(r)},yesterday:"'вчера в' p",today:"'сегодня в' p",tomorrow:"'завтра в' p",nextWeek:function(e,t,n){var a=e.getUTCDay();return u.a(e,t,n)?i(a):r(a)},other:"P"}},function(e,t,n){"use strict";function a(e,t){var n,a=t||{},i=String(a.unit);return n="date"===i?"-е":"week"===i||"minute"===i||"second"===i?"-я":"-й",e+n}var i=n(3),r={narrow:["до н.э.","н.э."],abbreviated:["до н. э.","н. э."],wide:["до нашей эры","нашей эры"]},o={narrow:["1","2","3","4"],abbreviated:["1-й кв.","2-й кв.","3-й кв.","4-й кв."],wide:["1-й квартал","2-й квартал","3-й квартал","4-й квартал"]},u={narrow:["Я","Ф","М","А","М","И","И","А","С","О","Н","Д"],abbreviated:["янв.","фев.","март","апр.","май","июнь","июль","авг.","сент.","окт.","нояб.","дек."],wide:["январь","февраль","март","апрель","май","июнь","июль","август","сентябрь","октябрь","ноябрь","декабрь"]},s={narrow:["Я","Ф","М","А","М","И","И","А","С","О","Н","Д"],abbreviated:["янв.","фев.","мар.","апр.","мая","июн.","июл.","авг.","сент.","окт.","нояб.","дек."],wide:["января","февраля","марта","апреля","мая","июня","июля","августа","сентября","октября","ноября","декабря"]},d={narrow:["В","П","В","С","Ч","П","С"],short:["вс","пн","вт","ср","чт","пт","сб"],abbreviated:["вск","пнд","втр","срд","чтв","птн","суб"],wide:["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"]},c={narrow:{am:"ДП",pm:"ПП",midnight:"полн.",noon:"полд.",morning:"утро",afternoon:"день",evening:"веч.",night:"ночь"},abbreviated:{am:"ДП",pm:"ПП",midnight:"полн.",noon:"полд.",morning:"утро",afternoon:"день",evening:"веч.",night:"ночь"},wide:{am:"ДП",pm:"ПП",midnight:"полночь",noon:"полдень",morning:"утро",afternoon:"день",evening:"вечер",night:"ночь"}},l={narrow:{am:"ДП",pm:"ПП",midnight:"полн.",noon:"полд.",morning:"утра",afternoon:"дня",evening:"веч.",night:"ночи"},abbreviated:{am:"ДП",pm:"ПП",midnight:"полн.",noon:"полд.",morning:"утра",afternoon:"дня",evening:"веч.",night:"ночи"},wide:{am:"ДП",pm:"ПП",midnight:"полночь",noon:"полдень",morning:"утра",afternoon:"дня",evening:"вечера",night:"ночи"}},m={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:u,defaultWidth:"wide",formattingValues:s,defaultFormattingWidth:"wide"}),day:i.a({values:d,defaultWidth:"wide"}),dayPeriod:i.a({values:c,defaultWidth:"any",formattingValues:l,defaultFormattingWidth:"wide"})};t.a=m},function(e,t,n){"use strict";var a=n(4),i=n(5),r=/^(\d+)(-?(е|я|й|ое|ье|ая|ья|ый|ой|ий|ый))?/i,o=/\d+/i,u={narrow:/^((до )?н\.?\s?э\.?)/i,abbreviated:/^((до )?н\.?\s?э\.?)/i,wide:/^(до нашей эры|нашей эры|наша эра)/i},s={any:[/^д/i,/^н/i]},d={narrow:/^[1234]/i,abbreviated:/^[1234](-?[ыои]?й?)? кв.?/i,wide:/^[1234](-?[ыои]?й?)? квартал/i},c={any:[/1/i,/2/i,/3/i,/4/i]},l={narrow:/^[яфмаисонд]/i,abbreviated:/^(янв|фев|март?|апр|ма[йя]|июн[ья]?|июл[ья]?|авг|сент?|окт|нояб?|дек)/i,wide:/^(январ[ья]|феврал[ья]|марта?|апрел[ья]|ма[йя]|июн[ья]|июл[ья]|августа?|сентябр[ья]|октябр[ья]|октябр[ья]|ноябр[ья]|декабр[ья])/i},m={narrow:[/^я/i,/^ф/i,/^м/i,/^а/i,/^м/i,/^и/i,/^и/i,/^а/i,/^с/i,/^о/i,/^н/i,/^я/i],any:[/^я/i,/^ф/i,/^мар/i,/^ап/i,/^ма[йя]/i,/^июн/i,/^июл/i,/^ав/i,/^с/i,/^о/i,/^н/i,/^д/i]},f={narrow:/^[впсч]/i,short:/^(вс|во|пн|по|вт|ср|чт|че|пт|пя|сб|су)\.?/i,abbreviated:/^(вск|вос|пнд|пон|втр|вто|срд|сре|чтв|чет|птн|пят|суб).?/i,wide:/^(воскресень[ея]|понедельника?|вторника?|сред[аы]|четверга?|пятниц[аы]|суббот[аы])/i},h={narrow:[/^в/i,/^п/i,/^в/i,/^с/i,/^ч/i,/^п/i,/^с/i],any:[/^в[ос]/i,/^п[он]/i,/^в/i,/^ср/i,/^ч/i,/^п[ят]/i,/^с[уб]/i]},p={narrow:/^([дп]п|полн\.?|полд\.?|утр[оа]|день|дня|веч\.?|ноч[ьи])/i,abbreviated:/^([дп]п|полн\.?|полд\.?|утр[оа]|день|дня|веч\.?|ноч[ьи])/i,wide:/^([дп]п|полночь|полдень|утр[оа]|день|дня|вечера?|ноч[ьи])/i},g={any:{am:/^дп/i,pm:/^пп/i,midnight:/^полн/i,noon:/^полд/i,morning:/^у/i,afternoon:/^д[ен]/i,evening:/^в/i,night:/^н/i}},v={ordinalNumber:a.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:i.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:i.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:i.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:i.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:i.a({matchPatterns:p,defaultMatchWidth:"wide",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(766),i=n(767),r=n(768),o=n(769),u=n(770),s={code:"sk",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:4}};t.a=s},function(e,t,n){"use strict";function a(e,t){return 1===t?e.one:t>=2&&t<=4?e.twoFour:e.other}function i(e,t,n){var i=a(e,t);return(i[n]||i).replace("{{count}}",t)}function r(e){return["lessThan","about","over","almost"].filter(function(t){return!!e.match(new RegExp("^"+t))})[0]}function o(e){var t="";return"almost"===e&&(t="takmer"),"about"===e&&(t="približne"),t.length>0?t+" ":""}function u(e){var t="";return"lessThan"===e&&(t="menej než"),"over"===e&&(t="viac než"),t.length>0?t+" ":""}function s(e){return e.charAt(0).toLowerCase()+e.slice(1)}function d(e,t,n){n=n||{};var a=r(e)||"",d=s(e.substring(a.length)),l=c[d];return n.addSuffix?n.comparison>0?o(a)+"o "+u(a)+i(l,t,"future"):o(a)+"pred "+u(a)+i(l,t,"past"):o(a)+u(a)+i(l,t,"regular")}t.a=d;var c={xSeconds:{one:{regular:"sekunda",past:"sekundou",future:"sekundu"},twoFour:{regular:"{{count}} sekundy",past:"{{count}} sekundami",future:"{{count}} sekundy"},other:{regular:"{{count}} sekúnd",past:"{{count}} sekundami",future:"{{count}} sekúnd"}},halfAMinute:{other:{regular:"pol minúty",past:"pol minútou",future:"pol minúty"}},xMinutes:{one:{regular:"minúta",past:"minútou",future:"minútu"},twoFour:{regular:"{{count}} minúty",past:"{{count}} minútami",future:"{{count}} minúty"},other:{regular:"{{count}} minút",past:"{{count}} minútami",future:"{{count}} minút"}},xHours:{one:{regular:"hodina",past:"hodinou",future:"hodinu"},twoFour:{regular:"{{count}} hodiny",past:"{{count}} hodinami",future:"{{count}} hodiny"},other:{regular:"{{count}} hodín",past:"{{count}} hodinami",future:"{{count}} hodín"}},xDays:{one:{regular:"deň",past:"dňom",future:"deň"},twoFour:{regular:"{{count}} dni",past:"{{count}} dňami",future:"{{count}} dni"},other:{regular:"{{count}} dní",past:"{{count}} dňami",future:"{{count}} dní"}},xWeeks:{one:{regular:"mesiac",past:"mesiacom",future:"mesiac"},twoFour:{regular:"{{count}} mesiace",past:"{{count}} mesiacmi",future:"{{count}} mesiace"},other:{regular:"{{count}} mesiacov",past:"{{count}} mesiacmi",future:"{{count}} mesiacov"}},xMonths:{one:{regular:"mesiac",past:"mesiacom",future:"mesiac"},twoFour:{regular:"{{count}} mesiace",past:"{{count}} mesiacmi",future:"{{count}} mesiace"},other:{regular:"{{count}} mesiacov",past:"{{count}} mesiacmi",future:"{{count}} mesiacov"}},xYears:{one:{regular:"rok",past:"rokom",future:"rok"},twoFour:{regular:"{{count}} roky",past:"{{count}} rokmi",future:"{{count}} roky"},other:{regular:"{{count}} rokov",past:"{{count}} rokmi",future:"{{count}} rokov"}}}},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE d. MMMM y",long:"d. MMMM y",medium:"d. M. y",short:"d. M. y"},r={full:"H:mm:ss zzzz",long:"H:mm:ss z",medium:"H:mm:ss",short:"H:mm"},o={full:"{{date}}, {{time}}",long:"{{date}}, {{time}}",medium:"{{date}}, {{time}}",short:"{{date}} {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e){var t=s[e];switch(e){case 0:case 3:case 6:return"'minulú "+t+" o' p";default:return"'minulý' eeee 'o' p"}}function i(e){var t=s[e];return 4===e?"'vo' eeee 'o' p":"'v "+t+" o' p"}function r(e){var t=s[e];switch(e){case 0:case 4:case 6:return"'budúcu' "+t+" 'o' p";default:return"'budúci' eeee 'o' p"}}function o(e,t,n,a){var i=d[e];return"function"==typeof i?i(t,n,a):i}t.a=o;var u=n(13),s=["nedeľu","pondelok","utorok","stredu","štvrtok","piatok","sobotu"],d={lastWeek:function(e,t,n){var r=e.getUTCDay();return u.a(e,t,n)?i(r):a(r)},yesterday:"'včera o' p",today:"'dnes o' p",tomorrow:"'zajtra o' p",nextWeek:function(e,t,n){var a=e.getUTCDay();return u.a(e,t,n)?i(a):r(a)},other:"P"}},function(e,t,n){"use strict";function a(e,t){return Number(e)+"."}var i=n(3),r={narrow:["pred Kr.","po Kr."],abbreviated:["pred Kr.","po Kr."],wide:["pred Kristom","po Kristovi"]},o={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1. štvrťrok","2. štvrťrok","3. štvrťrok","4. štvrťrok"]},u={narrow:["j","f","m","a","m","j","j","a","s","o","n","d"],abbreviated:["jan","feb","mar","apr","máj","jún","júl","aug","sep","okt","nov","dec"],wide:["január","február","marec","apríl","máj","jún","júl","august","september","október","november","december"]},s={narrow:["j","f","m","a","m","j","j","a","s","o","n","d"],abbreviated:["jan","feb","mar","apr","máj","jún","júl","aug","sep","okt","nov","dec"],wide:["januára","februára","marca","apríla","mája","júna","júla","augusta","septembra","októbra","novembra","decembra"]},d={narrow:["n","p","u","s","š","p","s"],short:["ne","po","ut","st","št","pi","so"],abbreviated:["ne","po","ut","st","št","pi","so"],wide:["nedeľa","pondelok","utorok","streda","štvrtok","piatok","sobota"]},c={narrow:{am:"AM",pm:"PM",midnight:"poln.",noon:"pol.",morning:"ráno",afternoon:"pop.",evening:"več.",night:"noc"},abbreviated:{am:"AM",pm:"PM",midnight:"poln.",noon:"pol.",morning:"ráno",afternoon:"popol.",evening:"večer",night:"noc"},wide:{am:"AM",pm:"PM",midnight:"polnoc",noon:"poludnie",morning:"ráno",afternoon:"popoludnie",evening:"večer",night:"noc"}},l={narrow:{am:"AM",pm:"PM",midnight:"o poln.",noon:"nap.",morning:"ráno",afternoon:"pop.",evening:"več.",night:"v n."},abbreviated:{am:"AM",pm:"PM",midnight:"o poln.",noon:"napol.",morning:"ráno",afternoon:"popol.",evening:"večer",night:"v noci"},wide:{am:"AM",pm:"PM",midnight:"o polnoci",noon:"napoludnie",morning:"ráno",afternoon:"popoludní",evening:"večer",night:"v noci"}},m={ordinalNumber:a,era:i.a({values:r}),quarter:i.a({values:o,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:u,defaultWidth:"wide",formattingValues:s,defaultFormattingWidth:"wide"}),day:i.a({values:d,defaultWidth:"wide"}),dayPeriod:i.a({values:c,defaultWidth:"wide",formattingValues:l,defaultFormattingWidth:"wide"})};t.a=m},function(e,t,n){"use strict";var a=n(4),i=n(5),r=/^(\d+)\.?/i,o=/\d+/i,u={narrow:/^(pred Kr\.|pred n\. l\.|po Kr\.|n\. l\.)/i,abbreviated:/^(pred Kr\.|pred n\. l\.|po Kr\.|n\. l\.)/i,wide:/^(pred Kristom|pred na[šs][íi]m letopo[čc]tom|po Kristovi|n[áa][šs]ho letopo[čc]tu)/i},s={any:[/^pr/i,/^(po|n)/i]},d={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234]\. [šs]tvr[ťt]rok/i},c={any:[/1/i,/2/i,/3/i,/4/i]},l={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|m[áa]j|j[úu]n|j[úu]l|aug|sep|okt|nov|dec)/i,wide:/^(janu[áa]ra?|febru[áa]ra?|(marec|marca)|apr[íi]la?|m[áa]ja?|j[úu]na?|j[úu]la?|augusta?|(september|septembra)|(okt[óo]ber|okt[óo]bra)|(november|novembra)|(december|decembra))/i},m={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^m[áa]j/i,/^j[úu]n/i,/^j[úu]l/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},f={narrow:/^[npusšp]/i,short:/^(ne|po|ut|st|št|pi|so)/i,abbreviated:/^(ne|po|ut|st|št|pi|so)/i,wide:/^(nede[ľl]a|pondelok|utorok|streda|[šs]tvrtok|piatok|sobota])/i},h={narrow:[/^n/i,/^p/i,/^u/i,/^s/i,/^š/i,/^p/i,/^s/i],any:[/^n/i,/^po/i,/^u/i,/^st/i,/^(št|stv)/i,/^pi/i,/^so/i]},p={narrow:/^(am|pm|(o )?poln\.?|(nap\.?|pol\.?)|r[áa]no|pop\.?|ve[čc]\.?|(v n\.?|noc))/i,abbreviated:/^(am|pm|(o )?poln\.?|(napol\.?|pol\.?)|r[áa]no|pop\.?|ve[čc]er|(v )?noci?)/i,any:/^(am|pm|(o )?polnoci?|(na)?poludnie|r[áa]no|popoludn(ie|í|i)|ve[čc]er|(v )?noci?)/i},g={any:{am:/^am/i,pm:/^pm/i,midnight:/poln/i,noon:/^(nap|(na)?pol(\.|u))/i,morning:/^r[áa]no/i,afternoon:/^pop/i,evening:/^ve[čc]/i,night:/^(noc|v n\.)/i}},v={ordinalNumber:a.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:i.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:i.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:i.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:i.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:i.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(772),i=n(773),r=n(774),o=n(775),u=n(776),s={code:"sl",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:1}};t.a=s},function(e,t,n){"use strict";function a(e){switch(e%100){case 1:return"one";case 2:return"two";case 3:case 4:return"few";default:return"other"}}function i(e,t,n){n=n||{};var i=r,s="";if(n.addSuffix&&(n.comparison>0?(i=u,s+="čez "):(i=o,s+="pred ")),"string"==typeof i[e])s+=i[e];else{var d=a(t);s+=i[e][d].replace("{{count}}",t)}return s}t.a=i;var r={lessThanXSeconds:{one:"manj kot {{count}} sekunda",two:"manj kot {{count}} sekundi",few:"manj kot {{count}} sekunde",other:"manj kot {{count}} sekund"},xSeconds:{one:"{{count}} sekunda",two:"{{count}} sekundi",few:"{{count}} sekunde",other:"{{count}} sekund"},halfAMinute:"pol minute",lessThanXMinutes:{one:"manj kot {{count}} minuta",two:"manj kot {{count}} minuti",few:"manj kot {{count}} minute",other:"manj kot {{count}} minut"},xMinutes:{one:"{{count}} minuta",two:"{{count}} minuti",few:"{{count}} minute",other:"{{count}} minut"},aboutXHours:{one:"približno {{count}} ura",two:"približno {{count}} uri",few:"približno {{count}} ure",other:"približno {{count}} ur"},xHours:{one:"{{count}} ura",two:"{{count}} uri",few:"{{count}} ure",other:"{{count}} ur"},xDays:{one:"{{count}} dan",two:"{{count}} dni",few:"{{count}} dni",other:"{{count}} dni"},aboutXWeeks:{one:"približno {{count}} teden",two:"približno {{count}} tedna",few:"približno {{count}} tedne",other:"približno {{count}} tednov"},xWeeks:{one:"{{count}} teden",two:"{{count}} tedna",few:"{{count}} tedne",other:"{{count}} tednov"},aboutXMonths:{one:"približno {{count}} mesec",two:"približno {{count}} meseca",few:"približno {{count}} mesece",other:"približno {{count}} mesecev"},xMonths:{one:"{{count}} mesec",two:"{{count}} meseca",few:"{{count}} meseci",other:"{{count}} mesecev"},aboutXYears:{one:"približno {{count}} leto",two:"približno {{count}} leti",few:"približno {{count}} leta",other:"približno {{count}} let"},xYears:{one:"{{count}} leto",two:"{{count}} leti",few:"{{count}} leta",other:"{{count}} let"},overXYears:{one:"več kot {{count}} leto",two:"več kot {{count}} leti",few:"več kot {{count}} leta",other:"več kot {{count}} let"},almostXYears:{one:"skoraj {{count}} leto",two:"skoraj {{count}} leti",few:"skoraj {{count}} leta",other:"skoraj {{count}} let"}},o={lessThanXSeconds:{one:"manj kot {{count}} sekundo",two:"manj kot {{count}} sekundama",few:"manj kot {{count}} sekundami",other:"manj kot {{count}} sekundami"},xSeconds:{one:"{{count}} sekundo",two:"{{count}} sekundama",few:"{{count}} sekundami",other:"{{count}} sekundami"},halfAMinute:"pol minute",lessThanXMinutes:{one:"manj kot {{count}} minuto",two:"manj kot {{count}} minutama",few:"manj kot {{count}} minutami",other:"manj kot {{count}} minutami"},xMinutes:{one:"{{count}} minuto",two:"{{count}} minutama",few:"{{count}} minutami",other:"{{count}} minutami"},aboutXHours:{one:"približno {{count}} uro",two:"približno {{count}} urama",few:"približno {{count}} urami",other:"približno {{count}} urami"},xHours:{one:"{{count}} uro",two:"{{count}} urama",few:"{{count}} urami",other:"{{count}} urami"},xDays:{one:"{{count}} dnem",two:"{{count}} dnevoma",few:"{{count}} dnevi",other:"{{count}} dnevi"},aboutXMonths:{one:"približno {{count}} mesecem",two:"približno {{count}} mesecema",few:"približno {{count}} meseci",other:"približno {{count}} meseci"},xMonths:{one:"{{count}} mesecem",two:"{{count}} mesecema",few:"{{count}} meseci",other:"{{count}} meseci"},aboutXYears:{one:"približno {{count}} letom",two:"približno {{count}} letoma",few:"približno {{count}} leti",other:"približno {{count}} leti"},xYears:{one:"{{count}} letom",two:"{{count}} letoma",few:"{{count}} leti",other:"{{count}} leti"},overXYears:{one:"več kot {{count}} letom",two:"več kot {{count}} letoma",few:"več kot {{count}} leti",other:"več kot {{count}} leti"},almostXYears:{one:"skoraj {{count}} letom",two:"skoraj {{count}} letoma",few:"skoraj {{count}} leti",other:"skoraj {{count}} leti"}},u={lessThanXSeconds:{one:"manj kot {{count}} sekundo",two:"manj kot {{count}} sekundi",few:"manj kot {{count}} sekunde",other:"manj kot {{count}} sekund"},xSeconds:{one:"{{count}} sekundo",two:"{{count}} sekundi",few:"{{count}} sekunde",other:"{{count}} sekund"},halfAMinute:"pol minute",lessThanXMinutes:{one:"manj kot {{count}} minuto",two:"manj kot {{count}} minuti",few:"manj kot {{count}} minute",other:"manj kot {{count}} minut"},xMinutes:{one:"{{count}} minuto",two:"{{count}} minuti",few:"{{count}} minute",other:"{{count}} minut"},aboutXHours:{one:"približno {{count}} uro",two:"približno {{count}} uri",few:"približno {{count}} ure",other:"približno {{count}} ur"},xHours:{one:"{{count}} uro",two:"{{count}} uri",few:"{{count}} ure",other:"{{count}} ur"},xDays:{one:"{{count}} dan",two:"{{count}} dni",few:"{{count}} dni",other:"{{count}} dni"},aboutXMonths:{one:"približno {{count}} mesec",two:"približno {{count}} meseca",few:"približno {{count}} mesece",other:"približno {{count}} mesecev"},xMonths:{one:"{{count}} mesec",two:"{{count}} meseca",few:"{{count}} mesece",other:"{{count}} mesecev"},aboutXYears:{one:"približno {{count}} leto",two:"približno {{count}} leti",few:"približno {{count}} leta",other:"približno {{count}} let"},xYears:{one:"{{count}} leto",two:"{{count}} leti",few:"{{count}} leta",other:"{{count}} let"},overXYears:{one:"več kot {{count}} leto",two:"več kot {{count}} leti",few:"več kot {{count}} leta",other:"več kot {{count}} let"},almostXYears:{one:"skoraj {{count}} leto",two:"skoraj {{count}} leti",few:"skoraj {{count}} leta",other:"skoraj {{count}} let"}}},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE, dd. MMMM y",long:"dd. MMMM y",medium:"d. MMM y",short:"d. MM. yy"},r={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},o={full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e,t,n,a){var r=i[e];return"function"==typeof r?r(t):r}t.a=a;var i={lastWeek:function(e){switch(e.getUTCDay()){case 0:return"'prejšnjo nedeljo ob' p";case 3:return"'prejšnjo sredo ob' p";case 6:return"'prejšnjo soboto ob' p";default:return"'prejšnji' EEEE 'ob' p"}},yesterday:"'včeraj ob' p",today:"'danes ob' p",tomorrow:"'jutri ob' p",nextWeek:function(e){switch(e.getUTCDay()){case 0:return"'naslednjo nedeljo ob' p";case 3:return"'naslednjo sredo ob' p";case 6:return"'naslednjo soboto ob' p";default:return"'naslednji' EEEE 'ob' p"}},other:"P"}},function(e,t,n){"use strict";function a(e){var t=Number(e);return String(t).concat(".")}var i=n(3),r={narrow:["pr. n. št.","po n. št."],abbreviated:["pr. n. št.","po n. št."],wide:["pred našim štetjem","po našem štetju"]},o={narrow:["j","f","m","a","m","j","j","a","s","o","n","d"],abbreviated:["jan.","feb.","mar.","apr.","maj","jun.","jul.","avg.","sep.","okt.","nov.","dec."],wide:["januar","februar","marec","april","maj","junij","julij","avgust","september","oktober","november","december"]},u={narrow:["1","2","3","4"],abbreviated:["1. čet.","2. čet.","3. čet.","4. čet."],wide:["1. četrtletje","2. četrtletje","3. četrtletje","4. četrtletje"]},s={narrow:["n","p","t","s","č","p","s"],short:["ned.","pon.","tor.","sre.","čet.","pet.","sob."],abbreviated:["ned.","pon.","tor.","sre.","čet.","pet.","sob."],wide:["nedelja","ponedeljek","torek","sreda","četrtek","petek","sobota"]},d={narrow:{am:"d",pm:"p",midnight:"24.00",noon:"12.00",morning:"j",afternoon:"p",evening:"v",night:"n"},abbreviated:{am:"dop.",pm:"pop.",midnight:"poln.",noon:"pold.",morning:"jut.",afternoon:"pop.",evening:"več.",night:"noč"},wide:{am:"dop.",pm:"pop.",midnight:"polnoč",noon:"poldne",morning:"jutro",afternoon:"popoldne",evening:"večer",night:"noč"}},c={narrow:{am:"d",pm:"p",midnight:"24.00",noon:"12.00",morning:"zj",afternoon:"p",evening:"zv",night:"po"},abbreviated:{am:"dop.",pm:"pop.",midnight:"opoln.",noon:"opold.",morning:"zjut.",afternoon:"pop.",evening:"zveč.",night:"ponoči"},wide:{am:"dop.",pm:"pop.",midnight:"opolnoči",noon:"opoldne",morning:"zjutraj",afternoon:"popoldan",evening:"zvečer",night:"ponoči"}},l={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:u,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:o,defaultWidth:"wide"}),day:i.a({values:s,defaultWidth:"wide"}),dayPeriod:i.a({values:d,defaultWidth:"wide",formattingValues:c,defaultFormattingWidth:"wide"})};t.a=l},function(e,t,n){"use strict";var a=n(5),i=n(4),r=/^(\d+)\./i,o=/\d+/i,u={abbreviated:/^(pr\. n\. št\.|po n\. št\.)/i,wide:/^(pred Kristusom|pred na[sš]im [sš]tetjem|po Kristusu|po na[sš]em [sš]tetju|na[sš]ega [sš]tetja)/i},s={any:[/^pr/i,/^(po|na[sš]em)/i]},d={narrow:/^[1234]/i,abbreviated:/^[1234]\.\s?[čc]et\.?/i,wide:/^[1234]\. [čc]etrtletje/i},c={any:[/1/i,/2/i,/3/i,/4/i]},l={narrow:/^[jfmasond]/i,abbreviated:/^(jan\.|feb\.|mar\.|apr\.|maj|jun\.|jul\.|avg\.|sep\.|okt\.|nov\.|dec\.)/i,wide:/^(januar|februar|marec|april|maj|junij|julij|avgust|september|oktober|november|december)/i},m={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],abbreviated:[/^ja/i,/^fe/i,/^mar/i,/^ap/i,/^maj/i,/^jun/i,/^jul/i,/^av/i,/^s/i,/^o/i,/^n/i,/^d/i],wide:[/^ja/i,/^fe/i,/^mar/i,/^ap/i,/^maj/i,/^jun/i,/^jul/i,/^av/i,/^s/i,/^o/i,/^n/i,/^d/i]},f={narrow:/^[nptsčc]/i,short:/^(ned\.|pon\.|tor\.|sre\.|[cč]et\.|pet\.|sob\.)/i,abbreviated:/^(ned\.|pon\.|tor\.|sre\.|[cč]et\.|pet\.|sob\.)/i,wide:/^(nedelja|ponedeljek|torek|sreda|[cč]etrtek|petek|sobota)/i},h={narrow:[/^n/i,/^p/i,/^t/i,/^s/i,/^[cč]/i,/^p/i,/^s/i],any:[/^n/i,/^po/i,/^t/i,/^sr/i,/^[cč]/i,/^pe/i,/^so/i]},p={narrow:/^(d|po?|z?v|n|z?j|24\.00|12\.00)/i,any:/^(dop\.|pop\.|o?poln(\.|o[cč]i?)|o?pold(\.|ne)|z?ve[cč](\.|er)|(po)?no[cč]i?|popold(ne|an)|jut(\.|ro)|zjut(\.|raj))/i},g={narrow:{am:/^d/i,pm:/^p/i,midnight:/^24/i,noon:/^12/i,morning:/^(z?j)/i,afternoon:/^p/i,evening:/^(z?v)/i,night:/^(n|po)/i},any:{am:/^dop\./i,pm:/^pop\./i,midnight:/^o?poln/i,noon:/^o?pold/i,morning:/j/i,afternoon:/^pop\./i,evening:/^z?ve/i,night:/(po)?no/i}},v={ordinalNumber:i.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:a.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:a.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:a.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"wide"}),day:a.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:a.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(778),i=n(779),r=n(780),o=n(781),u=n(782),s={code:"sr",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:1}};t.a=s},function(e,t,n){"use strict";function a(e,t,n){n=n||{};var a;return a="string"==typeof i[e]?i[e]:1===t?n.addSuffix?n.comparison>0?i[e].one.withPrepositionIn:i[e].one.withPrepositionAgo:i[e].one.standalone:t%10>1&&t%10<5&&"1"!==String(t).substr(-2,1)?i[e].dual.replace("{{count}}",t):i[e].other.replace("{{count}}",t),n.addSuffix?n.comparison>0?"за "+a:"пре "+a:a}t.a=a;var i={lessThanXSeconds:{one:{standalone:"мање од 1 секунде",withPrepositionAgo:"мање од 1 секунде",withPrepositionIn:"мање од 1 секунду"},dual:"мање од {{count}} секунде",other:"мање од {{count}} секунди"},xSeconds:{one:{standalone:"1 секунда",withPrepositionAgo:"1 секунде",withPrepositionIn:"1 секунду"},dual:"{{count}} секунде",other:"{{count}} секунди"},halfAMinute:"пола минуте",lessThanXMinutes:{one:{standalone:"мање од 1 минуте",withPrepositionAgo:"мање од 1 минуте",withPrepositionIn:"мање од 1 минуту"},dual:"мање од {{count}} минуте",other:"мање од {{count}} минута"},xMinutes:{one:{standalone:"1 минута",withPrepositionAgo:"1 минуте",withPrepositionIn:"1 минуту"},dual:"{{count}} минуте",other:"{{count}} минута"},aboutXHours:{one:{standalone:"око 1 сат",withPrepositionAgo:"око 1 сат",withPrepositionIn:"око 1 сат"},dual:"око {{count}} сата",other:"око {{count}} сати"},xHours:{one:{standalone:"1 сат",withPrepositionAgo:"1 сат",withPrepositionIn:"1 сат"},dual:"{{count}} сата",other:"{{count}} сати"},xDays:{one:{standalone:"1 дан",withPrepositionAgo:"1 дан",withPrepositionIn:"1 дан"},dual:"{{count}} дана",other:"{{count}} дана"},aboutXWeeks:{one:{standalone:"око 1 недељу",withPrepositionAgo:"око 1 недељу",withPrepositionIn:"око 1 недељу"},dual:"око {{count}} недеље",other:"око {{count}} недеље"},xWeeks:{one:{standalone:"1 недељу",withPrepositionAgo:"1 недељу",withPrepositionIn:"1 недељу"},dual:"{{count}} недеље",other:"{{count}} недеље"},aboutXMonths:{one:{standalone:"око 1 месец",withPrepositionAgo:"око 1 месец",withPrepositionIn:"око 1 месец"},dual:"око {{count}} месеца",other:"око {{count}} месеци"},xMonths:{one:{standalone:"1 месец",withPrepositionAgo:"1 месец",withPrepositionIn:"1 месец"},dual:"{{count}} месеца",other:"{{count}} месеци"},aboutXYears:{one:{standalone:"око 1 годину",withPrepositionAgo:"око 1 годину",withPrepositionIn:"око 1 годину"},dual:"око {{count}} године",other:"око {{count}} година"},xYears:{one:{standalone:"1 година",withPrepositionAgo:"1 године",withPrepositionIn:"1 годину"},dual:"{{count}} године",other:"{{count}} година"},overXYears:{one:{standalone:"преко 1 годину",withPrepositionAgo:"преко 1 годину",withPrepositionIn:"преко 1 годину"},dual:"преко {{count}} године",other:"преко {{count}} година"},almostXYears:{one:{standalone:"готово 1 годину",withPrepositionAgo:"готово 1 годину",withPrepositionIn:"готово 1 годину"},dual:"готово {{count}} године",other:"готово {{count}} година"}}},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE, d. MMMM yyyy.",long:"d. MMMM yyyy.",medium:"d. MMM yy.",short:"dd. MM. yy."},r={full:"HH:mm:ss (zzzz)",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},o={full:"{{date}} 'у' {{time}}",long:"{{date}} 'у' {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e,t,n,a){var r=i[e];return"function"==typeof r?r(t):r}t.a=a;var i={lastWeek:function(e){switch(e.getUTCDay()){case 0:return"'прошле недеље у' p";case 3:return"'прошле среде у' p";case 6:return"'прошле суботе у' p";default:return"'прошли' EEEE 'у' p"}},yesterday:"'јуче у' p",today:"'данас у' p",tomorrow:"'сутра у' p",nextWeek:function(e){switch(e.getUTCDay()){case 0:return"'следеће недеље у' p";case 3:return"'следећу среду у' p";case 6:return"'следећу суботу у' p";default:return"'следећи' EEEE 'у' p"}},other:"P"}},function(e,t,n){"use strict";function a(e){var t=Number(e);return String(t).concat(".")}var i=n(3),r={narrow:["пр.н.е.","АД"],abbreviated:["пр. Хр.","по. Хр."],wide:["Пре Христа","После Христа"]},o={narrow:["1.","2.","3.","4.","5.","6.","7.","8.","9.","10.","11.","12."],abbreviated:["јан","феб","мар","апр","мај","јун","јул","авг","сеп","окт","нов","дец"],wide:["јануар","фебруар","март","април","мај","јун","јул","август","септембар","октобар","новембар","децембар"]},u={narrow:["1.","2.","3.","4.","5.","6.","7.","8.","9.","10.","11.","12."],abbreviated:["јан","феб","мар","апр","мај","јун","јул","авг","сеп","окт","нов","дец"],wide:["јануар","фебруар","март","април","мај","јун","јул","август","септембар","октобар","новембар","децембар"]},s={narrow:["1.","2.","3.","4."],abbreviated:["1. кв.","2. кв.","3. кв.","4. кв."],wide:["1. квартал","2. квартал","3. квартал","4. квартал"]},d={narrow:["Н","П","У","С","Ч","П","С"],short:["нед","пон","уто","сре","чет","пет","суб"],abbreviated:["нед","пон","уто","сре","чет","пет","суб"],wide:["недеља","понедељак","уторак","среда","четвртак","петак","субота"]},c={narrow:{am:"АМ",pm:"ПМ",midnight:"поноћ",noon:"подне",morning:"ујутру",afternoon:"поподне",evening:"увече",night:"ноћу"},abbreviated:{am:"АМ",pm:"ПМ",midnight:"поноћ",noon:"подне",morning:"ујутру",afternoon:"поподне",evening:"увече",night:"ноћу"},wide:{am:"AM",pm:"PM",midnight:"поноћ",noon:"подне",morning:"ујутру",afternoon:"после подне",evening:"увече",night:"ноћу"}},l={narrow:{am:"AM",pm:"PM",midnight:"поноћ",noon:"подне",morning:"ујутру",afternoon:"поподне",evening:"увече",night:"ноћу"},abbreviated:{am:"AM",pm:"PM",midnight:"поноћ",noon:"подне",morning:"ујутру",afternoon:"поподне",evening:"увече",night:"ноћу"},wide:{am:"AM",pm:"PM",midnight:"поноћ",noon:"подне",morning:"ујутру",afternoon:"после подне",evening:"увече",night:"ноћу"}},m={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:s,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:o,defaultWidth:"wide",formattingValues:u,defaultFormattingWidth:"wide"}),day:i.a({values:d,defaultWidth:"wide"}),dayPeriod:i.a({values:l,defaultWidth:"wide",formattingValues:c,defaultFormattingWidth:"wide"})};t.a=m},function(e,t,n){"use strict";var a=n(5),i=n(4),r=/^(\d+)\./i,o=/\d+/i,u={narrow:/^(пр\.н\.е\.|АД)/i,abbreviated:/^(пр\.\s?Хр\.|по\.\s?Хр\.)/i,wide:/^(Пре Христа|пре нове ере|После Христа|нова ера)/i},s={any:[/^пр/i,/^(по|нова)/i]},d={narrow:/^[1234]/i,abbreviated:/^[1234]\.\s?кв\.?/i,wide:/^[1234]\. квартал/i},c={any:[/1/i,/2/i,/3/i,/4/i]},l={narrow:/^(10|11|12|[123456789])\./i,abbreviated:/^(јан|феб|мар|апр|мај|јун|јул|авг|сеп|окт|нов|дец)/i,wide:/^((јануар|јануара)|(фебруар|фебруара)|(март|марта)|(април|априла)|(мја|маја)|(јун|јуна)|(јул|јула)|(август|августа)|(септембар|септембра)|(октобар|октобра)|(новембар|новембра)|(децембар|децембра))/i},m={narrow:[/(10|11|12|[123456789])/i],any:[/^ја/i,/^ф/i,/^мар/i,/^ап/i,/^мај/i,/^јун/i,/^јул/i,/^авг/i,/^с/i,/^о/i,/^н/i,/^д/i]},f={narrow:/^[пусчн]/i,short:/^(нед|пон|уто|сре|чет|пет|суб)/i,abbreviated:/^(нед|пон|уто|сре|чет|пет|суб)/i,wide:/^(недеља|понедељак|уторак|среда|четвртак|петак|субота)/i},h={narrow:[/^п/i,/^у/i,/^с/i,/^ч/i,/^н/i],any:[/^нед/i,/^пон/i,/^уто/i,/^сре/i,/^чет/i,/^пет/i,/^суб/i]},p={any:/^(ам|пм|поноћ|(по)?подне|увече|ноћу|после подне|ујутру)/i},g={any:{am:/^a/i,pm:/^p/i,midnight:/^поно/i,noon:/^под/i,morning:/ујутру/i,afternoon:/(после\s|по)+подне/i,evening:/(увече)/i,night:/(ноћу)/i}},v={ordinalNumber:i.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:a.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:a.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:a.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:a.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:a.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(784),i=n(785),r=n(786),o=n(787),u=n(788),s={code:"sr-Latn",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:1}};t.a=s},function(e,t,n){"use strict";function a(e,t,n){n=n||{};var a;return a="string"==typeof i[e]?i[e]:1===t?n.addSuffix?n.comparison>0?i[e].one.withPrepositionIn:i[e].one.withPrepositionAgo:i[e].one.standalone:t%10>1&&t%10<5&&"1"!==String(t).substr(-2,1)?i[e].dual.replace("{{count}}",t):i[e].other.replace("{{count}}",t),n.addSuffix?n.comparison>0?"za "+a:"pre "+a:a}t.a=a;var i={lessThanXSeconds:{one:{standalone:"manje od 1 sekunde",withPrepositionAgo:"manje od 1 sekunde",withPrepositionIn:"manje od 1 sekundu"},dual:"manje od {{count}} sekunde",other:"manje od {{count}} sekundi"},xSeconds:{one:{standalone:"1 sekunda",withPrepositionAgo:"1 sekunde",withPrepositionIn:"1 sekundu"},dual:"{{count}} sekunde",other:"{{count}} sekundi"},halfAMinute:"pola minute",lessThanXMinutes:{one:{standalone:"manje od 1 minute",withPrepositionAgo:"manje od 1 minute",withPrepositionIn:"manje od 1 minutu"},dual:"manje od {{count}} minute",other:"manje od {{count}} minuta"},xMinutes:{one:{standalone:"1 minuta",withPrepositionAgo:"1 minute",withPrepositionIn:"1 minutu"},dual:"{{count}} minute",other:"{{count}} minuta"},aboutXHours:{one:{standalone:"oko 1 sat",withPrepositionAgo:"oko 1 sat",withPrepositionIn:"oko 1 sat"},dual:"oko {{count}} sata",other:"oko {{count}} sati"},xHours:{one:{standalone:"1 sat",withPrepositionAgo:"1 sat",withPrepositionIn:"1 sat"},dual:"{{count}} sata",other:"{{count}} sati"},xDays:{one:{standalone:"1 dan",withPrepositionAgo:"1 dan",withPrepositionIn:"1 dan"},dual:"{{count}} dana",other:"{{count}} dana"},aboutXWeeks:{one:{standalone:"oko 1 nedelju",withPrepositionAgo:"oko 1 nedelju",withPrepositionIn:"oko 1 nedelju"},dual:"oko {{count}} nedelje",other:"oko {{count}} nedelje"},xWeeks:{one:{standalone:"1 nedelju",withPrepositionAgo:"1 nedelju",withPrepositionIn:"1 nedelju"},dual:"{{count}} nedelje",other:"{{count}} nedelje"},aboutXMonths:{one:{standalone:"oko 1 mesec",withPrepositionAgo:"oko 1 mesec",withPrepositionIn:"oko 1 mesec"},dual:"oko {{count}} meseca",other:"oko {{count}} meseci"},xMonths:{one:{standalone:"1 mesec",withPrepositionAgo:"1 mesec",withPrepositionIn:"1 mesec"},dual:"{{count}} meseca",other:"{{count}} meseci"},aboutXYears:{one:{standalone:"oko 1 godinu",withPrepositionAgo:"oko 1 godinu",withPrepositionIn:"oko 1 godinu"},dual:"oko {{count}} godine",other:"oko {{count}} godina"},xYears:{one:{standalone:"1 godina",withPrepositionAgo:"1 godine",withPrepositionIn:"1 godinu"},dual:"{{count}} godine",other:"{{count}} godina"},overXYears:{one:{standalone:"preko 1 godinu",withPrepositionAgo:"preko 1 godinu",withPrepositionIn:"preko 1 godinu"},dual:"preko {{count}} godine",other:"preko {{count}} godina"},almostXYears:{one:{standalone:"gotovo 1 godinu",withPrepositionAgo:"gotovo 1 godinu",withPrepositionIn:"gotovo 1 godinu"},dual:"gotovo {{count}} godine",other:"gotovo {{count}} godina"}}},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE, d. MMMM yyyy.",long:"d. MMMM yyyy.",medium:"d. MMM yy.",short:"dd. MM. yy."},r={full:"HH:mm:ss (zzzz)",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},o={full:"{{date}} 'u' {{time}}",long:"{{date}} 'u' {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e,t,n,a){var r=i[e];return"function"==typeof r?r(t):r}t.a=a;var i={lastWeek:function(e){switch(e.getUTCDay()){case 0:return"'prošle nedelje u' p";case 3:return"'prošle srede u' p";case 6:return"'prošle subote u' p";default:return"'prošli' EEEE 'u' p"}},yesterday:"'juče u' p",today:"'danas u' p",tomorrow:"'sutra u' p",nextWeek:function(e){switch(e.getUTCDay()){case 0:return"'sledeće nedelje u' p";case 3:return"'sledeću sredu u' p";case 6:return"'sledeću subotu u' p";default:return"'sledeći' EEEE 'u' p"}},other:"P"}},function(e,t,n){"use strict";function a(e){var t=Number(e);return String(t).concat(".")}var i=n(3),r={narrow:["pr.n.e.","AD"],abbreviated:["pr. Hr.","po. Hr."],wide:["Pre Hrista","Posle Hrista"]},o={narrow:["1.","2.","3.","4.","5.","6.","7.","8.","9.","10.","11.","12."],abbreviated:["jan","feb","mar","apr","maj","jun","jul","avg","sep","okt","nov","dec"],wide:["januar","februar","mart","april","maj","jun","jul","avgust","septembar","oktobar","novembar","decembar"]},u={narrow:["1.","2.","3.","4.","5.","6.","7.","8.","9.","10.","11.","12."],abbreviated:["jan","feb","mar","apr","maj","jun","jul","avg","sep","okt","nov","dec"],wide:["januar","februar","mart","april","maj","jun","jul","avgust","septembar","oktobar","novembar","decembar"]},s={narrow:["1.","2.","3.","4."],abbreviated:["1. kv.","2. kv.","3. kv.","4. kv."],wide:["1. kvartal","2. kvartal","3. kvartal","4. kvartal"]},d={narrow:["N","P","U","S","Č","P","S"],short:["ned","pon","uto","sre","čet","pet","sub"],abbreviated:["ned","pon","uto","sre","čet","pet","sub"],wide:["nedelja","ponedeljak","utorak","sreda","četvrtak","petak","subota"]},c={narrow:{am:"AM",pm:"PM",midnight:"ponoć",noon:"podne",morning:"ujutru",afternoon:"popodne",evening:"uveče",night:"noću"},abbreviated:{am:"AM",pm:"PM",midnight:"ponoć",noon:"podne",morning:"ujutru",afternoon:"popodne",evening:"uveče",night:"noću"},wide:{am:"AM",pm:"PM",midnight:"ponoć",noon:"podne",morning:"ujutru",afternoon:"posle podne",evening:"uveče",night:"noću"}},l={narrow:{am:"AM",pm:"PM",midnight:"ponoć",noon:"podne",morning:"ujutru",afternoon:"popodne",evening:"uveče",night:"noću"},abbreviated:{am:"AM",pm:"PM",midnight:"ponoć",noon:"podne",morning:"ujutru",afternoon:"popodne",evening:"uveče",night:"noću"},wide:{am:"AM",pm:"PM",midnight:"ponoć",noon:"podne",morning:"ujutru",afternoon:"posle podne",evening:"uveče",night:"noću"}},m={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:s,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:o,defaultWidth:"wide",formattingValues:u,defaultFormattingWidth:"wide"}),day:i.a({values:d,defaultWidth:"wide"}),dayPeriod:i.a({values:l,defaultWidth:"wide",formattingValues:c,defaultFormattingWidth:"wide"})};t.a=m},function(e,t,n){"use strict";var a=n(5),i=n(4),r=/^(\d+)\./i,o=/\d+/i,u={narrow:/^(pr\.n\.e\.|AD)/i,abbreviated:/^(pr\.\s?Hr\.|po\.\s?Hr\.)/i,wide:/^(Pre Hrista|pre nove ere|Posle Hrista|nova era)/i},s={any:[/^pr/i,/^(po|nova)/i]},d={narrow:/^[1234]/i,abbreviated:/^[1234]\.\s?kv\.?/i,wide:/^[1234]\. kvartal/i},c={any:[/1/i,/2/i,/3/i,/4/i]},l={narrow:/^(10|11|12|[123456789])\./i,abbreviated:/^(jan|feb|mar|apr|maj|jun|jul|avg|sep|okt|nov|dec)/i,wide:/^((januar|januara)|(februar|februara)|(mart|marta)|(april|aprila)|(maj|maja)|(jun|juna)|(jul|jula)|(avgust|avgusta)|(septembar|septembra)|(oktobar|oktobra)|(novembar|novembra)|(decembar|decembra))/i},m={narrow:[/(10|11|12|[123456789])/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^maj/i,/^jun/i,/^jul/i,/^avg/i,/^s/i,/^o/i,/^n/i,/^d/i]},f={narrow:/^[npusčc]/i,short:/^(ned|pon|uto|sre|(čet|cet)|pet|sub)/i,abbreviated:/^(ned|pon|uto|sre|(čet|cet)|pet|sub)/i,wide:/^(nedelja|ponedeljak|utorak|sreda|(četvrtak|cetvrtak)|petak|subota)/i},h={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},p={any:/^(am|pm|ponoc|ponoć|(po)?podne|uvece|uveče|noću|posle podne|ujutru)/i},g={any:{am:/^a/i,pm:/^p/i,midnight:/^pono/i,noon:/^pod/i,morning:/jutro/i,afternoon:/(posle\s|po)+podne/i,evening:/(uvece|uveče)/i,night:/(nocu|noću)/i}},v={ordinalNumber:i.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:a.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:a.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:a.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:a.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:a.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(790),i=n(791),r=n(792),o=n(793),u=n(794),s={code:"sv",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:4}};t.a=s},function(e,t,n){"use strict";function a(e,t,n){n=n||{onlyNumeric:!1};var a,o=i[e];return a="string"==typeof o?o:0===t||t>1?n.onlyNumeric?o.plural.replace("{{count}}",t):o.plural.replace("{{count}}",t<13?r[t]:t):o.singular,n.addSuffix?n.comparison>0?"om "+a:a+" sedan":a}t.a=a;var i={lessThanXSeconds:{singular:"mindre än en sekund",plural:"mindre än {{count}} sekunder"},xSeconds:{singular:"en sekund",plural:"{{count}} sekunder"},halfAMinute:"en halv minut",lessThanXMinutes:{singular:"mindre än en minut",plural:"mindre än {{count}} minuter"},xMinutes:{singular:"en minut",plural:"{{count}} minuter"},aboutXHours:{singular:"ungefär en timme",plural:"ungefär {{count}} timmar"},xHours:{singular:"en timme",plural:"{{count}} timmar"},xDays:{singular:"en dag",plural:"{{count}} dagar"},aboutXWeeks:{singular:"ungefär en vecka",plural:"ungefär {{count}} vecka"},xWeeks:{singular:"en vecka",plural:"{{count}} vecka"},aboutXMonths:{singular:"ungefär en månad",plural:"ungefär {{count}} månader"},xMonths:{singular:"en månad",plural:"{{count}} månader"},aboutXYears:{singular:"ungefär ett år",plural:"ungefär {{count}} år"},xYears:{singular:"ett år",plural:"{{count}} år"},overXYears:{singular:"över ett år",plural:"över {{count}} år"},almostXYears:{singular:"nästan ett år",plural:"nästan {{count}} år"}},r=["noll","en","två","tre","fyra","fem","sex","sju","åtta","nio","tio","elva","tolv"]},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE d MMMM y",long:"d MMMM y",medium:"d MMM y",short:"y-MM-dd"},r={full:"'kl'. HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},o={full:"{{date}} 'kl.' {{time}}",long:"{{date}} 'kl.' {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e,t,n,a){return i[e]}t.a=a;var i={lastWeek:"'i' EEEE's kl.' p",yesterday:"'igår kl.' p",today:"'idag kl.' p",tomorrow:"'imorgon kl.' p",nextWeek:"EEEE 'kl.' p",other:"P"}},function(e,t,n){"use strict";function a(e){var t=Number(e),n=t%100;if(n>20||n<10)switch(n%10){case 1:case 2:return t+":a"}return t+":e"}var i=n(3),r={narrow:["f.Kr.","e.Kr."],abbreviated:["f.Kr.","e.Kr."],wide:["före Kristus","efter Kristus"]},o={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1:a kvartalet","2:a kvartalet","3:e kvartalet","4:e kvartalet"]},u={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["jan.","feb.","mars","apr.","maj","juni","juli","aug.","sep.","okt.","nov.","dec."],wide:["januari","februari","mars","april","maj","juni","juli","augusti","september","oktober","november","december"]},s={narrow:["S","M","T","O","T","F","L"],short:["sö","må","ti","on","to","fr","lö"],abbreviated:["sön","mån","tis","ons","tor","fre","lör"],wide:["söndag","måndag","tisdag","onsdag","torsdag","fredag","lördag"]},d={narrow:{am:"fm",pm:"em",midnight:"midnatt",noon:"middag",morning:"morg.",afternoon:"efterm.",evening:"kväll",night:"natt"},abbreviated:{am:"f.m.",pm:"e.m.",midnight:"midnatt",noon:"middag",morning:"morgon",afternoon:"efterm.",evening:"kväll",night:"natt"},wide:{am:"förmiddag",pm:"eftermiddag",midnight:"midnatt",noon:"middag",morning:"morgon",afternoon:"eftermiddag",evening:"kväll",night:"natt"}},c={narrow:{am:"fm",pm:"em",midnight:"midnatt",noon:"middag",morning:"på morg.",afternoon:"på efterm.",evening:"på kvällen",night:"på natten"},abbreviated:{am:"fm",pm:"em",midnight:"midnatt",noon:"middag",morning:"på morg.",afternoon:"på efterm.",evening:"på kvällen",night:"på natten"},wide:{am:"fm",pm:"em",midnight:"midnatt",noon:"middag",morning:"på morgonen",afternoon:"på eftermiddagen",evening:"på kvällen",night:"på natten"}},l={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:u,defaultWidth:"wide"}),day:i.a({values:s,defaultWidth:"wide"}),dayPeriod:i.a({values:d,defaultWidth:"wide",formattingValues:c,defaultFormattingWidth:"wide"})};t.a=l},function(e,t,n){"use strict";var a=n(4),i=n(5),r=/^(\d+)(:a|:e)?/i,o=/\d+/i,u={narrow:/^(f\.? ?Kr\.?|f\.? ?v\.? ?t\.?|e\.? ?Kr\.?|v\.? ?t\.?)/i,abbreviated:/^(f\.? ?Kr\.?|f\.? ?v\.? ?t\.?|e\.? ?Kr\.?|v\.? ?t\.?)/i,wide:/^(före Kristus|före vår tid|efter Kristus|vår tid)/i},s={any:[/^f/i,/^[ev]/i]},d={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](:a|:e)? kvartalet/i},c={any:[/1/i,/2/i,/3/i,/4/i]},l={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|maj|jun|jul|aug|sep|okt|nov|dec)\.?/i,wide:/^(januari|februari|mars|april|maj|juni|juli|augusti|september|oktober|november|december)/i},m={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^maj/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},f={narrow:/^[smtofl]/i,short:/^(sö|må|ti|on|to|fr|lö)/i,abbreviated:/^(sön|mån|tis|ons|tor|fre|lör)/i,wide:/^(söndag|måndag|tisdag|onsdag|torsdag|fredag|lördag)/i},h={any:[/^s/i,/^m/i,/^ti/i,/^o/i,/^to/i,/^f/i,/^l/i]},p={any:/^([fe]\.?\s?m\.?|midn(att)?|midd(ag)?|(på) (morgonen|eftermiddagen|kvällen|natten))/i},g={any:{am:/^f/i,pm:/^e/i,midnight:/^midn/i,noon:/^midd/i,morning:/morgon/i,afternoon:/eftermiddag/i,evening:/kväll/i,night:/natt/i}},v={ordinalNumber:a.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:i.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:i.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:i.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:i.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:i.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(796),i=n(797),r=n(798),o=n(799),u=n(800),s={code:"ta",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:4}};t.a=s},function(e,t,n){"use strict";function a(e,t){return t.addSuffix?t.comparison>0?e.in:e.ago:e.default}function i(e,t){var n,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return n=r[e].default?a(r[e],i):1===t?a(r[e].one,i):a(r[e].other,i),n.replace("{{count}}",t)}t.a=i;var r={lessThanXSeconds:{one:{default:"ஒரு வினாடிக்கு குறைவாக",in:"ஒரு வினாடிக்குள்",ago:"ஒரு வினாடிக்கு முன்பு"},other:{default:"{{count}} வினாடிகளுக்கு குறைவாக",in:"{{count}} வினாடிகளுக்குள்",ago:"{{count}} வினாடிகளுக்கு முன்பு"}},xSeconds:{one:{default:"1 வினாடி",in:"1 வினாடியில்",ago:"1 வினாடி முன்பு"},other:{default:"{{count}} விநாடிகள்",in:"{{count}} வினாடிகளில்",ago:"{{count}} விநாடிகளுக்கு முன்பு"}},halfAMinute:{default:"அரை நிமிடம்",in:"அரை நிமிடத்தில்",ago:"அரை நிமிடம் முன்பு"},lessThanXMinutes:{one:{default:"ஒரு நிமிடத்திற்கும் குறைவாக",in:"ஒரு நிமிடத்திற்குள்",ago:"ஒரு நிமிடத்திற்கு முன்பு"},other:{default:"{{count}} நிமிடங்களுக்கும் குறைவாக",in:"{{count}} நிமிடங்களுக்குள்",ago:"{{count}} நிமிடங்களுக்கு முன்பு"}},xMinutes:{one:{default:"1 நிமிடம்",in:"1 நிமிடத்தில்",ago:"1 நிமிடம் முன்பு"},other:{default:"{{count}} நிமிடங்கள்",in:"{{count}} நிமிடங்களில்",ago:"{{count}} நிமிடங்களுக்கு முன்பு"}},aboutXHours:{one:{default:"சுமார் 1 மணி நேரம்",in:"சுமார் 1 மணி நேரத்தில்",ago:"சுமார் 1 மணி நேரத்திற்கு முன்பு"},other:{default:"சுமார் {{count}} மணி நேரம்",in:"சுமார் {{count}} மணி நேரத்திற்கு முன்பு",ago:"சுமார் {{count}} மணி நேரத்தில்"}},xHours:{one:{default:"1 மணி நேரம்",in:"1 மணி நேரத்தில்",ago:"1 மணி நேரத்திற்கு முன்பு"},other:{default:"{{count}} மணி நேரம்",in:"{{count}} மணி நேரத்தில்",ago:"{{count}} மணி நேரத்திற்கு முன்பு"}},xDays:{one:{default:"1 நாள்",in:"1 நாளில்",ago:"1 நாள் முன்பு"},other:{default:"{{count}} நாட்கள்",in:"{{count}} நாட்களில்",ago:"{{count}} நாட்களுக்கு முன்பு"}},aboutXWeeks:{one:{default:"சுமார் 1 வாரம்",in:"சுமார் 1 வாரத்தில்",ago:"சுமார் 1 வாரம் முன்பு"},other:{default:"சுமார் {{count}} வாரங்கள்",in:"சுமார் {{count}} வாரங்களில்",ago:"சுமார் {{count}} வாரங்களுக்கு முன்பு"}},xWeeks:{one:{default:"1 வாரம்",in:"1 வாரத்தில்",ago:"1 வாரம் முன்பு"},other:{default:"{{count}} வாரங்கள்",in:"{{count}} வாரங்களில்",ago:"{{count}} வாரங்களுக்கு முன்பு"}},aboutXMonths:{one:{default:"சுமார் 1 மாதம்",in:"சுமார் 1 மாதத்தில்",ago:"சுமார் 1 மாதத்திற்கு முன்பு"},other:{default:"சுமார் {{count}} மாதங்கள்",in:"சுமார் {{count}} மாதங்களில்",ago:"சுமார் {{count}} மாதங்களுக்கு முன்பு"}},xMonths:{one:{default:"1 மாதம்",in:"1 மாதத்தில்",ago:"1 மாதம் முன்பு"},other:{default:"{{count}} மாதங்கள்",in:"{{count}} மாதங்களில்",ago:"{{count}} மாதங்களுக்கு முன்பு"}},aboutXYears:{one:{default:"சுமார் 1 வருடம்",in:"சுமார் 1 ஆண்டில்",ago:"சுமார் 1 வருடம் முன்பு"},other:{default:"சுமார் {{count}} ஆண்டுகள்",in:"சுமார் {{count}} ஆண்டுகளில்",ago:"சுமார் {{count}} ஆண்டுகளுக்கு முன்பு"}},xYears:{one:{default:"1 வருடம்",in:"1 ஆண்டில்",ago:"1 வருடம் முன்பு"},other:{default:"{{count}} ஆண்டுகள்",in:"{{count}} ஆண்டுகளில்",ago:"{{count}} ஆண்டுகளுக்கு முன்பு"}},overXYears:{one:{default:"1 வருடத்திற்கு மேல்",in:"1 வருடத்திற்கும் மேலாக",ago:"1 வருடம் முன்பு"},other:{default:"{{count}} ஆண்டுகளுக்கும் மேலாக",in:"{{count}} ஆண்டுகளில்",ago:"{{count}} ஆண்டுகளுக்கு முன்பு"}},almostXYears:{one:{default:"கிட்டத்தட்ட 1 வருடம்",in:"கிட்டத்தட்ட 1 ஆண்டில்",ago:"கிட்டத்தட்ட 1 வருடம் முன்பு"},other:{default:"கிட்டத்தட்ட {{count}} ஆண்டுகள்",in:"கிட்டத்தட்ட {{count}} ஆண்டுகளில்",ago:"கிட்டத்தட்ட {{count}} ஆண்டுகளுக்கு முன்பு"}}}},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE, d MMMM, y",long:"d MMMM, y",medium:"d MMM, y",short:"d/M/yy"},r={full:"a h:mm:ss zzzz",long:"a h:mm:ss z",medium:"a h:mm:ss",short:"a h:mm"},o={full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e,t,n,a){return i[e]}t.a=a;var i={lastWeek:"'கடந்த' eeee p 'மணிக்கு'",yesterday:"'நேற்று ' p 'மணிக்கு'",today:"'இன்று ' p 'மணிக்கு'",tomorrow:"'நாளை ' p 'மணிக்கு'",nextWeek:"eeee p 'மணிக்கு'",other:"P"}},function(e,t,n){"use strict";function a(e,t){return Number(e)}var i=n(3),r={narrow:["கி.மு.","கி.பி."],abbreviated:["கி.மு.","கி.பி."],wide:["கிறிஸ்துவுக்கு முன்","அன்னோ டோமினி"]},o={narrow:["1","2","3","4"],abbreviated:["காலா.1","காலா.2","காலா.3","காலா.4"],wide:["ஒன்றாம் காலாண்டு","இரண்டாம் காலாண்டு","மூன்றாம் காலாண்டு","நான்காம் காலாண்டு"]},u={narrow:["ஜ","பி","மா","ஏ","மே","ஜூ","ஜூ","ஆ","செ","அ","ந","டி"],abbreviated:["ஜன.","பிப்.","மார்.","ஏப்.","மே","ஜூன்","ஜூலை","ஆக.","செப்.","அக்.","நவ.","டிச."],wide:["ஜனவரி","பிப்ரவரி","மார்ச்","ஏப்ரல்","மே","ஜூன்","ஜூலை","ஆகஸ்ட்","செப்டம்பர்","அக்டோபர்","நவம்பர்","டிசம்பர்"]},s={narrow:["ஞா","தி","செ","பு","வி","வெ","ச"],short:["ஞா","தி","செ","பு","வி","வெ","ச"],abbreviated:["ஞாயி.","திங்.","செவ்.","புத.","வியா.","வெள்.","சனி"],wide:["ஞாயிறு","திங்கள்","செவ்வாய்","புதன்","வியாழன்","வெள்ளி","சனி"]},d={narrow:{am:"மு.ப",pm:"பி.ப",midnight:"நள்.",noon:"நண்.",morning:"கா.",afternoon:"மதி.",evening:"மா.",night:"இர."},abbreviated:{am:"முற்பகல்",pm:"பிற்பகல்",midnight:"நள்ளிரவு",noon:"நண்பகல்",morning:"காலை",afternoon:"மதியம்",evening:"மாலை",night:"இரவு"},wide:{am:"முற்பகல்",pm:"பிற்பகல்",midnight:"நள்ளிரவு",noon:"நண்பகல்",morning:"காலை",afternoon:"மதியம்",evening:"மாலை",night:"இரவு"}},c={narrow:{am:"மு.ப",pm:"பி.ப",midnight:"நள்.",noon:"நண்.",morning:"கா.",afternoon:"மதி.",evening:"மா.",night:"இர."},abbreviated:{am:"முற்பகல்",pm:"பிற்பகல்",midnight:"நள்ளிரவு",noon:"நண்பகல்",morning:"காலை",afternoon:"மதியம்",evening:"மாலை",night:"இரவு"},wide:{am:"முற்பகல்",pm:"பிற்பகல்",midnight:"நள்ளிரவு",noon:"நண்பகல்",morning:"காலை",afternoon:"மதியம்",evening:"மாலை",night:"இரவு"}},l={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:u,defaultWidth:"wide"}),day:i.a({values:s,defaultWidth:"wide"}),dayPeriod:i.a({values:d,defaultWidth:"wide",formattingValues:c,defaultFormattingWidth:"wide"})};t.a=l},function(e,t,n){"use strict";var a=n(4),i=n(5),r=/^(\d+)(வது)?/i,o=/\d+/i,u={narrow:/^(கி.மு.|கி.பி.)/i,abbreviated:/^(கி\.?\s?மு\.?|கி\.?\s?பி\.?)/,wide:/^(கிறிஸ்துவுக்கு\sமுன்|அன்னோ\sடோமினி)/i},s={any:[/கி\.?\s?மு\.?/,/கி\.?\s?பி\.?/]},d={narrow:/^[1234]/i,abbreviated:/^காலா.[1234]/i,wide:/^(ஒன்றாம்|இரண்டாம்|மூன்றாம்|நான்காம்) காலாண்டு/i},c={narrow:[/1/i,/2/i,/3/i,/4/i],any:[/(1|காலா.1|ஒன்றாம்)/i,/(2|காலா.2|இரண்டாம்)/i,/(3|காலா.3|மூன்றாம்)/i,/(4|காலா.4|நான்காம்)/i]},l={narrow:/^(ஜ|பி|மா|ஏ|மே|ஜூ|ஆ|செ|அ|ந|டி)$/i,abbreviated:/^(ஜன.|பிப்.|மார்.|ஏப்.|மே|ஜூன்|ஜூலை|ஆக.|செப்.|அக்.|நவ.|டிச.)/i,wide:/^(ஜனவரி|பிப்ரவரி|மார்ச்|ஏப்ரல்|மே|ஜூன்|ஜூலை|ஆகஸ்ட்|செப்டம்பர்|அக்டோபர்|நவம்பர்|டிசம்பர்)/i},m={narrow:[/^ஜ$/i,/^பி/i,/^மா/i,/^ஏ/i,/^மே/i,/^ஜூ/i,/^ஜூ/i,/^ஆ/i,/^செ/i,/^அ/i,/^ந/i,/^டி/i],any:[/^ஜன/i,/^பி/i,/^மா/i,/^ஏ/i,/^மே/i,/^ஜூன்/i,/^ஜூலை/i,/^ஆ/i,/^செ/i,/^அ/i,/^ந/i,/^டி/i]},f={narrow:/^(ஞா|தி|செ|பு|வி|வெ|ச)/i,short:/^(ஞா|தி|செ|பு|வி|வெ|ச)/i,abbreviated:/^(ஞாயி.|திங்.|செவ்.|புத.|வியா.|வெள்.|சனி)/i,wide:/^(ஞாயிறு|திங்கள்|செவ்வாய்|புதன்|வியாழன்|வெள்ளி|சனி)/i},h={narrow:[/^ஞா/i,/^தி/i,/^செ/i,/^பு/i,/^வி/i,/^வெ/i,/^ச/i],any:[/^ஞா/i,/^தி/i,/^செ/i,/^பு/i,/^வி/i,/^வெ/i,/^ச/i]},p={narrow:/^(மு.ப|பி.ப|நள்|நண்|காலை|மதியம்|மாலை|இரவு)/i,any:/^(மு.ப|பி.ப|முற்பகல்|பிற்பகல்|நள்ளிரவு|நண்பகல்|காலை|மதியம்|மாலை|இரவு)/i},g={any:{am:/^மு/i,pm:/^பி/i,midnight:/^நள்/i,noon:/^நண்/i,morning:/காலை/i,afternoon:/மதியம்/i,evening:/மாலை/i,night:/இரவு/i}},v={ordinalNumber:a.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:i.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:i.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:i.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:i.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:i.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(802),i=n(803),r=n(804),o=n(805),u=n(806),s={code:"te",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:0,firstWeekContainsDate:1}};t.a=s},function(e,t,n){"use strict";function a(e,t,n){n=n||{};var a,r=n.addSuffix?i[e].withPreposition:i[e].standalone;return a="string"==typeof r?r:1===t?r.one:r.other.replace("{{count}}",t),n.addSuffix?n.comparison>0?a+"లో":a+" క్రితం":a}t.a=a;var i={lessThanXSeconds:{standalone:{one:"సెకను కన్నా తక్కువ",other:"{{count}} సెకన్ల కన్నా తక్కువ"},withPreposition:{one:"సెకను",other:"{{count}} సెకన్ల"}},xSeconds:{standalone:{one:"ఒక సెకను",other:"{{count}} సెకన్ల"},withPreposition:{one:"ఒక సెకను",other:"{{count}} సెకన్ల"}},halfAMinute:{standalone:"అర నిమిషం",withPreposition:"అర నిమిషం"},lessThanXMinutes:{standalone:{one:"ఒక నిమిషం కన్నా తక్కువ",other:"{{count}} నిమిషాల కన్నా తక్కువ"},withPreposition:{one:"ఒక నిమిషం",other:"{{count}} నిమిషాల"}},xMinutes:{standalone:{one:"ఒక నిమిషం",other:"{{count}} నిమిషాలు"},withPreposition:{one:"ఒక నిమిషం",other:"{{count}} నిమిషాల"}},aboutXHours:{standalone:{one:"సుమారు ఒక గంట",other:"సుమారు {{count}} గంటలు"},withPreposition:{one:"సుమారు ఒక గంట",other:"సుమారు {{count}} గంటల"}},xHours:{standalone:{one:"ఒక గంట",other:"{{count}} గంటలు"},withPreposition:{one:"ఒక గంట",other:"{{count}} గంటల"}},xDays:{standalone:{one:"ఒక రోజు",other:"{{count}} రోజులు"},withPreposition:{one:"ఒక రోజు",other:"{{count}} రోజుల"}},aboutXWeeks:{standalone:{one:"సుమారు ఒక వారం",other:"సుమారు {{count}} వారాలు"},withPreposition:{one:"సుమారు ఒక వారం",other:"సుమారు {{count}} వారాలల"}},xWeeks:{standalone:{one:"ఒక వారం",other:"{{count}} వారాలు"},withPreposition:{one:"ఒక వారం",other:"{{count}} వారాలల"}},aboutXMonths:{standalone:{one:"సుమారు ఒక నెల",other:"సుమారు {{count}} నెలలు"},withPreposition:{one:"సుమారు ఒక నెల",other:"సుమారు {{count}} నెలల"}},xMonths:{standalone:{one:"ఒక నెల",other:"{{count}} నెలలు"},withPreposition:{one:"ఒక నెల",other:"{{count}} నెలల"}},aboutXYears:{standalone:{one:"సుమారు ఒక సంవత్సరం",other:"సుమారు {{count}} సంవత్సరాలు"},withPreposition:{one:"సుమారు ఒక సంవత్సరం",other:"సుమారు {{count}} సంవత్సరాల"}},xYears:{standalone:{one:"ఒక సంవత్సరం",other:"{{count}} సంవత్సరాలు"},withPreposition:{one:"ఒక సంవత్సరం",other:"{{count}} సంవత్సరాల"}},overXYears:{standalone:{one:"ఒక సంవత్సరం పైగా",other:"{{count}} సంవత్సరాలకు పైగా"},withPreposition:{one:"ఒక సంవత్సరం",other:"{{count}} సంవత్సరాల"}},almostXYears:{standalone:{one:"దాదాపు ఒక సంవత్సరం",other:"దాదాపు {{count}} సంవత్సరాలు"},withPreposition:{one:"దాదాపు ఒక సంవత్సరం",other:"దాదాపు {{count}} సంవత్సరాల"}}}},function(e,t,n){"use strict";var a=n(2),i={full:"d, MMMM y, EEEE",long:"d MMMM, y",medium:"d MMM, y",short:"dd-MM-yy"},r={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},o={full:"{{date}} {{time}}'కి'",long:"{{date}} {{time}}'కి'",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e,t,n,a){return i[e]}t.a=a;var i={lastWeek:"'గత' eeee p",yesterday:"'నిన్న' p",today:"'ఈ రోజు' p",tomorrow:"'రేపు' p",nextWeek:"'తదుపరి' eeee p",other:"P"}},function(e,t,n){"use strict";function a(e,t){return Number(e)+"వ"}var i=n(3),r={narrow:["క్రీ.పూ.","క్రీ.శ."],abbreviated:["క్రీ.పూ.","క్రీ.శ."],wide:["క్రీస్తు పూర్వం","క్రీస్తుశకం"]},o={narrow:["1","2","3","4"],abbreviated:["త్రై1","త్రై2","త్రై3","త్రై4"],wide:["1వ త్రైమాసికం","2వ త్రైమాసికం","3వ త్రైమాసికం","4వ త్రైమాసికం"]},u={narrow:["జ","ఫి","మా","ఏ","మే","జూ","జు","ఆ","సె","అ","న","డి"],abbreviated:["జన","ఫిబ్ర","మార్చి","ఏప్రి","మే","జూన్","జులై","ఆగ","సెప్టెం","అక్టో","నవం","డిసెం"],wide:["జనవరి","ఫిబ్రవరి","మార్చి","ఏప్రిల్","మే","జూన్","జులై","ఆగస్టు","సెప్టెంబర్","అక్టోబర్","నవంబర్","డిసెంబర్"]},s={narrow:["ఆ","సో","మ","బు","గు","శు","శ"],short:["ఆది","సోమ","మంగళ","బుధ","గురు","శుక్ర","శని"],abbreviated:["ఆది","సోమ","మంగళ","బుధ","గురు","శుక్ర","శని"],wide:["ఆదివారం","సోమవారం","మంగళవారం","బుధవారం","గురువారం","శుక్రవారం","శనివారం"]},d={narrow:{am:"పూర్వాహ్నం",pm:"అపరాహ్నం",midnight:"అర్ధరాత్రి",noon:"మిట్టమధ్యాహ్నం",morning:"ఉదయం",afternoon:"మధ్యాహ్నం",evening:"సాయంత్రం",night:"రాత్రి"},abbreviated:{am:"పూర్వాహ్నం",pm:"అపరాహ్నం",midnight:"అర్ధరాత్రి",noon:"మిట్టమధ్యాహ్నం",morning:"ఉదయం",afternoon:"మధ్యాహ్నం",evening:"సాయంత్రం",night:"రాత్రి"},wide:{am:"పూర్వాహ్నం",pm:"అపరాహ్నం",midnight:"అర్ధరాత్రి",noon:"మిట్టమధ్యాహ్నం",morning:"ఉదయం",afternoon:"మధ్యాహ్నం",evening:"సాయంత్రం",night:"రాత్రి"}},c={narrow:{am:"పూర్వాహ్నం",pm:"అపరాహ్నం",midnight:"అర్ధరాత్రి",noon:"మిట్టమధ్యాహ్నం",morning:"ఉదయం",afternoon:"మధ్యాహ్నం",evening:"సాయంత్రం",night:"రాత్రి"},abbreviated:{am:"పూర్వాహ్నం",pm:"అపరాహ్నం",midnight:"అర్ధరాత్రి",noon:"మిట్టమధ్యాహ్నం",morning:"ఉదయం",afternoon:"మధ్యాహ్నం",evening:"సాయంత్రం",night:"రాత్రి"},wide:{am:"పూర్వాహ్నం",pm:"అపరాహ్నం",midnight:"అర్ధరాత్రి",noon:"మిట్టమధ్యాహ్నం",morning:"ఉదయం",afternoon:"మధ్యాహ్నం",evening:"సాయంత్రం",night:"రాత్రి"}},l={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:u,defaultWidth:"wide"}),day:i.a({values:s,defaultWidth:"wide"}),dayPeriod:i.a({values:d,defaultWidth:"wide",formattingValues:c,defaultFormattingWidth:"wide"})};t.a=l},function(e,t,n){"use strict";var a=n(4),i=n(5),r=/^(\d+)(వ)?/i,o=/\d+/i,u={narrow:/^(క్రీ\.పూ\.|క్రీ\.శ\.)/i,abbreviated:/^(క్రీ\.?\s?పూ\.?|ప్ర\.?\s?శ\.?\s?పూ\.?|క్రీ\.?\s?శ\.?|సా\.?\s?శ\.?)/i,wide:/^(క్రీస్తు పూర్వం|ప్రస్తుత శకానికి పూర్వం|క్రీస్తు శకం|ప్రస్తుత శకం)/i},s={any:[/^(పూ|శ)/i,/^సా/i]},d={narrow:/^[1234]/i,abbreviated:/^త్రై[1234]/i,wide:/^[1234](వ)? త్రైమాసికం/i},c={any:[/1/i,/2/i,/3/i,/4/i]},l={narrow:/^(జూ|జు|జ|ఫి|మా|ఏ|మే|ఆ|సె|అ|న|డి)/i,abbreviated:/^(జన|ఫిబ్ర|మార్చి|ఏప్రి|మే|జూన్|జులై|ఆగ|సెప్|అక్టో|నవ|డిసె)/i,wide:/^(జనవరి|ఫిబ్రవరి|మార్చి|ఏప్రిల్|మే|జూన్|జులై|ఆగస్టు|సెప్టెంబర్|అక్టోబర్|నవంబర్|డిసెంబర్)/i},m={narrow:[/^జ/i,/^ఫి/i,/^మా/i,/^ఏ/i,/^మే/i,/^జూ/i,/^జు/i,/^ఆ/i,/^సె/i,/^అ/i,/^న/i,/^డి/i],any:[/^జన/i,/^ఫి/i,/^మా/i,/^ఏ/i,/^మే/i,/^జూన్/i,/^జులై/i,/^ఆగ/i,/^సె/i,/^అ/i,/^న/i,/^డి/i]},f={narrow:/^(ఆ|సో|మ|బు|గు|శు|శ)/i,short:/^(ఆది|సోమ|మం|బుధ|గురు|శుక్ర|శని)/i,abbreviated:/^(ఆది|సోమ|మం|బుధ|గురు|శుక్ర|శని)/i,wide:/^(ఆదివారం|సోమవారం|మంగళవారం|బుధవారం|గురువారం|శుక్రవారం|శనివారం)/i},h={narrow:[/^ఆ/i,/^సో/i,/^మ/i,/^బు/i,/^గు/i,/^శు/i,/^శ/i],any:[/^ఆది/i,/^సోమ/i,/^మం/i,/^బుధ/i,/^గురు/i,/^శుక్ర/i,/^శని/i]},p={narrow:/^(పూర్వాహ్నం|అపరాహ్నం|అర్ధరాత్రి|మిట్టమధ్యాహ్నం|ఉదయం|మధ్యాహ్నం|సాయంత్రం|రాత్రి)/i,any:/^(పూర్వాహ్నం|అపరాహ్నం|అర్ధరాత్రి|మిట్టమధ్యాహ్నం|ఉదయం|మధ్యాహ్నం|సాయంత్రం|రాత్రి)/i},g={any:{am:/^పూర్వాహ్నం/i,pm:/^అపరాహ్నం/i,midnight:/^అర్ధ/i,noon:/^మిట్ట/i,morning:/ఉదయం/i,afternoon:/మధ్యాహ్నం/i,evening:/సాయంత్రం/i,night:/రాత్రి/i}},v={ordinalNumber:a.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:i.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:i.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:i.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:i.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:i.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(808),i=n(809),r=n(810),o=n(811),u=n(812),s={code:"th",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:0,firstWeekContainsDate:1}};t.a=s},function(e,t,n){"use strict";function a(e,t,n){n=n||{};var a;return a="string"==typeof i[e]?i[e]:1===t?i[e].one:i[e].other.replace("{{count}}",t),n.addSuffix?n.comparison>0?"halfAMinute"===e?"ใน"+a:"ใน "+a:a+"ที่ผ่านมา":a}t.a=a;var i={lessThanXSeconds:{one:"น้อยกว่า 1 วินาที",other:"น้อยกว่า {{count}} วินาที"},xSeconds:{one:"1 วินาที",other:"{{count}} วินาที"},halfAMinute:"ครึ่งนาที",lessThanXMinutes:{one:"น้อยกว่า 1 นาที",other:"น้อยกว่า {{count}} นาที"},xMinutes:{one:"1 นาที",other:"{{count}} นาที"},aboutXHours:{one:"ประมาณ 1 ชั่วโมง",other:"ประมาณ {{count}} ชั่วโมง"},xHours:{one:"1 ชั่วโมง",other:"{{count}} ชั่วโมง"},xDays:{one:"1 วัน",other:"{{count}} วัน"},aboutXWeeks:{one:"ประมาณ 1 สัปดาห์",other:"ประมาณ {{count}} สัปดาห์"},xWeeks:{one:"1 สัปดาห์",other:"{{count}} สัปดาห์"},aboutXMonths:{one:"ประมาณ 1 เดือน",other:"ประมาณ {{count}} เดือน"},xMonths:{one:"1 เดือน",other:"{{count}} เดือน"},aboutXYears:{one:"ประมาณ 1 ปี",other:"ประมาณ {{count}} ปี"},xYears:{one:"1 ปี",other:"{{count}} ปี"},overXYears:{one:"มากกว่า 1 ปี",other:"มากกว่า {{count}} ปี"},almostXYears:{one:"เกือบ 1 ปี",other:"เกือบ {{count}} ปี"}}},function(e,t,n){"use strict";var a=n(2),i={full:"วันEEEEที่ do MMMM y",long:"do MMMM y",medium:"d MMM y",short:"dd/MM/yyyy"},r={full:"H:mm:ss น. zzzz",long:"H:mm:ss น. z",medium:"H:mm:ss น.",short:"H:mm น."},o={full:"{{date}} 'เวลา' {{time}}",long:"{{date}} 'เวลา' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"medium"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e,t,n,a){return i[e]}t.a=a;var i={lastWeek:"eeee'ที่แล้วเวลา' p",yesterday:"'เมื่อวานนี้เวลา' p",today:"'วันนี้เวลา' p",tomorrow:"'พรุ่งนี้เวลา' p",nextWeek:"eeee 'เวลา' p",other:"P"}},function(e,t,n){"use strict";function a(e){return Number(e)}var i=n(3),r={narrow:["B","คศ"],abbreviated:["BC","ค.ศ."],wide:["ปีก่อนคริสตกาล","คริสต์ศักราช"]},o={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["ไตรมาสแรก","ไตรมาสที่สอง","ไตรมาสที่สาม","ไตรมาสที่สี่"]},u={narrow:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],short:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],abbreviated:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],wide:["อาทิตย์","จันทร์","อังคาร","พุธ","พฤหัสบดี","ศุกร์","เสาร์"]},s={narrow:["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],abbreviated:["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],wide:["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"]},d={narrow:{am:"ก่อนเที่ยง",pm:"หลังเที่ยง",midnight:"เที่ยงคืน",noon:"เที่ยง",morning:"เช้า",afternoon:"บ่าย",evening:"เย็น",night:"กลางคืน"},abbreviated:{am:"ก่อนเที่ยง",pm:"หลังเที่ยง",midnight:"เที่ยงคืน",noon:"เที่ยง",morning:"เช้า",afternoon:"บ่าย",evening:"เย็น",night:"กลางคืน"},wide:{am:"ก่อนเที่ยง",pm:"หลังเที่ยง",midnight:"เที่ยงคืน",noon:"เที่ยง",morning:"เช้า",afternoon:"บ่าย",evening:"เย็น",night:"กลางคืน"}},c={narrow:{am:"ก่อนเที่ยง",pm:"หลังเที่ยง",midnight:"เที่ยงคืน",noon:"เที่ยง",morning:"ตอนเช้า",afternoon:"ตอนกลางวัน",evening:"ตอนเย็น",night:"ตอนกลางคืน"},abbreviated:{am:"ก่อนเที่ยง",pm:"หลังเที่ยง",midnight:"เที่ยงคืน",noon:"เที่ยง",morning:"ตอนเช้า",afternoon:"ตอนกลางวัน",evening:"ตอนเย็น",night:"ตอนกลางคืน"},wide:{am:"ก่อนเที่ยง",pm:"หลังเที่ยง",midnight:"เที่ยงคืน",noon:"เที่ยง",morning:"ตอนเช้า",afternoon:"ตอนกลางวัน",evening:"ตอนเย็น",night:"ตอนกลางคืน"}},l={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:s,defaultWidth:"wide"}),day:i.a({values:u,defaultWidth:"wide"}),dayPeriod:i.a({values:d,defaultWidth:"wide",formattingValues:c,defaultFormattingWidth:"wide"})};t.a=l},function(e,t,n){"use strict";var a=n(4),i=n(5),r=/^\d+/i,o=/\d+/i,u={narrow:/^([bB]|[aA]|คศ)/i,abbreviated:/^([bB]\.?\s?[cC]\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?|ค\.?ศ\.?)/i,wide:/^(ก่อนคริสตกาล|คริสต์ศักราช|คริสตกาล)/i},s={any:[/^[bB]/i,/^(^[aA]|ค\.?ศ\.?|คริสตกาล|คริสต์ศักราช|)/i]},d={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^ไตรมาส(ที่)? ?[1234]/i},c={any:[/(1|แรก|หนึ่ง)/i,/(2|สอง)/i,/(3|สาม)/i,/(4|สี่)/i]},l={narrow:/^(ม\.?ค\.?|ก\.?พ\.?|มี\.?ค\.?|เม\.?ย\.?|พ\.?ค\.?|มิ\.?ย\.?|ก\.?ค\.?|ส\.?ค\.?|ก\.?ย\.?|ต\.?ค\.?|พ\.?ย\.?|ธ\.?ค\.?)/i,abbreviated:/^(ม\.?ค\.?|ก\.?พ\.?|มี\.?ค\.?|เม\.?ย\.?|พ\.?ค\.?|มิ\.?ย\.?|ก\.?ค\.?|ส\.?ค\.?|ก\.?ย\.?|ต\.?ค\.?|พ\.?ย\.?|ธ\.?ค\.?')/i,wide:/^(มกราคม|กุมภาพันธ์|มีนาคม|เมษายน|พฤษภาคม|มิถุนายน|กรกฎาคม|สิงหาคม|กันยายน|ตุลาคม|พฤศจิกายน|ธันวาคม)/i},m={wide:[/^มก/i,/^กุม/i,/^มี/i,/^เม/i,/^พฤษ/i,/^มิ/i,/^กรก/i,/^ส/i,/^กัน/i,/^ต/i,/^พฤศ/i,/^ธ/i],any:[/^ม\.?ค\.?/i,/^ก\.?พ\.?/i,/^มี\.?ค\.?/i,/^เม\.?ย\.?/i,/^พ\.?ค\.?/i,/^มิ\.?ย\.?/i,/^ก\.?ค\.?/i,/^ส\.?ค\.?/i,/^ก\.?ย\.?/i,/^ต\.?ค\.?/i,/^พ\.?ย\.?/i,/^ธ\.?ค\.?/i]},f={narrow:/^(อา\.?|จ\.?|อ\.?|พฤ\.?|พ\.?|ศ\.?|ส\.?)/i,short:/^(อา\.?|จ\.?|อ\.?|พฤ\.?|พ\.?|ศ\.?|ส\.?)/i,abbreviated:/^(อา\.?|จ\.?|อ\.?|พฤ\.?|พ\.?|ศ\.?|ส\.?)/i,wide:/^(อาทิตย์|จันทร์|อังคาร|พุธ|พฤหัสบดี|ศุกร์|เสาร์)/i},h={wide:[/^อา/i,/^จั/i,/^อั/i,/^พุธ/i,/^พฤ/i,/^ศ/i,/^เส/i],any:[/^อา/i,/^จ/i,/^อ/i,/^พ(?!ฤ)/i,/^พฤ/i,/^ศ/i,/^ส/i]},p={any:/^(ก่อนเที่ยง|หลังเที่ยง|เที่ยงคืน|เที่ยง|(ตอน.*?)?.*(เที่ยง|เช้า|บ่าย|เย็น|กลางคืน))/i},g={any:{am:/^ก่อนเที่ยง/i,pm:/^หลังเที่ยง/i,midnight:/^เที่ยงคืน/i,noon:/^เที่ยง/i,morning:/เช้า/i,afternoon:/บ่าย/i,evening:/เย็น/i,night:/กลางคืน/i}},v={ordinalNumber:a.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:i.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:i.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:i.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:i.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:i.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(814),i=n(815),r=n(816),o=n(817),u=n(818),s={code:"tr",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:1}};t.a=s},function(e,t,n){"use strict";function a(e,t,n){n=n||{};var a;return a="string"==typeof i[e]?i[e]:1===t?i[e].one:i[e].other.replace("{{count}}",t),n.addSuffix?n.comparison>0?a+" sonra":a+" önce":a}t.a=a;var i={lessThanXSeconds:{one:"bir saniyeden az",other:"{{count}} saniyeden az"},xSeconds:{one:"1 saniye",other:"{{count}} saniye"},halfAMinute:"yarım dakika",lessThanXMinutes:{one:"bir dakikadan az",other:"{{count}} dakikadan az"},xMinutes:{one:"1 dakika",other:"{{count}} dakika"},aboutXHours:{one:"yaklaşık 1 saat",other:"yaklaşık {{count}} saat"},xHours:{one:"1 saat",other:"{{count}} saat"},xDays:{one:"1 gün",other:"{{count}} gün"},aboutXWeeks:{one:"yaklaşık 1 hafta",other:"yaklaşık {{count}} hafta"},xWeeks:{one:"1 hafta",other:"{{count}} hafta"},aboutXMonths:{one:"yaklaşık 1 ay",other:"yaklaşık {{count}} ay"},xMonths:{one:"1 ay",other:"{{count}} ay"},aboutXYears:{one:"yaklaşık 1 yıl",other:"yaklaşık {{count}} yıl"},xYears:{one:"1 yıl",other:"{{count}} yıl"},overXYears:{one:"1 yıldan fazla",other:"{{count}} yıldan fazla"},almostXYears:{one:"neredeyse 1 yıl",other:"neredeyse {{count}} yıl"}}},function(e,t,n){"use strict";var a=n(2),i={full:"d MMMM y EEEE",long:"d MMMM y",medium:"d MMM y",short:"dd.MM.yyyy"},r={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},o={full:"{{date}} 'saat' {{time}}",long:"{{date}} 'saat' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e,t,n,a){return i[e]}t.a=a;var i={lastWeek:"'geçen hafta' eeee 'saat' p",yesterday:"'dün saat' p",today:"'bugün saat' p",tomorrow:"'yarın saat' p",nextWeek:"eeee 'saat' p",other:"P"}},function(e,t,n){"use strict";function a(e,t){return Number(e)+"."}var i=n(3),r={abbreviated:["MÖ","MS"],narrow:["MÖ","MS"],wide:["Milattan Önce","Milattan Sonra"]},o={narrow:["1","2","3","4"],abbreviated:["1Ç","2Ç","3Ç","4Ç"],wide:["İlk çeyrek","İkinci Çeyrek","Üçüncü çeyrek","Son çeyrek"]},u={narrow:["O","Ş","M","N","M","H","T","A","E","E","K","A"],abbreviated:["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],wide:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"]},s={narrow:["P","P","S","Ç","P","C","C"],short:["Pz","Pt","Sa","Ça","Pe","Cu","Ct"],abbreviated:["Paz","Pts","Sal","Çar","Per","Cum","Cts"],wide:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"]},d={narrow:{am:"öö",pm:"ös",midnight:"gy",noon:"ö",morning:"sa",afternoon:"ös",evening:"ak",night:"ge"},abbreviated:{am:"ÖÖ",pm:"ÖS",midnight:"gece yarısı",noon:"öğle",morning:"sabah",afternoon:"öğleden sonra",evening:"akşam",night:"gece"},wide:{am:"Ö.Ö.",pm:"Ö.S.",midnight:"gece yarısı",noon:"öğle",morning:"sabah",afternoon:"öğleden sonra",evening:"akşam",night:"gece"}},c={narrow:{am:"öö",pm:"ös",midnight:"gy",noon:"ö",morning:"sa",afternoon:"ös",evening:"ak",night:"ge"},abbreviated:{am:"ÖÖ",pm:"ÖS",midnight:"gece yarısı",noon:"öğlen",morning:"sabahleyin",afternoon:"öğleden sonra",evening:"akşamleyin",night:"geceleyin"},wide:{am:"ö.ö.",pm:"ö.s.",midnight:"gece yarısı",noon:"öğlen",morning:"sabahleyin",afternoon:"öğleden sonra",evening:"akşamleyin",night:"geceleyin"}},l={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:u,defaultWidth:"wide"}),day:i.a({values:s,defaultWidth:"wide"}),dayPeriod:i.a({values:d,defaultWidth:"wide",formattingValues:c,defaulFormattingWidth:"wide"})};t.a=l},function(e,t,n){"use strict";var a=n(4),i=n(5),r=/^(\d+)(\.)?/i,o=/\d+/i,u={narrow:/^(mö|ms)/i,abbreviated:/^(mö|ms)/i,wide:/^(milattan önce|milattan sonra)/i},s={any:[/(^mö|^milattan önce)/i,/(^ms|^milattan sonra)/i]},d={narrow:/^[1234]/i,abbreviated:/^[1234]ç/i,wide:/^((i|İ)lk|(i|İ)kinci|üçüncü|son) çeyrek/i},c={any:[/1/i,/2/i,/3/i,/4/i],abbreviated:[/1ç/i,/2ç/i,/3ç/i,/4ç/i],wide:[/^(i|İ)lk çeyrek/i,/(i|İ)kinci çeyrek/i,/üçüncü çeyrek/i,/son çeyrek/i]},l={narrow:/^[oşmnhtaek]/i,abbreviated:/^(oca|şub|mar|nis|may|haz|tem|ağu|eyl|eki|kas|ara)/i,wide:/^(ocak|şubat|mart|nisan|mayıs|haziran|temmuz|ağustos|eylül|ekim|kasım|aralık)/i},m={narrow:[/^o/i,/^ş/i,/^m/i,/^n/i,/^m/i,/^h/i,/^t/i,/^a/i,/^e/i,/^e/i,/^k/i,/^a/i],any:[/^o/i,/^ş/i,/^mar/i,/^n/i,/^may/i,/^h/i,/^t/i,/^ağ/i,/^ey/i,/^ek/i,/^k/i,/^ar/i]},f={narrow:/^[psçc]/i,short:/^(pz|pt|sa|ça|pe|cu|ct)/i,abbreviated:/^(paz|pts|sal|çar|per|cum|cts)/i,wide:/^(pazar|pazartesi|salı|çarşamba|perşembe|cuma|cumartesi)/i},h={narrow:[/^p/i,/^p/i,/^s/i,/^ç/i,/^p/i,/^c/i,/^c/i],any:[/^pz/i,/^pt/i,/^sa/i,/^ça/i,/^pe/i,/^cu/i,/^ct/i],wide:[/^pazar/i,/^pazartesi/i,/^salı/i,/^çarşamba/i,/^perşembe/i,/^cuma/i,/cumartesi/i]},p={narrow:/^(öö|ös|gy|ö|sa|ös|ak|ge)/i,any:/^(ö\.?\s?[ös]\.?|öğleden sonra|gece yarısı|öğle|(sabah|öğ|akşam|gece)(leyin))/i},g={any:{am:/^ö\.?ö\.?/i,pm:/^ö\.?s\.?/i,midnight:/^(gy|gece yarısı)/i,noon:/^öğ/i,morning:/^sa/i,afternoon:/^öğleden sonra/i,evening:/^ak/i,night:/^ge/i}},v={ordinalNumber:a.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:i.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:i.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:i.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:i.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:i.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(820),i=n(821),r=n(822),o=n(823),u=n(824),s={code:"ug",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:0,firstWeekContainsDate:1}};t.a=s},function(e,t,n){"use strict";function a(e,t,n){n=n||{};var a;return a="string"==typeof i[e]?i[e]:1===t?i[e].one:i[e].other.replace("{{count}}",t),n.addSuffix?n.comparison>0?a:a+" بولدى":a}t.a=a;var i={lessThanXSeconds:{one:"بىر سىكۇنت ئىچىدە",other:"سىكۇنت ئىچىدە {{count}}"},xSeconds:{one:"بىر سىكۇنت",other:"سىكۇنت {{count}}"},halfAMinute:"يىرىم مىنۇت",lessThanXMinutes:{one:"بىر مىنۇت ئىچىدە",other:"مىنۇت ئىچىدە {{count}}"},xMinutes:{one:"بىر مىنۇت",other:"مىنۇت {{count}}"},aboutXHours:{one:"تەخمىنەن بىر سائەت",other:"سائەت {{count}} تەخمىنەن"},xHours:{one:"بىر سائەت",other:"سائەت {{count}}"},xDays:{one:"بىر كۈن",other:"كۈن {{count}}"},aboutXWeeks:{one:"تەخمىنەن بىرھەپتە",other:"ھەپتە {{count}} تەخمىنەن"},xWeeks:{one:"بىرھەپتە",other:"ھەپتە {{count}}"},aboutXMonths:{one:"تەخمىنەن بىر ئاي",other:"ئاي {{count}} تەخمىنەن"},xMonths:{one:"بىر ئاي",other:"ئاي {{count}}"},aboutXYears:{one:"تەخمىنەن بىر يىل",other:"يىل {{count}} تەخمىنەن"},xYears:{one:"بىر يىل",other:"يىل {{count}}"},overXYears:{one:"بىر يىلدىن ئارتۇق",other:"يىلدىن ئارتۇق {{count}}"},almostXYears:{one:"ئاساسەن بىر يىل",other:"يىل {{count}} ئاساسەن"}}},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},r={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},o={full:"{{date}} 'دە' {{time}}",long:"{{date}} 'دە' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e,t,n,a){return i[e]}t.a=a;var i={lastWeek:"'ئ‍ۆتكەن' eeee 'دە' p",yesterday:"'تۈنۈگۈن دە' p",today:"'بۈگۈن دە' p",tomorrow:"'ئەتە دە' p",nextWeek:"eeee 'دە' p",other:"P"}},function(e,t,n){"use strict";function a(e,t){return String(e)}var i=n(3),r={narrow:["ب","ك"],abbreviated:["ب","ك"],wide:["مىيلادىدىن بۇرۇن","مىيلادىدىن كىيىن"]},o={narrow:["1","2","3","4"],abbreviated:["1","2","3","4"],wide:["بىرىنجى چارەك","ئىككىنجى چارەك","ئۈچىنجى چارەك","تۆتىنجى چارەك"]},u={narrow:["ي","ف","م","ا","م","ى","ى","ا","س","ۆ","ن","د"],abbreviated:["يانۋار","فېۋىرال","مارت","ئاپرىل","ماي","ئىيۇن","ئىيول","ئاۋغۇست","سىنتەبىر","ئۆكتەبىر","نويابىر","دىكابىر"],wide:["يانۋار","فېۋىرال","مارت","ئاپرىل","ماي","ئىيۇن","ئىيول","ئاۋغۇست","سىنتەبىر","ئۆكتەبىر","نويابىر","دىكابىر"]},s={narrow:["ي","د","س","چ","پ","ج","ش"],short:["ي","د","س","چ","پ","ج","ش"],abbreviated:["يەكشەنبە","دۈشەنبە","سەيشەنبە","چارشەنبە","پەيشەنبە","جۈمە","شەنبە"],wide:["يەكشەنبە","دۈشەنبە","سەيشەنبە","چارشەنبە","پەيشەنبە","جۈمە","شەنبە"]},d={narrow:{am:"ئە",pm:"چ",midnight:"ك",noon:"چ",morning:"ئەتىگەن",afternoon:"چۈشتىن كىيىن",evening:"ئاخشىم",night:"كىچە"},abbreviated:{am:"ئە",pm:"چ",midnight:"ك",noon:"چ",morning:"ئەتىگەن",afternoon:"چۈشتىن كىيىن",evening:"ئاخشىم",night:"كىچە"},wide:{am:"ئە",pm:"چ",midnight:"ك",noon:"چ",morning:"ئەتىگەن",afternoon:"چۈشتىن كىيىن",evening:"ئاخشىم",night:"كىچە"}},c={narrow:{am:"ئە",pm:"چ",midnight:"ك",noon:"چ",morning:"ئەتىگەندە",afternoon:"چۈشتىن كىيىن",evening:"ئاخشامدا",night:"كىچىدە"},abbreviated:{am:"ئە",pm:"چ",midnight:"ك",noon:"چ",morning:"ئەتىگەندە",afternoon:"چۈشتىن كىيىن",evening:"ئاخشامدا",night:"كىچىدە"},wide:{am:"ئە",pm:"چ",midnight:"ك",noon:"چ",morning:"ئەتىگەندە",afternoon:"چۈشتىن كىيىن",evening:"ئاخشامدا",night:"كىچىدە"}},l={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:u,defaultWidth:"wide"}),day:i.a({values:s,defaultWidth:"wide"}),dayPeriod:i.a({values:d,defaultWidth:"wide",formattingValues:c,defaultFormattingWidth:"wide"})};t.a=l},function(e,t,n){"use strict";var a=n(4),i=n(5),r=/^(\d+)(th|st|nd|rd)?/i,o=/\d+/i,u={narrow:/^(ب|ك)/i,wide:/^(مىيلادىدىن بۇرۇن|مىيلادىدىن كىيىن)/i},s={any:[/^بۇرۇن/i,/^كىيىن/i]},d={narrow:/^[1234]/i,abbreviated:/^چ[1234]/i,wide:/^چارەك [1234]/i},c={any:[/1/i,/2/i,/3/i,/4/i]},l={narrow:/^[يفمئامئ‍ئاسۆند]/i,abbreviated:/^(يانۋار|فېۋىرال|مارت|ئاپرىل|ماي|ئىيۇن|ئىيول|ئاۋغۇست|سىنتەبىر|ئۆكتەبىر|نويابىر|دىكابىر)/i,wide:/^(يانۋار|فېۋىرال|مارت|ئاپرىل|ماي|ئىيۇن|ئىيول|ئاۋغۇست|سىنتەبىر|ئۆكتەبىر|نويابىر|دىكابىر)/i},m={narrow:[/^ي/i,/^ف/i,/^م/i,/^ا/i,/^م/i,/^ى‍/i,/^ى‍/i,/^ا‍/i,/^س/i,/^ۆ/i,/^ن/i,/^د/i],any:[/^يان/i,/^فېۋ/i,/^مار/i,/^ئاپ/i,/^ماي/i,/^ئىيۇن/i,/^ئىيول/i,/^ئاۋ/i,/^سىن/i,/^ئۆك/i,/^نوي/i,/^دىك/i]},f={narrow:/^[دسچپجشي]/i,short:/^(يە|دۈ|سە|چا|پە|جۈ|شە)/i,abbreviated:/^(يە|دۈ|سە|چا|پە|جۈ|شە)/i,wide:/^(يەكشەنبە|دۈشەنبە|سەيشەنبە|چارشەنبە|پەيشەنبە|جۈمە|شەنبە)/i},h={narrow:[/^ي/i,/^د/i,/^س/i,/^چ/i,/^پ/i,/^ج/i,/^ش/i],any:[/^ي/i,/^د/i,/^س/i,/^چ/i,/^پ/i,/^ج/i,/^ش/i]},p={narrow:/^(ئە|چ|ك|چ|(دە|ئەتىگەن) ( ئە‍|چۈشتىن كىيىن|ئاخشىم|كىچە))/i,any:/^(ئە|چ|ك|چ|(دە|ئەتىگەن) ( ئە‍|چۈشتىن كىيىن|ئاخشىم|كىچە))/i},g={any:{am:/^ئە/i,pm:/^چ/i,midnight:/^ك/i,noon:/^چ/i,morning:/ئەتىگەن/i,afternoon:/چۈشتىن كىيىن/i,evening:/ئاخشىم/i,night:/كىچە/i}},v={ordinalNumber:a.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:i.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:i.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:i.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:i.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:i.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(826),i=n(827),r=n(828),o=n(829),u=n(830),s={code:"uk",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:1}};t.a=s},function(e,t,n){"use strict";function a(e,t){if(void 0!==e.one&&1===t)return e.one;var n=t%10,a=t%100;return 1===n&&11!==a?e.singularNominative.replace("{{count}}",t):n>=2&&n<=4&&(a<10||a>20)?e.singularGenitive.replace("{{count}}",t):e.pluralGenitive.replace("{{count}}",t)}function i(e){return function(t,n){return n.addSuffix?n.comparison>0?e.future?a(e.future,t):"за "+a(e.regular,t):e.past?a(e.past,t):a(e.regular,t)+" тому":a(e.regular,t)}}function r(e,t,n){return n=n||{},o[e](t,n)}t.a=r;var o={lessThanXSeconds:i({regular:{one:"менше секунди",singularNominative:"менше {{count}} секунди",singularGenitive:"менше {{count}} секунд",pluralGenitive:"менше {{count}} секунд"},future:{one:"менше, ніж за секунду",singularNominative:"менше, ніж за {{count}} секунду",singularGenitive:"менше, ніж за {{count}} секунди",pluralGenitive:"менше, ніж за {{count}} секунд"}}),xSeconds:i({regular:{singularNominative:"{{count}} секунда",singularGenitive:"{{count}} секунди",pluralGenitive:"{{count}} секунд"},past:{singularNominative:"{{count}} секунду тому",singularGenitive:"{{count}} секунди тому",pluralGenitive:"{{count}} секунд тому"},future:{singularNominative:"за {{count}} секунду",singularGenitive:"за {{count}} секунди",pluralGenitive:"за {{count}} секунд"}}),halfAMinute:function(e,t){return t.addSuffix?t.comparison>0?"за півхвилини":"півхвилини тому":"півхвилини"},lessThanXMinutes:i({regular:{one:"менше хвилини",singularNominative:"менше {{count}} хвилини",singularGenitive:"менше {{count}} хвилин",pluralGenitive:"менше {{count}} хвилин"},future:{one:"менше, ніж за хвилину",singularNominative:"менше, ніж за {{count}} хвилину",singularGenitive:"менше, ніж за {{count}} хвилини",pluralGenitive:"менше, ніж за {{count}} хвилин"}}),xMinutes:i({regular:{singularNominative:"{{count}} хвилина",singularGenitive:"{{count}} хвилини",pluralGenitive:"{{count}} хвилин"},past:{singularNominative:"{{count}} хвилину тому",singularGenitive:"{{count}} хвилини тому",pluralGenitive:"{{count}} хвилин тому"},future:{singularNominative:"за {{count}} хвилину",singularGenitive:"за {{count}} хвилини",pluralGenitive:"за {{count}} хвилин"}}),aboutXHours:i({regular:{singularNominative:"близько {{count}} години",singularGenitive:"близько {{count}} годин",pluralGenitive:"близько {{count}} годин"},future:{singularNominative:"приблизно за {{count}} годину",singularGenitive:"приблизно за {{count}} години",pluralGenitive:"приблизно за {{count}} годин"}}),xHours:i({regular:{singularNominative:"{{count}} годину",singularGenitive:"{{count}} години",pluralGenitive:"{{count}} годин"}}),xDays:i({regular:{singularNominative:"{{count}} день",singularGenitive:"{{count}} дня",pluralGenitive:"{{count}} днів"}}),aboutXWeeks:i({regular:{singularNominative:"близько {{count}} тижня",singularGenitive:"близько {{count}} тижнів",pluralGenitive:"близько {{count}} тижнів"},future:{singularNominative:"приблизно за {{count}} тиждень",singularGenitive:"приблизно за {{count}} тижні",pluralGenitive:"приблизно за {{count}} тижні"}}),xWeeks:i({regular:{singularNominative:"{{count}} тиждень",singularGenitive:"{{count}} тижня",pluralGenitive:"{{count}} тижні"}}),aboutXMonths:i({regular:{singularNominative:"близько {{count}} місяця",singularGenitive:"близько {{count}} місяців",pluralGenitive:"близько {{count}} місяців"},future:{singularNominative:"приблизно за {{count}} місяць",singularGenitive:"приблизно за {{count}} місяця",pluralGenitive:"приблизно за {{count}} місяців"}}),xMonths:i({regular:{singularNominative:"{{count}} місяць",singularGenitive:"{{count}} місяця",pluralGenitive:"{{count}} місяців"}}),aboutXYears:i({regular:{singularNominative:"близько {{count}} року",singularGenitive:"близько {{count}} років",pluralGenitive:"близько {{count}} років"},future:{singularNominative:"приблизно за {{count}} рік",singularGenitive:"приблизно за {{count}} роки",pluralGenitive:"приблизно за {{count}} років"}}),xYears:i({regular:{singularNominative:"{{count}} рік",singularGenitive:"{{count}} роки",pluralGenitive:"{{count}} років"}}),overXYears:i({regular:{singularNominative:"більше {{count}} року",singularGenitive:"більше {{count}} років",pluralGenitive:"більше {{count}} років"},future:{singularNominative:"більше, ніж за {{count}} рік",singularGenitive:"більше, ніж за {{count}} роки",pluralGenitive:"більше, ніж за {{count}} років"}}),almostXYears:i({regular:{singularNominative:"майже {{count}} рік",singularGenitive:"майже {{count}} роки",pluralGenitive:"майже {{count}} років"},future:{singularNominative:"майже за {{count}} рік",singularGenitive:"майже за {{count}} роки",pluralGenitive:"майже за {{count}} років"}})}},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE, do MMMM y 'р.'",long:"do MMMM y 'р.'",medium:"d MMM y 'р.'",short:"dd.MM.y"},r={full:"H:mm:ss zzzz",long:"H:mm:ss z",medium:"H:mm:ss",short:"H:mm"},o={full:"{{date}} 'о' {{time}}",long:"{{date}} 'о' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e){var t=s[e];switch(e){case 0:case 3:case 5:case 6:return"'у минулу "+t+" о' p";case 1:case 2:case 4:return"'у минулий "+t+" о' p"}}function i(e){return"'у "+s[e]+" о' p"}function r(e){var t=s[e];switch(e){case 0:case 3:case 5:case 6:return"'у наступну "+t+" о' p";case 1:case 2:case 4:return"'у наступний "+t+" о' p"}}function o(e,t,n,a){var i=d[e];return"function"==typeof i?i(t,n,a):i}t.a=o;var u=n(13),s=["неділю","понеділок","вівторок","середу","четвер","п’ятницю","суботу"],d={lastWeek:function(e,t,n){var r=e.getUTCDay();return u.a(e,t,n)?i(r):a(r)},yesterday:"'вчора о' p",today:"'сьогодні о' p",tomorrow:"'завтра о' p",nextWeek:function(e,t,n){var a=e.getUTCDay();return u.a(e,t,n)?i(a):r(a)},other:"P"}},function(e,t,n){"use strict";function a(e,t){var n,a=t||{},i=String(a.unit);return n="date"===i?3===e||23===e?"-є":"-е":"minute"===i||"second"===i||"hour"===i?"-а":"-й",e+n}var i=n(3),r={narrow:["до н.е.","н.е."],abbreviated:["до н. е.","н. е."],wide:["до нашої ери","нашої ери"]},o={narrow:["1","2","3","4"],abbreviated:["1-й кв.","2-й кв.","3-й кв.","4-й кв."],wide:["1-й квартал","2-й квартал","3-й квартал","4-й квартал"]},u={narrow:["С","Л","Б","К","Т","Ч","Л","С","В","Ж","Л","Г"],abbreviated:["січ.","лют.","берез.","квіт.","трав.","черв.","лип.","серп.","верес.","жовт.","листоп.","груд."],wide:["січень","лютий","березень","квітень","травень","червень","липень","серпень","вересень","жовтень","листопад","грудень"]},s={narrow:["С","Л","Б","К","Т","Ч","Л","С","В","Ж","Л","Г"],abbreviated:["січ.","лют.","берез.","квіт.","трав.","черв.","лип.","серп.","верес.","жовт.","листоп.","груд."],wide:["січня","лютого","березня","квітня","травня","червня","липня","серпня","вересня","жовтня","листопада","грудня"]},d={narrow:["Н","П","В","С","Ч","П","С"],short:["нд","пн","вт","ср","чт","пт","сб"],abbreviated:["нед","пон","вів","сер","чтв","птн","суб"],wide:["неділя","понеділок","вівторок","середа","четвер","п’ятниця","субота"]},c={narrow:{am:"ДП",pm:"ПП",midnight:"півн.",noon:"пол.",morning:"ранок",afternoon:"день",evening:"веч.",night:"ніч"},abbreviated:{am:"ДП",pm:"ПП",midnight:"півн.",noon:"пол.",morning:"ранок",afternoon:"день",evening:"веч.",night:"ніч"},wide:{am:"ДП",pm:"ПП",midnight:"північ",noon:"полудень",morning:"ранок",afternoon:"день",evening:"вечір",night:"ніч"}},l={narrow:{am:"ДП",pm:"ПП",midnight:"півн.",noon:"пол.",morning:"ранку",afternoon:"дня",evening:"веч.",night:"ночі"},abbreviated:{am:"ДП",pm:"ПП",midnight:"півн.",noon:"пол.",morning:"ранку",afternoon:"дня",evening:"веч.",night:"ночі"},wide:{am:"ДП",pm:"ПП",midnight:"північ",noon:"полудень",morning:"ранку",afternoon:"дня",evening:"веч.",night:"ночі"}},m={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:u,defaultWidth:"wide",formattingValues:s,defaultFormattingWidth:"wide"}),day:i.a({values:d,defaultWidth:"wide"}),dayPeriod:i.a({values:c,defaultWidth:"any",formattingValues:l,defaultFormattingWidth:"wide"})};t.a=m},function(e,t,n){"use strict";var a=n(4),i=n(5),r=/^(\d+)(-?(е|й|є|а|я))?/i,o=/\d+/i,u={narrow:/^((до )?н\.?\s?е\.?)/i,abbreviated:/^((до )?н\.?\s?е\.?)/i,wide:/^(до нашої ери|нашої ери|наша ера)/i},s={any:[/^д/i,/^н/i]},d={narrow:/^[1234]/i,abbreviated:/^[1234](-?[иі]?й?)? кв.?/i,wide:/^[1234](-?[иі]?й?)? квартал/i},c={any:[/1/i,/2/i,/3/i,/4/i]},l={narrow:/^[слбктчвжг]/i,abbreviated:/^(січ|лют|бер|берез|кві|трав?|чер|лип|сер|вер|жов|лис(топ)?|груд)\.?/i,wide:/^(січень|січня|лютий|лютого|березень|березня|квітень|квітня|травень|травня|липень|липня|серпень|серпня|вересень|вересня|жовтень|жовтня|листопада?|грудень|грудня)/i},m={narrow:[/^с/i,/^л/i,/^б/i,/^к/i,/^т/i,/^ч/i,/^л/i,/^с/i,/^в/i,/^ж/i,/^л/i,/^г/i],any:[/^сі/i,/^лю/i,/^б/i,/^к/i,/^т/i,/^ч/i,/^лип/i,/^се/i,/^в/i,/^ж/i,/^лис/i,/^г/i]},f={narrow:/^[нпвсч]/i,short:/^(нд|пн|вт|ср|чт|пт|сб)\.?/i,abbreviated:/^(нед|пон|вів|сер|че?тв|птн?|суб)\.?/i,wide:/^(неділ[яі]|понеділ[ок][ка]|вівтор[ок][ка]|серед[аи]|четвер(га)?|п\W*?ятниц[яі]|субот[аи])/i},h={narrow:[/^н/i,/^п/i,/^в/i,/^с/i,/^ч/i,/^п/i,/^с/i],any:[/^н/i,/^п[он]/i,/^в/i,/^с[ер]/i,/^ч/i,/^п\W*?[ят]/i,/^с[уб]/i]},p={narrow:/^([дп]п|півн\.?|пол\.?|ранок|ранку|день|дня|веч\.?|ніч|ночі)/i,abbreviated:/^([дп]п|півн\.?|пол\.?|ранок|ранку|день|дня|веч\.?|ніч|ночі)/i,wide:/^([дп]п|північ|полудень|ранок|ранку|день|дня|вечір|вечора|ніч|ночі)/i},g={any:{am:/^дп/i,pm:/^пп/i,midnight:/^півн/i,noon:/^пол/i,morning:/^р/i,afternoon:/^д[ен]/i,evening:/^в/i,night:/^н/i}},v={ordinalNumber:a.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:i.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:i.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:i.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:i.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:i.a({matchPatterns:p,defaultMatchWidth:"wide",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(832),i=n(833),r=n(834),o=n(835),u=n(836),s={code:"uz",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:1}};t.a=s},function(e,t,n){"use strict";function a(e,t,n){n=n||{};var a;return a="string"==typeof i[e]?i[e]:1===t?i[e].one:i[e].other.replace("{{count}}",t),n.addSuffix?n.comparison>0?a+" dan keyin":a+" oldin":a}t.a=a;var i={lessThanXSeconds:{one:"sekunddan kam",other:"{{count}} sekunddan kam"},xSeconds:{one:"1 sekund",other:"{{count}} sekund"},halfAMinute:"yarim minut",lessThanXMinutes:{one:"bir minutdan kam",other:"{{count}} minutdan kam"},xMinutes:{one:"1 minut",other:"{{count}} minut"},aboutXHours:{one:"tahminan 1 soat",other:"tahminan {{count}} soat"},xHours:{one:"1 soat",other:"{{count}} soat"},xDays:{one:"1 kun",other:"{{count}} kun"},aboutXWeeks:{one:"tahminan 1 hafta",other:"tahminan {{count}} hafta"},xWeeks:{one:"1 hafta",other:"{{count}} hafta"},aboutXMonths:{one:"tahminan 1 oy",other:"tahminan {{count}} oy"},xMonths:{one:"1 oy",other:"{{count}} oy"},aboutXYears:{one:"tahminan 1 yil",other:"tahminan {{count}} yil"},xYears:{one:"1 yil",other:"{{count}} yil"},overXYears:{one:"1 yildan ko'p",other:"{{count}} yildan ko'p"},almostXYears:{one:"deyarli 1 yil",other:"deyarli {{count}} yil"}}},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE, do MMMM, y",long:"do MMMM, y",medium:"d MMM, y",short:"dd/MM/yyyy"},r={full:"h:mm:ss zzzz",long:"h:mm:ss z",medium:"h:mm:ss",short:"h:mm"},o={any:"{{date}}, {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"any"})};t.a=u},function(e,t,n){"use strict";function a(e,t,n,a){return i[e]}t.a=a;var i={lastWeek:"'oldingi' eeee p 'da'",yesterday:"'kecha' p 'da'",today:"'bugun' p 'da'",tomorrow:"'ertaga' p 'da'",nextWeek:"eeee p 'da'",other:"P"}},function(e,t,n){"use strict";function a(e,t){return Number(e)}var i=n(3),r={narrow:["M.A","M."],abbreviated:["M.A","M."],wide:["Miloddan Avvalgi","Milodiy"]},o={narrow:["1","2","3","4"],abbreviated:["CH.1","CH.2","CH.3","CH.4"],wide:["1-chi chorak","2-chi chorak","3-chi chorak","4-chi chorak"]},u={narrow:["Y","F","M","A","M","I","I","A","S","O","N","D"],abbreviated:["Yan","Fev","Mar","Apr","May","Iyun","Iyul","Avg","Sen","Okt","Noy","Dek"],wide:["Yanvar","Fevral","Mart","Aprel","May","Iyun","Iyul","Avgust","Sentabr","Oktabr","Noyabr","Dekabr"]},s={narrow:["Y","D","S","CH","P","J","SH"],short:["Ya","Du","Se","Cho","Pa","Ju","Sha"],abbreviated:["Yak","Dush","Sesh","Chor","Pay","Jum","Shan"],wide:["Yakshanba","Dushanba","Seshanba","Chorshanba","Payshanba","Juma","Shanba"]},d={narrow:{am:"a",pm:"p",midnight:"y.t",noon:"p.",morning:"ertalab",afternoon:"tushdan keyin",evening:"kechqurun",night:"tun"},abbreviated:{am:"AM",pm:"PM",midnight:"yarim tun",noon:"peshin",morning:"ertalab",afternoon:"tushdan keyin",evening:"kechqurun",night:"tun"},wide:{am:"a.m.",pm:"p.m.",midnight:"yarim tun",noon:"peshin",morning:"ertalab",afternoon:"tushdan keyin",evening:"kechqurun",night:"tun"}},c={narrow:{am:"a",pm:"p",midnight:"y.t",noon:"p.",morning:"ertalab",afternoon:"tushdan keyin",evening:"kechqurun",night:"tun"},abbreviated:{am:"AM",pm:"PM",midnight:"yarim tun",noon:"peshin",morning:"ertalab",afternoon:"tushdan keyin",evening:"kechqurun",night:"tun"},wide:{am:"a.m.",pm:"p.m.",midnight:"yarim tun",noon:"peshin",morning:"ertalab",afternoon:"tushdan keyin",evening:"kechqurun",night:"tun"}},l={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:u,defaultWidth:"wide"}),day:i.a({values:s,defaultWidth:"wide"}),dayPeriod:i.a({values:d,defaultWidth:"wide",formattingValues:c,defaultFormattingWidth:"wide"})};t.a=l},function(e,t,n){"use strict";var a=n(4),i=n(5),r=/^(\d+)(chi)?/i,o=/\d+/i,u={narrow:/^(m\.a|m\.)/i,abbreviated:/^(m\.a\.?\s?m\.?)/i,wide:/^(miloddan avval|miloddan keyin)/i},s={any:[/^b/i,/^(a|c)/i]},d={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](chi)? chorak/i},c={any:[/1/i,/2/i,/3/i,/4/i]},l={narrow:/^[yfmasond]/i,abbreviated:/^(yan|fev|mar|apr|may|iyun|iyul|avg|sen|okt|noy|dek)/i,wide:/^(yanvar|fevral|mart|aprel|may|iyun|iyul|avgust|sentabr|oktabr|noyabr|dekabr)/i},m={narrow:[/^y/i,/^f/i,/^m/i,/^a/i,/^m/i,/^i/i,/^i/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ya/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^iyun/i,/^iyul/i,/^av/i,/^s/i,/^o/i,/^n/i,/^d/i]},f={narrow:/^[ydschj]/i,short:/^(ya|du|se|cho|pa|ju|sha)/i,abbreviated:/^(yak|dush|sesh|chor|pay|jum|shan)/i,wide:/^(yakshanba|dushanba|seshanba|chorshanba|payshanba|juma|shanba)/i},h={narrow:[/^y/i,/^d/i,/^s/i,/^ch/i,/^p/i,/^j/i,/^sh/i],any:[/^ya/i,/^d/i,/^se/i,/^ch/i,/^p/i,/^j/i,/^sh/i]},p={narrow:/^(a|p|y\.t|p| (ertalab|tushdan keyin|kechqurun|tun))/i,any:/^([ap]\.?\s?m\.?|yarim tun|peshin| (ertalab|tushdan keyin|kechqurun|tun))/i},g={any:{am:/^a/i,pm:/^p/i,midnight:/^y\.t/i,noon:/^pe/i,morning:/ertalab/i,afternoon:/tushdan keyin/i,evening:/kechqurun/i,night:/tun/i}},v={ordinalNumber:a.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:i.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:i.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:i.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:i.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:i.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(838),i=n(839),r=n(840),o=n(841),u=n(842),s={code:"vi",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:1}};t.a=s},function(e,t,n){"use strict";function a(e,t,n){n=n||{};var a;return a="string"==typeof i[e]?i[e]:1===t?i[e].one:i[e].other.replace("{{count}}",t),n.addSuffix?n.comparison>0?a+" nữa":a+" trước":a}t.a=a;var i={lessThanXSeconds:{one:"dưới 1 giây",other:"dưới {{count}} giây"},xSeconds:{one:"1 giây",other:"{{count}} giây"},halfAMinute:"nửa phút",lessThanXMinutes:{one:"dưới 1 phút",other:"dưới {{count}} phút"},xMinutes:{one:"1 phút",other:"{{count}} phút"},aboutXHours:{one:"khoảng 1 giờ",other:"khoảng {{count}} giờ"},xHours:{one:"1 giờ",other:"{{count}} giờ"},xDays:{one:"1 ngày",other:"{{count}} ngày"},aboutXWeeks:{one:"khoảng 1 tuần",other:"khoảng {{count}} tuần"},xWeeks:{one:"1 tuần",other:"{{count}} tuần"},aboutXMonths:{one:"khoảng 1 tháng",other:"khoảng {{count}} tháng"},xMonths:{one:"1 tháng",other:"{{count}} tháng"},aboutXYears:{one:"khoảng 1 năm",other:"khoảng {{count}} năm"},xYears:{one:"1 năm",other:"{{count}} năm"},overXYears:{one:"hơn 1 năm",other:"hơn {{count}} năm"},almostXYears:{one:"gần 1 năm",other:"gần {{count}} năm"}}},function(e,t,n){"use strict";var a=n(2),i={full:"EEEE, 'ngày' d MMMM 'năm' y",long:"'ngày' d MMMM 'năm' y",medium:"d MMM 'năm' y",short:"dd/MM/y"},r={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},o={full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e,t,n,a){return i[e]}t.a=a;var i={lastWeek:"eeee 'tuần trước vào lúc' p",yesterday:"'hôm qua vào lúc' p",today:"'hôm nay vào lúc' p",tomorrow:"'ngày mai vào lúc' p",nextWeek:"eeee 'tới vào lúc' p",other:"P"}},function(e,t,n){"use strict";function a(e,t){var n=t||{},a=String(n.unit),i=parseInt(e,10);if("quarter"===a)switch(i){case 1:return"I";case 2:return"II";case 3:return"III";case 4:return"IV"}else if("day"===a)switch(i){case 1:return"thứ 2";case 2:return"thứ 3";case 3:return"thứ 4";case 4:return"thứ 5";case 5:return"thứ 6";case 6:return"thứ 7";case 7:return"chủ nhật"}else{if("week"===a)return 1===i?"thứ nhất":"thứ "+i;if("dayOfYear"===a)return 1===i?"đầu tiên":"thứ "+i}return i}var i=n(3),r={narrow:["TCN","SCN"],abbreviated:["trước CN","sau CN"],wide:["trước Công Nguyên","sau Công Nguyên"]},o={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["Quý 1","Quý 2","Quý 3","Quý 4"]},u={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["quý I","quý II","quý III","quý IV"]},s={narrow:["1","2","3","4","5","6","7","8","9","10","11","12"],abbreviated:["Thg 1","Thg 2","Thg 3","Thg 4","Thg 5","Thg 6","Thg 7","Thg 8","Thg 9","Thg 10","Thg 11","Thg 12"],wide:["Tháng Một","Tháng Hai","Tháng Ba","Tháng Tư","Tháng Năm","Tháng Sáu","Tháng Bảy","Tháng Tám","Tháng Chín","Tháng Mười","Tháng Mười Một","Tháng Mười Hai"]},d={narrow:["01","02","03","04","05","06","07","08","09","10","11","12"],abbreviated:["thg 1","thg 2","thg 3","thg 4","thg 5","thg 6","thg 7","thg 8","thg 9","thg 10","thg 11","thg 12"],wide:["tháng 01","tháng 02","tháng 03","tháng 04","tháng 05","tháng 06","tháng 07","tháng 08","tháng 09","tháng 10","tháng 11","tháng 12"]},c={narrow:["CN","T2","T3","T4","T5","T6","T7"],short:["CN","Th 2","Th 3","Th 4","Th 5","Th 6","Th 7"],abbreviated:["CN","Thứ 2","Thứ 3","Thứ 4","Thứ 5","Thứ 6","Thứ 7"],wide:["Chủ Nhật","Thứ Hai","Thứ Ba","Thứ Tư","Thứ Năm","Thứ Sáu","Thứ Bảy"]},l={narrow:{am:"am",pm:"pm",midnight:"nửa đêm",noon:"tr",morning:"sg",afternoon:"ch",evening:"tối",night:"đêm"},abbreviated:{am:"AM",pm:"PM",midnight:"nửa đêm",noon:"trưa",morning:"sáng",afternoon:"chiều",evening:"tối",night:"đêm"},wide:{am:"SA",pm:"CH",midnight:"nửa đêm",noon:"trưa",morning:"sáng",afternoon:"chiều",evening:"tối",night:"đêm"}},m={narrow:{am:"am",pm:"pm",midnight:"nửa đêm",noon:"tr",morning:"sg",afternoon:"ch",evening:"tối",night:"đêm"},abbreviated:{am:"AM",pm:"PM",midnight:"nửa đêm",noon:"trưa",morning:"sáng",afternoon:"chiều",evening:"tối",night:"đêm"},wide:{am:"SA",pm:"CH",midnight:"nửa đêm",noon:"giữa trưa",morning:"vào buổi sáng",afternoon:"vào buổi chiều",evening:"vào buổi tối",night:"vào ban đêm"}},f={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",formattingValues:u,defaultFormattingWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:s,defaultWidth:"wide",formattingValues:d,defaultFormattingWidth:"wide"}),day:i.a({values:c,defaultWidth:"wide"}),dayPeriod:i.a({values:l,defaultWidth:"wide",formattingValues:m,defaultFormattingWidth:"wide"})};t.a=f},function(e,t,n){"use strict";var a=n(4),i=n(5),r=/^(\d+)/i,o=/\d+/i,u={narrow:/^(tcn|scn)/i,abbreviated:/^(trước CN|sau CN)/i,wide:/^(trước Công Nguyên|sau Công Nguyên)/i},s={any:[/^t/i,/^s/i]},d={narrow:/^([1234]|i{1,3}v?)/i,abbreviated:/^q([1234]|i{1,3}v?)/i,wide:/^quý ([1234]|i{1,3}v?)/i},c={any:[/(1|i)$/i,/(2|ii)$/i,/(3|iii)$/i,/(4|iv)$/i]},l={narrow:/^(0?[2-9]|10|11|12|0?1)/i,abbreviated:/^thg[ _]?(0?[1-9](?!\d)|10|11|12)/i,wide:/^tháng ?(Một|Hai|Ba|Tư|Năm|Sáu|Bảy|Tám|Chín|Mười|Mười ?Một|Mười ?Hai|0?[1-9](?!\d)|10|11|12)/i},m={narrow:[/0?1$/i,/0?2/i,/3/,/4/,/5/,/6/,/7/,/8/,/9/,/10/,/11/,/12/],abbreviated:[/^thg[ _]?0?1(?!\d)/i,/^thg[ _]?0?2/i,/^thg[ _]?0?3/i,/^thg[ _]?0?4/i,/^thg[ _]?0?5/i,/^thg[ _]?0?6/i,/^thg[ _]?0?7/i,/^thg[ _]?0?8/i,/^thg[ _]?0?9/i,/^thg[ _]?10/i,/^thg[ _]?11/i,/^thg[ _]?12/i],wide:[/^tháng ?(Một|0?1(?!\d))/i,/^tháng ?(Hai|0?2)/i,/^tháng ?(Ba|0?3)/i,/^tháng ?(Tư|0?4)/i,/^tháng ?(Năm|0?5)/i,/^tháng ?(Sáu|0?6)/i,/^tháng ?(Bảy|0?7)/i,/^tháng ?(Tám|0?8)/i,/^tháng ?(Chín|0?9)/i,/^tháng ?(Mười|10)/i,/^tháng ?(Mười ?Một|11)/i,/^tháng ?(Mười ?Hai|12)/i]},f={narrow:/^(CN|T2|T3|T4|T5|T6|T7)/i,short:/^(CN|Th ?2|Th ?3|Th ?4|Th ?5|Th ?6|Th ?7)/i,abbreviated:/^(CN|Th ?2|Th ?3|Th ?4|Th ?5|Th ?6|Th ?7)/i,wide:/^(Chủ ?Nhật|Chúa ?Nhật|thứ ?Hai|thứ ?Ba|thứ ?Tư|thứ ?Năm|thứ ?Sáu|thứ ?Bảy)/i},h={narrow:[/CN/i,/2/i,/3/i,/4/i,/5/i,/6/i,/7/i],short:[/CN/i,/2/i,/3/i,/4/i,/5/i,/6/i,/7/i],abbreviated:[/CN/i,/2/i,/3/i,/4/i,/5/i,/6/i,/7/i],wide:[/(Chủ|Chúa) ?Nhật/i,/Hai/i,/Ba/i,/Tư/i,/Năm/i,/Sáu/i,/Bảy/i]},p={narrow:/^(a|p|nửa đêm|trưa|(giờ) (sáng|chiều|tối|đêm))/i,abbreviated:/^(am|pm|nửa đêm|trưa|(giờ) (sáng|chiều|tối|đêm))/i,wide:/^(ch[^i]*|sa|nửa đêm|trưa|(giờ) (sáng|chiều|tối|đêm))/i},g={any:{am:/^(a|sa)/i,pm:/^(p|ch[^i]*)/i,midnight:/nửa đêm/i,noon:/trưa/i,morning:/sáng/i,afternoon:/chiều/i,evening:/tối/i,night:/^đêm/i}},v={ordinalNumber:a.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:i.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:i.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:i.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:i.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:i.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(844),i=n(845),r=n(846),o=n(847),u=n(848),s={code:"zh-CN",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:4}};t.a=s},function(e,t,n){"use strict";function a(e,t,n){n=n||{};var a;return a="string"==typeof i[e]?i[e]:1===t?i[e].one:i[e].other.replace("{{count}}",t),n.addSuffix?n.comparison>0?a+"内":a+"前":a}t.a=a;var i={lessThanXSeconds:{one:"不到 1 秒",other:"不到 {{count}} 秒"},xSeconds:{one:"1 秒",other:"{{count}} 秒"},halfAMinute:"半分钟",lessThanXMinutes:{one:"不到 1 分钟",other:"不到 {{count}} 分钟"},xMinutes:{one:"1 分钟",other:"{{count}} 分钟"},xHours:{one:"1 小时",other:"{{count}} 小时"},aboutXHours:{one:"大约 1 小时",other:"大约 {{count}} 小时"},xDays:{one:"1 天",other:"{{count}} 天"},aboutXWeeks:{one:"大约 1 个星期",other:"大约 {{count}} 个星期"},xWeeks:{one:"1 个星期",other:"{{count}} 个星期"},aboutXMonths:{one:"大约 1 个月",other:"大约 {{count}} 个月"},xMonths:{one:"1 个月",other:"{{count}} 个月"},aboutXYears:{one:"大约 1 年",other:"大约 {{count}} 年"},xYears:{one:"1 年",other:"{{count}} 年"},overXYears:{one:"超过 1 年",other:"超过 {{count}} 年"},almostXYears:{one:"将近 1 年",other:"将近 {{count}} 年"}}},function(e,t,n){"use strict";var a=n(2),i={full:"y'年'M'月'd'日' EEEE",long:"y'年'M'月'd'日'",medium:"yyyy-MM-dd",short:"yy-MM-dd"},r={full:"zzzz a h:mm:ss",long:"z a h:mm:ss",medium:"a h:mm:ss",short:"a h:mm"},o={full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e,t,n,a){return r.a(e,t,n)?a:e.getTime()>t.getTime()?"'下个'"+a:"'上个'"+a}function i(e,t,n,a){var i=o[e];return"function"==typeof i?i(t,n,a,"eeee p"):i}t.a=i;var r=n(13),o={lastWeek:a,yesterday:"'昨天' p",today:"'今天' p",tomorrow:"'明天' p",nextWeek:a,other:"PP p"}},function(e,t,n){"use strict";function a(e,t){var n=Number(e),a=t||{};switch(String(a.unit)){case"date":return n.toString()+"日";case"hour":return n.toString()+"时";case"minute":return n.toString()+"分";case"second":return n.toString()+"秒";default:return"第 "+n.toString()}}var i=n(3),r={narrow:["前","公元"],abbreviated:["前","公元"],wide:["公元前","公元"]},o={narrow:["1","2","3","4"],abbreviated:["第一刻","第二刻","第三刻","第四刻"],wide:["第一刻钟","第二刻钟","第三刻钟","第四刻钟"]},u={narrow:["一","二","三","四","五","六","七","八","九","十","十一","十二"],abbreviated:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],wide:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},s={narrow:["日","一","二","三","四","五","六"],short:["日","一","二","三","四","五","六"],abbreviated:["周日","周一","周二","周三","周四","周五","周六"],wide:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]},d={narrow:{am:"上",pm:"下",midnight:"凌晨",noon:"午",morning:"早",afternoon:"下午",evening:"晚",night:"夜"},abbreviated:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"},wide:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"}},c={narrow:{am:"上",pm:"下",midnight:"凌晨",noon:"午",morning:"早",afternoon:"下午",evening:"晚",night:"夜"},abbreviated:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"},wide:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"}},l={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:u,defaultWidth:"wide"}),day:i.a({values:s,defaultWidth:"wide"}),dayPeriod:i.a({values:d,defaultWidth:"wide",formattingValues:c,defaultFormattingWidth:"wide"})};t.a=l},function(e,t,n){"use strict";var a=n(4),i=n(5),r=/^(第\s*)?\d+(日|时|分|秒)?/i,o=/\d+/i,u={narrow:/^(前)/i,abbreviated:/^(前)/i,wide:/^(公元前|公元)/i},s={any:[/^(前)/i,/^(公元)/i]},d={narrow:/^[1234]/i,abbreviated:/^第[一二三四]刻/i,wide:/^第[一二三四]刻钟/i},c={any:[/(1|一)/i,/(2|二)/i,/(3|三)/i,/(4|四)/i]},l={narrow:/^(一|二|三|四|五|六|七|八|九|十[二一])/i,abbreviated:/^(一|二|三|四|五|六|七|八|九|十[二一]|\d|1[12])月/i,wide:/^(一|二|三|四|五|六|七|八|九|十[二一])月/i},m={narrow:[/^一/i,/^二/i,/^三/i,/^四/i,/^五/i,/^六/i,/^七/i,/^八/i,/^九/i,/^十(?!(一|二))/i,/^十一/i,/^十二/i],any:[/^一|1/i,/^二|2/i,/^三|3/i,/^四|4/i,/^五|5/i,/^六|6/i,/^七|7/i,/^八|8/i,/^九|9/i,/^十(?!(一|二))|10/i,/^十一|11/i,/^十二|12/i]},f={narrow:/^[一二三四五六日]/i,short:/^[一二三四五六日]/i,abbreviated:/^周[一二三四五六日]/i,wide:/^星期[一二三四五六日]/i},h={any:[/日/i,/一/i,/二/i,/三/i,/四/i,/五/i,/六/i]},p={any:/^(上午?|下午?|午夜|[中正]午|早上?|下午|晚上?|凌晨|)/i},g={any:{am:/^上午?/i,pm:/^下午?/i,midnight:/^午夜/i,noon:/^[中正]午/i,morning:/^早上/i,afternoon:/^下午/i,evening:/^晚上?/i,night:/^凌晨/i}},v={ordinalNumber:a.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:i.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:i.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:i.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:i.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:i.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t,n){"use strict";var a=n(850),i=n(851),r=n(852),o=n(853),u=n(854),s={code:"zh-TW",formatDistance:a.a,formatLong:i.a,formatRelative:r.a,localize:o.a,match:u.a,options:{weekStartsOn:1,firstWeekContainsDate:4}};t.a=s},function(e,t,n){"use strict";function a(e,t,n){n=n||{};var a;return a="string"==typeof i[e]?i[e]:1===t?i[e].one:i[e].other.replace("{{count}}",t),n.addSuffix?n.comparison>0?a+"內":a+"前":a}t.a=a;var i={lessThanXSeconds:{one:"少於 1 秒",other:"少於 {{count}} 秒"},xSeconds:{one:"1 秒",other:"{{count}} 秒"},halfAMinute:"半分鐘",lessThanXMinutes:{one:"少於 1 分鐘",other:"少於 {{count}} 分鐘"},xMinutes:{one:"1 分鐘",other:"{{count}} 分鐘"},xHours:{one:"1 小時",other:"{{count}} 小時"},aboutXHours:{one:"大約 1 小時",other:"大約 {{count}} 小時"},xDays:{one:"1 天",other:"{{count}} 天"},aboutXWeeks:{one:"大約 1 个星期",other:"大約 {{count}} 个星期"},xWeeks:{one:"1 个星期",other:"{{count}} 个星期"},aboutXMonths:{one:"大約 1 個月",other:"大約 {{count}} 個月"},xMonths:{one:"1 個月",other:"{{count}} 個月"},aboutXYears:{one:"大約 1 年",other:"大約 {{count}} 年"},xYears:{one:"1 年",other:"{{count}} 年"},overXYears:{one:"超過 1 年",other:"超過 {{count}} 年"},almostXYears:{one:"將近 1 年",other:"將近 {{count}} 年"}}},function(e,t,n){"use strict";var a=n(2),i={full:"y'年'M'月'd'日' EEEE",long:"y'年'M'月'd'日'",medium:"yyyy-MM-dd",short:"yy-MM-dd"},r={full:"zzzz a h:mm:ss",long:"z a h:mm:ss",medium:"a h:mm:ss",short:"a h:mm"},o={full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},u={date:a.a({formats:i,defaultWidth:"full"}),time:a.a({formats:r,defaultWidth:"full"}),dateTime:a.a({formats:o,defaultWidth:"full"})};t.a=u},function(e,t,n){"use strict";function a(e,t,n,a){return i[e]}t.a=a;var i={lastWeek:"'上個' eeee p",yesterday:"'昨天' p",today:"'今天' p",tomorrow:"'明天' p",nextWeek:"'下個' eeee p",other:"P"}},function(e,t,n){"use strict";function a(e,t){var n=Number(e),a=t||{};switch(String(a.unit)){case"date":return n.toString()+"日";case"hour":return n.toString()+"時";case"minute":return n.toString()+"分";case"second":return n.toString()+"秒";default:return"第 "+n.toString()}}var i=n(3),r={narrow:["前","公元"],abbreviated:["前","公元"],wide:["公元前","公元"]},o={narrow:["1","2","3","4"],abbreviated:["第一刻","第二刻","第三刻","第四刻"],wide:["第一刻鐘","第二刻鐘","第三刻鐘","第四刻鐘"]},u={narrow:["一","二","三","四","五","六","七","八","九","十","十一","十二"],abbreviated:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],wide:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},s={narrow:["日","一","二","三","四","五","六"],short:["日","一","二","三","四","五","六"],abbreviated:["週日","週一","週二","週三","週四","週五","週六"],wide:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]},d={narrow:{am:"上",pm:"下",midnight:"凌晨",noon:"午",morning:"早",afternoon:"下午",evening:"晚",night:"夜"},abbreviated:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜間"},wide:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜間"}},c={narrow:{am:"上",pm:"下",midnight:"凌晨",noon:"午",morning:"早",afternoon:"下午",evening:"晚",night:"夜"},abbreviated:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜間"},wide:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜間"}},l={ordinalNumber:a,era:i.a({values:r,defaultWidth:"wide"}),quarter:i.a({values:o,defaultWidth:"wide",argumentCallback:function(e){return Number(e)-1}}),month:i.a({values:u,defaultWidth:"wide"}),day:i.a({values:s,defaultWidth:"wide"}),dayPeriod:i.a({values:d,defaultWidth:"wide",formattingValues:c,defaultFormattingWidth:"wide"})};t.a=l},function(e,t,n){"use strict";var a=n(4),i=n(5),r=/^(第\s*)?\d+(日|時|分|秒)?/i,o=/\d+/i,u={narrow:/^(前)/i,abbreviated:/^(前)/i,wide:/^(公元前|公元)/i},s={any:[/^(前)/i,/^(公元)/i]},d={narrow:/^[1234]/i,abbreviated:/^第[一二三四]刻/i,wide:/^第[一二三四]刻鐘/i},c={any:[/(1|一)/i,/(2|二)/i,/(3|三)/i,/(4|四)/i]},l={narrow:/^(一|二|三|四|五|六|七|八|九|十[二一])/i,abbreviated:/^(一|二|三|四|五|六|七|八|九|十[二一]|\d|1[12])月/i,wide:/^(一|二|三|四|五|六|七|八|九|十[二一])月/i},m={narrow:[/^一/i,/^二/i,/^三/i,/^四/i,/^五/i,/^六/i,/^七/i,/^八/i,/^九/i,/^十(?!(一|二))/i,/^十一/i,/^十二/i],any:[/^一|1/i,/^二|2/i,/^三|3/i,/^四|4/i,/^五|5/i,/^六|6/i,/^七|7/i,/^八|8/i,/^九|9/i,/^十(?!(一|二))|10/i,/^十一|11/i,/^十二|12/i]},f={narrow:/^[一二三四五六日]/i,short:/^[一二三四五六日]/i,abbreviated:/^週[一二三四五六日]/i,wide:/^星期[一二三四五六日]/i},h={any:[/日/i,/一/i,/二/i,/三/i,/四/i,/五/i,/六/i]},p={any:/^(上午?|下午?|午夜|[中正]午|早上?|下午|晚上?|凌晨)/i},g={any:{am:/^上午?/i,pm:/^下午?/i,midnight:/^午夜/i,noon:/^[中正]午/i,morning:/^早上/i,afternoon:/^下午/i,evening:/^晚上?/i,night:/^凌晨/i}},v={ordinalNumber:a.a({matchPattern:r,parsePattern:o,valueCallback:function(e){return parseInt(e,10)}}),era:i.a({matchPatterns:u,defaultMatchWidth:"wide",parsePatterns:s,defaultParseWidth:"any"}),quarter:i.a({matchPatterns:d,defaultMatchWidth:"wide",parsePatterns:c,defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:i.a({matchPatterns:l,defaultMatchWidth:"wide",parsePatterns:m,defaultParseWidth:"any"}),day:i.a({matchPatterns:f,defaultMatchWidth:"wide",parsePatterns:h,defaultParseWidth:"any"}),dayPeriod:i.a({matchPatterns:p,defaultMatchWidth:"any",parsePatterns:g,defaultParseWidth:"any"})};t.a=v},function(e,t){},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.GT_ACCESS_TOKEN="GT_ACCESS_TOKEN",t.GT_VERSION="1.7.2",t.GT_COMMENT="GT_COMMENT"},function(e,t,n){"use strict";function a(e){var t=this,n=this.options,a=n.owner,i=n.repo,s=n.perPage,d=n.pagerDirection,c=n.defaultAuthor,l=this.state,m=l.cursor,f=l.comments;return o.axiosGithub.post("/graphql",u({owner:a,repo:i,id:e.number,pageSize:s,cursor:m},d),{headers:{Authorization:"bearer "+this.accessToken}}).then(function(n){var o=n.data.data.repository.issue.comments,u=o.nodes.map(function(t){var n=t.author||c;return{id:t.databaseId,gId:t.id,user:{avatar_url:n.avatarUrl,login:n.login,html_url:n.url},created_at:t.createdAt,body_html:t.bodyHTML,body:t.body,html_url:"https://github.com/"+a+"/"+i+"/issues/"+e.number+"#issuecomment-"+t.databaseId,reactions:t.reactions}}),s=void 0;s="last"===d?[].concat((0,r.default)(u),(0,r.default)(f)):[].concat((0,r.default)(f),(0,r.default)(u));var l=!1===o.pageInfo.hasPreviousPage||!1===o.pageInfo.hasNextPage;return t.setState({comments:s,isLoadOver:l,cursor:o.pageInfo.startCursor||o.pageInfo.endCursor}),s})}Object.defineProperty(t,"__esModule",{value:!0});var i=n(858),r=function(e){return e&&e.__esModule?e:{default:e}}(i),o=n(121),u=function(e,t){var n="last"===t?"before":"after",a="\n query getIssueAndComments(\n $owner: String!,\n $repo: String!,\n $id: Int!,\n $cursor: String,\n $pageSize: Int!\n ) {\n repository(owner: $owner, name: $repo) {\n issue(number: $id) {\n title\n url\n bodyHTML\n createdAt\n comments("+t+": $pageSize, "+n+": $cursor) {\n totalCount\n pageInfo {\n "+("last"===t?"hasPreviousPage":"hasNextPage")+"\n "+("before"===n?"startCursor":"endCursor")+"\n }\n nodes {\n id\n databaseId\n author {\n avatarUrl\n login\n url\n }\n bodyHTML\n body\n createdAt\n reactions(first: 100, content: HEART) {\n totalCount\n viewerHasReacted\n pageInfo{\n hasNextPage\n }\n nodes {\n id\n databaseId\n user {\n login\n }\n }\n }\n }\n }\n }\n }\n }\n ";return null===e.cursor&&delete e.cursor,{operationName:"getIssueAndComments",query:a,variables:e}};t.default=a},function(e,t,n){"use strict";t.__esModule=!0;var a=n(859),i=function(e){return e&&e.__esModule?e:{default:e}}(a);t.default=function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return(0,i.default)(e)}},function(e,t,n){e.exports={default:n(860),__esModule:!0}},function(e,t,n){n(40),n(861),e.exports=n(7).Array.from},function(e,t,n){"use strict";var a=n(29),i=n(11),r=n(33),o=n(107),u=n(108),s=n(72),d=n(862),c=n(77);i(i.S+i.F*!n(113)(function(e){Array.from(e)}),"Array",{from:function(e){var t,n,i,l,m=r(e),f="function"==typeof this?this:Array,h=arguments.length,p=h>1?arguments[1]:void 0,g=void 0!==p,v=0,w=c(m);if(g&&(p=a(p,h>2?arguments[2]:void 0,2)),void 0==w||f==Array&&u(w))for(t=s(m.length),n=new f(t);t>v;v++)d(n,v,g?p(m[v],v):m[v]);else for(l=w.call(m),n=new f;!(i=l.next()).done;v++)d(n,v,g?o(l,p,[i.value,v],!0):i.value);return n.length=v,n}})},function(e,t,n){"use strict";var a=n(16),i=n(39);e.exports=function(e,t,n){t in e?a.f(e,t,i(0,n)):e[t]=n}}])});
//# sourceMappingURL=gitalk.min.js.map \ No newline at end of file
diff --git a/assets/lib/katex/auto-render.min.js b/assets/lib/katex/auto-render.min.js
index 3a6d6639..c169ec63 100755..100644
--- a/assets/lib/katex/auto-render.min.js
+++ b/assets/lib/katex/auto-render.min.js
@@ -1 +1 @@
-!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("katex")):"function"==typeof define&&define.amd?define(["katex"],t):"object"==typeof exports?exports.renderMathInElement=t(require("katex")):e.renderMathInElement=t(e.katex)}("undefined"!=typeof self?self:this,function(e){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=1)}([function(t,r){t.exports=e},function(e,t,r){"use strict";r.r(t);var n=r(0),o=r.n(n),a=function(e,t,r){for(var n=r,o=0,a=e.length;n<t.length;){var i=t[n];if(o<=0&&t.slice(n,n+a)===e)return n;"\\"===i?n++:"{"===i?o++:"}"===i&&o--,n++}return-1},i=function(e,t,r,n){for(var o=[],i=0;i<e.length;i++)if("text"===e[i].type){var l=e[i].data,d=!0,s=0,f=void 0;for(-1!==(f=l.indexOf(t))&&(s=f,o.push({type:"text",data:l.slice(0,s)}),d=!1);;){if(d){if(-1===(f=l.indexOf(t,s)))break;o.push({type:"text",data:l.slice(s,f)}),s=f}else{if(-1===(f=a(r,l,s+t.length)))break;o.push({type:"math",data:l.slice(s+t.length,f),rawData:l.slice(s,f+r.length),display:n}),s=f+r.length}d=!d}o.push({type:"text",data:l.slice(s)})}else o.push(e[i]);return o},l=function(e,t){for(var r=function(e,t){for(var r=[{type:"text",data:e}],n=0;n<t.length;n++){var o=t[n];r=i(r,o.left,o.right,o.display||!1)}return r}(e,t.delimiters),n=document.createDocumentFragment(),a=0;a<r.length;a++)if("text"===r[a].type)n.appendChild(document.createTextNode(r[a].data));else{var l=document.createElement("span"),d=r[a].data;t.displayMode=r[a].display;try{t.preProcess&&(d=t.preProcess(d)),o.a.render(d,l,t)}catch(e){if(!(e instanceof o.a.ParseError))throw e;t.errorCallback("KaTeX auto-render: Failed to parse `"+r[a].data+"` with ",e),n.appendChild(document.createTextNode(r[a].rawData));continue}n.appendChild(l)}return n};t.default=function(e,t){if(!e)throw new Error("No element provided to render");var r={};for(var n in t)t.hasOwnProperty(n)&&(r[n]=t[n]);r.delimiters=r.delimiters||[{left:"$$",right:"$$",display:!0},{left:"\\(",right:"\\)",display:!1},{left:"\\[",right:"\\]",display:!0}],r.ignoredTags=r.ignoredTags||["script","noscript","style","textarea","pre","code"],r.ignoredClasses=r.ignoredClasses||[],r.errorCallback=r.errorCallback||console.error,r.macros=r.macros||{},function e(t,r){for(var n=0;n<t.childNodes.length;n++){var o=t.childNodes[n];if(3===o.nodeType){var a=l(o.textContent,r);n+=a.childNodes.length-1,t.replaceChild(a,o)}else 1===o.nodeType&&function(){var t=" "+o.className+" ";-1===r.ignoredTags.indexOf(o.nodeName.toLowerCase())&&r.ignoredClasses.every(function(e){return-1===t.indexOf(" "+e+" ")})&&e(o,r)}()}}(e,r)}}]).default}); \ No newline at end of file
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("katex")):"function"==typeof define&&define.amd?define(["katex"],t):"object"==typeof exports?exports.renderMathInElement=t(require("katex")):e.renderMathInElement=t(e.katex)}("undefined"!=typeof self?self:this,(function(e){return function(){"use strict";var t={771:function(t){t.exports=e}},r={};function n(e){var a=r[e];if(void 0!==a)return a.exports;var i=r[e]={exports:{}};return t[e](i,i.exports,n),i.exports}n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,{a:t}),t},n.d=function(e,t){for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)};var a={};return function(){n.d(a,{default:function(){return s}});var e=n(771),t=n.n(e),r=function(e,t,r){for(var n=r,a=0,i=e.length;n<t.length;){var o=t[n];if(a<=0&&t.slice(n,n+i)===e)return n;"\\"===o?n++:"{"===o?a++:"}"===o&&a--,n++}return-1},i=/^\\begin{/,o=function(e,t){for(var n,a=[],o=new RegExp("("+t.map((function(e){return e.left.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&")})).join("|")+")");-1!==(n=e.search(o));){n>0&&(a.push({type:"text",data:e.slice(0,n)}),e=e.slice(n));var l=t.findIndex((function(t){return e.startsWith(t.left)}));if(-1===(n=r(t[l].right,e,t[l].left.length)))break;var d=e.slice(0,n+t[l].right.length),s=i.test(d)?d:e.slice(t[l].left.length,n);a.push({type:"math",data:s,rawData:d,display:t[l].display}),e=e.slice(n+t[l].right.length)}return""!==e&&a.push({type:"text",data:e}),a},l=function(e,r){var n=o(e,r.delimiters);if(1===n.length&&"text"===n[0].type)return null;for(var a=document.createDocumentFragment(),i=0;i<n.length;i++)if("text"===n[i].type)a.appendChild(document.createTextNode(n[i].data));else{var l=document.createElement("span"),d=n[i].data;r.displayMode=n[i].display;try{r.preProcess&&(d=r.preProcess(d)),t().render(d,l,r)}catch(e){if(!(e instanceof t().ParseError))throw e;r.errorCallback("KaTeX auto-render: Failed to parse `"+n[i].data+"` with ",e),a.appendChild(document.createTextNode(n[i].rawData));continue}a.appendChild(l)}return a},d=function e(t,r){for(var n=0;n<t.childNodes.length;n++){var a=t.childNodes[n];if(3===a.nodeType){var i=l(a.textContent,r);i&&(n+=i.childNodes.length-1,t.replaceChild(i,a))}else 1===a.nodeType&&function(){var t=" "+a.className+" ";-1===r.ignoredTags.indexOf(a.nodeName.toLowerCase())&&r.ignoredClasses.every((function(e){return-1===t.indexOf(" "+e+" ")}))&&e(a,r)}()}},s=function(e,t){if(!e)throw new Error("No element provided to render");var r={};for(var n in t)t.hasOwnProperty(n)&&(r[n]=t[n]);r.delimiters=r.delimiters||[{left:"$$",right:"$$",display:!0},{left:"\\(",right:"\\)",display:!1},{left:"\\begin{equation}",right:"\\end{equation}",display:!0},{left:"\\begin{align}",right:"\\end{align}",display:!0},{left:"\\begin{alignat}",right:"\\end{alignat}",display:!0},{left:"\\begin{gather}",right:"\\end{gather}",display:!0},{left:"\\begin{CD}",right:"\\end{CD}",display:!0},{left:"\\[",right:"\\]",display:!0}],r.ignoredTags=r.ignoredTags||["script","noscript","style","textarea","pre","code","option"],r.ignoredClasses=r.ignoredClasses||[],r.errorCallback=r.errorCallback||console.error,r.macros=r.macros||{},d(e,r)}}(),a=a.default}()})); \ No newline at end of file
diff --git a/assets/lib/katex/copy-tex.min.css b/assets/lib/katex/copy-tex.min.css
index 555ed115..f9e51823 100644
--- a/assets/lib/katex/copy-tex.min.css
+++ b/assets/lib/katex/copy-tex.min.css
@@ -1 +1 @@
-.katex,.katex-display{user-select:all;-moz-user-select:all;-webkit-user-select:all;-ms-user-select:all}
+.katex,.katex-display{-webkit-user-select:all;-moz-user-select:all;user-select:all}
diff --git a/assets/lib/katex/copy-tex.min.js b/assets/lib/katex/copy-tex.min.js
index e0354d6b..9e9d26ec 100644
--- a/assets/lib/katex/copy-tex.min.js
+++ b/assets/lib/katex/copy-tex.min.js
@@ -1 +1 @@
-!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var n=t();for(var r in n)("object"==typeof exports?exports:e)[r]=n[r]}}("undefined"!=typeof self?self:this,function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=1)}([function(e,t,n){},function(e,t,n){"use strict";n.r(t);n(0);var r={inline:["$","$"],display:["$$","$$"]},o=function(e,t){void 0===t&&(t=r);for(var n=e.querySelectorAll(".katex-mathml + .katex-html"),o=0;o<n.length;o++){var l=n[o];l.remove?l.remove(null):l.parentNode.removeChild(l)}for(var i=e.querySelectorAll(".katex-mathml"),a=0;a<i.length;a++){var u=i[a],f=u.querySelector("annotation");f&&(u.replaceWith?u.replaceWith(f):u.parentNode.replaceChild(f,u),f.innerHTML=t.inline[0]+f.innerHTML+t.inline[1])}for(var c=e.querySelectorAll(".katex-display annotation"),d=0;d<c.length;d++){var p=c[d];p.innerHTML=t.display[0]+p.innerHTML.substr(t.inline[0].length,p.innerHTML.length-t.inline[0].length-t.inline[1].length)+t.display[1]}return e};document.addEventListener("copy",function(e){var t=window.getSelection();if(!t.isCollapsed){var n=t.getRangeAt(0).cloneContents();if(n.querySelector(".katex-mathml")){for(var r=[],l=0;l<n.childNodes.length;l++)r.push(n.childNodes[l].outerHTML);e.clipboardData.setData("text/html",r.join("")),e.clipboardData.setData("text/plain",o(n).textContent),e.preventDefault()}}})}]).default}); \ No newline at end of file
+!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var n=t();for(var l in n)("object"==typeof exports?exports:e)[l]=n[l]}}("undefined"!=typeof self?self:this,(function(){return function(){"use strict";var e={},t={inline:["$","$"],display:["$$","$$"]},n=function(e,n){void 0===n&&(n=t);for(var l=e.querySelectorAll(".katex-mathml + .katex-html"),r=0;r<l.length;r++){var i=l[r];i.remove?i.remove(null):i.parentNode.removeChild(i)}for(var o=e.querySelectorAll(".katex-mathml"),a=0;a<o.length;a++){var d=o[a],f=d.querySelector("annotation");f&&(d.replaceWith?d.replaceWith(f):d.parentNode.replaceChild(f,d),f.innerHTML=n.inline[0]+f.innerHTML+n.inline[1])}for(var c=e.querySelectorAll(".katex-display annotation"),s=0;s<c.length;s++){var p=c[s];p.innerHTML=n.display[0]+p.innerHTML.substr(n.inline[0].length,p.innerHTML.length-n.inline[0].length-n.inline[1].length)+n.display[1]}return e};return document.addEventListener("copy",(function(e){var t=window.getSelection();if(!t.isCollapsed){var l=t.getRangeAt(0).cloneContents();if(l.querySelector(".katex-mathml")){for(var r=[],i=0;i<l.childNodes.length;i++)r.push(l.childNodes[i].outerHTML);e.clipboardData.setData("text/html",r.join("")),e.clipboardData.setData("text/plain",n(l).textContent),e.preventDefault()}}})),e=e.default}()})); \ No newline at end of file
diff --git a/assets/lib/katex/katex.min.css b/assets/lib/katex/katex.min.css
index b64e8dc3..989d17aa 100755..100644
--- a/assets/lib/katex/katex.min.css
+++ b/assets/lib/katex/katex.min.css
@@ -1 +1 @@
-@font-face{font-family:KaTeX_AMS;src:url(fonts/KaTeX_AMS-Regular.woff2) format("woff2"),url(fonts/KaTeX_AMS-Regular.woff) format("woff"),url(fonts/KaTeX_AMS-Regular.ttf) format("truetype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:KaTeX_Caligraphic;src:url(fonts/KaTeX_Caligraphic-Bold.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Bold.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Bold.ttf) format("truetype");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:KaTeX_Caligraphic;src:url(fonts/KaTeX_Caligraphic-Regular.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Regular.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Regular.ttf) format("truetype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:KaTeX_Fraktur;src:url(fonts/KaTeX_Fraktur-Bold.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Bold.woff) format("woff"),url(fonts/KaTeX_Fraktur-Bold.ttf) format("truetype");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:KaTeX_Fraktur;src:url(fonts/KaTeX_Fraktur-Regular.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Regular.woff) format("woff"),url(fonts/KaTeX_Fraktur-Regular.ttf) format("truetype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Bold.woff2) format("woff2"),url(fonts/KaTeX_Main-Bold.woff) format("woff"),url(fonts/KaTeX_Main-Bold.ttf) format("truetype");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Main-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Main-BoldItalic.ttf) format("truetype");font-weight:700;font-style:italic;font-display:swap}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Italic.woff2) format("woff2"),url(fonts/KaTeX_Main-Italic.woff) format("woff"),url(fonts/KaTeX_Main-Italic.ttf) format("truetype");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Regular.woff2) format("woff2"),url(fonts/KaTeX_Main-Regular.woff) format("woff"),url(fonts/KaTeX_Main-Regular.ttf) format("truetype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:KaTeX_Math;src:url(fonts/KaTeX_Math-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Math-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Math-BoldItalic.ttf) format("truetype");font-weight:700;font-style:italic;font-display:swap}@font-face{font-family:KaTeX_Math;src:url(fonts/KaTeX_Math-Italic.woff2) format("woff2"),url(fonts/KaTeX_Math-Italic.woff) format("woff"),url(fonts/KaTeX_Math-Italic.ttf) format("truetype");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:"KaTeX_SansSerif";src:url(fonts/KaTeX_SansSerif-Bold.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Bold.woff) format("woff"),url(fonts/KaTeX_SansSerif-Bold.ttf) format("truetype");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:"KaTeX_SansSerif";src:url(fonts/KaTeX_SansSerif-Italic.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Italic.woff) format("woff"),url(fonts/KaTeX_SansSerif-Italic.ttf) format("truetype");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:"KaTeX_SansSerif";src:url(fonts/KaTeX_SansSerif-Regular.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Regular.woff) format("woff"),url(fonts/KaTeX_SansSerif-Regular.ttf) format("truetype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:KaTeX_Script;src:url(fonts/KaTeX_Script-Regular.woff2) format("woff2"),url(fonts/KaTeX_Script-Regular.woff) format("woff"),url(fonts/KaTeX_Script-Regular.ttf) format("truetype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:KaTeX_Size1;src:url(fonts/KaTeX_Size1-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size1-Regular.woff) format("woff"),url(fonts/KaTeX_Size1-Regular.ttf) format("truetype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:KaTeX_Size2;src:url(fonts/KaTeX_Size2-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size2-Regular.woff) format("woff"),url(fonts/KaTeX_Size2-Regular.ttf) format("truetype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:KaTeX_Size3;src:url(fonts/KaTeX_Size3-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size3-Regular.woff) format("woff"),url(fonts/KaTeX_Size3-Regular.ttf) format("truetype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:KaTeX_Size4;src:url(fonts/KaTeX_Size4-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size4-Regular.woff) format("woff"),url(fonts/KaTeX_Size4-Regular.ttf) format("truetype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:KaTeX_Typewriter;src:url(fonts/KaTeX_Typewriter-Regular.woff2) format("woff2"),url(fonts/KaTeX_Typewriter-Regular.woff) format("woff"),url(fonts/KaTeX_Typewriter-Regular.ttf) format("truetype");font-weight:400;font-style:normal;font-display:swap}.katex{font:normal 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important}.katex .katex-version:after{content:"0.11.1"}.katex .katex-mathml{position:absolute;clip:rect(1px,1px,1px,1px);padding:0;border:0;height:1px;width:1px;overflow:hidden}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathdefault{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-weight:700;font-style:italic}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;vertical-align:bottom;position:relative}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;vertical-align:bottom;font-size:1px;width:2px;min-width:2px}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{display:inline-block;width:100%;border-bottom-style:solid}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{width:0;position:relative}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{display:inline-block;border:0 solid;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{display:inline-block;width:100%;border-bottom-style:solid}.katex .hdashline{display:inline-block;width:100%;border-bottom-style:dashed}.katex .sqrt>.root{margin-left:.27777778em;margin-right:-.55555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.83333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.16666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.66666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.45666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.14666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.71428571em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.85714286em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.14285714em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.28571429em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.42857143em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.71428571em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.05714286em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.46857143em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.96285714em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.55428571em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.55555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.66666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.77777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.88888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.11111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.30444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.76444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.41666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.58333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.66666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.83333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.72833333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.07333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.34722222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.41666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.48611111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.55555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.69444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.83333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.44027778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.72777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.28935185em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.34722222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.40509259em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.46296296em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.52083333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.69444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.83333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.20023148em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.43981481em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.24108004em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.28929605em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.33751205em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.38572806em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.43394407em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.48216008em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.57859209em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.69431051em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.83317261em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.19961427em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.20096463em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.24115756em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.28135048em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.32154341em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.36173633em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.40192926em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.48231511em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.57877814em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.69453376em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.83360129em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .op-limits>.vlist-t{text-align:center}.katex .accent>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{display:block;position:absolute;width:100%;height:inherit;fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1}.katex svg path{stroke:none}.katex img{border-style:none;min-width:0;min-height:0;max-width:none;max-height:none}.katex .stretchy{width:100%;display:block;position:relative;overflow:hidden}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{width:100%;position:relative;overflow:hidden}.katex .halfarrow-left{position:absolute;left:0;width:50.2%;overflow:hidden}.katex .halfarrow-right{position:absolute;right:0;width:50.2%;overflow:hidden}.katex .brace-left{position:absolute;left:0;width:25.1%;overflow:hidden}.katex .brace-center{position:absolute;left:25%;width:50%;overflow:hidden}.katex .brace-right{position:absolute;right:0;width:25.1%;overflow:hidden}.katex .x-arrow-pad{padding:0 .5em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{box-sizing:border-box;border:.04em solid}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{text-align:left}
+@font-face{font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(fonts/KaTeX_AMS-Regular.woff2) format("woff2"),url(fonts/KaTeX_AMS-Regular.woff) format("woff"),url(fonts/KaTeX_AMS-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Caligraphic-Bold.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Bold.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Caligraphic-Regular.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Regular.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Fraktur-Bold.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Bold.woff) format("woff"),url(fonts/KaTeX_Fraktur-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Fraktur-Regular.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Regular.woff) format("woff"),url(fonts/KaTeX_Fraktur-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Main-Bold.woff2) format("woff2"),url(fonts/KaTeX_Main-Bold.woff) format("woff"),url(fonts/KaTeX_Main-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(fonts/KaTeX_Main-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Main-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Main-BoldItalic.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(fonts/KaTeX_Main-Italic.woff2) format("woff2"),url(fonts/KaTeX_Main-Italic.woff) format("woff"),url(fonts/KaTeX_Main-Italic.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Main-Regular.woff2) format("woff2"),url(fonts/KaTeX_Main-Regular.woff) format("woff"),url(fonts/KaTeX_Main-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(fonts/KaTeX_Math-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Math-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Math-BoldItalic.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(fonts/KaTeX_Math-Italic.woff2) format("woff2"),url(fonts/KaTeX_Math-Italic.woff) format("woff"),url(fonts/KaTeX_Math-Italic.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:normal;font-weight:700;src:url(fonts/KaTeX_SansSerif-Bold.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Bold.woff) format("woff"),url(fonts/KaTeX_SansSerif-Bold.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:italic;font-weight:400;src:url(fonts/KaTeX_SansSerif-Italic.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Italic.woff) format("woff"),url(fonts/KaTeX_SansSerif-Italic.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:normal;font-weight:400;src:url(fonts/KaTeX_SansSerif-Regular.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Regular.woff) format("woff"),url(fonts/KaTeX_SansSerif-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Script-Regular.woff2) format("woff2"),url(fonts/KaTeX_Script-Regular.woff) format("woff"),url(fonts/KaTeX_Script-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size1-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size1-Regular.woff) format("woff"),url(fonts/KaTeX_Size1-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size2-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size2-Regular.woff) format("woff"),url(fonts/KaTeX_Size2-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size3-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size3-Regular.woff) format("woff"),url(fonts/KaTeX_Size3-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size4-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size4-Regular.woff) format("woff"),url(fonts/KaTeX_Size4-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Typewriter-Regular.woff2) format("woff2"),url(fonts/KaTeX_Typewriter-Regular.woff) format("woff"),url(fonts/KaTeX_Typewriter-Regular.ttf) format("truetype")}.katex{text-rendering:auto;font:normal 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.15.3"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-webkit-min-content;width:-moz-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.27777778em;margin-right:-.55555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.83333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.16666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.66666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.45666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.14666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.71428571em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.85714286em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.14285714em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.28571429em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.42857143em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.71428571em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.05714286em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.46857143em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.96285714em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.55428571em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.55555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.66666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.77777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.88888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.11111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.30444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.76444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.41666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.58333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.66666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.83333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.72833333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.07333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.34722222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.41666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.48611111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.55555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.69444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.83333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.44027778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.72777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.28935185em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.34722222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.40509259em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.46296296em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.52083333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.69444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.83333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.20023148em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.43981481em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.24108004em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.28929605em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.33751205em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.38572806em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.43394407em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.48216008em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.57859209em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.69431051em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.83317261em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.19961427em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.20096463em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.24115756em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.28135048em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.32154341em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.36173633em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.40192926em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.48231511em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.57877814em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.69453376em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.83360129em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo}
diff --git a/assets/lib/katex/katex.min.js b/assets/lib/katex/katex.min.js
index 906ce128..1d5d6bb3 100755..100644
--- a/assets/lib/katex/katex.min.js
+++ b/assets/lib/katex/katex.min.js
@@ -1 +1 @@
-!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.katex=e():t.katex=e()}("undefined"!=typeof self?self:this,function(){return function(t){var e={};function r(a){if(e[a])return e[a].exports;var n=e[a]={i:a,l:!1,exports:{}};return t[a].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=t,r.c=e,r.d=function(t,e,a){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:a})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var a=Object.create(null);if(r.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)r.d(a,n,function(e){return t[e]}.bind(null,n));return a},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=1)}([function(t,e,r){},function(t,e,r){"use strict";r.r(e);r(0);var a=function(){function t(t,e,r){this.lexer=void 0,this.start=void 0,this.end=void 0,this.lexer=t,this.start=e,this.end=r}return t.range=function(e,r){return r?e&&e.loc&&r.loc&&e.loc.lexer===r.loc.lexer?new t(e.loc.lexer,e.loc.start,r.loc.end):null:e&&e.loc},t}(),n=function(){function t(t,e){this.text=void 0,this.loc=void 0,this.text=t,this.loc=e}return t.prototype.range=function(e,r){return new t(r,a.range(this,e))},t}(),i=function t(e,r){this.position=void 0;var a,n="KaTeX parse error: "+e,i=r&&r.loc;if(i&&i.start<=i.end){var o=i.lexer.input;a=i.start;var s=i.end;a===o.length?n+=" at end of input: ":n+=" at position "+(a+1)+": ";var h=o.slice(a,s).replace(/[^]/g,"$&\u0332");n+=(a>15?"\u2026"+o.slice(a-15,a):o.slice(0,a))+h+(s+15<o.length?o.slice(s,s+15)+"\u2026":o.slice(s))}var l=new Error(n);return l.name="ParseError",l.__proto__=t.prototype,l.position=a,l};i.prototype.__proto__=Error.prototype;var o=i,s=/([A-Z])/g,h={"&":"&amp;",">":"&gt;","<":"&lt;",'"':"&quot;","'":"&#x27;"},l=/[&><"']/g;var m=function t(e){return"ordgroup"===e.type?1===e.body.length?t(e.body[0]):e:"color"===e.type?1===e.body.length?t(e.body[0]):e:"font"===e.type?t(e.body):e},c={contains:function(t,e){return-1!==t.indexOf(e)},deflt:function(t,e){return void 0===t?e:t},escape:function(t){return String(t).replace(l,function(t){return h[t]})},hyphenate:function(t){return t.replace(s,"-$1").toLowerCase()},getBaseElem:m,isCharacterBox:function(t){var e=m(t);return"mathord"===e.type||"textord"===e.type||"atom"===e.type},protocolFromUrl:function(t){var e=/^\s*([^\\\/#]*?)(?::|&#0*58|&#x0*3a)/i.exec(t);return null!=e?e[1]:"_relative"}},u=function(){function t(t){this.displayMode=void 0,this.output=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0,this.errorColor=void 0,this.macros=void 0,this.minRuleThickness=void 0,this.colorIsTextColor=void 0,this.strict=void 0,this.trust=void 0,this.maxSize=void 0,this.maxExpand=void 0,t=t||{},this.displayMode=c.deflt(t.displayMode,!1),this.output=c.deflt(t.output,"htmlAndMathml"),this.leqno=c.deflt(t.leqno,!1),this.fleqn=c.deflt(t.fleqn,!1),this.throwOnError=c.deflt(t.throwOnError,!0),this.errorColor=c.deflt(t.errorColor,"#cc0000"),this.macros=t.macros||{},this.minRuleThickness=Math.max(0,c.deflt(t.minRuleThickness,0)),this.colorIsTextColor=c.deflt(t.colorIsTextColor,!1),this.strict=c.deflt(t.strict,"warn"),this.trust=c.deflt(t.trust,!1),this.maxSize=Math.max(0,c.deflt(t.maxSize,1/0)),this.maxExpand=Math.max(0,c.deflt(t.maxExpand,1e3))}var e=t.prototype;return e.reportNonstrict=function(t,e,r){var a=this.strict;if("function"==typeof a&&(a=a(t,e,r)),a&&"ignore"!==a){if(!0===a||"error"===a)throw new o("LaTeX-incompatible input and strict mode is set to 'error': "+e+" ["+t+"]",r);"warn"===a?"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+e+" ["+t+"]"):"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '"+a+"': "+e+" ["+t+"]")}},e.useStrictBehavior=function(t,e,r){var a=this.strict;if("function"==typeof a)try{a=a(t,e,r)}catch(t){a="error"}return!(!a||"ignore"===a)&&(!0===a||"error"===a||("warn"===a?("undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+e+" ["+t+"]"),!1):("undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '"+a+"': "+e+" ["+t+"]"),!1)))},e.isTrusted=function(t){t.url&&!t.protocol&&(t.protocol=c.protocolFromUrl(t.url));var e="function"==typeof this.trust?this.trust(t):this.trust;return Boolean(e)},t}(),p=function(){function t(t,e,r){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=t,this.size=e,this.cramped=r}var e=t.prototype;return e.sup=function(){return d[f[this.id]]},e.sub=function(){return d[g[this.id]]},e.fracNum=function(){return d[x[this.id]]},e.fracDen=function(){return d[v[this.id]]},e.cramp=function(){return d[b[this.id]]},e.text=function(){return d[y[this.id]]},e.isTight=function(){return this.size>=2},t}(),d=[new p(0,0,!1),new p(1,0,!0),new p(2,1,!1),new p(3,1,!0),new p(4,2,!1),new p(5,2,!0),new p(6,3,!1),new p(7,3,!0)],f=[4,5,4,5,6,7,6,7],g=[5,5,5,5,7,7,7,7],x=[2,3,4,5,6,7,6,7],v=[3,3,5,5,7,7,7,7],b=[1,1,3,3,5,5,7,7],y=[0,1,2,3,2,3,2,3],w={DISPLAY:d[0],TEXT:d[2],SCRIPT:d[4],SCRIPTSCRIPT:d[6]},k=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}];var S=[];function M(t){for(var e=0;e<S.length;e+=2)if(t>=S[e]&&t<=S[e+1])return!0;return!1}k.forEach(function(t){return t.blocks.forEach(function(t){return S.push.apply(S,t)})});var z={doubleleftarrow:"M262 157\nl10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3\n 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28\n 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5\nc2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5\n 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87\n-86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7\n-2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z\nm8 0v40h399730v-40zm0 194v40h399730v-40z",doublerightarrow:"M399738 392l\n-10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5\n 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88\n-33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68\n-17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18\n-13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782\nc-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3\n-107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z",leftarrow:"M400000 241H110l3-3c68.7-52.7 113.7-120\n 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8\n-5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247\nc-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208\n 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3\n 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202\n l-3-3h399890zM100 241v40h399900v-40z",leftbrace:"M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117\n-45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7\n 5-6 9-10 13-.7 1-7.3 1-20 1H6z",leftbraceunder:"M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13\n 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688\n 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7\n-331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z",leftgroup:"M400000 80\nH435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0\n 435 0h399565z",leftgroupunder:"M400000 262\nH435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219\n 435 219h399565z",leftharpoon:"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3\n-3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5\n-18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7\n-196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z",leftharpoonplus:"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5\n 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3\n-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7\n-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z\nm0 0v40h400000v-40z",leftharpoondown:"M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333\n 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5\n 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667\n-152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z",leftharpoondownplus:"M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12\n 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7\n-2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0\nv40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z",lefthook:"M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5\n-83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3\n-68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21\n 71.5 23h399859zM103 281v-40h399897v40z",leftlinesegment:"M40 281 V428 H0 V94 H40 V241 H400000 v40z\nM40 281 V428 H0 V94 H40 V241 H400000 v40z",leftmapsto:"M40 281 V448H0V74H40V241H400000v40z\nM40 281 V448H0V74H40V241H400000v40z",leftToFrom:"M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23\n-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8\nc28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3\n 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z",longequal:"M0 50 h400000 v40H0z m0 194h40000v40H0z\nM0 50 h400000 v40H0z m0 194h40000v40H0z",midbrace:"M200428 334\nc-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14\n-53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7\n 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11\n 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z",midbraceunder:"M199572 214\nc100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14\n 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3\n 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0\n-5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z",oiintSize1:"M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6\n-320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z\nm368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8\n60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z",oiintSize2:"M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8\n-451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z\nm502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2\nc0 110 84 276 504 276s502.4-166 502.4-276z",oiiintSize1:"M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6\n-480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z\nm525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0\n85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z",oiiintSize2:"M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8\n-707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z\nm770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1\nc0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z",rightarrow:"M0 241v40h399891c-47.3 35.3-84 78-110 128\n-16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20\n 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7\n 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85\n-40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n 151.7 139 205zm0 0v40h399900v-40z",rightbrace:"M400000 542l\n-6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5\ns-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1\nc124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z",rightbraceunder:"M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3\n 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237\n-174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z",rightgroup:"M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0\n 3-1 3-3v-38c-76-158-257-219-435-219H0z",rightgroupunder:"M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18\n 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z",rightharpoon:"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3\n-3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2\n-10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58\n 69.2 92 94.5zm0 0v40h399900v-40z",rightharpoonplus:"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11\n-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7\n 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z\nm0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z",rightharpoondown:"M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8\n 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5\n-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95\n-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z",rightharpoondownplus:"M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8\n 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3\n 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3\n-64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z\nm0-194v40h400000v-40zm0 0v40h400000v-40z",righthook:"M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3\n 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0\n-13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21\n 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z",rightlinesegment:"M399960 241 V94 h40 V428 h-40 V281 H0 v-40z\nM399960 241 V94 h40 V428 h-40 V281 H0 v-40z",rightToFrom:"M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23\n 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32\n-52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142\n-167z M100 147v40h399900v-40zM0 341v40h399900v-40z",twoheadleftarrow:"M0 167c68 40\n 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69\n-70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3\n-40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19\n-37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101\n 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z",twoheadrightarrow:"M400000 167\nc-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3\n 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42\n 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333\n-19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70\n 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z",tilde1:"M200 55.538c-77 0-168 73.953-177 73.953-3 0-7\n-2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0\n 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0\n 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128\n-68.267.847-113-73.952-191-73.952z",tilde2:"M344 55.266c-142 0-300.638 81.316-311.5 86.418\n-8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9\n 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114\nc1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751\n 181.476 676 181.476c-149 0-189-126.21-332-126.21z",tilde3:"M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457\n-11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0\n 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697\n 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696\n -338 0-409-156.573-744-156.573z",tilde4:"M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345\n-11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409\n 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9\n 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409\n -175.236-744-175.236z",vec:"M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5\n3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11\n10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63\n-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1\n-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59\nH213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359\nc-16-25.333-24-45-24-59z",widehat1:"M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22\nc-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z",widehat2:"M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widehat3:"M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widehat4:"M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widecheck1:"M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1,\n-5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z",widecheck2:"M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",widecheck3:"M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",widecheck4:"M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",baraboveleftarrow:"M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202\nc4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5\nc-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130\ns-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47\n121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6\ns2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11\nc0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z\nM100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z",rightarrowabovebar:"M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32\n-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0\n13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39\n-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5\n-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z",baraboveshortleftharpoon:"M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17\nc2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21\nc-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40\nc-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z\nM0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z",rightharpoonaboveshortbar:"M0,241 l0,40c399126,0,399993,0,399993,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z",shortbaraboveleftharpoon:"M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9,\n1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7,\n-152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z\nM93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z",shortrightharpoonabovebar:"M53,241l0,40c398570,0,399437,0,399437,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z"},A=function(){function t(t){this.children=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.children=t,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}var e=t.prototype;return e.hasClass=function(t){return c.contains(this.classes,t)},e.toNode=function(){for(var t=document.createDocumentFragment(),e=0;e<this.children.length;e++)t.appendChild(this.children[e].toNode());return t},e.toMarkup=function(){for(var t="",e=0;e<this.children.length;e++)t+=this.children[e].toMarkup();return t},e.toText=function(){var t=function(t){return t.toText()};return this.children.map(t).join("")},t}(),T=function(t){return t.filter(function(t){return t}).join(" ")},B=function(t,e,r){if(this.classes=t||[],this.attributes={},this.height=0,this.depth=0,this.maxFontSize=0,this.style=r||{},e){e.style.isTight()&&this.classes.push("mtight");var a=e.getColor();a&&(this.style.color=a)}},C=function(t){var e=document.createElement(t);for(var r in e.className=T(this.classes),this.style)this.style.hasOwnProperty(r)&&(e.style[r]=this.style[r]);for(var a in this.attributes)this.attributes.hasOwnProperty(a)&&e.setAttribute(a,this.attributes[a]);for(var n=0;n<this.children.length;n++)e.appendChild(this.children[n].toNode());return e},q=function(t){var e="<"+t;this.classes.length&&(e+=' class="'+c.escape(T(this.classes))+'"');var r="";for(var a in this.style)this.style.hasOwnProperty(a)&&(r+=c.hyphenate(a)+":"+this.style[a]+";");for(var n in r&&(e+=' style="'+c.escape(r)+'"'),this.attributes)this.attributes.hasOwnProperty(n)&&(e+=" "+n+'="'+c.escape(this.attributes[n])+'"');e+=">";for(var i=0;i<this.children.length;i++)e+=this.children[i].toMarkup();return e+="</"+t+">"},N=function(){function t(t,e,r,a){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.width=void 0,this.maxFontSize=void 0,this.style=void 0,B.call(this,t,r,a),this.children=e||[]}var e=t.prototype;return e.setAttribute=function(t,e){this.attributes[t]=e},e.hasClass=function(t){return c.contains(this.classes,t)},e.toNode=function(){return C.call(this,"span")},e.toMarkup=function(){return q.call(this,"span")},t}(),I=function(){function t(t,e,r,a){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,B.call(this,e,a),this.children=r||[],this.setAttribute("href",t)}var e=t.prototype;return e.setAttribute=function(t,e){this.attributes[t]=e},e.hasClass=function(t){return c.contains(this.classes,t)},e.toNode=function(){return C.call(this,"a")},e.toMarkup=function(){return q.call(this,"a")},t}(),R=function(){function t(t,e,r){this.src=void 0,this.alt=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.alt=e,this.src=t,this.classes=["mord"],this.style=r}var e=t.prototype;return e.hasClass=function(t){return c.contains(this.classes,t)},e.toNode=function(){var t=document.createElement("img");for(var e in t.src=this.src,t.alt=this.alt,t.className="mord",this.style)this.style.hasOwnProperty(e)&&(t.style[e]=this.style[e]);return t},e.toMarkup=function(){var t="<img src='"+this.src+" 'alt='"+this.alt+"' ",e="";for(var r in this.style)this.style.hasOwnProperty(r)&&(e+=c.hyphenate(r)+":"+this.style[r]+";");return e&&(t+=' style="'+c.escape(e)+'"'),t+="'/>"},t}(),O={"\xee":"\u0131\u0302","\xef":"\u0131\u0308","\xed":"\u0131\u0301","\xec":"\u0131\u0300"},E=function(){function t(t,e,r,a,n,i,o,s){this.text=void 0,this.height=void 0,this.depth=void 0,this.italic=void 0,this.skew=void 0,this.width=void 0,this.maxFontSize=void 0,this.classes=void 0,this.style=void 0,this.text=t,this.height=e||0,this.depth=r||0,this.italic=a||0,this.skew=n||0,this.width=i||0,this.classes=o||[],this.style=s||{},this.maxFontSize=0;var h=function(t){for(var e=0;e<k.length;e++)for(var r=k[e],a=0;a<r.blocks.length;a++){var n=r.blocks[a];if(t>=n[0]&&t<=n[1])return r.name}return null}(this.text.charCodeAt(0));h&&this.classes.push(h+"_fallback"),/[\xee\xef\xed\xec]/.test(this.text)&&(this.text=O[this.text])}var e=t.prototype;return e.hasClass=function(t){return c.contains(this.classes,t)},e.toNode=function(){var t=document.createTextNode(this.text),e=null;for(var r in this.italic>0&&((e=document.createElement("span")).style.marginRight=this.italic+"em"),this.classes.length>0&&((e=e||document.createElement("span")).className=T(this.classes)),this.style)this.style.hasOwnProperty(r)&&((e=e||document.createElement("span")).style[r]=this.style[r]);return e?(e.appendChild(t),e):t},e.toMarkup=function(){var t=!1,e="<span";this.classes.length&&(t=!0,e+=' class="',e+=c.escape(T(this.classes)),e+='"');var r="";for(var a in this.italic>0&&(r+="margin-right:"+this.italic+"em;"),this.style)this.style.hasOwnProperty(a)&&(r+=c.hyphenate(a)+":"+this.style[a]+";");r&&(t=!0,e+=' style="'+c.escape(r)+'"');var n=c.escape(this.text);return t?(e+=">",e+=n,e+="</span>"):n},t}(),L=function(){function t(t,e){this.children=void 0,this.attributes=void 0,this.children=t||[],this.attributes=e||{}}var e=t.prototype;return e.toNode=function(){var t=document.createElementNS("http://www.w3.org/2000/svg","svg");for(var e in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,e)&&t.setAttribute(e,this.attributes[e]);for(var r=0;r<this.children.length;r++)t.appendChild(this.children[r].toNode());return t},e.toMarkup=function(){var t="<svg";for(var e in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,e)&&(t+=" "+e+"='"+this.attributes[e]+"'");t+=">";for(var r=0;r<this.children.length;r++)t+=this.children[r].toMarkup();return t+="</svg>"},t}(),H=function(){function t(t,e){this.pathName=void 0,this.alternate=void 0,this.pathName=t,this.alternate=e}var e=t.prototype;return e.toNode=function(){var t=document.createElementNS("http://www.w3.org/2000/svg","path");return this.alternate?t.setAttribute("d",this.alternate):t.setAttribute("d",z[this.pathName]),t},e.toMarkup=function(){return this.alternate?"<path d='"+this.alternate+"'/>":"<path d='"+z[this.pathName]+"'/>"},t}(),P=function(){function t(t){this.attributes=void 0,this.attributes=t||{}}var e=t.prototype;return e.toNode=function(){var t=document.createElementNS("http://www.w3.org/2000/svg","line");for(var e in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,e)&&t.setAttribute(e,this.attributes[e]);return t},e.toMarkup=function(){var t="<line";for(var e in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,e)&&(t+=" "+e+"='"+this.attributes[e]+"'");return t+="/>"},t}();function D(t){if(t instanceof E)return t;throw new Error("Expected symbolNode but got "+String(t)+".")}var F={"AMS-Regular":{65:[0,.68889,0,0,.72222],66:[0,.68889,0,0,.66667],67:[0,.68889,0,0,.72222],68:[0,.68889,0,0,.72222],69:[0,.68889,0,0,.66667],70:[0,.68889,0,0,.61111],71:[0,.68889,0,0,.77778],72:[0,.68889,0,0,.77778],73:[0,.68889,0,0,.38889],74:[.16667,.68889,0,0,.5],75:[0,.68889,0,0,.77778],76:[0,.68889,0,0,.66667],77:[0,.68889,0,0,.94445],78:[0,.68889,0,0,.72222],79:[.16667,.68889,0,0,.77778],80:[0,.68889,0,0,.61111],81:[.16667,.68889,0,0,.77778],82:[0,.68889,0,0,.72222],83:[0,.68889,0,0,.55556],84:[0,.68889,0,0,.66667],85:[0,.68889,0,0,.72222],86:[0,.68889,0,0,.72222],87:[0,.68889,0,0,1],88:[0,.68889,0,0,.72222],89:[0,.68889,0,0,.72222],90:[0,.68889,0,0,.66667],107:[0,.68889,0,0,.55556],165:[0,.675,.025,0,.75],174:[.15559,.69224,0,0,.94666],240:[0,.68889,0,0,.55556],295:[0,.68889,0,0,.54028],710:[0,.825,0,0,2.33334],732:[0,.9,0,0,2.33334],770:[0,.825,0,0,2.33334],771:[0,.9,0,0,2.33334],989:[.08167,.58167,0,0,.77778],1008:[0,.43056,.04028,0,.66667],8245:[0,.54986,0,0,.275],8463:[0,.68889,0,0,.54028],8487:[0,.68889,0,0,.72222],8498:[0,.68889,0,0,.55556],8502:[0,.68889,0,0,.66667],8503:[0,.68889,0,0,.44445],8504:[0,.68889,0,0,.66667],8513:[0,.68889,0,0,.63889],8592:[-.03598,.46402,0,0,.5],8594:[-.03598,.46402,0,0,.5],8602:[-.13313,.36687,0,0,1],8603:[-.13313,.36687,0,0,1],8606:[.01354,.52239,0,0,1],8608:[.01354,.52239,0,0,1],8610:[.01354,.52239,0,0,1.11111],8611:[.01354,.52239,0,0,1.11111],8619:[0,.54986,0,0,1],8620:[0,.54986,0,0,1],8621:[-.13313,.37788,0,0,1.38889],8622:[-.13313,.36687,0,0,1],8624:[0,.69224,0,0,.5],8625:[0,.69224,0,0,.5],8630:[0,.43056,0,0,1],8631:[0,.43056,0,0,1],8634:[.08198,.58198,0,0,.77778],8635:[.08198,.58198,0,0,.77778],8638:[.19444,.69224,0,0,.41667],8639:[.19444,.69224,0,0,.41667],8642:[.19444,.69224,0,0,.41667],8643:[.19444,.69224,0,0,.41667],8644:[.1808,.675,0,0,1],8646:[.1808,.675,0,0,1],8647:[.1808,.675,0,0,1],8648:[.19444,.69224,0,0,.83334],8649:[.1808,.675,0,0,1],8650:[.19444,.69224,0,0,.83334],8651:[.01354,.52239,0,0,1],8652:[.01354,.52239,0,0,1],8653:[-.13313,.36687,0,0,1],8654:[-.13313,.36687,0,0,1],8655:[-.13313,.36687,0,0,1],8666:[.13667,.63667,0,0,1],8667:[.13667,.63667,0,0,1],8669:[-.13313,.37788,0,0,1],8672:[-.064,.437,0,0,1.334],8674:[-.064,.437,0,0,1.334],8705:[0,.825,0,0,.5],8708:[0,.68889,0,0,.55556],8709:[.08167,.58167,0,0,.77778],8717:[0,.43056,0,0,.42917],8722:[-.03598,.46402,0,0,.5],8724:[.08198,.69224,0,0,.77778],8726:[.08167,.58167,0,0,.77778],8733:[0,.69224,0,0,.77778],8736:[0,.69224,0,0,.72222],8737:[0,.69224,0,0,.72222],8738:[.03517,.52239,0,0,.72222],8739:[.08167,.58167,0,0,.22222],8740:[.25142,.74111,0,0,.27778],8741:[.08167,.58167,0,0,.38889],8742:[.25142,.74111,0,0,.5],8756:[0,.69224,0,0,.66667],8757:[0,.69224,0,0,.66667],8764:[-.13313,.36687,0,0,.77778],8765:[-.13313,.37788,0,0,.77778],8769:[-.13313,.36687,0,0,.77778],8770:[-.03625,.46375,0,0,.77778],8774:[.30274,.79383,0,0,.77778],8776:[-.01688,.48312,0,0,.77778],8778:[.08167,.58167,0,0,.77778],8782:[.06062,.54986,0,0,.77778],8783:[.06062,.54986,0,0,.77778],8785:[.08198,.58198,0,0,.77778],8786:[.08198,.58198,0,0,.77778],8787:[.08198,.58198,0,0,.77778],8790:[0,.69224,0,0,.77778],8791:[.22958,.72958,0,0,.77778],8796:[.08198,.91667,0,0,.77778],8806:[.25583,.75583,0,0,.77778],8807:[.25583,.75583,0,0,.77778],8808:[.25142,.75726,0,0,.77778],8809:[.25142,.75726,0,0,.77778],8812:[.25583,.75583,0,0,.5],8814:[.20576,.70576,0,0,.77778],8815:[.20576,.70576,0,0,.77778],8816:[.30274,.79383,0,0,.77778],8817:[.30274,.79383,0,0,.77778],8818:[.22958,.72958,0,0,.77778],8819:[.22958,.72958,0,0,.77778],8822:[.1808,.675,0,0,.77778],8823:[.1808,.675,0,0,.77778],8828:[.13667,.63667,0,0,.77778],8829:[.13667,.63667,0,0,.77778],8830:[.22958,.72958,0,0,.77778],8831:[.22958,.72958,0,0,.77778],8832:[.20576,.70576,0,0,.77778],8833:[.20576,.70576,0,0,.77778],8840:[.30274,.79383,0,0,.77778],8841:[.30274,.79383,0,0,.77778],8842:[.13597,.63597,0,0,.77778],8843:[.13597,.63597,0,0,.77778],8847:[.03517,.54986,0,0,.77778],8848:[.03517,.54986,0,0,.77778],8858:[.08198,.58198,0,0,.77778],8859:[.08198,.58198,0,0,.77778],8861:[.08198,.58198,0,0,.77778],8862:[0,.675,0,0,.77778],8863:[0,.675,0,0,.77778],8864:[0,.675,0,0,.77778],8865:[0,.675,0,0,.77778],8872:[0,.69224,0,0,.61111],8873:[0,.69224,0,0,.72222],8874:[0,.69224,0,0,.88889],8876:[0,.68889,0,0,.61111],8877:[0,.68889,0,0,.61111],8878:[0,.68889,0,0,.72222],8879:[0,.68889,0,0,.72222],8882:[.03517,.54986,0,0,.77778],8883:[.03517,.54986,0,0,.77778],8884:[.13667,.63667,0,0,.77778],8885:[.13667,.63667,0,0,.77778],8888:[0,.54986,0,0,1.11111],8890:[.19444,.43056,0,0,.55556],8891:[.19444,.69224,0,0,.61111],8892:[.19444,.69224,0,0,.61111],8901:[0,.54986,0,0,.27778],8903:[.08167,.58167,0,0,.77778],8905:[.08167,.58167,0,0,.77778],8906:[.08167,.58167,0,0,.77778],8907:[0,.69224,0,0,.77778],8908:[0,.69224,0,0,.77778],8909:[-.03598,.46402,0,0,.77778],8910:[0,.54986,0,0,.76042],8911:[0,.54986,0,0,.76042],8912:[.03517,.54986,0,0,.77778],8913:[.03517,.54986,0,0,.77778],8914:[0,.54986,0,0,.66667],8915:[0,.54986,0,0,.66667],8916:[0,.69224,0,0,.66667],8918:[.0391,.5391,0,0,.77778],8919:[.0391,.5391,0,0,.77778],8920:[.03517,.54986,0,0,1.33334],8921:[.03517,.54986,0,0,1.33334],8922:[.38569,.88569,0,0,.77778],8923:[.38569,.88569,0,0,.77778],8926:[.13667,.63667,0,0,.77778],8927:[.13667,.63667,0,0,.77778],8928:[.30274,.79383,0,0,.77778],8929:[.30274,.79383,0,0,.77778],8934:[.23222,.74111,0,0,.77778],8935:[.23222,.74111,0,0,.77778],8936:[.23222,.74111,0,0,.77778],8937:[.23222,.74111,0,0,.77778],8938:[.20576,.70576,0,0,.77778],8939:[.20576,.70576,0,0,.77778],8940:[.30274,.79383,0,0,.77778],8941:[.30274,.79383,0,0,.77778],8994:[.19444,.69224,0,0,.77778],8995:[.19444,.69224,0,0,.77778],9416:[.15559,.69224,0,0,.90222],9484:[0,.69224,0,0,.5],9488:[0,.69224,0,0,.5],9492:[0,.37788,0,0,.5],9496:[0,.37788,0,0,.5],9585:[.19444,.68889,0,0,.88889],9586:[.19444,.74111,0,0,.88889],9632:[0,.675,0,0,.77778],9633:[0,.675,0,0,.77778],9650:[0,.54986,0,0,.72222],9651:[0,.54986,0,0,.72222],9654:[.03517,.54986,0,0,.77778],9660:[0,.54986,0,0,.72222],9661:[0,.54986,0,0,.72222],9664:[.03517,.54986,0,0,.77778],9674:[.11111,.69224,0,0,.66667],9733:[.19444,.69224,0,0,.94445],10003:[0,.69224,0,0,.83334],10016:[0,.69224,0,0,.83334],10731:[.11111,.69224,0,0,.66667],10846:[.19444,.75583,0,0,.61111],10877:[.13667,.63667,0,0,.77778],10878:[.13667,.63667,0,0,.77778],10885:[.25583,.75583,0,0,.77778],10886:[.25583,.75583,0,0,.77778],10887:[.13597,.63597,0,0,.77778],10888:[.13597,.63597,0,0,.77778],10889:[.26167,.75726,0,0,.77778],10890:[.26167,.75726,0,0,.77778],10891:[.48256,.98256,0,0,.77778],10892:[.48256,.98256,0,0,.77778],10901:[.13667,.63667,0,0,.77778],10902:[.13667,.63667,0,0,.77778],10933:[.25142,.75726,0,0,.77778],10934:[.25142,.75726,0,0,.77778],10935:[.26167,.75726,0,0,.77778],10936:[.26167,.75726,0,0,.77778],10937:[.26167,.75726,0,0,.77778],10938:[.26167,.75726,0,0,.77778],10949:[.25583,.75583,0,0,.77778],10950:[.25583,.75583,0,0,.77778],10955:[.28481,.79383,0,0,.77778],10956:[.28481,.79383,0,0,.77778],57350:[.08167,.58167,0,0,.22222],57351:[.08167,.58167,0,0,.38889],57352:[.08167,.58167,0,0,.77778],57353:[0,.43056,.04028,0,.66667],57356:[.25142,.75726,0,0,.77778],57357:[.25142,.75726,0,0,.77778],57358:[.41951,.91951,0,0,.77778],57359:[.30274,.79383,0,0,.77778],57360:[.30274,.79383,0,0,.77778],57361:[.41951,.91951,0,0,.77778],57366:[.25142,.75726,0,0,.77778],57367:[.25142,.75726,0,0,.77778],57368:[.25142,.75726,0,0,.77778],57369:[.25142,.75726,0,0,.77778],57370:[.13597,.63597,0,0,.77778],57371:[.13597,.63597,0,0,.77778]},"Caligraphic-Regular":{48:[0,.43056,0,0,.5],49:[0,.43056,0,0,.5],50:[0,.43056,0,0,.5],51:[.19444,.43056,0,0,.5],52:[.19444,.43056,0,0,.5],53:[.19444,.43056,0,0,.5],54:[0,.64444,0,0,.5],55:[.19444,.43056,0,0,.5],56:[0,.64444,0,0,.5],57:[.19444,.43056,0,0,.5],65:[0,.68333,0,.19445,.79847],66:[0,.68333,.03041,.13889,.65681],67:[0,.68333,.05834,.13889,.52653],68:[0,.68333,.02778,.08334,.77139],69:[0,.68333,.08944,.11111,.52778],70:[0,.68333,.09931,.11111,.71875],71:[.09722,.68333,.0593,.11111,.59487],72:[0,.68333,.00965,.11111,.84452],73:[0,.68333,.07382,0,.54452],74:[.09722,.68333,.18472,.16667,.67778],75:[0,.68333,.01445,.05556,.76195],76:[0,.68333,0,.13889,.68972],77:[0,.68333,0,.13889,1.2009],78:[0,.68333,.14736,.08334,.82049],79:[0,.68333,.02778,.11111,.79611],80:[0,.68333,.08222,.08334,.69556],81:[.09722,.68333,0,.11111,.81667],82:[0,.68333,0,.08334,.8475],83:[0,.68333,.075,.13889,.60556],84:[0,.68333,.25417,0,.54464],85:[0,.68333,.09931,.08334,.62583],86:[0,.68333,.08222,0,.61278],87:[0,.68333,.08222,.08334,.98778],88:[0,.68333,.14643,.13889,.7133],89:[.09722,.68333,.08222,.08334,.66834],90:[0,.68333,.07944,.13889,.72473]},"Fraktur-Regular":{33:[0,.69141,0,0,.29574],34:[0,.69141,0,0,.21471],38:[0,.69141,0,0,.73786],39:[0,.69141,0,0,.21201],40:[.24982,.74947,0,0,.38865],41:[.24982,.74947,0,0,.38865],42:[0,.62119,0,0,.27764],43:[.08319,.58283,0,0,.75623],44:[0,.10803,0,0,.27764],45:[.08319,.58283,0,0,.75623],46:[0,.10803,0,0,.27764],47:[.24982,.74947,0,0,.50181],48:[0,.47534,0,0,.50181],49:[0,.47534,0,0,.50181],50:[0,.47534,0,0,.50181],51:[.18906,.47534,0,0,.50181],52:[.18906,.47534,0,0,.50181],53:[.18906,.47534,0,0,.50181],54:[0,.69141,0,0,.50181],55:[.18906,.47534,0,0,.50181],56:[0,.69141,0,0,.50181],57:[.18906,.47534,0,0,.50181],58:[0,.47534,0,0,.21606],59:[.12604,.47534,0,0,.21606],61:[-.13099,.36866,0,0,.75623],63:[0,.69141,0,0,.36245],65:[0,.69141,0,0,.7176],66:[0,.69141,0,0,.88397],67:[0,.69141,0,0,.61254],68:[0,.69141,0,0,.83158],69:[0,.69141,0,0,.66278],70:[.12604,.69141,0,0,.61119],71:[0,.69141,0,0,.78539],72:[.06302,.69141,0,0,.7203],73:[0,.69141,0,0,.55448],74:[.12604,.69141,0,0,.55231],75:[0,.69141,0,0,.66845],76:[0,.69141,0,0,.66602],77:[0,.69141,0,0,1.04953],78:[0,.69141,0,0,.83212],79:[0,.69141,0,0,.82699],80:[.18906,.69141,0,0,.82753],81:[.03781,.69141,0,0,.82699],82:[0,.69141,0,0,.82807],83:[0,.69141,0,0,.82861],84:[0,.69141,0,0,.66899],85:[0,.69141,0,0,.64576],86:[0,.69141,0,0,.83131],87:[0,.69141,0,0,1.04602],88:[0,.69141,0,0,.71922],89:[.18906,.69141,0,0,.83293],90:[.12604,.69141,0,0,.60201],91:[.24982,.74947,0,0,.27764],93:[.24982,.74947,0,0,.27764],94:[0,.69141,0,0,.49965],97:[0,.47534,0,0,.50046],98:[0,.69141,0,0,.51315],99:[0,.47534,0,0,.38946],100:[0,.62119,0,0,.49857],101:[0,.47534,0,0,.40053],102:[.18906,.69141,0,0,.32626],103:[.18906,.47534,0,0,.5037],104:[.18906,.69141,0,0,.52126],105:[0,.69141,0,0,.27899],106:[0,.69141,0,0,.28088],107:[0,.69141,0,0,.38946],108:[0,.69141,0,0,.27953],109:[0,.47534,0,0,.76676],110:[0,.47534,0,0,.52666],111:[0,.47534,0,0,.48885],112:[.18906,.52396,0,0,.50046],113:[.18906,.47534,0,0,.48912],114:[0,.47534,0,0,.38919],115:[0,.47534,0,0,.44266],116:[0,.62119,0,0,.33301],117:[0,.47534,0,0,.5172],118:[0,.52396,0,0,.5118],119:[0,.52396,0,0,.77351],120:[.18906,.47534,0,0,.38865],121:[.18906,.47534,0,0,.49884],122:[.18906,.47534,0,0,.39054],8216:[0,.69141,0,0,.21471],8217:[0,.69141,0,0,.21471],58112:[0,.62119,0,0,.49749],58113:[0,.62119,0,0,.4983],58114:[.18906,.69141,0,0,.33328],58115:[.18906,.69141,0,0,.32923],58116:[.18906,.47534,0,0,.50343],58117:[0,.69141,0,0,.33301],58118:[0,.62119,0,0,.33409],58119:[0,.47534,0,0,.50073]},"Main-Bold":{33:[0,.69444,0,0,.35],34:[0,.69444,0,0,.60278],35:[.19444,.69444,0,0,.95833],36:[.05556,.75,0,0,.575],37:[.05556,.75,0,0,.95833],38:[0,.69444,0,0,.89444],39:[0,.69444,0,0,.31944],40:[.25,.75,0,0,.44722],41:[.25,.75,0,0,.44722],42:[0,.75,0,0,.575],43:[.13333,.63333,0,0,.89444],44:[.19444,.15556,0,0,.31944],45:[0,.44444,0,0,.38333],46:[0,.15556,0,0,.31944],47:[.25,.75,0,0,.575],48:[0,.64444,0,0,.575],49:[0,.64444,0,0,.575],50:[0,.64444,0,0,.575],51:[0,.64444,0,0,.575],52:[0,.64444,0,0,.575],53:[0,.64444,0,0,.575],54:[0,.64444,0,0,.575],55:[0,.64444,0,0,.575],56:[0,.64444,0,0,.575],57:[0,.64444,0,0,.575],58:[0,.44444,0,0,.31944],59:[.19444,.44444,0,0,.31944],60:[.08556,.58556,0,0,.89444],61:[-.10889,.39111,0,0,.89444],62:[.08556,.58556,0,0,.89444],63:[0,.69444,0,0,.54305],64:[0,.69444,0,0,.89444],65:[0,.68611,0,0,.86944],66:[0,.68611,0,0,.81805],67:[0,.68611,0,0,.83055],68:[0,.68611,0,0,.88194],69:[0,.68611,0,0,.75555],70:[0,.68611,0,0,.72361],71:[0,.68611,0,0,.90416],72:[0,.68611,0,0,.9],73:[0,.68611,0,0,.43611],74:[0,.68611,0,0,.59444],75:[0,.68611,0,0,.90138],76:[0,.68611,0,0,.69166],77:[0,.68611,0,0,1.09166],78:[0,.68611,0,0,.9],79:[0,.68611,0,0,.86388],80:[0,.68611,0,0,.78611],81:[.19444,.68611,0,0,.86388],82:[0,.68611,0,0,.8625],83:[0,.68611,0,0,.63889],84:[0,.68611,0,0,.8],85:[0,.68611,0,0,.88472],86:[0,.68611,.01597,0,.86944],87:[0,.68611,.01597,0,1.18888],88:[0,.68611,0,0,.86944],89:[0,.68611,.02875,0,.86944],90:[0,.68611,0,0,.70277],91:[.25,.75,0,0,.31944],92:[.25,.75,0,0,.575],93:[.25,.75,0,0,.31944],94:[0,.69444,0,0,.575],95:[.31,.13444,.03194,0,.575],97:[0,.44444,0,0,.55902],98:[0,.69444,0,0,.63889],99:[0,.44444,0,0,.51111],100:[0,.69444,0,0,.63889],101:[0,.44444,0,0,.52708],102:[0,.69444,.10903,0,.35139],103:[.19444,.44444,.01597,0,.575],104:[0,.69444,0,0,.63889],105:[0,.69444,0,0,.31944],106:[.19444,.69444,0,0,.35139],107:[0,.69444,0,0,.60694],108:[0,.69444,0,0,.31944],109:[0,.44444,0,0,.95833],110:[0,.44444,0,0,.63889],111:[0,.44444,0,0,.575],112:[.19444,.44444,0,0,.63889],113:[.19444,.44444,0,0,.60694],114:[0,.44444,0,0,.47361],115:[0,.44444,0,0,.45361],116:[0,.63492,0,0,.44722],117:[0,.44444,0,0,.63889],118:[0,.44444,.01597,0,.60694],119:[0,.44444,.01597,0,.83055],120:[0,.44444,0,0,.60694],121:[.19444,.44444,.01597,0,.60694],122:[0,.44444,0,0,.51111],123:[.25,.75,0,0,.575],124:[.25,.75,0,0,.31944],125:[.25,.75,0,0,.575],126:[.35,.34444,0,0,.575],168:[0,.69444,0,0,.575],172:[0,.44444,0,0,.76666],176:[0,.69444,0,0,.86944],177:[.13333,.63333,0,0,.89444],184:[.17014,0,0,0,.51111],198:[0,.68611,0,0,1.04166],215:[.13333,.63333,0,0,.89444],216:[.04861,.73472,0,0,.89444],223:[0,.69444,0,0,.59722],230:[0,.44444,0,0,.83055],247:[.13333,.63333,0,0,.89444],248:[.09722,.54167,0,0,.575],305:[0,.44444,0,0,.31944],338:[0,.68611,0,0,1.16944],339:[0,.44444,0,0,.89444],567:[.19444,.44444,0,0,.35139],710:[0,.69444,0,0,.575],711:[0,.63194,0,0,.575],713:[0,.59611,0,0,.575],714:[0,.69444,0,0,.575],715:[0,.69444,0,0,.575],728:[0,.69444,0,0,.575],729:[0,.69444,0,0,.31944],730:[0,.69444,0,0,.86944],732:[0,.69444,0,0,.575],733:[0,.69444,0,0,.575],915:[0,.68611,0,0,.69166],916:[0,.68611,0,0,.95833],920:[0,.68611,0,0,.89444],923:[0,.68611,0,0,.80555],926:[0,.68611,0,0,.76666],928:[0,.68611,0,0,.9],931:[0,.68611,0,0,.83055],933:[0,.68611,0,0,.89444],934:[0,.68611,0,0,.83055],936:[0,.68611,0,0,.89444],937:[0,.68611,0,0,.83055],8211:[0,.44444,.03194,0,.575],8212:[0,.44444,.03194,0,1.14999],8216:[0,.69444,0,0,.31944],8217:[0,.69444,0,0,.31944],8220:[0,.69444,0,0,.60278],8221:[0,.69444,0,0,.60278],8224:[.19444,.69444,0,0,.51111],8225:[.19444,.69444,0,0,.51111],8242:[0,.55556,0,0,.34444],8407:[0,.72444,.15486,0,.575],8463:[0,.69444,0,0,.66759],8465:[0,.69444,0,0,.83055],8467:[0,.69444,0,0,.47361],8472:[.19444,.44444,0,0,.74027],8476:[0,.69444,0,0,.83055],8501:[0,.69444,0,0,.70277],8592:[-.10889,.39111,0,0,1.14999],8593:[.19444,.69444,0,0,.575],8594:[-.10889,.39111,0,0,1.14999],8595:[.19444,.69444,0,0,.575],8596:[-.10889,.39111,0,0,1.14999],8597:[.25,.75,0,0,.575],8598:[.19444,.69444,0,0,1.14999],8599:[.19444,.69444,0,0,1.14999],8600:[.19444,.69444,0,0,1.14999],8601:[.19444,.69444,0,0,1.14999],8636:[-.10889,.39111,0,0,1.14999],8637:[-.10889,.39111,0,0,1.14999],8640:[-.10889,.39111,0,0,1.14999],8641:[-.10889,.39111,0,0,1.14999],8656:[-.10889,.39111,0,0,1.14999],8657:[.19444,.69444,0,0,.70277],8658:[-.10889,.39111,0,0,1.14999],8659:[.19444,.69444,0,0,.70277],8660:[-.10889,.39111,0,0,1.14999],8661:[.25,.75,0,0,.70277],8704:[0,.69444,0,0,.63889],8706:[0,.69444,.06389,0,.62847],8707:[0,.69444,0,0,.63889],8709:[.05556,.75,0,0,.575],8711:[0,.68611,0,0,.95833],8712:[.08556,.58556,0,0,.76666],8715:[.08556,.58556,0,0,.76666],8722:[.13333,.63333,0,0,.89444],8723:[.13333,.63333,0,0,.89444],8725:[.25,.75,0,0,.575],8726:[.25,.75,0,0,.575],8727:[-.02778,.47222,0,0,.575],8728:[-.02639,.47361,0,0,.575],8729:[-.02639,.47361,0,0,.575],8730:[.18,.82,0,0,.95833],8733:[0,.44444,0,0,.89444],8734:[0,.44444,0,0,1.14999],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.31944],8741:[.25,.75,0,0,.575],8743:[0,.55556,0,0,.76666],8744:[0,.55556,0,0,.76666],8745:[0,.55556,0,0,.76666],8746:[0,.55556,0,0,.76666],8747:[.19444,.69444,.12778,0,.56875],8764:[-.10889,.39111,0,0,.89444],8768:[.19444,.69444,0,0,.31944],8771:[.00222,.50222,0,0,.89444],8776:[.02444,.52444,0,0,.89444],8781:[.00222,.50222,0,0,.89444],8801:[.00222,.50222,0,0,.89444],8804:[.19667,.69667,0,0,.89444],8805:[.19667,.69667,0,0,.89444],8810:[.08556,.58556,0,0,1.14999],8811:[.08556,.58556,0,0,1.14999],8826:[.08556,.58556,0,0,.89444],8827:[.08556,.58556,0,0,.89444],8834:[.08556,.58556,0,0,.89444],8835:[.08556,.58556,0,0,.89444],8838:[.19667,.69667,0,0,.89444],8839:[.19667,.69667,0,0,.89444],8846:[0,.55556,0,0,.76666],8849:[.19667,.69667,0,0,.89444],8850:[.19667,.69667,0,0,.89444],8851:[0,.55556,0,0,.76666],8852:[0,.55556,0,0,.76666],8853:[.13333,.63333,0,0,.89444],8854:[.13333,.63333,0,0,.89444],8855:[.13333,.63333,0,0,.89444],8856:[.13333,.63333,0,0,.89444],8857:[.13333,.63333,0,0,.89444],8866:[0,.69444,0,0,.70277],8867:[0,.69444,0,0,.70277],8868:[0,.69444,0,0,.89444],8869:[0,.69444,0,0,.89444],8900:[-.02639,.47361,0,0,.575],8901:[-.02639,.47361,0,0,.31944],8902:[-.02778,.47222,0,0,.575],8968:[.25,.75,0,0,.51111],8969:[.25,.75,0,0,.51111],8970:[.25,.75,0,0,.51111],8971:[.25,.75,0,0,.51111],8994:[-.13889,.36111,0,0,1.14999],8995:[-.13889,.36111,0,0,1.14999],9651:[.19444,.69444,0,0,1.02222],9657:[-.02778,.47222,0,0,.575],9661:[.19444,.69444,0,0,1.02222],9667:[-.02778,.47222,0,0,.575],9711:[.19444,.69444,0,0,1.14999],9824:[.12963,.69444,0,0,.89444],9825:[.12963,.69444,0,0,.89444],9826:[.12963,.69444,0,0,.89444],9827:[.12963,.69444,0,0,.89444],9837:[0,.75,0,0,.44722],9838:[.19444,.69444,0,0,.44722],9839:[.19444,.69444,0,0,.44722],10216:[.25,.75,0,0,.44722],10217:[.25,.75,0,0,.44722],10815:[0,.68611,0,0,.9],10927:[.19667,.69667,0,0,.89444],10928:[.19667,.69667,0,0,.89444],57376:[.19444,.69444,0,0,0]},"Main-BoldItalic":{33:[0,.69444,.11417,0,.38611],34:[0,.69444,.07939,0,.62055],35:[.19444,.69444,.06833,0,.94444],37:[.05556,.75,.12861,0,.94444],38:[0,.69444,.08528,0,.88555],39:[0,.69444,.12945,0,.35555],40:[.25,.75,.15806,0,.47333],41:[.25,.75,.03306,0,.47333],42:[0,.75,.14333,0,.59111],43:[.10333,.60333,.03306,0,.88555],44:[.19444,.14722,0,0,.35555],45:[0,.44444,.02611,0,.41444],46:[0,.14722,0,0,.35555],47:[.25,.75,.15806,0,.59111],48:[0,.64444,.13167,0,.59111],49:[0,.64444,.13167,0,.59111],50:[0,.64444,.13167,0,.59111],51:[0,.64444,.13167,0,.59111],52:[.19444,.64444,.13167,0,.59111],53:[0,.64444,.13167,0,.59111],54:[0,.64444,.13167,0,.59111],55:[.19444,.64444,.13167,0,.59111],56:[0,.64444,.13167,0,.59111],57:[0,.64444,.13167,0,.59111],58:[0,.44444,.06695,0,.35555],59:[.19444,.44444,.06695,0,.35555],61:[-.10889,.39111,.06833,0,.88555],63:[0,.69444,.11472,0,.59111],64:[0,.69444,.09208,0,.88555],65:[0,.68611,0,0,.86555],66:[0,.68611,.0992,0,.81666],67:[0,.68611,.14208,0,.82666],68:[0,.68611,.09062,0,.87555],69:[0,.68611,.11431,0,.75666],70:[0,.68611,.12903,0,.72722],71:[0,.68611,.07347,0,.89527],72:[0,.68611,.17208,0,.8961],73:[0,.68611,.15681,0,.47166],74:[0,.68611,.145,0,.61055],75:[0,.68611,.14208,0,.89499],76:[0,.68611,0,0,.69777],77:[0,.68611,.17208,0,1.07277],78:[0,.68611,.17208,0,.8961],79:[0,.68611,.09062,0,.85499],80:[0,.68611,.0992,0,.78721],81:[.19444,.68611,.09062,0,.85499],82:[0,.68611,.02559,0,.85944],83:[0,.68611,.11264,0,.64999],84:[0,.68611,.12903,0,.7961],85:[0,.68611,.17208,0,.88083],86:[0,.68611,.18625,0,.86555],87:[0,.68611,.18625,0,1.15999],88:[0,.68611,.15681,0,.86555],89:[0,.68611,.19803,0,.86555],90:[0,.68611,.14208,0,.70888],91:[.25,.75,.1875,0,.35611],93:[.25,.75,.09972,0,.35611],94:[0,.69444,.06709,0,.59111],95:[.31,.13444,.09811,0,.59111],97:[0,.44444,.09426,0,.59111],98:[0,.69444,.07861,0,.53222],99:[0,.44444,.05222,0,.53222],100:[0,.69444,.10861,0,.59111],101:[0,.44444,.085,0,.53222],102:[.19444,.69444,.21778,0,.4],103:[.19444,.44444,.105,0,.53222],104:[0,.69444,.09426,0,.59111],105:[0,.69326,.11387,0,.35555],106:[.19444,.69326,.1672,0,.35555],107:[0,.69444,.11111,0,.53222],108:[0,.69444,.10861,0,.29666],109:[0,.44444,.09426,0,.94444],110:[0,.44444,.09426,0,.64999],111:[0,.44444,.07861,0,.59111],112:[.19444,.44444,.07861,0,.59111],113:[.19444,.44444,.105,0,.53222],114:[0,.44444,.11111,0,.50167],115:[0,.44444,.08167,0,.48694],116:[0,.63492,.09639,0,.385],117:[0,.44444,.09426,0,.62055],118:[0,.44444,.11111,0,.53222],119:[0,.44444,.11111,0,.76777],120:[0,.44444,.12583,0,.56055],121:[.19444,.44444,.105,0,.56166],122:[0,.44444,.13889,0,.49055],126:[.35,.34444,.11472,0,.59111],163:[0,.69444,0,0,.86853],168:[0,.69444,.11473,0,.59111],176:[0,.69444,0,0,.94888],184:[.17014,0,0,0,.53222],198:[0,.68611,.11431,0,1.02277],216:[.04861,.73472,.09062,0,.88555],223:[.19444,.69444,.09736,0,.665],230:[0,.44444,.085,0,.82666],248:[.09722,.54167,.09458,0,.59111],305:[0,.44444,.09426,0,.35555],338:[0,.68611,.11431,0,1.14054],339:[0,.44444,.085,0,.82666],567:[.19444,.44444,.04611,0,.385],710:[0,.69444,.06709,0,.59111],711:[0,.63194,.08271,0,.59111],713:[0,.59444,.10444,0,.59111],714:[0,.69444,.08528,0,.59111],715:[0,.69444,0,0,.59111],728:[0,.69444,.10333,0,.59111],729:[0,.69444,.12945,0,.35555],730:[0,.69444,0,0,.94888],732:[0,.69444,.11472,0,.59111],733:[0,.69444,.11472,0,.59111],915:[0,.68611,.12903,0,.69777],916:[0,.68611,0,0,.94444],920:[0,.68611,.09062,0,.88555],923:[0,.68611,0,0,.80666],926:[0,.68611,.15092,0,.76777],928:[0,.68611,.17208,0,.8961],931:[0,.68611,.11431,0,.82666],933:[0,.68611,.10778,0,.88555],934:[0,.68611,.05632,0,.82666],936:[0,.68611,.10778,0,.88555],937:[0,.68611,.0992,0,.82666],8211:[0,.44444,.09811,0,.59111],8212:[0,.44444,.09811,0,1.18221],8216:[0,.69444,.12945,0,.35555],8217:[0,.69444,.12945,0,.35555],8220:[0,.69444,.16772,0,.62055],8221:[0,.69444,.07939,0,.62055]},"Main-Italic":{33:[0,.69444,.12417,0,.30667],34:[0,.69444,.06961,0,.51444],35:[.19444,.69444,.06616,0,.81777],37:[.05556,.75,.13639,0,.81777],38:[0,.69444,.09694,0,.76666],39:[0,.69444,.12417,0,.30667],40:[.25,.75,.16194,0,.40889],41:[.25,.75,.03694,0,.40889],42:[0,.75,.14917,0,.51111],43:[.05667,.56167,.03694,0,.76666],44:[.19444,.10556,0,0,.30667],45:[0,.43056,.02826,0,.35778],46:[0,.10556,0,0,.30667],47:[.25,.75,.16194,0,.51111],48:[0,.64444,.13556,0,.51111],49:[0,.64444,.13556,0,.51111],50:[0,.64444,.13556,0,.51111],51:[0,.64444,.13556,0,.51111],52:[.19444,.64444,.13556,0,.51111],53:[0,.64444,.13556,0,.51111],54:[0,.64444,.13556,0,.51111],55:[.19444,.64444,.13556,0,.51111],56:[0,.64444,.13556,0,.51111],57:[0,.64444,.13556,0,.51111],58:[0,.43056,.0582,0,.30667],59:[.19444,.43056,.0582,0,.30667],61:[-.13313,.36687,.06616,0,.76666],63:[0,.69444,.1225,0,.51111],64:[0,.69444,.09597,0,.76666],65:[0,.68333,0,0,.74333],66:[0,.68333,.10257,0,.70389],67:[0,.68333,.14528,0,.71555],68:[0,.68333,.09403,0,.755],69:[0,.68333,.12028,0,.67833],70:[0,.68333,.13305,0,.65277],71:[0,.68333,.08722,0,.77361],72:[0,.68333,.16389,0,.74333],73:[0,.68333,.15806,0,.38555],74:[0,.68333,.14028,0,.525],75:[0,.68333,.14528,0,.76888],76:[0,.68333,0,0,.62722],77:[0,.68333,.16389,0,.89666],78:[0,.68333,.16389,0,.74333],79:[0,.68333,.09403,0,.76666],80:[0,.68333,.10257,0,.67833],81:[.19444,.68333,.09403,0,.76666],82:[0,.68333,.03868,0,.72944],83:[0,.68333,.11972,0,.56222],84:[0,.68333,.13305,0,.71555],85:[0,.68333,.16389,0,.74333],86:[0,.68333,.18361,0,.74333],87:[0,.68333,.18361,0,.99888],88:[0,.68333,.15806,0,.74333],89:[0,.68333,.19383,0,.74333],90:[0,.68333,.14528,0,.61333],91:[.25,.75,.1875,0,.30667],93:[.25,.75,.10528,0,.30667],94:[0,.69444,.06646,0,.51111],95:[.31,.12056,.09208,0,.51111],97:[0,.43056,.07671,0,.51111],98:[0,.69444,.06312,0,.46],99:[0,.43056,.05653,0,.46],100:[0,.69444,.10333,0,.51111],101:[0,.43056,.07514,0,.46],102:[.19444,.69444,.21194,0,.30667],103:[.19444,.43056,.08847,0,.46],104:[0,.69444,.07671,0,.51111],105:[0,.65536,.1019,0,.30667],106:[.19444,.65536,.14467,0,.30667],107:[0,.69444,.10764,0,.46],108:[0,.69444,.10333,0,.25555],109:[0,.43056,.07671,0,.81777],110:[0,.43056,.07671,0,.56222],111:[0,.43056,.06312,0,.51111],112:[.19444,.43056,.06312,0,.51111],113:[.19444,.43056,.08847,0,.46],114:[0,.43056,.10764,0,.42166],115:[0,.43056,.08208,0,.40889],116:[0,.61508,.09486,0,.33222],117:[0,.43056,.07671,0,.53666],118:[0,.43056,.10764,0,.46],119:[0,.43056,.10764,0,.66444],120:[0,.43056,.12042,0,.46389],121:[.19444,.43056,.08847,0,.48555],122:[0,.43056,.12292,0,.40889],126:[.35,.31786,.11585,0,.51111],163:[0,.69444,0,0,.76909],168:[0,.66786,.10474,0,.51111],176:[0,.69444,0,0,.83129],184:[.17014,0,0,0,.46],198:[0,.68333,.12028,0,.88277],216:[.04861,.73194,.09403,0,.76666],223:[.19444,.69444,.10514,0,.53666],230:[0,.43056,.07514,0,.71555],248:[.09722,.52778,.09194,0,.51111],305:[0,.43056,0,.02778,.32246],338:[0,.68333,.12028,0,.98499],339:[0,.43056,.07514,0,.71555],567:[.19444,.43056,0,.08334,.38403],710:[0,.69444,.06646,0,.51111],711:[0,.62847,.08295,0,.51111],713:[0,.56167,.10333,0,.51111],714:[0,.69444,.09694,0,.51111],715:[0,.69444,0,0,.51111],728:[0,.69444,.10806,0,.51111],729:[0,.66786,.11752,0,.30667],730:[0,.69444,0,0,.83129],732:[0,.66786,.11585,0,.51111],733:[0,.69444,.1225,0,.51111],915:[0,.68333,.13305,0,.62722],916:[0,.68333,0,0,.81777],920:[0,.68333,.09403,0,.76666],923:[0,.68333,0,0,.69222],926:[0,.68333,.15294,0,.66444],928:[0,.68333,.16389,0,.74333],931:[0,.68333,.12028,0,.71555],933:[0,.68333,.11111,0,.76666],934:[0,.68333,.05986,0,.71555],936:[0,.68333,.11111,0,.76666],937:[0,.68333,.10257,0,.71555],8211:[0,.43056,.09208,0,.51111],8212:[0,.43056,.09208,0,1.02222],8216:[0,.69444,.12417,0,.30667],8217:[0,.69444,.12417,0,.30667],8220:[0,.69444,.1685,0,.51444],8221:[0,.69444,.06961,0,.51444],8463:[0,.68889,0,0,.54028]},"Main-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.27778],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.77778],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.19444,.10556,0,0,.27778],45:[0,.43056,0,0,.33333],46:[0,.10556,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.64444,0,0,.5],49:[0,.64444,0,0,.5],50:[0,.64444,0,0,.5],51:[0,.64444,0,0,.5],52:[0,.64444,0,0,.5],53:[0,.64444,0,0,.5],54:[0,.64444,0,0,.5],55:[0,.64444,0,0,.5],56:[0,.64444,0,0,.5],57:[0,.64444,0,0,.5],58:[0,.43056,0,0,.27778],59:[.19444,.43056,0,0,.27778],60:[.0391,.5391,0,0,.77778],61:[-.13313,.36687,0,0,.77778],62:[.0391,.5391,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.77778],65:[0,.68333,0,0,.75],66:[0,.68333,0,0,.70834],67:[0,.68333,0,0,.72222],68:[0,.68333,0,0,.76389],69:[0,.68333,0,0,.68056],70:[0,.68333,0,0,.65278],71:[0,.68333,0,0,.78472],72:[0,.68333,0,0,.75],73:[0,.68333,0,0,.36111],74:[0,.68333,0,0,.51389],75:[0,.68333,0,0,.77778],76:[0,.68333,0,0,.625],77:[0,.68333,0,0,.91667],78:[0,.68333,0,0,.75],79:[0,.68333,0,0,.77778],80:[0,.68333,0,0,.68056],81:[.19444,.68333,0,0,.77778],82:[0,.68333,0,0,.73611],83:[0,.68333,0,0,.55556],84:[0,.68333,0,0,.72222],85:[0,.68333,0,0,.75],86:[0,.68333,.01389,0,.75],87:[0,.68333,.01389,0,1.02778],88:[0,.68333,0,0,.75],89:[0,.68333,.025,0,.75],90:[0,.68333,0,0,.61111],91:[.25,.75,0,0,.27778],92:[.25,.75,0,0,.5],93:[.25,.75,0,0,.27778],94:[0,.69444,0,0,.5],95:[.31,.12056,.02778,0,.5],97:[0,.43056,0,0,.5],98:[0,.69444,0,0,.55556],99:[0,.43056,0,0,.44445],100:[0,.69444,0,0,.55556],101:[0,.43056,0,0,.44445],102:[0,.69444,.07778,0,.30556],103:[.19444,.43056,.01389,0,.5],104:[0,.69444,0,0,.55556],105:[0,.66786,0,0,.27778],106:[.19444,.66786,0,0,.30556],107:[0,.69444,0,0,.52778],108:[0,.69444,0,0,.27778],109:[0,.43056,0,0,.83334],110:[0,.43056,0,0,.55556],111:[0,.43056,0,0,.5],112:[.19444,.43056,0,0,.55556],113:[.19444,.43056,0,0,.52778],114:[0,.43056,0,0,.39167],115:[0,.43056,0,0,.39445],116:[0,.61508,0,0,.38889],117:[0,.43056,0,0,.55556],118:[0,.43056,.01389,0,.52778],119:[0,.43056,.01389,0,.72222],120:[0,.43056,0,0,.52778],121:[.19444,.43056,.01389,0,.52778],122:[0,.43056,0,0,.44445],123:[.25,.75,0,0,.5],124:[.25,.75,0,0,.27778],125:[.25,.75,0,0,.5],126:[.35,.31786,0,0,.5],160:[0,0,0,0,.25],167:[.19444,.69444,0,0,.44445],168:[0,.66786,0,0,.5],172:[0,.43056,0,0,.66667],176:[0,.69444,0,0,.75],177:[.08333,.58333,0,0,.77778],182:[.19444,.69444,0,0,.61111],184:[.17014,0,0,0,.44445],198:[0,.68333,0,0,.90278],215:[.08333,.58333,0,0,.77778],216:[.04861,.73194,0,0,.77778],223:[0,.69444,0,0,.5],230:[0,.43056,0,0,.72222],247:[.08333,.58333,0,0,.77778],248:[.09722,.52778,0,0,.5],305:[0,.43056,0,0,.27778],338:[0,.68333,0,0,1.01389],339:[0,.43056,0,0,.77778],567:[.19444,.43056,0,0,.30556],710:[0,.69444,0,0,.5],711:[0,.62847,0,0,.5],713:[0,.56778,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.66786,0,0,.27778],730:[0,.69444,0,0,.75],732:[0,.66786,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.68333,0,0,.625],916:[0,.68333,0,0,.83334],920:[0,.68333,0,0,.77778],923:[0,.68333,0,0,.69445],926:[0,.68333,0,0,.66667],928:[0,.68333,0,0,.75],931:[0,.68333,0,0,.72222],933:[0,.68333,0,0,.77778],934:[0,.68333,0,0,.72222],936:[0,.68333,0,0,.77778],937:[0,.68333,0,0,.72222],8211:[0,.43056,.02778,0,.5],8212:[0,.43056,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5],8224:[.19444,.69444,0,0,.44445],8225:[.19444,.69444,0,0,.44445],8230:[0,.12,0,0,1.172],8242:[0,.55556,0,0,.275],8407:[0,.71444,.15382,0,.5],8463:[0,.68889,0,0,.54028],8465:[0,.69444,0,0,.72222],8467:[0,.69444,0,.11111,.41667],8472:[.19444,.43056,0,.11111,.63646],8476:[0,.69444,0,0,.72222],8501:[0,.69444,0,0,.61111],8592:[-.13313,.36687,0,0,1],8593:[.19444,.69444,0,0,.5],8594:[-.13313,.36687,0,0,1],8595:[.19444,.69444,0,0,.5],8596:[-.13313,.36687,0,0,1],8597:[.25,.75,0,0,.5],8598:[.19444,.69444,0,0,1],8599:[.19444,.69444,0,0,1],8600:[.19444,.69444,0,0,1],8601:[.19444,.69444,0,0,1],8614:[.011,.511,0,0,1],8617:[.011,.511,0,0,1.126],8618:[.011,.511,0,0,1.126],8636:[-.13313,.36687,0,0,1],8637:[-.13313,.36687,0,0,1],8640:[-.13313,.36687,0,0,1],8641:[-.13313,.36687,0,0,1],8652:[.011,.671,0,0,1],8656:[-.13313,.36687,0,0,1],8657:[.19444,.69444,0,0,.61111],8658:[-.13313,.36687,0,0,1],8659:[.19444,.69444,0,0,.61111],8660:[-.13313,.36687,0,0,1],8661:[.25,.75,0,0,.61111],8704:[0,.69444,0,0,.55556],8706:[0,.69444,.05556,.08334,.5309],8707:[0,.69444,0,0,.55556],8709:[.05556,.75,0,0,.5],8711:[0,.68333,0,0,.83334],8712:[.0391,.5391,0,0,.66667],8715:[.0391,.5391,0,0,.66667],8722:[.08333,.58333,0,0,.77778],8723:[.08333,.58333,0,0,.77778],8725:[.25,.75,0,0,.5],8726:[.25,.75,0,0,.5],8727:[-.03472,.46528,0,0,.5],8728:[-.05555,.44445,0,0,.5],8729:[-.05555,.44445,0,0,.5],8730:[.2,.8,0,0,.83334],8733:[0,.43056,0,0,.77778],8734:[0,.43056,0,0,1],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.27778],8741:[.25,.75,0,0,.5],8743:[0,.55556,0,0,.66667],8744:[0,.55556,0,0,.66667],8745:[0,.55556,0,0,.66667],8746:[0,.55556,0,0,.66667],8747:[.19444,.69444,.11111,0,.41667],8764:[-.13313,.36687,0,0,.77778],8768:[.19444,.69444,0,0,.27778],8771:[-.03625,.46375,0,0,.77778],8773:[-.022,.589,0,0,1],8776:[-.01688,.48312,0,0,.77778],8781:[-.03625,.46375,0,0,.77778],8784:[-.133,.67,0,0,.778],8801:[-.03625,.46375,0,0,.77778],8804:[.13597,.63597,0,0,.77778],8805:[.13597,.63597,0,0,.77778],8810:[.0391,.5391,0,0,1],8811:[.0391,.5391,0,0,1],8826:[.0391,.5391,0,0,.77778],8827:[.0391,.5391,0,0,.77778],8834:[.0391,.5391,0,0,.77778],8835:[.0391,.5391,0,0,.77778],8838:[.13597,.63597,0,0,.77778],8839:[.13597,.63597,0,0,.77778],8846:[0,.55556,0,0,.66667],8849:[.13597,.63597,0,0,.77778],8850:[.13597,.63597,0,0,.77778],8851:[0,.55556,0,0,.66667],8852:[0,.55556,0,0,.66667],8853:[.08333,.58333,0,0,.77778],8854:[.08333,.58333,0,0,.77778],8855:[.08333,.58333,0,0,.77778],8856:[.08333,.58333,0,0,.77778],8857:[.08333,.58333,0,0,.77778],8866:[0,.69444,0,0,.61111],8867:[0,.69444,0,0,.61111],8868:[0,.69444,0,0,.77778],8869:[0,.69444,0,0,.77778],8872:[.249,.75,0,0,.867],8900:[-.05555,.44445,0,0,.5],8901:[-.05555,.44445,0,0,.27778],8902:[-.03472,.46528,0,0,.5],8904:[.005,.505,0,0,.9],8942:[.03,.9,0,0,.278],8943:[-.19,.31,0,0,1.172],8945:[-.1,.82,0,0,1.282],8968:[.25,.75,0,0,.44445],8969:[.25,.75,0,0,.44445],8970:[.25,.75,0,0,.44445],8971:[.25,.75,0,0,.44445],8994:[-.14236,.35764,0,0,1],8995:[-.14236,.35764,0,0,1],9136:[.244,.744,0,0,.412],9137:[.244,.744,0,0,.412],9651:[.19444,.69444,0,0,.88889],9657:[-.03472,.46528,0,0,.5],9661:[.19444,.69444,0,0,.88889],9667:[-.03472,.46528,0,0,.5],9711:[.19444,.69444,0,0,1],9824:[.12963,.69444,0,0,.77778],9825:[.12963,.69444,0,0,.77778],9826:[.12963,.69444,0,0,.77778],9827:[.12963,.69444,0,0,.77778],9837:[0,.75,0,0,.38889],9838:[.19444,.69444,0,0,.38889],9839:[.19444,.69444,0,0,.38889],10216:[.25,.75,0,0,.38889],10217:[.25,.75,0,0,.38889],10222:[.244,.744,0,0,.412],10223:[.244,.744,0,0,.412],10229:[.011,.511,0,0,1.609],10230:[.011,.511,0,0,1.638],10231:[.011,.511,0,0,1.859],10232:[.024,.525,0,0,1.609],10233:[.024,.525,0,0,1.638],10234:[.024,.525,0,0,1.858],10236:[.011,.511,0,0,1.638],10815:[0,.68333,0,0,.75],10927:[.13597,.63597,0,0,.77778],10928:[.13597,.63597,0,0,.77778],57376:[.19444,.69444,0,0,0]},"Math-BoldItalic":{65:[0,.68611,0,0,.86944],66:[0,.68611,.04835,0,.8664],67:[0,.68611,.06979,0,.81694],68:[0,.68611,.03194,0,.93812],69:[0,.68611,.05451,0,.81007],70:[0,.68611,.15972,0,.68889],71:[0,.68611,0,0,.88673],72:[0,.68611,.08229,0,.98229],73:[0,.68611,.07778,0,.51111],74:[0,.68611,.10069,0,.63125],75:[0,.68611,.06979,0,.97118],76:[0,.68611,0,0,.75555],77:[0,.68611,.11424,0,1.14201],78:[0,.68611,.11424,0,.95034],79:[0,.68611,.03194,0,.83666],80:[0,.68611,.15972,0,.72309],81:[.19444,.68611,0,0,.86861],82:[0,.68611,.00421,0,.87235],83:[0,.68611,.05382,0,.69271],84:[0,.68611,.15972,0,.63663],85:[0,.68611,.11424,0,.80027],86:[0,.68611,.25555,0,.67778],87:[0,.68611,.15972,0,1.09305],88:[0,.68611,.07778,0,.94722],89:[0,.68611,.25555,0,.67458],90:[0,.68611,.06979,0,.77257],97:[0,.44444,0,0,.63287],98:[0,.69444,0,0,.52083],99:[0,.44444,0,0,.51342],100:[0,.69444,0,0,.60972],101:[0,.44444,0,0,.55361],102:[.19444,.69444,.11042,0,.56806],103:[.19444,.44444,.03704,0,.5449],104:[0,.69444,0,0,.66759],105:[0,.69326,0,0,.4048],106:[.19444,.69326,.0622,0,.47083],107:[0,.69444,.01852,0,.6037],108:[0,.69444,.0088,0,.34815],109:[0,.44444,0,0,1.0324],110:[0,.44444,0,0,.71296],111:[0,.44444,0,0,.58472],112:[.19444,.44444,0,0,.60092],113:[.19444,.44444,.03704,0,.54213],114:[0,.44444,.03194,0,.5287],115:[0,.44444,0,0,.53125],116:[0,.63492,0,0,.41528],117:[0,.44444,0,0,.68102],118:[0,.44444,.03704,0,.56666],119:[0,.44444,.02778,0,.83148],120:[0,.44444,0,0,.65903],121:[.19444,.44444,.03704,0,.59028],122:[0,.44444,.04213,0,.55509],915:[0,.68611,.15972,0,.65694],916:[0,.68611,0,0,.95833],920:[0,.68611,.03194,0,.86722],923:[0,.68611,0,0,.80555],926:[0,.68611,.07458,0,.84125],928:[0,.68611,.08229,0,.98229],931:[0,.68611,.05451,0,.88507],933:[0,.68611,.15972,0,.67083],934:[0,.68611,0,0,.76666],936:[0,.68611,.11653,0,.71402],937:[0,.68611,.04835,0,.8789],945:[0,.44444,0,0,.76064],946:[.19444,.69444,.03403,0,.65972],947:[.19444,.44444,.06389,0,.59003],948:[0,.69444,.03819,0,.52222],949:[0,.44444,0,0,.52882],950:[.19444,.69444,.06215,0,.50833],951:[.19444,.44444,.03704,0,.6],952:[0,.69444,.03194,0,.5618],953:[0,.44444,0,0,.41204],954:[0,.44444,0,0,.66759],955:[0,.69444,0,0,.67083],956:[.19444,.44444,0,0,.70787],957:[0,.44444,.06898,0,.57685],958:[.19444,.69444,.03021,0,.50833],959:[0,.44444,0,0,.58472],960:[0,.44444,.03704,0,.68241],961:[.19444,.44444,0,0,.6118],962:[.09722,.44444,.07917,0,.42361],963:[0,.44444,.03704,0,.68588],964:[0,.44444,.13472,0,.52083],965:[0,.44444,.03704,0,.63055],966:[.19444,.44444,0,0,.74722],967:[.19444,.44444,0,0,.71805],968:[.19444,.69444,.03704,0,.75833],969:[0,.44444,.03704,0,.71782],977:[0,.69444,0,0,.69155],981:[.19444,.69444,0,0,.7125],982:[0,.44444,.03194,0,.975],1009:[.19444,.44444,0,0,.6118],1013:[0,.44444,0,0,.48333]},"Math-Italic":{65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059]},"Math-Regular":{65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059]},"SansSerif-Bold":{33:[0,.69444,0,0,.36667],34:[0,.69444,0,0,.55834],35:[.19444,.69444,0,0,.91667],36:[.05556,.75,0,0,.55],37:[.05556,.75,0,0,1.02912],38:[0,.69444,0,0,.83056],39:[0,.69444,0,0,.30556],40:[.25,.75,0,0,.42778],41:[.25,.75,0,0,.42778],42:[0,.75,0,0,.55],43:[.11667,.61667,0,0,.85556],44:[.10556,.13056,0,0,.30556],45:[0,.45833,0,0,.36667],46:[0,.13056,0,0,.30556],47:[.25,.75,0,0,.55],48:[0,.69444,0,0,.55],49:[0,.69444,0,0,.55],50:[0,.69444,0,0,.55],51:[0,.69444,0,0,.55],52:[0,.69444,0,0,.55],53:[0,.69444,0,0,.55],54:[0,.69444,0,0,.55],55:[0,.69444,0,0,.55],56:[0,.69444,0,0,.55],57:[0,.69444,0,0,.55],58:[0,.45833,0,0,.30556],59:[.10556,.45833,0,0,.30556],61:[-.09375,.40625,0,0,.85556],63:[0,.69444,0,0,.51945],64:[0,.69444,0,0,.73334],65:[0,.69444,0,0,.73334],66:[0,.69444,0,0,.73334],67:[0,.69444,0,0,.70278],68:[0,.69444,0,0,.79445],69:[0,.69444,0,0,.64167],70:[0,.69444,0,0,.61111],71:[0,.69444,0,0,.73334],72:[0,.69444,0,0,.79445],73:[0,.69444,0,0,.33056],74:[0,.69444,0,0,.51945],75:[0,.69444,0,0,.76389],76:[0,.69444,0,0,.58056],77:[0,.69444,0,0,.97778],78:[0,.69444,0,0,.79445],79:[0,.69444,0,0,.79445],80:[0,.69444,0,0,.70278],81:[.10556,.69444,0,0,.79445],82:[0,.69444,0,0,.70278],83:[0,.69444,0,0,.61111],84:[0,.69444,0,0,.73334],85:[0,.69444,0,0,.76389],86:[0,.69444,.01528,0,.73334],87:[0,.69444,.01528,0,1.03889],88:[0,.69444,0,0,.73334],89:[0,.69444,.0275,0,.73334],90:[0,.69444,0,0,.67223],91:[.25,.75,0,0,.34306],93:[.25,.75,0,0,.34306],94:[0,.69444,0,0,.55],95:[.35,.10833,.03056,0,.55],97:[0,.45833,0,0,.525],98:[0,.69444,0,0,.56111],99:[0,.45833,0,0,.48889],100:[0,.69444,0,0,.56111],101:[0,.45833,0,0,.51111],102:[0,.69444,.07639,0,.33611],103:[.19444,.45833,.01528,0,.55],104:[0,.69444,0,0,.56111],105:[0,.69444,0,0,.25556],106:[.19444,.69444,0,0,.28611],107:[0,.69444,0,0,.53056],108:[0,.69444,0,0,.25556],109:[0,.45833,0,0,.86667],110:[0,.45833,0,0,.56111],111:[0,.45833,0,0,.55],112:[.19444,.45833,0,0,.56111],113:[.19444,.45833,0,0,.56111],114:[0,.45833,.01528,0,.37222],115:[0,.45833,0,0,.42167],116:[0,.58929,0,0,.40417],117:[0,.45833,0,0,.56111],118:[0,.45833,.01528,0,.5],119:[0,.45833,.01528,0,.74445],120:[0,.45833,0,0,.5],121:[.19444,.45833,.01528,0,.5],122:[0,.45833,0,0,.47639],126:[.35,.34444,0,0,.55],168:[0,.69444,0,0,.55],176:[0,.69444,0,0,.73334],180:[0,.69444,0,0,.55],184:[.17014,0,0,0,.48889],305:[0,.45833,0,0,.25556],567:[.19444,.45833,0,0,.28611],710:[0,.69444,0,0,.55],711:[0,.63542,0,0,.55],713:[0,.63778,0,0,.55],728:[0,.69444,0,0,.55],729:[0,.69444,0,0,.30556],730:[0,.69444,0,0,.73334],732:[0,.69444,0,0,.55],733:[0,.69444,0,0,.55],915:[0,.69444,0,0,.58056],916:[0,.69444,0,0,.91667],920:[0,.69444,0,0,.85556],923:[0,.69444,0,0,.67223],926:[0,.69444,0,0,.73334],928:[0,.69444,0,0,.79445],931:[0,.69444,0,0,.79445],933:[0,.69444,0,0,.85556],934:[0,.69444,0,0,.79445],936:[0,.69444,0,0,.85556],937:[0,.69444,0,0,.79445],8211:[0,.45833,.03056,0,.55],8212:[0,.45833,.03056,0,1.10001],8216:[0,.69444,0,0,.30556],8217:[0,.69444,0,0,.30556],8220:[0,.69444,0,0,.55834],8221:[0,.69444,0,0,.55834]},"SansSerif-Italic":{33:[0,.69444,.05733,0,.31945],34:[0,.69444,.00316,0,.5],35:[.19444,.69444,.05087,0,.83334],36:[.05556,.75,.11156,0,.5],37:[.05556,.75,.03126,0,.83334],38:[0,.69444,.03058,0,.75834],39:[0,.69444,.07816,0,.27778],40:[.25,.75,.13164,0,.38889],41:[.25,.75,.02536,0,.38889],42:[0,.75,.11775,0,.5],43:[.08333,.58333,.02536,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,.01946,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,.13164,0,.5],48:[0,.65556,.11156,0,.5],49:[0,.65556,.11156,0,.5],50:[0,.65556,.11156,0,.5],51:[0,.65556,.11156,0,.5],52:[0,.65556,.11156,0,.5],53:[0,.65556,.11156,0,.5],54:[0,.65556,.11156,0,.5],55:[0,.65556,.11156,0,.5],56:[0,.65556,.11156,0,.5],57:[0,.65556,.11156,0,.5],58:[0,.44444,.02502,0,.27778],59:[.125,.44444,.02502,0,.27778],61:[-.13,.37,.05087,0,.77778],63:[0,.69444,.11809,0,.47222],64:[0,.69444,.07555,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,.08293,0,.66667],67:[0,.69444,.11983,0,.63889],68:[0,.69444,.07555,0,.72223],69:[0,.69444,.11983,0,.59722],70:[0,.69444,.13372,0,.56945],71:[0,.69444,.11983,0,.66667],72:[0,.69444,.08094,0,.70834],73:[0,.69444,.13372,0,.27778],74:[0,.69444,.08094,0,.47222],75:[0,.69444,.11983,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,.08094,0,.875],78:[0,.69444,.08094,0,.70834],79:[0,.69444,.07555,0,.73611],80:[0,.69444,.08293,0,.63889],81:[.125,.69444,.07555,0,.73611],82:[0,.69444,.08293,0,.64584],83:[0,.69444,.09205,0,.55556],84:[0,.69444,.13372,0,.68056],85:[0,.69444,.08094,0,.6875],86:[0,.69444,.1615,0,.66667],87:[0,.69444,.1615,0,.94445],88:[0,.69444,.13372,0,.66667],89:[0,.69444,.17261,0,.66667],90:[0,.69444,.11983,0,.61111],91:[.25,.75,.15942,0,.28889],93:[.25,.75,.08719,0,.28889],94:[0,.69444,.0799,0,.5],95:[.35,.09444,.08616,0,.5],97:[0,.44444,.00981,0,.48056],98:[0,.69444,.03057,0,.51667],99:[0,.44444,.08336,0,.44445],100:[0,.69444,.09483,0,.51667],101:[0,.44444,.06778,0,.44445],102:[0,.69444,.21705,0,.30556],103:[.19444,.44444,.10836,0,.5],104:[0,.69444,.01778,0,.51667],105:[0,.67937,.09718,0,.23889],106:[.19444,.67937,.09162,0,.26667],107:[0,.69444,.08336,0,.48889],108:[0,.69444,.09483,0,.23889],109:[0,.44444,.01778,0,.79445],110:[0,.44444,.01778,0,.51667],111:[0,.44444,.06613,0,.5],112:[.19444,.44444,.0389,0,.51667],113:[.19444,.44444,.04169,0,.51667],114:[0,.44444,.10836,0,.34167],115:[0,.44444,.0778,0,.38333],116:[0,.57143,.07225,0,.36111],117:[0,.44444,.04169,0,.51667],118:[0,.44444,.10836,0,.46111],119:[0,.44444,.10836,0,.68334],120:[0,.44444,.09169,0,.46111],121:[.19444,.44444,.10836,0,.46111],122:[0,.44444,.08752,0,.43472],126:[.35,.32659,.08826,0,.5],168:[0,.67937,.06385,0,.5],176:[0,.69444,0,0,.73752],184:[.17014,0,0,0,.44445],305:[0,.44444,.04169,0,.23889],567:[.19444,.44444,.04169,0,.26667],710:[0,.69444,.0799,0,.5],711:[0,.63194,.08432,0,.5],713:[0,.60889,.08776,0,.5],714:[0,.69444,.09205,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,.09483,0,.5],729:[0,.67937,.07774,0,.27778],730:[0,.69444,0,0,.73752],732:[0,.67659,.08826,0,.5],733:[0,.69444,.09205,0,.5],915:[0,.69444,.13372,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,.07555,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,.12816,0,.66667],928:[0,.69444,.08094,0,.70834],931:[0,.69444,.11983,0,.72222],933:[0,.69444,.09031,0,.77778],934:[0,.69444,.04603,0,.72222],936:[0,.69444,.09031,0,.77778],937:[0,.69444,.08293,0,.72222],8211:[0,.44444,.08616,0,.5],8212:[0,.44444,.08616,0,1],8216:[0,.69444,.07816,0,.27778],8217:[0,.69444,.07816,0,.27778],8220:[0,.69444,.14205,0,.5],8221:[0,.69444,.00316,0,.5]},"SansSerif-Regular":{33:[0,.69444,0,0,.31945],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.75834],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,0,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.65556,0,0,.5],49:[0,.65556,0,0,.5],50:[0,.65556,0,0,.5],51:[0,.65556,0,0,.5],52:[0,.65556,0,0,.5],53:[0,.65556,0,0,.5],54:[0,.65556,0,0,.5],55:[0,.65556,0,0,.5],56:[0,.65556,0,0,.5],57:[0,.65556,0,0,.5],58:[0,.44444,0,0,.27778],59:[.125,.44444,0,0,.27778],61:[-.13,.37,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,0,0,.66667],67:[0,.69444,0,0,.63889],68:[0,.69444,0,0,.72223],69:[0,.69444,0,0,.59722],70:[0,.69444,0,0,.56945],71:[0,.69444,0,0,.66667],72:[0,.69444,0,0,.70834],73:[0,.69444,0,0,.27778],74:[0,.69444,0,0,.47222],75:[0,.69444,0,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,0,0,.875],78:[0,.69444,0,0,.70834],79:[0,.69444,0,0,.73611],80:[0,.69444,0,0,.63889],81:[.125,.69444,0,0,.73611],82:[0,.69444,0,0,.64584],83:[0,.69444,0,0,.55556],84:[0,.69444,0,0,.68056],85:[0,.69444,0,0,.6875],86:[0,.69444,.01389,0,.66667],87:[0,.69444,.01389,0,.94445],88:[0,.69444,0,0,.66667],89:[0,.69444,.025,0,.66667],90:[0,.69444,0,0,.61111],91:[.25,.75,0,0,.28889],93:[.25,.75,0,0,.28889],94:[0,.69444,0,0,.5],95:[.35,.09444,.02778,0,.5],97:[0,.44444,0,0,.48056],98:[0,.69444,0,0,.51667],99:[0,.44444,0,0,.44445],100:[0,.69444,0,0,.51667],101:[0,.44444,0,0,.44445],102:[0,.69444,.06944,0,.30556],103:[.19444,.44444,.01389,0,.5],104:[0,.69444,0,0,.51667],105:[0,.67937,0,0,.23889],106:[.19444,.67937,0,0,.26667],107:[0,.69444,0,0,.48889],108:[0,.69444,0,0,.23889],109:[0,.44444,0,0,.79445],110:[0,.44444,0,0,.51667],111:[0,.44444,0,0,.5],112:[.19444,.44444,0,0,.51667],113:[.19444,.44444,0,0,.51667],114:[0,.44444,.01389,0,.34167],115:[0,.44444,0,0,.38333],116:[0,.57143,0,0,.36111],117:[0,.44444,0,0,.51667],118:[0,.44444,.01389,0,.46111],119:[0,.44444,.01389,0,.68334],120:[0,.44444,0,0,.46111],121:[.19444,.44444,.01389,0,.46111],122:[0,.44444,0,0,.43472],126:[.35,.32659,0,0,.5],168:[0,.67937,0,0,.5],176:[0,.69444,0,0,.66667],184:[.17014,0,0,0,.44445],305:[0,.44444,0,0,.23889],567:[.19444,.44444,0,0,.26667],710:[0,.69444,0,0,.5],711:[0,.63194,0,0,.5],713:[0,.60889,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.67937,0,0,.27778],730:[0,.69444,0,0,.66667],732:[0,.67659,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.69444,0,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,0,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,0,0,.66667],928:[0,.69444,0,0,.70834],931:[0,.69444,0,0,.72222],933:[0,.69444,0,0,.77778],934:[0,.69444,0,0,.72222],936:[0,.69444,0,0,.77778],937:[0,.69444,0,0,.72222],8211:[0,.44444,.02778,0,.5],8212:[0,.44444,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5]},"Script-Regular":{65:[0,.7,.22925,0,.80253],66:[0,.7,.04087,0,.90757],67:[0,.7,.1689,0,.66619],68:[0,.7,.09371,0,.77443],69:[0,.7,.18583,0,.56162],70:[0,.7,.13634,0,.89544],71:[0,.7,.17322,0,.60961],72:[0,.7,.29694,0,.96919],73:[0,.7,.19189,0,.80907],74:[.27778,.7,.19189,0,1.05159],75:[0,.7,.31259,0,.91364],76:[0,.7,.19189,0,.87373],77:[0,.7,.15981,0,1.08031],78:[0,.7,.3525,0,.9015],79:[0,.7,.08078,0,.73787],80:[0,.7,.08078,0,1.01262],81:[0,.7,.03305,0,.88282],82:[0,.7,.06259,0,.85],83:[0,.7,.19189,0,.86767],84:[0,.7,.29087,0,.74697],85:[0,.7,.25815,0,.79996],86:[0,.7,.27523,0,.62204],87:[0,.7,.27523,0,.80532],88:[0,.7,.26006,0,.94445],89:[0,.7,.2939,0,.70961],90:[0,.7,.24037,0,.8212]},"Size1-Regular":{40:[.35001,.85,0,0,.45834],41:[.35001,.85,0,0,.45834],47:[.35001,.85,0,0,.57778],91:[.35001,.85,0,0,.41667],92:[.35001,.85,0,0,.57778],93:[.35001,.85,0,0,.41667],123:[.35001,.85,0,0,.58334],125:[.35001,.85,0,0,.58334],710:[0,.72222,0,0,.55556],732:[0,.72222,0,0,.55556],770:[0,.72222,0,0,.55556],771:[0,.72222,0,0,.55556],8214:[-99e-5,.601,0,0,.77778],8593:[1e-5,.6,0,0,.66667],8595:[1e-5,.6,0,0,.66667],8657:[1e-5,.6,0,0,.77778],8659:[1e-5,.6,0,0,.77778],8719:[.25001,.75,0,0,.94445],8720:[.25001,.75,0,0,.94445],8721:[.25001,.75,0,0,1.05556],8730:[.35001,.85,0,0,1],8739:[-.00599,.606,0,0,.33333],8741:[-.00599,.606,0,0,.55556],8747:[.30612,.805,.19445,0,.47222],8748:[.306,.805,.19445,0,.47222],8749:[.306,.805,.19445,0,.47222],8750:[.30612,.805,.19445,0,.47222],8896:[.25001,.75,0,0,.83334],8897:[.25001,.75,0,0,.83334],8898:[.25001,.75,0,0,.83334],8899:[.25001,.75,0,0,.83334],8968:[.35001,.85,0,0,.47222],8969:[.35001,.85,0,0,.47222],8970:[.35001,.85,0,0,.47222],8971:[.35001,.85,0,0,.47222],9168:[-99e-5,.601,0,0,.66667],10216:[.35001,.85,0,0,.47222],10217:[.35001,.85,0,0,.47222],10752:[.25001,.75,0,0,1.11111],10753:[.25001,.75,0,0,1.11111],10754:[.25001,.75,0,0,1.11111],10756:[.25001,.75,0,0,.83334],10758:[.25001,.75,0,0,.83334]},"Size2-Regular":{40:[.65002,1.15,0,0,.59722],41:[.65002,1.15,0,0,.59722],47:[.65002,1.15,0,0,.81111],91:[.65002,1.15,0,0,.47222],92:[.65002,1.15,0,0,.81111],93:[.65002,1.15,0,0,.47222],123:[.65002,1.15,0,0,.66667],125:[.65002,1.15,0,0,.66667],710:[0,.75,0,0,1],732:[0,.75,0,0,1],770:[0,.75,0,0,1],771:[0,.75,0,0,1],8719:[.55001,1.05,0,0,1.27778],8720:[.55001,1.05,0,0,1.27778],8721:[.55001,1.05,0,0,1.44445],8730:[.65002,1.15,0,0,1],8747:[.86225,1.36,.44445,0,.55556],8748:[.862,1.36,.44445,0,.55556],8749:[.862,1.36,.44445,0,.55556],8750:[.86225,1.36,.44445,0,.55556],8896:[.55001,1.05,0,0,1.11111],8897:[.55001,1.05,0,0,1.11111],8898:[.55001,1.05,0,0,1.11111],8899:[.55001,1.05,0,0,1.11111],8968:[.65002,1.15,0,0,.52778],8969:[.65002,1.15,0,0,.52778],8970:[.65002,1.15,0,0,.52778],8971:[.65002,1.15,0,0,.52778],10216:[.65002,1.15,0,0,.61111],10217:[.65002,1.15,0,0,.61111],10752:[.55001,1.05,0,0,1.51112],10753:[.55001,1.05,0,0,1.51112],10754:[.55001,1.05,0,0,1.51112],10756:[.55001,1.05,0,0,1.11111],10758:[.55001,1.05,0,0,1.11111]},"Size3-Regular":{40:[.95003,1.45,0,0,.73611],41:[.95003,1.45,0,0,.73611],47:[.95003,1.45,0,0,1.04445],91:[.95003,1.45,0,0,.52778],92:[.95003,1.45,0,0,1.04445],93:[.95003,1.45,0,0,.52778],123:[.95003,1.45,0,0,.75],125:[.95003,1.45,0,0,.75],710:[0,.75,0,0,1.44445],732:[0,.75,0,0,1.44445],770:[0,.75,0,0,1.44445],771:[0,.75,0,0,1.44445],8730:[.95003,1.45,0,0,1],8968:[.95003,1.45,0,0,.58334],8969:[.95003,1.45,0,0,.58334],8970:[.95003,1.45,0,0,.58334],8971:[.95003,1.45,0,0,.58334],10216:[.95003,1.45,0,0,.75],10217:[.95003,1.45,0,0,.75]},"Size4-Regular":{40:[1.25003,1.75,0,0,.79167],41:[1.25003,1.75,0,0,.79167],47:[1.25003,1.75,0,0,1.27778],91:[1.25003,1.75,0,0,.58334],92:[1.25003,1.75,0,0,1.27778],93:[1.25003,1.75,0,0,.58334],123:[1.25003,1.75,0,0,.80556],125:[1.25003,1.75,0,0,.80556],710:[0,.825,0,0,1.8889],732:[0,.825,0,0,1.8889],770:[0,.825,0,0,1.8889],771:[0,.825,0,0,1.8889],8730:[1.25003,1.75,0,0,1],8968:[1.25003,1.75,0,0,.63889],8969:[1.25003,1.75,0,0,.63889],8970:[1.25003,1.75,0,0,.63889],8971:[1.25003,1.75,0,0,.63889],9115:[.64502,1.155,0,0,.875],9116:[1e-5,.6,0,0,.875],9117:[.64502,1.155,0,0,.875],9118:[.64502,1.155,0,0,.875],9119:[1e-5,.6,0,0,.875],9120:[.64502,1.155,0,0,.875],9121:[.64502,1.155,0,0,.66667],9122:[-99e-5,.601,0,0,.66667],9123:[.64502,1.155,0,0,.66667],9124:[.64502,1.155,0,0,.66667],9125:[-99e-5,.601,0,0,.66667],9126:[.64502,1.155,0,0,.66667],9127:[1e-5,.9,0,0,.88889],9128:[.65002,1.15,0,0,.88889],9129:[.90001,0,0,0,.88889],9130:[0,.3,0,0,.88889],9131:[1e-5,.9,0,0,.88889],9132:[.65002,1.15,0,0,.88889],9133:[.90001,0,0,0,.88889],9143:[.88502,.915,0,0,1.05556],10216:[1.25003,1.75,0,0,.80556],10217:[1.25003,1.75,0,0,.80556],57344:[-.00499,.605,0,0,1.05556],57345:[-.00499,.605,0,0,1.05556],57680:[0,.12,0,0,.45],57681:[0,.12,0,0,.45],57682:[0,.12,0,0,.45],57683:[0,.12,0,0,.45]},"Typewriter-Regular":{32:[0,0,0,0,.525],33:[0,.61111,0,0,.525],34:[0,.61111,0,0,.525],35:[0,.61111,0,0,.525],36:[.08333,.69444,0,0,.525],37:[.08333,.69444,0,0,.525],38:[0,.61111,0,0,.525],39:[0,.61111,0,0,.525],40:[.08333,.69444,0,0,.525],41:[.08333,.69444,0,0,.525],42:[0,.52083,0,0,.525],43:[-.08056,.53055,0,0,.525],44:[.13889,.125,0,0,.525],45:[-.08056,.53055,0,0,.525],46:[0,.125,0,0,.525],47:[.08333,.69444,0,0,.525],48:[0,.61111,0,0,.525],49:[0,.61111,0,0,.525],50:[0,.61111,0,0,.525],51:[0,.61111,0,0,.525],52:[0,.61111,0,0,.525],53:[0,.61111,0,0,.525],54:[0,.61111,0,0,.525],55:[0,.61111,0,0,.525],56:[0,.61111,0,0,.525],57:[0,.61111,0,0,.525],58:[0,.43056,0,0,.525],59:[.13889,.43056,0,0,.525],60:[-.05556,.55556,0,0,.525],61:[-.19549,.41562,0,0,.525],62:[-.05556,.55556,0,0,.525],63:[0,.61111,0,0,.525],64:[0,.61111,0,0,.525],65:[0,.61111,0,0,.525],66:[0,.61111,0,0,.525],67:[0,.61111,0,0,.525],68:[0,.61111,0,0,.525],69:[0,.61111,0,0,.525],70:[0,.61111,0,0,.525],71:[0,.61111,0,0,.525],72:[0,.61111,0,0,.525],73:[0,.61111,0,0,.525],74:[0,.61111,0,0,.525],75:[0,.61111,0,0,.525],76:[0,.61111,0,0,.525],77:[0,.61111,0,0,.525],78:[0,.61111,0,0,.525],79:[0,.61111,0,0,.525],80:[0,.61111,0,0,.525],81:[.13889,.61111,0,0,.525],82:[0,.61111,0,0,.525],83:[0,.61111,0,0,.525],84:[0,.61111,0,0,.525],85:[0,.61111,0,0,.525],86:[0,.61111,0,0,.525],87:[0,.61111,0,0,.525],88:[0,.61111,0,0,.525],89:[0,.61111,0,0,.525],90:[0,.61111,0,0,.525],91:[.08333,.69444,0,0,.525],92:[.08333,.69444,0,0,.525],93:[.08333,.69444,0,0,.525],94:[0,.61111,0,0,.525],95:[.09514,0,0,0,.525],96:[0,.61111,0,0,.525],97:[0,.43056,0,0,.525],98:[0,.61111,0,0,.525],99:[0,.43056,0,0,.525],100:[0,.61111,0,0,.525],101:[0,.43056,0,0,.525],102:[0,.61111,0,0,.525],103:[.22222,.43056,0,0,.525],104:[0,.61111,0,0,.525],105:[0,.61111,0,0,.525],106:[.22222,.61111,0,0,.525],107:[0,.61111,0,0,.525],108:[0,.61111,0,0,.525],109:[0,.43056,0,0,.525],110:[0,.43056,0,0,.525],111:[0,.43056,0,0,.525],112:[.22222,.43056,0,0,.525],113:[.22222,.43056,0,0,.525],114:[0,.43056,0,0,.525],115:[0,.43056,0,0,.525],116:[0,.55358,0,0,.525],117:[0,.43056,0,0,.525],118:[0,.43056,0,0,.525],119:[0,.43056,0,0,.525],120:[0,.43056,0,0,.525],121:[.22222,.43056,0,0,.525],122:[0,.43056,0,0,.525],123:[.08333,.69444,0,0,.525],124:[.08333,.69444,0,0,.525],125:[.08333,.69444,0,0,.525],126:[0,.61111,0,0,.525],127:[0,.61111,0,0,.525],160:[0,0,0,0,.525],176:[0,.61111,0,0,.525],184:[.19445,0,0,0,.525],305:[0,.43056,0,0,.525],567:[.22222,.43056,0,0,.525],711:[0,.56597,0,0,.525],713:[0,.56555,0,0,.525],714:[0,.61111,0,0,.525],715:[0,.61111,0,0,.525],728:[0,.61111,0,0,.525],730:[0,.61111,0,0,.525],770:[0,.61111,0,0,.525],771:[0,.61111,0,0,.525],776:[0,.61111,0,0,.525],915:[0,.61111,0,0,.525],916:[0,.61111,0,0,.525],920:[0,.61111,0,0,.525],923:[0,.61111,0,0,.525],926:[0,.61111,0,0,.525],928:[0,.61111,0,0,.525],931:[0,.61111,0,0,.525],933:[0,.61111,0,0,.525],934:[0,.61111,0,0,.525],936:[0,.61111,0,0,.525],937:[0,.61111,0,0,.525],8216:[0,.61111,0,0,.525],8217:[0,.61111,0,0,.525],8242:[0,.61111,0,0,.525],9251:[.11111,.21944,0,0,.525]}},V={slant:[.25,.25,.25],space:[0,0,0],stretch:[0,0,0],shrink:[0,0,0],xHeight:[.431,.431,.431],quad:[1,1.171,1.472],extraSpace:[0,0,0],num1:[.677,.732,.925],num2:[.394,.384,.387],num3:[.444,.471,.504],denom1:[.686,.752,1.025],denom2:[.345,.344,.532],sup1:[.413,.503,.504],sup2:[.363,.431,.404],sup3:[.289,.286,.294],sub1:[.15,.143,.2],sub2:[.247,.286,.4],supDrop:[.386,.353,.494],subDrop:[.05,.071,.1],delim1:[2.39,1.7,1.98],delim2:[1.01,1.157,1.42],axisHeight:[.25,.25,.25],defaultRuleThickness:[.04,.049,.049],bigOpSpacing1:[.111,.111,.111],bigOpSpacing2:[.166,.166,.166],bigOpSpacing3:[.2,.2,.2],bigOpSpacing4:[.6,.611,.611],bigOpSpacing5:[.1,.143,.143],sqrtRuleThickness:[.04,.04,.04],ptPerEm:[10,10,10],doubleRuleSep:[.2,.2,.2],arrayRuleWidth:[.04,.04,.04],fboxsep:[.3,.3,.3],fboxrule:[.04,.04,.04]},U={"\xc5":"A","\xc7":"C","\xd0":"D","\xde":"o","\xe5":"a","\xe7":"c","\xf0":"d","\xfe":"o","\u0410":"A","\u0411":"B","\u0412":"B","\u0413":"F","\u0414":"A","\u0415":"E","\u0416":"K","\u0417":"3","\u0418":"N","\u0419":"N","\u041a":"K","\u041b":"N","\u041c":"M","\u041d":"H","\u041e":"O","\u041f":"N","\u0420":"P","\u0421":"C","\u0422":"T","\u0423":"y","\u0424":"O","\u0425":"X","\u0426":"U","\u0427":"h","\u0428":"W","\u0429":"W","\u042a":"B","\u042b":"X","\u042c":"B","\u042d":"3","\u042e":"X","\u042f":"R","\u0430":"a","\u0431":"b","\u0432":"a","\u0433":"r","\u0434":"y","\u0435":"e","\u0436":"m","\u0437":"e","\u0438":"n","\u0439":"n","\u043a":"n","\u043b":"n","\u043c":"m","\u043d":"n","\u043e":"o","\u043f":"n","\u0440":"p","\u0441":"c","\u0442":"o","\u0443":"y","\u0444":"b","\u0445":"x","\u0446":"n","\u0447":"n","\u0448":"w","\u0449":"w","\u044a":"a","\u044b":"m","\u044c":"a","\u044d":"e","\u044e":"m","\u044f":"r"};function G(t,e,r){if(!F[e])throw new Error("Font metrics not found for font: "+e+".");var a=t.charCodeAt(0),n=F[e][a];if(!n&&t[0]in U&&(a=U[t[0]].charCodeAt(0),n=F[e][a]),n||"text"!==r||M(a)&&(n=F[e][77]),n)return{depth:n[0],height:n[1],italic:n[2],skew:n[3],width:n[4]}}var Y={};var W={bin:1,close:1,inner:1,open:1,punct:1,rel:1},X={"accent-token":1,mathord:1,"op-token":1,spacing:1,textord:1},_={math:{},text:{}},j=_;function $(t,e,r,a,n,i){_[t][n]={font:e,group:r,replace:a},i&&a&&(_[t][a]=_[t][n])}var Z="main",K="ams",J="bin",Q="mathord",tt="op-token",et="rel";$("math",Z,et,"\u2261","\\equiv",!0),$("math",Z,et,"\u227a","\\prec",!0),$("math",Z,et,"\u227b","\\succ",!0),$("math",Z,et,"\u223c","\\sim",!0),$("math",Z,et,"\u22a5","\\perp"),$("math",Z,et,"\u2aaf","\\preceq",!0),$("math",Z,et,"\u2ab0","\\succeq",!0),$("math",Z,et,"\u2243","\\simeq",!0),$("math",Z,et,"\u2223","\\mid",!0),$("math",Z,et,"\u226a","\\ll",!0),$("math",Z,et,"\u226b","\\gg",!0),$("math",Z,et,"\u224d","\\asymp",!0),$("math",Z,et,"\u2225","\\parallel"),$("math",Z,et,"\u22c8","\\bowtie",!0),$("math",Z,et,"\u2323","\\smile",!0),$("math",Z,et,"\u2291","\\sqsubseteq",!0),$("math",Z,et,"\u2292","\\sqsupseteq",!0),$("math",Z,et,"\u2250","\\doteq",!0),$("math",Z,et,"\u2322","\\frown",!0),$("math",Z,et,"\u220b","\\ni",!0),$("math",Z,et,"\u221d","\\propto",!0),$("math",Z,et,"\u22a2","\\vdash",!0),$("math",Z,et,"\u22a3","\\dashv",!0),$("math",Z,et,"\u220b","\\owns"),$("math",Z,"punct",".","\\ldotp"),$("math",Z,"punct","\u22c5","\\cdotp"),$("math",Z,"textord","#","\\#"),$("text",Z,"textord","#","\\#"),$("math",Z,"textord","&","\\&"),$("text",Z,"textord","&","\\&"),$("math",Z,"textord","\u2135","\\aleph",!0),$("math",Z,"textord","\u2200","\\forall",!0),$("math",Z,"textord","\u210f","\\hbar",!0),$("math",Z,"textord","\u2203","\\exists",!0),$("math",Z,"textord","\u2207","\\nabla",!0),$("math",Z,"textord","\u266d","\\flat",!0),$("math",Z,"textord","\u2113","\\ell",!0),$("math",Z,"textord","\u266e","\\natural",!0),$("math",Z,"textord","\u2663","\\clubsuit",!0),$("math",Z,"textord","\u2118","\\wp",!0),$("math",Z,"textord","\u266f","\\sharp",!0),$("math",Z,"textord","\u2662","\\diamondsuit",!0),$("math",Z,"textord","\u211c","\\Re",!0),$("math",Z,"textord","\u2661","\\heartsuit",!0),$("math",Z,"textord","\u2111","\\Im",!0),$("math",Z,"textord","\u2660","\\spadesuit",!0),$("text",Z,"textord","\xa7","\\S",!0),$("text",Z,"textord","\xb6","\\P",!0),$("math",Z,"textord","\u2020","\\dag"),$("text",Z,"textord","\u2020","\\dag"),$("text",Z,"textord","\u2020","\\textdagger"),$("math",Z,"textord","\u2021","\\ddag"),$("text",Z,"textord","\u2021","\\ddag"),$("text",Z,"textord","\u2021","\\textdaggerdbl"),$("math",Z,"close","\u23b1","\\rmoustache",!0),$("math",Z,"open","\u23b0","\\lmoustache",!0),$("math",Z,"close","\u27ef","\\rgroup",!0),$("math",Z,"open","\u27ee","\\lgroup",!0),$("math",Z,J,"\u2213","\\mp",!0),$("math",Z,J,"\u2296","\\ominus",!0),$("math",Z,J,"\u228e","\\uplus",!0),$("math",Z,J,"\u2293","\\sqcap",!0),$("math",Z,J,"\u2217","\\ast"),$("math",Z,J,"\u2294","\\sqcup",!0),$("math",Z,J,"\u25ef","\\bigcirc"),$("math",Z,J,"\u2219","\\bullet"),$("math",Z,J,"\u2021","\\ddagger"),$("math",Z,J,"\u2240","\\wr",!0),$("math",Z,J,"\u2a3f","\\amalg"),$("math",Z,J,"&","\\And"),$("math",Z,et,"\u27f5","\\longleftarrow",!0),$("math",Z,et,"\u21d0","\\Leftarrow",!0),$("math",Z,et,"\u27f8","\\Longleftarrow",!0),$("math",Z,et,"\u27f6","\\longrightarrow",!0),$("math",Z,et,"\u21d2","\\Rightarrow",!0),$("math",Z,et,"\u27f9","\\Longrightarrow",!0),$("math",Z,et,"\u2194","\\leftrightarrow",!0),$("math",Z,et,"\u27f7","\\longleftrightarrow",!0),$("math",Z,et,"\u21d4","\\Leftrightarrow",!0),$("math",Z,et,"\u27fa","\\Longleftrightarrow",!0),$("math",Z,et,"\u21a6","\\mapsto",!0),$("math",Z,et,"\u27fc","\\longmapsto",!0),$("math",Z,et,"\u2197","\\nearrow",!0),$("math",Z,et,"\u21a9","\\hookleftarrow",!0),$("math",Z,et,"\u21aa","\\hookrightarrow",!0),$("math",Z,et,"\u2198","\\searrow",!0),$("math",Z,et,"\u21bc","\\leftharpoonup",!0),$("math",Z,et,"\u21c0","\\rightharpoonup",!0),$("math",Z,et,"\u2199","\\swarrow",!0),$("math",Z,et,"\u21bd","\\leftharpoondown",!0),$("math",Z,et,"\u21c1","\\rightharpoondown",!0),$("math",Z,et,"\u2196","\\nwarrow",!0),$("math",Z,et,"\u21cc","\\rightleftharpoons",!0),$("math",K,et,"\u226e","\\nless",!0),$("math",K,et,"\ue010","\\@nleqslant"),$("math",K,et,"\ue011","\\@nleqq"),$("math",K,et,"\u2a87","\\lneq",!0),$("math",K,et,"\u2268","\\lneqq",!0),$("math",K,et,"\ue00c","\\@lvertneqq"),$("math",K,et,"\u22e6","\\lnsim",!0),$("math",K,et,"\u2a89","\\lnapprox",!0),$("math",K,et,"\u2280","\\nprec",!0),$("math",K,et,"\u22e0","\\npreceq",!0),$("math",K,et,"\u22e8","\\precnsim",!0),$("math",K,et,"\u2ab9","\\precnapprox",!0),$("math",K,et,"\u2241","\\nsim",!0),$("math",K,et,"\ue006","\\@nshortmid"),$("math",K,et,"\u2224","\\nmid",!0),$("math",K,et,"\u22ac","\\nvdash",!0),$("math",K,et,"\u22ad","\\nvDash",!0),$("math",K,et,"\u22ea","\\ntriangleleft"),$("math",K,et,"\u22ec","\\ntrianglelefteq",!0),$("math",K,et,"\u228a","\\subsetneq",!0),$("math",K,et,"\ue01a","\\@varsubsetneq"),$("math",K,et,"\u2acb","\\subsetneqq",!0),$("math",K,et,"\ue017","\\@varsubsetneqq"),$("math",K,et,"\u226f","\\ngtr",!0),$("math",K,et,"\ue00f","\\@ngeqslant"),$("math",K,et,"\ue00e","\\@ngeqq"),$("math",K,et,"\u2a88","\\gneq",!0),$("math",K,et,"\u2269","\\gneqq",!0),$("math",K,et,"\ue00d","\\@gvertneqq"),$("math",K,et,"\u22e7","\\gnsim",!0),$("math",K,et,"\u2a8a","\\gnapprox",!0),$("math",K,et,"\u2281","\\nsucc",!0),$("math",K,et,"\u22e1","\\nsucceq",!0),$("math",K,et,"\u22e9","\\succnsim",!0),$("math",K,et,"\u2aba","\\succnapprox",!0),$("math",K,et,"\u2246","\\ncong",!0),$("math",K,et,"\ue007","\\@nshortparallel"),$("math",K,et,"\u2226","\\nparallel",!0),$("math",K,et,"\u22af","\\nVDash",!0),$("math",K,et,"\u22eb","\\ntriangleright"),$("math",K,et,"\u22ed","\\ntrianglerighteq",!0),$("math",K,et,"\ue018","\\@nsupseteqq"),$("math",K,et,"\u228b","\\supsetneq",!0),$("math",K,et,"\ue01b","\\@varsupsetneq"),$("math",K,et,"\u2acc","\\supsetneqq",!0),$("math",K,et,"\ue019","\\@varsupsetneqq"),$("math",K,et,"\u22ae","\\nVdash",!0),$("math",K,et,"\u2ab5","\\precneqq",!0),$("math",K,et,"\u2ab6","\\succneqq",!0),$("math",K,et,"\ue016","\\@nsubseteqq"),$("math",K,J,"\u22b4","\\unlhd"),$("math",K,J,"\u22b5","\\unrhd"),$("math",K,et,"\u219a","\\nleftarrow",!0),$("math",K,et,"\u219b","\\nrightarrow",!0),$("math",K,et,"\u21cd","\\nLeftarrow",!0),$("math",K,et,"\u21cf","\\nRightarrow",!0),$("math",K,et,"\u21ae","\\nleftrightarrow",!0),$("math",K,et,"\u21ce","\\nLeftrightarrow",!0),$("math",K,et,"\u25b3","\\vartriangle"),$("math",K,"textord","\u210f","\\hslash"),$("math",K,"textord","\u25bd","\\triangledown"),$("math",K,"textord","\u25ca","\\lozenge"),$("math",K,"textord","\u24c8","\\circledS"),$("math",K,"textord","\xae","\\circledR"),$("text",K,"textord","\xae","\\circledR"),$("math",K,"textord","\u2221","\\measuredangle",!0),$("math",K,"textord","\u2204","\\nexists"),$("math",K,"textord","\u2127","\\mho"),$("math",K,"textord","\u2132","\\Finv",!0),$("math",K,"textord","\u2141","\\Game",!0),$("math",K,"textord","\u2035","\\backprime"),$("math",K,"textord","\u25b2","\\blacktriangle"),$("math",K,"textord","\u25bc","\\blacktriangledown"),$("math",K,"textord","\u25a0","\\blacksquare"),$("math",K,"textord","\u29eb","\\blacklozenge"),$("math",K,"textord","\u2605","\\bigstar"),$("math",K,"textord","\u2222","\\sphericalangle",!0),$("math",K,"textord","\u2201","\\complement",!0),$("math",K,"textord","\xf0","\\eth",!0),$("math",K,"textord","\u2571","\\diagup"),$("math",K,"textord","\u2572","\\diagdown"),$("math",K,"textord","\u25a1","\\square"),$("math",K,"textord","\u25a1","\\Box"),$("math",K,"textord","\u25ca","\\Diamond"),$("math",K,"textord","\xa5","\\yen",!0),$("text",K,"textord","\xa5","\\yen",!0),$("math",K,"textord","\u2713","\\checkmark",!0),$("text",K,"textord","\u2713","\\checkmark"),$("math",K,"textord","\u2136","\\beth",!0),$("math",K,"textord","\u2138","\\daleth",!0),$("math",K,"textord","\u2137","\\gimel",!0),$("math",K,"textord","\u03dd","\\digamma",!0),$("math",K,"textord","\u03f0","\\varkappa"),$("math",K,"open","\u250c","\\ulcorner",!0),$("math",K,"close","\u2510","\\urcorner",!0),$("math",K,"open","\u2514","\\llcorner",!0),$("math",K,"close","\u2518","\\lrcorner",!0),$("math",K,et,"\u2266","\\leqq",!0),$("math",K,et,"\u2a7d","\\leqslant",!0),$("math",K,et,"\u2a95","\\eqslantless",!0),$("math",K,et,"\u2272","\\lesssim",!0),$("math",K,et,"\u2a85","\\lessapprox",!0),$("math",K,et,"\u224a","\\approxeq",!0),$("math",K,J,"\u22d6","\\lessdot"),$("math",K,et,"\u22d8","\\lll",!0),$("math",K,et,"\u2276","\\lessgtr",!0),$("math",K,et,"\u22da","\\lesseqgtr",!0),$("math",K,et,"\u2a8b","\\lesseqqgtr",!0),$("math",K,et,"\u2251","\\doteqdot"),$("math",K,et,"\u2253","\\risingdotseq",!0),$("math",K,et,"\u2252","\\fallingdotseq",!0),$("math",K,et,"\u223d","\\backsim",!0),$("math",K,et,"\u22cd","\\backsimeq",!0),$("math",K,et,"\u2ac5","\\subseteqq",!0),$("math",K,et,"\u22d0","\\Subset",!0),$("math",K,et,"\u228f","\\sqsubset",!0),$("math",K,et,"\u227c","\\preccurlyeq",!0),$("math",K,et,"\u22de","\\curlyeqprec",!0),$("math",K,et,"\u227e","\\precsim",!0),$("math",K,et,"\u2ab7","\\precapprox",!0),$("math",K,et,"\u22b2","\\vartriangleleft"),$("math",K,et,"\u22b4","\\trianglelefteq"),$("math",K,et,"\u22a8","\\vDash",!0),$("math",K,et,"\u22aa","\\Vvdash",!0),$("math",K,et,"\u2323","\\smallsmile"),$("math",K,et,"\u2322","\\smallfrown"),$("math",K,et,"\u224f","\\bumpeq",!0),$("math",K,et,"\u224e","\\Bumpeq",!0),$("math",K,et,"\u2267","\\geqq",!0),$("math",K,et,"\u2a7e","\\geqslant",!0),$("math",K,et,"\u2a96","\\eqslantgtr",!0),$("math",K,et,"\u2273","\\gtrsim",!0),$("math",K,et,"\u2a86","\\gtrapprox",!0),$("math",K,J,"\u22d7","\\gtrdot"),$("math",K,et,"\u22d9","\\ggg",!0),$("math",K,et,"\u2277","\\gtrless",!0),$("math",K,et,"\u22db","\\gtreqless",!0),$("math",K,et,"\u2a8c","\\gtreqqless",!0),$("math",K,et,"\u2256","\\eqcirc",!0),$("math",K,et,"\u2257","\\circeq",!0),$("math",K,et,"\u225c","\\triangleq",!0),$("math",K,et,"\u223c","\\thicksim"),$("math",K,et,"\u2248","\\thickapprox"),$("math",K,et,"\u2ac6","\\supseteqq",!0),$("math",K,et,"\u22d1","\\Supset",!0),$("math",K,et,"\u2290","\\sqsupset",!0),$("math",K,et,"\u227d","\\succcurlyeq",!0),$("math",K,et,"\u22df","\\curlyeqsucc",!0),$("math",K,et,"\u227f","\\succsim",!0),$("math",K,et,"\u2ab8","\\succapprox",!0),$("math",K,et,"\u22b3","\\vartriangleright"),$("math",K,et,"\u22b5","\\trianglerighteq"),$("math",K,et,"\u22a9","\\Vdash",!0),$("math",K,et,"\u2223","\\shortmid"),$("math",K,et,"\u2225","\\shortparallel"),$("math",K,et,"\u226c","\\between",!0),$("math",K,et,"\u22d4","\\pitchfork",!0),$("math",K,et,"\u221d","\\varpropto"),$("math",K,et,"\u25c0","\\blacktriangleleft"),$("math",K,et,"\u2234","\\therefore",!0),$("math",K,et,"\u220d","\\backepsilon"),$("math",K,et,"\u25b6","\\blacktriangleright"),$("math",K,et,"\u2235","\\because",!0),$("math",K,et,"\u22d8","\\llless"),$("math",K,et,"\u22d9","\\gggtr"),$("math",K,J,"\u22b2","\\lhd"),$("math",K,J,"\u22b3","\\rhd"),$("math",K,et,"\u2242","\\eqsim",!0),$("math",Z,et,"\u22c8","\\Join"),$("math",K,et,"\u2251","\\Doteq",!0),$("math",K,J,"\u2214","\\dotplus",!0),$("math",K,J,"\u2216","\\smallsetminus"),$("math",K,J,"\u22d2","\\Cap",!0),$("math",K,J,"\u22d3","\\Cup",!0),$("math",K,J,"\u2a5e","\\doublebarwedge",!0),$("math",K,J,"\u229f","\\boxminus",!0),$("math",K,J,"\u229e","\\boxplus",!0),$("math",K,J,"\u22c7","\\divideontimes",!0),$("math",K,J,"\u22c9","\\ltimes",!0),$("math",K,J,"\u22ca","\\rtimes",!0),$("math",K,J,"\u22cb","\\leftthreetimes",!0),$("math",K,J,"\u22cc","\\rightthreetimes",!0),$("math",K,J,"\u22cf","\\curlywedge",!0),$("math",K,J,"\u22ce","\\curlyvee",!0),$("math",K,J,"\u229d","\\circleddash",!0),$("math",K,J,"\u229b","\\circledast",!0),$("math",K,J,"\u22c5","\\centerdot"),$("math",K,J,"\u22ba","\\intercal",!0),$("math",K,J,"\u22d2","\\doublecap"),$("math",K,J,"\u22d3","\\doublecup"),$("math",K,J,"\u22a0","\\boxtimes",!0),$("math",K,et,"\u21e2","\\dashrightarrow",!0),$("math",K,et,"\u21e0","\\dashleftarrow",!0),$("math",K,et,"\u21c7","\\leftleftarrows",!0),$("math",K,et,"\u21c6","\\leftrightarrows",!0),$("math",K,et,"\u21da","\\Lleftarrow",!0),$("math",K,et,"\u219e","\\twoheadleftarrow",!0),$("math",K,et,"\u21a2","\\leftarrowtail",!0),$("math",K,et,"\u21ab","\\looparrowleft",!0),$("math",K,et,"\u21cb","\\leftrightharpoons",!0),$("math",K,et,"\u21b6","\\curvearrowleft",!0),$("math",K,et,"\u21ba","\\circlearrowleft",!0),$("math",K,et,"\u21b0","\\Lsh",!0),$("math",K,et,"\u21c8","\\upuparrows",!0),$("math",K,et,"\u21bf","\\upharpoonleft",!0),$("math",K,et,"\u21c3","\\downharpoonleft",!0),$("math",K,et,"\u22b8","\\multimap",!0),$("math",K,et,"\u21ad","\\leftrightsquigarrow",!0),$("math",K,et,"\u21c9","\\rightrightarrows",!0),$("math",K,et,"\u21c4","\\rightleftarrows",!0),$("math",K,et,"\u21a0","\\twoheadrightarrow",!0),$("math",K,et,"\u21a3","\\rightarrowtail",!0),$("math",K,et,"\u21ac","\\looparrowright",!0),$("math",K,et,"\u21b7","\\curvearrowright",!0),$("math",K,et,"\u21bb","\\circlearrowright",!0),$("math",K,et,"\u21b1","\\Rsh",!0),$("math",K,et,"\u21ca","\\downdownarrows",!0),$("math",K,et,"\u21be","\\upharpoonright",!0),$("math",K,et,"\u21c2","\\downharpoonright",!0),$("math",K,et,"\u21dd","\\rightsquigarrow",!0),$("math",K,et,"\u21dd","\\leadsto"),$("math",K,et,"\u21db","\\Rrightarrow",!0),$("math",K,et,"\u21be","\\restriction"),$("math",Z,"textord","\u2018","`"),$("math",Z,"textord","$","\\$"),$("text",Z,"textord","$","\\$"),$("text",Z,"textord","$","\\textdollar"),$("math",Z,"textord","%","\\%"),$("text",Z,"textord","%","\\%"),$("math",Z,"textord","_","\\_"),$("text",Z,"textord","_","\\_"),$("text",Z,"textord","_","\\textunderscore"),$("math",Z,"textord","\u2220","\\angle",!0),$("math",Z,"textord","\u221e","\\infty",!0),$("math",Z,"textord","\u2032","\\prime"),$("math",Z,"textord","\u25b3","\\triangle"),$("math",Z,"textord","\u0393","\\Gamma",!0),$("math",Z,"textord","\u0394","\\Delta",!0),$("math",Z,"textord","\u0398","\\Theta",!0),$("math",Z,"textord","\u039b","\\Lambda",!0),$("math",Z,"textord","\u039e","\\Xi",!0),$("math",Z,"textord","\u03a0","\\Pi",!0),$("math",Z,"textord","\u03a3","\\Sigma",!0),$("math",Z,"textord","\u03a5","\\Upsilon",!0),$("math",Z,"textord","\u03a6","\\Phi",!0),$("math",Z,"textord","\u03a8","\\Psi",!0),$("math",Z,"textord","\u03a9","\\Omega",!0),$("math",Z,"textord","A","\u0391"),$("math",Z,"textord","B","\u0392"),$("math",Z,"textord","E","\u0395"),$("math",Z,"textord","Z","\u0396"),$("math",Z,"textord","H","\u0397"),$("math",Z,"textord","I","\u0399"),$("math",Z,"textord","K","\u039a"),$("math",Z,"textord","M","\u039c"),$("math",Z,"textord","N","\u039d"),$("math",Z,"textord","O","\u039f"),$("math",Z,"textord","P","\u03a1"),$("math",Z,"textord","T","\u03a4"),$("math",Z,"textord","X","\u03a7"),$("math",Z,"textord","\xac","\\neg",!0),$("math",Z,"textord","\xac","\\lnot"),$("math",Z,"textord","\u22a4","\\top"),$("math",Z,"textord","\u22a5","\\bot"),$("math",Z,"textord","\u2205","\\emptyset"),$("math",K,"textord","\u2205","\\varnothing"),$("math",Z,Q,"\u03b1","\\alpha",!0),$("math",Z,Q,"\u03b2","\\beta",!0),$("math",Z,Q,"\u03b3","\\gamma",!0),$("math",Z,Q,"\u03b4","\\delta",!0),$("math",Z,Q,"\u03f5","\\epsilon",!0),$("math",Z,Q,"\u03b6","\\zeta",!0),$("math",Z,Q,"\u03b7","\\eta",!0),$("math",Z,Q,"\u03b8","\\theta",!0),$("math",Z,Q,"\u03b9","\\iota",!0),$("math",Z,Q,"\u03ba","\\kappa",!0),$("math",Z,Q,"\u03bb","\\lambda",!0),$("math",Z,Q,"\u03bc","\\mu",!0),$("math",Z,Q,"\u03bd","\\nu",!0),$("math",Z,Q,"\u03be","\\xi",!0),$("math",Z,Q,"\u03bf","\\omicron",!0),$("math",Z,Q,"\u03c0","\\pi",!0),$("math",Z,Q,"\u03c1","\\rho",!0),$("math",Z,Q,"\u03c3","\\sigma",!0),$("math",Z,Q,"\u03c4","\\tau",!0),$("math",Z,Q,"\u03c5","\\upsilon",!0),$("math",Z,Q,"\u03d5","\\phi",!0),$("math",Z,Q,"\u03c7","\\chi",!0),$("math",Z,Q,"\u03c8","\\psi",!0),$("math",Z,Q,"\u03c9","\\omega",!0),$("math",Z,Q,"\u03b5","\\varepsilon",!0),$("math",Z,Q,"\u03d1","\\vartheta",!0),$("math",Z,Q,"\u03d6","\\varpi",!0),$("math",Z,Q,"\u03f1","\\varrho",!0),$("math",Z,Q,"\u03c2","\\varsigma",!0),$("math",Z,Q,"\u03c6","\\varphi",!0),$("math",Z,J,"\u2217","*"),$("math",Z,J,"+","+"),$("math",Z,J,"\u2212","-"),$("math",Z,J,"\u22c5","\\cdot",!0),$("math",Z,J,"\u2218","\\circ"),$("math",Z,J,"\xf7","\\div",!0),$("math",Z,J,"\xb1","\\pm",!0),$("math",Z,J,"\xd7","\\times",!0),$("math",Z,J,"\u2229","\\cap",!0),$("math",Z,J,"\u222a","\\cup",!0),$("math",Z,J,"\u2216","\\setminus"),$("math",Z,J,"\u2227","\\land"),$("math",Z,J,"\u2228","\\lor"),$("math",Z,J,"\u2227","\\wedge",!0),$("math",Z,J,"\u2228","\\vee",!0),$("math",Z,"textord","\u221a","\\surd"),$("math",Z,"open","(","("),$("math",Z,"open","[","["),$("math",Z,"open","\u27e8","\\langle",!0),$("math",Z,"open","\u2223","\\lvert"),$("math",Z,"open","\u2225","\\lVert"),$("math",Z,"close",")",")"),$("math",Z,"close","]","]"),$("math",Z,"close","?","?"),$("math",Z,"close","!","!"),$("math",Z,"close","\u27e9","\\rangle",!0),$("math",Z,"close","\u2223","\\rvert"),$("math",Z,"close","\u2225","\\rVert"),$("math",Z,et,"=","="),$("math",Z,et,"<","<"),$("math",Z,et,">",">"),$("math",Z,et,":",":"),$("math",Z,et,"\u2248","\\approx",!0),$("math",Z,et,"\u2245","\\cong",!0),$("math",Z,et,"\u2265","\\ge"),$("math",Z,et,"\u2265","\\geq",!0),$("math",Z,et,"\u2190","\\gets"),$("math",Z,et,">","\\gt"),$("math",Z,et,"\u2208","\\in",!0),$("math",Z,et,"\ue020","\\@not"),$("math",Z,et,"\u2282","\\subset",!0),$("math",Z,et,"\u2283","\\supset",!0),$("math",Z,et,"\u2286","\\subseteq",!0),$("math",Z,et,"\u2287","\\supseteq",!0),$("math",K,et,"\u2288","\\nsubseteq",!0),$("math",K,et,"\u2289","\\nsupseteq",!0),$("math",Z,et,"\u22a8","\\models"),$("math",Z,et,"\u2190","\\leftarrow",!0),$("math",Z,et,"\u2264","\\le"),$("math",Z,et,"\u2264","\\leq",!0),$("math",Z,et,"<","\\lt"),$("math",Z,et,"\u2192","\\rightarrow",!0),$("math",Z,et,"\u2192","\\to"),$("math",K,et,"\u2271","\\ngeq",!0),$("math",K,et,"\u2270","\\nleq",!0),$("math",Z,"spacing","\xa0","\\ "),$("math",Z,"spacing","\xa0","~"),$("math",Z,"spacing","\xa0","\\space"),$("math",Z,"spacing","\xa0","\\nobreakspace"),$("text",Z,"spacing","\xa0","\\ "),$("text",Z,"spacing","\xa0","~"),$("text",Z,"spacing","\xa0","\\space"),$("text",Z,"spacing","\xa0","\\nobreakspace"),$("math",Z,"spacing",null,"\\nobreak"),$("math",Z,"spacing",null,"\\allowbreak"),$("math",Z,"punct",",",","),$("math",Z,"punct",";",";"),$("math",K,J,"\u22bc","\\barwedge",!0),$("math",K,J,"\u22bb","\\veebar",!0),$("math",Z,J,"\u2299","\\odot",!0),$("math",Z,J,"\u2295","\\oplus",!0),$("math",Z,J,"\u2297","\\otimes",!0),$("math",Z,"textord","\u2202","\\partial",!0),$("math",Z,J,"\u2298","\\oslash",!0),$("math",K,J,"\u229a","\\circledcirc",!0),$("math",K,J,"\u22a1","\\boxdot",!0),$("math",Z,J,"\u25b3","\\bigtriangleup"),$("math",Z,J,"\u25bd","\\bigtriangledown"),$("math",Z,J,"\u2020","\\dagger"),$("math",Z,J,"\u22c4","\\diamond"),$("math",Z,J,"\u22c6","\\star"),$("math",Z,J,"\u25c3","\\triangleleft"),$("math",Z,J,"\u25b9","\\triangleright"),$("math",Z,"open","{","\\{"),$("text",Z,"textord","{","\\{"),$("text",Z,"textord","{","\\textbraceleft"),$("math",Z,"close","}","\\}"),$("text",Z,"textord","}","\\}"),$("text",Z,"textord","}","\\textbraceright"),$("math",Z,"open","{","\\lbrace"),$("math",Z,"close","}","\\rbrace"),$("math",Z,"open","[","\\lbrack"),$("text",Z,"textord","[","\\lbrack"),$("math",Z,"close","]","\\rbrack"),$("text",Z,"textord","]","\\rbrack"),$("math",Z,"open","(","\\lparen"),$("math",Z,"close",")","\\rparen"),$("text",Z,"textord","<","\\textless"),$("text",Z,"textord",">","\\textgreater"),$("math",Z,"open","\u230a","\\lfloor",!0),$("math",Z,"close","\u230b","\\rfloor",!0),$("math",Z,"open","\u2308","\\lceil",!0),$("math",Z,"close","\u2309","\\rceil",!0),$("math",Z,"textord","\\","\\backslash"),$("math",Z,"textord","\u2223","|"),$("math",Z,"textord","\u2223","\\vert"),$("text",Z,"textord","|","\\textbar"),$("math",Z,"textord","\u2225","\\|"),$("math",Z,"textord","\u2225","\\Vert"),$("text",Z,"textord","\u2225","\\textbardbl"),$("text",Z,"textord","~","\\textasciitilde"),$("text",Z,"textord","\\","\\textbackslash"),$("text",Z,"textord","^","\\textasciicircum"),$("math",Z,et,"\u2191","\\uparrow",!0),$("math",Z,et,"\u21d1","\\Uparrow",!0),$("math",Z,et,"\u2193","\\downarrow",!0),$("math",Z,et,"\u21d3","\\Downarrow",!0),$("math",Z,et,"\u2195","\\updownarrow",!0),$("math",Z,et,"\u21d5","\\Updownarrow",!0),$("math",Z,tt,"\u2210","\\coprod"),$("math",Z,tt,"\u22c1","\\bigvee"),$("math",Z,tt,"\u22c0","\\bigwedge"),$("math",Z,tt,"\u2a04","\\biguplus"),$("math",Z,tt,"\u22c2","\\bigcap"),$("math",Z,tt,"\u22c3","\\bigcup"),$("math",Z,tt,"\u222b","\\int"),$("math",Z,tt,"\u222b","\\intop"),$("math",Z,tt,"\u222c","\\iint"),$("math",Z,tt,"\u222d","\\iiint"),$("math",Z,tt,"\u220f","\\prod"),$("math",Z,tt,"\u2211","\\sum"),$("math",Z,tt,"\u2a02","\\bigotimes"),$("math",Z,tt,"\u2a01","\\bigoplus"),$("math",Z,tt,"\u2a00","\\bigodot"),$("math",Z,tt,"\u222e","\\oint"),$("math",Z,tt,"\u222f","\\oiint"),$("math",Z,tt,"\u2230","\\oiiint"),$("math",Z,tt,"\u2a06","\\bigsqcup"),$("math",Z,tt,"\u222b","\\smallint"),$("text",Z,"inner","\u2026","\\textellipsis"),$("math",Z,"inner","\u2026","\\mathellipsis"),$("text",Z,"inner","\u2026","\\ldots",!0),$("math",Z,"inner","\u2026","\\ldots",!0),$("math",Z,"inner","\u22ef","\\@cdots",!0),$("math",Z,"inner","\u22f1","\\ddots",!0),$("math",Z,"textord","\u22ee","\\varvdots"),$("math",Z,"accent-token","\u02ca","\\acute"),$("math",Z,"accent-token","\u02cb","\\grave"),$("math",Z,"accent-token","\xa8","\\ddot"),$("math",Z,"accent-token","~","\\tilde"),$("math",Z,"accent-token","\u02c9","\\bar"),$("math",Z,"accent-token","\u02d8","\\breve"),$("math",Z,"accent-token","\u02c7","\\check"),$("math",Z,"accent-token","^","\\hat"),$("math",Z,"accent-token","\u20d7","\\vec"),$("math",Z,"accent-token","\u02d9","\\dot"),$("math",Z,"accent-token","\u02da","\\mathring"),$("math",Z,Q,"\u0131","\\imath",!0),$("math",Z,Q,"\u0237","\\jmath",!0),$("text",Z,"textord","\u0131","\\i",!0),$("text",Z,"textord","\u0237","\\j",!0),$("text",Z,"textord","\xdf","\\ss",!0),$("text",Z,"textord","\xe6","\\ae",!0),$("text",Z,"textord","\xe6","\\ae",!0),$("text",Z,"textord","\u0153","\\oe",!0),$("text",Z,"textord","\xf8","\\o",!0),$("text",Z,"textord","\xc6","\\AE",!0),$("text",Z,"textord","\u0152","\\OE",!0),$("text",Z,"textord","\xd8","\\O",!0),$("text",Z,"accent-token","\u02ca","\\'"),$("text",Z,"accent-token","\u02cb","\\`"),$("text",Z,"accent-token","\u02c6","\\^"),$("text",Z,"accent-token","\u02dc","\\~"),$("text",Z,"accent-token","\u02c9","\\="),$("text",Z,"accent-token","\u02d8","\\u"),$("text",Z,"accent-token","\u02d9","\\."),$("text",Z,"accent-token","\u02da","\\r"),$("text",Z,"accent-token","\u02c7","\\v"),$("text",Z,"accent-token","\xa8",'\\"'),$("text",Z,"accent-token","\u02dd","\\H"),$("text",Z,"accent-token","\u25ef","\\textcircled");var rt={"--":!0,"---":!0,"``":!0,"''":!0};$("text",Z,"textord","\u2013","--"),$("text",Z,"textord","\u2013","\\textendash"),$("text",Z,"textord","\u2014","---"),$("text",Z,"textord","\u2014","\\textemdash"),$("text",Z,"textord","\u2018","`"),$("text",Z,"textord","\u2018","\\textquoteleft"),$("text",Z,"textord","\u2019","'"),$("text",Z,"textord","\u2019","\\textquoteright"),$("text",Z,"textord","\u201c","``"),$("text",Z,"textord","\u201c","\\textquotedblleft"),$("text",Z,"textord","\u201d","''"),$("text",Z,"textord","\u201d","\\textquotedblright"),$("math",Z,"textord","\xb0","\\degree",!0),$("text",Z,"textord","\xb0","\\degree"),$("text",Z,"textord","\xb0","\\textdegree",!0),$("math",Z,Q,"\xa3","\\pounds"),$("math",Z,Q,"\xa3","\\mathsterling",!0),$("text",Z,Q,"\xa3","\\pounds"),$("text",Z,Q,"\xa3","\\textsterling",!0),$("math",K,"textord","\u2720","\\maltese"),$("text",K,"textord","\u2720","\\maltese"),$("text",Z,"spacing","\xa0","\\ "),$("text",Z,"spacing","\xa0"," "),$("text",Z,"spacing","\xa0","~");for(var at=0;at<'0123456789/@."'.length;at++){var nt='0123456789/@."'.charAt(at);$("math",Z,"textord",nt,nt)}for(var it=0;it<'0123456789!@*()-=+[]<>|";:?/.,'.length;it++){var ot='0123456789!@*()-=+[]<>|";:?/.,'.charAt(it);$("text",Z,"textord",ot,ot)}for(var st="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",ht=0;ht<st.length;ht++){var lt=st.charAt(ht);$("math",Z,Q,lt,lt),$("text",Z,"textord",lt,lt)}$("math",K,"textord","C","\u2102"),$("text",K,"textord","C","\u2102"),$("math",K,"textord","H","\u210d"),$("text",K,"textord","H","\u210d"),$("math",K,"textord","N","\u2115"),$("text",K,"textord","N","\u2115"),$("math",K,"textord","P","\u2119"),$("text",K,"textord","P","\u2119"),$("math",K,"textord","Q","\u211a"),$("text",K,"textord","Q","\u211a"),$("math",K,"textord","R","\u211d"),$("text",K,"textord","R","\u211d"),$("math",K,"textord","Z","\u2124"),$("text",K,"textord","Z","\u2124"),$("math",Z,Q,"h","\u210e"),$("text",Z,Q,"h","\u210e");for(var mt="",ct=0;ct<st.length;ct++){var ut=st.charAt(ct);$("math",Z,Q,ut,mt=String.fromCharCode(55349,56320+ct)),$("text",Z,"textord",ut,mt),$("math",Z,Q,ut,mt=String.fromCharCode(55349,56372+ct)),$("text",Z,"textord",ut,mt),$("math",Z,Q,ut,mt=String.fromCharCode(55349,56424+ct)),$("text",Z,"textord",ut,mt),$("math",Z,Q,ut,mt=String.fromCharCode(55349,56580+ct)),$("text",Z,"textord",ut,mt),$("math",Z,Q,ut,mt=String.fromCharCode(55349,56736+ct)),$("text",Z,"textord",ut,mt),$("math",Z,Q,ut,mt=String.fromCharCode(55349,56788+ct)),$("text",Z,"textord",ut,mt),$("math",Z,Q,ut,mt=String.fromCharCode(55349,56840+ct)),$("text",Z,"textord",ut,mt),$("math",Z,Q,ut,mt=String.fromCharCode(55349,56944+ct)),$("text",Z,"textord",ut,mt),ct<26&&($("math",Z,Q,ut,mt=String.fromCharCode(55349,56632+ct)),$("text",Z,"textord",ut,mt),$("math",Z,Q,ut,mt=String.fromCharCode(55349,56476+ct)),$("text",Z,"textord",ut,mt))}$("math",Z,Q,"k",mt=String.fromCharCode(55349,56668)),$("text",Z,"textord","k",mt);for(var pt=0;pt<10;pt++){var dt=pt.toString();$("math",Z,Q,dt,mt=String.fromCharCode(55349,57294+pt)),$("text",Z,"textord",dt,mt),$("math",Z,Q,dt,mt=String.fromCharCode(55349,57314+pt)),$("text",Z,"textord",dt,mt),$("math",Z,Q,dt,mt=String.fromCharCode(55349,57324+pt)),$("text",Z,"textord",dt,mt),$("math",Z,Q,dt,mt=String.fromCharCode(55349,57334+pt)),$("text",Z,"textord",dt,mt)}for(var ft=0;ft<"\xc7\xd0\xde\xe7\xfe".length;ft++){var gt="\xc7\xd0\xde\xe7\xfe".charAt(ft);$("math",Z,Q,gt,gt),$("text",Z,"textord",gt,gt)}$("text",Z,"textord","\xf0","\xf0"),$("text",Z,"textord","\u2013","\u2013"),$("text",Z,"textord","\u2014","\u2014"),$("text",Z,"textord","\u2018","\u2018"),$("text",Z,"textord","\u2019","\u2019"),$("text",Z,"textord","\u201c","\u201c"),$("text",Z,"textord","\u201d","\u201d");var xt=[["mathbf","textbf","Main-Bold"],["mathbf","textbf","Main-Bold"],["mathdefault","textit","Math-Italic"],["mathdefault","textit","Math-Italic"],["boldsymbol","boldsymbol","Main-BoldItalic"],["boldsymbol","boldsymbol","Main-BoldItalic"],["mathscr","textscr","Script-Regular"],["","",""],["","",""],["","",""],["mathfrak","textfrak","Fraktur-Regular"],["mathfrak","textfrak","Fraktur-Regular"],["mathbb","textbb","AMS-Regular"],["mathbb","textbb","AMS-Regular"],["","",""],["","",""],["mathsf","textsf","SansSerif-Regular"],["mathsf","textsf","SansSerif-Regular"],["mathboldsf","textboldsf","SansSerif-Bold"],["mathboldsf","textboldsf","SansSerif-Bold"],["mathitsf","textitsf","SansSerif-Italic"],["mathitsf","textitsf","SansSerif-Italic"],["","",""],["","",""],["mathtt","texttt","Typewriter-Regular"],["mathtt","texttt","Typewriter-Regular"]],vt=[["mathbf","textbf","Main-Bold"],["","",""],["mathsf","textsf","SansSerif-Regular"],["mathboldsf","textboldsf","SansSerif-Bold"],["mathtt","texttt","Typewriter-Regular"]],bt=[[1,1,1],[2,1,1],[3,1,1],[4,2,1],[5,2,1],[6,3,1],[7,4,2],[8,6,3],[9,7,6],[10,8,7],[11,10,9]],yt=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488],wt=function(t,e){return e.size<2?t:bt[t-1][e.size-1]},kt=function(){function t(e){this.style=void 0,this.color=void 0,this.size=void 0,this.textSize=void 0,this.phantom=void 0,this.font=void 0,this.fontFamily=void 0,this.fontWeight=void 0,this.fontShape=void 0,this.sizeMultiplier=void 0,this.maxSize=void 0,this.minRuleThickness=void 0,this._fontMetrics=void 0,this.style=e.style,this.color=e.color,this.size=e.size||t.BASESIZE,this.textSize=e.textSize||this.size,this.phantom=!!e.phantom,this.font=e.font||"",this.fontFamily=e.fontFamily||"",this.fontWeight=e.fontWeight||"",this.fontShape=e.fontShape||"",this.sizeMultiplier=yt[this.size-1],this.maxSize=e.maxSize,this.minRuleThickness=e.minRuleThickness,this._fontMetrics=void 0}var e=t.prototype;return e.extend=function(e){var r={style:this.style,size:this.size,textSize:this.textSize,color:this.color,phantom:this.phantom,font:this.font,fontFamily:this.fontFamily,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize,minRuleThickness:this.minRuleThickness};for(var a in e)e.hasOwnProperty(a)&&(r[a]=e[a]);return new t(r)},e.havingStyle=function(t){return this.style===t?this:this.extend({style:t,size:wt(this.textSize,t)})},e.havingCrampedStyle=function(){return this.havingStyle(this.style.cramp())},e.havingSize=function(t){return this.size===t&&this.textSize===t?this:this.extend({style:this.style.text(),size:t,textSize:t,sizeMultiplier:yt[t-1]})},e.havingBaseStyle=function(e){e=e||this.style.text();var r=wt(t.BASESIZE,e);return this.size===r&&this.textSize===t.BASESIZE&&this.style===e?this:this.extend({style:e,size:r})},e.havingBaseSizing=function(){var t;switch(this.style.id){case 4:case 5:t=3;break;case 6:case 7:t=1;break;default:t=6}return this.extend({style:this.style.text(),size:t})},e.withColor=function(t){return this.extend({color:t})},e.withPhantom=function(){return this.extend({phantom:!0})},e.withFont=function(t){return this.extend({font:t})},e.withTextFontFamily=function(t){return this.extend({fontFamily:t,font:""})},e.withTextFontWeight=function(t){return this.extend({fontWeight:t,font:""})},e.withTextFontShape=function(t){return this.extend({fontShape:t,font:""})},e.sizingClasses=function(t){return t.size!==this.size?["sizing","reset-size"+t.size,"size"+this.size]:[]},e.baseSizingClasses=function(){return this.size!==t.BASESIZE?["sizing","reset-size"+this.size,"size"+t.BASESIZE]:[]},e.fontMetrics=function(){return this._fontMetrics||(this._fontMetrics=function(t){var e;if(!Y[e=t>=5?0:t>=3?1:2]){var r=Y[e]={cssEmPerMu:V.quad[e]/18};for(var a in V)V.hasOwnProperty(a)&&(r[a]=V[a][e])}return Y[e]}(this.size)),this._fontMetrics},e.getColor=function(){return this.phantom?"transparent":this.color},t}();kt.BASESIZE=6;var St=kt,Mt={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:1.00375,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:1.00375},zt={ex:!0,em:!0,mu:!0},At=function(t){return"string"!=typeof t&&(t=t.unit),t in Mt||t in zt||"ex"===t},Tt=function(t,e){var r;if(t.unit in Mt)r=Mt[t.unit]/e.fontMetrics().ptPerEm/e.sizeMultiplier;else if("mu"===t.unit)r=e.fontMetrics().cssEmPerMu;else{var a;if(a=e.style.isTight()?e.havingStyle(e.style.text()):e,"ex"===t.unit)r=a.fontMetrics().xHeight;else{if("em"!==t.unit)throw new o("Invalid unit: '"+t.unit+"'");r=a.fontMetrics().quad}a!==e&&(r*=a.sizeMultiplier/e.sizeMultiplier)}return Math.min(t.number*r,e.maxSize)},Bt=["\\imath","\u0131","\\jmath","\u0237","\\pounds","\\mathsterling","\\textsterling","\xa3"],Ct=function(t,e,r){return j[r][t]&&j[r][t].replace&&(t=j[r][t].replace),{value:t,metrics:G(t,e,r)}},qt=function(t,e,r,a,n){var i,o=Ct(t,e,r),s=o.metrics;if(t=o.value,s){var h=s.italic;("text"===r||a&&"mathit"===a.font)&&(h=0),i=new E(t,s.height,s.depth,h,s.skew,s.width,n)}else"undefined"!=typeof console&&console.warn("No character metrics for '"+t+"' in style '"+e+"' and mode '"+r+"'"),i=new E(t,0,0,0,0,0,n);if(a){i.maxFontSize=a.sizeMultiplier,a.style.isTight()&&i.classes.push("mtight");var l=a.getColor();l&&(i.style.color=l)}return i},Nt=function(t,e){if(T(t.classes)!==T(e.classes)||t.skew!==e.skew||t.maxFontSize!==e.maxFontSize)return!1;for(var r in t.style)if(t.style.hasOwnProperty(r)&&t.style[r]!==e.style[r])return!1;for(var a in e.style)if(e.style.hasOwnProperty(a)&&t.style[a]!==e.style[a])return!1;return!0},It=function(t){for(var e=0,r=0,a=0,n=0;n<t.children.length;n++){var i=t.children[n];i.height>e&&(e=i.height),i.depth>r&&(r=i.depth),i.maxFontSize>a&&(a=i.maxFontSize)}t.height=e,t.depth=r,t.maxFontSize=a},Rt=function(t,e,r,a){var n=new N(t,e,r,a);return It(n),n},Ot=function(t,e,r,a){return new N(t,e,r,a)},Et=function(t){var e=new A(t);return It(e),e},Lt=function(t,e,r){var a="";switch(t){case"amsrm":a="AMS";break;case"textrm":a="Main";break;case"textsf":a="SansSerif";break;case"texttt":a="Typewriter";break;default:a=t}return a+"-"+("textbf"===e&&"textit"===r?"BoldItalic":"textbf"===e?"Bold":"textit"===e?"Italic":"Regular")},Ht={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{variant:"italic",fontName:"Main-Italic"},mathit:{variant:"italic",fontName:"Main-Italic"},mathbb:{variant:"double-struck",fontName:"AMS-Regular"},mathcal:{variant:"script",fontName:"Caligraphic-Regular"},mathfrak:{variant:"fraktur",fontName:"Fraktur-Regular"},mathscr:{variant:"script",fontName:"Script-Regular"},mathsf:{variant:"sans-serif",fontName:"SansSerif-Regular"},mathtt:{variant:"monospace",fontName:"Typewriter-Regular"}},Pt={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},Dt={fontMap:Ht,makeSymbol:qt,mathsym:function(t,e,r,a){return void 0===a&&(a=[]),"boldsymbol"===r.font&&Ct(t,"Main-Bold",e).metrics?qt(t,"Main-Bold",e,r,a.concat(["mathbf"])):"\\"===t||"main"===j[e][t].font?qt(t,"Main-Regular",e,r,a):qt(t,"AMS-Regular",e,r,a.concat(["amsrm"]))},makeSpan:Rt,makeSvgSpan:Ot,makeLineSpan:function(t,e,r){var a=Rt([t],[],e);return a.height=Math.max(r||e.fontMetrics().defaultRuleThickness,e.minRuleThickness),a.style.borderBottomWidth=a.height+"em",a.maxFontSize=1,a},makeAnchor:function(t,e,r,a){var n=new I(t,e,r,a);return It(n),n},makeFragment:Et,wrapFragment:function(t,e){return t instanceof A?Rt([],[t],e):t},makeVList:function(t,e){for(var r=function(t){if("individualShift"===t.positionType){for(var e=t.children,r=[e[0]],a=-e[0].shift-e[0].elem.depth,n=a,i=1;i<e.length;i++){var o=-e[i].shift-n-e[i].elem.depth,s=o-(e[i-1].elem.height+e[i-1].elem.depth);n+=o,r.push({type:"kern",size:s}),r.push(e[i])}return{children:r,depth:a}}var h;if("top"===t.positionType){for(var l=t.positionData,m=0;m<t.children.length;m++){var c=t.children[m];l-="kern"===c.type?c.size:c.elem.height+c.elem.depth}h=l}else if("bottom"===t.positionType)h=-t.positionData;else{var u=t.children[0];if("elem"!==u.type)throw new Error('First child must have type "elem".');if("shift"===t.positionType)h=-u.elem.depth-t.positionData;else{if("firstBaseline"!==t.positionType)throw new Error("Invalid positionType "+t.positionType+".");h=-u.elem.depth}}return{children:t.children,depth:h}}(t),a=r.children,n=r.depth,i=0,o=0;o<a.length;o++){var s=a[o];if("elem"===s.type){var h=s.elem;i=Math.max(i,h.maxFontSize,h.height)}}i+=2;var l=Rt(["pstrut"],[]);l.style.height=i+"em";for(var m=[],c=n,u=n,p=n,d=0;d<a.length;d++){var f=a[d];if("kern"===f.type)p+=f.size;else{var g=f.elem,x=f.wrapperClasses||[],v=f.wrapperStyle||{},b=Rt(x,[l,g],void 0,v);b.style.top=-i-p-g.depth+"em",f.marginLeft&&(b.style.marginLeft=f.marginLeft),f.marginRight&&(b.style.marginRight=f.marginRight),m.push(b),p+=g.height+g.depth}c=Math.min(c,p),u=Math.max(u,p)}var y,w=Rt(["vlist"],m);if(w.style.height=u+"em",c<0){var k=Rt([],[]),S=Rt(["vlist"],[k]);S.style.height=-c+"em";var M=Rt(["vlist-s"],[new E("\u200b")]);y=[Rt(["vlist-r"],[w,M]),Rt(["vlist-r"],[S])]}else y=[Rt(["vlist-r"],[w])];var z=Rt(["vlist-t"],y);return 2===y.length&&z.classes.push("vlist-t2"),z.height=u,z.depth=-c,z},makeOrd:function(t,e,r){var a,n=t.mode,i=t.text,s=["mord"],h="math"===n||"text"===n&&e.font,l=h?e.font:e.fontFamily;if(55349===i.charCodeAt(0)){var m=function(t,e){var r=1024*(t.charCodeAt(0)-55296)+(t.charCodeAt(1)-56320)+65536,a="math"===e?0:1;if(119808<=r&&r<120484){var n=Math.floor((r-119808)/26);return[xt[n][2],xt[n][a]]}if(120782<=r&&r<=120831){var i=Math.floor((r-120782)/10);return[vt[i][2],vt[i][a]]}if(120485===r||120486===r)return[xt[0][2],xt[0][a]];if(120486<r&&r<120782)return["",""];throw new o("Unsupported character: "+t)}(i,n),u=m[0],p=m[1];return qt(i,u,n,e,s.concat(p))}if(l){var d,f;if("boldsymbol"===l||"mathnormal"===l){var g="boldsymbol"===l?function(t,e,r,a){return Ct(t,"Math-BoldItalic",e).metrics?{fontName:"Math-BoldItalic",fontClass:"boldsymbol"}:{fontName:"Main-Bold",fontClass:"mathbf"}}(i,n):(a=i,c.contains(Bt,a)?{fontName:"Main-Italic",fontClass:"mathit"}:/[0-9]/.test(a.charAt(0))?{fontName:"Caligraphic-Regular",fontClass:"mathcal"}:{fontName:"Math-Italic",fontClass:"mathdefault"});d=g.fontName,f=[g.fontClass]}else c.contains(Bt,i)?(d="Main-Italic",f=["mathit"]):h?(d=Ht[l].fontName,f=[l]):(d=Lt(l,e.fontWeight,e.fontShape),f=[l,e.fontWeight,e.fontShape]);if(Ct(i,d,n).metrics)return qt(i,d,n,e,s.concat(f));if(rt.hasOwnProperty(i)&&"Typewriter"===d.substr(0,10)){for(var x=[],v=0;v<i.length;v++)x.push(qt(i[v],d,n,e,s.concat(f)));return Et(x)}}if("mathord"===r){var b=function(t,e,r,a){return/[0-9]/.test(t.charAt(0))||c.contains(Bt,t)?{fontName:"Main-Italic",fontClass:"mathit"}:{fontName:"Math-Italic",fontClass:"mathdefault"}}(i);return qt(i,b.fontName,n,e,s.concat([b.fontClass]))}if("textord"===r){var y=j[n][i]&&j[n][i].font;if("ams"===y){var w=Lt("amsrm",e.fontWeight,e.fontShape);return qt(i,w,n,e,s.concat("amsrm",e.fontWeight,e.fontShape))}if("main"!==y&&y){var k=Lt(y,e.fontWeight,e.fontShape);return qt(i,k,n,e,s.concat(k,e.fontWeight,e.fontShape))}var S=Lt("textrm",e.fontWeight,e.fontShape);return qt(i,S,n,e,s.concat(e.fontWeight,e.fontShape))}throw new Error("unexpected type: "+r+" in makeOrd")},makeGlue:function(t,e){var r=Rt(["mspace"],[],e),a=Tt(t,e);return r.style.marginRight=a+"em",r},staticSvg:function(t,e){var r=Pt[t],a=r[0],n=r[1],i=r[2],o=new H(a),s=new L([o],{width:n+"em",height:i+"em",style:"width:"+n+"em",viewBox:"0 0 "+1e3*n+" "+1e3*i,preserveAspectRatio:"xMinYMin"}),h=Ot(["overlay"],[s],e);return h.height=i,h.style.height=i+"em",h.style.width=n+"em",h},svgData:Pt,tryCombineChars:function(t){for(var e=0;e<t.length-1;e++){var r=t[e],a=t[e+1];r instanceof E&&a instanceof E&&Nt(r,a)&&(r.text+=a.text,r.height=Math.max(r.height,a.height),r.depth=Math.max(r.depth,a.depth),r.italic=a.italic,t.splice(e+1,1),e--)}return t}};function Ft(t,e){var r=Vt(t,e);if(!r)throw new Error("Expected node of type "+e+", but got "+(t?"node of type "+t.type:String(t)));return r}function Vt(t,e){return t&&t.type===e?t:null}function Ut(t,e){var r=function(t,e){return t&&"atom"===t.type&&t.family===e?t:null}(t,e);if(!r)throw new Error('Expected node of type "atom" and family "'+e+'", but got '+(t?"atom"===t.type?"atom of family "+t.family:"node of type "+t.type:String(t)));return r}function Gt(t){var e=Yt(t);if(!e)throw new Error("Expected node of symbol group type, but got "+(t?"node of type "+t.type:String(t)));return e}function Yt(t){return t&&("atom"===t.type||X.hasOwnProperty(t.type))?t:null}var Wt={number:3,unit:"mu"},Xt={number:4,unit:"mu"},_t={number:5,unit:"mu"},jt={mord:{mop:Wt,mbin:Xt,mrel:_t,minner:Wt},mop:{mord:Wt,mop:Wt,mrel:_t,minner:Wt},mbin:{mord:Xt,mop:Xt,mopen:Xt,minner:Xt},mrel:{mord:_t,mop:_t,mopen:_t,minner:_t},mopen:{},mclose:{mop:Wt,mbin:Xt,mrel:_t,minner:Wt},mpunct:{mord:Wt,mop:Wt,mrel:_t,mopen:Wt,mclose:Wt,mpunct:Wt,minner:Wt},minner:{mord:Wt,mop:Wt,mbin:Xt,mrel:_t,mopen:Wt,mpunct:Wt,minner:Wt}},$t={mord:{mop:Wt},mop:{mord:Wt,mop:Wt},mbin:{},mrel:{},mopen:{},mclose:{mop:Wt},mpunct:{},minner:{mop:Wt}},Zt={},Kt={},Jt={};function Qt(t){for(var e=t.type,r=t.names,a=t.props,n=t.handler,i=t.htmlBuilder,o=t.mathmlBuilder,s={type:e,numArgs:a.numArgs,argTypes:a.argTypes,greediness:void 0===a.greediness?1:a.greediness,allowedInText:!!a.allowedInText,allowedInMath:void 0===a.allowedInMath||a.allowedInMath,numOptionalArgs:a.numOptionalArgs||0,infix:!!a.infix,handler:n},h=0;h<r.length;++h)Zt[r[h]]=s;e&&(i&&(Kt[e]=i),o&&(Jt[e]=o))}function te(t){Qt({type:t.type,names:[],props:{numArgs:0},handler:function(){throw new Error("Should never be called.")},htmlBuilder:t.htmlBuilder,mathmlBuilder:t.mathmlBuilder})}var ee=function(t){var e=Vt(t,"ordgroup");return e?e.body:[t]},re=Dt.makeSpan,ae=["leftmost","mbin","mopen","mrel","mop","mpunct"],ne=["rightmost","mrel","mclose","mpunct"],ie={display:w.DISPLAY,text:w.TEXT,script:w.SCRIPT,scriptscript:w.SCRIPTSCRIPT},oe={mord:"mord",mop:"mop",mbin:"mbin",mrel:"mrel",mopen:"mopen",mclose:"mclose",mpunct:"mpunct",minner:"minner"},se=function(t,e,r,a){void 0===a&&(a=[null,null]);for(var n=[],i=0;i<t.length;i++){var o=ue(t[i],e);if(o instanceof A){var s=o.children;n.push.apply(n,s)}else n.push(o)}if(!r)return n;var h=e;if(1===t.length){var l=Vt(t[0],"sizing")||Vt(t[0],"styling");l&&("sizing"===l.type?h=e.havingSize(l.size):"styling"===l.type&&(h=e.havingStyle(ie[l.style])))}var m=re([a[0]||"leftmost"],[],e),u=re([a[1]||"rightmost"],[],e);return he(n,function(t,e){var r=e.classes[0],a=t.classes[0];"mbin"===r&&c.contains(ne,a)?e.classes[0]="mord":"mbin"===a&&c.contains(ae,r)&&(t.classes[0]="mord")},{node:m},u),he(n,function(t,e){var r=me(e),a=me(t),n=r&&a?t.hasClass("mtight")?$t[r][a]:jt[r][a]:null;if(n)return Dt.makeGlue(n,h)},{node:m},u),n},he=function t(e,r,a,n){n&&e.push(n);for(var i=0;i<e.length;i++){var o=e[i],s=le(o);if(s)t(s.children,r,a);else if("mspace"!==o.classes[0]){var h=r(o,a.node);h&&(a.insertAfter?a.insertAfter(h):(e.unshift(h),i++)),a.node=o,a.insertAfter=function(t){return function(r){e.splice(t+1,0,r),i++}}(i)}}n&&e.pop()},le=function(t){return t instanceof A||t instanceof I?t:null},me=function(t,e){return t?(e&&(t=function t(e,r){var a=le(e);if(a){var n=a.children;if(n.length){if("right"===r)return t(n[n.length-1],"right");if("left"===r)return t(n[0],"left")}}return e}(t,e)),oe[t.classes[0]]||null):null},ce=function(t,e){var r=["nulldelimiter"].concat(t.baseSizingClasses());return re(e.concat(r))},ue=function(t,e,r){if(!t)return re();if(Kt[t.type]){var a=Kt[t.type](t,e);if(r&&e.size!==r.size){a=re(e.sizingClasses(r),[a],e);var n=e.sizeMultiplier/r.sizeMultiplier;a.height*=n,a.depth*=n}return a}throw new o("Got group of unknown type: '"+t.type+"'")};function pe(t,e){var r=re(["base"],t,e),a=re(["strut"]);return a.style.height=r.height+r.depth+"em",a.style.verticalAlign=-r.depth+"em",r.children.unshift(a),r}function de(t,e){var r=null;1===t.length&&"tag"===t[0].type&&(r=t[0].tag,t=t[0].body);for(var a,n=se(t,e,!0),i=[],o=[],s=0;s<n.length;s++)if(o.push(n[s]),n[s].hasClass("mbin")||n[s].hasClass("mrel")||n[s].hasClass("allowbreak")){for(var h=!1;s<n.length-1&&n[s+1].hasClass("mspace")&&!n[s+1].hasClass("newline");)s++,o.push(n[s]),n[s].hasClass("nobreak")&&(h=!0);h||(i.push(pe(o,e)),o=[])}else n[s].hasClass("newline")&&(o.pop(),o.length>0&&(i.push(pe(o,e)),o=[]),i.push(n[s]));o.length>0&&i.push(pe(o,e)),r&&((a=pe(se(r,e,!0))).classes=["tag"],i.push(a));var l=re(["katex-html"],i);if(l.setAttribute("aria-hidden","true"),a){var m=a.children[0];m.style.height=l.height+l.depth+"em",m.style.verticalAlign=-l.depth+"em"}return l}function fe(t){return new A(t)}var ge=function(){function t(t,e){this.type=void 0,this.attributes=void 0,this.children=void 0,this.type=t,this.attributes={},this.children=e||[]}var e=t.prototype;return e.setAttribute=function(t,e){this.attributes[t]=e},e.getAttribute=function(t){return this.attributes[t]},e.toNode=function(){var t=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var e in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,e)&&t.setAttribute(e,this.attributes[e]);for(var r=0;r<this.children.length;r++)t.appendChild(this.children[r].toNode());return t},e.toMarkup=function(){var t="<"+this.type;for(var e in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,e)&&(t+=" "+e+'="',t+=c.escape(this.attributes[e]),t+='"');t+=">";for(var r=0;r<this.children.length;r++)t+=this.children[r].toMarkup();return t+="</"+this.type+">"},e.toText=function(){return this.children.map(function(t){return t.toText()}).join("")},t}(),xe=function(){function t(t){this.text=void 0,this.text=t}var e=t.prototype;return e.toNode=function(){return document.createTextNode(this.text)},e.toMarkup=function(){return c.escape(this.toText())},e.toText=function(){return this.text},t}(),ve={MathNode:ge,TextNode:xe,SpaceNode:function(){function t(t){this.width=void 0,this.character=void 0,this.width=t,this.character=t>=.05555&&t<=.05556?"\u200a":t>=.1666&&t<=.1667?"\u2009":t>=.2222&&t<=.2223?"\u2005":t>=.2777&&t<=.2778?"\u2005\u200a":t>=-.05556&&t<=-.05555?"\u200a\u2063":t>=-.1667&&t<=-.1666?"\u2009\u2063":t>=-.2223&&t<=-.2222?"\u205f\u2063":t>=-.2778&&t<=-.2777?"\u2005\u2063":null}var e=t.prototype;return e.toNode=function(){if(this.character)return document.createTextNode(this.character);var t=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");return t.setAttribute("width",this.width+"em"),t},e.toMarkup=function(){return this.character?"<mtext>"+this.character+"</mtext>":'<mspace width="'+this.width+'em"/>'},e.toText=function(){return this.character?this.character:" "},t}(),newDocumentFragment:fe},be=function(t,e,r){return!j[e][t]||!j[e][t].replace||55349===t.charCodeAt(0)||rt.hasOwnProperty(t)&&r&&(r.fontFamily&&"tt"===r.fontFamily.substr(4,2)||r.font&&"tt"===r.font.substr(4,2))||(t=j[e][t].replace),new ve.TextNode(t)},ye=function(t){return 1===t.length?t[0]:new ve.MathNode("mrow",t)},we=function(t,e){if("texttt"===e.fontFamily)return"monospace";if("textsf"===e.fontFamily)return"textit"===e.fontShape&&"textbf"===e.fontWeight?"sans-serif-bold-italic":"textit"===e.fontShape?"sans-serif-italic":"textbf"===e.fontWeight?"bold-sans-serif":"sans-serif";if("textit"===e.fontShape&&"textbf"===e.fontWeight)return"bold-italic";if("textit"===e.fontShape)return"italic";if("textbf"===e.fontWeight)return"bold";var r=e.font;if(!r||"mathnormal"===r)return null;var a=t.mode;if("mathit"===r)return"italic";if("boldsymbol"===r)return"bold-italic";if("mathbf"===r)return"bold";if("mathbb"===r)return"double-struck";if("mathfrak"===r)return"fraktur";if("mathscr"===r||"mathcal"===r)return"script";if("mathsf"===r)return"sans-serif";if("mathtt"===r)return"monospace";var n=t.text;return c.contains(["\\imath","\\jmath"],n)?null:(j[a][n]&&j[a][n].replace&&(n=j[a][n].replace),G(n,Dt.fontMap[r].fontName,a)?Dt.fontMap[r].variant:null)},ke=function(t,e,r){if(1===t.length){var a=Me(t[0],e);return r&&a instanceof ge&&"mo"===a.type&&(a.setAttribute("lspace","0em"),a.setAttribute("rspace","0em")),[a]}for(var n,i=[],o=0;o<t.length;o++){var s=Me(t[o],e);if(s instanceof ge&&n instanceof ge){if("mtext"===s.type&&"mtext"===n.type&&s.getAttribute("mathvariant")===n.getAttribute("mathvariant")){var h;(h=n.children).push.apply(h,s.children);continue}if("mn"===s.type&&"mn"===n.type){var l;(l=n.children).push.apply(l,s.children);continue}if("mi"===s.type&&1===s.children.length&&"mn"===n.type){var m=s.children[0];if(m instanceof xe&&"."===m.text){var c;(c=n.children).push.apply(c,s.children);continue}}else if("mi"===n.type&&1===n.children.length){var u=n.children[0];if(u instanceof xe&&"\u0338"===u.text&&("mo"===s.type||"mi"===s.type||"mn"===s.type)){var p=s.children[0];p instanceof xe&&p.text.length>0&&(p.text=p.text.slice(0,1)+"\u0338"+p.text.slice(1),i.pop())}}}i.push(s),n=s}return i},Se=function(t,e,r){return ye(ke(t,e,r))},Me=function(t,e){if(!t)return new ve.MathNode("mrow");if(Jt[t.type])return Jt[t.type](t,e);throw new o("Got group of unknown type: '"+t.type+"'")};function ze(t,e,r,a){var n,i=ke(t,r);n=1===i.length&&i[0]instanceof ge&&c.contains(["mrow","mtable"],i[0].type)?i[0]:new ve.MathNode("mrow",i);var o=new ve.MathNode("annotation",[new ve.TextNode(e)]);o.setAttribute("encoding","application/x-tex");var s=new ve.MathNode("semantics",[n,o]),h=new ve.MathNode("math",[s]);h.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML");var l=a?"katex":"katex-mathml";return Dt.makeSpan([l],[h])}var Ae=function(t){return new St({style:t.displayMode?w.DISPLAY:w.TEXT,maxSize:t.maxSize,minRuleThickness:t.minRuleThickness})},Te=function(t,e){if(e.displayMode){var r=["katex-display"];e.leqno&&r.push("leqno"),e.fleqn&&r.push("fleqn"),t=Dt.makeSpan(r,[t])}return t},Be=function(t,e,r){var a,n=Ae(r);if("mathml"===r.output)return ze(t,e,n,!0);if("html"===r.output){var i=de(t,n);a=Dt.makeSpan(["katex"],[i])}else{var o=ze(t,e,n,!1),s=de(t,n);a=Dt.makeSpan(["katex"],[o,s])}return Te(a,r)},Ce={widehat:"^",widecheck:"\u02c7",widetilde:"~",utilde:"~",overleftarrow:"\u2190",underleftarrow:"\u2190",xleftarrow:"\u2190",overrightarrow:"\u2192",underrightarrow:"\u2192",xrightarrow:"\u2192",underbrace:"\u23df",overbrace:"\u23de",overgroup:"\u23e0",undergroup:"\u23e1",overleftrightarrow:"\u2194",underleftrightarrow:"\u2194",xleftrightarrow:"\u2194",Overrightarrow:"\u21d2",xRightarrow:"\u21d2",overleftharpoon:"\u21bc",xleftharpoonup:"\u21bc",overrightharpoon:"\u21c0",xrightharpoonup:"\u21c0",xLeftarrow:"\u21d0",xLeftrightarrow:"\u21d4",xhookleftarrow:"\u21a9",xhookrightarrow:"\u21aa",xmapsto:"\u21a6",xrightharpoondown:"\u21c1",xleftharpoondown:"\u21bd",xrightleftharpoons:"\u21cc",xleftrightharpoons:"\u21cb",xtwoheadleftarrow:"\u219e",xtwoheadrightarrow:"\u21a0",xlongequal:"=",xtofrom:"\u21c4",xrightleftarrows:"\u21c4",xrightequilibrium:"\u21cc",xleftequilibrium:"\u21cb"},qe={overrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],overleftarrow:[["leftarrow"],.888,522,"xMinYMin"],underrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],underleftarrow:[["leftarrow"],.888,522,"xMinYMin"],xrightarrow:[["rightarrow"],1.469,522,"xMaxYMin"],xleftarrow:[["leftarrow"],1.469,522,"xMinYMin"],Overrightarrow:[["doublerightarrow"],.888,560,"xMaxYMin"],xRightarrow:[["doublerightarrow"],1.526,560,"xMaxYMin"],xLeftarrow:[["doubleleftarrow"],1.526,560,"xMinYMin"],overleftharpoon:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoonup:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoondown:[["leftharpoondown"],.888,522,"xMinYMin"],overrightharpoon:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoonup:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoondown:[["rightharpoondown"],.888,522,"xMaxYMin"],xlongequal:[["longequal"],.888,334,"xMinYMin"],xtwoheadleftarrow:[["twoheadleftarrow"],.888,334,"xMinYMin"],xtwoheadrightarrow:[["twoheadrightarrow"],.888,334,"xMaxYMin"],overleftrightarrow:[["leftarrow","rightarrow"],.888,522],overbrace:[["leftbrace","midbrace","rightbrace"],1.6,548],underbrace:[["leftbraceunder","midbraceunder","rightbraceunder"],1.6,548],underleftrightarrow:[["leftarrow","rightarrow"],.888,522],xleftrightarrow:[["leftarrow","rightarrow"],1.75,522],xLeftrightarrow:[["doubleleftarrow","doublerightarrow"],1.75,560],xrightleftharpoons:[["leftharpoondownplus","rightharpoonplus"],1.75,716],xleftrightharpoons:[["leftharpoonplus","rightharpoondownplus"],1.75,716],xhookleftarrow:[["leftarrow","righthook"],1.08,522],xhookrightarrow:[["lefthook","rightarrow"],1.08,522],overlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],underlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],overgroup:[["leftgroup","rightgroup"],.888,342],undergroup:[["leftgroupunder","rightgroupunder"],.888,342],xmapsto:[["leftmapsto","rightarrow"],1.5,522],xtofrom:[["leftToFrom","rightToFrom"],1.75,528],xrightleftarrows:[["baraboveleftarrow","rightarrowabovebar"],1.75,901],xrightequilibrium:[["baraboveshortleftharpoon","rightharpoonaboveshortbar"],1.75,716],xleftequilibrium:[["shortbaraboveleftharpoon","shortrightharpoonabovebar"],1.75,716]},Ne=function(t){return"ordgroup"===t.type?t.body.length:1},Ie=function(t,e,r,a){var n,i=t.height+t.depth+2*r;if(/fbox|color/.test(e)){if(n=Dt.makeSpan(["stretchy",e],[],a),"fbox"===e){var o=a.color&&a.getColor();o&&(n.style.borderColor=o)}}else{var s=[];/^[bx]cancel$/.test(e)&&s.push(new P({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(e)&&s.push(new P({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}));var h=new L(s,{width:"100%",height:i+"em"});n=Dt.makeSvgSpan([],[h],a)}return n.height=i,n.style.height=i+"em",n},Re=function(t){var e=new ve.MathNode("mo",[new ve.TextNode(Ce[t.substr(1)])]);return e.setAttribute("stretchy","true"),e},Oe=function(t,e){var r=function(){var r=4e5,a=t.label.substr(1);if(c.contains(["widehat","widecheck","widetilde","utilde"],a)){var n,i,o,s=Ne(t.base);if(s>5)"widehat"===a||"widecheck"===a?(n=420,r=2364,o=.42,i=a+"4"):(n=312,r=2340,o=.34,i="tilde4");else{var h=[1,1,2,2,3,3][s];"widehat"===a||"widecheck"===a?(r=[0,1062,2364,2364,2364][h],n=[0,239,300,360,420][h],o=[0,.24,.3,.3,.36,.42][h],i=a+h):(r=[0,600,1033,2339,2340][h],n=[0,260,286,306,312][h],o=[0,.26,.286,.3,.306,.34][h],i="tilde"+h)}var l=new H(i),m=new L([l],{width:"100%",height:o+"em",viewBox:"0 0 "+r+" "+n,preserveAspectRatio:"none"});return{span:Dt.makeSvgSpan([],[m],e),minWidth:0,height:o}}var u,p,d=[],f=qe[a],g=f[0],x=f[1],v=f[2],b=v/1e3,y=g.length;if(1===y)u=["hide-tail"],p=[f[3]];else if(2===y)u=["halfarrow-left","halfarrow-right"],p=["xMinYMin","xMaxYMin"];else{if(3!==y)throw new Error("Correct katexImagesData or update code here to support\n "+y+" children.");u=["brace-left","brace-center","brace-right"],p=["xMinYMin","xMidYMin","xMaxYMin"]}for(var w=0;w<y;w++){var k=new H(g[w]),S=new L([k],{width:"400em",height:b+"em",viewBox:"0 0 "+r+" "+v,preserveAspectRatio:p[w]+" slice"}),M=Dt.makeSvgSpan([u[w]],[S],e);if(1===y)return{span:M,minWidth:x,height:b};M.style.height=b+"em",d.push(M)}return{span:Dt.makeSpan(["stretchy"],d,e),minWidth:x,height:b}}(),a=r.span,n=r.minWidth,i=r.height;return a.height=i,a.style.height=i+"em",n>0&&(a.style.minWidth=n+"em"),a},Ee=function(t,e){var r,a,n,i=Vt(t,"supsub");i?(r=(a=Ft(i.base,"accent")).base,i.base=r,n=function(t){if(t instanceof N)return t;throw new Error("Expected span<HtmlDomNode> but got "+String(t)+".")}(ue(i,e)),i.base=a):r=(a=Ft(t,"accent")).base;var o=ue(r,e.havingCrampedStyle()),s=0;if(a.isShifty&&c.isCharacterBox(r)){var h=c.getBaseElem(r);s=D(ue(h,e.havingCrampedStyle())).skew}var l,m=Math.min(o.height,e.fontMetrics().xHeight);if(a.isStretchy)l=Oe(a,e),l=Dt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:o},{type:"elem",elem:l,wrapperClasses:["svg-align"],wrapperStyle:s>0?{width:"calc(100% - "+2*s+"em)",marginLeft:2*s+"em"}:void 0}]},e);else{var u,p;"\\vec"===a.label?(u=Dt.staticSvg("vec",e),p=Dt.svgData.vec[1]):((u=D(u=Dt.makeOrd({mode:a.mode,text:a.label},e,"textord"))).italic=0,p=u.width),l=Dt.makeSpan(["accent-body"],[u]);var d="\\textcircled"===a.label;d&&(l.classes.push("accent-full"),m=o.height);var f=s;d||(f-=p/2),l.style.left=f+"em","\\textcircled"===a.label&&(l.style.top=".2em"),l=Dt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:o},{type:"kern",size:-m},{type:"elem",elem:l}]},e)}var g=Dt.makeSpan(["mord","accent"],[l],e);return n?(n.children[0]=g,n.height=Math.max(g.height,n.height),n.classes[0]="mord",n):g},Le=function(t,e){var r=t.isStretchy?Re(t.label):new ve.MathNode("mo",[be(t.label,t.mode)]),a=new ve.MathNode("mover",[Me(t.base,e),r]);return a.setAttribute("accent","true"),a},He=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map(function(t){return"\\"+t}).join("|"));Qt({type:"accent",names:["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\widecheck","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:function(t,e){var r=e[0],a=!He.test(t.funcName),n=!a||"\\widehat"===t.funcName||"\\widetilde"===t.funcName||"\\widecheck"===t.funcName;return{type:"accent",mode:t.parser.mode,label:t.funcName,isStretchy:a,isShifty:n,base:r}},htmlBuilder:Ee,mathmlBuilder:Le}),Qt({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\r","\\H","\\v","\\textcircled"],props:{numArgs:1,allowedInText:!0,allowedInMath:!1},handler:function(t,e){var r=e[0];return{type:"accent",mode:t.parser.mode,label:t.funcName,isStretchy:!1,isShifty:!0,base:r}},htmlBuilder:Ee,mathmlBuilder:Le}),Qt({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:function(t,e){var r=t.parser,a=t.funcName,n=e[0];return{type:"accentUnder",mode:r.mode,label:a,base:n}},htmlBuilder:function(t,e){var r=ue(t.base,e),a=Oe(t,e),n="\\utilde"===t.label?.12:0,i=Dt.makeVList({positionType:"bottom",positionData:a.height+n,children:[{type:"elem",elem:a,wrapperClasses:["svg-align"]},{type:"kern",size:n},{type:"elem",elem:r}]},e);return Dt.makeSpan(["mord","accentunder"],[i],e)},mathmlBuilder:function(t,e){var r=Re(t.label),a=new ve.MathNode("munder",[Me(t.base,e),r]);return a.setAttribute("accentunder","true"),a}});var Pe=function(t){var e=new ve.MathNode("mpadded",t?[t]:[]);return e.setAttribute("width","+0.6em"),e.setAttribute("lspace","0.3em"),e};Qt({type:"xArrow",names:["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xtofrom","\\xrightleftarrows","\\xrightequilibrium","\\xleftequilibrium"],props:{numArgs:1,numOptionalArgs:1},handler:function(t,e,r){var a=t.parser,n=t.funcName;return{type:"xArrow",mode:a.mode,label:n,body:e[0],below:r[0]}},htmlBuilder:function(t,e){var r,a=e.style,n=e.havingStyle(a.sup()),i=Dt.wrapFragment(ue(t.body,n,e),e);i.classes.push("x-arrow-pad"),t.below&&(n=e.havingStyle(a.sub()),(r=Dt.wrapFragment(ue(t.below,n,e),e)).classes.push("x-arrow-pad"));var o,s=Oe(t,e),h=-e.fontMetrics().axisHeight+.5*s.height,l=-e.fontMetrics().axisHeight-.5*s.height-.111;if((i.depth>.25||"\\xleftequilibrium"===t.label)&&(l-=i.depth),r){var m=-e.fontMetrics().axisHeight+r.height+.5*s.height+.111;o=Dt.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:l},{type:"elem",elem:s,shift:h},{type:"elem",elem:r,shift:m}]},e)}else o=Dt.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:l},{type:"elem",elem:s,shift:h}]},e);return o.children[0].children[0].children[1].classes.push("svg-align"),Dt.makeSpan(["mrel","x-arrow"],[o],e)},mathmlBuilder:function(t,e){var r,a=Re(t.label);if(t.body){var n=Pe(Me(t.body,e));if(t.below){var i=Pe(Me(t.below,e));r=new ve.MathNode("munderover",[a,i,n])}else r=new ve.MathNode("mover",[a,n])}else if(t.below){var o=Pe(Me(t.below,e));r=new ve.MathNode("munder",[a,o])}else r=Pe(),r=new ve.MathNode("mover",[a,r]);return r}}),Qt({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler:function(t,e){for(var r=t.parser,a=Ft(e[0],"ordgroup").body,n="",i=0;i<a.length;i++){n+=Ft(a[i],"textord").text}var s=parseInt(n);if(isNaN(s))throw new o("\\@char has non-numeric argument "+n);return{type:"textord",mode:r.mode,text:String.fromCharCode(s)}}});var De=function(t,e){var r=se(t.body,e.withColor(t.color),!1);return Dt.makeFragment(r)},Fe=function(t,e){var r=ke(t.body,e.withColor(t.color)),a=new ve.MathNode("mstyle",r);return a.setAttribute("mathcolor",t.color),a};Qt({type:"color",names:["\\textcolor"],props:{numArgs:2,allowedInText:!0,greediness:3,argTypes:["color","original"]},handler:function(t,e){var r=t.parser,a=Ft(e[0],"color-token").color,n=e[1];return{type:"color",mode:r.mode,color:a,body:ee(n)}},htmlBuilder:De,mathmlBuilder:Fe}),Qt({type:"color",names:["\\color"],props:{numArgs:1,allowedInText:!0,greediness:3,argTypes:["color"]},handler:function(t,e){var r=t.parser,a=t.breakOnTokenText,n=Ft(e[0],"color-token").color;r.gullet.macros.set("\\current@color",n);var i=r.parseExpression(!0,a);return{type:"color",mode:r.mode,color:n,body:i}},htmlBuilder:De,mathmlBuilder:Fe}),Qt({type:"cr",names:["\\cr","\\newline"],props:{numArgs:0,numOptionalArgs:1,argTypes:["size"],allowedInText:!0},handler:function(t,e,r){var a=t.parser,n=t.funcName,i=r[0],o="\\cr"===n,s=!1;return o||(s=!a.settings.displayMode||!a.settings.useStrictBehavior("newLineInDisplayMode","In LaTeX, \\\\ or \\newline does nothing in display mode")),{type:"cr",mode:a.mode,newLine:s,newRow:o,size:i&&Ft(i,"size").value}},htmlBuilder:function(t,e){if(t.newRow)throw new o("\\cr valid only within a tabular/array environment");var r=Dt.makeSpan(["mspace"],[],e);return t.newLine&&(r.classes.push("newline"),t.size&&(r.style.marginTop=Tt(t.size,e)+"em")),r},mathmlBuilder:function(t,e){var r=new ve.MathNode("mspace");return t.newLine&&(r.setAttribute("linebreak","newline"),t.size&&r.setAttribute("height",Tt(t.size,e)+"em")),r}});var Ve=function(t,e,r){var a=G(j.math[t]&&j.math[t].replace||t,e,r);if(!a)throw new Error("Unsupported symbol "+t+" and font size "+e+".");return a},Ue=function(t,e,r,a){var n=r.havingBaseStyle(e),i=Dt.makeSpan(a.concat(n.sizingClasses(r)),[t],r),o=n.sizeMultiplier/r.sizeMultiplier;return i.height*=o,i.depth*=o,i.maxFontSize=n.sizeMultiplier,i},Ge=function(t,e,r){var a=e.havingBaseStyle(r),n=(1-e.sizeMultiplier/a.sizeMultiplier)*e.fontMetrics().axisHeight;t.classes.push("delimcenter"),t.style.top=n+"em",t.height-=n,t.depth+=n},Ye=function(t,e,r,a,n,i){var o=function(t,e,r,a){return Dt.makeSymbol(t,"Size"+e+"-Regular",r,a)}(t,e,n,a),s=Ue(Dt.makeSpan(["delimsizing","size"+e],[o],a),w.TEXT,a,i);return r&&Ge(s,a,w.TEXT),s},We=function(t,e,r){var a;return a="Size1-Regular"===e?"delim-size1":"delim-size4",{type:"elem",elem:Dt.makeSpan(["delimsizinginner",a],[Dt.makeSpan([],[Dt.makeSymbol(t,e,r)])])}},Xe={type:"kern",size:-.005},_e=function(t,e,r,a,n,i){var o,s,h,l;o=h=l=t,s=null;var m="Size1-Regular";"\\uparrow"===t?h=l="\u23d0":"\\Uparrow"===t?h=l="\u2016":"\\downarrow"===t?o=h="\u23d0":"\\Downarrow"===t?o=h="\u2016":"\\updownarrow"===t?(o="\\uparrow",h="\u23d0",l="\\downarrow"):"\\Updownarrow"===t?(o="\\Uparrow",h="\u2016",l="\\Downarrow"):"["===t||"\\lbrack"===t?(o="\u23a1",h="\u23a2",l="\u23a3",m="Size4-Regular"):"]"===t||"\\rbrack"===t?(o="\u23a4",h="\u23a5",l="\u23a6",m="Size4-Regular"):"\\lfloor"===t||"\u230a"===t?(h=o="\u23a2",l="\u23a3",m="Size4-Regular"):"\\lceil"===t||"\u2308"===t?(o="\u23a1",h=l="\u23a2",m="Size4-Regular"):"\\rfloor"===t||"\u230b"===t?(h=o="\u23a5",l="\u23a6",m="Size4-Regular"):"\\rceil"===t||"\u2309"===t?(o="\u23a4",h=l="\u23a5",m="Size4-Regular"):"("===t||"\\lparen"===t?(o="\u239b",h="\u239c",l="\u239d",m="Size4-Regular"):")"===t||"\\rparen"===t?(o="\u239e",h="\u239f",l="\u23a0",m="Size4-Regular"):"\\{"===t||"\\lbrace"===t?(o="\u23a7",s="\u23a8",l="\u23a9",h="\u23aa",m="Size4-Regular"):"\\}"===t||"\\rbrace"===t?(o="\u23ab",s="\u23ac",l="\u23ad",h="\u23aa",m="Size4-Regular"):"\\lgroup"===t||"\u27ee"===t?(o="\u23a7",l="\u23a9",h="\u23aa",m="Size4-Regular"):"\\rgroup"===t||"\u27ef"===t?(o="\u23ab",l="\u23ad",h="\u23aa",m="Size4-Regular"):"\\lmoustache"===t||"\u23b0"===t?(o="\u23a7",l="\u23ad",h="\u23aa",m="Size4-Regular"):"\\rmoustache"!==t&&"\u23b1"!==t||(o="\u23ab",l="\u23a9",h="\u23aa",m="Size4-Regular");var c=Ve(o,m,n),u=c.height+c.depth,p=Ve(h,m,n),d=p.height+p.depth,f=Ve(l,m,n),g=f.height+f.depth,x=0,v=1;if(null!==s){var b=Ve(s,m,n);x=b.height+b.depth,v=2}var y=u+g+x,k=Math.max(0,Math.ceil((e-y)/(v*d))),S=y+k*v*d,M=a.fontMetrics().axisHeight;r&&(M*=a.sizeMultiplier);var z=S/2-M,A=.005*(k+1)-d,T=[];if(T.push(We(l,m,n)),null===s)for(var B=0;B<k;B++)T.push(Xe),T.push(We(h,m,n));else{for(var C=0;C<k;C++)T.push(Xe),T.push(We(h,m,n));T.push({type:"kern",size:A}),T.push(We(h,m,n)),T.push(Xe),T.push(We(s,m,n));for(var q=0;q<k;q++)T.push(Xe),T.push(We(h,m,n))}T.push({type:"kern",size:A}),T.push(We(h,m,n)),T.push(Xe),T.push(We(o,m,n));var N=a.havingBaseStyle(w.TEXT),I=Dt.makeVList({positionType:"bottom",positionData:z,children:T},N);return Ue(Dt.makeSpan(["delimsizing","mult"],[I],N),w.TEXT,a,i)},je=function(t,e,r,a,n){var i=function(t,e,r){e*=1e3;var a="";switch(t){case"sqrtMain":a=function(t,e){return"M95,"+(622+t+e)+"\nc-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14\nc0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54\nc44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10\ns173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429\nc69,-144,104.5,-217.7,106.5,-221\nl"+t/2.075+" -"+t+"\nc5.3,-9.3,12,-14,20,-14\nH400000v"+(40+t)+"H845.2724\ns-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7\nc-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z\nM"+(834+t)+" "+e+"h400000v"+(40+t)+"h-400000z"}(e,80);break;case"sqrtSize1":a=function(t,e){return"M263,"+(601+t+e)+"c0.7,0,18,39.7,52,119\nc34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120\nc340,-704.7,510.7,-1060.3,512,-1067\nl"+t/2.084+" -"+t+"\nc4.7,-7.3,11,-11,19,-11\nH40000v"+(40+t)+"H1012.3\ns-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232\nc-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1\ns-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26\nc-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z\nM"+(1001+t)+" "+e+"h400000v"+(40+t)+"h-400000z"}(e,80);break;case"sqrtSize2":a=function(t,e){return"M983 "+(10+t+e)+"\nl"+t/3.13+" -"+t+"\nc4,-6.7,10,-10,18,-10 H400000v"+(40+t)+"\nH1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7\ns-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744\nc-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30\nc26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722\nc56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5\nc53.7,-170.3,84.5,-266.8,92.5,-289.5z\nM"+(1001+t)+" "+e+"h400000v"+(40+t)+"h-400000z"}(e,80);break;case"sqrtSize3":a=function(t,e){return"M424,"+(2398+t+e)+"\nc-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514\nc0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20\ns-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121\ns209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081\nl"+t/4.223+" -"+t+"c4,-6.7,10,-10,18,-10 H400000\nv"+(40+t)+"H1014.6\ns-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185\nc-2,6,-10,9,-24,9\nc-8,0,-12,-0.7,-12,-2z M"+(1001+t)+" "+e+"\nh400000v"+(40+t)+"h-400000z"}(e,80);break;case"sqrtSize4":a=function(t,e){return"M473,"+(2713+t+e)+"\nc339.3,-1799.3,509.3,-2700,510,-2702 l"+t/5.298+" -"+t+"\nc3.3,-7.3,9.3,-11,18,-11 H400000v"+(40+t)+"H1017.7\ns-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9\nc-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200\nc0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26\ns76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104,\n606zM"+(1001+t)+" "+e+"h400000v"+(40+t)+"H1017.7z"}(e,80);break;case"sqrtTall":a=function(t,e,r){return"M702 "+(t+e)+"H400000"+(40+t)+"\nH742v"+(r-54-e-t)+"l-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1\nh-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170\nc-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667\n219 661 l218 661zM702 "+e+"H400000v"+(40+t)+"H742z"}(e,80,r)}return a}(t,a,r),o=new H(t,i),s=new L([o],{width:"400em",height:e+"em",viewBox:"0 0 400000 "+r,preserveAspectRatio:"xMinYMin slice"});return Dt.makeSvgSpan(["hide-tail"],[s],n)},$e=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230a","\u230b","\\lceil","\\rceil","\u2308","\u2309","\\surd"],Ze=["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27ee","\u27ef","\\lmoustache","\\rmoustache","\u23b0","\u23b1"],Ke=["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"],Je=[0,1.2,1.8,2.4,3],Qe=[{type:"small",style:w.SCRIPTSCRIPT},{type:"small",style:w.SCRIPT},{type:"small",style:w.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],tr=[{type:"small",style:w.SCRIPTSCRIPT},{type:"small",style:w.SCRIPT},{type:"small",style:w.TEXT},{type:"stack"}],er=[{type:"small",style:w.SCRIPTSCRIPT},{type:"small",style:w.SCRIPT},{type:"small",style:w.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],rr=function(t){if("small"===t.type)return"Main-Regular";if("large"===t.type)return"Size"+t.size+"-Regular";if("stack"===t.type)return"Size4-Regular";throw new Error("Add support for delim type '"+t.type+"' here.")},ar=function(t,e,r,a){for(var n=Math.min(2,3-a.style.size);n<r.length&&"stack"!==r[n].type;n++){var i=Ve(t,rr(r[n]),"math"),o=i.height+i.depth;if("small"===r[n].type&&(o*=a.havingBaseStyle(r[n].style).sizeMultiplier),o>e)return r[n]}return r[r.length-1]},nr=function(t,e,r,a,n,i){var o;"<"===t||"\\lt"===t||"\u27e8"===t?t="\\langle":">"!==t&&"\\gt"!==t&&"\u27e9"!==t||(t="\\rangle"),o=c.contains(Ke,t)?Qe:c.contains($e,t)?er:tr;var s=ar(t,e,o,a);return"small"===s.type?function(t,e,r,a,n,i){var o=Dt.makeSymbol(t,"Main-Regular",n,a),s=Ue(o,e,a,i);return r&&Ge(s,a,e),s}(t,s.style,r,a,n,i):"large"===s.type?Ye(t,s.size,r,a,n,i):_e(t,e,r,a,n,i)},ir=function(t,e){var r,a,n=e.havingBaseSizing(),i=ar("\\surd",t*n.sizeMultiplier,er,n),o=n.sizeMultiplier,s=Math.max(0,e.minRuleThickness-e.fontMetrics().sqrtRuleThickness),h=0,l=0,m=0;return"small"===i.type?(t<1?o=1:t<1.4&&(o=.7),l=(1+s)/o,(r=je("sqrtMain",h=(1+s+.08)/o,m=1e3+1e3*s+80,s,e)).style.minWidth="0.853em",a=.833/o):"large"===i.type?(m=1080*Je[i.size],l=(Je[i.size]+s)/o,h=(Je[i.size]+s+.08)/o,(r=je("sqrtSize"+i.size,h,m,s,e)).style.minWidth="1.02em",a=1/o):(h=t+s+.08,l=t+s,m=Math.floor(1e3*t+s)+80,(r=je("sqrtTall",h,m,s,e)).style.minWidth="0.742em",a=1.056),r.height=l,r.style.height=h+"em",{span:r,advanceWidth:a,ruleWidth:(e.fontMetrics().sqrtRuleThickness+s)*o}},or=function(t,e,r,a,n){if("<"===t||"\\lt"===t||"\u27e8"===t?t="\\langle":">"!==t&&"\\gt"!==t&&"\u27e9"!==t||(t="\\rangle"),c.contains($e,t)||c.contains(Ke,t))return Ye(t,e,!1,r,a,n);if(c.contains(Ze,t))return _e(t,Je[e],!1,r,a,n);throw new o("Illegal delimiter: '"+t+"'")},sr=nr,hr=function(t,e,r,a,n,i){var o=a.fontMetrics().axisHeight*a.sizeMultiplier,s=5/a.fontMetrics().ptPerEm,h=Math.max(e-o,r+o),l=Math.max(h/500*901,2*h-s);return nr(t,l,!0,a,n,i)},lr={"\\bigl":{mclass:"mopen",size:1},"\\Bigl":{mclass:"mopen",size:2},"\\biggl":{mclass:"mopen",size:3},"\\Biggl":{mclass:"mopen",size:4},"\\bigr":{mclass:"mclose",size:1},"\\Bigr":{mclass:"mclose",size:2},"\\biggr":{mclass:"mclose",size:3},"\\Biggr":{mclass:"mclose",size:4},"\\bigm":{mclass:"mrel",size:1},"\\Bigm":{mclass:"mrel",size:2},"\\biggm":{mclass:"mrel",size:3},"\\Biggm":{mclass:"mrel",size:4},"\\big":{mclass:"mord",size:1},"\\Big":{mclass:"mord",size:2},"\\bigg":{mclass:"mord",size:3},"\\Bigg":{mclass:"mord",size:4}},mr=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230a","\u230b","\\lceil","\\rceil","\u2308","\u2309","<",">","\\langle","\u27e8","\\rangle","\u27e9","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27ee","\u27ef","\\lmoustache","\\rmoustache","\u23b0","\u23b1","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];function cr(t,e){var r=Yt(t);if(r&&c.contains(mr,r.text))return r;throw new o("Invalid delimiter: '"+(r?r.text:JSON.stringify(t))+"' after '"+e.funcName+"'",t)}function ur(t){if(!t.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}Qt({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1},handler:function(t,e){var r=cr(e[0],t);return{type:"delimsizing",mode:t.parser.mode,size:lr[t.funcName].size,mclass:lr[t.funcName].mclass,delim:r.text}},htmlBuilder:function(t,e){return"."===t.delim?Dt.makeSpan([t.mclass]):or(t.delim,t.size,e,t.mode,[t.mclass])},mathmlBuilder:function(t){var e=[];"."!==t.delim&&e.push(be(t.delim,t.mode));var r=new ve.MathNode("mo",e);return"mopen"===t.mclass||"mclose"===t.mclass?r.setAttribute("fence","true"):r.setAttribute("fence","false"),r}}),Qt({type:"leftright-right",names:["\\right"],props:{numArgs:1},handler:function(t,e){var r=t.parser.gullet.macros.get("\\current@color");if(r&&"string"!=typeof r)throw new o("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:t.parser.mode,delim:cr(e[0],t).text,color:r}}}),Qt({type:"leftright",names:["\\left"],props:{numArgs:1},handler:function(t,e){var r=cr(e[0],t),a=t.parser;++a.leftrightDepth;var n=a.parseExpression(!1);--a.leftrightDepth,a.expect("\\right",!1);var i=Ft(a.parseFunction(),"leftright-right");return{type:"leftright",mode:a.mode,body:n,left:r.text,right:i.delim,rightColor:i.color}},htmlBuilder:function(t,e){ur(t);for(var r,a,n=se(t.body,e,!0,["mopen","mclose"]),i=0,o=0,s=!1,h=0;h<n.length;h++)n[h].isMiddle?s=!0:(i=Math.max(n[h].height,i),o=Math.max(n[h].depth,o));if(i*=e.sizeMultiplier,o*=e.sizeMultiplier,r="."===t.left?ce(e,["mopen"]):hr(t.left,i,o,e,t.mode,["mopen"]),n.unshift(r),s)for(var l=1;l<n.length;l++){var m=n[l].isMiddle;m&&(n[l]=hr(m.delim,i,o,m.options,t.mode,[]))}if("."===t.right)a=ce(e,["mclose"]);else{var c=t.rightColor?e.withColor(t.rightColor):e;a=hr(t.right,i,o,c,t.mode,["mclose"])}return n.push(a),Dt.makeSpan(["minner"],n,e)},mathmlBuilder:function(t,e){ur(t);var r=ke(t.body,e);if("."!==t.left){var a=new ve.MathNode("mo",[be(t.left,t.mode)]);a.setAttribute("fence","true"),r.unshift(a)}if("."!==t.right){var n=new ve.MathNode("mo",[be(t.right,t.mode)]);n.setAttribute("fence","true"),t.rightColor&&n.setAttribute("mathcolor",t.rightColor),r.push(n)}return ye(r)}}),Qt({type:"middle",names:["\\middle"],props:{numArgs:1},handler:function(t,e){var r=cr(e[0],t);if(!t.parser.leftrightDepth)throw new o("\\middle without preceding \\left",r);return{type:"middle",mode:t.parser.mode,delim:r.text}},htmlBuilder:function(t,e){var r;if("."===t.delim)r=ce(e,[]);else{r=or(t.delim,1,e,t.mode,[]);var a={delim:t.delim,options:e};r.isMiddle=a}return r},mathmlBuilder:function(t,e){var r="\\vert"===t.delim||"|"===t.delim?be("|","text"):be(t.delim,t.mode),a=new ve.MathNode("mo",[r]);return a.setAttribute("fence","true"),a.setAttribute("lspace","0.05em"),a.setAttribute("rspace","0.05em"),a}});var pr=function(t,e){var r,a,n=Dt.wrapFragment(ue(t.body,e),e),i=t.label.substr(1),o=e.sizeMultiplier,s=0,h=c.isCharacterBox(t.body);if("sout"===i)(r=Dt.makeSpan(["stretchy","sout"])).height=e.fontMetrics().defaultRuleThickness/o,s=-.5*e.fontMetrics().xHeight;else{/cancel/.test(i)?h||n.classes.push("cancel-pad"):n.classes.push("boxpad");var l=0,m=0;/box/.test(i)?(m=Math.max(e.fontMetrics().fboxrule,e.minRuleThickness),l=e.fontMetrics().fboxsep+("colorbox"===i?0:m)):l=h?.2:0,r=Ie(n,i,l,e),/fbox|boxed|fcolorbox/.test(i)&&(r.style.borderStyle="solid",r.style.borderWidth=m+"em"),s=n.depth+l,t.backgroundColor&&(r.style.backgroundColor=t.backgroundColor,t.borderColor&&(r.style.borderColor=t.borderColor))}return a=t.backgroundColor?Dt.makeVList({positionType:"individualShift",children:[{type:"elem",elem:r,shift:s},{type:"elem",elem:n,shift:0}]},e):Dt.makeVList({positionType:"individualShift",children:[{type:"elem",elem:n,shift:0},{type:"elem",elem:r,shift:s,wrapperClasses:/cancel/.test(i)?["svg-align"]:[]}]},e),/cancel/.test(i)&&(a.height=n.height,a.depth=n.depth),/cancel/.test(i)&&!h?Dt.makeSpan(["mord","cancel-lap"],[a],e):Dt.makeSpan(["mord"],[a],e)},dr=function(t,e){var r=0,a=new ve.MathNode(t.label.indexOf("colorbox")>-1?"mpadded":"menclose",[Me(t.body,e)]);switch(t.label){case"\\cancel":a.setAttribute("notation","updiagonalstrike");break;case"\\bcancel":a.setAttribute("notation","downdiagonalstrike");break;case"\\sout":a.setAttribute("notation","horizontalstrike");break;case"\\fbox":a.setAttribute("notation","box");break;case"\\fcolorbox":case"\\colorbox":if(r=e.fontMetrics().fboxsep*e.fontMetrics().ptPerEm,a.setAttribute("width","+"+2*r+"pt"),a.setAttribute("height","+"+2*r+"pt"),a.setAttribute("lspace",r+"pt"),a.setAttribute("voffset",r+"pt"),"\\fcolorbox"===t.label){var n=Math.max(e.fontMetrics().fboxrule,e.minRuleThickness);a.setAttribute("style","border: "+n+"em solid "+String(t.borderColor))}break;case"\\xcancel":a.setAttribute("notation","updiagonalstrike downdiagonalstrike")}return t.backgroundColor&&a.setAttribute("mathbackground",t.backgroundColor),a};Qt({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,greediness:3,argTypes:["color","text"]},handler:function(t,e,r){var a=t.parser,n=t.funcName,i=Ft(e[0],"color-token").color,o=e[1];return{type:"enclose",mode:a.mode,label:n,backgroundColor:i,body:o}},htmlBuilder:pr,mathmlBuilder:dr}),Qt({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:!0,greediness:3,argTypes:["color","color","text"]},handler:function(t,e,r){var a=t.parser,n=t.funcName,i=Ft(e[0],"color-token").color,o=Ft(e[1],"color-token").color,s=e[2];return{type:"enclose",mode:a.mode,label:n,backgroundColor:o,borderColor:i,body:s}},htmlBuilder:pr,mathmlBuilder:dr}),Qt({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler:function(t,e){return{type:"enclose",mode:t.parser.mode,label:"\\fbox",body:e[0]}}}),Qt({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\sout"],props:{numArgs:1},handler:function(t,e,r){var a=t.parser,n=t.funcName,i=e[0];return{type:"enclose",mode:a.mode,label:n,body:i}},htmlBuilder:pr,mathmlBuilder:dr});var fr={};function gr(t){for(var e=t.type,r=t.names,a=t.props,n=t.handler,i=t.htmlBuilder,o=t.mathmlBuilder,s={type:e,numArgs:a.numArgs||0,greediness:1,allowedInText:!1,numOptionalArgs:0,handler:n},h=0;h<r.length;++h)fr[r[h]]=s;i&&(Kt[e]=i),o&&(Jt[e]=o)}function xr(t){var e=[];t.consumeSpaces();for(var r=t.fetch().text;"\\hline"===r||"\\hdashline"===r;)t.consume(),e.push("\\hdashline"===r),t.consumeSpaces(),r=t.fetch().text;return e}function vr(t,e,r){var a=e.hskipBeforeAndAfter,n=e.addJot,i=e.cols,s=e.arraystretch,h=e.colSeparationType;if(t.gullet.beginGroup(),t.gullet.macros.set("\\\\","\\cr"),!s){var l=t.gullet.expandMacroAsText("\\arraystretch");if(null==l)s=1;else if(!(s=parseFloat(l))||s<0)throw new o("Invalid \\arraystretch: "+l)}t.gullet.beginGroup();var m=[],c=[m],u=[],p=[];for(p.push(xr(t));;){var d=t.parseExpression(!1,"\\cr");t.gullet.endGroup(),t.gullet.beginGroup(),d={type:"ordgroup",mode:t.mode,body:d},r&&(d={type:"styling",mode:t.mode,style:r,body:[d]}),m.push(d);var f=t.fetch().text;if("&"===f)t.consume();else{if("\\end"===f){1===m.length&&"styling"===d.type&&0===d.body[0].body.length&&c.pop(),p.length<c.length+1&&p.push([]);break}if("\\cr"!==f)throw new o("Expected & or \\\\ or \\cr or \\end",t.nextToken);var g=Ft(t.parseFunction(),"cr");u.push(g.size),p.push(xr(t)),m=[],c.push(m)}}return t.gullet.endGroup(),t.gullet.endGroup(),{type:"array",mode:t.mode,addJot:n,arraystretch:s,body:c,cols:i,rowGaps:u,hskipBeforeAndAfter:a,hLinesBeforeRow:p,colSeparationType:h}}function br(t){return"d"===t.substr(0,1)?"display":"text"}var yr=function(t,e){var r,a,n=t.body.length,i=t.hLinesBeforeRow,s=0,h=new Array(n),l=[],m=Math.max(e.fontMetrics().arrayRuleWidth,e.minRuleThickness),u=1/e.fontMetrics().ptPerEm,p=5*u;t.colSeparationType&&"small"===t.colSeparationType&&(p=e.havingStyle(w.SCRIPT).sizeMultiplier/e.sizeMultiplier*.2778);var d=12*u,f=3*u,g=t.arraystretch*d,x=.7*g,v=.3*g,b=0;function y(t){for(var e=0;e<t.length;++e)e>0&&(b+=.25),l.push({pos:b,isDashed:t[e]})}for(y(i[0]),r=0;r<t.body.length;++r){var k=t.body[r],S=x,M=v;s<k.length&&(s=k.length);var z=new Array(k.length);for(a=0;a<k.length;++a){var A=ue(k[a],e);M<A.depth&&(M=A.depth),S<A.height&&(S=A.height),z[a]=A}var T=t.rowGaps[r],B=0;T&&(B=Tt(T,e))>0&&(M<(B+=v)&&(M=B),B=0),t.addJot&&(M+=f),z.height=S,z.depth=M,b+=S,z.pos=b,b+=M+B,h[r]=z,y(i[r+1])}var C,q,N=b/2+e.fontMetrics().axisHeight,I=t.cols||[],R=[];for(a=0,q=0;a<s||q<I.length;++a,++q){for(var O=I[q]||{},E=!0;"separator"===O.type;){if(E||((C=Dt.makeSpan(["arraycolsep"],[])).style.width=e.fontMetrics().doubleRuleSep+"em",R.push(C)),"|"!==O.separator&&":"!==O.separator)throw new o("Invalid separator type: "+O.separator);var L="|"===O.separator?"solid":"dashed",H=Dt.makeSpan(["vertical-separator"],[],e);H.style.height=b+"em",H.style.borderRightWidth=m+"em",H.style.borderRightStyle=L,H.style.margin="0 -"+m/2+"em",H.style.verticalAlign=-(b-N)+"em",R.push(H),O=I[++q]||{},E=!1}if(!(a>=s)){var P=void 0;(a>0||t.hskipBeforeAndAfter)&&0!==(P=c.deflt(O.pregap,p))&&((C=Dt.makeSpan(["arraycolsep"],[])).style.width=P+"em",R.push(C));var D=[];for(r=0;r<n;++r){var F=h[r],V=F[a];if(V){var U=F.pos-N;V.depth=F.depth,V.height=F.height,D.push({type:"elem",elem:V,shift:U})}}D=Dt.makeVList({positionType:"individualShift",children:D},e),D=Dt.makeSpan(["col-align-"+(O.align||"c")],[D]),R.push(D),(a<s-1||t.hskipBeforeAndAfter)&&0!==(P=c.deflt(O.postgap,p))&&((C=Dt.makeSpan(["arraycolsep"],[])).style.width=P+"em",R.push(C))}}if(h=Dt.makeSpan(["mtable"],R),l.length>0){for(var G=Dt.makeLineSpan("hline",e,m),Y=Dt.makeLineSpan("hdashline",e,m),W=[{type:"elem",elem:h,shift:0}];l.length>0;){var X=l.pop(),_=X.pos-N;X.isDashed?W.push({type:"elem",elem:Y,shift:_}):W.push({type:"elem",elem:G,shift:_})}h=Dt.makeVList({positionType:"individualShift",children:W},e)}return Dt.makeSpan(["mord"],[h],e)},wr={c:"center ",l:"left ",r:"right "},kr=function(t,e){var r=new ve.MathNode("mtable",t.body.map(function(t){return new ve.MathNode("mtr",t.map(function(t){return new ve.MathNode("mtd",[Me(t,e)])}))})),a=.5===t.arraystretch?.1:.16+t.arraystretch-1+(t.addJot?.09:0);r.setAttribute("rowspacing",a+"em");var n="",i="";if(t.cols){var o=t.cols,s="",h=!1,l=0,m=o.length;"separator"===o[0].type&&(n+="top ",l=1),"separator"===o[o.length-1].type&&(n+="bottom ",m-=1);for(var c=l;c<m;c++)"align"===o[c].type?(i+=wr[o[c].align],h&&(s+="none "),h=!0):"separator"===o[c].type&&h&&(s+="|"===o[c].separator?"solid ":"dashed ",h=!1);r.setAttribute("columnalign",i.trim()),/[sd]/.test(s)&&r.setAttribute("columnlines",s.trim())}if("align"===t.colSeparationType){for(var u=t.cols||[],p="",d=1;d<u.length;d++)p+=d%2?"0em ":"1em ";r.setAttribute("columnspacing",p.trim())}else"alignat"===t.colSeparationType?r.setAttribute("columnspacing","0em"):"small"===t.colSeparationType?r.setAttribute("columnspacing","0.2778em"):r.setAttribute("columnspacing","1em");var f="",g=t.hLinesBeforeRow;n+=g[0].length>0?"left ":"",n+=g[g.length-1].length>0?"right ":"";for(var x=1;x<g.length-1;x++)f+=0===g[x].length?"none ":g[x][0]?"dashed ":"solid ";return/[sd]/.test(f)&&r.setAttribute("rowlines",f.trim()),""!==n&&(r=new ve.MathNode("menclose",[r])).setAttribute("notation",n.trim()),t.arraystretch&&t.arraystretch<1&&(r=new ve.MathNode("mstyle",[r])).setAttribute("scriptlevel","1"),r},Sr=function(t,e){var r,a=[],n=vr(t.parser,{cols:a,addJot:!0},"display"),i=0,s={type:"ordgroup",mode:t.mode,body:[]},h=Vt(e[0],"ordgroup");if(h){for(var l="",m=0;m<h.body.length;m++){l+=Ft(h.body[m],"textord").text}r=Number(l),i=2*r}var c=!i;n.body.forEach(function(t){for(var e=1;e<t.length;e+=2){var a=Ft(t[e],"styling");Ft(a.body[0],"ordgroup").body.unshift(s)}if(c)i<t.length&&(i=t.length);else{var n=t.length/2;if(r<n)throw new o("Too many math in a row: expected "+r+", but got "+n,t[0])}});for(var u=0;u<i;++u){var p="r",d=0;u%2==1?p="l":u>0&&c&&(d=1),a[u]={type:"align",align:p,pregap:d,postgap:0}}return n.colSeparationType=c?"align":"alignat",n};gr({type:"array",names:["array","darray"],props:{numArgs:1},handler:function(t,e){var r={cols:(Yt(e[0])?[e[0]]:Ft(e[0],"ordgroup").body).map(function(t){var e=Gt(t).text;if(-1!=="lcr".indexOf(e))return{type:"align",align:e};if("|"===e)return{type:"separator",separator:"|"};if(":"===e)return{type:"separator",separator:":"};throw new o("Unknown column alignment: "+e,t)}),hskipBeforeAndAfter:!0};return vr(t.parser,r,br(t.envName))},htmlBuilder:yr,mathmlBuilder:kr}),gr({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix"],props:{numArgs:0},handler:function(t){var e={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[t.envName],r=vr(t.parser,{hskipBeforeAndAfter:!1},br(t.envName));return e?{type:"leftright",mode:t.mode,body:[r],left:e[0],right:e[1],rightColor:void 0}:r},htmlBuilder:yr,mathmlBuilder:kr}),gr({type:"array",names:["smallmatrix"],props:{numArgs:0},handler:function(t){var e=vr(t.parser,{arraystretch:.5},"script");return e.colSeparationType="small",e},htmlBuilder:yr,mathmlBuilder:kr}),gr({type:"array",names:["subarray"],props:{numArgs:1},handler:function(t,e){var r=(Yt(e[0])?[e[0]]:Ft(e[0],"ordgroup").body).map(function(t){var e=Gt(t).text;if(-1!=="lc".indexOf(e))return{type:"align",align:e};throw new o("Unknown column alignment: "+e,t)});if(r.length>1)throw new o("{subarray} can contain only one column");var a={cols:r,hskipBeforeAndAfter:!1,arraystretch:.5};if((a=vr(t.parser,a,"script")).body[0].length>1)throw new o("{subarray} can contain only one column");return a},htmlBuilder:yr,mathmlBuilder:kr}),gr({type:"array",names:["cases","dcases"],props:{numArgs:0},handler:function(t){var e=vr(t.parser,{arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]},br(t.envName));return{type:"leftright",mode:t.mode,body:[e],left:"\\{",right:".",rightColor:void 0}},htmlBuilder:yr,mathmlBuilder:kr}),gr({type:"array",names:["aligned"],props:{numArgs:0},handler:Sr,htmlBuilder:yr,mathmlBuilder:kr}),gr({type:"array",names:["gathered"],props:{numArgs:0},handler:function(t){return vr(t.parser,{cols:[{type:"align",align:"c"}],addJot:!0},"display")},htmlBuilder:yr,mathmlBuilder:kr}),gr({type:"array",names:["alignedat"],props:{numArgs:1},handler:Sr,htmlBuilder:yr,mathmlBuilder:kr}),Qt({type:"text",names:["\\hline","\\hdashline"],props:{numArgs:0,allowedInText:!0,allowedInMath:!0},handler:function(t,e){throw new o(t.funcName+" valid only within array environment")}});var Mr=fr;Qt({type:"environment",names:["\\begin","\\end"],props:{numArgs:1,argTypes:["text"]},handler:function(t,e){var r=t.parser,a=t.funcName,n=e[0];if("ordgroup"!==n.type)throw new o("Invalid environment name",n);for(var i="",s=0;s<n.body.length;++s)i+=Ft(n.body[s],"textord").text;if("\\begin"===a){if(!Mr.hasOwnProperty(i))throw new o("No such environment: "+i,n);var h=Mr[i],l=r.parseArguments("\\begin{"+i+"}",h),m=l.args,c=l.optArgs,u={mode:r.mode,envName:i,parser:r},p=h.handler(u,m,c);r.expect("\\end",!1);var d=r.nextToken,f=Ft(r.parseFunction(),"environment");if(f.name!==i)throw new o("Mismatch: \\begin{"+i+"} matched by \\end{"+f.name+"}",d);return p}return{type:"environment",mode:r.mode,name:i,nameGroup:n}}});var zr=Dt.makeSpan;function Ar(t,e){var r=se(t.body,e,!0);return zr([t.mclass],r,e)}function Tr(t,e){var r,a=ke(t.body,e);return"minner"===t.mclass?ve.newDocumentFragment(a):("mord"===t.mclass?t.isCharacterBox?(r=a[0]).type="mi":r=new ve.MathNode("mi",a):(t.isCharacterBox?(r=a[0]).type="mo":r=new ve.MathNode("mo",a),"mbin"===t.mclass?(r.attributes.lspace="0.22em",r.attributes.rspace="0.22em"):"mpunct"===t.mclass?(r.attributes.lspace="0em",r.attributes.rspace="0.17em"):"mopen"!==t.mclass&&"mclose"!==t.mclass||(r.attributes.lspace="0em",r.attributes.rspace="0em")),r)}Qt({type:"mclass",names:["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],props:{numArgs:1},handler:function(t,e){var r=t.parser,a=t.funcName,n=e[0];return{type:"mclass",mode:r.mode,mclass:"m"+a.substr(5),body:ee(n),isCharacterBox:c.isCharacterBox(n)}},htmlBuilder:Ar,mathmlBuilder:Tr});var Br=function(t){var e="ordgroup"===t.type&&t.body.length?t.body[0]:t;return"atom"!==e.type||"bin"!==e.family&&"rel"!==e.family?"mord":"m"+e.family};Qt({type:"mclass",names:["\\@binrel"],props:{numArgs:2},handler:function(t,e){return{type:"mclass",mode:t.parser.mode,mclass:Br(e[0]),body:[e[1]],isCharacterBox:c.isCharacterBox(e[1])}}}),Qt({type:"mclass",names:["\\stackrel","\\overset","\\underset"],props:{numArgs:2},handler:function(t,e){var r,a=t.parser,n=t.funcName,i=e[1],o=e[0];r="\\stackrel"!==n?Br(i):"mrel";var s={type:"op",mode:i.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,suppressBaseShift:"\\stackrel"!==n,body:ee(i)},h={type:"supsub",mode:o.mode,base:s,sup:"\\underset"===n?null:o,sub:"\\underset"===n?o:null};return{type:"mclass",mode:a.mode,mclass:r,body:[h],isCharacterBox:c.isCharacterBox(h)}},htmlBuilder:Ar,mathmlBuilder:Tr});var Cr=function(t,e){var r=t.font,a=e.withFont(r);return ue(t.body,a)},qr=function(t,e){var r=t.font,a=e.withFont(r);return Me(t.body,a)},Nr={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak","\\bm":"\\boldsymbol"};Qt({type:"font",names:["\\mathrm","\\mathit","\\mathbf","\\mathnormal","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],props:{numArgs:1,greediness:2},handler:function(t,e){var r=t.parser,a=t.funcName,n=e[0],i=a;return i in Nr&&(i=Nr[i]),{type:"font",mode:r.mode,font:i.slice(1),body:n}},htmlBuilder:Cr,mathmlBuilder:qr}),Qt({type:"mclass",names:["\\boldsymbol","\\bm"],props:{numArgs:1,greediness:2},handler:function(t,e){var r=t.parser,a=e[0],n=c.isCharacterBox(a);return{type:"mclass",mode:r.mode,mclass:Br(a),body:[{type:"font",mode:r.mode,font:"boldsymbol",body:a}],isCharacterBox:n}}}),Qt({type:"font",names:["\\rm","\\sf","\\tt","\\bf","\\it"],props:{numArgs:0,allowedInText:!0},handler:function(t,e){var r=t.parser,a=t.funcName,n=t.breakOnTokenText,i=r.mode,o=r.parseExpression(!0,n);return{type:"font",mode:i,font:"math"+a.slice(1),body:{type:"ordgroup",mode:r.mode,body:o}}},htmlBuilder:Cr,mathmlBuilder:qr});var Ir=function(t,e){var r=e;return"display"===t?r=r.id>=w.SCRIPT.id?r.text():w.DISPLAY:"text"===t&&r.size===w.DISPLAY.size?r=w.TEXT:"script"===t?r=w.SCRIPT:"scriptscript"===t&&(r=w.SCRIPTSCRIPT),r},Rr=function(t,e){var r,a=Ir(t.size,e.style),n=a.fracNum(),i=a.fracDen();r=e.havingStyle(n);var o=ue(t.numer,r,e);if(t.continued){var s=8.5/e.fontMetrics().ptPerEm,h=3.5/e.fontMetrics().ptPerEm;o.height=o.height<s?s:o.height,o.depth=o.depth<h?h:o.depth}r=e.havingStyle(i);var l,m,c,u,p,d,f,g,x,v,b=ue(t.denom,r,e);if(t.hasBarLine?(t.barSize?(m=Tt(t.barSize,e),l=Dt.makeLineSpan("frac-line",e,m)):l=Dt.makeLineSpan("frac-line",e),m=l.height,c=l.height):(l=null,m=0,c=e.fontMetrics().defaultRuleThickness),a.size===w.DISPLAY.size||"display"===t.size?(u=e.fontMetrics().num1,p=m>0?3*c:7*c,d=e.fontMetrics().denom1):(m>0?(u=e.fontMetrics().num2,p=c):(u=e.fontMetrics().num3,p=3*c),d=e.fontMetrics().denom2),l){var y=e.fontMetrics().axisHeight;u-o.depth-(y+.5*m)<p&&(u+=p-(u-o.depth-(y+.5*m))),y-.5*m-(b.height-d)<p&&(d+=p-(y-.5*m-(b.height-d)));var k=-(y-.5*m);f=Dt.makeVList({positionType:"individualShift",children:[{type:"elem",elem:b,shift:d},{type:"elem",elem:l,shift:k},{type:"elem",elem:o,shift:-u}]},e)}else{var S=u-o.depth-(b.height-d);S<p&&(u+=.5*(p-S),d+=.5*(p-S)),f=Dt.makeVList({positionType:"individualShift",children:[{type:"elem",elem:b,shift:d},{type:"elem",elem:o,shift:-u}]},e)}return r=e.havingStyle(a),f.height*=r.sizeMultiplier/e.sizeMultiplier,f.depth*=r.sizeMultiplier/e.sizeMultiplier,g=a.size===w.DISPLAY.size?e.fontMetrics().delim1:e.fontMetrics().delim2,x=null==t.leftDelim?ce(e,["mopen"]):sr(t.leftDelim,g,!0,e.havingStyle(a),t.mode,["mopen"]),v=t.continued?Dt.makeSpan([]):null==t.rightDelim?ce(e,["mclose"]):sr(t.rightDelim,g,!0,e.havingStyle(a),t.mode,["mclose"]),Dt.makeSpan(["mord"].concat(r.sizingClasses(e)),[x,Dt.makeSpan(["mfrac"],[f]),v],e)},Or=function(t,e){var r=new ve.MathNode("mfrac",[Me(t.numer,e),Me(t.denom,e)]);if(t.hasBarLine){if(t.barSize){var a=Tt(t.barSize,e);r.setAttribute("linethickness",a+"em")}}else r.setAttribute("linethickness","0px");var n=Ir(t.size,e.style);if(n.size!==e.style.size){r=new ve.MathNode("mstyle",[r]);var i=n.size===w.DISPLAY.size?"true":"false";r.setAttribute("displaystyle",i),r.setAttribute("scriptlevel","0")}if(null!=t.leftDelim||null!=t.rightDelim){var o=[];if(null!=t.leftDelim){var s=new ve.MathNode("mo",[new ve.TextNode(t.leftDelim.replace("\\",""))]);s.setAttribute("fence","true"),o.push(s)}if(o.push(r),null!=t.rightDelim){var h=new ve.MathNode("mo",[new ve.TextNode(t.rightDelim.replace("\\",""))]);h.setAttribute("fence","true"),o.push(h)}return ye(o)}return r};Qt({type:"genfrac",names:["\\cfrac","\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac","\\\\bracefrac","\\\\brackfrac"],props:{numArgs:2,greediness:2},handler:function(t,e){var r,a=t.parser,n=t.funcName,i=e[0],o=e[1],s=null,h=null,l="auto";switch(n){case"\\cfrac":case"\\dfrac":case"\\frac":case"\\tfrac":r=!0;break;case"\\\\atopfrac":r=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":r=!1,s="(",h=")";break;case"\\\\bracefrac":r=!1,s="\\{",h="\\}";break;case"\\\\brackfrac":r=!1,s="[",h="]";break;default:throw new Error("Unrecognized genfrac command")}switch(n){case"\\cfrac":case"\\dfrac":case"\\dbinom":l="display";break;case"\\tfrac":case"\\tbinom":l="text"}return{type:"genfrac",mode:a.mode,continued:"\\cfrac"===n,numer:i,denom:o,hasBarLine:r,leftDelim:s,rightDelim:h,size:l,barSize:null}},htmlBuilder:Rr,mathmlBuilder:Or}),Qt({type:"infix",names:["\\over","\\choose","\\atop","\\brace","\\brack"],props:{numArgs:0,infix:!0},handler:function(t){var e,r=t.parser,a=t.funcName,n=t.token;switch(a){case"\\over":e="\\frac";break;case"\\choose":e="\\binom";break;case"\\atop":e="\\\\atopfrac";break;case"\\brace":e="\\\\bracefrac";break;case"\\brack":e="\\\\brackfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",mode:r.mode,replaceWith:e,token:n}}});var Er=["display","text","script","scriptscript"],Lr=function(t){var e=null;return t.length>0&&(e="."===(e=t)?null:e),e};Qt({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,greediness:6,argTypes:["math","math","size","text","math","math"]},handler:function(t,e){var r=t.parser,a=e[4],n=e[5],i=Vt(e[0],"atom");i&&(i=Ut(e[0],"open"));var o=i?Lr(i.text):null,s=Vt(e[1],"atom");s&&(s=Ut(e[1],"close"));var h,l=s?Lr(s.text):null,m=Ft(e[2],"size"),c=null;h=!!m.isBlank||(c=m.value).number>0;var u="auto",p=Vt(e[3],"ordgroup");if(p){if(p.body.length>0){var d=Ft(p.body[0],"textord");u=Er[Number(d.text)]}}else p=Ft(e[3],"textord"),u=Er[Number(p.text)];return{type:"genfrac",mode:r.mode,numer:a,denom:n,continued:!1,hasBarLine:h,barSize:c,leftDelim:o,rightDelim:l,size:u}},htmlBuilder:Rr,mathmlBuilder:Or}),Qt({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler:function(t,e){var r=t.parser,a=(t.funcName,t.token);return{type:"infix",mode:r.mode,replaceWith:"\\\\abovefrac",size:Ft(e[0],"size").value,token:a}}}),Qt({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:function(t,e){var r=t.parser,a=(t.funcName,e[0]),n=function(t){if(!t)throw new Error("Expected non-null, but got "+String(t));return t}(Ft(e[1],"infix").size),i=e[2],o=n.number>0;return{type:"genfrac",mode:r.mode,numer:a,denom:i,continued:!1,hasBarLine:o,barSize:n,leftDelim:null,rightDelim:null,size:"auto"}},htmlBuilder:Rr,mathmlBuilder:Or});var Hr=function(t,e){var r,a,n=e.style,i=Vt(t,"supsub");i?(r=i.sup?ue(i.sup,e.havingStyle(n.sup()),e):ue(i.sub,e.havingStyle(n.sub()),e),a=Ft(i.base,"horizBrace")):a=Ft(t,"horizBrace");var o,s=ue(a.base,e.havingBaseStyle(w.DISPLAY)),h=Oe(a,e);if(a.isOver?(o=Dt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:s},{type:"kern",size:.1},{type:"elem",elem:h}]},e)).children[0].children[0].children[1].classes.push("svg-align"):(o=Dt.makeVList({positionType:"bottom",positionData:s.depth+.1+h.height,children:[{type:"elem",elem:h},{type:"kern",size:.1},{type:"elem",elem:s}]},e)).children[0].children[0].children[0].classes.push("svg-align"),r){var l=Dt.makeSpan(["mord",a.isOver?"mover":"munder"],[o],e);o=a.isOver?Dt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:l},{type:"kern",size:.2},{type:"elem",elem:r}]},e):Dt.makeVList({positionType:"bottom",positionData:l.depth+.2+r.height+r.depth,children:[{type:"elem",elem:r},{type:"kern",size:.2},{type:"elem",elem:l}]},e)}return Dt.makeSpan(["mord",a.isOver?"mover":"munder"],[o],e)};Qt({type:"horizBrace",names:["\\overbrace","\\underbrace"],props:{numArgs:1},handler:function(t,e){var r=t.parser,a=t.funcName;return{type:"horizBrace",mode:r.mode,label:a,isOver:/^\\over/.test(a),base:e[0]}},htmlBuilder:Hr,mathmlBuilder:function(t,e){var r=Re(t.label);return new ve.MathNode(t.isOver?"mover":"munder",[Me(t.base,e),r])}}),Qt({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:function(t,e){var r=t.parser,a=e[1],n=Ft(e[0],"url").url;return r.settings.isTrusted({command:"\\href",url:n})?{type:"href",mode:r.mode,href:n,body:ee(a)}:r.formatUnsupportedCmd("\\href")},htmlBuilder:function(t,e){var r=se(t.body,e,!1);return Dt.makeAnchor(t.href,[],r,e)},mathmlBuilder:function(t,e){var r=Se(t.body,e);return r instanceof ge||(r=new ge("mrow",[r])),r.setAttribute("href",t.href),r}}),Qt({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:function(t,e){var r=t.parser,a=Ft(e[0],"url").url;if(!r.settings.isTrusted({command:"\\url",url:a}))return r.formatUnsupportedCmd("\\url");for(var n=[],i=0;i<a.length;i++){var o=a[i];"~"===o&&(o="\\textasciitilde"),n.push({type:"textord",mode:"text",text:o})}var s={type:"text",mode:r.mode,font:"\\texttt",body:n};return{type:"href",mode:r.mode,href:a,body:ee(s)}}}),Qt({type:"htmlmathml",names:["\\html@mathml"],props:{numArgs:2,allowedInText:!0},handler:function(t,e){return{type:"htmlmathml",mode:t.parser.mode,html:ee(e[0]),mathml:ee(e[1])}},htmlBuilder:function(t,e){var r=se(t.html,e,!1);return Dt.makeFragment(r)},mathmlBuilder:function(t,e){return Se(t.mathml,e)}});var Pr=function(t){if(/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(t))return{number:+t,unit:"bp"};var e=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(t);if(!e)throw new o("Invalid size: '"+t+"' in \\includegraphics");var r={number:+(e[1]+e[2]),unit:e[3]};if(!At(r))throw new o("Invalid unit: '"+r.unit+"' in \\includegraphics.");return r};Qt({type:"includegraphics",names:["\\includegraphics"],props:{numArgs:1,numOptionalArgs:1,argTypes:["raw","url"],allowedInText:!1},handler:function(t,e,r){var a=t.parser,n={number:0,unit:"em"},i={number:.9,unit:"em"},s={number:0,unit:"em"},h="";if(r[0])for(var l=Ft(r[0],"raw").string.split(","),m=0;m<l.length;m++){var c=l[m].split("=");if(2===c.length){var u=c[1].trim();switch(c[0].trim()){case"alt":h=u;break;case"width":n=Pr(u);break;case"height":i=Pr(u);break;case"totalheight":s=Pr(u);break;default:throw new o("Invalid key: '"+c[0]+"' in \\includegraphics.")}}}var p=Ft(e[0],"url").url;return""===h&&(h=(h=(h=p).replace(/^.*[\\\/]/,"")).substring(0,h.lastIndexOf("."))),a.settings.isTrusted({command:"\\includegraphics",url:p})?{type:"includegraphics",mode:a.mode,alt:h,width:n,height:i,totalheight:s,src:p}:a.formatUnsupportedCmd("\\includegraphics")},htmlBuilder:function(t,e){var r=Tt(t.height,e),a=0;t.totalheight.number>0&&(a=Tt(t.totalheight,e)-r,a=Number(a.toFixed(2)));var n=0;t.width.number>0&&(n=Tt(t.width,e));var i={height:r+a+"em"};n>0&&(i.width=n+"em"),a>0&&(i.verticalAlign=-a+"em");var o=new R(t.src,t.alt,i);return o.height=r,o.depth=a,o},mathmlBuilder:function(t,e){var r=new ve.MathNode("mglyph",[]);r.setAttribute("alt",t.alt);var a=Tt(t.height,e),n=0;if(t.totalheight.number>0&&(n=(n=Tt(t.totalheight,e)-a).toFixed(2),r.setAttribute("valign","-"+n+"em")),r.setAttribute("height",a+n+"em"),t.width.number>0){var i=Tt(t.width,e);r.setAttribute("width",i+"em")}return r.setAttribute("src",t.src),r}}),Qt({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],allowedInText:!0},handler:function(t,e){var r=t.parser,a=t.funcName,n=Ft(e[0],"size");if(r.settings.strict){var i="m"===a[1],o="mu"===n.value.unit;i?(o||r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+a+" supports only mu units, not "+n.value.unit+" units"),"math"!==r.mode&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+a+" works only in math mode")):o&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+a+" doesn't support mu units")}return{type:"kern",mode:r.mode,dimension:n.value}},htmlBuilder:function(t,e){return Dt.makeGlue(t.dimension,e)},mathmlBuilder:function(t,e){var r=Tt(t.dimension,e);return new ve.SpaceNode(r)}}),Qt({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:!0},handler:function(t,e){var r=t.parser,a=t.funcName,n=e[0];return{type:"lap",mode:r.mode,alignment:a.slice(5),body:n}},htmlBuilder:function(t,e){var r;"clap"===t.alignment?(r=Dt.makeSpan([],[ue(t.body,e)]),r=Dt.makeSpan(["inner"],[r],e)):r=Dt.makeSpan(["inner"],[ue(t.body,e)]);var a=Dt.makeSpan(["fix"],[]),n=Dt.makeSpan([t.alignment],[r,a],e),i=Dt.makeSpan(["strut"]);return i.style.height=n.height+n.depth+"em",i.style.verticalAlign=-n.depth+"em",n.children.unshift(i),n=Dt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:n}]},e),Dt.makeSpan(["mord"],[n],e)},mathmlBuilder:function(t,e){var r=new ve.MathNode("mpadded",[Me(t.body,e)]);if("rlap"!==t.alignment){var a="llap"===t.alignment?"-1":"-0.5";r.setAttribute("lspace",a+"width")}return r.setAttribute("width","0px"),r}}),Qt({type:"styling",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler:function(t,e){var r=t.funcName,a=t.parser,n=a.mode;a.switchMode("math");var i="\\("===r?"\\)":"$",o=a.parseExpression(!1,i);return a.expect(i),a.switchMode(n),{type:"styling",mode:a.mode,style:"text",body:o}}}),Qt({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler:function(t,e){throw new o("Mismatched "+t.funcName)}});var Dr=function(t,e){switch(e.style.size){case w.DISPLAY.size:return t.display;case w.TEXT.size:return t.text;case w.SCRIPT.size:return t.script;case w.SCRIPTSCRIPT.size:return t.scriptscript;default:return t.text}};Qt({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4},handler:function(t,e){return{type:"mathchoice",mode:t.parser.mode,display:ee(e[0]),text:ee(e[1]),script:ee(e[2]),scriptscript:ee(e[3])}},htmlBuilder:function(t,e){var r=Dr(t,e),a=se(r,e,!1);return Dt.makeFragment(a)},mathmlBuilder:function(t,e){var r=Dr(t,e);return Se(r,e)}});var Fr=function(t,e,r,a,n,i,o){var s,h,l;if(t=Dt.makeSpan([],[t]),e){var m=ue(e,a.havingStyle(n.sup()),a);h={elem:m,kern:Math.max(a.fontMetrics().bigOpSpacing1,a.fontMetrics().bigOpSpacing3-m.depth)}}if(r){var c=ue(r,a.havingStyle(n.sub()),a);s={elem:c,kern:Math.max(a.fontMetrics().bigOpSpacing2,a.fontMetrics().bigOpSpacing4-c.height)}}if(h&&s){var u=a.fontMetrics().bigOpSpacing5+s.elem.height+s.elem.depth+s.kern+t.depth+o;l=Dt.makeVList({positionType:"bottom",positionData:u,children:[{type:"kern",size:a.fontMetrics().bigOpSpacing5},{type:"elem",elem:s.elem,marginLeft:-i+"em"},{type:"kern",size:s.kern},{type:"elem",elem:t},{type:"kern",size:h.kern},{type:"elem",elem:h.elem,marginLeft:i+"em"},{type:"kern",size:a.fontMetrics().bigOpSpacing5}]},a)}else if(s){var p=t.height-o;l=Dt.makeVList({positionType:"top",positionData:p,children:[{type:"kern",size:a.fontMetrics().bigOpSpacing5},{type:"elem",elem:s.elem,marginLeft:-i+"em"},{type:"kern",size:s.kern},{type:"elem",elem:t}]},a)}else{if(!h)return t;var d=t.depth+o;l=Dt.makeVList({positionType:"bottom",positionData:d,children:[{type:"elem",elem:t},{type:"kern",size:h.kern},{type:"elem",elem:h.elem,marginLeft:i+"em"},{type:"kern",size:a.fontMetrics().bigOpSpacing5}]},a)}return Dt.makeSpan(["mop","op-limits"],[l],a)},Vr=["\\smallint"],Ur=function(t,e){var r,a,n,i=!1,o=Vt(t,"supsub");o?(r=o.sup,a=o.sub,n=Ft(o.base,"op"),i=!0):n=Ft(t,"op");var s,h=e.style,l=!1;if(h.size===w.DISPLAY.size&&n.symbol&&!c.contains(Vr,n.name)&&(l=!0),n.symbol){var m=l?"Size2-Regular":"Size1-Regular",u="";if("\\oiint"!==n.name&&"\\oiiint"!==n.name||(u=n.name.substr(1),n.name="oiint"===u?"\\iint":"\\iiint"),s=Dt.makeSymbol(n.name,m,"math",e,["mop","op-symbol",l?"large-op":"small-op"]),u.length>0){var p=s.italic,d=Dt.staticSvg(u+"Size"+(l?"2":"1"),e);s=Dt.makeVList({positionType:"individualShift",children:[{type:"elem",elem:s,shift:0},{type:"elem",elem:d,shift:l?.08:0}]},e),n.name="\\"+u,s.classes.unshift("mop"),s.italic=p}}else if(n.body){var f=se(n.body,e,!0);1===f.length&&f[0]instanceof E?(s=f[0]).classes[0]="mop":s=Dt.makeSpan(["mop"],Dt.tryCombineChars(f),e)}else{for(var g=[],x=1;x<n.name.length;x++)g.push(Dt.mathsym(n.name[x],n.mode,e));s=Dt.makeSpan(["mop"],g,e)}var v=0,b=0;return(s instanceof E||"\\oiint"===n.name||"\\oiiint"===n.name)&&!n.suppressBaseShift&&(v=(s.height-s.depth)/2-e.fontMetrics().axisHeight,b=s.italic),i?Fr(s,r,a,e,h,b,v):(v&&(s.style.position="relative",s.style.top=v+"em"),s)},Gr=function(t,e){var r;if(t.symbol)r=new ge("mo",[be(t.name,t.mode)]),c.contains(Vr,t.name)&&r.setAttribute("largeop","false");else if(t.body)r=new ge("mo",ke(t.body,e));else{r=new ge("mi",[new xe(t.name.slice(1))]);var a=new ge("mo",[be("\u2061","text")]);r=t.parentIsSupSub?new ge("mo",[r,a]):fe([r,a])}return r},Yr={"\u220f":"\\prod","\u2210":"\\coprod","\u2211":"\\sum","\u22c0":"\\bigwedge","\u22c1":"\\bigvee","\u22c2":"\\bigcap","\u22c3":"\\bigcup","\u2a00":"\\bigodot","\u2a01":"\\bigoplus","\u2a02":"\\bigotimes","\u2a04":"\\biguplus","\u2a06":"\\bigsqcup"};Qt({type:"op",names:["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint","\u220f","\u2210","\u2211","\u22c0","\u22c1","\u22c2","\u22c3","\u2a00","\u2a01","\u2a02","\u2a04","\u2a06"],props:{numArgs:0},handler:function(t,e){var r=t.parser,a=t.funcName;return 1===a.length&&(a=Yr[a]),{type:"op",mode:r.mode,limits:!0,parentIsSupSub:!1,symbol:!0,name:a}},htmlBuilder:Ur,mathmlBuilder:Gr}),Qt({type:"op",names:["\\mathop"],props:{numArgs:1},handler:function(t,e){var r=t.parser,a=e[0];return{type:"op",mode:r.mode,limits:!1,parentIsSupSub:!1,symbol:!1,body:ee(a)}},htmlBuilder:Ur,mathmlBuilder:Gr});var Wr={"\u222b":"\\int","\u222c":"\\iint","\u222d":"\\iiint","\u222e":"\\oint","\u222f":"\\oiint","\u2230":"\\oiiint"};Qt({type:"op",names:["\\arcsin","\\arccos","\\arctan","\\arctg","\\arcctg","\\arg","\\ch","\\cos","\\cosec","\\cosh","\\cot","\\cotg","\\coth","\\csc","\\ctg","\\cth","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\sh","\\tan","\\tanh","\\tg","\\th"],props:{numArgs:0},handler:function(t){var e=t.parser,r=t.funcName;return{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:Ur,mathmlBuilder:Gr}),Qt({type:"op",names:["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],props:{numArgs:0},handler:function(t){var e=t.parser,r=t.funcName;return{type:"op",mode:e.mode,limits:!0,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:Ur,mathmlBuilder:Gr}),Qt({type:"op",names:["\\int","\\iint","\\iiint","\\oint","\\oiint","\\oiiint","\u222b","\u222c","\u222d","\u222e","\u222f","\u2230"],props:{numArgs:0},handler:function(t){var e=t.parser,r=t.funcName;return 1===r.length&&(r=Wr[r]),{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!0,name:r}},htmlBuilder:Ur,mathmlBuilder:Gr});var Xr=function(t,e){var r,a,n,i,o=!1,s=Vt(t,"supsub");if(s?(r=s.sup,a=s.sub,n=Ft(s.base,"operatorname"),o=!0):n=Ft(t,"operatorname"),n.body.length>0){for(var h=n.body.map(function(t){var e=t.text;return"string"==typeof e?{type:"textord",mode:t.mode,text:e}:t}),l=se(h,e.withFont("mathrm"),!0),m=0;m<l.length;m++){var c=l[m];c instanceof E&&(c.text=c.text.replace(/\u2212/,"-").replace(/\u2217/,"*"))}i=Dt.makeSpan(["mop"],l,e)}else i=Dt.makeSpan(["mop"],[],e);return o?Fr(i,r,a,e,e.style,0,0):i};function _r(t,e,r){for(var a=se(t,e,!1),n=e.sizeMultiplier/r.sizeMultiplier,i=0;i<a.length;i++){var o=a[i].classes.indexOf("sizing");o<0?Array.prototype.push.apply(a[i].classes,e.sizingClasses(r)):a[i].classes[o+1]==="reset-size"+e.size&&(a[i].classes[o+1]="reset-size"+r.size),a[i].height*=n,a[i].depth*=n}return Dt.makeFragment(a)}Qt({type:"operatorname",names:["\\operatorname","\\operatorname*"],props:{numArgs:1},handler:function(t,e){var r=t.parser,a=t.funcName,n=e[0];return{type:"operatorname",mode:r.mode,body:ee(n),alwaysHandleSupSub:"\\operatorname*"===a,limits:!1,parentIsSupSub:!1}},htmlBuilder:Xr,mathmlBuilder:function(t,e){for(var r=ke(t.body,e.withFont("mathrm")),a=!0,n=0;n<r.length;n++){var i=r[n];if(i instanceof ve.SpaceNode);else if(i instanceof ve.MathNode)switch(i.type){case"mi":case"mn":case"ms":case"mspace":case"mtext":break;case"mo":var o=i.children[0];1===i.children.length&&o instanceof ve.TextNode?o.text=o.text.replace(/\u2212/,"-").replace(/\u2217/,"*"):a=!1;break;default:a=!1}else a=!1}if(a){var s=r.map(function(t){return t.toText()}).join("");r=[new ve.TextNode(s)]}var h=new ve.MathNode("mi",r);h.setAttribute("mathvariant","normal");var l=new ve.MathNode("mo",[be("\u2061","text")]);return t.parentIsSupSub?new ve.MathNode("mo",[h,l]):ve.newDocumentFragment([h,l])}}),te({type:"ordgroup",htmlBuilder:function(t,e){return t.semisimple?Dt.makeFragment(se(t.body,e,!1)):Dt.makeSpan(["mord"],se(t.body,e,!0),e)},mathmlBuilder:function(t,e){return Se(t.body,e,!0)}}),Qt({type:"overline",names:["\\overline"],props:{numArgs:1},handler:function(t,e){var r=t.parser,a=e[0];return{type:"overline",mode:r.mode,body:a}},htmlBuilder:function(t,e){var r=ue(t.body,e.havingCrampedStyle()),a=Dt.makeLineSpan("overline-line",e),n=e.fontMetrics().defaultRuleThickness,i=Dt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r},{type:"kern",size:3*n},{type:"elem",elem:a},{type:"kern",size:n}]},e);return Dt.makeSpan(["mord","overline"],[i],e)},mathmlBuilder:function(t,e){var r=new ve.MathNode("mo",[new ve.TextNode("\u203e")]);r.setAttribute("stretchy","true");var a=new ve.MathNode("mover",[Me(t.body,e),r]);return a.setAttribute("accent","true"),a}}),Qt({type:"phantom",names:["\\phantom"],props:{numArgs:1,allowedInText:!0},handler:function(t,e){var r=t.parser,a=e[0];return{type:"phantom",mode:r.mode,body:ee(a)}},htmlBuilder:function(t,e){var r=se(t.body,e.withPhantom(),!1);return Dt.makeFragment(r)},mathmlBuilder:function(t,e){var r=ke(t.body,e);return new ve.MathNode("mphantom",r)}}),Qt({type:"hphantom",names:["\\hphantom"],props:{numArgs:1,allowedInText:!0},handler:function(t,e){var r=t.parser,a=e[0];return{type:"hphantom",mode:r.mode,body:a}},htmlBuilder:function(t,e){var r=Dt.makeSpan([],[ue(t.body,e.withPhantom())]);if(r.height=0,r.depth=0,r.children)for(var a=0;a<r.children.length;a++)r.children[a].height=0,r.children[a].depth=0;return r=Dt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r}]},e),Dt.makeSpan(["mord"],[r],e)},mathmlBuilder:function(t,e){var r=ke(ee(t.body),e),a=new ve.MathNode("mphantom",r),n=new ve.MathNode("mpadded",[a]);return n.setAttribute("height","0px"),n.setAttribute("depth","0px"),n}}),Qt({type:"vphantom",names:["\\vphantom"],props:{numArgs:1,allowedInText:!0},handler:function(t,e){var r=t.parser,a=e[0];return{type:"vphantom",mode:r.mode,body:a}},htmlBuilder:function(t,e){var r=Dt.makeSpan(["inner"],[ue(t.body,e.withPhantom())]),a=Dt.makeSpan(["fix"],[]);return Dt.makeSpan(["mord","rlap"],[r,a],e)},mathmlBuilder:function(t,e){var r=ke(ee(t.body),e),a=new ve.MathNode("mphantom",r),n=new ve.MathNode("mpadded",[a]);return n.setAttribute("width","0px"),n}}),Qt({type:"raisebox",names:["\\raisebox"],props:{numArgs:2,argTypes:["size","hbox"],allowedInText:!0},handler:function(t,e){var r=t.parser,a=Ft(e[0],"size").value,n=e[1];return{type:"raisebox",mode:r.mode,dy:a,body:n}},htmlBuilder:function(t,e){var r=ue(t.body,e),a=Tt(t.dy,e);return Dt.makeVList({positionType:"shift",positionData:-a,children:[{type:"elem",elem:r}]},e)},mathmlBuilder:function(t,e){var r=new ve.MathNode("mpadded",[Me(t.body,e)]),a=t.dy.number+t.dy.unit;return r.setAttribute("voffset",a),r}}),Qt({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,argTypes:["size","size","size"]},handler:function(t,e,r){var a=t.parser,n=r[0],i=Ft(e[0],"size"),o=Ft(e[1],"size");return{type:"rule",mode:a.mode,shift:n&&Ft(n,"size").value,width:i.value,height:o.value}},htmlBuilder:function(t,e){var r=Dt.makeSpan(["mord","rule"],[],e),a=Tt(t.width,e),n=Tt(t.height,e),i=t.shift?Tt(t.shift,e):0;return r.style.borderRightWidth=a+"em",r.style.borderTopWidth=n+"em",r.style.bottom=i+"em",r.width=a,r.height=n+i,r.depth=-i,r.maxFontSize=1.125*n*e.sizeMultiplier,r},mathmlBuilder:function(t,e){var r=Tt(t.width,e),a=Tt(t.height,e),n=t.shift?Tt(t.shift,e):0,i=e.color&&e.getColor()||"black",o=new ve.MathNode("mspace");o.setAttribute("mathbackground",i),o.setAttribute("width",r+"em"),o.setAttribute("height",a+"em");var s=new ve.MathNode("mpadded",[o]);return n>=0?s.setAttribute("height","+"+n+"em"):(s.setAttribute("height",n+"em"),s.setAttribute("depth","+"+-n+"em")),s.setAttribute("voffset",n+"em"),s}});var jr=["\\tiny","\\sixptsize","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"];Qt({type:"sizing",names:jr,props:{numArgs:0,allowedInText:!0},handler:function(t,e){var r=t.breakOnTokenText,a=t.funcName,n=t.parser,i=n.parseExpression(!1,r);return{type:"sizing",mode:n.mode,size:jr.indexOf(a)+1,body:i}},htmlBuilder:function(t,e){var r=e.havingSize(t.size);return _r(t.body,r,e)},mathmlBuilder:function(t,e){var r=e.havingSize(t.size),a=ke(t.body,r),n=new ve.MathNode("mstyle",a);return n.setAttribute("mathsize",r.sizeMultiplier+"em"),n}}),Qt({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:function(t,e,r){var a=t.parser,n=!1,i=!1,o=r[0]&&Ft(r[0],"ordgroup");if(o)for(var s="",h=0;h<o.body.length;++h){if("t"===(s=o.body[h].text))n=!0;else{if("b"!==s){n=!1,i=!1;break}i=!0}}else n=!0,i=!0;var l=e[0];return{type:"smash",mode:a.mode,body:l,smashHeight:n,smashDepth:i}},htmlBuilder:function(t,e){var r=Dt.makeSpan([],[ue(t.body,e)]);if(!t.smashHeight&&!t.smashDepth)return r;if(t.smashHeight&&(r.height=0,r.children))for(var a=0;a<r.children.length;a++)r.children[a].height=0;if(t.smashDepth&&(r.depth=0,r.children))for(var n=0;n<r.children.length;n++)r.children[n].depth=0;var i=Dt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r}]},e);return Dt.makeSpan(["mord"],[i],e)},mathmlBuilder:function(t,e){var r=new ve.MathNode("mpadded",[Me(t.body,e)]);return t.smashHeight&&r.setAttribute("height","0px"),t.smashDepth&&r.setAttribute("depth","0px"),r}}),Qt({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler:function(t,e,r){var a=t.parser,n=r[0],i=e[0];return{type:"sqrt",mode:a.mode,body:i,index:n}},htmlBuilder:function(t,e){var r=ue(t.body,e.havingCrampedStyle());0===r.height&&(r.height=e.fontMetrics().xHeight),r=Dt.wrapFragment(r,e);var a=e.fontMetrics().defaultRuleThickness,n=a;e.style.id<w.TEXT.id&&(n=e.fontMetrics().xHeight);var i=a+n/4,o=r.height+r.depth+i+a,s=ir(o,e),h=s.span,l=s.ruleWidth,m=s.advanceWidth,c=h.height-l;c>r.height+r.depth+i&&(i=(i+c-r.height-r.depth)/2);var u=h.height-r.height-i-l;r.style.paddingLeft=m+"em";var p=Dt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:-(r.height+u)},{type:"elem",elem:h},{type:"kern",size:l}]},e);if(t.index){var d=e.havingStyle(w.SCRIPTSCRIPT),f=ue(t.index,d,e),g=.6*(p.height-p.depth),x=Dt.makeVList({positionType:"shift",positionData:-g,children:[{type:"elem",elem:f}]},e),v=Dt.makeSpan(["root"],[x]);return Dt.makeSpan(["mord","sqrt"],[v,p],e)}return Dt.makeSpan(["mord","sqrt"],[p],e)},mathmlBuilder:function(t,e){var r=t.body,a=t.index;return a?new ve.MathNode("mroot",[Me(r,e),Me(a,e)]):new ve.MathNode("msqrt",[Me(r,e)])}});var $r={display:w.DISPLAY,text:w.TEXT,script:w.SCRIPT,scriptscript:w.SCRIPTSCRIPT};Qt({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0},handler:function(t,e){var r=t.breakOnTokenText,a=t.funcName,n=t.parser,i=n.parseExpression(!0,r),o=a.slice(1,a.length-5);return{type:"styling",mode:n.mode,style:o,body:i}},htmlBuilder:function(t,e){var r=$r[t.style],a=e.havingStyle(r).withFont("");return _r(t.body,a,e)},mathmlBuilder:function(t,e){var r=$r[t.style],a=e.havingStyle(r),n=ke(t.body,a),i=new ve.MathNode("mstyle",n),o={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]}[t.style];return i.setAttribute("scriptlevel",o[0]),i.setAttribute("displaystyle",o[1]),i}});te({type:"supsub",htmlBuilder:function(t,e){var r=function(t,e){var r=t.base;return r?"op"===r.type?r.limits&&(e.style.size===w.DISPLAY.size||r.alwaysHandleSupSub)?Ur:null:"operatorname"===r.type?r.alwaysHandleSupSub&&(e.style.size===w.DISPLAY.size||r.limits)?Xr:null:"accent"===r.type?c.isCharacterBox(r.base)?Ee:null:"horizBrace"===r.type&&!t.sub===r.isOver?Hr:null:null}(t,e);if(r)return r(t,e);var a,n,i,o=t.base,s=t.sup,h=t.sub,l=ue(o,e),m=e.fontMetrics(),u=0,p=0,d=o&&c.isCharacterBox(o);if(s){var f=e.havingStyle(e.style.sup());a=ue(s,f,e),d||(u=l.height-f.fontMetrics().supDrop*f.sizeMultiplier/e.sizeMultiplier)}if(h){var g=e.havingStyle(e.style.sub());n=ue(h,g,e),d||(p=l.depth+g.fontMetrics().subDrop*g.sizeMultiplier/e.sizeMultiplier)}i=e.style===w.DISPLAY?m.sup1:e.style.cramped?m.sup3:m.sup2;var x,v=e.sizeMultiplier,b=.5/m.ptPerEm/v+"em",y=null;if(n){var k=t.base&&"op"===t.base.type&&t.base.name&&("\\oiint"===t.base.name||"\\oiiint"===t.base.name);(l instanceof E||k)&&(y=-l.italic+"em")}if(a&&n){u=Math.max(u,i,a.depth+.25*m.xHeight),p=Math.max(p,m.sub2);var S=4*m.defaultRuleThickness;if(u-a.depth-(n.height-p)<S){p=S-(u-a.depth)+n.height;var M=.8*m.xHeight-(u-a.depth);M>0&&(u+=M,p-=M)}var z=[{type:"elem",elem:n,shift:p,marginRight:b,marginLeft:y},{type:"elem",elem:a,shift:-u,marginRight:b}];x=Dt.makeVList({positionType:"individualShift",children:z},e)}else if(n){p=Math.max(p,m.sub1,n.height-.8*m.xHeight);var A=[{type:"elem",elem:n,marginLeft:y,marginRight:b}];x=Dt.makeVList({positionType:"shift",positionData:p,children:A},e)}else{if(!a)throw new Error("supsub must have either sup or sub.");u=Math.max(u,i,a.depth+.25*m.xHeight),x=Dt.makeVList({positionType:"shift",positionData:-u,children:[{type:"elem",elem:a,marginRight:b}]},e)}var T=me(l,"right")||"mord";return Dt.makeSpan([T],[l,Dt.makeSpan(["msupsub"],[x])],e)},mathmlBuilder:function(t,e){var r,a=!1,n=Vt(t.base,"horizBrace");n&&!!t.sup===n.isOver&&(a=!0,r=n.isOver),!t.base||"op"!==t.base.type&&"operatorname"!==t.base.type||(t.base.parentIsSupSub=!0);var i,o=[Me(t.base,e)];if(t.sub&&o.push(Me(t.sub,e)),t.sup&&o.push(Me(t.sup,e)),a)i=r?"mover":"munder";else if(t.sub)if(t.sup){var s=t.base;i=s&&"op"===s.type&&s.limits&&e.style===w.DISPLAY?"munderover":s&&"operatorname"===s.type&&s.alwaysHandleSupSub&&(e.style===w.DISPLAY||s.limits)?"munderover":"msubsup"}else{var h=t.base;i=h&&"op"===h.type&&h.limits&&(e.style===w.DISPLAY||h.alwaysHandleSupSub)?"munder":h&&"operatorname"===h.type&&h.alwaysHandleSupSub&&(h.limits||e.style===w.DISPLAY)?"munder":"msub"}else{var l=t.base;i=l&&"op"===l.type&&l.limits&&(e.style===w.DISPLAY||l.alwaysHandleSupSub)?"mover":l&&"operatorname"===l.type&&l.alwaysHandleSupSub&&(l.limits||e.style===w.DISPLAY)?"mover":"msup"}return new ve.MathNode(i,o)}}),te({type:"atom",htmlBuilder:function(t,e){return Dt.mathsym(t.text,t.mode,e,["m"+t.family])},mathmlBuilder:function(t,e){var r=new ve.MathNode("mo",[be(t.text,t.mode)]);if("bin"===t.family){var a=we(t,e);"bold-italic"===a&&r.setAttribute("mathvariant",a)}else"punct"===t.family?r.setAttribute("separator","true"):"open"!==t.family&&"close"!==t.family||r.setAttribute("stretchy","false");return r}});var Zr={mi:"italic",mn:"normal",mtext:"normal"};te({type:"mathord",htmlBuilder:function(t,e){return Dt.makeOrd(t,e,"mathord")},mathmlBuilder:function(t,e){var r=new ve.MathNode("mi",[be(t.text,t.mode,e)]),a=we(t,e)||"italic";return a!==Zr[r.type]&&r.setAttribute("mathvariant",a),r}}),te({type:"textord",htmlBuilder:function(t,e){return Dt.makeOrd(t,e,"textord")},mathmlBuilder:function(t,e){var r,a=be(t.text,t.mode,e),n=we(t,e)||"normal";return r="text"===t.mode?new ve.MathNode("mtext",[a]):/[0-9]/.test(t.text)?new ve.MathNode("mn",[a]):"\\prime"===t.text?new ve.MathNode("mo",[a]):new ve.MathNode("mi",[a]),n!==Zr[r.type]&&r.setAttribute("mathvariant",n),r}});var Kr={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},Jr={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};te({type:"spacing",htmlBuilder:function(t,e){if(Jr.hasOwnProperty(t.text)){var r=Jr[t.text].className||"";if("text"===t.mode){var a=Dt.makeOrd(t,e,"textord");return a.classes.push(r),a}return Dt.makeSpan(["mspace",r],[Dt.mathsym(t.text,t.mode,e)],e)}if(Kr.hasOwnProperty(t.text))return Dt.makeSpan(["mspace",Kr[t.text]],[],e);throw new o('Unknown type of space "'+t.text+'"')},mathmlBuilder:function(t,e){if(!Jr.hasOwnProperty(t.text)){if(Kr.hasOwnProperty(t.text))return new ve.MathNode("mspace");throw new o('Unknown type of space "'+t.text+'"')}return new ve.MathNode("mtext",[new ve.TextNode("\xa0")])}});var Qr=function(){var t=new ve.MathNode("mtd",[]);return t.setAttribute("width","50%"),t};te({type:"tag",mathmlBuilder:function(t,e){var r=new ve.MathNode("mtable",[new ve.MathNode("mtr",[Qr(),new ve.MathNode("mtd",[Se(t.body,e)]),Qr(),new ve.MathNode("mtd",[Se(t.tag,e)])])]);return r.setAttribute("width","100%"),r}});var ta={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},ea={"\\textbf":"textbf","\\textmd":"textmd"},ra={"\\textit":"textit","\\textup":"textup"},aa=function(t,e){var r=t.font;return r?ta[r]?e.withTextFontFamily(ta[r]):ea[r]?e.withTextFontWeight(ea[r]):e.withTextFontShape(ra[r]):e};Qt({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup"],props:{numArgs:1,argTypes:["text"],greediness:2,allowedInText:!0},handler:function(t,e){var r=t.parser,a=t.funcName,n=e[0];return{type:"text",mode:r.mode,body:ee(n),font:a}},htmlBuilder:function(t,e){var r=aa(t,e),a=se(t.body,r,!0);return Dt.makeSpan(["mord","text"],Dt.tryCombineChars(a),r)},mathmlBuilder:function(t,e){var r=aa(t,e);return Se(t.body,r)}}),Qt({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler:function(t,e){return{type:"underline",mode:t.parser.mode,body:e[0]}},htmlBuilder:function(t,e){var r=ue(t.body,e),a=Dt.makeLineSpan("underline-line",e),n=e.fontMetrics().defaultRuleThickness,i=Dt.makeVList({positionType:"top",positionData:r.height,children:[{type:"kern",size:n},{type:"elem",elem:a},{type:"kern",size:3*n},{type:"elem",elem:r}]},e);return Dt.makeSpan(["mord","underline"],[i],e)},mathmlBuilder:function(t,e){var r=new ve.MathNode("mo",[new ve.TextNode("\u203e")]);r.setAttribute("stretchy","true");var a=new ve.MathNode("munder",[Me(t.body,e),r]);return a.setAttribute("accentunder","true"),a}}),Qt({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler:function(t,e,r){throw new o("\\verb ended by end of line instead of matching delimiter")},htmlBuilder:function(t,e){for(var r=na(t),a=[],n=e.havingStyle(e.style.text()),i=0;i<r.length;i++){var o=r[i];"~"===o&&(o="\\textasciitilde"),a.push(Dt.makeSymbol(o,"Typewriter-Regular",t.mode,n,["mord","texttt"]))}return Dt.makeSpan(["mord","text"].concat(n.sizingClasses(e)),Dt.tryCombineChars(a),n)},mathmlBuilder:function(t,e){var r=new ve.TextNode(na(t)),a=new ve.MathNode("mtext",[r]);return a.setAttribute("mathvariant","monospace"),a}});var na=function(t){return t.body.replace(/ /g,t.star?"\u2423":"\xa0")},ia=Zt,oa=new RegExp("^(\\\\[a-zA-Z@]+)[ \r\n\t]*$"),sa=new RegExp("[\u0300-\u036f]+$"),ha="([ \r\n\t]+)|([!-\\[\\]-\u2027\u202a-\ud7ff\uf900-\uffff][\u0300-\u036f]*|[\ud800-\udbff][\udc00-\udfff][\u0300-\u036f]*|\\\\verb\\*([^]).*?\\3|\\\\verb([^*a-zA-Z]).*?\\4|\\\\operatorname\\*|\\\\[a-zA-Z@]+[ \r\n\t]*|\\\\[^\ud800-\udfff])",la=function(){function t(t,e){this.input=void 0,this.settings=void 0,this.tokenRegex=void 0,this.catcodes=void 0,this.input=t,this.settings=e,this.tokenRegex=new RegExp(ha,"g"),this.catcodes={"%":14}}var e=t.prototype;return e.setCatcode=function(t,e){this.catcodes[t]=e},e.lex=function(){var t=this.input,e=this.tokenRegex.lastIndex;if(e===t.length)return new n("EOF",new a(this,e,e));var r=this.tokenRegex.exec(t);if(null===r||r.index!==e)throw new o("Unexpected character: '"+t[e]+"'",new n(t[e],new a(this,e,e+1)));var i=r[2]||" ";if(14===this.catcodes[i]){var s=t.indexOf("\n",this.tokenRegex.lastIndex);return-1===s?(this.tokenRegex.lastIndex=t.length,this.settings.reportNonstrict("commentAtEnd","% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode (e.g. $)")):this.tokenRegex.lastIndex=s+1,this.lex()}var h=i.match(oa);return h&&(i=h[1]),new n(i,new a(this,e,this.tokenRegex.lastIndex))},t}(),ma=function(){function t(t,e){void 0===t&&(t={}),void 0===e&&(e={}),this.current=void 0,this.builtins=void 0,this.undefStack=void 0,this.current=e,this.builtins=t,this.undefStack=[]}var e=t.prototype;return e.beginGroup=function(){this.undefStack.push({})},e.endGroup=function(){if(0===this.undefStack.length)throw new o("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug");var t=this.undefStack.pop();for(var e in t)t.hasOwnProperty(e)&&(void 0===t[e]?delete this.current[e]:this.current[e]=t[e])},e.has=function(t){return this.current.hasOwnProperty(t)||this.builtins.hasOwnProperty(t)},e.get=function(t){return this.current.hasOwnProperty(t)?this.current[t]:this.builtins[t]},e.set=function(t,e,r){if(void 0===r&&(r=!1),r){for(var a=0;a<this.undefStack.length;a++)delete this.undefStack[a][t];this.undefStack.length>0&&(this.undefStack[this.undefStack.length-1][t]=e)}else{var n=this.undefStack[this.undefStack.length-1];n&&!n.hasOwnProperty(t)&&(n[t]=this.current[t])}this.current[t]=e},t}(),ca={},ua=ca;function pa(t,e){ca[t]=e}pa("\\@firstoftwo",function(t){return{tokens:t.consumeArgs(2)[0],numArgs:0}}),pa("\\@secondoftwo",function(t){return{tokens:t.consumeArgs(2)[1],numArgs:0}}),pa("\\@ifnextchar",function(t){var e=t.consumeArgs(3),r=t.future();return 1===e[0].length&&e[0][0].text===r.text?{tokens:e[1],numArgs:0}:{tokens:e[2],numArgs:0}}),pa("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}"),pa("\\TextOrMath",function(t){var e=t.consumeArgs(2);return"text"===t.mode?{tokens:e[0],numArgs:0}:{tokens:e[1],numArgs:0}});var da={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};pa("\\char",function(t){var e,r=t.popToken(),a="";if("'"===r.text)e=8,r=t.popToken();else if('"'===r.text)e=16,r=t.popToken();else if("`"===r.text)if("\\"===(r=t.popToken()).text[0])a=r.text.charCodeAt(1);else{if("EOF"===r.text)throw new o("\\char` missing argument");a=r.text.charCodeAt(0)}else e=10;if(e){if(null==(a=da[r.text])||a>=e)throw new o("Invalid base-"+e+" digit "+r.text);for(var n;null!=(n=da[t.future().text])&&n<e;)a*=e,a+=n,t.popToken()}return"\\@char{"+a+"}"});var fa=function(t,e){var r=t.consumeArgs(1)[0];if(1!==r.length)throw new o("\\gdef's first argument must be a macro name");var a=r[0].text,n=0;for(r=t.consumeArgs(1)[0];1===r.length&&"#"===r[0].text;){if(1!==(r=t.consumeArgs(1)[0]).length)throw new o('Invalid argument number length "'+r.length+'"');if(!/^[1-9]$/.test(r[0].text))throw new o('Invalid argument number "'+r[0].text+'"');if(n++,parseInt(r[0].text)!==n)throw new o('Argument number "'+r[0].text+'" out of order');r=t.consumeArgs(1)[0]}return t.macros.set(a,{tokens:r,numArgs:n},e),""};pa("\\gdef",function(t){return fa(t,!0)}),pa("\\def",function(t){return fa(t,!1)}),pa("\\global",function(t){var e=t.consumeArgs(1)[0];if(1!==e.length)throw new o("Invalid command after \\global");var r=e[0].text;if("\\def"===r)return fa(t,!0);throw new o("Invalid command '"+r+"' after \\global")});var ga=function(t,e,r){var a=t.consumeArgs(1)[0];if(1!==a.length)throw new o("\\newcommand's first argument must be a macro name");var n=a[0].text,i=t.isDefined(n);if(i&&!e)throw new o("\\newcommand{"+n+"} attempting to redefine "+n+"; use \\renewcommand");if(!i&&!r)throw new o("\\renewcommand{"+n+"} when command "+n+" does not yet exist; use \\newcommand");var s=0;if(1===(a=t.consumeArgs(1)[0]).length&&"["===a[0].text){for(var h="",l=t.expandNextToken();"]"!==l.text&&"EOF"!==l.text;)h+=l.text,l=t.expandNextToken();if(!h.match(/^\s*[0-9]+\s*$/))throw new o("Invalid number of arguments: "+h);s=parseInt(h),a=t.consumeArgs(1)[0]}return t.macros.set(n,{tokens:a,numArgs:s}),""};pa("\\newcommand",function(t){return ga(t,!1,!0)}),pa("\\renewcommand",function(t){return ga(t,!0,!1)}),pa("\\providecommand",function(t){return ga(t,!0,!0)}),pa("\\bgroup","{"),pa("\\egroup","}"),pa("\\lq","`"),pa("\\rq","'"),pa("\\aa","\\r a"),pa("\\AA","\\r A"),pa("\\textcopyright","\\html@mathml{\\textcircled{c}}{\\char`\xa9}"),pa("\\copyright","\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}"),pa("\\textregistered","\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`\xae}"),pa("\u212c","\\mathscr{B}"),pa("\u2130","\\mathscr{E}"),pa("\u2131","\\mathscr{F}"),pa("\u210b","\\mathscr{H}"),pa("\u2110","\\mathscr{I}"),pa("\u2112","\\mathscr{L}"),pa("\u2133","\\mathscr{M}"),pa("\u211b","\\mathscr{R}"),pa("\u212d","\\mathfrak{C}"),pa("\u210c","\\mathfrak{H}"),pa("\u2128","\\mathfrak{Z}"),pa("\\Bbbk","\\Bbb{k}"),pa("\xb7","\\cdotp"),pa("\\llap","\\mathllap{\\textrm{#1}}"),pa("\\rlap","\\mathrlap{\\textrm{#1}}"),pa("\\clap","\\mathclap{\\textrm{#1}}"),pa("\\not",'\\html@mathml{\\mathrel{\\mathrlap\\@not}}{\\char"338}'),pa("\\neq","\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`\u2260}}"),pa("\\ne","\\neq"),pa("\u2260","\\neq"),pa("\\notin","\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`\u2209}}"),pa("\u2209","\\notin"),pa("\u2258","\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`\u2258}}"),pa("\u2259","\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`\u2258}}"),pa("\u225a","\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`\u225a}}"),pa("\u225b","\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`\u225b}}"),pa("\u225d","\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`\u225d}}"),pa("\u225e","\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`\u225e}}"),pa("\u225f","\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`\u225f}}"),pa("\u27c2","\\perp"),pa("\u203c","\\mathclose{!\\mkern-0.8mu!}"),pa("\u220c","\\notni"),pa("\u231c","\\ulcorner"),pa("\u231d","\\urcorner"),pa("\u231e","\\llcorner"),pa("\u231f","\\lrcorner"),pa("\xa9","\\copyright"),pa("\xae","\\textregistered"),pa("\ufe0f","\\textregistered"),pa("\\vdots","\\mathord{\\varvdots\\rule{0pt}{15pt}}"),pa("\u22ee","\\vdots"),pa("\\varGamma","\\mathit{\\Gamma}"),pa("\\varDelta","\\mathit{\\Delta}"),pa("\\varTheta","\\mathit{\\Theta}"),pa("\\varLambda","\\mathit{\\Lambda}"),pa("\\varXi","\\mathit{\\Xi}"),pa("\\varPi","\\mathit{\\Pi}"),pa("\\varSigma","\\mathit{\\Sigma}"),pa("\\varUpsilon","\\mathit{\\Upsilon}"),pa("\\varPhi","\\mathit{\\Phi}"),pa("\\varPsi","\\mathit{\\Psi}"),pa("\\varOmega","\\mathit{\\Omega}"),pa("\\substack","\\begin{subarray}{c}#1\\end{subarray}"),pa("\\colon","\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu"),pa("\\boxed","\\fbox{$\\displaystyle{#1}$}"),pa("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;"),pa("\\implies","\\DOTSB\\;\\Longrightarrow\\;"),pa("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;");var xa={",":"\\dotsc","\\not":"\\dotsb","+":"\\dotsb","=":"\\dotsb","<":"\\dotsb",">":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcup":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"};pa("\\dots",function(t){var e="\\dotso",r=t.expandAfterFuture().text;return r in xa?e=xa[r]:"\\not"===r.substr(0,4)?e="\\dotsb":r in j.math&&c.contains(["bin","rel"],j.math[r].group)&&(e="\\dotsb"),e});var va={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0};pa("\\dotso",function(t){return t.future().text in va?"\\ldots\\,":"\\ldots"}),pa("\\dotsc",function(t){var e=t.future().text;return e in va&&","!==e?"\\ldots\\,":"\\ldots"}),pa("\\cdots",function(t){return t.future().text in va?"\\@cdots\\,":"\\@cdots"}),pa("\\dotsb","\\cdots"),pa("\\dotsm","\\cdots"),pa("\\dotsi","\\!\\cdots"),pa("\\dotsx","\\ldots\\,"),pa("\\DOTSI","\\relax"),pa("\\DOTSB","\\relax"),pa("\\DOTSX","\\relax"),pa("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax"),pa("\\,","\\tmspace+{3mu}{.1667em}"),pa("\\thinspace","\\,"),pa("\\>","\\mskip{4mu}"),pa("\\:","\\tmspace+{4mu}{.2222em}"),pa("\\medspace","\\:"),pa("\\;","\\tmspace+{5mu}{.2777em}"),pa("\\thickspace","\\;"),pa("\\!","\\tmspace-{3mu}{.1667em}"),pa("\\negthinspace","\\!"),pa("\\negmedspace","\\tmspace-{4mu}{.2222em}"),pa("\\negthickspace","\\tmspace-{5mu}{.277em}"),pa("\\enspace","\\kern.5em "),pa("\\enskip","\\hskip.5em\\relax"),pa("\\quad","\\hskip1em\\relax"),pa("\\qquad","\\hskip2em\\relax"),pa("\\tag","\\@ifstar\\tag@literal\\tag@paren"),pa("\\tag@paren","\\tag@literal{({#1})}"),pa("\\tag@literal",function(t){if(t.macros.get("\\df@tag"))throw new o("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"}),pa("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}"),pa("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)"),pa("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}"),pa("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1"),pa("\\pmb","\\html@mathml{\\@binrel{#1}{\\mathrlap{#1}\\kern0.5px#1}}{\\mathbf{#1}}"),pa("\\\\","\\newline"),pa("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");var ba=F["Main-Regular"]["T".charCodeAt(0)][1]-.7*F["Main-Regular"]["A".charCodeAt(0)][1]+"em";pa("\\LaTeX","\\textrm{\\html@mathml{L\\kern-.36em\\raisebox{"+ba+"}{\\scriptstyle A}\\kern-.15em\\TeX}{LaTeX}}"),pa("\\KaTeX","\\textrm{\\html@mathml{K\\kern-.17em\\raisebox{"+ba+"}{\\scriptstyle A}\\kern-.15em\\TeX}{KaTeX}}"),pa("\\hspace","\\@ifstar\\@hspacer\\@hspace"),pa("\\@hspace","\\hskip #1\\relax"),pa("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax"),pa("\\ordinarycolon",":"),pa("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}"),pa("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}'),pa("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}'),pa("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}'),pa("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}'),pa("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}'),pa("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}'),pa("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}'),pa("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}'),pa("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}'),pa("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}'),pa("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}'),pa("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}'),pa("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}'),pa("\u2237","\\dblcolon"),pa("\u2239","\\eqcolon"),pa("\u2254","\\coloneqq"),pa("\u2255","\\eqqcolon"),pa("\u2a74","\\Coloneqq"),pa("\\ratio","\\vcentcolon"),pa("\\coloncolon","\\dblcolon"),pa("\\colonequals","\\coloneqq"),pa("\\coloncolonequals","\\Coloneqq"),pa("\\equalscolon","\\eqqcolon"),pa("\\equalscoloncolon","\\Eqqcolon"),pa("\\colonminus","\\coloneq"),pa("\\coloncolonminus","\\Coloneq"),pa("\\minuscolon","\\eqcolon"),pa("\\minuscoloncolon","\\Eqcolon"),pa("\\coloncolonapprox","\\Colonapprox"),pa("\\coloncolonsim","\\Colonsim"),pa("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),pa("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}"),pa("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),pa("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}"),pa("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`\u220c}}"),pa("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}"),pa("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}"),pa("\\gvertneqq","\\html@mathml{\\@gvertneqq}{\u2269}"),pa("\\lvertneqq","\\html@mathml{\\@lvertneqq}{\u2268}"),pa("\\ngeqq","\\html@mathml{\\@ngeqq}{\u2271}"),pa("\\ngeqslant","\\html@mathml{\\@ngeqslant}{\u2271}"),pa("\\nleqq","\\html@mathml{\\@nleqq}{\u2270}"),pa("\\nleqslant","\\html@mathml{\\@nleqslant}{\u2270}"),pa("\\nshortmid","\\html@mathml{\\@nshortmid}{\u2224}"),pa("\\nshortparallel","\\html@mathml{\\@nshortparallel}{\u2226}"),pa("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{\u2288}"),pa("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{\u2289}"),pa("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{\u228a}"),pa("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{\u2acb}"),pa("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{\u228b}"),pa("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{\u2acc}"),pa("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`\u27e6}}"),pa("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`\u27e7}}"),pa("\u27e6","\\llbracket"),pa("\u27e7","\\rrbracket"),pa("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`\u2983}}"),pa("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`\u2984}}"),pa("\u2983","\\lBrace"),pa("\u2984","\\rBrace"),pa("\\darr","\\downarrow"),pa("\\dArr","\\Downarrow"),pa("\\Darr","\\Downarrow"),pa("\\lang","\\langle"),pa("\\rang","\\rangle"),pa("\\uarr","\\uparrow"),pa("\\uArr","\\Uparrow"),pa("\\Uarr","\\Uparrow"),pa("\\N","\\mathbb{N}"),pa("\\R","\\mathbb{R}"),pa("\\Z","\\mathbb{Z}"),pa("\\alef","\\aleph"),pa("\\alefsym","\\aleph"),pa("\\Alpha","\\mathrm{A}"),pa("\\Beta","\\mathrm{B}"),pa("\\bull","\\bullet"),pa("\\Chi","\\mathrm{X}"),pa("\\clubs","\\clubsuit"),pa("\\cnums","\\mathbb{C}"),pa("\\Complex","\\mathbb{C}"),pa("\\Dagger","\\ddagger"),pa("\\diamonds","\\diamondsuit"),pa("\\empty","\\emptyset"),pa("\\Epsilon","\\mathrm{E}"),pa("\\Eta","\\mathrm{H}"),pa("\\exist","\\exists"),pa("\\harr","\\leftrightarrow"),pa("\\hArr","\\Leftrightarrow"),pa("\\Harr","\\Leftrightarrow"),pa("\\hearts","\\heartsuit"),pa("\\image","\\Im"),pa("\\infin","\\infty"),pa("\\Iota","\\mathrm{I}"),pa("\\isin","\\in"),pa("\\Kappa","\\mathrm{K}"),pa("\\larr","\\leftarrow"),pa("\\lArr","\\Leftarrow"),pa("\\Larr","\\Leftarrow"),pa("\\lrarr","\\leftrightarrow"),pa("\\lrArr","\\Leftrightarrow"),pa("\\Lrarr","\\Leftrightarrow"),pa("\\Mu","\\mathrm{M}"),pa("\\natnums","\\mathbb{N}"),pa("\\Nu","\\mathrm{N}"),pa("\\Omicron","\\mathrm{O}"),pa("\\plusmn","\\pm"),pa("\\rarr","\\rightarrow"),pa("\\rArr","\\Rightarrow"),pa("\\Rarr","\\Rightarrow"),pa("\\real","\\Re"),pa("\\reals","\\mathbb{R}"),pa("\\Reals","\\mathbb{R}"),pa("\\Rho","\\mathrm{P}"),pa("\\sdot","\\cdot"),pa("\\sect","\\S"),pa("\\spades","\\spadesuit"),pa("\\sub","\\subset"),pa("\\sube","\\subseteq"),pa("\\supe","\\supseteq"),pa("\\Tau","\\mathrm{T}"),pa("\\thetasym","\\vartheta"),pa("\\weierp","\\wp"),pa("\\Zeta","\\mathrm{Z}"),pa("\\argmin","\\DOTSB\\operatorname*{arg\\,min}"),pa("\\argmax","\\DOTSB\\operatorname*{arg\\,max}"),pa("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits"),pa("\\blue","\\textcolor{##6495ed}{#1}"),pa("\\orange","\\textcolor{##ffa500}{#1}"),pa("\\pink","\\textcolor{##ff00af}{#1}"),pa("\\red","\\textcolor{##df0030}{#1}"),pa("\\green","\\textcolor{##28ae7b}{#1}"),pa("\\gray","\\textcolor{gray}{#1}"),pa("\\purple","\\textcolor{##9d38bd}{#1}"),pa("\\blueA","\\textcolor{##ccfaff}{#1}"),pa("\\blueB","\\textcolor{##80f6ff}{#1}"),pa("\\blueC","\\textcolor{##63d9ea}{#1}"),pa("\\blueD","\\textcolor{##11accd}{#1}"),pa("\\blueE","\\textcolor{##0c7f99}{#1}"),pa("\\tealA","\\textcolor{##94fff5}{#1}"),pa("\\tealB","\\textcolor{##26edd5}{#1}"),pa("\\tealC","\\textcolor{##01d1c1}{#1}"),pa("\\tealD","\\textcolor{##01a995}{#1}"),pa("\\tealE","\\textcolor{##208170}{#1}"),pa("\\greenA","\\textcolor{##b6ffb0}{#1}"),pa("\\greenB","\\textcolor{##8af281}{#1}"),pa("\\greenC","\\textcolor{##74cf70}{#1}"),pa("\\greenD","\\textcolor{##1fab54}{#1}"),pa("\\greenE","\\textcolor{##0d923f}{#1}"),pa("\\goldA","\\textcolor{##ffd0a9}{#1}"),pa("\\goldB","\\textcolor{##ffbb71}{#1}"),pa("\\goldC","\\textcolor{##ff9c39}{#1}"),pa("\\goldD","\\textcolor{##e07d10}{#1}"),pa("\\goldE","\\textcolor{##a75a05}{#1}"),pa("\\redA","\\textcolor{##fca9a9}{#1}"),pa("\\redB","\\textcolor{##ff8482}{#1}"),pa("\\redC","\\textcolor{##f9685d}{#1}"),pa("\\redD","\\textcolor{##e84d39}{#1}"),pa("\\redE","\\textcolor{##bc2612}{#1}"),pa("\\maroonA","\\textcolor{##ffbde0}{#1}"),pa("\\maroonB","\\textcolor{##ff92c6}{#1}"),pa("\\maroonC","\\textcolor{##ed5fa6}{#1}"),pa("\\maroonD","\\textcolor{##ca337c}{#1}"),pa("\\maroonE","\\textcolor{##9e034e}{#1}"),pa("\\purpleA","\\textcolor{##ddd7ff}{#1}"),pa("\\purpleB","\\textcolor{##c6b9fc}{#1}"),pa("\\purpleC","\\textcolor{##aa87ff}{#1}"),pa("\\purpleD","\\textcolor{##7854ab}{#1}"),pa("\\purpleE","\\textcolor{##543b78}{#1}"),pa("\\mintA","\\textcolor{##f5f9e8}{#1}"),pa("\\mintB","\\textcolor{##edf2df}{#1}"),pa("\\mintC","\\textcolor{##e0e5cc}{#1}"),pa("\\grayA","\\textcolor{##f6f7f7}{#1}"),pa("\\grayB","\\textcolor{##f0f1f2}{#1}"),pa("\\grayC","\\textcolor{##e3e5e6}{#1}"),pa("\\grayD","\\textcolor{##d6d8da}{#1}"),pa("\\grayE","\\textcolor{##babec2}{#1}"),pa("\\grayF","\\textcolor{##888d93}{#1}"),pa("\\grayG","\\textcolor{##626569}{#1}"),pa("\\grayH","\\textcolor{##3b3e40}{#1}"),pa("\\grayI","\\textcolor{##21242c}{#1}"),pa("\\kaBlue","\\textcolor{##314453}{#1}"),pa("\\kaGreen","\\textcolor{##71B307}{#1}");var ya={"\\relax":!0,"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0},wa=function(){function t(t,e,r){this.settings=void 0,this.expansionCount=void 0,this.lexer=void 0,this.macros=void 0,this.stack=void 0,this.mode=void 0,this.settings=e,this.expansionCount=0,this.feed(t),this.macros=new ma(ua,e.macros),this.mode=r,this.stack=[]}var e=t.prototype;return e.feed=function(t){this.lexer=new la(t,this.settings)},e.switchMode=function(t){this.mode=t},e.beginGroup=function(){this.macros.beginGroup()},e.endGroup=function(){this.macros.endGroup()},e.future=function(){return 0===this.stack.length&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]},e.popToken=function(){return this.future(),this.stack.pop()},e.pushToken=function(t){this.stack.push(t)},e.pushTokens=function(t){var e;(e=this.stack).push.apply(e,t)},e.consumeSpaces=function(){for(;;){if(" "!==this.future().text)break;this.stack.pop()}},e.consumeArgs=function(t){for(var e=[],r=0;r<t;++r){this.consumeSpaces();var a=this.popToken();if("{"===a.text){for(var n=[],i=1;0!==i;){var s=this.popToken();if(n.push(s),"{"===s.text)++i;else if("}"===s.text)--i;else if("EOF"===s.text)throw new o("End of input in macro argument",a)}n.pop(),n.reverse(),e[r]=n}else{if("EOF"===a.text)throw new o("End of input expecting macro argument");e[r]=[a]}}return e},e.expandOnce=function(){var t=this.popToken(),e=t.text,r=this._getExpansion(e);if(null==r)return this.pushToken(t),t;if(this.expansionCount++,this.expansionCount>this.settings.maxExpand)throw new o("Too many expansions: infinite loop or need to increase maxExpand setting");var a=r.tokens;if(r.numArgs)for(var n=this.consumeArgs(r.numArgs),i=(a=a.slice()).length-1;i>=0;--i){var s=a[i];if("#"===s.text){if(0===i)throw new o("Incomplete placeholder at end of macro body",s);if("#"===(s=a[--i]).text)a.splice(i+1,1);else{if(!/^[1-9]$/.test(s.text))throw new o("Not a valid argument number",s);var h;(h=a).splice.apply(h,[i,2].concat(n[+s.text-1]))}}}return this.pushTokens(a),a},e.expandAfterFuture=function(){return this.expandOnce(),this.future()},e.expandNextToken=function(){for(;;){var t=this.expandOnce();if(t instanceof n){if("\\relax"!==t.text)return this.stack.pop();this.stack.pop()}}throw new Error},e.expandMacro=function(t){if(this.macros.get(t)){var e=[],r=this.stack.length;for(this.pushToken(new n(t));this.stack.length>r;){this.expandOnce()instanceof n&&e.push(this.stack.pop())}return e}},e.expandMacroAsText=function(t){var e=this.expandMacro(t);return e?e.map(function(t){return t.text}).join(""):e},e._getExpansion=function(t){var e=this.macros.get(t);if(null==e)return e;var r="function"==typeof e?e(this):e;if("string"==typeof r){var a=0;if(-1!==r.indexOf("#"))for(var n=r.replace(/##/g,"");-1!==n.indexOf("#"+(a+1));)++a;for(var i=new la(r,this.settings),o=[],s=i.lex();"EOF"!==s.text;)o.push(s),s=i.lex();return o.reverse(),{tokens:o,numArgs:a}}return r},e.isDefined=function(t){return this.macros.has(t)||ia.hasOwnProperty(t)||j.math.hasOwnProperty(t)||j.text.hasOwnProperty(t)||ya.hasOwnProperty(t)},t}(),ka={"\u0301":{text:"\\'",math:"\\acute"},"\u0300":{text:"\\`",math:"\\grave"},"\u0308":{text:'\\"',math:"\\ddot"},"\u0303":{text:"\\~",math:"\\tilde"},"\u0304":{text:"\\=",math:"\\bar"},"\u0306":{text:"\\u",math:"\\breve"},"\u030c":{text:"\\v",math:"\\check"},"\u0302":{text:"\\^",math:"\\hat"},"\u0307":{text:"\\.",math:"\\dot"},"\u030a":{text:"\\r",math:"\\mathring"},"\u030b":{text:"\\H"}},Sa={"\xe1":"a\u0301","\xe0":"a\u0300","\xe4":"a\u0308","\u01df":"a\u0308\u0304","\xe3":"a\u0303","\u0101":"a\u0304","\u0103":"a\u0306","\u1eaf":"a\u0306\u0301","\u1eb1":"a\u0306\u0300","\u1eb5":"a\u0306\u0303","\u01ce":"a\u030c","\xe2":"a\u0302","\u1ea5":"a\u0302\u0301","\u1ea7":"a\u0302\u0300","\u1eab":"a\u0302\u0303","\u0227":"a\u0307","\u01e1":"a\u0307\u0304","\xe5":"a\u030a","\u01fb":"a\u030a\u0301","\u1e03":"b\u0307","\u0107":"c\u0301","\u010d":"c\u030c","\u0109":"c\u0302","\u010b":"c\u0307","\u010f":"d\u030c","\u1e0b":"d\u0307","\xe9":"e\u0301","\xe8":"e\u0300","\xeb":"e\u0308","\u1ebd":"e\u0303","\u0113":"e\u0304","\u1e17":"e\u0304\u0301","\u1e15":"e\u0304\u0300","\u0115":"e\u0306","\u011b":"e\u030c","\xea":"e\u0302","\u1ebf":"e\u0302\u0301","\u1ec1":"e\u0302\u0300","\u1ec5":"e\u0302\u0303","\u0117":"e\u0307","\u1e1f":"f\u0307","\u01f5":"g\u0301","\u1e21":"g\u0304","\u011f":"g\u0306","\u01e7":"g\u030c","\u011d":"g\u0302","\u0121":"g\u0307","\u1e27":"h\u0308","\u021f":"h\u030c","\u0125":"h\u0302","\u1e23":"h\u0307","\xed":"i\u0301","\xec":"i\u0300","\xef":"i\u0308","\u1e2f":"i\u0308\u0301","\u0129":"i\u0303","\u012b":"i\u0304","\u012d":"i\u0306","\u01d0":"i\u030c","\xee":"i\u0302","\u01f0":"j\u030c","\u0135":"j\u0302","\u1e31":"k\u0301","\u01e9":"k\u030c","\u013a":"l\u0301","\u013e":"l\u030c","\u1e3f":"m\u0301","\u1e41":"m\u0307","\u0144":"n\u0301","\u01f9":"n\u0300","\xf1":"n\u0303","\u0148":"n\u030c","\u1e45":"n\u0307","\xf3":"o\u0301","\xf2":"o\u0300","\xf6":"o\u0308","\u022b":"o\u0308\u0304","\xf5":"o\u0303","\u1e4d":"o\u0303\u0301","\u1e4f":"o\u0303\u0308","\u022d":"o\u0303\u0304","\u014d":"o\u0304","\u1e53":"o\u0304\u0301","\u1e51":"o\u0304\u0300","\u014f":"o\u0306","\u01d2":"o\u030c","\xf4":"o\u0302","\u1ed1":"o\u0302\u0301","\u1ed3":"o\u0302\u0300","\u1ed7":"o\u0302\u0303","\u022f":"o\u0307","\u0231":"o\u0307\u0304","\u0151":"o\u030b","\u1e55":"p\u0301","\u1e57":"p\u0307","\u0155":"r\u0301","\u0159":"r\u030c","\u1e59":"r\u0307","\u015b":"s\u0301","\u1e65":"s\u0301\u0307","\u0161":"s\u030c","\u1e67":"s\u030c\u0307","\u015d":"s\u0302","\u1e61":"s\u0307","\u1e97":"t\u0308","\u0165":"t\u030c","\u1e6b":"t\u0307","\xfa":"u\u0301","\xf9":"u\u0300","\xfc":"u\u0308","\u01d8":"u\u0308\u0301","\u01dc":"u\u0308\u0300","\u01d6":"u\u0308\u0304","\u01da":"u\u0308\u030c","\u0169":"u\u0303","\u1e79":"u\u0303\u0301","\u016b":"u\u0304","\u1e7b":"u\u0304\u0308","\u016d":"u\u0306","\u01d4":"u\u030c","\xfb":"u\u0302","\u016f":"u\u030a","\u0171":"u\u030b","\u1e7d":"v\u0303","\u1e83":"w\u0301","\u1e81":"w\u0300","\u1e85":"w\u0308","\u0175":"w\u0302","\u1e87":"w\u0307","\u1e98":"w\u030a","\u1e8d":"x\u0308","\u1e8b":"x\u0307","\xfd":"y\u0301","\u1ef3":"y\u0300","\xff":"y\u0308","\u1ef9":"y\u0303","\u0233":"y\u0304","\u0177":"y\u0302","\u1e8f":"y\u0307","\u1e99":"y\u030a","\u017a":"z\u0301","\u017e":"z\u030c","\u1e91":"z\u0302","\u017c":"z\u0307","\xc1":"A\u0301","\xc0":"A\u0300","\xc4":"A\u0308","\u01de":"A\u0308\u0304","\xc3":"A\u0303","\u0100":"A\u0304","\u0102":"A\u0306","\u1eae":"A\u0306\u0301","\u1eb0":"A\u0306\u0300","\u1eb4":"A\u0306\u0303","\u01cd":"A\u030c","\xc2":"A\u0302","\u1ea4":"A\u0302\u0301","\u1ea6":"A\u0302\u0300","\u1eaa":"A\u0302\u0303","\u0226":"A\u0307","\u01e0":"A\u0307\u0304","\xc5":"A\u030a","\u01fa":"A\u030a\u0301","\u1e02":"B\u0307","\u0106":"C\u0301","\u010c":"C\u030c","\u0108":"C\u0302","\u010a":"C\u0307","\u010e":"D\u030c","\u1e0a":"D\u0307","\xc9":"E\u0301","\xc8":"E\u0300","\xcb":"E\u0308","\u1ebc":"E\u0303","\u0112":"E\u0304","\u1e16":"E\u0304\u0301","\u1e14":"E\u0304\u0300","\u0114":"E\u0306","\u011a":"E\u030c","\xca":"E\u0302","\u1ebe":"E\u0302\u0301","\u1ec0":"E\u0302\u0300","\u1ec4":"E\u0302\u0303","\u0116":"E\u0307","\u1e1e":"F\u0307","\u01f4":"G\u0301","\u1e20":"G\u0304","\u011e":"G\u0306","\u01e6":"G\u030c","\u011c":"G\u0302","\u0120":"G\u0307","\u1e26":"H\u0308","\u021e":"H\u030c","\u0124":"H\u0302","\u1e22":"H\u0307","\xcd":"I\u0301","\xcc":"I\u0300","\xcf":"I\u0308","\u1e2e":"I\u0308\u0301","\u0128":"I\u0303","\u012a":"I\u0304","\u012c":"I\u0306","\u01cf":"I\u030c","\xce":"I\u0302","\u0130":"I\u0307","\u0134":"J\u0302","\u1e30":"K\u0301","\u01e8":"K\u030c","\u0139":"L\u0301","\u013d":"L\u030c","\u1e3e":"M\u0301","\u1e40":"M\u0307","\u0143":"N\u0301","\u01f8":"N\u0300","\xd1":"N\u0303","\u0147":"N\u030c","\u1e44":"N\u0307","\xd3":"O\u0301","\xd2":"O\u0300","\xd6":"O\u0308","\u022a":"O\u0308\u0304","\xd5":"O\u0303","\u1e4c":"O\u0303\u0301","\u1e4e":"O\u0303\u0308","\u022c":"O\u0303\u0304","\u014c":"O\u0304","\u1e52":"O\u0304\u0301","\u1e50":"O\u0304\u0300","\u014e":"O\u0306","\u01d1":"O\u030c","\xd4":"O\u0302","\u1ed0":"O\u0302\u0301","\u1ed2":"O\u0302\u0300","\u1ed6":"O\u0302\u0303","\u022e":"O\u0307","\u0230":"O\u0307\u0304","\u0150":"O\u030b","\u1e54":"P\u0301","\u1e56":"P\u0307","\u0154":"R\u0301","\u0158":"R\u030c","\u1e58":"R\u0307","\u015a":"S\u0301","\u1e64":"S\u0301\u0307","\u0160":"S\u030c","\u1e66":"S\u030c\u0307","\u015c":"S\u0302","\u1e60":"S\u0307","\u0164":"T\u030c","\u1e6a":"T\u0307","\xda":"U\u0301","\xd9":"U\u0300","\xdc":"U\u0308","\u01d7":"U\u0308\u0301","\u01db":"U\u0308\u0300","\u01d5":"U\u0308\u0304","\u01d9":"U\u0308\u030c","\u0168":"U\u0303","\u1e78":"U\u0303\u0301","\u016a":"U\u0304","\u1e7a":"U\u0304\u0308","\u016c":"U\u0306","\u01d3":"U\u030c","\xdb":"U\u0302","\u016e":"U\u030a","\u0170":"U\u030b","\u1e7c":"V\u0303","\u1e82":"W\u0301","\u1e80":"W\u0300","\u1e84":"W\u0308","\u0174":"W\u0302","\u1e86":"W\u0307","\u1e8c":"X\u0308","\u1e8a":"X\u0307","\xdd":"Y\u0301","\u1ef2":"Y\u0300","\u0178":"Y\u0308","\u1ef8":"Y\u0303","\u0232":"Y\u0304","\u0176":"Y\u0302","\u1e8e":"Y\u0307","\u0179":"Z\u0301","\u017d":"Z\u030c","\u1e90":"Z\u0302","\u017b":"Z\u0307","\u03ac":"\u03b1\u0301","\u1f70":"\u03b1\u0300","\u1fb1":"\u03b1\u0304","\u1fb0":"\u03b1\u0306","\u03ad":"\u03b5\u0301","\u1f72":"\u03b5\u0300","\u03ae":"\u03b7\u0301","\u1f74":"\u03b7\u0300","\u03af":"\u03b9\u0301","\u1f76":"\u03b9\u0300","\u03ca":"\u03b9\u0308","\u0390":"\u03b9\u0308\u0301","\u1fd2":"\u03b9\u0308\u0300","\u1fd1":"\u03b9\u0304","\u1fd0":"\u03b9\u0306","\u03cc":"\u03bf\u0301","\u1f78":"\u03bf\u0300","\u03cd":"\u03c5\u0301","\u1f7a":"\u03c5\u0300","\u03cb":"\u03c5\u0308","\u03b0":"\u03c5\u0308\u0301","\u1fe2":"\u03c5\u0308\u0300","\u1fe1":"\u03c5\u0304","\u1fe0":"\u03c5\u0306","\u03ce":"\u03c9\u0301","\u1f7c":"\u03c9\u0300","\u038e":"\u03a5\u0301","\u1fea":"\u03a5\u0300","\u03ab":"\u03a5\u0308","\u1fe9":"\u03a5\u0304","\u1fe8":"\u03a5\u0306","\u038f":"\u03a9\u0301","\u1ffa":"\u03a9\u0300"},Ma=function(){function t(t,e){this.mode=void 0,this.gullet=void 0,this.settings=void 0,this.leftrightDepth=void 0,this.nextToken=void 0,this.mode="math",this.gullet=new wa(t,e,this.mode),this.settings=e,this.leftrightDepth=0}var e=t.prototype;return e.expect=function(t,e){if(void 0===e&&(e=!0),this.fetch().text!==t)throw new o("Expected '"+t+"', got '"+this.fetch().text+"'",this.fetch());e&&this.consume()},e.consume=function(){this.nextToken=null},e.fetch=function(){return null==this.nextToken&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken},e.switchMode=function(t){this.mode=t,this.gullet.switchMode(t)},e.parse=function(){this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");var t=this.parseExpression(!1);return this.expect("EOF"),this.gullet.endGroup(),t},e.parseExpression=function(e,r){for(var a=[];;){"math"===this.mode&&this.consumeSpaces();var n=this.fetch();if(-1!==t.endOfExpression.indexOf(n.text))break;if(r&&n.text===r)break;if(e&&ia[n.text]&&ia[n.text].infix)break;var i=this.parseAtom(r);if(!i)break;a.push(i)}return"text"===this.mode&&this.formLigatures(a),this.handleInfixNodes(a)},e.handleInfixNodes=function(t){for(var e,r=-1,a=0;a<t.length;a++){var n=Vt(t[a],"infix");if(n){if(-1!==r)throw new o("only one infix operator per group",n.token);r=a,e=n.replaceWith}}if(-1!==r&&e){var i,s,h=t.slice(0,r),l=t.slice(r+1);return i=1===h.length&&"ordgroup"===h[0].type?h[0]:{type:"ordgroup",mode:this.mode,body:h},s=1===l.length&&"ordgroup"===l[0].type?l[0]:{type:"ordgroup",mode:this.mode,body:l},["\\\\abovefrac"===e?this.callFunction(e,[i,t[r],s],[]):this.callFunction(e,[i,s],[])]}return t},e.handleSupSubscript=function(e){var r=this.fetch(),a=r.text;this.consume();var n=this.parseGroup(e,!1,t.SUPSUB_GREEDINESS,void 0,void 0,!0);if(!n)throw new o("Expected group after '"+a+"'",r);return n},e.formatUnsupportedCmd=function(t){for(var e=[],r=0;r<t.length;r++)e.push({type:"textord",mode:"text",text:t[r]});var a={type:"text",mode:this.mode,body:e};return{type:"color",mode:this.mode,color:this.settings.errorColor,body:[a]}},e.parseAtom=function(t){var e,r,a=this.parseGroup("atom",!1,null,t);if("text"===this.mode)return a;for(;;){this.consumeSpaces();var n=this.fetch();if("\\limits"===n.text||"\\nolimits"===n.text){var i=Vt(a,"op");if(i){var s="\\limits"===n.text;i.limits=s,i.alwaysHandleSupSub=!0}else{if(!(i=Vt(a,"operatorname"))||!i.alwaysHandleSupSub)throw new o("Limit controls must follow a math operator",n);var h="\\limits"===n.text;i.limits=h}this.consume()}else if("^"===n.text){if(e)throw new o("Double superscript",n);e=this.handleSupSubscript("superscript")}else if("_"===n.text){if(r)throw new o("Double subscript",n);r=this.handleSupSubscript("subscript")}else{if("'"!==n.text)break;if(e)throw new o("Double superscript",n);var l={type:"textord",mode:this.mode,text:"\\prime"},m=[l];for(this.consume();"'"===this.fetch().text;)m.push(l),this.consume();"^"===this.fetch().text&&m.push(this.handleSupSubscript("superscript")),e={type:"ordgroup",mode:this.mode,body:m}}}return e||r?{type:"supsub",mode:this.mode,base:a,sup:e,sub:r}:a},e.parseFunction=function(t,e,r){var a=this.fetch(),n=a.text,i=ia[n];if(!i)return null;if(this.consume(),null!=r&&i.greediness<=r)throw new o("Got function '"+n+"' with no arguments"+(e?" as "+e:""),a);if("text"===this.mode&&!i.allowedInText)throw new o("Can't use function '"+n+"' in text mode",a);if("math"===this.mode&&!1===i.allowedInMath)throw new o("Can't use function '"+n+"' in math mode",a);var s=this.parseArguments(n,i),h=s.args,l=s.optArgs;return this.callFunction(n,h,l,a,t)},e.callFunction=function(t,e,r,a,n){var i={funcName:t,parser:this,token:a,breakOnTokenText:n},s=ia[t];if(s&&s.handler)return s.handler(i,e,r);throw new o("No function handler for "+t)},e.parseArguments=function(t,e){var r=e.numArgs+e.numOptionalArgs;if(0===r)return{args:[],optArgs:[]};for(var a=e.greediness,n=[],i=[],s=0;s<r;s++){var h=e.argTypes&&e.argTypes[s],l=s<e.numOptionalArgs,m=s>0&&!l||0===s&&!l&&"math"===this.mode,c=this.parseGroupOfType("argument to '"+t+"'",h,l,a,m);if(!c){if(l){i.push(null);continue}throw new o("Expected group after '"+t+"'",this.fetch())}(l?i:n).push(c)}return{args:n,optArgs:i}},e.parseGroupOfType=function(t,e,r,a,n){switch(e){case"color":return n&&this.consumeSpaces(),this.parseColorGroup(r);case"size":return n&&this.consumeSpaces(),this.parseSizeGroup(r);case"url":return this.parseUrlGroup(r,n);case"math":case"text":return this.parseGroup(t,r,a,void 0,e,n);case"hbox":var i=this.parseGroup(t,r,a,void 0,"text",n);return i?{type:"styling",mode:i.mode,body:[i],style:"text"}:i;case"raw":if(n&&this.consumeSpaces(),r&&"{"===this.fetch().text)return null;var s=this.parseStringGroup("raw",r,!0);if(s)return{type:"raw",mode:"text",string:s.text};throw new o("Expected raw group",this.fetch());case"original":case null:case void 0:return this.parseGroup(t,r,a,void 0,void 0,n);default:throw new o("Unknown group type as "+t,this.fetch())}},e.consumeSpaces=function(){for(;" "===this.fetch().text;)this.consume()},e.parseStringGroup=function(t,e,r){var a=e?"[":"{",n=e?"]":"}",i=this.fetch();if(i.text!==a){if(e)return null;if(r&&"EOF"!==i.text&&/[^{}[\]]/.test(i.text))return this.consume(),i}var s=this.mode;this.mode="text",this.expect(a);for(var h,l="",m=this.fetch(),c=0,u=m;(h=this.fetch()).text!==n||r&&c>0;){switch(h.text){case"EOF":throw new o("Unexpected end of input in "+t,m.range(u,l));case a:c++;break;case n:c--}l+=(u=h).text,this.consume()}return this.expect(n),this.mode=s,m.range(u,l)},e.parseRegexGroup=function(t,e){var r=this.mode;this.mode="text";for(var a,n=this.fetch(),i=n,s="";"EOF"!==(a=this.fetch()).text&&t.test(s+a.text);)s+=(i=a).text,this.consume();if(""===s)throw new o("Invalid "+e+": '"+n.text+"'",n);return this.mode=r,n.range(i,s)},e.parseColorGroup=function(t){var e=this.parseStringGroup("color",t);if(!e)return null;var r=/^(#[a-f0-9]{3}|#?[a-f0-9]{6}|[a-z]+)$/i.exec(e.text);if(!r)throw new o("Invalid color: '"+e.text+"'",e);var a=r[0];return/^[0-9a-f]{6}$/i.test(a)&&(a="#"+a),{type:"color-token",mode:this.mode,color:a}},e.parseSizeGroup=function(t){var e,r=!1;if(!(e=t||"{"===this.fetch().text?this.parseStringGroup("size",t):this.parseRegexGroup(/^[-+]? *(?:$|\d+|\d+\.\d*|\.\d*) *[a-z]{0,2} *$/,"size")))return null;t||0!==e.text.length||(e.text="0pt",r=!0);var a=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(e.text);if(!a)throw new o("Invalid size: '"+e.text+"'",e);var n={number:+(a[1]+a[2]),unit:a[3]};if(!At(n))throw new o("Invalid unit: '"+n.unit+"'",e);return{type:"size",mode:this.mode,value:n,isBlank:r}},e.parseUrlGroup=function(t,e){this.gullet.lexer.setCatcode("%",13);var r=this.parseStringGroup("url",t,!0);if(this.gullet.lexer.setCatcode("%",14),!r)return null;var a=r.text.replace(/\\([#$%&~_^{}])/g,"$1");return{type:"url",mode:this.mode,url:a}},e.parseGroup=function(e,r,n,i,s,h){var l=this.mode;s&&this.switchMode(s),h&&this.consumeSpaces();var m,c=this.fetch(),u=c.text;if(r?"["===u:"{"===u||"\\begingroup"===u){this.consume();var p=t.endOfGroup[u];this.gullet.beginGroup();var d=this.parseExpression(!1,p),f=this.fetch();this.expect(p),this.gullet.endGroup(),m={type:"ordgroup",mode:this.mode,loc:a.range(c,f),body:d,semisimple:"\\begingroup"===u||void 0}}else if(r)m=null;else if(null==(m=this.parseFunction(i,e,n)||this.parseSymbol())&&"\\"===u[0]&&!ya.hasOwnProperty(u)){if(this.settings.throwOnError)throw new o("Undefined control sequence: "+u,c);m=this.formatUnsupportedCmd(u),this.consume()}return s&&this.switchMode(l),m},e.formLigatures=function(t){for(var e=t.length-1,r=0;r<e;++r){var n=t[r],i=n.text;"-"===i&&"-"===t[r+1].text&&(r+1<e&&"-"===t[r+2].text?(t.splice(r,3,{type:"textord",mode:"text",loc:a.range(n,t[r+2]),text:"---"}),e-=2):(t.splice(r,2,{type:"textord",mode:"text",loc:a.range(n,t[r+1]),text:"--"}),e-=1)),"'"!==i&&"`"!==i||t[r+1].text!==i||(t.splice(r,2,{type:"textord",mode:"text",loc:a.range(n,t[r+1]),text:i+i}),e-=1)}},e.parseSymbol=function(){var t=this.fetch(),e=t.text;if(/^\\verb[^a-zA-Z]/.test(e)){this.consume();var r=e.slice(5),n="*"===r.charAt(0);if(n&&(r=r.slice(1)),r.length<2||r.charAt(0)!==r.slice(-1))throw new o("\\verb assertion failed --\n please report what input caused this bug");return{type:"verb",mode:"text",body:r=r.slice(1,-1),star:n}}Sa.hasOwnProperty(e[0])&&!j[this.mode][e[0]]&&(this.settings.strict&&"math"===this.mode&&this.settings.reportNonstrict("unicodeTextInMathMode",'Accented Unicode text character "'+e[0]+'" used in math mode',t),e=Sa[e[0]]+e.substr(1));var i,s=sa.exec(e);if(s&&("i"===(e=e.substring(0,s.index))?e="\u0131":"j"===e&&(e="\u0237")),j[this.mode][e]){this.settings.strict&&"math"===this.mode&&"\xc7\xd0\xde\xe7\xfe".indexOf(e)>=0&&this.settings.reportNonstrict("unicodeTextInMathMode",'Latin-1/Unicode text character "'+e[0]+'" used in math mode',t);var h,l=j[this.mode][e].group,m=a.range(t);if(W.hasOwnProperty(l)){var c=l;h={type:"atom",mode:this.mode,family:c,loc:m,text:e}}else h={type:l,mode:this.mode,loc:m,text:e};i=h}else{if(!(e.charCodeAt(0)>=128))return null;this.settings.strict&&(M(e.charCodeAt(0))?"math"===this.mode&&this.settings.reportNonstrict("unicodeTextInMathMode",'Unicode text character "'+e[0]+'" used in math mode',t):this.settings.reportNonstrict("unknownSymbol",'Unrecognized Unicode character "'+e[0]+'" ('+e.charCodeAt(0)+")",t)),i={type:"textord",mode:"text",loc:a.range(t),text:e}}if(this.consume(),s)for(var u=0;u<s[0].length;u++){var p=s[0][u];if(!ka[p])throw new o("Unknown accent ' "+p+"'",t);var d=ka[p][this.mode];if(!d)throw new o("Accent "+p+" unsupported in "+this.mode+" mode",t);i={type:"accent",mode:this.mode,loc:a.range(t),label:d,isStretchy:!1,isShifty:!0,base:i}}return i},t}();Ma.endOfExpression=["}","\\endgroup","\\end","\\right","&"],Ma.endOfGroup={"[":"]","{":"}","\\begingroup":"\\endgroup"},Ma.SUPSUB_GREEDINESS=1;var za=function(t,e){if(!("string"==typeof t||t instanceof String))throw new TypeError("KaTeX can only parse string typed expression");var r=new Ma(t,e);delete r.gullet.macros.current["\\df@tag"];var a=r.parse();if(r.gullet.macros.get("\\df@tag")){if(!e.displayMode)throw new o("\\tag works only in display equations");r.gullet.feed("\\df@tag"),a=[{type:"tag",mode:"text",body:a,tag:r.parse()}]}return a},Aa=function(t,e,r){e.textContent="";var a=Ba(t,r).toNode();e.appendChild(a)};"undefined"!=typeof document&&"CSS1Compat"!==document.compatMode&&("undefined"!=typeof console&&console.warn("Warning: KaTeX doesn't work in quirks mode. Make sure your website has a suitable doctype."),Aa=function(){throw new o("KaTeX doesn't work in quirks mode.")});var Ta=function(t,e,r){if(r.throwOnError||!(t instanceof o))throw t;var a=Dt.makeSpan(["katex-error"],[new E(e)]);return a.setAttribute("title",t.toString()),a.setAttribute("style","color:"+r.errorColor),a},Ba=function(t,e){var r=new u(e);try{var a=za(t,r);return Be(a,t,r)}catch(e){return Ta(e,t,r)}},Ca={version:"0.11.1",render:Aa,renderToString:function(t,e){return Ba(t,e).toMarkup()},ParseError:o,__parse:function(t,e){var r=new u(e);return za(t,r)},__renderToDomTree:Ba,__renderToHTMLTree:function(t,e){var r=new u(e);try{return function(t,e,r){var a=de(t,Ae(r)),n=Dt.makeSpan(["katex"],[a]);return Te(n,r)}(za(t,r),0,r)}catch(e){return Ta(e,t,r)}},__setFontMetrics:function(t,e){F[t]=e},__defineSymbol:$,__defineMacro:pa,__domTree:{Span:N,Anchor:I,SymbolNode:E,SvgNode:L,PathNode:H,LineNode:P}};e.default=Ca}]).default}); \ No newline at end of file
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.katex=t():e.katex=t()}("undefined"!=typeof self?self:this,(function(){return function(){"use strict";var e={d:function(t,r){for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}},t={};e.d(t,{default:function(){return Zn}});var r=function e(t,r){this.position=void 0;var n,a="KaTeX parse error: "+t,i=r&&r.loc;if(i&&i.start<=i.end){var o=i.lexer.input;n=i.start;var s=i.end;n===o.length?a+=" at end of input: ":a+=" at position "+(n+1)+": ";var l=o.slice(n,s).replace(/[^]/g,"$&\u0332");a+=(n>15?"\u2026"+o.slice(n-15,n):o.slice(0,n))+l+(s+15<o.length?o.slice(s,s+15)+"\u2026":o.slice(s))}var h=new Error(a);return h.name="ParseError",h.__proto__=e.prototype,h.position=n,h};r.prototype.__proto__=Error.prototype;var n=r,a=/([A-Z])/g,i={"&":"&amp;",">":"&gt;","<":"&lt;",'"':"&quot;","'":"&#x27;"},o=/[&><"']/g;var s=function e(t){return"ordgroup"===t.type||"color"===t.type?1===t.body.length?e(t.body[0]):t:"font"===t.type?e(t.body):t},l={contains:function(e,t){return-1!==e.indexOf(t)},deflt:function(e,t){return void 0===e?t:e},escape:function(e){return String(e).replace(o,(function(e){return i[e]}))},hyphenate:function(e){return e.replace(a,"-$1").toLowerCase()},getBaseElem:s,isCharacterBox:function(e){var t=s(e);return"mathord"===t.type||"textord"===t.type||"atom"===t.type},protocolFromUrl:function(e){var t=/^\s*([^\\/#]*?)(?::|&#0*58|&#x0*3a)/i.exec(e);return null!=t?t[1]:"_relative"}},h={displayMode:{type:"boolean",description:"Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.",cli:"-d, --display-mode"},output:{type:{enum:["htmlAndMathml","html","mathml"]},description:"Determines the markup language of the output.",cli:"-F, --format <type>"},leqno:{type:"boolean",description:"Render display math in leqno style (left-justified tags)."},fleqn:{type:"boolean",description:"Render display math flush left."},throwOnError:{type:"boolean",default:!0,cli:"-t, --no-throw-on-error",cliDescription:"Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error."},errorColor:{type:"string",default:"#cc0000",cli:"-c, --error-color <color>",cliDescription:"A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.",cliProcessor:function(e){return"#"+e}},macros:{type:"object",cli:"-m, --macro <def>",cliDescription:"Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",cliDefault:[],cliProcessor:function(e,t){return t.push(e),t}},minRuleThickness:{type:"number",description:"Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.",processor:function(e){return Math.max(0,e)},cli:"--min-rule-thickness <size>",cliProcessor:parseFloat},colorIsTextColor:{type:"boolean",description:"Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.",cli:"-b, --color-is-text-color"},strict:{type:[{enum:["warn","ignore","error"]},"boolean","function"],description:"Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.",cli:"-S, --strict",cliDefault:!1},trust:{type:["boolean","function"],description:"Trust the input, enabling all HTML features such as \\url.",cli:"-T, --trust"},maxSize:{type:"number",default:1/0,description:"If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large",processor:function(e){return Math.max(0,e)},cli:"-s, --max-size <n>",cliProcessor:parseInt},maxExpand:{type:"number",default:1e3,description:"Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.",processor:function(e){return Math.max(0,e)},cli:"-e, --max-expand <n>",cliProcessor:function(e){return"Infinity"===e?1/0:parseInt(e)}},globalGroup:{type:"boolean",cli:!1}};function m(e){if(e.default)return e.default;var t=e.type,r=Array.isArray(t)?t[0]:t;if("string"!=typeof r)return r.enum[0];switch(r){case"boolean":return!1;case"string":return"";case"number":return 0;case"object":return{}}}var c=function(){function e(e){for(var t in this.displayMode=void 0,this.output=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0,this.errorColor=void 0,this.macros=void 0,this.minRuleThickness=void 0,this.colorIsTextColor=void 0,this.strict=void 0,this.trust=void 0,this.maxSize=void 0,this.maxExpand=void 0,this.globalGroup=void 0,e=e||{},h)if(h.hasOwnProperty(t)){var r=h[t];this[t]=void 0!==e[t]?r.processor?r.processor(e[t]):e[t]:m(r)}}var t=e.prototype;return t.reportNonstrict=function(e,t,r){var a=this.strict;if("function"==typeof a&&(a=a(e,t,r)),a&&"ignore"!==a){if(!0===a||"error"===a)throw new n("LaTeX-incompatible input and strict mode is set to 'error': "+t+" ["+e+"]",r);"warn"===a?"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+t+" ["+e+"]"):"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '"+a+"': "+t+" ["+e+"]")}},t.useStrictBehavior=function(e,t,r){var n=this.strict;if("function"==typeof n)try{n=n(e,t,r)}catch(e){n="error"}return!(!n||"ignore"===n)&&(!0===n||"error"===n||("warn"===n?("undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+t+" ["+e+"]"),!1):("undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '"+n+"': "+t+" ["+e+"]"),!1)))},t.isTrusted=function(e){e.url&&!e.protocol&&(e.protocol=l.protocolFromUrl(e.url));var t="function"==typeof this.trust?this.trust(e):this.trust;return Boolean(t)},e}(),u=function(){function e(e,t,r){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=e,this.size=t,this.cramped=r}var t=e.prototype;return t.sup=function(){return p[d[this.id]]},t.sub=function(){return p[f[this.id]]},t.fracNum=function(){return p[g[this.id]]},t.fracDen=function(){return p[v[this.id]]},t.cramp=function(){return p[b[this.id]]},t.text=function(){return p[y[this.id]]},t.isTight=function(){return this.size>=2},e}(),p=[new u(0,0,!1),new u(1,0,!0),new u(2,1,!1),new u(3,1,!0),new u(4,2,!1),new u(5,2,!0),new u(6,3,!1),new u(7,3,!0)],d=[4,5,4,5,6,7,6,7],f=[5,5,5,5,7,7,7,7],g=[2,3,4,5,6,7,6,7],v=[3,3,5,5,7,7,7,7],b=[1,1,3,3,5,5,7,7],y=[0,1,2,3,2,3,2,3],x={DISPLAY:p[0],TEXT:p[2],SCRIPT:p[4],SCRIPTSCRIPT:p[6]},w=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"armenian",blocks:[[1328,1423]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}];var k=[];function S(e){for(var t=0;t<k.length;t+=2)if(e>=k[t]&&e<=k[t+1])return!0;return!1}w.forEach((function(e){return e.blocks.forEach((function(e){return k.push.apply(k,e)}))}));var M=80,z={doubleleftarrow:"M262 157\nl10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3\n 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28\n 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5\nc2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5\n 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87\n-86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7\n-2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z\nm8 0v40h399730v-40zm0 194v40h399730v-40z",doublerightarrow:"M399738 392l\n-10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5\n 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88\n-33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68\n-17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18\n-13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782\nc-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3\n-107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z",leftarrow:"M400000 241H110l3-3c68.7-52.7 113.7-120\n 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8\n-5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247\nc-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208\n 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3\n 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202\n l-3-3h399890zM100 241v40h399900v-40z",leftbrace:"M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117\n-45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7\n 5-6 9-10 13-.7 1-7.3 1-20 1H6z",leftbraceunder:"M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13\n 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688\n 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7\n-331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z",leftgroup:"M400000 80\nH435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0\n 435 0h399565z",leftgroupunder:"M400000 262\nH435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219\n 435 219h399565z",leftharpoon:"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3\n-3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5\n-18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7\n-196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z",leftharpoonplus:"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5\n 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3\n-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7\n-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z\nm0 0v40h400000v-40z",leftharpoondown:"M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333\n 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5\n 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667\n-152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z",leftharpoondownplus:"M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12\n 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7\n-2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0\nv40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z",lefthook:"M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5\n-83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3\n-68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21\n 71.5 23h399859zM103 281v-40h399897v40z",leftlinesegment:"M40 281 V428 H0 V94 H40 V241 H400000 v40z\nM40 281 V428 H0 V94 H40 V241 H400000 v40z",leftmapsto:"M40 281 V448H0V74H40V241H400000v40z\nM40 281 V448H0V74H40V241H400000v40z",leftToFrom:"M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23\n-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8\nc28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3\n 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z",longequal:"M0 50 h400000 v40H0z m0 194h40000v40H0z\nM0 50 h400000 v40H0z m0 194h40000v40H0z",midbrace:"M200428 334\nc-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14\n-53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7\n 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11\n 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z",midbraceunder:"M199572 214\nc100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14\n 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3\n 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0\n-5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z",oiintSize1:"M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6\n-320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z\nm368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8\n60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z",oiintSize2:"M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8\n-451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z\nm502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2\nc0 110 84 276 504 276s502.4-166 502.4-276z",oiiintSize1:"M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6\n-480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z\nm525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0\n85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z",oiiintSize2:"M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8\n-707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z\nm770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1\nc0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z",rightarrow:"M0 241v40h399891c-47.3 35.3-84 78-110 128\n-16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20\n 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7\n 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85\n-40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n 151.7 139 205zm0 0v40h399900v-40z",rightbrace:"M400000 542l\n-6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5\ns-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1\nc124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z",rightbraceunder:"M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3\n 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237\n-174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z",rightgroup:"M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0\n 3-1 3-3v-38c-76-158-257-219-435-219H0z",rightgroupunder:"M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18\n 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z",rightharpoon:"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3\n-3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2\n-10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58\n 69.2 92 94.5zm0 0v40h399900v-40z",rightharpoonplus:"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11\n-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7\n 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z\nm0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z",rightharpoondown:"M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8\n 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5\n-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95\n-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z",rightharpoondownplus:"M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8\n 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3\n 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3\n-64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z\nm0-194v40h400000v-40zm0 0v40h400000v-40z",righthook:"M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3\n 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0\n-13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21\n 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z",rightlinesegment:"M399960 241 V94 h40 V428 h-40 V281 H0 v-40z\nM399960 241 V94 h40 V428 h-40 V281 H0 v-40z",rightToFrom:"M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23\n 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32\n-52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142\n-167z M100 147v40h399900v-40zM0 341v40h399900v-40z",twoheadleftarrow:"M0 167c68 40\n 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69\n-70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3\n-40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19\n-37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101\n 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z",twoheadrightarrow:"M400000 167\nc-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3\n 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42\n 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333\n-19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70\n 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z",tilde1:"M200 55.538c-77 0-168 73.953-177 73.953-3 0-7\n-2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0\n 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0\n 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128\n-68.267.847-113-73.952-191-73.952z",tilde2:"M344 55.266c-142 0-300.638 81.316-311.5 86.418\n-8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9\n 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114\nc1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751\n 181.476 676 181.476c-149 0-189-126.21-332-126.21z",tilde3:"M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457\n-11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0\n 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697\n 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696\n -338 0-409-156.573-744-156.573z",tilde4:"M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345\n-11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409\n 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9\n 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409\n -175.236-744-175.236z",vec:"M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5\n3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11\n10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63\n-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1\n-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59\nH213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359\nc-16-25.333-24-45-24-59z",widehat1:"M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22\nc-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z",widehat2:"M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widehat3:"M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widehat4:"M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widecheck1:"M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1,\n-5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z",widecheck2:"M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",widecheck3:"M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",widecheck4:"M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",baraboveleftarrow:"M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202\nc4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5\nc-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130\ns-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47\n121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6\ns2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11\nc0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z\nM100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z",rightarrowabovebar:"M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32\n-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0\n13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39\n-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5\n-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z",baraboveshortleftharpoon:"M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17\nc2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21\nc-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40\nc-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z\nM0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z",rightharpoonaboveshortbar:"M0,241 l0,40c399126,0,399993,0,399993,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z",shortbaraboveleftharpoon:"M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9,\n1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7,\n-152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z\nM93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z",shortrightharpoonabovebar:"M53,241l0,40c398570,0,399437,0,399437,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z"},A=function(){function e(e){this.children=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.children=e,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}var t=e.prototype;return t.hasClass=function(e){return l.contains(this.classes,e)},t.toNode=function(){for(var e=document.createDocumentFragment(),t=0;t<this.children.length;t++)e.appendChild(this.children[t].toNode());return e},t.toMarkup=function(){for(var e="",t=0;t<this.children.length;t++)e+=this.children[t].toMarkup();return e},t.toText=function(){var e=function(e){return e.toText()};return this.children.map(e).join("")},e}(),T={"AMS-Regular":{32:[0,0,0,0,.25],65:[0,.68889,0,0,.72222],66:[0,.68889,0,0,.66667],67:[0,.68889,0,0,.72222],68:[0,.68889,0,0,.72222],69:[0,.68889,0,0,.66667],70:[0,.68889,0,0,.61111],71:[0,.68889,0,0,.77778],72:[0,.68889,0,0,.77778],73:[0,.68889,0,0,.38889],74:[.16667,.68889,0,0,.5],75:[0,.68889,0,0,.77778],76:[0,.68889,0,0,.66667],77:[0,.68889,0,0,.94445],78:[0,.68889,0,0,.72222],79:[.16667,.68889,0,0,.77778],80:[0,.68889,0,0,.61111],81:[.16667,.68889,0,0,.77778],82:[0,.68889,0,0,.72222],83:[0,.68889,0,0,.55556],84:[0,.68889,0,0,.66667],85:[0,.68889,0,0,.72222],86:[0,.68889,0,0,.72222],87:[0,.68889,0,0,1],88:[0,.68889,0,0,.72222],89:[0,.68889,0,0,.72222],90:[0,.68889,0,0,.66667],107:[0,.68889,0,0,.55556],160:[0,0,0,0,.25],165:[0,.675,.025,0,.75],174:[.15559,.69224,0,0,.94666],240:[0,.68889,0,0,.55556],295:[0,.68889,0,0,.54028],710:[0,.825,0,0,2.33334],732:[0,.9,0,0,2.33334],770:[0,.825,0,0,2.33334],771:[0,.9,0,0,2.33334],989:[.08167,.58167,0,0,.77778],1008:[0,.43056,.04028,0,.66667],8245:[0,.54986,0,0,.275],8463:[0,.68889,0,0,.54028],8487:[0,.68889,0,0,.72222],8498:[0,.68889,0,0,.55556],8502:[0,.68889,0,0,.66667],8503:[0,.68889,0,0,.44445],8504:[0,.68889,0,0,.66667],8513:[0,.68889,0,0,.63889],8592:[-.03598,.46402,0,0,.5],8594:[-.03598,.46402,0,0,.5],8602:[-.13313,.36687,0,0,1],8603:[-.13313,.36687,0,0,1],8606:[.01354,.52239,0,0,1],8608:[.01354,.52239,0,0,1],8610:[.01354,.52239,0,0,1.11111],8611:[.01354,.52239,0,0,1.11111],8619:[0,.54986,0,0,1],8620:[0,.54986,0,0,1],8621:[-.13313,.37788,0,0,1.38889],8622:[-.13313,.36687,0,0,1],8624:[0,.69224,0,0,.5],8625:[0,.69224,0,0,.5],8630:[0,.43056,0,0,1],8631:[0,.43056,0,0,1],8634:[.08198,.58198,0,0,.77778],8635:[.08198,.58198,0,0,.77778],8638:[.19444,.69224,0,0,.41667],8639:[.19444,.69224,0,0,.41667],8642:[.19444,.69224,0,0,.41667],8643:[.19444,.69224,0,0,.41667],8644:[.1808,.675,0,0,1],8646:[.1808,.675,0,0,1],8647:[.1808,.675,0,0,1],8648:[.19444,.69224,0,0,.83334],8649:[.1808,.675,0,0,1],8650:[.19444,.69224,0,0,.83334],8651:[.01354,.52239,0,0,1],8652:[.01354,.52239,0,0,1],8653:[-.13313,.36687,0,0,1],8654:[-.13313,.36687,0,0,1],8655:[-.13313,.36687,0,0,1],8666:[.13667,.63667,0,0,1],8667:[.13667,.63667,0,0,1],8669:[-.13313,.37788,0,0,1],8672:[-.064,.437,0,0,1.334],8674:[-.064,.437,0,0,1.334],8705:[0,.825,0,0,.5],8708:[0,.68889,0,0,.55556],8709:[.08167,.58167,0,0,.77778],8717:[0,.43056,0,0,.42917],8722:[-.03598,.46402,0,0,.5],8724:[.08198,.69224,0,0,.77778],8726:[.08167,.58167,0,0,.77778],8733:[0,.69224,0,0,.77778],8736:[0,.69224,0,0,.72222],8737:[0,.69224,0,0,.72222],8738:[.03517,.52239,0,0,.72222],8739:[.08167,.58167,0,0,.22222],8740:[.25142,.74111,0,0,.27778],8741:[.08167,.58167,0,0,.38889],8742:[.25142,.74111,0,0,.5],8756:[0,.69224,0,0,.66667],8757:[0,.69224,0,0,.66667],8764:[-.13313,.36687,0,0,.77778],8765:[-.13313,.37788,0,0,.77778],8769:[-.13313,.36687,0,0,.77778],8770:[-.03625,.46375,0,0,.77778],8774:[.30274,.79383,0,0,.77778],8776:[-.01688,.48312,0,0,.77778],8778:[.08167,.58167,0,0,.77778],8782:[.06062,.54986,0,0,.77778],8783:[.06062,.54986,0,0,.77778],8785:[.08198,.58198,0,0,.77778],8786:[.08198,.58198,0,0,.77778],8787:[.08198,.58198,0,0,.77778],8790:[0,.69224,0,0,.77778],8791:[.22958,.72958,0,0,.77778],8796:[.08198,.91667,0,0,.77778],8806:[.25583,.75583,0,0,.77778],8807:[.25583,.75583,0,0,.77778],8808:[.25142,.75726,0,0,.77778],8809:[.25142,.75726,0,0,.77778],8812:[.25583,.75583,0,0,.5],8814:[.20576,.70576,0,0,.77778],8815:[.20576,.70576,0,0,.77778],8816:[.30274,.79383,0,0,.77778],8817:[.30274,.79383,0,0,.77778],8818:[.22958,.72958,0,0,.77778],8819:[.22958,.72958,0,0,.77778],8822:[.1808,.675,0,0,.77778],8823:[.1808,.675,0,0,.77778],8828:[.13667,.63667,0,0,.77778],8829:[.13667,.63667,0,0,.77778],8830:[.22958,.72958,0,0,.77778],8831:[.22958,.72958,0,0,.77778],8832:[.20576,.70576,0,0,.77778],8833:[.20576,.70576,0,0,.77778],8840:[.30274,.79383,0,0,.77778],8841:[.30274,.79383,0,0,.77778],8842:[.13597,.63597,0,0,.77778],8843:[.13597,.63597,0,0,.77778],8847:[.03517,.54986,0,0,.77778],8848:[.03517,.54986,0,0,.77778],8858:[.08198,.58198,0,0,.77778],8859:[.08198,.58198,0,0,.77778],8861:[.08198,.58198,0,0,.77778],8862:[0,.675,0,0,.77778],8863:[0,.675,0,0,.77778],8864:[0,.675,0,0,.77778],8865:[0,.675,0,0,.77778],8872:[0,.69224,0,0,.61111],8873:[0,.69224,0,0,.72222],8874:[0,.69224,0,0,.88889],8876:[0,.68889,0,0,.61111],8877:[0,.68889,0,0,.61111],8878:[0,.68889,0,0,.72222],8879:[0,.68889,0,0,.72222],8882:[.03517,.54986,0,0,.77778],8883:[.03517,.54986,0,0,.77778],8884:[.13667,.63667,0,0,.77778],8885:[.13667,.63667,0,0,.77778],8888:[0,.54986,0,0,1.11111],8890:[.19444,.43056,0,0,.55556],8891:[.19444,.69224,0,0,.61111],8892:[.19444,.69224,0,0,.61111],8901:[0,.54986,0,0,.27778],8903:[.08167,.58167,0,0,.77778],8905:[.08167,.58167,0,0,.77778],8906:[.08167,.58167,0,0,.77778],8907:[0,.69224,0,0,.77778],8908:[0,.69224,0,0,.77778],8909:[-.03598,.46402,0,0,.77778],8910:[0,.54986,0,0,.76042],8911:[0,.54986,0,0,.76042],8912:[.03517,.54986,0,0,.77778],8913:[.03517,.54986,0,0,.77778],8914:[0,.54986,0,0,.66667],8915:[0,.54986,0,0,.66667],8916:[0,.69224,0,0,.66667],8918:[.0391,.5391,0,0,.77778],8919:[.0391,.5391,0,0,.77778],8920:[.03517,.54986,0,0,1.33334],8921:[.03517,.54986,0,0,1.33334],8922:[.38569,.88569,0,0,.77778],8923:[.38569,.88569,0,0,.77778],8926:[.13667,.63667,0,0,.77778],8927:[.13667,.63667,0,0,.77778],8928:[.30274,.79383,0,0,.77778],8929:[.30274,.79383,0,0,.77778],8934:[.23222,.74111,0,0,.77778],8935:[.23222,.74111,0,0,.77778],8936:[.23222,.74111,0,0,.77778],8937:[.23222,.74111,0,0,.77778],8938:[.20576,.70576,0,0,.77778],8939:[.20576,.70576,0,0,.77778],8940:[.30274,.79383,0,0,.77778],8941:[.30274,.79383,0,0,.77778],8994:[.19444,.69224,0,0,.77778],8995:[.19444,.69224,0,0,.77778],9416:[.15559,.69224,0,0,.90222],9484:[0,.69224,0,0,.5],9488:[0,.69224,0,0,.5],9492:[0,.37788,0,0,.5],9496:[0,.37788,0,0,.5],9585:[.19444,.68889,0,0,.88889],9586:[.19444,.74111,0,0,.88889],9632:[0,.675,0,0,.77778],9633:[0,.675,0,0,.77778],9650:[0,.54986,0,0,.72222],9651:[0,.54986,0,0,.72222],9654:[.03517,.54986,0,0,.77778],9660:[0,.54986,0,0,.72222],9661:[0,.54986,0,0,.72222],9664:[.03517,.54986,0,0,.77778],9674:[.11111,.69224,0,0,.66667],9733:[.19444,.69224,0,0,.94445],10003:[0,.69224,0,0,.83334],10016:[0,.69224,0,0,.83334],10731:[.11111,.69224,0,0,.66667],10846:[.19444,.75583,0,0,.61111],10877:[.13667,.63667,0,0,.77778],10878:[.13667,.63667,0,0,.77778],10885:[.25583,.75583,0,0,.77778],10886:[.25583,.75583,0,0,.77778],10887:[.13597,.63597,0,0,.77778],10888:[.13597,.63597,0,0,.77778],10889:[.26167,.75726,0,0,.77778],10890:[.26167,.75726,0,0,.77778],10891:[.48256,.98256,0,0,.77778],10892:[.48256,.98256,0,0,.77778],10901:[.13667,.63667,0,0,.77778],10902:[.13667,.63667,0,0,.77778],10933:[.25142,.75726,0,0,.77778],10934:[.25142,.75726,0,0,.77778],10935:[.26167,.75726,0,0,.77778],10936:[.26167,.75726,0,0,.77778],10937:[.26167,.75726,0,0,.77778],10938:[.26167,.75726,0,0,.77778],10949:[.25583,.75583,0,0,.77778],10950:[.25583,.75583,0,0,.77778],10955:[.28481,.79383,0,0,.77778],10956:[.28481,.79383,0,0,.77778],57350:[.08167,.58167,0,0,.22222],57351:[.08167,.58167,0,0,.38889],57352:[.08167,.58167,0,0,.77778],57353:[0,.43056,.04028,0,.66667],57356:[.25142,.75726,0,0,.77778],57357:[.25142,.75726,0,0,.77778],57358:[.41951,.91951,0,0,.77778],57359:[.30274,.79383,0,0,.77778],57360:[.30274,.79383,0,0,.77778],57361:[.41951,.91951,0,0,.77778],57366:[.25142,.75726,0,0,.77778],57367:[.25142,.75726,0,0,.77778],57368:[.25142,.75726,0,0,.77778],57369:[.25142,.75726,0,0,.77778],57370:[.13597,.63597,0,0,.77778],57371:[.13597,.63597,0,0,.77778]},"Caligraphic-Regular":{32:[0,0,0,0,.25],65:[0,.68333,0,.19445,.79847],66:[0,.68333,.03041,.13889,.65681],67:[0,.68333,.05834,.13889,.52653],68:[0,.68333,.02778,.08334,.77139],69:[0,.68333,.08944,.11111,.52778],70:[0,.68333,.09931,.11111,.71875],71:[.09722,.68333,.0593,.11111,.59487],72:[0,.68333,.00965,.11111,.84452],73:[0,.68333,.07382,0,.54452],74:[.09722,.68333,.18472,.16667,.67778],75:[0,.68333,.01445,.05556,.76195],76:[0,.68333,0,.13889,.68972],77:[0,.68333,0,.13889,1.2009],78:[0,.68333,.14736,.08334,.82049],79:[0,.68333,.02778,.11111,.79611],80:[0,.68333,.08222,.08334,.69556],81:[.09722,.68333,0,.11111,.81667],82:[0,.68333,0,.08334,.8475],83:[0,.68333,.075,.13889,.60556],84:[0,.68333,.25417,0,.54464],85:[0,.68333,.09931,.08334,.62583],86:[0,.68333,.08222,0,.61278],87:[0,.68333,.08222,.08334,.98778],88:[0,.68333,.14643,.13889,.7133],89:[.09722,.68333,.08222,.08334,.66834],90:[0,.68333,.07944,.13889,.72473],160:[0,0,0,0,.25]},"Fraktur-Regular":{32:[0,0,0,0,.25],33:[0,.69141,0,0,.29574],34:[0,.69141,0,0,.21471],38:[0,.69141,0,0,.73786],39:[0,.69141,0,0,.21201],40:[.24982,.74947,0,0,.38865],41:[.24982,.74947,0,0,.38865],42:[0,.62119,0,0,.27764],43:[.08319,.58283,0,0,.75623],44:[0,.10803,0,0,.27764],45:[.08319,.58283,0,0,.75623],46:[0,.10803,0,0,.27764],47:[.24982,.74947,0,0,.50181],48:[0,.47534,0,0,.50181],49:[0,.47534,0,0,.50181],50:[0,.47534,0,0,.50181],51:[.18906,.47534,0,0,.50181],52:[.18906,.47534,0,0,.50181],53:[.18906,.47534,0,0,.50181],54:[0,.69141,0,0,.50181],55:[.18906,.47534,0,0,.50181],56:[0,.69141,0,0,.50181],57:[.18906,.47534,0,0,.50181],58:[0,.47534,0,0,.21606],59:[.12604,.47534,0,0,.21606],61:[-.13099,.36866,0,0,.75623],63:[0,.69141,0,0,.36245],65:[0,.69141,0,0,.7176],66:[0,.69141,0,0,.88397],67:[0,.69141,0,0,.61254],68:[0,.69141,0,0,.83158],69:[0,.69141,0,0,.66278],70:[.12604,.69141,0,0,.61119],71:[0,.69141,0,0,.78539],72:[.06302,.69141,0,0,.7203],73:[0,.69141,0,0,.55448],74:[.12604,.69141,0,0,.55231],75:[0,.69141,0,0,.66845],76:[0,.69141,0,0,.66602],77:[0,.69141,0,0,1.04953],78:[0,.69141,0,0,.83212],79:[0,.69141,0,0,.82699],80:[.18906,.69141,0,0,.82753],81:[.03781,.69141,0,0,.82699],82:[0,.69141,0,0,.82807],83:[0,.69141,0,0,.82861],84:[0,.69141,0,0,.66899],85:[0,.69141,0,0,.64576],86:[0,.69141,0,0,.83131],87:[0,.69141,0,0,1.04602],88:[0,.69141,0,0,.71922],89:[.18906,.69141,0,0,.83293],90:[.12604,.69141,0,0,.60201],91:[.24982,.74947,0,0,.27764],93:[.24982,.74947,0,0,.27764],94:[0,.69141,0,0,.49965],97:[0,.47534,0,0,.50046],98:[0,.69141,0,0,.51315],99:[0,.47534,0,0,.38946],100:[0,.62119,0,0,.49857],101:[0,.47534,0,0,.40053],102:[.18906,.69141,0,0,.32626],103:[.18906,.47534,0,0,.5037],104:[.18906,.69141,0,0,.52126],105:[0,.69141,0,0,.27899],106:[0,.69141,0,0,.28088],107:[0,.69141,0,0,.38946],108:[0,.69141,0,0,.27953],109:[0,.47534,0,0,.76676],110:[0,.47534,0,0,.52666],111:[0,.47534,0,0,.48885],112:[.18906,.52396,0,0,.50046],113:[.18906,.47534,0,0,.48912],114:[0,.47534,0,0,.38919],115:[0,.47534,0,0,.44266],116:[0,.62119,0,0,.33301],117:[0,.47534,0,0,.5172],118:[0,.52396,0,0,.5118],119:[0,.52396,0,0,.77351],120:[.18906,.47534,0,0,.38865],121:[.18906,.47534,0,0,.49884],122:[.18906,.47534,0,0,.39054],160:[0,0,0,0,.25],8216:[0,.69141,0,0,.21471],8217:[0,.69141,0,0,.21471],58112:[0,.62119,0,0,.49749],58113:[0,.62119,0,0,.4983],58114:[.18906,.69141,0,0,.33328],58115:[.18906,.69141,0,0,.32923],58116:[.18906,.47534,0,0,.50343],58117:[0,.69141,0,0,.33301],58118:[0,.62119,0,0,.33409],58119:[0,.47534,0,0,.50073]},"Main-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.35],34:[0,.69444,0,0,.60278],35:[.19444,.69444,0,0,.95833],36:[.05556,.75,0,0,.575],37:[.05556,.75,0,0,.95833],38:[0,.69444,0,0,.89444],39:[0,.69444,0,0,.31944],40:[.25,.75,0,0,.44722],41:[.25,.75,0,0,.44722],42:[0,.75,0,0,.575],43:[.13333,.63333,0,0,.89444],44:[.19444,.15556,0,0,.31944],45:[0,.44444,0,0,.38333],46:[0,.15556,0,0,.31944],47:[.25,.75,0,0,.575],48:[0,.64444,0,0,.575],49:[0,.64444,0,0,.575],50:[0,.64444,0,0,.575],51:[0,.64444,0,0,.575],52:[0,.64444,0,0,.575],53:[0,.64444,0,0,.575],54:[0,.64444,0,0,.575],55:[0,.64444,0,0,.575],56:[0,.64444,0,0,.575],57:[0,.64444,0,0,.575],58:[0,.44444,0,0,.31944],59:[.19444,.44444,0,0,.31944],60:[.08556,.58556,0,0,.89444],61:[-.10889,.39111,0,0,.89444],62:[.08556,.58556,0,0,.89444],63:[0,.69444,0,0,.54305],64:[0,.69444,0,0,.89444],65:[0,.68611,0,0,.86944],66:[0,.68611,0,0,.81805],67:[0,.68611,0,0,.83055],68:[0,.68611,0,0,.88194],69:[0,.68611,0,0,.75555],70:[0,.68611,0,0,.72361],71:[0,.68611,0,0,.90416],72:[0,.68611,0,0,.9],73:[0,.68611,0,0,.43611],74:[0,.68611,0,0,.59444],75:[0,.68611,0,0,.90138],76:[0,.68611,0,0,.69166],77:[0,.68611,0,0,1.09166],78:[0,.68611,0,0,.9],79:[0,.68611,0,0,.86388],80:[0,.68611,0,0,.78611],81:[.19444,.68611,0,0,.86388],82:[0,.68611,0,0,.8625],83:[0,.68611,0,0,.63889],84:[0,.68611,0,0,.8],85:[0,.68611,0,0,.88472],86:[0,.68611,.01597,0,.86944],87:[0,.68611,.01597,0,1.18888],88:[0,.68611,0,0,.86944],89:[0,.68611,.02875,0,.86944],90:[0,.68611,0,0,.70277],91:[.25,.75,0,0,.31944],92:[.25,.75,0,0,.575],93:[.25,.75,0,0,.31944],94:[0,.69444,0,0,.575],95:[.31,.13444,.03194,0,.575],97:[0,.44444,0,0,.55902],98:[0,.69444,0,0,.63889],99:[0,.44444,0,0,.51111],100:[0,.69444,0,0,.63889],101:[0,.44444,0,0,.52708],102:[0,.69444,.10903,0,.35139],103:[.19444,.44444,.01597,0,.575],104:[0,.69444,0,0,.63889],105:[0,.69444,0,0,.31944],106:[.19444,.69444,0,0,.35139],107:[0,.69444,0,0,.60694],108:[0,.69444,0,0,.31944],109:[0,.44444,0,0,.95833],110:[0,.44444,0,0,.63889],111:[0,.44444,0,0,.575],112:[.19444,.44444,0,0,.63889],113:[.19444,.44444,0,0,.60694],114:[0,.44444,0,0,.47361],115:[0,.44444,0,0,.45361],116:[0,.63492,0,0,.44722],117:[0,.44444,0,0,.63889],118:[0,.44444,.01597,0,.60694],119:[0,.44444,.01597,0,.83055],120:[0,.44444,0,0,.60694],121:[.19444,.44444,.01597,0,.60694],122:[0,.44444,0,0,.51111],123:[.25,.75,0,0,.575],124:[.25,.75,0,0,.31944],125:[.25,.75,0,0,.575],126:[.35,.34444,0,0,.575],160:[0,0,0,0,.25],163:[0,.69444,0,0,.86853],168:[0,.69444,0,0,.575],172:[0,.44444,0,0,.76666],176:[0,.69444,0,0,.86944],177:[.13333,.63333,0,0,.89444],184:[.17014,0,0,0,.51111],198:[0,.68611,0,0,1.04166],215:[.13333,.63333,0,0,.89444],216:[.04861,.73472,0,0,.89444],223:[0,.69444,0,0,.59722],230:[0,.44444,0,0,.83055],247:[.13333,.63333,0,0,.89444],248:[.09722,.54167,0,0,.575],305:[0,.44444,0,0,.31944],338:[0,.68611,0,0,1.16944],339:[0,.44444,0,0,.89444],567:[.19444,.44444,0,0,.35139],710:[0,.69444,0,0,.575],711:[0,.63194,0,0,.575],713:[0,.59611,0,0,.575],714:[0,.69444,0,0,.575],715:[0,.69444,0,0,.575],728:[0,.69444,0,0,.575],729:[0,.69444,0,0,.31944],730:[0,.69444,0,0,.86944],732:[0,.69444,0,0,.575],733:[0,.69444,0,0,.575],915:[0,.68611,0,0,.69166],916:[0,.68611,0,0,.95833],920:[0,.68611,0,0,.89444],923:[0,.68611,0,0,.80555],926:[0,.68611,0,0,.76666],928:[0,.68611,0,0,.9],931:[0,.68611,0,0,.83055],933:[0,.68611,0,0,.89444],934:[0,.68611,0,0,.83055],936:[0,.68611,0,0,.89444],937:[0,.68611,0,0,.83055],8211:[0,.44444,.03194,0,.575],8212:[0,.44444,.03194,0,1.14999],8216:[0,.69444,0,0,.31944],8217:[0,.69444,0,0,.31944],8220:[0,.69444,0,0,.60278],8221:[0,.69444,0,0,.60278],8224:[.19444,.69444,0,0,.51111],8225:[.19444,.69444,0,0,.51111],8242:[0,.55556,0,0,.34444],8407:[0,.72444,.15486,0,.575],8463:[0,.69444,0,0,.66759],8465:[0,.69444,0,0,.83055],8467:[0,.69444,0,0,.47361],8472:[.19444,.44444,0,0,.74027],8476:[0,.69444,0,0,.83055],8501:[0,.69444,0,0,.70277],8592:[-.10889,.39111,0,0,1.14999],8593:[.19444,.69444,0,0,.575],8594:[-.10889,.39111,0,0,1.14999],8595:[.19444,.69444,0,0,.575],8596:[-.10889,.39111,0,0,1.14999],8597:[.25,.75,0,0,.575],8598:[.19444,.69444,0,0,1.14999],8599:[.19444,.69444,0,0,1.14999],8600:[.19444,.69444,0,0,1.14999],8601:[.19444,.69444,0,0,1.14999],8636:[-.10889,.39111,0,0,1.14999],8637:[-.10889,.39111,0,0,1.14999],8640:[-.10889,.39111,0,0,1.14999],8641:[-.10889,.39111,0,0,1.14999],8656:[-.10889,.39111,0,0,1.14999],8657:[.19444,.69444,0,0,.70277],8658:[-.10889,.39111,0,0,1.14999],8659:[.19444,.69444,0,0,.70277],8660:[-.10889,.39111,0,0,1.14999],8661:[.25,.75,0,0,.70277],8704:[0,.69444,0,0,.63889],8706:[0,.69444,.06389,0,.62847],8707:[0,.69444,0,0,.63889],8709:[.05556,.75,0,0,.575],8711:[0,.68611,0,0,.95833],8712:[.08556,.58556,0,0,.76666],8715:[.08556,.58556,0,0,.76666],8722:[.13333,.63333,0,0,.89444],8723:[.13333,.63333,0,0,.89444],8725:[.25,.75,0,0,.575],8726:[.25,.75,0,0,.575],8727:[-.02778,.47222,0,0,.575],8728:[-.02639,.47361,0,0,.575],8729:[-.02639,.47361,0,0,.575],8730:[.18,.82,0,0,.95833],8733:[0,.44444,0,0,.89444],8734:[0,.44444,0,0,1.14999],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.31944],8741:[.25,.75,0,0,.575],8743:[0,.55556,0,0,.76666],8744:[0,.55556,0,0,.76666],8745:[0,.55556,0,0,.76666],8746:[0,.55556,0,0,.76666],8747:[.19444,.69444,.12778,0,.56875],8764:[-.10889,.39111,0,0,.89444],8768:[.19444,.69444,0,0,.31944],8771:[.00222,.50222,0,0,.89444],8773:[.027,.638,0,0,.894],8776:[.02444,.52444,0,0,.89444],8781:[.00222,.50222,0,0,.89444],8801:[.00222,.50222,0,0,.89444],8804:[.19667,.69667,0,0,.89444],8805:[.19667,.69667,0,0,.89444],8810:[.08556,.58556,0,0,1.14999],8811:[.08556,.58556,0,0,1.14999],8826:[.08556,.58556,0,0,.89444],8827:[.08556,.58556,0,0,.89444],8834:[.08556,.58556,0,0,.89444],8835:[.08556,.58556,0,0,.89444],8838:[.19667,.69667,0,0,.89444],8839:[.19667,.69667,0,0,.89444],8846:[0,.55556,0,0,.76666],8849:[.19667,.69667,0,0,.89444],8850:[.19667,.69667,0,0,.89444],8851:[0,.55556,0,0,.76666],8852:[0,.55556,0,0,.76666],8853:[.13333,.63333,0,0,.89444],8854:[.13333,.63333,0,0,.89444],8855:[.13333,.63333,0,0,.89444],8856:[.13333,.63333,0,0,.89444],8857:[.13333,.63333,0,0,.89444],8866:[0,.69444,0,0,.70277],8867:[0,.69444,0,0,.70277],8868:[0,.69444,0,0,.89444],8869:[0,.69444,0,0,.89444],8900:[-.02639,.47361,0,0,.575],8901:[-.02639,.47361,0,0,.31944],8902:[-.02778,.47222,0,0,.575],8968:[.25,.75,0,0,.51111],8969:[.25,.75,0,0,.51111],8970:[.25,.75,0,0,.51111],8971:[.25,.75,0,0,.51111],8994:[-.13889,.36111,0,0,1.14999],8995:[-.13889,.36111,0,0,1.14999],9651:[.19444,.69444,0,0,1.02222],9657:[-.02778,.47222,0,0,.575],9661:[.19444,.69444,0,0,1.02222],9667:[-.02778,.47222,0,0,.575],9711:[.19444,.69444,0,0,1.14999],9824:[.12963,.69444,0,0,.89444],9825:[.12963,.69444,0,0,.89444],9826:[.12963,.69444,0,0,.89444],9827:[.12963,.69444,0,0,.89444],9837:[0,.75,0,0,.44722],9838:[.19444,.69444,0,0,.44722],9839:[.19444,.69444,0,0,.44722],10216:[.25,.75,0,0,.44722],10217:[.25,.75,0,0,.44722],10815:[0,.68611,0,0,.9],10927:[.19667,.69667,0,0,.89444],10928:[.19667,.69667,0,0,.89444],57376:[.19444,.69444,0,0,0]},"Main-BoldItalic":{32:[0,0,0,0,.25],33:[0,.69444,.11417,0,.38611],34:[0,.69444,.07939,0,.62055],35:[.19444,.69444,.06833,0,.94444],37:[.05556,.75,.12861,0,.94444],38:[0,.69444,.08528,0,.88555],39:[0,.69444,.12945,0,.35555],40:[.25,.75,.15806,0,.47333],41:[.25,.75,.03306,0,.47333],42:[0,.75,.14333,0,.59111],43:[.10333,.60333,.03306,0,.88555],44:[.19444,.14722,0,0,.35555],45:[0,.44444,.02611,0,.41444],46:[0,.14722,0,0,.35555],47:[.25,.75,.15806,0,.59111],48:[0,.64444,.13167,0,.59111],49:[0,.64444,.13167,0,.59111],50:[0,.64444,.13167,0,.59111],51:[0,.64444,.13167,0,.59111],52:[.19444,.64444,.13167,0,.59111],53:[0,.64444,.13167,0,.59111],54:[0,.64444,.13167,0,.59111],55:[.19444,.64444,.13167,0,.59111],56:[0,.64444,.13167,0,.59111],57:[0,.64444,.13167,0,.59111],58:[0,.44444,.06695,0,.35555],59:[.19444,.44444,.06695,0,.35555],61:[-.10889,.39111,.06833,0,.88555],63:[0,.69444,.11472,0,.59111],64:[0,.69444,.09208,0,.88555],65:[0,.68611,0,0,.86555],66:[0,.68611,.0992,0,.81666],67:[0,.68611,.14208,0,.82666],68:[0,.68611,.09062,0,.87555],69:[0,.68611,.11431,0,.75666],70:[0,.68611,.12903,0,.72722],71:[0,.68611,.07347,0,.89527],72:[0,.68611,.17208,0,.8961],73:[0,.68611,.15681,0,.47166],74:[0,.68611,.145,0,.61055],75:[0,.68611,.14208,0,.89499],76:[0,.68611,0,0,.69777],77:[0,.68611,.17208,0,1.07277],78:[0,.68611,.17208,0,.8961],79:[0,.68611,.09062,0,.85499],80:[0,.68611,.0992,0,.78721],81:[.19444,.68611,.09062,0,.85499],82:[0,.68611,.02559,0,.85944],83:[0,.68611,.11264,0,.64999],84:[0,.68611,.12903,0,.7961],85:[0,.68611,.17208,0,.88083],86:[0,.68611,.18625,0,.86555],87:[0,.68611,.18625,0,1.15999],88:[0,.68611,.15681,0,.86555],89:[0,.68611,.19803,0,.86555],90:[0,.68611,.14208,0,.70888],91:[.25,.75,.1875,0,.35611],93:[.25,.75,.09972,0,.35611],94:[0,.69444,.06709,0,.59111],95:[.31,.13444,.09811,0,.59111],97:[0,.44444,.09426,0,.59111],98:[0,.69444,.07861,0,.53222],99:[0,.44444,.05222,0,.53222],100:[0,.69444,.10861,0,.59111],101:[0,.44444,.085,0,.53222],102:[.19444,.69444,.21778,0,.4],103:[.19444,.44444,.105,0,.53222],104:[0,.69444,.09426,0,.59111],105:[0,.69326,.11387,0,.35555],106:[.19444,.69326,.1672,0,.35555],107:[0,.69444,.11111,0,.53222],108:[0,.69444,.10861,0,.29666],109:[0,.44444,.09426,0,.94444],110:[0,.44444,.09426,0,.64999],111:[0,.44444,.07861,0,.59111],112:[.19444,.44444,.07861,0,.59111],113:[.19444,.44444,.105,0,.53222],114:[0,.44444,.11111,0,.50167],115:[0,.44444,.08167,0,.48694],116:[0,.63492,.09639,0,.385],117:[0,.44444,.09426,0,.62055],118:[0,.44444,.11111,0,.53222],119:[0,.44444,.11111,0,.76777],120:[0,.44444,.12583,0,.56055],121:[.19444,.44444,.105,0,.56166],122:[0,.44444,.13889,0,.49055],126:[.35,.34444,.11472,0,.59111],160:[0,0,0,0,.25],168:[0,.69444,.11473,0,.59111],176:[0,.69444,0,0,.94888],184:[.17014,0,0,0,.53222],198:[0,.68611,.11431,0,1.02277],216:[.04861,.73472,.09062,0,.88555],223:[.19444,.69444,.09736,0,.665],230:[0,.44444,.085,0,.82666],248:[.09722,.54167,.09458,0,.59111],305:[0,.44444,.09426,0,.35555],338:[0,.68611,.11431,0,1.14054],339:[0,.44444,.085,0,.82666],567:[.19444,.44444,.04611,0,.385],710:[0,.69444,.06709,0,.59111],711:[0,.63194,.08271,0,.59111],713:[0,.59444,.10444,0,.59111],714:[0,.69444,.08528,0,.59111],715:[0,.69444,0,0,.59111],728:[0,.69444,.10333,0,.59111],729:[0,.69444,.12945,0,.35555],730:[0,.69444,0,0,.94888],732:[0,.69444,.11472,0,.59111],733:[0,.69444,.11472,0,.59111],915:[0,.68611,.12903,0,.69777],916:[0,.68611,0,0,.94444],920:[0,.68611,.09062,0,.88555],923:[0,.68611,0,0,.80666],926:[0,.68611,.15092,0,.76777],928:[0,.68611,.17208,0,.8961],931:[0,.68611,.11431,0,.82666],933:[0,.68611,.10778,0,.88555],934:[0,.68611,.05632,0,.82666],936:[0,.68611,.10778,0,.88555],937:[0,.68611,.0992,0,.82666],8211:[0,.44444,.09811,0,.59111],8212:[0,.44444,.09811,0,1.18221],8216:[0,.69444,.12945,0,.35555],8217:[0,.69444,.12945,0,.35555],8220:[0,.69444,.16772,0,.62055],8221:[0,.69444,.07939,0,.62055]},"Main-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.12417,0,.30667],34:[0,.69444,.06961,0,.51444],35:[.19444,.69444,.06616,0,.81777],37:[.05556,.75,.13639,0,.81777],38:[0,.69444,.09694,0,.76666],39:[0,.69444,.12417,0,.30667],40:[.25,.75,.16194,0,.40889],41:[.25,.75,.03694,0,.40889],42:[0,.75,.14917,0,.51111],43:[.05667,.56167,.03694,0,.76666],44:[.19444,.10556,0,0,.30667],45:[0,.43056,.02826,0,.35778],46:[0,.10556,0,0,.30667],47:[.25,.75,.16194,0,.51111],48:[0,.64444,.13556,0,.51111],49:[0,.64444,.13556,0,.51111],50:[0,.64444,.13556,0,.51111],51:[0,.64444,.13556,0,.51111],52:[.19444,.64444,.13556,0,.51111],53:[0,.64444,.13556,0,.51111],54:[0,.64444,.13556,0,.51111],55:[.19444,.64444,.13556,0,.51111],56:[0,.64444,.13556,0,.51111],57:[0,.64444,.13556,0,.51111],58:[0,.43056,.0582,0,.30667],59:[.19444,.43056,.0582,0,.30667],61:[-.13313,.36687,.06616,0,.76666],63:[0,.69444,.1225,0,.51111],64:[0,.69444,.09597,0,.76666],65:[0,.68333,0,0,.74333],66:[0,.68333,.10257,0,.70389],67:[0,.68333,.14528,0,.71555],68:[0,.68333,.09403,0,.755],69:[0,.68333,.12028,0,.67833],70:[0,.68333,.13305,0,.65277],71:[0,.68333,.08722,0,.77361],72:[0,.68333,.16389,0,.74333],73:[0,.68333,.15806,0,.38555],74:[0,.68333,.14028,0,.525],75:[0,.68333,.14528,0,.76888],76:[0,.68333,0,0,.62722],77:[0,.68333,.16389,0,.89666],78:[0,.68333,.16389,0,.74333],79:[0,.68333,.09403,0,.76666],80:[0,.68333,.10257,0,.67833],81:[.19444,.68333,.09403,0,.76666],82:[0,.68333,.03868,0,.72944],83:[0,.68333,.11972,0,.56222],84:[0,.68333,.13305,0,.71555],85:[0,.68333,.16389,0,.74333],86:[0,.68333,.18361,0,.74333],87:[0,.68333,.18361,0,.99888],88:[0,.68333,.15806,0,.74333],89:[0,.68333,.19383,0,.74333],90:[0,.68333,.14528,0,.61333],91:[.25,.75,.1875,0,.30667],93:[.25,.75,.10528,0,.30667],94:[0,.69444,.06646,0,.51111],95:[.31,.12056,.09208,0,.51111],97:[0,.43056,.07671,0,.51111],98:[0,.69444,.06312,0,.46],99:[0,.43056,.05653,0,.46],100:[0,.69444,.10333,0,.51111],101:[0,.43056,.07514,0,.46],102:[.19444,.69444,.21194,0,.30667],103:[.19444,.43056,.08847,0,.46],104:[0,.69444,.07671,0,.51111],105:[0,.65536,.1019,0,.30667],106:[.19444,.65536,.14467,0,.30667],107:[0,.69444,.10764,0,.46],108:[0,.69444,.10333,0,.25555],109:[0,.43056,.07671,0,.81777],110:[0,.43056,.07671,0,.56222],111:[0,.43056,.06312,0,.51111],112:[.19444,.43056,.06312,0,.51111],113:[.19444,.43056,.08847,0,.46],114:[0,.43056,.10764,0,.42166],115:[0,.43056,.08208,0,.40889],116:[0,.61508,.09486,0,.33222],117:[0,.43056,.07671,0,.53666],118:[0,.43056,.10764,0,.46],119:[0,.43056,.10764,0,.66444],120:[0,.43056,.12042,0,.46389],121:[.19444,.43056,.08847,0,.48555],122:[0,.43056,.12292,0,.40889],126:[.35,.31786,.11585,0,.51111],160:[0,0,0,0,.25],168:[0,.66786,.10474,0,.51111],176:[0,.69444,0,0,.83129],184:[.17014,0,0,0,.46],198:[0,.68333,.12028,0,.88277],216:[.04861,.73194,.09403,0,.76666],223:[.19444,.69444,.10514,0,.53666],230:[0,.43056,.07514,0,.71555],248:[.09722,.52778,.09194,0,.51111],338:[0,.68333,.12028,0,.98499],339:[0,.43056,.07514,0,.71555],710:[0,.69444,.06646,0,.51111],711:[0,.62847,.08295,0,.51111],713:[0,.56167,.10333,0,.51111],714:[0,.69444,.09694,0,.51111],715:[0,.69444,0,0,.51111],728:[0,.69444,.10806,0,.51111],729:[0,.66786,.11752,0,.30667],730:[0,.69444,0,0,.83129],732:[0,.66786,.11585,0,.51111],733:[0,.69444,.1225,0,.51111],915:[0,.68333,.13305,0,.62722],916:[0,.68333,0,0,.81777],920:[0,.68333,.09403,0,.76666],923:[0,.68333,0,0,.69222],926:[0,.68333,.15294,0,.66444],928:[0,.68333,.16389,0,.74333],931:[0,.68333,.12028,0,.71555],933:[0,.68333,.11111,0,.76666],934:[0,.68333,.05986,0,.71555],936:[0,.68333,.11111,0,.76666],937:[0,.68333,.10257,0,.71555],8211:[0,.43056,.09208,0,.51111],8212:[0,.43056,.09208,0,1.02222],8216:[0,.69444,.12417,0,.30667],8217:[0,.69444,.12417,0,.30667],8220:[0,.69444,.1685,0,.51444],8221:[0,.69444,.06961,0,.51444],8463:[0,.68889,0,0,.54028]},"Main-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.27778],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.77778],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.19444,.10556,0,0,.27778],45:[0,.43056,0,0,.33333],46:[0,.10556,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.64444,0,0,.5],49:[0,.64444,0,0,.5],50:[0,.64444,0,0,.5],51:[0,.64444,0,0,.5],52:[0,.64444,0,0,.5],53:[0,.64444,0,0,.5],54:[0,.64444,0,0,.5],55:[0,.64444,0,0,.5],56:[0,.64444,0,0,.5],57:[0,.64444,0,0,.5],58:[0,.43056,0,0,.27778],59:[.19444,.43056,0,0,.27778],60:[.0391,.5391,0,0,.77778],61:[-.13313,.36687,0,0,.77778],62:[.0391,.5391,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.77778],65:[0,.68333,0,0,.75],66:[0,.68333,0,0,.70834],67:[0,.68333,0,0,.72222],68:[0,.68333,0,0,.76389],69:[0,.68333,0,0,.68056],70:[0,.68333,0,0,.65278],71:[0,.68333,0,0,.78472],72:[0,.68333,0,0,.75],73:[0,.68333,0,0,.36111],74:[0,.68333,0,0,.51389],75:[0,.68333,0,0,.77778],76:[0,.68333,0,0,.625],77:[0,.68333,0,0,.91667],78:[0,.68333,0,0,.75],79:[0,.68333,0,0,.77778],80:[0,.68333,0,0,.68056],81:[.19444,.68333,0,0,.77778],82:[0,.68333,0,0,.73611],83:[0,.68333,0,0,.55556],84:[0,.68333,0,0,.72222],85:[0,.68333,0,0,.75],86:[0,.68333,.01389,0,.75],87:[0,.68333,.01389,0,1.02778],88:[0,.68333,0,0,.75],89:[0,.68333,.025,0,.75],90:[0,.68333,0,0,.61111],91:[.25,.75,0,0,.27778],92:[.25,.75,0,0,.5],93:[.25,.75,0,0,.27778],94:[0,.69444,0,0,.5],95:[.31,.12056,.02778,0,.5],97:[0,.43056,0,0,.5],98:[0,.69444,0,0,.55556],99:[0,.43056,0,0,.44445],100:[0,.69444,0,0,.55556],101:[0,.43056,0,0,.44445],102:[0,.69444,.07778,0,.30556],103:[.19444,.43056,.01389,0,.5],104:[0,.69444,0,0,.55556],105:[0,.66786,0,0,.27778],106:[.19444,.66786,0,0,.30556],107:[0,.69444,0,0,.52778],108:[0,.69444,0,0,.27778],109:[0,.43056,0,0,.83334],110:[0,.43056,0,0,.55556],111:[0,.43056,0,0,.5],112:[.19444,.43056,0,0,.55556],113:[.19444,.43056,0,0,.52778],114:[0,.43056,0,0,.39167],115:[0,.43056,0,0,.39445],116:[0,.61508,0,0,.38889],117:[0,.43056,0,0,.55556],118:[0,.43056,.01389,0,.52778],119:[0,.43056,.01389,0,.72222],120:[0,.43056,0,0,.52778],121:[.19444,.43056,.01389,0,.52778],122:[0,.43056,0,0,.44445],123:[.25,.75,0,0,.5],124:[.25,.75,0,0,.27778],125:[.25,.75,0,0,.5],126:[.35,.31786,0,0,.5],160:[0,0,0,0,.25],163:[0,.69444,0,0,.76909],167:[.19444,.69444,0,0,.44445],168:[0,.66786,0,0,.5],172:[0,.43056,0,0,.66667],176:[0,.69444,0,0,.75],177:[.08333,.58333,0,0,.77778],182:[.19444,.69444,0,0,.61111],184:[.17014,0,0,0,.44445],198:[0,.68333,0,0,.90278],215:[.08333,.58333,0,0,.77778],216:[.04861,.73194,0,0,.77778],223:[0,.69444,0,0,.5],230:[0,.43056,0,0,.72222],247:[.08333,.58333,0,0,.77778],248:[.09722,.52778,0,0,.5],305:[0,.43056,0,0,.27778],338:[0,.68333,0,0,1.01389],339:[0,.43056,0,0,.77778],567:[.19444,.43056,0,0,.30556],710:[0,.69444,0,0,.5],711:[0,.62847,0,0,.5],713:[0,.56778,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.66786,0,0,.27778],730:[0,.69444,0,0,.75],732:[0,.66786,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.68333,0,0,.625],916:[0,.68333,0,0,.83334],920:[0,.68333,0,0,.77778],923:[0,.68333,0,0,.69445],926:[0,.68333,0,0,.66667],928:[0,.68333,0,0,.75],931:[0,.68333,0,0,.72222],933:[0,.68333,0,0,.77778],934:[0,.68333,0,0,.72222],936:[0,.68333,0,0,.77778],937:[0,.68333,0,0,.72222],8211:[0,.43056,.02778,0,.5],8212:[0,.43056,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5],8224:[.19444,.69444,0,0,.44445],8225:[.19444,.69444,0,0,.44445],8230:[0,.123,0,0,1.172],8242:[0,.55556,0,0,.275],8407:[0,.71444,.15382,0,.5],8463:[0,.68889,0,0,.54028],8465:[0,.69444,0,0,.72222],8467:[0,.69444,0,.11111,.41667],8472:[.19444,.43056,0,.11111,.63646],8476:[0,.69444,0,0,.72222],8501:[0,.69444,0,0,.61111],8592:[-.13313,.36687,0,0,1],8593:[.19444,.69444,0,0,.5],8594:[-.13313,.36687,0,0,1],8595:[.19444,.69444,0,0,.5],8596:[-.13313,.36687,0,0,1],8597:[.25,.75,0,0,.5],8598:[.19444,.69444,0,0,1],8599:[.19444,.69444,0,0,1],8600:[.19444,.69444,0,0,1],8601:[.19444,.69444,0,0,1],8614:[.011,.511,0,0,1],8617:[.011,.511,0,0,1.126],8618:[.011,.511,0,0,1.126],8636:[-.13313,.36687,0,0,1],8637:[-.13313,.36687,0,0,1],8640:[-.13313,.36687,0,0,1],8641:[-.13313,.36687,0,0,1],8652:[.011,.671,0,0,1],8656:[-.13313,.36687,0,0,1],8657:[.19444,.69444,0,0,.61111],8658:[-.13313,.36687,0,0,1],8659:[.19444,.69444,0,0,.61111],8660:[-.13313,.36687,0,0,1],8661:[.25,.75,0,0,.61111],8704:[0,.69444,0,0,.55556],8706:[0,.69444,.05556,.08334,.5309],8707:[0,.69444,0,0,.55556],8709:[.05556,.75,0,0,.5],8711:[0,.68333,0,0,.83334],8712:[.0391,.5391,0,0,.66667],8715:[.0391,.5391,0,0,.66667],8722:[.08333,.58333,0,0,.77778],8723:[.08333,.58333,0,0,.77778],8725:[.25,.75,0,0,.5],8726:[.25,.75,0,0,.5],8727:[-.03472,.46528,0,0,.5],8728:[-.05555,.44445,0,0,.5],8729:[-.05555,.44445,0,0,.5],8730:[.2,.8,0,0,.83334],8733:[0,.43056,0,0,.77778],8734:[0,.43056,0,0,1],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.27778],8741:[.25,.75,0,0,.5],8743:[0,.55556,0,0,.66667],8744:[0,.55556,0,0,.66667],8745:[0,.55556,0,0,.66667],8746:[0,.55556,0,0,.66667],8747:[.19444,.69444,.11111,0,.41667],8764:[-.13313,.36687,0,0,.77778],8768:[.19444,.69444,0,0,.27778],8771:[-.03625,.46375,0,0,.77778],8773:[-.022,.589,0,0,.778],8776:[-.01688,.48312,0,0,.77778],8781:[-.03625,.46375,0,0,.77778],8784:[-.133,.673,0,0,.778],8801:[-.03625,.46375,0,0,.77778],8804:[.13597,.63597,0,0,.77778],8805:[.13597,.63597,0,0,.77778],8810:[.0391,.5391,0,0,1],8811:[.0391,.5391,0,0,1],8826:[.0391,.5391,0,0,.77778],8827:[.0391,.5391,0,0,.77778],8834:[.0391,.5391,0,0,.77778],8835:[.0391,.5391,0,0,.77778],8838:[.13597,.63597,0,0,.77778],8839:[.13597,.63597,0,0,.77778],8846:[0,.55556,0,0,.66667],8849:[.13597,.63597,0,0,.77778],8850:[.13597,.63597,0,0,.77778],8851:[0,.55556,0,0,.66667],8852:[0,.55556,0,0,.66667],8853:[.08333,.58333,0,0,.77778],8854:[.08333,.58333,0,0,.77778],8855:[.08333,.58333,0,0,.77778],8856:[.08333,.58333,0,0,.77778],8857:[.08333,.58333,0,0,.77778],8866:[0,.69444,0,0,.61111],8867:[0,.69444,0,0,.61111],8868:[0,.69444,0,0,.77778],8869:[0,.69444,0,0,.77778],8872:[.249,.75,0,0,.867],8900:[-.05555,.44445,0,0,.5],8901:[-.05555,.44445,0,0,.27778],8902:[-.03472,.46528,0,0,.5],8904:[.005,.505,0,0,.9],8942:[.03,.903,0,0,.278],8943:[-.19,.313,0,0,1.172],8945:[-.1,.823,0,0,1.282],8968:[.25,.75,0,0,.44445],8969:[.25,.75,0,0,.44445],8970:[.25,.75,0,0,.44445],8971:[.25,.75,0,0,.44445],8994:[-.14236,.35764,0,0,1],8995:[-.14236,.35764,0,0,1],9136:[.244,.744,0,0,.412],9137:[.244,.745,0,0,.412],9651:[.19444,.69444,0,0,.88889],9657:[-.03472,.46528,0,0,.5],9661:[.19444,.69444,0,0,.88889],9667:[-.03472,.46528,0,0,.5],9711:[.19444,.69444,0,0,1],9824:[.12963,.69444,0,0,.77778],9825:[.12963,.69444,0,0,.77778],9826:[.12963,.69444,0,0,.77778],9827:[.12963,.69444,0,0,.77778],9837:[0,.75,0,0,.38889],9838:[.19444,.69444,0,0,.38889],9839:[.19444,.69444,0,0,.38889],10216:[.25,.75,0,0,.38889],10217:[.25,.75,0,0,.38889],10222:[.244,.744,0,0,.412],10223:[.244,.745,0,0,.412],10229:[.011,.511,0,0,1.609],10230:[.011,.511,0,0,1.638],10231:[.011,.511,0,0,1.859],10232:[.024,.525,0,0,1.609],10233:[.024,.525,0,0,1.638],10234:[.024,.525,0,0,1.858],10236:[.011,.511,0,0,1.638],10815:[0,.68333,0,0,.75],10927:[.13597,.63597,0,0,.77778],10928:[.13597,.63597,0,0,.77778],57376:[.19444,.69444,0,0,0]},"Math-BoldItalic":{32:[0,0,0,0,.25],48:[0,.44444,0,0,.575],49:[0,.44444,0,0,.575],50:[0,.44444,0,0,.575],51:[.19444,.44444,0,0,.575],52:[.19444,.44444,0,0,.575],53:[.19444,.44444,0,0,.575],54:[0,.64444,0,0,.575],55:[.19444,.44444,0,0,.575],56:[0,.64444,0,0,.575],57:[.19444,.44444,0,0,.575],65:[0,.68611,0,0,.86944],66:[0,.68611,.04835,0,.8664],67:[0,.68611,.06979,0,.81694],68:[0,.68611,.03194,0,.93812],69:[0,.68611,.05451,0,.81007],70:[0,.68611,.15972,0,.68889],71:[0,.68611,0,0,.88673],72:[0,.68611,.08229,0,.98229],73:[0,.68611,.07778,0,.51111],74:[0,.68611,.10069,0,.63125],75:[0,.68611,.06979,0,.97118],76:[0,.68611,0,0,.75555],77:[0,.68611,.11424,0,1.14201],78:[0,.68611,.11424,0,.95034],79:[0,.68611,.03194,0,.83666],80:[0,.68611,.15972,0,.72309],81:[.19444,.68611,0,0,.86861],82:[0,.68611,.00421,0,.87235],83:[0,.68611,.05382,0,.69271],84:[0,.68611,.15972,0,.63663],85:[0,.68611,.11424,0,.80027],86:[0,.68611,.25555,0,.67778],87:[0,.68611,.15972,0,1.09305],88:[0,.68611,.07778,0,.94722],89:[0,.68611,.25555,0,.67458],90:[0,.68611,.06979,0,.77257],97:[0,.44444,0,0,.63287],98:[0,.69444,0,0,.52083],99:[0,.44444,0,0,.51342],100:[0,.69444,0,0,.60972],101:[0,.44444,0,0,.55361],102:[.19444,.69444,.11042,0,.56806],103:[.19444,.44444,.03704,0,.5449],104:[0,.69444,0,0,.66759],105:[0,.69326,0,0,.4048],106:[.19444,.69326,.0622,0,.47083],107:[0,.69444,.01852,0,.6037],108:[0,.69444,.0088,0,.34815],109:[0,.44444,0,0,1.0324],110:[0,.44444,0,0,.71296],111:[0,.44444,0,0,.58472],112:[.19444,.44444,0,0,.60092],113:[.19444,.44444,.03704,0,.54213],114:[0,.44444,.03194,0,.5287],115:[0,.44444,0,0,.53125],116:[0,.63492,0,0,.41528],117:[0,.44444,0,0,.68102],118:[0,.44444,.03704,0,.56666],119:[0,.44444,.02778,0,.83148],120:[0,.44444,0,0,.65903],121:[.19444,.44444,.03704,0,.59028],122:[0,.44444,.04213,0,.55509],160:[0,0,0,0,.25],915:[0,.68611,.15972,0,.65694],916:[0,.68611,0,0,.95833],920:[0,.68611,.03194,0,.86722],923:[0,.68611,0,0,.80555],926:[0,.68611,.07458,0,.84125],928:[0,.68611,.08229,0,.98229],931:[0,.68611,.05451,0,.88507],933:[0,.68611,.15972,0,.67083],934:[0,.68611,0,0,.76666],936:[0,.68611,.11653,0,.71402],937:[0,.68611,.04835,0,.8789],945:[0,.44444,0,0,.76064],946:[.19444,.69444,.03403,0,.65972],947:[.19444,.44444,.06389,0,.59003],948:[0,.69444,.03819,0,.52222],949:[0,.44444,0,0,.52882],950:[.19444,.69444,.06215,0,.50833],951:[.19444,.44444,.03704,0,.6],952:[0,.69444,.03194,0,.5618],953:[0,.44444,0,0,.41204],954:[0,.44444,0,0,.66759],955:[0,.69444,0,0,.67083],956:[.19444,.44444,0,0,.70787],957:[0,.44444,.06898,0,.57685],958:[.19444,.69444,.03021,0,.50833],959:[0,.44444,0,0,.58472],960:[0,.44444,.03704,0,.68241],961:[.19444,.44444,0,0,.6118],962:[.09722,.44444,.07917,0,.42361],963:[0,.44444,.03704,0,.68588],964:[0,.44444,.13472,0,.52083],965:[0,.44444,.03704,0,.63055],966:[.19444,.44444,0,0,.74722],967:[.19444,.44444,0,0,.71805],968:[.19444,.69444,.03704,0,.75833],969:[0,.44444,.03704,0,.71782],977:[0,.69444,0,0,.69155],981:[.19444,.69444,0,0,.7125],982:[0,.44444,.03194,0,.975],1009:[.19444,.44444,0,0,.6118],1013:[0,.44444,0,0,.48333],57649:[0,.44444,0,0,.39352],57911:[.19444,.44444,0,0,.43889]},"Math-Italic":{32:[0,0,0,0,.25],48:[0,.43056,0,0,.5],49:[0,.43056,0,0,.5],50:[0,.43056,0,0,.5],51:[.19444,.43056,0,0,.5],52:[.19444,.43056,0,0,.5],53:[.19444,.43056,0,0,.5],54:[0,.64444,0,0,.5],55:[.19444,.43056,0,0,.5],56:[0,.64444,0,0,.5],57:[.19444,.43056,0,0,.5],65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],160:[0,0,0,0,.25],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059],57649:[0,.43056,0,.02778,.32246],57911:[.19444,.43056,0,.08334,.38403]},"SansSerif-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.36667],34:[0,.69444,0,0,.55834],35:[.19444,.69444,0,0,.91667],36:[.05556,.75,0,0,.55],37:[.05556,.75,0,0,1.02912],38:[0,.69444,0,0,.83056],39:[0,.69444,0,0,.30556],40:[.25,.75,0,0,.42778],41:[.25,.75,0,0,.42778],42:[0,.75,0,0,.55],43:[.11667,.61667,0,0,.85556],44:[.10556,.13056,0,0,.30556],45:[0,.45833,0,0,.36667],46:[0,.13056,0,0,.30556],47:[.25,.75,0,0,.55],48:[0,.69444,0,0,.55],49:[0,.69444,0,0,.55],50:[0,.69444,0,0,.55],51:[0,.69444,0,0,.55],52:[0,.69444,0,0,.55],53:[0,.69444,0,0,.55],54:[0,.69444,0,0,.55],55:[0,.69444,0,0,.55],56:[0,.69444,0,0,.55],57:[0,.69444,0,0,.55],58:[0,.45833,0,0,.30556],59:[.10556,.45833,0,0,.30556],61:[-.09375,.40625,0,0,.85556],63:[0,.69444,0,0,.51945],64:[0,.69444,0,0,.73334],65:[0,.69444,0,0,.73334],66:[0,.69444,0,0,.73334],67:[0,.69444,0,0,.70278],68:[0,.69444,0,0,.79445],69:[0,.69444,0,0,.64167],70:[0,.69444,0,0,.61111],71:[0,.69444,0,0,.73334],72:[0,.69444,0,0,.79445],73:[0,.69444,0,0,.33056],74:[0,.69444,0,0,.51945],75:[0,.69444,0,0,.76389],76:[0,.69444,0,0,.58056],77:[0,.69444,0,0,.97778],78:[0,.69444,0,0,.79445],79:[0,.69444,0,0,.79445],80:[0,.69444,0,0,.70278],81:[.10556,.69444,0,0,.79445],82:[0,.69444,0,0,.70278],83:[0,.69444,0,0,.61111],84:[0,.69444,0,0,.73334],85:[0,.69444,0,0,.76389],86:[0,.69444,.01528,0,.73334],87:[0,.69444,.01528,0,1.03889],88:[0,.69444,0,0,.73334],89:[0,.69444,.0275,0,.73334],90:[0,.69444,0,0,.67223],91:[.25,.75,0,0,.34306],93:[.25,.75,0,0,.34306],94:[0,.69444,0,0,.55],95:[.35,.10833,.03056,0,.55],97:[0,.45833,0,0,.525],98:[0,.69444,0,0,.56111],99:[0,.45833,0,0,.48889],100:[0,.69444,0,0,.56111],101:[0,.45833,0,0,.51111],102:[0,.69444,.07639,0,.33611],103:[.19444,.45833,.01528,0,.55],104:[0,.69444,0,0,.56111],105:[0,.69444,0,0,.25556],106:[.19444,.69444,0,0,.28611],107:[0,.69444,0,0,.53056],108:[0,.69444,0,0,.25556],109:[0,.45833,0,0,.86667],110:[0,.45833,0,0,.56111],111:[0,.45833,0,0,.55],112:[.19444,.45833,0,0,.56111],113:[.19444,.45833,0,0,.56111],114:[0,.45833,.01528,0,.37222],115:[0,.45833,0,0,.42167],116:[0,.58929,0,0,.40417],117:[0,.45833,0,0,.56111],118:[0,.45833,.01528,0,.5],119:[0,.45833,.01528,0,.74445],120:[0,.45833,0,0,.5],121:[.19444,.45833,.01528,0,.5],122:[0,.45833,0,0,.47639],126:[.35,.34444,0,0,.55],160:[0,0,0,0,.25],168:[0,.69444,0,0,.55],176:[0,.69444,0,0,.73334],180:[0,.69444,0,0,.55],184:[.17014,0,0,0,.48889],305:[0,.45833,0,0,.25556],567:[.19444,.45833,0,0,.28611],710:[0,.69444,0,0,.55],711:[0,.63542,0,0,.55],713:[0,.63778,0,0,.55],728:[0,.69444,0,0,.55],729:[0,.69444,0,0,.30556],730:[0,.69444,0,0,.73334],732:[0,.69444,0,0,.55],733:[0,.69444,0,0,.55],915:[0,.69444,0,0,.58056],916:[0,.69444,0,0,.91667],920:[0,.69444,0,0,.85556],923:[0,.69444,0,0,.67223],926:[0,.69444,0,0,.73334],928:[0,.69444,0,0,.79445],931:[0,.69444,0,0,.79445],933:[0,.69444,0,0,.85556],934:[0,.69444,0,0,.79445],936:[0,.69444,0,0,.85556],937:[0,.69444,0,0,.79445],8211:[0,.45833,.03056,0,.55],8212:[0,.45833,.03056,0,1.10001],8216:[0,.69444,0,0,.30556],8217:[0,.69444,0,0,.30556],8220:[0,.69444,0,0,.55834],8221:[0,.69444,0,0,.55834]},"SansSerif-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.05733,0,.31945],34:[0,.69444,.00316,0,.5],35:[.19444,.69444,.05087,0,.83334],36:[.05556,.75,.11156,0,.5],37:[.05556,.75,.03126,0,.83334],38:[0,.69444,.03058,0,.75834],39:[0,.69444,.07816,0,.27778],40:[.25,.75,.13164,0,.38889],41:[.25,.75,.02536,0,.38889],42:[0,.75,.11775,0,.5],43:[.08333,.58333,.02536,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,.01946,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,.13164,0,.5],48:[0,.65556,.11156,0,.5],49:[0,.65556,.11156,0,.5],50:[0,.65556,.11156,0,.5],51:[0,.65556,.11156,0,.5],52:[0,.65556,.11156,0,.5],53:[0,.65556,.11156,0,.5],54:[0,.65556,.11156,0,.5],55:[0,.65556,.11156,0,.5],56:[0,.65556,.11156,0,.5],57:[0,.65556,.11156,0,.5],58:[0,.44444,.02502,0,.27778],59:[.125,.44444,.02502,0,.27778],61:[-.13,.37,.05087,0,.77778],63:[0,.69444,.11809,0,.47222],64:[0,.69444,.07555,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,.08293,0,.66667],67:[0,.69444,.11983,0,.63889],68:[0,.69444,.07555,0,.72223],69:[0,.69444,.11983,0,.59722],70:[0,.69444,.13372,0,.56945],71:[0,.69444,.11983,0,.66667],72:[0,.69444,.08094,0,.70834],73:[0,.69444,.13372,0,.27778],74:[0,.69444,.08094,0,.47222],75:[0,.69444,.11983,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,.08094,0,.875],78:[0,.69444,.08094,0,.70834],79:[0,.69444,.07555,0,.73611],80:[0,.69444,.08293,0,.63889],81:[.125,.69444,.07555,0,.73611],82:[0,.69444,.08293,0,.64584],83:[0,.69444,.09205,0,.55556],84:[0,.69444,.13372,0,.68056],85:[0,.69444,.08094,0,.6875],86:[0,.69444,.1615,0,.66667],87:[0,.69444,.1615,0,.94445],88:[0,.69444,.13372,0,.66667],89:[0,.69444,.17261,0,.66667],90:[0,.69444,.11983,0,.61111],91:[.25,.75,.15942,0,.28889],93:[.25,.75,.08719,0,.28889],94:[0,.69444,.0799,0,.5],95:[.35,.09444,.08616,0,.5],97:[0,.44444,.00981,0,.48056],98:[0,.69444,.03057,0,.51667],99:[0,.44444,.08336,0,.44445],100:[0,.69444,.09483,0,.51667],101:[0,.44444,.06778,0,.44445],102:[0,.69444,.21705,0,.30556],103:[.19444,.44444,.10836,0,.5],104:[0,.69444,.01778,0,.51667],105:[0,.67937,.09718,0,.23889],106:[.19444,.67937,.09162,0,.26667],107:[0,.69444,.08336,0,.48889],108:[0,.69444,.09483,0,.23889],109:[0,.44444,.01778,0,.79445],110:[0,.44444,.01778,0,.51667],111:[0,.44444,.06613,0,.5],112:[.19444,.44444,.0389,0,.51667],113:[.19444,.44444,.04169,0,.51667],114:[0,.44444,.10836,0,.34167],115:[0,.44444,.0778,0,.38333],116:[0,.57143,.07225,0,.36111],117:[0,.44444,.04169,0,.51667],118:[0,.44444,.10836,0,.46111],119:[0,.44444,.10836,0,.68334],120:[0,.44444,.09169,0,.46111],121:[.19444,.44444,.10836,0,.46111],122:[0,.44444,.08752,0,.43472],126:[.35,.32659,.08826,0,.5],160:[0,0,0,0,.25],168:[0,.67937,.06385,0,.5],176:[0,.69444,0,0,.73752],184:[.17014,0,0,0,.44445],305:[0,.44444,.04169,0,.23889],567:[.19444,.44444,.04169,0,.26667],710:[0,.69444,.0799,0,.5],711:[0,.63194,.08432,0,.5],713:[0,.60889,.08776,0,.5],714:[0,.69444,.09205,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,.09483,0,.5],729:[0,.67937,.07774,0,.27778],730:[0,.69444,0,0,.73752],732:[0,.67659,.08826,0,.5],733:[0,.69444,.09205,0,.5],915:[0,.69444,.13372,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,.07555,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,.12816,0,.66667],928:[0,.69444,.08094,0,.70834],931:[0,.69444,.11983,0,.72222],933:[0,.69444,.09031,0,.77778],934:[0,.69444,.04603,0,.72222],936:[0,.69444,.09031,0,.77778],937:[0,.69444,.08293,0,.72222],8211:[0,.44444,.08616,0,.5],8212:[0,.44444,.08616,0,1],8216:[0,.69444,.07816,0,.27778],8217:[0,.69444,.07816,0,.27778],8220:[0,.69444,.14205,0,.5],8221:[0,.69444,.00316,0,.5]},"SansSerif-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.31945],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.75834],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,0,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.65556,0,0,.5],49:[0,.65556,0,0,.5],50:[0,.65556,0,0,.5],51:[0,.65556,0,0,.5],52:[0,.65556,0,0,.5],53:[0,.65556,0,0,.5],54:[0,.65556,0,0,.5],55:[0,.65556,0,0,.5],56:[0,.65556,0,0,.5],57:[0,.65556,0,0,.5],58:[0,.44444,0,0,.27778],59:[.125,.44444,0,0,.27778],61:[-.13,.37,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,0,0,.66667],67:[0,.69444,0,0,.63889],68:[0,.69444,0,0,.72223],69:[0,.69444,0,0,.59722],70:[0,.69444,0,0,.56945],71:[0,.69444,0,0,.66667],72:[0,.69444,0,0,.70834],73:[0,.69444,0,0,.27778],74:[0,.69444,0,0,.47222],75:[0,.69444,0,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,0,0,.875],78:[0,.69444,0,0,.70834],79:[0,.69444,0,0,.73611],80:[0,.69444,0,0,.63889],81:[.125,.69444,0,0,.73611],82:[0,.69444,0,0,.64584],83:[0,.69444,0,0,.55556],84:[0,.69444,0,0,.68056],85:[0,.69444,0,0,.6875],86:[0,.69444,.01389,0,.66667],87:[0,.69444,.01389,0,.94445],88:[0,.69444,0,0,.66667],89:[0,.69444,.025,0,.66667],90:[0,.69444,0,0,.61111],91:[.25,.75,0,0,.28889],93:[.25,.75,0,0,.28889],94:[0,.69444,0,0,.5],95:[.35,.09444,.02778,0,.5],97:[0,.44444,0,0,.48056],98:[0,.69444,0,0,.51667],99:[0,.44444,0,0,.44445],100:[0,.69444,0,0,.51667],101:[0,.44444,0,0,.44445],102:[0,.69444,.06944,0,.30556],103:[.19444,.44444,.01389,0,.5],104:[0,.69444,0,0,.51667],105:[0,.67937,0,0,.23889],106:[.19444,.67937,0,0,.26667],107:[0,.69444,0,0,.48889],108:[0,.69444,0,0,.23889],109:[0,.44444,0,0,.79445],110:[0,.44444,0,0,.51667],111:[0,.44444,0,0,.5],112:[.19444,.44444,0,0,.51667],113:[.19444,.44444,0,0,.51667],114:[0,.44444,.01389,0,.34167],115:[0,.44444,0,0,.38333],116:[0,.57143,0,0,.36111],117:[0,.44444,0,0,.51667],118:[0,.44444,.01389,0,.46111],119:[0,.44444,.01389,0,.68334],120:[0,.44444,0,0,.46111],121:[.19444,.44444,.01389,0,.46111],122:[0,.44444,0,0,.43472],126:[.35,.32659,0,0,.5],160:[0,0,0,0,.25],168:[0,.67937,0,0,.5],176:[0,.69444,0,0,.66667],184:[.17014,0,0,0,.44445],305:[0,.44444,0,0,.23889],567:[.19444,.44444,0,0,.26667],710:[0,.69444,0,0,.5],711:[0,.63194,0,0,.5],713:[0,.60889,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.67937,0,0,.27778],730:[0,.69444,0,0,.66667],732:[0,.67659,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.69444,0,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,0,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,0,0,.66667],928:[0,.69444,0,0,.70834],931:[0,.69444,0,0,.72222],933:[0,.69444,0,0,.77778],934:[0,.69444,0,0,.72222],936:[0,.69444,0,0,.77778],937:[0,.69444,0,0,.72222],8211:[0,.44444,.02778,0,.5],8212:[0,.44444,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5]},"Script-Regular":{32:[0,0,0,0,.25],65:[0,.7,.22925,0,.80253],66:[0,.7,.04087,0,.90757],67:[0,.7,.1689,0,.66619],68:[0,.7,.09371,0,.77443],69:[0,.7,.18583,0,.56162],70:[0,.7,.13634,0,.89544],71:[0,.7,.17322,0,.60961],72:[0,.7,.29694,0,.96919],73:[0,.7,.19189,0,.80907],74:[.27778,.7,.19189,0,1.05159],75:[0,.7,.31259,0,.91364],76:[0,.7,.19189,0,.87373],77:[0,.7,.15981,0,1.08031],78:[0,.7,.3525,0,.9015],79:[0,.7,.08078,0,.73787],80:[0,.7,.08078,0,1.01262],81:[0,.7,.03305,0,.88282],82:[0,.7,.06259,0,.85],83:[0,.7,.19189,0,.86767],84:[0,.7,.29087,0,.74697],85:[0,.7,.25815,0,.79996],86:[0,.7,.27523,0,.62204],87:[0,.7,.27523,0,.80532],88:[0,.7,.26006,0,.94445],89:[0,.7,.2939,0,.70961],90:[0,.7,.24037,0,.8212],160:[0,0,0,0,.25]},"Size1-Regular":{32:[0,0,0,0,.25],40:[.35001,.85,0,0,.45834],41:[.35001,.85,0,0,.45834],47:[.35001,.85,0,0,.57778],91:[.35001,.85,0,0,.41667],92:[.35001,.85,0,0,.57778],93:[.35001,.85,0,0,.41667],123:[.35001,.85,0,0,.58334],125:[.35001,.85,0,0,.58334],160:[0,0,0,0,.25],710:[0,.72222,0,0,.55556],732:[0,.72222,0,0,.55556],770:[0,.72222,0,0,.55556],771:[0,.72222,0,0,.55556],8214:[-99e-5,.601,0,0,.77778],8593:[1e-5,.6,0,0,.66667],8595:[1e-5,.6,0,0,.66667],8657:[1e-5,.6,0,0,.77778],8659:[1e-5,.6,0,0,.77778],8719:[.25001,.75,0,0,.94445],8720:[.25001,.75,0,0,.94445],8721:[.25001,.75,0,0,1.05556],8730:[.35001,.85,0,0,1],8739:[-.00599,.606,0,0,.33333],8741:[-.00599,.606,0,0,.55556],8747:[.30612,.805,.19445,0,.47222],8748:[.306,.805,.19445,0,.47222],8749:[.306,.805,.19445,0,.47222],8750:[.30612,.805,.19445,0,.47222],8896:[.25001,.75,0,0,.83334],8897:[.25001,.75,0,0,.83334],8898:[.25001,.75,0,0,.83334],8899:[.25001,.75,0,0,.83334],8968:[.35001,.85,0,0,.47222],8969:[.35001,.85,0,0,.47222],8970:[.35001,.85,0,0,.47222],8971:[.35001,.85,0,0,.47222],9168:[-99e-5,.601,0,0,.66667],10216:[.35001,.85,0,0,.47222],10217:[.35001,.85,0,0,.47222],10752:[.25001,.75,0,0,1.11111],10753:[.25001,.75,0,0,1.11111],10754:[.25001,.75,0,0,1.11111],10756:[.25001,.75,0,0,.83334],10758:[.25001,.75,0,0,.83334]},"Size2-Regular":{32:[0,0,0,0,.25],40:[.65002,1.15,0,0,.59722],41:[.65002,1.15,0,0,.59722],47:[.65002,1.15,0,0,.81111],91:[.65002,1.15,0,0,.47222],92:[.65002,1.15,0,0,.81111],93:[.65002,1.15,0,0,.47222],123:[.65002,1.15,0,0,.66667],125:[.65002,1.15,0,0,.66667],160:[0,0,0,0,.25],710:[0,.75,0,0,1],732:[0,.75,0,0,1],770:[0,.75,0,0,1],771:[0,.75,0,0,1],8719:[.55001,1.05,0,0,1.27778],8720:[.55001,1.05,0,0,1.27778],8721:[.55001,1.05,0,0,1.44445],8730:[.65002,1.15,0,0,1],8747:[.86225,1.36,.44445,0,.55556],8748:[.862,1.36,.44445,0,.55556],8749:[.862,1.36,.44445,0,.55556],8750:[.86225,1.36,.44445,0,.55556],8896:[.55001,1.05,0,0,1.11111],8897:[.55001,1.05,0,0,1.11111],8898:[.55001,1.05,0,0,1.11111],8899:[.55001,1.05,0,0,1.11111],8968:[.65002,1.15,0,0,.52778],8969:[.65002,1.15,0,0,.52778],8970:[.65002,1.15,0,0,.52778],8971:[.65002,1.15,0,0,.52778],10216:[.65002,1.15,0,0,.61111],10217:[.65002,1.15,0,0,.61111],10752:[.55001,1.05,0,0,1.51112],10753:[.55001,1.05,0,0,1.51112],10754:[.55001,1.05,0,0,1.51112],10756:[.55001,1.05,0,0,1.11111],10758:[.55001,1.05,0,0,1.11111]},"Size3-Regular":{32:[0,0,0,0,.25],40:[.95003,1.45,0,0,.73611],41:[.95003,1.45,0,0,.73611],47:[.95003,1.45,0,0,1.04445],91:[.95003,1.45,0,0,.52778],92:[.95003,1.45,0,0,1.04445],93:[.95003,1.45,0,0,.52778],123:[.95003,1.45,0,0,.75],125:[.95003,1.45,0,0,.75],160:[0,0,0,0,.25],710:[0,.75,0,0,1.44445],732:[0,.75,0,0,1.44445],770:[0,.75,0,0,1.44445],771:[0,.75,0,0,1.44445],8730:[.95003,1.45,0,0,1],8968:[.95003,1.45,0,0,.58334],8969:[.95003,1.45,0,0,.58334],8970:[.95003,1.45,0,0,.58334],8971:[.95003,1.45,0,0,.58334],10216:[.95003,1.45,0,0,.75],10217:[.95003,1.45,0,0,.75]},"Size4-Regular":{32:[0,0,0,0,.25],40:[1.25003,1.75,0,0,.79167],41:[1.25003,1.75,0,0,.79167],47:[1.25003,1.75,0,0,1.27778],91:[1.25003,1.75,0,0,.58334],92:[1.25003,1.75,0,0,1.27778],93:[1.25003,1.75,0,0,.58334],123:[1.25003,1.75,0,0,.80556],125:[1.25003,1.75,0,0,.80556],160:[0,0,0,0,.25],710:[0,.825,0,0,1.8889],732:[0,.825,0,0,1.8889],770:[0,.825,0,0,1.8889],771:[0,.825,0,0,1.8889],8730:[1.25003,1.75,0,0,1],8968:[1.25003,1.75,0,0,.63889],8969:[1.25003,1.75,0,0,.63889],8970:[1.25003,1.75,0,0,.63889],8971:[1.25003,1.75,0,0,.63889],9115:[.64502,1.155,0,0,.875],9116:[1e-5,.6,0,0,.875],9117:[.64502,1.155,0,0,.875],9118:[.64502,1.155,0,0,.875],9119:[1e-5,.6,0,0,.875],9120:[.64502,1.155,0,0,.875],9121:[.64502,1.155,0,0,.66667],9122:[-99e-5,.601,0,0,.66667],9123:[.64502,1.155,0,0,.66667],9124:[.64502,1.155,0,0,.66667],9125:[-99e-5,.601,0,0,.66667],9126:[.64502,1.155,0,0,.66667],9127:[1e-5,.9,0,0,.88889],9128:[.65002,1.15,0,0,.88889],9129:[.90001,0,0,0,.88889],9130:[0,.3,0,0,.88889],9131:[1e-5,.9,0,0,.88889],9132:[.65002,1.15,0,0,.88889],9133:[.90001,0,0,0,.88889],9143:[.88502,.915,0,0,1.05556],10216:[1.25003,1.75,0,0,.80556],10217:[1.25003,1.75,0,0,.80556],57344:[-.00499,.605,0,0,1.05556],57345:[-.00499,.605,0,0,1.05556],57680:[0,.12,0,0,.45],57681:[0,.12,0,0,.45],57682:[0,.12,0,0,.45],57683:[0,.12,0,0,.45]},"Typewriter-Regular":{32:[0,0,0,0,.525],33:[0,.61111,0,0,.525],34:[0,.61111,0,0,.525],35:[0,.61111,0,0,.525],36:[.08333,.69444,0,0,.525],37:[.08333,.69444,0,0,.525],38:[0,.61111,0,0,.525],39:[0,.61111,0,0,.525],40:[.08333,.69444,0,0,.525],41:[.08333,.69444,0,0,.525],42:[0,.52083,0,0,.525],43:[-.08056,.53055,0,0,.525],44:[.13889,.125,0,0,.525],45:[-.08056,.53055,0,0,.525],46:[0,.125,0,0,.525],47:[.08333,.69444,0,0,.525],48:[0,.61111,0,0,.525],49:[0,.61111,0,0,.525],50:[0,.61111,0,0,.525],51:[0,.61111,0,0,.525],52:[0,.61111,0,0,.525],53:[0,.61111,0,0,.525],54:[0,.61111,0,0,.525],55:[0,.61111,0,0,.525],56:[0,.61111,0,0,.525],57:[0,.61111,0,0,.525],58:[0,.43056,0,0,.525],59:[.13889,.43056,0,0,.525],60:[-.05556,.55556,0,0,.525],61:[-.19549,.41562,0,0,.525],62:[-.05556,.55556,0,0,.525],63:[0,.61111,0,0,.525],64:[0,.61111,0,0,.525],65:[0,.61111,0,0,.525],66:[0,.61111,0,0,.525],67:[0,.61111,0,0,.525],68:[0,.61111,0,0,.525],69:[0,.61111,0,0,.525],70:[0,.61111,0,0,.525],71:[0,.61111,0,0,.525],72:[0,.61111,0,0,.525],73:[0,.61111,0,0,.525],74:[0,.61111,0,0,.525],75:[0,.61111,0,0,.525],76:[0,.61111,0,0,.525],77:[0,.61111,0,0,.525],78:[0,.61111,0,0,.525],79:[0,.61111,0,0,.525],80:[0,.61111,0,0,.525],81:[.13889,.61111,0,0,.525],82:[0,.61111,0,0,.525],83:[0,.61111,0,0,.525],84:[0,.61111,0,0,.525],85:[0,.61111,0,0,.525],86:[0,.61111,0,0,.525],87:[0,.61111,0,0,.525],88:[0,.61111,0,0,.525],89:[0,.61111,0,0,.525],90:[0,.61111,0,0,.525],91:[.08333,.69444,0,0,.525],92:[.08333,.69444,0,0,.525],93:[.08333,.69444,0,0,.525],94:[0,.61111,0,0,.525],95:[.09514,0,0,0,.525],96:[0,.61111,0,0,.525],97:[0,.43056,0,0,.525],98:[0,.61111,0,0,.525],99:[0,.43056,0,0,.525],100:[0,.61111,0,0,.525],101:[0,.43056,0,0,.525],102:[0,.61111,0,0,.525],103:[.22222,.43056,0,0,.525],104:[0,.61111,0,0,.525],105:[0,.61111,0,0,.525],106:[.22222,.61111,0,0,.525],107:[0,.61111,0,0,.525],108:[0,.61111,0,0,.525],109:[0,.43056,0,0,.525],110:[0,.43056,0,0,.525],111:[0,.43056,0,0,.525],112:[.22222,.43056,0,0,.525],113:[.22222,.43056,0,0,.525],114:[0,.43056,0,0,.525],115:[0,.43056,0,0,.525],116:[0,.55358,0,0,.525],117:[0,.43056,0,0,.525],118:[0,.43056,0,0,.525],119:[0,.43056,0,0,.525],120:[0,.43056,0,0,.525],121:[.22222,.43056,0,0,.525],122:[0,.43056,0,0,.525],123:[.08333,.69444,0,0,.525],124:[.08333,.69444,0,0,.525],125:[.08333,.69444,0,0,.525],126:[0,.61111,0,0,.525],127:[0,.61111,0,0,.525],160:[0,0,0,0,.525],176:[0,.61111,0,0,.525],184:[.19445,0,0,0,.525],305:[0,.43056,0,0,.525],567:[.22222,.43056,0,0,.525],711:[0,.56597,0,0,.525],713:[0,.56555,0,0,.525],714:[0,.61111,0,0,.525],715:[0,.61111,0,0,.525],728:[0,.61111,0,0,.525],730:[0,.61111,0,0,.525],770:[0,.61111,0,0,.525],771:[0,.61111,0,0,.525],776:[0,.61111,0,0,.525],915:[0,.61111,0,0,.525],916:[0,.61111,0,0,.525],920:[0,.61111,0,0,.525],923:[0,.61111,0,0,.525],926:[0,.61111,0,0,.525],928:[0,.61111,0,0,.525],931:[0,.61111,0,0,.525],933:[0,.61111,0,0,.525],934:[0,.61111,0,0,.525],936:[0,.61111,0,0,.525],937:[0,.61111,0,0,.525],8216:[0,.61111,0,0,.525],8217:[0,.61111,0,0,.525],8242:[0,.61111,0,0,.525],9251:[.11111,.21944,0,0,.525]}},B={slant:[.25,.25,.25],space:[0,0,0],stretch:[0,0,0],shrink:[0,0,0],xHeight:[.431,.431,.431],quad:[1,1.171,1.472],extraSpace:[0,0,0],num1:[.677,.732,.925],num2:[.394,.384,.387],num3:[.444,.471,.504],denom1:[.686,.752,1.025],denom2:[.345,.344,.532],sup1:[.413,.503,.504],sup2:[.363,.431,.404],sup3:[.289,.286,.294],sub1:[.15,.143,.2],sub2:[.247,.286,.4],supDrop:[.386,.353,.494],subDrop:[.05,.071,.1],delim1:[2.39,1.7,1.98],delim2:[1.01,1.157,1.42],axisHeight:[.25,.25,.25],defaultRuleThickness:[.04,.049,.049],bigOpSpacing1:[.111,.111,.111],bigOpSpacing2:[.166,.166,.166],bigOpSpacing3:[.2,.2,.2],bigOpSpacing4:[.6,.611,.611],bigOpSpacing5:[.1,.143,.143],sqrtRuleThickness:[.04,.04,.04],ptPerEm:[10,10,10],doubleRuleSep:[.2,.2,.2],arrayRuleWidth:[.04,.04,.04],fboxsep:[.3,.3,.3],fboxrule:[.04,.04,.04]},C={"\xc5":"A","\xd0":"D","\xde":"o","\xe5":"a","\xf0":"d","\xfe":"o","\u0410":"A","\u0411":"B","\u0412":"B","\u0413":"F","\u0414":"A","\u0415":"E","\u0416":"K","\u0417":"3","\u0418":"N","\u0419":"N","\u041a":"K","\u041b":"N","\u041c":"M","\u041d":"H","\u041e":"O","\u041f":"N","\u0420":"P","\u0421":"C","\u0422":"T","\u0423":"y","\u0424":"O","\u0425":"X","\u0426":"U","\u0427":"h","\u0428":"W","\u0429":"W","\u042a":"B","\u042b":"X","\u042c":"B","\u042d":"3","\u042e":"X","\u042f":"R","\u0430":"a","\u0431":"b","\u0432":"a","\u0433":"r","\u0434":"y","\u0435":"e","\u0436":"m","\u0437":"e","\u0438":"n","\u0439":"n","\u043a":"n","\u043b":"n","\u043c":"m","\u043d":"n","\u043e":"o","\u043f":"n","\u0440":"p","\u0441":"c","\u0442":"o","\u0443":"y","\u0444":"b","\u0445":"x","\u0446":"n","\u0447":"n","\u0448":"w","\u0449":"w","\u044a":"a","\u044b":"m","\u044c":"a","\u044d":"e","\u044e":"m","\u044f":"r"};function q(e,t,r){if(!T[t])throw new Error("Font metrics not found for font: "+t+".");var n=e.charCodeAt(0),a=T[t][n];if(!a&&e[0]in C&&(n=C[e[0]].charCodeAt(0),a=T[t][n]),a||"text"!==r||S(n)&&(a=T[t][77]),a)return{depth:a[0],height:a[1],italic:a[2],skew:a[3],width:a[4]}}var N={};var I=[[1,1,1],[2,1,1],[3,1,1],[4,2,1],[5,2,1],[6,3,1],[7,4,2],[8,6,3],[9,7,6],[10,8,7],[11,10,9]],R=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488],O=function(e,t){return t.size<2?e:I[e-1][t.size-1]},H=function(){function e(t){this.style=void 0,this.color=void 0,this.size=void 0,this.textSize=void 0,this.phantom=void 0,this.font=void 0,this.fontFamily=void 0,this.fontWeight=void 0,this.fontShape=void 0,this.sizeMultiplier=void 0,this.maxSize=void 0,this.minRuleThickness=void 0,this._fontMetrics=void 0,this.style=t.style,this.color=t.color,this.size=t.size||e.BASESIZE,this.textSize=t.textSize||this.size,this.phantom=!!t.phantom,this.font=t.font||"",this.fontFamily=t.fontFamily||"",this.fontWeight=t.fontWeight||"",this.fontShape=t.fontShape||"",this.sizeMultiplier=R[this.size-1],this.maxSize=t.maxSize,this.minRuleThickness=t.minRuleThickness,this._fontMetrics=void 0}var t=e.prototype;return t.extend=function(t){var r={style:this.style,size:this.size,textSize:this.textSize,color:this.color,phantom:this.phantom,font:this.font,fontFamily:this.fontFamily,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize,minRuleThickness:this.minRuleThickness};for(var n in t)t.hasOwnProperty(n)&&(r[n]=t[n]);return new e(r)},t.havingStyle=function(e){return this.style===e?this:this.extend({style:e,size:O(this.textSize,e)})},t.havingCrampedStyle=function(){return this.havingStyle(this.style.cramp())},t.havingSize=function(e){return this.size===e&&this.textSize===e?this:this.extend({style:this.style.text(),size:e,textSize:e,sizeMultiplier:R[e-1]})},t.havingBaseStyle=function(t){t=t||this.style.text();var r=O(e.BASESIZE,t);return this.size===r&&this.textSize===e.BASESIZE&&this.style===t?this:this.extend({style:t,size:r})},t.havingBaseSizing=function(){var e;switch(this.style.id){case 4:case 5:e=3;break;case 6:case 7:e=1;break;default:e=6}return this.extend({style:this.style.text(),size:e})},t.withColor=function(e){return this.extend({color:e})},t.withPhantom=function(){return this.extend({phantom:!0})},t.withFont=function(e){return this.extend({font:e})},t.withTextFontFamily=function(e){return this.extend({fontFamily:e,font:""})},t.withTextFontWeight=function(e){return this.extend({fontWeight:e,font:""})},t.withTextFontShape=function(e){return this.extend({fontShape:e,font:""})},t.sizingClasses=function(e){return e.size!==this.size?["sizing","reset-size"+e.size,"size"+this.size]:[]},t.baseSizingClasses=function(){return this.size!==e.BASESIZE?["sizing","reset-size"+this.size,"size"+e.BASESIZE]:[]},t.fontMetrics=function(){return this._fontMetrics||(this._fontMetrics=function(e){var t;if(!N[t=e>=5?0:e>=3?1:2]){var r=N[t]={cssEmPerMu:B.quad[t]/18};for(var n in B)B.hasOwnProperty(n)&&(r[n]=B[n][t])}return N[t]}(this.size)),this._fontMetrics},t.getColor=function(){return this.phantom?"transparent":this.color},e}();H.BASESIZE=6;var E=H,L={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:1.00375,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:1.00375},D={ex:!0,em:!0,mu:!0},P=function(e){return"string"!=typeof e&&(e=e.unit),e in L||e in D||"ex"===e},F=function(e,t){var r;if(e.unit in L)r=L[e.unit]/t.fontMetrics().ptPerEm/t.sizeMultiplier;else if("mu"===e.unit)r=t.fontMetrics().cssEmPerMu;else{var a;if(a=t.style.isTight()?t.havingStyle(t.style.text()):t,"ex"===e.unit)r=a.fontMetrics().xHeight;else{if("em"!==e.unit)throw new n("Invalid unit: '"+e.unit+"'");r=a.fontMetrics().quad}a!==t&&(r*=a.sizeMultiplier/t.sizeMultiplier)}return Math.min(e.number*r,t.maxSize)},V=function(e){return+e.toFixed(4)+"em"},G=function(e){return e.filter((function(e){return e})).join(" ")},U=function(e,t,r){if(this.classes=e||[],this.attributes={},this.height=0,this.depth=0,this.maxFontSize=0,this.style=r||{},t){t.style.isTight()&&this.classes.push("mtight");var n=t.getColor();n&&(this.style.color=n)}},Y=function(e){var t=document.createElement(e);for(var r in t.className=G(this.classes),this.style)this.style.hasOwnProperty(r)&&(t.style[r]=this.style[r]);for(var n in this.attributes)this.attributes.hasOwnProperty(n)&&t.setAttribute(n,this.attributes[n]);for(var a=0;a<this.children.length;a++)t.appendChild(this.children[a].toNode());return t},X=function(e){var t="<"+e;this.classes.length&&(t+=' class="'+l.escape(G(this.classes))+'"');var r="";for(var n in this.style)this.style.hasOwnProperty(n)&&(r+=l.hyphenate(n)+":"+this.style[n]+";");for(var a in r&&(t+=' style="'+l.escape(r)+'"'),this.attributes)this.attributes.hasOwnProperty(a)&&(t+=" "+a+'="'+l.escape(this.attributes[a])+'"');t+=">";for(var i=0;i<this.children.length;i++)t+=this.children[i].toMarkup();return t+="</"+e+">"},W=function(){function e(e,t,r,n){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.width=void 0,this.maxFontSize=void 0,this.style=void 0,U.call(this,e,r,n),this.children=t||[]}var t=e.prototype;return t.setAttribute=function(e,t){this.attributes[e]=t},t.hasClass=function(e){return l.contains(this.classes,e)},t.toNode=function(){return Y.call(this,"span")},t.toMarkup=function(){return X.call(this,"span")},e}(),_=function(){function e(e,t,r,n){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,U.call(this,t,n),this.children=r||[],this.setAttribute("href",e)}var t=e.prototype;return t.setAttribute=function(e,t){this.attributes[e]=t},t.hasClass=function(e){return l.contains(this.classes,e)},t.toNode=function(){return Y.call(this,"a")},t.toMarkup=function(){return X.call(this,"a")},e}(),j=function(){function e(e,t,r){this.src=void 0,this.alt=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.alt=t,this.src=e,this.classes=["mord"],this.style=r}var t=e.prototype;return t.hasClass=function(e){return l.contains(this.classes,e)},t.toNode=function(){var e=document.createElement("img");for(var t in e.src=this.src,e.alt=this.alt,e.className="mord",this.style)this.style.hasOwnProperty(t)&&(e.style[t]=this.style[t]);return e},t.toMarkup=function(){var e="<img src='"+this.src+" 'alt='"+this.alt+"' ",t="";for(var r in this.style)this.style.hasOwnProperty(r)&&(t+=l.hyphenate(r)+":"+this.style[r]+";");return t&&(e+=' style="'+l.escape(t)+'"'),e+="'/>"},e}(),$={"\xee":"\u0131\u0302","\xef":"\u0131\u0308","\xed":"\u0131\u0301","\xec":"\u0131\u0300"},Z=function(){function e(e,t,r,n,a,i,o,s){this.text=void 0,this.height=void 0,this.depth=void 0,this.italic=void 0,this.skew=void 0,this.width=void 0,this.maxFontSize=void 0,this.classes=void 0,this.style=void 0,this.text=e,this.height=t||0,this.depth=r||0,this.italic=n||0,this.skew=a||0,this.width=i||0,this.classes=o||[],this.style=s||{},this.maxFontSize=0;var l=function(e){for(var t=0;t<w.length;t++)for(var r=w[t],n=0;n<r.blocks.length;n++){var a=r.blocks[n];if(e>=a[0]&&e<=a[1])return r.name}return null}(this.text.charCodeAt(0));l&&this.classes.push(l+"_fallback"),/[\xee\xef\xed\xec]/.test(this.text)&&(this.text=$[this.text])}var t=e.prototype;return t.hasClass=function(e){return l.contains(this.classes,e)},t.toNode=function(){var e=document.createTextNode(this.text),t=null;for(var r in this.italic>0&&((t=document.createElement("span")).style.marginRight=V(this.italic)),this.classes.length>0&&((t=t||document.createElement("span")).className=G(this.classes)),this.style)this.style.hasOwnProperty(r)&&((t=t||document.createElement("span")).style[r]=this.style[r]);return t?(t.appendChild(e),t):e},t.toMarkup=function(){var e=!1,t="<span";this.classes.length&&(e=!0,t+=' class="',t+=l.escape(G(this.classes)),t+='"');var r="";for(var n in this.italic>0&&(r+="margin-right:"+this.italic+"em;"),this.style)this.style.hasOwnProperty(n)&&(r+=l.hyphenate(n)+":"+this.style[n]+";");r&&(e=!0,t+=' style="'+l.escape(r)+'"');var a=l.escape(this.text);return e?(t+=">",t+=a,t+="</span>"):a},e}(),K=function(){function e(e,t){this.children=void 0,this.attributes=void 0,this.children=e||[],this.attributes=t||{}}var t=e.prototype;return t.toNode=function(){var e=document.createElementNS("http://www.w3.org/2000/svg","svg");for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);for(var r=0;r<this.children.length;r++)e.appendChild(this.children[r].toNode());return e},t.toMarkup=function(){var e='<svg xmlns="http://www.w3.org/2000/svg"';for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&(e+=" "+t+"='"+this.attributes[t]+"'");e+=">";for(var r=0;r<this.children.length;r++)e+=this.children[r].toMarkup();return e+="</svg>"},e}(),J=function(){function e(e,t){this.pathName=void 0,this.alternate=void 0,this.pathName=e,this.alternate=t}var t=e.prototype;return t.toNode=function(){var e=document.createElementNS("http://www.w3.org/2000/svg","path");return this.alternate?e.setAttribute("d",this.alternate):e.setAttribute("d",z[this.pathName]),e},t.toMarkup=function(){return this.alternate?"<path d='"+this.alternate+"'/>":"<path d='"+z[this.pathName]+"'/>"},e}(),Q=function(){function e(e){this.attributes=void 0,this.attributes=e||{}}var t=e.prototype;return t.toNode=function(){var e=document.createElementNS("http://www.w3.org/2000/svg","line");for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);return e},t.toMarkup=function(){var e="<line";for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&(e+=" "+t+"='"+this.attributes[t]+"'");return e+="/>"},e}();function ee(e){if(e instanceof Z)return e;throw new Error("Expected symbolNode but got "+String(e)+".")}var te={bin:1,close:1,inner:1,open:1,punct:1,rel:1},re={"accent-token":1,mathord:1,"op-token":1,spacing:1,textord:1},ne={math:{},text:{}},ae=ne;function ie(e,t,r,n,a,i){ne[e][a]={font:t,group:r,replace:n},i&&n&&(ne[e][n]=ne[e][a])}var oe="math",se="text",le="main",he="ams",me="accent-token",ce="bin",ue="close",pe="inner",de="mathord",fe="op-token",ge="open",ve="punct",be="rel",ye="spacing",xe="textord";ie(oe,le,be,"\u2261","\\equiv",!0),ie(oe,le,be,"\u227a","\\prec",!0),ie(oe,le,be,"\u227b","\\succ",!0),ie(oe,le,be,"\u223c","\\sim",!0),ie(oe,le,be,"\u22a5","\\perp"),ie(oe,le,be,"\u2aaf","\\preceq",!0),ie(oe,le,be,"\u2ab0","\\succeq",!0),ie(oe,le,be,"\u2243","\\simeq",!0),ie(oe,le,be,"\u2223","\\mid",!0),ie(oe,le,be,"\u226a","\\ll",!0),ie(oe,le,be,"\u226b","\\gg",!0),ie(oe,le,be,"\u224d","\\asymp",!0),ie(oe,le,be,"\u2225","\\parallel"),ie(oe,le,be,"\u22c8","\\bowtie",!0),ie(oe,le,be,"\u2323","\\smile",!0),ie(oe,le,be,"\u2291","\\sqsubseteq",!0),ie(oe,le,be,"\u2292","\\sqsupseteq",!0),ie(oe,le,be,"\u2250","\\doteq",!0),ie(oe,le,be,"\u2322","\\frown",!0),ie(oe,le,be,"\u220b","\\ni",!0),ie(oe,le,be,"\u221d","\\propto",!0),ie(oe,le,be,"\u22a2","\\vdash",!0),ie(oe,le,be,"\u22a3","\\dashv",!0),ie(oe,le,be,"\u220b","\\owns"),ie(oe,le,ve,".","\\ldotp"),ie(oe,le,ve,"\u22c5","\\cdotp"),ie(oe,le,xe,"#","\\#"),ie(se,le,xe,"#","\\#"),ie(oe,le,xe,"&","\\&"),ie(se,le,xe,"&","\\&"),ie(oe,le,xe,"\u2135","\\aleph",!0),ie(oe,le,xe,"\u2200","\\forall",!0),ie(oe,le,xe,"\u210f","\\hbar",!0),ie(oe,le,xe,"\u2203","\\exists",!0),ie(oe,le,xe,"\u2207","\\nabla",!0),ie(oe,le,xe,"\u266d","\\flat",!0),ie(oe,le,xe,"\u2113","\\ell",!0),ie(oe,le,xe,"\u266e","\\natural",!0),ie(oe,le,xe,"\u2663","\\clubsuit",!0),ie(oe,le,xe,"\u2118","\\wp",!0),ie(oe,le,xe,"\u266f","\\sharp",!0),ie(oe,le,xe,"\u2662","\\diamondsuit",!0),ie(oe,le,xe,"\u211c","\\Re",!0),ie(oe,le,xe,"\u2661","\\heartsuit",!0),ie(oe,le,xe,"\u2111","\\Im",!0),ie(oe,le,xe,"\u2660","\\spadesuit",!0),ie(oe,le,xe,"\xa7","\\S",!0),ie(se,le,xe,"\xa7","\\S"),ie(oe,le,xe,"\xb6","\\P",!0),ie(se,le,xe,"\xb6","\\P"),ie(oe,le,xe,"\u2020","\\dag"),ie(se,le,xe,"\u2020","\\dag"),ie(se,le,xe,"\u2020","\\textdagger"),ie(oe,le,xe,"\u2021","\\ddag"),ie(se,le,xe,"\u2021","\\ddag"),ie(se,le,xe,"\u2021","\\textdaggerdbl"),ie(oe,le,ue,"\u23b1","\\rmoustache",!0),ie(oe,le,ge,"\u23b0","\\lmoustache",!0),ie(oe,le,ue,"\u27ef","\\rgroup",!0),ie(oe,le,ge,"\u27ee","\\lgroup",!0),ie(oe,le,ce,"\u2213","\\mp",!0),ie(oe,le,ce,"\u2296","\\ominus",!0),ie(oe,le,ce,"\u228e","\\uplus",!0),ie(oe,le,ce,"\u2293","\\sqcap",!0),ie(oe,le,ce,"\u2217","\\ast"),ie(oe,le,ce,"\u2294","\\sqcup",!0),ie(oe,le,ce,"\u25ef","\\bigcirc",!0),ie(oe,le,ce,"\u2219","\\bullet",!0),ie(oe,le,ce,"\u2021","\\ddagger"),ie(oe,le,ce,"\u2240","\\wr",!0),ie(oe,le,ce,"\u2a3f","\\amalg"),ie(oe,le,ce,"&","\\And"),ie(oe,le,be,"\u27f5","\\longleftarrow",!0),ie(oe,le,be,"\u21d0","\\Leftarrow",!0),ie(oe,le,be,"\u27f8","\\Longleftarrow",!0),ie(oe,le,be,"\u27f6","\\longrightarrow",!0),ie(oe,le,be,"\u21d2","\\Rightarrow",!0),ie(oe,le,be,"\u27f9","\\Longrightarrow",!0),ie(oe,le,be,"\u2194","\\leftrightarrow",!0),ie(oe,le,be,"\u27f7","\\longleftrightarrow",!0),ie(oe,le,be,"\u21d4","\\Leftrightarrow",!0),ie(oe,le,be,"\u27fa","\\Longleftrightarrow",!0),ie(oe,le,be,"\u21a6","\\mapsto",!0),ie(oe,le,be,"\u27fc","\\longmapsto",!0),ie(oe,le,be,"\u2197","\\nearrow",!0),ie(oe,le,be,"\u21a9","\\hookleftarrow",!0),ie(oe,le,be,"\u21aa","\\hookrightarrow",!0),ie(oe,le,be,"\u2198","\\searrow",!0),ie(oe,le,be,"\u21bc","\\leftharpoonup",!0),ie(oe,le,be,"\u21c0","\\rightharpoonup",!0),ie(oe,le,be,"\u2199","\\swarrow",!0),ie(oe,le,be,"\u21bd","\\leftharpoondown",!0),ie(oe,le,be,"\u21c1","\\rightharpoondown",!0),ie(oe,le,be,"\u2196","\\nwarrow",!0),ie(oe,le,be,"\u21cc","\\rightleftharpoons",!0),ie(oe,he,be,"\u226e","\\nless",!0),ie(oe,he,be,"\ue010","\\@nleqslant"),ie(oe,he,be,"\ue011","\\@nleqq"),ie(oe,he,be,"\u2a87","\\lneq",!0),ie(oe,he,be,"\u2268","\\lneqq",!0),ie(oe,he,be,"\ue00c","\\@lvertneqq"),ie(oe,he,be,"\u22e6","\\lnsim",!0),ie(oe,he,be,"\u2a89","\\lnapprox",!0),ie(oe,he,be,"\u2280","\\nprec",!0),ie(oe,he,be,"\u22e0","\\npreceq",!0),ie(oe,he,be,"\u22e8","\\precnsim",!0),ie(oe,he,be,"\u2ab9","\\precnapprox",!0),ie(oe,he,be,"\u2241","\\nsim",!0),ie(oe,he,be,"\ue006","\\@nshortmid"),ie(oe,he,be,"\u2224","\\nmid",!0),ie(oe,he,be,"\u22ac","\\nvdash",!0),ie(oe,he,be,"\u22ad","\\nvDash",!0),ie(oe,he,be,"\u22ea","\\ntriangleleft"),ie(oe,he,be,"\u22ec","\\ntrianglelefteq",!0),ie(oe,he,be,"\u228a","\\subsetneq",!0),ie(oe,he,be,"\ue01a","\\@varsubsetneq"),ie(oe,he,be,"\u2acb","\\subsetneqq",!0),ie(oe,he,be,"\ue017","\\@varsubsetneqq"),ie(oe,he,be,"\u226f","\\ngtr",!0),ie(oe,he,be,"\ue00f","\\@ngeqslant"),ie(oe,he,be,"\ue00e","\\@ngeqq"),ie(oe,he,be,"\u2a88","\\gneq",!0),ie(oe,he,be,"\u2269","\\gneqq",!0),ie(oe,he,be,"\ue00d","\\@gvertneqq"),ie(oe,he,be,"\u22e7","\\gnsim",!0),ie(oe,he,be,"\u2a8a","\\gnapprox",!0),ie(oe,he,be,"\u2281","\\nsucc",!0),ie(oe,he,be,"\u22e1","\\nsucceq",!0),ie(oe,he,be,"\u22e9","\\succnsim",!0),ie(oe,he,be,"\u2aba","\\succnapprox",!0),ie(oe,he,be,"\u2246","\\ncong",!0),ie(oe,he,be,"\ue007","\\@nshortparallel"),ie(oe,he,be,"\u2226","\\nparallel",!0),ie(oe,he,be,"\u22af","\\nVDash",!0),ie(oe,he,be,"\u22eb","\\ntriangleright"),ie(oe,he,be,"\u22ed","\\ntrianglerighteq",!0),ie(oe,he,be,"\ue018","\\@nsupseteqq"),ie(oe,he,be,"\u228b","\\supsetneq",!0),ie(oe,he,be,"\ue01b","\\@varsupsetneq"),ie(oe,he,be,"\u2acc","\\supsetneqq",!0),ie(oe,he,be,"\ue019","\\@varsupsetneqq"),ie(oe,he,be,"\u22ae","\\nVdash",!0),ie(oe,he,be,"\u2ab5","\\precneqq",!0),ie(oe,he,be,"\u2ab6","\\succneqq",!0),ie(oe,he,be,"\ue016","\\@nsubseteqq"),ie(oe,he,ce,"\u22b4","\\unlhd"),ie(oe,he,ce,"\u22b5","\\unrhd"),ie(oe,he,be,"\u219a","\\nleftarrow",!0),ie(oe,he,be,"\u219b","\\nrightarrow",!0),ie(oe,he,be,"\u21cd","\\nLeftarrow",!0),ie(oe,he,be,"\u21cf","\\nRightarrow",!0),ie(oe,he,be,"\u21ae","\\nleftrightarrow",!0),ie(oe,he,be,"\u21ce","\\nLeftrightarrow",!0),ie(oe,he,be,"\u25b3","\\vartriangle"),ie(oe,he,xe,"\u210f","\\hslash"),ie(oe,he,xe,"\u25bd","\\triangledown"),ie(oe,he,xe,"\u25ca","\\lozenge"),ie(oe,he,xe,"\u24c8","\\circledS"),ie(oe,he,xe,"\xae","\\circledR"),ie(se,he,xe,"\xae","\\circledR"),ie(oe,he,xe,"\u2221","\\measuredangle",!0),ie(oe,he,xe,"\u2204","\\nexists"),ie(oe,he,xe,"\u2127","\\mho"),ie(oe,he,xe,"\u2132","\\Finv",!0),ie(oe,he,xe,"\u2141","\\Game",!0),ie(oe,he,xe,"\u2035","\\backprime"),ie(oe,he,xe,"\u25b2","\\blacktriangle"),ie(oe,he,xe,"\u25bc","\\blacktriangledown"),ie(oe,he,xe,"\u25a0","\\blacksquare"),ie(oe,he,xe,"\u29eb","\\blacklozenge"),ie(oe,he,xe,"\u2605","\\bigstar"),ie(oe,he,xe,"\u2222","\\sphericalangle",!0),ie(oe,he,xe,"\u2201","\\complement",!0),ie(oe,he,xe,"\xf0","\\eth",!0),ie(se,le,xe,"\xf0","\xf0"),ie(oe,he,xe,"\u2571","\\diagup"),ie(oe,he,xe,"\u2572","\\diagdown"),ie(oe,he,xe,"\u25a1","\\square"),ie(oe,he,xe,"\u25a1","\\Box"),ie(oe,he,xe,"\u25ca","\\Diamond"),ie(oe,he,xe,"\xa5","\\yen",!0),ie(se,he,xe,"\xa5","\\yen",!0),ie(oe,he,xe,"\u2713","\\checkmark",!0),ie(se,he,xe,"\u2713","\\checkmark"),ie(oe,he,xe,"\u2136","\\beth",!0),ie(oe,he,xe,"\u2138","\\daleth",!0),ie(oe,he,xe,"\u2137","\\gimel",!0),ie(oe,he,xe,"\u03dd","\\digamma",!0),ie(oe,he,xe,"\u03f0","\\varkappa"),ie(oe,he,ge,"\u250c","\\@ulcorner",!0),ie(oe,he,ue,"\u2510","\\@urcorner",!0),ie(oe,he,ge,"\u2514","\\@llcorner",!0),ie(oe,he,ue,"\u2518","\\@lrcorner",!0),ie(oe,he,be,"\u2266","\\leqq",!0),ie(oe,he,be,"\u2a7d","\\leqslant",!0),ie(oe,he,be,"\u2a95","\\eqslantless",!0),ie(oe,he,be,"\u2272","\\lesssim",!0),ie(oe,he,be,"\u2a85","\\lessapprox",!0),ie(oe,he,be,"\u224a","\\approxeq",!0),ie(oe,he,ce,"\u22d6","\\lessdot"),ie(oe,he,be,"\u22d8","\\lll",!0),ie(oe,he,be,"\u2276","\\lessgtr",!0),ie(oe,he,be,"\u22da","\\lesseqgtr",!0),ie(oe,he,be,"\u2a8b","\\lesseqqgtr",!0),ie(oe,he,be,"\u2251","\\doteqdot"),ie(oe,he,be,"\u2253","\\risingdotseq",!0),ie(oe,he,be,"\u2252","\\fallingdotseq",!0),ie(oe,he,be,"\u223d","\\backsim",!0),ie(oe,he,be,"\u22cd","\\backsimeq",!0),ie(oe,he,be,"\u2ac5","\\subseteqq",!0),ie(oe,he,be,"\u22d0","\\Subset",!0),ie(oe,he,be,"\u228f","\\sqsubset",!0),ie(oe,he,be,"\u227c","\\preccurlyeq",!0),ie(oe,he,be,"\u22de","\\curlyeqprec",!0),ie(oe,he,be,"\u227e","\\precsim",!0),ie(oe,he,be,"\u2ab7","\\precapprox",!0),ie(oe,he,be,"\u22b2","\\vartriangleleft"),ie(oe,he,be,"\u22b4","\\trianglelefteq"),ie(oe,he,be,"\u22a8","\\vDash",!0),ie(oe,he,be,"\u22aa","\\Vvdash",!0),ie(oe,he,be,"\u2323","\\smallsmile"),ie(oe,he,be,"\u2322","\\smallfrown"),ie(oe,he,be,"\u224f","\\bumpeq",!0),ie(oe,he,be,"\u224e","\\Bumpeq",!0),ie(oe,he,be,"\u2267","\\geqq",!0),ie(oe,he,be,"\u2a7e","\\geqslant",!0),ie(oe,he,be,"\u2a96","\\eqslantgtr",!0),ie(oe,he,be,"\u2273","\\gtrsim",!0),ie(oe,he,be,"\u2a86","\\gtrapprox",!0),ie(oe,he,ce,"\u22d7","\\gtrdot"),ie(oe,he,be,"\u22d9","\\ggg",!0),ie(oe,he,be,"\u2277","\\gtrless",!0),ie(oe,he,be,"\u22db","\\gtreqless",!0),ie(oe,he,be,"\u2a8c","\\gtreqqless",!0),ie(oe,he,be,"\u2256","\\eqcirc",!0),ie(oe,he,be,"\u2257","\\circeq",!0),ie(oe,he,be,"\u225c","\\triangleq",!0),ie(oe,he,be,"\u223c","\\thicksim"),ie(oe,he,be,"\u2248","\\thickapprox"),ie(oe,he,be,"\u2ac6","\\supseteqq",!0),ie(oe,he,be,"\u22d1","\\Supset",!0),ie(oe,he,be,"\u2290","\\sqsupset",!0),ie(oe,he,be,"\u227d","\\succcurlyeq",!0),ie(oe,he,be,"\u22df","\\curlyeqsucc",!0),ie(oe,he,be,"\u227f","\\succsim",!0),ie(oe,he,be,"\u2ab8","\\succapprox",!0),ie(oe,he,be,"\u22b3","\\vartriangleright"),ie(oe,he,be,"\u22b5","\\trianglerighteq"),ie(oe,he,be,"\u22a9","\\Vdash",!0),ie(oe,he,be,"\u2223","\\shortmid"),ie(oe,he,be,"\u2225","\\shortparallel"),ie(oe,he,be,"\u226c","\\between",!0),ie(oe,he,be,"\u22d4","\\pitchfork",!0),ie(oe,he,be,"\u221d","\\varpropto"),ie(oe,he,be,"\u25c0","\\blacktriangleleft"),ie(oe,he,be,"\u2234","\\therefore",!0),ie(oe,he,be,"\u220d","\\backepsilon"),ie(oe,he,be,"\u25b6","\\blacktriangleright"),ie(oe,he,be,"\u2235","\\because",!0),ie(oe,he,be,"\u22d8","\\llless"),ie(oe,he,be,"\u22d9","\\gggtr"),ie(oe,he,ce,"\u22b2","\\lhd"),ie(oe,he,ce,"\u22b3","\\rhd"),ie(oe,he,be,"\u2242","\\eqsim",!0),ie(oe,le,be,"\u22c8","\\Join"),ie(oe,he,be,"\u2251","\\Doteq",!0),ie(oe,he,ce,"\u2214","\\dotplus",!0),ie(oe,he,ce,"\u2216","\\smallsetminus"),ie(oe,he,ce,"\u22d2","\\Cap",!0),ie(oe,he,ce,"\u22d3","\\Cup",!0),ie(oe,he,ce,"\u2a5e","\\doublebarwedge",!0),ie(oe,he,ce,"\u229f","\\boxminus",!0),ie(oe,he,ce,"\u229e","\\boxplus",!0),ie(oe,he,ce,"\u22c7","\\divideontimes",!0),ie(oe,he,ce,"\u22c9","\\ltimes",!0),ie(oe,he,ce,"\u22ca","\\rtimes",!0),ie(oe,he,ce,"\u22cb","\\leftthreetimes",!0),ie(oe,he,ce,"\u22cc","\\rightthreetimes",!0),ie(oe,he,ce,"\u22cf","\\curlywedge",!0),ie(oe,he,ce,"\u22ce","\\curlyvee",!0),ie(oe,he,ce,"\u229d","\\circleddash",!0),ie(oe,he,ce,"\u229b","\\circledast",!0),ie(oe,he,ce,"\u22c5","\\centerdot"),ie(oe,he,ce,"\u22ba","\\intercal",!0),ie(oe,he,ce,"\u22d2","\\doublecap"),ie(oe,he,ce,"\u22d3","\\doublecup"),ie(oe,he,ce,"\u22a0","\\boxtimes",!0),ie(oe,he,be,"\u21e2","\\dashrightarrow",!0),ie(oe,he,be,"\u21e0","\\dashleftarrow",!0),ie(oe,he,be,"\u21c7","\\leftleftarrows",!0),ie(oe,he,be,"\u21c6","\\leftrightarrows",!0),ie(oe,he,be,"\u21da","\\Lleftarrow",!0),ie(oe,he,be,"\u219e","\\twoheadleftarrow",!0),ie(oe,he,be,"\u21a2","\\leftarrowtail",!0),ie(oe,he,be,"\u21ab","\\looparrowleft",!0),ie(oe,he,be,"\u21cb","\\leftrightharpoons",!0),ie(oe,he,be,"\u21b6","\\curvearrowleft",!0),ie(oe,he,be,"\u21ba","\\circlearrowleft",!0),ie(oe,he,be,"\u21b0","\\Lsh",!0),ie(oe,he,be,"\u21c8","\\upuparrows",!0),ie(oe,he,be,"\u21bf","\\upharpoonleft",!0),ie(oe,he,be,"\u21c3","\\downharpoonleft",!0),ie(oe,le,be,"\u22b6","\\origof",!0),ie(oe,le,be,"\u22b7","\\imageof",!0),ie(oe,he,be,"\u22b8","\\multimap",!0),ie(oe,he,be,"\u21ad","\\leftrightsquigarrow",!0),ie(oe,he,be,"\u21c9","\\rightrightarrows",!0),ie(oe,he,be,"\u21c4","\\rightleftarrows",!0),ie(oe,he,be,"\u21a0","\\twoheadrightarrow",!0),ie(oe,he,be,"\u21a3","\\rightarrowtail",!0),ie(oe,he,be,"\u21ac","\\looparrowright",!0),ie(oe,he,be,"\u21b7","\\curvearrowright",!0),ie(oe,he,be,"\u21bb","\\circlearrowright",!0),ie(oe,he,be,"\u21b1","\\Rsh",!0),ie(oe,he,be,"\u21ca","\\downdownarrows",!0),ie(oe,he,be,"\u21be","\\upharpoonright",!0),ie(oe,he,be,"\u21c2","\\downharpoonright",!0),ie(oe,he,be,"\u21dd","\\rightsquigarrow",!0),ie(oe,he,be,"\u21dd","\\leadsto"),ie(oe,he,be,"\u21db","\\Rrightarrow",!0),ie(oe,he,be,"\u21be","\\restriction"),ie(oe,le,xe,"\u2018","`"),ie(oe,le,xe,"$","\\$"),ie(se,le,xe,"$","\\$"),ie(se,le,xe,"$","\\textdollar"),ie(oe,le,xe,"%","\\%"),ie(se,le,xe,"%","\\%"),ie(oe,le,xe,"_","\\_"),ie(se,le,xe,"_","\\_"),ie(se,le,xe,"_","\\textunderscore"),ie(oe,le,xe,"\u2220","\\angle",!0),ie(oe,le,xe,"\u221e","\\infty",!0),ie(oe,le,xe,"\u2032","\\prime"),ie(oe,le,xe,"\u25b3","\\triangle"),ie(oe,le,xe,"\u0393","\\Gamma",!0),ie(oe,le,xe,"\u0394","\\Delta",!0),ie(oe,le,xe,"\u0398","\\Theta",!0),ie(oe,le,xe,"\u039b","\\Lambda",!0),ie(oe,le,xe,"\u039e","\\Xi",!0),ie(oe,le,xe,"\u03a0","\\Pi",!0),ie(oe,le,xe,"\u03a3","\\Sigma",!0),ie(oe,le,xe,"\u03a5","\\Upsilon",!0),ie(oe,le,xe,"\u03a6","\\Phi",!0),ie(oe,le,xe,"\u03a8","\\Psi",!0),ie(oe,le,xe,"\u03a9","\\Omega",!0),ie(oe,le,xe,"A","\u0391"),ie(oe,le,xe,"B","\u0392"),ie(oe,le,xe,"E","\u0395"),ie(oe,le,xe,"Z","\u0396"),ie(oe,le,xe,"H","\u0397"),ie(oe,le,xe,"I","\u0399"),ie(oe,le,xe,"K","\u039a"),ie(oe,le,xe,"M","\u039c"),ie(oe,le,xe,"N","\u039d"),ie(oe,le,xe,"O","\u039f"),ie(oe,le,xe,"P","\u03a1"),ie(oe,le,xe,"T","\u03a4"),ie(oe,le,xe,"X","\u03a7"),ie(oe,le,xe,"\xac","\\neg",!0),ie(oe,le,xe,"\xac","\\lnot"),ie(oe,le,xe,"\u22a4","\\top"),ie(oe,le,xe,"\u22a5","\\bot"),ie(oe,le,xe,"\u2205","\\emptyset"),ie(oe,he,xe,"\u2205","\\varnothing"),ie(oe,le,de,"\u03b1","\\alpha",!0),ie(oe,le,de,"\u03b2","\\beta",!0),ie(oe,le,de,"\u03b3","\\gamma",!0),ie(oe,le,de,"\u03b4","\\delta",!0),ie(oe,le,de,"\u03f5","\\epsilon",!0),ie(oe,le,de,"\u03b6","\\zeta",!0),ie(oe,le,de,"\u03b7","\\eta",!0),ie(oe,le,de,"\u03b8","\\theta",!0),ie(oe,le,de,"\u03b9","\\iota",!0),ie(oe,le,de,"\u03ba","\\kappa",!0),ie(oe,le,de,"\u03bb","\\lambda",!0),ie(oe,le,de,"\u03bc","\\mu",!0),ie(oe,le,de,"\u03bd","\\nu",!0),ie(oe,le,de,"\u03be","\\xi",!0),ie(oe,le,de,"\u03bf","\\omicron",!0),ie(oe,le,de,"\u03c0","\\pi",!0),ie(oe,le,de,"\u03c1","\\rho",!0),ie(oe,le,de,"\u03c3","\\sigma",!0),ie(oe,le,de,"\u03c4","\\tau",!0),ie(oe,le,de,"\u03c5","\\upsilon",!0),ie(oe,le,de,"\u03d5","\\phi",!0),ie(oe,le,de,"\u03c7","\\chi",!0),ie(oe,le,de,"\u03c8","\\psi",!0),ie(oe,le,de,"\u03c9","\\omega",!0),ie(oe,le,de,"\u03b5","\\varepsilon",!0),ie(oe,le,de,"\u03d1","\\vartheta",!0),ie(oe,le,de,"\u03d6","\\varpi",!0),ie(oe,le,de,"\u03f1","\\varrho",!0),ie(oe,le,de,"\u03c2","\\varsigma",!0),ie(oe,le,de,"\u03c6","\\varphi",!0),ie(oe,le,ce,"\u2217","*",!0),ie(oe,le,ce,"+","+"),ie(oe,le,ce,"\u2212","-",!0),ie(oe,le,ce,"\u22c5","\\cdot",!0),ie(oe,le,ce,"\u2218","\\circ",!0),ie(oe,le,ce,"\xf7","\\div",!0),ie(oe,le,ce,"\xb1","\\pm",!0),ie(oe,le,ce,"\xd7","\\times",!0),ie(oe,le,ce,"\u2229","\\cap",!0),ie(oe,le,ce,"\u222a","\\cup",!0),ie(oe,le,ce,"\u2216","\\setminus",!0),ie(oe,le,ce,"\u2227","\\land"),ie(oe,le,ce,"\u2228","\\lor"),ie(oe,le,ce,"\u2227","\\wedge",!0),ie(oe,le,ce,"\u2228","\\vee",!0),ie(oe,le,xe,"\u221a","\\surd"),ie(oe,le,ge,"\u27e8","\\langle",!0),ie(oe,le,ge,"\u2223","\\lvert"),ie(oe,le,ge,"\u2225","\\lVert"),ie(oe,le,ue,"?","?"),ie(oe,le,ue,"!","!"),ie(oe,le,ue,"\u27e9","\\rangle",!0),ie(oe,le,ue,"\u2223","\\rvert"),ie(oe,le,ue,"\u2225","\\rVert"),ie(oe,le,be,"=","="),ie(oe,le,be,":",":"),ie(oe,le,be,"\u2248","\\approx",!0),ie(oe,le,be,"\u2245","\\cong",!0),ie(oe,le,be,"\u2265","\\ge"),ie(oe,le,be,"\u2265","\\geq",!0),ie(oe,le,be,"\u2190","\\gets"),ie(oe,le,be,">","\\gt",!0),ie(oe,le,be,"\u2208","\\in",!0),ie(oe,le,be,"\ue020","\\@not"),ie(oe,le,be,"\u2282","\\subset",!0),ie(oe,le,be,"\u2283","\\supset",!0),ie(oe,le,be,"\u2286","\\subseteq",!0),ie(oe,le,be,"\u2287","\\supseteq",!0),ie(oe,he,be,"\u2288","\\nsubseteq",!0),ie(oe,he,be,"\u2289","\\nsupseteq",!0),ie(oe,le,be,"\u22a8","\\models"),ie(oe,le,be,"\u2190","\\leftarrow",!0),ie(oe,le,be,"\u2264","\\le"),ie(oe,le,be,"\u2264","\\leq",!0),ie(oe,le,be,"<","\\lt",!0),ie(oe,le,be,"\u2192","\\rightarrow",!0),ie(oe,le,be,"\u2192","\\to"),ie(oe,he,be,"\u2271","\\ngeq",!0),ie(oe,he,be,"\u2270","\\nleq",!0),ie(oe,le,ye,"\xa0","\\ "),ie(oe,le,ye,"\xa0","\\space"),ie(oe,le,ye,"\xa0","\\nobreakspace"),ie(se,le,ye,"\xa0","\\ "),ie(se,le,ye,"\xa0"," "),ie(se,le,ye,"\xa0","\\space"),ie(se,le,ye,"\xa0","\\nobreakspace"),ie(oe,le,ye,null,"\\nobreak"),ie(oe,le,ye,null,"\\allowbreak"),ie(oe,le,ve,",",","),ie(oe,le,ve,";",";"),ie(oe,he,ce,"\u22bc","\\barwedge",!0),ie(oe,he,ce,"\u22bb","\\veebar",!0),ie(oe,le,ce,"\u2299","\\odot",!0),ie(oe,le,ce,"\u2295","\\oplus",!0),ie(oe,le,ce,"\u2297","\\otimes",!0),ie(oe,le,xe,"\u2202","\\partial",!0),ie(oe,le,ce,"\u2298","\\oslash",!0),ie(oe,he,ce,"\u229a","\\circledcirc",!0),ie(oe,he,ce,"\u22a1","\\boxdot",!0),ie(oe,le,ce,"\u25b3","\\bigtriangleup"),ie(oe,le,ce,"\u25bd","\\bigtriangledown"),ie(oe,le,ce,"\u2020","\\dagger"),ie(oe,le,ce,"\u22c4","\\diamond"),ie(oe,le,ce,"\u22c6","\\star"),ie(oe,le,ce,"\u25c3","\\triangleleft"),ie(oe,le,ce,"\u25b9","\\triangleright"),ie(oe,le,ge,"{","\\{"),ie(se,le,xe,"{","\\{"),ie(se,le,xe,"{","\\textbraceleft"),ie(oe,le,ue,"}","\\}"),ie(se,le,xe,"}","\\}"),ie(se,le,xe,"}","\\textbraceright"),ie(oe,le,ge,"{","\\lbrace"),ie(oe,le,ue,"}","\\rbrace"),ie(oe,le,ge,"[","\\lbrack",!0),ie(se,le,xe,"[","\\lbrack",!0),ie(oe,le,ue,"]","\\rbrack",!0),ie(se,le,xe,"]","\\rbrack",!0),ie(oe,le,ge,"(","\\lparen",!0),ie(oe,le,ue,")","\\rparen",!0),ie(se,le,xe,"<","\\textless",!0),ie(se,le,xe,">","\\textgreater",!0),ie(oe,le,ge,"\u230a","\\lfloor",!0),ie(oe,le,ue,"\u230b","\\rfloor",!0),ie(oe,le,ge,"\u2308","\\lceil",!0),ie(oe,le,ue,"\u2309","\\rceil",!0),ie(oe,le,xe,"\\","\\backslash"),ie(oe,le,xe,"\u2223","|"),ie(oe,le,xe,"\u2223","\\vert"),ie(se,le,xe,"|","\\textbar",!0),ie(oe,le,xe,"\u2225","\\|"),ie(oe,le,xe,"\u2225","\\Vert"),ie(se,le,xe,"\u2225","\\textbardbl"),ie(se,le,xe,"~","\\textasciitilde"),ie(se,le,xe,"\\","\\textbackslash"),ie(se,le,xe,"^","\\textasciicircum"),ie(oe,le,be,"\u2191","\\uparrow",!0),ie(oe,le,be,"\u21d1","\\Uparrow",!0),ie(oe,le,be,"\u2193","\\downarrow",!0),ie(oe,le,be,"\u21d3","\\Downarrow",!0),ie(oe,le,be,"\u2195","\\updownarrow",!0),ie(oe,le,be,"\u21d5","\\Updownarrow",!0),ie(oe,le,fe,"\u2210","\\coprod"),ie(oe,le,fe,"\u22c1","\\bigvee"),ie(oe,le,fe,"\u22c0","\\bigwedge"),ie(oe,le,fe,"\u2a04","\\biguplus"),ie(oe,le,fe,"\u22c2","\\bigcap"),ie(oe,le,fe,"\u22c3","\\bigcup"),ie(oe,le,fe,"\u222b","\\int"),ie(oe,le,fe,"\u222b","\\intop"),ie(oe,le,fe,"\u222c","\\iint"),ie(oe,le,fe,"\u222d","\\iiint"),ie(oe,le,fe,"\u220f","\\prod"),ie(oe,le,fe,"\u2211","\\sum"),ie(oe,le,fe,"\u2a02","\\bigotimes"),ie(oe,le,fe,"\u2a01","\\bigoplus"),ie(oe,le,fe,"\u2a00","\\bigodot"),ie(oe,le,fe,"\u222e","\\oint"),ie(oe,le,fe,"\u222f","\\oiint"),ie(oe,le,fe,"\u2230","\\oiiint"),ie(oe,le,fe,"\u2a06","\\bigsqcup"),ie(oe,le,fe,"\u222b","\\smallint"),ie(se,le,pe,"\u2026","\\textellipsis"),ie(oe,le,pe,"\u2026","\\mathellipsis"),ie(se,le,pe,"\u2026","\\ldots",!0),ie(oe,le,pe,"\u2026","\\ldots",!0),ie(oe,le,pe,"\u22ef","\\@cdots",!0),ie(oe,le,pe,"\u22f1","\\ddots",!0),ie(oe,le,xe,"\u22ee","\\varvdots"),ie(oe,le,me,"\u02ca","\\acute"),ie(oe,le,me,"\u02cb","\\grave"),ie(oe,le,me,"\xa8","\\ddot"),ie(oe,le,me,"~","\\tilde"),ie(oe,le,me,"\u02c9","\\bar"),ie(oe,le,me,"\u02d8","\\breve"),ie(oe,le,me,"\u02c7","\\check"),ie(oe,le,me,"^","\\hat"),ie(oe,le,me,"\u20d7","\\vec"),ie(oe,le,me,"\u02d9","\\dot"),ie(oe,le,me,"\u02da","\\mathring"),ie(oe,le,de,"\ue131","\\@imath"),ie(oe,le,de,"\ue237","\\@jmath"),ie(oe,le,xe,"\u0131","\u0131"),ie(oe,le,xe,"\u0237","\u0237"),ie(se,le,xe,"\u0131","\\i",!0),ie(se,le,xe,"\u0237","\\j",!0),ie(se,le,xe,"\xdf","\\ss",!0),ie(se,le,xe,"\xe6","\\ae",!0),ie(se,le,xe,"\u0153","\\oe",!0),ie(se,le,xe,"\xf8","\\o",!0),ie(se,le,xe,"\xc6","\\AE",!0),ie(se,le,xe,"\u0152","\\OE",!0),ie(se,le,xe,"\xd8","\\O",!0),ie(se,le,me,"\u02ca","\\'"),ie(se,le,me,"\u02cb","\\`"),ie(se,le,me,"\u02c6","\\^"),ie(se,le,me,"\u02dc","\\~"),ie(se,le,me,"\u02c9","\\="),ie(se,le,me,"\u02d8","\\u"),ie(se,le,me,"\u02d9","\\."),ie(se,le,me,"\xb8","\\c"),ie(se,le,me,"\u02da","\\r"),ie(se,le,me,"\u02c7","\\v"),ie(se,le,me,"\xa8",'\\"'),ie(se,le,me,"\u02dd","\\H"),ie(se,le,me,"\u25ef","\\textcircled");var we={"--":!0,"---":!0,"``":!0,"''":!0};ie(se,le,xe,"\u2013","--",!0),ie(se,le,xe,"\u2013","\\textendash"),ie(se,le,xe,"\u2014","---",!0),ie(se,le,xe,"\u2014","\\textemdash"),ie(se,le,xe,"\u2018","`",!0),ie(se,le,xe,"\u2018","\\textquoteleft"),ie(se,le,xe,"\u2019","'",!0),ie(se,le,xe,"\u2019","\\textquoteright"),ie(se,le,xe,"\u201c","``",!0),ie(se,le,xe,"\u201c","\\textquotedblleft"),ie(se,le,xe,"\u201d","''",!0),ie(se,le,xe,"\u201d","\\textquotedblright"),ie(oe,le,xe,"\xb0","\\degree",!0),ie(se,le,xe,"\xb0","\\degree"),ie(se,le,xe,"\xb0","\\textdegree",!0),ie(oe,le,xe,"\xa3","\\pounds"),ie(oe,le,xe,"\xa3","\\mathsterling",!0),ie(se,le,xe,"\xa3","\\pounds"),ie(se,le,xe,"\xa3","\\textsterling",!0),ie(oe,he,xe,"\u2720","\\maltese"),ie(se,he,xe,"\u2720","\\maltese");for(var ke='0123456789/@."',Se=0;Se<ke.length;Se++){var Me=ke.charAt(Se);ie(oe,le,xe,Me,Me)}for(var ze='0123456789!@*()-=+";:?/.,',Ae=0;Ae<ze.length;Ae++){var Te=ze.charAt(Ae);ie(se,le,xe,Te,Te)}for(var Be="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",Ce=0;Ce<Be.length;Ce++){var qe=Be.charAt(Ce);ie(oe,le,de,qe,qe),ie(se,le,xe,qe,qe)}ie(oe,he,xe,"C","\u2102"),ie(se,he,xe,"C","\u2102"),ie(oe,he,xe,"H","\u210d"),ie(se,he,xe,"H","\u210d"),ie(oe,he,xe,"N","\u2115"),ie(se,he,xe,"N","\u2115"),ie(oe,he,xe,"P","\u2119"),ie(se,he,xe,"P","\u2119"),ie(oe,he,xe,"Q","\u211a"),ie(se,he,xe,"Q","\u211a"),ie(oe,he,xe,"R","\u211d"),ie(se,he,xe,"R","\u211d"),ie(oe,he,xe,"Z","\u2124"),ie(se,he,xe,"Z","\u2124"),ie(oe,le,de,"h","\u210e"),ie(se,le,de,"h","\u210e");for(var Ne="",Ie=0;Ie<Be.length;Ie++){var Re=Be.charAt(Ie);ie(oe,le,de,Re,Ne=String.fromCharCode(55349,56320+Ie)),ie(se,le,xe,Re,Ne),ie(oe,le,de,Re,Ne=String.fromCharCode(55349,56372+Ie)),ie(se,le,xe,Re,Ne),ie(oe,le,de,Re,Ne=String.fromCharCode(55349,56424+Ie)),ie(se,le,xe,Re,Ne),ie(oe,le,de,Re,Ne=String.fromCharCode(55349,56580+Ie)),ie(se,le,xe,Re,Ne),ie(oe,le,de,Re,Ne=String.fromCharCode(55349,56736+Ie)),ie(se,le,xe,Re,Ne),ie(oe,le,de,Re,Ne=String.fromCharCode(55349,56788+Ie)),ie(se,le,xe,Re,Ne),ie(oe,le,de,Re,Ne=String.fromCharCode(55349,56840+Ie)),ie(se,le,xe,Re,Ne),ie(oe,le,de,Re,Ne=String.fromCharCode(55349,56944+Ie)),ie(se,le,xe,Re,Ne),Ie<26&&(ie(oe,le,de,Re,Ne=String.fromCharCode(55349,56632+Ie)),ie(se,le,xe,Re,Ne),ie(oe,le,de,Re,Ne=String.fromCharCode(55349,56476+Ie)),ie(se,le,xe,Re,Ne))}ie(oe,le,de,"k",Ne=String.fromCharCode(55349,56668)),ie(se,le,xe,"k",Ne);for(var Oe=0;Oe<10;Oe++){var He=Oe.toString();ie(oe,le,de,He,Ne=String.fromCharCode(55349,57294+Oe)),ie(se,le,xe,He,Ne),ie(oe,le,de,He,Ne=String.fromCharCode(55349,57314+Oe)),ie(se,le,xe,He,Ne),ie(oe,le,de,He,Ne=String.fromCharCode(55349,57324+Oe)),ie(se,le,xe,He,Ne),ie(oe,le,de,He,Ne=String.fromCharCode(55349,57334+Oe)),ie(se,le,xe,He,Ne)}for(var Ee="\xd0\xde\xfe",Le=0;Le<Ee.length;Le++){var De=Ee.charAt(Le);ie(oe,le,de,De,De),ie(se,le,xe,De,De)}var Pe=[["mathbf","textbf","Main-Bold"],["mathbf","textbf","Main-Bold"],["mathnormal","textit","Math-Italic"],["mathnormal","textit","Math-Italic"],["boldsymbol","boldsymbol","Main-BoldItalic"],["boldsymbol","boldsymbol","Main-BoldItalic"],["mathscr","textscr","Script-Regular"],["","",""],["","",""],["","",""],["mathfrak","textfrak","Fraktur-Regular"],["mathfrak","textfrak","Fraktur-Regular"],["mathbb","textbb","AMS-Regular"],["mathbb","textbb","AMS-Regular"],["","",""],["","",""],["mathsf","textsf","SansSerif-Regular"],["mathsf","textsf","SansSerif-Regular"],["mathboldsf","textboldsf","SansSerif-Bold"],["mathboldsf","textboldsf","SansSerif-Bold"],["mathitsf","textitsf","SansSerif-Italic"],["mathitsf","textitsf","SansSerif-Italic"],["","",""],["","",""],["mathtt","texttt","Typewriter-Regular"],["mathtt","texttt","Typewriter-Regular"]],Fe=[["mathbf","textbf","Main-Bold"],["","",""],["mathsf","textsf","SansSerif-Regular"],["mathboldsf","textboldsf","SansSerif-Bold"],["mathtt","texttt","Typewriter-Regular"]],Ve=function(e,t,r){return ae[r][e]&&ae[r][e].replace&&(e=ae[r][e].replace),{value:e,metrics:q(e,t,r)}},Ge=function(e,t,r,n,a){var i,o=Ve(e,t,r),s=o.metrics;if(e=o.value,s){var l=s.italic;("text"===r||n&&"mathit"===n.font)&&(l=0),i=new Z(e,s.height,s.depth,l,s.skew,s.width,a)}else"undefined"!=typeof console&&console.warn("No character metrics for '"+e+"' in style '"+t+"' and mode '"+r+"'"),i=new Z(e,0,0,0,0,0,a);if(n){i.maxFontSize=n.sizeMultiplier,n.style.isTight()&&i.classes.push("mtight");var h=n.getColor();h&&(i.style.color=h)}return i},Ue=function(e,t){if(G(e.classes)!==G(t.classes)||e.skew!==t.skew||e.maxFontSize!==t.maxFontSize)return!1;if(1===e.classes.length){var r=e.classes[0];if("mbin"===r||"mord"===r)return!1}for(var n in e.style)if(e.style.hasOwnProperty(n)&&e.style[n]!==t.style[n])return!1;for(var a in t.style)if(t.style.hasOwnProperty(a)&&e.style[a]!==t.style[a])return!1;return!0},Ye=function(e){for(var t=0,r=0,n=0,a=0;a<e.children.length;a++){var i=e.children[a];i.height>t&&(t=i.height),i.depth>r&&(r=i.depth),i.maxFontSize>n&&(n=i.maxFontSize)}e.height=t,e.depth=r,e.maxFontSize=n},Xe=function(e,t,r,n){var a=new W(e,t,r,n);return Ye(a),a},We=function(e,t,r,n){return new W(e,t,r,n)},_e=function(e){var t=new A(e);return Ye(t),t},je=function(e,t,r){var n="";switch(e){case"amsrm":n="AMS";break;case"textrm":n="Main";break;case"textsf":n="SansSerif";break;case"texttt":n="Typewriter";break;default:n=e}return n+"-"+("textbf"===t&&"textit"===r?"BoldItalic":"textbf"===t?"Bold":"textit"===t?"Italic":"Regular")},$e={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{variant:"italic",fontName:"Main-Italic"},mathit:{variant:"italic",fontName:"Main-Italic"},mathnormal:{variant:"italic",fontName:"Math-Italic"},mathbb:{variant:"double-struck",fontName:"AMS-Regular"},mathcal:{variant:"script",fontName:"Caligraphic-Regular"},mathfrak:{variant:"fraktur",fontName:"Fraktur-Regular"},mathscr:{variant:"script",fontName:"Script-Regular"},mathsf:{variant:"sans-serif",fontName:"SansSerif-Regular"},mathtt:{variant:"monospace",fontName:"Typewriter-Regular"}},Ze={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},Ke={fontMap:$e,makeSymbol:Ge,mathsym:function(e,t,r,n){return void 0===n&&(n=[]),"boldsymbol"===r.font&&Ve(e,"Main-Bold",t).metrics?Ge(e,"Main-Bold",t,r,n.concat(["mathbf"])):"\\"===e||"main"===ae[t][e].font?Ge(e,"Main-Regular",t,r,n):Ge(e,"AMS-Regular",t,r,n.concat(["amsrm"]))},makeSpan:Xe,makeSvgSpan:We,makeLineSpan:function(e,t,r){var n=Xe([e],[],t);return n.height=Math.max(r||t.fontMetrics().defaultRuleThickness,t.minRuleThickness),n.style.borderBottomWidth=V(n.height),n.maxFontSize=1,n},makeAnchor:function(e,t,r,n){var a=new _(e,t,r,n);return Ye(a),a},makeFragment:_e,wrapFragment:function(e,t){return e instanceof A?Xe([],[e],t):e},makeVList:function(e,t){for(var r=function(e){if("individualShift"===e.positionType){for(var t=e.children,r=[t[0]],n=-t[0].shift-t[0].elem.depth,a=n,i=1;i<t.length;i++){var o=-t[i].shift-a-t[i].elem.depth,s=o-(t[i-1].elem.height+t[i-1].elem.depth);a+=o,r.push({type:"kern",size:s}),r.push(t[i])}return{children:r,depth:n}}var l;if("top"===e.positionType){for(var h=e.positionData,m=0;m<e.children.length;m++){var c=e.children[m];h-="kern"===c.type?c.size:c.elem.height+c.elem.depth}l=h}else if("bottom"===e.positionType)l=-e.positionData;else{var u=e.children[0];if("elem"!==u.type)throw new Error('First child must have type "elem".');if("shift"===e.positionType)l=-u.elem.depth-e.positionData;else{if("firstBaseline"!==e.positionType)throw new Error("Invalid positionType "+e.positionType+".");l=-u.elem.depth}}return{children:e.children,depth:l}}(e),n=r.children,a=r.depth,i=0,o=0;o<n.length;o++){var s=n[o];if("elem"===s.type){var l=s.elem;i=Math.max(i,l.maxFontSize,l.height)}}i+=2;var h=Xe(["pstrut"],[]);h.style.height=V(i);for(var m=[],c=a,u=a,p=a,d=0;d<n.length;d++){var f=n[d];if("kern"===f.type)p+=f.size;else{var g=f.elem,v=f.wrapperClasses||[],b=f.wrapperStyle||{},y=Xe(v,[h,g],void 0,b);y.style.top=V(-i-p-g.depth),f.marginLeft&&(y.style.marginLeft=f.marginLeft),f.marginRight&&(y.style.marginRight=f.marginRight),m.push(y),p+=g.height+g.depth}c=Math.min(c,p),u=Math.max(u,p)}var x,w=Xe(["vlist"],m);if(w.style.height=V(u),c<0){var k=Xe([],[]),S=Xe(["vlist"],[k]);S.style.height=V(-c);var M=Xe(["vlist-s"],[new Z("\u200b")]);x=[Xe(["vlist-r"],[w,M]),Xe(["vlist-r"],[S])]}else x=[Xe(["vlist-r"],[w])];var z=Xe(["vlist-t"],x);return 2===x.length&&z.classes.push("vlist-t2"),z.height=u,z.depth=-c,z},makeOrd:function(e,t,r){var a=e.mode,i=e.text,o=["mord"],s="math"===a||"text"===a&&t.font,l=s?t.font:t.fontFamily;if(55349===i.charCodeAt(0)){var h=function(e,t){var r=1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320)+65536,a="math"===t?0:1;if(119808<=r&&r<120484){var i=Math.floor((r-119808)/26);return[Pe[i][2],Pe[i][a]]}if(120782<=r&&r<=120831){var o=Math.floor((r-120782)/10);return[Fe[o][2],Fe[o][a]]}if(120485===r||120486===r)return[Pe[0][2],Pe[0][a]];if(120486<r&&r<120782)return["",""];throw new n("Unsupported character: "+e)}(i,a),m=h[0],c=h[1];return Ge(i,m,a,t,o.concat(c))}if(l){var u,p;if("boldsymbol"===l){var d=function(e,t,r,n,a){return"textord"!==a&&Ve(e,"Math-BoldItalic",t).metrics?{fontName:"Math-BoldItalic",fontClass:"boldsymbol"}:{fontName:"Main-Bold",fontClass:"mathbf"}}(i,a,0,0,r);u=d.fontName,p=[d.fontClass]}else s?(u=$e[l].fontName,p=[l]):(u=je(l,t.fontWeight,t.fontShape),p=[l,t.fontWeight,t.fontShape]);if(Ve(i,u,a).metrics)return Ge(i,u,a,t,o.concat(p));if(we.hasOwnProperty(i)&&"Typewriter"===u.substr(0,10)){for(var f=[],g=0;g<i.length;g++)f.push(Ge(i[g],u,a,t,o.concat(p)));return _e(f)}}if("mathord"===r)return Ge(i,"Math-Italic",a,t,o.concat(["mathnormal"]));if("textord"===r){var v=ae[a][i]&&ae[a][i].font;if("ams"===v){var b=je("amsrm",t.fontWeight,t.fontShape);return Ge(i,b,a,t,o.concat("amsrm",t.fontWeight,t.fontShape))}if("main"!==v&&v){var y=je(v,t.fontWeight,t.fontShape);return Ge(i,y,a,t,o.concat(y,t.fontWeight,t.fontShape))}var x=je("textrm",t.fontWeight,t.fontShape);return Ge(i,x,a,t,o.concat(t.fontWeight,t.fontShape))}throw new Error("unexpected type: "+r+" in makeOrd")},makeGlue:function(e,t){var r=Xe(["mspace"],[],t),n=F(e,t);return r.style.marginRight=V(n),r},staticSvg:function(e,t){var r=Ze[e],n=r[0],a=r[1],i=r[2],o=new J(n),s=new K([o],{width:V(a),height:V(i),style:"width:"+V(a),viewBox:"0 0 "+1e3*a+" "+1e3*i,preserveAspectRatio:"xMinYMin"}),l=We(["overlay"],[s],t);return l.height=i,l.style.height=V(i),l.style.width=V(a),l},svgData:Ze,tryCombineChars:function(e){for(var t=0;t<e.length-1;t++){var r=e[t],n=e[t+1];r instanceof Z&&n instanceof Z&&Ue(r,n)&&(r.text+=n.text,r.height=Math.max(r.height,n.height),r.depth=Math.max(r.depth,n.depth),r.italic=n.italic,e.splice(t+1,1),t--)}return e}},Je={number:3,unit:"mu"},Qe={number:4,unit:"mu"},et={number:5,unit:"mu"},tt={mord:{mop:Je,mbin:Qe,mrel:et,minner:Je},mop:{mord:Je,mop:Je,mrel:et,minner:Je},mbin:{mord:Qe,mop:Qe,mopen:Qe,minner:Qe},mrel:{mord:et,mop:et,mopen:et,minner:et},mopen:{},mclose:{mop:Je,mbin:Qe,mrel:et,minner:Je},mpunct:{mord:Je,mop:Je,mrel:et,mopen:Je,mclose:Je,mpunct:Je,minner:Je},minner:{mord:Je,mop:Je,mbin:Qe,mrel:et,mopen:Je,mpunct:Je,minner:Je}},rt={mord:{mop:Je},mop:{mord:Je,mop:Je},mbin:{},mrel:{},mopen:{},mclose:{mop:Je},mpunct:{},minner:{mop:Je}},nt={},at={},it={};function ot(e){for(var t=e.type,r=e.names,n=e.props,a=e.handler,i=e.htmlBuilder,o=e.mathmlBuilder,s={type:t,numArgs:n.numArgs,argTypes:n.argTypes,allowedInArgument:!!n.allowedInArgument,allowedInText:!!n.allowedInText,allowedInMath:void 0===n.allowedInMath||n.allowedInMath,numOptionalArgs:n.numOptionalArgs||0,infix:!!n.infix,primitive:!!n.primitive,handler:a},l=0;l<r.length;++l)nt[r[l]]=s;t&&(i&&(at[t]=i),o&&(it[t]=o))}function st(e){ot({type:e.type,names:[],props:{numArgs:0},handler:function(){throw new Error("Should never be called.")},htmlBuilder:e.htmlBuilder,mathmlBuilder:e.mathmlBuilder})}var lt=function(e){return"ordgroup"===e.type&&1===e.body.length?e.body[0]:e},ht=function(e){return"ordgroup"===e.type?e.body:[e]},mt=Ke.makeSpan,ct=["leftmost","mbin","mopen","mrel","mop","mpunct"],ut=["rightmost","mrel","mclose","mpunct"],pt={display:x.DISPLAY,text:x.TEXT,script:x.SCRIPT,scriptscript:x.SCRIPTSCRIPT},dt={mord:"mord",mop:"mop",mbin:"mbin",mrel:"mrel",mopen:"mopen",mclose:"mclose",mpunct:"mpunct",minner:"minner"},ft=function(e,t,r,n){void 0===n&&(n=[null,null]);for(var a=[],i=0;i<e.length;i++){var o=wt(e[i],t);if(o instanceof A){var s=o.children;a.push.apply(a,s)}else a.push(o)}if(Ke.tryCombineChars(a),!r)return a;var h=t;if(1===e.length){var m=e[0];"sizing"===m.type?h=t.havingSize(m.size):"styling"===m.type&&(h=t.havingStyle(pt[m.style]))}var c=mt([n[0]||"leftmost"],[],t),u=mt([n[1]||"rightmost"],[],t),p="root"===r;return gt(a,(function(e,t){var r=t.classes[0],n=e.classes[0];"mbin"===r&&l.contains(ut,n)?t.classes[0]="mord":"mbin"===n&&l.contains(ct,r)&&(e.classes[0]="mord")}),{node:c},u,p),gt(a,(function(e,t){var r=yt(t),n=yt(e),a=r&&n?e.hasClass("mtight")?rt[r][n]:tt[r][n]:null;if(a)return Ke.makeGlue(a,h)}),{node:c},u,p),a},gt=function e(t,r,n,a,i){a&&t.push(a);for(var o=0;o<t.length;o++){var s=t[o],l=vt(s);if(l)e(l.children,r,n,null,i);else{var h=!s.hasClass("mspace");if(h){var m=r(s,n.node);m&&(n.insertAfter?n.insertAfter(m):(t.unshift(m),o++))}h?n.node=s:i&&s.hasClass("newline")&&(n.node=mt(["leftmost"])),n.insertAfter=function(e){return function(r){t.splice(e+1,0,r),o++}}(o)}}a&&t.pop()},vt=function(e){return e instanceof A||e instanceof _||e instanceof W&&e.hasClass("enclosing")?e:null},bt=function e(t,r){var n=vt(t);if(n){var a=n.children;if(a.length){if("right"===r)return e(a[a.length-1],"right");if("left"===r)return e(a[0],"left")}}return t},yt=function(e,t){return e?(t&&(e=bt(e,t)),dt[e.classes[0]]||null):null},xt=function(e,t){var r=["nulldelimiter"].concat(e.baseSizingClasses());return mt(t.concat(r))},wt=function(e,t,r){if(!e)return mt();if(at[e.type]){var a=at[e.type](e,t);if(r&&t.size!==r.size){a=mt(t.sizingClasses(r),[a],t);var i=t.sizeMultiplier/r.sizeMultiplier;a.height*=i,a.depth*=i}return a}throw new n("Got group of unknown type: '"+e.type+"'")};function kt(e,t){var r=mt(["base"],e,t),n=mt(["strut"]);return n.style.height=V(r.height+r.depth),r.depth&&(n.style.verticalAlign=V(-r.depth)),r.children.unshift(n),r}function St(e,t){var r=null;1===e.length&&"tag"===e[0].type&&(r=e[0].tag,e=e[0].body);var n,a=ft(e,t,"root");2===a.length&&a[1].hasClass("tag")&&(n=a.pop());for(var i,o=[],s=[],l=0;l<a.length;l++)if(s.push(a[l]),a[l].hasClass("mbin")||a[l].hasClass("mrel")||a[l].hasClass("allowbreak")){for(var h=!1;l<a.length-1&&a[l+1].hasClass("mspace")&&!a[l+1].hasClass("newline");)l++,s.push(a[l]),a[l].hasClass("nobreak")&&(h=!0);h||(o.push(kt(s,t)),s=[])}else a[l].hasClass("newline")&&(s.pop(),s.length>0&&(o.push(kt(s,t)),s=[]),o.push(a[l]));s.length>0&&o.push(kt(s,t)),r?((i=kt(ft(r,t,!0))).classes=["tag"],o.push(i)):n&&o.push(n);var m=mt(["katex-html"],o);if(m.setAttribute("aria-hidden","true"),i){var c=i.children[0];c.style.height=V(m.height+m.depth),m.depth&&(c.style.verticalAlign=V(-m.depth))}return m}function Mt(e){return new A(e)}var zt=function(){function e(e,t,r){this.type=void 0,this.attributes=void 0,this.children=void 0,this.classes=void 0,this.type=e,this.attributes={},this.children=t||[],this.classes=r||[]}var t=e.prototype;return t.setAttribute=function(e,t){this.attributes[e]=t},t.getAttribute=function(e){return this.attributes[e]},t.toNode=function(){var e=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);this.classes.length>0&&(e.className=G(this.classes));for(var r=0;r<this.children.length;r++)e.appendChild(this.children[r].toNode());return e},t.toMarkup=function(){var e="<"+this.type;for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&(e+=" "+t+'="',e+=l.escape(this.attributes[t]),e+='"');this.classes.length>0&&(e+=' class ="'+l.escape(G(this.classes))+'"'),e+=">";for(var r=0;r<this.children.length;r++)e+=this.children[r].toMarkup();return e+="</"+this.type+">"},t.toText=function(){return this.children.map((function(e){return e.toText()})).join("")},e}(),At=function(){function e(e){this.text=void 0,this.text=e}var t=e.prototype;return t.toNode=function(){return document.createTextNode(this.text)},t.toMarkup=function(){return l.escape(this.toText())},t.toText=function(){return this.text},e}(),Tt={MathNode:zt,TextNode:At,SpaceNode:function(){function e(e){this.width=void 0,this.character=void 0,this.width=e,this.character=e>=.05555&&e<=.05556?"\u200a":e>=.1666&&e<=.1667?"\u2009":e>=.2222&&e<=.2223?"\u2005":e>=.2777&&e<=.2778?"\u2005\u200a":e>=-.05556&&e<=-.05555?"\u200a\u2063":e>=-.1667&&e<=-.1666?"\u2009\u2063":e>=-.2223&&e<=-.2222?"\u205f\u2063":e>=-.2778&&e<=-.2777?"\u2005\u2063":null}var t=e.prototype;return t.toNode=function(){if(this.character)return document.createTextNode(this.character);var e=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");return e.setAttribute("width",V(this.width)),e},t.toMarkup=function(){return this.character?"<mtext>"+this.character+"</mtext>":'<mspace width="'+V(this.width)+'"/>'},t.toText=function(){return this.character?this.character:" "},e}(),newDocumentFragment:Mt},Bt=function(e,t,r){return!ae[t][e]||!ae[t][e].replace||55349===e.charCodeAt(0)||we.hasOwnProperty(e)&&r&&(r.fontFamily&&"tt"===r.fontFamily.substr(4,2)||r.font&&"tt"===r.font.substr(4,2))||(e=ae[t][e].replace),new Tt.TextNode(e)},Ct=function(e){return 1===e.length?e[0]:new Tt.MathNode("mrow",e)},qt=function(e,t){if("texttt"===t.fontFamily)return"monospace";if("textsf"===t.fontFamily)return"textit"===t.fontShape&&"textbf"===t.fontWeight?"sans-serif-bold-italic":"textit"===t.fontShape?"sans-serif-italic":"textbf"===t.fontWeight?"bold-sans-serif":"sans-serif";if("textit"===t.fontShape&&"textbf"===t.fontWeight)return"bold-italic";if("textit"===t.fontShape)return"italic";if("textbf"===t.fontWeight)return"bold";var r=t.font;if(!r||"mathnormal"===r)return null;var n=e.mode;if("mathit"===r)return"italic";if("boldsymbol"===r)return"textord"===e.type?"bold":"bold-italic";if("mathbf"===r)return"bold";if("mathbb"===r)return"double-struck";if("mathfrak"===r)return"fraktur";if("mathscr"===r||"mathcal"===r)return"script";if("mathsf"===r)return"sans-serif";if("mathtt"===r)return"monospace";var a=e.text;return l.contains(["\\imath","\\jmath"],a)?null:(ae[n][a]&&ae[n][a].replace&&(a=ae[n][a].replace),q(a,Ke.fontMap[r].fontName,n)?Ke.fontMap[r].variant:null)},Nt=function(e,t,r){if(1===e.length){var n=Rt(e[0],t);return r&&n instanceof zt&&"mo"===n.type&&(n.setAttribute("lspace","0em"),n.setAttribute("rspace","0em")),[n]}for(var a,i=[],o=0;o<e.length;o++){var s=Rt(e[o],t);if(s instanceof zt&&a instanceof zt){if("mtext"===s.type&&"mtext"===a.type&&s.getAttribute("mathvariant")===a.getAttribute("mathvariant")){var l;(l=a.children).push.apply(l,s.children);continue}if("mn"===s.type&&"mn"===a.type){var h;(h=a.children).push.apply(h,s.children);continue}if("mi"===s.type&&1===s.children.length&&"mn"===a.type){var m=s.children[0];if(m instanceof At&&"."===m.text){var c;(c=a.children).push.apply(c,s.children);continue}}else if("mi"===a.type&&1===a.children.length){var u=a.children[0];if(u instanceof At&&"\u0338"===u.text&&("mo"===s.type||"mi"===s.type||"mn"===s.type)){var p=s.children[0];p instanceof At&&p.text.length>0&&(p.text=p.text.slice(0,1)+"\u0338"+p.text.slice(1),i.pop())}}}i.push(s),a=s}return i},It=function(e,t,r){return Ct(Nt(e,t,r))},Rt=function(e,t){if(!e)return new Tt.MathNode("mrow");if(it[e.type])return it[e.type](e,t);throw new n("Got group of unknown type: '"+e.type+"'")};function Ot(e,t,r,n,a){var i,o=Nt(e,r);i=1===o.length&&o[0]instanceof zt&&l.contains(["mrow","mtable"],o[0].type)?o[0]:new Tt.MathNode("mrow",o);var s=new Tt.MathNode("annotation",[new Tt.TextNode(t)]);s.setAttribute("encoding","application/x-tex");var h=new Tt.MathNode("semantics",[i,s]),m=new Tt.MathNode("math",[h]);m.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML"),n&&m.setAttribute("display","block");var c=a?"katex":"katex-mathml";return Ke.makeSpan([c],[m])}var Ht=function(e){return new E({style:e.displayMode?x.DISPLAY:x.TEXT,maxSize:e.maxSize,minRuleThickness:e.minRuleThickness})},Et=function(e,t){if(t.displayMode){var r=["katex-display"];t.leqno&&r.push("leqno"),t.fleqn&&r.push("fleqn"),e=Ke.makeSpan(r,[e])}return e},Lt=function(e,t,r){var n,a=Ht(r);if("mathml"===r.output)return Ot(e,t,a,r.displayMode,!0);if("html"===r.output){var i=St(e,a);n=Ke.makeSpan(["katex"],[i])}else{var o=Ot(e,t,a,r.displayMode,!1),s=St(e,a);n=Ke.makeSpan(["katex"],[o,s])}return Et(n,r)},Dt={widehat:"^",widecheck:"\u02c7",widetilde:"~",utilde:"~",overleftarrow:"\u2190",underleftarrow:"\u2190",xleftarrow:"\u2190",overrightarrow:"\u2192",underrightarrow:"\u2192",xrightarrow:"\u2192",underbrace:"\u23df",overbrace:"\u23de",overgroup:"\u23e0",undergroup:"\u23e1",overleftrightarrow:"\u2194",underleftrightarrow:"\u2194",xleftrightarrow:"\u2194",Overrightarrow:"\u21d2",xRightarrow:"\u21d2",overleftharpoon:"\u21bc",xleftharpoonup:"\u21bc",overrightharpoon:"\u21c0",xrightharpoonup:"\u21c0",xLeftarrow:"\u21d0",xLeftrightarrow:"\u21d4",xhookleftarrow:"\u21a9",xhookrightarrow:"\u21aa",xmapsto:"\u21a6",xrightharpoondown:"\u21c1",xleftharpoondown:"\u21bd",xrightleftharpoons:"\u21cc",xleftrightharpoons:"\u21cb",xtwoheadleftarrow:"\u219e",xtwoheadrightarrow:"\u21a0",xlongequal:"=",xtofrom:"\u21c4",xrightleftarrows:"\u21c4",xrightequilibrium:"\u21cc",xleftequilibrium:"\u21cb","\\cdrightarrow":"\u2192","\\cdleftarrow":"\u2190","\\cdlongequal":"="},Pt={overrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],overleftarrow:[["leftarrow"],.888,522,"xMinYMin"],underrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],underleftarrow:[["leftarrow"],.888,522,"xMinYMin"],xrightarrow:[["rightarrow"],1.469,522,"xMaxYMin"],"\\cdrightarrow":[["rightarrow"],3,522,"xMaxYMin"],xleftarrow:[["leftarrow"],1.469,522,"xMinYMin"],"\\cdleftarrow":[["leftarrow"],3,522,"xMinYMin"],Overrightarrow:[["doublerightarrow"],.888,560,"xMaxYMin"],xRightarrow:[["doublerightarrow"],1.526,560,"xMaxYMin"],xLeftarrow:[["doubleleftarrow"],1.526,560,"xMinYMin"],overleftharpoon:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoonup:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoondown:[["leftharpoondown"],.888,522,"xMinYMin"],overrightharpoon:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoonup:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoondown:[["rightharpoondown"],.888,522,"xMaxYMin"],xlongequal:[["longequal"],.888,334,"xMinYMin"],"\\cdlongequal":[["longequal"],3,334,"xMinYMin"],xtwoheadleftarrow:[["twoheadleftarrow"],.888,334,"xMinYMin"],xtwoheadrightarrow:[["twoheadrightarrow"],.888,334,"xMaxYMin"],overleftrightarrow:[["leftarrow","rightarrow"],.888,522],overbrace:[["leftbrace","midbrace","rightbrace"],1.6,548],underbrace:[["leftbraceunder","midbraceunder","rightbraceunder"],1.6,548],underleftrightarrow:[["leftarrow","rightarrow"],.888,522],xleftrightarrow:[["leftarrow","rightarrow"],1.75,522],xLeftrightarrow:[["doubleleftarrow","doublerightarrow"],1.75,560],xrightleftharpoons:[["leftharpoondownplus","rightharpoonplus"],1.75,716],xleftrightharpoons:[["leftharpoonplus","rightharpoondownplus"],1.75,716],xhookleftarrow:[["leftarrow","righthook"],1.08,522],xhookrightarrow:[["lefthook","rightarrow"],1.08,522],overlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],underlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],overgroup:[["leftgroup","rightgroup"],.888,342],undergroup:[["leftgroupunder","rightgroupunder"],.888,342],xmapsto:[["leftmapsto","rightarrow"],1.5,522],xtofrom:[["leftToFrom","rightToFrom"],1.75,528],xrightleftarrows:[["baraboveleftarrow","rightarrowabovebar"],1.75,901],xrightequilibrium:[["baraboveshortleftharpoon","rightharpoonaboveshortbar"],1.75,716],xleftequilibrium:[["shortbaraboveleftharpoon","shortrightharpoonabovebar"],1.75,716]},Ft=function(e,t,r,n,a){var i,o=e.height+e.depth+r+n;if(/fbox|color|angl/.test(t)){if(i=Ke.makeSpan(["stretchy",t],[],a),"fbox"===t){var s=a.color&&a.getColor();s&&(i.style.borderColor=s)}}else{var l=[];/^[bx]cancel$/.test(t)&&l.push(new Q({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(t)&&l.push(new Q({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}));var h=new K(l,{width:"100%",height:V(o)});i=Ke.makeSvgSpan([],[h],a)}return i.height=o,i.style.height=V(o),i},Vt=function(e){var t=new Tt.MathNode("mo",[new Tt.TextNode(Dt[e.replace(/^\\/,"")])]);return t.setAttribute("stretchy","true"),t},Gt=function(e,t){var r=function(){var r=4e5,n=e.label.substr(1);if(l.contains(["widehat","widecheck","widetilde","utilde"],n)){var a,i,o,s="ordgroup"===(d=e.base).type?d.body.length:1;if(s>5)"widehat"===n||"widecheck"===n?(a=420,r=2364,o=.42,i=n+"4"):(a=312,r=2340,o=.34,i="tilde4");else{var h=[1,1,2,2,3,3][s];"widehat"===n||"widecheck"===n?(r=[0,1062,2364,2364,2364][h],a=[0,239,300,360,420][h],o=[0,.24,.3,.3,.36,.42][h],i=n+h):(r=[0,600,1033,2339,2340][h],a=[0,260,286,306,312][h],o=[0,.26,.286,.3,.306,.34][h],i="tilde"+h)}var m=new J(i),c=new K([m],{width:"100%",height:V(o),viewBox:"0 0 "+r+" "+a,preserveAspectRatio:"none"});return{span:Ke.makeSvgSpan([],[c],t),minWidth:0,height:o}}var u,p,d,f=[],g=Pt[n],v=g[0],b=g[1],y=g[2],x=y/1e3,w=v.length;if(1===w)u=["hide-tail"],p=[g[3]];else if(2===w)u=["halfarrow-left","halfarrow-right"],p=["xMinYMin","xMaxYMin"];else{if(3!==w)throw new Error("Correct katexImagesData or update code here to support\n "+w+" children.");u=["brace-left","brace-center","brace-right"],p=["xMinYMin","xMidYMin","xMaxYMin"]}for(var k=0;k<w;k++){var S=new J(v[k]),M=new K([S],{width:"400em",height:V(x),viewBox:"0 0 "+r+" "+y,preserveAspectRatio:p[k]+" slice"}),z=Ke.makeSvgSpan([u[k]],[M],t);if(1===w)return{span:z,minWidth:b,height:x};z.style.height=V(x),f.push(z)}return{span:Ke.makeSpan(["stretchy"],f,t),minWidth:b,height:x}}(),n=r.span,a=r.minWidth,i=r.height;return n.height=i,n.style.height=V(i),a>0&&(n.style.minWidth=V(a)),n};function Ut(e,t){if(!e||e.type!==t)throw new Error("Expected node of type "+t+", but got "+(e?"node of type "+e.type:String(e)));return e}function Yt(e){var t=Xt(e);if(!t)throw new Error("Expected node of symbol group type, but got "+(e?"node of type "+e.type:String(e)));return t}function Xt(e){return e&&("atom"===e.type||re.hasOwnProperty(e.type))?e:null}var Wt=function(e,t){var r,n,a;e&&"supsub"===e.type?(r=(n=Ut(e.base,"accent")).base,e.base=r,a=function(e){if(e instanceof W)return e;throw new Error("Expected span<HtmlDomNode> but got "+String(e)+".")}(wt(e,t)),e.base=n):r=(n=Ut(e,"accent")).base;var i=wt(r,t.havingCrampedStyle()),o=0;if(n.isShifty&&l.isCharacterBox(r)){var s=l.getBaseElem(r);o=ee(wt(s,t.havingCrampedStyle())).skew}var h,m="\\c"===n.label,c=m?i.height+i.depth:Math.min(i.height,t.fontMetrics().xHeight);if(n.isStretchy)h=Gt(n,t),h=Ke.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"elem",elem:h,wrapperClasses:["svg-align"],wrapperStyle:o>0?{width:"calc(100% - "+V(2*o)+")",marginLeft:V(2*o)}:void 0}]},t);else{var u,p;"\\vec"===n.label?(u=Ke.staticSvg("vec",t),p=Ke.svgData.vec[1]):((u=ee(u=Ke.makeOrd({mode:n.mode,text:n.label},t,"textord"))).italic=0,p=u.width,m&&(c+=u.depth)),h=Ke.makeSpan(["accent-body"],[u]);var d="\\textcircled"===n.label;d&&(h.classes.push("accent-full"),c=i.height);var f=o;d||(f-=p/2),h.style.left=V(f),"\\textcircled"===n.label&&(h.style.top=".2em"),h=Ke.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"kern",size:-c},{type:"elem",elem:h}]},t)}var g=Ke.makeSpan(["mord","accent"],[h],t);return a?(a.children[0]=g,a.height=Math.max(g.height,a.height),a.classes[0]="mord",a):g},_t=function(e,t){var r=e.isStretchy?Vt(e.label):new Tt.MathNode("mo",[Bt(e.label,e.mode)]),n=new Tt.MathNode("mover",[Rt(e.base,t),r]);return n.setAttribute("accent","true"),n},jt=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map((function(e){return"\\"+e})).join("|"));ot({type:"accent",names:["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\widecheck","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:function(e,t){var r=lt(t[0]),n=!jt.test(e.funcName),a=!n||"\\widehat"===e.funcName||"\\widetilde"===e.funcName||"\\widecheck"===e.funcName;return{type:"accent",mode:e.parser.mode,label:e.funcName,isStretchy:n,isShifty:a,base:r}},htmlBuilder:Wt,mathmlBuilder:_t}),ot({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\c","\\r","\\H","\\v","\\textcircled"],props:{numArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["primitive"]},handler:function(e,t){var r=t[0],n=e.parser.mode;return"math"===n&&(e.parser.settings.reportNonstrict("mathVsTextAccents","LaTeX's accent "+e.funcName+" works only in text mode"),n="text"),{type:"accent",mode:n,label:e.funcName,isStretchy:!1,isShifty:!0,base:r}},htmlBuilder:Wt,mathmlBuilder:_t}),ot({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:function(e,t){var r=e.parser,n=e.funcName,a=t[0];return{type:"accentUnder",mode:r.mode,label:n,base:a}},htmlBuilder:function(e,t){var r=wt(e.base,t),n=Gt(e,t),a="\\utilde"===e.label?.12:0,i=Ke.makeVList({positionType:"top",positionData:r.height,children:[{type:"elem",elem:n,wrapperClasses:["svg-align"]},{type:"kern",size:a},{type:"elem",elem:r}]},t);return Ke.makeSpan(["mord","accentunder"],[i],t)},mathmlBuilder:function(e,t){var r=Vt(e.label),n=new Tt.MathNode("munder",[Rt(e.base,t),r]);return n.setAttribute("accentunder","true"),n}});var $t=function(e){var t=new Tt.MathNode("mpadded",e?[e]:[]);return t.setAttribute("width","+0.6em"),t.setAttribute("lspace","0.3em"),t};ot({type:"xArrow",names:["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xtofrom","\\xrightleftarrows","\\xrightequilibrium","\\xleftequilibrium","\\\\cdrightarrow","\\\\cdleftarrow","\\\\cdlongequal"],props:{numArgs:1,numOptionalArgs:1},handler:function(e,t,r){var n=e.parser,a=e.funcName;return{type:"xArrow",mode:n.mode,label:a,body:t[0],below:r[0]}},htmlBuilder:function(e,t){var r,n=t.style,a=t.havingStyle(n.sup()),i=Ke.wrapFragment(wt(e.body,a,t),t),o="\\x"===e.label.slice(0,2)?"x":"cd";i.classes.push(o+"-arrow-pad"),e.below&&(a=t.havingStyle(n.sub()),(r=Ke.wrapFragment(wt(e.below,a,t),t)).classes.push(o+"-arrow-pad"));var s,l=Gt(e,t),h=-t.fontMetrics().axisHeight+.5*l.height,m=-t.fontMetrics().axisHeight-.5*l.height-.111;if((i.depth>.25||"\\xleftequilibrium"===e.label)&&(m-=i.depth),r){var c=-t.fontMetrics().axisHeight+r.height+.5*l.height+.111;s=Ke.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:m},{type:"elem",elem:l,shift:h},{type:"elem",elem:r,shift:c}]},t)}else s=Ke.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:m},{type:"elem",elem:l,shift:h}]},t);return s.children[0].children[0].children[1].classes.push("svg-align"),Ke.makeSpan(["mrel","x-arrow"],[s],t)},mathmlBuilder:function(e,t){var r,n=Vt(e.label);if(n.setAttribute("minsize","x"===e.label.charAt(0)?"1.75em":"3.0em"),e.body){var a=$t(Rt(e.body,t));if(e.below){var i=$t(Rt(e.below,t));r=new Tt.MathNode("munderover",[n,i,a])}else r=new Tt.MathNode("mover",[n,a])}else if(e.below){var o=$t(Rt(e.below,t));r=new Tt.MathNode("munder",[n,o])}else r=$t(),r=new Tt.MathNode("mover",[n,r]);return r}});var Zt={">":"\\\\cdrightarrow","<":"\\\\cdleftarrow","=":"\\\\cdlongequal",A:"\\uparrow",V:"\\downarrow","|":"\\Vert",".":"no arrow"},Kt=function(e){return"textord"===e.type&&"@"===e.text};function Jt(e,t,r){var n=Zt[e];switch(n){case"\\\\cdrightarrow":case"\\\\cdleftarrow":return r.callFunction(n,[t[0]],[t[1]]);case"\\uparrow":case"\\downarrow":var a={type:"atom",text:n,mode:"math",family:"rel"},i={type:"ordgroup",mode:"math",body:[r.callFunction("\\\\cdleft",[t[0]],[]),r.callFunction("\\Big",[a],[]),r.callFunction("\\\\cdright",[t[1]],[])]};return r.callFunction("\\\\cdparent",[i],[]);case"\\\\cdlongequal":return r.callFunction("\\\\cdlongequal",[],[]);case"\\Vert":return r.callFunction("\\Big",[{type:"textord",text:"\\Vert",mode:"math"}],[]);default:return{type:"textord",text:" ",mode:"math"}}}ot({type:"cdlabel",names:["\\\\cdleft","\\\\cdright"],props:{numArgs:1},handler:function(e,t){var r=e.parser,n=e.funcName;return{type:"cdlabel",mode:r.mode,side:n.slice(4),label:t[0]}},htmlBuilder:function(e,t){var r=t.havingStyle(t.style.sup()),n=Ke.wrapFragment(wt(e.label,r,t),t);return n.classes.push("cd-label-"+e.side),n.style.bottom=V(.8-n.depth),n.height=0,n.depth=0,n},mathmlBuilder:function(e,t){var r=new Tt.MathNode("mrow",[Rt(e.label,t)]);return(r=new Tt.MathNode("mpadded",[r])).setAttribute("width","0"),"left"===e.side&&r.setAttribute("lspace","-1width"),r.setAttribute("voffset","0.7em"),(r=new Tt.MathNode("mstyle",[r])).setAttribute("displaystyle","false"),r.setAttribute("scriptlevel","1"),r}}),ot({type:"cdlabelparent",names:["\\\\cdparent"],props:{numArgs:1},handler:function(e,t){return{type:"cdlabelparent",mode:e.parser.mode,fragment:t[0]}},htmlBuilder:function(e,t){var r=Ke.wrapFragment(wt(e.fragment,t),t);return r.classes.push("cd-vert-arrow"),r},mathmlBuilder:function(e,t){return new Tt.MathNode("mrow",[Rt(e.fragment,t)])}}),ot({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler:function(e,t){for(var r=e.parser,a=Ut(t[0],"ordgroup").body,i="",o=0;o<a.length;o++){i+=Ut(a[o],"textord").text}var s,l=parseInt(i);if(isNaN(l))throw new n("\\@char has non-numeric argument "+i);if(l<0||l>=1114111)throw new n("\\@char with invalid code point "+i);return l<=65535?s=String.fromCharCode(l):(l-=65536,s=String.fromCharCode(55296+(l>>10),56320+(1023&l))),{type:"textord",mode:r.mode,text:s}}});var Qt=function(e,t){var r=ft(e.body,t.withColor(e.color),!1);return Ke.makeFragment(r)},er=function(e,t){var r=Nt(e.body,t.withColor(e.color)),n=new Tt.MathNode("mstyle",r);return n.setAttribute("mathcolor",e.color),n};ot({type:"color",names:["\\textcolor"],props:{numArgs:2,allowedInText:!0,argTypes:["color","original"]},handler:function(e,t){var r=e.parser,n=Ut(t[0],"color-token").color,a=t[1];return{type:"color",mode:r.mode,color:n,body:ht(a)}},htmlBuilder:Qt,mathmlBuilder:er}),ot({type:"color",names:["\\color"],props:{numArgs:1,allowedInText:!0,argTypes:["color"]},handler:function(e,t){var r=e.parser,n=e.breakOnTokenText,a=Ut(t[0],"color-token").color;r.gullet.macros.set("\\current@color",a);var i=r.parseExpression(!0,n);return{type:"color",mode:r.mode,color:a,body:i}},htmlBuilder:Qt,mathmlBuilder:er}),ot({type:"cr",names:["\\\\"],props:{numArgs:0,numOptionalArgs:1,argTypes:["size"],allowedInText:!0},handler:function(e,t,r){var n=e.parser,a=r[0],i=!n.settings.displayMode||!n.settings.useStrictBehavior("newLineInDisplayMode","In LaTeX, \\\\ or \\newline does nothing in display mode");return{type:"cr",mode:n.mode,newLine:i,size:a&&Ut(a,"size").value}},htmlBuilder:function(e,t){var r=Ke.makeSpan(["mspace"],[],t);return e.newLine&&(r.classes.push("newline"),e.size&&(r.style.marginTop=V(F(e.size,t)))),r},mathmlBuilder:function(e,t){var r=new Tt.MathNode("mspace");return e.newLine&&(r.setAttribute("linebreak","newline"),e.size&&r.setAttribute("height",V(F(e.size,t)))),r}});var tr={"\\global":"\\global","\\long":"\\\\globallong","\\\\globallong":"\\\\globallong","\\def":"\\gdef","\\gdef":"\\gdef","\\edef":"\\xdef","\\xdef":"\\xdef","\\let":"\\\\globallet","\\futurelet":"\\\\globalfuture"},rr=function(e){var t=e.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(t))throw new n("Expected a control sequence",e);return t},nr=function(e,t,r,n){var a=e.gullet.macros.get(r.text);null==a&&(r.noexpand=!0,a={tokens:[r],numArgs:0,unexpandable:!e.gullet.isExpandable(r.text)}),e.gullet.macros.set(t,a,n)};ot({type:"internal",names:["\\global","\\long","\\\\globallong"],props:{numArgs:0,allowedInText:!0},handler:function(e){var t=e.parser,r=e.funcName;t.consumeSpaces();var a=t.fetch();if(tr[a.text])return"\\global"!==r&&"\\\\globallong"!==r||(a.text=tr[a.text]),Ut(t.parseFunction(),"internal");throw new n("Invalid token after macro prefix",a)}}),ot({type:"internal",names:["\\def","\\gdef","\\edef","\\xdef"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler:function(e){var t=e.parser,r=e.funcName,a=t.gullet.popToken(),i=a.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(i))throw new n("Expected a control sequence",a);for(var o,s=0,l=[[]];"{"!==t.gullet.future().text;)if("#"===(a=t.gullet.popToken()).text){if("{"===t.gullet.future().text){o=t.gullet.future(),l[s].push("{");break}if(a=t.gullet.popToken(),!/^[1-9]$/.test(a.text))throw new n('Invalid argument number "'+a.text+'"');if(parseInt(a.text)!==s+1)throw new n('Argument number "'+a.text+'" out of order');s++,l.push([])}else{if("EOF"===a.text)throw new n("Expected a macro definition");l[s].push(a.text)}var h=t.gullet.consumeArg().tokens;return o&&h.unshift(o),"\\edef"!==r&&"\\xdef"!==r||(h=t.gullet.expandTokens(h)).reverse(),t.gullet.macros.set(i,{tokens:h,numArgs:s,delimiters:l},r===tr[r]),{type:"internal",mode:t.mode}}}),ot({type:"internal",names:["\\let","\\\\globallet"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler:function(e){var t=e.parser,r=e.funcName,n=rr(t.gullet.popToken());t.gullet.consumeSpaces();var a=function(e){var t=e.gullet.popToken();return"="===t.text&&" "===(t=e.gullet.popToken()).text&&(t=e.gullet.popToken()),t}(t);return nr(t,n,a,"\\\\globallet"===r),{type:"internal",mode:t.mode}}}),ot({type:"internal",names:["\\futurelet","\\\\globalfuture"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler:function(e){var t=e.parser,r=e.funcName,n=rr(t.gullet.popToken()),a=t.gullet.popToken(),i=t.gullet.popToken();return nr(t,n,i,"\\\\globalfuture"===r),t.gullet.pushToken(i),t.gullet.pushToken(a),{type:"internal",mode:t.mode}}});var ar=function(e,t,r){var n=q(ae.math[e]&&ae.math[e].replace||e,t,r);if(!n)throw new Error("Unsupported symbol "+e+" and font size "+t+".");return n},ir=function(e,t,r,n){var a=r.havingBaseStyle(t),i=Ke.makeSpan(n.concat(a.sizingClasses(r)),[e],r),o=a.sizeMultiplier/r.sizeMultiplier;return i.height*=o,i.depth*=o,i.maxFontSize=a.sizeMultiplier,i},or=function(e,t,r){var n=t.havingBaseStyle(r),a=(1-t.sizeMultiplier/n.sizeMultiplier)*t.fontMetrics().axisHeight;e.classes.push("delimcenter"),e.style.top=V(a),e.height-=a,e.depth+=a},sr=function(e,t,r,n,a,i){var o=function(e,t,r,n){return Ke.makeSymbol(e,"Size"+t+"-Regular",r,n)}(e,t,a,n),s=ir(Ke.makeSpan(["delimsizing","size"+t],[o],n),x.TEXT,n,i);return r&&or(s,n,x.TEXT),s},lr=function(e,t,r){var n;return n="Size1-Regular"===t?"delim-size1":"delim-size4",{type:"elem",elem:Ke.makeSpan(["delimsizinginner",n],[Ke.makeSpan([],[Ke.makeSymbol(e,t,r)])])}},hr=function(e,t,r){var n=T["Size4-Regular"][e.charCodeAt(0)]?T["Size4-Regular"][e.charCodeAt(0)][4]:T["Size1-Regular"][e.charCodeAt(0)][4],a=new J("inner",function(e,t){switch(e){case"\u239c":return"M291 0 H417 V"+t+" H291z M291 0 H417 V"+t+" H291z";case"\u2223":return"M145 0 H188 V"+t+" H145z M145 0 H188 V"+t+" H145z";case"\u2225":return"M145 0 H188 V"+t+" H145z M145 0 H188 V"+t+" H145zM367 0 H410 V"+t+" H367z M367 0 H410 V"+t+" H367z";case"\u239f":return"M457 0 H583 V"+t+" H457z M457 0 H583 V"+t+" H457z";case"\u23a2":return"M319 0 H403 V"+t+" H319z M319 0 H403 V"+t+" H319z";case"\u23a5":return"M263 0 H347 V"+t+" H263z M263 0 H347 V"+t+" H263z";case"\u23aa":return"M384 0 H504 V"+t+" H384z M384 0 H504 V"+t+" H384z";case"\u23d0":return"M312 0 H355 V"+t+" H312z M312 0 H355 V"+t+" H312z";case"\u2016":return"M257 0 H300 V"+t+" H257z M257 0 H300 V"+t+" H257zM478 0 H521 V"+t+" H478z M478 0 H521 V"+t+" H478z";default:return""}}(e,Math.round(1e3*t))),i=new K([a],{width:V(n),height:V(t),style:"width:"+V(n),viewBox:"0 0 "+1e3*n+" "+Math.round(1e3*t),preserveAspectRatio:"xMinYMin"}),o=Ke.makeSvgSpan([],[i],r);return o.height=t,o.style.height=V(t),o.style.width=V(n),{type:"elem",elem:o}},mr={type:"kern",size:-.008},cr=["|","\\lvert","\\rvert","\\vert"],ur=["\\|","\\lVert","\\rVert","\\Vert"],pr=function(e,t,r,n,a,i){var o,s,h,m;o=h=m=e,s=null;var c="Size1-Regular";"\\uparrow"===e?h=m="\u23d0":"\\Uparrow"===e?h=m="\u2016":"\\downarrow"===e?o=h="\u23d0":"\\Downarrow"===e?o=h="\u2016":"\\updownarrow"===e?(o="\\uparrow",h="\u23d0",m="\\downarrow"):"\\Updownarrow"===e?(o="\\Uparrow",h="\u2016",m="\\Downarrow"):l.contains(cr,e)?h="\u2223":l.contains(ur,e)?h="\u2225":"["===e||"\\lbrack"===e?(o="\u23a1",h="\u23a2",m="\u23a3",c="Size4-Regular"):"]"===e||"\\rbrack"===e?(o="\u23a4",h="\u23a5",m="\u23a6",c="Size4-Regular"):"\\lfloor"===e||"\u230a"===e?(h=o="\u23a2",m="\u23a3",c="Size4-Regular"):"\\lceil"===e||"\u2308"===e?(o="\u23a1",h=m="\u23a2",c="Size4-Regular"):"\\rfloor"===e||"\u230b"===e?(h=o="\u23a5",m="\u23a6",c="Size4-Regular"):"\\rceil"===e||"\u2309"===e?(o="\u23a4",h=m="\u23a5",c="Size4-Regular"):"("===e||"\\lparen"===e?(o="\u239b",h="\u239c",m="\u239d",c="Size4-Regular"):")"===e||"\\rparen"===e?(o="\u239e",h="\u239f",m="\u23a0",c="Size4-Regular"):"\\{"===e||"\\lbrace"===e?(o="\u23a7",s="\u23a8",m="\u23a9",h="\u23aa",c="Size4-Regular"):"\\}"===e||"\\rbrace"===e?(o="\u23ab",s="\u23ac",m="\u23ad",h="\u23aa",c="Size4-Regular"):"\\lgroup"===e||"\u27ee"===e?(o="\u23a7",m="\u23a9",h="\u23aa",c="Size4-Regular"):"\\rgroup"===e||"\u27ef"===e?(o="\u23ab",m="\u23ad",h="\u23aa",c="Size4-Regular"):"\\lmoustache"===e||"\u23b0"===e?(o="\u23a7",m="\u23ad",h="\u23aa",c="Size4-Regular"):"\\rmoustache"!==e&&"\u23b1"!==e||(o="\u23ab",m="\u23a9",h="\u23aa",c="Size4-Regular");var u=ar(o,c,a),p=u.height+u.depth,d=ar(h,c,a),f=d.height+d.depth,g=ar(m,c,a),v=g.height+g.depth,b=0,y=1;if(null!==s){var w=ar(s,c,a);b=w.height+w.depth,y=2}var k=p+v+b,S=k+Math.max(0,Math.ceil((t-k)/(y*f)))*y*f,M=n.fontMetrics().axisHeight;r&&(M*=n.sizeMultiplier);var z=S/2-M,A=[];if(A.push(lr(m,c,a)),A.push(mr),null===s){var T=S-p-v+.016;A.push(hr(h,T,n))}else{var B=(S-p-v-b)/2+.016;A.push(hr(h,B,n)),A.push(mr),A.push(lr(s,c,a)),A.push(mr),A.push(hr(h,B,n))}A.push(mr),A.push(lr(o,c,a));var C=n.havingBaseStyle(x.TEXT),q=Ke.makeVList({positionType:"bottom",positionData:z,children:A},C);return ir(Ke.makeSpan(["delimsizing","mult"],[q],C),x.TEXT,n,i)},dr=.08,fr=function(e,t,r,n,a){var i=function(e,t,r){t*=1e3;var n="";switch(e){case"sqrtMain":n=function(e,t){return"M95,"+(622+e+t)+"\nc-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14\nc0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54\nc44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10\ns173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429\nc69,-144,104.5,-217.7,106.5,-221\nl"+e/2.075+" -"+e+"\nc5.3,-9.3,12,-14,20,-14\nH400000v"+(40+e)+"H845.2724\ns-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7\nc-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z\nM"+(834+e)+" "+t+"h400000v"+(40+e)+"h-400000z"}(t,M);break;case"sqrtSize1":n=function(e,t){return"M263,"+(601+e+t)+"c0.7,0,18,39.7,52,119\nc34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120\nc340,-704.7,510.7,-1060.3,512,-1067\nl"+e/2.084+" -"+e+"\nc4.7,-7.3,11,-11,19,-11\nH40000v"+(40+e)+"H1012.3\ns-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232\nc-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1\ns-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26\nc-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z\nM"+(1001+e)+" "+t+"h400000v"+(40+e)+"h-400000z"}(t,M);break;case"sqrtSize2":n=function(e,t){return"M983 "+(10+e+t)+"\nl"+e/3.13+" -"+e+"\nc4,-6.7,10,-10,18,-10 H400000v"+(40+e)+"\nH1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7\ns-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744\nc-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30\nc26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722\nc56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5\nc53.7,-170.3,84.5,-266.8,92.5,-289.5z\nM"+(1001+e)+" "+t+"h400000v"+(40+e)+"h-400000z"}(t,M);break;case"sqrtSize3":n=function(e,t){return"M424,"+(2398+e+t)+"\nc-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514\nc0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20\ns-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121\ns209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081\nl"+e/4.223+" -"+e+"c4,-6.7,10,-10,18,-10 H400000\nv"+(40+e)+"H1014.6\ns-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185\nc-2,6,-10,9,-24,9\nc-8,0,-12,-0.7,-12,-2z M"+(1001+e)+" "+t+"\nh400000v"+(40+e)+"h-400000z"}(t,M);break;case"sqrtSize4":n=function(e,t){return"M473,"+(2713+e+t)+"\nc339.3,-1799.3,509.3,-2700,510,-2702 l"+e/5.298+" -"+e+"\nc3.3,-7.3,9.3,-11,18,-11 H400000v"+(40+e)+"H1017.7\ns-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9\nc-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200\nc0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26\ns76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104,\n606zM"+(1001+e)+" "+t+"h400000v"+(40+e)+"H1017.7z"}(t,M);break;case"sqrtTall":n=function(e,t,r){return"M702 "+(e+t)+"H400000"+(40+e)+"\nH742v"+(r-54-t-e)+"l-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1\nh-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170\nc-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667\n219 661 l218 661zM702 "+t+"H400000v"+(40+e)+"H742z"}(t,M,r)}return n}(e,n,r),o=new J(e,i),s=new K([o],{width:"400em",height:V(t),viewBox:"0 0 400000 "+r,preserveAspectRatio:"xMinYMin slice"});return Ke.makeSvgSpan(["hide-tail"],[s],a)},gr=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230a","\u230b","\\lceil","\\rceil","\u2308","\u2309","\\surd"],vr=["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27ee","\u27ef","\\lmoustache","\\rmoustache","\u23b0","\u23b1"],br=["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"],yr=[0,1.2,1.8,2.4,3],xr=[{type:"small",style:x.SCRIPTSCRIPT},{type:"small",style:x.SCRIPT},{type:"small",style:x.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],wr=[{type:"small",style:x.SCRIPTSCRIPT},{type:"small",style:x.SCRIPT},{type:"small",style:x.TEXT},{type:"stack"}],kr=[{type:"small",style:x.SCRIPTSCRIPT},{type:"small",style:x.SCRIPT},{type:"small",style:x.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],Sr=function(e){if("small"===e.type)return"Main-Regular";if("large"===e.type)return"Size"+e.size+"-Regular";if("stack"===e.type)return"Size4-Regular";throw new Error("Add support for delim type '"+e.type+"' here.")},Mr=function(e,t,r,n){for(var a=Math.min(2,3-n.style.size);a<r.length&&"stack"!==r[a].type;a++){var i=ar(e,Sr(r[a]),"math"),o=i.height+i.depth;if("small"===r[a].type&&(o*=n.havingBaseStyle(r[a].style).sizeMultiplier),o>t)return r[a]}return r[r.length-1]},zr=function(e,t,r,n,a,i){var o;"<"===e||"\\lt"===e||"\u27e8"===e?e="\\langle":">"!==e&&"\\gt"!==e&&"\u27e9"!==e||(e="\\rangle"),o=l.contains(br,e)?xr:l.contains(gr,e)?kr:wr;var s=Mr(e,t,o,n);return"small"===s.type?function(e,t,r,n,a,i){var o=Ke.makeSymbol(e,"Main-Regular",a,n),s=ir(o,t,n,i);return r&&or(s,n,t),s}(e,s.style,r,n,a,i):"large"===s.type?sr(e,s.size,r,n,a,i):pr(e,t,r,n,a,i)},Ar={sqrtImage:function(e,t){var r,n,a=t.havingBaseSizing(),i=Mr("\\surd",e*a.sizeMultiplier,kr,a),o=a.sizeMultiplier,s=Math.max(0,t.minRuleThickness-t.fontMetrics().sqrtRuleThickness),l=0,h=0,m=0;return"small"===i.type?(e<1?o=1:e<1.4&&(o=.7),h=(1+s)/o,(r=fr("sqrtMain",l=(1+s+dr)/o,m=1e3+1e3*s+80,s,t)).style.minWidth="0.853em",n=.833/o):"large"===i.type?(m=1080*yr[i.size],h=(yr[i.size]+s)/o,l=(yr[i.size]+s+dr)/o,(r=fr("sqrtSize"+i.size,l,m,s,t)).style.minWidth="1.02em",n=1/o):(l=e+s+dr,h=e+s,m=Math.floor(1e3*e+s)+80,(r=fr("sqrtTall",l,m,s,t)).style.minWidth="0.742em",n=1.056),r.height=h,r.style.height=V(l),{span:r,advanceWidth:n,ruleWidth:(t.fontMetrics().sqrtRuleThickness+s)*o}},sizedDelim:function(e,t,r,a,i){if("<"===e||"\\lt"===e||"\u27e8"===e?e="\\langle":">"!==e&&"\\gt"!==e&&"\u27e9"!==e||(e="\\rangle"),l.contains(gr,e)||l.contains(br,e))return sr(e,t,!1,r,a,i);if(l.contains(vr,e))return pr(e,yr[t],!1,r,a,i);throw new n("Illegal delimiter: '"+e+"'")},sizeToMaxHeight:yr,customSizedDelim:zr,leftRightDelim:function(e,t,r,n,a,i){var o=n.fontMetrics().axisHeight*n.sizeMultiplier,s=5/n.fontMetrics().ptPerEm,l=Math.max(t-o,r+o),h=Math.max(l/500*901,2*l-s);return zr(e,h,!0,n,a,i)}},Tr={"\\bigl":{mclass:"mopen",size:1},"\\Bigl":{mclass:"mopen",size:2},"\\biggl":{mclass:"mopen",size:3},"\\Biggl":{mclass:"mopen",size:4},"\\bigr":{mclass:"mclose",size:1},"\\Bigr":{mclass:"mclose",size:2},"\\biggr":{mclass:"mclose",size:3},"\\Biggr":{mclass:"mclose",size:4},"\\bigm":{mclass:"mrel",size:1},"\\Bigm":{mclass:"mrel",size:2},"\\biggm":{mclass:"mrel",size:3},"\\Biggm":{mclass:"mrel",size:4},"\\big":{mclass:"mord",size:1},"\\Big":{mclass:"mord",size:2},"\\bigg":{mclass:"mord",size:3},"\\Bigg":{mclass:"mord",size:4}},Br=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230a","\u230b","\\lceil","\\rceil","\u2308","\u2309","<",">","\\langle","\u27e8","\\rangle","\u27e9","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27ee","\u27ef","\\lmoustache","\\rmoustache","\u23b0","\u23b1","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];function Cr(e,t){var r=Xt(e);if(r&&l.contains(Br,r.text))return r;throw new n(r?"Invalid delimiter '"+r.text+"' after '"+t.funcName+"'":"Invalid delimiter type '"+e.type+"'",e)}function qr(e){if(!e.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}ot({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1,argTypes:["primitive"]},handler:function(e,t){var r=Cr(t[0],e);return{type:"delimsizing",mode:e.parser.mode,size:Tr[e.funcName].size,mclass:Tr[e.funcName].mclass,delim:r.text}},htmlBuilder:function(e,t){return"."===e.delim?Ke.makeSpan([e.mclass]):Ar.sizedDelim(e.delim,e.size,t,e.mode,[e.mclass])},mathmlBuilder:function(e){var t=[];"."!==e.delim&&t.push(Bt(e.delim,e.mode));var r=new Tt.MathNode("mo",t);"mopen"===e.mclass||"mclose"===e.mclass?r.setAttribute("fence","true"):r.setAttribute("fence","false"),r.setAttribute("stretchy","true");var n=V(Ar.sizeToMaxHeight[e.size]);return r.setAttribute("minsize",n),r.setAttribute("maxsize",n),r}}),ot({type:"leftright-right",names:["\\right"],props:{numArgs:1,primitive:!0},handler:function(e,t){var r=e.parser.gullet.macros.get("\\current@color");if(r&&"string"!=typeof r)throw new n("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:e.parser.mode,delim:Cr(t[0],e).text,color:r}}}),ot({type:"leftright",names:["\\left"],props:{numArgs:1,primitive:!0},handler:function(e,t){var r=Cr(t[0],e),n=e.parser;++n.leftrightDepth;var a=n.parseExpression(!1);--n.leftrightDepth,n.expect("\\right",!1);var i=Ut(n.parseFunction(),"leftright-right");return{type:"leftright",mode:n.mode,body:a,left:r.text,right:i.delim,rightColor:i.color}},htmlBuilder:function(e,t){qr(e);for(var r,n,a=ft(e.body,t,!0,["mopen","mclose"]),i=0,o=0,s=!1,l=0;l<a.length;l++)a[l].isMiddle?s=!0:(i=Math.max(a[l].height,i),o=Math.max(a[l].depth,o));if(i*=t.sizeMultiplier,o*=t.sizeMultiplier,r="."===e.left?xt(t,["mopen"]):Ar.leftRightDelim(e.left,i,o,t,e.mode,["mopen"]),a.unshift(r),s)for(var h=1;h<a.length;h++){var m=a[h].isMiddle;m&&(a[h]=Ar.leftRightDelim(m.delim,i,o,m.options,e.mode,[]))}if("."===e.right)n=xt(t,["mclose"]);else{var c=e.rightColor?t.withColor(e.rightColor):t;n=Ar.leftRightDelim(e.right,i,o,c,e.mode,["mclose"])}return a.push(n),Ke.makeSpan(["minner"],a,t)},mathmlBuilder:function(e,t){qr(e);var r=Nt(e.body,t);if("."!==e.left){var n=new Tt.MathNode("mo",[Bt(e.left,e.mode)]);n.setAttribute("fence","true"),r.unshift(n)}if("."!==e.right){var a=new Tt.MathNode("mo",[Bt(e.right,e.mode)]);a.setAttribute("fence","true"),e.rightColor&&a.setAttribute("mathcolor",e.rightColor),r.push(a)}return Ct(r)}}),ot({type:"middle",names:["\\middle"],props:{numArgs:1,primitive:!0},handler:function(e,t){var r=Cr(t[0],e);if(!e.parser.leftrightDepth)throw new n("\\middle without preceding \\left",r);return{type:"middle",mode:e.parser.mode,delim:r.text}},htmlBuilder:function(e,t){var r;if("."===e.delim)r=xt(t,[]);else{r=Ar.sizedDelim(e.delim,1,t,e.mode,[]);var n={delim:e.delim,options:t};r.isMiddle=n}return r},mathmlBuilder:function(e,t){var r="\\vert"===e.delim||"|"===e.delim?Bt("|","text"):Bt(e.delim,e.mode),n=new Tt.MathNode("mo",[r]);return n.setAttribute("fence","true"),n.setAttribute("lspace","0.05em"),n.setAttribute("rspace","0.05em"),n}});var Nr=function(e,t){var r,n,a,i=Ke.wrapFragment(wt(e.body,t),t),o=e.label.substr(1),s=t.sizeMultiplier,h=0,m=l.isCharacterBox(e.body);if("sout"===o)(r=Ke.makeSpan(["stretchy","sout"])).height=t.fontMetrics().defaultRuleThickness/s,h=-.5*t.fontMetrics().xHeight;else if("phase"===o){var c=F({number:.6,unit:"pt"},t),u=F({number:.35,unit:"ex"},t);s/=t.havingBaseSizing().sizeMultiplier;var p=i.height+i.depth+c+u;i.style.paddingLeft=V(p/2+c);var d=Math.floor(1e3*p*s),f="M400000 "+(n=d)+" H0 L"+n/2+" 0 l65 45 L145 "+(n-80)+" H400000z",g=new K([new J("phase",f)],{width:"400em",height:V(d/1e3),viewBox:"0 0 400000 "+d,preserveAspectRatio:"xMinYMin slice"});(r=Ke.makeSvgSpan(["hide-tail"],[g],t)).style.height=V(p),h=i.depth+c+u}else{/cancel/.test(o)?m||i.classes.push("cancel-pad"):"angl"===o?i.classes.push("anglpad"):i.classes.push("boxpad");var v=0,b=0,y=0;/box/.test(o)?(y=Math.max(t.fontMetrics().fboxrule,t.minRuleThickness),b=v=t.fontMetrics().fboxsep+("colorbox"===o?0:y)):"angl"===o?(v=4*(y=Math.max(t.fontMetrics().defaultRuleThickness,t.minRuleThickness)),b=Math.max(0,.25-i.depth)):b=v=m?.2:0,r=Ft(i,o,v,b,t),/fbox|boxed|fcolorbox/.test(o)?(r.style.borderStyle="solid",r.style.borderWidth=V(y)):"angl"===o&&.049!==y&&(r.style.borderTopWidth=V(y),r.style.borderRightWidth=V(y)),h=i.depth+b,e.backgroundColor&&(r.style.backgroundColor=e.backgroundColor,e.borderColor&&(r.style.borderColor=e.borderColor))}if(e.backgroundColor)a=Ke.makeVList({positionType:"individualShift",children:[{type:"elem",elem:r,shift:h},{type:"elem",elem:i,shift:0}]},t);else{var x=/cancel|phase/.test(o)?["svg-align"]:[];a=Ke.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:0},{type:"elem",elem:r,shift:h,wrapperClasses:x}]},t)}return/cancel/.test(o)&&(a.height=i.height,a.depth=i.depth),/cancel/.test(o)&&!m?Ke.makeSpan(["mord","cancel-lap"],[a],t):Ke.makeSpan(["mord"],[a],t)},Ir=function(e,t){var r=0,n=new Tt.MathNode(e.label.indexOf("colorbox")>-1?"mpadded":"menclose",[Rt(e.body,t)]);switch(e.label){case"\\cancel":n.setAttribute("notation","updiagonalstrike");break;case"\\bcancel":n.setAttribute("notation","downdiagonalstrike");break;case"\\phase":n.setAttribute("notation","phasorangle");break;case"\\sout":n.setAttribute("notation","horizontalstrike");break;case"\\fbox":n.setAttribute("notation","box");break;case"\\angl":n.setAttribute("notation","actuarial");break;case"\\fcolorbox":case"\\colorbox":if(r=t.fontMetrics().fboxsep*t.fontMetrics().ptPerEm,n.setAttribute("width","+"+2*r+"pt"),n.setAttribute("height","+"+2*r+"pt"),n.setAttribute("lspace",r+"pt"),n.setAttribute("voffset",r+"pt"),"\\fcolorbox"===e.label){var a=Math.max(t.fontMetrics().fboxrule,t.minRuleThickness);n.setAttribute("style","border: "+a+"em solid "+String(e.borderColor))}break;case"\\xcancel":n.setAttribute("notation","updiagonalstrike downdiagonalstrike")}return e.backgroundColor&&n.setAttribute("mathbackground",e.backgroundColor),n};ot({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,argTypes:["color","text"]},handler:function(e,t,r){var n=e.parser,a=e.funcName,i=Ut(t[0],"color-token").color,o=t[1];return{type:"enclose",mode:n.mode,label:a,backgroundColor:i,body:o}},htmlBuilder:Nr,mathmlBuilder:Ir}),ot({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:!0,argTypes:["color","color","text"]},handler:function(e,t,r){var n=e.parser,a=e.funcName,i=Ut(t[0],"color-token").color,o=Ut(t[1],"color-token").color,s=t[2];return{type:"enclose",mode:n.mode,label:a,backgroundColor:o,borderColor:i,body:s}},htmlBuilder:Nr,mathmlBuilder:Ir}),ot({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler:function(e,t){return{type:"enclose",mode:e.parser.mode,label:"\\fbox",body:t[0]}}}),ot({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\sout","\\phase"],props:{numArgs:1},handler:function(e,t){var r=e.parser,n=e.funcName,a=t[0];return{type:"enclose",mode:r.mode,label:n,body:a}},htmlBuilder:Nr,mathmlBuilder:Ir}),ot({type:"enclose",names:["\\angl"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!1},handler:function(e,t){return{type:"enclose",mode:e.parser.mode,label:"\\angl",body:t[0]}}});var Rr={};function Or(e){for(var t=e.type,r=e.names,n=e.props,a=e.handler,i=e.htmlBuilder,o=e.mathmlBuilder,s={type:t,numArgs:n.numArgs||0,allowedInText:!1,numOptionalArgs:0,handler:a},l=0;l<r.length;++l)Rr[r[l]]=s;i&&(at[t]=i),o&&(it[t]=o)}var Hr={};function Er(e,t){Hr[e]=t}var Lr=function(){function e(e,t,r){this.lexer=void 0,this.start=void 0,this.end=void 0,this.lexer=e,this.start=t,this.end=r}return e.range=function(t,r){return r?t&&t.loc&&r.loc&&t.loc.lexer===r.loc.lexer?new e(t.loc.lexer,t.loc.start,r.loc.end):null:t&&t.loc},e}(),Dr=function(){function e(e,t){this.text=void 0,this.loc=void 0,this.noexpand=void 0,this.treatAsRelax=void 0,this.text=e,this.loc=t}return e.prototype.range=function(t,r){return new e(r,Lr.range(this,t))},e}();function Pr(e){var t=[];e.consumeSpaces();for(var r=e.fetch().text;"\\hline"===r||"\\hdashline"===r;)e.consume(),t.push("\\hdashline"===r),e.consumeSpaces(),r=e.fetch().text;return t}var Fr=function(e){if(!e.parser.settings.displayMode)throw new n("{"+e.envName+"} can be used only in display mode.")};function Vr(e){if(-1===e.indexOf("ed"))return-1===e.indexOf("*")}function Gr(e,t,r){var a=t.hskipBeforeAndAfter,i=t.addJot,o=t.cols,s=t.arraystretch,l=t.colSeparationType,h=t.autoTag,m=t.singleRow,c=t.emptySingleRow,u=t.maxNumCols,p=t.leqno;if(e.gullet.beginGroup(),m||e.gullet.macros.set("\\cr","\\\\\\relax"),!s){var d=e.gullet.expandMacroAsText("\\arraystretch");if(null==d)s=1;else if(!(s=parseFloat(d))||s<0)throw new n("Invalid \\arraystretch: "+d)}e.gullet.beginGroup();var f=[],g=[f],v=[],b=[],y=null!=h?[]:void 0;function x(){h&&e.gullet.macros.set("\\@eqnsw","1",!0)}function w(){y&&(e.gullet.macros.get("\\df@tag")?(y.push(e.subparse([new Dr("\\df@tag")])),e.gullet.macros.set("\\df@tag",void 0,!0)):y.push(Boolean(h)&&"1"===e.gullet.macros.get("\\@eqnsw")))}for(x(),b.push(Pr(e));;){var k=e.parseExpression(!1,m?"\\end":"\\\\");e.gullet.endGroup(),e.gullet.beginGroup(),k={type:"ordgroup",mode:e.mode,body:k},r&&(k={type:"styling",mode:e.mode,style:r,body:[k]}),f.push(k);var S=e.fetch().text;if("&"===S){if(u&&f.length===u){if(m||l)throw new n("Too many tab characters: &",e.nextToken);e.settings.reportNonstrict("textEnv","Too few columns specified in the {array} column argument.")}e.consume()}else{if("\\end"===S){w(),1===f.length&&"styling"===k.type&&0===k.body[0].body.length&&(g.length>1||!c)&&g.pop(),b.length<g.length+1&&b.push([]);break}if("\\\\"!==S)throw new n("Expected & or \\\\ or \\cr or \\end",e.nextToken);e.consume();var M=void 0;" "!==e.gullet.future().text&&(M=e.parseSizeGroup(!0)),v.push(M?M.value:null),w(),b.push(Pr(e)),f=[],g.push(f),x()}}return e.gullet.endGroup(),e.gullet.endGroup(),{type:"array",mode:e.mode,addJot:i,arraystretch:s,body:g,cols:o,rowGaps:v,hskipBeforeAndAfter:a,hLinesBeforeRow:b,colSeparationType:l,tags:y,leqno:p}}function Ur(e){return"d"===e.substr(0,1)?"display":"text"}var Yr=function(e,t){var r,a,i=e.body.length,o=e.hLinesBeforeRow,s=0,h=new Array(i),m=[],c=Math.max(t.fontMetrics().arrayRuleWidth,t.minRuleThickness),u=1/t.fontMetrics().ptPerEm,p=5*u;e.colSeparationType&&"small"===e.colSeparationType&&(p=t.havingStyle(x.SCRIPT).sizeMultiplier/t.sizeMultiplier*.2778);var d="CD"===e.colSeparationType?F({number:3,unit:"ex"},t):12*u,f=3*u,g=e.arraystretch*d,v=.7*g,b=.3*g,y=0;function w(e){for(var t=0;t<e.length;++t)t>0&&(y+=.25),m.push({pos:y,isDashed:e[t]})}for(w(o[0]),r=0;r<e.body.length;++r){var k=e.body[r],S=v,M=b;s<k.length&&(s=k.length);var z=new Array(k.length);for(a=0;a<k.length;++a){var A=wt(k[a],t);M<A.depth&&(M=A.depth),S<A.height&&(S=A.height),z[a]=A}var T=e.rowGaps[r],B=0;T&&(B=F(T,t))>0&&(M<(B+=b)&&(M=B),B=0),e.addJot&&(M+=f),z.height=S,z.depth=M,y+=S,z.pos=y,y+=M+B,h[r]=z,w(o[r+1])}var C,q,N=y/2+t.fontMetrics().axisHeight,I=e.cols||[],R=[],O=[];if(e.tags&&e.tags.some((function(e){return e})))for(r=0;r<i;++r){var H=h[r],E=H.pos-N,L=e.tags[r],D=void 0;(D=!0===L?Ke.makeSpan(["eqn-num"],[],t):!1===L?Ke.makeSpan([],[],t):Ke.makeSpan([],ft(L,t,!0),t)).depth=H.depth,D.height=H.height,O.push({type:"elem",elem:D,shift:E})}for(a=0,q=0;a<s||q<I.length;++a,++q){for(var P=I[q]||{},G=!0;"separator"===P.type;){if(G||((C=Ke.makeSpan(["arraycolsep"],[])).style.width=V(t.fontMetrics().doubleRuleSep),R.push(C)),"|"!==P.separator&&":"!==P.separator)throw new n("Invalid separator type: "+P.separator);var U="|"===P.separator?"solid":"dashed",Y=Ke.makeSpan(["vertical-separator"],[],t);Y.style.height=V(y),Y.style.borderRightWidth=V(c),Y.style.borderRightStyle=U,Y.style.margin="0 "+V(-c/2);var X=y-N;X&&(Y.style.verticalAlign=V(-X)),R.push(Y),P=I[++q]||{},G=!1}if(!(a>=s)){var W=void 0;(a>0||e.hskipBeforeAndAfter)&&0!==(W=l.deflt(P.pregap,p))&&((C=Ke.makeSpan(["arraycolsep"],[])).style.width=V(W),R.push(C));var _=[];for(r=0;r<i;++r){var j=h[r],$=j[a];if($){var Z=j.pos-N;$.depth=j.depth,$.height=j.height,_.push({type:"elem",elem:$,shift:Z})}}_=Ke.makeVList({positionType:"individualShift",children:_},t),_=Ke.makeSpan(["col-align-"+(P.align||"c")],[_]),R.push(_),(a<s-1||e.hskipBeforeAndAfter)&&0!==(W=l.deflt(P.postgap,p))&&((C=Ke.makeSpan(["arraycolsep"],[])).style.width=V(W),R.push(C))}}if(h=Ke.makeSpan(["mtable"],R),m.length>0){for(var K=Ke.makeLineSpan("hline",t,c),J=Ke.makeLineSpan("hdashline",t,c),Q=[{type:"elem",elem:h,shift:0}];m.length>0;){var ee=m.pop(),te=ee.pos-N;ee.isDashed?Q.push({type:"elem",elem:J,shift:te}):Q.push({type:"elem",elem:K,shift:te})}h=Ke.makeVList({positionType:"individualShift",children:Q},t)}if(0===O.length)return Ke.makeSpan(["mord"],[h],t);var re=Ke.makeVList({positionType:"individualShift",children:O},t);return re=Ke.makeSpan(["tag"],[re],t),Ke.makeFragment([h,re])},Xr={c:"center ",l:"left ",r:"right "},Wr=function(e,t){for(var r=[],n=new Tt.MathNode("mtd",[],["mtr-glue"]),a=new Tt.MathNode("mtd",[],["mml-eqn-num"]),i=0;i<e.body.length;i++){for(var o=e.body[i],s=[],l=0;l<o.length;l++)s.push(new Tt.MathNode("mtd",[Rt(o[l],t)]));e.tags&&e.tags[i]&&(s.unshift(n),s.push(n),e.leqno?s.unshift(a):s.push(a)),r.push(new Tt.MathNode("mtr",s))}var h=new Tt.MathNode("mtable",r),m=.5===e.arraystretch?.1:.16+e.arraystretch-1+(e.addJot?.09:0);h.setAttribute("rowspacing",V(m));var c="",u="";if(e.cols&&e.cols.length>0){var p=e.cols,d="",f=!1,g=0,v=p.length;"separator"===p[0].type&&(c+="top ",g=1),"separator"===p[p.length-1].type&&(c+="bottom ",v-=1);for(var b=g;b<v;b++)"align"===p[b].type?(u+=Xr[p[b].align],f&&(d+="none "),f=!0):"separator"===p[b].type&&f&&(d+="|"===p[b].separator?"solid ":"dashed ",f=!1);h.setAttribute("columnalign",u.trim()),/[sd]/.test(d)&&h.setAttribute("columnlines",d.trim())}if("align"===e.colSeparationType){for(var y=e.cols||[],x="",w=1;w<y.length;w++)x+=w%2?"0em ":"1em ";h.setAttribute("columnspacing",x.trim())}else"alignat"===e.colSeparationType||"gather"===e.colSeparationType?h.setAttribute("columnspacing","0em"):"small"===e.colSeparationType?h.setAttribute("columnspacing","0.2778em"):"CD"===e.colSeparationType?h.setAttribute("columnspacing","0.5em"):h.setAttribute("columnspacing","1em");var k="",S=e.hLinesBeforeRow;c+=S[0].length>0?"left ":"",c+=S[S.length-1].length>0?"right ":"";for(var M=1;M<S.length-1;M++)k+=0===S[M].length?"none ":S[M][0]?"dashed ":"solid ";return/[sd]/.test(k)&&h.setAttribute("rowlines",k.trim()),""!==c&&(h=new Tt.MathNode("menclose",[h])).setAttribute("notation",c.trim()),e.arraystretch&&e.arraystretch<1&&(h=new Tt.MathNode("mstyle",[h])).setAttribute("scriptlevel","1"),h},_r=function(e,t){-1===e.envName.indexOf("ed")&&Fr(e);var r,a=[],i=e.envName.indexOf("at")>-1?"alignat":"align",o="split"===e.envName,s=Gr(e.parser,{cols:a,addJot:!0,autoTag:o?void 0:Vr(e.envName),emptySingleRow:!0,colSeparationType:i,maxNumCols:o?2:void 0,leqno:e.parser.settings.leqno},"display"),l=0,h={type:"ordgroup",mode:e.mode,body:[]};if(t[0]&&"ordgroup"===t[0].type){for(var m="",c=0;c<t[0].body.length;c++){m+=Ut(t[0].body[c],"textord").text}r=Number(m),l=2*r}var u=!l;s.body.forEach((function(e){for(var t=1;t<e.length;t+=2){var a=Ut(e[t],"styling");Ut(a.body[0],"ordgroup").body.unshift(h)}if(u)l<e.length&&(l=e.length);else{var i=e.length/2;if(r<i)throw new n("Too many math in a row: expected "+r+", but got "+i,e[0])}}));for(var p=0;p<l;++p){var d="r",f=0;p%2==1?d="l":p>0&&u&&(f=1),a[p]={type:"align",align:d,pregap:f,postgap:0}}return s.colSeparationType=u?"align":"alignat",s};Or({type:"array",names:["array","darray"],props:{numArgs:1},handler:function(e,t){var r=(Xt(t[0])?[t[0]]:Ut(t[0],"ordgroup").body).map((function(e){var t=Yt(e).text;if(-1!=="lcr".indexOf(t))return{type:"align",align:t};if("|"===t)return{type:"separator",separator:"|"};if(":"===t)return{type:"separator",separator:":"};throw new n("Unknown column alignment: "+t,e)})),a={cols:r,hskipBeforeAndAfter:!0,maxNumCols:r.length};return Gr(e.parser,a,Ur(e.envName))},htmlBuilder:Yr,mathmlBuilder:Wr}),Or({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix","matrix*","pmatrix*","bmatrix*","Bmatrix*","vmatrix*","Vmatrix*"],props:{numArgs:0},handler:function(e){var t={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[e.envName.replace("*","")],r="c",a={hskipBeforeAndAfter:!1,cols:[{type:"align",align:r}]};if("*"===e.envName.charAt(e.envName.length-1)){var i=e.parser;if(i.consumeSpaces(),"["===i.fetch().text){if(i.consume(),i.consumeSpaces(),r=i.fetch().text,-1==="lcr".indexOf(r))throw new n("Expected l or c or r",i.nextToken);i.consume(),i.consumeSpaces(),i.expect("]"),i.consume(),a.cols=[{type:"align",align:r}]}}var o=Gr(e.parser,a,Ur(e.envName)),s=Math.max.apply(Math,[0].concat(o.body.map((function(e){return e.length}))));return o.cols=new Array(s).fill({type:"align",align:r}),t?{type:"leftright",mode:e.mode,body:[o],left:t[0],right:t[1],rightColor:void 0}:o},htmlBuilder:Yr,mathmlBuilder:Wr}),Or({type:"array",names:["smallmatrix"],props:{numArgs:0},handler:function(e){var t=Gr(e.parser,{arraystretch:.5},"script");return t.colSeparationType="small",t},htmlBuilder:Yr,mathmlBuilder:Wr}),Or({type:"array",names:["subarray"],props:{numArgs:1},handler:function(e,t){var r=(Xt(t[0])?[t[0]]:Ut(t[0],"ordgroup").body).map((function(e){var t=Yt(e).text;if(-1!=="lc".indexOf(t))return{type:"align",align:t};throw new n("Unknown column alignment: "+t,e)}));if(r.length>1)throw new n("{subarray} can contain only one column");var a={cols:r,hskipBeforeAndAfter:!1,arraystretch:.5};if((a=Gr(e.parser,a,"script")).body.length>0&&a.body[0].length>1)throw new n("{subarray} can contain only one column");return a},htmlBuilder:Yr,mathmlBuilder:Wr}),Or({type:"array",names:["cases","dcases","rcases","drcases"],props:{numArgs:0},handler:function(e){var t=Gr(e.parser,{arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]},Ur(e.envName));return{type:"leftright",mode:e.mode,body:[t],left:e.envName.indexOf("r")>-1?".":"\\{",right:e.envName.indexOf("r")>-1?"\\}":".",rightColor:void 0}},htmlBuilder:Yr,mathmlBuilder:Wr}),Or({type:"array",names:["align","align*","aligned","split"],props:{numArgs:0},handler:_r,htmlBuilder:Yr,mathmlBuilder:Wr}),Or({type:"array",names:["gathered","gather","gather*"],props:{numArgs:0},handler:function(e){l.contains(["gather","gather*"],e.envName)&&Fr(e);var t={cols:[{type:"align",align:"c"}],addJot:!0,colSeparationType:"gather",autoTag:Vr(e.envName),emptySingleRow:!0,leqno:e.parser.settings.leqno};return Gr(e.parser,t,"display")},htmlBuilder:Yr,mathmlBuilder:Wr}),Or({type:"array",names:["alignat","alignat*","alignedat"],props:{numArgs:1},handler:_r,htmlBuilder:Yr,mathmlBuilder:Wr}),Or({type:"array",names:["equation","equation*"],props:{numArgs:0},handler:function(e){Fr(e);var t={autoTag:Vr(e.envName),emptySingleRow:!0,singleRow:!0,maxNumCols:1,leqno:e.parser.settings.leqno};return Gr(e.parser,t,"display")},htmlBuilder:Yr,mathmlBuilder:Wr}),Or({type:"array",names:["CD"],props:{numArgs:0},handler:function(e){return Fr(e),function(e){var t=[];for(e.gullet.beginGroup(),e.gullet.macros.set("\\cr","\\\\\\relax"),e.gullet.beginGroup();;){t.push(e.parseExpression(!1,"\\\\")),e.gullet.endGroup(),e.gullet.beginGroup();var r=e.fetch().text;if("&"!==r&&"\\\\"!==r){if("\\end"===r){0===t[t.length-1].length&&t.pop();break}throw new n("Expected \\\\ or \\cr or \\end",e.nextToken)}e.consume()}for(var a,i,o=[],s=[o],l=0;l<t.length;l++){for(var h=t[l],m={type:"styling",body:[],mode:"math",style:"display"},c=0;c<h.length;c++)if(Kt(h[c])){o.push(m);var u=Yt(h[c+=1]).text,p=new Array(2);if(p[0]={type:"ordgroup",mode:"math",body:[]},p[1]={type:"ordgroup",mode:"math",body:[]},"=|.".indexOf(u)>-1);else{if(!("<>AV".indexOf(u)>-1))throw new n('Expected one of "<>AV=|." after @',h[c]);for(var d=0;d<2;d++){for(var f=!0,g=c+1;g<h.length;g++){if(i=u,("mathord"===(a=h[g]).type||"atom"===a.type)&&a.text===i){f=!1,c=g;break}if(Kt(h[g]))throw new n("Missing a "+u+" character to complete a CD arrow.",h[g]);p[d].body.push(h[g])}if(f)throw new n("Missing a "+u+" character to complete a CD arrow.",h[c])}}var v={type:"styling",body:[Jt(u,p,e)],mode:"math",style:"display"};o.push(v),m={type:"styling",body:[],mode:"math",style:"display"}}else m.body.push(h[c]);l%2==0?o.push(m):o.shift(),o=[],s.push(o)}return e.gullet.endGroup(),e.gullet.endGroup(),{type:"array",mode:"math",body:s,arraystretch:1,addJot:!0,rowGaps:[null],cols:new Array(s[0].length).fill({type:"align",align:"c",pregap:.25,postgap:.25}),colSeparationType:"CD",hLinesBeforeRow:new Array(s.length+1).fill([])}}(e.parser)},htmlBuilder:Yr,mathmlBuilder:Wr}),Er("\\nonumber","\\gdef\\@eqnsw{0}"),Er("\\notag","\\nonumber"),ot({type:"text",names:["\\hline","\\hdashline"],props:{numArgs:0,allowedInText:!0,allowedInMath:!0},handler:function(e,t){throw new n(e.funcName+" valid only within array environment")}});var jr=Rr;ot({type:"environment",names:["\\begin","\\end"],props:{numArgs:1,argTypes:["text"]},handler:function(e,t){var r=e.parser,a=e.funcName,i=t[0];if("ordgroup"!==i.type)throw new n("Invalid environment name",i);for(var o="",s=0;s<i.body.length;++s)o+=Ut(i.body[s],"textord").text;if("\\begin"===a){if(!jr.hasOwnProperty(o))throw new n("No such environment: "+o,i);var l=jr[o],h=r.parseArguments("\\begin{"+o+"}",l),m=h.args,c=h.optArgs,u={mode:r.mode,envName:o,parser:r},p=l.handler(u,m,c);r.expect("\\end",!1);var d=r.nextToken,f=Ut(r.parseFunction(),"environment");if(f.name!==o)throw new n("Mismatch: \\begin{"+o+"} matched by \\end{"+f.name+"}",d);return p}return{type:"environment",mode:r.mode,name:o,nameGroup:i}}});var $r=Ke.makeSpan;function Zr(e,t){var r=ft(e.body,t,!0);return $r([e.mclass],r,t)}function Kr(e,t){var r,n=Nt(e.body,t);return"minner"===e.mclass?r=new Tt.MathNode("mpadded",n):"mord"===e.mclass?e.isCharacterBox?(r=n[0]).type="mi":r=new Tt.MathNode("mi",n):(e.isCharacterBox?(r=n[0]).type="mo":r=new Tt.MathNode("mo",n),"mbin"===e.mclass?(r.attributes.lspace="0.22em",r.attributes.rspace="0.22em"):"mpunct"===e.mclass?(r.attributes.lspace="0em",r.attributes.rspace="0.17em"):"mopen"===e.mclass||"mclose"===e.mclass?(r.attributes.lspace="0em",r.attributes.rspace="0em"):"minner"===e.mclass&&(r.attributes.lspace="0.0556em",r.attributes.width="+0.1111em")),r}ot({type:"mclass",names:["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],props:{numArgs:1,primitive:!0},handler:function(e,t){var r=e.parser,n=e.funcName,a=t[0];return{type:"mclass",mode:r.mode,mclass:"m"+n.substr(5),body:ht(a),isCharacterBox:l.isCharacterBox(a)}},htmlBuilder:Zr,mathmlBuilder:Kr});var Jr=function(e){var t="ordgroup"===e.type&&e.body.length?e.body[0]:e;return"atom"!==t.type||"bin"!==t.family&&"rel"!==t.family?"mord":"m"+t.family};ot({type:"mclass",names:["\\@binrel"],props:{numArgs:2},handler:function(e,t){return{type:"mclass",mode:e.parser.mode,mclass:Jr(t[0]),body:ht(t[1]),isCharacterBox:l.isCharacterBox(t[1])}}}),ot({type:"mclass",names:["\\stackrel","\\overset","\\underset"],props:{numArgs:2},handler:function(e,t){var r,n=e.parser,a=e.funcName,i=t[1],o=t[0];r="\\stackrel"!==a?Jr(i):"mrel";var s={type:"op",mode:i.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,suppressBaseShift:"\\stackrel"!==a,body:ht(i)},h={type:"supsub",mode:o.mode,base:s,sup:"\\underset"===a?null:o,sub:"\\underset"===a?o:null};return{type:"mclass",mode:n.mode,mclass:r,body:[h],isCharacterBox:l.isCharacterBox(h)}},htmlBuilder:Zr,mathmlBuilder:Kr});var Qr=function(e,t){var r=e.font,n=t.withFont(r);return wt(e.body,n)},en=function(e,t){var r=e.font,n=t.withFont(r);return Rt(e.body,n)},tn={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak","\\bm":"\\boldsymbol"};ot({type:"font",names:["\\mathrm","\\mathit","\\mathbf","\\mathnormal","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],props:{numArgs:1,allowedInArgument:!0},handler:function(e,t){var r=e.parser,n=e.funcName,a=lt(t[0]),i=n;return i in tn&&(i=tn[i]),{type:"font",mode:r.mode,font:i.slice(1),body:a}},htmlBuilder:Qr,mathmlBuilder:en}),ot({type:"mclass",names:["\\boldsymbol","\\bm"],props:{numArgs:1},handler:function(e,t){var r=e.parser,n=t[0],a=l.isCharacterBox(n);return{type:"mclass",mode:r.mode,mclass:Jr(n),body:[{type:"font",mode:r.mode,font:"boldsymbol",body:n}],isCharacterBox:a}}}),ot({type:"font",names:["\\rm","\\sf","\\tt","\\bf","\\it","\\cal"],props:{numArgs:0,allowedInText:!0},handler:function(e,t){var r=e.parser,n=e.funcName,a=e.breakOnTokenText,i=r.mode,o=r.parseExpression(!0,a);return{type:"font",mode:i,font:"math"+n.slice(1),body:{type:"ordgroup",mode:r.mode,body:o}}},htmlBuilder:Qr,mathmlBuilder:en});var rn=function(e,t){var r=t;return"display"===e?r=r.id>=x.SCRIPT.id?r.text():x.DISPLAY:"text"===e&&r.size===x.DISPLAY.size?r=x.TEXT:"script"===e?r=x.SCRIPT:"scriptscript"===e&&(r=x.SCRIPTSCRIPT),r},nn=function(e,t){var r,n=rn(e.size,t.style),a=n.fracNum(),i=n.fracDen();r=t.havingStyle(a);var o=wt(e.numer,r,t);if(e.continued){var s=8.5/t.fontMetrics().ptPerEm,l=3.5/t.fontMetrics().ptPerEm;o.height=o.height<s?s:o.height,o.depth=o.depth<l?l:o.depth}r=t.havingStyle(i);var h,m,c,u,p,d,f,g,v,b,y=wt(e.denom,r,t);if(e.hasBarLine?(e.barSize?(m=F(e.barSize,t),h=Ke.makeLineSpan("frac-line",t,m)):h=Ke.makeLineSpan("frac-line",t),m=h.height,c=h.height):(h=null,m=0,c=t.fontMetrics().defaultRuleThickness),n.size===x.DISPLAY.size||"display"===e.size?(u=t.fontMetrics().num1,p=m>0?3*c:7*c,d=t.fontMetrics().denom1):(m>0?(u=t.fontMetrics().num2,p=c):(u=t.fontMetrics().num3,p=3*c),d=t.fontMetrics().denom2),h){var w=t.fontMetrics().axisHeight;u-o.depth-(w+.5*m)<p&&(u+=p-(u-o.depth-(w+.5*m))),w-.5*m-(y.height-d)<p&&(d+=p-(w-.5*m-(y.height-d)));var k=-(w-.5*m);f=Ke.makeVList({positionType:"individualShift",children:[{type:"elem",elem:y,shift:d},{type:"elem",elem:h,shift:k},{type:"elem",elem:o,shift:-u}]},t)}else{var S=u-o.depth-(y.height-d);S<p&&(u+=.5*(p-S),d+=.5*(p-S)),f=Ke.makeVList({positionType:"individualShift",children:[{type:"elem",elem:y,shift:d},{type:"elem",elem:o,shift:-u}]},t)}return r=t.havingStyle(n),f.height*=r.sizeMultiplier/t.sizeMultiplier,f.depth*=r.sizeMultiplier/t.sizeMultiplier,g=n.size===x.DISPLAY.size?t.fontMetrics().delim1:n.size===x.SCRIPTSCRIPT.size?t.havingStyle(x.SCRIPT).fontMetrics().delim2:t.fontMetrics().delim2,v=null==e.leftDelim?xt(t,["mopen"]):Ar.customSizedDelim(e.leftDelim,g,!0,t.havingStyle(n),e.mode,["mopen"]),b=e.continued?Ke.makeSpan([]):null==e.rightDelim?xt(t,["mclose"]):Ar.customSizedDelim(e.rightDelim,g,!0,t.havingStyle(n),e.mode,["mclose"]),Ke.makeSpan(["mord"].concat(r.sizingClasses(t)),[v,Ke.makeSpan(["mfrac"],[f]),b],t)},an=function(e,t){var r=new Tt.MathNode("mfrac",[Rt(e.numer,t),Rt(e.denom,t)]);if(e.hasBarLine){if(e.barSize){var n=F(e.barSize,t);r.setAttribute("linethickness",V(n))}}else r.setAttribute("linethickness","0px");var a=rn(e.size,t.style);if(a.size!==t.style.size){r=new Tt.MathNode("mstyle",[r]);var i=a.size===x.DISPLAY.size?"true":"false";r.setAttribute("displaystyle",i),r.setAttribute("scriptlevel","0")}if(null!=e.leftDelim||null!=e.rightDelim){var o=[];if(null!=e.leftDelim){var s=new Tt.MathNode("mo",[new Tt.TextNode(e.leftDelim.replace("\\",""))]);s.setAttribute("fence","true"),o.push(s)}if(o.push(r),null!=e.rightDelim){var l=new Tt.MathNode("mo",[new Tt.TextNode(e.rightDelim.replace("\\",""))]);l.setAttribute("fence","true"),o.push(l)}return Ct(o)}return r};ot({type:"genfrac",names:["\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac","\\\\bracefrac","\\\\brackfrac"],props:{numArgs:2,allowedInArgument:!0},handler:function(e,t){var r,n=e.parser,a=e.funcName,i=t[0],o=t[1],s=null,l=null,h="auto";switch(a){case"\\dfrac":case"\\frac":case"\\tfrac":r=!0;break;case"\\\\atopfrac":r=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":r=!1,s="(",l=")";break;case"\\\\bracefrac":r=!1,s="\\{",l="\\}";break;case"\\\\brackfrac":r=!1,s="[",l="]";break;default:throw new Error("Unrecognized genfrac command")}switch(a){case"\\dfrac":case"\\dbinom":h="display";break;case"\\tfrac":case"\\tbinom":h="text"}return{type:"genfrac",mode:n.mode,continued:!1,numer:i,denom:o,hasBarLine:r,leftDelim:s,rightDelim:l,size:h,barSize:null}},htmlBuilder:nn,mathmlBuilder:an}),ot({type:"genfrac",names:["\\cfrac"],props:{numArgs:2},handler:function(e,t){var r=e.parser,n=(e.funcName,t[0]),a=t[1];return{type:"genfrac",mode:r.mode,continued:!0,numer:n,denom:a,hasBarLine:!0,leftDelim:null,rightDelim:null,size:"display",barSize:null}}}),ot({type:"infix",names:["\\over","\\choose","\\atop","\\brace","\\brack"],props:{numArgs:0,infix:!0},handler:function(e){var t,r=e.parser,n=e.funcName,a=e.token;switch(n){case"\\over":t="\\frac";break;case"\\choose":t="\\binom";break;case"\\atop":t="\\\\atopfrac";break;case"\\brace":t="\\\\bracefrac";break;case"\\brack":t="\\\\brackfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",mode:r.mode,replaceWith:t,token:a}}});var on=["display","text","script","scriptscript"],sn=function(e){var t=null;return e.length>0&&(t="."===(t=e)?null:t),t};ot({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,allowedInArgument:!0,argTypes:["math","math","size","text","math","math"]},handler:function(e,t){var r,n=e.parser,a=t[4],i=t[5],o=lt(t[0]),s="atom"===o.type&&"open"===o.family?sn(o.text):null,l=lt(t[1]),h="atom"===l.type&&"close"===l.family?sn(l.text):null,m=Ut(t[2],"size"),c=null;r=!!m.isBlank||(c=m.value).number>0;var u="auto",p=t[3];if("ordgroup"===p.type){if(p.body.length>0){var d=Ut(p.body[0],"textord");u=on[Number(d.text)]}}else p=Ut(p,"textord"),u=on[Number(p.text)];return{type:"genfrac",mode:n.mode,numer:a,denom:i,continued:!1,hasBarLine:r,barSize:c,leftDelim:s,rightDelim:h,size:u}},htmlBuilder:nn,mathmlBuilder:an}),ot({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler:function(e,t){var r=e.parser,n=(e.funcName,e.token);return{type:"infix",mode:r.mode,replaceWith:"\\\\abovefrac",size:Ut(t[0],"size").value,token:n}}}),ot({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:function(e,t){var r=e.parser,n=(e.funcName,t[0]),a=function(e){if(!e)throw new Error("Expected non-null, but got "+String(e));return e}(Ut(t[1],"infix").size),i=t[2],o=a.number>0;return{type:"genfrac",mode:r.mode,numer:n,denom:i,continued:!1,hasBarLine:o,barSize:a,leftDelim:null,rightDelim:null,size:"auto"}},htmlBuilder:nn,mathmlBuilder:an});var ln=function(e,t){var r,n,a=t.style;"supsub"===e.type?(r=e.sup?wt(e.sup,t.havingStyle(a.sup()),t):wt(e.sub,t.havingStyle(a.sub()),t),n=Ut(e.base,"horizBrace")):n=Ut(e,"horizBrace");var i,o=wt(n.base,t.havingBaseStyle(x.DISPLAY)),s=Gt(n,t);if(n.isOver?(i=Ke.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:o},{type:"kern",size:.1},{type:"elem",elem:s}]},t)).children[0].children[0].children[1].classes.push("svg-align"):(i=Ke.makeVList({positionType:"bottom",positionData:o.depth+.1+s.height,children:[{type:"elem",elem:s},{type:"kern",size:.1},{type:"elem",elem:o}]},t)).children[0].children[0].children[0].classes.push("svg-align"),r){var l=Ke.makeSpan(["mord",n.isOver?"mover":"munder"],[i],t);i=n.isOver?Ke.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:l},{type:"kern",size:.2},{type:"elem",elem:r}]},t):Ke.makeVList({positionType:"bottom",positionData:l.depth+.2+r.height+r.depth,children:[{type:"elem",elem:r},{type:"kern",size:.2},{type:"elem",elem:l}]},t)}return Ke.makeSpan(["mord",n.isOver?"mover":"munder"],[i],t)};ot({type:"horizBrace",names:["\\overbrace","\\underbrace"],props:{numArgs:1},handler:function(e,t){var r=e.parser,n=e.funcName;return{type:"horizBrace",mode:r.mode,label:n,isOver:/^\\over/.test(n),base:t[0]}},htmlBuilder:ln,mathmlBuilder:function(e,t){var r=Vt(e.label);return new Tt.MathNode(e.isOver?"mover":"munder",[Rt(e.base,t),r])}}),ot({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:function(e,t){var r=e.parser,n=t[1],a=Ut(t[0],"url").url;return r.settings.isTrusted({command:"\\href",url:a})?{type:"href",mode:r.mode,href:a,body:ht(n)}:r.formatUnsupportedCmd("\\href")},htmlBuilder:function(e,t){var r=ft(e.body,t,!1);return Ke.makeAnchor(e.href,[],r,t)},mathmlBuilder:function(e,t){var r=It(e.body,t);return r instanceof zt||(r=new zt("mrow",[r])),r.setAttribute("href",e.href),r}}),ot({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:function(e,t){var r=e.parser,n=Ut(t[0],"url").url;if(!r.settings.isTrusted({command:"\\url",url:n}))return r.formatUnsupportedCmd("\\url");for(var a=[],i=0;i<n.length;i++){var o=n[i];"~"===o&&(o="\\textasciitilde"),a.push({type:"textord",mode:"text",text:o})}var s={type:"text",mode:r.mode,font:"\\texttt",body:a};return{type:"href",mode:r.mode,href:n,body:ht(s)}}}),ot({type:"hbox",names:["\\hbox"],props:{numArgs:1,argTypes:["text"],allowedInText:!0,primitive:!0},handler:function(e,t){return{type:"hbox",mode:e.parser.mode,body:ht(t[0])}},htmlBuilder:function(e,t){var r=ft(e.body,t,!1);return Ke.makeFragment(r)},mathmlBuilder:function(e,t){return new Tt.MathNode("mrow",Nt(e.body,t))}}),ot({type:"html",names:["\\htmlClass","\\htmlId","\\htmlStyle","\\htmlData"],props:{numArgs:2,argTypes:["raw","original"],allowedInText:!0},handler:function(e,t){var r,a=e.parser,i=e.funcName,o=(e.token,Ut(t[0],"raw").string),s=t[1];a.settings.strict&&a.settings.reportNonstrict("htmlExtension","HTML extension is disabled on strict mode");var l={};switch(i){case"\\htmlClass":l.class=o,r={command:"\\htmlClass",class:o};break;case"\\htmlId":l.id=o,r={command:"\\htmlId",id:o};break;case"\\htmlStyle":l.style=o,r={command:"\\htmlStyle",style:o};break;case"\\htmlData":for(var h=o.split(","),m=0;m<h.length;m++){var c=h[m].split("=");if(2!==c.length)throw new n("Error parsing key-value for \\htmlData");l["data-"+c[0].trim()]=c[1].trim()}r={command:"\\htmlData",attributes:l};break;default:throw new Error("Unrecognized html command")}return a.settings.isTrusted(r)?{type:"html",mode:a.mode,attributes:l,body:ht(s)}:a.formatUnsupportedCmd(i)},htmlBuilder:function(e,t){var r=ft(e.body,t,!1),n=["enclosing"];e.attributes.class&&n.push.apply(n,e.attributes.class.trim().split(/\s+/));var a=Ke.makeSpan(n,r,t);for(var i in e.attributes)"class"!==i&&e.attributes.hasOwnProperty(i)&&a.setAttribute(i,e.attributes[i]);return a},mathmlBuilder:function(e,t){return It(e.body,t)}}),ot({type:"htmlmathml",names:["\\html@mathml"],props:{numArgs:2,allowedInText:!0},handler:function(e,t){return{type:"htmlmathml",mode:e.parser.mode,html:ht(t[0]),mathml:ht(t[1])}},htmlBuilder:function(e,t){var r=ft(e.html,t,!1);return Ke.makeFragment(r)},mathmlBuilder:function(e,t){return It(e.mathml,t)}});var hn=function(e){if(/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(e))return{number:+e,unit:"bp"};var t=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(e);if(!t)throw new n("Invalid size: '"+e+"' in \\includegraphics");var r={number:+(t[1]+t[2]),unit:t[3]};if(!P(r))throw new n("Invalid unit: '"+r.unit+"' in \\includegraphics.");return r};ot({type:"includegraphics",names:["\\includegraphics"],props:{numArgs:1,numOptionalArgs:1,argTypes:["raw","url"],allowedInText:!1},handler:function(e,t,r){var a=e.parser,i={number:0,unit:"em"},o={number:.9,unit:"em"},s={number:0,unit:"em"},l="";if(r[0])for(var h=Ut(r[0],"raw").string.split(","),m=0;m<h.length;m++){var c=h[m].split("=");if(2===c.length){var u=c[1].trim();switch(c[0].trim()){case"alt":l=u;break;case"width":i=hn(u);break;case"height":o=hn(u);break;case"totalheight":s=hn(u);break;default:throw new n("Invalid key: '"+c[0]+"' in \\includegraphics.")}}}var p=Ut(t[0],"url").url;return""===l&&(l=(l=(l=p).replace(/^.*[\\/]/,"")).substring(0,l.lastIndexOf("."))),a.settings.isTrusted({command:"\\includegraphics",url:p})?{type:"includegraphics",mode:a.mode,alt:l,width:i,height:o,totalheight:s,src:p}:a.formatUnsupportedCmd("\\includegraphics")},htmlBuilder:function(e,t){var r=F(e.height,t),n=0;e.totalheight.number>0&&(n=F(e.totalheight,t)-r);var a=0;e.width.number>0&&(a=F(e.width,t));var i={height:V(r+n)};a>0&&(i.width=V(a)),n>0&&(i.verticalAlign=V(-n));var o=new j(e.src,e.alt,i);return o.height=r,o.depth=n,o},mathmlBuilder:function(e,t){var r=new Tt.MathNode("mglyph",[]);r.setAttribute("alt",e.alt);var n=F(e.height,t),a=0;if(e.totalheight.number>0&&(a=F(e.totalheight,t)-n,r.setAttribute("valign",V(-a))),r.setAttribute("height",V(n+a)),e.width.number>0){var i=F(e.width,t);r.setAttribute("width",V(i))}return r.setAttribute("src",e.src),r}}),ot({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],primitive:!0,allowedInText:!0},handler:function(e,t){var r=e.parser,n=e.funcName,a=Ut(t[0],"size");if(r.settings.strict){var i="m"===n[1],o="mu"===a.value.unit;i?(o||r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" supports only mu units, not "+a.value.unit+" units"),"math"!==r.mode&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" works only in math mode")):o&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" doesn't support mu units")}return{type:"kern",mode:r.mode,dimension:a.value}},htmlBuilder:function(e,t){return Ke.makeGlue(e.dimension,t)},mathmlBuilder:function(e,t){var r=F(e.dimension,t);return new Tt.SpaceNode(r)}}),ot({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:!0},handler:function(e,t){var r=e.parser,n=e.funcName,a=t[0];return{type:"lap",mode:r.mode,alignment:n.slice(5),body:a}},htmlBuilder:function(e,t){var r;"clap"===e.alignment?(r=Ke.makeSpan([],[wt(e.body,t)]),r=Ke.makeSpan(["inner"],[r],t)):r=Ke.makeSpan(["inner"],[wt(e.body,t)]);var n=Ke.makeSpan(["fix"],[]),a=Ke.makeSpan([e.alignment],[r,n],t),i=Ke.makeSpan(["strut"]);return i.style.height=V(a.height+a.depth),a.depth&&(i.style.verticalAlign=V(-a.depth)),a.children.unshift(i),a=Ke.makeSpan(["thinbox"],[a],t),Ke.makeSpan(["mord","vbox"],[a],t)},mathmlBuilder:function(e,t){var r=new Tt.MathNode("mpadded",[Rt(e.body,t)]);if("rlap"!==e.alignment){var n="llap"===e.alignment?"-1":"-0.5";r.setAttribute("lspace",n+"width")}return r.setAttribute("width","0px"),r}}),ot({type:"styling",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler:function(e,t){var r=e.funcName,n=e.parser,a=n.mode;n.switchMode("math");var i="\\("===r?"\\)":"$",o=n.parseExpression(!1,i);return n.expect(i),n.switchMode(a),{type:"styling",mode:n.mode,style:"text",body:o}}}),ot({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler:function(e,t){throw new n("Mismatched "+e.funcName)}});var mn=function(e,t){switch(t.style.size){case x.DISPLAY.size:return e.display;case x.TEXT.size:return e.text;case x.SCRIPT.size:return e.script;case x.SCRIPTSCRIPT.size:return e.scriptscript;default:return e.text}};ot({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4,primitive:!0},handler:function(e,t){return{type:"mathchoice",mode:e.parser.mode,display:ht(t[0]),text:ht(t[1]),script:ht(t[2]),scriptscript:ht(t[3])}},htmlBuilder:function(e,t){var r=mn(e,t),n=ft(r,t,!1);return Ke.makeFragment(n)},mathmlBuilder:function(e,t){var r=mn(e,t);return It(r,t)}});var cn=function(e,t,r,n,a,i,o){e=Ke.makeSpan([],[e]);var s,h,m,c=r&&l.isCharacterBox(r);if(t){var u=wt(t,n.havingStyle(a.sup()),n);h={elem:u,kern:Math.max(n.fontMetrics().bigOpSpacing1,n.fontMetrics().bigOpSpacing3-u.depth)}}if(r){var p=wt(r,n.havingStyle(a.sub()),n);s={elem:p,kern:Math.max(n.fontMetrics().bigOpSpacing2,n.fontMetrics().bigOpSpacing4-p.height)}}if(h&&s){var d=n.fontMetrics().bigOpSpacing5+s.elem.height+s.elem.depth+s.kern+e.depth+o;m=Ke.makeVList({positionType:"bottom",positionData:d,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:s.elem,marginLeft:V(-i)},{type:"kern",size:s.kern},{type:"elem",elem:e},{type:"kern",size:h.kern},{type:"elem",elem:h.elem,marginLeft:V(i)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]},n)}else if(s){var f=e.height-o;m=Ke.makeVList({positionType:"top",positionData:f,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:s.elem,marginLeft:V(-i)},{type:"kern",size:s.kern},{type:"elem",elem:e}]},n)}else{if(!h)return e;var g=e.depth+o;m=Ke.makeVList({positionType:"bottom",positionData:g,children:[{type:"elem",elem:e},{type:"kern",size:h.kern},{type:"elem",elem:h.elem,marginLeft:V(i)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]},n)}var v=[m];if(s&&0!==i&&!c){var b=Ke.makeSpan(["mspace"],[],n);b.style.marginRight=V(i),v.unshift(b)}return Ke.makeSpan(["mop","op-limits"],v,n)},un=["\\smallint"],pn=function(e,t){var r,n,a,i=!1;"supsub"===e.type?(r=e.sup,n=e.sub,a=Ut(e.base,"op"),i=!0):a=Ut(e,"op");var o,s=t.style,h=!1;if(s.size===x.DISPLAY.size&&a.symbol&&!l.contains(un,a.name)&&(h=!0),a.symbol){var m=h?"Size2-Regular":"Size1-Regular",c="";if("\\oiint"!==a.name&&"\\oiiint"!==a.name||(c=a.name.substr(1),a.name="oiint"===c?"\\iint":"\\iiint"),o=Ke.makeSymbol(a.name,m,"math",t,["mop","op-symbol",h?"large-op":"small-op"]),c.length>0){var u=o.italic,p=Ke.staticSvg(c+"Size"+(h?"2":"1"),t);o=Ke.makeVList({positionType:"individualShift",children:[{type:"elem",elem:o,shift:0},{type:"elem",elem:p,shift:h?.08:0}]},t),a.name="\\"+c,o.classes.unshift("mop"),o.italic=u}}else if(a.body){var d=ft(a.body,t,!0);1===d.length&&d[0]instanceof Z?(o=d[0]).classes[0]="mop":o=Ke.makeSpan(["mop"],d,t)}else{for(var f=[],g=1;g<a.name.length;g++)f.push(Ke.mathsym(a.name[g],a.mode,t));o=Ke.makeSpan(["mop"],f,t)}var v=0,b=0;return(o instanceof Z||"\\oiint"===a.name||"\\oiiint"===a.name)&&!a.suppressBaseShift&&(v=(o.height-o.depth)/2-t.fontMetrics().axisHeight,b=o.italic),i?cn(o,r,n,t,s,b,v):(v&&(o.style.position="relative",o.style.top=V(v)),o)},dn=function(e,t){var r;if(e.symbol)r=new zt("mo",[Bt(e.name,e.mode)]),l.contains(un,e.name)&&r.setAttribute("largeop","false");else if(e.body)r=new zt("mo",Nt(e.body,t));else{r=new zt("mi",[new At(e.name.slice(1))]);var n=new zt("mo",[Bt("\u2061","text")]);r=e.parentIsSupSub?new zt("mrow",[r,n]):Mt([r,n])}return r},fn={"\u220f":"\\prod","\u2210":"\\coprod","\u2211":"\\sum","\u22c0":"\\bigwedge","\u22c1":"\\bigvee","\u22c2":"\\bigcap","\u22c3":"\\bigcup","\u2a00":"\\bigodot","\u2a01":"\\bigoplus","\u2a02":"\\bigotimes","\u2a04":"\\biguplus","\u2a06":"\\bigsqcup"};ot({type:"op",names:["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint","\u220f","\u2210","\u2211","\u22c0","\u22c1","\u22c2","\u22c3","\u2a00","\u2a01","\u2a02","\u2a04","\u2a06"],props:{numArgs:0},handler:function(e,t){var r=e.parser,n=e.funcName;return 1===n.length&&(n=fn[n]),{type:"op",mode:r.mode,limits:!0,parentIsSupSub:!1,symbol:!0,name:n}},htmlBuilder:pn,mathmlBuilder:dn}),ot({type:"op",names:["\\mathop"],props:{numArgs:1,primitive:!0},handler:function(e,t){var r=e.parser,n=t[0];return{type:"op",mode:r.mode,limits:!1,parentIsSupSub:!1,symbol:!1,body:ht(n)}},htmlBuilder:pn,mathmlBuilder:dn});var gn={"\u222b":"\\int","\u222c":"\\iint","\u222d":"\\iiint","\u222e":"\\oint","\u222f":"\\oiint","\u2230":"\\oiiint"};ot({type:"op",names:["\\arcsin","\\arccos","\\arctan","\\arctg","\\arcctg","\\arg","\\ch","\\cos","\\cosec","\\cosh","\\cot","\\cotg","\\coth","\\csc","\\ctg","\\cth","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\sh","\\tan","\\tanh","\\tg","\\th"],props:{numArgs:0},handler:function(e){var t=e.parser,r=e.funcName;return{type:"op",mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:pn,mathmlBuilder:dn}),ot({type:"op",names:["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],props:{numArgs:0},handler:function(e){var t=e.parser,r=e.funcName;return{type:"op",mode:t.mode,limits:!0,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:pn,mathmlBuilder:dn}),ot({type:"op",names:["\\int","\\iint","\\iiint","\\oint","\\oiint","\\oiiint","\u222b","\u222c","\u222d","\u222e","\u222f","\u2230"],props:{numArgs:0},handler:function(e){var t=e.parser,r=e.funcName;return 1===r.length&&(r=gn[r]),{type:"op",mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!0,name:r}},htmlBuilder:pn,mathmlBuilder:dn});var vn=function(e,t){var r,n,a,i,o=!1;if("supsub"===e.type?(r=e.sup,n=e.sub,a=Ut(e.base,"operatorname"),o=!0):a=Ut(e,"operatorname"),a.body.length>0){for(var s=a.body.map((function(e){var t=e.text;return"string"==typeof t?{type:"textord",mode:e.mode,text:t}:e})),l=ft(s,t.withFont("mathrm"),!0),h=0;h<l.length;h++){var m=l[h];m instanceof Z&&(m.text=m.text.replace(/\u2212/,"-").replace(/\u2217/,"*"))}i=Ke.makeSpan(["mop"],l,t)}else i=Ke.makeSpan(["mop"],[],t);return o?cn(i,r,n,t,t.style,0,0):i};function bn(e,t,r){for(var n=ft(e,t,!1),a=t.sizeMultiplier/r.sizeMultiplier,i=0;i<n.length;i++){var o=n[i].classes.indexOf("sizing");o<0?Array.prototype.push.apply(n[i].classes,t.sizingClasses(r)):n[i].classes[o+1]==="reset-size"+t.size&&(n[i].classes[o+1]="reset-size"+r.size),n[i].height*=a,n[i].depth*=a}return Ke.makeFragment(n)}ot({type:"operatorname",names:["\\operatorname@","\\operatornamewithlimits"],props:{numArgs:1},handler:function(e,t){var r=e.parser,n=e.funcName,a=t[0];return{type:"operatorname",mode:r.mode,body:ht(a),alwaysHandleSupSub:"\\operatornamewithlimits"===n,limits:!1,parentIsSupSub:!1}},htmlBuilder:vn,mathmlBuilder:function(e,t){for(var r=Nt(e.body,t.withFont("mathrm")),n=!0,a=0;a<r.length;a++){var i=r[a];if(i instanceof Tt.SpaceNode);else if(i instanceof Tt.MathNode)switch(i.type){case"mi":case"mn":case"ms":case"mspace":case"mtext":break;case"mo":var o=i.children[0];1===i.children.length&&o instanceof Tt.TextNode?o.text=o.text.replace(/\u2212/,"-").replace(/\u2217/,"*"):n=!1;break;default:n=!1}else n=!1}if(n){var s=r.map((function(e){return e.toText()})).join("");r=[new Tt.TextNode(s)]}var l=new Tt.MathNode("mi",r);l.setAttribute("mathvariant","normal");var h=new Tt.MathNode("mo",[Bt("\u2061","text")]);return e.parentIsSupSub?new Tt.MathNode("mrow",[l,h]):Tt.newDocumentFragment([l,h])}}),Er("\\operatorname","\\@ifstar\\operatornamewithlimits\\operatorname@"),st({type:"ordgroup",htmlBuilder:function(e,t){return e.semisimple?Ke.makeFragment(ft(e.body,t,!1)):Ke.makeSpan(["mord"],ft(e.body,t,!0),t)},mathmlBuilder:function(e,t){return It(e.body,t,!0)}}),ot({type:"overline",names:["\\overline"],props:{numArgs:1},handler:function(e,t){var r=e.parser,n=t[0];return{type:"overline",mode:r.mode,body:n}},htmlBuilder:function(e,t){var r=wt(e.body,t.havingCrampedStyle()),n=Ke.makeLineSpan("overline-line",t),a=t.fontMetrics().defaultRuleThickness,i=Ke.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r},{type:"kern",size:3*a},{type:"elem",elem:n},{type:"kern",size:a}]},t);return Ke.makeSpan(["mord","overline"],[i],t)},mathmlBuilder:function(e,t){var r=new Tt.MathNode("mo",[new Tt.TextNode("\u203e")]);r.setAttribute("stretchy","true");var n=new Tt.MathNode("mover",[Rt(e.body,t),r]);return n.setAttribute("accent","true"),n}}),ot({type:"phantom",names:["\\phantom"],props:{numArgs:1,allowedInText:!0},handler:function(e,t){var r=e.parser,n=t[0];return{type:"phantom",mode:r.mode,body:ht(n)}},htmlBuilder:function(e,t){var r=ft(e.body,t.withPhantom(),!1);return Ke.makeFragment(r)},mathmlBuilder:function(e,t){var r=Nt(e.body,t);return new Tt.MathNode("mphantom",r)}}),ot({type:"hphantom",names:["\\hphantom"],props:{numArgs:1,allowedInText:!0},handler:function(e,t){var r=e.parser,n=t[0];return{type:"hphantom",mode:r.mode,body:n}},htmlBuilder:function(e,t){var r=Ke.makeSpan([],[wt(e.body,t.withPhantom())]);if(r.height=0,r.depth=0,r.children)for(var n=0;n<r.children.length;n++)r.children[n].height=0,r.children[n].depth=0;return r=Ke.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r}]},t),Ke.makeSpan(["mord"],[r],t)},mathmlBuilder:function(e,t){var r=Nt(ht(e.body),t),n=new Tt.MathNode("mphantom",r),a=new Tt.MathNode("mpadded",[n]);return a.setAttribute("height","0px"),a.setAttribute("depth","0px"),a}}),ot({type:"vphantom",names:["\\vphantom"],props:{numArgs:1,allowedInText:!0},handler:function(e,t){var r=e.parser,n=t[0];return{type:"vphantom",mode:r.mode,body:n}},htmlBuilder:function(e,t){var r=Ke.makeSpan(["inner"],[wt(e.body,t.withPhantom())]),n=Ke.makeSpan(["fix"],[]);return Ke.makeSpan(["mord","rlap"],[r,n],t)},mathmlBuilder:function(e,t){var r=Nt(ht(e.body),t),n=new Tt.MathNode("mphantom",r),a=new Tt.MathNode("mpadded",[n]);return a.setAttribute("width","0px"),a}}),ot({type:"raisebox",names:["\\raisebox"],props:{numArgs:2,argTypes:["size","hbox"],allowedInText:!0},handler:function(e,t){var r=e.parser,n=Ut(t[0],"size").value,a=t[1];return{type:"raisebox",mode:r.mode,dy:n,body:a}},htmlBuilder:function(e,t){var r=wt(e.body,t),n=F(e.dy,t);return Ke.makeVList({positionType:"shift",positionData:-n,children:[{type:"elem",elem:r}]},t)},mathmlBuilder:function(e,t){var r=new Tt.MathNode("mpadded",[Rt(e.body,t)]),n=e.dy.number+e.dy.unit;return r.setAttribute("voffset",n),r}}),ot({type:"internal",names:["\\relax"],props:{numArgs:0,allowedInText:!0},handler:function(e){return{type:"internal",mode:e.parser.mode}}}),ot({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,argTypes:["size","size","size"]},handler:function(e,t,r){var n=e.parser,a=r[0],i=Ut(t[0],"size"),o=Ut(t[1],"size");return{type:"rule",mode:n.mode,shift:a&&Ut(a,"size").value,width:i.value,height:o.value}},htmlBuilder:function(e,t){var r=Ke.makeSpan(["mord","rule"],[],t),n=F(e.width,t),a=F(e.height,t),i=e.shift?F(e.shift,t):0;return r.style.borderRightWidth=V(n),r.style.borderTopWidth=V(a),r.style.bottom=V(i),r.width=n,r.height=a+i,r.depth=-i,r.maxFontSize=1.125*a*t.sizeMultiplier,r},mathmlBuilder:function(e,t){var r=F(e.width,t),n=F(e.height,t),a=e.shift?F(e.shift,t):0,i=t.color&&t.getColor()||"black",o=new Tt.MathNode("mspace");o.setAttribute("mathbackground",i),o.setAttribute("width",V(r)),o.setAttribute("height",V(n));var s=new Tt.MathNode("mpadded",[o]);return a>=0?s.setAttribute("height",V(a)):(s.setAttribute("height",V(a)),s.setAttribute("depth",V(-a))),s.setAttribute("voffset",V(a)),s}});var yn=["\\tiny","\\sixptsize","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"];ot({type:"sizing",names:yn,props:{numArgs:0,allowedInText:!0},handler:function(e,t){var r=e.breakOnTokenText,n=e.funcName,a=e.parser,i=a.parseExpression(!1,r);return{type:"sizing",mode:a.mode,size:yn.indexOf(n)+1,body:i}},htmlBuilder:function(e,t){var r=t.havingSize(e.size);return bn(e.body,r,t)},mathmlBuilder:function(e,t){var r=t.havingSize(e.size),n=Nt(e.body,r),a=new Tt.MathNode("mstyle",n);return a.setAttribute("mathsize",V(r.sizeMultiplier)),a}}),ot({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:function(e,t,r){var n=e.parser,a=!1,i=!1,o=r[0]&&Ut(r[0],"ordgroup");if(o)for(var s="",l=0;l<o.body.length;++l){if("t"===(s=o.body[l].text))a=!0;else{if("b"!==s){a=!1,i=!1;break}i=!0}}else a=!0,i=!0;var h=t[0];return{type:"smash",mode:n.mode,body:h,smashHeight:a,smashDepth:i}},htmlBuilder:function(e,t){var r=Ke.makeSpan([],[wt(e.body,t)]);if(!e.smashHeight&&!e.smashDepth)return r;if(e.smashHeight&&(r.height=0,r.children))for(var n=0;n<r.children.length;n++)r.children[n].height=0;if(e.smashDepth&&(r.depth=0,r.children))for(var a=0;a<r.children.length;a++)r.children[a].depth=0;var i=Ke.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r}]},t);return Ke.makeSpan(["mord"],[i],t)},mathmlBuilder:function(e,t){var r=new Tt.MathNode("mpadded",[Rt(e.body,t)]);return e.smashHeight&&r.setAttribute("height","0px"),e.smashDepth&&r.setAttribute("depth","0px"),r}}),ot({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler:function(e,t,r){var n=e.parser,a=r[0],i=t[0];return{type:"sqrt",mode:n.mode,body:i,index:a}},htmlBuilder:function(e,t){var r=wt(e.body,t.havingCrampedStyle());0===r.height&&(r.height=t.fontMetrics().xHeight),r=Ke.wrapFragment(r,t);var n=t.fontMetrics().defaultRuleThickness,a=n;t.style.id<x.TEXT.id&&(a=t.fontMetrics().xHeight);var i=n+a/4,o=r.height+r.depth+i+n,s=Ar.sqrtImage(o,t),l=s.span,h=s.ruleWidth,m=s.advanceWidth,c=l.height-h;c>r.height+r.depth+i&&(i=(i+c-r.height-r.depth)/2);var u=l.height-r.height-i-h;r.style.paddingLeft=V(m);var p=Ke.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:-(r.height+u)},{type:"elem",elem:l},{type:"kern",size:h}]},t);if(e.index){var d=t.havingStyle(x.SCRIPTSCRIPT),f=wt(e.index,d,t),g=.6*(p.height-p.depth),v=Ke.makeVList({positionType:"shift",positionData:-g,children:[{type:"elem",elem:f}]},t),b=Ke.makeSpan(["root"],[v]);return Ke.makeSpan(["mord","sqrt"],[b,p],t)}return Ke.makeSpan(["mord","sqrt"],[p],t)},mathmlBuilder:function(e,t){var r=e.body,n=e.index;return n?new Tt.MathNode("mroot",[Rt(r,t),Rt(n,t)]):new Tt.MathNode("msqrt",[Rt(r,t)])}});var xn={display:x.DISPLAY,text:x.TEXT,script:x.SCRIPT,scriptscript:x.SCRIPTSCRIPT};ot({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler:function(e,t){var r=e.breakOnTokenText,n=e.funcName,a=e.parser,i=a.parseExpression(!0,r),o=n.slice(1,n.length-5);return{type:"styling",mode:a.mode,style:o,body:i}},htmlBuilder:function(e,t){var r=xn[e.style],n=t.havingStyle(r).withFont("");return bn(e.body,n,t)},mathmlBuilder:function(e,t){var r=xn[e.style],n=t.havingStyle(r),a=Nt(e.body,n),i=new Tt.MathNode("mstyle",a),o={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]}[e.style];return i.setAttribute("scriptlevel",o[0]),i.setAttribute("displaystyle",o[1]),i}});var wn=function(e,t){var r=e.base;return r?"op"===r.type?r.limits&&(t.style.size===x.DISPLAY.size||r.alwaysHandleSupSub)?pn:null:"operatorname"===r.type?r.alwaysHandleSupSub&&(t.style.size===x.DISPLAY.size||r.limits)?vn:null:"accent"===r.type?l.isCharacterBox(r.base)?Wt:null:"horizBrace"===r.type&&!e.sub===r.isOver?ln:null:null};st({type:"supsub",htmlBuilder:function(e,t){var r=wn(e,t);if(r)return r(e,t);var n,a,i,o=e.base,s=e.sup,h=e.sub,m=wt(o,t),c=t.fontMetrics(),u=0,p=0,d=o&&l.isCharacterBox(o);if(s){var f=t.havingStyle(t.style.sup());n=wt(s,f,t),d||(u=m.height-f.fontMetrics().supDrop*f.sizeMultiplier/t.sizeMultiplier)}if(h){var g=t.havingStyle(t.style.sub());a=wt(h,g,t),d||(p=m.depth+g.fontMetrics().subDrop*g.sizeMultiplier/t.sizeMultiplier)}i=t.style===x.DISPLAY?c.sup1:t.style.cramped?c.sup3:c.sup2;var v,b=t.sizeMultiplier,y=V(.5/c.ptPerEm/b),w=null;if(a){var k=e.base&&"op"===e.base.type&&e.base.name&&("\\oiint"===e.base.name||"\\oiiint"===e.base.name);(m instanceof Z||k)&&(w=V(-m.italic))}if(n&&a){u=Math.max(u,i,n.depth+.25*c.xHeight),p=Math.max(p,c.sub2);var S=4*c.defaultRuleThickness;if(u-n.depth-(a.height-p)<S){p=S-(u-n.depth)+a.height;var M=.8*c.xHeight-(u-n.depth);M>0&&(u+=M,p-=M)}var z=[{type:"elem",elem:a,shift:p,marginRight:y,marginLeft:w},{type:"elem",elem:n,shift:-u,marginRight:y}];v=Ke.makeVList({positionType:"individualShift",children:z},t)}else if(a){p=Math.max(p,c.sub1,a.height-.8*c.xHeight);var A=[{type:"elem",elem:a,marginLeft:w,marginRight:y}];v=Ke.makeVList({positionType:"shift",positionData:p,children:A},t)}else{if(!n)throw new Error("supsub must have either sup or sub.");u=Math.max(u,i,n.depth+.25*c.xHeight),v=Ke.makeVList({positionType:"shift",positionData:-u,children:[{type:"elem",elem:n,marginRight:y}]},t)}var T=yt(m,"right")||"mord";return Ke.makeSpan([T],[m,Ke.makeSpan(["msupsub"],[v])],t)},mathmlBuilder:function(e,t){var r,n=!1;e.base&&"horizBrace"===e.base.type&&!!e.sup===e.base.isOver&&(n=!0,r=e.base.isOver),!e.base||"op"!==e.base.type&&"operatorname"!==e.base.type||(e.base.parentIsSupSub=!0);var a,i=[Rt(e.base,t)];if(e.sub&&i.push(Rt(e.sub,t)),e.sup&&i.push(Rt(e.sup,t)),n)a=r?"mover":"munder";else if(e.sub)if(e.sup){var o=e.base;a=o&&"op"===o.type&&o.limits&&t.style===x.DISPLAY||o&&"operatorname"===o.type&&o.alwaysHandleSupSub&&(t.style===x.DISPLAY||o.limits)?"munderover":"msubsup"}else{var s=e.base;a=s&&"op"===s.type&&s.limits&&(t.style===x.DISPLAY||s.alwaysHandleSupSub)||s&&"operatorname"===s.type&&s.alwaysHandleSupSub&&(s.limits||t.style===x.DISPLAY)?"munder":"msub"}else{var l=e.base;a=l&&"op"===l.type&&l.limits&&(t.style===x.DISPLAY||l.alwaysHandleSupSub)||l&&"operatorname"===l.type&&l.alwaysHandleSupSub&&(l.limits||t.style===x.DISPLAY)?"mover":"msup"}return new Tt.MathNode(a,i)}}),st({type:"atom",htmlBuilder:function(e,t){return Ke.mathsym(e.text,e.mode,t,["m"+e.family])},mathmlBuilder:function(e,t){var r=new Tt.MathNode("mo",[Bt(e.text,e.mode)]);if("bin"===e.family){var n=qt(e,t);"bold-italic"===n&&r.setAttribute("mathvariant",n)}else"punct"===e.family?r.setAttribute("separator","true"):"open"!==e.family&&"close"!==e.family||r.setAttribute("stretchy","false");return r}});var kn={mi:"italic",mn:"normal",mtext:"normal"};st({type:"mathord",htmlBuilder:function(e,t){return Ke.makeOrd(e,t,"mathord")},mathmlBuilder:function(e,t){var r=new Tt.MathNode("mi",[Bt(e.text,e.mode,t)]),n=qt(e,t)||"italic";return n!==kn[r.type]&&r.setAttribute("mathvariant",n),r}}),st({type:"textord",htmlBuilder:function(e,t){return Ke.makeOrd(e,t,"textord")},mathmlBuilder:function(e,t){var r,n=Bt(e.text,e.mode,t),a=qt(e,t)||"normal";return r="text"===e.mode?new Tt.MathNode("mtext",[n]):/[0-9]/.test(e.text)?new Tt.MathNode("mn",[n]):"\\prime"===e.text?new Tt.MathNode("mo",[n]):new Tt.MathNode("mi",[n]),a!==kn[r.type]&&r.setAttribute("mathvariant",a),r}});var Sn={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},Mn={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};st({type:"spacing",htmlBuilder:function(e,t){if(Mn.hasOwnProperty(e.text)){var r=Mn[e.text].className||"";if("text"===e.mode){var a=Ke.makeOrd(e,t,"textord");return a.classes.push(r),a}return Ke.makeSpan(["mspace",r],[Ke.mathsym(e.text,e.mode,t)],t)}if(Sn.hasOwnProperty(e.text))return Ke.makeSpan(["mspace",Sn[e.text]],[],t);throw new n('Unknown type of space "'+e.text+'"')},mathmlBuilder:function(e,t){if(!Mn.hasOwnProperty(e.text)){if(Sn.hasOwnProperty(e.text))return new Tt.MathNode("mspace");throw new n('Unknown type of space "'+e.text+'"')}return new Tt.MathNode("mtext",[new Tt.TextNode("\xa0")])}});var zn=function(){var e=new Tt.MathNode("mtd",[]);return e.setAttribute("width","50%"),e};st({type:"tag",mathmlBuilder:function(e,t){var r=new Tt.MathNode("mtable",[new Tt.MathNode("mtr",[zn(),new Tt.MathNode("mtd",[It(e.body,t)]),zn(),new Tt.MathNode("mtd",[It(e.tag,t)])])]);return r.setAttribute("width","100%"),r}});var An={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},Tn={"\\textbf":"textbf","\\textmd":"textmd"},Bn={"\\textit":"textit","\\textup":"textup"},Cn=function(e,t){var r=e.font;return r?An[r]?t.withTextFontFamily(An[r]):Tn[r]?t.withTextFontWeight(Tn[r]):t.withTextFontShape(Bn[r]):t};ot({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup"],props:{numArgs:1,argTypes:["text"],allowedInArgument:!0,allowedInText:!0},handler:function(e,t){var r=e.parser,n=e.funcName,a=t[0];return{type:"text",mode:r.mode,body:ht(a),font:n}},htmlBuilder:function(e,t){var r=Cn(e,t),n=ft(e.body,r,!0);return Ke.makeSpan(["mord","text"],n,r)},mathmlBuilder:function(e,t){var r=Cn(e,t);return It(e.body,r)}}),ot({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler:function(e,t){return{type:"underline",mode:e.parser.mode,body:t[0]}},htmlBuilder:function(e,t){var r=wt(e.body,t),n=Ke.makeLineSpan("underline-line",t),a=t.fontMetrics().defaultRuleThickness,i=Ke.makeVList({positionType:"top",positionData:r.height,children:[{type:"kern",size:a},{type:"elem",elem:n},{type:"kern",size:3*a},{type:"elem",elem:r}]},t);return Ke.makeSpan(["mord","underline"],[i],t)},mathmlBuilder:function(e,t){var r=new Tt.MathNode("mo",[new Tt.TextNode("\u203e")]);r.setAttribute("stretchy","true");var n=new Tt.MathNode("munder",[Rt(e.body,t),r]);return n.setAttribute("accentunder","true"),n}}),ot({type:"vcenter",names:["\\vcenter"],props:{numArgs:1,argTypes:["original"],allowedInText:!1},handler:function(e,t){return{type:"vcenter",mode:e.parser.mode,body:t[0]}},htmlBuilder:function(e,t){var r=wt(e.body,t),n=t.fontMetrics().axisHeight,a=.5*(r.height-n-(r.depth+n));return Ke.makeVList({positionType:"shift",positionData:a,children:[{type:"elem",elem:r}]},t)},mathmlBuilder:function(e,t){return new Tt.MathNode("mpadded",[Rt(e.body,t)],["vcenter"])}}),ot({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler:function(e,t,r){throw new n("\\verb ended by end of line instead of matching delimiter")},htmlBuilder:function(e,t){for(var r=qn(e),n=[],a=t.havingStyle(t.style.text()),i=0;i<r.length;i++){var o=r[i];"~"===o&&(o="\\textasciitilde"),n.push(Ke.makeSymbol(o,"Typewriter-Regular",e.mode,a,["mord","texttt"]))}return Ke.makeSpan(["mord","text"].concat(a.sizingClasses(t)),Ke.tryCombineChars(n),a)},mathmlBuilder:function(e,t){var r=new Tt.TextNode(qn(e)),n=new Tt.MathNode("mtext",[r]);return n.setAttribute("mathvariant","monospace"),n}});var qn=function(e){return e.body.replace(/ /g,e.star?"\u2423":"\xa0")},Nn=nt,In=new RegExp("[\u0300-\u036f]+$"),Rn=function(){function e(e,t){this.input=void 0,this.settings=void 0,this.tokenRegex=void 0,this.catcodes=void 0,this.input=e,this.settings=t,this.tokenRegex=new RegExp("([ \r\n\t]+)|\\\\(\n|[ \r\t]+\n?)[ \r\t]*|([!-\\[\\]-\u2027\u202a-\ud7ff\uf900-\uffff][\u0300-\u036f]*|[\ud800-\udbff][\udc00-\udfff][\u0300-\u036f]*|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5|(\\\\[a-zA-Z@]+)[ \r\n\t]*|\\\\[^\ud800-\udfff])","g"),this.catcodes={"%":14,"~":13}}var t=e.prototype;return t.setCatcode=function(e,t){this.catcodes[e]=t},t.lex=function(){var e=this.input,t=this.tokenRegex.lastIndex;if(t===e.length)return new Dr("EOF",new Lr(this,t,t));var r=this.tokenRegex.exec(e);if(null===r||r.index!==t)throw new n("Unexpected character: '"+e[t]+"'",new Dr(e[t],new Lr(this,t,t+1)));var a=r[6]||r[3]||(r[2]?"\\ ":" ");if(14===this.catcodes[a]){var i=e.indexOf("\n",this.tokenRegex.lastIndex);return-1===i?(this.tokenRegex.lastIndex=e.length,this.settings.reportNonstrict("commentAtEnd","% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode (e.g. $)")):this.tokenRegex.lastIndex=i+1,this.lex()}return new Dr(a,new Lr(this,t,this.tokenRegex.lastIndex))},e}(),On=function(){function e(e,t){void 0===e&&(e={}),void 0===t&&(t={}),this.current=void 0,this.builtins=void 0,this.undefStack=void 0,this.current=t,this.builtins=e,this.undefStack=[]}var t=e.prototype;return t.beginGroup=function(){this.undefStack.push({})},t.endGroup=function(){if(0===this.undefStack.length)throw new n("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug");var e=this.undefStack.pop();for(var t in e)e.hasOwnProperty(t)&&(null==e[t]?delete this.current[t]:this.current[t]=e[t])},t.endGroups=function(){for(;this.undefStack.length>0;)this.endGroup()},t.has=function(e){return this.current.hasOwnProperty(e)||this.builtins.hasOwnProperty(e)},t.get=function(e){return this.current.hasOwnProperty(e)?this.current[e]:this.builtins[e]},t.set=function(e,t,r){if(void 0===r&&(r=!1),r){for(var n=0;n<this.undefStack.length;n++)delete this.undefStack[n][e];this.undefStack.length>0&&(this.undefStack[this.undefStack.length-1][e]=t)}else{var a=this.undefStack[this.undefStack.length-1];a&&!a.hasOwnProperty(e)&&(a[e]=this.current[e])}null==t?delete this.current[e]:this.current[e]=t},e}(),Hn=Hr;Er("\\noexpand",(function(e){var t=e.popToken();return e.isExpandable(t.text)&&(t.noexpand=!0,t.treatAsRelax=!0),{tokens:[t],numArgs:0}})),Er("\\expandafter",(function(e){var t=e.popToken();return e.expandOnce(!0),{tokens:[t],numArgs:0}})),Er("\\@firstoftwo",(function(e){return{tokens:e.consumeArgs(2)[0],numArgs:0}})),Er("\\@secondoftwo",(function(e){return{tokens:e.consumeArgs(2)[1],numArgs:0}})),Er("\\@ifnextchar",(function(e){var t=e.consumeArgs(3);e.consumeSpaces();var r=e.future();return 1===t[0].length&&t[0][0].text===r.text?{tokens:t[1],numArgs:0}:{tokens:t[2],numArgs:0}})),Er("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}"),Er("\\TextOrMath",(function(e){var t=e.consumeArgs(2);return"text"===e.mode?{tokens:t[0],numArgs:0}:{tokens:t[1],numArgs:0}}));var En={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};Er("\\char",(function(e){var t,r=e.popToken(),a="";if("'"===r.text)t=8,r=e.popToken();else if('"'===r.text)t=16,r=e.popToken();else if("`"===r.text)if("\\"===(r=e.popToken()).text[0])a=r.text.charCodeAt(1);else{if("EOF"===r.text)throw new n("\\char` missing argument");a=r.text.charCodeAt(0)}else t=10;if(t){if(null==(a=En[r.text])||a>=t)throw new n("Invalid base-"+t+" digit "+r.text);for(var i;null!=(i=En[e.future().text])&&i<t;)a*=t,a+=i,e.popToken()}return"\\@char{"+a+"}"}));var Ln=function(e,t,r){var a=e.consumeArg().tokens;if(1!==a.length)throw new n("\\newcommand's first argument must be a macro name");var i=a[0].text,o=e.isDefined(i);if(o&&!t)throw new n("\\newcommand{"+i+"} attempting to redefine "+i+"; use \\renewcommand");if(!o&&!r)throw new n("\\renewcommand{"+i+"} when command "+i+" does not yet exist; use \\newcommand");var s=0;if(1===(a=e.consumeArg().tokens).length&&"["===a[0].text){for(var l="",h=e.expandNextToken();"]"!==h.text&&"EOF"!==h.text;)l+=h.text,h=e.expandNextToken();if(!l.match(/^\s*[0-9]+\s*$/))throw new n("Invalid number of arguments: "+l);s=parseInt(l),a=e.consumeArg().tokens}return e.macros.set(i,{tokens:a,numArgs:s}),""};Er("\\newcommand",(function(e){return Ln(e,!1,!0)})),Er("\\renewcommand",(function(e){return Ln(e,!0,!1)})),Er("\\providecommand",(function(e){return Ln(e,!0,!0)})),Er("\\message",(function(e){var t=e.consumeArgs(1)[0];return console.log(t.reverse().map((function(e){return e.text})).join("")),""})),Er("\\errmessage",(function(e){var t=e.consumeArgs(1)[0];return console.error(t.reverse().map((function(e){return e.text})).join("")),""})),Er("\\show",(function(e){var t=e.popToken(),r=t.text;return console.log(t,e.macros.get(r),Nn[r],ae.math[r],ae.text[r]),""})),Er("\\bgroup","{"),Er("\\egroup","}"),Er("~","\\nobreakspace"),Er("\\lq","`"),Er("\\rq","'"),Er("\\aa","\\r a"),Er("\\AA","\\r A"),Er("\\textcopyright","\\html@mathml{\\textcircled{c}}{\\char`\xa9}"),Er("\\copyright","\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}"),Er("\\textregistered","\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`\xae}"),Er("\u212c","\\mathscr{B}"),Er("\u2130","\\mathscr{E}"),Er("\u2131","\\mathscr{F}"),Er("\u210b","\\mathscr{H}"),Er("\u2110","\\mathscr{I}"),Er("\u2112","\\mathscr{L}"),Er("\u2133","\\mathscr{M}"),Er("\u211b","\\mathscr{R}"),Er("\u212d","\\mathfrak{C}"),Er("\u210c","\\mathfrak{H}"),Er("\u2128","\\mathfrak{Z}"),Er("\\Bbbk","\\Bbb{k}"),Er("\xb7","\\cdotp"),Er("\\llap","\\mathllap{\\textrm{#1}}"),Er("\\rlap","\\mathrlap{\\textrm{#1}}"),Er("\\clap","\\mathclap{\\textrm{#1}}"),Er("\\mathstrut","\\vphantom{(}"),Er("\\underbar","\\underline{\\text{#1}}"),Er("\\not",'\\html@mathml{\\mathrel{\\mathrlap\\@not}}{\\char"338}'),Er("\\neq","\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`\u2260}}"),Er("\\ne","\\neq"),Er("\u2260","\\neq"),Er("\\notin","\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`\u2209}}"),Er("\u2209","\\notin"),Er("\u2258","\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`\u2258}}"),Er("\u2259","\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`\u2258}}"),Er("\u225a","\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`\u225a}}"),Er("\u225b","\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`\u225b}}"),Er("\u225d","\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`\u225d}}"),Er("\u225e","\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`\u225e}}"),Er("\u225f","\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`\u225f}}"),Er("\u27c2","\\perp"),Er("\u203c","\\mathclose{!\\mkern-0.8mu!}"),Er("\u220c","\\notni"),Er("\u231c","\\ulcorner"),Er("\u231d","\\urcorner"),Er("\u231e","\\llcorner"),Er("\u231f","\\lrcorner"),Er("\xa9","\\copyright"),Er("\xae","\\textregistered"),Er("\ufe0f","\\textregistered"),Er("\\ulcorner",'\\html@mathml{\\@ulcorner}{\\mathop{\\char"231c}}'),Er("\\urcorner",'\\html@mathml{\\@urcorner}{\\mathop{\\char"231d}}'),Er("\\llcorner",'\\html@mathml{\\@llcorner}{\\mathop{\\char"231e}}'),Er("\\lrcorner",'\\html@mathml{\\@lrcorner}{\\mathop{\\char"231f}}'),Er("\\vdots","\\mathord{\\varvdots\\rule{0pt}{15pt}}"),Er("\u22ee","\\vdots"),Er("\\varGamma","\\mathit{\\Gamma}"),Er("\\varDelta","\\mathit{\\Delta}"),Er("\\varTheta","\\mathit{\\Theta}"),Er("\\varLambda","\\mathit{\\Lambda}"),Er("\\varXi","\\mathit{\\Xi}"),Er("\\varPi","\\mathit{\\Pi}"),Er("\\varSigma","\\mathit{\\Sigma}"),Er("\\varUpsilon","\\mathit{\\Upsilon}"),Er("\\varPhi","\\mathit{\\Phi}"),Er("\\varPsi","\\mathit{\\Psi}"),Er("\\varOmega","\\mathit{\\Omega}"),Er("\\substack","\\begin{subarray}{c}#1\\end{subarray}"),Er("\\colon","\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu\\relax"),Er("\\boxed","\\fbox{$\\displaystyle{#1}$}"),Er("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;"),Er("\\implies","\\DOTSB\\;\\Longrightarrow\\;"),Er("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;");var Dn={",":"\\dotsc","\\not":"\\dotsb","+":"\\dotsb","=":"\\dotsb","<":"\\dotsb",">":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcup":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"};Er("\\dots",(function(e){var t="\\dotso",r=e.expandAfterFuture().text;return r in Dn?t=Dn[r]:("\\not"===r.substr(0,4)||r in ae.math&&l.contains(["bin","rel"],ae.math[r].group))&&(t="\\dotsb"),t}));var Pn={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0};Er("\\dotso",(function(e){return e.future().text in Pn?"\\ldots\\,":"\\ldots"})),Er("\\dotsc",(function(e){var t=e.future().text;return t in Pn&&","!==t?"\\ldots\\,":"\\ldots"})),Er("\\cdots",(function(e){return e.future().text in Pn?"\\@cdots\\,":"\\@cdots"})),Er("\\dotsb","\\cdots"),Er("\\dotsm","\\cdots"),Er("\\dotsi","\\!\\cdots"),Er("\\dotsx","\\ldots\\,"),Er("\\DOTSI","\\relax"),Er("\\DOTSB","\\relax"),Er("\\DOTSX","\\relax"),Er("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax"),Er("\\,","\\tmspace+{3mu}{.1667em}"),Er("\\thinspace","\\,"),Er("\\>","\\mskip{4mu}"),Er("\\:","\\tmspace+{4mu}{.2222em}"),Er("\\medspace","\\:"),Er("\\;","\\tmspace+{5mu}{.2777em}"),Er("\\thickspace","\\;"),Er("\\!","\\tmspace-{3mu}{.1667em}"),Er("\\negthinspace","\\!"),Er("\\negmedspace","\\tmspace-{4mu}{.2222em}"),Er("\\negthickspace","\\tmspace-{5mu}{.277em}"),Er("\\enspace","\\kern.5em "),Er("\\enskip","\\hskip.5em\\relax"),Er("\\quad","\\hskip1em\\relax"),Er("\\qquad","\\hskip2em\\relax"),Er("\\tag","\\@ifstar\\tag@literal\\tag@paren"),Er("\\tag@paren","\\tag@literal{({#1})}"),Er("\\tag@literal",(function(e){if(e.macros.get("\\df@tag"))throw new n("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"})),Er("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}"),Er("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)"),Er("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}"),Er("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1"),Er("\\pmb","\\html@mathml{\\@binrel{#1}{\\mathrlap{#1}\\kern0.5px#1}}{\\mathbf{#1}}"),Er("\\newline","\\\\\\relax"),Er("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");var Fn=V(T["Main-Regular"]["T".charCodeAt(0)][1]-.7*T["Main-Regular"]["A".charCodeAt(0)][1]);Er("\\LaTeX","\\textrm{\\html@mathml{L\\kern-.36em\\raisebox{"+Fn+"}{\\scriptstyle A}\\kern-.15em\\TeX}{LaTeX}}"),Er("\\KaTeX","\\textrm{\\html@mathml{K\\kern-.17em\\raisebox{"+Fn+"}{\\scriptstyle A}\\kern-.15em\\TeX}{KaTeX}}"),Er("\\hspace","\\@ifstar\\@hspacer\\@hspace"),Er("\\@hspace","\\hskip #1\\relax"),Er("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax"),Er("\\ordinarycolon",":"),Er("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}"),Er("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}'),Er("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}'),Er("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}'),Er("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}'),Er("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}'),Er("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}'),Er("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}'),Er("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}'),Er("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}'),Er("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}'),Er("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}'),Er("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}'),Er("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}'),Er("\u2237","\\dblcolon"),Er("\u2239","\\eqcolon"),Er("\u2254","\\coloneqq"),Er("\u2255","\\eqqcolon"),Er("\u2a74","\\Coloneqq"),Er("\\ratio","\\vcentcolon"),Er("\\coloncolon","\\dblcolon"),Er("\\colonequals","\\coloneqq"),Er("\\coloncolonequals","\\Coloneqq"),Er("\\equalscolon","\\eqqcolon"),Er("\\equalscoloncolon","\\Eqqcolon"),Er("\\colonminus","\\coloneq"),Er("\\coloncolonminus","\\Coloneq"),Er("\\minuscolon","\\eqcolon"),Er("\\minuscoloncolon","\\Eqcolon"),Er("\\coloncolonapprox","\\Colonapprox"),Er("\\coloncolonsim","\\Colonsim"),Er("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),Er("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}"),Er("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),Er("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}"),Er("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`\u220c}}"),Er("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}"),Er("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}"),Er("\\injlim","\\DOTSB\\operatorname*{inj\\,lim}"),Er("\\projlim","\\DOTSB\\operatorname*{proj\\,lim}"),Er("\\varlimsup","\\DOTSB\\operatorname*{\\overline{lim}}"),Er("\\varliminf","\\DOTSB\\operatorname*{\\underline{lim}}"),Er("\\varinjlim","\\DOTSB\\operatorname*{\\underrightarrow{lim}}"),Er("\\varprojlim","\\DOTSB\\operatorname*{\\underleftarrow{lim}}"),Er("\\gvertneqq","\\html@mathml{\\@gvertneqq}{\u2269}"),Er("\\lvertneqq","\\html@mathml{\\@lvertneqq}{\u2268}"),Er("\\ngeqq","\\html@mathml{\\@ngeqq}{\u2271}"),Er("\\ngeqslant","\\html@mathml{\\@ngeqslant}{\u2271}"),Er("\\nleqq","\\html@mathml{\\@nleqq}{\u2270}"),Er("\\nleqslant","\\html@mathml{\\@nleqslant}{\u2270}"),Er("\\nshortmid","\\html@mathml{\\@nshortmid}{\u2224}"),Er("\\nshortparallel","\\html@mathml{\\@nshortparallel}{\u2226}"),Er("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{\u2288}"),Er("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{\u2289}"),Er("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{\u228a}"),Er("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{\u2acb}"),Er("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{\u228b}"),Er("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{\u2acc}"),Er("\\imath","\\html@mathml{\\@imath}{\u0131}"),Er("\\jmath","\\html@mathml{\\@jmath}{\u0237}"),Er("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`\u27e6}}"),Er("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`\u27e7}}"),Er("\u27e6","\\llbracket"),Er("\u27e7","\\rrbracket"),Er("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`\u2983}}"),Er("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`\u2984}}"),Er("\u2983","\\lBrace"),Er("\u2984","\\rBrace"),Er("\\minuso","\\mathbin{\\html@mathml{{\\mathrlap{\\mathchoice{\\kern{0.145em}}{\\kern{0.145em}}{\\kern{0.1015em}}{\\kern{0.0725em}}\\circ}{-}}}{\\char`\u29b5}}"),Er("\u29b5","\\minuso"),Er("\\darr","\\downarrow"),Er("\\dArr","\\Downarrow"),Er("\\Darr","\\Downarrow"),Er("\\lang","\\langle"),Er("\\rang","\\rangle"),Er("\\uarr","\\uparrow"),Er("\\uArr","\\Uparrow"),Er("\\Uarr","\\Uparrow"),Er("\\N","\\mathbb{N}"),Er("\\R","\\mathbb{R}"),Er("\\Z","\\mathbb{Z}"),Er("\\alef","\\aleph"),Er("\\alefsym","\\aleph"),Er("\\Alpha","\\mathrm{A}"),Er("\\Beta","\\mathrm{B}"),Er("\\bull","\\bullet"),Er("\\Chi","\\mathrm{X}"),Er("\\clubs","\\clubsuit"),Er("\\cnums","\\mathbb{C}"),Er("\\Complex","\\mathbb{C}"),Er("\\Dagger","\\ddagger"),Er("\\diamonds","\\diamondsuit"),Er("\\empty","\\emptyset"),Er("\\Epsilon","\\mathrm{E}"),Er("\\Eta","\\mathrm{H}"),Er("\\exist","\\exists"),Er("\\harr","\\leftrightarrow"),Er("\\hArr","\\Leftrightarrow"),Er("\\Harr","\\Leftrightarrow"),Er("\\hearts","\\heartsuit"),Er("\\image","\\Im"),Er("\\infin","\\infty"),Er("\\Iota","\\mathrm{I}"),Er("\\isin","\\in"),Er("\\Kappa","\\mathrm{K}"),Er("\\larr","\\leftarrow"),Er("\\lArr","\\Leftarrow"),Er("\\Larr","\\Leftarrow"),Er("\\lrarr","\\leftrightarrow"),Er("\\lrArr","\\Leftrightarrow"),Er("\\Lrarr","\\Leftrightarrow"),Er("\\Mu","\\mathrm{M}"),Er("\\natnums","\\mathbb{N}"),Er("\\Nu","\\mathrm{N}"),Er("\\Omicron","\\mathrm{O}"),Er("\\plusmn","\\pm"),Er("\\rarr","\\rightarrow"),Er("\\rArr","\\Rightarrow"),Er("\\Rarr","\\Rightarrow"),Er("\\real","\\Re"),Er("\\reals","\\mathbb{R}"),Er("\\Reals","\\mathbb{R}"),Er("\\Rho","\\mathrm{P}"),Er("\\sdot","\\cdot"),Er("\\sect","\\S"),Er("\\spades","\\spadesuit"),Er("\\sub","\\subset"),Er("\\sube","\\subseteq"),Er("\\supe","\\supseteq"),Er("\\Tau","\\mathrm{T}"),Er("\\thetasym","\\vartheta"),Er("\\weierp","\\wp"),Er("\\Zeta","\\mathrm{Z}"),Er("\\argmin","\\DOTSB\\operatorname*{arg\\,min}"),Er("\\argmax","\\DOTSB\\operatorname*{arg\\,max}"),Er("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits"),Er("\\bra","\\mathinner{\\langle{#1}|}"),Er("\\ket","\\mathinner{|{#1}\\rangle}"),Er("\\braket","\\mathinner{\\langle{#1}\\rangle}"),Er("\\Bra","\\left\\langle#1\\right|"),Er("\\Ket","\\left|#1\\right\\rangle"),Er("\\angln","{\\angl n}"),Er("\\blue","\\textcolor{##6495ed}{#1}"),Er("\\orange","\\textcolor{##ffa500}{#1}"),Er("\\pink","\\textcolor{##ff00af}{#1}"),Er("\\red","\\textcolor{##df0030}{#1}"),Er("\\green","\\textcolor{##28ae7b}{#1}"),Er("\\gray","\\textcolor{gray}{#1}"),Er("\\purple","\\textcolor{##9d38bd}{#1}"),Er("\\blueA","\\textcolor{##ccfaff}{#1}"),Er("\\blueB","\\textcolor{##80f6ff}{#1}"),Er("\\blueC","\\textcolor{##63d9ea}{#1}"),Er("\\blueD","\\textcolor{##11accd}{#1}"),Er("\\blueE","\\textcolor{##0c7f99}{#1}"),Er("\\tealA","\\textcolor{##94fff5}{#1}"),Er("\\tealB","\\textcolor{##26edd5}{#1}"),Er("\\tealC","\\textcolor{##01d1c1}{#1}"),Er("\\tealD","\\textcolor{##01a995}{#1}"),Er("\\tealE","\\textcolor{##208170}{#1}"),Er("\\greenA","\\textcolor{##b6ffb0}{#1}"),Er("\\greenB","\\textcolor{##8af281}{#1}"),Er("\\greenC","\\textcolor{##74cf70}{#1}"),Er("\\greenD","\\textcolor{##1fab54}{#1}"),Er("\\greenE","\\textcolor{##0d923f}{#1}"),Er("\\goldA","\\textcolor{##ffd0a9}{#1}"),Er("\\goldB","\\textcolor{##ffbb71}{#1}"),Er("\\goldC","\\textcolor{##ff9c39}{#1}"),Er("\\goldD","\\textcolor{##e07d10}{#1}"),Er("\\goldE","\\textcolor{##a75a05}{#1}"),Er("\\redA","\\textcolor{##fca9a9}{#1}"),Er("\\redB","\\textcolor{##ff8482}{#1}"),Er("\\redC","\\textcolor{##f9685d}{#1}"),Er("\\redD","\\textcolor{##e84d39}{#1}"),Er("\\redE","\\textcolor{##bc2612}{#1}"),Er("\\maroonA","\\textcolor{##ffbde0}{#1}"),Er("\\maroonB","\\textcolor{##ff92c6}{#1}"),Er("\\maroonC","\\textcolor{##ed5fa6}{#1}"),Er("\\maroonD","\\textcolor{##ca337c}{#1}"),Er("\\maroonE","\\textcolor{##9e034e}{#1}"),Er("\\purpleA","\\textcolor{##ddd7ff}{#1}"),Er("\\purpleB","\\textcolor{##c6b9fc}{#1}"),Er("\\purpleC","\\textcolor{##aa87ff}{#1}"),Er("\\purpleD","\\textcolor{##7854ab}{#1}"),Er("\\purpleE","\\textcolor{##543b78}{#1}"),Er("\\mintA","\\textcolor{##f5f9e8}{#1}"),Er("\\mintB","\\textcolor{##edf2df}{#1}"),Er("\\mintC","\\textcolor{##e0e5cc}{#1}"),Er("\\grayA","\\textcolor{##f6f7f7}{#1}"),Er("\\grayB","\\textcolor{##f0f1f2}{#1}"),Er("\\grayC","\\textcolor{##e3e5e6}{#1}"),Er("\\grayD","\\textcolor{##d6d8da}{#1}"),Er("\\grayE","\\textcolor{##babec2}{#1}"),Er("\\grayF","\\textcolor{##888d93}{#1}"),Er("\\grayG","\\textcolor{##626569}{#1}"),Er("\\grayH","\\textcolor{##3b3e40}{#1}"),Er("\\grayI","\\textcolor{##21242c}{#1}"),Er("\\kaBlue","\\textcolor{##314453}{#1}"),Er("\\kaGreen","\\textcolor{##71B307}{#1}");var Vn={"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0},Gn=function(){function e(e,t,r){this.settings=void 0,this.expansionCount=void 0,this.lexer=void 0,this.macros=void 0,this.stack=void 0,this.mode=void 0,this.settings=t,this.expansionCount=0,this.feed(e),this.macros=new On(Hn,t.macros),this.mode=r,this.stack=[]}var t=e.prototype;return t.feed=function(e){this.lexer=new Rn(e,this.settings)},t.switchMode=function(e){this.mode=e},t.beginGroup=function(){this.macros.beginGroup()},t.endGroup=function(){this.macros.endGroup()},t.endGroups=function(){this.macros.endGroups()},t.future=function(){return 0===this.stack.length&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]},t.popToken=function(){return this.future(),this.stack.pop()},t.pushToken=function(e){this.stack.push(e)},t.pushTokens=function(e){var t;(t=this.stack).push.apply(t,e)},t.scanArgument=function(e){var t,r,n;if(e){if(this.consumeSpaces(),"["!==this.future().text)return null;t=this.popToken();var a=this.consumeArg(["]"]);n=a.tokens,r=a.end}else{var i=this.consumeArg();n=i.tokens,t=i.start,r=i.end}return this.pushToken(new Dr("EOF",r.loc)),this.pushTokens(n),t.range(r,"")},t.consumeSpaces=function(){for(;;){if(" "!==this.future().text)break;this.stack.pop()}},t.consumeArg=function(e){var t=[],r=e&&e.length>0;r||this.consumeSpaces();var a,i=this.future(),o=0,s=0;do{if(a=this.popToken(),t.push(a),"{"===a.text)++o;else if("}"===a.text){if(-1===--o)throw new n("Extra }",a)}else if("EOF"===a.text)throw new n("Unexpected end of input in a macro argument, expected '"+(e&&r?e[s]:"}")+"'",a);if(e&&r)if((0===o||1===o&&"{"===e[s])&&a.text===e[s]){if(++s===e.length){t.splice(-s,s);break}}else s=0}while(0!==o||r);return"{"===i.text&&"}"===t[t.length-1].text&&(t.pop(),t.shift()),t.reverse(),{tokens:t,start:i,end:a}},t.consumeArgs=function(e,t){if(t){if(t.length!==e+1)throw new n("The length of delimiters doesn't match the number of args!");for(var r=t[0],a=0;a<r.length;a++){var i=this.popToken();if(r[a]!==i.text)throw new n("Use of the macro doesn't match its definition",i)}}for(var o=[],s=0;s<e;s++)o.push(this.consumeArg(t&&t[s+1]).tokens);return o},t.expandOnce=function(e){var t=this.popToken(),r=t.text,a=t.noexpand?null:this._getExpansion(r);if(null==a||e&&a.unexpandable){if(e&&null==a&&"\\"===r[0]&&!this.isDefined(r))throw new n("Undefined control sequence: "+r);return this.pushToken(t),t}if(this.expansionCount++,this.expansionCount>this.settings.maxExpand)throw new n("Too many expansions: infinite loop or need to increase maxExpand setting");var i=a.tokens,o=this.consumeArgs(a.numArgs,a.delimiters);if(a.numArgs)for(var s=(i=i.slice()).length-1;s>=0;--s){var l=i[s];if("#"===l.text){if(0===s)throw new n("Incomplete placeholder at end of macro body",l);if("#"===(l=i[--s]).text)i.splice(s+1,1);else{if(!/^[1-9]$/.test(l.text))throw new n("Not a valid argument number",l);var h;(h=i).splice.apply(h,[s,2].concat(o[+l.text-1]))}}}return this.pushTokens(i),i},t.expandAfterFuture=function(){return this.expandOnce(),this.future()},t.expandNextToken=function(){for(;;){var e=this.expandOnce();if(e instanceof Dr)return e.treatAsRelax&&(e.text="\\relax"),this.stack.pop()}throw new Error},t.expandMacro=function(e){return this.macros.has(e)?this.expandTokens([new Dr(e)]):void 0},t.expandTokens=function(e){var t=[],r=this.stack.length;for(this.pushTokens(e);this.stack.length>r;){var n=this.expandOnce(!0);n instanceof Dr&&(n.treatAsRelax&&(n.noexpand=!1,n.treatAsRelax=!1),t.push(this.stack.pop()))}return t},t.expandMacroAsText=function(e){var t=this.expandMacro(e);return t?t.map((function(e){return e.text})).join(""):t},t._getExpansion=function(e){var t=this.macros.get(e);if(null==t)return t;if(1===e.length){var r=this.lexer.catcodes[e];if(null!=r&&13!==r)return}var n="function"==typeof t?t(this):t;if("string"==typeof n){var a=0;if(-1!==n.indexOf("#"))for(var i=n.replace(/##/g,"");-1!==i.indexOf("#"+(a+1));)++a;for(var o=new Rn(n,this.settings),s=[],l=o.lex();"EOF"!==l.text;)s.push(l),l=o.lex();return s.reverse(),{tokens:s,numArgs:a}}return n},t.isDefined=function(e){return this.macros.has(e)||Nn.hasOwnProperty(e)||ae.math.hasOwnProperty(e)||ae.text.hasOwnProperty(e)||Vn.hasOwnProperty(e)},t.isExpandable=function(e){var t=this.macros.get(e);return null!=t?"string"==typeof t||"function"==typeof t||!t.unexpandable:Nn.hasOwnProperty(e)&&!Nn[e].primitive},e}(),Un={"\u0301":{text:"\\'",math:"\\acute"},"\u0300":{text:"\\`",math:"\\grave"},"\u0308":{text:'\\"',math:"\\ddot"},"\u0303":{text:"\\~",math:"\\tilde"},"\u0304":{text:"\\=",math:"\\bar"},"\u0306":{text:"\\u",math:"\\breve"},"\u030c":{text:"\\v",math:"\\check"},"\u0302":{text:"\\^",math:"\\hat"},"\u0307":{text:"\\.",math:"\\dot"},"\u030a":{text:"\\r",math:"\\mathring"},"\u030b":{text:"\\H"},"\u0327":{text:"\\c"}},Yn={"\xe1":"a\u0301","\xe0":"a\u0300","\xe4":"a\u0308","\u01df":"a\u0308\u0304","\xe3":"a\u0303","\u0101":"a\u0304","\u0103":"a\u0306","\u1eaf":"a\u0306\u0301","\u1eb1":"a\u0306\u0300","\u1eb5":"a\u0306\u0303","\u01ce":"a\u030c","\xe2":"a\u0302","\u1ea5":"a\u0302\u0301","\u1ea7":"a\u0302\u0300","\u1eab":"a\u0302\u0303","\u0227":"a\u0307","\u01e1":"a\u0307\u0304","\xe5":"a\u030a","\u01fb":"a\u030a\u0301","\u1e03":"b\u0307","\u0107":"c\u0301","\u1e09":"c\u0327\u0301","\u010d":"c\u030c","\u0109":"c\u0302","\u010b":"c\u0307","\xe7":"c\u0327","\u010f":"d\u030c","\u1e0b":"d\u0307","\u1e11":"d\u0327","\xe9":"e\u0301","\xe8":"e\u0300","\xeb":"e\u0308","\u1ebd":"e\u0303","\u0113":"e\u0304","\u1e17":"e\u0304\u0301","\u1e15":"e\u0304\u0300","\u0115":"e\u0306","\u1e1d":"e\u0327\u0306","\u011b":"e\u030c","\xea":"e\u0302","\u1ebf":"e\u0302\u0301","\u1ec1":"e\u0302\u0300","\u1ec5":"e\u0302\u0303","\u0117":"e\u0307","\u0229":"e\u0327","\u1e1f":"f\u0307","\u01f5":"g\u0301","\u1e21":"g\u0304","\u011f":"g\u0306","\u01e7":"g\u030c","\u011d":"g\u0302","\u0121":"g\u0307","\u0123":"g\u0327","\u1e27":"h\u0308","\u021f":"h\u030c","\u0125":"h\u0302","\u1e23":"h\u0307","\u1e29":"h\u0327","\xed":"i\u0301","\xec":"i\u0300","\xef":"i\u0308","\u1e2f":"i\u0308\u0301","\u0129":"i\u0303","\u012b":"i\u0304","\u012d":"i\u0306","\u01d0":"i\u030c","\xee":"i\u0302","\u01f0":"j\u030c","\u0135":"j\u0302","\u1e31":"k\u0301","\u01e9":"k\u030c","\u0137":"k\u0327","\u013a":"l\u0301","\u013e":"l\u030c","\u013c":"l\u0327","\u1e3f":"m\u0301","\u1e41":"m\u0307","\u0144":"n\u0301","\u01f9":"n\u0300","\xf1":"n\u0303","\u0148":"n\u030c","\u1e45":"n\u0307","\u0146":"n\u0327","\xf3":"o\u0301","\xf2":"o\u0300","\xf6":"o\u0308","\u022b":"o\u0308\u0304","\xf5":"o\u0303","\u1e4d":"o\u0303\u0301","\u1e4f":"o\u0303\u0308","\u022d":"o\u0303\u0304","\u014d":"o\u0304","\u1e53":"o\u0304\u0301","\u1e51":"o\u0304\u0300","\u014f":"o\u0306","\u01d2":"o\u030c","\xf4":"o\u0302","\u1ed1":"o\u0302\u0301","\u1ed3":"o\u0302\u0300","\u1ed7":"o\u0302\u0303","\u022f":"o\u0307","\u0231":"o\u0307\u0304","\u0151":"o\u030b","\u1e55":"p\u0301","\u1e57":"p\u0307","\u0155":"r\u0301","\u0159":"r\u030c","\u1e59":"r\u0307","\u0157":"r\u0327","\u015b":"s\u0301","\u1e65":"s\u0301\u0307","\u0161":"s\u030c","\u1e67":"s\u030c\u0307","\u015d":"s\u0302","\u1e61":"s\u0307","\u015f":"s\u0327","\u1e97":"t\u0308","\u0165":"t\u030c","\u1e6b":"t\u0307","\u0163":"t\u0327","\xfa":"u\u0301","\xf9":"u\u0300","\xfc":"u\u0308","\u01d8":"u\u0308\u0301","\u01dc":"u\u0308\u0300","\u01d6":"u\u0308\u0304","\u01da":"u\u0308\u030c","\u0169":"u\u0303","\u1e79":"u\u0303\u0301","\u016b":"u\u0304","\u1e7b":"u\u0304\u0308","\u016d":"u\u0306","\u01d4":"u\u030c","\xfb":"u\u0302","\u016f":"u\u030a","\u0171":"u\u030b","\u1e7d":"v\u0303","\u1e83":"w\u0301","\u1e81":"w\u0300","\u1e85":"w\u0308","\u0175":"w\u0302","\u1e87":"w\u0307","\u1e98":"w\u030a","\u1e8d":"x\u0308","\u1e8b":"x\u0307","\xfd":"y\u0301","\u1ef3":"y\u0300","\xff":"y\u0308","\u1ef9":"y\u0303","\u0233":"y\u0304","\u0177":"y\u0302","\u1e8f":"y\u0307","\u1e99":"y\u030a","\u017a":"z\u0301","\u017e":"z\u030c","\u1e91":"z\u0302","\u017c":"z\u0307","\xc1":"A\u0301","\xc0":"A\u0300","\xc4":"A\u0308","\u01de":"A\u0308\u0304","\xc3":"A\u0303","\u0100":"A\u0304","\u0102":"A\u0306","\u1eae":"A\u0306\u0301","\u1eb0":"A\u0306\u0300","\u1eb4":"A\u0306\u0303","\u01cd":"A\u030c","\xc2":"A\u0302","\u1ea4":"A\u0302\u0301","\u1ea6":"A\u0302\u0300","\u1eaa":"A\u0302\u0303","\u0226":"A\u0307","\u01e0":"A\u0307\u0304","\xc5":"A\u030a","\u01fa":"A\u030a\u0301","\u1e02":"B\u0307","\u0106":"C\u0301","\u1e08":"C\u0327\u0301","\u010c":"C\u030c","\u0108":"C\u0302","\u010a":"C\u0307","\xc7":"C\u0327","\u010e":"D\u030c","\u1e0a":"D\u0307","\u1e10":"D\u0327","\xc9":"E\u0301","\xc8":"E\u0300","\xcb":"E\u0308","\u1ebc":"E\u0303","\u0112":"E\u0304","\u1e16":"E\u0304\u0301","\u1e14":"E\u0304\u0300","\u0114":"E\u0306","\u1e1c":"E\u0327\u0306","\u011a":"E\u030c","\xca":"E\u0302","\u1ebe":"E\u0302\u0301","\u1ec0":"E\u0302\u0300","\u1ec4":"E\u0302\u0303","\u0116":"E\u0307","\u0228":"E\u0327","\u1e1e":"F\u0307","\u01f4":"G\u0301","\u1e20":"G\u0304","\u011e":"G\u0306","\u01e6":"G\u030c","\u011c":"G\u0302","\u0120":"G\u0307","\u0122":"G\u0327","\u1e26":"H\u0308","\u021e":"H\u030c","\u0124":"H\u0302","\u1e22":"H\u0307","\u1e28":"H\u0327","\xcd":"I\u0301","\xcc":"I\u0300","\xcf":"I\u0308","\u1e2e":"I\u0308\u0301","\u0128":"I\u0303","\u012a":"I\u0304","\u012c":"I\u0306","\u01cf":"I\u030c","\xce":"I\u0302","\u0130":"I\u0307","\u0134":"J\u0302","\u1e30":"K\u0301","\u01e8":"K\u030c","\u0136":"K\u0327","\u0139":"L\u0301","\u013d":"L\u030c","\u013b":"L\u0327","\u1e3e":"M\u0301","\u1e40":"M\u0307","\u0143":"N\u0301","\u01f8":"N\u0300","\xd1":"N\u0303","\u0147":"N\u030c","\u1e44":"N\u0307","\u0145":"N\u0327","\xd3":"O\u0301","\xd2":"O\u0300","\xd6":"O\u0308","\u022a":"O\u0308\u0304","\xd5":"O\u0303","\u1e4c":"O\u0303\u0301","\u1e4e":"O\u0303\u0308","\u022c":"O\u0303\u0304","\u014c":"O\u0304","\u1e52":"O\u0304\u0301","\u1e50":"O\u0304\u0300","\u014e":"O\u0306","\u01d1":"O\u030c","\xd4":"O\u0302","\u1ed0":"O\u0302\u0301","\u1ed2":"O\u0302\u0300","\u1ed6":"O\u0302\u0303","\u022e":"O\u0307","\u0230":"O\u0307\u0304","\u0150":"O\u030b","\u1e54":"P\u0301","\u1e56":"P\u0307","\u0154":"R\u0301","\u0158":"R\u030c","\u1e58":"R\u0307","\u0156":"R\u0327","\u015a":"S\u0301","\u1e64":"S\u0301\u0307","\u0160":"S\u030c","\u1e66":"S\u030c\u0307","\u015c":"S\u0302","\u1e60":"S\u0307","\u015e":"S\u0327","\u0164":"T\u030c","\u1e6a":"T\u0307","\u0162":"T\u0327","\xda":"U\u0301","\xd9":"U\u0300","\xdc":"U\u0308","\u01d7":"U\u0308\u0301","\u01db":"U\u0308\u0300","\u01d5":"U\u0308\u0304","\u01d9":"U\u0308\u030c","\u0168":"U\u0303","\u1e78":"U\u0303\u0301","\u016a":"U\u0304","\u1e7a":"U\u0304\u0308","\u016c":"U\u0306","\u01d3":"U\u030c","\xdb":"U\u0302","\u016e":"U\u030a","\u0170":"U\u030b","\u1e7c":"V\u0303","\u1e82":"W\u0301","\u1e80":"W\u0300","\u1e84":"W\u0308","\u0174":"W\u0302","\u1e86":"W\u0307","\u1e8c":"X\u0308","\u1e8a":"X\u0307","\xdd":"Y\u0301","\u1ef2":"Y\u0300","\u0178":"Y\u0308","\u1ef8":"Y\u0303","\u0232":"Y\u0304","\u0176":"Y\u0302","\u1e8e":"Y\u0307","\u0179":"Z\u0301","\u017d":"Z\u030c","\u1e90":"Z\u0302","\u017b":"Z\u0307","\u03ac":"\u03b1\u0301","\u1f70":"\u03b1\u0300","\u1fb1":"\u03b1\u0304","\u1fb0":"\u03b1\u0306","\u03ad":"\u03b5\u0301","\u1f72":"\u03b5\u0300","\u03ae":"\u03b7\u0301","\u1f74":"\u03b7\u0300","\u03af":"\u03b9\u0301","\u1f76":"\u03b9\u0300","\u03ca":"\u03b9\u0308","\u0390":"\u03b9\u0308\u0301","\u1fd2":"\u03b9\u0308\u0300","\u1fd1":"\u03b9\u0304","\u1fd0":"\u03b9\u0306","\u03cc":"\u03bf\u0301","\u1f78":"\u03bf\u0300","\u03cd":"\u03c5\u0301","\u1f7a":"\u03c5\u0300","\u03cb":"\u03c5\u0308","\u03b0":"\u03c5\u0308\u0301","\u1fe2":"\u03c5\u0308\u0300","\u1fe1":"\u03c5\u0304","\u1fe0":"\u03c5\u0306","\u03ce":"\u03c9\u0301","\u1f7c":"\u03c9\u0300","\u038e":"\u03a5\u0301","\u1fea":"\u03a5\u0300","\u03ab":"\u03a5\u0308","\u1fe9":"\u03a5\u0304","\u1fe8":"\u03a5\u0306","\u038f":"\u03a9\u0301","\u1ffa":"\u03a9\u0300"},Xn=function(){function e(e,t){this.mode=void 0,this.gullet=void 0,this.settings=void 0,this.leftrightDepth=void 0,this.nextToken=void 0,this.mode="math",this.gullet=new Gn(e,t,this.mode),this.settings=t,this.leftrightDepth=0}var t=e.prototype;return t.expect=function(e,t){if(void 0===t&&(t=!0),this.fetch().text!==e)throw new n("Expected '"+e+"', got '"+this.fetch().text+"'",this.fetch());t&&this.consume()},t.consume=function(){this.nextToken=null},t.fetch=function(){return null==this.nextToken&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken},t.switchMode=function(e){this.mode=e,this.gullet.switchMode(e)},t.parse=function(){this.settings.globalGroup||this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");try{var e=this.parseExpression(!1);return this.expect("EOF"),this.settings.globalGroup||this.gullet.endGroup(),e}finally{this.gullet.endGroups()}},t.subparse=function(e){var t=this.nextToken;this.consume(),this.gullet.pushToken(new Dr("}")),this.gullet.pushTokens(e);var r=this.parseExpression(!1);return this.expect("}"),this.nextToken=t,r},t.parseExpression=function(t,r){for(var n=[];;){"math"===this.mode&&this.consumeSpaces();var a=this.fetch();if(-1!==e.endOfExpression.indexOf(a.text))break;if(r&&a.text===r)break;if(t&&Nn[a.text]&&Nn[a.text].infix)break;var i=this.parseAtom(r);if(!i)break;"internal"!==i.type&&n.push(i)}return"text"===this.mode&&this.formLigatures(n),this.handleInfixNodes(n)},t.handleInfixNodes=function(e){for(var t,r=-1,a=0;a<e.length;a++)if("infix"===e[a].type){if(-1!==r)throw new n("only one infix operator per group",e[a].token);r=a,t=e[a].replaceWith}if(-1!==r&&t){var i,o,s=e.slice(0,r),l=e.slice(r+1);return i=1===s.length&&"ordgroup"===s[0].type?s[0]:{type:"ordgroup",mode:this.mode,body:s},o=1===l.length&&"ordgroup"===l[0].type?l[0]:{type:"ordgroup",mode:this.mode,body:l},["\\\\abovefrac"===t?this.callFunction(t,[i,e[r],o],[]):this.callFunction(t,[i,o],[])]}return e},t.handleSupSubscript=function(e){var t=this.fetch(),r=t.text;this.consume(),this.consumeSpaces();var a=this.parseGroup(e);if(!a)throw new n("Expected group after '"+r+"'",t);return a},t.formatUnsupportedCmd=function(e){for(var t=[],r=0;r<e.length;r++)t.push({type:"textord",mode:"text",text:e[r]});var n={type:"text",mode:this.mode,body:t};return{type:"color",mode:this.mode,color:this.settings.errorColor,body:[n]}},t.parseAtom=function(e){var t,r,a=this.parseGroup("atom",e);if("text"===this.mode)return a;for(;;){this.consumeSpaces();var i=this.fetch();if("\\limits"===i.text||"\\nolimits"===i.text){if(a&&"op"===a.type){var o="\\limits"===i.text;a.limits=o,a.alwaysHandleSupSub=!0}else{if(!a||"operatorname"!==a.type)throw new n("Limit controls must follow a math operator",i);a.alwaysHandleSupSub&&(a.limits="\\limits"===i.text)}this.consume()}else if("^"===i.text){if(t)throw new n("Double superscript",i);t=this.handleSupSubscript("superscript")}else if("_"===i.text){if(r)throw new n("Double subscript",i);r=this.handleSupSubscript("subscript")}else{if("'"!==i.text)break;if(t)throw new n("Double superscript",i);var s={type:"textord",mode:this.mode,text:"\\prime"},l=[s];for(this.consume();"'"===this.fetch().text;)l.push(s),this.consume();"^"===this.fetch().text&&l.push(this.handleSupSubscript("superscript")),t={type:"ordgroup",mode:this.mode,body:l}}}return t||r?{type:"supsub",mode:this.mode,base:a,sup:t,sub:r}:a},t.parseFunction=function(e,t){var r=this.fetch(),a=r.text,i=Nn[a];if(!i)return null;if(this.consume(),t&&"atom"!==t&&!i.allowedInArgument)throw new n("Got function '"+a+"' with no arguments"+(t?" as "+t:""),r);if("text"===this.mode&&!i.allowedInText)throw new n("Can't use function '"+a+"' in text mode",r);if("math"===this.mode&&!1===i.allowedInMath)throw new n("Can't use function '"+a+"' in math mode",r);var o=this.parseArguments(a,i),s=o.args,l=o.optArgs;return this.callFunction(a,s,l,r,e)},t.callFunction=function(e,t,r,a,i){var o={funcName:e,parser:this,token:a,breakOnTokenText:i},s=Nn[e];if(s&&s.handler)return s.handler(o,t,r);throw new n("No function handler for "+e)},t.parseArguments=function(e,t){var r=t.numArgs+t.numOptionalArgs;if(0===r)return{args:[],optArgs:[]};for(var a=[],i=[],o=0;o<r;o++){var s=t.argTypes&&t.argTypes[o],l=o<t.numOptionalArgs;(t.primitive&&null==s||"sqrt"===t.type&&1===o&&null==i[0])&&(s="primitive");var h=this.parseGroupOfType("argument to '"+e+"'",s,l);if(l)i.push(h);else{if(null==h)throw new n("Null argument, please report this as a bug");a.push(h)}}return{args:a,optArgs:i}},t.parseGroupOfType=function(e,t,r){switch(t){case"color":return this.parseColorGroup(r);case"size":return this.parseSizeGroup(r);case"url":return this.parseUrlGroup(r);case"math":case"text":return this.parseArgumentGroup(r,t);case"hbox":var a=this.parseArgumentGroup(r,"text");return null!=a?{type:"styling",mode:a.mode,body:[a],style:"text"}:null;case"raw":var i=this.parseStringGroup("raw",r);return null!=i?{type:"raw",mode:"text",string:i.text}:null;case"primitive":if(r)throw new n("A primitive argument cannot be optional");var o=this.parseGroup(e);if(null==o)throw new n("Expected group as "+e,this.fetch());return o;case"original":case null:case void 0:return this.parseArgumentGroup(r);default:throw new n("Unknown group type as "+e,this.fetch())}},t.consumeSpaces=function(){for(;" "===this.fetch().text;)this.consume()},t.parseStringGroup=function(e,t){var r=this.gullet.scanArgument(t);if(null==r)return null;for(var n,a="";"EOF"!==(n=this.fetch()).text;)a+=n.text,this.consume();return this.consume(),r.text=a,r},t.parseRegexGroup=function(e,t){for(var r,a=this.fetch(),i=a,o="";"EOF"!==(r=this.fetch()).text&&e.test(o+r.text);)o+=(i=r).text,this.consume();if(""===o)throw new n("Invalid "+t+": '"+a.text+"'",a);return a.range(i,o)},t.parseColorGroup=function(e){var t=this.parseStringGroup("color",e);if(null==t)return null;var r=/^(#[a-f0-9]{3}|#?[a-f0-9]{6}|[a-z]+)$/i.exec(t.text);if(!r)throw new n("Invalid color: '"+t.text+"'",t);var a=r[0];return/^[0-9a-f]{6}$/i.test(a)&&(a="#"+a),{type:"color-token",mode:this.mode,color:a}},t.parseSizeGroup=function(e){var t,r=!1;if(this.gullet.consumeSpaces(),!(t=e||"{"===this.gullet.future().text?this.parseStringGroup("size",e):this.parseRegexGroup(/^[-+]? *(?:$|\d+|\d+\.\d*|\.\d*) *[a-z]{0,2} *$/,"size")))return null;e||0!==t.text.length||(t.text="0pt",r=!0);var a=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(t.text);if(!a)throw new n("Invalid size: '"+t.text+"'",t);var i={number:+(a[1]+a[2]),unit:a[3]};if(!P(i))throw new n("Invalid unit: '"+i.unit+"'",t);return{type:"size",mode:this.mode,value:i,isBlank:r}},t.parseUrlGroup=function(e){this.gullet.lexer.setCatcode("%",13),this.gullet.lexer.setCatcode("~",12);var t=this.parseStringGroup("url",e);if(this.gullet.lexer.setCatcode("%",14),this.gullet.lexer.setCatcode("~",13),null==t)return null;var r=t.text.replace(/\\([#$%&~_^{}])/g,"$1");return{type:"url",mode:this.mode,url:r}},t.parseArgumentGroup=function(e,t){var r=this.gullet.scanArgument(e);if(null==r)return null;var n=this.mode;t&&this.switchMode(t),this.gullet.beginGroup();var a=this.parseExpression(!1,"EOF");this.expect("EOF"),this.gullet.endGroup();var i={type:"ordgroup",mode:this.mode,loc:r.loc,body:a};return t&&this.switchMode(n),i},t.parseGroup=function(e,t){var r,a=this.fetch(),i=a.text;if("{"===i||"\\begingroup"===i){this.consume();var o="{"===i?"}":"\\endgroup";this.gullet.beginGroup();var s=this.parseExpression(!1,o),l=this.fetch();this.expect(o),this.gullet.endGroup(),r={type:"ordgroup",mode:this.mode,loc:Lr.range(a,l),body:s,semisimple:"\\begingroup"===i||void 0}}else if(null==(r=this.parseFunction(t,e)||this.parseSymbol())&&"\\"===i[0]&&!Vn.hasOwnProperty(i)){if(this.settings.throwOnError)throw new n("Undefined control sequence: "+i,a);r=this.formatUnsupportedCmd(i),this.consume()}return r},t.formLigatures=function(e){for(var t=e.length-1,r=0;r<t;++r){var n=e[r],a=n.text;"-"===a&&"-"===e[r+1].text&&(r+1<t&&"-"===e[r+2].text?(e.splice(r,3,{type:"textord",mode:"text",loc:Lr.range(n,e[r+2]),text:"---"}),t-=2):(e.splice(r,2,{type:"textord",mode:"text",loc:Lr.range(n,e[r+1]),text:"--"}),t-=1)),"'"!==a&&"`"!==a||e[r+1].text!==a||(e.splice(r,2,{type:"textord",mode:"text",loc:Lr.range(n,e[r+1]),text:a+a}),t-=1)}},t.parseSymbol=function(){var e=this.fetch(),t=e.text;if(/^\\verb[^a-zA-Z]/.test(t)){this.consume();var r=t.slice(5),a="*"===r.charAt(0);if(a&&(r=r.slice(1)),r.length<2||r.charAt(0)!==r.slice(-1))throw new n("\\verb assertion failed --\n please report what input caused this bug");return{type:"verb",mode:"text",body:r=r.slice(1,-1),star:a}}Yn.hasOwnProperty(t[0])&&!ae[this.mode][t[0]]&&(this.settings.strict&&"math"===this.mode&&this.settings.reportNonstrict("unicodeTextInMathMode",'Accented Unicode text character "'+t[0]+'" used in math mode',e),t=Yn[t[0]]+t.substr(1));var i,o=In.exec(t);if(o&&("i"===(t=t.substring(0,o.index))?t="\u0131":"j"===t&&(t="\u0237")),ae[this.mode][t]){this.settings.strict&&"math"===this.mode&&Ee.indexOf(t)>=0&&this.settings.reportNonstrict("unicodeTextInMathMode",'Latin-1/Unicode text character "'+t[0]+'" used in math mode',e);var s,l=ae[this.mode][t].group,h=Lr.range(e);if(te.hasOwnProperty(l)){var m=l;s={type:"atom",mode:this.mode,family:m,loc:h,text:t}}else s={type:l,mode:this.mode,loc:h,text:t};i=s}else{if(!(t.charCodeAt(0)>=128))return null;this.settings.strict&&(S(t.charCodeAt(0))?"math"===this.mode&&this.settings.reportNonstrict("unicodeTextInMathMode",'Unicode text character "'+t[0]+'" used in math mode',e):this.settings.reportNonstrict("unknownSymbol",'Unrecognized Unicode character "'+t[0]+'" ('+t.charCodeAt(0)+")",e)),i={type:"textord",mode:"text",loc:Lr.range(e),text:t}}if(this.consume(),o)for(var c=0;c<o[0].length;c++){var u=o[0][c];if(!Un[u])throw new n("Unknown accent ' "+u+"'",e);var p=Un[u][this.mode]||Un[u].text;if(!p)throw new n("Accent "+u+" unsupported in "+this.mode+" mode",e);i={type:"accent",mode:this.mode,loc:Lr.range(e),label:p,isStretchy:!1,isShifty:!0,base:i}}return i},e}();Xn.endOfExpression=["}","\\endgroup","\\end","\\right","&"];var Wn=function(e,t){if(!("string"==typeof e||e instanceof String))throw new TypeError("KaTeX can only parse string typed expression");var r=new Xn(e,t);delete r.gullet.macros.current["\\df@tag"];var a=r.parse();if(delete r.gullet.macros.current["\\current@color"],delete r.gullet.macros.current["\\color"],r.gullet.macros.get("\\df@tag")){if(!t.displayMode)throw new n("\\tag works only in display equations");a=[{type:"tag",mode:"text",body:a,tag:r.subparse([new Dr("\\df@tag")])}]}return a},_n=function(e,t,r){t.textContent="";var n=$n(e,r).toNode();t.appendChild(n)};"undefined"!=typeof document&&"CSS1Compat"!==document.compatMode&&("undefined"!=typeof console&&console.warn("Warning: KaTeX doesn't work in quirks mode. Make sure your website has a suitable doctype."),_n=function(){throw new n("KaTeX doesn't work in quirks mode.")});var jn=function(e,t,r){if(r.throwOnError||!(e instanceof n))throw e;var a=Ke.makeSpan(["katex-error"],[new Z(t)]);return a.setAttribute("title",e.toString()),a.setAttribute("style","color:"+r.errorColor),a},$n=function(e,t){var r=new c(t);try{var n=Wn(e,r);return Lt(n,e,r)}catch(t){return jn(t,e,r)}},Zn={version:"0.15.3",render:_n,renderToString:function(e,t){return $n(e,t).toMarkup()},ParseError:n,SETTINGS_SCHEMA:h,__parse:function(e,t){var r=new c(t);return Wn(e,r)},__renderToDomTree:$n,__renderToHTMLTree:function(e,t){var r=new c(t);try{return function(e,t,r){var n=St(e,Ht(r)),a=Ke.makeSpan(["katex"],[n]);return Et(a,r)}(Wn(e,r),0,r)}catch(t){return jn(t,e,r)}},__setFontMetrics:function(e,t){T[e]=t},__defineSymbol:ie,__defineMacro:Er,__domTree:{Span:W,Anchor:_,SymbolNode:Z,SvgNode:K,PathNode:J,LineNode:Q}};return t=t.default}()})); \ No newline at end of file
diff --git a/assets/lib/katex/mhchem.min.js b/assets/lib/katex/mhchem.min.js
index 8fd9cca8..e0c4a5e4 100644
--- a/assets/lib/katex/mhchem.min.js
+++ b/assets/lib/katex/mhchem.min.js
@@ -1 +1 @@
-!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e(require("katex"));else if("function"==typeof define&&define.amd)define(["katex"],e);else{var n="object"==typeof exports?e(require("katex")):e(t.katex);for(var o in n)("object"==typeof exports?exports:t)[o]=n[o]}}("undefined"!=typeof self?self:this,function(t){return function(t){var e={};function n(o){if(e[o])return e[o].exports;var a=e[o]={i:o,l:!1,exports:{}};return t[o].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=t,n.c=e,n.d=function(t,e,o){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:o})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var a in t)n.d(o,a,function(e){return t[e]}.bind(null,a));return o},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=1)}([function(e,n){e.exports=t},function(t,e,n){"use strict";n.r(e);var o=n(0),a=n.n(o);a.a.__defineMacro("\\ce",function(t){return r(t.consumeArgs(1)[0],"ce")}),a.a.__defineMacro("\\pu",function(t){return r(t.consumeArgs(1)[0],"pu")}),a.a.__defineMacro("\\tripledash","{\\vphantom{-}\\raisebox{2.56mu}{$\\mkern2mu\\tiny\\text{-}\\mkern1mu\\text{-}\\mkern1mu\\text{-}\\mkern2mu$}}");var r=function(t,e){for(var n="",o=t[t.length-1].loc.start,a=t.length-1;a>=0;a--)t[a].loc.start>o&&(n+=" ",o=t[a].loc.start),n+=t[a].text,o+=t[a].text.length;return c.go(i.go(n,e))},i={go:function(t,e){if(!t)return[];void 0===e&&(e="ce");var n,o="0",a={};a.parenthesisLevel=0,t=(t=(t=t.replace(/\n/g," ")).replace(/[\u2212\u2013\u2014\u2010]/g,"-")).replace(/[\u2026]/g,"...");for(var r=10,c=[];;){n!==t?(r=10,n=t):r--;var u=i.stateMachines[e],p=u.transitions[o]||u.transitions["*"];t:for(var s=0;s<p.length;s++){var _=i.patterns.match_(p[s].pattern,t);if(_){for(var d=p[s].task,m=0;m<d.action_.length;m++){var l;if(u.actions[d.action_[m].type_])l=u.actions[d.action_[m].type_](a,_.match_,d.action_[m].option);else{if(!i.actions[d.action_[m].type_])throw["MhchemBugA","mhchem bug A. Please report. ("+d.action_[m].type_+")"];l=i.actions[d.action_[m].type_](a,_.match_,d.action_[m].option)}i.concatArray(c,l)}if(o=d.nextState||o,!(t.length>0))return c;if(d.revisit||(t=_.remainder),!d.toContinue)break t}}if(r<=0)throw["MhchemBugU","mhchem bug U. Please report."]}},concatArray:function(t,e){if(e)if(Array.isArray(e))for(var n=0;n<e.length;n++)t.push(e[n]);else t.push(e)},patterns:{patterns:{empty:/^$/,else:/^./,else2:/^./,space:/^\s/,"space A":/^\s(?=[A-Z\\$])/,space$:/^\s$/,"a-z":/^[a-z]/,x:/^x/,x$:/^x$/,i$:/^i$/,letters:/^(?:[a-zA-Z\u03B1-\u03C9\u0391-\u03A9?@]|(?:\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega|Gamma|Delta|Theta|Lambda|Xi|Pi|Sigma|Upsilon|Phi|Psi|Omega)(?:\s+|\{\}|(?![a-zA-Z]))))+/,"\\greek":/^\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega|Gamma|Delta|Theta|Lambda|Xi|Pi|Sigma|Upsilon|Phi|Psi|Omega)(?:\s+|\{\}|(?![a-zA-Z]))/,"one lowercase latin letter $":/^(?:([a-z])(?:$|[^a-zA-Z]))$/,"$one lowercase latin letter$ $":/^\$(?:([a-z])(?:$|[^a-zA-Z]))\$$/,"one lowercase greek letter $":/^(?:\$?[\u03B1-\u03C9]\$?|\$?\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega)\s*\$?)(?:\s+|\{\}|(?![a-zA-Z]))$/,digits:/^[0-9]+/,"-9.,9":/^[+\-]?(?:[0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+))/,"-9.,9 no missing 0":/^[+\-]?[0-9]+(?:[.,][0-9]+)?/,"(-)(9.,9)(e)(99)":function(t){var e=t.match(/^(\+\-|\+\/\-|\+|\-|\\pm\s?)?([0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+))?(\((?:[0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+))\))?(?:([eE]|\s*(\*|x|\\times|\u00D7)\s*10\^)([+\-]?[0-9]+|\{[+\-]?[0-9]+\}))?/);return e&&e[0]?{match_:e.splice(1),remainder:t.substr(e[0].length)}:null},"(-)(9)^(-9)":function(t){var e=t.match(/^(\+\-|\+\/\-|\+|\-|\\pm\s?)?([0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+)?)\^([+\-]?[0-9]+|\{[+\-]?[0-9]+\})/);return e&&e[0]?{match_:e.splice(1),remainder:t.substr(e[0].length)}:null},"state of aggregation $":function(t){var e=i.patterns.findObserveGroups(t,"",/^\([a-z]{1,3}(?=[\),])/,")","");if(e&&e.remainder.match(/^($|[\s,;\)\]\}])/))return e;var n=t.match(/^(?:\((?:\\ca\s?)?\$[amothc]\$\))/);return n?{match_:n[0],remainder:t.substr(n[0].length)}:null},"_{(state of aggregation)}$":/^_\{(\([a-z]{1,3}\))\}/,"{[(":/^(?:\\\{|\[|\()/,")]}":/^(?:\)|\]|\\\})/,", ":/^[,;]\s*/,",":/^[,;]/,".":/^[.]/,". ":/^([.\u22C5\u00B7\u2022])\s*/,"...":/^\.\.\.(?=$|[^.])/,"* ":/^([*])\s*/,"^{(...)}":function(t){return i.patterns.findObserveGroups(t,"^{","","","}")},"^($...$)":function(t){return i.patterns.findObserveGroups(t,"^","$","$","")},"^a":/^\^([0-9]+|[^\\_])/,"^\\x{}{}":function(t){return i.patterns.findObserveGroups(t,"^",/^\\[a-zA-Z]+\{/,"}","","","{","}","",!0)},"^\\x{}":function(t){return i.patterns.findObserveGroups(t,"^",/^\\[a-zA-Z]+\{/,"}","")},"^\\x":/^\^(\\[a-zA-Z]+)\s*/,"^(-1)":/^\^(-?\d+)/,"'":/^'/,"_{(...)}":function(t){return i.patterns.findObserveGroups(t,"_{","","","}")},"_($...$)":function(t){return i.patterns.findObserveGroups(t,"_","$","$","")},_9:/^_([+\-]?[0-9]+|[^\\])/,"_\\x{}{}":function(t){return i.patterns.findObserveGroups(t,"_",/^\\[a-zA-Z]+\{/,"}","","","{","}","",!0)},"_\\x{}":function(t){return i.patterns.findObserveGroups(t,"_",/^\\[a-zA-Z]+\{/,"}","")},"_\\x":/^_(\\[a-zA-Z]+)\s*/,"^_":/^(?:\^(?=_)|\_(?=\^)|[\^_]$)/,"{}":/^\{\}/,"{...}":function(t){return i.patterns.findObserveGroups(t,"","{","}","")},"{(...)}":function(t){return i.patterns.findObserveGroups(t,"{","","","}")},"$...$":function(t){return i.patterns.findObserveGroups(t,"","$","$","")},"${(...)}$":function(t){return i.patterns.findObserveGroups(t,"${","","","}$")},"$(...)$":function(t){return i.patterns.findObserveGroups(t,"$","","","$")},"=<>":/^[=<>]/,"#":/^[#\u2261]/,"+":/^\+/,"-$":/^-(?=[\s_},;\]\/]|$|\([a-z]+\))/,"-9":/^-(?=[0-9])/,"- orbital overlap":/^-(?=(?:[spd]|sp)(?:$|[\s,;\)\]\}]))/,"-":/^-/,"pm-operator":/^(?:\\pm|\$\\pm\$|\+-|\+\/-)/,operator:/^(?:\+|(?:[\-=<>]|<<|>>|\\approx|\$\\approx\$)(?=\s|$|-?[0-9]))/,arrowUpDown:/^(?:v|\(v\)|\^|\(\^\))(?=$|[\s,;\)\]\}])/,"\\bond{(...)}":function(t){return i.patterns.findObserveGroups(t,"\\bond{","","","}")},"->":/^(?:<->|<-->|->|<-|<=>>|<<=>|<=>|[\u2192\u27F6\u21CC])/,CMT:/^[CMT](?=\[)/,"[(...)]":function(t){return i.patterns.findObserveGroups(t,"[","","","]")},"1st-level escape":/^(&|\\\\|\\hline)\s*/,"\\,":/^(?:\\[,\ ;:])/,"\\x{}{}":function(t){return i.patterns.findObserveGroups(t,"",/^\\[a-zA-Z]+\{/,"}","","","{","}","",!0)},"\\x{}":function(t){return i.patterns.findObserveGroups(t,"",/^\\[a-zA-Z]+\{/,"}","")},"\\ca":/^\\ca(?:\s+|(?![a-zA-Z]))/,"\\x":/^(?:\\[a-zA-Z]+\s*|\\[_&{}%])/,orbital:/^(?:[0-9]{1,2}[spdfgh]|[0-9]{0,2}sp)(?=$|[^a-zA-Z])/,others:/^[\/~|]/,"\\frac{(...)}":function(t){return i.patterns.findObserveGroups(t,"\\frac{","","","}","{","","","}")},"\\overset{(...)}":function(t){return i.patterns.findObserveGroups(t,"\\overset{","","","}","{","","","}")},"\\underset{(...)}":function(t){return i.patterns.findObserveGroups(t,"\\underset{","","","}","{","","","}")},"\\underbrace{(...)}":function(t){return i.patterns.findObserveGroups(t,"\\underbrace{","","","}_","{","","","}")},"\\color{(...)}0":function(t){return i.patterns.findObserveGroups(t,"\\color{","","","}")},"\\color{(...)}{(...)}1":function(t){return i.patterns.findObserveGroups(t,"\\color{","","","}","{","","","}")},"\\color(...){(...)}2":function(t){return i.patterns.findObserveGroups(t,"\\color","\\","",/^(?=\{)/,"{","","","}")},"\\ce{(...)}":function(t){return i.patterns.findObserveGroups(t,"\\ce{","","","}")},oxidation$:/^(?:[+-][IVX]+|\\pm\s*0|\$\\pm\$\s*0)$/,"d-oxidation$":/^(?:[+-]?\s?[IVX]+|\\pm\s*0|\$\\pm\$\s*0)$/,"roman numeral":/^[IVX]+/,"1/2$":/^[+\-]?(?:[0-9]+|\$[a-z]\$|[a-z])\/[0-9]+(?:\$[a-z]\$|[a-z])?$/,amount:function(t){var e;if(e=t.match(/^(?:(?:(?:\([+\-]?[0-9]+\/[0-9]+\)|[+\-]?(?:[0-9]+|\$[a-z]\$|[a-z])\/[0-9]+|[+\-]?[0-9]+[.,][0-9]+|[+\-]?\.[0-9]+|[+\-]?[0-9]+)(?:[a-z](?=\s*[A-Z]))?)|[+\-]?[a-z](?=\s*[A-Z])|\+(?!\s))/))return{match_:e[0],remainder:t.substr(e[0].length)};var n=i.patterns.findObserveGroups(t,"","$","$","");return n&&(e=n.match_.match(/^\$(?:\(?[+\-]?(?:[0-9]*[a-z]?[+\-])?[0-9]*[a-z](?:[+\-][0-9]*[a-z]?)?\)?|\+|-)\$$/))?{match_:e[0],remainder:t.substr(e[0].length)}:null},amount2:function(t){return this.amount(t)},"(KV letters),":/^(?:[A-Z][a-z]{0,2}|i)(?=,)/,formula$:function(t){if(t.match(/^\([a-z]+\)$/))return null;var e=t.match(/^(?:[a-z]|(?:[0-9\ \+\-\,\.\(\)]+[a-z])+[0-9\ \+\-\,\.\(\)]*|(?:[a-z][0-9\ \+\-\,\.\(\)]+)+[a-z]?)$/);return e?{match_:e[0],remainder:t.substr(e[0].length)}:null},uprightEntities:/^(?:pH|pOH|pC|pK|iPr|iBu)(?=$|[^a-zA-Z])/,"/":/^\s*(\/)\s*/,"//":/^\s*(\/\/)\s*/,"*":/^\s*[*.]\s*/},findObserveGroups:function(t,e,n,o,a,r,i,c,u,p){var s=function(t,e){if("string"==typeof e)return 0!==t.indexOf(e)?null:e;var n=t.match(e);return n?n[0]:null},_=s(t,e);if(null===_)return null;if(t=t.substr(_.length),null===(_=s(t,n)))return null;var d=function(t,e,n){for(var o=0;e<t.length;){var a=t.charAt(e),r=s(t.substr(e),n);if(null!==r&&0===o)return{endMatchBegin:e,endMatchEnd:e+r.length};if("{"===a)o++;else if("}"===a){if(0===o)throw["ExtraCloseMissingOpen","Extra close brace or missing open brace"];o--}e++}return null}(t,_.length,o||a);if(null===d)return null;var m=t.substring(0,o?d.endMatchEnd:d.endMatchBegin);if(r||i){var l=this.findObserveGroups(t.substr(d.endMatchEnd),r,i,c,u);if(null===l)return null;var f=[m,l.match_];return{match_:p?f.join(""):f,remainder:l.remainder}}return{match_:m,remainder:t.substr(d.endMatchEnd)}},match_:function(t,e){var n=i.patterns.patterns[t];if(void 0===n)throw["MhchemBugP","mhchem bug P. Please report. ("+t+")"];if("function"==typeof n)return i.patterns.patterns[t](e);var o=e.match(n);return o?{match_:o[2]?[o[1],o[2]]:o[1]?o[1]:o[0],remainder:e.substr(o[0].length)}:null}},actions:{"a=":function(t,e){t.a=(t.a||"")+e},"b=":function(t,e){t.b=(t.b||"")+e},"p=":function(t,e){t.p=(t.p||"")+e},"o=":function(t,e){t.o=(t.o||"")+e},"q=":function(t,e){t.q=(t.q||"")+e},"d=":function(t,e){t.d=(t.d||"")+e},"rm=":function(t,e){t.rm=(t.rm||"")+e},"text=":function(t,e){t.text_=(t.text_||"")+e},insert:function(t,e,n){return{type_:n}},"insert+p1":function(t,e,n){return{type_:n,p1:e}},"insert+p1+p2":function(t,e,n){return{type_:n,p1:e[0],p2:e[1]}},copy:function(t,e){return e},rm:function(t,e){return{type_:"rm",p1:e||""}},text:function(t,e){return i.go(e,"text")},"{text}":function(t,e){var n=["{"];return i.concatArray(n,i.go(e,"text")),n.push("}"),n},"tex-math":function(t,e){return i.go(e,"tex-math")},"tex-math tight":function(t,e){return i.go(e,"tex-math tight")},bond:function(t,e,n){return{type_:"bond",kind_:n||e}},"color0-output":function(t,e){return{type_:"color0",color:e[0]}},ce:function(t,e){return i.go(e)},"1/2":function(t,e){var n=[];e.match(/^[+\-]/)&&(n.push(e.substr(0,1)),e=e.substr(1));var o=e.match(/^([0-9]+|\$[a-z]\$|[a-z])\/([0-9]+)(\$[a-z]\$|[a-z])?$/);return o[1]=o[1].replace(/\$/g,""),n.push({type_:"frac",p1:o[1],p2:o[2]}),o[3]&&(o[3]=o[3].replace(/\$/g,""),n.push({type_:"tex-math",p1:o[3]})),n},"9,9":function(t,e){return i.go(e,"9,9")}},createTransitions:function(t){var e,n,o,a,r={};for(e in t)for(n in t[e])for(o=n.split("|"),t[e][n].stateArray=o,a=0;a<o.length;a++)r[o[a]]=[];for(e in t)for(n in t[e])for(o=t[e][n].stateArray||[],a=0;a<o.length;a++){var i=t[e][n];if(i.action_){i.action_=[].concat(i.action_);for(var c=0;c<i.action_.length;c++)"string"==typeof i.action_[c]&&(i.action_[c]={type_:i.action_[c]})}else i.action_=[];for(var u=e.split("|"),p=0;p<u.length;p++)if("*"===o[a])for(var s in r)r[s].push({pattern:u[p],task:i});else r[o[a]].push({pattern:u[p],task:i})}return r},stateMachines:{}};i.stateMachines={ce:{transitions:i.createTransitions({empty:{"*":{action_:"output"}},else:{"0|1|2":{action_:"beginsWithBond=false",revisit:!0,toContinue:!0}},oxidation$:{0:{action_:"oxidation-output"}},CMT:{r:{action_:"rdt=",nextState:"rt"},rd:{action_:"rqt=",nextState:"rdt"}},arrowUpDown:{"0|1|2|as":{action_:["sb=false","output","operator"],nextState:"1"}},uprightEntities:{"0|1|2":{action_:["o=","output"],nextState:"1"}},orbital:{"0|1|2|3":{action_:"o=",nextState:"o"}},"->":{"0|1|2|3":{action_:"r=",nextState:"r"},"a|as":{action_:["output","r="],nextState:"r"},"*":{action_:["output","r="],nextState:"r"}},"+":{o:{action_:"d= kv",nextState:"d"},"d|D":{action_:"d=",nextState:"d"},q:{action_:"d=",nextState:"qd"},"qd|qD":{action_:"d=",nextState:"qd"},dq:{action_:["output","d="],nextState:"d"},3:{action_:["sb=false","output","operator"],nextState:"0"}},amount:{"0|2":{action_:"a=",nextState:"a"}},"pm-operator":{"0|1|2|a|as":{action_:["sb=false","output",{type_:"operator",option:"\\pm"}],nextState:"0"}},operator:{"0|1|2|a|as":{action_:["sb=false","output","operator"],nextState:"0"}},"-$":{"o|q":{action_:["charge or bond","output"],nextState:"qd"},d:{action_:"d=",nextState:"d"},D:{action_:["output",{type_:"bond",option:"-"}],nextState:"3"},q:{action_:"d=",nextState:"qd"},qd:{action_:"d=",nextState:"qd"},"qD|dq":{action_:["output",{type_:"bond",option:"-"}],nextState:"3"}},"-9":{"3|o":{action_:["output",{type_:"insert",option:"hyphen"}],nextState:"3"}},"- orbital overlap":{o:{action_:["output",{type_:"insert",option:"hyphen"}],nextState:"2"},d:{action_:["output",{type_:"insert",option:"hyphen"}],nextState:"2"}},"-":{"0|1|2":{action_:[{type_:"output",option:1},"beginsWithBond=true",{type_:"bond",option:"-"}],nextState:"3"},3:{action_:{type_:"bond",option:"-"}},a:{action_:["output",{type_:"insert",option:"hyphen"}],nextState:"2"},as:{action_:[{type_:"output",option:2},{type_:"bond",option:"-"}],nextState:"3"},b:{action_:"b="},o:{action_:{type_:"- after o/d",option:!1},nextState:"2"},q:{action_:{type_:"- after o/d",option:!1},nextState:"2"},"d|qd|dq":{action_:{type_:"- after o/d",option:!0},nextState:"2"},"D|qD|p":{action_:["output",{type_:"bond",option:"-"}],nextState:"3"}},amount2:{"1|3":{action_:"a=",nextState:"a"}},letters:{"0|1|2|3|a|as|b|p|bp|o":{action_:"o=",nextState:"o"},"q|dq":{action_:["output","o="],nextState:"o"},"d|D|qd|qD":{action_:"o after d",nextState:"o"}},digits:{o:{action_:"q=",nextState:"q"},"d|D":{action_:"q=",nextState:"dq"},q:{action_:["output","o="],nextState:"o"},a:{action_:"o=",nextState:"o"}},"space A":{"b|p|bp":{}},space:{a:{nextState:"as"},0:{action_:"sb=false"},"1|2":{action_:"sb=true"},"r|rt|rd|rdt|rdq":{action_:"output",nextState:"0"},"*":{action_:["output","sb=true"],nextState:"1"}},"1st-level escape":{"1|2":{action_:["output",{type_:"insert+p1",option:"1st-level escape"}]},"*":{action_:["output",{type_:"insert+p1",option:"1st-level escape"}],nextState:"0"}},"[(...)]":{"r|rt":{action_:"rd=",nextState:"rd"},"rd|rdt":{action_:"rq=",nextState:"rdq"}},"...":{"o|d|D|dq|qd|qD":{action_:["output",{type_:"bond",option:"..."}],nextState:"3"},"*":{action_:[{type_:"output",option:1},{type_:"insert",option:"ellipsis"}],nextState:"1"}},". |* ":{"*":{action_:["output",{type_:"insert",option:"addition compound"}],nextState:"1"}},"state of aggregation $":{"*":{action_:["output","state of aggregation"],nextState:"1"}},"{[(":{"a|as|o":{action_:["o=","output","parenthesisLevel++"],nextState:"2"},"0|1|2|3":{action_:["o=","output","parenthesisLevel++"],nextState:"2"},"*":{action_:["output","o=","output","parenthesisLevel++"],nextState:"2"}},")]}":{"0|1|2|3|b|p|bp|o":{action_:["o=","parenthesisLevel--"],nextState:"o"},"a|as|d|D|q|qd|qD|dq":{action_:["output","o=","parenthesisLevel--"],nextState:"o"}},", ":{"*":{action_:["output","comma"],nextState:"0"}},"^_":{"*":{}},"^{(...)}|^($...$)":{"0|1|2|as":{action_:"b=",nextState:"b"},p:{action_:"b=",nextState:"bp"},"3|o":{action_:"d= kv",nextState:"D"},q:{action_:"d=",nextState:"qD"},"d|D|qd|qD|dq":{action_:["output","d="],nextState:"D"}},"^a|^\\x{}{}|^\\x{}|^\\x|'":{"0|1|2|as":{action_:"b=",nextState:"b"},p:{action_:"b=",nextState:"bp"},"3|o":{action_:"d= kv",nextState:"d"},q:{action_:"d=",nextState:"qd"},"d|qd|D|qD":{action_:"d="},dq:{action_:["output","d="],nextState:"d"}},"_{(state of aggregation)}$":{"d|D|q|qd|qD|dq":{action_:["output","q="],nextState:"q"}},"_{(...)}|_($...$)|_9|_\\x{}{}|_\\x{}|_\\x":{"0|1|2|as":{action_:"p=",nextState:"p"},b:{action_:"p=",nextState:"bp"},"3|o":{action_:"q=",nextState:"q"},"d|D":{action_:"q=",nextState:"dq"},"q|qd|qD|dq":{action_:["output","q="],nextState:"q"}},"=<>":{"0|1|2|3|a|as|o|q|d|D|qd|qD|dq":{action_:[{type_:"output",option:2},"bond"],nextState:"3"}},"#":{"0|1|2|3|a|as|o":{action_:[{type_:"output",option:2},{type_:"bond",option:"#"}],nextState:"3"}},"{}":{"*":{action_:{type_:"output",option:1},nextState:"1"}},"{...}":{"0|1|2|3|a|as|b|p|bp":{action_:"o=",nextState:"o"},"o|d|D|q|qd|qD|dq":{action_:["output","o="],nextState:"o"}},"$...$":{a:{action_:"a="},"0|1|2|3|as|b|p|bp|o":{action_:"o=",nextState:"o"},"as|o":{action_:"o="},"q|d|D|qd|qD|dq":{action_:["output","o="],nextState:"o"}},"\\bond{(...)}":{"*":{action_:[{type_:"output",option:2},"bond"],nextState:"3"}},"\\frac{(...)}":{"*":{action_:[{type_:"output",option:1},"frac-output"],nextState:"3"}},"\\overset{(...)}":{"*":{action_:[{type_:"output",option:2},"overset-output"],nextState:"3"}},"\\underset{(...)}":{"*":{action_:[{type_:"output",option:2},"underset-output"],nextState:"3"}},"\\underbrace{(...)}":{"*":{action_:[{type_:"output",option:2},"underbrace-output"],nextState:"3"}},"\\color{(...)}{(...)}1|\\color(...){(...)}2":{"*":{action_:[{type_:"output",option:2},"color-output"],nextState:"3"}},"\\color{(...)}0":{"*":{action_:[{type_:"output",option:2},"color0-output"]}},"\\ce{(...)}":{"*":{action_:[{type_:"output",option:2},"ce"],nextState:"3"}},"\\,":{"*":{action_:[{type_:"output",option:1},"copy"],nextState:"1"}},"\\x{}{}|\\x{}|\\x":{"0|1|2|3|a|as|b|p|bp|o|c0":{action_:["o=","output"],nextState:"3"},"*":{action_:["output","o=","output"],nextState:"3"}},others:{"*":{action_:[{type_:"output",option:1},"copy"],nextState:"3"}},else2:{a:{action_:"a to o",nextState:"o",revisit:!0},as:{action_:["output","sb=true"],nextState:"1",revisit:!0},"r|rt|rd|rdt|rdq":{action_:["output"],nextState:"0",revisit:!0},"*":{action_:["output","copy"],nextState:"3"}}}),actions:{"o after d":function(t,e){var n;if((t.d||"").match(/^[0-9]+$/)){var o=t.d;t.d=void 0,n=this.output(t),t.b=o}else n=this.output(t);return i.actions["o="](t,e),n},"d= kv":function(t,e){t.d=e,t.dType="kv"},"charge or bond":function(t,e){if(t.beginsWithBond){var n=[];return i.concatArray(n,this.output(t)),i.concatArray(n,i.actions.bond(t,e,"-")),n}t.d=e},"- after o/d":function(t,e,n){var o=i.patterns.match_("orbital",t.o||""),a=i.patterns.match_("one lowercase greek letter $",t.o||""),r=i.patterns.match_("one lowercase latin letter $",t.o||""),c=i.patterns.match_("$one lowercase latin letter$ $",t.o||""),u="-"===e&&(o&&""===o.remainder||a||r||c);!u||t.a||t.b||t.p||t.d||t.q||o||!r||(t.o="$"+t.o+"$");var p=[];return u?(i.concatArray(p,this.output(t)),p.push({type_:"hyphen"})):(o=i.patterns.match_("digits",t.d||""),n&&o&&""===o.remainder?(i.concatArray(p,i.actions["d="](t,e)),i.concatArray(p,this.output(t))):(i.concatArray(p,this.output(t)),i.concatArray(p,i.actions.bond(t,e,"-")))),p},"a to o":function(t){t.o=t.a,t.a=void 0},"sb=true":function(t){t.sb=!0},"sb=false":function(t){t.sb=!1},"beginsWithBond=true":function(t){t.beginsWithBond=!0},"beginsWithBond=false":function(t){t.beginsWithBond=!1},"parenthesisLevel++":function(t){t.parenthesisLevel++},"parenthesisLevel--":function(t){t.parenthesisLevel--},"state of aggregation":function(t,e){return{type_:"state of aggregation",p1:i.go(e,"o")}},comma:function(t,e){var n=e.replace(/\s*$/,"");return n!==e&&0===t.parenthesisLevel?{type_:"comma enumeration L",p1:n}:{type_:"comma enumeration M",p1:n}},output:function(t,e,n){var o,a,r;t.r?(a="M"===t.rdt?i.go(t.rd,"tex-math"):"T"===t.rdt?[{type_:"text",p1:t.rd||""}]:i.go(t.rd),r="M"===t.rqt?i.go(t.rq,"tex-math"):"T"===t.rqt?[{type_:"text",p1:t.rq||""}]:i.go(t.rq),o={type_:"arrow",r:t.r,rd:a,rq:r}):(o=[],(t.a||t.b||t.p||t.o||t.q||t.d||n)&&(t.sb&&o.push({type_:"entitySkip"}),t.o||t.q||t.d||t.b||t.p||2===n?t.o||t.q||t.d||!t.b&&!t.p?t.o&&"kv"===t.dType&&i.patterns.match_("d-oxidation$",t.d||"")?t.dType="oxidation":t.o&&"kv"===t.dType&&!t.q&&(t.dType=void 0):(t.o=t.a,t.d=t.b,t.q=t.p,t.a=t.b=t.p=void 0):(t.o=t.a,t.a=void 0),o.push({type_:"chemfive",a:i.go(t.a,"a"),b:i.go(t.b,"bd"),p:i.go(t.p,"pq"),o:i.go(t.o,"o"),q:i.go(t.q,"pq"),d:i.go(t.d,"oxidation"===t.dType?"oxidation":"bd"),dType:t.dType})));for(var c in t)"parenthesisLevel"!==c&&"beginsWithBond"!==c&&delete t[c];return o},"oxidation-output":function(t,e){var n=["{"];return i.concatArray(n,i.go(e,"oxidation")),n.push("}"),n},"frac-output":function(t,e){return{type_:"frac-ce",p1:i.go(e[0]),p2:i.go(e[1])}},"overset-output":function(t,e){return{type_:"overset",p1:i.go(e[0]),p2:i.go(e[1])}},"underset-output":function(t,e){return{type_:"underset",p1:i.go(e[0]),p2:i.go(e[1])}},"underbrace-output":function(t,e){return{type_:"underbrace",p1:i.go(e[0]),p2:i.go(e[1])}},"color-output":function(t,e){return{type_:"color",color1:e[0],color2:i.go(e[1])}},"r=":function(t,e){t.r=e},"rdt=":function(t,e){t.rdt=e},"rd=":function(t,e){t.rd=e},"rqt=":function(t,e){t.rqt=e},"rq=":function(t,e){t.rq=e},operator:function(t,e,n){return{type_:"operator",kind_:n||e}}}},a:{transitions:i.createTransitions({empty:{"*":{}},"1/2$":{0:{action_:"1/2"}},else:{0:{nextState:"1",revisit:!0}},"$(...)$":{"*":{action_:"tex-math tight",nextState:"1"}},",":{"*":{action_:{type_:"insert",option:"commaDecimal"}}},else2:{"*":{action_:"copy"}}}),actions:{}},o:{transitions:i.createTransitions({empty:{"*":{}},"1/2$":{0:{action_:"1/2"}},else:{0:{nextState:"1",revisit:!0}},letters:{"*":{action_:"rm"}},"\\ca":{"*":{action_:{type_:"insert",option:"circa"}}},"\\x{}{}|\\x{}|\\x":{"*":{action_:"copy"}},"${(...)}$|$(...)$":{"*":{action_:"tex-math"}},"{(...)}":{"*":{action_:"{text}"}},else2:{"*":{action_:"copy"}}}),actions:{}},text:{transitions:i.createTransitions({empty:{"*":{action_:"output"}},"{...}":{"*":{action_:"text="}},"${(...)}$|$(...)$":{"*":{action_:"tex-math"}},"\\greek":{"*":{action_:["output","rm"]}},"\\,|\\x{}{}|\\x{}|\\x":{"*":{action_:["output","copy"]}},else:{"*":{action_:"text="}}}),actions:{output:function(t){if(t.text_){var e={type_:"text",p1:t.text_};for(var n in t)delete t[n];return e}}}},pq:{transitions:i.createTransitions({empty:{"*":{}},"state of aggregation $":{"*":{action_:"state of aggregation"}},i$:{0:{nextState:"!f",revisit:!0}},"(KV letters),":{0:{action_:"rm",nextState:"0"}},formula$:{0:{nextState:"f",revisit:!0}},"1/2$":{0:{action_:"1/2"}},else:{0:{nextState:"!f",revisit:!0}},"${(...)}$|$(...)$":{"*":{action_:"tex-math"}},"{(...)}":{"*":{action_:"text"}},"a-z":{f:{action_:"tex-math"}},letters:{"*":{action_:"rm"}},"-9.,9":{"*":{action_:"9,9"}},",":{"*":{action_:{type_:"insert+p1",option:"comma enumeration S"}}},"\\color{(...)}{(...)}1|\\color(...){(...)}2":{"*":{action_:"color-output"}},"\\color{(...)}0":{"*":{action_:"color0-output"}},"\\ce{(...)}":{"*":{action_:"ce"}},"\\,|\\x{}{}|\\x{}|\\x":{"*":{action_:"copy"}},else2:{"*":{action_:"copy"}}}),actions:{"state of aggregation":function(t,e){return{type_:"state of aggregation subscript",p1:i.go(e,"o")}},"color-output":function(t,e){return{type_:"color",color1:e[0],color2:i.go(e[1],"pq")}}}},bd:{transitions:i.createTransitions({empty:{"*":{}},x$:{0:{nextState:"!f",revisit:!0}},formula$:{0:{nextState:"f",revisit:!0}},else:{0:{nextState:"!f",revisit:!0}},"-9.,9 no missing 0":{"*":{action_:"9,9"}},".":{"*":{action_:{type_:"insert",option:"electron dot"}}},"a-z":{f:{action_:"tex-math"}},x:{"*":{action_:{type_:"insert",option:"KV x"}}},letters:{"*":{action_:"rm"}},"'":{"*":{action_:{type_:"insert",option:"prime"}}},"${(...)}$|$(...)$":{"*":{action_:"tex-math"}},"{(...)}":{"*":{action_:"text"}},"\\color{(...)}{(...)}1|\\color(...){(...)}2":{"*":{action_:"color-output"}},"\\color{(...)}0":{"*":{action_:"color0-output"}},"\\ce{(...)}":{"*":{action_:"ce"}},"\\,|\\x{}{}|\\x{}|\\x":{"*":{action_:"copy"}},else2:{"*":{action_:"copy"}}}),actions:{"color-output":function(t,e){return{type_:"color",color1:e[0],color2:i.go(e[1],"bd")}}}},oxidation:{transitions:i.createTransitions({empty:{"*":{}},"roman numeral":{"*":{action_:"roman-numeral"}},"${(...)}$|$(...)$":{"*":{action_:"tex-math"}},else:{"*":{action_:"copy"}}}),actions:{"roman-numeral":function(t,e){return{type_:"roman numeral",p1:e||""}}}},"tex-math":{transitions:i.createTransitions({empty:{"*":{action_:"output"}},"\\ce{(...)}":{"*":{action_:["output","ce"]}},"{...}|\\,|\\x{}{}|\\x{}|\\x":{"*":{action_:"o="}},else:{"*":{action_:"o="}}}),actions:{output:function(t){if(t.o){var e={type_:"tex-math",p1:t.o};for(var n in t)delete t[n];return e}}}},"tex-math tight":{transitions:i.createTransitions({empty:{"*":{action_:"output"}},"\\ce{(...)}":{"*":{action_:["output","ce"]}},"{...}|\\,|\\x{}{}|\\x{}|\\x":{"*":{action_:"o="}},"-|+":{"*":{action_:"tight operator"}},else:{"*":{action_:"o="}}}),actions:{"tight operator":function(t,e){t.o=(t.o||"")+"{"+e+"}"},output:function(t){if(t.o){var e={type_:"tex-math",p1:t.o};for(var n in t)delete t[n];return e}}}},"9,9":{transitions:i.createTransitions({empty:{"*":{}},",":{"*":{action_:"comma"}},else:{"*":{action_:"copy"}}}),actions:{comma:function(){return{type_:"commaDecimal"}}}},pu:{transitions:i.createTransitions({empty:{"*":{action_:"output"}},space$:{"*":{action_:["output","space"]}},"{[(|)]}":{"0|a":{action_:"copy"}},"(-)(9)^(-9)":{0:{action_:"number^",nextState:"a"}},"(-)(9.,9)(e)(99)":{0:{action_:"enumber",nextState:"a"}},space:{"0|a":{}},"pm-operator":{"0|a":{action_:{type_:"operator",option:"\\pm"},nextState:"0"}},operator:{"0|a":{action_:"copy",nextState:"0"}},"//":{d:{action_:"o=",nextState:"/"}},"/":{d:{action_:"o=",nextState:"/"}},"{...}|else":{"0|d":{action_:"d=",nextState:"d"},a:{action_:["space","d="],nextState:"d"},"/|q":{action_:"q=",nextState:"q"}}}),actions:{enumber:function(t,e){var n=[];return"+-"===e[0]||"+/-"===e[0]?n.push("\\pm "):e[0]&&n.push(e[0]),e[1]&&(i.concatArray(n,i.go(e[1],"pu-9,9")),e[2]&&(e[2].match(/[,.]/)?i.concatArray(n,i.go(e[2],"pu-9,9")):n.push(e[2])),e[3]=e[4]||e[3],e[3]&&(e[3]=e[3].trim(),"e"===e[3]||"*"===e[3].substr(0,1)?n.push({type_:"cdot"}):n.push({type_:"times"}))),e[3]&&n.push("10^{"+e[5]+"}"),n},"number^":function(t,e){var n=[];return"+-"===e[0]||"+/-"===e[0]?n.push("\\pm "):e[0]&&n.push(e[0]),i.concatArray(n,i.go(e[1],"pu-9,9")),n.push("^{"+e[2]+"}"),n},operator:function(t,e,n){return{type_:"operator",kind_:n||e}},space:function(){return{type_:"pu-space-1"}},output:function(t){var e,n=i.patterns.match_("{(...)}",t.d||"");n&&""===n.remainder&&(t.d=n.match_);var o=i.patterns.match_("{(...)}",t.q||"");if(o&&""===o.remainder&&(t.q=o.match_),t.d&&(t.d=t.d.replace(/\u00B0C|\^oC|\^{o}C/g,"{}^{\\circ}C"),t.d=t.d.replace(/\u00B0F|\^oF|\^{o}F/g,"{}^{\\circ}F")),t.q){t.q=t.q.replace(/\u00B0C|\^oC|\^{o}C/g,"{}^{\\circ}C"),t.q=t.q.replace(/\u00B0F|\^oF|\^{o}F/g,"{}^{\\circ}F");var a={d:i.go(t.d,"pu"),q:i.go(t.q,"pu")};"//"===t.o?e={type_:"pu-frac",p1:a.d,p2:a.q}:(e=a.d,a.d.length>1||a.q.length>1?e.push({type_:" / "}):e.push({type_:"/"}),i.concatArray(e,a.q))}else e=i.go(t.d,"pu-2");for(var r in t)delete t[r];return e}}},"pu-2":{transitions:i.createTransitions({empty:{"*":{action_:"output"}},"*":{"*":{action_:["output","cdot"],nextState:"0"}},"\\x":{"*":{action_:"rm="}},space:{"*":{action_:["output","space"],nextState:"0"}},"^{(...)}|^(-1)":{1:{action_:"^(-1)"}},"-9.,9":{0:{action_:"rm=",nextState:"0"},1:{action_:"^(-1)",nextState:"0"}},"{...}|else":{"*":{action_:"rm=",nextState:"1"}}}),actions:{cdot:function(){return{type_:"tight cdot"}},"^(-1)":function(t,e){t.rm+="^{"+e+"}"},space:function(){return{type_:"pu-space-2"}},output:function(t){var e=[];if(t.rm){var n=i.patterns.match_("{(...)}",t.rm||"");e=n&&""===n.remainder?i.go(n.match_,"pu"):{type_:"rm",p1:t.rm}}for(var o in t)delete t[o];return e}}},"pu-9,9":{transitions:i.createTransitions({empty:{0:{action_:"output-0"},o:{action_:"output-o"}},",":{0:{action_:["output-0","comma"],nextState:"o"}},".":{0:{action_:["output-0","copy"],nextState:"o"}},else:{"*":{action_:"text="}}}),actions:{comma:function(){return{type_:"commaDecimal"}},"output-0":function(t){var e=[];if(t.text_=t.text_||"",t.text_.length>4){var n=t.text_.length%3;0===n&&(n=3);for(var o=t.text_.length-3;o>0;o-=3)e.push(t.text_.substr(o,3)),e.push({type_:"1000 separator"});e.push(t.text_.substr(0,n)),e.reverse()}else e.push(t.text_);for(var a in t)delete t[a];return e},"output-o":function(t){var e=[];if(t.text_=t.text_||"",t.text_.length>4){for(var n=t.text_.length-3,o=0;o<n;o+=3)e.push(t.text_.substr(o,3)),e.push({type_:"1000 separator"});e.push(t.text_.substr(o))}else e.push(t.text_);for(var a in t)delete t[a];return e}}}};var c={go:function(t,e){if(!t)return"";for(var n="",o=!1,a=0;a<t.length;a++){var r=t[a];"string"==typeof r?n+=r:(n+=c._go2(r),"1st-level escape"===r.type_&&(o=!0))}return e||o||!n||(n="{"+n+"}"),n},_goInner:function(t){return t?c.go(t,!0):t},_go2:function(t){var e;switch(t.type_){case"chemfive":e="";var n={a:c._goInner(t.a),b:c._goInner(t.b),p:c._goInner(t.p),o:c._goInner(t.o),q:c._goInner(t.q),d:c._goInner(t.d)};n.a&&(n.a.match(/^[+\-]/)&&(n.a="{"+n.a+"}"),e+=n.a+"\\,"),(n.b||n.p)&&(e+="{\\vphantom{X}}",e+="^{\\hphantom{"+(n.b||"")+"}}_{\\hphantom{"+(n.p||"")+"}}",e+="{\\vphantom{X}}",e+="^{\\smash[t]{\\vphantom{2}}\\mathllap{"+(n.b||"")+"}}",e+="_{\\vphantom{2}\\mathllap{\\smash[t]{"+(n.p||"")+"}}}"),n.o&&(n.o.match(/^[+\-]/)&&(n.o="{"+n.o+"}"),e+=n.o),"kv"===t.dType?((n.d||n.q)&&(e+="{\\vphantom{X}}"),n.d&&(e+="^{"+n.d+"}"),n.q&&(e+="_{\\smash[t]{"+n.q+"}}")):"oxidation"===t.dType?(n.d&&(e+="{\\vphantom{X}}",e+="^{"+n.d+"}"),n.q&&(e+="{\\vphantom{X}}",e+="_{\\smash[t]{"+n.q+"}}")):(n.q&&(e+="{\\vphantom{X}}",e+="_{\\smash[t]{"+n.q+"}}"),n.d&&(e+="{\\vphantom{X}}",e+="^{"+n.d+"}"));break;case"rm":e="\\mathrm{"+t.p1+"}";break;case"text":t.p1.match(/[\^_]/)?(t.p1=t.p1.replace(" ","~").replace("-","\\text{-}"),e="\\mathrm{"+t.p1+"}"):e="\\text{"+t.p1+"}";break;case"roman numeral":e="\\mathrm{"+t.p1+"}";break;case"state of aggregation":e="\\mskip2mu "+c._goInner(t.p1);break;case"state of aggregation subscript":e="\\mskip1mu "+c._goInner(t.p1);break;case"bond":if(!(e=c._getBond(t.kind_)))throw["MhchemErrorBond","mhchem Error. Unknown bond type ("+t.kind_+")"];break;case"frac":var o="\\frac{"+t.p1+"}{"+t.p2+"}";e="\\mathchoice{\\textstyle"+o+"}{"+o+"}{"+o+"}{"+o+"}";break;case"pu-frac":var a="\\frac{"+c._goInner(t.p1)+"}{"+c._goInner(t.p2)+"}";e="\\mathchoice{\\textstyle"+a+"}{"+a+"}{"+a+"}{"+a+"}";break;case"tex-math":e=t.p1+" ";break;case"frac-ce":e="\\frac{"+c._goInner(t.p1)+"}{"+c._goInner(t.p2)+"}";break;case"overset":e="\\overset{"+c._goInner(t.p1)+"}{"+c._goInner(t.p2)+"}";break;case"underset":e="\\underset{"+c._goInner(t.p1)+"}{"+c._goInner(t.p2)+"}";break;case"underbrace":e="\\underbrace{"+c._goInner(t.p1)+"}_{"+c._goInner(t.p2)+"}";break;case"color":e="{\\color{"+t.color1+"}{"+c._goInner(t.color2)+"}}";break;case"color0":e="\\color{"+t.color+"}";break;case"arrow":var r={rd:c._goInner(t.rd),rq:c._goInner(t.rq)},i="\\x"+c._getArrow(t.r);r.rq&&(i+="[{"+r.rq+"}]"),e=i+=r.rd?"{"+r.rd+"}":"{}";break;case"operator":e=c._getOperator(t.kind_);break;case"1st-level escape":e=t.p1+" ";break;case"space":e=" ";break;case"entitySkip":case"pu-space-1":e="~";break;case"pu-space-2":e="\\mkern3mu ";break;case"1000 separator":e="\\mkern2mu ";break;case"commaDecimal":e="{,}";break;case"comma enumeration L":e="{"+t.p1+"}\\mkern6mu ";break;case"comma enumeration M":e="{"+t.p1+"}\\mkern3mu ";break;case"comma enumeration S":e="{"+t.p1+"}\\mkern1mu ";break;case"hyphen":e="\\text{-}";break;case"addition compound":e="\\,{\\cdot}\\,";break;case"electron dot":e="\\mkern1mu \\bullet\\mkern1mu ";break;case"KV x":e="{\\times}";break;case"prime":e="\\prime ";break;case"cdot":e="\\cdot ";break;case"tight cdot":e="\\mkern1mu{\\cdot}\\mkern1mu ";break;case"times":e="\\times ";break;case"circa":e="{\\sim}";break;case"^":e="uparrow";break;case"v":e="downarrow";break;case"ellipsis":e="\\ldots ";break;case"/":e="/";break;case" / ":e="\\,/\\,";break;default:throw["MhchemBugT","mhchem bug T. Please report."]}return e},_getArrow:function(t){switch(t){case"->":case"\u2192":case"\u27f6":return"rightarrow";case"<-":return"leftarrow";case"<->":return"leftrightarrow";case"<--\x3e":return"rightleftarrows";case"<=>":case"\u21cc":return"rightleftharpoons";case"<=>>":return"rightequilibrium";case"<<=>":return"leftequilibrium";default:throw["MhchemBugT","mhchem bug T. Please report."]}},_getBond:function(t){switch(t){case"-":case"1":return"{-}";case"=":case"2":return"{=}";case"#":case"3":return"{\\equiv}";case"~":return"{\\tripledash}";case"~-":return"{\\mathrlap{\\raisebox{-.1em}{$-$}}\\raisebox{.1em}{$\\tripledash$}}";case"~=":case"~--":return"{\\mathrlap{\\raisebox{-.2em}{$-$}}\\mathrlap{\\raisebox{.2em}{$\\tripledash$}}-}";case"-~-":return"{\\mathrlap{\\raisebox{-.2em}{$-$}}\\mathrlap{\\raisebox{.2em}{$-$}}\\tripledash}";case"...":return"{{\\cdot}{\\cdot}{\\cdot}}";case"....":return"{{\\cdot}{\\cdot}{\\cdot}{\\cdot}}";case"->":return"{\\rightarrow}";case"<-":return"{\\leftarrow}";case"<":return"{<}";case">":return"{>}";default:throw["MhchemBugT","mhchem bug T. Please report."]}},_getOperator:function(t){switch(t){case"+":return" {}+{} ";case"-":return" {}-{} ";case"=":return" {}={} ";case"<":return" {}<{} ";case">":return" {}>{} ";case"<<":return" {}\\ll{} ";case">>":return" {}\\gg{} ";case"\\pm":return" {}\\pm{} ";case"\\approx":case"$\\approx$":return" {}\\approx{} ";case"v":case"(v)":return" \\downarrow{} ";case"^":case"(^)":return" \\uparrow{} ";default:throw["MhchemBugT","mhchem bug T. Please report."]}}}}]).default}); \ No newline at end of file
+!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e(require("katex"));else if("function"==typeof define&&define.amd)define(["katex"],e);else{var n="object"==typeof exports?e(require("katex")):e(t.katex);for(var o in n)("object"==typeof exports?exports:t)[o]=n[o]}}("undefined"!=typeof self?self:this,(function(t){return function(){"use strict";var e={771:function(e){e.exports=t}},n={};function o(t){var a=n[t];if(void 0!==a)return a.exports;var r=n[t]={exports:{}};return e[t](r,r.exports,o),r.exports}o.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(e,{a:e}),e},o.d=function(t,e){for(var n in e)o.o(e,n)&&!o.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},o.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)};var a={};return function(){var t=o(771),e=o.n(t);e().__defineMacro("\\ce",(function(t){return n(t.consumeArgs(1)[0],"ce")})),e().__defineMacro("\\pu",(function(t){return n(t.consumeArgs(1)[0],"pu")})),e().__defineMacro("\\tripledash","{\\vphantom{-}\\raisebox{2.56mu}{$\\mkern2mu\\tiny\\text{-}\\mkern1mu\\text{-}\\mkern1mu\\text{-}\\mkern2mu$}}");var n=function(t,e){for(var n="",o=t[t.length-1].loc.start,i=t.length-1;i>=0;i--)t[i].loc.start>o&&(n+=" ",o=t[i].loc.start),n+=t[i].text,o+=t[i].text.length;return r.go(a.go(n,e))},a={go:function(t,e){if(!t)return[];void 0===e&&(e="ce");var n,o="0",r={};r.parenthesisLevel=0,t=(t=(t=t.replace(/\n/g," ")).replace(/[\u2212\u2013\u2014\u2010]/g,"-")).replace(/[\u2026]/g,"...");for(var i=10,c=[];;){n!==t?(i=10,n=t):i--;var u=a.stateMachines[e],p=u.transitions[o]||u.transitions["*"];t:for(var s=0;s<p.length;s++){var _=a.patterns.match_(p[s].pattern,t);if(_){for(var d=p[s].task,m=0;m<d.action_.length;m++){var l;if(u.actions[d.action_[m].type_])l=u.actions[d.action_[m].type_](r,_.match_,d.action_[m].option);else{if(!a.actions[d.action_[m].type_])throw["MhchemBugA","mhchem bug A. Please report. ("+d.action_[m].type_+")"];l=a.actions[d.action_[m].type_](r,_.match_,d.action_[m].option)}a.concatArray(c,l)}if(o=d.nextState||o,!(t.length>0))return c;if(d.revisit||(t=_.remainder),!d.toContinue)break t}}if(i<=0)throw["MhchemBugU","mhchem bug U. Please report."]}},concatArray:function(t,e){if(e)if(Array.isArray(e))for(var n=0;n<e.length;n++)t.push(e[n]);else t.push(e)},patterns:{patterns:{empty:/^$/,else:/^./,else2:/^./,space:/^\s/,"space A":/^\s(?=[A-Z\\$])/,space$:/^\s$/,"a-z":/^[a-z]/,x:/^x/,x$:/^x$/,i$:/^i$/,letters:/^(?:[a-zA-Z\u03B1-\u03C9\u0391-\u03A9?@]|(?:\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega|Gamma|Delta|Theta|Lambda|Xi|Pi|Sigma|Upsilon|Phi|Psi|Omega)(?:\s+|\{\}|(?![a-zA-Z]))))+/,"\\greek":/^\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega|Gamma|Delta|Theta|Lambda|Xi|Pi|Sigma|Upsilon|Phi|Psi|Omega)(?:\s+|\{\}|(?![a-zA-Z]))/,"one lowercase latin letter $":/^(?:([a-z])(?:$|[^a-zA-Z]))$/,"$one lowercase latin letter$ $":/^\$(?:([a-z])(?:$|[^a-zA-Z]))\$$/,"one lowercase greek letter $":/^(?:\$?[\u03B1-\u03C9]\$?|\$?\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega)\s*\$?)(?:\s+|\{\}|(?![a-zA-Z]))$/,digits:/^[0-9]+/,"-9.,9":/^[+\-]?(?:[0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+))/,"-9.,9 no missing 0":/^[+\-]?[0-9]+(?:[.,][0-9]+)?/,"(-)(9.,9)(e)(99)":function(t){var e=t.match(/^(\+\-|\+\/\-|\+|\-|\\pm\s?)?([0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+))?(\((?:[0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+))\))?(?:([eE]|\s*(\*|x|\\times|\u00D7)\s*10\^)([+\-]?[0-9]+|\{[+\-]?[0-9]+\}))?/);return e&&e[0]?{match_:e.splice(1),remainder:t.substr(e[0].length)}:null},"(-)(9)^(-9)":function(t){var e=t.match(/^(\+\-|\+\/\-|\+|\-|\\pm\s?)?([0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+)?)\^([+\-]?[0-9]+|\{[+\-]?[0-9]+\})/);return e&&e[0]?{match_:e.splice(1),remainder:t.substr(e[0].length)}:null},"state of aggregation $":function(t){var e=a.patterns.findObserveGroups(t,"",/^\([a-z]{1,3}(?=[\),])/,")","");if(e&&e.remainder.match(/^($|[\s,;\)\]\}])/))return e;var n=t.match(/^(?:\((?:\\ca\s?)?\$[amothc]\$\))/);return n?{match_:n[0],remainder:t.substr(n[0].length)}:null},"_{(state of aggregation)}$":/^_\{(\([a-z]{1,3}\))\}/,"{[(":/^(?:\\\{|\[|\()/,")]}":/^(?:\)|\]|\\\})/,", ":/^[,;]\s*/,",":/^[,;]/,".":/^[.]/,". ":/^([.\u22C5\u00B7\u2022])\s*/,"...":/^\.\.\.(?=$|[^.])/,"* ":/^([*])\s*/,"^{(...)}":function(t){return a.patterns.findObserveGroups(t,"^{","","","}")},"^($...$)":function(t){return a.patterns.findObserveGroups(t,"^","$","$","")},"^a":/^\^([0-9]+|[^\\_])/,"^\\x{}{}":function(t){return a.patterns.findObserveGroups(t,"^",/^\\[a-zA-Z]+\{/,"}","","","{","}","",!0)},"^\\x{}":function(t){return a.patterns.findObserveGroups(t,"^",/^\\[a-zA-Z]+\{/,"}","")},"^\\x":/^\^(\\[a-zA-Z]+)\s*/,"^(-1)":/^\^(-?\d+)/,"'":/^'/,"_{(...)}":function(t){return a.patterns.findObserveGroups(t,"_{","","","}")},"_($...$)":function(t){return a.patterns.findObserveGroups(t,"_","$","$","")},_9:/^_([+\-]?[0-9]+|[^\\])/,"_\\x{}{}":function(t){return a.patterns.findObserveGroups(t,"_",/^\\[a-zA-Z]+\{/,"}","","","{","}","",!0)},"_\\x{}":function(t){return a.patterns.findObserveGroups(t,"_",/^\\[a-zA-Z]+\{/,"}","")},"_\\x":/^_(\\[a-zA-Z]+)\s*/,"^_":/^(?:\^(?=_)|\_(?=\^)|[\^_]$)/,"{}":/^\{\}/,"{...}":function(t){return a.patterns.findObserveGroups(t,"","{","}","")},"{(...)}":function(t){return a.patterns.findObserveGroups(t,"{","","","}")},"$...$":function(t){return a.patterns.findObserveGroups(t,"","$","$","")},"${(...)}$":function(t){return a.patterns.findObserveGroups(t,"${","","","}$")},"$(...)$":function(t){return a.patterns.findObserveGroups(t,"$","","","$")},"=<>":/^[=<>]/,"#":/^[#\u2261]/,"+":/^\+/,"-$":/^-(?=[\s_},;\]/]|$|\([a-z]+\))/,"-9":/^-(?=[0-9])/,"- orbital overlap":/^-(?=(?:[spd]|sp)(?:$|[\s,;\)\]\}]))/,"-":/^-/,"pm-operator":/^(?:\\pm|\$\\pm\$|\+-|\+\/-)/,operator:/^(?:\+|(?:[\-=<>]|<<|>>|\\approx|\$\\approx\$)(?=\s|$|-?[0-9]))/,arrowUpDown:/^(?:v|\(v\)|\^|\(\^\))(?=$|[\s,;\)\]\}])/,"\\bond{(...)}":function(t){return a.patterns.findObserveGroups(t,"\\bond{","","","}")},"->":/^(?:<->|<-->|->|<-|<=>>|<<=>|<=>|[\u2192\u27F6\u21CC])/,CMT:/^[CMT](?=\[)/,"[(...)]":function(t){return a.patterns.findObserveGroups(t,"[","","","]")},"1st-level escape":/^(&|\\\\|\\hline)\s*/,"\\,":/^(?:\\[,\ ;:])/,"\\x{}{}":function(t){return a.patterns.findObserveGroups(t,"",/^\\[a-zA-Z]+\{/,"}","","","{","}","",!0)},"\\x{}":function(t){return a.patterns.findObserveGroups(t,"",/^\\[a-zA-Z]+\{/,"}","")},"\\ca":/^\\ca(?:\s+|(?![a-zA-Z]))/,"\\x":/^(?:\\[a-zA-Z]+\s*|\\[_&{}%])/,orbital:/^(?:[0-9]{1,2}[spdfgh]|[0-9]{0,2}sp)(?=$|[^a-zA-Z])/,others:/^[\/~|]/,"\\frac{(...)}":function(t){return a.patterns.findObserveGroups(t,"\\frac{","","","}","{","","","}")},"\\overset{(...)}":function(t){return a.patterns.findObserveGroups(t,"\\overset{","","","}","{","","","}")},"\\underset{(...)}":function(t){return a.patterns.findObserveGroups(t,"\\underset{","","","}","{","","","}")},"\\underbrace{(...)}":function(t){return a.patterns.findObserveGroups(t,"\\underbrace{","","","}_","{","","","}")},"\\color{(...)}0":function(t){return a.patterns.findObserveGroups(t,"\\color{","","","}")},"\\color{(...)}{(...)}1":function(t){return a.patterns.findObserveGroups(t,"\\color{","","","}","{","","","}")},"\\color(...){(...)}2":function(t){return a.patterns.findObserveGroups(t,"\\color","\\","",/^(?=\{)/,"{","","","}")},"\\ce{(...)}":function(t){return a.patterns.findObserveGroups(t,"\\ce{","","","}")},oxidation$:/^(?:[+-][IVX]+|\\pm\s*0|\$\\pm\$\s*0)$/,"d-oxidation$":/^(?:[+-]?\s?[IVX]+|\\pm\s*0|\$\\pm\$\s*0)$/,"roman numeral":/^[IVX]+/,"1/2$":/^[+\-]?(?:[0-9]+|\$[a-z]\$|[a-z])\/[0-9]+(?:\$[a-z]\$|[a-z])?$/,amount:function(t){var e;if(e=t.match(/^(?:(?:(?:\([+\-]?[0-9]+\/[0-9]+\)|[+\-]?(?:[0-9]+|\$[a-z]\$|[a-z])\/[0-9]+|[+\-]?[0-9]+[.,][0-9]+|[+\-]?\.[0-9]+|[+\-]?[0-9]+)(?:[a-z](?=\s*[A-Z]))?)|[+\-]?[a-z](?=\s*[A-Z])|\+(?!\s))/))return{match_:e[0],remainder:t.substr(e[0].length)};var n=a.patterns.findObserveGroups(t,"","$","$","");return n&&(e=n.match_.match(/^\$(?:\(?[+\-]?(?:[0-9]*[a-z]?[+\-])?[0-9]*[a-z](?:[+\-][0-9]*[a-z]?)?\)?|\+|-)\$$/))?{match_:e[0],remainder:t.substr(e[0].length)}:null},amount2:function(t){return this.amount(t)},"(KV letters),":/^(?:[A-Z][a-z]{0,2}|i)(?=,)/,formula$:function(t){if(t.match(/^\([a-z]+\)$/))return null;var e=t.match(/^(?:[a-z]|(?:[0-9\ \+\-\,\.\(\)]+[a-z])+[0-9\ \+\-\,\.\(\)]*|(?:[a-z][0-9\ \+\-\,\.\(\)]+)+[a-z]?)$/);return e?{match_:e[0],remainder:t.substr(e[0].length)}:null},uprightEntities:/^(?:pH|pOH|pC|pK|iPr|iBu)(?=$|[^a-zA-Z])/,"/":/^\s*(\/)\s*/,"//":/^\s*(\/\/)\s*/,"*":/^\s*[*.]\s*/},findObserveGroups:function(t,e,n,o,a,r,i,c,u,p){var s=function(t,e){if("string"==typeof e)return 0!==t.indexOf(e)?null:e;var n=t.match(e);return n?n[0]:null},_=s(t,e);if(null===_)return null;if(t=t.substr(_.length),null===(_=s(t,n)))return null;var d=function(t,e,n){for(var o=0;e<t.length;){var a=t.charAt(e),r=s(t.substr(e),n);if(null!==r&&0===o)return{endMatchBegin:e,endMatchEnd:e+r.length};if("{"===a)o++;else if("}"===a){if(0===o)throw["ExtraCloseMissingOpen","Extra close brace or missing open brace"];o--}e++}return null}(t,_.length,o||a);if(null===d)return null;var m=t.substring(0,o?d.endMatchEnd:d.endMatchBegin);if(r||i){var l=this.findObserveGroups(t.substr(d.endMatchEnd),r,i,c,u);if(null===l)return null;var f=[m,l.match_];return{match_:p?f.join(""):f,remainder:l.remainder}}return{match_:m,remainder:t.substr(d.endMatchEnd)}},match_:function(t,e){var n=a.patterns.patterns[t];if(void 0===n)throw["MhchemBugP","mhchem bug P. Please report. ("+t+")"];if("function"==typeof n)return a.patterns.patterns[t](e);var o=e.match(n);return o?{match_:o[2]?[o[1],o[2]]:o[1]?o[1]:o[0],remainder:e.substr(o[0].length)}:null}},actions:{"a=":function(t,e){t.a=(t.a||"")+e},"b=":function(t,e){t.b=(t.b||"")+e},"p=":function(t,e){t.p=(t.p||"")+e},"o=":function(t,e){t.o=(t.o||"")+e},"q=":function(t,e){t.q=(t.q||"")+e},"d=":function(t,e){t.d=(t.d||"")+e},"rm=":function(t,e){t.rm=(t.rm||"")+e},"text=":function(t,e){t.text_=(t.text_||"")+e},insert:function(t,e,n){return{type_:n}},"insert+p1":function(t,e,n){return{type_:n,p1:e}},"insert+p1+p2":function(t,e,n){return{type_:n,p1:e[0],p2:e[1]}},copy:function(t,e){return e},rm:function(t,e){return{type_:"rm",p1:e||""}},text:function(t,e){return a.go(e,"text")},"{text}":function(t,e){var n=["{"];return a.concatArray(n,a.go(e,"text")),n.push("}"),n},"tex-math":function(t,e){return a.go(e,"tex-math")},"tex-math tight":function(t,e){return a.go(e,"tex-math tight")},bond:function(t,e,n){return{type_:"bond",kind_:n||e}},"color0-output":function(t,e){return{type_:"color0",color:e[0]}},ce:function(t,e){return a.go(e)},"1/2":function(t,e){var n=[];e.match(/^[+\-]/)&&(n.push(e.substr(0,1)),e=e.substr(1));var o=e.match(/^([0-9]+|\$[a-z]\$|[a-z])\/([0-9]+)(\$[a-z]\$|[a-z])?$/);return o[1]=o[1].replace(/\$/g,""),n.push({type_:"frac",p1:o[1],p2:o[2]}),o[3]&&(o[3]=o[3].replace(/\$/g,""),n.push({type_:"tex-math",p1:o[3]})),n},"9,9":function(t,e){return a.go(e,"9,9")}},createTransitions:function(t){var e,n,o,a,r={};for(e in t)for(n in t[e])for(o=n.split("|"),t[e][n].stateArray=o,a=0;a<o.length;a++)r[o[a]]=[];for(e in t)for(n in t[e])for(o=t[e][n].stateArray||[],a=0;a<o.length;a++){var i=t[e][n];if(i.action_){i.action_=[].concat(i.action_);for(var c=0;c<i.action_.length;c++)"string"==typeof i.action_[c]&&(i.action_[c]={type_:i.action_[c]})}else i.action_=[];for(var u=e.split("|"),p=0;p<u.length;p++)if("*"===o[a])for(var s in r)r[s].push({pattern:u[p],task:i});else r[o[a]].push({pattern:u[p],task:i})}return r},stateMachines:{}};a.stateMachines={ce:{transitions:a.createTransitions({empty:{"*":{action_:"output"}},else:{"0|1|2":{action_:"beginsWithBond=false",revisit:!0,toContinue:!0}},oxidation$:{0:{action_:"oxidation-output"}},CMT:{r:{action_:"rdt=",nextState:"rt"},rd:{action_:"rqt=",nextState:"rdt"}},arrowUpDown:{"0|1|2|as":{action_:["sb=false","output","operator"],nextState:"1"}},uprightEntities:{"0|1|2":{action_:["o=","output"],nextState:"1"}},orbital:{"0|1|2|3":{action_:"o=",nextState:"o"}},"->":{"0|1|2|3":{action_:"r=",nextState:"r"},"a|as":{action_:["output","r="],nextState:"r"},"*":{action_:["output","r="],nextState:"r"}},"+":{o:{action_:"d= kv",nextState:"d"},"d|D":{action_:"d=",nextState:"d"},q:{action_:"d=",nextState:"qd"},"qd|qD":{action_:"d=",nextState:"qd"},dq:{action_:["output","d="],nextState:"d"},3:{action_:["sb=false","output","operator"],nextState:"0"}},amount:{"0|2":{action_:"a=",nextState:"a"}},"pm-operator":{"0|1|2|a|as":{action_:["sb=false","output",{type_:"operator",option:"\\pm"}],nextState:"0"}},operator:{"0|1|2|a|as":{action_:["sb=false","output","operator"],nextState:"0"}},"-$":{"o|q":{action_:["charge or bond","output"],nextState:"qd"},d:{action_:"d=",nextState:"d"},D:{action_:["output",{type_:"bond",option:"-"}],nextState:"3"},q:{action_:"d=",nextState:"qd"},qd:{action_:"d=",nextState:"qd"},"qD|dq":{action_:["output",{type_:"bond",option:"-"}],nextState:"3"}},"-9":{"3|o":{action_:["output",{type_:"insert",option:"hyphen"}],nextState:"3"}},"- orbital overlap":{o:{action_:["output",{type_:"insert",option:"hyphen"}],nextState:"2"},d:{action_:["output",{type_:"insert",option:"hyphen"}],nextState:"2"}},"-":{"0|1|2":{action_:[{type_:"output",option:1},"beginsWithBond=true",{type_:"bond",option:"-"}],nextState:"3"},3:{action_:{type_:"bond",option:"-"}},a:{action_:["output",{type_:"insert",option:"hyphen"}],nextState:"2"},as:{action_:[{type_:"output",option:2},{type_:"bond",option:"-"}],nextState:"3"},b:{action_:"b="},o:{action_:{type_:"- after o/d",option:!1},nextState:"2"},q:{action_:{type_:"- after o/d",option:!1},nextState:"2"},"d|qd|dq":{action_:{type_:"- after o/d",option:!0},nextState:"2"},"D|qD|p":{action_:["output",{type_:"bond",option:"-"}],nextState:"3"}},amount2:{"1|3":{action_:"a=",nextState:"a"}},letters:{"0|1|2|3|a|as|b|p|bp|o":{action_:"o=",nextState:"o"},"q|dq":{action_:["output","o="],nextState:"o"},"d|D|qd|qD":{action_:"o after d",nextState:"o"}},digits:{o:{action_:"q=",nextState:"q"},"d|D":{action_:"q=",nextState:"dq"},q:{action_:["output","o="],nextState:"o"},a:{action_:"o=",nextState:"o"}},"space A":{"b|p|bp":{}},space:{a:{nextState:"as"},0:{action_:"sb=false"},"1|2":{action_:"sb=true"},"r|rt|rd|rdt|rdq":{action_:"output",nextState:"0"},"*":{action_:["output","sb=true"],nextState:"1"}},"1st-level escape":{"1|2":{action_:["output",{type_:"insert+p1",option:"1st-level escape"}]},"*":{action_:["output",{type_:"insert+p1",option:"1st-level escape"}],nextState:"0"}},"[(...)]":{"r|rt":{action_:"rd=",nextState:"rd"},"rd|rdt":{action_:"rq=",nextState:"rdq"}},"...":{"o|d|D|dq|qd|qD":{action_:["output",{type_:"bond",option:"..."}],nextState:"3"},"*":{action_:[{type_:"output",option:1},{type_:"insert",option:"ellipsis"}],nextState:"1"}},". |* ":{"*":{action_:["output",{type_:"insert",option:"addition compound"}],nextState:"1"}},"state of aggregation $":{"*":{action_:["output","state of aggregation"],nextState:"1"}},"{[(":{"a|as|o":{action_:["o=","output","parenthesisLevel++"],nextState:"2"},"0|1|2|3":{action_:["o=","output","parenthesisLevel++"],nextState:"2"},"*":{action_:["output","o=","output","parenthesisLevel++"],nextState:"2"}},")]}":{"0|1|2|3|b|p|bp|o":{action_:["o=","parenthesisLevel--"],nextState:"o"},"a|as|d|D|q|qd|qD|dq":{action_:["output","o=","parenthesisLevel--"],nextState:"o"}},", ":{"*":{action_:["output","comma"],nextState:"0"}},"^_":{"*":{}},"^{(...)}|^($...$)":{"0|1|2|as":{action_:"b=",nextState:"b"},p:{action_:"b=",nextState:"bp"},"3|o":{action_:"d= kv",nextState:"D"},q:{action_:"d=",nextState:"qD"},"d|D|qd|qD|dq":{action_:["output","d="],nextState:"D"}},"^a|^\\x{}{}|^\\x{}|^\\x|'":{"0|1|2|as":{action_:"b=",nextState:"b"},p:{action_:"b=",nextState:"bp"},"3|o":{action_:"d= kv",nextState:"d"},q:{action_:"d=",nextState:"qd"},"d|qd|D|qD":{action_:"d="},dq:{action_:["output","d="],nextState:"d"}},"_{(state of aggregation)}$":{"d|D|q|qd|qD|dq":{action_:["output","q="],nextState:"q"}},"_{(...)}|_($...$)|_9|_\\x{}{}|_\\x{}|_\\x":{"0|1|2|as":{action_:"p=",nextState:"p"},b:{action_:"p=",nextState:"bp"},"3|o":{action_:"q=",nextState:"q"},"d|D":{action_:"q=",nextState:"dq"},"q|qd|qD|dq":{action_:["output","q="],nextState:"q"}},"=<>":{"0|1|2|3|a|as|o|q|d|D|qd|qD|dq":{action_:[{type_:"output",option:2},"bond"],nextState:"3"}},"#":{"0|1|2|3|a|as|o":{action_:[{type_:"output",option:2},{type_:"bond",option:"#"}],nextState:"3"}},"{}":{"*":{action_:{type_:"output",option:1},nextState:"1"}},"{...}":{"0|1|2|3|a|as|b|p|bp":{action_:"o=",nextState:"o"},"o|d|D|q|qd|qD|dq":{action_:["output","o="],nextState:"o"}},"$...$":{a:{action_:"a="},"0|1|2|3|as|b|p|bp|o":{action_:"o=",nextState:"o"},"as|o":{action_:"o="},"q|d|D|qd|qD|dq":{action_:["output","o="],nextState:"o"}},"\\bond{(...)}":{"*":{action_:[{type_:"output",option:2},"bond"],nextState:"3"}},"\\frac{(...)}":{"*":{action_:[{type_:"output",option:1},"frac-output"],nextState:"3"}},"\\overset{(...)}":{"*":{action_:[{type_:"output",option:2},"overset-output"],nextState:"3"}},"\\underset{(...)}":{"*":{action_:[{type_:"output",option:2},"underset-output"],nextState:"3"}},"\\underbrace{(...)}":{"*":{action_:[{type_:"output",option:2},"underbrace-output"],nextState:"3"}},"\\color{(...)}{(...)}1|\\color(...){(...)}2":{"*":{action_:[{type_:"output",option:2},"color-output"],nextState:"3"}},"\\color{(...)}0":{"*":{action_:[{type_:"output",option:2},"color0-output"]}},"\\ce{(...)}":{"*":{action_:[{type_:"output",option:2},"ce"],nextState:"3"}},"\\,":{"*":{action_:[{type_:"output",option:1},"copy"],nextState:"1"}},"\\x{}{}|\\x{}|\\x":{"0|1|2|3|a|as|b|p|bp|o|c0":{action_:["o=","output"],nextState:"3"},"*":{action_:["output","o=","output"],nextState:"3"}},others:{"*":{action_:[{type_:"output",option:1},"copy"],nextState:"3"}},else2:{a:{action_:"a to o",nextState:"o",revisit:!0},as:{action_:["output","sb=true"],nextState:"1",revisit:!0},"r|rt|rd|rdt|rdq":{action_:["output"],nextState:"0",revisit:!0},"*":{action_:["output","copy"],nextState:"3"}}}),actions:{"o after d":function(t,e){var n;if((t.d||"").match(/^[0-9]+$/)){var o=t.d;t.d=void 0,n=this.output(t),t.b=o}else n=this.output(t);return a.actions["o="](t,e),n},"d= kv":function(t,e){t.d=e,t.dType="kv"},"charge or bond":function(t,e){if(t.beginsWithBond){var n=[];return a.concatArray(n,this.output(t)),a.concatArray(n,a.actions.bond(t,e,"-")),n}t.d=e},"- after o/d":function(t,e,n){var o=a.patterns.match_("orbital",t.o||""),r=a.patterns.match_("one lowercase greek letter $",t.o||""),i=a.patterns.match_("one lowercase latin letter $",t.o||""),c=a.patterns.match_("$one lowercase latin letter$ $",t.o||""),u="-"===e&&(o&&""===o.remainder||r||i||c);!u||t.a||t.b||t.p||t.d||t.q||o||!i||(t.o="$"+t.o+"$");var p=[];return u?(a.concatArray(p,this.output(t)),p.push({type_:"hyphen"})):(o=a.patterns.match_("digits",t.d||""),n&&o&&""===o.remainder?(a.concatArray(p,a.actions["d="](t,e)),a.concatArray(p,this.output(t))):(a.concatArray(p,this.output(t)),a.concatArray(p,a.actions.bond(t,e,"-")))),p},"a to o":function(t){t.o=t.a,t.a=void 0},"sb=true":function(t){t.sb=!0},"sb=false":function(t){t.sb=!1},"beginsWithBond=true":function(t){t.beginsWithBond=!0},"beginsWithBond=false":function(t){t.beginsWithBond=!1},"parenthesisLevel++":function(t){t.parenthesisLevel++},"parenthesisLevel--":function(t){t.parenthesisLevel--},"state of aggregation":function(t,e){return{type_:"state of aggregation",p1:a.go(e,"o")}},comma:function(t,e){var n=e.replace(/\s*$/,"");return n!==e&&0===t.parenthesisLevel?{type_:"comma enumeration L",p1:n}:{type_:"comma enumeration M",p1:n}},output:function(t,e,n){var o,r,i;t.r?(r="M"===t.rdt?a.go(t.rd,"tex-math"):"T"===t.rdt?[{type_:"text",p1:t.rd||""}]:a.go(t.rd),i="M"===t.rqt?a.go(t.rq,"tex-math"):"T"===t.rqt?[{type_:"text",p1:t.rq||""}]:a.go(t.rq),o={type_:"arrow",r:t.r,rd:r,rq:i}):(o=[],(t.a||t.b||t.p||t.o||t.q||t.d||n)&&(t.sb&&o.push({type_:"entitySkip"}),t.o||t.q||t.d||t.b||t.p||2===n?t.o||t.q||t.d||!t.b&&!t.p?t.o&&"kv"===t.dType&&a.patterns.match_("d-oxidation$",t.d||"")?t.dType="oxidation":t.o&&"kv"===t.dType&&!t.q&&(t.dType=void 0):(t.o=t.a,t.d=t.b,t.q=t.p,t.a=t.b=t.p=void 0):(t.o=t.a,t.a=void 0),o.push({type_:"chemfive",a:a.go(t.a,"a"),b:a.go(t.b,"bd"),p:a.go(t.p,"pq"),o:a.go(t.o,"o"),q:a.go(t.q,"pq"),d:a.go(t.d,"oxidation"===t.dType?"oxidation":"bd"),dType:t.dType})));for(var c in t)"parenthesisLevel"!==c&&"beginsWithBond"!==c&&delete t[c];return o},"oxidation-output":function(t,e){var n=["{"];return a.concatArray(n,a.go(e,"oxidation")),n.push("}"),n},"frac-output":function(t,e){return{type_:"frac-ce",p1:a.go(e[0]),p2:a.go(e[1])}},"overset-output":function(t,e){return{type_:"overset",p1:a.go(e[0]),p2:a.go(e[1])}},"underset-output":function(t,e){return{type_:"underset",p1:a.go(e[0]),p2:a.go(e[1])}},"underbrace-output":function(t,e){return{type_:"underbrace",p1:a.go(e[0]),p2:a.go(e[1])}},"color-output":function(t,e){return{type_:"color",color1:e[0],color2:a.go(e[1])}},"r=":function(t,e){t.r=e},"rdt=":function(t,e){t.rdt=e},"rd=":function(t,e){t.rd=e},"rqt=":function(t,e){t.rqt=e},"rq=":function(t,e){t.rq=e},operator:function(t,e,n){return{type_:"operator",kind_:n||e}}}},a:{transitions:a.createTransitions({empty:{"*":{}},"1/2$":{0:{action_:"1/2"}},else:{0:{nextState:"1",revisit:!0}},"$(...)$":{"*":{action_:"tex-math tight",nextState:"1"}},",":{"*":{action_:{type_:"insert",option:"commaDecimal"}}},else2:{"*":{action_:"copy"}}}),actions:{}},o:{transitions:a.createTransitions({empty:{"*":{}},"1/2$":{0:{action_:"1/2"}},else:{0:{nextState:"1",revisit:!0}},letters:{"*":{action_:"rm"}},"\\ca":{"*":{action_:{type_:"insert",option:"circa"}}},"\\x{}{}|\\x{}|\\x":{"*":{action_:"copy"}},"${(...)}$|$(...)$":{"*":{action_:"tex-math"}},"{(...)}":{"*":{action_:"{text}"}},else2:{"*":{action_:"copy"}}}),actions:{}},text:{transitions:a.createTransitions({empty:{"*":{action_:"output"}},"{...}":{"*":{action_:"text="}},"${(...)}$|$(...)$":{"*":{action_:"tex-math"}},"\\greek":{"*":{action_:["output","rm"]}},"\\,|\\x{}{}|\\x{}|\\x":{"*":{action_:["output","copy"]}},else:{"*":{action_:"text="}}}),actions:{output:function(t){if(t.text_){var e={type_:"text",p1:t.text_};for(var n in t)delete t[n];return e}}}},pq:{transitions:a.createTransitions({empty:{"*":{}},"state of aggregation $":{"*":{action_:"state of aggregation"}},i$:{0:{nextState:"!f",revisit:!0}},"(KV letters),":{0:{action_:"rm",nextState:"0"}},formula$:{0:{nextState:"f",revisit:!0}},"1/2$":{0:{action_:"1/2"}},else:{0:{nextState:"!f",revisit:!0}},"${(...)}$|$(...)$":{"*":{action_:"tex-math"}},"{(...)}":{"*":{action_:"text"}},"a-z":{f:{action_:"tex-math"}},letters:{"*":{action_:"rm"}},"-9.,9":{"*":{action_:"9,9"}},",":{"*":{action_:{type_:"insert+p1",option:"comma enumeration S"}}},"\\color{(...)}{(...)}1|\\color(...){(...)}2":{"*":{action_:"color-output"}},"\\color{(...)}0":{"*":{action_:"color0-output"}},"\\ce{(...)}":{"*":{action_:"ce"}},"\\,|\\x{}{}|\\x{}|\\x":{"*":{action_:"copy"}},else2:{"*":{action_:"copy"}}}),actions:{"state of aggregation":function(t,e){return{type_:"state of aggregation subscript",p1:a.go(e,"o")}},"color-output":function(t,e){return{type_:"color",color1:e[0],color2:a.go(e[1],"pq")}}}},bd:{transitions:a.createTransitions({empty:{"*":{}},x$:{0:{nextState:"!f",revisit:!0}},formula$:{0:{nextState:"f",revisit:!0}},else:{0:{nextState:"!f",revisit:!0}},"-9.,9 no missing 0":{"*":{action_:"9,9"}},".":{"*":{action_:{type_:"insert",option:"electron dot"}}},"a-z":{f:{action_:"tex-math"}},x:{"*":{action_:{type_:"insert",option:"KV x"}}},letters:{"*":{action_:"rm"}},"'":{"*":{action_:{type_:"insert",option:"prime"}}},"${(...)}$|$(...)$":{"*":{action_:"tex-math"}},"{(...)}":{"*":{action_:"text"}},"\\color{(...)}{(...)}1|\\color(...){(...)}2":{"*":{action_:"color-output"}},"\\color{(...)}0":{"*":{action_:"color0-output"}},"\\ce{(...)}":{"*":{action_:"ce"}},"\\,|\\x{}{}|\\x{}|\\x":{"*":{action_:"copy"}},else2:{"*":{action_:"copy"}}}),actions:{"color-output":function(t,e){return{type_:"color",color1:e[0],color2:a.go(e[1],"bd")}}}},oxidation:{transitions:a.createTransitions({empty:{"*":{}},"roman numeral":{"*":{action_:"roman-numeral"}},"${(...)}$|$(...)$":{"*":{action_:"tex-math"}},else:{"*":{action_:"copy"}}}),actions:{"roman-numeral":function(t,e){return{type_:"roman numeral",p1:e||""}}}},"tex-math":{transitions:a.createTransitions({empty:{"*":{action_:"output"}},"\\ce{(...)}":{"*":{action_:["output","ce"]}},"{...}|\\,|\\x{}{}|\\x{}|\\x":{"*":{action_:"o="}},else:{"*":{action_:"o="}}}),actions:{output:function(t){if(t.o){var e={type_:"tex-math",p1:t.o};for(var n in t)delete t[n];return e}}}},"tex-math tight":{transitions:a.createTransitions({empty:{"*":{action_:"output"}},"\\ce{(...)}":{"*":{action_:["output","ce"]}},"{...}|\\,|\\x{}{}|\\x{}|\\x":{"*":{action_:"o="}},"-|+":{"*":{action_:"tight operator"}},else:{"*":{action_:"o="}}}),actions:{"tight operator":function(t,e){t.o=(t.o||"")+"{"+e+"}"},output:function(t){if(t.o){var e={type_:"tex-math",p1:t.o};for(var n in t)delete t[n];return e}}}},"9,9":{transitions:a.createTransitions({empty:{"*":{}},",":{"*":{action_:"comma"}},else:{"*":{action_:"copy"}}}),actions:{comma:function(){return{type_:"commaDecimal"}}}},pu:{transitions:a.createTransitions({empty:{"*":{action_:"output"}},space$:{"*":{action_:["output","space"]}},"{[(|)]}":{"0|a":{action_:"copy"}},"(-)(9)^(-9)":{0:{action_:"number^",nextState:"a"}},"(-)(9.,9)(e)(99)":{0:{action_:"enumber",nextState:"a"}},space:{"0|a":{}},"pm-operator":{"0|a":{action_:{type_:"operator",option:"\\pm"},nextState:"0"}},operator:{"0|a":{action_:"copy",nextState:"0"}},"//":{d:{action_:"o=",nextState:"/"}},"/":{d:{action_:"o=",nextState:"/"}},"{...}|else":{"0|d":{action_:"d=",nextState:"d"},a:{action_:["space","d="],nextState:"d"},"/|q":{action_:"q=",nextState:"q"}}}),actions:{enumber:function(t,e){var n=[];return"+-"===e[0]||"+/-"===e[0]?n.push("\\pm "):e[0]&&n.push(e[0]),e[1]&&(a.concatArray(n,a.go(e[1],"pu-9,9")),e[2]&&(e[2].match(/[,.]/)?a.concatArray(n,a.go(e[2],"pu-9,9")):n.push(e[2])),e[3]=e[4]||e[3],e[3]&&(e[3]=e[3].trim(),"e"===e[3]||"*"===e[3].substr(0,1)?n.push({type_:"cdot"}):n.push({type_:"times"}))),e[3]&&n.push("10^{"+e[5]+"}"),n},"number^":function(t,e){var n=[];return"+-"===e[0]||"+/-"===e[0]?n.push("\\pm "):e[0]&&n.push(e[0]),a.concatArray(n,a.go(e[1],"pu-9,9")),n.push("^{"+e[2]+"}"),n},operator:function(t,e,n){return{type_:"operator",kind_:n||e}},space:function(){return{type_:"pu-space-1"}},output:function(t){var e,n=a.patterns.match_("{(...)}",t.d||"");n&&""===n.remainder&&(t.d=n.match_);var o=a.patterns.match_("{(...)}",t.q||"");if(o&&""===o.remainder&&(t.q=o.match_),t.d&&(t.d=t.d.replace(/\u00B0C|\^oC|\^{o}C/g,"{}^{\\circ}C"),t.d=t.d.replace(/\u00B0F|\^oF|\^{o}F/g,"{}^{\\circ}F")),t.q){t.q=t.q.replace(/\u00B0C|\^oC|\^{o}C/g,"{}^{\\circ}C"),t.q=t.q.replace(/\u00B0F|\^oF|\^{o}F/g,"{}^{\\circ}F");var r={d:a.go(t.d,"pu"),q:a.go(t.q,"pu")};"//"===t.o?e={type_:"pu-frac",p1:r.d,p2:r.q}:(e=r.d,r.d.length>1||r.q.length>1?e.push({type_:" / "}):e.push({type_:"/"}),a.concatArray(e,r.q))}else e=a.go(t.d,"pu-2");for(var i in t)delete t[i];return e}}},"pu-2":{transitions:a.createTransitions({empty:{"*":{action_:"output"}},"*":{"*":{action_:["output","cdot"],nextState:"0"}},"\\x":{"*":{action_:"rm="}},space:{"*":{action_:["output","space"],nextState:"0"}},"^{(...)}|^(-1)":{1:{action_:"^(-1)"}},"-9.,9":{0:{action_:"rm=",nextState:"0"},1:{action_:"^(-1)",nextState:"0"}},"{...}|else":{"*":{action_:"rm=",nextState:"1"}}}),actions:{cdot:function(){return{type_:"tight cdot"}},"^(-1)":function(t,e){t.rm+="^{"+e+"}"},space:function(){return{type_:"pu-space-2"}},output:function(t){var e=[];if(t.rm){var n=a.patterns.match_("{(...)}",t.rm||"");e=n&&""===n.remainder?a.go(n.match_,"pu"):{type_:"rm",p1:t.rm}}for(var o in t)delete t[o];return e}}},"pu-9,9":{transitions:a.createTransitions({empty:{0:{action_:"output-0"},o:{action_:"output-o"}},",":{0:{action_:["output-0","comma"],nextState:"o"}},".":{0:{action_:["output-0","copy"],nextState:"o"}},else:{"*":{action_:"text="}}}),actions:{comma:function(){return{type_:"commaDecimal"}},"output-0":function(t){var e=[];if(t.text_=t.text_||"",t.text_.length>4){var n=t.text_.length%3;0===n&&(n=3);for(var o=t.text_.length-3;o>0;o-=3)e.push(t.text_.substr(o,3)),e.push({type_:"1000 separator"});e.push(t.text_.substr(0,n)),e.reverse()}else e.push(t.text_);for(var a in t)delete t[a];return e},"output-o":function(t){var e=[];if(t.text_=t.text_||"",t.text_.length>4){for(var n=t.text_.length-3,o=0;o<n;o+=3)e.push(t.text_.substr(o,3)),e.push({type_:"1000 separator"});e.push(t.text_.substr(o))}else e.push(t.text_);for(var a in t)delete t[a];return e}}}};var r={go:function(t,e){if(!t)return"";for(var n="",o=!1,a=0;a<t.length;a++){var i=t[a];"string"==typeof i?n+=i:(n+=r._go2(i),"1st-level escape"===i.type_&&(o=!0))}return e||o||!n||(n="{"+n+"}"),n},_goInner:function(t){return t?r.go(t,!0):t},_go2:function(t){var e;switch(t.type_){case"chemfive":e="";var n={a:r._goInner(t.a),b:r._goInner(t.b),p:r._goInner(t.p),o:r._goInner(t.o),q:r._goInner(t.q),d:r._goInner(t.d)};n.a&&(n.a.match(/^[+\-]/)&&(n.a="{"+n.a+"}"),e+=n.a+"\\,"),(n.b||n.p)&&(e+="{\\vphantom{X}}",e+="^{\\hphantom{"+(n.b||"")+"}}_{\\hphantom{"+(n.p||"")+"}}",e+="{\\vphantom{X}}",e+="^{\\smash[t]{\\vphantom{2}}\\mathllap{"+(n.b||"")+"}}",e+="_{\\vphantom{2}\\mathllap{\\smash[t]{"+(n.p||"")+"}}}"),n.o&&(n.o.match(/^[+\-]/)&&(n.o="{"+n.o+"}"),e+=n.o),"kv"===t.dType?((n.d||n.q)&&(e+="{\\vphantom{X}}"),n.d&&(e+="^{"+n.d+"}"),n.q&&(e+="_{\\smash[t]{"+n.q+"}}")):"oxidation"===t.dType?(n.d&&(e+="{\\vphantom{X}}",e+="^{"+n.d+"}"),n.q&&(e+="{\\vphantom{X}}",e+="_{\\smash[t]{"+n.q+"}}")):(n.q&&(e+="{\\vphantom{X}}",e+="_{\\smash[t]{"+n.q+"}}"),n.d&&(e+="{\\vphantom{X}}",e+="^{"+n.d+"}"));break;case"rm":e="\\mathrm{"+t.p1+"}";break;case"text":t.p1.match(/[\^_]/)?(t.p1=t.p1.replace(" ","~").replace("-","\\text{-}"),e="\\mathrm{"+t.p1+"}"):e="\\text{"+t.p1+"}";break;case"roman numeral":e="\\mathrm{"+t.p1+"}";break;case"state of aggregation":e="\\mskip2mu "+r._goInner(t.p1);break;case"state of aggregation subscript":e="\\mskip1mu "+r._goInner(t.p1);break;case"bond":if(!(e=r._getBond(t.kind_)))throw["MhchemErrorBond","mhchem Error. Unknown bond type ("+t.kind_+")"];break;case"frac":var o="\\frac{"+t.p1+"}{"+t.p2+"}";e="\\mathchoice{\\textstyle"+o+"}{"+o+"}{"+o+"}{"+o+"}";break;case"pu-frac":var a="\\frac{"+r._goInner(t.p1)+"}{"+r._goInner(t.p2)+"}";e="\\mathchoice{\\textstyle"+a+"}{"+a+"}{"+a+"}{"+a+"}";break;case"tex-math":e=t.p1+" ";break;case"frac-ce":e="\\frac{"+r._goInner(t.p1)+"}{"+r._goInner(t.p2)+"}";break;case"overset":e="\\overset{"+r._goInner(t.p1)+"}{"+r._goInner(t.p2)+"}";break;case"underset":e="\\underset{"+r._goInner(t.p1)+"}{"+r._goInner(t.p2)+"}";break;case"underbrace":e="\\underbrace{"+r._goInner(t.p1)+"}_{"+r._goInner(t.p2)+"}";break;case"color":e="{\\color{"+t.color1+"}{"+r._goInner(t.color2)+"}}";break;case"color0":e="\\color{"+t.color+"}";break;case"arrow":var i={rd:r._goInner(t.rd),rq:r._goInner(t.rq)},c="\\x"+r._getArrow(t.r);i.rq&&(c+="[{"+i.rq+"}]"),e=c+=i.rd?"{"+i.rd+"}":"{}";break;case"operator":e=r._getOperator(t.kind_);break;case"1st-level escape":e=t.p1+" ";break;case"space":e=" ";break;case"entitySkip":case"pu-space-1":e="~";break;case"pu-space-2":e="\\mkern3mu ";break;case"1000 separator":e="\\mkern2mu ";break;case"commaDecimal":e="{,}";break;case"comma enumeration L":e="{"+t.p1+"}\\mkern6mu ";break;case"comma enumeration M":e="{"+t.p1+"}\\mkern3mu ";break;case"comma enumeration S":e="{"+t.p1+"}\\mkern1mu ";break;case"hyphen":e="\\text{-}";break;case"addition compound":e="\\,{\\cdot}\\,";break;case"electron dot":e="\\mkern1mu \\bullet\\mkern1mu ";break;case"KV x":e="{\\times}";break;case"prime":e="\\prime ";break;case"cdot":e="\\cdot ";break;case"tight cdot":e="\\mkern1mu{\\cdot}\\mkern1mu ";break;case"times":e="\\times ";break;case"circa":e="{\\sim}";break;case"^":e="uparrow";break;case"v":e="downarrow";break;case"ellipsis":e="\\ldots ";break;case"/":e="/";break;case" / ":e="\\,/\\,";break;default:throw["MhchemBugT","mhchem bug T. Please report."]}return e},_getArrow:function(t){switch(t){case"->":case"\u2192":case"\u27f6":return"rightarrow";case"<-":return"leftarrow";case"<->":return"leftrightarrow";case"<--\x3e":return"rightleftarrows";case"<=>":case"\u21cc":return"rightleftharpoons";case"<=>>":return"rightequilibrium";case"<<=>":return"leftequilibrium";default:throw["MhchemBugT","mhchem bug T. Please report."]}},_getBond:function(t){switch(t){case"-":case"1":return"{-}";case"=":case"2":return"{=}";case"#":case"3":return"{\\equiv}";case"~":return"{\\tripledash}";case"~-":return"{\\mathrlap{\\raisebox{-.1em}{$-$}}\\raisebox{.1em}{$\\tripledash$}}";case"~=":case"~--":return"{\\mathrlap{\\raisebox{-.2em}{$-$}}\\mathrlap{\\raisebox{.2em}{$\\tripledash$}}-}";case"-~-":return"{\\mathrlap{\\raisebox{-.2em}{$-$}}\\mathrlap{\\raisebox{.2em}{$-$}}\\tripledash}";case"...":return"{{\\cdot}{\\cdot}{\\cdot}}";case"....":return"{{\\cdot}{\\cdot}{\\cdot}{\\cdot}}";case"->":return"{\\rightarrow}";case"<-":return"{\\leftarrow}";case"<":return"{<}";case">":return"{>}";default:throw["MhchemBugT","mhchem bug T. Please report."]}},_getOperator:function(t){switch(t){case"+":return" {}+{} ";case"-":return" {}-{} ";case"=":return" {}={} ";case"<":return" {}<{} ";case">":return" {}>{} ";case"<<":return" {}\\ll{} ";case">>":return" {}\\gg{} ";case"\\pm":return" {}\\pm{} ";case"\\approx":case"$\\approx$":return" {}\\approx{} ";case"v":case"(v)":return" \\downarrow{} ";case"^":case"(^)":return" \\uparrow{} ";default:throw["MhchemBugT","mhchem bug T. Please report."]}}}}(),a=a.default}()})); \ No newline at end of file
diff --git a/assets/lib/lazysizes/lazysizes.min.js b/assets/lib/lazysizes/lazysizes.min.js
index ca34f126..25af0c68 100755
--- a/assets/lib/lazysizes/lazysizes.min.js
+++ b/assets/lib/lazysizes/lazysizes.min.js
@@ -1,3 +1,3 @@
-/*! lazysizes - v5.2.2 */
+/*! lazysizes - v5.3.1 */
-!function(e){var t=function(u,D,f){"use strict";var k,H;if(function(){var e;var t={lazyClass:"lazyload",loadedClass:"lazyloaded",loadingClass:"lazyloading",preloadClass:"lazypreload",errorClass:"lazyerror",autosizesClass:"lazyautosizes",srcAttr:"data-src",srcsetAttr:"data-srcset",sizesAttr:"data-sizes",minSize:40,customMedia:{},init:true,expFactor:1.5,hFac:.8,loadMode:2,loadHidden:true,ricTimeout:0,throttleDelay:125};H=u.lazySizesConfig||u.lazysizesConfig||{};for(e in t){if(!(e in H)){H[e]=t[e]}}}(),!D||!D.getElementsByClassName){return{init:function(){},cfg:H,noSupport:true}}var O=D.documentElement,a=u.HTMLPictureElement,P="addEventListener",$="getAttribute",q=u[P].bind(u),I=u.setTimeout,U=u.requestAnimationFrame||I,l=u.requestIdleCallback,j=/^picture$/i,r=["load","error","lazyincluded","_lazyloaded"],i={},G=Array.prototype.forEach,J=function(e,t){if(!i[t]){i[t]=new RegExp("(\\s|^)"+t+"(\\s|$)")}return i[t].test(e[$]("class")||"")&&i[t]},K=function(e,t){if(!J(e,t)){e.setAttribute("class",(e[$]("class")||"").trim()+" "+t)}},Q=function(e,t){var i;if(i=J(e,t)){e.setAttribute("class",(e[$]("class")||"").replace(i," "))}},V=function(t,i,e){var a=e?P:"removeEventListener";if(e){V(t,i)}r.forEach(function(e){t[a](e,i)})},X=function(e,t,i,a,r){var n=D.createEvent("Event");if(!i){i={}}i.instance=k;n.initEvent(t,!a,!r);n.detail=i;e.dispatchEvent(n);return n},Y=function(e,t){var i;if(!a&&(i=u.picturefill||H.pf)){if(t&&t.src&&!e[$]("srcset")){e.setAttribute("srcset",t.src)}i({reevaluate:true,elements:[e]})}else if(t&&t.src){e.src=t.src}},Z=function(e,t){return(getComputedStyle(e,null)||{})[t]},s=function(e,t,i){i=i||e.offsetWidth;while(i<H.minSize&&t&&!e._lazysizesWidth){i=t.offsetWidth;t=t.parentNode}return i},ee=function(){var i,a;var t=[];var r=[];var n=t;var s=function(){var e=n;n=t.length?r:t;i=true;a=false;while(e.length){e.shift()()}i=false};var e=function(e,t){if(i&&!t){e.apply(this,arguments)}else{n.push(e);if(!a){a=true;(D.hidden?I:U)(s)}}};e._lsFlush=s;return e}(),te=function(i,e){return e?function(){ee(i)}:function(){var e=this;var t=arguments;ee(function(){i.apply(e,t)})}},ie=function(e){var i;var a=0;var r=H.throttleDelay;var n=H.ricTimeout;var t=function(){i=false;a=f.now();e()};var s=l&&n>49?function(){l(t,{timeout:n});if(n!==H.ricTimeout){n=H.ricTimeout}}:te(function(){I(t)},true);return function(e){var t;if(e=e===true){n=33}if(i){return}i=true;t=r-(f.now()-a);if(t<0){t=0}if(e||t<9){s()}else{I(s,t)}}},ae=function(e){var t,i;var a=99;var r=function(){t=null;e()};var n=function(){var e=f.now()-i;if(e<a){I(n,a-e)}else{(l||r)(r)}};return function(){i=f.now();if(!t){t=I(n,a)}}},e=function(){var v,m,c,h,e;var y,z,g,p,C,b,A;var n=/^img$/i;var d=/^iframe$/i;var E="onscroll"in u&&!/(gle|ing)bot/.test(navigator.userAgent);var _=0;var w=0;var N=0;var M=-1;var x=function(e){N--;if(!e||N<0||!e.target){N=0}};var W=function(e){if(A==null){A=Z(D.body,"visibility")=="hidden"}return A||!(Z(e.parentNode,"visibility")=="hidden"&&Z(e,"visibility")=="hidden")};var S=function(e,t){var i;var a=e;var r=W(e);g-=t;b+=t;p-=t;C+=t;while(r&&(a=a.offsetParent)&&a!=D.body&&a!=O){r=(Z(a,"opacity")||1)>0;if(r&&Z(a,"overflow")!="visible"){i=a.getBoundingClientRect();r=C>i.left&&p<i.right&&b>i.top-1&&g<i.bottom+1}}return r};var t=function(){var e,t,i,a,r,n,s,l,o,u,f,c;var d=k.elements;if((h=H.loadMode)&&N<8&&(e=d.length)){t=0;M++;for(;t<e;t++){if(!d[t]||d[t]._lazyRace){continue}if(!E||k.prematureUnveil&&k.prematureUnveil(d[t])){R(d[t]);continue}if(!(l=d[t][$]("data-expand"))||!(n=l*1)){n=w}if(!u){u=!H.expand||H.expand<1?O.clientHeight>500&&O.clientWidth>500?500:370:H.expand;k._defEx=u;f=u*H.expFactor;c=H.hFac;A=null;if(w<f&&N<1&&M>2&&h>2&&!D.hidden){w=f;M=0}else if(h>1&&M>1&&N<6){w=u}else{w=_}}if(o!==n){y=innerWidth+n*c;z=innerHeight+n;s=n*-1;o=n}i=d[t].getBoundingClientRect();if((b=i.bottom)>=s&&(g=i.top)<=z&&(C=i.right)>=s*c&&(p=i.left)<=y&&(b||C||p||g)&&(H.loadHidden||W(d[t]))&&(m&&N<3&&!l&&(h<3||M<4)||S(d[t],n))){R(d[t]);r=true;if(N>9){break}}else if(!r&&m&&!a&&N<4&&M<4&&h>2&&(v[0]||H.preloadAfterLoad)&&(v[0]||!l&&(b||C||p||g||d[t][$](H.sizesAttr)!="auto"))){a=v[0]||d[t]}}if(a&&!r){R(a)}}};var i=ie(t);var B=function(e){var t=e.target;if(t._lazyCache){delete t._lazyCache;return}x(e);K(t,H.loadedClass);Q(t,H.loadingClass);V(t,L);X(t,"lazyloaded")};var a=te(B);var L=function(e){a({target:e.target})};var T=function(t,i){try{t.contentWindow.location.replace(i)}catch(e){t.src=i}};var F=function(e){var t;var i=e[$](H.srcsetAttr);if(t=H.customMedia[e[$]("data-media")||e[$]("media")]){e.setAttribute("media",t)}if(i){e.setAttribute("srcset",i)}};var s=te(function(t,e,i,a,r){var n,s,l,o,u,f;if(!(u=X(t,"lazybeforeunveil",e)).defaultPrevented){if(a){if(i){K(t,H.autosizesClass)}else{t.setAttribute("sizes",a)}}s=t[$](H.srcsetAttr);n=t[$](H.srcAttr);if(r){l=t.parentNode;o=l&&j.test(l.nodeName||"")}f=e.firesLoad||"src"in t&&(s||n||o);u={target:t};K(t,H.loadingClass);if(f){clearTimeout(c);c=I(x,2500);V(t,L,true)}if(o){G.call(l.getElementsByTagName("source"),F)}if(s){t.setAttribute("srcset",s)}else if(n&&!o){if(d.test(t.nodeName)){T(t,n)}else{t.src=n}}if(r&&(s||o)){Y(t,{src:n})}}if(t._lazyRace){delete t._lazyRace}Q(t,H.lazyClass);ee(function(){var e=t.complete&&t.naturalWidth>1;if(!f||e){if(e){K(t,"ls-is-cached")}B(u);t._lazyCache=true;I(function(){if("_lazyCache"in t){delete t._lazyCache}},9)}if(t.loading=="lazy"){N--}},true)});var R=function(e){if(e._lazyRace){return}var t;var i=n.test(e.nodeName);var a=i&&(e[$](H.sizesAttr)||e[$]("sizes"));var r=a=="auto";if((r||!m)&&i&&(e[$]("src")||e.srcset)&&!e.complete&&!J(e,H.errorClass)&&J(e,H.lazyClass)){return}t=X(e,"lazyunveilread").detail;if(r){re.updateElem(e,true,e.offsetWidth)}e._lazyRace=true;N++;s(e,t,r,a,i)};var r=ae(function(){H.loadMode=3;i()});var l=function(){if(H.loadMode==3){H.loadMode=2}r()};var o=function(){if(m){return}if(f.now()-e<999){I(o,999);return}m=true;H.loadMode=3;i();q("scroll",l,true)};return{_:function(){e=f.now();k.elements=D.getElementsByClassName(H.lazyClass);v=D.getElementsByClassName(H.lazyClass+" "+H.preloadClass);q("scroll",i,true);q("resize",i,true);q("pageshow",function(e){if(e.persisted){var t=D.querySelectorAll("."+H.loadingClass);if(t.length&&t.forEach){U(function(){t.forEach(function(e){if(e.complete){R(e)}})})}}});if(u.MutationObserver){new MutationObserver(i).observe(O,{childList:true,subtree:true,attributes:true})}else{O[P]("DOMNodeInserted",i,true);O[P]("DOMAttrModified",i,true);setInterval(i,999)}q("hashchange",i,true);["focus","mouseover","click","load","transitionend","animationend"].forEach(function(e){D[P](e,i,true)});if(/d$|^c/.test(D.readyState)){o()}else{q("load",o);D[P]("DOMContentLoaded",i);I(o,2e4)}if(k.elements.length){t();ee._lsFlush()}else{i()}},checkElems:i,unveil:R,_aLSL:l}}(),re=function(){var i;var n=te(function(e,t,i,a){var r,n,s;e._lazysizesWidth=a;a+="px";e.setAttribute("sizes",a);if(j.test(t.nodeName||"")){r=t.getElementsByTagName("source");for(n=0,s=r.length;n<s;n++){r[n].setAttribute("sizes",a)}}if(!i.detail.dataAttr){Y(e,i.detail)}});var a=function(e,t,i){var a;var r=e.parentNode;if(r){i=s(e,r,i);a=X(e,"lazybeforesizes",{width:i,dataAttr:!!t});if(!a.defaultPrevented){i=a.detail.width;if(i&&i!==e._lazysizesWidth){n(e,r,a,i)}}}};var e=function(){var e;var t=i.length;if(t){e=0;for(;e<t;e++){a(i[e])}}};var t=ae(e);return{_:function(){i=D.getElementsByClassName(H.autosizesClass);q("resize",t)},checkElems:t,updateElem:a}}(),t=function(){if(!t.i&&D.getElementsByClassName){t.i=true;re._();e._()}};return I(function(){H.init&&t()}),k={cfg:H,autoSizer:re,loader:e,init:t,uP:Y,aC:K,rC:Q,hC:J,fire:X,gW:s,rAF:ee}}(e,e.document,Date);e.lazySizes=t,"object"==typeof module&&module.exports&&(module.exports=t)}("undefined"!=typeof window?window:{}); \ No newline at end of file
+!function(e){var t=function(u,D,f){"use strict";var k,H;if(function(){var e;var t={lazyClass:"lazyload",loadedClass:"lazyloaded",loadingClass:"lazyloading",preloadClass:"lazypreload",errorClass:"lazyerror",autosizesClass:"lazyautosizes",fastLoadedClass:"ls-is-cached",iframeLoadMode:0,srcAttr:"data-src",srcsetAttr:"data-srcset",sizesAttr:"data-sizes",minSize:40,customMedia:{},init:true,expFactor:1.5,hFac:.8,loadMode:2,loadHidden:true,ricTimeout:0,throttleDelay:125};H=u.lazySizesConfig||u.lazysizesConfig||{};for(e in t){if(!(e in H)){H[e]=t[e]}}}(),!D||!D.getElementsByClassName){return{init:function(){},cfg:H,noSupport:true}}var O=D.documentElement,i=u.HTMLPictureElement,P="addEventListener",$="getAttribute",q=u[P].bind(u),I=u.setTimeout,U=u.requestAnimationFrame||I,o=u.requestIdleCallback,j=/^picture$/i,r=["load","error","lazyincluded","_lazyloaded"],a={},G=Array.prototype.forEach,J=function(e,t){if(!a[t]){a[t]=new RegExp("(\\s|^)"+t+"(\\s|$)")}return a[t].test(e[$]("class")||"")&&a[t]},K=function(e,t){if(!J(e,t)){e.setAttribute("class",(e[$]("class")||"").trim()+" "+t)}},Q=function(e,t){var a;if(a=J(e,t)){e.setAttribute("class",(e[$]("class")||"").replace(a," "))}},V=function(t,a,e){var i=e?P:"removeEventListener";if(e){V(t,a)}r.forEach(function(e){t[i](e,a)})},X=function(e,t,a,i,r){var n=D.createEvent("Event");if(!a){a={}}a.instance=k;n.initEvent(t,!i,!r);n.detail=a;e.dispatchEvent(n);return n},Y=function(e,t){var a;if(!i&&(a=u.picturefill||H.pf)){if(t&&t.src&&!e[$]("srcset")){e.setAttribute("srcset",t.src)}a({reevaluate:true,elements:[e]})}else if(t&&t.src){e.src=t.src}},Z=function(e,t){return(getComputedStyle(e,null)||{})[t]},s=function(e,t,a){a=a||e.offsetWidth;while(a<H.minSize&&t&&!e._lazysizesWidth){a=t.offsetWidth;t=t.parentNode}return a},ee=function(){var a,i;var t=[];var r=[];var n=t;var s=function(){var e=n;n=t.length?r:t;a=true;i=false;while(e.length){e.shift()()}a=false};var e=function(e,t){if(a&&!t){e.apply(this,arguments)}else{n.push(e);if(!i){i=true;(D.hidden?I:U)(s)}}};e._lsFlush=s;return e}(),te=function(a,e){return e?function(){ee(a)}:function(){var e=this;var t=arguments;ee(function(){a.apply(e,t)})}},ae=function(e){var a;var i=0;var r=H.throttleDelay;var n=H.ricTimeout;var t=function(){a=false;i=f.now();e()};var s=o&&n>49?function(){o(t,{timeout:n});if(n!==H.ricTimeout){n=H.ricTimeout}}:te(function(){I(t)},true);return function(e){var t;if(e=e===true){n=33}if(a){return}a=true;t=r-(f.now()-i);if(t<0){t=0}if(e||t<9){s()}else{I(s,t)}}},ie=function(e){var t,a;var i=99;var r=function(){t=null;e()};var n=function(){var e=f.now()-a;if(e<i){I(n,i-e)}else{(o||r)(r)}};return function(){a=f.now();if(!t){t=I(n,i)}}},e=function(){var v,m,c,h,e;var y,z,g,p,C,b,A;var n=/^img$/i;var d=/^iframe$/i;var E="onscroll"in u&&!/(gle|ing)bot/.test(navigator.userAgent);var _=0;var w=0;var M=0;var N=-1;var L=function(e){M--;if(!e||M<0||!e.target){M=0}};var x=function(e){if(A==null){A=Z(D.body,"visibility")=="hidden"}return A||!(Z(e.parentNode,"visibility")=="hidden"&&Z(e,"visibility")=="hidden")};var W=function(e,t){var a;var i=e;var r=x(e);g-=t;b+=t;p-=t;C+=t;while(r&&(i=i.offsetParent)&&i!=D.body&&i!=O){r=(Z(i,"opacity")||1)>0;if(r&&Z(i,"overflow")!="visible"){a=i.getBoundingClientRect();r=C>a.left&&p<a.right&&b>a.top-1&&g<a.bottom+1}}return r};var t=function(){var e,t,a,i,r,n,s,o,l,u,f,c;var d=k.elements;if((h=H.loadMode)&&M<8&&(e=d.length)){t=0;N++;for(;t<e;t++){if(!d[t]||d[t]._lazyRace){continue}if(!E||k.prematureUnveil&&k.prematureUnveil(d[t])){R(d[t]);continue}if(!(o=d[t][$]("data-expand"))||!(n=o*1)){n=w}if(!u){u=!H.expand||H.expand<1?O.clientHeight>500&&O.clientWidth>500?500:370:H.expand;k._defEx=u;f=u*H.expFactor;c=H.hFac;A=null;if(w<f&&M<1&&N>2&&h>2&&!D.hidden){w=f;N=0}else if(h>1&&N>1&&M<6){w=u}else{w=_}}if(l!==n){y=innerWidth+n*c;z=innerHeight+n;s=n*-1;l=n}a=d[t].getBoundingClientRect();if((b=a.bottom)>=s&&(g=a.top)<=z&&(C=a.right)>=s*c&&(p=a.left)<=y&&(b||C||p||g)&&(H.loadHidden||x(d[t]))&&(m&&M<3&&!o&&(h<3||N<4)||W(d[t],n))){R(d[t]);r=true;if(M>9){break}}else if(!r&&m&&!i&&M<4&&N<4&&h>2&&(v[0]||H.preloadAfterLoad)&&(v[0]||!o&&(b||C||p||g||d[t][$](H.sizesAttr)!="auto"))){i=v[0]||d[t]}}if(i&&!r){R(i)}}};var a=ae(t);var S=function(e){var t=e.target;if(t._lazyCache){delete t._lazyCache;return}L(e);K(t,H.loadedClass);Q(t,H.loadingClass);V(t,B);X(t,"lazyloaded")};var i=te(S);var B=function(e){i({target:e.target})};var T=function(e,t){var a=e.getAttribute("data-load-mode")||H.iframeLoadMode;if(a==0){e.contentWindow.location.replace(t)}else if(a==1){e.src=t}};var F=function(e){var t;var a=e[$](H.srcsetAttr);if(t=H.customMedia[e[$]("data-media")||e[$]("media")]){e.setAttribute("media",t)}if(a){e.setAttribute("srcset",a)}};var s=te(function(t,e,a,i,r){var n,s,o,l,u,f;if(!(u=X(t,"lazybeforeunveil",e)).defaultPrevented){if(i){if(a){K(t,H.autosizesClass)}else{t.setAttribute("sizes",i)}}s=t[$](H.srcsetAttr);n=t[$](H.srcAttr);if(r){o=t.parentNode;l=o&&j.test(o.nodeName||"")}f=e.firesLoad||"src"in t&&(s||n||l);u={target:t};K(t,H.loadingClass);if(f){clearTimeout(c);c=I(L,2500);V(t,B,true)}if(l){G.call(o.getElementsByTagName("source"),F)}if(s){t.setAttribute("srcset",s)}else if(n&&!l){if(d.test(t.nodeName)){T(t,n)}else{t.src=n}}if(r&&(s||l)){Y(t,{src:n})}}if(t._lazyRace){delete t._lazyRace}Q(t,H.lazyClass);ee(function(){var e=t.complete&&t.naturalWidth>1;if(!f||e){if(e){K(t,H.fastLoadedClass)}S(u);t._lazyCache=true;I(function(){if("_lazyCache"in t){delete t._lazyCache}},9)}if(t.loading=="lazy"){M--}},true)});var R=function(e){if(e._lazyRace){return}var t;var a=n.test(e.nodeName);var i=a&&(e[$](H.sizesAttr)||e[$]("sizes"));var r=i=="auto";if((r||!m)&&a&&(e[$]("src")||e.srcset)&&!e.complete&&!J(e,H.errorClass)&&J(e,H.lazyClass)){return}t=X(e,"lazyunveilread").detail;if(r){re.updateElem(e,true,e.offsetWidth)}e._lazyRace=true;M++;s(e,t,r,i,a)};var r=ie(function(){H.loadMode=3;a()});var o=function(){if(H.loadMode==3){H.loadMode=2}r()};var l=function(){if(m){return}if(f.now()-e<999){I(l,999);return}m=true;H.loadMode=3;a();q("scroll",o,true)};return{_:function(){e=f.now();k.elements=D.getElementsByClassName(H.lazyClass);v=D.getElementsByClassName(H.lazyClass+" "+H.preloadClass);q("scroll",a,true);q("resize",a,true);q("pageshow",function(e){if(e.persisted){var t=D.querySelectorAll("."+H.loadingClass);if(t.length&&t.forEach){U(function(){t.forEach(function(e){if(e.complete){R(e)}})})}}});if(u.MutationObserver){new MutationObserver(a).observe(O,{childList:true,subtree:true,attributes:true})}else{O[P]("DOMNodeInserted",a,true);O[P]("DOMAttrModified",a,true);setInterval(a,999)}q("hashchange",a,true);["focus","mouseover","click","load","transitionend","animationend"].forEach(function(e){D[P](e,a,true)});if(/d$|^c/.test(D.readyState)){l()}else{q("load",l);D[P]("DOMContentLoaded",a);I(l,2e4)}if(k.elements.length){t();ee._lsFlush()}else{a()}},checkElems:a,unveil:R,_aLSL:o}}(),re=function(){var a;var n=te(function(e,t,a,i){var r,n,s;e._lazysizesWidth=i;i+="px";e.setAttribute("sizes",i);if(j.test(t.nodeName||"")){r=t.getElementsByTagName("source");for(n=0,s=r.length;n<s;n++){r[n].setAttribute("sizes",i)}}if(!a.detail.dataAttr){Y(e,a.detail)}});var i=function(e,t,a){var i;var r=e.parentNode;if(r){a=s(e,r,a);i=X(e,"lazybeforesizes",{width:a,dataAttr:!!t});if(!i.defaultPrevented){a=i.detail.width;if(a&&a!==e._lazysizesWidth){n(e,r,i,a)}}}};var e=function(){var e;var t=a.length;if(t){e=0;for(;e<t;e++){i(a[e])}}};var t=ie(e);return{_:function(){a=D.getElementsByClassName(H.autosizesClass);q("resize",t)},checkElems:t,updateElem:i}}(),t=function(){if(!t.i&&D.getElementsByClassName){t.i=true;re._();e._()}};return I(function(){H.init&&t()}),k={cfg:H,autoSizer:re,loader:e,init:t,uP:Y,aC:K,rC:Q,hC:J,fire:X,gW:s,rAF:ee}}(e,e.document,Date);e.lazySizes=t,"object"==typeof module&&module.exports&&(module.exports=t)}("undefined"!=typeof window?window:{}); \ No newline at end of file
diff --git a/assets/lib/lightgallery/lg-thumbnail.min.js b/assets/lib/lightgallery/lg-thumbnail.min.js
deleted file mode 100644
index 7cf73948..00000000
--- a/assets/lib/lightgallery/lg-thumbnail.min.js
+++ /dev/null
@@ -1,7 +0,0 @@
-/**!
- * lg-thumbnail.js | 1.2.0 | May 20th 2020
- * http://sachinchoolur.github.io/lg-thumbnail.js
- * Copyright (c) 2016 Sachin N;
- * @license GPLv3
- */
-!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var e;e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,e.LgThumbnail=t()}}(function(){var t,e,i;return function(){function t(e,i,o){function u(s,l){if(!i[s]){if(!e[s]){var h="function"==typeof require&&require;if(!l&&h)return h(s,!0);if(r)return r(s,!0);var n=new Error("Cannot find module '"+s+"'");throw n.code="MODULE_NOT_FOUND",n}var a=i[s]={exports:{}};e[s][0].call(a.exports,function(t){return u(e[s][1][t]||t)},a,a.exports,t,e,i,o)}return i[s].exports}for(var r="function"==typeof require&&require,s=0;s<o.length;s++)u(o[s]);return u}return t}()({1:[function(e,i,o){!function(e,i){if("function"==typeof t&&t.amd)t([],i);else if(void 0!==o)i();else{var u={exports:{}};i(),e.lgThumbnail=u.exports}}(this,function(){"use strict";var t=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var i=arguments[e];for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(t[o]=i[o])}return t},e={thumbnail:!0,animateThumb:!0,currentPagerPosition:"middle",thumbWidth:100,thumbContHeight:100,thumbMargin:5,exThumbImage:!1,showThumbByDefault:!0,toggleThumb:!0,pullCaptionUp:!0,enableThumbDrag:!0,enableThumbSwipe:!0,swipeThreshold:50,loadYoutubeThumbnail:!0,youtubeThumbSize:1,loadVimeoThumbnail:!0,vimeoThumbSize:"thumbnail_small",loadDailymotionThumbnail:!0},i=function i(o){return this.el=o,this.core=window.lgData[this.el.getAttribute("lg-uid")],this.core.s=t({},e,this.core.s),this.thumbOuter=null,this.thumbOuterWidth=0,this.thumbTotalWidth=this.core.items.length*(this.core.s.thumbWidth+this.core.s.thumbMargin),this.thumbIndex=this.core.index,this.left=0,this.init(),this};i.prototype.init=function(){var t=this;this.core.s.thumbnail&&this.core.items.length>1&&(this.core.s.showThumbByDefault&&setTimeout(function(){utils.addClass(t.core.outer,"lg-thumb-open")},700),this.core.s.pullCaptionUp&&utils.addClass(this.core.outer,"lg-pull-caption-up"),this.build(),this.core.s.animateThumb?(this.core.s.enableThumbDrag&&!this.core.isTouch&&this.core.doCss()&&this.enableThumbDrag(),this.core.s.enableThumbSwipe&&this.core.isTouch&&this.core.doCss()&&this.enableThumbSwipe(),this.thumbClickable=!1):this.thumbClickable=!0,this.toggle(),this.thumbkeyPress())},i.prototype.build=function(){function t(t,u,r){var s=e.core.isVideo(t,r)||{},l,h="";s.youtube||s.vimeo||s.dailymotion?s.youtube?l=e.core.s.loadYoutubeThumbnail?"//img.youtube.com/vi/"+s.youtube[1]+"/"+e.core.s.youtubeThumbSize+".jpg":u:s.vimeo?e.core.s.loadVimeoThumbnail?(l="//i.vimeocdn.com/video/error_"+o+".jpg",h=s.vimeo[1]):l=u:s.dailymotion&&(l=e.core.s.loadDailymotionThumbnail?"//www.dailymotion.com/thumbnail/video/"+s.dailymotion[1]:u):l=u,i+='<div data-vimeo-id="'+h+'" class="lg-thumb-item" style="width:'+e.core.s.thumbWidth+"px; margin-right: "+e.core.s.thumbMargin+'px"><img src="'+l+'" /></div>',h=""}var e=this,i="",o="",u,r='<div class="lg-thumb-outer"><div class="lg-thumb group"></div></div>';switch(this.core.s.vimeoThumbSize){case"thumbnail_large":o="640";break;case"thumbnail_medium":o="200x150";break;case"thumbnail_small":o="100x75"}if(utils.addClass(e.core.outer,"lg-has-thumb"),e.core.outer.querySelector(".lg").insertAdjacentHTML("beforeend",r),e.thumbOuter=e.core.outer.querySelector(".lg-thumb-outer"),e.thumbOuterWidth=e.thumbOuter.offsetWidth,e.core.s.animateThumb&&(e.core.outer.querySelector(".lg-thumb").style.width=e.thumbTotalWidth+"px",e.core.outer.querySelector(".lg-thumb").style.position="relative"),this.core.s.animateThumb&&(e.thumbOuter.style.height=e.core.s.thumbContHeight+"px"),e.core.s.dynamic)for(var s=0;s<e.core.s.dynamicEl.length;s++)t(e.core.s.dynamicEl[s].src,e.core.s.dynamicEl[s].thumb,s);else for(var l=0;l<e.core.items.length;l++)e.core.s.exThumbImage?t(e.core.items[l].getAttribute("href")||e.core.items[l].getAttribute("data-src"),e.core.items[l].getAttribute(e.core.s.exThumbImage),l):t(e.core.items[l].getAttribute("href")||e.core.items[l].getAttribute("data-src"),e.core.items[l].querySelector("img").getAttribute("src"),l);e.core.outer.querySelector(".lg-thumb").innerHTML=i,u=e.core.outer.querySelectorAll(".lg-thumb-item");for(var h=0;h<u.length;h++)!function(t){var i=u[t],o=i.getAttribute("data-vimeo-id");if(o){window["lgJsonP"+e.el.getAttribute("lg-uid")+h]=function(t){i.querySelector("img").setAttribute("src",t[0][e.core.s.vimeoThumbSize])};var r=document.createElement("script");r.className="lg-script",r.src="//www.vimeo.com/api/v2/video/"+o+".json?callback=lgJsonP"+e.el.getAttribute("lg-uid")+h,document.body.appendChild(r)}}(h);utils.addClass(u[e.core.index],"active"),utils.on(e.core.el,"onBeforeSlide.lgtm",function(){for(var t=0;t<u.length;t++)utils.removeClass(u[t],"active");utils.addClass(u[e.core.index],"active")});for(var n=0;n<u.length;n++)!function(t){utils.on(u[t],"click.lg touchend.lg",function(){setTimeout(function(){(e.thumbClickable&&!e.core.lgBusy||!e.core.doCss())&&(e.core.index=t,e.core.slide(e.core.index,!1,!0))},50)})}(n);utils.on(e.core.el,"onBeforeSlide.lgtm",function(){e.animateThumb(e.core.index)}),utils.on(window,"resize.lgthumb orientationchange.lgthumb",function(){setTimeout(function(){e.animateThumb(e.core.index),e.thumbOuterWidth=e.thumbOuter.offsetWidth},200)})},i.prototype.setTranslate=function(t){utils.setVendor(this.core.outer.querySelector(".lg-thumb"),"Transform","translate3d(-"+t+"px, 0px, 0px)")},i.prototype.animateThumb=function(t){var e=this.core.outer.querySelector(".lg-thumb");if(this.core.s.animateThumb){var i;switch(this.core.s.currentPagerPosition){case"left":i=0;break;case"middle":i=this.thumbOuterWidth/2-this.core.s.thumbWidth/2;break;case"right":i=this.thumbOuterWidth-this.core.s.thumbWidth}this.left=(this.core.s.thumbWidth+this.core.s.thumbMargin)*t-1-i,this.left>this.thumbTotalWidth-this.thumbOuterWidth&&(this.left=this.thumbTotalWidth-this.thumbOuterWidth),this.left<0&&(this.left=0),this.core.lGalleryOn?(utils.hasClass(e,"on")||utils.setVendor(this.core.outer.querySelector(".lg-thumb"),"TransitionDuration",this.core.s.speed+"ms"),this.core.doCss()||(e.style.left=-this.left+"px")):this.core.doCss()||(e.style.left=-this.left+"px"),this.setTranslate(this.left)}},i.prototype.enableThumbDrag=function(){var t=this,e=0,i=0,o=!1,u=!1,r=0;utils.addClass(t.thumbOuter,"lg-grab"),utils.on(t.core.outer.querySelector(".lg-thumb"),"mousedown.lgthumb",function(i){t.thumbTotalWidth>t.thumbOuterWidth&&(i.preventDefault(),e=i.pageX,o=!0,t.core.outer.scrollLeft+=1,t.core.outer.scrollLeft-=1,t.thumbClickable=!1,utils.removeClass(t.thumbOuter,"lg-grab"),utils.addClass(t.thumbOuter,"lg-grabbing"))}),utils.on(window,"mousemove.lgthumb",function(s){o&&(r=t.left,u=!0,i=s.pageX,utils.addClass(t.thumbOuter,"lg-dragging"),r-=i-e,r>t.thumbTotalWidth-t.thumbOuterWidth&&(r=t.thumbTotalWidth-t.thumbOuterWidth),r<0&&(r=0),t.setTranslate(r))}),utils.on(window,"mouseup.lgthumb",function(){u?(u=!1,utils.removeClass(t.thumbOuter,"lg-dragging"),t.left=r,Math.abs(i-e)<t.core.s.swipeThreshold&&(t.thumbClickable=!0)):t.thumbClickable=!0,o&&(o=!1,utils.removeClass(t.thumbOuter,"lg-grabbing"),utils.addClass(t.thumbOuter,"lg-grab"))})},i.prototype.enableThumbSwipe=function(){var t=this,e=0,i=0,o=!1,u=0;utils.on(t.core.outer.querySelector(".lg-thumb"),"touchstart.lg",function(i){t.thumbTotalWidth>t.thumbOuterWidth&&(i.preventDefault(),e=i.targetTouches[0].pageX,t.thumbClickable=!1)}),utils.on(t.core.outer.querySelector(".lg-thumb"),"touchmove.lg",function(r){t.thumbTotalWidth>t.thumbOuterWidth&&(r.preventDefault(),i=r.targetTouches[0].pageX,o=!0,utils.addClass(t.thumbOuter,"lg-dragging"),u=t.left,u-=i-e,u>t.thumbTotalWidth-t.thumbOuterWidth&&(u=t.thumbTotalWidth-t.thumbOuterWidth),u<0&&(u=0),t.setTranslate(u))}),utils.on(t.core.outer.querySelector(".lg-thumb"),"touchend.lg",function(){t.thumbTotalWidth>t.thumbOuterWidth&&o?(o=!1,utils.removeClass(t.thumbOuter,"lg-dragging"),Math.abs(i-e)<t.core.s.swipeThreshold&&(t.thumbClickable=!0),t.left=u):t.thumbClickable=!0})},i.prototype.toggle=function(){var t=this;t.core.s.toggleThumb&&(utils.addClass(t.core.outer,"lg-can-toggle"),t.thumbOuter.insertAdjacentHTML("beforeend",'<button aria-label="Toggle thumbnails" class="lg-toggle-thumb lg-icon"></button>'),utils.on(t.core.outer.querySelector(".lg-toggle-thumb"),"click.lg",function(){utils.hasClass(t.core.outer,"lg-thumb-open")?utils.removeClass(t.core.outer,"lg-thumb-open"):utils.addClass(t.core.outer,"lg-thumb-open")}))},i.prototype.thumbkeyPress=function(){var t=this;utils.on(window,"keydown.lgthumb",function(e){38===e.keyCode?(e.preventDefault(),utils.addClass(t.core.outer,"lg-thumb-open")):40===e.keyCode&&(e.preventDefault(),utils.removeClass(t.core.outer,"lg-thumb-open"))})},i.prototype.destroy=function(t){if(this.core.s.thumbnail&&this.core.items.length>1){utils.off(window,".lgthumb"),t||this.thumbOuter.parentNode.removeChild(this.thumbOuter),utils.removeClass(this.core.outer,"lg-has-thumb");for(var e=document.getElementsByClassName("lg-script");e[0];)e[0].parentNode.removeChild(e[0])}},window.lgModules.thumbnail=i})},{}]},{},[1])(1)}); \ No newline at end of file
diff --git a/assets/lib/lightgallery/lg-zoom.min.js b/assets/lib/lightgallery/lg-zoom.min.js
deleted file mode 100644
index f1b0def4..00000000
--- a/assets/lib/lightgallery/lg-zoom.min.js
+++ /dev/null
@@ -1,7 +0,0 @@
-/**!
- * lg-zoom.js | 1.2.0 | May 20th 2020
- * http://sachinchoolur.github.io/lg-zoom.js
- * Copyright (c) 2016 Sachin N;
- * @license GPLv3
- */
-!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var t;t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,t.LgZoom=e()}}(function(){var e,t,o;return function(){function e(t,o,r){function l(a,s){if(!o[a]){if(!t[a]){var n="function"==typeof require&&require;if(!s&&n)return n(a,!0);if(i)return i(a,!0);var u=new Error("Cannot find module '"+a+"'");throw u.code="MODULE_NOT_FOUND",u}var c=o[a]={exports:{}};t[a][0].call(c.exports,function(e){return l(t[a][1][e]||e)},c,c.exports,e,t,o,r)}return o[a].exports}for(var i="function"==typeof require&&require,a=0;a<r.length;a++)l(r[a]);return l}return e}()({1:[function(t,o,r){!function(t,o){if("function"==typeof e&&e.amd)e([],o);else if(void 0!==r)o();else{var l={exports:{}};o(),t.lgZoom=l.exports}}(this,function(){"use strict";var e=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var r in o)Object.prototype.hasOwnProperty.call(o,r)&&(e[r]=o[r])}return e},t=function e(){var t=!1,o=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);return o&&parseInt(o[2],10)<54&&(t=!0),t},o={scale:1,zoom:!0,actualSize:!0,enableZoomAfter:300,useLeftForZoom:t()},r=function t(r){return this.el=r,this.core=window.lgData[this.el.getAttribute("lg-uid")],this.core.s=e({},o,this.core.s),this.core.s.zoom&&this.core.doCss()&&(this.init(),this.zoomabletimeout=!1,this.pageX=window.innerWidth/2,this.pageY=window.innerHeight/2+(document.documentElement.scrollTop||document.body.scrollTop)),this};r.prototype.init=function(){var e=this,t='<button aria-label="Zoom in" id="lg-zoom-in" class="lg-icon"></button><button aria-label="Zoom out" id="lg-zoom-out" class="lg-icon"></button>';e.core.s.actualSize&&(t+='<button aria-label="Actual size" id="lg-actual-size" class="lg-icon"></button>'),e.core.s.useLeftForZoom?utils.addClass(e.core.outer,"lg-use-left-for-zoom"):utils.addClass(e.core.outer,"lg-use-transition-for-zoom"),this.core.outer.querySelector(".lg-toolbar").insertAdjacentHTML("beforeend",t),utils.on(e.core.el,"onSlideItemLoad.lgtmzoom",function(t){var o=e.core.s.enableZoomAfter+t.detail.delay;utils.hasClass(document.body,"lg-from-hash")&&t.detail.delay?o=0:utils.removeClass(document.body,"lg-from-hash"),e.zoomabletimeout=setTimeout(function(){utils.addClass(e.core.___slide[t.detail.index],"lg-zoomable")},o+30)});var o=1,r=function t(o){var r=e.core.outer.querySelector(".lg-current .lg-image"),l,i,a=(window.innerWidth-r.clientWidth)/2,s=(window.innerHeight-r.clientHeight)/2+(document.documentElement.scrollTop||document.body.scrollTop);l=e.pageX-a,i=e.pageY-s;var n=(o-1)*l,u=(o-1)*i;utils.setVendor(r,"Transform","scale3d("+o+", "+o+", 1)"),r.setAttribute("data-scale",o),e.core.s.useLeftForZoom?(r.parentElement.style.left=-n+"px",r.parentElement.style.top=-u+"px"):utils.setVendor(r.parentElement,"Transform","translate3d(-"+n+"px, -"+u+"px, 0)"),r.parentElement.setAttribute("data-x",n),r.parentElement.setAttribute("data-y",u)},l=function t(){o>1?utils.addClass(e.core.outer,"lg-zoomed"):e.resetZoom(),o<1&&(o=1),r(o)},i=function t(r,i,a,s){var n=i.clientWidth,u;u=e.core.s.dynamic?e.core.s.dynamicEl[a].width||i.naturalWidth||n:e.core.items[a].getAttribute("data-width")||i.naturalWidth||n;var c;utils.hasClass(e.core.outer,"lg-zoomed")?o=1:u>n&&(c=u/n,o=c||2),s?(e.pageX=window.innerWidth/2,e.pageY=window.innerHeight/2+(document.documentElement.scrollTop||document.body.scrollTop)):(e.pageX=r.pageX||r.targetTouches[0].pageX,e.pageY=r.pageY||r.targetTouches[0].pageY),l(),setTimeout(function(){utils.removeClass(e.core.outer,"lg-grabbing"),utils.addClass(e.core.outer,"lg-grab")},10)},a=!1;utils.on(e.core.el,"onAferAppendSlide.lgtmzoom",function(t){var o=t.detail.index,r=e.core.___slide[o].querySelector(".lg-image");e.core.isTouch||utils.on(r,"dblclick",function(e){i(e,r,o)}),e.core.isTouch&&utils.on(r,"touchstart",function(e){a?(clearTimeout(a),a=null,i(e,r,o)):a=setTimeout(function(){a=null},300),e.preventDefault()})}),utils.on(window,"resize.lgzoom scroll.lgzoom orientationchange.lgzoom",function(){e.pageX=window.innerWidth/2,e.pageY=window.innerHeight/2+(document.documentElement.scrollTop||document.body.scrollTop),r(o)}),utils.on(document.getElementById("lg-zoom-out"),"click.lg",function(){e.core.outer.querySelector(".lg-current .lg-image")&&(o-=e.core.s.scale,l())}),utils.on(document.getElementById("lg-zoom-in"),"click.lg",function(){e.core.outer.querySelector(".lg-current .lg-image")&&(o+=e.core.s.scale,l())}),utils.on(document.getElementById("lg-actual-size"),"click.lg",function(t){i(t,e.core.___slide[e.core.index].querySelector(".lg-image"),e.core.index,!0)}),utils.on(e.core.el,"onBeforeSlide.lgtm",function(){o=1,e.resetZoom()}),e.core.isTouch||e.zoomDrag(),e.core.isTouch&&e.zoomSwipe()},r.prototype.resetZoom=function(){utils.removeClass(this.core.outer,"lg-zoomed");for(var e=0;e<this.core.___slide.length;e++)this.core.___slide[e].querySelector(".lg-img-wrap")&&(this.core.___slide[e].querySelector(".lg-img-wrap").removeAttribute("style"),this.core.___slide[e].querySelector(".lg-img-wrap").removeAttribute("data-x"),this.core.___slide[e].querySelector(".lg-img-wrap").removeAttribute("data-y"));for(var t=0;t<this.core.___slide.length;t++)this.core.___slide[t].querySelector(".lg-image")&&(this.core.___slide[t].querySelector(".lg-image").removeAttribute("style"),this.core.___slide[t].querySelector(".lg-image").removeAttribute("data-scale"));this.pageX=window.innerWidth/2,this.pageY=window.innerHeight/2+(document.documentElement.scrollTop||document.body.scrollTop)},r.prototype.zoomSwipe=function(){for(var e=this,t={},o={},r=!1,l=!1,i=!1,a=0;a<e.core.___slide.length;a++)utils.on(e.core.___slide[a],"touchstart.lg",function(o){if(utils.hasClass(e.core.outer,"lg-zoomed")){var r=e.core.___slide[e.core.index].querySelector(".lg-object");i=r.offsetHeight*r.getAttribute("data-scale")>e.core.outer.querySelector(".lg").clientHeight,l=r.offsetWidth*r.getAttribute("data-scale")>e.core.outer.querySelector(".lg").clientWidth,(l||i)&&(o.preventDefault(),t={x:o.targetTouches[0].pageX,y:o.targetTouches[0].pageY})}});for(var s=0;s<e.core.___slide.length;s++)utils.on(e.core.___slide[s],"touchmove.lg",function(a){if(utils.hasClass(e.core.outer,"lg-zoomed")){var s=e.core.___slide[e.core.index].querySelector(".lg-img-wrap"),n,u;a.preventDefault(),r=!0,o={x:a.targetTouches[0].pageX,y:a.targetTouches[0].pageY},utils.addClass(e.core.outer,"lg-zoom-dragging"),u=i?-Math.abs(s.getAttribute("data-y"))+(o.y-t.y):-Math.abs(s.getAttribute("data-y")),n=l?-Math.abs(s.getAttribute("data-x"))+(o.x-t.x):-Math.abs(s.getAttribute("data-x")),(Math.abs(o.x-t.x)>15||Math.abs(o.y-t.y)>15)&&(e.core.s.useLeftForZoom?(s.style.left=n+"px",s.style.top=u+"px"):utils.setVendor(s,"Transform","translate3d("+n+"px, "+u+"px, 0)"))}});for(var n=0;n<e.core.___slide.length;n++)utils.on(e.core.___slide[n],"touchend.lg",function(){utils.hasClass(e.core.outer,"lg-zoomed")&&r&&(r=!1,utils.removeClass(e.core.outer,"lg-zoom-dragging"),e.touchendZoom(t,o,l,i))})},r.prototype.zoomDrag=function(){for(var e=this,t={},o={},r=!1,l=!1,i=!1,a=!1,s=0;s<e.core.___slide.length;s++)utils.on(e.core.___slide[s],"mousedown.lgzoom",function(o){var l=e.core.___slide[e.core.index].querySelector(".lg-object");a=l.offsetHeight*l.getAttribute("data-scale")>e.core.outer.querySelector(".lg").clientHeight,i=l.offsetWidth*l.getAttribute("data-scale")>e.core.outer.querySelector(".lg").clientWidth,utils.hasClass(e.core.outer,"lg-zoomed")&&utils.hasClass(o.target,"lg-object")&&(i||a)&&(o.preventDefault(),t={x:o.pageX,y:o.pageY},r=!0,e.core.outer.scrollLeft+=1,e.core.outer.scrollLeft-=1,utils.removeClass(e.core.outer,"lg-grab"),utils.addClass(e.core.outer,"lg-grabbing"))});utils.on(window,"mousemove.lgzoom",function(s){if(r){var n=e.core.___slide[e.core.index].querySelector(".lg-img-wrap"),u,c;l=!0,o={x:s.pageX,y:s.pageY},utils.addClass(e.core.outer,"lg-zoom-dragging"),c=a?-Math.abs(n.getAttribute("data-y"))+(o.y-t.y):-Math.abs(n.getAttribute("data-y")),u=i?-Math.abs(n.getAttribute("data-x"))+(o.x-t.x):-Math.abs(n.getAttribute("data-x")),e.core.s.useLeftForZoom?(n.style.left=u+"px",n.style.top=c+"px"):utils.setVendor(n,"Transform","translate3d("+u+"px, "+c+"px, 0)")}}),utils.on(window,"mouseup.lgzoom",function(s){r&&(r=!1,utils.removeClass(e.core.outer,"lg-zoom-dragging"),!l||t.x===o.x&&t.y===o.y||(o={x:s.pageX,y:s.pageY},e.touchendZoom(t,o,i,a)),l=!1),utils.removeClass(e.core.outer,"lg-grabbing"),utils.addClass(e.core.outer,"lg-grab")})},r.prototype.touchendZoom=function(e,t,o,r){var l=this,i=l.core.___slide[l.core.index].querySelector(".lg-img-wrap"),a=l.core.___slide[l.core.index].querySelector(".lg-object"),s=-Math.abs(i.getAttribute("data-x"))+(t.x-e.x),n=-Math.abs(i.getAttribute("data-y"))+(t.y-e.y),u=(l.core.outer.querySelector(".lg").clientHeight-a.offsetHeight)/2,c=Math.abs(a.offsetHeight*Math.abs(a.getAttribute("data-scale"))-l.core.outer.querySelector(".lg").clientHeight+u),d=(l.core.outer.querySelector(".lg").clientWidth-a.offsetWidth)/2,g=Math.abs(a.offsetWidth*Math.abs(a.getAttribute("data-scale"))-l.core.outer.querySelector(".lg").clientWidth+d);(Math.abs(t.x-e.x)>15||Math.abs(t.y-e.y)>15)&&(r&&(n<=-c?n=-c:n>=-u&&(n=-u)),o&&(s<=-g?s=-g:s>=-d&&(s=-d)),r?i.setAttribute("data-y",Math.abs(n)):n=-Math.abs(i.getAttribute("data-y")),o?i.setAttribute("data-x",Math.abs(s)):s=-Math.abs(i.getAttribute("data-x")),l.core.s.useLeftForZoom?(i.style.left=s+"px",i.style.top=n+"px"):utils.setVendor(i,"Transform","translate3d("+s+"px, "+n+"px, 0)"))},r.prototype.destroy=function(){var e=this;utils.off(e.core.el,".lgzoom"),utils.off(window,".lgzoom");for(var t=0;t<e.core.___slide.length;t++)utils.off(e.core.___slide[t],".lgzoom");utils.off(e.core.el,".lgtmzoom"),e.resetZoom(),clearTimeout(e.zoomabletimeout),e.zoomabletimeout=!1},window.lgModules.zoom=r})},{}]},{},[1])(1)}); \ No newline at end of file
diff --git a/assets/lib/lightgallery/lightgallery.min.css b/assets/lib/lightgallery/lightgallery.min.css
index 9b5c2461..b1b2ef8b 100644
--- a/assets/lib/lightgallery/lightgallery.min.css
+++ b/assets/lib/lightgallery/lightgallery.min.css
@@ -1 +1 @@
-@font-face{font-family:lg;src:url(../fonts/lg.eot?n1z373);src:url(../fonts/lg.eot?#iefixn1z373) format("embedded-opentype"),url(../fonts/lg.woff?n1z373) format("woff"),url(../fonts/lg.ttf?n1z373) format("truetype"),url(../fonts/lg.svg?n1z373#lg) format("svg");font-weight:400;font-style:normal}.lg-icon{font-family:lg;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.lg-actions .lg-next,.lg-actions .lg-prev{border-radius:2px;color:#999;cursor:pointer;display:block;font-size:22px;margin-top:-10px;padding:8px 10px 9px;position:absolute;top:50%;z-index:1080;outline:0;border:none;background-color:transparent}.lg-actions .lg-next.disabled,.lg-actions .lg-prev.disabled{pointer-events:none;opacity:.5}.lg-actions .lg-next:hover,.lg-actions .lg-prev:hover{color:#FFF}.lg-actions .lg-next{right:20px}.lg-actions .lg-next:before{content:"\e095"}.lg-actions .lg-prev{left:20px}.lg-actions .lg-prev:after{content:"\e094"}@-webkit-keyframes lg-right-end{0%,100%{left:0}50%{left:-30px}}@-moz-keyframes lg-right-end{0%,100%{left:0}50%{left:-30px}}@-ms-keyframes lg-right-end{0%,100%{left:0}50%{left:-30px}}@keyframes lg-right-end{0%,100%{left:0}50%{left:-30px}}@-webkit-keyframes lg-left-end{0%,100%{left:0}50%{left:30px}}@-moz-keyframes lg-left-end{0%,100%{left:0}50%{left:30px}}@-ms-keyframes lg-left-end{0%,100%{left:0}50%{left:30px}}@keyframes lg-left-end{0%,100%{left:0}50%{left:30px}}.lg-outer.lg-right-end .lg-object{-webkit-animation:lg-right-end .3s;-o-animation:lg-right-end .3s;animation:lg-right-end .3s;position:relative}.lg-outer.lg-left-end .lg-object{-webkit-animation:lg-left-end .3s;-o-animation:lg-left-end .3s;animation:lg-left-end .3s;position:relative}.lg-toolbar{z-index:1082;left:0;position:absolute;top:0;width:100%;background-color:rgba(0,0,0,.45)}.lg-toolbar .lg-icon{color:#999;cursor:pointer;float:right;font-size:24px;height:47px;line-height:27px;padding:10px 0;text-align:center;width:50px;text-decoration:none!important;outline:0;background:0 0;border:none;box-shadow:none;-webkit-transition:color .2s linear;-o-transition:color .2s linear;transition:color .2s linear}.lg-toolbar .lg-icon:hover{color:#FFF}.lg-toolbar .lg-close:after{content:"\e070"}.lg-toolbar .lg-download:after{content:"\e0f2"}.lg-sub-html{background-color:rgba(0,0,0,.45);bottom:0;color:#EEE;font-size:16px;left:0;padding:10px 40px;position:fixed;right:0;text-align:center;z-index:1080}.lg-sub-html h4{margin:0;font-size:13px;font-weight:700}.lg-sub-html p{font-size:12px;margin:5px 0 0}#lg-counter{color:#999;display:inline-block;font-size:16px;padding-left:20px;padding-top:12px;vertical-align:middle}.lg-next,.lg-prev,.lg-toolbar{opacity:1;-webkit-transition:-webkit-transform .35s cubic-bezier(0,0,.25,1) 0s,opacity .35s cubic-bezier(0,0,.25,1) 0s,color .2s linear;-moz-transition:-moz-transform .35s cubic-bezier(0,0,.25,1) 0s,opacity .35s cubic-bezier(0,0,.25,1) 0s,color .2s linear;-o-transition:-o-transform .35s cubic-bezier(0,0,.25,1) 0s,opacity .35s cubic-bezier(0,0,.25,1) 0s,color .2s linear;transition:transform .35s cubic-bezier(0,0,.25,1) 0s,opacity .35s cubic-bezier(0,0,.25,1) 0s,color .2s linear}.lg-hide-items .lg-prev{opacity:0;-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}.lg-hide-items .lg-next{opacity:0;-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}.lg-hide-items .lg-toolbar{opacity:0;-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-object{-webkit-transform:scale3d(.5,.5,.5);transform:scale3d(.5,.5,.5);opacity:0;-webkit-transition:-webkit-transform 250ms cubic-bezier(0,0,.25,1) 0s,opacity 250ms cubic-bezier(0,0,.25,1)!important;-moz-transition:-moz-transform 250ms cubic-bezier(0,0,.25,1) 0s,opacity 250ms cubic-bezier(0,0,.25,1)!important;-o-transition:-o-transform 250ms cubic-bezier(0,0,.25,1) 0s,opacity 250ms cubic-bezier(0,0,.25,1)!important;transition:transform 250ms cubic-bezier(0,0,.25,1) 0s,opacity 250ms cubic-bezier(0,0,.25,1)!important;-webkit-transform-origin:50% 50%;-moz-transform-origin:50% 50%;-ms-transform-origin:50% 50%;transform-origin:50% 50%}body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item.lg-complete .lg-object{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1);opacity:1}.lg-outer .lg-thumb-outer{background-color:#0D0A0A;bottom:0;position:absolute;width:100%;z-index:1080;max-height:350px;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);-webkit-transition:-webkit-transform .25s cubic-bezier(0,0,.25,1) 0s;-moz-transition:-moz-transform .25s cubic-bezier(0,0,.25,1) 0s;-o-transition:-o-transform .25s cubic-bezier(0,0,.25,1) 0s;transition:transform .25s cubic-bezier(0,0,.25,1) 0s}.lg-outer .lg-thumb-outer.lg-grab .lg-thumb-item{cursor:-webkit-grab;cursor:-moz-grab;cursor:-o-grab;cursor:-ms-grab;cursor:grab}.lg-outer .lg-thumb-outer.lg-grabbing .lg-thumb-item{cursor:move;cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:-o-grabbing;cursor:-ms-grabbing;cursor:grabbing}.lg-outer .lg-thumb-outer.lg-dragging .lg-thumb{-webkit-transition-duration:0s!important;transition-duration:0s!important}.lg-outer.lg-thumb-open .lg-thumb-outer{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.lg-outer .lg-thumb{padding:10px 0;height:100%;margin-bottom:-5px}.lg-outer .lg-thumb-item{cursor:pointer;float:left;overflow:hidden;height:100%;border:2px solid #FFF;border-radius:4px;margin-bottom:5px}@media (min-width:1025px){.lg-outer .lg-thumb-item{-webkit-transition:border-color .25s ease;-o-transition:border-color .25s ease;transition:border-color .25s ease}}.lg-outer .lg-thumb-item.active,.lg-outer .lg-thumb-item:hover{border-color:#a90707}.lg-outer .lg-thumb-item img{width:100%;height:100%;object-fit:cover}.lg-outer.lg-has-thumb .lg-item{padding-bottom:120px}.lg-outer.lg-can-toggle .lg-item{padding-bottom:0}.lg-outer.lg-pull-caption-up .lg-sub-html{-webkit-transition:bottom .25s ease;-o-transition:bottom .25s ease;transition:bottom .25s ease}.lg-outer.lg-pull-caption-up.lg-thumb-open .lg-sub-html{bottom:100px}.lg-outer .lg-toggle-thumb{background-color:#0D0A0A;border-radius:2px 2px 0 0;color:#999;cursor:pointer;font-size:24px;height:39px;line-height:27px;padding:5px 0;position:absolute;right:20px;text-align:center;top:-39px;width:50px;outline:0;border:none}.lg-outer .lg-toggle-thumb:hover,.lg-outer.lg-dropdown-active #lg-share{color:#FFF}.lg-outer .lg-toggle-thumb:after{content:"\e1ff"}.lg-outer .lg-video-cont{display:inline-block;vertical-align:middle;max-width:1140px;max-height:100%;width:100%;padding:0 5px}.lg-outer .lg-video{width:100%;height:0;padding-bottom:56.25%;overflow:hidden;position:relative}.lg-outer .lg-video .lg-object{display:inline-block;position:absolute;top:0;left:0;width:100%!important;height:100%!important}.lg-outer .lg-video .lg-video-play{width:84px;height:59px;position:absolute;left:50%;top:50%;margin-left:-42px;margin-top:-30px;z-index:1080;cursor:pointer}.lg-outer .lg-has-vimeo .lg-video-play{background:url(../img/vimeo-play.png) no-repeat}.lg-outer .lg-has-vimeo:hover .lg-video-play{background:url(../img/vimeo-play.png) 0 -58px no-repeat}.lg-outer .lg-has-html5 .lg-video-play{background:url(../img/video-play.png) no-repeat;height:64px;margin-left:-32px;margin-top:-32px;width:64px;opacity:.8}.lg-outer .lg-has-html5:hover .lg-video-play{opacity:1}.lg-outer .lg-has-youtube .lg-video-play{background:url(../img/youtube-play.png) no-repeat}.lg-outer .lg-has-youtube:hover .lg-video-play{background:url(../img/youtube-play.png) 0 -60px no-repeat}.lg-outer .lg-video-object{width:100%!important;height:100%!important;position:absolute;top:0;left:0}.lg-outer .lg-has-video .lg-video-object{visibility:hidden}.lg-outer .lg-has-video.lg-video-playing .lg-object,.lg-outer .lg-has-video.lg-video-playing .lg-video-play{display:none}.lg-outer .lg-has-video.lg-video-playing .lg-video-object{visibility:visible}.lg-progress-bar{background-color:#333;height:5px;left:0;position:absolute;top:0;width:100%;z-index:1083;opacity:0;-webkit-transition:opacity 80ms ease 0s;-moz-transition:opacity 80ms ease 0s;-o-transition:opacity 80ms ease 0s;transition:opacity 80ms ease 0s}.lg-progress-bar .lg-progress{background-color:#a90707;height:5px;width:0}.lg-progress-bar.lg-start .lg-progress{width:100%}.lg-show-autoplay .lg-progress-bar{opacity:1}.lg-autoplay-button:after{content:"\e01d"}.lg-show-autoplay .lg-autoplay-button:after{content:"\e01a"}.lg-outer.lg-css3.lg-zoom-dragging .lg-item.lg-complete.lg-zoomable .lg-image,.lg-outer.lg-css3.lg-zoom-dragging .lg-item.lg-complete.lg-zoomable .lg-img-wrap{-webkit-transition-duration:0s;transition-duration:0s}.lg-outer.lg-use-transition-for-zoom .lg-item.lg-complete.lg-zoomable .lg-img-wrap{-webkit-transition:-webkit-transform .3s cubic-bezier(0,0,.25,1) 0s;-moz-transition:-moz-transform .3s cubic-bezier(0,0,.25,1) 0s;-o-transition:-o-transform .3s cubic-bezier(0,0,.25,1) 0s;transition:transform .3s cubic-bezier(0,0,.25,1) 0s}.lg-outer.lg-use-left-for-zoom .lg-item.lg-complete.lg-zoomable .lg-img-wrap{-webkit-transition:left .3s cubic-bezier(0,0,.25,1) 0s,top .3s cubic-bezier(0,0,.25,1) 0s;-moz-transition:left .3s cubic-bezier(0,0,.25,1) 0s,top .3s cubic-bezier(0,0,.25,1) 0s;-o-transition:left .3s cubic-bezier(0,0,.25,1) 0s,top .3s cubic-bezier(0,0,.25,1) 0s;transition:left .3s cubic-bezier(0,0,.25,1) 0s,top .3s cubic-bezier(0,0,.25,1) 0s}.lg-outer .lg-item.lg-complete.lg-zoomable .lg-img-wrap{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden}.lg-outer .lg-item.lg-complete.lg-zoomable .lg-image{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1);-webkit-transition:-webkit-transform .3s cubic-bezier(0,0,.25,1) 0s,opacity .15s!important;-moz-transition:-moz-transform .3s cubic-bezier(0,0,.25,1) 0s,opacity .15s!important;-o-transition:-o-transform .3s cubic-bezier(0,0,.25,1) 0s,opacity .15s!important;transition:transform .3s cubic-bezier(0,0,.25,1) 0s,opacity .15s!important;-webkit-transform-origin:0 0;-moz-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden}#lg-zoom-in:after{content:"\e311"}#lg-actual-size{font-size:20px}#lg-actual-size:after{content:"\e033"}#lg-zoom-out{opacity:.5;pointer-events:none}#lg-zoom-out:after{content:"\e312"}.lg-zoomed #lg-zoom-out{opacity:1;pointer-events:auto}.lg-outer .lg-pager-outer{bottom:60px;left:0;position:absolute;right:0;text-align:center;z-index:1080;height:10px}.lg-outer .lg-pager-outer.lg-pager-hover .lg-pager-cont{overflow:visible}.lg-outer .lg-pager-cont{cursor:pointer;display:inline-block;overflow:hidden;position:relative;vertical-align:top;margin:0 5px}.lg-outer .lg-pager-cont:hover .lg-pager-thumb-cont{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.lg-outer .lg-pager-cont.lg-pager-active .lg-pager{box-shadow:0 0 0 2px #fff inset}.lg-outer .lg-pager-thumb-cont{background-color:#fff;color:#FFF;bottom:100%;height:83px;left:0;margin-bottom:20px;margin-left:-60px;opacity:0;padding:5px;position:absolute;width:120px;border-radius:3px;-webkit-transition:opacity .15s ease 0s,-webkit-transform .15s ease 0s;-moz-transition:opacity .15s ease 0s,-moz-transform .15s ease 0s;-o-transition:opacity .15s ease 0s,-o-transform .15s ease 0s;transition:opacity .15s ease 0s,transform .15s ease 0s;-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}.lg-outer .lg-pager-thumb-cont img{width:100%;height:100%}.lg-outer .lg-pager{background-color:rgba(255,255,255,.5);border-radius:50%;box-shadow:0 0 0 8px rgba(255,255,255,.7) inset;display:block;height:12px;-webkit-transition:box-shadow .3s ease 0s;-o-transition:box-shadow .3s ease 0s;transition:box-shadow .3s ease 0s;width:12px}.lg-outer .lg-pager:focus,.lg-outer .lg-pager:hover{box-shadow:0 0 0 8px #fff inset}.lg-outer .lg-caret{border-left:10px solid transparent;border-right:10px solid transparent;border-top:10px dashed;bottom:-10px;display:inline-block;height:0;left:50%;margin-left:-5px;position:absolute;vertical-align:middle;width:0}.lg-fullscreen:after{content:"\e20c"}.lg-fullscreen-on .lg-fullscreen:after{content:"\e20d"}.lg-outer #lg-dropdown-overlay{background-color:rgba(0,0,0,.25);bottom:0;cursor:default;left:0;position:fixed;right:0;top:0;z-index:1081;opacity:0;visibility:hidden;-webkit-transition:visibility 0s linear .18s,opacity .18s linear 0s;-o-transition:visibility 0s linear .18s,opacity .18s linear 0s;transition:visibility 0s linear .18s,opacity .18s linear 0s}.lg-outer.lg-dropdown-active #lg-dropdown-overlay,.lg-outer.lg-dropdown-active .lg-dropdown{-webkit-transition-delay:0s;transition-delay:0s;-moz-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1;visibility:visible}.lg-outer .lg-dropdown{background-color:#fff;border-radius:2px;font-size:14px;list-style-type:none;margin:0;padding:10px 0;position:absolute;right:0;text-align:left;top:50px;opacity:0;visibility:hidden;-moz-transform:translate3d(0,5px,0);-o-transform:translate3d(0,5px,0);-ms-transform:translate3d(0,5px,0);-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0);-webkit-transition:-webkit-transform .18s linear 0s,visibility 0s linear .5s,opacity .18s linear 0s;-moz-transition:-moz-transform .18s linear 0s,visibility 0s linear .5s,opacity .18s linear 0s;-o-transition:-o-transform .18s linear 0s,visibility 0s linear .5s,opacity .18s linear 0s;transition:transform .18s linear 0s,visibility 0s linear .5s,opacity .18s linear 0s}.lg-outer .lg-dropdown:after{content:"";display:block;height:0;width:0;position:absolute;border:8px solid transparent;border-bottom-color:#FFF;right:16px;top:-16px}.lg-outer .lg-dropdown>li:last-child{margin-bottom:0}.lg-outer .lg-dropdown>li:hover .lg-icon,.lg-outer .lg-dropdown>li:hover a{color:#333}.lg-outer .lg-dropdown a{color:#333;display:block;white-space:pre;padding:4px 12px;font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px}.lg-outer .lg-dropdown a:hover{background-color:rgba(0,0,0,.07)}.lg-outer .lg-dropdown .lg-dropdown-text{display:inline-block;line-height:1;margin-top:-3px;vertical-align:middle}.lg-outer .lg-dropdown .lg-icon{color:#333;display:inline-block;float:none;font-size:20px;height:auto;line-height:1;margin-right:8px;padding:0;vertical-align:middle;width:auto}.lg-outer,.lg-outer .lg,.lg-outer .lg-inner{width:100%;height:100%}.lg-outer #lg-share{position:relative}.lg-outer #lg-share:after{content:"\e80d"}.lg-outer #lg-share-facebook .lg-icon{color:#3b5998}.lg-outer #lg-share-facebook .lg-icon:after{content:"\e901"}.lg-outer #lg-share-twitter .lg-icon{color:#00aced}.lg-outer #lg-share-twitter .lg-icon:after{content:"\e904"}.lg-outer #lg-share-googleplus .lg-icon{color:#dd4b39}.lg-outer #lg-share-googleplus .lg-icon:after{content:"\e902"}.lg-outer #lg-share-pinterest .lg-icon{color:#cb2027}.lg-outer #lg-share-pinterest .lg-icon:after{content:"\e903"}.group:after,.group:before{display:table;content:"";line-height:0}.group:after{clear:both}.lg-outer{position:fixed;top:0;left:0;z-index:1050;opacity:0;-webkit-transition:opacity .15s ease 0s;-o-transition:opacity .15s ease 0s;transition:opacity .15s ease 0s}.lg-outer *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.lg-outer.lg-visible{opacity:1}.lg-outer.lg-css3 .lg-item.lg-current,.lg-outer.lg-css3 .lg-item.lg-next-slide,.lg-outer.lg-css3 .lg-item.lg-prev-slide{-webkit-transition-duration:inherit!important;transition-duration:inherit!important;-webkit-transition-timing-function:inherit!important;transition-timing-function:inherit!important}.lg-outer.lg-css3.lg-dragging .lg-item.lg-current,.lg-outer.lg-css3.lg-dragging .lg-item.lg-next-slide,.lg-outer.lg-css3.lg-dragging .lg-item.lg-prev-slide{-webkit-transition-duration:0s!important;transition-duration:0s!important;opacity:1}.lg-outer.lg-grab img.lg-object{cursor:-webkit-grab;cursor:-moz-grab;cursor:-o-grab;cursor:-ms-grab;cursor:grab}.lg-outer.lg-grabbing img.lg-object{cursor:move;cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:-o-grabbing;cursor:-ms-grabbing;cursor:grabbing}.lg-outer .lg{position:relative;overflow:hidden;margin-left:auto;margin-right:auto;max-width:100%;max-height:100%}.lg-outer .lg-inner{position:absolute;left:0;top:0;white-space:nowrap}.lg-outer .lg-item{background:url(../img/loading.gif) center center no-repeat;display:none!important}.lg-outer.lg-css .lg-current,.lg-outer.lg-css3 .lg-current,.lg-outer.lg-css3 .lg-next-slide,.lg-outer.lg-css3 .lg-prev-slide{display:inline-block!important}.lg-outer .lg-img-wrap,.lg-outer .lg-item{display:inline-block;text-align:center;position:absolute;width:100%;height:100%}.lg-outer .lg-img-wrap:before,.lg-outer .lg-item:before{content:"";display:inline-block;height:50%;width:1px;margin-right:-1px}.lg-outer .lg-img-wrap{position:absolute;padding:0 5px;left:0;right:0;top:0;bottom:0}.lg-outer .lg-item.lg-complete{background-image:none}.lg-outer .lg-item.lg-current{z-index:1060}.lg-outer .lg-image{display:inline-block;vertical-align:middle;max-width:100%;max-height:100%;width:auto!important;height:auto!important}.lg-outer.lg-show-after-load .lg-item .lg-object,.lg-outer.lg-show-after-load .lg-item .lg-video-play{opacity:0;-webkit-transition:opacity .15s ease 0s;-o-transition:opacity .15s ease 0s;transition:opacity .15s ease 0s}.lg-outer.lg-show-after-load .lg-item.lg-complete .lg-object,.lg-outer.lg-show-after-load .lg-item.lg-complete .lg-video-play{opacity:1}.lg-outer .lg-empty-html,.lg-outer.lg-hide-download #lg-download{display:none}.lg-backdrop{position:fixed;top:0;left:0;right:0;bottom:0;z-index:1040;background-color:#000;opacity:0;-webkit-transition:opacity .15s ease 0s;-o-transition:opacity .15s ease 0s;transition:opacity .15s ease 0s}.lg-backdrop.in{opacity:1}.lg-css3.lg-no-trans .lg-current,.lg-css3.lg-no-trans .lg-next-slide,.lg-css3.lg-no-trans .lg-prev-slide{-webkit-transition:none 0s ease 0s!important;-moz-transition:none 0s ease 0s!important;-o-transition:none 0s ease 0s!important;transition:none 0s ease 0s!important}.lg-css3.lg-use-css3 .lg-item,.lg-css3.lg-use-left .lg-item{-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden}.lg-css3.lg-fade .lg-item{opacity:0}.lg-css3.lg-fade .lg-item.lg-current{opacity:1}.lg-css3.lg-fade .lg-item.lg-current,.lg-css3.lg-fade .lg-item.lg-next-slide,.lg-css3.lg-fade .lg-item.lg-prev-slide{-webkit-transition:opacity .1s ease 0s;-moz-transition:opacity .1s ease 0s;-o-transition:opacity .1s ease 0s;transition:opacity .1s ease 0s}.lg-css3.lg-slide.lg-use-css3 .lg-item{opacity:0}.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-prev-slide{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-next-slide{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-current{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-current,.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-next-slide,.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-prev-slide{-webkit-transition:-webkit-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-moz-transition:-moz-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-o-transition:-o-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;transition:transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s}.lg-css3.lg-slide.lg-use-left .lg-item{opacity:0;position:absolute;left:0}.lg-css3.lg-slide.lg-use-left .lg-item.lg-prev-slide{left:-100%}.lg-css3.lg-slide.lg-use-left .lg-item.lg-next-slide{left:100%}.lg-css3.lg-slide.lg-use-left .lg-item.lg-current{left:0;opacity:1}.lg-css3.lg-slide.lg-use-left .lg-item.lg-current,.lg-css3.lg-slide.lg-use-left .lg-item.lg-next-slide,.lg-css3.lg-slide.lg-use-left .lg-item.lg-prev-slide{-webkit-transition:left 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-moz-transition:left 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-o-transition:left 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;transition:left 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s} \ No newline at end of file
+@font-face{font-family:lg;src:url(../fonts/lg.woff2?io9a6k) format("woff2"),url(../fonts/lg.ttf?io9a6k) format("truetype"),url(../fonts/lg.woff?io9a6k) format("woff"),url(../fonts/lg.svg?io9a6k#lg) format("svg");font-weight:400;font-style:normal;font-display:block}.lg-icon{font-family:lg!important;speak:never;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.lg-container{font-family:system-ui,-apple-system,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans','Liberation Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji'}.lg-next,.lg-prev{background-color:rgba(0,0,0,.45);border-radius:2px;color:#999;cursor:pointer;display:block;font-size:22px;margin-top:-10px;padding:8px 10px 9px;position:absolute;top:50%;z-index:1080;outline:0;border:none}.lg-next.disabled,.lg-prev.disabled{opacity:0!important;cursor:default}.lg-next:hover:not(.disabled),.lg-prev:hover:not(.disabled){color:#fff}.lg-single-item .lg-next,.lg-single-item .lg-prev{display:none}.lg-next{right:20px}.lg-next:before{content:'\e095'}.lg-prev{left:20px}.lg-prev:after{content:'\e094'}@-webkit-keyframes lg-right-end{0%{left:0}50%{left:-30px}100%{left:0}}@-moz-keyframes lg-right-end{0%{left:0}50%{left:-30px}100%{left:0}}@-ms-keyframes lg-right-end{0%{left:0}50%{left:-30px}100%{left:0}}@keyframes lg-right-end{0%{left:0}50%{left:-30px}100%{left:0}}@-webkit-keyframes lg-left-end{0%{left:0}50%{left:30px}100%{left:0}}@-moz-keyframes lg-left-end{0%{left:0}50%{left:30px}100%{left:0}}@-ms-keyframes lg-left-end{0%{left:0}50%{left:30px}100%{left:0}}@keyframes lg-left-end{0%{left:0}50%{left:30px}100%{left:0}}.lg-outer.lg-right-end .lg-object{-webkit-animation:lg-right-end .3s;-o-animation:lg-right-end .3s;animation:lg-right-end .3s;position:relative}.lg-outer.lg-left-end .lg-object{-webkit-animation:lg-left-end .3s;-o-animation:lg-left-end .3s;animation:lg-left-end .3s;position:relative}.lg-toolbar{z-index:1082;left:0;position:absolute;top:0;width:100%}.lg-media-overlap .lg-toolbar{background-image:linear-gradient(0deg,rgba(0,0,0,0),rgba(0,0,0,.4))}.lg-toolbar .lg-icon{color:#999;cursor:pointer;float:right;font-size:24px;height:47px;line-height:27px;padding:10px 0;text-align:center;width:50px;text-decoration:none!important;outline:medium none;will-change:color;-webkit-transition:color .2s linear;-o-transition:color .2s linear;transition:color .2s linear;background:0 0;border:none;box-shadow:none}.lg-toolbar .lg-icon.lg-icon-18{font-size:18px}.lg-toolbar .lg-icon:hover{color:#fff}.lg-toolbar .lg-close:after{content:'\e070'}.lg-toolbar .lg-maximize{font-size:22px}.lg-toolbar .lg-maximize:after{content:'\e90a'}.lg-toolbar .lg-download:after{content:'\e0f2'}.lg-sub-html{color:#eee;font-size:16px;padding:10px 40px;text-align:center;z-index:1080;opacity:0;-webkit-transition:opacity .2s ease-out 0s;-o-transition:opacity .2s ease-out 0s;transition:opacity .2s ease-out 0s}.lg-sub-html h4{margin:0;font-size:13px;font-weight:700}.lg-sub-html p{font-size:12px;margin:5px 0 0}.lg-sub-html a{color:inherit}.lg-sub-html a:hover{text-decoration:underline}.lg-media-overlap .lg-sub-html{background-image:linear-gradient(180deg,rgba(0,0,0,0),rgba(0,0,0,.6))}.lg-item .lg-sub-html{position:absolute;bottom:0;right:0;left:0}.lg-error-msg{font-size:14px;color:#999}.lg-counter{color:#999;display:inline-block;font-size:16px;padding-left:20px;padding-top:12px;height:47px;vertical-align:middle}.lg-closing .lg-next,.lg-closing .lg-prev,.lg-closing .lg-sub-html,.lg-closing .lg-toolbar{opacity:0;-webkit-transition:-webkit-transform .08 cubic-bezier(0,0,.25,1) 0s,opacity .08 cubic-bezier(0,0,.25,1) 0s,color .08 linear;-moz-transition:-moz-transform .08 cubic-bezier(0,0,.25,1) 0s,opacity .08 cubic-bezier(0,0,.25,1) 0s,color .08 linear;-o-transition:-o-transform .08 cubic-bezier(0,0,.25,1) 0s,opacity .08 cubic-bezier(0,0,.25,1) 0s,color .08 linear;transition:transform .08 cubic-bezier(0,0,.25,1) 0s,opacity .08 cubic-bezier(0,0,.25,1) 0s,color .08 linear}body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item:not(.lg-zoomable) .lg-img-wrap,body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item:not(.lg-zoomable) .lg-video-cont{opacity:0;-moz-transform:scale3d(.5,.5,.5);-o-transform:scale3d(.5,.5,.5);-ms-transform:scale3d(.5,.5,.5);-webkit-transform:scale3d(.5,.5,.5);transform:scale3d(.5,.5,.5);will-change:transform,opacity;-webkit-transition:-webkit-transform 250ms cubic-bezier(0,0,.25,1) 0s,opacity 250ms cubic-bezier(0,0,.25,1)!important;-moz-transition:-moz-transform 250ms cubic-bezier(0,0,.25,1) 0s,opacity 250ms cubic-bezier(0,0,.25,1)!important;-o-transition:-o-transform 250ms cubic-bezier(0,0,.25,1) 0s,opacity 250ms cubic-bezier(0,0,.25,1)!important;transition:transform 250ms cubic-bezier(0,0,.25,1) 0s,opacity 250ms cubic-bezier(0,0,.25,1)!important}body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item:not(.lg-zoomable).lg-complete .lg-img-wrap,body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item:not(.lg-zoomable).lg-complete .lg-video-cont{opacity:1;-moz-transform:scale3d(1,1,1);-o-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}.lg-outer .lg-thumb-outer{background-color:#0d0a0a;width:100%;max-height:350px;overflow:hidden;float:left}.lg-outer .lg-thumb-outer.lg-grab .lg-thumb-item{cursor:-webkit-grab;cursor:-moz-grab;cursor:-o-grab;cursor:-ms-grab;cursor:grab}.lg-outer .lg-thumb-outer.lg-grabbing .lg-thumb-item{cursor:move;cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:-o-grabbing;cursor:-ms-grabbing;cursor:grabbing}.lg-outer .lg-thumb-outer.lg-dragging .lg-thumb{-webkit-transition-duration:0s!important;transition-duration:0s!important}.lg-outer .lg-thumb-outer.lg-rebuilding-thumbnails .lg-thumb{-webkit-transition-duration:0s!important;transition-duration:0s!important}.lg-outer .lg-thumb-outer.lg-thumb-align-middle{text-align:center}.lg-outer .lg-thumb-outer.lg-thumb-align-left{text-align:left}.lg-outer .lg-thumb-outer.lg-thumb-align-right{text-align:right}.lg-outer.lg-single-item .lg-thumb-outer{display:none}.lg-outer .lg-thumb{padding:5px 0;height:100%;margin-bottom:-5px;display:inline-block;vertical-align:middle}@media (min-width:768px){.lg-outer .lg-thumb{padding:10px 0}}.lg-outer .lg-thumb-item{cursor:pointer;float:left;overflow:hidden;height:100%;border-radius:2px;margin-bottom:5px;will-change:border-color}@media (min-width:768px){.lg-outer .lg-thumb-item{border-radius:4px;border:2px solid #fff;-webkit-transition:border-color .25s ease;-o-transition:border-color .25s ease;transition:border-color .25s ease}}.lg-outer .lg-thumb-item.active,.lg-outer .lg-thumb-item:hover{border-color:#a90707}.lg-outer .lg-thumb-item img{width:100%;height:100%;object-fit:cover;display:block}.lg-outer.lg-can-toggle .lg-item{padding-bottom:0}.lg-outer .lg-toggle-thumb:after{content:'\e1ff'}.lg-outer.lg-animate-thumb .lg-thumb{-webkit-transition-timing-function:cubic-bezier(.215,.61,.355,1);transition-timing-function:cubic-bezier(.215,.61,.355,1)}.lg-outer .lg-video-cont{text-align:center;display:inline-block;vertical-align:middle;position:relative}.lg-outer .lg-video-cont .lg-object{width:100%!important;height:100%!important}.lg-outer .lg-has-iframe .lg-video-cont{-webkit-overflow-scrolling:touch;overflow:auto}.lg-outer .lg-video-object{position:absolute;left:0;right:0;width:100%;height:100%;top:0;bottom:0;z-index:3}.lg-outer .lg-video-poster{z-index:1}.lg-outer .lg-has-video .lg-video-object{opacity:0;will-change:opacity;-webkit-transition:opacity .3s ease-in;-o-transition:opacity .3s ease-in;transition:opacity .3s ease-in}.lg-outer .lg-has-video.lg-video-loaded .lg-video-play-button,.lg-outer .lg-has-video.lg-video-loaded .lg-video-poster{opacity:0!important}.lg-outer .lg-has-video.lg-video-loaded .lg-video-object{opacity:1}@keyframes lg-play-stroke{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}100%{stroke-dasharray:89,200;stroke-dashoffset:-124px}}@keyframes lg-play-rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.lg-video-play-button{width:18%;max-width:140px;position:absolute;top:50%;left:50%;z-index:2;cursor:pointer;transform:translate(-50%,-50%) scale(1);will-change:opacity,transform;-webkit-transition:-webkit-transform .25s cubic-bezier(.17,.88,.32,1.28),opacity .1s;-moz-transition:-moz-transform .25s cubic-bezier(.17,.88,.32,1.28),opacity .1s;-o-transition:-o-transform .25s cubic-bezier(.17,.88,.32,1.28),opacity .1s;transition:transform .25s cubic-bezier(.17,.88,.32,1.28),opacity .1s}.lg-video-play-button:hover .lg-video-play-icon,.lg-video-play-button:hover .lg-video-play-icon-bg{opacity:1}.lg-video-play-icon-bg{fill:none;stroke-width:3%;stroke:#fcfcfc;opacity:.6;will-change:opacity;-webkit-transition:opacity .12s ease-in;-o-transition:opacity .12s ease-in;transition:opacity .12s ease-in}.lg-video-play-icon-circle{position:absolute;top:0;left:0;bottom:0;right:0;fill:none;stroke-width:3%;stroke:rgba(30,30,30,.9);stroke-opacity:1;stroke-linecap:round;stroke-dasharray:200;stroke-dashoffset:200}.lg-video-play-icon{position:absolute;width:25%;max-width:120px;left:50%;top:50%;transform:translate3d(-50%,-50%,0);opacity:.6;will-change:opacity;-webkit-transition:opacity .12s ease-in;-o-transition:opacity .12s ease-in;transition:opacity .12s ease-in}.lg-video-play-icon .lg-video-play-icon-inner{fill:#fcfcfc}.lg-video-loading .lg-video-play-icon-circle{animation:lg-play-rotate 2s linear .25s infinite,lg-play-stroke 1.5s ease-in-out .25s infinite}.lg-video-loaded .lg-video-play-button{opacity:0;transform:translate(-50%,-50%) scale(.7)}.lg-progress-bar{background-color:#333;height:5px;left:0;position:absolute;top:0;width:100%;z-index:1083;opacity:0;will-change:opacity;-webkit-transition:opacity 80ms ease 0s;-moz-transition:opacity 80ms ease 0s;-o-transition:opacity 80ms ease 0s;transition:opacity 80ms ease 0s}.lg-progress-bar .lg-progress{background-color:#a90707;height:5px;width:0}.lg-progress-bar.lg-start .lg-progress{width:100%}.lg-show-autoplay .lg-progress-bar{opacity:1}.lg-autoplay-button:after{content:'\e01d'}.lg-show-autoplay .lg-autoplay-button:after{content:'\e01a'}.lg-single-item .lg-autoplay-button{opacity:.75;pointer-events:none}.lg-outer.lg-css3.lg-zoom-dragging .lg-item.lg-complete.lg-zoomable .lg-image,.lg-outer.lg-css3.lg-zoom-dragging .lg-item.lg-complete.lg-zoomable .lg-img-wrap{-webkit-transition-duration:0s!important;transition-duration:0s!important}.lg-outer.lg-use-transition-for-zoom .lg-item.lg-complete.lg-zoomable .lg-img-wrap{will-change:transform;-webkit-transition:-webkit-transform .5s cubic-bezier(.12,.415,.01,1.19) 0s;-moz-transition:-moz-transform .5s cubic-bezier(.12,.415,.01,1.19) 0s;-o-transition:-o-transform .5s cubic-bezier(.12,.415,.01,1.19) 0s;transition:transform .5s cubic-bezier(.12,.415,.01,1.19) 0s}.lg-outer.lg-use-transition-for-zoom.lg-zoom-drag-transition .lg-item.lg-complete.lg-zoomable .lg-img-wrap{will-change:transform;-webkit-transition:-webkit-transform .8s cubic-bezier(0,0,.25,1) 0s;-moz-transition:-moz-transform .8s cubic-bezier(0,0,.25,1) 0s;-o-transition:-o-transform .8s cubic-bezier(0,0,.25,1) 0s;transition:transform .8s cubic-bezier(0,0,.25,1) 0s}.lg-outer .lg-item.lg-complete.lg-zoomable .lg-img-wrap{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden}.lg-outer .lg-item.lg-complete.lg-zoomable .lg-dummy-img,.lg-outer .lg-item.lg-complete.lg-zoomable .lg-image{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1);will-change:opacity,transform;-webkit-transition:-webkit-transform .5s cubic-bezier(.12,.415,.01,1.19) 0s,opacity .15s!important;-moz-transition:-moz-transform .5s cubic-bezier(.12,.415,.01,1.19) 0s,opacity .15s!important;-o-transition:-o-transform .5s cubic-bezier(.12,.415,.01,1.19) 0s,opacity .15s!important;transition:transform .5s cubic-bezier(.12,.415,.01,1.19) 0s,opacity .15s!important;-webkit-transform-origin:0 0;-moz-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden}.lg-icon.lg-zoom-in:after{content:'\e311'}.lg-icon.lg-actual-size{font-size:20px}.lg-icon.lg-actual-size:after{content:'\e033'}.lg-icon.lg-zoom-out{opacity:.5;pointer-events:none}.lg-icon.lg-zoom-out:after{content:'\e312'}.lg-zoomed .lg-icon.lg-zoom-out{opacity:1;pointer-events:auto}.lg-outer.lg-first-slide-loading .lg-actual-size,.lg-outer.lg-first-slide-loading .lg-zoom-in,.lg-outer.lg-first-slide-loading .lg-zoom-out,.lg-outer[data-lg-slide-type=iframe] .lg-actual-size,.lg-outer[data-lg-slide-type=iframe] .lg-zoom-in,.lg-outer[data-lg-slide-type=iframe] .lg-zoom-out,.lg-outer[data-lg-slide-type=video] .lg-actual-size,.lg-outer[data-lg-slide-type=video] .lg-zoom-in,.lg-outer[data-lg-slide-type=video] .lg-zoom-out{opacity:.75;pointer-events:none}.lg-outer .lg-pager-outer{text-align:center;z-index:1080;height:10px;margin-bottom:10px}.lg-outer .lg-pager-outer.lg-pager-hover .lg-pager-cont{overflow:visible}.lg-outer.lg-single-item .lg-pager-outer{display:none}.lg-outer .lg-pager-cont{cursor:pointer;display:inline-block;overflow:hidden;position:relative;vertical-align:top;margin:0 5px}.lg-outer .lg-pager-cont:hover .lg-pager-thumb-cont{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.lg-outer .lg-pager-cont.lg-pager-active .lg-pager{box-shadow:0 0 0 2px #fff inset}.lg-outer .lg-pager-thumb-cont{background-color:#fff;color:#fff;bottom:100%;height:83px;left:0;margin-bottom:20px;margin-left:-60px;opacity:0;padding:5px;position:absolute;width:120px;border-radius:3px;will-change:transform,opacity;-webkit-transition:opacity .15s ease 0s,-webkit-transform .15s ease 0s;-moz-transition:opacity .15s ease 0s,-moz-transform .15s ease 0s;-o-transition:opacity .15s ease 0s,-o-transform .15s ease 0s;transition:opacity .15s ease 0s,transform .15s ease 0s;-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}.lg-outer .lg-pager-thumb-cont img{width:100%;height:100%}.lg-outer .lg-pager{background-color:rgba(255,255,255,.5);border-radius:50%;box-shadow:0 0 0 8px rgba(255,255,255,.7) inset;display:block;height:12px;-webkit-transition:box-shadow .3s ease 0s;-o-transition:box-shadow .3s ease 0s;transition:box-shadow .3s ease 0s;width:12px}.lg-outer .lg-pager:focus,.lg-outer .lg-pager:hover{box-shadow:0 0 0 8px #fff inset}.lg-outer .lg-caret{border-left:10px solid transparent;border-right:10px solid transparent;border-top:10px dashed;bottom:-10px;display:inline-block;height:0;left:50%;margin-left:-5px;position:absolute;vertical-align:middle;width:0}.lg-fullscreen:after{content:"\e20c"}.lg-fullscreen-on .lg-fullscreen:after{content:"\e20d"}.lg-outer .lg-dropdown-overlay{background-color:rgba(0,0,0,.25);bottom:0;cursor:default;left:0;position:absolute;right:0;top:0;z-index:1081;opacity:0;visibility:hidden;will-change:visibility,opacity;-webkit-transition:visibility 0s linear .18s,opacity .18s linear 0s;-o-transition:visibility 0s linear .18s,opacity .18s linear 0s;transition:visibility 0s linear .18s,opacity .18s linear 0s}.lg-outer.lg-dropdown-active .lg-dropdown,.lg-outer.lg-dropdown-active .lg-dropdown-overlay{-webkit-transition-delay:0s;transition-delay:0s;-moz-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1;visibility:visible}.lg-outer.lg-dropdown-active .lg-share{color:#fff}.lg-outer .lg-dropdown{background-color:#fff;border-radius:2px;font-size:14px;list-style-type:none;margin:0;padding:10px 0;position:absolute;right:0;text-align:left;top:50px;opacity:0;visibility:hidden;-moz-transform:translate3d(0,5px,0);-o-transform:translate3d(0,5px,0);-ms-transform:translate3d(0,5px,0);-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0);will-change:visibility,opacity,transform;-webkit-transition:-webkit-transform .18s linear 0s,visibility 0s linear .5s,opacity .18s linear 0s;-moz-transition:-moz-transform .18s linear 0s,visibility 0s linear .5s,opacity .18s linear 0s;-o-transition:-o-transform .18s linear 0s,visibility 0s linear .5s,opacity .18s linear 0s;transition:transform .18s linear 0s,visibility 0s linear .5s,opacity .18s linear 0s}.lg-outer .lg-dropdown:after{content:'';display:block;height:0;width:0;position:absolute;border:8px solid transparent;border-bottom-color:#fff;right:16px;top:-16px}.lg-outer .lg-dropdown>li:last-child{margin-bottom:0}.lg-outer .lg-dropdown>li:hover a{color:#333}.lg-outer .lg-dropdown a{color:#333;display:block;white-space:pre;padding:4px 12px;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:12px}.lg-outer .lg-dropdown a:hover{background-color:rgba(0,0,0,.07)}.lg-outer .lg-dropdown .lg-dropdown-text{display:inline-block;line-height:1;margin-top:-3px;vertical-align:middle}.lg-outer .lg-dropdown .lg-icon{color:#333;display:inline-block;float:none;font-size:20px;height:auto;line-height:1;margin-right:8px;padding:0;vertical-align:middle;width:auto}.lg-outer .lg-share{position:relative}.lg-outer .lg-share:after{content:'\e80d'}.lg-outer .lg-share-facebook .lg-icon{color:#3b5998}.lg-outer .lg-share-facebook .lg-icon:after{content:'\e904'}.lg-outer .lg-share-twitter .lg-icon{color:#00aced}.lg-outer .lg-share-twitter .lg-icon:after{content:'\e907'}.lg-outer .lg-share-pinterest .lg-icon{color:#cb2027}.lg-outer .lg-share-pinterest .lg-icon:after{content:'\e906'}.lg-comment-box{width:420px;max-width:100%;position:absolute;right:0;top:0;bottom:0;z-index:9999;background-color:#fff;will-change:transform;-moz-transform:translate3d(100%,0,0);-o-transform:translate3d(100%,0,0);-ms-transform:translate3d(100%,0,0);-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);-webkit-transition:-webkit-transform .4s cubic-bezier(0,0,.25,1) 0s;-moz-transition:-moz-transform .4s cubic-bezier(0,0,.25,1) 0s;-o-transition:-o-transform .4s cubic-bezier(0,0,.25,1) 0s;transition:transform .4s cubic-bezier(0,0,.25,1) 0s}.lg-comment-box .lg-comment-title{margin:0;color:#fff;font-size:18px}.lg-comment-box .lg-comment-header{background-color:#000;padding:12px 20px;position:absolute;left:0;right:0;top:0}.lg-comment-box .lg-comment-body{height:100%!important;padding-top:43px!important;width:100%!important}.lg-comment-box .fb-comments{height:100%;width:100%;background:url(../images/loading.gif) no-repeat scroll center center #fff;overflow-y:auto;display:inline-block}.lg-comment-box .fb-comments[fb-xfbml-state=rendered]{background-image:none}.lg-comment-box .fb-comments>span{max-width:100%}.lg-comment-box .lg-comment-close{position:absolute;right:5px;top:12px;cursor:pointer;font-size:20px;color:#999;will-change:color;-webkit-transition:color .2s linear;-o-transition:color .2s linear;transition:color .2s linear}.lg-comment-box .lg-comment-close:hover{color:#fff}.lg-comment-box .lg-comment-close:after{content:'\e070'}.lg-comment-box iframe{max-width:100%!important;width:100%!important}.lg-comment-box #disqus_thread{padding:0 20px}.lg-outer .lg-comment-overlay{background-color:rgba(0,0,0,.25);bottom:0;cursor:default;left:0;position:fixed;right:0;top:0;z-index:1081;opacity:0;visibility:hidden;will-change:visibility,opacity;-webkit-transition:visibility 0s linear .18s,opacity .18s linear 0s;-o-transition:visibility 0s linear .18s,opacity .18s linear 0s;transition:visibility 0s linear .18s,opacity .18s linear 0s}.lg-outer .lg-comment-toggle:after{content:'\e908'}.lg-outer.lg-comment-active .lg-comment-overlay{-webkit-transition-delay:0s;transition-delay:0s;-moz-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1;visibility:visible}.lg-outer.lg-comment-active .lg-comment-toggle{color:#fff}.lg-outer.lg-comment-active .lg-comment-box{-moz-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.lg-outer .lg-img-rotate{position:absolute;left:0;right:0;top:0;bottom:0;-webkit-transition:-webkit-transform .4s cubic-bezier(0,0,.25,1) 0s;-moz-transition:-moz-transform .4s cubic-bezier(0,0,.25,1) 0s;-o-transition:-o-transform .4s cubic-bezier(0,0,.25,1) 0s;transition:transform .4s cubic-bezier(0,0,.25,1) 0s}.lg-outer[data-lg-slide-type=iframe] .lg-flip-hor,.lg-outer[data-lg-slide-type=iframe] .lg-flip-ver,.lg-outer[data-lg-slide-type=iframe] .lg-rotate-left,.lg-outer[data-lg-slide-type=iframe] .lg-rotate-right,.lg-outer[data-lg-slide-type=video] .lg-flip-hor,.lg-outer[data-lg-slide-type=video] .lg-flip-ver,.lg-outer[data-lg-slide-type=video] .lg-rotate-left,.lg-outer[data-lg-slide-type=video] .lg-rotate-right{opacity:.75;pointer-events:none}.lg-rotate-left:after{content:'\e900'}.lg-rotate-right:after{content:'\e901'}.lg-icon.lg-flip-hor,.lg-icon.lg-flip-ver{font-size:26px}.lg-flip-ver:after{content:'\e903'}.lg-flip-hor:after{content:'\e902'}.lg-medium-zoom-item{cursor:zoom-in}.lg-medium-zoom .lg-outer{cursor:zoom-out}.lg-medium-zoom .lg-outer.lg-grab img.lg-object{cursor:zoom-out}.lg-medium-zoom .lg-outer.lg-grabbing img.lg-object{cursor:zoom-out}.lg-relative-caption .lg-outer .lg-sub-html{white-space:normal;bottom:auto;padding:0;background-image:none}.lg-relative-caption .lg-outer .lg-relative-caption-item{opacity:0;padding:16px 0;transition:.5s opacity ease}.lg-relative-caption .lg-outer .lg-show-caption .lg-relative-caption-item{opacity:1}.lg-group:after{content:'';display:table;clear:both}.lg-container{display:none;outline:0}.lg-container.lg-show{display:block}.lg-on{scroll-behavior:unset}.lg-hide-sub-html .lg-sub-html,.lg-next,.lg-pager-outer,.lg-prev,.lg-toolbar{opacity:0;will-change:transform,opacity;-webkit-transition:-webkit-transform .25s cubic-bezier(0,0,.25,1) 0s,opacity .25s cubic-bezier(0,0,.25,1) 0s;-moz-transition:-moz-transform .25s cubic-bezier(0,0,.25,1) 0s,opacity .25s cubic-bezier(0,0,.25,1) 0s;-o-transition:-o-transform .25s cubic-bezier(0,0,.25,1) 0s,opacity .25s cubic-bezier(0,0,.25,1) 0s;transition:transform .25s cubic-bezier(0,0,.25,1) 0s,opacity .25s cubic-bezier(0,0,.25,1) 0s}.lg-show-in .lg-next,.lg-show-in .lg-pager-outer,.lg-show-in .lg-prev,.lg-show-in .lg-toolbar{opacity:1}.lg-show-in.lg-hide-sub-html .lg-sub-html{opacity:1}.lg-show-in .lg-hide-items .lg-prev{opacity:0;-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}.lg-show-in .lg-hide-items .lg-next{opacity:0;-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}.lg-show-in .lg-hide-items .lg-toolbar{opacity:0;-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}.lg-show-in .lg-hide-items.lg-hide-sub-html .lg-sub-html{opacity:0;-webkit-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}.lg-outer{width:100%;height:100%;position:fixed;top:0;left:0;z-index:1050;text-align:left;opacity:.001;outline:0;will-change:auto;overflow:hidden;-webkit-transition:opacity .15s ease 0s;-o-transition:opacity .15s ease 0s;transition:opacity .15s ease 0s}.lg-outer *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.lg-outer.lg-zoom-from-image{opacity:1}.lg-outer.lg-visible{opacity:1}.lg-outer.lg-css3 .lg-item:not(.lg-start-end-progress).lg-current,.lg-outer.lg-css3 .lg-item:not(.lg-start-end-progress).lg-next-slide,.lg-outer.lg-css3 .lg-item:not(.lg-start-end-progress).lg-prev-slide{-webkit-transition-duration:inherit!important;transition-duration:inherit!important;-webkit-transition-timing-function:inherit!important;transition-timing-function:inherit!important}.lg-outer.lg-css3.lg-dragging .lg-item.lg-current,.lg-outer.lg-css3.lg-dragging .lg-item.lg-next-slide,.lg-outer.lg-css3.lg-dragging .lg-item.lg-prev-slide{-webkit-transition-duration:0s!important;transition-duration:0s!important;opacity:1}.lg-outer.lg-grab img.lg-object{cursor:-webkit-grab;cursor:-moz-grab;cursor:-o-grab;cursor:-ms-grab;cursor:grab}.lg-outer.lg-grabbing img.lg-object{cursor:move;cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:-o-grabbing;cursor:-ms-grabbing;cursor:grabbing}.lg-outer .lg-content{position:absolute;top:0;left:0;right:0;bottom:0}.lg-outer .lg-inner{width:100%;position:absolute;left:0;top:0;bottom:0;-webkit-transition:opacity 0s;-o-transition:opacity 0s;transition:opacity 0s;white-space:nowrap}.lg-outer .lg-item{display:none!important}.lg-outer .lg-item:not(.lg-start-end-progress){background:url(../images/loading.gif) no-repeat scroll center center transparent}.lg-outer.lg-css3 .lg-current,.lg-outer.lg-css3 .lg-next-slide,.lg-outer.lg-css3 .lg-prev-slide{display:inline-block!important}.lg-outer.lg-css .lg-current{display:inline-block!important}.lg-outer .lg-img-wrap,.lg-outer .lg-item{display:inline-block;text-align:center;position:absolute;width:100%;height:100%}.lg-outer .lg-img-wrap:before,.lg-outer .lg-item:before{content:'';display:inline-block;height:100%;vertical-align:middle}.lg-outer .lg-img-wrap{position:absolute;left:0;right:0;top:0;bottom:0;white-space:nowrap;font-size:0}.lg-outer .lg-item.lg-complete{background-image:none}.lg-outer .lg-item.lg-current{z-index:1060}.lg-outer .lg-object{display:inline-block;vertical-align:middle;max-width:100%;max-height:100%;width:auto;height:auto;position:relative}.lg-outer .lg-empty-html .lg-sub-html,.lg-outer .lg-empty-html.lg-sub-html{display:none}.lg-outer.lg-hide-download .lg-download{opacity:.75;pointer-events:none}.lg-outer .lg-first-slide .lg-dummy-img{position:absolute;top:50%;left:50%}.lg-outer.lg-components-open:not(.lg-zoomed) .lg-components{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.lg-outer.lg-components-open:not(.lg-zoomed) .lg-sub-html{opacity:1;transition:opacity .2s ease-out .15s}.lg-backdrop{position:fixed;top:0;left:0;right:0;bottom:0;z-index:1040;background-color:#000;opacity:0;will-change:auto;-webkit-transition:opacity 333ms ease-in 0s;-o-transition:opacity 333ms ease-in 0s;transition:opacity 333ms ease-in 0s}.lg-backdrop.in{opacity:1}.lg-css3.lg-no-trans .lg-current,.lg-css3.lg-no-trans .lg-next-slide,.lg-css3.lg-no-trans .lg-prev-slide{-webkit-transition:none 0s ease 0s!important;-moz-transition:none 0s ease 0s!important;-o-transition:none 0s ease 0s!important;transition:none 0s ease 0s!important}.lg-css3.lg-use-css3 .lg-item{-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden}.lg-css3.lg-fade .lg-item{opacity:0}.lg-css3.lg-fade .lg-item.lg-current{opacity:1}.lg-css3.lg-fade .lg-item.lg-current,.lg-css3.lg-fade .lg-item.lg-next-slide,.lg-css3.lg-fade .lg-item.lg-prev-slide{-webkit-transition:opacity .1s ease 0s;-moz-transition:opacity .1s ease 0s;-o-transition:opacity .1s ease 0s;transition:opacity .1s ease 0s}.lg-css3.lg-use-css3 .lg-item.lg-start-progress{-webkit-transition:-webkit-transform 1s cubic-bezier(.175,.885,.32,1.275) 0s;-moz-transition:-moz-transform 1s cubic-bezier(.175,.885,.32,1.275) 0s;-o-transition:-o-transform 1s cubic-bezier(.175,.885,.32,1.275) 0s;transition:transform 1s cubic-bezier(.175,.885,.32,1.275) 0s}.lg-css3.lg-use-css3 .lg-item.lg-start-end-progress{-webkit-transition:-webkit-transform 1s cubic-bezier(0,0,.25,1) 0s;-moz-transition:-moz-transform 1s cubic-bezier(0,0,.25,1) 0s;-o-transition:-o-transform 1s cubic-bezier(0,0,.25,1) 0s;transition:transform 1s cubic-bezier(0,0,.25,1) 0s}.lg-css3.lg-slide.lg-use-css3 .lg-item{opacity:0}.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-prev-slide{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-next-slide{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-current{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-current,.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-next-slide,.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-prev-slide{-webkit-transition:-webkit-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-moz-transition:-moz-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-o-transition:-o-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;transition:transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s}.lg-container{display:none}.lg-container.lg-show{display:block}.lg-container.lg-dragging-vertical .lg-backdrop{-webkit-transition-duration:0s!important;transition-duration:0s!important}.lg-container.lg-dragging-vertical .lg-css3 .lg-item.lg-current{-webkit-transition-duration:0s!important;transition-duration:0s!important;opacity:1}.lg-inline .lg-backdrop,.lg-inline .lg-outer{position:absolute}.lg-inline .lg-backdrop{z-index:1}.lg-inline .lg-outer{z-index:2}.lg-inline .lg-maximize:after{content:'\e909'}.lg-components{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);will-change:transform;-webkit-transition:-webkit-transform .35s ease-out 0s;-moz-transition:-moz-transform .35s ease-out 0s;-o-transition:-o-transform .35s ease-out 0s;transition:transform .35s ease-out 0s;z-index:1080;position:absolute;bottom:0;right:0;left:0} \ No newline at end of file
diff --git a/assets/lib/lightgallery/lightgallery.min.js b/assets/lib/lightgallery/lightgallery.min.js
index 69f48a30..bf666f05 100644..100755
--- a/assets/lib/lightgallery/lightgallery.min.js
+++ b/assets/lib/lightgallery/lightgallery.min.js
@@ -1,7 +1,8 @@
-/**!
- * lightgallery.js | 1.2.0 | May 20th 2020
- * http://sachinchoolur.github.io/lightgallery.js/
- * Copyright (c) 2016 Sachin N;
- * @license GPLv3
+/**
+ * lightgallery | 2.4.0 | January 29th 2022
+ * http://www.lightgalleryjs.com/
+ * Copyright (c) 2020 Sachin Neravath;
+ * @license GPLv3
*/
-!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var t;t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,t.Lightgallery=e()}}(function(){var e,t,s;return function(){function e(t,s,l){function i(r,a){if(!s[r]){if(!t[r]){var d="function"==typeof require&&require;if(!a&&d)return d(r,!0);if(o)return o(r,!0);var n=new Error("Cannot find module '"+r+"'");throw n.code="MODULE_NOT_FOUND",n}var u=s[r]={exports:{}};t[r][0].call(u.exports,function(e){return i(t[r][1][e]||e)},u,u.exports,e,t,s,l)}return s[r].exports}for(var o="function"==typeof require&&require,r=0;r<l.length;r++)i(l[r]);return i}return e}()({1:[function(t,s,l){!function(t,s){if("function"==typeof e&&e.amd)e(["exports"],s);else if(void 0!==l)s(l);else{var i={exports:{}};s(i.exports),t.lgUtils=i.exports}}(this,function(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t={getAttribute:function e(t,s){return t[s]},setAttribute:function e(t,s,l){t[s]=l},wrap:function e(t,s){if(t){var l=document.createElement("div");l.className=s,t.parentNode.insertBefore(l,t),t.parentNode.removeChild(t),l.appendChild(t)}},addClass:function e(t,s){t&&(t.classList?t.classList.add(s):t.className+=" "+s)},removeClass:function e(t,s){t&&(t.classList?t.classList.remove(s):t.className=t.className.replace(new RegExp("(^|\\b)"+s.split(" ").join("|")+"(\\b|$)","gi")," "))},hasClass:function e(t,s){return t.classList?t.classList.contains(s):new RegExp("(^| )"+s+"( |$)","gi").test(t.className)},setVendor:function e(t,s,l){t&&(t.style[s.charAt(0).toLowerCase()+s.slice(1)]=l,t.style["webkit"+s]=l,t.style["moz"+s]=l,t.style["ms"+s]=l,t.style["o"+s]=l)},trigger:function e(t,s){var l=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;if(t){var i=new CustomEvent(s,{detail:l});t.dispatchEvent(i)}},Listener:{uid:0},on:function e(s,l,i){var o=this;s&&l.split(" ").forEach(function(e){var l=o.getAttribute(s,"lg-event-uid")||"";t.Listener.uid++,l+="&"+t.Listener.uid,o.setAttribute(s,"lg-event-uid",l),t.Listener[e+t.Listener.uid]=i,s.addEventListener(e.split(".")[0],i,!1)})},off:function e(s,l){if(s){var i=this.getAttribute(s,"lg-event-uid");if(i){i=i.split("&");for(var o=0;o<i.length;o++)if(i[o]){var r=l+i[o];if("."===r.substring(0,1))for(var a in t.Listener)t.Listener.hasOwnProperty(a)&&a.split(".").indexOf(r.split(".")[1])>-1&&(s.removeEventListener(a.split(".")[0],t.Listener[a]),this.setAttribute(s,"lg-event-uid",this.getAttribute(s,"lg-event-uid").replace("&"+i[o],"")),delete t.Listener[a]);else s.removeEventListener(r.split(".")[0],t.Listener[r]),this.setAttribute(s,"lg-event-uid",this.getAttribute(s,"lg-event-uid").replace("&"+i[o],"")),delete t.Listener[r]}}}},param:function e(t){return Object.keys(t).map(function(e){return encodeURIComponent(e)+"="+encodeURIComponent(t[e])}).join("&")}};e.default=t})},{}],2:[function(t,s,l){!function(s,i){if("function"==typeof e&&e.amd)e(["./lg-utils"],i);else if(void 0!==l)i(t("./lg-utils"));else{var o={exports:{}};i(s.lgUtils),s.lightgallery=o.exports}}(this,function(e){"use strict";function t(e){return e&&e.__esModule?e:{default:e}}function s(e,t){if(this.el=e,this.s=i({},o,t),this.s.dynamic&&"undefined"!==this.s.dynamicEl&&this.s.dynamicEl.constructor===Array&&!this.s.dynamicEl.length)throw"When using dynamic mode, you must also define dynamicEl as an Array.";return this.modules={},this.lGalleryOn=!1,this.lgBusy=!1,this.hideBartimeout=!1,this.isTouch="ontouchstart"in document.documentElement,this.s.slideEndAnimatoin&&(this.s.hideControlOnEnd=!1),this.items=[],this.s.dynamic?this.items=this.s.dynamicEl:"this"===this.s.selector?this.items.push(this.el):""!==this.s.selector?this.s.selectWithin?this.items=document.querySelector(this.s.selectWithin).querySelectorAll(this.s.selector):this.items=this.el.querySelectorAll(this.s.selector):this.items=this.el.children,this.___slide="",this.outer="",this.init(),this}var l=t(e),i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var s=arguments[t];for(var l in s)Object.prototype.hasOwnProperty.call(s,l)&&(e[l]=s[l])}return e};!function(){function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var s=document.createEvent("CustomEvent");return s.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),s}if("function"==typeof window.CustomEvent)return!1;e.prototype=window.Event.prototype,window.CustomEvent=e}(),window.utils=l.default,window.lgData={uid:0},window.lgModules={};var o={mode:"lg-slide",cssEasing:"ease",easing:"linear",speed:600,height:"100%",width:"100%",addClass:"",startClass:"lg-start-zoom",backdropDuration:150,hideBarsDelay:6e3,useLeft:!1,ariaLabelledby:"",ariaDescribedby:"",closable:!0,loop:!0,escKey:!0,keyPress:!0,controls:!0,slideEndAnimatoin:!0,hideControlOnEnd:!1,mousewheel:!1,getCaptionFromTitleOrAlt:!0,appendSubHtmlTo:".lg-sub-html",subHtmlSelectorRelative:!1,preload:1,showAfterLoad:!0,selector:"",selectWithin:"",nextHtml:"",prevHtml:"",index:!1,iframeMaxWidth:"100%",download:!0,counter:!0,appendCounterTo:".lg-toolbar",swipeThreshold:50,enableSwipe:!0,enableDrag:!0,dynamic:!1,dynamicEl:[],galleryId:1};s.prototype.init=function(){var e=this;e.s.preload>e.items.length&&(e.s.preload=e.items.length);var t=window.location.hash;if(t.indexOf("lg="+this.s.galleryId)>0&&(e.index=parseInt(t.split("&slide=")[1],10),l.default.addClass(document.body,"lg-from-hash"),l.default.hasClass(document.body,"lg-on")||(l.default.addClass(document.body,"lg-on"),setTimeout(function(){e.build(e.index)}))),e.s.dynamic)l.default.trigger(this.el,"onBeforeOpen"),e.index=e.s.index||0,l.default.hasClass(document.body,"lg-on")||(l.default.addClass(document.body,"lg-on"),setTimeout(function(){e.build(e.index)}));else for(var s=0;s<e.items.length;s++)!function(t){l.default.on(e.items[t],"click.lgcustom",function(s){s.preventDefault(),l.default.trigger(e.el,"onBeforeOpen"),e.index=e.s.index||t,l.default.hasClass(document.body,"lg-on")||(e.build(e.index),l.default.addClass(document.body,"lg-on"))})}(s)},s.prototype.build=function(e){var t=this;t.structure();for(var s in window.lgModules)t.modules[s]=new window.lgModules[s](t.el);t.slide(e,!1,!1),t.s.keyPress&&t.keyPress(),t.items.length>1&&(t.arrow(),setTimeout(function(){t.enableDrag(),t.enableSwipe()},50),t.s.mousewheel&&t.mousewheel()),t.counter(),t.closeGallery(),l.default.trigger(t.el,"onAfterOpen"),l.default.on(t.outer,"mousemove.lg click.lg touchstart.lg",function(){l.default.removeClass(t.outer,"lg-hide-items"),clearTimeout(t.hideBartimeout),t.hideBartimeout=setTimeout(function(){l.default.addClass(t.outer,"lg-hide-items")},t.s.hideBarsDelay)})},s.prototype.structure=function(){var e="",t="",s=0,i="",o,r=this;for(document.body.insertAdjacentHTML("beforeend",'<div class="lg-backdrop"></div>'),l.default.setVendor(document.querySelector(".lg-backdrop"),"TransitionDuration",this.s.backdropDuration+"ms"),s=0;s<this.items.length;s++)e+='<div class="lg-item"></div>';if(this.s.controls&&this.items.length>1&&(t='<div class="lg-actions"><button aria-label="Previous slide" class="lg-prev lg-icon">'+this.s.prevHtml+'</button><button aria-label="Next slide" class="lg-next lg-icon">'+this.s.nextHtml+"</button></div>"),".lg-sub-html"===this.s.appendSubHtmlTo&&(i='<div role="status" aria-live="polite" class="lg-sub-html"></div>'),o='<div tabindex="-1" aria-modal="true" '+(this.s.ariaLabelledby?'aria-labelledby="'+this.s.ariaLabelledby+'"':"")+" "+(this.s.ariaDescribedby?'aria-describedby="'+this.s.ariaDescribedby+'"':"")+' role="dialog" class="lg-outer '+this.s.addClass+" "+this.s.startClass+'"><div class="lg" style="width:'+this.s.width+"; height:"+this.s.height+'"><div class="lg-inner">'+e+'</div><div class="lg-toolbar group"><button aria-label="Close gallery" class="lg-close lg-icon"></button></div>'+t+i+"</div></div>",document.body.insertAdjacentHTML("beforeend",o),this.outer=document.querySelector(".lg-outer"),this.outer.focus(),this.___slide=this.outer.querySelectorAll(".lg-item"),this.s.useLeft?(l.default.addClass(this.outer,"lg-use-left"),this.s.mode="lg-slide"):l.default.addClass(this.outer,"lg-use-css3"),r.setTop(),l.default.on(window,"resize.lg orientationchange.lg",function(){setTimeout(function(){r.setTop()},100)}),l.default.addClass(this.___slide[this.index],"lg-current"),this.doCss()?l.default.addClass(this.outer,"lg-css3"):(l.default.addClass(this.outer,"lg-css"),this.s.speed=0),l.default.addClass(this.outer,this.s.mode),this.s.enableDrag&&this.items.length>1&&l.default.addClass(this.outer,"lg-grab"),this.s.showAfterLoad&&l.default.addClass(this.outer,"lg-show-after-load"),this.doCss()){var a=this.outer.querySelector(".lg-inner");l.default.setVendor(a,"TransitionTimingFunction",this.s.cssEasing),l.default.setVendor(a,"TransitionDuration",this.s.speed+"ms")}setTimeout(function(){l.default.addClass(document.querySelector(".lg-backdrop"),"in")}),setTimeout(function(){l.default.addClass(r.outer,"lg-visible")},this.s.backdropDuration),this.s.download&&this.outer.querySelector(".lg-toolbar").insertAdjacentHTML("beforeend",'<a id="lg-download" aria-label="Download" target="_blank" download class="lg-download lg-icon"></a>'),this.prevScrollTop=document.documentElement.scrollTop||document.body.scrollTop},s.prototype.setTop=function(){if("100%"!==this.s.height){var e=window.innerHeight,t=(e-parseInt(this.s.height,10))/2,s=this.outer.querySelector(".lg");e>=parseInt(this.s.height,10)?s.style.top=t+"px":s.style.top="0px"}},s.prototype.doCss=function(){return!!function e(){var t=["transition","MozTransition","WebkitTransition","OTransition","msTransition","KhtmlTransition"],s=document.documentElement,l=0;for(l=0;l<t.length;l++)if(t[l]in s.style)return!0}()},s.prototype.isVideo=function(e,t){var s;if(s=this.s.dynamic?this.s.dynamicEl[t].html:this.items[t].getAttribute("data-html"),!e&&s)return{html5:!0};var l=e.match(/\/\/(?:www\.)?youtu(?:\.be|be\.com|be-nocookie\.com)\/(?:watch\?v=|embed\/)?([a-z0-9\-\_\%]+)/i),i=e.match(/\/\/(?:www\.)?vimeo.com\/([0-9a-z\-_]+)/i),o=e.match(/\/\/(?:www\.)?dai.ly\/([0-9a-z\-_]+)/i),r=e.match(/\/\/(?:www\.)?(?:vk\.com|vkontakte\.ru)\/(?:video_ext\.php\?)(.*)/i);return l?{youtube:l}:i?{vimeo:i}:o?{dailymotion:o}:r?{vk:r}:void 0},s.prototype.counter=function(){this.s.counter&&this.outer.querySelector(this.s.appendCounterTo).insertAdjacentHTML("beforeend",'<div id="lg-counter" role="status" aria-live="polite"><span id="lg-counter-current">'+(parseInt(this.index,10)+1)+'</span> / <span id="lg-counter-all">'+this.items.length+"</span></div>")},s.prototype.addHtml=function(e){var t=null,s;if(this.s.dynamic?t=this.s.dynamicEl[e].subHtml:(s=this.items[e],t=s.getAttribute("data-sub-html"),this.s.getCaptionFromTitleOrAlt&&!t&&(t=s.getAttribute("title"))&&s.querySelector("img")&&(t=s.querySelector("img").getAttribute("alt"))),void 0!==t&&null!==t){var i=t.substring(0,1);"."!==i&&"#"!==i||(t=this.s.subHtmlSelectorRelative&&!this.s.dynamic?s.querySelector(t).innerHTML:document.querySelector(t).innerHTML)}else t="";".lg-sub-html"===this.s.appendSubHtmlTo?this.outer.querySelector(this.s.appendSubHtmlTo).innerHTML=t:this.___slide[e].insertAdjacentHTML("beforeend",t),void 0!==t&&null!==t&&(""===t?l.default.addClass(this.outer.querySelector(this.s.appendSubHtmlTo),"lg-empty-html"):l.default.removeClass(this.outer.querySelector(this.s.appendSubHtmlTo),"lg-empty-html")),l.default.trigger(this.el,"onAfterAppendSubHtml",{index:e})},s.prototype.preload=function(e){var t=1,s=1;for(t=1;t<=this.s.preload&&!(t>=this.items.length-e);t++)this.loadContent(e+t,!1,0);for(s=1;s<=this.s.preload&&!(e-s<0);s++)this.loadContent(e-s,!1,0)},s.prototype.loadContent=function(e,t,s){var i=this,o=!1,r,a,d,n,u,c,g,f=function e(t){for(var s=[],l=[],i=0;i<t.length;i++){var o=t[i].split(" ");""===o[0]&&o.splice(0,1),l.push(o[0]),s.push(o[1])}for(var r=window.innerWidth,d=0;d<s.length;d++)if(parseInt(s[d],10)>r){a=l[d];break}};if(i.s.dynamic){if(i.s.dynamicEl[e].poster&&(o=!0,d=i.s.dynamicEl[e].poster),c=i.s.dynamicEl[e].html,a=i.s.dynamicEl[e].src,g=i.s.dynamicEl[e].alt,i.s.dynamicEl[e].responsive){f(i.s.dynamicEl[e].responsive.split(","))}n=i.s.dynamicEl[e].srcset,u=i.s.dynamicEl[e].sizes}else{if(i.items[e].getAttribute("data-poster")&&(o=!0,d=i.items[e].getAttribute("data-poster")),c=i.items[e].getAttribute("data-html"),a=i.items[e].getAttribute("href")||i.items[e].getAttribute("data-src"),g=i.items[e].getAttribute("title"),i.items[e].querySelector("img")&&(g=g||i.items[e].querySelector("img").getAttribute("alt")),i.items[e].getAttribute("data-responsive")){f(i.items[e].getAttribute("data-responsive").split(","))}n=i.items[e].getAttribute("data-srcset"),u=i.items[e].getAttribute("data-sizes")}var h=!1;i.s.dynamic?i.s.dynamicEl[e].iframe&&(h=!0):"true"===i.items[e].getAttribute("data-iframe")&&(h=!0);var m=i.isVideo(a,e);if(!l.default.hasClass(i.___slide[e],"lg-loaded")){if(h)i.___slide[e].insertAdjacentHTML("afterbegin",'<div class="lg-video-cont" style="max-width:'+i.s.iframeMaxWidth+'"><div class="lg-video"><iframe class="lg-object" frameborder="0" src="'+a+'" allowfullscreen="true"></iframe></div></div>');else if(o){var p="";p=m&&m.youtube?"lg-has-youtube":m&&m.vimeo?"lg-has-vimeo":"lg-has-html5",i.___slide[e].insertAdjacentHTML("beforeend",'<div class="lg-video-cont '+p+' "><div class="lg-video"><span class="lg-video-play"></span><img class="lg-object lg-has-poster" src="'+d+'" /></div></div>')}else m?(i.___slide[e].insertAdjacentHTML("beforeend",'<div class="lg-video-cont "><div class="lg-video"></div></div>'),l.default.trigger(i.el,"hasVideo",{index:e,src:a,html:c})):(g=g?'alt="'+g+'"':"",i.___slide[e].insertAdjacentHTML("beforeend",'<div class="lg-img-wrap"><img class="lg-object lg-image" '+g+' src="'+a+'" /></div>'));if(l.default.trigger(i.el,"onAferAppendSlide",{index:e}),r=i.___slide[e].querySelector(".lg-object"),u&&r.setAttribute("sizes",u),n){r.setAttribute("srcset",n);try{picturefill({elements:[r[0]]})}catch(e){console.error("Make sure you have included Picturefill version 2")}}".lg-sub-html"!==this.s.appendSubHtmlTo&&i.addHtml(e),l.default.addClass(i.___slide[e],"lg-loaded")}l.default.on(i.___slide[e].querySelector(".lg-object"),"load.lg error.lg",function(){var t=0;s&&!l.default.hasClass(document.body,"lg-from-hash")&&(t=s),setTimeout(function(){l.default.addClass(i.___slide[e],"lg-complete"),l.default.trigger(i.el,"onSlideItemLoad",{index:e,delay:s||0})},t)}),m&&m.html5&&!o&&l.default.addClass(i.___slide[e],"lg-complete"),!0===t&&(l.default.hasClass(i.___slide[e],"lg-complete")?i.preload(e):l.default.on(i.___slide[e].querySelector(".lg-object"),"load.lg error.lg",function(){i.preload(e)}))},s.prototype.slide=function(e,t,s){for(var i=0,o=0;o<this.___slide.length;o++)if(l.default.hasClass(this.___slide[o],"lg-current")){i=o;break}var r=this;if(!r.lGalleryOn||i!==e){var a=this.___slide.length,d=r.lGalleryOn?this.s.speed:0,n=!1,u=!1;if(!r.lgBusy){if(this.s.download){var c;c=r.s.dynamic?!1!==r.s.dynamicEl[e].downloadUrl&&(r.s.dynamicEl[e].downloadUrl||r.s.dynamicEl[e].src):"false"!==r.items[e].getAttribute("data-download-url")&&(r.items[e].getAttribute("data-download-url")||r.items[e].getAttribute("href")||r.items[e].getAttribute("data-src")),c?(document.getElementById("lg-download").setAttribute("href",c),l.default.removeClass(r.outer,"lg-hide-download")):l.default.addClass(r.outer,"lg-hide-download")}if(l.default.trigger(r.el,"onBeforeSlide",{prevIndex:i,index:e,fromTouch:t,fromThumb:s}),r.lgBusy=!0,clearTimeout(r.hideBartimeout),".lg-sub-html"===this.s.appendSubHtmlTo&&setTimeout(function(){r.addHtml(e)},d),this.arrowDisable(e),t){var g=e-1,f=e+1;0===e&&i===a-1?(f=0,g=a-1):e===a-1&&0===i&&(f=0,g=a-1),l.default.removeClass(r.outer.querySelector(".lg-prev-slide"),"lg-prev-slide"),l.default.removeClass(r.outer.querySelector(".lg-current"),"lg-current"),l.default.removeClass(r.outer.querySelector(".lg-next-slide"),"lg-next-slide"),l.default.addClass(r.___slide[g],"lg-prev-slide"),l.default.addClass(r.___slide[f],"lg-next-slide"),l.default.addClass(r.___slide[e],"lg-current")}else{l.default.addClass(r.outer,"lg-no-trans");for(var h=0;h<this.___slide.length;h++)l.default.removeClass(this.___slide[h],"lg-prev-slide"),l.default.removeClass(this.___slide[h],"lg-next-slide");e<i?(u=!0,0!==e||i!==a-1||s||(u=!1,n=!0)):e>i&&(n=!0,e!==a-1||0!==i||s||(u=!0,n=!1)),u?(l.default.addClass(this.___slide[e],"lg-prev-slide"),l.default.addClass(this.___slide[i],"lg-next-slide")):n&&(l.default.addClass(this.___slide[e],"lg-next-slide"),l.default.addClass(this.___slide[i],"lg-prev-slide")),setTimeout(function(){l.default.removeClass(r.outer.querySelector(".lg-current"),"lg-current"),l.default.addClass(r.___slide[e],"lg-current"),l.default.removeClass(r.outer,"lg-no-trans")},50)}r.lGalleryOn?(setTimeout(function(){r.loadContent(e,!0,0)},this.s.speed+50),setTimeout(function(){r.lgBusy=!1,l.default.trigger(r.el,"onAfterSlide",{prevIndex:i,index:e,fromTouch:t,fromThumb:s})},this.s.speed)):(r.loadContent(e,!0,r.s.backdropDuration),r.lgBusy=!1,l.default.trigger(r.el,"onAfterSlide",{prevIndex:i,index:e,fromTouch:t,fromThumb:s})),r.lGalleryOn=!0,this.s.counter&&document.getElementById("lg-counter-current")&&(document.getElementById("lg-counter-current").innerHTML=e+1)}}},s.prototype.goToNextSlide=function(e){var t=this;t.lgBusy||(t.index+1<t.___slide.length?(t.index++,l.default.trigger(t.el,"onBeforeNextSlide",{index:t.index}),t.slide(t.index,e,!1)):t.s.loop?(t.index=0,l.default.trigger(t.el,"onBeforeNextSlide",{index:t.index}),t.slide(t.index,e,!1)):t.s.slideEndAnimatoin&&(l.default.addClass(t.outer,"lg-right-end"),setTimeout(function(){l.default.removeClass(t.outer,"lg-right-end")},400)))},s.prototype.goToPrevSlide=function(e){var t=this;t.lgBusy||(t.index>0?(t.index--,l.default.trigger(t.el,"onBeforePrevSlide",{index:t.index,fromTouch:e}),t.slide(t.index,e,!1)):t.s.loop?(t.index=t.items.length-1,l.default.trigger(t.el,"onBeforePrevSlide",{index:t.index,fromTouch:e}),t.slide(t.index,e,!1)):t.s.slideEndAnimatoin&&(l.default.addClass(t.outer,"lg-left-end"),setTimeout(function(){l.default.removeClass(t.outer,"lg-left-end")},400)))},s.prototype.keyPress=function(){var e=this;this.items.length>1&&l.default.on(window,"keyup.lg",function(t){e.items.length>1&&(37===t.keyCode&&(t.preventDefault(),e.goToPrevSlide()),39===t.keyCode&&(t.preventDefault(),e.goToNextSlide()))}),l.default.on(window,"keydown.lg",function(t){!0===e.s.escKey&&27===t.keyCode&&(t.preventDefault(),l.default.hasClass(e.outer,"lg-thumb-open")?l.default.removeClass(e.outer,"lg-thumb-open"):e.destroy())})},s.prototype.arrow=function(){var e=this;l.default.on(this.outer.querySelector(".lg-prev"),"click.lg",function(){e.goToPrevSlide()}),l.default.on(this.outer.querySelector(".lg-next"),"click.lg",function(){e.goToNextSlide()})},s.prototype.arrowDisable=function(e){if(!this.s.loop&&this.s.hideControlOnEnd){var t=this.outer.querySelector(".lg-next"),s=this.outer.querySelector(".lg-prev");e+1<this.___slide.length?(t.removeAttribute("disabled"),l.default.removeClass(t,"disabled")):(t.setAttribute("disabled","disabled"),l.default.addClass(t,"disabled")),e>0?(s.removeAttribute("disabled"),l.default.removeClass(s,"disabled")):(s.setAttribute("disabled","disabled"),l.default.addClass(s,"disabled"))}},s.prototype.setTranslate=function(e,t,s){this.s.useLeft?e.style.left=t:l.default.setVendor(e,"Transform","translate3d("+t+"px, "+s+"px, 0px)")},s.prototype.touchMove=function(e,t){var s=t-e;Math.abs(s)>15&&(l.default.addClass(this.outer,"lg-dragging"),this.setTranslate(this.___slide[this.index],s,0),this.setTranslate(document.querySelector(".lg-prev-slide"),-this.___slide[this.index].clientWidth+s,0),this.setTranslate(document.querySelector(".lg-next-slide"),this.___slide[this.index].clientWidth+s,0))},s.prototype.touchEnd=function(e){var t=this;"lg-slide"!==t.s.mode&&l.default.addClass(t.outer,"lg-slide");for(var s=0;s<this.___slide.length;s++)l.default.hasClass(this.___slide[s],"lg-current")||l.default.hasClass(this.___slide[s],"lg-prev-slide")||l.default.hasClass(this.___slide[s],"lg-next-slide")||(this.___slide[s].style.opacity="0");setTimeout(function(){l.default.removeClass(t.outer,"lg-dragging"),e<0&&Math.abs(e)>t.s.swipeThreshold?t.goToNextSlide(!0):e>0&&Math.abs(e)>t.s.swipeThreshold?t.goToPrevSlide(!0):Math.abs(e)<5&&l.default.trigger(t.el,"onSlideClick");for(var s=0;s<t.___slide.length;s++)t.___slide[s].removeAttribute("style")}),setTimeout(function(){l.default.hasClass(t.outer,"lg-dragging")||"lg-slide"===t.s.mode||l.default.removeClass(t.outer,"lg-slide")},t.s.speed+100)},s.prototype.enableSwipe=function(){var e=this,t=0,s=0,i=!1;if(e.s.enableSwipe&&e.isTouch&&e.doCss()){for(var o=0;o<e.___slide.length;o++)l.default.on(e.___slide[o],"touchstart.lg",function(s){l.default.hasClass(e.outer,"lg-zoomed")||e.lgBusy||(s.preventDefault(),e.manageSwipeClass(),t=s.targetTouches[0].pageX)});for(var r=0;r<e.___slide.length;r++)l.default.on(e.___slide[r],"touchmove.lg",function(o){l.default.hasClass(e.outer,"lg-zoomed")||(o.preventDefault(),s=o.targetTouches[0].pageX,e.touchMove(t,s),i=!0)});for(var a=0;a<e.___slide.length;a++)l.default.on(e.___slide[a],"touchend.lg",function(){l.default.hasClass(e.outer,"lg-zoomed")||(i?(i=!1,e.touchEnd(s-t)):l.default.trigger(e.el,"onSlideClick"))})}},s.prototype.enableDrag=function(){var e=this,t=0,s=0,i=!1,o=!1;if(e.s.enableDrag&&!e.isTouch&&e.doCss()){for(var r=0;r<e.___slide.length;r++)l.default.on(e.___slide[r],"mousedown.lg",function(s){l.default.hasClass(e.outer,"lg-zoomed")||(l.default.hasClass(s.target,"lg-object")||l.default.hasClass(s.target,"lg-video-play"))&&(s.preventDefault(),e.lgBusy||(e.manageSwipeClass(),t=s.pageX,i=!0,e.outer.scrollLeft+=1,e.outer.scrollLeft-=1,l.default.removeClass(e.outer,"lg-grab"),l.default.addClass(e.outer,"lg-grabbing"),l.default.trigger(e.el,"onDragstart")))});l.default.on(window,"mousemove.lg",function(r){i&&(o=!0,s=r.pageX,e.touchMove(t,s),l.default.trigger(e.el,"onDragmove"))}),l.default.on(window,"mouseup.lg",function(r){o?(o=!1,e.touchEnd(s-t),l.default.trigger(e.el,"onDragend")):(l.default.hasClass(r.target,"lg-object")||l.default.hasClass(r.target,"lg-video-play"))&&l.default.trigger(e.el,"onSlideClick"),i&&(i=!1,l.default.removeClass(e.outer,"lg-grabbing"),l.default.addClass(e.outer,"lg-grab"))})}},s.prototype.manageSwipeClass=function(){var e=this.index+1,t=this.index-1,s=this.___slide.length;this.s.loop&&(0===this.index?t=s-1:this.index===s-1&&(e=0));for(var i=0;i<this.___slide.length;i++)l.default.removeClass(this.___slide[i],"lg-next-slide"),l.default.removeClass(this.___slide[i],"lg-prev-slide");t>-1&&l.default.addClass(this.___slide[t],"lg-prev-slide"),l.default.addClass(this.___slide[e],"lg-next-slide")},s.prototype.mousewheel=function(){var e=this;l.default.on(e.outer,"mousewheel.lg",function(t){t.deltaY&&(t.deltaY>0?e.goToPrevSlide():e.goToNextSlide(),t.preventDefault())})},s.prototype.closeGallery=function(){var e=this,t=!1;l.default.on(this.outer.querySelector(".lg-close"),"click.lg",function(){e.destroy()}),e.s.closable&&(l.default.on(e.outer,"mousedown.lg",function(e){t=!!(l.default.hasClass(e.target,"lg-outer")||l.default.hasClass(e.target,"lg-item")||l.default.hasClass(e.target,"lg-img-wrap"))}),l.default.on(e.outer,"mouseup.lg",function(s){(l.default.hasClass(s.target,"lg-outer")||l.default.hasClass(s.target,"lg-item")||l.default.hasClass(s.target,"lg-img-wrap")&&t)&&(l.default.hasClass(e.outer,"lg-dragging")||e.destroy())}))},s.prototype.destroy=function(e){var t=this;if(e||l.default.trigger(t.el,"onBeforeClose"),document.body.scrollTop=t.prevScrollTop,document.documentElement.scrollTop=t.prevScrollTop,e){if(!t.s.dynamic)for(var s=0;s<this.items.length;s++)l.default.off(this.items[s],".lg"),l.default.off(this.items[s],".lgcustom");var i=t.el.getAttribute("lg-uid");delete window.lgData[i],t.el.removeAttribute("lg-uid")}l.default.off(this.el,".lgtm");for(var o in window.lgModules)t.modules[o]&&t.modules[o].destroy(e);this.lGalleryOn=!1,clearTimeout(t.hideBartimeout),this.hideBartimeout=!1,l.default.off(window,".lg"),l.default.removeClass(document.body,"lg-on"),l.default.removeClass(document.body,"lg-from-hash"),t.outer&&l.default.removeClass(t.outer,"lg-visible"),l.default.removeClass(document.querySelector(".lg-backdrop"),"in"),setTimeout(function(){try{t.outer&&t.outer.parentNode.removeChild(t.outer),document.querySelector(".lg-backdrop")&&document.querySelector(".lg-backdrop").parentNode.removeChild(document.querySelector(".lg-backdrop")),e||l.default.trigger(t.el,"onCloseAfter"),t.el.focus()}catch(e){}},t.s.backdropDuration+50)},window.lightGallery=function(e,t){if(e)try{if(e.getAttribute("lg-uid"))try{window.lgData[e.getAttribute("lg-uid")].init()}catch(e){console.error("lightGallery has not initiated properly")}else{var l="lg"+window.lgData.uid++;window.lgData[l]=new s(e,t),e.setAttribute("lg-uid",l)}}catch(e){console.error("lightGallery has not initiated properly")}}})},{"./lg-utils":1}]},{},[2])(2)}); \ No newline at end of file
+
+!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).lightGallery=e()}(this,(function(){"use strict";var t=function(){return(t=Object.assign||function(t){for(var e,i=1,s=arguments.length;i<s;i++)for(var n in e=arguments[i])Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t}).apply(this,arguments)};var e="lgAfterAppendSlide",i="lgInit",s="lgHasVideo",n="lgContainerResize",o="lgUpdateSlides",r="lgAfterAppendSubHtml",l="lgBeforeOpen",a="lgAfterOpen",g="lgSlideItemLoad",d="lgBeforeSlide",h="lgAfterSlide",u="lgPosterClick",c="lgDragStart",m="lgDragMove",p="lgDragEnd",f="lgBeforeNextSlide",v="lgBeforePrevSlide",y="lgBeforeClose",b="lgAfterClose",I={mode:"lg-slide",easing:"ease",speed:400,licenseKey:"0000-0000-000-0000",height:"100%",width:"100%",addClass:"",startClass:"lg-start-zoom",backdropDuration:300,container:"",startAnimationDuration:400,zoomFromOrigin:!0,hideBarsDelay:0,showBarsAfter:1e4,slideDelay:0,supportLegacyBrowser:!0,allowMediaOverlap:!1,videoMaxSize:"1280-720",loadYouTubePoster:!0,defaultCaptionHeight:0,ariaLabelledby:"",ariaDescribedby:"",closable:!0,swipeToClose:!0,closeOnTap:!0,showCloseIcon:!0,showMaximizeIcon:!1,loop:!0,escKey:!0,keyPress:!0,controls:!0,slideEndAnimation:!0,hideControlOnEnd:!1,mousewheel:!1,getCaptionFromTitleOrAlt:!0,appendSubHtmlTo:".lg-sub-html",subHtmlSelectorRelative:!1,preload:2,numberOfSlideItemsInDom:10,selector:"",selectWithin:"",nextHtml:"",prevHtml:"",index:0,iframeWidth:"100%",iframeHeight:"100%",iframeMaxWidth:"100%",iframeMaxHeight:"100%",download:!0,counter:!0,appendCounterTo:".lg-toolbar",swipeThreshold:50,enableSwipe:!0,enableDrag:!0,dynamic:!1,dynamicEl:[],extraProps:[],exThumbImage:"",isMobile:void 0,mobileSettings:{controls:!1,showCloseIcon:!1,download:!1},plugins:[],strings:{closeGallery:"Close gallery",toggleMaximize:"Toggle maximize",previousSlide:"Previous slide",nextSlide:"Next slide",download:"Download",playVideo:"Play video"}};var C=function(){function t(t){return this.cssVenderPrefixes=["TransitionDuration","TransitionTimingFunction","Transform","Transition"],this.selector=this._getSelector(t),this.firstElement=this._getFirstEl(),this}return t.generateUUID=function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(t){var e=16*Math.random()|0;return("x"==t?e:3&e|8).toString(16)}))},t.prototype._getSelector=function(t,e){return void 0===e&&(e=document),"string"!=typeof t?t:(e=e||document,"#"===t.substring(0,1)?e.querySelector(t):e.querySelectorAll(t))},t.prototype._each=function(t){return this.selector?(void 0!==this.selector.length?[].forEach.call(this.selector,t):t(this.selector,0),this):this},t.prototype._setCssVendorPrefix=function(t,e,i){var s=e.replace(/-([a-z])/gi,(function(t,e){return e.toUpperCase()}));-1!==this.cssVenderPrefixes.indexOf(s)?(t.style[s.charAt(0).toLowerCase()+s.slice(1)]=i,t.style["webkit"+s]=i,t.style["moz"+s]=i,t.style["ms"+s]=i,t.style["o"+s]=i):t.style[s]=i},t.prototype._getFirstEl=function(){return this.selector&&void 0!==this.selector.length?this.selector[0]:this.selector},t.prototype.isEventMatched=function(t,e){var i=e.split(".");return t.split(".").filter((function(t){return t})).every((function(t){return-1!==i.indexOf(t)}))},t.prototype.attr=function(t,e){return void 0===e?this.firstElement?this.firstElement.getAttribute(t):"":(this._each((function(i){i.setAttribute(t,e)})),this)},t.prototype.find=function(t){return x(this._getSelector(t,this.selector))},t.prototype.first=function(){return this.selector&&void 0!==this.selector.length?x(this.selector[0]):x(this.selector)},t.prototype.eq=function(t){return x(this.selector[t])},t.prototype.parent=function(){return x(this.selector.parentElement)},t.prototype.get=function(){return this._getFirstEl()},t.prototype.removeAttr=function(t){var e=t.split(" ");return this._each((function(t){e.forEach((function(e){return t.removeAttribute(e)}))})),this},t.prototype.wrap=function(t){if(!this.firstElement)return this;var e=document.createElement("div");return e.className=t,this.firstElement.parentNode.insertBefore(e,this.firstElement),this.firstElement.parentNode.removeChild(this.firstElement),e.appendChild(this.firstElement),this},t.prototype.addClass=function(t){return void 0===t&&(t=""),this._each((function(e){t.split(" ").forEach((function(t){t&&e.classList.add(t)}))})),this},t.prototype.removeClass=function(t){return this._each((function(e){t.split(" ").forEach((function(t){t&&e.classList.remove(t)}))})),this},t.prototype.hasClass=function(t){return!!this.firstElement&&this.firstElement.classList.contains(t)},t.prototype.hasAttribute=function(t){return!!this.firstElement&&this.firstElement.hasAttribute(t)},t.prototype.toggleClass=function(t){return this.firstElement?(this.hasClass(t)?this.removeClass(t):this.addClass(t),this):this},t.prototype.css=function(t,e){var i=this;return this._each((function(s){i._setCssVendorPrefix(s,t,e)})),this},t.prototype.on=function(e,i){var s=this;return this.selector?(e.split(" ").forEach((function(e){Array.isArray(t.eventListeners[e])||(t.eventListeners[e]=[]),t.eventListeners[e].push(i),s.selector.addEventListener(e.split(".")[0],i)})),this):this},t.prototype.once=function(t,e){var i=this;return this.on(t,(function(){i.off(t),e(t)})),this},t.prototype.off=function(e){var i=this;return this.selector?(Object.keys(t.eventListeners).forEach((function(s){i.isEventMatched(e,s)&&(t.eventListeners[s].forEach((function(t){i.selector.removeEventListener(s.split(".")[0],t)})),t.eventListeners[s]=[])})),this):this},t.prototype.trigger=function(t,e){if(!this.firstElement)return this;var i=new CustomEvent(t.split(".")[0],{detail:e||null});return this.firstElement.dispatchEvent(i),this},t.prototype.load=function(t){var e=this;return fetch(t).then((function(t){return t.text()})).then((function(t){e.selector.innerHTML=t})),this},t.prototype.html=function(t){return void 0===t?this.firstElement?this.firstElement.innerHTML:"":(this._each((function(e){e.innerHTML=t})),this)},t.prototype.append=function(t){return this._each((function(e){"string"==typeof t?e.insertAdjacentHTML("beforeend",t):e.appendChild(t)})),this},t.prototype.prepend=function(t){return this._each((function(e){e.insertAdjacentHTML("afterbegin",t)})),this},t.prototype.remove=function(){return this._each((function(t){t.parentNode.removeChild(t)})),this},t.prototype.empty=function(){return this._each((function(t){t.innerHTML=""})),this},t.prototype.scrollTop=function(t){return void 0!==t?(document.body.scrollTop=t,document.documentElement.scrollTop=t,this):window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0},t.prototype.scrollLeft=function(t){return void 0!==t?(document.body.scrollLeft=t,document.documentElement.scrollLeft=t,this):window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0},t.prototype.offset=function(){if(!this.firstElement)return{left:0,top:0};var t=this.firstElement.getBoundingClientRect(),e=x("body").style().marginLeft;return{left:t.left-parseFloat(e)+this.scrollLeft(),top:t.top+this.scrollTop()}},t.prototype.style=function(){return this.firstElement?this.firstElement.currentStyle||window.getComputedStyle(this.firstElement):{}},t.prototype.width=function(){var t=this.style();return this.firstElement.clientWidth-parseFloat(t.paddingLeft)-parseFloat(t.paddingRight)},t.prototype.height=function(){var t=this.style();return this.firstElement.clientHeight-parseFloat(t.paddingTop)-parseFloat(t.paddingBottom)},t.eventListeners={},t}();function x(t){return function(){if("function"==typeof window.CustomEvent)return!1;window.CustomEvent=function(t,e){e=e||{bubbles:!1,cancelable:!1,detail:null};var i=document.createEvent("CustomEvent");return i.initCustomEvent(t,e.bubbles,e.cancelable,e.detail),i}}(),Element.prototype.matches||(Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector),new C(t)}var w=["src","sources","subHtml","subHtmlUrl","html","video","poster","slideName","responsive","srcset","sizes","iframe","downloadUrl","download","width","facebookShareUrl","tweetText","iframeTitle","twitterShareUrl","pinterestShareUrl","pinterestText","fbHtml","disqusIdentifier","disqusUrl"];function S(t){return"href"===t?"src":t=(t=(t=t.replace("data-","")).charAt(0).toLowerCase()+t.slice(1)).replace(/-([a-z])/g,(function(t){return t[1].toUpperCase()}))}var T=function(t,e,i,s){void 0===i&&(i=0);var n=x(t).attr("data-lg-size")||s;if(n){var o=n.split(",");if(o[1])for(var r=window.innerWidth,l=0;l<o.length;l++){var a=o[l];if(parseInt(a.split("-")[2],10)>r){n=a;break}l===o.length-1&&(n=a)}var g=n.split("-"),d=parseInt(g[0],10),h=parseInt(g[1],10),u=e.width(),c=e.height()-i,m=Math.min(u,d),p=Math.min(c,h),f=Math.min(m/d,p/h);return{width:d*f,height:h*f}}},E=function(t,e,i,s,n){if(n){var o=x(t).find("img").first();if(o.get()){var r=e.get().getBoundingClientRect(),l=r.width,a=e.height()-(i+s),g=o.width(),d=o.height(),h=o.style(),u=(l-g)/2-o.offset().left+(parseFloat(h.paddingLeft)||0)+(parseFloat(h.borderLeft)||0)+x(window).scrollLeft()+r.left,c=(a-d)/2-o.offset().top+(parseFloat(h.paddingTop)||0)+(parseFloat(h.borderTop)||0)+x(window).scrollTop()+i;return"translate3d("+(u*=-1)+"px, "+(c*=-1)+"px, 0) scale3d("+g/n.width+", "+d/n.height+", 1)"}}},O=function(t,e,i,s,n,o){return'<div class="lg-video-cont lg-has-iframe" style="width:'+t+"; max-width:"+i+"; height: "+e+"; max-height:"+s+'">\n <iframe class="lg-object" frameborder="0" '+(o?'title="'+o+'"':"")+' src="'+n+'" allowfullscreen="true"></iframe>\n </div>'},L=function(t,e,i,s,n,o){var r="<img "+i+" "+(s?'srcset="'+s+'"':"")+" "+(n?'sizes="'+n+'"':"")+' class="lg-object lg-image" data-index="'+t+'" src="'+e+'" />',l="";o&&(l=("string"==typeof o?JSON.parse(o):o).map((function(t){var e="";return Object.keys(t).forEach((function(i){e+=" "+i+'="'+t[i]+'"'})),"<source "+e+"></source>"})));return""+l+r},D=function(t){for(var e=[],i=[],s="",n=0;n<t.length;n++){var o=t[n].split(" ");""===o[0]&&o.splice(0,1),i.push(o[0]),e.push(o[1])}for(var r=window.innerWidth,l=0;l<e.length;l++)if(parseInt(e[l],10)>r){s=i[l];break}return s},z=function(t){return!!t&&(!!t.complete&&0!==t.naturalWidth)},M=function(t,e,i,s,n){return'<div class="lg-video-cont '+(n&&n.youtube?"lg-has-youtube":n&&n.vimeo?"lg-has-vimeo":"lg-has-html5")+'" style="'+i+'">\n <div class="lg-video-play-button">\n <svg\n viewBox="0 0 20 20"\n preserveAspectRatio="xMidYMid"\n focusable="false"\n aria-labelledby="'+s+'"\n role="img"\n class="lg-video-play-icon"\n >\n <title>'+s+'</title>\n <polygon class="lg-video-play-icon-inner" points="1,0 20,10 1,20"></polygon>\n </svg>\n <svg class="lg-video-play-icon-bg" viewBox="0 0 50 50" focusable="false">\n <circle cx="50%" cy="50%" r="20"></circle></svg>\n <svg class="lg-video-play-icon-circle" viewBox="0 0 50 50" focusable="false">\n <circle cx="50%" cy="50%" r="20"></circle>\n </svg>\n </div>\n '+(e||"")+'\n <img class="lg-object lg-video-poster" src="'+t+'" />\n </div>'},G=function(t,e,i,s){var n=[],o=function(){for(var t=0,e=0,i=arguments.length;e<i;e++)t+=arguments[e].length;var s=Array(t),n=0;for(e=0;e<i;e++)for(var o=arguments[e],r=0,l=o.length;r<l;r++,n++)s[n]=o[r];return s}(w,e);return[].forEach.call(t,(function(t){for(var e={},r=0;r<t.attributes.length;r++){var l=t.attributes[r];if(l.specified){var a=S(l.name),g="";o.indexOf(a)>-1&&(g=a),g&&(e[g]=l.value)}}var d=x(t),h=d.find("img").first().attr("alt"),u=d.attr("title"),c=s?d.attr(s):d.find("img").first().attr("src");e.thumb=c,i&&!e.subHtml&&(e.subHtml=u||h||""),e.alt=h||u||"",n.push(e)})),n},k=function(){return/iPhone|iPad|iPod|Android/i.test(navigator.userAgent)},A=function(t,e,i){if(!t)return e?{html5:!0}:void console.error("lightGallery :- data-src is not provided on slide item "+(i+1)+". Please make sure the selector property is properly configured. More info - https://www.lightgalleryjs.com/demos/html-markup/");var s=t.match(/\/\/(?:www\.)?youtu(?:\.be|be\.com|be-nocookie\.com)\/(?:watch\?v=|embed\/)?([a-z0-9\-\_\%]+)([\&|?][\S]*)*/i),n=t.match(/\/\/(?:www\.)?(?:player\.)?vimeo.com\/(?:video\/)?([0-9a-z\-_]+)(.*)?/i),o=t.match(/https?:\/\/(.+)?(wistia\.com|wi\.st)\/(medias|embed)\/([0-9a-z\-_]+)(.*)/);return s?{youtube:s}:n?{vimeo:n}:o?{wistia:o}:void 0},B=0,P=function(){function w(t,e){if(this.lgOpened=!1,this.index=0,this.plugins=[],this.lGalleryOn=!1,this.lgBusy=!1,this.currentItemsInDom=[],this.prevScrollTop=0,this.isDummyImageRemoved=!1,this.dragOrSwipeEnabled=!1,this.mediaContainerPosition={top:0,bottom:0},!t)return this;if(B++,this.lgId=B,this.el=t,this.LGel=x(t),this.generateSettings(e),this.buildModules(),this.settings.dynamic&&void 0!==this.settings.dynamicEl&&!Array.isArray(this.settings.dynamicEl))throw"When using dynamic mode, you must also define dynamicEl as an Array.";return this.galleryItems=this.getItems(),this.normalizeSettings(),this.init(),this.validateLicense(),this}return w.prototype.generateSettings=function(e){if(this.settings=t(t({},I),e),this.settings.isMobile&&"function"==typeof this.settings.isMobile?this.settings.isMobile():k()){var i=t(t({},this.settings.mobileSettings),this.settings.mobileSettings);this.settings=t(t({},this.settings),i)}},w.prototype.normalizeSettings=function(){this.settings.slideEndAnimation&&(this.settings.hideControlOnEnd=!1),this.settings.closable||(this.settings.swipeToClose=!1),this.zoomFromOrigin=this.settings.zoomFromOrigin,this.settings.dynamic&&(this.zoomFromOrigin=!1),this.settings.container||(this.settings.container=document.body),this.settings.preload=Math.min(this.settings.preload,this.galleryItems.length)},w.prototype.init=function(){var t=this;this.addSlideVideoInfo(this.galleryItems),this.buildStructure(),this.LGel.trigger(i,{instance:this}),this.settings.keyPress&&this.keyPress(),setTimeout((function(){t.enableDrag(),t.enableSwipe(),t.triggerPosterClick()}),50),this.arrow(),this.settings.mousewheel&&this.mousewheel(),this.settings.dynamic||this.openGalleryOnItemClick()},w.prototype.openGalleryOnItemClick=function(){for(var t=this,e=function(e){var s=i.items[e],n=x(s),o=C.generateUUID();n.attr("data-lg-id",o).on("click.lgcustom-item-"+o,(function(i){i.preventDefault();var n=t.settings.index||e;t.openGallery(n,s)}))},i=this,s=0;s<this.items.length;s++)e(s)},w.prototype.buildModules=function(){var t=this;this.settings.plugins.forEach((function(e){t.plugins.push(new e(t,x))}))},w.prototype.validateLicense=function(){this.settings.licenseKey?"0000-0000-000-0000"===this.settings.licenseKey&&console.warn("lightGallery: "+this.settings.licenseKey+" license key is not valid for production use"):console.error("Please provide a valid license key")},w.prototype.getSlideItem=function(t){return x(this.getSlideItemId(t))},w.prototype.getSlideItemId=function(t){return"#lg-item-"+this.lgId+"-"+t},w.prototype.getIdName=function(t){return t+"-"+this.lgId},w.prototype.getElementById=function(t){return x("#"+this.getIdName(t))},w.prototype.manageSingleSlideClassName=function(){this.galleryItems.length<2?this.outer.addClass("lg-single-item"):this.outer.removeClass("lg-single-item")},w.prototype.buildStructure=function(){var t=this;if(!(this.$container&&this.$container.get())){var e="",i="";this.settings.controls&&(e='<button type="button" id="'+this.getIdName("lg-prev")+'" aria-label="'+this.settings.strings.previousSlide+'" class="lg-prev lg-icon"> '+this.settings.prevHtml+' </button>\n <button type="button" id="'+this.getIdName("lg-next")+'" aria-label="'+this.settings.strings.nextSlide+'" class="lg-next lg-icon"> '+this.settings.nextHtml+" </button>"),".lg-item"!==this.settings.appendSubHtmlTo&&(i='<div class="lg-sub-html" role="status" aria-live="polite"></div>');var s="";this.settings.allowMediaOverlap&&(s+="lg-media-overlap ");var n=this.settings.ariaLabelledby?'aria-labelledby="'+this.settings.ariaLabelledby+'"':"",o=this.settings.ariaDescribedby?'aria-describedby="'+this.settings.ariaDescribedby+'"':"",r="lg-container "+this.settings.addClass+" "+(document.body!==this.settings.container?"lg-inline":""),l=this.settings.closable&&this.settings.showCloseIcon?'<button type="button" aria-label="'+this.settings.strings.closeGallery+'" id="'+this.getIdName("lg-close")+'" class="lg-close lg-icon"></button>':"",a=this.settings.showMaximizeIcon?'<button type="button" aria-label="'+this.settings.strings.toggleMaximize+'" id="'+this.getIdName("lg-maximize")+'" class="lg-maximize lg-icon"></button>':"",g='\n <div class="'+r+'" id="'+this.getIdName("lg-container")+'" tabindex="-1" aria-modal="true" '+n+" "+o+' role="dialog"\n >\n <div id="'+this.getIdName("lg-backdrop")+'" class="lg-backdrop"></div>\n\n <div id="'+this.getIdName("lg-outer")+'" class="lg-outer lg-use-css3 lg-css3 lg-hide-items '+s+' ">\n\n <div id="'+this.getIdName("lg-content")+'" class="lg-content">\n <div id="'+this.getIdName("lg-inner")+'" class="lg-inner">\n </div>\n '+e+'\n </div>\n <div id="'+this.getIdName("lg-toolbar")+'" class="lg-toolbar lg-group">\n '+a+"\n "+l+"\n </div>\n "+(".lg-outer"===this.settings.appendSubHtmlTo?i:"")+'\n <div id="'+this.getIdName("lg-components")+'" class="lg-components">\n '+(".lg-sub-html"===this.settings.appendSubHtmlTo?i:"")+"\n </div>\n </div>\n </div>\n ";x(this.settings.container).append(g),document.body!==this.settings.container&&x(this.settings.container).css("position","relative"),this.outer=this.getElementById("lg-outer"),this.$lgComponents=this.getElementById("lg-components"),this.$backdrop=this.getElementById("lg-backdrop"),this.$container=this.getElementById("lg-container"),this.$inner=this.getElementById("lg-inner"),this.$content=this.getElementById("lg-content"),this.$toolbar=this.getElementById("lg-toolbar"),this.$backdrop.css("transition-duration",this.settings.backdropDuration+"ms");var d=this.settings.mode+" ";this.manageSingleSlideClassName(),this.settings.enableDrag&&(d+="lg-grab "),this.outer.addClass(d),this.$inner.css("transition-timing-function",this.settings.easing),this.$inner.css("transition-duration",this.settings.speed+"ms"),this.settings.download&&this.$toolbar.append('<a id="'+this.getIdName("lg-download")+'" target="_blank" rel="noopener" aria-label="'+this.settings.strings.download+'" download class="lg-download lg-icon"></a>'),this.counter(),x(window).on("resize.lg.global"+this.lgId+" orientationchange.lg.global"+this.lgId,(function(){t.refreshOnResize()})),this.hideBars(),this.manageCloseGallery(),this.toggleMaximize(),this.initModules()}},w.prototype.refreshOnResize=function(){if(this.lgOpened){var t=this.galleryItems[this.index].__slideVideoInfo;this.mediaContainerPosition=this.getMediaContainerPosition();var e=this.mediaContainerPosition,i=e.top,s=e.bottom;if(this.currentImageSize=T(this.items[this.index],this.outer,i+s,t&&this.settings.videoMaxSize),t&&this.resizeVideoSlide(this.index,this.currentImageSize),this.zoomFromOrigin&&!this.isDummyImageRemoved){var o=this.getDummyImgStyles(this.currentImageSize);this.outer.find(".lg-current .lg-dummy-img").first().attr("style",o)}this.LGel.trigger(n)}},w.prototype.resizeVideoSlide=function(t,e){var i=this.getVideoContStyle(e);this.getSlideItem(t).find(".lg-video-cont").attr("style",i)},w.prototype.updateSlides=function(t,e){if(this.index>t.length-1&&(this.index=t.length-1),1===t.length&&(this.index=0),t.length){var i=this.galleryItems[e].src;this.galleryItems=t,this.updateControls(),this.$inner.empty(),this.currentItemsInDom=[];var s=0;this.galleryItems.some((function(t,e){return t.src===i&&(s=e,!0)})),this.currentItemsInDom=this.organizeSlideItems(s,-1),this.loadContent(s,!0),this.getSlideItem(s).addClass("lg-current"),this.index=s,this.updateCurrentCounter(s),this.LGel.trigger(o)}else this.closeGallery()},w.prototype.getItems=function(){if(this.items=[],this.settings.dynamic)return this.settings.dynamicEl||[];if("this"===this.settings.selector)this.items.push(this.el);else if(this.settings.selector)if("string"==typeof this.settings.selector)if(this.settings.selectWithin){var t=x(this.settings.selectWithin);this.items=t.find(this.settings.selector).get()}else this.items=this.el.querySelectorAll(this.settings.selector);else this.items=this.settings.selector;else this.items=this.el.children;return G(this.items,this.settings.extraProps,this.settings.getCaptionFromTitleOrAlt,this.settings.exThumbImage)},w.prototype.openGallery=function(t,e){var i=this;if(void 0===t&&(t=this.settings.index),!this.lgOpened){this.lgOpened=!0,this.outer.get().focus(),this.outer.removeClass("lg-hide-items"),this.$container.addClass("lg-show");var s=this.getItemsToBeInsertedToDom(t,t);this.currentItemsInDom=s;var n="";s.forEach((function(t){n=n+'<div id="'+t+'" class="lg-item"></div>'})),this.$inner.append(n),this.addHtml(t);var o="";this.mediaContainerPosition=this.getMediaContainerPosition();var r=this.mediaContainerPosition,g=r.top,d=r.bottom;this.settings.allowMediaOverlap||this.setMediaContainerPosition(g,d);var h=this.galleryItems[t].__slideVideoInfo;this.zoomFromOrigin&&e&&(this.currentImageSize=T(e,this.outer,g+d,h&&this.settings.videoMaxSize),o=E(e,this.outer,g,d,this.currentImageSize)),this.zoomFromOrigin&&o||(this.outer.addClass(this.settings.startClass),this.getSlideItem(t).removeClass("lg-complete"));var u=this.settings.zoomFromOrigin?100:this.settings.backdropDuration;setTimeout((function(){i.outer.addClass("lg-components-open")}),u),this.index=t,this.LGel.trigger(l),this.getSlideItem(t).addClass("lg-current"),this.lGalleryOn=!1,this.prevScrollTop=x(window).scrollTop(),setTimeout((function(){if(i.zoomFromOrigin&&o){var e=i.getSlideItem(t);e.css("transform",o),setTimeout((function(){e.addClass("lg-start-progress lg-start-end-progress").css("transition-duration",i.settings.startAnimationDuration+"ms"),i.outer.addClass("lg-zoom-from-image")})),setTimeout((function(){e.css("transform","translate3d(0, 0, 0)")}),100)}setTimeout((function(){i.$backdrop.addClass("in"),i.$container.addClass("lg-show-in")}),10),i.zoomFromOrigin&&o||setTimeout((function(){i.outer.addClass("lg-visible")}),i.settings.backdropDuration),i.slide(t,!1,!1,!1),i.LGel.trigger(a)})),document.body===this.settings.container&&x("html").addClass("lg-on")}},w.prototype.getMediaContainerPosition=function(){if(this.settings.allowMediaOverlap)return{top:0,bottom:0};var t=this.$toolbar.get().clientHeight||0,e=this.outer.find(".lg-components .lg-sub-html").get(),i=this.settings.defaultCaptionHeight||e&&e.clientHeight||0,s=this.outer.find(".lg-thumb-outer").get();return{top:t,bottom:(s?s.clientHeight:0)+i}},w.prototype.setMediaContainerPosition=function(t,e){void 0===t&&(t=0),void 0===e&&(e=0),this.$content.css("top",t+"px").css("bottom",e+"px")},w.prototype.hideBars=function(){var t=this;setTimeout((function(){t.outer.removeClass("lg-hide-items"),t.settings.hideBarsDelay>0&&(t.outer.on("mousemove.lg click.lg touchstart.lg",(function(){t.outer.removeClass("lg-hide-items"),clearTimeout(t.hideBarTimeout),t.hideBarTimeout=setTimeout((function(){t.outer.addClass("lg-hide-items")}),t.settings.hideBarsDelay)})),t.outer.trigger("mousemove.lg"))}),this.settings.showBarsAfter)},w.prototype.initPictureFill=function(t){if(this.settings.supportLegacyBrowser)try{picturefill({elements:[t.get()]})}catch(t){console.warn("lightGallery :- If you want srcset or picture tag to be supported for older browser please include picturefil javascript library in your document.")}},w.prototype.counter=function(){if(this.settings.counter){var t='<div class="lg-counter" role="status" aria-live="polite">\n <span id="'+this.getIdName("lg-counter-current")+'" class="lg-counter-current">'+(this.index+1)+' </span> /\n <span id="'+this.getIdName("lg-counter-all")+'" class="lg-counter-all">'+this.galleryItems.length+" </span></div>";this.outer.find(this.settings.appendCounterTo).append(t)}},w.prototype.addHtml=function(t){var e,i;if(this.galleryItems[t].subHtmlUrl?i=this.galleryItems[t].subHtmlUrl:e=this.galleryItems[t].subHtml,!i)if(e){var s=e.substring(0,1);"."!==s&&"#"!==s||(e=this.settings.subHtmlSelectorRelative&&!this.settings.dynamic?x(this.items).eq(t).find(e).first().html():x(e).first().html())}else e="";if(".lg-item"!==this.settings.appendSubHtmlTo)i?this.outer.find(".lg-sub-html").load(i):this.outer.find(".lg-sub-html").html(e);else{var n=x(this.getSlideItemId(t));i?n.load(i):n.append('<div class="lg-sub-html">'+e+"</div>")}null!=e&&(""===e?this.outer.find(this.settings.appendSubHtmlTo).addClass("lg-empty-html"):this.outer.find(this.settings.appendSubHtmlTo).removeClass("lg-empty-html")),this.LGel.trigger(r,{index:t})},w.prototype.preload=function(t){for(var e=1;e<=this.settings.preload&&!(e>=this.galleryItems.length-t);e++)this.loadContent(t+e,!1);for(var i=1;i<=this.settings.preload&&!(t-i<0);i++)this.loadContent(t-i,!1)},w.prototype.getDummyImgStyles=function(t){return t?"width:"+t.width+"px;\n margin-left: -"+t.width/2+"px;\n margin-top: -"+t.height/2+"px;\n height:"+t.height+"px":""},w.prototype.getVideoContStyle=function(t){return t?"width:"+t.width+"px;\n height:"+t.height+"px":""},w.prototype.getDummyImageContent=function(t,e,i){var s;if(this.settings.dynamic||(s=x(this.items).eq(e)),s){var n=void 0;if(!(n=this.settings.exThumbImage?s.attr(this.settings.exThumbImage):s.find("img").first().attr("src")))return"";var o="<img "+i+' style="'+this.getDummyImgStyles(this.currentImageSize)+'" class="lg-dummy-img" src="'+n+'" />';return t.addClass("lg-first-slide"),this.outer.addClass("lg-first-slide-loading"),o}return""},w.prototype.setImgMarkup=function(t,e,i){var s=this.galleryItems[i],n=s.alt,o=s.srcset,r=s.sizes,l=s.sources,a=n?'alt="'+n+'"':"",g='<picture class="lg-img-wrap"> '+(this.isFirstSlideWithZoomAnimation()?this.getDummyImageContent(e,i,a):L(i,t,a,o,r,l))+"</picture>";e.prepend(g)},w.prototype.onSlideObjectLoad=function(t,e,i,s){var n=t.find(".lg-object").first();z(n.get())||e?i():(n.on("load.lg error.lg",(function(){i&&i()})),n.on("error.lg",(function(){s&&s()})))},w.prototype.onLgObjectLoad=function(t,e,i,s,n,o){var r=this;this.onSlideObjectLoad(t,o,(function(){r.triggerSlideItemLoad(t,e,i,s,n)}),(function(){t.addClass("lg-complete lg-complete_"),t.html('<span class="lg-error-msg">Oops... Failed to load content...</span>')}))},w.prototype.triggerSlideItemLoad=function(t,e,i,s,n){var o=this,r=this.galleryItems[e],l=n&&"video"===this.getSlideType(r)&&!r.poster?s:0;setTimeout((function(){t.addClass("lg-complete lg-complete_"),o.LGel.trigger(g,{index:e,delay:i||0,isFirstSlide:n})}),l)},w.prototype.isFirstSlideWithZoomAnimation=function(){return!(this.lGalleryOn||!this.zoomFromOrigin||!this.currentImageSize)},w.prototype.addSlideVideoInfo=function(t){var e=this;t.forEach((function(t,i){t.__slideVideoInfo=A(t.src,!!t.video,i),t.__slideVideoInfo&&e.settings.loadYouTubePoster&&!t.poster&&t.__slideVideoInfo.youtube&&(t.poster="//img.youtube.com/vi/"+t.__slideVideoInfo.youtube[1]+"/maxresdefault.jpg")}))},w.prototype.loadContent=function(t,i){var n=this,o=this.galleryItems[t],r=x(this.getSlideItemId(t)),l=o.poster,a=o.srcset,g=o.sizes,d=o.sources,h=o.src,u=o.video,c=u&&"string"==typeof u?JSON.parse(u):u;if(o.responsive){var m=o.responsive.split(",");h=D(m)||h}var p=o.__slideVideoInfo,f="",v=!!o.iframe,y=!this.lGalleryOn,b=0;if(y&&(b=this.zoomFromOrigin&&this.currentImageSize?this.settings.startAnimationDuration+10:this.settings.backdropDuration+10),!r.hasClass("lg-loaded")){if(p){var I=this.mediaContainerPosition,C=I.top,w=I.bottom,S=T(this.items[t],this.outer,C+w,p&&this.settings.videoMaxSize);f=this.getVideoContStyle(S)}if(v){var E=O(this.settings.iframeWidth,this.settings.iframeHeight,this.settings.iframeMaxWidth,this.settings.iframeMaxHeight,h,o.iframeTitle);r.prepend(E)}else if(l){var z="";y&&this.zoomFromOrigin&&this.currentImageSize&&(z=this.getDummyImageContent(r,t,""));E=M(l,z||"",f,this.settings.strings.playVideo,p);r.prepend(E)}else if(p){E='<div class="lg-video-cont " style="'+f+'"></div>';r.prepend(E)}else if(this.setImgMarkup(h,r,t),a||d){var G=r.find(".lg-object");this.initPictureFill(G)}(l||p)&&this.LGel.trigger(s,{index:t,src:h,html5Video:c,hasPoster:!!l}),this.LGel.trigger(e,{index:t}),this.lGalleryOn&&".lg-item"===this.settings.appendSubHtmlTo&&this.addHtml(t)}var k=0;b&&!x(document.body).hasClass("lg-from-hash")&&(k=b),this.isFirstSlideWithZoomAnimation()&&(setTimeout((function(){r.removeClass("lg-start-end-progress lg-start-progress").removeAttr("style")}),this.settings.startAnimationDuration+100),r.hasClass("lg-loaded")||setTimeout((function(){if("image"===n.getSlideType(o)&&(r.find(".lg-img-wrap").append(L(t,h,"",a,g,o.sources)),a||d)){var e=r.find(".lg-object");n.initPictureFill(e)}("image"===n.getSlideType(o)||"video"===n.getSlideType(o)&&l)&&(n.onLgObjectLoad(r,t,b,k,!0,!1),n.onSlideObjectLoad(r,!(!p||!p.html5||l),(function(){n.loadContentOnFirstSlideLoad(t,r,k)}),(function(){n.loadContentOnFirstSlideLoad(t,r,k)})))}),this.settings.startAnimationDuration+100)),r.addClass("lg-loaded"),this.isFirstSlideWithZoomAnimation()&&("video"!==this.getSlideType(o)||l)||this.onLgObjectLoad(r,t,b,k,y,!(!p||!p.html5||l)),this.zoomFromOrigin&&this.currentImageSize||!r.hasClass("lg-complete_")||this.lGalleryOn||setTimeout((function(){r.addClass("lg-complete")}),this.settings.backdropDuration),this.lGalleryOn=!0,!0===i&&(r.hasClass("lg-complete_")?this.preload(t):r.find(".lg-object").first().on("load.lg error.lg",(function(){n.preload(t)})))},w.prototype.loadContentOnFirstSlideLoad=function(t,e,i){var s=this;setTimeout((function(){e.find(".lg-dummy-img").remove(),e.removeClass("lg-first-slide"),s.outer.removeClass("lg-first-slide-loading"),s.isDummyImageRemoved=!0,s.preload(t)}),i+300)},w.prototype.getItemsToBeInsertedToDom=function(t,e,i){var s=this;void 0===i&&(i=0);var n=[],o=Math.max(i,3);o=Math.min(o,this.galleryItems.length);var r="lg-item-"+this.lgId+"-"+e;if(this.galleryItems.length<=3)return this.galleryItems.forEach((function(t,e){n.push("lg-item-"+s.lgId+"-"+e)})),n;if(t<(this.galleryItems.length-1)/2){for(var l=t;l>t-o/2&&l>=0;l--)n.push("lg-item-"+this.lgId+"-"+l);var a=n.length;for(l=0;l<o-a;l++)n.push("lg-item-"+this.lgId+"-"+(t+l+1))}else{for(l=t;l<=this.galleryItems.length-1&&l<t+o/2;l++)n.push("lg-item-"+this.lgId+"-"+l);for(a=n.length,l=0;l<o-a;l++)n.push("lg-item-"+this.lgId+"-"+(t-l-1))}return this.settings.loop&&(t===this.galleryItems.length-1?n.push("lg-item-"+this.lgId+"-0"):0===t&&n.push("lg-item-"+this.lgId+"-"+(this.galleryItems.length-1))),-1===n.indexOf(r)&&n.push("lg-item-"+this.lgId+"-"+e),n},w.prototype.organizeSlideItems=function(t,e){var i=this,s=this.getItemsToBeInsertedToDom(t,e,this.settings.numberOfSlideItemsInDom);return s.forEach((function(t){-1===i.currentItemsInDom.indexOf(t)&&i.$inner.append('<div id="'+t+'" class="lg-item"></div>')})),this.currentItemsInDom.forEach((function(t){-1===s.indexOf(t)&&x("#"+t).remove()})),s},w.prototype.getPreviousSlideIndex=function(){var t=0;try{var e=this.outer.find(".lg-current").first().attr("id");t=parseInt(e.split("-")[3])||0}catch(e){t=0}return t},w.prototype.setDownloadValue=function(t){if(this.settings.download){var e=this.galleryItems[t];if(!1===e.downloadUrl||"false"===e.downloadUrl)this.outer.addClass("lg-hide-download");else{var i=this.getElementById("lg-download");this.outer.removeClass("lg-hide-download"),i.attr("href",e.downloadUrl||e.src),e.download&&i.attr("download",e.download)}}},w.prototype.makeSlideAnimation=function(t,e,i){var s=this;this.lGalleryOn&&i.addClass("lg-slide-progress"),setTimeout((function(){s.outer.addClass("lg-no-trans"),s.outer.find(".lg-item").removeClass("lg-prev-slide lg-next-slide"),"prev"===t?(e.addClass("lg-prev-slide"),i.addClass("lg-next-slide")):(e.addClass("lg-next-slide"),i.addClass("lg-prev-slide")),setTimeout((function(){s.outer.find(".lg-item").removeClass("lg-current"),e.addClass("lg-current"),s.outer.removeClass("lg-no-trans")}),50)}),this.lGalleryOn?this.settings.slideDelay:0)},w.prototype.slide=function(t,e,i,s){var n=this,o=this.getPreviousSlideIndex();if(this.currentItemsInDom=this.organizeSlideItems(t,o),!this.lGalleryOn||o!==t){var r=this.galleryItems.length;if(!this.lgBusy){this.settings.counter&&this.updateCurrentCounter(t);var l=this.getSlideItem(t),a=this.getSlideItem(o),g=this.galleryItems[t],u=g.__slideVideoInfo;if(this.outer.attr("data-lg-slide-type",this.getSlideType(g)),this.setDownloadValue(t),u){var c=this.mediaContainerPosition,m=c.top,p=c.bottom,f=T(this.items[t],this.outer,m+p,u&&this.settings.videoMaxSize);this.resizeVideoSlide(t,f)}if(this.LGel.trigger(d,{prevIndex:o,index:t,fromTouch:!!e,fromThumb:!!i}),this.lgBusy=!0,clearTimeout(this.hideBarTimeout),this.arrowDisable(t),s||(t<o?s="prev":t>o&&(s="next")),e){this.outer.find(".lg-item").removeClass("lg-prev-slide lg-current lg-next-slide");var v=void 0,y=void 0;r>2?(v=t-1,y=t+1,(0===t&&o===r-1||t===r-1&&0===o)&&(y=0,v=r-1)):(v=0,y=1),"prev"===s?this.getSlideItem(y).addClass("lg-next-slide"):this.getSlideItem(v).addClass("lg-prev-slide"),l.addClass("lg-current")}else this.makeSlideAnimation(s,l,a);this.lGalleryOn?setTimeout((function(){n.loadContent(t,!0),".lg-item"!==n.settings.appendSubHtmlTo&&n.addHtml(t)}),this.settings.speed+50+(e?0:this.settings.slideDelay)):this.loadContent(t,!0),setTimeout((function(){n.lgBusy=!1,a.removeClass("lg-slide-progress"),n.LGel.trigger(h,{prevIndex:o,index:t,fromTouch:e,fromThumb:i})}),(this.lGalleryOn?this.settings.speed+100:100)+(e?0:this.settings.slideDelay))}this.index=t}},w.prototype.updateCurrentCounter=function(t){this.getElementById("lg-counter-current").html(t+1+"")},w.prototype.updateCounterTotal=function(){this.getElementById("lg-counter-all").html(this.galleryItems.length+"")},w.prototype.getSlideType=function(t){return t.__slideVideoInfo?"video":t.iframe?"iframe":"image"},w.prototype.touchMove=function(t,e,i){var s=e.pageX-t.pageX,n=e.pageY-t.pageY,o=!1;if(this.swipeDirection?o=!0:Math.abs(s)>15?(this.swipeDirection="horizontal",o=!0):Math.abs(n)>15&&(this.swipeDirection="vertical",o=!0),o){var r=this.getSlideItem(this.index);if("horizontal"===this.swipeDirection){null==i||i.preventDefault(),this.outer.addClass("lg-dragging"),this.setTranslate(r,s,0);var l=r.get().offsetWidth,a=15*l/100-Math.abs(10*s/100);this.setTranslate(this.outer.find(".lg-prev-slide").first(),-l+s-a,0),this.setTranslate(this.outer.find(".lg-next-slide").first(),l+s+a,0)}else if("vertical"===this.swipeDirection&&this.settings.swipeToClose){null==i||i.preventDefault(),this.$container.addClass("lg-dragging-vertical");var g=1-Math.abs(n)/window.innerHeight;this.$backdrop.css("opacity",g);var d=1-Math.abs(n)/(2*window.innerWidth);this.setTranslate(r,0,n,d,d),Math.abs(n)>100&&this.outer.addClass("lg-hide-items").removeClass("lg-components-open")}}},w.prototype.touchEnd=function(t,e,i){var s,n=this;"lg-slide"!==this.settings.mode&&this.outer.addClass("lg-slide"),setTimeout((function(){n.$container.removeClass("lg-dragging-vertical"),n.outer.removeClass("lg-dragging lg-hide-items").addClass("lg-components-open");var o=!0;if("horizontal"===n.swipeDirection){s=t.pageX-e.pageX;var r=Math.abs(t.pageX-e.pageX);s<0&&r>n.settings.swipeThreshold?(n.goToNextSlide(!0),o=!1):s>0&&r>n.settings.swipeThreshold&&(n.goToPrevSlide(!0),o=!1)}else if("vertical"===n.swipeDirection){if(s=Math.abs(t.pageY-e.pageY),n.settings.closable&&n.settings.swipeToClose&&s>100)return void n.closeGallery();n.$backdrop.css("opacity",1)}if(n.outer.find(".lg-item").removeAttr("style"),o&&Math.abs(t.pageX-e.pageX)<5){var l=x(i.target);n.isPosterElement(l)&&n.LGel.trigger(u)}n.swipeDirection=void 0})),setTimeout((function(){n.outer.hasClass("lg-dragging")||"lg-slide"===n.settings.mode||n.outer.removeClass("lg-slide")}),this.settings.speed+100)},w.prototype.enableSwipe=function(){var t=this,e={},i={},s=!1,n=!1;this.settings.enableSwipe&&(this.$inner.on("touchstart.lg",(function(i){t.dragOrSwipeEnabled=!0;var s=t.getSlideItem(t.index);!x(i.target).hasClass("lg-item")&&!s.get().contains(i.target)||t.outer.hasClass("lg-zoomed")||t.lgBusy||1!==i.targetTouches.length||(n=!0,t.touchAction="swipe",t.manageSwipeClass(),e={pageX:i.targetTouches[0].pageX,pageY:i.targetTouches[0].pageY})})),this.$inner.on("touchmove.lg",(function(o){n&&"swipe"===t.touchAction&&1===o.targetTouches.length&&(i={pageX:o.targetTouches[0].pageX,pageY:o.targetTouches[0].pageY},t.touchMove(e,i,o),s=!0)})),this.$inner.on("touchend.lg",(function(o){if("swipe"===t.touchAction){if(s)s=!1,t.touchEnd(i,e,o);else if(n){var r=x(o.target);t.isPosterElement(r)&&t.LGel.trigger(u)}t.touchAction=void 0,n=!1}})))},w.prototype.enableDrag=function(){var t=this,e={},i={},s=!1,n=!1;this.settings.enableDrag&&(this.outer.on("mousedown.lg",(function(i){t.dragOrSwipeEnabled=!0;var n=t.getSlideItem(t.index);(x(i.target).hasClass("lg-item")||n.get().contains(i.target))&&(t.outer.hasClass("lg-zoomed")||t.lgBusy||(i.preventDefault(),t.lgBusy||(t.manageSwipeClass(),e={pageX:i.pageX,pageY:i.pageY},s=!0,t.outer.get().scrollLeft+=1,t.outer.get().scrollLeft-=1,t.outer.removeClass("lg-grab").addClass("lg-grabbing"),t.LGel.trigger(c))))})),x(window).on("mousemove.lg.global"+this.lgId,(function(o){s&&t.lgOpened&&(n=!0,i={pageX:o.pageX,pageY:o.pageY},t.touchMove(e,i),t.LGel.trigger(m))})),x(window).on("mouseup.lg.global"+this.lgId,(function(o){if(t.lgOpened){var r=x(o.target);n?(n=!1,t.touchEnd(i,e,o),t.LGel.trigger(p)):t.isPosterElement(r)&&t.LGel.trigger(u),s&&(s=!1,t.outer.removeClass("lg-grabbing").addClass("lg-grab"))}})))},w.prototype.triggerPosterClick=function(){var t=this;this.$inner.on("click.lg",(function(e){!t.dragOrSwipeEnabled&&t.isPosterElement(x(e.target))&&t.LGel.trigger(u)}))},w.prototype.manageSwipeClass=function(){var t=this.index+1,e=this.index-1;this.settings.loop&&this.galleryItems.length>2&&(0===this.index?e=this.galleryItems.length-1:this.index===this.galleryItems.length-1&&(t=0)),this.outer.find(".lg-item").removeClass("lg-next-slide lg-prev-slide"),e>-1&&this.getSlideItem(e).addClass("lg-prev-slide"),this.getSlideItem(t).addClass("lg-next-slide")},w.prototype.goToNextSlide=function(t){var e=this,i=this.settings.loop;t&&this.galleryItems.length<3&&(i=!1),this.lgBusy||(this.index+1<this.galleryItems.length?(this.index++,this.LGel.trigger(f,{index:this.index}),this.slide(this.index,!!t,!1,"next")):i?(this.index=0,this.LGel.trigger(f,{index:this.index}),this.slide(this.index,!!t,!1,"next")):this.settings.slideEndAnimation&&!t&&(this.outer.addClass("lg-right-end"),setTimeout((function(){e.outer.removeClass("lg-right-end")}),400)))},w.prototype.goToPrevSlide=function(t){var e=this,i=this.settings.loop;t&&this.galleryItems.length<3&&(i=!1),this.lgBusy||(this.index>0?(this.index--,this.LGel.trigger(v,{index:this.index,fromTouch:t}),this.slide(this.index,!!t,!1,"prev")):i?(this.index=this.galleryItems.length-1,this.LGel.trigger(v,{index:this.index,fromTouch:t}),this.slide(this.index,!!t,!1,"prev")):this.settings.slideEndAnimation&&!t&&(this.outer.addClass("lg-left-end"),setTimeout((function(){e.outer.removeClass("lg-left-end")}),400)))},w.prototype.keyPress=function(){var t=this;x(window).on("keydown.lg.global"+this.lgId,(function(e){t.lgOpened&&!0===t.settings.escKey&&27===e.keyCode&&(e.preventDefault(),t.settings.allowMediaOverlap&&t.outer.hasClass("lg-can-toggle")&&t.outer.hasClass("lg-components-open")?t.outer.removeClass("lg-components-open"):t.closeGallery()),t.lgOpened&&t.galleryItems.length>1&&(37===e.keyCode&&(e.preventDefault(),t.goToPrevSlide()),39===e.keyCode&&(e.preventDefault(),t.goToNextSlide()))}))},w.prototype.arrow=function(){var t=this;this.getElementById("lg-prev").on("click.lg",(function(){t.goToPrevSlide()})),this.getElementById("lg-next").on("click.lg",(function(){t.goToNextSlide()}))},w.prototype.arrowDisable=function(t){if(!this.settings.loop&&this.settings.hideControlOnEnd){var e=this.getElementById("lg-prev"),i=this.getElementById("lg-next");t+1===this.galleryItems.length?i.attr("disabled","disabled").addClass("disabled"):i.removeAttr("disabled").removeClass("disabled"),0===t?e.attr("disabled","disabled").addClass("disabled"):e.removeAttr("disabled").removeClass("disabled")}},w.prototype.setTranslate=function(t,e,i,s,n){void 0===s&&(s=1),void 0===n&&(n=1),t.css("transform","translate3d("+e+"px, "+i+"px, 0px) scale3d("+s+", "+n+", 1)")},w.prototype.mousewheel=function(){var t=this,e=0;this.outer.on("wheel.lg",(function(i){if(i.deltaY&&!(t.galleryItems.length<2)){i.preventDefault();var s=(new Date).getTime();s-e<1e3||(e=s,i.deltaY>0?t.goToNextSlide():i.deltaY<0&&t.goToPrevSlide())}}))},w.prototype.isSlideElement=function(t){return t.hasClass("lg-outer")||t.hasClass("lg-item")||t.hasClass("lg-img-wrap")},w.prototype.isPosterElement=function(t){var e=this.getSlideItem(this.index).find(".lg-video-play-button").get();return t.hasClass("lg-video-poster")||t.hasClass("lg-video-play-button")||e&&e.contains(t.get())},w.prototype.toggleMaximize=function(){var t=this;this.getElementById("lg-maximize").on("click.lg",(function(){t.$container.toggleClass("lg-inline"),t.refreshOnResize()}))},w.prototype.invalidateItems=function(){for(var t=0;t<this.items.length;t++){var e=x(this.items[t]);e.off("click.lgcustom-item-"+e.attr("data-lg-id"))}},w.prototype.manageCloseGallery=function(){var t=this;if(this.settings.closable){var e=!1;this.getElementById("lg-close").on("click.lg",(function(){t.closeGallery()})),this.settings.closeOnTap&&(this.outer.on("mousedown.lg",(function(i){var s=x(i.target);e=!!t.isSlideElement(s)})),this.outer.on("mousemove.lg",(function(){e=!1})),this.outer.on("mouseup.lg",(function(i){var s=x(i.target);t.isSlideElement(s)&&e&&(t.outer.hasClass("lg-dragging")||t.closeGallery())})))}},w.prototype.closeGallery=function(t){var e=this;if(!this.lgOpened||!this.settings.closable&&!t)return 0;this.LGel.trigger(y),x(window).scrollTop(this.prevScrollTop);var i,s=this.items[this.index];if(this.zoomFromOrigin&&s){var n=this.mediaContainerPosition,o=n.top,r=n.bottom,l=this.galleryItems[this.index],a=l.__slideVideoInfo,g=l.poster,d=T(s,this.outer,o+r,a&&g&&this.settings.videoMaxSize);i=E(s,this.outer,o,r,d)}this.zoomFromOrigin&&i?(this.outer.addClass("lg-closing lg-zoom-from-image"),this.getSlideItem(this.index).addClass("lg-start-end-progress").css("transition-duration",this.settings.startAnimationDuration+"ms").css("transform",i)):(this.outer.addClass("lg-hide-items"),this.outer.removeClass("lg-zoom-from-image")),this.destroyModules(),this.lGalleryOn=!1,this.isDummyImageRemoved=!1,this.zoomFromOrigin=this.settings.zoomFromOrigin,clearTimeout(this.hideBarTimeout),this.hideBarTimeout=!1,x("html").removeClass("lg-on"),this.outer.removeClass("lg-visible lg-components-open"),this.$backdrop.removeClass("in").css("opacity",0);var h=this.zoomFromOrigin&&i?Math.max(this.settings.startAnimationDuration,this.settings.backdropDuration):this.settings.backdropDuration;return this.$container.removeClass("lg-show-in"),setTimeout((function(){e.zoomFromOrigin&&i&&e.outer.removeClass("lg-zoom-from-image"),e.$container.removeClass("lg-show"),e.$backdrop.removeAttr("style").css("transition-duration",e.settings.backdropDuration+"ms"),e.outer.removeClass("lg-closing "+e.settings.startClass),e.getSlideItem(e.index).removeClass("lg-start-end-progress"),e.$inner.empty(),e.lgOpened&&e.LGel.trigger(b,{instance:e}),e.outer.get()&&e.outer.get().blur(),e.lgOpened=!1}),h+100),h+100},w.prototype.initModules=function(){this.plugins.forEach((function(t){try{t.init()}catch(t){console.warn("lightGallery:- make sure lightGallery module is properly initiated")}}))},w.prototype.destroyModules=function(t){this.plugins.forEach((function(e){try{t?e.destroy():e.closeGallery&&e.closeGallery()}catch(t){console.warn("lightGallery:- make sure lightGallery module is properly destroyed")}}))},w.prototype.refresh=function(t){this.settings.dynamic||this.invalidateItems(),this.galleryItems=t||this.getItems(),this.updateControls(),this.openGalleryOnItemClick(),this.LGel.trigger(o)},w.prototype.updateControls=function(){this.addSlideVideoInfo(this.galleryItems),this.updateCounterTotal(),this.manageSingleSlideClassName()},w.prototype.destroy=function(){var t=this,e=this.closeGallery(!0);return setTimeout((function(){t.destroyModules(!0),t.settings.dynamic||t.invalidateItems(),x(window).off(".lg.global"+t.lgId),t.LGel.off(".lg"),t.$container.remove()}),e),e},w}();return function(t,e){return new P(t,e)}}));
diff --git a/assets/lib/lightgallery/plugins/lg-thumbnail.min.js b/assets/lib/lightgallery/plugins/lg-thumbnail.min.js
new file mode 100755
index 00000000..d948aca7
--- /dev/null
+++ b/assets/lib/lightgallery/plugins/lg-thumbnail.min.js
@@ -0,0 +1,8 @@
+/**
+ * lightgallery | 2.4.0 | January 29th 2022
+ * http://www.lightgalleryjs.com/
+ * Copyright (c) 2020 Sachin Neravath;
+ * @license GPLv3
+ */
+
+!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).lgThumbnail=e()}(this,(function(){"use strict";var t=function(){return(t=Object.assign||function(t){for(var e,i=1,s=arguments.length;i<s;i++)for(var h in e=arguments[i])Object.prototype.hasOwnProperty.call(e,h)&&(t[h]=e[h]);return t}).apply(this,arguments)},e={thumbnail:!0,animateThumb:!0,currentPagerPosition:"middle",alignThumbnails:"middle",thumbWidth:100,thumbHeight:"80px",thumbMargin:5,appendThumbnailsTo:".lg-components",toggleThumb:!1,enableThumbDrag:!0,enableThumbSwipe:!0,thumbnailSwipeThreshold:10,loadYouTubeThumbnail:!0,youTubeThumbSize:1,thumbnailPluginStrings:{toggleThumbnails:"Toggle thumbnails"}},i="lgContainerResize",s="lgUpdateSlides",h="lgBeforeOpen",n="lgBeforeSlide";return function(){function o(t,e){return this.thumbOuterWidth=0,this.thumbTotalWidth=0,this.translateX=0,this.thumbClickable=!1,this.core=t,this.$LG=e,this}return o.prototype.init=function(){this.settings=t(t({},e),this.core.settings),this.thumbOuterWidth=0,this.thumbTotalWidth=this.core.galleryItems.length*(this.settings.thumbWidth+this.settings.thumbMargin),this.translateX=0,this.setAnimateThumbStyles(),this.core.settings.allowMediaOverlap||(this.settings.toggleThumb=!1),this.settings.thumbnail&&(this.build(),this.settings.animateThumb?(this.settings.enableThumbDrag&&this.enableThumbDrag(),this.settings.enableThumbSwipe&&this.enableThumbSwipe(),this.thumbClickable=!1):this.thumbClickable=!0,this.toggleThumbBar(),this.thumbKeyPress())},o.prototype.build=function(){var t=this;this.setThumbMarkup(),this.manageActiveClassOnSlideChange(),this.$lgThumb.first().on("click.lg touchend.lg",(function(e){var i=t.$LG(e.target);i.hasAttribute("data-lg-item-id")&&setTimeout((function(){if(t.thumbClickable&&!t.core.lgBusy){var e=parseInt(i.attr("data-lg-item-id"));t.core.slide(e,!1,!0,!1)}}),50)})),this.core.LGel.on(n+".thumb",(function(e){var i=e.detail.index;t.animateThumb(i)})),this.core.LGel.on(h+".thumb",(function(){t.thumbOuterWidth=t.core.outer.get().offsetWidth})),this.core.LGel.on(s+".thumb",(function(){t.rebuildThumbnails()})),this.core.LGel.on(i+".thumb",(function(){t.core.lgOpened&&setTimeout((function(){t.thumbOuterWidth=t.core.outer.get().offsetWidth,t.animateThumb(t.core.index),t.thumbOuterWidth=t.core.outer.get().offsetWidth}),50)}))},o.prototype.setThumbMarkup=function(){var t="lg-thumb-outer ";this.settings.alignThumbnails&&(t+="lg-thumb-align-"+this.settings.alignThumbnails);var e='<div class="'+t+'">\n <div class="lg-thumb lg-group">\n </div>\n </div>';this.core.outer.addClass("lg-has-thumb"),".lg-components"===this.settings.appendThumbnailsTo?this.core.$lgComponents.append(e):this.core.outer.append(e),this.$thumbOuter=this.core.outer.find(".lg-thumb-outer").first(),this.$lgThumb=this.core.outer.find(".lg-thumb").first(),this.settings.animateThumb&&this.core.outer.find(".lg-thumb").css("transition-duration",this.core.settings.speed+"ms").css("width",this.thumbTotalWidth+"px").css("position","relative"),this.setThumbItemHtml(this.core.galleryItems)},o.prototype.enableThumbDrag=function(){var t=this,e={cords:{startX:0,endX:0},isMoved:!1,newTranslateX:0,startTime:new Date,endTime:new Date,touchMoveTime:0},i=!1;this.$thumbOuter.addClass("lg-grab"),this.core.outer.find(".lg-thumb").first().on("mousedown.lg.thumb",(function(s){t.thumbTotalWidth>t.thumbOuterWidth&&(s.preventDefault(),e.cords.startX=s.pageX,e.startTime=new Date,t.thumbClickable=!1,i=!0,t.core.outer.get().scrollLeft+=1,t.core.outer.get().scrollLeft-=1,t.$thumbOuter.removeClass("lg-grab").addClass("lg-grabbing"))})),this.$LG(window).on("mousemove.lg.thumb.global"+this.core.lgId,(function(s){t.core.lgOpened&&i&&(e.cords.endX=s.pageX,e=t.onThumbTouchMove(e))})),this.$LG(window).on("mouseup.lg.thumb.global"+this.core.lgId,(function(){t.core.lgOpened&&(e.isMoved?e=t.onThumbTouchEnd(e):t.thumbClickable=!0,i&&(i=!1,t.$thumbOuter.removeClass("lg-grabbing").addClass("lg-grab")))}))},o.prototype.enableThumbSwipe=function(){var t=this,e={cords:{startX:0,endX:0},isMoved:!1,newTranslateX:0,startTime:new Date,endTime:new Date,touchMoveTime:0};this.$lgThumb.on("touchstart.lg",(function(i){t.thumbTotalWidth>t.thumbOuterWidth&&(i.preventDefault(),e.cords.startX=i.targetTouches[0].pageX,t.thumbClickable=!1,e.startTime=new Date)})),this.$lgThumb.on("touchmove.lg",(function(i){t.thumbTotalWidth>t.thumbOuterWidth&&(i.preventDefault(),e.cords.endX=i.targetTouches[0].pageX,e=t.onThumbTouchMove(e))})),this.$lgThumb.on("touchend.lg",(function(){e.isMoved?e=t.onThumbTouchEnd(e):t.thumbClickable=!0}))},o.prototype.rebuildThumbnails=function(){var t=this;this.$thumbOuter.addClass("lg-rebuilding-thumbnails"),setTimeout((function(){t.thumbTotalWidth=t.core.galleryItems.length*(t.settings.thumbWidth+t.settings.thumbMargin),t.$lgThumb.css("width",t.thumbTotalWidth+"px"),t.$lgThumb.empty(),t.setThumbItemHtml(t.core.galleryItems),t.animateThumb(t.core.index)}),50),setTimeout((function(){t.$thumbOuter.removeClass("lg-rebuilding-thumbnails")}),200)},o.prototype.setTranslate=function(t){this.$lgThumb.css("transform","translate3d(-"+t+"px, 0px, 0px)")},o.prototype.getPossibleTransformX=function(t){return t>this.thumbTotalWidth-this.thumbOuterWidth&&(t=this.thumbTotalWidth-this.thumbOuterWidth),t<0&&(t=0),t},o.prototype.animateThumb=function(t){if(this.$lgThumb.css("transition-duration",this.core.settings.speed+"ms"),this.settings.animateThumb){var e=0;switch(this.settings.currentPagerPosition){case"left":e=0;break;case"middle":e=this.thumbOuterWidth/2-this.settings.thumbWidth/2;break;case"right":e=this.thumbOuterWidth-this.settings.thumbWidth}this.translateX=(this.settings.thumbWidth+this.settings.thumbMargin)*t-1-e,this.translateX>this.thumbTotalWidth-this.thumbOuterWidth&&(this.translateX=this.thumbTotalWidth-this.thumbOuterWidth),this.translateX<0&&(this.translateX=0),this.setTranslate(this.translateX)}},o.prototype.onThumbTouchMove=function(t){return t.newTranslateX=this.translateX,t.isMoved=!0,t.touchMoveTime=(new Date).valueOf(),t.newTranslateX-=t.cords.endX-t.cords.startX,t.newTranslateX=this.getPossibleTransformX(t.newTranslateX),this.setTranslate(t.newTranslateX),this.$thumbOuter.addClass("lg-dragging"),t},o.prototype.onThumbTouchEnd=function(t){t.isMoved=!1,t.endTime=new Date,this.$thumbOuter.removeClass("lg-dragging");var e=t.endTime.valueOf()-t.startTime.valueOf(),i=t.cords.endX-t.cords.startX,s=Math.abs(i)/e;return s>.15&&t.endTime.valueOf()-t.touchMoveTime<30?((s+=1)>2&&(s+=1),s+=s*(Math.abs(i)/this.thumbOuterWidth),this.$lgThumb.css("transition-duration",Math.min(s-1,2)+"settings"),i*=s,this.translateX=this.getPossibleTransformX(this.translateX-i),this.setTranslate(this.translateX)):this.translateX=t.newTranslateX,Math.abs(t.cords.endX-t.cords.startX)<this.settings.thumbnailSwipeThreshold&&(this.thumbClickable=!0),t},o.prototype.getThumbHtml=function(t,e){var i,s=this.core.galleryItems[e].__slideVideoInfo||{};return i=s.youtube&&this.settings.loadYouTubeThumbnail?"//img.youtube.com/vi/"+s.youtube[1]+"/"+this.settings.youTubeThumbSize+".jpg":t,'<div data-lg-item-id="'+e+'" class="lg-thumb-item '+(e===this.core.index?" active":"")+'" \n style="width:'+this.settings.thumbWidth+"px; height: "+this.settings.thumbHeight+";\n margin-right: "+this.settings.thumbMargin+'px;">\n <img data-lg-item-id="'+e+'" src="'+i+'" />\n </div>'},o.prototype.getThumbItemHtml=function(t){for(var e="",i=0;i<t.length;i++)e+=this.getThumbHtml(t[i].thumb,i);return e},o.prototype.setThumbItemHtml=function(t){var e=this.getThumbItemHtml(t);this.$lgThumb.html(e)},o.prototype.setAnimateThumbStyles=function(){this.settings.animateThumb&&this.core.outer.addClass("lg-animate-thumb")},o.prototype.manageActiveClassOnSlideChange=function(){var t=this;this.core.LGel.on(n+".thumb",(function(e){var i=t.core.outer.find(".lg-thumb-item"),s=e.detail.index;i.removeClass("active"),i.eq(s).addClass("active")}))},o.prototype.toggleThumbBar=function(){var t=this;this.settings.toggleThumb&&(this.core.outer.addClass("lg-can-toggle"),this.core.$toolbar.append('<button type="button" aria-label="'+this.settings.thumbnailPluginStrings.toggleThumbnails+'" class="lg-toggle-thumb lg-icon"></button>'),this.core.outer.find(".lg-toggle-thumb").first().on("click.lg",(function(){t.core.outer.toggleClass("lg-components-open")})))},o.prototype.thumbKeyPress=function(){var t=this;this.$LG(window).on("keydown.lg.thumb.global"+this.core.lgId,(function(e){t.core.lgOpened&&t.settings.toggleThumb&&(38===e.keyCode?(e.preventDefault(),t.core.outer.addClass("lg-components-open")):40===e.keyCode&&(e.preventDefault(),t.core.outer.removeClass("lg-components-open")))}))},o.prototype.destroy=function(){this.settings.thumbnail&&(this.$LG(window).off(".lg.thumb.global"+this.core.lgId),this.core.LGel.off(".lg.thumb"),this.core.LGel.off(".thumb"),this.$thumbOuter.remove(),this.core.outer.removeClass("lg-has-thumb"))},o}()}));
diff --git a/assets/lib/lightgallery/plugins/lg-zoom.min.js b/assets/lib/lightgallery/plugins/lg-zoom.min.js
new file mode 100755
index 00000000..c5615538
--- /dev/null
+++ b/assets/lib/lightgallery/plugins/lg-zoom.min.js
@@ -0,0 +1,8 @@
+/**
+ * lightgallery | 2.4.0 | January 29th 2022
+ * http://www.lightgalleryjs.com/
+ * Copyright (c) 2020 Sachin Neravath;
+ * @license GPLv3
+ */
+
+!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).lgZoom=e()}(this,(function(){"use strict";var t=function(){return(t=Object.assign||function(t){for(var e,o=1,i=arguments.length;o<i;o++)for(var s in e=arguments[o])Object.prototype.hasOwnProperty.call(e,s)&&(t[s]=e[s]);return t}).apply(this,arguments)},e={scale:1,zoom:!0,actualSize:!0,showZoomInOutIcons:!1,actualSizeIcons:{zoomIn:"lg-zoom-in",zoomOut:"lg-zoom-out"},enableZoomAfter:300,zoomPluginStrings:{zoomIn:"Zoom in",zoomOut:"Zoom out",viewActualSize:"View actual size"}},o="lgContainerResize",i="lgBeforeOpen",s="lgAfterOpen",a="lgSlideItemLoad",r="lgAfterSlide",n="lgRotateLeft",l="lgRotateRight",g="lgFlipHorizontal",c="lgFlipVertical";return function(){function h(o,i){return this.core=o,this.$LG=i,this.settings=t(t({},e),this.core.settings),this}return h.prototype.buildTemplates=function(){var t=this.settings.showZoomInOutIcons?'<button id="'+this.core.getIdName("lg-zoom-in")+'" type="button" aria-label="'+this.settings.zoomPluginStrings.zoomIn+'" class="lg-zoom-in lg-icon"></button><button id="'+this.core.getIdName("lg-zoom-out")+'" type="button" aria-label="'+this.settings.zoomPluginStrings.zoomIn+'" class="lg-zoom-out lg-icon"></button>':"";this.settings.actualSize&&(t+='<button id="'+this.core.getIdName("lg-actual-size")+'" type="button" aria-label="'+this.settings.zoomPluginStrings.viewActualSize+'" class="'+this.settings.actualSizeIcons.zoomIn+' lg-icon"></button>'),this.core.outer.addClass("lg-use-transition-for-zoom"),this.core.$toolbar.first().append(t)},h.prototype.enableZoom=function(t){var e=this,o=this.settings.enableZoomAfter+t.detail.delay;this.$LG("body").first().hasClass("lg-from-hash")&&t.detail.delay?o=0:this.$LG("body").first().removeClass("lg-from-hash"),this.zoomableTimeout=setTimeout((function(){e.isImageSlide()&&(e.core.getSlideItem(t.detail.index).addClass("lg-zoomable"),t.detail.index===e.core.index&&e.setZoomEssentials())}),o+30)},h.prototype.enableZoomOnSlideItemLoad=function(){this.core.LGel.on(a+".zoom",this.enableZoom.bind(this))},h.prototype.getModifier=function(t,e,o){var i=t;t=Math.abs(t);var s=this.getCurrentTransform(o);if(!s)return 1;var a=1;if("X"===e){var r=Math.sign(parseFloat(s[0]));0===t||180===t?a=1:90===t&&(a=-90===i&&1===r||90===i&&-1===r?-1:1),a*=r}else{var n=Math.sign(parseFloat(s[3]));if(0===t||180===t)a=1;else if(90===t){var l=parseFloat(s[1]),g=parseFloat(s[2]);a=Math.sign(l*g*i*n)}a*=n}return a},h.prototype.getImageSize=function(t,e,o){return 90===Math.abs(e)&&(o="x"===o?"y":"x"),t[{y:"offsetHeight",x:"offsetWidth"}[o]]},h.prototype.getDragCords=function(t,e){return 90===e?{x:t.pageY,y:t.pageX}:{x:t.pageX,y:t.pageY}},h.prototype.getSwipeCords=function(t,e){var o=t.targetTouches[0].pageX,i=t.targetTouches[0].pageY;return 90===e?{x:i,y:o}:{x:o,y:i}},h.prototype.getDragAllowedAxises=function(t,e){e=e||this.scale||1;var o=this.imageYSize*e>this.containerRect.height,i=this.imageXSize*e>this.containerRect.width;return 90===t?{allowX:o,allowY:i}:{allowX:i,allowY:o}},h.prototype.getCurrentTransform=function(t){if(t){var e=window.getComputedStyle(t,null),o=e.getPropertyValue("-webkit-transform")||e.getPropertyValue("-moz-transform")||e.getPropertyValue("-ms-transform")||e.getPropertyValue("-o-transform")||e.getPropertyValue("transform")||"none";return"none"!==o?o.split("(")[1].split(")")[0].split(","):void 0}},h.prototype.getCurrentRotation=function(t){if(!t)return 0;var e=this.getCurrentTransform(t);return e?Math.round(Math.atan2(parseFloat(e[1]),parseFloat(e[0]))*(180/Math.PI)):0},h.prototype.setZoomEssentials=function(){var t=this.core.getSlideItem(this.core.index).find(".lg-image").first(),e=this.core.getSlideItem(this.core.index).find(".lg-img-rotate").first().get();this.rotateValue=this.getCurrentRotation(e),this.imageYSize=this.getImageSize(t.get(),this.rotateValue,"y"),this.imageXSize=this.getImageSize(t.get(),this.rotateValue,"x"),this.containerRect=this.core.outer.get().getBoundingClientRect(),this.modifierX=this.getModifier(this.rotateValue,"X",e),this.modifierY=this.getModifier(this.rotateValue,"Y",e)},h.prototype.zoomImage=function(t){var e,o,i=(this.containerRect.width-this.imageXSize)/2+this.containerRect.left,s=this.core.mediaContainerPosition,a=s.top,r=s.bottom,n=Math.abs(a-r)/2,l=(this.containerRect.height-this.imageYSize-n*this.modifierX)/2+this.scrollTop+this.containerRect.top;1===t&&(this.positionChanged=!1);var g=this.getDragAllowedAxises(Math.abs(this.rotateValue),t),c=g.allowY,h=g.allowX;this.positionChanged&&(e=this.left/(this.scale-1),o=this.top/(this.scale-1),this.pageX=Math.abs(e)+i,this.pageY=Math.abs(o)+l,this.positionChanged=!1);var m=this.getPossibleSwipeDragCords(this.rotateValue,t),u=(t-1)*(i-this.pageX),d=(t-1)*(l-this.pageY);h?this.isBeyondPossibleLeft(u,m.minX)?u=m.minX:this.isBeyondPossibleRight(u,m.maxX)&&(u=m.maxX):t>1&&(u<m.minX?u=m.minX:u>m.maxX&&(u=m.maxX)),c?this.isBeyondPossibleTop(d,m.minY)?d=m.minY:this.isBeyondPossibleBottom(d,m.maxY)&&(d=m.maxY):t>1&&(d<m.minY?d=m.minY:d>m.maxY&&(d=m.maxY)),this.setZoomStyles({x:u,y:d,scale:t})},h.prototype.setZoomStyles=function(t){var e=this.core.getSlideItem(this.core.index).find(".lg-image").first(),o=this.core.outer.find(".lg-current .lg-dummy-img").first(),i=e.parent();this.scale=t.scale,e.css("transform","scale3d("+t.scale+", "+t.scale+", 1)"),o.css("transform","scale3d("+t.scale+", "+t.scale+", 1)");var s="translate3d("+t.x+"px, "+t.y+"px, 0)";i.css("transform",s),this.left=t.x,this.top=t.y},h.prototype.setActualSize=function(t,e){var o=this;if(this.isImageSlide()&&!this.core.outer.hasClass("lg-first-slide-loading")){var i=this.getCurrentImageActualSizeScale();this.core.outer.hasClass("lg-zoomed")?this.scale=1:this.scale=this.getScale(i),this.setPageCords(e),this.beginZoom(this.scale),this.zoomImage(this.scale),setTimeout((function(){o.core.outer.removeClass("lg-grabbing").addClass("lg-grab")}),10)}},h.prototype.getNaturalWidth=function(t){var e=this.core.getSlideItem(t).find(".lg-image").first(),o=this.core.galleryItems[t].width;return o?parseFloat(o):e.get().naturalWidth},h.prototype.getActualSizeScale=function(t,e){return t>e?t/e||2:1},h.prototype.getCurrentImageActualSizeScale=function(){var t=this.core.getSlideItem(this.core.index).find(".lg-image").first().get().offsetWidth,e=this.getNaturalWidth(this.core.index)||t;return this.getActualSizeScale(e,t)},h.prototype.getPageCords=function(t){var e={};if(t)e.x=t.pageX||t.targetTouches[0].pageX,e.y=t.pageY||t.targetTouches[0].pageY;else{var o=this.core.outer.get().getBoundingClientRect();e.x=o.width/2+o.left,e.y=o.height/2+this.scrollTop+o.top}return e},h.prototype.setPageCords=function(t){var e=this.getPageCords(t);this.pageX=e.x,this.pageY=e.y},h.prototype.beginZoom=function(t){(this.core.outer.removeClass("lg-zoom-drag-transition lg-zoom-dragging"),t>1)?(this.core.outer.addClass("lg-zoomed"),this.core.getElementById("lg-actual-size").removeClass(this.settings.actualSizeIcons.zoomIn).addClass(this.settings.actualSizeIcons.zoomOut)):this.resetZoom();return t>1},h.prototype.getScale=function(t){var e=this.getCurrentImageActualSizeScale();return t<1?t=1:t>e&&(t=e),t},h.prototype.init=function(){var t=this;if(this.settings.zoom){this.buildTemplates(),this.enableZoomOnSlideItemLoad();var e=null;this.core.outer.on("dblclick.lg",(function(e){t.$LG(e.target).hasClass("lg-image")&&t.setActualSize(t.core.index,e)})),this.core.outer.on("touchstart.lg",(function(o){var i=t.$LG(o.target);1===o.targetTouches.length&&i.hasClass("lg-image")&&(e?(clearTimeout(e),e=null,o.preventDefault(),t.setActualSize(t.core.index,o)):e=setTimeout((function(){e=null}),300))})),this.core.LGel.on(o+".zoom "+l+".zoom "+n+".zoom "+g+".zoom "+c+".zoom",(function(){t.core.lgOpened&&t.isImageSlide()&&(t.setPageCords(),t.setZoomEssentials(),t.zoomImage(t.scale))})),this.$LG(window).on("scroll.lg.zoom.global"+this.core.lgId,(function(){t.core.lgOpened&&(t.scrollTop=t.$LG(window).scrollTop())})),this.core.getElementById("lg-zoom-out").on("click.lg",(function(){t.core.outer.find(".lg-current .lg-image").get()&&(t.scale-=t.settings.scale,t.scale=t.getScale(t.scale),t.beginZoom(t.scale),t.zoomImage(t.scale))})),this.core.getElementById("lg-zoom-in").on("click.lg",(function(){t.zoomIn()})),this.core.getElementById("lg-actual-size").on("click.lg",(function(){t.setActualSize(t.core.index)})),this.core.LGel.on(i+".zoom",(function(){t.core.outer.find(".lg-item").removeClass("lg-zoomable")})),this.core.LGel.on(s+".zoom",(function(){t.scrollTop=t.$LG(window).scrollTop(),t.pageX=t.core.outer.width()/2,t.pageY=t.core.outer.height()/2+t.scrollTop,t.scale=1})),this.core.LGel.on(r+".zoom",(function(e){var o=e.detail.prevIndex;t.scale=1,t.positionChanged=!1,t.resetZoom(o),t.isImageSlide()&&t.setZoomEssentials()})),this.zoomDrag(),this.pinchZoom(),this.zoomSwipe(),this.zoomableTimeout=!1,this.positionChanged=!1}},h.prototype.zoomIn=function(t){this.isImageSlide()&&(t?this.scale=t:this.scale+=this.settings.scale,this.scale=this.getScale(this.scale),this.beginZoom(this.scale),this.zoomImage(this.scale))},h.prototype.resetZoom=function(t){this.core.outer.removeClass("lg-zoomed lg-zoom-drag-transition");var e=this.core.getElementById("lg-actual-size"),o=this.core.getSlideItem(void 0!==t?t:this.core.index);e.removeClass(this.settings.actualSizeIcons.zoomOut).addClass(this.settings.actualSizeIcons.zoomIn),o.find(".lg-img-wrap").first().removeAttr("style"),o.find(".lg-image").first().removeAttr("style"),this.scale=1,this.left=0,this.top=0,this.setPageCords()},h.prototype.getTouchDistance=function(t){return Math.sqrt((t.targetTouches[0].pageX-t.targetTouches[1].pageX)*(t.targetTouches[0].pageX-t.targetTouches[1].pageX)+(t.targetTouches[0].pageY-t.targetTouches[1].pageY)*(t.targetTouches[0].pageY-t.targetTouches[1].pageY))},h.prototype.pinchZoom=function(){var t=this,e=0,o=!1,i=1,s=this.core.getSlideItem(this.core.index);this.core.$inner.on("touchstart.lg",(function(o){s=t.core.getSlideItem(t.core.index),t.isImageSlide()&&(2!==o.targetTouches.length||t.core.outer.hasClass("lg-first-slide-loading")||!t.$LG(o.target).hasClass("lg-item")&&!s.get().contains(o.target)||(i=t.scale||1,t.core.outer.removeClass("lg-zoom-drag-transition lg-zoom-dragging"),t.core.touchAction="pinch",e=t.getTouchDistance(o)))})),this.core.$inner.on("touchmove.lg",(function(a){if(2===a.targetTouches.length&&"pinch"===t.core.touchAction&&(t.$LG(a.target).hasClass("lg-item")||s.get().contains(a.target))){a.preventDefault();var r=t.getTouchDistance(a),n=e-r;!o&&Math.abs(n)>5&&(o=!0),o&&(t.scale=Math.max(1,i+.008*-n),t.zoomImage(t.scale))}})),this.core.$inner.on("touchend.lg",(function(i){"pinch"===t.core.touchAction&&(t.$LG(i.target).hasClass("lg-item")||s.get().contains(i.target))&&(o=!1,e=0,t.scale<=1?t.resetZoom():(t.scale=t.getScale(t.scale),t.zoomImage(t.scale),t.core.outer.addClass("lg-zoomed")),t.core.touchAction=void 0)}))},h.prototype.touchendZoom=function(t,e,o,i,s,a){var r=e.x-t.x,n=e.y-t.y,l=Math.abs(r)/s+1,g=Math.abs(n)/s+1;l>2&&(l+=1),g>2&&(g+=1),r*=l,n*=g;var c=this.core.getSlideItem(this.core.index).find(".lg-img-wrap").first(),h={};h.x=this.left+r*this.modifierX,h.y=this.top+n*this.modifierY;var m=this.getPossibleSwipeDragCords(a);(Math.abs(r)>15||Math.abs(n)>15)&&(i&&(this.isBeyondPossibleTop(h.y,m.minY)?h.y=m.minY:this.isBeyondPossibleBottom(h.y,m.maxY)&&(h.y=m.maxY)),o&&(this.isBeyondPossibleLeft(h.x,m.minX)?h.x=m.minX:this.isBeyondPossibleRight(h.x,m.maxX)&&(h.x=m.maxX)),i?this.top=h.y:h.y=this.top,o?this.left=h.x:h.x=this.left,this.setZoomSwipeStyles(c,h),this.positionChanged=!0)},h.prototype.getZoomSwipeCords=function(t,e,o,i,s){var a={};if(i){if(a.y=this.top+(e.y-t.y)*this.modifierY,this.isBeyondPossibleTop(a.y,s.minY)){var r=s.minY-a.y;a.y=s.minY-r/6}else if(this.isBeyondPossibleBottom(a.y,s.maxY)){var n=a.y-s.maxY;a.y=s.maxY+n/6}}else a.y=this.top;if(o){if(a.x=this.left+(e.x-t.x)*this.modifierX,this.isBeyondPossibleLeft(a.x,s.minX)){var l=s.minX-a.x;a.x=s.minX-l/6}else if(this.isBeyondPossibleRight(a.x,s.maxX)){var g=a.x-s.maxX;a.x=s.maxX+g/6}}else a.x=this.left;return a},h.prototype.isBeyondPossibleLeft=function(t,e){return t>=e},h.prototype.isBeyondPossibleRight=function(t,e){return t<=e},h.prototype.isBeyondPossibleTop=function(t,e){return t>=e},h.prototype.isBeyondPossibleBottom=function(t,e){return t<=e},h.prototype.isImageSlide=function(){var t=this.core.galleryItems[this.core.index];return"image"===this.core.getSlideType(t)},h.prototype.getPossibleSwipeDragCords=function(t,e){var o=e||this.scale||1,i=Math.abs(o),s=this.core.mediaContainerPosition,a=s.top,r=s.bottom,n=Math.abs(a-r)/2,l=(this.imageYSize-this.containerRect.height)/2+n*this.modifierX,g=this.containerRect.height-this.imageYSize*i+l,c=(this.imageXSize-this.containerRect.width)/2,h=this.containerRect.width-this.imageXSize*i+c,m={minY:l,maxY:g,minX:c,maxX:h};return 90===Math.abs(t)&&(m={minY:c,maxY:h,minX:l,maxX:g}),m},h.prototype.setZoomSwipeStyles=function(t,e){t.css("transform","translate3d("+e.x+"px, "+e.y+"px, 0)")},h.prototype.zoomSwipe=function(){var t,e,o=this,i={},s={},a=!1,r=!1,n=!1,l=new Date,g=(new Date,this.core.getSlideItem(this.core.index));this.core.$inner.on("touchstart.lg",(function(s){if(o.isImageSlide()&&(g=o.core.getSlideItem(o.core.index),(o.$LG(s.target).hasClass("lg-item")||g.get().contains(s.target))&&1===s.targetTouches.length&&o.core.outer.hasClass("lg-zoomed"))){s.preventDefault(),l=new Date,o.core.touchAction="zoomSwipe",e=o.core.getSlideItem(o.core.index).find(".lg-img-wrap").first();var a=o.getDragAllowedAxises(Math.abs(o.rotateValue));n=a.allowY,((r=a.allowX)||n)&&(i=o.getSwipeCords(s,Math.abs(o.rotateValue))),t=o.getPossibleSwipeDragCords(o.rotateValue),o.core.outer.addClass("lg-zoom-dragging lg-zoom-drag-transition")}})),this.core.$inner.on("touchmove.lg",(function(l){if(1===l.targetTouches.length&&"zoomSwipe"===o.core.touchAction&&(o.$LG(l.target).hasClass("lg-item")||g.get().contains(l.target))){l.preventDefault(),o.core.touchAction="zoomSwipe",s=o.getSwipeCords(l,Math.abs(o.rotateValue));var c=o.getZoomSwipeCords(i,s,r,n,t);(Math.abs(s.x-i.x)>15||Math.abs(s.y-i.y)>15)&&(a=!0,o.setZoomSwipeStyles(e,c))}})),this.core.$inner.on("touchend.lg",(function(t){if("zoomSwipe"===o.core.touchAction&&(o.$LG(t.target).hasClass("lg-item")||g.get().contains(t.target))){if(o.core.touchAction=void 0,o.core.outer.removeClass("lg-zoom-dragging"),!a)return;a=!1;var e=(new Date).valueOf()-l.valueOf();o.touchendZoom(i,s,r,n,e,o.rotateValue)}}))},h.prototype.zoomDrag=function(){var t,e,o,i,s=this,a={},r={},n=!1,l=!1,g=!1,c=!1;this.core.outer.on("mousedown.lg.zoom",(function(e){if(s.isImageSlide()){var r=s.core.getSlideItem(s.core.index);if(s.$LG(e.target).hasClass("lg-item")||r.get().contains(e.target)){t=new Date,i=s.core.getSlideItem(s.core.index).find(".lg-img-wrap").first();var l=s.getDragAllowedAxises(Math.abs(s.rotateValue));c=l.allowY,g=l.allowX,s.core.outer.hasClass("lg-zoomed")&&s.$LG(e.target).hasClass("lg-object")&&(g||c)&&(e.preventDefault(),a=s.getDragCords(e,Math.abs(s.rotateValue)),o=s.getPossibleSwipeDragCords(s.rotateValue),n=!0,s.core.outer.get().scrollLeft+=1,s.core.outer.get().scrollLeft-=1,s.core.outer.removeClass("lg-grab").addClass("lg-grabbing lg-zoom-drag-transition lg-zoom-dragging"))}}})),this.$LG(window).on("mousemove.lg.zoom.global"+this.core.lgId,(function(t){if(n){l=!0,r=s.getDragCords(t,Math.abs(s.rotateValue));var e=s.getZoomSwipeCords(a,r,g,c,o);s.setZoomSwipeStyles(i,e)}})),this.$LG(window).on("mouseup.lg.zoom.global"+this.core.lgId,(function(o){if(n){if(e=new Date,n=!1,s.core.outer.removeClass("lg-zoom-dragging"),l&&(a.x!==r.x||a.y!==r.y)){r=s.getDragCords(o,Math.abs(s.rotateValue));var i=e.valueOf()-t.valueOf();s.touchendZoom(a,r,g,c,i,s.rotateValue)}l=!1}s.core.outer.removeClass("lg-grabbing").addClass("lg-grab")}))},h.prototype.closeGallery=function(){this.resetZoom()},h.prototype.destroy=function(){this.$LG(window).off(".lg.zoom.global"+this.core.lgId),this.core.LGel.off(".lg.zoom"),this.core.LGel.off(".zoom"),clearTimeout(this.zoomableTimeout),this.zoomableTimeout=!1},h}()}));
diff --git a/assets/lib/lunr/lunr.min.js b/assets/lib/lunr/lunr.min.js
index 3f2f2cc6..a85231ed 100644
--- a/assets/lib/lunr/lunr.min.js
+++ b/assets/lib/lunr/lunr.min.js
@@ -1,6 +1,6 @@
/**
- * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.7
- * Copyright (C) 2019 Oliver Nightingale
+ * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9
+ * Copyright (C) 2020 Oliver Nightingale
* @license MIT
*/
-!function(){var e=function(t){var r=new e.Builder;return r.pipeline.add(e.trimmer,e.stopWordFilter,e.stemmer),r.searchPipeline.add(e.stemmer),t.call(r,r),r.build()};e.version="2.3.7",e.utils={},e.utils.warn=function(e){return function(t){e.console&&console.warn&&console.warn(t)}}(this),e.utils.asString=function(e){return void 0===e||null===e?"":e.toString()},e.utils.clone=function(e){if(null===e||void 0===e)return e;for(var t=Object.create(null),r=Object.keys(e),i=0;i<r.length;i++){var n=r[i],s=e[n];if(Array.isArray(s))t[n]=s.slice();else{if("string"!=typeof s&&"number"!=typeof s&&"boolean"!=typeof s)throw new TypeError("clone is not deep and does not support nested objects");t[n]=s}}return t},e.FieldRef=function(e,t,r){this.docRef=e,this.fieldName=t,this._stringValue=r},e.FieldRef.joiner="/",e.FieldRef.fromString=function(t){var r=t.indexOf(e.FieldRef.joiner);if(r===-1)throw"malformed field ref string";var i=t.slice(0,r),n=t.slice(r+1);return new e.FieldRef(n,i,t)},e.FieldRef.prototype.toString=function(){return void 0==this._stringValue&&(this._stringValue=this.fieldName+e.FieldRef.joiner+this.docRef),this._stringValue},e.Set=function(e){if(this.elements=Object.create(null),e){this.length=e.length;for(var t=0;t<this.length;t++)this.elements[e[t]]=!0}else this.length=0},e.Set.complete={intersect:function(e){return e},union:function(e){return e},contains:function(){return!0}},e.Set.empty={intersect:function(){return this},union:function(e){return e},contains:function(){return!1}},e.Set.prototype.contains=function(e){return!!this.elements[e]},e.Set.prototype.intersect=function(t){var r,i,n,s=[];if(t===e.Set.complete)return this;if(t===e.Set.empty)return t;this.length<t.length?(r=this,i=t):(r=t,i=this),n=Object.keys(r.elements);for(var o=0;o<n.length;o++){var a=n[o];a in i.elements&&s.push(a)}return new e.Set(s)},e.Set.prototype.union=function(t){return t===e.Set.complete?e.Set.complete:t===e.Set.empty?this:new e.Set(Object.keys(this.elements).concat(Object.keys(t.elements)))},e.idf=function(e,t){var r=0;for(var i in e)"_index"!=i&&(r+=Object.keys(e[i]).length);var n=(t-r+.5)/(r+.5);return Math.log(1+Math.abs(n))},e.Token=function(e,t){this.str=e||"",this.metadata=t||{}},e.Token.prototype.toString=function(){return this.str},e.Token.prototype.update=function(e){return this.str=e(this.str,this.metadata),this},e.Token.prototype.clone=function(t){return t=t||function(e){return e},new e.Token(t(this.str,this.metadata),this.metadata)},e.tokenizer=function(t,r){if(null==t||void 0==t)return[];if(Array.isArray(t))return t.map(function(t){return new e.Token(e.utils.asString(t).toLowerCase(),e.utils.clone(r))});for(var i=t.toString().toLowerCase(),n=i.length,s=[],o=0,a=0;o<=n;o++){var u=i.charAt(o),l=o-a;if(u.match(e.tokenizer.separator)||o==n){if(l>0){var c=e.utils.clone(r)||{};c.position=[a,l],c.index=s.length,s.push(new e.Token(i.slice(a,o),c))}a=o+1}}return s},e.tokenizer.separator=/[\s\-]+/,e.Pipeline=function(){this._stack=[]},e.Pipeline.registeredFunctions=Object.create(null),e.Pipeline.registerFunction=function(t,r){r in this.registeredFunctions&&e.utils.warn("Overwriting existing registered function: "+r),t.label=r,e.Pipeline.registeredFunctions[t.label]=t},e.Pipeline.warnIfFunctionNotRegistered=function(t){var r=t.label&&t.label in this.registeredFunctions;r||e.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",t)},e.Pipeline.load=function(t){var r=new e.Pipeline;return t.forEach(function(t){var i=e.Pipeline.registeredFunctions[t];if(!i)throw new Error("Cannot load unregistered function: "+t);r.add(i)}),r},e.Pipeline.prototype.add=function(){var t=Array.prototype.slice.call(arguments);t.forEach(function(t){e.Pipeline.warnIfFunctionNotRegistered(t),this._stack.push(t)},this)},e.Pipeline.prototype.after=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");i+=1,this._stack.splice(i,0,r)},e.Pipeline.prototype.before=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");this._stack.splice(i,0,r)},e.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);t!=-1&&this._stack.splice(t,1)},e.Pipeline.prototype.run=function(e){for(var t=this._stack.length,r=0;r<t;r++){for(var i=this._stack[r],n=[],s=0;s<e.length;s++){var o=i(e[s],s,e);if(null!==o&&void 0!==o&&""!==o)if(Array.isArray(o))for(var a=0;a<o.length;a++)n.push(o[a]);else n.push(o)}e=n}return e},e.Pipeline.prototype.runString=function(t,r){var i=new e.Token(t,r);return this.run([i]).map(function(e){return e.toString()})},e.Pipeline.prototype.reset=function(){this._stack=[]},e.Pipeline.prototype.toJSON=function(){return this._stack.map(function(t){return e.Pipeline.warnIfFunctionNotRegistered(t),t.label})},e.Vector=function(e){this._magnitude=0,this.elements=e||[]},e.Vector.prototype.positionForIndex=function(e){if(0==this.elements.length)return 0;for(var t=0,r=this.elements.length/2,i=r-t,n=Math.floor(i/2),s=this.elements[2*n];i>1&&(s<e&&(t=n),s>e&&(r=n),s!=e);)i=r-t,n=t+Math.floor(i/2),s=this.elements[2*n];return s==e?2*n:s>e?2*n:s<e?2*(n+1):void 0},e.Vector.prototype.insert=function(e,t){this.upsert(e,t,function(){throw"duplicate index"})},e.Vector.prototype.upsert=function(e,t,r){this._magnitude=0;var i=this.positionForIndex(e);this.elements[i]==e?this.elements[i+1]=r(this.elements[i+1],t):this.elements.splice(i,0,e,t)},e.Vector.prototype.magnitude=function(){if(this._magnitude)return this._magnitude;for(var e=0,t=this.elements.length,r=1;r<t;r+=2){var i=this.elements[r];e+=i*i}return this._magnitude=Math.sqrt(e)},e.Vector.prototype.dot=function(e){for(var t=0,r=this.elements,i=e.elements,n=r.length,s=i.length,o=0,a=0,u=0,l=0;u<n&&l<s;)o=r[u],a=i[l],o<a?u+=2:o>a?l+=2:o==a&&(t+=r[u+1]*i[l+1],u+=2,l+=2);return t},e.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},e.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,r=0;t<this.elements.length;t+=2,r++)e[r]=this.elements[t];return e},e.Vector.prototype.toJSON=function(){return this.elements},e.stemmer=function(){var e={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},t={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},r="[^aeiou]",i="[aeiouy]",n=r+"[^aeiouy]*",s=i+"[aeiou]*",o="^("+n+")?"+s+n,a="^("+n+")?"+s+n+"("+s+")?$",u="^("+n+")?"+s+n+s+n,l="^("+n+")?"+i,c=new RegExp(o),h=new RegExp(u),d=new RegExp(a),f=new RegExp(l),p=/^(.+?)(ss|i)es$/,y=/^(.+?)([^s])s$/,m=/^(.+?)eed$/,v=/^(.+?)(ed|ing)$/,g=/.$/,x=/(at|bl|iz)$/,w=new RegExp("([^aeiouylsz])\\1$"),Q=new RegExp("^"+n+i+"[^aeiouwxy]$"),k=/^(.+?[^aeiou])y$/,S=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,E=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,L=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,b=/^(.+?)(s|t)(ion)$/,P=/^(.+?)e$/,T=/ll$/,O=new RegExp("^"+n+i+"[^aeiouwxy]$"),I=function(r){var i,n,s,o,a,u,l;if(r.length<3)return r;if(s=r.substr(0,1),"y"==s&&(r=s.toUpperCase()+r.substr(1)),o=p,a=y,o.test(r)?r=r.replace(o,"$1$2"):a.test(r)&&(r=r.replace(a,"$1$2")),o=m,a=v,o.test(r)){var I=o.exec(r);o=c,o.test(I[1])&&(o=g,r=r.replace(o,""))}else if(a.test(r)){var I=a.exec(r);i=I[1],a=f,a.test(i)&&(r=i,a=x,u=w,l=Q,a.test(r)?r+="e":u.test(r)?(o=g,r=r.replace(o,"")):l.test(r)&&(r+="e"))}if(o=k,o.test(r)){var I=o.exec(r);i=I[1],r=i+"i"}if(o=S,o.test(r)){var I=o.exec(r);i=I[1],n=I[2],o=c,o.test(i)&&(r=i+e[n])}if(o=E,o.test(r)){var I=o.exec(r);i=I[1],n=I[2],o=c,o.test(i)&&(r=i+t[n])}if(o=L,a=b,o.test(r)){var I=o.exec(r);i=I[1],o=h,o.test(i)&&(r=i)}else if(a.test(r)){var I=a.exec(r);i=I[1]+I[2],a=h,a.test(i)&&(r=i)}if(o=P,o.test(r)){var I=o.exec(r);i=I[1],o=h,a=d,u=O,(o.test(i)||a.test(i)&&!u.test(i))&&(r=i)}return o=T,a=h,o.test(r)&&a.test(r)&&(o=g,r=r.replace(o,"")),"y"==s&&(r=s.toLowerCase()+r.substr(1)),r};return function(e){return e.update(I)}}(),e.Pipeline.registerFunction(e.stemmer,"stemmer"),e.generateStopWordFilter=function(e){var t=e.reduce(function(e,t){return e[t]=t,e},{});return function(e){if(e&&t[e.toString()]!==e.toString())return e}},e.stopWordFilter=e.generateStopWordFilter(["a","able","about","across","after","all","almost","also","am","among","an","and","any","are","as","at","be","because","been","but","by","can","cannot","could","dear","did","do","does","either","else","ever","every","for","from","get","got","had","has","have","he","her","hers","him","his","how","however","i","if","in","into","is","it","its","just","least","let","like","likely","may","me","might","most","must","my","neither","no","nor","not","of","off","often","on","only","or","other","our","own","rather","said","say","says","she","should","since","so","some","than","that","the","their","them","then","there","these","they","this","tis","to","too","twas","us","wants","was","we","were","what","when","where","which","while","who","whom","why","will","with","would","yet","you","your"]),e.Pipeline.registerFunction(e.stopWordFilter,"stopWordFilter"),e.trimmer=function(e){return e.update(function(e){return e.replace(/^\W+/,"").replace(/\W+$/,"")})},e.Pipeline.registerFunction(e.trimmer,"trimmer"),e.TokenSet=function(){this["final"]=!1,this.edges={},this.id=e.TokenSet._nextId,e.TokenSet._nextId+=1},e.TokenSet._nextId=1,e.TokenSet.fromArray=function(t){for(var r=new e.TokenSet.Builder,i=0,n=t.length;i<n;i++)r.insert(t[i]);return r.finish(),r.root},e.TokenSet.fromClause=function(t){return"editDistance"in t?e.TokenSet.fromFuzzyString(t.term,t.editDistance):e.TokenSet.fromString(t.term)},e.TokenSet.fromFuzzyString=function(t,r){for(var i=new e.TokenSet,n=[{node:i,editsRemaining:r,str:t}];n.length;){var s=n.pop();if(s.str.length>0){var o,a=s.str.charAt(0);a in s.node.edges?o=s.node.edges[a]:(o=new e.TokenSet,s.node.edges[a]=o),1==s.str.length&&(o["final"]=!0),n.push({node:o,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(0!=s.editsRemaining){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new e.TokenSet;s.node.edges["*"]=u}if(0==s.str.length&&(u["final"]=!0),n.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&n.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),1==s.str.length&&(s.node["final"]=!0),s.str.length>=1){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new e.TokenSet;s.node.edges["*"]=l}1==s.str.length&&(l["final"]=!0),n.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var c,h=s.str.charAt(0),d=s.str.charAt(1);d in s.node.edges?c=s.node.edges[d]:(c=new e.TokenSet,s.node.edges[d]=c),1==s.str.length&&(c["final"]=!0),n.push({node:c,editsRemaining:s.editsRemaining-1,str:h+s.str.slice(2)})}}}return i},e.TokenSet.fromString=function(t){for(var r=new e.TokenSet,i=r,n=0,s=t.length;n<s;n++){var o=t[n],a=n==s-1;if("*"==o)r.edges[o]=r,r["final"]=a;else{var u=new e.TokenSet;u["final"]=a,r.edges[o]=u,r=u}}return i},e.TokenSet.prototype.toArray=function(){for(var e=[],t=[{prefix:"",node:this}];t.length;){var r=t.pop(),i=Object.keys(r.node.edges),n=i.length;r.node["final"]&&(r.prefix.charAt(0),e.push(r.prefix));for(var s=0;s<n;s++){var o=i[s];t.push({prefix:r.prefix.concat(o),node:r.node.edges[o]})}}return e},e.TokenSet.prototype.toString=function(){if(this._str)return this._str;for(var e=this["final"]?"1":"0",t=Object.keys(this.edges).sort(),r=t.length,i=0;i<r;i++){var n=t[i],s=this.edges[n];e=e+n+s.id}return e},e.TokenSet.prototype.intersect=function(t){for(var r=new e.TokenSet,i=void 0,n=[{qNode:t,output:r,node:this}];n.length;){i=n.pop();for(var s=Object.keys(i.qNode.edges),o=s.length,a=Object.keys(i.node.edges),u=a.length,l=0;l<o;l++)for(var c=s[l],h=0;h<u;h++){var d=a[h];if(d==c||"*"==c){var f=i.node.edges[d],p=i.qNode.edges[c],y=f["final"]&&p["final"],m=void 0;d in i.output.edges?(m=i.output.edges[d],m["final"]=m["final"]||y):(m=new e.TokenSet,m["final"]=y,i.output.edges[d]=m),n.push({qNode:p,output:m,node:f})}}}return r},e.TokenSet.Builder=function(){this.previousWord="",this.root=new e.TokenSet,this.uncheckedNodes=[],this.minimizedNodes={}},e.TokenSet.Builder.prototype.insert=function(t){var r,i=0;if(t<this.previousWord)throw new Error("Out of order word insertion");for(var n=0;n<t.length&&n<this.previousWord.length&&t[n]==this.previousWord[n];n++)i++;this.minimize(i),r=0==this.uncheckedNodes.length?this.root:this.uncheckedNodes[this.uncheckedNodes.length-1].child;for(var n=i;n<t.length;n++){var s=new e.TokenSet,o=t[n];r.edges[o]=s,this.uncheckedNodes.push({parent:r,"char":o,child:s}),r=s}r["final"]=!0,this.previousWord=t},e.TokenSet.Builder.prototype.finish=function(){this.minimize(0)},e.TokenSet.Builder.prototype.minimize=function(e){for(var t=this.uncheckedNodes.length-1;t>=e;t--){var r=this.uncheckedNodes[t],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r["char"]]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}},e.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},e.Index.prototype.search=function(t){return this.query(function(r){var i=new e.QueryParser(t,r);i.parse()})},e.Index.prototype.query=function(t){for(var r=new e.Query(this.fields),i=Object.create(null),n=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),u=0;u<this.fields.length;u++)n[this.fields[u]]=new e.Vector;t.call(r,r);for(var u=0;u<r.clauses.length;u++){var l=r.clauses[u],c=null,h=e.Set.complete;c=l.usePipeline?this.pipeline.runString(l.term,{fields:l.fields}):[l.term];for(var d=0;d<c.length;d++){var f=c[d];l.term=f;var p=e.TokenSet.fromClause(l),y=this.tokenSet.intersect(p).toArray();if(0===y.length&&l.presence===e.Query.presence.REQUIRED){for(var m=0;m<l.fields.length;m++){var v=l.fields[m];o[v]=e.Set.empty}break}for(var g=0;g<y.length;g++)for(var x=y[g],w=this.invertedIndex[x],Q=w._index,m=0;m<l.fields.length;m++){var v=l.fields[m],k=w[v],S=Object.keys(k),E=x+"/"+v,L=new e.Set(S);if(l.presence==e.Query.presence.REQUIRED&&(h=h.union(L),void 0===o[v]&&(o[v]=e.Set.complete)),l.presence!=e.Query.presence.PROHIBITED){if(n[v].upsert(Q,l.boost,function(e,t){return e+t}),!s[E]){for(var b=0;b<S.length;b++){var P,T=S[b],O=new e.FieldRef(T,v),I=k[T];void 0===(P=i[O])?i[O]=new e.MatchData(x,v,I):P.add(x,v,I)}s[E]=!0}}else void 0===a[v]&&(a[v]=e.Set.empty),a[v]=a[v].union(L)}}if(l.presence===e.Query.presence.REQUIRED)for(var m=0;m<l.fields.length;m++){var v=l.fields[m];o[v]=o[v].intersect(h)}}for(var R=e.Set.complete,F=e.Set.empty,u=0;u<this.fields.length;u++){var v=this.fields[u];o[v]&&(R=R.intersect(o[v])),a[v]&&(F=F.union(a[v]))}var C=Object.keys(i),N=[],_=Object.create(null);if(r.isNegated()){C=Object.keys(this.fieldVectors);for(var u=0;u<C.length;u++){var O=C[u],j=e.FieldRef.fromString(O);i[O]=new e.MatchData}}for(var u=0;u<C.length;u++){var j=e.FieldRef.fromString(C[u]),D=j.docRef;if(R.contains(D)&&!F.contains(D)){var A,B=this.fieldVectors[j],V=n[j.fieldName].similarity(B);if(void 0!==(A=_[D]))A.score+=V,A.matchData.combine(i[j]);else{var z={ref:D,score:V,matchData:i[j]};_[D]=z,N.push(z)}}}return N.sort(function(e,t){return t.score-e.score})},e.Index.prototype.toJSON=function(){var t=Object.keys(this.invertedIndex).sort().map(function(e){return[e,this.invertedIndex[e]]},this),r=Object.keys(this.fieldVectors).map(function(e){return[e,this.fieldVectors[e].toJSON()]},this);return{version:e.version,fields:this.fields,fieldVectors:r,invertedIndex:t,pipeline:this.pipeline.toJSON()}},e.Index.load=function(t){var r={},i={},n=t.fieldVectors,s=Object.create(null),o=t.invertedIndex,a=new e.TokenSet.Builder,u=e.Pipeline.load(t.pipeline);t.version!=e.version&&e.utils.warn("Version mismatch when loading serialised index. Current version of lunr '"+e.version+"' does not match serialized index '"+t.version+"'");for(var l=0;l<n.length;l++){var c=n[l],h=c[0],d=c[1];i[h]=new e.Vector(d)}for(var l=0;l<o.length;l++){var c=o[l],f=c[0],p=c[1];a.insert(f),s[f]=p}return a.finish(),r.fields=t.fields,r.fieldVectors=i,r.invertedIndex=s,r.tokenSet=a.root,r.pipeline=u,new e.Index(r)},e.Builder=function(){this._ref="id",this._fields=Object.create(null),this._documents=Object.create(null),this.invertedIndex=Object.create(null),this.fieldTermFrequencies={},this.fieldLengths={},this.tokenizer=e.tokenizer,this.pipeline=new e.Pipeline,this.searchPipeline=new e.Pipeline,this.documentCount=0,this._b=.75,this._k1=1.2,this.termIndex=0,this.metadataWhitelist=[]},e.Builder.prototype.ref=function(e){this._ref=e},e.Builder.prototype.field=function(e,t){if(/\//.test(e))throw new RangeError("Field '"+e+"' contains illegal character '/'");this._fields[e]=t||{}},e.Builder.prototype.b=function(e){e<0?this._b=0:e>1?this._b=1:this._b=e},e.Builder.prototype.k1=function(e){this._k1=e},e.Builder.prototype.add=function(t,r){var i=t[this._ref],n=Object.keys(this._fields);this._documents[i]=r||{},this.documentCount+=1;for(var s=0;s<n.length;s++){var o=n[s],a=this._fields[o].extractor,u=a?a(t):t[o],l=this.tokenizer(u,{fields:[o]}),c=this.pipeline.run(l),h=new e.FieldRef(i,o),d=Object.create(null);this.fieldTermFrequencies[h]=d,this.fieldLengths[h]=0,this.fieldLengths[h]+=c.length;for(var f=0;f<c.length;f++){var p=c[f];if(void 0==d[p]&&(d[p]=0),d[p]+=1,void 0==this.invertedIndex[p]){var y=Object.create(null);y._index=this.termIndex,this.termIndex+=1;for(var m=0;m<n.length;m++)y[n[m]]=Object.create(null);this.invertedIndex[p]=y}void 0==this.invertedIndex[p][o][i]&&(this.invertedIndex[p][o][i]=Object.create(null));for(var v=0;v<this.metadataWhitelist.length;v++){var g=this.metadataWhitelist[v],x=p.metadata[g];void 0==this.invertedIndex[p][o][i][g]&&(this.invertedIndex[p][o][i][g]=[]),this.invertedIndex[p][o][i][g].push(x)}}}},e.Builder.prototype.calculateAverageFieldLengths=function(){for(var t=Object.keys(this.fieldLengths),r=t.length,i={},n={},s=0;s<r;s++){var o=e.FieldRef.fromString(t[s]),a=o.fieldName;n[a]||(n[a]=0),n[a]+=1,i[a]||(i[a]=0),i[a]+=this.fieldLengths[o]}for(var u=Object.keys(this._fields),s=0;s<u.length;s++){var l=u[s];i[l]=i[l]/n[l]}this.averageFieldLength=i},e.Builder.prototype.createFieldVectors=function(){for(var t={},r=Object.keys(this.fieldTermFrequencies),i=r.length,n=Object.create(null),s=0;s<i;s++){for(var o=e.FieldRef.fromString(r[s]),a=o.fieldName,u=this.fieldLengths[o],l=new e.Vector,c=this.fieldTermFrequencies[o],h=Object.keys(c),d=h.length,f=this._fields[a].boost||1,p=this._documents[o.docRef].boost||1,y=0;y<d;y++){var m,v,g,x=h[y],w=c[x],Q=this.invertedIndex[x]._index;void 0===n[x]?(m=e.idf(this.invertedIndex[x],this.documentCount),n[x]=m):m=n[x],v=m*((this._k1+1)*w)/(this._k1*(1-this._b+this._b*(u/this.averageFieldLength[a]))+w),v*=f,v*=p,g=Math.round(1e3*v)/1e3,l.insert(Q,g)}t[o]=l}this.fieldVectors=t},e.Builder.prototype.createTokenSet=function(){this.tokenSet=e.TokenSet.fromArray(Object.keys(this.invertedIndex).sort())},e.Builder.prototype.build=function(){return this.calculateAverageFieldLengths(),this.createFieldVectors(),this.createTokenSet(),new e.Index({invertedIndex:this.invertedIndex,fieldVectors:this.fieldVectors,tokenSet:this.tokenSet,fields:Object.keys(this._fields),pipeline:this.searchPipeline})},e.Builder.prototype.use=function(e){var t=Array.prototype.slice.call(arguments,1);t.unshift(this),e.apply(this,t)},e.MatchData=function(e,t,r){for(var i=Object.create(null),n=Object.keys(r||{}),s=0;s<n.length;s++){var o=n[s];i[o]=r[o].slice()}this.metadata=Object.create(null),void 0!==e&&(this.metadata[e]=Object.create(null),this.metadata[e][t]=i)},e.MatchData.prototype.combine=function(e){for(var t=Object.keys(e.metadata),r=0;r<t.length;r++){var i=t[r],n=Object.keys(e.metadata[i]);void 0==this.metadata[i]&&(this.metadata[i]=Object.create(null));for(var s=0;s<n.length;s++){var o=n[s],a=Object.keys(e.metadata[i][o]);void 0==this.metadata[i][o]&&(this.metadata[i][o]=Object.create(null));for(var u=0;u<a.length;u++){var l=a[u];void 0==this.metadata[i][o][l]?this.metadata[i][o][l]=e.metadata[i][o][l]:this.metadata[i][o][l]=this.metadata[i][o][l].concat(e.metadata[i][o][l])}}}},e.MatchData.prototype.add=function(e,t,r){if(!(e in this.metadata))return this.metadata[e]=Object.create(null),void(this.metadata[e][t]=r);if(!(t in this.metadata[e]))return void(this.metadata[e][t]=r);for(var i=Object.keys(r),n=0;n<i.length;n++){var s=i[n];s in this.metadata[e][t]?this.metadata[e][t][s]=this.metadata[e][t][s].concat(r[s]):this.metadata[e][t][s]=r[s]}},e.Query=function(e){this.clauses=[],this.allFields=e},e.Query.wildcard=new String("*"),e.Query.wildcard.NONE=0,e.Query.wildcard.LEADING=1,e.Query.wildcard.TRAILING=2,e.Query.presence={OPTIONAL:1,REQUIRED:2,PROHIBITED:3},e.Query.prototype.clause=function(t){return"fields"in t||(t.fields=this.allFields),"boost"in t||(t.boost=1),"usePipeline"in t||(t.usePipeline=!0),"wildcard"in t||(t.wildcard=e.Query.wildcard.NONE),t.wildcard&e.Query.wildcard.LEADING&&t.term.charAt(0)!=e.Query.wildcard&&(t.term="*"+t.term),t.wildcard&e.Query.wildcard.TRAILING&&t.term.slice(-1)!=e.Query.wildcard&&(t.term=""+t.term+"*"),"presence"in t||(t.presence=e.Query.presence.OPTIONAL),this.clauses.push(t),this},e.Query.prototype.isNegated=function(){for(var t=0;t<this.clauses.length;t++)if(this.clauses[t].presence!=e.Query.presence.PROHIBITED)return!1;return!0},e.Query.prototype.term=function(t,r){if(Array.isArray(t))return t.forEach(function(t){this.term(t,e.utils.clone(r))},this),this;var i=r||{};return i.term=t.toString(),this.clause(i),this},e.QueryParseError=function(e,t,r){this.name="QueryParseError",this.message=e,this.start=t,this.end=r},e.QueryParseError.prototype=new Error,e.QueryLexer=function(e){this.lexemes=[],this.str=e,this.length=e.length,this.pos=0,this.start=0,this.escapeCharPositions=[]},e.QueryLexer.prototype.run=function(){for(var t=e.QueryLexer.lexText;t;)t=t(this)},e.QueryLexer.prototype.sliceString=function(){for(var e=[],t=this.start,r=this.pos,i=0;i<this.escapeCharPositions.length;i++)r=this.escapeCharPositions[i],e.push(this.str.slice(t,r)),t=r+1;return e.push(this.str.slice(t,this.pos)),this.escapeCharPositions.length=0,e.join("")},e.QueryLexer.prototype.emit=function(e){this.lexemes.push({type:e,str:this.sliceString(),start:this.start,end:this.pos}),this.start=this.pos},e.QueryLexer.prototype.escapeCharacter=function(){this.escapeCharPositions.push(this.pos-1),this.pos+=1},e.QueryLexer.prototype.next=function(){if(this.pos>=this.length)return e.QueryLexer.EOS;var t=this.str.charAt(this.pos);return this.pos+=1,t},e.QueryLexer.prototype.width=function(){return this.pos-this.start},e.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},e.QueryLexer.prototype.backup=function(){this.pos-=1},e.QueryLexer.prototype.acceptDigitRun=function(){var t,r;do t=this.next(),r=t.charCodeAt(0);while(r>47&&r<58);t!=e.QueryLexer.EOS&&this.backup()},e.QueryLexer.prototype.more=function(){return this.pos<this.length},e.QueryLexer.EOS="EOS",e.QueryLexer.FIELD="FIELD",e.QueryLexer.TERM="TERM",e.QueryLexer.EDIT_DISTANCE="EDIT_DISTANCE",e.QueryLexer.BOOST="BOOST",e.QueryLexer.PRESENCE="PRESENCE",e.QueryLexer.lexField=function(t){return t.backup(),t.emit(e.QueryLexer.FIELD),t.ignore(),e.QueryLexer.lexText},e.QueryLexer.lexTerm=function(t){if(t.width()>1&&(t.backup(),t.emit(e.QueryLexer.TERM)),t.ignore(),t.more())return e.QueryLexer.lexText},e.QueryLexer.lexEditDistance=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.EDIT_DISTANCE),e.QueryLexer.lexText},e.QueryLexer.lexBoost=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.BOOST),e.QueryLexer.lexText},e.QueryLexer.lexEOS=function(t){t.width()>0&&t.emit(e.QueryLexer.TERM)},e.QueryLexer.termSeparator=e.tokenizer.separator,e.QueryLexer.lexText=function(t){for(;;){var r=t.next();if(r==e.QueryLexer.EOS)return e.QueryLexer.lexEOS;if(92!=r.charCodeAt(0)){if(":"==r)return e.QueryLexer.lexField;if("~"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexEditDistance;if("^"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexBoost;if("+"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if("-"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if(r.match(e.QueryLexer.termSeparator))return e.QueryLexer.lexTerm}else t.escapeCharacter()}},e.QueryParser=function(t,r){this.lexer=new e.QueryLexer(t),this.query=r,this.currentClause={},this.lexemeIdx=0},e.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var t=e.QueryParser.parseClause;t;)t=t(this);return this.query},e.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},e.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},e.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},e.QueryParser.parseClause=function(t){var r=t.peekLexeme();if(void 0!=r)switch(r.type){case e.QueryLexer.PRESENCE:return e.QueryParser.parsePresence;case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(i+=" with value '"+r.str+"'"),new e.QueryParseError(i,r.start,r.end)}},e.QueryParser.parsePresence=function(t){var r=t.consumeLexeme();if(void 0!=r){switch(r.str){case"-":t.currentClause.presence=e.Query.presence.PROHIBITED;break;case"+":t.currentClause.presence=e.Query.presence.REQUIRED;break;default:var i="unrecognised presence operator'"+r.str+"'";throw new e.QueryParseError(i,r.start,r.end)}var n=t.peekLexeme();if(void 0==n){var i="expecting term or field, found nothing";throw new e.QueryParseError(i,r.start,r.end)}switch(n.type){case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expecting term or field, found '"+n.type+"'";throw new e.QueryParseError(i,n.start,n.end)}}},e.QueryParser.parseField=function(t){var r=t.consumeLexeme();if(void 0!=r){if(t.query.allFields.indexOf(r.str)==-1){var i=t.query.allFields.map(function(e){return"'"+e+"'"}).join(", "),n="unrecognised field '"+r.str+"', possible fields: "+i;throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.fields=[r.str];var s=t.peekLexeme();if(void 0==s){var n="expecting term, found nothing";throw new e.QueryParseError(n,r.start,r.end)}switch(s.type){case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var n="expecting term, found '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseTerm=function(t){var r=t.consumeLexeme();if(void 0!=r){t.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(t.currentClause.usePipeline=!1);var i=t.peekLexeme();if(void 0==i)return void t.nextClause();switch(i.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+i.type+"'";throw new e.QueryParseError(n,i.start,i.end)}}},e.QueryParser.parseEditDistance=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="edit distance must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.editDistance=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseBoost=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="boost must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.boost=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.lunr=t()}(this,function(){return e})}();
+ !function(){var e=function(t){var r=new e.Builder;return r.pipeline.add(e.trimmer,e.stopWordFilter,e.stemmer),r.searchPipeline.add(e.stemmer),t.call(r,r),r.build()};e.version="2.3.9",e.utils={},e.utils.warn=function(e){return function(t){e.console&&console.warn&&console.warn(t)}}(this),e.utils.asString=function(e){return void 0===e||null===e?"":e.toString()},e.utils.clone=function(e){if(null===e||void 0===e)return e;for(var t=Object.create(null),r=Object.keys(e),i=0;i<r.length;i++){var n=r[i],s=e[n];if(Array.isArray(s))t[n]=s.slice();else{if("string"!=typeof s&&"number"!=typeof s&&"boolean"!=typeof s)throw new TypeError("clone is not deep and does not support nested objects");t[n]=s}}return t},e.FieldRef=function(e,t,r){this.docRef=e,this.fieldName=t,this._stringValue=r},e.FieldRef.joiner="/",e.FieldRef.fromString=function(t){var r=t.indexOf(e.FieldRef.joiner);if(r===-1)throw"malformed field ref string";var i=t.slice(0,r),n=t.slice(r+1);return new e.FieldRef(n,i,t)},e.FieldRef.prototype.toString=function(){return void 0==this._stringValue&&(this._stringValue=this.fieldName+e.FieldRef.joiner+this.docRef),this._stringValue},e.Set=function(e){if(this.elements=Object.create(null),e){this.length=e.length;for(var t=0;t<this.length;t++)this.elements[e[t]]=!0}else this.length=0},e.Set.complete={intersect:function(e){return e},union:function(){return this},contains:function(){return!0}},e.Set.empty={intersect:function(){return this},union:function(e){return e},contains:function(){return!1}},e.Set.prototype.contains=function(e){return!!this.elements[e]},e.Set.prototype.intersect=function(t){var r,i,n,s=[];if(t===e.Set.complete)return this;if(t===e.Set.empty)return t;this.length<t.length?(r=this,i=t):(r=t,i=this),n=Object.keys(r.elements);for(var o=0;o<n.length;o++){var a=n[o];a in i.elements&&s.push(a)}return new e.Set(s)},e.Set.prototype.union=function(t){return t===e.Set.complete?e.Set.complete:t===e.Set.empty?this:new e.Set(Object.keys(this.elements).concat(Object.keys(t.elements)))},e.idf=function(e,t){var r=0;for(var i in e)"_index"!=i&&(r+=Object.keys(e[i]).length);var n=(t-r+.5)/(r+.5);return Math.log(1+Math.abs(n))},e.Token=function(e,t){this.str=e||"",this.metadata=t||{}},e.Token.prototype.toString=function(){return this.str},e.Token.prototype.update=function(e){return this.str=e(this.str,this.metadata),this},e.Token.prototype.clone=function(t){return t=t||function(e){return e},new e.Token(t(this.str,this.metadata),this.metadata)},e.tokenizer=function(t,r){if(null==t||void 0==t)return[];if(Array.isArray(t))return t.map(function(t){return new e.Token(e.utils.asString(t).toLowerCase(),e.utils.clone(r))});for(var i=t.toString().toLowerCase(),n=i.length,s=[],o=0,a=0;o<=n;o++){var u=i.charAt(o),l=o-a;if(u.match(e.tokenizer.separator)||o==n){if(l>0){var c=e.utils.clone(r)||{};c.position=[a,l],c.index=s.length,s.push(new e.Token(i.slice(a,o),c))}a=o+1}}return s},e.tokenizer.separator=/[\s\-]+/,e.Pipeline=function(){this._stack=[]},e.Pipeline.registeredFunctions=Object.create(null),e.Pipeline.registerFunction=function(t,r){r in this.registeredFunctions&&e.utils.warn("Overwriting existing registered function: "+r),t.label=r,e.Pipeline.registeredFunctions[t.label]=t},e.Pipeline.warnIfFunctionNotRegistered=function(t){var r=t.label&&t.label in this.registeredFunctions;r||e.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",t)},e.Pipeline.load=function(t){var r=new e.Pipeline;return t.forEach(function(t){var i=e.Pipeline.registeredFunctions[t];if(!i)throw new Error("Cannot load unregistered function: "+t);r.add(i)}),r},e.Pipeline.prototype.add=function(){var t=Array.prototype.slice.call(arguments);t.forEach(function(t){e.Pipeline.warnIfFunctionNotRegistered(t),this._stack.push(t)},this)},e.Pipeline.prototype.after=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");i+=1,this._stack.splice(i,0,r)},e.Pipeline.prototype.before=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");this._stack.splice(i,0,r)},e.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);t!=-1&&this._stack.splice(t,1)},e.Pipeline.prototype.run=function(e){for(var t=this._stack.length,r=0;r<t;r++){for(var i=this._stack[r],n=[],s=0;s<e.length;s++){var o=i(e[s],s,e);if(null!==o&&void 0!==o&&""!==o)if(Array.isArray(o))for(var a=0;a<o.length;a++)n.push(o[a]);else n.push(o)}e=n}return e},e.Pipeline.prototype.runString=function(t,r){var i=new e.Token(t,r);return this.run([i]).map(function(e){return e.toString()})},e.Pipeline.prototype.reset=function(){this._stack=[]},e.Pipeline.prototype.toJSON=function(){return this._stack.map(function(t){return e.Pipeline.warnIfFunctionNotRegistered(t),t.label})},e.Vector=function(e){this._magnitude=0,this.elements=e||[]},e.Vector.prototype.positionForIndex=function(e){if(0==this.elements.length)return 0;for(var t=0,r=this.elements.length/2,i=r-t,n=Math.floor(i/2),s=this.elements[2*n];i>1&&(s<e&&(t=n),s>e&&(r=n),s!=e);)i=r-t,n=t+Math.floor(i/2),s=this.elements[2*n];return s==e?2*n:s>e?2*n:s<e?2*(n+1):void 0},e.Vector.prototype.insert=function(e,t){this.upsert(e,t,function(){throw"duplicate index"})},e.Vector.prototype.upsert=function(e,t,r){this._magnitude=0;var i=this.positionForIndex(e);this.elements[i]==e?this.elements[i+1]=r(this.elements[i+1],t):this.elements.splice(i,0,e,t)},e.Vector.prototype.magnitude=function(){if(this._magnitude)return this._magnitude;for(var e=0,t=this.elements.length,r=1;r<t;r+=2){var i=this.elements[r];e+=i*i}return this._magnitude=Math.sqrt(e)},e.Vector.prototype.dot=function(e){for(var t=0,r=this.elements,i=e.elements,n=r.length,s=i.length,o=0,a=0,u=0,l=0;u<n&&l<s;)o=r[u],a=i[l],o<a?u+=2:o>a?l+=2:o==a&&(t+=r[u+1]*i[l+1],u+=2,l+=2);return t},e.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},e.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,r=0;t<this.elements.length;t+=2,r++)e[r]=this.elements[t];return e},e.Vector.prototype.toJSON=function(){return this.elements},e.stemmer=function(){var e={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},t={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},r="[^aeiou]",i="[aeiouy]",n=r+"[^aeiouy]*",s=i+"[aeiou]*",o="^("+n+")?"+s+n,a="^("+n+")?"+s+n+"("+s+")?$",u="^("+n+")?"+s+n+s+n,l="^("+n+")?"+i,c=new RegExp(o),h=new RegExp(u),d=new RegExp(a),f=new RegExp(l),p=/^(.+?)(ss|i)es$/,y=/^(.+?)([^s])s$/,m=/^(.+?)eed$/,v=/^(.+?)(ed|ing)$/,g=/.$/,x=/(at|bl|iz)$/,w=new RegExp("([^aeiouylsz])\\1$"),Q=new RegExp("^"+n+i+"[^aeiouwxy]$"),k=/^(.+?[^aeiou])y$/,S=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,E=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,L=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,b=/^(.+?)(s|t)(ion)$/,P=/^(.+?)e$/,T=/ll$/,O=new RegExp("^"+n+i+"[^aeiouwxy]$"),I=function(r){var i,n,s,o,a,u,l;if(r.length<3)return r;if(s=r.substr(0,1),"y"==s&&(r=s.toUpperCase()+r.substr(1)),o=p,a=y,o.test(r)?r=r.replace(o,"$1$2"):a.test(r)&&(r=r.replace(a,"$1$2")),o=m,a=v,o.test(r)){var I=o.exec(r);o=c,o.test(I[1])&&(o=g,r=r.replace(o,""))}else if(a.test(r)){var I=a.exec(r);i=I[1],a=f,a.test(i)&&(r=i,a=x,u=w,l=Q,a.test(r)?r+="e":u.test(r)?(o=g,r=r.replace(o,"")):l.test(r)&&(r+="e"))}if(o=k,o.test(r)){var I=o.exec(r);i=I[1],r=i+"i"}if(o=S,o.test(r)){var I=o.exec(r);i=I[1],n=I[2],o=c,o.test(i)&&(r=i+e[n])}if(o=E,o.test(r)){var I=o.exec(r);i=I[1],n=I[2],o=c,o.test(i)&&(r=i+t[n])}if(o=L,a=b,o.test(r)){var I=o.exec(r);i=I[1],o=h,o.test(i)&&(r=i)}else if(a.test(r)){var I=a.exec(r);i=I[1]+I[2],a=h,a.test(i)&&(r=i)}if(o=P,o.test(r)){var I=o.exec(r);i=I[1],o=h,a=d,u=O,(o.test(i)||a.test(i)&&!u.test(i))&&(r=i)}return o=T,a=h,o.test(r)&&a.test(r)&&(o=g,r=r.replace(o,"")),"y"==s&&(r=s.toLowerCase()+r.substr(1)),r};return function(e){return e.update(I)}}(),e.Pipeline.registerFunction(e.stemmer,"stemmer"),e.generateStopWordFilter=function(e){var t=e.reduce(function(e,t){return e[t]=t,e},{});return function(e){if(e&&t[e.toString()]!==e.toString())return e}},e.stopWordFilter=e.generateStopWordFilter(["a","able","about","across","after","all","almost","also","am","among","an","and","any","are","as","at","be","because","been","but","by","can","cannot","could","dear","did","do","does","either","else","ever","every","for","from","get","got","had","has","have","he","her","hers","him","his","how","however","i","if","in","into","is","it","its","just","least","let","like","likely","may","me","might","most","must","my","neither","no","nor","not","of","off","often","on","only","or","other","our","own","rather","said","say","says","she","should","since","so","some","than","that","the","their","them","then","there","these","they","this","tis","to","too","twas","us","wants","was","we","were","what","when","where","which","while","who","whom","why","will","with","would","yet","you","your"]),e.Pipeline.registerFunction(e.stopWordFilter,"stopWordFilter"),e.trimmer=function(e){return e.update(function(e){return e.replace(/^\W+/,"").replace(/\W+$/,"")})},e.Pipeline.registerFunction(e.trimmer,"trimmer"),e.TokenSet=function(){this["final"]=!1,this.edges={},this.id=e.TokenSet._nextId,e.TokenSet._nextId+=1},e.TokenSet._nextId=1,e.TokenSet.fromArray=function(t){for(var r=new e.TokenSet.Builder,i=0,n=t.length;i<n;i++)r.insert(t[i]);return r.finish(),r.root},e.TokenSet.fromClause=function(t){return"editDistance"in t?e.TokenSet.fromFuzzyString(t.term,t.editDistance):e.TokenSet.fromString(t.term)},e.TokenSet.fromFuzzyString=function(t,r){for(var i=new e.TokenSet,n=[{node:i,editsRemaining:r,str:t}];n.length;){var s=n.pop();if(s.str.length>0){var o,a=s.str.charAt(0);a in s.node.edges?o=s.node.edges[a]:(o=new e.TokenSet,s.node.edges[a]=o),1==s.str.length&&(o["final"]=!0),n.push({node:o,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(0!=s.editsRemaining){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new e.TokenSet;s.node.edges["*"]=u}if(0==s.str.length&&(u["final"]=!0),n.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&n.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),1==s.str.length&&(s.node["final"]=!0),s.str.length>=1){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new e.TokenSet;s.node.edges["*"]=l}1==s.str.length&&(l["final"]=!0),n.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var c,h=s.str.charAt(0),d=s.str.charAt(1);d in s.node.edges?c=s.node.edges[d]:(c=new e.TokenSet,s.node.edges[d]=c),1==s.str.length&&(c["final"]=!0),n.push({node:c,editsRemaining:s.editsRemaining-1,str:h+s.str.slice(2)})}}}return i},e.TokenSet.fromString=function(t){for(var r=new e.TokenSet,i=r,n=0,s=t.length;n<s;n++){var o=t[n],a=n==s-1;if("*"==o)r.edges[o]=r,r["final"]=a;else{var u=new e.TokenSet;u["final"]=a,r.edges[o]=u,r=u}}return i},e.TokenSet.prototype.toArray=function(){for(var e=[],t=[{prefix:"",node:this}];t.length;){var r=t.pop(),i=Object.keys(r.node.edges),n=i.length;r.node["final"]&&(r.prefix.charAt(0),e.push(r.prefix));for(var s=0;s<n;s++){var o=i[s];t.push({prefix:r.prefix.concat(o),node:r.node.edges[o]})}}return e},e.TokenSet.prototype.toString=function(){if(this._str)return this._str;for(var e=this["final"]?"1":"0",t=Object.keys(this.edges).sort(),r=t.length,i=0;i<r;i++){var n=t[i],s=this.edges[n];e=e+n+s.id}return e},e.TokenSet.prototype.intersect=function(t){for(var r=new e.TokenSet,i=void 0,n=[{qNode:t,output:r,node:this}];n.length;){i=n.pop();for(var s=Object.keys(i.qNode.edges),o=s.length,a=Object.keys(i.node.edges),u=a.length,l=0;l<o;l++)for(var c=s[l],h=0;h<u;h++){var d=a[h];if(d==c||"*"==c){var f=i.node.edges[d],p=i.qNode.edges[c],y=f["final"]&&p["final"],m=void 0;d in i.output.edges?(m=i.output.edges[d],m["final"]=m["final"]||y):(m=new e.TokenSet,m["final"]=y,i.output.edges[d]=m),n.push({qNode:p,output:m,node:f})}}}return r},e.TokenSet.Builder=function(){this.previousWord="",this.root=new e.TokenSet,this.uncheckedNodes=[],this.minimizedNodes={}},e.TokenSet.Builder.prototype.insert=function(t){var r,i=0;if(t<this.previousWord)throw new Error("Out of order word insertion");for(var n=0;n<t.length&&n<this.previousWord.length&&t[n]==this.previousWord[n];n++)i++;this.minimize(i),r=0==this.uncheckedNodes.length?this.root:this.uncheckedNodes[this.uncheckedNodes.length-1].child;for(var n=i;n<t.length;n++){var s=new e.TokenSet,o=t[n];r.edges[o]=s,this.uncheckedNodes.push({parent:r,"char":o,child:s}),r=s}r["final"]=!0,this.previousWord=t},e.TokenSet.Builder.prototype.finish=function(){this.minimize(0)},e.TokenSet.Builder.prototype.minimize=function(e){for(var t=this.uncheckedNodes.length-1;t>=e;t--){var r=this.uncheckedNodes[t],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r["char"]]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}},e.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},e.Index.prototype.search=function(t){return this.query(function(r){var i=new e.QueryParser(t,r);i.parse()})},e.Index.prototype.query=function(t){for(var r=new e.Query(this.fields),i=Object.create(null),n=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),u=0;u<this.fields.length;u++)n[this.fields[u]]=new e.Vector;t.call(r,r);for(var u=0;u<r.clauses.length;u++){var l=r.clauses[u],c=null,h=e.Set.empty;c=l.usePipeline?this.pipeline.runString(l.term,{fields:l.fields}):[l.term];for(var d=0;d<c.length;d++){var f=c[d];l.term=f;var p=e.TokenSet.fromClause(l),y=this.tokenSet.intersect(p).toArray();if(0===y.length&&l.presence===e.Query.presence.REQUIRED){for(var m=0;m<l.fields.length;m++){var v=l.fields[m];o[v]=e.Set.empty}break}for(var g=0;g<y.length;g++)for(var x=y[g],w=this.invertedIndex[x],Q=w._index,m=0;m<l.fields.length;m++){var v=l.fields[m],k=w[v],S=Object.keys(k),E=x+"/"+v,L=new e.Set(S);if(l.presence==e.Query.presence.REQUIRED&&(h=h.union(L),void 0===o[v]&&(o[v]=e.Set.complete)),l.presence!=e.Query.presence.PROHIBITED){if(n[v].upsert(Q,l.boost,function(e,t){return e+t}),!s[E]){for(var b=0;b<S.length;b++){var P,T=S[b],O=new e.FieldRef(T,v),I=k[T];void 0===(P=i[O])?i[O]=new e.MatchData(x,v,I):P.add(x,v,I)}s[E]=!0}}else void 0===a[v]&&(a[v]=e.Set.empty),a[v]=a[v].union(L)}}if(l.presence===e.Query.presence.REQUIRED)for(var m=0;m<l.fields.length;m++){var v=l.fields[m];o[v]=o[v].intersect(h)}}for(var R=e.Set.complete,F=e.Set.empty,u=0;u<this.fields.length;u++){var v=this.fields[u];o[v]&&(R=R.intersect(o[v])),a[v]&&(F=F.union(a[v]))}var C=Object.keys(i),N=[],_=Object.create(null);if(r.isNegated()){C=Object.keys(this.fieldVectors);for(var u=0;u<C.length;u++){var O=C[u],j=e.FieldRef.fromString(O);i[O]=new e.MatchData}}for(var u=0;u<C.length;u++){var j=e.FieldRef.fromString(C[u]),D=j.docRef;if(R.contains(D)&&!F.contains(D)){var A,B=this.fieldVectors[j],V=n[j.fieldName].similarity(B);if(void 0!==(A=_[D]))A.score+=V,A.matchData.combine(i[j]);else{var z={ref:D,score:V,matchData:i[j]};_[D]=z,N.push(z)}}}return N.sort(function(e,t){return t.score-e.score})},e.Index.prototype.toJSON=function(){var t=Object.keys(this.invertedIndex).sort().map(function(e){return[e,this.invertedIndex[e]]},this),r=Object.keys(this.fieldVectors).map(function(e){return[e,this.fieldVectors[e].toJSON()]},this);return{version:e.version,fields:this.fields,fieldVectors:r,invertedIndex:t,pipeline:this.pipeline.toJSON()}},e.Index.load=function(t){var r={},i={},n=t.fieldVectors,s=Object.create(null),o=t.invertedIndex,a=new e.TokenSet.Builder,u=e.Pipeline.load(t.pipeline);t.version!=e.version&&e.utils.warn("Version mismatch when loading serialised index. Current version of lunr '"+e.version+"' does not match serialized index '"+t.version+"'");for(var l=0;l<n.length;l++){var c=n[l],h=c[0],d=c[1];i[h]=new e.Vector(d)}for(var l=0;l<o.length;l++){var c=o[l],f=c[0],p=c[1];a.insert(f),s[f]=p}return a.finish(),r.fields=t.fields,r.fieldVectors=i,r.invertedIndex=s,r.tokenSet=a.root,r.pipeline=u,new e.Index(r)},e.Builder=function(){this._ref="id",this._fields=Object.create(null),this._documents=Object.create(null),this.invertedIndex=Object.create(null),this.fieldTermFrequencies={},this.fieldLengths={},this.tokenizer=e.tokenizer,this.pipeline=new e.Pipeline,this.searchPipeline=new e.Pipeline,this.documentCount=0,this._b=.75,this._k1=1.2,this.termIndex=0,this.metadataWhitelist=[]},e.Builder.prototype.ref=function(e){this._ref=e},e.Builder.prototype.field=function(e,t){if(/\//.test(e))throw new RangeError("Field '"+e+"' contains illegal character '/'");this._fields[e]=t||{}},e.Builder.prototype.b=function(e){e<0?this._b=0:e>1?this._b=1:this._b=e},e.Builder.prototype.k1=function(e){this._k1=e},e.Builder.prototype.add=function(t,r){var i=t[this._ref],n=Object.keys(this._fields);this._documents[i]=r||{},this.documentCount+=1;for(var s=0;s<n.length;s++){var o=n[s],a=this._fields[o].extractor,u=a?a(t):t[o],l=this.tokenizer(u,{fields:[o]}),c=this.pipeline.run(l),h=new e.FieldRef(i,o),d=Object.create(null);this.fieldTermFrequencies[h]=d,this.fieldLengths[h]=0,this.fieldLengths[h]+=c.length;for(var f=0;f<c.length;f++){var p=c[f];if(void 0==d[p]&&(d[p]=0),d[p]+=1,void 0==this.invertedIndex[p]){var y=Object.create(null);y._index=this.termIndex,this.termIndex+=1;for(var m=0;m<n.length;m++)y[n[m]]=Object.create(null);this.invertedIndex[p]=y}void 0==this.invertedIndex[p][o][i]&&(this.invertedIndex[p][o][i]=Object.create(null));for(var v=0;v<this.metadataWhitelist.length;v++){var g=this.metadataWhitelist[v],x=p.metadata[g];void 0==this.invertedIndex[p][o][i][g]&&(this.invertedIndex[p][o][i][g]=[]),this.invertedIndex[p][o][i][g].push(x)}}}},e.Builder.prototype.calculateAverageFieldLengths=function(){for(var t=Object.keys(this.fieldLengths),r=t.length,i={},n={},s=0;s<r;s++){var o=e.FieldRef.fromString(t[s]),a=o.fieldName;n[a]||(n[a]=0),n[a]+=1,i[a]||(i[a]=0),i[a]+=this.fieldLengths[o]}for(var u=Object.keys(this._fields),s=0;s<u.length;s++){var l=u[s];i[l]=i[l]/n[l]}this.averageFieldLength=i},e.Builder.prototype.createFieldVectors=function(){for(var t={},r=Object.keys(this.fieldTermFrequencies),i=r.length,n=Object.create(null),s=0;s<i;s++){for(var o=e.FieldRef.fromString(r[s]),a=o.fieldName,u=this.fieldLengths[o],l=new e.Vector,c=this.fieldTermFrequencies[o],h=Object.keys(c),d=h.length,f=this._fields[a].boost||1,p=this._documents[o.docRef].boost||1,y=0;y<d;y++){var m,v,g,x=h[y],w=c[x],Q=this.invertedIndex[x]._index;void 0===n[x]?(m=e.idf(this.invertedIndex[x],this.documentCount),n[x]=m):m=n[x],v=m*((this._k1+1)*w)/(this._k1*(1-this._b+this._b*(u/this.averageFieldLength[a]))+w),v*=f,v*=p,g=Math.round(1e3*v)/1e3,l.insert(Q,g)}t[o]=l}this.fieldVectors=t},e.Builder.prototype.createTokenSet=function(){this.tokenSet=e.TokenSet.fromArray(Object.keys(this.invertedIndex).sort())},e.Builder.prototype.build=function(){return this.calculateAverageFieldLengths(),this.createFieldVectors(),this.createTokenSet(),new e.Index({invertedIndex:this.invertedIndex,fieldVectors:this.fieldVectors,tokenSet:this.tokenSet,fields:Object.keys(this._fields),pipeline:this.searchPipeline})},e.Builder.prototype.use=function(e){var t=Array.prototype.slice.call(arguments,1);t.unshift(this),e.apply(this,t)},e.MatchData=function(e,t,r){for(var i=Object.create(null),n=Object.keys(r||{}),s=0;s<n.length;s++){var o=n[s];i[o]=r[o].slice()}this.metadata=Object.create(null),void 0!==e&&(this.metadata[e]=Object.create(null),this.metadata[e][t]=i)},e.MatchData.prototype.combine=function(e){for(var t=Object.keys(e.metadata),r=0;r<t.length;r++){var i=t[r],n=Object.keys(e.metadata[i]);void 0==this.metadata[i]&&(this.metadata[i]=Object.create(null));for(var s=0;s<n.length;s++){var o=n[s],a=Object.keys(e.metadata[i][o]);void 0==this.metadata[i][o]&&(this.metadata[i][o]=Object.create(null));for(var u=0;u<a.length;u++){var l=a[u];void 0==this.metadata[i][o][l]?this.metadata[i][o][l]=e.metadata[i][o][l]:this.metadata[i][o][l]=this.metadata[i][o][l].concat(e.metadata[i][o][l])}}}},e.MatchData.prototype.add=function(e,t,r){if(!(e in this.metadata))return this.metadata[e]=Object.create(null),void(this.metadata[e][t]=r);if(!(t in this.metadata[e]))return void(this.metadata[e][t]=r);for(var i=Object.keys(r),n=0;n<i.length;n++){var s=i[n];s in this.metadata[e][t]?this.metadata[e][t][s]=this.metadata[e][t][s].concat(r[s]):this.metadata[e][t][s]=r[s]}},e.Query=function(e){this.clauses=[],this.allFields=e},e.Query.wildcard=new String("*"),e.Query.wildcard.NONE=0,e.Query.wildcard.LEADING=1,e.Query.wildcard.TRAILING=2,e.Query.presence={OPTIONAL:1,REQUIRED:2,PROHIBITED:3},e.Query.prototype.clause=function(t){return"fields"in t||(t.fields=this.allFields),"boost"in t||(t.boost=1),"usePipeline"in t||(t.usePipeline=!0),"wildcard"in t||(t.wildcard=e.Query.wildcard.NONE),t.wildcard&e.Query.wildcard.LEADING&&t.term.charAt(0)!=e.Query.wildcard&&(t.term="*"+t.term),t.wildcard&e.Query.wildcard.TRAILING&&t.term.slice(-1)!=e.Query.wildcard&&(t.term=""+t.term+"*"),"presence"in t||(t.presence=e.Query.presence.OPTIONAL),this.clauses.push(t),this},e.Query.prototype.isNegated=function(){for(var t=0;t<this.clauses.length;t++)if(this.clauses[t].presence!=e.Query.presence.PROHIBITED)return!1;return!0},e.Query.prototype.term=function(t,r){if(Array.isArray(t))return t.forEach(function(t){this.term(t,e.utils.clone(r))},this),this;var i=r||{};return i.term=t.toString(),this.clause(i),this},e.QueryParseError=function(e,t,r){this.name="QueryParseError",this.message=e,this.start=t,this.end=r},e.QueryParseError.prototype=new Error,e.QueryLexer=function(e){this.lexemes=[],this.str=e,this.length=e.length,this.pos=0,this.start=0,this.escapeCharPositions=[]},e.QueryLexer.prototype.run=function(){for(var t=e.QueryLexer.lexText;t;)t=t(this)},e.QueryLexer.prototype.sliceString=function(){for(var e=[],t=this.start,r=this.pos,i=0;i<this.escapeCharPositions.length;i++)r=this.escapeCharPositions[i],e.push(this.str.slice(t,r)),t=r+1;return e.push(this.str.slice(t,this.pos)),this.escapeCharPositions.length=0,e.join("")},e.QueryLexer.prototype.emit=function(e){this.lexemes.push({type:e,str:this.sliceString(),start:this.start,end:this.pos}),this.start=this.pos},e.QueryLexer.prototype.escapeCharacter=function(){this.escapeCharPositions.push(this.pos-1),this.pos+=1},e.QueryLexer.prototype.next=function(){if(this.pos>=this.length)return e.QueryLexer.EOS;var t=this.str.charAt(this.pos);return this.pos+=1,t},e.QueryLexer.prototype.width=function(){return this.pos-this.start},e.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},e.QueryLexer.prototype.backup=function(){this.pos-=1},e.QueryLexer.prototype.acceptDigitRun=function(){var t,r;do t=this.next(),r=t.charCodeAt(0);while(r>47&&r<58);t!=e.QueryLexer.EOS&&this.backup()},e.QueryLexer.prototype.more=function(){return this.pos<this.length},e.QueryLexer.EOS="EOS",e.QueryLexer.FIELD="FIELD",e.QueryLexer.TERM="TERM",e.QueryLexer.EDIT_DISTANCE="EDIT_DISTANCE",e.QueryLexer.BOOST="BOOST",e.QueryLexer.PRESENCE="PRESENCE",e.QueryLexer.lexField=function(t){return t.backup(),t.emit(e.QueryLexer.FIELD),t.ignore(),e.QueryLexer.lexText},e.QueryLexer.lexTerm=function(t){if(t.width()>1&&(t.backup(),t.emit(e.QueryLexer.TERM)),t.ignore(),t.more())return e.QueryLexer.lexText},e.QueryLexer.lexEditDistance=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.EDIT_DISTANCE),e.QueryLexer.lexText},e.QueryLexer.lexBoost=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.BOOST),e.QueryLexer.lexText},e.QueryLexer.lexEOS=function(t){t.width()>0&&t.emit(e.QueryLexer.TERM)},e.QueryLexer.termSeparator=e.tokenizer.separator,e.QueryLexer.lexText=function(t){for(;;){var r=t.next();if(r==e.QueryLexer.EOS)return e.QueryLexer.lexEOS;if(92!=r.charCodeAt(0)){if(":"==r)return e.QueryLexer.lexField;if("~"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexEditDistance;if("^"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexBoost;if("+"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if("-"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if(r.match(e.QueryLexer.termSeparator))return e.QueryLexer.lexTerm}else t.escapeCharacter()}},e.QueryParser=function(t,r){this.lexer=new e.QueryLexer(t),this.query=r,this.currentClause={},this.lexemeIdx=0},e.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var t=e.QueryParser.parseClause;t;)t=t(this);return this.query},e.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},e.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},e.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},e.QueryParser.parseClause=function(t){var r=t.peekLexeme();if(void 0!=r)switch(r.type){case e.QueryLexer.PRESENCE:return e.QueryParser.parsePresence;case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(i+=" with value '"+r.str+"'"),new e.QueryParseError(i,r.start,r.end)}},e.QueryParser.parsePresence=function(t){var r=t.consumeLexeme();if(void 0!=r){switch(r.str){case"-":t.currentClause.presence=e.Query.presence.PROHIBITED;break;case"+":t.currentClause.presence=e.Query.presence.REQUIRED;break;default:var i="unrecognised presence operator'"+r.str+"'";throw new e.QueryParseError(i,r.start,r.end)}var n=t.peekLexeme();if(void 0==n){var i="expecting term or field, found nothing";throw new e.QueryParseError(i,r.start,r.end)}switch(n.type){case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expecting term or field, found '"+n.type+"'";throw new e.QueryParseError(i,n.start,n.end)}}},e.QueryParser.parseField=function(t){var r=t.consumeLexeme();if(void 0!=r){if(t.query.allFields.indexOf(r.str)==-1){var i=t.query.allFields.map(function(e){return"'"+e+"'"}).join(", "),n="unrecognised field '"+r.str+"', possible fields: "+i;throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.fields=[r.str];var s=t.peekLexeme();if(void 0==s){var n="expecting term, found nothing";throw new e.QueryParseError(n,r.start,r.end)}switch(s.type){case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var n="expecting term, found '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseTerm=function(t){var r=t.consumeLexeme();if(void 0!=r){t.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(t.currentClause.usePipeline=!1);var i=t.peekLexeme();if(void 0==i)return void t.nextClause();switch(i.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+i.type+"'";throw new e.QueryParseError(n,i.start,i.end)}}},e.QueryParser.parseEditDistance=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="edit distance must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.editDistance=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseBoost=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="boost must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.boost=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.lunr=t()}(this,function(){return e})}(); \ No newline at end of file
diff --git a/assets/lib/lunr/lunr.segmentit.js b/assets/lib/lunr/lunr.segmentit.js
index 4c9c9ac2..75fa0cba 100644
--- a/assets/lib/lunr/lunr.segmentit.js
+++ b/assets/lib/lunr/lunr.segmentit.js
@@ -169,6 +169,18 @@ n.CHS_NAMES=T,n.ChsNameOptimizer=Z,n.ChsNameTokenizer=k,n.DatetimeOptimizer=$,n.
},{}],2:[function(require,module,exports){
-"use strict";var _segmentit=require("segmentit"),segmentit=(0,_segmentit.useDefault)(new _segmentit.Segment);lunr.segmentit=segmentit,lunr.queryHandler=function(a){return /^[\u4e00-\u9fa5]+$/.test(a)&&(a=lunr.segmentit.doSegment(a).map(function(a){return"+"+a.w}).join(" ")),a};
+"use strict";
+
+var _segmentit = require("segmentit");
+
+var segmentit = (0, _segmentit.useDefault)(new _segmentit.Segment());
+lunr.segmentit = segmentit;
+
+lunr.queryHandler = function (query) {
+ if (/^[\u4e00-\u9fa5]+$/.test(query)) query = lunr.segmentit.doSegment(query).map(function (seg) {
+ return '+' + seg.w;
+ }).join(' ');
+ return query;
+};
},{"segmentit":1}]},{},[2]);
diff --git a/assets/lib/mapbox-gl/mapbox-gl-language.js b/assets/lib/mapbox-gl/mapbox-gl-language.js
index bda7206b..1e568d4a 100644
--- a/assets/lib/mapbox-gl/mapbox-gl-language.js
+++ b/assets/lib/mapbox-gl/mapbox-gl-language.js
@@ -1,17 +1,32 @@
/**
* Create a new [Mapbox GL JS plugin](https://www.mapbox.com/blog/build-mapbox-gl-js-plugins/) that
- * modifies the layers of the map style to use the 'text-field' that matches the browser language.
+ * modifies the layers of the map style to use the `text-field` that matches the browser language.
+ * As of Mapbox GL Language v1.0.0, this plugin no longer supports token values (e.g. `{name}`). v1.0+ expects the `text-field`
+ * property of a style to use an [expression](https://docs.mapbox.com/mapbox-gl-js/style-spec/expressions/) of the form `['get', 'name_en']` or `['get', 'name']`; these expressions can be nested. Note that `get` expressions used as inputs to other expressions may not be handled by this plugin. For example:
+ * ```
+ * ["match",
+ * ["get", "name"],
+ * "California",
+ * "Golden State",
+ * ["coalesce",
+ * ["get", "name_en"],
+ * ["get", "name"]
+ * ]
+ * ]
+ * ```
+ * Only styles based on [Mapbox v8 styles](https://docs.mapbox.com/help/troubleshooting/streets-v8-migration-guide/) are supported.
+ *
* @constructor
* @param {object} options - Options to configure the plugin.
* @param {string[]} [options.supportedLanguages] - List of supported languages
* @param {Function} [options.languageTransform] - Custom style transformation to apply
- * @param {RegExp} [options.languageField=/^\{name/] - RegExp to match if a text-field is a language field
+ * @param {RegExp} [options.languageField=/^name_/] - RegExp to match if a text-field is a language field
* @param {Function} [options.getLanguageField] - Given a language choose the field in the vector tiles
* @param {string} [options.languageSource] - Name of the source that contains the different languages.
* @param {string} [options.defaultLanguage] - Name of the default language to initialize style after loading.
* @param {string[]} [options.excludedLayerIds] - Name of the layers that should be excluded from translation.
*/
-function MapboxLanguage(options) {
+ function MapboxLanguage(options) {
options = Object.assign({}, options);
if (!(this instanceof MapboxLanguage)) {
throw new Error('MapboxLanguage needs to be called with the new keyword');
@@ -21,121 +36,53 @@ function MapboxLanguage(options) {
this._initialStyleUpdate = this._initialStyleUpdate.bind(this);
this._defaultLanguage = options.defaultLanguage;
- this._isLanguageField = options.languageField || /^\{name/;
+ this._isLanguageField = options.languageField || /^name_/;
this._getLanguageField = options.getLanguageField || function nameField(language) {
- return language === 'mul' ? '{name}' : '{name_' + language + '}';
+ return language === 'mul' ? 'name' : `name_${language}`;
};
this._languageSource = options.languageSource || null;
- this._languageTransform = options.languageTransform || function (style, language) {
- if (language === 'ar') {
- return noSpacing(style);
- } else {
- return standardSpacing(style);
- }
- };
+ this._languageTransform = options.languageTransform;
this._excludedLayerIds = options.excludedLayerIds || [];
- this.supportedLanguages = options.supportedLanguages || ['ar', 'en', 'es', 'fr', 'de', 'ja', 'ko', 'mul', 'pt', 'ru', 'zh'];
+ this.supportedLanguages = options.supportedLanguages || ['ar', 'de', 'en', 'es', 'fr', 'it', 'ja', 'ko', 'mul', 'pt', 'ru', 'vi', 'zh-Hans', 'zh-Hant'];
}
-function standardSpacing(style) {
- var changedLayers = style.layers.map(function (layer) {
- if (!(layer.layout || {})['text-field']) return layer;
- var spacing = 0;
- if (layer['source-layer'] === 'state_label') {
- spacing = 0.15;
- }
- if (layer['source-layer'] === 'marine_label') {
- if (/-lg/.test(layer.id)) {
- spacing = 0.25;
- }
- if (/-md/.test(layer.id)) {
- spacing = 0.15;
- }
- if (/-sm/.test(layer.id)) {
- spacing = 0.1;
- }
- }
- if (layer['source-layer'] === 'place_label') {
- if (/-suburb/.test(layer.id)) {
- spacing = 0.15;
- }
- if (/-neighbour/.test(layer.id)) {
- spacing = 0.1;
- }
- if (/-islet/.test(layer.id)) {
- spacing = 0.01;
- }
- }
- if (layer['source-layer'] === 'airport_label') {
- spacing = 0.01;
- }
- if (layer['source-layer'] === 'rail_station_label') {
- spacing = 0.01;
- }
- if (layer['source-layer'] === 'poi_label') {
- if (/-scalerank/.test(layer.id)) {
- spacing = 0.01;
- }
- }
- if (layer['source-layer'] === 'road_label') {
- if (/-label-/.test(layer.id)) {
- spacing = 0.01;
- }
- if (/-shields/.test(layer.id)) {
- spacing = 0.05;
- }
- }
- return Object.assign({}, layer, {
- layout: Object.assign({}, layer.layout, {
- 'text-letter-spacing': spacing
- })
- });
- });
+const isTokenField = /^\{name/;
+function isFlatExpressionField(isLangField, property) {
+ const isGetExpression = Array.isArray(property) && property[0] === 'get';
+ if (isGetExpression && isTokenField.test(property[1])) {
+ console.warn('This plugin no longer supports the use of token syntax (e.g. {name}). Please use a get expression. See https://docs.mapbox.com/mapbox-gl-js/style-spec/expressions/ for more details.');
+ }
- return Object.assign({}, style, {
- layers: changedLayers
- });
+ return isGetExpression && isLangField.test(property[1]);
}
-function noSpacing(style) {
- var changedLayers = style.layers.map(function (layer) {
- if (!(layer.layout || {})['text-field']) return layer;
- var spacing = 0;
- return Object.assign({}, layer, {
- layout: Object.assign({}, layer.layout, {
- 'text-letter-spacing': spacing
- })
- });
- });
-
- return Object.assign({}, style, {
- layers: changedLayers
- });
+function adaptNestedExpressionField(isLangField, property, languageFieldName) {
+ if (Array.isArray(property)) {
+ for (let i = 1; i < property.length; i++) {
+ if (Array.isArray(property[i])) {
+ if (isFlatExpressionField(isLangField, property[i])) {
+ property[i][1] = languageFieldName;
+ }
+ adaptNestedExpressionField(isLangField, property[i], languageFieldName);
+ }
+ }
+ }
}
-function isNameStringField(isLangField, property) {
- return typeof property === 'string' && isLangField.test(property);
-}
+function adaptPropertyLanguage(isLangField, property, languageFieldName) {
+ if (isFlatExpressionField(isLangField, property)) {
+ property[1] = languageFieldName;
+ }
-function isNameFunctionField(isLangField, property) {
- return property.stops && property.stops.filter(function (stop) {
- return isLangField.test(stop[1]);
- }).length > 0;
-}
+ adaptNestedExpressionField(isLangField, property, languageFieldName);
-function adaptPropertyLanguage(isLangField, property, languageFieldName) {
- if (isNameStringField(isLangField, property)) return languageFieldName;
- if (isNameFunctionField(isLangField, property)) {
- var newStops = property.stops.map(function (stop) {
- if (isLangField.test(stop[1])) {
- return [stop[0], languageFieldName];
- }
- return stop;
- });
- return Object.assign({}, property, {
- stops: newStops
- });
+ // handle special case of bare ['get', 'name'] expression by wrapping it in a coalesce statement
+ if (property[0] === 'get' && property[1] === 'name') {
+ const defaultProp = property.slice();
+ const adaptedProp = ['get', languageFieldName];
+ property = ['coalesce', adaptedProp, defaultProp];
}
+
return property;
}
@@ -151,10 +98,13 @@ function changeLayerTextProperty(isLangField, layer, languageFieldName, excluded
}
function findStreetsSource(style) {
- var sources = Object.keys(style.sources).filter(function (sourceName) {
- var source = style.sources[sourceName];
- return /mapbox-streets-v\d/.test(source.url);
+ const sources = Object.keys(style.sources).filter((sourceName) => {
+ const url = style.sources[sourceName].url;
+ // the source URL can reference the source version or the style version
+ // this check and the error forces users to migrate to styles using source version 8
+ return url && url.indexOf('mapbox.mapbox-streets-v8') > -1 || /mapbox-streets-v[1-9][1-9]/.test(url);
});
+ if (!sources.length) throw new Error('If using MapboxLanguage with a Mapbox style, the style must be based on vector tile version 8, e.g. "streets-v11"');
return sources[0];
}
@@ -165,38 +115,36 @@ function findStreetsSource(style) {
* @returns {object} the modified style
*/
MapboxLanguage.prototype.setLanguage = function (style, language) {
- if (this.supportedLanguages.indexOf(language) < 0) throw new Error('Language ' + language + ' is not supported');
- var streetsSource = this._languageSource || findStreetsSource(style);
+ if (this.supportedLanguages.indexOf(language) < 0) throw new Error(`Language ${ language } is not supported`);
+ const streetsSource = this._languageSource || findStreetsSource(style);
if (!streetsSource) return style;
- var field = this._getLanguageField(language);
- var isLangField = this._isLanguageField;
- var excludedLayerIds = this._excludedLayerIds;
- var changedLayers = style.layers.map(function (layer) {
+ const field = this._getLanguageField(language);
+ const isLangField = this._isLanguageField;
+ const excludedLayerIds = this._excludedLayerIds;
+ const changedLayers = style.layers.map((layer) => {
if (layer.source === streetsSource) return changeLayerTextProperty(isLangField, layer, field, excludedLayerIds);
return layer;
});
- var languageStyle = Object.assign({}, style, {
+ const languageStyle = Object.assign({}, style, {
layers: changedLayers
});
- return this._languageTransform(languageStyle, language);
+ return this._languageTransform ? this._languageTransform(languageStyle, language) : languageStyle;
};
MapboxLanguage.prototype._initialStyleUpdate = function () {
- var style = this._map.getStyle();
- var language = this._defaultLanguage || browserLanguage(this.supportedLanguages);
+ const style = this._map.getStyle();
+ const language = this._defaultLanguage || browserLanguage(this.supportedLanguages);
- // We only update the style once
- this._map.off('styledata', this._initialStyleUpdate);
this._map.setStyle(this.setLanguage(style, language));
};
function browserLanguage(supportedLanguages) {
- var language = navigator.languages ? navigator.languages[0] : (navigator.language || navigator.userLanguage);
- var parts = language.split('-');
- var languageCode = language;
+ const language = navigator.languages ? navigator.languages[0] : (navigator.language || navigator.userLanguage);
+ const parts = language && language.split('-');
+ let languageCode = language;
if (parts.length > 1) {
languageCode = parts[0];
}
@@ -208,53 +156,18 @@ function browserLanguage(supportedLanguages) {
MapboxLanguage.prototype.onAdd = function (map) {
this._map = map;
- this._map.on('styledata', this._initialStyleUpdate);
+ this._map.on('style.load', this._initialStyleUpdate);
this._container = document.createElement('div');
return this._container;
};
MapboxLanguage.prototype.onRemove = function () {
- this._map.off('styledata', this._initialStyleUpdate);
+ this._map.off('style.load', this._initialStyleUpdate);
this._map = undefined;
};
-function ie11Polyfill() {
- if (typeof Object.assign != 'function') {
- // Must be writable: true, enumerable: false, configurable: true
- Object.defineProperty(Object, 'assign', {
- // eslint-disable-next-line no-unused-vars
- value: function assign(target, varArgs) { // .length of function is 2
- // eslint-disable-next-line strict
- 'use strict';
- if (target === null) { // TypeError if undefined or null
- throw new TypeError('Cannot convert undefined or null to object');
- }
-
- var to = Object(target);
-
- for (var index = 1; index < arguments.length; index++) {
- var nextSource = arguments[index];
-
- if (nextSource !== null) { // Skip over if undefined or null
- for (var nextKey in nextSource) {
- // Avoid bugs when hasOwnProperty is shadowed
- if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {
- to[nextKey] = nextSource[nextKey];
- }
- }
- }
- }
- return to;
- },
- writable: true,
- configurable: true
- });
- }
-}
-
if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {
module.exports = MapboxLanguage;
} else {
- ie11Polyfill();
window.MapboxLanguage = MapboxLanguage;
}
diff --git a/assets/lib/mapbox-gl/mapbox-gl.min.css b/assets/lib/mapbox-gl/mapbox-gl.min.css
index 228698f8..ded3dd90 100644
--- a/assets/lib/mapbox-gl/mapbox-gl.min.css
+++ b/assets/lib/mapbox-gl/mapbox-gl.min.css
@@ -1,5 +1,7 @@
/**
* Skipped minification because the original files appears to be already minified.
+ * Original file: /npm/mapbox-gl@2.8.2/dist/mapbox-gl.css
+ *
* Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
*/
-.mapboxgl-map{font:12px/20px Helvetica Neue,Arial,Helvetica,sans-serif;overflow:hidden;position:relative;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mapboxgl-canvas{position:absolute;left:0;top:0}.mapboxgl-map:-webkit-full-screen{width:100%;height:100%}.mapboxgl-canary{background-color:salmon}.mapboxgl-canvas-container.mapboxgl-interactive,.mapboxgl-ctrl-group button.mapboxgl-ctrl-compass{cursor:-webkit-grab;cursor:-moz-grab;cursor:grab;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.mapboxgl-canvas-container.mapboxgl-interactive.mapboxgl-track-pointer{cursor:pointer}.mapboxgl-canvas-container.mapboxgl-interactive:active,.mapboxgl-ctrl-group button.mapboxgl-ctrl-compass:active{cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate,.mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate .mapboxgl-canvas{touch-action:pan-x pan-y}.mapboxgl-canvas-container.mapboxgl-touch-drag-pan,.mapboxgl-canvas-container.mapboxgl-touch-drag-pan .mapboxgl-canvas{touch-action:pinch-zoom}.mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate.mapboxgl-touch-drag-pan,.mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate.mapboxgl-touch-drag-pan .mapboxgl-canvas{touch-action:none}.mapboxgl-ctrl-bottom-left,.mapboxgl-ctrl-bottom-right,.mapboxgl-ctrl-top-left,.mapboxgl-ctrl-top-right{position:absolute;pointer-events:none;z-index:2}.mapboxgl-ctrl-top-left{top:0;left:0}.mapboxgl-ctrl-top-right{top:0;right:0}.mapboxgl-ctrl-bottom-left{bottom:0;left:0}.mapboxgl-ctrl-bottom-right{right:0;bottom:0}.mapboxgl-ctrl{clear:both;pointer-events:auto;transform:translate(0)}.mapboxgl-ctrl-top-left .mapboxgl-ctrl{margin:10px 0 0 10px;float:left}.mapboxgl-ctrl-top-right .mapboxgl-ctrl{margin:10px 10px 0 0;float:right}.mapboxgl-ctrl-bottom-left .mapboxgl-ctrl{margin:0 0 10px 10px;float:left}.mapboxgl-ctrl-bottom-right .mapboxgl-ctrl{margin:0 10px 10px 0;float:right}.mapboxgl-ctrl-group{border-radius:4px;background:#fff}.mapboxgl-ctrl-group:not(:empty){-moz-box-shadow:0 0 2px rgba(0,0,0,.1);-webkit-box-shadow:0 0 2px rgba(0,0,0,.1);box-shadow:0 0 0 2px rgba(0,0,0,.1)}@media (-ms-high-contrast:active){.mapboxgl-ctrl-group:not(:empty){box-shadow:0 0 0 2px ButtonText}}.mapboxgl-ctrl-group button{width:29px;height:29px;display:block;padding:0;outline:none;border:0;box-sizing:border-box;background-color:transparent;cursor:pointer}.mapboxgl-ctrl-group button+button{border-top:1px solid #ddd}.mapboxgl-ctrl button .mapboxgl-ctrl-icon{display:block;width:100%;height:100%;background-repeat:no-repeat;background-position:50%}@media (-ms-high-contrast:active){.mapboxgl-ctrl-icon{background-color:transparent}.mapboxgl-ctrl-group button+button{border-top:1px solid ButtonText}}.mapboxgl-ctrl button::-moz-focus-inner{border:0;padding:0}.mapboxgl-ctrl-group button:focus{box-shadow:0 0 2px 2px #0096ff}.mapboxgl-ctrl button:disabled{cursor:not-allowed}.mapboxgl-ctrl button:disabled .mapboxgl-ctrl-icon{opacity:.25}.mapboxgl-ctrl button:not(:disabled):hover{background-color:rgba(0,0,0,.05)}.mapboxgl-ctrl-group button:focus:focus-visible{box-shadow:0 0 2px 2px #0096ff}.mapboxgl-ctrl-group button:focus:not(:focus-visible){box-shadow:none}.mapboxgl-ctrl-group button:focus:first-child{border-radius:4px 4px 0 0}.mapboxgl-ctrl-group button:focus:last-child{border-radius:0 0 4px 4px}.mapboxgl-ctrl-group button:focus:only-child{border-radius:inherit}.mapboxgl-ctrl button.mapboxgl-ctrl-zoom-out .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23333'%3E%3Cpath d='M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-9z'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-zoom-in .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23333'%3E%3Cpath d='M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5z'/%3E%3C/svg%3E")}@media (-ms-high-contrast:active){.mapboxgl-ctrl button.mapboxgl-ctrl-zoom-out .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23fff'%3E%3Cpath d='M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-9z'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-zoom-in .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23fff'%3E%3Cpath d='M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5z'/%3E%3C/svg%3E")}}@media (-ms-high-contrast:black-on-white){.mapboxgl-ctrl button.mapboxgl-ctrl-zoom-out .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-9z'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-zoom-in .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5z'/%3E%3C/svg%3E")}}.mapboxgl-ctrl button.mapboxgl-ctrl-fullscreen .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23333'%3E%3Cpath d='M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3h1zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16h1zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5H13zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1V7.5z'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-shrink .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1h-5.5zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1v-5.5zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1v5.5zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1h5.5z'/%3E%3C/svg%3E")}@media (-ms-high-contrast:active){.mapboxgl-ctrl button.mapboxgl-ctrl-fullscreen .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23fff'%3E%3Cpath d='M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3h1zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16h1zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5H13zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1V7.5z'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-shrink .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23fff'%3E%3Cpath d='M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1h-5.5zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1v-5.5zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1v5.5zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1h5.5z'/%3E%3C/svg%3E")}}@media (-ms-high-contrast:black-on-white){.mapboxgl-ctrl button.mapboxgl-ctrl-fullscreen .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3h1zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16h1zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5H13zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1V7.5z'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-shrink .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1h-5.5zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1v-5.5zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1v5.5zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1h5.5z'/%3E%3C/svg%3E")}}.mapboxgl-ctrl button.mapboxgl-ctrl-compass .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23333'%3E%3Cpath d='M10.5 14l4-8 4 8h-8z'/%3E%3Cpath d='M10.5 16l4 8 4-8h-8z' fill='%23ccc'/%3E%3C/svg%3E")}@media (-ms-high-contrast:active){.mapboxgl-ctrl button.mapboxgl-ctrl-compass .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23fff'%3E%3Cpath d='M10.5 14l4-8 4 8h-8z'/%3E%3Cpath d='M10.5 16l4 8 4-8h-8z' fill='%23999'/%3E%3C/svg%3E")}}@media (-ms-high-contrast:black-on-white){.mapboxgl-ctrl button.mapboxgl-ctrl-compass .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M10.5 14l4-8 4 8h-8z'/%3E%3Cpath d='M10.5 16l4 8 4-8h-8z' fill='%23ccc'/%3E%3C/svg%3E")}}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23333'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 005.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 009 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 003.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0011 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 110 7 3.5 3.5 0 110-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate:disabled .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23aaa'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 005.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 009 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 003.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0011 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 110 7 3.5 3.5 0 110-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3Cpath d='M14 5l1 1-9 9-1-1 9-9z' fill='red'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-active .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%2333b5e5'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 005.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 009 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 003.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0011 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 110 7 3.5 3.5 0 110-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-active-error .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23e58978'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 005.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 009 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 003.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0011 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 110 7 3.5 3.5 0 110-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-background .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%2333b5e5'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 005.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 009 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 003.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0011 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 110 7 3.5 3.5 0 110-7z'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-background-error .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23e54e33'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 005.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 009 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 003.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0011 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 110 7 3.5 3.5 0 110-7z'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-waiting .mapboxgl-ctrl-icon{-webkit-animation:mapboxgl-spin 2s linear infinite;-moz-animation:mapboxgl-spin 2s infinite linear;-o-animation:mapboxgl-spin 2s infinite linear;-ms-animation:mapboxgl-spin 2s infinite linear;animation:mapboxgl-spin 2s linear infinite}@media (-ms-high-contrast:active){.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23fff'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 005.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 009 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 003.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0011 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 110 7 3.5 3.5 0 110-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate:disabled .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23999'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 005.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 009 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 003.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0011 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 110 7 3.5 3.5 0 110-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3Cpath d='M14 5l1 1-9 9-1-1 9-9z' fill='red'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-active .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%2333b5e5'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 005.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 009 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 003.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0011 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 110 7 3.5 3.5 0 110-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-active-error .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23e58978'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 005.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 009 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 003.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0011 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 110 7 3.5 3.5 0 110-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-background .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%2333b5e5'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 005.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 009 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 003.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0011 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 110 7 3.5 3.5 0 110-7z'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-background-error .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23e54e33'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 005.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 009 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 003.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0011 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 110 7 3.5 3.5 0 110-7z'/%3E%3C/svg%3E")}}@media (-ms-high-contrast:black-on-white){.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 005.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 009 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 003.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0011 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 110 7 3.5 3.5 0 110-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate:disabled .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23666'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 005.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 009 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 003.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0011 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 110 7 3.5 3.5 0 110-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3Cpath d='M14 5l1 1-9 9-1-1 9-9z' fill='red'/%3E%3C/svg%3E")}}@-webkit-keyframes mapboxgl-spin{0%{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(1turn)}}@-moz-keyframes mapboxgl-spin{0%{-moz-transform:rotate(0deg)}to{-moz-transform:rotate(1turn)}}@-o-keyframes mapboxgl-spin{0%{-o-transform:rotate(0deg)}to{-o-transform:rotate(1turn)}}@-ms-keyframes mapboxgl-spin{0%{-ms-transform:rotate(0deg)}to{-ms-transform:rotate(1turn)}}@keyframes mapboxgl-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}a.mapboxgl-ctrl-logo{width:88px;height:23px;margin:0 0 -4px -4px;display:block;background-repeat:no-repeat;cursor:pointer;overflow:hidden;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='88' height='23' viewBox='0 0 88 23' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' fill-rule='evenodd'%3E%3Cdefs%3E%3Cpath id='a' d='M11.5 2.25c5.105 0 9.25 4.145 9.25 9.25s-4.145 9.25-9.25 9.25-9.25-4.145-9.25-9.25 4.145-9.25 9.25-9.25zM6.997 15.983c-.051-.338-.828-5.802 2.233-8.873a4.395 4.395 0 013.13-1.28c1.27 0 2.49.51 3.39 1.42.91.9 1.42 2.12 1.42 3.39 0 1.18-.449 2.301-1.28 3.13C12.72 16.93 7 16 7 16l-.003-.017zM15.3 10.5l-2 .8-.8 2-.8-2-2-.8 2-.8.8-2 .8 2 2 .8z'/%3E%3Cpath id='b' d='M50.63 8c.13 0 .23.1.23.23V9c.7-.76 1.7-1.18 2.73-1.18 2.17 0 3.95 1.85 3.95 4.17s-1.77 4.19-3.94 4.19c-1.04 0-2.03-.43-2.74-1.18v3.77c0 .13-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V8.23c0-.12.1-.23.23-.23h1.4zm-3.86.01c.01 0 .01 0 .01-.01.13 0 .22.1.22.22v7.55c0 .12-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V15c-.7.76-1.69 1.19-2.73 1.19-2.17 0-3.94-1.87-3.94-4.19 0-2.32 1.77-4.19 3.94-4.19 1.03 0 2.02.43 2.73 1.18v-.75c0-.12.1-.23.23-.23h1.4zm26.375-.19a4.24 4.24 0 00-4.16 3.29c-.13.59-.13 1.19 0 1.77a4.233 4.233 0 004.17 3.3c2.35 0 4.26-1.87 4.26-4.19 0-2.32-1.9-4.17-4.27-4.17zM60.63 5c.13 0 .23.1.23.23v3.76c.7-.76 1.7-1.18 2.73-1.18 1.88 0 3.45 1.4 3.84 3.28.13.59.13 1.2 0 1.8-.39 1.88-1.96 3.29-3.84 3.29-1.03 0-2.02-.43-2.73-1.18v.77c0 .12-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V5.23c0-.12.1-.23.23-.23h1.4zm-34 11h-1.4c-.13 0-.23-.11-.23-.23V8.22c.01-.13.1-.22.23-.22h1.4c.13 0 .22.11.23.22v.68c.5-.68 1.3-1.09 2.16-1.1h.03c1.09 0 2.09.6 2.6 1.55.45-.95 1.4-1.55 2.44-1.56 1.62 0 2.93 1.25 2.9 2.78l.03 5.2c0 .13-.1.23-.23.23h-1.41c-.13 0-.23-.11-.23-.23v-4.59c0-.98-.74-1.71-1.62-1.71-.8 0-1.46.7-1.59 1.62l.01 4.68c0 .13-.11.23-.23.23h-1.41c-.13 0-.23-.11-.23-.23v-4.59c0-.98-.74-1.71-1.62-1.71-.85 0-1.54.79-1.6 1.8v4.5c0 .13-.1.23-.23.23zm53.615 0h-1.61c-.04 0-.08-.01-.12-.03-.09-.06-.13-.19-.06-.28l2.43-3.71-2.39-3.65a.213.213 0 01-.03-.12c0-.12.09-.21.21-.21h1.61c.13 0 .24.06.3.17l1.41 2.37 1.4-2.37a.34.34 0 01.3-.17h1.6c.04 0 .08.01.12.03.09.06.13.19.06.28l-2.37 3.65 2.43 3.7c0 .05.01.09.01.13 0 .12-.09.21-.21.21h-1.61c-.13 0-.24-.06-.3-.17l-1.44-2.42-1.44 2.42a.34.34 0 01-.3.17zm-7.12-1.49c-1.33 0-2.42-1.12-2.42-2.51 0-1.39 1.08-2.52 2.42-2.52 1.33 0 2.42 1.12 2.42 2.51 0 1.39-1.08 2.51-2.42 2.52zm-19.865 0c-1.32 0-2.39-1.11-2.42-2.48v-.07c.02-1.38 1.09-2.49 2.4-2.49 1.32 0 2.41 1.12 2.41 2.51 0 1.39-1.07 2.52-2.39 2.53zm-8.11-2.48c-.01 1.37-1.09 2.47-2.41 2.47s-2.42-1.12-2.42-2.51c0-1.39 1.08-2.52 2.4-2.52 1.33 0 2.39 1.11 2.41 2.48l.02.08zm18.12 2.47c-1.32 0-2.39-1.11-2.41-2.48v-.06c.02-1.38 1.09-2.48 2.41-2.48s2.42 1.12 2.42 2.51c0 1.39-1.09 2.51-2.42 2.51z'/%3E%3C/defs%3E%3Cmask id='c'%3E%3Crect width='100%25' height='100%25' fill='%23fff'/%3E%3Cuse xlink:href='%23a'/%3E%3Cuse xlink:href='%23b'/%3E%3C/mask%3E%3Cg opacity='.3' stroke='%23000' stroke-width='3'%3E%3Ccircle mask='url(%23c)' cx='11.5' cy='11.5' r='9.25'/%3E%3Cuse xlink:href='%23b' mask='url(%23c)'/%3E%3C/g%3E%3Cg opacity='.9' fill='%23fff'%3E%3Cuse xlink:href='%23a'/%3E%3Cuse xlink:href='%23b'/%3E%3C/g%3E%3C/svg%3E")}a.mapboxgl-ctrl-logo.mapboxgl-compact{width:23px}@media (-ms-high-contrast:active){a.mapboxgl-ctrl-logo{background-color:transparent;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='88' height='23' viewBox='0 0 88 23' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' fill-rule='evenodd'%3E%3Cdefs%3E%3Cpath id='a' d='M11.5 2.25c5.105 0 9.25 4.145 9.25 9.25s-4.145 9.25-9.25 9.25-9.25-4.145-9.25-9.25 4.145-9.25 9.25-9.25zM6.997 15.983c-.051-.338-.828-5.802 2.233-8.873a4.395 4.395 0 013.13-1.28c1.27 0 2.49.51 3.39 1.42.91.9 1.42 2.12 1.42 3.39 0 1.18-.449 2.301-1.28 3.13C12.72 16.93 7 16 7 16l-.003-.017zM15.3 10.5l-2 .8-.8 2-.8-2-2-.8 2-.8.8-2 .8 2 2 .8z'/%3E%3Cpath id='b' d='M50.63 8c.13 0 .23.1.23.23V9c.7-.76 1.7-1.18 2.73-1.18 2.17 0 3.95 1.85 3.95 4.17s-1.77 4.19-3.94 4.19c-1.04 0-2.03-.43-2.74-1.18v3.77c0 .13-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V8.23c0-.12.1-.23.23-.23h1.4zm-3.86.01c.01 0 .01 0 .01-.01.13 0 .22.1.22.22v7.55c0 .12-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V15c-.7.76-1.69 1.19-2.73 1.19-2.17 0-3.94-1.87-3.94-4.19 0-2.32 1.77-4.19 3.94-4.19 1.03 0 2.02.43 2.73 1.18v-.75c0-.12.1-.23.23-.23h1.4zm26.375-.19a4.24 4.24 0 00-4.16 3.29c-.13.59-.13 1.19 0 1.77a4.233 4.233 0 004.17 3.3c2.35 0 4.26-1.87 4.26-4.19 0-2.32-1.9-4.17-4.27-4.17zM60.63 5c.13 0 .23.1.23.23v3.76c.7-.76 1.7-1.18 2.73-1.18 1.88 0 3.45 1.4 3.84 3.28.13.59.13 1.2 0 1.8-.39 1.88-1.96 3.29-3.84 3.29-1.03 0-2.02-.43-2.73-1.18v.77c0 .12-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V5.23c0-.12.1-.23.23-.23h1.4zm-34 11h-1.4c-.13 0-.23-.11-.23-.23V8.22c.01-.13.1-.22.23-.22h1.4c.13 0 .22.11.23.22v.68c.5-.68 1.3-1.09 2.16-1.1h.03c1.09 0 2.09.6 2.6 1.55.45-.95 1.4-1.55 2.44-1.56 1.62 0 2.93 1.25 2.9 2.78l.03 5.2c0 .13-.1.23-.23.23h-1.41c-.13 0-.23-.11-.23-.23v-4.59c0-.98-.74-1.71-1.62-1.71-.8 0-1.46.7-1.59 1.62l.01 4.68c0 .13-.11.23-.23.23h-1.41c-.13 0-.23-.11-.23-.23v-4.59c0-.98-.74-1.71-1.62-1.71-.85 0-1.54.79-1.6 1.8v4.5c0 .13-.1.23-.23.23zm53.615 0h-1.61c-.04 0-.08-.01-.12-.03-.09-.06-.13-.19-.06-.28l2.43-3.71-2.39-3.65a.213.213 0 01-.03-.12c0-.12.09-.21.21-.21h1.61c.13 0 .24.06.3.17l1.41 2.37 1.4-2.37a.34.34 0 01.3-.17h1.6c.04 0 .08.01.12.03.09.06.13.19.06.28l-2.37 3.65 2.43 3.7c0 .05.01.09.01.13 0 .12-.09.21-.21.21h-1.61c-.13 0-.24-.06-.3-.17l-1.44-2.42-1.44 2.42a.34.34 0 01-.3.17zm-7.12-1.49c-1.33 0-2.42-1.12-2.42-2.51 0-1.39 1.08-2.52 2.42-2.52 1.33 0 2.42 1.12 2.42 2.51 0 1.39-1.08 2.51-2.42 2.52zm-19.865 0c-1.32 0-2.39-1.11-2.42-2.48v-.07c.02-1.38 1.09-2.49 2.4-2.49 1.32 0 2.41 1.12 2.41 2.51 0 1.39-1.07 2.52-2.39 2.53zm-8.11-2.48c-.01 1.37-1.09 2.47-2.41 2.47s-2.42-1.12-2.42-2.51c0-1.39 1.08-2.52 2.4-2.52 1.33 0 2.39 1.11 2.41 2.48l.02.08zm18.12 2.47c-1.32 0-2.39-1.11-2.41-2.48v-.06c.02-1.38 1.09-2.48 2.41-2.48s2.42 1.12 2.42 2.51c0 1.39-1.09 2.51-2.42 2.51z'/%3E%3C/defs%3E%3Cmask id='c'%3E%3Crect width='100%25' height='100%25' fill='%23fff'/%3E%3Cuse xlink:href='%23a'/%3E%3Cuse xlink:href='%23b'/%3E%3C/mask%3E%3Cg stroke='%23000' stroke-width='3'%3E%3Ccircle mask='url(%23c)' cx='11.5' cy='11.5' r='9.25'/%3E%3Cuse xlink:href='%23b' mask='url(%23c)'/%3E%3C/g%3E%3Cg fill='%23fff'%3E%3Cuse xlink:href='%23a'/%3E%3Cuse xlink:href='%23b'/%3E%3C/g%3E%3C/svg%3E")}}@media (-ms-high-contrast:black-on-white){a.mapboxgl-ctrl-logo{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='88' height='23' viewBox='0 0 88 23' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' fill-rule='evenodd'%3E%3Cdefs%3E%3Cpath id='a' d='M11.5 2.25c5.105 0 9.25 4.145 9.25 9.25s-4.145 9.25-9.25 9.25-9.25-4.145-9.25-9.25 4.145-9.25 9.25-9.25zM6.997 15.983c-.051-.338-.828-5.802 2.233-8.873a4.395 4.395 0 013.13-1.28c1.27 0 2.49.51 3.39 1.42.91.9 1.42 2.12 1.42 3.39 0 1.18-.449 2.301-1.28 3.13C12.72 16.93 7 16 7 16l-.003-.017zM15.3 10.5l-2 .8-.8 2-.8-2-2-.8 2-.8.8-2 .8 2 2 .8z'/%3E%3Cpath id='b' d='M50.63 8c.13 0 .23.1.23.23V9c.7-.76 1.7-1.18 2.73-1.18 2.17 0 3.95 1.85 3.95 4.17s-1.77 4.19-3.94 4.19c-1.04 0-2.03-.43-2.74-1.18v3.77c0 .13-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V8.23c0-.12.1-.23.23-.23h1.4zm-3.86.01c.01 0 .01 0 .01-.01.13 0 .22.1.22.22v7.55c0 .12-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V15c-.7.76-1.69 1.19-2.73 1.19-2.17 0-3.94-1.87-3.94-4.19 0-2.32 1.77-4.19 3.94-4.19 1.03 0 2.02.43 2.73 1.18v-.75c0-.12.1-.23.23-.23h1.4zm26.375-.19a4.24 4.24 0 00-4.16 3.29c-.13.59-.13 1.19 0 1.77a4.233 4.233 0 004.17 3.3c2.35 0 4.26-1.87 4.26-4.19 0-2.32-1.9-4.17-4.27-4.17zM60.63 5c.13 0 .23.1.23.23v3.76c.7-.76 1.7-1.18 2.73-1.18 1.88 0 3.45 1.4 3.84 3.28.13.59.13 1.2 0 1.8-.39 1.88-1.96 3.29-3.84 3.29-1.03 0-2.02-.43-2.73-1.18v.77c0 .12-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V5.23c0-.12.1-.23.23-.23h1.4zm-34 11h-1.4c-.13 0-.23-.11-.23-.23V8.22c.01-.13.1-.22.23-.22h1.4c.13 0 .22.11.23.22v.68c.5-.68 1.3-1.09 2.16-1.1h.03c1.09 0 2.09.6 2.6 1.55.45-.95 1.4-1.55 2.44-1.56 1.62 0 2.93 1.25 2.9 2.78l.03 5.2c0 .13-.1.23-.23.23h-1.41c-.13 0-.23-.11-.23-.23v-4.59c0-.98-.74-1.71-1.62-1.71-.8 0-1.46.7-1.59 1.62l.01 4.68c0 .13-.11.23-.23.23h-1.41c-.13 0-.23-.11-.23-.23v-4.59c0-.98-.74-1.71-1.62-1.71-.85 0-1.54.79-1.6 1.8v4.5c0 .13-.1.23-.23.23zm53.615 0h-1.61c-.04 0-.08-.01-.12-.03-.09-.06-.13-.19-.06-.28l2.43-3.71-2.39-3.65a.213.213 0 01-.03-.12c0-.12.09-.21.21-.21h1.61c.13 0 .24.06.3.17l1.41 2.37 1.4-2.37a.34.34 0 01.3-.17h1.6c.04 0 .08.01.12.03.09.06.13.19.06.28l-2.37 3.65 2.43 3.7c0 .05.01.09.01.13 0 .12-.09.21-.21.21h-1.61c-.13 0-.24-.06-.3-.17l-1.44-2.42-1.44 2.42a.34.34 0 01-.3.17zm-7.12-1.49c-1.33 0-2.42-1.12-2.42-2.51 0-1.39 1.08-2.52 2.42-2.52 1.33 0 2.42 1.12 2.42 2.51 0 1.39-1.08 2.51-2.42 2.52zm-19.865 0c-1.32 0-2.39-1.11-2.42-2.48v-.07c.02-1.38 1.09-2.49 2.4-2.49 1.32 0 2.41 1.12 2.41 2.51 0 1.39-1.07 2.52-2.39 2.53zm-8.11-2.48c-.01 1.37-1.09 2.47-2.41 2.47s-2.42-1.12-2.42-2.51c0-1.39 1.08-2.52 2.4-2.52 1.33 0 2.39 1.11 2.41 2.48l.02.08zm18.12 2.47c-1.32 0-2.39-1.11-2.41-2.48v-.06c.02-1.38 1.09-2.48 2.41-2.48s2.42 1.12 2.42 2.51c0 1.39-1.09 2.51-2.42 2.51z'/%3E%3C/defs%3E%3Cmask id='c'%3E%3Crect width='100%25' height='100%25' fill='%23fff'/%3E%3Cuse xlink:href='%23a'/%3E%3Cuse xlink:href='%23b'/%3E%3C/mask%3E%3Cg stroke='%23fff' stroke-width='3' fill='%23fff'%3E%3Ccircle mask='url(%23c)' cx='11.5' cy='11.5' r='9.25'/%3E%3Cuse xlink:href='%23b' mask='url(%23c)'/%3E%3C/g%3E%3Cuse xlink:href='%23a'/%3E%3Cuse xlink:href='%23b'/%3E%3C/svg%3E")}}.mapboxgl-ctrl.mapboxgl-ctrl-attrib{padding:0 5px;background-color:hsla(0,0%,100%,.5);margin:0}@media screen{.mapboxgl-ctrl-attrib.mapboxgl-compact{min-height:20px;padding:0;margin:10px;position:relative;background-color:#fff;border-radius:3px 12px 12px 3px}.mapboxgl-ctrl-attrib.mapboxgl-compact:hover{padding:2px 24px 2px 4px;visibility:visible;margin-top:6px}.mapboxgl-ctrl-bottom-left>.mapboxgl-ctrl-attrib.mapboxgl-compact:hover,.mapboxgl-ctrl-top-left>.mapboxgl-ctrl-attrib.mapboxgl-compact:hover{padding:2px 4px 2px 24px;border-radius:12px 3px 3px 12px}.mapboxgl-ctrl-attrib.mapboxgl-compact .mapboxgl-ctrl-attrib-inner{display:none}.mapboxgl-ctrl-attrib.mapboxgl-compact:hover .mapboxgl-ctrl-attrib-inner{display:block}.mapboxgl-ctrl-attrib.mapboxgl-compact:after{content:"";cursor:pointer;position:absolute;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill-rule='evenodd'%3E%3Cpath d='M4 10a6 6 0 1012 0 6 6 0 10-12 0m5-3a1 1 0 102 0 1 1 0 10-2 0m0 3a1 1 0 112 0v3a1 1 0 11-2 0'/%3E%3C/svg%3E");background-color:hsla(0,0%,100%,.5);width:24px;height:24px;box-sizing:border-box;border-radius:12px}.mapboxgl-ctrl-bottom-right>.mapboxgl-ctrl-attrib.mapboxgl-compact:after{bottom:0;right:0}.mapboxgl-ctrl-top-right>.mapboxgl-ctrl-attrib.mapboxgl-compact:after{top:0;right:0}.mapboxgl-ctrl-top-left>.mapboxgl-ctrl-attrib.mapboxgl-compact:after{top:0;left:0}.mapboxgl-ctrl-bottom-left>.mapboxgl-ctrl-attrib.mapboxgl-compact:after{bottom:0;left:0}}@media screen and (-ms-high-contrast:active){.mapboxgl-ctrl-attrib.mapboxgl-compact:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill-rule='evenodd' fill='%23fff'%3E%3Cpath d='M4 10a6 6 0 1012 0 6 6 0 10-12 0m5-3a1 1 0 102 0 1 1 0 10-2 0m0 3a1 1 0 112 0v3a1 1 0 11-2 0'/%3E%3C/svg%3E")}}@media screen and (-ms-high-contrast:black-on-white){.mapboxgl-ctrl-attrib.mapboxgl-compact:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill-rule='evenodd'%3E%3Cpath d='M4 10a6 6 0 1012 0 6 6 0 10-12 0m5-3a1 1 0 102 0 1 1 0 10-2 0m0 3a1 1 0 112 0v3a1 1 0 11-2 0'/%3E%3C/svg%3E")}}.mapboxgl-ctrl-attrib a{color:rgba(0,0,0,.75);text-decoration:none}.mapboxgl-ctrl-attrib a:hover{color:inherit;text-decoration:underline}.mapboxgl-ctrl-attrib .mapbox-improve-map{font-weight:700;margin-left:2px}.mapboxgl-attrib-empty{display:none}.mapboxgl-ctrl-scale{background-color:hsla(0,0%,100%,.75);font-size:10px;border:2px solid #333;border-top:#333;padding:0 5px;color:#333;box-sizing:border-box}.mapboxgl-popup{position:absolute;top:0;left:0;display:-webkit-flex;display:flex;will-change:transform;pointer-events:none}.mapboxgl-popup-anchor-top,.mapboxgl-popup-anchor-top-left,.mapboxgl-popup-anchor-top-right{-webkit-flex-direction:column;flex-direction:column}.mapboxgl-popup-anchor-bottom,.mapboxgl-popup-anchor-bottom-left,.mapboxgl-popup-anchor-bottom-right{-webkit-flex-direction:column-reverse;flex-direction:column-reverse}.mapboxgl-popup-anchor-left{-webkit-flex-direction:row;flex-direction:row}.mapboxgl-popup-anchor-right{-webkit-flex-direction:row-reverse;flex-direction:row-reverse}.mapboxgl-popup-tip{width:0;height:0;border:10px solid transparent;z-index:1}.mapboxgl-popup-anchor-top .mapboxgl-popup-tip{-webkit-align-self:center;align-self:center;border-top:none;border-bottom-color:#fff}.mapboxgl-popup-anchor-top-left .mapboxgl-popup-tip{-webkit-align-self:flex-start;align-self:flex-start;border-top:none;border-left:none;border-bottom-color:#fff}.mapboxgl-popup-anchor-top-right .mapboxgl-popup-tip{-webkit-align-self:flex-end;align-self:flex-end;border-top:none;border-right:none;border-bottom-color:#fff}.mapboxgl-popup-anchor-bottom .mapboxgl-popup-tip{-webkit-align-self:center;align-self:center;border-bottom:none;border-top-color:#fff}.mapboxgl-popup-anchor-bottom-left .mapboxgl-popup-tip{-webkit-align-self:flex-start;align-self:flex-start;border-bottom:none;border-left:none;border-top-color:#fff}.mapboxgl-popup-anchor-bottom-right .mapboxgl-popup-tip{-webkit-align-self:flex-end;align-self:flex-end;border-bottom:none;border-right:none;border-top-color:#fff}.mapboxgl-popup-anchor-left .mapboxgl-popup-tip{-webkit-align-self:center;align-self:center;border-left:none;border-right-color:#fff}.mapboxgl-popup-anchor-right .mapboxgl-popup-tip{-webkit-align-self:center;align-self:center;border-right:none;border-left-color:#fff}.mapboxgl-popup-close-button{position:absolute;right:0;top:0;border:0;border-radius:0 3px 0 0;cursor:pointer;background-color:transparent}.mapboxgl-popup-close-button:hover{background-color:rgba(0,0,0,.05)}.mapboxgl-popup-content{position:relative;background:#fff;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.1);padding:10px 10px 15px;pointer-events:auto}.mapboxgl-popup-anchor-top-left .mapboxgl-popup-content{border-top-left-radius:0}.mapboxgl-popup-anchor-top-right .mapboxgl-popup-content{border-top-right-radius:0}.mapboxgl-popup-anchor-bottom-left .mapboxgl-popup-content{border-bottom-left-radius:0}.mapboxgl-popup-anchor-bottom-right .mapboxgl-popup-content{border-bottom-right-radius:0}.mapboxgl-popup-track-pointer{display:none}.mapboxgl-popup-track-pointer *{pointer-events:none;user-select:none}.mapboxgl-map:hover .mapboxgl-popup-track-pointer{display:flex}.mapboxgl-map:active .mapboxgl-popup-track-pointer{display:none}.mapboxgl-marker{position:absolute;top:0;left:0;will-change:transform}.mapboxgl-user-location-dot,.mapboxgl-user-location-dot:before{background-color:#1da1f2;width:15px;height:15px;border-radius:50%}.mapboxgl-user-location-dot:before{content:"";position:absolute;-webkit-animation:mapboxgl-user-location-dot-pulse 2s infinite;-moz-animation:mapboxgl-user-location-dot-pulse 2s infinite;-ms-animation:mapboxgl-user-location-dot-pulse 2s infinite;animation:mapboxgl-user-location-dot-pulse 2s infinite}.mapboxgl-user-location-dot:after{border-radius:50%;border:2px solid #fff;content:"";height:19px;left:-2px;position:absolute;top:-2px;width:19px;box-sizing:border-box;box-shadow:0 0 3px rgba(0,0,0,.35)}@-webkit-keyframes mapboxgl-user-location-dot-pulse{0%{-webkit-transform:scale(1);opacity:1}70%{-webkit-transform:scale(3);opacity:0}to{-webkit-transform:scale(1);opacity:0}}@-ms-keyframes mapboxgl-user-location-dot-pulse{0%{-ms-transform:scale(1);opacity:1}70%{-ms-transform:scale(3);opacity:0}to{-ms-transform:scale(1);opacity:0}}@keyframes mapboxgl-user-location-dot-pulse{0%{transform:scale(1);opacity:1}70%{transform:scale(3);opacity:0}to{transform:scale(1);opacity:0}}.mapboxgl-user-location-dot-stale{background-color:#aaa}.mapboxgl-user-location-dot-stale:after{display:none}.mapboxgl-user-location-accuracy-circle{background-color:rgba(29,161,242,.2);width:1px;height:1px;border-radius:100%}.mapboxgl-crosshair,.mapboxgl-crosshair .mapboxgl-interactive,.mapboxgl-crosshair .mapboxgl-interactive:active{cursor:crosshair}.mapboxgl-boxzoom{position:absolute;top:0;left:0;width:0;height:0;background:#fff;border:2px dotted #202020;opacity:.5}@media print{.mapbox-improve-map{display:none}} \ No newline at end of file
+ .mapboxgl-map{font:12px/20px Helvetica Neue,Arial,Helvetica,sans-serif;overflow:hidden;position:relative;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mapboxgl-canvas{position:absolute;left:0;top:0}.mapboxgl-map:-webkit-full-screen{width:100%;height:100%}.mapboxgl-canary{background-color:salmon}.mapboxgl-canvas-container.mapboxgl-interactive,.mapboxgl-ctrl-group button.mapboxgl-ctrl-compass{cursor:grab;-webkit-user-select:none;user-select:none}.mapboxgl-canvas-container.mapboxgl-interactive.mapboxgl-track-pointer{cursor:pointer}.mapboxgl-canvas-container.mapboxgl-interactive:active,.mapboxgl-ctrl-group button.mapboxgl-ctrl-compass:active{cursor:grabbing}.mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate,.mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate .mapboxgl-canvas{touch-action:pan-x pan-y}.mapboxgl-canvas-container.mapboxgl-touch-drag-pan,.mapboxgl-canvas-container.mapboxgl-touch-drag-pan .mapboxgl-canvas{touch-action:pinch-zoom}.mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate.mapboxgl-touch-drag-pan,.mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate.mapboxgl-touch-drag-pan .mapboxgl-canvas{touch-action:none}.mapboxgl-ctrl-bottom-left,.mapboxgl-ctrl-bottom-right,.mapboxgl-ctrl-top-left,.mapboxgl-ctrl-top-right{position:absolute;pointer-events:none;z-index:2}.mapboxgl-ctrl-top-left{top:0;left:0}.mapboxgl-ctrl-top-right{top:0;right:0}.mapboxgl-ctrl-bottom-left{bottom:0;left:0}.mapboxgl-ctrl-bottom-right{right:0;bottom:0}.mapboxgl-ctrl{clear:both;pointer-events:auto;transform:translate(0)}.mapboxgl-ctrl-top-left .mapboxgl-ctrl{margin:10px 0 0 10px;float:left}.mapboxgl-ctrl-top-right .mapboxgl-ctrl{margin:10px 10px 0 0;float:right}.mapboxgl-ctrl-bottom-left .mapboxgl-ctrl{margin:0 0 10px 10px;float:left}.mapboxgl-ctrl-bottom-right .mapboxgl-ctrl{margin:0 10px 10px 0;float:right}.mapboxgl-ctrl-group{border-radius:4px;background:#fff}.mapboxgl-ctrl-group:not(:empty){box-shadow:0 0 0 2px rgba(0,0,0,.1)}@media (-ms-high-contrast:active){.mapboxgl-ctrl-group:not(:empty){box-shadow:0 0 0 2px ButtonText}}.mapboxgl-ctrl-group button{width:29px;height:29px;display:block;padding:0;outline:none;border:0;box-sizing:border-box;background-color:transparent;cursor:pointer;overflow:hidden}.mapboxgl-ctrl-group button+button{border-top:1px solid #ddd}.mapboxgl-ctrl button .mapboxgl-ctrl-icon{display:block;width:100%;height:100%;background-repeat:no-repeat;background-position:50%}@media (-ms-high-contrast:active){.mapboxgl-ctrl-icon{background-color:transparent}.mapboxgl-ctrl-group button+button{border-top:1px solid ButtonText}}.mapboxgl-ctrl-attrib-button:focus,.mapboxgl-ctrl-group button:focus{box-shadow:0 0 2px 2px #0096ff}.mapboxgl-ctrl button:disabled{cursor:not-allowed}.mapboxgl-ctrl button:disabled .mapboxgl-ctrl-icon{opacity:.25}.mapboxgl-ctrl-group button:first-child{border-radius:4px 4px 0 0}.mapboxgl-ctrl-group button:last-child{border-radius:0 0 4px 4px}.mapboxgl-ctrl-group button:only-child{border-radius:inherit}.mapboxgl-ctrl button:not(:disabled):hover{background-color:rgba(0,0,0,.05)}.mapboxgl-ctrl-group button:focus:focus-visible{box-shadow:0 0 2px 2px #0096ff}.mapboxgl-ctrl-group button:focus:not(:focus-visible){box-shadow:none}.mapboxgl-ctrl button.mapboxgl-ctrl-zoom-out .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23333'%3E %3Cpath d='M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-9z'/%3E %3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-zoom-in .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23333'%3E %3Cpath d='M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5z'/%3E %3C/svg%3E")}@media (-ms-high-contrast:active){.mapboxgl-ctrl button.mapboxgl-ctrl-zoom-out .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23fff'%3E %3Cpath d='M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-9z'/%3E %3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-zoom-in .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23fff'%3E %3Cpath d='M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5z'/%3E %3C/svg%3E")}}@media (-ms-high-contrast:black-on-white){.mapboxgl-ctrl button.mapboxgl-ctrl-zoom-out .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23000'%3E %3Cpath d='M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-9z'/%3E %3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-zoom-in .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23000'%3E %3Cpath d='M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5z'/%3E %3C/svg%3E")}}.mapboxgl-ctrl button.mapboxgl-ctrl-fullscreen .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23333'%3E %3Cpath d='M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3h1zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16h1zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5H13zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1V7.5z'/%3E %3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-shrink .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath d='M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1h-5.5zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1v-5.5zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1v5.5zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1h5.5z'/%3E %3C/svg%3E")}@media (-ms-high-contrast:active){.mapboxgl-ctrl button.mapboxgl-ctrl-fullscreen .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23fff'%3E %3Cpath d='M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3h1zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16h1zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5H13zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1V7.5z'/%3E %3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-shrink .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23fff'%3E %3Cpath d='M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1h-5.5zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1v-5.5zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1v5.5zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1h5.5z'/%3E %3C/svg%3E")}}@media (-ms-high-contrast:black-on-white){.mapboxgl-ctrl button.mapboxgl-ctrl-fullscreen .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23000'%3E %3Cpath d='M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3h1zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16h1zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5H13zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1V7.5z'/%3E %3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-shrink .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23000'%3E %3Cpath d='M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1h-5.5zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1v-5.5zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1v5.5zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1h5.5z'/%3E %3C/svg%3E")}}.mapboxgl-ctrl button.mapboxgl-ctrl-compass .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23333'%3E %3Cpath d='M10.5 14l4-8 4 8h-8z'/%3E %3Cpath id='south' d='M10.5 16l4 8 4-8h-8z' fill='%23ccc'/%3E %3C/svg%3E")}@media (-ms-high-contrast:active){.mapboxgl-ctrl button.mapboxgl-ctrl-compass .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23fff'%3E %3Cpath d='M10.5 14l4-8 4 8h-8z'/%3E %3Cpath id='south' d='M10.5 16l4 8 4-8h-8z' fill='%23999'/%3E %3C/svg%3E")}}@media (-ms-high-contrast:black-on-white){.mapboxgl-ctrl button.mapboxgl-ctrl-compass .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23000'%3E %3Cpath d='M10.5 14l4-8 4 8h-8z'/%3E %3Cpath id='south' d='M10.5 16l4 8 4-8h-8z' fill='%23ccc'/%3E %3C/svg%3E")}}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23333'%3E %3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E %3Ccircle id='dot' cx='10' cy='10' r='2'/%3E %3Cpath id='stroke' d='M14 5l1 1-9 9-1-1 9-9z' display='none'/%3E %3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate:disabled .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23aaa'%3E %3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E %3Ccircle id='dot' cx='10' cy='10' r='2'/%3E %3Cpath id='stroke' d='M14 5l1 1-9 9-1-1 9-9z' fill='red'/%3E %3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-active .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%2333b5e5'%3E %3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E %3Ccircle id='dot' cx='10' cy='10' r='2'/%3E %3Cpath id='stroke' d='M14 5l1 1-9 9-1-1 9-9z' display='none'/%3E %3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-active-error .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23e58978'%3E %3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E %3Ccircle id='dot' cx='10' cy='10' r='2'/%3E %3Cpath id='stroke' d='M14 5l1 1-9 9-1-1 9-9z' display='none'/%3E %3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-background .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%2333b5e5'%3E %3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E %3Ccircle id='dot' cx='10' cy='10' r='2' display='none'/%3E %3Cpath id='stroke' d='M14 5l1 1-9 9-1-1 9-9z' display='none'/%3E %3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-background-error .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23e54e33'%3E %3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E %3Ccircle id='dot' cx='10' cy='10' r='2' display='none'/%3E %3Cpath id='stroke' d='M14 5l1 1-9 9-1-1 9-9z' display='none'/%3E %3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-waiting .mapboxgl-ctrl-icon{animation:mapboxgl-spin 2s linear infinite}@media (-ms-high-contrast:active){.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23fff'%3E %3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E %3Ccircle id='dot' cx='10' cy='10' r='2'/%3E %3Cpath id='stroke' d='M14 5l1 1-9 9-1-1 9-9z' display='none'/%3E %3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate:disabled .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23999'%3E %3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E %3Ccircle id='dot' cx='10' cy='10' r='2'/%3E %3Cpath id='stroke' d='M14 5l1 1-9 9-1-1 9-9z' fill='red'/%3E %3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-active .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%2333b5e5'%3E %3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E %3Ccircle id='dot' cx='10' cy='10' r='2'/%3E %3Cpath id='stroke' d='M14 5l1 1-9 9-1-1 9-9z' display='none'/%3E %3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-active-error .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23e58978'%3E %3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E %3Ccircle id='dot' cx='10' cy='10' r='2'/%3E %3Cpath id='stroke' d='M14 5l1 1-9 9-1-1 9-9z' display='none'/%3E %3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-background .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%2333b5e5'%3E %3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E %3Ccircle id='dot' cx='10' cy='10' r='2' display='none'/%3E %3Cpath id='stroke' d='M14 5l1 1-9 9-1-1 9-9z' display='none'/%3E %3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-background-error .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23e54e33'%3E %3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E %3Ccircle id='dot' cx='10' cy='10' r='2' display='none'/%3E %3Cpath id='stroke' d='M14 5l1 1-9 9-1-1 9-9z' display='none'/%3E %3C/svg%3E")}}@media (-ms-high-contrast:black-on-white){.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23000'%3E %3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E %3Ccircle id='dot' cx='10' cy='10' r='2'/%3E %3Cpath id='stroke' d='M14 5l1 1-9 9-1-1 9-9z' display='none'/%3E %3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate:disabled .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23666'%3E %3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E %3Ccircle id='dot' cx='10' cy='10' r='2'/%3E %3Cpath id='stroke' d='M14 5l1 1-9 9-1-1 9-9z' fill='red'/%3E %3C/svg%3E")}}@keyframes mapboxgl-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}a.mapboxgl-ctrl-logo{width:88px;height:23px;margin:0 0 -4px -4px;display:block;background-repeat:no-repeat;cursor:pointer;overflow:hidden;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='88' height='23' viewBox='0 0 88 23' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' fill-rule='evenodd'%3E %3Cdefs%3E %3Cpath id='logo' d='M11.5 2.25c5.105 0 9.25 4.145 9.25 9.25s-4.145 9.25-9.25 9.25-9.25-4.145-9.25-9.25 4.145-9.25 9.25-9.25zM6.997 15.983c-.051-.338-.828-5.802 2.233-8.873a4.395 4.395 0 013.13-1.28c1.27 0 2.49.51 3.39 1.42.91.9 1.42 2.12 1.42 3.39 0 1.18-.449 2.301-1.28 3.13C12.72 16.93 7 16 7 16l-.003-.017zM15.3 10.5l-2 .8-.8 2-.8-2-2-.8 2-.8.8-2 .8 2 2 .8z'/%3E %3Cpath id='text' d='M50.63 8c.13 0 .23.1.23.23V9c.7-.76 1.7-1.18 2.73-1.18 2.17 0 3.95 1.85 3.95 4.17s-1.77 4.19-3.94 4.19c-1.04 0-2.03-.43-2.74-1.18v3.77c0 .13-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V8.23c0-.12.1-.23.23-.23h1.4zm-3.86.01c.01 0 .01 0 .01-.01.13 0 .22.1.22.22v7.55c0 .12-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V15c-.7.76-1.69 1.19-2.73 1.19-2.17 0-3.94-1.87-3.94-4.19 0-2.32 1.77-4.19 3.94-4.19 1.03 0 2.02.43 2.73 1.18v-.75c0-.12.1-.23.23-.23h1.4zm26.375-.19a4.24 4.24 0 00-4.16 3.29c-.13.59-.13 1.19 0 1.77a4.233 4.233 0 004.17 3.3c2.35 0 4.26-1.87 4.26-4.19 0-2.32-1.9-4.17-4.27-4.17zM60.63 5c.13 0 .23.1.23.23v3.76c.7-.76 1.7-1.18 2.73-1.18 1.88 0 3.45 1.4 3.84 3.28.13.59.13 1.2 0 1.8-.39 1.88-1.96 3.29-3.84 3.29-1.03 0-2.02-.43-2.73-1.18v.77c0 .12-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V5.23c0-.12.1-.23.23-.23h1.4zm-34 11h-1.4c-.13 0-.23-.11-.23-.23V8.22c.01-.13.1-.22.23-.22h1.4c.13 0 .22.11.23.22v.68c.5-.68 1.3-1.09 2.16-1.1h.03c1.09 0 2.09.6 2.6 1.55.45-.95 1.4-1.55 2.44-1.56 1.62 0 2.93 1.25 2.9 2.78l.03 5.2c0 .13-.1.23-.23.23h-1.41c-.13 0-.23-.11-.23-.23v-4.59c0-.98-.74-1.71-1.62-1.71-.8 0-1.46.7-1.59 1.62l.01 4.68c0 .13-.11.23-.23.23h-1.41c-.13 0-.23-.11-.23-.23v-4.59c0-.98-.74-1.71-1.62-1.71-.85 0-1.54.79-1.6 1.8v4.5c0 .13-.1.23-.23.23zm53.615 0h-1.61c-.04 0-.08-.01-.12-.03-.09-.06-.13-.19-.06-.28l2.43-3.71-2.39-3.65a.213.213 0 01-.03-.12c0-.12.09-.21.21-.21h1.61c.13 0 .24.06.3.17l1.41 2.37 1.4-2.37a.34.34 0 01.3-.17h1.6c.04 0 .08.01.12.03.09.06.13.19.06.28l-2.37 3.65 2.43 3.7c0 .05.01.09.01.13 0 .12-.09.21-.21.21h-1.61c-.13 0-.24-.06-.3-.17l-1.44-2.42-1.44 2.42a.34.34 0 01-.3.17zm-7.12-1.49c-1.33 0-2.42-1.12-2.42-2.51 0-1.39 1.08-2.52 2.42-2.52 1.33 0 2.42 1.12 2.42 2.51 0 1.39-1.08 2.51-2.42 2.52zm-19.865 0c-1.32 0-2.39-1.11-2.42-2.48v-.07c.02-1.38 1.09-2.49 2.4-2.49 1.32 0 2.41 1.12 2.41 2.51 0 1.39-1.07 2.52-2.39 2.53zm-8.11-2.48c-.01 1.37-1.09 2.47-2.41 2.47s-2.42-1.12-2.42-2.51c0-1.39 1.08-2.52 2.4-2.52 1.33 0 2.39 1.11 2.41 2.48l.02.08zm18.12 2.47c-1.32 0-2.39-1.11-2.41-2.48v-.06c.02-1.38 1.09-2.48 2.41-2.48s2.42 1.12 2.42 2.51c0 1.39-1.09 2.51-2.42 2.51z'/%3E %3C/defs%3E %3Cmask id='clip'%3E %3Crect x='0' y='0' width='100%25' height='100%25' fill='white'/%3E %3Cuse xlink:href='%23logo'/%3E %3Cuse xlink:href='%23text'/%3E %3C/mask%3E %3Cg id='outline' opacity='0.3' stroke='%23000' stroke-width='3'%3E %3Ccircle mask='url(%23clip)' cx='11.5' cy='11.5' r='9.25'/%3E %3Cuse xlink:href='%23text' mask='url(%23clip)'/%3E %3C/g%3E %3Cg id='fill' opacity='0.9' fill='%23fff'%3E %3Cuse xlink:href='%23logo'/%3E %3Cuse xlink:href='%23text'/%3E %3C/g%3E %3C/svg%3E")}a.mapboxgl-ctrl-logo.mapboxgl-compact{width:23px}@media (-ms-high-contrast:active){a.mapboxgl-ctrl-logo{background-color:transparent;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='88' height='23' viewBox='0 0 88 23' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' fill-rule='evenodd'%3E %3Cdefs%3E %3Cpath id='logo' d='M11.5 2.25c5.105 0 9.25 4.145 9.25 9.25s-4.145 9.25-9.25 9.25-9.25-4.145-9.25-9.25 4.145-9.25 9.25-9.25zM6.997 15.983c-.051-.338-.828-5.802 2.233-8.873a4.395 4.395 0 013.13-1.28c1.27 0 2.49.51 3.39 1.42.91.9 1.42 2.12 1.42 3.39 0 1.18-.449 2.301-1.28 3.13C12.72 16.93 7 16 7 16l-.003-.017zM15.3 10.5l-2 .8-.8 2-.8-2-2-.8 2-.8.8-2 .8 2 2 .8z'/%3E %3Cpath id='text' d='M50.63 8c.13 0 .23.1.23.23V9c.7-.76 1.7-1.18 2.73-1.18 2.17 0 3.95 1.85 3.95 4.17s-1.77 4.19-3.94 4.19c-1.04 0-2.03-.43-2.74-1.18v3.77c0 .13-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V8.23c0-.12.1-.23.23-.23h1.4zm-3.86.01c.01 0 .01 0 .01-.01.13 0 .22.1.22.22v7.55c0 .12-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V15c-.7.76-1.69 1.19-2.73 1.19-2.17 0-3.94-1.87-3.94-4.19 0-2.32 1.77-4.19 3.94-4.19 1.03 0 2.02.43 2.73 1.18v-.75c0-.12.1-.23.23-.23h1.4zm26.375-.19a4.24 4.24 0 00-4.16 3.29c-.13.59-.13 1.19 0 1.77a4.233 4.233 0 004.17 3.3c2.35 0 4.26-1.87 4.26-4.19 0-2.32-1.9-4.17-4.27-4.17zM60.63 5c.13 0 .23.1.23.23v3.76c.7-.76 1.7-1.18 2.73-1.18 1.88 0 3.45 1.4 3.84 3.28.13.59.13 1.2 0 1.8-.39 1.88-1.96 3.29-3.84 3.29-1.03 0-2.02-.43-2.73-1.18v.77c0 .12-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V5.23c0-.12.1-.23.23-.23h1.4zm-34 11h-1.4c-.13 0-.23-.11-.23-.23V8.22c.01-.13.1-.22.23-.22h1.4c.13 0 .22.11.23.22v.68c.5-.68 1.3-1.09 2.16-1.1h.03c1.09 0 2.09.6 2.6 1.55.45-.95 1.4-1.55 2.44-1.56 1.62 0 2.93 1.25 2.9 2.78l.03 5.2c0 .13-.1.23-.23.23h-1.41c-.13 0-.23-.11-.23-.23v-4.59c0-.98-.74-1.71-1.62-1.71-.8 0-1.46.7-1.59 1.62l.01 4.68c0 .13-.11.23-.23.23h-1.41c-.13 0-.23-.11-.23-.23v-4.59c0-.98-.74-1.71-1.62-1.71-.85 0-1.54.79-1.6 1.8v4.5c0 .13-.1.23-.23.23zm53.615 0h-1.61c-.04 0-.08-.01-.12-.03-.09-.06-.13-.19-.06-.28l2.43-3.71-2.39-3.65a.213.213 0 01-.03-.12c0-.12.09-.21.21-.21h1.61c.13 0 .24.06.3.17l1.41 2.37 1.4-2.37a.34.34 0 01.3-.17h1.6c.04 0 .08.01.12.03.09.06.13.19.06.28l-2.37 3.65 2.43 3.7c0 .05.01.09.01.13 0 .12-.09.21-.21.21h-1.61c-.13 0-.24-.06-.3-.17l-1.44-2.42-1.44 2.42a.34.34 0 01-.3.17zm-7.12-1.49c-1.33 0-2.42-1.12-2.42-2.51 0-1.39 1.08-2.52 2.42-2.52 1.33 0 2.42 1.12 2.42 2.51 0 1.39-1.08 2.51-2.42 2.52zm-19.865 0c-1.32 0-2.39-1.11-2.42-2.48v-.07c.02-1.38 1.09-2.49 2.4-2.49 1.32 0 2.41 1.12 2.41 2.51 0 1.39-1.07 2.52-2.39 2.53zm-8.11-2.48c-.01 1.37-1.09 2.47-2.41 2.47s-2.42-1.12-2.42-2.51c0-1.39 1.08-2.52 2.4-2.52 1.33 0 2.39 1.11 2.41 2.48l.02.08zm18.12 2.47c-1.32 0-2.39-1.11-2.41-2.48v-.06c.02-1.38 1.09-2.48 2.41-2.48s2.42 1.12 2.42 2.51c0 1.39-1.09 2.51-2.42 2.51z'/%3E %3C/defs%3E %3Cmask id='clip'%3E %3Crect x='0' y='0' width='100%25' height='100%25' fill='white'/%3E %3Cuse xlink:href='%23logo'/%3E %3Cuse xlink:href='%23text'/%3E %3C/mask%3E %3Cg id='outline' opacity='1' stroke='%23000' stroke-width='3'%3E %3Ccircle mask='url(%23clip)' cx='11.5' cy='11.5' r='9.25'/%3E %3Cuse xlink:href='%23text' mask='url(%23clip)'/%3E %3C/g%3E %3Cg id='fill' opacity='1' fill='%23fff'%3E %3Cuse xlink:href='%23logo'/%3E %3Cuse xlink:href='%23text'/%3E %3C/g%3E %3C/svg%3E")}}@media (-ms-high-contrast:black-on-white){a.mapboxgl-ctrl-logo{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='88' height='23' viewBox='0 0 88 23' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' fill-rule='evenodd'%3E %3Cdefs%3E %3Cpath id='logo' d='M11.5 2.25c5.105 0 9.25 4.145 9.25 9.25s-4.145 9.25-9.25 9.25-9.25-4.145-9.25-9.25 4.145-9.25 9.25-9.25zM6.997 15.983c-.051-.338-.828-5.802 2.233-8.873a4.395 4.395 0 013.13-1.28c1.27 0 2.49.51 3.39 1.42.91.9 1.42 2.12 1.42 3.39 0 1.18-.449 2.301-1.28 3.13C12.72 16.93 7 16 7 16l-.003-.017zM15.3 10.5l-2 .8-.8 2-.8-2-2-.8 2-.8.8-2 .8 2 2 .8z'/%3E %3Cpath id='text' d='M50.63 8c.13 0 .23.1.23.23V9c.7-.76 1.7-1.18 2.73-1.18 2.17 0 3.95 1.85 3.95 4.17s-1.77 4.19-3.94 4.19c-1.04 0-2.03-.43-2.74-1.18v3.77c0 .13-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V8.23c0-.12.1-.23.23-.23h1.4zm-3.86.01c.01 0 .01 0 .01-.01.13 0 .22.1.22.22v7.55c0 .12-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V15c-.7.76-1.69 1.19-2.73 1.19-2.17 0-3.94-1.87-3.94-4.19 0-2.32 1.77-4.19 3.94-4.19 1.03 0 2.02.43 2.73 1.18v-.75c0-.12.1-.23.23-.23h1.4zm26.375-.19a4.24 4.24 0 00-4.16 3.29c-.13.59-.13 1.19 0 1.77a4.233 4.233 0 004.17 3.3c2.35 0 4.26-1.87 4.26-4.19 0-2.32-1.9-4.17-4.27-4.17zM60.63 5c.13 0 .23.1.23.23v3.76c.7-.76 1.7-1.18 2.73-1.18 1.88 0 3.45 1.4 3.84 3.28.13.59.13 1.2 0 1.8-.39 1.88-1.96 3.29-3.84 3.29-1.03 0-2.02-.43-2.73-1.18v.77c0 .12-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V5.23c0-.12.1-.23.23-.23h1.4zm-34 11h-1.4c-.13 0-.23-.11-.23-.23V8.22c.01-.13.1-.22.23-.22h1.4c.13 0 .22.11.23.22v.68c.5-.68 1.3-1.09 2.16-1.1h.03c1.09 0 2.09.6 2.6 1.55.45-.95 1.4-1.55 2.44-1.56 1.62 0 2.93 1.25 2.9 2.78l.03 5.2c0 .13-.1.23-.23.23h-1.41c-.13 0-.23-.11-.23-.23v-4.59c0-.98-.74-1.71-1.62-1.71-.8 0-1.46.7-1.59 1.62l.01 4.68c0 .13-.11.23-.23.23h-1.41c-.13 0-.23-.11-.23-.23v-4.59c0-.98-.74-1.71-1.62-1.71-.85 0-1.54.79-1.6 1.8v4.5c0 .13-.1.23-.23.23zm53.615 0h-1.61c-.04 0-.08-.01-.12-.03-.09-.06-.13-.19-.06-.28l2.43-3.71-2.39-3.65a.213.213 0 01-.03-.12c0-.12.09-.21.21-.21h1.61c.13 0 .24.06.3.17l1.41 2.37 1.4-2.37a.34.34 0 01.3-.17h1.6c.04 0 .08.01.12.03.09.06.13.19.06.28l-2.37 3.65 2.43 3.7c0 .05.01.09.01.13 0 .12-.09.21-.21.21h-1.61c-.13 0-.24-.06-.3-.17l-1.44-2.42-1.44 2.42a.34.34 0 01-.3.17zm-7.12-1.49c-1.33 0-2.42-1.12-2.42-2.51 0-1.39 1.08-2.52 2.42-2.52 1.33 0 2.42 1.12 2.42 2.51 0 1.39-1.08 2.51-2.42 2.52zm-19.865 0c-1.32 0-2.39-1.11-2.42-2.48v-.07c.02-1.38 1.09-2.49 2.4-2.49 1.32 0 2.41 1.12 2.41 2.51 0 1.39-1.07 2.52-2.39 2.53zm-8.11-2.48c-.01 1.37-1.09 2.47-2.41 2.47s-2.42-1.12-2.42-2.51c0-1.39 1.08-2.52 2.4-2.52 1.33 0 2.39 1.11 2.41 2.48l.02.08zm18.12 2.47c-1.32 0-2.39-1.11-2.41-2.48v-.06c.02-1.38 1.09-2.48 2.41-2.48s2.42 1.12 2.42 2.51c0 1.39-1.09 2.51-2.42 2.51z'/%3E %3C/defs%3E %3Cmask id='clip'%3E %3Crect x='0' y='0' width='100%25' height='100%25' fill='white'/%3E %3Cuse xlink:href='%23logo'/%3E %3Cuse xlink:href='%23text'/%3E %3C/mask%3E %3Cg id='outline' opacity='1' stroke='%23fff' stroke-width='3' fill='%23fff'%3E %3Ccircle mask='url(%23clip)' cx='11.5' cy='11.5' r='9.25'/%3E %3Cuse xlink:href='%23text' mask='url(%23clip)'/%3E %3C/g%3E %3Cg id='fill' opacity='1' fill='%23000'%3E %3Cuse xlink:href='%23logo'/%3E %3Cuse xlink:href='%23text'/%3E %3C/g%3E %3C/svg%3E")}}.mapboxgl-ctrl.mapboxgl-ctrl-attrib{padding:0 5px;background-color:hsla(0,0%,100%,.5);margin:0}@media screen{.mapboxgl-ctrl-attrib.mapboxgl-compact{min-height:20px;padding:2px 24px 2px 0;margin:10px;position:relative;background-color:#fff;border-radius:12px}.mapboxgl-ctrl-attrib.mapboxgl-compact-show{padding:2px 28px 2px 8px;visibility:visible}.mapboxgl-ctrl-bottom-left>.mapboxgl-ctrl-attrib.mapboxgl-compact-show,.mapboxgl-ctrl-top-left>.mapboxgl-ctrl-attrib.mapboxgl-compact-show{padding:2px 8px 2px 28px;border-radius:12px}.mapboxgl-ctrl-attrib.mapboxgl-compact .mapboxgl-ctrl-attrib-inner{display:none}.mapboxgl-ctrl-attrib-button{display:none;cursor:pointer;position:absolute;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill-rule='evenodd'%3E %3Cpath d='M4 10a6 6 0 1 0 12 0 6 6 0 1 0-12 0m5-3a1 1 0 1 0 2 0 1 1 0 1 0-2 0m0 3a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0'/%3E %3C/svg%3E");background-color:hsla(0,0%,100%,.5);width:24px;height:24px;box-sizing:border-box;border-radius:12px;outline:none;top:0;right:0;border:0}.mapboxgl-ctrl-bottom-left .mapboxgl-ctrl-attrib-button,.mapboxgl-ctrl-top-left .mapboxgl-ctrl-attrib-button{left:0}.mapboxgl-ctrl-attrib.mapboxgl-compact-show .mapboxgl-ctrl-attrib-inner,.mapboxgl-ctrl-attrib.mapboxgl-compact .mapboxgl-ctrl-attrib-button{display:block}.mapboxgl-ctrl-attrib.mapboxgl-compact-show .mapboxgl-ctrl-attrib-button{background-color:rgba(0,0,0,.05)}.mapboxgl-ctrl-bottom-right>.mapboxgl-ctrl-attrib.mapboxgl-compact:after{bottom:0;right:0}.mapboxgl-ctrl-top-right>.mapboxgl-ctrl-attrib.mapboxgl-compact:after{top:0;right:0}.mapboxgl-ctrl-top-left>.mapboxgl-ctrl-attrib.mapboxgl-compact:after{top:0;left:0}.mapboxgl-ctrl-bottom-left>.mapboxgl-ctrl-attrib.mapboxgl-compact:after{bottom:0;left:0}}@media screen and (-ms-high-contrast:active){.mapboxgl-ctrl-attrib.mapboxgl-compact:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill-rule='evenodd' fill='%23fff'%3E %3Cpath d='M4 10a6 6 0 1 0 12 0 6 6 0 1 0-12 0m5-3a1 1 0 1 0 2 0 1 1 0 1 0-2 0m0 3a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0'/%3E %3C/svg%3E")}}@media screen and (-ms-high-contrast:black-on-white){.mapboxgl-ctrl-attrib.mapboxgl-compact:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill-rule='evenodd'%3E %3Cpath d='M4 10a6 6 0 1 0 12 0 6 6 0 1 0-12 0m5-3a1 1 0 1 0 2 0 1 1 0 1 0-2 0m0 3a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0'/%3E %3C/svg%3E")}}.mapboxgl-ctrl-attrib a{color:rgba(0,0,0,.75);text-decoration:none}.mapboxgl-ctrl-attrib a:hover{color:inherit;text-decoration:underline}.mapboxgl-ctrl-attrib .mapbox-improve-map{font-weight:700;margin-left:2px}.mapboxgl-attrib-empty{display:none}.mapboxgl-ctrl-scale{background-color:hsla(0,0%,100%,.75);font-size:10px;border:2px solid #333;border-top:#333;padding:0 5px;color:#333;box-sizing:border-box}.mapboxgl-popup{position:absolute;top:0;left:0;display:flex;will-change:transform;pointer-events:none}.mapboxgl-popup-anchor-top,.mapboxgl-popup-anchor-top-left,.mapboxgl-popup-anchor-top-right{flex-direction:column}.mapboxgl-popup-anchor-bottom,.mapboxgl-popup-anchor-bottom-left,.mapboxgl-popup-anchor-bottom-right{flex-direction:column-reverse}.mapboxgl-popup-anchor-left{flex-direction:row}.mapboxgl-popup-anchor-right{flex-direction:row-reverse}.mapboxgl-popup-tip{width:0;height:0;border:10px solid transparent;z-index:1}.mapboxgl-popup-anchor-top .mapboxgl-popup-tip{align-self:center;border-top:none;border-bottom-color:#fff}.mapboxgl-popup-anchor-top-left .mapboxgl-popup-tip{align-self:flex-start;border-top:none;border-left:none;border-bottom-color:#fff}.mapboxgl-popup-anchor-top-right .mapboxgl-popup-tip{align-self:flex-end;border-top:none;border-right:none;border-bottom-color:#fff}.mapboxgl-popup-anchor-bottom .mapboxgl-popup-tip{align-self:center;border-bottom:none;border-top-color:#fff}.mapboxgl-popup-anchor-bottom-left .mapboxgl-popup-tip{align-self:flex-start;border-bottom:none;border-left:none;border-top-color:#fff}.mapboxgl-popup-anchor-bottom-right .mapboxgl-popup-tip{align-self:flex-end;border-bottom:none;border-right:none;border-top-color:#fff}.mapboxgl-popup-anchor-left .mapboxgl-popup-tip{align-self:center;border-left:none;border-right-color:#fff}.mapboxgl-popup-anchor-right .mapboxgl-popup-tip{align-self:center;border-right:none;border-left-color:#fff}.mapboxgl-popup-close-button{position:absolute;right:0;top:0;border:0;border-radius:0 3px 0 0;cursor:pointer;background-color:transparent}.mapboxgl-popup-close-button:hover{background-color:rgba(0,0,0,.05)}.mapboxgl-popup-content{position:relative;background:#fff;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.1);padding:10px 10px 15px;pointer-events:auto}.mapboxgl-popup-anchor-top-left .mapboxgl-popup-content{border-top-left-radius:0}.mapboxgl-popup-anchor-top-right .mapboxgl-popup-content{border-top-right-radius:0}.mapboxgl-popup-anchor-bottom-left .mapboxgl-popup-content{border-bottom-left-radius:0}.mapboxgl-popup-anchor-bottom-right .mapboxgl-popup-content{border-bottom-right-radius:0}.mapboxgl-popup-track-pointer{display:none}.mapboxgl-popup-track-pointer *{pointer-events:none;user-select:none}.mapboxgl-map:hover .mapboxgl-popup-track-pointer{display:flex}.mapboxgl-map:active .mapboxgl-popup-track-pointer{display:none}.mapboxgl-marker{position:absolute;top:0;left:0;will-change:transform;opacity:1;transition:opacity .2s}.mapboxgl-user-location-dot,.mapboxgl-user-location-dot:before{background-color:#1da1f2;width:15px;height:15px;border-radius:50%}.mapboxgl-user-location-dot:before{content:"";position:absolute;animation:mapboxgl-user-location-dot-pulse 2s infinite}.mapboxgl-user-location-dot:after{border-radius:50%;border:2px solid #fff;content:"";height:19px;left:-2px;position:absolute;top:-2px;width:19px;box-sizing:border-box;box-shadow:0 0 3px rgba(0,0,0,.35)}.mapboxgl-user-location-show-heading .mapboxgl-user-location-heading{width:0;height:0}.mapboxgl-user-location-show-heading .mapboxgl-user-location-heading:after,.mapboxgl-user-location-show-heading .mapboxgl-user-location-heading:before{content:"";border-bottom:7.5px solid #4aa1eb;position:absolute}.mapboxgl-user-location-show-heading .mapboxgl-user-location-heading:before{border-left:7.5px solid transparent;transform:translateY(-28px) skewY(-20deg)}.mapboxgl-user-location-show-heading .mapboxgl-user-location-heading:after{border-right:7.5px solid transparent;transform:translate(7.5px,-28px) skewY(20deg)}@keyframes mapboxgl-user-location-dot-pulse{0%{transform:scale(1);opacity:1}70%{transform:scale(3);opacity:0}to{transform:scale(1);opacity:0}}.mapboxgl-user-location-dot-stale{background-color:#aaa}.mapboxgl-user-location-dot-stale:after{display:none}.mapboxgl-user-location-accuracy-circle{background-color:rgba(29,161,242,.2);width:1px;height:1px;border-radius:100%}.mapboxgl-crosshair,.mapboxgl-crosshair .mapboxgl-interactive,.mapboxgl-crosshair .mapboxgl-interactive:active{cursor:crosshair}.mapboxgl-boxzoom{position:absolute;top:0;left:0;width:0;height:0;background:#fff;border:2px dotted #202020;opacity:.5}@media print{.mapbox-improve-map{display:none}}.mapboxgl-scroll-zoom-blocker,.mapboxgl-touch-pan-blocker{color:#fff;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif;justify-content:center;text-align:center;position:absolute;display:flex;align-items:center;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.7);opacity:0;pointer-events:none;transition:opacity .75s ease-in-out;transition-delay:1s}.mapboxgl-scroll-zoom-blocker-show,.mapboxgl-touch-pan-blocker-show{opacity:1;transition:opacity .1s ease-in-out}.mapboxgl-canvas-container.mapboxgl-touch-pan-blocker-override.mapboxgl-scrollable-page,.mapboxgl-canvas-container.mapboxgl-touch-pan-blocker-override.mapboxgl-scrollable-page .mapboxgl-canvas{touch-action:pan-x pan-y} \ No newline at end of file
diff --git a/assets/lib/mapbox-gl/mapbox-gl.min.js b/assets/lib/mapbox-gl/mapbox-gl.min.js
index 43133d57..b3f463af 100644
--- a/assets/lib/mapbox-gl/mapbox-gl.min.js
+++ b/assets/lib/mapbox-gl/mapbox-gl.min.js
@@ -1,8 +1,8 @@
/**
- * Minified by jsDelivr using Terser v3.14.1.
- * Original file: /npm/mapbox-gl@1.10.1/dist/mapbox-gl.js
+ * Minified by jsDelivr using Terser v5.10.0.
+ * Original file: /npm/mapbox-gl@2.8.2/dist/mapbox-gl.js
*
* Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
*/
-!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).mapboxgl=e()}(this,function(){"use strict";var t,e,r;function i(i,n){if(t)if(e){var o="var sharedChunk = {}; ("+t+")(sharedChunk); ("+e+")(sharedChunk);",a={};t(a),(r=n(a)).workerUrl=window.URL.createObjectURL(new Blob([o],{type:"text/javascript"}))}else e=n;else t=n}return i(0,function(t){function e(t,e){return t(e={exports:{}},e.exports),e.exports}var r=i;function i(t,e,r,i){this.cx=3*t,this.bx=3*(r-t)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*e,this.by=3*(i-e)-this.cy,this.ay=1-this.cy-this.by,this.p1x=t,this.p1y=i,this.p2x=r,this.p2y=i}i.prototype.sampleCurveX=function(t){return((this.ax*t+this.bx)*t+this.cx)*t},i.prototype.sampleCurveY=function(t){return((this.ay*t+this.by)*t+this.cy)*t},i.prototype.sampleCurveDerivativeX=function(t){return(3*this.ax*t+2*this.bx)*t+this.cx},i.prototype.solveCurveX=function(t,e){var r,i,n,o,a;for(void 0===e&&(e=1e-6),n=t,a=0;a<8;a++){if(o=this.sampleCurveX(n)-t,Math.abs(o)<e)return n;var s=this.sampleCurveDerivativeX(n);if(Math.abs(s)<1e-6)break;n-=o/s}if((n=t)<(r=0))return r;if(n>(i=1))return i;for(;r<i;){if(o=this.sampleCurveX(n),Math.abs(o-t)<e)return n;t>o?r=n:i=n,n=.5*(i-r)+r}return n},i.prototype.solve=function(t,e){return this.sampleCurveY(this.solveCurveX(t,e))};var n=o;function o(t,e){this.x=t,this.y=e}function a(t,e,i,n){var o=new r(t,e,i,n);return function(t){return o.solve(t)}}o.prototype={clone:function(){return new o(this.x,this.y)},add:function(t){return this.clone()._add(t)},sub:function(t){return this.clone()._sub(t)},multByPoint:function(t){return this.clone()._multByPoint(t)},divByPoint:function(t){return this.clone()._divByPoint(t)},mult:function(t){return this.clone()._mult(t)},div:function(t){return this.clone()._div(t)},rotate:function(t){return this.clone()._rotate(t)},rotateAround:function(t,e){return this.clone()._rotateAround(t,e)},matMult:function(t){return this.clone()._matMult(t)},unit:function(){return this.clone()._unit()},perp:function(){return this.clone()._perp()},round:function(){return this.clone()._round()},mag:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals:function(t){return this.x===t.x&&this.y===t.y},dist:function(t){return Math.sqrt(this.distSqr(t))},distSqr:function(t){var e=t.x-this.x,r=t.y-this.y;return e*e+r*r},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(t){return Math.atan2(this.y-t.y,this.x-t.x)},angleWith:function(t){return this.angleWithSep(t.x,t.y)},angleWithSep:function(t,e){return Math.atan2(this.x*e-this.y*t,this.x*t+this.y*e)},_matMult:function(t){var e=t[2]*this.x+t[3]*this.y;return this.x=t[0]*this.x+t[1]*this.y,this.y=e,this},_add:function(t){return this.x+=t.x,this.y+=t.y,this},_sub:function(t){return this.x-=t.x,this.y-=t.y,this},_mult:function(t){return this.x*=t,this.y*=t,this},_div:function(t){return this.x/=t,this.y/=t,this},_multByPoint:function(t){return this.x*=t.x,this.y*=t.y,this},_divByPoint:function(t){return this.x/=t.x,this.y/=t.y,this},_unit:function(){return this._div(this.mag()),this},_perp:function(){var t=this.y;return this.y=this.x,this.x=-t,this},_rotate:function(t){var e=Math.cos(t),r=Math.sin(t),i=r*this.x+e*this.y;return this.x=e*this.x-r*this.y,this.y=i,this},_rotateAround:function(t,e){var r=Math.cos(t),i=Math.sin(t),n=e.y+i*(this.x-e.x)+r*(this.y-e.y);return this.x=e.x+r*(this.x-e.x)-i*(this.y-e.y),this.y=n,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},o.convert=function(t){return t instanceof o?t:Array.isArray(t)?new o(t[0],t[1]):t};var s=a(.25,.1,.25,1);function l(t,e,r){return Math.min(r,Math.max(e,t))}function u(t,e,r){var i=r-e,n=((t-e)%i+i)%i+e;return n===e?r:n}function c(t){for(var e=[],r=arguments.length-1;r-- >0;)e[r]=arguments[r+1];for(var i=0,n=e;i<n.length;i+=1){var o=n[i];for(var a in o)t[a]=o[a]}return t}var p=1;function h(){return p++}function f(){return function t(e){return e?(e^16*Math.random()>>e/4).toString(16):([1e7]+-[1e3]+-4e3+-8e3+-1e11).replace(/[018]/g,t)}()}function d(t){return!!t&&/^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(t)}function m(t,e){t.forEach(function(t){e[t]&&(e[t]=e[t].bind(e))})}function y(t,e){return-1!==t.indexOf(e,t.length-e.length)}function g(t,e,r){var i={};for(var n in t)i[n]=e.call(r||this,t[n],n,t);return i}function _(t,e,r){var i={};for(var n in t)e.call(r||this,t[n],n,t)&&(i[n]=t[n]);return i}function v(t){return Array.isArray(t)?t.map(v):"object"==typeof t&&t?g(t,v):t}var x={};function b(t){x[t]||("undefined"!=typeof console&&console.warn(t),x[t]=!0)}function w(t,e,r){return(r.y-t.y)*(e.x-t.x)>(e.y-t.y)*(r.x-t.x)}function S(t){for(var e=0,r=0,i=t.length,n=i-1,o=void 0,a=void 0;r<i;n=r++)e+=((a=t[n]).x-(o=t[r]).x)*(o.y+a.y);return e}function T(){return"undefined"!=typeof WorkerGlobalScope&&"undefined"!=typeof self&&self instanceof WorkerGlobalScope}function I(t){var e={};if(t.replace(/(?:^|(?:\s*\,\s*))([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)(?:\=(?:([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)|(?:\"((?:[^"\\]|\\.)*)\")))?/g,function(t,r,i,n){var o=i||n;return e[r]=!o||o.toLowerCase(),""}),e["max-age"]){var r=parseInt(e["max-age"],10);isNaN(r)?delete e["max-age"]:e["max-age"]=r}return e}var E=null;function A(t){if(null==E){var e=t.navigator?t.navigator.userAgent:null;E=!!t.safari||!(!e||!(/\b(iPad|iPhone|iPod)\b/.test(e)||e.match("Safari")&&!e.match("Chrome")))}return E}function z(t){try{var e=self[t];return e.setItem("_mapbox_test_",1),e.removeItem("_mapbox_test_"),!0}catch(t){return!1}}var P,C,k,M,D=self.performance&&self.performance.now?self.performance.now.bind(self.performance):Date.now.bind(Date),L=self.requestAnimationFrame||self.mozRequestAnimationFrame||self.webkitRequestAnimationFrame||self.msRequestAnimationFrame,B=self.cancelAnimationFrame||self.mozCancelAnimationFrame||self.webkitCancelAnimationFrame||self.msCancelAnimationFrame,R={now:D,frame:function(t){var e=L(t);return{cancel:function(){return B(e)}}},getImageData:function(t,e){void 0===e&&(e=0);var r=self.document.createElement("canvas"),i=r.getContext("2d");if(!i)throw new Error("failed to create canvas 2d context");return r.width=t.width,r.height=t.height,i.drawImage(t,0,0,t.width,t.height),i.getImageData(-e,-e,t.width+2*e,t.height+2*e)},resolveURL:function(t){return P||(P=self.document.createElement("a")),P.href=t,P.href},hardwareConcurrency:self.navigator.hardwareConcurrency||4,get devicePixelRatio(){return self.devicePixelRatio},get prefersReducedMotion(){return!!self.matchMedia&&(null==C&&(C=self.matchMedia("(prefers-reduced-motion: reduce)")),C.matches)}},F={API_URL:"https://api.mapbox.com",get EVENTS_URL(){return this.API_URL?0===this.API_URL.indexOf("https://api.mapbox.cn")?"https://events.mapbox.cn/events/v2":0===this.API_URL.indexOf("https://api.mapbox.com")?"https://events.mapbox.com/events/v2":null:null},FEEDBACK_URL:"https://apps.mapbox.com/feedback",REQUIRE_ACCESS_TOKEN:!0,ACCESS_TOKEN:null,MAX_PARALLEL_IMAGE_REQUESTS:16},O={supported:!1,testSupport:function(t){!U&&M&&(V?N(t):k=t)}},U=!1,V=!1;function N(t){var e=t.createTexture();t.bindTexture(t.TEXTURE_2D,e);try{if(t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,M),t.isContextLost())return;O.supported=!0}catch(t){}t.deleteTexture(e),U=!0}self.document&&((M=self.document.createElement("img")).onload=function(){k&&N(k),k=null,V=!0},M.onerror=function(){U=!0,k=null},M.src="data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA=");var j="01",q=function(t,e){this._transformRequestFn=t,this._customAccessToken=e,this._createSkuToken()};function Z(t){return 0===t.indexOf("mapbox:")}q.prototype._createSkuToken=function(){var t=function(){for(var t="",e=0;e<10;e++)t+="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"[Math.floor(62*Math.random())];return{token:["1",j,t].join(""),tokenExpiresAt:Date.now()+432e5}}();this._skuToken=t.token,this._skuTokenExpiresAt=t.tokenExpiresAt},q.prototype._isSkuTokenExpired=function(){return Date.now()>this._skuTokenExpiresAt},q.prototype.transformRequest=function(t,e){return this._transformRequestFn&&this._transformRequestFn(t,e)||{url:t}},q.prototype.normalizeStyleURL=function(t,e){if(!Z(t))return t;var r=K(t);return r.path="/styles/v1"+r.path,this._makeAPIURL(r,this._customAccessToken||e)},q.prototype.normalizeGlyphsURL=function(t,e){if(!Z(t))return t;var r=K(t);return r.path="/fonts/v1"+r.path,this._makeAPIURL(r,this._customAccessToken||e)},q.prototype.normalizeSourceURL=function(t,e){if(!Z(t))return t;var r=K(t);return r.path="/v4/"+r.authority+".json",r.params.push("secure"),this._makeAPIURL(r,this._customAccessToken||e)},q.prototype.normalizeSpriteURL=function(t,e,r,i){var n=K(t);return Z(t)?(n.path="/styles/v1"+n.path+"/sprite"+e+r,this._makeAPIURL(n,this._customAccessToken||i)):(n.path+=""+e+r,H(n))},q.prototype.normalizeTileURL=function(t,e){if(this._isSkuTokenExpired()&&this._createSkuToken(),t&&!Z(t))return t;var r=K(t);r.path=r.path.replace(/(\.(png|jpg)\d*)(?=$)/,(R.devicePixelRatio>=2||512===e?"@2x":"")+(O.supported?".webp":"$1")),r.path=r.path.replace(/^.+\/v4\//,"/"),r.path="/v4"+r.path;var i=this._customAccessToken||function(t){for(var e=0,r=t;e<r.length;e+=1){var i=r[e].match(/^access_token=(.*)$/);if(i)return i[1]}return null}(r.params)||F.ACCESS_TOKEN;return F.REQUIRE_ACCESS_TOKEN&&i&&this._skuToken&&r.params.push("sku="+this._skuToken),this._makeAPIURL(r,i)},q.prototype.canonicalizeTileURL=function(t,e){var r=K(t);if(!r.path.match(/(^\/v4\/)/)||!r.path.match(/\.[\w]+$/))return t;var i="mapbox://tiles/";i+=r.path.replace("/v4/","");var n=r.params;return e&&(n=n.filter(function(t){return!t.match(/^access_token=/)})),n.length&&(i+="?"+n.join("&")),i},q.prototype.canonicalizeTileset=function(t,e){for(var r=!!e&&Z(e),i=[],n=0,o=t.tiles||[];n<o.length;n+=1){var a=o[n];X(a)?i.push(this.canonicalizeTileURL(a,r)):i.push(a)}return i},q.prototype._makeAPIURL=function(t,e){var r="See https://www.mapbox.com/api-documentation/#access-tokens-and-token-scopes",i=K(F.API_URL);if(t.protocol=i.protocol,t.authority=i.authority,"/"!==i.path&&(t.path=""+i.path+t.path),!F.REQUIRE_ACCESS_TOKEN)return H(t);if(!(e=e||F.ACCESS_TOKEN))throw new Error("An API access token is required to use Mapbox GL. "+r);if("s"===e[0])throw new Error("Use a public access token (pk.*) with Mapbox GL, not a secret access token (sk.*). "+r);return t.params=t.params.filter(function(t){return-1===t.indexOf("access_token")}),t.params.push("access_token="+e),H(t)};var G=/^((https?:)?\/\/)?([^\/]+\.)?mapbox\.c(n|om)(\/|\?|$)/i;function X(t){return G.test(t)}var W=/^(\w+):\/\/([^/?]*)(\/[^?]+)?\??(.+)?/;function K(t){var e=t.match(W);if(!e)throw new Error("Unable to parse URL object");return{protocol:e[1],authority:e[2],path:e[3]||"/",params:e[4]?e[4].split("&"):[]}}function H(t){var e=t.params.length?"?"+t.params.join("&"):"";return t.protocol+"://"+t.authority+t.path+e}function J(t){if(!t)return null;var e=t.split(".");if(!e||3!==e.length)return null;try{return JSON.parse(decodeURIComponent(self.atob(e[1]).split("").map(function(t){return"%"+("00"+t.charCodeAt(0).toString(16)).slice(-2)}).join("")))}catch(t){return null}}var Y=function(t){this.type=t,this.anonId=null,this.eventData={},this.queue=[],this.pendingRequest=null};Y.prototype.getStorageKey=function(t){var e,r=J(F.ACCESS_TOKEN);return e=r&&r.u?self.btoa(encodeURIComponent(r.u).replace(/%([0-9A-F]{2})/g,function(t,e){return String.fromCharCode(Number("0x"+e))})):F.ACCESS_TOKEN||"",t?"mapbox.eventData."+t+":"+e:"mapbox.eventData:"+e},Y.prototype.fetchEventData=function(){var t=z("localStorage"),e=this.getStorageKey(),r=this.getStorageKey("uuid");if(t)try{var i=self.localStorage.getItem(e);i&&(this.eventData=JSON.parse(i));var n=self.localStorage.getItem(r);n&&(this.anonId=n)}catch(t){b("Unable to read from LocalStorage")}},Y.prototype.saveEventData=function(){var t=z("localStorage"),e=this.getStorageKey(),r=this.getStorageKey("uuid");if(t)try{self.localStorage.setItem(r,this.anonId),Object.keys(this.eventData).length>=1&&self.localStorage.setItem(e,JSON.stringify(this.eventData))}catch(t){b("Unable to write to LocalStorage")}},Y.prototype.processRequests=function(t){},Y.prototype.postEvent=function(t,e,r,i){var n=this;if(F.EVENTS_URL){var o=K(F.EVENTS_URL);o.params.push("access_token="+(i||F.ACCESS_TOKEN||""));var a={event:this.type,created:new Date(t).toISOString(),sdkIdentifier:"mapbox-gl-js",sdkVersion:"1.10.1",skuId:j,userId:this.anonId},s=e?c(a,e):a,l={url:H(o),headers:{"Content-Type":"text/plain"},body:JSON.stringify([s])};this.pendingRequest=vt(l,function(t){n.pendingRequest=null,r(t),n.saveEventData(),n.processRequests(i)})}},Y.prototype.queueRequest=function(t,e){this.queue.push(t),this.processRequests(e)};var Q,$,tt=function(t){function e(){t.call(this,"map.load"),this.success={},this.skuToken=""}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.postMapLoadEvent=function(t,e,r,i){this.skuToken=r,(F.EVENTS_URL&&i||F.ACCESS_TOKEN&&Array.isArray(t)&&t.some(function(t){return Z(t)||X(t)}))&&this.queueRequest({id:e,timestamp:Date.now()},i)},e.prototype.processRequests=function(t){var e=this;if(!this.pendingRequest&&0!==this.queue.length){var r=this.queue.shift(),i=r.id,n=r.timestamp;i&&this.success[i]||(this.anonId||this.fetchEventData(),d(this.anonId)||(this.anonId=f()),this.postEvent(n,{skuToken:this.skuToken},function(t){t||i&&(e.success[i]=!0)},t))}},e}(Y),et=new(function(t){function e(e){t.call(this,"appUserTurnstile"),this._customAccessToken=e}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.postTurnstileEvent=function(t,e){F.EVENTS_URL&&F.ACCESS_TOKEN&&Array.isArray(t)&&t.some(function(t){return Z(t)||X(t)})&&this.queueRequest(Date.now(),e)},e.prototype.processRequests=function(t){var e=this;if(!this.pendingRequest&&0!==this.queue.length){this.anonId&&this.eventData.lastSuccess&&this.eventData.tokenU||this.fetchEventData();var r=J(F.ACCESS_TOKEN),i=r?r.u:F.ACCESS_TOKEN,n=i!==this.eventData.tokenU;d(this.anonId)||(this.anonId=f(),n=!0);var o=this.queue.shift();if(this.eventData.lastSuccess){var a=new Date(this.eventData.lastSuccess),s=new Date(o),l=(o-this.eventData.lastSuccess)/864e5;n=n||l>=1||l<-1||a.getDate()!==s.getDate()}else n=!0;if(!n)return this.processRequests();this.postEvent(o,{"enabled.telemetry":!1},function(t){t||(e.eventData.lastSuccess=o,e.eventData.tokenU=i)},t)}},e}(Y)),rt=et.postTurnstileEvent.bind(et),it=new tt,nt=it.postMapLoadEvent.bind(it),ot=500,at=50;function st(){self.caches&&!Q&&(Q=self.caches.open("mapbox-tiles"))}function lt(t){var e=t.indexOf("?");return e<0?t:t.slice(0,e)}var ut,ct=1/0;function pt(){return null==ut&&(ut=self.OffscreenCanvas&&new self.OffscreenCanvas(1,1).getContext("2d")&&"function"==typeof self.createImageBitmap),ut}var ht={Unknown:"Unknown",Style:"Style",Source:"Source",Tile:"Tile",Glyphs:"Glyphs",SpriteImage:"SpriteImage",SpriteJSON:"SpriteJSON",Image:"Image"};"function"==typeof Object.freeze&&Object.freeze(ht);var ft,dt,mt=function(t){function e(e,r,i){401===r&&X(i)&&(e+=": you may have provided an invalid Mapbox access token. See https://www.mapbox.com/api-documentation/#access-tokens-and-token-scopes"),t.call(this,e),this.status=r,this.url=i,this.name=this.constructor.name,this.message=e}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.toString=function(){return this.name+": "+this.message+" ("+this.status+"): "+this.url},e}(Error),yt=T()?function(){return self.worker&&self.worker.referrer}:function(){return("blob:"===self.location.protocol?self.parent:self).location.href},gt=function(t,e){if(!(/^file:/.test(r=t.url)||/^file:/.test(yt())&&!/^\w+:/.test(r))){if(self.fetch&&self.Request&&self.AbortController&&self.Request.prototype.hasOwnProperty("signal"))return function(t,e){var r,i=new self.AbortController,n=new self.Request(t.url,{method:t.method||"GET",body:t.body,credentials:t.credentials,headers:t.headers,referrer:yt(),signal:i.signal}),o=!1,a=!1,s=(r=n.url).indexOf("sku=")>0&&X(r);"json"===t.type&&n.headers.set("Accept","application/json");var l=function(r,i,o){if(!a){if(r&&"SecurityError"!==r.message&&b(r),i&&o)return u(i);var l=Date.now();self.fetch(n).then(function(r){if(r.ok){var i=s?r.clone():null;return u(r,i,l)}return e(new mt(r.statusText,r.status,t.url))}).catch(function(t){20!==t.code&&e(new Error(t.message))})}},u=function(r,i,s){("arrayBuffer"===t.type?r.arrayBuffer():"json"===t.type?r.json():r.text()).then(function(t){a||(i&&s&&function(t,e,r){if(st(),Q){var i={status:e.status,statusText:e.statusText,headers:new self.Headers};e.headers.forEach(function(t,e){return i.headers.set(e,t)});var n=I(e.headers.get("Cache-Control")||"");n["no-store"]||(n["max-age"]&&i.headers.set("Expires",new Date(r+1e3*n["max-age"]).toUTCString()),new Date(i.headers.get("Expires")).getTime()-r<42e4||function(t,e){if(void 0===$)try{new Response(new ReadableStream),$=!0}catch(t){$=!1}$?e(t.body):t.blob().then(e)}(e,function(e){var r=new self.Response(e,i);st(),Q&&Q.then(function(e){return e.put(lt(t.url),r)}).catch(function(t){return b(t.message)})}))}}(n,i,s),o=!0,e(null,t,r.headers.get("Cache-Control"),r.headers.get("Expires")))}).catch(function(t){a||e(new Error(t.message))})};return s?function(t,e){if(st(),!Q)return e(null);var r=lt(t.url);Q.then(function(t){t.match(r).then(function(i){var n=function(t){if(!t)return!1;var e=new Date(t.headers.get("Expires")||0),r=I(t.headers.get("Cache-Control")||"");return e>Date.now()&&!r["no-cache"]}(i);t.delete(r),n&&t.put(r,i.clone()),e(null,i,n)}).catch(e)}).catch(e)}(n,l):l(null,null),{cancel:function(){a=!0,o||i.abort()}}}(t,e);if(T()&&self.worker&&self.worker.actor)return self.worker.actor.send("getResource",t,e,void 0,!0)}var r;return function(t,e){var r=new self.XMLHttpRequest;for(var i in r.open(t.method||"GET",t.url,!0),"arrayBuffer"===t.type&&(r.responseType="arraybuffer"),t.headers)r.setRequestHeader(i,t.headers[i]);return"json"===t.type&&(r.responseType="text",r.setRequestHeader("Accept","application/json")),r.withCredentials="include"===t.credentials,r.onerror=function(){e(new Error(r.statusText))},r.onload=function(){if((r.status>=200&&r.status<300||0===r.status)&&null!==r.response){var i=r.response;if("json"===t.type)try{i=JSON.parse(r.response)}catch(t){return e(t)}e(null,i,r.getResponseHeader("Cache-Control"),r.getResponseHeader("Expires"))}else e(new mt(r.statusText,r.status,t.url))},r.send(t.body),{cancel:function(){return r.abort()}}}(t,e)},_t=function(t,e){return gt(c(t,{type:"arrayBuffer"}),e)},vt=function(t,e){return gt(c(t,{method:"POST"}),e)};ft=[],dt=0;var xt=function(t,e){if(O.supported&&(t.headers||(t.headers={}),t.headers.accept="image/webp,*/*"),dt>=F.MAX_PARALLEL_IMAGE_REQUESTS){var r={requestParameters:t,callback:e,cancelled:!1,cancel:function(){this.cancelled=!0}};return ft.push(r),r}dt++;var i=!1,n=function(){if(!i)for(i=!0,dt--;ft.length&&dt<F.MAX_PARALLEL_IMAGE_REQUESTS;){var t=ft.shift();t.cancelled||(t.cancel=xt(t.requestParameters,t.callback).cancel)}},o=_t(t,function(t,r,i,o){n(),t?e(t):r&&(pt()?function(t,e){var r=new self.Blob([new Uint8Array(t)],{type:"image/png"});self.createImageBitmap(r).then(function(t){e(null,t)}).catch(function(t){e(new Error("Could not load image because of "+t.message+". Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported."))})}(r,e):function(t,e,r,i){var n=new self.Image,o=self.URL;n.onload=function(){e(null,n),o.revokeObjectURL(n.src)},n.onerror=function(){return e(new Error("Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported."))};var a=new self.Blob([new Uint8Array(t)],{type:"image/png"});n.cacheControl=r,n.expires=i,n.src=t.byteLength?o.createObjectURL(a):"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII="}(r,e,i,o))});return{cancel:function(){o.cancel(),n()}}};function bt(t,e,r){r[t]&&-1!==r[t].indexOf(e)||(r[t]=r[t]||[],r[t].push(e))}function wt(t,e,r){if(r&&r[t]){var i=r[t].indexOf(e);-1!==i&&r[t].splice(i,1)}}var St=function(t,e){void 0===e&&(e={}),c(this,e),this.type=t},Tt=function(t){function e(e,r){void 0===r&&(r={}),t.call(this,"error",c({error:e},r))}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e}(St),It=function(){};It.prototype.on=function(t,e){return this._listeners=this._listeners||{},bt(t,e,this._listeners),this},It.prototype.off=function(t,e){return wt(t,e,this._listeners),wt(t,e,this._oneTimeListeners),this},It.prototype.once=function(t,e){return this._oneTimeListeners=this._oneTimeListeners||{},bt(t,e,this._oneTimeListeners),this},It.prototype.fire=function(t,e){"string"==typeof t&&(t=new St(t,e||{}));var r=t.type;if(this.listens(r)){t.target=this;for(var i=0,n=this._listeners&&this._listeners[r]?this._listeners[r].slice():[];i<n.length;i+=1)n[i].call(this,t);for(var o=0,a=this._oneTimeListeners&&this._oneTimeListeners[r]?this._oneTimeListeners[r].slice():[];o<a.length;o+=1){var s=a[o];wt(r,s,this._oneTimeListeners),s.call(this,t)}var l=this._eventedParent;l&&(c(t,"function"==typeof this._eventedParentData?this._eventedParentData():this._eventedParentData),l.fire(t))}else t instanceof Tt&&console.error(t.error);return this},It.prototype.listens=function(t){return this._listeners&&this._listeners[t]&&this._listeners[t].length>0||this._oneTimeListeners&&this._oneTimeListeners[t]&&this._oneTimeListeners[t].length>0||this._eventedParent&&this._eventedParent.listens(t)},It.prototype.setEventedParent=function(t,e){return this._eventedParent=t,this._eventedParentData=e,this};var Et={$version:8,$root:{version:{required:!0,type:"enum",values:[8]},name:{type:"string"},metadata:{type:"*"},center:{type:"array",value:"number"},zoom:{type:"number"},bearing:{type:"number",default:0,period:360,units:"degrees"},pitch:{type:"number",default:0,units:"degrees"},light:{type:"light"},sources:{required:!0,type:"sources"},sprite:{type:"string"},glyphs:{type:"string"},transition:{type:"transition"},layers:{required:!0,type:"array",value:"layer"}},sources:{"*":{type:"source"}},source:["source_vector","source_raster","source_raster_dem","source_geojson","source_video","source_image"],source_vector:{type:{required:!0,type:"enum",values:{vector:{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},scheme:{type:"enum",values:{xyz:{},tms:{}},default:"xyz"},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},attribution:{type:"string"},promoteId:{type:"promoteId"},"*":{type:"*"}},source_raster:{type:{required:!0,type:"enum",values:{raster:{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},tileSize:{type:"number",default:512,units:"pixels"},scheme:{type:"enum",values:{xyz:{},tms:{}},default:"xyz"},attribution:{type:"string"},"*":{type:"*"}},source_raster_dem:{type:{required:!0,type:"enum",values:{"raster-dem":{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},tileSize:{type:"number",default:512,units:"pixels"},attribution:{type:"string"},encoding:{type:"enum",values:{terrarium:{},mapbox:{}},default:"mapbox"},"*":{type:"*"}},source_geojson:{type:{required:!0,type:"enum",values:{geojson:{}}},data:{type:"*"},maxzoom:{type:"number",default:18},attribution:{type:"string"},buffer:{type:"number",default:128,maximum:512,minimum:0},tolerance:{type:"number",default:.375},cluster:{type:"boolean",default:!1},clusterRadius:{type:"number",default:50,minimum:0},clusterMaxZoom:{type:"number"},clusterProperties:{type:"*"},lineMetrics:{type:"boolean",default:!1},generateId:{type:"boolean",default:!1},promoteId:{type:"promoteId"}},source_video:{type:{required:!0,type:"enum",values:{video:{}}},urls:{required:!0,type:"array",value:"string"},coordinates:{required:!0,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},source_image:{type:{required:!0,type:"enum",values:{image:{}}},url:{required:!0,type:"string"},coordinates:{required:!0,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},layer:{id:{type:"string",required:!0},type:{type:"enum",values:{fill:{},line:{},symbol:{},circle:{},heatmap:{},"fill-extrusion":{},raster:{},hillshade:{},background:{}},required:!0},metadata:{type:"*"},source:{type:"string"},"source-layer":{type:"string"},minzoom:{type:"number",minimum:0,maximum:24},maxzoom:{type:"number",minimum:0,maximum:24},filter:{type:"filter"},layout:{type:"layout"},paint:{type:"paint"}},layout:["layout_fill","layout_line","layout_circle","layout_heatmap","layout_fill-extrusion","layout_symbol","layout_raster","layout_hillshade","layout_background"],layout_background:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_fill:{"fill-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_circle:{"circle-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_heatmap:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},"layout_fill-extrusion":{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_line:{"line-cap":{type:"enum",values:{butt:{},round:{},square:{}},default:"butt",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"line-join":{type:"enum",values:{bevel:{},round:{},miter:{}},default:"miter",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"line-miter-limit":{type:"number",default:2,requires:[{"line-join":"miter"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-round-limit":{type:"number",default:1.05,requires:[{"line-join":"round"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_symbol:{"symbol-placement":{type:"enum",values:{point:{},line:{},"line-center":{}},default:"point",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-spacing":{type:"number",default:250,minimum:1,units:"pixels",requires:[{"symbol-placement":"line"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"symbol-avoid-edges":{type:"boolean",default:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"symbol-z-order":{type:"enum",values:{auto:{},"viewport-y":{},source:{}},default:"auto",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-allow-overlap":{type:"boolean",default:!1,requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-ignore-placement":{type:"boolean",default:!1,requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-optional":{type:"boolean",default:!1,requires:["icon-image","text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-rotation-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-size":{type:"number",default:1,minimum:0,units:"factor of the original icon size",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-text-fit":{type:"enum",values:{none:{},width:{},height:{},both:{}},default:"none",requires:["icon-image","text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-text-fit-padding":{type:"array",value:"number",length:4,default:[0,0,0,0],units:"pixels",requires:["icon-image","text-field",{"icon-text-fit":["both","width","height"]}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-image":{type:"resolvedImage",tokens:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-rotate":{type:"number",default:0,period:360,units:"degrees",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-padding":{type:"number",default:2,minimum:0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-keep-upright":{type:"boolean",default:!1,requires:["icon-image",{"icon-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-offset":{type:"array",value:"number",length:2,default:[0,0],requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-anchor":{type:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},default:"center",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-pitch-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-pitch-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotation-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-field":{type:"formatted",default:"",tokens:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-font":{type:"array",value:"string",default:["Open Sans Regular","Arial Unicode MS Regular"],requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-size":{type:"number",default:16,minimum:0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-width":{type:"number",default:10,minimum:0,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-line-height":{type:"number",default:1.2,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-letter-spacing":{type:"number",default:0,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-justify":{type:"enum",values:{auto:{},left:{},center:{},right:{}},default:"center",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-radial-offset":{type:"number",units:"ems",default:0,requires:["text-field"],"property-type":"data-driven",expression:{interpolated:!0,parameters:["zoom","feature"]}},"text-variable-anchor":{type:"array",value:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-anchor":{type:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},default:"center",requires:["text-field",{"!":"text-variable-anchor"}],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-angle":{type:"number",default:45,units:"degrees",requires:["text-field",{"symbol-placement":["line","line-center"]}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-writing-mode":{type:"array",value:"enum",values:{horizontal:{},vertical:{}},requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotate":{type:"number",default:0,period:360,units:"degrees",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-padding":{type:"number",default:2,minimum:0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-keep-upright":{type:"boolean",default:!0,requires:["text-field",{"text-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-transform":{type:"enum",values:{none:{},uppercase:{},lowercase:{}},default:"none",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-offset":{type:"array",value:"number",units:"ems",length:2,default:[0,0],requires:["text-field",{"!":"text-radial-offset"}],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-allow-overlap":{type:"boolean",default:!1,requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-ignore-placement":{type:"boolean",default:!1,requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-optional":{type:"boolean",default:!1,requires:["text-field","icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_raster:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_hillshade:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},filter:{type:"array",value:"*"},filter_operator:{type:"enum",values:{"==":{},"!=":{},">":{},">=":{},"<":{},"<=":{},in:{},"!in":{},all:{},any:{},none:{},has:{},"!has":{},within:{}}},geometry_type:{type:"enum",values:{Point:{},LineString:{},Polygon:{}}},function:{expression:{type:"expression"},stops:{type:"array",value:"function_stop"},base:{type:"number",default:1,minimum:0},property:{type:"string",default:"$zoom"},type:{type:"enum",values:{identity:{},exponential:{},interval:{},categorical:{}},default:"exponential"},colorSpace:{type:"enum",values:{rgb:{},lab:{},hcl:{}},default:"rgb"},default:{type:"*",required:!1}},function_stop:{type:"array",minimum:0,maximum:24,value:["number","color"],length:2},expression:{type:"array",value:"*",minimum:1},expression_name:{type:"enum",values:{let:{group:"Variable binding"},var:{group:"Variable binding"},literal:{group:"Types"},array:{group:"Types"},at:{group:"Lookup"},in:{group:"Lookup"},"index-of":{group:"Lookup"},slice:{group:"Lookup"},case:{group:"Decision"},match:{group:"Decision"},coalesce:{group:"Decision"},step:{group:"Ramps, scales, curves"},interpolate:{group:"Ramps, scales, curves"},"interpolate-hcl":{group:"Ramps, scales, curves"},"interpolate-lab":{group:"Ramps, scales, curves"},ln2:{group:"Math"},pi:{group:"Math"},e:{group:"Math"},typeof:{group:"Types"},string:{group:"Types"},number:{group:"Types"},boolean:{group:"Types"},object:{group:"Types"},collator:{group:"Types"},format:{group:"Types"},image:{group:"Types"},"number-format":{group:"Types"},"to-string":{group:"Types"},"to-number":{group:"Types"},"to-boolean":{group:"Types"},"to-rgba":{group:"Color"},"to-color":{group:"Types"},rgb:{group:"Color"},rgba:{group:"Color"},get:{group:"Lookup"},has:{group:"Lookup"},length:{group:"Lookup"},properties:{group:"Feature data"},"feature-state":{group:"Feature data"},"geometry-type":{group:"Feature data"},id:{group:"Feature data"},zoom:{group:"Zoom"},"heatmap-density":{group:"Heatmap"},"line-progress":{group:"Feature data"},accumulated:{group:"Feature data"},"+":{group:"Math"},"*":{group:"Math"},"-":{group:"Math"},"/":{group:"Math"},"%":{group:"Math"},"^":{group:"Math"},sqrt:{group:"Math"},log10:{group:"Math"},ln:{group:"Math"},log2:{group:"Math"},sin:{group:"Math"},cos:{group:"Math"},tan:{group:"Math"},asin:{group:"Math"},acos:{group:"Math"},atan:{group:"Math"},min:{group:"Math"},max:{group:"Math"},round:{group:"Math"},abs:{group:"Math"},ceil:{group:"Math"},floor:{group:"Math"},distance:{group:"Math"},"==":{group:"Decision"},"!=":{group:"Decision"},">":{group:"Decision"},"<":{group:"Decision"},">=":{group:"Decision"},"<=":{group:"Decision"},all:{group:"Decision"},any:{group:"Decision"},"!":{group:"Decision"},within:{group:"Decision"},"is-supported-script":{group:"String"},upcase:{group:"String"},downcase:{group:"String"},concat:{group:"String"},"resolved-locale":{group:"String"}}},light:{anchor:{type:"enum",default:"viewport",values:{map:{},viewport:{}},"property-type":"data-constant",transition:!1,expression:{interpolated:!1,parameters:["zoom"]}},position:{type:"array",default:[1.15,210,30],length:3,value:"number","property-type":"data-constant",transition:!0,expression:{interpolated:!0,parameters:["zoom"]}},color:{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},intensity:{type:"number","property-type":"data-constant",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0}},paint:["paint_fill","paint_line","paint_circle","paint_heatmap","paint_fill-extrusion","paint_symbol","paint_raster","paint_hillshade","paint_background"],paint_fill:{"fill-antialias":{type:"boolean",default:!0,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"fill-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-outline-color":{type:"color",transition:!0,requires:[{"!":"fill-pattern"},{"fill-antialias":!0}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["fill-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"}},"paint_fill-extrusion":{"fill-extrusion-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"fill-extrusion-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["fill-extrusion-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"fill-extrusion-height":{type:"number",default:0,minimum:0,units:"meters",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-base":{type:"number",default:0,minimum:0,units:"meters",transition:!0,requires:["fill-extrusion-height"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-vertical-gradient":{type:"boolean",default:!0,transition:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_line:{"line-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"line-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["line-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"line-width":{type:"number",default:1,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-gap-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-offset":{type:"number",default:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-dasharray":{type:"array",value:"number",minimum:0,transition:!0,units:"line widths",requires:[{"!":"line-pattern"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"cross-faded"},"line-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"line-gradient":{type:"color",transition:!1,requires:[{"!":"line-dasharray"},{"!":"line-pattern"},{source:"geojson",has:{lineMetrics:!0}}],expression:{interpolated:!0,parameters:["line-progress"]},"property-type":"color-ramp"}},paint_circle:{"circle-radius":{type:"number",default:5,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-blur":{type:"number",default:0,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"circle-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["circle-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-scale":{type:"enum",values:{map:{},viewport:{}},default:"map",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-alignment":{type:"enum",values:{map:{},viewport:{}},default:"viewport",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-stroke-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"}},paint_heatmap:{"heatmap-radius":{type:"number",default:30,minimum:1,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-weight":{type:"number",default:1,minimum:0,transition:!1,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-intensity":{type:"number",default:1,minimum:0,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"heatmap-color":{type:"color",default:["interpolate",["linear"],["heatmap-density"],0,"rgba(0, 0, 255, 0)",.1,"royalblue",.3,"cyan",.5,"lime",.7,"yellow",1,"red"],transition:!1,expression:{interpolated:!0,parameters:["heatmap-density"]},"property-type":"color-ramp"},"heatmap-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_symbol:{"icon-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-color":{type:"color",default:"#000000",transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["icon-image","icon-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-color":{type:"color",default:"#000000",transition:!0,overridable:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["text-field","text-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_raster:{"raster-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-hue-rotate":{type:"number",default:0,period:360,transition:!0,units:"degrees",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-min":{type:"number",default:0,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-max":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-saturation":{type:"number",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-contrast":{type:"number",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-resampling":{type:"enum",values:{linear:{},nearest:{}},default:"linear",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"raster-fade-duration":{type:"number",default:300,minimum:0,transition:!1,units:"milliseconds",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_hillshade:{"hillshade-illumination-direction":{type:"number",default:335,minimum:0,maximum:359,transition:!1,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-illumination-anchor":{type:"enum",values:{map:{},viewport:{}},default:"viewport",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-exaggeration":{type:"number",default:.5,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-shadow-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-highlight-color":{type:"color",default:"#FFFFFF",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-accent-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_background:{"background-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"background-pattern"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"background-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"cross-faded"},"background-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},transition:{duration:{type:"number",default:300,minimum:0,units:"milliseconds"},delay:{type:"number",default:0,minimum:0,units:"milliseconds"}},"property-type":{"data-driven":{type:"property-type"},"cross-faded":{type:"property-type"},"cross-faded-data-driven":{type:"property-type"},"color-ramp":{type:"property-type"},"data-constant":{type:"property-type"},constant:{type:"property-type"}},promoteId:{"*":{type:"string"}}},At=function(t,e,r,i){this.message=(t?t+": ":"")+r,i&&(this.identifier=i),null!=e&&e.__line__&&(this.line=e.__line__)};function zt(t){var e=t.value;return e?[new At(t.key,e,"constants have been deprecated as of v8")]:[]}function Pt(t){for(var e=[],r=arguments.length-1;r-- >0;)e[r]=arguments[r+1];for(var i=0,n=e;i<n.length;i+=1){var o=n[i];for(var a in o)t[a]=o[a]}return t}function Ct(t){return t instanceof Number||t instanceof String||t instanceof Boolean?t.valueOf():t}function kt(t){if(Array.isArray(t))return t.map(kt);if(t instanceof Object&&!(t instanceof Number||t instanceof String||t instanceof Boolean)){var e={};for(var r in t)e[r]=kt(t[r]);return e}return Ct(t)}var Mt=function(t){function e(e,r){t.call(this,r),this.message=r,this.key=e}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e}(Error),Dt=function(t,e){void 0===e&&(e=[]),this.parent=t,this.bindings={};for(var r=0,i=e;r<i.length;r+=1){var n=i[r];this.bindings[n[0]]=n[1]}};Dt.prototype.concat=function(t){return new Dt(this,t)},Dt.prototype.get=function(t){if(this.bindings[t])return this.bindings[t];if(this.parent)return this.parent.get(t);throw new Error(t+" not found in scope.")},Dt.prototype.has=function(t){return!!this.bindings[t]||!!this.parent&&this.parent.has(t)};var Lt={kind:"null"},Bt={kind:"number"},Rt={kind:"string"},Ft={kind:"boolean"},Ot={kind:"color"},Ut={kind:"object"},Vt={kind:"value"},Nt={kind:"collator"},jt={kind:"formatted"},qt={kind:"resolvedImage"};function Zt(t,e){return{kind:"array",itemType:t,N:e}}function Gt(t){if("array"===t.kind){var e=Gt(t.itemType);return"number"==typeof t.N?"array<"+e+", "+t.N+">":"value"===t.itemType.kind?"array":"array<"+e+">"}return t.kind}var Xt=[Lt,Bt,Rt,Ft,Ot,jt,Ut,Zt(Vt),qt];function Wt(t,e){if("error"===e.kind)return null;if("array"===t.kind){if("array"===e.kind&&(0===e.N&&"value"===e.itemType.kind||!Wt(t.itemType,e.itemType))&&("number"!=typeof t.N||t.N===e.N))return null}else{if(t.kind===e.kind)return null;if("value"===t.kind)for(var r=0,i=Xt;r<i.length;r+=1)if(!Wt(i[r],e))return null}return"Expected "+Gt(t)+" but found "+Gt(e)+" instead."}function Kt(t,e){return e.some(function(e){return e.kind===t.kind})}function Ht(t,e){return e.some(function(e){return"null"===e?null===t:"array"===e?Array.isArray(t):"object"===e?t&&!Array.isArray(t)&&"object"==typeof t:e===typeof t})}var Jt=e(function(t,e){var r={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],rebeccapurple:[102,51,153,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]};function i(t){return(t=Math.round(t))<0?0:t>255?255:t}function n(t){return i("%"===t[t.length-1]?parseFloat(t)/100*255:parseInt(t))}function o(t){return(e="%"===t[t.length-1]?parseFloat(t)/100:parseFloat(t))<0?0:e>1?1:e;var e}function a(t,e,r){return r<0?r+=1:r>1&&(r-=1),6*r<1?t+(e-t)*r*6:2*r<1?e:3*r<2?t+(e-t)*(2/3-r)*6:t}try{e.parseCSSColor=function(t){var e,s=t.replace(/ /g,"").toLowerCase();if(s in r)return r[s].slice();if("#"===s[0])return 4===s.length?(e=parseInt(s.substr(1),16))>=0&&e<=4095?[(3840&e)>>4|(3840&e)>>8,240&e|(240&e)>>4,15&e|(15&e)<<4,1]:null:7===s.length&&(e=parseInt(s.substr(1),16))>=0&&e<=16777215?[(16711680&e)>>16,(65280&e)>>8,255&e,1]:null;var l=s.indexOf("("),u=s.indexOf(")");if(-1!==l&&u+1===s.length){var c=s.substr(0,l),p=s.substr(l+1,u-(l+1)).split(","),h=1;switch(c){case"rgba":if(4!==p.length)return null;h=o(p.pop());case"rgb":return 3!==p.length?null:[n(p[0]),n(p[1]),n(p[2]),h];case"hsla":if(4!==p.length)return null;h=o(p.pop());case"hsl":if(3!==p.length)return null;var f=(parseFloat(p[0])%360+360)%360/360,d=o(p[1]),m=o(p[2]),y=m<=.5?m*(d+1):m+d-m*d,g=2*m-y;return[i(255*a(g,y,f+1/3)),i(255*a(g,y,f)),i(255*a(g,y,f-1/3)),h];default:return null}}return null}}catch(t){}}).parseCSSColor,Yt=function(t,e,r,i){void 0===i&&(i=1),this.r=t,this.g=e,this.b=r,this.a=i};Yt.parse=function(t){if(t){if(t instanceof Yt)return t;if("string"==typeof t){var e=Jt(t);if(e)return new Yt(e[0]/255*e[3],e[1]/255*e[3],e[2]/255*e[3],e[3])}}},Yt.prototype.toString=function(){var t=this.toArray(),e=t[1],r=t[2],i=t[3];return"rgba("+Math.round(t[0])+","+Math.round(e)+","+Math.round(r)+","+i+")"},Yt.prototype.toArray=function(){var t=this.a;return 0===t?[0,0,0,0]:[255*this.r/t,255*this.g/t,255*this.b/t,t]},Yt.black=new Yt(0,0,0,1),Yt.white=new Yt(1,1,1,1),Yt.transparent=new Yt(0,0,0,0),Yt.red=new Yt(1,0,0,1);var Qt=function(t,e,r){this.sensitivity=t?e?"variant":"case":e?"accent":"base",this.locale=r,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:"search"})};Qt.prototype.compare=function(t,e){return this.collator.compare(t,e)},Qt.prototype.resolvedLocale=function(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale};var $t=function(t,e,r,i,n){this.text=t,this.image=e,this.scale=r,this.fontStack=i,this.textColor=n},te=function(t){this.sections=t};te.fromString=function(t){return new te([new $t(t,null,null,null,null)])},te.prototype.isEmpty=function(){return 0===this.sections.length||!this.sections.some(function(t){return 0!==t.text.length||t.image&&0!==t.image.name.length})},te.factory=function(t){return t instanceof te?t:te.fromString(t)},te.prototype.toString=function(){return 0===this.sections.length?"":this.sections.map(function(t){return t.text}).join("")},te.prototype.serialize=function(){for(var t=["format"],e=0,r=this.sections;e<r.length;e+=1){var i=r[e];if(i.image)t.push(["image",i.image.name]);else{t.push(i.text);var n={};i.fontStack&&(n["text-font"]=["literal",i.fontStack.split(",")]),i.scale&&(n["font-scale"]=i.scale),i.textColor&&(n["text-color"]=["rgba"].concat(i.textColor.toArray())),t.push(n)}}return t};var ee=function(t){this.name=t.name,this.available=t.available};function re(t,e,r,i){return"number"==typeof t&&t>=0&&t<=255&&"number"==typeof e&&e>=0&&e<=255&&"number"==typeof r&&r>=0&&r<=255?void 0===i||"number"==typeof i&&i>=0&&i<=1?null:"Invalid rgba value ["+[t,e,r,i].join(", ")+"]: 'a' must be between 0 and 1.":"Invalid rgba value ["+("number"==typeof i?[t,e,r,i]:[t,e,r]).join(", ")+"]: 'r', 'g', and 'b' must be between 0 and 255."}function ie(t){if(null===t)return!0;if("string"==typeof t)return!0;if("boolean"==typeof t)return!0;if("number"==typeof t)return!0;if(t instanceof Yt)return!0;if(t instanceof Qt)return!0;if(t instanceof te)return!0;if(t instanceof ee)return!0;if(Array.isArray(t)){for(var e=0,r=t;e<r.length;e+=1)if(!ie(r[e]))return!1;return!0}if("object"==typeof t){for(var i in t)if(!ie(t[i]))return!1;return!0}return!1}function ne(t){if(null===t)return Lt;if("string"==typeof t)return Rt;if("boolean"==typeof t)return Ft;if("number"==typeof t)return Bt;if(t instanceof Yt)return Ot;if(t instanceof Qt)return Nt;if(t instanceof te)return jt;if(t instanceof ee)return qt;if(Array.isArray(t)){for(var e,r=t.length,i=0,n=t;i<n.length;i+=1){var o=ne(n[i]);if(e){if(e===o)continue;e=Vt;break}e=o}return Zt(e||Vt,r)}return Ut}function oe(t){var e=typeof t;return null===t?"":"string"===e||"number"===e||"boolean"===e?String(t):t instanceof Yt||t instanceof te||t instanceof ee?t.toString():JSON.stringify(t)}ee.prototype.toString=function(){return this.name},ee.fromString=function(t){return t?new ee({name:t,available:!1}):null},ee.prototype.serialize=function(){return["image",this.name]};var ae=function(t,e){this.type=t,this.value=e};ae.parse=function(t,e){if(2!==t.length)return e.error("'literal' expression requires exactly one argument, but found "+(t.length-1)+" instead.");if(!ie(t[1]))return e.error("invalid value");var r=t[1],i=ne(r),n=e.expectedType;return"array"!==i.kind||0!==i.N||!n||"array"!==n.kind||"number"==typeof n.N&&0!==n.N||(i=n),new ae(i,r)},ae.prototype.evaluate=function(){return this.value},ae.prototype.eachChild=function(){},ae.prototype.outputDefined=function(){return!0},ae.prototype.serialize=function(){return"array"===this.type.kind||"object"===this.type.kind?["literal",this.value]:this.value instanceof Yt?["rgba"].concat(this.value.toArray()):this.value instanceof te?this.value.serialize():this.value};var se=function(t){this.name="ExpressionEvaluationError",this.message=t};se.prototype.toJSON=function(){return this.message};var le={string:Rt,number:Bt,boolean:Ft,object:Ut},ue=function(t,e){this.type=t,this.args=e};ue.parse=function(t,e){if(t.length<2)return e.error("Expected at least one argument.");var r,i=1,n=t[0];if("array"===n){var o,a;if(t.length>2){var s=t[1];if("string"!=typeof s||!(s in le)||"object"===s)return e.error('The item type argument of "array" must be one of string, number, boolean',1);o=le[s],i++}else o=Vt;if(t.length>3){if(null!==t[2]&&("number"!=typeof t[2]||t[2]<0||t[2]!==Math.floor(t[2])))return e.error('The length argument to "array" must be a positive integer literal',2);a=t[2],i++}r=Zt(o,a)}else r=le[n];for(var l=[];i<t.length;i++){var u=e.parse(t[i],i,Vt);if(!u)return null;l.push(u)}return new ue(r,l)},ue.prototype.evaluate=function(t){for(var e=0;e<this.args.length;e++){var r=this.args[e].evaluate(t);if(!Wt(this.type,ne(r)))return r;if(e===this.args.length-1)throw new se("Expected value to be of type "+Gt(this.type)+", but found "+Gt(ne(r))+" instead.")}return null},ue.prototype.eachChild=function(t){this.args.forEach(t)},ue.prototype.outputDefined=function(){return this.args.every(function(t){return t.outputDefined()})},ue.prototype.serialize=function(){var t=this.type,e=[t.kind];if("array"===t.kind){var r=t.itemType;if("string"===r.kind||"number"===r.kind||"boolean"===r.kind){e.push(r.kind);var i=t.N;("number"==typeof i||this.args.length>1)&&e.push(i)}}return e.concat(this.args.map(function(t){return t.serialize()}))};var ce=function(t){this.type=jt,this.sections=t};ce.parse=function(t,e){if(t.length<2)return e.error("Expected at least one argument.");var r=t[1];if(!Array.isArray(r)&&"object"==typeof r)return e.error("First argument must be an image or text section.");for(var i=[],n=!1,o=1;o<=t.length-1;++o){var a=t[o];if(n&&"object"==typeof a&&!Array.isArray(a)){n=!1;var s=null;if(a["font-scale"]&&!(s=e.parse(a["font-scale"],1,Bt)))return null;var l=null;if(a["text-font"]&&!(l=e.parse(a["text-font"],1,Zt(Rt))))return null;var u=null;if(a["text-color"]&&!(u=e.parse(a["text-color"],1,Ot)))return null;var c=i[i.length-1];c.scale=s,c.font=l,c.textColor=u}else{var p=e.parse(t[o],1,Vt);if(!p)return null;var h=p.type.kind;if("string"!==h&&"value"!==h&&"null"!==h&&"resolvedImage"!==h)return e.error("Formatted text type must be 'string', 'value', 'image' or 'null'.");n=!0,i.push({content:p,scale:null,font:null,textColor:null})}}return new ce(i)},ce.prototype.evaluate=function(t){return new te(this.sections.map(function(e){var r=e.content.evaluate(t);return ne(r)===qt?new $t("",r,null,null,null):new $t(oe(r),null,e.scale?e.scale.evaluate(t):null,e.font?e.font.evaluate(t).join(","):null,e.textColor?e.textColor.evaluate(t):null)}))},ce.prototype.eachChild=function(t){for(var e=0,r=this.sections;e<r.length;e+=1){var i=r[e];t(i.content),i.scale&&t(i.scale),i.font&&t(i.font),i.textColor&&t(i.textColor)}},ce.prototype.outputDefined=function(){return!1},ce.prototype.serialize=function(){for(var t=["format"],e=0,r=this.sections;e<r.length;e+=1){var i=r[e];t.push(i.content.serialize());var n={};i.scale&&(n["font-scale"]=i.scale.serialize()),i.font&&(n["text-font"]=i.font.serialize()),i.textColor&&(n["text-color"]=i.textColor.serialize()),t.push(n)}return t};var pe=function(t){this.type=qt,this.input=t};pe.parse=function(t,e){if(2!==t.length)return e.error("Expected two arguments.");var r=e.parse(t[1],1,Rt);return r?new pe(r):e.error("No image name provided.")},pe.prototype.evaluate=function(t){var e=this.input.evaluate(t),r=ee.fromString(e);return r&&t.availableImages&&(r.available=t.availableImages.indexOf(e)>-1),r},pe.prototype.eachChild=function(t){t(this.input)},pe.prototype.outputDefined=function(){return!1},pe.prototype.serialize=function(){return["image",this.input.serialize()]};var he={"to-boolean":Ft,"to-color":Ot,"to-number":Bt,"to-string":Rt},fe=function(t,e){this.type=t,this.args=e};fe.parse=function(t,e){if(t.length<2)return e.error("Expected at least one argument.");var r=t[0];if(("to-boolean"===r||"to-string"===r)&&2!==t.length)return e.error("Expected one argument.");for(var i=he[r],n=[],o=1;o<t.length;o++){var a=e.parse(t[o],o,Vt);if(!a)return null;n.push(a)}return new fe(i,n)},fe.prototype.evaluate=function(t){if("boolean"===this.type.kind)return Boolean(this.args[0].evaluate(t));if("color"===this.type.kind){for(var e,r,i=0,n=this.args;i<n.length;i+=1){if(r=null,(e=n[i].evaluate(t))instanceof Yt)return e;if("string"==typeof e){var o=t.parseColor(e);if(o)return o}else if(Array.isArray(e)&&!(r=e.length<3||e.length>4?"Invalid rbga value "+JSON.stringify(e)+": expected an array containing either three or four numeric values.":re(e[0],e[1],e[2],e[3])))return new Yt(e[0]/255,e[1]/255,e[2]/255,e[3])}throw new se(r||"Could not parse color from value '"+("string"==typeof e?e:String(JSON.stringify(e)))+"'")}if("number"===this.type.kind){for(var a=null,s=0,l=this.args;s<l.length;s+=1){if(null===(a=l[s].evaluate(t)))return 0;var u=Number(a);if(!isNaN(u))return u}throw new se("Could not convert "+JSON.stringify(a)+" to number.")}return"formatted"===this.type.kind?te.fromString(oe(this.args[0].evaluate(t))):"resolvedImage"===this.type.kind?ee.fromString(oe(this.args[0].evaluate(t))):oe(this.args[0].evaluate(t))},fe.prototype.eachChild=function(t){this.args.forEach(t)},fe.prototype.outputDefined=function(){return this.args.every(function(t){return t.outputDefined()})},fe.prototype.serialize=function(){if("formatted"===this.type.kind)return new ce([{content:this.args[0],scale:null,font:null,textColor:null}]).serialize();if("resolvedImage"===this.type.kind)return new pe(this.args[0]).serialize();var t=["to-"+this.type.kind];return this.eachChild(function(e){t.push(e.serialize())}),t};var de=["Unknown","Point","LineString","Polygon"],me=function(){this.globals=null,this.feature=null,this.featureState=null,this.formattedSection=null,this._parseColorCache={},this.availableImages=null,this.canonical=null};me.prototype.id=function(){return this.feature&&"id"in this.feature?this.feature.id:null},me.prototype.geometryType=function(){return this.feature?"number"==typeof this.feature.type?de[this.feature.type]:this.feature.type:null},me.prototype.geometry=function(){return this.feature&&"geometry"in this.feature?this.feature.geometry:null},me.prototype.canonicalID=function(){return this.canonical},me.prototype.properties=function(){return this.feature&&this.feature.properties||{}},me.prototype.parseColor=function(t){var e=this._parseColorCache[t];return e||(e=this._parseColorCache[t]=Yt.parse(t)),e};var ye=function(t,e,r,i){this.name=t,this.type=e,this._evaluate=r,this.args=i};ye.prototype.evaluate=function(t){return this._evaluate(t,this.args)},ye.prototype.eachChild=function(t){this.args.forEach(t)},ye.prototype.outputDefined=function(){return!1},ye.prototype.serialize=function(){return[this.name].concat(this.args.map(function(t){return t.serialize()}))},ye.parse=function(t,e){var r,i=t[0],n=ye.definitions[i];if(!n)return e.error('Unknown expression "'+i+'". If you wanted a literal array, use ["literal", [...]].',0);for(var o=Array.isArray(n)?n[0]:n.type,a=Array.isArray(n)?[[n[1],n[2]]]:n.overloads,s=a.filter(function(e){var r=e[0];return!Array.isArray(r)||r.length===t.length-1}),l=null,u=0,c=s;u<c.length;u+=1){var p=c[u],h=p[0],f=p[1];l=new Oe(e.registry,e.path,null,e.scope);for(var d=[],m=!1,y=1;y<t.length;y++){var g=t[y],_=Array.isArray(h)?h[y-1]:h.type,v=l.parse(g,1+d.length,_);if(!v){m=!0;break}d.push(v)}if(!m)if(Array.isArray(h)&&h.length!==d.length)l.error("Expected "+h.length+" arguments, but found "+d.length+" instead.");else{for(var x=0;x<d.length;x++){var b=Array.isArray(h)?h[x]:h.type,w=d[x];l.concat(x+1).checkSubtype(b,w.type)}if(0===l.errors.length)return new ye(i,o,f,d)}}if(1===s.length)(r=e.errors).push.apply(r,l.errors);else{for(var S=(s.length?s:a).map(function(t){var e;return e=t[0],Array.isArray(e)?"("+e.map(Gt).join(", ")+")":"("+Gt(e.type)+"...)"}).join(" | "),T=[],I=1;I<t.length;I++){var E=e.parse(t[I],1+T.length);if(!E)return null;T.push(Gt(E.type))}e.error("Expected arguments of type "+S+", but found ("+T.join(", ")+") instead.")}return null},ye.register=function(t,e){for(var r in ye.definitions=e,e)t[r]=ye};var ge=function(t,e,r){this.type=Nt,this.locale=r,this.caseSensitive=t,this.diacriticSensitive=e};function _e(t,e){t[0]=Math.min(t[0],e[0]),t[1]=Math.min(t[1],e[1]),t[2]=Math.max(t[2],e[0]),t[3]=Math.max(t[3],e[1])}function ve(t,e){return!(t[0]<=e[0]||t[2]>=e[2]||t[1]<=e[1]||t[3]>=e[3])}function xe(t,e){var r=(180+t[0])/360,i=(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+t[1]*Math.PI/360)))/360,n=Math.pow(2,e.z);return[Math.round(r*n*8192),Math.round(i*n*8192)]}function be(t,e,r){return e[1]>t[1]!=r[1]>t[1]&&t[0]<(r[0]-e[0])*(t[1]-e[1])/(r[1]-e[1])+e[0]}function we(t,e){for(var r,i,n,o,a,s,l,u=!1,c=0,p=e.length;c<p;c++)for(var h=e[c],f=0,d=h.length;f<d-1;f++){if((o=(r=t)[0]-(i=h[f])[0])*(l=r[1]-(n=h[f+1])[1])-(s=r[0]-n[0])*(a=r[1]-i[1])==0&&o*s<=0&&a*l<=0)return!1;be(t,h[f],h[f+1])&&(u=!u)}return u}function Se(t,e){for(var r=0;r<e.length;r++)if(we(t,e[r]))return!0;return!1}function Te(t,e,r,i){var n=i[0]-r[0],o=i[1]-r[1],a=(t[0]-r[0])*o-n*(t[1]-r[1]),s=(e[0]-r[0])*o-n*(e[1]-r[1]);return a>0&&s<0||a<0&&s>0}function Ie(t,e,r){for(var i=0,n=r;i<n.length;i+=1)for(var o=n[i],a=0;a<o.length-1;++a)if(0!=(p=[(c=o[a+1])[0]-(u=o[a])[0],c[1]-u[1]])[0]*(h=[(l=e)[0]-(s=t)[0],l[1]-s[1]])[1]-p[1]*h[0]&&Te(s,l,u,c)&&Te(u,c,s,l))return!0;var s,l,u,c,p,h;return!1}function Ee(t,e){for(var r=0;r<t.length;++r)if(!we(t[r],e))return!1;for(var i=0;i<t.length-1;++i)if(Ie(t[i],t[i+1],e))return!1;return!0}function Ae(t,e){for(var r=0;r<e.length;r++)if(Ee(t,e[r]))return!0;return!1}function ze(t,e,r){for(var i=[],n=0;n<t.length;n++){for(var o=[],a=0;a<t[n].length;a++){var s=xe(t[n][a],r);_e(e,s),o.push(s)}i.push(o)}return i}function Pe(t,e,r){for(var i=[],n=0;n<t.length;n++){var o=ze(t[n],e,r);i.push(o)}return i}function Ce(t,e,r,i){if(t[0]<r[0]||t[0]>r[2]){var n=.5*i,o=t[0]-r[0]>n?-i:r[0]-t[0]>n?i:0;0===o&&(o=t[0]-r[2]>n?-i:r[2]-t[0]>n?i:0),t[0]+=o}_e(e,t)}function ke(t,e,r,i){for(var n=8192*Math.pow(2,i.z),o=[8192*i.x,8192*i.y],a=[],s=0,l=t;s<l.length;s+=1)for(var u=0,c=l[s];u<c.length;u+=1){var p=c[u],h=[p.x+o[0],p.y+o[1]];Ce(h,e,r,n),a.push(h)}return a}function Me(t,e,r,i){for(var n,o=8192*Math.pow(2,i.z),a=[8192*i.x,8192*i.y],s=[],l=0,u=t;l<u.length;l+=1){for(var c=[],p=0,h=u[l];p<h.length;p+=1){var f=h[p],d=[f.x+a[0],f.y+a[1]];_e(e,d),c.push(d)}s.push(c)}if(e[2]-e[0]<=o/2){(n=e)[0]=n[1]=1/0,n[2]=n[3]=-1/0;for(var m=0,y=s;m<y.length;m+=1)for(var g=0,_=y[m];g<_.length;g+=1)Ce(_[g],e,r,o)}return s}ge.parse=function(t,e){if(2!==t.length)return e.error("Expected one argument.");var r=t[1];if("object"!=typeof r||Array.isArray(r))return e.error("Collator options argument must be an object.");var i=e.parse(void 0!==r["case-sensitive"]&&r["case-sensitive"],1,Ft);if(!i)return null;var n=e.parse(void 0!==r["diacritic-sensitive"]&&r["diacritic-sensitive"],1,Ft);if(!n)return null;var o=null;return r.locale&&!(o=e.parse(r.locale,1,Rt))?null:new ge(i,n,o)},ge.prototype.evaluate=function(t){return new Qt(this.caseSensitive.evaluate(t),this.diacriticSensitive.evaluate(t),this.locale?this.locale.evaluate(t):null)},ge.prototype.eachChild=function(t){t(this.caseSensitive),t(this.diacriticSensitive),this.locale&&t(this.locale)},ge.prototype.outputDefined=function(){return!1},ge.prototype.serialize=function(){var t={};return t["case-sensitive"]=this.caseSensitive.serialize(),t["diacritic-sensitive"]=this.diacriticSensitive.serialize(),this.locale&&(t.locale=this.locale.serialize()),["collator",t]};var De=function(t,e){this.type=Ft,this.geojson=t,this.geometries=e};function Le(t){if(t instanceof ye){if("get"===t.name&&1===t.args.length)return!1;if("feature-state"===t.name)return!1;if("has"===t.name&&1===t.args.length)return!1;if("properties"===t.name||"geometry-type"===t.name||"id"===t.name)return!1;if(/^filter-/.test(t.name))return!1}if(t instanceof De)return!1;var e=!0;return t.eachChild(function(t){e&&!Le(t)&&(e=!1)}),e}function Be(t){if(t instanceof ye&&"feature-state"===t.name)return!1;var e=!0;return t.eachChild(function(t){e&&!Be(t)&&(e=!1)}),e}function Re(t,e){if(t instanceof ye&&e.indexOf(t.name)>=0)return!1;var r=!0;return t.eachChild(function(t){r&&!Re(t,e)&&(r=!1)}),r}De.parse=function(t,e){if(2!==t.length)return e.error("'within' expression requires exactly one argument, but found "+(t.length-1)+" instead.");if(ie(t[1])){var r=t[1];if("FeatureCollection"===r.type)for(var i=0;i<r.features.length;++i){var n=r.features[i].geometry.type;if("Polygon"===n||"MultiPolygon"===n)return new De(r,r.features[i].geometry)}else if("Feature"===r.type){var o=r.geometry.type;if("Polygon"===o||"MultiPolygon"===o)return new De(r,r.geometry)}else if("Polygon"===r.type||"MultiPolygon"===r.type)return new De(r,r)}return e.error("'within' expression requires valid geojson object that contains polygon geometry type.")},De.prototype.evaluate=function(t){if(null!=t.geometry()&&null!=t.canonicalID()){if("Point"===t.geometryType())return function(t,e){var r=[1/0,1/0,-1/0,-1/0],i=[1/0,1/0,-1/0,-1/0],n=t.canonicalID();if("Polygon"===e.type){var o=ze(e.coordinates,i,n),a=ke(t.geometry(),r,i,n);if(!ve(r,i))return!1;for(var s=0,l=a;s<l.length;s+=1)if(!we(l[s],o))return!1}if("MultiPolygon"===e.type){var u=Pe(e.coordinates,i,n),c=ke(t.geometry(),r,i,n);if(!ve(r,i))return!1;for(var p=0,h=c;p<h.length;p+=1)if(!Se(h[p],u))return!1}return!0}(t,this.geometries);if("LineString"===t.geometryType())return function(t,e){var r=[1/0,1/0,-1/0,-1/0],i=[1/0,1/0,-1/0,-1/0],n=t.canonicalID();if("Polygon"===e.type){var o=ze(e.coordinates,i,n),a=Me(t.geometry(),r,i,n);if(!ve(r,i))return!1;for(var s=0,l=a;s<l.length;s+=1)if(!Ee(l[s],o))return!1}if("MultiPolygon"===e.type){var u=Pe(e.coordinates,i,n),c=Me(t.geometry(),r,i,n);if(!ve(r,i))return!1;for(var p=0,h=c;p<h.length;p+=1)if(!Ae(h[p],u))return!1}return!0}(t,this.geometries)}return!1},De.prototype.eachChild=function(){},De.prototype.outputDefined=function(){return!0},De.prototype.serialize=function(){return["within",this.geojson]};var Fe=function(t,e){this.type=e.type,this.name=t,this.boundExpression=e};Fe.parse=function(t,e){if(2!==t.length||"string"!=typeof t[1])return e.error("'var' expression requires exactly one string literal argument.");var r=t[1];return e.scope.has(r)?new Fe(r,e.scope.get(r)):e.error('Unknown variable "'+r+'". Make sure "'+r+'" has been bound in an enclosing "let" expression before using it.',1)},Fe.prototype.evaluate=function(t){return this.boundExpression.evaluate(t)},Fe.prototype.eachChild=function(){},Fe.prototype.outputDefined=function(){return!1},Fe.prototype.serialize=function(){return["var",this.name]};var Oe=function(t,e,r,i,n){void 0===e&&(e=[]),void 0===i&&(i=new Dt),void 0===n&&(n=[]),this.registry=t,this.path=e,this.key=e.map(function(t){return"["+t+"]"}).join(""),this.scope=i,this.errors=n,this.expectedType=r};function Ue(t,e){for(var r,i=t.length-1,n=0,o=i,a=0;n<=o;)if((r=t[a=Math.floor((n+o)/2)])<=e){if(a===i||e<t[a+1])return a;n=a+1}else{if(!(r>e))throw new se("Input is not a number.");o=a-1}return 0}Oe.prototype.parse=function(t,e,r,i,n){return void 0===n&&(n={}),e?this.concat(e,r,i)._parse(t,n):this._parse(t,n)},Oe.prototype._parse=function(t,e){function r(t,e,r){return"assert"===r?new ue(e,[t]):"coerce"===r?new fe(e,[t]):t}if(null!==t&&"string"!=typeof t&&"boolean"!=typeof t&&"number"!=typeof t||(t=["literal",t]),Array.isArray(t)){if(0===t.length)return this.error('Expected an array with at least one element. If you wanted a literal array, use ["literal", []].');var i=t[0];if("string"!=typeof i)return this.error("Expression name must be a string, but found "+typeof i+' instead. If you wanted a literal array, use ["literal", [...]].',0),null;var n=this.registry[i];if(n){var o=n.parse(t,this);if(!o)return null;if(this.expectedType){var a=this.expectedType,s=o.type;if("string"!==a.kind&&"number"!==a.kind&&"boolean"!==a.kind&&"object"!==a.kind&&"array"!==a.kind||"value"!==s.kind)if("color"!==a.kind&&"formatted"!==a.kind&&"resolvedImage"!==a.kind||"value"!==s.kind&&"string"!==s.kind){if(this.checkSubtype(a,s))return null}else o=r(o,a,e.typeAnnotation||"coerce");else o=r(o,a,e.typeAnnotation||"assert")}if(!(o instanceof ae)&&"resolvedImage"!==o.type.kind&&function t(e){if(e instanceof Fe)return t(e.boundExpression);if(e instanceof ye&&"error"===e.name)return!1;if(e instanceof ge)return!1;if(e instanceof De)return!1;var r=e instanceof fe||e instanceof ue,i=!0;return e.eachChild(function(e){i=r?i&&t(e):i&&e instanceof ae}),!!i&&Le(e)&&Re(e,["zoom","heatmap-density","line-progress","accumulated","is-supported-script"])}(o)){var l=new me;try{o=new ae(o.type,o.evaluate(l))}catch(t){return this.error(t.message),null}}return o}return this.error('Unknown expression "'+i+'". If you wanted a literal array, use ["literal", [...]].',0)}return this.error(void 0===t?"'undefined' value invalid. Use null instead.":"object"==typeof t?'Bare objects invalid. Use ["literal", {...}] instead.':"Expected an array, but found "+typeof t+" instead.")},Oe.prototype.concat=function(t,e,r){var i="number"==typeof t?this.path.concat(t):this.path,n=r?this.scope.concat(r):this.scope;return new Oe(this.registry,i,e||null,n,this.errors)},Oe.prototype.error=function(t){for(var e=[],r=arguments.length-1;r-- >0;)e[r]=arguments[r+1];var i=""+this.key+e.map(function(t){return"["+t+"]"}).join("");this.errors.push(new Mt(i,t))},Oe.prototype.checkSubtype=function(t,e){var r=Wt(t,e);return r&&this.error(r),r};var Ve=function(t,e,r){this.type=t,this.input=e,this.labels=[],this.outputs=[];for(var i=0,n=r;i<n.length;i+=1){var o=n[i],a=o[1];this.labels.push(o[0]),this.outputs.push(a)}};function Ne(t,e,r){return t*(1-r)+e*r}Ve.parse=function(t,e){if(t.length-1<4)return e.error("Expected at least 4 arguments, but found only "+(t.length-1)+".");if((t.length-1)%2!=0)return e.error("Expected an even number of arguments.");var r=e.parse(t[1],1,Bt);if(!r)return null;var i=[],n=null;e.expectedType&&"value"!==e.expectedType.kind&&(n=e.expectedType);for(var o=1;o<t.length;o+=2){var a=1===o?-1/0:t[o],s=t[o+1],l=o,u=o+1;if("number"!=typeof a)return e.error('Input/output pairs for "step" expressions must be defined using literal numeric values (not computed expressions) for the input values.',l);if(i.length&&i[i.length-1][0]>=a)return e.error('Input/output pairs for "step" expressions must be arranged with input values in strictly ascending order.',l);var c=e.parse(s,u,n);if(!c)return null;n=n||c.type,i.push([a,c])}return new Ve(n,r,i)},Ve.prototype.evaluate=function(t){var e=this.labels,r=this.outputs;if(1===e.length)return r[0].evaluate(t);var i=this.input.evaluate(t);if(i<=e[0])return r[0].evaluate(t);var n=e.length;return i>=e[n-1]?r[n-1].evaluate(t):r[Ue(e,i)].evaluate(t)},Ve.prototype.eachChild=function(t){t(this.input);for(var e=0,r=this.outputs;e<r.length;e+=1)t(r[e])},Ve.prototype.outputDefined=function(){return this.outputs.every(function(t){return t.outputDefined()})},Ve.prototype.serialize=function(){for(var t=["step",this.input.serialize()],e=0;e<this.labels.length;e++)e>0&&t.push(this.labels[e]),t.push(this.outputs[e].serialize());return t};var je=Object.freeze({__proto__:null,number:Ne,color:function(t,e,r){return new Yt(Ne(t.r,e.r,r),Ne(t.g,e.g,r),Ne(t.b,e.b,r),Ne(t.a,e.a,r))},array:function(t,e,r){return t.map(function(t,i){return Ne(t,e[i],r)})}}),qe=6/29*3*(6/29),Ze=Math.PI/180,Ge=180/Math.PI;function Xe(t){return t>.008856451679035631?Math.pow(t,1/3):t/qe+4/29}function We(t){return t>6/29?t*t*t:qe*(t-4/29)}function Ke(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function He(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function Je(t){var e=He(t.r),r=He(t.g),i=He(t.b),n=Xe((.4124564*e+.3575761*r+.1804375*i)/.95047),o=Xe((.2126729*e+.7151522*r+.072175*i)/1);return{l:116*o-16,a:500*(n-o),b:200*(o-Xe((.0193339*e+.119192*r+.9503041*i)/1.08883)),alpha:t.a}}function Ye(t){var e=(t.l+16)/116,r=isNaN(t.a)?e:e+t.a/500,i=isNaN(t.b)?e:e-t.b/200;return e=1*We(e),r=.95047*We(r),i=1.08883*We(i),new Yt(Ke(3.2404542*r-1.5371385*e-.4985314*i),Ke(-.969266*r+1.8760108*e+.041556*i),Ke(.0556434*r-.2040259*e+1.0572252*i),t.alpha)}function Qe(t,e,r){var i=e-t;return t+r*(i>180||i<-180?i-360*Math.round(i/360):i)}var $e={forward:Je,reverse:Ye,interpolate:function(t,e,r){return{l:Ne(t.l,e.l,r),a:Ne(t.a,e.a,r),b:Ne(t.b,e.b,r),alpha:Ne(t.alpha,e.alpha,r)}}},tr={forward:function(t){var e=Je(t),r=e.l,i=e.a,n=e.b,o=Math.atan2(n,i)*Ge;return{h:o<0?o+360:o,c:Math.sqrt(i*i+n*n),l:r,alpha:t.a}},reverse:function(t){var e=t.h*Ze,r=t.c;return Ye({l:t.l,a:Math.cos(e)*r,b:Math.sin(e)*r,alpha:t.alpha})},interpolate:function(t,e,r){return{h:Qe(t.h,e.h,r),c:Ne(t.c,e.c,r),l:Ne(t.l,e.l,r),alpha:Ne(t.alpha,e.alpha,r)}}},er=Object.freeze({__proto__:null,lab:$e,hcl:tr}),rr=function(t,e,r,i,n){this.type=t,this.operator=e,this.interpolation=r,this.input=i,this.labels=[],this.outputs=[];for(var o=0,a=n;o<a.length;o+=1){var s=a[o],l=s[1];this.labels.push(s[0]),this.outputs.push(l)}};function ir(t,e,r,i){var n=i-r,o=t-r;return 0===n?0:1===e?o/n:(Math.pow(e,o)-1)/(Math.pow(e,n)-1)}rr.interpolationFactor=function(t,e,i,n){var o=0;if("exponential"===t.name)o=ir(e,t.base,i,n);else if("linear"===t.name)o=ir(e,1,i,n);else if("cubic-bezier"===t.name){var a=t.controlPoints;o=new r(a[0],a[1],a[2],a[3]).solve(ir(e,1,i,n))}return o},rr.parse=function(t,e){var r=t[0],i=t[1],n=t[2],o=t.slice(3);if(!Array.isArray(i)||0===i.length)return e.error("Expected an interpolation type expression.",1);if("linear"===i[0])i={name:"linear"};else if("exponential"===i[0]){var a=i[1];if("number"!=typeof a)return e.error("Exponential interpolation requires a numeric base.",1,1);i={name:"exponential",base:a}}else{if("cubic-bezier"!==i[0])return e.error("Unknown interpolation type "+String(i[0]),1,0);var s=i.slice(1);if(4!==s.length||s.some(function(t){return"number"!=typeof t||t<0||t>1}))return e.error("Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.",1);i={name:"cubic-bezier",controlPoints:s}}if(t.length-1<4)return e.error("Expected at least 4 arguments, but found only "+(t.length-1)+".");if((t.length-1)%2!=0)return e.error("Expected an even number of arguments.");if(!(n=e.parse(n,2,Bt)))return null;var l=[],u=null;"interpolate-hcl"===r||"interpolate-lab"===r?u=Ot:e.expectedType&&"value"!==e.expectedType.kind&&(u=e.expectedType);for(var c=0;c<o.length;c+=2){var p=o[c],h=o[c+1],f=c+3,d=c+4;if("number"!=typeof p)return e.error('Input/output pairs for "interpolate" expressions must be defined using literal numeric values (not computed expressions) for the input values.',f);if(l.length&&l[l.length-1][0]>=p)return e.error('Input/output pairs for "interpolate" expressions must be arranged with input values in strictly ascending order.',f);var m=e.parse(h,d,u);if(!m)return null;u=u||m.type,l.push([p,m])}return"number"===u.kind||"color"===u.kind||"array"===u.kind&&"number"===u.itemType.kind&&"number"==typeof u.N?new rr(u,r,i,n,l):e.error("Type "+Gt(u)+" is not interpolatable.")},rr.prototype.evaluate=function(t){var e=this.labels,r=this.outputs;if(1===e.length)return r[0].evaluate(t);var i=this.input.evaluate(t);if(i<=e[0])return r[0].evaluate(t);var n=e.length;if(i>=e[n-1])return r[n-1].evaluate(t);var o=Ue(e,i),a=rr.interpolationFactor(this.interpolation,i,e[o],e[o+1]),s=r[o].evaluate(t),l=r[o+1].evaluate(t);return"interpolate"===this.operator?je[this.type.kind.toLowerCase()](s,l,a):"interpolate-hcl"===this.operator?tr.reverse(tr.interpolate(tr.forward(s),tr.forward(l),a)):$e.reverse($e.interpolate($e.forward(s),$e.forward(l),a))},rr.prototype.eachChild=function(t){t(this.input);for(var e=0,r=this.outputs;e<r.length;e+=1)t(r[e])},rr.prototype.outputDefined=function(){return this.outputs.every(function(t){return t.outputDefined()})},rr.prototype.serialize=function(){var t;t="linear"===this.interpolation.name?["linear"]:"exponential"===this.interpolation.name?1===this.interpolation.base?["linear"]:["exponential",this.interpolation.base]:["cubic-bezier"].concat(this.interpolation.controlPoints);for(var e=[this.operator,t,this.input.serialize()],r=0;r<this.labels.length;r++)e.push(this.labels[r],this.outputs[r].serialize());return e};var nr=function(t,e){this.type=t,this.args=e};nr.parse=function(t,e){if(t.length<2)return e.error("Expectected at least one argument.");var r=null,i=e.expectedType;i&&"value"!==i.kind&&(r=i);for(var n=[],o=0,a=t.slice(1);o<a.length;o+=1){var s=e.parse(a[o],1+n.length,r,void 0,{typeAnnotation:"omit"});if(!s)return null;r=r||s.type,n.push(s)}var l=i&&n.some(function(t){return Wt(i,t.type)});return new nr(l?Vt:r,n)},nr.prototype.evaluate=function(t){for(var e,r=null,i=0,n=0,o=this.args;n<o.length&&(i++,(r=o[n].evaluate(t))&&r instanceof ee&&!r.available&&(e||(e=r.name),r=null,i===this.args.length&&(r=e)),null===r);n+=1);return r},nr.prototype.eachChild=function(t){this.args.forEach(t)},nr.prototype.outputDefined=function(){return this.args.every(function(t){return t.outputDefined()})},nr.prototype.serialize=function(){var t=["coalesce"];return this.eachChild(function(e){t.push(e.serialize())}),t};var or=function(t,e){this.type=e.type,this.bindings=[].concat(t),this.result=e};or.prototype.evaluate=function(t){return this.result.evaluate(t)},or.prototype.eachChild=function(t){for(var e=0,r=this.bindings;e<r.length;e+=1)t(r[e][1]);t(this.result)},or.parse=function(t,e){if(t.length<4)return e.error("Expected at least 3 arguments, but found "+(t.length-1)+" instead.");for(var r=[],i=1;i<t.length-1;i+=2){var n=t[i];if("string"!=typeof n)return e.error("Expected string, but found "+typeof n+" instead.",i);if(/[^a-zA-Z0-9_]/.test(n))return e.error("Variable names must contain only alphanumeric characters or '_'.",i);var o=e.parse(t[i+1],i+1);if(!o)return null;r.push([n,o])}var a=e.parse(t[t.length-1],t.length-1,e.expectedType,r);return a?new or(r,a):null},or.prototype.outputDefined=function(){return this.result.outputDefined()},or.prototype.serialize=function(){for(var t=["let"],e=0,r=this.bindings;e<r.length;e+=1){var i=r[e];t.push(i[0],i[1].serialize())}return t.push(this.result.serialize()),t};var ar=function(t,e,r){this.type=t,this.index=e,this.input=r};ar.parse=function(t,e){if(3!==t.length)return e.error("Expected 2 arguments, but found "+(t.length-1)+" instead.");var r=e.parse(t[1],1,Bt),i=e.parse(t[2],2,Zt(e.expectedType||Vt));return r&&i?new ar(i.type.itemType,r,i):null},ar.prototype.evaluate=function(t){var e=this.index.evaluate(t),r=this.input.evaluate(t);if(e<0)throw new se("Array index out of bounds: "+e+" < 0.");if(e>=r.length)throw new se("Array index out of bounds: "+e+" > "+(r.length-1)+".");if(e!==Math.floor(e))throw new se("Array index must be an integer, but found "+e+" instead.");return r[e]},ar.prototype.eachChild=function(t){t(this.index),t(this.input)},ar.prototype.outputDefined=function(){return!1},ar.prototype.serialize=function(){return["at",this.index.serialize(),this.input.serialize()]};var sr=function(t,e){this.type=Ft,this.needle=t,this.haystack=e};sr.parse=function(t,e){if(3!==t.length)return e.error("Expected 2 arguments, but found "+(t.length-1)+" instead.");var r=e.parse(t[1],1,Vt),i=e.parse(t[2],2,Vt);return r&&i?Kt(r.type,[Ft,Rt,Bt,Lt,Vt])?new sr(r,i):e.error("Expected first argument to be of type boolean, string, number or null, but found "+Gt(r.type)+" instead"):null},sr.prototype.evaluate=function(t){var e=this.needle.evaluate(t),r=this.haystack.evaluate(t);if(!r)return!1;if(!Ht(e,["boolean","string","number","null"]))throw new se("Expected first argument to be of type boolean, string, number or null, but found "+Gt(ne(e))+" instead.");if(!Ht(r,["string","array"]))throw new se("Expected second argument to be of type array or string, but found "+Gt(ne(r))+" instead.");return r.indexOf(e)>=0},sr.prototype.eachChild=function(t){t(this.needle),t(this.haystack)},sr.prototype.outputDefined=function(){return!0},sr.prototype.serialize=function(){return["in",this.needle.serialize(),this.haystack.serialize()]};var lr=function(t,e,r){this.type=Bt,this.needle=t,this.haystack=e,this.fromIndex=r};lr.parse=function(t,e){if(t.length<=2||t.length>=5)return e.error("Expected 3 or 4 arguments, but found "+(t.length-1)+" instead.");var r=e.parse(t[1],1,Vt),i=e.parse(t[2],2,Vt);if(!r||!i)return null;if(!Kt(r.type,[Ft,Rt,Bt,Lt,Vt]))return e.error("Expected first argument to be of type boolean, string, number or null, but found "+Gt(r.type)+" instead");if(4===t.length){var n=e.parse(t[3],3,Bt);return n?new lr(r,i,n):null}return new lr(r,i)},lr.prototype.evaluate=function(t){var e=this.needle.evaluate(t),r=this.haystack.evaluate(t);if(!Ht(e,["boolean","string","number","null"]))throw new se("Expected first argument to be of type boolean, string, number or null, but found "+Gt(ne(e))+" instead.");if(!Ht(r,["string","array"]))throw new se("Expected second argument to be of type array or string, but found "+Gt(ne(r))+" instead.");if(this.fromIndex){var i=this.fromIndex.evaluate(t);return r.indexOf(e,i)}return r.indexOf(e)},lr.prototype.eachChild=function(t){t(this.needle),t(this.haystack),this.fromIndex&&t(this.fromIndex)},lr.prototype.outputDefined=function(){return!1},lr.prototype.serialize=function(){if(null!=this.fromIndex&&void 0!==this.fromIndex){var t=this.fromIndex.serialize();return["index-of",this.needle.serialize(),this.haystack.serialize(),t]}return["index-of",this.needle.serialize(),this.haystack.serialize()]};var ur=function(t,e,r,i,n,o){this.inputType=t,this.type=e,this.input=r,this.cases=i,this.outputs=n,this.otherwise=o};ur.parse=function(t,e){if(t.length<5)return e.error("Expected at least 4 arguments, but found only "+(t.length-1)+".");if(t.length%2!=1)return e.error("Expected an even number of arguments.");var r,i;e.expectedType&&"value"!==e.expectedType.kind&&(i=e.expectedType);for(var n={},o=[],a=2;a<t.length-1;a+=2){var s=t[a],l=t[a+1];Array.isArray(s)||(s=[s]);var u=e.concat(a);if(0===s.length)return u.error("Expected at least one branch label.");for(var c=0,p=s;c<p.length;c+=1){var h=p[c];if("number"!=typeof h&&"string"!=typeof h)return u.error("Branch labels must be numbers or strings.");if("number"==typeof h&&Math.abs(h)>Number.MAX_SAFE_INTEGER)return u.error("Branch labels must be integers no larger than "+Number.MAX_SAFE_INTEGER+".");if("number"==typeof h&&Math.floor(h)!==h)return u.error("Numeric branch labels must be integer values.");if(r){if(u.checkSubtype(r,ne(h)))return null}else r=ne(h);if(void 0!==n[String(h)])return u.error("Branch labels must be unique.");n[String(h)]=o.length}var f=e.parse(l,a,i);if(!f)return null;i=i||f.type,o.push(f)}var d=e.parse(t[1],1,Vt);if(!d)return null;var m=e.parse(t[t.length-1],t.length-1,i);return m?"value"!==d.type.kind&&e.concat(1).checkSubtype(r,d.type)?null:new ur(r,i,d,n,o,m):null},ur.prototype.evaluate=function(t){var e=this.input.evaluate(t);return(ne(e)===this.inputType&&this.outputs[this.cases[e]]||this.otherwise).evaluate(t)},ur.prototype.eachChild=function(t){t(this.input),this.outputs.forEach(t),t(this.otherwise)},ur.prototype.outputDefined=function(){return this.outputs.every(function(t){return t.outputDefined()})&&this.otherwise.outputDefined()},ur.prototype.serialize=function(){for(var t=this,e=["match",this.input.serialize()],r=[],i={},n=0,o=Object.keys(this.cases).sort();n<o.length;n+=1){var a=o[n];void 0===(p=i[this.cases[a]])?(i[this.cases[a]]=r.length,r.push([this.cases[a],[a]])):r[p][1].push(a)}for(var s=function(e){return"number"===t.inputType.kind?Number(e):e},l=0,u=r;l<u.length;l+=1){var c=u[l],p=c[0],h=c[1];e.push(1===h.length?s(h[0]):h.map(s)),e.push(this.outputs[outputIndex$1].serialize())}return e.push(this.otherwise.serialize()),e};var cr=function(t,e,r){this.type=t,this.branches=e,this.otherwise=r};cr.parse=function(t,e){if(t.length<4)return e.error("Expected at least 3 arguments, but found only "+(t.length-1)+".");if(t.length%2!=0)return e.error("Expected an odd number of arguments.");var r;e.expectedType&&"value"!==e.expectedType.kind&&(r=e.expectedType);for(var i=[],n=1;n<t.length-1;n+=2){var o=e.parse(t[n],n,Ft);if(!o)return null;var a=e.parse(t[n+1],n+1,r);if(!a)return null;i.push([o,a]),r=r||a.type}var s=e.parse(t[t.length-1],t.length-1,r);return s?new cr(r,i,s):null},cr.prototype.evaluate=function(t){for(var e=0,r=this.branches;e<r.length;e+=1){var i=r[e],n=i[1];if(i[0].evaluate(t))return n.evaluate(t)}return this.otherwise.evaluate(t)},cr.prototype.eachChild=function(t){for(var e=0,r=this.branches;e<r.length;e+=1){var i=r[e],n=i[1];t(i[0]),t(n)}t(this.otherwise)},cr.prototype.outputDefined=function(){return this.branches.every(function(t){return t[1].outputDefined()})&&this.otherwise.outputDefined()},cr.prototype.serialize=function(){var t=["case"];return this.eachChild(function(e){t.push(e.serialize())}),t};var pr=function(t,e,r,i){this.type=t,this.input=e,this.beginIndex=r,this.endIndex=i};function hr(t,e){return"=="===t||"!="===t?"boolean"===e.kind||"string"===e.kind||"number"===e.kind||"null"===e.kind||"value"===e.kind:"string"===e.kind||"number"===e.kind||"value"===e.kind}function fr(t,e,r,i){return 0===i.compare(e,r)}function dr(t,e,r){var i="=="!==t&&"!="!==t;return function(){function n(t,e,r){this.type=Ft,this.lhs=t,this.rhs=e,this.collator=r,this.hasUntypedArgument="value"===t.type.kind||"value"===e.type.kind}return n.parse=function(t,e){if(3!==t.length&&4!==t.length)return e.error("Expected two or three arguments.");var r=t[0],o=e.parse(t[1],1,Vt);if(!o)return null;if(!hr(r,o.type))return e.concat(1).error('"'+r+"\" comparisons are not supported for type '"+Gt(o.type)+"'.");var a=e.parse(t[2],2,Vt);if(!a)return null;if(!hr(r,a.type))return e.concat(2).error('"'+r+"\" comparisons are not supported for type '"+Gt(a.type)+"'.");if(o.type.kind!==a.type.kind&&"value"!==o.type.kind&&"value"!==a.type.kind)return e.error("Cannot compare types '"+Gt(o.type)+"' and '"+Gt(a.type)+"'.");i&&("value"===o.type.kind&&"value"!==a.type.kind?o=new ue(a.type,[o]):"value"!==o.type.kind&&"value"===a.type.kind&&(a=new ue(o.type,[a])));var s=null;if(4===t.length){if("string"!==o.type.kind&&"string"!==a.type.kind&&"value"!==o.type.kind&&"value"!==a.type.kind)return e.error("Cannot use collator to compare non-string types.");if(!(s=e.parse(t[3],3,Nt)))return null}return new n(o,a,s)},n.prototype.evaluate=function(n){var o=this.lhs.evaluate(n),a=this.rhs.evaluate(n);if(i&&this.hasUntypedArgument){var s=ne(o),l=ne(a);if(s.kind!==l.kind||"string"!==s.kind&&"number"!==s.kind)throw new se('Expected arguments for "'+t+'" to be (string, string) or (number, number), but found ('+s.kind+", "+l.kind+") instead.")}if(this.collator&&!i&&this.hasUntypedArgument){var u=ne(o),c=ne(a);if("string"!==u.kind||"string"!==c.kind)return e(n,o,a)}return this.collator?r(n,o,a,this.collator.evaluate(n)):e(n,o,a)},n.prototype.eachChild=function(t){t(this.lhs),t(this.rhs),this.collator&&t(this.collator)},n.prototype.outputDefined=function(){return!0},n.prototype.serialize=function(){var e=[t];return this.eachChild(function(t){e.push(t.serialize())}),e},n}()}pr.parse=function(t,e){if(t.length<=2||t.length>=5)return e.error("Expected 3 or 4 arguments, but found "+(t.length-1)+" instead.");var r=e.parse(t[1],1,Vt),i=e.parse(t[2],2,Bt);if(!r||!i)return null;if(!Kt(r.type,[Zt(Vt),Rt,Vt]))return e.error("Expected first argument to be of type array or string, but found "+Gt(r.type)+" instead");if(4===t.length){var n=e.parse(t[3],3,Bt);return n?new pr(r.type,r,i,n):null}return new pr(r.type,r,i)},pr.prototype.evaluate=function(t){var e=this.input.evaluate(t),r=this.beginIndex.evaluate(t);if(!Ht(e,["string","array"]))throw new se("Expected first argument to be of type array or string, but found "+Gt(ne(e))+" instead.");if(this.endIndex){var i=this.endIndex.evaluate(t);return e.slice(r,i)}return e.slice(r)},pr.prototype.eachChild=function(t){t(this.input),t(this.beginIndex),this.endIndex&&t(this.endIndex)},pr.prototype.outputDefined=function(){return!1},pr.prototype.serialize=function(){if(null!=this.endIndex&&void 0!==this.endIndex){var t=this.endIndex.serialize();return["slice",this.input.serialize(),this.beginIndex.serialize(),t]}return["slice",this.input.serialize(),this.beginIndex.serialize()]};var mr=dr("==",function(t,e,r){return e===r},fr),yr=dr("!=",function(t,e,r){return e!==r},function(t,e,r,i){return!fr(0,e,r,i)}),gr=dr("<",function(t,e,r){return e<r},function(t,e,r,i){return i.compare(e,r)<0}),_r=dr(">",function(t,e,r){return e>r},function(t,e,r,i){return i.compare(e,r)>0}),vr=dr("<=",function(t,e,r){return e<=r},function(t,e,r,i){return i.compare(e,r)<=0}),xr=dr(">=",function(t,e,r){return e>=r},function(t,e,r,i){return i.compare(e,r)>=0}),br=function(t,e,r,i,n){this.type=Rt,this.number=t,this.locale=e,this.currency=r,this.minFractionDigits=i,this.maxFractionDigits=n};br.parse=function(t,e){if(3!==t.length)return e.error("Expected two arguments.");var r=e.parse(t[1],1,Bt);if(!r)return null;var i=t[2];if("object"!=typeof i||Array.isArray(i))return e.error("NumberFormat options argument must be an object.");var n=null;if(i.locale&&!(n=e.parse(i.locale,1,Rt)))return null;var o=null;if(i.currency&&!(o=e.parse(i.currency,1,Rt)))return null;var a=null;if(i["min-fraction-digits"]&&!(a=e.parse(i["min-fraction-digits"],1,Bt)))return null;var s=null;return i["max-fraction-digits"]&&!(s=e.parse(i["max-fraction-digits"],1,Bt))?null:new br(r,n,o,a,s)},br.prototype.evaluate=function(t){return new Intl.NumberFormat(this.locale?this.locale.evaluate(t):[],{style:this.currency?"currency":"decimal",currency:this.currency?this.currency.evaluate(t):void 0,minimumFractionDigits:this.minFractionDigits?this.minFractionDigits.evaluate(t):void 0,maximumFractionDigits:this.maxFractionDigits?this.maxFractionDigits.evaluate(t):void 0}).format(this.number.evaluate(t))},br.prototype.eachChild=function(t){t(this.number),this.locale&&t(this.locale),this.currency&&t(this.currency),this.minFractionDigits&&t(this.minFractionDigits),this.maxFractionDigits&&t(this.maxFractionDigits)},br.prototype.outputDefined=function(){return!1},br.prototype.serialize=function(){var t={};return this.locale&&(t.locale=this.locale.serialize()),this.currency&&(t.currency=this.currency.serialize()),this.minFractionDigits&&(t["min-fraction-digits"]=this.minFractionDigits.serialize()),this.maxFractionDigits&&(t["max-fraction-digits"]=this.maxFractionDigits.serialize()),["number-format",this.number.serialize(),t]};var wr=function(t){this.type=Bt,this.input=t};wr.parse=function(t,e){if(2!==t.length)return e.error("Expected 1 argument, but found "+(t.length-1)+" instead.");var r=e.parse(t[1],1);return r?"array"!==r.type.kind&&"string"!==r.type.kind&&"value"!==r.type.kind?e.error("Expected argument of type string or array, but found "+Gt(r.type)+" instead."):new wr(r):null},wr.prototype.evaluate=function(t){var e=this.input.evaluate(t);if("string"==typeof e)return e.length;if(Array.isArray(e))return e.length;throw new se("Expected value to be of type string or array, but found "+Gt(ne(e))+" instead.")},wr.prototype.eachChild=function(t){t(this.input)},wr.prototype.outputDefined=function(){return!1},wr.prototype.serialize=function(){var t=["length"];return this.eachChild(function(e){t.push(e.serialize())}),t};var Sr={"==":mr,"!=":yr,">":_r,"<":gr,">=":xr,"<=":vr,array:ue,at:ar,boolean:ue,case:cr,coalesce:nr,collator:ge,format:ce,image:pe,in:sr,"index-of":lr,interpolate:rr,"interpolate-hcl":rr,"interpolate-lab":rr,length:wr,let:or,literal:ae,match:ur,number:ue,"number-format":br,object:ue,slice:pr,step:Ve,string:ue,"to-boolean":fe,"to-color":fe,"to-number":fe,"to-string":fe,var:Fe,within:De};function Tr(t,e){var r=e[0],i=e[1],n=e[2],o=e[3];r=r.evaluate(t),i=i.evaluate(t),n=n.evaluate(t);var a=o?o.evaluate(t):1,s=re(r,i,n,a);if(s)throw new se(s);return new Yt(r/255*a,i/255*a,n/255*a,a)}function Ir(t,e){return t in e}function Er(t,e){var r=e[t];return void 0===r?null:r}function Ar(t){return{type:t}}function zr(t){return{result:"success",value:t}}function Pr(t){return{result:"error",value:t}}function Cr(t){return"data-driven"===t["property-type"]||"cross-faded-data-driven"===t["property-type"]}function kr(t){return!!t.expression&&t.expression.parameters.indexOf("zoom")>-1}function Mr(t){return!!t.expression&&t.expression.interpolated}function Dr(t){return t instanceof Number?"number":t instanceof String?"string":t instanceof Boolean?"boolean":Array.isArray(t)?"array":null===t?"null":typeof t}function Lr(t){return"object"==typeof t&&null!==t&&!Array.isArray(t)}function Br(t){return t}function Rr(t,e,r){return void 0!==t?t:void 0!==e?e:void 0!==r?r:void 0}function Fr(t,e,r,i,n){return Rr(typeof r===n?i[r]:void 0,t.default,e.default)}function Or(t,e,r){if("number"!==Dr(r))return Rr(t.default,e.default);var i=t.stops.length;if(1===i)return t.stops[0][1];if(r<=t.stops[0][0])return t.stops[0][1];if(r>=t.stops[i-1][0])return t.stops[i-1][1];var n=Ue(t.stops.map(function(t){return t[0]}),r);return t.stops[n][1]}function Ur(t,e,r){var i=void 0!==t.base?t.base:1;if("number"!==Dr(r))return Rr(t.default,e.default);var n=t.stops.length;if(1===n)return t.stops[0][1];if(r<=t.stops[0][0])return t.stops[0][1];if(r>=t.stops[n-1][0])return t.stops[n-1][1];var o=Ue(t.stops.map(function(t){return t[0]}),r),a=function(t,e,r,i){var n=i-r,o=t-r;return 0===n?0:1===e?o/n:(Math.pow(e,o)-1)/(Math.pow(e,n)-1)}(r,i,t.stops[o][0],t.stops[o+1][0]),s=t.stops[o][1],l=t.stops[o+1][1],u=je[e.type]||Br;if(t.colorSpace&&"rgb"!==t.colorSpace){var c=er[t.colorSpace];u=function(t,e){return c.reverse(c.interpolate(c.forward(t),c.forward(e),a))}}return"function"==typeof s.evaluate?{evaluate:function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var r=s.evaluate.apply(void 0,t),i=l.evaluate.apply(void 0,t);if(void 0!==r&&void 0!==i)return u(r,i,a)}}:u(s,l,a)}function Vr(t,e,r){return"color"===e.type?r=Yt.parse(r):"formatted"===e.type?r=te.fromString(r.toString()):"resolvedImage"===e.type?r=ee.fromString(r.toString()):Dr(r)===e.type||"enum"===e.type&&e.values[r]||(r=void 0),Rr(r,t.default,e.default)}ye.register(Sr,{error:[{kind:"error"},[Rt],function(t,e){throw new se(e[0].evaluate(t))}],typeof:[Rt,[Vt],function(t,e){return Gt(ne(e[0].evaluate(t)))}],"to-rgba":[Zt(Bt,4),[Ot],function(t,e){return e[0].evaluate(t).toArray()}],rgb:[Ot,[Bt,Bt,Bt],Tr],rgba:[Ot,[Bt,Bt,Bt,Bt],Tr],has:{type:Ft,overloads:[[[Rt],function(t,e){return Ir(e[0].evaluate(t),t.properties())}],[[Rt,Ut],function(t,e){var r=e[1];return Ir(e[0].evaluate(t),r.evaluate(t))}]]},get:{type:Vt,overloads:[[[Rt],function(t,e){return Er(e[0].evaluate(t),t.properties())}],[[Rt,Ut],function(t,e){var r=e[1];return Er(e[0].evaluate(t),r.evaluate(t))}]]},"feature-state":[Vt,[Rt],function(t,e){return Er(e[0].evaluate(t),t.featureState||{})}],properties:[Ut,[],function(t){return t.properties()}],"geometry-type":[Rt,[],function(t){return t.geometryType()}],id:[Vt,[],function(t){return t.id()}],zoom:[Bt,[],function(t){return t.globals.zoom}],"heatmap-density":[Bt,[],function(t){return t.globals.heatmapDensity||0}],"line-progress":[Bt,[],function(t){return t.globals.lineProgress||0}],accumulated:[Vt,[],function(t){return void 0===t.globals.accumulated?null:t.globals.accumulated}],"+":[Bt,Ar(Bt),function(t,e){for(var r=0,i=0,n=e;i<n.length;i+=1)r+=n[i].evaluate(t);return r}],"*":[Bt,Ar(Bt),function(t,e){for(var r=1,i=0,n=e;i<n.length;i+=1)r*=n[i].evaluate(t);return r}],"-":{type:Bt,overloads:[[[Bt,Bt],function(t,e){var r=e[1];return e[0].evaluate(t)-r.evaluate(t)}],[[Bt],function(t,e){return-e[0].evaluate(t)}]]},"/":[Bt,[Bt,Bt],function(t,e){var r=e[1];return e[0].evaluate(t)/r.evaluate(t)}],"%":[Bt,[Bt,Bt],function(t,e){var r=e[1];return e[0].evaluate(t)%r.evaluate(t)}],ln2:[Bt,[],function(){return Math.LN2}],pi:[Bt,[],function(){return Math.PI}],e:[Bt,[],function(){return Math.E}],"^":[Bt,[Bt,Bt],function(t,e){var r=e[1];return Math.pow(e[0].evaluate(t),r.evaluate(t))}],sqrt:[Bt,[Bt],function(t,e){return Math.sqrt(e[0].evaluate(t))}],log10:[Bt,[Bt],function(t,e){return Math.log(e[0].evaluate(t))/Math.LN10}],ln:[Bt,[Bt],function(t,e){return Math.log(e[0].evaluate(t))}],log2:[Bt,[Bt],function(t,e){return Math.log(e[0].evaluate(t))/Math.LN2}],sin:[Bt,[Bt],function(t,e){return Math.sin(e[0].evaluate(t))}],cos:[Bt,[Bt],function(t,e){return Math.cos(e[0].evaluate(t))}],tan:[Bt,[Bt],function(t,e){return Math.tan(e[0].evaluate(t))}],asin:[Bt,[Bt],function(t,e){return Math.asin(e[0].evaluate(t))}],acos:[Bt,[Bt],function(t,e){return Math.acos(e[0].evaluate(t))}],atan:[Bt,[Bt],function(t,e){return Math.atan(e[0].evaluate(t))}],min:[Bt,Ar(Bt),function(t,e){return Math.min.apply(Math,e.map(function(e){return e.evaluate(t)}))}],max:[Bt,Ar(Bt),function(t,e){return Math.max.apply(Math,e.map(function(e){return e.evaluate(t)}))}],abs:[Bt,[Bt],function(t,e){return Math.abs(e[0].evaluate(t))}],round:[Bt,[Bt],function(t,e){var r=e[0].evaluate(t);return r<0?-Math.round(-r):Math.round(r)}],floor:[Bt,[Bt],function(t,e){return Math.floor(e[0].evaluate(t))}],ceil:[Bt,[Bt],function(t,e){return Math.ceil(e[0].evaluate(t))}],"filter-==":[Ft,[Rt,Vt],function(t,e){var r=e[0],i=e[1];return t.properties()[r.value]===i.value}],"filter-id-==":[Ft,[Vt],function(t,e){var r=e[0];return t.id()===r.value}],"filter-type-==":[Ft,[Rt],function(t,e){var r=e[0];return t.geometryType()===r.value}],"filter-<":[Ft,[Rt,Vt],function(t,e){var r=e[0],i=e[1],n=t.properties()[r.value],o=i.value;return typeof n==typeof o&&n<o}],"filter-id-<":[Ft,[Vt],function(t,e){var r=e[0],i=t.id(),n=r.value;return typeof i==typeof n&&i<n}],"filter->":[Ft,[Rt,Vt],function(t,e){var r=e[0],i=e[1],n=t.properties()[r.value],o=i.value;return typeof n==typeof o&&n>o}],"filter-id->":[Ft,[Vt],function(t,e){var r=e[0],i=t.id(),n=r.value;return typeof i==typeof n&&i>n}],"filter-<=":[Ft,[Rt,Vt],function(t,e){var r=e[0],i=e[1],n=t.properties()[r.value],o=i.value;return typeof n==typeof o&&n<=o}],"filter-id-<=":[Ft,[Vt],function(t,e){var r=e[0],i=t.id(),n=r.value;return typeof i==typeof n&&i<=n}],"filter->=":[Ft,[Rt,Vt],function(t,e){var r=e[0],i=e[1],n=t.properties()[r.value],o=i.value;return typeof n==typeof o&&n>=o}],"filter-id->=":[Ft,[Vt],function(t,e){var r=e[0],i=t.id(),n=r.value;return typeof i==typeof n&&i>=n}],"filter-has":[Ft,[Vt],function(t,e){return e[0].value in t.properties()}],"filter-has-id":[Ft,[],function(t){return null!==t.id()&&void 0!==t.id()}],"filter-type-in":[Ft,[Zt(Rt)],function(t,e){return e[0].value.indexOf(t.geometryType())>=0}],"filter-id-in":[Ft,[Zt(Vt)],function(t,e){return e[0].value.indexOf(t.id())>=0}],"filter-in-small":[Ft,[Rt,Zt(Vt)],function(t,e){var r=e[0];return e[1].value.indexOf(t.properties()[r.value])>=0}],"filter-in-large":[Ft,[Rt,Zt(Vt)],function(t,e){var r=e[0],i=e[1];return function(t,e,r,i){for(;r<=i;){var n=r+i>>1;if(e[n]===t)return!0;e[n]>t?i=n-1:r=n+1}return!1}(t.properties()[r.value],i.value,0,i.value.length-1)}],all:{type:Ft,overloads:[[[Ft,Ft],function(t,e){var r=e[1];return e[0].evaluate(t)&&r.evaluate(t)}],[Ar(Ft),function(t,e){for(var r=0,i=e;r<i.length;r+=1)if(!i[r].evaluate(t))return!1;return!0}]]},any:{type:Ft,overloads:[[[Ft,Ft],function(t,e){var r=e[1];return e[0].evaluate(t)||r.evaluate(t)}],[Ar(Ft),function(t,e){for(var r=0,i=e;r<i.length;r+=1)if(i[r].evaluate(t))return!0;return!1}]]},"!":[Ft,[Ft],function(t,e){return!e[0].evaluate(t)}],"is-supported-script":[Ft,[Rt],function(t,e){var r=t.globals&&t.globals.isSupportedScript;return!r||r(e[0].evaluate(t))}],upcase:[Rt,[Rt],function(t,e){return e[0].evaluate(t).toUpperCase()}],downcase:[Rt,[Rt],function(t,e){return e[0].evaluate(t).toLowerCase()}],concat:[Rt,Ar(Vt),function(t,e){return e.map(function(e){return oe(e.evaluate(t))}).join("")}],"resolved-locale":[Rt,[Nt],function(t,e){return e[0].evaluate(t).resolvedLocale()}]});var Nr=function(t,e){this.expression=t,this._warningHistory={},this._evaluator=new me,this._defaultValue=e?function(t){return"color"===t.type&&Lr(t.default)?new Yt(0,0,0,0):"color"===t.type?Yt.parse(t.default)||null:void 0===t.default?null:t.default}(e):null,this._enumValues=e&&"enum"===e.type?e.values:null};function jr(t){return Array.isArray(t)&&t.length>0&&"string"==typeof t[0]&&t[0]in Sr}function qr(t,e){var r=new Oe(Sr,[],e?function(t){var e={color:Ot,string:Rt,number:Bt,enum:Rt,boolean:Ft,formatted:jt,resolvedImage:qt};return"array"===t.type?Zt(e[t.value]||Vt,t.length):e[t.type]}(e):void 0),i=r.parse(t,void 0,void 0,void 0,e&&"string"===e.type?{typeAnnotation:"coerce"}:void 0);return i?zr(new Nr(i,e)):Pr(r.errors)}Nr.prototype.evaluateWithoutErrorHandling=function(t,e,r,i,n,o){return this._evaluator.globals=t,this._evaluator.feature=e,this._evaluator.featureState=r,this._evaluator.canonical=i,this._evaluator.availableImages=n||null,this._evaluator.formattedSection=o,this.expression.evaluate(this._evaluator)},Nr.prototype.evaluate=function(t,e,r,i,n,o){this._evaluator.globals=t,this._evaluator.feature=e||null,this._evaluator.featureState=r||null,this._evaluator.canonical=i,this._evaluator.availableImages=n||null,this._evaluator.formattedSection=o||null;try{var a=this.expression.evaluate(this._evaluator);if(null==a||"number"==typeof a&&a!=a)return this._defaultValue;if(this._enumValues&&!(a in this._enumValues))throw new se("Expected value to be one of "+Object.keys(this._enumValues).map(function(t){return JSON.stringify(t)}).join(", ")+", but found "+JSON.stringify(a)+" instead.");return a}catch(t){return this._warningHistory[t.message]||(this._warningHistory[t.message]=!0,"undefined"!=typeof console&&console.warn(t.message)),this._defaultValue}};var Zr=function(t,e){this.kind=t,this._styleExpression=e,this.isStateDependent="constant"!==t&&!Be(e.expression)};Zr.prototype.evaluateWithoutErrorHandling=function(t,e,r,i,n,o){return this._styleExpression.evaluateWithoutErrorHandling(t,e,r,i,n,o)},Zr.prototype.evaluate=function(t,e,r,i,n,o){return this._styleExpression.evaluate(t,e,r,i,n,o)};var Gr=function(t,e,r,i){this.kind=t,this.zoomStops=r,this._styleExpression=e,this.isStateDependent="camera"!==t&&!Be(e.expression),this.interpolationType=i};function Xr(t,e){if("error"===(t=qr(t,e)).result)return t;var r=t.value.expression,i=Le(r);if(!i&&!Cr(e))return Pr([new Mt("","data expressions not supported")]);var n=Re(r,["zoom"]);if(!n&&!kr(e))return Pr([new Mt("","zoom expressions not supported")]);var o=function t(e){var r=null;if(e instanceof or)r=t(e.result);else if(e instanceof nr)for(var i=0,n=e.args;i<n.length&&!(r=t(n[i]));i+=1);else(e instanceof Ve||e instanceof rr)&&e.input instanceof ye&&"zoom"===e.input.name&&(r=e);return r instanceof Mt||e.eachChild(function(e){var i=t(e);i instanceof Mt?r=i:!r&&i?r=new Mt("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.'):r&&i&&r!==i&&(r=new Mt("",'Only one zoom-based "step" or "interpolate" subexpression may be used in an expression.'))}),r}(r);return o||n?o instanceof Mt?Pr([o]):o instanceof rr&&!Mr(e)?Pr([new Mt("",'"interpolate" expressions cannot be used with this property')]):zr(o?new Gr(i?"camera":"composite",t.value,o.labels,o instanceof rr?o.interpolation:void 0):new Zr(i?"constant":"source",t.value)):Pr([new Mt("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.')])}Gr.prototype.evaluateWithoutErrorHandling=function(t,e,r,i,n,o){return this._styleExpression.evaluateWithoutErrorHandling(t,e,r,i,n,o)},Gr.prototype.evaluate=function(t,e,r,i,n,o){return this._styleExpression.evaluate(t,e,r,i,n,o)},Gr.prototype.interpolationFactor=function(t,e,r){return this.interpolationType?rr.interpolationFactor(this.interpolationType,t,e,r):0};var Wr=function(t,e){this._parameters=t,this._specification=e,Pt(this,function t(e,r){var i,n,o,a="color"===r.type,s=e.stops&&"object"==typeof e.stops[0][0],l=s||!(s||void 0!==e.property),u=e.type||(Mr(r)?"exponential":"interval");if(a&&((e=Pt({},e)).stops&&(e.stops=e.stops.map(function(t){return[t[0],Yt.parse(t[1])]})),e.default=Yt.parse(e.default?e.default:r.default)),e.colorSpace&&"rgb"!==e.colorSpace&&!er[e.colorSpace])throw new Error("Unknown color space: "+e.colorSpace);if("exponential"===u)i=Ur;else if("interval"===u)i=Or;else if("categorical"===u){i=Fr,n=Object.create(null);for(var c=0,p=e.stops;c<p.length;c+=1){var h=p[c];n[h[0]]=h[1]}o=typeof e.stops[0][0]}else{if("identity"!==u)throw new Error('Unknown function type "'+u+'"');i=Vr}if(s){for(var f={},d=[],m=0;m<e.stops.length;m++){var y=e.stops[m],g=y[0].zoom;void 0===f[g]&&(f[g]={zoom:g,type:e.type,property:e.property,default:e.default,stops:[]},d.push(g)),f[g].stops.push([y[0].value,y[1]])}for(var _=[],v=0,x=d;v<x.length;v+=1){var b=x[v];_.push([f[b].zoom,t(f[b],r)])}var w={name:"linear"};return{kind:"composite",interpolationType:w,interpolationFactor:rr.interpolationFactor.bind(void 0,w),zoomStops:_.map(function(t){return t[0]}),evaluate:function(t,i){var n=t.zoom;return Ur({stops:_,base:e.base},r,n).evaluate(n,i)}}}if(l){var S="exponential"===u?{name:"exponential",base:void 0!==e.base?e.base:1}:null;return{kind:"camera",interpolationType:S,interpolationFactor:rr.interpolationFactor.bind(void 0,S),zoomStops:e.stops.map(function(t){return t[0]}),evaluate:function(t){return i(e,r,t.zoom,n,o)}}}return{kind:"source",evaluate:function(t,a){var s=a&&a.properties?a.properties[e.property]:void 0;return void 0===s?Rr(e.default,r.default):i(e,r,s,n,o)}}}(this._parameters,this._specification))};function Kr(t){var e=t.key,r=t.value,i=t.valueSpec||{},n=t.objectElementValidators||{},o=t.style,a=t.styleSpec,s=[],l=Dr(r);if("object"!==l)return[new At(e,r,"object expected, "+l+" found")];for(var u in r){var c=u.split(".")[0],p=i[c]||i["*"],h=void 0;if(n[c])h=n[c];else if(i[c])h=vi;else if(n["*"])h=n["*"];else{if(!i["*"]){s.push(new At(e,r[u],'unknown property "'+u+'"'));continue}h=vi}s=s.concat(h({key:(e?e+".":e)+u,value:r[u],valueSpec:p,style:o,styleSpec:a,object:r,objectKey:u},r))}for(var f in i)n[f]||i[f].required&&void 0===i[f].default&&void 0===r[f]&&s.push(new At(e,r,'missing required property "'+f+'"'));return s}function Hr(t){var e=t.value,r=t.valueSpec,i=t.style,n=t.styleSpec,o=t.key,a=t.arrayElementValidator||vi;if("array"!==Dr(e))return[new At(o,e,"array expected, "+Dr(e)+" found")];if(r.length&&e.length!==r.length)return[new At(o,e,"array length "+r.length+" expected, length "+e.length+" found")];if(r["min-length"]&&e.length<r["min-length"])return[new At(o,e,"array length at least "+r["min-length"]+" expected, length "+e.length+" found")];var s={type:r.value,values:r.values};n.$version<7&&(s.function=r.function),"object"===Dr(r.value)&&(s=r.value);for(var l=[],u=0;u<e.length;u++)l=l.concat(a({array:e,arrayIndex:u,value:e[u],valueSpec:s,style:i,styleSpec:n,key:o+"["+u+"]"}));return l}function Jr(t){var e=t.key,r=t.value,i=t.valueSpec,n=Dr(r);return"number"===n&&r!=r&&(n="NaN"),"number"!==n?[new At(e,r,"number expected, "+n+" found")]:"minimum"in i&&r<i.minimum?[new At(e,r,r+" is less than the minimum value "+i.minimum)]:"maximum"in i&&r>i.maximum?[new At(e,r,r+" is greater than the maximum value "+i.maximum)]:[]}function Yr(t){var e,r,i,n=t.valueSpec,o=Ct(t.value.type),a={},s="categorical"!==o&&void 0===t.value.property,l=!s,u="array"===Dr(t.value.stops)&&"array"===Dr(t.value.stops[0])&&"object"===Dr(t.value.stops[0][0]),c=Kr({key:t.key,value:t.value,valueSpec:t.styleSpec.function,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{stops:function(t){if("identity"===o)return[new At(t.key,t.value,'identity function may not have a "stops" property')];var e=[],r=t.value;return e=e.concat(Hr({key:t.key,value:r,valueSpec:t.valueSpec,style:t.style,styleSpec:t.styleSpec,arrayElementValidator:p})),"array"===Dr(r)&&0===r.length&&e.push(new At(t.key,r,"array must have at least one stop")),e},default:function(t){return vi({key:t.key,value:t.value,valueSpec:n,style:t.style,styleSpec:t.styleSpec})}}});return"identity"===o&&s&&c.push(new At(t.key,t.value,'missing required property "property"')),"identity"===o||t.value.stops||c.push(new At(t.key,t.value,'missing required property "stops"')),"exponential"===o&&t.valueSpec.expression&&!Mr(t.valueSpec)&&c.push(new At(t.key,t.value,"exponential functions not supported")),t.styleSpec.$version>=8&&(l&&!Cr(t.valueSpec)?c.push(new At(t.key,t.value,"property functions not supported")):s&&!kr(t.valueSpec)&&c.push(new At(t.key,t.value,"zoom functions not supported"))),"categorical"!==o&&!u||void 0!==t.value.property||c.push(new At(t.key,t.value,'"property" property is required')),c;function p(t){var e=[],o=t.value,s=t.key;if("array"!==Dr(o))return[new At(s,o,"array expected, "+Dr(o)+" found")];if(2!==o.length)return[new At(s,o,"array length 2 expected, length "+o.length+" found")];if(u){if("object"!==Dr(o[0]))return[new At(s,o,"object expected, "+Dr(o[0])+" found")];if(void 0===o[0].zoom)return[new At(s,o,"object stop key must have zoom")];if(void 0===o[0].value)return[new At(s,o,"object stop key must have value")];if(i&&i>Ct(o[0].zoom))return[new At(s,o[0].zoom,"stop zoom values must appear in ascending order")];Ct(o[0].zoom)!==i&&(i=Ct(o[0].zoom),r=void 0,a={}),e=e.concat(Kr({key:s+"[0]",value:o[0],valueSpec:{zoom:{}},style:t.style,styleSpec:t.styleSpec,objectElementValidators:{zoom:Jr,value:h}}))}else e=e.concat(h({key:s+"[0]",value:o[0],valueSpec:{},style:t.style,styleSpec:t.styleSpec},o));return jr(kt(o[1]))?e.concat([new At(s+"[1]",o[1],"expressions are not allowed in function stops.")]):e.concat(vi({key:s+"[1]",value:o[1],valueSpec:n,style:t.style,styleSpec:t.styleSpec}))}function h(t,i){var s=Dr(t.value),l=Ct(t.value),u=null!==t.value?t.value:i;if(e){if(s!==e)return[new At(t.key,u,s+" stop domain type must match previous stop domain type "+e)]}else e=s;if("number"!==s&&"string"!==s&&"boolean"!==s)return[new At(t.key,u,"stop domain value must be a number, string, or boolean")];if("number"!==s&&"categorical"!==o){var c="number expected, "+s+" found";return Cr(n)&&void 0===o&&(c+='\nIf you intended to use a categorical function, specify `"type": "categorical"`.'),[new At(t.key,u,c)]}return"categorical"!==o||"number"!==s||isFinite(l)&&Math.floor(l)===l?"categorical"!==o&&"number"===s&&void 0!==r&&l<r?[new At(t.key,u,"stop domain values must appear in ascending order")]:(r=l,"categorical"===o&&l in a?[new At(t.key,u,"stop domain values must be unique")]:(a[l]=!0,[])):[new At(t.key,u,"integer expected, found "+l)]}}function Qr(t){var e=("property"===t.expressionContext?Xr:qr)(kt(t.value),t.valueSpec);if("error"===e.result)return e.value.map(function(e){return new At(""+t.key+e.key,t.value,e.message)});var r=e.value.expression||e.value._styleExpression.expression;if("property"===t.expressionContext&&"text-font"===t.propertyKey&&!r.outputDefined())return[new At(t.key,t.value,'Invalid data expression for "'+t.propertyKey+'". Output values must be contained as literals within the expression.')];if("property"===t.expressionContext&&"layout"===t.propertyType&&!Be(r))return[new At(t.key,t.value,'"feature-state" data expressions are not supported with layout properties.')];if("filter"===t.expressionContext&&!Be(r))return[new At(t.key,t.value,'"feature-state" data expressions are not supported with filters.')];if(t.expressionContext&&0===t.expressionContext.indexOf("cluster")){if(!Re(r,["zoom","feature-state"]))return[new At(t.key,t.value,'"zoom" and "feature-state" expressions are not supported with cluster properties.')];if("cluster-initial"===t.expressionContext&&!Le(r))return[new At(t.key,t.value,"Feature data expressions are not supported with initial expression part of cluster properties.")]}return[]}function $r(t){var e=t.key,r=t.value,i=t.valueSpec,n=[];return Array.isArray(i.values)?-1===i.values.indexOf(Ct(r))&&n.push(new At(e,r,"expected one of ["+i.values.join(", ")+"], "+JSON.stringify(r)+" found")):-1===Object.keys(i.values).indexOf(Ct(r))&&n.push(new At(e,r,"expected one of ["+Object.keys(i.values).join(", ")+"], "+JSON.stringify(r)+" found")),n}function ti(t){if(!0===t||!1===t)return!0;if(!Array.isArray(t)||0===t.length)return!1;switch(t[0]){case"has":return t.length>=2&&"$id"!==t[1]&&"$type"!==t[1];case"in":return t.length>=3&&("string"!=typeof t[1]||Array.isArray(t[2]));case"!in":case"!has":case"none":return!1;case"==":case"!=":case">":case">=":case"<":case"<=":return 3!==t.length||Array.isArray(t[1])||Array.isArray(t[2]);case"any":case"all":for(var e=0,r=t.slice(1);e<r.length;e+=1){var i=r[e];if(!ti(i)&&"boolean"!=typeof i)return!1}return!0;default:return!0}}Wr.deserialize=function(t){return new Wr(t._parameters,t._specification)},Wr.serialize=function(t){return{_parameters:t._parameters,_specification:t._specification}};var ei={type:"boolean",default:!1,transition:!1,"property-type":"data-driven",expression:{interpolated:!1,parameters:["zoom","feature"]}};function ri(t){if(null==t)return{filter:function(){return!0},needGeometry:!1};ti(t)||(t=ni(t));var e=qr(t,ei);if("error"===e.result)throw new Error(e.value.map(function(t){return t.key+": "+t.message}).join(", "));return{filter:function(t,r,i){return e.value.evaluate(t,r,{},i)},needGeometry:function t(e){if(!Array.isArray(e))return!1;if("within"===e[0])return!0;for(var r=1;r<e.length;r++)if(t(e[r]))return!0;return!1}(t)}}function ii(t,e){return t<e?-1:t>e?1:0}function ni(t){if(!t)return!0;var e,r=t[0];return t.length<=1?"any"!==r:"=="===r?oi(t[1],t[2],"=="):"!="===r?li(oi(t[1],t[2],"==")):"<"===r||">"===r||"<="===r||">="===r?oi(t[1],t[2],r):"any"===r?(e=t.slice(1),["any"].concat(e.map(ni))):"all"===r?["all"].concat(t.slice(1).map(ni)):"none"===r?["all"].concat(t.slice(1).map(ni).map(li)):"in"===r?ai(t[1],t.slice(2)):"!in"===r?li(ai(t[1],t.slice(2))):"has"===r?si(t[1]):"!has"===r?li(si(t[1])):"within"!==r||t}function oi(t,e,r){switch(t){case"$type":return["filter-type-"+r,e];case"$id":return["filter-id-"+r,e];default:return["filter-"+r,t,e]}}function ai(t,e){if(0===e.length)return!1;switch(t){case"$type":return["filter-type-in",["literal",e]];case"$id":return["filter-id-in",["literal",e]];default:return e.length>200&&!e.some(function(t){return typeof t!=typeof e[0]})?["filter-in-large",t,["literal",e.sort(ii)]]:["filter-in-small",t,["literal",e]]}}function si(t){switch(t){case"$type":return!0;case"$id":return["filter-has-id"];default:return["filter-has",t]}}function li(t){return["!",t]}function ui(t){return ti(kt(t.value))?Qr(Pt({},t,{expressionContext:"filter",valueSpec:{value:"boolean"}})):function t(e){var r=e.value,i=e.key;if("array"!==Dr(r))return[new At(i,r,"array expected, "+Dr(r)+" found")];var n,o=e.styleSpec,a=[];if(r.length<1)return[new At(i,r,"filter array must have at least 1 element")];switch(a=a.concat($r({key:i+"[0]",value:r[0],valueSpec:o.filter_operator,style:e.style,styleSpec:e.styleSpec})),Ct(r[0])){case"<":case"<=":case">":case">=":r.length>=2&&"$type"===Ct(r[1])&&a.push(new At(i,r,'"$type" cannot be use with operator "'+r[0]+'"'));case"==":case"!=":3!==r.length&&a.push(new At(i,r,'filter array for operator "'+r[0]+'" must have 3 elements'));case"in":case"!in":r.length>=2&&"string"!==(n=Dr(r[1]))&&a.push(new At(i+"[1]",r[1],"string expected, "+n+" found"));for(var s=2;s<r.length;s++)n=Dr(r[s]),"$type"===Ct(r[1])?a=a.concat($r({key:i+"["+s+"]",value:r[s],valueSpec:o.geometry_type,style:e.style,styleSpec:e.styleSpec})):"string"!==n&&"number"!==n&&"boolean"!==n&&a.push(new At(i+"["+s+"]",r[s],"string, number, or boolean expected, "+n+" found"));break;case"any":case"all":case"none":for(var l=1;l<r.length;l++)a=a.concat(t({key:i+"["+l+"]",value:r[l],style:e.style,styleSpec:e.styleSpec}));break;case"has":case"!has":n=Dr(r[1]),2!==r.length?a.push(new At(i,r,'filter array for "'+r[0]+'" operator must have 2 elements')):"string"!==n&&a.push(new At(i+"[1]",r[1],"string expected, "+n+" found"));break;case"within":n=Dr(r[1]),2!==r.length?a.push(new At(i,r,'filter array for "'+r[0]+'" operator must have 2 elements')):"object"!==n&&a.push(new At(i+"[1]",r[1],"object expected, "+n+" found"))}return a}(t)}function ci(t,e){var r=t.key,i=t.style,n=t.styleSpec,o=t.value,a=t.objectKey,s=n[e+"_"+t.layerType];if(!s)return[];var l=a.match(/^(.*)-transition$/);if("paint"===e&&l&&s[l[1]]&&s[l[1]].transition)return vi({key:r,value:o,valueSpec:n.transition,style:i,styleSpec:n});var u,c=t.valueSpec||s[a];if(!c)return[new At(r,o,'unknown property "'+a+'"')];if("string"===Dr(o)&&Cr(c)&&!c.tokens&&(u=/^{([^}]+)}$/.exec(o)))return[new At(r,o,'"'+a+'" does not support interpolation syntax\nUse an identity property function instead: `{ "type": "identity", "property": '+JSON.stringify(u[1])+" }`.")];var p=[];return"symbol"===t.layerType&&("text-field"===a&&i&&!i.glyphs&&p.push(new At(r,o,'use of "text-field" requires a style "glyphs" property')),"text-font"===a&&Lr(kt(o))&&"identity"===Ct(o.type)&&p.push(new At(r,o,'"text-font" does not support identity functions'))),p.concat(vi({key:t.key,value:o,valueSpec:c,style:i,styleSpec:n,expressionContext:"property",propertyType:e,propertyKey:a}))}function pi(t){return ci(t,"paint")}function hi(t){return ci(t,"layout")}function fi(t){var e=[],r=t.value,i=t.key,n=t.style,o=t.styleSpec;r.type||r.ref||e.push(new At(i,r,'either "type" or "ref" is required'));var a,s=Ct(r.type),l=Ct(r.ref);if(r.id)for(var u=Ct(r.id),c=0;c<t.arrayIndex;c++){var p=n.layers[c];Ct(p.id)===u&&e.push(new At(i,r.id,'duplicate layer id "'+r.id+'", previously used at line '+p.id.__line__))}if("ref"in r)["type","source","source-layer","filter","layout"].forEach(function(t){t in r&&e.push(new At(i,r[t],'"'+t+'" is prohibited for ref layers'))}),n.layers.forEach(function(t){Ct(t.id)===l&&(a=t)}),a?a.ref?e.push(new At(i,r.ref,"ref cannot reference another ref layer")):s=Ct(a.type):e.push(new At(i,r.ref,'ref layer "'+l+'" not found'));else if("background"!==s)if(r.source){var h=n.sources&&n.sources[r.source],f=h&&Ct(h.type);h?"vector"===f&&"raster"===s?e.push(new At(i,r.source,'layer "'+r.id+'" requires a raster source')):"raster"===f&&"raster"!==s?e.push(new At(i,r.source,'layer "'+r.id+'" requires a vector source')):"vector"!==f||r["source-layer"]?"raster-dem"===f&&"hillshade"!==s?e.push(new At(i,r.source,"raster-dem source can only be used with layer type 'hillshade'.")):"line"!==s||!r.paint||!r.paint["line-gradient"]||"geojson"===f&&h.lineMetrics||e.push(new At(i,r,'layer "'+r.id+'" specifies a line-gradient, which requires a GeoJSON source with `lineMetrics` enabled.')):e.push(new At(i,r,'layer "'+r.id+'" must specify a "source-layer"')):e.push(new At(i,r.source,'source "'+r.source+'" not found'))}else e.push(new At(i,r,'missing required property "source"'));return e=e.concat(Kr({key:i,value:r,valueSpec:o.layer,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{"*":function(){return[]},type:function(){return vi({key:i+".type",value:r.type,valueSpec:o.layer.type,style:t.style,styleSpec:t.styleSpec,object:r,objectKey:"type"})},filter:ui,layout:function(t){return Kr({layer:r,key:t.key,value:t.value,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{"*":function(t){return hi(Pt({layerType:s},t))}}})},paint:function(t){return Kr({layer:r,key:t.key,value:t.value,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{"*":function(t){return pi(Pt({layerType:s},t))}}})}}}))}function di(t){var e=t.value,r=t.key,i=Dr(e);return"string"!==i?[new At(r,e,"string expected, "+i+" found")]:[]}var mi={promoteId:function(t){var e=t.key,r=t.value;if("string"===Dr(r))return di({key:e,value:r});var i=[];for(var n in r)i.push.apply(i,di({key:e+"."+n,value:r[n]}));return i}};function yi(t){var e=t.value,r=t.key,i=t.styleSpec,n=t.style;if(!e.type)return[new At(r,e,'"type" is required')];var o,a=Ct(e.type);switch(a){case"vector":case"raster":case"raster-dem":return Kr({key:r,value:e,valueSpec:i["source_"+a.replace("-","_")],style:t.style,styleSpec:i,objectElementValidators:mi});case"geojson":if(o=Kr({key:r,value:e,valueSpec:i.source_geojson,style:n,styleSpec:i,objectElementValidators:mi}),e.cluster)for(var s in e.clusterProperties){var l=e.clusterProperties[s],u=l[0],c="string"==typeof u?[u,["accumulated"],["get",s]]:u;o.push.apply(o,Qr({key:r+"."+s+".map",value:l[1],expressionContext:"cluster-map"})),o.push.apply(o,Qr({key:r+"."+s+".reduce",value:c,expressionContext:"cluster-reduce"}))}return o;case"video":return Kr({key:r,value:e,valueSpec:i.source_video,style:n,styleSpec:i});case"image":return Kr({key:r,value:e,valueSpec:i.source_image,style:n,styleSpec:i});case"canvas":return[new At(r,null,"Please use runtime APIs to add canvas sources, rather than including them in stylesheets.","source.canvas")];default:return $r({key:r+".type",value:e.type,valueSpec:{values:["vector","raster","raster-dem","geojson","video","image"]},style:n,styleSpec:i})}}function gi(t){var e=t.value,r=t.styleSpec,i=r.light,n=t.style,o=[],a=Dr(e);if(void 0===e)return o;if("object"!==a)return o.concat([new At("light",e,"object expected, "+a+" found")]);for(var s in e){var l=s.match(/^(.*)-transition$/);o=o.concat(l&&i[l[1]]&&i[l[1]].transition?vi({key:s,value:e[s],valueSpec:r.transition,style:n,styleSpec:r}):i[s]?vi({key:s,value:e[s],valueSpec:i[s],style:n,styleSpec:r}):[new At(s,e[s],'unknown property "'+s+'"')])}return o}var _i={"*":function(){return[]},array:Hr,boolean:function(t){var e=t.value,r=t.key,i=Dr(e);return"boolean"!==i?[new At(r,e,"boolean expected, "+i+" found")]:[]},number:Jr,color:function(t){var e=t.key,r=t.value,i=Dr(r);return"string"!==i?[new At(e,r,"color expected, "+i+" found")]:null===Jt(r)?[new At(e,r,'color expected, "'+r+'" found')]:[]},constants:zt,enum:$r,filter:ui,function:Yr,layer:fi,object:Kr,source:yi,light:gi,string:di,formatted:function(t){return 0===di(t).length?[]:Qr(t)},resolvedImage:function(t){return 0===di(t).length?[]:Qr(t)}};function vi(t){var e=t.value,r=t.valueSpec,i=t.styleSpec;return r.expression&&Lr(Ct(e))?Yr(t):r.expression&&jr(kt(e))?Qr(t):r.type&&_i[r.type]?_i[r.type](t):Kr(Pt({},t,{valueSpec:r.type?i[r.type]:r}))}function xi(t){var e=t.value,r=t.key,i=di(t);return i.length||(-1===e.indexOf("{fontstack}")&&i.push(new At(r,e,'"glyphs" url must include a "{fontstack}" token')),-1===e.indexOf("{range}")&&i.push(new At(r,e,'"glyphs" url must include a "{range}" token'))),i}function bi(t,e){void 0===e&&(e=Et);var r=[];return r=r.concat(vi({key:"",value:t,valueSpec:e.$root,styleSpec:e,style:t,objectElementValidators:{glyphs:xi,"*":function(){return[]}}})),t.constants&&(r=r.concat(zt({key:"constants",value:t.constants,style:t,styleSpec:e}))),wi(r)}function wi(t){return[].concat(t).sort(function(t,e){return t.line-e.line})}function Si(t){return function(){for(var e=[],r=arguments.length;r--;)e[r]=arguments[r];return wi(t.apply(this,e))}}bi.source=Si(yi),bi.light=Si(gi),bi.layer=Si(fi),bi.filter=Si(ui),bi.paintProperty=Si(pi),bi.layoutProperty=Si(hi);var Ti=bi,Ii=Ti.light,Ei=Ti.paintProperty,Ai=Ti.layoutProperty;function zi(t,e){var r=!1;if(e&&e.length)for(var i=0,n=e;i<n.length;i+=1)t.fire(new Tt(new Error(n[i].message))),r=!0;return r}var Pi=Ci;function Ci(t,e,r){var i=this.cells=[];if(t instanceof ArrayBuffer){this.arrayBuffer=t;var n=new Int32Array(this.arrayBuffer);t=n[0],this.d=(e=n[1])+2*(r=n[2]);for(var o=0;o<this.d*this.d;o++){var a=n[3+o],s=n[3+o+1];i.push(a===s?null:n.subarray(a,s))}var l=n[3+i.length+1];this.keys=n.subarray(n[3+i.length],l),this.bboxes=n.subarray(l),this.insert=this._insertReadonly}else{this.d=e+2*r;for(var u=0;u<this.d*this.d;u++)i.push([]);this.keys=[],this.bboxes=[]}this.n=e,this.extent=t,this.padding=r,this.scale=e/t,this.uid=0;var c=r/e*t;this.min=-c,this.max=t+c}Ci.prototype.insert=function(t,e,r,i,n){this._forEachCell(e,r,i,n,this._insertCell,this.uid++),this.keys.push(t),this.bboxes.push(e),this.bboxes.push(r),this.bboxes.push(i),this.bboxes.push(n)},Ci.prototype._insertReadonly=function(){throw"Cannot insert into a GridIndex created from an ArrayBuffer."},Ci.prototype._insertCell=function(t,e,r,i,n,o){this.cells[n].push(o)},Ci.prototype.query=function(t,e,r,i,n){var o=this.min,a=this.max;if(t<=o&&e<=o&&a<=r&&a<=i&&!n)return Array.prototype.slice.call(this.keys);var s=[];return this._forEachCell(t,e,r,i,this._queryCell,s,{},n),s},Ci.prototype._queryCell=function(t,e,r,i,n,o,a,s){var l=this.cells[n];if(null!==l)for(var u=this.keys,c=this.bboxes,p=0;p<l.length;p++){var h=l[p];if(void 0===a[h]){var f=4*h;(s?s(c[f+0],c[f+1],c[f+2],c[f+3]):t<=c[f+2]&&e<=c[f+3]&&r>=c[f+0]&&i>=c[f+1])?(a[h]=!0,o.push(u[h])):a[h]=!1}}},Ci.prototype._forEachCell=function(t,e,r,i,n,o,a,s){for(var l=this._convertToCellCoord(t),u=this._convertToCellCoord(e),c=this._convertToCellCoord(r),p=this._convertToCellCoord(i),h=l;h<=c;h++)for(var f=u;f<=p;f++){var d=this.d*f+h;if((!s||s(this._convertFromCellCoord(h),this._convertFromCellCoord(f),this._convertFromCellCoord(h+1),this._convertFromCellCoord(f+1)))&&n.call(this,t,e,r,i,d,o,a,s))return}},Ci.prototype._convertFromCellCoord=function(t){return(t-this.padding)/this.scale},Ci.prototype._convertToCellCoord=function(t){return Math.max(0,Math.min(this.d-1,Math.floor(t*this.scale)+this.padding))},Ci.prototype.toArrayBuffer=function(){if(this.arrayBuffer)return this.arrayBuffer;for(var t=this.cells,e=3+this.cells.length+1+1,r=0,i=0;i<this.cells.length;i++)r+=this.cells[i].length;var n=new Int32Array(e+r+this.keys.length+this.bboxes.length);n[0]=this.extent,n[1]=this.n,n[2]=this.padding;for(var o=e,a=0;a<t.length;a++){var s=t[a];n[3+a]=o,n.set(s,o),o+=s.length}return n[3+t.length]=o,n.set(this.keys,o),n[3+t.length+1]=o+=this.keys.length,n.set(this.bboxes,o),o+=this.bboxes.length,n.buffer};var ki=self.ImageData,Mi=self.ImageBitmap,Di={};function Li(t,e,r){void 0===r&&(r={}),Object.defineProperty(e,"_classRegistryKey",{value:t,writeable:!1}),Di[t]={klass:e,omit:r.omit||[],shallow:r.shallow||[]}}for(var Bi in Li("Object",Object),Pi.serialize=function(t,e){var r=t.toArrayBuffer();return e&&e.push(r),{buffer:r}},Pi.deserialize=function(t){return new Pi(t.buffer)},Li("Grid",Pi),Li("Color",Yt),Li("Error",Error),Li("ResolvedImage",ee),Li("StylePropertyFunction",Wr),Li("StyleExpression",Nr,{omit:["_evaluator"]}),Li("ZoomDependentExpression",Gr),Li("ZoomConstantExpression",Zr),Li("CompoundExpression",ye,{omit:["_evaluate"]}),Sr)Sr[Bi]._classRegistryKey||Li("Expression_"+Bi,Sr[Bi]);function Ri(t){return t&&"undefined"!=typeof ArrayBuffer&&(t instanceof ArrayBuffer||t.constructor&&"ArrayBuffer"===t.constructor.name)}function Fi(t){return Mi&&t instanceof Mi}function Oi(t,e){if(null==t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||t instanceof Boolean||t instanceof Number||t instanceof String||t instanceof Date||t instanceof RegExp)return t;if(Ri(t)||Fi(t))return e&&e.push(t),t;if(ArrayBuffer.isView(t)){var r=t;return e&&e.push(r.buffer),r}if(t instanceof ki)return e&&e.push(t.data.buffer),t;if(Array.isArray(t)){for(var i=[],n=0,o=t;n<o.length;n+=1)i.push(Oi(o[n],e));return i}if("object"==typeof t){var a=t.constructor,s=a._classRegistryKey;if(!s)throw new Error("can't serialize object of unregistered class");var l=a.serialize?a.serialize(t,e):{};if(!a.serialize){for(var u in t)if(t.hasOwnProperty(u)&&!(Di[s].omit.indexOf(u)>=0)){var c=t[u];l[u]=Di[s].shallow.indexOf(u)>=0?c:Oi(c,e)}t instanceof Error&&(l.message=t.message)}if(l.$name)throw new Error("$name property is reserved for worker serialization logic.");return"Object"!==s&&(l.$name=s),l}throw new Error("can't serialize object of type "+typeof t)}function Ui(t){if(null==t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||t instanceof Boolean||t instanceof Number||t instanceof String||t instanceof Date||t instanceof RegExp||Ri(t)||Fi(t)||ArrayBuffer.isView(t)||t instanceof ki)return t;if(Array.isArray(t))return t.map(Ui);if("object"==typeof t){var e=t.$name||"Object",r=Di[e].klass;if(!r)throw new Error("can't deserialize unregistered class "+e);if(r.deserialize)return r.deserialize(t);for(var i=Object.create(r.prototype),n=0,o=Object.keys(t);n<o.length;n+=1){var a=o[n];if("$name"!==a){var s=t[a];i[a]=Di[e].shallow.indexOf(a)>=0?s:Ui(s)}}return i}throw new Error("can't deserialize object of type "+typeof t)}var Vi=function(){this.first=!0};Vi.prototype.update=function(t,e){var r=Math.floor(t);return this.first?(this.first=!1,this.lastIntegerZoom=r,this.lastIntegerZoomTime=0,this.lastZoom=t,this.lastFloorZoom=r,!0):(this.lastFloorZoom>r?(this.lastIntegerZoom=r+1,this.lastIntegerZoomTime=e):this.lastFloorZoom<r&&(this.lastIntegerZoom=r,this.lastIntegerZoomTime=e),t!==this.lastZoom&&(this.lastZoom=t,this.lastFloorZoom=r,!0))};var Ni={"Latin-1 Supplement":function(t){return t>=128&&t<=255},Arabic:function(t){return t>=1536&&t<=1791},"Arabic Supplement":function(t){return t>=1872&&t<=1919},"Arabic Extended-A":function(t){return t>=2208&&t<=2303},"Hangul Jamo":function(t){return t>=4352&&t<=4607},"Unified Canadian Aboriginal Syllabics":function(t){return t>=5120&&t<=5759},Khmer:function(t){return t>=6016&&t<=6143},"Unified Canadian Aboriginal Syllabics Extended":function(t){return t>=6320&&t<=6399},"General Punctuation":function(t){return t>=8192&&t<=8303},"Letterlike Symbols":function(t){return t>=8448&&t<=8527},"Number Forms":function(t){return t>=8528&&t<=8591},"Miscellaneous Technical":function(t){return t>=8960&&t<=9215},"Control Pictures":function(t){return t>=9216&&t<=9279},"Optical Character Recognition":function(t){return t>=9280&&t<=9311},"Enclosed Alphanumerics":function(t){return t>=9312&&t<=9471},"Geometric Shapes":function(t){return t>=9632&&t<=9727},"Miscellaneous Symbols":function(t){return t>=9728&&t<=9983},"Miscellaneous Symbols and Arrows":function(t){return t>=11008&&t<=11263},"CJK Radicals Supplement":function(t){return t>=11904&&t<=12031},"Kangxi Radicals":function(t){return t>=12032&&t<=12255},"Ideographic Description Characters":function(t){return t>=12272&&t<=12287},"CJK Symbols and Punctuation":function(t){return t>=12288&&t<=12351},Hiragana:function(t){return t>=12352&&t<=12447},Katakana:function(t){return t>=12448&&t<=12543},Bopomofo:function(t){return t>=12544&&t<=12591},"Hangul Compatibility Jamo":function(t){return t>=12592&&t<=12687},Kanbun:function(t){return t>=12688&&t<=12703},"Bopomofo Extended":function(t){return t>=12704&&t<=12735},"CJK Strokes":function(t){return t>=12736&&t<=12783},"Katakana Phonetic Extensions":function(t){return t>=12784&&t<=12799},"Enclosed CJK Letters and Months":function(t){return t>=12800&&t<=13055},"CJK Compatibility":function(t){return t>=13056&&t<=13311},"CJK Unified Ideographs Extension A":function(t){return t>=13312&&t<=19903},"Yijing Hexagram Symbols":function(t){return t>=19904&&t<=19967},"CJK Unified Ideographs":function(t){return t>=19968&&t<=40959},"Yi Syllables":function(t){return t>=40960&&t<=42127},"Yi Radicals":function(t){return t>=42128&&t<=42191},"Hangul Jamo Extended-A":function(t){return t>=43360&&t<=43391},"Hangul Syllables":function(t){return t>=44032&&t<=55215},"Hangul Jamo Extended-B":function(t){return t>=55216&&t<=55295},"Private Use Area":function(t){return t>=57344&&t<=63743},"CJK Compatibility Ideographs":function(t){return t>=63744&&t<=64255},"Arabic Presentation Forms-A":function(t){return t>=64336&&t<=65023},"Vertical Forms":function(t){return t>=65040&&t<=65055},"CJK Compatibility Forms":function(t){return t>=65072&&t<=65103},"Small Form Variants":function(t){return t>=65104&&t<=65135},"Arabic Presentation Forms-B":function(t){return t>=65136&&t<=65279},"Halfwidth and Fullwidth Forms":function(t){return t>=65280&&t<=65519}};function ji(t){for(var e=0,r=t;e<r.length;e+=1)if(qi(r[e].charCodeAt(0)))return!0;return!1}function qi(t){return!(746!==t&&747!==t&&(t<4352||!(Ni["Bopomofo Extended"](t)||Ni.Bopomofo(t)||Ni["CJK Compatibility Forms"](t)&&!(t>=65097&&t<=65103)||Ni["CJK Compatibility Ideographs"](t)||Ni["CJK Compatibility"](t)||Ni["CJK Radicals Supplement"](t)||Ni["CJK Strokes"](t)||!(!Ni["CJK Symbols and Punctuation"](t)||t>=12296&&t<=12305||t>=12308&&t<=12319||12336===t)||Ni["CJK Unified Ideographs Extension A"](t)||Ni["CJK Unified Ideographs"](t)||Ni["Enclosed CJK Letters and Months"](t)||Ni["Hangul Compatibility Jamo"](t)||Ni["Hangul Jamo Extended-A"](t)||Ni["Hangul Jamo Extended-B"](t)||Ni["Hangul Jamo"](t)||Ni["Hangul Syllables"](t)||Ni.Hiragana(t)||Ni["Ideographic Description Characters"](t)||Ni.Kanbun(t)||Ni["Kangxi Radicals"](t)||Ni["Katakana Phonetic Extensions"](t)||Ni.Katakana(t)&&12540!==t||!(!Ni["Halfwidth and Fullwidth Forms"](t)||65288===t||65289===t||65293===t||t>=65306&&t<=65310||65339===t||65341===t||65343===t||t>=65371&&t<=65503||65507===t||t>=65512&&t<=65519)||!(!Ni["Small Form Variants"](t)||t>=65112&&t<=65118||t>=65123&&t<=65126)||Ni["Unified Canadian Aboriginal Syllabics"](t)||Ni["Unified Canadian Aboriginal Syllabics Extended"](t)||Ni["Vertical Forms"](t)||Ni["Yijing Hexagram Symbols"](t)||Ni["Yi Syllables"](t)||Ni["Yi Radicals"](t))))}function Zi(t){return!(qi(t)||function(t){return!!(Ni["Latin-1 Supplement"](t)&&(167===t||169===t||174===t||177===t||188===t||189===t||190===t||215===t||247===t)||Ni["General Punctuation"](t)&&(8214===t||8224===t||8225===t||8240===t||8241===t||8251===t||8252===t||8258===t||8263===t||8264===t||8265===t||8273===t)||Ni["Letterlike Symbols"](t)||Ni["Number Forms"](t)||Ni["Miscellaneous Technical"](t)&&(t>=8960&&t<=8967||t>=8972&&t<=8991||t>=8996&&t<=9e3||9003===t||t>=9085&&t<=9114||t>=9150&&t<=9165||9167===t||t>=9169&&t<=9179||t>=9186&&t<=9215)||Ni["Control Pictures"](t)&&9251!==t||Ni["Optical Character Recognition"](t)||Ni["Enclosed Alphanumerics"](t)||Ni["Geometric Shapes"](t)||Ni["Miscellaneous Symbols"](t)&&!(t>=9754&&t<=9759)||Ni["Miscellaneous Symbols and Arrows"](t)&&(t>=11026&&t<=11055||t>=11088&&t<=11097||t>=11192&&t<=11243)||Ni["CJK Symbols and Punctuation"](t)||Ni.Katakana(t)||Ni["Private Use Area"](t)||Ni["CJK Compatibility Forms"](t)||Ni["Small Form Variants"](t)||Ni["Halfwidth and Fullwidth Forms"](t)||8734===t||8756===t||8757===t||t>=9984&&t<=10087||t>=10102&&t<=10131||65532===t||65533===t)}(t))}function Gi(t){return t>=1424&&t<=2303||Ni["Arabic Presentation Forms-A"](t)||Ni["Arabic Presentation Forms-B"](t)}function Xi(t,e){return!(!e&&Gi(t)||t>=2304&&t<=3583||t>=3840&&t<=4255||Ni.Khmer(t))}function Wi(t){for(var e=0,r=t;e<r.length;e+=1)if(Gi(r[e].charCodeAt(0)))return!0;return!1}var Ki=null,Hi="unavailable",Ji=null,Yi=function(t){t&&"string"==typeof t&&t.indexOf("NetworkError")>-1&&(Hi="error"),Ki&&Ki(t)};function Qi(){$i.fire(new St("pluginStateChange",{pluginStatus:Hi,pluginURL:Ji}))}var $i=new It,tn=function(){return Hi},en=function(){if("deferred"!==Hi||!Ji)throw new Error("rtl-text-plugin cannot be downloaded unless a pluginURL is specified");Hi="loading",Qi(),Ji&&_t({url:Ji},function(t){t?Yi(t):(Hi="loaded",Qi())})},rn={applyArabicShaping:null,processBidirectionalText:null,processStyledBidirectionalText:null,isLoaded:function(){return"loaded"===Hi||null!=rn.applyArabicShaping},isLoading:function(){return"loading"===Hi},setState:function(t){Hi=t.pluginStatus,Ji=t.pluginURL},isParsed:function(){return null!=rn.applyArabicShaping&&null!=rn.processBidirectionalText&&null!=rn.processStyledBidirectionalText},getPluginURL:function(){return Ji}},nn=function(t,e){this.zoom=t,e?(this.now=e.now,this.fadeDuration=e.fadeDuration,this.zoomHistory=e.zoomHistory,this.transition=e.transition):(this.now=0,this.fadeDuration=0,this.zoomHistory=new Vi,this.transition={})};nn.prototype.isSupportedScript=function(t){return function(t,e){for(var r=0,i=t;r<i.length;r+=1)if(!Xi(i[r].charCodeAt(0),e))return!1;return!0}(t,rn.isLoaded())},nn.prototype.crossFadingFactor=function(){return 0===this.fadeDuration?1:Math.min((this.now-this.zoomHistory.lastIntegerZoomTime)/this.fadeDuration,1)},nn.prototype.getCrossfadeParameters=function(){var t=this.zoom,e=t-Math.floor(t),r=this.crossFadingFactor();return t>this.zoomHistory.lastIntegerZoom?{fromScale:2,toScale:1,t:e+(1-e)*r}:{fromScale:.5,toScale:1,t:1-(1-r)*e}};var on=function(t,e){this.property=t,this.value=e,this.expression=function(t,e){if(Lr(t))return new Wr(t,e);if(jr(t)){var r=Xr(t,e);if("error"===r.result)throw new Error(r.value.map(function(t){return t.key+": "+t.message}).join(", "));return r.value}var i=t;return"string"==typeof t&&"color"===e.type&&(i=Yt.parse(t)),{kind:"constant",evaluate:function(){return i}}}(void 0===e?t.specification.default:e,t.specification)};on.prototype.isDataDriven=function(){return"source"===this.expression.kind||"composite"===this.expression.kind},on.prototype.possiblyEvaluate=function(t,e,r){return this.property.possiblyEvaluate(this,t,e,r)};var an=function(t){this.property=t,this.value=new on(t,void 0)};an.prototype.transitioned=function(t,e){return new ln(this.property,this.value,e,c({},t.transition,this.transition),t.now)},an.prototype.untransitioned=function(){return new ln(this.property,this.value,null,{},0)};var sn=function(t){this._properties=t,this._values=Object.create(t.defaultTransitionablePropertyValues)};sn.prototype.getValue=function(t){return v(this._values[t].value.value)},sn.prototype.setValue=function(t,e){this._values.hasOwnProperty(t)||(this._values[t]=new an(this._values[t].property)),this._values[t].value=new on(this._values[t].property,null===e?void 0:v(e))},sn.prototype.getTransition=function(t){return v(this._values[t].transition)},sn.prototype.setTransition=function(t,e){this._values.hasOwnProperty(t)||(this._values[t]=new an(this._values[t].property)),this._values[t].transition=v(e)||void 0},sn.prototype.serialize=function(){for(var t={},e=0,r=Object.keys(this._values);e<r.length;e+=1){var i=r[e],n=this.getValue(i);void 0!==n&&(t[i]=n);var o=this.getTransition(i);void 0!==o&&(t[i+"-transition"]=o)}return t},sn.prototype.transitioned=function(t,e){for(var r=new un(this._properties),i=0,n=Object.keys(this._values);i<n.length;i+=1){var o=n[i];r._values[o]=this._values[o].transitioned(t,e._values[o])}return r},sn.prototype.untransitioned=function(){for(var t=new un(this._properties),e=0,r=Object.keys(this._values);e<r.length;e+=1){var i=r[e];t._values[i]=this._values[i].untransitioned()}return t};var ln=function(t,e,r,i,n){this.property=t,this.value=e,this.begin=n+i.delay||0,this.end=this.begin+i.duration||0,t.specification.transition&&(i.delay||i.duration)&&(this.prior=r)};ln.prototype.possiblyEvaluate=function(t,e,r){var i=t.now||0,n=this.value.possiblyEvaluate(t,e,r),o=this.prior;if(o){if(i>this.end)return this.prior=null,n;if(this.value.isDataDriven())return this.prior=null,n;if(i<this.begin)return o.possiblyEvaluate(t,e,r);var a=(i-this.begin)/(this.end-this.begin);return this.property.interpolate(o.possiblyEvaluate(t,e,r),n,function(t){if(a<=0)return 0;if(a>=1)return 1;var e=a*a,r=e*a;return 4*(a<.5?r:3*(a-e)+r-.75)}())}return n};var un=function(t){this._properties=t,this._values=Object.create(t.defaultTransitioningPropertyValues)};un.prototype.possiblyEvaluate=function(t,e,r){for(var i=new hn(this._properties),n=0,o=Object.keys(this._values);n<o.length;n+=1){var a=o[n];i._values[a]=this._values[a].possiblyEvaluate(t,e,r)}return i},un.prototype.hasTransition=function(){for(var t=0,e=Object.keys(this._values);t<e.length;t+=1)if(this._values[e[t]].prior)return!0;return!1};var cn=function(t){this._properties=t,this._values=Object.create(t.defaultPropertyValues)};cn.prototype.getValue=function(t){return v(this._values[t].value)},cn.prototype.setValue=function(t,e){this._values[t]=new on(this._values[t].property,null===e?void 0:v(e))},cn.prototype.serialize=function(){for(var t={},e=0,r=Object.keys(this._values);e<r.length;e+=1){var i=r[e],n=this.getValue(i);void 0!==n&&(t[i]=n)}return t},cn.prototype.possiblyEvaluate=function(t,e,r){for(var i=new hn(this._properties),n=0,o=Object.keys(this._values);n<o.length;n+=1){var a=o[n];i._values[a]=this._values[a].possiblyEvaluate(t,e,r)}return i};var pn=function(t,e,r){this.property=t,this.value=e,this.parameters=r};pn.prototype.isConstant=function(){return"constant"===this.value.kind},pn.prototype.constantOr=function(t){return"constant"===this.value.kind?this.value.value:t},pn.prototype.evaluate=function(t,e,r,i){return this.property.evaluate(this.value,this.parameters,t,e,r,i)};var hn=function(t){this._properties=t,this._values=Object.create(t.defaultPossiblyEvaluatedValues)};hn.prototype.get=function(t){return this._values[t]};var fn=function(t){this.specification=t};fn.prototype.possiblyEvaluate=function(t,e){return t.expression.evaluate(e)},fn.prototype.interpolate=function(t,e,r){var i=je[this.specification.type];return i?i(t,e,r):t};var dn=function(t,e){this.specification=t,this.overrides=e};dn.prototype.possiblyEvaluate=function(t,e,r,i){return new pn(this,"constant"===t.expression.kind||"camera"===t.expression.kind?{kind:"constant",value:t.expression.evaluate(e,null,{},r,i)}:t.expression,e)},dn.prototype.interpolate=function(t,e,r){if("constant"!==t.value.kind||"constant"!==e.value.kind)return t;if(void 0===t.value.value||void 0===e.value.value)return new pn(this,{kind:"constant",value:void 0},t.parameters);var i=je[this.specification.type];return i?new pn(this,{kind:"constant",value:i(t.value.value,e.value.value,r)},t.parameters):t},dn.prototype.evaluate=function(t,e,r,i,n,o){return"constant"===t.kind?t.value:t.evaluate(e,r,i,n,o)};var mn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.possiblyEvaluate=function(t,e,r,i){if(void 0===t.value)return new pn(this,{kind:"constant",value:void 0},e);if("constant"===t.expression.kind){var n=t.expression.evaluate(e,null,{},r,i),o="resolvedImage"===t.property.specification.type&&"string"!=typeof n?n.name:n,a=this._calculate(o,o,o,e);return new pn(this,{kind:"constant",value:a},e)}if("camera"===t.expression.kind){var s=this._calculate(t.expression.evaluate({zoom:e.zoom-1}),t.expression.evaluate({zoom:e.zoom}),t.expression.evaluate({zoom:e.zoom+1}),e);return new pn(this,{kind:"constant",value:s},e)}return new pn(this,t.expression,e)},e.prototype.evaluate=function(t,e,r,i,n,o){if("source"===t.kind){var a=t.evaluate(e,r,i,n,o);return this._calculate(a,a,a,e)}return"composite"===t.kind?this._calculate(t.evaluate({zoom:Math.floor(e.zoom)-1},r,i),t.evaluate({zoom:Math.floor(e.zoom)},r,i),t.evaluate({zoom:Math.floor(e.zoom)+1},r,i),e):t.value},e.prototype._calculate=function(t,e,r,i){return i.zoom>i.zoomHistory.lastIntegerZoom?{from:t,to:e}:{from:r,to:e}},e.prototype.interpolate=function(t){return t},e}(dn),yn=function(t){this.specification=t};yn.prototype.possiblyEvaluate=function(t,e,r,i){if(void 0!==t.value){if("constant"===t.expression.kind){var n=t.expression.evaluate(e,null,{},r,i);return this._calculate(n,n,n,e)}return this._calculate(t.expression.evaluate(new nn(Math.floor(e.zoom-1),e)),t.expression.evaluate(new nn(Math.floor(e.zoom),e)),t.expression.evaluate(new nn(Math.floor(e.zoom+1),e)),e)}},yn.prototype._calculate=function(t,e,r,i){return i.zoom>i.zoomHistory.lastIntegerZoom?{from:t,to:e}:{from:r,to:e}},yn.prototype.interpolate=function(t){return t};var gn=function(t){this.specification=t};gn.prototype.possiblyEvaluate=function(t,e,r,i){return!!t.expression.evaluate(e,null,{},r,i)},gn.prototype.interpolate=function(){return!1};var _n=function(t){for(var e in this.properties=t,this.defaultPropertyValues={},this.defaultTransitionablePropertyValues={},this.defaultTransitioningPropertyValues={},this.defaultPossiblyEvaluatedValues={},this.overridableProperties=[],t){var r=t[e];r.specification.overridable&&this.overridableProperties.push(e);var i=this.defaultPropertyValues[e]=new on(r,void 0),n=this.defaultTransitionablePropertyValues[e]=new an(r);this.defaultTransitioningPropertyValues[e]=n.untransitioned(),this.defaultPossiblyEvaluatedValues[e]=i.possiblyEvaluate({})}};Li("DataDrivenProperty",dn),Li("DataConstantProperty",fn),Li("CrossFadedDataDrivenProperty",mn),Li("CrossFadedProperty",yn),Li("ColorRampProperty",gn);var vn=function(t){function e(e,r){if(t.call(this),this.id=e.id,this.type=e.type,this._featureFilter={filter:function(){return!0},needGeometry:!1},"custom"!==e.type&&(this.metadata=(e=e).metadata,this.minzoom=e.minzoom,this.maxzoom=e.maxzoom,"background"!==e.type&&(this.source=e.source,this.sourceLayer=e["source-layer"],this.filter=e.filter),r.layout&&(this._unevaluatedLayout=new cn(r.layout)),r.paint)){for(var i in this._transitionablePaint=new sn(r.paint),e.paint)this.setPaintProperty(i,e.paint[i],{validate:!1});for(var n in e.layout)this.setLayoutProperty(n,e.layout[n],{validate:!1});this._transitioningPaint=this._transitionablePaint.untransitioned(),this.paint=new hn(r.paint)}}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getCrossfadeParameters=function(){return this._crossfadeParameters},e.prototype.getLayoutProperty=function(t){return"visibility"===t?this.visibility:this._unevaluatedLayout.getValue(t)},e.prototype.setLayoutProperty=function(t,e,r){void 0===r&&(r={}),null!=e&&this._validate(Ai,"layers."+this.id+".layout."+t,t,e,r)||("visibility"!==t?this._unevaluatedLayout.setValue(t,e):this.visibility=e)},e.prototype.getPaintProperty=function(t){return y(t,"-transition")?this._transitionablePaint.getTransition(t.slice(0,-"-transition".length)):this._transitionablePaint.getValue(t)},e.prototype.setPaintProperty=function(t,e,r){if(void 0===r&&(r={}),null!=e&&this._validate(Ei,"layers."+this.id+".paint."+t,t,e,r))return!1;if(y(t,"-transition"))return this._transitionablePaint.setTransition(t.slice(0,-"-transition".length),e||void 0),!1;var i=this._transitionablePaint._values[t],n="cross-faded-data-driven"===i.property.specification["property-type"],o=i.value.isDataDriven(),a=i.value;this._transitionablePaint.setValue(t,e),this._handleSpecialPaintPropertyUpdate(t);var s=this._transitionablePaint._values[t].value;return s.isDataDriven()||o||n||this._handleOverridablePaintPropertyUpdate(t,a,s)},e.prototype._handleSpecialPaintPropertyUpdate=function(t){},e.prototype._handleOverridablePaintPropertyUpdate=function(t,e,r){return!1},e.prototype.isHidden=function(t){return!!(this.minzoom&&t<this.minzoom)||!!(this.maxzoom&&t>=this.maxzoom)||"none"===this.visibility},e.prototype.updateTransitions=function(t){this._transitioningPaint=this._transitionablePaint.transitioned(t,this._transitioningPaint)},e.prototype.hasTransition=function(){return this._transitioningPaint.hasTransition()},e.prototype.recalculate=function(t,e){t.getCrossfadeParameters&&(this._crossfadeParameters=t.getCrossfadeParameters()),this._unevaluatedLayout&&(this.layout=this._unevaluatedLayout.possiblyEvaluate(t,void 0,e)),this.paint=this._transitioningPaint.possiblyEvaluate(t,void 0,e)},e.prototype.serialize=function(){var t={id:this.id,type:this.type,source:this.source,"source-layer":this.sourceLayer,metadata:this.metadata,minzoom:this.minzoom,maxzoom:this.maxzoom,filter:this.filter,layout:this._unevaluatedLayout&&this._unevaluatedLayout.serialize(),paint:this._transitionablePaint&&this._transitionablePaint.serialize()};return this.visibility&&(t.layout=t.layout||{},t.layout.visibility=this.visibility),_(t,function(t,e){return!(void 0===t||"layout"===e&&!Object.keys(t).length||"paint"===e&&!Object.keys(t).length)})},e.prototype._validate=function(t,e,r,i,n){return void 0===n&&(n={}),(!n||!1!==n.validate)&&zi(this,t.call(Ti,{key:e,layerType:this.type,objectKey:r,value:i,styleSpec:Et,style:{glyphs:!0,sprite:!0}}))},e.prototype.is3D=function(){return!1},e.prototype.isTileClipped=function(){return!1},e.prototype.hasOffscreenPass=function(){return!1},e.prototype.resize=function(){},e.prototype.isStateDependent=function(){for(var t in this.paint._values){var e=this.paint.get(t);if(e instanceof pn&&Cr(e.property.specification)&&("source"===e.value.kind||"composite"===e.value.kind)&&e.value.isStateDependent)return!0}return!1},e}(It),xn={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array},bn=function(t,e){this._structArray=t,this._pos1=e*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8},wn=function(){this.isTransferred=!1,this.capacity=-1,this.resize(0)};function Sn(t,e){void 0===e&&(e=1);var r=0,i=0;return{members:t.map(function(t){var n=xn[t.type].BYTES_PER_ELEMENT,o=r=Tn(r,Math.max(e,n)),a=t.components||1;return i=Math.max(i,n),r+=n*a,{name:t.name,type:t.type,components:a,offset:o}}),size:Tn(r,Math.max(i,e)),alignment:e}}function Tn(t,e){return Math.ceil(t/e)*e}wn.serialize=function(t,e){return t._trim(),e&&(t.isTransferred=!0,e.push(t.arrayBuffer)),{length:t.length,arrayBuffer:t.arrayBuffer}},wn.deserialize=function(t){var e=Object.create(this.prototype);return e.arrayBuffer=t.arrayBuffer,e.length=t.length,e.capacity=t.arrayBuffer.byteLength/e.bytesPerElement,e._refreshViews(),e},wn.prototype._trim=function(){this.length!==this.capacity&&(this.capacity=this.length,this.arrayBuffer=this.arrayBuffer.slice(0,this.length*this.bytesPerElement),this._refreshViews())},wn.prototype.clear=function(){this.length=0},wn.prototype.resize=function(t){this.reserve(t),this.length=t},wn.prototype.reserve=function(t){if(t>this.capacity){this.capacity=Math.max(t,Math.floor(5*this.capacity),128),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);var e=this.uint8;this._refreshViews(),e&&this.uint8.set(e)}},wn.prototype._refreshViews=function(){throw new Error("_refreshViews() must be implemented by each concrete StructArray layout")};var In=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e){var r=this.length;return this.resize(r+1),this.emplace(r,t,e)},e.prototype.emplace=function(t,e,r){var i=2*t;return this.int16[i+0]=e,this.int16[i+1]=r,t},e}(wn);In.prototype.bytesPerElement=4,Li("StructArrayLayout2i4",In);var En=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,i){var n=this.length;return this.resize(n+1),this.emplace(n,t,e,r,i)},e.prototype.emplace=function(t,e,r,i,n){var o=4*t;return this.int16[o+0]=e,this.int16[o+1]=r,this.int16[o+2]=i,this.int16[o+3]=n,t},e}(wn);En.prototype.bytesPerElement=8,Li("StructArrayLayout4i8",En);var An=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,i,n,o){var a=this.length;return this.resize(a+1),this.emplace(a,t,e,r,i,n,o)},e.prototype.emplace=function(t,e,r,i,n,o,a){var s=6*t;return this.int16[s+0]=e,this.int16[s+1]=r,this.int16[s+2]=i,this.int16[s+3]=n,this.int16[s+4]=o,this.int16[s+5]=a,t},e}(wn);An.prototype.bytesPerElement=12,Li("StructArrayLayout2i4i12",An);var zn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,i,n,o){var a=this.length;return this.resize(a+1),this.emplace(a,t,e,r,i,n,o)},e.prototype.emplace=function(t,e,r,i,n,o,a){var s=4*t,l=8*t;return this.int16[s+0]=e,this.int16[s+1]=r,this.uint8[l+4]=i,this.uint8[l+5]=n,this.uint8[l+6]=o,this.uint8[l+7]=a,t},e}(wn);zn.prototype.bytesPerElement=8,Li("StructArrayLayout2i4ub8",zn);var Pn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,i,n,o,a,s,l,u){var c=this.length;return this.resize(c+1),this.emplace(c,t,e,r,i,n,o,a,s,l,u)},e.prototype.emplace=function(t,e,r,i,n,o,a,s,l,u,c){var p=9*t,h=18*t;return this.uint16[p+0]=e,this.uint16[p+1]=r,this.uint16[p+2]=i,this.uint16[p+3]=n,this.uint16[p+4]=o,this.uint16[p+5]=a,this.uint16[p+6]=s,this.uint16[p+7]=l,this.uint8[h+16]=u,this.uint8[h+17]=c,t},e}(wn);Pn.prototype.bytesPerElement=18,Li("StructArrayLayout8ui2ub18",Pn);var Cn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,i,n,o,a,s,l,u,c,p){var h=this.length;return this.resize(h+1),this.emplace(h,t,e,r,i,n,o,a,s,l,u,c,p)},e.prototype.emplace=function(t,e,r,i,n,o,a,s,l,u,c,p,h){var f=12*t;return this.int16[f+0]=e,this.int16[f+1]=r,this.int16[f+2]=i,this.int16[f+3]=n,this.uint16[f+4]=o,this.uint16[f+5]=a,this.uint16[f+6]=s,this.uint16[f+7]=l,this.int16[f+8]=u,this.int16[f+9]=c,this.int16[f+10]=p,this.int16[f+11]=h,t},e}(wn);Cn.prototype.bytesPerElement=24,Li("StructArrayLayout4i4ui4i24",Cn);var kn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r){var i=this.length;return this.resize(i+1),this.emplace(i,t,e,r)},e.prototype.emplace=function(t,e,r,i){var n=3*t;return this.float32[n+0]=e,this.float32[n+1]=r,this.float32[n+2]=i,t},e}(wn);kn.prototype.bytesPerElement=12,Li("StructArrayLayout3f12",kn);var Mn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t){var e=this.length;return this.resize(e+1),this.emplace(e,t)},e.prototype.emplace=function(t,e){return this.uint32[1*t+0]=e,t},e}(wn);Mn.prototype.bytesPerElement=4,Li("StructArrayLayout1ul4",Mn);var Dn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,i,n,o,a,s,l){var u=this.length;return this.resize(u+1),this.emplace(u,t,e,r,i,n,o,a,s,l)},e.prototype.emplace=function(t,e,r,i,n,o,a,s,l,u){var c=10*t,p=5*t;return this.int16[c+0]=e,this.int16[c+1]=r,this.int16[c+2]=i,this.int16[c+3]=n,this.int16[c+4]=o,this.int16[c+5]=a,this.uint32[p+3]=s,this.uint16[c+8]=l,this.uint16[c+9]=u,t},e}(wn);Dn.prototype.bytesPerElement=20,Li("StructArrayLayout6i1ul2ui20",Dn);var Ln=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,i,n,o){var a=this.length;return this.resize(a+1),this.emplace(a,t,e,r,i,n,o)},e.prototype.emplace=function(t,e,r,i,n,o,a){var s=6*t;return this.int16[s+0]=e,this.int16[s+1]=r,this.int16[s+2]=i,this.int16[s+3]=n,this.int16[s+4]=o,this.int16[s+5]=a,t},e}(wn);Ln.prototype.bytesPerElement=12,Li("StructArrayLayout2i2i2i12",Ln);var Bn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,i,n){var o=this.length;return this.resize(o+1),this.emplace(o,t,e,r,i,n)},e.prototype.emplace=function(t,e,r,i,n,o){var a=4*t,s=8*t;return this.float32[a+0]=e,this.float32[a+1]=r,this.float32[a+2]=i,this.int16[s+6]=n,this.int16[s+7]=o,t},e}(wn);Bn.prototype.bytesPerElement=16,Li("StructArrayLayout2f1f2i16",Bn);var Rn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,i){var n=this.length;return this.resize(n+1),this.emplace(n,t,e,r,i)},e.prototype.emplace=function(t,e,r,i,n){var o=12*t,a=3*t;return this.uint8[o+0]=e,this.uint8[o+1]=r,this.float32[a+1]=i,this.float32[a+2]=n,t},e}(wn);Rn.prototype.bytesPerElement=12,Li("StructArrayLayout2ub2f12",Rn);var Fn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r){var i=this.length;return this.resize(i+1),this.emplace(i,t,e,r)},e.prototype.emplace=function(t,e,r,i){var n=3*t;return this.uint16[n+0]=e,this.uint16[n+1]=r,this.uint16[n+2]=i,t},e}(wn);Fn.prototype.bytesPerElement=6,Li("StructArrayLayout3ui6",Fn);var On=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,i,n,o,a,s,l,u,c,p,h,f,d,m,y){var g=this.length;return this.resize(g+1),this.emplace(g,t,e,r,i,n,o,a,s,l,u,c,p,h,f,d,m,y)},e.prototype.emplace=function(t,e,r,i,n,o,a,s,l,u,c,p,h,f,d,m,y,g){var _=24*t,v=12*t,x=48*t;return this.int16[_+0]=e,this.int16[_+1]=r,this.uint16[_+2]=i,this.uint16[_+3]=n,this.uint32[v+2]=o,this.uint32[v+3]=a,this.uint32[v+4]=s,this.uint16[_+10]=l,this.uint16[_+11]=u,this.uint16[_+12]=c,this.float32[v+7]=p,this.float32[v+8]=h,this.uint8[x+36]=f,this.uint8[x+37]=d,this.uint8[x+38]=m,this.uint32[v+10]=y,this.int16[_+22]=g,t},e}(wn);On.prototype.bytesPerElement=48,Li("StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48",On);var Un=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,i,n,o,a,s,l,u,c,p,h,f,d,m,y,g,_,v,x,b,w,S,T,I,E,A){var z=this.length;return this.resize(z+1),this.emplace(z,t,e,r,i,n,o,a,s,l,u,c,p,h,f,d,m,y,g,_,v,x,b,w,S,T,I,E,A)},e.prototype.emplace=function(t,e,r,i,n,o,a,s,l,u,c,p,h,f,d,m,y,g,_,v,x,b,w,S,T,I,E,A,z){var P=34*t,C=17*t;return this.int16[P+0]=e,this.int16[P+1]=r,this.int16[P+2]=i,this.int16[P+3]=n,this.int16[P+4]=o,this.int16[P+5]=a,this.int16[P+6]=s,this.int16[P+7]=l,this.uint16[P+8]=u,this.uint16[P+9]=c,this.uint16[P+10]=p,this.uint16[P+11]=h,this.uint16[P+12]=f,this.uint16[P+13]=d,this.uint16[P+14]=m,this.uint16[P+15]=y,this.uint16[P+16]=g,this.uint16[P+17]=_,this.uint16[P+18]=v,this.uint16[P+19]=x,this.uint16[P+20]=b,this.uint16[P+21]=w,this.uint16[P+22]=S,this.uint32[C+12]=T,this.float32[C+13]=I,this.float32[C+14]=E,this.float32[C+15]=A,this.float32[C+16]=z,t},e}(wn);Un.prototype.bytesPerElement=68,Li("StructArrayLayout8i15ui1ul4f68",Un);var Vn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t){var e=this.length;return this.resize(e+1),this.emplace(e,t)},e.prototype.emplace=function(t,e){return this.float32[1*t+0]=e,t},e}(wn);Vn.prototype.bytesPerElement=4,Li("StructArrayLayout1f4",Vn);var Nn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r){var i=this.length;return this.resize(i+1),this.emplace(i,t,e,r)},e.prototype.emplace=function(t,e,r,i){var n=3*t;return this.int16[n+0]=e,this.int16[n+1]=r,this.int16[n+2]=i,t},e}(wn);Nn.prototype.bytesPerElement=6,Li("StructArrayLayout3i6",Nn);var jn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r){var i=this.length;return this.resize(i+1),this.emplace(i,t,e,r)},e.prototype.emplace=function(t,e,r,i){var n=4*t;return this.uint32[2*t+0]=e,this.uint16[n+2]=r,this.uint16[n+3]=i,t},e}(wn);jn.prototype.bytesPerElement=8,Li("StructArrayLayout1ul2ui8",jn);var qn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e){var r=this.length;return this.resize(r+1),this.emplace(r,t,e)},e.prototype.emplace=function(t,e,r){var i=2*t;return this.uint16[i+0]=e,this.uint16[i+1]=r,t},e}(wn);qn.prototype.bytesPerElement=4,Li("StructArrayLayout2ui4",qn);var Zn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t){var e=this.length;return this.resize(e+1),this.emplace(e,t)},e.prototype.emplace=function(t,e){return this.uint16[1*t+0]=e,t},e}(wn);Zn.prototype.bytesPerElement=2,Li("StructArrayLayout1ui2",Zn);var Gn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e){var r=this.length;return this.resize(r+1),this.emplace(r,t,e)},e.prototype.emplace=function(t,e,r){var i=2*t;return this.float32[i+0]=e,this.float32[i+1]=r,t},e}(wn);Gn.prototype.bytesPerElement=8,Li("StructArrayLayout2f8",Gn);var Xn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,i){var n=this.length;return this.resize(n+1),this.emplace(n,t,e,r,i)},e.prototype.emplace=function(t,e,r,i,n){var o=4*t;return this.float32[o+0]=e,this.float32[o+1]=r,this.float32[o+2]=i,this.float32[o+3]=n,t},e}(wn);Xn.prototype.bytesPerElement=16,Li("StructArrayLayout4f16",Xn);var Wn=function(t){function e(){t.apply(this,arguments)}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var r={anchorPointX:{configurable:!0},anchorPointY:{configurable:!0},x1:{configurable:!0},y1:{configurable:!0},x2:{configurable:!0},y2:{configurable:!0},featureIndex:{configurable:!0},sourceLayerIndex:{configurable:!0},bucketIndex:{configurable:!0},anchorPoint:{configurable:!0}};return r.anchorPointX.get=function(){return this._structArray.int16[this._pos2+0]},r.anchorPointY.get=function(){return this._structArray.int16[this._pos2+1]},r.x1.get=function(){return this._structArray.int16[this._pos2+2]},r.y1.get=function(){return this._structArray.int16[this._pos2+3]},r.x2.get=function(){return this._structArray.int16[this._pos2+4]},r.y2.get=function(){return this._structArray.int16[this._pos2+5]},r.featureIndex.get=function(){return this._structArray.uint32[this._pos4+3]},r.sourceLayerIndex.get=function(){return this._structArray.uint16[this._pos2+8]},r.bucketIndex.get=function(){return this._structArray.uint16[this._pos2+9]},r.anchorPoint.get=function(){return new n(this.anchorPointX,this.anchorPointY)},Object.defineProperties(e.prototype,r),e}(bn);Wn.prototype.size=20;var Kn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.get=function(t){return new Wn(this,t)},e}(Dn);Li("CollisionBoxArray",Kn);var Hn=function(t){function e(){t.apply(this,arguments)}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var r={anchorX:{configurable:!0},anchorY:{configurable:!0},glyphStartIndex:{configurable:!0},numGlyphs:{configurable:!0},vertexStartIndex:{configurable:!0},lineStartIndex:{configurable:!0},lineLength:{configurable:!0},segment:{configurable:!0},lowerSize:{configurable:!0},upperSize:{configurable:!0},lineOffsetX:{configurable:!0},lineOffsetY:{configurable:!0},writingMode:{configurable:!0},placedOrientation:{configurable:!0},hidden:{configurable:!0},crossTileID:{configurable:!0},associatedIconIndex:{configurable:!0}};return r.anchorX.get=function(){return this._structArray.int16[this._pos2+0]},r.anchorY.get=function(){return this._structArray.int16[this._pos2+1]},r.glyphStartIndex.get=function(){return this._structArray.uint16[this._pos2+2]},r.numGlyphs.get=function(){return this._structArray.uint16[this._pos2+3]},r.vertexStartIndex.get=function(){return this._structArray.uint32[this._pos4+2]},r.lineStartIndex.get=function(){return this._structArray.uint32[this._pos4+3]},r.lineLength.get=function(){return this._structArray.uint32[this._pos4+4]},r.segment.get=function(){return this._structArray.uint16[this._pos2+10]},r.lowerSize.get=function(){return this._structArray.uint16[this._pos2+11]},r.upperSize.get=function(){return this._structArray.uint16[this._pos2+12]},r.lineOffsetX.get=function(){return this._structArray.float32[this._pos4+7]},r.lineOffsetY.get=function(){return this._structArray.float32[this._pos4+8]},r.writingMode.get=function(){return this._structArray.uint8[this._pos1+36]},r.placedOrientation.get=function(){return this._structArray.uint8[this._pos1+37]},r.placedOrientation.set=function(t){this._structArray.uint8[this._pos1+37]=t},r.hidden.get=function(){return this._structArray.uint8[this._pos1+38]},r.hidden.set=function(t){this._structArray.uint8[this._pos1+38]=t},r.crossTileID.get=function(){return this._structArray.uint32[this._pos4+10]},r.crossTileID.set=function(t){this._structArray.uint32[this._pos4+10]=t},r.associatedIconIndex.get=function(){return this._structArray.int16[this._pos2+22]},Object.defineProperties(e.prototype,r),e}(bn);Hn.prototype.size=48;var Jn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.get=function(t){return new Hn(this,t)},e}(On);Li("PlacedSymbolArray",Jn);var Yn=function(t){function e(){t.apply(this,arguments)}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var r={anchorX:{configurable:!0},anchorY:{configurable:!0},rightJustifiedTextSymbolIndex:{configurable:!0},centerJustifiedTextSymbolIndex:{configurable:!0},leftJustifiedTextSymbolIndex:{configurable:!0},verticalPlacedTextSymbolIndex:{configurable:!0},placedIconSymbolIndex:{configurable:!0},verticalPlacedIconSymbolIndex:{configurable:!0},key:{configurable:!0},textBoxStartIndex:{configurable:!0},textBoxEndIndex:{configurable:!0},verticalTextBoxStartIndex:{configurable:!0},verticalTextBoxEndIndex:{configurable:!0},iconBoxStartIndex:{configurable:!0},iconBoxEndIndex:{configurable:!0},verticalIconBoxStartIndex:{configurable:!0},verticalIconBoxEndIndex:{configurable:!0},featureIndex:{configurable:!0},numHorizontalGlyphVertices:{configurable:!0},numVerticalGlyphVertices:{configurable:!0},numIconVertices:{configurable:!0},numVerticalIconVertices:{configurable:!0},useRuntimeCollisionCircles:{configurable:!0},crossTileID:{configurable:!0},textBoxScale:{configurable:!0},textOffset0:{configurable:!0},textOffset1:{configurable:!0},collisionCircleDiameter:{configurable:!0}};return r.anchorX.get=function(){return this._structArray.int16[this._pos2+0]},r.anchorY.get=function(){return this._structArray.int16[this._pos2+1]},r.rightJustifiedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+2]},r.centerJustifiedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+3]},r.leftJustifiedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+4]},r.verticalPlacedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+5]},r.placedIconSymbolIndex.get=function(){return this._structArray.int16[this._pos2+6]},r.verticalPlacedIconSymbolIndex.get=function(){return this._structArray.int16[this._pos2+7]},r.key.get=function(){return this._structArray.uint16[this._pos2+8]},r.textBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+9]},r.textBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+10]},r.verticalTextBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+11]},r.verticalTextBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+12]},r.iconBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+13]},r.iconBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+14]},r.verticalIconBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+15]},r.verticalIconBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+16]},r.featureIndex.get=function(){return this._structArray.uint16[this._pos2+17]},r.numHorizontalGlyphVertices.get=function(){return this._structArray.uint16[this._pos2+18]},r.numVerticalGlyphVertices.get=function(){return this._structArray.uint16[this._pos2+19]},r.numIconVertices.get=function(){return this._structArray.uint16[this._pos2+20]},r.numVerticalIconVertices.get=function(){return this._structArray.uint16[this._pos2+21]},r.useRuntimeCollisionCircles.get=function(){return this._structArray.uint16[this._pos2+22]},r.crossTileID.get=function(){return this._structArray.uint32[this._pos4+12]},r.crossTileID.set=function(t){this._structArray.uint32[this._pos4+12]=t},r.textBoxScale.get=function(){return this._structArray.float32[this._pos4+13]},r.textOffset0.get=function(){return this._structArray.float32[this._pos4+14]},r.textOffset1.get=function(){return this._structArray.float32[this._pos4+15]},r.collisionCircleDiameter.get=function(){return this._structArray.float32[this._pos4+16]},Object.defineProperties(e.prototype,r),e}(bn);Yn.prototype.size=68;var Qn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.get=function(t){return new Yn(this,t)},e}(Un);Li("SymbolInstanceArray",Qn);var $n=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getoffsetX=function(t){return this.float32[1*t+0]},e}(Vn);Li("GlyphOffsetArray",$n);var to=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getx=function(t){return this.int16[3*t+0]},e.prototype.gety=function(t){return this.int16[3*t+1]},e.prototype.gettileUnitDistanceFromAnchor=function(t){return this.int16[3*t+2]},e}(Nn);Li("SymbolLineVertexArray",to);var eo=function(t){function e(){t.apply(this,arguments)}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var r={featureIndex:{configurable:!0},sourceLayerIndex:{configurable:!0},bucketIndex:{configurable:!0}};return r.featureIndex.get=function(){return this._structArray.uint32[this._pos4+0]},r.sourceLayerIndex.get=function(){return this._structArray.uint16[this._pos2+2]},r.bucketIndex.get=function(){return this._structArray.uint16[this._pos2+3]},Object.defineProperties(e.prototype,r),e}(bn);eo.prototype.size=8;var ro=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.get=function(t){return new eo(this,t)},e}(jn);Li("FeatureIndexArray",ro);var io=Sn([{name:"a_pos",components:2,type:"Int16"}],4).members,no=function(t){void 0===t&&(t=[]),this.segments=t};function oo(t,e){return 256*(t=l(Math.floor(t),0,255))+l(Math.floor(e),0,255)}no.prototype.prepareSegment=function(t,e,r,i){var n=this.segments[this.segments.length-1];return t>no.MAX_VERTEX_ARRAY_LENGTH&&b("Max vertices per segment is "+no.MAX_VERTEX_ARRAY_LENGTH+": bucket requested "+t),(!n||n.vertexLength+t>no.MAX_VERTEX_ARRAY_LENGTH||n.sortKey!==i)&&(n={vertexOffset:e.length,primitiveOffset:r.length,vertexLength:0,primitiveLength:0},void 0!==i&&(n.sortKey=i),this.segments.push(n)),n},no.prototype.get=function(){return this.segments},no.prototype.destroy=function(){for(var t=0,e=this.segments;t<e.length;t+=1){var r=e[t];for(var i in r.vaos)r.vaos[i].destroy()}},no.simpleSegment=function(t,e,r,i){return new no([{vertexOffset:t,primitiveOffset:e,vertexLength:r,primitiveLength:i,vaos:{},sortKey:0}])},no.MAX_VERTEX_ARRAY_LENGTH=Math.pow(2,16)-1,Li("SegmentVector",no);var ao=Sn([{name:"a_pattern_from",components:4,type:"Uint16"},{name:"a_pattern_to",components:4,type:"Uint16"},{name:"a_pixel_ratio_from",components:1,type:"Uint8"},{name:"a_pixel_ratio_to",components:1,type:"Uint8"}]),so=e(function(t){t.exports=function(t,e){var r,i,n,o,a,s,l,u;for(i=t.length-(r=3&t.length),n=e,a=3432918353,s=461845907,u=0;u<i;)l=255&t.charCodeAt(u)|(255&t.charCodeAt(++u))<<8|(255&t.charCodeAt(++u))<<16|(255&t.charCodeAt(++u))<<24,++u,n=27492+(65535&(o=5*(65535&(n=(n^=l=(65535&(l=(l=(65535&l)*a+(((l>>>16)*a&65535)<<16)&4294967295)<<15|l>>>17))*s+(((l>>>16)*s&65535)<<16)&4294967295)<<13|n>>>19))+((5*(n>>>16)&65535)<<16)&4294967295))+((58964+(o>>>16)&65535)<<16);switch(l=0,r){case 3:l^=(255&t.charCodeAt(u+2))<<16;case 2:l^=(255&t.charCodeAt(u+1))<<8;case 1:n^=l=(65535&(l=(l=(65535&(l^=255&t.charCodeAt(u)))*a+(((l>>>16)*a&65535)<<16)&4294967295)<<15|l>>>17))*s+(((l>>>16)*s&65535)<<16)&4294967295}return n^=t.length,n=2246822507*(65535&(n^=n>>>16))+((2246822507*(n>>>16)&65535)<<16)&4294967295,n=3266489909*(65535&(n^=n>>>13))+((3266489909*(n>>>16)&65535)<<16)&4294967295,(n^=n>>>16)>>>0}}),lo=e(function(t){t.exports=function(t,e){for(var r,i=t.length,n=e^i,o=0;i>=4;)r=1540483477*(65535&(r=255&t.charCodeAt(o)|(255&t.charCodeAt(++o))<<8|(255&t.charCodeAt(++o))<<16|(255&t.charCodeAt(++o))<<24))+((1540483477*(r>>>16)&65535)<<16),n=1540483477*(65535&n)+((1540483477*(n>>>16)&65535)<<16)^(r=1540483477*(65535&(r^=r>>>24))+((1540483477*(r>>>16)&65535)<<16)),i-=4,++o;switch(i){case 3:n^=(255&t.charCodeAt(o+2))<<16;case 2:n^=(255&t.charCodeAt(o+1))<<8;case 1:n=1540483477*(65535&(n^=255&t.charCodeAt(o)))+((1540483477*(n>>>16)&65535)<<16)}return n=1540483477*(65535&(n^=n>>>13))+((1540483477*(n>>>16)&65535)<<16),(n^=n>>>15)>>>0}}),uo=so,co=lo;uo.murmur3=so,uo.murmur2=co;var po=function(){this.ids=[],this.positions=[],this.indexed=!1};po.prototype.add=function(t,e,r,i){this.ids.push(fo(t)),this.positions.push(e,r,i)},po.prototype.getPositions=function(t){for(var e=fo(t),r=0,i=this.ids.length-1;r<i;){var n=r+i>>1;this.ids[n]>=e?i=n:r=n+1}for(var o=[];this.ids[r]===e;)o.push({index:this.positions[3*r],start:this.positions[3*r+1],end:this.positions[3*r+2]}),r++;return o},po.serialize=function(t,e){var r=new Float64Array(t.ids),i=new Uint32Array(t.positions);return function t(e,r,i,n){for(;i<n;){for(var o=e[i+n>>1],a=i-1,s=n+1;;){do{a++}while(e[a]<o);do{s--}while(e[s]>o);if(a>=s)break;mo(e,a,s),mo(r,3*a,3*s),mo(r,3*a+1,3*s+1),mo(r,3*a+2,3*s+2)}s-i<n-s?(t(e,r,i,s),i=s+1):(t(e,r,s+1,n),n=s)}}(r,i,0,r.length-1),e&&e.push(r.buffer,i.buffer),{ids:r,positions:i}},po.deserialize=function(t){var e=new po;return e.ids=t.ids,e.positions=t.positions,e.indexed=!0,e};var ho=Math.pow(2,53)-1;function fo(t){var e=+t;return!isNaN(e)&&e<=ho?e:uo(String(t))}function mo(t,e,r){var i=t[e];t[e]=t[r],t[r]=i}Li("FeaturePositionMap",po);var yo=function(t,e){this.gl=t.gl,this.location=e},go=function(t){function e(e,r){t.call(this,e,r),this.current=0}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.set=function(t){this.current!==t&&(this.current=t,this.gl.uniform1i(this.location,t))},e}(yo),_o=function(t){function e(e,r){t.call(this,e,r),this.current=0}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.set=function(t){this.current!==t&&(this.current=t,this.gl.uniform1f(this.location,t))},e}(yo),vo=function(t){function e(e,r){t.call(this,e,r),this.current=[0,0]}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.set=function(t){t[0]===this.current[0]&&t[1]===this.current[1]||(this.current=t,this.gl.uniform2f(this.location,t[0],t[1]))},e}(yo),xo=function(t){function e(e,r){t.call(this,e,r),this.current=[0,0,0]}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.set=function(t){t[0]===this.current[0]&&t[1]===this.current[1]&&t[2]===this.current[2]||(this.current=t,this.gl.uniform3f(this.location,t[0],t[1],t[2]))},e}(yo),bo=function(t){function e(e,r){t.call(this,e,r),this.current=[0,0,0,0]}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.set=function(t){t[0]===this.current[0]&&t[1]===this.current[1]&&t[2]===this.current[2]&&t[3]===this.current[3]||(this.current=t,this.gl.uniform4f(this.location,t[0],t[1],t[2],t[3]))},e}(yo),wo=function(t){function e(e,r){t.call(this,e,r),this.current=Yt.transparent}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.set=function(t){t.r===this.current.r&&t.g===this.current.g&&t.b===this.current.b&&t.a===this.current.a||(this.current=t,this.gl.uniform4f(this.location,t.r,t.g,t.b,t.a))},e}(yo),So=new Float32Array(16),To=function(t){function e(e,r){t.call(this,e,r),this.current=So}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.set=function(t){if(t[12]!==this.current[12]||t[0]!==this.current[0])return this.current=t,void this.gl.uniformMatrix4fv(this.location,!1,t);for(var e=1;e<16;e++)if(t[e]!==this.current[e]){this.current=t,this.gl.uniformMatrix4fv(this.location,!1,t);break}},e}(yo);function Io(t){return[oo(255*t.r,255*t.g),oo(255*t.b,255*t.a)]}var Eo=function(t,e,r){this.value=t,this.uniformNames=e.map(function(t){return"u_"+t}),this.type=r};Eo.prototype.setUniform=function(t,e,r){t.set(r.constantOr(this.value))},Eo.prototype.getBinding=function(t,e,r){return"color"===this.type?new wo(t,e):new _o(t,e)};var Ao=function(t,e){this.uniformNames=e.map(function(t){return"u_"+t}),this.patternFrom=null,this.patternTo=null,this.pixelRatioFrom=1,this.pixelRatioTo=1};Ao.prototype.setConstantPatternPositions=function(t,e){this.pixelRatioFrom=e.pixelRatio,this.pixelRatioTo=t.pixelRatio,this.patternFrom=e.tlbr,this.patternTo=t.tlbr},Ao.prototype.setUniform=function(t,e,r,i){var n="u_pattern_to"===i?this.patternTo:"u_pattern_from"===i?this.patternFrom:"u_pixel_ratio_to"===i?this.pixelRatioTo:"u_pixel_ratio_from"===i?this.pixelRatioFrom:null;n&&t.set(n)},Ao.prototype.getBinding=function(t,e,r){return"u_pattern"===r.substr(0,9)?new bo(t,e):new _o(t,e)};var zo=function(t,e,r,i){this.expression=t,this.type=r,this.maxValue=0,this.paintVertexAttributes=e.map(function(t){return{name:"a_"+t,type:"Float32",components:"color"===r?2:1,offset:0}}),this.paintVertexArray=new i};zo.prototype.populatePaintArray=function(t,e,r,i,n){var o=this.paintVertexArray.length,a=this.expression.evaluate(new nn(0),e,{},i,[],n);this.paintVertexArray.resize(t),this._setPaintValue(o,t,a)},zo.prototype.updatePaintArray=function(t,e,r,i){var n=this.expression.evaluate({zoom:0},r,i);this._setPaintValue(t,e,n)},zo.prototype._setPaintValue=function(t,e,r){if("color"===this.type)for(var i=Io(r),n=t;n<e;n++)this.paintVertexArray.emplace(n,i[0],i[1]);else{for(var o=t;o<e;o++)this.paintVertexArray.emplace(o,r);this.maxValue=Math.max(this.maxValue,Math.abs(r))}},zo.prototype.upload=function(t){this.paintVertexArray&&this.paintVertexArray.arrayBuffer&&(this.paintVertexBuffer&&this.paintVertexBuffer.buffer?this.paintVertexBuffer.updateData(this.paintVertexArray):this.paintVertexBuffer=t.createVertexBuffer(this.paintVertexArray,this.paintVertexAttributes,this.expression.isStateDependent))},zo.prototype.destroy=function(){this.paintVertexBuffer&&this.paintVertexBuffer.destroy()};var Po=function(t,e,r,i,n,o){this.expression=t,this.uniformNames=e.map(function(t){return"u_"+t+"_t"}),this.type=r,this.useIntegerZoom=i,this.zoom=n,this.maxValue=0,this.paintVertexAttributes=e.map(function(t){return{name:"a_"+t,type:"Float32",components:"color"===r?4:2,offset:0}}),this.paintVertexArray=new o};Po.prototype.populatePaintArray=function(t,e,r,i,n){var o=this.expression.evaluate(new nn(this.zoom),e,{},i,[],n),a=this.expression.evaluate(new nn(this.zoom+1),e,{},i,[],n),s=this.paintVertexArray.length;this.paintVertexArray.resize(t),this._setPaintValue(s,t,o,a)},Po.prototype.updatePaintArray=function(t,e,r,i){var n=this.expression.evaluate({zoom:this.zoom},r,i),o=this.expression.evaluate({zoom:this.zoom+1},r,i);this._setPaintValue(t,e,n,o)},Po.prototype._setPaintValue=function(t,e,r,i){if("color"===this.type)for(var n=Io(r),o=Io(i),a=t;a<e;a++)this.paintVertexArray.emplace(a,n[0],n[1],o[0],o[1]);else{for(var s=t;s<e;s++)this.paintVertexArray.emplace(s,r,i);this.maxValue=Math.max(this.maxValue,Math.abs(r),Math.abs(i))}},Po.prototype.upload=function(t){this.paintVertexArray&&this.paintVertexArray.arrayBuffer&&(this.paintVertexBuffer&&this.paintVertexBuffer.buffer?this.paintVertexBuffer.updateData(this.paintVertexArray):this.paintVertexBuffer=t.createVertexBuffer(this.paintVertexArray,this.paintVertexAttributes,this.expression.isStateDependent))},Po.prototype.destroy=function(){this.paintVertexBuffer&&this.paintVertexBuffer.destroy()},Po.prototype.setUniform=function(t,e){var r=this.useIntegerZoom?Math.floor(e.zoom):e.zoom,i=l(this.expression.interpolationFactor(r,this.zoom,this.zoom+1),0,1);t.set(i)},Po.prototype.getBinding=function(t,e,r){return new _o(t,e)};var Co=function(t,e,r,i,n,o){this.expression=t,this.type=e,this.useIntegerZoom=r,this.zoom=i,this.layerId=o,this.zoomInPaintVertexArray=new n,this.zoomOutPaintVertexArray=new n};Co.prototype.populatePaintArray=function(t,e,r){var i=this.zoomInPaintVertexArray.length;this.zoomInPaintVertexArray.resize(t),this.zoomOutPaintVertexArray.resize(t),this._setPaintValues(i,t,e.patterns&&e.patterns[this.layerId],r)},Co.prototype.updatePaintArray=function(t,e,r,i,n){this._setPaintValues(t,e,r.patterns&&r.patterns[this.layerId],n)},Co.prototype._setPaintValues=function(t,e,r,i){if(i&&r){var n=i[r.min],o=i[r.mid],a=i[r.max];if(n&&o&&a)for(var s=t;s<e;s++)this.zoomInPaintVertexArray.emplace(s,o.tl[0],o.tl[1],o.br[0],o.br[1],n.tl[0],n.tl[1],n.br[0],n.br[1],o.pixelRatio,n.pixelRatio),this.zoomOutPaintVertexArray.emplace(s,o.tl[0],o.tl[1],o.br[0],o.br[1],a.tl[0],a.tl[1],a.br[0],a.br[1],o.pixelRatio,a.pixelRatio)}},Co.prototype.upload=function(t){this.zoomInPaintVertexArray&&this.zoomInPaintVertexArray.arrayBuffer&&this.zoomOutPaintVertexArray&&this.zoomOutPaintVertexArray.arrayBuffer&&(this.zoomInPaintVertexBuffer=t.createVertexBuffer(this.zoomInPaintVertexArray,ao.members,this.expression.isStateDependent),this.zoomOutPaintVertexBuffer=t.createVertexBuffer(this.zoomOutPaintVertexArray,ao.members,this.expression.isStateDependent))},Co.prototype.destroy=function(){this.zoomOutPaintVertexBuffer&&this.zoomOutPaintVertexBuffer.destroy(),this.zoomInPaintVertexBuffer&&this.zoomInPaintVertexBuffer.destroy()};var ko=function(t,e,r,i){this.binders={},this.layoutAttributes=i,this._buffers=[];var n=[];for(var o in t.paint._values)if(r(o)){var a=t.paint.get(o);if(a instanceof pn&&Cr(a.property.specification)){var s=Do(o,t.type),l=a.value,u=a.property.specification.type,c=a.property.useIntegerZoom,p=a.property.specification["property-type"],h="cross-faded"===p||"cross-faded-data-driven"===p;if("constant"===l.kind)this.binders[o]=h?new Ao(l.value,s):new Eo(l.value,s,u),n.push("/u_"+o);else if("source"===l.kind||h){var f=Lo(o,u,"source");this.binders[o]=h?new Co(l,u,c,e,f,t.id):new zo(l,s,u,f),n.push("/a_"+o)}else{var d=Lo(o,u,"composite");this.binders[o]=new Po(l,s,u,c,e,d),n.push("/z_"+o)}}}this.cacheKey=n.sort().join("")};ko.prototype.getMaxValue=function(t){var e=this.binders[t];return e instanceof zo||e instanceof Po?e.maxValue:0},ko.prototype.populatePaintArrays=function(t,e,r,i,n){for(var o in this.binders){var a=this.binders[o];(a instanceof zo||a instanceof Po||a instanceof Co)&&a.populatePaintArray(t,e,r,i,n)}},ko.prototype.setConstantPatternPositions=function(t,e){for(var r in this.binders){var i=this.binders[r];i instanceof Ao&&i.setConstantPatternPositions(t,e)}},ko.prototype.updatePaintArrays=function(t,e,r,i,n){var o=!1;for(var a in t)for(var s=0,l=e.getPositions(a);s<l.length;s+=1){var u=l[s],c=r.feature(u.index);for(var p in this.binders){var h=this.binders[p];if((h instanceof zo||h instanceof Po||h instanceof Co)&&!0===h.expression.isStateDependent){var f=i.paint.get(p);h.expression=f.value,h.updatePaintArray(u.start,u.end,c,t[a],n),o=!0}}}return o},ko.prototype.defines=function(){var t=[];for(var e in this.binders){var r=this.binders[e];(r instanceof Eo||r instanceof Ao)&&t.push.apply(t,r.uniformNames.map(function(t){return"#define HAS_UNIFORM_"+t}))}return t},ko.prototype.getPaintVertexBuffers=function(){return this._buffers},ko.prototype.getUniforms=function(t,e){var r=[];for(var i in this.binders){var n=this.binders[i];if(n instanceof Eo||n instanceof Ao||n instanceof Po)for(var o=0,a=n.uniformNames;o<a.length;o+=1){var s=a[o];if(e[s]){var l=n.getBinding(t,e[s],s);r.push({name:s,property:i,binding:l})}}}return r},ko.prototype.setUniforms=function(t,e,r,i){for(var n=0,o=e;n<o.length;n+=1){var a=o[n],s=a.name,l=a.property;this.binders[l].setUniform(a.binding,i,r.get(l),s)}},ko.prototype.updatePaintBuffers=function(t){for(var e in this._buffers=[],this.binders){var r=this.binders[e];if(t&&r instanceof Co){var i=2===t.fromScale?r.zoomInPaintVertexBuffer:r.zoomOutPaintVertexBuffer;i&&this._buffers.push(i)}else(r instanceof zo||r instanceof Po)&&r.paintVertexBuffer&&this._buffers.push(r.paintVertexBuffer)}},ko.prototype.upload=function(t){for(var e in this.binders){var r=this.binders[e];(r instanceof zo||r instanceof Po||r instanceof Co)&&r.upload(t)}this.updatePaintBuffers()},ko.prototype.destroy=function(){for(var t in this.binders){var e=this.binders[t];(e instanceof zo||e instanceof Po||e instanceof Co)&&e.destroy()}};var Mo=function(t,e,r,i){void 0===i&&(i=function(){return!0}),this.programConfigurations={};for(var n=0,o=e;n<o.length;n+=1){var a=o[n];this.programConfigurations[a.id]=new ko(a,r,i,t)}this.needsUpload=!1,this._featureMap=new po,this._bufferOffset=0};function Do(t,e){return{"text-opacity":["opacity"],"icon-opacity":["opacity"],"text-color":["fill_color"],"icon-color":["fill_color"],"text-halo-color":["halo_color"],"icon-halo-color":["halo_color"],"text-halo-blur":["halo_blur"],"icon-halo-blur":["halo_blur"],"text-halo-width":["halo_width"],"icon-halo-width":["halo_width"],"line-gap-width":["gapwidth"],"line-pattern":["pattern_to","pattern_from","pixel_ratio_to","pixel_ratio_from"],"fill-pattern":["pattern_to","pattern_from","pixel_ratio_to","pixel_ratio_from"],"fill-extrusion-pattern":["pattern_to","pattern_from","pixel_ratio_to","pixel_ratio_from"]}[t]||[t.replace(e+"-","").replace(/-/g,"_")]}function Lo(t,e,r){var i={color:{source:Gn,composite:Xn},number:{source:Vn,composite:Gn}},n=function(t){return{"line-pattern":{source:Pn,composite:Pn},"fill-pattern":{source:Pn,composite:Pn},"fill-extrusion-pattern":{source:Pn,composite:Pn}}[t]}(t);return n&&n[r]||i[e][r]}Mo.prototype.populatePaintArrays=function(t,e,r,i,n,o){for(var a in this.programConfigurations)this.programConfigurations[a].populatePaintArrays(t,e,i,n,o);void 0!==e.id&&this._featureMap.add(e.id,r,this._bufferOffset,t),this._bufferOffset=t,this.needsUpload=!0},Mo.prototype.updatePaintArrays=function(t,e,r,i){for(var n=0,o=r;n<o.length;n+=1){var a=o[n];this.needsUpload=this.programConfigurations[a.id].updatePaintArrays(t,this._featureMap,e,a,i)||this.needsUpload}},Mo.prototype.get=function(t){return this.programConfigurations[t]},Mo.prototype.upload=function(t){if(this.needsUpload){for(var e in this.programConfigurations)this.programConfigurations[e].upload(t);this.needsUpload=!1}},Mo.prototype.destroy=function(){for(var t in this.programConfigurations)this.programConfigurations[t].destroy()},Li("ConstantBinder",Eo),Li("CrossFadedConstantBinder",Ao),Li("SourceExpressionBinder",zo),Li("CrossFadedCompositeBinder",Co),Li("CompositeExpressionBinder",Po),Li("ProgramConfiguration",ko,{omit:["_buffers"]}),Li("ProgramConfigurationSet",Mo);var Bo={min:-1*Math.pow(2,14),max:Math.pow(2,14)-1};function Ro(t){for(var e=8192/t.extent,r=t.loadGeometry(),i=0;i<r.length;i++)for(var n=r[i],o=0;o<n.length;o++){var a=n[o];a.x=Math.round(a.x*e),a.y=Math.round(a.y*e),(a.x<Bo.min||a.x>Bo.max||a.y<Bo.min||a.y>Bo.max)&&(b("Geometry exceeds allowed extent, reduce your vector tile buffer size"),a.x=l(a.x,Bo.min,Bo.max),a.y=l(a.y,Bo.min,Bo.max))}return r}function Fo(t,e,r,i,n){t.emplaceBack(2*e+(i+1)/2,2*r+(n+1)/2)}var Oo=function(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map(function(t){return t.id}),this.index=t.index,this.hasPattern=!1,this.layoutVertexArray=new In,this.indexArray=new Fn,this.segments=new no,this.programConfigurations=new Mo(io,t.layers,t.zoom),this.stateDependentLayerIds=this.layers.filter(function(t){return t.isStateDependent()}).map(function(t){return t.id})};function Uo(t,e){for(var r=0;r<t.length;r++)if(Ko(e,t[r]))return!0;for(var i=0;i<e.length;i++)if(Ko(t,e[i]))return!0;return!!qo(t,e)}function Vo(t,e,r){return!!Ko(t,e)||!!Go(e,t,r)}function No(t,e){if(1===t.length)return Wo(e,t[0]);for(var r=0;r<e.length;r++)for(var i=e[r],n=0;n<i.length;n++)if(Ko(t,i[n]))return!0;for(var o=0;o<t.length;o++)if(Wo(e,t[o]))return!0;for(var a=0;a<e.length;a++)if(qo(t,e[a]))return!0;return!1}function jo(t,e,r){if(t.length>1){if(qo(t,e))return!0;for(var i=0;i<e.length;i++)if(Go(e[i],t,r))return!0}for(var n=0;n<t.length;n++)if(Go(t[n],e,r))return!0;return!1}function qo(t,e){if(0===t.length||0===e.length)return!1;for(var r=0;r<t.length-1;r++)for(var i=t[r],n=t[r+1],o=0;o<e.length-1;o++)if(Zo(i,n,e[o],e[o+1]))return!0;return!1}function Zo(t,e,r,i){return w(t,r,i)!==w(e,r,i)&&w(t,e,r)!==w(t,e,i)}function Go(t,e,r){var i=r*r;if(1===e.length)return t.distSqr(e[0])<i;for(var n=1;n<e.length;n++)if(Xo(t,e[n-1],e[n])<i)return!0;return!1}function Xo(t,e,r){var i=e.distSqr(r);if(0===i)return t.distSqr(e);var n=((t.x-e.x)*(r.x-e.x)+(t.y-e.y)*(r.y-e.y))/i;return t.distSqr(n<0?e:n>1?r:r.sub(e)._mult(n)._add(e))}function Wo(t,e){for(var r,i,n,o=!1,a=0;a<t.length;a++)for(var s=0,l=(r=t[a]).length-1;s<r.length;l=s++)(i=r[s]).y>e.y!=(n=r[l]).y>e.y&&e.x<(n.x-i.x)*(e.y-i.y)/(n.y-i.y)+i.x&&(o=!o);return o}function Ko(t,e){for(var r=!1,i=0,n=t.length-1;i<t.length;n=i++){var o=t[i],a=t[n];o.y>e.y!=a.y>e.y&&e.x<(a.x-o.x)*(e.y-o.y)/(a.y-o.y)+o.x&&(r=!r)}return r}function Ho(t,e,r){var i=r[0],n=r[2];if(t.x<i.x&&e.x<i.x||t.x>n.x&&e.x>n.x||t.y<i.y&&e.y<i.y||t.y>n.y&&e.y>n.y)return!1;var o=w(t,e,r[0]);return o!==w(t,e,r[1])||o!==w(t,e,r[2])||o!==w(t,e,r[3])}function Jo(t,e,r){var i=e.paint.get(t).value;return"constant"===i.kind?i.value:r.programConfigurations.get(e.id).getMaxValue(t)}function Yo(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])}function Qo(t,e,r,i,o){if(!e[0]&&!e[1])return t;var a=n.convert(e)._mult(o);"viewport"===r&&a._rotate(-i);for(var s=[],l=0;l<t.length;l++)s.push(t[l].sub(a));return s}Oo.prototype.populate=function(t,e,r){var i=this.layers[0],n=[],o=null;"circle"===i.type&&(o=i.layout.get("circle-sort-key"));for(var a=0,s=t;a<s.length;a+=1){var l=s[a],u=l.feature,c=l.id,p=l.index,h=l.sourceLayerIndex,f=this.layers[0]._featureFilter.needGeometry,d={type:u.type,id:c,properties:u.properties,geometry:f?Ro(u):[]};if(this.layers[0]._featureFilter.filter(new nn(this.zoom),d,r)){f||(d.geometry=Ro(u));var m=o?o.evaluate(d,{},r):void 0;n.push({id:c,properties:u.properties,type:u.type,sourceLayerIndex:h,index:p,geometry:d.geometry,patterns:{},sortKey:m})}}o&&n.sort(function(t,e){return t.sortKey-e.sortKey});for(var y=0,g=n;y<g.length;y+=1){var _=g[y],v=_.geometry,x=_.index,b=_.sourceLayerIndex,w=t[x].feature;this.addFeature(_,v,x,r),e.featureIndex.insert(w,v,x,b,this.index)}},Oo.prototype.update=function(t,e,r){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,e,this.stateDependentLayers,r)},Oo.prototype.isEmpty=function(){return 0===this.layoutVertexArray.length},Oo.prototype.uploadPending=function(){return!this.uploaded||this.programConfigurations.needsUpload},Oo.prototype.upload=function(t){this.uploaded||(this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,io),this.indexBuffer=t.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(t),this.uploaded=!0},Oo.prototype.destroy=function(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy())},Oo.prototype.addFeature=function(t,e,r,i){for(var n=0,o=e;n<o.length;n+=1)for(var a=0,s=o[n];a<s.length;a+=1){var l=s[a],u=l.x,c=l.y;if(!(u<0||u>=8192||c<0||c>=8192)){var p=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray,t.sortKey),h=p.vertexLength;Fo(this.layoutVertexArray,u,c,-1,-1),Fo(this.layoutVertexArray,u,c,1,-1),Fo(this.layoutVertexArray,u,c,1,1),Fo(this.layoutVertexArray,u,c,-1,1),this.indexArray.emplaceBack(h,h+1,h+2),this.indexArray.emplaceBack(h,h+3,h+2),p.vertexLength+=4,p.primitiveLength+=2}}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,r,{},i)},Li("CircleBucket",Oo,{omit:["layers"]});var $o=new _n({"circle-sort-key":new dn(Et.layout_circle["circle-sort-key"])}),ta={paint:new _n({"circle-radius":new dn(Et.paint_circle["circle-radius"]),"circle-color":new dn(Et.paint_circle["circle-color"]),"circle-blur":new dn(Et.paint_circle["circle-blur"]),"circle-opacity":new dn(Et.paint_circle["circle-opacity"]),"circle-translate":new fn(Et.paint_circle["circle-translate"]),"circle-translate-anchor":new fn(Et.paint_circle["circle-translate-anchor"]),"circle-pitch-scale":new fn(Et.paint_circle["circle-pitch-scale"]),"circle-pitch-alignment":new fn(Et.paint_circle["circle-pitch-alignment"]),"circle-stroke-width":new dn(Et.paint_circle["circle-stroke-width"]),"circle-stroke-color":new dn(Et.paint_circle["circle-stroke-color"]),"circle-stroke-opacity":new dn(Et.paint_circle["circle-stroke-opacity"])}),layout:$o},ea="undefined"!=typeof Float32Array?Float32Array:Array;function ra(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function ia(t,e,r){var i=e[0],n=e[1],o=e[2],a=e[3],s=e[4],l=e[5],u=e[6],c=e[7],p=e[8],h=e[9],f=e[10],d=e[11],m=e[12],y=e[13],g=e[14],_=e[15],v=r[0],x=r[1],b=r[2],w=r[3];return t[0]=v*i+x*s+b*p+w*m,t[1]=v*n+x*l+b*h+w*y,t[2]=v*o+x*u+b*f+w*g,t[3]=v*a+x*c+b*d+w*_,t[4]=(v=r[4])*i+(x=r[5])*s+(b=r[6])*p+(w=r[7])*m,t[5]=v*n+x*l+b*h+w*y,t[6]=v*o+x*u+b*f+w*g,t[7]=v*a+x*c+b*d+w*_,t[8]=(v=r[8])*i+(x=r[9])*s+(b=r[10])*p+(w=r[11])*m,t[9]=v*n+x*l+b*h+w*y,t[10]=v*o+x*u+b*f+w*g,t[11]=v*a+x*c+b*d+w*_,t[12]=(v=r[12])*i+(x=r[13])*s+(b=r[14])*p+(w=r[15])*m,t[13]=v*n+x*l+b*h+w*y,t[14]=v*o+x*u+b*f+w*g,t[15]=v*a+x*c+b*d+w*_,t}Math.hypot||(Math.hypot=function(){for(var t=arguments,e=0,r=arguments.length;r--;)e+=t[r]*t[r];return Math.sqrt(e)});var na,oa=ia;function aa(t,e,r){var i=e[0],n=e[1],o=e[2],a=e[3];return t[0]=r[0]*i+r[4]*n+r[8]*o+r[12]*a,t[1]=r[1]*i+r[5]*n+r[9]*o+r[13]*a,t[2]=r[2]*i+r[6]*n+r[10]*o+r[14]*a,t[3]=r[3]*i+r[7]*n+r[11]*o+r[15]*a,t}na=new ea(3),ea!=Float32Array&&(na[0]=0,na[1]=0,na[2]=0),function(){var t=new ea(4);ea!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0,t[3]=0)}();var sa=(function(){var t=new ea(2);ea!=Float32Array&&(t[0]=0,t[1]=0)}(),function(t){function e(e){t.call(this,e,ta)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.createBucket=function(t){return new Oo(t)},e.prototype.queryRadius=function(t){var e=t;return Jo("circle-radius",this,e)+Jo("circle-stroke-width",this,e)+Yo(this.paint.get("circle-translate"))},e.prototype.queryIntersectsFeature=function(t,e,r,i,n,o,a,s){for(var l=Qo(t,this.paint.get("circle-translate"),this.paint.get("circle-translate-anchor"),o.angle,a),u=this.paint.get("circle-radius").evaluate(e,r)+this.paint.get("circle-stroke-width").evaluate(e,r),c="map"===this.paint.get("circle-pitch-alignment"),p=c?l:function(t,e){return l.map(function(t){return la(t,e)})}(0,s),h=c?u*a:u,f=0,d=i;f<d.length;f+=1)for(var m=0,y=d[f];m<y.length;m+=1){var g=y[m],_=c?g:la(g,s),v=h,x=aa([],[g.x,g.y,0,1],s);if("viewport"===this.paint.get("circle-pitch-scale")&&"map"===this.paint.get("circle-pitch-alignment")?v*=x[3]/o.cameraToCenterDistance:"map"===this.paint.get("circle-pitch-scale")&&"viewport"===this.paint.get("circle-pitch-alignment")&&(v*=o.cameraToCenterDistance/x[3]),Vo(p,_,v))return!0}return!1},e}(vn));function la(t,e){var r=aa([],[t.x,t.y,0,1],e);return new n(r[0]/r[3],r[1]/r[3])}var ua=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e}(Oo);function ca(t,e,r,i){var n=e.width,o=e.height;if(i){if(i instanceof Uint8ClampedArray)i=new Uint8Array(i.buffer);else if(i.length!==n*o*r)throw new RangeError("mismatched image size")}else i=new Uint8Array(n*o*r);return t.width=n,t.height=o,t.data=i,t}function pa(t,e,r){var i=e.width,n=e.height;if(i!==t.width||n!==t.height){var o=ca({},{width:i,height:n},r);ha(t,o,{x:0,y:0},{x:0,y:0},{width:Math.min(t.width,i),height:Math.min(t.height,n)},r),t.width=i,t.height=n,t.data=o.data}}function ha(t,e,r,i,n,o){if(0===n.width||0===n.height)return e;if(n.width>t.width||n.height>t.height||r.x>t.width-n.width||r.y>t.height-n.height)throw new RangeError("out of range source coordinates for image copy");if(n.width>e.width||n.height>e.height||i.x>e.width-n.width||i.y>e.height-n.height)throw new RangeError("out of range destination coordinates for image copy");for(var a=t.data,s=e.data,l=0;l<n.height;l++)for(var u=((r.y+l)*t.width+r.x)*o,c=((i.y+l)*e.width+i.x)*o,p=0;p<n.width*o;p++)s[c+p]=a[u+p];return e}Li("HeatmapBucket",ua,{omit:["layers"]});var fa=function(t,e){ca(this,t,1,e)};fa.prototype.resize=function(t){pa(this,t,1)},fa.prototype.clone=function(){return new fa({width:this.width,height:this.height},new Uint8Array(this.data))},fa.copy=function(t,e,r,i,n){ha(t,e,r,i,n,1)};var da=function(t,e){ca(this,t,4,e)};da.prototype.resize=function(t){pa(this,t,4)},da.prototype.replace=function(t,e){e?this.data.set(t):this.data=t instanceof Uint8ClampedArray?new Uint8Array(t.buffer):t},da.prototype.clone=function(){return new da({width:this.width,height:this.height},new Uint8Array(this.data))},da.copy=function(t,e,r,i,n){ha(t,e,r,i,n,4)},Li("AlphaImage",fa),Li("RGBAImage",da);var ma={paint:new _n({"heatmap-radius":new dn(Et.paint_heatmap["heatmap-radius"]),"heatmap-weight":new dn(Et.paint_heatmap["heatmap-weight"]),"heatmap-intensity":new fn(Et.paint_heatmap["heatmap-intensity"]),"heatmap-color":new gn(Et.paint_heatmap["heatmap-color"]),"heatmap-opacity":new fn(Et.paint_heatmap["heatmap-opacity"])})};function ya(t,e){for(var r=new Uint8Array(1024),i={},n=0,o=0;n<256;n++,o+=4){i[e]=n/255;var a=t.evaluate(i);r[o+0]=Math.floor(255*a.r/a.a),r[o+1]=Math.floor(255*a.g/a.a),r[o+2]=Math.floor(255*a.b/a.a),r[o+3]=Math.floor(255*a.a)}return new da({width:256,height:1},r)}var ga=function(t){function e(e){t.call(this,e,ma),this._updateColorRamp()}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.createBucket=function(t){return new ua(t)},e.prototype._handleSpecialPaintPropertyUpdate=function(t){"heatmap-color"===t&&this._updateColorRamp()},e.prototype._updateColorRamp=function(){this.colorRamp=ya(this._transitionablePaint._values["heatmap-color"].value.expression,"heatmapDensity"),this.colorRampTexture=null},e.prototype.resize=function(){this.heatmapFbo&&(this.heatmapFbo.destroy(),this.heatmapFbo=null)},e.prototype.queryRadius=function(){return 0},e.prototype.queryIntersectsFeature=function(){return!1},e.prototype.hasOffscreenPass=function(){return 0!==this.paint.get("heatmap-opacity")&&"none"!==this.visibility},e}(vn),_a={paint:new _n({"hillshade-illumination-direction":new fn(Et.paint_hillshade["hillshade-illumination-direction"]),"hillshade-illumination-anchor":new fn(Et.paint_hillshade["hillshade-illumination-anchor"]),"hillshade-exaggeration":new fn(Et.paint_hillshade["hillshade-exaggeration"]),"hillshade-shadow-color":new fn(Et.paint_hillshade["hillshade-shadow-color"]),"hillshade-highlight-color":new fn(Et.paint_hillshade["hillshade-highlight-color"]),"hillshade-accent-color":new fn(Et.paint_hillshade["hillshade-accent-color"])})},va=function(t){function e(e){t.call(this,e,_a)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.hasOffscreenPass=function(){return 0!==this.paint.get("hillshade-exaggeration")&&"none"!==this.visibility},e}(vn),xa=Sn([{name:"a_pos",components:2,type:"Int16"}],4).members,ba=Sa,wa=Sa;function Sa(t,e,r){r=r||2;var i,n,o,a,s,l,u,c=e&&e.length,p=c?e[0]*r:t.length,h=Ta(t,0,p,r,!0),f=[];if(!h||h.next===h.prev)return f;if(c&&(h=function(t,e,r,i){var n,o,a,s=[];for(n=0,o=e.length;n<o;n++)(a=Ta(t,e[n]*i,n<o-1?e[n+1]*i:t.length,i,!1))===a.next&&(a.steiner=!0),s.push(Ba(a));for(s.sort(ka),n=0;n<s.length;n++)Ma(s[n],r),r=Ia(r,r.next);return r}(t,e,h,r)),t.length>80*r){i=o=t[0],n=a=t[1];for(var d=r;d<p;d+=r)(s=t[d])<i&&(i=s),(l=t[d+1])<n&&(n=l),s>o&&(o=s),l>a&&(a=l);u=0!==(u=Math.max(o-i,a-n))?1/u:0}return Ea(h,f,r,i,n,u),f}function Ta(t,e,r,i,n){var o,a;if(n===Ka(t,e,r,i)>0)for(o=e;o<r;o+=i)a=Ga(o,t[o],t[o+1],a);else for(o=r-i;o>=e;o-=i)a=Ga(o,t[o],t[o+1],a);return a&&Ua(a,a.next)&&(Xa(a),a=a.next),a}function Ia(t,e){if(!t)return t;e||(e=t);var r,i=t;do{if(r=!1,i.steiner||!Ua(i,i.next)&&0!==Oa(i.prev,i,i.next))i=i.next;else{if(Xa(i),(i=e=i.prev)===i.next)break;r=!0}}while(r||i!==e);return e}function Ea(t,e,r,i,n,o,a){if(t){!a&&o&&function(t,e,r,i){var n=t;do{null===n.z&&(n.z=La(n.x,n.y,e,r,i)),n.prevZ=n.prev,n.nextZ=n.next,n=n.next}while(n!==t);n.prevZ.nextZ=null,n.prevZ=null,function(t){var e,r,i,n,o,a,s,l,u=1;do{for(r=t,t=null,o=null,a=0;r;){for(a++,i=r,s=0,e=0;e<u&&(s++,i=i.nextZ);e++);for(l=u;s>0||l>0&&i;)0!==s&&(0===l||!i||r.z<=i.z)?(n=r,r=r.nextZ,s--):(n=i,i=i.nextZ,l--),o?o.nextZ=n:t=n,n.prevZ=o,o=n;r=i}o.nextZ=null,u*=2}while(a>1)}(n)}(t,i,n,o);for(var s,l,u=t;t.prev!==t.next;)if(s=t.prev,l=t.next,o?za(t,i,n,o):Aa(t))e.push(s.i/r),e.push(t.i/r),e.push(l.i/r),Xa(t),t=l.next,u=l.next;else if((t=l)===u){a?1===a?Ea(t=Pa(Ia(t),e,r),e,r,i,n,o,2):2===a&&Ca(t,e,r,i,n,o):Ea(Ia(t),e,r,i,n,o,1);break}}}function Aa(t){var e=t.prev,r=t,i=t.next;if(Oa(e,r,i)>=0)return!1;for(var n=t.next.next;n!==t.prev;){if(Ra(e.x,e.y,r.x,r.y,i.x,i.y,n.x,n.y)&&Oa(n.prev,n,n.next)>=0)return!1;n=n.next}return!0}function za(t,e,r,i){var n=t.prev,o=t,a=t.next;if(Oa(n,o,a)>=0)return!1;for(var s=n.x>o.x?n.x>a.x?n.x:a.x:o.x>a.x?o.x:a.x,l=n.y>o.y?n.y>a.y?n.y:a.y:o.y>a.y?o.y:a.y,u=La(n.x<o.x?n.x<a.x?n.x:a.x:o.x<a.x?o.x:a.x,n.y<o.y?n.y<a.y?n.y:a.y:o.y<a.y?o.y:a.y,e,r,i),c=La(s,l,e,r,i),p=t.prevZ,h=t.nextZ;p&&p.z>=u&&h&&h.z<=c;){if(p!==t.prev&&p!==t.next&&Ra(n.x,n.y,o.x,o.y,a.x,a.y,p.x,p.y)&&Oa(p.prev,p,p.next)>=0)return!1;if(p=p.prevZ,h!==t.prev&&h!==t.next&&Ra(n.x,n.y,o.x,o.y,a.x,a.y,h.x,h.y)&&Oa(h.prev,h,h.next)>=0)return!1;h=h.nextZ}for(;p&&p.z>=u;){if(p!==t.prev&&p!==t.next&&Ra(n.x,n.y,o.x,o.y,a.x,a.y,p.x,p.y)&&Oa(p.prev,p,p.next)>=0)return!1;p=p.prevZ}for(;h&&h.z<=c;){if(h!==t.prev&&h!==t.next&&Ra(n.x,n.y,o.x,o.y,a.x,a.y,h.x,h.y)&&Oa(h.prev,h,h.next)>=0)return!1;h=h.nextZ}return!0}function Pa(t,e,r){var i=t;do{var n=i.prev,o=i.next.next;!Ua(n,o)&&Va(n,i,i.next,o)&&qa(n,o)&&qa(o,n)&&(e.push(n.i/r),e.push(i.i/r),e.push(o.i/r),Xa(i),Xa(i.next),i=t=o),i=i.next}while(i!==t);return Ia(i)}function Ca(t,e,r,i,n,o){var a=t;do{for(var s=a.next.next;s!==a.prev;){if(a.i!==s.i&&Fa(a,s)){var l=Za(a,s);return a=Ia(a,a.next),l=Ia(l,l.next),Ea(a,e,r,i,n,o),void Ea(l,e,r,i,n,o)}s=s.next}a=a.next}while(a!==t)}function ka(t,e){return t.x-e.x}function Ma(t,e){if(e=function(t,e){var r,i=e,n=t.x,o=t.y,a=-1/0;do{if(o<=i.y&&o>=i.next.y&&i.next.y!==i.y){var s=i.x+(o-i.y)*(i.next.x-i.x)/(i.next.y-i.y);if(s<=n&&s>a){if(a=s,s===n){if(o===i.y)return i;if(o===i.next.y)return i.next}r=i.x<i.next.x?i:i.next}}i=i.next}while(i!==e);if(!r)return null;if(n===a)return r;var l,u=r,c=r.x,p=r.y,h=1/0;i=r;do{n>=i.x&&i.x>=c&&n!==i.x&&Ra(o<p?n:a,o,c,p,o<p?a:n,o,i.x,i.y)&&(l=Math.abs(o-i.y)/(n-i.x),qa(i,t)&&(l<h||l===h&&(i.x>r.x||i.x===r.x&&Da(r,i)))&&(r=i,h=l)),i=i.next}while(i!==u);return r}(t,e)){var r=Za(e,t);Ia(e,e.next),Ia(r,r.next)}}function Da(t,e){return Oa(t.prev,t,e.prev)<0&&Oa(e.next,t,t.next)<0}function La(t,e,r,i,n){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-r)*n)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-i)*n)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function Ba(t){var e=t,r=t;do{(e.x<r.x||e.x===r.x&&e.y<r.y)&&(r=e),e=e.next}while(e!==t);return r}function Ra(t,e,r,i,n,o,a,s){return(n-a)*(e-s)-(t-a)*(o-s)>=0&&(t-a)*(i-s)-(r-a)*(e-s)>=0&&(r-a)*(o-s)-(n-a)*(i-s)>=0}function Fa(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!function(t,e){var r=t;do{if(r.i!==t.i&&r.next.i!==t.i&&r.i!==e.i&&r.next.i!==e.i&&Va(r,r.next,t,e))return!0;r=r.next}while(r!==t);return!1}(t,e)&&(qa(t,e)&&qa(e,t)&&function(t,e){var r=t,i=!1,n=(t.x+e.x)/2,o=(t.y+e.y)/2;do{r.y>o!=r.next.y>o&&r.next.y!==r.y&&n<(r.next.x-r.x)*(o-r.y)/(r.next.y-r.y)+r.x&&(i=!i),r=r.next}while(r!==t);return i}(t,e)&&(Oa(t.prev,t,e.prev)||Oa(t,e.prev,e))||Ua(t,e)&&Oa(t.prev,t,t.next)>0&&Oa(e.prev,e,e.next)>0)}function Oa(t,e,r){return(e.y-t.y)*(r.x-e.x)-(e.x-t.x)*(r.y-e.y)}function Ua(t,e){return t.x===e.x&&t.y===e.y}function Va(t,e,r,i){var n=ja(Oa(t,e,r)),o=ja(Oa(t,e,i)),a=ja(Oa(r,i,t)),s=ja(Oa(r,i,e));return n!==o&&a!==s||!(0!==n||!Na(t,r,e))||!(0!==o||!Na(t,i,e))||!(0!==a||!Na(r,t,i))||!(0!==s||!Na(r,e,i))}function Na(t,e,r){return e.x<=Math.max(t.x,r.x)&&e.x>=Math.min(t.x,r.x)&&e.y<=Math.max(t.y,r.y)&&e.y>=Math.min(t.y,r.y)}function ja(t){return t>0?1:t<0?-1:0}function qa(t,e){return Oa(t.prev,t,t.next)<0?Oa(t,e,t.next)>=0&&Oa(t,t.prev,e)>=0:Oa(t,e,t.prev)<0||Oa(t,t.next,e)<0}function Za(t,e){var r=new Wa(t.i,t.x,t.y),i=new Wa(e.i,e.x,e.y),n=t.next,o=e.prev;return t.next=e,e.prev=t,r.next=n,n.prev=r,i.next=r,r.prev=i,o.next=i,i.prev=o,i}function Ga(t,e,r,i){var n=new Wa(t,e,r);return i?(n.next=i.next,n.prev=i,i.next.prev=n,i.next=n):(n.prev=n,n.next=n),n}function Xa(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ)}function Wa(t,e,r){this.i=t,this.x=e,this.y=r,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function Ka(t,e,r,i){for(var n=0,o=e,a=r-i;o<r;o+=i)n+=(t[a]-t[o])*(t[o+1]+t[a+1]),a=o;return n}function Ha(t,e,r,i,n){!function t(e,r,i,n,o){for(;n>i;){if(n-i>600){var a=n-i+1,s=r-i+1,l=Math.log(a),u=.5*Math.exp(2*l/3),c=.5*Math.sqrt(l*u*(a-u)/a)*(s-a/2<0?-1:1);t(e,r,Math.max(i,Math.floor(r-s*u/a+c)),Math.min(n,Math.floor(r+(a-s)*u/a+c)),o)}var p=e[r],h=i,f=n;for(Ja(e,i,r),o(e[n],p)>0&&Ja(e,i,n);h<f;){for(Ja(e,h,f),h++,f--;o(e[h],p)<0;)h++;for(;o(e[f],p)>0;)f--}0===o(e[i],p)?Ja(e,i,f):Ja(e,++f,n),f<=r&&(i=f+1),r<=f&&(n=f-1)}}(t,e,r||0,i||t.length-1,n||Ya)}function Ja(t,e,r){var i=t[e];t[e]=t[r],t[r]=i}function Ya(t,e){return t<e?-1:t>e?1:0}function Qa(t,e){var r=t.length;if(r<=1)return[t];for(var i,n,o=[],a=0;a<r;a++){var s=S(t[a]);0!==s&&(t[a].area=Math.abs(s),void 0===n&&(n=s<0),n===s<0?(i&&o.push(i),i=[t[a]]):i.push(t[a]))}if(i&&o.push(i),e>1)for(var l=0;l<o.length;l++)o[l].length<=e||(Ha(o[l],e,1,o[l].length-1,$a),o[l]=o[l].slice(0,e));return o}function $a(t,e){return e.area-t.area}function ts(t,e,r){for(var i=r.patternDependencies,n=!1,o=0,a=e;o<a.length;o+=1){var s=a[o].paint.get(t+"-pattern");s.isConstant()||(n=!0);var l=s.constantOr(null);l&&(n=!0,i[l.to]=!0,i[l.from]=!0)}return n}function es(t,e,r,i,n){for(var o=n.patternDependencies,a=0,s=e;a<s.length;a+=1){var l=s[a],u=l.paint.get(t+"-pattern").value;if("constant"!==u.kind){var c=u.evaluate({zoom:i-1},r,{},n.availableImages),p=u.evaluate({zoom:i},r,{},n.availableImages),h=u.evaluate({zoom:i+1},r,{},n.availableImages);p=p&&p.name?p.name:p,h=h&&h.name?h.name:h,o[c=c&&c.name?c.name:c]=!0,o[p]=!0,o[h]=!0,r.patterns[l.id]={min:c,mid:p,max:h}}}return r}Sa.deviation=function(t,e,r,i){var n=e&&e.length,o=Math.abs(Ka(t,0,n?e[0]*r:t.length,r));if(n)for(var a=0,s=e.length;a<s;a++)o-=Math.abs(Ka(t,e[a]*r,a<s-1?e[a+1]*r:t.length,r));var l=0;for(a=0;a<i.length;a+=3){var u=i[a]*r,c=i[a+1]*r,p=i[a+2]*r;l+=Math.abs((t[u]-t[p])*(t[c+1]-t[u+1])-(t[u]-t[c])*(t[p+1]-t[u+1]))}return 0===o&&0===l?0:Math.abs((l-o)/o)},Sa.flatten=function(t){for(var e=t[0][0].length,r={vertices:[],holes:[],dimensions:e},i=0,n=0;n<t.length;n++){for(var o=0;o<t[n].length;o++)for(var a=0;a<e;a++)r.vertices.push(t[n][o][a]);n>0&&r.holes.push(i+=t[n-1].length)}return r},ba.default=wa;var rs=function(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map(function(t){return t.id}),this.index=t.index,this.hasPattern=!1,this.patternFeatures=[],this.layoutVertexArray=new In,this.indexArray=new Fn,this.indexArray2=new qn,this.programConfigurations=new Mo(xa,t.layers,t.zoom),this.segments=new no,this.segments2=new no,this.stateDependentLayerIds=this.layers.filter(function(t){return t.isStateDependent()}).map(function(t){return t.id})};rs.prototype.populate=function(t,e,r){this.hasPattern=ts("fill",this.layers,e);for(var i=this.layers[0].layout.get("fill-sort-key"),n=[],o=0,a=t;o<a.length;o+=1){var s=a[o],l=s.feature,u=s.id,c=s.index,p=s.sourceLayerIndex,h=this.layers[0]._featureFilter.needGeometry,f={type:l.type,id:u,properties:l.properties,geometry:h?Ro(l):[]};if(this.layers[0]._featureFilter.filter(new nn(this.zoom),f,r)){h||(f.geometry=Ro(l));var d=i?i.evaluate(f,{},r,e.availableImages):void 0;n.push({id:u,properties:l.properties,type:l.type,sourceLayerIndex:p,index:c,geometry:f.geometry,patterns:{},sortKey:d})}}i&&n.sort(function(t,e){return t.sortKey-e.sortKey});for(var m=0,y=n;m<y.length;m+=1){var g=y[m],_=g.geometry,v=g.index,x=g.sourceLayerIndex;if(this.hasPattern){var b=es("fill",this.layers,g,this.zoom,e);this.patternFeatures.push(b)}else this.addFeature(g,_,v,r,{});e.featureIndex.insert(t[v].feature,_,v,x,this.index)}},rs.prototype.update=function(t,e,r){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,e,this.stateDependentLayers,r)},rs.prototype.addFeatures=function(t,e,r){for(var i=0,n=this.patternFeatures;i<n.length;i+=1){var o=n[i];this.addFeature(o,o.geometry,o.index,e,r)}},rs.prototype.isEmpty=function(){return 0===this.layoutVertexArray.length},rs.prototype.uploadPending=function(){return!this.uploaded||this.programConfigurations.needsUpload},rs.prototype.upload=function(t){this.uploaded||(this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,xa),this.indexBuffer=t.createIndexBuffer(this.indexArray),this.indexBuffer2=t.createIndexBuffer(this.indexArray2)),this.programConfigurations.upload(t),this.uploaded=!0},rs.prototype.destroy=function(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.indexBuffer2.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.segments2.destroy())},rs.prototype.addFeature=function(t,e,r,i,n){for(var o=0,a=Qa(e,500);o<a.length;o+=1){for(var s=a[o],l=0,u=0,c=s;u<c.length;u+=1)l+=c[u].length;for(var p=this.segments.prepareSegment(l,this.layoutVertexArray,this.indexArray),h=p.vertexLength,f=[],d=[],m=0,y=s;m<y.length;m+=1){var g=y[m];if(0!==g.length){g!==s[0]&&d.push(f.length/2);var _=this.segments2.prepareSegment(g.length,this.layoutVertexArray,this.indexArray2),v=_.vertexLength;this.layoutVertexArray.emplaceBack(g[0].x,g[0].y),this.indexArray2.emplaceBack(v+g.length-1,v),f.push(g[0].x),f.push(g[0].y);for(var x=1;x<g.length;x++)this.layoutVertexArray.emplaceBack(g[x].x,g[x].y),this.indexArray2.emplaceBack(v+x-1,v+x),f.push(g[x].x),f.push(g[x].y);_.vertexLength+=g.length,_.primitiveLength+=g.length}}for(var b=ba(f,d),w=0;w<b.length;w+=3)this.indexArray.emplaceBack(h+b[w],h+b[w+1],h+b[w+2]);p.vertexLength+=l,p.primitiveLength+=b.length/3}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,r,n,i)},Li("FillBucket",rs,{omit:["layers","patternFeatures"]});var is=new _n({"fill-sort-key":new dn(Et.layout_fill["fill-sort-key"])}),ns={paint:new _n({"fill-antialias":new fn(Et.paint_fill["fill-antialias"]),"fill-opacity":new dn(Et.paint_fill["fill-opacity"]),"fill-color":new dn(Et.paint_fill["fill-color"]),"fill-outline-color":new dn(Et.paint_fill["fill-outline-color"]),"fill-translate":new fn(Et.paint_fill["fill-translate"]),"fill-translate-anchor":new fn(Et.paint_fill["fill-translate-anchor"]),"fill-pattern":new mn(Et.paint_fill["fill-pattern"])}),layout:is},os=function(t){function e(e){t.call(this,e,ns)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.recalculate=function(e,r){t.prototype.recalculate.call(this,e,r);var i=this.paint._values["fill-outline-color"];"constant"===i.value.kind&&void 0===i.value.value&&(this.paint._values["fill-outline-color"]=this.paint._values["fill-color"])},e.prototype.createBucket=function(t){return new rs(t)},e.prototype.queryRadius=function(){return Yo(this.paint.get("fill-translate"))},e.prototype.queryIntersectsFeature=function(t,e,r,i,n,o,a){return No(Qo(t,this.paint.get("fill-translate"),this.paint.get("fill-translate-anchor"),o.angle,a),i)},e.prototype.isTileClipped=function(){return!0},e}(vn),as=Sn([{name:"a_pos",components:2,type:"Int16"},{name:"a_normal_ed",components:4,type:"Int16"}],4).members,ss=ls;function ls(t,e,r,i,n){this.properties={},this.extent=r,this.type=0,this._pbf=t,this._geometry=-1,this._keys=i,this._values=n,t.readFields(us,this,e)}function us(t,e,r){1==t?e.id=r.readVarint():2==t?function(t,e){for(var r=t.readVarint()+t.pos;t.pos<r;){var i=e._keys[t.readVarint()],n=e._values[t.readVarint()];e.properties[i]=n}}(r,e):3==t?e.type=r.readVarint():4==t&&(e._geometry=r.pos)}function cs(t){for(var e,r,i=0,n=0,o=t.length,a=o-1;n<o;a=n++)i+=((r=t[a]).x-(e=t[n]).x)*(e.y+r.y);return i}ls.types=["Unknown","Point","LineString","Polygon"],ls.prototype.loadGeometry=function(){var t=this._pbf;t.pos=this._geometry;for(var e,r=t.readVarint()+t.pos,i=1,o=0,a=0,s=0,l=[];t.pos<r;){if(o<=0){var u=t.readVarint();i=7&u,o=u>>3}if(o--,1===i||2===i)a+=t.readSVarint(),s+=t.readSVarint(),1===i&&(e&&l.push(e),e=[]),e.push(new n(a,s));else{if(7!==i)throw new Error("unknown command "+i);e&&e.push(e[0].clone())}}return e&&l.push(e),l},ls.prototype.bbox=function(){var t=this._pbf;t.pos=this._geometry;for(var e=t.readVarint()+t.pos,r=1,i=0,n=0,o=0,a=1/0,s=-1/0,l=1/0,u=-1/0;t.pos<e;){if(i<=0){var c=t.readVarint();r=7&c,i=c>>3}if(i--,1===r||2===r)(n+=t.readSVarint())<a&&(a=n),n>s&&(s=n),(o+=t.readSVarint())<l&&(l=o),o>u&&(u=o);else if(7!==r)throw new Error("unknown command "+r)}return[a,l,s,u]},ls.prototype.toGeoJSON=function(t,e,r){var i,n,o=this.extent*Math.pow(2,r),a=this.extent*t,s=this.extent*e,l=this.loadGeometry(),u=ls.types[this.type];function c(t){for(var e=0;e<t.length;e++){var r=t[e];t[e]=[360*(r.x+a)/o-180,360/Math.PI*Math.atan(Math.exp((180-360*(r.y+s)/o)*Math.PI/180))-90]}}switch(this.type){case 1:var p=[];for(i=0;i<l.length;i++)p[i]=l[i][0];c(l=p);break;case 2:for(i=0;i<l.length;i++)c(l[i]);break;case 3:for(l=function(t){var e=t.length;if(e<=1)return[t];for(var r,i,n=[],o=0;o<e;o++){var a=cs(t[o]);0!==a&&(void 0===i&&(i=a<0),i===a<0?(r&&n.push(r),r=[t[o]]):r.push(t[o]))}return r&&n.push(r),n}(l),i=0;i<l.length;i++)for(n=0;n<l[i].length;n++)c(l[i][n])}1===l.length?l=l[0]:u="Multi"+u;var h={type:"Feature",geometry:{type:u,coordinates:l},properties:this.properties};return"id"in this&&(h.id=this.id),h};var ps=hs;function hs(t,e){this.version=1,this.name=null,this.extent=4096,this.length=0,this._pbf=t,this._keys=[],this._values=[],this._features=[],t.readFields(fs,this,e),this.length=this._features.length}function fs(t,e,r){15===t?e.version=r.readVarint():1===t?e.name=r.readString():5===t?e.extent=r.readVarint():2===t?e._features.push(r.pos):3===t?e._keys.push(r.readString()):4===t&&e._values.push(function(t){for(var e=null,r=t.readVarint()+t.pos;t.pos<r;){var i=t.readVarint()>>3;e=1===i?t.readString():2===i?t.readFloat():3===i?t.readDouble():4===i?t.readVarint64():5===i?t.readVarint():6===i?t.readSVarint():7===i?t.readBoolean():null}return e}(r))}function ds(t,e,r){if(3===t){var i=new ps(r,r.readVarint()+r.pos);i.length&&(e[i.name]=i)}}hs.prototype.feature=function(t){if(t<0||t>=this._features.length)throw new Error("feature index out of bounds");this._pbf.pos=this._features[t];var e=this._pbf.readVarint()+this._pbf.pos;return new ss(this._pbf,e,this.extent,this._keys,this._values)};var ms={VectorTile:function(t,e){this.layers=t.readFields(ds,{},e)},VectorTileFeature:ss,VectorTileLayer:ps},ys=ms.VectorTileFeature.types,gs=Math.pow(2,13);function _s(t,e,r,i,n,o,a,s){t.emplaceBack(e,r,2*Math.floor(i*gs)+a,n*gs*2,o*gs*2,Math.round(s))}var vs=function(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map(function(t){return t.id}),this.index=t.index,this.hasPattern=!1,this.layoutVertexArray=new An,this.indexArray=new Fn,this.programConfigurations=new Mo(as,t.layers,t.zoom),this.segments=new no,this.stateDependentLayerIds=this.layers.filter(function(t){return t.isStateDependent()}).map(function(t){return t.id})};function xs(t,e){return t.x===e.x&&(t.x<0||t.x>8192)||t.y===e.y&&(t.y<0||t.y>8192)}vs.prototype.populate=function(t,e,r){this.features=[],this.hasPattern=ts("fill-extrusion",this.layers,e);for(var i=0,n=t;i<n.length;i+=1){var o=n[i],a=o.feature,s=o.id,l=o.index,u=o.sourceLayerIndex,c=this.layers[0]._featureFilter.needGeometry,p={type:a.type,id:s,properties:a.properties,geometry:c?Ro(a):[]};if(this.layers[0]._featureFilter.filter(new nn(this.zoom),p,r)){var h={id:s,sourceLayerIndex:u,index:l,geometry:c?p.geometry:Ro(a),properties:a.properties,type:a.type,patterns:{}};void 0!==a.id&&(h.id=a.id),this.hasPattern?this.features.push(es("fill-extrusion",this.layers,h,this.zoom,e)):this.addFeature(h,h.geometry,l,r,{}),e.featureIndex.insert(a,h.geometry,l,u,this.index,!0)}}},vs.prototype.addFeatures=function(t,e,r){for(var i=0,n=this.features;i<n.length;i+=1){var o=n[i];this.addFeature(o,o.geometry,o.index,e,r)}},vs.prototype.update=function(t,e,r){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,e,this.stateDependentLayers,r)},vs.prototype.isEmpty=function(){return 0===this.layoutVertexArray.length},vs.prototype.uploadPending=function(){return!this.uploaded||this.programConfigurations.needsUpload},vs.prototype.upload=function(t){this.uploaded||(this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,as),this.indexBuffer=t.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(t),this.uploaded=!0},vs.prototype.destroy=function(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy())},vs.prototype.addFeature=function(t,e,r,i,n){for(var o=0,a=Qa(e,500);o<a.length;o+=1){for(var s=a[o],l=0,u=0,c=s;u<c.length;u+=1)l+=c[u].length;for(var p=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray),h=0,f=s;h<f.length;h+=1){var d=f[h];if(0!==d.length&&!((M=d).every(function(t){return t.x<0})||M.every(function(t){return t.x>8192})||M.every(function(t){return t.y<0})||M.every(function(t){return t.y>8192})))for(var m=0,y=0;y<d.length;y++){var g=d[y];if(y>=1){var _=d[y-1];if(!xs(g,_)){p.vertexLength+4>no.MAX_VERTEX_ARRAY_LENGTH&&(p=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray));var v=g.sub(_)._perp()._unit(),x=_.dist(g);m+x>32768&&(m=0),_s(this.layoutVertexArray,g.x,g.y,v.x,v.y,0,0,m),_s(this.layoutVertexArray,g.x,g.y,v.x,v.y,0,1,m),_s(this.layoutVertexArray,_.x,_.y,v.x,v.y,0,0,m+=x),_s(this.layoutVertexArray,_.x,_.y,v.x,v.y,0,1,m);var b=p.vertexLength;this.indexArray.emplaceBack(b,b+2,b+1),this.indexArray.emplaceBack(b+1,b+2,b+3),p.vertexLength+=4,p.primitiveLength+=2}}}}if(p.vertexLength+l>no.MAX_VERTEX_ARRAY_LENGTH&&(p=this.segments.prepareSegment(l,this.layoutVertexArray,this.indexArray)),"Polygon"===ys[t.type]){for(var w=[],S=[],T=p.vertexLength,I=0,E=s;I<E.length;I+=1){var A=E[I];if(0!==A.length){A!==s[0]&&S.push(w.length/2);for(var z=0;z<A.length;z++){var P=A[z];_s(this.layoutVertexArray,P.x,P.y,0,0,1,1,0),w.push(P.x),w.push(P.y)}}}for(var C=ba(w,S),k=0;k<C.length;k+=3)this.indexArray.emplaceBack(T+C[k],T+C[k+2],T+C[k+1]);p.primitiveLength+=C.length/3,p.vertexLength+=l}}var M;this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,r,n,i)},Li("FillExtrusionBucket",vs,{omit:["layers","features"]});var bs={paint:new _n({"fill-extrusion-opacity":new fn(Et["paint_fill-extrusion"]["fill-extrusion-opacity"]),"fill-extrusion-color":new dn(Et["paint_fill-extrusion"]["fill-extrusion-color"]),"fill-extrusion-translate":new fn(Et["paint_fill-extrusion"]["fill-extrusion-translate"]),"fill-extrusion-translate-anchor":new fn(Et["paint_fill-extrusion"]["fill-extrusion-translate-anchor"]),"fill-extrusion-pattern":new mn(Et["paint_fill-extrusion"]["fill-extrusion-pattern"]),"fill-extrusion-height":new dn(Et["paint_fill-extrusion"]["fill-extrusion-height"]),"fill-extrusion-base":new dn(Et["paint_fill-extrusion"]["fill-extrusion-base"]),"fill-extrusion-vertical-gradient":new fn(Et["paint_fill-extrusion"]["fill-extrusion-vertical-gradient"])})},ws=function(t){function e(e){t.call(this,e,bs)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.createBucket=function(t){return new vs(t)},e.prototype.queryRadius=function(){return Yo(this.paint.get("fill-extrusion-translate"))},e.prototype.is3D=function(){return!0},e.prototype.queryIntersectsFeature=function(t,e,r,i,o,a,s,l){var u=Qo(t,this.paint.get("fill-extrusion-translate"),this.paint.get("fill-extrusion-translate-anchor"),a.angle,s),c=this.paint.get("fill-extrusion-height").evaluate(e,r),p=this.paint.get("fill-extrusion-base").evaluate(e,r),h=function(t,e,r,i){for(var o=[],a=0,s=t;a<s.length;a+=1){var l=s[a],u=[l.x,l.y,0,1];aa(u,u,e),o.push(new n(u[0]/u[3],u[1]/u[3]))}return o}(u,l),f=function(t,e,r,i){for(var o=[],a=[],s=i[8]*e,l=i[9]*e,u=i[10]*e,c=i[11]*e,p=i[8]*r,h=i[9]*r,f=i[10]*r,d=i[11]*r,m=0,y=t;m<y.length;m+=1){for(var g=[],_=[],v=0,x=y[m];v<x.length;v+=1){var b=x[v],w=b.x,S=b.y,T=i[0]*w+i[4]*S+i[12],I=i[1]*w+i[5]*S+i[13],E=i[2]*w+i[6]*S+i[14],A=i[3]*w+i[7]*S+i[15],z=E+u,P=A+c,C=T+p,k=I+h,M=E+f,D=A+d,L=new n((T+s)/P,(I+l)/P);L.z=z/P,g.push(L);var B=new n(C/D,k/D);B.z=M/D,_.push(B)}o.push(g),a.push(_)}return[o,a]}(i,p,c,l);return function(t,e,r){var i=1/0;No(r,e)&&(i=Ts(r,e[0]));for(var n=0;n<e.length;n++)for(var o=e[n],a=t[n],s=0;s<o.length-1;s++){var l=o[s],u=[l,o[s+1],a[s+1],a[s],l];Uo(r,u)&&(i=Math.min(i,Ts(r,u)))}return i!==1/0&&i}(f[0],f[1],h)},e}(vn);function Ss(t,e){return t.x*e.x+t.y*e.y}function Ts(t,e){if(1===t.length){for(var r,i=0,n=e[i++];!r||n.equals(r);)if(!(r=e[i++]))return 1/0;for(;i<e.length;i++){var o=e[i],a=t[0],s=r.sub(n),l=o.sub(n),u=a.sub(n),c=Ss(s,s),p=Ss(s,l),h=Ss(l,l),f=Ss(u,s),d=Ss(u,l),m=c*h-p*p,y=(h*f-p*d)/m,g=(c*d-p*f)/m,_=n.z*(1-y-g)+r.z*y+o.z*g;if(isFinite(_))return _}return 1/0}for(var v=1/0,x=0,b=e;x<b.length;x+=1)v=Math.min(v,b[x].z);return v}var Is=Sn([{name:"a_pos_normal",components:2,type:"Int16"},{name:"a_data",components:4,type:"Uint8"}],4).members,Es=ms.VectorTileFeature.types,As=Math.cos(Math.PI/180*37.5),zs=Math.pow(2,14)/.5,Ps=function(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map(function(t){return t.id}),this.index=t.index,this.hasPattern=!1,this.patternFeatures=[],this.layoutVertexArray=new zn,this.indexArray=new Fn,this.programConfigurations=new Mo(Is,t.layers,t.zoom),this.segments=new no,this.stateDependentLayerIds=this.layers.filter(function(t){return t.isStateDependent()}).map(function(t){return t.id})};Ps.prototype.populate=function(t,e,r){this.hasPattern=ts("line",this.layers,e);for(var i=this.layers[0].layout.get("line-sort-key"),n=[],o=0,a=t;o<a.length;o+=1){var s=a[o],l=s.feature,u=s.id,c=s.index,p=s.sourceLayerIndex,h=this.layers[0]._featureFilter.needGeometry,f={type:l.type,id:u,properties:l.properties,geometry:h?Ro(l):[]};if(this.layers[0]._featureFilter.filter(new nn(this.zoom),f,r)){h||(f.geometry=Ro(l));var d=i?i.evaluate(f,{},r):void 0;n.push({id:u,properties:l.properties,type:l.type,sourceLayerIndex:p,index:c,geometry:f.geometry,patterns:{},sortKey:d})}}i&&n.sort(function(t,e){return t.sortKey-e.sortKey});for(var m=0,y=n;m<y.length;m+=1){var g=y[m],_=g.geometry,v=g.index,x=g.sourceLayerIndex;if(this.hasPattern){var b=es("line",this.layers,g,this.zoom,e);this.patternFeatures.push(b)}else this.addFeature(g,_,v,r,{});e.featureIndex.insert(t[v].feature,_,v,x,this.index)}},Ps.prototype.update=function(t,e,r){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,e,this.stateDependentLayers,r)},Ps.prototype.addFeatures=function(t,e,r){for(var i=0,n=this.patternFeatures;i<n.length;i+=1){var o=n[i];this.addFeature(o,o.geometry,o.index,e,r)}},Ps.prototype.isEmpty=function(){return 0===this.layoutVertexArray.length},Ps.prototype.uploadPending=function(){return!this.uploaded||this.programConfigurations.needsUpload},Ps.prototype.upload=function(t){this.uploaded||(this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,Is),this.indexBuffer=t.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(t),this.uploaded=!0},Ps.prototype.destroy=function(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy())},Ps.prototype.addFeature=function(t,e,r,i,n){for(var o=this.layers[0].layout,a=o.get("line-join").evaluate(t,{}),s=o.get("line-cap"),l=o.get("line-miter-limit"),u=o.get("line-round-limit"),c=0,p=e;c<p.length;c+=1)this.addLine(p[c],t,a,s,l,u);this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,r,n,i)},Ps.prototype.addLine=function(t,e,r,i,n,o){if(this.distance=0,this.scaledDistance=0,this.totalDistance=0,e.properties&&e.properties.hasOwnProperty("mapbox_clip_start")&&e.properties.hasOwnProperty("mapbox_clip_end")){this.clipStart=+e.properties.mapbox_clip_start,this.clipEnd=+e.properties.mapbox_clip_end;for(var a=0;a<t.length-1;a++)this.totalDistance+=t[a].dist(t[a+1]);this.updateScaledDistance()}for(var s="Polygon"===Es[e.type],l=t.length;l>=2&&t[l-1].equals(t[l-2]);)l--;for(var u=0;u<l-1&&t[u].equals(t[u+1]);)u++;if(!(l<(s?3:2))){"bevel"===r&&(n=1.05);var c,p=this.overscaling<=16?122880/(512*this.overscaling):0,h=this.segments.prepareSegment(10*l,this.layoutVertexArray,this.indexArray),f=void 0,d=void 0,m=void 0,y=void 0;this.e1=this.e2=-1,s&&(y=t[u].sub(c=t[l-2])._unit()._perp());for(var g=u;g<l;g++)if(!(d=g===l-1?s?t[u+1]:void 0:t[g+1])||!t[g].equals(d)){y&&(m=y),c&&(f=c),c=t[g],y=d?d.sub(c)._unit()._perp():m;var _=(m=m||y).add(y);0===_.x&&0===_.y||_._unit();var v=m.x*y.x+m.y*y.y,x=_.x*y.x+_.y*y.y,b=0!==x?1/x:1/0,w=2*Math.sqrt(2-2*x),S=x<As&&f&&d,T=m.x*y.y-m.y*y.x>0;if(S&&g>u){var I=c.dist(f);if(I>2*p){var E=c.sub(c.sub(f)._mult(p/I)._round());this.updateDistance(f,E),this.addCurrentVertex(E,m,0,0,h),f=E}}var A=f&&d,z=A?r:s?"butt":i;if(A&&"round"===z&&(b<o?z="miter":b<=2&&(z="fakeround")),"miter"===z&&b>n&&(z="bevel"),"bevel"===z&&(b>2&&(z="flipbevel"),b<n&&(z="miter")),f&&this.updateDistance(f,c),"miter"===z)_._mult(b),this.addCurrentVertex(c,_,0,0,h);else if("flipbevel"===z){if(b>100)_=y.mult(-1);else{var P=b*m.add(y).mag()/m.sub(y).mag();_._perp()._mult(P*(T?-1:1))}this.addCurrentVertex(c,_,0,0,h),this.addCurrentVertex(c,_.mult(-1),0,0,h)}else if("bevel"===z||"fakeround"===z){var C=-Math.sqrt(b*b-1),k=T?C:0,M=T?0:C;if(f&&this.addCurrentVertex(c,m,k,M,h),"fakeround"===z)for(var D=Math.round(180*w/Math.PI/20),L=1;L<D;L++){var B=L/D;if(.5!==B){var R=B-.5;B+=B*R*(B-1)*((1.0904+v*(v*(3.55645-1.43519*v)-3.2452))*R*R+(.848013+v*(.215638*v-1.06021)))}var F=y.sub(m)._mult(B)._add(m)._unit()._mult(T?-1:1);this.addHalfVertex(c,F.x,F.y,!1,T,0,h)}d&&this.addCurrentVertex(c,y,-k,-M,h)}else if("butt"===z)this.addCurrentVertex(c,_,0,0,h);else if("square"===z){var O=f?1:-1;this.addCurrentVertex(c,_,O,O,h)}else"round"===z&&(f&&(this.addCurrentVertex(c,m,0,0,h),this.addCurrentVertex(c,m,1,1,h,!0)),d&&(this.addCurrentVertex(c,y,-1,-1,h,!0),this.addCurrentVertex(c,y,0,0,h)));if(S&&g<l-1){var U=c.dist(d);if(U>2*p){var V=c.add(d.sub(c)._mult(p/U)._round());this.updateDistance(c,V),this.addCurrentVertex(V,y,0,0,h),c=V}}}}},Ps.prototype.addCurrentVertex=function(t,e,r,i,n,o){void 0===o&&(o=!1);var a=e.y*i-e.x,s=-e.y-e.x*i;this.addHalfVertex(t,e.x+e.y*r,e.y-e.x*r,o,!1,r,n),this.addHalfVertex(t,a,s,o,!0,-i,n),this.distance>zs/2&&0===this.totalDistance&&(this.distance=0,this.addCurrentVertex(t,e,r,i,n,o))},Ps.prototype.addHalfVertex=function(t,e,r,i,n,o,a){var s=.5*this.scaledDistance;this.layoutVertexArray.emplaceBack((t.x<<1)+(i?1:0),(t.y<<1)+(n?1:0),Math.round(63*e)+128,Math.round(63*r)+128,1+(0===o?0:o<0?-1:1)|(63&s)<<2,s>>6);var l=a.vertexLength++;this.e1>=0&&this.e2>=0&&(this.indexArray.emplaceBack(this.e1,this.e2,l),a.primitiveLength++),n?this.e2=l:this.e1=l},Ps.prototype.updateScaledDistance=function(){this.scaledDistance=this.totalDistance>0?(this.clipStart+(this.clipEnd-this.clipStart)*this.distance/this.totalDistance)*(zs-1):this.distance},Ps.prototype.updateDistance=function(t,e){this.distance+=t.dist(e),this.updateScaledDistance()},Li("LineBucket",Ps,{omit:["layers","patternFeatures"]});var Cs=new _n({"line-cap":new fn(Et.layout_line["line-cap"]),"line-join":new dn(Et.layout_line["line-join"]),"line-miter-limit":new fn(Et.layout_line["line-miter-limit"]),"line-round-limit":new fn(Et.layout_line["line-round-limit"]),"line-sort-key":new dn(Et.layout_line["line-sort-key"])}),ks={paint:new _n({"line-opacity":new dn(Et.paint_line["line-opacity"]),"line-color":new dn(Et.paint_line["line-color"]),"line-translate":new fn(Et.paint_line["line-translate"]),"line-translate-anchor":new fn(Et.paint_line["line-translate-anchor"]),"line-width":new dn(Et.paint_line["line-width"]),"line-gap-width":new dn(Et.paint_line["line-gap-width"]),"line-offset":new dn(Et.paint_line["line-offset"]),"line-blur":new dn(Et.paint_line["line-blur"]),"line-dasharray":new yn(Et.paint_line["line-dasharray"]),"line-pattern":new mn(Et.paint_line["line-pattern"]),"line-gradient":new gn(Et.paint_line["line-gradient"])}),layout:Cs},Ms=new(function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.possiblyEvaluate=function(e,r){return r=new nn(Math.floor(r.zoom),{now:r.now,fadeDuration:r.fadeDuration,zoomHistory:r.zoomHistory,transition:r.transition}),t.prototype.possiblyEvaluate.call(this,e,r)},e.prototype.evaluate=function(e,r,i,n){return r=c({},r,{zoom:Math.floor(r.zoom)}),t.prototype.evaluate.call(this,e,r,i,n)},e}(dn))(ks.paint.properties["line-width"].specification);Ms.useIntegerZoom=!0;var Ds=function(t){function e(e){t.call(this,e,ks)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._handleSpecialPaintPropertyUpdate=function(t){"line-gradient"===t&&this._updateGradient()},e.prototype._updateGradient=function(){this.gradient=ya(this._transitionablePaint._values["line-gradient"].value.expression,"lineProgress"),this.gradientTexture=null},e.prototype.recalculate=function(e,r){t.prototype.recalculate.call(this,e,r),this.paint._values["line-floorwidth"]=Ms.possiblyEvaluate(this._transitioningPaint._values["line-width"].value,e)},e.prototype.createBucket=function(t){return new Ps(t)},e.prototype.queryRadius=function(t){var e=t,r=Ls(Jo("line-width",this,e),Jo("line-gap-width",this,e)),i=Jo("line-offset",this,e);return r/2+Math.abs(i)+Yo(this.paint.get("line-translate"))},e.prototype.queryIntersectsFeature=function(t,e,r,i,o,a,s){var l=Qo(t,this.paint.get("line-translate"),this.paint.get("line-translate-anchor"),a.angle,s),u=s/2*Ls(this.paint.get("line-width").evaluate(e,r),this.paint.get("line-gap-width").evaluate(e,r)),c=this.paint.get("line-offset").evaluate(e,r);return c&&(i=function(t,e){for(var r=[],i=new n(0,0),o=0;o<t.length;o++){for(var a=t[o],s=[],l=0;l<a.length;l++){var u=a[l],c=a[l+1],p=0===l?i:u.sub(a[l-1])._unit()._perp(),h=l===a.length-1?i:c.sub(u)._unit()._perp(),f=p._add(h)._unit();f._mult(1/(f.x*h.x+f.y*h.y)),s.push(f._mult(e)._add(u))}r.push(s)}return r}(i,c*s)),function(t,e,r){for(var i=0;i<e.length;i++){var n=e[i];if(t.length>=3)for(var o=0;o<n.length;o++)if(Ko(t,n[o]))return!0;if(jo(t,n,r))return!0}return!1}(l,i,u)},e.prototype.isTileClipped=function(){return!0},e}(vn);function Ls(t,e){return e>0?e+2*t:t}var Bs=Sn([{name:"a_pos_offset",components:4,type:"Int16"},{name:"a_data",components:4,type:"Uint16"},{name:"a_pixeloffset",components:4,type:"Int16"}],4),Rs=Sn([{name:"a_projected_pos",components:3,type:"Float32"}],4),Fs=(Sn([{name:"a_fade_opacity",components:1,type:"Uint32"}],4),Sn([{name:"a_placed",components:2,type:"Uint8"},{name:"a_shift",components:2,type:"Float32"}])),Os=(Sn([{type:"Int16",name:"anchorPointX"},{type:"Int16",name:"anchorPointY"},{type:"Int16",name:"x1"},{type:"Int16",name:"y1"},{type:"Int16",name:"x2"},{type:"Int16",name:"y2"},{type:"Uint32",name:"featureIndex"},{type:"Uint16",name:"sourceLayerIndex"},{type:"Uint16",name:"bucketIndex"}]),Sn([{name:"a_pos",components:2,type:"Int16"},{name:"a_anchor_pos",components:2,type:"Int16"},{name:"a_extrude",components:2,type:"Int16"}],4)),Us=Sn([{name:"a_pos",components:2,type:"Float32"},{name:"a_radius",components:1,type:"Float32"},{name:"a_flags",components:2,type:"Int16"}],4);function Vs(t,e,r){return t.sections.forEach(function(t){t.text=function(t,e,r){var i=e.layout.get("text-transform").evaluate(r,{});return"uppercase"===i?t=t.toLocaleUpperCase():"lowercase"===i&&(t=t.toLocaleLowerCase()),rn.applyArabicShaping&&(t=rn.applyArabicShaping(t)),t}(t.text,e,r)}),t}Sn([{name:"triangle",components:3,type:"Uint16"}]),Sn([{type:"Int16",name:"anchorX"},{type:"Int16",name:"anchorY"},{type:"Uint16",name:"glyphStartIndex"},{type:"Uint16",name:"numGlyphs"},{type:"Uint32",name:"vertexStartIndex"},{type:"Uint32",name:"lineStartIndex"},{type:"Uint32",name:"lineLength"},{type:"Uint16",name:"segment"},{type:"Uint16",name:"lowerSize"},{type:"Uint16",name:"upperSize"},{type:"Float32",name:"lineOffsetX"},{type:"Float32",name:"lineOffsetY"},{type:"Uint8",name:"writingMode"},{type:"Uint8",name:"placedOrientation"},{type:"Uint8",name:"hidden"},{type:"Uint32",name:"crossTileID"},{type:"Int16",name:"associatedIconIndex"}]),Sn([{type:"Int16",name:"anchorX"},{type:"Int16",name:"anchorY"},{type:"Int16",name:"rightJustifiedTextSymbolIndex"},{type:"Int16",name:"centerJustifiedTextSymbolIndex"},{type:"Int16",name:"leftJustifiedTextSymbolIndex"},{type:"Int16",name:"verticalPlacedTextSymbolIndex"},{type:"Int16",name:"placedIconSymbolIndex"},{type:"Int16",name:"verticalPlacedIconSymbolIndex"},{type:"Uint16",name:"key"},{type:"Uint16",name:"textBoxStartIndex"},{type:"Uint16",name:"textBoxEndIndex"},{type:"Uint16",name:"verticalTextBoxStartIndex"},{type:"Uint16",name:"verticalTextBoxEndIndex"},{type:"Uint16",name:"iconBoxStartIndex"},{type:"Uint16",name:"iconBoxEndIndex"},{type:"Uint16",name:"verticalIconBoxStartIndex"},{type:"Uint16",name:"verticalIconBoxEndIndex"},{type:"Uint16",name:"featureIndex"},{type:"Uint16",name:"numHorizontalGlyphVertices"},{type:"Uint16",name:"numVerticalGlyphVertices"},{type:"Uint16",name:"numIconVertices"},{type:"Uint16",name:"numVerticalIconVertices"},{type:"Uint16",name:"useRuntimeCollisionCircles"},{type:"Uint32",name:"crossTileID"},{type:"Float32",name:"textBoxScale"},{type:"Float32",components:2,name:"textOffset"},{type:"Float32",name:"collisionCircleDiameter"}]),Sn([{type:"Float32",name:"offsetX"}]),Sn([{type:"Int16",name:"x"},{type:"Int16",name:"y"},{type:"Int16",name:"tileUnitDistanceFromAnchor"}]);var Ns={"!":"︕","#":"#",$:"$","%":"%","&":"&","(":"︵",")":"︶","*":"*","+":"+",",":"︐","-":"︲",".":"・","/":"/",":":"︓",";":"︔","<":"︿","=":"=",">":"﹀","?":"︖","@":"@","[":"﹇","\\":"\","]":"﹈","^":"^",_:"︳","`":"`","{":"︷","|":"―","}":"︸","~":"~","¢":"¢","£":"£","¥":"¥","¦":"¦","¬":"¬","¯":" ̄","–":"︲","—":"︱","‘":"﹃","’":"﹄","“":"﹁","”":"﹂","…":"︙","‧":"・","₩":"₩","、":"︑","。":"︒","〈":"︿","〉":"﹀","《":"︽","》":"︾","「":"﹁","」":"﹂","『":"﹃","』":"﹄","【":"︻","】":"︼","〔":"︹","〕":"︺","〖":"︗","〗":"︘","!":"︕","(":"︵",")":"︶",",":"︐","-":"︲",".":"・",":":"︓",";":"︔","<":"︿",">":"﹀","?":"︖","[":"﹇","]":"﹈","_":"︳","{":"︷","|":"―","}":"︸","⦅":"︵","⦆":"︶","。":"︒","「":"﹁","」":"﹂"},js=function(t,e,r,i,n){var o,a,s=8*n-i-1,l=(1<<s)-1,u=l>>1,c=-7,p=r?n-1:0,h=r?-1:1,f=t[e+p];for(p+=h,o=f&(1<<-c)-1,f>>=-c,c+=s;c>0;o=256*o+t[e+p],p+=h,c-=8);for(a=o&(1<<-c)-1,o>>=-c,c+=i;c>0;a=256*a+t[e+p],p+=h,c-=8);if(0===o)o=1-u;else{if(o===l)return a?NaN:1/0*(f?-1:1);a+=Math.pow(2,i),o-=u}return(f?-1:1)*a*Math.pow(2,o-i)},qs=function(t,e,r,i,n,o){var a,s,l,u=8*o-n-1,c=(1<<u)-1,p=c>>1,h=23===n?Math.pow(2,-24)-Math.pow(2,-77):0,f=i?0:o-1,d=i?1:-1,m=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,a=c):(a=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-a))<1&&(a--,l*=2),(e+=a+p>=1?h/l:h*Math.pow(2,1-p))*l>=2&&(a++,l/=2),a+p>=c?(s=0,a=c):a+p>=1?(s=(e*l-1)*Math.pow(2,n),a+=p):(s=e*Math.pow(2,p-1)*Math.pow(2,n),a=0));n>=8;t[r+f]=255&s,f+=d,s/=256,n-=8);for(a=a<<n|s,u+=n;u>0;t[r+f]=255&a,f+=d,a/=256,u-=8);t[r+f-d]|=128*m},Zs=Gs;function Gs(t){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(t)?t:new Uint8Array(t||0),this.pos=0,this.type=0,this.length=this.buf.length}Gs.Varint=0,Gs.Fixed64=1,Gs.Bytes=2,Gs.Fixed32=5;var Xs="undefined"==typeof TextDecoder?null:new TextDecoder("utf8");function Ws(t){return t.type===Gs.Bytes?t.readVarint()+t.pos:t.pos+1}function Ks(t,e,r){return r?4294967296*e+(t>>>0):4294967296*(e>>>0)+(t>>>0)}function Hs(t,e,r){var i=e<=16383?1:e<=2097151?2:e<=268435455?3:Math.floor(Math.log(e)/(7*Math.LN2));r.realloc(i);for(var n=r.pos-1;n>=t;n--)r.buf[n+i]=r.buf[n]}function Js(t,e){for(var r=0;r<t.length;r++)e.writeVarint(t[r])}function Ys(t,e){for(var r=0;r<t.length;r++)e.writeSVarint(t[r])}function Qs(t,e){for(var r=0;r<t.length;r++)e.writeFloat(t[r])}function $s(t,e){for(var r=0;r<t.length;r++)e.writeDouble(t[r])}function tl(t,e){for(var r=0;r<t.length;r++)e.writeBoolean(t[r])}function el(t,e){for(var r=0;r<t.length;r++)e.writeFixed32(t[r])}function rl(t,e){for(var r=0;r<t.length;r++)e.writeSFixed32(t[r])}function il(t,e){for(var r=0;r<t.length;r++)e.writeFixed64(t[r])}function nl(t,e){for(var r=0;r<t.length;r++)e.writeSFixed64(t[r])}function ol(t,e){return(t[e]|t[e+1]<<8|t[e+2]<<16)+16777216*t[e+3]}function al(t,e,r){t[r]=e,t[r+1]=e>>>8,t[r+2]=e>>>16,t[r+3]=e>>>24}function sl(t,e){return(t[e]|t[e+1]<<8|t[e+2]<<16)+(t[e+3]<<24)}function ll(t,e,r){1===t&&r.readMessage(ul,e)}function ul(t,e,r){if(3===t){var i=r.readMessage(cl,{}),n=i.width,o=i.height,a=i.left,s=i.top,l=i.advance;e.push({id:i.id,bitmap:new fa({width:n+6,height:o+6},i.bitmap),metrics:{width:n,height:o,left:a,top:s,advance:l}})}}function cl(t,e,r){1===t?e.id=r.readVarint():2===t?e.bitmap=r.readBytes():3===t?e.width=r.readVarint():4===t?e.height=r.readVarint():5===t?e.left=r.readSVarint():6===t?e.top=r.readSVarint():7===t&&(e.advance=r.readVarint())}function pl(t){for(var e=0,r=0,i=0,n=t;i<n.length;i+=1){var o=n[i];e+=o.w*o.h,r=Math.max(r,o.w)}t.sort(function(t,e){return e.h-t.h});for(var a=[{x:0,y:0,w:Math.max(Math.ceil(Math.sqrt(e/.95)),r),h:1/0}],s=0,l=0,u=0,c=t;u<c.length;u+=1)for(var p=c[u],h=a.length-1;h>=0;h--){var f=a[h];if(!(p.w>f.w||p.h>f.h)){if(p.x=f.x,p.y=f.y,l=Math.max(l,p.y+p.h),s=Math.max(s,p.x+p.w),p.w===f.w&&p.h===f.h){var d=a.pop();h<a.length&&(a[h]=d)}else p.h===f.h?(f.x+=p.w,f.w-=p.w):p.w===f.w?(f.y+=p.h,f.h-=p.h):(a.push({x:f.x+p.w,y:f.y,w:f.w-p.w,h:p.h}),f.y+=p.h,f.h-=p.h);break}}return{w:s,h:l,fill:e/(s*l)||0}}Gs.prototype={destroy:function(){this.buf=null},readFields:function(t,e,r){for(r=r||this.length;this.pos<r;){var i=this.readVarint(),n=i>>3,o=this.pos;this.type=7&i,t(n,e,this),this.pos===o&&this.skip(i)}return e},readMessage:function(t,e){return this.readFields(t,e,this.readVarint()+this.pos)},readFixed32:function(){var t=ol(this.buf,this.pos);return this.pos+=4,t},readSFixed32:function(){var t=sl(this.buf,this.pos);return this.pos+=4,t},readFixed64:function(){var t=ol(this.buf,this.pos)+4294967296*ol(this.buf,this.pos+4);return this.pos+=8,t},readSFixed64:function(){var t=ol(this.buf,this.pos)+4294967296*sl(this.buf,this.pos+4);return this.pos+=8,t},readFloat:function(){var t=js(this.buf,this.pos,!0,23,4);return this.pos+=4,t},readDouble:function(){var t=js(this.buf,this.pos,!0,52,8);return this.pos+=8,t},readVarint:function(t){var e,r,i=this.buf;return e=127&(r=i[this.pos++]),r<128?e:(e|=(127&(r=i[this.pos++]))<<7,r<128?e:(e|=(127&(r=i[this.pos++]))<<14,r<128?e:(e|=(127&(r=i[this.pos++]))<<21,r<128?e:function(t,e,r){var i,n,o=r.buf;if(i=(112&(n=o[r.pos++]))>>4,n<128)return Ks(t,i,e);if(i|=(127&(n=o[r.pos++]))<<3,n<128)return Ks(t,i,e);if(i|=(127&(n=o[r.pos++]))<<10,n<128)return Ks(t,i,e);if(i|=(127&(n=o[r.pos++]))<<17,n<128)return Ks(t,i,e);if(i|=(127&(n=o[r.pos++]))<<24,n<128)return Ks(t,i,e);if(i|=(1&(n=o[r.pos++]))<<31,n<128)return Ks(t,i,e);throw new Error("Expected varint not more than 10 bytes")}(e|=(15&(r=i[this.pos]))<<28,t,this))))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var t=this.readVarint();return t%2==1?(t+1)/-2:t/2},readBoolean:function(){return Boolean(this.readVarint())},readString:function(){var t=this.readVarint()+this.pos,e=this.pos;return this.pos=t,t-e>=12&&Xs?function(t,e,r){return Xs.decode(t.subarray(e,r))}(this.buf,e,t):function(t,e,r){for(var i="",n=e;n<r;){var o,a,s,l=t[n],u=null,c=l>239?4:l>223?3:l>191?2:1;if(n+c>r)break;1===c?l<128&&(u=l):2===c?128==(192&(o=t[n+1]))&&(u=(31&l)<<6|63&o)<=127&&(u=null):3===c?(a=t[n+2],128==(192&(o=t[n+1]))&&128==(192&a)&&((u=(15&l)<<12|(63&o)<<6|63&a)<=2047||u>=55296&&u<=57343)&&(u=null)):4===c&&(a=t[n+2],s=t[n+3],128==(192&(o=t[n+1]))&&128==(192&a)&&128==(192&s)&&((u=(15&l)<<18|(63&o)<<12|(63&a)<<6|63&s)<=65535||u>=1114112)&&(u=null)),null===u?(u=65533,c=1):u>65535&&(u-=65536,i+=String.fromCharCode(u>>>10&1023|55296),u=56320|1023&u),i+=String.fromCharCode(u),n+=c}return i}(this.buf,e,t)},readBytes:function(){var t=this.readVarint()+this.pos,e=this.buf.subarray(this.pos,t);return this.pos=t,e},readPackedVarint:function(t,e){if(this.type!==Gs.Bytes)return t.push(this.readVarint(e));var r=Ws(this);for(t=t||[];this.pos<r;)t.push(this.readVarint(e));return t},readPackedSVarint:function(t){if(this.type!==Gs.Bytes)return t.push(this.readSVarint());var e=Ws(this);for(t=t||[];this.pos<e;)t.push(this.readSVarint());return t},readPackedBoolean:function(t){if(this.type!==Gs.Bytes)return t.push(this.readBoolean());var e=Ws(this);for(t=t||[];this.pos<e;)t.push(this.readBoolean());return t},readPackedFloat:function(t){if(this.type!==Gs.Bytes)return t.push(this.readFloat());var e=Ws(this);for(t=t||[];this.pos<e;)t.push(this.readFloat());return t},readPackedDouble:function(t){if(this.type!==Gs.Bytes)return t.push(this.readDouble());var e=Ws(this);for(t=t||[];this.pos<e;)t.push(this.readDouble());return t},readPackedFixed32:function(t){if(this.type!==Gs.Bytes)return t.push(this.readFixed32());var e=Ws(this);for(t=t||[];this.pos<e;)t.push(this.readFixed32());return t},readPackedSFixed32:function(t){if(this.type!==Gs.Bytes)return t.push(this.readSFixed32());var e=Ws(this);for(t=t||[];this.pos<e;)t.push(this.readSFixed32());return t},readPackedFixed64:function(t){if(this.type!==Gs.Bytes)return t.push(this.readFixed64());var e=Ws(this);for(t=t||[];this.pos<e;)t.push(this.readFixed64());return t},readPackedSFixed64:function(t){if(this.type!==Gs.Bytes)return t.push(this.readSFixed64());var e=Ws(this);for(t=t||[];this.pos<e;)t.push(this.readSFixed64());return t},skip:function(t){var e=7&t;if(e===Gs.Varint)for(;this.buf[this.pos++]>127;);else if(e===Gs.Bytes)this.pos=this.readVarint()+this.pos;else if(e===Gs.Fixed32)this.pos+=4;else{if(e!==Gs.Fixed64)throw new Error("Unimplemented type: "+e);this.pos+=8}},writeTag:function(t,e){this.writeVarint(t<<3|e)},realloc:function(t){for(var e=this.length||16;e<this.pos+t;)e*=2;if(e!==this.length){var r=new Uint8Array(e);r.set(this.buf),this.buf=r,this.length=e}},finish:function(){return this.length=this.pos,this.pos=0,this.buf.subarray(0,this.length)},writeFixed32:function(t){this.realloc(4),al(this.buf,t,this.pos),this.pos+=4},writeSFixed32:function(t){this.realloc(4),al(this.buf,t,this.pos),this.pos+=4},writeFixed64:function(t){this.realloc(8),al(this.buf,-1&t,this.pos),al(this.buf,Math.floor(t*(1/4294967296)),this.pos+4),this.pos+=8},writeSFixed64:function(t){this.realloc(8),al(this.buf,-1&t,this.pos),al(this.buf,Math.floor(t*(1/4294967296)),this.pos+4),this.pos+=8},writeVarint:function(t){(t=+t||0)>268435455||t<0?function(t,e){var r,i;if(t>=0?(r=t%4294967296|0,i=t/4294967296|0):(i=~(-t/4294967296),4294967295^(r=~(-t%4294967296))?r=r+1|0:(r=0,i=i+1|0)),t>=0x10000000000000000||t<-0x10000000000000000)throw new Error("Given varint doesn't fit into 10 bytes");e.realloc(10),function(t,e,r){r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,r.buf[r.pos]=127&(t>>>=7)}(r,0,e),function(t,e){var r=(7&t)<<4;e.buf[e.pos++]|=r|((t>>>=3)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t)))))}(i,e)}(t,this):(this.realloc(4),this.buf[this.pos++]=127&t|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=t>>>7&127))))},writeSVarint:function(t){this.writeVarint(t<0?2*-t-1:2*t)},writeBoolean:function(t){this.writeVarint(Boolean(t))},writeString:function(t){t=String(t),this.realloc(4*t.length),this.pos++;var e=this.pos;this.pos=function(t,e,r){for(var i,n,o=0;o<e.length;o++){if((i=e.charCodeAt(o))>55295&&i<57344){if(!n){i>56319||o+1===e.length?(t[r++]=239,t[r++]=191,t[r++]=189):n=i;continue}if(i<56320){t[r++]=239,t[r++]=191,t[r++]=189,n=i;continue}i=n-55296<<10|i-56320|65536,n=null}else n&&(t[r++]=239,t[r++]=191,t[r++]=189,n=null);i<128?t[r++]=i:(i<2048?t[r++]=i>>6|192:(i<65536?t[r++]=i>>12|224:(t[r++]=i>>18|240,t[r++]=i>>12&63|128),t[r++]=i>>6&63|128),t[r++]=63&i|128)}return r}(this.buf,t,this.pos);var r=this.pos-e;r>=128&&Hs(e,r,this),this.pos=e-1,this.writeVarint(r),this.pos+=r},writeFloat:function(t){this.realloc(4),qs(this.buf,t,this.pos,!0,23,4),this.pos+=4},writeDouble:function(t){this.realloc(8),qs(this.buf,t,this.pos,!0,52,8),this.pos+=8},writeBytes:function(t){var e=t.length;this.writeVarint(e),this.realloc(e);for(var r=0;r<e;r++)this.buf[this.pos++]=t[r]},writeRawMessage:function(t,e){this.pos++;var r=this.pos;t(e,this);var i=this.pos-r;i>=128&&Hs(r,i,this),this.pos=r-1,this.writeVarint(i),this.pos+=i},writeMessage:function(t,e,r){this.writeTag(t,Gs.Bytes),this.writeRawMessage(e,r)},writePackedVarint:function(t,e){e.length&&this.writeMessage(t,Js,e)},writePackedSVarint:function(t,e){e.length&&this.writeMessage(t,Ys,e)},writePackedBoolean:function(t,e){e.length&&this.writeMessage(t,tl,e)},writePackedFloat:function(t,e){e.length&&this.writeMessage(t,Qs,e)},writePackedDouble:function(t,e){e.length&&this.writeMessage(t,$s,e)},writePackedFixed32:function(t,e){e.length&&this.writeMessage(t,el,e)},writePackedSFixed32:function(t,e){e.length&&this.writeMessage(t,rl,e)},writePackedFixed64:function(t,e){e.length&&this.writeMessage(t,il,e)},writePackedSFixed64:function(t,e){e.length&&this.writeMessage(t,nl,e)},writeBytesField:function(t,e){this.writeTag(t,Gs.Bytes),this.writeBytes(e)},writeFixed32Field:function(t,e){this.writeTag(t,Gs.Fixed32),this.writeFixed32(e)},writeSFixed32Field:function(t,e){this.writeTag(t,Gs.Fixed32),this.writeSFixed32(e)},writeFixed64Field:function(t,e){this.writeTag(t,Gs.Fixed64),this.writeFixed64(e)},writeSFixed64Field:function(t,e){this.writeTag(t,Gs.Fixed64),this.writeSFixed64(e)},writeVarintField:function(t,e){this.writeTag(t,Gs.Varint),this.writeVarint(e)},writeSVarintField:function(t,e){this.writeTag(t,Gs.Varint),this.writeSVarint(e)},writeStringField:function(t,e){this.writeTag(t,Gs.Bytes),this.writeString(e)},writeFloatField:function(t,e){this.writeTag(t,Gs.Fixed32),this.writeFloat(e)},writeDoubleField:function(t,e){this.writeTag(t,Gs.Fixed64),this.writeDouble(e)},writeBooleanField:function(t,e){this.writeVarintField(t,Boolean(e))}};var hl=function(t,e){var r=e.pixelRatio,i=e.version,n=e.stretchX,o=e.stretchY,a=e.content;this.paddedRect=t,this.pixelRatio=r,this.stretchX=n,this.stretchY=o,this.content=a,this.version=i},fl={tl:{configurable:!0},br:{configurable:!0},tlbr:{configurable:!0},displaySize:{configurable:!0}};fl.tl.get=function(){return[this.paddedRect.x+1,this.paddedRect.y+1]},fl.br.get=function(){return[this.paddedRect.x+this.paddedRect.w-1,this.paddedRect.y+this.paddedRect.h-1]},fl.tlbr.get=function(){return this.tl.concat(this.br)},fl.displaySize.get=function(){return[(this.paddedRect.w-2)/this.pixelRatio,(this.paddedRect.h-2)/this.pixelRatio]},Object.defineProperties(hl.prototype,fl);var dl=function(t,e){var r={},i={};this.haveRenderCallbacks=[];var n=[];this.addImages(t,r,n),this.addImages(e,i,n);var o=pl(n),a=new da({width:o.w||1,height:o.h||1});for(var s in t){var l=t[s],u=r[s].paddedRect;da.copy(l.data,a,{x:0,y:0},{x:u.x+1,y:u.y+1},l.data)}for(var c in e){var p=e[c],h=i[c].paddedRect,f=h.x+1,d=h.y+1,m=p.data.width,y=p.data.height;da.copy(p.data,a,{x:0,y:0},{x:f,y:d},p.data),da.copy(p.data,a,{x:0,y:y-1},{x:f,y:d-1},{width:m,height:1}),da.copy(p.data,a,{x:0,y:0},{x:f,y:d+y},{width:m,height:1}),da.copy(p.data,a,{x:m-1,y:0},{x:f-1,y:d},{width:1,height:y}),da.copy(p.data,a,{x:0,y:0},{x:f+m,y:d},{width:1,height:y})}this.image=a,this.iconPositions=r,this.patternPositions=i};dl.prototype.addImages=function(t,e,r){for(var i in t){var n=t[i],o={x:0,y:0,w:n.data.width+2,h:n.data.height+2};r.push(o),e[i]=new hl(o,n),n.hasRenderCallback&&this.haveRenderCallbacks.push(i)}},dl.prototype.patchUpdatedImages=function(t,e){for(var r in t.dispatchRenderCallbacks(this.haveRenderCallbacks),t.updatedImages)this.patchUpdatedImage(this.iconPositions[r],t.getImage(r),e),this.patchUpdatedImage(this.patternPositions[r],t.getImage(r),e)},dl.prototype.patchUpdatedImage=function(t,e,r){if(t&&e&&t.version!==e.version){t.version=e.version;var i=t.tl;r.update(e.data,void 0,{x:i[0],y:i[1]})}},Li("ImagePosition",hl),Li("ImageAtlas",dl);var ml={horizontal:1,vertical:2,horizontalOnly:3},yl=function(){this.scale=1,this.fontStack="",this.imageName=null};yl.forText=function(t,e){var r=new yl;return r.scale=t||1,r.fontStack=e,r},yl.forImage=function(t){var e=new yl;return e.imageName=t,e};var gl=function(){this.text="",this.sectionIndex=[],this.sections=[],this.imageSectionID=null};function _l(t,e,r,i,n,o,a,s,l,u,c,p,h,f,d,m){var y,g=gl.fromFeature(t,n);p===ml.vertical&&g.verticalizePunctuation();var _=rn.processBidirectionalText,v=rn.processStyledBidirectionalText;if(_&&1===g.sections.length){y=[];for(var x=0,b=_(g.toString(),Il(g,u,o,e,i,f,d));x<b.length;x+=1){var w=b[x],S=new gl;S.text=w,S.sections=g.sections;for(var T=0;T<w.length;T++)S.sectionIndex.push(0);y.push(S)}}else if(v){y=[];for(var I=0,E=v(g.text,g.sectionIndex,Il(g,u,o,e,i,f,d));I<E.length;I+=1){var A=E[I],z=new gl;z.text=A[0],z.sectionIndex=A[1],z.sections=g.sections,y.push(z)}}else y=function(t,e){for(var r=[],i=t.text,n=0,o=0,a=e;o<a.length;o+=1){var s=a[o];r.push(t.substring(n,s)),n=s}return n<i.length&&r.push(t.substring(n,i.length)),r}(g,Il(g,u,o,e,i,f,d));var P=[],C={positionedLines:P,text:g.toString(),top:c[1],bottom:c[1],left:c[0],right:c[0],writingMode:p,iconsInText:!1,verticalizable:!1};return function(t,e,r,i,n,o,a,s,l,u,c,p){for(var h=0,f=-17,d=0,m=0,y="right"===s?1:"left"===s?0:.5,g=0,_=0,v=n;_<v.length;_+=1){var x=v[_];x.trim();var b=x.getMaxScale(),w=24*(b-1),S={positionedGlyphs:[],lineOffset:0};t.positionedLines[g]=S;var T=S.positionedGlyphs,I=0;if(x.length()){for(var E=0;E<x.length();E++){var A=x.getSection(E),z=x.getSectionIndex(E),P=x.getCharCode(E),C=0,k=null,M=null,D=null,L=24,B=!(l===ml.horizontal||!c&&!qi(P)||c&&(vl[P]||(Z=P,Ni.Arabic(Z)||Ni["Arabic Supplement"](Z)||Ni["Arabic Extended-A"](Z)||Ni["Arabic Presentation Forms-A"](Z)||Ni["Arabic Presentation Forms-B"](Z))));if(A.imageName){var R=i[A.imageName];if(!R)continue;D=A.imageName,t.iconsInText=t.iconsInText||!0,M=R.paddedRect;var F=R.displaySize;A.scale=24*A.scale/p,C=w+(24-F[1]*A.scale),L=(k={width:F[0],height:F[1],left:1,top:-3,advance:B?F[1]:F[0]}).advance;var O=B?F[0]*A.scale-24*b:F[1]*A.scale-24*b;O>0&&O>I&&(I=O)}else{var U=r[A.fontStack],V=U&&U[P];if(V&&V.rect)M=V.rect,k=V.metrics;else{var N=e[A.fontStack],j=N&&N[P];if(!j)continue;k=j.metrics}C=24*(b-A.scale)}B?(t.verticalizable=!0,T.push({glyph:P,imageName:D,x:h,y:f+C,vertical:B,scale:A.scale,fontStack:A.fontStack,sectionIndex:z,metrics:k,rect:M}),h+=L*A.scale+u):(T.push({glyph:P,imageName:D,x:h,y:f+C,vertical:B,scale:A.scale,fontStack:A.fontStack,sectionIndex:z,metrics:k,rect:M}),h+=k.advance*A.scale+u)}0!==T.length&&(d=Math.max(h-u,d),Al(T,0,T.length-1,y,I)),h=0;var q=o*b+I;S.lineOffset=Math.max(I,w),f+=q,m=Math.max(q,m),++g}else f+=o,++g}var Z,G=f- -17,X=El(a),W=X.horizontalAlign,K=X.verticalAlign;(function(t,e,r,i,n,o,a,s,l){var u,c=(e-r)*n;u=o!==a?-s*i- -17:(-i*l+.5)*a;for(var p=0,h=t;p<h.length;p+=1)for(var f=0,d=h[p].positionedGlyphs;f<d.length;f+=1){var m=d[f];m.x+=c,m.y+=u}})(t.positionedLines,y,W,K,d,m,o,G,n.length),t.top+=-K*G,t.bottom=t.top+G,t.left+=-W*d,t.right=t.left+d}(C,e,r,i,y,a,s,l,p,u,h,m),!function(t){for(var e=0,r=P;e<r.length;e+=1)if(0!==r[e].positionedGlyphs.length)return!1;return!0}()&&C}gl.fromFeature=function(t,e){for(var r=new gl,i=0;i<t.sections.length;i++){var n=t.sections[i];n.image?r.addImageSection(n):r.addTextSection(n,e)}return r},gl.prototype.length=function(){return this.text.length},gl.prototype.getSection=function(t){return this.sections[this.sectionIndex[t]]},gl.prototype.getSectionIndex=function(t){return this.sectionIndex[t]},gl.prototype.getCharCode=function(t){return this.text.charCodeAt(t)},gl.prototype.verticalizePunctuation=function(){this.text=function(t){for(var e="",r=0;r<t.length;r++){var i=t.charCodeAt(r+1)||null,n=t.charCodeAt(r-1)||null;e+=i&&Zi(i)&&!Ns[t[r+1]]||n&&Zi(n)&&!Ns[t[r-1]]||!Ns[t[r]]?t[r]:Ns[t[r]]}return e}(this.text)},gl.prototype.trim=function(){for(var t=0,e=0;e<this.text.length&&vl[this.text.charCodeAt(e)];e++)t++;for(var r=this.text.length,i=this.text.length-1;i>=0&&i>=t&&vl[this.text.charCodeAt(i)];i--)r--;this.text=this.text.substring(t,r),this.sectionIndex=this.sectionIndex.slice(t,r)},gl.prototype.substring=function(t,e){var r=new gl;return r.text=this.text.substring(t,e),r.sectionIndex=this.sectionIndex.slice(t,e),r.sections=this.sections,r},gl.prototype.toString=function(){return this.text},gl.prototype.getMaxScale=function(){var t=this;return this.sectionIndex.reduce(function(e,r){return Math.max(e,t.sections[r].scale)},0)},gl.prototype.addTextSection=function(t,e){this.text+=t.text,this.sections.push(yl.forText(t.scale,t.fontStack||e));for(var r=this.sections.length-1,i=0;i<t.text.length;++i)this.sectionIndex.push(r)},gl.prototype.addImageSection=function(t){var e=t.image?t.image.name:"";if(0!==e.length){var r=this.getNextImageSectionCharCode();r?(this.text+=String.fromCharCode(r),this.sections.push(yl.forImage(e)),this.sectionIndex.push(this.sections.length-1)):b("Reached maximum number of images 6401")}else b("Can't add FormattedSection with an empty image.")},gl.prototype.getNextImageSectionCharCode=function(){return this.imageSectionID?this.imageSectionID>=63743?null:++this.imageSectionID:(this.imageSectionID=57344,this.imageSectionID)};var vl={9:!0,10:!0,11:!0,12:!0,13:!0,32:!0},xl={};function bl(t,e,r,i,n,o){if(e.imageName){var a=i[e.imageName];return a?a.displaySize[0]*e.scale*24/o+n:0}var s=r[e.fontStack],l=s&&s[t];return l?l.metrics.advance*e.scale+n:0}function wl(t,e,r,i){var n=Math.pow(t-e,2);return i?t<e?n/2:2*n:n+Math.abs(r)*r}function Sl(t,e,r){var i=0;return 10===t&&(i-=1e4),r&&(i+=150),40!==t&&65288!==t||(i+=50),41!==e&&65289!==e||(i+=50),i}function Tl(t,e,r,i,n,o){for(var a=null,s=wl(e,r,n,o),l=0,u=i;l<u.length;l+=1){var c=u[l],p=wl(e-c.x,r,n,o)+c.badness;p<=s&&(a=c,s=p)}return{index:t,x:e,priorBreak:a,badness:s}}function Il(t,e,r,i,n,o,a){if("point"!==o)return[];if(!t)return[];for(var s,l=[],u=function(t,e,r,i,n,o){for(var a=0,s=0;s<t.length();s++){var l=t.getSection(s);a+=bl(t.getCharCode(s),l,i,n,e,o)}return a/Math.max(1,Math.ceil(a/r))}(t,e,r,i,n,a),c=t.text.indexOf("​")>=0,p=0,h=0;h<t.length();h++){var f=t.getSection(h),d=t.getCharCode(h);if(vl[d]||(p+=bl(d,f,i,n,e,a)),h<t.length()-1){var m=!((s=d)<11904||!(Ni["Bopomofo Extended"](s)||Ni.Bopomofo(s)||Ni["CJK Compatibility Forms"](s)||Ni["CJK Compatibility Ideographs"](s)||Ni["CJK Compatibility"](s)||Ni["CJK Radicals Supplement"](s)||Ni["CJK Strokes"](s)||Ni["CJK Symbols and Punctuation"](s)||Ni["CJK Unified Ideographs Extension A"](s)||Ni["CJK Unified Ideographs"](s)||Ni["Enclosed CJK Letters and Months"](s)||Ni["Halfwidth and Fullwidth Forms"](s)||Ni.Hiragana(s)||Ni["Ideographic Description Characters"](s)||Ni["Kangxi Radicals"](s)||Ni["Katakana Phonetic Extensions"](s)||Ni.Katakana(s)||Ni["Vertical Forms"](s)||Ni["Yi Radicals"](s)||Ni["Yi Syllables"](s)));(xl[d]||m||f.imageName)&&l.push(Tl(h+1,p,u,l,Sl(d,t.getCharCode(h+1),m&&c),!1))}}return function t(e){return e?t(e.priorBreak).concat(e.index):[]}(Tl(t.length(),p,u,l,0,!0))}function El(t){var e=.5,r=.5;switch(t){case"right":case"top-right":case"bottom-right":e=1;break;case"left":case"top-left":case"bottom-left":e=0}switch(t){case"bottom":case"bottom-right":case"bottom-left":r=1;break;case"top":case"top-right":case"top-left":r=0}return{horizontalAlign:e,verticalAlign:r}}function Al(t,e,r,i,n){if(i||n)for(var o=t[r],a=(t[r].x+o.metrics.advance*o.scale)*i,s=e;s<=r;s++)t[s].x-=a,t[s].y+=n}function zl(t,e,r,i,n,o){var a,s=t.image;if(s.content){var l=s.content,u=s.pixelRatio||1;a=[l[0]/u,l[1]/u,s.displaySize[0]-l[2]/u,s.displaySize[1]-l[3]/u]}var c,p,h,f,d=e.left*o,m=e.right*o;"width"===r||"both"===r?(f=n[0]+d-i[3],p=n[0]+m+i[1]):p=(f=n[0]+(d+m-s.displaySize[0])/2)+s.displaySize[0];var y=e.top*o,g=e.bottom*o;return"height"===r||"both"===r?(c=n[1]+y-i[0],h=n[1]+g+i[2]):h=(c=n[1]+(y+g-s.displaySize[1])/2)+s.displaySize[1],{image:s,top:c,right:p,bottom:h,left:f,collisionPadding:a}}xl[10]=!0,xl[32]=!0,xl[38]=!0,xl[40]=!0,xl[41]=!0,xl[43]=!0,xl[45]=!0,xl[47]=!0,xl[173]=!0,xl[183]=!0,xl[8203]=!0,xl[8208]=!0,xl[8211]=!0,xl[8231]=!0;var Pl=function(t){function e(e,r,i,n){t.call(this,e,r),this.angle=i,void 0!==n&&(this.segment=n)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.clone=function(){return new e(this.x,this.y,this.angle,this.segment)},e}(n);function Cl(t,e){var r=e.expression;if("constant"===r.kind)return{kind:"constant",layoutSize:r.evaluate(new nn(t+1))};if("source"===r.kind)return{kind:"source"};for(var i=r.zoomStops,n=r.interpolationType,o=0;o<i.length&&i[o]<=t;)o++;for(var a=o=Math.max(0,o-1);a<i.length&&i[a]<t+1;)a++;a=Math.min(i.length-1,a);var s=i[o],l=i[a];return"composite"===r.kind?{kind:"composite",minZoom:s,maxZoom:l,interpolationType:n}:{kind:"camera",minZoom:s,maxZoom:l,minSize:r.evaluate(new nn(s)),maxSize:r.evaluate(new nn(l)),interpolationType:n}}function kl(t,e,r){var i=e.uSize,n=r.lowerSize;return"source"===t.kind?n/128:"composite"===t.kind?Ne(n/128,r.upperSize/128,e.uSizeT):i}function Ml(t,e){var r=0,i=0;if("constant"===t.kind)i=t.layoutSize;else if("source"!==t.kind){var n=t.interpolationType,o=n?l(rr.interpolationFactor(n,e,t.minZoom,t.maxZoom),0,1):0;"camera"===t.kind?i=Ne(t.minSize,t.maxSize,o):r=o}return{uSizeT:r,uSize:i}}Li("Anchor",Pl);var Dl=Object.freeze({__proto__:null,getSizeData:Cl,evaluateSizeForFeature:kl,evaluateSizeForZoom:Ml,SIZE_PACK_FACTOR:128});function Ll(t,e,r,i,n){if(void 0===e.segment)return!0;for(var o=e,a=e.segment+1,s=0;s>-r/2;){if(--a<0)return!1;s-=t[a].dist(o),o=t[a]}s+=t[a].dist(t[a+1]),a++;for(var l=[],u=0;s<r/2;){var c=t[a],p=t[a+1];if(!p)return!1;var h=t[a-1].angleTo(c)-c.angleTo(p);for(h=Math.abs((h+3*Math.PI)%(2*Math.PI)-Math.PI),l.push({distance:s,angleDelta:h}),u+=h;s-l[0].distance>i;)u-=l.shift().angleDelta;if(u>n)return!1;a++,s+=c.dist(p)}return!0}function Bl(t){for(var e=0,r=0;r<t.length-1;r++)e+=t[r].dist(t[r+1]);return e}function Rl(t,e,r){return t?.6*e*r:0}function Fl(t,e){return Math.max(t?t.right-t.left:0,e?e.right-e.left:0)}function Ol(t,e,r,i,n,o){for(var a=Rl(r,n,o),s=Fl(r,i)*o,l=0,u=Bl(t)/2,c=0;c<t.length-1;c++){var p=t[c],h=t[c+1],f=p.dist(h);if(l+f>u){var d=(u-l)/f,m=Ne(p.x,h.x,d),y=Ne(p.y,h.y,d),g=new Pl(m,y,h.angleTo(p),c);return g._round(),!a||Ll(t,g,s,a,e)?g:void 0}l+=f}}function Ul(t,e,r,i,n,o,a,s,l){var u=Rl(i,o,a),c=Fl(i,n),p=c*a,h=0===t[0].x||t[0].x===l||0===t[0].y||t[0].y===l;return e-p<e/4&&(e=p+e/4),function t(e,r,i,n,o,a,s,l,u){for(var c=a/2,p=Bl(e),h=0,f=r-i,d=[],m=0;m<e.length-1;m++){for(var y=e[m],g=e[m+1],_=y.dist(g),v=g.angleTo(y);f+i<h+_;){var x=((f+=i)-h)/_,b=Ne(y.x,g.x,x),w=Ne(y.y,g.y,x);if(b>=0&&b<u&&w>=0&&w<u&&f-c>=0&&f+c<=p){var S=new Pl(b,w,v,m);S._round(),n&&!Ll(e,S,a,n,o)||d.push(S)}}h+=_}return l||d.length||s||(d=t(e,h/2,i,n,o,a,s,!0,u)),d}(t,h?e/2*s%e:(c/2+2*o)*a*s%e,e,u,r,p,h,!1,l)}function Vl(t,e,r,i,o){for(var a=[],s=0;s<t.length;s++)for(var l=t[s],u=void 0,c=0;c<l.length-1;c++){var p=l[c],h=l[c+1];p.x<e&&h.x<e||(p.x<e?p=new n(e,p.y+(e-p.x)/(h.x-p.x)*(h.y-p.y))._round():h.x<e&&(h=new n(e,p.y+(e-p.x)/(h.x-p.x)*(h.y-p.y))._round()),p.y<r&&h.y<r||(p.y<r?p=new n(p.x+(r-p.y)/(h.y-p.y)*(h.x-p.x),r)._round():h.y<r&&(h=new n(p.x+(r-p.y)/(h.y-p.y)*(h.x-p.x),r)._round()),p.x>=i&&h.x>=i||(p.x>=i?p=new n(i,p.y+(i-p.x)/(h.x-p.x)*(h.y-p.y))._round():h.x>=i&&(h=new n(i,p.y+(i-p.x)/(h.x-p.x)*(h.y-p.y))._round()),p.y>=o&&h.y>=o||(p.y>=o?p=new n(p.x+(o-p.y)/(h.y-p.y)*(h.x-p.x),o)._round():h.y>=o&&(h=new n(p.x+(o-p.y)/(h.y-p.y)*(h.x-p.x),o)._round()),u&&p.equals(u[u.length-1])||a.push(u=[p]),u.push(h)))))}return a}function Nl(t,e,r,i){var o=[],a=t.image,s=a.pixelRatio,l=a.paddedRect.w-2,u=a.paddedRect.h-2,c=t.right-t.left,p=t.bottom-t.top,h=a.stretchX||[[0,l]],f=a.stretchY||[[0,u]],d=function(t,e){return t+e[1]-e[0]},m=h.reduce(d,0),y=f.reduce(d,0),g=l-m,_=u-y,v=0,x=m,b=0,w=y,S=0,T=g,I=0,E=_;if(a.content&&i){var A=a.content;v=jl(h,0,A[0]),b=jl(f,0,A[1]),x=jl(h,A[0],A[2]),w=jl(f,A[1],A[3]),S=A[0]-v,I=A[1]-b,T=A[2]-A[0]-x,E=A[3]-A[1]-w}var z=function(i,o,l,u){var h=Zl(i.stretch-v,x,c,t.left),f=Gl(i.fixed-S,T,i.stretch,m),d=Zl(o.stretch-b,w,p,t.top),g=Gl(o.fixed-I,E,o.stretch,y),_=Zl(l.stretch-v,x,c,t.left),A=Gl(l.fixed-S,T,l.stretch,m),z=Zl(u.stretch-b,w,p,t.top),P=Gl(u.fixed-I,E,u.stretch,y),C=new n(h,d),k=new n(_,d),M=new n(_,z),D=new n(h,z),L=new n(f/s,g/s),B=new n(A/s,P/s),R=e*Math.PI/180;if(R){var F=Math.sin(R),O=Math.cos(R),U=[O,-F,F,O];C._matMult(U),k._matMult(U),D._matMult(U),M._matMult(U)}var V=i.stretch+i.fixed,N=o.stretch+o.fixed;return{tl:C,tr:k,bl:D,br:M,tex:{x:a.paddedRect.x+1+V,y:a.paddedRect.y+1+N,w:l.stretch+l.fixed-V,h:u.stretch+u.fixed-N},writingMode:void 0,glyphOffset:[0,0],sectionIndex:0,pixelOffsetTL:L,pixelOffsetBR:B,minFontScaleX:T/s/c,minFontScaleY:E/s/p,isSDF:r}};if(i&&(a.stretchX||a.stretchY))for(var P=ql(h,g,m),C=ql(f,_,y),k=0;k<P.length-1;k++)for(var M=P[k],D=P[k+1],L=0;L<C.length-1;L++)o.push(z(M,C[L],D,C[L+1]));else o.push(z({fixed:0,stretch:-1},{fixed:0,stretch:-1},{fixed:0,stretch:l+1},{fixed:0,stretch:u+1}));return o}function jl(t,e,r){for(var i=0,n=0,o=t;n<o.length;n+=1){var a=o[n];i+=Math.max(e,Math.min(r,a[1]))-Math.max(e,Math.min(r,a[0]))}return i}function ql(t,e,r){for(var i=[{fixed:-1,stretch:0}],n=0,o=t;n<o.length;n+=1){var a=o[n],s=a[0],l=a[1],u=i[i.length-1];i.push({fixed:s-u.stretch,stretch:u.stretch}),i.push({fixed:s-u.stretch,stretch:u.stretch+(l-s)})}return i.push({fixed:e+1,stretch:r}),i}function Zl(t,e,r,i){return t/e*r+i}function Gl(t,e,r,i){return t-e*r/i}var Xl=function(t,e,r,i,o,a,s,l,u,c){if(this.boxStartIndex=t.length,u){var p=a.top,h=a.bottom,f=a.collisionPadding;f&&(p-=f[1],h+=f[3]);var d=h-p;d>0&&(d=Math.max(10,d),this.circleDiameter=d)}else{var m=a.top*s-l,y=a.bottom*s+l,g=a.left*s-l,_=a.right*s+l,v=a.collisionPadding;if(v&&(g-=v[0]*s,m-=v[1]*s,_+=v[2]*s,y+=v[3]*s),c){var x=new n(g,m),b=new n(_,m),w=new n(g,y),S=new n(_,y),T=c*Math.PI/180;x._rotate(T),b._rotate(T),w._rotate(T),S._rotate(T),g=Math.min(x.x,b.x,w.x,S.x),_=Math.max(x.x,b.x,w.x,S.x),m=Math.min(x.y,b.y,w.y,S.y),y=Math.max(x.y,b.y,w.y,S.y)}t.emplaceBack(e.x,e.y,g,m,_,y,r,i,o)}this.boxEndIndex=t.length},Wl=function(t,e){if(void 0===t&&(t=[]),void 0===e&&(e=Kl),this.data=t,this.length=this.data.length,this.compare=e,this.length>0)for(var r=(this.length>>1)-1;r>=0;r--)this._down(r)};function Kl(t,e){return t<e?-1:t>e?1:0}function Hl(t,e,r){void 0===e&&(e=1),void 0===r&&(r=!1);for(var i=1/0,o=1/0,a=-1/0,s=-1/0,l=t[0],u=0;u<l.length;u++){var c=l[u];(!u||c.x<i)&&(i=c.x),(!u||c.y<o)&&(o=c.y),(!u||c.x>a)&&(a=c.x),(!u||c.y>s)&&(s=c.y)}var p=Math.min(a-i,s-o),h=p/2,f=new Wl([],Jl);if(0===p)return new n(i,o);for(var d=i;d<a;d+=p)for(var m=o;m<s;m+=p)f.push(new Yl(d+h,m+h,h,t));for(var y=function(t){for(var e=0,r=0,i=0,n=t[0],o=0,a=n.length,s=a-1;o<a;s=o++){var l=n[o],u=n[s],c=l.x*u.y-u.x*l.y;r+=(l.x+u.x)*c,i+=(l.y+u.y)*c,e+=3*c}return new Yl(r/e,i/e,0,t)}(t),g=f.length;f.length;){var _=f.pop();(_.d>y.d||!y.d)&&(y=_,r&&console.log("found best %d after %d probes",Math.round(1e4*_.d)/1e4,g)),_.max-y.d<=e||(f.push(new Yl(_.p.x-(h=_.h/2),_.p.y-h,h,t)),f.push(new Yl(_.p.x+h,_.p.y-h,h,t)),f.push(new Yl(_.p.x-h,_.p.y+h,h,t)),f.push(new Yl(_.p.x+h,_.p.y+h,h,t)),g+=4)}return r&&(console.log("num probes: "+g),console.log("best distance: "+y.d)),y.p}function Jl(t,e){return e.max-t.max}function Yl(t,e,r,i){this.p=new n(t,e),this.h=r,this.d=function(t,e){for(var r=!1,i=1/0,n=0;n<e.length;n++)for(var o=e[n],a=0,s=o.length,l=s-1;a<s;l=a++){var u=o[a],c=o[l];u.y>t.y!=c.y>t.y&&t.x<(c.x-u.x)*(t.y-u.y)/(c.y-u.y)+u.x&&(r=!r),i=Math.min(i,Xo(t,u,c))}return(r?1:-1)*Math.sqrt(i)}(this.p,i),this.max=this.d+this.h*Math.SQRT2}Wl.prototype.push=function(t){this.data.push(t),this.length++,this._up(this.length-1)},Wl.prototype.pop=function(){if(0!==this.length){var t=this.data[0],e=this.data.pop();return this.length--,this.length>0&&(this.data[0]=e,this._down(0)),t}},Wl.prototype.peek=function(){return this.data[0]},Wl.prototype._up=function(t){for(var e=this.data,r=this.compare,i=e[t];t>0;){var n=t-1>>1,o=e[n];if(r(i,o)>=0)break;e[t]=o,t=n}e[t]=i},Wl.prototype._down=function(t){for(var e=this.data,r=this.compare,i=this.length>>1,n=e[t];t<i;){var o=1+(t<<1),a=e[o],s=o+1;if(s<this.length&&r(e[s],a)<0&&(o=s,a=e[s]),r(a,n)>=0)break;e[t]=a,t=o}e[t]=n};var Ql=Number.POSITIVE_INFINITY;function $l(t,e){return e[1]!==Ql?function(t,e,r){var i=0,n=0;switch(e=Math.abs(e),r=Math.abs(r),t){case"top-right":case"top-left":case"top":n=r-7;break;case"bottom-right":case"bottom-left":case"bottom":n=7-r}switch(t){case"top-right":case"bottom-right":case"right":i=-e;break;case"top-left":case"bottom-left":case"left":i=e}return[i,n]}(t,e[0],e[1]):function(t,e){var r=0,i=0;e<0&&(e=0);var n=e/Math.sqrt(2);switch(t){case"top-right":case"top-left":i=n-7;break;case"bottom-right":case"bottom-left":i=7-n;break;case"bottom":i=7-e;break;case"top":i=e-7}switch(t){case"top-right":case"bottom-right":r=-n;break;case"top-left":case"bottom-left":r=n;break;case"left":r=e;break;case"right":r=-e}return[r,i]}(t,e[0])}function tu(t){switch(t){case"right":case"top-right":case"bottom-right":return"right";case"left":case"top-left":case"bottom-left":return"left"}return"center"}function eu(t,e,r,i,o,a,s,l,u,c,p,h,f,d,m){var y=function(t,e,r,i,o,a,s,l){for(var u=i.layout.get("text-rotate").evaluate(a,{})*Math.PI/180,c=[],p=0,h=e.positionedLines;p<h.length;p+=1)for(var f=h[p],d=0,m=f.positionedGlyphs;d<m.length;d+=1){var y=m[d];if(y.rect){var g=y.rect||{},_=4,v=!0,x=1,b=0,w=(o||l)&&y.vertical,S=y.metrics.advance*y.scale/2;if(l&&e.verticalizable&&(b=f.lineOffset/2-(y.imageName?-(24-y.metrics.width*y.scale)/2:24*(y.scale-1))),y.imageName){var T=s[y.imageName];v=T.sdf,_=1/(x=T.pixelRatio)}var I=o?[y.x+S,y.y]:[0,0],E=o?[0,0]:[y.x+S+r[0],y.y+r[1]-b],A=[0,0];w&&(A=E,E=[0,0]);var z=(y.metrics.left-_)*y.scale-S+E[0],P=(-y.metrics.top-_)*y.scale+E[1],C=z+g.w*y.scale/x,k=P+g.h*y.scale/x,M=new n(z,P),D=new n(C,P),L=new n(z,k),B=new n(C,k);if(w){var R=new n(-S,S- -17),F=-Math.PI/2,O=12-S,U=new n(22-O,-(y.imageName?O:0)),V=new(Function.prototype.bind.apply(n,[null].concat(A)));M._rotateAround(F,R)._add(U)._add(V),D._rotateAround(F,R)._add(U)._add(V),L._rotateAround(F,R)._add(U)._add(V),B._rotateAround(F,R)._add(U)._add(V)}if(u){var N=Math.sin(u),j=Math.cos(u),q=[j,-N,N,j];M._matMult(q),D._matMult(q),L._matMult(q),B._matMult(q)}var Z=new n(0,0),G=new n(0,0);c.push({tl:M,tr:D,bl:L,br:B,tex:g,writingMode:e.writingMode,glyphOffset:I,sectionIndex:y.sectionIndex,isSDF:v,pixelOffsetTL:Z,pixelOffsetBR:G,minFontScaleX:0,minFontScaleY:0})}}return c}(0,r,l,o,a,s,i,t.allowVerticalPlacement),g=t.textSizeData,_=null;"source"===g.kind?(_=[128*o.layout.get("text-size").evaluate(s,{})])[0]>32640&&b(t.layerIds[0]+': Value for "text-size" is >= 255. Reduce your "text-size".'):"composite"===g.kind&&((_=[128*d.compositeTextSizes[0].evaluate(s,{},m),128*d.compositeTextSizes[1].evaluate(s,{},m)])[0]>32640||_[1]>32640)&&b(t.layerIds[0]+': Value for "text-size" is >= 255. Reduce your "text-size".'),t.addSymbols(t.text,y,_,l,a,s,c,e,u.lineStartIndex,u.lineLength,f,m);for(var v=0,x=p;v<x.length;v+=1)h[x[v]]=t.text.placedSymbolArray.length-1;return 4*y.length}function ru(t){for(var e in t)return t[e];return null}function iu(t,e,r,i){var n=t.compareText;if(e in n){for(var o=n[e],a=o.length-1;a>=0;a--)if(i.dist(o[a])<r)return!0}else n[e]=[];return n[e].push(i),!1}var nu=ms.VectorTileFeature.types,ou=[{name:"a_fade_opacity",components:1,type:"Uint8",offset:0}];function au(t,e,r,i,n,o,a,s,l,u,c,p,h){var f=s?Math.min(32640,Math.round(s[0])):0,d=s?Math.min(32640,Math.round(s[1])):0;t.emplaceBack(e,r,Math.round(32*i),Math.round(32*n),o,a,(f<<1)+(l?1:0),d,16*u,16*c,256*p,256*h)}function su(t,e,r){t.emplaceBack(e.x,e.y,r),t.emplaceBack(e.x,e.y,r),t.emplaceBack(e.x,e.y,r),t.emplaceBack(e.x,e.y,r)}function lu(t){for(var e=0,r=t.sections;e<r.length;e+=1)if(Wi(r[e].text))return!0;return!1}var uu=function(t){this.layoutVertexArray=new Cn,this.indexArray=new Fn,this.programConfigurations=t,this.segments=new no,this.dynamicLayoutVertexArray=new kn,this.opacityVertexArray=new Mn,this.placedSymbolArray=new Jn};uu.prototype.isEmpty=function(){return 0===this.layoutVertexArray.length&&0===this.indexArray.length&&0===this.dynamicLayoutVertexArray.length&&0===this.opacityVertexArray.length},uu.prototype.upload=function(t,e,r,i){this.isEmpty()||(r&&(this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,Bs.members),this.indexBuffer=t.createIndexBuffer(this.indexArray,e),this.dynamicLayoutVertexBuffer=t.createVertexBuffer(this.dynamicLayoutVertexArray,Rs.members,!0),this.opacityVertexBuffer=t.createVertexBuffer(this.opacityVertexArray,ou,!0),this.opacityVertexBuffer.itemSize=1),(r||i)&&this.programConfigurations.upload(t))},uu.prototype.destroy=function(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.dynamicLayoutVertexBuffer.destroy(),this.opacityVertexBuffer.destroy())},Li("SymbolBuffers",uu);var cu=function(t,e,r){this.layoutVertexArray=new t,this.layoutAttributes=e,this.indexArray=new r,this.segments=new no,this.collisionVertexArray=new Rn};cu.prototype.upload=function(t){this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,this.layoutAttributes),this.indexBuffer=t.createIndexBuffer(this.indexArray),this.collisionVertexBuffer=t.createVertexBuffer(this.collisionVertexArray,Fs.members,!0)},cu.prototype.destroy=function(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.segments.destroy(),this.collisionVertexBuffer.destroy())},Li("CollisionBuffers",cu);var pu=function(t){this.collisionBoxArray=t.collisionBoxArray,this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map(function(t){return t.id}),this.index=t.index,this.pixelRatio=t.pixelRatio,this.sourceLayerIndex=t.sourceLayerIndex,this.hasPattern=!1,this.hasRTLText=!1,this.sortKeyRanges=[],this.collisionCircleArray=[],this.placementInvProjMatrix=ra([]),this.placementViewportMatrix=ra([]);var e=this.layers[0]._unevaluatedLayout._values;this.textSizeData=Cl(this.zoom,e["text-size"]),this.iconSizeData=Cl(this.zoom,e["icon-size"]);var r=this.layers[0].layout,i=r.get("symbol-sort-key"),n=r.get("symbol-z-order");this.sortFeaturesByKey="viewport-y"!==n&&void 0!==i.constantOr(1),this.sortFeaturesByY=("viewport-y"===n||"auto"===n&&!this.sortFeaturesByKey)&&(r.get("text-allow-overlap")||r.get("icon-allow-overlap")||r.get("text-ignore-placement")||r.get("icon-ignore-placement")),"point"===r.get("symbol-placement")&&(this.writingModes=r.get("text-writing-mode").map(function(t){return ml[t]})),this.stateDependentLayerIds=this.layers.filter(function(t){return t.isStateDependent()}).map(function(t){return t.id}),this.sourceID=t.sourceID};pu.prototype.createArrays=function(){this.text=new uu(new Mo(Bs.members,this.layers,this.zoom,function(t){return/^text/.test(t)})),this.icon=new uu(new Mo(Bs.members,this.layers,this.zoom,function(t){return/^icon/.test(t)})),this.glyphOffsetArray=new $n,this.lineVertexArray=new to,this.symbolInstances=new Qn},pu.prototype.calculateGlyphDependencies=function(t,e,r,i,n){for(var o=0;o<t.length;o++)if(e[t.charCodeAt(o)]=!0,(r||i)&&n){var a=Ns[t.charAt(o)];a&&(e[a.charCodeAt(0)]=!0)}},pu.prototype.populate=function(t,e,r){var i=this.layers[0],n=i.layout,o=n.get("text-font"),a=n.get("text-field"),s=n.get("icon-image"),l=("constant"!==a.value.kind||a.value.value instanceof te&&!a.value.value.isEmpty()||a.value.value.toString().length>0)&&("constant"!==o.value.kind||o.value.value.length>0),u="constant"!==s.value.kind||!!s.value.value||Object.keys(s.parameters).length>0,c=n.get("symbol-sort-key");if(this.features=[],l||u){for(var p=e.iconDependencies,h=e.glyphDependencies,f=e.availableImages,d=new nn(this.zoom),m=0,y=t;m<y.length;m+=1){var g=y[m],_=g.feature,v=g.id,x=g.index,b=g.sourceLayerIndex,w=i._featureFilter.needGeometry,S={type:_.type,id:v,properties:_.properties,geometry:w?Ro(_):[]};if(i._featureFilter.filter(d,S,r)){w||(S.geometry=Ro(_));var T=void 0;if(l){var I=i.getValueAndResolveTokens("text-field",S,r,f),E=te.factory(I);lu(E)&&(this.hasRTLText=!0),(!this.hasRTLText||"unavailable"===tn()||this.hasRTLText&&rn.isParsed())&&(T=Vs(E,i,S))}var A=void 0;if(u){var z=i.getValueAndResolveTokens("icon-image",S,r,f);A=z instanceof ee?z:ee.fromString(z)}if(T||A){var P=this.sortFeaturesByKey?c.evaluate(S,{},r):void 0,C={id:v,text:T,icon:A,index:x,sourceLayerIndex:b,geometry:Ro(_),properties:_.properties,type:nu[_.type],sortKey:P};if(this.features.push(C),A&&(p[A.name]=!0),T){var k=o.evaluate(S,{},r).join(","),M="map"===n.get("text-rotation-alignment")&&"point"!==n.get("symbol-placement");this.allowVerticalPlacement=this.writingModes&&this.writingModes.indexOf(ml.vertical)>=0;for(var D=0,L=T.sections;D<L.length;D+=1){var B=L[D];if(B.image)p[B.image.name]=!0;else{var R=ji(T.toString()),F=B.fontStack||k,O=h[F]=h[F]||{};this.calculateGlyphDependencies(B.text,O,M,this.allowVerticalPlacement,R)}}}}}}"line"===n.get("symbol-placement")&&(this.features=function(t){var e={},r={},i=[],n=0;function o(e){i.push(t[e]),n++}function a(t,e,n){var o=r[t];return delete r[t],r[e]=o,i[o].geometry[0].pop(),i[o].geometry[0]=i[o].geometry[0].concat(n[0]),o}function s(t,r,n){var o=e[r];return delete e[r],e[t]=o,i[o].geometry[0].shift(),i[o].geometry[0]=n[0].concat(i[o].geometry[0]),o}function l(t,e,r){var i=r?e[0][e[0].length-1]:e[0][0];return t+":"+i.x+":"+i.y}for(var u=0;u<t.length;u++){var c=t[u],p=c.geometry,h=c.text?c.text.toString():null;if(h){var f=l(h,p),d=l(h,p,!0);if(f in r&&d in e&&r[f]!==e[d]){var m=s(f,d,p),y=a(f,d,i[m].geometry);delete e[f],delete r[d],r[l(h,i[y].geometry,!0)]=y,i[m].geometry=null}else f in r?a(f,d,p):d in e?s(f,d,p):(o(u),e[f]=n-1,r[d]=n-1)}else o(u)}return i.filter(function(t){return t.geometry})}(this.features)),this.sortFeaturesByKey&&this.features.sort(function(t,e){return t.sortKey-e.sortKey})}},pu.prototype.update=function(t,e,r){this.stateDependentLayers.length&&(this.text.programConfigurations.updatePaintArrays(t,e,this.layers,r),this.icon.programConfigurations.updatePaintArrays(t,e,this.layers,r))},pu.prototype.isEmpty=function(){return 0===this.symbolInstances.length&&!this.hasRTLText},pu.prototype.uploadPending=function(){return!this.uploaded||this.text.programConfigurations.needsUpload||this.icon.programConfigurations.needsUpload},pu.prototype.upload=function(t){!this.uploaded&&this.hasDebugData()&&(this.textCollisionBox.upload(t),this.iconCollisionBox.upload(t)),this.text.upload(t,this.sortFeaturesByY,!this.uploaded,this.text.programConfigurations.needsUpload),this.icon.upload(t,this.sortFeaturesByY,!this.uploaded,this.icon.programConfigurations.needsUpload),this.uploaded=!0},pu.prototype.destroyDebugData=function(){this.textCollisionBox.destroy(),this.iconCollisionBox.destroy()},pu.prototype.destroy=function(){this.text.destroy(),this.icon.destroy(),this.hasDebugData()&&this.destroyDebugData()},pu.prototype.addToLineVertexArray=function(t,e){var r=this.lineVertexArray.length;if(void 0!==t.segment){for(var i=t.dist(e[t.segment+1]),n=t.dist(e[t.segment]),o={},a=t.segment+1;a<e.length;a++)o[a]={x:e[a].x,y:e[a].y,tileUnitDistanceFromAnchor:i},a<e.length-1&&(i+=e[a+1].dist(e[a]));for(var s=t.segment||0;s>=0;s--)o[s]={x:e[s].x,y:e[s].y,tileUnitDistanceFromAnchor:n},s>0&&(n+=e[s-1].dist(e[s]));for(var l=0;l<e.length;l++){var u=o[l];this.lineVertexArray.emplaceBack(u.x,u.y,u.tileUnitDistanceFromAnchor)}}return{lineStartIndex:r,lineLength:this.lineVertexArray.length-r}},pu.prototype.addSymbols=function(t,e,r,i,n,o,a,s,l,u,c,p){for(var h=t.indexArray,f=t.layoutVertexArray,d=t.segments.prepareSegment(4*e.length,f,h,o.sortKey),m=this.glyphOffsetArray.length,y=d.vertexLength,g=this.allowVerticalPlacement&&a===ml.vertical?Math.PI/2:0,_=o.text&&o.text.sections,v=0;v<e.length;v++){var x=e[v],b=x.tl,w=x.tr,S=x.bl,T=x.br,I=x.tex,E=x.pixelOffsetTL,A=x.pixelOffsetBR,z=x.minFontScaleX,P=x.minFontScaleY,C=x.glyphOffset,k=x.isSDF,M=x.sectionIndex,D=d.vertexLength,L=C[1];au(f,s.x,s.y,b.x,L+b.y,I.x,I.y,r,k,E.x,E.y,z,P),au(f,s.x,s.y,w.x,L+w.y,I.x+I.w,I.y,r,k,A.x,E.y,z,P),au(f,s.x,s.y,S.x,L+S.y,I.x,I.y+I.h,r,k,E.x,A.y,z,P),au(f,s.x,s.y,T.x,L+T.y,I.x+I.w,I.y+I.h,r,k,A.x,A.y,z,P),su(t.dynamicLayoutVertexArray,s,g),h.emplaceBack(D,D+1,D+2),h.emplaceBack(D+1,D+2,D+3),d.vertexLength+=4,d.primitiveLength+=2,this.glyphOffsetArray.emplaceBack(C[0]),v!==e.length-1&&M===e[v+1].sectionIndex||t.programConfigurations.populatePaintArrays(f.length,o,o.index,{},p,_&&_[M])}t.placedSymbolArray.emplaceBack(s.x,s.y,m,this.glyphOffsetArray.length-m,y,l,u,s.segment,r?r[0]:0,r?r[1]:0,i[0],i[1],a,0,!1,0,c)},pu.prototype._addCollisionDebugVertex=function(t,e,r,i,n,o){return e.emplaceBack(0,0),t.emplaceBack(r.x,r.y,i,n,Math.round(o.x),Math.round(o.y))},pu.prototype.addCollisionDebugVertices=function(t,e,r,i,o,a,s){var l=o.segments.prepareSegment(4,o.layoutVertexArray,o.indexArray),u=l.vertexLength,c=o.layoutVertexArray,p=o.collisionVertexArray,h=s.anchorX,f=s.anchorY;this._addCollisionDebugVertex(c,p,a,h,f,new n(t,e)),this._addCollisionDebugVertex(c,p,a,h,f,new n(r,e)),this._addCollisionDebugVertex(c,p,a,h,f,new n(r,i)),this._addCollisionDebugVertex(c,p,a,h,f,new n(t,i)),l.vertexLength+=4;var d=o.indexArray;d.emplaceBack(u,u+1),d.emplaceBack(u+1,u+2),d.emplaceBack(u+2,u+3),d.emplaceBack(u+3,u),l.primitiveLength+=4},pu.prototype.addDebugCollisionBoxes=function(t,e,r,i){for(var n=t;n<e;n++){var o=this.collisionBoxArray.get(n);this.addCollisionDebugVertices(o.x1,o.y1,o.x2,o.y2,i?this.textCollisionBox:this.iconCollisionBox,o.anchorPoint,r)}},pu.prototype.generateCollisionDebugBuffers=function(){this.hasDebugData()&&this.destroyDebugData(),this.textCollisionBox=new cu(Ln,Os.members,qn),this.iconCollisionBox=new cu(Ln,Os.members,qn);for(var t=0;t<this.symbolInstances.length;t++){var e=this.symbolInstances.get(t);this.addDebugCollisionBoxes(e.textBoxStartIndex,e.textBoxEndIndex,e,!0),this.addDebugCollisionBoxes(e.verticalTextBoxStartIndex,e.verticalTextBoxEndIndex,e,!0),this.addDebugCollisionBoxes(e.iconBoxStartIndex,e.iconBoxEndIndex,e,!1),this.addDebugCollisionBoxes(e.verticalIconBoxStartIndex,e.verticalIconBoxEndIndex,e,!1)}},pu.prototype._deserializeCollisionBoxesForSymbol=function(t,e,r,i,n,o,a,s,l){for(var u={},c=e;c<r;c++){var p=t.get(c);u.textBox={x1:p.x1,y1:p.y1,x2:p.x2,y2:p.y2,anchorPointX:p.anchorPointX,anchorPointY:p.anchorPointY},u.textFeatureIndex=p.featureIndex;break}for(var h=i;h<n;h++){var f=t.get(h);u.verticalTextBox={x1:f.x1,y1:f.y1,x2:f.x2,y2:f.y2,anchorPointX:f.anchorPointX,anchorPointY:f.anchorPointY},u.verticalTextFeatureIndex=f.featureIndex;break}for(var d=o;d<a;d++){var m=t.get(d);u.iconBox={x1:m.x1,y1:m.y1,x2:m.x2,y2:m.y2,anchorPointX:m.anchorPointX,anchorPointY:m.anchorPointY},u.iconFeatureIndex=m.featureIndex;break}for(var y=s;y<l;y++){var g=t.get(y);u.verticalIconBox={x1:g.x1,y1:g.y1,x2:g.x2,y2:g.y2,anchorPointX:g.anchorPointX,anchorPointY:g.anchorPointY},u.verticalIconFeatureIndex=g.featureIndex;break}return u},pu.prototype.deserializeCollisionBoxes=function(t){this.collisionArrays=[];for(var e=0;e<this.symbolInstances.length;e++){var r=this.symbolInstances.get(e);this.collisionArrays.push(this._deserializeCollisionBoxesForSymbol(t,r.textBoxStartIndex,r.textBoxEndIndex,r.verticalTextBoxStartIndex,r.verticalTextBoxEndIndex,r.iconBoxStartIndex,r.iconBoxEndIndex,r.verticalIconBoxStartIndex,r.verticalIconBoxEndIndex))}},pu.prototype.hasTextData=function(){return this.text.segments.get().length>0},pu.prototype.hasIconData=function(){return this.icon.segments.get().length>0},pu.prototype.hasDebugData=function(){return this.textCollisionBox&&this.iconCollisionBox},pu.prototype.hasTextCollisionBoxData=function(){return this.hasDebugData()&&this.textCollisionBox.segments.get().length>0},pu.prototype.hasIconCollisionBoxData=function(){return this.hasDebugData()&&this.iconCollisionBox.segments.get().length>0},pu.prototype.addIndicesForPlacedSymbol=function(t,e){for(var r=t.placedSymbolArray.get(e),i=r.vertexStartIndex+4*r.numGlyphs,n=r.vertexStartIndex;n<i;n+=4)t.indexArray.emplaceBack(n,n+1,n+2),t.indexArray.emplaceBack(n+1,n+2,n+3)},pu.prototype.getSortedSymbolIndexes=function(t){if(this.sortedAngle===t&&void 0!==this.symbolInstanceIndexes)return this.symbolInstanceIndexes;for(var e=Math.sin(t),r=Math.cos(t),i=[],n=[],o=[],a=0;a<this.symbolInstances.length;++a){o.push(a);var s=this.symbolInstances.get(a);i.push(0|Math.round(e*s.anchorX+r*s.anchorY)),n.push(s.featureIndex)}return o.sort(function(t,e){return i[t]-i[e]||n[e]-n[t]}),o},pu.prototype.addToSortKeyRanges=function(t,e){var r=this.sortKeyRanges[this.sortKeyRanges.length-1];r&&r.sortKey===e?r.symbolInstanceEnd=t+1:this.sortKeyRanges.push({sortKey:e,symbolInstanceStart:t,symbolInstanceEnd:t+1})},pu.prototype.sortFeatures=function(t){var e=this;if(this.sortFeaturesByY&&this.sortedAngle!==t&&!(this.text.segments.get().length>1||this.icon.segments.get().length>1)){this.symbolInstanceIndexes=this.getSortedSymbolIndexes(t),this.sortedAngle=t,this.text.indexArray.clear(),this.icon.indexArray.clear(),this.featureSortOrder=[];for(var r=0,i=this.symbolInstanceIndexes;r<i.length;r+=1){var n=this.symbolInstances.get(i[r]);this.featureSortOrder.push(n.featureIndex),[n.rightJustifiedTextSymbolIndex,n.centerJustifiedTextSymbolIndex,n.leftJustifiedTextSymbolIndex].forEach(function(t,r,i){t>=0&&i.indexOf(t)===r&&e.addIndicesForPlacedSymbol(e.text,t)}),n.verticalPlacedTextSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.text,n.verticalPlacedTextSymbolIndex),n.placedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,n.placedIconSymbolIndex),n.verticalPlacedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,n.verticalPlacedIconSymbolIndex)}this.text.indexBuffer&&this.text.indexBuffer.updateData(this.text.indexArray),this.icon.indexBuffer&&this.icon.indexBuffer.updateData(this.icon.indexArray)}},Li("SymbolBucket",pu,{omit:["layers","collisionBoxArray","features","compareText"]}),pu.MAX_GLYPHS=65535,pu.addDynamicAttributes=su;var hu=new _n({"symbol-placement":new fn(Et.layout_symbol["symbol-placement"]),"symbol-spacing":new fn(Et.layout_symbol["symbol-spacing"]),"symbol-avoid-edges":new fn(Et.layout_symbol["symbol-avoid-edges"]),"symbol-sort-key":new dn(Et.layout_symbol["symbol-sort-key"]),"symbol-z-order":new fn(Et.layout_symbol["symbol-z-order"]),"icon-allow-overlap":new fn(Et.layout_symbol["icon-allow-overlap"]),"icon-ignore-placement":new fn(Et.layout_symbol["icon-ignore-placement"]),"icon-optional":new fn(Et.layout_symbol["icon-optional"]),"icon-rotation-alignment":new fn(Et.layout_symbol["icon-rotation-alignment"]),"icon-size":new dn(Et.layout_symbol["icon-size"]),"icon-text-fit":new fn(Et.layout_symbol["icon-text-fit"]),"icon-text-fit-padding":new fn(Et.layout_symbol["icon-text-fit-padding"]),"icon-image":new dn(Et.layout_symbol["icon-image"]),"icon-rotate":new dn(Et.layout_symbol["icon-rotate"]),"icon-padding":new fn(Et.layout_symbol["icon-padding"]),"icon-keep-upright":new fn(Et.layout_symbol["icon-keep-upright"]),"icon-offset":new dn(Et.layout_symbol["icon-offset"]),"icon-anchor":new dn(Et.layout_symbol["icon-anchor"]),"icon-pitch-alignment":new fn(Et.layout_symbol["icon-pitch-alignment"]),"text-pitch-alignment":new fn(Et.layout_symbol["text-pitch-alignment"]),"text-rotation-alignment":new fn(Et.layout_symbol["text-rotation-alignment"]),"text-field":new dn(Et.layout_symbol["text-field"]),"text-font":new dn(Et.layout_symbol["text-font"]),"text-size":new dn(Et.layout_symbol["text-size"]),"text-max-width":new dn(Et.layout_symbol["text-max-width"]),"text-line-height":new fn(Et.layout_symbol["text-line-height"]),"text-letter-spacing":new dn(Et.layout_symbol["text-letter-spacing"]),"text-justify":new dn(Et.layout_symbol["text-justify"]),"text-radial-offset":new dn(Et.layout_symbol["text-radial-offset"]),"text-variable-anchor":new fn(Et.layout_symbol["text-variable-anchor"]),"text-anchor":new dn(Et.layout_symbol["text-anchor"]),"text-max-angle":new fn(Et.layout_symbol["text-max-angle"]),"text-writing-mode":new fn(Et.layout_symbol["text-writing-mode"]),"text-rotate":new dn(Et.layout_symbol["text-rotate"]),"text-padding":new fn(Et.layout_symbol["text-padding"]),"text-keep-upright":new fn(Et.layout_symbol["text-keep-upright"]),"text-transform":new dn(Et.layout_symbol["text-transform"]),"text-offset":new dn(Et.layout_symbol["text-offset"]),"text-allow-overlap":new fn(Et.layout_symbol["text-allow-overlap"]),"text-ignore-placement":new fn(Et.layout_symbol["text-ignore-placement"]),"text-optional":new fn(Et.layout_symbol["text-optional"])}),fu={paint:new _n({"icon-opacity":new dn(Et.paint_symbol["icon-opacity"]),"icon-color":new dn(Et.paint_symbol["icon-color"]),"icon-halo-color":new dn(Et.paint_symbol["icon-halo-color"]),"icon-halo-width":new dn(Et.paint_symbol["icon-halo-width"]),"icon-halo-blur":new dn(Et.paint_symbol["icon-halo-blur"]),"icon-translate":new fn(Et.paint_symbol["icon-translate"]),"icon-translate-anchor":new fn(Et.paint_symbol["icon-translate-anchor"]),"text-opacity":new dn(Et.paint_symbol["text-opacity"]),"text-color":new dn(Et.paint_symbol["text-color"],{runtimeType:Ot,getOverride:function(t){return t.textColor},hasOverride:function(t){return!!t.textColor}}),"text-halo-color":new dn(Et.paint_symbol["text-halo-color"]),"text-halo-width":new dn(Et.paint_symbol["text-halo-width"]),"text-halo-blur":new dn(Et.paint_symbol["text-halo-blur"]),"text-translate":new fn(Et.paint_symbol["text-translate"]),"text-translate-anchor":new fn(Et.paint_symbol["text-translate-anchor"])}),layout:hu},du=function(t){this.type=t.property.overrides?t.property.overrides.runtimeType:Lt,this.defaultValue=t};du.prototype.evaluate=function(t){if(t.formattedSection){var e=this.defaultValue.property.overrides;if(e&&e.hasOverride(t.formattedSection))return e.getOverride(t.formattedSection)}return t.feature&&t.featureState?this.defaultValue.evaluate(t.feature,t.featureState):this.defaultValue.property.specification.default},du.prototype.eachChild=function(t){this.defaultValue.isConstant()||t(this.defaultValue.value._styleExpression.expression)},du.prototype.outputDefined=function(){return!1},du.prototype.serialize=function(){return null},Li("FormatSectionOverride",du,{omit:["defaultValue"]});var mu=function(t){function e(e){t.call(this,e,fu)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.recalculate=function(e,r){if(t.prototype.recalculate.call(this,e,r),"auto"===this.layout.get("icon-rotation-alignment")&&(this.layout._values["icon-rotation-alignment"]="point"!==this.layout.get("symbol-placement")?"map":"viewport"),"auto"===this.layout.get("text-rotation-alignment")&&(this.layout._values["text-rotation-alignment"]="point"!==this.layout.get("symbol-placement")?"map":"viewport"),"auto"===this.layout.get("text-pitch-alignment")&&(this.layout._values["text-pitch-alignment"]=this.layout.get("text-rotation-alignment")),"auto"===this.layout.get("icon-pitch-alignment")&&(this.layout._values["icon-pitch-alignment"]=this.layout.get("icon-rotation-alignment")),"point"===this.layout.get("symbol-placement")){var i=this.layout.get("text-writing-mode");if(i){for(var n=[],o=0,a=i;o<a.length;o+=1){var s=a[o];n.indexOf(s)<0&&n.push(s)}this.layout._values["text-writing-mode"]=n}else this.layout._values["text-writing-mode"]=["horizontal"]}this._setPaintOverrides()},e.prototype.getValueAndResolveTokens=function(t,e,r,i){var n=this.layout.get(t).evaluate(e,{},r,i),o=this._unevaluatedLayout._values[t];return o.isDataDriven()||jr(o.value)||!n?n:function(t,e){return n.replace(/{([^{}]+)}/g,function(e,r){return r in t?String(t[r]):""})}(e.properties)},e.prototype.createBucket=function(t){return new pu(t)},e.prototype.queryRadius=function(){return 0},e.prototype.queryIntersectsFeature=function(){return!1},e.prototype._setPaintOverrides=function(){for(var t=0,r=fu.paint.overridableProperties;t<r.length;t+=1){var i=r[t];if(e.hasPaintOverride(this.layout,i)){var n,o=this.paint.get(i),a=new du(o),s=new Nr(a,o.property.specification);n="constant"===o.value.kind||"source"===o.value.kind?new Zr("source",s):new Gr("composite",s,o.value.zoomStops,o.value._interpolationType),this.paint._values[i]=new pn(o.property,n,o.parameters)}}},e.prototype._handleOverridablePaintPropertyUpdate=function(t,r,i){return!(!this.layout||r.isDataDriven()||i.isDataDriven())&&e.hasPaintOverride(this.layout,t)},e.hasPaintOverride=function(t,e){var r=t.get("text-field"),i=fu.paint.properties[e],n=!1,o=function(t){for(var e=0,r=t;e<r.length;e+=1)if(i.overrides&&i.overrides.hasOverride(r[e]))return void(n=!0)};if("constant"===r.value.kind&&r.value.value instanceof te)o(r.value.value.sections);else if("source"===r.value.kind){var a=function(t){n||(t instanceof ae&&ne(t.value)===jt?o(t.value.sections):t instanceof ce?o(t.sections):t.eachChild(a))},s=r.value;s._styleExpression&&a(s._styleExpression.expression)}return n},e}(vn),yu={paint:new _n({"background-color":new fn(Et.paint_background["background-color"]),"background-pattern":new yn(Et.paint_background["background-pattern"]),"background-opacity":new fn(Et.paint_background["background-opacity"])})},gu=function(t){function e(e){t.call(this,e,yu)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e}(vn),_u={paint:new _n({"raster-opacity":new fn(Et.paint_raster["raster-opacity"]),"raster-hue-rotate":new fn(Et.paint_raster["raster-hue-rotate"]),"raster-brightness-min":new fn(Et.paint_raster["raster-brightness-min"]),"raster-brightness-max":new fn(Et.paint_raster["raster-brightness-max"]),"raster-saturation":new fn(Et.paint_raster["raster-saturation"]),"raster-contrast":new fn(Et.paint_raster["raster-contrast"]),"raster-resampling":new fn(Et.paint_raster["raster-resampling"]),"raster-fade-duration":new fn(Et.paint_raster["raster-fade-duration"])})},vu=function(t){function e(e){t.call(this,e,_u)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e}(vn),xu=function(t){function e(e){t.call(this,e,{}),this.implementation=e}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.is3D=function(){return"3d"===this.implementation.renderingMode},e.prototype.hasOffscreenPass=function(){return void 0!==this.implementation.prerender},e.prototype.recalculate=function(){},e.prototype.updateTransitions=function(){},e.prototype.hasTransition=function(){},e.prototype.serialize=function(){},e.prototype.onAdd=function(t){this.implementation.onAdd&&this.implementation.onAdd(t,t.painter.context.gl)},e.prototype.onRemove=function(t){this.implementation.onRemove&&this.implementation.onRemove(t,t.painter.context.gl)},e}(vn),bu={circle:sa,heatmap:ga,hillshade:va,fill:os,"fill-extrusion":ws,line:Ds,symbol:mu,background:gu,raster:vu},wu=self.HTMLImageElement,Su=self.HTMLCanvasElement,Tu=self.HTMLVideoElement,Iu=self.ImageData,Eu=self.ImageBitmap,Au=function(t,e,r,i){this.context=t,this.format=r,this.texture=t.gl.createTexture(),this.update(e,i)};Au.prototype.update=function(t,e,r){var i=t.width,n=t.height,o=!(this.size&&this.size[0]===i&&this.size[1]===n||r),a=this.context,s=a.gl;if(this.useMipmap=Boolean(e&&e.useMipmap),s.bindTexture(s.TEXTURE_2D,this.texture),a.pixelStoreUnpackFlipY.set(!1),a.pixelStoreUnpack.set(1),a.pixelStoreUnpackPremultiplyAlpha.set(this.format===s.RGBA&&(!e||!1!==e.premultiply)),o)this.size=[i,n],t instanceof wu||t instanceof Su||t instanceof Tu||t instanceof Iu||Eu&&t instanceof Eu?s.texImage2D(s.TEXTURE_2D,0,this.format,this.format,s.UNSIGNED_BYTE,t):s.texImage2D(s.TEXTURE_2D,0,this.format,i,n,0,this.format,s.UNSIGNED_BYTE,t.data);else{var l=r||{x:0,y:0},u=l.x,c=l.y;t instanceof wu||t instanceof Su||t instanceof Tu||t instanceof Iu||Eu&&t instanceof Eu?s.texSubImage2D(s.TEXTURE_2D,0,u,c,s.RGBA,s.UNSIGNED_BYTE,t):s.texSubImage2D(s.TEXTURE_2D,0,u,c,i,n,s.RGBA,s.UNSIGNED_BYTE,t.data)}this.useMipmap&&this.isSizePowerOfTwo()&&s.generateMipmap(s.TEXTURE_2D)},Au.prototype.bind=function(t,e,r){var i=this.context.gl;i.bindTexture(i.TEXTURE_2D,this.texture),r!==i.LINEAR_MIPMAP_NEAREST||this.isSizePowerOfTwo()||(r=i.LINEAR),t!==this.filter&&(i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MAG_FILTER,t),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MIN_FILTER,r||t),this.filter=t),e!==this.wrap&&(i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_S,e),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_T,e),this.wrap=e)},Au.prototype.isSizePowerOfTwo=function(){return this.size[0]===this.size[1]&&Math.log(this.size[0])/Math.LN2%1==0},Au.prototype.destroy=function(){this.context.gl.deleteTexture(this.texture),this.texture=null};var zu=function(t){var e=this;this._callback=t,this._triggered=!1,"undefined"!=typeof MessageChannel&&(this._channel=new MessageChannel,this._channel.port2.onmessage=function(){e._triggered=!1,e._callback()})};zu.prototype.trigger=function(){var t=this;this._triggered||(this._triggered=!0,this._channel?this._channel.port1.postMessage(!0):setTimeout(function(){t._triggered=!1,t._callback()},0))},zu.prototype.remove=function(){delete this._channel,this._callback=function(){}};var Pu=function(t,e,r){this.target=t,this.parent=e,this.mapId=r,this.callbacks={},this.tasks={},this.taskQueue=[],this.cancelCallbacks={},m(["receive","process"],this),this.invoker=new zu(this.process),this.target.addEventListener("message",this.receive,!1),this.globalScope=T()?t:self};function Cu(t,e,r){var i=2*Math.PI*6378137/256/Math.pow(2,r);return[t*i-2*Math.PI*6378137/2,e*i-2*Math.PI*6378137/2]}Pu.prototype.send=function(t,e,r,i,n){var o=this;void 0===n&&(n=!1);var a=Math.round(1e18*Math.random()).toString(36).substring(0,10);r&&(this.callbacks[a]=r);var s=A(this.globalScope)?void 0:[];return this.target.postMessage({id:a,type:t,hasCallback:!!r,targetMapId:i,mustQueue:n,sourceMapId:this.mapId,data:Oi(e,s)},s),{cancel:function(){r&&delete o.callbacks[a],o.target.postMessage({id:a,type:"<cancel>",targetMapId:i,sourceMapId:o.mapId})}}},Pu.prototype.receive=function(t){var e=t.data,r=e.id;if(r&&(!e.targetMapId||this.mapId===e.targetMapId))if("<cancel>"===e.type){delete this.tasks[r];var i=this.cancelCallbacks[r];delete this.cancelCallbacks[r],i&&i()}else T()||e.mustQueue?(this.tasks[r]=e,this.taskQueue.push(r),this.invoker.trigger()):this.processTask(r,e)},Pu.prototype.process=function(){if(this.taskQueue.length){var t=this.taskQueue.shift(),e=this.tasks[t];delete this.tasks[t],this.taskQueue.length&&this.invoker.trigger(),e&&this.processTask(t,e)}},Pu.prototype.processTask=function(t,e){var r=this;if("<response>"===e.type){var i=this.callbacks[t];delete this.callbacks[t],i&&(e.error?i(Ui(e.error)):i(null,Ui(e.data)))}else{var n=!1,o=A(this.globalScope)?void 0:[],a=e.hasCallback?function(e,i){n=!0,delete r.cancelCallbacks[t],r.target.postMessage({id:t,type:"<response>",sourceMapId:r.mapId,error:e?Oi(e):null,data:Oi(i,o)},o)}:function(t){n=!0},s=null,l=Ui(e.data);if(this.parent[e.type])s=this.parent[e.type](e.sourceMapId,l,a);else if(this.parent.getWorkerSource){var u=e.type.split(".");s=this.parent.getWorkerSource(e.sourceMapId,u[0],l.source)[u[1]](l,a)}else a(new Error("Could not find function "+e.type));!n&&s&&s.cancel&&(this.cancelCallbacks[t]=s.cancel)}},Pu.prototype.remove=function(){this.invoker.remove(),this.target.removeEventListener("message",this.receive,!1)};var ku=function(t,e){t&&(e?this.setSouthWest(t).setNorthEast(e):4===t.length?this.setSouthWest([t[0],t[1]]).setNorthEast([t[2],t[3]]):this.setSouthWest(t[0]).setNorthEast(t[1]))};ku.prototype.setNorthEast=function(t){return this._ne=t instanceof Mu?new Mu(t.lng,t.lat):Mu.convert(t),this},ku.prototype.setSouthWest=function(t){return this._sw=t instanceof Mu?new Mu(t.lng,t.lat):Mu.convert(t),this},ku.prototype.extend=function(t){var e,r,i=this._sw,n=this._ne;if(t instanceof Mu)e=t,r=t;else{if(!(t instanceof ku))return Array.isArray(t)?4===t.length||t.every(Array.isArray)?this.extend(ku.convert(t)):this.extend(Mu.convert(t)):this;if(r=t._ne,!(e=t._sw)||!r)return this}return i||n?(i.lng=Math.min(e.lng,i.lng),i.lat=Math.min(e.lat,i.lat),n.lng=Math.max(r.lng,n.lng),n.lat=Math.max(r.lat,n.lat)):(this._sw=new Mu(e.lng,e.lat),this._ne=new Mu(r.lng,r.lat)),this},ku.prototype.getCenter=function(){return new Mu((this._sw.lng+this._ne.lng)/2,(this._sw.lat+this._ne.lat)/2)},ku.prototype.getSouthWest=function(){return this._sw},ku.prototype.getNorthEast=function(){return this._ne},ku.prototype.getNorthWest=function(){return new Mu(this.getWest(),this.getNorth())},ku.prototype.getSouthEast=function(){return new Mu(this.getEast(),this.getSouth())},ku.prototype.getWest=function(){return this._sw.lng},ku.prototype.getSouth=function(){return this._sw.lat},ku.prototype.getEast=function(){return this._ne.lng},ku.prototype.getNorth=function(){return this._ne.lat},ku.prototype.toArray=function(){return[this._sw.toArray(),this._ne.toArray()]},ku.prototype.toString=function(){return"LngLatBounds("+this._sw.toString()+", "+this._ne.toString()+")"},ku.prototype.isEmpty=function(){return!(this._sw&&this._ne)},ku.prototype.contains=function(t){var e=Mu.convert(t),r=e.lng,i=e.lat,n=this._sw.lng<=r&&r<=this._ne.lng;return this._sw.lng>this._ne.lng&&(n=this._sw.lng>=r&&r>=this._ne.lng),this._sw.lat<=i&&i<=this._ne.lat&&n},ku.convert=function(t){return!t||t instanceof ku?t:new ku(t)};var Mu=function(t,e){if(isNaN(t)||isNaN(e))throw new Error("Invalid LngLat object: ("+t+", "+e+")");if(this.lng=+t,this.lat=+e,this.lat>90||this.lat<-90)throw new Error("Invalid LngLat latitude value: must be between -90 and 90")};Mu.prototype.wrap=function(){return new Mu(u(this.lng,-180,180),this.lat)},Mu.prototype.toArray=function(){return[this.lng,this.lat]},Mu.prototype.toString=function(){return"LngLat("+this.lng+", "+this.lat+")"},Mu.prototype.distanceTo=function(t){var e=Math.PI/180,r=this.lat*e,i=t.lat*e,n=Math.sin(r)*Math.sin(i)+Math.cos(r)*Math.cos(i)*Math.cos((t.lng-this.lng)*e);return 6371008.8*Math.acos(Math.min(n,1))},Mu.prototype.toBounds=function(t){void 0===t&&(t=0);var e=360*t/40075017,r=e/Math.cos(Math.PI/180*this.lat);return new ku(new Mu(this.lng-r,this.lat-e),new Mu(this.lng+r,this.lat+e))},Mu.convert=function(t){if(t instanceof Mu)return t;if(Array.isArray(t)&&(2===t.length||3===t.length))return new Mu(Number(t[0]),Number(t[1]));if(!Array.isArray(t)&&"object"==typeof t&&null!==t)return new Mu(Number("lng"in t?t.lng:t.lon),Number(t.lat));throw new Error("`LngLatLike` argument must be specified as a LngLat instance, an object {lng: <lng>, lat: <lat>}, an object {lon: <lng>, lat: <lat>}, or an array of [<lng>, <lat>]")};var Du=2*Math.PI*6371008.8;function Lu(t){return Du*Math.cos(t*Math.PI/180)}function Bu(t){return(180+t)/360}function Ru(t){return(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+t*Math.PI/360)))/360}function Fu(t,e){return t/Lu(e)}function Ou(t){return 360/Math.PI*Math.atan(Math.exp((180-360*t)*Math.PI/180))-90}var Uu=function(t,e,r){void 0===r&&(r=0),this.x=+t,this.y=+e,this.z=+r};Uu.fromLngLat=function(t,e){void 0===e&&(e=0);var r=Mu.convert(t);return new Uu(Bu(r.lng),Ru(r.lat),Fu(e,r.lat))},Uu.prototype.toLngLat=function(){return new Mu(360*this.x-180,Ou(this.y))},Uu.prototype.toAltitude=function(){return this.z*Lu(Ou(this.y))},Uu.prototype.meterInMercatorCoordinateUnits=function(){return 1/Du*(t=Ou(this.y),1/Math.cos(t*Math.PI/180));var t};var Vu=function(t,e,r){this.z=t,this.x=e,this.y=r,this.key=qu(0,t,t,e,r)};Vu.prototype.equals=function(t){return this.z===t.z&&this.x===t.x&&this.y===t.y},Vu.prototype.url=function(t,e){var r,i,n,o,a,s=(i=this.y,n=this.z,o=Cu(256*(r=this.x),256*(i=Math.pow(2,n)-i-1),n),a=Cu(256*(r+1),256*(i+1),n),o[0]+","+o[1]+","+a[0]+","+a[1]),l=function(t,e,r){for(var i,n="",o=t;o>0;o--)n+=(e&(i=1<<o-1)?1:0)+(r&i?2:0);return n}(this.z,this.x,this.y);return t[(this.x+this.y)%t.length].replace("{prefix}",(this.x%16).toString(16)+(this.y%16).toString(16)).replace("{z}",String(this.z)).replace("{x}",String(this.x)).replace("{y}",String("tms"===e?Math.pow(2,this.z)-this.y-1:this.y)).replace("{quadkey}",l).replace("{bbox-epsg-3857}",s)},Vu.prototype.getTilePoint=function(t){var e=Math.pow(2,this.z);return new n(8192*(t.x*e-this.x),8192*(t.y*e-this.y))},Vu.prototype.toString=function(){return this.z+"/"+this.x+"/"+this.y};var Nu=function(t,e){this.wrap=t,this.canonical=e,this.key=qu(t,e.z,e.z,e.x,e.y)},ju=function(t,e,r,i,n){this.overscaledZ=t,this.wrap=e,this.canonical=new Vu(r,+i,+n),this.key=qu(e,t,r,i,n)};function qu(t,e,r,i,n){(t*=2)<0&&(t=-1*t-1);var o=1<<r;return(o*o*t+o*n+i).toString(36)+r.toString(36)+e.toString(36)}ju.prototype.equals=function(t){return this.overscaledZ===t.overscaledZ&&this.wrap===t.wrap&&this.canonical.equals(t.canonical)},ju.prototype.scaledTo=function(t){var e=this.canonical.z-t;return t>this.canonical.z?new ju(t,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new ju(t,this.wrap,t,this.canonical.x>>e,this.canonical.y>>e)},ju.prototype.calculateScaledKey=function(t,e){var r=this.canonical.z-t;return t>this.canonical.z?qu(this.wrap*+e,t,this.canonical.z,this.canonical.x,this.canonical.y):qu(this.wrap*+e,t,t,this.canonical.x>>r,this.canonical.y>>r)},ju.prototype.isChildOf=function(t){if(t.wrap!==this.wrap)return!1;var e=this.canonical.z-t.canonical.z;return 0===t.overscaledZ||t.overscaledZ<this.overscaledZ&&t.canonical.x===this.canonical.x>>e&&t.canonical.y===this.canonical.y>>e},ju.prototype.children=function(t){if(this.overscaledZ>=t)return[new ju(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];var e=this.canonical.z+1,r=2*this.canonical.x,i=2*this.canonical.y;return[new ju(e,this.wrap,e,r,i),new ju(e,this.wrap,e,r+1,i),new ju(e,this.wrap,e,r,i+1),new ju(e,this.wrap,e,r+1,i+1)]},ju.prototype.isLessThan=function(t){return this.wrap<t.wrap||!(this.wrap>t.wrap)&&(this.overscaledZ<t.overscaledZ||!(this.overscaledZ>t.overscaledZ)&&(this.canonical.x<t.canonical.x||!(this.canonical.x>t.canonical.x)&&this.canonical.y<t.canonical.y))},ju.prototype.wrapped=function(){return new ju(this.overscaledZ,0,this.canonical.z,this.canonical.x,this.canonical.y)},ju.prototype.unwrapTo=function(t){return new ju(this.overscaledZ,t,this.canonical.z,this.canonical.x,this.canonical.y)},ju.prototype.overscaleFactor=function(){return Math.pow(2,this.overscaledZ-this.canonical.z)},ju.prototype.toUnwrapped=function(){return new Nu(this.wrap,this.canonical)},ju.prototype.toString=function(){return this.overscaledZ+"/"+this.canonical.x+"/"+this.canonical.y},ju.prototype.getTilePoint=function(t){return this.canonical.getTilePoint(new Uu(t.x-this.wrap,t.y))},Li("CanonicalTileID",Vu),Li("OverscaledTileID",ju,{omit:["posMatrix"]});var Zu=function(t,e,r){if(this.uid=t,e.height!==e.width)throw new RangeError("DEM tiles must be square");if(r&&"mapbox"!==r&&"terrarium"!==r)return b('"'+r+'" is not a valid encoding type. Valid types include "mapbox" and "terrarium".');this.stride=e.height;var i=this.dim=e.height-2;this.data=new Uint32Array(e.data.buffer),this.encoding=r||"mapbox";for(var n=0;n<i;n++)this.data[this._idx(-1,n)]=this.data[this._idx(0,n)],this.data[this._idx(i,n)]=this.data[this._idx(i-1,n)],this.data[this._idx(n,-1)]=this.data[this._idx(n,0)],this.data[this._idx(n,i)]=this.data[this._idx(n,i-1)];this.data[this._idx(-1,-1)]=this.data[this._idx(0,0)],this.data[this._idx(i,-1)]=this.data[this._idx(i-1,0)],this.data[this._idx(-1,i)]=this.data[this._idx(0,i-1)],this.data[this._idx(i,i)]=this.data[this._idx(i-1,i-1)]};Zu.prototype.get=function(t,e){var r=new Uint8Array(this.data.buffer),i=4*this._idx(t,e);return("terrarium"===this.encoding?this._unpackTerrarium:this._unpackMapbox)(r[i],r[i+1],r[i+2])},Zu.prototype.getUnpackVector=function(){return"terrarium"===this.encoding?[256,1,1/256,32768]:[6553.6,25.6,.1,1e4]},Zu.prototype._idx=function(t,e){if(t<-1||t>=this.dim+1||e<-1||e>=this.dim+1)throw new RangeError("out of range source coordinates for DEM data");return(e+1)*this.stride+(t+1)},Zu.prototype._unpackMapbox=function(t,e,r){return(256*t*256+256*e+r)/10-1e4},Zu.prototype._unpackTerrarium=function(t,e,r){return 256*t+e+r/256-32768},Zu.prototype.getPixels=function(){return new da({width:this.stride,height:this.stride},new Uint8Array(this.data.buffer))},Zu.prototype.backfillBorder=function(t,e,r){if(this.dim!==t.dim)throw new Error("dem dimension mismatch");var i=e*this.dim,n=e*this.dim+this.dim,o=r*this.dim,a=r*this.dim+this.dim;switch(e){case-1:i=n-1;break;case 1:n=i+1}switch(r){case-1:o=a-1;break;case 1:a=o+1}for(var s=-e*this.dim,l=-r*this.dim,u=o;u<a;u++)for(var c=i;c<n;c++)this.data[this._idx(c,u)]=t.data[this._idx(c+s,u+l)]},Li("DEMData",Zu);var Gu=function(t){this._stringToNumber={},this._numberToString=[];for(var e=0;e<t.length;e++){var r=t[e];this._stringToNumber[r]=e,this._numberToString[e]=r}};Gu.prototype.encode=function(t){return this._stringToNumber[t]},Gu.prototype.decode=function(t){return this._numberToString[t]};var Xu=function(t,e,r,i,n){this.type="Feature",this._vectorTileFeature=t,t._z=e,t._x=r,t._y=i,this.properties=t.properties,this.id=n},Wu={geometry:{configurable:!0}};Wu.geometry.get=function(){return void 0===this._geometry&&(this._geometry=this._vectorTileFeature.toGeoJSON(this._vectorTileFeature._x,this._vectorTileFeature._y,this._vectorTileFeature._z).geometry),this._geometry},Wu.geometry.set=function(t){this._geometry=t},Xu.prototype.toJSON=function(){var t={geometry:this.geometry};for(var e in this)"_geometry"!==e&&"_vectorTileFeature"!==e&&(t[e]=this[e]);return t},Object.defineProperties(Xu.prototype,Wu);var Ku=function(){this.state={},this.stateChanges={},this.deletedStates={}};Ku.prototype.updateState=function(t,e,r){var i=String(e);if(this.stateChanges[t]=this.stateChanges[t]||{},this.stateChanges[t][i]=this.stateChanges[t][i]||{},c(this.stateChanges[t][i],r),null===this.deletedStates[t])for(var n in this.deletedStates[t]={},this.state[t])n!==i&&(this.deletedStates[t][n]=null);else if(this.deletedStates[t]&&null===this.deletedStates[t][i])for(var o in this.deletedStates[t][i]={},this.state[t][i])r[o]||(this.deletedStates[t][i][o]=null);else for(var a in r)this.deletedStates[t]&&this.deletedStates[t][i]&&null===this.deletedStates[t][i][a]&&delete this.deletedStates[t][i][a]},Ku.prototype.removeFeatureState=function(t,e,r){if(null!==this.deletedStates[t]){var i=String(e);if(this.deletedStates[t]=this.deletedStates[t]||{},r&&void 0!==e)null!==this.deletedStates[t][i]&&(this.deletedStates[t][i]=this.deletedStates[t][i]||{},this.deletedStates[t][i][r]=null);else if(void 0!==e)if(this.stateChanges[t]&&this.stateChanges[t][i])for(r in this.deletedStates[t][i]={},this.stateChanges[t][i])this.deletedStates[t][i][r]=null;else this.deletedStates[t][i]=null;else this.deletedStates[t]=null}},Ku.prototype.getState=function(t,e){var r=String(e),i=c({},(this.state[t]||{})[r],(this.stateChanges[t]||{})[r]);if(null===this.deletedStates[t])return{};if(this.deletedStates[t]){var n=this.deletedStates[t][e];if(null===n)return{};for(var o in n)delete i[o]}return i},Ku.prototype.initializeTileState=function(t,e){t.setFeatureState(this.state,e)},Ku.prototype.coalesceChanges=function(t,e){var r={};for(var i in this.stateChanges){this.state[i]=this.state[i]||{};var n={};for(var o in this.stateChanges[i])this.state[i][o]||(this.state[i][o]={}),c(this.state[i][o],this.stateChanges[i][o]),n[o]=this.state[i][o];r[i]=n}for(var a in this.deletedStates){this.state[a]=this.state[a]||{};var s={};if(null===this.deletedStates[a])for(var l in this.state[a])s[l]={},this.state[a][l]={};else for(var u in this.deletedStates[a]){if(null===this.deletedStates[a][u])this.state[a][u]={};else for(var p=0,h=Object.keys(this.deletedStates[a][u]);p<h.length;p+=1)delete this.state[a][u][h[p]];s[u]=this.state[a][u]}r[a]=r[a]||{},c(r[a],s)}if(this.stateChanges={},this.deletedStates={},0!==Object.keys(r).length)for(var f in t)t[f].setFeatureState(r,e)};var Hu=function(t,e){this.tileID=t,this.x=t.canonical.x,this.y=t.canonical.y,this.z=t.canonical.z,this.grid=new Pi(8192,16,0),this.grid3D=new Pi(8192,16,0),this.featureIndexArray=new ro,this.promoteId=e};function Ju(t,e,r,i,n){return g(t,function(t,o){var a=e instanceof hn?e.get(o):null;return a&&a.evaluate?a.evaluate(r,i,n):a})}function Yu(t){for(var e=1/0,r=1/0,i=-1/0,n=-1/0,o=0,a=t;o<a.length;o+=1){var s=a[o];e=Math.min(e,s.x),r=Math.min(r,s.y),i=Math.max(i,s.x),n=Math.max(n,s.y)}return{minX:e,minY:r,maxX:i,maxY:n}}function Qu(t,e){return e-t}Hu.prototype.insert=function(t,e,r,i,n,o){var a=this.featureIndexArray.length;this.featureIndexArray.emplaceBack(r,i,n);for(var s=o?this.grid3D:this.grid,l=0;l<e.length;l++){for(var u=e[l],c=[1/0,1/0,-1/0,-1/0],p=0;p<u.length;p++){var h=u[p];c[0]=Math.min(c[0],h.x),c[1]=Math.min(c[1],h.y),c[2]=Math.max(c[2],h.x),c[3]=Math.max(c[3],h.y)}c[0]<8192&&c[1]<8192&&c[2]>=0&&c[3]>=0&&s.insert(a,c[0],c[1],c[2],c[3])}},Hu.prototype.loadVTLayers=function(){return this.vtLayers||(this.vtLayers=new ms.VectorTile(new Zs(this.rawTileData)).layers,this.sourceLayerCoder=new Gu(this.vtLayers?Object.keys(this.vtLayers).sort():["_geojsonTileLayer"])),this.vtLayers},Hu.prototype.query=function(t,e,r,i){var o=this;this.loadVTLayers();for(var a=t.params||{},s=8192/t.tileSize/t.scale,l=ri(a.filter),u=t.queryGeometry,c=t.queryPadding*s,p=Yu(u),h=this.grid.query(p.minX-c,p.minY-c,p.maxX+c,p.maxY+c),f=Yu(t.cameraQueryGeometry),d=0,m=this.grid3D.query(f.minX-c,f.minY-c,f.maxX+c,f.maxY+c,function(e,r,i,o){return function(t,e,r,i,o){for(var a=0,s=t;a<s.length;a+=1){var l=s[a];if(e<=l.x&&r<=l.y&&i>=l.x&&o>=l.y)return!0}var u=[new n(e,r),new n(e,o),new n(i,o),new n(i,r)];if(t.length>2)for(var c=0,p=u;c<p.length;c+=1)if(Ko(t,p[c]))return!0;for(var h=0;h<t.length-1;h++)if(Ho(t[h],t[h+1],u))return!0;return!1}(t.cameraQueryGeometry,e-c,r-c,i+c,o+c)});d<m.length;d+=1)h.push(m[d]);h.sort(Qu);for(var y,g={},_=function(n){var c=h[n];if(c!==y){y=c;var p=o.featureIndexArray.get(c),f=null;o.loadMatchingFeature(g,p.bucketIndex,p.sourceLayerIndex,p.featureIndex,l,a.layers,a.availableImages,e,r,i,function(e,r,i){return f||(f=Ro(e)),r.queryIntersectsFeature(u,e,i,f,o.z,t.transform,s,t.pixelPosMatrix)})}},v=0;v<h.length;v++)_(v);return g},Hu.prototype.loadMatchingFeature=function(t,e,r,i,n,o,a,s,l,u,c){var p=this.bucketLayerIDs[e];if(!o||function(t,e){for(var r=0;r<t.length;r++)if(e.indexOf(t[r])>=0)return!0;return!1}(o,p)){var h=this.sourceLayerCoder.decode(r),f=this.vtLayers[h].feature(i);if(n.filter(new nn(this.tileID.overscaledZ),f))for(var d=this.getId(f,h),m=0;m<p.length;m++){var y=p[m];if(!(o&&o.indexOf(y)<0)){var g=s[y];if(g){var _={};void 0!==d&&u&&(_=u.getState(g.sourceLayer||"_geojsonTileLayer",d));var v=l[y];v.paint=Ju(v.paint,g.paint,f,_,a),v.layout=Ju(v.layout,g.layout,f,_,a);var x=!c||c(f,g,_);if(x){var b=new Xu(f,this.z,this.x,this.y,d);b.layer=v;var w=t[y];void 0===w&&(w=t[y]=[]),w.push({featureIndex:i,feature:b,intersectionZ:x})}}}}}},Hu.prototype.lookupSymbolFeatures=function(t,e,r,i,n,o,a,s){var l={};this.loadVTLayers();for(var u=ri(n),c=0,p=t;c<p.length;c+=1)this.loadMatchingFeature(l,r,i,p[c],u,o,a,s,e);return l},Hu.prototype.hasLayer=function(t){for(var e=0,r=this.bucketLayerIDs;e<r.length;e+=1)for(var i=0,n=r[e];i<n.length;i+=1)if(t===n[i])return!0;return!1},Hu.prototype.getId=function(t,e){var r=t.id;return this.promoteId&&"boolean"==typeof(r=t.properties["string"==typeof this.promoteId?this.promoteId:this.promoteId[e]])&&(r=Number(r)),r},Li("FeatureIndex",Hu,{omit:["rawTileData","sourceLayerCoder"]});var $u=function(t,e){this.tileID=t,this.uid=h(),this.uses=0,this.tileSize=e,this.buckets={},this.expirationTime=null,this.queryPadding=0,this.hasSymbolBuckets=!1,this.hasRTLText=!1,this.dependencies={},this.expiredRequestCount=0,this.state="loading"};$u.prototype.registerFadeDuration=function(t){var e=t+this.timeAdded;e<R.now()||this.fadeEndTime&&e<this.fadeEndTime||(this.fadeEndTime=e)},$u.prototype.wasRequested=function(){return"errored"===this.state||"loaded"===this.state||"reloading"===this.state},$u.prototype.loadVectorData=function(t,e,r){if(this.hasData()&&this.unloadVectorData(),this.state="loaded",t){for(var i in t.featureIndex&&(this.latestFeatureIndex=t.featureIndex,t.rawTileData?(this.latestRawTileData=t.rawTileData,this.latestFeatureIndex.rawTileData=t.rawTileData):this.latestRawTileData&&(this.latestFeatureIndex.rawTileData=this.latestRawTileData)),this.collisionBoxArray=t.collisionBoxArray,this.buckets=function(t,e){var r={};if(!e)return r;for(var i=function(){var t=o[n],i=t.layerIds.map(function(t){return e.getLayer(t)}).filter(Boolean);if(0!==i.length){t.layers=i,t.stateDependentLayerIds&&(t.stateDependentLayers=t.stateDependentLayerIds.map(function(t){return i.filter(function(e){return e.id===t})[0]}));for(var a=0,s=i;a<s.length;a+=1)r[s[a].id]=t}},n=0,o=t;n<o.length;n+=1)i();return r}(t.buckets,e.style),this.hasSymbolBuckets=!1,this.buckets){var n=this.buckets[i];if(n instanceof pu){if(this.hasSymbolBuckets=!0,!r)break;n.justReloaded=!0}}if(this.hasRTLText=!1,this.hasSymbolBuckets)for(var o in this.buckets){var a=this.buckets[o];if(a instanceof pu&&a.hasRTLText){this.hasRTLText=!0,rn.isLoading()||rn.isLoaded()||"deferred"!==tn()||en();break}}for(var s in this.queryPadding=0,this.buckets){var l=this.buckets[s];this.queryPadding=Math.max(this.queryPadding,e.style.getLayer(s).queryRadius(l))}t.imageAtlas&&(this.imageAtlas=t.imageAtlas),t.glyphAtlasImage&&(this.glyphAtlasImage=t.glyphAtlasImage)}else this.collisionBoxArray=new Kn},$u.prototype.unloadVectorData=function(){for(var t in this.buckets)this.buckets[t].destroy();this.buckets={},this.imageAtlasTexture&&this.imageAtlasTexture.destroy(),this.imageAtlas&&(this.imageAtlas=null),this.glyphAtlasTexture&&this.glyphAtlasTexture.destroy(),this.latestFeatureIndex=null,this.state="unloaded"},$u.prototype.getBucket=function(t){return this.buckets[t.id]},$u.prototype.upload=function(t){for(var e in this.buckets){var r=this.buckets[e];r.uploadPending()&&r.upload(t)}var i=t.gl;this.imageAtlas&&!this.imageAtlas.uploaded&&(this.imageAtlasTexture=new Au(t,this.imageAtlas.image,i.RGBA),this.imageAtlas.uploaded=!0),this.glyphAtlasImage&&(this.glyphAtlasTexture=new Au(t,this.glyphAtlasImage,i.ALPHA),this.glyphAtlasImage=null)},$u.prototype.prepare=function(t){this.imageAtlas&&this.imageAtlas.patchUpdatedImages(t,this.imageAtlasTexture)},$u.prototype.queryRenderedFeatures=function(t,e,r,i,n,o,a,s,l,u){return this.latestFeatureIndex&&this.latestFeatureIndex.rawTileData?this.latestFeatureIndex.query({queryGeometry:i,cameraQueryGeometry:n,scale:o,tileSize:this.tileSize,pixelPosMatrix:u,transform:s,params:a,queryPadding:this.queryPadding*l},t,e,r):{}},$u.prototype.querySourceFeatures=function(t,e){var r=this.latestFeatureIndex;if(r&&r.rawTileData){var i=r.loadVTLayers(),n=e?e.sourceLayer:"",o=i._geojsonTileLayer||i[n];if(o)for(var a=ri(e&&e.filter),s=this.tileID.canonical,l=s.z,u=s.x,c=s.y,p={z:l,x:u,y:c},h=0;h<o.length;h++){var f=o.feature(h);if(a.filter(new nn(this.tileID.overscaledZ),f)){var d=r.getId(f,n),m=new Xu(f,l,u,c,d);m.tile=p,t.push(m)}}}},$u.prototype.hasData=function(){return"loaded"===this.state||"reloading"===this.state||"expired"===this.state},$u.prototype.patternsLoaded=function(){return this.imageAtlas&&!!Object.keys(this.imageAtlas.patternPositions).length},$u.prototype.setExpiryData=function(t){var e=this.expirationTime;if(t.cacheControl){var r=I(t.cacheControl);r["max-age"]&&(this.expirationTime=Date.now()+1e3*r["max-age"])}else t.expires&&(this.expirationTime=new Date(t.expires).getTime());if(this.expirationTime){var i=Date.now(),n=!1;if(this.expirationTime>i)n=!1;else if(e)if(this.expirationTime<e)n=!0;else{var o=this.expirationTime-e;o?this.expirationTime=i+Math.max(o,3e4):n=!0}else n=!0;n?(this.expiredRequestCount++,this.state="expired"):this.expiredRequestCount=0}},$u.prototype.getExpiryTimeout=function(){if(this.expirationTime)return this.expiredRequestCount?1e3*(1<<Math.min(this.expiredRequestCount-1,31)):Math.min(this.expirationTime-(new Date).getTime(),Math.pow(2,31)-1)},$u.prototype.setFeatureState=function(t,e){if(this.latestFeatureIndex&&this.latestFeatureIndex.rawTileData&&0!==Object.keys(t).length){var r=this.latestFeatureIndex.loadVTLayers();for(var i in this.buckets)if(e.style.hasLayer(i)){var n=this.buckets[i],o=n.layers[0].sourceLayer||"_geojsonTileLayer",a=r[o],s=t[o];if(a&&s&&0!==Object.keys(s).length){n.update(s,a,this.imageAtlas&&this.imageAtlas.patternPositions||{});var l=e&&e.style&&e.style.getLayer(i);l&&(this.queryPadding=Math.max(this.queryPadding,l.queryRadius(n)))}}}},$u.prototype.holdingForFade=function(){return void 0!==this.symbolFadeHoldUntil},$u.prototype.symbolFadeFinished=function(){return!this.symbolFadeHoldUntil||this.symbolFadeHoldUntil<R.now()},$u.prototype.clearFadeHold=function(){this.symbolFadeHoldUntil=void 0},$u.prototype.setHoldDuration=function(t){this.symbolFadeHoldUntil=R.now()+t},$u.prototype.setDependencies=function(t,e){for(var r={},i=0,n=e;i<n.length;i+=1)r[n[i]]=!0;this.dependencies[t]=r},$u.prototype.hasDependency=function(t,e){for(var r=0,i=t;r<i.length;r+=1){var n=this.dependencies[i[r]];if(n)for(var o=0,a=e;o<a.length;o+=1)if(n[a[o]])return!0}return!1};var tc=self.performance,ec=function(t){this._marks={start:[t.url,"start"].join("#"),end:[t.url,"end"].join("#"),measure:t.url.toString()},tc.mark(this._marks.start)};ec.prototype.finish=function(){tc.mark(this._marks.end);var t=tc.getEntriesByName(this._marks.measure);return 0===t.length&&(tc.measure(this._marks.measure,this._marks.start,this._marks.end),t=tc.getEntriesByName(this._marks.measure),tc.clearMarks(this._marks.start),tc.clearMarks(this._marks.end),tc.clearMeasures(this._marks.measure)),t},t.Actor=Pu,t.AlphaImage=fa,t.CanonicalTileID=Vu,t.CollisionBoxArray=Kn,t.Color=Yt,t.DEMData=Zu,t.DataConstantProperty=fn,t.DictionaryCoder=Gu,t.EXTENT=8192,t.ErrorEvent=Tt,t.EvaluationParameters=nn,t.Event=St,t.Evented=It,t.FeatureIndex=Hu,t.FillBucket=rs,t.FillExtrusionBucket=vs,t.ImageAtlas=dl,t.ImagePosition=hl,t.LineBucket=Ps,t.LngLat=Mu,t.LngLatBounds=ku,t.MercatorCoordinate=Uu,t.ONE_EM=24,t.OverscaledTileID=ju,t.Point=n,t.Point$1=n,t.Properties=_n,t.Protobuf=Zs,t.RGBAImage=da,t.RequestManager=q,t.RequestPerformance=ec,t.ResourceType=ht,t.SegmentVector=no,t.SourceFeatureState=Ku,t.StructArrayLayout1ui2=Zn,t.StructArrayLayout2f1f2i16=Bn,t.StructArrayLayout2i4=In,t.StructArrayLayout3ui6=Fn,t.StructArrayLayout4i8=En,t.SymbolBucket=pu,t.Texture=Au,t.Tile=$u,t.Transitionable=sn,t.Uniform1f=_o,t.Uniform1i=go,t.Uniform2f=vo,t.Uniform3f=xo,t.Uniform4f=bo,t.UniformColor=wo,t.UniformMatrix4f=To,t.UnwrappedTileID=Nu,t.ValidationError=At,t.WritingMode=ml,t.ZoomHistory=Vi,t.add=function(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t[2]=e[2]+r[2],t},t.addDynamicAttributes=su,t.asyncAll=function(t,e,r){if(!t.length)return r(null,[]);var i=t.length,n=new Array(t.length),o=null;t.forEach(function(t,a){e(t,function(t,e){t&&(o=t),n[a]=e,0==--i&&r(o,n)})})},t.bezier=a,t.bindAll=m,t.browser=R,t.cacheEntryPossiblyAdded=function(t){++ct>at&&(t.getActor().send("enforceCacheSizeLimit",ot),ct=0)},t.clamp=l,t.clearTileCache=function(t){var e=self.caches.delete("mapbox-tiles");t&&e.catch(t).then(function(){return t()})},t.clipLine=Vl,t.clone=function(t){var e=new ea(16);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e},t.clone$1=v,t.clone$2=function(t){var e=new ea(3);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e},t.collisionCircleLayout=Us,t.config=F,t.create=function(){var t=new ea(16);return ea!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0),t[0]=1,t[5]=1,t[10]=1,t[15]=1,t},t.create$1=function(){var t=new ea(9);return ea!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[5]=0,t[6]=0,t[7]=0),t[0]=1,t[4]=1,t[8]=1,t},t.create$2=function(){var t=new ea(4);return ea!=Float32Array&&(t[1]=0,t[2]=0),t[0]=1,t[3]=1,t},t.createCommonjsModule=e,t.createExpression=qr,t.createLayout=Sn,t.createStyleLayer=function(t){return"custom"===t.type?new xu(t):new bu[t.type](t)},t.cross=function(t,e,r){var i=e[0],n=e[1],o=e[2],a=r[0],s=r[1],l=r[2];return t[0]=n*l-o*s,t[1]=o*a-i*l,t[2]=i*s-n*a,t},t.deepEqual=function t(e,r){if(Array.isArray(e)){if(!Array.isArray(r)||e.length!==r.length)return!1;for(var i=0;i<e.length;i++)if(!t(e[i],r[i]))return!1;return!0}if("object"==typeof e&&null!==e&&null!==r){if("object"!=typeof r)return!1;if(Object.keys(e).length!==Object.keys(r).length)return!1;for(var n in e)if(!t(e[n],r[n]))return!1;return!0}return e===r},t.dot=function(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]},t.dot$1=function(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]+t[3]*e[3]},t.ease=s,t.emitValidationErrors=zi,t.endsWith=y,t.enforceCacheSizeLimit=function(t){st(),Q&&Q.then(function(e){e.keys().then(function(r){for(var i=0;i<r.length-t;i++)e.delete(r[i])})})},t.evaluateSizeForFeature=kl,t.evaluateSizeForZoom=Ml,t.evaluateVariableOffset=$l,t.evented=$i,t.extend=c,t.featureFilter=ri,t.filterObject=_,t.fromRotation=function(t,e){var r=Math.sin(e),i=Math.cos(e);return t[0]=i,t[1]=r,t[2]=0,t[3]=-r,t[4]=i,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},t.getAnchorAlignment=El,t.getAnchorJustification=tu,t.getArrayBuffer=_t,t.getImage=xt,t.getJSON=function(t,e){return gt(c(t,{type:"json"}),e)},t.getRTLTextPluginStatus=tn,t.getReferrer=yt,t.getVideo=function(t,e){var r,i,n=self.document.createElement("video");n.muted=!0,n.onloadstart=function(){e(null,n)};for(var o=0;o<t.length;o++){var a=self.document.createElement("source");r=t[o],i=void 0,(i=self.document.createElement("a")).href=r,(i.protocol!==self.document.location.protocol||i.host!==self.document.location.host)&&(n.crossOrigin="Anonymous"),a.src=t[o],n.appendChild(a)}return{cancel:function(){}}},t.identity=ra,t.invert=function(t,e){var r=e[0],i=e[1],n=e[2],o=e[3],a=e[4],s=e[5],l=e[6],u=e[7],c=e[8],p=e[9],h=e[10],f=e[11],d=e[12],m=e[13],y=e[14],g=e[15],_=r*s-i*a,v=r*l-n*a,x=r*u-o*a,b=i*l-n*s,w=i*u-o*s,S=n*u-o*l,T=c*m-p*d,I=c*y-h*d,E=c*g-f*d,A=p*y-h*m,z=p*g-f*m,P=h*g-f*y,C=_*P-v*z+x*A+b*E-w*I+S*T;return C?(t[0]=(s*P-l*z+u*A)*(C=1/C),t[1]=(n*z-i*P-o*A)*C,t[2]=(m*S-y*w+g*b)*C,t[3]=(h*w-p*S-f*b)*C,t[4]=(l*E-a*P-u*I)*C,t[5]=(r*P-n*E+o*I)*C,t[6]=(y*x-d*S-g*v)*C,t[7]=(c*S-h*x+f*v)*C,t[8]=(a*z-s*E+u*T)*C,t[9]=(i*E-r*z-o*T)*C,t[10]=(d*w-m*x+g*_)*C,t[11]=(p*x-c*w-f*_)*C,t[12]=(s*I-a*A-l*T)*C,t[13]=(r*A-i*I+n*T)*C,t[14]=(m*v-d*b-y*_)*C,t[15]=(c*b-p*v+h*_)*C,t):null},t.isChar=Ni,t.isMapboxURL=Z,t.keysDifference=function(t,e){var r=[];for(var i in t)i in e||r.push(i);return r},t.makeRequest=gt,t.mapObject=g,t.mercatorXfromLng=Bu,t.mercatorYfromLat=Ru,t.mercatorZfromAltitude=Fu,t.mul=oa,t.multiply=ia,t.mvt=ms,t.normalize=function(t,e){var r=e[0],i=e[1],n=e[2],o=r*r+i*i+n*n;return o>0&&(o=1/Math.sqrt(o)),t[0]=e[0]*o,t[1]=e[1]*o,t[2]=e[2]*o,t},t.number=Ne,t.offscreenCanvasSupported=pt,t.ortho=function(t,e,r,i,n,o,a){var s=1/(e-r),l=1/(i-n),u=1/(o-a);return t[0]=-2*s,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*l,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*u,t[11]=0,t[12]=(e+r)*s,t[13]=(n+i)*l,t[14]=(a+o)*u,t[15]=1,t},t.parseGlyphPBF=function(t){return new Zs(t).readFields(ll,[])},t.pbf=Zs,t.performSymbolLayout=function(t,e,r,i,n,o,a){t.createArrays(),t.tilePixelRatio=8192/(512*t.overscaling),t.compareText={},t.iconsNeedLinear=!1;var s=t.layers[0].layout,l=t.layers[0]._unevaluatedLayout._values,u={};if("composite"===t.textSizeData.kind){var c=t.textSizeData,p=c.maxZoom;u.compositeTextSizes=[l["text-size"].possiblyEvaluate(new nn(c.minZoom),a),l["text-size"].possiblyEvaluate(new nn(p),a)]}if("composite"===t.iconSizeData.kind){var h=t.iconSizeData,f=h.maxZoom;u.compositeIconSizes=[l["icon-size"].possiblyEvaluate(new nn(h.minZoom),a),l["icon-size"].possiblyEvaluate(new nn(f),a)]}u.layoutTextSize=l["text-size"].possiblyEvaluate(new nn(t.zoom+1),a),u.layoutIconSize=l["icon-size"].possiblyEvaluate(new nn(t.zoom+1),a),u.textMaxSize=l["text-size"].possiblyEvaluate(new nn(18));for(var d=24*s.get("text-line-height"),m="map"===s.get("text-rotation-alignment")&&"point"!==s.get("symbol-placement"),y=s.get("text-keep-upright"),g=s.get("text-size"),_=function(){var o=x[v],l=s.get("text-font").evaluate(o,{},a).join(","),c=g.evaluate(o,{},a),p=u.layoutTextSize.evaluate(o,{},a),h=u.layoutIconSize.evaluate(o,{},a),f={horizontal:{},vertical:void 0},_=o.text,w=[0,0];if(_){var S=_.toString(),T=24*s.get("text-letter-spacing").evaluate(o,{},a),I=function(t){for(var e=0,r=S;e<r.length;e+=1)if(i=r[e].charCodeAt(0),Ni.Arabic(i)||Ni["Arabic Supplement"](i)||Ni["Arabic Extended-A"](i)||Ni["Arabic Presentation Forms-A"](i)||Ni["Arabic Presentation Forms-B"](i))return!1;var i;return!0}()?T:0,E=s.get("text-anchor").evaluate(o,{},a),A=s.get("text-variable-anchor");if(!A){var z=s.get("text-radial-offset").evaluate(o,{},a);w=z?$l(E,[24*z,Ql]):s.get("text-offset").evaluate(o,{},a).map(function(t){return 24*t})}var P=m?"center":s.get("text-justify").evaluate(o,{},a),C=s.get("symbol-placement"),k="point"===C?24*s.get("text-max-width").evaluate(o,{},a):0,M=function(){t.allowVerticalPlacement&&ji(S)&&(f.vertical=_l(_,e,r,n,l,k,d,E,"left",I,w,ml.vertical,!0,C,p,c))};if(!m&&A){for(var D="auto"===P?A.map(function(t){return tu(t)}):[P],L=!1,B=0;B<D.length;B++){var R=D[B];if(!f.horizontal[R])if(L)f.horizontal[R]=f.horizontal[0];else{var F=_l(_,e,r,n,l,k,d,"center",R,I,w,ml.horizontal,!1,C,p,c);F&&(f.horizontal[R]=F,L=1===F.positionedLines.length)}}M()}else{"auto"===P&&(P=tu(E));var O=_l(_,e,r,n,l,k,d,E,P,I,w,ml.horizontal,!1,C,p,c);O&&(f.horizontal[P]=O),M(),ji(S)&&m&&y&&(f.vertical=_l(_,e,r,n,l,k,d,E,P,I,w,ml.vertical,!1,C,p,c))}}var U=void 0,V=!1;if(o.icon&&o.icon.name){var N=i[o.icon.name];N&&(U=function(t,e,r){var i=El(r),n=e[0]-t.displaySize[0]*i.horizontalAlign,o=e[1]-t.displaySize[1]*i.verticalAlign;return{image:t,top:o,bottom:o+t.displaySize[1],left:n,right:n+t.displaySize[0]}}(n[o.icon.name],s.get("icon-offset").evaluate(o,{},a),s.get("icon-anchor").evaluate(o,{},a)),V=N.sdf,void 0===t.sdfIcons?t.sdfIcons=N.sdf:t.sdfIcons!==N.sdf&&b("Style sheet warning: Cannot mix SDF and non-SDF icons in one buffer"),(N.pixelRatio!==t.pixelRatio||0!==s.get("icon-rotate").constantOr(1))&&(t.iconsNeedLinear=!0))}var j=ru(f.horizontal)||f.vertical;t.iconsInText=!!j&&j.iconsInText,(j||U)&&function(t,e,r,i,n,o,a,s,l,u,c){var p=o.textMaxSize.evaluate(e,{});void 0===p&&(p=a);var h,f=t.layers[0].layout,d=f.get("icon-offset").evaluate(e,{},c),m=ru(r.horizontal),y=a/24,g=t.tilePixelRatio*y,_=t.tilePixelRatio*p/24,v=t.tilePixelRatio*s,x=t.tilePixelRatio*f.get("symbol-spacing"),w=f.get("text-padding")*t.tilePixelRatio,S=f.get("icon-padding")*t.tilePixelRatio,T=f.get("text-max-angle")/180*Math.PI,I="map"===f.get("text-rotation-alignment")&&"point"!==f.get("symbol-placement"),E="map"===f.get("icon-rotation-alignment")&&"point"!==f.get("symbol-placement"),A=f.get("symbol-placement"),z=x/2,P=f.get("icon-text-fit");i&&"none"!==P&&(t.allowVerticalPlacement&&r.vertical&&(h=zl(i,r.vertical,P,f.get("icon-text-fit-padding"),d,y)),m&&(i=zl(i,m,P,f.get("icon-text-fit-padding"),d,y)));var C=function(s,p){p.x<0||p.x>=8192||p.y<0||p.y>=8192||function(t,e,r,i,n,o,a,s,l,u,c,p,h,f,d,m,y,g,_,v,x,w,S,T,I){var E,A,z,P,C,k=t.addToLineVertexArray(e,r),M=0,D=0,L=0,B=0,R=-1,F=-1,O={},U=uo(""),V=0,N=0;if(void 0===s._unevaluatedLayout.getValue("text-radial-offset")?(V=(E=s.layout.get("text-offset").evaluate(x,{},T).map(function(t){return 24*t}))[0],N=E[1]):(V=24*s.layout.get("text-radial-offset").evaluate(x,{},T),N=Ql),t.allowVerticalPlacement&&i.vertical){var j=s.layout.get("text-rotate").evaluate(x,{},T)+90;P=new Xl(l,e,u,c,p,i.vertical,h,f,d,j),a&&(C=new Xl(l,e,u,c,p,a,y,g,d,j))}if(n){var q=s.layout.get("icon-rotate").evaluate(x,{}),Z="none"!==s.layout.get("icon-text-fit"),G=Nl(n,q,S,Z),X=a?Nl(a,q,S,Z):void 0;z=new Xl(l,e,u,c,p,n,y,g,!1,q),M=4*G.length;var W=t.iconSizeData,K=null;"source"===W.kind?(K=[128*s.layout.get("icon-size").evaluate(x,{})])[0]>32640&&b(t.layerIds[0]+': Value for "icon-size" is >= 255. Reduce your "icon-size".'):"composite"===W.kind&&((K=[128*w.compositeIconSizes[0].evaluate(x,{},T),128*w.compositeIconSizes[1].evaluate(x,{},T)])[0]>32640||K[1]>32640)&&b(t.layerIds[0]+': Value for "icon-size" is >= 255. Reduce your "icon-size".'),t.addSymbols(t.icon,G,K,v,_,x,!1,e,k.lineStartIndex,k.lineLength,-1,T),R=t.icon.placedSymbolArray.length-1,X&&(D=4*X.length,t.addSymbols(t.icon,X,K,v,_,x,ml.vertical,e,k.lineStartIndex,k.lineLength,-1,T),F=t.icon.placedSymbolArray.length-1)}for(var H in i.horizontal){var J=i.horizontal[H];if(!A){U=uo(J.text);var Y=s.layout.get("text-rotate").evaluate(x,{},T);A=new Xl(l,e,u,c,p,J,h,f,d,Y)}var Q=1===J.positionedLines.length;if(L+=eu(t,e,J,o,s,d,x,m,k,i.vertical?ml.horizontal:ml.horizontalOnly,Q?Object.keys(i.horizontal):[H],O,R,w,T),Q)break}i.vertical&&(B+=eu(t,e,i.vertical,o,s,d,x,m,k,ml.vertical,["vertical"],O,F,w,T));var $=A?A.boxStartIndex:t.collisionBoxArray.length,tt=A?A.boxEndIndex:t.collisionBoxArray.length,et=P?P.boxStartIndex:t.collisionBoxArray.length,rt=P?P.boxEndIndex:t.collisionBoxArray.length,it=z?z.boxStartIndex:t.collisionBoxArray.length,nt=z?z.boxEndIndex:t.collisionBoxArray.length,ot=C?C.boxStartIndex:t.collisionBoxArray.length,at=C?C.boxEndIndex:t.collisionBoxArray.length,st=-1,lt=function(t,e){return t&&t.circleDiameter?Math.max(t.circleDiameter,e):e};st=lt(A,st),st=lt(P,st),st=lt(z,st);var ut=(st=lt(C,st))>-1?1:0;ut&&(st*=I/24),t.glyphOffsetArray.length>=pu.MAX_GLYPHS&&b("Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907"),void 0!==x.sortKey&&t.addToSortKeyRanges(t.symbolInstances.length,x.sortKey),t.symbolInstances.emplaceBack(e.x,e.y,O.right>=0?O.right:-1,O.center>=0?O.center:-1,O.left>=0?O.left:-1,O.vertical||-1,R,F,U,$,tt,et,rt,it,nt,ot,at,u,L,B,M,D,ut,0,h,V,N,st)}(t,p,s,r,i,n,h,t.layers[0],t.collisionBoxArray,e.index,e.sourceLayerIndex,t.index,g,w,I,l,v,S,E,d,e,o,u,c,a)};if("line"===A)for(var k=0,M=Vl(e.geometry,0,0,8192,8192);k<M.length;k+=1)for(var D=M[k],L=0,B=Ul(D,x,T,r.vertical||m,i,24,_,t.overscaling,8192);L<B.length;L+=1){var R=B[L];m&&iu(t,m.text,z,R)||C(D,R)}else if("line-center"===A)for(var F=0,O=e.geometry;F<O.length;F+=1){var U=O[F];if(U.length>1){var V=Ol(U,T,r.vertical||m,i,24,_);V&&C(U,V)}}else if("Polygon"===e.type)for(var N=0,j=Qa(e.geometry,0);N<j.length;N+=1){var q=j[N],Z=Hl(q,16);C(q[0],new Pl(Z.x,Z.y,0))}else if("LineString"===e.type)for(var G=0,X=e.geometry;G<X.length;G+=1){var W=X[G];C(W,new Pl(W[0].x,W[0].y,0))}else if("Point"===e.type)for(var K=0,H=e.geometry;K<H.length;K+=1)for(var J=0,Y=H[K];J<Y.length;J+=1){var Q=Y[J];C([Q],new Pl(Q.x,Q.y,0))}}(t,o,f,U,i,u,p,h,w,V,a)},v=0,x=t.features;v<x.length;v+=1)_();o&&t.generateCollisionDebugBuffers()},t.perspective=function(t,e,r,i,n){var o,a=1/Math.tan(e/2);return t[0]=a/r,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=a,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=-1,t[12]=0,t[13]=0,t[15]=0,null!=n&&n!==1/0?(t[10]=(n+i)*(o=1/(i-n)),t[14]=2*n*i*o):(t[10]=-1,t[14]=-2*i),t},t.pick=function(t,e){for(var r={},i=0;i<e.length;i++){var n=e[i];n in t&&(r[n]=t[n])}return r},t.plugin=rn,t.polygonIntersectsPolygon=Uo,t.postMapLoadEvent=nt,t.postTurnstileEvent=rt,t.potpack=pl,t.refProperties=["type","source","source-layer","minzoom","maxzoom","filter","layout"],t.register=Li,t.registerForPluginStateChange=function(t){return t({pluginStatus:Hi,pluginURL:Ji}),$i.on("pluginStateChange",t),t},t.rotate=function(t,e,r){var i=e[0],n=e[1],o=e[2],a=e[3],s=Math.sin(r),l=Math.cos(r);return t[0]=i*l+o*s,t[1]=n*l+a*s,t[2]=i*-s+o*l,t[3]=n*-s+a*l,t},t.rotateX=function(t,e,r){var i=Math.sin(r),n=Math.cos(r),o=e[4],a=e[5],s=e[6],l=e[7],u=e[8],c=e[9],p=e[10],h=e[11];return e!==t&&(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[4]=o*n+u*i,t[5]=a*n+c*i,t[6]=s*n+p*i,t[7]=l*n+h*i,t[8]=u*n-o*i,t[9]=c*n-a*i,t[10]=p*n-s*i,t[11]=h*n-l*i,t},t.rotateZ=function(t,e,r){var i=Math.sin(r),n=Math.cos(r),o=e[0],a=e[1],s=e[2],l=e[3],u=e[4],c=e[5],p=e[6],h=e[7];return e!==t&&(t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[0]=o*n+u*i,t[1]=a*n+c*i,t[2]=s*n+p*i,t[3]=l*n+h*i,t[4]=u*n-o*i,t[5]=c*n-a*i,t[6]=p*n-s*i,t[7]=h*n-l*i,t},t.scale=function(t,e,r){var i=r[0],n=r[1],o=r[2];return t[0]=e[0]*i,t[1]=e[1]*i,t[2]=e[2]*i,t[3]=e[3]*i,t[4]=e[4]*n,t[5]=e[5]*n,t[6]=e[6]*n,t[7]=e[7]*n,t[8]=e[8]*o,t[9]=e[9]*o,t[10]=e[10]*o,t[11]=e[11]*o,t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t},t.scale$1=function(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t[3]=e[3]*r,t},t.scale$2=function(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t},t.setCacheLimits=function(t,e){ot=t,at=e},t.setRTLTextPlugin=function(t,e,r){if(void 0===r&&(r=!1),"deferred"===Hi||"loading"===Hi||"loaded"===Hi)throw new Error("setRTLTextPlugin cannot be called multiple times.");Ji=R.resolveURL(t),Hi="deferred",Ki=e,Qi(),r||en()},t.sphericalToCartesian=function(t){var e=t[0],r=t[1],i=t[2];return r+=90,r*=Math.PI/180,i*=Math.PI/180,{x:e*Math.cos(r)*Math.sin(i),y:e*Math.sin(r)*Math.sin(i),z:e*Math.cos(i)}},t.sqrLen=function(t){var e=t[0],r=t[1];return e*e+r*r},t.styleSpec=Et,t.sub=function(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t},t.symbolSize=Dl,t.transformMat3=function(t,e,r){var i=e[0],n=e[1],o=e[2];return t[0]=i*r[0]+n*r[3]+o*r[6],t[1]=i*r[1]+n*r[4]+o*r[7],t[2]=i*r[2]+n*r[5]+o*r[8],t},t.transformMat4=aa,t.translate=function(t,e,r){var i,n,o,a,s,l,u,c,p,h,f,d,m=r[0],y=r[1],g=r[2];return e===t?(t[12]=e[0]*m+e[4]*y+e[8]*g+e[12],t[13]=e[1]*m+e[5]*y+e[9]*g+e[13],t[14]=e[2]*m+e[6]*y+e[10]*g+e[14],t[15]=e[3]*m+e[7]*y+e[11]*g+e[15]):(n=e[1],o=e[2],a=e[3],s=e[4],l=e[5],u=e[6],c=e[7],p=e[8],h=e[9],f=e[10],d=e[11],t[0]=i=e[0],t[1]=n,t[2]=o,t[3]=a,t[4]=s,t[5]=l,t[6]=u,t[7]=c,t[8]=p,t[9]=h,t[10]=f,t[11]=d,t[12]=i*m+s*y+p*g+e[12],t[13]=n*m+l*y+h*g+e[13],t[14]=o*m+u*y+f*g+e[14],t[15]=a*m+c*y+d*g+e[15]),t},t.triggerPluginCompletionEvent=Yi,t.uniqueId=h,t.validateCustomStyleLayer=function(t){var e=[],r=t.id;return void 0===r&&e.push({message:"layers."+r+': missing required property "id"'}),void 0===t.render&&e.push({message:"layers."+r+': missing required method "render"'}),t.renderingMode&&"2d"!==t.renderingMode&&"3d"!==t.renderingMode&&e.push({message:"layers."+r+': property "renderingMode" must be either "2d" or "3d"'}),e},t.validateLight=Ii,t.validateStyle=Ti,t.values=function(t){var e=[];for(var r in t)e.push(t[r]);return e},t.vectorTile=ms,t.version="1.10.1",t.warnOnce=b,t.webpSupported=O,t.window=self,t.wrap=u}),i(0,function(t){function e(t){var r=typeof t;if("number"===r||"boolean"===r||"string"===r||null==t)return JSON.stringify(t);if(Array.isArray(t)){for(var i="[",n=0,o=t;n<o.length;n+=1)i+=e(o[n])+",";return i+"]"}for(var a=Object.keys(t).sort(),s="{",l=0;l<a.length;l++)s+=JSON.stringify(a[l])+":"+e(t[a[l]])+",";return s+"}"}function r(r){for(var i="",n=0,o=t.refProperties;n<o.length;n+=1)i+="/"+e(r[o[n]]);return i}var i=function(t){this.keyCache={},t&&this.replace(t)};i.prototype.replace=function(t){this._layerConfigs={},this._layers={},this.update(t,[])},i.prototype.update=function(e,i){for(var n=this,o=0,a=e;o<a.length;o+=1){var s=a[o];this._layerConfigs[s.id]=s;var l=this._layers[s.id]=t.createStyleLayer(s);l._featureFilter=t.featureFilter(l.filter),this.keyCache[s.id]&&delete this.keyCache[s.id]}for(var u=0,c=i;u<c.length;u+=1){var p=c[u];delete this.keyCache[p],delete this._layerConfigs[p],delete this._layers[p]}this.familiesBySource={};for(var h=0,f=function(t,e){for(var i={},n=0;n<t.length;n++){var o=e&&e[t[n].id]||r(t[n]);e&&(e[t[n].id]=o);var a=i[o];a||(a=i[o]=[]),a.push(t[n])}var s=[];for(var l in i)s.push(i[l]);return s}(t.values(this._layerConfigs),this.keyCache);h<f.length;h+=1){var d=f[h].map(function(t){return n._layers[t.id]}),m=d[0];if("none"!==m.visibility){var y=m.source||"",g=this.familiesBySource[y];g||(g=this.familiesBySource[y]={});var _=m.sourceLayer||"_geojsonTileLayer",v=g[_];v||(v=g[_]=[]),v.push(d)}}};var n=function(e){var r={},i=[];for(var n in e){var o=e[n],a=r[n]={};for(var s in o){var l=o[+s];if(l&&0!==l.bitmap.width&&0!==l.bitmap.height){var u={x:0,y:0,w:l.bitmap.width+2,h:l.bitmap.height+2};i.push(u),a[s]={rect:u,metrics:l.metrics}}}}var c=t.potpack(i),p=new t.AlphaImage({width:c.w||1,height:c.h||1});for(var h in e){var f=e[h];for(var d in f){var m=f[+d];if(m&&0!==m.bitmap.width&&0!==m.bitmap.height){var y=r[h][d].rect;t.AlphaImage.copy(m.bitmap,p,{x:0,y:0},{x:y.x+1,y:y.y+1},m.bitmap)}}}this.image=p,this.positions=r};t.register("GlyphAtlas",n);var o=function(e){this.tileID=new t.OverscaledTileID(e.tileID.overscaledZ,e.tileID.wrap,e.tileID.canonical.z,e.tileID.canonical.x,e.tileID.canonical.y),this.uid=e.uid,this.zoom=e.zoom,this.pixelRatio=e.pixelRatio,this.tileSize=e.tileSize,this.source=e.source,this.overscaling=this.tileID.overscaleFactor(),this.showCollisionBoxes=e.showCollisionBoxes,this.collectResourceTiming=!!e.collectResourceTiming,this.returnDependencies=!!e.returnDependencies,this.promoteId=e.promoteId};function a(e,r,i){for(var n=new t.EvaluationParameters(r),o=0,a=e;o<a.length;o+=1)a[o].recalculate(n,i)}function s(e,r){var i=t.getArrayBuffer(e.request,function(e,i,n,o){e?r(e):i&&r(null,{vectorTile:new t.vectorTile.VectorTile(new t.pbf(i)),rawData:i,cacheControl:n,expires:o})});return function(){i.cancel(),r()}}o.prototype.parse=function(e,r,i,o,s){var l=this;this.status="parsing",this.data=e,this.collisionBoxArray=new t.CollisionBoxArray;var u=new t.DictionaryCoder(Object.keys(e.layers).sort()),c=new t.FeatureIndex(this.tileID,this.promoteId);c.bucketLayerIDs=[];var p,h,f,d,m={},y={featureIndex:c,iconDependencies:{},patternDependencies:{},glyphDependencies:{},availableImages:i},g=r.familiesBySource[this.source];for(var _ in g){var v=e.layers[_];if(v){1===v.version&&t.warnOnce('Vector tile source "'+this.source+'" layer "'+_+'" does not use vector tile spec v2 and therefore may have some rendering errors.');for(var x=u.encode(_),b=[],w=0;w<v.length;w++){var S=v.feature(w),T=c.getId(S,_);b.push({feature:S,id:T,index:w,sourceLayerIndex:x})}for(var I=0,E=g[_];I<E.length;I+=1){var A=E[I],z=A[0];z.minzoom&&this.zoom<Math.floor(z.minzoom)||z.maxzoom&&this.zoom>=z.maxzoom||"none"!==z.visibility&&(a(A,this.zoom,i),(m[z.id]=z.createBucket({index:c.bucketLayerIDs.length,layers:A,zoom:this.zoom,pixelRatio:this.pixelRatio,overscaling:this.overscaling,collisionBoxArray:this.collisionBoxArray,sourceLayerIndex:x,sourceID:this.source})).populate(b,y,this.tileID.canonical),c.bucketLayerIDs.push(A.map(function(t){return t.id})))}}}var P=t.mapObject(y.glyphDependencies,function(t){return Object.keys(t).map(Number)});Object.keys(P).length?o.send("getGlyphs",{uid:this.uid,stacks:P},function(t,e){p||(p=t,h=e,M.call(l))}):h={};var C=Object.keys(y.iconDependencies);C.length?o.send("getImages",{icons:C,source:this.source,tileID:this.tileID,type:"icons"},function(t,e){p||(p=t,f=e,M.call(l))}):f={};var k=Object.keys(y.patternDependencies);function M(){if(p)return s(p);if(h&&f&&d){var e=new n(h),r=new t.ImageAtlas(f,d);for(var o in m){var l=m[o];l instanceof t.SymbolBucket?(a(l.layers,this.zoom,i),t.performSymbolLayout(l,h,e.positions,f,r.iconPositions,this.showCollisionBoxes,this.tileID.canonical)):l.hasPattern&&(l instanceof t.LineBucket||l instanceof t.FillBucket||l instanceof t.FillExtrusionBucket)&&(a(l.layers,this.zoom,i),l.addFeatures(y,this.tileID.canonical,r.patternPositions))}this.status="done",s(null,{buckets:t.values(m).filter(function(t){return!t.isEmpty()}),featureIndex:c,collisionBoxArray:this.collisionBoxArray,glyphAtlasImage:e.image,imageAtlas:r,glyphMap:this.returnDependencies?h:null,iconMap:this.returnDependencies?f:null,glyphPositions:this.returnDependencies?e.positions:null})}}k.length?o.send("getImages",{icons:k,source:this.source,tileID:this.tileID,type:"patterns"},function(t,e){p||(p=t,d=e,M.call(l))}):d={},M.call(this)};var l=function(t,e,r,i){this.actor=t,this.layerIndex=e,this.availableImages=r,this.loadVectorData=i||s,this.loading={},this.loaded={}};l.prototype.loadTile=function(e,r){var i=this,n=e.uid;this.loading||(this.loading={});var a=!!(e&&e.request&&e.request.collectResourceTiming)&&new t.RequestPerformance(e.request),s=this.loading[n]=new o(e);s.abort=this.loadVectorData(e,function(e,o){if(delete i.loading[n],e||!o)return s.status="done",i.loaded[n]=s,r(e);var l=o.rawData,u={};o.expires&&(u.expires=o.expires),o.cacheControl&&(u.cacheControl=o.cacheControl);var c={};if(a){var p=a.finish();p&&(c.resourceTiming=JSON.parse(JSON.stringify(p)))}s.vectorTile=o.vectorTile,s.parse(o.vectorTile,i.layerIndex,i.availableImages,i.actor,function(e,i){if(e||!i)return r(e);r(null,t.extend({rawTileData:l.slice(0)},i,u,c))}),i.loaded=i.loaded||{},i.loaded[n]=s})},l.prototype.reloadTile=function(t,e){var r=this,i=this.loaded,n=t.uid,o=this;if(i&&i[n]){var a=i[n];a.showCollisionBoxes=t.showCollisionBoxes;var s=function(t,i){var n=a.reloadCallback;n&&(delete a.reloadCallback,a.parse(a.vectorTile,o.layerIndex,r.availableImages,o.actor,n)),e(t,i)};"parsing"===a.status?a.reloadCallback=s:"done"===a.status&&(a.vectorTile?a.parse(a.vectorTile,this.layerIndex,this.availableImages,this.actor,s):s())}},l.prototype.abortTile=function(t,e){var r=this.loading,i=t.uid;r&&r[i]&&r[i].abort&&(r[i].abort(),delete r[i]),e()},l.prototype.removeTile=function(t,e){var r=this.loaded,i=t.uid;r&&r[i]&&delete r[i],e()};var u=t.window.ImageBitmap,c=function(){this.loaded={}};function p(t,e){if(0!==t.length){h(t[0],e);for(var r=1;r<t.length;r++)h(t[r],!e)}}function h(t,e){for(var r=0,i=0,n=t.length,o=n-1;i<n;o=i++)r+=(t[i][0]-t[o][0])*(t[o][1]+t[i][1]);r>=0!=!!e&&t.reverse()}c.prototype.loadTile=function(e,r){var i=e.uid,n=e.encoding,o=e.rawImageData,a=u&&o instanceof u?this.getImageData(o):o,s=new t.DEMData(i,a,n);this.loaded=this.loaded||{},this.loaded[i]=s,r(null,s)},c.prototype.getImageData=function(e){this.offscreenCanvas&&this.offscreenCanvasContext||(this.offscreenCanvas=new OffscreenCanvas(e.width,e.height),this.offscreenCanvasContext=this.offscreenCanvas.getContext("2d")),this.offscreenCanvas.width=e.width,this.offscreenCanvas.height=e.height,this.offscreenCanvasContext.drawImage(e,0,0,e.width,e.height);var r=this.offscreenCanvasContext.getImageData(-1,-1,e.width+2,e.height+2);return this.offscreenCanvasContext.clearRect(0,0,this.offscreenCanvas.width,this.offscreenCanvas.height),new t.RGBAImage({width:r.width,height:r.height},r.data)},c.prototype.removeTile=function(t){var e=this.loaded,r=t.uid;e&&e[r]&&delete e[r]};var f=t.vectorTile.VectorTileFeature.prototype.toGeoJSON,d=function(e){this._feature=e,this.extent=t.EXTENT,this.type=e.type,this.properties=e.tags,"id"in e&&!isNaN(e.id)&&(this.id=parseInt(e.id,10))};d.prototype.loadGeometry=function(){if(1===this._feature.type){for(var e=[],r=0,i=this._feature.geometry;r<i.length;r+=1){var n=i[r];e.push([new t.Point$1(n[0],n[1])])}return e}for(var o=[],a=0,s=this._feature.geometry;a<s.length;a+=1){for(var l=[],u=0,c=s[a];u<c.length;u+=1){var p=c[u];l.push(new t.Point$1(p[0],p[1]))}o.push(l)}return o},d.prototype.toGeoJSON=function(t,e,r){return f.call(this,t,e,r)};var m=function(e){this.layers={_geojsonTileLayer:this},this.name="_geojsonTileLayer",this.extent=t.EXTENT,this.length=e.length,this._features=e};m.prototype.feature=function(t){return new d(this._features[t])};var y=t.vectorTile.VectorTileFeature,g=_;function _(t,e){this.options=e||{},this.features=t,this.length=t.length}function v(t,e){this.id="number"==typeof t.id?t.id:void 0,this.type=t.type,this.rawGeometry=1===t.type?[t.geometry]:t.geometry,this.properties=t.tags,this.extent=e||4096}_.prototype.feature=function(t){return new v(this.features[t],this.options.extent)},v.prototype.loadGeometry=function(){var e=this.rawGeometry;this.geometry=[];for(var r=0;r<e.length;r++){for(var i=e[r],n=[],o=0;o<i.length;o++)n.push(new t.Point$1(i[o][0],i[o][1]));this.geometry.push(n)}return this.geometry},v.prototype.bbox=function(){this.geometry||this.loadGeometry();for(var t=this.geometry,e=1/0,r=-1/0,i=1/0,n=-1/0,o=0;o<t.length;o++)for(var a=t[o],s=0;s<a.length;s++){var l=a[s];e=Math.min(e,l.x),r=Math.max(r,l.x),i=Math.min(i,l.y),n=Math.max(n,l.y)}return[e,i,r,n]},v.prototype.toGeoJSON=y.prototype.toGeoJSON;var x=w,b=g;function w(e){var r=new t.pbf;return function(t,e){for(var r in t.layers)e.writeMessage(3,S,t.layers[r])}(e,r),r.finish()}function S(t,e){var r;e.writeVarintField(15,t.version||1),e.writeStringField(1,t.name||""),e.writeVarintField(5,t.extent||4096);var i={keys:[],values:[],keycache:{},valuecache:{}};for(r=0;r<t.length;r++)i.feature=t.feature(r),e.writeMessage(2,T,i);var n=i.keys;for(r=0;r<n.length;r++)e.writeStringField(3,n[r]);var o=i.values;for(r=0;r<o.length;r++)e.writeMessage(4,P,o[r])}function T(t,e){var r=t.feature;void 0!==r.id&&e.writeVarintField(1,r.id),e.writeMessage(2,I,t),e.writeVarintField(3,r.type),e.writeMessage(4,z,r)}function I(t,e){var r=t.feature,i=t.keys,n=t.values,o=t.keycache,a=t.valuecache;for(var s in r.properties){var l=o[s];void 0===l&&(i.push(s),o[s]=l=i.length-1),e.writeVarint(l);var u=r.properties[s],c=typeof u;"string"!==c&&"boolean"!==c&&"number"!==c&&(u=JSON.stringify(u));var p=c+":"+u,h=a[p];void 0===h&&(n.push(u),a[p]=h=n.length-1),e.writeVarint(h)}}function E(t,e){return(e<<3)+(7&t)}function A(t){return t<<1^t>>31}function z(t,e){for(var r=t.loadGeometry(),i=t.type,n=0,o=0,a=r.length,s=0;s<a;s++){var l=r[s],u=1;1===i&&(u=l.length),e.writeVarint(E(1,u));for(var c=3===i?l.length-1:l.length,p=0;p<c;p++){1===p&&1!==i&&e.writeVarint(E(2,c-1));var h=l[p].x-n,f=l[p].y-o;e.writeVarint(A(h)),e.writeVarint(A(f)),n+=h,o+=f}3===i&&e.writeVarint(E(7,1))}}function P(t,e){var r=typeof t;"string"===r?e.writeStringField(1,t):"boolean"===r?e.writeBooleanField(7,t):"number"===r&&(t%1!=0?e.writeDoubleField(3,t):t<0?e.writeSVarintField(6,t):e.writeVarintField(5,t))}function C(t,e,r,i){k(t,r,i),k(e,2*r,2*i),k(e,2*r+1,2*i+1)}function k(t,e,r){var i=t[e];t[e]=t[r],t[r]=i}function M(t,e,r,i){var n=t-r,o=e-i;return n*n+o*o}x.fromVectorTileJs=w,x.fromGeojsonVt=function(t,e){e=e||{};var r={};for(var i in t)r[i]=new g(t[i].features,e),r[i].name=i,r[i].version=e.version,r[i].extent=e.extent;return w({layers:r})},x.GeoJSONWrapper=b;var D=function(t){return t[0]},L=function(t){return t[1]},B=function(t,e,r,i,n){void 0===e&&(e=D),void 0===r&&(r=L),void 0===i&&(i=64),void 0===n&&(n=Float64Array),this.nodeSize=i,this.points=t;for(var o=t.length<65536?Uint16Array:Uint32Array,a=this.ids=new o(t.length),s=this.coords=new n(2*t.length),l=0;l<t.length;l++)a[l]=l,s[2*l]=e(t[l]),s[2*l+1]=r(t[l]);!function t(e,r,i,n,o,a){if(!(o-n<=i)){var s=n+o>>1;!function t(e,r,i,n,o,a){for(;o>n;){if(o-n>600){var s=o-n+1,l=i-n+1,u=Math.log(s),c=.5*Math.exp(2*u/3),p=.5*Math.sqrt(u*c*(s-c)/s)*(l-s/2<0?-1:1);t(e,r,i,Math.max(n,Math.floor(i-l*c/s+p)),Math.min(o,Math.floor(i+(s-l)*c/s+p)),a)}var h=r[2*i+a],f=n,d=o;for(C(e,r,n,i),r[2*o+a]>h&&C(e,r,n,o);f<d;){for(C(e,r,f,d),f++,d--;r[2*f+a]<h;)f++;for(;r[2*d+a]>h;)d--}r[2*n+a]===h?C(e,r,n,d):C(e,r,++d,o),d<=i&&(n=d+1),i<=d&&(o=d-1)}}(e,r,s,n,o,a%2),t(e,r,i,n,s-1,a+1),t(e,r,i,s+1,o,a+1)}}(a,s,i,0,a.length-1,0)};B.prototype.range=function(t,e,r,i){return function(t,e,r,i,n,o,a){for(var s,l,u=[0,t.length-1,0],c=[];u.length;){var p=u.pop(),h=u.pop(),f=u.pop();if(h-f<=a)for(var d=f;d<=h;d++)l=e[2*d+1],(s=e[2*d])>=r&&s<=n&&l>=i&&l<=o&&c.push(t[d]);else{var m=Math.floor((f+h)/2);l=e[2*m+1],(s=e[2*m])>=r&&s<=n&&l>=i&&l<=o&&c.push(t[m]);var y=(p+1)%2;(0===p?r<=s:i<=l)&&(u.push(f),u.push(m-1),u.push(y)),(0===p?n>=s:o>=l)&&(u.push(m+1),u.push(h),u.push(y))}}return c}(this.ids,this.coords,t,e,r,i,this.nodeSize)},B.prototype.within=function(t,e,r){return function(t,e,r,i,n,o){for(var a=[0,t.length-1,0],s=[],l=n*n;a.length;){var u=a.pop(),c=a.pop(),p=a.pop();if(c-p<=o)for(var h=p;h<=c;h++)M(e[2*h],e[2*h+1],r,i)<=l&&s.push(t[h]);else{var f=Math.floor((p+c)/2),d=e[2*f],m=e[2*f+1];M(d,m,r,i)<=l&&s.push(t[f]);var y=(u+1)%2;(0===u?r-n<=d:i-n<=m)&&(a.push(p),a.push(f-1),a.push(y)),(0===u?r+n>=d:i+n>=m)&&(a.push(f+1),a.push(c),a.push(y))}}return s}(this.ids,this.coords,t,e,r,this.nodeSize)};var R={minZoom:0,maxZoom:16,radius:40,extent:512,nodeSize:64,log:!1,generateId:!1,reduce:null,map:function(t){return t}},F=function(t){this.options=Z(Object.create(R),t),this.trees=new Array(this.options.maxZoom+1)};function O(t,e,r,i,n){return{x:t,y:e,zoom:1/0,id:r,parentId:-1,numPoints:i,properties:n}}function U(t,e){var r=t.geometry.coordinates,i=r[1];return{x:j(r[0]),y:q(i),zoom:1/0,index:e,parentId:-1}}function V(t){return{type:"Feature",id:t.id,properties:N(t),geometry:{type:"Point",coordinates:[(i=t.x,360*(i-.5)),(e=t.y,r=(180-360*e)*Math.PI/180,360*Math.atan(Math.exp(r))/Math.PI-90)]}};var e,r,i}function N(t){var e=t.numPoints,r=e>=1e4?Math.round(e/1e3)+"k":e>=1e3?Math.round(e/100)/10+"k":e;return Z(Z({},t.properties),{cluster:!0,cluster_id:t.id,point_count:e,point_count_abbreviated:r})}function j(t){return t/360+.5}function q(t){var e=Math.sin(t*Math.PI/180),r=.5-.25*Math.log((1+e)/(1-e))/Math.PI;return r<0?0:r>1?1:r}function Z(t,e){for(var r in e)t[r]=e[r];return t}function G(t){return t.x}function X(t){return t.y}function W(t,e,r,i,n,o){var a=n-r,s=o-i;if(0!==a||0!==s){var l=((t-r)*a+(e-i)*s)/(a*a+s*s);l>1?(r=n,i=o):l>0&&(r+=a*l,i+=s*l)}return(a=t-r)*a+(s=e-i)*s}function K(t,e,r,i){var n={id:void 0===t?null:t,type:e,geometry:r,tags:i,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};return function(t){var e=t.geometry,r=t.type;if("Point"===r||"MultiPoint"===r||"LineString"===r)H(t,e);else if("Polygon"===r||"MultiLineString"===r)for(var i=0;i<e.length;i++)H(t,e[i]);else if("MultiPolygon"===r)for(i=0;i<e.length;i++)for(var n=0;n<e[i].length;n++)H(t,e[i][n])}(n),n}function H(t,e){for(var r=0;r<e.length;r+=3)t.minX=Math.min(t.minX,e[r]),t.minY=Math.min(t.minY,e[r+1]),t.maxX=Math.max(t.maxX,e[r]),t.maxY=Math.max(t.maxY,e[r+1])}function J(t,e,r,i){if(e.geometry){var n=e.geometry.coordinates,o=e.geometry.type,a=Math.pow(r.tolerance/((1<<r.maxZoom)*r.extent),2),s=[],l=e.id;if(r.promoteId?l=e.properties[r.promoteId]:r.generateId&&(l=i||0),"Point"===o)Y(n,s);else if("MultiPoint"===o)for(var u=0;u<n.length;u++)Y(n[u],s);else if("LineString"===o)Q(n,s,a,!1);else if("MultiLineString"===o){if(r.lineMetrics){for(u=0;u<n.length;u++)Q(n[u],s=[],a,!1),t.push(K(l,"LineString",s,e.properties));return}$(n,s,a,!1)}else if("Polygon"===o)$(n,s,a,!0);else{if("MultiPolygon"!==o){if("GeometryCollection"===o){for(u=0;u<e.geometry.geometries.length;u++)J(t,{id:l,geometry:e.geometry.geometries[u],properties:e.properties},r,i);return}throw new Error("Input data is not a valid GeoJSON object.")}for(u=0;u<n.length;u++){var c=[];$(n[u],c,a,!0),s.push(c)}}t.push(K(l,o,s,e.properties))}}function Y(t,e){e.push(tt(t[0])),e.push(et(t[1])),e.push(0)}function Q(t,e,r,i){for(var n,o,a=0,s=0;s<t.length;s++){var l=tt(t[s][0]),u=et(t[s][1]);e.push(l),e.push(u),e.push(0),s>0&&(a+=i?(n*u-l*o)/2:Math.sqrt(Math.pow(l-n,2)+Math.pow(u-o,2))),n=l,o=u}var c=e.length-3;e[2]=1,function t(e,r,i,n){for(var o,a=n,s=i-r>>1,l=i-r,u=e[r],c=e[r+1],p=e[i],h=e[i+1],f=r+3;f<i;f+=3){var d=W(e[f],e[f+1],u,c,p,h);if(d>a)o=f,a=d;else if(d===a){var m=Math.abs(f-s);m<l&&(o=f,l=m)}}a>n&&(o-r>3&&t(e,r,o,n),e[o+2]=a,i-o>3&&t(e,o,i,n))}(e,0,c,r),e[c+2]=1,e.size=Math.abs(a),e.start=0,e.end=e.size}function $(t,e,r,i){for(var n=0;n<t.length;n++){var o=[];Q(t[n],o,r,i),e.push(o)}}function tt(t){return t/360+.5}function et(t){var e=Math.sin(t*Math.PI/180),r=.5-.25*Math.log((1+e)/(1-e))/Math.PI;return r<0?0:r>1?1:r}function rt(t,e,r,i,n,o,a,s){if(i/=e,o>=(r/=e)&&a<i)return t;if(a<r||o>=i)return null;for(var l=[],u=0;u<t.length;u++){var c=t[u],p=c.geometry,h=c.type,f=0===n?c.minX:c.minY,d=0===n?c.maxX:c.maxY;if(f>=r&&d<i)l.push(c);else if(!(d<r||f>=i)){var m=[];if("Point"===h||"MultiPoint"===h)it(p,m,r,i,n);else if("LineString"===h)nt(p,m,r,i,n,!1,s.lineMetrics);else if("MultiLineString"===h)at(p,m,r,i,n,!1);else if("Polygon"===h)at(p,m,r,i,n,!0);else if("MultiPolygon"===h)for(var y=0;y<p.length;y++){var g=[];at(p[y],g,r,i,n,!0),g.length&&m.push(g)}if(m.length){if(s.lineMetrics&&"LineString"===h){for(y=0;y<m.length;y++)l.push(K(c.id,h,m[y],c.tags));continue}"LineString"!==h&&"MultiLineString"!==h||(1===m.length?(h="LineString",m=m[0]):h="MultiLineString"),"Point"!==h&&"MultiPoint"!==h||(h=3===m.length?"Point":"MultiPoint"),l.push(K(c.id,h,m,c.tags))}}}return l.length?l:null}function it(t,e,r,i,n){for(var o=0;o<t.length;o+=3){var a=t[o+n];a>=r&&a<=i&&(e.push(t[o]),e.push(t[o+1]),e.push(t[o+2]))}}function nt(t,e,r,i,n,o,a){for(var s,l,u=ot(t),c=0===n?lt:ut,p=t.start,h=0;h<t.length-3;h+=3){var f=t[h],d=t[h+1],m=t[h+2],y=t[h+3],g=t[h+4],_=0===n?f:d,v=0===n?y:g,x=!1;a&&(s=Math.sqrt(Math.pow(f-y,2)+Math.pow(d-g,2))),_<r?v>r&&(l=c(u,f,d,y,g,r),a&&(u.start=p+s*l)):_>i?v<i&&(l=c(u,f,d,y,g,i),a&&(u.start=p+s*l)):st(u,f,d,m),v<r&&_>=r&&(l=c(u,f,d,y,g,r),x=!0),v>i&&_<=i&&(l=c(u,f,d,y,g,i),x=!0),!o&&x&&(a&&(u.end=p+s*l),e.push(u),u=ot(t)),a&&(p+=s)}var b=t.length-3;f=t[b],d=t[b+1],m=t[b+2],(_=0===n?f:d)>=r&&_<=i&&st(u,f,d,m),b=u.length-3,o&&b>=3&&(u[b]!==u[0]||u[b+1]!==u[1])&&st(u,u[0],u[1],u[2]),u.length&&e.push(u)}function ot(t){var e=[];return e.size=t.size,e.start=t.start,e.end=t.end,e}function at(t,e,r,i,n,o){for(var a=0;a<t.length;a++)nt(t[a],e,r,i,n,o,!1)}function st(t,e,r,i){t.push(e),t.push(r),t.push(i)}function lt(t,e,r,i,n,o){var a=(o-e)/(i-e);return t.push(o),t.push(r+(n-r)*a),t.push(1),a}function ut(t,e,r,i,n,o){var a=(o-r)/(n-r);return t.push(e+(i-e)*a),t.push(o),t.push(1),a}function ct(t,e){for(var r=[],i=0;i<t.length;i++){var n,o=t[i],a=o.type;if("Point"===a||"MultiPoint"===a||"LineString"===a)n=pt(o.geometry,e);else if("MultiLineString"===a||"Polygon"===a){n=[];for(var s=0;s<o.geometry.length;s++)n.push(pt(o.geometry[s],e))}else if("MultiPolygon"===a)for(n=[],s=0;s<o.geometry.length;s++){for(var l=[],u=0;u<o.geometry[s].length;u++)l.push(pt(o.geometry[s][u],e));n.push(l)}r.push(K(o.id,a,n,o.tags))}return r}function pt(t,e){var r=[];r.size=t.size,void 0!==t.start&&(r.start=t.start,r.end=t.end);for(var i=0;i<t.length;i+=3)r.push(t[i]+e,t[i+1],t[i+2]);return r}function ht(t,e){if(t.transformed)return t;var r,i,n,o=1<<t.z,a=t.x,s=t.y;for(r=0;r<t.features.length;r++){var l=t.features[r],u=l.geometry,c=l.type;if(l.geometry=[],1===c)for(i=0;i<u.length;i+=2)l.geometry.push(ft(u[i],u[i+1],e,o,a,s));else for(i=0;i<u.length;i++){var p=[];for(n=0;n<u[i].length;n+=2)p.push(ft(u[i][n],u[i][n+1],e,o,a,s));l.geometry.push(p)}}return t.transformed=!0,t}function ft(t,e,r,i,n,o){return[Math.round(r*(t*i-n)),Math.round(r*(e*i-o))]}function dt(t,e,r,i,n){for(var o=e===n.maxZoom?0:n.tolerance/((1<<e)*n.extent),a={features:[],numPoints:0,numSimplified:0,numFeatures:0,source:null,x:r,y:i,z:e,transformed:!1,minX:2,minY:1,maxX:-1,maxY:0},s=0;s<t.length;s++){a.numFeatures++,mt(a,t[s],o,n);var l=t[s].minX,u=t[s].minY,c=t[s].maxX,p=t[s].maxY;l<a.minX&&(a.minX=l),u<a.minY&&(a.minY=u),c>a.maxX&&(a.maxX=c),p>a.maxY&&(a.maxY=p)}return a}function mt(t,e,r,i){var n=e.geometry,o=e.type,a=[];if("Point"===o||"MultiPoint"===o)for(var s=0;s<n.length;s+=3)a.push(n[s]),a.push(n[s+1]),t.numPoints++,t.numSimplified++;else if("LineString"===o)yt(a,n,t,r,!1,!1);else if("MultiLineString"===o||"Polygon"===o)for(s=0;s<n.length;s++)yt(a,n[s],t,r,"Polygon"===o,0===s);else if("MultiPolygon"===o)for(var l=0;l<n.length;l++){var u=n[l];for(s=0;s<u.length;s++)yt(a,u[s],t,r,!0,0===s)}if(a.length){var c=e.tags||null;if("LineString"===o&&i.lineMetrics){for(var p in c={},e.tags)c[p]=e.tags[p];c.mapbox_clip_start=n.start/n.size,c.mapbox_clip_end=n.end/n.size}var h={geometry:a,type:"Polygon"===o||"MultiPolygon"===o?3:"LineString"===o||"MultiLineString"===o?2:1,tags:c};null!==e.id&&(h.id=e.id),t.features.push(h)}}function yt(t,e,r,i,n,o){var a=i*i;if(i>0&&e.size<(n?a:i))r.numPoints+=e.length/3;else{for(var s=[],l=0;l<e.length;l+=3)(0===i||e[l+2]>a)&&(r.numSimplified++,s.push(e[l]),s.push(e[l+1])),r.numPoints++;n&&function(t,e){for(var r=0,i=0,n=t.length,o=n-2;i<n;o=i,i+=2)r+=(t[i]-t[o])*(t[i+1]+t[o+1]);if(r>0===e)for(i=0,n=t.length;i<n/2;i+=2){var a=t[i],s=t[i+1];t[i]=t[n-2-i],t[i+1]=t[n-1-i],t[n-2-i]=a,t[n-1-i]=s}}(s,o),t.push(s)}}function gt(t,e){var r=(e=this.options=function(t,e){for(var r in e)t[r]=e[r];return t}(Object.create(this.options),e)).debug;if(r&&console.time("preprocess data"),e.maxZoom<0||e.maxZoom>24)throw new Error("maxZoom should be in the 0-24 range");if(e.promoteId&&e.generateId)throw new Error("promoteId and generateId cannot be used together.");var i=function(t,e){var r=[];if("FeatureCollection"===t.type)for(var i=0;i<t.features.length;i++)J(r,t.features[i],e,i);else J(r,"Feature"===t.type?t:{geometry:t},e);return r}(t,e);this.tiles={},this.tileCoords=[],r&&(console.timeEnd("preprocess data"),console.log("index: maxZoom: %d, maxPoints: %d",e.indexMaxZoom,e.indexMaxPoints),console.time("generate tiles"),this.stats={},this.total=0),(i=function(t,e){var r=e.buffer/e.extent,i=t,n=rt(t,1,-1-r,r,0,-1,2,e),o=rt(t,1,1-r,2+r,0,-1,2,e);return(n||o)&&(i=rt(t,1,-r,1+r,0,-1,2,e)||[],n&&(i=ct(n,1).concat(i)),o&&(i=i.concat(ct(o,-1)))),i}(i,e)).length&&this.splitTile(i,0,0,0),r&&(i.length&&console.log("features: %d, points: %d",this.tiles[0].numFeatures,this.tiles[0].numPoints),console.timeEnd("generate tiles"),console.log("tiles generated:",this.total,JSON.stringify(this.stats)))}function _t(t,e,r){return 32*((1<<t)*r+e)+t}function vt(t,e){var r=t.tileID.canonical;if(!this._geoJSONIndex)return e(null,null);var i=this._geoJSONIndex.getTile(r.z,r.x,r.y);if(!i)return e(null,null);var n=new m(i.features),o=x(n);0===o.byteOffset&&o.byteLength===o.buffer.byteLength||(o=new Uint8Array(o)),e(null,{vectorTile:n,rawData:o.buffer})}F.prototype.load=function(t){var e=this.options,r=e.log,i=e.minZoom,n=e.maxZoom,o=e.nodeSize;r&&console.time("total time");var a="prepare "+t.length+" points";r&&console.time(a),this.points=t;for(var s=[],l=0;l<t.length;l++)t[l].geometry&&s.push(U(t[l],l));this.trees[n+1]=new B(s,G,X,o,Float32Array),r&&console.timeEnd(a);for(var u=n;u>=i;u--){var c=+Date.now();s=this._cluster(s,u),this.trees[u]=new B(s,G,X,o,Float32Array),r&&console.log("z%d: %d clusters in %dms",u,s.length,+Date.now()-c)}return r&&console.timeEnd("total time"),this},F.prototype.getClusters=function(t,e){var r=((t[0]+180)%360+360)%360-180,i=Math.max(-90,Math.min(90,t[1])),n=180===t[2]?180:((t[2]+180)%360+360)%360-180,o=Math.max(-90,Math.min(90,t[3]));if(t[2]-t[0]>=360)r=-180,n=180;else if(r>n){var a=this.getClusters([r,i,180,o],e),s=this.getClusters([-180,i,n,o],e);return a.concat(s)}for(var l=this.trees[this._limitZoom(e)],u=[],c=0,p=l.range(j(r),q(o),j(n),q(i));c<p.length;c+=1){var h=l.points[p[c]];u.push(h.numPoints?V(h):this.points[h.index])}return u},F.prototype.getChildren=function(t){var e=this._getOriginId(t),r=this._getOriginZoom(t),i="No cluster with the specified id.",n=this.trees[r];if(!n)throw new Error(i);var o=n.points[e];if(!o)throw new Error(i);for(var a=this.options.radius/(this.options.extent*Math.pow(2,r-1)),s=[],l=0,u=n.within(o.x,o.y,a);l<u.length;l+=1){var c=n.points[u[l]];c.parentId===t&&s.push(c.numPoints?V(c):this.points[c.index])}if(0===s.length)throw new Error(i);return s},F.prototype.getLeaves=function(t,e,r){var i=[];return this._appendLeaves(i,t,e=e||10,r=r||0,0),i},F.prototype.getTile=function(t,e,r){var i=this.trees[this._limitZoom(t)],n=Math.pow(2,t),o=this.options,a=o.radius/o.extent,s=(r-a)/n,l=(r+1+a)/n,u={features:[]};return this._addTileFeatures(i.range((e-a)/n,s,(e+1+a)/n,l),i.points,e,r,n,u),0===e&&this._addTileFeatures(i.range(1-a/n,s,1,l),i.points,n,r,n,u),e===n-1&&this._addTileFeatures(i.range(0,s,a/n,l),i.points,-1,r,n,u),u.features.length?u:null},F.prototype.getClusterExpansionZoom=function(t){for(var e=this._getOriginZoom(t)-1;e<=this.options.maxZoom;){var r=this.getChildren(t);if(e++,1!==r.length)break;t=r[0].properties.cluster_id}return e},F.prototype._appendLeaves=function(t,e,r,i,n){for(var o=0,a=this.getChildren(e);o<a.length;o+=1){var s=a[o],l=s.properties;if(l&&l.cluster?n+l.point_count<=i?n+=l.point_count:n=this._appendLeaves(t,l.cluster_id,r,i,n):n<i?n++:t.push(s),t.length===r)break}return n},F.prototype._addTileFeatures=function(t,e,r,i,n,o){for(var a=0,s=t;a<s.length;a+=1){var l=e[s[a]],u=l.numPoints,c={type:1,geometry:[[Math.round(this.options.extent*(l.x*n-r)),Math.round(this.options.extent*(l.y*n-i))]],tags:u?N(l):this.points[l.index].properties},p=void 0;u?p=l.id:this.options.generateId?p=l.index:this.points[l.index].id&&(p=this.points[l.index].id),void 0!==p&&(c.id=p),o.features.push(c)}},F.prototype._limitZoom=function(t){return Math.max(this.options.minZoom,Math.min(t,this.options.maxZoom+1))},F.prototype._cluster=function(t,e){for(var r=[],i=this.options,n=i.reduce,o=i.radius/(i.extent*Math.pow(2,e)),a=0;a<t.length;a++){var s=t[a];if(!(s.zoom<=e)){s.zoom=e;for(var l=this.trees[e+1],u=l.within(s.x,s.y,o),c=s.numPoints||1,p=s.x*c,h=s.y*c,f=n&&c>1?this._map(s,!0):null,d=(a<<5)+(e+1)+this.points.length,m=0,y=u;m<y.length;m+=1){var g=l.points[y[m]];if(!(g.zoom<=e)){g.zoom=e;var _=g.numPoints||1;p+=g.x*_,h+=g.y*_,c+=_,g.parentId=d,n&&(f||(f=this._map(s,!0)),n(f,this._map(g)))}}1===c?r.push(s):(s.parentId=d,r.push(O(p/c,h/c,d,c,f)))}}return r},F.prototype._getOriginId=function(t){return t-this.points.length>>5},F.prototype._getOriginZoom=function(t){return(t-this.points.length)%32},F.prototype._map=function(t,e){if(t.numPoints)return e?Z({},t.properties):t.properties;var r=this.points[t.index].properties,i=this.options.map(r);return e&&i===r?Z({},i):i},gt.prototype.options={maxZoom:14,indexMaxZoom:5,indexMaxPoints:1e5,tolerance:3,extent:4096,buffer:64,lineMetrics:!1,promoteId:null,generateId:!1,debug:0},gt.prototype.splitTile=function(t,e,r,i,n,o,a){for(var s=[t,e,r,i],l=this.options,u=l.debug;s.length;){i=s.pop(),r=s.pop(),e=s.pop(),t=s.pop();var c=1<<e,p=_t(e,r,i),h=this.tiles[p];if(!h&&(u>1&&console.time("creation"),h=this.tiles[p]=dt(t,e,r,i,l),this.tileCoords.push({z:e,x:r,y:i}),u)){u>1&&(console.log("tile z%d-%d-%d (features: %d, points: %d, simplified: %d)",e,r,i,h.numFeatures,h.numPoints,h.numSimplified),console.timeEnd("creation"));var f="z"+e;this.stats[f]=(this.stats[f]||0)+1,this.total++}if(h.source=t,n){if(e===l.maxZoom||e===n)continue;var d=1<<n-e;if(r!==Math.floor(o/d)||i!==Math.floor(a/d))continue}else if(e===l.indexMaxZoom||h.numPoints<=l.indexMaxPoints)continue;if(h.source=null,0!==t.length){u>1&&console.time("clipping");var m,y,g,_,v,x,b=.5*l.buffer/l.extent,w=.5-b,S=.5+b,T=1+b;m=y=g=_=null,v=rt(t,c,r-b,r+S,0,h.minX,h.maxX,l),x=rt(t,c,r+w,r+T,0,h.minX,h.maxX,l),t=null,v&&(m=rt(v,c,i-b,i+S,1,h.minY,h.maxY,l),y=rt(v,c,i+w,i+T,1,h.minY,h.maxY,l),v=null),x&&(g=rt(x,c,i-b,i+S,1,h.minY,h.maxY,l),_=rt(x,c,i+w,i+T,1,h.minY,h.maxY,l),x=null),u>1&&console.timeEnd("clipping"),s.push(m||[],e+1,2*r,2*i),s.push(y||[],e+1,2*r,2*i+1),s.push(g||[],e+1,2*r+1,2*i),s.push(_||[],e+1,2*r+1,2*i+1)}}},gt.prototype.getTile=function(t,e,r){var i=this.options,n=i.extent,o=i.debug;if(t<0||t>24)return null;var a=1<<t,s=_t(t,e=(e%a+a)%a,r);if(this.tiles[s])return ht(this.tiles[s],n);o>1&&console.log("drilling down to z%d-%d-%d",t,e,r);for(var l,u=t,c=e,p=r;!l&&u>0;)u--,c=Math.floor(c/2),p=Math.floor(p/2),l=this.tiles[_t(u,c,p)];return l&&l.source?(o>1&&console.log("found parent tile z%d-%d-%d",u,c,p),o>1&&console.time("drilling down"),this.splitTile(l.source,u,c,p,t,e,r),o>1&&console.timeEnd("drilling down"),this.tiles[s]?ht(this.tiles[s],n):null):null};var xt=function(e){function r(t,r,i,n){e.call(this,t,r,i,vt),n&&(this.loadGeoJSON=n)}return e&&(r.__proto__=e),(r.prototype=Object.create(e&&e.prototype)).constructor=r,r.prototype.loadData=function(t,e){this._pendingCallback&&this._pendingCallback(null,{abandoned:!0}),this._pendingCallback=e,this._pendingLoadDataParams=t,this._state&&"Idle"!==this._state?this._state="NeedsLoadData":(this._state="Coalescing",this._loadData())},r.prototype._loadData=function(){var e=this;if(this._pendingCallback&&this._pendingLoadDataParams){var r=this._pendingCallback,i=this._pendingLoadDataParams;delete this._pendingCallback,delete this._pendingLoadDataParams;var n=!!(i&&i.request&&i.request.collectResourceTiming)&&new t.RequestPerformance(i.request);this.loadGeoJSON(i,function(o,a){if(o||!a)return r(o);if("object"!=typeof a)return r(new Error("Input data given to '"+i.source+"' is not a valid GeoJSON object."));!function t(e,r){var i,n=e&&e.type;if("FeatureCollection"===n)for(i=0;i<e.features.length;i++)t(e.features[i],r);else if("GeometryCollection"===n)for(i=0;i<e.geometries.length;i++)t(e.geometries[i],r);else if("Feature"===n)t(e.geometry,r);else if("Polygon"===n)p(e.coordinates,r);else if("MultiPolygon"===n)for(i=0;i<e.coordinates.length;i++)p(e.coordinates[i],r);return e}(a,!0);try{e._geoJSONIndex=i.cluster?new F(function(e){var r=e.superclusterOptions,i=e.clusterProperties;if(!i||!r)return r;for(var n={},o={},a={accumulated:null,zoom:0},s={properties:null},l=Object.keys(i),u=0,c=l;u<c.length;u+=1){var p=c[u],h=i[p],f=h[0],d=t.createExpression(h[1]),m=t.createExpression("string"==typeof f?[f,["accumulated"],["get",p]]:f);n[p]=d.value,o[p]=m.value}return r.map=function(t){s.properties=t;for(var e={},r=0,i=l;r<i.length;r+=1){var o=i[r];e[o]=n[o].evaluate(a,s)}return e},r.reduce=function(t,e){s.properties=e;for(var r=0,i=l;r<i.length;r+=1){var n=i[r];a.accumulated=t[n],t[n]=o[n].evaluate(a,s)}},r}(i)).load(a.features):new gt(a,i.geojsonVtOptions)}catch(o){return r(o)}e.loaded={};var s={};if(n){var l=n.finish();l&&(s.resourceTiming={},s.resourceTiming[i.source]=JSON.parse(JSON.stringify(l)))}r(null,s)})}},r.prototype.coalesce=function(){"Coalescing"===this._state?this._state="Idle":"NeedsLoadData"===this._state&&(this._state="Coalescing",this._loadData())},r.prototype.reloadTile=function(t,r){var i=this.loaded;return i&&i[t.uid]?e.prototype.reloadTile.call(this,t,r):this.loadTile(t,r)},r.prototype.loadGeoJSON=function(e,r){if(e.request)t.getJSON(e.request,r);else{if("string"!=typeof e.data)return r(new Error("Input data given to '"+e.source+"' is not a valid GeoJSON object."));try{return r(null,JSON.parse(e.data))}catch(t){return r(new Error("Input data given to '"+e.source+"' is not a valid GeoJSON object."))}}},r.prototype.removeSource=function(t,e){this._pendingCallback&&this._pendingCallback(null,{abandoned:!0}),e()},r.prototype.getClusterExpansionZoom=function(t,e){try{e(null,this._geoJSONIndex.getClusterExpansionZoom(t.clusterId))}catch(t){e(t)}},r.prototype.getClusterChildren=function(t,e){try{e(null,this._geoJSONIndex.getChildren(t.clusterId))}catch(t){e(t)}},r.prototype.getClusterLeaves=function(t,e){try{e(null,this._geoJSONIndex.getLeaves(t.clusterId,t.limit,t.offset))}catch(t){e(t)}},r}(l),bt=function(e){var r=this;this.self=e,this.actor=new t.Actor(e,this),this.layerIndexes={},this.availableImages={},this.workerSourceTypes={vector:l,geojson:xt},this.workerSources={},this.demWorkerSources={},this.self.registerWorkerSource=function(t,e){if(r.workerSourceTypes[t])throw new Error('Worker source with name "'+t+'" already registered.');r.workerSourceTypes[t]=e},this.self.registerRTLTextPlugin=function(e){if(t.plugin.isParsed())throw new Error("RTL text plugin already registered.");t.plugin.applyArabicShaping=e.applyArabicShaping,t.plugin.processBidirectionalText=e.processBidirectionalText,t.plugin.processStyledBidirectionalText=e.processStyledBidirectionalText}};return bt.prototype.setReferrer=function(t,e){this.referrer=e},bt.prototype.setImages=function(t,e,r){for(var i in this.availableImages[t]=e,this.workerSources[t]){var n=this.workerSources[t][i];for(var o in n)n[o].availableImages=e}r()},bt.prototype.setLayers=function(t,e,r){this.getLayerIndex(t).replace(e),r()},bt.prototype.updateLayers=function(t,e,r){this.getLayerIndex(t).update(e.layers,e.removedIds),r()},bt.prototype.loadTile=function(t,e,r){this.getWorkerSource(t,e.type,e.source).loadTile(e,r)},bt.prototype.loadDEMTile=function(t,e,r){this.getDEMWorkerSource(t,e.source).loadTile(e,r)},bt.prototype.reloadTile=function(t,e,r){this.getWorkerSource(t,e.type,e.source).reloadTile(e,r)},bt.prototype.abortTile=function(t,e,r){this.getWorkerSource(t,e.type,e.source).abortTile(e,r)},bt.prototype.removeTile=function(t,e,r){this.getWorkerSource(t,e.type,e.source).removeTile(e,r)},bt.prototype.removeDEMTile=function(t,e){this.getDEMWorkerSource(t,e.source).removeTile(e)},bt.prototype.removeSource=function(t,e,r){if(this.workerSources[t]&&this.workerSources[t][e.type]&&this.workerSources[t][e.type][e.source]){var i=this.workerSources[t][e.type][e.source];delete this.workerSources[t][e.type][e.source],void 0!==i.removeSource?i.removeSource(e,r):r()}},bt.prototype.loadWorkerSource=function(t,e,r){try{this.self.importScripts(e.url),r()}catch(t){r(t.toString())}},bt.prototype.syncRTLPluginState=function(e,r,i){try{t.plugin.setState(r);var n=t.plugin.getPluginURL();if(t.plugin.isLoaded()&&!t.plugin.isParsed()&&null!=n){this.self.importScripts(n);var o=t.plugin.isParsed();i(o?void 0:new Error("RTL Text Plugin failed to import scripts from "+n),o)}}catch(t){i(t.toString())}},bt.prototype.getAvailableImages=function(t){var e=this.availableImages[t];return e||(e=[]),e},bt.prototype.getLayerIndex=function(t){var e=this.layerIndexes[t];return e||(e=this.layerIndexes[t]=new i),e},bt.prototype.getWorkerSource=function(t,e,r){var i=this;return this.workerSources[t]||(this.workerSources[t]={}),this.workerSources[t][e]||(this.workerSources[t][e]={}),this.workerSources[t][e][r]||(this.workerSources[t][e][r]=new this.workerSourceTypes[e]({send:function(e,r,n){i.actor.send(e,r,n,t)}},this.getLayerIndex(t),this.getAvailableImages(t))),this.workerSources[t][e][r]},bt.prototype.getDEMWorkerSource=function(t,e){return this.demWorkerSources[t]||(this.demWorkerSources[t]={}),this.demWorkerSources[t][e]||(this.demWorkerSources[t][e]=new c),this.demWorkerSources[t][e]},bt.prototype.enforceCacheSizeLimit=function(e,r){t.enforceCacheSizeLimit(r)},"undefined"!=typeof WorkerGlobalScope&&void 0!==t.window&&t.window instanceof WorkerGlobalScope&&(t.window.worker=new bt(t.window)),bt}),i(0,function(t){var e=t.createCommonjsModule(function(t){function e(t){return!r(t)}function r(t){return"undefined"==typeof window||"undefined"==typeof document?"not a browser":Array.prototype&&Array.prototype.every&&Array.prototype.filter&&Array.prototype.forEach&&Array.prototype.indexOf&&Array.prototype.lastIndexOf&&Array.prototype.map&&Array.prototype.some&&Array.prototype.reduce&&Array.prototype.reduceRight&&Array.isArray?Function.prototype&&Function.prototype.bind?Object.keys&&Object.create&&Object.getPrototypeOf&&Object.getOwnPropertyNames&&Object.isSealed&&Object.isFrozen&&Object.isExtensible&&Object.getOwnPropertyDescriptor&&Object.defineProperty&&Object.defineProperties&&Object.seal&&Object.freeze&&Object.preventExtensions?"JSON"in window&&"parse"in JSON&&"stringify"in JSON?function(){if(!("Worker"in window&&"Blob"in window&&"URL"in window))return!1;var t,e,r=new Blob([""],{type:"text/javascript"}),i=URL.createObjectURL(r);try{e=new Worker(i),t=!0}catch(e){t=!1}return e&&e.terminate(),URL.revokeObjectURL(i),t}()?"Uint8ClampedArray"in window?ArrayBuffer.isView?function(){var t=document.createElement("canvas");t.width=t.height=1;var e=t.getContext("2d");if(!e)return!1;var r=e.getImageData(0,0,1,1);return r&&r.width===t.width}()?(void 0===i[r=t&&t.failIfMajorPerformanceCaveat]&&(i[r]=function(t){var r=function(t){var r=document.createElement("canvas"),i=Object.create(e.webGLContextAttributes);return i.failIfMajorPerformanceCaveat=t,r.probablySupportsContext?r.probablySupportsContext("webgl",i)||r.probablySupportsContext("experimental-webgl",i):r.supportsContext?r.supportsContext("webgl",i)||r.supportsContext("experimental-webgl",i):r.getContext("webgl",i)||r.getContext("experimental-webgl",i)}(t);if(!r)return!1;var i=r.createShader(r.VERTEX_SHADER);return!(!i||r.isContextLost())&&(r.shaderSource(i,"void main() {}"),r.compileShader(i),!0===r.getShaderParameter(i,r.COMPILE_STATUS))}(r)),i[r]?void 0:"insufficient WebGL support"):"insufficient Canvas/getImageData support":"insufficient ArrayBuffer support":"insufficient Uint8ClampedArray support":"insufficient worker support":"insufficient JSON support":"insufficient Object support":"insufficient Function support":"insufficent Array support";var r}t.exports?t.exports=e:window&&(window.mapboxgl=window.mapboxgl||{},window.mapboxgl.supported=e,window.mapboxgl.notSupportedReason=r);var i={};e.webGLContextAttributes={antialias:!1,alpha:!0,stencil:!0,depth:!0}}),r={create:function(e,r,i){var n=t.window.document.createElement(e);return void 0!==r&&(n.className=r),i&&i.appendChild(n),n},createNS:function(e,r){return t.window.document.createElementNS(e,r)}},i=t.window.document.documentElement.style;function n(t){if(!i)return t[0];for(var e=0;e<t.length;e++)if(t[e]in i)return t[e];return t[0]}var o,a=n(["userSelect","MozUserSelect","WebkitUserSelect","msUserSelect"]);r.disableDrag=function(){i&&a&&(o=i[a],i[a]="none")},r.enableDrag=function(){i&&a&&(i[a]=o)};var s=n(["transform","WebkitTransform"]);r.setTransform=function(t,e){t.style[s]=e};var l=!1;try{var u=Object.defineProperty({},"passive",{get:function(){l=!0}});t.window.addEventListener("test",u,u),t.window.removeEventListener("test",u,u)}catch(t){l=!1}r.addEventListener=function(t,e,r,i){void 0===i&&(i={}),t.addEventListener(e,r,"passive"in i&&l?i:i.capture)},r.removeEventListener=function(t,e,r,i){void 0===i&&(i={}),t.removeEventListener(e,r,"passive"in i&&l?i:i.capture)};var c=function(e){e.preventDefault(),e.stopPropagation(),t.window.removeEventListener("click",c,!0)};function p(t){var e=t.userImage;return!!(e&&e.render&&e.render())&&(t.data.replace(new Uint8Array(e.data.buffer)),!0)}r.suppressClick=function(){t.window.addEventListener("click",c,!0),t.window.setTimeout(function(){t.window.removeEventListener("click",c,!0)},0)},r.mousePos=function(e,r){var i=e.getBoundingClientRect();return new t.Point(r.clientX-i.left-e.clientLeft,r.clientY-i.top-e.clientTop)},r.touchPos=function(e,r){for(var i=e.getBoundingClientRect(),n=[],o=0;o<r.length;o++)n.push(new t.Point(r[o].clientX-i.left-e.clientLeft,r[o].clientY-i.top-e.clientTop));return n},r.mouseButton=function(e){return void 0!==t.window.InstallTrigger&&2===e.button&&e.ctrlKey&&t.window.navigator.platform.toUpperCase().indexOf("MAC")>=0?0:e.button},r.remove=function(t){t.parentNode&&t.parentNode.removeChild(t)};var h=function(e){function r(){e.call(this),this.images={},this.updatedImages={},this.callbackDispatchedThisFrame={},this.loaded=!1,this.requestors=[],this.patterns={},this.atlasImage=new t.RGBAImage({width:1,height:1}),this.dirty=!0}return e&&(r.__proto__=e),(r.prototype=Object.create(e&&e.prototype)).constructor=r,r.prototype.isLoaded=function(){return this.loaded},r.prototype.setLoaded=function(t){if(this.loaded!==t&&(this.loaded=t,t)){for(var e=0,r=this.requestors;e<r.length;e+=1){var i=r[e];this._notify(i.ids,i.callback)}this.requestors=[]}},r.prototype.getImage=function(t){return this.images[t]},r.prototype.addImage=function(t,e){this._validate(t,e)&&(this.images[t]=e)},r.prototype._validate=function(e,r){var i=!0;return this._validateStretch(r.stretchX,r.data&&r.data.width)||(this.fire(new t.ErrorEvent(new Error('Image "'+e+'" has invalid "stretchX" value'))),i=!1),this._validateStretch(r.stretchY,r.data&&r.data.height)||(this.fire(new t.ErrorEvent(new Error('Image "'+e+'" has invalid "stretchY" value'))),i=!1),this._validateContent(r.content,r)||(this.fire(new t.ErrorEvent(new Error('Image "'+e+'" has invalid "content" value'))),i=!1),i},r.prototype._validateStretch=function(t,e){if(!t)return!0;for(var r=0,i=0,n=t;i<n.length;i+=1){var o=n[i];if(o[0]<r||o[1]<o[0]||e<o[1])return!1;r=o[1]}return!0},r.prototype._validateContent=function(t,e){return!(t&&(4!==t.length||t[0]<0||e.data.width<t[0]||t[1]<0||e.data.height<t[1]||t[2]<0||e.data.width<t[2]||t[3]<0||e.data.height<t[3]||t[2]<t[0]||t[3]<t[1]))},r.prototype.updateImage=function(t,e){e.version=this.images[t].version+1,this.images[t]=e,this.updatedImages[t]=!0},r.prototype.removeImage=function(t){var e=this.images[t];delete this.images[t],delete this.patterns[t],e.userImage&&e.userImage.onRemove&&e.userImage.onRemove()},r.prototype.listImages=function(){return Object.keys(this.images)},r.prototype.getImages=function(t,e){var r=!0;if(!this.isLoaded())for(var i=0,n=t;i<n.length;i+=1)this.images[n[i]]||(r=!1);this.isLoaded()||r?this._notify(t,e):this.requestors.push({ids:t,callback:e})},r.prototype._notify=function(e,r){for(var i={},n=0,o=e;n<o.length;n+=1){var a=o[n];this.images[a]||this.fire(new t.Event("styleimagemissing",{id:a}));var s=this.images[a];s?i[a]={data:s.data.clone(),pixelRatio:s.pixelRatio,sdf:s.sdf,version:s.version,stretchX:s.stretchX,stretchY:s.stretchY,content:s.content,hasRenderCallback:Boolean(s.userImage&&s.userImage.render)}:t.warnOnce('Image "'+a+'" could not be loaded. Please make sure you have added the image with map.addImage() or a "sprite" property in your style. You can provide missing images by listening for the "styleimagemissing" map event.')}r(null,i)},r.prototype.getPixelSize=function(){var t=this.atlasImage;return{width:t.width,height:t.height}},r.prototype.getPattern=function(e){var r=this.patterns[e],i=this.getImage(e);if(!i)return null;if(r&&r.position.version===i.version)return r.position;if(r)r.position.version=i.version;else{var n={w:i.data.width+2,h:i.data.height+2,x:0,y:0},o=new t.ImagePosition(n,i);this.patterns[e]={bin:n,position:o}}return this._updatePatternAtlas(),this.patterns[e].position},r.prototype.bind=function(e){var r=e.gl;this.atlasTexture?this.dirty&&(this.atlasTexture.update(this.atlasImage),this.dirty=!1):this.atlasTexture=new t.Texture(e,this.atlasImage,r.RGBA),this.atlasTexture.bind(r.LINEAR,r.CLAMP_TO_EDGE)},r.prototype._updatePatternAtlas=function(){var e=[];for(var r in this.patterns)e.push(this.patterns[r].bin);var i=t.potpack(e),n=i.w,o=i.h,a=this.atlasImage;for(var s in a.resize({width:n||1,height:o||1}),this.patterns){var l=this.patterns[s].bin,u=l.x+1,c=l.y+1,p=this.images[s].data,h=p.width,f=p.height;t.RGBAImage.copy(p,a,{x:0,y:0},{x:u,y:c},{width:h,height:f}),t.RGBAImage.copy(p,a,{x:0,y:f-1},{x:u,y:c-1},{width:h,height:1}),t.RGBAImage.copy(p,a,{x:0,y:0},{x:u,y:c+f},{width:h,height:1}),t.RGBAImage.copy(p,a,{x:h-1,y:0},{x:u-1,y:c},{width:1,height:f}),t.RGBAImage.copy(p,a,{x:0,y:0},{x:u+h,y:c},{width:1,height:f})}this.dirty=!0},r.prototype.beginFrame=function(){this.callbackDispatchedThisFrame={}},r.prototype.dispatchRenderCallbacks=function(t){for(var e=0,r=t;e<r.length;e+=1){var i=r[e];if(!this.callbackDispatchedThisFrame[i]){this.callbackDispatchedThisFrame[i]=!0;var n=this.images[i];p(n)&&this.updateImage(i,n)}}},r}(t.Evented),f=y,d=y,m=1e20;function y(t,e,r,i,n,o){this.fontSize=t||24,this.buffer=void 0===e?3:e,this.cutoff=i||.25,this.fontFamily=n||"sans-serif",this.fontWeight=o||"normal",this.radius=r||8;var a=this.size=this.fontSize+2*this.buffer;this.canvas=document.createElement("canvas"),this.canvas.width=this.canvas.height=a,this.ctx=this.canvas.getContext("2d"),this.ctx.font=this.fontWeight+" "+this.fontSize+"px "+this.fontFamily,this.ctx.textBaseline="middle",this.ctx.fillStyle="black",this.gridOuter=new Float64Array(a*a),this.gridInner=new Float64Array(a*a),this.f=new Float64Array(a),this.d=new Float64Array(a),this.z=new Float64Array(a+1),this.v=new Int16Array(a),this.middle=Math.round(a/2*(navigator.userAgent.indexOf("Gecko/")>=0?1.2:1))}function g(t,e,r,i,n,o,a){for(var s=0;s<e;s++){for(var l=0;l<r;l++)i[l]=t[l*e+s];for(_(i,n,o,a,r),l=0;l<r;l++)t[l*e+s]=n[l]}for(l=0;l<r;l++){for(s=0;s<e;s++)i[s]=t[l*e+s];for(_(i,n,o,a,e),s=0;s<e;s++)t[l*e+s]=Math.sqrt(n[s])}}function _(t,e,r,i,n){r[0]=0,i[0]=-m,i[1]=+m;for(var o=1,a=0;o<n;o++){for(var s=(t[o]+o*o-(t[r[a]]+r[a]*r[a]))/(2*o-2*r[a]);s<=i[a];)a--,s=(t[o]+o*o-(t[r[a]]+r[a]*r[a]))/(2*o-2*r[a]);r[++a]=o,i[a]=s,i[a+1]=+m}for(o=0,a=0;o<n;o++){for(;i[a+1]<o;)a++;e[o]=(o-r[a])*(o-r[a])+t[r[a]]}}y.prototype.draw=function(t){this.ctx.clearRect(0,0,this.size,this.size),this.ctx.fillText(t,this.buffer,this.middle);for(var e=this.ctx.getImageData(0,0,this.size,this.size),r=new Uint8ClampedArray(this.size*this.size),i=0;i<this.size*this.size;i++){var n=e.data[4*i+3]/255;this.gridOuter[i]=1===n?0:0===n?m:Math.pow(Math.max(0,.5-n),2),this.gridInner[i]=1===n?m:0===n?0:Math.pow(Math.max(0,n-.5),2)}for(g(this.gridOuter,this.size,this.size,this.f,this.d,this.v,this.z),g(this.gridInner,this.size,this.size,this.f,this.d,this.v,this.z),i=0;i<this.size*this.size;i++)r[i]=Math.max(0,Math.min(255,Math.round(255-255*((this.gridOuter[i]-this.gridInner[i])/this.radius+this.cutoff))));return r},f.default=d;var v=function(t,e){this.requestManager=t,this.localIdeographFontFamily=e,this.entries={}};v.prototype.setURL=function(t){this.url=t},v.prototype.getGlyphs=function(e,r){var i=this,n=[];for(var o in e)for(var a=0,s=e[o];a<s.length;a+=1)n.push({stack:o,id:s[a]});t.asyncAll(n,function(t,e){var r=t.stack,n=t.id,o=i.entries[r];o||(o=i.entries[r]={glyphs:{},requests:{},ranges:{}});var a=o.glyphs[n];if(void 0===a){if(a=i._tinySDF(o,r,n))return o.glyphs[n]=a,void e(null,{stack:r,id:n,glyph:a});var s=Math.floor(n/256);if(256*s>65535)e(new Error("glyphs > 65535 not supported"));else if(o.ranges[s])e(null,{stack:r,id:n,glyph:a});else{var l=o.requests[s];l||(l=o.requests[s]=[],v.loadGlyphRange(r,s,i.url,i.requestManager,function(t,e){if(e){for(var r in e)i._doesCharSupportLocalGlyph(+r)||(o.glyphs[+r]=e[+r]);o.ranges[s]=!0}for(var n=0,a=l;n<a.length;n+=1)(0,a[n])(t,e);delete o.requests[s]})),l.push(function(t,i){t?e(t):i&&e(null,{stack:r,id:n,glyph:i[n]||null})})}}else e(null,{stack:r,id:n,glyph:a})},function(t,e){if(t)r(t);else if(e){for(var i={},n=0,o=e;n<o.length;n+=1){var a=o[n],s=a.stack,l=a.id,u=a.glyph;(i[s]||(i[s]={}))[l]=u&&{id:u.id,bitmap:u.bitmap.clone(),metrics:u.metrics}}r(null,i)}})},v.prototype._doesCharSupportLocalGlyph=function(e){return!!this.localIdeographFontFamily&&(t.isChar["CJK Unified Ideographs"](e)||t.isChar["Hangul Syllables"](e)||t.isChar.Hiragana(e)||t.isChar.Katakana(e))},v.prototype._tinySDF=function(e,r,i){var n=this.localIdeographFontFamily;if(n&&this._doesCharSupportLocalGlyph(i)){var o=e.tinySDF;if(!o){var a="400";/bold/i.test(r)?a="900":/medium/i.test(r)?a="500":/light/i.test(r)&&(a="200"),o=e.tinySDF=new v.TinySDF(24,3,8,.25,n,a)}return{id:i,bitmap:new t.AlphaImage({width:30,height:30},o.draw(String.fromCharCode(i))),metrics:{width:24,height:24,left:0,top:-8,advance:24}}}},v.loadGlyphRange=function(e,r,i,n,o){var a=256*r,s=a+255,l=n.transformRequest(n.normalizeGlyphsURL(i).replace("{fontstack}",e).replace("{range}",a+"-"+s),t.ResourceType.Glyphs);t.getArrayBuffer(l,function(e,r){if(e)o(e);else if(r){for(var i={},n=0,a=t.parseGlyphPBF(r);n<a.length;n+=1){var s=a[n];i[s.id]=s}o(null,i)}})},v.TinySDF=f;var x=function(){this.specification=t.styleSpec.light.position};x.prototype.possiblyEvaluate=function(e,r){return t.sphericalToCartesian(e.expression.evaluate(r))},x.prototype.interpolate=function(e,r,i){return{x:t.number(e.x,r.x,i),y:t.number(e.y,r.y,i),z:t.number(e.z,r.z,i)}};var b=new t.Properties({anchor:new t.DataConstantProperty(t.styleSpec.light.anchor),position:new x,color:new t.DataConstantProperty(t.styleSpec.light.color),intensity:new t.DataConstantProperty(t.styleSpec.light.intensity)}),w=function(e){function r(r){e.call(this),this._transitionable=new t.Transitionable(b),this.setLight(r),this._transitioning=this._transitionable.untransitioned()}return e&&(r.__proto__=e),(r.prototype=Object.create(e&&e.prototype)).constructor=r,r.prototype.getLight=function(){return this._transitionable.serialize()},r.prototype.setLight=function(e,r){if(void 0===r&&(r={}),!this._validate(t.validateLight,e,r))for(var i in e){var n=e[i];t.endsWith(i,"-transition")?this._transitionable.setTransition(i.slice(0,-"-transition".length),n):this._transitionable.setValue(i,n)}},r.prototype.updateTransitions=function(t){this._transitioning=this._transitionable.transitioned(t,this._transitioning)},r.prototype.hasTransition=function(){return this._transitioning.hasTransition()},r.prototype.recalculate=function(t){this.properties=this._transitioning.possiblyEvaluate(t)},r.prototype._validate=function(e,r,i){return(!i||!1!==i.validate)&&t.emitValidationErrors(this,e.call(t.validateStyle,t.extend({value:r,style:{glyphs:!0,sprite:!0},styleSpec:t.styleSpec})))},r}(t.Evented),S=function(t,e){this.width=t,this.height=e,this.nextRow=0,this.data=new Uint8Array(this.width*this.height),this.dashEntry={}};S.prototype.getDash=function(t,e){var r=t.join(",")+String(e);return this.dashEntry[r]||(this.dashEntry[r]=this.addDash(t,e)),this.dashEntry[r]},S.prototype.getDashRanges=function(t,e,r){var i=[],n=t.length%2==1?-t[t.length-1]*r:0,o=t[0]*r,a=!0;i.push({left:n,right:o,isDash:a,zeroLength:0===t[0]});for(var s=t[0],l=1;l<t.length;l++){var u=t[l];i.push({left:n=s*r,right:o=(s+=u)*r,isDash:a=!a,zeroLength:0===u})}return i},S.prototype.addRoundDash=function(t,e,r){for(var i=e/2,n=-r;n<=r;n++)for(var o=this.width*(this.nextRow+r+n),a=0,s=t[a],l=0;l<this.width;l++){l/s.right>1&&(s=t[++a]);var u=Math.abs(l-s.left),c=Math.abs(l-s.right),p=Math.min(u,c),h=void 0,f=n/r*(i+1);if(s.isDash){var d=i-Math.abs(f);h=Math.sqrt(p*p+d*d)}else h=i-Math.sqrt(p*p+f*f);this.data[o+l]=Math.max(0,Math.min(255,h+128))}},S.prototype.addRegularDash=function(t){for(var e=t.length-1;e>=0;--e){var r=t[e],i=t[e+1];r.zeroLength?t.splice(e,1):i&&i.isDash===r.isDash&&(i.left=r.left,t.splice(e,1))}var n=t[0],o=t[t.length-1];n.isDash===o.isDash&&(n.left=o.left-this.width,o.right=n.right+this.width);for(var a=this.width*this.nextRow,s=0,l=t[s],u=0;u<this.width;u++){u/l.right>1&&(l=t[++s]);var c=Math.abs(u-l.left),p=Math.abs(u-l.right),h=Math.min(c,p);this.data[a+u]=Math.max(0,Math.min(255,(l.isDash?h:-h)+128))}},S.prototype.addDash=function(e,r){var i=r?7:0,n=2*i+1;if(this.nextRow+n>this.height)return t.warnOnce("LineAtlas out of space"),null;for(var o=0,a=0;a<e.length;a++)o+=e[a];if(0!==o){var s=this.width/o,l=this.getDashRanges(e,this.width,s);r?this.addRoundDash(l,s,i):this.addRegularDash(l)}var u={y:(this.nextRow+i+.5)/this.height,height:2*i/this.height,width:o};return this.nextRow+=n,this.dirty=!0,u},S.prototype.bind=function(t){var e=t.gl;this.texture?(e.bindTexture(e.TEXTURE_2D,this.texture),this.dirty&&(this.dirty=!1,e.texSubImage2D(e.TEXTURE_2D,0,0,0,this.width,this.height,e.ALPHA,e.UNSIGNED_BYTE,this.data))):(this.texture=e.createTexture(),e.bindTexture(e.TEXTURE_2D,this.texture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texImage2D(e.TEXTURE_2D,0,e.ALPHA,this.width,this.height,0,e.ALPHA,e.UNSIGNED_BYTE,this.data))};var T=function e(r,i){this.workerPool=r,this.actors=[],this.currentActor=0,this.id=t.uniqueId();for(var n=this.workerPool.acquire(this.id),o=0;o<n.length;o++){var a=new e.Actor(n[o],i,this.id);a.name="Worker "+o,this.actors.push(a)}};function I(e,r,i){var n=function(n,o){if(n)return i(n);if(o){var a=t.pick(t.extend(o,e),["tiles","minzoom","maxzoom","attribution","mapbox_logo","bounds","scheme","tileSize","encoding"]);o.vector_layers&&(a.vectorLayers=o.vector_layers,a.vectorLayerIds=a.vectorLayers.map(function(t){return t.id})),a.tiles=r.canonicalizeTileset(a,e.url),i(null,a)}};return e.url?t.getJSON(r.transformRequest(r.normalizeSourceURL(e.url),t.ResourceType.Source),n):t.browser.frame(function(){return n(null,e)})}T.prototype.broadcast=function(e,r,i){t.asyncAll(this.actors,function(t,i){t.send(e,r,i)},i=i||function(){})},T.prototype.getActor=function(){return this.currentActor=(this.currentActor+1)%this.actors.length,this.actors[this.currentActor]},T.prototype.remove=function(){this.actors.forEach(function(t){t.remove()}),this.actors=[],this.workerPool.release(this.id)},T.Actor=t.Actor;var E=function(e,r,i){this.bounds=t.LngLatBounds.convert(this.validateBounds(e)),this.minzoom=r||0,this.maxzoom=i||24};E.prototype.validateBounds=function(t){return Array.isArray(t)&&4===t.length?[Math.max(-180,t[0]),Math.max(-90,t[1]),Math.min(180,t[2]),Math.min(90,t[3])]:[-180,-90,180,90]},E.prototype.contains=function(e){var r=Math.pow(2,e.z),i=Math.floor(t.mercatorXfromLng(this.bounds.getWest())*r),n=Math.floor(t.mercatorYfromLat(this.bounds.getNorth())*r),o=Math.ceil(t.mercatorXfromLng(this.bounds.getEast())*r),a=Math.ceil(t.mercatorYfromLat(this.bounds.getSouth())*r);return e.x>=i&&e.x<o&&e.y>=n&&e.y<a};var A=function(e){function r(r,i,n,o){if(e.call(this),this.id=r,this.dispatcher=n,this.type="vector",this.minzoom=0,this.maxzoom=22,this.scheme="xyz",this.tileSize=512,this.reparseOverscaled=!0,this.isTileClipped=!0,this._loaded=!1,t.extend(this,t.pick(i,["url","scheme","tileSize","promoteId"])),this._options=t.extend({type:"vector"},i),this._collectResourceTiming=i.collectResourceTiming,512!==this.tileSize)throw new Error("vector tile sources must have a tileSize of 512");this.setEventedParent(o)}return e&&(r.__proto__=e),(r.prototype=Object.create(e&&e.prototype)).constructor=r,r.prototype.load=function(){var e=this;this._loaded=!1,this.fire(new t.Event("dataloading",{dataType:"source"})),this._tileJSONRequest=I(this._options,this.map._requestManager,function(r,i){e._tileJSONRequest=null,e._loaded=!0,r?e.fire(new t.ErrorEvent(r)):i&&(t.extend(e,i),i.bounds&&(e.tileBounds=new E(i.bounds,e.minzoom,e.maxzoom)),t.postTurnstileEvent(i.tiles,e.map._requestManager._customAccessToken),t.postMapLoadEvent(i.tiles,e.map._getMapId(),e.map._requestManager._skuToken,e.map._requestManager._customAccessToken),e.fire(new t.Event("data",{dataType:"source",sourceDataType:"metadata"})),e.fire(new t.Event("data",{dataType:"source",sourceDataType:"content"})))})},r.prototype.loaded=function(){return this._loaded},r.prototype.hasTile=function(t){return!this.tileBounds||this.tileBounds.contains(t.canonical)},r.prototype.onAdd=function(t){this.map=t,this.load()},r.prototype.onRemove=function(){this._tileJSONRequest&&(this._tileJSONRequest.cancel(),this._tileJSONRequest=null)},r.prototype.serialize=function(){return t.extend({},this._options)},r.prototype.loadTile=function(e,r){var i=this.map._requestManager.normalizeTileURL(e.tileID.canonical.url(this.tiles,this.scheme)),n={request:this.map._requestManager.transformRequest(i,t.ResourceType.Tile),uid:e.uid,tileID:e.tileID,zoom:e.tileID.overscaledZ,tileSize:this.tileSize*e.tileID.overscaleFactor(),type:this.type,source:this.id,pixelRatio:t.browser.devicePixelRatio,showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId};function o(i,n){return delete e.request,e.aborted?r(null):i&&404!==i.status?r(i):(n&&n.resourceTiming&&(e.resourceTiming=n.resourceTiming),this.map._refreshExpiredTiles&&n&&e.setExpiryData(n),e.loadVectorData(n,this.map.painter),t.cacheEntryPossiblyAdded(this.dispatcher),r(null),void(e.reloadCallback&&(this.loadTile(e,e.reloadCallback),e.reloadCallback=null)))}n.request.collectResourceTiming=this._collectResourceTiming,e.actor&&"expired"!==e.state?"loading"===e.state?e.reloadCallback=r:e.request=e.actor.send("reloadTile",n,o.bind(this)):(e.actor=this.dispatcher.getActor(),e.request=e.actor.send("loadTile",n,o.bind(this)))},r.prototype.abortTile=function(t){t.request&&(t.request.cancel(),delete t.request),t.actor&&t.actor.send("abortTile",{uid:t.uid,type:this.type,source:this.id},void 0)},r.prototype.unloadTile=function(t){t.unloadVectorData(),t.actor&&t.actor.send("removeTile",{uid:t.uid,type:this.type,source:this.id},void 0)},r.prototype.hasTransition=function(){return!1},r}(t.Evented),z=function(e){function r(r,i,n,o){e.call(this),this.id=r,this.dispatcher=n,this.setEventedParent(o),this.type="raster",this.minzoom=0,this.maxzoom=22,this.roundZoom=!0,this.scheme="xyz",this.tileSize=512,this._loaded=!1,this._options=t.extend({type:"raster"},i),t.extend(this,t.pick(i,["url","scheme","tileSize"]))}return e&&(r.__proto__=e),(r.prototype=Object.create(e&&e.prototype)).constructor=r,r.prototype.load=function(){var e=this;this._loaded=!1,this.fire(new t.Event("dataloading",{dataType:"source"})),this._tileJSONRequest=I(this._options,this.map._requestManager,function(r,i){e._tileJSONRequest=null,e._loaded=!0,r?e.fire(new t.ErrorEvent(r)):i&&(t.extend(e,i),i.bounds&&(e.tileBounds=new E(i.bounds,e.minzoom,e.maxzoom)),t.postTurnstileEvent(i.tiles),t.postMapLoadEvent(i.tiles,e.map._getMapId(),e.map._requestManager._skuToken),e.fire(new t.Event("data",{dataType:"source",sourceDataType:"metadata"})),e.fire(new t.Event("data",{dataType:"source",sourceDataType:"content"})))})},r.prototype.loaded=function(){return this._loaded},r.prototype.onAdd=function(t){this.map=t,this.load()},r.prototype.onRemove=function(){this._tileJSONRequest&&(this._tileJSONRequest.cancel(),this._tileJSONRequest=null)},r.prototype.serialize=function(){return t.extend({},this._options)},r.prototype.hasTile=function(t){return!this.tileBounds||this.tileBounds.contains(t.canonical)},r.prototype.loadTile=function(e,r){var i=this,n=this.map._requestManager.normalizeTileURL(e.tileID.canonical.url(this.tiles,this.scheme),this.tileSize);e.request=t.getImage(this.map._requestManager.transformRequest(n,t.ResourceType.Tile),function(n,o){if(delete e.request,e.aborted)e.state="unloaded",r(null);else if(n)e.state="errored",r(n);else if(o){i.map._refreshExpiredTiles&&e.setExpiryData(o),delete o.cacheControl,delete o.expires;var a=i.map.painter.context,s=a.gl;e.texture=i.map.painter.getTileTexture(o.width),e.texture?e.texture.update(o,{useMipmap:!0}):(e.texture=new t.Texture(a,o,s.RGBA,{useMipmap:!0}),e.texture.bind(s.LINEAR,s.CLAMP_TO_EDGE,s.LINEAR_MIPMAP_NEAREST),a.extTextureFilterAnisotropic&&s.texParameterf(s.TEXTURE_2D,a.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,a.extTextureFilterAnisotropicMax)),e.state="loaded",t.cacheEntryPossiblyAdded(i.dispatcher),r(null)}})},r.prototype.abortTile=function(t,e){t.request&&(t.request.cancel(),delete t.request),e()},r.prototype.unloadTile=function(t,e){t.texture&&this.map.painter.saveTileTexture(t.texture),e()},r.prototype.hasTransition=function(){return!1},r}(t.Evented),P=function(e){function r(r,i,n,o){e.call(this,r,i,n,o),this.type="raster-dem",this.maxzoom=22,this._options=t.extend({type:"raster-dem"},i),this.encoding=i.encoding||"mapbox"}return e&&(r.__proto__=e),(r.prototype=Object.create(e&&e.prototype)).constructor=r,r.prototype.serialize=function(){return{type:"raster-dem",url:this.url,tileSize:this.tileSize,tiles:this.tiles,bounds:this.bounds,encoding:this.encoding}},r.prototype.loadTile=function(e,r){var i=this.map._requestManager.normalizeTileURL(e.tileID.canonical.url(this.tiles,this.scheme),this.tileSize);e.request=t.getImage(this.map._requestManager.transformRequest(i,t.ResourceType.Tile),function(i,n){if(delete e.request,e.aborted)e.state="unloaded",r(null);else if(i)e.state="errored",r(i);else if(n){this.map._refreshExpiredTiles&&e.setExpiryData(n),delete n.cacheControl,delete n.expires;var o=t.window.ImageBitmap&&n instanceof t.window.ImageBitmap&&t.offscreenCanvasSupported()?n:t.browser.getImageData(n,1),a={uid:e.uid,coord:e.tileID,source:this.id,rawImageData:o,encoding:this.encoding};e.actor&&"expired"!==e.state||(e.actor=this.dispatcher.getActor(),e.actor.send("loadDEMTile",a,function(t,i){t&&(e.state="errored",r(t)),i&&(e.dem=i,e.needsHillshadePrepare=!0,e.state="loaded",r(null))}.bind(this)))}}.bind(this)),e.neighboringTiles=this._getNeighboringTiles(e.tileID)},r.prototype._getNeighboringTiles=function(e){var r=e.canonical,i=Math.pow(2,r.z),n=(r.x-1+i)%i,o=0===r.x?e.wrap-1:e.wrap,a=(r.x+1+i)%i,s=r.x+1===i?e.wrap+1:e.wrap,l={};return l[new t.OverscaledTileID(e.overscaledZ,o,r.z,n,r.y).key]={backfilled:!1},l[new t.OverscaledTileID(e.overscaledZ,s,r.z,a,r.y).key]={backfilled:!1},r.y>0&&(l[new t.OverscaledTileID(e.overscaledZ,o,r.z,n,r.y-1).key]={backfilled:!1},l[new t.OverscaledTileID(e.overscaledZ,e.wrap,r.z,r.x,r.y-1).key]={backfilled:!1},l[new t.OverscaledTileID(e.overscaledZ,s,r.z,a,r.y-1).key]={backfilled:!1}),r.y+1<i&&(l[new t.OverscaledTileID(e.overscaledZ,o,r.z,n,r.y+1).key]={backfilled:!1},l[new t.OverscaledTileID(e.overscaledZ,e.wrap,r.z,r.x,r.y+1).key]={backfilled:!1},l[new t.OverscaledTileID(e.overscaledZ,s,r.z,a,r.y+1).key]={backfilled:!1}),l},r.prototype.unloadTile=function(t){t.demTexture&&this.map.painter.saveTileTexture(t.demTexture),t.fbo&&(t.fbo.destroy(),delete t.fbo),t.dem&&delete t.dem,delete t.neighboringTiles,t.state="unloaded",t.actor&&t.actor.send("removeDEMTile",{uid:t.uid,source:this.id})},r}(z),C=function(e){function r(r,i,n,o){e.call(this),this.id=r,this.type="geojson",this.minzoom=0,this.maxzoom=18,this.tileSize=512,this.isTileClipped=!0,this.reparseOverscaled=!0,this._removed=!1,this._loaded=!1,this.actor=n.getActor(),this.setEventedParent(o),this._data=i.data,this._options=t.extend({},i),this._collectResourceTiming=i.collectResourceTiming,this._resourceTiming=[],void 0!==i.maxzoom&&(this.maxzoom=i.maxzoom),i.type&&(this.type=i.type),i.attribution&&(this.attribution=i.attribution),this.promoteId=i.promoteId;var a=t.EXTENT/this.tileSize;this.workerOptions=t.extend({source:this.id,cluster:i.cluster||!1,geojsonVtOptions:{buffer:(void 0!==i.buffer?i.buffer:128)*a,tolerance:(void 0!==i.tolerance?i.tolerance:.375)*a,extent:t.EXTENT,maxZoom:this.maxzoom,lineMetrics:i.lineMetrics||!1,generateId:i.generateId||!1},superclusterOptions:{maxZoom:void 0!==i.clusterMaxZoom?Math.min(i.clusterMaxZoom,this.maxzoom-1):this.maxzoom-1,extent:t.EXTENT,radius:(i.clusterRadius||50)*a,log:!1,generateId:i.generateId||!1},clusterProperties:i.clusterProperties},i.workerOptions)}return e&&(r.__proto__=e),(r.prototype=Object.create(e&&e.prototype)).constructor=r,r.prototype.load=function(){var e=this;this.fire(new t.Event("dataloading",{dataType:"source"})),this._updateWorkerData(function(r){if(r)e.fire(new t.ErrorEvent(r));else{var i={dataType:"source",sourceDataType:"metadata"};e._collectResourceTiming&&e._resourceTiming&&e._resourceTiming.length>0&&(i.resourceTiming=e._resourceTiming,e._resourceTiming=[]),e.fire(new t.Event("data",i))}})},r.prototype.onAdd=function(t){this.map=t,this.load()},r.prototype.setData=function(e){var r=this;return this._data=e,this.fire(new t.Event("dataloading",{dataType:"source"})),this._updateWorkerData(function(e){if(e)r.fire(new t.ErrorEvent(e));else{var i={dataType:"source",sourceDataType:"content"};r._collectResourceTiming&&r._resourceTiming&&r._resourceTiming.length>0&&(i.resourceTiming=r._resourceTiming,r._resourceTiming=[]),r.fire(new t.Event("data",i))}}),this},r.prototype.getClusterExpansionZoom=function(t,e){return this.actor.send("geojson.getClusterExpansionZoom",{clusterId:t,source:this.id},e),this},r.prototype.getClusterChildren=function(t,e){return this.actor.send("geojson.getClusterChildren",{clusterId:t,source:this.id},e),this},r.prototype.getClusterLeaves=function(t,e,r,i){return this.actor.send("geojson.getClusterLeaves",{source:this.id,clusterId:t,limit:e,offset:r},i),this},r.prototype._updateWorkerData=function(e){var r=this;this._loaded=!1;var i=t.extend({},this.workerOptions),n=this._data;"string"==typeof n?(i.request=this.map._requestManager.transformRequest(t.browser.resolveURL(n),t.ResourceType.Source),i.request.collectResourceTiming=this._collectResourceTiming):i.data=JSON.stringify(n),this.actor.send(this.type+".loadData",i,function(t,n){r._removed||n&&n.abandoned||(r._loaded=!0,n&&n.resourceTiming&&n.resourceTiming[r.id]&&(r._resourceTiming=n.resourceTiming[r.id].slice(0)),r.actor.send(r.type+".coalesce",{source:i.source},null),e(t))})},r.prototype.loaded=function(){return this._loaded},r.prototype.loadTile=function(e,r){var i=this,n=e.actor?"reloadTile":"loadTile";e.actor=this.actor,e.request=this.actor.send(n,{type:this.type,uid:e.uid,tileID:e.tileID,zoom:e.tileID.overscaledZ,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:t.browser.devicePixelRatio,showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId},function(t,o){return delete e.request,e.unloadVectorData(),e.aborted?r(null):t?r(t):(e.loadVectorData(o,i.map.painter,"reloadTile"===n),r(null))})},r.prototype.abortTile=function(t){t.request&&(t.request.cancel(),delete t.request),t.aborted=!0},r.prototype.unloadTile=function(t){t.unloadVectorData(),this.actor.send("removeTile",{uid:t.uid,type:this.type,source:this.id})},r.prototype.onRemove=function(){this._removed=!0,this.actor.send("removeSource",{type:this.type,source:this.id})},r.prototype.serialize=function(){return t.extend({},this._options,{type:this.type,data:this._data})},r.prototype.hasTransition=function(){return!1},r}(t.Evented),k=t.createLayout([{name:"a_pos",type:"Int16",components:2},{name:"a_texture_pos",type:"Int16",components:2}]),M=function(e){function r(t,r,i,n){e.call(this),this.id=t,this.dispatcher=i,this.coordinates=r.coordinates,this.type="image",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this._loaded=!1,this.setEventedParent(n),this.options=r}return e&&(r.__proto__=e),(r.prototype=Object.create(e&&e.prototype)).constructor=r,r.prototype.load=function(e,r){var i=this;this._loaded=!1,this.fire(new t.Event("dataloading",{dataType:"source"})),this.url=this.options.url,t.getImage(this.map._requestManager.transformRequest(this.url,t.ResourceType.Image),function(n,o){i._loaded=!0,n?i.fire(new t.ErrorEvent(n)):o&&(i.image=o,e&&(i.coordinates=e),r&&r(),i._finishLoading())})},r.prototype.loaded=function(){return this._loaded},r.prototype.updateImage=function(t){var e=this;return this.image&&t.url?(this.options.url=t.url,this.load(t.coordinates,function(){e.texture=null}),this):this},r.prototype._finishLoading=function(){this.map&&(this.setCoordinates(this.coordinates),this.fire(new t.Event("data",{dataType:"source",sourceDataType:"metadata"})))},r.prototype.onAdd=function(t){this.map=t,this.load()},r.prototype.setCoordinates=function(e){var r=this;this.coordinates=e;var i=e.map(t.MercatorCoordinate.fromLngLat);this.tileID=function(e){for(var r=1/0,i=1/0,n=-1/0,o=-1/0,a=0,s=e;a<s.length;a+=1){var l=s[a];r=Math.min(r,l.x),i=Math.min(i,l.y),n=Math.max(n,l.x),o=Math.max(o,l.y)}var u=Math.max(n-r,o-i),c=Math.max(0,Math.floor(-Math.log(u)/Math.LN2)),p=Math.pow(2,c);return new t.CanonicalTileID(c,Math.floor((r+n)/2*p),Math.floor((i+o)/2*p))}(i),this.minzoom=this.maxzoom=this.tileID.z;var n=i.map(function(t){return r.tileID.getTilePoint(t)._round()});return this._boundsArray=new t.StructArrayLayout4i8,this._boundsArray.emplaceBack(n[0].x,n[0].y,0,0),this._boundsArray.emplaceBack(n[1].x,n[1].y,t.EXTENT,0),this._boundsArray.emplaceBack(n[3].x,n[3].y,0,t.EXTENT),this._boundsArray.emplaceBack(n[2].x,n[2].y,t.EXTENT,t.EXTENT),this.boundsBuffer&&(this.boundsBuffer.destroy(),delete this.boundsBuffer),this.fire(new t.Event("data",{dataType:"source",sourceDataType:"content"})),this},r.prototype.prepare=function(){if(0!==Object.keys(this.tiles).length&&this.image){var e=this.map.painter.context,r=e.gl;for(var i in this.boundsBuffer||(this.boundsBuffer=e.createVertexBuffer(this._boundsArray,k.members)),this.boundsSegments||(this.boundsSegments=t.SegmentVector.simpleSegment(0,0,4,2)),this.texture||(this.texture=new t.Texture(e,this.image,r.RGBA),this.texture.bind(r.LINEAR,r.CLAMP_TO_EDGE)),this.tiles){var n=this.tiles[i];"loaded"!==n.state&&(n.state="loaded",n.texture=this.texture)}}},r.prototype.loadTile=function(t,e){this.tileID&&this.tileID.equals(t.tileID.canonical)?(this.tiles[String(t.tileID.wrap)]=t,t.buckets={},e(null)):(t.state="errored",e(null))},r.prototype.serialize=function(){return{type:"image",url:this.options.url,coordinates:this.coordinates}},r.prototype.hasTransition=function(){return!1},r}(t.Evented),D=function(e){function r(t,r,i,n){e.call(this,t,r,i,n),this.roundZoom=!0,this.type="video",this.options=r}return e&&(r.__proto__=e),(r.prototype=Object.create(e&&e.prototype)).constructor=r,r.prototype.load=function(){var e=this;this._loaded=!1;var r=this.options;this.urls=[];for(var i=0,n=r.urls;i<n.length;i+=1)this.urls.push(this.map._requestManager.transformRequest(n[i],t.ResourceType.Source).url);t.getVideo(this.urls,function(r,i){e._loaded=!0,r?e.fire(new t.ErrorEvent(r)):i&&(e.video=i,e.video.loop=!0,e.video.addEventListener("playing",function(){e.map.triggerRepaint()}),e.map&&e.video.play(),e._finishLoading())})},r.prototype.pause=function(){this.video&&this.video.pause()},r.prototype.play=function(){this.video&&this.video.play()},r.prototype.seek=function(e){if(this.video){var r=this.video.seekable;e<r.start(0)||e>r.end(0)?this.fire(new t.ErrorEvent(new t.ValidationError("sources."+this.id,null,"Playback for this video can be set only between the "+r.start(0)+" and "+r.end(0)+"-second mark."))):this.video.currentTime=e}},r.prototype.getVideo=function(){return this.video},r.prototype.onAdd=function(t){this.map||(this.map=t,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)))},r.prototype.prepare=function(){if(!(0===Object.keys(this.tiles).length||this.video.readyState<2)){var e=this.map.painter.context,r=e.gl;for(var i in this.boundsBuffer||(this.boundsBuffer=e.createVertexBuffer(this._boundsArray,k.members)),this.boundsSegments||(this.boundsSegments=t.SegmentVector.simpleSegment(0,0,4,2)),this.texture?this.video.paused||(this.texture.bind(r.LINEAR,r.CLAMP_TO_EDGE),r.texSubImage2D(r.TEXTURE_2D,0,0,0,r.RGBA,r.UNSIGNED_BYTE,this.video)):(this.texture=new t.Texture(e,this.video,r.RGBA),this.texture.bind(r.LINEAR,r.CLAMP_TO_EDGE)),this.tiles){var n=this.tiles[i];"loaded"!==n.state&&(n.state="loaded",n.texture=this.texture)}}},r.prototype.serialize=function(){return{type:"video",urls:this.urls,coordinates:this.coordinates}},r.prototype.hasTransition=function(){return this.video&&!this.video.paused},r}(M),L=function(e){function r(r,i,n,o){e.call(this,r,i,n,o),i.coordinates?Array.isArray(i.coordinates)&&4===i.coordinates.length&&!i.coordinates.some(function(t){return!Array.isArray(t)||2!==t.length||t.some(function(t){return"number"!=typeof t})})||this.fire(new t.ErrorEvent(new t.ValidationError("sources."+r,null,'"coordinates" property must be an array of 4 longitude/latitude array pairs'))):this.fire(new t.ErrorEvent(new t.ValidationError("sources."+r,null,'missing required property "coordinates"'))),i.animate&&"boolean"!=typeof i.animate&&this.fire(new t.ErrorEvent(new t.ValidationError("sources."+r,null,'optional "animate" property must be a boolean value'))),i.canvas?"string"==typeof i.canvas||i.canvas instanceof t.window.HTMLCanvasElement||this.fire(new t.ErrorEvent(new t.ValidationError("sources."+r,null,'"canvas" must be either a string representing the ID of the canvas element from which to read, or an HTMLCanvasElement instance'))):this.fire(new t.ErrorEvent(new t.ValidationError("sources."+r,null,'missing required property "canvas"'))),this.options=i,this.animate=void 0===i.animate||i.animate}return e&&(r.__proto__=e),(r.prototype=Object.create(e&&e.prototype)).constructor=r,r.prototype.load=function(){this._loaded=!0,this.canvas||(this.canvas=this.options.canvas instanceof t.window.HTMLCanvasElement?this.options.canvas:t.window.document.getElementById(this.options.canvas)),this.width=this.canvas.width,this.height=this.canvas.height,this._hasInvalidDimensions()?this.fire(new t.ErrorEvent(new Error("Canvas dimensions cannot be less than or equal to zero."))):(this.play=function(){this._playing=!0,this.map.triggerRepaint()},this.pause=function(){this._playing&&(this.prepare(),this._playing=!1)},this._finishLoading())},r.prototype.getCanvas=function(){return this.canvas},r.prototype.onAdd=function(t){this.map=t,this.load(),this.canvas&&this.animate&&this.play()},r.prototype.onRemove=function(){this.pause()},r.prototype.prepare=function(){var e=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,e=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,e=!0),!this._hasInvalidDimensions()&&0!==Object.keys(this.tiles).length){var r=this.map.painter.context,i=r.gl;for(var n in this.boundsBuffer||(this.boundsBuffer=r.createVertexBuffer(this._boundsArray,k.members)),this.boundsSegments||(this.boundsSegments=t.SegmentVector.simpleSegment(0,0,4,2)),this.texture?(e||this._playing)&&this.texture.update(this.canvas,{premultiply:!0}):this.texture=new t.Texture(r,this.canvas,i.RGBA,{premultiply:!0}),this.tiles){var o=this.tiles[n];"loaded"!==o.state&&(o.state="loaded",o.texture=this.texture)}}},r.prototype.serialize=function(){return{type:"canvas",coordinates:this.coordinates}},r.prototype.hasTransition=function(){return this._playing},r.prototype._hasInvalidDimensions=function(){for(var t=0,e=[this.canvas.width,this.canvas.height];t<e.length;t+=1){var r=e[t];if(isNaN(r)||r<=0)return!0}return!1},r}(M),B={vector:A,raster:z,"raster-dem":P,geojson:C,video:D,image:M,canvas:L};function R(e,r){var i=t.identity([]);return t.translate(i,i,[1,1,0]),t.scale(i,i,[.5*e.width,.5*e.height,1]),t.multiply(i,i,e.calculatePosMatrix(r.toUnwrapped()))}function F(t,e,r,i,n,o){var a=function(t,e,r){if(t)for(var i=0,n=t;i<n.length;i+=1){var o=e[n[i]];if(o&&o.source===r&&"fill-extrusion"===o.type)return!0}else for(var a in e){var s=e[a];if(s.source===r&&"fill-extrusion"===s.type)return!0}return!1}(n&&n.layers,e,t.id),s=o.maxPitchScaleFactor(),l=t.tilesIn(i,s,a);l.sort(O);for(var u=[],c=0,p=l;c<p.length;c+=1){var h=p[c];u.push({wrappedTileID:h.tileID.wrapped().key,queryResults:h.tile.queryRenderedFeatures(e,r,t._state,h.queryGeometry,h.cameraQueryGeometry,h.scale,n,o,s,R(t.transform,h.tileID))})}var f=function(t){for(var e={},r={},i=0,n=t;i<n.length;i+=1){var o=n[i],a=o.queryResults,s=o.wrappedTileID,l=r[s]=r[s]||{};for(var u in a)for(var c=a[u],p=l[u]=l[u]||{},h=e[u]=e[u]||[],f=0,d=c;f<d.length;f+=1){var m=d[f];p[m.featureIndex]||(p[m.featureIndex]=!0,h.push(m))}}return e}(u);for(var d in f)f[d].forEach(function(e){var r=e.feature,i=t.getFeatureState(r.layer["source-layer"],r.id);r.source=r.layer.source,r.layer["source-layer"]&&(r.sourceLayer=r.layer["source-layer"]),r.state=i});return f}function O(t,e){var r=t.tileID,i=e.tileID;return r.overscaledZ-i.overscaledZ||r.canonical.y-i.canonical.y||r.wrap-i.wrap||r.canonical.x-i.canonical.x}var U=function(t,e){this.max=t,this.onRemove=e,this.reset()};U.prototype.reset=function(){for(var t in this.data)for(var e=0,r=this.data[t];e<r.length;e+=1){var i=r[e];i.timeout&&clearTimeout(i.timeout),this.onRemove(i.value)}return this.data={},this.order=[],this},U.prototype.add=function(t,e,r){var i=this,n=t.wrapped().key;void 0===this.data[n]&&(this.data[n]=[]);var o={value:e,timeout:void 0};if(void 0!==r&&(o.timeout=setTimeout(function(){i.remove(t,o)},r)),this.data[n].push(o),this.order.push(n),this.order.length>this.max){var a=this._getAndRemoveByKey(this.order[0]);a&&this.onRemove(a)}return this},U.prototype.has=function(t){return t.wrapped().key in this.data},U.prototype.getAndRemove=function(t){return this.has(t)?this._getAndRemoveByKey(t.wrapped().key):null},U.prototype._getAndRemoveByKey=function(t){var e=this.data[t].shift();return e.timeout&&clearTimeout(e.timeout),0===this.data[t].length&&delete this.data[t],this.order.splice(this.order.indexOf(t),1),e.value},U.prototype.getByKey=function(t){var e=this.data[t];return e?e[0].value:null},U.prototype.get=function(t){return this.has(t)?this.data[t.wrapped().key][0].value:null},U.prototype.remove=function(t,e){if(!this.has(t))return this;var r=t.wrapped().key,i=void 0===e?0:this.data[r].indexOf(e),n=this.data[r][i];return this.data[r].splice(i,1),n.timeout&&clearTimeout(n.timeout),0===this.data[r].length&&delete this.data[r],this.onRemove(n.value),this.order.splice(this.order.indexOf(r),1),this},U.prototype.setMaxSize=function(t){for(this.max=t;this.order.length>this.max;){var e=this._getAndRemoveByKey(this.order[0]);e&&this.onRemove(e)}return this},U.prototype.filter=function(t){var e=[];for(var r in this.data)for(var i=0,n=this.data[r];i<n.length;i+=1){var o=n[i];t(o.value)||e.push(o)}for(var a=0,s=e;a<s.length;a+=1){var l=s[a];this.remove(l.value.tileID,l)}};var V=function(t,e,r){this.context=t;var i=t.gl;this.buffer=i.createBuffer(),this.dynamicDraw=Boolean(r),this.context.unbindVAO(),t.bindElementBuffer.set(this.buffer),i.bufferData(i.ELEMENT_ARRAY_BUFFER,e.arrayBuffer,this.dynamicDraw?i.DYNAMIC_DRAW:i.STATIC_DRAW),this.dynamicDraw||delete e.arrayBuffer};V.prototype.bind=function(){this.context.bindElementBuffer.set(this.buffer)},V.prototype.updateData=function(t){var e=this.context.gl;this.context.unbindVAO(),this.bind(),e.bufferSubData(e.ELEMENT_ARRAY_BUFFER,0,t.arrayBuffer)},V.prototype.destroy=function(){this.buffer&&(this.context.gl.deleteBuffer(this.buffer),delete this.buffer)};var N={Int8:"BYTE",Uint8:"UNSIGNED_BYTE",Int16:"SHORT",Uint16:"UNSIGNED_SHORT",Int32:"INT",Uint32:"UNSIGNED_INT",Float32:"FLOAT"},j=function(t,e,r,i){this.length=e.length,this.attributes=r,this.itemSize=e.bytesPerElement,this.dynamicDraw=i,this.context=t;var n=t.gl;this.buffer=n.createBuffer(),t.bindVertexBuffer.set(this.buffer),n.bufferData(n.ARRAY_BUFFER,e.arrayBuffer,this.dynamicDraw?n.DYNAMIC_DRAW:n.STATIC_DRAW),this.dynamicDraw||delete e.arrayBuffer};j.prototype.bind=function(){this.context.bindVertexBuffer.set(this.buffer)},j.prototype.updateData=function(t){var e=this.context.gl;this.bind(),e.bufferSubData(e.ARRAY_BUFFER,0,t.arrayBuffer)},j.prototype.enableAttributes=function(t,e){for(var r=0;r<this.attributes.length;r++){var i=e.attributes[this.attributes[r].name];void 0!==i&&t.enableVertexAttribArray(i)}},j.prototype.setVertexAttribPointers=function(t,e,r){for(var i=0;i<this.attributes.length;i++){var n=this.attributes[i],o=e.attributes[n.name];void 0!==o&&t.vertexAttribPointer(o,n.components,t[N[n.type]],!1,this.itemSize,n.offset+this.itemSize*(r||0))}},j.prototype.destroy=function(){this.buffer&&(this.context.gl.deleteBuffer(this.buffer),delete this.buffer)};var q=function(t){this.gl=t.gl,this.default=this.getDefault(),this.current=this.default,this.dirty=!1};q.prototype.get=function(){return this.current},q.prototype.set=function(t){},q.prototype.getDefault=function(){return this.default},q.prototype.setDefault=function(){this.set(this.default)};var Z=function(e){function r(){e.apply(this,arguments)}return e&&(r.__proto__=e),(r.prototype=Object.create(e&&e.prototype)).constructor=r,r.prototype.getDefault=function(){return t.Color.transparent},r.prototype.set=function(t){var e=this.current;(t.r!==e.r||t.g!==e.g||t.b!==e.b||t.a!==e.a||this.dirty)&&(this.gl.clearColor(t.r,t.g,t.b,t.a),this.current=t,this.dirty=!1)},r}(q),G=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){return 1},e.prototype.set=function(t){(t!==this.current||this.dirty)&&(this.gl.clearDepth(t),this.current=t,this.dirty=!1)},e}(q),X=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){return 0},e.prototype.set=function(t){(t!==this.current||this.dirty)&&(this.gl.clearStencil(t),this.current=t,this.dirty=!1)},e}(q),W=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){return[!0,!0,!0,!0]},e.prototype.set=function(t){var e=this.current;(t[0]!==e[0]||t[1]!==e[1]||t[2]!==e[2]||t[3]!==e[3]||this.dirty)&&(this.gl.colorMask(t[0],t[1],t[2],t[3]),this.current=t,this.dirty=!1)},e}(q),K=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){return!0},e.prototype.set=function(t){(t!==this.current||this.dirty)&&(this.gl.depthMask(t),this.current=t,this.dirty=!1)},e}(q),H=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){return 255},e.prototype.set=function(t){(t!==this.current||this.dirty)&&(this.gl.stencilMask(t),this.current=t,this.dirty=!1)},e}(q),J=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){return{func:this.gl.ALWAYS,ref:0,mask:255}},e.prototype.set=function(t){var e=this.current;(t.func!==e.func||t.ref!==e.ref||t.mask!==e.mask||this.dirty)&&(this.gl.stencilFunc(t.func,t.ref,t.mask),this.current=t,this.dirty=!1)},e}(q),Y=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){var t=this.gl;return[t.KEEP,t.KEEP,t.KEEP]},e.prototype.set=function(t){var e=this.current;(t[0]!==e[0]||t[1]!==e[1]||t[2]!==e[2]||this.dirty)&&(this.gl.stencilOp(t[0],t[1],t[2]),this.current=t,this.dirty=!1)},e}(q),Q=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){return!1},e.prototype.set=function(t){if(t!==this.current||this.dirty){var e=this.gl;t?e.enable(e.STENCIL_TEST):e.disable(e.STENCIL_TEST),this.current=t,this.dirty=!1}},e}(q),$=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){return[0,1]},e.prototype.set=function(t){var e=this.current;(t[0]!==e[0]||t[1]!==e[1]||this.dirty)&&(this.gl.depthRange(t[0],t[1]),this.current=t,this.dirty=!1)},e}(q),tt=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){return!1},e.prototype.set=function(t){if(t!==this.current||this.dirty){var e=this.gl;t?e.enable(e.DEPTH_TEST):e.disable(e.DEPTH_TEST),this.current=t,this.dirty=!1}},e}(q),et=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){return this.gl.LESS},e.prototype.set=function(t){(t!==this.current||this.dirty)&&(this.gl.depthFunc(t),this.current=t,this.dirty=!1)},e}(q),rt=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){return!1},e.prototype.set=function(t){if(t!==this.current||this.dirty){var e=this.gl;t?e.enable(e.BLEND):e.disable(e.BLEND),this.current=t,this.dirty=!1}},e}(q),it=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){var t=this.gl;return[t.ONE,t.ZERO]},e.prototype.set=function(t){var e=this.current;(t[0]!==e[0]||t[1]!==e[1]||this.dirty)&&(this.gl.blendFunc(t[0],t[1]),this.current=t,this.dirty=!1)},e}(q),nt=function(e){function r(){e.apply(this,arguments)}return e&&(r.__proto__=e),(r.prototype=Object.create(e&&e.prototype)).constructor=r,r.prototype.getDefault=function(){return t.Color.transparent},r.prototype.set=function(t){var e=this.current;(t.r!==e.r||t.g!==e.g||t.b!==e.b||t.a!==e.a||this.dirty)&&(this.gl.blendColor(t.r,t.g,t.b,t.a),this.current=t,this.dirty=!1)},r}(q),ot=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){return this.gl.FUNC_ADD},e.prototype.set=function(t){(t!==this.current||this.dirty)&&(this.gl.blendEquation(t),this.current=t,this.dirty=!1)},e}(q),at=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){return!1},e.prototype.set=function(t){if(t!==this.current||this.dirty){var e=this.gl;t?e.enable(e.CULL_FACE):e.disable(e.CULL_FACE),this.current=t,this.dirty=!1}},e}(q),st=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){return this.gl.BACK},e.prototype.set=function(t){(t!==this.current||this.dirty)&&(this.gl.cullFace(t),this.current=t,this.dirty=!1)},e}(q),lt=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){return this.gl.CCW},e.prototype.set=function(t){(t!==this.current||this.dirty)&&(this.gl.frontFace(t),this.current=t,this.dirty=!1)},e}(q),ut=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){return null},e.prototype.set=function(t){(t!==this.current||this.dirty)&&(this.gl.useProgram(t),this.current=t,this.dirty=!1)},e}(q),ct=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){return this.gl.TEXTURE0},e.prototype.set=function(t){(t!==this.current||this.dirty)&&(this.gl.activeTexture(t),this.current=t,this.dirty=!1)},e}(q),pt=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){var t=this.gl;return[0,0,t.drawingBufferWidth,t.drawingBufferHeight]},e.prototype.set=function(t){var e=this.current;(t[0]!==e[0]||t[1]!==e[1]||t[2]!==e[2]||t[3]!==e[3]||this.dirty)&&(this.gl.viewport(t[0],t[1],t[2],t[3]),this.current=t,this.dirty=!1)},e}(q),ht=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){return null},e.prototype.set=function(t){if(t!==this.current||this.dirty){var e=this.gl;e.bindFramebuffer(e.FRAMEBUFFER,t),this.current=t,this.dirty=!1}},e}(q),ft=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){return null},e.prototype.set=function(t){if(t!==this.current||this.dirty){var e=this.gl;e.bindRenderbuffer(e.RENDERBUFFER,t),this.current=t,this.dirty=!1}},e}(q),dt=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){return null},e.prototype.set=function(t){if(t!==this.current||this.dirty){var e=this.gl;e.bindTexture(e.TEXTURE_2D,t),this.current=t,this.dirty=!1}},e}(q),mt=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){return null},e.prototype.set=function(t){if(t!==this.current||this.dirty){var e=this.gl;e.bindBuffer(e.ARRAY_BUFFER,t),this.current=t,this.dirty=!1}},e}(q),yt=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){return null},e.prototype.set=function(t){var e=this.gl;e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t),this.current=t,this.dirty=!1},e}(q),gt=function(t){function e(e){t.call(this,e),this.vao=e.extVertexArrayObject}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){return null},e.prototype.set=function(t){this.vao&&(t!==this.current||this.dirty)&&(this.vao.bindVertexArrayOES(t),this.current=t,this.dirty=!1)},e}(q),_t=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){return 4},e.prototype.set=function(t){if(t!==this.current||this.dirty){var e=this.gl;e.pixelStorei(e.UNPACK_ALIGNMENT,t),this.current=t,this.dirty=!1}},e}(q),vt=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){return!1},e.prototype.set=function(t){if(t!==this.current||this.dirty){var e=this.gl;e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,t),this.current=t,this.dirty=!1}},e}(q),xt=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){return!1},e.prototype.set=function(t){if(t!==this.current||this.dirty){var e=this.gl;e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,t),this.current=t,this.dirty=!1}},e}(q),bt=function(t){function e(e,r){t.call(this,e),this.context=e,this.parent=r}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.getDefault=function(){return null},e}(q),wt=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.setDirty=function(){this.dirty=!0},e.prototype.set=function(t){if(t!==this.current||this.dirty){this.context.bindFramebuffer.set(this.parent);var e=this.gl;e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,t,0),this.current=t,this.dirty=!1}},e}(bt),St=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.set=function(t){if(t!==this.current||this.dirty){this.context.bindFramebuffer.set(this.parent);var e=this.gl;e.framebufferRenderbuffer(e.FRAMEBUFFER,e.DEPTH_ATTACHMENT,e.RENDERBUFFER,t),this.current=t,this.dirty=!1}},e}(bt),Tt=function(t,e,r,i){this.context=t,this.width=e,this.height=r;var n=this.framebuffer=t.gl.createFramebuffer();this.colorAttachment=new wt(t,n),i&&(this.depthAttachment=new St(t,n))};Tt.prototype.destroy=function(){var t=this.context.gl,e=this.colorAttachment.get();if(e&&t.deleteTexture(e),this.depthAttachment){var r=this.depthAttachment.get();r&&t.deleteRenderbuffer(r)}t.deleteFramebuffer(this.framebuffer)};var It=function(t,e,r){this.func=t,this.mask=e,this.range=r};It.ReadOnly=!1,It.ReadWrite=!0,It.disabled=new It(519,It.ReadOnly,[0,1]);var Et=function(t,e,r,i,n,o){this.test=t,this.ref=e,this.mask=r,this.fail=i,this.depthFail=n,this.pass=o};Et.disabled=new Et({func:519,mask:0},0,0,7680,7680,7680);var At=function(t,e,r){this.blendFunction=t,this.blendColor=e,this.mask=r};At.disabled=new At(At.Replace=[1,0],t.Color.transparent,[!1,!1,!1,!1]),At.unblended=new At(At.Replace,t.Color.transparent,[!0,!0,!0,!0]),At.alphaBlended=new At([1,771],t.Color.transparent,[!0,!0,!0,!0]);var zt=function(t,e,r){this.enable=t,this.mode=e,this.frontFace=r};zt.disabled=new zt(!1,1029,2305),zt.backCCW=new zt(!0,1029,2305);var Pt=function(t){this.gl=t,this.extVertexArrayObject=this.gl.getExtension("OES_vertex_array_object"),this.clearColor=new Z(this),this.clearDepth=new G(this),this.clearStencil=new X(this),this.colorMask=new W(this),this.depthMask=new K(this),this.stencilMask=new H(this),this.stencilFunc=new J(this),this.stencilOp=new Y(this),this.stencilTest=new Q(this),this.depthRange=new $(this),this.depthTest=new tt(this),this.depthFunc=new et(this),this.blend=new rt(this),this.blendFunc=new it(this),this.blendColor=new nt(this),this.blendEquation=new ot(this),this.cullFace=new at(this),this.cullFaceSide=new st(this),this.frontFace=new lt(this),this.program=new ut(this),this.activeTexture=new ct(this),this.viewport=new pt(this),this.bindFramebuffer=new ht(this),this.bindRenderbuffer=new ft(this),this.bindTexture=new dt(this),this.bindVertexBuffer=new mt(this),this.bindElementBuffer=new yt(this),this.bindVertexArrayOES=this.extVertexArrayObject&&new gt(this),this.pixelStoreUnpack=new _t(this),this.pixelStoreUnpackPremultiplyAlpha=new vt(this),this.pixelStoreUnpackFlipY=new xt(this),this.extTextureFilterAnisotropic=t.getExtension("EXT_texture_filter_anisotropic")||t.getExtension("MOZ_EXT_texture_filter_anisotropic")||t.getExtension("WEBKIT_EXT_texture_filter_anisotropic"),this.extTextureFilterAnisotropic&&(this.extTextureFilterAnisotropicMax=t.getParameter(this.extTextureFilterAnisotropic.MAX_TEXTURE_MAX_ANISOTROPY_EXT)),this.extTextureHalfFloat=t.getExtension("OES_texture_half_float"),this.extTextureHalfFloat&&(t.getExtension("OES_texture_half_float_linear"),this.extRenderToTextureHalfFloat=t.getExtension("EXT_color_buffer_half_float")),this.extTimerQuery=t.getExtension("EXT_disjoint_timer_query")};Pt.prototype.setDefault=function(){this.unbindVAO(),this.clearColor.setDefault(),this.clearDepth.setDefault(),this.clearStencil.setDefault(),this.colorMask.setDefault(),this.depthMask.setDefault(),this.stencilMask.setDefault(),this.stencilFunc.setDefault(),this.stencilOp.setDefault(),this.stencilTest.setDefault(),this.depthRange.setDefault(),this.depthTest.setDefault(),this.depthFunc.setDefault(),this.blend.setDefault(),this.blendFunc.setDefault(),this.blendColor.setDefault(),this.blendEquation.setDefault(),this.cullFace.setDefault(),this.cullFaceSide.setDefault(),this.frontFace.setDefault(),this.program.setDefault(),this.activeTexture.setDefault(),this.bindFramebuffer.setDefault(),this.pixelStoreUnpack.setDefault(),this.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.pixelStoreUnpackFlipY.setDefault()},Pt.prototype.setDirty=function(){this.clearColor.dirty=!0,this.clearDepth.dirty=!0,this.clearStencil.dirty=!0,this.colorMask.dirty=!0,this.depthMask.dirty=!0,this.stencilMask.dirty=!0,this.stencilFunc.dirty=!0,this.stencilOp.dirty=!0,this.stencilTest.dirty=!0,this.depthRange.dirty=!0,this.depthTest.dirty=!0,this.depthFunc.dirty=!0,this.blend.dirty=!0,this.blendFunc.dirty=!0,this.blendColor.dirty=!0,this.blendEquation.dirty=!0,this.cullFace.dirty=!0,this.cullFaceSide.dirty=!0,this.frontFace.dirty=!0,this.program.dirty=!0,this.activeTexture.dirty=!0,this.viewport.dirty=!0,this.bindFramebuffer.dirty=!0,this.bindRenderbuffer.dirty=!0,this.bindTexture.dirty=!0,this.bindVertexBuffer.dirty=!0,this.bindElementBuffer.dirty=!0,this.extVertexArrayObject&&(this.bindVertexArrayOES.dirty=!0),this.pixelStoreUnpack.dirty=!0,this.pixelStoreUnpackPremultiplyAlpha.dirty=!0,this.pixelStoreUnpackFlipY.dirty=!0},Pt.prototype.createIndexBuffer=function(t,e){return new V(this,t,e)},Pt.prototype.createVertexBuffer=function(t,e,r){return new j(this,t,e,r)},Pt.prototype.createRenderbuffer=function(t,e,r){var i=this.gl,n=i.createRenderbuffer();return this.bindRenderbuffer.set(n),i.renderbufferStorage(i.RENDERBUFFER,t,e,r),this.bindRenderbuffer.set(null),n},Pt.prototype.createFramebuffer=function(t,e,r){return new Tt(this,t,e,r)},Pt.prototype.clear=function(t){var e=t.color,r=t.depth,i=this.gl,n=0;e&&(n|=i.COLOR_BUFFER_BIT,this.clearColor.set(e),this.colorMask.set([!0,!0,!0,!0])),void 0!==r&&(n|=i.DEPTH_BUFFER_BIT,this.depthRange.set([0,1]),this.clearDepth.set(r),this.depthMask.set(!0)),i.clear(n)},Pt.prototype.setCullFace=function(t){!1===t.enable?this.cullFace.set(!1):(this.cullFace.set(!0),this.cullFaceSide.set(t.mode),this.frontFace.set(t.frontFace))},Pt.prototype.setDepthMode=function(t){t.func!==this.gl.ALWAYS||t.mask?(this.depthTest.set(!0),this.depthFunc.set(t.func),this.depthMask.set(t.mask),this.depthRange.set(t.range)):this.depthTest.set(!1)},Pt.prototype.setStencilMode=function(t){t.test.func!==this.gl.ALWAYS||t.mask?(this.stencilTest.set(!0),this.stencilMask.set(t.mask),this.stencilOp.set([t.fail,t.depthFail,t.pass]),this.stencilFunc.set({func:t.test.func,ref:t.ref,mask:t.test.mask})):this.stencilTest.set(!1)},Pt.prototype.setColorMode=function(e){t.deepEqual(e.blendFunction,At.Replace)?this.blend.set(!1):(this.blend.set(!0),this.blendFunc.set(e.blendFunction),this.blendColor.set(e.blendColor)),this.colorMask.set(e.mask)},Pt.prototype.unbindVAO=function(){this.extVertexArrayObject&&this.bindVertexArrayOES.set(null)};var Ct=function(e){function r(r,i,n){var o=this;e.call(this),this.id=r,this.dispatcher=n,this.on("data",function(t){"source"===t.dataType&&"metadata"===t.sourceDataType&&(o._sourceLoaded=!0),o._sourceLoaded&&!o._paused&&"source"===t.dataType&&"content"===t.sourceDataType&&(o.reload(),o.transform&&o.update(o.transform))}),this.on("error",function(){o._sourceErrored=!0}),this._source=function(e,r,i,n){var o=new B[r.type](e,r,i,n);if(o.id!==e)throw new Error("Expected Source id to be "+e+" instead of "+o.id);return t.bindAll(["load","abort","unload","serialize","prepare"],o),o}(r,i,n,this),this._tiles={},this._cache=new U(0,this._unloadTile.bind(this)),this._timers={},this._cacheTimers={},this._maxTileCacheSize=null,this._loadedParentTiles={},this._coveredTiles={},this._state=new t.SourceFeatureState}return e&&(r.__proto__=e),(r.prototype=Object.create(e&&e.prototype)).constructor=r,r.prototype.onAdd=function(t){this.map=t,this._maxTileCacheSize=t?t._maxTileCacheSize:null,this._source&&this._source.onAdd&&this._source.onAdd(t)},r.prototype.onRemove=function(t){this._source&&this._source.onRemove&&this._source.onRemove(t)},r.prototype.loaded=function(){if(this._sourceErrored)return!0;if(!this._sourceLoaded)return!1;if(!this._source.loaded())return!1;for(var t in this._tiles){var e=this._tiles[t];if("loaded"!==e.state&&"errored"!==e.state)return!1}return!0},r.prototype.getSource=function(){return this._source},r.prototype.pause=function(){this._paused=!0},r.prototype.resume=function(){if(this._paused){var t=this._shouldReloadOnResume;this._paused=!1,this._shouldReloadOnResume=!1,t&&this.reload(),this.transform&&this.update(this.transform)}},r.prototype._loadTile=function(t,e){return this._source.loadTile(t,e)},r.prototype._unloadTile=function(t){if(this._source.unloadTile)return this._source.unloadTile(t,function(){})},r.prototype._abortTile=function(t){if(this._source.abortTile)return this._source.abortTile(t,function(){})},r.prototype.serialize=function(){return this._source.serialize()},r.prototype.prepare=function(t){for(var e in this._source.prepare&&this._source.prepare(),this._state.coalesceChanges(this._tiles,this.map?this.map.painter:null),this._tiles){var r=this._tiles[e];r.upload(t),r.prepare(this.map.style.imageManager)}},r.prototype.getIds=function(){return t.values(this._tiles).map(function(t){return t.tileID}).sort(kt).map(function(t){return t.key})},r.prototype.getRenderableIds=function(e){var r=this,i=[];for(var n in this._tiles)this._isIdRenderable(n,e)&&i.push(this._tiles[n]);return e?i.sort(function(e,i){var n=e.tileID,o=i.tileID,a=new t.Point(n.canonical.x,n.canonical.y)._rotate(r.transform.angle),s=new t.Point(o.canonical.x,o.canonical.y)._rotate(r.transform.angle);return n.overscaledZ-o.overscaledZ||s.y-a.y||s.x-a.x}).map(function(t){return t.tileID.key}):i.map(function(t){return t.tileID}).sort(kt).map(function(t){return t.key})},r.prototype.hasRenderableParent=function(t){var e=this.findLoadedParent(t,0);return!!e&&this._isIdRenderable(e.tileID.key)},r.prototype._isIdRenderable=function(t,e){return this._tiles[t]&&this._tiles[t].hasData()&&!this._coveredTiles[t]&&(e||!this._tiles[t].holdingForFade())},r.prototype.reload=function(){if(this._paused)this._shouldReloadOnResume=!0;else for(var t in this._cache.reset(),this._tiles)"errored"!==this._tiles[t].state&&this._reloadTile(t,"reloading")},r.prototype._reloadTile=function(t,e){var r=this._tiles[t];r&&("loading"!==r.state&&(r.state=e),this._loadTile(r,this._tileLoaded.bind(this,r,t,e)))},r.prototype._tileLoaded=function(e,r,i,n){if(n)return e.state="errored",void(404!==n.status?this._source.fire(new t.ErrorEvent(n,{tile:e})):this.update(this.transform));e.timeAdded=t.browser.now(),"expired"===i&&(e.refreshedUponExpiration=!0),this._setTileReloadTimer(r,e),"raster-dem"===this.getSource().type&&e.dem&&this._backfillDEM(e),this._state.initializeTileState(e,this.map?this.map.painter:null),this._source.fire(new t.Event("data",{dataType:"source",tile:e,coord:e.tileID}))},r.prototype._backfillDEM=function(t){for(var e=this.getRenderableIds(),r=0;r<e.length;r++){var i=e[r];if(t.neighboringTiles&&t.neighboringTiles[i]){var n=this.getTileByID(i);o(t,n),o(n,t)}}function o(t,e){t.needsHillshadePrepare=!0;var r=e.tileID.canonical.x-t.tileID.canonical.x,i=e.tileID.canonical.y-t.tileID.canonical.y,n=Math.pow(2,t.tileID.canonical.z),o=e.tileID.key;0===r&&0===i||Math.abs(i)>1||(Math.abs(r)>1&&(1===Math.abs(r+n)?r+=n:1===Math.abs(r-n)&&(r-=n)),e.dem&&t.dem&&(t.dem.backfillBorder(e.dem,r,i),t.neighboringTiles&&t.neighboringTiles[o]&&(t.neighboringTiles[o].backfilled=!0)))}},r.prototype.getTile=function(t){return this.getTileByID(t.key)},r.prototype.getTileByID=function(t){return this._tiles[t]},r.prototype._retainLoadedChildren=function(t,e,r,i){for(var n in this._tiles){var o=this._tiles[n];if(!(i[n]||!o.hasData()||o.tileID.overscaledZ<=e||o.tileID.overscaledZ>r)){for(var a=o.tileID;o&&o.tileID.overscaledZ>e+1;){var s=o.tileID.scaledTo(o.tileID.overscaledZ-1);(o=this._tiles[s.key])&&o.hasData()&&(a=s)}for(var l=a;l.overscaledZ>e;)if(t[(l=l.scaledTo(l.overscaledZ-1)).key]){i[a.key]=a;break}}}},r.prototype.findLoadedParent=function(t,e){if(t.key in this._loadedParentTiles){var r=this._loadedParentTiles[t.key];return r&&r.tileID.overscaledZ>=e?r:null}for(var i=t.overscaledZ-1;i>=e;i--){var n=t.scaledTo(i),o=this._getLoadedTile(n);if(o)return o}},r.prototype._getLoadedTile=function(t){var e=this._tiles[t.key];return e&&e.hasData()?e:this._cache.getByKey(t.wrapped().key)},r.prototype.updateCacheSize=function(t){var e=Math.ceil(t.width/this._source.tileSize)+1,r=Math.ceil(t.height/this._source.tileSize)+1,i=Math.floor(e*r*5),n="number"==typeof this._maxTileCacheSize?Math.min(this._maxTileCacheSize,i):i;this._cache.setMaxSize(n)},r.prototype.handleWrapJump=function(t){var e=Math.round((t-(void 0===this._prevLng?t:this._prevLng))/360);if(this._prevLng=t,e){var r={};for(var i in this._tiles){var n=this._tiles[i];n.tileID=n.tileID.unwrapTo(n.tileID.wrap+e),r[n.tileID.key]=n}for(var o in this._tiles=r,this._timers)clearTimeout(this._timers[o]),delete this._timers[o];for(var a in this._tiles)this._setTileReloadTimer(a,this._tiles[a])}},r.prototype.update=function(e){var i=this;if(this.transform=e,this._sourceLoaded&&!this._paused){var n;this.updateCacheSize(e),this.handleWrapJump(this.transform.center.lng),this._coveredTiles={},this.used?this._source.tileID?n=e.getVisibleUnwrappedCoordinates(this._source.tileID).map(function(e){return new t.OverscaledTileID(e.canonical.z,e.wrap,e.canonical.z,e.canonical.x,e.canonical.y)}):(n=e.coveringTiles({tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled}),this._source.hasTile&&(n=n.filter(function(t){return i._source.hasTile(t)}))):n=[];var o=e.coveringZoomLevel(this._source),a=Math.max(o-r.maxOverzooming,this._source.minzoom),s=Math.max(o+r.maxUnderzooming,this._source.minzoom),l=this._updateRetainedTiles(n,o);if(Mt(this._source.type)){for(var u={},c={},p=0,h=Object.keys(l);p<h.length;p+=1){var f=h[p],d=l[f],m=this._tiles[f];if(m&&!(m.fadeEndTime&&m.fadeEndTime<=t.browser.now())){var y=this.findLoadedParent(d,a);y&&(this._addTile(y.tileID),u[y.tileID.key]=y.tileID),c[f]=d}}for(var g in this._retainLoadedChildren(c,o,s,l),u)l[g]||(this._coveredTiles[g]=!0,l[g]=u[g])}for(var _ in l)this._tiles[_].clearFadeHold();for(var v=0,x=t.keysDifference(this._tiles,l);v<x.length;v+=1){var b=x[v],w=this._tiles[b];w.hasSymbolBuckets&&!w.holdingForFade()?w.setHoldDuration(this.map._fadeDuration):w.hasSymbolBuckets&&!w.symbolFadeFinished()||this._removeTile(b)}this._updateLoadedParentTileCache()}},r.prototype.releaseSymbolFadeTiles=function(){for(var t in this._tiles)this._tiles[t].holdingForFade()&&this._removeTile(t)},r.prototype._updateRetainedTiles=function(t,e){for(var i={},n={},o=Math.max(e-r.maxOverzooming,this._source.minzoom),a=Math.max(e+r.maxUnderzooming,this._source.minzoom),s={},l=0,u=t;l<u.length;l+=1){var c=u[l],p=this._addTile(c);i[c.key]=c,p.hasData()||e<this._source.maxzoom&&(s[c.key]=c)}this._retainLoadedChildren(s,e,a,i);for(var h=0,f=t;h<f.length;h+=1){var d=f[h],m=this._tiles[d.key];if(!m.hasData()){if(e+1>this._source.maxzoom){var y=d.children(this._source.maxzoom)[0],g=this.getTile(y);if(g&&g.hasData()){i[y.key]=y;continue}}else{var _=d.children(this._source.maxzoom);if(i[_[0].key]&&i[_[1].key]&&i[_[2].key]&&i[_[3].key])continue}for(var v=m.wasRequested(),x=d.overscaledZ-1;x>=o;--x){var b=d.scaledTo(x);if(n[b.key])break;if(n[b.key]=!0,!(m=this.getTile(b))&&v&&(m=this._addTile(b)),m&&(i[b.key]=b,v=m.wasRequested(),m.hasData()))break}}}return i},r.prototype._updateLoadedParentTileCache=function(){for(var t in this._loadedParentTiles={},this._tiles){for(var e=[],r=void 0,i=this._tiles[t].tileID;i.overscaledZ>0;){if(i.key in this._loadedParentTiles){r=this._loadedParentTiles[i.key];break}e.push(i.key);var n=i.scaledTo(i.overscaledZ-1);if(r=this._getLoadedTile(n))break;i=n}for(var o=0,a=e;o<a.length;o+=1)this._loadedParentTiles[a[o]]=r}},r.prototype._addTile=function(e){var r=this._tiles[e.key];if(r)return r;(r=this._cache.getAndRemove(e))&&(this._setTileReloadTimer(e.key,r),r.tileID=e,this._state.initializeTileState(r,this.map?this.map.painter:null),this._cacheTimers[e.key]&&(clearTimeout(this._cacheTimers[e.key]),delete this._cacheTimers[e.key],this._setTileReloadTimer(e.key,r)));var i=Boolean(r);return i||(r=new t.Tile(e,this._source.tileSize*e.overscaleFactor()),this._loadTile(r,this._tileLoaded.bind(this,r,e.key,r.state))),r?(r.uses++,this._tiles[e.key]=r,i||this._source.fire(new t.Event("dataloading",{tile:r,coord:r.tileID,dataType:"source"})),r):null},r.prototype._setTileReloadTimer=function(t,e){var r=this;t in this._timers&&(clearTimeout(this._timers[t]),delete this._timers[t]);var i=e.getExpiryTimeout();i&&(this._timers[t]=setTimeout(function(){r._reloadTile(t,"expired"),delete r._timers[t]},i))},r.prototype._removeTile=function(t){var e=this._tiles[t];e&&(e.uses--,delete this._tiles[t],this._timers[t]&&(clearTimeout(this._timers[t]),delete this._timers[t]),e.uses>0||(e.hasData()&&"reloading"!==e.state?this._cache.add(e.tileID,e,e.getExpiryTimeout()):(e.aborted=!0,this._abortTile(e),this._unloadTile(e))))},r.prototype.clearTiles=function(){for(var t in this._shouldReloadOnResume=!1,this._paused=!1,this._tiles)this._removeTile(t);this._cache.reset()},r.prototype.tilesIn=function(e,r,i){var n=this,o=[],a=this.transform;if(!a)return o;for(var s=i?a.getCameraQueryGeometry(e):e,l=e.map(function(t){return a.pointCoordinate(t)}),u=s.map(function(t){return a.pointCoordinate(t)}),c=this.getIds(),p=1/0,h=1/0,f=-1/0,d=-1/0,m=0,y=u;m<y.length;m+=1){var g=y[m];p=Math.min(p,g.x),h=Math.min(h,g.y),f=Math.max(f,g.x),d=Math.max(d,g.y)}for(var _=function(e){var i=n._tiles[c[e]];if(!i.holdingForFade()){var s=i.tileID,m=Math.pow(2,a.zoom-i.tileID.overscaledZ),y=r*i.queryPadding*t.EXTENT/i.tileSize/m,g=[s.getTilePoint(new t.MercatorCoordinate(p,h)),s.getTilePoint(new t.MercatorCoordinate(f,d))];if(g[0].x-y<t.EXTENT&&g[0].y-y<t.EXTENT&&g[1].x+y>=0&&g[1].y+y>=0){var _=l.map(function(t){return s.getTilePoint(t)}),v=u.map(function(t){return s.getTilePoint(t)});o.push({tile:i,tileID:s,queryGeometry:_,cameraQueryGeometry:v,scale:m})}}},v=0;v<c.length;v++)_(v);return o},r.prototype.getVisibleCoordinates=function(t){for(var e=this,r=this.getRenderableIds(t).map(function(t){return e._tiles[t].tileID}),i=0,n=r;i<n.length;i+=1){var o=n[i];o.posMatrix=this.transform.calculatePosMatrix(o.toUnwrapped())}return r},r.prototype.hasTransition=function(){if(this._source.hasTransition())return!0;if(Mt(this._source.type))for(var e in this._tiles){var r=this._tiles[e];if(void 0!==r.fadeEndTime&&r.fadeEndTime>=t.browser.now())return!0}return!1},r.prototype.setFeatureState=function(t,e,r){this._state.updateState(t=t||"_geojsonTileLayer",e,r)},r.prototype.removeFeatureState=function(t,e,r){this._state.removeFeatureState(t=t||"_geojsonTileLayer",e,r)},r.prototype.getFeatureState=function(t,e){return this._state.getState(t=t||"_geojsonTileLayer",e)},r.prototype.setDependencies=function(t,e,r){var i=this._tiles[t];i&&i.setDependencies(e,r)},r.prototype.reloadTilesForDependencies=function(t,e){for(var r in this._tiles)this._tiles[r].hasDependency(t,e)&&this._reloadTile(r,"reloading");this._cache.filter(function(r){return!r.hasDependency(t,e)})},r}(t.Evented);function kt(t,e){var r=Math.abs(2*t.wrap)-+(t.wrap<0),i=Math.abs(2*e.wrap)-+(e.wrap<0);return t.overscaledZ-e.overscaledZ||i-r||e.canonical.y-t.canonical.y||e.canonical.x-t.canonical.x}function Mt(t){return"raster"===t||"image"===t||"video"===t}function Dt(){return new t.window.Worker(Xn.workerUrl)}Ct.maxOverzooming=10,Ct.maxUnderzooming=3;var Lt="mapboxgl_preloaded_worker_pool",Bt=function(){this.active={}};Bt.prototype.acquire=function(t){if(!this.workers)for(this.workers=[];this.workers.length<Bt.workerCount;)this.workers.push(new Dt);return this.active[t]=!0,this.workers.slice()},Bt.prototype.release=function(t){delete this.active[t],0===this.numActive()&&(this.workers.forEach(function(t){t.terminate()}),this.workers=null)},Bt.prototype.isPreloaded=function(){return!!this.active[Lt]},Bt.prototype.numActive=function(){return Object.keys(this.active).length};var Rt,Ft=Math.floor(t.browser.hardwareConcurrency/2);function Ot(){return Rt||(Rt=new Bt),Rt}function Ut(e,r){var i={};for(var n in e)"ref"!==n&&(i[n]=e[n]);return t.refProperties.forEach(function(t){t in r&&(i[t]=r[t])}),i}function Vt(t){t=t.slice();for(var e=Object.create(null),r=0;r<t.length;r++)e[t[r].id]=t[r];for(var i=0;i<t.length;i++)"ref"in t[i]&&(t[i]=Ut(t[i],e[t[i].ref]));return t}Bt.workerCount=Math.max(Math.min(Ft,6),1);var Nt={setStyle:"setStyle",addLayer:"addLayer",removeLayer:"removeLayer",setPaintProperty:"setPaintProperty",setLayoutProperty:"setLayoutProperty",setFilter:"setFilter",addSource:"addSource",removeSource:"removeSource",setGeoJSONSourceData:"setGeoJSONSourceData",setLayerZoomRange:"setLayerZoomRange",setLayerProperty:"setLayerProperty",setCenter:"setCenter",setZoom:"setZoom",setBearing:"setBearing",setPitch:"setPitch",setSprite:"setSprite",setGlyphs:"setGlyphs",setTransition:"setTransition",setLight:"setLight"};function jt(t,e,r){r.push({command:Nt.addSource,args:[t,e[t]]})}function qt(t,e,r){e.push({command:Nt.removeSource,args:[t]}),r[t]=!0}function Zt(t,e,r,i){qt(t,r,i),jt(t,e,r)}function Gt(e,r,i){var n;for(n in e[i])if(e[i].hasOwnProperty(n)&&"data"!==n&&!t.deepEqual(e[i][n],r[i][n]))return!1;for(n in r[i])if(r[i].hasOwnProperty(n)&&"data"!==n&&!t.deepEqual(e[i][n],r[i][n]))return!1;return!0}function Xt(e,r,i,n,o,a){var s;for(s in r=r||{},e=e||{})e.hasOwnProperty(s)&&(t.deepEqual(e[s],r[s])||i.push({command:a,args:[n,s,r[s],o]}));for(s in r)r.hasOwnProperty(s)&&!e.hasOwnProperty(s)&&(t.deepEqual(e[s],r[s])||i.push({command:a,args:[n,s,r[s],o]}))}function Wt(t){return t.id}function Kt(t,e){return t[e.id]=e,t}var Ht=function(t,e){this.reset(t,e)};Ht.prototype.reset=function(t,e){this.points=t||[],this._distances=[0];for(var r=1;r<this.points.length;r++)this._distances[r]=this._distances[r-1]+this.points[r].dist(this.points[r-1]);this.length=this._distances[this._distances.length-1],this.padding=Math.min(e||0,.5*this.length),this.paddedLength=this.length-2*this.padding},Ht.prototype.lerp=function(e){if(1===this.points.length)return this.points[0];e=t.clamp(e,0,1);for(var r=1,i=this._distances[r],n=e*this.paddedLength+this.padding;i<n&&r<this._distances.length;)i=this._distances[++r];var o=r-1,a=this._distances[o],s=i-a,l=s>0?(n-a)/s:0;return this.points[o].mult(1-l).add(this.points[r].mult(l))};var Jt=function(t,e,r){var i=this.boxCells=[],n=this.circleCells=[];this.xCellCount=Math.ceil(t/r),this.yCellCount=Math.ceil(e/r);for(var o=0;o<this.xCellCount*this.yCellCount;o++)i.push([]),n.push([]);this.circleKeys=[],this.boxKeys=[],this.bboxes=[],this.circles=[],this.width=t,this.height=e,this.xScale=this.xCellCount/t,this.yScale=this.yCellCount/e,this.boxUid=0,this.circleUid=0};function Yt(e,r,i,n,o){var a=t.create();return r?(t.scale(a,a,[1/o,1/o,1]),i||t.rotateZ(a,a,n.angle)):t.multiply(a,n.labelPlaneMatrix,e),a}function Qt(e,r,i,n,o){if(r){var a=t.clone(e);return t.scale(a,a,[o,o,1]),i||t.rotateZ(a,a,-n.angle),a}return n.glCoordMatrix}function $t(e,r){var i=[e.x,e.y,0,1];ce(i,i,r);var n=i[3];return{point:new t.Point(i[0]/n,i[1]/n),signedDistanceFromCamera:n}}function te(t,e){return.5+t/e*.5}function ee(t,e){var r=t[0]/t[3],i=t[1]/t[3];return r>=-e[0]&&r<=e[0]&&i>=-e[1]&&i<=e[1]}function re(e,r,i,n,o,a,s,l){var u=n?e.textSizeData:e.iconSizeData,c=t.evaluateSizeForZoom(u,i.transform.zoom),p=[256/i.width*2+1,256/i.height*2+1],h=n?e.text.dynamicLayoutVertexArray:e.icon.dynamicLayoutVertexArray;h.clear();for(var f=e.lineVertexArray,d=n?e.text.placedSymbolArray:e.icon.placedSymbolArray,m=i.transform.width/i.transform.height,y=!1,g=0;g<d.length;g++){var _=d.get(g);if(_.hidden||_.writingMode===t.WritingMode.vertical&&!y)ue(_.numGlyphs,h);else{y=!1;var v=[_.anchorX,_.anchorY,0,1];if(t.transformMat4(v,v,r),ee(v,p)){var x=te(i.transform.cameraToCenterDistance,v[3]),b=t.evaluateSizeForFeature(u,c,_),w=s?b/x:b*x,S=new t.Point(_.anchorX,_.anchorY),T=$t(S,o).point,I={},E=oe(_,w,!1,l,r,o,a,e.glyphOffsetArray,f,h,T,S,I,m);y=E.useVertical,(E.notEnoughRoom||y||E.needsFlipping&&oe(_,w,!0,l,r,o,a,e.glyphOffsetArray,f,h,T,S,I,m).notEnoughRoom)&&ue(_.numGlyphs,h)}else ue(_.numGlyphs,h)}}n?e.text.dynamicLayoutVertexBuffer.updateData(h):e.icon.dynamicLayoutVertexBuffer.updateData(h)}function ie(t,e,r,i,n,o,a,s,l,u,c){var p=s.glyphStartIndex+s.numGlyphs,h=s.lineStartIndex,f=s.lineStartIndex+s.lineLength,d=e.getoffsetX(s.glyphStartIndex),m=e.getoffsetX(p-1),y=se(t*d,r,i,n,o,a,s.segment,h,f,l,u,c);if(!y)return null;var g=se(t*m,r,i,n,o,a,s.segment,h,f,l,u,c);return g?{first:y,last:g}:null}function ne(e,r,i,n){return e===t.WritingMode.horizontal&&Math.abs(i.y-r.y)>Math.abs(i.x-r.x)*n?{useVertical:!0}:(e===t.WritingMode.vertical?r.y<i.y:r.x>i.x)?{needsFlipping:!0}:null}function oe(e,r,i,n,o,a,s,l,u,c,p,h,f,d){var m,y=r/24,g=e.lineOffsetX*y,_=e.lineOffsetY*y;if(e.numGlyphs>1){var v=e.glyphStartIndex+e.numGlyphs,x=e.lineStartIndex,b=e.lineStartIndex+e.lineLength,w=ie(y,l,g,_,i,p,h,e,u,a,f);if(!w)return{notEnoughRoom:!0};var S=$t(w.first.point,s).point,T=$t(w.last.point,s).point;if(n&&!i){var I=ne(e.writingMode,S,T,d);if(I)return I}m=[w.first];for(var E=e.glyphStartIndex+1;E<v-1;E++)m.push(se(y*l.getoffsetX(E),g,_,i,p,h,e.segment,x,b,u,a,f));m.push(w.last)}else{if(n&&!i){var A=$t(h,o).point,z=e.lineStartIndex+e.segment+1,P=new t.Point(u.getx(z),u.gety(z)),C=$t(P,o),k=C.signedDistanceFromCamera>0?C.point:ae(h,P,A,1,o),M=ne(e.writingMode,A,k,d);if(M)return M}var D=se(y*l.getoffsetX(e.glyphStartIndex),g,_,i,p,h,e.segment,e.lineStartIndex,e.lineStartIndex+e.lineLength,u,a,f);if(!D)return{notEnoughRoom:!0};m=[D]}for(var L=0,B=m;L<B.length;L+=1){var R=B[L];t.addDynamicAttributes(c,R.point,R.angle)}return{}}function ae(t,e,r,i,n){var o=$t(t.add(t.sub(e)._unit()),n).point,a=r.sub(o);return r.add(a._mult(i/a.mag()))}function se(e,r,i,n,o,a,s,l,u,c,p,h){var f=n?e-r:e+r,d=f>0?1:-1,m=0;n&&(d*=-1,m=Math.PI),d<0&&(m+=Math.PI);for(var y=d>0?l+s:l+s+1,g=o,_=o,v=0,x=0,b=Math.abs(f),w=[];v+x<=b;){if((y+=d)<l||y>=u)return null;if(_=g,w.push(g),void 0===(g=h[y])){var S=new t.Point(c.getx(y),c.gety(y)),T=$t(S,p);if(T.signedDistanceFromCamera>0)g=h[y]=T.point;else{var I=y-d;g=ae(0===v?a:new t.Point(c.getx(I),c.gety(I)),S,_,b-v+1,p)}}v+=x,x=_.dist(g)}var E=(b-v)/x,A=g.sub(_),z=A.mult(E)._add(_);z._add(A._unit()._perp()._mult(i*d));var P=m+Math.atan2(g.y-_.y,g.x-_.x);return w.push(z),{point:z,angle:P,path:w}}Jt.prototype.keysLength=function(){return this.boxKeys.length+this.circleKeys.length},Jt.prototype.insert=function(t,e,r,i,n){this._forEachCell(e,r,i,n,this._insertBoxCell,this.boxUid++),this.boxKeys.push(t),this.bboxes.push(e),this.bboxes.push(r),this.bboxes.push(i),this.bboxes.push(n)},Jt.prototype.insertCircle=function(t,e,r,i){this._forEachCell(e-i,r-i,e+i,r+i,this._insertCircleCell,this.circleUid++),this.circleKeys.push(t),this.circles.push(e),this.circles.push(r),this.circles.push(i)},Jt.prototype._insertBoxCell=function(t,e,r,i,n,o){this.boxCells[n].push(o)},Jt.prototype._insertCircleCell=function(t,e,r,i,n,o){this.circleCells[n].push(o)},Jt.prototype._query=function(t,e,r,i,n,o){if(r<0||t>this.width||i<0||e>this.height)return!n&&[];var a=[];if(t<=0&&e<=0&&this.width<=r&&this.height<=i){if(n)return!0;for(var s=0;s<this.boxKeys.length;s++)a.push({key:this.boxKeys[s],x1:this.bboxes[4*s],y1:this.bboxes[4*s+1],x2:this.bboxes[4*s+2],y2:this.bboxes[4*s+3]});for(var l=0;l<this.circleKeys.length;l++){var u=this.circles[3*l],c=this.circles[3*l+1],p=this.circles[3*l+2];a.push({key:this.circleKeys[l],x1:u-p,y1:c-p,x2:u+p,y2:c+p})}return o?a.filter(o):a}return this._forEachCell(t,e,r,i,this._queryCell,a,{hitTest:n,seenUids:{box:{},circle:{}}},o),n?a.length>0:a},Jt.prototype._queryCircle=function(t,e,r,i,n){var o=t-r,a=t+r,s=e-r,l=e+r;if(a<0||o>this.width||l<0||s>this.height)return!i&&[];var u=[];return this._forEachCell(o,s,a,l,this._queryCellCircle,u,{hitTest:i,circle:{x:t,y:e,radius:r},seenUids:{box:{},circle:{}}},n),i?u.length>0:u},Jt.prototype.query=function(t,e,r,i,n){return this._query(t,e,r,i,!1,n)},Jt.prototype.hitTest=function(t,e,r,i,n){return this._query(t,e,r,i,!0,n)},Jt.prototype.hitTestCircle=function(t,e,r,i){return this._queryCircle(t,e,r,!0,i)},Jt.prototype._queryCell=function(t,e,r,i,n,o,a,s){var l=a.seenUids,u=this.boxCells[n];if(null!==u)for(var c=this.bboxes,p=0,h=u;p<h.length;p+=1){var f=h[p];if(!l.box[f]){l.box[f]=!0;var d=4*f;if(t<=c[d+2]&&e<=c[d+3]&&r>=c[d+0]&&i>=c[d+1]&&(!s||s(this.boxKeys[f]))){if(a.hitTest)return o.push(!0),!0;o.push({key:this.boxKeys[f],x1:c[d],y1:c[d+1],x2:c[d+2],y2:c[d+3]})}}}var m=this.circleCells[n];if(null!==m)for(var y=this.circles,g=0,_=m;g<_.length;g+=1){var v=_[g];if(!l.circle[v]){l.circle[v]=!0;var x=3*v;if(this._circleAndRectCollide(y[x],y[x+1],y[x+2],t,e,r,i)&&(!s||s(this.circleKeys[v]))){if(a.hitTest)return o.push(!0),!0;var b=y[x],w=y[x+1],S=y[x+2];o.push({key:this.circleKeys[v],x1:b-S,y1:w-S,x2:b+S,y2:w+S})}}}},Jt.prototype._queryCellCircle=function(t,e,r,i,n,o,a,s){var l=a.circle,u=a.seenUids,c=this.boxCells[n];if(null!==c)for(var p=this.bboxes,h=0,f=c;h<f.length;h+=1){var d=f[h];if(!u.box[d]){u.box[d]=!0;var m=4*d;if(this._circleAndRectCollide(l.x,l.y,l.radius,p[m+0],p[m+1],p[m+2],p[m+3])&&(!s||s(this.boxKeys[d])))return o.push(!0),!0}}var y=this.circleCells[n];if(null!==y)for(var g=this.circles,_=0,v=y;_<v.length;_+=1){var x=v[_];if(!u.circle[x]){u.circle[x]=!0;var b=3*x;if(this._circlesCollide(g[b],g[b+1],g[b+2],l.x,l.y,l.radius)&&(!s||s(this.circleKeys[x])))return o.push(!0),!0}}},Jt.prototype._forEachCell=function(t,e,r,i,n,o,a,s){for(var l=this._convertToXCellCoord(t),u=this._convertToYCellCoord(e),c=this._convertToXCellCoord(r),p=this._convertToYCellCoord(i),h=l;h<=c;h++)for(var f=u;f<=p;f++)if(n.call(this,t,e,r,i,this.xCellCount*f+h,o,a,s))return},Jt.prototype._convertToXCellCoord=function(t){return Math.max(0,Math.min(this.xCellCount-1,Math.floor(t*this.xScale)))},Jt.prototype._convertToYCellCoord=function(t){return Math.max(0,Math.min(this.yCellCount-1,Math.floor(t*this.yScale)))},Jt.prototype._circlesCollide=function(t,e,r,i,n,o){var a=i-t,s=n-e,l=r+o;return l*l>a*a+s*s},Jt.prototype._circleAndRectCollide=function(t,e,r,i,n,o,a){var s=(o-i)/2,l=Math.abs(t-(i+s));if(l>s+r)return!1;var u=(a-n)/2,c=Math.abs(e-(n+u));if(c>u+r)return!1;if(l<=s||c<=u)return!0;var p=l-s,h=c-u;return p*p+h*h<=r*r};var le=new Float32Array([-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0]);function ue(t,e){for(var r=0;r<t;r++){var i=e.length;e.resize(i+4),e.float32.set(le,3*i)}}function ce(t,e,r){var i=e[0],n=e[1];return t[0]=r[0]*i+r[4]*n+r[12],t[1]=r[1]*i+r[5]*n+r[13],t[3]=r[3]*i+r[7]*n+r[15],t}var pe=function(t,e,r){void 0===e&&(e=new Jt(t.width+200,t.height+200,25)),void 0===r&&(r=new Jt(t.width+200,t.height+200,25)),this.transform=t,this.grid=e,this.ignoredGrid=r,this.pitchfactor=Math.cos(t._pitch)*t.cameraToCenterDistance,this.screenRightBoundary=t.width+100,this.screenBottomBoundary=t.height+100,this.gridRightBoundary=t.width+200,this.gridBottomBoundary=t.height+200};function he(e,r,i){return r*(t.EXTENT/(e.tileSize*Math.pow(2,i-e.tileID.overscaledZ)))}pe.prototype.placeCollisionBox=function(t,e,r,i,n){var o=this.projectAndGetPerspectiveRatio(i,t.anchorPointX,t.anchorPointY),a=r*o.perspectiveRatio,s=t.x1*a+o.point.x,l=t.y1*a+o.point.y,u=t.x2*a+o.point.x,c=t.y2*a+o.point.y;return!this.isInsideGrid(s,l,u,c)||!e&&this.grid.hitTest(s,l,u,c,n)?{box:[],offscreen:!1}:{box:[s,l,u,c],offscreen:this.isOffscreen(s,l,u,c)}},pe.prototype.placeCollisionCircles=function(e,r,i,n,o,a,s,l,u,c,p,h,f){var d=[],m=new t.Point(r.anchorX,r.anchorY),y=$t(m,a),g=te(this.transform.cameraToCenterDistance,y.signedDistanceFromCamera),_=(c?o/g:o*g)/t.ONE_EM,v=$t(m,s).point,x=ie(_,n,r.lineOffsetX*_,r.lineOffsetY*_,!1,v,m,r,i,s,{}),b=!1,w=!1,S=!0;if(x){for(var T=.5*h*g+f,I=new t.Point(-100,-100),E=new t.Point(this.screenRightBoundary,this.screenBottomBoundary),A=new Ht,z=x.first,P=x.last,C=[],k=z.path.length-1;k>=1;k--)C.push(z.path[k]);for(var M=1;M<P.path.length;M++)C.push(P.path[M]);var D=2.5*T;if(l){var L=C.map(function(t){return $t(t,l)});C=L.some(function(t){return t.signedDistanceFromCamera<=0})?[]:L.map(function(t){return t.point})}var B=[];if(C.length>0){for(var R=C[0].clone(),F=C[0].clone(),O=1;O<C.length;O++)R.x=Math.min(R.x,C[O].x),R.y=Math.min(R.y,C[O].y),F.x=Math.max(F.x,C[O].x),F.y=Math.max(F.y,C[O].y);B=R.x>=I.x&&F.x<=E.x&&R.y>=I.y&&F.y<=E.y?[C]:F.x<I.x||R.x>E.x||F.y<I.y||R.y>E.y?[]:t.clipLine([C],I.x,I.y,E.x,E.y)}for(var U=0,V=B;U<V.length;U+=1){var N;A.reset(V[U],.25*T),N=A.length<=.5*T?1:Math.ceil(A.paddedLength/D)+1;for(var j=0;j<N;j++){var q=j/Math.max(N-1,1),Z=A.lerp(q),G=Z.x+100,X=Z.y+100;d.push(G,X,T,0);var W=G-T,K=X-T,H=G+T,J=X+T;if(S=S&&this.isOffscreen(W,K,H,J),w=w||this.isInsideGrid(W,K,H,J),!e&&this.grid.hitTestCircle(G,X,T,p)&&(b=!0,!u))return{circles:[],offscreen:!1,collisionDetected:b}}}}return{circles:!u&&b||!w?[]:d,offscreen:S,collisionDetected:b}},pe.prototype.queryRenderedSymbols=function(e){if(0===e.length||0===this.grid.keysLength()&&0===this.ignoredGrid.keysLength())return{};for(var r=[],i=1/0,n=1/0,o=-1/0,a=-1/0,s=0,l=e;s<l.length;s+=1){var u=l[s],c=new t.Point(u.x+100,u.y+100);i=Math.min(i,c.x),n=Math.min(n,c.y),o=Math.max(o,c.x),a=Math.max(a,c.y),r.push(c)}for(var p={},h={},f=0,d=this.grid.query(i,n,o,a).concat(this.ignoredGrid.query(i,n,o,a));f<d.length;f+=1){var m=d[f],y=m.key;if(void 0===p[y.bucketInstanceId]&&(p[y.bucketInstanceId]={}),!p[y.bucketInstanceId][y.featureIndex]){var g=[new t.Point(m.x1,m.y1),new t.Point(m.x2,m.y1),new t.Point(m.x2,m.y2),new t.Point(m.x1,m.y2)];t.polygonIntersectsPolygon(r,g)&&(p[y.bucketInstanceId][y.featureIndex]=!0,void 0===h[y.bucketInstanceId]&&(h[y.bucketInstanceId]=[]),h[y.bucketInstanceId].push(y.featureIndex))}}return h},pe.prototype.insertCollisionBox=function(t,e,r,i,n){(e?this.ignoredGrid:this.grid).insert({bucketInstanceId:r,featureIndex:i,collisionGroupID:n},t[0],t[1],t[2],t[3])},pe.prototype.insertCollisionCircles=function(t,e,r,i,n){for(var o=e?this.ignoredGrid:this.grid,a={bucketInstanceId:r,featureIndex:i,collisionGroupID:n},s=0;s<t.length;s+=4)o.insertCircle(a,t[s],t[s+1],t[s+2])},pe.prototype.projectAndGetPerspectiveRatio=function(e,r,i){var n=[r,i,0,1];return ce(n,n,e),{point:new t.Point((n[0]/n[3]+1)/2*this.transform.width+100,(-n[1]/n[3]+1)/2*this.transform.height+100),perspectiveRatio:.5+this.transform.cameraToCenterDistance/n[3]*.5}},pe.prototype.isOffscreen=function(t,e,r,i){return r<100||t>=this.screenRightBoundary||i<100||e>this.screenBottomBoundary},pe.prototype.isInsideGrid=function(t,e,r,i){return r>=0&&t<this.gridRightBoundary&&i>=0&&e<this.gridBottomBoundary},pe.prototype.getViewportMatrix=function(){var e=t.identity([]);return t.translate(e,e,[-100,-100,0]),e};var fe=function(t,e,r,i){this.opacity=t?Math.max(0,Math.min(1,t.opacity+(t.placed?e:-e))):i&&r?1:0,this.placed=r};fe.prototype.isHidden=function(){return 0===this.opacity&&!this.placed};var de=function(t,e,r,i,n){this.text=new fe(t?t.text:null,e,r,n),this.icon=new fe(t?t.icon:null,e,i,n)};de.prototype.isHidden=function(){return this.text.isHidden()&&this.icon.isHidden()};var me=function(t,e,r){this.text=t,this.icon=e,this.skipFade=r},ye=function(){this.invProjMatrix=t.create(),this.viewportMatrix=t.create(),this.circles=[]},ge=function(t,e,r,i,n){this.bucketInstanceId=t,this.featureIndex=e,this.sourceLayerIndex=r,this.bucketIndex=i,this.tileID=n},_e=function(t){this.crossSourceCollisions=t,this.maxGroupID=0,this.collisionGroups={}};function ve(e,r,i,n,o){var a=t.getAnchorAlignment(e),s=-(a.horizontalAlign-.5)*r,l=-(a.verticalAlign-.5)*i,u=t.evaluateVariableOffset(e,n);return new t.Point(s+u[0]*o,l+u[1]*o)}function xe(e,r,i,n,o,a){var s=e.x1,l=e.x2,u=e.y1,c=e.y2,p=e.anchorPointX,h=e.anchorPointY,f=new t.Point(r,i);return n&&f._rotate(o?a:-a),{x1:s+f.x,y1:u+f.y,x2:l+f.x,y2:c+f.y,anchorPointX:p,anchorPointY:h}}_e.prototype.get=function(t){if(this.crossSourceCollisions)return{ID:0,predicate:null};if(!this.collisionGroups[t]){var e=++this.maxGroupID;this.collisionGroups[t]={ID:e,predicate:function(t){return t.collisionGroupID===e}}}return this.collisionGroups[t]};var be=function(t,e,r,i){this.transform=t.clone(),this.collisionIndex=new pe(this.transform),this.placements={},this.opacities={},this.variableOffsets={},this.stale=!1,this.commitTime=0,this.fadeDuration=e,this.retainedQueryData={},this.collisionGroups=new _e(r),this.collisionCircleArrays={},this.prevPlacement=i,i&&(i.prevPlacement=void 0),this.placedOrientations={}};function we(t,e,r,i,n){t.emplaceBack(e?1:0,r?1:0,i||0,n||0),t.emplaceBack(e?1:0,r?1:0,i||0,n||0),t.emplaceBack(e?1:0,r?1:0,i||0,n||0),t.emplaceBack(e?1:0,r?1:0,i||0,n||0)}be.prototype.getBucketParts=function(e,r,i,n){var o=i.getBucket(r),a=i.latestFeatureIndex;if(o&&a&&r.id===o.layerIds[0]){var s=i.collisionBoxArray,l=o.layers[0].layout,u=Math.pow(2,this.transform.zoom-i.tileID.overscaledZ),c=i.tileSize/t.EXTENT,p=this.transform.calculatePosMatrix(i.tileID.toUnwrapped()),h="map"===l.get("text-pitch-alignment"),f="map"===l.get("text-rotation-alignment"),d=he(i,1,this.transform.zoom),m=Yt(p,h,f,this.transform,d),y=null;if(h){var g=Qt(p,h,f,this.transform,d);y=t.multiply([],this.transform.labelPlaneMatrix,g)}this.retainedQueryData[o.bucketInstanceId]=new ge(o.bucketInstanceId,a,o.sourceLayerIndex,o.index,i.tileID);var _={bucket:o,layout:l,posMatrix:p,textLabelPlaneMatrix:m,labelToScreenMatrix:y,scale:u,textPixelRatio:c,holdingForFade:i.holdingForFade(),collisionBoxArray:s,partiallyEvaluatedTextSize:t.evaluateSizeForZoom(o.textSizeData,this.transform.zoom),collisionGroup:this.collisionGroups.get(o.sourceID)};if(n)for(var v=0,x=o.sortKeyRanges;v<x.length;v+=1){var b=x[v];e.push({sortKey:b.sortKey,symbolInstanceStart:b.symbolInstanceStart,symbolInstanceEnd:b.symbolInstanceEnd,parameters:_})}else e.push({symbolInstanceStart:0,symbolInstanceEnd:o.symbolInstances.length,parameters:_})}},be.prototype.attemptAnchorPlacement=function(t,e,r,i,n,o,a,s,l,u,c,p,h,f,d){var m,y=[p.textOffset0,p.textOffset1],g=ve(t,r,i,y,n),_=this.collisionIndex.placeCollisionBox(xe(e,g.x,g.y,o,a,this.transform.angle),c,s,l,u.predicate);if(!d||0!==this.collisionIndex.placeCollisionBox(xe(d,g.x,g.y,o,a,this.transform.angle),c,s,l,u.predicate).box.length)return _.box.length>0?(this.prevPlacement&&this.prevPlacement.variableOffsets[p.crossTileID]&&this.prevPlacement.placements[p.crossTileID]&&this.prevPlacement.placements[p.crossTileID].text&&(m=this.prevPlacement.variableOffsets[p.crossTileID].anchor),this.variableOffsets[p.crossTileID]={textOffset:y,width:r,height:i,anchor:t,textBoxScale:n,prevAnchor:m},this.markUsedJustification(h,t,p,f),h.allowVerticalPlacement&&(this.markUsedOrientation(h,f,p),this.placedOrientations[p.crossTileID]=f),{shift:g,placedGlyphBoxes:_}):void 0},be.prototype.placeLayerBucketPart=function(e,r,i){var n=this,o=e.parameters,a=o.bucket,s=o.layout,l=o.posMatrix,u=o.textLabelPlaneMatrix,c=o.labelToScreenMatrix,p=o.textPixelRatio,h=o.holdingForFade,f=o.collisionBoxArray,d=o.partiallyEvaluatedTextSize,m=o.collisionGroup,y=s.get("text-optional"),g=s.get("icon-optional"),_=s.get("text-allow-overlap"),v=s.get("icon-allow-overlap"),x="map"===s.get("text-rotation-alignment"),b="map"===s.get("text-pitch-alignment"),w="none"!==s.get("icon-text-fit"),S="viewport-y"===s.get("symbol-z-order"),T=_&&(v||!a.hasIconData()||g),I=v&&(_||!a.hasTextData()||y);!a.collisionArrays&&f&&a.deserializeCollisionBoxes(f);var E=function(e,o){if(!r[e.crossTileID])if(h)n.placements[e.crossTileID]=new me(!1,!1,!1);else{var f,S=!1,E=!1,A=!0,z=null,P={box:null,offscreen:null},C={box:null,offscreen:null},k=null,M=null,D=0,L=0,B=0;o.textFeatureIndex?D=o.textFeatureIndex:e.useRuntimeCollisionCircles&&(D=e.featureIndex),o.verticalTextFeatureIndex&&(L=o.verticalTextFeatureIndex);var R=o.textBox;if(R){var F=function(r){var i=t.WritingMode.horizontal;if(a.allowVerticalPlacement&&!r&&n.prevPlacement){var o=n.prevPlacement.placedOrientations[e.crossTileID];o&&(n.placedOrientations[e.crossTileID]=o,n.markUsedOrientation(a,i=o,e))}return i},O=function(r,i){if(a.allowVerticalPlacement&&e.numVerticalGlyphVertices>0&&o.verticalTextBox)for(var n=0,s=a.writingModes;n<s.length&&(s[n]===t.WritingMode.vertical?(P=i(),C=P):P=r(),!(P&&P.box&&P.box.length));n+=1);else P=r()};if(s.get("text-variable-anchor")){var U=s.get("text-variable-anchor");if(n.prevPlacement&&n.prevPlacement.variableOffsets[e.crossTileID]){var V=n.prevPlacement.variableOffsets[e.crossTileID];U.indexOf(V.anchor)>0&&(U=U.filter(function(t){return t!==V.anchor})).unshift(V.anchor)}var N=function(t,r,i){for(var o=t.x2-t.x1,s=t.y2-t.y1,u=e.textBoxScale,c=w&&!v?r:null,h={box:[],offscreen:!1},f=_?2*U.length:U.length,d=0;d<f;++d){var y=n.attemptAnchorPlacement(U[d%U.length],t,o,s,u,x,b,p,l,m,d>=U.length,e,a,i,c);if(y&&(h=y.placedGlyphBoxes)&&h.box&&h.box.length){S=!0,z=y.shift;break}}return h};O(function(){return N(R,o.iconBox,t.WritingMode.horizontal)},function(){var r=o.verticalTextBox;return a.allowVerticalPlacement&&!(P&&P.box&&P.box.length)&&e.numVerticalGlyphVertices>0&&r?N(r,o.verticalIconBox,t.WritingMode.vertical):{box:null,offscreen:null}}),P&&(S=P.box,A=P.offscreen);var j=F(P&&P.box);if(!S&&n.prevPlacement){var q=n.prevPlacement.variableOffsets[e.crossTileID];q&&(n.variableOffsets[e.crossTileID]=q,n.markUsedJustification(a,q.anchor,e,j))}}else{var Z=function(t,r){var i=n.collisionIndex.placeCollisionBox(t,_,p,l,m.predicate);return i&&i.box&&i.box.length&&(n.markUsedOrientation(a,r,e),n.placedOrientations[e.crossTileID]=r),i};O(function(){return Z(R,t.WritingMode.horizontal)},function(){var r=o.verticalTextBox;return a.allowVerticalPlacement&&e.numVerticalGlyphVertices>0&&r?Z(r,t.WritingMode.vertical):{box:null,offscreen:null}}),F(P&&P.box&&P.box.length)}}if(S=(f=P)&&f.box&&f.box.length>0,A=f&&f.offscreen,e.useRuntimeCollisionCircles){var G=a.text.placedSymbolArray.get(e.centerJustifiedTextSymbolIndex),X=t.evaluateSizeForFeature(a.textSizeData,d,G),W=s.get("text-padding");k=n.collisionIndex.placeCollisionCircles(_,G,a.lineVertexArray,a.glyphOffsetArray,X,l,u,c,i,b,m.predicate,e.collisionCircleDiameter,W),S=_||k.circles.length>0&&!k.collisionDetected,A=A&&k.offscreen}if(o.iconFeatureIndex&&(B=o.iconFeatureIndex),o.iconBox){var K=function(t){var e=w&&z?xe(t,z.x,z.y,x,b,n.transform.angle):t;return n.collisionIndex.placeCollisionBox(e,v,p,l,m.predicate)};E=C&&C.box&&C.box.length&&o.verticalIconBox?(M=K(o.verticalIconBox)).box.length>0:(M=K(o.iconBox)).box.length>0,A=A&&M.offscreen}var H=y||0===e.numHorizontalGlyphVertices&&0===e.numVerticalGlyphVertices,J=g||0===e.numIconVertices;if(H||J?J?H||(E=E&&S):S=E&&S:E=S=E&&S,S&&f&&f.box&&n.collisionIndex.insertCollisionBox(f.box,s.get("text-ignore-placement"),a.bucketInstanceId,C&&C.box&&L?L:D,m.ID),E&&M&&n.collisionIndex.insertCollisionBox(M.box,s.get("icon-ignore-placement"),a.bucketInstanceId,B,m.ID),k&&(S&&n.collisionIndex.insertCollisionCircles(k.circles,s.get("text-ignore-placement"),a.bucketInstanceId,D,m.ID),i)){var Y=a.bucketInstanceId,Q=n.collisionCircleArrays[Y];void 0===Q&&(Q=n.collisionCircleArrays[Y]=new ye);for(var $=0;$<k.circles.length;$+=4)Q.circles.push(k.circles[$+0]),Q.circles.push(k.circles[$+1]),Q.circles.push(k.circles[$+2]),Q.circles.push(k.collisionDetected?1:0)}n.placements[e.crossTileID]=new me(S||T,E||I,A||a.justReloaded),r[e.crossTileID]=!0}};if(S)for(var A=a.getSortedSymbolIndexes(this.transform.angle),z=A.length-1;z>=0;--z){var P=A[z];E(a.symbolInstances.get(P),a.collisionArrays[P])}else for(var C=e.symbolInstanceStart;C<e.symbolInstanceEnd;C++)E(a.symbolInstances.get(C),a.collisionArrays[C]);if(i&&a.bucketInstanceId in this.collisionCircleArrays){var k=this.collisionCircleArrays[a.bucketInstanceId];t.invert(k.invProjMatrix,l),k.viewportMatrix=this.collisionIndex.getViewportMatrix()}a.justReloaded=!1},be.prototype.markUsedJustification=function(e,r,i,n){var o;o=n===t.WritingMode.vertical?i.verticalPlacedTextSymbolIndex:{left:i.leftJustifiedTextSymbolIndex,center:i.centerJustifiedTextSymbolIndex,right:i.rightJustifiedTextSymbolIndex}[t.getAnchorJustification(r)];for(var a=0,s=[i.leftJustifiedTextSymbolIndex,i.centerJustifiedTextSymbolIndex,i.rightJustifiedTextSymbolIndex,i.verticalPlacedTextSymbolIndex];a<s.length;a+=1){var l=s[a];l>=0&&(e.text.placedSymbolArray.get(l).crossTileID=o>=0&&l!==o?0:i.crossTileID)}},be.prototype.markUsedOrientation=function(e,r,i){for(var n=r===t.WritingMode.horizontal||r===t.WritingMode.horizontalOnly?r:0,o=r===t.WritingMode.vertical?r:0,a=0,s=[i.leftJustifiedTextSymbolIndex,i.centerJustifiedTextSymbolIndex,i.rightJustifiedTextSymbolIndex];a<s.length;a+=1)e.text.placedSymbolArray.get(s[a]).placedOrientation=n;i.verticalPlacedTextSymbolIndex&&(e.text.placedSymbolArray.get(i.verticalPlacedTextSymbolIndex).placedOrientation=o)},be.prototype.commit=function(t){this.commitTime=t,this.zoomAtLastRecencyCheck=this.transform.zoom;var e=this.prevPlacement,r=!1;this.prevZoomAdjustment=e?e.zoomAdjustment(this.transform.zoom):0;var i=e?e.symbolFadeChange(t):1,n=e?e.opacities:{},o=e?e.variableOffsets:{},a=e?e.placedOrientations:{};for(var s in this.placements){var l=this.placements[s],u=n[s];u?(this.opacities[s]=new de(u,i,l.text,l.icon),r=r||l.text!==u.text.placed||l.icon!==u.icon.placed):(this.opacities[s]=new de(null,i,l.text,l.icon,l.skipFade),r=r||l.text||l.icon)}for(var c in n){var p=n[c];if(!this.opacities[c]){var h=new de(p,i,!1,!1);h.isHidden()||(this.opacities[c]=h,r=r||p.text.placed||p.icon.placed)}}for(var f in o)this.variableOffsets[f]||!this.opacities[f]||this.opacities[f].isHidden()||(this.variableOffsets[f]=o[f]);for(var d in a)this.placedOrientations[d]||!this.opacities[d]||this.opacities[d].isHidden()||(this.placedOrientations[d]=a[d]);r?this.lastPlacementChangeTime=t:"number"!=typeof this.lastPlacementChangeTime&&(this.lastPlacementChangeTime=e?e.lastPlacementChangeTime:t)},be.prototype.updateLayerOpacities=function(t,e){for(var r={},i=0,n=e;i<n.length;i+=1){var o=n[i],a=o.getBucket(t);a&&o.latestFeatureIndex&&t.id===a.layerIds[0]&&this.updateBucketOpacities(a,r,o.collisionBoxArray)}},be.prototype.updateBucketOpacities=function(e,r,i){var n=this;e.hasTextData()&&e.text.opacityVertexArray.clear(),e.hasIconData()&&e.icon.opacityVertexArray.clear(),e.hasIconCollisionBoxData()&&e.iconCollisionBox.collisionVertexArray.clear(),e.hasTextCollisionBoxData()&&e.textCollisionBox.collisionVertexArray.clear();var o=e.layers[0].layout,a=new de(null,0,!1,!1,!0),s=o.get("text-allow-overlap"),l=o.get("icon-allow-overlap"),u=o.get("text-variable-anchor"),c="map"===o.get("text-rotation-alignment"),p="map"===o.get("text-pitch-alignment"),h="none"!==o.get("icon-text-fit"),f=new de(null,0,s&&(l||!e.hasIconData()||o.get("icon-optional")),l&&(s||!e.hasTextData()||o.get("text-optional")),!0);!e.collisionArrays&&i&&(e.hasIconCollisionBoxData()||e.hasTextCollisionBoxData())&&e.deserializeCollisionBoxes(i);for(var d=function(t,e,r){for(var i=0;i<e/4;i++)t.opacityVertexArray.emplaceBack(r)},m=function(i){var o=e.symbolInstances.get(i),s=o.numHorizontalGlyphVertices,l=o.numVerticalGlyphVertices,m=o.crossTileID,y=n.opacities[m];r[m]?y=a:y||(n.opacities[m]=y=f),r[m]=!0;var g=o.numIconVertices>0,_=n.placedOrientations[o.crossTileID],v=_===t.WritingMode.vertical,x=_===t.WritingMode.horizontal||_===t.WritingMode.horizontalOnly;if(s>0||l>0){var b=Ce(y.text);d(e.text,s,v?ke:b),d(e.text,l,x?ke:b);var w=y.text.isHidden();[o.rightJustifiedTextSymbolIndex,o.centerJustifiedTextSymbolIndex,o.leftJustifiedTextSymbolIndex].forEach(function(t){t>=0&&(e.text.placedSymbolArray.get(t).hidden=w||v?1:0)}),o.verticalPlacedTextSymbolIndex>=0&&(e.text.placedSymbolArray.get(o.verticalPlacedTextSymbolIndex).hidden=w||x?1:0);var S=n.variableOffsets[o.crossTileID];S&&n.markUsedJustification(e,S.anchor,o,_);var T=n.placedOrientations[o.crossTileID];T&&(n.markUsedJustification(e,"left",o,T),n.markUsedOrientation(e,T,o))}if(g){var I=Ce(y.icon),E=!(h&&o.verticalPlacedIconSymbolIndex&&v);o.placedIconSymbolIndex>=0&&(d(e.icon,o.numIconVertices,E?I:ke),e.icon.placedSymbolArray.get(o.placedIconSymbolIndex).hidden=y.icon.isHidden()),o.verticalPlacedIconSymbolIndex>=0&&(d(e.icon,o.numVerticalIconVertices,E?ke:I),e.icon.placedSymbolArray.get(o.verticalPlacedIconSymbolIndex).hidden=y.icon.isHidden())}if(e.hasIconCollisionBoxData()||e.hasTextCollisionBoxData()){var A=e.collisionArrays[i];if(A){var z=new t.Point(0,0);if(A.textBox||A.verticalTextBox){var P=!0;if(u){var C=n.variableOffsets[m];C?(z=ve(C.anchor,C.width,C.height,C.textOffset,C.textBoxScale),c&&z._rotate(p?n.transform.angle:-n.transform.angle)):P=!1}A.textBox&&we(e.textCollisionBox.collisionVertexArray,y.text.placed,!P||v,z.x,z.y),A.verticalTextBox&&we(e.textCollisionBox.collisionVertexArray,y.text.placed,!P||x,z.x,z.y)}var k=Boolean(!x&&A.verticalIconBox);A.iconBox&&we(e.iconCollisionBox.collisionVertexArray,y.icon.placed,k,h?z.x:0,h?z.y:0),A.verticalIconBox&&we(e.iconCollisionBox.collisionVertexArray,y.icon.placed,!k,h?z.x:0,h?z.y:0)}}},y=0;y<e.symbolInstances.length;y++)m(y);if(e.sortFeatures(this.transform.angle),this.retainedQueryData[e.bucketInstanceId]&&(this.retainedQueryData[e.bucketInstanceId].featureSortOrder=e.featureSortOrder),e.hasTextData()&&e.text.opacityVertexBuffer&&e.text.opacityVertexBuffer.updateData(e.text.opacityVertexArray),e.hasIconData()&&e.icon.opacityVertexBuffer&&e.icon.opacityVertexBuffer.updateData(e.icon.opacityVertexArray),e.hasIconCollisionBoxData()&&e.iconCollisionBox.collisionVertexBuffer&&e.iconCollisionBox.collisionVertexBuffer.updateData(e.iconCollisionBox.collisionVertexArray),e.hasTextCollisionBoxData()&&e.textCollisionBox.collisionVertexBuffer&&e.textCollisionBox.collisionVertexBuffer.updateData(e.textCollisionBox.collisionVertexArray),e.bucketInstanceId in this.collisionCircleArrays){var g=this.collisionCircleArrays[e.bucketInstanceId];e.placementInvProjMatrix=g.invProjMatrix,e.placementViewportMatrix=g.viewportMatrix,e.collisionCircleArray=g.circles,delete this.collisionCircleArrays[e.bucketInstanceId]}},be.prototype.symbolFadeChange=function(t){return 0===this.fadeDuration?1:(t-this.commitTime)/this.fadeDuration+this.prevZoomAdjustment},be.prototype.zoomAdjustment=function(t){return Math.max(0,(this.transform.zoom-t)/1.5)},be.prototype.hasTransitions=function(t){return this.stale||t-this.lastPlacementChangeTime<this.fadeDuration},be.prototype.stillRecent=function(t,e){var r=this.zoomAtLastRecencyCheck===e?1-this.zoomAdjustment(e):1;return this.zoomAtLastRecencyCheck=e,this.commitTime+this.fadeDuration*r>t},be.prototype.setStale=function(){this.stale=!0};var Se=Math.pow(2,25),Te=Math.pow(2,24),Ie=Math.pow(2,17),Ee=Math.pow(2,16),Ae=Math.pow(2,9),ze=Math.pow(2,8),Pe=Math.pow(2,1);function Ce(t){if(0===t.opacity&&!t.placed)return 0;if(1===t.opacity&&t.placed)return 4294967295;var e=t.placed?1:0,r=Math.floor(127*t.opacity);return r*Se+e*Te+r*Ie+e*Ee+r*Ae+e*ze+r*Pe+e}var ke=0,Me=function(t){this._sortAcrossTiles="viewport-y"!==t.layout.get("symbol-z-order")&&void 0!==t.layout.get("symbol-sort-key").constantOr(1),this._currentTileIndex=0,this._currentPartIndex=0,this._seenCrossTileIDs={},this._bucketParts=[]};Me.prototype.continuePlacement=function(t,e,r,i,n){for(var o=this._bucketParts;this._currentTileIndex<t.length;)if(e.getBucketParts(o,i,t[this._currentTileIndex],this._sortAcrossTiles),this._currentTileIndex++,n())return!0;for(this._sortAcrossTiles&&(this._sortAcrossTiles=!1,o.sort(function(t,e){return t.sortKey-e.sortKey}));this._currentPartIndex<o.length;)if(e.placeLayerBucketPart(o[this._currentPartIndex],this._seenCrossTileIDs,r),this._currentPartIndex++,n())return!0;return!1};var De=function(t,e,r,i,n,o,a){this.placement=new be(t,n,o,a),this._currentPlacementIndex=e.length-1,this._forceFullPlacement=r,this._showCollisionBoxes=i,this._done=!1};De.prototype.isDone=function(){return this._done},De.prototype.continuePlacement=function(e,r,i){for(var n=this,o=t.browser.now(),a=function(){var e=t.browser.now()-o;return!n._forceFullPlacement&&e>2};this._currentPlacementIndex>=0;){var s=r[e[this._currentPlacementIndex]],l=this.placement.collisionIndex.transform.zoom;if("symbol"===s.type&&(!s.minzoom||s.minzoom<=l)&&(!s.maxzoom||s.maxzoom>l)){if(this._inProgressLayer||(this._inProgressLayer=new Me(s)),this._inProgressLayer.continuePlacement(i[s.source],this.placement,this._showCollisionBoxes,s,a))return;delete this._inProgressLayer}this._currentPlacementIndex--}this._done=!0},De.prototype.commit=function(t){return this.placement.commit(t),this.placement};var Le=512/t.EXTENT/2,Be=function(t,e,r){this.tileID=t,this.indexedSymbolInstances={},this.bucketInstanceId=r;for(var i=0;i<e.length;i++){var n=e.get(i),o=n.key;this.indexedSymbolInstances[o]||(this.indexedSymbolInstances[o]=[]),this.indexedSymbolInstances[o].push({crossTileID:n.crossTileID,coord:this.getScaledCoordinates(n,t)})}};Be.prototype.getScaledCoordinates=function(e,r){var i=Le/Math.pow(2,r.canonical.z-this.tileID.canonical.z);return{x:Math.floor((r.canonical.x*t.EXTENT+e.anchorX)*i),y:Math.floor((r.canonical.y*t.EXTENT+e.anchorY)*i)}},Be.prototype.findMatches=function(t,e,r){for(var i=this.tileID.canonical.z<e.canonical.z?1:Math.pow(2,this.tileID.canonical.z-e.canonical.z),n=0;n<t.length;n++){var o=t.get(n);if(!o.crossTileID){var a=this.indexedSymbolInstances[o.key];if(a)for(var s=this.getScaledCoordinates(o,e),l=0,u=a;l<u.length;l+=1){var c=u[l];if(Math.abs(c.coord.x-s.x)<=i&&Math.abs(c.coord.y-s.y)<=i&&!r[c.crossTileID]){r[c.crossTileID]=!0,o.crossTileID=c.crossTileID;break}}}}};var Re=function(){this.maxCrossTileID=0};Re.prototype.generate=function(){return++this.maxCrossTileID};var Fe=function(){this.indexes={},this.usedCrossTileIDs={},this.lng=0};Fe.prototype.handleWrapJump=function(t){var e=Math.round((t-this.lng)/360);if(0!==e)for(var r in this.indexes){var i=this.indexes[r],n={};for(var o in i){var a=i[o];a.tileID=a.tileID.unwrapTo(a.tileID.wrap+e),n[a.tileID.key]=a}this.indexes[r]=n}this.lng=t},Fe.prototype.addBucket=function(t,e,r){if(this.indexes[t.overscaledZ]&&this.indexes[t.overscaledZ][t.key]){if(this.indexes[t.overscaledZ][t.key].bucketInstanceId===e.bucketInstanceId)return!1;this.removeBucketCrossTileIDs(t.overscaledZ,this.indexes[t.overscaledZ][t.key])}for(var i=0;i<e.symbolInstances.length;i++)e.symbolInstances.get(i).crossTileID=0;this.usedCrossTileIDs[t.overscaledZ]||(this.usedCrossTileIDs[t.overscaledZ]={});var n=this.usedCrossTileIDs[t.overscaledZ];for(var o in this.indexes){var a=this.indexes[o];if(Number(o)>t.overscaledZ)for(var s in a){var l=a[s];l.tileID.isChildOf(t)&&l.findMatches(e.symbolInstances,t,n)}else{var u=a[t.scaledTo(Number(o)).key];u&&u.findMatches(e.symbolInstances,t,n)}}for(var c=0;c<e.symbolInstances.length;c++){var p=e.symbolInstances.get(c);p.crossTileID||(p.crossTileID=r.generate(),n[p.crossTileID]=!0)}return void 0===this.indexes[t.overscaledZ]&&(this.indexes[t.overscaledZ]={}),this.indexes[t.overscaledZ][t.key]=new Be(t,e.symbolInstances,e.bucketInstanceId),!0},Fe.prototype.removeBucketCrossTileIDs=function(t,e){for(var r in e.indexedSymbolInstances)for(var i=0,n=e.indexedSymbolInstances[r];i<n.length;i+=1)delete this.usedCrossTileIDs[t][n[i].crossTileID]},Fe.prototype.removeStaleBuckets=function(t){var e=!1;for(var r in this.indexes){var i=this.indexes[r];for(var n in i)t[i[n].bucketInstanceId]||(this.removeBucketCrossTileIDs(r,i[n]),delete i[n],e=!0)}return e};var Oe=function(){this.layerIndexes={},this.crossTileIDs=new Re,this.maxBucketInstanceId=0,this.bucketsInCurrentPlacement={}};Oe.prototype.addLayer=function(t,e,r){var i=this.layerIndexes[t.id];void 0===i&&(i=this.layerIndexes[t.id]=new Fe);var n=!1,o={};i.handleWrapJump(r);for(var a=0,s=e;a<s.length;a+=1){var l=s[a],u=l.getBucket(t);u&&t.id===u.layerIds[0]&&(u.bucketInstanceId||(u.bucketInstanceId=++this.maxBucketInstanceId),i.addBucket(l.tileID,u,this.crossTileIDs)&&(n=!0),o[u.bucketInstanceId]=!0)}return i.removeStaleBuckets(o)&&(n=!0),n},Oe.prototype.pruneUnusedLayers=function(t){var e={};for(var r in t.forEach(function(t){e[t]=!0}),this.layerIndexes)e[r]||delete this.layerIndexes[r]};var Ue=function(e,r){return t.emitValidationErrors(e,r&&r.filter(function(t){return"source.canvas"!==t.identifier}))},Ve=t.pick(Nt,["addLayer","removeLayer","setPaintProperty","setLayoutProperty","setFilter","addSource","removeSource","setLayerZoomRange","setLight","setTransition","setGeoJSONSourceData"]),Ne=t.pick(Nt,["setCenter","setZoom","setBearing","setPitch"]),je=function(){var e={},r=t.styleSpec.$version;for(var i in t.styleSpec.$root){var n,o=t.styleSpec.$root[i];o.required&&null!=(n="version"===i?r:"array"===o.type?[]:{})&&(e[i]=n)}return e}(),qe=function(e){function r(i,n){var o=this;void 0===n&&(n={}),e.call(this),this.map=i,this.dispatcher=new T(Ot(),this),this.imageManager=new h,this.imageManager.setEventedParent(this),this.glyphManager=new v(i._requestManager,n.localIdeographFontFamily),this.lineAtlas=new S(256,512),this.crossTileSymbolIndex=new Oe,this._layers={},this._serializedLayers={},this._order=[],this.sourceCaches={},this.zoomHistory=new t.ZoomHistory,this._loaded=!1,this._availableImages=[],this._resetUpdates(),this.dispatcher.broadcast("setReferrer",t.getReferrer());var a=this;this._rtlTextPluginCallback=r.registerForPluginStateChange(function(e){a.dispatcher.broadcast("syncRTLPluginState",{pluginStatus:e.pluginStatus,pluginURL:e.pluginURL},function(e,r){if(t.triggerPluginCompletionEvent(e),r&&r.every(function(t){return t}))for(var i in a.sourceCaches)a.sourceCaches[i].reload()})}),this.on("data",function(t){if("source"===t.dataType&&"metadata"===t.sourceDataType){var e=o.sourceCaches[t.sourceId];if(e){var r=e.getSource();if(r&&r.vectorLayerIds)for(var i in o._layers){var n=o._layers[i];n.source===r.id&&o._validateLayer(n)}}}})}return e&&(r.__proto__=e),(r.prototype=Object.create(e&&e.prototype)).constructor=r,r.prototype.loadURL=function(e,r){var i=this;void 0===r&&(r={}),this.fire(new t.Event("dataloading",{dataType:"style"}));var n="boolean"==typeof r.validate?r.validate:!t.isMapboxURL(e);e=this.map._requestManager.normalizeStyleURL(e,r.accessToken);var o=this.map._requestManager.transformRequest(e,t.ResourceType.Style);this._request=t.getJSON(o,function(e,r){i._request=null,e?i.fire(new t.ErrorEvent(e)):r&&i._load(r,n)})},r.prototype.loadJSON=function(e,r){var i=this;void 0===r&&(r={}),this.fire(new t.Event("dataloading",{dataType:"style"})),this._request=t.browser.frame(function(){i._request=null,i._load(e,!1!==r.validate)})},r.prototype.loadEmpty=function(){this.fire(new t.Event("dataloading",{dataType:"style"})),this._load(je,!1)},r.prototype._load=function(e,r){if(!r||!Ue(this,t.validateStyle(e))){for(var i in this._loaded=!0,this.stylesheet=e,e.sources)this.addSource(i,e.sources[i],{validate:!1});e.sprite?this._loadSprite(e.sprite):this.imageManager.setLoaded(!0),this.glyphManager.setURL(e.glyphs);var n=Vt(this.stylesheet.layers);this._order=n.map(function(t){return t.id}),this._layers={},this._serializedLayers={};for(var o=0,a=n;o<a.length;o+=1){var s=a[o];(s=t.createStyleLayer(s)).setEventedParent(this,{layer:{id:s.id}}),this._layers[s.id]=s,this._serializedLayers[s.id]=s.serialize()}this.dispatcher.broadcast("setLayers",this._serializeLayers(this._order)),this.light=new w(this.stylesheet.light),this.fire(new t.Event("data",{dataType:"style"})),this.fire(new t.Event("style.load"))}},r.prototype._loadSprite=function(e){var r=this;this._spriteRequest=function(e,r,i){var n,o,a,s=t.browser.devicePixelRatio>1?"@2x":"",l=t.getJSON(r.transformRequest(r.normalizeSpriteURL(e,s,".json"),t.ResourceType.SpriteJSON),function(t,e){l=null,a||(a=t,n=e,c())}),u=t.getImage(r.transformRequest(r.normalizeSpriteURL(e,s,".png"),t.ResourceType.SpriteImage),function(t,e){u=null,a||(a=t,o=e,c())});function c(){if(a)i(a);else if(n&&o){var e=t.browser.getImageData(o),r={};for(var s in n){var l=n[s],u=l.width,c=l.height,p=l.x,h=l.y,f=l.sdf,d=l.pixelRatio,m=l.stretchX,y=l.stretchY,g=l.content,_=new t.RGBAImage({width:u,height:c});t.RGBAImage.copy(e,_,{x:p,y:h},{x:0,y:0},{width:u,height:c}),r[s]={data:_,pixelRatio:d,sdf:f,stretchX:m,stretchY:y,content:g}}i(null,r)}}return{cancel:function(){l&&(l.cancel(),l=null),u&&(u.cancel(),u=null)}}}(e,this.map._requestManager,function(e,i){if(r._spriteRequest=null,e)r.fire(new t.ErrorEvent(e));else if(i)for(var n in i)r.imageManager.addImage(n,i[n]);r.imageManager.setLoaded(!0),r._availableImages=r.imageManager.listImages(),r.dispatcher.broadcast("setImages",r._availableImages),r.fire(new t.Event("data",{dataType:"style"}))})},r.prototype._validateLayer=function(e){var r=this.sourceCaches[e.source];if(r){var i=e.sourceLayer;if(i){var n=r.getSource();("geojson"===n.type||n.vectorLayerIds&&-1===n.vectorLayerIds.indexOf(i))&&this.fire(new t.ErrorEvent(new Error('Source layer "'+i+'" does not exist on source "'+n.id+'" as specified by style layer "'+e.id+'"')))}}},r.prototype.loaded=function(){if(!this._loaded)return!1;if(Object.keys(this._updatedSources).length)return!1;for(var t in this.sourceCaches)if(!this.sourceCaches[t].loaded())return!1;return!!this.imageManager.isLoaded()},r.prototype._serializeLayers=function(t){for(var e=[],r=0,i=t;r<i.length;r+=1){var n=this._layers[i[r]];"custom"!==n.type&&e.push(n.serialize())}return e},r.prototype.hasTransitions=function(){if(this.light&&this.light.hasTransition())return!0;for(var t in this.sourceCaches)if(this.sourceCaches[t].hasTransition())return!0;for(var e in this._layers)if(this._layers[e].hasTransition())return!0;return!1},r.prototype._checkLoaded=function(){if(!this._loaded)throw new Error("Style is not done loading")},r.prototype.update=function(e){if(this._loaded){var r=this._changed;if(this._changed){var i=Object.keys(this._updatedLayers),n=Object.keys(this._removedLayers);for(var o in(i.length||n.length)&&this._updateWorkerLayers(i,n),this._updatedSources){var a=this._updatedSources[o];"reload"===a?this._reloadSource(o):"clear"===a&&this._clearSource(o)}for(var s in this._updateTilesForChangedImages(),this._updatedPaintProps)this._layers[s].updateTransitions(e);this.light.updateTransitions(e),this._resetUpdates()}for(var l in this.sourceCaches)this.sourceCaches[l].used=!1;for(var u=0,c=this._order;u<c.length;u+=1){var p=this._layers[c[u]];p.recalculate(e,this._availableImages),!p.isHidden(e.zoom)&&p.source&&(this.sourceCaches[p.source].used=!0)}this.light.recalculate(e),this.z=e.zoom,r&&this.fire(new t.Event("data",{dataType:"style"}))}},r.prototype._updateTilesForChangedImages=function(){var t=Object.keys(this._changedImages);if(t.length){for(var e in this.sourceCaches)this.sourceCaches[e].reloadTilesForDependencies(["icons","patterns"],t);this._changedImages={}}},r.prototype._updateWorkerLayers=function(t,e){this.dispatcher.broadcast("updateLayers",{layers:this._serializeLayers(t),removedIds:e})},r.prototype._resetUpdates=function(){this._changed=!1,this._updatedLayers={},this._removedLayers={},this._updatedSources={},this._updatedPaintProps={},this._changedImages={}},r.prototype.setState=function(e){var r=this;if(this._checkLoaded(),Ue(this,t.validateStyle(e)))return!1;(e=t.clone$1(e)).layers=Vt(e.layers);var i=function(e,r){if(!e)return[{command:Nt.setStyle,args:[r]}];var i=[];try{if(!t.deepEqual(e.version,r.version))return[{command:Nt.setStyle,args:[r]}];t.deepEqual(e.center,r.center)||i.push({command:Nt.setCenter,args:[r.center]}),t.deepEqual(e.zoom,r.zoom)||i.push({command:Nt.setZoom,args:[r.zoom]}),t.deepEqual(e.bearing,r.bearing)||i.push({command:Nt.setBearing,args:[r.bearing]}),t.deepEqual(e.pitch,r.pitch)||i.push({command:Nt.setPitch,args:[r.pitch]}),t.deepEqual(e.sprite,r.sprite)||i.push({command:Nt.setSprite,args:[r.sprite]}),t.deepEqual(e.glyphs,r.glyphs)||i.push({command:Nt.setGlyphs,args:[r.glyphs]}),t.deepEqual(e.transition,r.transition)||i.push({command:Nt.setTransition,args:[r.transition]}),t.deepEqual(e.light,r.light)||i.push({command:Nt.setLight,args:[r.light]});var n={},o=[];!function(e,r,i,n){var o;for(o in r=r||{},e=e||{})e.hasOwnProperty(o)&&(r.hasOwnProperty(o)||qt(o,i,n));for(o in r)r.hasOwnProperty(o)&&(e.hasOwnProperty(o)?t.deepEqual(e[o],r[o])||("geojson"===e[o].type&&"geojson"===r[o].type&&Gt(e,r,o)?i.push({command:Nt.setGeoJSONSourceData,args:[o,r[o].data]}):Zt(o,r,i,n)):jt(o,r,i))}(e.sources,r.sources,o,n);var a=[];e.layers&&e.layers.forEach(function(t){n[t.source]?i.push({command:Nt.removeLayer,args:[t.id]}):a.push(t)}),i=i.concat(o),function(e,r,i){r=r||[];var n,o,a,s,l,u,c,p=(e=e||[]).map(Wt),h=r.map(Wt),f=e.reduce(Kt,{}),d=r.reduce(Kt,{}),m=p.slice(),y=Object.create(null);for(n=0,o=0;n<p.length;n++)d.hasOwnProperty(a=p[n])?o++:(i.push({command:Nt.removeLayer,args:[a]}),m.splice(m.indexOf(a,o),1));for(n=0,o=0;n<h.length;n++)m[m.length-1-n]!==(a=h[h.length-1-n])&&(f.hasOwnProperty(a)?(i.push({command:Nt.removeLayer,args:[a]}),m.splice(m.lastIndexOf(a,m.length-o),1)):o++,i.push({command:Nt.addLayer,args:[d[a],u=m[m.length-n]]}),m.splice(m.length-n,0,a),y[a]=!0);for(n=0;n<h.length;n++)if(s=f[a=h[n]],l=d[a],!y[a]&&!t.deepEqual(s,l))if(t.deepEqual(s.source,l.source)&&t.deepEqual(s["source-layer"],l["source-layer"])&&t.deepEqual(s.type,l.type)){for(c in Xt(s.layout,l.layout,i,a,null,Nt.setLayoutProperty),Xt(s.paint,l.paint,i,a,null,Nt.setPaintProperty),t.deepEqual(s.filter,l.filter)||i.push({command:Nt.setFilter,args:[a,l.filter]}),t.deepEqual(s.minzoom,l.minzoom)&&t.deepEqual(s.maxzoom,l.maxzoom)||i.push({command:Nt.setLayerZoomRange,args:[a,l.minzoom,l.maxzoom]}),s)s.hasOwnProperty(c)&&"layout"!==c&&"paint"!==c&&"filter"!==c&&"metadata"!==c&&"minzoom"!==c&&"maxzoom"!==c&&(0===c.indexOf("paint.")?Xt(s[c],l[c],i,a,c.slice(6),Nt.setPaintProperty):t.deepEqual(s[c],l[c])||i.push({command:Nt.setLayerProperty,args:[a,c,l[c]]}));for(c in l)l.hasOwnProperty(c)&&!s.hasOwnProperty(c)&&"layout"!==c&&"paint"!==c&&"filter"!==c&&"metadata"!==c&&"minzoom"!==c&&"maxzoom"!==c&&(0===c.indexOf("paint.")?Xt(s[c],l[c],i,a,c.slice(6),Nt.setPaintProperty):t.deepEqual(s[c],l[c])||i.push({command:Nt.setLayerProperty,args:[a,c,l[c]]}))}else i.push({command:Nt.removeLayer,args:[a]}),u=m[m.lastIndexOf(a)+1],i.push({command:Nt.addLayer,args:[l,u]})}(a,r.layers,i)}catch(t){console.warn("Unable to compute style diff:",t),i=[{command:Nt.setStyle,args:[r]}]}return i}(this.serialize(),e).filter(function(t){return!(t.command in Ne)});if(0===i.length)return!1;var n=i.filter(function(t){return!(t.command in Ve)});if(n.length>0)throw new Error("Unimplemented: "+n.map(function(t){return t.command}).join(", ")+".");return i.forEach(function(t){"setTransition"!==t.command&&r[t.command].apply(r,t.args)}),this.stylesheet=e,!0},r.prototype.addImage=function(e,r){if(this.getImage(e))return this.fire(new t.ErrorEvent(new Error("An image with this name already exists.")));this.imageManager.addImage(e,r),this._availableImages=this.imageManager.listImages(),this._changedImages[e]=!0,this._changed=!0,this.fire(new t.Event("data",{dataType:"style"}))},r.prototype.updateImage=function(t,e){this.imageManager.updateImage(t,e)},r.prototype.getImage=function(t){return this.imageManager.getImage(t)},r.prototype.removeImage=function(e){if(!this.getImage(e))return this.fire(new t.ErrorEvent(new Error("No image with this name exists.")));this.imageManager.removeImage(e),this._availableImages=this.imageManager.listImages(),this._changedImages[e]=!0,this._changed=!0,this.fire(new t.Event("data",{dataType:"style"}))},r.prototype.listImages=function(){return this._checkLoaded(),this.imageManager.listImages()},r.prototype.addSource=function(e,r,i){var n=this;if(void 0===i&&(i={}),this._checkLoaded(),void 0!==this.sourceCaches[e])throw new Error("There is already a source with this ID");if(!r.type)throw new Error("The type property must be defined, but the only the following properties were given: "+Object.keys(r).join(", ")+".");if(!(["vector","raster","geojson","video","image"].indexOf(r.type)>=0&&this._validate(t.validateStyle.source,"sources."+e,r,null,i))){this.map&&this.map._collectResourceTiming&&(r.collectResourceTiming=!0);var o=this.sourceCaches[e]=new Ct(e,r,this.dispatcher);o.style=this,o.setEventedParent(this,function(){return{isSourceLoaded:n.loaded(),source:o.serialize(),sourceId:e}}),o.onAdd(this.map),this._changed=!0}},r.prototype.removeSource=function(e){if(this._checkLoaded(),void 0===this.sourceCaches[e])throw new Error("There is no source with this ID");for(var r in this._layers)if(this._layers[r].source===e)return this.fire(new t.ErrorEvent(new Error('Source "'+e+'" cannot be removed while layer "'+r+'" is using it.')));var i=this.sourceCaches[e];delete this.sourceCaches[e],delete this._updatedSources[e],i.fire(new t.Event("data",{sourceDataType:"metadata",dataType:"source",sourceId:e})),i.setEventedParent(null),i.clearTiles(),i.onRemove&&i.onRemove(this.map),this._changed=!0},r.prototype.setGeoJSONSourceData=function(t,e){this._checkLoaded(),this.sourceCaches[t].getSource().setData(e),this._changed=!0},r.prototype.getSource=function(t){return this.sourceCaches[t]&&this.sourceCaches[t].getSource()},r.prototype.addLayer=function(e,r,i){void 0===i&&(i={}),this._checkLoaded();var n=e.id;if(this.getLayer(n))this.fire(new t.ErrorEvent(new Error('Layer with id "'+n+'" already exists on this map')));else{var o;if("custom"===e.type){if(Ue(this,t.validateCustomStyleLayer(e)))return;o=t.createStyleLayer(e)}else{if("object"==typeof e.source&&(this.addSource(n,e.source),e=t.clone$1(e),e=t.extend(e,{source:n})),this._validate(t.validateStyle.layer,"layers."+n,e,{arrayIndex:-1},i))return;o=t.createStyleLayer(e),this._validateLayer(o),o.setEventedParent(this,{layer:{id:n}}),this._serializedLayers[o.id]=o.serialize()}var a=r?this._order.indexOf(r):this._order.length;if(r&&-1===a)this.fire(new t.ErrorEvent(new Error('Layer with id "'+r+'" does not exist on this map.')));else{if(this._order.splice(a,0,n),this._layerOrderChanged=!0,this._layers[n]=o,this._removedLayers[n]&&o.source&&"custom"!==o.type){var s=this._removedLayers[n];delete this._removedLayers[n],s.type!==o.type?this._updatedSources[o.source]="clear":(this._updatedSources[o.source]="reload",this.sourceCaches[o.source].pause())}this._updateLayer(o),o.onAdd&&o.onAdd(this.map)}}},r.prototype.moveLayer=function(e,r){if(this._checkLoaded(),this._changed=!0,this._layers[e]){if(e!==r){var i=this._order.indexOf(e);this._order.splice(i,1);var n=r?this._order.indexOf(r):this._order.length;r&&-1===n?this.fire(new t.ErrorEvent(new Error('Layer with id "'+r+'" does not exist on this map.'))):(this._order.splice(n,0,e),this._layerOrderChanged=!0)}}else this.fire(new t.ErrorEvent(new Error("The layer '"+e+"' does not exist in the map's style and cannot be moved.")))},r.prototype.removeLayer=function(e){this._checkLoaded();var r=this._layers[e];if(r){r.setEventedParent(null);var i=this._order.indexOf(e);this._order.splice(i,1),this._layerOrderChanged=!0,this._changed=!0,this._removedLayers[e]=r,delete this._layers[e],delete this._serializedLayers[e],delete this._updatedLayers[e],delete this._updatedPaintProps[e],r.onRemove&&r.onRemove(this.map)}else this.fire(new t.ErrorEvent(new Error("The layer '"+e+"' does not exist in the map's style and cannot be removed.")))},r.prototype.getLayer=function(t){return this._layers[t]},r.prototype.hasLayer=function(t){return t in this._layers},r.prototype.setLayerZoomRange=function(e,r,i){this._checkLoaded();var n=this.getLayer(e);n?n.minzoom===r&&n.maxzoom===i||(null!=r&&(n.minzoom=r),null!=i&&(n.maxzoom=i),this._updateLayer(n)):this.fire(new t.ErrorEvent(new Error("The layer '"+e+"' does not exist in the map's style and cannot have zoom extent.")))},r.prototype.setFilter=function(e,r,i){void 0===i&&(i={}),this._checkLoaded();var n=this.getLayer(e);if(n){if(!t.deepEqual(n.filter,r))return null==r?(n.filter=void 0,void this._updateLayer(n)):void(this._validate(t.validateStyle.filter,"layers."+n.id+".filter",r,null,i)||(n.filter=t.clone$1(r),this._updateLayer(n)))}else this.fire(new t.ErrorEvent(new Error("The layer '"+e+"' does not exist in the map's style and cannot be filtered.")))},r.prototype.getFilter=function(e){return t.clone$1(this.getLayer(e).filter)},r.prototype.setLayoutProperty=function(e,r,i,n){void 0===n&&(n={}),this._checkLoaded();var o=this.getLayer(e);o?t.deepEqual(o.getLayoutProperty(r),i)||(o.setLayoutProperty(r,i,n),this._updateLayer(o)):this.fire(new t.ErrorEvent(new Error("The layer '"+e+"' does not exist in the map's style and cannot be styled.")))},r.prototype.getLayoutProperty=function(e,r){var i=this.getLayer(e);if(i)return i.getLayoutProperty(r);this.fire(new t.ErrorEvent(new Error("The layer '"+e+"' does not exist in the map's style.")))},r.prototype.setPaintProperty=function(e,r,i,n){void 0===n&&(n={}),this._checkLoaded();var o=this.getLayer(e);o?t.deepEqual(o.getPaintProperty(r),i)||(o.setPaintProperty(r,i,n)&&this._updateLayer(o),this._changed=!0,this._updatedPaintProps[e]=!0):this.fire(new t.ErrorEvent(new Error("The layer '"+e+"' does not exist in the map's style and cannot be styled.")))},r.prototype.getPaintProperty=function(t,e){return this.getLayer(t).getPaintProperty(e)},r.prototype.setFeatureState=function(e,r){this._checkLoaded();var i=e.source,n=e.sourceLayer,o=this.sourceCaches[i];if(void 0!==o){var a=o.getSource().type;"geojson"===a&&n?this.fire(new t.ErrorEvent(new Error("GeoJSON sources cannot have a sourceLayer parameter."))):"vector"!==a||n?(void 0===e.id&&this.fire(new t.ErrorEvent(new Error("The feature id parameter must be provided."))),o.setFeatureState(n,e.id,r)):this.fire(new t.ErrorEvent(new Error("The sourceLayer parameter must be provided for vector source types.")))}else this.fire(new t.ErrorEvent(new Error("The source '"+i+"' does not exist in the map's style.")))},r.prototype.removeFeatureState=function(e,r){this._checkLoaded();var i=e.source,n=this.sourceCaches[i];if(void 0!==n){var o=n.getSource().type,a="vector"===o?e.sourceLayer:void 0;"vector"!==o||a?r&&"string"!=typeof e.id&&"number"!=typeof e.id?this.fire(new t.ErrorEvent(new Error("A feature id is requred to remove its specific state property."))):n.removeFeatureState(a,e.id,r):this.fire(new t.ErrorEvent(new Error("The sourceLayer parameter must be provided for vector source types.")))}else this.fire(new t.ErrorEvent(new Error("The source '"+i+"' does not exist in the map's style.")))},r.prototype.getFeatureState=function(e){this._checkLoaded();var r=e.source,i=e.sourceLayer,n=this.sourceCaches[r];if(void 0!==n){if("vector"!==n.getSource().type||i)return void 0===e.id&&this.fire(new t.ErrorEvent(new Error("The feature id parameter must be provided."))),n.getFeatureState(i,e.id);this.fire(new t.ErrorEvent(new Error("The sourceLayer parameter must be provided for vector source types.")))}else this.fire(new t.ErrorEvent(new Error("The source '"+r+"' does not exist in the map's style.")))},r.prototype.getTransition=function(){return t.extend({duration:300,delay:0},this.stylesheet&&this.stylesheet.transition)},r.prototype.serialize=function(){return t.filterObject({version:this.stylesheet.version,name:this.stylesheet.name,metadata:this.stylesheet.metadata,light:this.stylesheet.light,center:this.stylesheet.center,zoom:this.stylesheet.zoom,bearing:this.stylesheet.bearing,pitch:this.stylesheet.pitch,sprite:this.stylesheet.sprite,glyphs:this.stylesheet.glyphs,transition:this.stylesheet.transition,sources:t.mapObject(this.sourceCaches,function(t){return t.serialize()}),layers:this._serializeLayers(this._order)},function(t){return void 0!==t})},r.prototype._updateLayer=function(t){this._updatedLayers[t.id]=!0,t.source&&!this._updatedSources[t.source]&&"raster"!==this.sourceCaches[t.source].getSource().type&&(this._updatedSources[t.source]="reload",this.sourceCaches[t.source].pause()),this._changed=!0},r.prototype._flattenAndSortRenderedFeatures=function(t){for(var e=this,r=function(t){return"fill-extrusion"===e._layers[t].type},i={},n=[],o=this._order.length-1;o>=0;o--){var a=this._order[o];if(r(a)){i[a]=o;for(var s=0,l=t;s<l.length;s+=1){var u=l[s][a];if(u)for(var c=0,p=u;c<p.length;c+=1)n.push(p[c])}}}n.sort(function(t,e){return e.intersectionZ-t.intersectionZ});for(var h=[],f=this._order.length-1;f>=0;f--){var d=this._order[f];if(r(d))for(var m=n.length-1;m>=0;m--){var y=n[m].feature;if(i[y.layer.id]<f)break;h.push(y),n.pop()}else for(var g=0,_=t;g<_.length;g+=1){var v=_[g][d];if(v)for(var x=0,b=v;x<b.length;x+=1)h.push(b[x].feature)}}return h},r.prototype.queryRenderedFeatures=function(e,r,i){r&&r.filter&&this._validate(t.validateStyle.filter,"queryRenderedFeatures.filter",r.filter,null,r);var n={};if(r&&r.layers){if(!Array.isArray(r.layers))return this.fire(new t.ErrorEvent(new Error("parameters.layers must be an Array."))),[];for(var o=0,a=r.layers;o<a.length;o+=1){var s=a[o],l=this._layers[s];if(!l)return this.fire(new t.ErrorEvent(new Error("The layer '"+s+"' does not exist in the map's style and cannot be queried for features."))),[];n[l.source]=!0}}var u=[];for(var c in r.availableImages=this._availableImages,this.sourceCaches)r.layers&&!n[c]||u.push(F(this.sourceCaches[c],this._layers,this._serializedLayers,e,r,i));return this.placement&&u.push(function(t,e,r,i,n,o,a){for(var s={},l=o.queryRenderedSymbols(i),u=[],c=0,p=Object.keys(l).map(Number);c<p.length;c+=1)u.push(a[p[c]]);u.sort(O);for(var h=function(){var r=d[f],i=r.featureIndex.lookupSymbolFeatures(l[r.bucketInstanceId],e,r.bucketIndex,r.sourceLayerIndex,n.filter,n.layers,n.availableImages,t);for(var o in i){var a=s[o]=s[o]||[],u=i[o];u.sort(function(t,e){var i=r.featureSortOrder;if(i){var n=i.indexOf(t.featureIndex);return i.indexOf(e.featureIndex)-n}return e.featureIndex-t.featureIndex});for(var c=0,p=u;c<p.length;c+=1)a.push(p[c])}},f=0,d=u;f<d.length;f+=1)h();var m=function(e){s[e].forEach(function(i){var n=i.feature,o=r[t[e].source].getFeatureState(n.layer["source-layer"],n.id);n.source=n.layer.source,n.layer["source-layer"]&&(n.sourceLayer=n.layer["source-layer"]),n.state=o})};for(var y in s)m(y);return s}(this._layers,this._serializedLayers,this.sourceCaches,e,r,this.placement.collisionIndex,this.placement.retainedQueryData)),this._flattenAndSortRenderedFeatures(u)},r.prototype.querySourceFeatures=function(e,r){r&&r.filter&&this._validate(t.validateStyle.filter,"querySourceFeatures.filter",r.filter,null,r);var i=this.sourceCaches[e];return i?function(t,e){for(var r=t.getRenderableIds().map(function(e){return t.getTileByID(e)}),i=[],n={},o=0;o<r.length;o++){var a=r[o],s=a.tileID.canonical.key;n[s]||(n[s]=!0,a.querySourceFeatures(i,e))}return i}(i,r):[]},r.prototype.addSourceType=function(t,e,i){return r.getSourceType(t)?i(new Error('A source type called "'+t+'" already exists.')):(r.setSourceType(t,e),e.workerSourceURL?void this.dispatcher.broadcast("loadWorkerSource",{name:t,url:e.workerSourceURL},i):i(null,null))},r.prototype.getLight=function(){return this.light.getLight()},r.prototype.setLight=function(e,r){void 0===r&&(r={}),this._checkLoaded();var i=this.light.getLight(),n=!1;for(var o in e)if(!t.deepEqual(e[o],i[o])){n=!0;break}if(n){var a={now:t.browser.now(),transition:t.extend({duration:300,delay:0},this.stylesheet.transition)};this.light.setLight(e,r),this.light.updateTransitions(a)}},r.prototype._validate=function(e,r,i,n,o){return void 0===o&&(o={}),(!o||!1!==o.validate)&&Ue(this,e.call(t.validateStyle,t.extend({key:r,style:this.serialize(),value:i,styleSpec:t.styleSpec},n)))},r.prototype._remove=function(){for(var e in this._request&&(this._request.cancel(),this._request=null),this._spriteRequest&&(this._spriteRequest.cancel(),this._spriteRequest=null),t.evented.off("pluginStateChange",this._rtlTextPluginCallback),this._layers)this._layers[e].setEventedParent(null);for(var r in this.sourceCaches)this.sourceCaches[r].clearTiles(),this.sourceCaches[r].setEventedParent(null);this.imageManager.setEventedParent(null),this.setEventedParent(null),this.dispatcher.remove()},r.prototype._clearSource=function(t){this.sourceCaches[t].clearTiles()},r.prototype._reloadSource=function(t){this.sourceCaches[t].resume(),this.sourceCaches[t].reload()},r.prototype._updateSources=function(t){for(var e in this.sourceCaches)this.sourceCaches[e].update(t)},r.prototype._generateCollisionBoxes=function(){for(var t in this.sourceCaches)this._reloadSource(t)},r.prototype._updatePlacement=function(e,r,i,n,o){void 0===o&&(o=!1);for(var a=!1,s=!1,l={},u=0,c=this._order;u<c.length;u+=1){var p=this._layers[c[u]];if("symbol"===p.type){if(!l[p.source]){var h=this.sourceCaches[p.source];l[p.source]=h.getRenderableIds(!0).map(function(t){return h.getTileByID(t)}).sort(function(t,e){return e.tileID.overscaledZ-t.tileID.overscaledZ||(t.tileID.isLessThan(e.tileID)?-1:1)})}var f=this.crossTileSymbolIndex.addLayer(p,l[p.source],e.center.lng);a=a||f}}if(this.crossTileSymbolIndex.pruneUnusedLayers(this._order),((o=o||this._layerOrderChanged||0===i)||!this.pauseablePlacement||this.pauseablePlacement.isDone()&&!this.placement.stillRecent(t.browser.now(),e.zoom))&&(this.pauseablePlacement=new De(e,this._order,o,r,i,n,this.placement),this._layerOrderChanged=!1),this.pauseablePlacement.isDone()?this.placement.setStale():(this.pauseablePlacement.continuePlacement(this._order,this._layers,l),this.pauseablePlacement.isDone()&&(this.placement=this.pauseablePlacement.commit(t.browser.now()),s=!0),a&&this.pauseablePlacement.placement.setStale()),s||a)for(var d=0,m=this._order;d<m.length;d+=1){var y=this._layers[m[d]];"symbol"===y.type&&this.placement.updateLayerOpacities(y,l[y.source])}return!this.pauseablePlacement.isDone()||this.placement.hasTransitions(t.browser.now())},r.prototype._releaseSymbolFadeTiles=function(){for(var t in this.sourceCaches)this.sourceCaches[t].releaseSymbolFadeTiles()},r.prototype.getImages=function(t,e,r){this.imageManager.getImages(e.icons,r),this._updateTilesForChangedImages();var i=this.sourceCaches[e.source];i&&i.setDependencies(e.tileID.key,e.type,e.icons)},r.prototype.getGlyphs=function(t,e,r){this.glyphManager.getGlyphs(e.stacks,r)},r.prototype.getResource=function(e,r,i){return t.makeRequest(r,i)},r}(t.Evented);qe.getSourceType=function(t){return B[t]},qe.setSourceType=function(t,e){B[t]=e},qe.registerForPluginStateChange=t.registerForPluginStateChange;var Ze=t.createLayout([{name:"a_pos",type:"Int16",components:2}]),Ge=gr("#ifdef GL_ES\nprecision mediump float;\n#else\n#if !defined(lowp)\n#define lowp\n#endif\n#if !defined(mediump)\n#define mediump\n#endif\n#if !defined(highp)\n#define highp\n#endif\n#endif","#ifdef GL_ES\nprecision highp float;\n#else\n#if !defined(lowp)\n#define lowp\n#endif\n#if !defined(mediump)\n#define mediump\n#endif\n#if !defined(highp)\n#define highp\n#endif\n#endif\nvec2 unpack_float(const float packedValue) {int packedIntValue=int(packedValue);int v0=packedIntValue/256;return vec2(v0,packedIntValue-v0*256);}vec2 unpack_opacity(const float packedOpacity) {int intOpacity=int(packedOpacity)/2;return vec2(float(intOpacity)/127.0,mod(packedOpacity,2.0));}vec4 decode_color(const vec2 encodedColor) {return vec4(unpack_float(encodedColor[0])/255.0,unpack_float(encodedColor[1])/255.0\n);}float unpack_mix_vec2(const vec2 packedValue,const float t) {return mix(packedValue[0],packedValue[1],t);}vec4 unpack_mix_color(const vec4 packedColors,const float t) {vec4 minColor=decode_color(vec2(packedColors[0],packedColors[1]));vec4 maxColor=decode_color(vec2(packedColors[2],packedColors[3]));return mix(minColor,maxColor,t);}vec2 get_pattern_pos(const vec2 pixel_coord_upper,const vec2 pixel_coord_lower,const vec2 pattern_size,const float tile_units_to_pixels,const vec2 pos) {vec2 offset=mod(mod(mod(pixel_coord_upper,pattern_size)*256.0,pattern_size)*256.0+pixel_coord_lower,pattern_size);return (tile_units_to_pixels*pos+offset)/pattern_size;}"),Xe=gr("uniform vec4 u_color;uniform float u_opacity;void main() {gl_FragColor=u_color*u_opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","attribute vec2 a_pos;uniform mat4 u_matrix;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);}"),We=gr("uniform vec2 u_pattern_tl_a;uniform vec2 u_pattern_br_a;uniform vec2 u_pattern_tl_b;uniform vec2 u_pattern_br_b;uniform vec2 u_texsize;uniform float u_mix;uniform float u_opacity;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;void main() {vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(u_pattern_tl_a/u_texsize,u_pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(u_pattern_tl_b/u_texsize,u_pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);gl_FragColor=mix(color1,color2,u_mix)*u_opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec2 u_pattern_size_a;uniform vec2 u_pattern_size_b;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_scale_a;uniform float u_scale_b;uniform float u_tile_units_to_pixels;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_a*u_pattern_size_a,u_tile_units_to_pixels,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_b*u_pattern_size_b,u_tile_units_to_pixels,a_pos);}"),Ke=gr("varying vec3 v_data;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define mediump float radius\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define highp vec4 stroke_color\n#pragma mapbox: define mediump float stroke_width\n#pragma mapbox: define lowp float stroke_opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize mediump float radius\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize highp vec4 stroke_color\n#pragma mapbox: initialize mediump float stroke_width\n#pragma mapbox: initialize lowp float stroke_opacity\nvec2 extrude=v_data.xy;float extrude_length=length(extrude);lowp float antialiasblur=v_data.z;float antialiased_blur=-max(blur,antialiasblur);float opacity_t=smoothstep(0.0,antialiased_blur,extrude_length-1.0);float color_t=stroke_width < 0.01 ? 0.0 : smoothstep(antialiased_blur,0.0,extrude_length-radius/(radius+stroke_width));gl_FragColor=opacity_t*mix(color*opacity,stroke_color*stroke_opacity,color_t);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform bool u_scale_with_map;uniform bool u_pitch_with_map;uniform vec2 u_extrude_scale;uniform lowp float u_device_pixel_ratio;uniform highp float u_camera_to_center_distance;attribute vec2 a_pos;varying vec3 v_data;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define mediump float radius\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define highp vec4 stroke_color\n#pragma mapbox: define mediump float stroke_width\n#pragma mapbox: define lowp float stroke_opacity\nvoid main(void) {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize mediump float radius\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize highp vec4 stroke_color\n#pragma mapbox: initialize mediump float stroke_width\n#pragma mapbox: initialize lowp float stroke_opacity\nvec2 extrude=vec2(mod(a_pos,2.0)*2.0-1.0);vec2 circle_center=floor(a_pos*0.5);if (u_pitch_with_map) {vec2 corner_position=circle_center;if (u_scale_with_map) {corner_position+=extrude*(radius+stroke_width)*u_extrude_scale;} else {vec4 projected_center=u_matrix*vec4(circle_center,0,1);corner_position+=extrude*(radius+stroke_width)*u_extrude_scale*(projected_center.w/u_camera_to_center_distance);}gl_Position=u_matrix*vec4(corner_position,0,1);} else {gl_Position=u_matrix*vec4(circle_center,0,1);if (u_scale_with_map) {gl_Position.xy+=extrude*(radius+stroke_width)*u_extrude_scale*u_camera_to_center_distance;} else {gl_Position.xy+=extrude*(radius+stroke_width)*u_extrude_scale*gl_Position.w;}}lowp float antialiasblur=1.0/u_device_pixel_ratio/(radius+stroke_width);v_data=vec3(extrude.x,extrude.y,antialiasblur);}"),He=gr("void main() {gl_FragColor=vec4(1.0);}","attribute vec2 a_pos;uniform mat4 u_matrix;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);}"),Je=gr("uniform highp float u_intensity;varying vec2 v_extrude;\n#pragma mapbox: define highp float weight\n#define GAUSS_COEF 0.3989422804014327\nvoid main() {\n#pragma mapbox: initialize highp float weight\nfloat d=-0.5*3.0*3.0*dot(v_extrude,v_extrude);float val=weight*u_intensity*GAUSS_COEF*exp(d);gl_FragColor=vec4(val,1.0,1.0,1.0);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform float u_extrude_scale;uniform float u_opacity;uniform float u_intensity;attribute vec2 a_pos;varying vec2 v_extrude;\n#pragma mapbox: define highp float weight\n#pragma mapbox: define mediump float radius\nconst highp float ZERO=1.0/255.0/16.0;\n#define GAUSS_COEF 0.3989422804014327\nvoid main(void) {\n#pragma mapbox: initialize highp float weight\n#pragma mapbox: initialize mediump float radius\nvec2 unscaled_extrude=vec2(mod(a_pos,2.0)*2.0-1.0);float S=sqrt(-2.0*log(ZERO/weight/u_intensity/GAUSS_COEF))/3.0;v_extrude=S*unscaled_extrude;vec2 extrude=v_extrude*radius*u_extrude_scale;vec4 pos=vec4(floor(a_pos*0.5)+extrude,0,1);gl_Position=u_matrix*pos;}"),Ye=gr("uniform sampler2D u_image;uniform sampler2D u_color_ramp;uniform float u_opacity;varying vec2 v_pos;void main() {float t=texture2D(u_image,v_pos).r;vec4 color=texture2D(u_color_ramp,vec2(t,0.5));gl_FragColor=color*u_opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(0.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec2 u_world;attribute vec2 a_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos*u_world,0,1);v_pos.x=a_pos.x;v_pos.y=1.0-a_pos.y;}"),Qe=gr("varying float v_placed;varying float v_notUsed;void main() {float alpha=0.5;gl_FragColor=vec4(1.0,0.0,0.0,1.0)*alpha;if (v_placed > 0.5) {gl_FragColor=vec4(0.0,0.0,1.0,0.5)*alpha;}if (v_notUsed > 0.5) {gl_FragColor*=.1;}}","attribute vec2 a_pos;attribute vec2 a_anchor_pos;attribute vec2 a_extrude;attribute vec2 a_placed;attribute vec2 a_shift;uniform mat4 u_matrix;uniform vec2 u_extrude_scale;uniform float u_camera_to_center_distance;varying float v_placed;varying float v_notUsed;void main() {vec4 projectedPoint=u_matrix*vec4(a_anchor_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float collision_perspective_ratio=clamp(0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);gl_Position=u_matrix*vec4(a_pos,0.0,1.0);gl_Position.xy+=(a_extrude+a_shift)*u_extrude_scale*gl_Position.w*collision_perspective_ratio;v_placed=a_placed.x;v_notUsed=a_placed.y;}"),$e=gr("varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;void main() {float alpha=0.5*min(v_perspective_ratio,1.0);float stroke_radius=0.9*max(v_perspective_ratio,1.0);float distance_to_center=length(v_extrude);float distance_to_edge=abs(distance_to_center-v_radius);float opacity_t=smoothstep(-stroke_radius,0.0,-distance_to_edge);vec4 color=mix(vec4(0.0,0.0,1.0,0.5),vec4(1.0,0.0,0.0,1.0),v_collision);gl_FragColor=color*alpha*opacity_t;}","attribute vec2 a_pos;attribute float a_radius;attribute vec2 a_flags;uniform mat4 u_matrix;uniform mat4 u_inv_matrix;uniform vec2 u_viewport_size;uniform float u_camera_to_center_distance;varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;vec3 toTilePosition(vec2 screenPos) {vec4 rayStart=u_inv_matrix*vec4(screenPos,-1.0,1.0);vec4 rayEnd =u_inv_matrix*vec4(screenPos, 1.0,1.0);rayStart.xyz/=rayStart.w;rayEnd.xyz /=rayEnd.w;highp float t=(0.0-rayStart.z)/(rayEnd.z-rayStart.z);return mix(rayStart.xyz,rayEnd.xyz,t);}void main() {vec2 quadCenterPos=a_pos;float radius=a_radius;float collision=a_flags.x;float vertexIdx=a_flags.y;vec2 quadVertexOffset=vec2(mix(-1.0,1.0,float(vertexIdx >=2.0)),mix(-1.0,1.0,float(vertexIdx >=1.0 && vertexIdx <=2.0)));vec2 quadVertexExtent=quadVertexOffset*radius;vec3 tilePos=toTilePosition(quadCenterPos);vec4 clipPos=u_matrix*vec4(tilePos,1.0);highp float camera_to_anchor_distance=clipPos.w;highp float collision_perspective_ratio=clamp(0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);float padding_factor=1.2;v_radius=radius;v_extrude=quadVertexExtent*padding_factor;v_perspective_ratio=collision_perspective_ratio;v_collision=collision;gl_Position=vec4(clipPos.xyz/clipPos.w,1.0)+vec4(quadVertexExtent*padding_factor/u_viewport_size*2.0,0.0,0.0);}"),tr=gr("uniform highp vec4 u_color;uniform sampler2D u_overlay;varying vec2 v_uv;void main() {vec4 overlay_color=texture2D(u_overlay,v_uv);gl_FragColor=mix(u_color,overlay_color,overlay_color.a);}","attribute vec2 a_pos;varying vec2 v_uv;uniform mat4 u_matrix;uniform float u_overlay_scale;void main() {v_uv=a_pos/8192.0;gl_Position=u_matrix*vec4(a_pos*u_overlay_scale,0,1);}"),er=gr("#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float opacity\ngl_FragColor=color*opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","attribute vec2 a_pos;uniform mat4 u_matrix;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float opacity\ngl_Position=u_matrix*vec4(a_pos,0,1);}"),rr=gr("varying vec2 v_pos;\n#pragma mapbox: define highp vec4 outline_color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 outline_color\n#pragma mapbox: initialize lowp float opacity\nfloat dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=outline_color*(alpha*opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","attribute vec2 a_pos;uniform mat4 u_matrix;uniform vec2 u_world;varying vec2 v_pos;\n#pragma mapbox: define highp vec4 outline_color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 outline_color\n#pragma mapbox: initialize lowp float opacity\ngl_Position=u_matrix*vec4(a_pos,0,1);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}"),ir=gr("uniform vec2 u_texsize;uniform sampler2D u_image;uniform float u_fade;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);float dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=mix(color1,color2,u_fade)*alpha*opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec2 u_world;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;gl_Position=u_matrix*vec4(a_pos,0,1);vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,a_pos);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}"),nr=gr("uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);gl_FragColor=mix(color1,color2,u_fade)*opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileZoomRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileZoomRatio,a_pos);}"),or=gr("varying vec4 v_color;void main() {gl_FragColor=v_color;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;uniform float u_vertical_gradient;uniform lowp float u_opacity;attribute vec2 a_pos;attribute vec4 a_normal_ed;varying vec4 v_color;\n#pragma mapbox: define highp float base\n#pragma mapbox: define highp float height\n#pragma mapbox: define highp vec4 color\nvoid main() {\n#pragma mapbox: initialize highp float base\n#pragma mapbox: initialize highp float height\n#pragma mapbox: initialize highp vec4 color\nvec3 normal=a_normal_ed.xyz;base=max(0.0,base);height=max(0.0,height);float t=mod(normal.x,2.0);gl_Position=u_matrix*vec4(a_pos,t > 0.0 ? height : base,1);float colorvalue=color.r*0.2126+color.g*0.7152+color.b*0.0722;v_color=vec4(0.0,0.0,0.0,1.0);vec4 ambientlight=vec4(0.03,0.03,0.03,1.0);color+=ambientlight;float directional=clamp(dot(normal/16384.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((1.0-colorvalue+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_color.r+=clamp(color.r*directional*u_lightcolor.r,mix(0.0,0.3,1.0-u_lightcolor.r),1.0);v_color.g+=clamp(color.g*directional*u_lightcolor.g,mix(0.0,0.3,1.0-u_lightcolor.g),1.0);v_color.b+=clamp(color.b*directional*u_lightcolor.b,mix(0.0,0.3,1.0-u_lightcolor.b),1.0);v_color*=u_opacity;}"),ar=gr("uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;\n#pragma mapbox: define lowp float base\n#pragma mapbox: define lowp float height\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float base\n#pragma mapbox: initialize lowp float height\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);vec4 mixedColor=mix(color1,color2,u_fade);gl_FragColor=mixedColor*v_lighting;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_height_factor;uniform vec3 u_scale;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;attribute vec2 a_pos;attribute vec4 a_normal_ed;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;\n#pragma mapbox: define lowp float base\n#pragma mapbox: define lowp float height\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float base\n#pragma mapbox: initialize lowp float height\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec3 normal=a_normal_ed.xyz;float edgedistance=a_normal_ed.w;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;base=max(0.0,base);height=max(0.0,height);float t=mod(normal.x,2.0);float z=t > 0.0 ? height : base;gl_Position=u_matrix*vec4(a_pos,z,1);vec2 pos=normal.x==1.0 && normal.y==0.0 && normal.z==16384.0\n? a_pos\n: vec2(edgedistance,z*u_height_factor);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,pos);v_lighting=vec4(0.0,0.0,0.0,1.0);float directional=clamp(dot(normal/16383.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((0.5+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_lighting.rgb+=clamp(directional*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));v_lighting*=u_opacity;}"),sr=gr("#ifdef GL_ES\nprecision highp float;\n#endif\nuniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_dimension;uniform float u_zoom;uniform float u_maxzoom;uniform vec4 u_unpack;float getElevation(vec2 coord,float bias) {vec4 data=texture2D(u_image,coord)*255.0;data.a=-1.0;return dot(data,u_unpack)/4.0;}void main() {vec2 epsilon=1.0/u_dimension;float a=getElevation(v_pos+vec2(-epsilon.x,-epsilon.y),0.0);float b=getElevation(v_pos+vec2(0,-epsilon.y),0.0);float c=getElevation(v_pos+vec2(epsilon.x,-epsilon.y),0.0);float d=getElevation(v_pos+vec2(-epsilon.x,0),0.0);float e=getElevation(v_pos,0.0);float f=getElevation(v_pos+vec2(epsilon.x,0),0.0);float g=getElevation(v_pos+vec2(-epsilon.x,epsilon.y),0.0);float h=getElevation(v_pos+vec2(0,epsilon.y),0.0);float i=getElevation(v_pos+vec2(epsilon.x,epsilon.y),0.0);float exaggeration=u_zoom < 2.0 ? 0.4 : u_zoom < 4.5 ? 0.35 : 0.3;vec2 deriv=vec2((c+f+f+i)-(a+d+d+g),(g+h+h+i)-(a+b+b+c))/ pow(2.0,(u_zoom-u_maxzoom)*exaggeration+19.2562-u_zoom);gl_FragColor=clamp(vec4(deriv.x/2.0+0.5,deriv.y/2.0+0.5,1.0,1.0),0.0,1.0);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec2 u_dimension;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);highp vec2 epsilon=1.0/u_dimension;float scale=(u_dimension.x-2.0)/u_dimension.x;v_pos=(a_texture_pos/8192.0)*scale+epsilon;}"),lr=gr("uniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_latrange;uniform vec2 u_light;uniform vec4 u_shadow;uniform vec4 u_highlight;uniform vec4 u_accent;\n#define PI 3.141592653589793\nvoid main() {vec4 pixel=texture2D(u_image,v_pos);vec2 deriv=((pixel.rg*2.0)-1.0);float scaleFactor=cos(radians((u_latrange[0]-u_latrange[1])*(1.0-v_pos.y)+u_latrange[1]));float slope=atan(1.25*length(deriv)/scaleFactor);float aspect=deriv.x !=0.0 ? atan(deriv.y,-deriv.x) : PI/2.0*(deriv.y > 0.0 ? 1.0 :-1.0);float intensity=u_light.x;float azimuth=u_light.y+PI;float base=1.875-intensity*1.75;float maxValue=0.5*PI;float scaledSlope=intensity !=0.5 ? ((pow(base,slope)-1.0)/(pow(base,maxValue)-1.0))*maxValue : slope;float accent=cos(scaledSlope);vec4 accent_color=(1.0-accent)*u_accent*clamp(intensity*2.0,0.0,1.0);float shade=abs(mod((aspect+azimuth)/PI+0.5,2.0)-1.0);vec4 shade_color=mix(u_shadow,u_highlight,shade)*sin(scaledSlope)*clamp(intensity*2.0,0.0,1.0);gl_FragColor=accent_color*(1.0-shade_color.a)+shade_color;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=a_texture_pos/8192.0;}"),ur=gr("uniform lowp float u_device_pixel_ratio;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);gl_FragColor=color*(alpha*opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","\n#define scale 0.015873016\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform vec2 u_units_to_pixels;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp float v_linesofar;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float width\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float width\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;v_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*2.0;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_width2=vec2(outset,inset);}"),cr=gr("uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;varying highp float v_lineprogress;\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);vec4 color=texture2D(u_image,vec2(v_lineprogress,0.5));gl_FragColor=color*(alpha*opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","\n#define MAX_LINE_DISTANCE 32767.0\n#define scale 0.015873016\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_units_to_pixels;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp float v_lineprogress;\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float width\nvoid main() {\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float width\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;v_lineprogress=(floor(a_data.z/4.0)+a_data.w*64.0)*2.0/MAX_LINE_DISTANCE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_width2=vec2(outset,inset);}"),pr=gr("uniform lowp float u_device_pixel_ratio;uniform vec2 u_texsize;uniform float u_fade;uniform mediump vec3 u_scale;uniform sampler2D u_image;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;vec2 pattern_size_a=vec2(display_size_a.x*fromScale/tileZoomRatio,display_size_a.y);vec2 pattern_size_b=vec2(display_size_b.x*toScale/tileZoomRatio,display_size_b.y);float aspect_a=display_size_a.y/v_width;float aspect_b=display_size_b.y/v_width;float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float x_a=mod(v_linesofar/pattern_size_a.x*aspect_a,1.0);float x_b=mod(v_linesofar/pattern_size_b.x*aspect_b,1.0);float y=0.5*v_normal.y+0.5;vec2 texel_size=1.0/u_texsize;vec2 pos_a=mix(pattern_tl_a*texel_size-texel_size,pattern_br_a*texel_size+texel_size,vec2(x_a,y));vec2 pos_b=mix(pattern_tl_b*texel_size-texel_size,pattern_br_b*texel_size+texel_size,vec2(x_b,y));vec4 color=mix(texture2D(u_image,pos_a),texture2D(u_image,pos_b),u_fade);gl_FragColor=color*alpha*opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","\n#define scale 0.015873016\n#define LINE_DISTANCE_SCALE 2.0\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform vec2 u_units_to_pixels;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define mediump float width\n#pragma mapbox: define lowp float floorwidth\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize mediump float width\n#pragma mapbox: initialize lowp float floorwidth\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_linesofar=a_linesofar;v_width2=vec2(outset,inset);v_width=floorwidth;}"),hr=gr("uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;uniform float u_sdfgamma;uniform float u_mix;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float width\n#pragma mapbox: define lowp float floorwidth\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float width\n#pragma mapbox: initialize lowp float floorwidth\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float sdfdist_a=texture2D(u_image,v_tex_a).a;float sdfdist_b=texture2D(u_image,v_tex_b).a;float sdfdist=mix(sdfdist_a,sdfdist_b,u_mix);alpha*=smoothstep(0.5-u_sdfgamma/floorwidth,0.5+u_sdfgamma/floorwidth,sdfdist);gl_FragColor=color*(alpha*opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","\n#define scale 0.015873016\n#define LINE_DISTANCE_SCALE 2.0\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_patternscale_a;uniform float u_tex_y_a;uniform vec2 u_patternscale_b;uniform float u_tex_y_b;uniform vec2 u_units_to_pixels;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float width\n#pragma mapbox: define lowp float floorwidth\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float width\n#pragma mapbox: initialize lowp float floorwidth\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_tex_a=vec2(a_linesofar*u_patternscale_a.x/floorwidth,normal.y*u_patternscale_a.y+u_tex_y_a);v_tex_b=vec2(a_linesofar*u_patternscale_b.x/floorwidth,normal.y*u_patternscale_b.y+u_tex_y_b);v_width2=vec2(outset,inset);}"),fr=gr("uniform float u_fade_t;uniform float u_opacity;uniform sampler2D u_image0;uniform sampler2D u_image1;varying vec2 v_pos0;varying vec2 v_pos1;uniform float u_brightness_low;uniform float u_brightness_high;uniform float u_saturation_factor;uniform float u_contrast_factor;uniform vec3 u_spin_weights;void main() {vec4 color0=texture2D(u_image0,v_pos0);vec4 color1=texture2D(u_image1,v_pos1);if (color0.a > 0.0) {color0.rgb=color0.rgb/color0.a;}if (color1.a > 0.0) {color1.rgb=color1.rgb/color1.a;}vec4 color=mix(color0,color1,u_fade_t);color.a*=u_opacity;vec3 rgb=color.rgb;rgb=vec3(dot(rgb,u_spin_weights.xyz),dot(rgb,u_spin_weights.zxy),dot(rgb,u_spin_weights.yzx));float average=(color.r+color.g+color.b)/3.0;rgb+=(average-rgb)*u_saturation_factor;rgb=(rgb-0.5)*u_contrast_factor+0.5;vec3 u_high_vec=vec3(u_brightness_low,u_brightness_low,u_brightness_low);vec3 u_low_vec=vec3(u_brightness_high,u_brightness_high,u_brightness_high);gl_FragColor=vec4(mix(u_high_vec,u_low_vec,rgb)*color.a,color.a);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec2 u_tl_parent;uniform float u_scale_parent;uniform float u_buffer_scale;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos0;varying vec2 v_pos1;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos0=(((a_texture_pos/8192.0)-0.5)/u_buffer_scale )+0.5;v_pos1=(v_pos0*u_scale_parent)+u_tl_parent;}"),dr=gr("uniform sampler2D u_texture;varying vec2 v_tex;varying float v_fade_opacity;\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\nlowp float alpha=opacity*v_fade_opacity;gl_FragColor=texture2D(u_texture,v_tex)*alpha;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform highp float u_camera_to_center_distance;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform float u_fade_change;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform vec2 u_texsize;varying vec2 v_tex;varying float v_fade_opacity;\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;vec2 a_minFontScale=a_pixeloffset.zw/256.0;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\ncamera_to_anchor_distance/u_camera_to_center_distance :\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*max(a_minFontScale,fontScale)+a_pxoffset/16.0),0.0,1.0);v_tex=a_tex/u_texsize;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;v_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));}"),mr=gr("#define SDF_PX 8.0\nuniform bool u_is_halo;uniform sampler2D u_texture;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;uniform bool u_is_text;varying vec2 v_data0;varying vec3 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nfloat EDGE_GAMMA=0.105/u_device_pixel_ratio;vec2 tex=v_data0.xy;float gamma_scale=v_data1.x;float size=v_data1.y;float fade_opacity=v_data1[2];float fontScale=u_is_text ? size/24.0 : size;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;varying vec2 v_data0;varying vec3 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\ncamera_to_anchor_distance/u_camera_to_center_distance :\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale+a_pxoffset),0.0,1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));v_data0=a_tex/u_texsize;v_data1=vec3(gamma_scale,size,interpolated_fade_opacity);}"),yr=gr("#define SDF_PX 8.0\n#define SDF 1.0\n#define ICON 0.0\nuniform bool u_is_halo;uniform sampler2D u_texture;uniform sampler2D u_texture_icon;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;varying vec4 v_data0;varying vec4 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nfloat fade_opacity=v_data1[2];if (v_data1.w==ICON) {vec2 tex_icon=v_data0.zw;lowp float alpha=opacity*fade_opacity;gl_FragColor=texture2D(u_texture_icon,tex_icon)*alpha;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\nreturn;}vec2 tex=v_data0.xy;float EDGE_GAMMA=0.105/u_device_pixel_ratio;float gamma_scale=v_data1.x;float size=v_data1.y;float fontScale=size/24.0;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec2 u_texsize_icon;varying vec4 v_data0;varying vec4 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);float is_sdf=a_size[0]-2.0*a_size_min;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\ncamera_to_anchor_distance/u_camera_to_center_distance :\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=size/24.0;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale),0.0,1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));v_data0.xy=a_tex/u_texsize;v_data0.zw=a_tex/u_texsize_icon;v_data1=vec4(gamma_scale,size,interpolated_fade_opacity,is_sdf);}");function gr(t,e){var r=/#pragma mapbox: ([\w]+) ([\w]+) ([\w]+) ([\w]+)/g,i={};return{fragmentSource:t=t.replace(r,function(t,e,r,n,o){return i[o]=!0,"define"===e?"\n#ifndef HAS_UNIFORM_u_"+o+"\nvarying "+r+" "+n+" "+o+";\n#else\nuniform "+r+" "+n+" u_"+o+";\n#endif\n":"\n#ifdef HAS_UNIFORM_u_"+o+"\n "+r+" "+n+" "+o+" = u_"+o+";\n#endif\n"}),vertexSource:e=e.replace(r,function(t,e,r,n,o){var a="float"===n?"vec2":"vec4",s=o.match(/color/)?"color":a;return i[o]?"define"===e?"\n#ifndef HAS_UNIFORM_u_"+o+"\nuniform lowp float u_"+o+"_t;\nattribute "+r+" "+a+" a_"+o+";\nvarying "+r+" "+n+" "+o+";\n#else\nuniform "+r+" "+n+" u_"+o+";\n#endif\n":"vec4"===s?"\n#ifndef HAS_UNIFORM_u_"+o+"\n "+o+" = a_"+o+";\n#else\n "+r+" "+n+" "+o+" = u_"+o+";\n#endif\n":"\n#ifndef HAS_UNIFORM_u_"+o+"\n "+o+" = unpack_mix_"+s+"(a_"+o+", u_"+o+"_t);\n#else\n "+r+" "+n+" "+o+" = u_"+o+";\n#endif\n":"define"===e?"\n#ifndef HAS_UNIFORM_u_"+o+"\nuniform lowp float u_"+o+"_t;\nattribute "+r+" "+a+" a_"+o+";\n#else\nuniform "+r+" "+n+" u_"+o+";\n#endif\n":"vec4"===s?"\n#ifndef HAS_UNIFORM_u_"+o+"\n "+r+" "+n+" "+o+" = a_"+o+";\n#else\n "+r+" "+n+" "+o+" = u_"+o+";\n#endif\n":"\n#ifndef HAS_UNIFORM_u_"+o+"\n "+r+" "+n+" "+o+" = unpack_mix_"+s+"(a_"+o+", u_"+o+"_t);\n#else\n "+r+" "+n+" "+o+" = u_"+o+";\n#endif\n"})}}var _r=Object.freeze({__proto__:null,prelude:Ge,background:Xe,backgroundPattern:We,circle:Ke,clippingMask:He,heatmap:Je,heatmapTexture:Ye,collisionBox:Qe,collisionCircle:$e,debug:tr,fill:er,fillOutline:rr,fillOutlinePattern:ir,fillPattern:nr,fillExtrusion:or,fillExtrusionPattern:ar,hillshadePrepare:sr,hillshade:lr,line:ur,lineGradient:cr,linePattern:pr,lineSDF:hr,raster:fr,symbolIcon:dr,symbolSDF:mr,symbolTextAndIcon:yr}),vr=function(){this.boundProgram=null,this.boundLayoutVertexBuffer=null,this.boundPaintVertexBuffers=[],this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffer=null,this.vao=null};vr.prototype.bind=function(t,e,r,i,n,o,a,s){this.context=t;for(var l=this.boundPaintVertexBuffers.length!==i.length,u=0;!l&&u<i.length;u++)this.boundPaintVertexBuffers[u]!==i[u]&&(l=!0);t.extVertexArrayObject&&this.vao&&this.boundProgram===e&&this.boundLayoutVertexBuffer===r&&!l&&this.boundIndexBuffer===n&&this.boundVertexOffset===o&&this.boundDynamicVertexBuffer===a&&this.boundDynamicVertexBuffer2===s?(t.bindVertexArrayOES.set(this.vao),a&&a.bind(),n&&n.dynamicDraw&&n.bind(),s&&s.bind()):this.freshBind(e,r,i,n,o,a,s)},vr.prototype.freshBind=function(t,e,r,i,n,o,a){var s,l=t.numAttributes,u=this.context,c=u.gl;if(u.extVertexArrayObject)this.vao&&this.destroy(),this.vao=u.extVertexArrayObject.createVertexArrayOES(),u.bindVertexArrayOES.set(this.vao),s=0,this.boundProgram=t,this.boundLayoutVertexBuffer=e,this.boundPaintVertexBuffers=r,this.boundIndexBuffer=i,this.boundVertexOffset=n,this.boundDynamicVertexBuffer=o,this.boundDynamicVertexBuffer2=a;else{s=u.currentNumAttributes||0;for(var p=l;p<s;p++)c.disableVertexAttribArray(p)}e.enableAttributes(c,t);for(var h=0,f=r;h<f.length;h+=1)f[h].enableAttributes(c,t);o&&o.enableAttributes(c,t),a&&a.enableAttributes(c,t),e.bind(),e.setVertexAttribPointers(c,t,n);for(var d=0,m=r;d<m.length;d+=1){var y=m[d];y.bind(),y.setVertexAttribPointers(c,t,n)}o&&(o.bind(),o.setVertexAttribPointers(c,t,n)),i&&i.bind(),a&&(a.bind(),a.setVertexAttribPointers(c,t,n)),u.currentNumAttributes=l},vr.prototype.destroy=function(){this.vao&&(this.context.extVertexArrayObject.deleteVertexArrayOES(this.vao),this.vao=null)};var xr=function(t,e,r,i,n){var o=t.gl;this.program=o.createProgram();var a=r?r.defines():[];n&&a.push("#define OVERDRAW_INSPECTOR;");var s=a.concat(Ge.fragmentSource,e.fragmentSource).join("\n"),l=a.concat(Ge.vertexSource,e.vertexSource).join("\n"),u=o.createShader(o.FRAGMENT_SHADER);if(o.isContextLost())this.failedToCreate=!0;else{o.shaderSource(u,s),o.compileShader(u),o.attachShader(this.program,u);var c=o.createShader(o.VERTEX_SHADER);if(o.isContextLost())this.failedToCreate=!0;else{o.shaderSource(c,l),o.compileShader(c),o.attachShader(this.program,c);for(var p=r?r.layoutAttributes:[],h=0;h<p.length;h++)o.bindAttribLocation(this.program,h,p[h].name);o.linkProgram(this.program),o.deleteShader(c),o.deleteShader(u),this.numAttributes=o.getProgramParameter(this.program,o.ACTIVE_ATTRIBUTES),this.attributes={};for(var f={},d=0;d<this.numAttributes;d++){var m=o.getActiveAttrib(this.program,d);m&&(this.attributes[m.name]=o.getAttribLocation(this.program,m.name))}for(var y=o.getProgramParameter(this.program,o.ACTIVE_UNIFORMS),g=0;g<y;g++){var _=o.getActiveUniform(this.program,g);_&&(f[_.name]=o.getUniformLocation(this.program,_.name))}this.fixedUniforms=i(t,f),this.binderUniforms=r?r.getUniforms(t,f):[]}}};function br(t,e,r){var i=1/he(r,1,e.transform.tileZoom),n=Math.pow(2,r.tileID.overscaledZ),o=r.tileSize*Math.pow(2,e.transform.tileZoom)/n,a=o*(r.tileID.canonical.x+r.tileID.wrap*n),s=o*r.tileID.canonical.y;return{u_image:0,u_texsize:r.imageAtlasTexture.size,u_scale:[i,t.fromScale,t.toScale],u_fade:t.t,u_pixel_coord_upper:[a>>16,s>>16],u_pixel_coord_lower:[65535&a,65535&s]}}xr.prototype.draw=function(t,e,r,i,n,o,a,s,l,u,c,p,h,f,d,m){var y,g=t.gl;if(!this.failedToCreate){for(var _ in t.program.set(this.program),t.setDepthMode(r),t.setStencilMode(i),t.setColorMode(n),t.setCullFace(o),this.fixedUniforms)this.fixedUniforms[_].set(a[_]);f&&f.setUniforms(t,this.binderUniforms,p,{zoom:h});for(var v=(y={},y[g.LINES]=2,y[g.TRIANGLES]=3,y[g.LINE_STRIP]=1,y)[e],x=0,b=c.get();x<b.length;x+=1){var w=b[x],S=w.vaos||(w.vaos={});(S[s]||(S[s]=new vr)).bind(t,this,l,f?f.getPaintVertexBuffers():[],u,w.vertexOffset,d,m),g.drawElements(e,w.primitiveLength*v,g.UNSIGNED_SHORT,w.primitiveOffset*v*2)}}};var wr=function(e,r,i,n){var o=r.style.light,a=o.properties.get("position"),s=[a.x,a.y,a.z],l=t.create$1();"viewport"===o.properties.get("anchor")&&t.fromRotation(l,-r.transform.angle),t.transformMat3(s,s,l);var u=o.properties.get("color");return{u_matrix:e,u_lightpos:s,u_lightintensity:o.properties.get("intensity"),u_lightcolor:[u.r,u.g,u.b],u_vertical_gradient:+i,u_opacity:n}},Sr=function(e,r,i,n,o,a,s){return t.extend(wr(e,r,i,n),br(a,r,s),{u_height_factor:-Math.pow(2,o.overscaledZ)/s.tileSize/8})},Tr=function(t){return{u_matrix:t}},Ir=function(e,r,i,n){return t.extend(Tr(e),br(i,r,n))},Er=function(t,e){return{u_matrix:t,u_world:e}},Ar=function(e,r,i,n,o){return t.extend(Ir(e,r,i,n),{u_world:o})},zr=function(e,r,i,n){var o,a,s=e.transform;if("map"===n.paint.get("circle-pitch-alignment")){var l=he(i,1,s.zoom);o=!0,a=[l,l]}else o=!1,a=s.pixelsToGLUnits;return{u_camera_to_center_distance:s.cameraToCenterDistance,u_scale_with_map:+("map"===n.paint.get("circle-pitch-scale")),u_matrix:e.translatePosMatrix(r.posMatrix,i,n.paint.get("circle-translate"),n.paint.get("circle-translate-anchor")),u_pitch_with_map:+o,u_device_pixel_ratio:t.browser.devicePixelRatio,u_extrude_scale:a}},Pr=function(t,e,r){var i=he(r,1,e.zoom),n=Math.pow(2,e.zoom-r.tileID.overscaledZ),o=r.tileID.overscaleFactor();return{u_matrix:t,u_camera_to_center_distance:e.cameraToCenterDistance,u_pixels_to_tile_units:i,u_extrude_scale:[e.pixelsToGLUnits[0]/(i*n),e.pixelsToGLUnits[1]/(i*n)],u_overscale_factor:o}},Cr=function(t,e,r){return{u_matrix:t,u_inv_matrix:e,u_camera_to_center_distance:r.cameraToCenterDistance,u_viewport_size:[r.width,r.height]}},kr=function(t,e,r){return void 0===r&&(r=1),{u_matrix:t,u_color:e,u_overlay:0,u_overlay_scale:r}},Mr=function(t){return{u_matrix:t}},Dr=function(t,e,r,i){return{u_matrix:t,u_extrude_scale:he(e,1,r),u_intensity:i}},Lr=function(e,r,i){var n=e.transform;return{u_matrix:Ur(e,r,i),u_ratio:1/he(r,1,n.zoom),u_device_pixel_ratio:t.browser.devicePixelRatio,u_units_to_pixels:[1/n.pixelsToGLUnits[0],1/n.pixelsToGLUnits[1]]}},Br=function(e,r,i){return t.extend(Lr(e,r,i),{u_image:0})},Rr=function(e,r,i,n){var o=e.transform,a=Or(r,o);return{u_matrix:Ur(e,r,i),u_texsize:r.imageAtlasTexture.size,u_ratio:1/he(r,1,o.zoom),u_device_pixel_ratio:t.browser.devicePixelRatio,u_image:0,u_scale:[a,n.fromScale,n.toScale],u_fade:n.t,u_units_to_pixels:[1/o.pixelsToGLUnits[0],1/o.pixelsToGLUnits[1]]}},Fr=function(e,r,i,n,o){var a=e.lineAtlas,s=Or(r,e.transform),l="round"===i.layout.get("line-cap"),u=a.getDash(n.from,l),c=a.getDash(n.to,l),p=u.width*o.fromScale,h=c.width*o.toScale;return t.extend(Lr(e,r,i),{u_patternscale_a:[s/p,-u.height/2],u_patternscale_b:[s/h,-c.height/2],u_sdfgamma:a.width/(256*Math.min(p,h)*t.browser.devicePixelRatio)/2,u_image:0,u_tex_y_a:u.y,u_tex_y_b:c.y,u_mix:o.t})};function Or(t,e){return 1/he(t,1,e.tileZoom)}function Ur(t,e,r){return t.translatePosMatrix(e.tileID.posMatrix,e,r.paint.get("line-translate"),r.paint.get("line-translate-anchor"))}var Vr=function(t,e,r,i,n){return{u_matrix:t,u_tl_parent:e,u_scale_parent:r,u_buffer_scale:1,u_fade_t:i.mix,u_opacity:i.opacity*n.paint.get("raster-opacity"),u_image0:0,u_image1:1,u_brightness_low:n.paint.get("raster-brightness-min"),u_brightness_high:n.paint.get("raster-brightness-max"),u_saturation_factor:(a=n.paint.get("raster-saturation"),a>0?1-1/(1.001-a):-a),u_contrast_factor:(o=n.paint.get("raster-contrast"),o>0?1/(1-o):1+o),u_spin_weights:Nr(n.paint.get("raster-hue-rotate"))};var o,a};function Nr(t){t*=Math.PI/180;var e=Math.sin(t),r=Math.cos(t);return[(2*r+1)/3,(-Math.sqrt(3)*e-r+1)/3,(Math.sqrt(3)*e-r+1)/3]}var jr,qr=function(t,e,r,i,n,o,a,s,l,u){var c=n.transform;return{u_is_size_zoom_constant:+("constant"===t||"source"===t),u_is_size_feature_constant:+("constant"===t||"camera"===t),u_size_t:e?e.uSizeT:0,u_size:e?e.uSize:0,u_camera_to_center_distance:c.cameraToCenterDistance,u_pitch:c.pitch/360*2*Math.PI,u_rotate_symbol:+r,u_aspect_ratio:c.width/c.height,u_fade_change:n.options.fadeDuration?n.symbolFadeChange:1,u_matrix:o,u_label_plane_matrix:a,u_coord_matrix:s,u_is_text:+l,u_pitch_with_map:+i,u_texsize:u,u_texture:0}},Zr=function(e,r,i,n,o,a,s,l,u,c,p){var h=o.transform;return t.extend(qr(e,r,i,n,o,a,s,l,u,c),{u_gamma_scale:n?Math.cos(h._pitch)*h.cameraToCenterDistance:1,u_device_pixel_ratio:t.browser.devicePixelRatio,u_is_halo:+p})},Gr=function(e,r,i,n,o,a,s,l,u,c){return t.extend(Zr(e,r,i,n,o,a,s,l,!0,u,!0),{u_texsize_icon:c,u_texture_icon:1})},Xr=function(t,e,r){return{u_matrix:t,u_opacity:e,u_color:r}},Wr=function(e,r,i,n,o,a){return t.extend(function(t,e,r,i){var n=r.imageManager.getPattern(t.from.toString()),o=r.imageManager.getPattern(t.to.toString()),a=r.imageManager.getPixelSize(),s=a.width,l=a.height,u=Math.pow(2,i.tileID.overscaledZ),c=i.tileSize*Math.pow(2,r.transform.tileZoom)/u,p=c*(i.tileID.canonical.x+i.tileID.wrap*u),h=c*i.tileID.canonical.y;return{u_image:0,u_pattern_tl_a:n.tl,u_pattern_br_a:n.br,u_pattern_tl_b:o.tl,u_pattern_br_b:o.br,u_texsize:[s,l],u_mix:e.t,u_pattern_size_a:n.displaySize,u_pattern_size_b:o.displaySize,u_scale_a:e.fromScale,u_scale_b:e.toScale,u_tile_units_to_pixels:1/he(i,1,r.transform.tileZoom),u_pixel_coord_upper:[p>>16,h>>16],u_pixel_coord_lower:[65535&p,65535&h]}}(n,a,i,o),{u_matrix:e,u_opacity:r})},Kr={fillExtrusion:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_lightpos:new t.Uniform3f(e,r.u_lightpos),u_lightintensity:new t.Uniform1f(e,r.u_lightintensity),u_lightcolor:new t.Uniform3f(e,r.u_lightcolor),u_vertical_gradient:new t.Uniform1f(e,r.u_vertical_gradient),u_opacity:new t.Uniform1f(e,r.u_opacity)}},fillExtrusionPattern:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_lightpos:new t.Uniform3f(e,r.u_lightpos),u_lightintensity:new t.Uniform1f(e,r.u_lightintensity),u_lightcolor:new t.Uniform3f(e,r.u_lightcolor),u_vertical_gradient:new t.Uniform1f(e,r.u_vertical_gradient),u_height_factor:new t.Uniform1f(e,r.u_height_factor),u_image:new t.Uniform1i(e,r.u_image),u_texsize:new t.Uniform2f(e,r.u_texsize),u_pixel_coord_upper:new t.Uniform2f(e,r.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,r.u_pixel_coord_lower),u_scale:new t.Uniform3f(e,r.u_scale),u_fade:new t.Uniform1f(e,r.u_fade),u_opacity:new t.Uniform1f(e,r.u_opacity)}},fill:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix)}},fillPattern:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_image:new t.Uniform1i(e,r.u_image),u_texsize:new t.Uniform2f(e,r.u_texsize),u_pixel_coord_upper:new t.Uniform2f(e,r.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,r.u_pixel_coord_lower),u_scale:new t.Uniform3f(e,r.u_scale),u_fade:new t.Uniform1f(e,r.u_fade)}},fillOutline:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_world:new t.Uniform2f(e,r.u_world)}},fillOutlinePattern:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_world:new t.Uniform2f(e,r.u_world),u_image:new t.Uniform1i(e,r.u_image),u_texsize:new t.Uniform2f(e,r.u_texsize),u_pixel_coord_upper:new t.Uniform2f(e,r.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,r.u_pixel_coord_lower),u_scale:new t.Uniform3f(e,r.u_scale),u_fade:new t.Uniform1f(e,r.u_fade)}},circle:function(e,r){return{u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_scale_with_map:new t.Uniform1i(e,r.u_scale_with_map),u_pitch_with_map:new t.Uniform1i(e,r.u_pitch_with_map),u_extrude_scale:new t.Uniform2f(e,r.u_extrude_scale),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_matrix:new t.UniformMatrix4f(e,r.u_matrix)}},collisionBox:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_pixels_to_tile_units:new t.Uniform1f(e,r.u_pixels_to_tile_units),u_extrude_scale:new t.Uniform2f(e,r.u_extrude_scale),u_overscale_factor:new t.Uniform1f(e,r.u_overscale_factor)}},collisionCircle:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_inv_matrix:new t.UniformMatrix4f(e,r.u_inv_matrix),u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_viewport_size:new t.Uniform2f(e,r.u_viewport_size)}},debug:function(e,r){return{u_color:new t.UniformColor(e,r.u_color),u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_overlay:new t.Uniform1i(e,r.u_overlay),u_overlay_scale:new t.Uniform1f(e,r.u_overlay_scale)}},clippingMask:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix)}},heatmap:function(e,r){return{u_extrude_scale:new t.Uniform1f(e,r.u_extrude_scale),u_intensity:new t.Uniform1f(e,r.u_intensity),u_matrix:new t.UniformMatrix4f(e,r.u_matrix)}},heatmapTexture:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_world:new t.Uniform2f(e,r.u_world),u_image:new t.Uniform1i(e,r.u_image),u_color_ramp:new t.Uniform1i(e,r.u_color_ramp),u_opacity:new t.Uniform1f(e,r.u_opacity)}},hillshade:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_image:new t.Uniform1i(e,r.u_image),u_latrange:new t.Uniform2f(e,r.u_latrange),u_light:new t.Uniform2f(e,r.u_light),u_shadow:new t.UniformColor(e,r.u_shadow),u_highlight:new t.UniformColor(e,r.u_highlight),u_accent:new t.UniformColor(e,r.u_accent)}},hillshadePrepare:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_image:new t.Uniform1i(e,r.u_image),u_dimension:new t.Uniform2f(e,r.u_dimension),u_zoom:new t.Uniform1f(e,r.u_zoom),u_maxzoom:new t.Uniform1f(e,r.u_maxzoom),u_unpack:new t.Uniform4f(e,r.u_unpack)}},line:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_ratio:new t.Uniform1f(e,r.u_ratio),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_units_to_pixels:new t.Uniform2f(e,r.u_units_to_pixels)}},lineGradient:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_ratio:new t.Uniform1f(e,r.u_ratio),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_units_to_pixels:new t.Uniform2f(e,r.u_units_to_pixels),u_image:new t.Uniform1i(e,r.u_image)}},linePattern:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_texsize:new t.Uniform2f(e,r.u_texsize),u_ratio:new t.Uniform1f(e,r.u_ratio),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_image:new t.Uniform1i(e,r.u_image),u_units_to_pixels:new t.Uniform2f(e,r.u_units_to_pixels),u_scale:new t.Uniform3f(e,r.u_scale),u_fade:new t.Uniform1f(e,r.u_fade)}},lineSDF:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_ratio:new t.Uniform1f(e,r.u_ratio),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_units_to_pixels:new t.Uniform2f(e,r.u_units_to_pixels),u_patternscale_a:new t.Uniform2f(e,r.u_patternscale_a),u_patternscale_b:new t.Uniform2f(e,r.u_patternscale_b),u_sdfgamma:new t.Uniform1f(e,r.u_sdfgamma),u_image:new t.Uniform1i(e,r.u_image),u_tex_y_a:new t.Uniform1f(e,r.u_tex_y_a),u_tex_y_b:new t.Uniform1f(e,r.u_tex_y_b),u_mix:new t.Uniform1f(e,r.u_mix)}},raster:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_tl_parent:new t.Uniform2f(e,r.u_tl_parent),u_scale_parent:new t.Uniform1f(e,r.u_scale_parent),u_buffer_scale:new t.Uniform1f(e,r.u_buffer_scale),u_fade_t:new t.Uniform1f(e,r.u_fade_t),u_opacity:new t.Uniform1f(e,r.u_opacity),u_image0:new t.Uniform1i(e,r.u_image0),u_image1:new t.Uniform1i(e,r.u_image1),u_brightness_low:new t.Uniform1f(e,r.u_brightness_low),u_brightness_high:new t.Uniform1f(e,r.u_brightness_high),u_saturation_factor:new t.Uniform1f(e,r.u_saturation_factor),u_contrast_factor:new t.Uniform1f(e,r.u_contrast_factor),u_spin_weights:new t.Uniform3f(e,r.u_spin_weights)}},symbolIcon:function(e,r){return{u_is_size_zoom_constant:new t.Uniform1i(e,r.u_is_size_zoom_constant),u_is_size_feature_constant:new t.Uniform1i(e,r.u_is_size_feature_constant),u_size_t:new t.Uniform1f(e,r.u_size_t),u_size:new t.Uniform1f(e,r.u_size),u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_pitch:new t.Uniform1f(e,r.u_pitch),u_rotate_symbol:new t.Uniform1i(e,r.u_rotate_symbol),u_aspect_ratio:new t.Uniform1f(e,r.u_aspect_ratio),u_fade_change:new t.Uniform1f(e,r.u_fade_change),u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_label_plane_matrix:new t.UniformMatrix4f(e,r.u_label_plane_matrix),u_coord_matrix:new t.UniformMatrix4f(e,r.u_coord_matrix),u_is_text:new t.Uniform1i(e,r.u_is_text),u_pitch_with_map:new t.Uniform1i(e,r.u_pitch_with_map),u_texsize:new t.Uniform2f(e,r.u_texsize),u_texture:new t.Uniform1i(e,r.u_texture)}},symbolSDF:function(e,r){return{u_is_size_zoom_constant:new t.Uniform1i(e,r.u_is_size_zoom_constant),u_is_size_feature_constant:new t.Uniform1i(e,r.u_is_size_feature_constant),u_size_t:new t.Uniform1f(e,r.u_size_t),u_size:new t.Uniform1f(e,r.u_size),u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_pitch:new t.Uniform1f(e,r.u_pitch),u_rotate_symbol:new t.Uniform1i(e,r.u_rotate_symbol),u_aspect_ratio:new t.Uniform1f(e,r.u_aspect_ratio),u_fade_change:new t.Uniform1f(e,r.u_fade_change),u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_label_plane_matrix:new t.UniformMatrix4f(e,r.u_label_plane_matrix),u_coord_matrix:new t.UniformMatrix4f(e,r.u_coord_matrix),u_is_text:new t.Uniform1i(e,r.u_is_text),u_pitch_with_map:new t.Uniform1i(e,r.u_pitch_with_map),u_texsize:new t.Uniform2f(e,r.u_texsize),u_texture:new t.Uniform1i(e,r.u_texture),u_gamma_scale:new t.Uniform1f(e,r.u_gamma_scale),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_is_halo:new t.Uniform1i(e,r.u_is_halo)}},symbolTextAndIcon:function(e,r){return{u_is_size_zoom_constant:new t.Uniform1i(e,r.u_is_size_zoom_constant),u_is_size_feature_constant:new t.Uniform1i(e,r.u_is_size_feature_constant),u_size_t:new t.Uniform1f(e,r.u_size_t),u_size:new t.Uniform1f(e,r.u_size),u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_pitch:new t.Uniform1f(e,r.u_pitch),u_rotate_symbol:new t.Uniform1i(e,r.u_rotate_symbol),u_aspect_ratio:new t.Uniform1f(e,r.u_aspect_ratio),u_fade_change:new t.Uniform1f(e,r.u_fade_change),u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_label_plane_matrix:new t.UniformMatrix4f(e,r.u_label_plane_matrix),u_coord_matrix:new t.UniformMatrix4f(e,r.u_coord_matrix),u_is_text:new t.Uniform1i(e,r.u_is_text),u_pitch_with_map:new t.Uniform1i(e,r.u_pitch_with_map),u_texsize:new t.Uniform2f(e,r.u_texsize),u_texsize_icon:new t.Uniform2f(e,r.u_texsize_icon),u_texture:new t.Uniform1i(e,r.u_texture),u_texture_icon:new t.Uniform1i(e,r.u_texture_icon),u_gamma_scale:new t.Uniform1f(e,r.u_gamma_scale),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_is_halo:new t.Uniform1i(e,r.u_is_halo)}},background:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_opacity:new t.Uniform1f(e,r.u_opacity),u_color:new t.UniformColor(e,r.u_color)}},backgroundPattern:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_opacity:new t.Uniform1f(e,r.u_opacity),u_image:new t.Uniform1i(e,r.u_image),u_pattern_tl_a:new t.Uniform2f(e,r.u_pattern_tl_a),u_pattern_br_a:new t.Uniform2f(e,r.u_pattern_br_a),u_pattern_tl_b:new t.Uniform2f(e,r.u_pattern_tl_b),u_pattern_br_b:new t.Uniform2f(e,r.u_pattern_br_b),u_texsize:new t.Uniform2f(e,r.u_texsize),u_mix:new t.Uniform1f(e,r.u_mix),u_pattern_size_a:new t.Uniform2f(e,r.u_pattern_size_a),u_pattern_size_b:new t.Uniform2f(e,r.u_pattern_size_b),u_scale_a:new t.Uniform1f(e,r.u_scale_a),u_scale_b:new t.Uniform1f(e,r.u_scale_b),u_pixel_coord_upper:new t.Uniform2f(e,r.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,r.u_pixel_coord_lower),u_tile_units_to_pixels:new t.Uniform1f(e,r.u_tile_units_to_pixels)}}};function Hr(e,r,i,n,o,a,s){for(var l=e.context,u=l.gl,c=e.useProgram("collisionBox"),p=[],h=0,f=0,d=0;d<n.length;d++){var m=n[d],y=r.getTile(m),g=y.getBucket(i);if(g){var _=m.posMatrix;0===o[0]&&0===o[1]||(_=e.translatePosMatrix(m.posMatrix,y,o,a));var v=s?g.textCollisionBox:g.iconCollisionBox,x=g.collisionCircleArray;if(x.length>0){var b=t.create(),w=_;t.mul(b,g.placementInvProjMatrix,e.transform.glCoordMatrix),t.mul(b,b,g.placementViewportMatrix),p.push({circleArray:x,circleOffset:f,transform:w,invTransform:b}),f=h+=x.length/4}v&&c.draw(l,u.LINES,It.disabled,Et.disabled,e.colorModeForRenderPass(),zt.disabled,Pr(_,e.transform,y),i.id,v.layoutVertexBuffer,v.indexBuffer,v.segments,null,e.transform.zoom,null,null,v.collisionVertexBuffer)}}if(s&&p.length){var S=e.useProgram("collisionCircle"),T=new t.StructArrayLayout2f1f2i16;T.resize(4*h),T._trim();for(var I=0,E=0,A=p;E<A.length;E+=1)for(var z=A[E],P=0;P<z.circleArray.length/4;P++){var C=4*P,k=z.circleArray[C+0],M=z.circleArray[C+1],D=z.circleArray[C+2],L=z.circleArray[C+3];T.emplace(I++,k,M,D,L,0),T.emplace(I++,k,M,D,L,1),T.emplace(I++,k,M,D,L,2),T.emplace(I++,k,M,D,L,3)}(!jr||jr.length<2*h)&&(jr=function(e){var r=2*h,i=new t.StructArrayLayout3ui6;i.resize(r),i._trim();for(var n=0;n<r;n++){var o=6*n;i.uint16[o+0]=4*n+0,i.uint16[o+1]=4*n+1,i.uint16[o+2]=4*n+2,i.uint16[o+3]=4*n+2,i.uint16[o+4]=4*n+3,i.uint16[o+5]=4*n+0}return i}());for(var B=l.createIndexBuffer(jr,!0),R=l.createVertexBuffer(T,t.collisionCircleLayout.members,!0),F=0,O=p;F<O.length;F+=1){var U=O[F],V=Cr(U.transform,U.invTransform,e.transform);S.draw(l,u.TRIANGLES,It.disabled,Et.disabled,e.colorModeForRenderPass(),zt.disabled,V,i.id,R,B,t.SegmentVector.simpleSegment(0,2*U.circleOffset,U.circleArray.length,U.circleArray.length/2),null,e.transform.zoom,null,null,null)}R.destroy(),B.destroy()}}var Jr=t.identity(new Float32Array(16));function Yr(e,r,i,n,o,a){var s=t.getAnchorAlignment(e),l=-(s.horizontalAlign-.5)*r,u=-(s.verticalAlign-.5)*i,c=t.evaluateVariableOffset(e,n);return new t.Point((l/o+c[0])*a,(u/o+c[1])*a)}function Qr(e,r,i,n,o,a,s,l,u,c,p){var h=e.text.placedSymbolArray,f=e.text.dynamicLayoutVertexArray,d=e.icon.dynamicLayoutVertexArray,m={};f.clear();for(var y=0;y<h.length;y++){var g=h.get(y),_=g.hidden||!g.crossTileID||e.allowVerticalPlacement&&!g.placedOrientation?null:n[g.crossTileID];if(_){var v=new t.Point(g.anchorX,g.anchorY),x=$t(v,i?l:s),b=te(a.cameraToCenterDistance,x.signedDistanceFromCamera),w=o.evaluateSizeForFeature(e.textSizeData,c,g)*b/t.ONE_EM;i&&(w*=e.tilePixelRatio/u);for(var S=Yr(_.anchor,_.width,_.height,_.textOffset,_.textBoxScale,w),T=i?$t(v.add(S),s).point:x.point.add(r?S.rotate(-a.angle):S),I=e.allowVerticalPlacement&&g.placedOrientation===t.WritingMode.vertical?Math.PI/2:0,E=0;E<g.numGlyphs;E++)t.addDynamicAttributes(f,T,I);p&&g.associatedIconIndex>=0&&(m[g.associatedIconIndex]={shiftedAnchor:T,angle:I})}else ue(g.numGlyphs,f)}if(p){d.clear();for(var A=e.icon.placedSymbolArray,z=0;z<A.length;z++){var P=A.get(z);if(P.hidden)ue(P.numGlyphs,d);else{var C=m[z];if(C)for(var k=0;k<P.numGlyphs;k++)t.addDynamicAttributes(d,C.shiftedAnchor,C.angle);else ue(P.numGlyphs,d)}}e.icon.dynamicLayoutVertexBuffer.updateData(d)}e.text.dynamicLayoutVertexBuffer.updateData(f)}function $r(t,e,r){return r.iconsInText&&e?"symbolTextAndIcon":t?"symbolSDF":"symbolIcon"}function ti(e,r,i,n,o,a,s,l,u,c,p,h){for(var f=e.context,d=f.gl,m=e.transform,y="map"===l,g="map"===u,_=y&&"point"!==i.layout.get("symbol-placement"),v=y&&!g&&!_,x=void 0!==i.layout.get("symbol-sort-key").constantOr(1),b=e.depthModeForSublayer(0,It.ReadOnly),w=i.layout.get("text-variable-anchor"),S=[],T=0,I=n;T<I.length;T+=1){var E=I[T],A=r.getTile(E),z=A.getBucket(i);if(z){var P=o?z.text:z.icon;if(P&&P.segments.get().length){var C=P.programConfigurations.get(i.id),k=o||z.sdfIcons,M=o?z.textSizeData:z.iconSizeData,D=g||0!==m.pitch,L=e.useProgram($r(k,o,z),C),B=t.evaluateSizeForZoom(M,m.zoom),R=void 0,F=[0,0],O=void 0,U=void 0,V=null,N=void 0;if(o)O=A.glyphAtlasTexture,U=d.LINEAR,R=A.glyphAtlasTexture.size,z.iconsInText&&(F=A.imageAtlasTexture.size,V=A.imageAtlasTexture,N=D||e.options.rotating||e.options.zooming||"composite"===M.kind||"camera"===M.kind?d.LINEAR:d.NEAREST);else{var j=1!==i.layout.get("icon-size").constantOr(0)||z.iconsNeedLinear;O=A.imageAtlasTexture,U=k||e.options.rotating||e.options.zooming||j||D?d.LINEAR:d.NEAREST,R=A.imageAtlasTexture.size}var q=he(A,1,e.transform.zoom),Z=Yt(E.posMatrix,g,y,e.transform,q),G=Qt(E.posMatrix,g,y,e.transform,q),X=w&&z.hasTextData(),W="none"!==i.layout.get("icon-text-fit")&&X&&z.hasIconData();_&&re(z,E.posMatrix,e,o,Z,G,g,c);var K=e.translatePosMatrix(E.posMatrix,A,a,s),H=_||o&&w||W?Jr:Z,J=e.translatePosMatrix(G,A,a,s,!0),Y=k&&0!==i.paint.get(o?"text-halo-width":"icon-halo-width").constantOr(1),Q={program:L,buffers:P,uniformValues:k?z.iconsInText?Gr(M.kind,B,v,g,e,K,H,J,R,F):Zr(M.kind,B,v,g,e,K,H,J,o,R,!0):qr(M.kind,B,v,g,e,K,H,J,o,R),atlasTexture:O,atlasTextureIcon:V,atlasInterpolation:U,atlasInterpolationIcon:N,isSDF:k,hasHalo:Y};if(x)for(var $=0,tt=P.segments.get();$<tt.length;$+=1){var et=tt[$];S.push({segments:new t.SegmentVector([et]),sortKey:et.sortKey,state:Q})}else S.push({segments:P.segments,sortKey:0,state:Q})}}}x&&S.sort(function(t,e){return t.sortKey-e.sortKey});for(var rt=0,it=S;rt<it.length;rt+=1){var nt=it[rt],ot=nt.state;if(f.activeTexture.set(d.TEXTURE0),ot.atlasTexture.bind(ot.atlasInterpolation,d.CLAMP_TO_EDGE),ot.atlasTextureIcon&&(f.activeTexture.set(d.TEXTURE1),ot.atlasTextureIcon&&ot.atlasTextureIcon.bind(ot.atlasInterpolationIcon,d.CLAMP_TO_EDGE)),ot.isSDF){var at=ot.uniformValues;ot.hasHalo&&(at.u_is_halo=1,ei(ot.buffers,nt.segments,i,e,ot.program,b,p,h,at)),at.u_is_halo=0}ei(ot.buffers,nt.segments,i,e,ot.program,b,p,h,ot.uniformValues)}}function ei(t,e,r,i,n,o,a,s,l){var u=i.context;n.draw(u,u.gl.TRIANGLES,o,a,s,zt.disabled,l,r.id,t.layoutVertexBuffer,t.indexBuffer,e,r.paint,i.transform.zoom,t.programConfigurations.get(r.id),t.dynamicLayoutVertexBuffer,t.opacityVertexBuffer)}function ri(t,e,r,i,n,o,a){var s,l,u,c,p,h=t.context.gl,f=r.paint.get("fill-pattern"),d=f&&f.constantOr(1),m=r.getCrossfadeParameters();a?(l=d&&!r.getPaintProperty("fill-outline-color")?"fillOutlinePattern":"fillOutline",s=h.LINES):(l=d?"fillPattern":"fill",s=h.TRIANGLES);for(var y=0,g=i;y<g.length;y+=1){var _=g[y],v=e.getTile(_);if(!d||v.patternsLoaded()){var x=v.getBucket(r);if(x){var b=x.programConfigurations.get(r.id),w=t.useProgram(l,b);d&&(t.context.activeTexture.set(h.TEXTURE0),v.imageAtlasTexture.bind(h.LINEAR,h.CLAMP_TO_EDGE),b.updatePaintBuffers(m));var S=f.constantOr(null);if(S&&v.imageAtlas){var T=v.imageAtlas,I=T.patternPositions[S.to.toString()],E=T.patternPositions[S.from.toString()];I&&E&&b.setConstantPatternPositions(I,E)}var A=t.translatePosMatrix(_.posMatrix,v,r.paint.get("fill-translate"),r.paint.get("fill-translate-anchor"));if(a){c=x.indexBuffer2,p=x.segments2;var z=[h.drawingBufferWidth,h.drawingBufferHeight];u="fillOutlinePattern"===l&&d?Ar(A,t,m,v,z):Er(A,z)}else c=x.indexBuffer,p=x.segments,u=d?Ir(A,t,m,v):Tr(A);w.draw(t.context,s,n,t.stencilModeForClipping(_),o,zt.disabled,u,r.id,x.layoutVertexBuffer,c,p,r.paint,t.transform.zoom,b)}}}}function ii(t,e,r,i,n,o,a){for(var s=t.context,l=s.gl,u=r.paint.get("fill-extrusion-pattern"),c=u.constantOr(1),p=r.getCrossfadeParameters(),h=r.paint.get("fill-extrusion-opacity"),f=0,d=i;f<d.length;f+=1){var m=d[f],y=e.getTile(m),g=y.getBucket(r);if(g){var _=g.programConfigurations.get(r.id),v=t.useProgram(c?"fillExtrusionPattern":"fillExtrusion",_);c&&(t.context.activeTexture.set(l.TEXTURE0),y.imageAtlasTexture.bind(l.LINEAR,l.CLAMP_TO_EDGE),_.updatePaintBuffers(p));var x=u.constantOr(null);if(x&&y.imageAtlas){var b=y.imageAtlas,w=b.patternPositions[x.to.toString()],S=b.patternPositions[x.from.toString()];w&&S&&_.setConstantPatternPositions(w,S)}var T=t.translatePosMatrix(m.posMatrix,y,r.paint.get("fill-extrusion-translate"),r.paint.get("fill-extrusion-translate-anchor")),I=r.paint.get("fill-extrusion-vertical-gradient"),E=c?Sr(T,t,I,h,m,p,y):wr(T,t,I,h);v.draw(s,s.gl.TRIANGLES,n,o,a,zt.backCCW,E,r.id,g.layoutVertexBuffer,g.indexBuffer,g.segments,r.paint,t.transform.zoom,_)}}}function ni(e,r,i,n,o,a){var s=e.context,l=s.gl,u=r.fbo;if(u){var c=e.useProgram("hillshade");s.activeTexture.set(l.TEXTURE0),l.bindTexture(l.TEXTURE_2D,u.colorAttachment.get());var p=function(e,r,i){var n=i.paint.get("hillshade-shadow-color"),o=i.paint.get("hillshade-highlight-color"),a=i.paint.get("hillshade-accent-color"),s=i.paint.get("hillshade-illumination-direction")*(Math.PI/180);"viewport"===i.paint.get("hillshade-illumination-anchor")&&(s-=e.transform.angle);var l,u,c,p=!e.options.moving;return{u_matrix:e.transform.calculatePosMatrix(r.tileID.toUnwrapped(),p),u_image:0,u_latrange:(l=r.tileID,u=Math.pow(2,l.canonical.z),c=l.canonical.y,[new t.MercatorCoordinate(0,c/u).toLngLat().lat,new t.MercatorCoordinate(0,(c+1)/u).toLngLat().lat]),u_light:[i.paint.get("hillshade-exaggeration"),s],u_shadow:n,u_highlight:o,u_accent:a}}(e,r,i);c.draw(s,l.TRIANGLES,n,o,a,zt.disabled,p,i.id,e.rasterBoundsBuffer,e.quadTriangleIndexBuffer,e.rasterBoundsSegments)}}function oi(e,r,i,n,o,a,s){var l=e.context,u=l.gl,c=r.dem;if(c&&c.data){var p=c.dim,h=c.stride,f=c.getPixels();if(l.activeTexture.set(u.TEXTURE1),l.pixelStoreUnpackPremultiplyAlpha.set(!1),r.demTexture=r.demTexture||e.getTileTexture(h),r.demTexture){var d=r.demTexture;d.update(f,{premultiply:!1}),d.bind(u.NEAREST,u.CLAMP_TO_EDGE)}else r.demTexture=new t.Texture(l,f,u.RGBA,{premultiply:!1}),r.demTexture.bind(u.NEAREST,u.CLAMP_TO_EDGE);l.activeTexture.set(u.TEXTURE0);var m=r.fbo;if(!m){var y=new t.Texture(l,{width:p,height:p,data:null},u.RGBA);y.bind(u.LINEAR,u.CLAMP_TO_EDGE),(m=r.fbo=l.createFramebuffer(p,p,!0)).colorAttachment.set(y.texture)}l.bindFramebuffer.set(m.framebuffer),l.viewport.set([0,0,p,p]),e.useProgram("hillshadePrepare").draw(l,u.TRIANGLES,o,a,s,zt.disabled,function(e,r,i){var n=r.stride,o=t.create();return t.ortho(o,0,t.EXTENT,-t.EXTENT,0,0,1),t.translate(o,o,[0,-t.EXTENT,0]),{u_matrix:o,u_image:1,u_dimension:[n,n],u_zoom:e.overscaledZ,u_maxzoom:i,u_unpack:r.getUnpackVector()}}(r.tileID,c,n),i.id,e.rasterBoundsBuffer,e.quadTriangleIndexBuffer,e.rasterBoundsSegments),r.needsHillshadePrepare=!1}}function ai(e,r,i,n,o){var a=n.paint.get("raster-fade-duration");if(a>0){var s=t.browser.now(),l=(s-e.timeAdded)/a,u=r?(s-r.timeAdded)/a:-1,c=i.getSource(),p=o.coveringZoomLevel({tileSize:c.tileSize,roundZoom:c.roundZoom}),h=!r||Math.abs(r.tileID.overscaledZ-p)>Math.abs(e.tileID.overscaledZ-p),f=h&&e.refreshedUponExpiration?1:t.clamp(h?l:1-u,0,1);return e.refreshedUponExpiration&&l>=1&&(e.refreshedUponExpiration=!1),r?{opacity:1,mix:1-f}:{opacity:f,mix:0}}return{opacity:1,mix:0}}var si=new t.Color(1,0,0,1),li=new t.Color(0,1,0,1),ui=new t.Color(0,0,1,1),ci=new t.Color(1,0,1,1),pi=new t.Color(0,1,1,1);function hi(t,e,r,i){di(t,0,e+r/2,t.transform.width,r,i)}function fi(t,e,r,i){di(t,e-r/2,0,r,t.transform.height,i)}function di(e,r,i,n,o,a){var s=e.context,l=s.gl;l.enable(l.SCISSOR_TEST),l.scissor(r*t.browser.devicePixelRatio,i*t.browser.devicePixelRatio,n*t.browser.devicePixelRatio,o*t.browser.devicePixelRatio),s.clear({color:a}),l.disable(l.SCISSOR_TEST)}function mi(e,r,i){var n=e.context,o=n.gl,a=i.posMatrix,s=e.useProgram("debug"),l=It.disabled,u=Et.disabled,c=e.colorModeForRenderPass();n.activeTexture.set(o.TEXTURE0),e.emptyTexture.bind(o.LINEAR,o.CLAMP_TO_EDGE),s.draw(n,o.LINE_STRIP,l,u,c,zt.disabled,kr(a,t.Color.red),"$debug",e.debugBuffer,e.tileBorderIndexBuffer,e.debugSegments);var p=r.getTileByID(i.key).latestRawTileData,h=Math.floor((p&&p.byteLength||0)/1024),f=r.getTile(i).tileSize,d=512/Math.min(f,512)*(i.overscaledZ/e.transform.zoom)*.5,m=i.canonical.toString();i.overscaledZ!==i.canonical.z&&(m+=" => "+i.overscaledZ),function(t,e){t.initDebugOverlayCanvas();var r=t.debugOverlayCanvas,i=t.context.gl,n=t.debugOverlayCanvas.getContext("2d");n.clearRect(0,0,r.width,r.height),n.shadowColor="white",n.shadowBlur=2,n.lineWidth=1.5,n.strokeStyle="white",n.textBaseline="top",n.font="bold 36px Open Sans, sans-serif",n.fillText(e,5,5),n.strokeText(e,5,5),t.debugOverlayTexture.update(r),t.debugOverlayTexture.bind(i.LINEAR,i.CLAMP_TO_EDGE)}(e,m+" "+h+"kb"),s.draw(n,o.TRIANGLES,l,u,At.alphaBlended,zt.disabled,kr(a,t.Color.transparent,d),"$debug",e.debugBuffer,e.quadTriangleIndexBuffer,e.debugSegments)}var yi={symbol:function(e,r,i,n,o){if("translucent"===e.renderPass){var a=Et.disabled,s=e.colorModeForRenderPass();i.layout.get("text-variable-anchor")&&function(e,r,i,n,o,a,s){for(var l=r.transform,u="map"===o,c="map"===a,p=0,h=e;p<h.length;p+=1){var f=h[p],d=n.getTile(f),m=d.getBucket(i);if(m&&m.text&&m.text.segments.get().length){var y=t.evaluateSizeForZoom(m.textSizeData,l.zoom),g=he(d,1,r.transform.zoom),_=Yt(f.posMatrix,c,u,r.transform,g),v="none"!==i.layout.get("icon-text-fit")&&m.hasIconData();if(y){var x=Math.pow(2,l.zoom-d.tileID.overscaledZ);Qr(m,u,c,s,t.symbolSize,l,_,f.posMatrix,x,y,v)}}}}(n,e,i,r,i.layout.get("text-rotation-alignment"),i.layout.get("text-pitch-alignment"),o),0!==i.paint.get("icon-opacity").constantOr(1)&&ti(e,r,i,n,!1,i.paint.get("icon-translate"),i.paint.get("icon-translate-anchor"),i.layout.get("icon-rotation-alignment"),i.layout.get("icon-pitch-alignment"),i.layout.get("icon-keep-upright"),a,s),0!==i.paint.get("text-opacity").constantOr(1)&&ti(e,r,i,n,!0,i.paint.get("text-translate"),i.paint.get("text-translate-anchor"),i.layout.get("text-rotation-alignment"),i.layout.get("text-pitch-alignment"),i.layout.get("text-keep-upright"),a,s),r.map.showCollisionBoxes&&(Hr(e,r,i,n,i.paint.get("text-translate"),i.paint.get("text-translate-anchor"),!0),Hr(e,r,i,n,i.paint.get("icon-translate"),i.paint.get("icon-translate-anchor"),!1))}},circle:function(e,r,i,n){if("translucent"===e.renderPass){var o=i.paint.get("circle-opacity"),a=i.paint.get("circle-stroke-width"),s=i.paint.get("circle-stroke-opacity"),l=void 0!==i.layout.get("circle-sort-key").constantOr(1);if(0!==o.constantOr(1)||0!==a.constantOr(1)&&0!==s.constantOr(1)){for(var u=e.context,c=u.gl,p=e.depthModeForSublayer(0,It.ReadOnly),h=Et.disabled,f=e.colorModeForRenderPass(),d=[],m=0;m<n.length;m++){var y=n[m],g=r.getTile(y),_=g.getBucket(i);if(_){var v=_.programConfigurations.get(i.id),x={programConfiguration:v,program:e.useProgram("circle",v),layoutVertexBuffer:_.layoutVertexBuffer,indexBuffer:_.indexBuffer,uniformValues:zr(e,y,g,i)};if(l)for(var b=0,w=_.segments.get();b<w.length;b+=1){var S=w[b];d.push({segments:new t.SegmentVector([S]),sortKey:S.sortKey,state:x})}else d.push({segments:_.segments,sortKey:0,state:x})}}l&&d.sort(function(t,e){return t.sortKey-e.sortKey});for(var T=0,I=d;T<I.length;T+=1){var E=I[T],A=E.state;A.program.draw(u,c.TRIANGLES,p,h,f,zt.disabled,A.uniformValues,i.id,A.layoutVertexBuffer,A.indexBuffer,E.segments,i.paint,e.transform.zoom,A.programConfiguration)}}}},heatmap:function(e,r,i,n){if(0!==i.paint.get("heatmap-opacity"))if("offscreen"===e.renderPass){var o=e.context,a=o.gl,s=Et.disabled,l=new At([a.ONE,a.ONE],t.Color.transparent,[!0,!0,!0,!0]);!function(t,e,r){var i=t.gl;t.activeTexture.set(i.TEXTURE1),t.viewport.set([0,0,e.width/4,e.height/4]);var n=r.heatmapFbo;if(n)i.bindTexture(i.TEXTURE_2D,n.colorAttachment.get()),t.bindFramebuffer.set(n.framebuffer);else{var o=i.createTexture();i.bindTexture(i.TEXTURE_2D,o),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_S,i.CLAMP_TO_EDGE),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_T,i.CLAMP_TO_EDGE),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MIN_FILTER,i.LINEAR),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MAG_FILTER,i.LINEAR),n=r.heatmapFbo=t.createFramebuffer(e.width/4,e.height/4,!1),function(t,e,r,i){var n=t.gl;n.texImage2D(n.TEXTURE_2D,0,n.RGBA,e.width/4,e.height/4,0,n.RGBA,t.extRenderToTextureHalfFloat?t.extTextureHalfFloat.HALF_FLOAT_OES:n.UNSIGNED_BYTE,null),i.colorAttachment.set(r)}(t,e,o,n)}}(o,e,i),o.clear({color:t.Color.transparent});for(var u=0;u<n.length;u++){var c=n[u];if(!r.hasRenderableParent(c)){var p=r.getTile(c),h=p.getBucket(i);if(h){var f=h.programConfigurations.get(i.id);e.useProgram("heatmap",f).draw(o,a.TRIANGLES,It.disabled,s,l,zt.disabled,Dr(c.posMatrix,p,e.transform.zoom,i.paint.get("heatmap-intensity")),i.id,h.layoutVertexBuffer,h.indexBuffer,h.segments,i.paint,e.transform.zoom,f)}}}o.viewport.set([0,0,e.width,e.height])}else"translucent"===e.renderPass&&(e.context.setColorMode(e.colorModeForRenderPass()),function(e,r){var i=e.context,n=i.gl,o=r.heatmapFbo;if(o){i.activeTexture.set(n.TEXTURE0),n.bindTexture(n.TEXTURE_2D,o.colorAttachment.get()),i.activeTexture.set(n.TEXTURE1);var a=r.colorRampTexture;a||(a=r.colorRampTexture=new t.Texture(i,r.colorRamp,n.RGBA)),a.bind(n.LINEAR,n.CLAMP_TO_EDGE),e.useProgram("heatmapTexture").draw(i,n.TRIANGLES,It.disabled,Et.disabled,e.colorModeForRenderPass(),zt.disabled,function(e,r,i,n){var o=t.create();t.ortho(o,0,e.width,e.height,0,0,1);var a=e.context.gl;return{u_matrix:o,u_world:[a.drawingBufferWidth,a.drawingBufferHeight],u_image:0,u_color_ramp:1,u_opacity:r.paint.get("heatmap-opacity")}}(e,r),r.id,e.viewportBuffer,e.quadTriangleIndexBuffer,e.viewportSegments,r.paint,e.transform.zoom)}}(e,i))},line:function(e,r,i,n){if("translucent"===e.renderPass){var o=i.paint.get("line-opacity"),a=i.paint.get("line-width");if(0!==o.constantOr(1)&&0!==a.constantOr(1)){var s=e.depthModeForSublayer(0,It.ReadOnly),l=e.colorModeForRenderPass(),u=i.paint.get("line-dasharray"),c=i.paint.get("line-pattern"),p=c.constantOr(1),h=i.paint.get("line-gradient"),f=i.getCrossfadeParameters(),d=p?"linePattern":u?"lineSDF":h?"lineGradient":"line",m=e.context,y=m.gl,g=!0;if(h){m.activeTexture.set(y.TEXTURE0);var _=i.gradientTexture;if(!i.gradient)return;_||(_=i.gradientTexture=new t.Texture(m,i.gradient,y.RGBA)),_.bind(y.LINEAR,y.CLAMP_TO_EDGE)}for(var v=0,x=n;v<x.length;v+=1){var b=x[v],w=r.getTile(b);if(!p||w.patternsLoaded()){var S=w.getBucket(i);if(S){var T=S.programConfigurations.get(i.id),I=e.context.program.get(),E=e.useProgram(d,T),A=g||E.program!==I,z=c.constantOr(null);if(z&&w.imageAtlas){var P=w.imageAtlas,C=P.patternPositions[z.to.toString()],k=P.patternPositions[z.from.toString()];C&&k&&T.setConstantPatternPositions(C,k)}var M=p?Rr(e,w,i,f):u?Fr(e,w,i,u,f):h?Br(e,w,i):Lr(e,w,i);p?(m.activeTexture.set(y.TEXTURE0),w.imageAtlasTexture.bind(y.LINEAR,y.CLAMP_TO_EDGE),T.updatePaintBuffers(f)):u&&(A||e.lineAtlas.dirty)&&(m.activeTexture.set(y.TEXTURE0),e.lineAtlas.bind(m)),E.draw(m,y.TRIANGLES,s,e.stencilModeForClipping(b),l,zt.disabled,M,i.id,S.layoutVertexBuffer,S.indexBuffer,S.segments,i.paint,e.transform.zoom,T),g=!1}}}}}},fill:function(e,r,i,n){var o=i.paint.get("fill-color"),a=i.paint.get("fill-opacity");if(0!==a.constantOr(1)){var s=e.colorModeForRenderPass(),l=i.paint.get("fill-pattern"),u=e.opaquePassEnabledForLayer()&&!l.constantOr(1)&&1===o.constantOr(t.Color.transparent).a&&1===a.constantOr(0)?"opaque":"translucent";if(e.renderPass===u){var c=e.depthModeForSublayer(1,"opaque"===e.renderPass?It.ReadWrite:It.ReadOnly);ri(e,r,i,n,c,s,!1)}if("translucent"===e.renderPass&&i.paint.get("fill-antialias")){var p=e.depthModeForSublayer(i.getPaintProperty("fill-outline-color")?2:0,It.ReadOnly);ri(e,r,i,n,p,s,!0)}}},"fill-extrusion":function(t,e,r,i){var n=r.paint.get("fill-extrusion-opacity");if(0!==n&&"translucent"===t.renderPass){var o=new It(t.context.gl.LEQUAL,It.ReadWrite,t.depthRangeFor3D);if(1!==n||r.paint.get("fill-extrusion-pattern").constantOr(1))ii(t,e,r,i,o,Et.disabled,At.disabled),ii(t,e,r,i,o,t.stencilModeFor3D(),t.colorModeForRenderPass());else{var a=t.colorModeForRenderPass();ii(t,e,r,i,o,Et.disabled,a)}}},hillshade:function(t,e,r,i){if("offscreen"===t.renderPass||"translucent"===t.renderPass){for(var n=t.context,o=e.getSource().maxzoom,a=t.depthModeForSublayer(0,It.ReadOnly),s=t.colorModeForRenderPass(),l="translucent"===t.renderPass?t.stencilConfigForOverlap(i):[{},i],u=l[0],c=0,p=l[1];c<p.length;c+=1){var h=p[c],f=e.getTile(h);f.needsHillshadePrepare&&"offscreen"===t.renderPass?oi(t,f,r,o,a,Et.disabled,s):"translucent"===t.renderPass&&ni(t,f,r,a,u[h.overscaledZ],s)}n.viewport.set([0,0,t.width,t.height])}},raster:function(t,e,r,i){if("translucent"===t.renderPass&&0!==r.paint.get("raster-opacity")&&i.length)for(var n=t.context,o=n.gl,a=e.getSource(),s=t.useProgram("raster"),l=t.colorModeForRenderPass(),u=a instanceof M?[{},i]:t.stencilConfigForOverlap(i),c=u[0],p=u[1],h=p[p.length-1].overscaledZ,f=!t.options.moving,d=0,m=p;d<m.length;d+=1){var y=m[d],g=t.depthModeForSublayer(y.overscaledZ-h,1===r.paint.get("raster-opacity")?It.ReadWrite:It.ReadOnly,o.LESS),_=e.getTile(y),v=t.transform.calculatePosMatrix(y.toUnwrapped(),f);_.registerFadeDuration(r.paint.get("raster-fade-duration"));var x=e.findLoadedParent(y,0),b=ai(_,x,e,r,t.transform),w=void 0,S=void 0,T="nearest"===r.paint.get("raster-resampling")?o.NEAREST:o.LINEAR;n.activeTexture.set(o.TEXTURE0),_.texture.bind(T,o.CLAMP_TO_EDGE,o.LINEAR_MIPMAP_NEAREST),n.activeTexture.set(o.TEXTURE1),x?(x.texture.bind(T,o.CLAMP_TO_EDGE,o.LINEAR_MIPMAP_NEAREST),w=Math.pow(2,x.tileID.overscaledZ-_.tileID.overscaledZ),S=[_.tileID.canonical.x*w%1,_.tileID.canonical.y*w%1]):_.texture.bind(T,o.CLAMP_TO_EDGE,o.LINEAR_MIPMAP_NEAREST);var I=Vr(v,S||[0,0],w||1,b,r);a instanceof M?s.draw(n,o.TRIANGLES,g,Et.disabled,l,zt.disabled,I,r.id,a.boundsBuffer,t.quadTriangleIndexBuffer,a.boundsSegments):s.draw(n,o.TRIANGLES,g,c[y.overscaledZ],l,zt.disabled,I,r.id,t.rasterBoundsBuffer,t.quadTriangleIndexBuffer,t.rasterBoundsSegments)}},background:function(t,e,r){var i=r.paint.get("background-color"),n=r.paint.get("background-opacity");if(0!==n){var o=t.context,a=o.gl,s=t.transform,l=s.tileSize,u=r.paint.get("background-pattern");if(!t.isPatternMissing(u)){var c=!u&&1===i.a&&1===n&&t.opaquePassEnabledForLayer()?"opaque":"translucent";if(t.renderPass===c){var p=Et.disabled,h=t.depthModeForSublayer(0,"opaque"===c?It.ReadWrite:It.ReadOnly),f=t.colorModeForRenderPass(),d=t.useProgram(u?"backgroundPattern":"background"),m=s.coveringTiles({tileSize:l});u&&(o.activeTexture.set(a.TEXTURE0),t.imageManager.bind(t.context));for(var y=r.getCrossfadeParameters(),g=0,_=m;g<_.length;g+=1){var v=_[g],x=t.transform.calculatePosMatrix(v.toUnwrapped()),b=u?Wr(x,n,t,u,{tileID:v,tileSize:l},y):Xr(x,n,i);d.draw(o,a.TRIANGLES,h,p,f,zt.disabled,b,r.id,t.tileExtentBuffer,t.quadTriangleIndexBuffer,t.tileExtentSegments)}}}}},debug:function(t,e,r){for(var i=0;i<r.length;i++)mi(t,e,r[i])},custom:function(t,e,r){var i=t.context,n=r.implementation;if("offscreen"===t.renderPass){var o=n.prerender;o&&(t.setCustomLayerDefaults(),i.setColorMode(t.colorModeForRenderPass()),o.call(n,i.gl,t.transform.customLayerMatrix()),i.setDirty(),t.setBaseState())}else if("translucent"===t.renderPass){t.setCustomLayerDefaults(),i.setColorMode(t.colorModeForRenderPass()),i.setStencilMode(Et.disabled);var a="3d"===n.renderingMode?new It(t.context.gl.LEQUAL,It.ReadWrite,t.depthRangeFor3D):t.depthModeForSublayer(0,It.ReadOnly);i.setDepthMode(a),n.render(i.gl,t.transform.customLayerMatrix()),i.setDirty(),t.setBaseState(),i.bindFramebuffer.set(null)}}},gi=function(t,e){this.context=new Pt(t),this.transform=e,this._tileTextures={},this.setup(),this.numSublayers=Ct.maxUnderzooming+Ct.maxOverzooming+1,this.depthEpsilon=1/Math.pow(2,16),this.crossTileSymbolIndex=new Oe,this.gpuTimers={}};gi.prototype.resize=function(e,r){if(this.width=e*t.browser.devicePixelRatio,this.height=r*t.browser.devicePixelRatio,this.context.viewport.set([0,0,this.width,this.height]),this.style)for(var i=0,n=this.style._order;i<n.length;i+=1)this.style._layers[n[i]].resize()},gi.prototype.setup=function(){var e=this.context,r=new t.StructArrayLayout2i4;r.emplaceBack(0,0),r.emplaceBack(t.EXTENT,0),r.emplaceBack(0,t.EXTENT),r.emplaceBack(t.EXTENT,t.EXTENT),this.tileExtentBuffer=e.createVertexBuffer(r,Ze.members),this.tileExtentSegments=t.SegmentVector.simpleSegment(0,0,4,2);var i=new t.StructArrayLayout2i4;i.emplaceBack(0,0),i.emplaceBack(t.EXTENT,0),i.emplaceBack(0,t.EXTENT),i.emplaceBack(t.EXTENT,t.EXTENT),this.debugBuffer=e.createVertexBuffer(i,Ze.members),this.debugSegments=t.SegmentVector.simpleSegment(0,0,4,5);var n=new t.StructArrayLayout4i8;n.emplaceBack(0,0,0,0),n.emplaceBack(t.EXTENT,0,t.EXTENT,0),n.emplaceBack(0,t.EXTENT,0,t.EXTENT),n.emplaceBack(t.EXTENT,t.EXTENT,t.EXTENT,t.EXTENT),this.rasterBoundsBuffer=e.createVertexBuffer(n,k.members),this.rasterBoundsSegments=t.SegmentVector.simpleSegment(0,0,4,2);var o=new t.StructArrayLayout2i4;o.emplaceBack(0,0),o.emplaceBack(1,0),o.emplaceBack(0,1),o.emplaceBack(1,1),this.viewportBuffer=e.createVertexBuffer(o,Ze.members),this.viewportSegments=t.SegmentVector.simpleSegment(0,0,4,2);var a=new t.StructArrayLayout1ui2;a.emplaceBack(0),a.emplaceBack(1),a.emplaceBack(3),a.emplaceBack(2),a.emplaceBack(0),this.tileBorderIndexBuffer=e.createIndexBuffer(a);var s=new t.StructArrayLayout3ui6;s.emplaceBack(0,1,2),s.emplaceBack(2,1,3),this.quadTriangleIndexBuffer=e.createIndexBuffer(s),this.emptyTexture=new t.Texture(e,{width:1,height:1,data:new Uint8Array([0,0,0,0])},e.gl.RGBA);var l=this.context.gl;this.stencilClearMode=new Et({func:l.ALWAYS,mask:0},0,255,l.ZERO,l.ZERO,l.ZERO)},gi.prototype.clearStencil=function(){var e=this.context,r=e.gl;this.nextStencilID=1,this.currentStencilSource=void 0;var i=t.create();t.ortho(i,0,this.width,this.height,0,0,1),t.scale(i,i,[r.drawingBufferWidth,r.drawingBufferHeight,0]),this.useProgram("clippingMask").draw(e,r.TRIANGLES,It.disabled,this.stencilClearMode,At.disabled,zt.disabled,Mr(i),"$clipping",this.viewportBuffer,this.quadTriangleIndexBuffer,this.viewportSegments)},gi.prototype._renderTileClippingMasks=function(t,e){if(this.currentStencilSource!==t.source&&t.isTileClipped()&&e&&e.length){this.currentStencilSource=t.source;var r=this.context,i=r.gl;this.nextStencilID+e.length>256&&this.clearStencil(),r.setColorMode(At.disabled),r.setDepthMode(It.disabled);var n=this.useProgram("clippingMask");this._tileClippingMaskIDs={};for(var o=0,a=e;o<a.length;o+=1){var s=a[o],l=this._tileClippingMaskIDs[s.key]=this.nextStencilID++;n.draw(r,i.TRIANGLES,It.disabled,new Et({func:i.ALWAYS,mask:0},l,255,i.KEEP,i.KEEP,i.REPLACE),At.disabled,zt.disabled,Mr(s.posMatrix),"$clipping",this.tileExtentBuffer,this.quadTriangleIndexBuffer,this.tileExtentSegments)}}},gi.prototype.stencilModeFor3D=function(){this.currentStencilSource=void 0,this.nextStencilID+1>256&&this.clearStencil();var t=this.nextStencilID++,e=this.context.gl;return new Et({func:e.NOTEQUAL,mask:255},t,255,e.KEEP,e.KEEP,e.REPLACE)},gi.prototype.stencilModeForClipping=function(t){var e=this.context.gl;return new Et({func:e.EQUAL,mask:255},this._tileClippingMaskIDs[t.key],0,e.KEEP,e.KEEP,e.REPLACE)},gi.prototype.stencilConfigForOverlap=function(t){var e,r=this.context.gl,i=t.sort(function(t,e){return e.overscaledZ-t.overscaledZ}),n=i[i.length-1].overscaledZ,o=i[0].overscaledZ-n+1;if(o>1){this.currentStencilSource=void 0,this.nextStencilID+o>256&&this.clearStencil();for(var a={},s=0;s<o;s++)a[s+n]=new Et({func:r.GEQUAL,mask:255},s+this.nextStencilID,255,r.KEEP,r.KEEP,r.REPLACE);return this.nextStencilID+=o,[a,i]}return[(e={},e[n]=Et.disabled,e),i]},gi.prototype.colorModeForRenderPass=function(){var e=this.context.gl;return this._showOverdrawInspector?new At([e.CONSTANT_COLOR,e.ONE],new t.Color(1/8,1/8,1/8,0),[!0,!0,!0,!0]):"opaque"===this.renderPass?At.unblended:At.alphaBlended},gi.prototype.depthModeForSublayer=function(t,e,r){if(!this.opaquePassEnabledForLayer())return It.disabled;var i=1-((1+this.currentLayer)*this.numSublayers+t)*this.depthEpsilon;return new It(r||this.context.gl.LEQUAL,e,[i,i])},gi.prototype.opaquePassEnabledForLayer=function(){return this.currentLayer<this.opaquePassCutoff},gi.prototype.render=function(e,r){var i=this;this.style=e,this.options=r,this.lineAtlas=e.lineAtlas,this.imageManager=e.imageManager,this.glyphManager=e.glyphManager,this.symbolFadeChange=e.placement.symbolFadeChange(t.browser.now()),this.imageManager.beginFrame();var n=this.style._order,o=this.style.sourceCaches;for(var a in o){var s=o[a];s.used&&s.prepare(this.context)}var l,u,c={},p={},h={};for(var f in o){var d=o[f];c[f]=d.getVisibleCoordinates(),p[f]=c[f].slice().reverse(),h[f]=d.getVisibleCoordinates(!0).reverse()}this.opaquePassCutoff=1/0;for(var m=0;m<n.length;m++)if(this.style._layers[n[m]].is3D()){this.opaquePassCutoff=m;break}this.renderPass="offscreen";for(var y=0,g=n;y<g.length;y+=1){var _=this.style._layers[g[y]];if(_.hasOffscreenPass()&&!_.isHidden(this.transform.zoom)){var v=p[_.source];("custom"===_.type||v.length)&&this.renderLayer(this,o[_.source],_,v)}}for(this.context.bindFramebuffer.set(null),this.context.clear({color:r.showOverdrawInspector?t.Color.black:t.Color.transparent,depth:1}),this.clearStencil(),this._showOverdrawInspector=r.showOverdrawInspector,this.depthRangeFor3D=[0,1-(e._order.length+2)*this.numSublayers*this.depthEpsilon],this.renderPass="opaque",this.currentLayer=n.length-1;this.currentLayer>=0;this.currentLayer--){var x=this.style._layers[n[this.currentLayer]],b=o[x.source],w=c[x.source];this._renderTileClippingMasks(x,w),this.renderLayer(this,b,x,w)}for(this.renderPass="translucent",this.currentLayer=0;this.currentLayer<n.length;this.currentLayer++){var S=this.style._layers[n[this.currentLayer]],T=o[S.source],I=("symbol"===S.type?h:p)[S.source];this._renderTileClippingMasks(S,c[S.source]),this.renderLayer(this,T,S,I)}this.options.showTileBoundaries&&(t.values(this.style._layers).forEach(function(t){t.source&&!t.isHidden(i.transform.zoom)&&(t.source!==(u&&u.id)&&(u=i.style.sourceCaches[t.source]),(!l||l.getSource().maxzoom<u.getSource().maxzoom)&&(l=u))}),l&&yi.debug(this,l,l.getVisibleCoordinates())),this.options.showPadding&&function(t){var e=t.transform.padding;hi(t,t.transform.height-(e.top||0),3,si),hi(t,e.bottom||0,3,li),fi(t,e.left||0,3,ui),fi(t,t.transform.width-(e.right||0),3,ci);var r=t.transform.centerPoint;!function(t,e,r,i){di(t,e-1,r-10,2,20,i),di(t,e-10,r-1,20,2,i)}(t,r.x,t.transform.height-r.y,pi)}(this),this.context.setDefault()},gi.prototype.renderLayer=function(t,e,r,i){r.isHidden(this.transform.zoom)||("background"===r.type||"custom"===r.type||i.length)&&(this.id=r.id,this.gpuTimingStart(r),yi[r.type](t,e,r,i,this.style.placement.variableOffsets),this.gpuTimingEnd())},gi.prototype.gpuTimingStart=function(t){if(this.options.gpuTiming){var e=this.context.extTimerQuery,r=this.gpuTimers[t.id];r||(r=this.gpuTimers[t.id]={calls:0,cpuTime:0,query:e.createQueryEXT()}),r.calls++,e.beginQueryEXT(e.TIME_ELAPSED_EXT,r.query)}},gi.prototype.gpuTimingEnd=function(){if(this.options.gpuTiming){var t=this.context.extTimerQuery;t.endQueryEXT(t.TIME_ELAPSED_EXT)}},gi.prototype.collectGpuTimers=function(){var t=this.gpuTimers;return this.gpuTimers={},t},gi.prototype.queryGpuTimers=function(t){var e={};for(var r in t){var i=t[r],n=this.context.extTimerQuery,o=n.getQueryObjectEXT(i.query,n.QUERY_RESULT_EXT)/1e6;n.deleteQueryEXT(i.query),e[r]=o}return e},gi.prototype.translatePosMatrix=function(e,r,i,n,o){if(!i[0]&&!i[1])return e;var a=o?"map"===n?this.transform.angle:0:"viewport"===n?-this.transform.angle:0;if(a){var s=Math.sin(a),l=Math.cos(a);i=[i[0]*l-i[1]*s,i[0]*s+i[1]*l]}var u=[o?i[0]:he(r,i[0],this.transform.zoom),o?i[1]:he(r,i[1],this.transform.zoom),0],c=new Float32Array(16);return t.translate(c,e,u),c},gi.prototype.saveTileTexture=function(t){var e=this._tileTextures[t.size[0]];e?e.push(t):this._tileTextures[t.size[0]]=[t]},gi.prototype.getTileTexture=function(t){var e=this._tileTextures[t];return e&&e.length>0?e.pop():null},gi.prototype.isPatternMissing=function(t){if(!t)return!1;if(!t.from||!t.to)return!0;var e=this.imageManager.getPattern(t.from.toString()),r=this.imageManager.getPattern(t.to.toString());return!e||!r},gi.prototype.useProgram=function(t,e){this.cache=this.cache||{};var r=""+t+(e?e.cacheKey:"")+(this._showOverdrawInspector?"/overdraw":"");return this.cache[r]||(this.cache[r]=new xr(this.context,_r[t],e,Kr[t],this._showOverdrawInspector)),this.cache[r]},gi.prototype.setCustomLayerDefaults=function(){this.context.unbindVAO(),this.context.cullFace.setDefault(),this.context.activeTexture.setDefault(),this.context.pixelStoreUnpack.setDefault(),this.context.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.context.pixelStoreUnpackFlipY.setDefault()},gi.prototype.setBaseState=function(){var t=this.context.gl;this.context.cullFace.set(!1),this.context.viewport.set([0,0,this.width,this.height]),this.context.blendEquation.set(t.FUNC_ADD)},gi.prototype.initDebugOverlayCanvas=function(){null==this.debugOverlayCanvas&&(this.debugOverlayCanvas=t.window.document.createElement("canvas"),this.debugOverlayCanvas.width=512,this.debugOverlayCanvas.height=512,this.debugOverlayTexture=new t.Texture(this.context,this.debugOverlayCanvas,this.context.gl.RGBA))},gi.prototype.destroy=function(){this.emptyTexture.destroy(),this.debugOverlayTexture&&this.debugOverlayTexture.destroy()};var _i=function(t,e){this.points=t,this.planes=e};_i.fromInvProjectionMatrix=function(e,r,i){var n=Math.pow(2,i),o=[[-1,1,-1,1],[1,1,-1,1],[1,-1,-1,1],[-1,-1,-1,1],[-1,1,1,1],[1,1,1,1],[1,-1,1,1],[-1,-1,1,1]].map(function(r){return t.transformMat4([],r,e)}).map(function(e){return t.scale$1([],e,1/e[3]/r*n)}),a=[[0,1,2],[6,5,4],[0,3,7],[2,1,5],[3,2,6],[0,4,5]].map(function(e){var r=t.sub([],o[e[0]],o[e[1]]),i=t.sub([],o[e[2]],o[e[1]]),n=t.normalize([],t.cross([],r,i)),a=-t.dot(n,o[e[1]]);return n.concat(a)});return new _i(o,a)};var vi=function(e,r){this.min=e,this.max=r,this.center=t.scale$2([],t.add([],this.min,this.max),.5)};vi.prototype.quadrant=function(e){for(var r=[e%2==0,e<2],i=t.clone$2(this.min),n=t.clone$2(this.max),o=0;o<r.length;o++)i[o]=r[o]?this.min[o]:this.center[o],n[o]=r[o]?this.center[o]:this.max[o];return n[2]=this.max[2],new vi(i,n)},vi.prototype.distanceX=function(t){return Math.max(Math.min(this.max[0],t[0]),this.min[0])-t[0]},vi.prototype.distanceY=function(t){return Math.max(Math.min(this.max[1],t[1]),this.min[1])-t[1]},vi.prototype.intersects=function(e){for(var r=[[this.min[0],this.min[1],0,1],[this.max[0],this.min[1],0,1],[this.max[0],this.max[1],0,1],[this.min[0],this.max[1],0,1]],i=!0,n=0;n<e.planes.length;n++){for(var o=e.planes[n],a=0,s=0;s<r.length;s++)a+=t.dot$1(o,r[s])>=0;if(0===a)return 0;a!==r.length&&(i=!1)}if(i)return 2;for(var l=0;l<3;l++){for(var u=Number.MAX_VALUE,c=-Number.MAX_VALUE,p=0;p<e.points.length;p++){var h=e.points[p][l]-this.min[l];u=Math.min(u,h),c=Math.max(c,h)}if(c<0||u>this.max[l]-this.min[l])return 0}return 1};var xi=function(t,e,r,i){if(void 0===t&&(t=0),void 0===e&&(e=0),void 0===r&&(r=0),void 0===i&&(i=0),isNaN(t)||t<0||isNaN(e)||e<0||isNaN(r)||r<0||isNaN(i)||i<0)throw new Error("Invalid value for edge-insets, top, bottom, left and right must all be numbers");this.top=t,this.bottom=e,this.left=r,this.right=i};xi.prototype.interpolate=function(e,r,i){return null!=r.top&&null!=e.top&&(this.top=t.number(e.top,r.top,i)),null!=r.bottom&&null!=e.bottom&&(this.bottom=t.number(e.bottom,r.bottom,i)),null!=r.left&&null!=e.left&&(this.left=t.number(e.left,r.left,i)),null!=r.right&&null!=e.right&&(this.right=t.number(e.right,r.right,i)),this},xi.prototype.getCenter=function(e,r){var i=t.clamp((this.left+e-this.right)/2,0,e),n=t.clamp((this.top+r-this.bottom)/2,0,r);return new t.Point(i,n)},xi.prototype.equals=function(t){return this.top===t.top&&this.bottom===t.bottom&&this.left===t.left&&this.right===t.right},xi.prototype.clone=function(){return new xi(this.top,this.bottom,this.left,this.right)},xi.prototype.toJSON=function(){return{top:this.top,bottom:this.bottom,left:this.left,right:this.right}};var bi=function(e,r,i,n,o){this.tileSize=512,this.maxValidLatitude=85.051129,this._renderWorldCopies=void 0===o||o,this._minZoom=e||0,this._maxZoom=r||22,this._minPitch=null==i?0:i,this._maxPitch=null==n?60:n,this.setMaxBounds(),this.width=0,this.height=0,this._center=new t.LngLat(0,0),this.zoom=0,this.angle=0,this._fov=.6435011087932844,this._pitch=0,this._unmodified=!0,this._edgeInsets=new xi,this._posMatrixCache={},this._alignedPosMatrixCache={}},wi={minZoom:{configurable:!0},maxZoom:{configurable:!0},minPitch:{configurable:!0},maxPitch:{configurable:!0},renderWorldCopies:{configurable:!0},worldSize:{configurable:!0},centerOffset:{configurable:!0},size:{configurable:!0},bearing:{configurable:!0},pitch:{configurable:!0},fov:{configurable:!0},zoom:{configurable:!0},center:{configurable:!0},padding:{configurable:!0},centerPoint:{configurable:!0},unmodified:{configurable:!0},point:{configurable:!0}};bi.prototype.clone=function(){var t=new bi(this._minZoom,this._maxZoom,this._minPitch,this.maxPitch,this._renderWorldCopies);return t.tileSize=this.tileSize,t.latRange=this.latRange,t.width=this.width,t.height=this.height,t._center=this._center,t.zoom=this.zoom,t.angle=this.angle,t._fov=this._fov,t._pitch=this._pitch,t._unmodified=this._unmodified,t._edgeInsets=this._edgeInsets.clone(),t._calcMatrices(),t},wi.minZoom.get=function(){return this._minZoom},wi.minZoom.set=function(t){this._minZoom!==t&&(this._minZoom=t,this.zoom=Math.max(this.zoom,t))},wi.maxZoom.get=function(){return this._maxZoom},wi.maxZoom.set=function(t){this._maxZoom!==t&&(this._maxZoom=t,this.zoom=Math.min(this.zoom,t))},wi.minPitch.get=function(){return this._minPitch},wi.minPitch.set=function(t){this._minPitch!==t&&(this._minPitch=t,this.pitch=Math.max(this.pitch,t))},wi.maxPitch.get=function(){return this._maxPitch},wi.maxPitch.set=function(t){this._maxPitch!==t&&(this._maxPitch=t,this.pitch=Math.min(this.pitch,t))},wi.renderWorldCopies.get=function(){return this._renderWorldCopies},wi.renderWorldCopies.set=function(t){void 0===t?t=!0:null===t&&(t=!1),this._renderWorldCopies=t},wi.worldSize.get=function(){return this.tileSize*this.scale},wi.centerOffset.get=function(){return this.centerPoint._sub(this.size._div(2))},wi.size.get=function(){return new t.Point(this.width,this.height)},wi.bearing.get=function(){return-this.angle/Math.PI*180},wi.bearing.set=function(e){var r=-t.wrap(e,-180,180)*Math.PI/180;this.angle!==r&&(this._unmodified=!1,this.angle=r,this._calcMatrices(),this.rotationMatrix=t.create$2(),t.rotate(this.rotationMatrix,this.rotationMatrix,this.angle))},wi.pitch.get=function(){return this._pitch/Math.PI*180},wi.pitch.set=function(e){var r=t.clamp(e,this.minPitch,this.maxPitch)/180*Math.PI;this._pitch!==r&&(this._unmodified=!1,this._pitch=r,this._calcMatrices())},wi.fov.get=function(){return this._fov/Math.PI*180},wi.fov.set=function(t){t=Math.max(.01,Math.min(60,t)),this._fov!==t&&(this._unmodified=!1,this._fov=t/180*Math.PI,this._calcMatrices())},wi.zoom.get=function(){return this._zoom},wi.zoom.set=function(t){var e=Math.min(Math.max(t,this.minZoom),this.maxZoom);this._zoom!==e&&(this._unmodified=!1,this._zoom=e,this.scale=this.zoomScale(e),this.tileZoom=Math.floor(e),this.zoomFraction=e-this.tileZoom,this._constrain(),this._calcMatrices())},wi.center.get=function(){return this._center},wi.center.set=function(t){t.lat===this._center.lat&&t.lng===this._center.lng||(this._unmodified=!1,this._center=t,this._constrain(),this._calcMatrices())},wi.padding.get=function(){return this._edgeInsets.toJSON()},wi.padding.set=function(t){this._edgeInsets.equals(t)||(this._unmodified=!1,this._edgeInsets.interpolate(this._edgeInsets,t,1),this._calcMatrices())},wi.centerPoint.get=function(){return this._edgeInsets.getCenter(this.width,this.height)},bi.prototype.isPaddingEqual=function(t){return this._edgeInsets.equals(t)},bi.prototype.interpolatePadding=function(t,e,r){this._unmodified=!1,this._edgeInsets.interpolate(t,e,r),this._constrain(),this._calcMatrices()},bi.prototype.coveringZoomLevel=function(t){var e=(t.roundZoom?Math.round:Math.floor)(this.zoom+this.scaleZoom(this.tileSize/t.tileSize));return Math.max(0,e)},bi.prototype.getVisibleUnwrappedCoordinates=function(e){var r=[new t.UnwrappedTileID(0,e)];if(this._renderWorldCopies)for(var i=this.pointCoordinate(new t.Point(0,0)),n=this.pointCoordinate(new t.Point(this.width,0)),o=this.pointCoordinate(new t.Point(this.width,this.height)),a=this.pointCoordinate(new t.Point(0,this.height)),s=Math.floor(Math.min(i.x,n.x,o.x,a.x)),l=Math.floor(Math.max(i.x,n.x,o.x,a.x)),u=s-1;u<=l+1;u++)0!==u&&r.push(new t.UnwrappedTileID(u,e));return r},bi.prototype.coveringTiles=function(e){var r=this.coveringZoomLevel(e),i=r;if(void 0!==e.minzoom&&r<e.minzoom)return[];void 0!==e.maxzoom&&r>e.maxzoom&&(r=e.maxzoom);var n=t.MercatorCoordinate.fromLngLat(this.center),o=Math.pow(2,r),a=[o*n.x,o*n.y,0],s=_i.fromInvProjectionMatrix(this.invProjMatrix,this.worldSize,r),l=e.minzoom||0;this.pitch<=60&&this._edgeInsets.top<.1&&(l=r);var u=function(t){return{aabb:new vi([t*o,0,0],[(t+1)*o,o,0]),zoom:0,x:0,y:0,wrap:t,fullyVisible:!1}},c=[],p=[],h=r,f=e.reparseOverscaled?i:r;if(this._renderWorldCopies)for(var d=1;d<=3;d++)c.push(u(-d)),c.push(u(d));for(c.push(u(0));c.length>0;){var m=c.pop(),y=m.x,g=m.y,_=m.fullyVisible;if(!_){var v=m.aabb.intersects(s);if(0===v)continue;_=2===v}var x=m.aabb.distanceX(a),b=m.aabb.distanceY(a),w=Math.max(Math.abs(x),Math.abs(b));if(m.zoom===h||w>3+(1<<h-m.zoom)-2&&m.zoom>=l)p.push({tileID:new t.OverscaledTileID(m.zoom===h?f:m.zoom,m.wrap,m.zoom,y,g),distanceSq:t.sqrLen([a[0]-.5-y,a[1]-.5-g])});else for(var S=0;S<4;S++){var T=(y<<1)+S%2,I=(g<<1)+(S>>1);c.push({aabb:m.aabb.quadrant(S),zoom:m.zoom+1,x:T,y:I,wrap:m.wrap,fullyVisible:_})}}return p.sort(function(t,e){return t.distanceSq-e.distanceSq}).map(function(t){return t.tileID})},bi.prototype.resize=function(t,e){this.width=t,this.height=e,this.pixelsToGLUnits=[2/t,-2/e],this._constrain(),this._calcMatrices()},wi.unmodified.get=function(){return this._unmodified},bi.prototype.zoomScale=function(t){return Math.pow(2,t)},bi.prototype.scaleZoom=function(t){return Math.log(t)/Math.LN2},bi.prototype.project=function(e){var r=t.clamp(e.lat,-this.maxValidLatitude,this.maxValidLatitude);return new t.Point(t.mercatorXfromLng(e.lng)*this.worldSize,t.mercatorYfromLat(r)*this.worldSize)},bi.prototype.unproject=function(e){return new t.MercatorCoordinate(e.x/this.worldSize,e.y/this.worldSize).toLngLat()},wi.point.get=function(){return this.project(this.center)},bi.prototype.setLocationAtPoint=function(e,r){var i=this.pointCoordinate(r),n=this.pointCoordinate(this.centerPoint),o=this.locationCoordinate(e),a=new t.MercatorCoordinate(o.x-(i.x-n.x),o.y-(i.y-n.y));this.center=this.coordinateLocation(a),this._renderWorldCopies&&(this.center=this.center.wrap())},bi.prototype.locationPoint=function(t){return this.coordinatePoint(this.locationCoordinate(t))},bi.prototype.pointLocation=function(t){return this.coordinateLocation(this.pointCoordinate(t))},bi.prototype.locationCoordinate=function(e){return t.MercatorCoordinate.fromLngLat(e)},bi.prototype.coordinateLocation=function(t){return t.toLngLat()},bi.prototype.pointCoordinate=function(e){var r=[e.x,e.y,0,1],i=[e.x,e.y,1,1];t.transformMat4(r,r,this.pixelMatrixInverse),t.transformMat4(i,i,this.pixelMatrixInverse);var n=r[3],o=i[3],a=r[1]/n,s=i[1]/o,l=r[2]/n,u=i[2]/o,c=l===u?0:(0-l)/(u-l);return new t.MercatorCoordinate(t.number(r[0]/n,i[0]/o,c)/this.worldSize,t.number(a,s,c)/this.worldSize)},bi.prototype.coordinatePoint=function(e){var r=[e.x*this.worldSize,e.y*this.worldSize,0,1];return t.transformMat4(r,r,this.pixelMatrix),new t.Point(r[0]/r[3],r[1]/r[3])},bi.prototype.getBounds=function(){return(new t.LngLatBounds).extend(this.pointLocation(new t.Point(0,0))).extend(this.pointLocation(new t.Point(this.width,0))).extend(this.pointLocation(new t.Point(this.width,this.height))).extend(this.pointLocation(new t.Point(0,this.height)))},bi.prototype.getMaxBounds=function(){return this.latRange&&2===this.latRange.length&&this.lngRange&&2===this.lngRange.length?new t.LngLatBounds([this.lngRange[0],this.latRange[0]],[this.lngRange[1],this.latRange[1]]):null},bi.prototype.setMaxBounds=function(t){t?(this.lngRange=[t.getWest(),t.getEast()],this.latRange=[t.getSouth(),t.getNorth()],this._constrain()):(this.lngRange=null,this.latRange=[-this.maxValidLatitude,this.maxValidLatitude])},bi.prototype.calculatePosMatrix=function(e,r){void 0===r&&(r=!1);var i=e.key,n=r?this._alignedPosMatrixCache:this._posMatrixCache;if(n[i])return n[i];var o=e.canonical,a=this.worldSize/this.zoomScale(o.z),s=o.x+Math.pow(2,o.z)*e.wrap,l=t.identity(new Float64Array(16));return t.translate(l,l,[s*a,o.y*a,0]),t.scale(l,l,[a/t.EXTENT,a/t.EXTENT,1]),t.multiply(l,r?this.alignedProjMatrix:this.projMatrix,l),n[i]=new Float32Array(l),n[i]},bi.prototype.customLayerMatrix=function(){return this.mercatorMatrix.slice()},bi.prototype._constrain=function(){if(this.center&&this.width&&this.height&&!this._constraining){this._constraining=!0;var e,r,i,n,o=-90,a=90,s=-180,l=180,u=this.size,c=this._unmodified;if(this.latRange){var p=this.latRange;o=t.mercatorYfromLat(p[1])*this.worldSize,e=(a=t.mercatorYfromLat(p[0])*this.worldSize)-o<u.y?u.y/(a-o):0}if(this.lngRange){var h=this.lngRange;s=t.mercatorXfromLng(h[0])*this.worldSize,r=(l=t.mercatorXfromLng(h[1])*this.worldSize)-s<u.x?u.x/(l-s):0}var f=this.point,d=Math.max(r||0,e||0);if(d)return this.center=this.unproject(new t.Point(r?(l+s)/2:f.x,e?(a+o)/2:f.y)),this.zoom+=this.scaleZoom(d),this._unmodified=c,void(this._constraining=!1);if(this.latRange){var m=f.y,y=u.y/2;m-y<o&&(n=o+y),m+y>a&&(n=a-y)}if(this.lngRange){var g=f.x,_=u.x/2;g-_<s&&(i=s+_),g+_>l&&(i=l-_)}void 0===i&&void 0===n||(this.center=this.unproject(new t.Point(void 0!==i?i:f.x,void 0!==n?n:f.y))),this._unmodified=c,this._constraining=!1}},bi.prototype._calcMatrices=function(){if(this.height){var e=this.centerOffset;this.cameraToCenterDistance=.5/Math.tan(this._fov/2)*this.height;var r=Math.PI/2+this._pitch,i=this._fov*(.5+e.y/this.height),n=Math.sin(i)*this.cameraToCenterDistance/Math.sin(t.clamp(Math.PI-r-i,.01,Math.PI-.01)),o=this.point,a=o.x,s=o.y,l=1.01*(Math.cos(Math.PI/2-this._pitch)*n+this.cameraToCenterDistance),u=this.height/50,c=new Float64Array(16);t.perspective(c,this._fov,this.width/this.height,u,l),c[8]=2*-e.x/this.width,c[9]=2*e.y/this.height,t.scale(c,c,[1,-1,1]),t.translate(c,c,[0,0,-this.cameraToCenterDistance]),t.rotateX(c,c,this._pitch),t.rotateZ(c,c,this.angle),t.translate(c,c,[-a,-s,0]),this.mercatorMatrix=t.scale([],c,[this.worldSize,this.worldSize,this.worldSize]),t.scale(c,c,[1,1,t.mercatorZfromAltitude(1,this.center.lat)*this.worldSize,1]),this.projMatrix=c,this.invProjMatrix=t.invert([],this.projMatrix);var p=this.width%2/2,h=this.height%2/2,f=Math.cos(this.angle),d=Math.sin(this.angle),m=a-Math.round(a)+f*p+d*h,y=s-Math.round(s)+f*h+d*p,g=new Float64Array(c);if(t.translate(g,g,[m>.5?m-1:m,y>.5?y-1:y,0]),this.alignedProjMatrix=g,c=t.create(),t.scale(c,c,[this.width/2,-this.height/2,1]),t.translate(c,c,[1,-1,0]),this.labelPlaneMatrix=c,c=t.create(),t.scale(c,c,[1,-1,1]),t.translate(c,c,[-1,-1,0]),t.scale(c,c,[2/this.width,2/this.height,1]),this.glCoordMatrix=c,this.pixelMatrix=t.multiply(new Float64Array(16),this.labelPlaneMatrix,this.projMatrix),!(c=t.invert(new Float64Array(16),this.pixelMatrix)))throw new Error("failed to invert matrix");this.pixelMatrixInverse=c,this._posMatrixCache={},this._alignedPosMatrixCache={}}},bi.prototype.maxPitchScaleFactor=function(){if(!this.pixelMatrixInverse)return 1;var e=this.pointCoordinate(new t.Point(0,0)),r=[e.x*this.worldSize,e.y*this.worldSize,0,1];return t.transformMat4(r,r,this.pixelMatrix)[3]/this.cameraToCenterDistance},bi.prototype.getCameraPoint=function(){var e=Math.tan(this._pitch)*(this.cameraToCenterDistance||1);return this.centerPoint.add(new t.Point(0,e))},bi.prototype.getCameraQueryGeometry=function(e){var r=this.getCameraPoint();if(1===e.length)return[e[0],r];for(var i=r.x,n=r.y,o=r.x,a=r.y,s=0,l=e;s<l.length;s+=1){var u=l[s];i=Math.min(i,u.x),n=Math.min(n,u.y),o=Math.max(o,u.x),a=Math.max(a,u.y)}return[new t.Point(i,n),new t.Point(o,n),new t.Point(o,a),new t.Point(i,a),new t.Point(i,n)]},Object.defineProperties(bi.prototype,wi);var Si=function(e){var r,i,n,o;this._hashName=e&&encodeURIComponent(e),t.bindAll(["_getCurrentHash","_onHashChange","_updateHash"],this),this._updateHash=(r=this._updateHashUnthrottled.bind(this),i=!1,n=null,o=function(){n=null,i&&(r(),n=setTimeout(o,300),i=!1)},function(){return i=!0,n||o(),n})};Si.prototype.addTo=function(e){return this._map=e,t.window.addEventListener("hashchange",this._onHashChange,!1),this._map.on("moveend",this._updateHash),this},Si.prototype.remove=function(){return t.window.removeEventListener("hashchange",this._onHashChange,!1),this._map.off("moveend",this._updateHash),clearTimeout(this._updateHash()),delete this._map,this},Si.prototype.getHashString=function(e){var r=this._map.getCenter(),i=Math.round(100*this._map.getZoom())/100,n=Math.ceil((i*Math.LN2+Math.log(512/360/.5))/Math.LN10),o=Math.pow(10,n),a=Math.round(r.lng*o)/o,s=Math.round(r.lat*o)/o,l=this._map.getBearing(),u=this._map.getPitch(),c="";if(c+=e?"/"+a+"/"+s+"/"+i:i+"/"+s+"/"+a,(l||u)&&(c+="/"+Math.round(10*l)/10),u&&(c+="/"+Math.round(u)),this._hashName){var p=this._hashName,h=!1,f=t.window.location.hash.slice(1).split("&").map(function(t){var e=t.split("=")[0];return e===p?(h=!0,e+"="+c):t}).filter(function(t){return t});return h||f.push(p+"="+c),"#"+f.join("&")}return"#"+c},Si.prototype._getCurrentHash=function(){var e,r=this,i=t.window.location.hash.replace("#","");return this._hashName?(i.split("&").map(function(t){return t.split("=")}).forEach(function(t){t[0]===r._hashName&&(e=t)}),(e&&e[1]||"").split("/")):i.split("/")},Si.prototype._onHashChange=function(){var t=this._getCurrentHash();if(t.length>=3&&!t.some(function(t){return isNaN(t)})){var e=this._map.dragRotate.isEnabled()&&this._map.touchZoomRotate.isEnabled()?+(t[3]||0):this._map.getBearing();return this._map.jumpTo({center:[+t[2],+t[1]],zoom:+t[0],bearing:e,pitch:+(t[4]||0)}),!0}return!1},Si.prototype._updateHashUnthrottled=function(){var e=this.getHashString();try{t.window.history.replaceState(t.window.history.state,"",e)}catch(t){}};var Ti={linearity:.3,easing:t.bezier(0,0,.3,1)},Ii=t.extend({deceleration:2500,maxSpeed:1400},Ti),Ei=t.extend({deceleration:20,maxSpeed:1400},Ti),Ai=t.extend({deceleration:1e3,maxSpeed:360},Ti),zi=t.extend({deceleration:1e3,maxSpeed:90},Ti),Pi=function(t){this._map=t,this.clear()};function Ci(t,e){(!t.duration||t.duration<e.duration)&&(t.duration=e.duration,t.easing=e.easing)}function ki(e,r,i){var n=i.maxSpeed,o=i.linearity,a=i.deceleration,s=t.clamp(e*o/(r/1e3),-n,n),l=Math.abs(s)/(a*o);return{easing:i.easing,duration:1e3*l,amount:s*(l/2)}}Pi.prototype.clear=function(){this._inertiaBuffer=[]},Pi.prototype.record=function(e){this._drainInertiaBuffer(),this._inertiaBuffer.push({time:t.browser.now(),settings:e})},Pi.prototype._drainInertiaBuffer=function(){for(var e=this._inertiaBuffer,r=t.browser.now();e.length>0&&r-e[0].time>160;)e.shift()},Pi.prototype._onMoveEnd=function(e){if(this._drainInertiaBuffer(),!(this._inertiaBuffer.length<2)){for(var r={zoom:0,bearing:0,pitch:0,pan:new t.Point(0,0),pinchAround:void 0,around:void 0},i=0,n=this._inertiaBuffer;i<n.length;i+=1){var o=n[i].settings;r.zoom+=o.zoomDelta||0,r.bearing+=o.bearingDelta||0,r.pitch+=o.pitchDelta||0,o.panDelta&&r.pan._add(o.panDelta),o.around&&(r.around=o.around),o.pinchAround&&(r.pinchAround=o.pinchAround)}var a=this._inertiaBuffer[this._inertiaBuffer.length-1].time-this._inertiaBuffer[0].time,s={};if(r.pan.mag()){var l=ki(r.pan.mag(),a,t.extend({},Ii,e||{}));s.offset=r.pan.mult(l.amount/r.pan.mag()),s.center=this._map.transform.center,Ci(s,l)}if(r.zoom){var u=ki(r.zoom,a,Ei);s.zoom=this._map.transform.zoom+u.amount,Ci(s,u)}if(r.bearing){var c=ki(r.bearing,a,Ai);s.bearing=this._map.transform.bearing+t.clamp(c.amount,-179,179),Ci(s,c)}if(r.pitch){var p=ki(r.pitch,a,zi);s.pitch=this._map.transform.pitch+p.amount,Ci(s,p)}if(s.zoom||s.bearing){var h=void 0===r.pinchAround?r.around:r.pinchAround;s.around=h?this._map.unproject(h):this._map.getCenter()}return this.clear(),t.extend(s,{noMoveStart:!0})}};var Mi=function(e){function i(i,n,o,a){void 0===a&&(a={});var s=r.mousePos(n.getCanvasContainer(),o),l=n.unproject(s);e.call(this,i,t.extend({point:s,lngLat:l,originalEvent:o},a)),this._defaultPrevented=!1,this.target=n}e&&(i.__proto__=e),(i.prototype=Object.create(e&&e.prototype)).constructor=i;var n={defaultPrevented:{configurable:!0}};return i.prototype.preventDefault=function(){this._defaultPrevented=!0},n.defaultPrevented.get=function(){return this._defaultPrevented},Object.defineProperties(i.prototype,n),i}(t.Event),Di=function(e){function i(i,n,o){var a="touchend"===i?o.changedTouches:o.touches,s=r.touchPos(n.getCanvasContainer(),a),l=s.map(function(t){return n.unproject(t)}),u=s.reduce(function(t,e,r,i){return t.add(e.div(i.length))},new t.Point(0,0)),c=n.unproject(u);e.call(this,i,{points:s,point:u,lngLats:l,lngLat:c,originalEvent:o}),this._defaultPrevented=!1}e&&(i.__proto__=e),(i.prototype=Object.create(e&&e.prototype)).constructor=i;var n={defaultPrevented:{configurable:!0}};return i.prototype.preventDefault=function(){this._defaultPrevented=!0},n.defaultPrevented.get=function(){return this._defaultPrevented},Object.defineProperties(i.prototype,n),i}(t.Event),Li=function(t){function e(e,r,i){t.call(this,e,{originalEvent:i}),this._defaultPrevented=!1}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var r={defaultPrevented:{configurable:!0}};return e.prototype.preventDefault=function(){this._defaultPrevented=!0},r.defaultPrevented.get=function(){return this._defaultPrevented},Object.defineProperties(e.prototype,r),e}(t.Event),Bi=function(t,e){this._map=t,this._clickTolerance=e.clickTolerance};Bi.prototype.reset=function(){delete this._mousedownPos},Bi.prototype.wheel=function(t){return this._firePreventable(new Li(t.type,this._map,t))},Bi.prototype.mousedown=function(t,e){return this._mousedownPos=e,this._firePreventable(new Mi(t.type,this._map,t))},Bi.prototype.mouseup=function(t){this._map.fire(new Mi(t.type,this._map,t))},Bi.prototype.click=function(t,e){this._mousedownPos&&this._mousedownPos.dist(e)>=this._clickTolerance||this._map.fire(new Mi(t.type,this._map,t))},Bi.prototype.dblclick=function(t){return this._firePreventable(new Mi(t.type,this._map,t))},Bi.prototype.mouseover=function(t){this._map.fire(new Mi(t.type,this._map,t))},Bi.prototype.mouseout=function(t){this._map.fire(new Mi(t.type,this._map,t))},Bi.prototype.touchstart=function(t){return this._firePreventable(new Di(t.type,this._map,t))},Bi.prototype.touchmove=function(t){this._map.fire(new Di(t.type,this._map,t))},Bi.prototype.touchend=function(t){this._map.fire(new Di(t.type,this._map,t))},Bi.prototype.touchcancel=function(t){this._map.fire(new Di(t.type,this._map,t))},Bi.prototype._firePreventable=function(t){if(this._map.fire(t),t.defaultPrevented)return{}},Bi.prototype.isEnabled=function(){return!0},Bi.prototype.isActive=function(){return!1},Bi.prototype.enable=function(){},Bi.prototype.disable=function(){};var Ri=function(t){this._map=t};Ri.prototype.reset=function(){this._delayContextMenu=!1,delete this._contextMenuEvent},Ri.prototype.mousemove=function(t){this._map.fire(new Mi(t.type,this._map,t))},Ri.prototype.mousedown=function(){this._delayContextMenu=!0},Ri.prototype.mouseup=function(){this._delayContextMenu=!1,this._contextMenuEvent&&(this._map.fire(new Mi("contextmenu",this._map,this._contextMenuEvent)),delete this._contextMenuEvent)},Ri.prototype.contextmenu=function(t){this._delayContextMenu?this._contextMenuEvent=t:this._map.fire(new Mi(t.type,this._map,t)),this._map.listens("contextmenu")&&t.preventDefault()},Ri.prototype.isEnabled=function(){return!0},Ri.prototype.isActive=function(){return!1},Ri.prototype.enable=function(){},Ri.prototype.disable=function(){};var Fi=function(t,e){this._map=t,this._el=t.getCanvasContainer(),this._container=t.getContainer(),this._clickTolerance=e.clickTolerance||1};function Oi(t,e){for(var r={},i=0;i<t.length;i++)r[t[i].identifier]=e[i];return r}Fi.prototype.isEnabled=function(){return!!this._enabled},Fi.prototype.isActive=function(){return!!this._active},Fi.prototype.enable=function(){this.isEnabled()||(this._enabled=!0)},Fi.prototype.disable=function(){this.isEnabled()&&(this._enabled=!1)},Fi.prototype.mousedown=function(t,e){this.isEnabled()&&t.shiftKey&&0===t.button&&(r.disableDrag(),this._startPos=this._lastPos=e,this._active=!0)},Fi.prototype.mousemoveWindow=function(t,e){if(this._active){var i=e;if(!(this._lastPos.equals(i)||!this._box&&i.dist(this._startPos)<this._clickTolerance)){var n=this._startPos;this._lastPos=i,this._box||(this._box=r.create("div","mapboxgl-boxzoom",this._container),this._container.classList.add("mapboxgl-crosshair"),this._fireEvent("boxzoomstart",t));var o=Math.min(n.x,i.x),a=Math.max(n.x,i.x),s=Math.min(n.y,i.y),l=Math.max(n.y,i.y);r.setTransform(this._box,"translate("+o+"px,"+s+"px)"),this._box.style.width=a-o+"px",this._box.style.height=l-s+"px"}}},Fi.prototype.mouseupWindow=function(e,i){var n=this;if(this._active&&0===e.button){var o=this._startPos,a=i;if(this.reset(),r.suppressClick(),o.x!==a.x||o.y!==a.y)return this._map.fire(new t.Event("boxzoomend",{originalEvent:e})),{cameraAnimation:function(t){return t.fitScreenCoordinates(o,a,n._map.getBearing(),{linear:!0})}};this._fireEvent("boxzoomcancel",e)}},Fi.prototype.keydown=function(t){this._active&&27===t.keyCode&&(this.reset(),this._fireEvent("boxzoomcancel",t))},Fi.prototype.reset=function(){this._active=!1,this._container.classList.remove("mapboxgl-crosshair"),this._box&&(r.remove(this._box),this._box=null),r.enableDrag(),delete this._startPos,delete this._lastPos},Fi.prototype._fireEvent=function(e,r){return this._map.fire(new t.Event(e,{originalEvent:r}))};var Ui=function(t){this.reset(),this.numTouches=t.numTouches};Ui.prototype.reset=function(){delete this.centroid,delete this.startTime,delete this.touches,this.aborted=!1},Ui.prototype.touchstart=function(e,r,i){(this.centroid||i.length>this.numTouches)&&(this.aborted=!0),this.aborted||(void 0===this.startTime&&(this.startTime=e.timeStamp),i.length===this.numTouches&&(this.centroid=function(e){for(var r=new t.Point(0,0),i=0,n=e;i<n.length;i+=1)r._add(n[i]);return r.div(e.length)}(r),this.touches=Oi(i,r)))},Ui.prototype.touchmove=function(t,e,r){if(!this.aborted&&this.centroid){var i=Oi(r,e);for(var n in this.touches){var o=i[n];(!o||o.dist(this.touches[n])>30)&&(this.aborted=!0)}}},Ui.prototype.touchend=function(t,e,r){if((!this.centroid||t.timeStamp-this.startTime>500)&&(this.aborted=!0),0===r.length){var i=!this.aborted&&this.centroid;if(this.reset(),i)return i}};var Vi=function(t){this.singleTap=new Ui(t),this.numTaps=t.numTaps,this.reset()};Vi.prototype.reset=function(){this.lastTime=1/0,delete this.lastTap,this.count=0,this.singleTap.reset()},Vi.prototype.touchstart=function(t,e,r){this.singleTap.touchstart(t,e,r)},Vi.prototype.touchmove=function(t,e,r){this.singleTap.touchmove(t,e,r)},Vi.prototype.touchend=function(t,e,r){var i=this.singleTap.touchend(t,e,r);if(i){var n=t.timeStamp-this.lastTime<500,o=!this.lastTap||this.lastTap.dist(i)<30;if(n&&o||this.reset(),this.count++,this.lastTime=t.timeStamp,this.lastTap=i,this.count===this.numTaps)return this.reset(),i}};var Ni=function(){this._zoomIn=new Vi({numTouches:1,numTaps:2}),this._zoomOut=new Vi({numTouches:2,numTaps:1}),this.reset()};Ni.prototype.reset=function(){this._active=!1,this._zoomIn.reset(),this._zoomOut.reset()},Ni.prototype.touchstart=function(t,e,r){this._zoomIn.touchstart(t,e,r),this._zoomOut.touchstart(t,e,r)},Ni.prototype.touchmove=function(t,e,r){this._zoomIn.touchmove(t,e,r),this._zoomOut.touchmove(t,e,r)},Ni.prototype.touchend=function(t,e,r){var i=this,n=this._zoomIn.touchend(t,e,r),o=this._zoomOut.touchend(t,e,r);return n?(this._active=!0,t.preventDefault(),setTimeout(function(){return i.reset()},0),{cameraAnimation:function(e){return e.easeTo({duration:300,zoom:e.getZoom()+1,around:e.unproject(n)},{originalEvent:t})}}):o?(this._active=!0,t.preventDefault(),setTimeout(function(){return i.reset()},0),{cameraAnimation:function(e){return e.easeTo({duration:300,zoom:e.getZoom()-1,around:e.unproject(o)},{originalEvent:t})}}):void 0},Ni.prototype.touchcancel=function(){this.reset()},Ni.prototype.enable=function(){this._enabled=!0},Ni.prototype.disable=function(){this._enabled=!1,this.reset()},Ni.prototype.isEnabled=function(){return this._enabled},Ni.prototype.isActive=function(){return this._active};var ji=function(t){this.reset(),this._clickTolerance=t.clickTolerance||1};ji.prototype.reset=function(){this._active=!1,this._moved=!1,delete this._lastPoint,delete this._eventButton},ji.prototype._correctButton=function(t,e){return!1},ji.prototype._move=function(t,e){return{}},ji.prototype.mousedown=function(t,e){if(!this._lastPoint){var i=r.mouseButton(t);this._correctButton(t,i)&&(this._lastPoint=e,this._eventButton=i)}},ji.prototype.mousemoveWindow=function(t,e){var r=this._lastPoint;if(r&&(t.preventDefault(),this._moved||!(e.dist(r)<this._clickTolerance)))return this._moved=!0,this._lastPoint=e,this._move(r,e)},ji.prototype.mouseupWindow=function(t){r.mouseButton(t)===this._eventButton&&(this._moved&&r.suppressClick(),this.reset())},ji.prototype.enable=function(){this._enabled=!0},ji.prototype.disable=function(){this._enabled=!1,this.reset()},ji.prototype.isEnabled=function(){return this._enabled},ji.prototype.isActive=function(){return this._active};var qi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.mousedown=function(e,r){t.prototype.mousedown.call(this,e,r),this._lastPoint&&(this._active=!0)},e.prototype._correctButton=function(t,e){return 0===e&&!t.ctrlKey},e.prototype._move=function(t,e){return{around:e,panDelta:e.sub(t)}},e}(ji),Zi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._correctButton=function(t,e){return 0===e&&t.ctrlKey||2===e},e.prototype._move=function(t,e){var r=.8*(e.x-t.x);if(r)return this._active=!0,{bearingDelta:r}},e.prototype.contextmenu=function(t){t.preventDefault()},e}(ji),Gi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype._correctButton=function(t,e){return 0===e&&t.ctrlKey||2===e},e.prototype._move=function(t,e){var r=-.5*(e.y-t.y);if(r)return this._active=!0,{pitchDelta:r}},e.prototype.contextmenu=function(t){t.preventDefault()},e}(ji),Xi=function(t){this._minTouches=1,this._clickTolerance=t.clickTolerance||1,this.reset()};Xi.prototype.reset=function(){this._active=!1,this._touches={},this._sum=new t.Point(0,0)},Xi.prototype.touchstart=function(t,e,r){return this._calculateTransform(t,e,r)},Xi.prototype.touchmove=function(t,e,r){if(this._active)return t.preventDefault(),this._calculateTransform(t,e,r)},Xi.prototype.touchend=function(t,e,r){this._calculateTransform(t,e,r),this._active&&r.length<this._minTouches&&this.reset()},Xi.prototype.touchcancel=function(){this.reset()},Xi.prototype._calculateTransform=function(e,r,i){i.length>0&&(this._active=!0);var n=Oi(i,r),o=new t.Point(0,0),a=new t.Point(0,0),s=0;for(var l in n){var u=n[l],c=this._touches[l];c&&(o._add(u),a._add(u.sub(c)),s++,n[l]=u)}if(this._touches=n,!(s<this._minTouches)&&a.mag()){var p=a.div(s);if(this._sum._add(p),!(this._sum.mag()<this._clickTolerance))return{around:o.div(s),panDelta:p}}},Xi.prototype.enable=function(){this._enabled=!0},Xi.prototype.disable=function(){this._enabled=!1,this.reset()},Xi.prototype.isEnabled=function(){return this._enabled},Xi.prototype.isActive=function(){return this._active};var Wi=function(){this.reset()};function Ki(t,e,r){for(var i=0;i<t.length;i++)if(t[i].identifier===r)return e[i]}function Hi(t,e){return Math.log(t/e)/Math.LN2}Wi.prototype.reset=function(){this._active=!1,delete this._firstTwoTouches},Wi.prototype._start=function(t){},Wi.prototype._move=function(t,e,r){return{}},Wi.prototype.touchstart=function(t,e,r){this._firstTwoTouches||r.length<2||(this._firstTwoTouches=[r[0].identifier,r[1].identifier],this._start([e[0],e[1]]))},Wi.prototype.touchmove=function(t,e,r){if(this._firstTwoTouches){t.preventDefault();var i=this._firstTwoTouches,n=i[1],o=Ki(r,e,i[0]),a=Ki(r,e,n);if(o&&a){var s=this._aroundCenter?null:o.add(a).div(2);return this._move([o,a],s,t)}}},Wi.prototype.touchend=function(t,e,i){if(this._firstTwoTouches){var n=this._firstTwoTouches,o=n[1],a=Ki(i,e,n[0]),s=Ki(i,e,o);a&&s||(this._active&&r.suppressClick(),this.reset())}},Wi.prototype.touchcancel=function(){this.reset()},Wi.prototype.enable=function(t){this._enabled=!0,this._aroundCenter=!!t&&"center"===t.around},Wi.prototype.disable=function(){this._enabled=!1,this.reset()},Wi.prototype.isEnabled=function(){return this._enabled},Wi.prototype.isActive=function(){return this._active};var Ji=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.reset=function(){t.prototype.reset.call(this),delete this._distance,delete this._startDistance},e.prototype._start=function(t){this._startDistance=this._distance=t[0].dist(t[1])},e.prototype._move=function(t,e){var r=this._distance;if(this._distance=t[0].dist(t[1]),this._active||!(Math.abs(Hi(this._distance,this._startDistance))<.1))return this._active=!0,{zoomDelta:Hi(this._distance,r),pinchAround:e}},e}(Wi);function Yi(t,e){return 180*t.angleWith(e)/Math.PI}var Qi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.reset=function(){t.prototype.reset.call(this),delete this._minDiameter,delete this._startVector,delete this._vector},e.prototype._start=function(t){this._startVector=this._vector=t[0].sub(t[1]),this._minDiameter=t[0].dist(t[1])},e.prototype._move=function(t,e){var r=this._vector;if(this._vector=t[0].sub(t[1]),this._active||!this._isBelowThreshold(this._vector))return this._active=!0,{bearingDelta:Yi(this._vector,r),pinchAround:e}},e.prototype._isBelowThreshold=function(t){this._minDiameter=Math.min(this._minDiameter,t.mag());var e=25/(Math.PI*this._minDiameter)*360,r=Yi(t,this._startVector);return Math.abs(r)<e},e}(Wi);function $i(t){return Math.abs(t.y)>Math.abs(t.x)}var tn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e.prototype.reset=function(){t.prototype.reset.call(this),this._valid=void 0,delete this._firstMove,delete this._lastPoints},e.prototype._start=function(t){this._lastPoints=t,$i(t[0].sub(t[1]))&&(this._valid=!1)},e.prototype._move=function(t,e,r){var i=t[0].sub(this._lastPoints[0]),n=t[1].sub(this._lastPoints[1]);if(this._valid=this.gestureBeginsVertically(i,n,r.timeStamp),this._valid)return this._lastPoints=t,this._active=!0,{pitchDelta:(i.y+n.y)/2*-.5}},e.prototype.gestureBeginsVertically=function(t,e,r){if(void 0!==this._valid)return this._valid;var i=t.mag()>=2,n=e.mag()>=2;if(i||n){if(!i||!n)return void 0===this._firstMove&&(this._firstMove=r),r-this._firstMove<100&&void 0;var o=t.y>0==e.y>0;return $i(t)&&$i(e)&&o}},e}(Wi),en={panStep:100,bearingStep:15,pitchStep:10},rn=function(){var t=en;this._panStep=t.panStep,this._bearingStep=t.bearingStep,this._pitchStep=t.pitchStep};function nn(t){return t*(2-t)}rn.prototype.reset=function(){this._active=!1},rn.prototype.keydown=function(t){var e=this;if(!(t.altKey||t.ctrlKey||t.metaKey)){var r=0,i=0,n=0,o=0,a=0;switch(t.keyCode){case 61:case 107:case 171:case 187:r=1;break;case 189:case 109:case 173:r=-1;break;case 37:t.shiftKey?i=-1:(t.preventDefault(),o=-1);break;case 39:t.shiftKey?i=1:(t.preventDefault(),o=1);break;case 38:t.shiftKey?n=1:(t.preventDefault(),a=-1);break;case 40:t.shiftKey?n=-1:(t.preventDefault(),a=1);break;default:return}return{cameraAnimation:function(s){var l=s.getZoom();s.easeTo({duration:300,easeId:"keyboardHandler",easing:nn,zoom:r?Math.round(l)+r*(t.shiftKey?2:1):l,bearing:s.getBearing()+i*e._bearingStep,pitch:s.getPitch()+n*e._pitchStep,offset:[-o*e._panStep,-a*e._panStep],center:s.getCenter()},{originalEvent:t})}}}},rn.prototype.enable=function(){this._enabled=!0},rn.prototype.disable=function(){this._enabled=!1,this.reset()},rn.prototype.isEnabled=function(){return this._enabled},rn.prototype.isActive=function(){return this._active};var on=function(e,r){this._map=e,this._el=e.getCanvasContainer(),this._handler=r,this._delta=0,this._defaultZoomRate=.01,this._wheelZoomRate=1/450,t.bindAll(["_onWheel","_onTimeout","_onScrollFrame","_onScrollFinished"],this)};on.prototype.setZoomRate=function(t){this._defaultZoomRate=t},on.prototype.setWheelZoomRate=function(t){this._wheelZoomRate=t},on.prototype.isEnabled=function(){return!!this._enabled},on.prototype.isActive=function(){return!!this._active||void 0!==this._finishTimeout},on.prototype.isZooming=function(){return!!this._zooming},on.prototype.enable=function(t){this.isEnabled()||(this._enabled=!0,this._aroundCenter=t&&"center"===t.around)},on.prototype.disable=function(){this.isEnabled()&&(this._enabled=!1)},on.prototype.wheel=function(e){if(this.isEnabled()){var r=e.deltaMode===t.window.WheelEvent.DOM_DELTA_LINE?40*e.deltaY:e.deltaY,i=t.browser.now(),n=i-(this._lastWheelEventTime||0);this._lastWheelEventTime=i,0!==r&&r%4.000244140625==0?this._type="wheel":0!==r&&Math.abs(r)<4?this._type="trackpad":n>400?(this._type=null,this._lastValue=r,this._timeout=setTimeout(this._onTimeout,40,e)):this._type||(this._type=Math.abs(n*r)<200?"trackpad":"wheel",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,r+=this._lastValue)),e.shiftKey&&r&&(r/=4),this._type&&(this._lastWheelEvent=e,this._delta-=r,this._active||this._start(e)),e.preventDefault()}},on.prototype._onTimeout=function(t){this._type="wheel",this._delta-=this._lastValue,this._active||this._start(t)},on.prototype._start=function(e){if(this._delta){this._frameId&&(this._frameId=null),this._active=!0,this.isZooming()||(this._zooming=!0),this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout);var i=r.mousePos(this._el,e);this._around=t.LngLat.convert(this._aroundCenter?this._map.getCenter():this._map.unproject(i)),this._aroundPoint=this._map.transform.locationPoint(this._around),this._frameId||(this._frameId=!0,this._handler._triggerRenderFrame())}},on.prototype.renderFrame=function(){return this._onScrollFrame()},on.prototype._onScrollFrame=function(){var e=this;if(this._frameId&&(this._frameId=null,this.isActive())){var r=this._map.transform;if(0!==this._delta){var i="wheel"===this._type&&Math.abs(this._delta)>4.000244140625?this._wheelZoomRate:this._defaultZoomRate,n=2/(1+Math.exp(-Math.abs(this._delta*i)));this._delta<0&&0!==n&&(n=1/n);var o="number"==typeof this._targetZoom?r.zoomScale(this._targetZoom):r.scale;this._targetZoom=Math.min(r.maxZoom,Math.max(r.minZoom,r.scaleZoom(o*n))),"wheel"===this._type&&(this._startZoom=r.zoom,this._easing=this._smoothOutEasing(200)),this._delta=0}var a,s="number"==typeof this._targetZoom?this._targetZoom:r.zoom,l=this._startZoom,u=this._easing,c=!1;if("wheel"===this._type&&l&&u){var p=Math.min((t.browser.now()-this._lastWheelEventTime)/200,1),h=u(p);a=t.number(l,s,h),p<1?this._frameId||(this._frameId=!0):c=!0}else a=s,c=!0;return this._active=!0,c&&(this._active=!1,this._finishTimeout=setTimeout(function(){e._zooming=!1,e._handler._triggerRenderFrame(),delete e._targetZoom,delete e._finishTimeout},200)),{noInertia:!0,needsRenderFrame:!c,zoomDelta:a-r.zoom,around:this._aroundPoint,originalEvent:this._lastWheelEvent}}},on.prototype._smoothOutEasing=function(e){var r=t.ease;if(this._prevEase){var i=this._prevEase,n=(t.browser.now()-i.start)/i.duration,o=i.easing(n+.01)-i.easing(n),a=.27/Math.sqrt(o*o+1e-4)*.01,s=Math.sqrt(.0729-a*a);r=t.bezier(a,s,.25,1)}return this._prevEase={start:t.browser.now(),duration:e,easing:r},r},on.prototype.reset=function(){this._active=!1};var an=function(t,e){this._clickZoom=t,this._tapZoom=e};an.prototype.enable=function(){this._clickZoom.enable(),this._tapZoom.enable()},an.prototype.disable=function(){this._clickZoom.disable(),this._tapZoom.disable()},an.prototype.isEnabled=function(){return this._clickZoom.isEnabled()&&this._tapZoom.isEnabled()},an.prototype.isActive=function(){return this._clickZoom.isActive()||this._tapZoom.isActive()};var sn=function(){this.reset()};sn.prototype.reset=function(){this._active=!1},sn.prototype.dblclick=function(t,e){return t.preventDefault(),{cameraAnimation:function(r){r.easeTo({duration:300,zoom:r.getZoom()+(t.shiftKey?-1:1),around:r.unproject(e)},{originalEvent:t})}}},sn.prototype.enable=function(){this._enabled=!0},sn.prototype.disable=function(){this._enabled=!1,this.reset()},sn.prototype.isEnabled=function(){return this._enabled},sn.prototype.isActive=function(){return this._active};var ln=function(){this._tap=new Vi({numTouches:1,numTaps:1}),this.reset()};ln.prototype.reset=function(){this._active=!1,delete this._swipePoint,delete this._swipeTouch,delete this._tapTime,this._tap.reset()},ln.prototype.touchstart=function(t,e,r){this._swipePoint||(this._tapTime&&t.timeStamp-this._tapTime>500&&this.reset(),this._tapTime?r.length>0&&(this._swipePoint=e[0],this._swipeTouch=r[0].identifier):this._tap.touchstart(t,e,r))},ln.prototype.touchmove=function(t,e,r){if(this._tapTime){if(this._swipePoint){if(r[0].identifier!==this._swipeTouch)return;var i=e[0],n=i.y-this._swipePoint.y;return this._swipePoint=i,t.preventDefault(),this._active=!0,{zoomDelta:n/128}}}else this._tap.touchmove(t,e,r)},ln.prototype.touchend=function(t,e,r){this._tapTime?this._swipePoint&&0===r.length&&this.reset():this._tap.touchend(t,e,r)&&(this._tapTime=t.timeStamp)},ln.prototype.touchcancel=function(){this.reset()},ln.prototype.enable=function(){this._enabled=!0},ln.prototype.disable=function(){this._enabled=!1,this.reset()},ln.prototype.isEnabled=function(){return this._enabled},ln.prototype.isActive=function(){return this._active};var un=function(t,e,r){this._el=t,this._mousePan=e,this._touchPan=r};un.prototype.enable=function(t){this._inertiaOptions=t||{},this._mousePan.enable(),this._touchPan.enable(),this._el.classList.add("mapboxgl-touch-drag-pan")},un.prototype.disable=function(){this._mousePan.disable(),this._touchPan.disable(),this._el.classList.remove("mapboxgl-touch-drag-pan")},un.prototype.isEnabled=function(){return this._mousePan.isEnabled()&&this._touchPan.isEnabled()},un.prototype.isActive=function(){return this._mousePan.isActive()||this._touchPan.isActive()};var cn=function(t,e,r){this._pitchWithRotate=t.pitchWithRotate,this._mouseRotate=e,this._mousePitch=r};cn.prototype.enable=function(){this._mouseRotate.enable(),this._pitchWithRotate&&this._mousePitch.enable()},cn.prototype.disable=function(){this._mouseRotate.disable(),this._mousePitch.disable()},cn.prototype.isEnabled=function(){return this._mouseRotate.isEnabled()&&(!this._pitchWithRotate||this._mousePitch.isEnabled())},cn.prototype.isActive=function(){return this._mouseRotate.isActive()||this._mousePitch.isActive()};var pn=function(t,e,r,i){this._el=t,this._touchZoom=e,this._touchRotate=r,this._tapDragZoom=i,this._rotationDisabled=!1,this._enabled=!0};pn.prototype.enable=function(t){this._touchZoom.enable(t),this._rotationDisabled||this._touchRotate.enable(t),this._tapDragZoom.enable(),this._el.classList.add("mapboxgl-touch-zoom-rotate")},pn.prototype.disable=function(){this._touchZoom.disable(),this._touchRotate.disable(),this._tapDragZoom.disable(),this._el.classList.remove("mapboxgl-touch-zoom-rotate")},pn.prototype.isEnabled=function(){return this._touchZoom.isEnabled()&&(this._rotationDisabled||this._touchRotate.isEnabled())&&this._tapDragZoom.isEnabled()},pn.prototype.isActive=function(){return this._touchZoom.isActive()||this._touchRotate.isActive()||this._tapDragZoom.isActive()},pn.prototype.disableRotation=function(){this._rotationDisabled=!0,this._touchRotate.disable()},pn.prototype.enableRotation=function(){this._rotationDisabled=!1,this._touchZoom.isEnabled()&&this._touchRotate.enable()};var hn=function(t){return t.zoom||t.drag||t.pitch||t.rotate},fn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e,e}(t.Event);function dn(t){return t.panDelta&&t.panDelta.mag()||t.zoomDelta||t.bearingDelta||t.pitchDelta}var mn=function(e,i){this._map=e,this._el=this._map.getCanvasContainer(),this._handlers=[],this._handlersById={},this._changes=[],this._inertia=new Pi(e),this._bearingSnap=i.bearingSnap,this._previousActiveHandlers={},this._eventsInProgress={},this._addDefaultHandlers(i),t.bindAll(["handleEvent","handleWindowEvent"],this);var n=this._el;this._listeners=[[n,"touchstart",{passive:!1}],[n,"touchmove",{passive:!1}],[n,"touchend",void 0],[n,"touchcancel",void 0],[n,"mousedown",void 0],[n,"mousemove",void 0],[n,"mouseup",void 0],[t.window.document,"mousemove",{capture:!0}],[t.window.document,"mouseup",void 0],[n,"mouseover",void 0],[n,"mouseout",void 0],[n,"dblclick",void 0],[n,"click",void 0],[n,"keydown",{capture:!1}],[n,"keyup",void 0],[n,"wheel",{passive:!1}],[n,"contextmenu",void 0],[t.window,"blur",void 0]];for(var o=0,a=this._listeners;o<a.length;o+=1){var s=a[o],l=s[0];r.addEventListener(l,s[1],l===t.window.document?this.handleWindowEvent:this.handleEvent,s[2])}};mn.prototype.destroy=function(){for(var e=0,i=this._listeners;e<i.length;e+=1){var n=i[e],o=n[0];r.removeEventListener(o,n[1],o===t.window.document?this.handleWindowEvent:this.handleEvent,n[2])}},mn.prototype._addDefaultHandlers=function(t){var e=this._map,r=e.getCanvasContainer();this._add("mapEvent",new Bi(e,t));var i=e.boxZoom=new Fi(e,t);this._add("boxZoom",i);var n=new Ni,o=new sn;e.doubleClickZoom=new an(o,n),this._add("tapZoom",n),this._add("clickZoom",o);var a=new ln;this._add("tapDragZoom",a);var s=e.touchPitch=new tn;this._add("touchPitch",s);var l=new Zi(t),u=new Gi(t);e.dragRotate=new cn(t,l,u),this._add("mouseRotate",l,["mousePitch"]),this._add("mousePitch",u,["mouseRotate"]);var c=new qi(t),p=new Xi(t);e.dragPan=new un(r,c,p),this._add("mousePan",c),this._add("touchPan",p,["touchZoom","touchRotate"]);var h=new Qi,f=new Ji;e.touchZoomRotate=new pn(r,f,h,a),this._add("touchRotate",h,["touchPan","touchZoom"]),this._add("touchZoom",f,["touchPan","touchRotate"]);var d=e.scrollZoom=new on(e,this);this._add("scrollZoom",d,["mousePan"]);var m=e.keyboard=new rn;this._add("keyboard",m),this._add("blockableMapEvent",new Ri(e));for(var y=0,g=["boxZoom","doubleClickZoom","tapDragZoom","touchPitch","dragRotate","dragPan","touchZoomRotate","scrollZoom","keyboard"];y<g.length;y+=1){var _=g[y];t.interactive&&t[_]&&e[_].enable(t[_])}},mn.prototype._add=function(t,e,r){this._handlers.push({handlerName:t,handler:e,allowed:r}),this._handlersById[t]=e},mn.prototype.stop=function(){if(!this._updatingCamera){for(var t=0,e=this._handlers;t<e.length;t+=1)e[t].handler.reset();this._inertia.clear(),this._fireEvents({},{}),this._changes=[]}},mn.prototype.isActive=function(){for(var t=0,e=this._handlers;t<e.length;t+=1)if(e[t].handler.isActive())return!0;return!1},mn.prototype.isZooming=function(){return!!this._eventsInProgress.zoom||this._map.scrollZoom.isZooming()},mn.prototype.isRotating=function(){return!!this._eventsInProgress.rotate},mn.prototype.isMoving=function(){return Boolean(hn(this._eventsInProgress))||this.isZooming()},mn.prototype._blockedByActive=function(t,e,r){for(var i in t)if(i!==r&&(!e||e.indexOf(i)<0))return!0;return!1},mn.prototype.handleWindowEvent=function(t){this.handleEvent(t,t.type+"Window")},mn.prototype._getMapTouches=function(t){for(var e=[],r=0,i=t;r<i.length;r+=1){var n=i[r];this._el.contains(n.target)&&e.push(n)}return e},mn.prototype.handleEvent=function(t,e){if("blur"!==t.type){this._updatingCamera=!0;for(var i="renderFrame"===t.type?void 0:t,n={needsRenderFrame:!1},o={},a={},s=t.touches?this._getMapTouches(t.touches):void 0,l=s?r.touchPos(this._el,s):r.mousePos(this._el,t),u=0,c=this._handlers;u<c.length;u+=1){var p=c[u],h=p.handlerName,f=p.handler,d=p.allowed;if(f.isEnabled()){var m=void 0;this._blockedByActive(a,d,h)?f.reset():f[e||t.type]&&(m=f[e||t.type](t,l,s),this.mergeHandlerResult(n,o,m,h,i),m&&m.needsRenderFrame&&this._triggerRenderFrame()),(m||f.isActive())&&(a[h]=f)}}var y={};for(var g in this._previousActiveHandlers)a[g]||(y[g]=i);this._previousActiveHandlers=a,(Object.keys(y).length||dn(n))&&(this._changes.push([n,o,y]),this._triggerRenderFrame()),(Object.keys(a).length||dn(n))&&this._map._stop(!0),this._updatingCamera=!1;var _=n.cameraAnimation;_&&(this._inertia.clear(),this._fireEvents({},{}),this._changes=[],_(this._map))}else this.stop()},mn.prototype.mergeHandlerResult=function(e,r,i,n,o){if(i){t.extend(e,i);var a={handlerName:n,originalEvent:i.originalEvent||o};void 0!==i.zoomDelta&&(r.zoom=a),void 0!==i.panDelta&&(r.drag=a),void 0!==i.pitchDelta&&(r.pitch=a),void 0!==i.bearingDelta&&(r.rotate=a)}},mn.prototype._applyChanges=function(){for(var e={},r={},i={},n=0,o=this._changes;n<o.length;n+=1){var a=o[n],s=a[0],l=a[1],u=a[2];s.panDelta&&(e.panDelta=(e.panDelta||new t.Point(0,0))._add(s.panDelta)),s.zoomDelta&&(e.zoomDelta=(e.zoomDelta||0)+s.zoomDelta),s.bearingDelta&&(e.bearingDelta=(e.bearingDelta||0)+s.bearingDelta),s.pitchDelta&&(e.pitchDelta=(e.pitchDelta||0)+s.pitchDelta),void 0!==s.around&&(e.around=s.around),void 0!==s.pinchAround&&(e.pinchAround=s.pinchAround),s.noInertia&&(e.noInertia=s.noInertia),t.extend(r,l),t.extend(i,u)}this._updateMapTransform(e,r,i),this._changes=[]},mn.prototype._updateMapTransform=function(t,e,r){var i=this._map,n=i.transform;if(!dn(t))return this._fireEvents(e,r);var o=t.panDelta,a=t.zoomDelta,s=t.bearingDelta,l=t.pitchDelta,u=t.around,c=t.pinchAround;void 0!==c&&(u=c),i._stop(!0),u=u||i.transform.centerPoint;var p=n.pointLocation(o?u.sub(o):u);s&&(n.bearing+=s),l&&(n.pitch+=l),a&&(n.zoom+=a),n.setLocationAtPoint(p,u),this._map._update(),t.noInertia||this._inertia.record(t),this._fireEvents(e,r)},mn.prototype._fireEvents=function(e,r){var i=this,n=hn(this._eventsInProgress),o=hn(e),a={};for(var s in e)this._eventsInProgress[s]||(a[s+"start"]=e[s].originalEvent),this._eventsInProgress[s]=e[s];for(var l in!n&&o&&this._fireEvent("movestart",o.originalEvent),a)this._fireEvent(l,a[l]);for(var u in e.rotate&&(this._bearingChanged=!0),o&&this._fireEvent("move",o.originalEvent),e)this._fireEvent(u,e[u].originalEvent);var c,p={};for(var h in this._eventsInProgress){var f=this._eventsInProgress[h],d=f.handlerName,m=f.originalEvent;this._handlersById[d].isActive()||(delete this._eventsInProgress[h],p[h+"end"]=c=r[d]||m)}for(var y in p)this._fireEvent(y,p[y]);var g=hn(this._eventsInProgress);if((n||o)&&!g){this._updatingCamera=!0;var _=this._inertia._onMoveEnd(this._map.dragPan._inertiaOptions),v=function(t){return 0!==t&&-i._bearingSnap<t&&t<i._bearingSnap};_?(v(_.bearing||this._map.getBearing())&&(_.bearing=0),this._map.easeTo(_,{originalEvent:c})):(this._map.fire(new t.Event("moveend",{originalEvent:c})),v(this._map.getBearing())&&this._map.resetNorth()),this._bearingChanged=!1,this._updatingCamera=!1}},mn.prototype._fireEvent=function(e,r){this._map.fire(new t.Event(e,r?{originalEvent:r}:{}))},mn.prototype._triggerRenderFrame=function(){var t=this;void 0===this._frameId&&(this._frameId=this._map._requestRenderFrame(function(e){delete t._frameId,t.handleEvent(new fn("renderFrame",{timeStamp:e})),t._applyChanges()}))};var yn=function(e){function r(r,i){e.call(this),this._moving=!1,this._zooming=!1,this.transform=r,this._bearingSnap=i.bearingSnap,t.bindAll(["_renderFrameCallback"],this)}return e&&(r.__proto__=e),(r.prototype=Object.create(e&&e.prototype)).constructor=r,r.prototype.getCenter=function(){return new t.LngLat(this.transform.center.lng,this.transform.center.lat)},r.prototype.setCenter=function(t,e){return this.jumpTo({center:t},e)},r.prototype.panBy=function(e,r,i){return e=t.Point.convert(e).mult(-1),this.panTo(this.transform.center,t.extend({offset:e},r),i)},r.prototype.panTo=function(e,r,i){return this.easeTo(t.extend({center:e},r),i)},r.prototype.getZoom=function(){return this.transform.zoom},r.prototype.setZoom=function(t,e){return this.jumpTo({zoom:t},e),this},r.prototype.zoomTo=function(e,r,i){return this.easeTo(t.extend({zoom:e},r),i)},r.prototype.zoomIn=function(t,e){return this.zoomTo(this.getZoom()+1,t,e),this},r.prototype.zoomOut=function(t,e){return this.zoomTo(this.getZoom()-1,t,e),this},r.prototype.getBearing=function(){return this.transform.bearing},r.prototype.setBearing=function(t,e){return this.jumpTo({bearing:t},e),this},r.prototype.getPadding=function(){return this.transform.padding},r.prototype.setPadding=function(t,e){return this.jumpTo({padding:t},e),this},r.prototype.rotateTo=function(e,r,i){return this.easeTo(t.extend({bearing:e},r),i)},r.prototype.resetNorth=function(e,r){return this.rotateTo(0,t.extend({duration:1e3},e),r),this},r.prototype.resetNorthPitch=function(e,r){return this.easeTo(t.extend({bearing:0,pitch:0,duration:1e3},e),r),this},r.prototype.snapToNorth=function(t,e){return Math.abs(this.getBearing())<this._bearingSnap?this.resetNorth(t,e):this},r.prototype.getPitch=function(){return this.transform.pitch},r.prototype.setPitch=function(t,e){return this.jumpTo({pitch:t},e),this},r.prototype.cameraForBounds=function(e,r){return e=t.LngLatBounds.convert(e),this._cameraForBoxAndBearing(e.getNorthWest(),e.getSouthEast(),0,r)},r.prototype._cameraForBoxAndBearing=function(e,r,i,n){var o={top:0,bottom:0,right:0,left:0};if("number"==typeof(n=t.extend({padding:o,offset:[0,0],maxZoom:this.transform.maxZoom},n)).padding){var a=n.padding;n.padding={top:a,bottom:a,right:a,left:a}}n.padding=t.extend(o,n.padding);var s=this.transform,l=s.padding,u=s.project(t.LngLat.convert(e)),c=s.project(t.LngLat.convert(r)),p=u.rotate(-i*Math.PI/180),h=c.rotate(-i*Math.PI/180),f=new t.Point(Math.max(p.x,h.x),Math.max(p.y,h.y)),d=new t.Point(Math.min(p.x,h.x),Math.min(p.y,h.y)),m=f.sub(d),y=(s.width-(l.left+l.right+n.padding.left+n.padding.right))/m.x,g=(s.height-(l.top+l.bottom+n.padding.top+n.padding.bottom))/m.y;if(!(g<0||y<0)){var _=Math.min(s.scaleZoom(s.scale*Math.min(y,g)),n.maxZoom),v=t.Point.convert(n.offset),x=new t.Point(v.x+(n.padding.left-n.padding.right)/2,v.y+(n.padding.top-n.padding.bottom)/2).mult(s.scale/s.zoomScale(_));return{center:s.unproject(u.add(c).div(2).sub(x)),zoom:_,bearing:i}}t.warnOnce("Map cannot fit within canvas with the given bounds, padding, and/or offset.")},r.prototype.fitBounds=function(t,e,r){return this._fitInternal(this.cameraForBounds(t,e),e,r)},r.prototype.fitScreenCoordinates=function(e,r,i,n,o){return this._fitInternal(this._cameraForBoxAndBearing(this.transform.pointLocation(t.Point.convert(e)),this.transform.pointLocation(t.Point.convert(r)),i,n),n,o)},r.prototype._fitInternal=function(e,r,i){return e?(delete(r=t.extend(e,r)).padding,r.linear?this.easeTo(r,i):this.flyTo(r,i)):this},r.prototype.jumpTo=function(e,r){this.stop();var i=this.transform,n=!1,o=!1,a=!1;return"zoom"in e&&i.zoom!==+e.zoom&&(n=!0,i.zoom=+e.zoom),void 0!==e.center&&(i.center=t.LngLat.convert(e.center)),"bearing"in e&&i.bearing!==+e.bearing&&(o=!0,i.bearing=+e.bearing),"pitch"in e&&i.pitch!==+e.pitch&&(a=!0,i.pitch=+e.pitch),null==e.padding||i.isPaddingEqual(e.padding)||(i.padding=e.padding),this.fire(new t.Event("movestart",r)).fire(new t.Event("move",r)),n&&this.fire(new t.Event("zoomstart",r)).fire(new t.Event("zoom",r)).fire(new t.Event("zoomend",r)),o&&this.fire(new t.Event("rotatestart",r)).fire(new t.Event("rotate",r)).fire(new t.Event("rotateend",r)),a&&this.fire(new t.Event("pitchstart",r)).fire(new t.Event("pitch",r)).fire(new t.Event("pitchend",r)),this.fire(new t.Event("moveend",r))},r.prototype.easeTo=function(e,r){var i=this;this._stop(!1,e.easeId),(!1===(e=t.extend({offset:[0,0],duration:500,easing:t.ease},e)).animate||!e.essential&&t.browser.prefersReducedMotion)&&(e.duration=0);var n=this.transform,o=this.getZoom(),a=this.getBearing(),s=this.getPitch(),l=this.getPadding(),u="zoom"in e?+e.zoom:o,c="bearing"in e?this._normalizeBearing(e.bearing,a):a,p="pitch"in e?+e.pitch:s,h="padding"in e?e.padding:n.padding,f=t.Point.convert(e.offset),d=n.centerPoint.add(f),m=n.pointLocation(d),y=t.LngLat.convert(e.center||m);this._normalizeCenter(y);var g,_,v=n.project(m),x=n.project(y).sub(v),b=n.zoomScale(u-o);e.around&&(g=t.LngLat.convert(e.around),_=n.locationPoint(g));var w={moving:this._moving,zooming:this._zooming,rotating:this._rotating,pitching:this._pitching};return this._zooming=this._zooming||u!==o,this._rotating=this._rotating||a!==c,this._pitching=this._pitching||p!==s,this._padding=!n.isPaddingEqual(h),this._easeId=e.easeId,this._prepareEase(r,e.noMoveStart,w),clearTimeout(this._easeEndTimeoutID),this._ease(function(e){if(i._zooming&&(n.zoom=t.number(o,u,e)),i._rotating&&(n.bearing=t.number(a,c,e)),i._pitching&&(n.pitch=t.number(s,p,e)),i._padding&&(n.interpolatePadding(l,h,e),d=n.centerPoint.add(f)),g)n.setLocationAtPoint(g,_);else{var m=n.zoomScale(n.zoom-o),y=u>o?Math.min(2,b):Math.max(.5,b),w=Math.pow(y,1-e),S=n.unproject(v.add(x.mult(e*w)).mult(m));n.setLocationAtPoint(n.renderWorldCopies?S.wrap():S,d)}i._fireMoveEvents(r)},function(t){i._afterEase(r,t)},e),this},r.prototype._prepareEase=function(e,r,i){void 0===i&&(i={}),this._moving=!0,r||i.moving||this.fire(new t.Event("movestart",e)),this._zooming&&!i.zooming&&this.fire(new t.Event("zoomstart",e)),this._rotating&&!i.rotating&&this.fire(new t.Event("rotatestart",e)),this._pitching&&!i.pitching&&this.fire(new t.Event("pitchstart",e))},r.prototype._fireMoveEvents=function(e){this.fire(new t.Event("move",e)),this._zooming&&this.fire(new t.Event("zoom",e)),this._rotating&&this.fire(new t.Event("rotate",e)),this._pitching&&this.fire(new t.Event("pitch",e))},r.prototype._afterEase=function(e,r){if(!this._easeId||!r||this._easeId!==r){delete this._easeId;var i=this._zooming,n=this._rotating,o=this._pitching;this._moving=!1,this._zooming=!1,this._rotating=!1,this._pitching=!1,this._padding=!1,i&&this.fire(new t.Event("zoomend",e)),n&&this.fire(new t.Event("rotateend",e)),o&&this.fire(new t.Event("pitchend",e)),this.fire(new t.Event("moveend",e))}},r.prototype.flyTo=function(e,r){var i=this;if(!e.essential&&t.browser.prefersReducedMotion){var n=t.pick(e,["center","zoom","bearing","pitch","around"]);return this.jumpTo(n,r)}this.stop(),e=t.extend({offset:[0,0],speed:1.2,curve:1.42,easing:t.ease},e);var o=this.transform,a=this.getZoom(),s=this.getBearing(),l=this.getPitch(),u=this.getPadding(),c="zoom"in e?t.clamp(+e.zoom,o.minZoom,o.maxZoom):a,p="bearing"in e?this._normalizeBearing(e.bearing,s):s,h="pitch"in e?+e.pitch:l,f="padding"in e?e.padding:o.padding,d=o.zoomScale(c-a),m=t.Point.convert(e.offset),y=o.centerPoint.add(m),g=o.pointLocation(y),_=t.LngLat.convert(e.center||g);this._normalizeCenter(_);var v=o.project(g),x=o.project(_).sub(v),b=e.curve,w=Math.max(o.width,o.height),S=w/d,T=x.mag();if("minZoom"in e){var I=t.clamp(Math.min(e.minZoom,a,c),o.minZoom,o.maxZoom),E=w/o.zoomScale(I-a);b=Math.sqrt(E/T*2)}var A=b*b;function z(t){var e=(S*S-w*w+(t?-1:1)*A*A*T*T)/(2*(t?S:w)*A*T);return Math.log(Math.sqrt(e*e+1)-e)}function P(t){return(Math.exp(t)-Math.exp(-t))/2}function C(t){return(Math.exp(t)+Math.exp(-t))/2}var k=z(0),M=function(t){return C(k)/C(k+b*t)},D=function(t){return w*((C(k)*(P(e=k+b*t)/C(e))-P(k))/A)/T;var e},L=(z(1)-k)/b;if(Math.abs(T)<1e-6||!isFinite(L)){if(Math.abs(w-S)<1e-6)return this.easeTo(e,r);var B=S<w?-1:1;L=Math.abs(Math.log(S/w))/b,D=function(){return 0},M=function(t){return Math.exp(B*b*t)}}return e.duration="duration"in e?+e.duration:1e3*L/("screenSpeed"in e?+e.screenSpeed/b:+e.speed),e.maxDuration&&e.duration>e.maxDuration&&(e.duration=0),this._zooming=!0,this._rotating=s!==p,this._pitching=h!==l,this._padding=!o.isPaddingEqual(f),this._prepareEase(r,!1),this._ease(function(e){var n=e*L,d=1/M(n);o.zoom=1===e?c:a+o.scaleZoom(d),i._rotating&&(o.bearing=t.number(s,p,e)),i._pitching&&(o.pitch=t.number(l,h,e)),i._padding&&(o.interpolatePadding(u,f,e),y=o.centerPoint.add(m));var g=1===e?_:o.unproject(v.add(x.mult(D(n))).mult(d));o.setLocationAtPoint(o.renderWorldCopies?g.wrap():g,y),i._fireMoveEvents(r)},function(){return i._afterEase(r)},e),this},r.prototype.isEasing=function(){return!!this._easeFrameId},r.prototype.stop=function(){return this._stop()},r.prototype._stop=function(t,e){if(this._easeFrameId&&(this._cancelRenderFrame(this._easeFrameId),delete this._easeFrameId,delete this._onEaseFrame),this._onEaseEnd){var r=this._onEaseEnd;delete this._onEaseEnd,r.call(this,e)}if(!t){var i=this.handlers;i&&i.stop()}return this},r.prototype._ease=function(e,r,i){!1===i.animate||0===i.duration?(e(1),r()):(this._easeStart=t.browser.now(),this._easeOptions=i,this._onEaseFrame=e,this._onEaseEnd=r,this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback))},r.prototype._renderFrameCallback=function(){var e=Math.min((t.browser.now()-this._easeStart)/this._easeOptions.duration,1);this._onEaseFrame(this._easeOptions.easing(e)),e<1?this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback):this.stop()},r.prototype._normalizeBearing=function(e,r){e=t.wrap(e,-180,180);var i=Math.abs(e-r);return Math.abs(e-360-r)<i&&(e-=360),Math.abs(e+360-r)<i&&(e+=360),e},r.prototype._normalizeCenter=function(t){var e=this.transform;if(e.renderWorldCopies&&!e.lngRange){var r=t.lng-e.center.lng;t.lng+=r>180?-360:r<-180?360:0}},r}(t.Evented),gn=function(e){void 0===e&&(e={}),this.options=e,t.bindAll(["_updateEditLink","_updateData","_updateCompact"],this)};gn.prototype.getDefaultPosition=function(){return"bottom-right"},gn.prototype.onAdd=function(t){var e=this.options&&this.options.compact;return this._map=t,this._container=r.create("div","mapboxgl-ctrl mapboxgl-ctrl-attrib"),this._innerContainer=r.create("div","mapboxgl-ctrl-attrib-inner",this._container),e&&this._container.classList.add("mapboxgl-compact"),this._updateAttributions(),this._updateEditLink(),this._map.on("styledata",this._updateData),this._map.on("sourcedata",this._updateData),this._map.on("moveend",this._updateEditLink),void 0===e&&(this._map.on("resize",this._updateCompact),this._updateCompact()),this._container},gn.prototype.onRemove=function(){r.remove(this._container),this._map.off("styledata",this._updateData),this._map.off("sourcedata",this._updateData),this._map.off("moveend",this._updateEditLink),this._map.off("resize",this._updateCompact),this._map=void 0,this._attribHTML=void 0},gn.prototype._updateEditLink=function(){var e=this._editLink;e||(e=this._editLink=this._container.querySelector(".mapbox-improve-map"));var r=[{key:"owner",value:this.styleOwner},{key:"id",value:this.styleId},{key:"access_token",value:this._map._requestManager._customAccessToken||t.config.ACCESS_TOKEN}];if(e){var i=r.reduce(function(t,e,i){return e.value&&(t+=e.key+"="+e.value+(i<r.length-1?"&":"")),t},"?");e.href=t.config.FEEDBACK_URL+"/"+i+(this._map._hash?this._map._hash.getHashString(!0):""),e.rel="noopener nofollow"}},gn.prototype._updateData=function(t){!t||"metadata"!==t.sourceDataType&&"style"!==t.dataType||(this._updateAttributions(),this._updateEditLink())},gn.prototype._updateAttributions=function(){if(this._map.style){var t=[];if(this.options.customAttribution&&(Array.isArray(this.options.customAttribution)?t=t.concat(this.options.customAttribution.map(function(t){return"string"!=typeof t?"":t})):"string"==typeof this.options.customAttribution&&t.push(this.options.customAttribution)),this._map.style.stylesheet){var e=this._map.style.stylesheet;this.styleOwner=e.owner,this.styleId=e.id}var r=this._map.style.sourceCaches;for(var i in r){var n=r[i];if(n.used){var o=n.getSource();o.attribution&&t.indexOf(o.attribution)<0&&t.push(o.attribution)}}t.sort(function(t,e){return t.length-e.length});var a=(t=t.filter(function(e,r){for(var i=r+1;i<t.length;i++)if(t[i].indexOf(e)>=0)return!1;return!0})).join(" | ");a!==this._attribHTML&&(this._attribHTML=a,t.length?(this._innerContainer.innerHTML=a,this._container.classList.remove("mapboxgl-attrib-empty")):this._container.classList.add("mapboxgl-attrib-empty"),this._editLink=null)}},gn.prototype._updateCompact=function(){this._map.getCanvasContainer().offsetWidth<=640?this._container.classList.add("mapboxgl-compact"):this._container.classList.remove("mapboxgl-compact")};var _n=function(){t.bindAll(["_updateLogo"],this),t.bindAll(["_updateCompact"],this)};_n.prototype.onAdd=function(t){this._map=t,this._container=r.create("div","mapboxgl-ctrl");var e=r.create("a","mapboxgl-ctrl-logo");return e.target="_blank",e.rel="noopener nofollow",e.href="https://www.mapbox.com/",e.setAttribute("aria-label",this._map._getUIString("LogoControl.Title")),e.setAttribute("rel","noopener nofollow"),this._container.appendChild(e),this._container.style.display="none",this._map.on("sourcedata",this._updateLogo),this._updateLogo(),this._map.on("resize",this._updateCompact),this._updateCompact(),this._container},_n.prototype.onRemove=function(){r.remove(this._container),this._map.off("sourcedata",this._updateLogo),this._map.off("resize",this._updateCompact)},_n.prototype.getDefaultPosition=function(){return"bottom-left"},_n.prototype._updateLogo=function(t){t&&"metadata"!==t.sourceDataType||(this._container.style.display=this._logoRequired()?"block":"none")},_n.prototype._logoRequired=function(){if(this._map.style){var t=this._map.style.sourceCaches;for(var e in t)if(t[e].getSource().mapbox_logo)return!0;return!1}},_n.prototype._updateCompact=function(){var t=this._container.children;if(t.length){var e=t[0];this._map.getCanvasContainer().offsetWidth<250?e.classList.add("mapboxgl-compact"):e.classList.remove("mapboxgl-compact")}};var vn=function(){this._queue=[],this._id=0,this._cleared=!1,this._currentlyRunning=!1};vn.prototype.add=function(t){var e=++this._id;return this._queue.push({callback:t,id:e,cancelled:!1}),e},vn.prototype.remove=function(t){for(var e=this._currentlyRunning,r=0,i=e?this._queue.concat(e):this._queue;r<i.length;r+=1){var n=i[r];if(n.id===t)return void(n.cancelled=!0)}},vn.prototype.run=function(t){void 0===t&&(t=0);var e=this._currentlyRunning=this._queue;this._queue=[];for(var r=0,i=e;r<i.length;r+=1){var n=i[r];if(!n.cancelled&&(n.callback(t),this._cleared))break}this._cleared=!1,this._currentlyRunning=!1},vn.prototype.clear=function(){this._currentlyRunning&&(this._cleared=!0),this._queue=[]};var xn={"FullscreenControl.Enter":"Enter fullscreen","FullscreenControl.Exit":"Exit fullscreen","GeolocateControl.FindMyLocation":"Find my location","GeolocateControl.LocationNotAvailable":"Location not available","LogoControl.Title":"Mapbox logo","NavigationControl.ResetBearing":"Reset bearing to north","NavigationControl.ZoomIn":"Zoom in","NavigationControl.ZoomOut":"Zoom out","ScaleControl.Feet":"ft","ScaleControl.Meters":"m","ScaleControl.Kilometers":"km","ScaleControl.Miles":"mi","ScaleControl.NauticalMiles":"nm"},bn=t.window.HTMLImageElement,wn=t.window.HTMLElement,Sn=t.window.ImageBitmap,Tn={center:[0,0],zoom:0,bearing:0,pitch:0,minZoom:-2,maxZoom:22,minPitch:0,maxPitch:60,interactive:!0,scrollZoom:!0,boxZoom:!0,dragRotate:!0,dragPan:!0,keyboard:!0,doubleClickZoom:!0,touchZoomRotate:!0,touchPitch:!0,bearingSnap:7,clickTolerance:3,pitchWithRotate:!0,hash:!1,attributionControl:!0,failIfMajorPerformanceCaveat:!1,preserveDrawingBuffer:!1,trackResize:!0,renderWorldCopies:!0,refreshExpiredTiles:!0,maxTileCacheSize:null,localIdeographFontFamily:"sans-serif",transformRequest:null,accessToken:null,fadeDuration:300,crossSourceCollisions:!0},In=function(i){function n(e){var r=this;if(null!=(e=t.extend({},Tn,e)).minZoom&&null!=e.maxZoom&&e.minZoom>e.maxZoom)throw new Error("maxZoom must be greater than or equal to minZoom");if(null!=e.minPitch&&null!=e.maxPitch&&e.minPitch>e.maxPitch)throw new Error("maxPitch must be greater than or equal to minPitch");if(null!=e.minPitch&&e.minPitch<0)throw new Error("minPitch must be greater than or equal to 0");if(null!=e.maxPitch&&e.maxPitch>60)throw new Error("maxPitch must be less than or equal to 60");var n=new bi(e.minZoom,e.maxZoom,e.minPitch,e.maxPitch,e.renderWorldCopies);if(i.call(this,n,e),this._interactive=e.interactive,this._maxTileCacheSize=e.maxTileCacheSize,this._failIfMajorPerformanceCaveat=e.failIfMajorPerformanceCaveat,this._preserveDrawingBuffer=e.preserveDrawingBuffer,this._antialias=e.antialias,this._trackResize=e.trackResize,this._bearingSnap=e.bearingSnap,this._refreshExpiredTiles=e.refreshExpiredTiles,this._fadeDuration=e.fadeDuration,this._crossSourceCollisions=e.crossSourceCollisions,this._crossFadingFactor=1,this._collectResourceTiming=e.collectResourceTiming,this._renderTaskQueue=new vn,this._controls=[],this._mapId=t.uniqueId(),this._locale=t.extend({},xn,e.locale),this._requestManager=new t.RequestManager(e.transformRequest,e.accessToken),"string"==typeof e.container){if(this._container=t.window.document.getElementById(e.container),!this._container)throw new Error("Container '"+e.container+"' not found.")}else{if(!(e.container instanceof wn))throw new Error("Invalid type: 'container' must be a String or HTMLElement.");this._container=e.container}if(e.maxBounds&&this.setMaxBounds(e.maxBounds),t.bindAll(["_onWindowOnline","_onWindowResize","_contextLost","_contextRestored"],this),this._setupContainer(),this._setupPainter(),void 0===this.painter)throw new Error("Failed to initialize WebGL.");this.on("move",function(){return r._update(!1)}),this.on("moveend",function(){return r._update(!1)}),this.on("zoom",function(){return r._update(!0)}),void 0!==t.window&&(t.window.addEventListener("online",this._onWindowOnline,!1),t.window.addEventListener("resize",this._onWindowResize,!1)),this.handlers=new mn(this,e),this._hash=e.hash&&new Si("string"==typeof e.hash&&e.hash||void 0).addTo(this),this._hash&&this._hash._onHashChange()||(this.jumpTo({center:e.center,zoom:e.zoom,bearing:e.bearing,pitch:e.pitch}),e.bounds&&(this.resize(),this.fitBounds(e.bounds,t.extend({},e.fitBoundsOptions,{duration:0})))),this.resize(),this._localIdeographFontFamily=e.localIdeographFontFamily,e.style&&this.setStyle(e.style,{localIdeographFontFamily:e.localIdeographFontFamily}),e.attributionControl&&this.addControl(new gn({customAttribution:e.customAttribution})),this.addControl(new _n,e.logoPosition),this.on("style.load",function(){r.transform.unmodified&&r.jumpTo(r.style.stylesheet)}),this.on("data",function(e){r._update("style"===e.dataType),r.fire(new t.Event(e.dataType+"data",e))}),this.on("dataloading",function(e){r.fire(new t.Event(e.dataType+"dataloading",e))})}i&&(n.__proto__=i),(n.prototype=Object.create(i&&i.prototype)).constructor=n;var o={showTileBoundaries:{configurable:!0},showPadding:{configurable:!0},showCollisionBoxes:{configurable:!0},showOverdrawInspector:{configurable:!0},repaint:{configurable:!0},vertices:{configurable:!0},version:{configurable:!0}};return n.prototype._getMapId=function(){return this._mapId},n.prototype.addControl=function(e,r){if(void 0===r&&e.getDefaultPosition&&(r=e.getDefaultPosition()),void 0===r&&(r="top-right"),!e||!e.onAdd)return this.fire(new t.ErrorEvent(new Error("Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.")));var i=e.onAdd(this);this._controls.push(e);var n=this._controlPositions[r];return-1!==r.indexOf("bottom")?n.insertBefore(i,n.firstChild):n.appendChild(i),this},n.prototype.removeControl=function(e){if(!e||!e.onRemove)return this.fire(new t.ErrorEvent(new Error("Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.")));var r=this._controls.indexOf(e);return r>-1&&this._controls.splice(r,1),e.onRemove(this),this},n.prototype.resize=function(e){var r=this._containerDimensions(),i=r[0],n=r[1];this._resizeCanvas(i,n),this.transform.resize(i,n),this.painter.resize(i,n);var o=!this._moving;return o&&(this.stop(),this.fire(new t.Event("movestart",e)).fire(new t.Event("move",e))),this.fire(new t.Event("resize",e)),o&&this.fire(new t.Event("moveend",e)),this},n.prototype.getBounds=function(){return this.transform.getBounds()},n.prototype.getMaxBounds=function(){return this.transform.getMaxBounds()},n.prototype.setMaxBounds=function(e){return this.transform.setMaxBounds(t.LngLatBounds.convert(e)),this._update()},n.prototype.setMinZoom=function(t){if((t=null==t?-2:t)>=-2&&t<=this.transform.maxZoom)return this.transform.minZoom=t,this._update(),this.getZoom()<t&&this.setZoom(t),this;throw new Error("minZoom must be between -2 and the current maxZoom, inclusive")},n.prototype.getMinZoom=function(){return this.transform.minZoom},n.prototype.setMaxZoom=function(t){if((t=null==t?22:t)>=this.transform.minZoom)return this.transform.maxZoom=t,this._update(),this.getZoom()>t&&this.setZoom(t),this;throw new Error("maxZoom must be greater than the current minZoom")},n.prototype.getMaxZoom=function(){return this.transform.maxZoom},n.prototype.setMinPitch=function(t){if((t=null==t?0:t)<0)throw new Error("minPitch must be greater than or equal to 0");if(t>=0&&t<=this.transform.maxPitch)return this.transform.minPitch=t,this._update(),this.getPitch()<t&&this.setPitch(t),this;throw new Error("minPitch must be between 0 and the current maxPitch, inclusive")},n.prototype.getMinPitch=function(){return this.transform.minPitch},n.prototype.setMaxPitch=function(t){if((t=null==t?60:t)>60)throw new Error("maxPitch must be less than or equal to 60");if(t>=this.transform.minPitch)return this.transform.maxPitch=t,this._update(),this.getPitch()>t&&this.setPitch(t),this;throw new Error("maxPitch must be greater than the current minPitch")},n.prototype.getMaxPitch=function(){return this.transform.maxPitch},n.prototype.getRenderWorldCopies=function(){return this.transform.renderWorldCopies},n.prototype.setRenderWorldCopies=function(t){return this.transform.renderWorldCopies=t,this._update()},n.prototype.project=function(e){return this.transform.locationPoint(t.LngLat.convert(e))},n.prototype.unproject=function(e){return this.transform.pointLocation(t.Point.convert(e))},n.prototype.isMoving=function(){return this._moving||this.handlers.isMoving()},n.prototype.isZooming=function(){return this._zooming||this.handlers.isZooming()},n.prototype.isRotating=function(){return this._rotating||this.handlers.isRotating()},n.prototype._createDelegatedListener=function(t,e,r){var i,n=this;if("mouseenter"===t||"mouseover"===t){var o=!1;return{layer:e,listener:r,delegates:{mousemove:function(i){var a=n.getLayer(e)?n.queryRenderedFeatures(i.point,{layers:[e]}):[];a.length?o||(o=!0,r.call(n,new Mi(t,n,i.originalEvent,{features:a}))):o=!1},mouseout:function(){o=!1}}}}if("mouseleave"===t||"mouseout"===t){var a=!1;return{layer:e,listener:r,delegates:{mousemove:function(i){(n.getLayer(e)?n.queryRenderedFeatures(i.point,{layers:[e]}):[]).length?a=!0:a&&(a=!1,r.call(n,new Mi(t,n,i.originalEvent)))},mouseout:function(e){a&&(a=!1,r.call(n,new Mi(t,n,e.originalEvent)))}}}}return{layer:e,listener:r,delegates:(i={},i[t]=function(t){var i=n.getLayer(e)?n.queryRenderedFeatures(t.point,{layers:[e]}):[];i.length&&(t.features=i,r.call(n,t),delete t.features)},i)}},n.prototype.on=function(t,e,r){if(void 0===r)return i.prototype.on.call(this,t,e);var n=this._createDelegatedListener(t,e,r);for(var o in this._delegatedListeners=this._delegatedListeners||{},this._delegatedListeners[t]=this._delegatedListeners[t]||[],this._delegatedListeners[t].push(n),n.delegates)this.on(o,n.delegates[o]);return this},n.prototype.once=function(t,e,r){if(void 0===r)return i.prototype.once.call(this,t,e);var n=this._createDelegatedListener(t,e,r);for(var o in n.delegates)this.once(o,n.delegates[o]);return this},n.prototype.off=function(t,e,r){var n=this;return void 0===r?i.prototype.off.call(this,t,e):(this._delegatedListeners&&this._delegatedListeners[t]&&function(i){for(var o=i[t],a=0;a<o.length;a++){var s=o[a];if(s.layer===e&&s.listener===r){for(var l in s.delegates)n.off(l,s.delegates[l]);return o.splice(a,1),n}}}(this._delegatedListeners),this)},n.prototype.queryRenderedFeatures=function(e,r){if(!this.style)return[];var i;if(void 0!==r||void 0===e||e instanceof t.Point||Array.isArray(e)||(r=e,e=void 0),r=r||{},(e=e||[[0,0],[this.transform.width,this.transform.height]])instanceof t.Point||"number"==typeof e[0])i=[t.Point.convert(e)];else{var n=t.Point.convert(e[0]),o=t.Point.convert(e[1]);i=[n,new t.Point(o.x,n.y),o,new t.Point(n.x,o.y),n]}return this.style.queryRenderedFeatures(i,r,this.transform)},n.prototype.querySourceFeatures=function(t,e){return this.style.querySourceFeatures(t,e)},n.prototype.setStyle=function(e,r){return!1!==(r=t.extend({},{localIdeographFontFamily:this._localIdeographFontFamily},r)).diff&&r.localIdeographFontFamily===this._localIdeographFontFamily&&this.style&&e?(this._diffStyle(e,r),this):(this._localIdeographFontFamily=r.localIdeographFontFamily,this._updateStyle(e,r))},n.prototype._getUIString=function(t){var e=this._locale[t];if(null==e)throw new Error("Missing UI string '"+t+"'");return e},n.prototype._updateStyle=function(t,e){return this.style&&(this.style.setEventedParent(null),this.style._remove()),t?(this.style=new qe(this,e||{}),this.style.setEventedParent(this,{style:this.style}),"string"==typeof t?this.style.loadURL(t):this.style.loadJSON(t),this):(delete this.style,this)},n.prototype._lazyInitEmptyStyle=function(){this.style||(this.style=new qe(this,{}),this.style.setEventedParent(this,{style:this.style}),this.style.loadEmpty())},n.prototype._diffStyle=function(e,r){var i=this;if("string"==typeof e){var n=this._requestManager.normalizeStyleURL(e),o=this._requestManager.transformRequest(n,t.ResourceType.Style);t.getJSON(o,function(e,n){e?i.fire(new t.ErrorEvent(e)):n&&i._updateDiff(n,r)})}else"object"==typeof e&&this._updateDiff(e,r)},n.prototype._updateDiff=function(e,r){try{this.style.setState(e)&&this._update(!0)}catch(i){t.warnOnce("Unable to perform style diff: "+(i.message||i.error||i)+". Rebuilding the style from scratch."),this._updateStyle(e,r)}},n.prototype.getStyle=function(){if(this.style)return this.style.serialize()},n.prototype.isStyleLoaded=function(){return this.style?this.style.loaded():t.warnOnce("There is no style added to the map.")},n.prototype.addSource=function(t,e){return this._lazyInitEmptyStyle(),this.style.addSource(t,e),this._update(!0)},n.prototype.isSourceLoaded=function(e){var r=this.style&&this.style.sourceCaches[e];if(void 0!==r)return r.loaded();this.fire(new t.ErrorEvent(new Error("There is no source with ID '"+e+"'")))},n.prototype.areTilesLoaded=function(){var t=this.style&&this.style.sourceCaches;for(var e in t){var r=t[e]._tiles;for(var i in r){var n=r[i];if("loaded"!==n.state&&"errored"!==n.state)return!1}}return!0},n.prototype.addSourceType=function(t,e,r){return this._lazyInitEmptyStyle(),this.style.addSourceType(t,e,r)},n.prototype.removeSource=function(t){return this.style.removeSource(t),this._update(!0)},n.prototype.getSource=function(t){return this.style.getSource(t)},n.prototype.addImage=function(e,r,i){void 0===i&&(i={});var n=i.pixelRatio;void 0===n&&(n=1);var o=i.sdf;void 0===o&&(o=!1);var a=i.stretchX,s=i.stretchY,l=i.content;if(this._lazyInitEmptyStyle(),r instanceof bn||Sn&&r instanceof Sn){var u=t.browser.getImageData(r);this.style.addImage(e,{data:new t.RGBAImage({width:u.width,height:u.height},u.data),pixelRatio:n,stretchX:a,stretchY:s,content:l,sdf:o,version:0})}else{if(void 0===r.width||void 0===r.height)return this.fire(new t.ErrorEvent(new Error("Invalid arguments to map.addImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`")));var c=r;this.style.addImage(e,{data:new t.RGBAImage({width:r.width,height:r.height},new Uint8Array(r.data)),pixelRatio:n,stretchX:a,stretchY:s,content:l,sdf:o,version:0,userImage:c}),c.onAdd&&c.onAdd(this,e)}},n.prototype.updateImage=function(e,r){var i=this.style.getImage(e);if(!i)return this.fire(new t.ErrorEvent(new Error("The map has no image with that id. If you are adding a new image use `map.addImage(...)` instead.")));var n=r instanceof bn||Sn&&r instanceof Sn?t.browser.getImageData(r):r,o=n.width,a=n.height,s=n.data;return void 0===o||void 0===a?this.fire(new t.ErrorEvent(new Error("Invalid arguments to map.updateImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`"))):o!==i.data.width||a!==i.data.height?this.fire(new t.ErrorEvent(new Error("The width and height of the updated image must be that same as the previous version of the image"))):(i.data.replace(s,!(r instanceof bn||Sn&&r instanceof Sn)),void this.style.updateImage(e,i))},n.prototype.hasImage=function(e){return e?!!this.style.getImage(e):(this.fire(new t.ErrorEvent(new Error("Missing required image id"))),!1)},n.prototype.removeImage=function(t){this.style.removeImage(t)},n.prototype.loadImage=function(e,r){t.getImage(this._requestManager.transformRequest(e,t.ResourceType.Image),r)},n.prototype.listImages=function(){return this.style.listImages()},n.prototype.addLayer=function(t,e){return this._lazyInitEmptyStyle(),this.style.addLayer(t,e),this._update(!0)},n.prototype.moveLayer=function(t,e){return this.style.moveLayer(t,e),this._update(!0)},n.prototype.removeLayer=function(t){return this.style.removeLayer(t),this._update(!0)},n.prototype.getLayer=function(t){return this.style.getLayer(t)},n.prototype.setLayerZoomRange=function(t,e,r){return this.style.setLayerZoomRange(t,e,r),this._update(!0)},n.prototype.setFilter=function(t,e,r){return void 0===r&&(r={}),this.style.setFilter(t,e,r),this._update(!0)},n.prototype.getFilter=function(t){return this.style.getFilter(t)},n.prototype.setPaintProperty=function(t,e,r,i){return void 0===i&&(i={}),this.style.setPaintProperty(t,e,r,i),this._update(!0)},n.prototype.getPaintProperty=function(t,e){return this.style.getPaintProperty(t,e)},n.prototype.setLayoutProperty=function(t,e,r,i){return void 0===i&&(i={}),this.style.setLayoutProperty(t,e,r,i),this._update(!0)},n.prototype.getLayoutProperty=function(t,e){return this.style.getLayoutProperty(t,e)},n.prototype.setLight=function(t,e){return void 0===e&&(e={}),this._lazyInitEmptyStyle(),this.style.setLight(t,e),this._update(!0)},n.prototype.getLight=function(){return this.style.getLight()},n.prototype.setFeatureState=function(t,e){return this.style.setFeatureState(t,e),this._update()},n.prototype.removeFeatureState=function(t,e){return this.style.removeFeatureState(t,e),this._update()},n.prototype.getFeatureState=function(t){return this.style.getFeatureState(t)},n.prototype.getContainer=function(){return this._container},n.prototype.getCanvasContainer=function(){return this._canvasContainer},n.prototype.getCanvas=function(){return this._canvas},n.prototype._containerDimensions=function(){var t=0,e=0;return this._container&&(t=this._container.clientWidth||400,e=this._container.clientHeight||300),[t,e]},n.prototype._detectMissingCSS=function(){"rgb(250, 128, 114)"!==t.window.getComputedStyle(this._missingCSSCanary).getPropertyValue("background-color")&&t.warnOnce("This page appears to be missing CSS declarations for Mapbox GL JS, which may cause the map to display incorrectly. Please ensure your page includes mapbox-gl.css, as described in https://www.mapbox.com/mapbox-gl-js/api/.")},n.prototype._setupContainer=function(){var t=this._container;t.classList.add("mapboxgl-map"),(this._missingCSSCanary=r.create("div","mapboxgl-canary",t)).style.visibility="hidden",this._detectMissingCSS();var e=this._canvasContainer=r.create("div","mapboxgl-canvas-container",t);this._interactive&&e.classList.add("mapboxgl-interactive"),this._canvas=r.create("canvas","mapboxgl-canvas",e),this._canvas.addEventListener("webglcontextlost",this._contextLost,!1),this._canvas.addEventListener("webglcontextrestored",this._contextRestored,!1),this._canvas.setAttribute("tabindex","0"),this._canvas.setAttribute("aria-label","Map");var i=this._containerDimensions();this._resizeCanvas(i[0],i[1]);var n=this._controlContainer=r.create("div","mapboxgl-control-container",t),o=this._controlPositions={};["top-left","top-right","bottom-left","bottom-right"].forEach(function(t){o[t]=r.create("div","mapboxgl-ctrl-"+t,n)})},n.prototype._resizeCanvas=function(e,r){var i=t.browser.devicePixelRatio||1;this._canvas.width=i*e,this._canvas.height=i*r,this._canvas.style.width=e+"px",this._canvas.style.height=r+"px"},n.prototype._setupPainter=function(){var r=t.extend({},e.webGLContextAttributes,{failIfMajorPerformanceCaveat:this._failIfMajorPerformanceCaveat,preserveDrawingBuffer:this._preserveDrawingBuffer,antialias:this._antialias||!1}),i=this._canvas.getContext("webgl",r)||this._canvas.getContext("experimental-webgl",r);i?(this.painter=new gi(i,this.transform),t.webpSupported.testSupport(i)):this.fire(new t.ErrorEvent(new Error("Failed to initialize WebGL")))},n.prototype._contextLost=function(e){e.preventDefault(),this._frame&&(this._frame.cancel(),this._frame=null),this.fire(new t.Event("webglcontextlost",{originalEvent:e}))},n.prototype._contextRestored=function(e){this._setupPainter(),this.resize(),this._update(),this.fire(new t.Event("webglcontextrestored",{originalEvent:e}))},n.prototype.loaded=function(){return!this._styleDirty&&!this._sourcesDirty&&!!this.style&&this.style.loaded()},n.prototype._update=function(t){return this.style?(this._styleDirty=this._styleDirty||t,this._sourcesDirty=!0,this.triggerRepaint(),this):this},n.prototype._requestRenderFrame=function(t){return this._update(),this._renderTaskQueue.add(t)},n.prototype._cancelRenderFrame=function(t){this._renderTaskQueue.remove(t)},n.prototype._render=function(e){var r,i=this,n=0,o=this.painter.context.extTimerQuery;if(this.listens("gpu-timing-frame")&&(r=o.createQueryEXT(),o.beginQueryEXT(o.TIME_ELAPSED_EXT,r),n=t.browser.now()),this.painter.context.setDirty(),this.painter.setBaseState(),this._renderTaskQueue.run(e),!this._removed){var a=!1;if(this.style&&this._styleDirty){this._styleDirty=!1;var s=this.transform.zoom,l=t.browser.now();this.style.zoomHistory.update(s,l);var u=new t.EvaluationParameters(s,{now:l,fadeDuration:this._fadeDuration,zoomHistory:this.style.zoomHistory,transition:this.style.getTransition()}),c=u.crossFadingFactor();1===c&&c===this._crossFadingFactor||(a=!0,this._crossFadingFactor=c),this.style.update(u)}if(this.style&&this._sourcesDirty&&(this._sourcesDirty=!1,this.style._updateSources(this.transform)),this._placementDirty=this.style&&this.style._updatePlacement(this.painter.transform,this.showCollisionBoxes,this._fadeDuration,this._crossSourceCollisions),this.painter.render(this.style,{showTileBoundaries:this.showTileBoundaries,showOverdrawInspector:this._showOverdrawInspector,rotating:this.isRotating(),zooming:this.isZooming(),moving:this.isMoving(),fadeDuration:this._fadeDuration,showPadding:this.showPadding,gpuTiming:!!this.listens("gpu-timing-layer")}),this.fire(new t.Event("render")),this.loaded()&&!this._loaded&&(this._loaded=!0,this.fire(new t.Event("load"))),this.style&&(this.style.hasTransitions()||a)&&(this._styleDirty=!0),this.style&&!this._placementDirty&&this.style._releaseSymbolFadeTiles(),this.listens("gpu-timing-frame")){var p=t.browser.now()-n;o.endQueryEXT(o.TIME_ELAPSED_EXT,r),setTimeout(function(){var e=o.getQueryObjectEXT(r,o.QUERY_RESULT_EXT)/1e6;o.deleteQueryEXT(r),i.fire(new t.Event("gpu-timing-frame",{cpuTime:p,gpuTime:e}))},50)}if(this.listens("gpu-timing-layer")){var h=this.painter.collectGpuTimers();setTimeout(function(){var e=i.painter.queryGpuTimers(h);i.fire(new t.Event("gpu-timing-layer",{layerTimes:e}))},50)}return this._sourcesDirty||this._styleDirty||this._placementDirty||this._repaint?this.triggerRepaint():!this.isMoving()&&this.loaded()&&(this._fullyLoaded||(this._fullyLoaded=!0),this.fire(new t.Event("idle"))),this}},n.prototype.remove=function(){this._hash&&this._hash.remove();for(var e=0,r=this._controls;e<r.length;e+=1)r[e].onRemove(this);this._controls=[],this._frame&&(this._frame.cancel(),this._frame=null),this._renderTaskQueue.clear(),this.painter.destroy(),this.handlers.destroy(),delete this.handlers,this.setStyle(null),void 0!==t.window&&(t.window.removeEventListener("resize",this._onWindowResize,!1),t.window.removeEventListener("online",this._onWindowOnline,!1));var i=this.painter.context.gl.getExtension("WEBGL_lose_context");i&&i.loseContext(),En(this._canvasContainer),En(this._controlContainer),En(this._missingCSSCanary),this._container.classList.remove("mapboxgl-map"),this._removed=!0,this.fire(new t.Event("remove"))},n.prototype.triggerRepaint=function(){var e=this;this.style&&!this._frame&&(this._frame=t.browser.frame(function(t){e._frame=null,e._render(t)}))},n.prototype._onWindowOnline=function(){this._update()},n.prototype._onWindowResize=function(t){this._trackResize&&this.resize({originalEvent:t})._update()},o.showTileBoundaries.get=function(){return!!this._showTileBoundaries},o.showTileBoundaries.set=function(t){this._showTileBoundaries!==t&&(this._showTileBoundaries=t,this._update())},o.showPadding.get=function(){return!!this._showPadding},o.showPadding.set=function(t){this._showPadding!==t&&(this._showPadding=t,this._update())},o.showCollisionBoxes.get=function(){return!!this._showCollisionBoxes},o.showCollisionBoxes.set=function(t){this._showCollisionBoxes!==t&&(this._showCollisionBoxes=t,t?this.style._generateCollisionBoxes():this._update())},o.showOverdrawInspector.get=function(){return!!this._showOverdrawInspector},o.showOverdrawInspector.set=function(t){this._showOverdrawInspector!==t&&(this._showOverdrawInspector=t,this._update())},o.repaint.get=function(){return!!this._repaint},o.repaint.set=function(t){this._repaint!==t&&(this._repaint=t,this.triggerRepaint())},o.vertices.get=function(){return!!this._vertices},o.vertices.set=function(t){this._vertices=t,this._update()},n.prototype._setCacheLimits=function(e,r){t.setCacheLimits(e,r)},o.version.get=function(){return t.version},Object.defineProperties(n.prototype,o),n}(yn);function En(t){t.parentNode&&t.parentNode.removeChild(t)}var An={showCompass:!0,showZoom:!0,visualizePitch:!1},zn=function(e){var i=this;this.options=t.extend({},An,e),this._container=r.create("div","mapboxgl-ctrl mapboxgl-ctrl-group"),this._container.addEventListener("contextmenu",function(t){return t.preventDefault()}),this.options.showZoom&&(t.bindAll(["_setButtonTitle","_updateZoomButtons"],this),this._zoomInButton=this._createButton("mapboxgl-ctrl-zoom-in",function(t){return i._map.zoomIn({},{originalEvent:t})}),r.create("span","mapboxgl-ctrl-icon",this._zoomInButton).setAttribute("aria-hidden",!0),this._zoomOutButton=this._createButton("mapboxgl-ctrl-zoom-out",function(t){return i._map.zoomOut({},{originalEvent:t})}),r.create("span","mapboxgl-ctrl-icon",this._zoomOutButton).setAttribute("aria-hidden",!0)),this.options.showCompass&&(t.bindAll(["_rotateCompassArrow"],this),this._compass=this._createButton("mapboxgl-ctrl-compass",function(t){i.options.visualizePitch?i._map.resetNorthPitch({},{originalEvent:t}):i._map.resetNorth({},{originalEvent:t})}),this._compassIcon=r.create("span","mapboxgl-ctrl-icon",this._compass),this._compassIcon.setAttribute("aria-hidden",!0))};zn.prototype._updateZoomButtons=function(){var t=this._map.getZoom();this._zoomInButton.disabled=t===this._map.getMaxZoom(),this._zoomOutButton.disabled=t===this._map.getMinZoom()},zn.prototype._rotateCompassArrow=function(){var t=this.options.visualizePitch?"scale("+1/Math.pow(Math.cos(this._map.transform.pitch*(Math.PI/180)),.5)+") rotateX("+this._map.transform.pitch+"deg) rotateZ("+this._map.transform.angle*(180/Math.PI)+"deg)":"rotate("+this._map.transform.angle*(180/Math.PI)+"deg)";this._compassIcon.style.transform=t},zn.prototype.onAdd=function(t){return this._map=t,this.options.showZoom&&(this._setButtonTitle(this._zoomInButton,"ZoomIn"),this._setButtonTitle(this._zoomOutButton,"ZoomOut"),this._map.on("zoom",this._updateZoomButtons),this._updateZoomButtons()),this.options.showCompass&&(this._setButtonTitle(this._compass,"ResetBearing"),this.options.visualizePitch&&this._map.on("pitch",this._rotateCompassArrow),this._map.on("rotate",this._rotateCompassArrow),this._rotateCompassArrow(),this._handler=new Pn(this._map,this._compass,this.options.visualizePitch)),this._container},zn.prototype.onRemove=function(){r.remove(this._container),this.options.showZoom&&this._map.off("zoom",this._updateZoomButtons),this.options.showCompass&&(this.options.visualizePitch&&this._map.off("pitch",this._rotateCompassArrow),this._map.off("rotate",this._rotateCompassArrow),this._handler.off(),delete this._handler),delete this._map},zn.prototype._createButton=function(t,e){var i=r.create("button",t,this._container);return i.type="button",i.addEventListener("click",e),i},zn.prototype._setButtonTitle=function(t,e){var r=this._map._getUIString("NavigationControl."+e);t.title=r,t.setAttribute("aria-label",r)};var Pn=function(e,i,n){void 0===n&&(n=!1),this._clickTolerance=10,this.element=i,this.mouseRotate=new Zi({clickTolerance:e.dragRotate._mouseRotate._clickTolerance}),this.map=e,n&&(this.mousePitch=new Gi({clickTolerance:e.dragRotate._mousePitch._clickTolerance})),t.bindAll(["mousedown","mousemove","mouseup","touchstart","touchmove","touchend","reset"],this),r.addEventListener(i,"mousedown",this.mousedown),r.addEventListener(i,"touchstart",this.touchstart,{passive:!1}),r.addEventListener(i,"touchmove",this.touchmove),r.addEventListener(i,"touchend",this.touchend),r.addEventListener(i,"touchcancel",this.reset)};function Cn(e,r,i){if(e=new t.LngLat(e.lng,e.lat),r){var n=new t.LngLat(e.lng-360,e.lat),o=new t.LngLat(e.lng+360,e.lat),a=i.locationPoint(e).distSqr(r);i.locationPoint(n).distSqr(r)<a?e=n:i.locationPoint(o).distSqr(r)<a&&(e=o)}for(;Math.abs(e.lng-i.center.lng)>180;){var s=i.locationPoint(e);if(s.x>=0&&s.y>=0&&s.x<=i.width&&s.y<=i.height)break;e.lng>i.center.lng?e.lng-=360:e.lng+=360}return e}Pn.prototype.down=function(t,e){this.mouseRotate.mousedown(t,e),this.mousePitch&&this.mousePitch.mousedown(t,e),r.disableDrag()},Pn.prototype.move=function(t,e){var r=this.map,i=this.mouseRotate.mousemoveWindow(t,e);if(i&&i.bearingDelta&&r.setBearing(r.getBearing()+i.bearingDelta),this.mousePitch){var n=this.mousePitch.mousemoveWindow(t,e);n&&n.pitchDelta&&r.setPitch(r.getPitch()+n.pitchDelta)}},Pn.prototype.off=function(){var t=this.element;r.removeEventListener(t,"mousedown",this.mousedown),r.removeEventListener(t,"touchstart",this.touchstart,{passive:!1}),r.removeEventListener(t,"touchmove",this.touchmove),r.removeEventListener(t,"touchend",this.touchend),r.removeEventListener(t,"touchcancel",this.reset),this.offTemp()},Pn.prototype.offTemp=function(){r.enableDrag(),r.removeEventListener(t.window,"mousemove",this.mousemove),r.removeEventListener(t.window,"mouseup",this.mouseup)},Pn.prototype.mousedown=function(e){this.down(t.extend({},e,{ctrlKey:!0,preventDefault:function(){return e.preventDefault()}}),r.mousePos(this.element,e)),r.addEventListener(t.window,"mousemove",this.mousemove),r.addEventListener(t.window,"mouseup",this.mouseup)},Pn.prototype.mousemove=function(t){this.move(t,r.mousePos(this.element,t))},Pn.prototype.mouseup=function(t){this.mouseRotate.mouseupWindow(t),this.mousePitch&&this.mousePitch.mouseupWindow(t),this.offTemp()},Pn.prototype.touchstart=function(t){1!==t.targetTouches.length?this.reset():(this._startPos=this._lastPos=r.touchPos(this.element,t.targetTouches)[0],this.down({type:"mousedown",button:0,ctrlKey:!0,preventDefault:function(){return t.preventDefault()}},this._startPos))},Pn.prototype.touchmove=function(t){1!==t.targetTouches.length?this.reset():(this._lastPos=r.touchPos(this.element,t.targetTouches)[0],this.move({preventDefault:function(){return t.preventDefault()}},this._lastPos))},Pn.prototype.touchend=function(t){0===t.targetTouches.length&&this._startPos&&this._lastPos&&this._startPos.dist(this._lastPos)<this._clickTolerance&&this.element.click(),this.reset()},Pn.prototype.reset=function(){this.mouseRotate.reset(),this.mousePitch&&this.mousePitch.reset(),delete this._startPos,delete this._lastPos,this.offTemp()};var kn={center:"translate(-50%,-50%)",top:"translate(-50%,0)","top-left":"translate(0,0)","top-right":"translate(-100%,0)",bottom:"translate(-50%,-100%)","bottom-left":"translate(0,-100%)","bottom-right":"translate(-100%,-100%)",left:"translate(0,-50%)",right:"translate(-100%,-50%)"};function Mn(t,e,r){var i=t.classList;for(var n in kn)i.remove("mapboxgl-"+r+"-anchor-"+n);i.add("mapboxgl-"+r+"-anchor-"+e)}var Dn,Ln=function(e){function i(i,n){var o=this;if(e.call(this),(i instanceof t.window.HTMLElement||n)&&(i=t.extend({element:i},n)),t.bindAll(["_update","_onMove","_onUp","_addDragHandler","_onMapClick","_onKeyPress"],this),this._anchor=i&&i.anchor||"center",this._color=i&&i.color||"#3FB1CE",this._draggable=i&&i.draggable||!1,this._state="inactive",this._rotation=i&&i.rotation||0,this._rotationAlignment=i&&i.rotationAlignment||"auto",this._pitchAlignment=i&&i.pitchAlignment&&"auto"!==i.pitchAlignment?i.pitchAlignment:this._rotationAlignment,i&&i.element)this._element=i.element,this._offset=t.Point.convert(i&&i.offset||[0,0]);else{this._defaultMarker=!0,this._element=r.create("div"),this._element.setAttribute("aria-label","Map marker");var a=r.createNS("http://www.w3.org/2000/svg","svg");a.setAttributeNS(null,"display","block"),a.setAttributeNS(null,"height","41px"),a.setAttributeNS(null,"width","27px"),a.setAttributeNS(null,"viewBox","0 0 27 41");var s=r.createNS("http://www.w3.org/2000/svg","g");s.setAttributeNS(null,"stroke","none"),s.setAttributeNS(null,"stroke-width","1"),s.setAttributeNS(null,"fill","none"),s.setAttributeNS(null,"fill-rule","evenodd");var l=r.createNS("http://www.w3.org/2000/svg","g");l.setAttributeNS(null,"fill-rule","nonzero");var u=r.createNS("http://www.w3.org/2000/svg","g");u.setAttributeNS(null,"transform","translate(3.0, 29.0)"),u.setAttributeNS(null,"fill","#000000");for(var c=0,p=[{rx:"10.5",ry:"5.25002273"},{rx:"10.5",ry:"5.25002273"},{rx:"9.5",ry:"4.77275007"},{rx:"8.5",ry:"4.29549936"},{rx:"7.5",ry:"3.81822308"},{rx:"6.5",ry:"3.34094679"},{rx:"5.5",ry:"2.86367051"},{rx:"4.5",ry:"2.38636864"}];c<p.length;c+=1){var h=p[c],f=r.createNS("http://www.w3.org/2000/svg","ellipse");f.setAttributeNS(null,"opacity","0.04"),f.setAttributeNS(null,"cx","10.5"),f.setAttributeNS(null,"cy","5.80029008"),f.setAttributeNS(null,"rx",h.rx),f.setAttributeNS(null,"ry",h.ry),u.appendChild(f)}var d=r.createNS("http://www.w3.org/2000/svg","g");d.setAttributeNS(null,"fill",this._color);var m=r.createNS("http://www.w3.org/2000/svg","path");m.setAttributeNS(null,"d","M27,13.5 C27,19.074644 20.250001,27.000002 14.75,34.500002 C14.016665,35.500004 12.983335,35.500004 12.25,34.500002 C6.7499993,27.000002 0,19.222562 0,13.5 C0,6.0441559 6.0441559,0 13.5,0 C20.955844,0 27,6.0441559 27,13.5 Z"),d.appendChild(m);var y=r.createNS("http://www.w3.org/2000/svg","g");y.setAttributeNS(null,"opacity","0.25"),y.setAttributeNS(null,"fill","#000000");var g=r.createNS("http://www.w3.org/2000/svg","path");g.setAttributeNS(null,"d","M13.5,0 C6.0441559,0 0,6.0441559 0,13.5 C0,19.222562 6.7499993,27 12.25,34.5 C13,35.522727 14.016664,35.500004 14.75,34.5 C20.250001,27 27,19.074644 27,13.5 C27,6.0441559 20.955844,0 13.5,0 Z M13.5,1 C20.415404,1 26,6.584596 26,13.5 C26,15.898657 24.495584,19.181431 22.220703,22.738281 C19.945823,26.295132 16.705119,30.142167 13.943359,33.908203 C13.743445,34.180814 13.612715,34.322738 13.5,34.441406 C13.387285,34.322738 13.256555,34.180814 13.056641,33.908203 C10.284481,30.127985 7.4148684,26.314159 5.015625,22.773438 C2.6163816,19.232715 1,15.953538 1,13.5 C1,6.584596 6.584596,1 13.5,1 Z"),y.appendChild(g);var _=r.createNS("http://www.w3.org/2000/svg","g");_.setAttributeNS(null,"transform","translate(6.0, 7.0)"),_.setAttributeNS(null,"fill","#FFFFFF");var v=r.createNS("http://www.w3.org/2000/svg","g");v.setAttributeNS(null,"transform","translate(8.0, 8.0)");var x=r.createNS("http://www.w3.org/2000/svg","circle");x.setAttributeNS(null,"fill","#000000"),x.setAttributeNS(null,"opacity","0.25"),x.setAttributeNS(null,"cx","5.5"),x.setAttributeNS(null,"cy","5.5"),x.setAttributeNS(null,"r","5.4999962");var b=r.createNS("http://www.w3.org/2000/svg","circle");b.setAttributeNS(null,"fill","#FFFFFF"),b.setAttributeNS(null,"cx","5.5"),b.setAttributeNS(null,"cy","5.5"),b.setAttributeNS(null,"r","5.4999962"),v.appendChild(x),v.appendChild(b),l.appendChild(u),l.appendChild(d),l.appendChild(y),l.appendChild(_),l.appendChild(v),a.appendChild(l),this._element.appendChild(a),this._offset=t.Point.convert(i&&i.offset||[0,-14])}this._element.classList.add("mapboxgl-marker"),this._element.addEventListener("dragstart",function(t){t.preventDefault()}),this._element.addEventListener("mousedown",function(t){t.preventDefault()}),this._element.addEventListener("focus",function(){var t=o._map.getContainer();t.scrollTop=0,t.scrollLeft=0}),Mn(this._element,this._anchor,"marker"),this._popup=null}return e&&(i.__proto__=e),(i.prototype=Object.create(e&&e.prototype)).constructor=i,i.prototype.addTo=function(t){return this.remove(),this._map=t,t.getCanvasContainer().appendChild(this._element),t.on("move",this._update),t.on("moveend",this._update),this.setDraggable(this._draggable),this._update(),this._map.on("click",this._onMapClick),this},i.prototype.remove=function(){return this._map&&(this._map.off("click",this._onMapClick),this._map.off("move",this._update),this._map.off("moveend",this._update),this._map.off("mousedown",this._addDragHandler),this._map.off("touchstart",this._addDragHandler),this._map.off("mouseup",this._onUp),this._map.off("touchend",this._onUp),this._map.off("mousemove",this._onMove),this._map.off("touchmove",this._onMove),delete this._map),r.remove(this._element),this._popup&&this._popup.remove(),this},i.prototype.getLngLat=function(){return this._lngLat},i.prototype.setLngLat=function(e){return this._lngLat=t.LngLat.convert(e),this._pos=null,this._popup&&this._popup.setLngLat(this._lngLat),this._update(),this},i.prototype.getElement=function(){return this._element},i.prototype.setPopup=function(t){if(this._popup&&(this._popup.remove(),this._popup=null,this._element.removeEventListener("keypress",this._onKeyPress),this._originalTabIndex||this._element.removeAttribute("tabindex")),t){if(!("offset"in t.options)){var e=Math.sqrt(Math.pow(13.5,2)/2);t.options.offset=this._defaultMarker?{top:[0,0],"top-left":[0,0],"top-right":[0,0],bottom:[0,-38.1],"bottom-left":[e,-1*(24.6+e)],"bottom-right":[-e,-1*(24.6+e)],left:[13.5,-24.6],right:[-13.5,-24.6]}:this._offset}this._popup=t,this._lngLat&&this._popup.setLngLat(this._lngLat),this._originalTabIndex=this._element.getAttribute("tabindex"),this._originalTabIndex||this._element.setAttribute("tabindex","0"),this._element.addEventListener("keypress",this._onKeyPress)}return this},i.prototype._onKeyPress=function(t){var e=t.code,r=t.charCode||t.keyCode;"Space"!==e&&"Enter"!==e&&32!==r&&13!==r||this.togglePopup()},i.prototype._onMapClick=function(t){var e=t.originalEvent.target,r=this._element;this._popup&&(e===r||r.contains(e))&&this.togglePopup()},i.prototype.getPopup=function(){return this._popup},i.prototype.togglePopup=function(){var t=this._popup;return t?(t.isOpen()?t.remove():t.addTo(this._map),this):this},i.prototype._update=function(t){if(this._map){this._map.transform.renderWorldCopies&&(this._lngLat=Cn(this._lngLat,this._pos,this._map.transform)),this._pos=this._map.project(this._lngLat)._add(this._offset);var e="";"viewport"===this._rotationAlignment||"auto"===this._rotationAlignment?e="rotateZ("+this._rotation+"deg)":"map"===this._rotationAlignment&&(e="rotateZ("+(this._rotation-this._map.getBearing())+"deg)");var i="";"viewport"===this._pitchAlignment||"auto"===this._pitchAlignment?i="rotateX(0deg)":"map"===this._pitchAlignment&&(i="rotateX("+this._map.getPitch()+"deg)"),t&&"moveend"!==t.type||(this._pos=this._pos.round()),r.setTransform(this._element,kn[this._anchor]+" translate("+this._pos.x+"px, "+this._pos.y+"px) "+i+" "+e)}},i.prototype.getOffset=function(){return this._offset},i.prototype.setOffset=function(e){return this._offset=t.Point.convert(e),this._update(),this},i.prototype._onMove=function(e){this._pos=e.point.sub(this._positionDelta),this._lngLat=this._map.unproject(this._pos),this.setLngLat(this._lngLat),this._element.style.pointerEvents="none","pending"===this._state&&(this._state="active",this.fire(new t.Event("dragstart"))),this.fire(new t.Event("drag"))},i.prototype._onUp=function(){this._element.style.pointerEvents="auto",this._positionDelta=null,this._map.off("mousemove",this._onMove),this._map.off("touchmove",this._onMove),"active"===this._state&&this.fire(new t.Event("dragend")),this._state="inactive"},i.prototype._addDragHandler=function(t){this._element.contains(t.originalEvent.target)&&(t.preventDefault(),this._positionDelta=t.point.sub(this._pos).add(this._offset),this._state="pending",this._map.on("mousemove",this._onMove),this._map.on("touchmove",this._onMove),this._map.once("mouseup",this._onUp),this._map.once("touchend",this._onUp))},i.prototype.setDraggable=function(t){return this._draggable=!!t,this._map&&(t?(this._map.on("mousedown",this._addDragHandler),this._map.on("touchstart",this._addDragHandler)):(this._map.off("mousedown",this._addDragHandler),this._map.off("touchstart",this._addDragHandler))),this},i.prototype.isDraggable=function(){return this._draggable},i.prototype.setRotation=function(t){return this._rotation=t||0,this._update(),this},i.prototype.getRotation=function(){return this._rotation},i.prototype.setRotationAlignment=function(t){return this._rotationAlignment=t||"auto",this._update(),this},i.prototype.getRotationAlignment=function(){return this._rotationAlignment},i.prototype.setPitchAlignment=function(t){return this._pitchAlignment=t&&"auto"!==t?t:this._rotationAlignment,this._update(),this},i.prototype.getPitchAlignment=function(){return this._pitchAlignment},i}(t.Evented),Bn={positionOptions:{enableHighAccuracy:!1,maximumAge:0,timeout:6e3},fitBoundsOptions:{maxZoom:15},trackUserLocation:!1,showAccuracyCircle:!0,showUserLocation:!0},Rn=0,Fn=!1,On=function(e){function i(r){e.call(this),this.options=t.extend({},Bn,r),t.bindAll(["_onSuccess","_onError","_onZoom","_finish","_setupUI","_updateCamera","_updateMarker"],this)}return e&&(i.__proto__=e),(i.prototype=Object.create(e&&e.prototype)).constructor=i,i.prototype.onAdd=function(e){var i;return this._map=e,this._container=r.create("div","mapboxgl-ctrl mapboxgl-ctrl-group"),i=this._setupUI,void 0!==Dn?i(Dn):void 0!==t.window.navigator.permissions?t.window.navigator.permissions.query({name:"geolocation"}).then(function(t){i(Dn="denied"!==t.state)}):i(Dn=!!t.window.navigator.geolocation),this._container},i.prototype.onRemove=function(){void 0!==this._geolocationWatchID&&(t.window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0),this.options.showUserLocation&&this._userLocationDotMarker&&this._userLocationDotMarker.remove(),this.options.showAccuracyCircle&&this._accuracyCircleMarker&&this._accuracyCircleMarker.remove(),r.remove(this._container),this._map.off("zoom",this._onZoom),this._map=void 0,Rn=0,Fn=!1},i.prototype._isOutOfMapMaxBounds=function(t){var e=this._map.getMaxBounds(),r=t.coords;return e&&(r.longitude<e.getWest()||r.longitude>e.getEast()||r.latitude<e.getSouth()||r.latitude>e.getNorth())},i.prototype._setErrorState=function(){switch(this._watchState){case"WAITING_ACTIVE":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active-error");break;case"ACTIVE_LOCK":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting");break;case"BACKGROUND":this._watchState="BACKGROUND_ERROR",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting")}},i.prototype._onSuccess=function(e){if(this._map){if(this._isOutOfMapMaxBounds(e))return this._setErrorState(),this.fire(new t.Event("outofmaxbounds",e)),this._updateMarker(),void this._finish();if(this.options.trackUserLocation)switch(this._lastKnownPosition=e,this._watchState){case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active");break;case"BACKGROUND":case"BACKGROUND_ERROR":this._watchState="BACKGROUND",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background")}this.options.showUserLocation&&"OFF"!==this._watchState&&this._updateMarker(e),this.options.trackUserLocation&&"ACTIVE_LOCK"!==this._watchState||this._updateCamera(e),this.options.showUserLocation&&this._dotElement.classList.remove("mapboxgl-user-location-dot-stale"),this.fire(new t.Event("geolocate",e)),this._finish()}},i.prototype._updateCamera=function(e){var r=new t.LngLat(e.coords.longitude,e.coords.latitude),i=e.coords.accuracy,n=this._map.getBearing(),o=t.extend({bearing:n},this.options.fitBoundsOptions);this._map.fitBounds(r.toBounds(i),o,{geolocateSource:!0})},i.prototype._updateMarker=function(e){if(e){var r=new t.LngLat(e.coords.longitude,e.coords.latitude);this._accuracyCircleMarker.setLngLat(r).addTo(this._map),this._userLocationDotMarker.setLngLat(r).addTo(this._map),this._accuracy=e.coords.accuracy,this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()}else this._userLocationDotMarker.remove(),this._accuracyCircleMarker.remove()},i.prototype._updateCircleRadius=function(){var t=this._map._container.clientHeight/2,e=this._map.unproject([0,t]),r=this._map.unproject([1,t]),i=e.distanceTo(r),n=Math.ceil(2*this._accuracy/i);this._circleElement.style.width=n+"px",this._circleElement.style.height=n+"px"},i.prototype._onZoom=function(){this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()},i.prototype._onError=function(e){if(this._map){if(this.options.trackUserLocation)if(1===e.code){this._watchState="OFF",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background-error"),this._geolocateButton.disabled=!0;var r=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.title=r,this._geolocateButton.setAttribute("aria-label",r),void 0!==this._geolocationWatchID&&this._clearWatch()}else{if(3===e.code&&Fn)return;this._setErrorState()}"OFF"!==this._watchState&&this.options.showUserLocation&&this._dotElement.classList.add("mapboxgl-user-location-dot-stale"),this.fire(new t.Event("error",e)),this._finish()}},i.prototype._finish=function(){this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0},i.prototype._setupUI=function(e){var i=this;if(this._container.addEventListener("contextmenu",function(t){return t.preventDefault()}),this._geolocateButton=r.create("button","mapboxgl-ctrl-geolocate",this._container),r.create("span","mapboxgl-ctrl-icon",this._geolocateButton).setAttribute("aria-hidden",!0),this._geolocateButton.type="button",!1===e){t.warnOnce("Geolocation support is not available so the GeolocateControl will be disabled.");var n=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.disabled=!0,this._geolocateButton.title=n,this._geolocateButton.setAttribute("aria-label",n)}else{var o=this._map._getUIString("GeolocateControl.FindMyLocation");this._geolocateButton.title=o,this._geolocateButton.setAttribute("aria-label",o)}this.options.trackUserLocation&&(this._geolocateButton.setAttribute("aria-pressed","false"),this._watchState="OFF"),this.options.showUserLocation&&(this._dotElement=r.create("div","mapboxgl-user-location-dot"),this._userLocationDotMarker=new Ln(this._dotElement),this._circleElement=r.create("div","mapboxgl-user-location-accuracy-circle"),this._accuracyCircleMarker=new Ln({element:this._circleElement,pitchAlignment:"map"}),this.options.trackUserLocation&&(this._watchState="OFF"),this._map.on("zoom",this._onZoom)),this._geolocateButton.addEventListener("click",this.trigger.bind(this)),this._setup=!0,this.options.trackUserLocation&&this._map.on("movestart",function(e){e.geolocateSource||"ACTIVE_LOCK"!==i._watchState||e.originalEvent&&"resize"===e.originalEvent.type||(i._watchState="BACKGROUND",i._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background"),i._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),i.fire(new t.Event("trackuserlocationend")))})},i.prototype.trigger=function(){if(!this._setup)return t.warnOnce("Geolocate control triggered before added to a map"),!1;if(this.options.trackUserLocation){switch(this._watchState){case"OFF":this._watchState="WAITING_ACTIVE",this.fire(new t.Event("trackuserlocationstart"));break;case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":case"BACKGROUND_ERROR":Rn--,Fn=!1,this._watchState="OFF",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background-error"),this.fire(new t.Event("trackuserlocationend"));break;case"BACKGROUND":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._lastKnownPosition&&this._updateCamera(this._lastKnownPosition),this.fire(new t.Event("trackuserlocationstart"))}switch(this._watchState){case"WAITING_ACTIVE":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active");break;case"ACTIVE_LOCK":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active");break;case"ACTIVE_ERROR":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active-error");break;case"BACKGROUND":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background");break;case"BACKGROUND_ERROR":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background-error")}if("OFF"===this._watchState&&void 0!==this._geolocationWatchID)this._clearWatch();else if(void 0===this._geolocationWatchID){var e;this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","true"),++Rn>1?(e={maximumAge:6e5,timeout:0},Fn=!0):(e=this.options.positionOptions,Fn=!1),this._geolocationWatchID=t.window.navigator.geolocation.watchPosition(this._onSuccess,this._onError,e)}}else t.window.navigator.geolocation.getCurrentPosition(this._onSuccess,this._onError,this.options.positionOptions),this._timeoutId=setTimeout(this._finish,1e4);return!0},i.prototype._clearWatch=function(){t.window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0,this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","false"),this.options.showUserLocation&&this._updateMarker(null)},i}(t.Evented),Un={maxWidth:100,unit:"metric"},Vn=function(e){this.options=t.extend({},Un,e),t.bindAll(["_onMove","setUnit"],this)};function Nn(t,e,r){var i=r&&r.maxWidth||100,n=t._container.clientHeight/2,o=t.unproject([0,n]),a=t.unproject([i,n]),s=o.distanceTo(a);if(r&&"imperial"===r.unit){var l=3.2808*s;l>5280?jn(e,i,l/5280,t._getUIString("ScaleControl.Miles")):jn(e,i,l,t._getUIString("ScaleControl.Feet"))}else r&&"nautical"===r.unit?jn(e,i,s/1852,t._getUIString("ScaleControl.NauticalMiles")):s>=1e3?jn(e,i,s/1e3,t._getUIString("ScaleControl.Kilometers")):jn(e,i,s,t._getUIString("ScaleControl.Meters"))}function jn(t,e,r,i){var n,o,a,s=(n=r,(o=Math.pow(10,(""+Math.floor(n)).length-1))*(a=(a=n/o)>=10?10:a>=5?5:a>=3?3:a>=2?2:a>=1?1:function(t){var e=Math.pow(10,Math.ceil(-Math.log(t)/Math.LN10));return Math.round(t*e)/e}(a)));t.style.width=e*(s/r)+"px",t.innerHTML=s+"&nbsp;"+i}Vn.prototype.getDefaultPosition=function(){return"bottom-left"},Vn.prototype._onMove=function(){Nn(this._map,this._container,this.options)},Vn.prototype.onAdd=function(t){return this._map=t,this._container=r.create("div","mapboxgl-ctrl mapboxgl-ctrl-scale",t.getContainer()),this._map.on("move",this._onMove),this._onMove(),this._container},Vn.prototype.onRemove=function(){r.remove(this._container),this._map.off("move",this._onMove),this._map=void 0},Vn.prototype.setUnit=function(t){this.options.unit=t,Nn(this._map,this._container,this.options)};var qn=function(e){this._fullscreen=!1,e&&e.container&&(e.container instanceof t.window.HTMLElement?this._container=e.container:t.warnOnce("Full screen control 'container' must be a DOM element.")),t.bindAll(["_onClickFullscreen","_changeIcon"],this),"onfullscreenchange"in t.window.document?this._fullscreenchange="fullscreenchange":"onmozfullscreenchange"in t.window.document?this._fullscreenchange="mozfullscreenchange":"onwebkitfullscreenchange"in t.window.document?this._fullscreenchange="webkitfullscreenchange":"onmsfullscreenchange"in t.window.document&&(this._fullscreenchange="MSFullscreenChange")};qn.prototype.onAdd=function(e){return this._map=e,this._container||(this._container=this._map.getContainer()),this._controlContainer=r.create("div","mapboxgl-ctrl mapboxgl-ctrl-group"),this._checkFullscreenSupport()?this._setupUI():(this._controlContainer.style.display="none",t.warnOnce("This device does not support fullscreen mode.")),this._controlContainer},qn.prototype.onRemove=function(){r.remove(this._controlContainer),this._map=null,t.window.document.removeEventListener(this._fullscreenchange,this._changeIcon)},qn.prototype._checkFullscreenSupport=function(){return!!(t.window.document.fullscreenEnabled||t.window.document.mozFullScreenEnabled||t.window.document.msFullscreenEnabled||t.window.document.webkitFullscreenEnabled)},qn.prototype._setupUI=function(){var e=this._fullscreenButton=r.create("button","mapboxgl-ctrl-fullscreen",this._controlContainer);r.create("span","mapboxgl-ctrl-icon",e).setAttribute("aria-hidden",!0),e.type="button",this._updateTitle(),this._fullscreenButton.addEventListener("click",this._onClickFullscreen),t.window.document.addEventListener(this._fullscreenchange,this._changeIcon)},qn.prototype._updateTitle=function(){var t=this._getTitle();this._fullscreenButton.setAttribute("aria-label",t),this._fullscreenButton.title=t},qn.prototype._getTitle=function(){return this._map._getUIString(this._isFullscreen()?"FullscreenControl.Exit":"FullscreenControl.Enter")},qn.prototype._isFullscreen=function(){return this._fullscreen},qn.prototype._changeIcon=function(){(t.window.document.fullscreenElement||t.window.document.mozFullScreenElement||t.window.document.webkitFullscreenElement||t.window.document.msFullscreenElement)===this._container!==this._fullscreen&&(this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle("mapboxgl-ctrl-shrink"),this._fullscreenButton.classList.toggle("mapboxgl-ctrl-fullscreen"),this._updateTitle())},qn.prototype._onClickFullscreen=function(){this._isFullscreen()?t.window.document.exitFullscreen?t.window.document.exitFullscreen():t.window.document.mozCancelFullScreen?t.window.document.mozCancelFullScreen():t.window.document.msExitFullscreen?t.window.document.msExitFullscreen():t.window.document.webkitCancelFullScreen&&t.window.document.webkitCancelFullScreen():this._container.requestFullscreen?this._container.requestFullscreen():this._container.mozRequestFullScreen?this._container.mozRequestFullScreen():this._container.msRequestFullscreen?this._container.msRequestFullscreen():this._container.webkitRequestFullscreen&&this._container.webkitRequestFullscreen()};var Zn={closeButton:!0,closeOnClick:!0,className:"",maxWidth:"240px"},Gn=function(e){function i(r){e.call(this),this.options=t.extend(Object.create(Zn),r),t.bindAll(["_update","_onClose","remove","_onMouseMove","_onMouseUp","_onDrag"],this)}return e&&(i.__proto__=e),(i.prototype=Object.create(e&&e.prototype)).constructor=i,i.prototype.addTo=function(e){return this._map&&this.remove(),this._map=e,this.options.closeOnClick&&this._map.on("click",this._onClose),this.options.closeOnMove&&this._map.on("move",this._onClose),this._map.on("remove",this.remove),this._update(),this._trackPointer?(this._map.on("mousemove",this._onMouseMove),this._map.on("mouseup",this._onMouseUp),this._container&&this._container.classList.add("mapboxgl-popup-track-pointer"),this._map._canvasContainer.classList.add("mapboxgl-track-pointer")):this._map.on("move",this._update),this.fire(new t.Event("open")),this},i.prototype.isOpen=function(){return!!this._map},i.prototype.remove=function(){return this._content&&r.remove(this._content),this._container&&(r.remove(this._container),delete this._container),this._map&&(this._map.off("move",this._update),this._map.off("move",this._onClose),this._map.off("click",this._onClose),this._map.off("remove",this.remove),this._map.off("mousemove",this._onMouseMove),this._map.off("mouseup",this._onMouseUp),this._map.off("drag",this._onDrag),delete this._map),this.fire(new t.Event("close")),this},i.prototype.getLngLat=function(){return this._lngLat},i.prototype.setLngLat=function(e){return this._lngLat=t.LngLat.convert(e),this._pos=null,this._trackPointer=!1,this._update(),this._map&&(this._map.on("move",this._update),this._map.off("mousemove",this._onMouseMove),this._container&&this._container.classList.remove("mapboxgl-popup-track-pointer"),this._map._canvasContainer.classList.remove("mapboxgl-track-pointer")),this},i.prototype.trackPointer=function(){return this._trackPointer=!0,this._pos=null,this._update(),this._map&&(this._map.off("move",this._update),this._map.on("mousemove",this._onMouseMove),this._map.on("drag",this._onDrag),this._container&&this._container.classList.add("mapboxgl-popup-track-pointer"),this._map._canvasContainer.classList.add("mapboxgl-track-pointer")),this},i.prototype.getElement=function(){return this._container},i.prototype.setText=function(e){return this.setDOMContent(t.window.document.createTextNode(e))},i.prototype.setHTML=function(e){var r,i=t.window.document.createDocumentFragment(),n=t.window.document.createElement("body");for(n.innerHTML=e;r=n.firstChild;)i.appendChild(r);return this.setDOMContent(i)},i.prototype.getMaxWidth=function(){return this._container&&this._container.style.maxWidth},i.prototype.setMaxWidth=function(t){return this.options.maxWidth=t,this._update(),this},i.prototype.setDOMContent=function(t){return this._createContent(),this._content.appendChild(t),this._update(),this},i.prototype.addClassName=function(t){this._container&&this._container.classList.add(t)},i.prototype.removeClassName=function(t){this._container&&this._container.classList.remove(t)},i.prototype.toggleClassName=function(t){if(this._container)return this._container.classList.toggle(t)},i.prototype._createContent=function(){this._content&&r.remove(this._content),this._content=r.create("div","mapboxgl-popup-content",this._container),this.options.closeButton&&(this._closeButton=r.create("button","mapboxgl-popup-close-button",this._content),this._closeButton.type="button",this._closeButton.setAttribute("aria-label","Close popup"),this._closeButton.innerHTML="&#215;",this._closeButton.addEventListener("click",this._onClose))},i.prototype._onMouseUp=function(t){this._update(t.point)},i.prototype._onMouseMove=function(t){this._update(t.point)},i.prototype._onDrag=function(t){this._update(t.point)},i.prototype._update=function(e){var i=this;if(this._map&&(this._lngLat||this._trackPointer)&&this._content&&(this._container||(this._container=r.create("div","mapboxgl-popup",this._map.getContainer()),this._tip=r.create("div","mapboxgl-popup-tip",this._container),this._container.appendChild(this._content),this.options.className&&this.options.className.split(" ").forEach(function(t){return i._container.classList.add(t)}),this._trackPointer&&this._container.classList.add("mapboxgl-popup-track-pointer")),this.options.maxWidth&&this._container.style.maxWidth!==this.options.maxWidth&&(this._container.style.maxWidth=this.options.maxWidth),this._map.transform.renderWorldCopies&&!this._trackPointer&&(this._lngLat=Cn(this._lngLat,this._pos,this._map.transform)),!this._trackPointer||e)){var n=this._pos=this._trackPointer&&e?e:this._map.project(this._lngLat),o=this.options.anchor,a=function e(r){if(r){if("number"==typeof r){var i=Math.round(Math.sqrt(.5*Math.pow(r,2)));return{center:new t.Point(0,0),top:new t.Point(0,r),"top-left":new t.Point(i,i),"top-right":new t.Point(-i,i),bottom:new t.Point(0,-r),"bottom-left":new t.Point(i,-i),"bottom-right":new t.Point(-i,-i),left:new t.Point(r,0),right:new t.Point(-r,0)}}if(r instanceof t.Point||Array.isArray(r)){var n=t.Point.convert(r);return{center:n,top:n,"top-left":n,"top-right":n,bottom:n,"bottom-left":n,"bottom-right":n,left:n,right:n}}return{center:t.Point.convert(r.center||[0,0]),top:t.Point.convert(r.top||[0,0]),"top-left":t.Point.convert(r["top-left"]||[0,0]),"top-right":t.Point.convert(r["top-right"]||[0,0]),bottom:t.Point.convert(r.bottom||[0,0]),"bottom-left":t.Point.convert(r["bottom-left"]||[0,0]),"bottom-right":t.Point.convert(r["bottom-right"]||[0,0]),left:t.Point.convert(r.left||[0,0]),right:t.Point.convert(r.right||[0,0])}}return e(new t.Point(0,0))}(this.options.offset);if(!o){var s,l=this._container.offsetWidth,u=this._container.offsetHeight;s=n.y+a.bottom.y<u?["top"]:n.y>this._map.transform.height-u?["bottom"]:[],n.x<l/2?s.push("left"):n.x>this._map.transform.width-l/2&&s.push("right"),o=0===s.length?"bottom":s.join("-")}var c=n.add(a[o]).round();r.setTransform(this._container,kn[o]+" translate("+c.x+"px,"+c.y+"px)"),Mn(this._container,o,"popup")}},i.prototype._onClose=function(){this.remove()},i}(t.Evented),Xn={version:t.version,supported:e,setRTLTextPlugin:t.setRTLTextPlugin,getRTLTextPluginStatus:t.getRTLTextPluginStatus,Map:In,NavigationControl:zn,GeolocateControl:On,AttributionControl:gn,ScaleControl:Vn,FullscreenControl:qn,Popup:Gn,Marker:Ln,Style:qe,LngLat:t.LngLat,LngLatBounds:t.LngLatBounds,Point:t.Point,MercatorCoordinate:t.MercatorCoordinate,Evented:t.Evented,config:t.config,prewarm:function(){Ot().acquire(Lt)},clearPrewarmedResources:function(){var t=Rt;t&&(t.isPreloaded()&&1===t.numActive()?(t.release(Lt),Rt=null):console.warn("Could not clear WebWorkers since there are active Map instances that still reference it. The pre-warmed WebWorker pool can only be cleared when all map instances have been removed with map.remove()"))},get accessToken(){return t.config.ACCESS_TOKEN},set accessToken(e){t.config.ACCESS_TOKEN=e},get baseApiUrl(){return t.config.API_URL},set baseApiUrl(e){t.config.API_URL=e},get workerCount(){return Bt.workerCount},set workerCount(t){Bt.workerCount=t},get maxParallelImageRequests(){return t.config.MAX_PARALLEL_IMAGE_REQUESTS},set maxParallelImageRequests(e){t.config.MAX_PARALLEL_IMAGE_REQUESTS=e},clearStorage:function(e){t.clearTileCache(e)},workerUrl:""};return Xn}),r});
-//# sourceMappingURL=/sm/611dc9144edc1667053630223290333ac72ae99b79697a40bc8590e55c95a75d.map \ No newline at end of file
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).mapboxgl=t()}(this,(function(){"use strict";var e,t,i;function r(r,n){if(e)if(t){var o="self.onerror = function() { console.error('An error occurred while parsing the WebWorker bundle. This is most likely due to improper transpilation by Babel; please see https://docs.mapbox.com/mapbox-gl-js/guides/install/#transpiling'); }; var sharedChunk = {}; ("+e+")(sharedChunk); ("+t+")(sharedChunk); self.onerror = null;",s={};e(s),i=n(s),"undefined"!=typeof window&&window&&window.URL&&window.URL.createObjectURL&&(i.workerUrl=window.URL.createObjectURL(new Blob([o],{type:"text/javascript"})))}else t=n;else e=n}return r(0,(function(e){var t="2.8.2",i=r;function r(e,t,i,r){this.cx=3*e,this.bx=3*(i-e)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*t,this.by=3*(r-t)-this.cy,this.ay=1-this.cy-this.by,this.p1x=e,this.p1y=r,this.p2x=i,this.p2y=r}r.prototype.sampleCurveX=function(e){return((this.ax*e+this.bx)*e+this.cx)*e},r.prototype.sampleCurveY=function(e){return((this.ay*e+this.by)*e+this.cy)*e},r.prototype.sampleCurveDerivativeX=function(e){return(3*this.ax*e+2*this.bx)*e+this.cx},r.prototype.solveCurveX=function(e,t){var i,r,n,o,s;for(void 0===t&&(t=1e-6),n=e,s=0;s<8;s++){if(o=this.sampleCurveX(n)-e,Math.abs(o)<t)return n;var a=this.sampleCurveDerivativeX(n);if(Math.abs(a)<1e-6)break;n-=o/a}if((n=e)<(i=0))return i;if(n>(r=1))return r;for(;i<r;){if(o=this.sampleCurveX(n),Math.abs(o-e)<t)return n;e>o?i=n:r=n,n=.5*(r-i)+i}return n},r.prototype.solve=function(e,t){return this.sampleCurveY(this.solveCurveX(e,t))};var n=o;function o(e,t){this.x=e,this.y=t}o.prototype={clone:function(){return new o(this.x,this.y)},add:function(e){return this.clone()._add(e)},sub:function(e){return this.clone()._sub(e)},multByPoint:function(e){return this.clone()._multByPoint(e)},divByPoint:function(e){return this.clone()._divByPoint(e)},mult:function(e){return this.clone()._mult(e)},div:function(e){return this.clone()._div(e)},rotate:function(e){return this.clone()._rotate(e)},rotateAround:function(e,t){return this.clone()._rotateAround(e,t)},matMult:function(e){return this.clone()._matMult(e)},unit:function(){return this.clone()._unit()},perp:function(){return this.clone()._perp()},round:function(){return this.clone()._round()},mag:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals:function(e){return this.x===e.x&&this.y===e.y},dist:function(e){return Math.sqrt(this.distSqr(e))},distSqr:function(e){var t=e.x-this.x,i=e.y-this.y;return t*t+i*i},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(e){return Math.atan2(this.y-e.y,this.x-e.x)},angleWith:function(e){return this.angleWithSep(e.x,e.y)},angleWithSep:function(e,t){return Math.atan2(this.x*t-this.y*e,this.x*e+this.y*t)},_matMult:function(e){var t=e[2]*this.x+e[3]*this.y;return this.x=e[0]*this.x+e[1]*this.y,this.y=t,this},_add:function(e){return this.x+=e.x,this.y+=e.y,this},_sub:function(e){return this.x-=e.x,this.y-=e.y,this},_mult:function(e){return this.x*=e,this.y*=e,this},_div:function(e){return this.x/=e,this.y/=e,this},_multByPoint:function(e){return this.x*=e.x,this.y*=e.y,this},_divByPoint:function(e){return this.x/=e.x,this.y/=e.y,this},_unit:function(){return this._div(this.mag()),this},_perp:function(){var e=this.y;return this.y=this.x,this.x=-e,this},_rotate:function(e){var t=Math.cos(e),i=Math.sin(e),r=i*this.x+t*this.y;return this.x=t*this.x-i*this.y,this.y=r,this},_rotateAround:function(e,t){var i=Math.cos(e),r=Math.sin(e),n=t.y+r*(this.x-t.x)+i*(this.y-t.y);return this.x=t.x+i*(this.x-t.x)-r*(this.y-t.y),this.y=n,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},o.convert=function(e){return e instanceof o?e:Array.isArray(e)?new o(e[0],e[1]):e};var s="undefined"!=typeof self?self:{};const a=Math.PI/180,l=180/Math.PI;function c(e){return e*a}function h(e){return e*l}const u=[[0,0],[1,0],[1,1],[0,1]];function d(e){if(e<=0)return 0;if(e>=1)return 1;const t=e*e,i=t*e;return 4*(e<.5?i:3*(e-t)+i-.75)}function p(e,t,r,n){const o=new i(e,t,r,n);return function(e){return o.solve(e)}}const f=p(.25,.1,.25,1);function m(e,t,i){return Math.min(i,Math.max(t,e))}function _(e,t,i){return(i=m((i-e)/(t-e),0,1))*i*(3-2*i)}function g(e,t,i){const r=i-t,n=((e-t)%r+r)%r+t;return n===t?i:n}function y(e,t,i){if(!e.length)return i(null,[]);let r=e.length;const n=new Array(e.length);let o=null;e.forEach(((e,s)=>{t(e,((e,t)=>{e&&(o=e),n[s]=t,0==--r&&i(o,n)}))}))}function x(e){const t=[];for(const i in e)t.push(e[i]);return t}function v(e,...t){for(const i of t)for(const t in i)e[t]=i[t];return e}let b=1;function w(){return b++}function T(){return function e(t){return t?(t^Math.random()*(16>>t/4)).toString(16):([1e7]+-[1e3]+-4e3+-8e3+-1e11).replace(/[018]/g,e)}()}function E(e){return e<=1?1:Math.pow(2,Math.ceil(Math.log(e)/Math.LN2))}function S(e){return!!e&&/^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(e)}function I(e,t){e.forEach((e=>{t[e]&&(t[e]=t[e].bind(t))}))}function M(e,t){return-1!==e.indexOf(t,e.length-t.length)}function A(e,t,i){const r={};for(const n in e)r[n]=t.call(i||this,e[n],n,e);return r}function C(e,t,i){const r={};for(const n in e)t.call(i||this,e[n],n,e)&&(r[n]=e[n]);return r}function z(e){return Array.isArray(e)?e.map(z):"object"==typeof e&&e?A(e,z):e}const k={};function D(e){k[e]||("undefined"!=typeof console&&console.warn(e),k[e]=!0)}function P(e,t,i){return(i.y-e.y)*(t.x-e.x)>(t.y-e.y)*(i.x-e.x)}function L(e){let t=0;for(let i,r,n=0,o=e.length,s=o-1;n<o;s=n++)i=e[n],r=e[s],t+=(r.x-i.x)*(i.y+r.y);return t}function B(){return"undefined"!=typeof WorkerGlobalScope&&"undefined"!=typeof self&&self instanceof WorkerGlobalScope}function R(e){const t={};if(e.replace(/(?:^|(?:\s*\,\s*))([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)(?:\=(?:([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)|(?:\"((?:[^"\\]|\\.)*)\")))?/g,((e,i,r,n)=>{const o=r||n;return t[i]=!o||o.toLowerCase(),""})),t["max-age"]){const e=parseInt(t["max-age"],10);isNaN(e)?delete t["max-age"]:t["max-age"]=e}return t}let F,O,U,V,j=null;function N(e){if(null==j){const t=e.navigator?e.navigator.userAgent:null;j=!!e.safari||!(!t||!(/\b(iPad|iPhone|iPod)\b/.test(t)||t.match("Safari")&&!t.match("Chrome")))}return j}function G(e){try{const t=s[e];return t.setItem("_mapbox_test_",1),t.removeItem("_mapbox_test_"),!0}catch(e){return!1}}const Z={now:()=>void 0!==U?U:s.performance.now(),setNow(e){U=e},restoreNow(){U=void 0},frame(e){const t=s.requestAnimationFrame(e);return{cancel:()=>s.cancelAnimationFrame(t)}},getImageData(e,t=0){const{width:i,height:r}=e;V||(V=s.document.createElement("canvas"));const n=V.getContext("2d");if(!n)throw new Error("failed to create canvas 2d context");return(i>V.width||r>V.height)&&(V.width=i,V.height=r),n.clearRect(-t,-t,i+2*t,r+2*t),n.drawImage(e,0,0,i,r),n.getImageData(-t,-t,i+2*t,r+2*t)},resolveURL:e=>(F||(F=s.document.createElement("a")),F.href=e,F.href),get devicePixelRatio(){return s.devicePixelRatio},get prefersReducedMotion(){return!!s.matchMedia&&(null==O&&(O=s.matchMedia("(prefers-reduced-motion: reduce)")),O.matches)}};let $;const q={API_URL:"https://api.mapbox.com",get API_URL_REGEX(){if(null==$){const e=/^((https?:)?\/\/)?([^\/]+\.)?mapbox\.c(n|om)(\/|\?|$)/i;try{$=null!=process.env.API_URL_REGEX?new RegExp(process.env.API_URL_REGEX):e}catch(t){$=e}}return $},get EVENTS_URL(){return this.API_URL?0===this.API_URL.indexOf("https://api.mapbox.cn")?"https://events.mapbox.cn/events/v2":0===this.API_URL.indexOf("https://api.mapbox.com")?"https://events.mapbox.com/events/v2":null:null},SESSION_PATH:"/map-sessions/v1",FEEDBACK_URL:"https://apps.mapbox.com/feedback",TILE_URL_VERSION:"v4",RASTER_URL_PREFIX:"raster/v1",REQUIRE_ACCESS_TOKEN:!0,ACCESS_TOKEN:null,MAX_PARALLEL_IMAGE_REQUESTS:16},X={supported:!1,testSupport:function(e){!Y&&H&&(K?J(e):W=e)}};let W,H,Y=!1,K=!1;function J(e){const t=e.createTexture();e.bindTexture(e.TEXTURE_2D,t);try{if(e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,H),e.isContextLost())return;X.supported=!0}catch(e){}e.deleteTexture(t),Y=!0}s.document&&(H=s.document.createElement("img"),H.onload=function(){W&&J(W),W=null,K=!0},H.onerror=function(){Y=!0,W=null},H.src="data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA=");const Q="01",ee="NO_ACCESS_TOKEN";function te(e){return 0===e.indexOf("mapbox:")}function ie(e){return q.API_URL_REGEX.test(e)}const re=/^(\w+):\/\/([^/?]*)(\/[^?]+)?\??(.+)?/;function ne(e){const t=e.match(re);if(!t)throw new Error("Unable to parse URL object");return{protocol:t[1],authority:t[2],path:t[3]||"/",params:t[4]?t[4].split("&"):[]}}function oe(e){const t=e.params.length?`?${e.params.join("&")}`:"";return`${e.protocol}://${e.authority}${e.path}${t}`}function se(e){if(!e)return null;const t=e.split(".");if(!t||3!==t.length)return null;try{return JSON.parse(decodeURIComponent(s.atob(t[1]).split("").map((e=>"%"+("00"+e.charCodeAt(0).toString(16)).slice(-2))).join("")))}catch(e){return null}}class ae{constructor(e){this.type=e,this.anonId=null,this.eventData={},this.queue=[],this.pendingRequest=null}getStorageKey(e){const t=se(q.ACCESS_TOKEN);let i="";return i=t&&t.u?s.btoa(encodeURIComponent(t.u).replace(/%([0-9A-F]{2})/g,((e,t)=>String.fromCharCode(Number("0x"+t))))):q.ACCESS_TOKEN||"",e?`mapbox.eventData.${e}:${i}`:`mapbox.eventData:${i}`}fetchEventData(){const e=G("localStorage"),t=this.getStorageKey(),i=this.getStorageKey("uuid");if(e)try{const e=s.localStorage.getItem(t);e&&(this.eventData=JSON.parse(e));const r=s.localStorage.getItem(i);r&&(this.anonId=r)}catch(e){D("Unable to read from LocalStorage")}}saveEventData(){const e=G("localStorage"),t=this.getStorageKey(),i=this.getStorageKey("uuid");if(e)try{s.localStorage.setItem(i,this.anonId),Object.keys(this.eventData).length>=1&&s.localStorage.setItem(t,JSON.stringify(this.eventData))}catch(e){D("Unable to write to LocalStorage")}}processRequests(e){}postEvent(e,i,r,n){if(!q.EVENTS_URL)return;const o=ne(q.EVENTS_URL);o.params.push(`access_token=${n||q.ACCESS_TOKEN||""}`);const s={event:this.type,created:new Date(e).toISOString(),sdkIdentifier:"mapbox-gl-js",sdkVersion:t,skuId:Q,userId:this.anonId},a=i?v(s,i):s,l={url:oe(o),headers:{"Content-Type":"text/plain"},body:JSON.stringify([a])};this.pendingRequest=Ae(l,(e=>{this.pendingRequest=null,r(e),this.saveEventData(),this.processRequests(n)}))}queueRequest(e,t){this.queue.push(e),this.processRequests(t)}}const le=new class extends ae{constructor(e){super("appUserTurnstile"),this._customAccessToken=e}postTurnstileEvent(e,t){q.EVENTS_URL&&q.ACCESS_TOKEN&&Array.isArray(e)&&e.some((e=>te(e)||ie(e)))&&this.queueRequest(Date.now(),t)}processRequests(e){if(this.pendingRequest||0===this.queue.length)return;this.anonId&&this.eventData.lastSuccess&&this.eventData.tokenU||this.fetchEventData();const t=se(q.ACCESS_TOKEN),i=t?t.u:q.ACCESS_TOKEN;let r=i!==this.eventData.tokenU;S(this.anonId)||(this.anonId=T(),r=!0);const n=this.queue.shift();if(this.eventData.lastSuccess){const e=new Date(this.eventData.lastSuccess),t=new Date(n),i=(n-this.eventData.lastSuccess)/864e5;r=r||i>=1||i<-1||e.getDate()!==t.getDate()}else r=!0;r?this.postEvent(n,{"enabled.telemetry":!1},(e=>{e||(this.eventData.lastSuccess=n,this.eventData.tokenU=i)}),e):this.processRequests()}},ce=le.postTurnstileEvent.bind(le),he=new class extends ae{constructor(){super("map.load"),this.success={},this.skuToken=""}postMapLoadEvent(e,t,i,r){this.skuToken=t,this.errorCb=r,q.EVENTS_URL&&(i||q.ACCESS_TOKEN?this.queueRequest({id:e,timestamp:Date.now()},i):this.errorCb(new Error(ee)))}processRequests(e){if(this.pendingRequest||0===this.queue.length)return;const{id:t,timestamp:i}=this.queue.shift();t&&this.success[t]||(this.anonId||this.fetchEventData(),S(this.anonId)||(this.anonId=T()),this.postEvent(i,{skuToken:this.skuToken},(e=>{e?this.errorCb(e):t&&(this.success[t]=!0)}),e))}},ue=he.postMapLoadEvent.bind(he),de=new class extends ae{constructor(){super("map.auth"),this.success={},this.skuToken=""}getSession(e,t,i,r){if(!q.API_URL||!q.SESSION_PATH)return;const n=ne(q.API_URL+q.SESSION_PATH);n.params.push(`sku=${t||""}`),n.params.push(`access_token=${r||q.ACCESS_TOKEN||""}`);const o={url:oe(n),headers:{"Content-Type":"text/plain"}};this.pendingRequest=Ce(o,(e=>{this.pendingRequest=null,i(e),this.saveEventData(),this.processRequests(r)}))}getSessionAPI(e,t,i,r){this.skuToken=t,this.errorCb=r,q.SESSION_PATH&&q.API_URL&&(i||q.ACCESS_TOKEN?this.queueRequest({id:e,timestamp:Date.now()},i):this.errorCb(new Error(ee)))}processRequests(e){if(this.pendingRequest||0===this.queue.length)return;const{id:t,timestamp:i}=this.queue.shift();t&&this.success[t]||this.getSession(i,this.skuToken,(e=>{e?this.errorCb(e):t&&(this.success[t]=!0)}),e)}},pe=de.getSessionAPI.bind(de),fe=new Set,me="mapbox-tiles";let _e,ge,ye=500,xe=50;function ve(){s.caches&&!_e&&(_e=s.caches.open(me))}function be(e){const t=e.indexOf("?");return t<0?e:e.slice(0,t)}let we=1/0;const Te={Unknown:"Unknown",Style:"Style",Source:"Source",Tile:"Tile",Glyphs:"Glyphs",SpriteImage:"SpriteImage",SpriteJSON:"SpriteJSON",Image:"Image"};"function"==typeof Object.freeze&&Object.freeze(Te);class Ee extends Error{constructor(e,t,i){401===t&&ie(i)&&(e+=": you may have provided an invalid Mapbox access token. See https://www.mapbox.com/api-documentation/#access-tokens-and-token-scopes"),super(e),this.status=t,this.url=i}toString(){return`${this.name}: ${this.message} (${this.status}): ${this.url}`}}const Se=B()?()=>self.worker&&self.worker.referrer:()=>("blob:"===s.location.protocol?s.parent:s).location.href,Ie=function(e,t){if(!(/^file:/.test(i=e.url)||/^file:/.test(Se())&&!/^\w+:/.test(i))){if(s.fetch&&s.Request&&s.AbortController&&s.Request.prototype.hasOwnProperty("signal"))return function(e,t){const i=new s.AbortController,r=new s.Request(e.url,{method:e.method||"GET",body:e.body,credentials:e.credentials,headers:e.headers,referrer:Se(),signal:i.signal});let n=!1,o=!1;const a=(l=r.url).indexOf("sku=")>0&&ie(l);var l;"json"===e.type&&r.headers.set("Accept","application/json");const c=(i,n,l)=>{if(o)return;if(i&&"SecurityError"!==i.message&&D(i),n&&l)return h(n);const c=Date.now();s.fetch(r).then((i=>{if(i.ok){const e=a?i.clone():null;return h(i,e,c)}return t(new Ee(i.statusText,i.status,e.url))})).catch((e=>{20!==e.code&&t(new Error(e.message))}))},h=(i,a,l)=>{("arrayBuffer"===e.type?i.arrayBuffer():"json"===e.type?i.json():i.text()).then((e=>{o||(a&&l&&function(e,t,i){if(ve(),!_e)return;const r={status:t.status,statusText:t.statusText,headers:new s.Headers};t.headers.forEach(((e,t)=>r.headers.set(t,e)));const n=R(t.headers.get("Cache-Control")||"");if(n["no-store"])return;n["max-age"]&&r.headers.set("Expires",new Date(i+1e3*n["max-age"]).toUTCString());const o=r.headers.get("Expires");o&&(new Date(o).getTime()-i<42e4||function(e,t){if(void 0===ge)try{new Response(new ReadableStream),ge=!0}catch(e){ge=!1}ge?t(e.body):e.blob().then(t)}(t,(t=>{const i=new s.Response(t,r);ve(),_e&&_e.then((t=>t.put(be(e.url),i))).catch((e=>D(e.message)))})))}(r,a,l),n=!0,t(null,e,i.headers.get("Cache-Control"),i.headers.get("Expires")))})).catch((e=>{o||t(new Error(e.message))}))};return a?function(e,t){if(ve(),!_e)return t(null);const i=be(e.url);_e.then((e=>{e.match(i).then((r=>{const n=function(e){if(!e)return!1;const t=new Date(e.headers.get("Expires")||0),i=R(e.headers.get("Cache-Control")||"");return t>Date.now()&&!i["no-cache"]}(r);e.delete(i),n&&e.put(i,r.clone()),t(null,r,n)})).catch(t)})).catch(t)}(r,c):c(null,null),{cancel:()=>{o=!0,n||i.abort()}}}(e,t);if(B()&&self.worker&&self.worker.actor)return self.worker.actor.send("getResource",e,t,void 0,!0)}var i;return function(e,t){const i=new s.XMLHttpRequest;i.open(e.method||"GET",e.url,!0),"arrayBuffer"===e.type&&(i.responseType="arraybuffer");for(const t in e.headers)i.setRequestHeader(t,e.headers[t]);return"json"===e.type&&(i.responseType="text",i.setRequestHeader("Accept","application/json")),i.withCredentials="include"===e.credentials,i.onerror=()=>{t(new Error(i.statusText))},i.onload=()=>{if((i.status>=200&&i.status<300||0===i.status)&&null!==i.response){let r=i.response;if("json"===e.type)try{r=JSON.parse(i.response)}catch(e){return t(e)}t(null,r,i.getResponseHeader("Cache-Control"),i.getResponseHeader("Expires"))}else t(new Ee(i.statusText,i.status,e.url))},i.send(e.body),{cancel:()=>i.abort()}}(e,t)},Me=function(e,t){return Ie(v(e,{type:"arrayBuffer"}),t)},Ae=function(e,t){return Ie(v(e,{method:"POST"}),t)},Ce=function(e,t){return Ie(v(e,{method:"GET"}),t)};function ze(e){const t=s.document.createElement("a");return t.href=e,t.protocol===s.document.location.protocol&&t.host===s.document.location.host}const ke="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII=";let De,Pe;De=[],Pe=0;const Le=function(e,t){if(X.supported&&(e.headers||(e.headers={}),e.headers.accept="image/webp,*/*"),Pe>=q.MAX_PARALLEL_IMAGE_REQUESTS){const i={requestParameters:e,callback:t,cancelled:!1,cancel(){this.cancelled=!0}};return De.push(i),i}Pe++;let i=!1;const r=()=>{if(!i)for(i=!0,Pe--;De.length&&Pe<q.MAX_PARALLEL_IMAGE_REQUESTS;){const e=De.shift(),{requestParameters:t,callback:i,cancelled:r}=e;r||(e.cancel=Le(t,i).cancel)}},n=Me(e,((e,i,n,o)=>{r(),e?t(e):i&&(s.createImageBitmap?function(e,t){const i=new s.Blob([new Uint8Array(e)],{type:"image/png"});s.createImageBitmap(i).then((e=>{t(null,e)})).catch((e=>{t(new Error(`Could not load image because of ${e.message}. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.`))}))}(i,((e,i)=>t(e,i,n,o))):function(e,t){const i=new s.Image,r=s.URL;i.onload=()=>{t(null,i),r.revokeObjectURL(i.src),i.onload=null,s.requestAnimationFrame((()=>{i.src=ke}))},i.onerror=()=>t(new Error("Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported."));const n=new s.Blob([new Uint8Array(e)],{type:"image/png"});i.src=e.byteLength?r.createObjectURL(n):ke}(i,((e,i)=>t(e,i,n,o))))}));return{cancel:()=>{n.cancel(),r()}}};function Be(e,t,i){i[e]&&-1!==i[e].indexOf(t)||(i[e]=i[e]||[],i[e].push(t))}function Re(e,t,i){if(i&&i[e]){const r=i[e].indexOf(t);-1!==r&&i[e].splice(r,1)}}class Fe{constructor(e,t={}){v(this,t),this.type=e}}class Oe extends Fe{constructor(e,t={}){super("error",v({error:e},t))}}class Ue{on(e,t){return this._listeners=this._listeners||{},Be(e,t,this._listeners),this}off(e,t){return Re(e,t,this._listeners),Re(e,t,this._oneTimeListeners),this}once(e,t){return t?(this._oneTimeListeners=this._oneTimeListeners||{},Be(e,t,this._oneTimeListeners),this):new Promise((t=>this.once(e,t)))}fire(e,t){"string"==typeof e&&(e=new Fe(e,t||{}));const i=e.type;if(this.listens(i)){e.target=this;const t=this._listeners&&this._listeners[i]?this._listeners[i].slice():[];for(const i of t)i.call(this,e);const r=this._oneTimeListeners&&this._oneTimeListeners[i]?this._oneTimeListeners[i].slice():[];for(const t of r)Re(i,t,this._oneTimeListeners),t.call(this,e);const n=this._eventedParent;n&&(v(e,"function"==typeof this._eventedParentData?this._eventedParentData():this._eventedParentData),n.fire(e))}else e instanceof Oe&&console.error(e.error);return this}listens(e){return!!(this._listeners&&this._listeners[e]&&this._listeners[e].length>0||this._oneTimeListeners&&this._oneTimeListeners[e]&&this._oneTimeListeners[e].length>0||this._eventedParent&&this._eventedParent.listens(e))}setEventedParent(e,t){return this._eventedParent=e,this._eventedParentData=t,this}}var Ve=JSON.parse('{"$version":8,"$root":{"version":{"required":true,"type":"enum","values":[8]},"name":{"type":"string"},"metadata":{"type":"*"},"center":{"type":"array","value":"number"},"zoom":{"type":"number"},"bearing":{"type":"number","default":0,"period":360,"units":"degrees"},"pitch":{"type":"number","default":0,"units":"degrees"},"light":{"type":"light"},"terrain":{"type":"terrain"},"fog":{"type":"fog"},"sources":{"required":true,"type":"sources"},"sprite":{"type":"string"},"glyphs":{"type":"string"},"transition":{"type":"transition"},"projection":{"type":"projection"},"layers":{"required":true,"type":"array","value":"layer"}},"sources":{"*":{"type":"source"}},"source":["source_vector","source_raster","source_raster_dem","source_geojson","source_video","source_image"],"source_vector":{"type":{"required":true,"type":"enum","values":{"vector":{}}},"url":{"type":"string"},"tiles":{"type":"array","value":"string"},"bounds":{"type":"array","value":"number","length":4,"default":[-180,-85.051129,180,85.051129]},"scheme":{"type":"enum","values":{"xyz":{},"tms":{}},"default":"xyz"},"minzoom":{"type":"number","default":0},"maxzoom":{"type":"number","default":22},"attribution":{"type":"string"},"promoteId":{"type":"promoteId"},"volatile":{"type":"boolean","default":false},"*":{"type":"*"}},"source_raster":{"type":{"required":true,"type":"enum","values":{"raster":{}}},"url":{"type":"string"},"tiles":{"type":"array","value":"string"},"bounds":{"type":"array","value":"number","length":4,"default":[-180,-85.051129,180,85.051129]},"minzoom":{"type":"number","default":0},"maxzoom":{"type":"number","default":22},"tileSize":{"type":"number","default":512,"units":"pixels"},"scheme":{"type":"enum","values":{"xyz":{},"tms":{}},"default":"xyz"},"attribution":{"type":"string"},"volatile":{"type":"boolean","default":false},"*":{"type":"*"}},"source_raster_dem":{"type":{"required":true,"type":"enum","values":{"raster-dem":{}}},"url":{"type":"string"},"tiles":{"type":"array","value":"string"},"bounds":{"type":"array","value":"number","length":4,"default":[-180,-85.051129,180,85.051129]},"minzoom":{"type":"number","default":0},"maxzoom":{"type":"number","default":22},"tileSize":{"type":"number","default":512,"units":"pixels"},"attribution":{"type":"string"},"encoding":{"type":"enum","values":{"terrarium":{},"mapbox":{}},"default":"mapbox"},"volatile":{"type":"boolean","default":false},"*":{"type":"*"}},"source_geojson":{"type":{"required":true,"type":"enum","values":{"geojson":{}}},"data":{"type":"*"},"maxzoom":{"type":"number","default":18},"attribution":{"type":"string"},"buffer":{"type":"number","default":128,"maximum":512,"minimum":0},"filter":{"type":"*"},"tolerance":{"type":"number","default":0.375},"cluster":{"type":"boolean","default":false},"clusterRadius":{"type":"number","default":50,"minimum":0},"clusterMaxZoom":{"type":"number"},"clusterMinPoints":{"type":"number"},"clusterProperties":{"type":"*"},"lineMetrics":{"type":"boolean","default":false},"generateId":{"type":"boolean","default":false},"promoteId":{"type":"promoteId"}},"source_video":{"type":{"required":true,"type":"enum","values":{"video":{}}},"urls":{"required":true,"type":"array","value":"string"},"coordinates":{"required":true,"type":"array","length":4,"value":{"type":"array","length":2,"value":"number"}}},"source_image":{"type":{"required":true,"type":"enum","values":{"image":{}}},"url":{"required":true,"type":"string"},"coordinates":{"required":true,"type":"array","length":4,"value":{"type":"array","length":2,"value":"number"}}},"layer":{"id":{"type":"string","required":true},"type":{"type":"enum","values":{"fill":{},"line":{},"symbol":{},"circle":{},"heatmap":{},"fill-extrusion":{},"raster":{},"hillshade":{},"background":{},"sky":{}},"required":true},"metadata":{"type":"*"},"source":{"type":"string"},"source-layer":{"type":"string"},"minzoom":{"type":"number","minimum":0,"maximum":24},"maxzoom":{"type":"number","minimum":0,"maximum":24},"filter":{"type":"filter"},"layout":{"type":"layout"},"paint":{"type":"paint"}},"layout":["layout_fill","layout_line","layout_circle","layout_heatmap","layout_fill-extrusion","layout_symbol","layout_raster","layout_hillshade","layout_background","layout_sky"],"layout_background":{"visibility":{"type":"enum","values":{"visible":{},"none":{}},"default":"visible","property-type":"constant"}},"layout_sky":{"visibility":{"type":"enum","values":{"visible":{},"none":{}},"default":"visible","property-type":"constant"}},"layout_fill":{"fill-sort-key":{"type":"number","expression":{"interpolated":false,"parameters":["zoom","feature"]},"property-type":"data-driven"},"visibility":{"type":"enum","values":{"visible":{},"none":{}},"default":"visible","property-type":"constant"}},"layout_circle":{"circle-sort-key":{"type":"number","expression":{"interpolated":false,"parameters":["zoom","feature"]},"property-type":"data-driven"},"visibility":{"type":"enum","values":{"visible":{},"none":{}},"default":"visible","property-type":"constant"}},"layout_heatmap":{"visibility":{"type":"enum","values":{"visible":{},"none":{}},"default":"visible","property-type":"constant"}},"layout_fill-extrusion":{"visibility":{"type":"enum","values":{"visible":{},"none":{}},"default":"visible","property-type":"constant"}},"layout_line":{"line-cap":{"type":"enum","values":{"butt":{},"round":{},"square":{}},"default":"butt","expression":{"interpolated":false,"parameters":["zoom","feature"]},"property-type":"data-driven"},"line-join":{"type":"enum","values":{"bevel":{},"round":{},"miter":{}},"default":"miter","expression":{"interpolated":false,"parameters":["zoom","feature"]},"property-type":"data-driven"},"line-miter-limit":{"type":"number","default":2,"requires":[{"line-join":"miter"}],"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"line-round-limit":{"type":"number","default":1.05,"requires":[{"line-join":"round"}],"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"line-sort-key":{"type":"number","expression":{"interpolated":false,"parameters":["zoom","feature"]},"property-type":"data-driven"},"visibility":{"type":"enum","values":{"visible":{},"none":{}},"default":"visible","property-type":"constant"}},"layout_symbol":{"symbol-placement":{"type":"enum","values":{"point":{},"line":{},"line-center":{}},"default":"point","expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"symbol-spacing":{"type":"number","default":250,"minimum":1,"units":"pixels","requires":[{"symbol-placement":"line"}],"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"symbol-avoid-edges":{"type":"boolean","default":false,"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"symbol-sort-key":{"type":"number","expression":{"interpolated":false,"parameters":["zoom","feature"]},"property-type":"data-driven"},"symbol-z-order":{"type":"enum","values":{"auto":{},"viewport-y":{},"source":{}},"default":"auto","expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"icon-allow-overlap":{"type":"boolean","default":false,"requires":["icon-image"],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"icon-ignore-placement":{"type":"boolean","default":false,"requires":["icon-image"],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"icon-optional":{"type":"boolean","default":false,"requires":["icon-image","text-field"],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"icon-rotation-alignment":{"type":"enum","values":{"map":{},"viewport":{},"auto":{}},"default":"auto","requires":["icon-image"],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"icon-size":{"type":"number","default":1,"minimum":0,"units":"factor of the original icon size","requires":["icon-image"],"expression":{"interpolated":true,"parameters":["zoom","feature"]},"property-type":"data-driven"},"icon-text-fit":{"type":"enum","values":{"none":{},"width":{},"height":{},"both":{}},"default":"none","requires":["icon-image","text-field"],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"icon-text-fit-padding":{"type":"array","value":"number","length":4,"default":[0,0,0,0],"units":"pixels","requires":["icon-image","text-field",{"icon-text-fit":["both","width","height"]}],"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"icon-image":{"type":"resolvedImage","tokens":true,"expression":{"interpolated":false,"parameters":["zoom","feature"]},"property-type":"data-driven"},"icon-rotate":{"type":"number","default":0,"period":360,"units":"degrees","requires":["icon-image"],"expression":{"interpolated":true,"parameters":["zoom","feature"]},"property-type":"data-driven"},"icon-padding":{"type":"number","default":2,"minimum":0,"units":"pixels","requires":["icon-image"],"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"icon-keep-upright":{"type":"boolean","default":false,"requires":["icon-image",{"icon-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"icon-offset":{"type":"array","value":"number","length":2,"default":[0,0],"requires":["icon-image"],"expression":{"interpolated":true,"parameters":["zoom","feature"]},"property-type":"data-driven"},"icon-anchor":{"type":"enum","values":{"center":{},"left":{},"right":{},"top":{},"bottom":{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},"default":"center","requires":["icon-image"],"expression":{"interpolated":false,"parameters":["zoom","feature"]},"property-type":"data-driven"},"icon-pitch-alignment":{"type":"enum","values":{"map":{},"viewport":{},"auto":{}},"default":"auto","requires":["icon-image"],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"text-pitch-alignment":{"type":"enum","values":{"map":{},"viewport":{},"auto":{}},"default":"auto","requires":["text-field"],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"text-rotation-alignment":{"type":"enum","values":{"map":{},"viewport":{},"auto":{}},"default":"auto","requires":["text-field"],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"text-field":{"type":"formatted","default":"","tokens":true,"expression":{"interpolated":false,"parameters":["zoom","feature"]},"property-type":"data-driven"},"text-font":{"type":"array","value":"string","default":["Open Sans Regular","Arial Unicode MS Regular"],"requires":["text-field"],"expression":{"interpolated":false,"parameters":["zoom","feature"]},"property-type":"data-driven"},"text-size":{"type":"number","default":16,"minimum":0,"units":"pixels","requires":["text-field"],"expression":{"interpolated":true,"parameters":["zoom","feature"]},"property-type":"data-driven"},"text-max-width":{"type":"number","default":10,"minimum":0,"units":"ems","requires":["text-field",{"symbol-placement":["point"]}],"expression":{"interpolated":true,"parameters":["zoom","feature"]},"property-type":"data-driven"},"text-line-height":{"type":"number","default":1.2,"units":"ems","requires":["text-field"],"expression":{"interpolated":true,"parameters":["zoom","feature"]},"property-type":"data-driven"},"text-letter-spacing":{"type":"number","default":0,"units":"ems","requires":["text-field"],"expression":{"interpolated":true,"parameters":["zoom","feature"]},"property-type":"data-driven"},"text-justify":{"type":"enum","values":{"auto":{},"left":{},"center":{},"right":{}},"default":"center","requires":["text-field"],"expression":{"interpolated":false,"parameters":["zoom","feature"]},"property-type":"data-driven"},"text-radial-offset":{"type":"number","units":"ems","default":0,"requires":["text-field"],"property-type":"data-driven","expression":{"interpolated":true,"parameters":["zoom","feature"]}},"text-variable-anchor":{"type":"array","value":"enum","values":{"center":{},"left":{},"right":{},"top":{},"bottom":{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},"requires":["text-field",{"symbol-placement":["point"]}],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"text-anchor":{"type":"enum","values":{"center":{},"left":{},"right":{},"top":{},"bottom":{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},"default":"center","requires":["text-field",{"!":"text-variable-anchor"}],"expression":{"interpolated":false,"parameters":["zoom","feature"]},"property-type":"data-driven"},"text-max-angle":{"type":"number","default":45,"units":"degrees","requires":["text-field",{"symbol-placement":["line","line-center"]}],"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"text-writing-mode":{"type":"array","value":"enum","values":{"horizontal":{},"vertical":{}},"requires":["text-field"],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"text-rotate":{"type":"number","default":0,"period":360,"units":"degrees","requires":["text-field"],"expression":{"interpolated":true,"parameters":["zoom","feature"]},"property-type":"data-driven"},"text-padding":{"type":"number","default":2,"minimum":0,"units":"pixels","requires":["text-field"],"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"text-keep-upright":{"type":"boolean","default":true,"requires":["text-field",{"text-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"text-transform":{"type":"enum","values":{"none":{},"uppercase":{},"lowercase":{}},"default":"none","requires":["text-field"],"expression":{"interpolated":false,"parameters":["zoom","feature"]},"property-type":"data-driven"},"text-offset":{"type":"array","value":"number","units":"ems","length":2,"default":[0,0],"requires":["text-field",{"!":"text-radial-offset"}],"expression":{"interpolated":true,"parameters":["zoom","feature"]},"property-type":"data-driven"},"text-allow-overlap":{"type":"boolean","default":false,"requires":["text-field"],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"text-ignore-placement":{"type":"boolean","default":false,"requires":["text-field"],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"text-optional":{"type":"boolean","default":false,"requires":["text-field","icon-image"],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"visibility":{"type":"enum","values":{"visible":{},"none":{}},"default":"visible","property-type":"constant"}},"layout_raster":{"visibility":{"type":"enum","values":{"visible":{},"none":{}},"default":"visible","property-type":"constant"}},"layout_hillshade":{"visibility":{"type":"enum","values":{"visible":{},"none":{}},"default":"visible","property-type":"constant"}},"filter":{"type":"array","value":"*"},"filter_symbol":{"type":"boolean","default":false,"transition":false,"property-type":"data-driven","expression":{"interpolated":false,"parameters":["zoom","feature","pitch","distance-from-center"]}},"filter_fill":{"type":"boolean","default":false,"transition":false,"property-type":"data-driven","expression":{"interpolated":false,"parameters":["zoom","feature"]}},"filter_line":{"type":"boolean","default":false,"transition":false,"property-type":"data-driven","expression":{"interpolated":false,"parameters":["zoom","feature"]}},"filter_circle":{"type":"boolean","default":false,"transition":false,"property-type":"data-driven","expression":{"interpolated":false,"parameters":["zoom","feature"]}},"filter_fill-extrusion":{"type":"boolean","default":false,"transition":false,"property-type":"data-driven","expression":{"interpolated":false,"parameters":["zoom","feature"]}},"filter_heatmap":{"type":"boolean","default":false,"transition":false,"property-type":"data-driven","expression":{"interpolated":false,"parameters":["zoom","feature"]}},"filter_operator":{"type":"enum","values":{"==":{},"!=":{},">":{},">=":{},"<":{},"<=":{},"in":{},"!in":{},"all":{},"any":{},"none":{},"has":{},"!has":{},"within":{}}},"geometry_type":{"type":"enum","values":{"Point":{},"LineString":{},"Polygon":{}}},"function":{"expression":{"type":"expression"},"stops":{"type":"array","value":"function_stop"},"base":{"type":"number","default":1,"minimum":0},"property":{"type":"string","default":"$zoom"},"type":{"type":"enum","values":{"identity":{},"exponential":{},"interval":{},"categorical":{}},"default":"exponential"},"colorSpace":{"type":"enum","values":{"rgb":{},"lab":{},"hcl":{}},"default":"rgb"},"default":{"type":"*","required":false}},"function_stop":{"type":"array","minimum":0,"maximum":24,"value":["number","color"],"length":2},"expression":{"type":"array","value":"*","minimum":1},"fog":{"range":{"type":"array","default":[0.5,10],"minimum":-20,"maximum":20,"length":2,"value":"number","property-type":"data-constant","transition":true,"expression":{"interpolated":true,"parameters":["zoom"]}},"color":{"type":"color","property-type":"data-constant","default":"#ffffff","expression":{"interpolated":true,"parameters":["zoom"]},"transition":true},"horizon-blend":{"type":"number","property-type":"data-constant","default":0.1,"minimum":0,"maximum":1,"expression":{"interpolated":true,"parameters":["zoom"]},"transition":true}},"light":{"anchor":{"type":"enum","default":"viewport","values":{"map":{},"viewport":{}},"property-type":"data-constant","transition":false,"expression":{"interpolated":false,"parameters":["zoom"]}},"position":{"type":"array","default":[1.15,210,30],"length":3,"value":"number","property-type":"data-constant","transition":true,"expression":{"interpolated":true,"parameters":["zoom"]}},"color":{"type":"color","property-type":"data-constant","default":"#ffffff","expression":{"interpolated":true,"parameters":["zoom"]},"transition":true},"intensity":{"type":"number","property-type":"data-constant","default":0.5,"minimum":0,"maximum":1,"expression":{"interpolated":true,"parameters":["zoom"]},"transition":true}},"projection":{"name":{"type":"enum","values":{"albers":{},"equalEarth":{},"equirectangular":{},"lambertConformalConic":{},"mercator":{},"naturalEarth":{},"winkelTripel":{}},"default":"mercator","required":true},"center":{"type":"array","length":2,"value":"number","property-type":"data-constant","transition":false,"requires":[{"name":["albers","lambertConformalConic"]}]},"parallels":{"type":"array","length":2,"value":"number","property-type":"data-constant","transition":false,"requires":[{"name":["albers","lambertConformalConic"]}]}},"terrain":{"source":{"type":"string","required":true},"exaggeration":{"type":"number","property-type":"data-constant","default":1,"minimum":0,"maximum":1000,"expression":{"interpolated":true,"parameters":["zoom"]},"transition":true}},"paint":["paint_fill","paint_line","paint_circle","paint_heatmap","paint_fill-extrusion","paint_symbol","paint_raster","paint_hillshade","paint_background","paint_sky"],"paint_fill":{"fill-antialias":{"type":"boolean","default":true,"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"fill-opacity":{"type":"number","default":1,"minimum":0,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-color":{"type":"color","default":"#000000","transition":true,"requires":[{"!":"fill-pattern"}],"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-outline-color":{"type":"color","transition":true,"requires":[{"!":"fill-pattern"},{"fill-antialias":true}],"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-translate":{"type":"array","value":"number","length":2,"default":[0,0],"transition":true,"units":"pixels","expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"fill-translate-anchor":{"type":"enum","values":{"map":{},"viewport":{}},"default":"map","requires":["fill-translate"],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"fill-pattern":{"type":"resolvedImage","transition":true,"expression":{"interpolated":false,"parameters":["zoom","feature"]},"property-type":"cross-faded-data-driven"}},"paint_fill-extrusion":{"fill-extrusion-opacity":{"type":"number","default":1,"minimum":0,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"fill-extrusion-color":{"type":"color","default":"#000000","transition":true,"requires":[{"!":"fill-extrusion-pattern"}],"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-translate":{"type":"array","value":"number","length":2,"default":[0,0],"transition":true,"units":"pixels","expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"fill-extrusion-translate-anchor":{"type":"enum","values":{"map":{},"viewport":{}},"default":"map","requires":["fill-extrusion-translate"],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"fill-extrusion-pattern":{"type":"resolvedImage","transition":true,"expression":{"interpolated":false,"parameters":["zoom","feature"]},"property-type":"cross-faded-data-driven"},"fill-extrusion-height":{"type":"number","default":0,"minimum":0,"units":"meters","transition":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-base":{"type":"number","default":0,"minimum":0,"units":"meters","transition":true,"requires":["fill-extrusion-height"],"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-vertical-gradient":{"type":"boolean","default":true,"transition":false,"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"}},"paint_line":{"line-opacity":{"type":"number","default":1,"minimum":0,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-color":{"type":"color","default":"#000000","transition":true,"requires":[{"!":"line-pattern"}],"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-translate":{"type":"array","value":"number","length":2,"default":[0,0],"transition":true,"units":"pixels","expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"line-translate-anchor":{"type":"enum","values":{"map":{},"viewport":{}},"default":"map","requires":["line-translate"],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"line-width":{"type":"number","default":1,"minimum":0,"transition":true,"units":"pixels","expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-gap-width":{"type":"number","default":0,"minimum":0,"transition":true,"units":"pixels","expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-offset":{"type":"number","default":0,"transition":true,"units":"pixels","expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-blur":{"type":"number","default":0,"minimum":0,"transition":true,"units":"pixels","expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-dasharray":{"type":"array","value":"number","minimum":0,"transition":true,"units":"line widths","requires":[{"!":"line-pattern"}],"expression":{"interpolated":false,"parameters":["zoom","feature"]},"property-type":"cross-faded-data-driven"},"line-pattern":{"type":"resolvedImage","transition":true,"expression":{"interpolated":false,"parameters":["zoom","feature"]},"property-type":"cross-faded-data-driven"},"line-gradient":{"type":"color","transition":false,"requires":[{"!":"line-pattern"},{"source":"geojson","has":{"lineMetrics":true}}],"expression":{"interpolated":true,"parameters":["line-progress"]},"property-type":"color-ramp"}},"paint_circle":{"circle-radius":{"type":"number","default":5,"minimum":0,"transition":true,"units":"pixels","expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-color":{"type":"color","default":"#000000","transition":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-blur":{"type":"number","default":0,"transition":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-opacity":{"type":"number","default":1,"minimum":0,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-translate":{"type":"array","value":"number","length":2,"default":[0,0],"transition":true,"units":"pixels","expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"circle-translate-anchor":{"type":"enum","values":{"map":{},"viewport":{}},"default":"map","requires":["circle-translate"],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"circle-pitch-scale":{"type":"enum","values":{"map":{},"viewport":{}},"default":"map","expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"circle-pitch-alignment":{"type":"enum","values":{"map":{},"viewport":{}},"default":"viewport","expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"circle-stroke-width":{"type":"number","default":0,"minimum":0,"transition":true,"units":"pixels","expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-color":{"type":"color","default":"#000000","transition":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-opacity":{"type":"number","default":1,"minimum":0,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"}},"paint_heatmap":{"heatmap-radius":{"type":"number","default":30,"minimum":1,"transition":true,"units":"pixels","expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-weight":{"type":"number","default":1,"minimum":0,"transition":false,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-intensity":{"type":"number","default":1,"minimum":0,"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"heatmap-color":{"type":"color","default":["interpolate",["linear"],["heatmap-density"],0,"rgba(0, 0, 255, 0)",0.1,"royalblue",0.3,"cyan",0.5,"lime",0.7,"yellow",1,"red"],"transition":false,"expression":{"interpolated":true,"parameters":["heatmap-density"]},"property-type":"color-ramp"},"heatmap-opacity":{"type":"number","default":1,"minimum":0,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"}},"paint_symbol":{"icon-opacity":{"type":"number","default":1,"minimum":0,"maximum":1,"transition":true,"requires":["icon-image"],"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-color":{"type":"color","default":"#000000","transition":true,"requires":["icon-image"],"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-color":{"type":"color","default":"rgba(0, 0, 0, 0)","transition":true,"requires":["icon-image"],"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-width":{"type":"number","default":0,"minimum":0,"transition":true,"units":"pixels","requires":["icon-image"],"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-blur":{"type":"number","default":0,"minimum":0,"transition":true,"units":"pixels","requires":["icon-image"],"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-translate":{"type":"array","value":"number","length":2,"default":[0,0],"transition":true,"units":"pixels","requires":["icon-image"],"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"icon-translate-anchor":{"type":"enum","values":{"map":{},"viewport":{}},"default":"map","requires":["icon-image","icon-translate"],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"text-opacity":{"type":"number","default":1,"minimum":0,"maximum":1,"transition":true,"requires":["text-field"],"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-color":{"type":"color","default":"#000000","transition":true,"overridable":true,"requires":["text-field"],"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-color":{"type":"color","default":"rgba(0, 0, 0, 0)","transition":true,"requires":["text-field"],"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-width":{"type":"number","default":0,"minimum":0,"transition":true,"units":"pixels","requires":["text-field"],"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-blur":{"type":"number","default":0,"minimum":0,"transition":true,"units":"pixels","requires":["text-field"],"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-translate":{"type":"array","value":"number","length":2,"default":[0,0],"transition":true,"units":"pixels","requires":["text-field"],"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"text-translate-anchor":{"type":"enum","values":{"map":{},"viewport":{}},"default":"map","requires":["text-field","text-translate"],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"}},"paint_raster":{"raster-opacity":{"type":"number","default":1,"minimum":0,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"raster-hue-rotate":{"type":"number","default":0,"period":360,"transition":true,"units":"degrees","expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"raster-brightness-min":{"type":"number","default":0,"minimum":0,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"raster-brightness-max":{"type":"number","default":1,"minimum":0,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"raster-saturation":{"type":"number","default":0,"minimum":-1,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"raster-contrast":{"type":"number","default":0,"minimum":-1,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"raster-resampling":{"type":"enum","values":{"linear":{},"nearest":{}},"default":"linear","expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"raster-fade-duration":{"type":"number","default":300,"minimum":0,"transition":false,"units":"milliseconds","expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"}},"paint_hillshade":{"hillshade-illumination-direction":{"type":"number","default":335,"minimum":0,"maximum":359,"transition":false,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"hillshade-illumination-anchor":{"type":"enum","values":{"map":{},"viewport":{}},"default":"viewport","expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"hillshade-exaggeration":{"type":"number","default":0.5,"minimum":0,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"hillshade-shadow-color":{"type":"color","default":"#000000","transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"hillshade-highlight-color":{"type":"color","default":"#FFFFFF","transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"hillshade-accent-color":{"type":"color","default":"#000000","transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"}},"paint_background":{"background-color":{"type":"color","default":"#000000","transition":true,"requires":[{"!":"background-pattern"}],"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"background-pattern":{"type":"resolvedImage","transition":true,"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"cross-faded"},"background-opacity":{"type":"number","default":1,"minimum":0,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"}},"paint_sky":{"sky-type":{"type":"enum","values":{"gradient":{},"atmosphere":{}},"default":"atmosphere","expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"sky-atmosphere-sun":{"type":"array","value":"number","length":2,"units":"degrees","minimum":[0,0],"maximum":[360,180],"transition":false,"requires":[{"sky-type":"atmosphere"}],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"sky-atmosphere-sun-intensity":{"type":"number","requires":[{"sky-type":"atmosphere"}],"default":10,"minimum":0,"maximum":100,"transition":false,"property-type":"data-constant"},"sky-gradient-center":{"type":"array","requires":[{"sky-type":"gradient"}],"value":"number","default":[0,0],"length":2,"units":"degrees","minimum":[0,0],"maximum":[360,180],"transition":false,"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"sky-gradient-radius":{"type":"number","requires":[{"sky-type":"gradient"}],"default":90,"minimum":0,"maximum":180,"transition":false,"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"sky-gradient":{"type":"color","default":["interpolate",["linear"],["sky-radial-progress"],0.8,"#87ceeb",1,"white"],"transition":false,"requires":[{"sky-type":"gradient"}],"expression":{"interpolated":true,"parameters":["sky-radial-progress"]},"property-type":"color-ramp"},"sky-atmosphere-halo-color":{"type":"color","default":"white","transition":false,"requires":[{"sky-type":"atmosphere"}],"property-type":"data-constant"},"sky-atmosphere-color":{"type":"color","default":"white","transition":false,"requires":[{"sky-type":"atmosphere"}],"property-type":"data-constant"},"sky-opacity":{"type":"number","default":1,"minimum":0,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"}},"transition":{"duration":{"type":"number","default":300,"minimum":0,"units":"milliseconds"},"delay":{"type":"number","default":0,"minimum":0,"units":"milliseconds"}},"property-type":{"data-driven":{"type":"property-type"},"cross-faded":{"type":"property-type"},"cross-faded-data-driven":{"type":"property-type"},"color-ramp":{"type":"property-type"},"data-constant":{"type":"property-type"},"constant":{"type":"property-type"}},"promoteId":{"*":{"type":"string"}}}');function je(e,...t){for(const i of t)for(const t in i)e[t]=i[t];return e}function Ne(e){return e instanceof Number||e instanceof String||e instanceof Boolean?e.valueOf():e}function Ge(e){if(Array.isArray(e))return e.map(Ge);if(e instanceof Object&&!(e instanceof Number||e instanceof String||e instanceof Boolean)){const t={};for(const i in e)t[i]=Ge(e[i]);return t}return Ne(e)}class Ze extends Error{constructor(e,t){super(t),this.message=t,this.key=e}}class $e{constructor(e,t=[]){this.parent=e,this.bindings={};for(const[e,i]of t)this.bindings[e]=i}concat(e){return new $e(this,e)}get(e){if(this.bindings[e])return this.bindings[e];if(this.parent)return this.parent.get(e);throw new Error(`${e} not found in scope.`)}has(e){return!!this.bindings[e]||!!this.parent&&this.parent.has(e)}}const qe={kind:"null"},Xe={kind:"number"},We={kind:"string"},He={kind:"boolean"},Ye={kind:"color"},Ke={kind:"object"},Je={kind:"value"},Qe={kind:"collator"},et={kind:"formatted"},tt={kind:"resolvedImage"};function it(e,t){return{kind:"array",itemType:e,N:t}}function rt(e){if("array"===e.kind){const t=rt(e.itemType);return"number"==typeof e.N?`array<${t}, ${e.N}>`:"value"===e.itemType.kind?"array":`array<${t}>`}return e.kind}const nt=[qe,Xe,We,He,Ye,et,Ke,it(Je),tt];function ot(e,t){if("error"===t.kind)return null;if("array"===e.kind){if("array"===t.kind&&(0===t.N&&"value"===t.itemType.kind||!ot(e.itemType,t.itemType))&&("number"!=typeof e.N||e.N===t.N))return null}else{if(e.kind===t.kind)return null;if("value"===e.kind)for(const e of nt)if(!ot(e,t))return null}return`Expected ${rt(e)} but found ${rt(t)} instead.`}function st(e,t){return t.some((t=>t.kind===e.kind))}function at(e,t){return t.some((t=>"null"===t?null===e:"array"===t?Array.isArray(e):"object"===t?e&&!Array.isArray(e)&&"object"==typeof e:t===typeof e))}function lt(e){var t={exports:{}};return e(t,t.exports),t.exports}var ct=lt((function(e,t){var i={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],rebeccapurple:[102,51,153,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]};function r(e){return(e=Math.round(e))<0?0:e>255?255:e}function n(e){return r("%"===e[e.length-1]?parseFloat(e)/100*255:parseInt(e))}function o(e){return(t="%"===e[e.length-1]?parseFloat(e)/100:parseFloat(e))<0?0:t>1?1:t;var t}function s(e,t,i){return i<0?i+=1:i>1&&(i-=1),6*i<1?e+(t-e)*i*6:2*i<1?t:3*i<2?e+(t-e)*(2/3-i)*6:e}try{t.parseCSSColor=function(e){var t,a=e.replace(/ /g,"").toLowerCase();if(a in i)return i[a].slice();if("#"===a[0])return 4===a.length?(t=parseInt(a.substr(1),16))>=0&&t<=4095?[(3840&t)>>4|(3840&t)>>8,240&t|(240&t)>>4,15&t|(15&t)<<4,1]:null:7===a.length&&(t=parseInt(a.substr(1),16))>=0&&t<=16777215?[(16711680&t)>>16,(65280&t)>>8,255&t,1]:null;var l=a.indexOf("("),c=a.indexOf(")");if(-1!==l&&c+1===a.length){var h=a.substr(0,l),u=a.substr(l+1,c-(l+1)).split(","),d=1;switch(h){case"rgba":if(4!==u.length)return null;d=o(u.pop());case"rgb":return 3!==u.length?null:[n(u[0]),n(u[1]),n(u[2]),d];case"hsla":if(4!==u.length)return null;d=o(u.pop());case"hsl":if(3!==u.length)return null;var p=(parseFloat(u[0])%360+360)%360/360,f=o(u[1]),m=o(u[2]),_=m<=.5?m*(f+1):m+f-m*f,g=2*m-_;return[r(255*s(g,_,p+1/3)),r(255*s(g,_,p)),r(255*s(g,_,p-1/3)),d];default:return null}}return null}}catch(e){}}));class ht{constructor(e,t,i,r=1){this.r=e,this.g=t,this.b=i,this.a=r}static parse(e){if(!e)return;if(e instanceof ht)return e;if("string"!=typeof e)return;const t=ct.parseCSSColor(e);return t?new ht(t[0]/255*t[3],t[1]/255*t[3],t[2]/255*t[3],t[3]):void 0}toString(){const[e,t,i,r]=this.toArray();return`rgba(${Math.round(e)},${Math.round(t)},${Math.round(i)},${r})`}toArray(){const{r:e,g:t,b:i,a:r}=this;return 0===r?[0,0,0,0]:[255*e/r,255*t/r,255*i/r,r]}}ht.black=new ht(0,0,0,1),ht.white=new ht(1,1,1,1),ht.transparent=new ht(0,0,0,0),ht.red=new ht(1,0,0,1),ht.blue=new ht(0,0,1,1);class ut{constructor(e,t,i){this.sensitivity=e?t?"variant":"case":t?"accent":"base",this.locale=i,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:"search"})}compare(e,t){return this.collator.compare(e,t)}resolvedLocale(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale}}class dt{constructor(e,t,i,r,n){this.text=e.normalize?e.normalize():e,this.image=t,this.scale=i,this.fontStack=r,this.textColor=n}}class pt{constructor(e){this.sections=e}static fromString(e){return new pt([new dt(e,null,null,null,null)])}isEmpty(){return 0===this.sections.length||!this.sections.some((e=>0!==e.text.length||e.image&&0!==e.image.name.length))}static factory(e){return e instanceof pt?e:pt.fromString(e)}toString(){return 0===this.sections.length?"":this.sections.map((e=>e.text)).join("")}serialize(){const e=["format"];for(const t of this.sections){if(t.image){e.push(["image",t.image.name]);continue}e.push(t.text);const i={};t.fontStack&&(i["text-font"]=["literal",t.fontStack.split(",")]),t.scale&&(i["font-scale"]=t.scale),t.textColor&&(i["text-color"]=["rgba"].concat(t.textColor.toArray())),e.push(i)}return e}}class ft{constructor(e){this.name=e.name,this.available=e.available}toString(){return this.name}static fromString(e){return e?new ft({name:e,available:!1}):null}serialize(){return["image",this.name]}}function mt(e,t,i,r){return"number"==typeof e&&e>=0&&e<=255&&"number"==typeof t&&t>=0&&t<=255&&"number"==typeof i&&i>=0&&i<=255?void 0===r||"number"==typeof r&&r>=0&&r<=1?null:`Invalid rgba value [${[e,t,i,r].join(", ")}]: 'a' must be between 0 and 1.`:`Invalid rgba value [${("number"==typeof r?[e,t,i,r]:[e,t,i]).join(", ")}]: 'r', 'g', and 'b' must be between 0 and 255.`}function _t(e){if(null===e)return!0;if("string"==typeof e)return!0;if("boolean"==typeof e)return!0;if("number"==typeof e)return!0;if(e instanceof ht)return!0;if(e instanceof ut)return!0;if(e instanceof pt)return!0;if(e instanceof ft)return!0;if(Array.isArray(e)){for(const t of e)if(!_t(t))return!1;return!0}if("object"==typeof e){for(const t in e)if(!_t(e[t]))return!1;return!0}return!1}function gt(e){if(null===e)return qe;if("string"==typeof e)return We;if("boolean"==typeof e)return He;if("number"==typeof e)return Xe;if(e instanceof ht)return Ye;if(e instanceof ut)return Qe;if(e instanceof pt)return et;if(e instanceof ft)return tt;if(Array.isArray(e)){const t=e.length;let i;for(const t of e){const e=gt(t);if(i){if(i===e)continue;i=Je;break}i=e}return it(i||Je,t)}return Ke}function yt(e){const t=typeof e;return null===e?"":"string"===t||"number"===t||"boolean"===t?String(e):e instanceof ht||e instanceof pt||e instanceof ft?e.toString():JSON.stringify(e)}class xt{constructor(e,t){this.type=e,this.value=t}static parse(e,t){if(2!==e.length)return t.error(`'literal' expression requires exactly one argument, but found ${e.length-1} instead.`);if(!_t(e[1]))return t.error("invalid value");const i=e[1];let r=gt(i);const n=t.expectedType;return"array"!==r.kind||0!==r.N||!n||"array"!==n.kind||"number"==typeof n.N&&0!==n.N||(r=n),new xt(r,i)}evaluate(){return this.value}eachChild(){}outputDefined(){return!0}serialize(){return"array"===this.type.kind||"object"===this.type.kind?["literal",this.value]:this.value instanceof ht?["rgba"].concat(this.value.toArray()):this.value instanceof pt?this.value.serialize():this.value}}class vt{constructor(e){this.name="ExpressionEvaluationError",this.message=e}toJSON(){return this.message}}const bt={string:We,number:Xe,boolean:He,object:Ke};class wt{constructor(e,t){this.type=e,this.args=t}static parse(e,t){if(e.length<2)return t.error("Expected at least one argument.");let i,r=1;const n=e[0];if("array"===n){let n,o;if(e.length>2){const i=e[1];if("string"!=typeof i||!(i in bt)||"object"===i)return t.error('The item type argument of "array" must be one of string, number, boolean',1);n=bt[i],r++}else n=Je;if(e.length>3){if(null!==e[2]&&("number"!=typeof e[2]||e[2]<0||e[2]!==Math.floor(e[2])))return t.error('The length argument to "array" must be a positive integer literal',2);o=e[2],r++}i=it(n,o)}else i=bt[n];const o=[];for(;r<e.length;r++){const i=t.parse(e[r],r,Je);if(!i)return null;o.push(i)}return new wt(i,o)}evaluate(e){for(let t=0;t<this.args.length;t++){const i=this.args[t].evaluate(e);if(!ot(this.type,gt(i)))return i;if(t===this.args.length-1)throw new vt(`Expected value to be of type ${rt(this.type)}, but found ${rt(gt(i))} instead.`)}return null}eachChild(e){this.args.forEach(e)}outputDefined(){return this.args.every((e=>e.outputDefined()))}serialize(){const e=this.type,t=[e.kind];if("array"===e.kind){const i=e.itemType;if("string"===i.kind||"number"===i.kind||"boolean"===i.kind){t.push(i.kind);const r=e.N;("number"==typeof r||this.args.length>1)&&t.push(r)}}return t.concat(this.args.map((e=>e.serialize())))}}class Tt{constructor(e){this.type=et,this.sections=e}static parse(e,t){if(e.length<2)return t.error("Expected at least one argument.");const i=e[1];if(!Array.isArray(i)&&"object"==typeof i)return t.error("First argument must be an image or text section.");const r=[];let n=!1;for(let i=1;i<=e.length-1;++i){const o=e[i];if(n&&"object"==typeof o&&!Array.isArray(o)){n=!1;let e=null;if(o["font-scale"]&&(e=t.parse(o["font-scale"],1,Xe),!e))return null;let i=null;if(o["text-font"]&&(i=t.parse(o["text-font"],1,it(We)),!i))return null;let s=null;if(o["text-color"]&&(s=t.parse(o["text-color"],1,Ye),!s))return null;const a=r[r.length-1];a.scale=e,a.font=i,a.textColor=s}else{const o=t.parse(e[i],1,Je);if(!o)return null;const s=o.type.kind;if("string"!==s&&"value"!==s&&"null"!==s&&"resolvedImage"!==s)return t.error("Formatted text type must be 'string', 'value', 'image' or 'null'.");n=!0,r.push({content:o,scale:null,font:null,textColor:null})}}return new Tt(r)}evaluate(e){return new pt(this.sections.map((t=>{const i=t.content.evaluate(e);return gt(i)===tt?new dt("",i,null,null,null):new dt(yt(i),null,t.scale?t.scale.evaluate(e):null,t.font?t.font.evaluate(e).join(","):null,t.textColor?t.textColor.evaluate(e):null)})))}eachChild(e){for(const t of this.sections)e(t.content),t.scale&&e(t.scale),t.font&&e(t.font),t.textColor&&e(t.textColor)}outputDefined(){return!1}serialize(){const e=["format"];for(const t of this.sections){e.push(t.content.serialize());const i={};t.scale&&(i["font-scale"]=t.scale.serialize()),t.font&&(i["text-font"]=t.font.serialize()),t.textColor&&(i["text-color"]=t.textColor.serialize()),e.push(i)}return e}}class Et{constructor(e){this.type=tt,this.input=e}static parse(e,t){if(2!==e.length)return t.error("Expected two arguments.");const i=t.parse(e[1],1,We);return i?new Et(i):t.error("No image name provided.")}evaluate(e){const t=this.input.evaluate(e),i=ft.fromString(t);return i&&e.availableImages&&(i.available=e.availableImages.indexOf(t)>-1),i}eachChild(e){e(this.input)}outputDefined(){return!1}serialize(){return["image",this.input.serialize()]}}const St={"to-boolean":He,"to-color":Ye,"to-number":Xe,"to-string":We};class It{constructor(e,t){this.type=e,this.args=t}static parse(e,t){if(e.length<2)return t.error("Expected at least one argument.");const i=e[0];if(("to-boolean"===i||"to-string"===i)&&2!==e.length)return t.error("Expected one argument.");const r=St[i],n=[];for(let i=1;i<e.length;i++){const r=t.parse(e[i],i,Je);if(!r)return null;n.push(r)}return new It(r,n)}evaluate(e){if("boolean"===this.type.kind)return Boolean(this.args[0].evaluate(e));if("color"===this.type.kind){let t,i;for(const r of this.args){if(t=r.evaluate(e),i=null,t instanceof ht)return t;if("string"==typeof t){const i=e.parseColor(t);if(i)return i}else if(Array.isArray(t)&&(i=t.length<3||t.length>4?`Invalid rbga value ${JSON.stringify(t)}: expected an array containing either three or four numeric values.`:mt(t[0],t[1],t[2],t[3]),!i))return new ht(t[0]/255,t[1]/255,t[2]/255,t[3])}throw new vt(i||`Could not parse color from value '${"string"==typeof t?t:String(JSON.stringify(t))}'`)}if("number"===this.type.kind){let t=null;for(const i of this.args){if(t=i.evaluate(e),null===t)return 0;const r=Number(t);if(!isNaN(r))return r}throw new vt(`Could not convert ${JSON.stringify(t)} to number.`)}return"formatted"===this.type.kind?pt.fromString(yt(this.args[0].evaluate(e))):"resolvedImage"===this.type.kind?ft.fromString(yt(this.args[0].evaluate(e))):yt(this.args[0].evaluate(e))}eachChild(e){this.args.forEach(e)}outputDefined(){return this.args.every((e=>e.outputDefined()))}serialize(){if("formatted"===this.type.kind)return new Tt([{content:this.args[0],scale:null,font:null,textColor:null}]).serialize();if("resolvedImage"===this.type.kind)return new Et(this.args[0]).serialize();const e=[`to-${this.type.kind}`];return this.eachChild((t=>{e.push(t.serialize())})),e}}const Mt=["Unknown","Point","LineString","Polygon"];class At{constructor(){this.globals=null,this.feature=null,this.featureState=null,this.formattedSection=null,this._parseColorCache={},this.availableImages=null,this.canonical=null,this.featureTileCoord=null,this.featureDistanceData=null}id(){return this.feature&&"id"in this.feature&&this.feature.id?this.feature.id:null}geometryType(){return this.feature?"number"==typeof this.feature.type?Mt[this.feature.type]:this.feature.type:null}geometry(){return this.feature&&"geometry"in this.feature?this.feature.geometry:null}canonicalID(){return this.canonical}properties(){return this.feature&&this.feature.properties||{}}distanceFromCenter(){if(this.featureTileCoord&&this.featureDistanceData){const e=this.featureDistanceData.center,t=this.featureDistanceData.scale,{x:i,y:r}=this.featureTileCoord;return this.featureDistanceData.bearing[0]*(i*t-e[0])+this.featureDistanceData.bearing[1]*(r*t-e[1])}return 0}parseColor(e){let t=this._parseColorCache[e];return t||(t=this._parseColorCache[e]=ht.parse(e)),t}}class Ct{constructor(e,t,i,r){this.name=e,this.type=t,this._evaluate=i,this.args=r}evaluate(e){return this._evaluate(e,this.args)}eachChild(e){this.args.forEach(e)}outputDefined(){return!1}serialize(){return[this.name].concat(this.args.map((e=>e.serialize())))}static parse(e,t){const i=e[0],r=Ct.definitions[i];if(!r)return t.error(`Unknown expression "${i}". If you wanted a literal array, use ["literal", [...]].`,0);const n=Array.isArray(r)?r[0]:r.type,o=Array.isArray(r)?[[r[1],r[2]]]:r.overloads,s=o.filter((([t])=>!Array.isArray(t)||t.length===e.length-1));let a=null;for(const[r,o]of s){a=new Jt(t.registry,t.path,null,t.scope);const s=[];let l=!1;for(let t=1;t<e.length;t++){const i=e[t],n=Array.isArray(r)?r[t-1]:r.type,o=a.parse(i,1+s.length,n);if(!o){l=!0;break}s.push(o)}if(!l)if(Array.isArray(r)&&r.length!==s.length)a.error(`Expected ${r.length} arguments, but found ${s.length} instead.`);else{for(let e=0;e<s.length;e++){const t=Array.isArray(r)?r[e]:r.type,i=s[e];a.concat(e+1).checkSubtype(t,i.type)}if(0===a.errors.length)return new Ct(i,n,o,s)}}if(1===s.length)t.errors.push(...a.errors);else{const i=(s.length?s:o).map((([e])=>{return t=e,Array.isArray(t)?`(${t.map(rt).join(", ")})`:`(${rt(t.type)}...)`;var t})).join(" | "),r=[];for(let i=1;i<e.length;i++){const n=t.parse(e[i],1+r.length);if(!n)return null;r.push(rt(n.type))}t.error(`Expected arguments of type ${i}, but found (${r.join(", ")}) instead.`)}return null}static register(e,t){Ct.definitions=t;for(const i in t)e[i]=Ct}}class zt{constructor(e,t,i){this.type=Qe,this.locale=i,this.caseSensitive=e,this.diacriticSensitive=t}static parse(e,t){if(2!==e.length)return t.error("Expected one argument.");const i=e[1];if("object"!=typeof i||Array.isArray(i))return t.error("Collator options argument must be an object.");const r=t.parse(void 0!==i["case-sensitive"]&&i["case-sensitive"],1,He);if(!r)return null;const n=t.parse(void 0!==i["diacritic-sensitive"]&&i["diacritic-sensitive"],1,He);if(!n)return null;let o=null;return i.locale&&(o=t.parse(i.locale,1,We),!o)?null:new zt(r,n,o)}evaluate(e){return new ut(this.caseSensitive.evaluate(e),this.diacriticSensitive.evaluate(e),this.locale?this.locale.evaluate(e):null)}eachChild(e){e(this.caseSensitive),e(this.diacriticSensitive),this.locale&&e(this.locale)}outputDefined(){return!1}serialize(){const e={};return e["case-sensitive"]=this.caseSensitive.serialize(),e["diacritic-sensitive"]=this.diacriticSensitive.serialize(),this.locale&&(e.locale=this.locale.serialize()),["collator",e]}}const kt=8192;function Dt(e,t){e[0]=Math.min(e[0],t[0]),e[1]=Math.min(e[1],t[1]),e[2]=Math.max(e[2],t[0]),e[3]=Math.max(e[3],t[1])}function Pt(e,t){return!(e[0]<=t[0]||e[2]>=t[2]||e[1]<=t[1]||e[3]>=t[3])}function Lt(e,t){const i=(180+e[0])/360,r=(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+e[1]*Math.PI/360)))/360,n=Math.pow(2,t.z);return[Math.round(i*n*kt),Math.round(r*n*kt)]}function Bt(e,t,i){const r=e[0]-t[0],n=e[1]-t[1],o=e[0]-i[0],s=e[1]-i[1];return r*s-o*n==0&&r*o<=0&&n*s<=0}function Rt(e,t){let i=!1;for(let s=0,a=t.length;s<a;s++){const a=t[s];for(let t=0,s=a.length;t<s-1;t++){if(Bt(e,a[t],a[t+1]))return!1;(n=a[t])[1]>(r=e)[1]!=(o=a[t+1])[1]>r[1]&&r[0]<(o[0]-n[0])*(r[1]-n[1])/(o[1]-n[1])+n[0]&&(i=!i)}}var r,n,o;return i}function Ft(e,t){for(let i=0;i<t.length;i++)if(Rt(e,t[i]))return!0;return!1}function Ot(e,t,i,r){const n=r[0]-i[0],o=r[1]-i[1],s=(e[0]-i[0])*o-n*(e[1]-i[1]),a=(t[0]-i[0])*o-n*(t[1]-i[1]);return s>0&&a<0||s<0&&a>0}function Ut(e,t,i){for(const c of i)for(let i=0;i<c.length-1;++i)if(0!=(a=[(s=c[i+1])[0]-(o=c[i])[0],s[1]-o[1]])[0]*(l=[(n=t)[0]-(r=e)[0],n[1]-r[1]])[1]-a[1]*l[0]&&Ot(r,n,o,s)&&Ot(o,s,r,n))return!0;var r,n,o,s,a,l;return!1}function Vt(e,t){for(let i=0;i<e.length;++i)if(!Rt(e[i],t))return!1;for(let i=0;i<e.length-1;++i)if(Ut(e[i],e[i+1],t))return!1;return!0}function jt(e,t){for(let i=0;i<t.length;i++)if(Vt(e,t[i]))return!0;return!1}function Nt(e,t,i){const r=[];for(let n=0;n<e.length;n++){const o=[];for(let r=0;r<e[n].length;r++){const s=Lt(e[n][r],i);Dt(t,s),o.push(s)}r.push(o)}return r}function Gt(e,t,i){const r=[];for(let n=0;n<e.length;n++){const o=Nt(e[n],t,i);r.push(o)}return r}function Zt(e,t,i,r){if(e[0]<i[0]||e[0]>i[2]){const t=.5*r;let n=e[0]-i[0]>t?-r:i[0]-e[0]>t?r:0;0===n&&(n=e[0]-i[2]>t?-r:i[2]-e[0]>t?r:0),e[0]+=n}Dt(t,e)}function $t(e,t,i,r){const n=Math.pow(2,r.z)*kt,o=[r.x*kt,r.y*kt],s=[];if(!e)return s;for(const r of e)for(const e of r){const r=[e.x+o[0],e.y+o[1]];Zt(r,t,i,n),s.push(r)}return s}function qt(e,t,i,r){const n=Math.pow(2,r.z)*kt,o=[r.x*kt,r.y*kt],s=[];if(!e)return s;for(const i of e){const e=[];for(const r of i){const i=[r.x+o[0],r.y+o[1]];Dt(t,i),e.push(i)}s.push(e)}if(t[2]-t[0]<=n/2){(a=t)[0]=a[1]=1/0,a[2]=a[3]=-1/0;for(const e of s)for(const r of e)Zt(r,t,i,n)}var a;return s}class Xt{constructor(e,t){this.type=He,this.geojson=e,this.geometries=t}static parse(e,t){if(2!==e.length)return t.error(`'within' expression requires exactly one argument, but found ${e.length-1} instead.`);if(_t(e[1])){const t=e[1];if("FeatureCollection"===t.type)for(let e=0;e<t.features.length;++e){const i=t.features[e].geometry.type;if("Polygon"===i||"MultiPolygon"===i)return new Xt(t,t.features[e].geometry)}else if("Feature"===t.type){const e=t.geometry.type;if("Polygon"===e||"MultiPolygon"===e)return new Xt(t,t.geometry)}else if("Polygon"===t.type||"MultiPolygon"===t.type)return new Xt(t,t)}return t.error("'within' expression requires valid geojson object that contains polygon geometry type.")}evaluate(e){if(null!=e.geometry()&&null!=e.canonicalID()){if("Point"===e.geometryType())return function(e,t){const i=[1/0,1/0,-1/0,-1/0],r=[1/0,1/0,-1/0,-1/0],n=e.canonicalID();if(!n)return!1;if("Polygon"===t.type){const o=Nt(t.coordinates,r,n),s=$t(e.geometry(),i,r,n);if(!Pt(i,r))return!1;for(const e of s)if(!Rt(e,o))return!1}if("MultiPolygon"===t.type){const o=Gt(t.coordinates,r,n),s=$t(e.geometry(),i,r,n);if(!Pt(i,r))return!1;for(const e of s)if(!Ft(e,o))return!1}return!0}(e,this.geometries);if("LineString"===e.geometryType())return function(e,t){const i=[1/0,1/0,-1/0,-1/0],r=[1/0,1/0,-1/0,-1/0],n=e.canonicalID();if(!n)return!1;if("Polygon"===t.type){const o=Nt(t.coordinates,r,n),s=qt(e.geometry(),i,r,n);if(!Pt(i,r))return!1;for(const e of s)if(!Vt(e,o))return!1}if("MultiPolygon"===t.type){const o=Gt(t.coordinates,r,n),s=qt(e.geometry(),i,r,n);if(!Pt(i,r))return!1;for(const e of s)if(!jt(e,o))return!1}return!0}(e,this.geometries)}return!1}eachChild(){}outputDefined(){return!0}serialize(){return["within",this.geojson]}}function Wt(e){if(e instanceof Ct){if("get"===e.name&&1===e.args.length)return!1;if("feature-state"===e.name)return!1;if("has"===e.name&&1===e.args.length)return!1;if("properties"===e.name||"geometry-type"===e.name||"id"===e.name)return!1;if(/^filter-/.test(e.name))return!1}if(e instanceof Xt)return!1;let t=!0;return e.eachChild((e=>{t&&!Wt(e)&&(t=!1)})),t}function Ht(e){if(e instanceof Ct&&"feature-state"===e.name)return!1;let t=!0;return e.eachChild((e=>{t&&!Ht(e)&&(t=!1)})),t}function Yt(e,t){if(e instanceof Ct&&t.indexOf(e.name)>=0)return!1;let i=!0;return e.eachChild((e=>{i&&!Yt(e,t)&&(i=!1)})),i}class Kt{constructor(e,t){this.type=t.type,this.name=e,this.boundExpression=t}static parse(e,t){if(2!==e.length||"string"!=typeof e[1])return t.error("'var' expression requires exactly one string literal argument.");const i=e[1];return t.scope.has(i)?new Kt(i,t.scope.get(i)):t.error(`Unknown variable "${i}". Make sure "${i}" has been bound in an enclosing "let" expression before using it.`,1)}evaluate(e){return this.boundExpression.evaluate(e)}eachChild(){}outputDefined(){return!1}serialize(){return["var",this.name]}}class Jt{constructor(e,t=[],i,r=new $e,n=[]){this.registry=e,this.path=t,this.key=t.map((e=>`[${e}]`)).join(""),this.scope=r,this.errors=n,this.expectedType=i}parse(e,t,i,r,n={}){return t?this.concat(t,i,r)._parse(e,n):this._parse(e,n)}_parse(e,t){function i(e,t,i){return"assert"===i?new wt(t,[e]):"coerce"===i?new It(t,[e]):e}if(null!==e&&"string"!=typeof e&&"boolean"!=typeof e&&"number"!=typeof e||(e=["literal",e]),Array.isArray(e)){if(0===e.length)return this.error('Expected an array with at least one element. If you wanted a literal array, use ["literal", []].');const r=e[0];if("string"!=typeof r)return this.error(`Expression name must be a string, but found ${typeof r} instead. If you wanted a literal array, use ["literal", [...]].`,0),null;const n=this.registry[r];if(n){let r=n.parse(e,this);if(!r)return null;if(this.expectedType){const e=this.expectedType,n=r.type;if("string"!==e.kind&&"number"!==e.kind&&"boolean"!==e.kind&&"object"!==e.kind&&"array"!==e.kind||"value"!==n.kind)if("color"!==e.kind&&"formatted"!==e.kind&&"resolvedImage"!==e.kind||"value"!==n.kind&&"string"!==n.kind){if(this.checkSubtype(e,n))return null}else r=i(r,e,t.typeAnnotation||"coerce");else r=i(r,e,t.typeAnnotation||"assert")}if(!(r instanceof xt)&&"resolvedImage"!==r.type.kind&&Qt(r)){const t=new At;try{r=new xt(r.type,r.evaluate(t))}catch(e){return this.error(e.message),null}}return r}return this.error(`Unknown expression "${r}". If you wanted a literal array, use ["literal", [...]].`,0)}return this.error(void 0===e?"'undefined' value invalid. Use null instead.":"object"==typeof e?'Bare objects invalid. Use ["literal", {...}] instead.':`Expected an array, but found ${typeof e} instead.`)}concat(e,t,i){const r="number"==typeof e?this.path.concat(e):this.path,n=i?this.scope.concat(i):this.scope;return new Jt(this.registry,r,t||null,n,this.errors)}error(e,...t){const i=`${this.key}${t.map((e=>`[${e}]`)).join("")}`;this.errors.push(new Ze(i,e))}checkSubtype(e,t){const i=ot(e,t);return i&&this.error(i),i}}function Qt(e){if(e instanceof Kt)return Qt(e.boundExpression);if(e instanceof Ct&&"error"===e.name)return!1;if(e instanceof zt)return!1;if(e instanceof Xt)return!1;const t=e instanceof It||e instanceof wt;let i=!0;return e.eachChild((e=>{i=t?i&&Qt(e):i&&e instanceof xt})),!!i&&Wt(e)&&Yt(e,["zoom","heatmap-density","line-progress","sky-radial-progress","accumulated","is-supported-script","pitch","distance-from-center"])}function ei(e,t){const i=e.length-1;let r,n,o=0,s=i,a=0;for(;o<=s;)if(a=Math.floor((o+s)/2),r=e[a],n=e[a+1],r<=t){if(a===i||t<n)return a;o=a+1}else{if(!(r>t))throw new vt("Input is not a number.");s=a-1}return 0}class ti{constructor(e,t,i){this.type=e,this.input=t,this.labels=[],this.outputs=[];for(const[e,t]of i)this.labels.push(e),this.outputs.push(t)}static parse(e,t){if(e.length-1<4)return t.error(`Expected at least 4 arguments, but found only ${e.length-1}.`);if((e.length-1)%2!=0)return t.error("Expected an even number of arguments.");const i=t.parse(e[1],1,Xe);if(!i)return null;const r=[];let n=null;t.expectedType&&"value"!==t.expectedType.kind&&(n=t.expectedType);for(let i=1;i<e.length;i+=2){const o=1===i?-1/0:e[i],s=e[i+1],a=i,l=i+1;if("number"!=typeof o)return t.error('Input/output pairs for "step" expressions must be defined using literal numeric values (not computed expressions) for the input values.',a);if(r.length&&r[r.length-1][0]>=o)return t.error('Input/output pairs for "step" expressions must be arranged with input values in strictly ascending order.',a);const c=t.parse(s,l,n);if(!c)return null;n=n||c.type,r.push([o,c])}return new ti(n,i,r)}evaluate(e){const t=this.labels,i=this.outputs;if(1===t.length)return i[0].evaluate(e);const r=this.input.evaluate(e);if(r<=t[0])return i[0].evaluate(e);const n=t.length;return r>=t[n-1]?i[n-1].evaluate(e):i[ei(t,r)].evaluate(e)}eachChild(e){e(this.input);for(const t of this.outputs)e(t)}outputDefined(){return this.outputs.every((e=>e.outputDefined()))}serialize(){const e=["step",this.input.serialize()];for(let t=0;t<this.labels.length;t++)t>0&&e.push(this.labels[t]),e.push(this.outputs[t].serialize());return e}}function ii(e,t,i){return e*(1-i)+t*i}var ri=Object.freeze({__proto__:null,number:ii,color:function(e,t,i){return new ht(ii(e.r,t.r,i),ii(e.g,t.g,i),ii(e.b,t.b,i),ii(e.a,t.a,i))},array:function(e,t,i){return e.map(((e,r)=>ii(e,t[r],i)))}});const ni=.95047,oi=1.08883,si=4/29,ai=6/29,li=3*ai*ai,ci=Math.PI/180,hi=180/Math.PI;function ui(e){return e>.008856451679035631?Math.pow(e,1/3):e/li+si}function di(e){return e>ai?e*e*e:li*(e-si)}function pi(e){return 255*(e<=.0031308?12.92*e:1.055*Math.pow(e,1/2.4)-.055)}function fi(e){return(e/=255)<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)}function mi(e){const t=fi(e.r),i=fi(e.g),r=fi(e.b),n=ui((.4124564*t+.3575761*i+.1804375*r)/ni),o=ui((.2126729*t+.7151522*i+.072175*r)/1);return{l:116*o-16,a:500*(n-o),b:200*(o-ui((.0193339*t+.119192*i+.9503041*r)/oi)),alpha:e.a}}function _i(e){let t=(e.l+16)/116,i=isNaN(e.a)?t:t+e.a/500,r=isNaN(e.b)?t:t-e.b/200;return t=1*di(t),i=ni*di(i),r=oi*di(r),new ht(pi(3.2404542*i-1.5371385*t-.4985314*r),pi(-.969266*i+1.8760108*t+.041556*r),pi(.0556434*i-.2040259*t+1.0572252*r),e.alpha)}function gi(e,t,i){const r=t-e;return e+i*(r>180||r<-180?r-360*Math.round(r/360):r)}const yi={forward:mi,reverse:_i,interpolate:function(e,t,i){return{l:ii(e.l,t.l,i),a:ii(e.a,t.a,i),b:ii(e.b,t.b,i),alpha:ii(e.alpha,t.alpha,i)}}},xi={forward:function(e){const{l:t,a:i,b:r}=mi(e),n=Math.atan2(r,i)*hi;return{h:n<0?n+360:n,c:Math.sqrt(i*i+r*r),l:t,alpha:e.a}},reverse:function(e){const t=e.h*ci,i=e.c;return _i({l:e.l,a:Math.cos(t)*i,b:Math.sin(t)*i,alpha:e.alpha})},interpolate:function(e,t,i){return{h:gi(e.h,t.h,i),c:ii(e.c,t.c,i),l:ii(e.l,t.l,i),alpha:ii(e.alpha,t.alpha,i)}}};var vi=Object.freeze({__proto__:null,lab:yi,hcl:xi});class bi{constructor(e,t,i,r,n){this.type=e,this.operator=t,this.interpolation=i,this.input=r,this.labels=[],this.outputs=[];for(const[e,t]of n)this.labels.push(e),this.outputs.push(t)}static interpolationFactor(e,t,r,n){let o=0;if("exponential"===e.name)o=wi(t,e.base,r,n);else if("linear"===e.name)o=wi(t,1,r,n);else if("cubic-bezier"===e.name){const s=e.controlPoints;o=new i(s[0],s[1],s[2],s[3]).solve(wi(t,1,r,n))}return o}static parse(e,t){let[i,r,n,...o]=e;if(!Array.isArray(r)||0===r.length)return t.error("Expected an interpolation type expression.",1);if("linear"===r[0])r={name:"linear"};else if("exponential"===r[0]){const e=r[1];if("number"!=typeof e)return t.error("Exponential interpolation requires a numeric base.",1,1);r={name:"exponential",base:e}}else{if("cubic-bezier"!==r[0])return t.error(`Unknown interpolation type ${String(r[0])}`,1,0);{const e=r.slice(1);if(4!==e.length||e.some((e=>"number"!=typeof e||e<0||e>1)))return t.error("Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.",1);r={name:"cubic-bezier",controlPoints:e}}}if(e.length-1<4)return t.error(`Expected at least 4 arguments, but found only ${e.length-1}.`);if((e.length-1)%2!=0)return t.error("Expected an even number of arguments.");if(n=t.parse(n,2,Xe),!n)return null;const s=[];let a=null;"interpolate-hcl"===i||"interpolate-lab"===i?a=Ye:t.expectedType&&"value"!==t.expectedType.kind&&(a=t.expectedType);for(let e=0;e<o.length;e+=2){const i=o[e],r=o[e+1],n=e+3,l=e+4;if("number"!=typeof i)return t.error('Input/output pairs for "interpolate" expressions must be defined using literal numeric values (not computed expressions) for the input values.',n);if(s.length&&s[s.length-1][0]>=i)return t.error('Input/output pairs for "interpolate" expressions must be arranged with input values in strictly ascending order.',n);const c=t.parse(r,l,a);if(!c)return null;a=a||c.type,s.push([i,c])}return"number"===a.kind||"color"===a.kind||"array"===a.kind&&"number"===a.itemType.kind&&"number"==typeof a.N?new bi(a,i,r,n,s):t.error(`Type ${rt(a)} is not interpolatable.`)}evaluate(e){const t=this.labels,i=this.outputs;if(1===t.length)return i[0].evaluate(e);const r=this.input.evaluate(e);if(r<=t[0])return i[0].evaluate(e);const n=t.length;if(r>=t[n-1])return i[n-1].evaluate(e);const o=ei(t,r),s=bi.interpolationFactor(this.interpolation,r,t[o],t[o+1]),a=i[o].evaluate(e),l=i[o+1].evaluate(e);return"interpolate"===this.operator?ri[this.type.kind.toLowerCase()](a,l,s):"interpolate-hcl"===this.operator?xi.reverse(xi.interpolate(xi.forward(a),xi.forward(l),s)):yi.reverse(yi.interpolate(yi.forward(a),yi.forward(l),s))}eachChild(e){e(this.input);for(const t of this.outputs)e(t)}outputDefined(){return this.outputs.every((e=>e.outputDefined()))}serialize(){let e;e="linear"===this.interpolation.name?["linear"]:"exponential"===this.interpolation.name?1===this.interpolation.base?["linear"]:["exponential",this.interpolation.base]:["cubic-bezier"].concat(this.interpolation.controlPoints);const t=[this.operator,e,this.input.serialize()];for(let e=0;e<this.labels.length;e++)t.push(this.labels[e],this.outputs[e].serialize());return t}}function wi(e,t,i,r){const n=r-i,o=e-i;return 0===n?0:1===t?o/n:(Math.pow(t,o)-1)/(Math.pow(t,n)-1)}class Ti{constructor(e,t){this.type=e,this.args=t}static parse(e,t){if(e.length<2)return t.error("Expectected at least one argument.");let i=null;const r=t.expectedType;r&&"value"!==r.kind&&(i=r);const n=[];for(const r of e.slice(1)){const e=t.parse(r,1+n.length,i,void 0,{typeAnnotation:"omit"});if(!e)return null;i=i||e.type,n.push(e)}const o=r&&n.some((e=>ot(r,e.type)));return new Ti(o?Je:i,n)}evaluate(e){let t,i=null,r=0;for(const n of this.args){if(r++,i=n.evaluate(e),i&&i instanceof ft&&!i.available&&(t||(t=i),i=null,r===this.args.length))return t;if(null!==i)break}return i}eachChild(e){this.args.forEach(e)}outputDefined(){return this.args.every((e=>e.outputDefined()))}serialize(){const e=["coalesce"];return this.eachChild((t=>{e.push(t.serialize())})),e}}class Ei{constructor(e,t){this.type=t.type,this.bindings=[].concat(e),this.result=t}evaluate(e){return this.result.evaluate(e)}eachChild(e){for(const t of this.bindings)e(t[1]);e(this.result)}static parse(e,t){if(e.length<4)return t.error(`Expected at least 3 arguments, but found ${e.length-1} instead.`);const i=[];for(let r=1;r<e.length-1;r+=2){const n=e[r];if("string"!=typeof n)return t.error(`Expected string, but found ${typeof n} instead.`,r);if(/[^a-zA-Z0-9_]/.test(n))return t.error("Variable names must contain only alphanumeric characters or '_'.",r);const o=t.parse(e[r+1],r+1);if(!o)return null;i.push([n,o])}const r=t.parse(e[e.length-1],e.length-1,t.expectedType,i);return r?new Ei(i,r):null}outputDefined(){return this.result.outputDefined()}serialize(){const e=["let"];for(const[t,i]of this.bindings)e.push(t,i.serialize());return e.push(this.result.serialize()),e}}class Si{constructor(e,t,i){this.type=e,this.index=t,this.input=i}static parse(e,t){if(3!==e.length)return t.error(`Expected 2 arguments, but found ${e.length-1} instead.`);const i=t.parse(e[1],1,Xe),r=t.parse(e[2],2,it(t.expectedType||Je));return i&&r?new Si(r.type.itemType,i,r):null}evaluate(e){const t=this.index.evaluate(e),i=this.input.evaluate(e);if(t<0)throw new vt(`Array index out of bounds: ${t} < 0.`);if(t>=i.length)throw new vt(`Array index out of bounds: ${t} > ${i.length-1}.`);if(t!==Math.floor(t))throw new vt(`Array index must be an integer, but found ${t} instead.`);return i[t]}eachChild(e){e(this.index),e(this.input)}outputDefined(){return!1}serialize(){return["at",this.index.serialize(),this.input.serialize()]}}class Ii{constructor(e,t){this.type=He,this.needle=e,this.haystack=t}static parse(e,t){if(3!==e.length)return t.error(`Expected 2 arguments, but found ${e.length-1} instead.`);const i=t.parse(e[1],1,Je),r=t.parse(e[2],2,Je);return i&&r?st(i.type,[He,We,Xe,qe,Je])?new Ii(i,r):t.error(`Expected first argument to be of type boolean, string, number or null, but found ${rt(i.type)} instead`):null}evaluate(e){const t=this.needle.evaluate(e),i=this.haystack.evaluate(e);if(null==i)return!1;if(!at(t,["boolean","string","number","null"]))throw new vt(`Expected first argument to be of type boolean, string, number or null, but found ${rt(gt(t))} instead.`);if(!at(i,["string","array"]))throw new vt(`Expected second argument to be of type array or string, but found ${rt(gt(i))} instead.`);return i.indexOf(t)>=0}eachChild(e){e(this.needle),e(this.haystack)}outputDefined(){return!0}serialize(){return["in",this.needle.serialize(),this.haystack.serialize()]}}class Mi{constructor(e,t,i){this.type=Xe,this.needle=e,this.haystack=t,this.fromIndex=i}static parse(e,t){if(e.length<=2||e.length>=5)return t.error(`Expected 3 or 4 arguments, but found ${e.length-1} instead.`);const i=t.parse(e[1],1,Je),r=t.parse(e[2],2,Je);if(!i||!r)return null;if(!st(i.type,[He,We,Xe,qe,Je]))return t.error(`Expected first argument to be of type boolean, string, number or null, but found ${rt(i.type)} instead`);if(4===e.length){const n=t.parse(e[3],3,Xe);return n?new Mi(i,r,n):null}return new Mi(i,r)}evaluate(e){const t=this.needle.evaluate(e),i=this.haystack.evaluate(e);if(!at(t,["boolean","string","number","null"]))throw new vt(`Expected first argument to be of type boolean, string, number or null, but found ${rt(gt(t))} instead.`);if(!at(i,["string","array"]))throw new vt(`Expected second argument to be of type array or string, but found ${rt(gt(i))} instead.`);if(this.fromIndex){const r=this.fromIndex.evaluate(e);return i.indexOf(t,r)}return i.indexOf(t)}eachChild(e){e(this.needle),e(this.haystack),this.fromIndex&&e(this.fromIndex)}outputDefined(){return!1}serialize(){if(null!=this.fromIndex&&void 0!==this.fromIndex){const e=this.fromIndex.serialize();return["index-of",this.needle.serialize(),this.haystack.serialize(),e]}return["index-of",this.needle.serialize(),this.haystack.serialize()]}}class Ai{constructor(e,t,i,r,n,o){this.inputType=e,this.type=t,this.input=i,this.cases=r,this.outputs=n,this.otherwise=o}static parse(e,t){if(e.length<5)return t.error(`Expected at least 4 arguments, but found only ${e.length-1}.`);if(e.length%2!=1)return t.error("Expected an even number of arguments.");let i,r;t.expectedType&&"value"!==t.expectedType.kind&&(r=t.expectedType);const n={},o=[];for(let s=2;s<e.length-1;s+=2){let a=e[s];const l=e[s+1];Array.isArray(a)||(a=[a]);const c=t.concat(s);if(0===a.length)return c.error("Expected at least one branch label.");for(const e of a){if("number"!=typeof e&&"string"!=typeof e)return c.error("Branch labels must be numbers or strings.");if("number"==typeof e&&Math.abs(e)>Number.MAX_SAFE_INTEGER)return c.error(`Branch labels must be integers no larger than ${Number.MAX_SAFE_INTEGER}.`);if("number"==typeof e&&Math.floor(e)!==e)return c.error("Numeric branch labels must be integer values.");if(i){if(c.checkSubtype(i,gt(e)))return null}else i=gt(e);if(void 0!==n[String(e)])return c.error("Branch labels must be unique.");n[String(e)]=o.length}const h=t.parse(l,s,r);if(!h)return null;r=r||h.type,o.push(h)}const s=t.parse(e[1],1,Je);if(!s)return null;const a=t.parse(e[e.length-1],e.length-1,r);return a?"value"!==s.type.kind&&t.concat(1).checkSubtype(i,s.type)?null:new Ai(i,r,s,n,o,a):null}evaluate(e){const t=this.input.evaluate(e);return(gt(t)===this.inputType&&this.outputs[this.cases[t]]||this.otherwise).evaluate(e)}eachChild(e){e(this.input),this.outputs.forEach(e),e(this.otherwise)}outputDefined(){return this.outputs.every((e=>e.outputDefined()))&&this.otherwise.outputDefined()}serialize(){const e=["match",this.input.serialize()],t=Object.keys(this.cases).sort(),i=[],r={};for(const e of t){const t=r[this.cases[e]];void 0===t?(r[this.cases[e]]=i.length,i.push([this.cases[e],[e]])):i[t][1].push(e)}const n=e=>"number"===this.inputType.kind?Number(e):e;for(const[t,r]of i)e.push(1===r.length?n(r[0]):r.map(n)),e.push(this.outputs[t].serialize());return e.push(this.otherwise.serialize()),e}}class Ci{constructor(e,t,i){this.type=e,this.branches=t,this.otherwise=i}static parse(e,t){if(e.length<4)return t.error(`Expected at least 3 arguments, but found only ${e.length-1}.`);if(e.length%2!=0)return t.error("Expected an odd number of arguments.");let i;t.expectedType&&"value"!==t.expectedType.kind&&(i=t.expectedType);const r=[];for(let n=1;n<e.length-1;n+=2){const o=t.parse(e[n],n,He);if(!o)return null;const s=t.parse(e[n+1],n+1,i);if(!s)return null;r.push([o,s]),i=i||s.type}const n=t.parse(e[e.length-1],e.length-1,i);return n?new Ci(i,r,n):null}evaluate(e){for(const[t,i]of this.branches)if(t.evaluate(e))return i.evaluate(e);return this.otherwise.evaluate(e)}eachChild(e){for(const[t,i]of this.branches)e(t),e(i);e(this.otherwise)}outputDefined(){return this.branches.every((([e,t])=>t.outputDefined()))&&this.otherwise.outputDefined()}serialize(){const e=["case"];return this.eachChild((t=>{e.push(t.serialize())})),e}}class zi{constructor(e,t,i,r){this.type=e,this.input=t,this.beginIndex=i,this.endIndex=r}static parse(e,t){if(e.length<=2||e.length>=5)return t.error(`Expected 3 or 4 arguments, but found ${e.length-1} instead.`);const i=t.parse(e[1],1,Je),r=t.parse(e[2],2,Xe);if(!i||!r)return null;if(!st(i.type,[it(Je),We,Je]))return t.error(`Expected first argument to be of type array or string, but found ${rt(i.type)} instead`);if(4===e.length){const n=t.parse(e[3],3,Xe);return n?new zi(i.type,i,r,n):null}return new zi(i.type,i,r)}evaluate(e){const t=this.input.evaluate(e),i=this.beginIndex.evaluate(e);if(!at(t,["string","array"]))throw new vt(`Expected first argument to be of type array or string, but found ${rt(gt(t))} instead.`);if(this.endIndex){const r=this.endIndex.evaluate(e);return t.slice(i,r)}return t.slice(i)}eachChild(e){e(this.input),e(this.beginIndex),this.endIndex&&e(this.endIndex)}outputDefined(){return!1}serialize(){if(null!=this.endIndex&&void 0!==this.endIndex){const e=this.endIndex.serialize();return["slice",this.input.serialize(),this.beginIndex.serialize(),e]}return["slice",this.input.serialize(),this.beginIndex.serialize()]}}function ki(e,t){return"=="===e||"!="===e?"boolean"===t.kind||"string"===t.kind||"number"===t.kind||"null"===t.kind||"value"===t.kind:"string"===t.kind||"number"===t.kind||"value"===t.kind}function Di(e,t,i,r){return 0===r.compare(t,i)}function Pi(e,t,i){const r="=="!==e&&"!="!==e;return class n{constructor(e,t,i){this.type=He,this.lhs=e,this.rhs=t,this.collator=i,this.hasUntypedArgument="value"===e.type.kind||"value"===t.type.kind}static parse(e,t){if(3!==e.length&&4!==e.length)return t.error("Expected two or three arguments.");const i=e[0];let o=t.parse(e[1],1,Je);if(!o)return null;if(!ki(i,o.type))return t.concat(1).error(`"${i}" comparisons are not supported for type '${rt(o.type)}'.`);let s=t.parse(e[2],2,Je);if(!s)return null;if(!ki(i,s.type))return t.concat(2).error(`"${i}" comparisons are not supported for type '${rt(s.type)}'.`);if(o.type.kind!==s.type.kind&&"value"!==o.type.kind&&"value"!==s.type.kind)return t.error(`Cannot compare types '${rt(o.type)}' and '${rt(s.type)}'.`);r&&("value"===o.type.kind&&"value"!==s.type.kind?o=new wt(s.type,[o]):"value"!==o.type.kind&&"value"===s.type.kind&&(s=new wt(o.type,[s])));let a=null;if(4===e.length){if("string"!==o.type.kind&&"string"!==s.type.kind&&"value"!==o.type.kind&&"value"!==s.type.kind)return t.error("Cannot use collator to compare non-string types.");if(a=t.parse(e[3],3,Qe),!a)return null}return new n(o,s,a)}evaluate(n){const o=this.lhs.evaluate(n),s=this.rhs.evaluate(n);if(r&&this.hasUntypedArgument){const t=gt(o),i=gt(s);if(t.kind!==i.kind||"string"!==t.kind&&"number"!==t.kind)throw new vt(`Expected arguments for "${e}" to be (string, string) or (number, number), but found (${t.kind}, ${i.kind}) instead.`)}if(this.collator&&!r&&this.hasUntypedArgument){const e=gt(o),i=gt(s);if("string"!==e.kind||"string"!==i.kind)return t(n,o,s)}return this.collator?i(n,o,s,this.collator.evaluate(n)):t(n,o,s)}eachChild(e){e(this.lhs),e(this.rhs),this.collator&&e(this.collator)}outputDefined(){return!0}serialize(){const t=[e];return this.eachChild((e=>{t.push(e.serialize())})),t}}}const Li=Pi("==",(function(e,t,i){return t===i}),Di),Bi=Pi("!=",(function(e,t,i){return t!==i}),(function(e,t,i,r){return!Di(0,t,i,r)})),Ri=Pi("<",(function(e,t,i){return t<i}),(function(e,t,i,r){return r.compare(t,i)<0})),Fi=Pi(">",(function(e,t,i){return t>i}),(function(e,t,i,r){return r.compare(t,i)>0})),Oi=Pi("<=",(function(e,t,i){return t<=i}),(function(e,t,i,r){return r.compare(t,i)<=0})),Ui=Pi(">=",(function(e,t,i){return t>=i}),(function(e,t,i,r){return r.compare(t,i)>=0}));class Vi{constructor(e,t,i,r,n){this.type=We,this.number=e,this.locale=t,this.currency=i,this.minFractionDigits=r,this.maxFractionDigits=n}static parse(e,t){if(3!==e.length)return t.error("Expected two arguments.");const i=t.parse(e[1],1,Xe);if(!i)return null;const r=e[2];if("object"!=typeof r||Array.isArray(r))return t.error("NumberFormat options argument must be an object.");let n=null;if(r.locale&&(n=t.parse(r.locale,1,We),!n))return null;let o=null;if(r.currency&&(o=t.parse(r.currency,1,We),!o))return null;let s=null;if(r["min-fraction-digits"]&&(s=t.parse(r["min-fraction-digits"],1,Xe),!s))return null;let a=null;return r["max-fraction-digits"]&&(a=t.parse(r["max-fraction-digits"],1,Xe),!a)?null:new Vi(i,n,o,s,a)}evaluate(e){return new Intl.NumberFormat(this.locale?this.locale.evaluate(e):[],{style:this.currency?"currency":"decimal",currency:this.currency?this.currency.evaluate(e):void 0,minimumFractionDigits:this.minFractionDigits?this.minFractionDigits.evaluate(e):void 0,maximumFractionDigits:this.maxFractionDigits?this.maxFractionDigits.evaluate(e):void 0}).format(this.number.evaluate(e))}eachChild(e){e(this.number),this.locale&&e(this.locale),this.currency&&e(this.currency),this.minFractionDigits&&e(this.minFractionDigits),this.maxFractionDigits&&e(this.maxFractionDigits)}outputDefined(){return!1}serialize(){const e={};return this.locale&&(e.locale=this.locale.serialize()),this.currency&&(e.currency=this.currency.serialize()),this.minFractionDigits&&(e["min-fraction-digits"]=this.minFractionDigits.serialize()),this.maxFractionDigits&&(e["max-fraction-digits"]=this.maxFractionDigits.serialize()),["number-format",this.number.serialize(),e]}}class ji{constructor(e){this.type=Xe,this.input=e}static parse(e,t){if(2!==e.length)return t.error(`Expected 1 argument, but found ${e.length-1} instead.`);const i=t.parse(e[1],1);return i?"array"!==i.type.kind&&"string"!==i.type.kind&&"value"!==i.type.kind?t.error(`Expected argument of type string or array, but found ${rt(i.type)} instead.`):new ji(i):null}evaluate(e){const t=this.input.evaluate(e);if("string"==typeof t)return t.length;if(Array.isArray(t))return t.length;throw new vt(`Expected value to be of type string or array, but found ${rt(gt(t))} instead.`)}eachChild(e){e(this.input)}outputDefined(){return!1}serialize(){const e=["length"];return this.eachChild((t=>{e.push(t.serialize())})),e}}const Ni={"==":Li,"!=":Bi,">":Fi,"<":Ri,">=":Ui,"<=":Oi,array:wt,at:Si,boolean:wt,case:Ci,coalesce:Ti,collator:zt,format:Tt,image:Et,in:Ii,"index-of":Mi,interpolate:bi,"interpolate-hcl":bi,"interpolate-lab":bi,length:ji,let:Ei,literal:xt,match:Ai,number:wt,"number-format":Vi,object:wt,slice:zi,step:ti,string:wt,"to-boolean":It,"to-color":It,"to-number":It,"to-string":It,var:Kt,within:Xt};function Gi(e,[t,i,r,n]){t=t.evaluate(e),i=i.evaluate(e),r=r.evaluate(e);const o=n?n.evaluate(e):1,s=mt(t,i,r,o);if(s)throw new vt(s);return new ht(t/255*o,i/255*o,r/255*o,o)}function Zi(e,t){return e in t}function $i(e,t){const i=t[e];return void 0===i?null:i}function qi(e){return{type:e}}function Xi(e){return{result:"success",value:e}}function Wi(e){return{result:"error",value:e}}function Hi(e){return"data-driven"===e["property-type"]||"cross-faded-data-driven"===e["property-type"]}function Yi(e){return!!e.expression&&e.expression.parameters.indexOf("zoom")>-1}function Ki(e){return!!e.expression&&e.expression.interpolated}function Ji(e){return e instanceof Number?"number":e instanceof String?"string":e instanceof Boolean?"boolean":Array.isArray(e)?"array":null===e?"null":typeof e}function Qi(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function er(e){return e}function tr(e,t){const i="color"===t.type,r=e.stops&&"object"==typeof e.stops[0][0],n=r||!(r||void 0!==e.property),o=e.type||(Ki(t)?"exponential":"interval");if(i&&((e=je({},e)).stops&&(e.stops=e.stops.map((e=>[e[0],ht.parse(e[1])]))),e.default=ht.parse(e.default?e.default:t.default)),e.colorSpace&&"rgb"!==e.colorSpace&&!vi[e.colorSpace])throw new Error(`Unknown color space: ${e.colorSpace}`);let s,a,l;if("exponential"===o)s=or;else if("interval"===o)s=nr;else if("categorical"===o){s=rr,a=Object.create(null);for(const t of e.stops)a[t[0]]=t[1];l=typeof e.stops[0][0]}else{if("identity"!==o)throw new Error(`Unknown function type "${o}"`);s=sr}if(r){const i={},r=[];for(let t=0;t<e.stops.length;t++){const n=e.stops[t],o=n[0].zoom;void 0===i[o]&&(i[o]={zoom:o,type:e.type,property:e.property,default:e.default,stops:[]},r.push(o)),i[o].stops.push([n[0].value,n[1]])}const n=[];for(const e of r)n.push([i[e].zoom,tr(i[e],t)]);const o={name:"linear"};return{kind:"composite",interpolationType:o,interpolationFactor:bi.interpolationFactor.bind(void 0,o),zoomStops:n.map((e=>e[0])),evaluate:({zoom:i},r)=>or({stops:n,base:e.base},t,i).evaluate(i,r)}}if(n){const i="exponential"===o?{name:"exponential",base:void 0!==e.base?e.base:1}:null;return{kind:"camera",interpolationType:i,interpolationFactor:bi.interpolationFactor.bind(void 0,i),zoomStops:e.stops.map((e=>e[0])),evaluate:({zoom:i})=>s(e,t,i,a,l)}}return{kind:"source",evaluate(i,r){const n=r&&r.properties?r.properties[e.property]:void 0;return void 0===n?ir(e.default,t.default):s(e,t,n,a,l)}}}function ir(e,t,i){return void 0!==e?e:void 0!==t?t:void 0!==i?i:void 0}function rr(e,t,i,r,n){return ir(typeof i===n?r[i]:void 0,e.default,t.default)}function nr(e,t,i){if("number"!==Ji(i))return ir(e.default,t.default);const r=e.stops.length;if(1===r)return e.stops[0][1];if(i<=e.stops[0][0])return e.stops[0][1];if(i>=e.stops[r-1][0])return e.stops[r-1][1];const n=ei(e.stops.map((e=>e[0])),i);return e.stops[n][1]}function or(e,t,i){const r=void 0!==e.base?e.base:1;if("number"!==Ji(i))return ir(e.default,t.default);const n=e.stops.length;if(1===n)return e.stops[0][1];if(i<=e.stops[0][0])return e.stops[0][1];if(i>=e.stops[n-1][0])return e.stops[n-1][1];const o=ei(e.stops.map((e=>e[0])),i),s=function(e,t,i,r){const n=r-i,o=e-i;return 0===n?0:1===t?o/n:(Math.pow(t,o)-1)/(Math.pow(t,n)-1)}(i,r,e.stops[o][0],e.stops[o+1][0]),a=e.stops[o][1],l=e.stops[o+1][1];let c=ri[t.type]||er;if(e.colorSpace&&"rgb"!==e.colorSpace){const t=vi[e.colorSpace];c=(e,i)=>t.reverse(t.interpolate(t.forward(e),t.forward(i),s))}return"function"==typeof a.evaluate?{evaluate(...e){const t=a.evaluate.apply(void 0,e),i=l.evaluate.apply(void 0,e);if(void 0!==t&&void 0!==i)return c(t,i,s)}}:c(a,l,s)}function sr(e,t,i){return"color"===t.type?i=ht.parse(i):"formatted"===t.type?i=pt.fromString(i.toString()):"resolvedImage"===t.type?i=ft.fromString(i.toString()):Ji(i)===t.type||"enum"===t.type&&t.values[i]||(i=void 0),ir(i,e.default,t.default)}Ct.register(Ni,{error:[{kind:"error"},[We],(e,[t])=>{throw new vt(t.evaluate(e))}],typeof:[We,[Je],(e,[t])=>rt(gt(t.evaluate(e)))],"to-rgba":[it(Xe,4),[Ye],(e,[t])=>t.evaluate(e).toArray()],rgb:[Ye,[Xe,Xe,Xe],Gi],rgba:[Ye,[Xe,Xe,Xe,Xe],Gi],has:{type:He,overloads:[[[We],(e,[t])=>Zi(t.evaluate(e),e.properties())],[[We,Ke],(e,[t,i])=>Zi(t.evaluate(e),i.evaluate(e))]]},get:{type:Je,overloads:[[[We],(e,[t])=>$i(t.evaluate(e),e.properties())],[[We,Ke],(e,[t,i])=>$i(t.evaluate(e),i.evaluate(e))]]},"feature-state":[Je,[We],(e,[t])=>$i(t.evaluate(e),e.featureState||{})],properties:[Ke,[],e=>e.properties()],"geometry-type":[We,[],e=>e.geometryType()],id:[Je,[],e=>e.id()],zoom:[Xe,[],e=>e.globals.zoom],pitch:[Xe,[],e=>e.globals.pitch||0],"distance-from-center":[Xe,[],e=>e.distanceFromCenter()],"heatmap-density":[Xe,[],e=>e.globals.heatmapDensity||0],"line-progress":[Xe,[],e=>e.globals.lineProgress||0],"sky-radial-progress":[Xe,[],e=>e.globals.skyRadialProgress||0],accumulated:[Je,[],e=>void 0===e.globals.accumulated?null:e.globals.accumulated],"+":[Xe,qi(Xe),(e,t)=>{let i=0;for(const r of t)i+=r.evaluate(e);return i}],"*":[Xe,qi(Xe),(e,t)=>{let i=1;for(const r of t)i*=r.evaluate(e);return i}],"-":{type:Xe,overloads:[[[Xe,Xe],(e,[t,i])=>t.evaluate(e)-i.evaluate(e)],[[Xe],(e,[t])=>-t.evaluate(e)]]},"/":[Xe,[Xe,Xe],(e,[t,i])=>t.evaluate(e)/i.evaluate(e)],"%":[Xe,[Xe,Xe],(e,[t,i])=>t.evaluate(e)%i.evaluate(e)],ln2:[Xe,[],()=>Math.LN2],pi:[Xe,[],()=>Math.PI],e:[Xe,[],()=>Math.E],"^":[Xe,[Xe,Xe],(e,[t,i])=>Math.pow(t.evaluate(e),i.evaluate(e))],sqrt:[Xe,[Xe],(e,[t])=>Math.sqrt(t.evaluate(e))],log10:[Xe,[Xe],(e,[t])=>Math.log(t.evaluate(e))/Math.LN10],ln:[Xe,[Xe],(e,[t])=>Math.log(t.evaluate(e))],log2:[Xe,[Xe],(e,[t])=>Math.log(t.evaluate(e))/Math.LN2],sin:[Xe,[Xe],(e,[t])=>Math.sin(t.evaluate(e))],cos:[Xe,[Xe],(e,[t])=>Math.cos(t.evaluate(e))],tan:[Xe,[Xe],(e,[t])=>Math.tan(t.evaluate(e))],asin:[Xe,[Xe],(e,[t])=>Math.asin(t.evaluate(e))],acos:[Xe,[Xe],(e,[t])=>Math.acos(t.evaluate(e))],atan:[Xe,[Xe],(e,[t])=>Math.atan(t.evaluate(e))],min:[Xe,qi(Xe),(e,t)=>Math.min(...t.map((t=>t.evaluate(e))))],max:[Xe,qi(Xe),(e,t)=>Math.max(...t.map((t=>t.evaluate(e))))],abs:[Xe,[Xe],(e,[t])=>Math.abs(t.evaluate(e))],round:[Xe,[Xe],(e,[t])=>{const i=t.evaluate(e);return i<0?-Math.round(-i):Math.round(i)}],floor:[Xe,[Xe],(e,[t])=>Math.floor(t.evaluate(e))],ceil:[Xe,[Xe],(e,[t])=>Math.ceil(t.evaluate(e))],"filter-==":[He,[We,Je],(e,[t,i])=>e.properties()[t.value]===i.value],"filter-id-==":[He,[Je],(e,[t])=>e.id()===t.value],"filter-type-==":[He,[We],(e,[t])=>e.geometryType()===t.value],"filter-<":[He,[We,Je],(e,[t,i])=>{const r=e.properties()[t.value],n=i.value;return typeof r==typeof n&&r<n}],"filter-id-<":[He,[Je],(e,[t])=>{const i=e.id(),r=t.value;return typeof i==typeof r&&i<r}],"filter->":[He,[We,Je],(e,[t,i])=>{const r=e.properties()[t.value],n=i.value;return typeof r==typeof n&&r>n}],"filter-id->":[He,[Je],(e,[t])=>{const i=e.id(),r=t.value;return typeof i==typeof r&&i>r}],"filter-<=":[He,[We,Je],(e,[t,i])=>{const r=e.properties()[t.value],n=i.value;return typeof r==typeof n&&r<=n}],"filter-id-<=":[He,[Je],(e,[t])=>{const i=e.id(),r=t.value;return typeof i==typeof r&&i<=r}],"filter->=":[He,[We,Je],(e,[t,i])=>{const r=e.properties()[t.value],n=i.value;return typeof r==typeof n&&r>=n}],"filter-id->=":[He,[Je],(e,[t])=>{const i=e.id(),r=t.value;return typeof i==typeof r&&i>=r}],"filter-has":[He,[Je],(e,[t])=>t.value in e.properties()],"filter-has-id":[He,[],e=>null!==e.id()&&void 0!==e.id()],"filter-type-in":[He,[it(We)],(e,[t])=>t.value.indexOf(e.geometryType())>=0],"filter-id-in":[He,[it(Je)],(e,[t])=>t.value.indexOf(e.id())>=0],"filter-in-small":[He,[We,it(Je)],(e,[t,i])=>i.value.indexOf(e.properties()[t.value])>=0],"filter-in-large":[He,[We,it(Je)],(e,[t,i])=>function(e,t,i,r){for(;i<=r;){const n=i+r>>1;if(t[n]===e)return!0;t[n]>e?r=n-1:i=n+1}return!1}(e.properties()[t.value],i.value,0,i.value.length-1)],all:{type:He,overloads:[[[He,He],(e,[t,i])=>t.evaluate(e)&&i.evaluate(e)],[qi(He),(e,t)=>{for(const i of t)if(!i.evaluate(e))return!1;return!0}]]},any:{type:He,overloads:[[[He,He],(e,[t,i])=>t.evaluate(e)||i.evaluate(e)],[qi(He),(e,t)=>{for(const i of t)if(i.evaluate(e))return!0;return!1}]]},"!":[He,[He],(e,[t])=>!t.evaluate(e)],"is-supported-script":[He,[We],(e,[t])=>{const i=e.globals&&e.globals.isSupportedScript;return!i||i(t.evaluate(e))}],upcase:[We,[We],(e,[t])=>t.evaluate(e).toUpperCase()],downcase:[We,[We],(e,[t])=>t.evaluate(e).toLowerCase()],concat:[We,qi(Je),(e,t)=>t.map((t=>yt(t.evaluate(e)))).join("")],"resolved-locale":[We,[Qe],(e,[t])=>t.evaluate(e).resolvedLocale()]});class ar{constructor(e,t){this.expression=e,this._warningHistory={},this._evaluator=new At,this._defaultValue=t?function(e){return"color"===e.type&&Qi(e.default)?new ht(0,0,0,0):"color"===e.type?ht.parse(e.default)||null:void 0===e.default?null:e.default}(t):null,this._enumValues=t&&"enum"===t.type?t.values:null}evaluateWithoutErrorHandling(e,t,i,r,n,o,s,a){return this._evaluator.globals=e,this._evaluator.feature=t,this._evaluator.featureState=i,this._evaluator.canonical=r||null,this._evaluator.availableImages=n||null,this._evaluator.formattedSection=o,this._evaluator.featureTileCoord=s||null,this._evaluator.featureDistanceData=a||null,this.expression.evaluate(this._evaluator)}evaluate(e,t,i,r,n,o,s,a){this._evaluator.globals=e,this._evaluator.feature=t||null,this._evaluator.featureState=i||null,this._evaluator.canonical=r||null,this._evaluator.availableImages=n||null,this._evaluator.formattedSection=o||null,this._evaluator.featureTileCoord=s||null,this._evaluator.featureDistanceData=a||null;try{const e=this.expression.evaluate(this._evaluator);if(null==e||"number"==typeof e&&e!=e)return this._defaultValue;if(this._enumValues&&!(e in this._enumValues))throw new vt(`Expected value to be one of ${Object.keys(this._enumValues).map((e=>JSON.stringify(e))).join(", ")}, but found ${JSON.stringify(e)} instead.`);return e}catch(e){return this._warningHistory[e.message]||(this._warningHistory[e.message]=!0,"undefined"!=typeof console&&console.warn(e.message)),this._defaultValue}}}function lr(e){return Array.isArray(e)&&e.length>0&&"string"==typeof e[0]&&e[0]in Ni}function cr(e,t){const i=new Jt(Ni,[],t?function(e){const t={color:Ye,string:We,number:Xe,enum:We,boolean:He,formatted:et,resolvedImage:tt};return"array"===e.type?it(t[e.value]||Je,e.length):t[e.type]}(t):void 0),r=i.parse(e,void 0,void 0,void 0,t&&"string"===t.type?{typeAnnotation:"coerce"}:void 0);return r?Xi(new ar(r,t)):Wi(i.errors)}class hr{constructor(e,t){this.kind=e,this._styleExpression=t,this.isStateDependent="constant"!==e&&!Ht(t.expression)}evaluateWithoutErrorHandling(e,t,i,r,n,o){return this._styleExpression.evaluateWithoutErrorHandling(e,t,i,r,n,o)}evaluate(e,t,i,r,n,o){return this._styleExpression.evaluate(e,t,i,r,n,o)}}class ur{constructor(e,t,i,r){this.kind=e,this.zoomStops=i,this._styleExpression=t,this.isStateDependent="camera"!==e&&!Ht(t.expression),this.interpolationType=r}evaluateWithoutErrorHandling(e,t,i,r,n,o){return this._styleExpression.evaluateWithoutErrorHandling(e,t,i,r,n,o)}evaluate(e,t,i,r,n,o){return this._styleExpression.evaluate(e,t,i,r,n,o)}interpolationFactor(e,t,i){return this.interpolationType?bi.interpolationFactor(this.interpolationType,e,t,i):0}}function dr(e,t){if("error"===(e=cr(e,t)).result)return e;const i=e.value.expression,r=Wt(i);if(!r&&!Hi(t))return Wi([new Ze("","data expressions not supported")]);const n=Yt(i,["zoom","pitch","distance-from-center"]);if(!n&&!Yi(t))return Wi([new Ze("","zoom expressions not supported")]);const o=fr(i);return o||n?o instanceof Ze?Wi([o]):o instanceof bi&&!Ki(t)?Wi([new Ze("",'"interpolate" expressions cannot be used with this property')]):Xi(o?new ur(r?"camera":"composite",e.value,o.labels,o instanceof bi?o.interpolation:void 0):new hr(r?"constant":"source",e.value)):Wi([new Ze("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.')])}class pr{constructor(e,t){this._parameters=e,this._specification=t,je(this,tr(this._parameters,this._specification))}static deserialize(e){return new pr(e._parameters,e._specification)}static serialize(e){return{_parameters:e._parameters,_specification:e._specification}}}function fr(e){let t=null;if(e instanceof Ei)t=fr(e.result);else if(e instanceof Ti){for(const i of e.args)if(t=fr(i),t)break}else(e instanceof ti||e instanceof bi)&&e.input instanceof Ct&&"zoom"===e.input.name&&(t=e);return t instanceof Ze||e.eachChild((e=>{const i=fr(e);i instanceof Ze?t=i:!t&&i?t=new Ze("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.'):t&&i&&t!==i&&(t=new Ze("",'Only one zoom-based "step" or "interpolate" subexpression may be used in an expression.'))})),t}class mr{constructor(e,t,i,r){this.message=(e?`${e}: `:"")+i,r&&(this.identifier=r),null!=t&&t.__line__&&(this.line=t.__line__)}}function _r(e){const t=e.key,i=e.value,r=e.valueSpec||{},n=e.objectElementValidators||{},o=e.style,s=e.styleSpec;let a=[];const l=Ji(i);if("object"!==l)return[new mr(t,i,`object expected, ${l} found`)];for(const e in i){const l=e.split(".")[0],c=r[l]||r["*"];let h;n[l]?h=n[l]:r[l]?h=Hr:n["*"]?h=n["*"]:r["*"]&&(h=Hr),h?a=a.concat(h({key:(t?`${t}.`:t)+e,value:i[e],valueSpec:c,style:o,styleSpec:s,object:i,objectKey:e},i)):a.push(new mr(t,i[e],`unknown property "${e}"`))}for(const e in r)n[e]||r[e].required&&void 0===r[e].default&&void 0===i[e]&&a.push(new mr(t,i,`missing required property "${e}"`));return a}function gr(e){const t=e.value,i=e.valueSpec,r=e.style,n=e.styleSpec,o=e.key,s=e.arrayElementValidator||Hr;if("array"!==Ji(t))return[new mr(o,t,`array expected, ${Ji(t)} found`)];if(i.length&&t.length!==i.length)return[new mr(o,t,`array length ${i.length} expected, length ${t.length} found`)];if(i["min-length"]&&t.length<i["min-length"])return[new mr(o,t,`array length at least ${i["min-length"]} expected, length ${t.length} found`)];let a={type:i.value,values:i.values,minimum:i.minimum,maximum:i.maximum,function:void 0};n.$version<7&&(a.function=i.function),"object"===Ji(i.value)&&(a=i.value);let l=[];for(let e=0;e<t.length;e++)l=l.concat(s({array:t,arrayIndex:e,value:t[e],valueSpec:a,style:r,styleSpec:n,key:`${o}[${e}]`}));return l}function yr(e){const t=e.key,i=e.value,r=e.valueSpec;let n=Ji(i);if("number"===n&&i!=i&&(n="NaN"),"number"!==n)return[new mr(t,i,`number expected, ${n} found`)];if("minimum"in r){let n=r.minimum;if("array"===Ji(r.minimum)&&(n=r.minimum[e.arrayIndex]),i<n)return[new mr(t,i,`${i} is less than the minimum value ${n}`)]}if("maximum"in r){let n=r.maximum;if("array"===Ji(r.maximum)&&(n=r.maximum[e.arrayIndex]),i>n)return[new mr(t,i,`${i} is greater than the maximum value ${n}`)]}return[]}function xr(e){const t=e.valueSpec,i=Ne(e.value.type);let r,n,o,s={};const a="categorical"!==i&&void 0===e.value.property,l=!a,c="array"===Ji(e.value.stops)&&"array"===Ji(e.value.stops[0])&&"object"===Ji(e.value.stops[0][0]),h=_r({key:e.key,value:e.value,valueSpec:e.styleSpec.function,style:e.style,styleSpec:e.styleSpec,objectElementValidators:{stops:function(e){if("identity"===i)return[new mr(e.key,e.value,'identity function may not have a "stops" property')];let t=[];const r=e.value;return t=t.concat(gr({key:e.key,value:r,valueSpec:e.valueSpec,style:e.style,styleSpec:e.styleSpec,arrayElementValidator:u})),"array"===Ji(r)&&0===r.length&&t.push(new mr(e.key,r,"array must have at least one stop")),t},default:function(e){return Hr({key:e.key,value:e.value,valueSpec:t,style:e.style,styleSpec:e.styleSpec})}}});return"identity"===i&&a&&h.push(new mr(e.key,e.value,'missing required property "property"')),"identity"===i||e.value.stops||h.push(new mr(e.key,e.value,'missing required property "stops"')),"exponential"===i&&e.valueSpec.expression&&!Ki(e.valueSpec)&&h.push(new mr(e.key,e.value,"exponential functions not supported")),e.styleSpec.$version>=8&&(l&&!Hi(e.valueSpec)?h.push(new mr(e.key,e.value,"property functions not supported")):a&&!Yi(e.valueSpec)&&h.push(new mr(e.key,e.value,"zoom functions not supported"))),"categorical"!==i&&!c||void 0!==e.value.property||h.push(new mr(e.key,e.value,'"property" property is required')),h;function u(e){let i=[];const r=e.value,a=e.key;if("array"!==Ji(r))return[new mr(a,r,`array expected, ${Ji(r)} found`)];if(2!==r.length)return[new mr(a,r,`array length 2 expected, length ${r.length} found`)];if(c){if("object"!==Ji(r[0]))return[new mr(a,r,`object expected, ${Ji(r[0])} found`)];if(void 0===r[0].zoom)return[new mr(a,r,"object stop key must have zoom")];if(void 0===r[0].value)return[new mr(a,r,"object stop key must have value")];const t=Ne(r[0].zoom);if("number"!=typeof t)return[new mr(a,r[0].zoom,"stop zoom values must be numbers")];if(o&&o>t)return[new mr(a,r[0].zoom,"stop zoom values must appear in ascending order")];t!==o&&(o=t,n=void 0,s={}),i=i.concat(_r({key:`${a}[0]`,value:r[0],valueSpec:{zoom:{}},style:e.style,styleSpec:e.styleSpec,objectElementValidators:{zoom:yr,value:d}}))}else i=i.concat(d({key:`${a}[0]`,value:r[0],valueSpec:{},style:e.style,styleSpec:e.styleSpec},r));return lr(Ge(r[1]))?i.concat([new mr(`${a}[1]`,r[1],"expressions are not allowed in function stops.")]):i.concat(Hr({key:`${a}[1]`,value:r[1],valueSpec:t,style:e.style,styleSpec:e.styleSpec}))}function d(e,o){const a=Ji(e.value),l=Ne(e.value),c=null!==e.value?e.value:o;if(r){if(a!==r)return[new mr(e.key,c,`${a} stop domain type must match previous stop domain type ${r}`)]}else r=a;if("number"!==a&&"string"!==a&&"boolean"!==a&&"number"!=typeof l&&"string"!=typeof l&&"boolean"!=typeof l)return[new mr(e.key,c,"stop domain value must be a number, string, or boolean")];if("number"!==a&&"categorical"!==i){let r=`number expected, ${a} found`;return Hi(t)&&void 0===i&&(r+='\nIf you intended to use a categorical function, specify `"type": "categorical"`.'),[new mr(e.key,c,r)]}return"categorical"!==i||"number"!==a||"number"==typeof l&&isFinite(l)&&Math.floor(l)===l?"categorical"!==i&&"number"===a&&"number"==typeof l&&"number"==typeof n&&void 0!==n&&l<n?[new mr(e.key,c,"stop domain values must appear in ascending order")]:(n=l,"categorical"===i&&l in s?[new mr(e.key,c,"stop domain values must be unique")]:(s[l]=!0,[])):[new mr(e.key,c,`integer expected, found ${String(l)}`)]}}function vr(e){const t=("property"===e.expressionContext?dr:cr)(Ge(e.value),e.valueSpec);if("error"===t.result)return t.value.map((t=>new mr(`${e.key}${t.key}`,e.value,t.message)));const i=t.value.expression||t.value._styleExpression.expression;if("property"===e.expressionContext&&"text-font"===e.propertyKey&&!i.outputDefined())return[new mr(e.key,e.value,`Invalid data expression for "${e.propertyKey}". Output values must be contained as literals within the expression.`)];if("property"===e.expressionContext&&"layout"===e.propertyType&&!Ht(i))return[new mr(e.key,e.value,'"feature-state" data expressions are not supported with layout properties.')];if("filter"===e.expressionContext)return br(i,e);if(e.expressionContext&&0===e.expressionContext.indexOf("cluster")){if(!Yt(i,["zoom","feature-state"]))return[new mr(e.key,e.value,'"zoom" and "feature-state" expressions are not supported with cluster properties.')];if("cluster-initial"===e.expressionContext&&!Wt(i))return[new mr(e.key,e.value,"Feature data expressions are not supported with initial expression part of cluster properties.")]}return[]}function br(e,t){const i=new Set(["zoom","feature-state","pitch","distance-from-center"]);if(t.valueSpec&&t.valueSpec.expression)for(const e of t.valueSpec.expression.parameters)i.delete(e);if(0===i.size)return[];const r=[];return e instanceof Ct&&i.has(e.name)?[new mr(t.key,t.value,`["${e.name}"] expression is not supported in a filter for a ${t.object.type} layer with id: ${t.object.id}`)]:(e.eachChild((e=>{r.push(...br(e,t))})),r)}function wr(e){const t=e.key,i=e.value,r=e.valueSpec,n=[];return Array.isArray(r.values)?-1===r.values.indexOf(Ne(i))&&n.push(new mr(t,i,`expected one of [${r.values.join(", ")}], ${JSON.stringify(i)} found`)):-1===Object.keys(r.values).indexOf(Ne(i))&&n.push(new mr(t,i,`expected one of [${Object.keys(r.values).join(", ")}], ${JSON.stringify(i)} found`)),n}function Tr(e){if(!0===e||!1===e)return!0;if(!Array.isArray(e)||0===e.length)return!1;switch(e[0]){case"has":return e.length>=2&&"$id"!==e[1]&&"$type"!==e[1];case"in":return e.length>=3&&("string"!=typeof e[1]||Array.isArray(e[2]));case"!in":case"!has":case"none":return!1;case"==":case"!=":case">":case">=":case"<":case"<=":return 3!==e.length||Array.isArray(e[1])||Array.isArray(e[2]);case"any":case"all":for(const t of e.slice(1))if(!Tr(t)&&"boolean"!=typeof t)return!1;return!0;default:return!0}}function Er(e,t="fill"){if(null==e)return{filter:()=>!0,needGeometry:!1,needFeature:!1};Tr(e)||(e=kr(e));const i=e;let r=!0;try{r=function(e){if(!Mr(e))return e;let t=Ge(e);return Ir(t),t=Sr(t),t}(i)}catch(e){console.warn(`Failed to extract static filter. Filter will continue working, but at higher memory usage and slower framerate.\nThis is most likely a bug, please report this via https://github.com/mapbox/mapbox-gl-js/issues/new?assignees=&labels=&template=Bug_report.md\nand paste the contents of this message in the report.\nThank you!\nFilter Expression:\n${JSON.stringify(i,null,2)}\n `)}const n=Ve[`filter_${t}`],o=cr(r,n);let s=null;if("error"===o.result)throw new Error(o.value.map((e=>`${e.key}: ${e.message}`)).join(", "));s=(e,t,i)=>o.value.evaluate(e,t,{},i);let a=null,l=null;if(r!==i){const e=cr(i,n);if("error"===e.result)throw new Error(e.value.map((e=>`${e.key}: ${e.message}`)).join(", "));a=(t,i,r,n,o)=>e.value.evaluate(t,i,{},r,void 0,void 0,n,o),l=!Wt(e.value.expression)}return s=s,{filter:s,dynamicFilter:a||void 0,needGeometry:zr(r),needFeature:!!l}}function Sr(e){if(!Array.isArray(e))return e;const t=function(e){if(Ar.has(e[0]))for(let t=1;t<e.length;t++)if(Mr(e[t]))return!0;return e}(e);return!0===t?t:t.map((e=>Sr(e)))}function Ir(e){let t=!1;const i=[];if("case"===e[0]){for(let r=1;r<e.length-1;r+=2)t=t||Mr(e[r]),i.push(e[r+1]);i.push(e[e.length-1])}else if("match"===e[0]){t=t||Mr(e[1]);for(let t=2;t<e.length-1;t+=2)i.push(e[t+1]);i.push(e[e.length-1])}else if("step"===e[0]){t=t||Mr(e[1]);for(let t=1;t<e.length-1;t+=2)i.push(e[t+1])}t&&(e.length=0,e.push("any",...i));for(let t=1;t<e.length;t++)Ir(e[t])}function Mr(e){if(!Array.isArray(e))return!1;if("pitch"===(t=e[0])||"distance-from-center"===t)return!0;var t;for(let t=1;t<e.length;t++)if(Mr(e[t]))return!0;return!1}const Ar=new Set(["in","==","!=",">",">=","<","<=","to-boolean"]);function Cr(e,t){return e<t?-1:e>t?1:0}function zr(e){if(!Array.isArray(e))return!1;if("within"===e[0])return!0;for(let t=1;t<e.length;t++)if(zr(e[t]))return!0;return!1}function kr(e){if(!e)return!0;const t=e[0];return e.length<=1?"any"!==t:"=="===t?Dr(e[1],e[2],"=="):"!="===t?Br(Dr(e[1],e[2],"==")):"<"===t||">"===t||"<="===t||">="===t?Dr(e[1],e[2],t):"any"===t?(i=e.slice(1),["any"].concat(i.map(kr))):"all"===t?["all"].concat(e.slice(1).map(kr)):"none"===t?["all"].concat(e.slice(1).map(kr).map(Br)):"in"===t?Pr(e[1],e.slice(2)):"!in"===t?Br(Pr(e[1],e.slice(2))):"has"===t?Lr(e[1]):"!has"===t?Br(Lr(e[1])):"within"!==t||e;var i}function Dr(e,t,i){switch(e){case"$type":return[`filter-type-${i}`,t];case"$id":return[`filter-id-${i}`,t];default:return[`filter-${i}`,e,t]}}function Pr(e,t){if(0===t.length)return!1;switch(e){case"$type":return["filter-type-in",["literal",t]];case"$id":return["filter-id-in",["literal",t]];default:return t.length>200&&!t.some((e=>typeof e!=typeof t[0]))?["filter-in-large",e,["literal",t.sort(Cr)]]:["filter-in-small",e,["literal",t]]}}function Lr(e){switch(e){case"$type":return!0;case"$id":return["filter-has-id"];default:return["filter-has",e]}}function Br(e){return["!",e]}function Rr(e){return Tr(Ge(e.value))?vr(je({},e,{expressionContext:"filter",valueSpec:e.styleSpec[`filter_${e.layerType||"fill"}`]})):Fr(e)}function Fr(e){const t=e.value,i=e.key;if("array"!==Ji(t))return[new mr(i,t,`array expected, ${Ji(t)} found`)];const r=e.styleSpec;let n,o=[];if(t.length<1)return[new mr(i,t,"filter array must have at least 1 element")];switch(o=o.concat(wr({key:`${i}[0]`,value:t[0],valueSpec:r.filter_operator,style:e.style,styleSpec:e.styleSpec})),Ne(t[0])){case"<":case"<=":case">":case">=":t.length>=2&&"$type"===Ne(t[1])&&o.push(new mr(i,t,`"$type" cannot be use with operator "${t[0]}"`));case"==":case"!=":3!==t.length&&o.push(new mr(i,t,`filter array for operator "${t[0]}" must have 3 elements`));case"in":case"!in":t.length>=2&&(n=Ji(t[1]),"string"!==n&&o.push(new mr(`${i}[1]`,t[1],`string expected, ${n} found`)));for(let s=2;s<t.length;s++)n=Ji(t[s]),"$type"===Ne(t[1])?o=o.concat(wr({key:`${i}[${s}]`,value:t[s],valueSpec:r.geometry_type,style:e.style,styleSpec:e.styleSpec})):"string"!==n&&"number"!==n&&"boolean"!==n&&o.push(new mr(`${i}[${s}]`,t[s],`string, number, or boolean expected, ${n} found`));break;case"any":case"all":case"none":for(let r=1;r<t.length;r++)o=o.concat(Fr({key:`${i}[${r}]`,value:t[r],style:e.style,styleSpec:e.styleSpec}));break;case"has":case"!has":n=Ji(t[1]),2!==t.length?o.push(new mr(i,t,`filter array for "${t[0]}" operator must have 2 elements`)):"string"!==n&&o.push(new mr(`${i}[1]`,t[1],`string expected, ${n} found`));break;case"within":n=Ji(t[1]),2!==t.length?o.push(new mr(i,t,`filter array for "${t[0]}" operator must have 2 elements`)):"object"!==n&&o.push(new mr(`${i}[1]`,t[1],`object expected, ${n} found`))}return o}function Or(e,t){const i=e.key,r=e.style,n=e.styleSpec,o=e.value,s=e.objectKey,a=n[`${t}_${e.layerType}`];if(!a)return[];const l=s.match(/^(.*)-transition$/);if("paint"===t&&l&&a[l[1]]&&a[l[1]].transition)return Hr({key:i,value:o,valueSpec:n.transition,style:r,styleSpec:n});const c=e.valueSpec||a[s];if(!c)return[new mr(i,o,`unknown property "${s}"`)];let h;if("string"===Ji(o)&&Hi(c)&&!c.tokens&&(h=/^{([^}]+)}$/.exec(o)))return[new mr(i,o,`"${s}" does not support interpolation syntax\nUse an identity property function instead: \`{ "type": "identity", "property": ${JSON.stringify(h[1])} }\`.`)];const u=[];return"symbol"===e.layerType&&("text-field"===s&&r&&!r.glyphs&&u.push(new mr(i,o,'use of "text-field" requires a style "glyphs" property')),"text-font"===s&&Qi(Ge(o))&&"identity"===Ne(o.type)&&u.push(new mr(i,o,'"text-font" does not support identity functions'))),u.concat(Hr({key:e.key,value:o,valueSpec:c,style:r,styleSpec:n,expressionContext:"property",propertyType:t,propertyKey:s}))}function Ur(e){return Or(e,"paint")}function Vr(e){return Or(e,"layout")}function jr(e){let t=[];const i=e.value,r=e.key,n=e.style,o=e.styleSpec;i.type||i.ref||t.push(new mr(r,i,'either "type" or "ref" is required'));let s=Ne(i.type);const a=Ne(i.ref);if(i.id){const o=Ne(i.id);for(let s=0;s<e.arrayIndex;s++){const e=n.layers[s];Ne(e.id)===o&&t.push(new mr(r,i.id,`duplicate layer id "${i.id}", previously used at line ${e.id.__line__}`))}}if("ref"in i){let e;["type","source","source-layer","filter","layout"].forEach((e=>{e in i&&t.push(new mr(r,i[e],`"${e}" is prohibited for ref layers`))})),n.layers.forEach((t=>{Ne(t.id)===a&&(e=t)})),e?e.ref?t.push(new mr(r,i.ref,"ref cannot reference another ref layer")):s=Ne(e.type):"string"==typeof a&&t.push(new mr(r,i.ref,`ref layer "${a}" not found`))}else if("background"!==s&&"sky"!==s)if(i.source){const e=n.sources&&n.sources[i.source],o=e&&Ne(e.type);e?"vector"===o&&"raster"===s?t.push(new mr(r,i.source,`layer "${i.id}" requires a raster source`)):"raster"===o&&"raster"!==s?t.push(new mr(r,i.source,`layer "${i.id}" requires a vector source`)):"vector"!==o||i["source-layer"]?"raster-dem"===o&&"hillshade"!==s?t.push(new mr(r,i.source,"raster-dem source can only be used with layer type 'hillshade'.")):"line"!==s||!i.paint||!i.paint["line-gradient"]||"geojson"===o&&e.lineMetrics||t.push(new mr(r,i,`layer "${i.id}" specifies a line-gradient, which requires a GeoJSON source with \`lineMetrics\` enabled.`)):t.push(new mr(r,i,`layer "${i.id}" must specify a "source-layer"`)):t.push(new mr(r,i.source,`source "${i.source}" not found`))}else t.push(new mr(r,i,'missing required property "source"'));return t=t.concat(_r({key:r,value:i,valueSpec:o.layer,style:e.style,styleSpec:e.styleSpec,objectElementValidators:{"*":()=>[],type:()=>Hr({key:`${r}.type`,value:i.type,valueSpec:o.layer.type,style:e.style,styleSpec:e.styleSpec,object:i,objectKey:"type"}),filter:e=>Rr(je({layerType:s},e)),layout:e=>_r({layer:i,key:e.key,value:e.value,valueSpec:{},style:e.style,styleSpec:e.styleSpec,objectElementValidators:{"*":e=>Vr(je({layerType:s},e))}}),paint:e=>_r({layer:i,key:e.key,value:e.value,valueSpec:{},style:e.style,styleSpec:e.styleSpec,objectElementValidators:{"*":e=>Ur(je({layerType:s},e))}})}})),t}function Nr(e){const t=e.value,i=e.key,r=Ji(t);return"string"!==r?[new mr(i,t,`string expected, ${r} found`)]:[]}const Gr={promoteId:function({key:e,value:t}){if("string"===Ji(t))return Nr({key:e,value:t});{const i=[];for(const r in t)i.push(...Nr({key:`${e}.${r}`,value:t[r]}));return i}}};function Zr(e){const t=e.value,i=e.key,r=e.styleSpec,n=e.style;if(!t.type)return[new mr(i,t,'"type" is required')];const o=Ne(t.type);let s;switch(o){case"vector":case"raster":case"raster-dem":return s=_r({key:i,value:t,valueSpec:r[`source_${o.replace("-","_")}`],style:e.style,styleSpec:r,objectElementValidators:Gr}),s;case"geojson":if(s=_r({key:i,value:t,valueSpec:r.source_geojson,style:n,styleSpec:r,objectElementValidators:Gr}),t.cluster)for(const e in t.clusterProperties){const[r,n]=t.clusterProperties[e],o="string"==typeof r?[r,["accumulated"],["get",e]]:r;s.push(...vr({key:`${i}.${e}.map`,value:n,expressionContext:"cluster-map"})),s.push(...vr({key:`${i}.${e}.reduce`,value:o,expressionContext:"cluster-reduce"}))}return s;case"video":return _r({key:i,value:t,valueSpec:r.source_video,style:n,styleSpec:r});case"image":return _r({key:i,value:t,valueSpec:r.source_image,style:n,styleSpec:r});case"canvas":return[new mr(i,null,"Please use runtime APIs to add canvas sources, rather than including them in stylesheets.","source.canvas")];default:return wr({key:`${i}.type`,value:t.type,valueSpec:{values:["vector","raster","raster-dem","geojson","video","image"]},style:n,styleSpec:r})}}function $r(e){const t=e.value,i=e.styleSpec,r=i.light,n=e.style;let o=[];const s=Ji(t);if(void 0===t)return o;if("object"!==s)return o=o.concat([new mr("light",t,`object expected, ${s} found`)]),o;for(const e in t){const s=e.match(/^(.*)-transition$/);o=o.concat(s&&r[s[1]]&&r[s[1]].transition?Hr({key:e,value:t[e],valueSpec:i.transition,style:n,styleSpec:i}):r[e]?Hr({key:e,value:t[e],valueSpec:r[e],style:n,styleSpec:i}):[new mr(e,t[e],`unknown property "${e}"`)])}return o}function qr(e){const t=e.value,i=e.key,r=e.style,n=e.styleSpec,o=n.terrain;let s=[];const a=Ji(t);if(void 0===t)return s;if("object"!==a)return s=s.concat([new mr("terrain",t,`object expected, ${a} found`)]),s;for(const e in t){const i=e.match(/^(.*)-transition$/);s=s.concat(i&&o[i[1]]&&o[i[1]].transition?Hr({key:e,value:t[e],valueSpec:n.transition,style:r,styleSpec:n}):o[e]?Hr({key:e,value:t[e],valueSpec:o[e],style:r,styleSpec:n}):[new mr(e,t[e],`unknown property "${e}"`)])}if(t.source){const e=r.sources&&r.sources[t.source],n=e&&Ne(e.type);e?"raster-dem"!==n&&s.push(new mr(i,t.source,`terrain cannot be used with a source of type ${String(n)}, it only be used with a "raster-dem" source type`)):s.push(new mr(i,t.source,`source "${t.source}" not found`))}else s.push(new mr(i,t,'terrain is missing required property "source"'));return s}function Xr(e){const t=e.value,i=e.style,r=e.styleSpec,n=r.fog;let o=[];const s=Ji(t);if(void 0===t)return o;if("object"!==s)return o=o.concat([new mr("fog",t,`object expected, ${s} found`)]),o;for(const e in t){const s=e.match(/^(.*)-transition$/);o=o.concat(s&&n[s[1]]&&n[s[1]].transition?Hr({key:e,value:t[e],valueSpec:r.transition,style:i,styleSpec:r}):n[e]?Hr({key:e,value:t[e],valueSpec:n[e],style:i,styleSpec:r}):[new mr(e,t[e],`unknown property "${e}"`)])}return o}const Wr={"*":()=>[],array:gr,boolean:function(e){const t=e.value,i=e.key,r=Ji(t);return"boolean"!==r?[new mr(i,t,`boolean expected, ${r} found`)]:[]},number:yr,color:function(e){const t=e.key,i=e.value,r=Ji(i);return"string"!==r?[new mr(t,i,`color expected, ${r} found`)]:null===ct.parseCSSColor(i)?[new mr(t,i,`color expected, "${i}" found`)]:[]},enum:wr,filter:Rr,function:xr,layer:jr,object:_r,source:Zr,light:$r,terrain:qr,fog:Xr,string:Nr,formatted:function(e){return 0===Nr(e).length?[]:vr(e)},resolvedImage:function(e){return 0===Nr(e).length?[]:vr(e)},projection:function(e){const t=e.value,i=e.styleSpec,r=i.projection,n=e.style;let o=[];const s=Ji(t);if("object"===s)for(const e in t)o=o.concat(Hr({key:e,value:t[e],valueSpec:r[e],style:n,styleSpec:i}));else"string"!==s&&(o=o.concat([new mr("projection",t,`object or string expected, ${s} found`)]));return o}};function Hr(e){const t=e.value,i=e.valueSpec,r=e.styleSpec;return i.expression&&Qi(Ne(t))?xr(e):i.expression&&lr(Ge(t))?vr(e):i.type&&Wr[i.type]?Wr[i.type](e):_r(je({},e,{valueSpec:i.type?r[i.type]:i}))}function Yr(e){const t=e.value,i=e.key,r=Nr(e);return r.length||(-1===t.indexOf("{fontstack}")&&r.push(new mr(i,t,'"glyphs" url must include a "{fontstack}" token')),-1===t.indexOf("{range}")&&r.push(new mr(i,t,'"glyphs" url must include a "{range}" token'))),r}function Kr(e,t=Ve){return en(Hr({key:"",value:e,valueSpec:t.$root,styleSpec:t,style:e,objectElementValidators:{glyphs:Yr,"*":()=>[]}}))}const Jr=e=>en(Ur(e)),Qr=e=>en(Vr(e));function en(e){return e.slice().sort(((e,t)=>e.line&&t.line?e.line-t.line:0))}function tn(e,t){let i=!1;if(t&&t.length)for(const r of t)e.fire(new Oe(new Error(r.message))),i=!0;return i}var rn=nn;function nn(e,t,i){var r=this.cells=[];if(e instanceof ArrayBuffer){this.arrayBuffer=e;var n=new Int32Array(this.arrayBuffer);e=n[0],this.d=(t=n[1])+2*(i=n[2]);for(var o=0;o<this.d*this.d;o++){var s=n[3+o],a=n[3+o+1];r.push(s===a?null:n.subarray(s,a))}var l=n[3+r.length+1];this.keys=n.subarray(n[3+r.length],l),this.bboxes=n.subarray(l),this.insert=this._insertReadonly}else{this.d=t+2*i;for(var c=0;c<this.d*this.d;c++)r.push([]);this.keys=[],this.bboxes=[]}this.n=t,this.extent=e,this.padding=i,this.scale=t/e,this.uid=0;var h=i/t*e;this.min=-h,this.max=e+h}nn.prototype.insert=function(e,t,i,r,n){this._forEachCell(t,i,r,n,this._insertCell,this.uid++),this.keys.push(e),this.bboxes.push(t),this.bboxes.push(i),this.bboxes.push(r),this.bboxes.push(n)},nn.prototype._insertReadonly=function(){throw"Cannot insert into a GridIndex created from an ArrayBuffer."},nn.prototype._insertCell=function(e,t,i,r,n,o){this.cells[n].push(o)},nn.prototype.query=function(e,t,i,r,n){var o=this.min,s=this.max;if(e<=o&&t<=o&&s<=i&&s<=r&&!n)return Array.prototype.slice.call(this.keys);var a=[];return this._forEachCell(e,t,i,r,this._queryCell,a,{},n),a},nn.prototype._queryCell=function(e,t,i,r,n,o,s,a){var l=this.cells[n];if(null!==l)for(var c=this.keys,h=this.bboxes,u=0;u<l.length;u++){var d=l[u];if(void 0===s[d]){var p=4*d;(a?a(h[p+0],h[p+1],h[p+2],h[p+3]):e<=h[p+2]&&t<=h[p+3]&&i>=h[p+0]&&r>=h[p+1])?(s[d]=!0,o.push(c[d])):s[d]=!1}}},nn.prototype._forEachCell=function(e,t,i,r,n,o,s,a){for(var l=this._convertToCellCoord(e),c=this._convertToCellCoord(t),h=this._convertToCellCoord(i),u=this._convertToCellCoord(r),d=l;d<=h;d++)for(var p=c;p<=u;p++){var f=this.d*p+d;if((!a||a(this._convertFromCellCoord(d),this._convertFromCellCoord(p),this._convertFromCellCoord(d+1),this._convertFromCellCoord(p+1)))&&n.call(this,e,t,i,r,f,o,s,a))return}},nn.prototype._convertFromCellCoord=function(e){return(e-this.padding)/this.scale},nn.prototype._convertToCellCoord=function(e){return Math.max(0,Math.min(this.d-1,Math.floor(e*this.scale)+this.padding))},nn.prototype.toArrayBuffer=function(){if(this.arrayBuffer)return this.arrayBuffer;for(var e=this.cells,t=3+this.cells.length+1+1,i=0,r=0;r<this.cells.length;r++)i+=this.cells[r].length;var n=new Int32Array(t+i+this.keys.length+this.bboxes.length);n[0]=this.extent,n[1]=this.n,n[2]=this.padding;for(var o=t,s=0;s<e.length;s++){var a=e[s];n[3+s]=o,n.set(a,o),o+=a.length}return n[3+e.length]=o,n.set(this.keys,o),n[3+e.length+1]=o+=this.keys.length,n.set(this.bboxes,o),o+=this.bboxes.length,n.buffer};const on={};function sn(e,t,i={}){Object.defineProperty(e,"_classRegistryKey",{value:t,writeable:!1}),on[t]={klass:e,omit:i.omit||[]}}sn(Object,"Object"),rn.serialize=function(e,t){const i=e.toArrayBuffer();return t&&t.push(i),{buffer:i}},rn.deserialize=function(e){return new rn(e.buffer)},Object.defineProperty(rn,"name",{value:"Grid"}),sn(rn,"Grid"),sn(ht,"Color"),sn(Error,"Error"),sn(Ee,"AJAXError"),sn(ft,"ResolvedImage"),sn(pr,"StylePropertyFunction"),sn(ar,"StyleExpression",{omit:["_evaluator"]}),sn(ur,"ZoomDependentExpression"),sn(hr,"ZoomConstantExpression"),sn(Ct,"CompoundExpression",{omit:["_evaluate"]});for(const e in Ni)on[Ni[e]._classRegistryKey]||sn(Ni[e],`Expression${e}`);function an(e){return e&&"undefined"!=typeof ArrayBuffer&&(e instanceof ArrayBuffer||e.constructor&&"ArrayBuffer"===e.constructor.name)}function ln(e){return s.ImageBitmap&&e instanceof s.ImageBitmap}function cn(e,t){if(null==e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||e instanceof Boolean||e instanceof Number||e instanceof String||e instanceof Date||e instanceof RegExp)return e;if(an(e)||ln(e))return t&&t.push(e),e;if(ArrayBuffer.isView(e)){const i=e;return t&&t.push(i.buffer),i}if(e instanceof s.ImageData)return t&&t.push(e.data.buffer),e;if(Array.isArray(e)){const i=[];for(const r of e)i.push(cn(r,t));return i}if("object"==typeof e){const i=e.constructor,r=i._classRegistryKey;if(!r)throw new Error(`can't serialize object of unregistered class ${r}`);const n=i.serialize?i.serialize(e,t):{};if(!i.serialize){for(const i in e)e.hasOwnProperty(i)&&(on[r].omit.indexOf(i)>=0||(n[i]=cn(e[i],t)));e instanceof Error&&(n.message=e.message)}if(n.$name)throw new Error("$name property is reserved for worker serialization logic.");return"Object"!==r&&(n.$name=r),n}throw new Error("can't serialize object of type "+typeof e)}function hn(e){if(null==e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||e instanceof Boolean||e instanceof Number||e instanceof String||e instanceof Date||e instanceof RegExp||an(e)||ln(e)||ArrayBuffer.isView(e)||e instanceof s.ImageData)return e;if(Array.isArray(e))return e.map(hn);if("object"==typeof e){const t=e.$name||"Object",{klass:i}=on[t];if(!i)throw new Error(`can't deserialize unregistered class ${t}`);if(i.deserialize)return i.deserialize(e);const r=Object.create(i.prototype);for(const t of Object.keys(e))"$name"!==t&&(r[t]=hn(e[t]));return r}throw new Error("can't deserialize object of type "+typeof e)}class un{constructor(){this.first=!0}update(e,t){const i=Math.floor(e);return this.first?(this.first=!1,this.lastIntegerZoom=i,this.lastIntegerZoomTime=0,this.lastZoom=e,this.lastFloorZoom=i,!0):(this.lastFloorZoom>i?(this.lastIntegerZoom=i+1,this.lastIntegerZoomTime=t):this.lastFloorZoom<i&&(this.lastIntegerZoom=i,this.lastIntegerZoomTime=t),e!==this.lastZoom&&(this.lastZoom=e,this.lastFloorZoom=i,!0))}}const dn=e=>e>=1536&&e<=1791,pn=e=>e>=1872&&e<=1919,fn=e=>e>=2208&&e<=2303,mn=e=>e>=11904&&e<=12031,_n=e=>e>=12032&&e<=12255,gn=e=>e>=12272&&e<=12287,yn=e=>e>=12288&&e<=12351,xn=e=>e>=12352&&e<=12447,vn=e=>e>=12448&&e<=12543,bn=e=>e>=12544&&e<=12591,wn=e=>e>=12704&&e<=12735,Tn=e=>e>=12736&&e<=12783,En=e=>e>=12784&&e<=12799,Sn=e=>e>=12800&&e<=13055,In=e=>e>=13056&&e<=13311,Mn=e=>e>=13312&&e<=19903,An=e=>e>=19968&&e<=40959,Cn=e=>e>=40960&&e<=42127,zn=e=>e>=42128&&e<=42191,kn=e=>e>=44032&&e<=55215,Dn=e=>e>=63744&&e<=64255,Pn=e=>e>=64336&&e<=65023,Ln=e=>e>=65040&&e<=65055,Bn=e=>e>=65072&&e<=65103,Rn=e=>e>=65104&&e<=65135,Fn=e=>e>=65136&&e<=65279,On=e=>e>=65280&&e<=65519;function Un(e){for(const t of e)if(Nn(t.charCodeAt(0)))return!0;return!1}function Vn(e){for(const t of e)if(!jn(t.charCodeAt(0)))return!1;return!0}function jn(e){return!(dn(e)||pn(e)||fn(e)||Pn(e)||Fn(e))}function Nn(e){return!(746!==e&&747!==e&&(e<4352||!(wn(e)||bn(e)||Bn(e)&&!(e>=65097&&e<=65103)||Dn(e)||In(e)||mn(e)||Tn(e)||!(!yn(e)||e>=12296&&e<=12305||e>=12308&&e<=12319||12336===e)||Mn(e)||An(e)||Sn(e)||(e=>e>=12592&&e<=12687)(e)||(e=>e>=43360&&e<=43391)(e)||(e=>e>=55216&&e<=55295)(e)||(e=>e>=4352&&e<=4607)(e)||kn(e)||xn(e)||gn(e)||(e=>e>=12688&&e<=12703)(e)||_n(e)||En(e)||vn(e)&&12540!==e||!(!On(e)||65288===e||65289===e||65293===e||e>=65306&&e<=65310||65339===e||65341===e||65343===e||e>=65371&&e<=65503||65507===e||e>=65512&&e<=65519)||!(!Rn(e)||e>=65112&&e<=65118||e>=65123&&e<=65126)||(e=>e>=5120&&e<=5759)(e)||(e=>e>=6320&&e<=6399)(e)||Ln(e)||(e=>e>=19904&&e<=19967)(e)||Cn(e)||zn(e))))}function Gn(e){return!(Nn(e)||function(e){return!!((e=>e>=128&&e<=255)(e)&&(167===e||169===e||174===e||177===e||188===e||189===e||190===e||215===e||247===e)||(e=>e>=8192&&e<=8303)(e)&&(8214===e||8224===e||8225===e||8240===e||8241===e||8251===e||8252===e||8258===e||8263===e||8264===e||8265===e||8273===e)||(e=>e>=8448&&e<=8527)(e)||(e=>e>=8528&&e<=8591)(e)||(e=>e>=8960&&e<=9215)(e)&&(e>=8960&&e<=8967||e>=8972&&e<=8991||e>=8996&&e<=9e3||9003===e||e>=9085&&e<=9114||e>=9150&&e<=9165||9167===e||e>=9169&&e<=9179||e>=9186&&e<=9215)||(e=>e>=9216&&e<=9279)(e)&&9251!==e||(e=>e>=9280&&e<=9311)(e)||(e=>e>=9312&&e<=9471)(e)||(e=>e>=9632&&e<=9727)(e)||(e=>e>=9728&&e<=9983)(e)&&!(e>=9754&&e<=9759)||(e=>e>=11008&&e<=11263)(e)&&(e>=11026&&e<=11055||e>=11088&&e<=11097||e>=11192&&e<=11243)||yn(e)||vn(e)||(e=>e>=57344&&e<=63743)(e)||Bn(e)||Rn(e)||On(e)||8734===e||8756===e||8757===e||e>=9984&&e<=10087||e>=10102&&e<=10131||65532===e||65533===e)}(e))}function Zn(e){return e>=1424&&e<=2303||Pn(e)||Fn(e)}function $n(e,t){return!(!t&&Zn(e)||e>=2304&&e<=3583||e>=3840&&e<=4255||(e=>e>=6016&&e<=6143)(e))}function qn(e){for(const t of e)if(Zn(t.charCodeAt(0)))return!0;return!1}const Xn="deferred",Wn="loading",Hn="loaded";let Yn=null,Kn="unavailable",Jn=null;const Qn=function(e){e&&"string"==typeof e&&e.indexOf("NetworkError")>-1&&(Kn="error"),Yn&&Yn(e)};function eo(){to.fire(new Fe("pluginStateChange",{pluginStatus:Kn,pluginURL:Jn}))}const to=new Ue,io=function(){return Kn},ro=function(){if(Kn!==Xn||!Jn)throw new Error("rtl-text-plugin cannot be downloaded unless a pluginURL is specified");Kn=Wn,eo(),Jn&&Me({url:Jn},(e=>{e?Qn(e):(Kn=Hn,eo())}))},no={applyArabicShaping:null,processBidirectionalText:null,processStyledBidirectionalText:null,isLoaded:()=>Kn===Hn||null!=no.applyArabicShaping,isLoading:()=>Kn===Wn,setState(e){Kn=e.pluginStatus,Jn=e.pluginURL},isParsed:()=>null!=no.applyArabicShaping&&null!=no.processBidirectionalText&&null!=no.processStyledBidirectionalText,getPluginURL:()=>Jn};class oo{constructor(e,t){this.zoom=e,t?(this.now=t.now,this.fadeDuration=t.fadeDuration,this.zoomHistory=t.zoomHistory,this.transition=t.transition,this.pitch=t.pitch):(this.now=0,this.fadeDuration=0,this.zoomHistory=new un,this.transition={},this.pitch=0)}isSupportedScript(e){return function(e,t){for(const i of e)if(!$n(i.charCodeAt(0),t))return!1;return!0}(e,no.isLoaded())}crossFadingFactor(){return 0===this.fadeDuration?1:Math.min((this.now-this.zoomHistory.lastIntegerZoomTime)/this.fadeDuration,1)}getCrossfadeParameters(){const e=this.zoom,t=e-Math.floor(e),i=this.crossFadingFactor();return e>this.zoomHistory.lastIntegerZoom?{fromScale:2,toScale:1,t:t+(1-t)*i}:{fromScale:.5,toScale:1,t:1-(1-i)*t}}}class so{constructor(e,t){this.property=e,this.value=t,this.expression=function(e,t){if(Qi(e))return new pr(e,t);if(lr(e)){const i=dr(e,t);if("error"===i.result)throw new Error(i.value.map((e=>`${e.key}: ${e.message}`)).join(", "));return i.value}{let i=e;return"string"==typeof e&&"color"===t.type&&(i=ht.parse(e)),{kind:"constant",evaluate:()=>i}}}(void 0===t?e.specification.default:t,e.specification)}isDataDriven(){return"source"===this.expression.kind||"composite"===this.expression.kind}possiblyEvaluate(e,t,i){return this.property.possiblyEvaluate(this,e,t,i)}}class ao{constructor(e){this.property=e,this.value=new so(e,void 0)}transitioned(e,t){return new co(this.property,this.value,t,v({},e.transition,this.transition),e.now)}untransitioned(){return new co(this.property,this.value,null,{},0)}}class lo{constructor(e){this._properties=e,this._values=Object.create(e.defaultTransitionablePropertyValues)}getValue(e){return z(this._values[e].value.value)}setValue(e,t){this._values.hasOwnProperty(e)||(this._values[e]=new ao(this._values[e].property)),this._values[e].value=new so(this._values[e].property,null===t?void 0:z(t))}getTransition(e){return z(this._values[e].transition)}setTransition(e,t){this._values.hasOwnProperty(e)||(this._values[e]=new ao(this._values[e].property)),this._values[e].transition=z(t)||void 0}serialize(){const e={};for(const t of Object.keys(this._values)){const i=this.getValue(t);void 0!==i&&(e[t]=i);const r=this.getTransition(t);void 0!==r&&(e[`${t}-transition`]=r)}return e}transitioned(e,t){const i=new ho(this._properties);for(const r of Object.keys(this._values))i._values[r]=this._values[r].transitioned(e,t._values[r]);return i}untransitioned(){const e=new ho(this._properties);for(const t of Object.keys(this._values))e._values[t]=this._values[t].untransitioned();return e}}class co{constructor(e,t,i,r,n){const o=r.delay||0,s=r.duration||0;n=n||0,this.property=e,this.value=t,this.begin=n+o,this.end=this.begin+s,e.specification.transition&&(r.delay||r.duration)&&(this.prior=i)}possiblyEvaluate(e,t,i){const r=e.now||0,n=this.value.possiblyEvaluate(e,t,i),o=this.prior;if(o){if(r>this.end)return this.prior=null,n;if(this.value.isDataDriven())return this.prior=null,n;if(r<this.begin)return o.possiblyEvaluate(e,t,i);{const s=(r-this.begin)/(this.end-this.begin);return this.property.interpolate(o.possiblyEvaluate(e,t,i),n,d(s))}}return n}}class ho{constructor(e){this._properties=e,this._values=Object.create(e.defaultTransitioningPropertyValues)}possiblyEvaluate(e,t,i){const r=new fo(this._properties);for(const n of Object.keys(this._values))r._values[n]=this._values[n].possiblyEvaluate(e,t,i);return r}hasTransition(){for(const e of Object.keys(this._values))if(this._values[e].prior)return!0;return!1}}class uo{constructor(e){this._properties=e,this._values=Object.create(e.defaultPropertyValues)}getValue(e){return z(this._values[e].value)}setValue(e,t){this._values[e]=new so(this._values[e].property,null===t?void 0:z(t))}serialize(){const e={};for(const t of Object.keys(this._values)){const i=this.getValue(t);void 0!==i&&(e[t]=i)}return e}possiblyEvaluate(e,t,i){const r=new fo(this._properties);for(const n of Object.keys(this._values))r._values[n]=this._values[n].possiblyEvaluate(e,t,i);return r}}class po{constructor(e,t,i){this.property=e,this.value=t,this.parameters=i}isConstant(){return"constant"===this.value.kind}constantOr(e){return"constant"===this.value.kind?this.value.value:e}evaluate(e,t,i,r){return this.property.evaluate(this.value,this.parameters,e,t,i,r)}}class fo{constructor(e){this._properties=e,this._values=Object.create(e.defaultPossiblyEvaluatedValues)}get(e){return this._values[e]}}class mo{constructor(e){this.specification=e}possiblyEvaluate(e,t){return e.expression.evaluate(t)}interpolate(e,t,i){const r=ri[this.specification.type];return r?r(e,t,i):e}}class _o{constructor(e,t){this.specification=e,this.overrides=t}possiblyEvaluate(e,t,i,r){return new po(this,"constant"===e.expression.kind||"camera"===e.expression.kind?{kind:"constant",value:e.expression.evaluate(t,null,{},i,r)}:e.expression,t)}interpolate(e,t,i){if("constant"!==e.value.kind||"constant"!==t.value.kind)return e;if(void 0===e.value.value||void 0===t.value.value)return new po(this,{kind:"constant",value:void 0},e.parameters);const r=ri[this.specification.type];return r?new po(this,{kind:"constant",value:r(e.value.value,t.value.value,i)},e.parameters):e}evaluate(e,t,i,r,n,o){return"constant"===e.kind?e.value:e.evaluate(t,i,r,n,o)}}class go extends _o{possiblyEvaluate(e,t,i,r){if(void 0===e.value)return new po(this,{kind:"constant",value:void 0},t);if("constant"===e.expression.kind){const n=e.expression.evaluate(t,null,{},i,r),o="resolvedImage"===e.property.specification.type&&"string"!=typeof n?n.name:n,s=this._calculate(o,o,o,t);return new po(this,{kind:"constant",value:s},t)}if("camera"===e.expression.kind){const i=this._calculate(e.expression.evaluate({zoom:t.zoom-1}),e.expression.evaluate({zoom:t.zoom}),e.expression.evaluate({zoom:t.zoom+1}),t);return new po(this,{kind:"constant",value:i},t)}return new po(this,e.expression,t)}evaluate(e,t,i,r,n,o){if("source"===e.kind){const s=e.evaluate(t,i,r,n,o);return this._calculate(s,s,s,t)}return"composite"===e.kind?this._calculate(e.evaluate({zoom:Math.floor(t.zoom)-1},i,r),e.evaluate({zoom:Math.floor(t.zoom)},i,r),e.evaluate({zoom:Math.floor(t.zoom)+1},i,r),t):e.value}_calculate(e,t,i,r){return r.zoom>r.zoomHistory.lastIntegerZoom?{from:e,to:t,other:i}:{from:i,to:t,other:e}}interpolate(e){return e}}class yo{constructor(e){this.specification=e}possiblyEvaluate(e,t,i,r){if(void 0!==e.value){if("constant"===e.expression.kind){const n=e.expression.evaluate(t,null,{},i,r);return this._calculate(n,n,n,t)}return this._calculate(e.expression.evaluate(new oo(Math.floor(t.zoom-1),t)),e.expression.evaluate(new oo(Math.floor(t.zoom),t)),e.expression.evaluate(new oo(Math.floor(t.zoom+1),t)),t)}}_calculate(e,t,i,r){return r.zoom>r.zoomHistory.lastIntegerZoom?{from:e,to:t}:{from:i,to:t}}interpolate(e){return e}}class xo{constructor(e){this.specification=e}possiblyEvaluate(e,t,i,r){return!!e.expression.evaluate(t,null,{},i,r)}interpolate(){return!1}}class vo{constructor(e){this.properties=e,this.defaultPropertyValues={},this.defaultTransitionablePropertyValues={},this.defaultTransitioningPropertyValues={},this.defaultPossiblyEvaluatedValues={},this.overridableProperties=[];for(const t in e){const i=e[t];i.specification.overridable&&this.overridableProperties.push(t);const r=this.defaultPropertyValues[t]=new so(i,void 0),n=this.defaultTransitionablePropertyValues[t]=new ao(i);this.defaultTransitioningPropertyValues[t]=n.untransitioned(),this.defaultPossiblyEvaluatedValues[t]=r.possiblyEvaluate({})}}}function bo(e,t){return 256*(e=m(Math.floor(e),0,255))+m(Math.floor(t),0,255)}sn(_o,"DataDrivenProperty"),sn(mo,"DataConstantProperty"),sn(go,"CrossFadedDataDrivenProperty"),sn(yo,"CrossFadedProperty"),sn(xo,"ColorRampProperty");const wo={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array};class To{constructor(e,t){this._structArray=e,this._pos1=t*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8}}class Eo{constructor(){this.isTransferred=!1,this.capacity=-1,this.resize(0)}static serialize(e,t){return e._trim(),t&&(e.isTransferred=!0,t.push(e.arrayBuffer)),{length:e.length,arrayBuffer:e.arrayBuffer}}static deserialize(e){const t=Object.create(this.prototype);return t.arrayBuffer=e.arrayBuffer,t.length=e.length,t.capacity=e.arrayBuffer.byteLength/t.bytesPerElement,t._refreshViews(),t}_trim(){this.length!==this.capacity&&(this.capacity=this.length,this.arrayBuffer=this.arrayBuffer.slice(0,this.length*this.bytesPerElement),this._refreshViews())}clear(){this.length=0}resize(e){this.reserve(e),this.length=e}reserve(e){if(e>this.capacity){this.capacity=Math.max(e,Math.floor(5*this.capacity),128),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);const t=this.uint8;this._refreshViews(),t&&this.uint8.set(t)}}_refreshViews(){throw new Error("_refreshViews() must be implemented by each concrete StructArray layout")}destroy(){this.int8=this.uint8=this.int16=this.uint16=this.int32=this.uint32=this.float32=null,this.arrayBuffer=null}}function So(e,t=1){let i=0,r=0;return{members:e.map((e=>{const n=wo[e.type].BYTES_PER_ELEMENT,o=i=Io(i,Math.max(t,n)),s=e.components||1;return r=Math.max(r,n),i+=n*s,{name:e.name,type:e.type,components:s,offset:o}})),size:Io(i,Math.max(r,t)),alignment:t}}function Io(e,t){return Math.ceil(e/t)*t}class Mo extends Eo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,t){const i=this.length;return this.resize(i+1),this.emplace(i,e,t)}emplace(e,t,i){const r=2*e;return this.int16[r+0]=t,this.int16[r+1]=i,e}}Mo.prototype.bytesPerElement=4,sn(Mo,"StructArrayLayout2i4");class Ao extends Eo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,t,i){const r=this.length;return this.resize(r+1),this.emplace(r,e,t,i)}emplace(e,t,i,r){const n=3*e;return this.int16[n+0]=t,this.int16[n+1]=i,this.int16[n+2]=r,e}}Ao.prototype.bytesPerElement=6,sn(Ao,"StructArrayLayout3i6");class Co extends Eo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,t,i,r){const n=this.length;return this.resize(n+1),this.emplace(n,e,t,i,r)}emplace(e,t,i,r,n){const o=4*e;return this.int16[o+0]=t,this.int16[o+1]=i,this.int16[o+2]=r,this.int16[o+3]=n,e}}Co.prototype.bytesPerElement=8,sn(Co,"StructArrayLayout4i8");class zo extends Eo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,t,i,r,n,o,s){const a=this.length;return this.resize(a+1),this.emplace(a,e,t,i,r,n,o,s)}emplace(e,t,i,r,n,o,s,a){const l=6*e,c=12*e,h=3*e;return this.int16[l+0]=t,this.int16[l+1]=i,this.uint8[c+4]=r,this.uint8[c+5]=n,this.uint8[c+6]=o,this.uint8[c+7]=s,this.float32[h+2]=a,e}}zo.prototype.bytesPerElement=12,sn(zo,"StructArrayLayout2i4ub1f12");class ko extends Eo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,t,i,r){const n=this.length;return this.resize(n+1),this.emplace(n,e,t,i,r)}emplace(e,t,i,r,n){const o=4*e;return this.float32[o+0]=t,this.float32[o+1]=i,this.float32[o+2]=r,this.float32[o+3]=n,e}}ko.prototype.bytesPerElement=16,sn(ko,"StructArrayLayout4f16");class Do extends Eo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,t,i,r,n,o,s,a,l,c){const h=this.length;return this.resize(h+1),this.emplace(h,e,t,i,r,n,o,s,a,l,c)}emplace(e,t,i,r,n,o,s,a,l,c,h){const u=10*e;return this.uint16[u+0]=t,this.uint16[u+1]=i,this.uint16[u+2]=r,this.uint16[u+3]=n,this.uint16[u+4]=o,this.uint16[u+5]=s,this.uint16[u+6]=a,this.uint16[u+7]=l,this.uint16[u+8]=c,this.uint16[u+9]=h,e}}Do.prototype.bytesPerElement=20,sn(Do,"StructArrayLayout10ui20");class Po extends Eo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,t,i,r,n,o,s,a){const l=this.length;return this.resize(l+1),this.emplace(l,e,t,i,r,n,o,s,a)}emplace(e,t,i,r,n,o,s,a,l){const c=8*e;return this.uint16[c+0]=t,this.uint16[c+1]=i,this.uint16[c+2]=r,this.uint16[c+3]=n,this.uint16[c+4]=o,this.uint16[c+5]=s,this.uint16[c+6]=a,this.uint16[c+7]=l,e}}Po.prototype.bytesPerElement=16,sn(Po,"StructArrayLayout8ui16");class Lo extends Eo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,t,i,r,n,o){const s=this.length;return this.resize(s+1),this.emplace(s,e,t,i,r,n,o)}emplace(e,t,i,r,n,o,s){const a=6*e;return this.int16[a+0]=t,this.int16[a+1]=i,this.int16[a+2]=r,this.int16[a+3]=n,this.int16[a+4]=o,this.int16[a+5]=s,e}}Lo.prototype.bytesPerElement=12,sn(Lo,"StructArrayLayout6i12");class Bo extends Eo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,t,i,r,n,o,s,a,l,c,h,u,d,p,f,m){const _=this.length;return this.resize(_+1),this.emplace(_,e,t,i,r,n,o,s,a,l,c,h,u,d,p,f,m)}emplace(e,t,i,r,n,o,s,a,l,c,h,u,d,p,f,m,_){const g=16*e;return this.int16[g+0]=t,this.int16[g+1]=i,this.int16[g+2]=r,this.int16[g+3]=n,this.uint16[g+4]=o,this.uint16[g+5]=s,this.uint16[g+6]=a,this.uint16[g+7]=l,this.int16[g+8]=c,this.int16[g+9]=h,this.int16[g+10]=u,this.int16[g+11]=d,this.int16[g+12]=p,this.int16[g+13]=f,this.int16[g+14]=m,this.int16[g+15]=_,e}}Bo.prototype.bytesPerElement=32,sn(Bo,"StructArrayLayout4i4ui4i4i32");class Ro extends Eo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,t,i){const r=this.length;return this.resize(r+1),this.emplace(r,e,t,i)}emplace(e,t,i,r){const n=3*e;return this.float32[n+0]=t,this.float32[n+1]=i,this.float32[n+2]=r,e}}Ro.prototype.bytesPerElement=12,sn(Ro,"StructArrayLayout3f12");class Fo extends Eo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer)}emplaceBack(e){const t=this.length;return this.resize(t+1),this.emplace(t,e)}emplace(e,t){return this.uint32[1*e+0]=t,e}}Fo.prototype.bytesPerElement=4,sn(Fo,"StructArrayLayout1ul4");class Oo extends Eo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,t,i,r,n,o,s,a,l,c,h,u,d){const p=this.length;return this.resize(p+1),this.emplace(p,e,t,i,r,n,o,s,a,l,c,h,u,d)}emplace(e,t,i,r,n,o,s,a,l,c,h,u,d,p){const f=20*e,m=10*e;return this.int16[f+0]=t,this.int16[f+1]=i,this.int16[f+2]=r,this.int16[f+3]=n,this.int16[f+4]=o,this.float32[m+3]=s,this.float32[m+4]=a,this.float32[m+5]=l,this.float32[m+6]=c,this.int16[f+14]=h,this.uint32[m+8]=u,this.uint16[f+18]=d,this.uint16[f+19]=p,e}}Oo.prototype.bytesPerElement=40,sn(Oo,"StructArrayLayout5i4f1i1ul2ui40");class Uo extends Eo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,t,i,r,n,o,s){const a=this.length;return this.resize(a+1),this.emplace(a,e,t,i,r,n,o,s)}emplace(e,t,i,r,n,o,s,a){const l=8*e;return this.int16[l+0]=t,this.int16[l+1]=i,this.int16[l+2]=r,this.int16[l+4]=n,this.int16[l+5]=o,this.int16[l+6]=s,this.int16[l+7]=a,e}}Uo.prototype.bytesPerElement=16,sn(Uo,"StructArrayLayout3i2i2i16");class Vo extends Eo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,t,i,r,n){const o=this.length;return this.resize(o+1),this.emplace(o,e,t,i,r,n)}emplace(e,t,i,r,n,o){const s=4*e,a=8*e;return this.float32[s+0]=t,this.float32[s+1]=i,this.float32[s+2]=r,this.int16[a+6]=n,this.int16[a+7]=o,e}}Vo.prototype.bytesPerElement=16,sn(Vo,"StructArrayLayout2f1f2i16");class jo extends Eo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,t,i,r){const n=this.length;return this.resize(n+1),this.emplace(n,e,t,i,r)}emplace(e,t,i,r,n){const o=12*e,s=3*e;return this.uint8[o+0]=t,this.uint8[o+1]=i,this.float32[s+1]=r,this.float32[s+2]=n,e}}jo.prototype.bytesPerElement=12,sn(jo,"StructArrayLayout2ub2f12");class No extends Eo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,t,i){const r=this.length;return this.resize(r+1),this.emplace(r,e,t,i)}emplace(e,t,i,r){const n=3*e;return this.uint16[n+0]=t,this.uint16[n+1]=i,this.uint16[n+2]=r,e}}No.prototype.bytesPerElement=6,sn(No,"StructArrayLayout3ui6");class Go extends Eo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer)}emplaceBack(e,t,i,r,n,o,s,a,l,c,h,u,d,p,f,m,_,g,y,x,v){const b=this.length;return this.resize(b+1),this.emplace(b,e,t,i,r,n,o,s,a,l,c,h,u,d,p,f,m,_,g,y,x,v)}emplace(e,t,i,r,n,o,s,a,l,c,h,u,d,p,f,m,_,g,y,x,v,b){const w=30*e,T=15*e,E=60*e;return this.int16[w+0]=t,this.int16[w+1]=i,this.int16[w+2]=r,this.float32[T+2]=n,this.float32[T+3]=o,this.uint16[w+8]=s,this.uint16[w+9]=a,this.uint32[T+5]=l,this.uint32[T+6]=c,this.uint32[T+7]=h,this.uint16[w+16]=u,this.uint16[w+17]=d,this.uint16[w+18]=p,this.float32[T+10]=f,this.float32[T+11]=m,this.uint8[E+48]=_,this.uint8[E+49]=g,this.uint8[E+50]=y,this.uint32[T+13]=x,this.int16[w+28]=v,this.uint8[E+58]=b,e}}Go.prototype.bytesPerElement=60,sn(Go,"StructArrayLayout3i2f2ui3ul3ui2f3ub1ul1i1ub60");class Zo extends Eo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer)}emplaceBack(e,t,i,r,n,o,s,a,l,c,h,u,d,p,f,m,_,g,y,x,v,b,w,T,E,S,I,M,A,C){const z=this.length;return this.resize(z+1),this.emplace(z,e,t,i,r,n,o,s,a,l,c,h,u,d,p,f,m,_,g,y,x,v,b,w,T,E,S,I,M,A,C)}emplace(e,t,i,r,n,o,s,a,l,c,h,u,d,p,f,m,_,g,y,x,v,b,w,T,E,S,I,M,A,C,z){const k=38*e,D=19*e;return this.int16[k+0]=t,this.int16[k+1]=i,this.int16[k+2]=r,this.float32[D+2]=n,this.float32[D+3]=o,this.int16[k+8]=s,this.int16[k+9]=a,this.int16[k+10]=l,this.int16[k+11]=c,this.int16[k+12]=h,this.int16[k+13]=u,this.uint16[k+14]=d,this.uint16[k+15]=p,this.uint16[k+16]=f,this.uint16[k+17]=m,this.uint16[k+18]=_,this.uint16[k+19]=g,this.uint16[k+20]=y,this.uint16[k+21]=x,this.uint16[k+22]=v,this.uint16[k+23]=b,this.uint16[k+24]=w,this.uint16[k+25]=T,this.uint16[k+26]=E,this.uint16[k+27]=S,this.uint16[k+28]=I,this.uint32[D+15]=M,this.float32[D+16]=A,this.float32[D+17]=C,this.float32[D+18]=z,e}}Zo.prototype.bytesPerElement=76,sn(Zo,"StructArrayLayout3i2f6i15ui1ul3f76");class $o extends Eo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e){const t=this.length;return this.resize(t+1),this.emplace(t,e)}emplace(e,t){return this.float32[1*e+0]=t,e}}$o.prototype.bytesPerElement=4,sn($o,"StructArrayLayout1f4");class qo extends Eo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,t,i,r,n,o,s){const a=this.length;return this.resize(a+1),this.emplace(a,e,t,i,r,n,o,s)}emplace(e,t,i,r,n,o,s,a){const l=7*e;return this.float32[l+0]=t,this.float32[l+1]=i,this.float32[l+2]=r,this.float32[l+3]=n,this.float32[l+4]=o,this.float32[l+5]=s,this.float32[l+6]=a,e}}qo.prototype.bytesPerElement=28,sn(qo,"StructArrayLayout7f28");class Xo extends Eo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,t,i,r,n){const o=this.length;return this.resize(o+1),this.emplace(o,e,t,i,r,n)}emplace(e,t,i,r,n,o){const s=5*e;return this.float32[s+0]=t,this.float32[s+1]=i,this.float32[s+2]=r,this.float32[s+3]=n,this.float32[s+4]=o,e}}Xo.prototype.bytesPerElement=20,sn(Xo,"StructArrayLayout5f20");class Wo extends Eo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,t,i,r){const n=this.length;return this.resize(n+1),this.emplace(n,e,t,i,r)}emplace(e,t,i,r,n){const o=6*e;return this.uint32[3*e+0]=t,this.uint16[o+2]=i,this.uint16[o+3]=r,this.uint16[o+4]=n,e}}Wo.prototype.bytesPerElement=12,sn(Wo,"StructArrayLayout1ul3ui12");class Ho extends Eo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,t){const i=this.length;return this.resize(i+1),this.emplace(i,e,t)}emplace(e,t,i){const r=2*e;return this.uint16[r+0]=t,this.uint16[r+1]=i,e}}Ho.prototype.bytesPerElement=4,sn(Ho,"StructArrayLayout2ui4");class Yo extends Eo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e){const t=this.length;return this.resize(t+1),this.emplace(t,e)}emplace(e,t){return this.uint16[1*e+0]=t,e}}Yo.prototype.bytesPerElement=2,sn(Yo,"StructArrayLayout1ui2");class Ko extends Eo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,t){const i=this.length;return this.resize(i+1),this.emplace(i,e,t)}emplace(e,t,i){const r=2*e;return this.float32[r+0]=t,this.float32[r+1]=i,e}}Ko.prototype.bytesPerElement=8,sn(Ko,"StructArrayLayout2f8");class Jo extends Eo{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,t,i,r,n,o,s){const a=this.length;return this.resize(a+1),this.emplace(a,e,t,i,r,n,o,s)}emplace(e,t,i,r,n,o,s,a){const l=8*e,c=4*e;return this.int16[l+0]=t,this.int16[l+1]=i,this.int16[l+2]=r,this.int16[l+3]=n,this.int16[l+4]=o,this.int16[l+5]=s,this.float32[c+3]=a,e}}Jo.prototype.bytesPerElement=16,sn(Jo,"StructArrayLayout6i1f16");class Qo extends To{get a_pos_30(){return this._structArray.int16[this._pos2+0]}get a_pos_31(){return this._structArray.int16[this._pos2+1]}get a_pos_32(){return this._structArray.int16[this._pos2+2]}get a_pos_normal_30(){return this._structArray.int16[this._pos2+3]}get a_pos_normal_31(){return this._structArray.int16[this._pos2+4]}get a_pos_normal_32(){return this._structArray.int16[this._pos2+5]}}Qo.prototype.size=12;class es extends Lo{get(e){return new Qo(this,e)}}sn(es,"FillExtrusionExtArray");class ts extends To{get projectedAnchorX(){return this._structArray.int16[this._pos2+0]}get projectedAnchorY(){return this._structArray.int16[this._pos2+1]}get projectedAnchorZ(){return this._structArray.int16[this._pos2+2]}get tileAnchorX(){return this._structArray.int16[this._pos2+3]}get tileAnchorY(){return this._structArray.int16[this._pos2+4]}get x1(){return this._structArray.float32[this._pos4+3]}get y1(){return this._structArray.float32[this._pos4+4]}get x2(){return this._structArray.float32[this._pos4+5]}get y2(){return this._structArray.float32[this._pos4+6]}get padding(){return this._structArray.int16[this._pos2+14]}get featureIndex(){return this._structArray.uint32[this._pos4+8]}get sourceLayerIndex(){return this._structArray.uint16[this._pos2+18]}get bucketIndex(){return this._structArray.uint16[this._pos2+19]}}ts.prototype.size=40;class is extends Oo{get(e){return new ts(this,e)}}sn(is,"CollisionBoxArray");class rs extends To{get projectedAnchorX(){return this._structArray.int16[this._pos2+0]}get projectedAnchorY(){return this._structArray.int16[this._pos2+1]}get projectedAnchorZ(){return this._structArray.int16[this._pos2+2]}get tileAnchorX(){return this._structArray.float32[this._pos4+2]}get tileAnchorY(){return this._structArray.float32[this._pos4+3]}get glyphStartIndex(){return this._structArray.uint16[this._pos2+8]}get numGlyphs(){return this._structArray.uint16[this._pos2+9]}get vertexStartIndex(){return this._structArray.uint32[this._pos4+5]}get lineStartIndex(){return this._structArray.uint32[this._pos4+6]}get lineLength(){return this._structArray.uint32[this._pos4+7]}get segment(){return this._structArray.uint16[this._pos2+16]}get lowerSize(){return this._structArray.uint16[this._pos2+17]}get upperSize(){return this._structArray.uint16[this._pos2+18]}get lineOffsetX(){return this._structArray.float32[this._pos4+10]}get lineOffsetY(){return this._structArray.float32[this._pos4+11]}get writingMode(){return this._structArray.uint8[this._pos1+48]}get placedOrientation(){return this._structArray.uint8[this._pos1+49]}set placedOrientation(e){this._structArray.uint8[this._pos1+49]=e}get hidden(){return this._structArray.uint8[this._pos1+50]}set hidden(e){this._structArray.uint8[this._pos1+50]=e}get crossTileID(){return this._structArray.uint32[this._pos4+13]}set crossTileID(e){this._structArray.uint32[this._pos4+13]=e}get associatedIconIndex(){return this._structArray.int16[this._pos2+28]}get flipState(){return this._structArray.uint8[this._pos1+58]}set flipState(e){this._structArray.uint8[this._pos1+58]=e}}rs.prototype.size=60;class ns extends Go{get(e){return new rs(this,e)}}sn(ns,"PlacedSymbolArray");class os extends To{get projectedAnchorX(){return this._structArray.int16[this._pos2+0]}get projectedAnchorY(){return this._structArray.int16[this._pos2+1]}get projectedAnchorZ(){return this._structArray.int16[this._pos2+2]}get tileAnchorX(){return this._structArray.float32[this._pos4+2]}get tileAnchorY(){return this._structArray.float32[this._pos4+3]}get rightJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+8]}get centerJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+9]}get leftJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+10]}get verticalPlacedTextSymbolIndex(){return this._structArray.int16[this._pos2+11]}get placedIconSymbolIndex(){return this._structArray.int16[this._pos2+12]}get verticalPlacedIconSymbolIndex(){return this._structArray.int16[this._pos2+13]}get key(){return this._structArray.uint16[this._pos2+14]}get textBoxStartIndex(){return this._structArray.uint16[this._pos2+15]}get textBoxEndIndex(){return this._structArray.uint16[this._pos2+16]}get verticalTextBoxStartIndex(){return this._structArray.uint16[this._pos2+17]}get verticalTextBoxEndIndex(){return this._structArray.uint16[this._pos2+18]}get iconBoxStartIndex(){return this._structArray.uint16[this._pos2+19]}get iconBoxEndIndex(){return this._structArray.uint16[this._pos2+20]}get verticalIconBoxStartIndex(){return this._structArray.uint16[this._pos2+21]}get verticalIconBoxEndIndex(){return this._structArray.uint16[this._pos2+22]}get featureIndex(){return this._structArray.uint16[this._pos2+23]}get numHorizontalGlyphVertices(){return this._structArray.uint16[this._pos2+24]}get numVerticalGlyphVertices(){return this._structArray.uint16[this._pos2+25]}get numIconVertices(){return this._structArray.uint16[this._pos2+26]}get numVerticalIconVertices(){return this._structArray.uint16[this._pos2+27]}get useRuntimeCollisionCircles(){return this._structArray.uint16[this._pos2+28]}get crossTileID(){return this._structArray.uint32[this._pos4+15]}set crossTileID(e){this._structArray.uint32[this._pos4+15]=e}get textOffset0(){return this._structArray.float32[this._pos4+16]}get textOffset1(){return this._structArray.float32[this._pos4+17]}get collisionCircleDiameter(){return this._structArray.float32[this._pos4+18]}}os.prototype.size=76;class ss extends Zo{get(e){return new os(this,e)}}sn(ss,"SymbolInstanceArray");class as extends $o{getoffsetX(e){return this.float32[1*e+0]}}sn(as,"GlyphOffsetArray");class ls extends Ao{getx(e){return this.int16[3*e+0]}gety(e){return this.int16[3*e+1]}gettileUnitDistanceFromAnchor(e){return this.int16[3*e+2]}}sn(ls,"SymbolLineVertexArray");class cs extends To{get featureIndex(){return this._structArray.uint32[this._pos4+0]}get sourceLayerIndex(){return this._structArray.uint16[this._pos2+2]}get bucketIndex(){return this._structArray.uint16[this._pos2+3]}get layoutVertexArrayOffset(){return this._structArray.uint16[this._pos2+4]}}cs.prototype.size=12;class hs extends Wo{get(e){return new cs(this,e)}}sn(hs,"FeatureIndexArray");class us extends To{get a_centroid_pos0(){return this._structArray.uint16[this._pos2+0]}get a_centroid_pos1(){return this._structArray.uint16[this._pos2+1]}}us.prototype.size=4;class ds extends Ho{get(e){return new us(this,e)}}sn(ds,"FillExtrusionCentroidArray");class ps extends To{get a_pos_30(){return this._structArray.int16[this._pos2+0]}get a_pos_31(){return this._structArray.int16[this._pos2+1]}get a_pos_32(){return this._structArray.int16[this._pos2+2]}get a_pos_normal_30(){return this._structArray.int16[this._pos2+3]}get a_pos_normal_31(){return this._structArray.int16[this._pos2+4]}get a_pos_normal_32(){return this._structArray.int16[this._pos2+5]}get a_scale(){return this._structArray.float32[this._pos4+3]}}ps.prototype.size=16;class fs extends Jo{get(e){return new ps(this,e)}}sn(fs,"CircleGlobeExtArray");const ms=So([{name:"a_pattern_to",components:4,type:"Uint16"},{name:"a_pattern_from",components:4,type:"Uint16"},{name:"a_pixel_ratio_to",components:1,type:"Uint16"},{name:"a_pixel_ratio_from",components:1,type:"Uint16"}]),_s=So([{name:"a_dash_to",components:4,type:"Uint16"},{name:"a_dash_from",components:4,type:"Uint16"}]);var gs=lt((function(e){e.exports=function(e,t){var i,r,n,o,s,a,l,c;for(r=e.length-(i=3&e.length),n=t,s=3432918353,a=461845907,c=0;c<r;)l=255&e.charCodeAt(c)|(255&e.charCodeAt(++c))<<8|(255&e.charCodeAt(++c))<<16|(255&e.charCodeAt(++c))<<24,++c,n=27492+(65535&(o=5*(65535&(n=(n^=l=(65535&(l=(l=(65535&l)*s+(((l>>>16)*s&65535)<<16)&4294967295)<<15|l>>>17))*a+(((l>>>16)*a&65535)<<16)&4294967295)<<13|n>>>19))+((5*(n>>>16)&65535)<<16)&4294967295))+((58964+(o>>>16)&65535)<<16);switch(l=0,i){case 3:l^=(255&e.charCodeAt(c+2))<<16;case 2:l^=(255&e.charCodeAt(c+1))<<8;case 1:n^=l=(65535&(l=(l=(65535&(l^=255&e.charCodeAt(c)))*s+(((l>>>16)*s&65535)<<16)&4294967295)<<15|l>>>17))*a+(((l>>>16)*a&65535)<<16)&4294967295}return n^=e.length,n=2246822507*(65535&(n^=n>>>16))+((2246822507*(n>>>16)&65535)<<16)&4294967295,n=3266489909*(65535&(n^=n>>>13))+((3266489909*(n>>>16)&65535)<<16)&4294967295,(n^=n>>>16)>>>0}})),ys=lt((function(e){e.exports=function(e,t){for(var i,r=e.length,n=t^r,o=0;r>=4;)i=1540483477*(65535&(i=255&e.charCodeAt(o)|(255&e.charCodeAt(++o))<<8|(255&e.charCodeAt(++o))<<16|(255&e.charCodeAt(++o))<<24))+((1540483477*(i>>>16)&65535)<<16),n=1540483477*(65535&n)+((1540483477*(n>>>16)&65535)<<16)^(i=1540483477*(65535&(i^=i>>>24))+((1540483477*(i>>>16)&65535)<<16)),r-=4,++o;switch(r){case 3:n^=(255&e.charCodeAt(o+2))<<16;case 2:n^=(255&e.charCodeAt(o+1))<<8;case 1:n=1540483477*(65535&(n^=255&e.charCodeAt(o)))+((1540483477*(n>>>16)&65535)<<16)}return n=1540483477*(65535&(n^=n>>>13))+((1540483477*(n>>>16)&65535)<<16),(n^=n>>>15)>>>0}})),xs=gs,vs=ys;xs.murmur3=gs,xs.murmur2=vs;class bs{constructor(){this.ids=[],this.positions=[],this.indexed=!1}add(e,t,i,r){this.ids.push(ws(e)),this.positions.push(t,i,r)}getPositions(e){const t=ws(e);let i=0,r=this.ids.length-1;for(;i<r;){const e=i+r>>1;this.ids[e]>=t?r=e:i=e+1}const n=[];for(;this.ids[i]===t;)n.push({index:this.positions[3*i],start:this.positions[3*i+1],end:this.positions[3*i+2]}),i++;return n}static serialize(e,t){const i=new Float64Array(e.ids),r=new Uint32Array(e.positions);return Ts(i,r,0,i.length-1),t&&t.push(i.buffer,r.buffer),{ids:i,positions:r}}static deserialize(e){const t=new bs;return t.ids=e.ids,t.positions=e.positions,t.indexed=!0,t}}function ws(e){const t=+e;return!isNaN(t)&&Number.MIN_SAFE_INTEGER<=t&&t<=Number.MAX_SAFE_INTEGER?t:xs(String(e))}function Ts(e,t,i,r){for(;i<r;){const n=e[i+r>>1];let o=i-1,s=r+1;for(;;){do{o++}while(e[o]<n);do{s--}while(e[s]>n);if(o>=s)break;Es(e,o,s),Es(t,3*o,3*s),Es(t,3*o+1,3*s+1),Es(t,3*o+2,3*s+2)}s-i<r-s?(Ts(e,t,i,s),i=s+1):(Ts(e,t,s+1,r),r=s)}}function Es(e,t,i){const r=e[t];e[t]=e[i],e[i]=r}sn(bs,"FeaturePositionMap");class Ss{constructor(e,t){this.gl=e.gl,this.location=t}}class Is extends Ss{constructor(e,t){super(e,t),this.current=0}set(e){this.current!==e&&(this.current=e,this.gl.uniform1f(this.location,e))}}class Ms extends Ss{constructor(e,t){super(e,t),this.current=[0,0,0,0]}set(e){e[0]===this.current[0]&&e[1]===this.current[1]&&e[2]===this.current[2]&&e[3]===this.current[3]||(this.current=e,this.gl.uniform4f(this.location,e[0],e[1],e[2],e[3]))}}class As extends Ss{constructor(e,t){super(e,t),this.current=ht.transparent}set(e){e.r===this.current.r&&e.g===this.current.g&&e.b===this.current.b&&e.a===this.current.a||(this.current=e,this.gl.uniform4f(this.location,e.r,e.g,e.b,e.a))}}const Cs=new Float32Array(16),zs=new Float32Array(9),ks=new Float32Array(4);function Ds(e){return[bo(255*e.r,255*e.g),bo(255*e.b,255*e.a)]}class Ps{constructor(e,t,i){this.value=e,this.uniformNames=t.map((e=>`u_${e}`)),this.type=i}setUniform(e,t,i){e.set(i.constantOr(this.value))}getBinding(e,t,i){return"color"===this.type?new As(e,t):new Is(e,t)}}class Ls{constructor(e,t){this.uniformNames=t.map((e=>`u_${e}`)),this.patternFrom=null,this.patternTo=null,this.pixelRatioFrom=1,this.pixelRatioTo=1}setConstantPatternPositions(e,t){this.pixelRatioFrom=t.pixelRatio||1,this.pixelRatioTo=e.pixelRatio||1,this.patternFrom=t.tl.concat(t.br),this.patternTo=e.tl.concat(e.br)}setUniform(e,t,i,r){const n="u_pattern_to"===r||"u_dash_to"===r?this.patternTo:"u_pattern_from"===r||"u_dash_from"===r?this.patternFrom:"u_pixel_ratio_to"===r?this.pixelRatioTo:"u_pixel_ratio_from"===r?this.pixelRatioFrom:null;n&&e.set(n)}getBinding(e,t,i){return"u_pattern_from"===i||"u_pattern_to"===i||"u_dash_from"===i||"u_dash_to"===i?new Ms(e,t):new Is(e,t)}}class Bs{constructor(e,t,i,r){this.expression=e,this.type=i,this.maxValue=0,this.paintVertexAttributes=t.map((e=>({name:`a_${e}`,type:"Float32",components:"color"===i?2:1,offset:0}))),this.paintVertexArray=new r}populatePaintArray(e,t,i,r,n,o){const s=this.paintVertexArray.length,a=this.expression.evaluate(new oo(0),t,{},n,r,o);this.paintVertexArray.resize(e),this._setPaintValue(s,e,a)}updatePaintArray(e,t,i,r,n){const o=this.expression.evaluate({zoom:0},i,r,void 0,n);this._setPaintValue(e,t,o)}_setPaintValue(e,t,i){if("color"===this.type){const r=Ds(i);for(let i=e;i<t;i++)this.paintVertexArray.emplace(i,r[0],r[1])}else{for(let r=e;r<t;r++)this.paintVertexArray.emplace(r,i);this.maxValue=Math.max(this.maxValue,Math.abs(i))}}upload(e){this.paintVertexArray&&this.paintVertexArray.arrayBuffer&&(this.paintVertexBuffer&&this.paintVertexBuffer.buffer?this.paintVertexBuffer.updateData(this.paintVertexArray):this.paintVertexBuffer=e.createVertexBuffer(this.paintVertexArray,this.paintVertexAttributes,this.expression.isStateDependent))}destroy(){this.paintVertexBuffer&&this.paintVertexBuffer.destroy()}}class Rs{constructor(e,t,i,r,n,o){this.expression=e,this.uniformNames=t.map((e=>`u_${e}_t`)),this.type=i,this.useIntegerZoom=r,this.zoom=n,this.maxValue=0,this.paintVertexAttributes=t.map((e=>({name:`a_${e}`,type:"Float32",components:"color"===i?4:2,offset:0}))),this.paintVertexArray=new o}populatePaintArray(e,t,i,r,n,o){const s=this.expression.evaluate(new oo(this.zoom),t,{},n,r,o),a=this.expression.evaluate(new oo(this.zoom+1),t,{},n,r,o),l=this.paintVertexArray.length;this.paintVertexArray.resize(e),this._setPaintValue(l,e,s,a)}updatePaintArray(e,t,i,r,n){const o=this.expression.evaluate({zoom:this.zoom},i,r,void 0,n),s=this.expression.evaluate({zoom:this.zoom+1},i,r,void 0,n);this._setPaintValue(e,t,o,s)}_setPaintValue(e,t,i,r){if("color"===this.type){const n=Ds(i),o=Ds(r);for(let i=e;i<t;i++)this.paintVertexArray.emplace(i,n[0],n[1],o[0],o[1])}else{for(let n=e;n<t;n++)this.paintVertexArray.emplace(n,i,r);this.maxValue=Math.max(this.maxValue,Math.abs(i),Math.abs(r))}}upload(e){this.paintVertexArray&&this.paintVertexArray.arrayBuffer&&(this.paintVertexBuffer&&this.paintVertexBuffer.buffer?this.paintVertexBuffer.updateData(this.paintVertexArray):this.paintVertexBuffer=e.createVertexBuffer(this.paintVertexArray,this.paintVertexAttributes,this.expression.isStateDependent))}destroy(){this.paintVertexBuffer&&this.paintVertexBuffer.destroy()}setUniform(e,t){const i=this.useIntegerZoom?Math.floor(t.zoom):t.zoom,r=m(this.expression.interpolationFactor(i,this.zoom,this.zoom+1),0,1);e.set(r)}getBinding(e,t,i){return new Is(e,t)}}class Fs{constructor(e,t,i,r,n,o,s){this.expression=e,this.type=i,this.useIntegerZoom=r,this.zoom=n,this.layerId=s,this.paintVertexAttributes=("array"===i?_s:ms).members;for(let e=0;e<t.length;++e);this.zoomInPaintVertexArray=new o,this.zoomOutPaintVertexArray=new o}populatePaintArray(e,t,i){const r=this.zoomInPaintVertexArray.length;this.zoomInPaintVertexArray.resize(e),this.zoomOutPaintVertexArray.resize(e),this._setPaintValues(r,e,t.patterns&&t.patterns[this.layerId],i)}updatePaintArray(e,t,i,r,n,o){this._setPaintValues(e,t,i.patterns&&i.patterns[this.layerId],o)}_setPaintValues(e,t,i,r){if(!r||!i)return;const{min:n,mid:o,max:s}=i,a=r[n],l=r[o],c=r[s];if(a&&l&&c)for(let i=e;i<t;i++)this._setPaintValue(this.zoomInPaintVertexArray,i,l,a),this._setPaintValue(this.zoomOutPaintVertexArray,i,l,c)}_setPaintValue(e,t,i,r){e.emplace(t,i.tl[0],i.tl[1],i.br[0],i.br[1],r.tl[0],r.tl[1],r.br[0],r.br[1],i.pixelRatio,r.pixelRatio)}upload(e){this.zoomInPaintVertexArray&&this.zoomInPaintVertexArray.arrayBuffer&&this.zoomOutPaintVertexArray&&this.zoomOutPaintVertexArray.arrayBuffer&&(this.zoomInPaintVertexBuffer=e.createVertexBuffer(this.zoomInPaintVertexArray,this.paintVertexAttributes,this.expression.isStateDependent),this.zoomOutPaintVertexBuffer=e.createVertexBuffer(this.zoomOutPaintVertexArray,this.paintVertexAttributes,this.expression.isStateDependent))}destroy(){this.zoomOutPaintVertexBuffer&&this.zoomOutPaintVertexBuffer.destroy(),this.zoomInPaintVertexBuffer&&this.zoomInPaintVertexBuffer.destroy()}}class Os{constructor(e,t,i=(()=>!0)){this.binders={},this._buffers=[];const r=[];for(const n in e.paint._values){if(!i(n))continue;const o=e.paint.get(n);if(!(o instanceof po&&Hi(o.property.specification)))continue;const s=js(n,e.type),a=o.value,l=o.property.specification.type,c=o.property.useIntegerZoom,h=o.property.specification["property-type"],u="cross-faded"===h||"cross-faded-data-driven"===h,d="line-dasharray"===String(n)&&"constant"!==e.layout.get("line-cap").value.kind;if("constant"!==a.kind||d)if("source"===a.kind||d||u){const i=Zs(n,l,"source");this.binders[n]=u?new Fs(a,s,l,c,t,i,e.id):new Bs(a,s,l,i),r.push(`/a_${n}`)}else{const e=Zs(n,l,"composite");this.binders[n]=new Rs(a,s,l,c,t,e),r.push(`/z_${n}`)}else this.binders[n]=u?new Ls(a.value,s):new Ps(a.value,s,l),r.push(`/u_${n}`)}this.cacheKey=r.sort().join("")}getMaxValue(e){const t=this.binders[e];return t instanceof Bs||t instanceof Rs?t.maxValue:0}populatePaintArrays(e,t,i,r,n,o){for(const s in this.binders){const a=this.binders[s];(a instanceof Bs||a instanceof Rs||a instanceof Fs)&&a.populatePaintArray(e,t,i,r,n,o)}}setConstantPatternPositions(e,t){for(const i in this.binders){const r=this.binders[i];r instanceof Ls&&r.setConstantPatternPositions(e,t)}}updatePaintArrays(e,t,i,r,n,o){let s=!1;for(const a in e){const l=t.getPositions(a);for(const t of l){const l=i.feature(t.index);for(const i in this.binders){const c=this.binders[i];if((c instanceof Bs||c instanceof Rs||c instanceof Fs)&&!0===c.expression.isStateDependent){const h=r.paint.get(i);c.expression=h.value,c.updatePaintArray(t.start,t.end,l,e[a],n,o),s=!0}}}}return s}defines(){const e=[];for(const t in this.binders){const i=this.binders[t];(i instanceof Ps||i instanceof Ls)&&e.push(...i.uniformNames.map((e=>`#define HAS_UNIFORM_${e}`)))}return e}getBinderAttributes(){const e=[];for(const t in this.binders){const i=this.binders[t];if(i instanceof Bs||i instanceof Rs||i instanceof Fs)for(let t=0;t<i.paintVertexAttributes.length;t++)e.push(i.paintVertexAttributes[t].name)}return e}getBinderUniforms(){const e=[];for(const t in this.binders){const i=this.binders[t];if(i instanceof Ps||i instanceof Ls||i instanceof Rs)for(const t of i.uniformNames)e.push(t)}return e}getPaintVertexBuffers(){return this._buffers}getUniforms(e,t){const i=[];for(const r in this.binders){const n=this.binders[r];if(n instanceof Ps||n instanceof Ls||n instanceof Rs)for(const o of n.uniformNames)if(t[o]){const s=n.getBinding(e,t[o],o);i.push({name:o,property:r,binding:s})}}return i}setUniforms(e,t,i,r){for(const{name:e,property:n,binding:o}of t)this.binders[n].setUniform(o,r,i.get(n),e)}updatePaintBuffers(e){this._buffers=[];for(const t in this.binders){const i=this.binders[t];if(e&&i instanceof Fs){const t=2===e.fromScale?i.zoomInPaintVertexBuffer:i.zoomOutPaintVertexBuffer;t&&this._buffers.push(t)}else(i instanceof Bs||i instanceof Rs)&&i.paintVertexBuffer&&this._buffers.push(i.paintVertexBuffer)}}upload(e){for(const t in this.binders){const i=this.binders[t];(i instanceof Bs||i instanceof Rs||i instanceof Fs)&&i.upload(e)}this.updatePaintBuffers()}destroy(){for(const e in this.binders){const t=this.binders[e];(t instanceof Bs||t instanceof Rs||t instanceof Fs)&&t.destroy()}}}class Us{constructor(e,t,i=(()=>!0)){this.programConfigurations={};for(const r of e)this.programConfigurations[r.id]=new Os(r,t,i);this.needsUpload=!1,this._featureMap=new bs,this._bufferOffset=0}populatePaintArrays(e,t,i,r,n,o,s){for(const i in this.programConfigurations)this.programConfigurations[i].populatePaintArrays(e,t,r,n,o,s);void 0!==t.id&&this._featureMap.add(t.id,i,this._bufferOffset,e),this._bufferOffset=e,this.needsUpload=!0}updatePaintArrays(e,t,i,r,n){for(const o of i)this.needsUpload=this.programConfigurations[o.id].updatePaintArrays(e,this._featureMap,t,o,r,n)||this.needsUpload}get(e){return this.programConfigurations[e]}upload(e){if(this.needsUpload){for(const t in this.programConfigurations)this.programConfigurations[t].upload(e);this.needsUpload=!1}}destroy(){for(const e in this.programConfigurations)this.programConfigurations[e].destroy()}}const Vs={"text-opacity":["opacity"],"icon-opacity":["opacity"],"text-color":["fill_color"],"icon-color":["fill_color"],"text-halo-color":["halo_color"],"icon-halo-color":["halo_color"],"text-halo-blur":["halo_blur"],"icon-halo-blur":["halo_blur"],"text-halo-width":["halo_width"],"icon-halo-width":["halo_width"],"line-gap-width":["gapwidth"],"line-pattern":["pattern_to","pattern_from","pixel_ratio_to","pixel_ratio_from"],"fill-pattern":["pattern_to","pattern_from","pixel_ratio_to","pixel_ratio_from"],"fill-extrusion-pattern":["pattern_to","pattern_from","pixel_ratio_to","pixel_ratio_from"],"line-dasharray":["dash_to","dash_from"]};function js(e,t){return Vs[e]||[e.replace(`${t}-`,"").replace(/-/g,"_")]}const Ns={"line-pattern":{source:Do,composite:Do},"fill-pattern":{source:Do,composite:Do},"fill-extrusion-pattern":{source:Do,composite:Do},"line-dasharray":{source:Po,composite:Po}},Gs={color:{source:Ko,composite:ko},number:{source:$o,composite:Ko}};function Zs(e,t,i){const r=Ns[e];return r&&r[i]||Gs[t][i]}sn(Ps,"ConstantBinder"),sn(Ls,"CrossFadedConstantBinder"),sn(Bs,"SourceExpressionBinder"),sn(Fs,"CrossFadedCompositeBinder"),sn(Rs,"CompositeExpressionBinder"),sn(Os,"ProgramConfiguration",{omit:["_buffers"]}),sn(Us,"ProgramConfigurationSet");const $s="-transition";class qs extends Ue{constructor(e,t){if(super(),this.id=e.id,this.type=e.type,this._featureFilter={filter:()=>!0,needGeometry:!1,needFeature:!1},this._filterCompiled=!1,"custom"!==e.type&&(this.metadata=(e=e).metadata,this.minzoom=e.minzoom,this.maxzoom=e.maxzoom,"background"!==e.type&&"sky"!==e.type&&(this.source=e.source,this.sourceLayer=e["source-layer"],this.filter=e.filter),t.layout&&(this._unevaluatedLayout=new uo(t.layout)),t.paint)){this._transitionablePaint=new lo(t.paint);for(const t in e.paint)this.setPaintProperty(t,e.paint[t],{validate:!1});for(const t in e.layout)this.setLayoutProperty(t,e.layout[t],{validate:!1});this._transitioningPaint=this._transitionablePaint.untransitioned(),this.paint=new fo(t.paint)}}getCrossfadeParameters(){return this._crossfadeParameters}getLayoutProperty(e){return"visibility"===e?this.visibility:this._unevaluatedLayout.getValue(e)}setLayoutProperty(e,t,i={}){null!=t&&this._validate(Qr,`layers.${this.id}.layout.${e}`,e,t,i)||("visibility"!==e?this._unevaluatedLayout.setValue(e,t):this.visibility=t)}getPaintProperty(e){return M(e,$s)?this._transitionablePaint.getTransition(e.slice(0,-$s.length)):this._transitionablePaint.getValue(e)}setPaintProperty(e,t,i={}){if(null!=t&&this._validate(Jr,`layers.${this.id}.paint.${e}`,e,t,i))return!1;if(M(e,$s))return this._transitionablePaint.setTransition(e.slice(0,-$s.length),t||void 0),!1;{const i=this._transitionablePaint._values[e],r="cross-faded-data-driven"===i.property.specification["property-type"],n=i.value.isDataDriven(),o=i.value;this._transitionablePaint.setValue(e,t),this._handleSpecialPaintPropertyUpdate(e);const s=this._transitionablePaint._values[e].value;return s.isDataDriven()||n||r||this._handleOverridablePaintPropertyUpdate(e,o,s)}}_handleSpecialPaintPropertyUpdate(e){}getProgramIds(){return null}getProgramConfiguration(e){return null}_handleOverridablePaintPropertyUpdate(e,t,i){return!1}isHidden(e){return!!(this.minzoom&&e<this.minzoom)||!!(this.maxzoom&&e>=this.maxzoom)||"none"===this.visibility}updateTransitions(e){this._transitioningPaint=this._transitionablePaint.transitioned(e,this._transitioningPaint)}hasTransition(){return this._transitioningPaint.hasTransition()}recalculate(e,t){e.getCrossfadeParameters&&(this._crossfadeParameters=e.getCrossfadeParameters()),this._unevaluatedLayout&&(this.layout=this._unevaluatedLayout.possiblyEvaluate(e,void 0,t)),this.paint=this._transitioningPaint.possiblyEvaluate(e,void 0,t)}serialize(){const e={id:this.id,type:this.type,source:this.source,"source-layer":this.sourceLayer,metadata:this.metadata,minzoom:this.minzoom,maxzoom:this.maxzoom,filter:this.filter,layout:this._unevaluatedLayout&&this._unevaluatedLayout.serialize(),paint:this._transitionablePaint&&this._transitionablePaint.serialize()};return this.visibility&&(e.layout=e.layout||{},e.layout.visibility=this.visibility),C(e,((e,t)=>!(void 0===e||"layout"===t&&!Object.keys(e).length||"paint"===t&&!Object.keys(e).length)))}_validate(e,t,i,r,n={}){return(!n||!1!==n.validate)&&tn(this,e.call(Kr,{key:t,layerType:this.type,objectKey:i,value:r,styleSpec:Ve,style:{glyphs:!0,sprite:!0}}))}is3D(){return!1}isSky(){return!1}isTileClipped(){return!1}hasOffscreenPass(){return!1}resize(){}isStateDependent(){for(const e in this.paint._values){const t=this.paint.get(e);if(t instanceof po&&Hi(t.property.specification)&&("source"===t.value.kind||"composite"===t.value.kind)&&t.value.isStateDependent)return!0}return!1}compileFilter(){this._filterCompiled||(this._featureFilter=Er(this.filter),this._filterCompiled=!0)}invalidateCompiledFilter(){this._filterCompiled=!1}dynamicFilter(){return this._featureFilter.dynamicFilter}dynamicFilterNeedsFeature(){return this._featureFilter.needFeature}}const Xs=So([{name:"a_pos",components:2,type:"Int16"}],4),Ws=So([{name:"a_pos_3",components:3,type:"Int16"},{name:"a_pos_normal_3",components:3,type:"Int16"},{name:"a_scale",components:1,type:"Float32"}]);class Hs{constructor(e=[]){this.segments=e}prepareSegment(e,t,i,r){let n=this.segments[this.segments.length-1];return e>Hs.MAX_VERTEX_ARRAY_LENGTH&&D(`Max vertices per segment is ${Hs.MAX_VERTEX_ARRAY_LENGTH}: bucket requested ${e}`),(!n||n.vertexLength+e>Hs.MAX_VERTEX_ARRAY_LENGTH||n.sortKey!==r)&&(n={vertexOffset:t.length,primitiveOffset:i.length,vertexLength:0,primitiveLength:0},void 0!==r&&(n.sortKey=r),this.segments.push(n)),n}get(){return this.segments}destroy(){for(const e of this.segments)for(const t in e.vaos)e.vaos[t].destroy()}static simpleSegment(e,t,i,r){return new Hs([{vertexOffset:e,primitiveOffset:t,vertexLength:i,primitiveLength:r,vaos:{},sortKey:0}])}}Hs.MAX_VERTEX_ARRAY_LENGTH=Math.pow(2,16)-1,sn(Hs,"SegmentVector");var Ys=8192;class Ks{constructor(e,t){e&&(t?this.setSouthWest(e).setNorthEast(t):4===e.length?this.setSouthWest([e[0],e[1]]).setNorthEast([e[2],e[3]]):this.setSouthWest(e[0]).setNorthEast(e[1]))}setNorthEast(e){return this._ne=e instanceof Qs?new Qs(e.lng,e.lat):Qs.convert(e),this}setSouthWest(e){return this._sw=e instanceof Qs?new Qs(e.lng,e.lat):Qs.convert(e),this}extend(e){const t=this._sw,i=this._ne;let r,n;if(e instanceof Qs)r=e,n=e;else{if(!(e instanceof Ks))return Array.isArray(e)?4===e.length||e.every(Array.isArray)?this.extend(Ks.convert(e)):this.extend(Qs.convert(e)):this;if(r=e._sw,n=e._ne,!r||!n)return this}return t||i?(t.lng=Math.min(r.lng,t.lng),t.lat=Math.min(r.lat,t.lat),i.lng=Math.max(n.lng,i.lng),i.lat=Math.max(n.lat,i.lat)):(this._sw=new Qs(r.lng,r.lat),this._ne=new Qs(n.lng,n.lat)),this}getCenter(){return new Qs((this._sw.lng+this._ne.lng)/2,(this._sw.lat+this._ne.lat)/2)}getSouthWest(){return this._sw}getNorthEast(){return this._ne}getNorthWest(){return new Qs(this.getWest(),this.getNorth())}getSouthEast(){return new Qs(this.getEast(),this.getSouth())}getWest(){return this._sw.lng}getSouth(){return this._sw.lat}getEast(){return this._ne.lng}getNorth(){return this._ne.lat}toArray(){return[this._sw.toArray(),this._ne.toArray()]}toString(){return`LngLatBounds(${this._sw.toString()}, ${this._ne.toString()})`}isEmpty(){return!(this._sw&&this._ne)}contains(e){const{lng:t,lat:i}=Qs.convert(e);let r=this._sw.lng<=t&&t<=this._ne.lng;return this._sw.lng>this._ne.lng&&(r=this._sw.lng>=t&&t>=this._ne.lng),this._sw.lat<=i&&i<=this._ne.lat&&r}static convert(e){return!e||e instanceof Ks?e:new Ks(e)}}const Js=6371008.8;class Qs{constructor(e,t){if(isNaN(e)||isNaN(t))throw new Error(`Invalid LngLat object: (${e}, ${t})`);if(this.lng=+e,this.lat=+t,this.lat>90||this.lat<-90)throw new Error("Invalid LngLat latitude value: must be between -90 and 90")}wrap(){return new Qs(g(this.lng,-180,180),this.lat)}toArray(){return[this.lng,this.lat]}toString(){return`LngLat(${this.lng}, ${this.lat})`}distanceTo(e){const t=Math.PI/180,i=this.lat*t,r=e.lat*t,n=Math.sin(i)*Math.sin(r)+Math.cos(i)*Math.cos(r)*Math.cos((e.lng-this.lng)*t);return Js*Math.acos(Math.min(n,1))}toBounds(e=0){const t=360*e/40075017,i=t/Math.cos(Math.PI/180*this.lat);return new Ks(new Qs(this.lng-i,this.lat-t),new Qs(this.lng+i,this.lat+t))}static convert(e){if(e instanceof Qs)return e;if(Array.isArray(e)&&(2===e.length||3===e.length))return new Qs(Number(e[0]),Number(e[1]));if(!Array.isArray(e)&&"object"==typeof e&&null!==e)return new Qs(Number("lng"in e?e.lng:e.lon),Number(e.lat));throw new Error("`LngLatLike` argument must be specified as a LngLat instance, an object {lng: <lng>, lat: <lat>}, an object {lon: <lng>, lat: <lat>}, or an array of [<lng>, <lat>]")}}const ea=2*Math.PI*Js;function ta(e){return ea*Math.cos(e*Math.PI/180)}function ia(e){return(180+e)/360}function ra(e){return(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+e*Math.PI/360)))/360}function na(e,t){return e/ta(t)}function oa(e){return 360*e-180}function sa(e){return 360/Math.PI*Math.atan(Math.exp((180-360*e)*Math.PI/180))-90}function aa(e,t){return e*ta(sa(t))}const la=85.051129;class ca{constructor(e,t,i=0){this.x=+e,this.y=+t,this.z=+i}static fromLngLat(e,t=0){const i=Qs.convert(e);return new ca(ia(i.lng),ra(i.lat),na(t,i.lat))}toLngLat(){return new Qs(oa(this.x),sa(this.y))}toAltitude(){return aa(this.z,this.y)}meterInMercatorCoordinateUnits(){return 1/ea*(e=sa(this.y),1/Math.cos(e*Math.PI/180));var e}}function ha(e,t,i,r,o,s,a,l,c){const h=(t+r)/2,u=(i+o)/2,d=new n(h,u);l(d),function(e,t,i,r,n,o){const s=i-n,a=r-o;return Math.abs((r-t)*s-(i-e)*a)/Math.hypot(s,a)}(d.x,d.y,s.x,s.y,a.x,a.y)>=c?(ha(e,t,i,h,u,s,d,l,c),ha(e,h,u,r,o,d,a,l,c)):e.push(a)}function ua(e,t,i){let r=e[0],n=r.x,o=r.y;t(r);const s=[r];for(let a=1;a<e.length;a++){const l=e[a],{x:c,y:h}=l;t(l),ha(s,n,o,c,h,r,l,t,i),n=c,o=h,r=l}return s}const da=Math.pow(2,14)-1,pa=-da-1;function fa(e,t){const i=Math.round(e.x*t),r=Math.round(e.y*t);return e.x=m(i,pa,da),e.y=m(r,pa,da),(i<e.x||i>e.x+1||r<e.y||r>e.y+1)&&D("Geometry exceeds allowed extent, reduce your vector tile buffer size"),e}function ma(e,t,i){const r=e.loadGeometry(),n=e.extent,o=Ys/n;if(t&&i&&i.projection.isReprojectedInTileSpace){const o=1<<t.z,{scale:s,x:a,y:l,projection:c}=i,h=e=>{const i=oa((t.x+e.x/n)/o),r=sa((t.y+e.y/n)/o),h=c.project(i,r);e.x=(h.x*s-a)*n,e.y=(h.y*s-l)*n};for(let t=0;t<r.length;t++)if(1!==e.type)r[t]=ua(r[t],h,1);else{const e=[];for(const i of r[t])i.x<0||i.x>=n||i.y<0||i.y>=n||(h(i),e.push(i));r[t]=e}}for(const e of r)for(const t of e)fa(t,o);return r}function _a(e,t){return{type:e.type,id:e.id,properties:e.properties,geometry:t?ma(e):[]}}function ga(e,t,i,r,n){e.emplaceBack(2*t+(r+1)/2,2*i+(n+1)/2)}function ya(e,t,i,r){const n=16384;e.emplaceBack(t.x,t.y,t.z,i[0]*n,i[1]*n,i[2]*n,r)}class xa{constructor(e){this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.layerIds=this.layers.map((e=>e.id)),this.index=e.index,this.hasPattern=!1,this.projection=e.projection,this.layoutVertexArray=new Mo,this.indexArray=new No,this.segments=new Hs,this.programConfigurations=new Us(e.layers,e.zoom),this.stateDependentLayerIds=this.layers.filter((e=>e.isStateDependent())).map((e=>e.id))}populate(e,t,i,r){const n=this.layers[0],o=[];let s=null;"circle"===n.type&&(s=n.layout.get("circle-sort-key"));for(const{feature:t,id:n,index:a,sourceLayerIndex:l}of e){const e=this.layers[0]._featureFilter.needGeometry,c=_a(t,e);if(!this.layers[0]._featureFilter.filter(new oo(this.zoom),c,i))continue;const h=s?s.evaluate(c,{},i):void 0,u={id:n,properties:t.properties,type:t.type,sourceLayerIndex:l,index:a,geometry:e?c.geometry:ma(t,i,r),patterns:{},sortKey:h};o.push(u)}s&&o.sort(((e,t)=>e.sortKey-t.sortKey));let a=null;"globe"===r.projection.name&&(this.globeExtVertexArray=new fs,a=r.projection);for(const r of o){const{geometry:n,index:o,sourceLayerIndex:s}=r,l=e[o].feature;this.addFeature(r,n,o,t.availableImages,i,a),t.featureIndex.insert(l,n,o,s,this.index)}}update(e,t,i,r){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(e,t,this.stateDependentLayers,i,r)}isEmpty(){return 0===this.layoutVertexArray.length}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(e){this.uploaded||(this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,Xs.members),this.indexBuffer=e.createIndexBuffer(this.indexArray),this.globeExtVertexArray&&(this.globeExtVertexBuffer=e.createVertexBuffer(this.globeExtVertexArray,Ws.members))),this.programConfigurations.upload(e),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.globeExtVertexBuffer&&this.globeExtVertexBuffer.destroy())}addFeature(e,t,i,r,n,o){for(const i of t)for(const t of i){const i=t.x,r=t.y;if(i<0||i>=Ys||r<0||r>=Ys)continue;if(o){const e=o.projectTilePoint(i,r,n),t=o.upVector(n,i,r),s=sa((r/Ys+n.y)/(1<<n.z)),a=o.pixelsPerMeter(s,1)/na(1,s),l=this.globeExtVertexArray;ya(l,e,t,a),ya(l,e,t,a),ya(l,e,t,a),ya(l,e,t,a)}const s=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray,e.sortKey),a=s.vertexLength;ga(this.layoutVertexArray,i,r,-1,-1),ga(this.layoutVertexArray,i,r,1,-1),ga(this.layoutVertexArray,i,r,1,1),ga(this.layoutVertexArray,i,r,-1,1),this.indexArray.emplaceBack(a,a+1,a+2),this.indexArray.emplaceBack(a,a+3,a+2),s.vertexLength+=4,s.primitiveLength+=2}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,e,i,{},r,n)}}function va(e,t){for(let i=0;i<e.length;i++)if(Ca(t,e[i]))return!0;for(let i=0;i<t.length;i++)if(Ca(e,t[i]))return!0;return!!Ea(e,t)}function ba(e,t,i){return!!Ca(e,t)||!!Ia(t,e,i)}function wa(e,t){if(1===e.length)return Aa(t,e[0]);for(let i=0;i<t.length;i++){const r=t[i];for(let t=0;t<r.length;t++)if(Ca(e,r[t]))return!0}for(let i=0;i<e.length;i++)if(Aa(t,e[i]))return!0;for(let i=0;i<t.length;i++)if(Ea(e,t[i]))return!0;return!1}function Ta(e,t,i){if(e.length>1){if(Ea(e,t))return!0;for(let r=0;r<t.length;r++)if(Ia(t[r],e,i))return!0}for(let r=0;r<e.length;r++)if(Ia(e[r],t,i))return!0;return!1}function Ea(e,t){if(0===e.length||0===t.length)return!1;for(let i=0;i<e.length-1;i++){const r=e[i],n=e[i+1];for(let e=0;e<t.length-1;e++)if(Sa(r,n,t[e],t[e+1]))return!0}return!1}function Sa(e,t,i,r){return P(e,i,r)!==P(t,i,r)&&P(e,t,i)!==P(e,t,r)}function Ia(e,t,i){const r=i*i;if(1===t.length)return e.distSqr(t[0])<r;for(let i=1;i<t.length;i++)if(Ma(e,t[i-1],t[i])<r)return!0;return!1}function Ma(e,t,i){const r=t.distSqr(i);if(0===r)return e.distSqr(t);const n=((e.x-t.x)*(i.x-t.x)+(e.y-t.y)*(i.y-t.y))/r;return e.distSqr(n<0?t:n>1?i:i.sub(t)._mult(n)._add(t))}function Aa(e,t){let i,r,n,o=!1;for(let s=0;s<e.length;s++){i=e[s];for(let e=0,s=i.length-1;e<i.length;s=e++)r=i[e],n=i[s],r.y>t.y!=n.y>t.y&&t.x<(n.x-r.x)*(t.y-r.y)/(n.y-r.y)+r.x&&(o=!o)}return o}function Ca(e,t){let i=!1;for(let r=0,n=e.length-1;r<e.length;n=r++){const o=e[r],s=e[n];o.y>t.y!=s.y>t.y&&t.x<(s.x-o.x)*(t.y-o.y)/(s.y-o.y)+o.x&&(i=!i)}return i}function za(e,t,i,r,o){for(const n of e)if(t<=n.x&&i<=n.y&&r>=n.x&&o>=n.y)return!0;const s=[new n(t,i),new n(t,o),new n(r,o),new n(r,i)];if(e.length>2)for(const t of s)if(Ca(e,t))return!0;for(let t=0;t<e.length-1;t++)if(ka(e[t],e[t+1],s))return!0;return!1}function ka(e,t,i){const r=i[0],n=i[2];if(e.x<r.x&&t.x<r.x||e.x>n.x&&t.x>n.x||e.y<r.y&&t.y<r.y||e.y>n.y&&t.y>n.y)return!1;const o=P(e,t,i[0]);return o!==P(e,t,i[1])||o!==P(e,t,i[2])||o!==P(e,t,i[3])}function Da(e,t,i){const r=t.paint.get(e).value;return"constant"===r.kind?r.value:i.programConfigurations.get(t.id).getMaxValue(e)}function Pa(e){return Math.sqrt(e[0]*e[0]+e[1]*e[1])}function La(e,t,i,r,o){if(!t[0]&&!t[1])return e;const s=n.convert(t)._mult(o);"viewport"===i&&s._rotate(-r);const a=[];for(let t=0;t<e.length;t++)a.push(e[t].sub(s));return a}function Ba(e,t,i,r){const o=n.convert(e)._mult(r);return"viewport"===t&&o._rotate(-i),o}sn(xa,"CircleBucket",{omit:["layers"]});const Ra=new vo({"circle-sort-key":new _o(Ve.layout_circle["circle-sort-key"])});var Fa={paint:new vo({"circle-radius":new _o(Ve.paint_circle["circle-radius"]),"circle-color":new _o(Ve.paint_circle["circle-color"]),"circle-blur":new _o(Ve.paint_circle["circle-blur"]),"circle-opacity":new _o(Ve.paint_circle["circle-opacity"]),"circle-translate":new mo(Ve.paint_circle["circle-translate"]),"circle-translate-anchor":new mo(Ve.paint_circle["circle-translate-anchor"]),"circle-pitch-scale":new mo(Ve.paint_circle["circle-pitch-scale"]),"circle-pitch-alignment":new mo(Ve.paint_circle["circle-pitch-alignment"]),"circle-stroke-width":new _o(Ve.paint_circle["circle-stroke-width"]),"circle-stroke-color":new _o(Ve.paint_circle["circle-stroke-color"]),"circle-stroke-opacity":new _o(Ve.paint_circle["circle-stroke-opacity"])}),layout:Ra},Oa=1e-6,Ua="undefined"!=typeof Float32Array?Float32Array:Array;function Va(){var e=new Ua(9);return Ua!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[5]=0,e[6]=0,e[7]=0),e[0]=1,e[4]=1,e[8]=1,e}function ja(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function Na(e,t,i){var r=t[0],n=t[1],o=t[2],s=t[3],a=t[4],l=t[5],c=t[6],h=t[7],u=t[8],d=t[9],p=t[10],f=t[11],m=t[12],_=t[13],g=t[14],y=t[15],x=i[0],v=i[1],b=i[2],w=i[3];return e[0]=x*r+v*a+b*u+w*m,e[1]=x*n+v*l+b*d+w*_,e[2]=x*o+v*c+b*p+w*g,e[3]=x*s+v*h+b*f+w*y,e[4]=(x=i[4])*r+(v=i[5])*a+(b=i[6])*u+(w=i[7])*m,e[5]=x*n+v*l+b*d+w*_,e[6]=x*o+v*c+b*p+w*g,e[7]=x*s+v*h+b*f+w*y,e[8]=(x=i[8])*r+(v=i[9])*a+(b=i[10])*u+(w=i[11])*m,e[9]=x*n+v*l+b*d+w*_,e[10]=x*o+v*c+b*p+w*g,e[11]=x*s+v*h+b*f+w*y,e[12]=(x=i[12])*r+(v=i[13])*a+(b=i[14])*u+(w=i[15])*m,e[13]=x*n+v*l+b*d+w*_,e[14]=x*o+v*c+b*p+w*g,e[15]=x*s+v*h+b*f+w*y,e}function Ga(e,t,i){var r,n,o,s,a,l,c,h,u,d,p,f,m=i[0],_=i[1],g=i[2];return t===e?(e[12]=t[0]*m+t[4]*_+t[8]*g+t[12],e[13]=t[1]*m+t[5]*_+t[9]*g+t[13],e[14]=t[2]*m+t[6]*_+t[10]*g+t[14],e[15]=t[3]*m+t[7]*_+t[11]*g+t[15]):(n=t[1],o=t[2],s=t[3],a=t[4],l=t[5],c=t[6],h=t[7],u=t[8],d=t[9],p=t[10],f=t[11],e[0]=r=t[0],e[1]=n,e[2]=o,e[3]=s,e[4]=a,e[5]=l,e[6]=c,e[7]=h,e[8]=u,e[9]=d,e[10]=p,e[11]=f,e[12]=r*m+a*_+u*g+t[12],e[13]=n*m+l*_+d*g+t[13],e[14]=o*m+c*_+p*g+t[14],e[15]=s*m+h*_+f*g+t[15]),e}function Za(e,t,i){var r=i[0],n=i[1],o=i[2];return e[0]=t[0]*r,e[1]=t[1]*r,e[2]=t[2]*r,e[3]=t[3]*r,e[4]=t[4]*n,e[5]=t[5]*n,e[6]=t[6]*n,e[7]=t[7]*n,e[8]=t[8]*o,e[9]=t[9]*o,e[10]=t[10]*o,e[11]=t[11]*o,e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function $a(e,t,i){var r=Math.sin(i),n=Math.cos(i),o=t[4],s=t[5],a=t[6],l=t[7],c=t[8],h=t[9],u=t[10],d=t[11];return t!==e&&(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[4]=o*n+c*r,e[5]=s*n+h*r,e[6]=a*n+u*r,e[7]=l*n+d*r,e[8]=c*n-o*r,e[9]=h*n-s*r,e[10]=u*n-a*r,e[11]=d*n-l*r,e}function qa(e,t,i){var r=Math.sin(i),n=Math.cos(i),o=t[0],s=t[1],a=t[2],l=t[3],c=t[8],h=t[9],u=t[10],d=t[11];return t!==e&&(e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=o*n-c*r,e[1]=s*n-h*r,e[2]=a*n-u*r,e[3]=l*n-d*r,e[8]=o*r+c*n,e[9]=s*r+h*n,e[10]=a*r+u*n,e[11]=l*r+d*n,e}Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});var Xa=Na;function Wa(){var e=new Ua(3);return Ua!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function Ha(e){var t=new Ua(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function Ya(e){return Math.hypot(e[0],e[1],e[2])}function Ka(e,t,i){var r=new Ua(3);return r[0]=e,r[1]=t,r[2]=i,r}function Ja(e,t,i){return e[0]=t[0]+i[0],e[1]=t[1]+i[1],e[2]=t[2]+i[2],e}function Qa(e,t,i){return e[0]=t[0]-i[0],e[1]=t[1]-i[1],e[2]=t[2]-i[2],e}function el(e,t,i){return e[0]=t[0]*i[0],e[1]=t[1]*i[1],e[2]=t[2]*i[2],e}function tl(e,t,i){return e[0]=Math.min(t[0],i[0]),e[1]=Math.min(t[1],i[1]),e[2]=Math.min(t[2],i[2]),e}function il(e,t,i){return e[0]=Math.max(t[0],i[0]),e[1]=Math.max(t[1],i[1]),e[2]=Math.max(t[2],i[2]),e}function rl(e,t,i){return e[0]=t[0]*i,e[1]=t[1]*i,e[2]=t[2]*i,e}function nl(e,t,i,r){return e[0]=t[0]+i[0]*r,e[1]=t[1]+i[1]*r,e[2]=t[2]+i[2]*r,e}function ol(e,t){var i=t[0],r=t[1],n=t[2],o=i*i+r*r+n*n;return o>0&&(o=1/Math.sqrt(o)),e[0]=t[0]*o,e[1]=t[1]*o,e[2]=t[2]*o,e}function sl(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function al(e,t,i){var r=t[0],n=t[1],o=t[2],s=i[0],a=i[1],l=i[2];return e[0]=n*l-o*a,e[1]=o*s-r*l,e[2]=r*a-n*s,e}function ll(e,t,i){var r=t[0],n=t[1],o=t[2],s=i[3]*r+i[7]*n+i[11]*o+i[15];return e[0]=(i[0]*r+i[4]*n+i[8]*o+i[12])/(s=s||1),e[1]=(i[1]*r+i[5]*n+i[9]*o+i[13])/s,e[2]=(i[2]*r+i[6]*n+i[10]*o+i[14])/s,e}function cl(e,t,i){var r=i[0],n=i[1],o=i[2],s=t[0],a=t[1],l=t[2],c=n*l-o*a,h=o*s-r*l,u=r*a-n*s,d=n*u-o*h,p=o*c-r*u,f=r*h-n*c,m=2*i[3];return h*=m,u*=m,p*=2,f*=2,e[0]=s+(c*=m)+(d*=2),e[1]=a+h+p,e[2]=l+u+f,e}var hl,ul=Qa,dl=el,pl=Ya;function fl(e,t,i){var r=t[0],n=t[1],o=t[2],s=t[3];return e[0]=i[0]*r+i[4]*n+i[8]*o+i[12]*s,e[1]=i[1]*r+i[5]*n+i[9]*o+i[13]*s,e[2]=i[2]*r+i[6]*n+i[10]*o+i[14]*s,e[3]=i[3]*r+i[7]*n+i[11]*o+i[15]*s,e}function ml(){var e=new Ua(4);return Ua!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e[3]=1,e}function _l(e){return e[0]=0,e[1]=0,e[2]=0,e[3]=1,e}function gl(e,t,i){i*=.5;var r=t[0],n=t[1],o=t[2],s=t[3],a=Math.sin(i),l=Math.cos(i);return e[0]=r*l+s*a,e[1]=n*l+o*a,e[2]=o*l-n*a,e[3]=s*l-r*a,e}Wa(),hl=new Ua(4),Ua!=Float32Array&&(hl[0]=0,hl[1]=0,hl[2]=0,hl[3]=0),Wa(),Ka(1,0,0),Ka(0,1,0),ml(),ml(),Va();class yl{constructor(e,t){this.points=e,this.planes=t}static fromInvProjectionMatrix(e,t,i,r){const n=Math.pow(2,i),o=[[-1,1,-1,1],[1,1,-1,1],[1,-1,-1,1],[-1,-1,-1,1],[-1,1,1,1],[1,1,1,1],[1,-1,1,1],[-1,-1,1,1]].map((i=>{const o=fl([],i,e),s=1/o[3]/t*n;return function(e,t,i){return e[0]=t[0]*i[0],e[1]=t[1]*i[1],e[2]=t[2]*i[2],e[3]=t[3]*i[3],e}(o,o,[s,s,r?1/o[3]:s,s])})),s=[[0,1,2],[6,5,4],[0,3,7],[2,1,5],[3,2,6],[0,4,5]].map((e=>{const t=ol([],al([],ul([],o[e[0]],o[e[1]]),ul([],o[e[2]],o[e[1]]))),i=-sl(t,o[e[1]]);return t.concat(i)}));return new yl(o,s)}}class xl{constructor(e,t){this.min=e,this.max=t,this.center=rl([],Ja([],this.min,this.max),.5)}quadrant(e){const t=[e%2==0,e<2],i=Ha(this.min),r=Ha(this.max);for(let e=0;e<t.length;e++)i[e]=t[e]?this.min[e]:this.center[e],r[e]=t[e]?this.center[e]:this.max[e];return r[2]=this.max[2],new xl(i,r)}distanceX(e){return Math.max(Math.min(this.max[0],e[0]),this.min[0])-e[0]}distanceY(e){return Math.max(Math.min(this.max[1],e[1]),this.min[1])-e[1]}distanceZ(e){return Math.max(Math.min(this.max[2],e[2]),this.min[2])-e[2]}getCorners(){const e=this.min,t=this.max;return[[e[0],e[1],e[2]],[t[0],e[1],e[2]],[t[0],t[1],e[2]],[e[0],t[1],e[2]],[e[0],e[1],t[2]],[t[0],e[1],t[2]],[t[0],t[1],t[2]],[e[0],t[1],t[2]]]}intersects(e){const t=this.getCorners();let i=!0;for(let r=0;r<e.planes.length;r++){const n=e.planes[r];let o=0;for(let e=0;e<t.length;e++)o+=sl(n,t[e])+n[3]>=0;if(0===o)return 0;o!==t.length&&(i=!1)}if(i)return 2;for(let t=0;t<3;t++){let i=Number.MAX_VALUE,r=-Number.MAX_VALUE;for(let n=0;n<e.points.length;n++){const o=e.points[n][t]-this.min[t];i=Math.min(i,o),r=Math.max(r,o)}if(r<0||i>this.max[t]-this.min[t])return 0}return 1}}function vl(e,t,i,r,n,o,s,a,l){if(o&&e.queryGeometry.isAboveHorizon)return!1;o&&(l*=e.pixelToTileUnitsFactor);for(const c of t)for(const t of c){const c=t.add(a),h=n&&i.elevation?i.elevation.exaggeration()*n.getElevationAt(c.x,c.y,!0):0,u=o?c:bl(c,h,r),d=o?e.tilespaceRays.map((e=>El(e,h))):e.queryGeometry.screenGeometry,p=fl([],[t.x,t.y,h,1],r);if(!s&&o?l*=p[3]/i.cameraToCenterDistance:s&&!o&&(l*=i.cameraToCenterDistance/p[3]),ba(d,u,l))return!0}return!1}function bl(e,t,i){const r=fl([],[e.x,e.y,t,1],i);return new n(r[0]/r[3],r[1]/r[3])}const wl=Ka(0,0,0),Tl=Ka(0,0,1);function El(e,t){const i=Wa();return wl[2]=t,e.intersectsPlane(wl,Tl,i),new n(i[0],i[1])}class Sl extends xa{}function Il(e,{width:t,height:i},r,n){if(n){if(n instanceof Uint8ClampedArray)n=new Uint8Array(n.buffer);else if(n.length!==t*i*r)throw new RangeError("mismatched image size")}else n=new Uint8Array(t*i*r);return e.width=t,e.height=i,e.data=n,e}function Ml(e,t,i){const{width:r,height:n}=t;r===e.width&&n===e.height||(Al(e,t,{x:0,y:0},{x:0,y:0},{width:Math.min(e.width,r),height:Math.min(e.height,n)},i),e.width=r,e.height=n,e.data=t.data)}function Al(e,t,i,r,n,o){if(0===n.width||0===n.height)return t;if(n.width>e.width||n.height>e.height||i.x>e.width-n.width||i.y>e.height-n.height)throw new RangeError("out of range source coordinates for image copy");if(n.width>t.width||n.height>t.height||r.x>t.width-n.width||r.y>t.height-n.height)throw new RangeError("out of range destination coordinates for image copy");const s=e.data,a=t.data;for(let l=0;l<n.height;l++){const c=((i.y+l)*e.width+i.x)*o,h=((r.y+l)*t.width+r.x)*o;for(let e=0;e<n.width*o;e++)a[h+e]=s[c+e]}return t}sn(Sl,"HeatmapBucket",{omit:["layers"]});class Cl{constructor(e,t){Il(this,e,1,t)}resize(e){Ml(this,new Cl(e),1)}clone(){return new Cl({width:this.width,height:this.height},new Uint8Array(this.data))}static copy(e,t,i,r,n){Al(e,t,i,r,n,1)}}class zl{constructor(e,t){Il(this,e,4,t)}resize(e){Ml(this,new zl(e),4)}replace(e,t){t?this.data.set(e):this.data=e instanceof Uint8ClampedArray?new Uint8Array(e.buffer):e}clone(){return new zl({width:this.width,height:this.height},new Uint8Array(this.data))}static copy(e,t,i,r,n){Al(e,t,i,r,n,4)}}sn(Cl,"AlphaImage"),sn(zl,"RGBAImage");var kl={paint:new vo({"heatmap-radius":new _o(Ve.paint_heatmap["heatmap-radius"]),"heatmap-weight":new _o(Ve.paint_heatmap["heatmap-weight"]),"heatmap-intensity":new mo(Ve.paint_heatmap["heatmap-intensity"]),"heatmap-color":new xo(Ve.paint_heatmap["heatmap-color"]),"heatmap-opacity":new mo(Ve.paint_heatmap["heatmap-opacity"])})};function Dl(e){const t={},i=e.resolution||256,r=e.clips?e.clips.length:1,n=e.image||new zl({width:i,height:r}),o=(i,r,o)=>{t[e.evaluationKey]=o;const s=e.expression.evaluate(t);n.data[i+r+0]=Math.floor(255*s.r/s.a),n.data[i+r+1]=Math.floor(255*s.g/s.a),n.data[i+r+2]=Math.floor(255*s.b/s.a),n.data[i+r+3]=Math.floor(255*s.a)};if(e.clips)for(let t=0,n=0;t<r;++t,n+=4*i)for(let r=0,s=0;r<i;r++,s+=4){const a=r/(i-1),{start:l,end:c}=e.clips[t];o(n,s,l*(1-a)+c*a)}else for(let e=0,t=0;e<i;e++,t+=4)o(0,t,e/(i-1));return n}var Pl={paint:new vo({"hillshade-illumination-direction":new mo(Ve.paint_hillshade["hillshade-illumination-direction"]),"hillshade-illumination-anchor":new mo(Ve.paint_hillshade["hillshade-illumination-anchor"]),"hillshade-exaggeration":new mo(Ve.paint_hillshade["hillshade-exaggeration"]),"hillshade-shadow-color":new mo(Ve.paint_hillshade["hillshade-shadow-color"]),"hillshade-highlight-color":new mo(Ve.paint_hillshade["hillshade-highlight-color"]),"hillshade-accent-color":new mo(Ve.paint_hillshade["hillshade-accent-color"])})};const Ll=So([{name:"a_pos",components:2,type:"Int16"}],4),{members:Bl}=Ll;var Rl=Ol,Fl=Ol;function Ol(e,t,i){i=i||2;var r,n,o,s,a,l,c,h=t&&t.length,u=h?t[0]*i:e.length,d=Ul(e,0,u,i,!0),p=[];if(!d||d.next===d.prev)return p;if(h&&(d=function(e,t,i,r){var n,o,s,a=[];for(n=0,o=t.length;n<o;n++)(s=Ul(e,t[n]*r,n<o-1?t[n+1]*r:e.length,r,!1))===s.next&&(s.steiner=!0),a.push(Yl(s));for(a.sort(ql),n=0;n<a.length;n++)i=Vl(i=Xl(a[n],i),i.next);return i}(e,t,d,i)),e.length>80*i){r=o=e[0],n=s=e[1];for(var f=i;f<u;f+=i)(a=e[f])<r&&(r=a),(l=e[f+1])<n&&(n=l),a>o&&(o=a),l>s&&(s=l);c=0!==(c=Math.max(o-r,s-n))?1/c:0}return jl(d,p,i,r,n,c),p}function Ul(e,t,i,r,n){var o,s;if(n===cc(e,t,i,r)>0)for(o=t;o<i;o+=r)s=sc(o,e[o],e[o+1],s);else for(o=i-r;o>=t;o-=r)s=sc(o,e[o],e[o+1],s);return s&&ec(s,s.next)&&(ac(s),s=s.next),s}function Vl(e,t){if(!e)return e;t||(t=e);var i,r=e;do{if(i=!1,r.steiner||!ec(r,r.next)&&0!==Ql(r.prev,r,r.next))r=r.next;else{if(ac(r),(r=t=r.prev)===r.next)break;i=!0}}while(i||r!==t);return t}function jl(e,t,i,r,n,o,s){if(e){!s&&o&&function(e,t,i,r){var n=e;do{null===n.z&&(n.z=Hl(n.x,n.y,t,i,r)),n.prevZ=n.prev,n.nextZ=n.next,n=n.next}while(n!==e);n.prevZ.nextZ=null,n.prevZ=null,function(e){var t,i,r,n,o,s,a,l,c=1;do{for(i=e,e=null,o=null,s=0;i;){for(s++,r=i,a=0,t=0;t<c&&(a++,r=r.nextZ);t++);for(l=c;a>0||l>0&&r;)0!==a&&(0===l||!r||i.z<=r.z)?(n=i,i=i.nextZ,a--):(n=r,r=r.nextZ,l--),o?o.nextZ=n:e=n,n.prevZ=o,o=n;i=r}o.nextZ=null,c*=2}while(s>1)}(n)}(e,r,n,o);for(var a,l,c=e;e.prev!==e.next;)if(a=e.prev,l=e.next,o?Gl(e,r,n,o):Nl(e))t.push(a.i/i),t.push(e.i/i),t.push(l.i/i),ac(e),e=l.next,c=l.next;else if((e=l)===c){s?1===s?jl(e=Zl(Vl(e),t,i),t,i,r,n,o,2):2===s&&$l(e,t,i,r,n,o):jl(Vl(e),t,i,r,n,o,1);break}}}function Nl(e){var t=e.prev,i=e,r=e.next;if(Ql(t,i,r)>=0)return!1;for(var n=e.next.next;n!==e.prev;){if(Kl(t.x,t.y,i.x,i.y,r.x,r.y,n.x,n.y)&&Ql(n.prev,n,n.next)>=0)return!1;n=n.next}return!0}function Gl(e,t,i,r){var n=e.prev,o=e,s=e.next;if(Ql(n,o,s)>=0)return!1;for(var a=n.x>o.x?n.x>s.x?n.x:s.x:o.x>s.x?o.x:s.x,l=n.y>o.y?n.y>s.y?n.y:s.y:o.y>s.y?o.y:s.y,c=Hl(n.x<o.x?n.x<s.x?n.x:s.x:o.x<s.x?o.x:s.x,n.y<o.y?n.y<s.y?n.y:s.y:o.y<s.y?o.y:s.y,t,i,r),h=Hl(a,l,t,i,r),u=e.prevZ,d=e.nextZ;u&&u.z>=c&&d&&d.z<=h;){if(u!==e.prev&&u!==e.next&&Kl(n.x,n.y,o.x,o.y,s.x,s.y,u.x,u.y)&&Ql(u.prev,u,u.next)>=0)return!1;if(u=u.prevZ,d!==e.prev&&d!==e.next&&Kl(n.x,n.y,o.x,o.y,s.x,s.y,d.x,d.y)&&Ql(d.prev,d,d.next)>=0)return!1;d=d.nextZ}for(;u&&u.z>=c;){if(u!==e.prev&&u!==e.next&&Kl(n.x,n.y,o.x,o.y,s.x,s.y,u.x,u.y)&&Ql(u.prev,u,u.next)>=0)return!1;u=u.prevZ}for(;d&&d.z<=h;){if(d!==e.prev&&d!==e.next&&Kl(n.x,n.y,o.x,o.y,s.x,s.y,d.x,d.y)&&Ql(d.prev,d,d.next)>=0)return!1;d=d.nextZ}return!0}function Zl(e,t,i){var r=e;do{var n=r.prev,o=r.next.next;!ec(n,o)&&tc(n,r,r.next,o)&&nc(n,o)&&nc(o,n)&&(t.push(n.i/i),t.push(r.i/i),t.push(o.i/i),ac(r),ac(r.next),r=e=o),r=r.next}while(r!==e);return Vl(r)}function $l(e,t,i,r,n,o){var s=e;do{for(var a=s.next.next;a!==s.prev;){if(s.i!==a.i&&Jl(s,a)){var l=oc(s,a);return s=Vl(s,s.next),l=Vl(l,l.next),jl(s,t,i,r,n,o),void jl(l,t,i,r,n,o)}a=a.next}s=s.next}while(s!==e)}function ql(e,t){return e.x-t.x}function Xl(e,t){var i=function(e,t){var i,r=t,n=e.x,o=e.y,s=-1/0;do{if(o<=r.y&&o>=r.next.y&&r.next.y!==r.y){var a=r.x+(o-r.y)*(r.next.x-r.x)/(r.next.y-r.y);if(a<=n&&a>s){if(s=a,a===n){if(o===r.y)return r;if(o===r.next.y)return r.next}i=r.x<r.next.x?r:r.next}}r=r.next}while(r!==t);if(!i)return null;if(n===s)return i;var l,c=i,h=i.x,u=i.y,d=1/0;r=i;do{n>=r.x&&r.x>=h&&n!==r.x&&Kl(o<u?n:s,o,h,u,o<u?s:n,o,r.x,r.y)&&(l=Math.abs(o-r.y)/(n-r.x),nc(r,e)&&(l<d||l===d&&(r.x>i.x||r.x===i.x&&Wl(i,r)))&&(i=r,d=l)),r=r.next}while(r!==c);return i}(e,t);if(!i)return t;var r=oc(i,e),n=Vl(i,i.next);return Vl(r,r.next),t===i?n:t}function Wl(e,t){return Ql(e.prev,e,t.prev)<0&&Ql(t.next,e,e.next)<0}function Hl(e,t,i,r,n){return(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-i)*n)|e<<8))|e<<4))|e<<2))|e<<1))|(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-r)*n)|t<<8))|t<<4))|t<<2))|t<<1))<<1}function Yl(e){var t=e,i=e;do{(t.x<i.x||t.x===i.x&&t.y<i.y)&&(i=t),t=t.next}while(t!==e);return i}function Kl(e,t,i,r,n,o,s,a){return(n-s)*(t-a)-(e-s)*(o-a)>=0&&(e-s)*(r-a)-(i-s)*(t-a)>=0&&(i-s)*(o-a)-(n-s)*(r-a)>=0}function Jl(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!function(e,t){var i=e;do{if(i.i!==e.i&&i.next.i!==e.i&&i.i!==t.i&&i.next.i!==t.i&&tc(i,i.next,e,t))return!0;i=i.next}while(i!==e);return!1}(e,t)&&(nc(e,t)&&nc(t,e)&&function(e,t){var i=e,r=!1,n=(e.x+t.x)/2,o=(e.y+t.y)/2;do{i.y>o!=i.next.y>o&&i.next.y!==i.y&&n<(i.next.x-i.x)*(o-i.y)/(i.next.y-i.y)+i.x&&(r=!r),i=i.next}while(i!==e);return r}(e,t)&&(Ql(e.prev,e,t.prev)||Ql(e,t.prev,t))||ec(e,t)&&Ql(e.prev,e,e.next)>0&&Ql(t.prev,t,t.next)>0)}function Ql(e,t,i){return(t.y-e.y)*(i.x-t.x)-(t.x-e.x)*(i.y-t.y)}function ec(e,t){return e.x===t.x&&e.y===t.y}function tc(e,t,i,r){var n=rc(Ql(e,t,i)),o=rc(Ql(e,t,r)),s=rc(Ql(i,r,e)),a=rc(Ql(i,r,t));return n!==o&&s!==a||!(0!==n||!ic(e,i,t))||!(0!==o||!ic(e,r,t))||!(0!==s||!ic(i,e,r))||!(0!==a||!ic(i,t,r))}function ic(e,t,i){return t.x<=Math.max(e.x,i.x)&&t.x>=Math.min(e.x,i.x)&&t.y<=Math.max(e.y,i.y)&&t.y>=Math.min(e.y,i.y)}function rc(e){return e>0?1:e<0?-1:0}function nc(e,t){return Ql(e.prev,e,e.next)<0?Ql(e,t,e.next)>=0&&Ql(e,e.prev,t)>=0:Ql(e,t,e.prev)<0||Ql(e,e.next,t)<0}function oc(e,t){var i=new lc(e.i,e.x,e.y),r=new lc(t.i,t.x,t.y),n=e.next,o=t.prev;return e.next=t,t.prev=e,i.next=n,n.prev=i,r.next=i,i.prev=r,o.next=r,r.prev=o,r}function sc(e,t,i,r){var n=new lc(e,t,i);return r?(n.next=r.next,n.prev=r,r.next.prev=n,r.next=n):(n.prev=n,n.next=n),n}function ac(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function lc(e,t,i){this.i=e,this.x=t,this.y=i,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function cc(e,t,i,r){for(var n=0,o=t,s=i-r;o<i;o+=r)n+=(e[s]-e[o])*(e[o+1]+e[s+1]),s=o;return n}function hc(e,t,i,r,n){uc(e,t,i||0,r||e.length-1,n||pc)}function uc(e,t,i,r,n){for(;r>i;){if(r-i>600){var o=r-i+1,s=t-i+1,a=Math.log(o),l=.5*Math.exp(2*a/3),c=.5*Math.sqrt(a*l*(o-l)/o)*(s-o/2<0?-1:1);uc(e,t,Math.max(i,Math.floor(t-s*l/o+c)),Math.min(r,Math.floor(t+(o-s)*l/o+c)),n)}var h=e[t],u=i,d=r;for(dc(e,i,t),n(e[r],h)>0&&dc(e,i,r);u<d;){for(dc(e,u,d),u++,d--;n(e[u],h)<0;)u++;for(;n(e[d],h)>0;)d--}0===n(e[i],h)?dc(e,i,d):dc(e,++d,r),d<=t&&(i=d+1),t<=d&&(r=d-1)}}function dc(e,t,i){var r=e[t];e[t]=e[i],e[i]=r}function pc(e,t){return e<t?-1:e>t?1:0}function fc(e,t){const i=e.length;if(i<=1)return[e];const r=[];let n,o;for(let t=0;t<i;t++){const i=L(e[t]);0!==i&&(e[t].area=Math.abs(i),void 0===o&&(o=i<0),o===i<0?(n&&r.push(n),n=[e[t]]):n.push(e[t]))}if(n&&r.push(n),t>1)for(let e=0;e<r.length;e++)r[e].length<=t||(hc(r[e],t,1,r[e].length-1,mc),r[e]=r[e].slice(0,t));return r}function mc(e,t){return t.area-e.area}function _c(e,t,i){const r=i.patternDependencies;let n=!1;for(const i of t){const t=i.paint.get(`${e}-pattern`);t.isConstant()||(n=!0);const o=t.constantOr(null);o&&(n=!0,r[o.to]=!0,r[o.from]=!0)}return n}function gc(e,t,i,r,n){const o=n.patternDependencies;for(const s of t){const t=s.paint.get(`${e}-pattern`).value;if("constant"!==t.kind){let e=t.evaluate({zoom:r-1},i,{},n.availableImages),a=t.evaluate({zoom:r},i,{},n.availableImages),l=t.evaluate({zoom:r+1},i,{},n.availableImages);e=e&&e.name?e.name:e,a=a&&a.name?a.name:a,l=l&&l.name?l.name:l,o[e]=!0,o[a]=!0,o[l]=!0,i.patterns[s.id]={min:e,mid:a,max:l}}}return i}Ol.deviation=function(e,t,i,r){var n=t&&t.length,o=Math.abs(cc(e,0,n?t[0]*i:e.length,i));if(n)for(var s=0,a=t.length;s<a;s++)o-=Math.abs(cc(e,t[s]*i,s<a-1?t[s+1]*i:e.length,i));var l=0;for(s=0;s<r.length;s+=3){var c=r[s]*i,h=r[s+1]*i,u=r[s+2]*i;l+=Math.abs((e[c]-e[u])*(e[h+1]-e[c+1])-(e[c]-e[h])*(e[u+1]-e[c+1]))}return 0===o&&0===l?0:Math.abs((l-o)/o)},Ol.flatten=function(e){for(var t=e[0][0].length,i={vertices:[],holes:[],dimensions:t},r=0,n=0;n<e.length;n++){for(var o=0;o<e[n].length;o++)for(var s=0;s<t;s++)i.vertices.push(e[n][o][s]);n>0&&i.holes.push(r+=e[n-1].length)}return i},Rl.default=Fl;class yc{constructor(e){this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.layerIds=this.layers.map((e=>e.id)),this.index=e.index,this.hasPattern=!1,this.patternFeatures=[],this.layoutVertexArray=new Mo,this.indexArray=new No,this.indexArray2=new Ho,this.programConfigurations=new Us(e.layers,e.zoom),this.segments=new Hs,this.segments2=new Hs,this.stateDependentLayerIds=this.layers.filter((e=>e.isStateDependent())).map((e=>e.id)),this.projection=e.projection}populate(e,t,i,r){this.hasPattern=_c("fill",this.layers,t);const n=this.layers[0].layout.get("fill-sort-key"),o=[];for(const{feature:s,id:a,index:l,sourceLayerIndex:c}of e){const e=this.layers[0]._featureFilter.needGeometry,h=_a(s,e);if(!this.layers[0]._featureFilter.filter(new oo(this.zoom),h,i))continue;const u=n?n.evaluate(h,{},i,t.availableImages):void 0,d={id:a,properties:s.properties,type:s.type,sourceLayerIndex:c,index:l,geometry:e?h.geometry:ma(s,i,r),patterns:{},sortKey:u};o.push(d)}n&&o.sort(((e,t)=>e.sortKey-t.sortKey));for(const r of o){const{geometry:n,index:o,sourceLayerIndex:s}=r;if(this.hasPattern){const e=gc("fill",this.layers,r,this.zoom,t);this.patternFeatures.push(e)}else this.addFeature(r,n,o,i,{},t.availableImages);t.featureIndex.insert(e[o].feature,n,o,s,this.index)}}update(e,t,i,r){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(e,t,this.stateDependentLayers,i,r)}addFeatures(e,t,i,r,n){for(const e of this.patternFeatures)this.addFeature(e,e.geometry,e.index,t,i,r)}isEmpty(){return 0===this.layoutVertexArray.length}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(e){this.uploaded||(this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,Bl),this.indexBuffer=e.createIndexBuffer(this.indexArray),this.indexBuffer2=e.createIndexBuffer(this.indexArray2)),this.programConfigurations.upload(e),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.indexBuffer2.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.segments2.destroy())}addFeature(e,t,i,r,n,o=[]){for(const e of fc(t,500)){let t=0;for(const i of e)t+=i.length;const i=this.segments.prepareSegment(t,this.layoutVertexArray,this.indexArray),r=i.vertexLength,n=[],o=[];for(const t of e){if(0===t.length)continue;t!==e[0]&&o.push(n.length/2);const i=this.segments2.prepareSegment(t.length,this.layoutVertexArray,this.indexArray2),r=i.vertexLength;this.layoutVertexArray.emplaceBack(t[0].x,t[0].y),this.indexArray2.emplaceBack(r+t.length-1,r),n.push(t[0].x),n.push(t[0].y);for(let e=1;e<t.length;e++)this.layoutVertexArray.emplaceBack(t[e].x,t[e].y),this.indexArray2.emplaceBack(r+e-1,r+e),n.push(t[e].x),n.push(t[e].y);i.vertexLength+=t.length,i.primitiveLength+=t.length}const s=Rl(n,o);for(let e=0;e<s.length;e+=3)this.indexArray.emplaceBack(r+s[e],r+s[e+1],r+s[e+2]);i.vertexLength+=t,i.primitiveLength+=s.length/3}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,e,i,n,o,r)}}sn(yc,"FillBucket",{omit:["layers","patternFeatures"]});const xc=new vo({"fill-sort-key":new _o(Ve.layout_fill["fill-sort-key"])});var vc={paint:new vo({"fill-antialias":new mo(Ve.paint_fill["fill-antialias"]),"fill-opacity":new _o(Ve.paint_fill["fill-opacity"]),"fill-color":new _o(Ve.paint_fill["fill-color"]),"fill-outline-color":new _o(Ve.paint_fill["fill-outline-color"]),"fill-translate":new mo(Ve.paint_fill["fill-translate"]),"fill-translate-anchor":new mo(Ve.paint_fill["fill-translate-anchor"]),"fill-pattern":new go(Ve.paint_fill["fill-pattern"])}),layout:xc};const bc=So([{name:"a_pos_normal_ed",components:4,type:"Int16"}]),wc=So([{name:"a_centroid_pos",components:2,type:"Uint16"}]),Tc=So([{name:"a_pos_3",components:3,type:"Int16"},{name:"a_pos_normal_3",components:3,type:"Int16"}]),{members:Ec}=bc;var Sc=Ic;function Ic(e,t,i,r,n){this.properties={},this.extent=i,this.type=0,this._pbf=e,this._geometry=-1,this._keys=r,this._values=n,e.readFields(Mc,this,t)}function Mc(e,t,i){1==e?t.id=i.readVarint():2==e?function(e,t){for(var i=e.readVarint()+e.pos;e.pos<i;){var r=t._keys[e.readVarint()],n=t._values[e.readVarint()];t.properties[r]=n}}(i,t):3==e?t.type=i.readVarint():4==e&&(t._geometry=i.pos)}function Ac(e){for(var t,i,r=0,n=0,o=e.length,s=o-1;n<o;s=n++)r+=((i=e[s]).x-(t=e[n]).x)*(t.y+i.y);return r}Ic.types=["Unknown","Point","LineString","Polygon"],Ic.prototype.loadGeometry=function(){var e=this._pbf;e.pos=this._geometry;for(var t,i=e.readVarint()+e.pos,r=1,o=0,s=0,a=0,l=[];e.pos<i;){if(o<=0){var c=e.readVarint();r=7&c,o=c>>3}if(o--,1===r||2===r)s+=e.readSVarint(),a+=e.readSVarint(),1===r&&(t&&l.push(t),t=[]),t.push(new n(s,a));else{if(7!==r)throw new Error("unknown command "+r);t&&t.push(t[0].clone())}}return t&&l.push(t),l},Ic.prototype.bbox=function(){var e=this._pbf;e.pos=this._geometry;for(var t=e.readVarint()+e.pos,i=1,r=0,n=0,o=0,s=1/0,a=-1/0,l=1/0,c=-1/0;e.pos<t;){if(r<=0){var h=e.readVarint();i=7&h,r=h>>3}if(r--,1===i||2===i)(n+=e.readSVarint())<s&&(s=n),n>a&&(a=n),(o+=e.readSVarint())<l&&(l=o),o>c&&(c=o);else if(7!==i)throw new Error("unknown command "+i)}return[s,l,a,c]},Ic.prototype.toGeoJSON=function(e,t,i){var r,n,o=this.extent*Math.pow(2,i),s=this.extent*e,a=this.extent*t,l=this.loadGeometry(),c=Ic.types[this.type];function h(e){for(var t=0;t<e.length;t++){var i=e[t];e[t]=[360*(i.x+s)/o-180,360/Math.PI*Math.atan(Math.exp((180-360*(i.y+a)/o)*Math.PI/180))-90]}}switch(this.type){case 1:var u=[];for(r=0;r<l.length;r++)u[r]=l[r][0];h(l=u);break;case 2:for(r=0;r<l.length;r++)h(l[r]);break;case 3:for(l=function(e){var t=e.length;if(t<=1)return[e];for(var i,r,n=[],o=0;o<t;o++){var s=Ac(e[o]);0!==s&&(void 0===r&&(r=s<0),r===s<0?(i&&n.push(i),i=[e[o]]):i.push(e[o]))}return i&&n.push(i),n}(l),r=0;r<l.length;r++)for(n=0;n<l[r].length;n++)h(l[r][n])}1===l.length?l=l[0]:c="Multi"+c;var d={type:"Feature",geometry:{type:c,coordinates:l},properties:this.properties};return"id"in this&&(d.id=this.id),d};var Cc=zc;function zc(e,t){this.version=1,this.name=null,this.extent=4096,this.length=0,this._pbf=e,this._keys=[],this._values=[],this._features=[],e.readFields(kc,this,t),this.length=this._features.length}function kc(e,t,i){15===e?t.version=i.readVarint():1===e?t.name=i.readString():5===e?t.extent=i.readVarint():2===e?t._features.push(i.pos):3===e?t._keys.push(i.readString()):4===e&&t._values.push(function(e){for(var t=null,i=e.readVarint()+e.pos;e.pos<i;){var r=e.readVarint()>>3;t=1===r?e.readString():2===r?e.readFloat():3===r?e.readDouble():4===r?e.readVarint64():5===r?e.readVarint():6===r?e.readSVarint():7===r?e.readBoolean():null}return t}(i))}function Dc(e,t,i){if(3===e){var r=new Cc(i,i.readVarint()+i.pos);r.length&&(t[r.name]=r)}}zc.prototype.feature=function(e){if(e<0||e>=this._features.length)throw new Error("feature index out of bounds");this._pbf.pos=this._features[e];var t=this._pbf.readVarint()+this._pbf.pos;return new Sc(this._pbf,t,this.extent,this._keys,this._values)};var Pc={VectorTile:function(e,t){this.layers=e.readFields(Dc,{},t)},VectorTileFeature:Sc,VectorTileLayer:Cc};function Lc(e,t,i,r){const o=[],s=0===r?(e,t,i,r,o,s)=>{e.push(new n(s,i+(s-t)/(r-t)*(o-i)))}:(e,t,i,r,o,s)=>{e.push(new n(t+(s-i)/(o-i)*(r-t),s))};for(const n of e){const e=[];for(const o of n){if(o.length<=2)continue;const n=[];for(let e=0;e<o.length-1;e++){const a=o[e].x,l=o[e].y,c=o[e+1].x,h=o[e+1].y,u=0===r?a:l,d=0===r?c:h;u<t?d>t&&s(n,a,l,c,h,t):u>i?d<i&&s(n,a,l,c,h,i):n.push(o[e]),d<t&&u>=t&&s(n,a,l,c,h,t),d>i&&u<=i&&s(n,a,l,c,h,i)}let a=o[o.length-1];const l=0===r?a.x:a.y;l>=t&&l<=i&&n.push(a),n.length&&(a=n[n.length-1],n[0].x===a.x&&n[0].y===a.y||n.push(n[0]),e.push(n))}e.length&&o.push(e)}return o}const Bc=Pc.VectorTileFeature.types,Rc=Math.pow(2,13);function Fc(e,t,i,r,n,o,s,a){e.emplaceBack((t<<1)+s,(i<<1)+o,(Math.floor(r*Rc)<<1)+n,Math.round(a))}function Oc(e,t,i){const r=16384;e.emplaceBack(t.x,t.y,t.z,i[0]*r,i[1]*r,i[2]*r)}class Uc{constructor(){this.acc=new n(0,0),this.polyCount=[]}startRing(e){this.currentPolyCount={edges:0,top:0},this.polyCount.push(this.currentPolyCount),this.min||(this.min=new n(e.x,e.y),this.max=new n(e.x,e.y))}append(e,t){this.currentPolyCount.edges++,this.acc._add(e);const i=this.min,r=this.max;e.x<i.x?i.x=e.x:e.x>r.x&&(r.x=e.x),e.y<i.y?i.y=e.y:e.y>r.y&&(r.y=e.y),((0===e.x||e.x===Ys)&&e.x===t.x)!=((0===e.y||e.y===Ys)&&e.y===t.y)&&this.processBorderOverlap(e,t),t.x<0!=e.x<0&&this.addBorderIntersection(0,ii(t.y,e.y,(0-t.x)/(e.x-t.x))),t.x>Ys!=e.x>Ys&&this.addBorderIntersection(1,ii(t.y,e.y,(Ys-t.x)/(e.x-t.x))),t.y<0!=e.y<0&&this.addBorderIntersection(2,ii(t.x,e.x,(0-t.y)/(e.y-t.y))),t.y>Ys!=e.y>Ys&&this.addBorderIntersection(3,ii(t.x,e.x,(Ys-t.y)/(e.y-t.y)))}addBorderIntersection(e,t){this.borders||(this.borders=[[Number.MAX_VALUE,-Number.MAX_VALUE],[Number.MAX_VALUE,-Number.MAX_VALUE],[Number.MAX_VALUE,-Number.MAX_VALUE],[Number.MAX_VALUE,-Number.MAX_VALUE]]);const i=this.borders[e];t<i[0]&&(i[0]=t),t>i[1]&&(i[1]=t)}processBorderOverlap(e,t){if(e.x===t.x){if(e.y===t.y)return;const i=0===e.x?0:1;this.addBorderIntersection(i,t.y),this.addBorderIntersection(i,e.y)}else{const i=0===e.y?2:3;this.addBorderIntersection(i,t.x),this.addBorderIntersection(i,e.x)}}centroid(){const e=this.polyCount.reduce(((e,t)=>e+t.edges),0);return 0!==e?this.acc.div(e)._round():new n(0,0)}span(){return new n(this.max.x-this.min.x,this.max.y-this.min.y)}intersectsCount(){return this.borders.reduce(((e,t)=>e+ +(t[0]!==Number.MAX_VALUE)),0)}}class Vc{constructor(e){this.zoom=e.zoom,this.canonical=e.canonical,this.overscaling=e.overscaling,this.layers=e.layers,this.layerIds=this.layers.map((e=>e.id)),this.index=e.index,this.hasPattern=!1,this.projection=e.projection,this.layoutVertexArray=new Co,this.centroidVertexArray=new ds,this.indexArray=new No,this.programConfigurations=new Us(e.layers,e.zoom),this.segments=new Hs,this.stateDependentLayerIds=this.layers.filter((e=>e.isStateDependent())).map((e=>e.id)),this.enableTerrain=e.enableTerrain}populate(e,t,i,r){this.features=[],this.hasPattern=_c("fill-extrusion",this.layers,t),this.featuresOnBorder=[],this.borders=[[],[],[],[]],this.borderDoneWithNeighborZ=[-1,-1,-1,-1],this.tileToMeter=function(e){const t=Math.exp(Math.PI*(1-e.y/(1<<e.z)*2));return 80150034*t/(t*t+1)/Ys/(1<<e.z)}(i);for(const{feature:n,id:o,index:s,sourceLayerIndex:a}of e){const e=this.layers[0]._featureFilter.needGeometry,l=_a(n,e);if(!this.layers[0]._featureFilter.filter(new oo(this.zoom),l,i))continue;const c={id:o,sourceLayerIndex:a,index:s,geometry:e?l.geometry:ma(n,i,r),properties:n.properties,type:n.type,patterns:{}},h=this.layoutVertexArray.length;this.hasPattern?this.features.push(gc("fill-extrusion",this.layers,c,this.zoom,t)):this.addFeature(c,c.geometry,s,i,{},t.availableImages,r),t.featureIndex.insert(n,c.geometry,s,a,this.index,h)}this.sortBorders()}addFeatures(e,t,i,r,n){for(const e of this.features){const{geometry:o}=e;this.addFeature(e,o,e.index,t,i,r,n)}this.sortBorders()}update(e,t,i,r){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(e,t,this.stateDependentLayers,i,r)}isEmpty(){return 0===this.layoutVertexArray.length}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(e){this.uploaded||(this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,Ec),this.indexBuffer=e.createIndexBuffer(this.indexArray),this.layoutVertexExtArray&&(this.layoutVertexExtBuffer=e.createVertexBuffer(this.layoutVertexExtArray,Tc.members,!0))),this.programConfigurations.upload(e),this.uploaded=!0}uploadCentroid(e){0!==this.centroidVertexArray.length&&(this.centroidVertexBuffer?this.needsCentroidUpdate&&this.centroidVertexBuffer.updateData(this.centroidVertexArray):this.centroidVertexBuffer=e.createVertexBuffer(this.centroidVertexArray,wc.members,!0),this.needsCentroidUpdate=!1)}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.centroidVertexBuffer&&this.centroidVertexBuffer.destroy(),this.layoutVertexExtBuffer&&this.layoutVertexExtBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy())}addFeature(e,t,i,r,o,s,a){const l=[new n(0,0),new n(Ys,Ys)],c=a.projection,h="globe"===c.name,u=this.enableTerrain&&!h?new Uc:null;h&&!this.layoutVertexExtArray&&(this.layoutVertexExtArray=new es);const d=fc(t,500);for(let e=d.length-1;e>=0;e--){const t=d[e];(0===t.length||(p=t[0]).every((e=>e.x<=0))||p.every((e=>e.x>=Ys))||p.every((e=>e.y<=0))||p.every((e=>e.y>=Ys)))&&d.splice(e,1)}var p;let f;if(h){const e=11.25,t=1<<r.z,i=oa(r.x/t),o=oa((r.x+1)/t),s=sa(r.y/t),a=sa((r.y+1)/t);f=function(e,t,i,r,o=0,s){const a=[];if(!e.length||!i||!r)return a;const l=(e,t)=>{for(const i of e)a.push({polygon:i,bounds:t})},c=Math.ceil(Math.log2(i)),h=Math.ceil(Math.log2(r)),u=c-h,d=[];for(let e=0;e<Math.abs(u);e++)d.push(u>0?0:1);for(let e=0;e<Math.min(c,h);e++)d.push(0),d.push(1);let p=e;if(p=Lc(p,t[0].y-o,t[1].y+o,1),p=Lc(p,t[0].x-o,t[1].x+o,0),!p.length)return a;const f=[];for(d.length?f.push({polygons:p,bounds:t,depth:0}):l(p,t);f.length;){const e=f.pop(),t=e.depth,i=d[t],r=e.bounds[0],a=e.bounds[1],c=0===i?r.x:r.y,h=0===i?a.x:a.y,u=s?s(i,c,h):.5*(c+h),p=Lc(e.polygons,c-o,u+o,i),m=Lc(e.polygons,u-o,h+o,i);if(p.length){const e=[r,new n(0===i?u:a.x,1===i?u:a.y)];d.length>t+1?f.push({polygons:p,bounds:e,depth:t+1}):l(p,e)}if(m.length){const e=[new n(0===i?u:r.x,1===i?u:r.y),a];d.length>t+1?f.push({polygons:m,bounds:e,depth:t+1}):l(m,e)}}return a}(d,l,Math.ceil((o-i)/e),Math.ceil((s-a)/e),1,((e,i,n)=>{if(0===e)return.5*(i+n);{const e=sa((r.y+i/Ys)/t);return(ra(.5*(sa((r.y+n/Ys)/t)+e))*t-r.y)*Ys}}))}else{f=[];for(const e of d)f.push({polygon:e,bounds:l})}for(const t of f){const i=t.polygon;let n=0,o=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray);for(let e=0;e<i.length;e++){const s=i[e];if(0===s.length)continue;n+=s.length;let a=0;u&&u.startRing(s[0]);for(let e=0;e<s.length;e++){const i=s[e];if(e>=1){const n=s[e-1];if(!jc(i,n,t.bounds)){u&&u.append(i,n),o.vertexLength+4>Hs.MAX_VERTEX_ARRAY_LENGTH&&(o=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray));const e=i.sub(n)._perp(),t=e.x/(Math.abs(e.x)+Math.abs(e.y)),s=e.y>0?1:0,l=n.dist(i);a+l>32768&&(a=0),Fc(this.layoutVertexArray,i.x,i.y,t,s,0,0,a),Fc(this.layoutVertexArray,i.x,i.y,t,s,0,1,a),a+=l,Fc(this.layoutVertexArray,n.x,n.y,t,s,0,0,a),Fc(this.layoutVertexArray,n.x,n.y,t,s,0,1,a);const d=o.vertexLength;if(this.indexArray.emplaceBack(d,d+2,d+1),this.indexArray.emplaceBack(d+1,d+2,d+3),o.vertexLength+=4,o.primitiveLength+=2,h){const e=this.layoutVertexExtArray,t=c.projectTilePoint(i.x,i.y,r),o=c.projectTilePoint(n.x,n.y,r),s=c.upVector(r,i.x,i.y),a=c.upVector(r,n.x,n.y);Oc(e,t,s),Oc(e,t,s),Oc(e,o,a),Oc(e,o,a)}}}}}if(o.vertexLength+n>Hs.MAX_VERTEX_ARRAY_LENGTH&&(o=this.segments.prepareSegment(n,this.layoutVertexArray,this.indexArray)),"Polygon"!==Bc[e.type])continue;const s=[],a=[],l=o.vertexLength;for(let e=0;e<i.length;e++){const t=i[e];if(0!==t.length){t!==i[0]&&a.push(s.length/2);for(let e=0;e<t.length;e++){const i=t[e];Fc(this.layoutVertexArray,i.x,i.y,0,0,1,1,0),s.push(i.x),s.push(i.y),u&&u.currentPolyCount.top++,h&&Oc(this.layoutVertexExtArray,c.projectTilePoint(i.x,i.y,r),c.upVector(r,i.x,i.y))}}}const d=Rl(s,a);for(let e=0;e<d.length;e+=3)this.indexArray.emplaceBack(l+d[e],l+d[e+2],l+d[e+1]);o.primitiveLength+=d.length/3,o.vertexLength+=n}if(u&&u.polyCount.length>0){if(u.borders){u.vertexArrayOffset=this.centroidVertexArray.length;const e=u.borders,t=this.featuresOnBorder.push(u)-1;for(let i=0;i<4;i++)e[i][0]!==Number.MAX_VALUE&&this.borders[i].push(t)}this.encodeCentroid(u.borders?void 0:u.centroid(),u)}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,e,i,o,s,r)}sortBorders(){for(let e=0;e<4;e++)this.borders[e].sort(((t,i)=>this.featuresOnBorder[t].borders[e][0]-this.featuresOnBorder[i].borders[e][0]))}encodeCentroid(e,t,i=!0){let r,n;if(e)if(0!==e.y){const i=t.span()._mult(this.tileToMeter);r=(Math.max(e.x,1)<<3)+Math.min(7,Math.round(i.x/10)),n=(Math.max(e.y,1)<<3)+Math.min(7,Math.round(i.y/10))}else r=Math.ceil(7*(e.x+450)),n=0;else r=0,n=+i;let o=i?this.centroidVertexArray.length:t.vertexArrayOffset;for(const e of t.polyCount){i&&this.centroidVertexArray.resize(this.centroidVertexArray.length+4*e.edges+e.top);for(let t=0;t<2*e.edges;t++)this.centroidVertexArray.emplace(o++,0,n),this.centroidVertexArray.emplace(o++,r,n);for(let t=0;t<e.top;t++)this.centroidVertexArray.emplace(o++,r,n)}}}function jc(e,t,i){return e.x===t.x&&(e.x<i[0].x||e.x>i[1].x)||e.y===t.y&&(e.y<i[0].y||e.y>i[1].y)}sn(Vc,"FillExtrusionBucket",{omit:["layers","features"]}),sn(Uc,"PartMetadata");var Nc={paint:new vo({"fill-extrusion-opacity":new mo(Ve["paint_fill-extrusion"]["fill-extrusion-opacity"]),"fill-extrusion-color":new _o(Ve["paint_fill-extrusion"]["fill-extrusion-color"]),"fill-extrusion-translate":new mo(Ve["paint_fill-extrusion"]["fill-extrusion-translate"]),"fill-extrusion-translate-anchor":new mo(Ve["paint_fill-extrusion"]["fill-extrusion-translate-anchor"]),"fill-extrusion-pattern":new go(Ve["paint_fill-extrusion"]["fill-extrusion-pattern"]),"fill-extrusion-height":new _o(Ve["paint_fill-extrusion"]["fill-extrusion-height"]),"fill-extrusion-base":new _o(Ve["paint_fill-extrusion"]["fill-extrusion-base"]),"fill-extrusion-vertical-gradient":new mo(Ve["paint_fill-extrusion"]["fill-extrusion-vertical-gradient"])})};function Gc(e,t){return e.x*t.x+e.y*t.y}function Zc(e,t){if(1===e.length){let i=0;const r=t[i++];let n;for(;!n||r.equals(n);)if(n=t[i++],!n)return 1/0;for(;i<t.length;i++){const o=t[i],s=e[0],a=n.sub(r),l=o.sub(r),c=s.sub(r),h=Gc(a,a),u=Gc(a,l),d=Gc(l,l),p=Gc(c,a),f=Gc(c,l),m=h*d-u*u,_=(d*p-u*f)/m,g=(h*f-u*p)/m,y=r.z*(1-_-g)+n.z*_+o.z*g;if(isFinite(y))return y}return 1/0}{let e=1/0;for(const i of t)e=Math.min(e,i.z);return e}}function $c(e){const t=new n(e[0],e[1]);return t.z=e[2],t}function qc(e,t,i,r,n,o,s,a){const l=s*n.getElevationAt(e,t,!0,!0),c=0!==o[0],h=c?0===o[1]?s*(o[0]/7-450):s*function(e,t,i){const r=Math.floor(t[0]/8),n=Math.floor(t[1]/8),o=10*(t[0]-8*r),s=10*(t[1]-8*n),a=e.getElevationAt(r,n,!0,!0),l=e.getMeterToDEM(i),c=Math.floor(.5*(o*l-1)),h=Math.floor(.5*(s*l-1)),u=e.tileCoordToPixel(r,n),d=2*c+1,p=2*h+1,f=function(e,t,i,r,n){return[e.getElevationAtPixel(t,i,!0),e.getElevationAtPixel(t+n,i,!0),e.getElevationAtPixel(t,i+n,!0),e.getElevationAtPixel(t+r,i+n,!0)]}(e,u.x-c,u.y-h,d,p),m=Math.abs(f[0]-f[1]),_=Math.abs(f[2]-f[3]),g=Math.abs(f[0]-f[2])+Math.abs(f[1]-f[3]),y=Math.min(.25,.5*l*(m+_)/d),x=Math.min(.25,.5*l*g/p);return a+Math.max(y*o,x*s)}(n,o,a):l;return{base:l+(0===i)?-1:i,top:c?Math.max(h+r,l+i+2):l+r}}const Xc=So([{name:"a_pos_normal",components:2,type:"Int16"},{name:"a_data",components:4,type:"Uint8"},{name:"a_linesofar",components:1,type:"Float32"}],4),{members:Wc}=Xc,Hc=So([{name:"a_packed",components:3,type:"Float32"}]),{members:Yc}=Hc,Kc=Pc.VectorTileFeature.types,Jc=Math.cos(Math.PI/180*37.5);class Qc{constructor(e){this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.layerIds=this.layers.map((e=>e.id)),this.index=e.index,this.projection=e.projection,this.hasPattern=!1,this.patternFeatures=[],this.lineClipsArray=[],this.gradients={},this.layers.forEach((e=>{this.gradients[e.id]={}})),this.layoutVertexArray=new zo,this.layoutVertexArray2=new Ro,this.indexArray=new No,this.programConfigurations=new Us(e.layers,e.zoom),this.segments=new Hs,this.maxLineLength=0,this.stateDependentLayerIds=this.layers.filter((e=>e.isStateDependent())).map((e=>e.id))}populate(e,t,i,r){this.hasPattern=_c("line",this.layers,t);const n=this.layers[0].layout.get("line-sort-key"),o=[];for(const{feature:t,id:s,index:a,sourceLayerIndex:l}of e){const e=this.layers[0]._featureFilter.needGeometry,c=_a(t,e);if(!this.layers[0]._featureFilter.filter(new oo(this.zoom),c,i))continue;const h=n?n.evaluate(c,{},i):void 0,u={id:s,properties:t.properties,type:t.type,sourceLayerIndex:l,index:a,geometry:e?c.geometry:ma(t,i,r),patterns:{},sortKey:h};o.push(u)}n&&o.sort(((e,t)=>e.sortKey-t.sortKey));const{lineAtlas:s,featureIndex:a}=t,l=this.addConstantDashes(s);for(const r of o){const{geometry:n,index:o,sourceLayerIndex:c}=r;if(l&&this.addFeatureDashes(r,s),this.hasPattern){const e=gc("line",this.layers,r,this.zoom,t);this.patternFeatures.push(e)}else this.addFeature(r,n,o,i,s.positions,t.availableImages);a.insert(e[o].feature,n,o,c,this.index)}}addConstantDashes(e){let t=!1;for(const i of this.layers){const r=i.paint.get("line-dasharray").value,n=i.layout.get("line-cap").value;if("constant"!==r.kind||"constant"!==n.kind)t=!0;else{const t=n.value,i=r.value;if(!i)continue;e.addDash(i.from,t),e.addDash(i.to,t),i.other&&e.addDash(i.other,t)}}return t}addFeatureDashes(e,t){const i=this.zoom;for(const r of this.layers){const n=r.paint.get("line-dasharray").value,o=r.layout.get("line-cap").value;if("constant"===n.kind&&"constant"===o.kind)continue;let s,a,l,c,h,u;if("constant"===n.kind){const e=n.value;if(!e)continue;s=e.other||e.to,a=e.to,l=e.from}else s=n.evaluate({zoom:i-1},e),a=n.evaluate({zoom:i},e),l=n.evaluate({zoom:i+1},e);"constant"===o.kind?c=h=u=o.value:(c=o.evaluate({zoom:i-1},e),h=o.evaluate({zoom:i},e),u=o.evaluate({zoom:i+1},e)),t.addDash(s,c),t.addDash(a,h),t.addDash(l,u);const d=t.getKey(s,c),p=t.getKey(a,h),f=t.getKey(l,u);e.patterns[r.id]={min:d,mid:p,max:f}}}update(e,t,i,r){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(e,t,this.stateDependentLayers,i,r)}addFeatures(e,t,i,r,n){for(const e of this.patternFeatures)this.addFeature(e,e.geometry,e.index,t,i,r)}isEmpty(){return 0===this.layoutVertexArray.length}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(e){this.uploaded||(0!==this.layoutVertexArray2.length&&(this.layoutVertexBuffer2=e.createVertexBuffer(this.layoutVertexArray2,Yc)),this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,Wc),this.indexBuffer=e.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(e),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy())}lineFeatureClips(e){if(e.properties&&e.properties.hasOwnProperty("mapbox_clip_start")&&e.properties.hasOwnProperty("mapbox_clip_end"))return{start:+e.properties.mapbox_clip_start,end:+e.properties.mapbox_clip_end}}addFeature(e,t,i,r,n,o){const s=this.layers[0].layout,a=s.get("line-join").evaluate(e,{}),l=s.get("line-cap").evaluate(e,{}),c=s.get("line-miter-limit"),h=s.get("line-round-limit");this.lineClips=this.lineFeatureClips(e);for(const i of t)this.addLine(i,e,a,l,c,h);this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,e,i,n,o,r)}addLine(e,t,i,r,n,o){if(this.distance=0,this.scaledDistance=0,this.totalDistance=0,this.lineSoFar=0,this.lineClips){this.lineClipsArray.push(this.lineClips);for(let t=0;t<e.length-1;t++)this.totalDistance+=e[t].dist(e[t+1]);this.updateScaledDistance(),this.maxLineLength=Math.max(this.maxLineLength,this.totalDistance)}const s="Polygon"===Kc[t.type];let a=e.length;for(;a>=2&&e[a-1].equals(e[a-2]);)a--;let l=0;for(;l<a-1&&e[l].equals(e[l+1]);)l++;if(a<(s?3:2))return;"bevel"===i&&(n=1.05);const c=this.overscaling<=16?122880/(512*this.overscaling):0,h=this.segments.prepareSegment(10*a,this.layoutVertexArray,this.indexArray);let u,d,p,f,m;this.e1=this.e2=-1,s&&(u=e[a-2],m=e[l].sub(u)._unit()._perp());for(let t=l;t<a;t++){if(p=t===a-1?s?e[l+1]:void 0:e[t+1],p&&e[t].equals(p))continue;m&&(f=m),u&&(d=u),u=e[t],m=p?p.sub(u)._unit()._perp():f,f=f||m;let _=f.add(m);0===_.x&&0===_.y||_._unit();const g=f.x*m.x+f.y*m.y,y=_.x*m.x+_.y*m.y,x=0!==y?1/y:1/0,v=2*Math.sqrt(2-2*y),b=y<Jc&&d&&p,w=f.x*m.y-f.y*m.x>0;if(b&&t>l){const e=u.dist(d);if(e>2*c){const t=u.sub(u.sub(d)._mult(c/e)._round());this.updateDistance(d,t),this.addCurrentVertex(t,f,0,0,h),d=t}}const T=d&&p;let E=T?i:s?"butt":r;if(T&&"round"===E&&(x<o?E="miter":x<=2&&(E="fakeround")),"miter"===E&&x>n&&(E="bevel"),"bevel"===E&&(x>2&&(E="flipbevel"),x<n&&(E="miter")),d&&this.updateDistance(d,u),"miter"===E)_._mult(x),this.addCurrentVertex(u,_,0,0,h);else if("flipbevel"===E){if(x>100)_=m.mult(-1);else{const e=x*f.add(m).mag()/f.sub(m).mag();_._perp()._mult(e*(w?-1:1))}this.addCurrentVertex(u,_,0,0,h),this.addCurrentVertex(u,_.mult(-1),0,0,h)}else if("bevel"===E||"fakeround"===E){const e=-Math.sqrt(x*x-1),t=w?e:0,i=w?0:e;if(d&&this.addCurrentVertex(u,f,t,i,h),"fakeround"===E){const e=Math.round(180*v/Math.PI/20);for(let t=1;t<e;t++){let i=t/e;if(.5!==i){const e=i-.5;i+=i*e*(i-1)*((1.0904+g*(g*(3.55645-1.43519*g)-3.2452))*e*e+(.848013+g*(.215638*g-1.06021)))}const r=m.sub(f)._mult(i)._add(f)._unit()._mult(w?-1:1);this.addHalfVertex(u,r.x,r.y,!1,w,0,h)}}p&&this.addCurrentVertex(u,m,-t,-i,h)}else if("butt"===E)this.addCurrentVertex(u,_,0,0,h);else if("square"===E){const e=d?1:-1;d||this.addCurrentVertex(u,_,e,e,h),this.addCurrentVertex(u,_,0,0,h),d&&this.addCurrentVertex(u,_,e,e,h)}else"round"===E&&(d&&(this.addCurrentVertex(u,f,0,0,h),this.addCurrentVertex(u,f,1,1,h,!0)),p&&(this.addCurrentVertex(u,m,-1,-1,h,!0),this.addCurrentVertex(u,m,0,0,h)));if(b&&t<a-1){const e=u.dist(p);if(e>2*c){const t=u.add(p.sub(u)._mult(c/e)._round());this.updateDistance(u,t),this.addCurrentVertex(t,m,0,0,h),u=t}}}}addCurrentVertex(e,t,i,r,n,o=!1){const s=t.y*r-t.x,a=-t.y-t.x*r;this.addHalfVertex(e,t.x+t.y*i,t.y-t.x*i,o,!1,i,n),this.addHalfVertex(e,s,a,o,!0,-r,n)}addHalfVertex({x:e,y:t},i,r,n,o,s,a){this.layoutVertexArray.emplaceBack((e<<1)+(n?1:0),(t<<1)+(o?1:0),Math.round(63*i)+128,Math.round(63*r)+128,1+(0===s?0:s<0?-1:1),0,this.lineSoFar),this.lineClips&&this.layoutVertexArray2.emplaceBack(this.scaledDistance,this.lineClipsArray.length,this.lineSoFar);const l=a.vertexLength++;this.e1>=0&&this.e2>=0&&(this.indexArray.emplaceBack(this.e1,this.e2,l),a.primitiveLength++),o?this.e2=l:this.e1=l}updateScaledDistance(){if(this.lineClips){const e=this.totalDistance/(this.lineClips.end-this.lineClips.start);this.scaledDistance=this.distance/this.totalDistance,this.lineSoFar=e*this.lineClips.start+this.distance}else this.lineSoFar=this.distance}updateDistance(e,t){this.distance+=e.dist(t),this.updateScaledDistance()}}sn(Qc,"LineBucket",{omit:["layers","patternFeatures"]});const eh=new vo({"line-cap":new _o(Ve.layout_line["line-cap"]),"line-join":new _o(Ve.layout_line["line-join"]),"line-miter-limit":new mo(Ve.layout_line["line-miter-limit"]),"line-round-limit":new mo(Ve.layout_line["line-round-limit"]),"line-sort-key":new _o(Ve.layout_line["line-sort-key"])});var th={paint:new vo({"line-opacity":new _o(Ve.paint_line["line-opacity"]),"line-color":new _o(Ve.paint_line["line-color"]),"line-translate":new mo(Ve.paint_line["line-translate"]),"line-translate-anchor":new mo(Ve.paint_line["line-translate-anchor"]),"line-width":new _o(Ve.paint_line["line-width"]),"line-gap-width":new _o(Ve.paint_line["line-gap-width"]),"line-offset":new _o(Ve.paint_line["line-offset"]),"line-blur":new _o(Ve.paint_line["line-blur"]),"line-dasharray":new go(Ve.paint_line["line-dasharray"]),"line-pattern":new go(Ve.paint_line["line-pattern"]),"line-gradient":new xo(Ve.paint_line["line-gradient"])}),layout:eh};const ih=new class extends _o{possiblyEvaluate(e,t){return t=new oo(Math.floor(t.zoom),{now:t.now,fadeDuration:t.fadeDuration,zoomHistory:t.zoomHistory,transition:t.transition}),super.possiblyEvaluate(e,t)}evaluate(e,t,i,r){return t=v({},t,{zoom:Math.floor(t.zoom)}),super.evaluate(e,t,i,r)}}(th.paint.properties["line-width"].specification);function rh(e,t){return t>0?t+2*e:e}ih.useIntegerZoom=!0;const nh=So([{name:"a_pos_offset",components:4,type:"Int16"},{name:"a_tex_size",components:4,type:"Uint16"},{name:"a_pixeloffset",components:4,type:"Int16"},{name:"a_z_tile_anchor",components:4,type:"Int16"}],4),oh=So([{name:"a_projected_pos",components:3,type:"Float32"}],4);So([{name:"a_fade_opacity",components:1,type:"Uint32"}],4);const sh=So([{name:"a_placed",components:2,type:"Uint8"},{name:"a_shift",components:2,type:"Float32"}]),ah=So([{name:"a_size_scale",components:1,type:"Float32"},{name:"a_padding",components:2,type:"Float32"}]);So([{type:"Int16",name:"projectedAnchorX"},{type:"Int16",name:"projectedAnchorY"},{type:"Int16",name:"projectedAnchorZ"},{type:"Int16",name:"tileAnchorX"},{type:"Int16",name:"tileAnchorY"},{type:"Float32",name:"x1"},{type:"Float32",name:"y1"},{type:"Float32",name:"x2"},{type:"Float32",name:"y2"},{type:"Int16",name:"padding"},{type:"Uint32",name:"featureIndex"},{type:"Uint16",name:"sourceLayerIndex"},{type:"Uint16",name:"bucketIndex"}]);const lh=So([{name:"a_pos",components:3,type:"Int16"},{name:"a_anchor_pos",components:2,type:"Int16"},{name:"a_extrude",components:2,type:"Int16"}],4),ch=So([{name:"a_pos_2f",components:2,type:"Float32"},{name:"a_radius",components:1,type:"Float32"},{name:"a_flags",components:2,type:"Int16"}],4);So([{name:"triangle",components:3,type:"Uint16"}]),So([{type:"Int16",name:"projectedAnchorX"},{type:"Int16",name:"projectedAnchorY"},{type:"Int16",name:"projectedAnchorZ"},{type:"Float32",name:"tileAnchorX"},{type:"Float32",name:"tileAnchorY"},{type:"Uint16",name:"glyphStartIndex"},{type:"Uint16",name:"numGlyphs"},{type:"Uint32",name:"vertexStartIndex"},{type:"Uint32",name:"lineStartIndex"},{type:"Uint32",name:"lineLength"},{type:"Uint16",name:"segment"},{type:"Uint16",name:"lowerSize"},{type:"Uint16",name:"upperSize"},{type:"Float32",name:"lineOffsetX"},{type:"Float32",name:"lineOffsetY"},{type:"Uint8",name:"writingMode"},{type:"Uint8",name:"placedOrientation"},{type:"Uint8",name:"hidden"},{type:"Uint32",name:"crossTileID"},{type:"Int16",name:"associatedIconIndex"},{type:"Uint8",name:"flipState"}]),So([{type:"Int16",name:"projectedAnchorX"},{type:"Int16",name:"projectedAnchorY"},{type:"Int16",name:"projectedAnchorZ"},{type:"Float32",name:"tileAnchorX"},{type:"Float32",name:"tileAnchorY"},{type:"Int16",name:"rightJustifiedTextSymbolIndex"},{type:"Int16",name:"centerJustifiedTextSymbolIndex"},{type:"Int16",name:"leftJustifiedTextSymbolIndex"},{type:"Int16",name:"verticalPlacedTextSymbolIndex"},{type:"Int16",name:"placedIconSymbolIndex"},{type:"Int16",name:"verticalPlacedIconSymbolIndex"},{type:"Uint16",name:"key"},{type:"Uint16",name:"textBoxStartIndex"},{type:"Uint16",name:"textBoxEndIndex"},{type:"Uint16",name:"verticalTextBoxStartIndex"},{type:"Uint16",name:"verticalTextBoxEndIndex"},{type:"Uint16",name:"iconBoxStartIndex"},{type:"Uint16",name:"iconBoxEndIndex"},{type:"Uint16",name:"verticalIconBoxStartIndex"},{type:"Uint16",name:"verticalIconBoxEndIndex"},{type:"Uint16",name:"featureIndex"},{type:"Uint16",name:"numHorizontalGlyphVertices"},{type:"Uint16",name:"numVerticalGlyphVertices"},{type:"Uint16",name:"numIconVertices"},{type:"Uint16",name:"numVerticalIconVertices"},{type:"Uint16",name:"useRuntimeCollisionCircles"},{type:"Uint32",name:"crossTileID"},{type:"Float32",components:2,name:"textOffset"},{type:"Float32",name:"collisionCircleDiameter"}]),So([{type:"Float32",name:"offsetX"}]),So([{type:"Int16",name:"x"},{type:"Int16",name:"y"},{type:"Int16",name:"tileUnitDistanceFromAnchor"}]);var hh=24;const uh=128;function dh(e,t){const{expression:i}=t;if("constant"===i.kind)return{kind:"constant",layoutSize:i.evaluate(new oo(e+1))};if("source"===i.kind)return{kind:"source"};{const{zoomStops:t,interpolationType:r}=i;let n=0;for(;n<t.length&&t[n]<=e;)n++;n=Math.max(0,n-1);let o=n;for(;o<t.length&&t[o]<e+1;)o++;o=Math.min(t.length-1,o);const s=t[n],a=t[o];return"composite"===i.kind?{kind:"composite",minZoom:s,maxZoom:a,interpolationType:r}:{kind:"camera",minZoom:s,maxZoom:a,minSize:i.evaluate(new oo(s)),maxSize:i.evaluate(new oo(a)),interpolationType:r}}}function ph(e,{uSize:t,uSizeT:i},{lowerSize:r,upperSize:n}){return"source"===e.kind?r/uh:"composite"===e.kind?ii(r/uh,n/uh,i):t}function fh(e,t){let i=0,r=0;if("constant"===e.kind)r=e.layoutSize;else if("source"!==e.kind){const{interpolationType:n,minZoom:o,maxZoom:s}=e,a=n?m(bi.interpolationFactor(n,t,o,s),0,1):0;"camera"===e.kind?r=ii(e.minSize,e.maxSize,a):i=a}return{uSizeT:i,uSize:r}}var mh=Object.freeze({__proto__:null,getSizeData:dh,evaluateSizeForFeature:ph,evaluateSizeForZoom:fh,SIZE_PACK_FACTOR:uh});function _h(e,t,i){return e.sections.forEach((e=>{e.text=function(e,t,i){const r=t.layout.get("text-transform").evaluate(i,{});return"uppercase"===r?e=e.toLocaleUpperCase():"lowercase"===r&&(e=e.toLocaleLowerCase()),no.applyArabicShaping&&(e=no.applyArabicShaping(e)),e}(e.text,t,i)})),e}const gh={"!":"︕","#":"#",$:"$","%":"%","&":"&","(":"︵",")":"︶","*":"*","+":"+",",":"︐","-":"︲",".":"・","/":"/",":":"︓",";":"︔","<":"︿","=":"=",">":"﹀","?":"︖","@":"@","[":"﹇","\\":"\","]":"﹈","^":"^",_:"︳","`":"`","{":"︷","|":"―","}":"︸","~":"~","¢":"¢","£":"£","¥":"¥","¦":"¦","¬":"¬","¯":" ̄","–":"︲","—":"︱","‘":"﹃","’":"﹄","“":"﹁","”":"﹂","…":"︙","‧":"・","₩":"₩","、":"︑","。":"︒","〈":"︿","〉":"﹀","《":"︽","》":"︾","「":"﹁","」":"﹂","『":"﹃","』":"﹄","【":"︻","】":"︼","〔":"︹","〕":"︺","〖":"︗","〗":"︘","!":"︕","(":"︵",")":"︶",",":"︐","-":"︲",".":"・",":":"︓",";":"︔","<":"︿",">":"﹀","?":"︖","[":"﹇","]":"﹈","_":"︳","{":"︷","|":"―","}":"︸","⦅":"︵","⦆":"︶","。":"︒","「":"﹁","」":"﹂"};function yh(e){return"︶"===e||"﹈"===e||"︸"===e||"﹄"===e||"﹂"===e||"︾"===e||"︼"===e||"︺"===e||"︘"===e||"﹀"===e||"︐"===e||"︓"===e||"︔"===e||"`"===e||" ̄"===e||"︑"===e||"︒"===e}function xh(e){return"︵"===e||"﹇"===e||"︷"===e||"﹃"===e||"﹁"===e||"︽"===e||"︻"===e||"︹"===e||"︗"===e||"︿"===e}var vh=function(e,t,i,r,n){var o,s,a=8*n-r-1,l=(1<<a)-1,c=l>>1,h=-7,u=i?n-1:0,d=i?-1:1,p=e[t+u];for(u+=d,o=p&(1<<-h)-1,p>>=-h,h+=a;h>0;o=256*o+e[t+u],u+=d,h-=8);for(s=o&(1<<-h)-1,o>>=-h,h+=r;h>0;s=256*s+e[t+u],u+=d,h-=8);if(0===o)o=1-c;else{if(o===l)return s?NaN:1/0*(p?-1:1);s+=Math.pow(2,r),o-=c}return(p?-1:1)*s*Math.pow(2,o-r)},bh=function(e,t,i,r,n,o){var s,a,l,c=8*o-n-1,h=(1<<c)-1,u=h>>1,d=23===n?Math.pow(2,-24)-Math.pow(2,-77):0,p=r?0:o-1,f=r?1:-1,m=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,s=h):(s=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-s))<1&&(s--,l*=2),(t+=s+u>=1?d/l:d*Math.pow(2,1-u))*l>=2&&(s++,l/=2),s+u>=h?(a=0,s=h):s+u>=1?(a=(t*l-1)*Math.pow(2,n),s+=u):(a=t*Math.pow(2,u-1)*Math.pow(2,n),s=0));n>=8;e[i+p]=255&a,p+=f,a/=256,n-=8);for(s=s<<n|a,c+=n;c>0;e[i+p]=255&s,p+=f,s/=256,c-=8);e[i+p-f]|=128*m},wh=Th;function Th(e){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(e)?e:new Uint8Array(e||0),this.pos=0,this.type=0,this.length=this.buf.length}Th.Varint=0,Th.Fixed64=1,Th.Bytes=2,Th.Fixed32=5;var Eh=4294967296,Sh=1/Eh,Ih="undefined"==typeof TextDecoder?null:new TextDecoder("utf8");function Mh(e){return e.type===Th.Bytes?e.readVarint()+e.pos:e.pos+1}function Ah(e,t,i){return i?4294967296*t+(e>>>0):4294967296*(t>>>0)+(e>>>0)}function Ch(e,t,i){var r=t<=16383?1:t<=2097151?2:t<=268435455?3:Math.floor(Math.log(t)/(7*Math.LN2));i.realloc(r);for(var n=i.pos-1;n>=e;n--)i.buf[n+r]=i.buf[n]}function zh(e,t){for(var i=0;i<e.length;i++)t.writeVarint(e[i])}function kh(e,t){for(var i=0;i<e.length;i++)t.writeSVarint(e[i])}function Dh(e,t){for(var i=0;i<e.length;i++)t.writeFloat(e[i])}function Ph(e,t){for(var i=0;i<e.length;i++)t.writeDouble(e[i])}function Lh(e,t){for(var i=0;i<e.length;i++)t.writeBoolean(e[i])}function Bh(e,t){for(var i=0;i<e.length;i++)t.writeFixed32(e[i])}function Rh(e,t){for(var i=0;i<e.length;i++)t.writeSFixed32(e[i])}function Fh(e,t){for(var i=0;i<e.length;i++)t.writeFixed64(e[i])}function Oh(e,t){for(var i=0;i<e.length;i++)t.writeSFixed64(e[i])}function Uh(e,t){return(e[t]|e[t+1]<<8|e[t+2]<<16)+16777216*e[t+3]}function Vh(e,t,i){e[i]=t,e[i+1]=t>>>8,e[i+2]=t>>>16,e[i+3]=t>>>24}function jh(e,t){return(e[t]|e[t+1]<<8|e[t+2]<<16)+(e[t+3]<<24)}function Nh(e,t,i){t.glyphs=[],1===e&&i.readMessage(Gh,t)}function Gh(e,t,i){if(3===e){const{id:e,bitmap:r,width:n,height:o,left:s,top:a,advance:l}=i.readMessage(Zh,{});t.glyphs.push({id:e,bitmap:new Cl({width:n+6,height:o+6},r),metrics:{width:n,height:o,left:s,top:a,advance:l}})}else 4===e?t.ascender=i.readSVarint():5===e&&(t.descender=i.readSVarint())}function Zh(e,t,i){1===e?t.id=i.readVarint():2===e?t.bitmap=i.readBytes():3===e?t.width=i.readVarint():4===e?t.height=i.readVarint():5===e?t.left=i.readSVarint():6===e?t.top=i.readSVarint():7===e&&(t.advance=i.readVarint())}function $h(e){let t=0,i=0;for(const r of e)t+=r.w*r.h,i=Math.max(i,r.w);e.sort(((e,t)=>t.h-e.h));const r=[{x:0,y:0,w:Math.max(Math.ceil(Math.sqrt(t/.95)),i),h:1/0}];let n=0,o=0;for(const t of e)for(let e=r.length-1;e>=0;e--){const i=r[e];if(!(t.w>i.w||t.h>i.h)){if(t.x=i.x,t.y=i.y,o=Math.max(o,t.y+t.h),n=Math.max(n,t.x+t.w),t.w===i.w&&t.h===i.h){const t=r.pop();e<r.length&&(r[e]=t)}else t.h===i.h?(i.x+=t.w,i.w-=t.w):t.w===i.w?(i.y+=t.h,i.h-=t.h):(r.push({x:i.x+t.w,y:i.y,w:i.w-t.w,h:t.h}),i.y+=t.h,i.h-=t.h);break}}return{w:n,h:o,fill:t/(n*o)||0}}Th.prototype={destroy:function(){this.buf=null},readFields:function(e,t,i){for(i=i||this.length;this.pos<i;){var r=this.readVarint(),n=r>>3,o=this.pos;this.type=7&r,e(n,t,this),this.pos===o&&this.skip(r)}return t},readMessage:function(e,t){return this.readFields(e,t,this.readVarint()+this.pos)},readFixed32:function(){var e=Uh(this.buf,this.pos);return this.pos+=4,e},readSFixed32:function(){var e=jh(this.buf,this.pos);return this.pos+=4,e},readFixed64:function(){var e=Uh(this.buf,this.pos)+Uh(this.buf,this.pos+4)*Eh;return this.pos+=8,e},readSFixed64:function(){var e=Uh(this.buf,this.pos)+jh(this.buf,this.pos+4)*Eh;return this.pos+=8,e},readFloat:function(){var e=vh(this.buf,this.pos,!0,23,4);return this.pos+=4,e},readDouble:function(){var e=vh(this.buf,this.pos,!0,52,8);return this.pos+=8,e},readVarint:function(e){var t,i,r=this.buf;return t=127&(i=r[this.pos++]),i<128?t:(t|=(127&(i=r[this.pos++]))<<7,i<128?t:(t|=(127&(i=r[this.pos++]))<<14,i<128?t:(t|=(127&(i=r[this.pos++]))<<21,i<128?t:function(e,t,i){var r,n,o=i.buf;if(r=(112&(n=o[i.pos++]))>>4,n<128)return Ah(e,r,t);if(r|=(127&(n=o[i.pos++]))<<3,n<128)return Ah(e,r,t);if(r|=(127&(n=o[i.pos++]))<<10,n<128)return Ah(e,r,t);if(r|=(127&(n=o[i.pos++]))<<17,n<128)return Ah(e,r,t);if(r|=(127&(n=o[i.pos++]))<<24,n<128)return Ah(e,r,t);if(r|=(1&(n=o[i.pos++]))<<31,n<128)return Ah(e,r,t);throw new Error("Expected varint not more than 10 bytes")}(t|=(15&(i=r[this.pos]))<<28,e,this))))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var e=this.readVarint();return e%2==1?(e+1)/-2:e/2},readBoolean:function(){return Boolean(this.readVarint())},readString:function(){var e=this.readVarint()+this.pos,t=this.pos;return this.pos=e,e-t>=12&&Ih?function(e,t,i){return Ih.decode(e.subarray(t,i))}(this.buf,t,e):function(e,t,i){for(var r="",n=t;n<i;){var o,s,a,l=e[n],c=null,h=l>239?4:l>223?3:l>191?2:1;if(n+h>i)break;1===h?l<128&&(c=l):2===h?128==(192&(o=e[n+1]))&&(c=(31&l)<<6|63&o)<=127&&(c=null):3===h?(s=e[n+2],128==(192&(o=e[n+1]))&&128==(192&s)&&((c=(15&l)<<12|(63&o)<<6|63&s)<=2047||c>=55296&&c<=57343)&&(c=null)):4===h&&(s=e[n+2],a=e[n+3],128==(192&(o=e[n+1]))&&128==(192&s)&&128==(192&a)&&((c=(15&l)<<18|(63&o)<<12|(63&s)<<6|63&a)<=65535||c>=1114112)&&(c=null)),null===c?(c=65533,h=1):c>65535&&(c-=65536,r+=String.fromCharCode(c>>>10&1023|55296),c=56320|1023&c),r+=String.fromCharCode(c),n+=h}return r}(this.buf,t,e)},readBytes:function(){var e=this.readVarint()+this.pos,t=this.buf.subarray(this.pos,e);return this.pos=e,t},readPackedVarint:function(e,t){if(this.type!==Th.Bytes)return e.push(this.readVarint(t));var i=Mh(this);for(e=e||[];this.pos<i;)e.push(this.readVarint(t));return e},readPackedSVarint:function(e){if(this.type!==Th.Bytes)return e.push(this.readSVarint());var t=Mh(this);for(e=e||[];this.pos<t;)e.push(this.readSVarint());return e},readPackedBoolean:function(e){if(this.type!==Th.Bytes)return e.push(this.readBoolean());var t=Mh(this);for(e=e||[];this.pos<t;)e.push(this.readBoolean());return e},readPackedFloat:function(e){if(this.type!==Th.Bytes)return e.push(this.readFloat());var t=Mh(this);for(e=e||[];this.pos<t;)e.push(this.readFloat());return e},readPackedDouble:function(e){if(this.type!==Th.Bytes)return e.push(this.readDouble());var t=Mh(this);for(e=e||[];this.pos<t;)e.push(this.readDouble());return e},readPackedFixed32:function(e){if(this.type!==Th.Bytes)return e.push(this.readFixed32());var t=Mh(this);for(e=e||[];this.pos<t;)e.push(this.readFixed32());return e},readPackedSFixed32:function(e){if(this.type!==Th.Bytes)return e.push(this.readSFixed32());var t=Mh(this);for(e=e||[];this.pos<t;)e.push(this.readSFixed32());return e},readPackedFixed64:function(e){if(this.type!==Th.Bytes)return e.push(this.readFixed64());var t=Mh(this);for(e=e||[];this.pos<t;)e.push(this.readFixed64());return e},readPackedSFixed64:function(e){if(this.type!==Th.Bytes)return e.push(this.readSFixed64());var t=Mh(this);for(e=e||[];this.pos<t;)e.push(this.readSFixed64());return e},skip:function(e){var t=7&e;if(t===Th.Varint)for(;this.buf[this.pos++]>127;);else if(t===Th.Bytes)this.pos=this.readVarint()+this.pos;else if(t===Th.Fixed32)this.pos+=4;else{if(t!==Th.Fixed64)throw new Error("Unimplemented type: "+t);this.pos+=8}},writeTag:function(e,t){this.writeVarint(e<<3|t)},realloc:function(e){for(var t=this.length||16;t<this.pos+e;)t*=2;if(t!==this.length){var i=new Uint8Array(t);i.set(this.buf),this.buf=i,this.length=t}},finish:function(){return this.length=this.pos,this.pos=0,this.buf.subarray(0,this.length)},writeFixed32:function(e){this.realloc(4),Vh(this.buf,e,this.pos),this.pos+=4},writeSFixed32:function(e){this.realloc(4),Vh(this.buf,e,this.pos),this.pos+=4},writeFixed64:function(e){this.realloc(8),Vh(this.buf,-1&e,this.pos),Vh(this.buf,Math.floor(e*Sh),this.pos+4),this.pos+=8},writeSFixed64:function(e){this.realloc(8),Vh(this.buf,-1&e,this.pos),Vh(this.buf,Math.floor(e*Sh),this.pos+4),this.pos+=8},writeVarint:function(e){(e=+e||0)>268435455||e<0?function(e,t){var i,r;if(e>=0?(i=e%4294967296|0,r=e/4294967296|0):(r=~(-e/4294967296),4294967295^(i=~(-e%4294967296))?i=i+1|0:(i=0,r=r+1|0)),e>=0x10000000000000000||e<-0x10000000000000000)throw new Error("Given varint doesn't fit into 10 bytes");t.realloc(10),function(e,t,i){i.buf[i.pos++]=127&e|128,e>>>=7,i.buf[i.pos++]=127&e|128,e>>>=7,i.buf[i.pos++]=127&e|128,e>>>=7,i.buf[i.pos++]=127&e|128,i.buf[i.pos]=127&(e>>>=7)}(i,0,t),function(e,t){var i=(7&e)<<4;t.buf[t.pos++]|=i|((e>>>=3)?128:0),e&&(t.buf[t.pos++]=127&e|((e>>>=7)?128:0),e&&(t.buf[t.pos++]=127&e|((e>>>=7)?128:0),e&&(t.buf[t.pos++]=127&e|((e>>>=7)?128:0),e&&(t.buf[t.pos++]=127&e|((e>>>=7)?128:0),e&&(t.buf[t.pos++]=127&e)))))}(r,t)}(e,this):(this.realloc(4),this.buf[this.pos++]=127&e|(e>127?128:0),e<=127||(this.buf[this.pos++]=127&(e>>>=7)|(e>127?128:0),e<=127||(this.buf[this.pos++]=127&(e>>>=7)|(e>127?128:0),e<=127||(this.buf[this.pos++]=e>>>7&127))))},writeSVarint:function(e){this.writeVarint(e<0?2*-e-1:2*e)},writeBoolean:function(e){this.writeVarint(Boolean(e))},writeString:function(e){e=String(e),this.realloc(4*e.length),this.pos++;var t=this.pos;this.pos=function(e,t,i){for(var r,n,o=0;o<t.length;o++){if((r=t.charCodeAt(o))>55295&&r<57344){if(!n){r>56319||o+1===t.length?(e[i++]=239,e[i++]=191,e[i++]=189):n=r;continue}if(r<56320){e[i++]=239,e[i++]=191,e[i++]=189,n=r;continue}r=n-55296<<10|r-56320|65536,n=null}else n&&(e[i++]=239,e[i++]=191,e[i++]=189,n=null);r<128?e[i++]=r:(r<2048?e[i++]=r>>6|192:(r<65536?e[i++]=r>>12|224:(e[i++]=r>>18|240,e[i++]=r>>12&63|128),e[i++]=r>>6&63|128),e[i++]=63&r|128)}return i}(this.buf,e,this.pos);var i=this.pos-t;i>=128&&Ch(t,i,this),this.pos=t-1,this.writeVarint(i),this.pos+=i},writeFloat:function(e){this.realloc(4),bh(this.buf,e,this.pos,!0,23,4),this.pos+=4},writeDouble:function(e){this.realloc(8),bh(this.buf,e,this.pos,!0,52,8),this.pos+=8},writeBytes:function(e){var t=e.length;this.writeVarint(t),this.realloc(t);for(var i=0;i<t;i++)this.buf[this.pos++]=e[i]},writeRawMessage:function(e,t){this.pos++;var i=this.pos;e(t,this);var r=this.pos-i;r>=128&&Ch(i,r,this),this.pos=i-1,this.writeVarint(r),this.pos+=r},writeMessage:function(e,t,i){this.writeTag(e,Th.Bytes),this.writeRawMessage(t,i)},writePackedVarint:function(e,t){t.length&&this.writeMessage(e,zh,t)},writePackedSVarint:function(e,t){t.length&&this.writeMessage(e,kh,t)},writePackedBoolean:function(e,t){t.length&&this.writeMessage(e,Lh,t)},writePackedFloat:function(e,t){t.length&&this.writeMessage(e,Dh,t)},writePackedDouble:function(e,t){t.length&&this.writeMessage(e,Ph,t)},writePackedFixed32:function(e,t){t.length&&this.writeMessage(e,Bh,t)},writePackedSFixed32:function(e,t){t.length&&this.writeMessage(e,Rh,t)},writePackedFixed64:function(e,t){t.length&&this.writeMessage(e,Fh,t)},writePackedSFixed64:function(e,t){t.length&&this.writeMessage(e,Oh,t)},writeBytesField:function(e,t){this.writeTag(e,Th.Bytes),this.writeBytes(t)},writeFixed32Field:function(e,t){this.writeTag(e,Th.Fixed32),this.writeFixed32(t)},writeSFixed32Field:function(e,t){this.writeTag(e,Th.Fixed32),this.writeSFixed32(t)},writeFixed64Field:function(e,t){this.writeTag(e,Th.Fixed64),this.writeFixed64(t)},writeSFixed64Field:function(e,t){this.writeTag(e,Th.Fixed64),this.writeSFixed64(t)},writeVarintField:function(e,t){this.writeTag(e,Th.Varint),this.writeVarint(t)},writeSVarintField:function(e,t){this.writeTag(e,Th.Varint),this.writeSVarint(t)},writeStringField:function(e,t){this.writeTag(e,Th.Bytes),this.writeString(t)},writeFloatField:function(e,t){this.writeTag(e,Th.Fixed32),this.writeFloat(t)},writeDoubleField:function(e,t){this.writeTag(e,Th.Fixed64),this.writeDouble(t)},writeBooleanField:function(e,t){this.writeVarintField(e,Boolean(t))}};class qh{constructor(e,{pixelRatio:t,version:i,stretchX:r,stretchY:n,content:o}){this.paddedRect=e,this.pixelRatio=t,this.stretchX=r,this.stretchY=n,this.content=o,this.version=i}get tl(){return[this.paddedRect.x+1,this.paddedRect.y+1]}get br(){return[this.paddedRect.x+this.paddedRect.w-1,this.paddedRect.y+this.paddedRect.h-1]}get displaySize(){return[(this.paddedRect.w-2)/this.pixelRatio,(this.paddedRect.h-2)/this.pixelRatio]}}class Xh{constructor(e,t){const i={},r={};this.haveRenderCallbacks=[];const n=[];this.addImages(e,i,n),this.addImages(t,r,n);const{w:o,h:s}=$h(n),a=new zl({width:o||1,height:s||1});for(const t in e){const r=e[t],n=i[t].paddedRect;zl.copy(r.data,a,{x:0,y:0},{x:n.x+1,y:n.y+1},r.data)}for(const e in t){const i=t[e],n=r[e].paddedRect,o=n.x+1,s=n.y+1,l=i.data.width,c=i.data.height;zl.copy(i.data,a,{x:0,y:0},{x:o,y:s},i.data),zl.copy(i.data,a,{x:0,y:c-1},{x:o,y:s-1},{width:l,height:1}),zl.copy(i.data,a,{x:0,y:0},{x:o,y:s+c},{width:l,height:1}),zl.copy(i.data,a,{x:l-1,y:0},{x:o-1,y:s},{width:1,height:c}),zl.copy(i.data,a,{x:0,y:0},{x:o+l,y:s},{width:1,height:c})}this.image=a,this.iconPositions=i,this.patternPositions=r}addImages(e,t,i){for(const r in e){const n=e[r],o={x:0,y:0,w:n.data.width+2,h:n.data.height+2};i.push(o),t[r]=new qh(o,n),n.hasRenderCallback&&this.haveRenderCallbacks.push(r)}}patchUpdatedImages(e,t){this.haveRenderCallbacks=this.haveRenderCallbacks.filter((t=>e.hasImage(t))),e.dispatchRenderCallbacks(this.haveRenderCallbacks);for(const i in e.updatedImages)this.patchUpdatedImage(this.iconPositions[i],e.getImage(i),t),this.patchUpdatedImage(this.patternPositions[i],e.getImage(i),t)}patchUpdatedImage(e,t,i){if(!e||!t)return;if(e.version===t.version)return;e.version=t.version;const[r,n]=e.tl;i.update(t.data,void 0,{x:r,y:n})}}sn(qh,"ImagePosition"),sn(Xh,"ImageAtlas");const Wh={horizontal:1,vertical:2,horizontalOnly:3};class Hh{constructor(){this.scale=1,this.fontStack="",this.imageName=null}static forText(e,t){const i=new Hh;return i.scale=e||1,i.fontStack=t,i}static forImage(e){const t=new Hh;return t.imageName=e,t}}class Yh{constructor(){this.text="",this.sectionIndex=[],this.sections=[],this.imageSectionID=null}static fromFeature(e,t){const i=new Yh;for(let r=0;r<e.sections.length;r++){const n=e.sections[r];n.image?i.addImageSection(n):i.addTextSection(n,t)}return i}length(){return this.text.length}getSection(e){return this.sections[this.sectionIndex[e]]}getSections(){return this.sections}getSectionIndex(e){return this.sectionIndex[e]}getCharCode(e){return this.text.charCodeAt(e)}verticalizePunctuation(e){this.text=function(e,t){let i="";for(let r=0;r<e.length;r++){const n=e.charCodeAt(r+1)||null,o=e.charCodeAt(r-1)||null;i+=!t&&(n&&Gn(n)&&!gh[e[r+1]]||o&&Gn(o)&&!gh[e[r-1]])||!gh[e[r]]?e[r]:gh[e[r]]}return i}(this.text,e)}trim(){let e=0;for(let t=0;t<this.text.length&&Jh[this.text.charCodeAt(t)];t++)e++;let t=this.text.length;for(let i=this.text.length-1;i>=0&&i>=e&&Jh[this.text.charCodeAt(i)];i--)t--;this.text=this.text.substring(e,t),this.sectionIndex=this.sectionIndex.slice(e,t)}substring(e,t){const i=new Yh;return i.text=this.text.substring(e,t),i.sectionIndex=this.sectionIndex.slice(e,t),i.sections=this.sections,i}toString(){return this.text}getMaxScale(){return this.sectionIndex.reduce(((e,t)=>Math.max(e,this.sections[t].scale)),0)}addTextSection(e,t){this.text+=e.text,this.sections.push(Hh.forText(e.scale,e.fontStack||t));const i=this.sections.length-1;for(let t=0;t<e.text.length;++t)this.sectionIndex.push(i)}addImageSection(e){const t=e.image?e.image.name:"";if(0===t.length)return void D("Can't add FormattedSection with an empty image.");const i=this.getNextImageSectionCharCode();i?(this.text+=String.fromCharCode(i),this.sections.push(Hh.forImage(t)),this.sectionIndex.push(this.sections.length-1)):D("Reached maximum number of images 6401")}getNextImageSectionCharCode(){return this.imageSectionID?this.imageSectionID>=63743?null:++this.imageSectionID:(this.imageSectionID=57344,this.imageSectionID)}}function Kh(e,t,i,r,n,o,s,a,l,c,h,u,d,p,f,m){const _=Yh.fromFeature(e,n);let g;u===Wh.vertical&&_.verticalizePunctuation(d);const{processBidirectionalText:y,processStyledBidirectionalText:x}=no;if(y&&1===_.sections.length){g=[];const e=y(_.toString(),ou(_,c,o,t,r,p,f));for(const t of e){const e=new Yh;e.text=t,e.sections=_.sections;for(let i=0;i<t.length;i++)e.sectionIndex.push(0);g.push(e)}}else if(x){g=[];const e=x(_.text,_.sectionIndex,ou(_,c,o,t,r,p,f));for(const t of e){const e=new Yh;e.text=t[0],e.sectionIndex=t[1],e.sections=_.sections,g.push(e)}}else g=function(e,t){const i=[],r=e.text;let n=0;for(const r of t)i.push(e.substring(n,r)),n=r;return n<r.length&&i.push(e.substring(n,r.length)),i}(_,ou(_,c,o,t,r,p,f));const v=[],b={positionedLines:v,text:_.toString(),top:h[1],bottom:h[1],left:h[0],right:h[0],writingMode:u,iconsInText:!1,verticalizable:!1,hasBaseline:!1};return function(e,t,i,r,n,o,s,a,l,c,h,u){let d=0,p=0,f=0;const m="right"===a?1:"left"===a?0:.5;let _=!1;for(const e of n){const i=e.getSections();for(const e of i){if(e.imageName)continue;const i=t[e.fontStack];if(i&&(_=void 0!==i.ascender&&void 0!==i.descender,!_))break}if(!_)break}let g=0;for(const s of n){s.trim();const n=s.getMaxScale(),a=(n-1)*hh,x={positionedGlyphs:[],lineOffset:0};e.positionedLines[g]=x;const v=x.positionedGlyphs;let b=0;if(!s.length()){p+=o,++g;continue}let w=0,T=0;for(let o=0;o<s.length();o++){const a=s.getSection(o),f=s.getSectionIndex(o),m=s.getCharCode(o);let g=a.scale,x=null,E=null,S=null,I=hh,M=0;const A=!(l===Wh.horizontal||!h&&!Nn(m)||h&&(Jh[m]||(y=m,dn(y)||pn(y)||fn(y)||Pn(y)||Fn(y))));if(a.imageName){const t=r[a.imageName];if(!t)continue;S=a.imageName,e.iconsInText=e.iconsInText||!0,E=t.paddedRect;const i=t.displaySize;g=g*hh/u,x={width:i[0],height:i[1],left:1,top:-3,advance:A?i[1]:i[0],localGlyph:!1},M=_?-x.height*g:n*hh-17-i[1]*g,I=x.advance;const o=(A?i[0]:i[1])*g-hh*n;o>0&&o>b&&(b=o)}else{const e=i[a.fontStack];if(!e)continue;e[m]&&(E=e[m]);const r=t[a.fontStack];if(!r)continue;const o=r.glyphs[m];if(!o)continue;if(x=o.metrics,I=8203!==m?hh:0,_){const e=void 0!==r.ascender?Math.abs(r.ascender):0,t=void 0!==r.descender?Math.abs(r.descender):0,i=(e+t)*g;w<i&&(w=i,T=(e-t)/2*g),M=-e*g}else M=(n-g)*hh-17}A?(e.verticalizable=!0,v.push({glyph:m,imageName:S,x:d,y:p+M,vertical:A,scale:g,localGlyph:x.localGlyph,fontStack:a.fontStack,sectionIndex:f,metrics:x,rect:E}),d+=I*g+c):(v.push({glyph:m,imageName:S,x:d,y:p+M,vertical:A,scale:g,localGlyph:x.localGlyph,fontStack:a.fontStack,sectionIndex:f,metrics:x,rect:E}),d+=x.advance*g+c)}0!==v.length&&(f=Math.max(d-c,f),_?au(v,m,b,T,o*n/2):au(v,m,b,0,o/2)),d=0;const E=o*n+b;x.lineOffset=Math.max(b,a),p+=E,++g}var y;const x=p,{horizontalAlign:v,verticalAlign:b}=su(s);(function(e,t,i,r,n,o){const s=(t-i)*n,a=-o*r;for(const t of e)for(const e of t.positionedGlyphs)e.x+=s,e.y+=a})(e.positionedLines,m,v,b,f,x),e.top+=-b*x,e.bottom=e.top+x,e.left+=-v*f,e.right=e.left+f,e.hasBaseline=_}(b,t,i,r,g,s,a,l,u,c,d,m),!function(e){for(const t of e)if(0!==t.positionedGlyphs.length)return!1;return!0}(v)&&b}const Jh={9:!0,10:!0,11:!0,12:!0,13:!0,32:!0},Qh={10:!0,32:!0,38:!0,40:!0,41:!0,43:!0,45:!0,47:!0,173:!0,183:!0,8203:!0,8208:!0,8211:!0,8231:!0};function eu(e,t,i,r,n,o){if(t.imageName){const e=r[t.imageName];return e?e.displaySize[0]*t.scale*hh/o+n:0}{const r=i[t.fontStack],o=r&&r.glyphs[e];return o?o.metrics.advance*t.scale+n:0}}function tu(e,t,i,r){const n=Math.pow(e-t,2);return r?e<t?n/2:2*n:n+Math.abs(i)*i}function iu(e,t,i){let r=0;return 10===e&&(r-=1e4),i&&(r+=150),40!==e&&65288!==e||(r+=50),41!==t&&65289!==t||(r+=50),r}function ru(e,t,i,r,n,o){let s=null,a=tu(t,i,n,o);for(const e of r){const r=tu(t-e.x,i,n,o)+e.badness;r<=a&&(s=e,a=r)}return{index:e,x:t,priorBreak:s,badness:a}}function nu(e){return e?nu(e.priorBreak).concat(e.index):[]}function ou(e,t,i,r,n,o,s){if("point"!==o)return[];if(!e)return[];const a=[],l=function(e,t,i,r,n,o){let s=0;for(let i=0;i<e.length();i++){const a=e.getSection(i);s+=eu(e.getCharCode(i),a,r,n,t,o)}return s/Math.max(1,Math.ceil(s/i))}(e,t,i,r,n,s),c=e.text.indexOf("​")>=0;let h=0;for(let i=0;i<e.length();i++){const o=e.getSection(i),d=e.getCharCode(i);if(Jh[d]||(h+=eu(d,o,r,n,t,s)),i<e.length()-1){const t=!((u=d)<11904||!(wn(u)||bn(u)||Bn(u)||Dn(u)||In(u)||mn(u)||Tn(u)||yn(u)||Mn(u)||An(u)||Sn(u)||On(u)||xn(u)||gn(u)||_n(u)||En(u)||vn(u)||Ln(u)||zn(u)||Cn(u)));(Qh[d]||t||o.imageName)&&a.push(ru(i+1,h,l,a,iu(d,e.getCharCode(i+1),t&&c),!1))}}var u;return nu(ru(e.length(),h,l,a,0,!0))}function su(e){let t=.5,i=.5;switch(e){case"right":case"top-right":case"bottom-right":t=1;break;case"left":case"top-left":case"bottom-left":t=0}switch(e){case"bottom":case"bottom-right":case"bottom-left":i=1;break;case"top":case"top-right":case"top-left":i=0}return{horizontalAlign:t,verticalAlign:i}}function au(e,t,i,r,n){if(!(t||i||r||n))return;const o=e.length-1,s=e[o],a=(s.x+s.metrics.advance*s.scale)*t;for(let t=0;t<=o;t++)e[t].x-=a,e[t].y+=i+r+n}function lu(e,t,i){const{horizontalAlign:r,verticalAlign:n}=su(i),o=t[0]-e.displaySize[0]*r,s=t[1]-e.displaySize[1]*n;return{image:e,top:s,bottom:s+e.displaySize[1],left:o,right:o+e.displaySize[0]}}function cu(e,t,i,r,n,o){const s=e.image;let a;if(s.content){const e=s.content,t=s.pixelRatio||1;a=[e[0]/t,e[1]/t,s.displaySize[0]-e[2]/t,s.displaySize[1]-e[3]/t]}const l=t.left*o,c=t.right*o;let h,u,d,p;"width"===i||"both"===i?(p=n[0]+l-r[3],u=n[0]+c+r[1]):(p=n[0]+(l+c-s.displaySize[0])/2,u=p+s.displaySize[0]);const f=t.top*o,m=t.bottom*o;return"height"===i||"both"===i?(h=n[1]+f-r[0],d=n[1]+m+r[2]):(h=n[1]+(f+m-s.displaySize[1])/2,d=h+s.displaySize[1]),{image:s,top:h,right:u,bottom:d,left:p,collisionPadding:a}}class hu extends n{constructor(e,t,i,r,n){super(e,t),this.angle=r,this.z=i,void 0!==n&&(this.segment=n)}clone(){return new hu(this.x,this.y,this.z,this.angle,this.segment)}}function uu(e,t,i,r,n){if(void 0===t.segment)return!0;let o=t,s=t.segment+1,a=0;for(;a>-i/2;){if(s--,s<0)return!1;a-=e[s].dist(o),o=e[s]}a+=e[s].dist(e[s+1]),s++;const l=[];let c=0;for(;a<i/2;){const t=e[s],i=e[s+1];if(!i)return!1;let o=e[s-1].angleTo(t)-t.angleTo(i);for(o=Math.abs((o+3*Math.PI)%(2*Math.PI)-Math.PI),l.push({distance:a,angleDelta:o}),c+=o;a-l[0].distance>r;)c-=l.shift().angleDelta;if(c>n)return!1;s++,a+=t.dist(i)}return!0}function du(e){let t=0;for(let i=0;i<e.length-1;i++)t+=e[i].dist(e[i+1]);return t}function pu(e,t,i){return e?.6*t*i:0}function fu(e,t){return Math.max(e?e.right-e.left:0,t?t.right-t.left:0)}function mu(e,t,i,r,n,o){const s=pu(i,n,o),a=fu(i,r)*o;let l=0;const c=du(e)/2;for(let i=0;i<e.length-1;i++){const r=e[i],n=e[i+1],o=r.dist(n);if(l+o>c){const h=(c-l)/o,u=ii(r.x,n.x,h),d=ii(r.y,n.y,h),p=new hu(u,d,0,n.angleTo(r),i);return!s||uu(e,p,a,s,t)?p:void 0}l+=o}}function _u(e,t,i,r,n,o,s,a,l){const c=pu(r,o,s),h=fu(r,n),u=h*s,d=0===e[0].x||e[0].x===l||0===e[0].y||e[0].y===l;return t-u<t/4&&(t=u+t/4),gu(e,d?t/2*a%t:(h/2+2*o)*s*a%t,t,c,i,u,d,!1,l)}function gu(e,t,i,r,n,o,s,a,l){const c=o/2,h=du(e);let u=0,d=t-i,p=[];for(let t=0;t<e.length-1;t++){const s=e[t],a=e[t+1],f=s.dist(a),m=a.angleTo(s);for(;d+i<u+f;){d+=i;const _=(d-u)/f,g=ii(s.x,a.x,_),y=ii(s.y,a.y,_);if(g>=0&&g<l&&y>=0&&y<l&&d-c>=0&&d+c<=h){const i=new hu(g,y,0,m,t);i._round(),r&&!uu(e,i,o,r,n)||p.push(i)}}u+=f}return a||p.length||s||(p=gu(e,u/2,i,r,n,o,s,!0,l)),p}function yu(e,t,i,r,o){const s=[];for(let a=0;a<e.length;a++){const l=e[a];let c;for(let e=0;e<l.length-1;e++){let a=l[e],h=l[e+1];a.x<t&&h.x<t||(a.x<t?a=new n(t,a.y+(t-a.x)/(h.x-a.x)*(h.y-a.y))._round():h.x<t&&(h=new n(t,a.y+(t-a.x)/(h.x-a.x)*(h.y-a.y))._round()),a.y<i&&h.y<i||(a.y<i?a=new n(a.x+(i-a.y)/(h.y-a.y)*(h.x-a.x),i)._round():h.y<i&&(h=new n(a.x+(i-a.y)/(h.y-a.y)*(h.x-a.x),i)._round()),a.x>=r&&h.x>=r||(a.x>=r?a=new n(r,a.y+(r-a.x)/(h.x-a.x)*(h.y-a.y))._round():h.x>=r&&(h=new n(r,a.y+(r-a.x)/(h.x-a.x)*(h.y-a.y))._round()),a.y>=o&&h.y>=o||(a.y>=o?a=new n(a.x+(o-a.y)/(h.y-a.y)*(h.x-a.x),o)._round():h.y>=o&&(h=new n(a.x+(o-a.y)/(h.y-a.y)*(h.x-a.x),o)._round()),c&&a.equals(c[c.length-1])||(c=[a],s.push(c)),c.push(h)))))}}return s}sn(hu,"Anchor");const xu=1e20;function vu(e,t,i,r,n,o,s,a,l){for(let c=t;c<t+r;c++)bu(e,i*o+c,o,n,s,a,l);for(let c=i;c<i+n;c++)bu(e,c*o+t,1,r,s,a,l)}function bu(e,t,i,r,n,o,s){o[0]=0,s[0]=-xu,s[1]=xu,n[0]=e[t];for(let a=1,l=0,c=0;a<r;a++){n[a]=e[t+a*i];const r=a*a;do{const e=o[l];c=(n[a]-n[e]+r-e*e)/(a-e)/2}while(c<=s[l]&&--l>-1);l++,o[l]=a,s[l]=c,s[l+1]=xu}for(let a=0,l=0;a<r;a++){for(;s[l+1]<a;)l++;const r=o[l],c=a-r;e[t+a*i]=n[r]+c*c}}const wu={none:0,ideographs:1,all:2};class Tu{constructor(e,t,i){this.requestManager=e,this.localGlyphMode=t,this.localFontFamily=i,this.entries={},this.localGlyphs={200:{},400:{},500:{},900:{}}}setURL(e){this.url=e}getGlyphs(e,t){const i=[];for(const t in e)for(const r of e[t])i.push({stack:t,id:r});y(i,(({stack:e,id:t},i)=>{let r=this.entries[e];r||(r=this.entries[e]={glyphs:{},requests:{},ranges:{},ascender:void 0,descender:void 0});let n=r.glyphs[t];if(void 0!==n)return void i(null,{stack:e,id:t,glyph:n});if(n=this._tinySDF(r,e,t),n)return r.glyphs[t]=n,void i(null,{stack:e,id:t,glyph:n});const o=Math.floor(t/256);if(256*o>65535)return void i(new Error("glyphs > 65535 not supported"));if(r.ranges[o])return void i(null,{stack:e,id:t,glyph:n});let s=r.requests[o];s||(s=r.requests[o]=[],Tu.loadGlyphRange(e,o,this.url,this.requestManager,((e,t)=>{if(t){r.ascender=t.ascender,r.descender=t.descender;for(const e in t.glyphs)this._doesCharSupportLocalGlyph(+e)||(r.glyphs[+e]=t.glyphs[+e]);r.ranges[o]=!0}for(const i of s)i(e,t);delete r.requests[o]}))),s.push(((r,n)=>{r?i(r):n&&i(null,{stack:e,id:t,glyph:n.glyphs[t]||null})}))}),((e,i)=>{if(e)t(e);else if(i){const e={};for(const{stack:t,id:r,glyph:n}of i)void 0===e[t]&&(e[t]={}),void 0===e[t].glyphs&&(e[t].glyphs={}),e[t].glyphs[r]=n&&{id:n.id,bitmap:n.bitmap.clone(),metrics:n.metrics},e[t].ascender=this.entries[t].ascender,e[t].descender=this.entries[t].descender;t(null,e)}}))}_doesCharSupportLocalGlyph(e){return this.localGlyphMode!==wu.none&&(this.localGlyphMode===wu.all?!!this.localFontFamily:!!this.localFontFamily&&(An(e)||kn(e)||xn(e)||vn(e)||yn(e)))}_tinySDF(e,t,i){const r=this.localFontFamily;if(!r||!this._doesCharSupportLocalGlyph(i))return;let n=e.tinySDF;if(!n){let i="400";/bold/i.test(t)?i="900":/medium/i.test(t)?i="500":/light/i.test(t)&&(i="200"),n=e.tinySDF=new Tu.TinySDF({fontFamily:r,fontWeight:i,fontSize:48,buffer:6,radius:16}),n.fontWeight=i}if(this.localGlyphs[n.fontWeight][i])return this.localGlyphs[n.fontWeight][i];const o=String.fromCharCode(i),{data:s,width:a,height:l,glyphWidth:c,glyphHeight:h,glyphLeft:u,glyphTop:d,glyphAdvance:p}=n.draw(o);return this.localGlyphs[n.fontWeight][i]={id:i,bitmap:new Cl({width:a,height:l},s),metrics:{width:c/2,height:h/2,left:u/2,top:d/2-27,advance:p/2,localGlyph:!0}}}}function Eu(e,t,i,r){const o=[],s=e.image,a=s.pixelRatio,l=s.paddedRect.w-2,c=s.paddedRect.h-2,h=e.right-e.left,u=e.bottom-e.top,d=s.stretchX||[[0,l]],p=s.stretchY||[[0,c]],f=(e,t)=>e+t[1]-t[0],m=d.reduce(f,0),_=p.reduce(f,0),g=l-m,y=c-_;let x=0,v=m,b=0,w=_,T=0,E=g,S=0,I=y;if(s.content&&r){const e=s.content;x=Su(d,0,e[0]),b=Su(p,0,e[1]),v=Su(d,e[0],e[2]),w=Su(p,e[1],e[3]),T=e[0]-x,S=e[1]-b,E=e[2]-e[0]-v,I=e[3]-e[1]-w}const M=(r,o,l,c)=>{const d=Mu(r.stretch-x,v,h,e.left),p=Au(r.fixed-T,E,r.stretch,m),f=Mu(o.stretch-b,w,u,e.top),g=Au(o.fixed-S,I,o.stretch,_),y=Mu(l.stretch-x,v,h,e.left),M=Au(l.fixed-T,E,l.stretch,m),A=Mu(c.stretch-b,w,u,e.top),C=Au(c.fixed-S,I,c.stretch,_),z=new n(d,f),k=new n(y,f),D=new n(y,A),P=new n(d,A),L=new n(p/a,g/a),B=new n(M/a,C/a),R=t*Math.PI/180;if(R){const e=Math.sin(R),t=Math.cos(R),i=[t,-e,e,t];z._matMult(i),k._matMult(i),P._matMult(i),D._matMult(i)}const F=r.stretch+r.fixed,O=o.stretch+o.fixed;return{tl:z,tr:k,bl:P,br:D,tex:{x:s.paddedRect.x+1+F,y:s.paddedRect.y+1+O,w:l.stretch+l.fixed-F,h:c.stretch+c.fixed-O},writingMode:void 0,glyphOffset:[0,0],sectionIndex:0,pixelOffsetTL:L,pixelOffsetBR:B,minFontScaleX:E/a/h,minFontScaleY:I/a/u,isSDF:i}};if(r&&(s.stretchX||s.stretchY)){const e=Iu(d,g,m),t=Iu(p,y,_);for(let i=0;i<e.length-1;i++){const r=e[i],n=e[i+1];for(let e=0;e<t.length-1;e++)o.push(M(r,t[e],n,t[e+1]))}}else o.push(M({fixed:0,stretch:-1},{fixed:0,stretch:-1},{fixed:0,stretch:l+1},{fixed:0,stretch:c+1}));return o}function Su(e,t,i){let r=0;for(const n of e)r+=Math.max(t,Math.min(i,n[1]))-Math.max(t,Math.min(i,n[0]));return r}function Iu(e,t,i){const r=[{fixed:-1,stretch:0}];for(const[t,i]of e){const e=r[r.length-1];r.push({fixed:t-e.stretch,stretch:e.stretch}),r.push({fixed:t-e.stretch,stretch:e.stretch+(i-t)})}return r.push({fixed:t+1,stretch:i}),r}function Mu(e,t,i,r){return e/t*i+r}function Au(e,t,i,r){return e-t*i/r}function Cu(e,t,i,r){const n=t+e.positionedLines[r].lineOffset;return 0===r?i+n/2:i+(n+(t+e.positionedLines[r-1].lineOffset))/2}Tu.loadGlyphRange=function(e,t,i,r,n){const o=256*t,s=o+255,a=r.transformRequest(r.normalizeGlyphsURL(i).replace("{fontstack}",e).replace("{range}",`${o}-${s}`),Te.Glyphs);Me(a,((e,t)=>{if(e)n(e);else if(t){const e={},i=function(e){return new wh(e).readFields(Nh,{})}(t);for(const t of i.glyphs)e[t.id]=t;n(null,{glyphs:e,ascender:i.ascender,descender:i.descender})}}))},Tu.TinySDF=class{constructor({fontSize:e=24,buffer:t=3,radius:i=8,cutoff:r=.25,fontFamily:n="sans-serif",fontWeight:o="normal",fontStyle:s="normal"}){this.buffer=t,this.cutoff=r,this.radius=i;const a=this.size=e+4*t,l=this._createCanvas(a),c=this.ctx=l.getContext("2d",{willReadFrequently:!0});c.font=`${s} ${o} ${e}px ${n}`,c.textBaseline="alphabetic",c.textAlign="left",c.fillStyle="black",this.gridOuter=new Float64Array(a*a),this.gridInner=new Float64Array(a*a),this.f=new Float64Array(a),this.z=new Float64Array(a+1),this.v=new Uint16Array(a)}_createCanvas(e){const t=document.createElement("canvas");return t.width=t.height=e,t}draw(e){const{width:t,actualBoundingBoxAscent:i,actualBoundingBoxDescent:r,actualBoundingBoxLeft:n,actualBoundingBoxRight:o}=this.ctx.measureText(e),s=Math.floor(i),a=Math.min(this.size-this.buffer,Math.ceil(o-n)),l=Math.min(this.size-this.buffer,Math.ceil(i)+Math.ceil(r)),c=a+2*this.buffer,h=l+2*this.buffer,u=c*h,d=new Uint8ClampedArray(u),p={data:d,width:c,height:h,glyphWidth:a,glyphHeight:l,glyphTop:s,glyphLeft:0,glyphAdvance:t};if(0===a||0===l)return p;const{ctx:f,buffer:m,gridInner:_,gridOuter:g}=this;f.clearRect(m,m,a,l),f.fillText(e,m,m+s+1);const y=f.getImageData(m,m,a,l);g.fill(xu,0,u),_.fill(0,0,u);for(let e=0;e<l;e++)for(let t=0;t<a;t++){const i=y.data[4*(e*a+t)+3]/255;if(0===i)continue;const r=(e+m)*c+t+m;if(1===i)g[r]=0,_[r]=xu;else{const e=.5-i;g[r]=e>0?e*e:0,_[r]=e<0?e*e:0}}vu(g,0,0,c,h,c,this.f,this.v,this.z),vu(_,m,m,a,l,c,this.f,this.v,this.z);for(let e=0;e<u;e++){const t=Math.sqrt(g[e])-Math.sqrt(_[e]);d[e]=Math.round(255-255*(t/this.radius+this.cutoff))}return p}};class zu{constructor(e=[],t=ku){if(this.data=e,this.length=this.data.length,this.compare=t,this.length>0)for(let e=(this.length>>1)-1;e>=0;e--)this._down(e)}push(e){this.data.push(e),this.length++,this._up(this.length-1)}pop(){if(0===this.length)return;const e=this.data[0],t=this.data.pop();return this.length--,this.length>0&&(this.data[0]=t,this._down(0)),e}peek(){return this.data[0]}_up(e){const{data:t,compare:i}=this,r=t[e];for(;e>0;){const n=e-1>>1,o=t[n];if(i(r,o)>=0)break;t[e]=o,e=n}t[e]=r}_down(e){const{data:t,compare:i}=this,r=this.length>>1,n=t[e];for(;e<r;){let r=1+(e<<1),o=t[r];const s=r+1;if(s<this.length&&i(t[s],o)<0&&(r=s,o=t[s]),i(o,n)>=0)break;t[e]=o,e=r}t[e]=n}}function ku(e,t){return e<t?-1:e>t?1:0}function Du(e,t=1,i=!1){let r=1/0,o=1/0,s=-1/0,a=-1/0;const l=e[0];for(let e=0;e<l.length;e++){const t=l[e];(!e||t.x<r)&&(r=t.x),(!e||t.y<o)&&(o=t.y),(!e||t.x>s)&&(s=t.x),(!e||t.y>a)&&(a=t.y)}const c=Math.min(s-r,a-o);let h=c/2;const u=new zu([],Pu);if(0===c)return new n(r,o);for(let t=r;t<s;t+=c)for(let i=o;i<a;i+=c)u.push(new Lu(t+h,i+h,h,e));let d=function(e){let t=0,i=0,r=0;const n=e[0];for(let e=0,o=n.length,s=o-1;e<o;s=e++){const o=n[e],a=n[s],l=o.x*a.y-a.x*o.y;i+=(o.x+a.x)*l,r+=(o.y+a.y)*l,t+=3*l}return new Lu(i/t,r/t,0,e)}(e),p=u.length;for(;u.length;){const r=u.pop();(r.d>d.d||!d.d)&&(d=r,i&&console.log("found best %d after %d probes",Math.round(1e4*r.d)/1e4,p)),r.max-d.d<=t||(h=r.h/2,u.push(new Lu(r.p.x-h,r.p.y-h,h,e)),u.push(new Lu(r.p.x+h,r.p.y-h,h,e)),u.push(new Lu(r.p.x-h,r.p.y+h,h,e)),u.push(new Lu(r.p.x+h,r.p.y+h,h,e)),p+=4)}return i&&(console.log(`num probes: ${p}`),console.log(`best distance: ${d.d}`)),d.p}function Pu(e,t){return t.max-e.max}function Lu(e,t,i,r){this.p=new n(e,t),this.h=i,this.d=function(e,t){let i=!1,r=1/0;for(let n=0;n<t.length;n++){const o=t[n];for(let t=0,n=o.length,s=n-1;t<n;s=t++){const n=o[t],a=o[s];n.y>e.y!=a.y>e.y&&e.x<(a.x-n.x)*(e.y-n.y)/(a.y-n.y)+n.x&&(i=!i),r=Math.min(r,Ma(e,n,a))}}return(i?1:-1)*Math.sqrt(r)}(this.p,r),this.max=this.d+this.h*Math.SQRT2}const Bu=Number.POSITIVE_INFINITY,Ru=Math.sqrt(2);function Fu(e,t){return t[1]!==Bu?function(e,t,i){let r=0,n=0;switch(t=Math.abs(t),i=Math.abs(i),e){case"top-right":case"top-left":case"top":n=i-7;break;case"bottom-right":case"bottom-left":case"bottom":n=7-i}switch(e){case"top-right":case"bottom-right":case"right":r=-t;break;case"top-left":case"bottom-left":case"left":r=t}return[r,n]}(e,t[0],t[1]):function(e,t){let i=0,r=0;t<0&&(t=0);const n=t/Ru;switch(e){case"top-right":case"top-left":r=n-7;break;case"bottom-right":case"bottom-left":r=7-n;break;case"bottom":r=7-t;break;case"top":r=t-7}switch(e){case"top-right":case"bottom-right":i=-n;break;case"top-left":case"bottom-left":i=n;break;case"left":i=t;break;case"right":i=-t}return[i,r]}(e,t[0])}function Ou(e,t,i,r,n,o,s,a,l,c){e.createArrays(),e.tilePixelRatio=Ys/(512*e.overscaling),e.compareText={},e.iconsNeedLinear=!1;const h=e.layers[0].layout,u=e.layers[0]._unevaluatedLayout._values,d={};if("composite"===e.textSizeData.kind){const{minZoom:t,maxZoom:i}=e.textSizeData;d.compositeTextSizes=[u["text-size"].possiblyEvaluate(new oo(t),a),u["text-size"].possiblyEvaluate(new oo(i),a)]}if("composite"===e.iconSizeData.kind){const{minZoom:t,maxZoom:i}=e.iconSizeData;d.compositeIconSizes=[u["icon-size"].possiblyEvaluate(new oo(t),a),u["icon-size"].possiblyEvaluate(new oo(i),a)]}d.layoutTextSize=u["text-size"].possiblyEvaluate(new oo(l+1),a),d.layoutIconSize=u["icon-size"].possiblyEvaluate(new oo(l+1),a),d.textMaxSize=u["text-size"].possiblyEvaluate(new oo(18),a);const p="map"===h.get("text-rotation-alignment")&&"point"!==h.get("symbol-placement"),f=h.get("text-size");for(const o of e.features){const l=h.get("text-font").evaluate(o,{},a).join(","),u=f.evaluate(o,{},a),m=d.layoutTextSize.evaluate(o,{},a),_=(d.layoutIconSize.evaluate(o,{},a),{horizontal:{},vertical:void 0}),g=o.text;let y,x=[0,0];if(g){const r=g.toString(),s=h.get("text-letter-spacing").evaluate(o,{},a)*hh,c=h.get("text-line-height").evaluate(o,{},a)*hh,d=Vn(r)?s:0,f=h.get("text-anchor").evaluate(o,{},a),y=h.get("text-variable-anchor");if(!y){const e=h.get("text-radial-offset").evaluate(o,{},a);x=e?Fu(f,[e*hh,Bu]):h.get("text-offset").evaluate(o,{},a).map((e=>e*hh))}let v=p?"center":h.get("text-justify").evaluate(o,{},a);const b=h.get("symbol-placement"),w="point"===b,T="point"===b?h.get("text-max-width").evaluate(o,{},a)*hh:0,E=o=>{e.allowVerticalPlacement&&Un(r)&&(_.vertical=Kh(g,t,i,n,l,T,c,f,o,d,x,Wh.vertical,!0,b,m,u))};if(!p&&y){const e="auto"===v?y.map((e=>Uu(e))):[v];let r=!1;for(let o=0;o<e.length;o++){const s=e[o];if(!_.horizontal[s])if(r)_.horizontal[s]=_.horizontal[0];else{const e=Kh(g,t,i,n,l,T,c,"center",s,d,x,Wh.horizontal,!1,b,m,u);e&&(_.horizontal[s]=e,r=1===e.positionedLines.length)}}E("left")}else{if("auto"===v&&(v=Uu(f)),w||h.get("text-writing-mode").indexOf("horizontal")>=0||!Un(r)){const e=Kh(g,t,i,n,l,T,c,f,v,d,x,Wh.horizontal,!1,b,m,u);e&&(_.horizontal[v]=e)}E("point"===b?"left":v)}}let v=!1;if(o.icon&&o.icon.name){const t=r[o.icon.name];t&&(y=lu(n[o.icon.name],h.get("icon-offset").evaluate(o,{},a),h.get("icon-anchor").evaluate(o,{},a)),v=t.sdf,void 0===e.sdfIcons?e.sdfIcons=t.sdf:e.sdfIcons!==t.sdf&&D("Style sheet warning: Cannot mix SDF and non-SDF icons in one buffer"),(t.pixelRatio!==e.pixelRatio||0!==h.get("icon-rotate").constantOr(1))&&(e.iconsNeedLinear=!0))}const b=Gu(_.horizontal)||_.vertical;e.iconsInText||(e.iconsInText=!!b&&b.iconsInText),(b||y)&&Vu(e,o,_,y,r,d,m,0,x,v,s,a,c)}o&&e.generateCollisionDebugBuffers(l,e.collisionBoxArray)}function Uu(e){switch(e){case"right":case"top-right":case"bottom-right":return"right";case"left":case"top-left":case"bottom-left":return"left"}return"center"}function Vu(e,t,i,r,n,o,s,a,l,h,u,d,p){let f=o.textMaxSize.evaluate(t,{},d);void 0===f&&(f=s);const m=e.layers[0].layout,_=m.get("icon-offset").evaluate(t,{},d),g=Gu(i.horizontal)||i.vertical,y=s/24,x=e.tilePixelRatio*f/24,v=(A=e.overscaling,e.zoom>18&&A>2&&(A>>=1),Math.max(Ys/(512*A),1)*m.get("symbol-spacing")),b=m.get("text-padding")*e.tilePixelRatio,w=m.get("icon-padding")*e.tilePixelRatio,T=c(m.get("text-max-angle")),E="map"===m.get("text-rotation-alignment")&&"point"!==m.get("symbol-placement"),S="map"===m.get("icon-rotation-alignment")&&"point"!==m.get("symbol-placement"),I=m.get("symbol-placement"),M=v/2;var A;const C=m.get("icon-text-fit");let z;r&&"none"!==C&&(e.allowVerticalPlacement&&i.vertical&&(z=cu(r,i.vertical,C,m.get("icon-text-fit-padding"),_,y)),g&&(r=cu(r,g,C,m.get("icon-text-fit-padding"),_,y)));const k=(s,a,c)=>{if(a.x<0||a.x>=Ys||a.y<0||a.y>=Ys)return;const{x:f,y:m,z:g}=p.projectTilePoint(a.x,a.y,c),y=new hu(f,m,g,0,void 0);!function(e,t,i,r,n,o,s,a,l,c,h,u,d,p,f,m,_,g,y,x,v,b,w,T,E){const S=e.addToLineVertexArray(t,r);let I,M,A,C,z,k,P,L=0,B=0,R=0,F=0,O=-1,U=-1;const V={};let j=xs(""),N=0,G=0;if(void 0===l._unevaluatedLayout.getValue("text-radial-offset")?[N,G]=l.layout.get("text-offset").evaluate(v,{},E).map((e=>e*hh)):(N=l.layout.get("text-radial-offset").evaluate(v,{},E)*hh,G=Bu),e.allowVerticalPlacement&&n.vertical){const e=n.vertical;if(f)k=$u(e),a&&(P=$u(a));else{const r=l.layout.get("text-rotate").evaluate(v,{},E)+90;A=Zu(c,i,t,h,u,d,e,p,r,m),a&&(C=Zu(c,i,t,h,u,d,a,g,r))}}if(o){const r=l.layout.get("icon-rotate").evaluate(v,{},E),n="none"!==l.layout.get("icon-text-fit"),s=Eu(o,r,w,n),p=a?Eu(a,r,w,n):void 0;M=Zu(c,i,t,h,u,d,o,g,r),L=4*s.length;const f=e.iconSizeData;let m=null;"source"===f.kind?(m=[uh*l.layout.get("icon-size").evaluate(v,{},E)],m[0]>ju&&D(`${e.layerIds[0]}: Value for "icon-size" is >= 255. Reduce your "icon-size".`)):"composite"===f.kind&&(m=[uh*b.compositeIconSizes[0].evaluate(v,{},E),uh*b.compositeIconSizes[1].evaluate(v,{},E)],(m[0]>ju||m[1]>ju)&&D(`${e.layerIds[0]}: Value for "icon-size" is >= 255. Reduce your "icon-size".`)),e.addSymbols(e.icon,s,m,x,y,v,!1,i,t,S.lineStartIndex,S.lineLength,-1,T,E),O=e.icon.placedSymbolArray.length-1,p&&(B=4*p.length,e.addSymbols(e.icon,p,m,x,y,v,Wh.vertical,i,t,S.lineStartIndex,S.lineLength,-1,T,E),U=e.icon.placedSymbolArray.length-1)}for(const r in n.horizontal){const o=n.horizontal[r];I||(j=xs(o.text),f?z=$u(o):I=Zu(c,i,t,h,u,d,o,p,l.layout.get("text-rotate").evaluate(v,{},E),m));const a=1===o.positionedLines.length;if(R+=Nu(e,i,t,o,s,l,f,v,m,S,n.vertical?Wh.horizontal:Wh.horizontalOnly,a?Object.keys(n.horizontal):[r],V,O,b,T,E),a)break}n.vertical&&(F+=Nu(e,i,t,n.vertical,s,l,f,v,m,S,Wh.vertical,["vertical"],V,U,b,T,E));let Z=-1;const $=(e,t)=>e?Math.max(e,t):t;Z=$(z,Z),Z=$(k,Z),Z=$(P,Z);const q=Z>-1?1:0;e.glyphOffsetArray.length>=ed.MAX_GLYPHS&&D("Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907"),void 0!==v.sortKey&&e.addToSortKeyRanges(e.symbolInstances.length,v.sortKey),e.symbolInstances.emplaceBack(i.x,i.y,i.z,t.x,t.y,V.right>=0?V.right:-1,V.center>=0?V.center:-1,V.left>=0?V.left:-1,V.vertical>=0?V.vertical:-1,O,U,j,void 0!==I?I:e.collisionBoxArray.length,void 0!==I?I+1:e.collisionBoxArray.length,void 0!==A?A:e.collisionBoxArray.length,void 0!==A?A+1:e.collisionBoxArray.length,void 0!==M?M:e.collisionBoxArray.length,void 0!==M?M+1:e.collisionBoxArray.length,C||e.collisionBoxArray.length,C?C+1:e.collisionBoxArray.length,h,R,F,L,B,q,0,N,G,Z)}(e,a,y,s,i,r,n,z,e.layers[0],e.collisionBoxArray,t.index,t.sourceLayerIndex,e.index,b,E,l,0,w,S,_,t,o,h,u,d)};if("line"===I)for(const n of yu(t.geometry,0,0,Ys,Ys)){const t=_u(n,v,T,i.vertical||g,r,24,x,e.overscaling,Ys);for(const i of t){const t=g;t&&qu(e,t.text,M,i)||k(n,i,d)}}else if("line-center"===I){for(const e of t.geometry)if(e.length>1){const t=mu(e,T,i.vertical||g,r,24,x);t&&k(e,t,d)}}else if("Polygon"===t.type)for(const e of fc(t.geometry,0)){const t=Du(e,16);k(e[0],new hu(t.x,t.y,0,0,void 0),d)}else if("LineString"===t.type)for(const e of t.geometry)k(e,new hu(e[0].x,e[0].y,0,0,void 0),d);else if("Point"===t.type)for(const e of t.geometry)for(const t of e)k([t],new hu(t.x,t.y,0,0,void 0),d)}const ju=32640;function Nu(e,t,i,r,o,s,a,l,c,h,u,d,p,f,m,_,g){const y=function(e,t,i,r,o,s,a,l){const c=[];if(0===t.positionedLines.length)return c;const h=r.layout.get("text-rotate").evaluate(s,{})*Math.PI/180,u=function(e){const t=e[0],i=e[1],r=t*i;return r>0?[t,-i]:r<0?[-t,i]:0===t?[i,t]:[i,-t]}(i);let d=Math.abs(t.top-t.bottom);for(const e of t.positionedLines)d-=e.lineOffset;const p=t.positionedLines.length,f=d/p;let m=t.top-i[1];for(let e=0;e<p;++e){const r=t.positionedLines[e];m=Cu(t,f,m,e);for(const e of r.positionedGlyphs){if(!e.rect)continue;const r=e.rect||{};let s=4,d=!0,p=1,f=0;if(e.imageName){const t=a[e.imageName];if(!t)continue;if(t.sdf){D("SDF images are not supported in formatted text and will be ignored.");continue}d=!1,p=t.pixelRatio,s=1/p}const _=(o||l)&&e.vertical,g=e.metrics.advance*e.scale/2,y=e.metrics,x=e.rect;if(null===x)continue;l&&t.verticalizable&&(f=e.imageName?g-e.metrics.width*e.scale/2:0);const v=o?[e.x+g,e.y]:[0,0];let b=[0,0],w=[0,0],T=!1;o||(_?(w=[e.x+g+u[0],e.y+u[1]-f],T=!0):b=[e.x+g+i[0],e.y+i[1]-f]);const E=x.w*e.scale/(p*(e.localGlyph?2:1)),S=x.h*e.scale/(p*(e.localGlyph?2:1));let I,M,A,C;if(_){const t=e.y-m,i=new n(-g,g-t),r=-Math.PI/2,o=new n(...w);I=new n(-g+b[0],b[1]),I._rotateAround(r,i)._add(o),I.x+=-t+g,I.y-=(y.left-s)*e.scale;const a=e.imageName?y.advance*e.scale:hh*e.scale,l=String.fromCharCode(e.glyph);yh(l)?I.x+=(1-s)*e.scale:xh(l)?I.x+=a-y.height*e.scale+(-s-1)*e.scale:I.x+=e.imageName||y.width+2*s===x.w&&y.height+2*s===x.h?(a-S)/2:(a-(y.height+2*s)*e.scale)/2,M=new n(I.x,I.y-E),A=new n(I.x+S,I.y),C=new n(I.x+S,I.y-E)}else{const t=(y.left-s)*e.scale-g+b[0],i=(-y.top-s)*e.scale+b[1],r=t+E,o=i+S;I=new n(t,i),M=new n(r,i),A=new n(t,o),C=new n(r,o)}if(h){let e;e=o?new n(0,0):T?new n(u[0],u[1]):new n(i[0],i[1]),I._rotateAround(h,e),M._rotateAround(h,e),A._rotateAround(h,e),C._rotateAround(h,e)}const z=new n(0,0),k=new n(0,0);c.push({tl:I,tr:M,bl:A,br:C,tex:r,writingMode:t.writingMode,glyphOffset:v,sectionIndex:e.sectionIndex,isSDF:d,pixelOffsetTL:z,pixelOffsetBR:k,minFontScaleX:0,minFontScaleY:0})}}return c}(0,r,c,s,a,l,o,e.allowVerticalPlacement),x=e.textSizeData;let v=null;"source"===x.kind?(v=[uh*s.layout.get("text-size").evaluate(l,{},g)],v[0]>ju&&D(`${e.layerIds[0]}: Value for "text-size" is >= 255. Reduce your "text-size".`)):"composite"===x.kind&&(v=[uh*m.compositeTextSizes[0].evaluate(l,{},g),uh*m.compositeTextSizes[1].evaluate(l,{},g)],(v[0]>ju||v[1]>ju)&&D(`${e.layerIds[0]}: Value for "text-size" is >= 255. Reduce your "text-size".`)),e.addSymbols(e.text,y,v,c,a,l,u,t,i,h.lineStartIndex,h.lineLength,f,_,g);for(const t of d)p[t]=e.text.placedSymbolArray.length-1;return 4*y.length}function Gu(e){for(const t in e)return e[t];return null}function Zu(e,t,i,r,o,s,a,l,h,u){let d=a.top,p=a.bottom,f=a.left,m=a.right;const _=a.collisionPadding;if(_&&(f-=_[0],d-=_[1],m+=_[2],p+=_[3]),h){const e=new n(f,d),t=new n(m,d),i=new n(f,p),r=new n(m,p),o=c(h);let s=new n(0,0);u&&(s=new n(u[0],u[1])),e._rotateAround(o,s),t._rotateAround(o,s),i._rotateAround(o,s),r._rotateAround(o,s),f=Math.min(e.x,t.x,i.x,r.x),m=Math.max(e.x,t.x,i.x,r.x),d=Math.min(e.y,t.y,i.y,r.y),p=Math.max(e.y,t.y,i.y,r.y)}return e.emplaceBack(t.x,t.y,t.z,i.x,i.y,f,d,m,p,l,r,o,s),e.length-1}function $u(e){e.collisionPadding&&(e.top-=e.collisionPadding[1],e.bottom+=e.collisionPadding[3]);const t=e.bottom-e.top;return t>0?Math.max(10,t):null}function qu(e,t,i,r){const n=e.compareText;if(t in n){const e=n[t];for(let t=e.length-1;t>=0;t--)if(r.dist(e[t])<i)return!0}else n[t]=[];return n[t].push(r),!1}const Xu=Pc.VectorTileFeature.types,Wu=[{name:"a_fade_opacity",components:1,type:"Uint8",offset:0}];function Hu(e,t,i,r,n,o,s,a,l,c,h,u,d,p,f,m){const _=h?Math.min(ju,Math.round(h[0])):0,g=h?Math.min(ju,Math.round(h[1])):0;e.emplaceBack(t,i,Math.round(32*s),Math.round(32*a),l,c,(_<<1)+(u?1:0),g,16*d,16*p,256*f,256*m,r,n,o,0)}function Yu(e,t,i){e.emplaceBack(t.x,t.y,i),e.emplaceBack(t.x,t.y,i),e.emplaceBack(t.x,t.y,i),e.emplaceBack(t.x,t.y,i)}function Ku(e){for(const t of e.sections)if(qn(t.text))return!0;return!1}class Ju{constructor(e){this.layoutVertexArray=new Bo,this.indexArray=new No,this.programConfigurations=e,this.segments=new Hs,this.dynamicLayoutVertexArray=new Ro,this.opacityVertexArray=new Fo,this.placedSymbolArray=new ns}isEmpty(){return 0===this.layoutVertexArray.length&&0===this.indexArray.length&&0===this.dynamicLayoutVertexArray.length&&0===this.opacityVertexArray.length}upload(e,t,i,r){this.isEmpty()||(i&&(this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,nh.members),this.indexBuffer=e.createIndexBuffer(this.indexArray,t),this.dynamicLayoutVertexBuffer=e.createVertexBuffer(this.dynamicLayoutVertexArray,oh.members,!0),this.opacityVertexBuffer=e.createVertexBuffer(this.opacityVertexArray,Wu,!0),this.opacityVertexBuffer.itemSize=1),(i||r)&&this.programConfigurations.upload(e))}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.dynamicLayoutVertexBuffer.destroy(),this.opacityVertexBuffer.destroy())}}sn(Ju,"SymbolBuffers");class Qu{constructor(e,t,i){this.layoutVertexArray=new e,this.layoutAttributes=t,this.indexArray=new i,this.segments=new Hs,this.collisionVertexArray=new jo,this.collisionVertexArrayExt=new Ro}upload(e){this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,this.layoutAttributes),this.indexBuffer=e.createIndexBuffer(this.indexArray),this.collisionVertexBuffer=e.createVertexBuffer(this.collisionVertexArray,sh.members,!0),this.collisionVertexBufferExt=e.createVertexBuffer(this.collisionVertexArrayExt,ah.members,!0)}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.segments.destroy(),this.collisionVertexBuffer.destroy(),this.collisionVertexBufferExt.destroy())}}sn(Qu,"CollisionBuffers");class ed{constructor(e){this.collisionBoxArray=e.collisionBoxArray,this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.layerIds=this.layers.map((e=>e.id)),this.index=e.index,this.pixelRatio=e.pixelRatio,this.sourceLayerIndex=e.sourceLayerIndex,this.hasPattern=!1,this.hasRTLText=!1,this.fullyClipped=!1,this.sortKeyRanges=[],this.collisionCircleArray=[],this.placementInvProjMatrix=ja([]),this.placementViewportMatrix=ja([]);const t=this.layers[0]._unevaluatedLayout._values;this.textSizeData=dh(this.zoom,t["text-size"]),this.iconSizeData=dh(this.zoom,t["icon-size"]);const i=this.layers[0].layout,r=i.get("symbol-sort-key"),n=i.get("symbol-z-order");this.canOverlap=i.get("text-allow-overlap")||i.get("icon-allow-overlap")||i.get("text-ignore-placement")||i.get("icon-ignore-placement"),this.sortFeaturesByKey="viewport-y"!==n&&void 0!==r.constantOr(1),this.sortFeaturesByY=("viewport-y"===n||"auto"===n&&!this.sortFeaturesByKey)&&this.canOverlap,this.writingModes=i.get("text-writing-mode").map((e=>Wh[e])),this.stateDependentLayerIds=this.layers.filter((e=>e.isStateDependent())).map((e=>e.id)),this.sourceID=e.sourceID,this.projection=e.projection}createArrays(){this.text=new Ju(new Us(this.layers,this.zoom,(e=>/^text/.test(e)))),this.icon=new Ju(new Us(this.layers,this.zoom,(e=>/^icon/.test(e)))),this.glyphOffsetArray=new as,this.lineVertexArray=new ls,this.symbolInstances=new ss}calculateGlyphDependencies(e,t,i,r,n){for(let i=0;i<e.length;i++)if(t[e.charCodeAt(i)]=!0,r&&n){const r=gh[e.charAt(i)];r&&(t[r.charCodeAt(0)]=!0)}}populate(e,t,i,r){const n=this.layers[0],o=n.layout,s=o.get("text-font"),a=o.get("text-field"),l=o.get("icon-image"),c=("constant"!==a.value.kind||a.value.value instanceof pt&&!a.value.value.isEmpty()||a.value.value.toString().length>0)&&("constant"!==s.value.kind||s.value.value.length>0),h="constant"!==l.value.kind||!!l.value.value||Object.keys(l.parameters).length>0,u=o.get("symbol-sort-key");if(this.features=[],!c&&!h)return;const d=t.iconDependencies,p=t.glyphDependencies,f=t.availableImages,m=new oo(this.zoom);for(const{feature:t,id:a,index:l,sourceLayerIndex:_}of e){const e=n._featureFilter.needGeometry,g=_a(t,e);if(!n._featureFilter.filter(m,g,i))continue;let y,x;if(e||(g.geometry=ma(t,i,r)),c){const e=n.getValueAndResolveTokens("text-field",g,i,f),t=pt.factory(e);Ku(t)&&(this.hasRTLText=!0),(!this.hasRTLText||"unavailable"===io()||this.hasRTLText&&no.isParsed())&&(y=_h(t,n,g))}if(h){const e=n.getValueAndResolveTokens("icon-image",g,i,f);x=e instanceof ft?e:ft.fromString(e)}if(!y&&!x)continue;const v=this.sortFeaturesByKey?u.evaluate(g,{},i):void 0;if(this.features.push({id:a,text:y,icon:x,index:l,sourceLayerIndex:_,geometry:g.geometry,properties:t.properties,type:Xu[t.type],sortKey:v}),x&&(d[x.name]=!0),y){const e=s.evaluate(g,{},i).join(","),t="map"===o.get("text-rotation-alignment")&&"point"!==o.get("symbol-placement");this.allowVerticalPlacement=this.writingModes&&this.writingModes.indexOf(Wh.vertical)>=0;for(const i of y.sections)if(i.image)d[i.image.name]=!0;else{const r=Un(y.toString()),n=i.fontStack||e,o=p[n]=p[n]||{};this.calculateGlyphDependencies(i.text,o,t,this.allowVerticalPlacement,r)}}}"line"===o.get("symbol-placement")&&(this.features=function(e){const t={},i={},r=[];let n=0;function o(t){r.push(e[t]),n++}function s(e,t,n){const o=i[e];return delete i[e],i[t]=o,r[o].geometry[0].pop(),r[o].geometry[0]=r[o].geometry[0].concat(n[0]),o}function a(e,i,n){const o=t[i];return delete t[i],t[e]=o,r[o].geometry[0].shift(),r[o].geometry[0]=n[0].concat(r[o].geometry[0]),o}function l(e,t,i){const r=i?t[0][t[0].length-1]:t[0][0];return`${e}:${r.x}:${r.y}`}for(let c=0;c<e.length;c++){const h=e[c],u=h.geometry,d=h.text?h.text.toString():null;if(!d){o(c);continue}const p=l(d,u),f=l(d,u,!0);if(p in i&&f in t&&i[p]!==t[f]){const e=a(p,f,u),n=s(p,f,r[e].geometry);delete t[p],delete i[f],i[l(d,r[n].geometry,!0)]=n,r[e].geometry=null}else p in i?s(p,f,u):f in t?a(p,f,u):(o(c),t[p]=n-1,i[f]=n-1)}return r.filter((e=>e.geometry))}(this.features)),this.sortFeaturesByKey&&this.features.sort(((e,t)=>e.sortKey-t.sortKey))}update(e,t,i,r){this.stateDependentLayers.length&&(this.text.programConfigurations.updatePaintArrays(e,t,this.layers,i,r),this.icon.programConfigurations.updatePaintArrays(e,t,this.layers,i,r))}isEmpty(){return 0===this.symbolInstances.length&&!this.hasRTLText}uploadPending(){return!this.uploaded||this.text.programConfigurations.needsUpload||this.icon.programConfigurations.needsUpload}upload(e){!this.uploaded&&this.hasDebugData()&&(this.textCollisionBox.upload(e),this.iconCollisionBox.upload(e)),this.text.upload(e,this.sortFeaturesByY,!this.uploaded,this.text.programConfigurations.needsUpload),this.icon.upload(e,this.sortFeaturesByY,!this.uploaded,this.icon.programConfigurations.needsUpload),this.uploaded=!0}destroyDebugData(){this.textCollisionBox.destroy(),this.iconCollisionBox.destroy()}destroy(){this.text.destroy(),this.icon.destroy(),this.hasDebugData()&&this.destroyDebugData()}addToLineVertexArray(e,t){const i=this.lineVertexArray.length,r=e.segment;if(void 0!==r){let i=e.dist(t[r+1]),n=e.dist(t[r]);const o={};for(let e=r+1;e<t.length;e++)o[e]={x:t[e].x,y:t[e].y,tileUnitDistanceFromAnchor:i},e<t.length-1&&(i+=t[e+1].dist(t[e]));for(let e=r||0;e>=0;e--)o[e]={x:t[e].x,y:t[e].y,tileUnitDistanceFromAnchor:n},e>0&&(n+=t[e-1].dist(t[e]));for(let e=0;e<t.length;e++){const t=o[e];this.lineVertexArray.emplaceBack(t.x,t.y,t.tileUnitDistanceFromAnchor)}}return{lineStartIndex:i,lineLength:this.lineVertexArray.length-i}}addSymbols(e,t,i,r,n,o,s,a,l,c,h,u,d,p){const f=e.indexArray,m=e.layoutVertexArray,_=e.segments.prepareSegment(4*t.length,m,f,this.canOverlap?o.sortKey:void 0),g=this.glyphOffsetArray.length,y=_.vertexLength,x=this.allowVerticalPlacement&&s===Wh.vertical?Math.PI/2:0,v=o.text&&o.text.sections;for(let r=0;r<t.length;r++){const{tl:n,tr:s,bl:c,br:h,tex:u,pixelOffsetTL:g,pixelOffsetBR:y,minFontScaleX:b,minFontScaleY:w,glyphOffset:T,isSDF:E,sectionIndex:S}=t[r],I=_.vertexLength,M=T[1];Hu(m,a.x,a.y,a.z,l.x,l.y,n.x,M+n.y,u.x,u.y,i,E,g.x,g.y,b,w),Hu(m,a.x,a.y,a.z,l.x,l.y,s.x,M+s.y,u.x+u.w,u.y,i,E,y.x,g.y,b,w),Hu(m,a.x,a.y,a.z,l.x,l.y,c.x,M+c.y,u.x,u.y+u.h,i,E,g.x,y.y,b,w),Hu(m,a.x,a.y,a.z,l.x,l.y,h.x,M+h.y,u.x+u.w,u.y+u.h,i,E,y.x,y.y,b,w),Yu(e.dynamicLayoutVertexArray,a,x),f.emplaceBack(I,I+1,I+2),f.emplaceBack(I+1,I+2,I+3),_.vertexLength+=4,_.primitiveLength+=2,this.glyphOffsetArray.emplaceBack(T[0]),r!==t.length-1&&S===t[r+1].sectionIndex||e.programConfigurations.populatePaintArrays(m.length,o,o.index,{},d,p,v&&v[S])}e.placedSymbolArray.emplaceBack(a.x,a.y,a.z,l.x,l.y,g,this.glyphOffsetArray.length-g,y,c,h,l.segment,i?i[0]:0,i?i[1]:0,r[0],r[1],s,0,!1,0,u,0)}_commitLayoutVertex(e,t,i,r,n,o,s){e.emplaceBack(t,i,r,n,o,Math.round(s.x),Math.round(s.y))}_addCollisionDebugVertices(e,t,i,r,o,s,a){const l=i.segments.prepareSegment(4,i.layoutVertexArray,i.indexArray),c=l.vertexLength,h=a.tileAnchorX,u=a.tileAnchorY;for(let e=0;e<4;e++)i.collisionVertexArray.emplaceBack(0,0,0,0);i.collisionVertexArrayExt.emplaceBack(t,-e.padding,-e.padding),i.collisionVertexArrayExt.emplaceBack(t,e.padding,-e.padding),i.collisionVertexArrayExt.emplaceBack(t,e.padding,e.padding),i.collisionVertexArrayExt.emplaceBack(t,-e.padding,e.padding),this._commitLayoutVertex(i.layoutVertexArray,r,o,s,h,u,new n(e.x1,e.y1)),this._commitLayoutVertex(i.layoutVertexArray,r,o,s,h,u,new n(e.x2,e.y1)),this._commitLayoutVertex(i.layoutVertexArray,r,o,s,h,u,new n(e.x2,e.y2)),this._commitLayoutVertex(i.layoutVertexArray,r,o,s,h,u,new n(e.x1,e.y2)),l.vertexLength+=4;const d=i.indexArray;d.emplaceBack(c,c+1),d.emplaceBack(c+1,c+2),d.emplaceBack(c+2,c+3),d.emplaceBack(c+3,c),l.primitiveLength+=4}_addTextDebugCollisionBoxes(e,t,i,r,n,o){for(let s=r;s<n;s++){const r=i.get(s),n=this.getSymbolInstanceTextSize(e,o,t,s);this._addCollisionDebugVertices(r,n,this.textCollisionBox,r.projectedAnchorX,r.projectedAnchorY,r.projectedAnchorZ,o)}}_addIconDebugCollisionBoxes(e,t,i,r,n,o){for(let s=r;s<n;s++){const r=i.get(s),n=this.getSymbolInstanceIconSize(e,t,s);this._addCollisionDebugVertices(r,n,this.iconCollisionBox,r.projectedAnchorX,r.projectedAnchorY,r.projectedAnchorZ,o)}}generateCollisionDebugBuffers(e,t){this.hasDebugData()&&this.destroyDebugData(),this.textCollisionBox=new Qu(Uo,lh.members,Ho),this.iconCollisionBox=new Qu(Uo,lh.members,Ho);const i=fh(this.iconSizeData,e),r=fh(this.textSizeData,e);for(let n=0;n<this.symbolInstances.length;n++){const o=this.symbolInstances.get(n);this._addTextDebugCollisionBoxes(r,e,t,o.textBoxStartIndex,o.textBoxEndIndex,o),this._addTextDebugCollisionBoxes(r,e,t,o.verticalTextBoxStartIndex,o.verticalTextBoxEndIndex,o),this._addIconDebugCollisionBoxes(i,e,t,o.iconBoxStartIndex,o.iconBoxEndIndex,o),this._addIconDebugCollisionBoxes(i,e,t,o.verticalIconBoxStartIndex,o.verticalIconBoxEndIndex,o)}}getSymbolInstanceTextSize(e,t,i,r){const n=this.text.placedSymbolArray.get(t.rightJustifiedTextSymbolIndex>=0?t.rightJustifiedTextSymbolIndex:t.centerJustifiedTextSymbolIndex>=0?t.centerJustifiedTextSymbolIndex:t.leftJustifiedTextSymbolIndex>=0?t.leftJustifiedTextSymbolIndex:t.verticalPlacedTextSymbolIndex>=0?t.verticalPlacedTextSymbolIndex:r),o=ph(this.textSizeData,e,n)/hh;return this.tilePixelRatio*o}getSymbolInstanceIconSize(e,t,i){const r=this.icon.placedSymbolArray.get(i),n=ph(this.iconSizeData,e,r);return this.tilePixelRatio*n}_commitDebugCollisionVertexUpdate(e,t,i){e.emplaceBack(t,-i,-i),e.emplaceBack(t,i,-i),e.emplaceBack(t,i,i),e.emplaceBack(t,-i,i)}_updateTextDebugCollisionBoxes(e,t,i,r,n,o){for(let s=r;s<n;s++){const r=i.get(s),n=this.getSymbolInstanceTextSize(e,o,t,s);this._commitDebugCollisionVertexUpdate(this.textCollisionBox.collisionVertexArrayExt,n,r.padding)}}_updateIconDebugCollisionBoxes(e,t,i,r,n){for(let o=r;o<n;o++){const r=i.get(o),n=this.getSymbolInstanceIconSize(e,t,o);this._commitDebugCollisionVertexUpdate(this.iconCollisionBox.collisionVertexArrayExt,n,r.padding)}}updateCollisionDebugBuffers(e,t){if(!this.hasDebugData())return;this.hasTextCollisionBoxData()&&this.textCollisionBox.collisionVertexArrayExt.clear(),this.hasIconCollisionBoxData()&&this.iconCollisionBox.collisionVertexArrayExt.clear();const i=fh(this.iconSizeData,e),r=fh(this.textSizeData,e);for(let n=0;n<this.symbolInstances.length;n++){const o=this.symbolInstances.get(n);this._updateTextDebugCollisionBoxes(r,e,t,o.textBoxStartIndex,o.textBoxEndIndex,o),this._updateTextDebugCollisionBoxes(r,e,t,o.verticalTextBoxStartIndex,o.verticalTextBoxEndIndex,o),this._updateIconDebugCollisionBoxes(i,e,t,o.iconBoxStartIndex,o.iconBoxEndIndex),this._updateIconDebugCollisionBoxes(i,e,t,o.verticalIconBoxStartIndex,o.verticalIconBoxEndIndex)}this.hasTextCollisionBoxData()&&this.textCollisionBox.collisionVertexBufferExt&&this.textCollisionBox.collisionVertexBufferExt.updateData(this.textCollisionBox.collisionVertexArrayExt),this.hasIconCollisionBoxData()&&this.iconCollisionBox.collisionVertexBufferExt&&this.iconCollisionBox.collisionVertexBufferExt.updateData(this.iconCollisionBox.collisionVertexArrayExt)}_deserializeCollisionBoxesForSymbol(e,t,i,r,n,o,s,a,l){const c={};for(let r=t;r<i;r++){const t=e.get(r);c.textBox={x1:t.x1,y1:t.y1,x2:t.x2,y2:t.y2,padding:t.padding,projectedAnchorX:t.projectedAnchorX,projectedAnchorY:t.projectedAnchorY,projectedAnchorZ:t.projectedAnchorZ,tileAnchorX:t.tileAnchorX,tileAnchorY:t.tileAnchorY},c.textFeatureIndex=t.featureIndex;break}for(let t=r;t<n;t++){const i=e.get(t);c.verticalTextBox={x1:i.x1,y1:i.y1,x2:i.x2,y2:i.y2,padding:i.padding,projectedAnchorX:i.projectedAnchorX,projectedAnchorY:i.projectedAnchorY,projectedAnchorZ:i.projectedAnchorZ,tileAnchorX:i.tileAnchorX,tileAnchorY:i.tileAnchorY},c.verticalTextFeatureIndex=i.featureIndex;break}for(let t=o;t<s;t++){const i=e.get(t);c.iconBox={x1:i.x1,y1:i.y1,x2:i.x2,y2:i.y2,padding:i.padding,projectedAnchorX:i.projectedAnchorX,projectedAnchorY:i.projectedAnchorY,projectedAnchorZ:i.projectedAnchorZ,tileAnchorX:i.tileAnchorX,tileAnchorY:i.tileAnchorY},c.iconFeatureIndex=i.featureIndex;break}for(let t=a;t<l;t++){const i=e.get(t);c.verticalIconBox={x1:i.x1,y1:i.y1,x2:i.x2,y2:i.y2,padding:i.padding,projectedAnchorX:i.projectedAnchorX,projectedAnchorY:i.projectedAnchorY,projectedAnchorZ:i.projectedAnchorZ,tileAnchorX:i.tileAnchorX,tileAnchorY:i.tileAnchorY},c.verticalIconFeatureIndex=i.featureIndex;break}return c}deserializeCollisionBoxes(e){this.collisionArrays=[];for(let t=0;t<this.symbolInstances.length;t++){const i=this.symbolInstances.get(t);this.collisionArrays.push(this._deserializeCollisionBoxesForSymbol(e,i.textBoxStartIndex,i.textBoxEndIndex,i.verticalTextBoxStartIndex,i.verticalTextBoxEndIndex,i.iconBoxStartIndex,i.iconBoxEndIndex,i.verticalIconBoxStartIndex,i.verticalIconBoxEndIndex))}}hasTextData(){return this.text.segments.get().length>0}hasIconData(){return this.icon.segments.get().length>0}hasDebugData(){return this.textCollisionBox&&this.iconCollisionBox}hasTextCollisionBoxData(){return this.hasDebugData()&&this.textCollisionBox.segments.get().length>0}hasIconCollisionBoxData(){return this.hasDebugData()&&this.iconCollisionBox.segments.get().length>0}addIndicesForPlacedSymbol(e,t){const i=e.placedSymbolArray.get(t),r=i.vertexStartIndex+4*i.numGlyphs;for(let t=i.vertexStartIndex;t<r;t+=4)e.indexArray.emplaceBack(t,t+1,t+2),e.indexArray.emplaceBack(t+1,t+2,t+3)}getSortedSymbolIndexes(e){if(this.sortedAngle===e&&void 0!==this.symbolInstanceIndexes)return this.symbolInstanceIndexes;const t=Math.sin(e),i=Math.cos(e),r=[],n=[],o=[];for(let e=0;e<this.symbolInstances.length;++e){o.push(e);const s=this.symbolInstances.get(e);r.push(0|Math.round(t*s.tileAnchorX+i*s.tileAnchorY)),n.push(s.featureIndex)}return o.sort(((e,t)=>r[e]-r[t]||n[t]-n[e])),o}addToSortKeyRanges(e,t){const i=this.sortKeyRanges[this.sortKeyRanges.length-1];i&&i.sortKey===t?i.symbolInstanceEnd=e+1:this.sortKeyRanges.push({sortKey:t,symbolInstanceStart:e,symbolInstanceEnd:e+1})}sortFeatures(e){if(this.sortFeaturesByY&&this.sortedAngle!==e&&!(this.text.segments.get().length>1||this.icon.segments.get().length>1)){this.symbolInstanceIndexes=this.getSortedSymbolIndexes(e),this.sortedAngle=e,this.text.indexArray.clear(),this.icon.indexArray.clear(),this.featureSortOrder=[];for(const e of this.symbolInstanceIndexes){const t=this.symbolInstances.get(e);this.featureSortOrder.push(t.featureIndex),[t.rightJustifiedTextSymbolIndex,t.centerJustifiedTextSymbolIndex,t.leftJustifiedTextSymbolIndex].forEach(((e,t,i)=>{e>=0&&i.indexOf(e)===t&&this.addIndicesForPlacedSymbol(this.text,e)})),t.verticalPlacedTextSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.text,t.verticalPlacedTextSymbolIndex),t.placedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,t.placedIconSymbolIndex),t.verticalPlacedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,t.verticalPlacedIconSymbolIndex)}this.text.indexBuffer&&this.text.indexBuffer.updateData(this.text.indexArray),this.icon.indexBuffer&&this.icon.indexBuffer.updateData(this.icon.indexArray)}}}sn(ed,"SymbolBucket",{omit:["layers","collisionBoxArray","features","compareText"]}),ed.MAX_GLYPHS=65535,ed.addDynamicAttributes=Yu;const td=new vo({"symbol-placement":new mo(Ve.layout_symbol["symbol-placement"]),"symbol-spacing":new mo(Ve.layout_symbol["symbol-spacing"]),"symbol-avoid-edges":new mo(Ve.layout_symbol["symbol-avoid-edges"]),"symbol-sort-key":new _o(Ve.layout_symbol["symbol-sort-key"]),"symbol-z-order":new mo(Ve.layout_symbol["symbol-z-order"]),"icon-allow-overlap":new mo(Ve.layout_symbol["icon-allow-overlap"]),"icon-ignore-placement":new mo(Ve.layout_symbol["icon-ignore-placement"]),"icon-optional":new mo(Ve.layout_symbol["icon-optional"]),"icon-rotation-alignment":new mo(Ve.layout_symbol["icon-rotation-alignment"]),"icon-size":new _o(Ve.layout_symbol["icon-size"]),"icon-text-fit":new mo(Ve.layout_symbol["icon-text-fit"]),"icon-text-fit-padding":new mo(Ve.layout_symbol["icon-text-fit-padding"]),"icon-image":new _o(Ve.layout_symbol["icon-image"]),"icon-rotate":new _o(Ve.layout_symbol["icon-rotate"]),"icon-padding":new mo(Ve.layout_symbol["icon-padding"]),"icon-keep-upright":new mo(Ve.layout_symbol["icon-keep-upright"]),"icon-offset":new _o(Ve.layout_symbol["icon-offset"]),"icon-anchor":new _o(Ve.layout_symbol["icon-anchor"]),"icon-pitch-alignment":new mo(Ve.layout_symbol["icon-pitch-alignment"]),"text-pitch-alignment":new mo(Ve.layout_symbol["text-pitch-alignment"]),"text-rotation-alignment":new mo(Ve.layout_symbol["text-rotation-alignment"]),"text-field":new _o(Ve.layout_symbol["text-field"]),"text-font":new _o(Ve.layout_symbol["text-font"]),"text-size":new _o(Ve.layout_symbol["text-size"]),"text-max-width":new _o(Ve.layout_symbol["text-max-width"]),"text-line-height":new _o(Ve.layout_symbol["text-line-height"]),"text-letter-spacing":new _o(Ve.layout_symbol["text-letter-spacing"]),"text-justify":new _o(Ve.layout_symbol["text-justify"]),"text-radial-offset":new _o(Ve.layout_symbol["text-radial-offset"]),"text-variable-anchor":new mo(Ve.layout_symbol["text-variable-anchor"]),"text-anchor":new _o(Ve.layout_symbol["text-anchor"]),"text-max-angle":new mo(Ve.layout_symbol["text-max-angle"]),"text-writing-mode":new mo(Ve.layout_symbol["text-writing-mode"]),"text-rotate":new _o(Ve.layout_symbol["text-rotate"]),"text-padding":new mo(Ve.layout_symbol["text-padding"]),"text-keep-upright":new mo(Ve.layout_symbol["text-keep-upright"]),"text-transform":new _o(Ve.layout_symbol["text-transform"]),"text-offset":new _o(Ve.layout_symbol["text-offset"]),"text-allow-overlap":new mo(Ve.layout_symbol["text-allow-overlap"]),"text-ignore-placement":new mo(Ve.layout_symbol["text-ignore-placement"]),"text-optional":new mo(Ve.layout_symbol["text-optional"])});var id={paint:new vo({"icon-opacity":new _o(Ve.paint_symbol["icon-opacity"]),"icon-color":new _o(Ve.paint_symbol["icon-color"]),"icon-halo-color":new _o(Ve.paint_symbol["icon-halo-color"]),"icon-halo-width":new _o(Ve.paint_symbol["icon-halo-width"]),"icon-halo-blur":new _o(Ve.paint_symbol["icon-halo-blur"]),"icon-translate":new mo(Ve.paint_symbol["icon-translate"]),"icon-translate-anchor":new mo(Ve.paint_symbol["icon-translate-anchor"]),"text-opacity":new _o(Ve.paint_symbol["text-opacity"]),"text-color":new _o(Ve.paint_symbol["text-color"],{runtimeType:Ye,getOverride:e=>e.textColor,hasOverride:e=>!!e.textColor}),"text-halo-color":new _o(Ve.paint_symbol["text-halo-color"]),"text-halo-width":new _o(Ve.paint_symbol["text-halo-width"]),"text-halo-blur":new _o(Ve.paint_symbol["text-halo-blur"]),"text-translate":new mo(Ve.paint_symbol["text-translate"]),"text-translate-anchor":new mo(Ve.paint_symbol["text-translate-anchor"])}),layout:td};class rd{constructor(e){this.type=e.property.overrides?e.property.overrides.runtimeType:qe,this.defaultValue=e}evaluate(e){if(e.formattedSection){const t=this.defaultValue.property.overrides;if(t&&t.hasOverride(e.formattedSection))return t.getOverride(e.formattedSection)}return e.feature&&e.featureState?this.defaultValue.evaluate(e.feature,e.featureState):this.defaultValue.property.specification.default}eachChild(e){this.defaultValue.isConstant()||e(this.defaultValue.value._styleExpression.expression)}outputDefined(){return!1}serialize(){return null}}sn(rd,"FormatSectionOverride",{omit:["defaultValue"]});class nd extends qs{constructor(e){super(e,id)}recalculate(e,t){super.recalculate(e,t),"auto"===this.layout.get("icon-rotation-alignment")&&(this.layout._values["icon-rotation-alignment"]="point"!==this.layout.get("symbol-placement")?"map":"viewport"),"auto"===this.layout.get("text-rotation-alignment")&&(this.layout._values["text-rotation-alignment"]="point"!==this.layout.get("symbol-placement")?"map":"viewport"),"auto"===this.layout.get("text-pitch-alignment")&&(this.layout._values["text-pitch-alignment"]=this.layout.get("text-rotation-alignment")),"auto"===this.layout.get("icon-pitch-alignment")&&(this.layout._values["icon-pitch-alignment"]=this.layout.get("icon-rotation-alignment"));const i=this.layout.get("text-writing-mode");if(i){const e=[];for(const t of i)e.indexOf(t)<0&&e.push(t);this.layout._values["text-writing-mode"]=e}else this.layout._values["text-writing-mode"]="point"===this.layout.get("symbol-placement")?["horizontal"]:["horizontal","vertical"];this._setPaintOverrides()}getValueAndResolveTokens(e,t,i,r){const n=this.layout.get(e).evaluate(t,{},i,r),o=this._unevaluatedLayout._values[e];return o.isDataDriven()||lr(o.value)||!n?n:function(e,t){return t.replace(/{([^{}]+)}/g,((t,i)=>i in e?String(e[i]):""))}(t.properties,n)}createBucket(e){return new ed(e)}queryRadius(){return 0}queryIntersectsFeature(){return!1}_setPaintOverrides(){for(const e of id.paint.overridableProperties){if(!nd.hasPaintOverride(this.layout,e))continue;const t=this.paint.get(e),i=new rd(t),r=new ar(i,t.property.specification);let n=null;n="constant"===t.value.kind||"source"===t.value.kind?new hr("source",r):new ur("composite",r,t.value.zoomStops,t.value._interpolationType),this.paint._values[e]=new po(t.property,n,t.parameters)}}_handleOverridablePaintPropertyUpdate(e,t,i){return!(!this.layout||t.isDataDriven()||i.isDataDriven())&&nd.hasPaintOverride(this.layout,e)}static hasPaintOverride(e,t){const i=e.get("text-field"),r=id.paint.properties[t];let n=!1;const o=e=>{for(const t of e)if(r.overrides&&r.overrides.hasOverride(t))return void(n=!0)};if("constant"===i.value.kind&&i.value.value instanceof pt)o(i.value.value.sections);else if("source"===i.value.kind){const e=t=>{n||(t instanceof xt&&gt(t.value)===et?o(t.value.sections):t instanceof Tt?o(t.sections):t.eachChild(e))},t=i.value;t._styleExpression&&e(t._styleExpression.expression)}return n}getProgramConfiguration(e){return new Os(this,e)}}var od={paint:new vo({"background-color":new mo(Ve.paint_background["background-color"]),"background-pattern":new yo(Ve.paint_background["background-pattern"]),"background-opacity":new mo(Ve.paint_background["background-opacity"])})},sd={paint:new vo({"raster-opacity":new mo(Ve.paint_raster["raster-opacity"]),"raster-hue-rotate":new mo(Ve.paint_raster["raster-hue-rotate"]),"raster-brightness-min":new mo(Ve.paint_raster["raster-brightness-min"]),"raster-brightness-max":new mo(Ve.paint_raster["raster-brightness-max"]),"raster-saturation":new mo(Ve.paint_raster["raster-saturation"]),"raster-contrast":new mo(Ve.paint_raster["raster-contrast"]),"raster-resampling":new mo(Ve.paint_raster["raster-resampling"]),"raster-fade-duration":new mo(Ve.paint_raster["raster-fade-duration"])})};class ad extends qs{constructor(e){super(e,{}),this.implementation=e}is3D(){return"3d"===this.implementation.renderingMode}hasOffscreenPass(){return void 0!==this.implementation.prerender}recalculate(){}updateTransitions(){}hasTransition(){return!1}serialize(){}onAdd(e){this.implementation.onAdd&&this.implementation.onAdd(e,e.painter.context.gl)}onRemove(e){this.implementation.onRemove&&this.implementation.onRemove(e,e.painter.context.gl)}}var ld={paint:new vo({"sky-type":new mo(Ve.paint_sky["sky-type"]),"sky-atmosphere-sun":new mo(Ve.paint_sky["sky-atmosphere-sun"]),"sky-atmosphere-sun-intensity":new mo(Ve.paint_sky["sky-atmosphere-sun-intensity"]),"sky-gradient-center":new mo(Ve.paint_sky["sky-gradient-center"]),"sky-gradient-radius":new mo(Ve.paint_sky["sky-gradient-radius"]),"sky-gradient":new xo(Ve.paint_sky["sky-gradient"]),"sky-atmosphere-halo-color":new mo(Ve.paint_sky["sky-atmosphere-halo-color"]),"sky-atmosphere-color":new mo(Ve.paint_sky["sky-atmosphere-color"]),"sky-opacity":new mo(Ve.paint_sky["sky-opacity"])})};function cd(e,t,i){const r=[0,0,1],n=_l([]);return function(e,t,i){i*=.5;var r=t[0],n=t[1],o=t[2],s=t[3],a=Math.sin(i),l=Math.cos(i);e[0]=r*l-o*a,e[1]=n*l+s*a,e[2]=o*l+r*a,e[3]=s*l-n*a}(n,n,i?-c(e)+Math.PI:c(e)),gl(n,n,-c(t)),cl(r,r,n),ol(r,r)}const hd={circle:class extends qs{constructor(e){super(e,Fa)}createBucket(e){return new xa(e)}queryRadius(e){const t=e;return Da("circle-radius",this,t)+Da("circle-stroke-width",this,t)+Pa(this.paint.get("circle-translate"))}queryIntersectsFeature(e,t,i,r,n,o,s,a){const l=Ba(this.paint.get("circle-translate"),this.paint.get("circle-translate-anchor"),o.angle,e.pixelToTileUnitsFactor),c=this.paint.get("circle-radius").evaluate(t,i)+this.paint.get("circle-stroke-width").evaluate(t,i);return vl(e,r,o,s,a,"map"===this.paint.get("circle-pitch-alignment"),"map"===this.paint.get("circle-pitch-scale"),l,c)}getProgramIds(){return["circle"]}getProgramConfiguration(e){return new Os(this,e)}},heatmap:class extends qs{createBucket(e){return new Sl(e)}constructor(e){super(e,kl),this._updateColorRamp()}_handleSpecialPaintPropertyUpdate(e){"heatmap-color"===e&&this._updateColorRamp()}_updateColorRamp(){this.colorRamp=Dl({expression:this._transitionablePaint._values["heatmap-color"].value.expression,evaluationKey:"heatmapDensity",image:this.colorRamp}),this.colorRampTexture=null}resize(){this.heatmapFbo&&(this.heatmapFbo.destroy(),this.heatmapFbo=null)}queryRadius(e){return Da("heatmap-radius",this,e)}queryIntersectsFeature(e,t,i,r,o,s,a,l){const c=this.paint.get("heatmap-radius").evaluate(t,i);return vl(e,r,s,a,l,!0,!0,new n(0,0),c)}hasOffscreenPass(){return 0!==this.paint.get("heatmap-opacity")&&"none"!==this.visibility}getProgramIds(){return["heatmap","heatmapTexture"]}getProgramConfiguration(e){return new Os(this,e)}},hillshade:class extends qs{constructor(e){super(e,Pl)}hasOffscreenPass(){return 0!==this.paint.get("hillshade-exaggeration")&&"none"!==this.visibility}getProgramIds(){return["hillshade","hillshadePrepare"]}},fill:class extends qs{constructor(e){super(e,vc)}getProgramIds(){const e=this.paint.get("fill-pattern"),t=e&&e.constantOr(1),i=[t?"fillPattern":"fill"];return this.paint.get("fill-antialias")&&i.push(t&&!this.getPaintProperty("fill-outline-color")?"fillOutlinePattern":"fillOutline"),i}getProgramConfiguration(e){return new Os(this,e)}recalculate(e,t){super.recalculate(e,t);const i=this.paint._values["fill-outline-color"];"constant"===i.value.kind&&void 0===i.value.value&&(this.paint._values["fill-outline-color"]=this.paint._values["fill-color"])}createBucket(e){return new yc(e)}queryRadius(){return Pa(this.paint.get("fill-translate"))}queryIntersectsFeature(e,t,i,r,n,o){return!e.queryGeometry.isAboveHorizon&&wa(La(e.tilespaceGeometry,this.paint.get("fill-translate"),this.paint.get("fill-translate-anchor"),o.angle,e.pixelToTileUnitsFactor),r)}isTileClipped(){return!0}},"fill-extrusion":class extends qs{constructor(e){super(e,Nc)}createBucket(e){return new Vc(e)}queryRadius(){return Pa(this.paint.get("fill-extrusion-translate"))}is3D(){return!0}getProgramIds(){return[this.paint.get("fill-extrusion-pattern").constantOr(1)?"fillExtrusionPattern":"fillExtrusion"]}getProgramConfiguration(e){return new Os(this,e)}queryIntersectsFeature(e,t,i,r,o,s,a,l,c){const h=Ba(this.paint.get("fill-extrusion-translate"),this.paint.get("fill-extrusion-translate-anchor"),s.angle,e.pixelToTileUnitsFactor),u=this.paint.get("fill-extrusion-height").evaluate(t,i),d=this.paint.get("fill-extrusion-base").evaluate(t,i),p=[0,0],f=l&&s.elevation,m=s.elevation?s.elevation.exaggeration():1,_=e.tile.getBucket(this);if(f&&_ instanceof Vc){const e=_.centroidVertexArray,t=c+1;if(t<e.length){const i=e.get(t);p[0]=i.a_centroid_pos0,p[1]=i.a_centroid_pos1}}if(0===p[0]&&1===p[1])return!1;const g=function(e,t,i,r,o,s,a,l,c){return s?function(e,t,i,r,n,o,s,a,l){const c=[],h=[],u=[0,0,0,1];for(const d of e){const e=[],p=[];for(const c of d){const h=c.x+r.x,d=c.y+r.y,f=qc(h,d,t,i,o,s,a,l);u[0]=h,u[1]=d,u[2]=f.base,u[3]=1,fl(u,u,n),u[3]=Math.max(u[3],1e-5);const m=$c([u[0]/u[3],u[1]/u[3],u[2]/u[3]]);u[0]=h,u[1]=d,u[2]=f.top,u[3]=1,fl(u,u,n),u[3]=Math.max(u[3],1e-5);const _=$c([u[0]/u[3],u[1]/u[3],u[2]/u[3]]);e.push(m),p.push(_)}c.push(e),h.push(p)}return[c,h]}(e,t,i,r,o,s,a,l,c):function(e,t,i,r,o){const s=[],a=[],l=o[8]*t,c=o[9]*t,h=o[10]*t,u=o[11]*t,d=o[8]*i,p=o[9]*i,f=o[10]*i,m=o[11]*i;for(const t of e){const e=[],i=[];for(const s of t){const t=s.x+r.x,a=s.y+r.y,_=o[0]*t+o[4]*a+o[12],g=o[1]*t+o[5]*a+o[13],y=o[2]*t+o[6]*a+o[14],x=o[3]*t+o[7]*a+o[15],v=_+l,b=g+c,w=y+h,T=Math.max(x+u,1e-5),E=_+d,S=g+p,I=y+f,M=Math.max(x+m,1e-5),A=new n(v/T,b/T);A.z=w/T,e.push(A);const C=new n(E/M,S/M);C.z=I/M,i.push(C)}s.push(e),a.push(i)}return[s,a]}(e,t,i,r,o)}(r,d,u,h,a,f?l:null,p,m,s.center.lat),y=e.queryGeometry;return function(e,t,i){let r=1/0;wa(i,t)&&(r=Zc(i,t[0]));for(let n=0;n<t.length;n++){const o=t[n],s=e[n];for(let e=0;e<o.length-1;e++){const t=o[e],n=[t,o[e+1],s[e+1],s[e],t];va(i,n)&&(r=Math.min(r,Zc(i,n)))}}return r!==1/0&&r}(g[0],g[1],y.isPointQuery()?y.screenBounds:y.screenGeometry)}},line:class extends qs{constructor(e){super(e,th),this.gradientVersion=0}_handleSpecialPaintPropertyUpdate(e){if("line-gradient"===e){const e=this._transitionablePaint._values["line-gradient"].value.expression;this.stepInterpolant=e._styleExpression&&e._styleExpression.expression instanceof ti,this.gradientVersion=(this.gradientVersion+1)%Number.MAX_SAFE_INTEGER}}gradientExpression(){return this._transitionablePaint._values["line-gradient"].value.expression}recalculate(e,t){super.recalculate(e,t),this.paint._values["line-floorwidth"]=ih.possiblyEvaluate(this._transitioningPaint._values["line-width"].value,e)}createBucket(e){return new Qc(e)}getProgramIds(){return[this.paint.get("line-pattern").constantOr(1)?"linePattern":"line"]}getProgramConfiguration(e){return new Os(this,e)}queryRadius(e){const t=e,i=rh(Da("line-width",this,t),Da("line-gap-width",this,t)),r=Da("line-offset",this,t);return i/2+Math.abs(r)+Pa(this.paint.get("line-translate"))}queryIntersectsFeature(e,t,i,r,o,s){if(e.queryGeometry.isAboveHorizon)return!1;const a=La(e.tilespaceGeometry,this.paint.get("line-translate"),this.paint.get("line-translate-anchor"),s.angle,e.pixelToTileUnitsFactor),l=e.pixelToTileUnitsFactor/2*rh(this.paint.get("line-width").evaluate(t,i),this.paint.get("line-gap-width").evaluate(t,i)),c=this.paint.get("line-offset").evaluate(t,i);return c&&(r=function(e,t){const i=[],r=new n(0,0);for(let n=0;n<e.length;n++){const o=e[n],s=[];for(let e=0;e<o.length;e++){const i=o[e-1],n=o[e],a=o[e+1],l=0===e?r:n.sub(i)._unit()._perp(),c=e===o.length-1?r:a.sub(n)._unit()._perp(),h=l._add(c)._unit();h._mult(1/(h.x*c.x+h.y*c.y)),s.push(h._mult(t)._add(n))}i.push(s)}return i}(r,c*e.pixelToTileUnitsFactor)),function(e,t,i){for(let r=0;r<t.length;r++){const n=t[r];if(e.length>=3)for(let t=0;t<n.length;t++)if(Ca(e,n[t]))return!0;if(Ta(e,n,i))return!0}return!1}(a,r,l)}isTileClipped(){return!0}},symbol:nd,background:class extends qs{constructor(e){super(e,od)}getProgramIds(){return[this.paint.get("background-pattern")?"backgroundPattern":"background"]}},raster:class extends qs{constructor(e){super(e,sd)}getProgramIds(){return["raster"]}},sky:class extends qs{constructor(e){super(e,ld),this._updateColorRamp()}_handleSpecialPaintPropertyUpdate(e){"sky-gradient"===e?this._updateColorRamp():"sky-atmosphere-sun"!==e&&"sky-atmosphere-halo-color"!==e&&"sky-atmosphere-color"!==e&&"sky-atmosphere-sun-intensity"!==e||(this._skyboxInvalidated=!0)}_updateColorRamp(){this.colorRamp=Dl({expression:this._transitionablePaint._values["sky-gradient"].value.expression,evaluationKey:"skyRadialProgress"}),this.colorRampTexture&&(this.colorRampTexture.destroy(),this.colorRampTexture=null)}needsSkyboxCapture(e){if(this._skyboxInvalidated||!this.skyboxTexture||!this.skyboxGeometry)return!0;if(!this.paint.get("sky-atmosphere-sun")){const t=e.style.light.properties.get("position");return this._lightPosition.azimuthal!==t.azimuthal||this._lightPosition.polar!==t.polar}return!1}getCenter(e,t){if("atmosphere"===this.paint.get("sky-type")){const i=this.paint.get("sky-atmosphere-sun"),r=!i,n=e.style.light,o=n.properties.get("position");return r&&"viewport"===n.properties.get("anchor")&&D("The sun direction is attached to a light with viewport anchor, lighting may behave unexpectedly."),r?cd(o.azimuthal,90-o.polar,t):cd(i[0],90-i[1],t)}const i=this.paint.get("sky-gradient-center");return cd(i[0],90-i[1],t)}is3D(){return!1}isSky(){return!0}markSkyboxValid(e){this._skyboxInvalidated=!1,this._lightPosition=e.style.light.properties.get("position")}hasOffscreenPass(){return!0}getProgramIds(){const e=this.paint.get("sky-type");return"atmosphere"===e?["skyboxCapture","skybox"]:"gradient"===e?["skyboxGradient"]:null}}};class ud{constructor(e,t,i,r){this.context=e,this.format=i,this.texture=e.gl.createTexture(),this.update(t,r)}update(e,t,i){const{width:r,height:n}=e,{context:o}=this,{gl:a}=o,{HTMLImageElement:l,HTMLCanvasElement:c,HTMLVideoElement:h,ImageData:u,ImageBitmap:d}=s;if(a.bindTexture(a.TEXTURE_2D,this.texture),o.pixelStoreUnpackFlipY.set(!1),o.pixelStoreUnpack.set(1),o.pixelStoreUnpackPremultiplyAlpha.set(this.format===a.RGBA&&(!t||!1!==t.premultiply)),i||this.size&&this.size[0]===r&&this.size[1]===n){const{x:t,y:o}=i||{x:0,y:0};e instanceof l||e instanceof c||e instanceof h||e instanceof u||d&&e instanceof d?a.texSubImage2D(a.TEXTURE_2D,0,t,o,a.RGBA,a.UNSIGNED_BYTE,e):a.texSubImage2D(a.TEXTURE_2D,0,t,o,r,n,a.RGBA,a.UNSIGNED_BYTE,e.data)}else this.size=[r,n],e instanceof l||e instanceof c||e instanceof h||e instanceof u||d&&e instanceof d?a.texImage2D(a.TEXTURE_2D,0,this.format,this.format,a.UNSIGNED_BYTE,e):a.texImage2D(a.TEXTURE_2D,0,this.format,r,n,0,this.format,a.UNSIGNED_BYTE,e.data);this.useMipmap=Boolean(t&&t.useMipmap&&this.isSizePowerOfTwo()),this.useMipmap&&a.generateMipmap(a.TEXTURE_2D)}bind(e,t){const{context:i}=this,{gl:r}=i;r.bindTexture(r.TEXTURE_2D,this.texture),e!==this.filter&&(r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MAG_FILTER,e),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,this.useMipmap?e===r.NEAREST?r.NEAREST_MIPMAP_NEAREST:r.LINEAR_MIPMAP_NEAREST:e),this.filter=e),t!==this.wrap&&(r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_S,t),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_T,t),this.wrap=t)}isSizePowerOfTwo(){return this.size[0]===this.size[1]&&Math.log(this.size[0])/Math.LN2%1==0}destroy(){const{gl:e}=this.context;e.deleteTexture(this.texture),this.texture=null}}class dd{constructor(e,t){this.width=e,this.height=t,this.nextRow=0,this.image=new Cl({width:e,height:t}),this.positions={},this.uploaded=!1}getDash(e,t){const i=this.getKey(e,t);return this.positions[i]}trim(){const e=this.width,t=this.height=E(this.nextRow);this.image.resize({width:e,height:t})}getKey(e,t){return e.join(",")+t}getDashRanges(e,t,i){const r=[];let n=e.length%2==1?-e[e.length-1]*i:0,o=e[0]*i,s=!0;r.push({left:n,right:o,isDash:s,zeroLength:0===e[0]});let a=e[0];for(let t=1;t<e.length;t++){s=!s;const l=e[t];n=a*i,a+=l,o=a*i,r.push({left:n,right:o,isDash:s,zeroLength:0===l})}return r}addRoundDash(e,t,i){const r=t/2;for(let t=-i;t<=i;t++){const n=this.width*(this.nextRow+i+t);let o=0,s=e[o];for(let a=0;a<this.width;a++){a/s.right>1&&(s=e[++o]);const l=Math.abs(a-s.left),c=Math.abs(a-s.right),h=Math.min(l,c);let u;const d=t/i*(r+1);if(s.isDash){const e=r-Math.abs(d);u=Math.sqrt(h*h+e*e)}else u=r-Math.sqrt(h*h+d*d);this.image.data[n+a]=Math.max(0,Math.min(255,u+128))}}}addRegularDash(e,t){for(let t=e.length-1;t>=0;--t){const i=e[t],r=e[t+1];i.zeroLength?e.splice(t,1):r&&r.isDash===i.isDash&&(r.left=i.left,e.splice(t,1))}const i=e[0],r=e[e.length-1];i.isDash===r.isDash&&(i.left=r.left-this.width,r.right=i.right+this.width);const n=this.width*this.nextRow;let o=0,s=e[o];for(let i=0;i<this.width;i++){i/s.right>1&&(s=e[++o]);const r=Math.abs(i-s.left),a=Math.abs(i-s.right),l=Math.min(r,a);this.image.data[n+i]=Math.max(0,Math.min(255,(s.isDash?l:-l)+t+128))}}addDash(e,t){const i=this.getKey(e,t);if(this.positions[i])return this.positions[i];const r="round"===t,n=r?7:0,o=2*n+1;if(this.nextRow+o>this.height)return D("LineAtlas out of space"),null;0===e.length&&e.push(1);let s=0;for(let t=0;t<e.length;t++)e[t]<0&&(D("Negative value is found in line dasharray, replacing values with 0"),e[t]=0),s+=e[t];if(0!==s){const i=this.width/s,o=this.getDashRanges(e,this.width,i);r?this.addRoundDash(o,i,n):this.addRegularDash(o,"square"===t?.5*i:0)}const a=this.nextRow+n;this.nextRow+=o;const l={tl:[a,n],br:[s,0]};return this.positions[i]=l,l}}sn(dd,"LineAtlas");class pd{constructor(e){this._callback=e,this._triggered=!1,"undefined"!=typeof MessageChannel&&(this._channel=new MessageChannel,this._channel.port2.onmessage=()=>{this._triggered=!1,this._callback()})}trigger(){this._triggered||(this._triggered=!0,this._channel?this._channel.port1.postMessage(!0):setTimeout((()=>{this._triggered=!1,this._callback()}),0))}remove(){this._channel=void 0,this._callback=()=>{}}}const fd=s.performance;function md(e){const t=e?e.url.toString():void 0;return fd.getEntriesByName(t)}class _d{constructor(){this.tasks={},this.taskQueue=[],I(["process"],this),this.invoker=new pd(this.process),this.nextId=0}add(e,t){const i=this.nextId++,r=function({type:e,isSymbolTile:t,zoom:i}){return i=i||0,"message"===e?0:"maybePrepare"!==e||t?"parseTile"!==e||t?"parseTile"===e&&t?300-i:"maybePrepare"===e&&t?400-i:500:200-i:100-i}(t);if(0===r){B();try{e()}finally{}return{cancel:()=>{}}}return this.tasks[i]={fn:e,metadata:t,priority:r,id:i},this.taskQueue.push(i),this.invoker.trigger(),{cancel:()=>{delete this.tasks[i]}}}process(){B();try{if(this.taskQueue=this.taskQueue.filter((e=>!!this.tasks[e])),!this.taskQueue.length)return;const e=this.pick();if(null===e)return;const t=this.tasks[e];if(delete this.tasks[e],this.taskQueue.length&&this.invoker.trigger(),!t)return;t.fn()}finally{}}pick(){let e=null,t=1/0;for(let i=0;i<this.taskQueue.length;i++){const r=this.tasks[this.taskQueue[i]];r.priority<t&&(t=r.priority,e=i)}if(null===e)return null;const i=this.taskQueue[e];return this.taskQueue.splice(e,1),i}remove(){this.invoker.remove()}}const gd=So([{type:"Float32",name:"a_globe_pos",components:3},{type:"Float32",name:"a_merc_pos",components:2},{type:"Float32",name:"a_uv",components:2}]),yd=So([{type:"Float32",name:"a_pos",components:3},{type:"Float32",name:"a_uv",components:2}]),{members:xd}=gd,vd=So([{name:"a_pos_3",components:3,type:"Int16"}]);var bd=So([{name:"a_pos",type:"Int16",components:2}]);const wd=Ys/Math.PI/2,Td=-wd,Ed=wd,Sd=[new xl([Td,Td,Td],[Ed,Ed,Ed]),new xl([Td,Td,Td],[0,0,Ed]),new xl([0,Td,Td],[Ed,0,Ed]),new xl([Td,0,Td],[0,Ed,Ed]),new xl([0,0,Td],[Ed,Ed,Ed])];class Id{constructor(e,t,i){this.a=ul([],e,i),this.b=ul([],t,i),this.center=i;const r=ol([],this.a),n=ol([],this.b);this.angle=Math.acos(sl(r,n))}}function Md(e,t){if(0===e.angle)return null;let i;return i=0===e.a[t]?1/e.angle*.5*Math.PI:1/e.angle*Math.atan(e.b[t]/e.a[t]/Math.sin(e.angle)-1/Math.tan(e.angle)),i<0||i>1?null:function(e,t,i,r){const n=Math.sin(i);return e*(Math.sin((1-r)*i)/n)+t*(Math.sin(r*i)/n)}(e.a[t],e.b[t],e.angle,m(i,0,1))+e.center[t]}function Ad(e){if(e.z<=1)return Sd[e.z+2*e.y+e.x];const[t,i]=zd(e),r=[Dd(t[0],t[1]),Dd(t[0],i[1]),Dd(i[0],t[1]),Dd(i[0],i[1])],n=[Ed,Ed,Ed],o=[Td,Td,Td];for(const e of r)n[0]=Math.min(n[0],e[0]),n[1]=Math.min(n[1],e[1]),n[2]=Math.min(n[2],e[2]),o[0]=Math.max(o[0],e[0]),o[1]=Math.max(o[1],e[1]),o[2]=Math.max(o[2],e[2]);return new xl(n,o)}function Cd(e,t,i){const r=t/e.worldSize,n=(e,t)=>{rl(e,e,r),rl(t,t,r)},o=Number.MAX_VALUE,s=[-o,-o,-o],a=[o,o,o],l=Fd(e);if(i.z<=1){const e=Ad(i).getCorners();for(let t=0;t<e.length;t++)ll(e[t],e[t],l),tl(a,a,e[t]),il(s,s,e[t]);return n(a,s),new xl(a,s)}const[h,u]=zd(i),d=new Ks;d.setSouthWest([h[1],u[0]]),d.setNorthEast([u[1],h[0]]);const p=[Dd(d.getSouth(),d.getWest()),Dd(d.getSouth(),d.getEast()),Dd(d.getNorth(),d.getEast()),Dd(d.getNorth(),d.getWest())];for(let e=0;e<p.length;e++)ll(p[e],p[e],l),tl(a,a,p[e]),il(s,s,p[e]);if(d.contains(e.center))return s[2]=0,n(a,s),new xl(a,s);const f=[l[12],l[13],l[14]],_=e.center.lng,g=m(e.center.lat,-85.051129,la),y=[ia(_),ra(g)],x=d.getCenter().lng,v=m(d.getCenter().lat,-85.051129,la),b=[ia(x),ra(v)];let w=new Array(3),T=0;const E=y[0]-b[0],S=y[1]-b[1];if(Math.abs(E)>Math.abs(S))T=E>=0?1:3,w=f;else{T=S>=0?0:2;const e=[l[4],l[5],l[6]];let t;t=S>=0?-Math.sin(c(d.getSouth()))*wd:-Math.sin(c(d.getNorth()))*wd,w=nl(w,f,e,t)}const I=p[T],M=p[(T+1)%4],A=new Id(I,M,w),C=[Md(A,0)||I[0],Md(A,1)||I[1],Md(A,2)||I[2]];return a[2]=Math.min(I[2],M[2]),tl(a,a,C),il(s,s,C),n(a,s),new xl(a,s)}function zd(e){const t=1<<e.z,i=e.x/t,r=(e.x+1)/t,n=(e.y+1)/t;return[[sa(e.y/t),oa(i)],[sa(n),oa(r)]]}function kd(e,t,i,r=wd){return i=c(i),[e*Math.sin(i)*r,-t*r,e*Math.cos(i)*r]}function Dd(e,t,i){return kd(Math.cos(c(e)),Math.sin(c(e)),t,i)}function Pd(e,t,i){const r=Math.pow(2,i.z),n=(e/Ys+i.x)/r;return Dd(sa((t/Ys+i.y)/r),oa(n))}function Ld(e){return 16383/Math.max(...ul([],e.max,e.min))}function Bd(e){const t=ja(new Float64Array(16)),i=Ld(e);var r,n;return Za(t,t,[i,i,i]),Ga(t,t,((r=[])[0]=-(n=e.min)[0],r[1]=-n[1],r[2]=-n[2],r)),t}function Rd(e,t,i,r,n){const o=function(e){const t=Ys/(2*Math.PI);return e/(2*Math.PI)/t}(i),s=[e,t,-i/(2*Math.PI)],a=ja(new Float64Array(16));return Ga(a,a,s),Za(a,a,[o,o,o]),$a(a,a,c(-n)),qa(a,a,c(-r)),a}function Fd(e){const{x:t,y:i}=e.point,{lng:r,lat:n}=e._center;return Rd(t,i,e.worldSize,r,n)}const Od=c(85),Ud=Math.cos(Od),Vd=Math.sin(Od);function jd(e,t,i){var r=2*Math.PI*6378137/256/Math.pow(2,i);return[e*r-2*Math.PI*6378137/2,t*r-2*Math.PI*6378137/2]}class Nd{constructor(e,t,i){this.z=e,this.x=t,this.y=i,this.key=$d(0,e,e,t,i)}equals(e){return this.z===e.z&&this.x===e.x&&this.y===e.y}url(e,t){const i=function(e,t,i){var r=jd(256*e,256*(t=Math.pow(2,i)-t-1),i),n=jd(256*(e+1),256*(t+1),i);return r[0]+","+r[1]+","+n[0]+","+n[1]}(this.x,this.y,this.z),r=function(e,t,i){let r,n="";for(let o=e;o>0;o--)r=1<<o-1,n+=(t&r?1:0)+(i&r?2:0);return n}(this.z,this.x,this.y);return e[(this.x+this.y)%e.length].replace("{prefix}",(this.x%16).toString(16)+(this.y%16).toString(16)).replace("{z}",String(this.z)).replace("{x}",String(this.x)).replace("{y}",String("tms"===t?Math.pow(2,this.z)-this.y-1:this.y)).replace("{quadkey}",r).replace("{bbox-epsg-3857}",i)}toString(){return`${this.z}/${this.x}/${this.y}`}}class Gd{constructor(e,t){this.wrap=e,this.canonical=t,this.key=$d(e,t.z,t.z,t.x,t.y)}}class Zd{constructor(e,t,i,r,n){this.overscaledZ=e,this.wrap=t,this.canonical=new Nd(i,+r,+n),this.key=0===t&&e===i?this.canonical.key:$d(t,e,i,r,n)}equals(e){return this.overscaledZ===e.overscaledZ&&this.wrap===e.wrap&&this.canonical.equals(e.canonical)}scaledTo(e){const t=this.canonical.z-e;return e>this.canonical.z?new Zd(e,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new Zd(e,this.wrap,e,this.canonical.x>>t,this.canonical.y>>t)}calculateScaledKey(e,t=!0){if(this.overscaledZ===e&&t)return this.key;if(e>this.canonical.z)return $d(this.wrap*+t,e,this.canonical.z,this.canonical.x,this.canonical.y);{const i=this.canonical.z-e;return $d(this.wrap*+t,e,e,this.canonical.x>>i,this.canonical.y>>i)}}isChildOf(e){if(e.wrap!==this.wrap)return!1;const t=this.canonical.z-e.canonical.z;return 0===e.overscaledZ||e.overscaledZ<this.overscaledZ&&e.canonical.x===this.canonical.x>>t&&e.canonical.y===this.canonical.y>>t}children(e){if(this.overscaledZ>=e)return[new Zd(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];const t=this.canonical.z+1,i=2*this.canonical.x,r=2*this.canonical.y;return[new Zd(t,this.wrap,t,i,r),new Zd(t,this.wrap,t,i+1,r),new Zd(t,this.wrap,t,i,r+1),new Zd(t,this.wrap,t,i+1,r+1)]}isLessThan(e){return this.wrap<e.wrap||!(this.wrap>e.wrap)&&(this.overscaledZ<e.overscaledZ||!(this.overscaledZ>e.overscaledZ)&&(this.canonical.x<e.canonical.x||!(this.canonical.x>e.canonical.x)&&this.canonical.y<e.canonical.y))}wrapped(){return new Zd(this.overscaledZ,0,this.canonical.z,this.canonical.x,this.canonical.y)}unwrapTo(e){return new Zd(this.overscaledZ,e,this.canonical.z,this.canonical.x,this.canonical.y)}overscaleFactor(){return Math.pow(2,this.overscaledZ-this.canonical.z)}toUnwrapped(){return new Gd(this.wrap,this.canonical)}toString(){return`${this.overscaledZ}/${this.canonical.x}/${this.canonical.y}`}}function $d(e,t,i,r,n){const o=1<<Math.min(i,22);let s=o*(n%o)+r%o;return e&&i<22&&(s+=o*o*((e<0?-2*e-1:2*e)%(1<<2*(22-i)))),16*(32*s+i)+(t-i)}function qd(e,t){if(!t.isReprojectedInTileSpace)return{scale:1<<e.z,x:e.x,y:e.y,x2:e.x+1,y2:e.y+1,projection:t};const i=Math.pow(2,-e.z),r=e.x*i,n=(e.x+1)*i,o=e.y*i,s=(e.y+1)*i,a=oa(r),l=oa(n),c=sa(o),h=sa(s),u=t.project(a,c),d=t.project(l,c),p=t.project(l,h),f=t.project(a,h);let m=Math.min(u.x,d.x,p.x,f.x),_=Math.min(u.y,d.y,p.y,f.y),g=Math.max(u.x,d.x,p.x,f.x),y=Math.max(u.y,d.y,p.y,f.y);const x=i/16;function v(e,i,r,n,o,s){const a=(r+o)/2,l=(n+s)/2,c=t.project(oa(a),sa(l)),h=Math.max(0,m-c.x,_-c.y,c.x-g,c.y-y);m=Math.min(m,c.x),g=Math.max(g,c.x),_=Math.min(_,c.y),y=Math.max(y,c.y),h>x&&(v(e,c,r,n,a,l),v(c,i,a,l,o,s))}v(u,d,r,o,n,o),v(d,p,n,o,n,s),v(p,f,n,s,r,s),v(f,u,r,s,r,o),m-=x,_-=x,g+=x,y+=x;const b=1/Math.max(g-m,y-_);return{scale:b,x:m*b,y:_*b,x2:g*b,y2:y*b,projection:t}}sn(Nd,"CanonicalTileID"),sn(Zd,"OverscaledTileID",{omit:["projMatrix"]});class Xd{constructor(e){this._stringToNumber={},this._numberToString=[];for(let t=0;t<e.length;t++){const i=e[t];this._stringToNumber[i]=t,this._numberToString[t]=i}}encode(e){return this._stringToNumber[e]}decode(e){return this._numberToString[e]}}const Wd=["tile","layer","source","sourceLayer","state"];class Hd{constructor(e,t,i,r,n){this.type="Feature",this._vectorTileFeature=e,this._z=t,this._x=i,this._y=r,this.properties=e.properties,this.id=n}get geometry(){return void 0===this._geometry&&(this._geometry=this._vectorTileFeature.toGeoJSON(this._x,this._y,this._z).geometry),this._geometry}set geometry(e){this._geometry=e}toJSON(){const e={type:"Feature",geometry:this.geometry,properties:this.properties};void 0!==this.id&&(e.id=this.id);for(const t of Wd)void 0!==this[t]&&(e[t]=this[t]);return e}}const Yd=32,Kd=33,Jd=new Uint16Array(8184);for(let e=0;e<2046;e++){let t=e+2,i=0,r=0,n=0,o=0,s=0,a=0;for(1&t?n=o=s=Yd:i=r=a=Yd;(t>>=1)>1;){const e=i+n>>1,l=r+o>>1;1&t?(n=i,o=r,i=s,r=a):(i=n,r=o,n=s,o=a),s=e,a=l}const l=4*e;Jd[l+0]=i,Jd[l+1]=r,Jd[l+2]=n,Jd[l+3]=o}const Qd=new Uint16Array(2178),ep=new Uint8Array(1089),tp=new Uint16Array(1089);function ip(e){return 0===e?-.03125:32===e?.03125:0}var rp=So([{name:"a_pos",type:"Int16",components:2},{name:"a_texture_pos",type:"Int16",components:2}]);const np={type:2,extent:Ys,loadGeometry:()=>[[new n(0,0),new n(8193,0),new n(8193,8193),new n(0,8193),new n(0,0)]]};class op{constructor(e,t,i,r,n){this.tileID=e,this.uid=w(),this.uses=0,this.tileSize=t,this.tileZoom=i,this.buckets={},this.expirationTime=null,this.queryPadding=0,this.hasSymbolBuckets=!1,this.hasRTLText=!1,this.dependencies={},this.isRaster=n,this.expiredRequestCount=0,this.state="loading",r&&r.transform&&(this.projection=r.transform.projection)}registerFadeDuration(e){const t=e+this.timeAdded;t<Z.now()||this.fadeEndTime&&t<this.fadeEndTime||(this.fadeEndTime=t)}wasRequested(){return"errored"===this.state||"loaded"===this.state||"reloading"===this.state}get tileTransform(){return this._tileTransform||(this._tileTransform=qd(this.tileID.canonical,this.projection)),this._tileTransform}loadVectorData(e,t,i){if(this.unloadVectorData(),this.state="loaded",e){e.featureIndex&&(this.latestFeatureIndex=e.featureIndex,e.rawTileData?(this.latestRawTileData=e.rawTileData,this.latestFeatureIndex.rawTileData=e.rawTileData):this.latestRawTileData&&(this.latestFeatureIndex.rawTileData=this.latestRawTileData)),this.collisionBoxArray=e.collisionBoxArray,this.buckets=function(e,t){const i={};if(!t)return i;for(const r of e){const e=r.layerIds.map((e=>t.getLayer(e))).filter(Boolean);if(0!==e.length){r.layers=e,r.stateDependentLayerIds&&(r.stateDependentLayers=r.stateDependentLayerIds.map((t=>e.filter((e=>e.id===t))[0])));for(const t of e)i[t.id]=r}}return i}(e.buckets,t.style),this.hasSymbolBuckets=!1;for(const e in this.buckets){const t=this.buckets[e];if(t instanceof ed){if(this.hasSymbolBuckets=!0,!i)break;t.justReloaded=!0}}if(this.hasRTLText=!1,this.hasSymbolBuckets)for(const e in this.buckets){const t=this.buckets[e];if(t instanceof ed&&t.hasRTLText){this.hasRTLText=!0,no.isLoading()||no.isLoaded()||"deferred"!==io()||ro();break}}this.queryPadding=0;for(const e in this.buckets){const i=this.buckets[e];this.queryPadding=Math.max(this.queryPadding,t.style.getLayer(e).queryRadius(i))}e.imageAtlas&&(this.imageAtlas=e.imageAtlas),e.glyphAtlasImage&&(this.glyphAtlasImage=e.glyphAtlasImage),e.lineAtlas&&(this.lineAtlas=e.lineAtlas)}else this.collisionBoxArray=new is}unloadVectorData(){if(this.hasData()){for(const e in this.buckets)this.buckets[e].destroy();this.buckets={},this.imageAtlas&&(this.imageAtlas=null),this.lineAtlas&&(this.lineAtlas=null),this.imageAtlasTexture&&this.imageAtlasTexture.destroy(),this.glyphAtlasTexture&&this.glyphAtlasTexture.destroy(),this.lineAtlasTexture&&this.lineAtlasTexture.destroy(),this._tileBoundsBuffer&&(this._tileBoundsBuffer.destroy(),this._tileBoundsIndexBuffer.destroy(),this._tileBoundsSegments.destroy(),this._tileBoundsBuffer=null),this._tileDebugBuffer&&(this._tileDebugBuffer.destroy(),this._tileDebugIndexBuffer.destroy(),this._tileDebugSegments.destroy(),this._tileDebugBuffer=null),this._globeTileDebugBorderBuffer&&(this._globeTileDebugBorderBuffer.destroy(),this._globeTileDebugBorderBuffer=null),this._tileDebugTextBuffer&&(this._tileDebugTextBuffer.destroy(),this._tileDebugTextSegments.destroy(),this._tileDebugTextIndexBuffer.destroy(),this._tileDebugTextBuffer=null),this._globeTileDebugTextBuffer&&(this._globeTileDebugTextBuffer.destroy(),this._globeTileDebugTextBuffer=null),this.latestFeatureIndex=null,this.state="unloaded"}}getBucket(e){return this.buckets[e.id]}upload(e){for(const t in this.buckets){const i=this.buckets[t];i.uploadPending()&&i.upload(e)}const t=e.gl;this.imageAtlas&&!this.imageAtlas.uploaded&&(this.imageAtlasTexture=new ud(e,this.imageAtlas.image,t.RGBA),this.imageAtlas.uploaded=!0),this.glyphAtlasImage&&(this.glyphAtlasTexture=new ud(e,this.glyphAtlasImage,t.ALPHA),this.glyphAtlasImage=null),this.lineAtlas&&!this.lineAtlas.uploaded&&(this.lineAtlasTexture=new ud(e,this.lineAtlas.image,t.ALPHA),this.lineAtlas.uploaded=!0)}prepare(e){this.imageAtlas&&this.imageAtlas.patchUpdatedImages(e,this.imageAtlasTexture)}queryRenderedFeatures(e,t,i,r,n,o,s,a){return this.latestFeatureIndex&&this.latestFeatureIndex.rawTileData?this.latestFeatureIndex.query({tileResult:r,pixelPosMatrix:s,transform:o,params:n,tileTransform:this.tileTransform},e,t,i):{}}querySourceFeatures(e,t){const i=this.latestFeatureIndex;if(!i||!i.rawTileData)return;const r=i.loadVTLayers(),n=t?t.sourceLayer:"",o=r._geojsonTileLayer||r[n];if(!o)return;const s=Er(t&&t.filter),{z:a,x:l,y:c}=this.tileID.canonical,h={z:a,x:l,y:c};for(let t=0;t<o.length;t++){const r=o.feature(t);if(s.needGeometry){const e=_a(r,!0);if(!s.filter(new oo(this.tileID.overscaledZ),e,this.tileID.canonical))continue}else if(!s.filter(new oo(this.tileID.overscaledZ),r))continue;const u=i.getId(r,n),d=new Hd(r,a,l,c,u);d.tile=h,e.push(d)}}hasData(){return"loaded"===this.state||"reloading"===this.state||"expired"===this.state}patternsLoaded(){return!!this.imageAtlas&&!!Object.keys(this.imageAtlas.patternPositions).length}setExpiryData(e){const t=this.expirationTime;if(e.cacheControl){const t=R(e.cacheControl);t["max-age"]&&(this.expirationTime=Date.now()+1e3*t["max-age"])}else e.expires&&(this.expirationTime=new Date(e.expires).getTime());if(this.expirationTime){const e=Date.now();let i=!1;if(this.expirationTime>e)i=!1;else if(t)if(this.expirationTime<t)i=!0;else{const r=this.expirationTime-t;r?this.expirationTime=e+Math.max(r,3e4):i=!0}else i=!0;i?(this.expiredRequestCount++,this.state="expired"):this.expiredRequestCount=0}}getExpiryTimeout(){if(this.expirationTime)return this.expiredRequestCount?1e3*(1<<Math.min(this.expiredRequestCount-1,31)):Math.min(this.expirationTime-(new Date).getTime(),Math.pow(2,31)-1)}setFeatureState(e,t){if(!this.latestFeatureIndex||!this.latestFeatureIndex.rawTileData||0===Object.keys(e).length||!t)return;const i=this.latestFeatureIndex.loadVTLayers(),r=t.style.listImages();for(const n in this.buckets){if(!t.style.hasLayer(n))continue;const o=this.buckets[n],s=o.layers[0].sourceLayer||"_geojsonTileLayer",a=i[s],l=e[s];if(!a||!l||0===Object.keys(l).length)continue;if(o.update(l,a,r,this.imageAtlas&&this.imageAtlas.patternPositions||{}),o instanceof Qc||o instanceof yc){const e=t.style._getSourceCache(o.layers[0].source);t._terrain&&t._terrain.enabled&&e&&o.programConfigurations.needsUpload&&t._terrain._clearRenderCacheForTile(e.id,this.tileID)}const c=t&&t.style&&t.style.getLayer(n);c&&(this.queryPadding=Math.max(this.queryPadding,c.queryRadius(o)))}}holdingForFade(){return void 0!==this.symbolFadeHoldUntil}symbolFadeFinished(){return!this.symbolFadeHoldUntil||this.symbolFadeHoldUntil<Z.now()}clearFadeHold(){this.symbolFadeHoldUntil=void 0}setHoldDuration(e){this.symbolFadeHoldUntil=Z.now()+e}setTexture(e,t){const i=t.context,r=i.gl;this.texture=t.getTileTexture(e.width),this.texture?this.texture.update(e,{useMipmap:!0}):(this.texture=new ud(i,e,r.RGBA,{useMipmap:!0}),this.texture.bind(r.LINEAR,r.CLAMP_TO_EDGE),i.extTextureFilterAnisotropic&&r.texParameterf(r.TEXTURE_2D,i.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,i.extTextureFilterAnisotropicMax))}setDependencies(e,t){const i={};for(const e of t)i[e]=!0;this.dependencies[e]=i}hasDependency(e,t){for(const i of e){const e=this.dependencies[i];if(e)for(const i of t)if(e[i])return!0}return!1}clearQueryDebugViz(){}_makeDebugTileBoundsBuffers(e,t){if(!t||"mercator"===t.name||this._tileDebugBuffer)return;const i=ma(np,this.tileID.canonical,this.tileTransform)[0],r=new Mo,n=new Yo;for(let e=0;e<i.length;e++){const{x:t,y:o}=i[e];r.emplaceBack(t,o),n.emplaceBack(e)}n.emplaceBack(0),this._tileDebugIndexBuffer=e.createIndexBuffer(n),this._tileDebugBuffer=e.createVertexBuffer(r,bd.members),this._tileDebugSegments=Hs.simpleSegment(0,0,r.length,n.length)}_makeTileBoundsBuffers(e,t){if(this._tileBoundsBuffer||!t||"mercator"===t.name)return;const i=ma(np,this.tileID.canonical,this.tileTransform)[0];let r,n;if(this.isRaster){const e=function(e,t){const i=qd(e,t),r=Math.pow(2,e.z);for(let n=0;n<Kd;n++)for(let o=0;o<Kd;o++){const s=oa((e.x+(o+ip(o))/Yd)/r),a=sa((e.y+(n+ip(n))/Yd)/r),l=t.project(s,a),c=n*Kd+o;Qd[2*c+0]=Math.round((l.x*i.scale-i.x)*Ys),Qd[2*c+1]=Math.round((l.y*i.scale-i.y)*Ys)}ep.fill(0),tp.fill(0);for(let e=2045;e>=0;e--){const t=4*e,i=Jd[t+0],r=Jd[t+1],n=Jd[t+2],o=Jd[t+3],s=i+n>>1,a=r+o>>1,l=s+a-r,c=a+i-s,h=r*Kd+i,u=o*Kd+n,d=a*Kd+s,p=Math.hypot((Qd[2*h+0]+Qd[2*u+0])/2-Qd[2*d+0],(Qd[2*h+1]+Qd[2*u+1])/2-Qd[2*d+1])>=16;if(ep[d]=ep[d]||(p?1:0),e<1022){const e=(r+c>>1)*Kd+(i+l>>1),t=(o+c>>1)*Kd+(n+l>>1);ep[d]=ep[d]||ep[e]||ep[t]}}const n=new Co,o=new No;let s=0;function a(e,t){const i=t*Kd+e;return 0===tp[i]&&(n.emplaceBack(Qd[2*i+0],Qd[2*i+1],e*Ys/Yd,t*Ys/Yd),tp[i]=++s),tp[i]-1}function l(e,t,i,r,n,s){const c=e+i>>1,h=t+r>>1;if(Math.abs(e-n)+Math.abs(t-s)>1&&ep[h*Kd+c])l(n,s,e,t,c,h),l(i,r,n,s,c,h);else{const l=a(e,t),c=a(i,r),h=a(n,s);o.emplaceBack(l,c,h)}}return l(0,0,Yd,Yd,Yd,0),l(Yd,Yd,0,0,0,Yd),{vertices:n,indices:o}}(this.tileID.canonical,t);r=e.vertices,n=e.indices}else{r=new Co,n=new No;for(const{x:e,y:t}of i)r.emplaceBack(e,t,0,0);const e=Rl(r.int16,void 0,4);for(let t=0;t<e.length;t+=3)n.emplaceBack(e[t],e[t+1],e[t+2])}this._tileBoundsBuffer=e.createVertexBuffer(r,rp.members),this._tileBoundsIndexBuffer=e.createIndexBuffer(n),this._tileBoundsSegments=Hs.simpleSegment(0,0,r.length,n.length)}_makeGlobeTileDebugBuffers(e,t){if(this._globeTileDebugBorderBuffer||this._globeTileDebugTextBuffer||!t||"globe"!==t.name)return;const i=this.tileID.canonical,r=Bd(Ad(i));this._makeGlobeTileDebugBorderBuffer(e,i,r),this._makeGlobeTileDebugTextBuffer(e,i,r)}_makeGlobeTileDebugBorderBuffer(e,t,i){const r=new Mo,n=new Yo,o=new Ao,s=(e,s,a,l,c)=>{const h=(a-e)/(c-1),u=(l-s)/(c-1),d=r.length;for(let a=0;a<c;a++){const l=e+a*h,c=s+a*u;r.emplaceBack(l,c);const p=Pd(l,c,t),f=ll(p,p,i);o.emplaceBack(f[0],f[1],f[2]),n.emplaceBack(d+a)}},a=Ys;s(0,0,a,0,16),s(a,0,a,a,16),s(a,a,0,a,16),s(0,a,0,0,16),this._tileDebugIndexBuffer=e.createIndexBuffer(n),this._tileDebugBuffer=e.createVertexBuffer(r,bd.members),this._globeTileDebugBorderBuffer=e.createVertexBuffer(o,vd.members),this._tileDebugSegments=Hs.simpleSegment(0,0,r.length,n.length)}_makeGlobeTileDebugTextBuffer(e,t,i){const r=new Mo,n=new No,o=new Ao,s=25;n.reserve(32),r.reserve(s),o.reserve(s);const a=(e,t)=>s*e+t;for(let e=0;e<s;e++){const n=2048*e;for(let e=0;e<s;e++){const s=2048*e;r.emplaceBack(s,n);const a=Pd(s,n,t),l=ll(a,a,i);o.emplaceBack(l[0],l[1],l[2])}}for(let e=0;e<4;e++)for(let t=0;t<4;t++){const i=a(e,t),r=a(e,t+1),o=a(e+1,t),s=a(e+1,t+1);n.emplaceBack(i,r,o),n.emplaceBack(o,r,s)}this._tileDebugTextIndexBuffer=e.createIndexBuffer(n),this._tileDebugTextBuffer=e.createVertexBuffer(r,bd.members),this._globeTileDebugTextBuffer=e.createVertexBuffer(o,vd.members),this._tileDebugTextSegments=Hs.simpleSegment(0,0,s,32)}}class sp{constructor(){this.state={},this.stateChanges={},this.deletedStates={}}updateState(e,t,i){const r=String(t);if(this.stateChanges[e]=this.stateChanges[e]||{},this.stateChanges[e][r]=this.stateChanges[e][r]||{},v(this.stateChanges[e][r],i),null===this.deletedStates[e]){this.deletedStates[e]={};for(const t in this.state[e])t!==r&&(this.deletedStates[e][t]=null)}else if(this.deletedStates[e]&&null===this.deletedStates[e][r]){this.deletedStates[e][r]={};for(const t in this.state[e][r])i[t]||(this.deletedStates[e][r][t]=null)}else for(const t in i)this.deletedStates[e]&&this.deletedStates[e][r]&&null===this.deletedStates[e][r][t]&&delete this.deletedStates[e][r][t]}removeFeatureState(e,t,i){if(null===this.deletedStates[e])return;const r=String(t);if(this.deletedStates[e]=this.deletedStates[e]||{},i&&void 0!==t)null!==this.deletedStates[e][r]&&(this.deletedStates[e][r]=this.deletedStates[e][r]||{},this.deletedStates[e][r][i]=null);else if(void 0!==t)if(this.stateChanges[e]&&this.stateChanges[e][r])for(i in this.deletedStates[e][r]={},this.stateChanges[e][r])this.deletedStates[e][r][i]=null;else this.deletedStates[e][r]=null;else this.deletedStates[e]=null}getState(e,t){const i=String(t),r=v({},(this.state[e]||{})[i],(this.stateChanges[e]||{})[i]);if(null===this.deletedStates[e])return{};if(this.deletedStates[e]){const i=this.deletedStates[e][t];if(null===i)return{};for(const e in i)delete r[e]}return r}initializeTileState(e,t){e.setFeatureState(this.state,t)}coalesceChanges(e,t){const i={};for(const e in this.stateChanges){this.state[e]=this.state[e]||{};const t={};for(const i in this.stateChanges[e])this.state[e][i]||(this.state[e][i]={}),v(this.state[e][i],this.stateChanges[e][i]),t[i]=this.state[e][i];i[e]=t}for(const e in this.deletedStates){this.state[e]=this.state[e]||{};const t={};if(null===this.deletedStates[e])for(const i in this.state[e])t[i]={},this.state[e][i]={};else for(const i in this.deletedStates[e]){if(null===this.deletedStates[e][i])this.state[e][i]={};else for(const t of Object.keys(this.deletedStates[e][i]))delete this.state[e][i][t];t[i]=this.state[e][i]}i[e]=i[e]||{},v(i[e],t)}if(this.stateChanges={},this.deletedStates={},0!==Object.keys(i).length)for(const r in e)e[r].setFeatureState(i,t)}}class ap{constructor(e){this.size=e,this.minimums=[],this.maximums=[],this.leaves=[]}getElevation(e,t){const i=this.toIdx(e,t);return{min:this.minimums[i],max:this.maximums[i]}}isLeaf(e,t){return this.leaves[this.toIdx(e,t)]}toIdx(e,t){return t*this.size+e}}function lp(e,t,i,r){let n=0,o=Number.MAX_VALUE;for(let s=0;s<3;s++)if(Math.abs(r[s])<1e-15){if(i[s]<e[s]||i[s]>t[s])return null}else{const a=1/r[s];let l=(e[s]-i[s])*a,c=(t[s]-i[s])*a;if(l>c){const e=l;l=c,c=e}if(l>n&&(n=l),c<o&&(o=c),n>o)return null}return n}function cp(e,t,i,r,n,o,s,a,l,c,h){const u=r-e,d=n-t,p=o-i,f=s-e,m=a-t,_=l-i,g=h[1]*_-h[2]*m,y=h[2]*f-h[0]*_,x=h[0]*m-h[1]*f,v=u*g+d*y+p*x;if(Math.abs(v)<1e-15)return null;const b=1/v,w=c[0]-e,T=c[1]-t,E=c[2]-i,S=(w*g+T*y+E*x)*b;if(S<0||S>1)return null;const I=T*p-E*d,M=E*u-w*p,A=w*d-T*u,C=(h[0]*I+h[1]*M+h[2]*A)*b;return C<0||S+C>1?null:(f*I+m*M+_*A)*b}function hp(e,t,i){return(e-t)/(i-t)}function up(e,t,i,r,n,o,s,a,l){const c=1<<i,h=o-r,u=s-n,d=(e+1)/c*h+r,p=(t+0)/c*u+n,f=(t+1)/c*u+n;a[0]=(e+0)/c*h+r,a[1]=p,l[0]=d,l[1]=f}class dp{constructor(e){if(this.maximums=[],this.minimums=[],this.leaves=[],this.childOffsets=[],this.nodeCount=0,this.dem=e,this._siblingOffset=[[0,0],[1,0],[0,1],[1,1]],!this.dem)return;const t=function(e){const t=Math.ceil(Math.log2(e.dim/8)),i=[];let r=Math.ceil(Math.pow(2,t));const n=1/r,o=(e,t,i,r,n)=>{const o=r?1:0,s=(e+1)*i-o,a=t*i,l=(t+1)*i-o;n[0]=e*i,n[1]=a,n[2]=s,n[3]=l};let s=new ap(r);const a=[];for(let t=0;t<r*r;t++){o(t%r,Math.floor(t/r),n,!1,a);const i=fp(a[0],a[1],e),l=fp(a[2],a[1],e),c=fp(a[2],a[3],e),h=fp(a[0],a[3],e);s.minimums.push(Math.min(i,l,c,h)),s.maximums.push(Math.max(i,l,c,h)),s.leaves.push(1)}for(i.push(s),r/=2;r>=1;r/=2){const e=i[i.length-1];s=new ap(r);for(let t=0;t<r*r;t++){o(t%r,Math.floor(t/r),2,!0,a);const i=e.getElevation(a[0],a[1]),n=e.getElevation(a[2],a[1]),l=e.getElevation(a[2],a[3]),c=e.getElevation(a[0],a[3]),h=e.isLeaf(a[0],a[1]),u=e.isLeaf(a[2],a[1]),d=e.isLeaf(a[2],a[3]),p=e.isLeaf(a[0],a[3]),f=Math.min(i.min,n.min,l.min,c.min),m=Math.max(i.max,n.max,l.max,c.max),_=h&&u&&d&&p;s.maximums.push(m),s.minimums.push(f),s.leaves.push(m-f<=5&&_?1:0)}i.push(s)}return i}(this.dem),i=t.length-1,r=t[i];this._addNode(r.minimums[0],r.maximums[0],r.leaves[0]),this._construct(t,0,0,i,0)}raycastRoot(e,t,i,r,n,o,s=1){return lp([e,t,-100],[i,r,this.maximums[0]*s],n,o)}raycast(e,t,i,r,n,o,s=1){if(!this.nodeCount)return null;const a=this.raycastRoot(e,t,i,r,n,o,s);if(null==a)return null;const l=[],c=[],h=[],u=[],d=[{idx:0,t:a,nodex:0,nodey:0,depth:0}];for(;d.length>0;){const{idx:a,t:p,nodex:f,nodey:m,depth:_}=d.pop();if(this.leaves[a]){up(f,m,_,e,t,i,r,h,u);const a=1<<_,l=(f+0)/a,c=(f+1)/a,d=(m+0)/a,g=(m+1)/a,y=fp(l,d,this.dem)*s,x=fp(c,d,this.dem)*s,v=fp(c,g,this.dem)*s,b=fp(l,g,this.dem)*s,w=cp(h[0],h[1],y,u[0],h[1],x,u[0],u[1],v,n,o),T=cp(u[0],u[1],v,h[0],u[1],b,h[0],h[1],y,n,o),E=Math.min(null!==w?w:Number.MAX_VALUE,null!==T?T:Number.MAX_VALUE);if(E!==Number.MAX_VALUE)return E;{const e=nl([],n,o,p);if(pp(y,x,b,v,hp(e[0],h[0],u[0]),hp(e[1],h[1],u[1]))>=e[2])return p}continue}let g=0;for(let d=0;d<this._siblingOffset.length;d++){up((f<<1)+this._siblingOffset[d][0],(m<<1)+this._siblingOffset[d][1],_+1,e,t,i,r,h,u),h[2]=-100,u[2]=this.maximums[this.childOffsets[a]+d]*s;const p=lp(h,u,n,o);if(null!=p){const e=p;l[d]=e;let t=!1;for(let i=0;i<g&&!t;i++)e>=l[c[i]]&&(c.splice(i,0,d),t=!0);t||(c[g]=d),g++}}for(let e=0;e<g;e++){const t=c[e];d.push({idx:this.childOffsets[a]+t,t:l[t],nodex:(f<<1)+this._siblingOffset[t][0],nodey:(m<<1)+this._siblingOffset[t][1],depth:_+1})}}return null}_addNode(e,t,i){return this.minimums.push(e),this.maximums.push(t),this.leaves.push(i),this.childOffsets.push(0),this.nodeCount++}_construct(e,t,i,r,n){if(1===e[r].isLeaf(t,i))return;this.childOffsets[n]||(this.childOffsets[n]=this.nodeCount);const o=r-1,s=e[o];let a=0,l=0;for(let e=0;e<this._siblingOffset.length;e++){const r=2*t+this._siblingOffset[e][0],n=2*i+this._siblingOffset[e][1],o=s.getElevation(r,n),c=s.isLeaf(r,n),h=this._addNode(o.min,o.max,c);c&&(a|=1<<e),l||(l=h)}for(let r=0;r<this._siblingOffset.length;r++)a&1<<r||this._construct(e,2*t+this._siblingOffset[r][0],2*i+this._siblingOffset[r][1],o,l+r)}}function pp(e,t,i,r,n,o){return ii(ii(e,i,o),ii(t,r,o),n)}function fp(e,t,i){const r=i.dim,n=m(e*r-.5,0,r-1),o=m(t*r-.5,0,r-1),s=Math.floor(n),a=Math.floor(o),l=Math.min(s+1,r-1),c=Math.min(a+1,r-1);return pp(i.get(s,a),i.get(l,a),i.get(s,c),i.get(l,c),n-s,o-a)}const mp={mapbox:[6553.6,25.6,.1,1e4],terrarium:[256,1,1/256,32768]};class _p{get tree(){return this._tree||this._buildQuadTree(),this._tree}constructor(e,t,i,r=!1,n=!1){if(this.uid=e,t.height!==t.width)throw new RangeError("DEM tiles must be square");if(i&&"mapbox"!==i&&"terrarium"!==i)return D(`"${i}" is not a valid encoding type. Valid types include "mapbox" and "terrarium".`);this.stride=t.height;const o=this.dim=t.height-2,s=new Uint32Array(t.data.buffer);if(this.pixels=new Uint8Array(t.data.buffer),this.encoding=i||"mapbox",this.borderReady=r,!r){for(let e=0;e<o;e++)s[this._idx(-1,e)]=s[this._idx(0,e)],s[this._idx(o,e)]=s[this._idx(o-1,e)],s[this._idx(e,-1)]=s[this._idx(e,0)],s[this._idx(e,o)]=s[this._idx(e,o-1)];s[this._idx(-1,-1)]=s[this._idx(0,0)],s[this._idx(o,-1)]=s[this._idx(o-1,0)],s[this._idx(-1,o)]=s[this._idx(0,o-1)],s[this._idx(o,o)]=s[this._idx(o-1,o-1)],n&&this._buildQuadTree()}}_buildQuadTree(){this._tree=new dp(this)}get(e,t,i=!1){i&&(e=m(e,-1,this.dim),t=m(t,-1,this.dim));const r=4*this._idx(e,t);return("terrarium"===this.encoding?this._unpackTerrarium:this._unpackMapbox)(this.pixels[r],this.pixels[r+1],this.pixels[r+2])}static getUnpackVector(e){return mp[e]}get unpackVector(){return mp[this.encoding]}_idx(e,t){if(e<-1||e>=this.dim+1||t<-1||t>=this.dim+1)throw new RangeError("out of range source coordinates for DEM data");return(t+1)*this.stride+(e+1)}_unpackMapbox(e,t,i){return(256*e*256+256*t+i)/10-1e4}_unpackTerrarium(e,t,i){return 256*e+t+i/256-32768}static pack(e,t){const i=[0,0,0,0],r=_p.getUnpackVector(t);let n=Math.floor((e+r[3])/r[2]);return i[2]=n%256,n=Math.floor(n/256),i[1]=n%256,n=Math.floor(n/256),i[0]=n,i}getPixels(){return new zl({width:this.stride,height:this.stride},this.pixels)}backfillBorder(e,t,i){if(this.dim!==e.dim)throw new Error("dem dimension mismatch");let r=t*this.dim,n=t*this.dim+this.dim,o=i*this.dim,s=i*this.dim+this.dim;switch(t){case-1:r=n-1;break;case 1:n=r+1}switch(i){case-1:o=s-1;break;case 1:s=o+1}const a=-t*this.dim,l=-i*this.dim;for(let t=o;t<s;t++)for(let i=r;i<n;i++){const r=4*this._idx(i,t),n=4*this._idx(i+a,t+l);this.pixels[r+0]=e.pixels[n+0],this.pixels[r+1]=e.pixels[n+1],this.pixels[r+2]=e.pixels[n+2],this.pixels[r+3]=e.pixels[n+3]}}onDeserialize(){this._tree&&(this._tree.dem=this)}}sn(_p,"DEMData"),sn(dp,"DemMinMaxQuadTree",{omit:["dem"]});class gp{constructor(e,t){this.max=e,this.onRemove=t,this.reset()}reset(){for(const e in this.data)for(const t of this.data[e])t.timeout&&clearTimeout(t.timeout),this.onRemove(t.value);return this.data={},this.order=[],this}add(e,t,i){const r=e.wrapped().key;void 0===this.data[r]&&(this.data[r]=[]);const n={value:t,timeout:void 0};if(void 0!==i&&(n.timeout=setTimeout((()=>{this.remove(e,n)}),i)),this.data[r].push(n),this.order.push(r),this.order.length>this.max){const e=this._getAndRemoveByKey(this.order[0]);e&&this.onRemove(e)}return this}has(e){return e.wrapped().key in this.data}getAndRemove(e){return this.has(e)?this._getAndRemoveByKey(e.wrapped().key):null}_getAndRemoveByKey(e){const t=this.data[e].shift();return t.timeout&&clearTimeout(t.timeout),0===this.data[e].length&&delete this.data[e],this.order.splice(this.order.indexOf(e),1),t.value}getByKey(e){const t=this.data[e];return t?t[0].value:null}get(e){return this.has(e)?this.data[e.wrapped().key][0].value:null}remove(e,t){if(!this.has(e))return this;const i=e.wrapped().key,r=void 0===t?0:this.data[i].indexOf(t),n=this.data[i][r];return this.data[i].splice(r,1),n.timeout&&clearTimeout(n.timeout),0===this.data[i].length&&delete this.data[i],this.onRemove(n.value),this.order.splice(this.order.indexOf(i),1),this}setMaxSize(e){for(this.max=e;this.order.length>this.max;){const e=this._getAndRemoveByKey(this.order[0]);e&&this.onRemove(e)}return this}filter(e){const t=[];for(const i in this.data)for(const r of this.data[i])e(r.value)||t.push(r);for(const e of t)this.remove(e.value.tileID,e)}}class yp{constructor(e,t,i){this.func=e,this.mask=t,this.range=i}}yp.ReadOnly=!1,yp.ReadWrite=!0,yp.disabled=new yp(519,yp.ReadOnly,[0,1]);const xp=7680;class vp{constructor(e,t,i,r,n,o){this.test=e,this.ref=t,this.mask=i,this.fail=r,this.depthFail=n,this.pass=o}}vp.disabled=new vp({func:519,mask:0},0,0,xp,xp,xp);class bp{constructor(e,t,i){this.blendFunction=e,this.blendColor=t,this.mask=i}}bp.Replace=[1,0],bp.disabled=new bp(bp.Replace,ht.transparent,[!1,!1,!1,!1]),bp.unblended=new bp(bp.Replace,ht.transparent,[!0,!0,!0,!0]),bp.alphaBlended=new bp([1,771],ht.transparent,[!0,!0,!0,!0]);const wp=1029,Tp=2305;class Ep{constructor(e,t,i){this.enable=e,this.mode=t,this.frontFace=i}}Ep.disabled=new Ep(!1,wp,Tp),Ep.backCCW=new Ep(!0,wp,Tp),Ep.backCW=new Ep(!0,wp,2304),Ep.frontCW=new Ep(!0,1028,2304),Ep.frontCCW=new Ep(!0,1028,Tp);class Sp extends Ue{constructor(e,t,i){super(),this.id=e,this._onlySymbols=i,t.on("data",(e=>{"source"===e.dataType&&"metadata"===e.sourceDataType&&(this._sourceLoaded=!0),this._sourceLoaded&&!this._paused&&"source"===e.dataType&&"content"===e.sourceDataType&&(this.reload(),this.transform&&this.update(this.transform))})),t.on("error",(()=>{this._sourceErrored=!0})),this._source=t,this._tiles={},this._cache=new gp(0,this._unloadTile.bind(this)),this._timers={},this._cacheTimers={},this._minTileCacheSize=t.minTileCacheSize,this._maxTileCacheSize=t.maxTileCacheSize,this._loadedParentTiles={},this._coveredTiles={},this._state=new sp,this._isRaster="raster"===this._source.type||"raster-dem"===this._source.type||"custom"===this._source.type&&"raster"===this._source._dataType}onAdd(e){this.map=e,this._minTileCacheSize=void 0===this._minTileCacheSize&&e?e._minTileCacheSize:this._minTileCacheSize,this._maxTileCacheSize=void 0===this._maxTileCacheSize&&e?e._maxTileCacheSize:this._maxTileCacheSize}loaded(){if(this._sourceErrored)return!0;if(!this._sourceLoaded)return!1;if(!this._source.loaded())return!1;for(const e in this._tiles){const t=this._tiles[e];if("loaded"!==t.state&&"errored"!==t.state)return!1}return!0}getSource(){return this._source}pause(){this._paused=!0}resume(){if(!this._paused)return;const e=this._shouldReloadOnResume;this._paused=!1,this._shouldReloadOnResume=!1,e&&this.reload(),this.transform&&this.update(this.transform)}_loadTile(e,t){return e.isSymbolTile=this._onlySymbols,this._source.loadTile(e,t)}_unloadTile(e){if(this._source.unloadTile)return this._source.unloadTile(e,(()=>{}))}_abortTile(e){if(this._source.abortTile)return this._source.abortTile(e,(()=>{}))}serialize(){return this._source.serialize()}prepare(e){if(this._source.prepare&&this._source.prepare(),this._state.coalesceChanges(this._tiles,this.map?this.map.painter:null),this._source.prepareTile)for(const t in this._tiles){const i=this._tiles[t];this._source.prepareTile(i)&&this.map.painter.terrain&&this.map.painter.terrain._clearRenderCacheForTile(this.id,i.tileID),i.upload(e),i.prepare(this.map.style.imageManager)}else for(const t in this._tiles){const i=this._tiles[t];i.upload(e),i.prepare(this.map.style.imageManager)}}getIds(){return x(this._tiles).map((e=>e.tileID)).sort(Ip).map((e=>e.key))}getRenderableIds(e){const t=[];for(const i in this._tiles)this._isIdRenderable(+i,e)&&t.push(this._tiles[i]);return e?t.sort(((e,t)=>{const i=e.tileID,r=t.tileID,o=new n(i.canonical.x,i.canonical.y)._rotate(this.transform.angle),s=new n(r.canonical.x,r.canonical.y)._rotate(this.transform.angle);return i.overscaledZ-r.overscaledZ||s.y-o.y||s.x-o.x})).map((e=>e.tileID.key)):t.map((e=>e.tileID)).sort(Ip).map((e=>e.key))}hasRenderableParent(e){const t=this.findLoadedParent(e,0);return!!t&&this._isIdRenderable(t.tileID.key)}_isIdRenderable(e,t){return this._tiles[e]&&this._tiles[e].hasData()&&!this._coveredTiles[e]&&(t||!this._tiles[e].holdingForFade())}reload(){if(this._paused)this._shouldReloadOnResume=!0;else{this._cache.reset();for(const e in this._tiles)"errored"!==this._tiles[e].state&&this._reloadTile(+e,"reloading")}}_reloadTile(e,t){const i=this._tiles[e];i&&("loading"!==i.state&&(i.state=t),this._loadTile(i,this._tileLoaded.bind(this,i,e,t)))}_tileLoaded(e,t,i,r){if(r)if(e.state="errored",404!==r.status)this._source.fire(new Oe(r,{tile:e}));else if("raster-dem"===this._source.type&&this.usedForTerrain&&this.map.painter.terrain){const e=this.map.painter.terrain;this.update(this.transform,e.getScaledDemTileSize(),!0),e.resetTileLookupCache(this.id)}else this.update(this.transform);else e.timeAdded=Z.now(),"expired"===i&&(e.refreshedUponExpiration=!0),this._setTileReloadTimer(t,e),"raster-dem"===this._source.type&&e.dem&&this._backfillDEM(e),this._state.initializeTileState(e,this.map?this.map.painter:null),this._source.fire(new Fe("data",{dataType:"source",tile:e,coord:e.tileID,sourceCacheId:this.id}))}_backfillDEM(e){const t=this.getRenderableIds();for(let r=0;r<t.length;r++){const n=t[r];if(e.neighboringTiles&&e.neighboringTiles[n]){const t=this.getTileByID(n);i(e,t),i(t,e)}}function i(e,t){if(!e.dem||e.dem.borderReady)return;e.needsHillshadePrepare=!0,e.needsDEMTextureUpload=!0;let i=t.tileID.canonical.x-e.tileID.canonical.x;const r=t.tileID.canonical.y-e.tileID.canonical.y,n=Math.pow(2,e.tileID.canonical.z),o=t.tileID.key;0===i&&0===r||Math.abs(r)>1||(Math.abs(i)>1&&(1===Math.abs(i+n)?i+=n:1===Math.abs(i-n)&&(i-=n)),t.dem&&e.dem&&(e.dem.backfillBorder(t.dem,i,r),e.neighboringTiles&&e.neighboringTiles[o]&&(e.neighboringTiles[o].backfilled=!0)))}}getTile(e){return this.getTileByID(e.key)}getTileByID(e){return this._tiles[e]}_retainLoadedChildren(e,t,i,r){for(const n in this._tiles){let o=this._tiles[n];if(r[n]||!o.hasData()||o.tileID.overscaledZ<=t||o.tileID.overscaledZ>i)continue;let s=o.tileID;for(;o&&o.tileID.overscaledZ>t+1;){const e=o.tileID.scaledTo(o.tileID.overscaledZ-1);o=this._tiles[e.key],o&&o.hasData()&&(s=e)}let a=s;for(;a.overscaledZ>t;)if(a=a.scaledTo(a.overscaledZ-1),e[a.key]){r[s.key]=s;break}}}findLoadedParent(e,t){if(e.key in this._loadedParentTiles){const i=this._loadedParentTiles[e.key];return i&&i.tileID.overscaledZ>=t?i:null}for(let i=e.overscaledZ-1;i>=t;i--){const t=e.scaledTo(i),r=this._getLoadedTile(t);if(r)return r}}_getLoadedTile(e){const t=this._tiles[e.key];return t&&t.hasData()?t:this._cache.getByKey(this._source.reparseOverscaled?e.wrapped().key:e.canonical.key)}updateCacheSize(e,t){t=t||this._source.tileSize;const i=Math.ceil(e.width/t)+1,r=Math.ceil(e.height/t)+1,n=Math.floor(i*r*5),o="number"==typeof this._minTileCacheSize?Math.max(this._minTileCacheSize,n):n,s="number"==typeof this._maxTileCacheSize?Math.min(this._maxTileCacheSize,o):o;this._cache.setMaxSize(s)}handleWrapJump(e){const t=Math.round((e-(void 0===this._prevLng?e:this._prevLng))/360);if(this._prevLng=e,t){const e={};for(const i in this._tiles){const r=this._tiles[i];r.tileID=r.tileID.unwrapTo(r.tileID.wrap+t),e[r.tileID.key]=r}this._tiles=e;for(const e in this._timers)clearTimeout(this._timers[e]),delete this._timers[e];for(const e in this._tiles)this._setTileReloadTimer(+e,this._tiles[e])}}update(e,t,i){if(this.transform=e,!this._sourceLoaded||this._paused||this.transform.freezeTileCoverage)return;if(this.usedForTerrain&&!i)return;let r;this.updateCacheSize(e,t),"globe"!==this.transform.projection.name&&this.handleWrapJump(this.transform.center.lng),this._coveredTiles={},this.used||this.usedForTerrain?this._source.tileID?r=e.getVisibleUnwrappedCoordinates(this._source.tileID).map((e=>new Zd(e.canonical.z,e.wrap,e.canonical.z,e.canonical.x,e.canonical.y))):(r=e.coveringTiles({tileSize:t||this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:this._source.roundZoom&&!i,reparseOverscaled:this._source.reparseOverscaled,isTerrainDEM:this.usedForTerrain}),this._source.hasTile&&(r=r.filter((e=>this._source.hasTile(e))))):r=[];const n=this._updateRetainedTiles(r);if(Mp(this._source.type)&&0!==r.length){const e={},t={},i=Object.keys(n);for(const r of i){const i=n[r],o=this._tiles[r];if(!o||o.fadeEndTime&&o.fadeEndTime<=Z.now())continue;const s=this.findLoadedParent(i,Math.max(i.overscaledZ-Sp.maxOverzooming,this._source.minzoom));s&&(this._addTile(s.tileID),e[s.tileID.key]=s.tileID),t[r]=i}const o=r[r.length-1].overscaledZ;for(const e in this._tiles){const i=this._tiles[e];if(n[e]||!i.hasData())continue;let r=i.tileID;for(;r.overscaledZ>o;){r=r.scaledTo(r.overscaledZ-1);const o=this._tiles[r.key];if(o&&o.hasData()&&t[r.key]){n[e]=i.tileID;break}}}for(const t in e)n[t]||(this._coveredTiles[t]=!0,n[t]=e[t])}for(const e in n)this._tiles[e].clearFadeHold();const o=function(e,t){const i=[];for(const r in e)r in t||i.push(r);return i}(this._tiles,n);for(const e of o){const t=this._tiles[e];t.hasSymbolBuckets&&!t.holdingForFade()?t.setHoldDuration(this.map._fadeDuration):t.hasSymbolBuckets&&!t.symbolFadeFinished()||this._removeTile(+e)}this._updateLoadedParentTileCache(),this._onlySymbols&&this._source.afterUpdate&&this._source.afterUpdate()}releaseSymbolFadeTiles(){for(const e in this._tiles)this._tiles[e].holdingForFade()&&this._removeTile(+e)}_updateRetainedTiles(e){const t={};if(0===e.length)return t;const i={},r=e.reduce(((e,t)=>Math.min(e,t.overscaledZ)),1/0),n=e[0].overscaledZ,o=Math.max(n-Sp.maxOverzooming,this._source.minzoom),s=Math.max(n+Sp.maxUnderzooming,this._source.minzoom),a={};for(const i of e){const e=this._addTile(i);t[i.key]=i,e.hasData()||r<this._source.maxzoom&&(a[i.key]=i)}this._retainLoadedChildren(a,r,s,t);for(const r of e){let e=this._tiles[r.key];if(e.hasData())continue;if(r.canonical.z>=this._source.maxzoom){const e=r.children(this._source.maxzoom)[0],i=this.getTile(e);if(i&&i.hasData()){t[e.key]=e;continue}}else{const e=r.children(this._source.maxzoom);if(t[e[0].key]&&t[e[1].key]&&t[e[2].key]&&t[e[3].key])continue}let n=e.wasRequested();for(let s=r.overscaledZ-1;s>=o;--s){const o=r.scaledTo(s);if(i[o.key])break;if(i[o.key]=!0,e=this.getTile(o),!e&&n&&(e=this._addTile(o)),e&&(t[o.key]=o,n=e.wasRequested(),e.hasData()))break}}return t}_updateLoadedParentTileCache(){this._loadedParentTiles={};for(const e in this._tiles){const t=[];let i,r=this._tiles[e].tileID;for(;r.overscaledZ>0;){if(r.key in this._loadedParentTiles){i=this._loadedParentTiles[r.key];break}t.push(r.key);const e=r.scaledTo(r.overscaledZ-1);if(i=this._getLoadedTile(e),i)break;r=e}for(const e of t)this._loadedParentTiles[e]=i}}_addTile(e){let t=this._tiles[e.key];if(t)return this._source.prepareTile&&this._source.prepareTile(t),t;t=this._cache.getAndRemove(e),t&&(this._setTileReloadTimer(e.key,t),t.tileID=e,this._state.initializeTileState(t,this.map?this.map.painter:null),this._cacheTimers[e.key]&&(clearTimeout(this._cacheTimers[e.key]),delete this._cacheTimers[e.key],this._setTileReloadTimer(e.key,t)));const i=Boolean(t);if(!i){const i=this.map?this.map.painter:null;t=new op(e,this._source.tileSize*e.overscaleFactor(),this.transform.tileZoom,i,this._isRaster),this._source.prepareTile&&this._source.prepareTile(t)||this._loadTile(t,this._tileLoaded.bind(this,t,e.key,t.state))}return t?(t.uses++,this._tiles[e.key]=t,i||this._source.fire(new Fe("dataloading",{tile:t,coord:t.tileID,dataType:"source"})),t):null}_setTileReloadTimer(e,t){e in this._timers&&(clearTimeout(this._timers[e]),delete this._timers[e]);const i=t.getExpiryTimeout();i&&(this._timers[e]=setTimeout((()=>{this._reloadTile(e,"expired"),delete this._timers[e]}),i))}_removeTile(e){const t=this._tiles[e];t&&(t.uses--,delete this._tiles[e],this._timers[e]&&(clearTimeout(this._timers[e]),delete this._timers[e]),t.uses>0||(t.hasData()&&"reloading"!==t.state?this._cache.add(t.tileID,t,t.getExpiryTimeout()):(t.aborted=!0,this._abortTile(t),this._unloadTile(t))))}clearTiles(){this._shouldReloadOnResume=!1,this._paused=!1;for(const e in this._tiles)this._removeTile(+e);this._source._clear&&this._source._clear(),this._cache.reset(),this.map&&this.usedForTerrain&&this.map.painter.terrain&&this.map.painter.terrain.resetTileLookupCache(this.id)}tilesIn(e,t,i){const r=[],n=this.transform;if(!n)return r;for(const o in this._tiles){const s=this._tiles[o];if(i&&s.clearQueryDebugViz(),s.holdingForFade())continue;const a=e.containsTile(s,n,t);a&&r.push(a)}return r}getVisibleCoordinates(e){const t=this.getRenderableIds(e).map((e=>this._tiles[e].tileID));for(const e of t)e.projMatrix=this.transform.calculateProjMatrix(e.toUnwrapped());return t}hasTransition(){if(this._source.hasTransition())return!0;if(Mp(this._source.type))for(const e in this._tiles){const t=this._tiles[e];if(void 0!==t.fadeEndTime&&t.fadeEndTime>=Z.now())return!0}return!1}setFeatureState(e,t,i){this._state.updateState(e=e||"_geojsonTileLayer",t,i)}removeFeatureState(e,t,i){this._state.removeFeatureState(e=e||"_geojsonTileLayer",t,i)}getFeatureState(e,t){return this._state.getState(e=e||"_geojsonTileLayer",t)}setDependencies(e,t,i){const r=this._tiles[e];r&&r.setDependencies(t,i)}reloadTilesForDependencies(e,t){for(const i in this._tiles)this._tiles[i].hasDependency(e,t)&&this._reloadTile(+i,"reloading");this._cache.filter((i=>!i.hasDependency(e,t)))}_preloadTiles(e,t){const i=new Map,r=Array.isArray(e)?e:[e],n=this.map.painter.terrain,o=this.usedForTerrain&&n?n.getScaledDemTileSize():this._source.tileSize;for(const e of r){const t=e.coveringTiles({tileSize:o,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:this._source.roundZoom&&!this.usedForTerrain,reparseOverscaled:this._source.reparseOverscaled,isTerrainDEM:this.usedForTerrain});for(const e of t)i.set(e.key,e);this.usedForTerrain&&e.updateElevation(!1)}y(Array.from(i.values()),((e,t)=>{const i=new op(e,this._source.tileSize*e.overscaleFactor(),this.transform.tileZoom,this.map.painter,this._isRaster);this._loadTile(i,(e=>{"raster-dem"===this._source.type&&i.dem&&this._backfillDEM(i),t(e,i)}))}),t)}}function Ip(e,t){const i=Math.abs(2*e.wrap)-+(e.wrap<0),r=Math.abs(2*t.wrap)-+(t.wrap<0);return e.overscaledZ-t.overscaledZ||r-i||t.canonical.y-e.canonical.y||t.canonical.x-e.canonical.x}function Mp(e){return"raster"===e||"image"===e||"video"===e}Sp.maxOverzooming=10,Sp.maxUnderzooming=3;class Ap{constructor(e,t,i){this._demTile=e,this._dem=this._demTile.dem,this._scale=t,this._offset=i}static create(e,t,i){const r=i||e.findDEMTileFor(t);if(!r||!r.dem)return;const n=r.dem,o=r.tileID,s=1<<t.canonical.z-o.canonical.z;return new Ap(r,r.tileSize/Ys/s,[(t.canonical.x/s-o.canonical.x)*n.dim,(t.canonical.y/s-o.canonical.y)*n.dim])}tileCoordToPixel(e,t){const i=t*this._scale+this._offset[1],r=Math.floor(e*this._scale+this._offset[0]),o=Math.floor(i);return new n(r,o)}getElevationAt(e,t,i,r){const n=e*this._scale+this._offset[0],o=t*this._scale+this._offset[1],s=Math.floor(n),a=Math.floor(o),l=this._dem;return r=!!r,i?ii(ii(l.get(s,a,r),l.get(s,a+1,r),o-a),ii(l.get(s+1,a,r),l.get(s+1,a+1,r),o-a),n-s):l.get(s,a,r)}getElevationAtPixel(e,t,i){return this._dem.get(e,t,!!i)}getMeterToDEM(e){return(1<<this._demTile.tileID.canonical.z)*na(1,e)*this._dem.stride}}class Cp{constructor(e,t){this.tileID=e,this.x=e.canonical.x,this.y=e.canonical.y,this.z=e.canonical.z,this.grid=new rn(Ys,16,0),this.featureIndexArray=new hs,this.promoteId=t}insert(e,t,i,r,n,o=0){const s=this.featureIndexArray.length;this.featureIndexArray.emplaceBack(i,r,n,o);const a=this.grid;for(let e=0;e<t.length;e++){const i=t[e],r=[1/0,1/0,-1/0,-1/0];for(let e=0;e<i.length;e++){const t=i[e];r[0]=Math.min(r[0],t.x),r[1]=Math.min(r[1],t.y),r[2]=Math.max(r[2],t.x),r[3]=Math.max(r[3],t.y)}r[0]<Ys&&r[1]<Ys&&r[2]>=0&&r[3]>=0&&a.insert(s,r[0],r[1],r[2],r[3])}}loadVTLayers(){if(!this.vtLayers){this.vtLayers=new Pc.VectorTile(new wh(this.rawTileData)).layers,this.sourceLayerCoder=new Xd(this.vtLayers?Object.keys(this.vtLayers).sort():["_geojsonTileLayer"]),this.vtFeatures={};for(const e in this.vtLayers)this.vtFeatures[e]=[]}return this.vtLayers}query(e,t,i,r){this.loadVTLayers();const n=e.params||{},o=Er(n.filter),s=e.tileResult,a=e.transform,l=s.bufferedTilespaceBounds,c=this.grid.query(l.min.x,l.min.y,l.max.x,l.max.y,((e,t,i,r)=>za(s.bufferedTilespaceGeometry,e,t,i,r)));c.sort(kp);let h=null;a.elevation&&c.length>0&&(h=Ap.create(a.elevation,this.tileID));const u={};let d;for(let a=0;a<c.length;a++){const l=c[a];if(l===d)continue;d=l;const p=this.featureIndexArray.get(l);let f=null;this.loadMatchingFeature(u,p,o,n.layers,n.availableImages,t,i,r,((t,i,r,n=0)=>(f||(f=ma(t,this.tileID.canonical,e.tileTransform)),i.queryIntersectsFeature(s,t,r,f,this.z,e.transform,e.pixelPosMatrix,h,n))))}return u}loadMatchingFeature(e,t,i,r,n,o,s,a,l){const{featureIndex:c,bucketIndex:h,sourceLayerIndex:u,layoutVertexArrayOffset:d}=t,p=this.bucketLayerIDs[h];if(r&&!function(e,t){for(let i=0;i<e.length;i++)if(t.indexOf(e[i])>=0)return!0;return!1}(r,p))return;const f=this.sourceLayerCoder.decode(u),m=this.vtLayers[f].feature(c);if(i.needGeometry){const e=_a(m,!0);if(!i.filter(new oo(this.tileID.overscaledZ),e,this.tileID.canonical))return}else if(!i.filter(new oo(this.tileID.overscaledZ),m))return;const _=this.getId(m,f);for(let t=0;t<p.length;t++){const i=p[t];if(r&&r.indexOf(i)<0)continue;const h=o[i];if(!h)continue;let u={};void 0!==_&&a&&(u=a.getState(h.sourceLayer||"_geojsonTileLayer",_));const f=v({},s[i]);f.paint=zp(f.paint,h.paint,m,u,n),f.layout=zp(f.layout,h.layout,m,u,n);const g=!l||l(m,h,u,d);if(!g)continue;const y=new Hd(m,this.z,this.x,this.y,_);y.layer=f;let x=e[i];void 0===x&&(x=e[i]=[]),x.push({featureIndex:c,feature:y,intersectionZ:g})}}lookupSymbolFeatures(e,t,i,r,n,o,s,a){const l={};this.loadVTLayers();const c=Er(n);for(const n of e)this.loadMatchingFeature(l,{bucketIndex:i,sourceLayerIndex:r,featureIndex:n,layoutVertexArrayOffset:0},c,o,s,a,t);return l}loadFeature(e){const{featureIndex:t,sourceLayerIndex:i}=e;this.loadVTLayers();const r=this.sourceLayerCoder.decode(i),n=this.vtFeatures[r];if(n[t])return n[t];const o=this.vtLayers[r].feature(t);return n[t]=o,o}hasLayer(e){for(const t of this.bucketLayerIDs)for(const i of t)if(e===i)return!0;return!1}getId(e,t){let i=e.id;return this.promoteId&&(i=e.properties["string"==typeof this.promoteId?this.promoteId:this.promoteId[t]],"boolean"==typeof i&&(i=Number(i))),i}}function zp(e,t,i,r,n){return A(e,((e,o)=>{const s=t instanceof fo?t.get(o):null;return s&&s.evaluate?s.evaluate(i,r,n):s}))}function kp(e,t){return t-e}sn(Cp,"FeatureIndex",{omit:["rawTileData","sourceLayerCoder"]});class Dp{constructor(e){const t={},i=[];for(const r in e){const n=e[r],o=t[r]={};for(const e in n.glyphs){const t=n.glyphs[+e];if(!t||0===t.bitmap.width||0===t.bitmap.height)continue;const r=t.metrics.localGlyph?2:1,s={x:0,y:0,w:t.bitmap.width+2*r,h:t.bitmap.height+2*r};i.push(s),o[e]=s}}const{w:r,h:n}=$h(i),o=new Cl({width:r||1,height:n||1});for(const i in e){const r=e[i];for(const e in r.glyphs){const n=r.glyphs[+e];if(!n||0===n.bitmap.width||0===n.bitmap.height)continue;const s=t[i][e],a=n.metrics.localGlyph?2:1;Cl.copy(n.bitmap,o,{x:0,y:0},{x:s.x+a,y:s.y+a},n.bitmap)}}this.image=o,this.positions=t}}sn(Dp,"GlyphAtlas");class Pp{constructor(e){this.tileID=new Zd(e.tileID.overscaledZ,e.tileID.wrap,e.tileID.canonical.z,e.tileID.canonical.x,e.tileID.canonical.y),this.tileZoom=e.tileZoom,this.uid=e.uid,this.zoom=e.zoom,this.canonical=e.tileID.canonical,this.pixelRatio=e.pixelRatio,this.tileSize=e.tileSize,this.source=e.source,this.overscaling=this.tileID.overscaleFactor(),this.showCollisionBoxes=e.showCollisionBoxes,this.collectResourceTiming=!!e.collectResourceTiming,this.returnDependencies=!!e.returnDependencies,this.promoteId=e.promoteId,this.enableTerrain=!!e.enableTerrain,this.isSymbolTile=e.isSymbolTile,this.tileTransform=qd(e.tileID.canonical,e.projection),this.projection=e.projection}parse(e,t,i,r,n){this.status="parsing",this.data=e,this.collisionBoxArray=new is;const o=new Xd(Object.keys(e.layers).sort()),s=new Cp(this.tileID,this.promoteId);s.bucketLayerIDs=[];const a={},l=new dd(256,256),c={featureIndex:s,iconDependencies:{},patternDependencies:{},glyphDependencies:{},lineAtlas:l,availableImages:i},h=t.familiesBySource[this.source];for(const t in h){const r=e.layers[t];if(!r)continue;let n=!1,l=!1;for(const e of h[t])"symbol"===e[0].type?n=!0:l=!0;if(!0===this.isSymbolTile&&!n)continue;if(!1===this.isSymbolTile&&!l)continue;1===r.version&&D(`Vector tile source "${this.source}" layer "${t}" does not use vector tile spec v2 and therefore may have some rendering errors.`);const u=o.encode(t),d=[];for(let e=0;e<r.length;e++){const i=r.feature(e),n=s.getId(i,t);d.push({feature:i,id:n,index:e,sourceLayerIndex:u})}for(const e of h[t]){const t=e[0];void 0!==this.isSymbolTile&&"symbol"===t.type!==this.isSymbolTile||t.minzoom&&this.zoom<Math.floor(t.minzoom)||t.maxzoom&&this.zoom>=t.maxzoom||"none"!==t.visibility&&(Lp(e,this.zoom,i),(a[t.id]=t.createBucket({index:s.bucketLayerIDs.length,layers:e,zoom:this.zoom,canonical:this.canonical,pixelRatio:this.pixelRatio,overscaling:this.overscaling,collisionBoxArray:this.collisionBoxArray,sourceLayerIndex:u,sourceID:this.source,enableTerrain:this.enableTerrain,projection:this.projection.name,availableImages:i})).populate(d,c,this.tileID.canonical,this.tileTransform),s.bucketLayerIDs.push(e.map((e=>e.id))))}}let u,d,p,f;l.trim();const m={type:"maybePrepare",isSymbolTile:this.isSymbolTile,zoom:this.zoom},_=A(c.glyphDependencies,(e=>Object.keys(e).map(Number)));Object.keys(_).length?r.send("getGlyphs",{uid:this.uid,stacks:_},((e,t)=>{u||(u=e,d=t,v.call(this))}),void 0,!1,m):d={};const g=Object.keys(c.iconDependencies);g.length?r.send("getImages",{icons:g,source:this.source,tileID:this.tileID,type:"icons"},((e,t)=>{u||(u=e,p=t,v.call(this))}),void 0,!1,m):p={};const y=Object.keys(c.patternDependencies);function v(){if(u)return n(u);if(d&&p&&f){const e=new Dp(d),t=new Xh(p,f);for(const r in a){const n=a[r];n instanceof ed?(Lp(n.layers,this.zoom,i),Ou(n,d,e.positions,p,t.iconPositions,this.showCollisionBoxes,i,this.tileID.canonical,this.tileZoom,this.projection)):n.hasPattern&&(n instanceof Qc||n instanceof yc||n instanceof Vc)&&(Lp(n.layers,this.zoom,i),n.addFeatures(c,this.tileID.canonical,t.patternPositions,i,this.tileTransform))}this.status="done",n(null,{buckets:x(a).filter((e=>!e.isEmpty())),featureIndex:s,collisionBoxArray:this.collisionBoxArray,glyphAtlasImage:e.image,lineAtlas:l,imageAtlas:t,glyphMap:this.returnDependencies?d:null,iconMap:this.returnDependencies?p:null,glyphPositions:this.returnDependencies?e.positions:null})}}y.length?r.send("getImages",{icons:y,source:this.source,tileID:this.tileID,type:"patterns"},((e,t)=>{u||(u=e,f=t,v.call(this))}),void 0,!1,m):f={},v.call(this)}}function Lp(e,t,i){const r=new oo(t);for(const t of e)t.recalculate(r,i)}class Bp{constructor(e){this.entries={},this.scheduler=e}request(e,t,i,r){const n=this.entries[e]=this.entries[e]||{callbacks:[]};if(n.result){const[e,i]=n.result;return this.scheduler?this.scheduler.add((()=>{r(e,i)}),t):r(e,i),()=>{}}return n.callbacks.push(r),n.cancel||(n.cancel=i(((i,r)=>{n.result=[i,r];for(const e of n.callbacks)this.scheduler?this.scheduler.add((()=>{e(i,r)}),t):e(i,r);setTimeout((()=>delete this.entries[e]),3e3)}))),()=>{n.result||(n.callbacks=n.callbacks.filter((e=>e!==r)),n.callbacks.length||(n.cancel(),delete this.entries[e]))}}}function Rp(e,t,i){const r=JSON.stringify(e.request);return e.data&&(this.deduped.entries[r]={result:[null,e.data]}),this.deduped.request(r,{type:"parseTile",isSymbolTile:e.isSymbolTile,zoom:e.tileZoom},(t=>{const r=Me(e.request,((e,r,n,o)=>{e?t(e):r&&t(null,{vectorTile:i?void 0:new Pc.VectorTile(new wh(r)),rawData:r,cacheControl:n,expires:o})}));return()=>{r.cancel(),t()}}),t)}const Fp=ja(new Float32Array(16));class Op{constructor(e){this.name=e.name,this.wrap=!1,this.requiresDraping=!1,this.supportsWorldCopies=!1,this.supportsTerrain=!1,this.supportsFog=!1,this.supportsFreeCamera=!1,this.zAxisUnit="meters",this.isReprojectedInTileSpace=!0,this.unsupportedLayers=["custom"],this.center=[0,0],this.range=[3.5,7]}project(e,t){return{x:0,y:0,z:0}}unproject(e,t){return new Qs(0,0)}projectTilePoint(e,t,i){return{x:e,y:t,z:0}}locationPoint(e,t){return e._coordinatePoint(e.locationCoordinate(t),!1)}pixelsPerMeter(e,t){return na(1,e)*t}farthestPixelDistance(e){return function(e,t){const i=e.fovAboveCenter,r=e.elevation?e.elevation.getMinElevationBelowMSL()*t:0,n=(e._camera.position[2]*e.worldSize-r)/Math.cos(e._pitch),o=Math.sin(i)*n/Math.sin(Math.max(Math.PI/2-e._pitch-i,.01)),s=Math.sin(e._pitch)*o+n;return Math.min(1.01*s,n*(1/e._horizonShift))}(e,e.pixelsPerMeter)}pointCoordinate(e,t,i,r){const o=e.horizonLineFromTop(!1),s=new n(t,Math.max(o,i));return e.rayIntersectionCoordinate(e.pointRayIntersection(s,r))}createInversionMatrix(e,t){return Fp}createTileMatrix(e,t,i){let r,n,o;const s=i.canonical,a=ja(new Float64Array(16));if(this.isReprojectedInTileSpace){const l=qd(s,this);r=1,n=l.x+i.wrap*l.scale,o=l.y,Za(a,a,[r/l.scale,r/l.scale,e.pixelsPerMeter/t])}else r=t/e.zoomScale(s.z),n=(s.x+Math.pow(2,s.z)*i.wrap)*r,o=s.y*r;return Ga(a,a,[n,o,0]),Za(a,a,[r/Ys,r/Ys,1]),a}upVector(e,t,i){return[0,0,1]}upVectorScale(e,t,i){return{metersToTile:1,metersToLabelSpace:1}}}class Up extends Op{constructor(e){super(e),this.wrap=!0,this.supportsWorldCopies=!0,this.supportsTerrain=!0,this.supportsFog=!0,this.supportsFreeCamera=!0,this.isReprojectedInTileSpace=!1,this.unsupportedLayers=[],this.range=null}project(e,t){return{x:ia(e),y:ra(t),z:0}}unproject(e,t){const i=oa(e),r=sa(t);return new Qs(i,r)}}class Vp extends Op{constructor(e){super(e),this.range=[4,7],this.center=e.center||[-96,37.5];const[t,i]=this.parallels=e.parallels||[29.5,45.5],r=Math.sin(c(t));this.n=(r+Math.sin(c(i)))/2,this.c=1+r*(2*this.n-r),this.r0=Math.sqrt(this.c)/this.n}project(e,t){const{n:i,c:r,r0:n}=this,o=c(e-this.center[0]),s=c(t),a=Math.sqrt(r-2*i*Math.sin(s))/i;return{x:a*Math.sin(o*i),y:a*Math.cos(o*i)-n,z:0}}unproject(e,t){const{n:i,c:r,r0:n}=this,o=n+t;let s=Math.atan2(e,Math.abs(o))*Math.sign(o);o*i<0&&(s-=Math.PI*Math.sign(e)*Math.sign(o));const a=c(this.center[0])*i;s=g(s,-Math.PI-a,Math.PI-a);const l=h(s/i)+this.center[0],u=Math.asin(m((r-(e*e+o*o)*i*i)/(2*i),-1,1)),d=m(h(u),-85.051129,la);return new Qs(l,d)}}const jp=1.340264,Np=-.081106,Gp=893e-6,Zp=.003796,$p=Math.sqrt(3)/2;class qp extends Op{project(e,t){t=t/180*Math.PI,e=e/180*Math.PI;const i=Math.asin($p*Math.sin(t)),r=i*i,n=r*r*r;return{x:.5*(e*Math.cos(i)/($p*(jp+3*Np*r+n*(7*Gp+9*Zp*r)))/Math.PI+.5),y:1-.5*(i*(jp+Np*r+n*(Gp+Zp*r))/Math.PI+1),z:0}}unproject(e,t){e=(2*e-.5)*Math.PI;let i=t=(2*(1-t)-1)*Math.PI,r=i*i,n=r*r*r;for(let e,o,s,a=0;a<12&&(o=i*(jp+Np*r+n*(Gp+Zp*r))-t,s=jp+3*Np*r+n*(7*Gp+9*Zp*r),e=o/s,i=m(i-e,-Math.PI/3,Math.PI/3),r=i*i,n=r*r*r,!(Math.abs(e)<1e-12));++a);const o=$p*e*(jp+3*Np*r+n*(7*Gp+9*Zp*r))/Math.cos(i),s=Math.asin(Math.sin(i)/$p),a=m(180*o/Math.PI,-180,180),l=m(180*s/Math.PI,-85.051129,la);return new Qs(a,l)}}class Xp extends Op{constructor(e){super(e),this.wrap=!0,this.supportsWorldCopies=!0}project(e,t){return{x:.5+e/360,y:.5-t/360,z:0}}unproject(e,t){const i=360*(e-.5),r=m(360*(.5-t),-85.051129,la);return new Qs(i,r)}}const Wp=Math.PI/2;function Hp(e){return Math.tan((Wp+e)/2)}class Yp extends Op{constructor(e){super(e),this.center=e.center||[0,30];const[t,i]=this.parallels=e.parallels||[30,30],r=c(t),n=c(i),o=Math.cos(r);this.n=r===n?Math.sin(r):Math.log(o/Math.cos(n))/Math.log(Hp(n)/Hp(r)),this.f=o*Math.pow(Hp(r),this.n)/this.n}project(e,t){t=c(t),e=c(e-this.center[0]);const i=1e-6,{n:r,f:n}=this;n>0?t<-Wp+i&&(t=-Wp+i):t>Wp-i&&(t=Wp-i);const o=n/Math.pow(Hp(t),r),s=o*Math.sin(r*e),a=n-o*Math.cos(r*e);return{x:.5*(s/Math.PI+.5),y:1-.5*(a/Math.PI+.5),z:0}}unproject(e,t){e=(2*e-.5)*Math.PI,t=(2*(1-t)-.5)*Math.PI;const{n:i,f:r}=this,n=r-t,o=Math.sign(n),s=Math.sign(i)*Math.sqrt(e*e+n*n);let a=Math.atan2(e,Math.abs(n))*o;n*i<0&&(a-=Math.PI*Math.sign(e)*o);const l=m(h(a/i)+this.center[0],-180,180),c=m(h(2*Math.atan(Math.pow(r/s,1/i))-Wp),-85.051129,la);return new Qs(l,c)}}const Kp=c(la);class Jp extends Op{project(e,t){const i=(t=c(t))*t,r=i*i;return{x:.5*((e=c(e))*(.8707-.131979*i+r*(r*(.003971*i-.001529*r)-.013791))/Math.PI+.5),y:1-.5*(t*(1.007226+i*(.015085+r*(.028874*i-.044475-.005916*r)))/Math.PI+1),z:0}}unproject(e,t){e=(2*e-.5)*Math.PI;let i=t=(2*(1-t)-1)*Math.PI,r=25,n=0,o=i*i;do{o=i*i;const e=o*o;n=(i*(1.007226+o*(.015085+e*(.028874*o-.044475-.005916*e)))-t)/(1.007226+o*(.045255+e*(.259866*o-.311325-.005916*11*e))),i=m(i-n,-Kp,Kp)}while(Math.abs(n)>1e-6&&--r>0);o=i*i;const s=m(h(e/(.8707+o*(o*(o*o*o*(.003971-.001529*o)-.013791)-.131979))),-180,180),a=h(i);return new Qs(s,a)}}const Qp=c(la);class ef extends Op{project(e,t){t=c(t),e=c(e);const i=Math.cos(t),r=2/Math.PI,n=Math.acos(i*Math.cos(e/2)),o=Math.sin(n)/n,s=.5*(e*r+2*i*Math.sin(e/2)/o)||0,a=.5*(t+Math.sin(t)/o)||0;return{x:.5*(s/Math.PI+.5),y:1-.5*(a/Math.PI+1),z:0}}unproject(e,t){let i=e=(2*e-.5)*Math.PI,r=t=(2*(1-t)-1)*Math.PI,n=25;const o=1e-6;let s=0,a=0;do{const n=Math.cos(r),o=Math.sin(r),l=2*o*n,c=o*o,h=n*n,u=Math.cos(i/2),d=Math.sin(i/2),p=2*u*d,f=d*d,_=1-h*u*u,g=_?1/_:0,y=_?Math.acos(n*u)*Math.sqrt(1/_):0,x=.5*(2*y*n*d+2*i/Math.PI)-e,v=.5*(y*o+r)-t,b=.5*g*(h*f+y*n*u*c)+1/Math.PI,w=g*(p*l/4-y*o*d),T=.125*g*(l*d-y*o*h*p),E=.5*g*(c*u+y*f*n)+.5,S=w*T-E*b;s=(v*w-x*E)/S,a=(x*T-v*b)/S,i=m(i-s,-Math.PI,Math.PI),r=m(r-a,-Qp,Qp)}while((Math.abs(s)>o||Math.abs(a)>o)&&--n>0);return new Qs(h(i),h(r))}}class tf extends Op{constructor(e){super(e),this.center=e.center||[0,0],this.parallels=e.parallels||[0,0],this.cosPhi=Math.max(.01,Math.cos(c(this.parallels[0]))),this.scale=1/(2*Math.max(Math.PI*this.cosPhi,1/this.cosPhi)),this.wrap=!0,this.supportsWorldCopies=!0}project(e,t){const{scale:i,cosPhi:r}=this;return{x:c(e)*r*i+.5,y:-Math.sin(c(t))/r*i+.5,z:0}}unproject(e,t){const{scale:i,cosPhi:r}=this,n=-(t-.5)/i,o=m(h((e-.5)/i)/r,-180,180),s=Math.asin(m(n*r,-1,1)),a=m(h(s),-85.051129,la);return new Qs(o,a)}}e.ARRAY_TYPE=Ua,e.AUTH_ERR_MSG=ee,e.Aabb=xl,e.Actor=class{constructor(e,t,i){this.target=e,this.parent=t,this.mapId=i,this.callbacks={},this.cancelCallbacks={},I(["receive"],this),this.target.addEventListener("message",this.receive,!1),this.globalScope=B()?e:s,this.scheduler=new _d}send(e,t,i,r,n=!1,o){const s=Math.round(1e18*Math.random()).toString(36).substring(0,10);i&&(i.metadata=o,this.callbacks[s]=i);const a=N(this.globalScope)?void 0:[];return this.target.postMessage({id:s,type:e,hasCallback:!!i,targetMapId:r,mustQueue:n,sourceMapId:this.mapId,data:cn(t,a)},a),{cancel:()=>{i&&delete this.callbacks[s],this.target.postMessage({id:s,type:"<cancel>",targetMapId:r,sourceMapId:this.mapId})}}}receive(e){const t=e.data,i=t.id;if(i&&(!t.targetMapId||this.mapId===t.targetMapId))if("<cancel>"===t.type){const e=this.cancelCallbacks[i];delete this.cancelCallbacks[i],e&&e.cancel()}else if(t.mustQueue||B()){const e=this.callbacks[i];this.cancelCallbacks[i]=this.scheduler.add((()=>this.processTask(i,t)),e&&e.metadata||{type:"message"})}else this.processTask(i,t)}processTask(e,t){if("<response>"===t.type){const i=this.callbacks[e];delete this.callbacks[e],i&&(t.error?i(hn(t.error)):i(null,hn(t.data)))}else{const i=N(this.globalScope)?void 0:[],r=t.hasCallback?(t,r)=>{delete this.cancelCallbacks[e],this.target.postMessage({id:e,type:"<response>",sourceMapId:this.mapId,error:t?cn(t):null,data:cn(r,i)},i)}:e=>{},n=hn(t.data);if(this.parent[t.type])this.parent[t.type](t.sourceMapId,n,r);else if(this.parent.getWorkerSource){const e=t.type.split(".");this.parent.getWorkerSource(t.sourceMapId,e[0],n.source)[e[1]](n,r)}else r(new Error(`Could not find function ${t.type}`))}}remove(){this.scheduler.remove(),this.target.removeEventListener("message",this.receive,!1)}},e.CanonicalTileID=Nd,e.Color=ht,e.ColorMode=bp,e.CullFaceMode=Ep,e.DEMData=_p,e.DataConstantProperty=mo,e.DedupedRequest=Bp,e.DepthMode=yp,e.EXTENT=Ys,e.Elevation=class{isDataAvailableAtPoint(e){const t=this._source();if(!t||e.y<0||e.y>1)return!1;const i=t.getSource().maxzoom,r=1<<i,n=Math.floor(e.x),o=Math.floor((e.x-n)*r),s=Math.floor(e.y*r),a=this.findDEMTileFor(new Zd(i,n,i,o,s));return!(!a||!a.dem)}getAtPointOrZero(e,t=0){return this.getAtPoint(e,t)||0}getAtPoint(e,t,i=!0){null==t&&(t=null);const r=this._source();if(!r)return t;if(e.y<0||e.y>1)return t;const n=r.getSource().maxzoom,o=1<<n,s=Math.floor(e.x),a=e.x-s,l=new Zd(n,s,n,Math.floor(a*o),Math.floor(e.y*o)),c=this.findDEMTileFor(l);if(!c||!c.dem)return t;const h=c.dem,u=1<<c.tileID.canonical.z,d=(a*u-c.tileID.canonical.x)*h.dim,p=(e.y*u-c.tileID.canonical.y)*h.dim,f=Math.floor(d),m=Math.floor(p);return(i?this.exaggeration():1)*ii(ii(h.get(f,m),h.get(f,m+1),p-m),ii(h.get(f+1,m),h.get(f+1,m+1),p-m),d-f)}getAtTileOffset(e,t,i){const r=1<<e.canonical.z;return this.getAtPointOrZero(new ca(e.wrap+(e.canonical.x+t/Ys)/r,(e.canonical.y+i/Ys)/r))}getAtTileOffsetFunc(e,t,i,r){return n=>{const o=this.getAtTileOffset(e,n.x,n.y),s=r.upVector(e.canonical,n.x,n.y);return rl(s,s,o*r.upVectorScale(e.canonical,t,i).metersToTile),s}}getForTilePoints(e,t,i,r){const n=Ap.create(this,e,r);return!!n&&(t.forEach((e=>{e[2]=this.exaggeration()*n.getElevationAt(e[0],e[1],i)})),!0)}getMinMaxForTile(e){const t=this.findDEMTileFor(e);if(!t||!t.dem)return null;const i=t.dem.tree,r=t.tileID,n=1<<e.canonical.z-r.canonical.z;let o=e.canonical.x/n-r.canonical.x,s=e.canonical.y/n-r.canonical.y,a=0;for(let t=0;t<e.canonical.z-r.canonical.z&&!i.leaves[a];t++){o*=2,s*=2;const e=2*Math.floor(s)+Math.floor(o);a=i.childOffsets[a]+e,o%=1,s%=1}return{min:this.exaggeration()*i.minimums[a],max:this.exaggeration()*i.maximums[a]}}getMinElevationBelowMSL(){throw new Error("Pure virtual method called.")}raycast(e,t,i){throw new Error("Pure virtual method called.")}pointCoordinate(e){throw new Error("Pure virtual method called.")}_source(){throw new Error("Pure virtual method called.")}exaggeration(){throw new Error("Pure virtual method called.")}findDEMTileFor(e){throw new Error("Pure virtual method called.")}get visibleDemTiles(){throw new Error("Getter must be implemented in subclass.")}},e.ErrorEvent=Oe,e.EvaluationParameters=oo,e.Event=Fe,e.Evented=Ue,e.FillExtrusionBucket=Vc,e.Frustum=yl,e.GLOBE_RADIUS=wd,e.GlobeSharedBuffers=class{constructor(e){this._createGrid(e),this._createPoles(e),this._createAtmosphere(e)}destroy(){this._poleIndexBuffer.destroy(),this._gridBuffer.destroy(),this._gridIndexBuffer.destroy(),this._poleNorthVertexBuffer.destroy(),this._poleSouthVertexBuffer.destroy();for(const e of this._poleSegments)e.destroy();this._gridSegments.destroy(),this.atmosphereVertexBuffer.destroy(),this.atmosphereIndexBuffer.destroy(),this.atmosphereSegments.destroy(),this._wireframeIndexBuffer&&(this._wireframeIndexBuffer.destroy(),this._wireframeSegments.destroy())}_createGrid(e){const t=new Mo,i=new No,r=65;for(let e=0;e<r;e++)for(let i=0;i<r;i++)t.emplaceBack(i,e);for(let e=0;e<64;e++)for(let t=0;t<64;t++){const n=e*r+t;i.emplaceBack(n+1,n,n+r),i.emplaceBack(n+r,n+r+1,n+1)}this._gridBuffer=e.createVertexBuffer(t,bd.members),this._gridIndexBuffer=e.createIndexBuffer(i,!0),this._gridSegments=Hs.simpleSegment(0,0,4225,8192)}_createPoles(e){const t=new No;for(let e=0;e<=64;e++)t.emplaceBack(0,e+1,e+2);this._poleIndexBuffer=e.createIndexBuffer(t,!0);const i=new qo,r=new qo;this._poleSegments=[];for(let e=0,t=0;e<5;e++){const n=1<<e,o=512*n/Math.PI/2,s=360/n;i.emplaceBack(0,-o,0,0,0,.5,0),r.emplaceBack(0,-o,0,0,0,.5,1);for(let e=0;e<=64;e++){const t=e/64,n=ii(0,s,t),[a,l,c]=kd(Ud,Vd,n,o);i.emplaceBack(a,l,c,0,0,t,0),r.emplaceBack(a,l,c,0,0,t,1)}this._poleSegments.push(Hs.simpleSegment(t,0,66,64)),t+=66}this._poleNorthVertexBuffer=e.createVertexBuffer(i,xd,!1),this._poleSouthVertexBuffer=e.createVertexBuffer(r,xd,!1)}_createAtmosphere(e){const t=new Xo;t.emplaceBack(-1,1,1,0,0),t.emplaceBack(1,1,1,1,0),t.emplaceBack(1,-1,1,1,1),t.emplaceBack(-1,-1,1,0,1);const i=new No;i.emplaceBack(0,1,2),i.emplaceBack(2,3,0),this.atmosphereVertexBuffer=e.createVertexBuffer(t,yd.members),this.atmosphereIndexBuffer=e.createIndexBuffer(i),this.atmosphereSegments=Hs.simpleSegment(0,0,4,2)}getGridBuffers(){return[this._gridBuffer,this._gridIndexBuffer,this._gridSegments]}getPoleBuffers(e){return[this._poleNorthVertexBuffer,this._poleSouthVertexBuffer,this._poleIndexBuffer,this._poleSegments[e]]}getWirefameBuffers(e){if(!this._wireframeSegments){const t=new Ho,i=64,r=i+1;for(let e=0;e<i;e++)for(let n=0;n<i;n++){const i=e*r+n;t.emplaceBack(i,i+1),t.emplaceBack(i,i+r),t.emplaceBack(i,i+r+1)}this._wireframeIndexBuffer=e.createIndexBuffer(t),this._wireframeSegments=Hs.simpleSegment(0,0,i*i,t.length)}return[this._gridBuffer,this._wireframeIndexBuffer,this._wireframeSegments]}},e.GlyphManager=Tu,e.ImagePosition=qh,e.LineAtlas=dd,e.LngLat=Qs,e.LngLatBounds=Ks,e.LocalGlyphMode=wu,e.MAX_MERCATOR_LATITUDE=la,e.MercatorCoordinate=ca,e.ONE_EM=hh,e.OverscaledTileID=Zd,e.Properties=vo,e.RGBAImage=zl,e.Ray=class{constructor(e,t){this.pos=e,this.dir=t}intersectsPlane(e,t,i){const r=sl(t,this.dir);if(Math.abs(r)<1e-6)return!1;const n=((e[0]-this.pos[0])*t[0]+(e[1]-this.pos[1])*t[1]+(e[2]-this.pos[2])*t[2])/r;return i[0]=this.pos[0]+this.dir[0]*n,i[1]=this.pos[1]+this.dir[1]*n,i[2]=this.pos[2]+this.dir[2]*n,!0}closestPointOnSphere(e,t,i){if(function(e,t){var i=e[0],r=e[1],n=e[2],o=t[0],s=t[1],a=t[2];return Math.abs(i-o)<=Oa*Math.max(1,Math.abs(i),Math.abs(o))&&Math.abs(r-s)<=Oa*Math.max(1,Math.abs(r),Math.abs(s))&&Math.abs(n-a)<=Oa*Math.max(1,Math.abs(n),Math.abs(a))}(this.pos,e)||0===t)return i[0]=i[1]=i[2]=0,!1;const[r,n,o]=this.dir,s=this.pos[0]-e[0],a=this.pos[1]-e[1],l=this.pos[2]-e[2],c=r*r+n*n+o*o,h=2*(s*r+a*n+l*o),u=h*h-4*c*(s*s+a*a+l*l-t*t);if(u<0){const e=Math.max(-h/2,0),c=s+r*e,u=a+n*e,d=l+o*e,p=Math.hypot(c,u,d);return i[0]=c*t/p,i[1]=u*t/p,i[2]=d*t/p,!1}{const e=(-h-Math.sqrt(u))/(2*c);if(e<0){const e=Math.hypot(s,a,l);return i[0]=s*t/e,i[1]=a*t/e,i[2]=l*t/e,!1}return i[0]=s+r*e,i[1]=a+n*e,i[2]=l+o*e,!0}}},e.RequestManager=class{constructor(e,t,i){this._transformRequestFn=e,this._customAccessToken=t,this._silenceAuthErrors=!!i,this._createSkuToken()}_createSkuToken(){const e=function(){let e="";for(let t=0;t<10;t++)e+="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"[Math.floor(62*Math.random())];return{token:["1",Q,e].join(""),tokenExpiresAt:Date.now()+432e5}}();this._skuToken=e.token,this._skuTokenExpiresAt=e.tokenExpiresAt}_isSkuTokenExpired(){return Date.now()>this._skuTokenExpiresAt}transformRequest(e,t){return this._transformRequestFn&&this._transformRequestFn(e,t)||{url:e}}normalizeStyleURL(e,t){if(!te(e))return e;const i=ne(e);return i.path=`/styles/v1${i.path}`,this._makeAPIURL(i,this._customAccessToken||t)}normalizeGlyphsURL(e,t){if(!te(e))return e;const i=ne(e);return i.path=`/fonts/v1${i.path}`,this._makeAPIURL(i,this._customAccessToken||t)}normalizeSourceURL(e,t){if(!te(e))return e;const i=ne(e);return i.path=`/v4/${i.authority}.json`,i.params.push("secure"),this._makeAPIURL(i,this._customAccessToken||t)}normalizeSpriteURL(e,t,i,r){const n=ne(e);return te(e)?(n.path=`/styles/v1${n.path}/sprite${t}${i}`,this._makeAPIURL(n,this._customAccessToken||r)):(n.path+=`${t}${i}`,oe(n))}normalizeTileURL(e,t,i){if(this._isSkuTokenExpired()&&this._createSkuToken(),e&&!te(e))return e;const r=ne(e);r.path=r.path.replace(/(\.(png|jpg)\d*)(?=$)/,`${t||i&&"raster"!==r.authority&&512===i?"@2x":""}${X.supported?".webp":"$1"}`),"raster"===r.authority?r.path=`/${q.RASTER_URL_PREFIX}${r.path}`:(r.path=r.path.replace(/^.+\/v4\//,"/"),r.path=`/${q.TILE_URL_VERSION}${r.path}`);const n=this._customAccessToken||function(e){for(const t of e){const e=t.match(/^access_token=(.*)$/);if(e)return e[1]}return null}(r.params)||q.ACCESS_TOKEN;return q.REQUIRE_ACCESS_TOKEN&&n&&this._skuToken&&r.params.push(`sku=${this._skuToken}`),this._makeAPIURL(r,n)}canonicalizeTileURL(e,t){const i=ne(e);if(!i.path.match(/^(\/v4\/|\/raster\/v1\/)/)||!i.path.match(/\.[\w]+$/))return e;let r="mapbox://";i.path.match(/^\/raster\/v1\//)?r+=`raster/${i.path.replace(`/${q.RASTER_URL_PREFIX}/`,"")}`:r+=`tiles/${i.path.replace(`/${q.TILE_URL_VERSION}/`,"")}`;let n=i.params;return t&&(n=n.filter((e=>!e.match(/^access_token=/)))),n.length&&(r+=`?${n.join("&")}`),r}canonicalizeTileset(e,t){const i=!!t&&te(t),r=[];for(const t of e.tiles||[])ie(t)?r.push(this.canonicalizeTileURL(t,i)):r.push(t);return r}_makeAPIURL(e,t){const i="See https://www.mapbox.com/api-documentation/#access-tokens-and-token-scopes",r=ne(q.API_URL);if(e.protocol=r.protocol,e.authority=r.authority,"http"===e.protocol){const t=e.params.indexOf("secure");t>=0&&e.params.splice(t,1)}if("/"!==r.path&&(e.path=`${r.path}${e.path}`),!q.REQUIRE_ACCESS_TOKEN)return oe(e);if(t=t||q.ACCESS_TOKEN,!this._silenceAuthErrors){if(!t)throw new Error(`An API access token is required to use Mapbox GL. ${i}`);if("s"===t[0])throw new Error(`Use a public access token (pk.*) with Mapbox GL, not a secret access token (sk.*). ${i}`)}return e.params=e.params.filter((e=>-1===e.indexOf("access_token"))),e.params.push(`access_token=${t||""}`),oe(e)}},e.ResourceType=Te,e.SegmentVector=Hs,e.SourceCache=Sp,e.StencilMode=vp,e.StructArrayLayout1ui2=Yo,e.StructArrayLayout2f1f2i16=Vo,e.StructArrayLayout2i4=Mo,e.StructArrayLayout2ui4=Ho,e.StructArrayLayout3f12=Ro,e.StructArrayLayout3ui6=No,e.StructArrayLayout4i8=Co,e.Texture=ud,e.Tile=op,e.Transitionable=lo,e.Uniform1f=Is,e.Uniform1i=class extends Ss{constructor(e,t){super(e,t),this.current=0}set(e){this.current!==e&&(this.current=e,this.gl.uniform1i(this.location,e))}},e.Uniform2f=class extends Ss{constructor(e,t){super(e,t),this.current=[0,0]}set(e){e[0]===this.current[0]&&e[1]===this.current[1]||(this.current=e,this.gl.uniform2f(this.location,e[0],e[1]))}},e.Uniform3f=class extends Ss{constructor(e,t){super(e,t),this.current=[0,0,0]}set(e){e[0]===this.current[0]&&e[1]===this.current[1]&&e[2]===this.current[2]||(this.current=e,this.gl.uniform3f(this.location,e[0],e[1],e[2]))}},e.Uniform4f=Ms,e.UniformColor=As,e.UniformMatrix2f=class extends Ss{constructor(e,t){super(e,t),this.current=ks}set(e){for(let t=0;t<4;t++)if(e[t]!==this.current[t]){this.current=e,this.gl.uniformMatrix2fv(this.location,!1,e);break}}},e.UniformMatrix3f=class extends Ss{constructor(e,t){super(e,t),this.current=zs}set(e){for(let t=0;t<9;t++)if(e[t]!==this.current[t]){this.current=e,this.gl.uniformMatrix3fv(this.location,!1,e);break}}},e.UniformMatrix4f=class extends Ss{constructor(e,t){super(e,t),this.current=Cs}set(e){if(e[12]!==this.current[12]||e[0]!==this.current[0])return this.current=e,void this.gl.uniformMatrix4fv(this.location,!1,e);for(let t=1;t<16;t++)if(e[t]!==this.current[t]){this.current=e,this.gl.uniformMatrix4fv(this.location,!1,e);break}}},e.UnwrappedTileID=Gd,e.ValidationError=mr,e.VectorTileWorkerSource=class extends Ue{constructor(e,t,i,r,n){super(),this.actor=e,this.layerIndex=t,this.availableImages=i,this.loadVectorData=n||Rp,this.loading={},this.loaded={},this.deduped=new Bp(e.scheduler),this.isSpriteLoaded=r,this.scheduler=e.scheduler}loadTile(e,t){const i=e.uid,r=e&&e.request,n=r&&r.collectResourceTiming,o=this.loading[i]=new Pp(e);o.abort=this.loadVectorData(e,((s,a)=>{const l=!this.loading[i];if(delete this.loading[i],l||s||!a)return o.status="done",l||(this.loaded[i]=o),t(s);const c=a.rawData,h={};a.expires&&(h.expires=a.expires),a.cacheControl&&(h.cacheControl=a.cacheControl),o.vectorTile=a.vectorTile||new Pc.VectorTile(new wh(c));const u=()=>{o.parse(o.vectorTile,this.layerIndex,this.availableImages,this.actor,((e,i)=>{if(e||!i)return t(e);const o={};if(n){const e=md(r);e.length>0&&(o.resourceTiming=JSON.parse(JSON.stringify(e)))}t(null,v({rawTileData:c.slice(0)},i,h,o))}))};this.isSpriteLoaded?u():this.once("isSpriteLoaded",(()=>{this.scheduler?this.scheduler.add(u,{type:"parseTile",isSymbolTile:e.isSymbolTile,zoom:e.tileZoom}):u()})),this.loaded=this.loaded||{},this.loaded[i]=o}))}reloadTile(e,t){const i=this.loaded,r=e.uid,n=this;if(i&&i[r]){const o=i[r];o.showCollisionBoxes=e.showCollisionBoxes,o.enableTerrain=!!e.enableTerrain,o.projection=e.projection,o.tileTransform=qd(e.tileID.canonical,e.projection);const s=(e,i)=>{const r=o.reloadCallback;r&&(delete o.reloadCallback,o.parse(o.vectorTile,n.layerIndex,this.availableImages,n.actor,r)),t(e,i)};"parsing"===o.status?o.reloadCallback=s:"done"===o.status&&(o.vectorTile?o.parse(o.vectorTile,this.layerIndex,this.availableImages,this.actor,s):s())}}abortTile(e,t){const i=e.uid,r=this.loading[i];r&&(r.abort&&r.abort(),delete this.loading[i]),t()}removeTile(e,t){const i=this.loaded,r=e.uid;i&&i[r]&&delete i[r],t()}},e.WritingMode=Wh,e.ZoomHistory=un,e.add=Ja,e.addDynamicAttributes=Yu,e.adjoint=function(e,t){var i=t[0],r=t[1],n=t[2],o=t[3],s=t[4],a=t[5],l=t[6],c=t[7],h=t[8];return e[0]=s*h-a*c,e[1]=n*c-r*h,e[2]=r*a-n*s,e[3]=a*l-o*h,e[4]=i*h-n*l,e[5]=n*o-i*a,e[6]=o*c-s*l,e[7]=r*l-i*c,e[8]=i*s-r*o,e},e.asyncAll=y,e.bezier=p,e.bindAll=I,e.boundsAttributes=rp,e.bufferConvexPolygon=function(e,t){const i=[];for(let r=0;r<e.length;r++){const n=g(r-1,-1,e.length-1),o=g(r+1,-1,e.length-1),s=e[r],a=e[o],l=e[n].sub(s).unit(),c=a.sub(s).unit(),h=c.angleWithSep(l.x,l.y),u=l.add(c).unit().mult(-1*t/Math.sin(h/2));i.push(s.add(u))}return i},e.cacheEntryPossiblyAdded=function(e){we++,we>xe&&(e.getActor().send("enforceCacheSizeLimit",ye),we=0)},e.calculateGlobeLabelMatrix=function(e,t){const{lng:i,lat:r}=e._center,n=Rd(0,0,e.worldSize/e._projectionScaler,i,r);return Na(n,n,function(e){const t=ja(new Float64Array(16)),i=1/Ld(e);return Ga(t,t,e.min),Za(t,t,[i,i,i]),t}(Ad(t)))},e.calculateGlobeMatrix=Fd,e.calculateGlobeMercatorMatrix=function(e){const t=e.worldSize,i=e.point,r=na(1,e.center.lat)*t,n=e.pixelsPerMeter,o=t/(r/e.pixelsPerMeter),s=ja(new Float64Array(16));return Ga(s,s,[i.x,i.y,0]),Za(s,s,[o,o,n]),Float32Array.from(s)},e.circumferenceAtLatitude=ta,e.clamp=m,e.clearTileCache=function(e){const t=s.caches.delete(me);e&&t.catch(e).then((()=>e()))},e.clipLine=yu,e.clone=function(e){var t=new Ua(16);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t},e.clone$1=z,e.collisionCircleLayout=ch,e.config=q,e.conjugate=function(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e[3]=t[3],e},e.create=function(){var e=new Ua(16);return Ua!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e},e.create$1=Va,e.createExpression=cr,e.createLayout=So,e.createStyleLayer=function(e){return"custom"===e.type?new ad(e):new hd[e.type](e)},e.cross=al,e.degToRad=c,e.div=function(e,t,i){return e[0]=t[0]/i[0],e[1]=t[1]/i[1],e[2]=t[2]/i[2],e},e.dot=sl,e.earthRadius=Js,e.ease=f,e.easeCubicInOut=d,e.emitValidationErrors=tn,e.endsWith=M,e.enforceCacheSizeLimit=function(e){ve(),_e&&_e.then((t=>{t.keys().then((i=>{for(let r=0;r<i.length-e;r++)t.delete(i[r])}))}))},e.evaluateSizeForFeature=ph,e.evaluateSizeForZoom=fh,e.evaluateVariableOffset=Fu,e.evented=to,e.exactEquals=function(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]},e.exactEquals$1=function(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]},e.exported=Z,e.exported$1=X,e.extend=v,e.extend$1=je,e.filterObject=C,e.fromMat4=function(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[4],e[4]=t[5],e[5]=t[6],e[6]=t[8],e[7]=t[9],e[8]=t[10],e},e.fromQuat=function(e,t){var i=t[0],r=t[1],n=t[2],o=t[3],s=i+i,a=r+r,l=n+n,c=i*s,h=r*s,u=r*a,d=n*s,p=n*a,f=n*l,m=o*s,_=o*a,g=o*l;return e[0]=1-u-f,e[1]=h+g,e[2]=d-_,e[3]=0,e[4]=h-g,e[5]=1-c-f,e[6]=p+m,e[7]=0,e[8]=d+_,e[9]=p-m,e[10]=1-c-u,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e},e.fromRotation=function(e,t){var i=Math.sin(t),r=Math.cos(t);return e[0]=r,e[1]=i,e[2]=0,e[3]=-i,e[4]=r,e[5]=0,e[6]=0,e[7]=0,e[8]=1,e},e.fromScaling=function(e,t){return e[0]=t[0],e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=t[1],e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=t[2],e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e},e.furthestTileCorner=function(e){const t=Math.round((e+45+360)%360/90)%4;return u[t]},e.getAABBPointSquareDist=function(e,t,i){let r=0;for(let n=0;n<2;++n){const o=i?i[n]:0;e[n]>o&&(r+=(e[n]-o)*(e[n]-o)),t[n]<o&&(r+=(o-t[n])*(o-t[n]))}return r},e.getAnchorAlignment=su,e.getAnchorJustification=Uu,e.getBounds=function(e){let t=1/0,i=1/0,r=-1/0,o=-1/0;for(const n of e)t=Math.min(t,n.x),i=Math.min(i,n.y),r=Math.max(r,n.x),o=Math.max(o,n.y);return{min:new n(t,i),max:new n(r,o)}},e.getColumn=function(e,t){return[e[4*t],e[4*t+1],e[4*t+2],e[4*t+3]]},e.getGridMatrix=function(e,t){const[i,r]=t,n=.015625;return[0,(r[1]-i[1])*n,1<<e.z,(r[0]-i[0])*n,0,e.y,i[0],i[1],n]},e.getImage=Le,e.getJSON=function(e,t){return Ie(v(e,{type:"json"}),t)},e.getMapSessionAPI=pe,e.getPerformanceMeasurement=md,e.getProjection=function(e){const t=e.parallels,i=!!t&&Math.abs(t[0]+t[1])<.01;switch(e.name){case"mercator":return new Up(e);case"equirectangular":return new Xp(e);case"naturalEarth":return new Jp(e);case"equalEarth":return new qp(e);case"winkelTripel":return new ef(e);case"albers":return i?new tf(e):new Vp(e);case"lambertConformalConic":return i?new tf(e):new Yp(e)}throw new Error(`Invalid projection name: ${e.name}`)},e.getRTLTextPluginStatus=io,e.getReferrer=Se,e.getTilePoint=function(e,{x:t,y:i},r=0){return new n(((t-r)*e.scale-e.x)*Ys,(i*e.scale-e.y)*Ys)},e.getTileVec3=function(e,t,i=0){return Ka(((t.x-i)*e.scale-e.x)*Ys,(t.y*e.scale-e.y)*Ys,aa(t.z,t.y))},e.getVideo=function(e,t){const i=s.document.createElement("video");i.muted=!0,i.onloadstart=function(){t(null,i)};for(let t=0;t<e.length;t++){const r=s.document.createElement("source");ze(e[t])||(i.crossOrigin="Anonymous"),r.src=e[t],i.appendChild(r)}return{cancel:()=>{}}},e.globeECEFOrigin=function(e,t){const i=[0,0,0];return ll(i,i,Bd(Ad(t.canonical))),ll(i,i,e),i},e.globePixelsToTileUnits=function(e,t){return Ys/(512*Math.pow(2,e))*Ld(Ad(t))},e.globePoleMatrixForTile=function(e,t,i){const r=ja(new Float64Array(16)),n=1<<e,o=360*(t/n-.5),s=i.point,a=i.worldSize/(i.tileSize*n);return Ga(r,r,[s.x,s.y,-i.worldSize/Math.PI/2]),Za(r,r,[a,a,a]),$a(r,r,c(-i._center.lat)),qa(r,r,c(-i._center.lng+o)),Float32Array.from(r)},e.globeTileLatLngCorners=zd,e.globeToMercatorTransition=function(e){return _(5,6,e)},e.identity=ja,e.identity$1=_l,e.invert=function(e,t){var i=t[0],r=t[1],n=t[2],o=t[3],s=t[4],a=t[5],l=t[6],c=t[7],h=t[8],u=t[9],d=t[10],p=t[11],f=t[12],m=t[13],_=t[14],g=t[15],y=i*a-r*s,x=i*l-n*s,v=i*c-o*s,b=r*l-n*a,w=r*c-o*a,T=n*c-o*l,E=h*m-u*f,S=h*_-d*f,I=h*g-p*f,M=u*_-d*m,A=u*g-p*m,C=d*g-p*_,z=y*C-x*A+v*M+b*I-w*S+T*E;return z?(e[0]=(a*C-l*A+c*M)*(z=1/z),e[1]=(n*A-r*C-o*M)*z,e[2]=(m*T-_*w+g*b)*z,e[3]=(d*w-u*T-p*b)*z,e[4]=(l*I-s*C-c*S)*z,e[5]=(i*C-n*I+o*S)*z,e[6]=(_*v-f*T-g*x)*z,e[7]=(h*T-d*v+p*x)*z,e[8]=(s*A-a*I+c*E)*z,e[9]=(r*I-i*A-o*E)*z,e[10]=(f*w-m*v+g*y)*z,e[11]=(u*v-h*w-p*y)*z,e[12]=(a*S-s*M-l*E)*z,e[13]=(i*M-r*S+n*E)*z,e[14]=(m*x-f*b-_*y)*z,e[15]=(h*b-u*x+d*y)*z,e):null},e.isMapAuthenticated=function(e){return fe.has(e)},e.isMapboxURL=te,e.isSafariWithAntialiasingBug=function(e){const t=e.navigator?e.navigator.userAgent:null;return!!N(e)&&t&&(t.match("Version/15.4")||t.match("Version/15.5")||t.match(/CPU (OS|iPhone OS) (15_4|15_5) like Mac OS X/))},e.latFromMercatorY=sa,e.len=pl,e.length=Ya,e.length$1=function(e){return Math.hypot(e[0],e[1],e[2],e[3])},e.loadVectorTile=Rp,e.makeRequest=Ie,e.mercatorXfromLng=ia,e.mercatorYfromLat=ra,e.mercatorZfromAltitude=na,e.mul=Xa,e.mul$1=dl,e.multiply=function(e,t,i){var r=t[0],n=t[1],o=t[2],s=t[3],a=t[4],l=t[5],c=t[6],h=t[7],u=t[8],d=i[0],p=i[1],f=i[2],m=i[3],_=i[4],g=i[5],y=i[6],x=i[7],v=i[8];return e[0]=d*r+p*s+f*c,e[1]=d*n+p*a+f*h,e[2]=d*o+p*l+f*u,e[3]=m*r+_*s+g*c,e[4]=m*n+_*a+g*h,e[5]=m*o+_*l+g*u,e[6]=y*r+x*s+v*c,e[7]=y*n+x*a+v*h,e[8]=y*o+x*l+v*u,e},e.multiply$1=Na,e.multiply$2=el,e.nextPowerOfTwo=E,e.normalize=ol,e.normalize$1=function(e,t){var i=t[0],r=t[1],n=t[2],o=t[3],s=i*i+r*r+n*n+o*o;return s>0&&(s=1/Math.sqrt(s)),e[0]=i*s,e[1]=r*s,e[2]=n*s,e[3]=o*s,e},e.number=ii,e.ortho=function(e,t,i,r,n,o,s){var a=1/(t-i),l=1/(r-n),c=1/(o-s);return e[0]=-2*a,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*l,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*c,e[11]=0,e[12]=(t+i)*a,e[13]=(n+r)*l,e[14]=(s+o)*c,e[15]=1,e},e.pbf=wh,e.perspective=function(e,t,i,r,n){var o,s=1/Math.tan(t/2);return e[0]=s/i,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=s,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=-1,e[12]=0,e[13]=0,e[15]=0,null!=n&&n!==1/0?(e[10]=(n+r)*(o=1/(r-n)),e[14]=2*n*r*o):(e[10]=-1,e[14]=-2*r),e},e.pick=function(e,t){const i={};for(let r=0;r<t.length;r++){const n=t[r];n in e&&(i[n]=e[n])}return i},e.plugin=no,e.pointGeometry=n,e.polygonIntersectsBox=za,e.polygonIntersectsPolygon=va,e.polygonizeBounds=function(e,t,i=0,r=!0){const o=new n(i,i),s=e.sub(o),a=t.add(o),l=[s,new n(a.x,s.y),a,new n(s.x,a.y)];return r&&l.push(s),l},e.posAttributes=bd,e.postMapLoadEvent=ue,e.postTurnstileEvent=ce,e.potpack=$h,e.prevPowerOfTwo=function(e){return e<=1?1:Math.pow(2,Math.floor(Math.log(e)/Math.LN2))},e.radToDeg=h,e.refProperties=["type","source","source-layer","minzoom","maxzoom","filter","layout"],e.registerForPluginStateChange=function(e){return e({pluginStatus:Kn,pluginURL:Jn}),to.on("pluginStateChange",e),e},e.removeAuthState=function(e){fe.delete(e)},e.renderColorRamp=Dl,e.rotateX=$a,e.rotateX$1=gl,e.rotateY=qa,e.rotateZ=function(e,t,i){var r=Math.sin(i),n=Math.cos(i),o=t[0],s=t[1],a=t[2],l=t[3],c=t[4],h=t[5],u=t[6],d=t[7];return t!==e&&(e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=o*n+c*r,e[1]=s*n+h*r,e[2]=a*n+u*r,e[3]=l*n+d*r,e[4]=c*n-o*r,e[5]=h*n-s*r,e[6]=u*n-a*r,e[7]=d*n-l*r,e},e.rotateZ$1=function(e,t,i){i*=.5;var r=t[0],n=t[1],o=t[2],s=t[3],a=Math.sin(i),l=Math.cos(i);return e[0]=r*l+n*a,e[1]=n*l-r*a,e[2]=o*l+s*a,e[3]=s*l-o*a,e},e.scale=Za,e.scale$1=function(e,t,i){return e[0]=t[0]*i,e[1]=t[1]*i,e[2]=t[2]*i,e[3]=t[3]*i,e},e.scale$2=rl,e.scaleAndAdd=nl,e.setCacheLimits=function(e,t){ye=e,xe=t},e.setColumn=function(e,t,i){e[4*t+0]=i[0],e[4*t+1]=i[1],e[4*t+2]=i[2],e[4*t+3]=i[3]},e.setRTLTextPlugin=function(e,t,i=!1){if(Kn===Xn||Kn===Wn||Kn===Hn)throw new Error("setRTLTextPlugin cannot be called multiple times.");Jn=Z.resolveURL(e),Kn=Xn,Yn=t,eo(),i||ro()},e.smoothstep=_,e.spec=Ve,e.storeAuthState=function(e,t){t?fe.add(e):fe.delete(e)},e.sub=ul,e.subtract=Qa,e.symbolSize=mh,e.tileAABB=function(e,t,i,r,n,o,s,a,l){if("globe"===l.name)return Cd(e,t,new Nd(i,r,n));const c=qd({z:i,x:r,y:n},l);return new xl([(o+c.x/c.scale)*t,t*(c.y/c.scale),s],[(o+c.x2/c.scale)*t,t*(c.y2/c.scale),a])},e.tileTransform=qd,e.transformMat3=function(e,t,i){var r=t[0],n=t[1],o=t[2];return e[0]=r*i[0]+n*i[3]+o*i[6],e[1]=r*i[1]+n*i[4]+o*i[7],e[2]=r*i[2]+n*i[5]+o*i[8],e},e.transformMat4=ll,e.transformMat4$1=fl,e.transformQuat=cl,e.translate=Ga,e.transpose=function(e,t){if(e===t){var i=t[1],r=t[2],n=t[5];e[1]=t[3],e[2]=t[6],e[3]=i,e[5]=t[7],e[6]=r,e[7]=n}else e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8];return e},e.triggerPluginCompletionEvent=Qn,e.uniqueId=w,e.validateCustomStyleLayer=function(e){const t=[],i=e.id;return void 0===i&&t.push({message:`layers.${i}: missing required property "id"`}),void 0===e.render&&t.push({message:`layers.${i}: missing required method "render"`}),e.renderingMode&&"2d"!==e.renderingMode&&"3d"!==e.renderingMode&&t.push({message:`layers.${i}: property "renderingMode" must be either "2d" or "3d"`}),t},e.validateFilter=e=>en(Rr(e)),e.validateFog=e=>en(Xr(e)),e.validateLayer=e=>en(jr(e)),e.validateLight=e=>en($r(e)),e.validateSource=e=>en(Zr(e)),e.validateStyle=Kr,e.validateTerrain=e=>en(qr(e)),e.values=x,e.vectorTile=Pc,e.version=t,e.warnOnce=D,e.window=s,e.wrap=g})),r(0,(function(e){function t(e){if("number"==typeof e||"boolean"==typeof e||"string"==typeof e||null==e)return JSON.stringify(e);if(Array.isArray(e)){let i="[";for(const r of e)i+=`${t(r)},`;return`${i}]`}let i="{";for(const r of Object.keys(e).sort())i+=`${r}:${t(e[r])},`;return`${i}}`}function i(i){let r="";for(const n of e.refProperties)r+=`/${t(i[n])}`;return r}class r{constructor(e){this.keyCache={},e&&this.replace(e)}replace(e){this._layerConfigs={},this._layers={},this.update(e,[])}update(t,r){for(const i of t)this._layerConfigs[i.id]=i,(this._layers[i.id]=e.createStyleLayer(i)).compileFilter(),this.keyCache[i.id]&&delete this.keyCache[i.id];for(const e of r)delete this.keyCache[e],delete this._layerConfigs[e],delete this._layers[e];this.familiesBySource={};const n=function(e,t){const r={};for(let n=0;n<e.length;n++){const o=t&&t[e[n].id]||i(e[n]);t&&(t[e[n].id]=o);let s=r[o];s||(s=r[o]=[]),s.push(e[n])}const n=[];for(const e in r)n.push(r[e]);return n}(e.values(this._layerConfigs),this.keyCache);for(const e of n){const t=e.map((e=>this._layers[e.id])),i=t[0];if("none"===i.visibility)continue;const r=i.source||"";let n=this.familiesBySource[r];n||(n=this.familiesBySource[r]={});const o=i.sourceLayer||"_geojsonTileLayer";let s=n[o];s||(s=n[o]=[]),s.push(t)}}}class n{loadTile(t,i){const{uid:r,encoding:n,rawImageData:o,padding:s,buildQuadTree:a}=t,l=e.window.ImageBitmap&&o instanceof e.window.ImageBitmap?this.getImageData(o,s):o;i(null,new e.DEMData(r,l,n,s<1,a))}getImageData(e,t){this.offscreenCanvas&&this.offscreenCanvasContext||(this.offscreenCanvas=new OffscreenCanvas(e.width,e.height),this.offscreenCanvasContext=this.offscreenCanvas.getContext("2d")),this.offscreenCanvas.width=e.width,this.offscreenCanvas.height=e.height,this.offscreenCanvasContext.drawImage(e,0,0,e.width,e.height);const i=this.offscreenCanvasContext.getImageData(-t,-t,e.width+2*t,e.height+2*t);return this.offscreenCanvasContext.clearRect(0,0,this.offscreenCanvas.width,this.offscreenCanvas.height),i}}var o=function e(t,i){var r,n=t&&t.type;if("FeatureCollection"===n)for(r=0;r<t.features.length;r++)e(t.features[r],i);else if("GeometryCollection"===n)for(r=0;r<t.geometries.length;r++)e(t.geometries[r],i);else if("Feature"===n)e(t.geometry,i);else if("Polygon"===n)s(t.coordinates,i);else if("MultiPolygon"===n)for(r=0;r<t.coordinates.length;r++)s(t.coordinates[r],i);return t};function s(e,t){if(0!==e.length){a(e[0],t);for(var i=1;i<e.length;i++)a(e[i],!t)}}function a(e,t){for(var i=0,r=0,n=0,o=e.length,s=o-1;n<o;s=n++){var a=(e[n][0]-e[s][0])*(e[s][1]+e[n][1]),l=i+a;r+=Math.abs(i)>=Math.abs(a)?i-l+a:a-l+i,i=l}i+r>=0!=!!t&&e.reverse()}const l=e.vectorTile.VectorTileFeature.prototype.toGeoJSON;class c{constructor(t){this._feature=t,this.extent=e.EXTENT,this.type=t.type,this.properties=t.tags,"id"in t&&!isNaN(t.id)&&(this.id=parseInt(t.id,10))}loadGeometry(){if(1===this._feature.type){const t=[];for(const i of this._feature.geometry)t.push([new e.pointGeometry(i[0],i[1])]);return t}{const t=[];for(const i of this._feature.geometry){const r=[];for(const t of i)r.push(new e.pointGeometry(t[0],t[1]));t.push(r)}return t}}toGeoJSON(e,t,i){return l.call(this,e,t,i)}}class h{constructor(t){this.layers={_geojsonTileLayer:this},this.name="_geojsonTileLayer",this.extent=e.EXTENT,this.length=t.length,this._features=t}feature(e){return new c(this._features[e])}}var u=e.vectorTile.VectorTileFeature,d=p;function p(e,t){this.options=t||{},this.features=e,this.length=e.length}function f(e,t){this.id="number"==typeof e.id?e.id:void 0,this.type=e.type,this.rawGeometry=1===e.type?[e.geometry]:e.geometry,this.properties=e.tags,this.extent=t||4096}p.prototype.feature=function(e){return new f(this.features[e],this.options.extent)},f.prototype.loadGeometry=function(){var t=this.rawGeometry;this.geometry=[];for(var i=0;i<t.length;i++){for(var r=t[i],n=[],o=0;o<r.length;o++)n.push(new e.pointGeometry(r[o][0],r[o][1]));this.geometry.push(n)}return this.geometry},f.prototype.bbox=function(){this.geometry||this.loadGeometry();for(var e=this.geometry,t=1/0,i=-1/0,r=1/0,n=-1/0,o=0;o<e.length;o++)for(var s=e[o],a=0;a<s.length;a++){var l=s[a];t=Math.min(t,l.x),i=Math.max(i,l.x),r=Math.min(r,l.y),n=Math.max(n,l.y)}return[t,r,i,n]},f.prototype.toGeoJSON=u.prototype.toGeoJSON;var m=g,_=d;function g(t){var i=new e.pbf;return function(e,t){for(var i in e.layers)t.writeMessage(3,y,e.layers[i])}(t,i),i.finish()}function y(e,t){var i;t.writeVarintField(15,e.version||1),t.writeStringField(1,e.name||""),t.writeVarintField(5,e.extent||4096);var r={keys:[],values:[],keycache:{},valuecache:{}};for(i=0;i<e.length;i++)r.feature=e.feature(i),t.writeMessage(2,x,r);var n=r.keys;for(i=0;i<n.length;i++)t.writeStringField(3,n[i]);var o=r.values;for(i=0;i<o.length;i++)t.writeMessage(4,E,o[i])}function x(e,t){var i=e.feature;void 0!==i.id&&t.writeVarintField(1,i.id),t.writeMessage(2,v,e),t.writeVarintField(3,i.type),t.writeMessage(4,T,i)}function v(e,t){var i=e.feature,r=e.keys,n=e.values,o=e.keycache,s=e.valuecache;for(var a in i.properties){var l=i.properties[a],c=o[a];if(null!==l){void 0===c&&(r.push(a),o[a]=c=r.length-1),t.writeVarint(c);var h=typeof l;"string"!==h&&"boolean"!==h&&"number"!==h&&(l=JSON.stringify(l));var u=h+":"+l,d=s[u];void 0===d&&(n.push(l),s[u]=d=n.length-1),t.writeVarint(d)}}}function b(e,t){return(t<<3)+(7&e)}function w(e){return e<<1^e>>31}function T(e,t){for(var i=e.loadGeometry(),r=e.type,n=0,o=0,s=i.length,a=0;a<s;a++){var l=i[a],c=1;1===r&&(c=l.length),t.writeVarint(b(1,c));for(var h=3===r?l.length-1:l.length,u=0;u<h;u++){1===u&&1!==r&&t.writeVarint(b(2,h-1));var d=l[u].x-n,p=l[u].y-o;t.writeVarint(w(d)),t.writeVarint(w(p)),n+=d,o+=p}3===r&&t.writeVarint(b(7,1))}}function E(e,t){var i=typeof e;"string"===i?t.writeStringField(1,e):"boolean"===i?t.writeBooleanField(7,e):"number"===i&&(e%1!=0?t.writeDoubleField(3,e):e<0?t.writeSVarintField(6,e):t.writeVarintField(5,e))}function S(e,t,i,r,n,o){if(n-r<=i)return;const s=r+n>>1;I(e,t,s,r,n,o%2),S(e,t,i,r,s-1,o+1),S(e,t,i,s+1,n,o+1)}function I(e,t,i,r,n,o){for(;n>r;){if(n-r>600){const s=n-r+1,a=i-r+1,l=Math.log(s),c=.5*Math.exp(2*l/3),h=.5*Math.sqrt(l*c*(s-c)/s)*(a-s/2<0?-1:1);I(e,t,i,Math.max(r,Math.floor(i-a*c/s+h)),Math.min(n,Math.floor(i+(s-a)*c/s+h)),o)}const s=t[2*i+o];let a=r,l=n;for(M(e,t,r,i),t[2*n+o]>s&&M(e,t,r,n);a<l;){for(M(e,t,a,l),a++,l--;t[2*a+o]<s;)a++;for(;t[2*l+o]>s;)l--}t[2*r+o]===s?M(e,t,r,l):(l++,M(e,t,l,n)),l<=i&&(r=l+1),i<=l&&(n=l-1)}}function M(e,t,i,r){A(e,i,r),A(t,2*i,2*r),A(t,2*i+1,2*r+1)}function A(e,t,i){const r=e[t];e[t]=e[i],e[i]=r}function C(e,t,i,r){const n=e-i,o=t-r;return n*n+o*o}m.fromVectorTileJs=g,m.fromGeojsonVt=function(e,t){t=t||{};var i={};for(var r in e)i[r]=new d(e[r].features,t),i[r].name=r,i[r].version=t.version,i[r].extent=t.extent;return g({layers:i})},m.GeoJSONWrapper=_;const z=e=>e[0],k=e=>e[1];class D{constructor(e,t=z,i=k,r=64,n=Float64Array){this.nodeSize=r,this.points=e;const o=e.length<65536?Uint16Array:Uint32Array,s=this.ids=new o(e.length),a=this.coords=new n(2*e.length);for(let r=0;r<e.length;r++)s[r]=r,a[2*r]=t(e[r]),a[2*r+1]=i(e[r]);S(s,a,r,0,s.length-1,0)}range(e,t,i,r){return function(e,t,i,r,n,o,s){const a=[0,e.length-1,0],l=[];let c,h;for(;a.length;){const u=a.pop(),d=a.pop(),p=a.pop();if(d-p<=s){for(let s=p;s<=d;s++)c=t[2*s],h=t[2*s+1],c>=i&&c<=n&&h>=r&&h<=o&&l.push(e[s]);continue}const f=Math.floor((p+d)/2);c=t[2*f],h=t[2*f+1],c>=i&&c<=n&&h>=r&&h<=o&&l.push(e[f]);const m=(u+1)%2;(0===u?i<=c:r<=h)&&(a.push(p),a.push(f-1),a.push(m)),(0===u?n>=c:o>=h)&&(a.push(f+1),a.push(d),a.push(m))}return l}(this.ids,this.coords,e,t,i,r,this.nodeSize)}within(e,t,i){return function(e,t,i,r,n,o){const s=[0,e.length-1,0],a=[],l=n*n;for(;s.length;){const c=s.pop(),h=s.pop(),u=s.pop();if(h-u<=o){for(let n=u;n<=h;n++)C(t[2*n],t[2*n+1],i,r)<=l&&a.push(e[n]);continue}const d=Math.floor((u+h)/2),p=t[2*d],f=t[2*d+1];C(p,f,i,r)<=l&&a.push(e[d]);const m=(c+1)%2;(0===c?i-n<=p:r-n<=f)&&(s.push(u),s.push(d-1),s.push(m)),(0===c?i+n>=p:r+n>=f)&&(s.push(d+1),s.push(h),s.push(m))}return a}(this.ids,this.coords,e,t,i,this.nodeSize)}}const P={minZoom:0,maxZoom:16,minPoints:2,radius:40,extent:512,nodeSize:64,log:!1,generateId:!1,reduce:null,map:e=>e},L=Math.fround||(B=new Float32Array(1),e=>(B[0]=+e,B[0]));var B;class R{constructor(e){this.options=Z(Object.create(P),e),this.trees=new Array(this.options.maxZoom+1)}load(e){const{log:t,minZoom:i,maxZoom:r,nodeSize:n}=this.options;t&&console.time("total time");const o=`prepare ${e.length} points`;t&&console.time(o),this.points=e;let s=[];for(let t=0;t<e.length;t++)e[t].geometry&&s.push(O(e[t],t));this.trees[r+1]=new D(s,$,q,n,Float32Array),t&&console.timeEnd(o);for(let e=r;e>=i;e--){const i=+Date.now();s=this._cluster(s,e),this.trees[e]=new D(s,$,q,n,Float32Array),t&&console.log("z%d: %d clusters in %dms",e,s.length,+Date.now()-i)}return t&&console.timeEnd("total time"),this}getClusters(e,t){let i=((e[0]+180)%360+360)%360-180;const r=Math.max(-90,Math.min(90,e[1]));let n=180===e[2]?180:((e[2]+180)%360+360)%360-180;const o=Math.max(-90,Math.min(90,e[3]));if(e[2]-e[0]>=360)i=-180,n=180;else if(i>n){const e=this.getClusters([i,r,180,o],t),s=this.getClusters([-180,r,n,o],t);return e.concat(s)}const s=this.trees[this._limitZoom(t)],a=s.range(j(i),N(o),j(n),N(r)),l=[];for(const e of a){const t=s.points[e];l.push(t.numPoints?U(t):this.points[t.index])}return l}getChildren(e){const t=this._getOriginId(e),i=this._getOriginZoom(e),r="No cluster with the specified id.",n=this.trees[i];if(!n)throw new Error(r);const o=n.points[t];if(!o)throw new Error(r);const s=this.options.radius/(this.options.extent*Math.pow(2,i-1)),a=n.within(o.x,o.y,s),l=[];for(const t of a){const i=n.points[t];i.parentId===e&&l.push(i.numPoints?U(i):this.points[i.index])}if(0===l.length)throw new Error(r);return l}getLeaves(e,t,i){const r=[];return this._appendLeaves(r,e,t=t||10,i=i||0,0),r}getTile(e,t,i){const r=this.trees[this._limitZoom(e)],n=Math.pow(2,e),{extent:o,radius:s}=this.options,a=s/o,l=(i-a)/n,c=(i+1+a)/n,h={features:[]};return this._addTileFeatures(r.range((t-a)/n,l,(t+1+a)/n,c),r.points,t,i,n,h),0===t&&this._addTileFeatures(r.range(1-a/n,l,1,c),r.points,n,i,n,h),t===n-1&&this._addTileFeatures(r.range(0,l,a/n,c),r.points,-1,i,n,h),h.features.length?h:null}getClusterExpansionZoom(e){let t=this._getOriginZoom(e)-1;for(;t<=this.options.maxZoom;){const i=this.getChildren(e);if(t++,1!==i.length)break;e=i[0].properties.cluster_id}return t}_appendLeaves(e,t,i,r,n){const o=this.getChildren(t);for(const t of o){const o=t.properties;if(o&&o.cluster?n+o.point_count<=r?n+=o.point_count:n=this._appendLeaves(e,o.cluster_id,i,r,n):n<r?n++:e.push(t),e.length===i)break}return n}_addTileFeatures(e,t,i,r,n,o){for(const s of e){const e=t[s],a=e.numPoints;let l,c,h;if(a)l=V(e),c=e.x,h=e.y;else{const t=this.points[e.index];l=t.properties,c=j(t.geometry.coordinates[0]),h=N(t.geometry.coordinates[1])}const u={type:1,geometry:[[Math.round(this.options.extent*(c*n-i)),Math.round(this.options.extent*(h*n-r))]],tags:l};let d;a?d=e.id:this.options.generateId?d=e.index:this.points[e.index].id&&(d=this.points[e.index].id),void 0!==d&&(u.id=d),o.features.push(u)}}_limitZoom(e){return Math.max(this.options.minZoom,Math.min(+e,this.options.maxZoom+1))}_cluster(e,t){const i=[],{radius:r,extent:n,reduce:o,minPoints:s}=this.options,a=r/(n*Math.pow(2,t));for(let r=0;r<e.length;r++){const n=e[r];if(n.zoom<=t)continue;n.zoom=t;const l=this.trees[t+1],c=l.within(n.x,n.y,a),h=n.numPoints||1;let u=h;for(const e of c){const i=l.points[e];i.zoom>t&&(u+=i.numPoints||1)}if(u>h&&u>=s){let e=n.x*h,s=n.y*h,a=o&&h>1?this._map(n,!0):null;const d=(r<<5)+(t+1)+this.points.length;for(const i of c){const r=l.points[i];if(r.zoom<=t)continue;r.zoom=t;const c=r.numPoints||1;e+=r.x*c,s+=r.y*c,r.parentId=d,o&&(a||(a=this._map(n,!0)),o(a,this._map(r)))}n.parentId=d,i.push(F(e/u,s/u,d,u,a))}else if(i.push(n),u>1)for(const e of c){const r=l.points[e];r.zoom<=t||(r.zoom=t,i.push(r))}}return i}_getOriginId(e){return e-this.points.length>>5}_getOriginZoom(e){return(e-this.points.length)%32}_map(e,t){if(e.numPoints)return t?Z({},e.properties):e.properties;const i=this.points[e.index].properties,r=this.options.map(i);return t&&r===i?Z({},r):r}}function F(e,t,i,r,n){return{x:L(e),y:L(t),zoom:1/0,id:i,parentId:-1,numPoints:r,properties:n}}function O(e,t){const[i,r]=e.geometry.coordinates;return{x:L(j(i)),y:L(N(r)),zoom:1/0,index:t,parentId:-1}}function U(e){return{type:"Feature",id:e.id,properties:V(e),geometry:{type:"Point",coordinates:[(t=e.x,360*(t-.5)),G(e.y)]}};var t}function V(e){const t=e.numPoints,i=t>=1e4?`${Math.round(t/1e3)}k`:t>=1e3?Math.round(t/100)/10+"k":t;return Z(Z({},e.properties),{cluster:!0,cluster_id:e.id,point_count:t,point_count_abbreviated:i})}function j(e){return e/360+.5}function N(e){const t=Math.sin(e*Math.PI/180),i=.5-.25*Math.log((1+t)/(1-t))/Math.PI;return i<0?0:i>1?1:i}function G(e){const t=(180-360*e)*Math.PI/180;return 360*Math.atan(Math.exp(t))/Math.PI-90}function Z(e,t){for(const i in t)e[i]=t[i];return e}function $(e){return e.x}function q(e){return e.y}function X(e,t,i,r){for(var n,o=r,s=i-t>>1,a=i-t,l=e[t],c=e[t+1],h=e[i],u=e[i+1],d=t+3;d<i;d+=3){var p=W(e[d],e[d+1],l,c,h,u);if(p>o)n=d,o=p;else if(p===o){var f=Math.abs(d-s);f<a&&(n=d,a=f)}}o>r&&(n-t>3&&X(e,t,n,r),e[n+2]=o,i-n>3&&X(e,n,i,r))}function W(e,t,i,r,n,o){var s=n-i,a=o-r;if(0!==s||0!==a){var l=((e-i)*s+(t-r)*a)/(s*s+a*a);l>1?(i=n,r=o):l>0&&(i+=s*l,r+=a*l)}return(s=e-i)*s+(a=t-r)*a}function H(e,t,i,r){var n={id:void 0===e?null:e,type:t,geometry:i,tags:r,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};return function(e){var t=e.geometry,i=e.type;if("Point"===i||"MultiPoint"===i||"LineString"===i)Y(e,t);else if("Polygon"===i||"MultiLineString"===i)for(var r=0;r<t.length;r++)Y(e,t[r]);else if("MultiPolygon"===i)for(r=0;r<t.length;r++)for(var n=0;n<t[r].length;n++)Y(e,t[r][n])}(n),n}function Y(e,t){for(var i=0;i<t.length;i+=3)e.minX=Math.min(e.minX,t[i]),e.minY=Math.min(e.minY,t[i+1]),e.maxX=Math.max(e.maxX,t[i]),e.maxY=Math.max(e.maxY,t[i+1])}function K(e,t,i,r){if(t.geometry){var n=t.geometry.coordinates,o=t.geometry.type,s=Math.pow(i.tolerance/((1<<i.maxZoom)*i.extent),2),a=[],l=t.id;if(i.promoteId?l=t.properties[i.promoteId]:i.generateId&&(l=r||0),"Point"===o)J(n,a);else if("MultiPoint"===o)for(var c=0;c<n.length;c++)J(n[c],a);else if("LineString"===o)Q(n,a,s,!1);else if("MultiLineString"===o){if(i.lineMetrics){for(c=0;c<n.length;c++)Q(n[c],a=[],s,!1),e.push(H(l,"LineString",a,t.properties));return}ee(n,a,s,!1)}else if("Polygon"===o)ee(n,a,s,!0);else{if("MultiPolygon"!==o){if("GeometryCollection"===o){for(c=0;c<t.geometry.geometries.length;c++)K(e,{id:l,geometry:t.geometry.geometries[c],properties:t.properties},i,r);return}throw new Error("Input data is not a valid GeoJSON object.")}for(c=0;c<n.length;c++){var h=[];ee(n[c],h,s,!0),a.push(h)}}e.push(H(l,o,a,t.properties))}}function J(e,t){t.push(te(e[0])),t.push(ie(e[1])),t.push(0)}function Q(e,t,i,r){for(var n,o,s=0,a=0;a<e.length;a++){var l=te(e[a][0]),c=ie(e[a][1]);t.push(l),t.push(c),t.push(0),a>0&&(s+=r?(n*c-l*o)/2:Math.sqrt(Math.pow(l-n,2)+Math.pow(c-o,2))),n=l,o=c}var h=t.length-3;t[2]=1,X(t,0,h,i),t[h+2]=1,t.size=Math.abs(s),t.start=0,t.end=t.size}function ee(e,t,i,r){for(var n=0;n<e.length;n++){var o=[];Q(e[n],o,i,r),t.push(o)}}function te(e){return e/360+.5}function ie(e){var t=Math.sin(e*Math.PI/180),i=.5-.25*Math.log((1+t)/(1-t))/Math.PI;return i<0?0:i>1?1:i}function re(e,t,i,r,n,o,s,a){if(r/=t,o>=(i/=t)&&s<r)return e;if(s<i||o>=r)return null;for(var l=[],c=0;c<e.length;c++){var h=e[c],u=h.geometry,d=h.type,p=0===n?h.minX:h.minY,f=0===n?h.maxX:h.maxY;if(p>=i&&f<r)l.push(h);else if(!(f<i||p>=r)){var m=[];if("Point"===d||"MultiPoint"===d)ne(u,m,i,r,n);else if("LineString"===d)oe(u,m,i,r,n,!1,a.lineMetrics);else if("MultiLineString"===d)ae(u,m,i,r,n,!1);else if("Polygon"===d)ae(u,m,i,r,n,!0);else if("MultiPolygon"===d)for(var _=0;_<u.length;_++){var g=[];ae(u[_],g,i,r,n,!0),g.length&&m.push(g)}if(m.length){if(a.lineMetrics&&"LineString"===d){for(_=0;_<m.length;_++)l.push(H(h.id,d,m[_],h.tags));continue}"LineString"!==d&&"MultiLineString"!==d||(1===m.length?(d="LineString",m=m[0]):d="MultiLineString"),"Point"!==d&&"MultiPoint"!==d||(d=3===m.length?"Point":"MultiPoint"),l.push(H(h.id,d,m,h.tags))}}}return l.length?l:null}function ne(e,t,i,r,n){for(var o=0;o<e.length;o+=3){var s=e[o+n];s>=i&&s<=r&&(t.push(e[o]),t.push(e[o+1]),t.push(e[o+2]))}}function oe(e,t,i,r,n,o,s){for(var a,l,c=se(e),h=0===n?ce:he,u=e.start,d=0;d<e.length-3;d+=3){var p=e[d],f=e[d+1],m=e[d+2],_=e[d+3],g=e[d+4],y=0===n?p:f,x=0===n?_:g,v=!1;s&&(a=Math.sqrt(Math.pow(p-_,2)+Math.pow(f-g,2))),y<i?x>i&&(l=h(c,p,f,_,g,i),s&&(c.start=u+a*l)):y>r?x<r&&(l=h(c,p,f,_,g,r),s&&(c.start=u+a*l)):le(c,p,f,m),x<i&&y>=i&&(l=h(c,p,f,_,g,i),v=!0),x>r&&y<=r&&(l=h(c,p,f,_,g,r),v=!0),!o&&v&&(s&&(c.end=u+a*l),t.push(c),c=se(e)),s&&(u+=a)}var b=e.length-3;p=e[b],f=e[b+1],m=e[b+2],(y=0===n?p:f)>=i&&y<=r&&le(c,p,f,m),b=c.length-3,o&&b>=3&&(c[b]!==c[0]||c[b+1]!==c[1])&&le(c,c[0],c[1],c[2]),c.length&&t.push(c)}function se(e){var t=[];return t.size=e.size,t.start=e.start,t.end=e.end,t}function ae(e,t,i,r,n,o){for(var s=0;s<e.length;s++)oe(e[s],t,i,r,n,o,!1)}function le(e,t,i,r){e.push(t),e.push(i),e.push(r)}function ce(e,t,i,r,n,o){var s=(o-t)/(r-t);return e.push(o),e.push(i+(n-i)*s),e.push(1),s}function he(e,t,i,r,n,o){var s=(o-i)/(n-i);return e.push(t+(r-t)*s),e.push(o),e.push(1),s}function ue(e,t){for(var i=[],r=0;r<e.length;r++){var n,o=e[r],s=o.type;if("Point"===s||"MultiPoint"===s||"LineString"===s)n=de(o.geometry,t);else if("MultiLineString"===s||"Polygon"===s){n=[];for(var a=0;a<o.geometry.length;a++)n.push(de(o.geometry[a],t))}else if("MultiPolygon"===s)for(n=[],a=0;a<o.geometry.length;a++){for(var l=[],c=0;c<o.geometry[a].length;c++)l.push(de(o.geometry[a][c],t));n.push(l)}i.push(H(o.id,s,n,o.tags))}return i}function de(e,t){var i=[];i.size=e.size,void 0!==e.start&&(i.start=e.start,i.end=e.end);for(var r=0;r<e.length;r+=3)i.push(e[r]+t,e[r+1],e[r+2]);return i}function pe(e,t){if(e.transformed)return e;var i,r,n,o=1<<e.z,s=e.x,a=e.y;for(i=0;i<e.features.length;i++){var l=e.features[i],c=l.geometry,h=l.type;if(l.geometry=[],1===h)for(r=0;r<c.length;r+=2)l.geometry.push(fe(c[r],c[r+1],t,o,s,a));else for(r=0;r<c.length;r++){var u=[];for(n=0;n<c[r].length;n+=2)u.push(fe(c[r][n],c[r][n+1],t,o,s,a));l.geometry.push(u)}}return e.transformed=!0,e}function fe(e,t,i,r,n,o){return[Math.round(i*(e*r-n)),Math.round(i*(t*r-o))]}function me(e,t,i,r,n){for(var o=t===n.maxZoom?0:n.tolerance/((1<<t)*n.extent),s={features:[],numPoints:0,numSimplified:0,numFeatures:0,source:null,x:i,y:r,z:t,transformed:!1,minX:2,minY:1,maxX:-1,maxY:0},a=0;a<e.length;a++){s.numFeatures++,_e(s,e[a],o,n);var l=e[a].minX,c=e[a].minY,h=e[a].maxX,u=e[a].maxY;l<s.minX&&(s.minX=l),c<s.minY&&(s.minY=c),h>s.maxX&&(s.maxX=h),u>s.maxY&&(s.maxY=u)}return s}function _e(e,t,i,r){var n=t.geometry,o=t.type,s=[];if("Point"===o||"MultiPoint"===o)for(var a=0;a<n.length;a+=3)s.push(n[a]),s.push(n[a+1]),e.numPoints++,e.numSimplified++;else if("LineString"===o)ge(s,n,e,i,!1,!1);else if("MultiLineString"===o||"Polygon"===o)for(a=0;a<n.length;a++)ge(s,n[a],e,i,"Polygon"===o,0===a);else if("MultiPolygon"===o)for(var l=0;l<n.length;l++){var c=n[l];for(a=0;a<c.length;a++)ge(s,c[a],e,i,!0,0===a)}if(s.length){var h=t.tags||null;if("LineString"===o&&r.lineMetrics){for(var u in h={},t.tags)h[u]=t.tags[u];h.mapbox_clip_start=n.start/n.size,h.mapbox_clip_end=n.end/n.size}var d={geometry:s,type:"Polygon"===o||"MultiPolygon"===o?3:"LineString"===o||"MultiLineString"===o?2:1,tags:h};null!==t.id&&(d.id=t.id),e.features.push(d)}}function ge(e,t,i,r,n,o){var s=r*r;if(r>0&&t.size<(n?s:r))i.numPoints+=t.length/3;else{for(var a=[],l=0;l<t.length;l+=3)(0===r||t[l+2]>s)&&(i.numSimplified++,a.push(t[l]),a.push(t[l+1])),i.numPoints++;n&&function(e,t){for(var i=0,r=0,n=e.length,o=n-2;r<n;o=r,r+=2)i+=(e[r]-e[o])*(e[r+1]+e[o+1]);if(i>0===t)for(r=0,n=e.length;r<n/2;r+=2){var s=e[r],a=e[r+1];e[r]=e[n-2-r],e[r+1]=e[n-1-r],e[n-2-r]=s,e[n-1-r]=a}}(a,o),e.push(a)}}function ye(e,t){var i=(t=this.options=function(e,t){for(var i in t)e[i]=t[i];return e}(Object.create(this.options),t)).debug;if(i&&console.time("preprocess data"),t.maxZoom<0||t.maxZoom>24)throw new Error("maxZoom should be in the 0-24 range");if(t.promoteId&&t.generateId)throw new Error("promoteId and generateId cannot be used together.");var r=function(e,t){var i=[];if("FeatureCollection"===e.type)for(var r=0;r<e.features.length;r++)K(i,e.features[r],t,r);else K(i,"Feature"===e.type?e:{geometry:e},t);return i}(e,t);this.tiles={},this.tileCoords=[],i&&(console.timeEnd("preprocess data"),console.log("index: maxZoom: %d, maxPoints: %d",t.indexMaxZoom,t.indexMaxPoints),console.time("generate tiles"),this.stats={},this.total=0),(r=function(e,t){var i=t.buffer/t.extent,r=e,n=re(e,1,-1-i,i,0,-1,2,t),o=re(e,1,1-i,2+i,0,-1,2,t);return(n||o)&&(r=re(e,1,-i,1+i,0,-1,2,t)||[],n&&(r=ue(n,1).concat(r)),o&&(r=r.concat(ue(o,-1)))),r}(r,t)).length&&this.splitTile(r,0,0,0),i&&(r.length&&console.log("features: %d, points: %d",this.tiles[0].numFeatures,this.tiles[0].numPoints),console.timeEnd("generate tiles"),console.log("tiles generated:",this.total,JSON.stringify(this.stats)))}function xe(e,t,i){return 32*((1<<e)*i+t)+e}function ve(e,t){const i=e.tileID.canonical;if(!this._geoJSONIndex)return t(null,null);const r=this._geoJSONIndex.getTile(i.z,i.x,i.y);if(!r)return t(null,null);const n=new h(r.features);let o=m(n);0===o.byteOffset&&o.byteLength===o.buffer.byteLength||(o=new Uint8Array(o)),t(null,{vectorTile:n,rawData:o.buffer})}ye.prototype.options={maxZoom:14,indexMaxZoom:5,indexMaxPoints:1e5,tolerance:3,extent:4096,buffer:64,lineMetrics:!1,promoteId:null,generateId:!1,debug:0},ye.prototype.splitTile=function(e,t,i,r,n,o,s){for(var a=[e,t,i,r],l=this.options,c=l.debug;a.length;){r=a.pop(),i=a.pop(),t=a.pop(),e=a.pop();var h=1<<t,u=xe(t,i,r),d=this.tiles[u];if(!d&&(c>1&&console.time("creation"),d=this.tiles[u]=me(e,t,i,r,l),this.tileCoords.push({z:t,x:i,y:r}),c)){c>1&&(console.log("tile z%d-%d-%d (features: %d, points: %d, simplified: %d)",t,i,r,d.numFeatures,d.numPoints,d.numSimplified),console.timeEnd("creation"));var p="z"+t;this.stats[p]=(this.stats[p]||0)+1,this.total++}if(d.source=e,n){if(t===l.maxZoom||t===n)continue;var f=1<<n-t;if(i!==Math.floor(o/f)||r!==Math.floor(s/f))continue}else if(t===l.indexMaxZoom||d.numPoints<=l.indexMaxPoints)continue;if(d.source=null,0!==e.length){c>1&&console.time("clipping");var m,_,g,y,x,v,b=.5*l.buffer/l.extent,w=.5-b,T=.5+b,E=1+b;m=_=g=y=null,x=re(e,h,i-b,i+T,0,d.minX,d.maxX,l),v=re(e,h,i+w,i+E,0,d.minX,d.maxX,l),e=null,x&&(m=re(x,h,r-b,r+T,1,d.minY,d.maxY,l),_=re(x,h,r+w,r+E,1,d.minY,d.maxY,l),x=null),v&&(g=re(v,h,r-b,r+T,1,d.minY,d.maxY,l),y=re(v,h,r+w,r+E,1,d.minY,d.maxY,l),v=null),c>1&&console.timeEnd("clipping"),a.push(m||[],t+1,2*i,2*r),a.push(_||[],t+1,2*i,2*r+1),a.push(g||[],t+1,2*i+1,2*r),a.push(y||[],t+1,2*i+1,2*r+1)}}},ye.prototype.getTile=function(e,t,i){var r=this.options,n=r.extent,o=r.debug;if(e<0||e>24)return null;var s=1<<e,a=xe(e,t=(t%s+s)%s,i);if(this.tiles[a])return pe(this.tiles[a],n);o>1&&console.log("drilling down to z%d-%d-%d",e,t,i);for(var l,c=e,h=t,u=i;!l&&c>0;)c--,h=Math.floor(h/2),u=Math.floor(u/2),l=this.tiles[xe(c,h,u)];return l&&l.source?(o>1&&console.log("found parent tile z%d-%d-%d",c,h,u),o>1&&console.time("drilling down"),this.splitTile(l.source,c,h,u,e,t,i),o>1&&console.timeEnd("drilling down"),this.tiles[a]?pe(this.tiles[a],n):null):null};class be extends e.VectorTileWorkerSource{constructor(e,t,i,r,n){super(e,t,i,r,ve),n&&(this.loadGeoJSON=n)}loadData(t,i){const r=t&&t.request,n=r&&r.collectResourceTiming;this.loadGeoJSON(t,((s,a)=>{if(s||!a)return i(s);if("object"!=typeof a)return i(new Error(`Input data given to '${t.source}' is not a valid GeoJSON object.`));{o(a,!0);try{if(t.filter){const i=e.createExpression(t.filter,{type:"boolean","property-type":"data-driven",overridable:!1,transition:!1});if("error"===i.result)throw new Error(i.value.map((e=>`${e.key}: ${e.message}`)).join(", "));const r=a.features.filter((e=>i.value.evaluate({zoom:0},e)));a={type:"FeatureCollection",features:r}}this._geoJSONIndex=t.cluster?new R(function({superclusterOptions:t,clusterProperties:i}){if(!i||!t)return t;const r={},n={},o={accumulated:null,zoom:0},s={properties:null},a=Object.keys(i);for(const t of a){const[o,s]=i[t],a=e.createExpression(s),l=e.createExpression("string"==typeof o?[o,["accumulated"],["get",t]]:o);r[t]=a.value,n[t]=l.value}return t.map=e=>{s.properties=e;const t={};for(const e of a)t[e]=r[e].evaluate(o,s);return t},t.reduce=(e,t)=>{s.properties=t;for(const t of a)o.accumulated=e[t],e[t]=n[t].evaluate(o,s)},t}(t)).load(a.features):function(e,t){return new ye(e,t)}(a,t.geojsonVtOptions)}catch(s){return i(s)}this.loaded={};const l={};if(n){const i=e.getPerformanceMeasurement(r);i&&(l.resourceTiming={},l.resourceTiming[t.source]=JSON.parse(JSON.stringify(i)))}i(null,l)}}))}reloadTile(e,t){const i=this.loaded;return i&&i[e.uid]?super.reloadTile(e,t):this.loadTile(e,t)}loadGeoJSON(t,i){if(t.request)e.getJSON(t.request,i);else{if("string"!=typeof t.data)return i(new Error(`Input data given to '${t.source}' is not a valid GeoJSON object.`));try{return i(null,JSON.parse(t.data))}catch(e){return i(new Error(`Input data given to '${t.source}' is not a valid GeoJSON object.`))}}}getClusterExpansionZoom(e,t){try{t(null,this._geoJSONIndex.getClusterExpansionZoom(e.clusterId))}catch(e){t(e)}}getClusterChildren(e,t){try{t(null,this._geoJSONIndex.getChildren(e.clusterId))}catch(e){t(e)}}getClusterLeaves(e,t){try{t(null,this._geoJSONIndex.getLeaves(e.clusterId,e.limit,e.offset))}catch(e){t(e)}}}class we{constructor(t){this.self=t,this.actor=new e.Actor(t,this),this.layerIndexes={},this.availableImages={},this.isSpriteLoaded={},this.projections={},this.defaultProjection=e.getProjection({name:"mercator"}),this.workerSourceTypes={vector:e.VectorTileWorkerSource,geojson:be},this.workerSources={},this.demWorkerSources={},this.self.registerWorkerSource=(e,t)=>{if(this.workerSourceTypes[e])throw new Error(`Worker source with name "${e}" already registered.`);this.workerSourceTypes[e]=t},this.self.registerRTLTextPlugin=t=>{if(e.plugin.isParsed())throw new Error("RTL text plugin already registered.");e.plugin.applyArabicShaping=t.applyArabicShaping,e.plugin.processBidirectionalText=t.processBidirectionalText,e.plugin.processStyledBidirectionalText=t.processStyledBidirectionalText}}clearCaches(e,t,i){delete this.layerIndexes[e],delete this.availableImages[e],delete this.workerSources[e],delete this.demWorkerSources[e],i()}checkIfReady(e,t,i){i()}setReferrer(e,t){this.referrer=t}spriteLoaded(t,i){this.isSpriteLoaded[t]=i;for(const r in this.workerSources[t]){const n=this.workerSources[t][r];for(const t in n)n[t]instanceof e.VectorTileWorkerSource&&(n[t].isSpriteLoaded=i,n[t].fire(new e.Event("isSpriteLoaded")))}}setImages(e,t,i){this.availableImages[e]=t;for(const i in this.workerSources[e]){const r=this.workerSources[e][i];for(const e in r)r[e].availableImages=t}i()}enableTerrain(e,t,i){this.terrain=t,i()}setProjection(t,i){this.projections[t]=e.getProjection(i)}setLayers(e,t,i){this.getLayerIndex(e).replace(t),i()}updateLayers(e,t,i){this.getLayerIndex(e).update(t.layers,t.removedIds),i()}loadTile(t,i,r){const n=this.enableTerrain?e.extend({enableTerrain:this.terrain},i):i;n.projection=this.projections[t]||this.defaultProjection,this.getWorkerSource(t,i.type,i.source).loadTile(n,r)}loadDEMTile(t,i,r){const n=this.enableTerrain?e.extend({buildQuadTree:this.terrain},i):i;this.getDEMWorkerSource(t,i.source).loadTile(n,r)}reloadTile(t,i,r){const n=this.enableTerrain?e.extend({enableTerrain:this.terrain},i):i;n.projection=this.projections[t]||this.defaultProjection,this.getWorkerSource(t,i.type,i.source).reloadTile(n,r)}abortTile(e,t,i){this.getWorkerSource(e,t.type,t.source).abortTile(t,i)}removeTile(e,t,i){this.getWorkerSource(e,t.type,t.source).removeTile(t,i)}removeSource(e,t,i){if(!this.workerSources[e]||!this.workerSources[e][t.type]||!this.workerSources[e][t.type][t.source])return;const r=this.workerSources[e][t.type][t.source];delete this.workerSources[e][t.type][t.source],void 0!==r.removeSource?r.removeSource(t,i):i()}loadWorkerSource(e,t,i){try{this.self.importScripts(t.url),i()}catch(e){i(e.toString())}}syncRTLPluginState(t,i,r){try{e.plugin.setState(i);const t=e.plugin.getPluginURL();if(e.plugin.isLoaded()&&!e.plugin.isParsed()&&null!=t){this.self.importScripts(t);const i=e.plugin.isParsed();r(i?void 0:new Error(`RTL Text Plugin failed to import scripts from ${t}`),i)}}catch(e){r(e.toString())}}getAvailableImages(e){let t=this.availableImages[e];return t||(t=[]),t}getLayerIndex(e){let t=this.layerIndexes[e];return t||(t=this.layerIndexes[e]=new r),t}getWorkerSource(e,t,i){return this.workerSources[e]||(this.workerSources[e]={}),this.workerSources[e][t]||(this.workerSources[e][t]={}),this.workerSources[e][t][i]||(this.workerSources[e][t][i]=new this.workerSourceTypes[t]({send:(t,i,r,n,o,s)=>{this.actor.send(t,i,r,e,o,s)},scheduler:this.actor.scheduler},this.getLayerIndex(e),this.getAvailableImages(e),this.isSpriteLoaded[e])),this.workerSources[e][t][i]}getDEMWorkerSource(e,t){return this.demWorkerSources[e]||(this.demWorkerSources[e]={}),this.demWorkerSources[e][t]||(this.demWorkerSources[e][t]=new n),this.demWorkerSources[e][t]}enforceCacheSizeLimit(t,i){e.enforceCacheSizeLimit(i)}getWorkerPerformanceMetrics(e,t,i){i(void 0,void 0)}}return"undefined"!=typeof WorkerGlobalScope&&"undefined"!=typeof self&&self instanceof WorkerGlobalScope&&(self.worker=new we(self)),we})),r(0,(function(e){var t=i;function i(e){return!function(e){return"undefined"==typeof window||"undefined"==typeof document?"not a browser":Array.prototype&&Array.prototype.every&&Array.prototype.filter&&Array.prototype.forEach&&Array.prototype.indexOf&&Array.prototype.lastIndexOf&&Array.prototype.map&&Array.prototype.some&&Array.prototype.reduce&&Array.prototype.reduceRight&&Array.isArray?Function.prototype&&Function.prototype.bind?Object.keys&&Object.create&&Object.getPrototypeOf&&Object.getOwnPropertyNames&&Object.isSealed&&Object.isFrozen&&Object.isExtensible&&Object.getOwnPropertyDescriptor&&Object.defineProperty&&Object.defineProperties&&Object.seal&&Object.freeze&&Object.preventExtensions?"JSON"in window&&"parse"in JSON&&"stringify"in JSON?function(){if(!("Worker"in window&&"Blob"in window&&"URL"in window))return!1;var e,t,i=new Blob([""],{type:"text/javascript"}),r=URL.createObjectURL(i);try{t=new Worker(r),e=!0}catch(t){e=!1}return t&&t.terminate(),URL.revokeObjectURL(r),e}()?"Uint8ClampedArray"in window?ArrayBuffer.isView?function(){var e=document.createElement("canvas");e.width=e.height=1;var t=e.getContext("2d");if(!t)return!1;var i=t.getImageData(0,0,1,1);return i&&i.width===e.width}()?(void 0===r[t=e&&e.failIfMajorPerformanceCaveat]&&(r[t]=function(e){var t,r=function(e){var t=document.createElement("canvas"),r=Object.create(i.webGLContextAttributes);return r.failIfMajorPerformanceCaveat=e,t.getContext("webgl",r)||t.getContext("experimental-webgl",r)}(e);if(!r)return!1;try{t=r.createShader(r.VERTEX_SHADER)}catch(e){return!1}return!(!t||r.isContextLost())&&(r.shaderSource(t,"void main() {}"),r.compileShader(t),!0===r.getShaderParameter(t,r.COMPILE_STATUS))}(t)),r[t]?document.documentMode?"insufficient ECMAScript 6 support":void 0:"insufficient WebGL support"):"insufficient Canvas/getImageData support":"insufficient ArrayBuffer support":"insufficient Uint8ClampedArray support":"insufficient worker support":"insufficient JSON support":"insufficient Object support":"insufficient Function support":"insufficent Array support";var t}(e)}var r={};function n(e,t){if(Array.isArray(e)){if(!Array.isArray(t)||e.length!==t.length)return!1;for(let i=0;i<e.length;i++)if(!n(e[i],t[i]))return!1;return!0}if("object"==typeof e&&null!==e&&null!==t){if("object"!=typeof t)return!1;if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const i in e)if(!n(e[i],t[i]))return!1;return!0}return e===t}function o(t,i,r){const n=e.window.document.createElement(t);return void 0!==i&&(n.className=i),r&&r.appendChild(n),n}function s(t,i,r){const n=e.window.document.createElementNS("http://www.w3.org/2000/svg",t);for(const e of Object.keys(i))n.setAttributeNS(null,e,i[e]);return r&&r.appendChild(n),n}i.webGLContextAttributes={antialias:!1,alpha:!0,stencil:!0,depth:!0};const a=e.window.document&&e.window.document.documentElement.style,l=a&&void 0!==a.userSelect?"userSelect":"WebkitUserSelect";let c;function h(){a&&l&&(c=a[l],a[l]="none")}function u(){a&&l&&(a[l]=c)}function d(t){t.preventDefault(),t.stopPropagation(),e.window.removeEventListener("click",d,!0)}function p(){e.window.addEventListener("click",d,!0),e.window.setTimeout((()=>{e.window.removeEventListener("click",d,!0)}),0)}function f(e,t){const i=e.getBoundingClientRect();return g(e,i,t)}function m(e,t){const i=e.getBoundingClientRect(),r=[];for(let n=0;n<t.length;n++)r.push(g(e,i,t[n]));return r}function _(t){return void 0!==e.window.InstallTrigger&&2===t.button&&t.ctrlKey&&e.window.navigator.platform.toUpperCase().indexOf("MAC")>=0?0:t.button}function g(t,i,r){const n=t.offsetWidth===i.width?1:t.offsetWidth/i.width;return new e.pointGeometry((r.clientX-i.left)*n,(r.clientY-i.top)*n)}function y(e,t){var i=t[0],r=t[1],n=t[2],o=t[3],s=i*o-n*r;return s?(e[0]=o*(s=1/s),e[1]=-r*s,e[2]=-n*s,e[3]=i*s,e):null}function x(e){const{userImage:t}=e;return!!(t&&t.render&&t.render())&&(e.data.replace(new Uint8Array(t.data.buffer)),!0)}class v extends e.Evented{constructor(){super(),this.images={},this.updatedImages={},this.callbackDispatchedThisFrame={},this.loaded=!1,this.requestors=[],this.patterns={},this.atlasImage=new e.RGBAImage({width:1,height:1}),this.dirty=!0}isLoaded(){return this.loaded}setLoaded(e){if(this.loaded!==e&&(this.loaded=e,e)){for(const{ids:e,callback:t}of this.requestors)this._notify(e,t);this.requestors=[]}}hasImage(e){return!!this.getImage(e)}getImage(e){return this.images[e]}addImage(e,t){this._validate(e,t)&&(this.images[e]=t)}_validate(t,i){let r=!0;return this._validateStretch(i.stretchX,i.data&&i.data.width)||(this.fire(new e.ErrorEvent(new Error(`Image "${t}" has invalid "stretchX" value`))),r=!1),this._validateStretch(i.stretchY,i.data&&i.data.height)||(this.fire(new e.ErrorEvent(new Error(`Image "${t}" has invalid "stretchY" value`))),r=!1),this._validateContent(i.content,i)||(this.fire(new e.ErrorEvent(new Error(`Image "${t}" has invalid "content" value`))),r=!1),r}_validateStretch(e,t){if(!e)return!0;let i=0;for(const r of e){if(r[0]<i||r[1]<r[0]||t<r[1])return!1;i=r[1]}return!0}_validateContent(e,t){return!(e&&(4!==e.length||e[0]<0||t.data.width<e[0]||e[1]<0||t.data.height<e[1]||e[2]<0||t.data.width<e[2]||e[3]<0||t.data.height<e[3]||e[2]<e[0]||e[3]<e[1]))}updateImage(e,t){t.version=this.images[e].version+1,this.images[e]=t,this.updatedImages[e]=!0}removeImage(e){const t=this.images[e];delete this.images[e],delete this.patterns[e],t.userImage&&t.userImage.onRemove&&t.userImage.onRemove()}listImages(){return Object.keys(this.images)}getImages(e,t){let i=!0;if(!this.isLoaded())for(const t of e)this.images[t]||(i=!1);this.isLoaded()||i?this._notify(e,t):this.requestors.push({ids:e,callback:t})}_notify(t,i){const r={};for(const i of t){this.images[i]||this.fire(new e.Event("styleimagemissing",{id:i}));const t=this.images[i];t?r[i]={data:t.data.clone(),pixelRatio:t.pixelRatio,sdf:t.sdf,version:t.version,stretchX:t.stretchX,stretchY:t.stretchY,content:t.content,hasRenderCallback:Boolean(t.userImage&&t.userImage.render)}:e.warnOnce(`Image "${i}" could not be loaded. Please make sure you have added the image with map.addImage() or a "sprite" property in your style. You can provide missing images by listening for the "styleimagemissing" map event.`)}i(null,r)}getPixelSize(){const{width:e,height:t}=this.atlasImage;return{width:e,height:t}}getPattern(t){const i=this.patterns[t],r=this.getImage(t);if(!r)return null;if(i&&i.position.version===r.version)return i.position;if(i)i.position.version=r.version;else{const i={w:r.data.width+2,h:r.data.height+2,x:0,y:0},n=new e.ImagePosition(i,r);this.patterns[t]={bin:i,position:n}}return this._updatePatternAtlas(),this.patterns[t].position}bind(t){const i=t.gl;this.atlasTexture?this.dirty&&(this.atlasTexture.update(this.atlasImage),this.dirty=!1):this.atlasTexture=new e.Texture(t,this.atlasImage,i.RGBA),this.atlasTexture.bind(i.LINEAR,i.CLAMP_TO_EDGE)}_updatePatternAtlas(){const t=[];for(const e in this.patterns)t.push(this.patterns[e].bin);const{w:i,h:r}=e.potpack(t),n=this.atlasImage;n.resize({width:i||1,height:r||1});for(const t in this.patterns){const{bin:i}=this.patterns[t],r=i.x+1,o=i.y+1,s=this.images[t].data,a=s.width,l=s.height;e.RGBAImage.copy(s,n,{x:0,y:0},{x:r,y:o},{width:a,height:l}),e.RGBAImage.copy(s,n,{x:0,y:l-1},{x:r,y:o-1},{width:a,height:1}),e.RGBAImage.copy(s,n,{x:0,y:0},{x:r,y:o+l},{width:a,height:1}),e.RGBAImage.copy(s,n,{x:a-1,y:0},{x:r-1,y:o},{width:1,height:l}),e.RGBAImage.copy(s,n,{x:0,y:0},{x:r+a,y:o},{width:1,height:l})}this.dirty=!0}beginFrame(){this.callbackDispatchedThisFrame={}}dispatchRenderCallbacks(e){for(const t of e){if(this.callbackDispatchedThisFrame[t])continue;this.callbackDispatchedThisFrame[t]=!0;const e=this.images[t];x(e)&&this.updateImage(t,e)}}}const b=new e.Properties({anchor:new e.DataConstantProperty(e.spec.light.anchor),position:new class{constructor(){this.specification=e.spec.light.position}possiblyEvaluate(t,i){return function([t,i,r]){const n=e.degToRad(i+90),o=e.degToRad(r);return{x:t*Math.cos(n)*Math.sin(o),y:t*Math.sin(n)*Math.sin(o),z:t*Math.cos(o),azimuthal:i,polar:r}}(t.expression.evaluate(i))}interpolate(t,i,r){return{x:e.number(t.x,i.x,r),y:e.number(t.y,i.y,r),z:e.number(t.z,i.z,r),azimuthal:e.number(t.azimuthal,i.azimuthal,r),polar:e.number(t.polar,i.polar,r)}}},color:new e.DataConstantProperty(e.spec.light.color),intensity:new e.DataConstantProperty(e.spec.light.intensity)}),w="-transition";class T extends e.Evented{constructor(t){super(),this._transitionable=new e.Transitionable(b),this.setLight(t),this._transitioning=this._transitionable.untransitioned()}getLight(){return this._transitionable.serialize()}setLight(t,i={}){if(!this._validate(e.validateLight,t,i))for(const i in t){const r=t[i];e.endsWith(i,w)?this._transitionable.setTransition(i.slice(0,-w.length),r):this._transitionable.setValue(i,r)}}updateTransitions(e){this._transitioning=this._transitionable.transitioned(e,this._transitioning)}hasTransition(){return this._transitioning.hasTransition()}recalculate(e){this.properties=this._transitioning.possiblyEvaluate(e)}_validate(t,i,r){return(!r||!1!==r.validate)&&e.emitValidationErrors(this,t.call(e.validateStyle,e.extend({value:i,style:{glyphs:!0,sprite:!0},styleSpec:e.spec})))}}const E=new e.Properties({source:new e.DataConstantProperty(e.spec.terrain.source),exaggeration:new e.DataConstantProperty(e.spec.terrain.exaggeration)}),S="-transition";class I extends e.Evented{constructor(t,i){super(),this._transitionable=new e.Transitionable(E),this.set(t),this._transitioning=this._transitionable.untransitioned(),this.drapeRenderMode=i}get(){return this._transitionable.serialize()}set(t){for(const i in t){const r=t[i];e.endsWith(i,S)?this._transitionable.setTransition(i.slice(0,-S.length),r):this._transitionable.setValue(i,r)}}updateTransitions(e){this._transitioning=this._transitionable.transitioned(e,this._transitioning)}hasTransition(){return this._transitioning.hasTransition()}recalculate(e){this.properties=this._transitioning.possiblyEvaluate(e)}}function M(t,i,r,n){const o=e.smoothstep(45,65,r),[s,a]=A(t,n),l=e.length(i);let c=1-Math.min(1,Math.exp((l-s)/(a-s)*-6));return c*=c*c,c=Math.min(1,1.00747*c),c*o*t.alpha}function A(e,t){const i=.5/Math.tan(.5*t);return[e.range[0]+i,e.range[1]+i]}const C=new e.Properties({range:new e.DataConstantProperty(e.spec.fog.range),color:new e.DataConstantProperty(e.spec.fog.color),"horizon-blend":new e.DataConstantProperty(e.spec.fog["horizon-blend"])}),z="-transition";class k extends e.Evented{constructor(t,i){super(),this._transitionable=new e.Transitionable(C),this.set(t),this._transitioning=this._transitionable.untransitioned(),this._transform=i}get state(){return{range:this.properties.get("range"),horizonBlend:this.properties.get("horizon-blend"),alpha:this.properties.get("color").a}}get(){return this._transitionable.serialize()}set(t,i={}){if(!this._validate(e.validateFog,t,i))for(const i in t){const r=t[i];e.endsWith(i,z)?this._transitionable.setTransition(i.slice(0,-z.length),r):this._transitionable.setValue(i,r)}}getOpacity(t){if(!this._transform.projection.supportsFog)return 0;const i=this.properties&&this.properties.get("color")||1;return e.smoothstep(45,65,t)*i.a}getOpacityAtLatLng(t,i){return this._transform.projection.supportsFog?function(t,i,r){const n=e.MercatorCoordinate.fromLngLat(i),o=r.elevation?r.elevation.getAtPointOrZero(n):0,s=[n.x,n.y,o];return e.transformMat4(s,s,r.mercatorFogMatrix),M(t,s,r.pitch,r._fov)}(this.state,t,i):0}getFovAdjustedRange(e){return this._transform.projection.supportsFog?A(this.state,e):[0,1]}updateTransitions(e){this._transitioning=this._transitionable.transitioned(e,this._transitioning)}hasTransition(){return this._transitioning.hasTransition()}recalculate(e){this.properties=this._transitioning.possiblyEvaluate(e)}_validate(t,i,r){return(!r||!1!==r.validate)&&e.emitValidationErrors(this,t.call(e.validateStyle,e.extend({value:i,style:{glyphs:!0,sprite:!0},styleSpec:e.spec})))}}class D{constructor(t,i){this.workerPool=t,this.actors=[],this.currentActor=0,this.id=e.uniqueId();const r=this.workerPool.acquire(this.id);for(let e=0;e<r.length;e++){const t=new D.Actor(r[e],i,this.id);t.name=`Worker ${e}`,this.actors.push(t)}this.ready=!1,this.broadcast("checkIfReady",null,(()=>{this.ready=!0}))}broadcast(t,i,r){e.asyncAll(this.actors,((e,r)=>{e.send(t,i,r)}),r=r||function(){})}getActor(){return this.currentActor=(this.currentActor+1)%this.actors.length,this.actors[this.currentActor]}remove(){this.actors.forEach((e=>{e.remove()})),this.actors=[],this.workerPool.release(this.id)}}function P(t,i,r){return i*(e.EXTENT/(t.tileSize*Math.pow(2,r-t.tileID.overscaledZ)))}D.Actor=e.Actor;class L{constructor(e,t,i,r){this.screenBounds=e,this.cameraPoint=t,this._screenRaycastCache={},this._cameraRaycastCache={},this.isAboveHorizon=i,this.screenGeometry=this.bufferedScreenGeometry(0),this.screenGeometryMercator=this.screenGeometry.map((e=>r.pointCoordinate3D(e))),this.cameraGeometry=this.bufferedCameraGeometry(0)}static createFromScreenPoints(t,i){let r,n;if(t instanceof e.pointGeometry||"number"==typeof t[0]){const o=e.pointGeometry.convert(t);r=[e.pointGeometry.convert(t)],n=i.isPointAboveHorizon(o)}else{const o=e.pointGeometry.convert(t[0]),s=e.pointGeometry.convert(t[1]);r=[o,s],n=e.polygonizeBounds(o,s).every((e=>i.isPointAboveHorizon(e)))}return new L(r,i.getCameraPoint(),n,i)}isPointQuery(){return 1===this.screenBounds.length}bufferedScreenGeometry(t){return e.polygonizeBounds(this.screenBounds[0],1===this.screenBounds.length?this.screenBounds[0]:this.screenBounds[1],t)}bufferedCameraGeometry(t){const i=this.screenBounds[0],r=1===this.screenBounds.length?this.screenBounds[0].add(new e.pointGeometry(1,1)):this.screenBounds[1],n=e.polygonizeBounds(i,r,0,!1);return this.cameraPoint.y>r.y&&(this.cameraPoint.x>i.x&&this.cameraPoint.x<r.x?n.splice(3,0,this.cameraPoint):this.cameraPoint.x>=r.x?n[2]=this.cameraPoint:this.cameraPoint.x<=i.x&&(n[3]=this.cameraPoint)),e.bufferConvexPolygon(n,t)}containsTile(t,i,r){const n=t.queryPadding+1,o=t.tileID.wrap,s=r?this._bufferedCameraMercator(n,i).map((i=>e.getTilePoint(t.tileTransform,i,o))):this._bufferedScreenMercator(n,i).map((i=>e.getTilePoint(t.tileTransform,i,o))),a=this.screenGeometryMercator.map((i=>e.getTileVec3(t.tileTransform,i,o))),l=a.map((t=>new e.pointGeometry(t[0],t[1]))),c=i.getFreeCameraOptions().position||new e.MercatorCoordinate(0,0,0),h=e.getTileVec3(t.tileTransform,c,o),u=a.map((t=>{const i=e.sub(t,t,h);return e.normalize(i,i),new e.Ray(h,i)})),d=P(t,1,i.zoom);if(e.polygonIntersectsBox(s,0,0,e.EXTENT,e.EXTENT))return{queryGeometry:this,tilespaceGeometry:l,tilespaceRays:u,bufferedTilespaceGeometry:s,bufferedTilespaceBounds:(p=e.getBounds(s),p.min.x=e.clamp(p.min.x,0,e.EXTENT),p.min.y=e.clamp(p.min.y,0,e.EXTENT),p.max.x=e.clamp(p.max.x,0,e.EXTENT),p.max.y=e.clamp(p.max.y,0,e.EXTENT),p),tile:t,tileID:t.tileID,pixelToTileUnitsFactor:d};var p}_bufferedScreenMercator(e,t){const i=B(e);if(this._screenRaycastCache[i])return this._screenRaycastCache[i];{const r=this.bufferedScreenGeometry(e).map((e=>t.pointCoordinate3D(e)));return this._screenRaycastCache[i]=r,r}}_bufferedCameraMercator(e,t){const i=B(e);if(this._cameraRaycastCache[i])return this._cameraRaycastCache[i];{const r=this.bufferedCameraGeometry(e).map((e=>t.pointCoordinate3D(e)));return this._cameraRaycastCache[i]=r,r}}}function B(e){return 100*e|0}function R(t,i,r){const n=function(n,o){if(n)return r(n);if(o){const n=e.pick(e.extend(o,t),["tiles","minzoom","maxzoom","attribution","mapbox_logo","bounds","scheme","tileSize","encoding"]);o.vector_layers&&(n.vectorLayers=o.vector_layers,n.vectorLayerIds=n.vectorLayers.map((e=>e.id))),n.tiles=i.canonicalizeTileset(n,t.url),r(null,n)}};return t.url?e.getJSON(i.transformRequest(i.normalizeSourceURL(t.url),e.ResourceType.Source),n):e.exported.frame((()=>n(null,t)))}class F{constructor(t,i,r){this.bounds=e.LngLatBounds.convert(this.validateBounds(t)),this.minzoom=i||0,this.maxzoom=r||24}validateBounds(e){return Array.isArray(e)&&4===e.length?[Math.max(-180,e[0]),Math.max(-90,e[1]),Math.min(180,e[2]),Math.min(90,e[3])]:[-180,-90,180,90]}contains(t){const i=Math.pow(2,t.z),r=Math.floor(e.mercatorXfromLng(this.bounds.getWest())*i),n=Math.floor(e.mercatorYfromLat(this.bounds.getNorth())*i),o=Math.ceil(e.mercatorXfromLng(this.bounds.getEast())*i),s=Math.ceil(e.mercatorYfromLat(this.bounds.getSouth())*i);return t.x>=r&&t.x<o&&t.y>=n&&t.y<s}}class O{constructor(e,t,i){this.context=e;const r=e.gl;this.buffer=r.createBuffer(),this.dynamicDraw=Boolean(i),this.context.unbindVAO(),e.bindElementBuffer.set(this.buffer),r.bufferData(r.ELEMENT_ARRAY_BUFFER,t.arrayBuffer,this.dynamicDraw?r.DYNAMIC_DRAW:r.STATIC_DRAW),this.dynamicDraw||t.destroy()}bind(){this.context.bindElementBuffer.set(this.buffer)}updateData(e){const t=this.context.gl;this.context.unbindVAO(),this.bind(),t.bufferSubData(t.ELEMENT_ARRAY_BUFFER,0,e.arrayBuffer)}destroy(){this.buffer&&(this.context.gl.deleteBuffer(this.buffer),delete this.buffer)}}const U={Int8:"BYTE",Uint8:"UNSIGNED_BYTE",Int16:"SHORT",Uint16:"UNSIGNED_SHORT",Int32:"INT",Uint32:"UNSIGNED_INT",Float32:"FLOAT"};class V{constructor(e,t,i,r){this.length=t.length,this.attributes=i,this.itemSize=t.bytesPerElement,this.dynamicDraw=r,this.context=e;const n=e.gl;this.buffer=n.createBuffer(),e.bindVertexBuffer.set(this.buffer),n.bufferData(n.ARRAY_BUFFER,t.arrayBuffer,this.dynamicDraw?n.DYNAMIC_DRAW:n.STATIC_DRAW),this.dynamicDraw||t.destroy()}bind(){this.context.bindVertexBuffer.set(this.buffer)}updateData(e){const t=this.context.gl;this.bind(),t.bufferSubData(t.ARRAY_BUFFER,0,e.arrayBuffer)}enableAttributes(e,t){for(let i=0;i<this.attributes.length;i++){const r=t.attributes[this.attributes[i].name];void 0!==r&&e.enableVertexAttribArray(r)}}setVertexAttribPointers(e,t,i){for(let r=0;r<this.attributes.length;r++){const n=this.attributes[r],o=t.attributes[n.name];void 0!==o&&e.vertexAttribPointer(o,n.components,e[U[n.type]],!1,this.itemSize,n.offset+this.itemSize*(i||0))}}destroy(){this.buffer&&(this.context.gl.deleteBuffer(this.buffer),delete this.buffer)}}class j{constructor(e){this.gl=e.gl,this.default=this.getDefault(),this.current=this.default,this.dirty=!1}get(){return this.current}set(e){}getDefault(){return this.default}setDefault(){this.set(this.default)}}class N extends j{getDefault(){return e.Color.transparent}set(e){const t=this.current;(e.r!==t.r||e.g!==t.g||e.b!==t.b||e.a!==t.a||this.dirty)&&(this.gl.clearColor(e.r,e.g,e.b,e.a),this.current=e,this.dirty=!1)}}class G extends j{getDefault(){return 1}set(e){(e!==this.current||this.dirty)&&(this.gl.clearDepth(e),this.current=e,this.dirty=!1)}}class Z extends j{getDefault(){return 0}set(e){(e!==this.current||this.dirty)&&(this.gl.clearStencil(e),this.current=e,this.dirty=!1)}}class $ extends j{getDefault(){return[!0,!0,!0,!0]}set(e){const t=this.current;(e[0]!==t[0]||e[1]!==t[1]||e[2]!==t[2]||e[3]!==t[3]||this.dirty)&&(this.gl.colorMask(e[0],e[1],e[2],e[3]),this.current=e,this.dirty=!1)}}class q extends j{getDefault(){return!0}set(e){(e!==this.current||this.dirty)&&(this.gl.depthMask(e),this.current=e,this.dirty=!1)}}class X extends j{getDefault(){return 255}set(e){(e!==this.current||this.dirty)&&(this.gl.stencilMask(e),this.current=e,this.dirty=!1)}}class W extends j{getDefault(){return{func:this.gl.ALWAYS,ref:0,mask:255}}set(e){const t=this.current;(e.func!==t.func||e.ref!==t.ref||e.mask!==t.mask||this.dirty)&&(this.gl.stencilFunc(e.func,e.ref,e.mask),this.current=e,this.dirty=!1)}}class H extends j{getDefault(){const e=this.gl;return[e.KEEP,e.KEEP,e.KEEP]}set(e){const t=this.current;(e[0]!==t[0]||e[1]!==t[1]||e[2]!==t[2]||this.dirty)&&(this.gl.stencilOp(e[0],e[1],e[2]),this.current=e,this.dirty=!1)}}class Y extends j{getDefault(){return!1}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;e?t.enable(t.STENCIL_TEST):t.disable(t.STENCIL_TEST),this.current=e,this.dirty=!1}}class K extends j{getDefault(){return[0,1]}set(e){const t=this.current;(e[0]!==t[0]||e[1]!==t[1]||this.dirty)&&(this.gl.depthRange(e[0],e[1]),this.current=e,this.dirty=!1)}}class J extends j{getDefault(){return!1}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;e?t.enable(t.DEPTH_TEST):t.disable(t.DEPTH_TEST),this.current=e,this.dirty=!1}}class Q extends j{getDefault(){return this.gl.LESS}set(e){(e!==this.current||this.dirty)&&(this.gl.depthFunc(e),this.current=e,this.dirty=!1)}}class ee extends j{getDefault(){return!1}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;e?t.enable(t.BLEND):t.disable(t.BLEND),this.current=e,this.dirty=!1}}class te extends j{getDefault(){const e=this.gl;return[e.ONE,e.ZERO]}set(e){const t=this.current;(e[0]!==t[0]||e[1]!==t[1]||this.dirty)&&(this.gl.blendFunc(e[0],e[1]),this.current=e,this.dirty=!1)}}class ie extends j{getDefault(){return e.Color.transparent}set(e){const t=this.current;(e.r!==t.r||e.g!==t.g||e.b!==t.b||e.a!==t.a||this.dirty)&&(this.gl.blendColor(e.r,e.g,e.b,e.a),this.current=e,this.dirty=!1)}}class re extends j{getDefault(){return this.gl.FUNC_ADD}set(e){(e!==this.current||this.dirty)&&(this.gl.blendEquation(e),this.current=e,this.dirty=!1)}}class ne extends j{getDefault(){return!1}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;e?t.enable(t.CULL_FACE):t.disable(t.CULL_FACE),this.current=e,this.dirty=!1}}class oe extends j{getDefault(){return this.gl.BACK}set(e){(e!==this.current||this.dirty)&&(this.gl.cullFace(e),this.current=e,this.dirty=!1)}}class se extends j{getDefault(){return this.gl.CCW}set(e){(e!==this.current||this.dirty)&&(this.gl.frontFace(e),this.current=e,this.dirty=!1)}}class ae extends j{getDefault(){return null}set(e){(e!==this.current||this.dirty)&&(this.gl.useProgram(e),this.current=e,this.dirty=!1)}}class le extends j{getDefault(){return this.gl.TEXTURE0}set(e){(e!==this.current||this.dirty)&&(this.gl.activeTexture(e),this.current=e,this.dirty=!1)}}class ce extends j{getDefault(){const e=this.gl;return[0,0,e.drawingBufferWidth,e.drawingBufferHeight]}set(e){const t=this.current;(e[0]!==t[0]||e[1]!==t[1]||e[2]!==t[2]||e[3]!==t[3]||this.dirty)&&(this.gl.viewport(e[0],e[1],e[2],e[3]),this.current=e,this.dirty=!1)}}class he extends j{getDefault(){return null}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;t.bindFramebuffer(t.FRAMEBUFFER,e),this.current=e,this.dirty=!1}}class ue extends j{getDefault(){return null}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;t.bindRenderbuffer(t.RENDERBUFFER,e),this.current=e,this.dirty=!1}}class de extends j{getDefault(){return null}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;t.bindTexture(t.TEXTURE_2D,e),this.current=e,this.dirty=!1}}class pe extends j{getDefault(){return null}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;t.bindBuffer(t.ARRAY_BUFFER,e),this.current=e,this.dirty=!1}}class fe extends j{getDefault(){return null}set(e){const t=this.gl;t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,e),this.current=e,this.dirty=!1}}class me extends j{constructor(e){super(e),this.vao=e.extVertexArrayObject}getDefault(){return null}set(e){this.vao&&(e!==this.current||this.dirty)&&(this.vao.bindVertexArrayOES(e),this.current=e,this.dirty=!1)}}class _e extends j{getDefault(){return 4}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;t.pixelStorei(t.UNPACK_ALIGNMENT,e),this.current=e,this.dirty=!1}}class ge extends j{getDefault(){return!1}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;t.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL,e),this.current=e,this.dirty=!1}}class ye extends j{getDefault(){return!1}set(e){if(e===this.current&&!this.dirty)return;const t=this.gl;t.pixelStorei(t.UNPACK_FLIP_Y_WEBGL,e),this.current=e,this.dirty=!1}}class xe extends j{constructor(e,t){super(e),this.context=e,this.parent=t}getDefault(){return null}}class ve extends xe{setDirty(){this.dirty=!0}set(e){if(e===this.current&&!this.dirty)return;this.context.bindFramebuffer.set(this.parent);const t=this.gl;t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,e,0),this.current=e,this.dirty=!1}}class be extends xe{attachment(){return this.gl.DEPTH_ATTACHMENT}set(e){if(e===this.current&&!this.dirty)return;this.context.bindFramebuffer.set(this.parent);const t=this.gl;t.framebufferRenderbuffer(t.FRAMEBUFFER,this.attachment(),t.RENDERBUFFER,e),this.current=e,this.dirty=!1}}class we extends be{attachment(){return this.gl.DEPTH_STENCIL_ATTACHMENT}}class Te{constructor(e,t,i,r){this.context=e,this.width=t,this.height=i;const n=this.framebuffer=e.gl.createFramebuffer();this.colorAttachment=new ve(e,n),r&&(this.depthAttachment=new be(e,n))}destroy(){const e=this.context.gl,t=this.colorAttachment.get();if(t&&e.deleteTexture(t),this.depthAttachment){const t=this.depthAttachment.get();t&&e.deleteRenderbuffer(t)}e.deleteFramebuffer(this.framebuffer)}}class Ee{constructor(e){this.gl=e,this.extVertexArrayObject=this.gl.getExtension("OES_vertex_array_object"),this.clearColor=new N(this),this.clearDepth=new G(this),this.clearStencil=new Z(this),this.colorMask=new $(this),this.depthMask=new q(this),this.stencilMask=new X(this),this.stencilFunc=new W(this),this.stencilOp=new H(this),this.stencilTest=new Y(this),this.depthRange=new K(this),this.depthTest=new J(this),this.depthFunc=new Q(this),this.blend=new ee(this),this.blendFunc=new te(this),this.blendColor=new ie(this),this.blendEquation=new re(this),this.cullFace=new ne(this),this.cullFaceSide=new oe(this),this.frontFace=new se(this),this.program=new ae(this),this.activeTexture=new le(this),this.viewport=new ce(this),this.bindFramebuffer=new he(this),this.bindRenderbuffer=new ue(this),this.bindTexture=new de(this),this.bindVertexBuffer=new pe(this),this.bindElementBuffer=new fe(this),this.bindVertexArrayOES=this.extVertexArrayObject&&new me(this),this.pixelStoreUnpack=new _e(this),this.pixelStoreUnpackPremultiplyAlpha=new ge(this),this.pixelStoreUnpackFlipY=new ye(this),this.extTextureFilterAnisotropic=e.getExtension("EXT_texture_filter_anisotropic")||e.getExtension("MOZ_EXT_texture_filter_anisotropic")||e.getExtension("WEBKIT_EXT_texture_filter_anisotropic"),this.extTextureFilterAnisotropic&&(this.extTextureFilterAnisotropicMax=e.getParameter(this.extTextureFilterAnisotropic.MAX_TEXTURE_MAX_ANISOTROPY_EXT)),this.extTextureFilterAnisotropicForceOff=!1,this.extTextureHalfFloat=e.getExtension("OES_texture_half_float"),this.extTextureHalfFloat&&(e.getExtension("OES_texture_half_float_linear"),this.extRenderToTextureHalfFloat=e.getExtension("EXT_color_buffer_half_float")),this.extTimerQuery=e.getExtension("EXT_disjoint_timer_query"),this.maxTextureSize=e.getParameter(e.MAX_TEXTURE_SIZE)}setDefault(){this.unbindVAO(),this.clearColor.setDefault(),this.clearDepth.setDefault(),this.clearStencil.setDefault(),this.colorMask.setDefault(),this.depthMask.setDefault(),this.stencilMask.setDefault(),this.stencilFunc.setDefault(),this.stencilOp.setDefault(),this.stencilTest.setDefault(),this.depthRange.setDefault(),this.depthTest.setDefault(),this.depthFunc.setDefault(),this.blend.setDefault(),this.blendFunc.setDefault(),this.blendColor.setDefault(),this.blendEquation.setDefault(),this.cullFace.setDefault(),this.cullFaceSide.setDefault(),this.frontFace.setDefault(),this.program.setDefault(),this.activeTexture.setDefault(),this.bindFramebuffer.setDefault(),this.pixelStoreUnpack.setDefault(),this.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.pixelStoreUnpackFlipY.setDefault()}setDirty(){this.clearColor.dirty=!0,this.clearDepth.dirty=!0,this.clearStencil.dirty=!0,this.colorMask.dirty=!0,this.depthMask.dirty=!0,this.stencilMask.dirty=!0,this.stencilFunc.dirty=!0,this.stencilOp.dirty=!0,this.stencilTest.dirty=!0,this.depthRange.dirty=!0,this.depthTest.dirty=!0,this.depthFunc.dirty=!0,this.blend.dirty=!0,this.blendFunc.dirty=!0,this.blendColor.dirty=!0,this.blendEquation.dirty=!0,this.cullFace.dirty=!0,this.cullFaceSide.dirty=!0,this.frontFace.dirty=!0,this.program.dirty=!0,this.activeTexture.dirty=!0,this.viewport.dirty=!0,this.bindFramebuffer.dirty=!0,this.bindRenderbuffer.dirty=!0,this.bindTexture.dirty=!0,this.bindVertexBuffer.dirty=!0,this.bindElementBuffer.dirty=!0,this.extVertexArrayObject&&(this.bindVertexArrayOES.dirty=!0),this.pixelStoreUnpack.dirty=!0,this.pixelStoreUnpackPremultiplyAlpha.dirty=!0,this.pixelStoreUnpackFlipY.dirty=!0}createIndexBuffer(e,t){return new O(this,e,t)}createVertexBuffer(e,t,i){return new V(this,e,t,i)}createRenderbuffer(e,t,i){const r=this.gl,n=r.createRenderbuffer();return this.bindRenderbuffer.set(n),r.renderbufferStorage(r.RENDERBUFFER,e,t,i),this.bindRenderbuffer.set(null),n}createFramebuffer(e,t,i){return new Te(this,e,t,i)}clear({color:e,depth:t,stencil:i}){const r=this.gl;let n=0;e&&(n|=r.COLOR_BUFFER_BIT,this.clearColor.set(e),this.colorMask.set([!0,!0,!0,!0])),void 0!==t&&(n|=r.DEPTH_BUFFER_BIT,this.depthRange.set([0,1]),this.clearDepth.set(t),this.depthMask.set(!0)),void 0!==i&&(n|=r.STENCIL_BUFFER_BIT,this.clearStencil.set(i),this.stencilMask.set(255)),r.clear(n)}setCullFace(e){!1===e.enable?this.cullFace.set(!1):(this.cullFace.set(!0),this.cullFaceSide.set(e.mode),this.frontFace.set(e.frontFace))}setDepthMode(e){e.func!==this.gl.ALWAYS||e.mask?(this.depthTest.set(!0),this.depthFunc.set(e.func),this.depthMask.set(e.mask),this.depthRange.set(e.range)):this.depthTest.set(!1)}setStencilMode(e){e.test.func!==this.gl.ALWAYS||e.mask?(this.stencilTest.set(!0),this.stencilMask.set(e.mask),this.stencilOp.set([e.fail,e.depthFail,e.pass]),this.stencilFunc.set({func:e.test.func,ref:e.ref,mask:e.test.mask})):this.stencilTest.set(!1)}setColorMode(t){n(t.blendFunction,e.ColorMode.Replace)?this.blend.set(!1):(this.blend.set(!0),this.blendFunc.set(t.blendFunction),this.blendColor.set(t.blendColor)),this.colorMask.set(t.mask)}unbindVAO(){this.extVertexArrayObject&&this.bindVertexArrayOES.set(null)}}class Se extends e.Evented{constructor(t,i,r,n){super(),this.id=t,this.dispatcher=r,this.setEventedParent(n),this.type="raster",this.minzoom=0,this.maxzoom=22,this.roundZoom=!0,this.scheme="xyz",this.tileSize=512,this._loaded=!1,this._options=e.extend({type:"raster"},i),e.extend(this,e.pick(i,["url","scheme","tileSize"]))}load(){this._loaded=!1,this.fire(new e.Event("dataloading",{dataType:"source"})),this._tileJSONRequest=R(this._options,this.map._requestManager,((t,i)=>{this._tileJSONRequest=null,this._loaded=!0,t?this.fire(new e.ErrorEvent(t)):i&&(e.extend(this,i),i.bounds&&(this.tileBounds=new F(i.bounds,this.minzoom,this.maxzoom)),e.postTurnstileEvent(i.tiles),this.fire(new e.Event("data",{dataType:"source",sourceDataType:"metadata"})),this.fire(new e.Event("data",{dataType:"source",sourceDataType:"content"})))}))}loaded(){return this._loaded}onAdd(e){this.map=e,this.load()}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.cancel(),this._tileJSONRequest=null)}serialize(){return e.extend({},this._options)}hasTile(e){return!this.tileBounds||this.tileBounds.contains(e.canonical)}loadTile(t,i){const r=e.exported.devicePixelRatio>=2,n=this.map._requestManager.normalizeTileURL(t.tileID.canonical.url(this.tiles,this.scheme),r,this.tileSize);t.request=e.getImage(this.map._requestManager.transformRequest(n,e.ResourceType.Tile),((r,n,o,s)=>(delete t.request,t.aborted?(t.state="unloaded",i(null)):r?(t.state="errored",i(r)):n?(this.map._refreshExpiredTiles&&t.setExpiryData({cacheControl:o,expires:s}),t.setTexture(n,this.map.painter),t.state="loaded",e.cacheEntryPossiblyAdded(this.dispatcher),void i(null)):i(null))))}static loadTileData(e,t,i){e.setTexture(t,i)}static unloadTileData(e,t){e.texture&&t.saveTileTexture(e.texture)}abortTile(e,t){e.request&&(e.request.cancel(),delete e.request),t()}unloadTile(e,t){e.texture&&this.map.painter.saveTileTexture(e.texture),t()}hasTransition(){return!1}}let Ie;function Me(t,i,r,n,o,s,a,l){const c=[t,r,o,i,n,s,1,1,1],h=[a,l,1],u=e.adjoint([],c),[d,p,f]=e.transformMat3(h,h,e.transpose(u,u));return e.multiply(c,[d,0,0,0,p,0,0,0,f],c)}class Ae extends e.Evented{constructor(e,t,i,r){super(),this.id=e,this.dispatcher=i,this.coordinates=t.coordinates,this.type="image",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this._loaded=!1,this.setEventedParent(r),this.options=t}load(t){this._loaded=!1,this.fire(new e.Event("dataloading",{dataType:"source"})),this.url=this.options.url,e.getImage(this.map._requestManager.transformRequest(this.url,e.ResourceType.Image),((i,r)=>{if(this._loaded=!0,i)this.fire(new e.ErrorEvent(i));else if(r){const{HTMLImageElement:i}=e.window;this.image=r instanceof i?e.exported.getImageData(r):r,this.width=this.image.width,this.height=this.image.height,t&&(this.coordinates=t),this._finishLoading()}}))}loaded(){return this._loaded}updateImage(e){return this.image&&e.url?(this.options.url=e.url,this.load(e.coordinates),this):this}_finishLoading(){this.map&&(this.setCoordinates(this.coordinates),this.fire(new e.Event("data",{dataType:"source",sourceDataType:"metadata"})))}onAdd(e){this.map=e,this.load()}onRemove(){this.texture&&this.texture.destroy()}setCoordinates(t){this.coordinates=t,this._boundsArray=void 0;const i=t.map(e.MercatorCoordinate.fromLngLat);return this.tileID=function(t){let i=1/0,r=1/0,n=-1/0,o=-1/0;for(const e of t)i=Math.min(i,e.x),r=Math.min(r,e.y),n=Math.max(n,e.x),o=Math.max(o,e.y);const s=Math.max(n-i,o-r),a=Math.max(0,Math.floor(-Math.log(s)/Math.LN2)),l=Math.pow(2,a);return new e.CanonicalTileID(a,Math.floor((i+n)/2*l),Math.floor((r+o)/2*l))}(i),this.minzoom=this.maxzoom=this.tileID.z,this.fire(new e.Event("data",{dataType:"source",sourceDataType:"content"})),this}_clear(){this._boundsArray=void 0}_prepareData(t){for(const e in this.tiles){const t=this.tiles[e];"loaded"!==t.state&&(t.state="loaded",t.texture=this.texture)}if(this._boundsArray)return;const i=e.tileTransform(this.tileID,this.map.transform.projection),[r,n,o,s]=this.coordinates.map((t=>{const r=i.projection.project(t[0],t[1]);return e.getTilePoint(i,r)._round()}));this.perspectiveTransform=function(t,i,r,n,o,s,a,l,c,h){const u=Me(0,0,t,0,0,i,t,i),d=Me(r,n,o,s,a,l,c,h);return e.multiply(d,e.adjoint(u,u),d),[d[6]/d[8]*t/e.EXTENT,d[7]/d[8]*i/e.EXTENT]}(this.width,this.height,r.x,r.y,n.x,n.y,s.x,s.y,o.x,o.y);const a=this._boundsArray=new e.StructArrayLayout4i8;a.emplaceBack(r.x,r.y,0,0),a.emplaceBack(n.x,n.y,e.EXTENT,0),a.emplaceBack(s.x,s.y,0,e.EXTENT),a.emplaceBack(o.x,o.y,e.EXTENT,e.EXTENT),this.boundsBuffer&&this.boundsBuffer.destroy(),this.boundsBuffer=t.createVertexBuffer(a,e.boundsAttributes.members),this.boundsSegments=e.SegmentVector.simpleSegment(0,0,4,2)}prepare(){if(0===Object.keys(this.tiles).length||!this.image)return;const t=this.map.painter.context,i=t.gl;this.texture?this.texture.update(this.image):(this.texture=new e.Texture(t,this.image,i.RGBA),this.texture.bind(i.LINEAR,i.CLAMP_TO_EDGE)),this._prepareData(t)}loadTile(e,t){this.tileID&&this.tileID.equals(e.tileID.canonical)?(this.tiles[String(e.tileID.wrap)]=e,e.buckets={},t(null)):(e.state="errored",t(null))}serialize(){return{type:"image",url:this.options.url,coordinates:this.coordinates}}hasTransition(){return!1}}const Ce={vector:class extends e.Evented{constructor(t,i,r,n){if(super(),this.id=t,this.dispatcher=r,this.type="vector",this.minzoom=0,this.maxzoom=22,this.scheme="xyz",this.tileSize=512,this.reparseOverscaled=!0,this.isTileClipped=!0,this._loaded=!1,e.extend(this,e.pick(i,["url","scheme","tileSize","promoteId"])),this._options=e.extend({type:"vector"},i),this._collectResourceTiming=i.collectResourceTiming,512!==this.tileSize)throw new Error("vector tile sources must have a tileSize of 512");this.setEventedParent(n),this._tileWorkers={},this._deduped=new e.DedupedRequest}load(){this._loaded=!1,this.fire(new e.Event("dataloading",{dataType:"source"})),this._tileJSONRequest=R(this._options,this.map._requestManager,((t,i)=>{this._tileJSONRequest=null,this._loaded=!0,t?this.fire(new e.ErrorEvent(t)):i&&(e.extend(this,i),i.bounds&&(this.tileBounds=new F(i.bounds,this.minzoom,this.maxzoom)),e.postTurnstileEvent(i.tiles,this.map._requestManager._customAccessToken),this.fire(new e.Event("data",{dataType:"source",sourceDataType:"metadata"})),this.fire(new e.Event("data",{dataType:"source",sourceDataType:"content"})))}))}loaded(){return this._loaded}hasTile(e){return!this.tileBounds||this.tileBounds.contains(e.canonical)}onAdd(e){this.map=e,this.load()}setSourceProperty(e){this._tileJSONRequest&&this._tileJSONRequest.cancel(),e();const t=this.map.style._getSourceCaches(this.id);for(const e of t)e.clearTiles();this.load()}setTiles(e){return this.setSourceProperty((()=>{this._options.tiles=e})),this}setUrl(e){return this.setSourceProperty((()=>{this.url=e,this._options.url=e})),this}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.cancel(),this._tileJSONRequest=null)}serialize(){return e.extend({},this._options)}loadTile(t,i){const r=this.map._requestManager.normalizeTileURL(t.tileID.canonical.url(this.tiles,this.scheme)),n={request:this.map._requestManager.transformRequest(r,e.ResourceType.Tile),data:void 0,uid:t.uid,tileID:t.tileID,tileZoom:t.tileZoom,zoom:t.tileID.overscaledZ,tileSize:this.tileSize*t.tileID.overscaleFactor(),type:this.type,source:this.id,pixelRatio:e.exported.devicePixelRatio,showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId,isSymbolTile:t.isSymbolTile};if(n.request.collectResourceTiming=this._collectResourceTiming,t.actor&&"expired"!==t.state)"loading"===t.state?t.reloadCallback=i:t.request=t.actor.send("reloadTile",n,o.bind(this));else if(t.actor=this._tileWorkers[r]=this._tileWorkers[r]||this.dispatcher.getActor(),this.dispatcher.ready)t.request=t.actor.send("loadTile",n,o.bind(this),void 0,!0);else{const i=e.loadVectorTile.call({deduped:this._deduped},n,((e,i)=>{e||!i?o.call(this,e):(n.data={cacheControl:i.cacheControl,expires:i.expires,rawData:i.rawData.slice(0)},t.actor&&t.actor.send("loadTile",n,o.bind(this),void 0,!0))}),!0);t.request={cancel:i}}function o(r,n){return delete t.request,t.aborted?i(null):r&&404!==r.status?i(r):(n&&n.resourceTiming&&(t.resourceTiming=n.resourceTiming),this.map._refreshExpiredTiles&&n&&t.setExpiryData(n),t.loadVectorData(n,this.map.painter),e.cacheEntryPossiblyAdded(this.dispatcher),i(null),void(t.reloadCallback&&(this.loadTile(t,t.reloadCallback),t.reloadCallback=null)))}}abortTile(e){e.request&&(e.request.cancel(),delete e.request),e.actor&&e.actor.send("abortTile",{uid:e.uid,type:this.type,source:this.id})}unloadTile(e){e.unloadVectorData(),e.actor&&e.actor.send("removeTile",{uid:e.uid,type:this.type,source:this.id})}hasTransition(){return!1}afterUpdate(){this._tileWorkers={}}},raster:Se,"raster-dem":class extends Se{constructor(t,i,r,n){super(t,i,r,n),this.type="raster-dem",this.maxzoom=22,this._options=e.extend({type:"raster-dem"},i),this.encoding=i.encoding||"mapbox"}loadTile(t,i){const r=this.map._requestManager.normalizeTileURL(t.tileID.canonical.url(this.tiles,this.scheme),!1,this.tileSize);function n(e,r){e&&(t.state="errored",i(e)),r&&(t.dem=r,t.dem.onDeserialize(),t.needsHillshadePrepare=!0,t.needsDEMTextureUpload=!0,t.state="loaded",i(null))}t.request=e.getImage(this.map._requestManager.transformRequest(r,e.ResourceType.Tile),function(r,o,s,a){if(delete t.request,t.aborted)t.state="unloaded",i(null);else if(r)t.state="errored",i(r);else if(o){this.map._refreshExpiredTiles&&t.setExpiryData({cacheControl:s,expires:a});const i=e.window.ImageBitmap&&o instanceof e.window.ImageBitmap&&(null==Ie&&(Ie=e.window.OffscreenCanvas&&new e.window.OffscreenCanvas(1,1).getContext("2d")&&"function"==typeof e.window.createImageBitmap),Ie),r=1-(o.width-e.prevPowerOfTwo(o.width))/2;r<1||t.neighboringTiles||(t.neighboringTiles=this._getNeighboringTiles(t.tileID));const l=i?o:e.exported.getImageData(o,r),c={uid:t.uid,coord:t.tileID,source:this.id,rawImageData:l,encoding:this.encoding,padding:r};t.actor&&"expired"!==t.state||(t.actor=this.dispatcher.getActor(),t.actor.send("loadDEMTile",c,n.bind(this),void 0,!0))}}.bind(this))}_getNeighboringTiles(t){const i=t.canonical,r=Math.pow(2,i.z),n=(i.x-1+r)%r,o=0===i.x?t.wrap-1:t.wrap,s=(i.x+1+r)%r,a=i.x+1===r?t.wrap+1:t.wrap,l={};return l[new e.OverscaledTileID(t.overscaledZ,o,i.z,n,i.y).key]={backfilled:!1},l[new e.OverscaledTileID(t.overscaledZ,a,i.z,s,i.y).key]={backfilled:!1},i.y>0&&(l[new e.OverscaledTileID(t.overscaledZ,o,i.z,n,i.y-1).key]={backfilled:!1},l[new e.OverscaledTileID(t.overscaledZ,t.wrap,i.z,i.x,i.y-1).key]={backfilled:!1},l[new e.OverscaledTileID(t.overscaledZ,a,i.z,s,i.y-1).key]={backfilled:!1}),i.y+1<r&&(l[new e.OverscaledTileID(t.overscaledZ,o,i.z,n,i.y+1).key]={backfilled:!1},l[new e.OverscaledTileID(t.overscaledZ,t.wrap,i.z,i.x,i.y+1).key]={backfilled:!1},l[new e.OverscaledTileID(t.overscaledZ,a,i.z,s,i.y+1).key]={backfilled:!1}),l}unloadTile(e){e.demTexture&&this.map.painter.saveTileTexture(e.demTexture),e.fbo&&(e.fbo.destroy(),delete e.fbo),e.dem&&delete e.dem,delete e.neighboringTiles,e.state="unloaded"}},geojson:class extends e.Evented{constructor(t,i,r,n){super(),this.id=t,this.type="geojson",this.minzoom=0,this.maxzoom=18,this.tileSize=512,this.isTileClipped=!0,this.reparseOverscaled=!0,this._loaded=!1,this.actor=r.getActor(),this.setEventedParent(n),this._data=i.data,this._options=e.extend({},i),this._collectResourceTiming=i.collectResourceTiming,void 0!==i.maxzoom&&(this.maxzoom=i.maxzoom),i.type&&(this.type=i.type),i.attribution&&(this.attribution=i.attribution),this.promoteId=i.promoteId;const o=e.EXTENT/this.tileSize;this.workerOptions=e.extend({source:this.id,cluster:i.cluster||!1,geojsonVtOptions:{buffer:(void 0!==i.buffer?i.buffer:128)*o,tolerance:(void 0!==i.tolerance?i.tolerance:.375)*o,extent:e.EXTENT,maxZoom:this.maxzoom,lineMetrics:i.lineMetrics||!1,generateId:i.generateId||!1},superclusterOptions:{maxZoom:void 0!==i.clusterMaxZoom?i.clusterMaxZoom:this.maxzoom-1,minPoints:Math.max(2,i.clusterMinPoints||2),extent:e.EXTENT,radius:(void 0!==i.clusterRadius?i.clusterRadius:50)*o,log:!1,generateId:i.generateId||!1},clusterProperties:i.clusterProperties,filter:i.filter},i.workerOptions)}onAdd(e){this.map=e,this.setData(this._data)}setData(e){return this._data=e,this._updateWorkerData(),this}getClusterExpansionZoom(e,t){return this.actor.send("geojson.getClusterExpansionZoom",{clusterId:e,source:this.id},t),this}getClusterChildren(e,t){return this.actor.send("geojson.getClusterChildren",{clusterId:e,source:this.id},t),this}getClusterLeaves(e,t,i,r){return this.actor.send("geojson.getClusterLeaves",{source:this.id,clusterId:e,limit:t,offset:i},r),this}_updateWorkerData(){if(this._pendingLoad)return void(this._coalesce=!0);this.fire(new e.Event("dataloading",{dataType:"source"})),this._loaded=!1;const t=e.extend({},this.workerOptions),i=this._data;"string"==typeof i?(t.request=this.map._requestManager.transformRequest(e.exported.resolveURL(i),e.ResourceType.Source),t.request.collectResourceTiming=this._collectResourceTiming):t.data=JSON.stringify(i),this._pendingLoad=this.actor.send(`${this.type}.loadData`,t,((t,i)=>{if(this._loaded=!0,this._pendingLoad=null,t)this.fire(new e.ErrorEvent(t));else{const t={dataType:"source",sourceDataType:this._metadataFired?"content":"metadata"};this._collectResourceTiming&&i&&i.resourceTiming&&i.resourceTiming[this.id]&&(t.resourceTiming=i.resourceTiming[this.id]),this.fire(new e.Event("data",t)),this._metadataFired=!0}this._coalesce&&(this._updateWorkerData(),this._coalesce=!1)}))}loaded(){return this._loaded}loadTile(t,i){const r=t.actor?"reloadTile":"loadTile";t.actor=this.actor,t.request=this.actor.send(r,{type:this.type,uid:t.uid,tileID:t.tileID,tileZoom:t.tileZoom,zoom:t.tileID.overscaledZ,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:e.exported.devicePixelRatio,showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId},((e,n)=>(delete t.request,t.unloadVectorData(),t.aborted?i(null):e?i(e):(t.loadVectorData(n,this.map.painter,"reloadTile"===r),i(null)))),void 0,"loadTile"===r)}abortTile(e){e.request&&(e.request.cancel(),delete e.request),e.aborted=!0}unloadTile(e){e.unloadVectorData(),this.actor.send("removeTile",{uid:e.uid,type:this.type,source:this.id})}onRemove(){this._pendingLoad&&this._pendingLoad.cancel()}serialize(){return e.extend({},this._options,{type:this.type,data:this._data})}hasTransition(){return!1}},video:class extends Ae{constructor(e,t,i,r){super(e,t,i,r),this.roundZoom=!0,this.type="video",this.options=t}load(){this._loaded=!1;const t=this.options;this.urls=[];for(const i of t.urls)this.urls.push(this.map._requestManager.transformRequest(i,e.ResourceType.Source).url);e.getVideo(this.urls,((t,i)=>{this._loaded=!0,t?this.fire(new e.ErrorEvent(t)):i&&(this.video=i,this.video.loop=!0,this.video.setAttribute("playsinline",""),this.video.addEventListener("playing",(()=>{this.map.triggerRepaint()})),this.map&&this.video.play(),this._finishLoading())}))}pause(){this.video&&this.video.pause()}play(){this.video&&this.video.play()}seek(t){if(this.video){const i=this.video.seekable;t<i.start(0)||t>i.end(0)?this.fire(new e.ErrorEvent(new e.ValidationError(`sources.${this.id}`,null,`Playback for this video can be set only between the ${i.start(0)} and ${i.end(0)}-second mark.`))):this.video.currentTime=t}}getVideo(){return this.video}onAdd(e){this.map||(this.map=e,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)))}prepare(){if(0===Object.keys(this.tiles).length||this.video.readyState<2)return;const t=this.map.painter.context,i=t.gl;this.texture?this.video.paused||(this.texture.bind(i.LINEAR,i.CLAMP_TO_EDGE),i.texSubImage2D(i.TEXTURE_2D,0,0,0,i.RGBA,i.UNSIGNED_BYTE,this.video)):(this.texture=new e.Texture(t,this.video,i.RGBA),this.texture.bind(i.LINEAR,i.CLAMP_TO_EDGE),this.width=this.video.videoWidth,this.height=this.video.videoHeight),this._prepareData(t)}serialize(){return{type:"video",urls:this.urls,coordinates:this.coordinates}}hasTransition(){return this.video&&!this.video.paused}},image:Ae,canvas:class extends Ae{constructor(t,i,r,n){super(t,i,r,n),i.coordinates?Array.isArray(i.coordinates)&&4===i.coordinates.length&&!i.coordinates.some((e=>!Array.isArray(e)||2!==e.length||e.some((e=>"number"!=typeof e))))||this.fire(new e.ErrorEvent(new e.ValidationError(`sources.${t}`,null,'"coordinates" property must be an array of 4 longitude/latitude array pairs'))):this.fire(new e.ErrorEvent(new e.ValidationError(`sources.${t}`,null,'missing required property "coordinates"'))),i.animate&&"boolean"!=typeof i.animate&&this.fire(new e.ErrorEvent(new e.ValidationError(`sources.${t}`,null,'optional "animate" property must be a boolean value'))),i.canvas?"string"==typeof i.canvas||i.canvas instanceof e.window.HTMLCanvasElement||this.fire(new e.ErrorEvent(new e.ValidationError(`sources.${t}`,null,'"canvas" must be either a string representing the ID of the canvas element from which to read, or an HTMLCanvasElement instance'))):this.fire(new e.ErrorEvent(new e.ValidationError(`sources.${t}`,null,'missing required property "canvas"'))),this.options=i,this.animate=void 0===i.animate||i.animate}load(){this._loaded=!0,this.canvas||(this.canvas=this.options.canvas instanceof e.window.HTMLCanvasElement?this.options.canvas:e.window.document.getElementById(this.options.canvas)),this.width=this.canvas.width,this.height=this.canvas.height,this._hasInvalidDimensions()?this.fire(new e.ErrorEvent(new Error("Canvas dimensions cannot be less than or equal to zero."))):(this.play=function(){this._playing=!0,this.map.triggerRepaint()},this.pause=function(){this._playing&&(this.prepare(),this._playing=!1)},this._finishLoading())}getCanvas(){return this.canvas}onAdd(e){this.map=e,this.load(),this.canvas&&this.animate&&this.play()}onRemove(){this.pause()}prepare(){let t=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,t=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,t=!0),this._hasInvalidDimensions())return;if(0===Object.keys(this.tiles).length)return;const i=this.map.painter.context;this.texture?(t||this._playing)&&this.texture.update(this.canvas,{premultiply:!0}):this.texture=new e.Texture(i,this.canvas,i.gl.RGBA,{premultiply:!0}),this._prepareData(i)}serialize(){return{type:"canvas",coordinates:this.coordinates}}hasTransition(){return this._playing}_hasInvalidDimensions(){for(const e of[this.canvas.width,this.canvas.height])if(isNaN(e)||e<=0)return!0;return!1}},custom:class extends e.Evented{constructor(t,i,r,n){super(),this.id=t,this.type="custom",this._dataType="raster",this._dispatcher=r,this._implementation=i,this.setEventedParent(n),this.scheme="xyz",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this._loaded=!1,this.roundZoom=!0,this._implementation||this.fire(new e.ErrorEvent(new Error(`Missing implementation for ${this.id} custom source`))),this._implementation.loadTile||this.fire(new e.ErrorEvent(new Error(`Missing loadTile implementation for ${this.id} custom source`))),this._implementation.bounds&&(this.tileBounds=new F(this._implementation.bounds,this.minzoom,this.maxzoom)),i.update=this._update.bind(this),i.coveringTiles=this._coveringTiles.bind(this),e.extend(this,e.pick(i,["dataType","scheme","minzoom","maxzoom","tileSize","attribution","minTileCacheSize","maxTileCacheSize"]))}serialize(){return e.pick(this,["type","scheme","minzoom","maxzoom","tileSize","attribution"])}load(){this._loaded=!0,this.fire(new e.Event("data",{dataType:"source",sourceDataType:"metadata"})),this.fire(new e.Event("data",{dataType:"source",sourceDataType:"content"}))}loaded(){return this._loaded}onAdd(t){this._map=t,this._loaded=!1,this.fire(new e.Event("dataloading",{dataType:"source"})),this._implementation.onAdd&&this._implementation.onAdd(t),this.load()}onRemove(e){this._implementation.onRemove&&this._implementation.onRemove(e)}hasTile(e){if(this._implementation.hasTile){const{x:t,y:i,z:r}=e.canonical;return this._implementation.hasTile({x:t,y:i,z:r})}return!this.tileBounds||this.tileBounds.contains(e.canonical)}loadTile(t,i){const{x:r,y:n,z:o}=t.tileID.canonical,s=new e.window.AbortController,a=this._implementation.loadTile({x:r,y:n,z:o},{signal:s.signal});if(!a)return this.loadTileData(t,{width:this.tileSize,height:this.tileSize,data:null}),t.state="loaded",i(null);a.cancel=()=>s.abort(),t.request=a.then(function(r){return delete t.request,t.aborted?(t.state="unloaded",i(null)):r?function(t){return t instanceof e.window.ImageData||t instanceof e.window.ImageBitmap||t instanceof e.window.HTMLCanvasElement}(r)?(this.loadTileData(t,r),t.state="loaded",void i(null)):(t.state="errored",i(new Error(`Can't infer data type for ${this.id}, only raster data supported at the moment`))):(this.loadTileData(t,{width:this.tileSize,height:this.tileSize,data:null}),t.state="loaded",i(null))}.bind(this)).catch((e=>{20!==e.code&&(t.state="errored",i(e))}))}loadTileData(e,t){Se.loadTileData(e,t,this._map.painter)}unloadTileData(e){Se.unloadTileData(e,this._map.painter)}prepareTile(e){if(!this._implementation.prepareTile)return null;const{x:t,y:i,z:r}=e.tileID.canonical,n=this._implementation.prepareTile({x:t,y:i,z:r});return n?(this.loadTileData(e,n),e.state="loaded",n):null}unloadTile(e,t){if(this.unloadTileData(e),this._implementation.unloadTile){const{x:t,y:i,z:r}=e.tileID.canonical;this._implementation.unloadTile({x:t,y:i,z:r})}t()}abortTile(e,t){e.request&&e.request.cancel&&(e.request.cancel(),delete e.request),t()}hasTransition(){return!1}_coveringTiles(){return this._map.transform.coveringTiles({tileSize:this.tileSize,minzoom:this.minzoom,maxzoom:this.maxzoom,roundZoom:this.roundZoom}).map((e=>({x:e.canonical.x,y:e.canonical.y,z:e.canonical.z})))}_update(){this.fire(new e.Event("data",{dataType:"source",sourceDataType:"content"}))}}},ze=function(t,i,r,n){const o=new Ce[i.type](t,i,r,n);if(o.id!==t)throw new Error(`Expected Source id to be ${t} instead of ${o.id}`);return e.bindAll(["load","abort","unload","serialize","prepare"],o),o};function ke(t,i){const r=e.identity([]);return e.scale(r,r,[.5*t.width,.5*-t.height,1]),e.translate(r,r,[1,-1,0]),e.multiply$1(r,r,t.calculateProjMatrix(i.toUnwrapped())),Float32Array.from(r)}function De(e,t,i,r,n,o,s,a=!1){const l=e.tilesIn(r,s,a);l.sort(Le);const c=[];for(const r of l)c.push({wrappedTileID:r.tile.tileID.wrapped().key,queryResults:r.tile.queryRenderedFeatures(t,i,e._state,r,n,o,ke(e.transform,r.tile.tileID),a)});const h=function(e){const t={},i={};for(const r of e){const e=r.queryResults,n=r.wrappedTileID,o=i[n]=i[n]||{};for(const i in e){const r=e[i],n=o[i]=o[i]||{},s=t[i]=t[i]||[];for(const e of r)n[e.featureIndex]||(n[e.featureIndex]=!0,s.push(e))}}return t}(c);for(const t in h)h[t].forEach((t=>{const i=t.feature,r=i.layer;r&&"background"!==r.type&&"sky"!==r.type&&(i.source=r.source,r["source-layer"]&&(i.sourceLayer=r["source-layer"]),i.state=void 0!==i.id?e.getFeatureState(r["source-layer"],i.id):{})}));return h}function Pe(e,t){const i=e.getRenderableIds().map((t=>e.getTileByID(t))),r=[],n={};for(let e=0;e<i.length;e++){const o=i[e],s=o.tileID.canonical.key;n[s]||(n[s]=!0,o.querySourceFeatures(r,t))}return r}function Le(e,t){const i=e.tileID,r=t.tileID;return i.overscaledZ-r.overscaledZ||i.canonical.y-r.canonical.y||i.wrap-r.wrap||i.canonical.x-r.canonical.x}function Be(){return null!=ao.workerClass?new ao.workerClass:new e.window.Worker(ao.workerUrl)}const Re="mapboxgl_preloaded_worker_pool";class Fe{constructor(){this.active={}}acquire(e){if(!this.workers)for(this.workers=[];this.workers.length<Fe.workerCount;)this.workers.push(new Be);return this.active[e]=!0,this.workers.slice()}release(e){delete this.active[e],0===this.numActive()&&(this.workers.forEach((e=>{e.terminate()})),this.workers=null)}isPreloaded(){return!!this.active[Re]}numActive(){return Object.keys(this.active).length}}let Oe;function Ue(){return Oe||(Oe=new Fe),Oe}function Ve(t,i){const r={};for(const e in t)"ref"!==e&&(r[e]=t[e]);return e.refProperties.forEach((e=>{e in i&&(r[e]=i[e])})),r}function je(e){e=e.slice();const t=Object.create(null);for(let i=0;i<e.length;i++)t[e[i].id]=e[i];for(let i=0;i<e.length;i++)"ref"in e[i]&&(e[i]=Ve(e[i],t[e[i].ref]));return e}Fe.workerCount=2;const Ne={setStyle:"setStyle",addLayer:"addLayer",removeLayer:"removeLayer",setPaintProperty:"setPaintProperty",setLayoutProperty:"setLayoutProperty",setFilter:"setFilter",addSource:"addSource",removeSource:"removeSource",setGeoJSONSourceData:"setGeoJSONSourceData",setLayerZoomRange:"setLayerZoomRange",setLayerProperty:"setLayerProperty",setCenter:"setCenter",setZoom:"setZoom",setBearing:"setBearing",setPitch:"setPitch",setSprite:"setSprite",setGlyphs:"setGlyphs",setTransition:"setTransition",setLight:"setLight",setTerrain:"setTerrain",setFog:"setFog",setProjection:"setProjection"};function Ge(e,t,i){i.push({command:Ne.addSource,args:[e,t[e]]})}function Ze(e,t,i){t.push({command:Ne.removeSource,args:[e]}),i[e]=!0}function $e(e,t,i,r){Ze(e,i,r),Ge(e,t,i)}function qe(e,t,i){let r;for(r in e[i])if(e[i].hasOwnProperty(r)&&"data"!==r&&!n(e[i][r],t[i][r]))return!1;for(r in t[i])if(t[i].hasOwnProperty(r)&&"data"!==r&&!n(e[i][r],t[i][r]))return!1;return!0}function Xe(e,t,i,r,o,s){let a;for(a in t=t||{},e=e||{})e.hasOwnProperty(a)&&(n(e[a],t[a])||i.push({command:s,args:[r,a,t[a],o]}));for(a in t)t.hasOwnProperty(a)&&!e.hasOwnProperty(a)&&(n(e[a],t[a])||i.push({command:s,args:[r,a,t[a],o]}))}function We(e){return e.id}function He(e,t){return e[t.id]=t,e}class Ye{constructor(e,t){this.reset(e,t)}reset(e,t){this.points=e||[],this._distances=[0];for(let e=1;e<this.points.length;e++)this._distances[e]=this._distances[e-1]+this.points[e].dist(this.points[e-1]);this.length=this._distances[this._distances.length-1],this.padding=Math.min(t||0,.5*this.length),this.paddedLength=this.length-2*this.padding}lerp(t){if(1===this.points.length)return this.points[0];t=e.clamp(t,0,1);let i=1,r=this._distances[i];const n=t*this.paddedLength+this.padding;for(;r<n&&i<this._distances.length;)r=this._distances[++i];const o=i-1,s=this._distances[o],a=r-s,l=a>0?(n-s)/a:0;return this.points[o].mult(1-l).add(this.points[i].mult(l))}}class Ke{constructor(e,t,i){const r=this.boxCells=[],n=this.circleCells=[];this.xCellCount=Math.ceil(e/i),this.yCellCount=Math.ceil(t/i);for(let e=0;e<this.xCellCount*this.yCellCount;e++)r.push([]),n.push([]);this.circleKeys=[],this.boxKeys=[],this.bboxes=[],this.circles=[],this.width=e,this.height=t,this.xScale=this.xCellCount/e,this.yScale=this.yCellCount/t,this.boxUid=0,this.circleUid=0}keysLength(){return this.boxKeys.length+this.circleKeys.length}insert(e,t,i,r,n){this._forEachCell(t,i,r,n,this._insertBoxCell,this.boxUid++),this.boxKeys.push(e),this.bboxes.push(t),this.bboxes.push(i),this.bboxes.push(r),this.bboxes.push(n)}insertCircle(e,t,i,r){this._forEachCell(t-r,i-r,t+r,i+r,this._insertCircleCell,this.circleUid++),this.circleKeys.push(e),this.circles.push(t),this.circles.push(i),this.circles.push(r)}_insertBoxCell(e,t,i,r,n,o){this.boxCells[n].push(o)}_insertCircleCell(e,t,i,r,n,o){this.circleCells[n].push(o)}_query(e,t,i,r,n,o){if(i<0||e>this.width||r<0||t>this.height)return!n&&[];const s=[];if(e<=0&&t<=0&&this.width<=i&&this.height<=r){if(n)return!0;for(let e=0;e<this.boxKeys.length;e++)s.push({key:this.boxKeys[e],x1:this.bboxes[4*e],y1:this.bboxes[4*e+1],x2:this.bboxes[4*e+2],y2:this.bboxes[4*e+3]});for(let e=0;e<this.circleKeys.length;e++){const t=this.circles[3*e],i=this.circles[3*e+1],r=this.circles[3*e+2];s.push({key:this.circleKeys[e],x1:t-r,y1:i-r,x2:t+r,y2:i+r})}return o?s.filter(o):s}return this._forEachCell(e,t,i,r,this._queryCell,s,{hitTest:n,seenUids:{box:{},circle:{}}},o),n?s.length>0:s}_queryCircle(e,t,i,r,n){const o=e-i,s=e+i,a=t-i,l=t+i;if(s<0||o>this.width||l<0||a>this.height)return!r&&[];const c=[];return this._forEachCell(o,a,s,l,this._queryCellCircle,c,{hitTest:r,circle:{x:e,y:t,radius:i},seenUids:{box:{},circle:{}}},n),r?c.length>0:c}query(e,t,i,r,n){return this._query(e,t,i,r,!1,n)}hitTest(e,t,i,r,n){return this._query(e,t,i,r,!0,n)}hitTestCircle(e,t,i,r){return this._queryCircle(e,t,i,!0,r)}_queryCell(e,t,i,r,n,o,s,a){const l=s.seenUids,c=this.boxCells[n];if(null!==c){const n=this.bboxes;for(const h of c)if(!l.box[h]){l.box[h]=!0;const c=4*h;if(e<=n[c+2]&&t<=n[c+3]&&i>=n[c+0]&&r>=n[c+1]&&(!a||a(this.boxKeys[h]))){if(s.hitTest)return o.push(!0),!0;o.push({key:this.boxKeys[h],x1:n[c],y1:n[c+1],x2:n[c+2],y2:n[c+3]})}}}const h=this.circleCells[n];if(null!==h){const n=this.circles;for(const c of h)if(!l.circle[c]){l.circle[c]=!0;const h=3*c;if(this._circleAndRectCollide(n[h],n[h+1],n[h+2],e,t,i,r)&&(!a||a(this.circleKeys[c]))){if(s.hitTest)return o.push(!0),!0;{const e=n[h],t=n[h+1],i=n[h+2];o.push({key:this.circleKeys[c],x1:e-i,y1:t-i,x2:e+i,y2:t+i})}}}}}_queryCellCircle(e,t,i,r,n,o,s,a){const l=s.circle,c=s.seenUids,h=this.boxCells[n];if(null!==h){const e=this.bboxes;for(const t of h)if(!c.box[t]){c.box[t]=!0;const i=4*t;if(this._circleAndRectCollide(l.x,l.y,l.radius,e[i+0],e[i+1],e[i+2],e[i+3])&&(!a||a(this.boxKeys[t])))return o.push(!0),!0}}const u=this.circleCells[n];if(null!==u){const e=this.circles;for(const t of u)if(!c.circle[t]){c.circle[t]=!0;const i=3*t;if(this._circlesCollide(e[i],e[i+1],e[i+2],l.x,l.y,l.radius)&&(!a||a(this.circleKeys[t])))return o.push(!0),!0}}}_forEachCell(e,t,i,r,n,o,s,a){const l=this._convertToXCellCoord(e),c=this._convertToYCellCoord(t),h=this._convertToXCellCoord(i),u=this._convertToYCellCoord(r);for(let d=l;d<=h;d++)for(let l=c;l<=u;l++)if(n.call(this,e,t,i,r,this.xCellCount*l+d,o,s,a))return}_convertToXCellCoord(e){return Math.max(0,Math.min(this.xCellCount-1,Math.floor(e*this.xScale)))}_convertToYCellCoord(e){return Math.max(0,Math.min(this.yCellCount-1,Math.floor(e*this.yScale)))}_circlesCollide(e,t,i,r,n,o){const s=r-e,a=n-t,l=i+o;return l*l>s*s+a*a}_circleAndRectCollide(e,t,i,r,n,o,s){const a=(o-r)/2,l=Math.abs(e-(r+a));if(l>a+i)return!1;const c=(s-n)/2,h=Math.abs(t-(n+c));if(h>c+i)return!1;if(l<=a||h<=c)return!0;const u=l-a,d=h-c;return u*u+d*d<=i*i}}const Je=Math.tan(85*Math.PI/180);function Qe(t,i,r,n,o,s){const a=e.create();if(r){if("globe"===o.projection.name)e.multiply$1(a,a,e.calculateGlobeLabelMatrix(o,i));else{const e=y([],s);a[0]=e[0],a[1]=e[1],a[4]=e[2],a[5]=e[3]}n||e.rotateZ(a,a,o.angle)}else e.multiply$1(a,o.labelPlaneMatrix,t);return a}function et(t,i,r,n,o,s){if(r){if("globe"===o.projection.name){const a=Qe(t,i,r,n,o,s);return e.invert(a,a),e.multiply$1(a,t,a),a}{const i=e.clone(t),r=e.identity([]);return r[0]=s[0],r[1]=s[1],r[4]=s[2],r[5]=s[3],e.multiply$1(i,i,r),n||e.rotateZ(i,i,-o.angle),i}}return o.glCoordMatrix}function tt(t,i,r=0){const n=[t.x,t.y,r,1];r?e.transformMat4$1(n,n,i):ft(n,n,i);const o=n[3];return{point:new e.pointGeometry(n[0]/o,n[1]/o),signedDistanceFromCamera:o}}function it(t,i){const r=[t[0],t[1],t[2],1];e.transformMat4$1(r,r,i);const n=r[3];return{point:new e.pointGeometry(r[0]/n,r[1]/n),signedDistanceFromCamera:n}}function rt(e,t){return Math.min(.5+e/t*.5,1.5)}function nt(e,t){const i=e[0]/e[3],r=e[1]/e[3];return i>=-t[0]&&i<=t[0]&&r>=-t[1]&&r<=t[1]}function ot(t,i,r,n,o,s,a,l,c,h){const u=r.transform,d=n?t.textSizeData:t.iconSizeData,p=e.evaluateSizeForZoom(d,r.transform.zoom),f=[256/r.width*2+1,256/r.height*2+1],m=n?t.text.dynamicLayoutVertexArray:t.icon.dynamicLayoutVertexArray;m.clear();const _=t.lineVertexArray,g=n?t.text.placedSymbolArray:t.icon.placedSymbolArray,y=r.transform.width/r.transform.height;let x=!1;for(let n=0;n<g.length;n++){const v=g.get(n);if(v.writingMode!==e.WritingMode.vertical||x||0!==n&&g.get(n-1).writingMode===e.WritingMode.horizontal||(x=!0),(v.hidden||v.writingMode===e.WritingMode.vertical)&&!x){pt(v.numGlyphs,m);continue}x=!1;const b=new e.pointGeometry(v.tileAnchorX,v.tileAnchorY),w=c?c(b):[0,0,0],T=u.projection.projectTilePoint(b.x,b.y,h.canonical),E=[T.x+w[0],T.y+w[1],T.z+w[2]],S=[...E,1];if(e.transformMat4$1(S,S,i),!nt(S,f)){pt(v.numGlyphs,m);continue}const I=rt(r.transform.cameraToCenterDistance,S[3]),M=e.evaluateSizeForFeature(d,p,v),A=a?M/I:M*I,C=tt(new e.pointGeometry(E[0],E[1]),o,E[2]);if(C.signedDistanceFromCamera<=0){pt(v.numGlyphs,m);continue}let z={};const k=a?null:c,D=lt(v,A,!1,l,i,o,s,t.glyphOffsetArray,_,m,C.point,b,z,y,k,u.projection,h);x=D.useVertical,k&&D.needsFlipping&&(z={}),(D.notEnoughRoom||x||D.needsFlipping&&lt(v,A,!0,l,i,o,s,t.glyphOffsetArray,_,m,C.point,b,z,y,k,u.projection,h).notEnoughRoom)&&pt(v.numGlyphs,m)}n?t.text.dynamicLayoutVertexBuffer.updateData(m):t.icon.dynamicLayoutVertexBuffer.updateData(m)}function st(e,t,i,r,n,o,s,a,l,c,h,u,d,p,f){const m=a.glyphStartIndex+a.numGlyphs,_=a.lineStartIndex,g=a.lineStartIndex+a.lineLength,y=t.getoffsetX(a.glyphStartIndex),x=t.getoffsetX(m-1),v=ut(e*y,i,r,n,o,s,a.segment,_,g,l,c,h,u,d,!0,p,f);if(!v)return null;const b=ut(e*x,i,r,n,o,s,a.segment,_,g,l,c,h,u,d,!0,p,f);return b?{first:v,last:b}:null}function at(t,i,r,n){return t.writingMode===e.WritingMode.horizontal&&Math.abs(r.y-i.y)>Math.abs(r.x-i.x)*n?{useVertical:!0}:t.writingMode===e.WritingMode.vertical?i.y<r.y?{needsFlipping:!0}:null:0!==t.flipState&&function(e,t,i){const r=(t.x-e.x)*i;return 0===r||Math.abs((t.y-e.y)/r)>Je}(i,r,n)?1===t.flipState?{needsFlipping:!0}:null:i.x>r.x?{needsFlipping:!0}:null}function lt(t,i,r,n,o,s,a,l,c,h,u,d,p,f,m,_,g){const y=i/24,x=t.lineOffsetX*y,v=t.lineOffsetY*y;let b;if(t.numGlyphs>1){const e=t.glyphStartIndex+t.numGlyphs,i=t.lineStartIndex,o=t.lineStartIndex+t.lineLength,h=st(y,l,x,v,r,u,d,t,c,s,p,m,!1,_,g);if(!h)return{notEnoughRoom:!0};const w=tt(h.first.point,a).point,T=tt(h.last.point,a).point;if(n&&!r){const e=at(t,w,T,f);if(t.flipState=e&&e.needsFlipping?1:2,e)return e}b=[h.first];for(let n=t.glyphStartIndex+1;n<e-1;n++)b.push(ut(y*l.getoffsetX(n),x,v,r,u,d,t.segment,i,o,c,s,p,m,!1,!1,_,g));b.push(h.last)}else{if(n&&!r){const i=tt(d,o).point,r=t.lineStartIndex+t.segment+1,n=new e.pointGeometry(c.getx(r),c.gety(r)),s=tt(n,o),a=at(t,i,s.signedDistanceFromCamera>0?s.point:ht(d,n,i,1,o,void 0,_,g.canonical),f);if(t.flipState=a&&a.needsFlipping?1:2,a)return a}const i=ut(y*l.getoffsetX(t.glyphStartIndex),x,v,r,u,d,t.segment,t.lineStartIndex,t.lineStartIndex+t.lineLength,c,s,p,m,!1,!1,_,g);if(!i)return{notEnoughRoom:!0};b=[i]}for(const t of b)e.addDynamicAttributes(h,t.point,t.angle);return{}}function ct(t,i,r,n,o){const s=n.projectTilePoint(t.x,t.y,i);if(!o)return tt(s,r,s.z);const a=o(t);return tt(new e.pointGeometry(s.x+a[0],s.y+a[1]),r,s.z+a[2])}function ht(e,t,i,r,n,o,s,a){const l=ct(e.add(e.sub(t)._unit()),a,n,s,o).point,c=i.sub(l);return i.add(c._mult(r/c.mag()))}function ut(t,i,r,n,o,s,a,l,c,h,u,d,p,f,m,_,g){const y=n?t-i:t+i;let x=y>0?1:-1,v=0;n&&(x*=-1,v=Math.PI),x<0&&(v+=Math.PI);let b=x>0?l+a:l+a+1,w=o,T=o,E=0,S=0;const I=Math.abs(y),M=[],A=[];let C=s;const z=()=>{const t=b-x;return 0===E?s:new e.pointGeometry(h.getx(t),h.gety(t))},k=()=>ht(z(),C,T,I-E+1,u,p,_,g.canonical);for(;E+S<=I;){if(b+=x,b<l||b>=c)return null;if(T=w,M.push(w),f&&A.push(C||z()),w=d[b],void 0===w){C=new e.pointGeometry(h.getx(b),h.gety(b));const t=ct(C,g.canonical,u,_,p);w=t.signedDistanceFromCamera>0?d[b]=t.point:k()}else C=null;E+=S,S=T.dist(w)}m&&p&&(C=C||new e.pointGeometry(h.getx(b),h.gety(b)),d[b]=w=void 0===d[b]?w:k(),S=T.dist(w));const D=(I-E)/S,P=w.sub(T),L=P.mult(D)._add(T);r&&L._add(P._unit()._perp()._mult(r*x));const B=v+Math.atan2(w.y-T.y,w.x-T.x);return M.push(L),f&&(C=C||new e.pointGeometry(h.getx(b),h.gety(b)),A.push(function(t,i,r){const n=1-r;return new e.pointGeometry(t.x*n+i.x*r,t.y*n+i.y*r)}(A.length>0?A[A.length-1]:C,C,D))),{point:L,angle:B,path:M,tilePath:A}}const dt=new Float32Array([-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0]);function pt(e,t){for(let i=0;i<e;i++){const e=t.length;t.resize(e+4),t.float32.set(dt,3*e)}}function ft(e,t,i){const r=t[0],n=t[1];return e[0]=i[0]*r+i[4]*n+i[12],e[1]=i[1]*r+i[5]*n+i[13],e[3]=i[3]*r+i[7]*n+i[15],e}const mt=100;class _t{constructor(e,t,i=new Ke(e.width+200,e.height+200,25),r=new Ke(e.width+200,e.height+200,25)){this.transform=e,this.grid=i,this.ignoredGrid=r,this.pitchfactor=Math.cos(e._pitch)*e.cameraToCenterDistance,this.screenRightBoundary=e.width+mt,this.screenBottomBoundary=e.height+mt,this.gridRightBoundary=e.width+200,this.gridBottomBoundary=e.height+200,this.fogState=t}placeCollisionBox(e,t,i,r,n,o,s){let a=t.projectedAnchorX,l=t.projectedAnchorY,c=t.projectedAnchorZ;const h=t.elevation,u=t.tileID;if(h&&u){const e=this.transform.projection.upVector(u.canonical,t.tileAnchorX,t.tileAnchorY),i=this.transform.projection.upVectorScale(u.canonical,this.transform.center.lat,this.transform.worldSize).metersToTile;a+=e[0]*h*i,l+=e[1]*h*i,c+=e[2]*h*i}const d=this.projectAndGetPerspectiveRatio(o,[a,l,c],t.tileID,"globe"===this.transform.projection.name||!!h||this.transform.pitch>0),p=n*d.perspectiveRatio,f=(t.x1*e+i.x-t.padding)*p+d.point.x,m=(t.y1*e+i.y-t.padding)*p+d.point.y,_=(t.x2*e+i.x+t.padding)*p+d.point.x,g=(t.y2*e+i.y+t.padding)*p+d.point.y,y=d.perspectiveRatio<=.55||d.occluded;return!this.isInsideGrid(f,m,_,g)||!r&&this.grid.hitTest(f,m,_,g,s)||y?{box:[],offscreen:!1,occluded:d.occluded}:{box:[f,m,_,g],offscreen:this.isOffscreen(f,m,_,g),occluded:!1}}placeCollisionCircles(t,i,r,n,o,s,a,l,c,h,u,d,p,f){const m=[],_=this.transform.elevation,g=_?_.getAtTileOffsetFunc(f,this.transform.center.lat,this.transform.worldSize,this.transform.projection):e=>[0,0,0],y=new e.pointGeometry(i.tileAnchorX,i.tileAnchorY),x=this.transform.projection.projectTilePoint(i.tileAnchorX,i.tileAnchorY,f.canonical),v=g(y),b=[x.x+v[0],x.y+v[1],x.z+v[2]],w=this.projectAndGetPerspectiveRatio(s,[b[0],b[1],b[2]],f,"globe"===this.transform.projection.name||!!_||this.transform.pitch>0),{perspectiveRatio:T}=w,E=(h?o/T:o*T)/e.ONE_EM,S=tt(new e.pointGeometry(b[0],b[1]),a,b[2]).point,I=w.signedDistanceFromCamera>0?st(E,n,i.lineOffsetX*E,i.lineOffsetY*E,!1,S,y,i,r,a,{},_&&!h?g:null,h&&!!_,this.transform.projection,f):null;let M=!1,A=!1,C=!0;if(I&&!w.occluded){const i=.5*d*T+p,r=new e.pointGeometry(-100,-100),n=new e.pointGeometry(this.screenRightBoundary,this.screenBottomBoundary),o=new Ye,s=I.first,a=I.last;let h=[];for(let e=s.path.length-1;e>=1;e--)h.push(s.path[e]);for(let e=1;e<a.path.length;e++)h.push(a.path[e]);const f=2.5*i;if(l){const e=h.map(_?(e,t)=>{const i=g(t<s.path.length-1?s.tilePath[s.path.length-1-t]:a.tilePath[t-s.path.length+2]);return tt(e,l,i[2])}:e=>tt(e,l));h=e.some((e=>e.signedDistanceFromCamera<=0))?[]:e.map((e=>e.point))}let y=[];if(h.length>0){const t=h[0].clone(),i=h[0].clone();for(let e=1;e<h.length;e++)t.x=Math.min(t.x,h[e].x),t.y=Math.min(t.y,h[e].y),i.x=Math.max(i.x,h[e].x),i.y=Math.max(i.y,h[e].y);y=t.x>=r.x&&i.x<=n.x&&t.y>=r.y&&i.y<=n.y?[h]:i.x<r.x||t.x>n.x||i.y<r.y||t.y>n.y?[]:e.clipLine([h],r.x,r.y,n.x,n.y)}for(const e of y){o.reset(e,.25*i);let r=0;r=o.length<=.5*i?1:Math.ceil(o.paddedLength/f)+1;for(let e=0;e<r;e++){const n=e/Math.max(r-1,1),s=o.lerp(n),a=s.x+mt,l=s.y+mt;m.push(a,l,i,0);const h=a-i,d=l-i,p=a+i,f=l+i;if(C=C&&this.isOffscreen(h,d,p,f),A=A||this.isInsideGrid(h,d,p,f),!t&&this.grid.hitTestCircle(a,l,i,u)&&(M=!0,!c))return{circles:[],offscreen:!1,collisionDetected:M,occluded:!1}}}}return{circles:!c&&M||!A?[]:m,offscreen:C,collisionDetected:M,occluded:w.occluded}}queryRenderedSymbols(t){if(0===t.length||0===this.grid.keysLength()&&0===this.ignoredGrid.keysLength())return{};const i=[];let r=1/0,n=1/0,o=-1/0,s=-1/0;for(const a of t){const t=new e.pointGeometry(a.x+mt,a.y+mt);r=Math.min(r,t.x),n=Math.min(n,t.y),o=Math.max(o,t.x),s=Math.max(s,t.y),i.push(t)}const a=this.grid.query(r,n,o,s).concat(this.ignoredGrid.query(r,n,o,s)),l={},c={};for(const t of a){const r=t.key;if(void 0===l[r.bucketInstanceId]&&(l[r.bucketInstanceId]={}),l[r.bucketInstanceId][r.featureIndex])continue;const n=[new e.pointGeometry(t.x1,t.y1),new e.pointGeometry(t.x2,t.y1),new e.pointGeometry(t.x2,t.y2),new e.pointGeometry(t.x1,t.y2)];e.polygonIntersectsPolygon(i,n)&&(l[r.bucketInstanceId][r.featureIndex]=!0,void 0===c[r.bucketInstanceId]&&(c[r.bucketInstanceId]=[]),c[r.bucketInstanceId].push(r.featureIndex))}return c}insertCollisionBox(e,t,i,r,n){(t?this.ignoredGrid:this.grid).insert({bucketInstanceId:i,featureIndex:r,collisionGroupID:n},e[0],e[1],e[2],e[3])}insertCollisionCircles(e,t,i,r,n){const o=t?this.ignoredGrid:this.grid,s={bucketInstanceId:i,featureIndex:r,collisionGroupID:n};for(let t=0;t<e.length;t+=4)o.insertCircle(s,e[t],e[t+1],e[t+2])}projectAndGetPerspectiveRatio(t,i,r,n){const o=[i[0],i[1],i[2],1];let s=!1;return i[2]||this.transform.pitch>0?(e.transformMat4$1(o,o,t),this.fogState&&r&&(s=function(t,i,r,n,o,s){const a=s.calculateFogTileMatrix(o),l=[i,r,n];return e.transformMat4(l,l,a),M(t,l,s.pitch,s._fov)}(this.fogState,i[0],i[1],i[2],r.toUnwrapped(),this.transform)>.9)):ft(o,o,t),{point:new e.pointGeometry((o[0]/o[3]+1)/2*this.transform.width+mt,(-o[1]/o[3]+1)/2*this.transform.height+mt),perspectiveRatio:Math.min(.5+this.transform.cameraToCenterDistance/o[3]*.5,1.5),signedDistanceFromCamera:o[3],occluded:n&&o[2]>o[3]||s}}isOffscreen(e,t,i,r){return i<mt||e>=this.screenRightBoundary||r<mt||t>this.screenBottomBoundary}isInsideGrid(e,t,i,r){return i>=0&&e<this.gridRightBoundary&&r>=0&&t<this.gridBottomBoundary}getViewportMatrix(){const t=e.identity([]);return e.translate(t,t,[-100,-100,0]),t}}class gt{constructor(e,t,i,r){this.opacity=e?Math.max(0,Math.min(1,e.opacity+(e.placed?t:-t))):r&&i?1:0,this.placed=i}isHidden(){return 0===this.opacity&&!this.placed}}class yt{constructor(e,t,i,r,n,o=!1){this.text=new gt(e?e.text:null,t,i,n),this.icon=new gt(e?e.icon:null,t,r,n),this.clipped=o}isHidden(){return this.text.isHidden()&&this.icon.isHidden()}}class xt{constructor(e,t,i,r=!1){this.text=e,this.icon=t,this.skipFade=i,this.clipped=r}}class vt{constructor(){this.invProjMatrix=e.create(),this.viewportMatrix=e.create(),this.circles=[]}}class bt{constructor(e,t,i,r,n){this.bucketInstanceId=e,this.featureIndex=t,this.sourceLayerIndex=i,this.bucketIndex=r,this.tileID=n}}class wt{constructor(e){this.crossSourceCollisions=e,this.maxGroupID=0,this.collisionGroups={}}get(e){if(this.crossSourceCollisions)return{ID:0,predicate:null};if(!this.collisionGroups[e]){const t=++this.maxGroupID;this.collisionGroups[e]={ID:t,predicate:e=>e.collisionGroupID===t}}return this.collisionGroups[e]}}function Tt(t,i,r,n,o){const{horizontalAlign:s,verticalAlign:a}=e.getAnchorAlignment(t),l=-(s-.5)*i,c=-(a-.5)*r,h=e.evaluateVariableOffset(t,n);return new e.pointGeometry(l+h[0]*o,c+h[1]*o)}function Et(t,i,r,n,o){const s=new e.pointGeometry(t,i);return r&&s._rotate(n?o:-o),s}class St{constructor(e,t,i,r,n){this.transform=e.clone(),this.collisionIndex=new _t(this.transform,n),this.placements={},this.opacities={},this.variableOffsets={},this.stale=!1,this.commitTime=0,this.fadeDuration=t,this.retainedQueryData={},this.collisionGroups=new wt(i),this.collisionCircleArrays={},this.prevPlacement=r,r&&(r.prevPlacement=void 0),this.placedOrientations={}}getBucketParts(t,i,r,n){const o=r.getBucket(i),s=r.latestFeatureIndex;if(!o||!s||i.id!==o.layerIds[0])return;const a=o.layers[0].layout,l=r.collisionBoxArray,c=Math.pow(2,this.transform.zoom-r.tileID.overscaledZ),h=r.tileSize/e.EXTENT,u=r.tileID.toUnwrapped(),d=this.transform.calculateProjMatrix(u),p="map"===a.get("text-pitch-alignment"),f="map"===a.get("text-rotation-alignment");i.compileFilter();const m=i.dynamicFilter(),_=i.dynamicFilterNeedsFeature(),g=this.transform.calculatePixelsToTileUnitsMatrix(r),y=Qe(d,r.tileID.canonical,p,f,this.transform,g);let x=null;if(p){const t=et(d,r.tileID.canonical,p,f,this.transform,g);x=e.multiply$1([],this.transform.labelPlaneMatrix,t)}let v=null;m&&r.latestFeatureIndex&&(v={unwrappedTileID:u,dynamicFilter:m,dynamicFilterNeedsFeature:_,featureIndex:r.latestFeatureIndex}),this.retainedQueryData[o.bucketInstanceId]=new bt(o.bucketInstanceId,s,o.sourceLayerIndex,o.index,r.tileID);const b={bucket:o,layout:a,posMatrix:d,textLabelPlaneMatrix:y,labelToScreenMatrix:x,clippingData:v,scale:c,textPixelRatio:h,holdingForFade:r.holdingForFade(),collisionBoxArray:l,partiallyEvaluatedTextSize:e.evaluateSizeForZoom(o.textSizeData,this.transform.zoom),partiallyEvaluatedIconSize:e.evaluateSizeForZoom(o.iconSizeData,this.transform.zoom),collisionGroup:this.collisionGroups.get(o.sourceID)};if(n)for(const e of o.sortKeyRanges){const{sortKey:i,symbolInstanceStart:r,symbolInstanceEnd:n}=e;t.push({sortKey:i,symbolInstanceStart:r,symbolInstanceEnd:n,parameters:b})}else t.push({symbolInstanceStart:0,symbolInstanceEnd:o.symbolInstances.length,parameters:b})}attemptAnchorPlacement(e,t,i,r,n,o,s,a,l,c,h,u,d,p,f,m,_,g){const y=[u.textOffset0,u.textOffset1],x=Tt(e,i,r,y,n),v=this.collisionIndex.placeCollisionBox(n,t,Et(x.x,x.y,o,s,this.transform.angle),h,a,l,c.predicate);if((!m||0!==this.collisionIndex.placeCollisionBox(p.getSymbolInstanceIconSize(g,this.transform.zoom,d),m,Et(x.x,x.y,o,s,this.transform.angle),h,a,l,c.predicate).box.length)&&v.box.length>0){let t;return this.prevPlacement&&this.prevPlacement.variableOffsets[u.crossTileID]&&this.prevPlacement.placements[u.crossTileID]&&this.prevPlacement.placements[u.crossTileID].text&&(t=this.prevPlacement.variableOffsets[u.crossTileID].anchor),this.variableOffsets[u.crossTileID]={textOffset:y,width:i,height:r,anchor:e,textScale:n,prevAnchor:t},this.markUsedJustification(p,e,u,f),p.allowVerticalPlacement&&(this.markUsedOrientation(p,f,u),this.placedOrientations[u.crossTileID]=f),{shift:x,placedGlyphBoxes:v}}}placeLayerBucketPart(t,i,r,n){const{bucket:o,layout:s,posMatrix:a,textLabelPlaneMatrix:l,labelToScreenMatrix:c,clippingData:h,textPixelRatio:u,holdingForFade:d,collisionBoxArray:p,partiallyEvaluatedTextSize:f,partiallyEvaluatedIconSize:m,collisionGroup:_}=t.parameters,g=s.get("text-optional"),y=s.get("icon-optional"),x=s.get("text-allow-overlap"),v=s.get("icon-allow-overlap"),b="map"===s.get("text-rotation-alignment"),w="map"===s.get("text-pitch-alignment"),T="none"!==s.get("icon-text-fit"),E="viewport-y"===s.get("symbol-z-order");let S=x&&(v||!o.hasIconData()||y),I=v&&(x||!o.hasTextData()||g);!o.collisionArrays&&p&&o.deserializeCollisionBoxes(p),r&&n&&o.updateCollisionDebugBuffers(this.transform.zoom,p);const M=(t,n,p)=>{if(h){const r={zoom:this.transform.zoom,pitch:this.transform.pitch};let n=null;if(h.dynamicFilterNeedsFeature){const e=this.retainedQueryData[o.bucketInstanceId];n=h.featureIndex.loadFeature({featureIndex:t.featureIndex,bucketIndex:e.bucketIndex,sourceLayerIndex:e.sourceLayerIndex,layoutVertexArrayOffset:0})}if(!(0,h.dynamicFilter)(r,n,this.retainedQueryData[o.bucketInstanceId].tileID.canonical,new e.pointGeometry(t.tileAnchorX,t.tileAnchorY),this.transform.calculateDistanceTileData(h.unwrappedTileID)))return this.placements[t.crossTileID]=new xt(!1,!1,!1,!0),void(i[t.crossTileID]=!0)}if(i[t.crossTileID])return;if(d)return void(this.placements[t.crossTileID]=new xt(!1,!1,!1));let E=!1,M=!1,A=!0,C=!1,z=!1,k=null,D={box:null,offscreen:null,occluded:null},P={box:null,offscreen:null,occluded:null},L=null,B=null,R=null,F=0,O=0,U=0;p.textFeatureIndex?F=p.textFeatureIndex:t.useRuntimeCollisionCircles&&(F=t.featureIndex),p.verticalTextFeatureIndex&&(O=p.verticalTextFeatureIndex);const V=e=>{e.tileID=this.retainedQueryData[o.bucketInstanceId].tileID,(this.transform.elevation||e.elevation)&&(e.elevation=this.transform.elevation?this.transform.elevation.getAtTileOffset(this.retainedQueryData[o.bucketInstanceId].tileID,e.tileAnchorX,e.tileAnchorY):0)},j=p.textBox;if(j){V(j);const i=i=>{let r=e.WritingMode.horizontal;if(o.allowVerticalPlacement&&!i&&this.prevPlacement){const e=this.prevPlacement.placedOrientations[t.crossTileID];e&&(this.placedOrientations[t.crossTileID]=e,r=e,this.markUsedOrientation(o,r,t))}return r},r=(i,r)=>{if(o.allowVerticalPlacement&&t.numVerticalGlyphVertices>0&&p.verticalTextBox){for(const t of o.writingModes)if(t===e.WritingMode.vertical?(D=r(),P=D):D=i(),D&&D.box&&D.box.length)break}else D=i()};if(s.get("text-variable-anchor")){let l=s.get("text-variable-anchor");if(this.prevPlacement&&this.prevPlacement.variableOffsets[t.crossTileID]){const e=this.prevPlacement.variableOffsets[t.crossTileID];l.indexOf(e.anchor)>0&&(l=l.filter((t=>t!==e.anchor)),l.unshift(e.anchor))}const c=(e,i,r)=>{const s=o.getSymbolInstanceTextSize(f,t,this.transform.zoom,n),c=(e.x2-e.x1)*s+2*e.padding,h=(e.y2-e.y1)*s+2*e.padding,d=T&&!v?i:null;d&&V(d);let p={box:[],offscreen:!1,occluded:!1};const g=x?2*l.length:l.length;for(let i=0;i<g;++i){const g=this.attemptAnchorPlacement(l[i%l.length],e,c,h,s,b,w,u,a,_,i>=l.length,t,n,o,r,d,f,m);if(g&&(p=g.placedGlyphBoxes,p&&p.box&&p.box.length)){E=!0,k=g.shift;break}}return p};r((()=>c(j,p.iconBox,e.WritingMode.horizontal)),(()=>{const i=p.verticalTextBox;return i&&V(i),o.allowVerticalPlacement&&!(D&&D.box&&D.box.length)&&t.numVerticalGlyphVertices>0&&i?c(i,p.verticalIconBox,e.WritingMode.vertical):{box:null,offscreen:null,occluded:null}})),D&&(E=D.box,A=D.offscreen,C=D.occluded);const h=i(D&&D.box);if(!E&&this.prevPlacement){const e=this.prevPlacement.variableOffsets[t.crossTileID];e&&(this.variableOffsets[t.crossTileID]=e,this.markUsedJustification(o,e.anchor,t,h))}}else{const s=(i,r)=>{const s=o.getSymbolInstanceTextSize(f,t,this.transform.zoom,n),l=this.collisionIndex.placeCollisionBox(s,i,new e.pointGeometry(0,0),x,u,a,_.predicate);return l&&l.box&&l.box.length&&(this.markUsedOrientation(o,r,t),this.placedOrientations[t.crossTileID]=r),l};r((()=>s(j,e.WritingMode.horizontal)),(()=>{const i=p.verticalTextBox;return o.allowVerticalPlacement&&t.numVerticalGlyphVertices>0&&i?(V(i),s(i,e.WritingMode.vertical)):{box:null,offscreen:null,occluded:null}})),i(D&&D.box&&D.box.length)}}if(L=D,E=L&&L.box&&L.box.length>0,A=L&&L.offscreen,C=L&&L.occluded,t.useRuntimeCollisionCircles){const i=o.text.placedSymbolArray.get(t.centerJustifiedTextSymbolIndex>=0?t.centerJustifiedTextSymbolIndex:t.verticalPlacedTextSymbolIndex),n=e.evaluateSizeForFeature(o.textSizeData,f,i),h=s.get("text-padding");B=this.collisionIndex.placeCollisionCircles(x,i,o.lineVertexArray,o.glyphOffsetArray,n,a,l,c,r,w,_.predicate,t.collisionCircleDiameter*n/e.ONE_EM,h,this.retainedQueryData[o.bucketInstanceId].tileID),E=x||B.circles.length>0&&!B.collisionDetected,A=A&&B.offscreen,C=B.occluded}if(p.iconFeatureIndex&&(U=p.iconFeatureIndex),p.iconBox){const t=t=>{V(t);const i=T&&k?Et(k.x,k.y,b,w,this.transform.angle):new e.pointGeometry(0,0),r=o.getSymbolInstanceIconSize(m,this.transform.zoom,n);return this.collisionIndex.placeCollisionBox(r,t,i,v,u,a,_.predicate)};P&&P.box&&P.box.length&&p.verticalIconBox?(R=t(p.verticalIconBox),M=R.box.length>0):(R=t(p.iconBox),M=R.box.length>0),A=A&&R.offscreen,z=R.occluded}const N=g||0===t.numHorizontalGlyphVertices&&0===t.numVerticalGlyphVertices,G=y||0===t.numIconVertices;if(N||G?G?N||(M=M&&E):E=M&&E:M=E=M&&E,E&&L&&L.box&&this.collisionIndex.insertCollisionBox(L.box,s.get("text-ignore-placement"),o.bucketInstanceId,P&&P.box&&O?O:F,_.ID),M&&R&&this.collisionIndex.insertCollisionBox(R.box,s.get("icon-ignore-placement"),o.bucketInstanceId,U,_.ID),B&&(E&&this.collisionIndex.insertCollisionCircles(B.circles,s.get("text-ignore-placement"),o.bucketInstanceId,F,_.ID),r)){const e=o.bucketInstanceId;let t=this.collisionCircleArrays[e];void 0===t&&(t=this.collisionCircleArrays[e]=new vt);for(let e=0;e<B.circles.length;e+=4)t.circles.push(B.circles[e+0]),t.circles.push(B.circles[e+1]),t.circles.push(B.circles[e+2]),t.circles.push(B.collisionDetected?1:0)}const Z="globe"!==this.transform.projection.name;S=S&&(Z||!C),I=I&&(Z||!z),this.placements[t.crossTileID]=new xt(E||S,M||I,A||o.justReloaded),i[t.crossTileID]=!0};if(E){const e=o.getSortedSymbolIndexes(this.transform.angle);for(let t=e.length-1;t>=0;--t){const i=e[t];M(o.symbolInstances.get(i),i,o.collisionArrays[i])}}else for(let e=t.symbolInstanceStart;e<t.symbolInstanceEnd;e++)M(o.symbolInstances.get(e),e,o.collisionArrays[e]);if(r&&o.bucketInstanceId in this.collisionCircleArrays){const t=this.collisionCircleArrays[o.bucketInstanceId];e.invert(t.invProjMatrix,a),t.viewportMatrix=this.collisionIndex.getViewportMatrix()}o.justReloaded=!1}markUsedJustification(t,i,r,n){let o;o=n===e.WritingMode.vertical?r.verticalPlacedTextSymbolIndex:{left:r.leftJustifiedTextSymbolIndex,center:r.centerJustifiedTextSymbolIndex,right:r.rightJustifiedTextSymbolIndex}[e.getAnchorJustification(i)];const s=[r.leftJustifiedTextSymbolIndex,r.centerJustifiedTextSymbolIndex,r.rightJustifiedTextSymbolIndex,r.verticalPlacedTextSymbolIndex];for(const e of s)e>=0&&(t.text.placedSymbolArray.get(e).crossTileID=o>=0&&e!==o?0:r.crossTileID)}markUsedOrientation(t,i,r){const n=i===e.WritingMode.horizontal||i===e.WritingMode.horizontalOnly?i:0,o=i===e.WritingMode.vertical?i:0,s=[r.leftJustifiedTextSymbolIndex,r.centerJustifiedTextSymbolIndex,r.rightJustifiedTextSymbolIndex];for(const e of s)t.text.placedSymbolArray.get(e).placedOrientation=n;r.verticalPlacedTextSymbolIndex&&(t.text.placedSymbolArray.get(r.verticalPlacedTextSymbolIndex).placedOrientation=o)}commit(e){this.commitTime=e,this.zoomAtLastRecencyCheck=this.transform.zoom;const t=this.prevPlacement;let i=!1;this.prevZoomAdjustment=t?t.zoomAdjustment(this.transform.zoom):0;const r=t?t.symbolFadeChange(e):1,n=t?t.opacities:{},o=t?t.variableOffsets:{},s=t?t.placedOrientations:{};for(const e in this.placements){const t=this.placements[e],o=n[e];o?(this.opacities[e]=new yt(o,r,t.text,t.icon,null,t.clipped),i=i||t.text!==o.text.placed||t.icon!==o.icon.placed):(this.opacities[e]=new yt(null,r,t.text,t.icon,t.skipFade,t.clipped),i=i||t.text||t.icon)}for(const e in n){const t=n[e];if(!this.opacities[e]){const n=new yt(t,r,!1,!1);n.isHidden()||(this.opacities[e]=n,i=i||t.text.placed||t.icon.placed)}}for(const e in o)this.variableOffsets[e]||!this.opacities[e]||this.opacities[e].isHidden()||(this.variableOffsets[e]=o[e]);for(const e in s)this.placedOrientations[e]||!this.opacities[e]||this.opacities[e].isHidden()||(this.placedOrientations[e]=s[e]);i?this.lastPlacementChangeTime=e:"number"!=typeof this.lastPlacementChangeTime&&(this.lastPlacementChangeTime=t?t.lastPlacementChangeTime:e)}updateLayerOpacities(e,t){const i={};for(const r of t){const t=r.getBucket(e);t&&r.latestFeatureIndex&&e.id===t.layerIds[0]&&this.updateBucketOpacities(t,i,r.collisionBoxArray)}}updateBucketOpacities(t,i,r){t.hasTextData()&&t.text.opacityVertexArray.clear(),t.hasIconData()&&t.icon.opacityVertexArray.clear(),t.hasIconCollisionBoxData()&&t.iconCollisionBox.collisionVertexArray.clear(),t.hasTextCollisionBoxData()&&t.textCollisionBox.collisionVertexArray.clear();const n=t.layers[0].layout,o=!!t.layers[0].dynamicFilter(),s=new yt(null,0,!1,!1,!0),a=n.get("text-allow-overlap"),l=n.get("icon-allow-overlap"),c=n.get("text-variable-anchor"),h="map"===n.get("text-rotation-alignment"),u="map"===n.get("text-pitch-alignment"),d="none"!==n.get("icon-text-fit"),p=new yt(null,0,a&&(l||!t.hasIconData()||n.get("icon-optional")),l&&(a||!t.hasTextData()||n.get("text-optional")),!0);!t.collisionArrays&&r&&(t.hasIconCollisionBoxData()||t.hasTextCollisionBoxData())&&t.deserializeCollisionBoxes(r);const f=(e,t,i)=>{for(let r=0;r<t/4;r++)e.opacityVertexArray.emplaceBack(i)};let m=0;for(let r=0;r<t.symbolInstances.length;r++){const n=t.symbolInstances.get(r),{numHorizontalGlyphVertices:a,numVerticalGlyphVertices:l,crossTileID:_}=n;let g=this.opacities[_];i[_]?g=s:g||(g=p,this.opacities[_]=g),i[_]=!0;const y=a>0||l>0,x=n.numIconVertices>0,v=this.placedOrientations[n.crossTileID],b=v===e.WritingMode.vertical,w=v===e.WritingMode.horizontal||v===e.WritingMode.horizontalOnly;if(!y&&!x||g.isHidden()||m++,y){const e=Lt(g.text);f(t.text,a,b?Bt:e),f(t.text,l,w?Bt:e);const i=g.text.isHidden();[n.rightJustifiedTextSymbolIndex,n.centerJustifiedTextSymbolIndex,n.leftJustifiedTextSymbolIndex].forEach((e=>{e>=0&&(t.text.placedSymbolArray.get(e).hidden=i||b?1:0)})),n.verticalPlacedTextSymbolIndex>=0&&(t.text.placedSymbolArray.get(n.verticalPlacedTextSymbolIndex).hidden=i||w?1:0);const r=this.variableOffsets[n.crossTileID];r&&this.markUsedJustification(t,r.anchor,n,v);const o=this.placedOrientations[n.crossTileID];o&&(this.markUsedJustification(t,"left",n,o),this.markUsedOrientation(t,o,n))}if(x){const e=Lt(g.icon);n.placedIconSymbolIndex>=0&&(f(t.icon,n.numIconVertices,b?Bt:e),t.icon.placedSymbolArray.get(n.placedIconSymbolIndex).hidden=g.icon.isHidden()),n.verticalPlacedIconSymbolIndex>=0&&(f(t.icon,n.numVerticalIconVertices,w?Bt:e),t.icon.placedSymbolArray.get(n.verticalPlacedIconSymbolIndex).hidden=g.icon.isHidden())}if(t.hasIconCollisionBoxData()||t.hasTextCollisionBoxData()){const i=t.collisionArrays[r];if(i){let r=new e.pointGeometry(0,0),n=!0;if(i.textBox||i.verticalTextBox){if(c){const e=this.variableOffsets[_];e?(r=Tt(e.anchor,e.width,e.height,e.textOffset,e.textScale),h&&r._rotate(u?this.transform.angle:-this.transform.angle)):n=!1}o&&(n=!g.clipped),i.textBox&&It(t.textCollisionBox.collisionVertexArray,g.text.placed,!n||b,r.x,r.y),i.verticalTextBox&&It(t.textCollisionBox.collisionVertexArray,g.text.placed,!n||w,r.x,r.y)}const s=n&&Boolean(!w&&i.verticalIconBox);i.iconBox&&It(t.iconCollisionBox.collisionVertexArray,g.icon.placed,s,d?r.x:0,d?r.y:0),i.verticalIconBox&&It(t.iconCollisionBox.collisionVertexArray,g.icon.placed,!s,d?r.x:0,d?r.y:0)}}}if(t.fullyClipped=0===m,t.sortFeatures(this.transform.angle),this.retainedQueryData[t.bucketInstanceId]&&(this.retainedQueryData[t.bucketInstanceId].featureSortOrder=t.featureSortOrder),t.hasTextData()&&t.text.opacityVertexBuffer&&t.text.opacityVertexBuffer.updateData(t.text.opacityVertexArray),t.hasIconData()&&t.icon.opacityVertexBuffer&&t.icon.opacityVertexBuffer.updateData(t.icon.opacityVertexArray),t.hasIconCollisionBoxData()&&t.iconCollisionBox.collisionVertexBuffer&&t.iconCollisionBox.collisionVertexBuffer.updateData(t.iconCollisionBox.collisionVertexArray),t.hasTextCollisionBoxData()&&t.textCollisionBox.collisionVertexBuffer&&t.textCollisionBox.collisionVertexBuffer.updateData(t.textCollisionBox.collisionVertexArray),t.bucketInstanceId in this.collisionCircleArrays){const e=this.collisionCircleArrays[t.bucketInstanceId];t.placementInvProjMatrix=e.invProjMatrix,t.placementViewportMatrix=e.viewportMatrix,t.collisionCircleArray=e.circles,delete this.collisionCircleArrays[t.bucketInstanceId]}}symbolFadeChange(e){return 0===this.fadeDuration?1:(e-this.commitTime)/this.fadeDuration+this.prevZoomAdjustment}zoomAdjustment(e){return Math.max(0,(this.transform.zoom-e)/1.5)}hasTransitions(e){return this.stale||e-this.lastPlacementChangeTime<this.fadeDuration}stillRecent(e,t){const i=this.zoomAtLastRecencyCheck===t?1-this.zoomAdjustment(t):1;return this.zoomAtLastRecencyCheck=t,this.commitTime+this.fadeDuration*i>e}setStale(){this.stale=!0}}function It(e,t,i,r,n){e.emplaceBack(t?1:0,i?1:0,r||0,n||0),e.emplaceBack(t?1:0,i?1:0,r||0,n||0),e.emplaceBack(t?1:0,i?1:0,r||0,n||0),e.emplaceBack(t?1:0,i?1:0,r||0,n||0)}const Mt=Math.pow(2,25),At=Math.pow(2,24),Ct=Math.pow(2,17),zt=Math.pow(2,16),kt=Math.pow(2,9),Dt=Math.pow(2,8),Pt=Math.pow(2,1);function Lt(e){if(0===e.opacity&&!e.placed)return 0;if(1===e.opacity&&e.placed)return 4294967295;const t=e.placed?1:0,i=Math.floor(127*e.opacity);return i*Mt+t*At+i*Ct+t*zt+i*kt+t*Dt+i*Pt+t}const Bt=0;class Rt{constructor(e){this._sortAcrossTiles="viewport-y"!==e.layout.get("symbol-z-order")&&void 0!==e.layout.get("symbol-sort-key").constantOr(1),this._currentTileIndex=0,this._currentPartIndex=0,this._seenCrossTileIDs={},this._bucketParts=[]}continuePlacement(e,t,i,r,n){const o=this._bucketParts;for(;this._currentTileIndex<e.length;)if(t.getBucketParts(o,r,e[this._currentTileIndex],this._sortAcrossTiles),this._currentTileIndex++,n())return!0;for(this._sortAcrossTiles&&(this._sortAcrossTiles=!1,o.sort(((e,t)=>e.sortKey-t.sortKey)));this._currentPartIndex<o.length;){const e=o[this._currentPartIndex];if(t.placeLayerBucketPart(e,this._seenCrossTileIDs,i,0===e.symbolInstanceStart),this._currentPartIndex++,n())return!0}return!1}}class Ft{constructor(e,t,i,r,n,o,s,a){this.placement=new St(e,n,o,s,a),this._currentPlacementIndex=t.length-1,this._forceFullPlacement=i,this._showCollisionBoxes=r,this._done=!1}isDone(){return this._done}continuePlacement(t,i,r){const n=e.exported.now(),o=()=>{const t=e.exported.now()-n;return!this._forceFullPlacement&&t>2};for(;this._currentPlacementIndex>=0;){const e=i[t[this._currentPlacementIndex]],n=this.placement.collisionIndex.transform.zoom;if("symbol"===e.type&&(!e.minzoom||e.minzoom<=n)&&(!e.maxzoom||e.maxzoom>n)){if(this._inProgressLayer||(this._inProgressLayer=new Rt(e)),this._inProgressLayer.continuePlacement(r[e.source],this.placement,this._showCollisionBoxes,e,o))return;delete this._inProgressLayer}this._currentPlacementIndex--}this._done=!0}commit(e){return this.placement.commit(e),this.placement}}const Ot=512/e.EXTENT/2;class Ut{constructor(e,t,i){this.tileID=e,this.indexedSymbolInstances={},this.bucketInstanceId=i;for(let i=0;i<t.length;i++){const r=t.get(i),n=r.key;this.indexedSymbolInstances[n]||(this.indexedSymbolInstances[n]=[]),this.indexedSymbolInstances[n].push({crossTileID:r.crossTileID,coord:this.getScaledCoordinates(r,e)})}}getScaledCoordinates(t,i){const r=Ot/Math.pow(2,i.canonical.z-this.tileID.canonical.z);return{x:Math.floor((i.canonical.x*e.EXTENT+t.tileAnchorX)*r),y:Math.floor((i.canonical.y*e.EXTENT+t.tileAnchorY)*r)}}findMatches(e,t,i){const r=this.tileID.canonical.z<t.canonical.z?1:Math.pow(2,this.tileID.canonical.z-t.canonical.z);for(let n=0;n<e.length;n++){const o=e.get(n);if(o.crossTileID)continue;const s=this.indexedSymbolInstances[o.key];if(!s)continue;const a=this.getScaledCoordinates(o,t);for(const e of s)if(Math.abs(e.coord.x-a.x)<=r&&Math.abs(e.coord.y-a.y)<=r&&!i[e.crossTileID]){i[e.crossTileID]=!0,o.crossTileID=e.crossTileID;break}}}}class Vt{constructor(){this.maxCrossTileID=0}generate(){return++this.maxCrossTileID}}class jt{constructor(){this.indexes={},this.usedCrossTileIDs={},this.lng=0}handleWrapJump(e){const t=Math.round((e-this.lng)/360);if(0!==t)for(const e in this.indexes){const i=this.indexes[e],r={};for(const e in i){const n=i[e];n.tileID=n.tileID.unwrapTo(n.tileID.wrap+t),r[n.tileID.key]=n}this.indexes[e]=r}this.lng=e}addBucket(e,t,i){if(this.indexes[e.overscaledZ]&&this.indexes[e.overscaledZ][e.key]){if(this.indexes[e.overscaledZ][e.key].bucketInstanceId===t.bucketInstanceId)return!1;this.removeBucketCrossTileIDs(e.overscaledZ,this.indexes[e.overscaledZ][e.key])}for(let e=0;e<t.symbolInstances.length;e++)t.symbolInstances.get(e).crossTileID=0;this.usedCrossTileIDs[e.overscaledZ]||(this.usedCrossTileIDs[e.overscaledZ]={});const r=this.usedCrossTileIDs[e.overscaledZ];for(const i in this.indexes){const n=this.indexes[i];if(Number(i)>e.overscaledZ)for(const i in n){const o=n[i];o.tileID.isChildOf(e)&&o.findMatches(t.symbolInstances,e,r)}else{const o=n[e.scaledTo(Number(i)).key];o&&o.findMatches(t.symbolInstances,e,r)}}for(let e=0;e<t.symbolInstances.length;e++){const n=t.symbolInstances.get(e);n.crossTileID||(n.crossTileID=i.generate(),r[n.crossTileID]=!0)}return void 0===this.indexes[e.overscaledZ]&&(this.indexes[e.overscaledZ]={}),this.indexes[e.overscaledZ][e.key]=new Ut(e,t.symbolInstances,t.bucketInstanceId),!0}removeBucketCrossTileIDs(e,t){for(const i in t.indexedSymbolInstances)for(const r of t.indexedSymbolInstances[i])delete this.usedCrossTileIDs[e][r.crossTileID]}removeStaleBuckets(e){let t=!1;for(const i in this.indexes){const r=this.indexes[i];for(const n in r)e[r[n].bucketInstanceId]||(this.removeBucketCrossTileIDs(i,r[n]),delete r[n],t=!0)}return t}}class Nt{constructor(){this.layerIndexes={},this.crossTileIDs=new Vt,this.maxBucketInstanceId=0,this.bucketsInCurrentPlacement={}}addLayer(e,t,i,r){let n=this.layerIndexes[e.id];void 0===n&&(n=this.layerIndexes[e.id]=new jt);let o=!1;const s={};"globe"!==r.name&&n.handleWrapJump(i);for(const i of t){const t=i.getBucket(e);t&&e.id===t.layerIds[0]&&(t.bucketInstanceId||(t.bucketInstanceId=++this.maxBucketInstanceId),n.addBucket(i.tileID,t,this.crossTileIDs)&&(o=!0),s[t.bucketInstanceId]=!0)}return n.removeStaleBuckets(s)&&(o=!0),o}pruneUnusedLayers(e){const t={};e.forEach((e=>{t[e]=!0}));for(const e in this.layerIndexes)t[e]||delete this.layerIndexes[e]}}const Gt=(t,i)=>e.emitValidationErrors(t,i&&i.filter((e=>"source.canvas"!==e.identifier))),Zt=e.pick(Ne,["addLayer","removeLayer","setPaintProperty","setLayoutProperty","setFilter","addSource","removeSource","setLayerZoomRange","setLight","setTransition","setGeoJSONSourceData","setTerrain","setFog","setProjection"]),$t=e.pick(Ne,["setCenter","setZoom","setBearing","setPitch"]),qt={version:8,layers:[],sources:{}},Xt={fill:!0,line:!0,background:!0,hillshade:!0,raster:!0};class Wt extends e.Evented{constructor(t,i={}){super(),this.map=t,this.dispatcher=new D(Ue(),this),this.imageManager=new v,this.imageManager.setEventedParent(this),this.glyphManager=new e.GlyphManager(t._requestManager,i.localFontFamily?e.LocalGlyphMode.all:i.localIdeographFontFamily?e.LocalGlyphMode.ideographs:e.LocalGlyphMode.none,i.localFontFamily||i.localIdeographFontFamily),this.lineAtlas=new e.LineAtlas(256,512),this.crossTileSymbolIndex=new Nt,this._layers={},this._num3DLayers=0,this._numSymbolLayers=0,this._numCircleLayers=0,this._serializedLayers={},this._sourceCaches={},this._otherSourceCaches={},this._symbolSourceCaches={},this.zoomHistory=new e.ZoomHistory,this._loaded=!1,this._availableImages=[],this._order=[],this._drapedFirstOrder=[],this._markersNeedUpdate=!1,this._resetUpdates(),this.dispatcher.broadcast("setReferrer",e.getReferrer());const r=this;this._rtlTextPluginCallback=Wt.registerForPluginStateChange((t=>{r.dispatcher.broadcast("syncRTLPluginState",{pluginStatus:t.pluginStatus,pluginURL:t.pluginURL},((t,i)=>{if(e.triggerPluginCompletionEvent(t),i&&i.every((e=>e)))for(const e in r._sourceCaches){const t=r._sourceCaches[e],i=t.getSource().type;"vector"!==i&&"geojson"!==i||t.reload()}}))})),this.on("data",(e=>{if("source"!==e.dataType||"metadata"!==e.sourceDataType)return;const t=this.getSource(e.sourceId);if(t&&t.vectorLayerIds)for(const e in this._layers){const i=this._layers[e];i.source===t.id&&this._validateLayer(i)}}))}loadURL(t,i={}){this.fire(new e.Event("dataloading",{dataType:"style"}));const r="boolean"==typeof i.validate?i.validate:!e.isMapboxURL(t);t=this.map._requestManager.normalizeStyleURL(t,i.accessToken);const n=this.map._requestManager.transformRequest(t,e.ResourceType.Style);this._request=e.getJSON(n,((t,i)=>{this._request=null,t?this.fire(new e.ErrorEvent(t)):i&&this._load(i,r)}))}loadJSON(t,i={}){this.fire(new e.Event("dataloading",{dataType:"style"})),this._request=e.exported.frame((()=>{this._request=null,this._load(t,!1!==i.validate)}))}loadEmpty(){this.fire(new e.Event("dataloading",{dataType:"style"})),this._load(qt,!1)}_updateLayerCount(e,t){const i=t?1:-1;e.is3D()&&(this._num3DLayers+=i),"circle"===e.type&&(this._numCircleLayers+=i),"symbol"===e.type&&(this._numSymbolLayers+=i)}_load(t,i){if(i&&Gt(this,e.validateStyle(t)))return;this._loaded=!0,this.stylesheet=t,this._updateMapProjection();for(const e in t.sources)this.addSource(e,t.sources[e],{validate:!1});this._changed=!1,t.sprite?this._loadSprite(t.sprite):(this.imageManager.setLoaded(!0),this.dispatcher.broadcast("spriteLoaded",!0)),this.glyphManager.setURL(t.glyphs);const r=je(this.stylesheet.layers);this._order=r.map((e=>e.id)),this._layers={},this._serializedLayers={};for(let t of r)t=e.createStyleLayer(t),t.setEventedParent(this,{layer:{id:t.id}}),this._layers[t.id]=t,this._serializedLayers[t.id]=t.serialize(),this._updateLayerCount(t,!0);this.dispatcher.broadcast("setLayers",this._serializeLayers(this._order)),this.light=new T(this.stylesheet.light),this.stylesheet.terrain&&!this.terrainSetForDrapingOnly()&&this._createTerrain(this.stylesheet.terrain,1),this.stylesheet.fog&&this._createFog(this.stylesheet.fog),this._updateDrapeFirstLayers(),this.fire(new e.Event("data",{dataType:"style"})),this.fire(new e.Event("style.load"))}terrainSetForDrapingOnly(){return!!this.terrain&&0===this.terrain.drapeRenderMode}setProjection(e){e?this.stylesheet.projection=e:delete this.stylesheet.projection,this.map._explicitProjection||this.map._updateProjection()}_updateMapProjection(){this.map._explicitProjection?this.applyProjectionUpdate():this.map._updateProjection()}applyProjectionUpdate(){this._loaded&&(this.dispatcher.broadcast("setProjection",this.map.transform.projectionOptions),this.map.transform.projection.requiresDraping?this.getTerrain()||this.stylesheet.terrain||this.setTerrainForDraping():this.terrainSetForDrapingOnly()&&this.setTerrain(null))}_loadSprite(t){this._spriteRequest=function(t,i,r){let n,o,s;const a=e.exported.devicePixelRatio>1?"@2x":"";let l=e.getJSON(i.transformRequest(i.normalizeSpriteURL(t,a,".json"),e.ResourceType.SpriteJSON),((e,t)=>{l=null,s||(s=e,n=t,h())})),c=e.getImage(i.transformRequest(i.normalizeSpriteURL(t,a,".png"),e.ResourceType.SpriteImage),((e,t)=>{c=null,s||(s=e,o=t,h())}));function h(){if(s)r(s);else if(n&&o){const t=e.exported.getImageData(o),i={};for(const r in n){const{width:o,height:s,x:a,y:l,sdf:c,pixelRatio:h,stretchX:u,stretchY:d,content:p}=n[r],f=new e.RGBAImage({width:o,height:s});e.RGBAImage.copy(t,f,{x:a,y:l},{x:0,y:0},{width:o,height:s}),i[r]={data:f,pixelRatio:h,sdf:c,stretchX:u,stretchY:d,content:p}}r(null,i)}}return{cancel(){l&&(l.cancel(),l=null),c&&(c.cancel(),c=null)}}}(t,this.map._requestManager,((t,i)=>{if(this._spriteRequest=null,t)this.fire(new e.ErrorEvent(t));else if(i)for(const e in i)this.imageManager.addImage(e,i[e]);this.imageManager.setLoaded(!0),this._availableImages=this.imageManager.listImages(),this.dispatcher.broadcast("setImages",this._availableImages),this.dispatcher.broadcast("spriteLoaded",!0),this.fire(new e.Event("data",{dataType:"style"}))}))}_validateLayer(t){const i=this.getSource(t.source);if(!i)return;const r=t.sourceLayer;r&&("geojson"===i.type||i.vectorLayerIds&&-1===i.vectorLayerIds.indexOf(r))&&this.fire(new e.ErrorEvent(new Error(`Source layer "${r}" does not exist on source "${i.id}" as specified by style layer "${t.id}"`)))}loaded(){if(!this._loaded)return!1;if(Object.keys(this._updatedSources).length)return!1;for(const e in this._sourceCaches)if(!this._sourceCaches[e].loaded())return!1;return!!this.imageManager.isLoaded()}_serializeLayers(e){const t=[];for(const i of e){const e=this._layers[i];"custom"!==e.type&&t.push(e.serialize())}return t}hasTransitions(){if(this.light&&this.light.hasTransition())return!0;if(this.fog&&this.fog.hasTransition())return!0;for(const e in this._sourceCaches)if(this._sourceCaches[e].hasTransition())return!0;for(const e in this._layers)if(this._layers[e].hasTransition())return!0;return!1}get order(){return this.map._optimizeForTerrain&&this.terrain?this._drapedFirstOrder:this._order}isLayerDraped(e){return!!this.terrain&&Xt[e.type]}_checkLoaded(){if(!this._loaded)throw new Error("Style is not done loading")}update(t){if(!this._loaded)return;const i=this._changed;if(this._changed){const e=Object.keys(this._updatedLayers),i=Object.keys(this._removedLayers);(e.length||i.length)&&this._updateWorkerLayers(e,i);for(const e in this._updatedSources){const t=this._updatedSources[e];"reload"===t?this._reloadSource(e):"clear"===t&&this._clearSource(e)}this._updateTilesForChangedImages();for(const e in this._updatedPaintProps)this._layers[e].updateTransitions(t);this.light.updateTransitions(t),this.fog&&this.fog.updateTransitions(t),this._resetUpdates()}const r={};for(const e in this._sourceCaches){const t=this._sourceCaches[e];r[e]=t.used,t.used=!1}for(const e of this._order){const i=this._layers[e];if(i.recalculate(t,this._availableImages),!i.isHidden(t.zoom)){const e=this._getLayerSourceCache(i);e&&(e.used=!0)}const r=this.map.painter;if(r){const e=i.getProgramIds();if(!e)continue;const n=i.getProgramConfiguration(t.zoom);for(const t of e)r.useProgram(t,n)}}for(const t in r){const i=this._sourceCaches[t];r[t]!==i.used&&i.getSource().fire(new e.Event("data",{sourceDataType:"visibility",dataType:"source",sourceId:i.getSource().id}))}this.light.recalculate(t),this.terrain&&this.terrain.recalculate(t),this.fog&&this.fog.recalculate(t),this.z=t.zoom,this._markersNeedUpdate&&(this._updateMarkersOpacity(),this._markersNeedUpdate=!1),i&&this.fire(new e.Event("data",{dataType:"style"}))}_updateTilesForChangedImages(){const e=Object.keys(this._changedImages);if(e.length){for(const t in this._sourceCaches)this._sourceCaches[t].reloadTilesForDependencies(["icons","patterns"],e);this._changedImages={}}}_updateWorkerLayers(e,t){this.dispatcher.broadcast("updateLayers",{layers:this._serializeLayers(e),removedIds:t})}_resetUpdates(){this._changed=!1,this._updatedLayers={},this._removedLayers={},this._updatedSources={},this._updatedPaintProps={},this._changedImages={}}setState(t){if(this._checkLoaded(),Gt(this,e.validateStyle(t)))return!1;(t=e.clone$1(t)).layers=je(t.layers);const i=function(e,t){if(!e)return[{command:Ne.setStyle,args:[t]}];let i=[];try{if(!n(e.version,t.version))return[{command:Ne.setStyle,args:[t]}];n(e.center,t.center)||i.push({command:Ne.setCenter,args:[t.center]}),n(e.zoom,t.zoom)||i.push({command:Ne.setZoom,args:[t.zoom]}),n(e.bearing,t.bearing)||i.push({command:Ne.setBearing,args:[t.bearing]}),n(e.pitch,t.pitch)||i.push({command:Ne.setPitch,args:[t.pitch]}),n(e.sprite,t.sprite)||i.push({command:Ne.setSprite,args:[t.sprite]}),n(e.glyphs,t.glyphs)||i.push({command:Ne.setGlyphs,args:[t.glyphs]}),n(e.transition,t.transition)||i.push({command:Ne.setTransition,args:[t.transition]}),n(e.light,t.light)||i.push({command:Ne.setLight,args:[t.light]}),n(e.fog,t.fog)||i.push({command:Ne.setFog,args:[t.fog]}),n(e.projection,t.projection)||i.push({command:Ne.setProjection,args:[t.projection]});const r={},o=[];!function(e,t,i,r){let o;for(o in t=t||{},e=e||{})e.hasOwnProperty(o)&&(t.hasOwnProperty(o)||Ze(o,i,r));for(o in t)t.hasOwnProperty(o)&&(e.hasOwnProperty(o)?n(e[o],t[o])||("geojson"===e[o].type&&"geojson"===t[o].type&&qe(e,t,o)?i.push({command:Ne.setGeoJSONSourceData,args:[o,t[o].data]}):$e(o,t,i,r)):Ge(o,t,i))}(e.sources,t.sources,o,r);const s=[];e.layers&&e.layers.forEach((e=>{e.source&&r[e.source]?i.push({command:Ne.removeLayer,args:[e.id]}):s.push(e)}));let a=e.terrain;a&&r[a.source]&&(i.push({command:Ne.setTerrain,args:[void 0]}),a=void 0),i=i.concat(o),n(a,t.terrain)||i.push({command:Ne.setTerrain,args:[t.terrain]}),function(e,t,i){t=t||[];const r=(e=e||[]).map(We),o=t.map(We),s=e.reduce(He,{}),a=t.reduce(He,{}),l=r.slice(),c=Object.create(null);let h,u,d,p,f,m,_;for(h=0,u=0;h<r.length;h++)d=r[h],a.hasOwnProperty(d)?u++:(i.push({command:Ne.removeLayer,args:[d]}),l.splice(l.indexOf(d,u),1));for(h=0,u=0;h<o.length;h++)d=o[o.length-1-h],l[l.length-1-h]!==d&&(s.hasOwnProperty(d)?(i.push({command:Ne.removeLayer,args:[d]}),l.splice(l.lastIndexOf(d,l.length-u),1)):u++,m=l[l.length-h],i.push({command:Ne.addLayer,args:[a[d],m]}),l.splice(l.length-h,0,d),c[d]=!0);for(h=0;h<o.length;h++)if(d=o[h],p=s[d],f=a[d],!c[d]&&!n(p,f))if(n(p.source,f.source)&&n(p["source-layer"],f["source-layer"])&&n(p.type,f.type)){for(_ in Xe(p.layout,f.layout,i,d,null,Ne.setLayoutProperty),Xe(p.paint,f.paint,i,d,null,Ne.setPaintProperty),n(p.filter,f.filter)||i.push({command:Ne.setFilter,args:[d,f.filter]}),n(p.minzoom,f.minzoom)&&n(p.maxzoom,f.maxzoom)||i.push({command:Ne.setLayerZoomRange,args:[d,f.minzoom,f.maxzoom]}),p)p.hasOwnProperty(_)&&"layout"!==_&&"paint"!==_&&"filter"!==_&&"metadata"!==_&&"minzoom"!==_&&"maxzoom"!==_&&(0===_.indexOf("paint.")?Xe(p[_],f[_],i,d,_.slice(6),Ne.setPaintProperty):n(p[_],f[_])||i.push({command:Ne.setLayerProperty,args:[d,_,f[_]]}));for(_ in f)f.hasOwnProperty(_)&&!p.hasOwnProperty(_)&&"layout"!==_&&"paint"!==_&&"filter"!==_&&"metadata"!==_&&"minzoom"!==_&&"maxzoom"!==_&&(0===_.indexOf("paint.")?Xe(p[_],f[_],i,d,_.slice(6),Ne.setPaintProperty):n(p[_],f[_])||i.push({command:Ne.setLayerProperty,args:[d,_,f[_]]}))}else i.push({command:Ne.removeLayer,args:[d]}),m=l[l.lastIndexOf(d)+1],i.push({command:Ne.addLayer,args:[f,m]})}(s,t.layers,i)}catch(e){console.warn("Unable to compute style diff:",e),i=[{command:Ne.setStyle,args:[t]}]}return i}(this.serialize(),t).filter((e=>!(e.command in $t)));if(0===i.length)return!1;const r=i.filter((e=>!(e.command in Zt)));if(r.length>0)throw new Error(`Unimplemented: ${r.map((e=>e.command)).join(", ")}.`);return i.forEach((e=>{"setTransition"!==e.command&&this[e.command].apply(this,e.args)})),this.stylesheet=t,this._updateMapProjection(),!0}addImage(t,i){return this.getImage(t)?this.fire(new e.ErrorEvent(new Error("An image with this name already exists."))):(this.imageManager.addImage(t,i),this._afterImageUpdated(t),this)}updateImage(e,t){this.imageManager.updateImage(e,t)}getImage(e){return this.imageManager.getImage(e)}removeImage(t){return this.getImage(t)?(this.imageManager.removeImage(t),this._afterImageUpdated(t),this):this.fire(new e.ErrorEvent(new Error("No image with this name exists.")))}_afterImageUpdated(t){this._availableImages=this.imageManager.listImages(),this._changedImages[t]=!0,this._changed=!0,this.dispatcher.broadcast("setImages",this._availableImages),this.fire(new e.Event("data",{dataType:"style"}))}listImages(){return this._checkLoaded(),this._availableImages.slice()}addSource(t,i,r={}){if(this._checkLoaded(),void 0!==this.getSource(t))throw new Error("There is already a source with this ID");if(!i.type)throw new Error(`The type property must be defined, but only the following properties were given: ${Object.keys(i).join(", ")}.`);if(["vector","raster","geojson","video","image"].indexOf(i.type)>=0&&this._validate(e.validateSource,`sources.${t}`,i,null,r))return;this.map&&this.map._collectResourceTiming&&(i.collectResourceTiming=!0);const n=ze(t,i,this.dispatcher,this);n.setEventedParent(this,(()=>({isSourceLoaded:this._isSourceCacheLoaded(t),source:n.serialize(),sourceId:t})));const o=i=>{const r=(i?"symbol:":"other:")+t,o=this._sourceCaches[r]=new e.SourceCache(r,n,i);(i?this._symbolSourceCaches:this._otherSourceCaches)[t]=o,o.style=this,o.onAdd(this.map)};o(!1),"vector"!==i.type&&"geojson"!==i.type||o(!0),n.onAdd&&n.onAdd(this.map),this._changed=!0}removeSource(t){this._checkLoaded();const i=this.getSource(t);if(!i)throw new Error("There is no source with this ID");for(const i in this._layers)if(this._layers[i].source===t)return this.fire(new e.ErrorEvent(new Error(`Source "${t}" cannot be removed while layer "${i}" is using it.`)));if(this.terrain&&this.terrain.get().source===t)return this.fire(new e.ErrorEvent(new Error(`Source "${t}" cannot be removed while terrain is using it.`)));const r=this._getSourceCaches(t);for(const t of r)delete this._sourceCaches[t.id],delete this._updatedSources[t.id],t.fire(new e.Event("data",{sourceDataType:"metadata",dataType:"source",sourceId:t.getSource().id})),t.setEventedParent(null),t.clearTiles();return delete this._otherSourceCaches[t],delete this._symbolSourceCaches[t],i.setEventedParent(null),i.onRemove&&i.onRemove(this.map),this._changed=!0,this}setGeoJSONSourceData(e,t){this._checkLoaded(),this.getSource(e).setData(t),this._changed=!0}getSource(e){const t=this._getSourceCache(e);return t&&t.getSource()}addLayer(t,i,r={}){this._checkLoaded();const n=t.id;if(this.getLayer(n))return void this.fire(new e.ErrorEvent(new Error(`Layer with id "${n}" already exists on this map`)));let o;if("custom"===t.type){if(Gt(this,e.validateCustomStyleLayer(t)))return;o=e.createStyleLayer(t)}else{if("object"==typeof t.source&&(this.addSource(n,t.source),t=e.clone$1(t),t=e.extend(t,{source:n})),this._validate(e.validateLayer,`layers.${n}`,t,{arrayIndex:-1},r))return;o=e.createStyleLayer(t),this._validateLayer(o),o.setEventedParent(this,{layer:{id:n}}),this._serializedLayers[o.id]=o.serialize(),this._updateLayerCount(o,!0)}const s=i?this._order.indexOf(i):this._order.length;if(i&&-1===s)return void this.fire(new e.ErrorEvent(new Error(`Layer with id "${i}" does not exist on this map.`)));this._order.splice(s,0,n),this._layerOrderChanged=!0,this._layers[n]=o;const a=this._getLayerSourceCache(o);if(this._removedLayers[n]&&o.source&&a&&"custom"!==o.type){const e=this._removedLayers[n];delete this._removedLayers[n],e.type!==o.type?this._updatedSources[o.source]="clear":(this._updatedSources[o.source]="reload",a.pause())}this._updateLayer(o),o.onAdd&&o.onAdd(this.map),this._updateDrapeFirstLayers()}moveLayer(t,i){if(this._checkLoaded(),this._changed=!0,!this._layers[t])return void this.fire(new e.ErrorEvent(new Error(`The layer '${t}' does not exist in the map's style and cannot be moved.`)));if(t===i)return;const r=this._order.indexOf(t);this._order.splice(r,1);const n=i?this._order.indexOf(i):this._order.length;i&&-1===n?this.fire(new e.ErrorEvent(new Error(`Layer with id "${i}" does not exist on this map.`))):(this._order.splice(n,0,t),this._layerOrderChanged=!0,this._updateDrapeFirstLayers())}removeLayer(t){this._checkLoaded();const i=this._layers[t];if(!i)return void this.fire(new e.ErrorEvent(new Error(`The layer '${t}' does not exist in the map's style and cannot be removed.`)));i.setEventedParent(null),this._updateLayerCount(i,!1);const r=this._order.indexOf(t);this._order.splice(r,1),this._layerOrderChanged=!0,this._changed=!0,this._removedLayers[t]=i,delete this._layers[t],delete this._serializedLayers[t],delete this._updatedLayers[t],delete this._updatedPaintProps[t],i.onRemove&&i.onRemove(this.map),this._updateDrapeFirstLayers()}getLayer(e){return this._layers[e]}hasLayer(e){return e in this._layers}hasLayerType(e){for(const t in this._layers)if(this._layers[t].type===e)return!0;return!1}setLayerZoomRange(t,i,r){this._checkLoaded();const n=this.getLayer(t);n?n.minzoom===i&&n.maxzoom===r||(null!=i&&(n.minzoom=i),null!=r&&(n.maxzoom=r),this._updateLayer(n)):this.fire(new e.ErrorEvent(new Error(`The layer '${t}' does not exist in the map's style and cannot have zoom extent.`)))}setFilter(t,i,r={}){this._checkLoaded();const o=this.getLayer(t);if(o){if(!n(o.filter,i))return null==i?(o.filter=void 0,void this._updateLayer(o)):void(this._validate(e.validateFilter,`layers.${o.id}.filter`,i,{layerType:o.type},r)||(o.filter=e.clone$1(i),this._updateLayer(o)))}else this.fire(new e.ErrorEvent(new Error(`The layer '${t}' does not exist in the map's style and cannot be filtered.`)))}getFilter(t){const i=this.getLayer(t);return i&&e.clone$1(i.filter)}setLayoutProperty(t,i,r,o={}){this._checkLoaded();const s=this.getLayer(t);s?n(s.getLayoutProperty(i),r)||(s.setLayoutProperty(i,r,o),this._updateLayer(s)):this.fire(new e.ErrorEvent(new Error(`The layer '${t}' does not exist in the map's style and cannot be styled.`)))}getLayoutProperty(t,i){const r=this.getLayer(t);if(r)return r.getLayoutProperty(i);this.fire(new e.ErrorEvent(new Error(`The layer '${t}' does not exist in the map's style.`)))}setPaintProperty(t,i,r,o={}){this._checkLoaded();const s=this.getLayer(t);s?n(s.getPaintProperty(i),r)||(s.setPaintProperty(i,r,o)&&this._updateLayer(s),this._changed=!0,this._updatedPaintProps[t]=!0):this.fire(new e.ErrorEvent(new Error(`The layer '${t}' does not exist in the map's style and cannot be styled.`)))}getPaintProperty(e,t){const i=this.getLayer(e);return i&&i.getPaintProperty(t)}setFeatureState(t,i){this._checkLoaded();const r=t.source,n=t.sourceLayer,o=this.getSource(r);if(!o)return void this.fire(new e.ErrorEvent(new Error(`The source '${r}' does not exist in the map's style.`)));const s=o.type;if("geojson"===s&&n)return void this.fire(new e.ErrorEvent(new Error("GeoJSON sources cannot have a sourceLayer parameter.")));if("vector"===s&&!n)return void this.fire(new e.ErrorEvent(new Error("The sourceLayer parameter must be provided for vector source types.")));void 0===t.id&&this.fire(new e.ErrorEvent(new Error("The feature id parameter must be provided.")));const a=this._getSourceCaches(r);for(const e of a)e.setFeatureState(n,t.id,i)}removeFeatureState(t,i){this._checkLoaded();const r=t.source,n=this.getSource(r);if(!n)return void this.fire(new e.ErrorEvent(new Error(`The source '${r}' does not exist in the map's style.`)));const o=n.type,s="vector"===o?t.sourceLayer:void 0;if("vector"===o&&!s)return void this.fire(new e.ErrorEvent(new Error("The sourceLayer parameter must be provided for vector source types.")));if(i&&"string"!=typeof t.id&&"number"!=typeof t.id)return void this.fire(new e.ErrorEvent(new Error("A feature id is required to remove its specific state property.")));const a=this._getSourceCaches(r);for(const e of a)e.removeFeatureState(s,t.id,i)}getFeatureState(t){this._checkLoaded();const i=t.source,r=t.sourceLayer,n=this.getSource(i);if(n){if("vector"!==n.type||r)return void 0===t.id&&this.fire(new e.ErrorEvent(new Error("The feature id parameter must be provided."))),this._getSourceCaches(i)[0].getFeatureState(r,t.id);this.fire(new e.ErrorEvent(new Error("The sourceLayer parameter must be provided for vector source types.")))}else this.fire(new e.ErrorEvent(new Error(`The source '${i}' does not exist in the map's style.`)))}getTransition(){return e.extend({duration:300,delay:0},this.stylesheet&&this.stylesheet.transition)}serialize(){const t={};for(const e in this._sourceCaches){const i=this._sourceCaches[e].getSource();t[i.id]||(t[i.id]=i.serialize())}return e.filterObject({version:this.stylesheet.version,name:this.stylesheet.name,metadata:this.stylesheet.metadata,light:this.stylesheet.light,terrain:this.stylesheet.terrain,fog:this.stylesheet.fog,center:this.stylesheet.center,zoom:this.stylesheet.zoom,bearing:this.stylesheet.bearing,pitch:this.stylesheet.pitch,sprite:this.stylesheet.sprite,glyphs:this.stylesheet.glyphs,transition:this.stylesheet.transition,projection:this.stylesheet.projection,sources:t,layers:this._serializeLayers(this._order)},(e=>void 0!==e))}_updateLayer(e){this._updatedLayers[e.id]=!0;const t=this._getLayerSourceCache(e);e.source&&!this._updatedSources[e.source]&&t&&"raster"!==t.getSource().type&&(this._updatedSources[e.source]="reload",t.pause()),this._changed=!0,e.invalidateCompiledFilter()}_flattenAndSortRenderedFeatures(e){const t=e=>"fill-extrusion"===this._layers[e].type,i={},r=[];for(let n=this._order.length-1;n>=0;n--){const o=this._order[n];if(t(o)){i[o]=n;for(const t of e){const e=t[o];if(e)for(const t of e)r.push(t)}}}r.sort(((e,t)=>t.intersectionZ-e.intersectionZ));const n=[];for(let o=this._order.length-1;o>=0;o--){const s=this._order[o];if(t(s))for(let e=r.length-1;e>=0;e--){const t=r[e].feature;if(i[t.layer.id]<o)break;n.push(t),r.pop()}else for(const t of e){const e=t[s];if(e)for(const t of e)n.push(t.feature)}}return n}queryRenderedFeatures(t,i,r){i&&i.filter&&this._validate(e.validateFilter,"queryRenderedFeatures.filter",i.filter,null,i);const n={};if(i&&i.layers){if(!Array.isArray(i.layers))return this.fire(new e.ErrorEvent(new Error("parameters.layers must be an Array."))),[];for(const t of i.layers){const i=this._layers[t];if(!i)return this.fire(new e.ErrorEvent(new Error(`The layer '${t}' does not exist in the map's style and cannot be queried for features.`))),[];n[i.source]=!0}}const o=[];i.availableImages=this._availableImages;const s=i&&i.layers?i.layers.some((e=>{const t=this.getLayer(e);return t&&t.is3D()})):this.has3DLayers(),a=L.createFromScreenPoints(t,r);for(const e in this._sourceCaches){const t=this._sourceCaches[e].getSource().id;i.layers&&!n[t]||o.push(De(this._sourceCaches[e],this._layers,this._serializedLayers,a,i,r,s,!!this.map._showQueryGeometry))}return this.placement&&o.push(function(e,t,i,r,n,o,s){const a={},l=o.queryRenderedSymbols(r),c=[];for(const e of Object.keys(l).map(Number))c.push(s[e]);c.sort(Le);for(const i of c){const r=i.featureIndex.lookupSymbolFeatures(l[i.bucketInstanceId],t,i.bucketIndex,i.sourceLayerIndex,n.filter,n.layers,n.availableImages,e);for(const e in r){const t=a[e]=a[e]||[],n=r[e];n.sort(((e,t)=>{const r=i.featureSortOrder;if(r){const i=r.indexOf(e.featureIndex);return r.indexOf(t.featureIndex)-i}return t.featureIndex-e.featureIndex}));for(const e of n)t.push(e)}}for(const t in a)a[t].forEach((r=>{const n=r.feature,o=i(e[t]).getFeatureState(n.layer["source-layer"],n.id);n.source=n.layer.source,n.layer["source-layer"]&&(n.sourceLayer=n.layer["source-layer"]),n.state=o}));return a}(this._layers,this._serializedLayers,this._getLayerSourceCache.bind(this),a.screenGeometry,i,this.placement.collisionIndex,this.placement.retainedQueryData)),this._flattenAndSortRenderedFeatures(o)}querySourceFeatures(t,i){i&&i.filter&&this._validate(e.validateFilter,"querySourceFeatures.filter",i.filter,null,i);const r=this._getSourceCaches(t);let n=[];for(const e of r)n=n.concat(Pe(e,i));return n}addSourceType(e,t,i){return Wt.getSourceType(e)?i(new Error(`A source type called "${e}" already exists.`)):(Wt.setSourceType(e,t),t.workerSourceURL?void this.dispatcher.broadcast("loadWorkerSource",{name:e,url:t.workerSourceURL},i):i(null,null))}getLight(){return this.light.getLight()}setLight(t,i={}){this._checkLoaded();const r=this.light.getLight();let o=!1;for(const e in t)if(!n(t[e],r[e])){o=!0;break}if(!o)return;const s={now:e.exported.now(),transition:e.extend({duration:300,delay:0},this.stylesheet.transition)};this.light.setLight(t,i),this.light.updateTransitions(s)}getTerrain(){return this.terrain&&1===this.terrain.drapeRenderMode?this.terrain.get():null}setTerrainForDraping(){this.setTerrain({source:"",exaggeration:0},0)}setTerrain(t,i=1){if(this._checkLoaded(),!t)return delete this.terrain,delete this.stylesheet.terrain,this.dispatcher.broadcast("enableTerrain",!1),this._force3DLayerUpdate(),void(this._markersNeedUpdate=!0);if(1===i){if("object"==typeof t.source){const i="terrain-dem-src";this.addSource(i,t.source),t=e.clone$1(t),t=e.extend(t,{source:i})}if(this._validate(e.validateTerrain,"terrain",t))return}if(!this.terrain||this.terrain&&i!==this.terrain.drapeRenderMode)this._createTerrain(t,i);else{const i=this.terrain,r=i.get();for(const o in t)if(!n(t[o],r[o])){i.set(t),this.stylesheet.terrain=t;const r={now:e.exported.now(),transition:e.extend({duration:0},this.stylesheet.transition)};i.updateTransitions(r);break}}this._updateDrapeFirstLayers(),this._markersNeedUpdate=!0}_createFog(t){const i=this.fog=new k(t,this.map.transform);this.stylesheet.fog=t;const r={now:e.exported.now(),transition:e.extend({duration:0},this.stylesheet.transition)};i.updateTransitions(r)}_updateMarkersOpacity(){0!==this.map._markers.length&&this.map._requestDomTask((()=>{for(const e of this.map._markers)e._evaluateOpacity()}))}getFog(){return this.fog?this.fog.get():null}setFog(t){if(this._checkLoaded(),!t)return delete this.fog,delete this.stylesheet.fog,void(this._markersNeedUpdate=!0);if(this.fog){const i=this.fog,r=i.get();for(const o in t)if(!n(t[o],r[o])){i.set(t),this.stylesheet.fog=t;const r={now:e.exported.now(),transition:e.extend({duration:0},this.stylesheet.transition)};i.updateTransitions(r);break}}else this._createFog(t);this._markersNeedUpdate=!0}_updateDrapeFirstLayers(){if(!this.map._optimizeForTerrain||!this.terrain)return;const e=this._order.filter((e=>this.isLayerDraped(this._layers[e]))),t=this._order.filter((e=>!this.isLayerDraped(this._layers[e])));this._drapedFirstOrder=[],this._drapedFirstOrder.push(...e),this._drapedFirstOrder.push(...t)}_createTerrain(t,i){const r=this.terrain=new I(t,i);this.stylesheet.terrain=t,this.dispatcher.broadcast("enableTerrain",!this.terrainSetForDrapingOnly()),this._force3DLayerUpdate();const n={now:e.exported.now(),transition:e.extend({duration:0},this.stylesheet.transition)};r.updateTransitions(n)}_force3DLayerUpdate(){for(const e in this._layers){const t=this._layers[e];"fill-extrusion"===t.type&&this._updateLayer(t)}}_forceSymbolLayerUpdate(){for(const e in this._layers){const t=this._layers[e];"symbol"===t.type&&this._updateLayer(t)}}_validate(t,i,r,n,o={}){return(!o||!1!==o.validate)&&Gt(this,t.call(e.validateStyle,e.extend({key:i,style:this.serialize(),value:r,styleSpec:e.spec},n)))}_remove(){this._request&&(this._request.cancel(),this._request=null),this._spriteRequest&&(this._spriteRequest.cancel(),this._spriteRequest=null),e.evented.off("pluginStateChange",this._rtlTextPluginCallback);for(const e in this._layers)this._layers[e].setEventedParent(null);for(const e in this._sourceCaches)this._sourceCaches[e].clearTiles(),this._sourceCaches[e].setEventedParent(null);this.imageManager.setEventedParent(null),this.setEventedParent(null),this.dispatcher.remove()}_clearSource(e){const t=this._getSourceCaches(e);for(const e of t)e.clearTiles()}_reloadSource(e){const t=this._getSourceCaches(e);for(const e of t)e.resume(),e.reload()}_updateSources(e){for(const t in this._sourceCaches)this._sourceCaches[t].update(e)}_generateCollisionBoxes(){for(const e in this._sourceCaches){const t=this._sourceCaches[e];t.resume(),t.reload()}}_updatePlacement(t,i,r,n,o=!1){let s=!1,a=!1;const l={};for(const e of this._order){const i=this._layers[e];if("symbol"!==i.type)continue;if(!l[i.source]){const e=this._getLayerSourceCache(i);if(!e)continue;l[i.source]=e.getRenderableIds(!0).map((t=>e.getTileByID(t))).sort(((e,t)=>t.tileID.overscaledZ-e.tileID.overscaledZ||(e.tileID.isLessThan(t.tileID)?-1:1)))}const r=this.crossTileSymbolIndex.addLayer(i,l[i.source],t.center.lng,t.projection);s=s||r}if(this.crossTileSymbolIndex.pruneUnusedLayers(this._order),o=o||this._layerOrderChanged||0===r,this._layerOrderChanged&&this.fire(new e.Event("neworder")),(o||!this.pauseablePlacement||this.pauseablePlacement.isDone()&&!this.placement.stillRecent(e.exported.now(),t.zoom))&&(this.pauseablePlacement=new Ft(t,this._order,o,i,r,n,this.placement,this.fog&&t.projection.supportsFog?this.fog.state:null),this._layerOrderChanged=!1),this.pauseablePlacement.isDone()?this.placement.setStale():(this.pauseablePlacement.continuePlacement(this._order,this._layers,l),this.pauseablePlacement.isDone()&&(this.placement=this.pauseablePlacement.commit(e.exported.now()),a=!0),s&&this.pauseablePlacement.placement.setStale()),a||s)for(const e of this._order){const t=this._layers[e];"symbol"===t.type&&this.placement.updateLayerOpacities(t,l[t.source])}return!this.pauseablePlacement.isDone()||this.placement.hasTransitions(e.exported.now())}_releaseSymbolFadeTiles(){for(const e in this._sourceCaches)this._sourceCaches[e].releaseSymbolFadeTiles()}getImages(e,t,i){this.imageManager.getImages(t.icons,i),this._updateTilesForChangedImages();const r=e=>{e&&e.setDependencies(t.tileID.key,t.type,t.icons)};r(this._otherSourceCaches[t.source]),r(this._symbolSourceCaches[t.source])}getGlyphs(e,t,i){this.glyphManager.getGlyphs(t.stacks,i)}getResource(t,i,r){return e.makeRequest(i,r)}_getSourceCache(e){return this._otherSourceCaches[e]}_getLayerSourceCache(e){return"symbol"===e.type?this._symbolSourceCaches[e.source]:this._otherSourceCaches[e.source]}_getSourceCaches(e){const t=[];return this._otherSourceCaches[e]&&t.push(this._otherSourceCaches[e]),this._symbolSourceCaches[e]&&t.push(this._symbolSourceCaches[e]),t}_isSourceCacheLoaded(t){const i=this._getSourceCaches(t);return 0===i.length?(this.fire(new e.ErrorEvent(new Error(`There is no source with ID '${t}'`))),!1):i.every((e=>e.loaded()))}has3DLayers(){return this._num3DLayers>0}hasSymbolLayers(){return this._numSymbolLayers>0}hasCircleLayers(){return this._numCircleLayers>0}_clearWorkerCaches(){this.dispatcher.broadcast("clearCaches")}destroy(){this._clearWorkerCaches(),this.terrainSetForDrapingOnly()&&(delete this.terrain,delete this.stylesheet.terrain)}}Wt.getSourceType=function(e){return Ce[e]},Wt.setSourceType=function(e,t){Ce[e]=t},Wt.registerForPluginStateChange=e.registerForPluginStateChange;var Ht="\n#define EPSILON 0.0000001\n#define PI 3.141592653589793\n#define EXTENT 8192.0\n#define HALF_PI PI/2.0\n#define QUARTER_PI PI/4.0\n#define RAD_TO_DEG 180.0/PI\n#define DEG_TO_RAD PI/180.0\n#define GLOBE_RADIUS EXTENT/PI/2.0\n#ifdef FOG\nuniform mediump vec4 u_fog_color;uniform mediump vec2 u_fog_range;uniform mediump float u_fog_horizon_blend;varying vec3 v_fog_pos;float fog_range(float depth) {return (depth-u_fog_range[0])/(u_fog_range[1]-u_fog_range[0]);}float fog_horizon_blending(vec3 camera_dir) {float t=max(0.0,camera_dir.z/u_fog_horizon_blend);return u_fog_color.a*exp(-3.0*t*t);}float fog_opacity(float t) {const float decay=6.0;float falloff=1.0-min(1.0,exp(-decay*t));falloff*=falloff*falloff;return u_fog_color.a*min(1.0,1.00747*falloff);}\n#endif",Yt="attribute highp vec3 a_pos_3f;uniform lowp mat4 u_matrix;varying highp vec3 v_uv;void main() {const mat3 half_neg_pi_around_x=mat3(1.0,0.0, 0.0,0.0,0.0,-1.0,0.0,1.0, 0.0);v_uv=half_neg_pi_around_x*a_pos_3f;vec4 pos=u_matrix*vec4(a_pos_3f,1.0);gl_Position=pos.xyww;}";let Kt={},Jt={};Kt=ii("","\n#define ELEVATION_SCALE 7.0\n#define ELEVATION_OFFSET 450.0\n#ifdef PROJECTION_GLOBE_VIEW\nuniform vec3 u_tile_tl_up;uniform vec3 u_tile_tr_up;uniform vec3 u_tile_br_up;uniform vec3 u_tile_bl_up;uniform float u_tile_up_scale;vec3 elevationVector(vec2 pos) {vec2 uv=pos/EXTENT;vec3 up=normalize(mix(\nmix(u_tile_tl_up,u_tile_tr_up,uv.xxx),mix(u_tile_bl_up,u_tile_br_up,uv.xxx),uv.yyy));return up*u_tile_up_scale;}\n#else\nvec3 elevationVector(vec2 pos) { return vec3(0,0,1); }\n#endif\n#ifdef TERRAIN\n#ifdef TERRAIN_DEM_FLOAT_FORMAT\nuniform highp sampler2D u_dem;uniform highp sampler2D u_dem_prev;\n#else\nuniform sampler2D u_dem;uniform sampler2D u_dem_prev;\n#endif\nuniform vec4 u_dem_unpack;uniform vec2 u_dem_tl;uniform vec2 u_dem_tl_prev;uniform float u_dem_scale;uniform float u_dem_scale_prev;uniform float u_dem_size;uniform float u_dem_lerp;uniform float u_exaggeration;uniform float u_meter_to_dem;uniform mat4 u_label_plane_matrix_inv;uniform sampler2D u_depth;uniform vec2 u_depth_size_inv;vec4 tileUvToDemSample(vec2 uv,float dem_size,float dem_scale,vec2 dem_tl) {vec2 pos=dem_size*(uv*dem_scale+dem_tl)+1.0;vec2 f=fract(pos);return vec4((pos-f+0.5)/(dem_size+2.0),f);}float decodeElevation(vec4 v) {return dot(vec4(v.xyz*255.0,-1.0),u_dem_unpack);}float currentElevation(vec2 apos) {\n#ifdef TERRAIN_DEM_FLOAT_FORMAT\nvec2 pos=(u_dem_size*(apos/8192.0*u_dem_scale+u_dem_tl)+1.5)/(u_dem_size+2.0);return u_exaggeration*texture2D(u_dem,pos).a;\n#else\nfloat dd=1.0/(u_dem_size+2.0);vec4 r=tileUvToDemSample(apos/8192.0,u_dem_size,u_dem_scale,u_dem_tl);vec2 pos=r.xy;vec2 f=r.zw;float tl=decodeElevation(texture2D(u_dem,pos));\n#ifdef TERRAIN_DEM_NEAREST_FILTER\nreturn u_exaggeration*tl;\n#endif\nfloat tr=decodeElevation(texture2D(u_dem,pos+vec2(dd,0.0)));float bl=decodeElevation(texture2D(u_dem,pos+vec2(0.0,dd)));float br=decodeElevation(texture2D(u_dem,pos+vec2(dd,dd)));return u_exaggeration*mix(mix(tl,tr,f.x),mix(bl,br,f.x),f.y);\n#endif\n}float prevElevation(vec2 apos) {\n#ifdef TERRAIN_DEM_FLOAT_FORMAT\nvec2 pos=(u_dem_size*(apos/8192.0*u_dem_scale_prev+u_dem_tl_prev)+1.5)/(u_dem_size+2.0);return u_exaggeration*texture2D(u_dem_prev,pos).a;\n#else\nfloat dd=1.0/(u_dem_size+2.0);vec4 r=tileUvToDemSample(apos/8192.0,u_dem_size,u_dem_scale_prev,u_dem_tl_prev);vec2 pos=r.xy;vec2 f=r.zw;float tl=decodeElevation(texture2D(u_dem_prev,pos));float tr=decodeElevation(texture2D(u_dem_prev,pos+vec2(dd,0.0)));float bl=decodeElevation(texture2D(u_dem_prev,pos+vec2(0.0,dd)));float br=decodeElevation(texture2D(u_dem_prev,pos+vec2(dd,dd)));return u_exaggeration*mix(mix(tl,tr,f.x),mix(bl,br,f.x),f.y);\n#endif\n}\n#ifdef TERRAIN_VERTEX_MORPHING\nfloat elevation(vec2 apos) {float nextElevation=currentElevation(apos);float prevElevation=prevElevation(apos);return mix(prevElevation,nextElevation,u_dem_lerp);}\n#else\nfloat elevation(vec2 apos) {return currentElevation(apos);}\n#endif\nfloat unpack_depth(vec4 rgba_depth)\n{const vec4 bit_shift=vec4(1.0/(256.0*256.0*256.0),1.0/(256.0*256.0),1.0/256.0,1.0);return dot(rgba_depth,bit_shift)*2.0-1.0;}bool isOccluded(vec4 frag) {vec3 coord=frag.xyz/frag.w;float depth=unpack_depth(texture2D(u_depth,(coord.xy+1.0)*0.5));return coord.z > depth+0.0005;}float occlusionFade(vec4 frag) {vec3 coord=frag.xyz/frag.w;vec3 df=vec3(5.0*u_depth_size_inv,0.0);vec2 uv=0.5*coord.xy+0.5;vec4 depth=vec4(\nunpack_depth(texture2D(u_depth,uv-df.xz)),unpack_depth(texture2D(u_depth,uv+df.xz)),unpack_depth(texture2D(u_depth,uv-df.zy)),unpack_depth(texture2D(u_depth,uv+df.zy))\n);return dot(vec4(0.25),vec4(1.0)-clamp(300.0*(vec4(coord.z-0.001)-depth),0.0,1.0));}vec4 fourSample(vec2 pos,vec2 off) {\n#ifdef TERRAIN_DEM_FLOAT_FORMAT\nfloat tl=texture2D(u_dem,pos).a;float tr=texture2D(u_dem,pos+vec2(off.x,0.0)).a;float bl=texture2D(u_dem,pos+vec2(0.0,off.y)).a;float br=texture2D(u_dem,pos+off).a;\n#else\nvec4 demtl=vec4(texture2D(u_dem,pos).xyz*255.0,-1.0);float tl=dot(demtl,u_dem_unpack);vec4 demtr=vec4(texture2D(u_dem,pos+vec2(off.x,0.0)).xyz*255.0,-1.0);float tr=dot(demtr,u_dem_unpack);vec4 dembl=vec4(texture2D(u_dem,pos+vec2(0.0,off.y)).xyz*255.0,-1.0);float bl=dot(dembl,u_dem_unpack);vec4 dembr=vec4(texture2D(u_dem,pos+off).xyz*255.0,-1.0);float br=dot(dembr,u_dem_unpack);\n#endif\nreturn vec4(tl,tr,bl,br);}float flatElevation(vec2 pack) {vec2 apos=floor(pack/8.0);vec2 span=10.0*(pack-apos*8.0);vec2 uvTex=(apos-vec2(1.0,1.0))/8190.0;float size=u_dem_size+2.0;float dd=1.0/size;vec2 pos=u_dem_size*(uvTex*u_dem_scale+u_dem_tl)+1.0;vec2 f=fract(pos);pos=(pos-f+0.5)*dd;vec4 h=fourSample(pos,vec2(dd));float z=mix(mix(h.x,h.y,f.x),mix(h.z,h.w,f.x),f.y);vec2 w=floor(0.5*(span*u_meter_to_dem-1.0));vec2 d=dd*w;vec4 bounds=vec4(d,vec2(1.0)-d);h=fourSample(pos-d,2.0*d+vec2(dd));vec4 diff=abs(h.xzxy-h.ywzw);vec2 slope=min(vec2(0.25),u_meter_to_dem*0.5*(diff.xz+diff.yw)/(2.0*w+vec2(1.0)));vec2 fix=slope*span;float base=z+max(fix.x,fix.y);return u_exaggeration*base;}float elevationFromUint16(float word) {return u_exaggeration*(word/ELEVATION_SCALE-ELEVATION_OFFSET);}\n#else\nfloat elevation(vec2 pos) { return 0.0; }bool isOccluded(vec4 frag) { return false; }float occlusionFade(vec4 frag) { return 1.0; }\n#endif",!0),Jt=ii("#ifdef FOG\nuniform float u_fog_temporal_offset;float fog_opacity(vec3 pos) {float depth=length(pos);return fog_opacity(fog_range(depth));}vec3 fog_apply(vec3 color,vec3 pos) {float depth=length(pos);float opacity=fog_opacity(fog_range(depth));opacity*=fog_horizon_blending(pos/depth);return mix(color,u_fog_color.rgb,opacity);}vec4 fog_apply_from_vert(vec4 color,float fog_opac) {float alpha=EPSILON+color.a;color.rgb=mix(color.rgb/alpha,u_fog_color.rgb,fog_opac)*alpha;return color;}vec3 fog_apply_sky_gradient(vec3 camera_ray,vec3 sky_color) {float horizon_blend=fog_horizon_blending(normalize(camera_ray));return mix(sky_color,u_fog_color.rgb,horizon_blend);}vec4 fog_apply_premultiplied(vec4 color,vec3 pos) {float alpha=EPSILON+color.a;color.rgb=fog_apply(color.rgb/alpha,pos)*alpha;return color;}vec3 fog_dither(vec3 color) {vec2 dither_seed=gl_FragCoord.xy+u_fog_temporal_offset;return dither(color,dither_seed);}vec4 fog_dither(vec4 color) {return vec4(fog_dither(color.rgb),color.a);}\n#endif","#ifdef FOG\nuniform mat4 u_fog_matrix;vec3 fog_position(vec3 pos) {return (u_fog_matrix*vec4(pos,1.0)).xyz;}vec3 fog_position(vec2 pos) {return fog_position(vec3(pos,0.0));}float fog(vec3 pos) {float depth=length(pos);float opacity=fog_opacity(fog_range(depth));return opacity*fog_horizon_blending(pos/depth);}\n#endif",!0);const Qt=ii("\nhighp vec3 hash(highp vec2 p) {highp vec3 p3=fract(p.xyx*vec3(443.8975,397.2973,491.1871));p3+=dot(p3,p3.yxz+19.19);return fract((p3.xxy+p3.yzz)*p3.zyx);}vec3 dither(vec3 color,highp vec2 seed) {vec3 rnd=hash(seed)+hash(seed+0.59374)-0.5;return color+rnd/255.0;}\n#ifdef TERRAIN\nhighp vec4 pack_depth(highp float ndc_z) {highp float depth=ndc_z*0.5+0.5;const highp vec4 bit_shift=vec4(256.0*256.0*256.0,256.0*256.0,256.0,1.0);const highp vec4 bit_mask =vec4(0.0,1.0/256.0,1.0/256.0,1.0/256.0);highp vec4 res=fract(depth*bit_shift);res-=res.xxyz*bit_mask;return res;}\n#endif","\nfloat wrap(float n,float min,float max) {float d=max-min;float w=mod(mod(n-min,d)+d,d)+min;return (w==min) ? max : w;}\n#ifdef PROJECTION_GLOBE_VIEW\nvec3 mercator_tile_position(mat4 matrix,vec2 tile_anchor,vec3 tile_id,vec2 mercator_center) {\n#ifndef PROJECTED_POS_ON_VIEWPORT\nfloat tiles=tile_id.z;vec2 mercator=(tile_anchor/EXTENT+tile_id.xy)/tiles;mercator-=mercator_center;mercator.x=wrap(mercator.x,-0.5,0.5);vec4 mercator_tile=vec4(mercator.xy*EXTENT,EXTENT/(2.0*PI),1.0);mercator_tile=matrix*mercator_tile;return mercator_tile.xyz;\n#else\nreturn vec3(0.0);\n#endif\n}vec3 mix_globe_mercator(vec3 globe,vec3 mercator,float t) {return mix(globe,mercator,t);}mat3 globe_mercator_surface_vectors(vec3 pos_normal,vec3 up_dir,float zoom_transition) {vec3 normal=zoom_transition==0.0 ? pos_normal : normalize(mix(pos_normal,up_dir,zoom_transition));vec3 xAxis=normalize(vec3(normal.z,0.0,-normal.x));vec3 yAxis=normalize(cross(normal,xAxis));return mat3(xAxis,yAxis,normal);}\n#endif\nvec2 unpack_float(const float packedValue) {int packedIntValue=int(packedValue);int v0=packedIntValue/256;return vec2(v0,packedIntValue-v0*256);}vec2 unpack_opacity(const float packedOpacity) {int intOpacity=int(packedOpacity)/2;return vec2(float(intOpacity)/127.0,mod(packedOpacity,2.0));}vec4 decode_color(const vec2 encodedColor) {return vec4(\nunpack_float(encodedColor[0])/255.0,unpack_float(encodedColor[1])/255.0\n);}float unpack_mix_vec2(const vec2 packedValue,const float t) {return mix(packedValue[0],packedValue[1],t);}vec4 unpack_mix_color(const vec4 packedColors,const float t) {vec4 minColor=decode_color(vec2(packedColors[0],packedColors[1]));vec4 maxColor=decode_color(vec2(packedColors[2],packedColors[3]));return mix(minColor,maxColor,t);}vec2 get_pattern_pos(const vec2 pixel_coord_upper,const vec2 pixel_coord_lower,const vec2 pattern_size,const float tile_units_to_pixels,const vec2 pos) {vec2 offset=mod(mod(mod(pixel_coord_upper,pattern_size)*256.0,pattern_size)*256.0+pixel_coord_lower,pattern_size);return (tile_units_to_pixels*pos+offset)/pattern_size;}const vec4 AWAY=vec4(-1000.0,-1000.0,-1000.0,1);//Normalized device coordinate that is not rendered."),ei=Ht;var ti={background:ii("uniform vec4 u_color;uniform float u_opacity;void main() {vec4 out_color=u_color;\n#ifdef FOG\nout_color=fog_dither(fog_apply_premultiplied(out_color,v_fog_pos));\n#endif\ngl_FragColor=out_color*u_opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","attribute vec2 a_pos;uniform mat4 u_matrix;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);\n#ifdef FOG\nv_fog_pos=fog_position(a_pos);\n#endif\n}"),backgroundPattern:ii("uniform vec2 u_pattern_tl_a;uniform vec2 u_pattern_br_a;uniform vec2 u_pattern_tl_b;uniform vec2 u_pattern_br_b;uniform vec2 u_texsize;uniform float u_mix;uniform float u_opacity;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;void main() {vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(u_pattern_tl_a/u_texsize,u_pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(u_pattern_tl_b/u_texsize,u_pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);vec4 out_color=mix(color1,color2,u_mix);\n#ifdef FOG\nout_color=fog_dither(fog_apply_premultiplied(out_color,v_fog_pos));\n#endif\ngl_FragColor=out_color*u_opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec2 u_pattern_size_a;uniform vec2 u_pattern_size_b;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_scale_a;uniform float u_scale_b;uniform float u_tile_units_to_pixels;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_a*u_pattern_size_a,u_tile_units_to_pixels,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_b*u_pattern_size_b,u_tile_units_to_pixels,a_pos);\n#ifdef FOG\nv_fog_pos=fog_position(a_pos);\n#endif\n}"),circle:ii("varying vec3 v_data;varying float v_visibility;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define mediump float radius\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define highp vec4 stroke_color\n#pragma mapbox: define mediump float stroke_width\n#pragma mapbox: define lowp float stroke_opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize mediump float radius\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize highp vec4 stroke_color\n#pragma mapbox: initialize mediump float stroke_width\n#pragma mapbox: initialize lowp float stroke_opacity\nvec2 extrude=v_data.xy;float extrude_length=length(extrude);lowp float antialiasblur=v_data.z;float antialiased_blur=-max(blur,antialiasblur);float opacity_t=smoothstep(0.0,antialiased_blur,extrude_length-1.0);float color_t=stroke_width < 0.01 ? 0.0 : smoothstep(\nantialiased_blur,0.0,extrude_length-radius/(radius+stroke_width)\n);vec4 out_color=mix(color*opacity,stroke_color*stroke_opacity,color_t);\n#ifdef FOG\nout_color=fog_apply_premultiplied(out_color,v_fog_pos);\n#endif\ngl_FragColor=out_color*(v_visibility*opacity_t);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","#define NUM_VISIBILITY_RINGS 2\n#define INV_SQRT2 0.70710678\n#define ELEVATION_BIAS 0.0001\n#define NUM_SAMPLES_PER_RING 16\nuniform mat4 u_matrix;uniform mat2 u_extrude_scale;uniform lowp float u_device_pixel_ratio;uniform highp float u_camera_to_center_distance;attribute vec2 a_pos;\n#ifdef PROJECTION_GLOBE_VIEW\nattribute vec3 a_pos_3;attribute vec3 a_pos_normal_3;attribute float a_scale;uniform mat4 u_inv_rot_matrix;uniform vec2 u_merc_center;uniform vec3 u_tile_id;uniform float u_zoom_transition;uniform vec3 u_up_dir;\n#endif\nvarying vec3 v_data;varying float v_visibility;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define mediump float radius\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define highp vec4 stroke_color\n#pragma mapbox: define mediump float stroke_width\n#pragma mapbox: define lowp float stroke_opacity\nvec2 calc_offset(vec2 extrusion,float radius,float stroke_width, float view_scale) {return extrusion*(radius+stroke_width)*u_extrude_scale*view_scale;}float cantilevered_elevation(vec2 pos,float radius,float stroke_width,float view_scale) {vec2 c1=pos+calc_offset(vec2(-1,-1),radius,stroke_width,view_scale);vec2 c2=pos+calc_offset(vec2(1,-1),radius,stroke_width,view_scale);vec2 c3=pos+calc_offset(vec2(1,1),radius,stroke_width,view_scale);vec2 c4=pos+calc_offset(vec2(-1,1),radius,stroke_width,view_scale);float h1=elevation(c1)+ELEVATION_BIAS;float h2=elevation(c2)+ELEVATION_BIAS;float h3=elevation(c3)+ELEVATION_BIAS;float h4=elevation(c4)+ELEVATION_BIAS;return max(h4,max(h3,max(h1,h2)));}float circle_elevation(vec2 pos) {\n#if defined(TERRAIN)\nreturn elevation(pos)+ELEVATION_BIAS;\n#else\nreturn 0.0;\n#endif\n}vec4 project_vertex(vec2 extrusion,vec4 world_center,vec4 projected_center,float radius,float stroke_width, float view_scale,mat3 surface_vectors) {vec2 sample_offset=calc_offset(extrusion,radius,stroke_width,view_scale);\n#ifdef PITCH_WITH_MAP\n#ifdef PROJECTION_GLOBE_VIEW\nreturn u_matrix*( world_center+vec4(sample_offset.x*surface_vectors[0]+sample_offset.y*surface_vectors[1],0) );\n#else\nreturn u_matrix*( world_center+vec4(sample_offset,0,0) );\n#endif\n#else\nreturn projected_center+vec4(sample_offset,0,0);\n#endif\n}float get_sample_step() {\n#ifdef PITCH_WITH_MAP\nreturn 2.0*PI/float(NUM_SAMPLES_PER_RING);\n#else\nreturn PI/float(NUM_SAMPLES_PER_RING);\n#endif\n}void main(void) {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize mediump float radius\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize highp vec4 stroke_color\n#pragma mapbox: initialize mediump float stroke_width\n#pragma mapbox: initialize lowp float stroke_opacity\nvec2 extrude=vec2(mod(a_pos,2.0)*2.0-1.0);vec2 circle_center=floor(a_pos*0.5);\n#ifdef PROJECTION_GLOBE_VIEW\nvec2 scaled_extrude=extrude*a_scale;vec3 pos_normal_3=a_pos_normal_3/16384.0;mat3 surface_vectors=globe_mercator_surface_vectors(pos_normal_3,u_up_dir,u_zoom_transition);vec3 surface_extrusion=scaled_extrude.x*surface_vectors[0]+scaled_extrude.y*surface_vectors[1];vec3 globe_elevation=elevationVector(circle_center)*circle_elevation(circle_center);vec3 globe_pos=a_pos_3+surface_extrusion+globe_elevation;vec3 mercator_elevation=u_up_dir*u_tile_up_scale*circle_elevation(circle_center);vec3 merc_pos=mercator_tile_position(u_inv_rot_matrix,circle_center,u_tile_id,u_merc_center)+surface_extrusion+mercator_elevation;vec3 pos=mix_globe_mercator(globe_pos,merc_pos,u_zoom_transition);vec4 world_center=vec4(pos,1);\n#else \nmat3 surface_vectors=mat3(1.0);float height=circle_elevation(circle_center);vec4 world_center=vec4(circle_center,height,1);\n#endif\nvec4 projected_center=u_matrix*world_center;float view_scale=0.0;\n#ifdef PITCH_WITH_MAP\n#ifdef SCALE_WITH_MAP\nview_scale=1.0;\n#else\nview_scale=projected_center.w/u_camera_to_center_distance;\n#endif\n#else\n#ifdef SCALE_WITH_MAP\nview_scale=u_camera_to_center_distance;\n#else\nview_scale=projected_center.w;\n#endif\n#endif\n#if defined(SCALE_WITH_MAP) && defined(PROJECTION_GLOBE_VIEW)\nview_scale*=a_scale;\n#endif\ngl_Position=project_vertex(extrude,world_center,projected_center,radius,stroke_width,view_scale,surface_vectors);float visibility=0.0;\n#ifdef TERRAIN\nfloat step=get_sample_step();\n#ifdef PITCH_WITH_MAP\nfloat cantilevered_height=cantilevered_elevation(circle_center,radius,stroke_width,view_scale);vec4 occlusion_world_center=vec4(circle_center,cantilevered_height,1);vec4 occlusion_projected_center=u_matrix*occlusion_world_center;\n#else\nvec4 occlusion_world_center=world_center;vec4 occlusion_projected_center=projected_center;\n#endif\nfor(int ring=0; ring < NUM_VISIBILITY_RINGS; ring++) {float scale=(float(ring)+1.0)/float(NUM_VISIBILITY_RINGS);for(int i=0; i < NUM_SAMPLES_PER_RING; i++) {vec2 extrusion=vec2(cos(step*float(i)),-sin(step*float(i)))*scale;vec4 frag_pos=project_vertex(extrusion,occlusion_world_center,occlusion_projected_center,radius,stroke_width,view_scale,surface_vectors);visibility+=float(!isOccluded(frag_pos));}}visibility/=float(NUM_VISIBILITY_RINGS)*float(NUM_SAMPLES_PER_RING);\n#else\nvisibility=1.0;\n#endif\n#ifdef PROJECTION_GLOBE_VIEW\nvisibility=1.0;\n#endif\nv_visibility=visibility;lowp float antialiasblur=1.0/u_device_pixel_ratio/(radius+stroke_width);v_data=vec3(extrude.x,extrude.y,antialiasblur);\n#ifdef FOG\nv_fog_pos=fog_position(world_center.xyz);\n#endif\n}"),clippingMask:ii("void main() {gl_FragColor=vec4(1.0);}","attribute vec2 a_pos;uniform mat4 u_matrix;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);}"),heatmap:ii("uniform highp float u_intensity;varying vec2 v_extrude;\n#pragma mapbox: define highp float weight\n#define GAUSS_COEF 0.3989422804014327\nvoid main() {\n#pragma mapbox: initialize highp float weight\nfloat d=-0.5*3.0*3.0*dot(v_extrude,v_extrude);float val=weight*u_intensity*GAUSS_COEF*exp(d);gl_FragColor=vec4(val,1.0,1.0,1.0);\n#ifdef FOG\ngl_FragColor.r*=pow(1.0-fog_opacity(v_fog_pos),2.0);\n#endif\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform float u_extrude_scale;uniform float u_opacity;uniform float u_intensity;attribute vec2 a_pos;\n#ifdef PROJECTION_GLOBE_VIEW\nattribute vec3 a_pos_3;attribute vec3 a_pos_normal_3;attribute float a_scale;uniform mat4 u_inv_rot_matrix;uniform vec2 u_merc_center;uniform vec3 u_tile_id;uniform float u_zoom_transition;uniform vec3 u_up_dir;\n#endif\nvarying vec2 v_extrude;\n#pragma mapbox: define highp float weight\n#pragma mapbox: define mediump float radius\nconst highp float ZERO=1.0/255.0/16.0;\n#define GAUSS_COEF 0.3989422804014327\nvoid main(void) {\n#pragma mapbox: initialize highp float weight\n#pragma mapbox: initialize mediump float radius\nvec2 unscaled_extrude=vec2(mod(a_pos,2.0)*2.0-1.0);float S=sqrt(-2.0*log(ZERO/weight/u_intensity/GAUSS_COEF))/3.0;v_extrude=S*unscaled_extrude;vec2 extrude=v_extrude*radius*u_extrude_scale;vec2 tilePos=floor(a_pos*0.5);\n#ifdef PROJECTION_GLOBE_VIEW\nextrude*=a_scale;vec3 pos_normal_3=a_pos_normal_3/16384.0;mat3 surface_vectors=globe_mercator_surface_vectors(pos_normal_3,u_up_dir,u_zoom_transition);vec3 surface_extrusion=extrude.x*surface_vectors[0]+extrude.y*surface_vectors[1];vec3 globe_elevation=elevationVector(tilePos)*elevation(tilePos);vec3 globe_pos=a_pos_3+surface_extrusion+globe_elevation;vec3 mercator_elevation=u_up_dir*u_tile_up_scale*elevation(tilePos);vec3 merc_pos=mercator_tile_position(u_inv_rot_matrix,tilePos,u_tile_id,u_merc_center)+surface_extrusion+mercator_elevation;vec3 pos=mix_globe_mercator(globe_pos,merc_pos,u_zoom_transition);\n#else\nvec3 pos=vec3(tilePos+extrude,elevation(tilePos));\n#endif\ngl_Position=u_matrix*vec4(pos,1);\n#ifdef FOG\nv_fog_pos=fog_position(pos);\n#endif\n}"),heatmapTexture:ii("uniform sampler2D u_image;uniform sampler2D u_color_ramp;uniform float u_opacity;varying vec2 v_pos;void main() {float t=texture2D(u_image,v_pos).r;vec4 color=texture2D(u_color_ramp,vec2(t,0.5));gl_FragColor=color*u_opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(0.0);\n#endif\n}","attribute vec2 a_pos;varying vec2 v_pos;void main() {gl_Position=vec4(a_pos,0,1);v_pos=a_pos*0.5+0.5;}"),collisionBox:ii("varying float v_placed;varying float v_notUsed;void main() {vec4 red =vec4(1.0,0.0,0.0,1.0);vec4 blue=vec4(0.0,0.0,1.0,0.5);gl_FragColor =mix(red,blue,step(0.5,v_placed))*0.5;gl_FragColor*=mix(1.0,0.1,step(0.5,v_notUsed));}","attribute vec3 a_pos;attribute vec2 a_anchor_pos;attribute vec2 a_extrude;attribute vec2 a_placed;attribute vec2 a_shift;attribute float a_size_scale;attribute vec2 a_padding;uniform mat4 u_matrix;uniform vec2 u_extrude_scale;uniform float u_camera_to_center_distance;varying float v_placed;varying float v_notUsed;void main() {vec4 projectedPoint=u_matrix*vec4(a_pos+elevationVector(a_anchor_pos)*elevation(a_anchor_pos),1);highp float camera_to_anchor_distance=projectedPoint.w;highp float collision_perspective_ratio=clamp(\n0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,1.5);gl_Position=projectedPoint;gl_Position.xy+=(a_extrude*a_size_scale+a_shift+a_padding)*u_extrude_scale*gl_Position.w*collision_perspective_ratio;v_placed=a_placed.x;v_notUsed=a_placed.y;}"),collisionCircle:ii("varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;void main() {float alpha=0.5*min(v_perspective_ratio,1.0);float stroke_radius=0.9*max(v_perspective_ratio,1.0);float distance_to_center=length(v_extrude);float distance_to_edge=abs(distance_to_center-v_radius);float opacity_t=smoothstep(-stroke_radius,0.0,-distance_to_edge);vec4 color=mix(vec4(0.0,0.0,1.0,0.5),vec4(1.0,0.0,0.0,1.0),v_collision);gl_FragColor=color*alpha*opacity_t;}","attribute vec2 a_pos_2f;attribute float a_radius;attribute vec2 a_flags;uniform mat4 u_matrix;uniform mat4 u_inv_matrix;uniform vec2 u_viewport_size;uniform float u_camera_to_center_distance;varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;vec3 toTilePosition(vec2 screenPos) {vec4 rayStart=u_inv_matrix*vec4(screenPos,-1.0,1.0);vec4 rayEnd =u_inv_matrix*vec4(screenPos, 1.0,1.0);rayStart.xyz/=rayStart.w;rayEnd.xyz /=rayEnd.w;highp float t=(0.0-rayStart.z)/(rayEnd.z-rayStart.z);return mix(rayStart.xyz,rayEnd.xyz,t);}void main() {vec2 quadCenterPos=a_pos_2f;float radius=a_radius;float collision=a_flags.x;float vertexIdx=a_flags.y;vec2 quadVertexOffset=vec2(\nmix(-1.0,1.0,float(vertexIdx >=2.0)),mix(-1.0,1.0,float(vertexIdx >=1.0 && vertexIdx <=2.0)));vec2 quadVertexExtent=quadVertexOffset*radius;vec3 tilePos=toTilePosition(quadCenterPos);vec4 clipPos=u_matrix*vec4(tilePos,1.0);highp float camera_to_anchor_distance=clipPos.w;highp float collision_perspective_ratio=clamp(\n0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);float padding_factor=1.2;v_radius=radius;v_extrude=quadVertexExtent*padding_factor;v_perspective_ratio=collision_perspective_ratio;v_collision=collision;gl_Position=vec4(clipPos.xyz/clipPos.w,1.0)+vec4(quadVertexExtent*padding_factor/u_viewport_size*2.0,0.0,0.0);}"),debug:ii("uniform highp vec4 u_color;uniform sampler2D u_overlay;varying vec2 v_uv;void main() {vec4 overlay_color=texture2D(u_overlay,v_uv);gl_FragColor=mix(u_color,overlay_color,overlay_color.a);}","attribute vec2 a_pos;\n#ifdef PROJECTION_GLOBE_VIEW\nattribute vec3 a_pos_3;\n#endif\nvarying vec2 v_uv;uniform mat4 u_matrix;uniform float u_overlay_scale;void main() {float h=elevation(a_pos);v_uv=a_pos/8192.0;\n#ifdef PROJECTION_GLOBE_VIEW\ngl_Position=u_matrix*vec4(a_pos_3+elevationVector(a_pos)*h,1);\n#else\ngl_Position=u_matrix*vec4(a_pos*u_overlay_scale,h,1);\n#endif\n}"),fill:ii("#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float opacity\nvec4 out_color=color;\n#ifdef FOG\nout_color=fog_dither(fog_apply_premultiplied(out_color,v_fog_pos));\n#endif\ngl_FragColor=out_color*opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","attribute vec2 a_pos;uniform mat4 u_matrix;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float opacity\ngl_Position=u_matrix*vec4(a_pos,0,1);\n#ifdef FOG\nv_fog_pos=fog_position(a_pos);\n#endif\n}"),fillOutline:ii("varying vec2 v_pos;\n#pragma mapbox: define highp vec4 outline_color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 outline_color\n#pragma mapbox: initialize lowp float opacity\nfloat dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);vec4 out_color=outline_color;\n#ifdef FOG\nout_color=fog_dither(fog_apply_premultiplied(out_color,v_fog_pos));\n#endif\ngl_FragColor=out_color*(alpha*opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","attribute vec2 a_pos;uniform mat4 u_matrix;uniform vec2 u_world;varying vec2 v_pos;\n#pragma mapbox: define highp vec4 outline_color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 outline_color\n#pragma mapbox: initialize lowp float opacity\ngl_Position=u_matrix*vec4(a_pos,0,1);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;\n#ifdef FOG\nv_fog_pos=fog_position(a_pos);\n#endif\n}"),fillOutlinePattern:ii("uniform vec2 u_texsize;uniform sampler2D u_image;uniform float u_fade;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);float dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);vec4 out_color=mix(color1,color2,u_fade);\n#ifdef FOG\nout_color=fog_dither(fog_apply_premultiplied(out_color,v_fog_pos));\n#endif\ngl_FragColor=out_color*(alpha*opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec2 u_world;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;gl_Position=u_matrix*vec4(a_pos,0,1);vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,a_pos);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;\n#ifdef FOG\nv_fog_pos=fog_position(a_pos);\n#endif\n}"),fillPattern:ii("uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);vec4 out_color=mix(color1,color2,u_fade);\n#ifdef FOG\nout_color=fog_dither(fog_apply_premultiplied(out_color,v_fog_pos));\n#endif\ngl_FragColor=out_color*opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileZoomRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileZoomRatio,a_pos);\n#ifdef FOG\nv_fog_pos=fog_position(a_pos);\n#endif\n}"),fillExtrusion:ii("varying vec4 v_color;void main() {vec4 color=v_color;\n#ifdef FOG\ncolor=fog_dither(fog_apply_premultiplied(color,v_fog_pos));\n#endif\ngl_FragColor=color;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;uniform float u_vertical_gradient;uniform lowp float u_opacity;attribute vec4 a_pos_normal_ed;attribute vec2 a_centroid_pos;\n#ifdef PROJECTION_GLOBE_VIEW\nattribute vec3 a_pos_3;attribute vec3 a_pos_normal_3;uniform mat4 u_inv_rot_matrix;uniform vec2 u_merc_center;uniform vec3 u_tile_id;uniform float u_zoom_transition;uniform vec3 u_up_dir;uniform float u_height_lift;\n#endif\nvarying vec4 v_color;\n#pragma mapbox: define highp float base\n#pragma mapbox: define highp float height\n#pragma mapbox: define highp vec4 color\nvoid main() {\n#pragma mapbox: initialize highp float base\n#pragma mapbox: initialize highp float height\n#pragma mapbox: initialize highp vec4 color\nvec3 pos_nx=floor(a_pos_normal_ed.xyz*0.5);mediump vec3 top_up_ny=a_pos_normal_ed.xyz-2.0*pos_nx;float x_normal=pos_nx.z/8192.0;vec3 normal=top_up_ny.y==1.0 ? vec3(0.0,0.0,1.0) : normalize(vec3(x_normal,(2.0*top_up_ny.z-1.0)*(1.0-abs(x_normal)),0.0));base=max(0.0,base);height=max(0.0,height);float t=top_up_ny.x;vec2 centroid_pos=vec2(0.0);\n#if defined(HAS_CENTROID) || defined(TERRAIN)\ncentroid_pos=a_centroid_pos;\n#endif\n#ifdef TERRAIN\nbool flat_roof=centroid_pos.x !=0.0 && t > 0.0;float ele=elevation(pos_nx.xy);float c_ele=flat_roof ? centroid_pos.y==0.0 ? elevationFromUint16(centroid_pos.x) : flatElevation(centroid_pos) : ele;float h=flat_roof ? max(c_ele+height,ele+base+2.0) : ele+(t > 0.0 ? height : base==0.0 ?-5.0 : base);vec3 pos=vec3(pos_nx.xy,h);\n#else\nvec3 pos=vec3(pos_nx.xy,t > 0.0 ? height : base);\n#endif\n#ifdef PROJECTION_GLOBE_VIEW\nfloat lift=float((t+base) > 0.0)*u_height_lift;vec3 globe_normal=normalize(mix(a_pos_normal_3/16384.0,u_up_dir,u_zoom_transition));vec3 globe_pos=a_pos_3+globe_normal*(u_tile_up_scale*(pos.z+lift));vec3 merc_pos=mercator_tile_position(u_inv_rot_matrix,pos.xy,u_tile_id,u_merc_center)+u_up_dir*u_tile_up_scale*pos.z;pos=mix_globe_mercator(globe_pos,merc_pos,u_zoom_transition);\n#endif\nfloat hidden=float(centroid_pos.x==0.0 && centroid_pos.y==1.0);gl_Position=mix(u_matrix*vec4(pos,1),AWAY,hidden);float colorvalue=color.r*0.2126+color.g*0.7152+color.b*0.0722;v_color=vec4(0.0,0.0,0.0,1.0);vec4 ambientlight=vec4(0.03,0.03,0.03,1.0);color+=ambientlight;float directional=clamp(dot(normal,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((1.0-colorvalue+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=(\n(1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_color.rgb+=clamp(color.rgb*directional*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));v_color*=u_opacity;\n#ifdef FOG\nv_fog_pos=fog_position(pos);\n#endif\n}"),fillExtrusionPattern:ii("uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;\n#pragma mapbox: define lowp float base\n#pragma mapbox: define lowp float height\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float base\n#pragma mapbox: initialize lowp float height\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);vec4 out_color=mix(color1,color2,u_fade);out_color=out_color*v_lighting;\n#ifdef FOG\nout_color=fog_dither(fog_apply_premultiplied(out_color,v_fog_pos));\n#endif\ngl_FragColor=out_color;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_height_factor;uniform vec3 u_scale;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;attribute vec4 a_pos_normal_ed;attribute vec2 a_centroid_pos;\n#ifdef PROJECTION_GLOBE_VIEW\nattribute vec3 a_pos_3;attribute vec3 a_pos_normal_3;uniform mat4 u_inv_rot_matrix;uniform vec2 u_merc_center;uniform vec3 u_tile_id;uniform float u_zoom_transition;uniform vec3 u_up_dir;uniform float u_height_lift;\n#endif\nvarying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;\n#pragma mapbox: define lowp float base\n#pragma mapbox: define lowp float height\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float base\n#pragma mapbox: initialize lowp float height\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec3 pos_nx=floor(a_pos_normal_ed.xyz*0.5);mediump vec3 top_up_ny=a_pos_normal_ed.xyz-2.0*pos_nx;float x_normal=pos_nx.z/8192.0;vec3 normal=top_up_ny.y==1.0 ? vec3(0.0,0.0,1.0) : normalize(vec3(x_normal,(2.0*top_up_ny.z-1.0)*(1.0-abs(x_normal)),0.0));float edgedistance=a_pos_normal_ed.w;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;base=max(0.0,base);height=max(0.0,height);float t=top_up_ny.x;float z=t > 0.0 ? height : base;vec2 centroid_pos=vec2(0.0);\n#if defined(HAS_CENTROID) || defined(TERRAIN)\ncentroid_pos=a_centroid_pos;\n#endif\n#ifdef TERRAIN\nbool flat_roof=centroid_pos.x !=0.0 && t > 0.0;float ele=elevation(pos_nx.xy);float c_ele=flat_roof ? centroid_pos.y==0.0 ? elevationFromUint16(centroid_pos.x) : flatElevation(centroid_pos) : ele;float h=flat_roof ? max(c_ele+height,ele+base+2.0) : ele+(t > 0.0 ? height : base==0.0 ?-5.0 : base);vec3 p=vec3(pos_nx.xy,h);\n#else\nvec3 p=vec3(pos_nx.xy,z);\n#endif\n#ifdef PROJECTION_GLOBE_VIEW\nfloat lift=float((t+base) > 0.0)*u_height_lift;vec3 globe_normal=normalize(mix(a_pos_normal_3/16384.0,u_up_dir,u_zoom_transition));vec3 globe_pos=a_pos_3+globe_normal*(u_tile_up_scale*(p.z+lift));vec3 merc_pos=mercator_tile_position(u_inv_rot_matrix,p.xy,u_tile_id,u_merc_center)+u_up_dir*u_tile_up_scale*p.z;p=mix_globe_mercator(globe_pos,merc_pos,u_zoom_transition);\n#endif\nfloat hidden=float(centroid_pos.x==0.0 && centroid_pos.y==1.0);gl_Position=mix(u_matrix*vec4(p,1),AWAY,hidden);vec2 pos=normal.z==1.0\n? pos_nx.xy\n: vec2(edgedistance,z*u_height_factor);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,pos);v_lighting=vec4(0.0,0.0,0.0,1.0);float directional=clamp(dot(normal,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((0.5+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=(\n(1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_lighting.rgb+=clamp(directional*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));v_lighting*=u_opacity;\n#ifdef FOG\nv_fog_pos=fog_position(p);\n#endif\n}"),hillshadePrepare:ii("#ifdef GL_ES\nprecision highp float;\n#endif\nuniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_dimension;uniform float u_zoom;uniform vec4 u_unpack;float getElevation(vec2 coord) {\n#ifdef TERRAIN_DEM_FLOAT_FORMAT\nreturn texture2D(u_image,coord).a/4.0;\n#else\nvec4 data=texture2D(u_image,coord)*255.0;data.a=-1.0;return dot(data,u_unpack)/4.0;\n#endif\n}void main() {vec2 epsilon=1.0/u_dimension;float a=getElevation(v_pos+vec2(-epsilon.x,-epsilon.y));float b=getElevation(v_pos+vec2(0,-epsilon.y));float c=getElevation(v_pos+vec2(epsilon.x,-epsilon.y));float d=getElevation(v_pos+vec2(-epsilon.x,0));float e=getElevation(v_pos);float f=getElevation(v_pos+vec2(epsilon.x,0));float g=getElevation(v_pos+vec2(-epsilon.x,epsilon.y));float h=getElevation(v_pos+vec2(0,epsilon.y));float i=getElevation(v_pos+vec2(epsilon.x,epsilon.y));float exaggerationFactor=u_zoom < 2.0 ? 0.4 : u_zoom < 4.5 ? 0.35 : 0.3;float exaggeration=u_zoom < 15.0 ? (u_zoom-15.0)*exaggerationFactor : 0.0;vec2 deriv=vec2(\n(c+f+f+i)-(a+d+d+g),(g+h+h+i)-(a+b+b+c)\n)/pow(2.0,exaggeration+(19.2562-u_zoom));gl_FragColor=clamp(vec4(\nderiv.x/2.0+0.5,deriv.y/2.0+0.5,1.0,1.0),0.0,1.0);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec2 u_dimension;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);highp vec2 epsilon=1.0/u_dimension;float scale=(u_dimension.x-2.0)/u_dimension.x;v_pos=(a_texture_pos/8192.0)*scale+epsilon;}"),hillshade:ii("uniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_latrange;uniform vec2 u_light;uniform vec4 u_shadow;uniform vec4 u_highlight;uniform vec4 u_accent;void main() {vec4 pixel=texture2D(u_image,v_pos);vec2 deriv=((pixel.rg*2.0)-1.0);float scaleFactor=cos(radians((u_latrange[0]-u_latrange[1])*(1.0-v_pos.y)+u_latrange[1]));float slope=atan(1.25*length(deriv)/scaleFactor);float aspect=deriv.x !=0.0 ? atan(deriv.y,-deriv.x) : PI/2.0*(deriv.y > 0.0 ? 1.0 :-1.0);float intensity=u_light.x;float azimuth=u_light.y+PI;float base=1.875-intensity*1.75;float maxValue=0.5*PI;float scaledSlope=intensity !=0.5 ? ((pow(base,slope)-1.0)/(pow(base,maxValue)-1.0))*maxValue : slope;float accent=cos(scaledSlope);vec4 accent_color=(1.0-accent)*u_accent*clamp(intensity*2.0,0.0,1.0);float shade=abs(mod((aspect+azimuth)/PI+0.5,2.0)-1.0);vec4 shade_color=mix(u_shadow,u_highlight,shade)*sin(scaledSlope)*clamp(intensity*2.0,0.0,1.0);gl_FragColor=accent_color*(1.0-shade_color.a)+shade_color;\n#ifdef FOG\ngl_FragColor=fog_dither(fog_apply_premultiplied(gl_FragColor,v_fog_pos));\n#endif\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=a_texture_pos/8192.0;\n#ifdef FOG\nv_fog_pos=fog_position(a_pos);\n#endif\n}"),line:ii("uniform lowp float u_device_pixel_ratio;uniform float u_alpha_discard_threshold;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;\n#ifdef RENDER_LINE_DASH\nuniform sampler2D u_dash_image;uniform float u_mix;uniform vec3 u_scale;varying vec2 v_tex_a;varying vec2 v_tex_b;\n#endif\n#ifdef RENDER_LINE_GRADIENT\nuniform sampler2D u_gradient_image;varying highp vec2 v_uv;\n#endif\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float floorwidth\n#pragma mapbox: define lowp vec4 dash_from\n#pragma mapbox: define lowp vec4 dash_to\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float floorwidth\n#pragma mapbox: initialize lowp vec4 dash_from\n#pragma mapbox: initialize lowp vec4 dash_to\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);\n#ifdef RENDER_LINE_DASH\nfloat sdfdist_a=texture2D(u_dash_image,v_tex_a).a;float sdfdist_b=texture2D(u_dash_image,v_tex_b).a;float sdfdist=mix(sdfdist_a,sdfdist_b,u_mix);float sdfwidth=min(dash_from.z*u_scale.y,dash_to.z*u_scale.z);float sdfgamma=1.0/(2.0*u_device_pixel_ratio)/sdfwidth;alpha*=smoothstep(0.5-sdfgamma/floorwidth,0.5+sdfgamma/floorwidth,sdfdist);\n#endif\n#ifdef RENDER_LINE_GRADIENT\nvec4 out_color=texture2D(u_gradient_image,v_uv);\n#else\nvec4 out_color=color;\n#endif\n#ifdef FOG\nout_color=fog_dither(fog_apply_premultiplied(out_color,v_fog_pos));\n#endif\n#ifdef RENDER_LINE_ALPHA_DISCARD\nif (alpha < u_alpha_discard_threshold) {discard;}\n#endif\ngl_FragColor=out_color*(alpha*opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","\n#define EXTRUDE_SCALE 0.015873016\nattribute vec2 a_pos_normal;attribute vec4 a_data;\n#ifdef RENDER_LINE_GRADIENT\nattribute vec3 a_packed;\n#else\nattribute float a_linesofar;\n#endif\nuniform mat4 u_matrix;uniform mat2 u_pixels_to_tile_units;uniform vec2 u_units_to_pixels;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;\n#ifdef RENDER_LINE_DASH\nuniform vec2 u_texsize;uniform mediump vec3 u_scale;varying vec2 v_tex_a;varying vec2 v_tex_b;\n#endif\n#ifdef RENDER_LINE_GRADIENT\nuniform float u_image_height;varying highp vec2 v_uv;\n#endif\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float floorwidth\n#pragma mapbox: define lowp vec4 dash_from\n#pragma mapbox: define lowp vec4 dash_to\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float width\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float floorwidth\n#pragma mapbox: initialize lowp vec4 dash_from\n#pragma mapbox: initialize lowp vec4 dash_to\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float width\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*EXTRUDE_SCALE;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*EXTRUDE_SCALE*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist*u_pixels_to_tile_units,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2*u_pixels_to_tile_units,0.0,1.0)+projected_extrude;\n#ifndef RENDER_TO_TEXTURE\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\n#else\nv_gamma_scale=1.0;\n#endif\n#ifdef RENDER_LINE_GRADIENT\nfloat a_uv_x=a_packed[0];float a_split_index=a_packed[1];float a_linesofar=a_packed[2];highp float texel_height=1.0/u_image_height;highp float half_texel_height=0.5*texel_height;v_uv=vec2(a_uv_x,a_split_index*texel_height-half_texel_height);\n#endif\n#ifdef RENDER_LINE_DASH\nfloat tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;float scaleA=dash_from.z==0.0 ? 0.0 : tileZoomRatio/(dash_from.z*fromScale);float scaleB=dash_to.z==0.0 ? 0.0 : tileZoomRatio/(dash_to.z*toScale);float heightA=dash_from.y;float heightB=dash_to.y;v_tex_a=vec2(a_linesofar*scaleA/floorwidth,(-normal.y*heightA+dash_from.x+0.5)/u_texsize.y);v_tex_b=vec2(a_linesofar*scaleB/floorwidth,(-normal.y*heightB+dash_to.x+0.5)/u_texsize.y);\n#endif\nv_width2=vec2(outset,inset);\n#ifdef FOG\nv_fog_pos=fog_position(pos);\n#endif\n}"),linePattern:ii("uniform lowp float u_device_pixel_ratio;uniform vec2 u_texsize;uniform float u_fade;uniform mediump vec3 u_scale;uniform sampler2D u_image;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;vec2 pattern_size_a=vec2(display_size_a.x*fromScale/tileZoomRatio,display_size_a.y);vec2 pattern_size_b=vec2(display_size_b.x*toScale/tileZoomRatio,display_size_b.y);float aspect_a=display_size_a.y/v_width;float aspect_b=display_size_b.y/v_width;float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float x_a=mod(v_linesofar/pattern_size_a.x*aspect_a,1.0);float x_b=mod(v_linesofar/pattern_size_b.x*aspect_b,1.0);float y=0.5*v_normal.y+0.5;vec2 texel_size=1.0/u_texsize;vec2 pos_a=mix(pattern_tl_a*texel_size-texel_size,pattern_br_a*texel_size+texel_size,vec2(x_a,y));vec2 pos_b=mix(pattern_tl_b*texel_size-texel_size,pattern_br_b*texel_size+texel_size,vec2(x_b,y));vec4 color=mix(texture2D(u_image,pos_a),texture2D(u_image,pos_b),u_fade);\n#ifdef FOG\ncolor=fog_dither(fog_apply_premultiplied(color,v_fog_pos));\n#endif\ngl_FragColor=color*(alpha*opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","\n#define scale 0.015873016\nattribute vec2 a_pos_normal;attribute vec4 a_data;attribute float a_linesofar;uniform mat4 u_matrix;uniform vec2 u_units_to_pixels;uniform mat2 u_pixels_to_tile_units;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define mediump float width\n#pragma mapbox: define lowp float floorwidth\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize mediump float width\n#pragma mapbox: initialize lowp float floorwidth\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist*u_pixels_to_tile_units,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2*u_pixels_to_tile_units,0.0,1.0)+projected_extrude;\n#ifndef RENDER_TO_TEXTURE\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\n#else\nv_gamma_scale=1.0;\n#endif\nv_linesofar=a_linesofar;v_width2=vec2(outset,inset);v_width=floorwidth;\n#ifdef FOG\nv_fog_pos=fog_position(pos);\n#endif\n}"),raster:ii("uniform float u_fade_t;uniform float u_opacity;uniform sampler2D u_image0;uniform sampler2D u_image1;varying vec2 v_pos0;varying vec2 v_pos1;uniform float u_brightness_low;uniform float u_brightness_high;uniform float u_saturation_factor;uniform float u_contrast_factor;uniform vec3 u_spin_weights;void main() {vec4 color0=texture2D(u_image0,v_pos0);vec4 color1=texture2D(u_image1,v_pos1);if (color0.a > 0.0) {color0.rgb=color0.rgb/color0.a;}if (color1.a > 0.0) {color1.rgb=color1.rgb/color1.a;}vec4 color=mix(color0,color1,u_fade_t);color.a*=u_opacity;vec3 rgb=color.rgb;rgb=vec3(\ndot(rgb,u_spin_weights.xyz),dot(rgb,u_spin_weights.zxy),dot(rgb,u_spin_weights.yzx));float average=(color.r+color.g+color.b)/3.0;rgb+=(average-rgb)*u_saturation_factor;rgb=(rgb-0.5)*u_contrast_factor+0.5;vec3 u_high_vec=vec3(u_brightness_low,u_brightness_low,u_brightness_low);vec3 u_low_vec=vec3(u_brightness_high,u_brightness_high,u_brightness_high);vec3 out_color=mix(u_high_vec,u_low_vec,rgb);\n#ifdef FOG\nout_color=fog_dither(fog_apply(out_color,v_fog_pos));\n#endif\ngl_FragColor=vec4(out_color*color.a,color.a);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec2 u_tl_parent;uniform float u_scale_parent;uniform vec2 u_perspective_transform;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos0;varying vec2 v_pos1;void main() {float w=1.0+dot(a_texture_pos,u_perspective_transform);gl_Position=u_matrix*vec4(a_pos*w,0,w);v_pos0=a_texture_pos/8192.0;v_pos1=(v_pos0*u_scale_parent)+u_tl_parent;\n#ifdef FOG\nv_fog_pos=fog_position(a_pos);\n#endif\n}"),symbolIcon:ii("uniform sampler2D u_texture;varying vec2 v_tex;varying float v_fade_opacity;\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\nlowp float alpha=opacity*v_fade_opacity;gl_FragColor=texture2D(u_texture,v_tex)*alpha;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","attribute vec4 a_pos_offset;attribute vec4 a_tex_size;attribute vec4 a_pixeloffset;attribute vec4 a_z_tile_anchor;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform highp float u_camera_to_center_distance;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform float u_fade_change;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform vec2 u_texsize;\n#ifdef PROJECTION_GLOBE_VIEW\nuniform vec3 u_tile_id;uniform mat4 u_inv_rot_matrix;uniform vec2 u_merc_center;uniform vec3 u_camera_forward;uniform float u_zoom_transition;uniform vec3 u_ecef_origin;uniform mat4 u_tile_matrix;\n#endif\nvarying vec2 v_tex;varying float v_fade_opacity;\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_tex_size.xy;vec2 a_size=a_tex_size.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;vec2 a_min_font_scale=a_pixeloffset.zw/256.0;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}float anchor_z=a_z_tile_anchor.x;vec2 tile_anchor=a_z_tile_anchor.yz;vec3 h=elevationVector(tile_anchor)*elevation(tile_anchor);\n#ifdef PROJECTION_GLOBE_VIEW\nvec3 mercator_pos=mercator_tile_position(u_inv_rot_matrix,tile_anchor,u_tile_id,u_merc_center);vec3 world_pos=mix_globe_mercator(vec3(a_pos,anchor_z)+h,mercator_pos,u_zoom_transition);vec4 ecef_point=u_tile_matrix*vec4(world_pos,1.0);vec3 origin_to_point=ecef_point.xyz-u_ecef_origin;float globe_occlusion_fade=dot(origin_to_point,u_camera_forward) >=0.0 ? 0.0 : 1.0;\n#else\nvec3 world_pos=vec3(a_pos,anchor_z)+h;float globe_occlusion_fade=1.0;\n#endif\nvec4 projected_point=u_matrix*vec4(world_pos,1);highp float camera_to_anchor_distance=projected_point.w;highp float distance_ratio=u_pitch_with_map ?\ncamera_to_anchor_distance/u_camera_to_center_distance :\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(\n0.5+0.5*distance_ratio,0.0,1.5);size*=perspective_ratio;float font_scale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjected_point=u_matrix*vec4(a_pos+vec2(1,0),anchor_z,1);vec2 a=projected_point.xy/projected_point.w;vec2 b=offsetProjected_point.xy/offsetProjected_point.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}\n#ifdef PROJECTION_GLOBE_VIEW\nvec3 proj_pos=mix_globe_mercator(vec3(a_projected_pos.xy,anchor_z),mercator_pos,u_zoom_transition);\n#else\nvec3 proj_pos=vec3(a_projected_pos.xy,anchor_z);\n#endif\n#ifdef PROJECTED_POS_ON_VIEWPORT\nvec4 projected_pos=u_label_plane_matrix*vec4(proj_pos.xy,0.0,1.0);\n#else\nvec4 projected_pos=u_label_plane_matrix*vec4(proj_pos.xyz+h,1.0);\n#endif\nhighp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);float z=0.0;vec2 offset=rotation_matrix*(a_offset/32.0*max(a_min_font_scale,font_scale)+a_pxoffset/16.0);\n#ifdef PITCH_WITH_MAP_TERRAIN\nvec4 tile_pos=u_label_plane_matrix_inv*vec4(a_projected_pos.xy+offset,0.0,1.0);z=elevation(tile_pos.xy);\n#endif\nfloat occlusion_fade=occlusionFade(projected_point)*globe_occlusion_fade;gl_Position=mix(u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+offset,z,1.0),AWAY,float(projected_point.w <=0.0 || occlusion_fade==0.0));float projection_transition_fade=1.0;\n#if defined(PROJECTED_POS_ON_VIEWPORT) && defined(PROJECTION_GLOBE_VIEW)\nprojection_transition_fade=1.0-step(EPSILON,u_zoom_transition);\n#endif\nv_tex=a_tex/u_texsize;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;v_fade_opacity=max(0.0,min(occlusion_fade,fade_opacity[0]+fade_change))*projection_transition_fade;}"),symbolSDF:ii("#define SDF_PX 8.0\nuniform bool u_is_halo;uniform sampler2D u_texture;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;uniform bool u_is_text;varying vec2 v_data0;varying vec3 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nfloat EDGE_GAMMA=0.105/u_device_pixel_ratio;vec2 tex=v_data0.xy;float gamma_scale=v_data1.x;float size=v_data1.y;float fade_opacity=v_data1[2];float fontScale=u_is_text ? size/24.0 : size;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","attribute vec4 a_pos_offset;attribute vec4 a_tex_size;attribute vec4 a_pixeloffset;attribute vec4 a_z_tile_anchor;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;\n#ifdef PROJECTION_GLOBE_VIEW\nuniform vec3 u_tile_id;uniform mat4 u_inv_rot_matrix;uniform vec2 u_merc_center;uniform vec3 u_camera_forward;uniform float u_zoom_transition;uniform vec3 u_ecef_origin;uniform mat4 u_tile_matrix;\n#endif\nvarying vec2 v_data0;varying vec3 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_tex_size.xy;vec2 a_size=a_tex_size.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}float anchor_z=a_z_tile_anchor.x;vec2 tile_anchor=a_z_tile_anchor.yz;vec3 h=elevationVector(tile_anchor)*elevation(tile_anchor);\n#ifdef PROJECTION_GLOBE_VIEW\nvec3 mercator_pos=mercator_tile_position(u_inv_rot_matrix,tile_anchor,u_tile_id,u_merc_center);vec3 world_pos=mix_globe_mercator(vec3(a_pos,anchor_z)+h,mercator_pos,u_zoom_transition);vec4 ecef_point=u_tile_matrix*vec4(world_pos,1.0);vec3 origin_to_point=ecef_point.xyz-u_ecef_origin;float globe_occlusion_fade=dot(origin_to_point,u_camera_forward) >=0.0 ? 0.0 : 1.0;\n#else\nvec3 world_pos=vec3(a_pos,anchor_z)+h;float globe_occlusion_fade=1.0;\n#endif\nvec4 projected_point=u_matrix*vec4(world_pos,1);highp float camera_to_anchor_distance=projected_point.w;highp float distance_ratio=u_pitch_with_map ?\ncamera_to_anchor_distance/u_camera_to_center_distance :\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(\n0.5+0.5*distance_ratio,0.0,1.5);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetprojected_point=u_matrix*vec4(a_pos+vec2(1,0),anchor_z,1);vec2 a=projected_point.xy/projected_point.w;vec2 b=offsetprojected_point.xy/offsetprojected_point.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}\n#ifdef PROJECTION_GLOBE_VIEW\nvec3 proj_pos=mix_globe_mercator(vec3(a_projected_pos.xy,anchor_z),mercator_pos,u_zoom_transition);\n#else\nvec3 proj_pos=vec3(a_projected_pos.xy,anchor_z);\n#endif\n#ifdef PROJECTED_POS_ON_VIEWPORT\nvec4 projected_pos=u_label_plane_matrix*vec4(proj_pos.xy,0.0,1.0);\n#else\nvec4 projected_pos=u_label_plane_matrix*vec4(proj_pos.xyz+h,1.0);\n#endif\nhighp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);float z=0.0;vec2 offset=rotation_matrix*(a_offset/32.0*fontScale+a_pxoffset);\n#ifdef PITCH_WITH_MAP_TERRAIN\nvec4 tile_pos=u_label_plane_matrix_inv*vec4(a_projected_pos.xy+offset,0.0,1.0);z=elevation(tile_pos.xy);\n#endif\nfloat occlusion_fade=occlusionFade(projected_point)*globe_occlusion_fade;gl_Position=mix(u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+offset,z,1.0),AWAY,float(projected_point.w <=0.0 || occlusion_fade==0.0));float gamma_scale=gl_Position.w;float projection_transition_fade=1.0;\n#if defined(PROJECTED_POS_ON_VIEWPORT) && defined(PROJECTION_GLOBE_VIEW)\nprojection_transition_fade=1.0-step(EPSILON,u_zoom_transition);\n#endif\nvec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(occlusion_fade,fade_opacity[0]+fade_change));v_data0=a_tex/u_texsize;v_data1=vec3(gamma_scale,size,interpolated_fade_opacity*projection_transition_fade);}"),symbolTextAndIcon:ii("#define SDF_PX 8.0\n#define SDF 1.0\n#define ICON 0.0\nuniform bool u_is_halo;uniform sampler2D u_texture;uniform sampler2D u_texture_icon;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;varying vec4 v_data0;varying vec4 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nfloat fade_opacity=v_data1[2];if (v_data1.w==ICON) {vec2 tex_icon=v_data0.zw;lowp float alpha=opacity*fade_opacity;gl_FragColor=texture2D(u_texture_icon,tex_icon)*alpha;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\nreturn;}vec2 tex=v_data0.xy;float EDGE_GAMMA=0.105/u_device_pixel_ratio;float gamma_scale=v_data1.x;float size=v_data1.y;float fontScale=size/24.0;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","attribute vec4 a_pos_offset;attribute vec4 a_tex_size;attribute vec4 a_z_tile_anchor;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec2 u_texsize_icon;\n#ifdef PROJECTION_GLOBE_VIEW\nuniform vec3 u_tile_id;uniform mat4 u_inv_rot_matrix;uniform vec2 u_merc_center;uniform vec3 u_camera_forward;uniform float u_zoom_transition;uniform vec3 u_ecef_origin;uniform mat4 u_tile_matrix;\n#endif\nvarying vec4 v_data0;varying vec4 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_tex_size.xy;vec2 a_size=a_tex_size.zw;float a_size_min=floor(a_size[0]*0.5);float is_sdf=a_size[0]-2.0*a_size_min;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}float anchor_z=a_z_tile_anchor.x;vec2 tile_anchor=a_z_tile_anchor.yz;vec3 h=elevationVector(tile_anchor)*elevation(tile_anchor);\n#ifdef PROJECTION_GLOBE_VIEW\nvec3 mercator_pos=mercator_tile_position(u_inv_rot_matrix,tile_anchor,u_tile_id,u_merc_center);vec3 world_pos=mix_globe_mercator(vec3(a_pos,anchor_z)+h,mercator_pos,u_zoom_transition);vec4 ecef_point=u_tile_matrix*vec4(world_pos,1.0);vec3 origin_to_point=ecef_point.xyz-u_ecef_origin;float globe_occlusion_fade=dot(origin_to_point,u_camera_forward) >=0.0 ? 0.0 : 1.0;\n#else\nvec3 world_pos=vec3(a_pos,anchor_z)+h;float globe_occlusion_fade=1.0;\n#endif\nvec4 projected_point=u_matrix*vec4(world_pos,1);highp float camera_to_anchor_distance=projected_point.w;highp float distance_ratio=u_pitch_with_map ?\ncamera_to_anchor_distance/u_camera_to_center_distance :\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(\n0.5+0.5*distance_ratio,0.0,1.5);size*=perspective_ratio;float font_scale=size/24.0;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offset_projected_point=u_matrix*vec4(a_pos+vec2(1,0),anchor_z,1);vec2 a=projected_point.xy/projected_point.w;vec2 b=offset_projected_point.xy/offset_projected_point.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}\n#ifdef PROJECTION_GLOBE_VIEW\nvec3 proj_pos=mix_globe_mercator(vec3(a_projected_pos.xy,anchor_z),mercator_pos,u_zoom_transition);\n#else\nvec3 proj_pos=vec3(a_projected_pos.xy,anchor_z);\n#endif\n#ifdef PROJECTED_POS_ON_VIEWPORT\nvec4 projected_pos=u_label_plane_matrix*vec4(proj_pos.xy,0.0,1.0);\n#else\nvec4 projected_pos=u_label_plane_matrix*vec4(proj_pos.xyz+h,1.0);\n#endif\nhighp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);float z=0.0;vec2 offset=rotation_matrix*(a_offset/32.0*font_scale);\n#ifdef PITCH_WITH_MAP_TERRAIN\nvec4 tile_pos=u_label_plane_matrix_inv*vec4(a_projected_pos.xy+offset,0.0,1.0);z=elevation(tile_pos.xy);\n#endif\nfloat occlusion_fade=occlusionFade(projected_point)*globe_occlusion_fade;gl_Position=mix(u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+offset,z,1.0),AWAY,float(projected_point.w <=0.0 || occlusion_fade==0.0));float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(occlusion_fade,fade_opacity[0]+fade_change));float projection_transition_fade=1.0;\n#if defined(PROJECTED_POS_ON_VIEWPORT) && defined(PROJECTION_GLOBE_VIEW)\nprojection_transition_fade=1.0-step(EPSILON,u_zoom_transition);\n#endif\nv_data0.xy=a_tex/u_texsize;v_data0.zw=a_tex/u_texsize_icon;v_data1=vec4(gamma_scale,size,interpolated_fade_opacity*projection_transition_fade,is_sdf);}"),terrainRaster:ii("uniform sampler2D u_image0;varying vec2 v_pos0;\n#ifdef FOG\nvarying float v_fog_opacity;\n#endif\nvoid main() {vec4 color=texture2D(u_image0,v_pos0);\n#ifdef FOG\ncolor=fog_dither(fog_apply_from_vert(color,v_fog_opacity));\n#endif\ngl_FragColor=color;\n#ifdef TERRAIN_WIREFRAME\ngl_FragColor=vec4(1.0,0.0,0.0,0.8);\n#endif\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform float u_skirt_height;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos0;\n#ifdef FOG\nvarying float v_fog_opacity;\n#endif\nconst float skirtOffset=24575.0;const float wireframeOffset=0.00015;void main() {v_pos0=a_texture_pos/8192.0;float skirt=float(a_pos.x >=skirtOffset);float elevation=elevation(a_texture_pos)-skirt*u_skirt_height;\n#ifdef TERRAIN_WIREFRAME\nelevation+=u_skirt_height*u_skirt_height*wireframeOffset;\n#endif\nvec2 decodedPos=a_pos-vec2(skirt*skirtOffset,0.0);gl_Position=u_matrix*vec4(decodedPos,elevation,1.0);\n#ifdef FOG\nv_fog_opacity=fog(fog_position(vec3(decodedPos,elevation)));\n#endif\n}"),terrainDepth:ii("#ifdef GL_ES\nprecision highp float;\n#endif\nvarying float v_depth;void main() {gl_FragColor=pack_depth(v_depth);}","uniform mat4 u_matrix;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying float v_depth;void main() {float elevation=elevation(a_texture_pos);gl_Position=u_matrix*vec4(a_pos,elevation,1.0);v_depth=gl_Position.z/gl_Position.w;}"),skybox:ii("\nvarying lowp vec3 v_uv;uniform lowp samplerCube u_cubemap;uniform lowp float u_opacity;uniform highp float u_temporal_offset;uniform highp vec3 u_sun_direction;float sun_disk(highp vec3 ray_direction,highp vec3 sun_direction) {highp float cos_angle=dot(normalize(ray_direction),sun_direction);const highp float cos_sun_angular_diameter=0.99996192306;const highp float smoothstep_delta=1e-5;return smoothstep(\ncos_sun_angular_diameter-smoothstep_delta,cos_sun_angular_diameter+smoothstep_delta,cos_angle);}float map(float value,float start,float end,float new_start,float new_end) {return ((value-start)*(new_end-new_start))/(end-start)+new_start;}void main() {vec3 uv=v_uv;const float y_bias=0.015;uv.y+=y_bias;uv.y=pow(abs(uv.y),1.0/5.0);uv.y=map(uv.y,0.0,1.0,-1.0,1.0);vec3 sky_color=textureCube(u_cubemap,uv).rgb;\n#ifdef FOG\nsky_color=fog_apply_sky_gradient(v_uv.xzy,sky_color);\n#endif\nsky_color.rgb=dither(sky_color.rgb,gl_FragCoord.xy+u_temporal_offset);sky_color+=0.1*sun_disk(v_uv,u_sun_direction);gl_FragColor=vec4(sky_color*u_opacity,u_opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}",Yt),skyboxGradient:ii("varying highp vec3 v_uv;uniform lowp sampler2D u_color_ramp;uniform highp vec3 u_center_direction;uniform lowp float u_radius;uniform lowp float u_opacity;uniform highp float u_temporal_offset;void main() {float progress=acos(dot(normalize(v_uv),u_center_direction))/u_radius;vec4 color=texture2D(u_color_ramp,vec2(progress,0.5));\n#ifdef FOG\ncolor.rgb=fog_apply_sky_gradient(v_uv.xzy,color.rgb/color.a)*color.a;\n#endif\ncolor*=u_opacity;color.rgb=dither(color.rgb,gl_FragCoord.xy+u_temporal_offset);gl_FragColor=color;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}",Yt),skyboxCapture:ii("\nvarying highp vec3 v_position;uniform highp float u_sun_intensity;uniform highp float u_luminance;uniform lowp vec3 u_sun_direction;uniform highp vec4 u_color_tint_r;uniform highp vec4 u_color_tint_m;\n#ifdef GL_ES\nprecision highp float;\n#endif\n#define BETA_R vec3(5.5e-6,13.0e-6,22.4e-6)\n#define BETA_M vec3(21e-6,21e-6,21e-6)\n#define MIE_G 0.76\n#define DENSITY_HEIGHT_SCALE_R 8000.0\n#define DENSITY_HEIGHT_SCALE_M 1200.0\n#define PLANET_RADIUS 6360e3\n#define ATMOSPHERE_RADIUS 6420e3\n#define SAMPLE_STEPS 10\n#define DENSITY_STEPS 4\nfloat ray_sphere_exit(vec3 orig,vec3 dir,float radius) {float a=dot(dir,dir);float b=2.0*dot(dir,orig);float c=dot(orig,orig)-radius*radius;float d=sqrt(b*b-4.0*a*c);return (-b+d)/(2.0*a);}vec3 extinction(vec2 density) {return exp(-vec3(BETA_R*u_color_tint_r.a*density.x+BETA_M*u_color_tint_m.a*density.y));}vec2 local_density(vec3 point) {float height=max(length(point)-PLANET_RADIUS,0.0);float exp_r=exp(-height/DENSITY_HEIGHT_SCALE_R);float exp_m=exp(-height/DENSITY_HEIGHT_SCALE_M);return vec2(exp_r,exp_m);}float phase_ray(float cos_angle) {return (3.0/(16.0*PI))*(1.0+cos_angle*cos_angle);}float phase_mie(float cos_angle) {return (3.0/(8.0*PI))*((1.0-MIE_G*MIE_G)*(1.0+cos_angle*cos_angle))/((2.0+MIE_G*MIE_G)*pow(1.0+MIE_G*MIE_G-2.0*MIE_G*cos_angle,1.5));}vec2 density_to_atmosphere(vec3 point,vec3 light_dir) {float ray_len=ray_sphere_exit(point,light_dir,ATMOSPHERE_RADIUS);float step_len=ray_len/float(DENSITY_STEPS);vec2 density_point_to_atmosphere=vec2(0.0);for (int i=0; i < DENSITY_STEPS;++i) {vec3 point_on_ray=point+light_dir*((float(i)+0.5)*step_len);density_point_to_atmosphere+=local_density(point_on_ray)*step_len;;}return density_point_to_atmosphere;}vec3 atmosphere(vec3 ray_dir,vec3 sun_direction,float sun_intensity) {vec2 density_orig_to_point=vec2(0.0);vec3 scatter_r=vec3(0.0);vec3 scatter_m=vec3(0.0);vec3 origin=vec3(0.0,PLANET_RADIUS,0.0);float ray_len=ray_sphere_exit(origin,ray_dir,ATMOSPHERE_RADIUS);float step_len=ray_len/float(SAMPLE_STEPS);for (int i=0; i < SAMPLE_STEPS;++i) {vec3 point_on_ray=origin+ray_dir*((float(i)+0.5)*step_len);vec2 density=local_density(point_on_ray)*step_len;density_orig_to_point+=density;vec2 density_point_to_atmosphere=density_to_atmosphere(point_on_ray,sun_direction);vec2 density_orig_to_atmosphere=density_orig_to_point+density_point_to_atmosphere;vec3 extinction=extinction(density_orig_to_atmosphere);scatter_r+=density.x*extinction;scatter_m+=density.y*extinction;}float cos_angle=dot(ray_dir,sun_direction);float phase_r=phase_ray(cos_angle);float phase_m=phase_mie(cos_angle);vec3 beta_r=BETA_R*u_color_tint_r.rgb*u_color_tint_r.a;vec3 beta_m=BETA_M*u_color_tint_m.rgb*u_color_tint_m.a;return (scatter_r*phase_r*beta_r+scatter_m*phase_m*beta_m)*sun_intensity;}const float A=0.15;const float B=0.50;const float C=0.10;const float D=0.20;const float E=0.02;const float F=0.30;vec3 uncharted2_tonemap(vec3 x) {return ((x*(A*x+C*B)+D*E)/(x*(A*x+B)+D*F))-E/F;}void main() {vec3 ray_direction=v_position;ray_direction.y=pow(ray_direction.y,5.0);const float y_bias=0.015;ray_direction.y+=y_bias;vec3 color=atmosphere(normalize(ray_direction),u_sun_direction,u_sun_intensity);float white_scale=1.0748724675633854;color=uncharted2_tonemap((log2(2.0/pow(u_luminance,4.0)))*color)*white_scale;gl_FragColor=vec4(color,1.0);}","attribute highp vec3 a_pos_3f;uniform mat3 u_matrix_3f;varying highp vec3 v_position;float map(float value,float start,float end,float new_start,float new_end) {return ((value-start)*(new_end-new_start))/(end-start)+new_start;}void main() {vec4 pos=vec4(u_matrix_3f*a_pos_3f,1.0);v_position=pos.xyz;v_position.y*=-1.0;v_position.y=map(v_position.y,-1.0,1.0,0.0,1.0);gl_Position=vec4(a_pos_3f.xy,0.0,1.0);}"),globeRaster:ii("uniform sampler2D u_image0;varying vec2 v_pos0;void main() {gl_FragColor=texture2D(u_image0,v_pos0);\n#ifdef TERRAIN_WIREFRAME\ngl_FragColor=vec4(1.0,0.0,0.0,0.8);\n#endif\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_proj_matrix;uniform mat4 u_globe_matrix;uniform mat4 u_merc_matrix;uniform float u_zoom_transition;uniform vec2 u_merc_center;uniform mat3 u_grid_matrix;\n#ifdef GLOBE_POLES\nattribute vec3 a_globe_pos;attribute vec2 a_merc_pos;attribute vec2 a_uv;\n#else\nattribute vec2 a_pos;\n#endif\nvarying vec2 v_pos0;const float wireframeOffset=1e3;float mercatorXfromLng(float lng) {return (180.0+lng)/360.0;}float mercatorYfromLat(float lat) {return (180.0-(RAD_TO_DEG*log(tan(QUARTER_PI+lat/2.0*DEG_TO_RAD))))/360.0;}vec3 latLngToECEF(vec2 latLng) {latLng=DEG_TO_RAD*latLng;float cosLat=cos(latLng[0]);float sinLat=sin(latLng[0]);float cosLng=cos(latLng[1]);float sinLng=sin(latLng[1]);float sx=cosLat*sinLng*GLOBE_RADIUS;float sy=-sinLat*GLOBE_RADIUS;float sz=cosLat*cosLng*GLOBE_RADIUS;return vec3(sx,sy,sz);}void main() {\n#ifdef GLOBE_POLES\nvec3 globe_pos=a_globe_pos;vec2 merc_pos=a_merc_pos;vec2 uv=a_uv;\n#else\nfloat tiles=u_grid_matrix[0][2];float idy=u_grid_matrix[1][2];float S=u_grid_matrix[2][2];vec3 latLng=u_grid_matrix*vec3(a_pos,1.0);float mercatorY=mercatorYfromLat(latLng[0]);float uvY=mercatorY*tiles-idy;float mercatorX=mercatorXfromLng(latLng[1]);float uvX=a_pos[0]*S;vec3 globe_pos=latLngToECEF(latLng.xy);vec2 merc_pos=vec2(mercatorX,mercatorY);vec2 uv=vec2(uvX,uvY);\n#endif\nv_pos0=uv;uv=uv*EXTENT;vec4 up_vector=vec4(elevationVector(uv),1.0);float height=elevation(uv);\n#ifdef TERRAIN_WIREFRAME\nheight+=wireframeOffset;\n#endif\nvec4 globe=u_globe_matrix*vec4(globe_pos+up_vector.xyz*height,1.0);vec4 mercator=vec4(0.0);if (u_zoom_transition > 0.0) {mercator=vec4(merc_pos,height,1.0);mercator.xy-=u_merc_center;mercator.x=wrap(mercator.x,-0.5,0.5);mercator=u_merc_matrix*mercator;}vec3 position=mix(globe.xyz,mercator.xyz,u_zoom_transition);gl_Position=u_proj_matrix*vec4(position,1.0);}"),globeAtmosphere:ii("uniform float u_opacity;uniform highp float u_fadeout_range;uniform vec3 u_start_color;uniform vec3 u_end_color;uniform highp vec3 u_globe_pos;uniform highp float u_globe_radius;varying highp vec3 v_ray_dir;void main() {highp vec3 dir=normalize(v_ray_dir);highp vec3 closest_point=abs(dot(u_globe_pos,dir))*dir;float norm_dist_from_center=length(closest_point-u_globe_pos)/u_globe_radius;if (norm_dist_from_center < 1.0)\ndiscard;float t=clamp(1.0-sqrt(norm_dist_from_center-1.0)/u_fadeout_range,0.0,1.0);vec3 color=mix(u_start_color,u_end_color,1.0-t);gl_FragColor=vec4(color*t*u_opacity,u_opacity);}","attribute vec3 a_pos;attribute vec2 a_uv;uniform vec3 u_frustum_tl;uniform vec3 u_frustum_tr;uniform vec3 u_frustum_br;uniform vec3 u_frustum_bl;varying highp vec3 v_ray_dir;void main() {v_ray_dir=mix(mix(u_frustum_tl,u_frustum_tr,a_uv.x),mix(u_frustum_bl,u_frustum_br,a_uv.x),a_uv.y);gl_Position=vec4(a_pos,1.0);}")};function ii(e,t,i){const r=/#pragma mapbox: ([\w]+) ([\w]+) ([\w]+) ([\w]+)/g,n=/uniform (highp |mediump |lowp )?([\w]+) ([\w]+)([\s]*)([\w]*)/g,o=t.match(/attribute (highp |mediump |lowp )?([\w]+) ([\w]+)/g),s=e.match(n),a=t.match(n),l=Ht.match(n);let c=a?a.concat(s):s;i||(Kt.staticUniforms&&(c=Kt.staticUniforms.concat(c)),Jt.staticUniforms&&(c=Jt.staticUniforms.concat(c))),c&&(c=c.concat(l));const h={};return{fragmentSource:e=e.replace(r,((e,t,i,r,n)=>(h[n]=!0,"define"===t?`\n#ifndef HAS_UNIFORM_u_${n}\nvarying ${i} ${r} ${n};\n#else\nuniform ${i} ${r} u_${n};\n#endif\n`:`\n#ifdef HAS_UNIFORM_u_${n}\n ${i} ${r} ${n} = u_${n};\n#endif\n`))),vertexSource:t=t.replace(r,((e,t,i,r,n)=>{const o="float"===r?"vec2":"vec4",s=n.match(/color/)?"color":o;return h[n]?"define"===t?`\n#ifndef HAS_UNIFORM_u_${n}\nuniform lowp float u_${n}_t;\nattribute ${i} ${o} a_${n};\nvarying ${i} ${r} ${n};\n#else\nuniform ${i} ${r} u_${n};\n#endif\n`:"vec4"===s?`\n#ifndef HAS_UNIFORM_u_${n}\n ${n} = a_${n};\n#else\n ${i} ${r} ${n} = u_${n};\n#endif\n`:`\n#ifndef HAS_UNIFORM_u_${n}\n ${n} = unpack_mix_${s}(a_${n}, u_${n}_t);\n#else\n ${i} ${r} ${n} = u_${n};\n#endif\n`:"define"===t?`\n#ifndef HAS_UNIFORM_u_${n}\nuniform lowp float u_${n}_t;\nattribute ${i} ${o} a_${n};\n#else\nuniform ${i} ${r} u_${n};\n#endif\n`:"vec4"===s?`\n#ifndef HAS_UNIFORM_u_${n}\n ${i} ${r} ${n} = a_${n};\n#else\n ${i} ${r} ${n} = u_${n};\n#endif\n`:`\n#ifndef HAS_UNIFORM_u_${n}\n ${i} ${r} ${n} = unpack_mix_${s}(a_${n}, u_${n}_t);\n#else\n ${i} ${r} ${n} = u_${n};\n#endif\n`})),staticAttributes:o,staticUniforms:c}}class ri{constructor(){this.boundProgram=null,this.boundLayoutVertexBuffer=null,this.boundPaintVertexBuffers=[],this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffer=null,this.vao=null}bind(e,t,i,r,n,o,s,a){this.context=e;let l=this.boundPaintVertexBuffers.length!==r.length;for(let e=0;!l&&e<r.length;e++)this.boundPaintVertexBuffers[e]!==r[e]&&(l=!0);e.extVertexArrayObject&&this.vao&&this.boundProgram===t&&this.boundLayoutVertexBuffer===i&&!l&&this.boundIndexBuffer===n&&this.boundVertexOffset===o&&this.boundDynamicVertexBuffer===s&&this.boundDynamicVertexBuffer2===a?(e.bindVertexArrayOES.set(this.vao),s&&s.bind(),n&&n.dynamicDraw&&n.bind(),a&&a.bind()):this.freshBind(t,i,r,n,o,s,a)}freshBind(e,t,i,r,n,o,s){let a;const l=e.numAttributes,c=this.context,h=c.gl;if(c.extVertexArrayObject)this.vao&&this.destroy(),this.vao=c.extVertexArrayObject.createVertexArrayOES(),c.bindVertexArrayOES.set(this.vao),a=0,this.boundProgram=e,this.boundLayoutVertexBuffer=t,this.boundPaintVertexBuffers=i,this.boundIndexBuffer=r,this.boundVertexOffset=n,this.boundDynamicVertexBuffer=o,this.boundDynamicVertexBuffer2=s;else{a=c.currentNumAttributes||0;for(let e=l;e<a;e++)h.disableVertexAttribArray(e)}t.enableAttributes(h,e);for(const t of i)t.enableAttributes(h,e);o&&o.enableAttributes(h,e),s&&s.enableAttributes(h,e),t.bind(),t.setVertexAttribPointers(h,e,n);for(const t of i)t.bind(),t.setVertexAttribPointers(h,e,n);o&&(o.bind(),o.setVertexAttribPointers(h,e,n)),r&&r.bind(),s&&(s.bind(),s.setVertexAttribPointers(h,e,n)),c.currentNumAttributes=l}destroy(){this.vao&&(this.context.extVertexArrayObject.deleteVertexArrayOES(this.vao),this.vao=null)}}function ni(t,i){const r=Math.pow(2,i.canonical.z),n=i.canonical.y;return[new e.MercatorCoordinate(0,n/r).toLngLat().lat,new e.MercatorCoordinate(0,(n+1)/r).toLngLat().lat]}function oi(t,i,r,n,o,s,a){const l=t.context,c=l.gl,h=r.fbo;if(!h)return;t.prepareDrawTile();const u=t.useProgram("hillshade");l.activeTexture.set(c.TEXTURE0),c.bindTexture(c.TEXTURE_2D,h.colorAttachment.get());const d=((e,t,i,r)=>{const n=i.paint.get("hillshade-shadow-color"),o=i.paint.get("hillshade-highlight-color"),s=i.paint.get("hillshade-accent-color");let a=i.paint.get("hillshade-illumination-direction")*(Math.PI/180);"viewport"===i.paint.get("hillshade-illumination-anchor")&&(a-=e.transform.angle);const l=!e.options.moving;return{u_matrix:r||e.transform.calculateProjMatrix(t.tileID.toUnwrapped(),l),u_image:0,u_latrange:ni(0,t.tileID),u_light:[i.paint.get("hillshade-exaggeration"),a],u_shadow:n,u_highlight:o,u_accent:s}})(t,r,n,t.terrain?i.projMatrix:null);t.prepareDrawProgram(l,u,i.toUnwrapped());const{tileBoundsBuffer:p,tileBoundsIndexBuffer:f,tileBoundsSegments:m}=t.getTileBoundsBuffers(r);u.draw(l,c.TRIANGLES,o,s,a,e.CullFaceMode.disabled,d,n.id,p,f,m)}function si(t,i,r){if(!i.needsDEMTextureUpload)return;const n=t.context,o=n.gl;n.pixelStoreUnpackPremultiplyAlpha.set(!1),i.demTexture=i.demTexture||t.getTileTexture(r.stride);const s=r.getPixels();i.demTexture?i.demTexture.update(s,{premultiply:!1}):i.demTexture=new e.Texture(n,s,o.RGBA,{premultiply:!1}),i.needsDEMTextureUpload=!1}function ai(t,i,r,n,o,s){const a=t.context,l=a.gl;if(!i.dem)return;const c=i.dem;if(a.activeTexture.set(l.TEXTURE1),si(t,i,c),!i.demTexture)return;i.demTexture.bind(l.NEAREST,l.CLAMP_TO_EDGE);const h=c.dim;a.activeTexture.set(l.TEXTURE0);let u=i.fbo;if(!u){const t=new e.Texture(a,{width:h,height:h,data:null},l.RGBA);t.bind(l.LINEAR,l.CLAMP_TO_EDGE),u=i.fbo=a.createFramebuffer(h,h,!0),u.colorAttachment.set(t.texture)}a.bindFramebuffer.set(u.framebuffer),a.viewport.set([0,0,h,h]);const{tileBoundsBuffer:d,tileBoundsIndexBuffer:p,tileBoundsSegments:f}=t.getMercatorTileBoundsBuffers();t.useProgram("hillshadePrepare").draw(a,l.TRIANGLES,n,o,s,e.CullFaceMode.disabled,((t,i)=>{const r=i.stride,n=e.create();return e.ortho(n,0,e.EXTENT,-e.EXTENT,0,0,1),e.translate(n,n,[0,-e.EXTENT,0]),{u_matrix:n,u_image:1,u_dimension:[r,r],u_zoom:t.overscaledZ,u_unpack:i.unpackVector}})(i.tileID,c),r.id,d,p,f),i.needsHillshadePrepare=!1}const li=(t,i)=>({u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_image0:new e.Uniform1i(t,i.u_image0),u_skirt_height:new e.Uniform1f(t,i.u_skirt_height)}),ci=(e,t)=>({u_matrix:e,u_image0:0,u_skirt_height:t}),hi=(e,t,i,r,n,o)=>({u_proj_matrix:Float32Array.from(e),u_globe_matrix:t,u_merc_matrix:i,u_zoom_transition:r,u_merc_center:n,u_image0:0,u_grid_matrix:o?Float32Array.from(o):new Float32Array(9)});function ui(e,t){return null!=e&&null!=t&&!(!e.hasData()||!t.hasData())&&null!=e.demTexture&&null!=t.demTexture&&e.tileID.key!==t.tileID.key}const di=new class{constructor(){this.operations={}}newMorphing(e,t,i,r,n){if(e in this.operations){const t=this.operations[e];t.to.tileID.key!==i.tileID.key&&(t.queued=i)}else this.operations[e]={startTime:r,phase:0,duration:n,from:t,to:i,queued:null}}getMorphValuesForProxy(e){if(!(e in this.operations))return null;const t=this.operations[e];return{from:t.from,to:t.to,phase:t.phase}}update(e){for(const t in this.operations){const i=this.operations[t];for(i.phase=(e-i.startTime)/i.duration;i.phase>=1||!this._validOp(i);)if(!this._nextOp(i,e)){delete this.operations[t];break}}}_nextOp(e,t){return!!e.queued&&(e.from=e.to,e.to=e.queued,e.queued=null,e.phase=0,e.startTime=t,!0)}_validOp(e){return e.from.hasData()&&e.to.hasData()}},pi={0:null,1:"TERRAIN_VERTEX_MORPHING",2:"TERRAIN_WIREFRAME"};function fi(e,t){const i=1<<e.z;return!t&&(0===e.x||e.x===i-1)||0===e.y||e.y===i-1}const mi=e=>({u_matrix:e});function _i(t,i,r,n,o){if(o>0){const s=e.exported.now(),a=(s-t.timeAdded)/o,l=i?(s-i.timeAdded)/o:-1,c=r.getSource(),h=n.coveringZoomLevel({tileSize:c.tileSize,roundZoom:c.roundZoom}),u=!i||Math.abs(i.tileID.overscaledZ-h)>Math.abs(t.tileID.overscaledZ-h),d=u&&t.refreshedUponExpiration?1:e.clamp(u?a:1-l,0,1);return t.refreshedUponExpiration&&a>=1&&(t.refreshedUponExpiration=!1),i?{opacity:1,mix:1-d}:{opacity:d,mix:0}}return{opacity:1,mix:0}}const gi=2*e.mercatorZfromAltitude(1,0)*e.GLOBE_RADIUS*Math.PI;class yi extends e.SourceCache{constructor(e){const t={type:"raster-dem",maxzoom:e.transform.maxZoom},i=new D(Ue(),null),r=ze("mock-dem",t,i,e.style);super("mock-dem",r,!1),r.setEventedParent(this),this._sourceLoaded=!0}_loadTile(e,t){e.state="loaded",t(null)}}class xi extends e.SourceCache{constructor(e){const t=ze("proxy",{type:"geojson",maxzoom:e.transform.maxZoom},new D(Ue(),null),e.style);super("proxy",t,!1),t.setEventedParent(this),this.map=this.getSource().map=e,this.used=this._sourceLoaded=!0,this.renderCache=[],this.renderCachePool=[],this.proxyCachedFBO={}}update(t,i,r){if(t.freezeTileCoverage)return;this.transform=t;const n=t.coveringTiles({tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled}).reduce(((i,r)=>{if(i[r.key]="",!this._tiles[r.key]){const i=new e.Tile(r,this._source.tileSize*r.overscaleFactor(),t.tileZoom);i.state="loaded",this._tiles[r.key]=i}return i}),{});for(const e in this._tiles)e in n||(this.freeFBO(e),this._tiles[e].unloadVectorData(),delete this._tiles[e])}freeFBO(e){const t=this.proxyCachedFBO[e];if(void 0!==t){const i=Object.values(t);this.renderCachePool.push(...i),delete this.proxyCachedFBO[e]}}deallocRenderCache(){this.renderCache.forEach((e=>e.fb.destroy())),this.renderCache=[],this.renderCachePool=[],this.proxyCachedFBO={}}}class vi extends e.OverscaledTileID{constructor(e,t,i){super(e.overscaledZ,e.wrap,e.canonical.z,e.canonical.x,e.canonical.y),this.proxyTileKey=t,this.projMatrix=i}}class bi extends e.Elevation{constructor(t,i){super(),this.painter=t,this.terrainTileForTile={},this.prevTerrainTileForTile={};const[r,n,o]=function(t){const i=new e.StructArrayLayout4i8,r=new e.StructArrayLayout3ui6,n=131;i.reserve(17161),r.reserve(33800);const o=e.EXTENT/128,s=e.EXTENT+o/2,a=s+o;for(let t=-o;t<a;t+=o)for(let r=-o;r<a;r+=o){const n=r<0||r>s||t<0||t>s?24575:0,o=e.clamp(Math.round(r),0,e.EXTENT),a=e.clamp(Math.round(t),0,e.EXTENT);i.emplaceBack(o+n,a,o,a)}const l=(e,t)=>{const i=t*n+e;r.emplaceBack(i+1,i,i+n),r.emplaceBack(i+n,i+n+1,i+1)};for(let e=1;e<129;e++)for(let t=1;t<129;t++)l(t,e);return[0,129].forEach((e=>{for(let t=0;t<130;t++)l(t,e),l(e,t)})),[i,r,32768]}(),s=t.context;this.gridBuffer=s.createVertexBuffer(r,e.boundsAttributes.members),this.gridIndexBuffer=s.createIndexBuffer(n),this.gridSegments=e.SegmentVector.simpleSegment(0,0,r.length,n.length),this.gridNoSkirtSegments=e.SegmentVector.simpleSegment(0,0,r.length,o),this.proxyCoords=[],this.proxiedCoords={},this._visibleDemTiles=[],this._drapedRenderBatches=[],this._sourceTilesOverlap={},this.proxySourceCache=new xi(i.map),this.orthoMatrix=e.create(),e.ortho(this.orthoMatrix,0,e.EXTENT,0,e.EXTENT,0,1);const a=s.gl;this._overlapStencilMode=new e.StencilMode({func:a.GEQUAL,mask:255},0,255,a.KEEP,a.KEEP,a.REPLACE),this._previousZoom=t.transform.zoom,this.pool=[],this._findCoveringTileCache={},this._tilesDirty={},this.style=i,this._useVertexMorphing=!0,this._exaggeration=1,this._mockSourceCache=new yi(i.map)}set style(e){e.on("data",this._onStyleDataEvent.bind(this)),e.on("neworder",this._checkRenderCacheEfficiency.bind(this)),this._style=e,this._checkRenderCacheEfficiency()}update(t,i,r){if(t&&t.terrain){this._style!==t&&(this.style=t),this.enabled=!0;const n=t.terrain.properties;this.sourceCache=0===t.terrain.drapeRenderMode?this._mockSourceCache:t._getSourceCache(n.get("source")),this._exaggeration=n.get("exaggeration");const o=()=>{this.sourceCache.used&&e.warnOnce(`Raster DEM source '${this.sourceCache.id}' is used both for terrain and as layer source.\nThis leads to lower resolution of hillshade. For full hillshade resolution but higher memory consumption, define another raster DEM source.`);const t=this.getScaledDemTileSize();this.sourceCache.update(i,t,!0),this.resetTileLookupCache(this.sourceCache.id)};this.sourceCache.usedForTerrain||(this.resetTileLookupCache(this.sourceCache.id),this.sourceCache.usedForTerrain=!0,o(),this._initializing=!0),o(),i.updateElevation(!r),this.resetTileLookupCache(this.proxySourceCache.id),this.proxySourceCache.update(i),this._emptyDEMTextureDirty=!0}else this._disable()}resetTileLookupCache(e){this._findCoveringTileCache[e]={}}getScaledDemTileSize(){return this.sourceCache.getSource().tileSize/128*this.proxySourceCache.getSource().tileSize}_checkRenderCacheEfficiency(){const t=this.renderCacheEfficiency(this._style);this._style.map._optimizeForTerrain||100!==t.efficiency&&e.warnOnce(`Terrain render cache efficiency is not optimal (${t.efficiency}%) and performance\n may be affected negatively, consider placing all background, fill and line layers before layer\n with id '${t.firstUndrapedLayer}' or create a map using optimizeForTerrain: true option.`)}_onStyleDataEvent(e){e.coord&&"source"===e.dataType?this._clearRenderCacheForTile(e.sourceCacheId,e.coord):"style"===e.dataType&&(this._invalidateRenderCache=!0)}_disable(){if(this.enabled&&(this.enabled=!1,this._sharedDepthStencil=void 0,this.proxySourceCache.deallocRenderCache(),this._style))for(const e in this._style._sourceCaches)this._style._sourceCaches[e].usedForTerrain=!1}destroy(){this._disable(),this._emptyDEMTexture&&this._emptyDEMTexture.destroy(),this._emptyDepthBufferTexture&&this._emptyDepthBufferTexture.destroy(),this.pool.forEach((e=>e.fb.destroy())),this.pool=[],this._depthFBO&&(this._depthFBO.destroy(),this._depthFBO=void 0,this._depthTexture=void 0)}_source(){return this.enabled?this.sourceCache:null}exaggeration(){return this._exaggeration}get visibleDemTiles(){return this._visibleDemTiles}get drapeBufferSize(){const e=2*this.proxySourceCache.getSource().tileSize;return[e,e]}set useVertexMorphing(e){this._useVertexMorphing=e}updateTileBinding(t){if(!this.enabled)return;this.prevTerrainTileForTile=this.terrainTileForTile;const i=this.proxySourceCache,r=this.painter.transform;this._initializing&&(this._initializing=0===r._centerAltitude&&-1===this.getAtPointOrZero(e.MercatorCoordinate.fromLngLat(r.center),-1),this._emptyDEMTextureDirty=!this._initializing);const n=this.proxyCoords=i.getIds().map((e=>{const t=i.getTileByID(e).tileID;return t.projMatrix=r.calculateProjMatrix(t.toUnwrapped()),t}));!function(t,i){const r=i.transform.pointCoordinate(i.transform.getCameraPoint()),n=new e.pointGeometry(r.x,r.y);t.sort(((t,i)=>{if(i.overscaledZ-t.overscaledZ)return i.overscaledZ-t.overscaledZ;const r=new e.pointGeometry(t.canonical.x+(1<<t.canonical.z)*t.wrap,t.canonical.y),o=new e.pointGeometry(i.canonical.x+(1<<i.canonical.z)*i.wrap,i.canonical.y),s=n.mult(1<<t.canonical.z);return s.x-=.5,s.y-=.5,s.distSqr(r)-s.distSqr(o)}))}(n,this.painter),this._previousZoom=r.zoom;const o=this.proxyToSource||{};this.proxyToSource={},n.forEach((e=>{this.proxyToSource[e.key]={}})),this.terrainTileForTile={};const s=this._style._sourceCaches;for(const e in s){const i=s[e];if(!i.used)continue;if(i!==this.sourceCache&&this.resetTileLookupCache(i.id),this._setupProxiedCoordsForOrtho(i,t[e],o),i.usedForTerrain)continue;const r=t[e];i.getSource().reparseOverscaled&&this._assignTerrainTiles(r)}this.proxiedCoords[i.id]=n.map((e=>new vi(e,e.key,this.orthoMatrix))),this._assignTerrainTiles(n),this._prepareDEMTextures(),this._setupDrapedRenderBatches(),this._initFBOPool(),this._setupRenderCache(o),this.renderingToTexture=!1,this._updateTimestamp=e.exported.now();const a={};this._visibleDemTiles=[];for(const e of this.proxyCoords){const t=this.terrainTileForTile[e.key];if(!t)continue;const i=t.tileID.key;i in a||(this._visibleDemTiles.push(t),a[i]=i)}}_assignTerrainTiles(e){this._initializing||e.forEach((e=>{if(this.terrainTileForTile[e.key])return;const t=this._findTileCoveringTileID(e,this.sourceCache);t&&(this.terrainTileForTile[e.key]=t)}))}_prepareDEMTextures(){const e=this.painter.context,t=e.gl;for(const i in this.terrainTileForTile){const r=this.terrainTileForTile[i],n=r.dem;!n||r.demTexture&&!r.needsDEMTextureUpload||(e.activeTexture.set(t.TEXTURE1),si(this.painter,r,n))}}_prepareDemTileUniforms(e,t,i,r){if(!t||null==t.demTexture)return!1;const n=e.tileID.canonical,o=Math.pow(2,t.tileID.canonical.z-n.z),s=r||"";return i[`u_dem_tl${s}`]=[n.x*o%1,n.y*o%1],i[`u_dem_scale${s}`]=o,!0}get emptyDEMTexture(){return!this._emptyDEMTextureDirty&&this._emptyDEMTexture?this._emptyDEMTexture:this._updateEmptyDEMTexture()}get emptyDepthBufferTexture(){const t=this.painter.context,i=t.gl;if(!this._emptyDepthBufferTexture){const r=new e.RGBAImage({width:1,height:1},Uint8Array.of(255,255,255,255));this._emptyDepthBufferTexture=new e.Texture(t,r,i.RGBA,{premultiply:!1})}return this._emptyDepthBufferTexture}_getLoadedAreaMinimum(){let e=0;const t=this._visibleDemTiles.reduce(((t,i)=>{if(!i.dem)return t;const r=i.dem.tree.minimums[0];return r>0&&e++,t+r}),0);return e?t/e:0}_updateEmptyDEMTexture(){const t=this.painter.context,i=t.gl;t.activeTexture.set(i.TEXTURE2);const r=this._getLoadedAreaMinimum(),n=new e.RGBAImage({width:1,height:1},new Uint8Array(e.DEMData.pack(r,this.sourceCache.getSource().encoding)));this._emptyDEMTextureDirty=!1;let o=this._emptyDEMTexture;return o?o.update(n,{premultiply:!1}):o=this._emptyDEMTexture=new e.Texture(t,n,i.RGBA,{premultiply:!1}),o}setupElevationDraw(t,i,r){const n=this.painter.context,o=n.gl,s=(a=this.sourceCache.getSource().encoding,{u_dem:2,u_dem_prev:4,u_dem_unpack:e.DEMData.getUnpackVector(a),u_dem_tl:[0,0],u_dem_tl_prev:[0,0],u_dem_scale:0,u_dem_scale_prev:0,u_dem_size:0,u_dem_lerp:1,u_depth:3,u_depth_size_inv:[0,0],u_exaggeration:0,u_tile_tl_up:[0,0,1],u_tile_tr_up:[0,0,1],u_tile_br_up:[0,0,1],u_tile_bl_up:[0,0,1],u_tile_up_scale:1});var a;s.u_dem_size=this.sourceCache.getSource().tileSize,s.u_exaggeration=this.exaggeration();const l=this.painter.transform,c=l.projection,h=t.tileID.canonical;s.u_tile_tl_up=c.upVector(h,0,0),s.u_tile_tr_up=c.upVector(h,e.EXTENT,0),s.u_tile_br_up=c.upVector(h,e.EXTENT,e.EXTENT),s.u_tile_bl_up=c.upVector(h,0,e.EXTENT),s.u_tile_up_scale=r&&r.useDenormalizedUpVectorScale?gi:c.upVectorScale(h,l.center.lat,l.worldSize).metersToTile;let u=null,d=null,p=1;if(r&&r.morphing&&this._useVertexMorphing){const e=r.morphing.srcDemTile,i=r.morphing.dstDemTile;p=r.morphing.phase,e&&i&&(this._prepareDemTileUniforms(t,e,s,"_prev")&&(d=e),this._prepareDemTileUniforms(t,i,s)&&(u=i))}if(d&&u?(n.activeTexture.set(o.TEXTURE2),u.demTexture.bind(o.NEAREST,o.CLAMP_TO_EDGE,o.NEAREST),n.activeTexture.set(o.TEXTURE4),d.demTexture.bind(o.NEAREST,o.CLAMP_TO_EDGE,o.NEAREST),s.u_dem_lerp=p):(u=this.terrainTileForTile[t.tileID.key],n.activeTexture.set(o.TEXTURE2),(this._prepareDemTileUniforms(t,u,s)?u.demTexture:this.emptyDEMTexture).bind(o.NEAREST,o.CLAMP_TO_EDGE)),n.activeTexture.set(o.TEXTURE3),r&&r.useDepthForOcclusion?(this._depthTexture&&this._depthTexture.bind(o.NEAREST,o.CLAMP_TO_EDGE),this._depthFBO&&(s.u_depth_size_inv=[1/this._depthFBO.width,1/this._depthFBO.height])):(this.emptyDepthBufferTexture.bind(o.NEAREST,o.CLAMP_TO_EDGE),s.u_depth_size_inv=[1,1]),r&&r.useMeterToDem&&u){const t=(1<<u.tileID.canonical.z)*e.mercatorZfromAltitude(1,this.painter.transform.center.lat)*this.sourceCache.getSource().tileSize;s.u_meter_to_dem=t}r&&r.labelPlaneMatrixInv&&(s.u_label_plane_matrix_inv=r.labelPlaneMatrixInv),i.setTerrainUniformValues(n,s)}renderToBackBuffer(t){const i=this.painter,r=this.painter.context;0!==t.length&&(r.bindFramebuffer.set(null),r.viewport.set([0,0,i.width,i.height]),this.renderingToTexture=!1,function(t,i,r,n,o){if("globe"===t.transform.projection.name)!function(t,i,r,n,o){const s=t.context,a=s.gl;let l,c;const h=t.options.showTerrainWireframe?2:0,u=(e,i)=>{if(c===e)return;const r=[pi[e],"PROJECTION_GLOBE_VIEW"];i&&r.push(pi[h]),l=t.useProgram("globeRaster",null,r),c=e},d=t.colorModeForRenderPass(),p=new e.DepthMode(a.LEQUAL,e.DepthMode.ReadWrite,t.depthRangeFor3D);di.update(o);const f=t.transform,m=e.calculateGlobeMercatorMatrix(f),_=[e.mercatorXfromLng(f.center.lng),e.mercatorYfromLat(f.center.lat)],g=t.globeSharedBuffers;if((h?[!1,!0]:[!1]).forEach((h=>{c=-1;const y=h?a.LINES:a.TRIANGLES;for(const c of n){const n=r.getTile(c),x=e.StencilMode.disabled,v=i.prevTerrainTileForTile[c.key],b=i.terrainTileForTile[c.key];ui(v,b)&&di.newMorphing(c.key,v,b,o,250),s.activeTexture.set(a.TEXTURE0),n.texture.bind(a.LINEAR,a.CLAMP_TO_EDGE);const w=di.getMorphValuesForProxy(c.key),T=w?1:0,E={useDenormalizedUpVectorScale:!0};w&&e.extend$1(E,{morphing:{srcDemTile:w.from,dstDemTile:w.to,phase:e.easeCubicInOut(w.phase)}});const S=Float32Array.from(f.globeMatrix),I=e.globeTileLatLngCorners(c.canonical),M=e.getGridMatrix(c.canonical,I),A=hi(f.projMatrix,S,m,e.globeToMercatorTransition(f.zoom),_,M);if(u(T,h),i.setupElevationDraw(n,l,E),t.prepareDrawProgram(s,l,c.toUnwrapped()),g){const[i,r,n]=h?g.getWirefameBuffers(t.context):g.getGridBuffers();l.draw(s,y,p,x,d,e.CullFaceMode.backCCW,A,"globe_raster",i,r,n)}}})),g){l=t.useProgram("globeRaster",null,["GLOBE_POLES","PROJECTION_GLOBE_VIEW"]);for(const o of n){const{x:n,y:c,z:h}=o.canonical,u=0===c,m=c===(1<<h)-1,[y,x,v,b]=g.getPoleBuffers(h);if(b&&(u||m)){const c=r.getTile(o);s.activeTexture.set(a.TEXTURE0),c.texture.bind(a.LINEAR,a.CLAMP_TO_EDGE);let g=e.globePoleMatrixForTile(h,n,f);const w=(t,i)=>t.draw(s,a.TRIANGLES,p,e.StencilMode.disabled,d,e.CullFaceMode.disabled,hi(f.projMatrix,g,g,0,_),"globe_pole_raster",i,v,b);i.setupElevationDraw(c,l,{}),t.prepareDrawProgram(s,l,o.toUnwrapped()),u&&w(l,y),m&&(g=e.scale(e.create(),g,[1,-1,1]),w(l,x))}}}}(t,i,r,n,o);else{const s=t.context,a=s.gl;let l,c;const h=t.options.showTerrainWireframe?2:0,u=(e,i)=>{if(c===e)return;const r=[pi[e]];i&&r.push(pi[h]),l=t.useProgram("terrainRaster",null,r),c=e},d=t.colorModeForRenderPass(),p=new e.DepthMode(a.LEQUAL,e.DepthMode.ReadWrite,t.depthRangeFor3D);di.update(o);const f=t.transform,m=6*Math.pow(1.5,22-f.zoom)*i.exaggeration();(h?[!1,!0]:[!1]).forEach((h=>{c=-1;const _=h?a.LINES:a.TRIANGLES,[g,y]=h?i.getWirefameBuffer():[i.gridIndexBuffer,i.gridSegments];for(const c of n){const n=r.getTile(c),x=e.StencilMode.disabled,v=i.prevTerrainTileForTile[c.key],b=i.terrainTileForTile[c.key];ui(v,b)&&di.newMorphing(c.key,v,b,o,250),s.activeTexture.set(a.TEXTURE0),n.texture.bind(a.LINEAR,a.CLAMP_TO_EDGE,a.LINEAR_MIPMAP_NEAREST);const w=di.getMorphValuesForProxy(c.key),T=w?1:0;let E;w&&(E={morphing:{srcDemTile:w.from,dstDemTile:w.to,phase:e.easeCubicInOut(w.phase)}});const S=ci(c.projMatrix,fi(c.canonical,f.renderWorldCopies)?m/10:m);u(T,h),i.setupElevationDraw(n,l,E),t.prepareDrawProgram(s,l,c.toUnwrapped()),l.draw(s,_,p,x,d,e.CullFaceMode.backCCW,S,"terrain_raster",i.gridBuffer,g,y)}}))}}(i,this,this.proxySourceCache,t,this._updateTimestamp),this.renderingToTexture=!0,t.splice(0,t.length))}renderBatch(t){if(0===this._drapedRenderBatches.length)return t+1;this.renderingToTexture=!0;const i=this.painter,r=this.painter.context,n=this.proxySourceCache,o=this.proxiedCoords[n.id],s=this._drapedRenderBatches.shift(),a=[],l=i.style.order;let c=0;for(const h of o){const o=n.getTileByID(h.proxyTileKey),u=n.proxyCachedFBO[h.key]?n.proxyCachedFBO[h.key][t]:void 0,d=void 0!==u?n.renderCache[u]:this.pool[c++],p=void 0!==u;if(o.texture=d.tex,p&&!d.dirty){a.push(o.tileID);continue}let f;r.bindFramebuffer.set(d.fb.framebuffer),this.renderedToTile=!1,d.dirty&&(r.clear({color:e.Color.transparent,stencil:0}),d.dirty=!1);for(let e=s.start;e<=s.end;++e){const t=i.style._layers[l[e]];if(t.isHidden(i.transform.zoom))continue;const n=i.style._getLayerSourceCache(t),o=n?this.proxyToSource[h.key][n.id]:[h];if(!o)continue;const s=o;r.viewport.set([0,0,d.fb.width,d.fb.height]),f!==(n?n.id:null)&&(this._setupStencil(d,o,t,n),f=n?n.id:null),i.renderLayer(i,n,t,s)}this.renderedToTile?(d.dirty=!0,a.push(o.tileID)):p||--c,5===c&&(c=0,this.renderToBackBuffer(a))}return this.renderToBackBuffer(a),this.renderingToTexture=!1,r.bindFramebuffer.set(null),r.viewport.set([0,0,i.width,i.height]),s.end+1}postRender(){}renderCacheEfficiency(e){const t=e.order.length;if(0===t)return{efficiency:100};let i,r=0,n=0,o=!1;for(let s=0;s<t;++s){const t=e._layers[e.order[s]];this._style.isLayerDraped(t)?(o&&++r,++n):o||(o=!0,i=t.id)}return 0===n?{efficiency:100}:{efficiency:100*(1-r/n),firstUndrapedLayer:i}}getMinElevationBelowMSL(){let e=0;return this._visibleDemTiles.filter((e=>e.dem)).forEach((t=>{e=Math.min(e,t.dem.tree.minimums[0])})),0===e?e:(e-30)*this._exaggeration}raycast(e,t,i){if(!this._visibleDemTiles)return null;const r=this._visibleDemTiles.filter((e=>e.dem)).map((r=>{const n=r.tileID,o=Math.pow(2,n.overscaledZ),{x:s,y:a}=n.canonical,l=s/o,c=(s+1)/o,h=a/o,u=(a+1)/o;return{minx:l,miny:h,maxx:c,maxy:u,t:r.dem.tree.raycastRoot(l,h,c,u,e,t,i),tile:r}}));r.sort(((e,t)=>(null!==e.t?e.t:Number.MAX_VALUE)-(null!==t.t?t.t:Number.MAX_VALUE)));for(const n of r){if(null==n.t)return null;const r=n.tile.dem.tree.raycast(n.minx,n.miny,n.maxx,n.maxy,e,t,i);if(null!=r)return r}return null}_createFBO(){const t=this.painter.context,i=t.gl,r=this.drapeBufferSize;t.activeTexture.set(i.TEXTURE0);const n=new e.Texture(t,{width:r[0],height:r[1],data:null},i.RGBA);n.bind(i.LINEAR,i.CLAMP_TO_EDGE);const o=t.createFramebuffer(r[0],r[1],!1);return o.colorAttachment.set(n.texture),o.depthAttachment=new we(t,o.framebuffer),void 0===this._sharedDepthStencil?(this._sharedDepthStencil=t.createRenderbuffer(t.gl.DEPTH_STENCIL,r[0],r[1]),this._stencilRef=0,o.depthAttachment.set(this._sharedDepthStencil),t.clear({stencil:0})):o.depthAttachment.set(this._sharedDepthStencil),t.extTextureFilterAnisotropic&&!t.extTextureFilterAnisotropicForceOff&&i.texParameterf(i.TEXTURE_2D,t.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,t.extTextureFilterAnisotropicMax),{fb:o,tex:n,dirty:!1}}_initFBOPool(){for(;this.pool.length<Math.min(5,this.proxyCoords.length);)this.pool.push(this._createFBO())}_shouldDisableRenderCache(){if(this._style.light&&this._style.light.hasTransition())return!0;for(const e in this._style._sourceCaches)if(this._style._sourceCaches[e].hasTransition())return!0;return this._style.order.some((e=>{const t=this._style._layers[e],i=t.isHidden(this.painter.transform.zoom),r=t.getCrossfadeParameters(),n=!!r&&1!==r.t,o=t.hasTransition();return"custom"!==t.type&&!i&&(n||o)}))}_clearRasterFadeFromRenderCache(){let e=!1;for(const t in this._style._sourceCaches)if(this._style._sourceCaches[t]._source instanceof Se){e=!0;break}if(e)for(let e=0;e<this._style.order.length;++e){const t=this._style._layers[this._style.order[e]],i=t.isHidden(this.painter.transform.zoom),r=this._style._getLayerSourceCache(t);if("raster"!==t.type||i||!r)continue;const n=t.paint.get("raster-fade-duration");for(const e of this.proxyCoords){const t=this.proxyToSource[e.key][r.id];if(t)for(const e of t){const t=_i(r.getTile(e),r.findLoadedParent(e,0),r,this.painter.transform,n);(1!==t.opacity||0!==t.mix)&&this._clearRenderCacheForTile(r.id,e)}}}}_setupDrapedRenderBatches(){const e=this._style.order,t=e.length;if(0===t)return;const i=[];let r,n=0,o=this._style._layers[e[n]];for(;!this._style.isLayerDraped(o)&&o.isHidden(this.painter.transform.zoom)&&++n<t;)o=this._style._layers[e[n]];for(;n<t;++n){const t=this._style._layers[e[n]];t.isHidden(this.painter.transform.zoom)||(this._style.isLayerDraped(t)?void 0===r&&(r=n):void 0!==r&&(i.push({start:r,end:n-1}),r=void 0))}void 0!==r&&i.push({start:r,end:n-1}),this._drapedRenderBatches=i}_setupRenderCache(e){const t=this.proxySourceCache;if(this._shouldDisableRenderCache()||this._invalidateRenderCache){if(this._invalidateRenderCache=!1,t.renderCache.length>t.renderCachePool.length){const e=Object.values(t.proxyCachedFBO);t.proxyCachedFBO={};for(let i=0;i<e.length;++i){const r=Object.values(e[i]);t.renderCachePool.push(...r)}}return}this._clearRasterFadeFromRenderCache();const i=this.proxyCoords,r=this._tilesDirty;for(let n=i.length-1;n>=0;n--){const o=i[n];if(t.getTileByID(o.key),void 0!==t.proxyCachedFBO[o.key]){const i=e[o.key],n=this.proxyToSource[o.key];let s=0;for(const e in n){const t=n[e],o=i[e];if(!o||o.length!==t.length||t.some(((t,i)=>t!==o[i]||r[e]&&r[e].hasOwnProperty(t.key)))){s=-1;break}++s}for(const e in t.proxyCachedFBO[o.key])t.renderCache[t.proxyCachedFBO[o.key][e]].dirty=s<0||s!==Object.values(i).length}}const n=[...this._drapedRenderBatches];n.sort(((e,t)=>t.end-t.start-(e.end-e.start)));for(const e of n)for(const r of i){if(t.proxyCachedFBO[r.key])continue;let i=t.renderCachePool.pop();void 0===i&&t.renderCache.length<50&&(i=t.renderCache.length,t.renderCache.push(this._createFBO())),void 0!==i&&(t.proxyCachedFBO[r.key]={},t.proxyCachedFBO[r.key][e.start]=i,t.renderCache[i].dirty=!0)}this._tilesDirty={}}_setupStencil(e,t,i,r){if(!r||!this._sourceTilesOverlap[r.id])return void(this._overlapStencilType&&(this._overlapStencilType=!1));const n=this.painter.context,o=n.gl;if(t.length<=1)return void(this._overlapStencilType=!1);let s;if(i.isTileClipped())s=t.length,this._overlapStencilMode.test={func:o.EQUAL,mask:255},this._overlapStencilType="Clip";else{if(!(t[0].overscaledZ>t[t.length-1].overscaledZ))return void(this._overlapStencilType=!1);s=1,this._overlapStencilMode.test={func:o.GREATER,mask:255},this._overlapStencilType="Mask"}this._stencilRef+s>255&&(n.clear({stencil:0}),this._stencilRef=0),this._stencilRef+=s,this._overlapStencilMode.ref=this._stencilRef,i.isTileClipped()&&this._renderTileClippingMasks(t,this._overlapStencilMode.ref)}clipOrMaskOverlapStencilType(){return"Clip"===this._overlapStencilType||"Mask"===this._overlapStencilType}stencilModeForRTTOverlap(t){return this.renderingToTexture&&this._overlapStencilType?("Clip"===this._overlapStencilType&&(this._overlapStencilMode.ref=this.painter._tileClippingMaskIDs.get(t.key)||0),this._overlapStencilMode):e.StencilMode.disabled}_renderTileClippingMasks(t,i){const r=this.painter,n=this.painter.context,o=n.gl;r._tileClippingMaskIDs.clear(),n.setColorMode(e.ColorMode.disabled),n.setDepthMode(e.DepthMode.disabled);const s=r.useProgram("clippingMask");for(const a of t){const t=--i;r._tileClippingMaskIDs.set(a.key,t),s.draw(n,o.TRIANGLES,e.DepthMode.disabled,new e.StencilMode({func:o.ALWAYS,mask:0},t,255,o.KEEP,o.KEEP,o.REPLACE),e.ColorMode.disabled,e.CullFaceMode.disabled,mi(a.projMatrix),"$clipping",r.tileExtentBuffer,r.quadTriangleIndexBuffer,r.tileExtentSegments)}}pointCoordinate(t){const i=this.painter.transform;if(t.x<0||t.x>i.width||t.y<0||t.y>i.height)return null;const r=[t.x,t.y,1,1];e.transformMat4$1(r,r,i.pixelMatrixInverse),e.scale$1(r,r,1/r[3]),r[0]/=i.worldSize,r[1]/=i.worldSize;const n=i._camera.position,o=e.mercatorZfromAltitude(1,i.center.lat),s=[n[0],n[1],n[2]/o,0],a=e.subtract([],r.slice(0,3),s);e.normalize(a,a);const l=this.raycast(s,a,this._exaggeration);return null!==l&&l?(e.scaleAndAdd(s,s,a,l),s[3]=s[2],s[2]*=o,s):null}drawDepth(){const t=this.painter,i=t.context,r=this.proxySourceCache,n=Math.ceil(t.width),o=Math.ceil(t.height);if(!this._depthFBO||this._depthFBO.width===n&&this._depthFBO.height===o||(this._depthFBO.destroy(),this._depthFBO=void 0,this._depthTexture=void 0),!this._depthFBO){const t=i.gl,r=i.createFramebuffer(n,o,!0);i.activeTexture.set(t.TEXTURE0);const s=new e.Texture(i,{width:n,height:o,data:null},t.RGBA);s.bind(t.NEAREST,t.CLAMP_TO_EDGE),r.colorAttachment.set(s.texture);const a=i.createRenderbuffer(i.gl.DEPTH_COMPONENT16,n,o);r.depthAttachment.set(a),this._depthFBO=r,this._depthTexture=s}i.bindFramebuffer.set(this._depthFBO.framebuffer),i.viewport.set([0,0,n,o]),function(t,i,r,n){if("globe"===t.transform.projection.name)return;const o=t.context,s=o.gl;o.clear({depth:1});const a=t.useProgram("terrainDepth"),l=new e.DepthMode(s.LESS,e.DepthMode.ReadWrite,t.depthRangeFor3D);for(const t of n){const n=r.getTile(t),c=ci(t.projMatrix,0);i.setupElevationDraw(n,a),a.draw(o,s.TRIANGLES,l,e.StencilMode.disabled,e.ColorMode.unblended,e.CullFaceMode.backCCW,c,"terrain_depth",i.gridBuffer,i.gridIndexBuffer,i.gridNoSkirtSegments)}}(t,this,r,this.proxyCoords)}_setupProxiedCoordsForOrtho(e,t,i){if(e.getSource()instanceof Ae)return this._setupProxiedCoordsForImageSource(e,t,i);this._findCoveringTileCache[e.id]=this._findCoveringTileCache[e.id]||{};const r=this.proxiedCoords[e.id]=[],n=this.proxyCoords;for(let t=0;t<n.length;t++){const o=n[t],s=this._findTileCoveringTileID(o,e);if(s){const t=this._createProxiedId(o,s,i[o.key]&&i[o.key][e.id]);r.push(t),this.proxyToSource[o.key][e.id]=[t]}}let o=!1;for(let n=0;n<t.length;n++){const s=e.getTile(t[n]);if(!s||!s.hasData())continue;const a=this._findTileCoveringTileID(s.tileID,this.proxySourceCache);if(a&&a.tileID.canonical.z!==s.tileID.canonical.z){const t=this.proxyToSource[a.tileID.key][e.id],n=this._createProxiedId(a.tileID,s,i[a.tileID.key]&&i[a.tileID.key][e.id]);t?t.splice(t.length-1,0,n):this.proxyToSource[a.tileID.key][e.id]=[n],r.push(n),o=!0}}this._sourceTilesOverlap[e.id]=o}_setupProxiedCoordsForImageSource(t,i,r){if(!t.getSource().loaded())return;const n=this.proxiedCoords[t.id]=[],o=this.proxyCoords,s=t.getSource(),a=new e.pointGeometry(s.tileID.x,s.tileID.y)._div(1<<s.tileID.z),l=s.coordinates.map(e.MercatorCoordinate.fromLngLat).reduce(((e,t)=>(e.min.x=Math.min(e.min.x,t.x-a.x),e.min.y=Math.min(e.min.y,t.y-a.y),e.max.x=Math.max(e.max.x,t.x-a.x),e.max.y=Math.max(e.max.y,t.y-a.y),e)),{min:new e.pointGeometry(Number.MAX_VALUE,Number.MAX_VALUE),max:new e.pointGeometry(-Number.MAX_VALUE,-Number.MAX_VALUE)}),c=(t,i)=>{const r=t.wrap+t.canonical.x/(1<<t.canonical.z),n=t.canonical.y/(1<<t.canonical.z),o=e.EXTENT/(1<<t.canonical.z),s=i.wrap+i.canonical.x/(1<<i.canonical.z),a=i.canonical.y/(1<<i.canonical.z);return r+o<s+l.min.x||r>s+l.max.x||n+o<a+l.min.y||n>a+l.max.y};for(let e=0;e<o.length;e++){const s=o[e];for(let e=0;e<i.length;e++){const o=t.getTile(i[e]);if(!o||!o.hasData())continue;if(c(s,o.tileID))continue;const a=this._createProxiedId(s,o,r[s.key]&&r[s.key][t.id]),l=this.proxyToSource[s.key][t.id];l?l.push(a):this.proxyToSource[s.key][t.id]=[a],n.push(a)}}}_createProxiedId(t,i,r){let n=this.orthoMatrix;if(r){const e=r.find((e=>e.key===i.tileID.key));if(e)return e}if(i.tileID.key!==t.key){const r=t.canonical.z-i.tileID.canonical.z;let o,s,a;n=e.create();const l=i.tileID.wrap-t.wrap<<t.overscaledZ;r>0?(o=e.EXTENT>>r,s=o*((i.tileID.canonical.x<<r)-t.canonical.x+l),a=o*((i.tileID.canonical.y<<r)-t.canonical.y)):(o=e.EXTENT<<-r,s=e.EXTENT*(i.tileID.canonical.x-(t.canonical.x+l<<-r)),a=e.EXTENT*(i.tileID.canonical.y-(t.canonical.y<<-r))),e.ortho(n,0,o,0,o,0,1),e.translate(n,n,[s,a,0])}return new vi(i.tileID,t.key,n)}_findTileCoveringTileID(t,i){let r=i.getTile(t);if(r&&r.hasData())return r;const n=this._findCoveringTileCache[i.id],o=n[t.key];if(r=o?i.getTileByID(o):null,r&&r.hasData()||null===o)return r;let s=r?r.tileID:t,a=s.overscaledZ;const l=i.getSource().minzoom,c=[];if(!o){const n=i.getSource().maxzoom;if(t.canonical.z>=n){const r=t.canonical.z-n;i.getSource().reparseOverscaled?(a=Math.max(t.canonical.z+2,i.transform.tileZoom),s=new e.OverscaledTileID(a,t.wrap,n,t.canonical.x>>r,t.canonical.y>>r)):0!==r&&(a=n,s=new e.OverscaledTileID(a,t.wrap,n,t.canonical.x>>r,t.canonical.y>>r))}s.key!==t.key&&(c.push(s.key),r=i.getTile(s))}const h=e=>{c.forEach((t=>{n[t]=e})),c.length=0};for(a-=1;a>=l&&(!r||!r.hasData());a--){r&&h(r.tileID.key);const e=s.calculateScaledKey(a);if(r=i.getTileByID(e),r&&r.hasData())break;const t=n[e];if(null===t)break;void 0===t?c.push(e):r=i.getTileByID(t)}return h(r?r.tileID.key:null),r&&r.hasData()?r:null}findDEMTileFor(e){return this.enabled?this._findTileCoveringTileID(e,this.sourceCache):null}prepareDrawTile(){this.renderedToTile=!0}_clearRenderCacheForTile(e,t){let i=this._tilesDirty[e];i||(i=this._tilesDirty[e]={}),i[t.key]=!0}getWirefameBuffer(){if(!this.wireframeSegments){const t=function(t){let i=0;const r=new e.StructArrayLayout2ui4,n=131;for(let e=1;e<129;e++){for(let t=1;t<129;t++)i=e*n+t,r.emplaceBack(i,i+1),r.emplaceBack(i,i+n),r.emplaceBack(i+1,i+n),128===e&&r.emplaceBack(i+n,i+n+1);r.emplaceBack(i+1,i+1+n)}return r}();this.wireframeIndexBuffer=this.painter.context.createIndexBuffer(t),this.wireframeSegments=e.SegmentVector.simpleSegment(0,0,this.gridBuffer.length,t.length)}return[this.wireframeIndexBuffer,this.wireframeSegments]}}function wi(e){const t=[];for(let i=0;i<e.length;i++){if(null===e[i])continue;const r=e[i].split(" ");t.push(r.pop())}return t}class Ti{static cacheKey(e,t,i){let r=`${e}${i?i.cacheKey:""}`;for(const e of t)r+=`/${e}`;return r}constructor(t,i,r,n,o,s){const a=t.gl;this.program=a.createProgram();const l=wi(r.staticAttributes),c=n?n.getBinderAttributes():[],h=l.concat(c),u=r.staticUniforms?wi(r.staticUniforms):[],d=n?n.getBinderUniforms():[],p=u.concat(d),f=[];for(const e of p)f.indexOf(e)<0&&f.push(e);let m=n?n.defines():[];m=m.concat(s.map((e=>`#define ${e}`)));const _=m.concat("\n#ifdef GL_ES\nprecision mediump float;\n#else\n\n#if !defined(lowp)\n#define lowp\n#endif\n\n#if !defined(mediump)\n#define mediump\n#endif\n\n#if !defined(highp)\n#define highp\n#endif\n\n#endif",ei,Qt.fragmentSource,Jt.fragmentSource,r.fragmentSource).join("\n"),g=m.concat("\n#ifdef GL_ES\nprecision highp float;\n#else\n\n#if !defined(lowp)\n#define lowp\n#endif\n\n#if !defined(mediump)\n#define mediump\n#endif\n\n#if !defined(highp)\n#define highp\n#endif\n\n#endif",ei,Qt.vertexSource,Jt.vertexSource,Kt.vertexSource,r.vertexSource).join("\n"),y=a.createShader(a.FRAGMENT_SHADER);if(a.isContextLost())return void(this.failedToCreate=!0);a.shaderSource(y,_),a.compileShader(y),a.attachShader(this.program,y);const x=a.createShader(a.VERTEX_SHADER);if(a.isContextLost())return void(this.failedToCreate=!0);a.shaderSource(x,g),a.compileShader(x),a.attachShader(this.program,x),this.attributes={};const v={};this.numAttributes=h.length;for(let e=0;e<this.numAttributes;e++)h[e]&&(a.bindAttribLocation(this.program,e,h[e]),this.attributes[h[e]]=e);a.linkProgram(this.program),a.deleteShader(x),a.deleteShader(y);for(let e=0;e<f.length;e++){const t=f[e];if(t&&!v[t]){const e=a.getUniformLocation(this.program,t);e&&(v[t]=e)}}this.fixedUniforms=o(t,v),this.binderUniforms=n?n.getUniforms(t,v):[],-1!==s.indexOf("TERRAIN")&&(this.terrainUniforms=((t,i)=>({u_dem:new e.Uniform1i(t,i.u_dem),u_dem_prev:new e.Uniform1i(t,i.u_dem_prev),u_dem_unpack:new e.Uniform4f(t,i.u_dem_unpack),u_dem_tl:new e.Uniform2f(t,i.u_dem_tl),u_dem_scale:new e.Uniform1f(t,i.u_dem_scale),u_dem_tl_prev:new e.Uniform2f(t,i.u_dem_tl_prev),u_dem_scale_prev:new e.Uniform1f(t,i.u_dem_scale_prev),u_dem_size:new e.Uniform1f(t,i.u_dem_size),u_dem_lerp:new e.Uniform1f(t,i.u_dem_lerp),u_exaggeration:new e.Uniform1f(t,i.u_exaggeration),u_depth:new e.Uniform1i(t,i.u_depth),u_depth_size_inv:new e.Uniform2f(t,i.u_depth_size_inv),u_meter_to_dem:new e.Uniform1f(t,i.u_meter_to_dem),u_label_plane_matrix_inv:new e.UniformMatrix4f(t,i.u_label_plane_matrix_inv),u_tile_tl_up:new e.Uniform3f(t,i.u_tile_tl_up),u_tile_tr_up:new e.Uniform3f(t,i.u_tile_tr_up),u_tile_br_up:new e.Uniform3f(t,i.u_tile_br_up),u_tile_bl_up:new e.Uniform3f(t,i.u_tile_bl_up),u_tile_up_scale:new e.Uniform1f(t,i.u_tile_up_scale)}))(t,v)),-1!==s.indexOf("FOG")&&(this.fogUniforms=((t,i)=>({u_fog_matrix:new e.UniformMatrix4f(t,i.u_fog_matrix),u_fog_range:new e.Uniform2f(t,i.u_fog_range),u_fog_color:new e.Uniform4f(t,i.u_fog_color),u_fog_horizon_blend:new e.Uniform1f(t,i.u_fog_horizon_blend),u_fog_temporal_offset:new e.Uniform1f(t,i.u_fog_temporal_offset)}))(t,v))}setTerrainUniformValues(e,t){if(!this.terrainUniforms)return;const i=this.terrainUniforms;if(!this.failedToCreate){e.program.set(this.program);for(const e in t)i[e].set(t[e])}}setFogUniformValues(e,t){if(!this.fogUniforms)return;const i=this.fogUniforms;if(!this.failedToCreate){e.program.set(this.program);for(const e in t)i[e].location&&i[e].set(t[e])}}draw(e,t,i,r,n,o,s,a,l,c,h,u,d,p,f,m){const _=e.gl;if(this.failedToCreate)return;e.program.set(this.program),e.setDepthMode(i),e.setStencilMode(r),e.setColorMode(n),e.setCullFace(o);for(const e of Object.keys(this.fixedUniforms))this.fixedUniforms[e].set(s[e]);p&&p.setUniforms(e,this.binderUniforms,u,{zoom:d});const g={[_.LINES]:2,[_.TRIANGLES]:3,[_.LINE_STRIP]:1}[t];for(const i of h.get()){const r=i.vaos||(i.vaos={});(r[a]||(r[a]=new ri)).bind(e,this,l,p?p.getPaintVertexBuffers():[],c,i.vertexOffset,f,m),_.drawElements(t,i.primitiveLength*g,_.UNSIGNED_SHORT,i.primitiveOffset*g*2)}}}function Ei(e,t,i){const r=1/P(i,1,t.transform.tileZoom),n=Math.pow(2,i.tileID.overscaledZ),o=i.tileSize*Math.pow(2,t.transform.tileZoom)/n,s=o*(i.tileID.canonical.x+i.tileID.wrap*n),a=o*i.tileID.canonical.y;return{u_image:0,u_texsize:i.imageAtlasTexture.size,u_scale:[r,e.fromScale,e.toScale],u_fade:e.t,u_pixel_coord_upper:[s>>16,a>>16],u_pixel_coord_lower:[65535&s,65535&a]}}const Si=e.create(),Ii=(t,i,r,n,o,s,a,l,c)=>{const h=i.style.light,u=h.properties.get("position"),d=[u.x,u.y,u.z],p=e.create$1();"viewport"===h.properties.get("anchor")&&(e.fromRotation(p,-i.transform.angle),e.transformMat3(d,d,p));const f=h.properties.get("color"),m=i.transform,_={u_matrix:t,u_lightpos:d,u_lightintensity:h.properties.get("intensity"),u_lightcolor:[f.r,f.g,f.b],u_vertical_gradient:+r,u_opacity:n,u_tile_id:[0,0,0],u_zoom_transition:0,u_inv_rot_matrix:Si,u_merc_center:[0,0],u_up_dir:[0,0,0],u_height_lift:0};return"globe"===m.projection.name&&(_.u_tile_id=[o.canonical.x,o.canonical.y,1<<o.canonical.z],_.u_zoom_transition=a,_.u_inv_rot_matrix=c,_.u_merc_center=l,_.u_up_dir=m.projection.upVector(new e.CanonicalTileID(0,0,0),l[0]*e.EXTENT,l[1]*e.EXTENT),_.u_height_lift=s),_},Mi=(t,i,r,n,o,s,a,l,c,h,u)=>{const d=Ii(t,i,r,n,o,l,c,h,u),p={u_height_factor:-Math.pow(2,o.overscaledZ)/a.tileSize/8};return e.extend(d,Ei(s,i,a),p)},Ai=e=>({u_matrix:e}),Ci=(t,i,r,n)=>e.extend(Ai(t),Ei(r,i,n)),zi=(e,t)=>({u_matrix:e,u_world:t}),ki=(t,i,r,n,o)=>e.extend(Ci(t,i,r,n),{u_world:o}),Di=e.create(),Pi=(t,i,r,n,o,s)=>{const a=t.transform,l="globe"===a.projection.name;let c;if("map"===s.paint.get("circle-pitch-alignment"))if(l){const t=e.globePixelsToTileUnits(a.zoom,i.canonical);c=Float32Array.from([t,0,0,t])}else c=a.calculatePixelsToTileUnitsMatrix(r);else c=new Float32Array([a.pixelsToGLUnits[0],0,0,a.pixelsToGLUnits[1]]);const h={u_camera_to_center_distance:a.cameraToCenterDistance,u_matrix:t.translatePosMatrix(i.projMatrix,r,s.paint.get("circle-translate"),s.paint.get("circle-translate-anchor")),u_device_pixel_ratio:e.exported.devicePixelRatio,u_extrude_scale:c,u_inv_rot_matrix:Di,u_merc_center:[0,0],u_tile_id:[0,0,0],u_zoom_transition:0,u_up_dir:[0,0,0]};return l&&(h.u_inv_rot_matrix=n,h.u_merc_center=o,h.u_tile_id=[i.canonical.x,i.canonical.y,1<<i.canonical.z],h.u_zoom_transition=e.globeToMercatorTransition(a.zoom),h.u_up_dir=a.projection.upVector(i.canonical,o[0],o[1])),h},Li=e=>{const t=[];return"map"===e.paint.get("circle-pitch-alignment")&&t.push("PITCH_WITH_MAP"),"map"===e.paint.get("circle-pitch-scale")&&t.push("SCALE_WITH_MAP"),t},Bi=(t,i,r)=>{const n=e.EXTENT/r.tileSize;return{u_matrix:t,u_camera_to_center_distance:i.cameraToCenterDistance,u_extrude_scale:[i.pixelsToGLUnits[0]/n,i.pixelsToGLUnits[1]/n]}},Ri=(e,t,i=1)=>({u_matrix:e,u_color:t,u_overlay:0,u_overlay_scale:i}),Fi=e.create(),Oi=(t,i,r,n,o,s,a)=>{const l=t.transform,c="globe"===l.projection.name,h=c?e.globePixelsToTileUnits(l.zoom,i.canonical):P(r,1,s),u={u_matrix:i.projMatrix,u_extrude_scale:h,u_intensity:a,u_inv_rot_matrix:Fi,u_merc_center:[0,0],u_tile_id:[0,0,0],u_zoom_transition:0,u_up_dir:[0,0,0]};return c&&(u.u_inv_rot_matrix=n,u.u_merc_center=o,u.u_tile_id=[i.canonical.x,i.canonical.y,1<<i.canonical.z],u.u_zoom_transition=e.globeToMercatorTransition(l.zoom),u.u_up_dir=l.projection.upVector(i.canonical,o[0],o[1])),u},Ui=(e,t,i,r,n,o,s)=>{const a=e.transform,l=a.calculatePixelsToTileUnitsMatrix(t),c={u_matrix:Ni(e,t,i,n),u_pixels_to_tile_units:l,u_device_pixel_ratio:s,u_units_to_pixels:[1/a.pixelsToGLUnits[0],1/a.pixelsToGLUnits[1]],u_dash_image:0,u_gradient_image:1,u_image_height:o,u_texsize:[0,0],u_scale:[0,0,0],u_mix:0,u_alpha_discard_threshold:0};if(Gi(i)){const i=ji(t,e.transform);c.u_texsize=t.lineAtlasTexture.size,c.u_scale=[i,r.fromScale,r.toScale],c.u_mix=r.t}return c},Vi=(e,t,i,r,n,o)=>{const s=e.transform,a=ji(t,s);return{u_matrix:Ni(e,t,i,n),u_texsize:t.imageAtlasTexture.size,u_pixels_to_tile_units:s.calculatePixelsToTileUnitsMatrix(t),u_device_pixel_ratio:o,u_image:0,u_scale:[a,r.fromScale,r.toScale],u_fade:r.t,u_units_to_pixels:[1/s.pixelsToGLUnits[0],1/s.pixelsToGLUnits[1]],u_alpha_discard_threshold:0}};function ji(e,t){return 1/P(e,1,t.tileZoom)}function Ni(e,t,i,r){return e.translatePosMatrix(r||t.tileID.projMatrix,t,i.paint.get("line-translate"),i.paint.get("line-translate-anchor"))}function Gi(e){const t=e.paint.get("line-dasharray").value;return t.value||"constant"!==t.kind}const Zi=(e,t,i,r,n,o)=>{return{u_matrix:e,u_tl_parent:t,u_scale_parent:i,u_fade_t:r.mix,u_opacity:r.opacity*n.paint.get("raster-opacity"),u_image0:0,u_image1:1,u_brightness_low:n.paint.get("raster-brightness-min"),u_brightness_high:n.paint.get("raster-brightness-max"),u_saturation_factor:(a=n.paint.get("raster-saturation"),a>0?1-1/(1.001-a):-a),u_contrast_factor:(s=n.paint.get("raster-contrast"),s>0?1/(1-s):1+s),u_spin_weights:$i(n.paint.get("raster-hue-rotate")),u_perspective_transform:o};var s,a};function $i(e){e*=Math.PI/180;const t=Math.sin(e),i=Math.cos(e);return[(2*i+1)/3,(-Math.sqrt(3)*t-i+1)/3,(Math.sqrt(3)*t-i+1)/3]}const qi=e.create(),Xi=(t,i,r,n,o,s,a,l,c,h,u,d,p,f)=>{const m=o.transform,_={u_is_size_zoom_constant:+("constant"===t||"source"===t),u_is_size_feature_constant:+("constant"===t||"camera"===t),u_size_t:i?i.uSizeT:0,u_size:i?i.uSize:0,u_camera_to_center_distance:m.cameraToCenterDistance,u_rotate_symbol:+r,u_aspect_ratio:m.width/m.height,u_fade_change:o.options.fadeDuration?o.symbolFadeChange:1,u_matrix:s,u_label_plane_matrix:a,u_coord_matrix:l,u_is_text:+c,u_pitch_with_map:+n,u_texsize:h,u_texture:0,u_tile_id:[0,0,0],u_zoom_transition:0,u_inv_rot_matrix:qi,u_merc_center:[0,0],u_camera_forward:[0,0,0],u_ecef_origin:[0,0,0],u_tile_matrix:qi};return"globe"===m.projection.name&&(_.u_tile_id=[u.canonical.x,u.canonical.y,1<<u.canonical.z],_.u_zoom_transition=d,_.u_inv_rot_matrix=f,_.u_merc_center=p,_.u_camera_forward=m._camera.forward(),_.u_ecef_origin=e.globeECEFOrigin(m.globeMatrix,u.toUnwrapped()),_.u_tile_matrix=Float32Array.from(m.globeMatrix)),_},Wi=(t,i,r,n,o,s,a,l,c,h,u,d,p,f,m)=>{const{cameraToCenterDistance:_,_pitch:g}=o.transform;return e.extend(Xi(t,i,r,n,o,s,a,l,c,h,d,p,f,m),{u_gamma_scale:n?_*Math.cos(o.terrain?0:g):1,u_device_pixel_ratio:e.exported.devicePixelRatio,u_is_halo:+u})},Hi=(t,i,r,n,o,s,a,l,c,h,u,d,p,f)=>e.extend(Wi(t,i,r,n,o,s,a,l,!0,c,!0,u,d,p,f),{u_texsize_icon:h,u_texture_icon:1}),Yi=(e,t,i)=>({u_matrix:e,u_opacity:t,u_color:i}),Ki=(t,i,r,n,o,s)=>e.extend(function(e,t,i,r){const n=i.imageManager.getPattern(e.from.toString()),o=i.imageManager.getPattern(e.to.toString()),{width:s,height:a}=i.imageManager.getPixelSize(),l=Math.pow(2,r.tileID.overscaledZ),c=r.tileSize*Math.pow(2,i.transform.tileZoom)/l,h=c*(r.tileID.canonical.x+r.tileID.wrap*l),u=c*r.tileID.canonical.y;return{u_image:0,u_pattern_tl_a:n.tl,u_pattern_br_a:n.br,u_pattern_tl_b:o.tl,u_pattern_br_b:o.br,u_texsize:[s,a],u_mix:t.t,u_pattern_size_a:n.displaySize,u_pattern_size_b:o.displaySize,u_scale_a:t.fromScale,u_scale_b:t.toScale,u_tile_units_to_pixels:1/P(r,1,i.transform.tileZoom),u_pixel_coord_upper:[h>>16,u>>16],u_pixel_coord_lower:[65535&h,65535&u]}}(n,s,r,o),{u_matrix:t,u_opacity:i}),Ji={fillExtrusion:(t,i)=>({u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_lightpos:new e.Uniform3f(t,i.u_lightpos),u_lightintensity:new e.Uniform1f(t,i.u_lightintensity),u_lightcolor:new e.Uniform3f(t,i.u_lightcolor),u_vertical_gradient:new e.Uniform1f(t,i.u_vertical_gradient),u_opacity:new e.Uniform1f(t,i.u_opacity),u_tile_id:new e.Uniform3f(t,i.u_tile_id),u_zoom_transition:new e.Uniform1f(t,i.u_zoom_transition),u_inv_rot_matrix:new e.UniformMatrix4f(t,i.u_inv_rot_matrix),u_merc_center:new e.Uniform2f(t,i.u_merc_center),u_up_dir:new e.Uniform3f(t,i.u_up_dir),u_height_lift:new e.Uniform1f(t,i.u_height_lift)}),fillExtrusionPattern:(t,i)=>({u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_lightpos:new e.Uniform3f(t,i.u_lightpos),u_lightintensity:new e.Uniform1f(t,i.u_lightintensity),u_lightcolor:new e.Uniform3f(t,i.u_lightcolor),u_vertical_gradient:new e.Uniform1f(t,i.u_vertical_gradient),u_height_factor:new e.Uniform1f(t,i.u_height_factor),u_tile_id:new e.Uniform3f(t,i.u_tile_id),u_zoom_transition:new e.Uniform1f(t,i.u_zoom_transition),u_inv_rot_matrix:new e.UniformMatrix4f(t,i.u_inv_rot_matrix),u_merc_center:new e.Uniform2f(t,i.u_merc_center),u_up_dir:new e.Uniform3f(t,i.u_up_dir),u_height_lift:new e.Uniform1f(t,i.u_height_lift),u_image:new e.Uniform1i(t,i.u_image),u_texsize:new e.Uniform2f(t,i.u_texsize),u_pixel_coord_upper:new e.Uniform2f(t,i.u_pixel_coord_upper),u_pixel_coord_lower:new e.Uniform2f(t,i.u_pixel_coord_lower),u_scale:new e.Uniform3f(t,i.u_scale),u_fade:new e.Uniform1f(t,i.u_fade),u_opacity:new e.Uniform1f(t,i.u_opacity)}),fill:(t,i)=>({u_matrix:new e.UniformMatrix4f(t,i.u_matrix)}),fillPattern:(t,i)=>({u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_image:new e.Uniform1i(t,i.u_image),u_texsize:new e.Uniform2f(t,i.u_texsize),u_pixel_coord_upper:new e.Uniform2f(t,i.u_pixel_coord_upper),u_pixel_coord_lower:new e.Uniform2f(t,i.u_pixel_coord_lower),u_scale:new e.Uniform3f(t,i.u_scale),u_fade:new e.Uniform1f(t,i.u_fade)}),fillOutline:(t,i)=>({u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_world:new e.Uniform2f(t,i.u_world)}),fillOutlinePattern:(t,i)=>({u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_world:new e.Uniform2f(t,i.u_world),u_image:new e.Uniform1i(t,i.u_image),u_texsize:new e.Uniform2f(t,i.u_texsize),u_pixel_coord_upper:new e.Uniform2f(t,i.u_pixel_coord_upper),u_pixel_coord_lower:new e.Uniform2f(t,i.u_pixel_coord_lower),u_scale:new e.Uniform3f(t,i.u_scale),u_fade:new e.Uniform1f(t,i.u_fade)}),circle:(t,i)=>({u_camera_to_center_distance:new e.Uniform1f(t,i.u_camera_to_center_distance),u_extrude_scale:new e.UniformMatrix2f(t,i.u_extrude_scale),u_device_pixel_ratio:new e.Uniform1f(t,i.u_device_pixel_ratio),u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_inv_rot_matrix:new e.UniformMatrix4f(t,i.u_inv_rot_matrix),u_merc_center:new e.Uniform2f(t,i.u_merc_center),u_tile_id:new e.Uniform3f(t,i.u_tile_id),u_zoom_transition:new e.Uniform1f(t,i.u_zoom_transition),u_up_dir:new e.Uniform3f(t,i.u_up_dir)}),collisionBox:(t,i)=>({u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_camera_to_center_distance:new e.Uniform1f(t,i.u_camera_to_center_distance),u_extrude_scale:new e.Uniform2f(t,i.u_extrude_scale)}),collisionCircle:(t,i)=>({u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_inv_matrix:new e.UniformMatrix4f(t,i.u_inv_matrix),u_camera_to_center_distance:new e.Uniform1f(t,i.u_camera_to_center_distance),u_viewport_size:new e.Uniform2f(t,i.u_viewport_size)}),debug:(t,i)=>({u_color:new e.UniformColor(t,i.u_color),u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_overlay:new e.Uniform1i(t,i.u_overlay),u_overlay_scale:new e.Uniform1f(t,i.u_overlay_scale)}),clippingMask:(t,i)=>({u_matrix:new e.UniformMatrix4f(t,i.u_matrix)}),heatmap:(t,i)=>({u_extrude_scale:new e.Uniform1f(t,i.u_extrude_scale),u_intensity:new e.Uniform1f(t,i.u_intensity),u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_inv_rot_matrix:new e.UniformMatrix4f(t,i.u_inv_rot_matrix),u_merc_center:new e.Uniform2f(t,i.u_merc_center),u_tile_id:new e.Uniform3f(t,i.u_tile_id),u_zoom_transition:new e.Uniform1f(t,i.u_zoom_transition),u_up_dir:new e.Uniform3f(t,i.u_up_dir)}),heatmapTexture:(t,i)=>({u_image:new e.Uniform1i(t,i.u_image),u_color_ramp:new e.Uniform1i(t,i.u_color_ramp),u_opacity:new e.Uniform1f(t,i.u_opacity)}),hillshade:(t,i)=>({u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_image:new e.Uniform1i(t,i.u_image),u_latrange:new e.Uniform2f(t,i.u_latrange),u_light:new e.Uniform2f(t,i.u_light),u_shadow:new e.UniformColor(t,i.u_shadow),u_highlight:new e.UniformColor(t,i.u_highlight),u_accent:new e.UniformColor(t,i.u_accent)}),hillshadePrepare:(t,i)=>({u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_image:new e.Uniform1i(t,i.u_image),u_dimension:new e.Uniform2f(t,i.u_dimension),u_zoom:new e.Uniform1f(t,i.u_zoom),u_unpack:new e.Uniform4f(t,i.u_unpack)}),line:(t,i)=>({u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_pixels_to_tile_units:new e.UniformMatrix2f(t,i.u_pixels_to_tile_units),u_device_pixel_ratio:new e.Uniform1f(t,i.u_device_pixel_ratio),u_units_to_pixels:new e.Uniform2f(t,i.u_units_to_pixels),u_dash_image:new e.Uniform1i(t,i.u_dash_image),u_gradient_image:new e.Uniform1i(t,i.u_gradient_image),u_image_height:new e.Uniform1f(t,i.u_image_height),u_texsize:new e.Uniform2f(t,i.u_texsize),u_scale:new e.Uniform3f(t,i.u_scale),u_mix:new e.Uniform1f(t,i.u_mix),u_alpha_discard_threshold:new e.Uniform1f(t,i.u_alpha_discard_threshold)}),linePattern:(t,i)=>({u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_texsize:new e.Uniform2f(t,i.u_texsize),u_pixels_to_tile_units:new e.UniformMatrix2f(t,i.u_pixels_to_tile_units),u_device_pixel_ratio:new e.Uniform1f(t,i.u_device_pixel_ratio),u_image:new e.Uniform1i(t,i.u_image),u_units_to_pixels:new e.Uniform2f(t,i.u_units_to_pixels),u_scale:new e.Uniform3f(t,i.u_scale),u_fade:new e.Uniform1f(t,i.u_fade),u_alpha_discard_threshold:new e.Uniform1f(t,i.u_alpha_discard_threshold)}),raster:(t,i)=>({u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_tl_parent:new e.Uniform2f(t,i.u_tl_parent),u_scale_parent:new e.Uniform1f(t,i.u_scale_parent),u_fade_t:new e.Uniform1f(t,i.u_fade_t),u_opacity:new e.Uniform1f(t,i.u_opacity),u_image0:new e.Uniform1i(t,i.u_image0),u_image1:new e.Uniform1i(t,i.u_image1),u_brightness_low:new e.Uniform1f(t,i.u_brightness_low),u_brightness_high:new e.Uniform1f(t,i.u_brightness_high),u_saturation_factor:new e.Uniform1f(t,i.u_saturation_factor),u_contrast_factor:new e.Uniform1f(t,i.u_contrast_factor),u_spin_weights:new e.Uniform3f(t,i.u_spin_weights),u_perspective_transform:new e.Uniform2f(t,i.u_perspective_transform)}),symbolIcon:(t,i)=>({u_is_size_zoom_constant:new e.Uniform1i(t,i.u_is_size_zoom_constant),u_is_size_feature_constant:new e.Uniform1i(t,i.u_is_size_feature_constant),u_size_t:new e.Uniform1f(t,i.u_size_t),u_size:new e.Uniform1f(t,i.u_size),u_camera_to_center_distance:new e.Uniform1f(t,i.u_camera_to_center_distance),u_rotate_symbol:new e.Uniform1i(t,i.u_rotate_symbol),u_aspect_ratio:new e.Uniform1f(t,i.u_aspect_ratio),u_fade_change:new e.Uniform1f(t,i.u_fade_change),u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_label_plane_matrix:new e.UniformMatrix4f(t,i.u_label_plane_matrix),u_coord_matrix:new e.UniformMatrix4f(t,i.u_coord_matrix),u_is_text:new e.Uniform1i(t,i.u_is_text),u_pitch_with_map:new e.Uniform1i(t,i.u_pitch_with_map),u_texsize:new e.Uniform2f(t,i.u_texsize),u_tile_id:new e.Uniform3f(t,i.u_tile_id),u_zoom_transition:new e.Uniform1f(t,i.u_zoom_transition),u_inv_rot_matrix:new e.UniformMatrix4f(t,i.u_inv_rot_matrix),u_merc_center:new e.Uniform2f(t,i.u_merc_center),u_camera_forward:new e.Uniform3f(t,i.u_camera_forward),u_tile_matrix:new e.UniformMatrix4f(t,i.u_tile_matrix),u_ecef_origin:new e.Uniform3f(t,i.u_ecef_origin),u_texture:new e.Uniform1i(t,i.u_texture)}),symbolSDF:(t,i)=>({u_is_size_zoom_constant:new e.Uniform1i(t,i.u_is_size_zoom_constant),u_is_size_feature_constant:new e.Uniform1i(t,i.u_is_size_feature_constant),u_size_t:new e.Uniform1f(t,i.u_size_t),u_size:new e.Uniform1f(t,i.u_size),u_camera_to_center_distance:new e.Uniform1f(t,i.u_camera_to_center_distance),u_rotate_symbol:new e.Uniform1i(t,i.u_rotate_symbol),u_aspect_ratio:new e.Uniform1f(t,i.u_aspect_ratio),u_fade_change:new e.Uniform1f(t,i.u_fade_change),u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_label_plane_matrix:new e.UniformMatrix4f(t,i.u_label_plane_matrix),u_coord_matrix:new e.UniformMatrix4f(t,i.u_coord_matrix),u_is_text:new e.Uniform1i(t,i.u_is_text),u_pitch_with_map:new e.Uniform1i(t,i.u_pitch_with_map),u_texsize:new e.Uniform2f(t,i.u_texsize),u_texture:new e.Uniform1i(t,i.u_texture),u_gamma_scale:new e.Uniform1f(t,i.u_gamma_scale),u_device_pixel_ratio:new e.Uniform1f(t,i.u_device_pixel_ratio),u_tile_id:new e.Uniform3f(t,i.u_tile_id),u_zoom_transition:new e.Uniform1f(t,i.u_zoom_transition),u_inv_rot_matrix:new e.UniformMatrix4f(t,i.u_inv_rot_matrix),u_merc_center:new e.Uniform2f(t,i.u_merc_center),u_camera_forward:new e.Uniform3f(t,i.u_camera_forward),u_tile_matrix:new e.UniformMatrix4f(t,i.u_tile_matrix),u_ecef_origin:new e.Uniform3f(t,i.u_ecef_origin),u_is_halo:new e.Uniform1i(t,i.u_is_halo)}),symbolTextAndIcon:(t,i)=>({u_is_size_zoom_constant:new e.Uniform1i(t,i.u_is_size_zoom_constant),u_is_size_feature_constant:new e.Uniform1i(t,i.u_is_size_feature_constant),u_size_t:new e.Uniform1f(t,i.u_size_t),u_size:new e.Uniform1f(t,i.u_size),u_camera_to_center_distance:new e.Uniform1f(t,i.u_camera_to_center_distance),u_rotate_symbol:new e.Uniform1i(t,i.u_rotate_symbol),u_aspect_ratio:new e.Uniform1f(t,i.u_aspect_ratio),u_fade_change:new e.Uniform1f(t,i.u_fade_change),u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_label_plane_matrix:new e.UniformMatrix4f(t,i.u_label_plane_matrix),u_coord_matrix:new e.UniformMatrix4f(t,i.u_coord_matrix),u_is_text:new e.Uniform1i(t,i.u_is_text),u_pitch_with_map:new e.Uniform1i(t,i.u_pitch_with_map),u_texsize:new e.Uniform2f(t,i.u_texsize),u_texsize_icon:new e.Uniform2f(t,i.u_texsize_icon),u_texture:new e.Uniform1i(t,i.u_texture),u_texture_icon:new e.Uniform1i(t,i.u_texture_icon),u_gamma_scale:new e.Uniform1f(t,i.u_gamma_scale),u_device_pixel_ratio:new e.Uniform1f(t,i.u_device_pixel_ratio),u_is_halo:new e.Uniform1i(t,i.u_is_halo)}),background:(t,i)=>({u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_opacity:new e.Uniform1f(t,i.u_opacity),u_color:new e.UniformColor(t,i.u_color)}),backgroundPattern:(t,i)=>({u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_opacity:new e.Uniform1f(t,i.u_opacity),u_image:new e.Uniform1i(t,i.u_image),u_pattern_tl_a:new e.Uniform2f(t,i.u_pattern_tl_a),u_pattern_br_a:new e.Uniform2f(t,i.u_pattern_br_a),u_pattern_tl_b:new e.Uniform2f(t,i.u_pattern_tl_b),u_pattern_br_b:new e.Uniform2f(t,i.u_pattern_br_b),u_texsize:new e.Uniform2f(t,i.u_texsize),u_mix:new e.Uniform1f(t,i.u_mix),u_pattern_size_a:new e.Uniform2f(t,i.u_pattern_size_a),u_pattern_size_b:new e.Uniform2f(t,i.u_pattern_size_b),u_scale_a:new e.Uniform1f(t,i.u_scale_a),u_scale_b:new e.Uniform1f(t,i.u_scale_b),u_pixel_coord_upper:new e.Uniform2f(t,i.u_pixel_coord_upper),u_pixel_coord_lower:new e.Uniform2f(t,i.u_pixel_coord_lower),u_tile_units_to_pixels:new e.Uniform1f(t,i.u_tile_units_to_pixels)}),terrainRaster:li,terrainDepth:li,skybox:(t,i)=>({u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_sun_direction:new e.Uniform3f(t,i.u_sun_direction),u_cubemap:new e.Uniform1i(t,i.u_cubemap),u_opacity:new e.Uniform1f(t,i.u_opacity),u_temporal_offset:new e.Uniform1f(t,i.u_temporal_offset)}),skyboxGradient:(t,i)=>({u_matrix:new e.UniformMatrix4f(t,i.u_matrix),u_color_ramp:new e.Uniform1i(t,i.u_color_ramp),u_center_direction:new e.Uniform3f(t,i.u_center_direction),u_radius:new e.Uniform1f(t,i.u_radius),u_opacity:new e.Uniform1f(t,i.u_opacity),u_temporal_offset:new e.Uniform1f(t,i.u_temporal_offset)}),skyboxCapture:(t,i)=>({u_matrix_3f:new e.UniformMatrix3f(t,i.u_matrix_3f),u_sun_direction:new e.Uniform3f(t,i.u_sun_direction),u_sun_intensity:new e.Uniform1f(t,i.u_sun_intensity),u_color_tint_r:new e.Uniform4f(t,i.u_color_tint_r),u_color_tint_m:new e.Uniform4f(t,i.u_color_tint_m),u_luminance:new e.Uniform1f(t,i.u_luminance)}),globeRaster:(t,i)=>({u_proj_matrix:new e.UniformMatrix4f(t,i.u_proj_matrix),u_globe_matrix:new e.UniformMatrix4f(t,i.u_globe_matrix),u_merc_matrix:new e.UniformMatrix4f(t,i.u_merc_matrix),u_zoom_transition:new e.Uniform1f(t,i.u_zoom_transition),u_merc_center:new e.Uniform2f(t,i.u_merc_center),u_image0:new e.Uniform1i(t,i.u_image0),u_grid_matrix:new e.UniformMatrix3f(t,i.u_grid_matrix)}),globeAtmosphere:(t,i)=>({u_frustum_tl:new e.Uniform3f(t,i.u_frustum_tl),u_frustum_tr:new e.Uniform3f(t,i.u_frustum_tr),u_frustum_br:new e.Uniform3f(t,i.u_frustum_br),u_frustum_bl:new e.Uniform3f(t,i.u_frustum_bl),u_globe_pos:new e.Uniform3f(t,i.u_globe_pos),u_globe_radius:new e.Uniform1f(t,i.u_globe_radius),u_opacity:new e.Uniform1f(t,i.u_opacity),u_fadeout_range:new e.Uniform1f(t,i.u_fadeout_range),u_start_color:new e.Uniform3f(t,i.u_start_color),u_end_color:new e.Uniform3f(t,i.u_end_color)})};let Qi;function er(t,i,r,n,o,s,a){const l=t.context,c=l.gl,h=t.useProgram("collisionBox"),u=[];let d=0,p=0;for(let f=0;f<n.length;f++){const m=n[f],_=i.getTile(m),g=_.getBucket(r);if(!g)continue;let y=m.projMatrix;0===o[0]&&0===o[1]||(y=t.translatePosMatrix(m.projMatrix,_,o,s));const x=a?g.textCollisionBox:g.iconCollisionBox,v=g.collisionCircleArray;if(v.length>0){const i=e.create(),r=y;e.mul(i,g.placementInvProjMatrix,t.transform.glCoordMatrix),e.mul(i,i,g.placementViewportMatrix),u.push({circleArray:v,circleOffset:p,transform:r,invTransform:i}),d+=v.length/4,p=d}x&&(t.terrain&&t.terrain.setupElevationDraw(_,h),h.draw(l,c.LINES,e.DepthMode.disabled,e.StencilMode.disabled,t.colorModeForRenderPass(),e.CullFaceMode.disabled,Bi(y,t.transform,_),r.id,x.layoutVertexBuffer,x.indexBuffer,x.segments,null,t.transform.zoom,null,x.collisionVertexBuffer,x.collisionVertexBufferExt))}if(!a||!u.length)return;const f=t.useProgram("collisionCircle"),m=new e.StructArrayLayout2f1f2i16;m.resize(4*d),m._trim();let _=0;for(const e of u)for(let t=0;t<e.circleArray.length/4;t++){const i=4*t,r=e.circleArray[i+0],n=e.circleArray[i+1],o=e.circleArray[i+2],s=e.circleArray[i+3];m.emplace(_++,r,n,o,s,0),m.emplace(_++,r,n,o,s,1),m.emplace(_++,r,n,o,s,2),m.emplace(_++,r,n,o,s,3)}(!Qi||Qi.length<2*d)&&(Qi=function(t){const i=2*t,r=new e.StructArrayLayout3ui6;r.resize(i),r._trim();for(let e=0;e<i;e++){const t=6*e;r.uint16[t+0]=4*e+0,r.uint16[t+1]=4*e+1,r.uint16[t+2]=4*e+2,r.uint16[t+3]=4*e+2,r.uint16[t+4]=4*e+3,r.uint16[t+5]=4*e+0}return r}(d));const g=l.createIndexBuffer(Qi,!0),y=l.createVertexBuffer(m,e.collisionCircleLayout.members,!0);for(const i of u){const n={u_matrix:i.transform,u_inv_matrix:i.invTransform,u_camera_to_center_distance:(x=t.transform).cameraToCenterDistance,u_viewport_size:[x.width,x.height]};f.draw(l,c.TRIANGLES,e.DepthMode.disabled,e.StencilMode.disabled,t.colorModeForRenderPass(),e.CullFaceMode.disabled,n,r.id,y,g,e.SegmentVector.simpleSegment(0,2*i.circleOffset,i.circleArray.length,i.circleArray.length/2),null,t.transform.zoom,null,null,null)}var x;y.destroy(),g.destroy()}const tr=e.create();function ir(t,i,r,n,o,s){const{horizontalAlign:a,verticalAlign:l}=e.getAnchorAlignment(t),c=-(a-.5)*i,h=-(l-.5)*r,u=e.evaluateVariableOffset(t,n);return new e.pointGeometry((c/o+u[0])*s,(h/o+u[1])*s)}function rr(t,i,r,n,o,s,a,l,c,h,u,d){const p=t.text.placedSymbolArray,f=t.text.dynamicLayoutVertexArray,m=t.icon.dynamicLayoutVertexArray,_={},g=l.projMatrix,y=s.elevation,x=d.upVectorScale(l.canonical,s.center.lat,s.worldSize);f.clear();for(let m=0;m<p.length;m++){const v=p.get(m),b=t.allowVerticalPlacement&&!v.placedOrientation,w=v.hidden||!v.crossTileID||b?null:n[v.crossTileID];if(w){const n=new e.pointGeometry(v.tileAnchorX,v.tileAnchorY),p=d.upVector(l.canonical,n.x,n.y),m=y?y.getAtTileOffset(l,n.x,n.y):0,b=it([v.projectedAnchorX+m*p[0]*x.metersToTile,v.projectedAnchorY+m*p[1]*x.metersToTile,v.projectedAnchorZ+m*p[2]*x.metersToTile],r?g:a),T=rt(s.cameraToCenterDistance,b.signedDistanceFromCamera);let E=o.evaluateSizeForFeature(t.textSizeData,h,v)*T/e.ONE_EM;r&&(E*=t.tilePixelRatio/c);const{width:S,height:I,anchor:M,textOffset:A,textScale:C}=w,z=ir(M,S,I,A,C,E),k=r?tt(n.add(z),a,m*x.metersToLabelSpace).point:b.point.add(i?z.rotate(-s.angle):z),D=t.allowVerticalPlacement&&v.placedOrientation===e.WritingMode.vertical?Math.PI/2:0;for(let t=0;t<v.numGlyphs;t++)e.addDynamicAttributes(f,k,D);u&&v.associatedIconIndex>=0&&(_[v.associatedIconIndex]={shiftedAnchor:k,angle:D})}else pt(v.numGlyphs,f)}if(u){m.clear();const i=t.icon.placedSymbolArray;for(let t=0;t<i.length;t++){const r=i.get(t);if(r.hidden)pt(r.numGlyphs,m);else{const i=_[t];if(i)for(let t=0;t<r.numGlyphs;t++)e.addDynamicAttributes(m,i.shiftedAnchor,i.angle);else pt(r.numGlyphs,m)}}t.icon.dynamicLayoutVertexBuffer.updateData(m)}t.text.dynamicLayoutVertexBuffer.updateData(f)}function nr(e,t,i){return i.iconsInText&&t?"symbolTextAndIcon":e?"symbolSDF":"symbolIcon"}function or(t,i,r,n,o,s,a,l,c,h,u,d){const p=t.context,f=p.gl,m=t.transform,_="map"===l,g="map"===c,y=_&&"point"!==r.layout.get("symbol-placement"),x=_&&!g&&!y,v=void 0!==r.layout.get("symbol-sort-key").constantOr(1);let b=!1;const w=t.depthModeForSublayer(0,e.DepthMode.ReadOnly),T=[e.mercatorXfromLng(m.center.lng),e.mercatorYfromLat(m.center.lat)],E=r.layout.get("text-variable-anchor"),S="globe"===m.projection.name,I=S?e.globeToMercatorTransition(m.zoom):0,M=[],A=[];t.terrain&&g&&A.push("PITCH_WITH_MAP_TERRAIN"),S&&A.push("PROJECTION_GLOBE_VIEW");for(const l of n){const n=i.getTile(l),c=n.getBucket(r);if(!c||c.projection!==m.projection.name)continue;const u=o?c.text:c.icon;if(!u||c.fullyClipped||!u.segments.get().length)continue;const d=u.programConfigurations.get(r.id),p=o||c.sdfIcons,w=o?c.textSizeData:c.iconSizeData,S=g||0!==m.pitch,C=e.evaluateSizeForZoom(w,m.zoom);let z,k,D,P,L=[0,0],B=null;if(o){if(k=n.glyphAtlasTexture,D=f.LINEAR,z=n.glyphAtlasTexture.size,c.iconsInText){L=n.imageAtlasTexture.size,B=n.imageAtlasTexture;const e="composite"===w.kind||"camera"===w.kind;P=S||t.options.rotating||t.options.zooming||e?f.LINEAR:f.NEAREST}}else{const e=1!==r.layout.get("icon-size").constantOr(0)||c.iconsNeedLinear;k=n.imageAtlasTexture,D=p||t.options.rotating||t.options.zooming||e||S?f.LINEAR:f.NEAREST,z=n.imageAtlasTexture.size}const R=t.transform.calculatePixelsToTileUnitsMatrix(n),F=Qe(l.projMatrix,n.tileID.canonical,g,_,t.transform,R),O=t.terrain&&g&&y?e.invert(e.create(),F):tr,U=et(l.projMatrix,n.tileID.canonical,g,_,t.transform,R),V=E&&c.hasTextData(),j="none"!==r.layout.get("icon-text-fit")&&V&&c.hasIconData();if(y){const e=m.elevation,i=e?e.getAtTileOffsetFunc(l,m.center.lat,m.worldSize,m.projection):e=>[0,0,0];ot(c,l.projMatrix,t,o,F,U,g,h,i,l)}const N=y||o&&E||j,G=t.translatePosMatrix(l.projMatrix,n,s,a),Z=N?tr:F,$=t.translatePosMatrix(U,n,s,a,!0),q=m.projection.createInversionMatrix(m,l.canonical),X=N?A.concat(["PROJECTED_POS_ON_VIEWPORT"]):A,W=p&&0!==r.paint.get(o?"text-halo-width":"icon-halo-width").constantOr(1);let H;H=p?c.iconsInText?Hi(w.kind,C,x,g,t,G,Z,$,z,L,l,I,T,q):Wi(w.kind,C,x,g,t,G,Z,$,o,z,!0,l,I,T,q):Xi(w.kind,C,x,g,t,G,Z,$,o,z,l,I,T,q);const Y={program:t.useProgram(nr(p,o,c),d,X),buffers:u,uniformValues:H,atlasTexture:k,atlasTextureIcon:B,atlasInterpolation:D,atlasInterpolationIcon:P,isSDF:p,hasHalo:W,tile:n,labelPlaneMatrixInv:O};if(v&&c.canOverlap){b=!0;const t=u.segments.get();for(const i of t)M.push({segments:new e.SegmentVector([i]),sortKey:i.sortKey,state:Y})}else M.push({segments:u.segments,sortKey:0,state:Y})}b&&M.sort(((e,t)=>e.sortKey-t.sortKey));for(const e of M){const i=e.state;if(t.terrain&&t.terrain.setupElevationDraw(i.tile,i.program,{useDepthForOcclusion:!S,labelPlaneMatrixInv:i.labelPlaneMatrixInv}),p.activeTexture.set(f.TEXTURE0),i.atlasTexture.bind(i.atlasInterpolation,f.CLAMP_TO_EDGE),i.atlasTextureIcon&&(p.activeTexture.set(f.TEXTURE1),i.atlasTextureIcon&&i.atlasTextureIcon.bind(i.atlasInterpolationIcon,f.CLAMP_TO_EDGE)),i.isSDF){const n=i.uniformValues;i.hasHalo&&(n.u_is_halo=1,sr(i.buffers,e.segments,r,t,i.program,w,u,d,n)),n.u_is_halo=0}sr(i.buffers,e.segments,r,t,i.program,w,u,d,i.uniformValues)}}function sr(t,i,r,n,o,s,a,l,c){const h=n.context;o.draw(h,h.gl.TRIANGLES,s,a,l,e.CullFaceMode.disabled,c,r.id,t.layoutVertexBuffer,t.indexBuffer,i,r.paint,n.transform.zoom,t.programConfigurations.get(r.id),t.dynamicLayoutVertexBuffer,t.opacityVertexBuffer)}function ar(t,i,r,n,o,s,a){const l=t.context.gl,c=r.paint.get("fill-pattern"),h=c&&c.constantOr(1),u=r.getCrossfadeParameters();let d,p,f,m,_;a?(p=h&&!r.getPaintProperty("fill-outline-color")?"fillOutlinePattern":"fillOutline",d=l.LINES):(p=h?"fillPattern":"fill",d=l.TRIANGLES);for(const g of n){const n=i.getTile(g);if(h&&!n.patternsLoaded())continue;const y=n.getBucket(r);if(!y)continue;t.prepareDrawTile();const x=y.programConfigurations.get(r.id),v=t.useProgram(p,x);h&&(t.context.activeTexture.set(l.TEXTURE0),n.imageAtlasTexture.bind(l.LINEAR,l.CLAMP_TO_EDGE),x.updatePaintBuffers(u));const b=c.constantOr(null);if(b&&n.imageAtlas){const e=n.imageAtlas,t=e.patternPositions[b.to.toString()],i=e.patternPositions[b.from.toString()];t&&i&&x.setConstantPatternPositions(t,i)}const w=t.translatePosMatrix(g.projMatrix,n,r.paint.get("fill-translate"),r.paint.get("fill-translate-anchor"));if(a){m=y.indexBuffer2,_=y.segments2;const e=t.terrain&&t.terrain.renderingToTexture?t.terrain.drapeBufferSize:[l.drawingBufferWidth,l.drawingBufferHeight];f="fillOutlinePattern"===p&&h?ki(w,t,u,n,e):zi(w,e)}else m=y.indexBuffer,_=y.segments,f=h?Ci(w,t,u,n):Ai(w);t.prepareDrawProgram(t.context,v,g.toUnwrapped()),v.draw(t.context,d,o,t.stencilModeForClipping(g),s,e.CullFaceMode.disabled,f,r.id,y.layoutVertexBuffer,m,_,r.paint,t.transform.zoom,x)}}function lr(t,i,r,n,o,s,a){const l=t.context,c=l.gl,h=t.transform,u=r.paint.get("fill-extrusion-pattern"),d=u.constantOr(1),p=r.getCrossfadeParameters(),f=r.paint.get("fill-extrusion-opacity"),m=function(t){if("globe"!==t.projection.name)return 0;const i=Math.PI/32,r=Math.tan(i),n=e.earthRadius;return n*Math.sqrt(1+2*r*r)-n}(h),_="globe"===h.projection.name,g=_?e.globeToMercatorTransition(h.zoom):0,y=[e.mercatorXfromLng(h.center.lng),e.mercatorYfromLat(h.center.lat)],x=[];_&&x.push("PROJECTION_GLOBE_VIEW");for(const v of n){const n=i.getTile(v),b=n.getBucket(r);if(!b||b.projection!==h.projection.name)continue;const w=b.programConfigurations.get(r.id),T=t.useProgram(d?"fillExtrusionPattern":"fillExtrusion",w,x);if(t.terrain){const e=t.terrain;if(t.style.terrainSetForDrapingOnly())e.setupElevationDraw(n,T,{useMeterToDem:!0});else{if(!b.enableTerrain)continue;if(e.setupElevationDraw(n,T,{useMeterToDem:!0}),cr(l,i,v,b,r,e),!b.centroidVertexBuffer){const e=T.attributes.a_centroid_pos;void 0!==e&&c.vertexAttrib2f(e,0,0)}}}d&&(t.context.activeTexture.set(c.TEXTURE0),n.imageAtlasTexture.bind(c.LINEAR,c.CLAMP_TO_EDGE),w.updatePaintBuffers(p));const E=u.constantOr(null);if(E&&n.imageAtlas){const e=n.imageAtlas,t=e.patternPositions[E.to.toString()],i=e.patternPositions[E.from.toString()];t&&i&&w.setConstantPatternPositions(t,i)}const S=t.translatePosMatrix(v.projMatrix,n,r.paint.get("fill-extrusion-translate"),r.paint.get("fill-extrusion-translate-anchor")),I=h.projection.createInversionMatrix(h,v.canonical),M=r.paint.get("fill-extrusion-vertical-gradient"),A=d?Mi(S,t,M,f,v,p,n,m,g,y,I):Ii(S,t,M,f,v,m,g,y,I);t.prepareDrawProgram(l,T,v.toUnwrapped()),T.draw(l,l.gl.TRIANGLES,o,s,a,e.CullFaceMode.backCCW,A,r.id,b.layoutVertexBuffer,b.indexBuffer,b.segments,r.paint,t.transform.zoom,w,t.terrain?b.centroidVertexBuffer:null,_?b.layoutVertexExtBuffer:null)}}function cr(t,i,r,n,o,s){const a=[t=>{let i=t.canonical.x-1,r=t.wrap;return i<0&&(i=(1<<t.canonical.z)-1,r--),new e.OverscaledTileID(t.overscaledZ,r,t.canonical.z,i,t.canonical.y)},t=>{let i=t.canonical.x+1,r=t.wrap;return i===1<<t.canonical.z&&(i=0,r++),new e.OverscaledTileID(t.overscaledZ,r,t.canonical.z,i,t.canonical.y)},t=>new e.OverscaledTileID(t.overscaledZ,t.wrap,t.canonical.z,t.canonical.x,(0===t.canonical.y?1<<t.canonical.z:t.canonical.y)-1),t=>new e.OverscaledTileID(t.overscaledZ,t.wrap,t.canonical.z,t.canonical.x,t.canonical.y===(1<<t.canonical.z)-1?0:t.canonical.y+1)],l=e=>{const t=i.getSource().minzoom,r=e=>{const t=i.getTileByID(e);if(t&&t.hasData())return t.getBucket(o)},n=[0,-1,1];for(const i of n){if(e.overscaledZ+i<t)continue;const n=r(e.calculateScaledKey(e.overscaledZ+i));if(n)return n}},c=[0,0,0],h=(t,i)=>(c[0]=Math.min(t.min.y,i.min.y),c[1]=Math.max(t.max.y,i.max.y),c[2]=e.EXTENT-i.min.x>t.max.x?i.min.x-e.EXTENT:t.max.x,c),u=(t,i)=>(c[0]=Math.min(t.min.x,i.min.x),c[1]=Math.max(t.max.x,i.max.x),c[2]=e.EXTENT-i.min.y>t.max.y?i.min.y-e.EXTENT:t.max.y,c),d=[(e,t)=>h(e,t),(e,t)=>h(t,e),(e,t)=>u(e,t),(e,t)=>u(t,e)],p=new e.pointGeometry(0,0);let f,m,_;const g=(t,i,n,o,a)=>{const l=[[o?n:t,o?t:n,0],[o?n:i,o?i:n,0]],c=a<0?e.EXTENT+a:a,h=[o?c:(t+i)/2,o?(t+i)/2:c,0];return 0===n&&a<0||0!==n&&a>0?s.getForTilePoints(_,[h],!0,m):l.push(h),s.getForTilePoints(r,l,!0,f),Math.max(l[0][2],l[1][2],h[2])/s.exaggeration()};for(let t=0;t<4;t++){const i=(t<2?1:5)-t,o=n.borders[t];if(0===o.length)continue;const c=_=a[t](r),h=l(c);if(!(h&&h instanceof e.FillExtrusionBucket&&h.enableTerrain))continue;if(n.borderDoneWithNeighborZ[t]===h.canonical.z&&h.borderDoneWithNeighborZ[i]===n.canonical.z)continue;if(m=s.findDEMTileFor(c),!m||!m.dem)continue;if(!f){const e=s.findDEMTileFor(r);if(!e||!e.dem)return;f=e}const u=h.borders[i];let y=0;const x=h.borderDoneWithNeighborZ[i]!==n.canonical.z;if(n.canonical.z===h.canonical.z){for(let r=0;r<o.length;r++){const s=n.featuresOnBorder[o[r]],a=s.borders[t];let l;for(;y<u.length&&(l=h.featuresOnBorder[u[y]],!(l.borders[i][1]>a[0]+3));)x&&h.encodeCentroid(void 0,l,!1),y++;if(l&&y<u.length){const r=y;let o=0;for(;!(l.borders[i][0]>a[1]-3)&&(o++,++y!==u.length);)l=h.featuresOnBorder[u[y]];if(l=h.featuresOnBorder[u[r]],s.intersectsCount()>1||l.intersectsCount()>1||1!==o){1!==o&&(y=r),n.encodeCentroid(void 0,s,!1),x&&h.encodeCentroid(void 0,l,!1);continue}const c=d[t](s,l),f=t%2?e.EXTENT-1:0;p.x=g(c[0],Math.min(e.EXTENT-1,c[1]),f,t<2,c[2]),p.y=0,n.encodeCentroid(p,s,!1),x&&h.encodeCentroid(p,l,!1)}else n.encodeCentroid(void 0,s,!1)}n.borderDoneWithNeighborZ[t]=h.canonical.z,n.needsCentroidUpdate=!0,x&&(h.borderDoneWithNeighborZ[i]=n.canonical.z,h.needsCentroidUpdate=!0)}else{for(const e of o)n.encodeCentroid(void 0,n.featuresOnBorder[e],!1);if(x){for(const e of u)h.encodeCentroid(void 0,h.featuresOnBorder[e],!1);h.borderDoneWithNeighborZ[i]=n.canonical.z,h.needsCentroidUpdate=!0}n.borderDoneWithNeighborZ[t]=h.canonical.z,n.needsCentroidUpdate=!0}}(n.needsCentroidUpdate||!n.centroidVertexBuffer&&0!==n.centroidVertexArray.length)&&n.uploadCentroid(t)}const hr=new e.Color(1,0,0,1),ur=new e.Color(0,1,0,1),dr=new e.Color(0,0,1,1),pr=new e.Color(1,0,1,1),fr=new e.Color(0,1,1,1);function mr(e,t,i,r){gr(e,0,t+i/2,e.transform.width,i,r)}function _r(e,t,i,r){gr(e,t-i/2,0,i,e.transform.height,r)}function gr(t,i,r,n,o,s){const a=t.context,l=a.gl;l.enable(l.SCISSOR_TEST),l.scissor(i*e.exported.devicePixelRatio,r*e.exported.devicePixelRatio,n*e.exported.devicePixelRatio,o*e.exported.devicePixelRatio),a.clear({color:s}),l.disable(l.SCISSOR_TEST)}function yr(t,i,r){const n=t.context,o=n.gl,s="globe"===t.transform.projection.name,a=r.projMatrix,l=t.useProgram("debug",null,s?["PROJECTION_GLOBE_VIEW"]:null),c=i.getTileByID(r.key);t.terrain&&t.terrain.setupElevationDraw(c,l);const h=e.DepthMode.disabled,u=e.StencilMode.disabled,d=t.colorModeForRenderPass(),p="$debug";n.activeTexture.set(o.TEXTURE0),t.emptyTexture.bind(o.LINEAR,o.CLAMP_TO_EDGE),s?c._makeGlobeTileDebugBuffers(t.context,t.transform.projection):c._makeDebugTileBoundsBuffers(t.context,t.transform.projection);const f=c._tileDebugBuffer||t.debugBuffer,m=c._tileDebugIndexBuffer||t.debugIndexBuffer,_=c._tileDebugSegments||t.debugSegments;l.draw(n,o.LINE_STRIP,h,u,d,e.CullFaceMode.disabled,Ri(a,e.Color.red),p,f,m,_,null,null,null,c._globeTileDebugBorderBuffer);const g=c.latestRawTileData,y=Math.floor((g&&g.byteLength||0)/1024),x=i.getTile(r).tileSize,v=512/Math.min(x,512)*(r.overscaledZ/t.transform.zoom)*.5;let b=r.canonical.toString();r.overscaledZ!==r.canonical.z&&(b+=` => ${r.overscaledZ}`),function(e,t){e.initDebugOverlayCanvas();const i=e.debugOverlayCanvas,r=e.context.gl,n=e.debugOverlayCanvas.getContext("2d");n.clearRect(0,0,i.width,i.height),n.shadowColor="white",n.shadowBlur=2,n.lineWidth=1.5,n.strokeStyle="white",n.textBaseline="top",n.font="bold 36px Open Sans, sans-serif",n.fillText(t,5,5),n.strokeText(t,5,5),e.debugOverlayTexture.update(i),e.debugOverlayTexture.bind(r.LINEAR,r.CLAMP_TO_EDGE)}(t,`${b} ${y}kb`);const w=c._tileDebugTextBuffer||t.debugBuffer,T=c._tileDebugTextIndexBuffer||t.quadTriangleIndexBuffer,E=c._tileDebugTextSegments||t.debugSegments;l.draw(n,o.TRIANGLES,h,u,e.ColorMode.alphaBlended,e.CullFaceMode.disabled,Ri(a,e.Color.transparent,v),p,w,T,E,null,null,null,c._globeTileDebugTextBuffer)}const xr=e.createLayout([{name:"a_pos_3f",components:3,type:"Float32"}]),{members:vr}=xr;function br(e,t,i,r){e.emplaceBack(t,i,r)}class wr{constructor(t){this.vertexArray=new e.StructArrayLayout3f12,this.indices=new e.StructArrayLayout3ui6,br(this.vertexArray,-1,-1,1),br(this.vertexArray,1,-1,1),br(this.vertexArray,-1,1,1),br(this.vertexArray,1,1,1),br(this.vertexArray,-1,-1,-1),br(this.vertexArray,1,-1,-1),br(this.vertexArray,-1,1,-1),br(this.vertexArray,1,1,-1),this.indices.emplaceBack(5,1,3),this.indices.emplaceBack(3,7,5),this.indices.emplaceBack(6,2,0),this.indices.emplaceBack(0,4,6),this.indices.emplaceBack(2,6,7),this.indices.emplaceBack(7,3,2),this.indices.emplaceBack(5,4,0),this.indices.emplaceBack(0,1,5),this.indices.emplaceBack(0,2,3),this.indices.emplaceBack(3,1,0),this.indices.emplaceBack(7,6,4),this.indices.emplaceBack(4,5,7),this.vertexBuffer=t.createVertexBuffer(this.vertexArray,vr),this.indexBuffer=t.createIndexBuffer(this.indices),this.segment=e.SegmentVector.simpleSegment(0,0,36,12)}}function Tr(t,i,r,n,o,s){const a=t.gl,l=i.paint.get("sky-atmosphere-color"),c=i.paint.get("sky-atmosphere-halo-color"),h=i.paint.get("sky-atmosphere-sun-intensity"),u=((e,t,i,r,n)=>({u_matrix_3f:e,u_sun_direction:t,u_sun_intensity:i,u_color_tint_r:[r.r,r.g,r.b,r.a],u_color_tint_m:[n.r,n.g,n.b,n.a],u_luminance:5e-5}))(e.fromMat4(e.create$1(),n),o,h,l,c);a.framebufferTexture2D(a.FRAMEBUFFER,a.COLOR_ATTACHMENT0,a.TEXTURE_CUBE_MAP_POSITIVE_X+s,i.skyboxTexture,0),r.draw(t,a.TRIANGLES,e.DepthMode.disabled,e.StencilMode.disabled,e.ColorMode.unblended,e.CullFaceMode.frontCW,u,"skyboxCapture",i.skyboxGeometry.vertexBuffer,i.skyboxGeometry.indexBuffer,i.skyboxGeometry.segment)}function Er(t,i){return e.transformMat4(t,t,i)}const Sr={symbol:function(t,i,r,n,o){if("translucent"!==t.renderPass)return;const s=e.StencilMode.disabled,a=t.colorModeForRenderPass();r.layout.get("text-variable-anchor")&&function(t,i,r,n,o,s,a){const l=i.transform,c="map"===o,h="map"===s;for(const o of t){const t=n.getTile(o),s=t.getBucket(r);if(!s||s.projection!==l.projection.name||!s.text||!s.text.segments.get().length)continue;const u=e.evaluateSizeForZoom(s.textSizeData,l.zoom),d=i.transform.calculatePixelsToTileUnitsMatrix(t),p=Qe(o.projMatrix,t.tileID.canonical,h,c,i.transform,d),f="none"!==r.layout.get("icon-text-fit")&&s.hasIconData();if(u){const i=Math.pow(2,l.zoom-t.tileID.overscaledZ);rr(s,c,h,a,e.symbolSize,l,p,o,i,u,f,l.projection)}}}(n,t,r,i,r.layout.get("text-rotation-alignment"),r.layout.get("text-pitch-alignment"),o),0!==r.paint.get("icon-opacity").constantOr(1)&&or(t,i,r,n,!1,r.paint.get("icon-translate"),r.paint.get("icon-translate-anchor"),r.layout.get("icon-rotation-alignment"),r.layout.get("icon-pitch-alignment"),r.layout.get("icon-keep-upright"),s,a),0!==r.paint.get("text-opacity").constantOr(1)&&or(t,i,r,n,!0,r.paint.get("text-translate"),r.paint.get("text-translate-anchor"),r.layout.get("text-rotation-alignment"),r.layout.get("text-pitch-alignment"),r.layout.get("text-keep-upright"),s,a),i.map.showCollisionBoxes&&(er(t,i,r,n,r.paint.get("text-translate"),r.paint.get("text-translate-anchor"),!0),er(t,i,r,n,r.paint.get("icon-translate"),r.paint.get("icon-translate-anchor"),!1))},circle:function(t,i,r,n){if("translucent"!==t.renderPass)return;const o=r.paint.get("circle-opacity"),s=r.paint.get("circle-stroke-width"),a=r.paint.get("circle-stroke-opacity"),l=void 0!==r.layout.get("circle-sort-key").constantOr(1);if(0===o.constantOr(1)&&(0===s.constantOr(1)||0===a.constantOr(1)))return;const c=t.context,h=c.gl,u=t.transform,d=t.depthModeForSublayer(0,e.DepthMode.ReadOnly),p=e.StencilMode.disabled,f=t.colorModeForRenderPass(),m="globe"===u.projection.name,_=[e.mercatorXfromLng(u.center.lng),e.mercatorYfromLat(u.center.lat)],g=[];for(let o=0;o<n.length;o++){const s=n[o],a=i.getTile(s),c=a.getBucket(r);if(!c)continue;const h=c.programConfigurations.get(r.id),d=Li(r);m&&d.push("PROJECTION_GLOBE_VIEW");const p=t.useProgram("circle",h,d),f=c.layoutVertexBuffer,y=c.globeExtVertexBuffer,x=c.indexBuffer,v=u.projection.createInversionMatrix(u,s.canonical),b={programConfiguration:h,program:p,layoutVertexBuffer:f,globeExtVertexBuffer:y,indexBuffer:x,uniformValues:Pi(t,s,a,v,_,r),tile:a};if(l){const t=c.segments.get();for(const i of t)g.push({segments:new e.SegmentVector([i]),sortKey:i.sortKey,state:b})}else g.push({segments:c.segments,sortKey:0,state:b})}l&&g.sort(((e,t)=>e.sortKey-t.sortKey));const y={useDepthForOcclusion:!m};for(const i of g){const{programConfiguration:n,program:o,layoutVertexBuffer:s,globeExtVertexBuffer:a,indexBuffer:l,uniformValues:_,tile:g}=i.state,x=i.segments;t.terrain&&t.terrain.setupElevationDraw(g,o,y),t.prepareDrawProgram(c,o,g.tileID.toUnwrapped()),o.draw(c,h.TRIANGLES,d,p,f,e.CullFaceMode.disabled,_,r.id,s,l,x,r.paint,u.zoom,n,m?a:null)}},heatmap:function(t,i,r,n){if(0!==r.paint.get("heatmap-opacity"))if("offscreen"===t.renderPass){const o=t.context,s=o.gl,a=e.StencilMode.disabled,l=new e.ColorMode([s.ONE,s.ONE],e.Color.transparent,[!0,!0,!0,!0]);!function(e,t,i){const r=e.gl;e.activeTexture.set(r.TEXTURE1),e.viewport.set([0,0,t.width/4,t.height/4]);let n=i.heatmapFbo;if(n)r.bindTexture(r.TEXTURE_2D,n.colorAttachment.get()),e.bindFramebuffer.set(n.framebuffer);else{const o=r.createTexture();r.bindTexture(r.TEXTURE_2D,o),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_S,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_T,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MAG_FILTER,r.LINEAR),n=i.heatmapFbo=e.createFramebuffer(t.width/4,t.height/4,!1),function(e,t,i,r){const n=e.gl;n.texImage2D(n.TEXTURE_2D,0,n.RGBA,t.width/4,t.height/4,0,n.RGBA,e.extRenderToTextureHalfFloat?e.extTextureHalfFloat.HALF_FLOAT_OES:n.UNSIGNED_BYTE,null),r.colorAttachment.set(i)}(e,t,o,n)}}(o,t,r),o.clear({color:e.Color.transparent});const c=t.transform,h="globe"===c.projection.name,u=h?["PROJECTION_GLOBE_VIEW"]:null,d=[e.mercatorXfromLng(c.center.lng),e.mercatorYfromLat(c.center.lat)];for(let p=0;p<n.length;p++){const f=n[p];if(i.hasRenderableParent(f))continue;const m=i.getTile(f),_=m.getBucket(r);if(!_)continue;const g=_.programConfigurations.get(r.id),y=t.useProgram("heatmap",g,u),{zoom:x}=t.transform;t.terrain&&t.terrain.setupElevationDraw(m,y),t.prepareDrawProgram(o,y,f.toUnwrapped());const v=c.projection.createInversionMatrix(c,f.canonical);y.draw(o,s.TRIANGLES,e.DepthMode.disabled,a,l,e.CullFaceMode.disabled,Oi(t,f,m,v,d,x,r.paint.get("heatmap-intensity")),r.id,_.layoutVertexBuffer,_.indexBuffer,_.segments,r.paint,t.transform.zoom,g,h?_.globeExtVertexBuffer:null)}o.viewport.set([0,0,t.width,t.height])}else"translucent"===t.renderPass&&(t.context.setColorMode(t.colorModeForRenderPass()),function(t,i){const r=t.context,n=r.gl,o=i.heatmapFbo;if(!o)return;r.activeTexture.set(n.TEXTURE0),n.bindTexture(n.TEXTURE_2D,o.colorAttachment.get()),r.activeTexture.set(n.TEXTURE1);let s=i.colorRampTexture;s||(s=i.colorRampTexture=new e.Texture(r,i.colorRamp,n.RGBA)),s.bind(n.LINEAR,n.CLAMP_TO_EDGE),t.useProgram("heatmapTexture").draw(r,n.TRIANGLES,e.DepthMode.disabled,e.StencilMode.disabled,t.colorModeForRenderPass(),e.CullFaceMode.disabled,((e,t,i,r)=>({u_image:0,u_color_ramp:1,u_opacity:t.paint.get("heatmap-opacity")}))(0,i),i.id,t.viewportBuffer,t.quadTriangleIndexBuffer,t.viewportSegments,i.paint,t.transform.zoom)}(t,r))},line:function(t,i,r,n){if("translucent"!==t.renderPass)return;const o=r.paint.get("line-opacity"),s=r.paint.get("line-width");if(0===o.constantOr(1)||0===s.constantOr(1))return;const a=t.depthModeForSublayer(0,e.DepthMode.ReadOnly),l=t.colorModeForRenderPass(),c=t.terrain&&t.terrain.renderingToTexture?1:e.exported.devicePixelRatio,h=r.paint.get("line-dasharray"),u=h.constantOr(1),d=r.layout.get("line-cap"),p=r.paint.get("line-pattern"),f=p.constantOr(1),m=r.paint.get("line-gradient"),_=r.getCrossfadeParameters(),g=f?"linePattern":"line",y=t.context,x=y.gl,v=(e=>{const t=[];Gi(e)&&t.push("RENDER_LINE_DASH"),e.paint.get("line-gradient")&&t.push("RENDER_LINE_GRADIENT");const i=e.paint.get("line-pattern").constantOr(1),r=1!==e.paint.get("line-opacity").constantOr(1);return!i&&r&&t.push("RENDER_LINE_ALPHA_DISCARD"),t})(r);let b=v.includes("RENDER_LINE_ALPHA_DISCARD");t.terrain&&t.terrain.clipOrMaskOverlapStencilType()&&(b=!1);for(const o of n){const n=i.getTile(o);if(f&&!n.patternsLoaded())continue;const s=n.getBucket(r);if(!s)continue;t.prepareDrawTile();const w=s.programConfigurations.get(r.id),T=t.useProgram(g,w,v),E=p.constantOr(null);if(E&&n.imageAtlas){const e=n.imageAtlas,t=e.patternPositions[E.to.toString()],i=e.patternPositions[E.from.toString()];t&&i&&w.setConstantPatternPositions(t,i)}const S=h.constantOr(null),I=d.constantOr(null);if(!f&&S&&I&&n.lineAtlas){const e=n.lineAtlas,t=e.getDash(S.to,I),i=e.getDash(S.from,I);t&&i&&w.setConstantPatternPositions(t,i)}const M=t.terrain?o.projMatrix:null,A=f?Vi(t,n,r,_,M,c):Ui(t,n,r,_,M,s.lineClipsArray.length,c);if(m){const n=s.gradients[r.id];let a=n.texture;if(r.gradientVersion!==n.version){let l=256;if(r.stepInterpolant){const r=i.getSource().maxzoom,n=o.canonical.z===r?Math.ceil(1<<t.transform.maxZoom-o.canonical.z):1;l=e.clamp(e.nextPowerOfTwo(s.maxLineLength/e.EXTENT*1024*n),256,y.maxTextureSize)}n.gradient=e.renderColorRamp({expression:r.gradientExpression(),evaluationKey:"lineProgress",resolution:l,image:n.gradient||void 0,clips:s.lineClipsArray}),n.texture?n.texture.update(n.gradient):n.texture=new e.Texture(y,n.gradient,x.RGBA),n.version=r.gradientVersion,a=n.texture}y.activeTexture.set(x.TEXTURE1),a.bind(r.stepInterpolant?x.NEAREST:x.LINEAR,x.CLAMP_TO_EDGE)}u&&(y.activeTexture.set(x.TEXTURE0),n.lineAtlasTexture.bind(x.LINEAR,x.REPEAT),w.updatePaintBuffers(_)),f&&(y.activeTexture.set(x.TEXTURE0),n.imageAtlasTexture.bind(x.LINEAR,x.CLAMP_TO_EDGE),w.updatePaintBuffers(_)),t.prepareDrawProgram(y,T,o.toUnwrapped());const C=i=>{T.draw(y,x.TRIANGLES,a,i,l,e.CullFaceMode.disabled,A,r.id,s.layoutVertexBuffer,s.indexBuffer,s.segments,r.paint,t.transform.zoom,w,s.layoutVertexBuffer2)};if(b){const i=t.stencilModeForClipping(o).ref;0===i&&t.terrain&&y.clear({stencil:0});const r={func:x.EQUAL,mask:255};A.u_alpha_discard_threshold=.8,C(new e.StencilMode(r,i,255,x.KEEP,x.KEEP,x.INVERT)),A.u_alpha_discard_threshold=0,C(new e.StencilMode(r,i,255,x.KEEP,x.KEEP,x.KEEP))}else C(t.stencilModeForClipping(o))}b&&(t.resetStencilClippingMasks(),t.terrain&&y.clear({stencil:0}))},fill:function(t,i,r,n){const o=r.paint.get("fill-color"),s=r.paint.get("fill-opacity");if(0===s.constantOr(1))return;const a=t.colorModeForRenderPass(),l=r.paint.get("fill-pattern"),c=t.opaquePassEnabledForLayer()&&!l.constantOr(1)&&1===o.constantOr(e.Color.transparent).a&&1===s.constantOr(0)?"opaque":"translucent";if(t.renderPass===c){const o=t.depthModeForSublayer(1,"opaque"===t.renderPass?e.DepthMode.ReadWrite:e.DepthMode.ReadOnly);ar(t,i,r,n,o,a,!1)}if("translucent"===t.renderPass&&r.paint.get("fill-antialias")){const o=t.depthModeForSublayer(r.getPaintProperty("fill-outline-color")?2:0,e.DepthMode.ReadOnly);ar(t,i,r,n,o,a,!0)}},"fill-extrusion":function(t,i,r,n){const o=r.paint.get("fill-extrusion-opacity");if(0!==o&&"translucent"===t.renderPass){const s=new e.DepthMode(t.context.gl.LEQUAL,e.DepthMode.ReadWrite,t.depthRangeFor3D);if(1!==o||r.paint.get("fill-extrusion-pattern").constantOr(1))lr(t,i,r,n,s,e.StencilMode.disabled,e.ColorMode.disabled),lr(t,i,r,n,s,t.stencilModeFor3D(),t.colorModeForRenderPass()),t.resetStencilClippingMasks();else{const o=t.colorModeForRenderPass();lr(t,i,r,n,s,e.StencilMode.disabled,o)}}},hillshade:function(t,i,r,n){if("offscreen"!==t.renderPass&&"translucent"!==t.renderPass)return;const o=t.context,s=t.depthModeForSublayer(0,e.DepthMode.ReadOnly),a=t.colorModeForRenderPass(),l=t.terrain&&t.terrain.renderingToTexture,[c,h]="translucent"!==t.renderPass||l?[{},n]:t.stencilConfigForOverlap(n);for(const n of h){const o=i.getTile(n);if(o.needsHillshadePrepare&&"offscreen"===t.renderPass)ai(t,o,r,s,e.StencilMode.disabled,a);else if("translucent"===t.renderPass){const e=l&&t.terrain?t.terrain.stencilModeForRTTOverlap(n):c[n.overscaledZ];oi(t,n,o,r,s,e,a)}}o.viewport.set([0,0,t.width,t.height]),t.resetStencilClippingMasks()},raster:function(t,i,r,n,o,s){if("translucent"!==t.renderPass)return;if(0===r.paint.get("raster-opacity"))return;if(!n.length)return;const a=t.context,l=a.gl,c=i.getSource(),h=t.useProgram("raster"),u=t.colorModeForRenderPass(),d=t.terrain&&t.terrain.renderingToTexture,[p,f]=c instanceof Ae||d?[{},n]:t.stencilConfigForOverlap(n),m=f[f.length-1].overscaledZ,_=!t.options.moving;for(const n of f){const o=d?e.DepthMode.disabled:t.depthModeForSublayer(n.overscaledZ-m,1===r.paint.get("raster-opacity")?e.DepthMode.ReadWrite:e.DepthMode.ReadOnly,l.LESS),f=n.toUnwrapped(),g=i.getTile(n);if(d&&(!g||!g.hasData()))continue;const y=d?n.projMatrix:t.transform.calculateProjMatrix(f,_),x=t.terrain&&d?t.terrain.stencilModeForRTTOverlap(n):p[n.overscaledZ],v=s?0:r.paint.get("raster-fade-duration");g.registerFadeDuration(v);const b=i.findLoadedParent(n,0),w=_i(g,b,i,t.transform,v);let T,E;t.terrain&&t.terrain.prepareDrawTile();const S="nearest"===r.paint.get("raster-resampling")?l.NEAREST:l.LINEAR;a.activeTexture.set(l.TEXTURE0),g.texture.bind(S,l.CLAMP_TO_EDGE),a.activeTexture.set(l.TEXTURE1),b?(b.texture.bind(S,l.CLAMP_TO_EDGE),T=Math.pow(2,b.tileID.overscaledZ-g.tileID.overscaledZ),E=[g.tileID.canonical.x*T%1,g.tileID.canonical.y*T%1]):g.texture.bind(S,l.CLAMP_TO_EDGE);const I=Zi(y,E||[0,0],T||1,w,r,c instanceof Ae?c.perspectiveTransform:[0,0]);if(t.prepareDrawProgram(a,h,f),c instanceof Ae)c.boundsBuffer&&c.boundsSegments&&h.draw(a,l.TRIANGLES,o,e.StencilMode.disabled,u,e.CullFaceMode.disabled,I,r.id,c.boundsBuffer,t.quadTriangleIndexBuffer,c.boundsSegments);else{const{tileBoundsBuffer:i,tileBoundsIndexBuffer:n,tileBoundsSegments:s}=t.getTileBoundsBuffers(g);h.draw(a,l.TRIANGLES,o,x,u,e.CullFaceMode.disabled,I,r.id,i,n,s)}}t.resetStencilClippingMasks()},background:function(t,i,r,n){const o=r.paint.get("background-color"),s=r.paint.get("background-opacity");if(0===s)return;const a=t.context,l=a.gl,c=t.transform,h=c.tileSize,u=r.paint.get("background-pattern");if(t.isPatternMissing(u))return;const d=!u&&1===o.a&&1===s&&t.opaquePassEnabledForLayer()?"opaque":"translucent";if(t.renderPass!==d)return;const p=e.StencilMode.disabled,f=t.depthModeForSublayer(0,"opaque"===d?e.DepthMode.ReadWrite:e.DepthMode.ReadOnly),m=t.colorModeForRenderPass(),_=t.useProgram(u?"backgroundPattern":"background");let g,y=n;y||(g=t.getBackgroundTiles(),y=Object.values(g).map((e=>e.tileID))),u&&(a.activeTexture.set(l.TEXTURE0),t.imageManager.bind(t.context));const x=r.getCrossfadeParameters();for(const d of y){const y=d.toUnwrapped(),v=n?d.projMatrix:t.transform.calculateProjMatrix(y);t.prepareDrawTile();const b=i?i.getTile(d):g?g[d.key]:new e.Tile(d,h,c.zoom,t),w=u?Ki(v,s,t,u,{tileID:d,tileSize:h},x):Yi(v,s,o);t.prepareDrawProgram(a,_,y);const{tileBoundsBuffer:T,tileBoundsIndexBuffer:E,tileBoundsSegments:S}=t.getTileBoundsBuffers(b);_.draw(a,l.TRIANGLES,f,p,m,e.CullFaceMode.disabled,w,r.id,T,E,S)}},sky:function(t,i,r){const n=t.transform,o="mercator"===n.projection.name||"globe"===n.projection.name?1:e.smoothstep(7,8,n.zoom),s=r.paint.get("sky-opacity")*o;if(0===s)return;const a=t.context,l=r.paint.get("sky-type"),c=new e.DepthMode(a.gl.LEQUAL,e.DepthMode.ReadOnly,[0,1]),h=t.frameCounter/1e3%1;"atmosphere"===l?"offscreen"===t.renderPass?r.needsSkyboxCapture(t)&&(function(t,i,r,n){const o=t.context,s=o.gl;let a=i.skyboxFbo;if(!a){a=i.skyboxFbo=o.createFramebuffer(32,32,!1),i.skyboxGeometry=new wr(o),i.skyboxTexture=o.gl.createTexture(),s.bindTexture(s.TEXTURE_CUBE_MAP,i.skyboxTexture),s.texParameteri(s.TEXTURE_CUBE_MAP,s.TEXTURE_WRAP_S,s.CLAMP_TO_EDGE),s.texParameteri(s.TEXTURE_CUBE_MAP,s.TEXTURE_WRAP_T,s.CLAMP_TO_EDGE),s.texParameteri(s.TEXTURE_CUBE_MAP,s.TEXTURE_MIN_FILTER,s.LINEAR),s.texParameteri(s.TEXTURE_CUBE_MAP,s.TEXTURE_MAG_FILTER,s.LINEAR);for(let e=0;e<6;++e)s.texImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+e,0,s.RGBA,32,32,0,s.RGBA,s.UNSIGNED_BYTE,null)}o.bindFramebuffer.set(a.framebuffer),o.viewport.set([0,0,32,32]);const l=i.getCenter(t,!0),c=t.useProgram("skyboxCapture"),h=new Float64Array(16);e.identity(h),e.rotateY(h,h,.5*-Math.PI),Tr(o,i,c,h,l,0),e.identity(h),e.rotateY(h,h,.5*Math.PI),Tr(o,i,c,h,l,1),e.identity(h),e.rotateX(h,h,.5*-Math.PI),Tr(o,i,c,h,l,2),e.identity(h),e.rotateX(h,h,.5*Math.PI),Tr(o,i,c,h,l,3),e.identity(h),Tr(o,i,c,h,l,4),e.identity(h),e.rotateY(h,h,Math.PI),Tr(o,i,c,h,l,5),o.viewport.set([0,0,t.width,t.height])}(t,r),r.markSkyboxValid(t)):"sky"===t.renderPass&&function(t,i,r,n,o){const s=t.context,a=s.gl,l=t.transform,c=t.useProgram("skybox");s.activeTexture.set(a.TEXTURE0),a.bindTexture(a.TEXTURE_CUBE_MAP,i.skyboxTexture);const h=((e,t,i,r,n)=>({u_matrix:e,u_sun_direction:t,u_cubemap:0,u_opacity:r,u_temporal_offset:n}))(l.skyboxMatrix,i.getCenter(t,!1),0,n,o);t.prepareDrawProgram(s,c),c.draw(s,a.TRIANGLES,r,e.StencilMode.disabled,t.colorModeForRenderPass(),e.CullFaceMode.backCW,h,"skybox",i.skyboxGeometry.vertexBuffer,i.skyboxGeometry.indexBuffer,i.skyboxGeometry.segment)}(t,r,c,s,h):"gradient"===l&&"sky"===t.renderPass&&function(t,i,r,n,o){const s=t.context,a=s.gl,l=t.transform,c=t.useProgram("skyboxGradient");i.skyboxGeometry||(i.skyboxGeometry=new wr(s)),s.activeTexture.set(a.TEXTURE0);let h=i.colorRampTexture;h||(h=i.colorRampTexture=new e.Texture(s,i.colorRamp,a.RGBA)),h.bind(a.LINEAR,a.CLAMP_TO_EDGE);const u=((t,i,r,n,o)=>({u_matrix:t,u_color_ramp:0,u_center_direction:i,u_radius:e.degToRad(r),u_opacity:n,u_temporal_offset:o}))(l.skyboxMatrix,i.getCenter(t,!1),i.paint.get("sky-gradient-radius"),n,o);t.prepareDrawProgram(s,c),c.draw(s,a.TRIANGLES,r,e.StencilMode.disabled,t.colorModeForRenderPass(),e.CullFaceMode.backCW,u,"skyboxGradient",i.skyboxGeometry.vertexBuffer,i.skyboxGeometry.indexBuffer,i.skyboxGeometry.segment)}(t,r,c,s,h)},debug:function(e,t,i){for(let r=0;r<i.length;r++)yr(e,t,i[r])},custom:function(t,i,r){const n=t.context,o=r.implementation;if(t.transform.projection.unsupportedLayers&&t.transform.projection.unsupportedLayers.includes("custom"))e.warnOnce("Custom layers are not yet supported with non-mercator projections. Use mercator to enable custom layers.");else if("offscreen"===t.renderPass){const e=o.prerender;e&&(t.setCustomLayerDefaults(),n.setColorMode(t.colorModeForRenderPass()),e.call(o,n.gl,t.transform.customLayerMatrix()),n.setDirty(),t.setBaseState())}else if("translucent"===t.renderPass){t.setCustomLayerDefaults(),n.setColorMode(t.colorModeForRenderPass()),n.setStencilMode(e.StencilMode.disabled);const i="3d"===o.renderingMode?new e.DepthMode(t.context.gl.LEQUAL,e.DepthMode.ReadWrite,t.depthRangeFor3D):t.depthModeForSublayer(0,e.DepthMode.ReadOnly);n.setDepthMode(i),o.render(n.gl,t.transform.customLayerMatrix()),n.setDirty(),t.setBaseState(),n.bindFramebuffer.set(null)}}};class Ir{constructor(t,i){this.context=new Ee(t),this.transform=i,this._tileTextures={},this.frameCopies=[],this.loadTimeStamps=[],this.setup(),this.numSublayers=e.SourceCache.maxUnderzooming+e.SourceCache.maxOverzooming+1,this.depthEpsilon=1/Math.pow(2,16),this.crossTileSymbolIndex=new Nt,this.gpuTimers={},this.frameCounter=0,this._backgroundTiles={},this._tileClippingMaskIDs=new Map,this._skippedStencilTileIDs=new Set}updateTerrain(e,t){const i=!!e&&!!e.terrain&&this.transform.projection.supportsTerrain;if(!(i||this._terrain&&this._terrain.enabled))return;this._terrain||(this._terrain=new bi(this,e));const r=this._terrain;this.transform.elevation=i?r:null,r.update(e,this.transform,t)}_updateFog(e){const t=e.fog;if(!t||t.getOpacity(this.transform.pitch)<1||t.properties.get("horizon-blend")<.03)return void(this.transform.fogCullDistSq=null);const[i,r]=t.getFovAdjustedRange(this.transform._fov);if(i>r)return void(this.transform.fogCullDistSq=null);const n=i+.78*(r-i);this.transform.fogCullDistSq=n*n}get terrain(){return this.transform._terrainEnabled()&&this._terrain&&this._terrain.enabled?this._terrain:null}resize(t,i){if(this.width=t*e.exported.devicePixelRatio,this.height=i*e.exported.devicePixelRatio,this.context.viewport.set([0,0,this.width,this.height]),this.style)for(const e of this.style.order)this.style._layers[e].resize()}setup(){const t=this.context,i=new e.StructArrayLayout2i4;i.emplaceBack(0,0),i.emplaceBack(e.EXTENT,0),i.emplaceBack(0,e.EXTENT),i.emplaceBack(e.EXTENT,e.EXTENT),this.tileExtentBuffer=t.createVertexBuffer(i,e.posAttributes.members),this.tileExtentSegments=e.SegmentVector.simpleSegment(0,0,4,2);const r=new e.StructArrayLayout2i4;r.emplaceBack(0,0),r.emplaceBack(e.EXTENT,0),r.emplaceBack(0,e.EXTENT),r.emplaceBack(e.EXTENT,e.EXTENT),this.debugBuffer=t.createVertexBuffer(r,e.posAttributes.members),this.debugSegments=e.SegmentVector.simpleSegment(0,0,4,5);const n=new e.StructArrayLayout2i4;n.emplaceBack(-1,-1),n.emplaceBack(1,-1),n.emplaceBack(-1,1),n.emplaceBack(1,1),this.viewportBuffer=t.createVertexBuffer(n,e.posAttributes.members),this.viewportSegments=e.SegmentVector.simpleSegment(0,0,4,2);const o=new e.StructArrayLayout4i8;o.emplaceBack(0,0,0,0),o.emplaceBack(e.EXTENT,0,e.EXTENT,0),o.emplaceBack(0,e.EXTENT,0,e.EXTENT),o.emplaceBack(e.EXTENT,e.EXTENT,e.EXTENT,e.EXTENT),this.mercatorBoundsBuffer=t.createVertexBuffer(o,e.boundsAttributes.members),this.mercatorBoundsSegments=e.SegmentVector.simpleSegment(0,0,4,2);const s=new e.StructArrayLayout3ui6;s.emplaceBack(0,1,2),s.emplaceBack(2,1,3),this.quadTriangleIndexBuffer=t.createIndexBuffer(s);const a=new e.StructArrayLayout1ui2;for(const e of[0,1,3,2,0])a.emplaceBack(e);this.debugIndexBuffer=t.createIndexBuffer(a),this.emptyTexture=new e.Texture(t,new e.RGBAImage({width:1,height:1},Uint8Array.of(0,0,0,0)),t.gl.RGBA),this.identityMat=e.create();const l=this.context.gl;this.stencilClearMode=new e.StencilMode({func:l.ALWAYS,mask:0},0,255,l.ZERO,l.ZERO,l.ZERO),this.loadTimeStamps.push(e.window.performance.now())}getMercatorTileBoundsBuffers(){return{tileBoundsBuffer:this.mercatorBoundsBuffer,tileBoundsIndexBuffer:this.quadTriangleIndexBuffer,tileBoundsSegments:this.mercatorBoundsSegments}}getTileBoundsBuffers(e){return e._makeTileBoundsBuffers(this.context,this.transform.projection),e._tileBoundsBuffer?{tileBoundsBuffer:e._tileBoundsBuffer,tileBoundsIndexBuffer:e._tileBoundsIndexBuffer,tileBoundsSegments:e._tileBoundsSegments}:this.getMercatorTileBoundsBuffers()}clearStencil(){const t=this.context,i=t.gl;this.nextStencilID=1,this.currentStencilSource=void 0,this._tileClippingMaskIDs.clear(),this._skippedStencilTileIDs.clear(),this.useProgram("clippingMask").draw(t,i.TRIANGLES,e.DepthMode.disabled,this.stencilClearMode,e.ColorMode.disabled,e.CullFaceMode.disabled,mi(this.identityMat),"$clipping",this.viewportBuffer,this.quadTriangleIndexBuffer,this.viewportSegments)}resetStencilClippingMasks(){this.terrain||(this.currentStencilSource=void 0,this._tileClippingMaskIDs.clear(),this._skippedStencilTileIDs.clear())}_renderTileClippingMasks(t,i,r){if(!i||this.currentStencilSource===i.id||!t.isTileClipped()||!r||0===r.length)return;const n=[];let o=!1;if(this._tileClippingMaskIDs&&!this.terrain){for(const e of r)if(this._tileClippingMaskIDs.has(e.key)||(o=!0),this._skippedStencilTileIDs.has(e.key)){if(!i.getTile(e).getBucket(t))continue;this._skippedStencilTileIDs.delete(e.key),n.push(e)}if(!o&&0===n.length)return}const s=this.context,a=s.gl;s.setColorMode(e.ColorMode.disabled),s.setDepthMode(e.DepthMode.disabled);const l=this.useProgram("clippingMask"),c=t=>{const r=i.getTile(t),{tileBoundsBuffer:n,tileBoundsIndexBuffer:o,tileBoundsSegments:c}=this.getTileBoundsBuffers(r);l.draw(s,a.TRIANGLES,e.DepthMode.disabled,new e.StencilMode({func:a.GREATER,mask:255},this._tileClippingMaskIDs.get(t.key)||0,255,a.KEEP,a.KEEP,a.REPLACE),e.ColorMode.disabled,e.CullFaceMode.disabled,mi(t.projMatrix),"$clipping",n,o,c)};if(!o&&n.length>0)for(const e of n)c(e);else{(0===this._tileClippingMaskIDs.size||this.nextStencilID+r.length>256)&&this.clearStencil(),this._tileClippingMaskIDs.clear(),this._skippedStencilTileIDs.clear();for(const e of r)this._tileClippingMaskIDs.set(e.key,this.nextStencilID++),i.getTile(e).getBucket(t)?c(e):this._skippedStencilTileIDs.add(e.key)}0===this._skippedStencilTileIDs.size&&(this.currentStencilSource=i.id)}stencilModeFor3D(){this.currentStencilSource=void 0,this.nextStencilID+1>256&&this.clearStencil();const t=this.nextStencilID++,i=this.context.gl;return new e.StencilMode({func:i.NOTEQUAL,mask:255},t,255,i.KEEP,i.KEEP,i.REPLACE)}stencilModeForClipping(t){if(this.terrain)return this.terrain.stencilModeForRTTOverlap(t);const i=this.context.gl;return new e.StencilMode({func:i.EQUAL,mask:255},this._tileClippingMaskIDs.get(t.key)||0,0,i.KEEP,i.KEEP,i.REPLACE)}stencilConfigForOverlap(t){const i=this.context.gl,r=t.sort(((e,t)=>t.overscaledZ-e.overscaledZ)),n=r[r.length-1].overscaledZ,o=r[0].overscaledZ-n+1;if(o>1){this.currentStencilSource=void 0,this.nextStencilID+o>256&&this.clearStencil();const t={};for(let r=0;r<o;r++)t[r+n]=new e.StencilMode({func:i.GEQUAL,mask:255},r+this.nextStencilID,255,i.KEEP,i.KEEP,i.REPLACE);return this.nextStencilID+=o,[t,r]}return[{[n]:e.StencilMode.disabled},r]}colorModeForRenderPass(){const t=this.context.gl;if(this._showOverdrawInspector){const i=1/8;return new e.ColorMode([t.CONSTANT_COLOR,t.ONE],new e.Color(i,i,i,0),[!0,!0,!0,!0])}return"opaque"===this.renderPass?e.ColorMode.unblended:e.ColorMode.alphaBlended}depthModeForSublayer(t,i,r){if(!this.opaquePassEnabledForLayer())return e.DepthMode.disabled;const n=1-((1+this.currentLayer)*this.numSublayers+t)*this.depthEpsilon;return new e.DepthMode(r||this.context.gl.LEQUAL,i,[n,n])}opaquePassEnabledForLayer(){return this.currentLayer<this.opaquePassCutoff}render(t,i){this.style=t,this.options=i,this.lineAtlas=t.lineAtlas,this.imageManager=t.imageManager,this.glyphManager=t.glyphManager,this.symbolFadeChange=t.placement.symbolFadeChange(e.exported.now()),this.imageManager.beginFrame();const r=this.style.order,n=this.style._sourceCaches;for(const e in n){const t=n[e];t.used&&t.prepare(this.context)}const o={},s={},a={};for(const e in n){const t=n[e];o[e]=t.getVisibleCoordinates(),s[e]=o[e].slice().reverse(),a[e]=t.getVisibleCoordinates(!0).reverse()}this.opaquePassCutoff=1/0;for(let e=0;e<r.length;e++)if(this.style._layers[r[e]].is3D()){this.opaquePassCutoff=e;break}if(this.terrain&&(this.terrain.updateTileBinding(a),this.opaquePassCutoff=0),"globe"!==this.transform.projection.name||this.globeSharedBuffers||(this.globeSharedBuffers=new e.GlobeSharedBuffers(this.context)),!e.isMapAuthenticated(this.context.gl))return;this.renderPass="offscreen";for(const e of r){const i=this.style._layers[e],r=t._getLayerSourceCache(i);if(!i.hasOffscreenPass()||i.isHidden(this.transform.zoom))continue;const n=r?s[r.id]:void 0;("custom"===i.type||i.isSky()||n&&n.length)&&this.renderLayer(this,r,i,n)}this.depthRangeFor3D=[0,1-(t.order.length+2)*this.numSublayers*this.depthEpsilon],this.terrain&&(this.style.hasSymbolLayers()||this.style.hasCircleLayers())&&this.terrain.drawDepth(),this.context.bindFramebuffer.set(null),this.context.viewport.set([0,0,this.width,this.height]);let l=e.Color.transparent;if(this.style.fog&&this.style.fog.getOpacity(this.transform.pitch)&&(l=this.style.fog.properties.get("color")),this.context.clear({color:i.showOverdrawInspector?e.Color.black:l,depth:1}),this.clearStencil(),this._showOverdrawInspector=i.showOverdrawInspector,this.renderPass="opaque",!this.terrain)for(this.currentLayer=r.length-1;this.currentLayer>=0;this.currentLayer--){const e=this.style._layers[r[this.currentLayer]],i=t._getLayerSourceCache(e);if(e.isSky())continue;const n=i?s[i.id]:void 0;this._renderTileClippingMasks(e,i,n),this.renderLayer(this,i,e,n)}if(this.renderPass="sky",(e.globeToMercatorTransition(this.transform.zoom)>0||"globe"!==this.transform.projection.name)&&this.transform.isHorizonVisible())for(this.currentLayer=0;this.currentLayer<r.length;this.currentLayer++){const e=this.style._layers[r[this.currentLayer]],i=t._getLayerSourceCache(e);e.isSky()&&this.renderLayer(this,i,e,i?s[i.id]:void 0)}for("globe"===this.transform.projection.name&&function(t){const i=t.context,r=i.gl,n=t.transform,o=new e.DepthMode(r.LEQUAL,e.DepthMode.ReadOnly,[0,1]),s=t.useProgram("globeAtmosphere"),a=n.centerOffset,l=n._camera.getCameraToClipPerspective(n._fov,n.width/n.height,n._nearZ,n._farZ);l[8]=2*-a.x/n.width,l[9]=2*a.y/n.height;const c=e.invert([],l),h=e.mul([],c,n.projMatrix),u={u_frustum_tl:Er([-1,1,1],c),u_frustum_tr:Er([1,1,1],c),u_frustum_br:Er([1,-1,1],c),u_frustum_bl:Er([-1,-1,1],c),u_globe_pos:Er([n.globeMatrix[12],n.globeMatrix[13],n.globeMatrix[14]],h),u_globe_radius:n.worldSize/2/Math.PI-1,u_opacity:1-e.globeToMercatorTransition(n.zoom),u_fadeout_range:2,u_start_color:[1,1,1],u_end_color:[.0118,.7451,.9882]};t.prepareDrawProgram(i,s);const d=t.globeSharedBuffers;d&&s.draw(i,r.TRIANGLES,o,e.StencilMode.disabled,e.ColorMode.alphaBlended,e.CullFaceMode.backCW,u,"skybox",d.atmosphereVertexBuffer,d.atmosphereIndexBuffer,d.atmosphereSegments)}(this),this.renderPass="translucent",this.currentLayer=0;this.currentLayer<r.length;){const e=this.style._layers[r[this.currentLayer]],i=t._getLayerSourceCache(e);if(e.isSky()){++this.currentLayer;continue}if(this.terrain&&this.style.isLayerDraped(e)){if(e.isHidden(this.transform.zoom)){++this.currentLayer;continue}this.currentLayer=this.terrain.renderBatch(this.currentLayer);continue}const n=i?("symbol"===e.type?a:s)[i.id]:void 0;this._renderTileClippingMasks(e,i,i?o[i.id]:void 0),this.renderLayer(this,i,e,n),++this.currentLayer}if(this.terrain&&this.terrain.postRender(),this.options.showTileBoundaries||this.options.showQueryGeometry){let i=null;e.values(this.style._layers).forEach((e=>{const r=t._getLayerSourceCache(e);r&&!e.isHidden(this.transform.zoom)&&(!i||i.getSource().maxzoom<r.getSource().maxzoom)&&(i=r)})),i&&this.options.showTileBoundaries&&Sr.debug(this,i,i.getVisibleCoordinates())}this.options.showPadding&&function(e){const t=e.transform.padding;mr(e,e.transform.height-(t.top||0),3,hr),mr(e,t.bottom||0,3,ur),_r(e,t.left||0,3,dr),_r(e,e.transform.width-(t.right||0),3,pr);const i=e.transform.centerPoint;!function(e,t,i,r){gr(e,t-1,i-10,2,20,r),gr(e,t-10,i-1,20,2,r)}(e,i.x,e.transform.height-i.y,fr)}(this),this.context.setDefault(),this.frameCounter=(this.frameCounter+1)%Number.MAX_SAFE_INTEGER,this.tileLoaded&&this.options.speedIndexTiming&&(this.loadTimeStamps.push(e.window.performance.now()),this.saveCanvasCopy())}renderLayer(e,t,i,r){i.isHidden(this.transform.zoom)||("background"===i.type||"sky"===i.type||"custom"===i.type||r&&r.length)&&(this.id=i.id,this.gpuTimingStart(i),e.transform.projection.unsupportedLayers&&e.transform.projection.unsupportedLayers.includes(i.type)||Sr[i.type](e,t,i,r,this.style.placement.variableOffsets,this.options.isInitialLoad),this.gpuTimingEnd())}gpuTimingStart(e){if(!this.options.gpuTiming)return;const t=this.context.extTimerQuery;let i=this.gpuTimers[e.id];i||(i=this.gpuTimers[e.id]={calls:0,cpuTime:0,query:t.createQueryEXT()}),i.calls++,t.beginQueryEXT(t.TIME_ELAPSED_EXT,i.query)}gpuTimingEnd(){if(!this.options.gpuTiming)return;const e=this.context.extTimerQuery;e.endQueryEXT(e.TIME_ELAPSED_EXT)}collectGpuTimers(){const e=this.gpuTimers;return this.gpuTimers={},e}queryGpuTimers(e){const t={};for(const i in e){const r=e[i],n=this.context.extTimerQuery,o=n.getQueryObjectEXT(r.query,n.QUERY_RESULT_EXT)/1e6;n.deleteQueryEXT(r.query),t[i]=o}return t}translatePosMatrix(t,i,r,n,o){if(!r[0]&&!r[1])return t;const s=o?"map"===n?this.transform.angle:0:"viewport"===n?-this.transform.angle:0;if(s){const e=Math.sin(s),t=Math.cos(s);r=[r[0]*t-r[1]*e,r[0]*e+r[1]*t]}const a=[o?r[0]:P(i,r[0],this.transform.zoom),o?r[1]:P(i,r[1],this.transform.zoom),0],l=new Float32Array(16);return e.translate(l,t,a),l}saveTileTexture(e){const t=this._tileTextures[e.size[0]];t?t.push(e):this._tileTextures[e.size[0]]=[e]}getTileTexture(e){const t=this._tileTextures[e];return t&&t.length>0?t.pop():null}isPatternMissing(e){if(!e)return!1;if(!e.from||!e.to)return!0;const t=this.imageManager.getPattern(e.from.toString()),i=this.imageManager.getPattern(e.to.toString());return!t||!i}currentGlobalDefines(){const e=this.terrain&&this.terrain.renderingToTexture,t=this.style&&this.style.fog,i=[];return this.terrain&&!this.terrain.renderingToTexture&&i.push("TERRAIN"),t&&!e&&0!==t.getOpacity(this.transform.pitch)&&i.push("FOG"),e&&i.push("RENDER_TO_TEXTURE"),this._showOverdrawInspector&&i.push("OVERDRAW_INSPECTOR"),i}useProgram(e,t,i){this.cache=this.cache||{};const r=i||[],n=this.currentGlobalDefines().concat(r),o=Ti.cacheKey(e,n,t);return this.cache[o]||(this.cache[o]=new Ti(this.context,e,ti[e],t,Ji[e],n)),this.cache[o]}setCustomLayerDefaults(){this.context.unbindVAO(),this.context.cullFace.setDefault(),this.context.frontFace.setDefault(),this.context.cullFaceSide.setDefault(),this.context.activeTexture.setDefault(),this.context.pixelStoreUnpack.setDefault(),this.context.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.context.pixelStoreUnpackFlipY.setDefault()}setBaseState(){const e=this.context.gl;this.context.cullFace.set(!1),this.context.viewport.set([0,0,this.width,this.height]),this.context.blendEquation.set(e.FUNC_ADD)}initDebugOverlayCanvas(){null==this.debugOverlayCanvas&&(this.debugOverlayCanvas=e.window.document.createElement("canvas"),this.debugOverlayCanvas.width=512,this.debugOverlayCanvas.height=512,this.debugOverlayTexture=new e.Texture(this.context,this.debugOverlayCanvas,this.context.gl.RGBA))}destroy(){this._terrain&&this._terrain.destroy(),this.globeSharedBuffers&&this.globeSharedBuffers.destroy(),this.emptyTexture.destroy(),this.debugOverlayTexture&&this.debugOverlayTexture.destroy()}prepareDrawTile(){this.terrain&&this.terrain.prepareDrawTile()}prepareDrawProgram(e,t,i){if(this.terrain&&this.terrain.renderingToTexture)return;const r=this.style.fog;if(r){const n=r.getOpacity(this.transform.pitch);0!==n&&t.setFogUniformValues(e,((e,t,i,r)=>{const n=t.properties.get("color"),o=e.frameCounter/1e3%1,s=[n.r/n.a,n.g/n.a,n.b/n.a,r];return{u_fog_matrix:i?e.transform.calculateFogTileMatrix(i):e.identityMat,u_fog_range:t.getFovAdjustedRange(e.transform._fov),u_fog_color:s,u_fog_horizon_blend:t.properties.get("horizon-blend"),u_fog_temporal_offset:o}})(this,r,i,n))}}setTileLoadedFlag(e){this.tileLoaded=e}saveCanvasCopy(){this.frameCopies.push(this.canvasCopy()),this.tileLoaded=!1}canvasCopy(){const e=this.context.gl,t=e.createTexture();return e.bindTexture(e.TEXTURE_2D,t),e.copyTexImage2D(e.TEXTURE_2D,0,e.RGBA,0,0,e.drawingBufferWidth,e.drawingBufferHeight,0),t}getCanvasCopiesAndTimestamps(){return{canvasCopies:this.frameCopies,timeStamps:this.loadTimeStamps}}averageElevationNeedsEasing(){if(!this.transform._elevation)return!1;const e=this.style&&this.style.fog;return!!e&&0!==e.getOpacity(this.transform.pitch)}getBackgroundTiles(){const t=this._backgroundTiles,i=this._backgroundTiles={},r=this.transform.coveringTiles({tileSize:512});for(const n of r)i[n.key]=t[n.key]||new e.Tile(n,512,this.transform.tileZoom,this);return i}clearBackgroundTiles(){this._backgroundTiles={}}}class Mr{constructor(e=0,t=0,i=0,r=0){if(isNaN(e)||e<0||isNaN(t)||t<0||isNaN(i)||i<0||isNaN(r)||r<0)throw new Error("Invalid value for edge-insets, top, bottom, left and right must all be numbers");this.top=e,this.bottom=t,this.left=i,this.right=r}interpolate(t,i,r){return null!=i.top&&null!=t.top&&(this.top=e.number(t.top,i.top,r)),null!=i.bottom&&null!=t.bottom&&(this.bottom=e.number(t.bottom,i.bottom,r)),null!=i.left&&null!=t.left&&(this.left=e.number(t.left,i.left,r)),null!=i.right&&null!=t.right&&(this.right=e.number(t.right,i.right,r)),this}getCenter(t,i){const r=e.clamp((this.left+t-this.right)/2,0,t),n=e.clamp((this.top+i-this.bottom)/2,0,i);return new e.pointGeometry(r,n)}equals(e){return this.top===e.top&&this.bottom===e.bottom&&this.left===e.left&&this.right===e.right}clone(){return new Mr(this.top,this.bottom,this.left,this.right)}toJSON(){return{top:this.top,bottom:this.bottom,left:this.left,right:this.right}}}function Ar(t,i){const r=e.getColumn(t,3);e.fromQuat(t,i),e.setColumn(t,3,r)}function Cr(t,i){const r=e.identity$1([]);return e.rotateZ$1(r,r,-i),e.rotateX$1(r,r,-t),r}function zr(t,i){const r=[t[0],t[1],0],n=[i[0],i[1],0];if(e.length(r)>=1e-15){const t=e.normalize([],r);e.scale$2(n,t,e.dot(n,t)),i[0]=n[0],i[1]=n[1]}const o=e.cross([],i,t);if(e.len(o)<1e-15)return null;const s=Math.atan2(-o[1],o[0]);return Cr(Math.atan2(Math.sqrt(t[0]*t[0]+t[1]*t[1]),-t[2]),s)}class kr{constructor(e,t){this.position=e,this.orientation=t}get position(){return this._position}set position(t){if(t){const i=t instanceof e.MercatorCoordinate?t:new e.MercatorCoordinate(t[0],t[1],t[2]);this._renderWorldCopies&&(i.x=e.wrap(i.x,0,1)),this._position=i}else this._position=null}lookAtPoint(t,i){if(this.orientation=null,!this.position)return;const r=this._elevation?this._elevation.getAtPointOrZero(e.MercatorCoordinate.fromLngLat(t)):0,n=this.position,o=e.MercatorCoordinate.fromLngLat(t,r),s=[o.x-n.x,o.y-n.y,o.z-n.z];i||(i=[0,0,1]),i[2]=Math.abs(i[2]),this.orientation=zr(s,i)}setPitchBearing(t,i){this.orientation=Cr(e.degToRad(t),e.degToRad(-i))}}class Dr{constructor(t,i){this._transform=e.identity([]),this.orientation=i,this.position=t}get mercatorPosition(){const t=this.position;return new e.MercatorCoordinate(t[0],t[1],t[2])}get position(){const t=e.getColumn(this._transform,3);return[t[0],t[1],t[2]]}set position(t){var i;t&&e.setColumn(this._transform,3,[(i=t)[0],i[1],i[2],1])}get orientation(){return this._orientation}set orientation(t){this._orientation=t||e.identity$1([]),t&&Ar(this._transform,this._orientation)}getPitchBearing(){const e=this.forward(),t=this.right();return{bearing:Math.atan2(-t[1],t[0]),pitch:Math.atan2(Math.sqrt(e[0]*e[0]+e[1]*e[1]),-e[2])}}setPitchBearing(e,t){this._orientation=Cr(e,t),Ar(this._transform,this._orientation)}forward(){const t=e.getColumn(this._transform,2);return[-t[0],-t[1],-t[2]]}up(){const t=e.getColumn(this._transform,1);return[-t[0],-t[1],-t[2]]}right(){const t=e.getColumn(this._transform,0);return[t[0],t[1],t[2]]}getCameraToWorld(t,i){const r=new Float64Array(16);return e.invert(r,this.getWorldToCamera(t,i)),r}getWorldToCameraPosition(t,i,r){const n=this.position;e.scale$2(n,n,-t);const o=new Float64Array(16);return e.fromScaling(o,[r,r,r]),e.translate(o,o,n),o[10]*=i,o}getWorldToCamera(t,i){const r=new Float64Array(16),n=new Float64Array(4),o=this.position;return e.conjugate(n,this._orientation),e.scale$2(o,o,-t),e.fromQuat(r,n),e.translate(r,r,o),r[1]*=-1,r[5]*=-1,r[9]*=-1,r[13]*=-1,r[8]*=i,r[9]*=i,r[10]*=i,r[11]*=i,r}getCameraToClipPerspective(t,i,r,n){const o=new Float64Array(16);return e.perspective(o,t,i,r,n),o}getDistanceToElevation(t){const i=0===t?0:e.mercatorZfromAltitude(t,this.position[1]),r=this.forward();return(i-this.position[2])/r[2]}clone(){return new Dr([...this.position],[...this.orientation])}}function Pr(t,i){const r=Br(t),n=function(t,i,r,n,o){const s=new e.LngLat(r.lng-180*Rr,r.lat),a=new e.LngLat(r.lng+180*Rr,r.lat),l=t.project(s.lng,s.lat),c=t.project(a.lng,a.lat),h=-Math.atan2(c.y-l.y,c.x-l.x),u=e.MercatorCoordinate.fromLngLat(r);u.y=e.clamp(u.y,-.999975,.999975);const d=u.toLngLat(),p=t.project(d.lng,d.lat),f=e.MercatorCoordinate.fromLngLat(d);f.x+=Rr;const m=f.toLngLat(),_=t.project(m.lng,m.lat),g=Or(_.x-p.x,_.y-p.y,h),y=e.MercatorCoordinate.fromLngLat(d);y.y+=Rr;const x=y.toLngLat(),v=t.project(x.lng,x.lat),b=Or(v.x-p.x,v.y-p.y,h),w=Math.abs(g.x)/Math.abs(b.y),T=e.identity([]);e.rotateZ(T,T,-h*(1-(o?0:n)));const E=e.identity([]);return e.scale(E,E,[1,1-(1-w)*n,1]),E[4]=-b.x/b.y*n,e.rotateZ(E,E,h),e.multiply$1(E,T,E),E}(t.projection,0,t.center,r,i),o=Lr(t);return e.scale(n,n,[o,o,1]),n}function Lr(t){const i=t.projection,r=Br(t),n=Fr(i,t.center),o=Fr(i,e.LngLat.convert(i.center));return Math.pow(2,n*r+(1-r)*o)}function Br(t){const i=t.projection.range;if(!i)return 0;const r=Math.max(t.width,t.height),n=Math.log(r/1024)/Math.LN2;return e.smoothstep(i[0]+n,i[1]+n,t.zoom)}const Rr=1/4e4;function Fr(t,i){const r=e.clamp(i.lat,-e.MAX_MERCATOR_LATITUDE,e.MAX_MERCATOR_LATITUDE),n=new e.LngLat(i.lng-180*Rr,r),o=new e.LngLat(i.lng+180*Rr,r),s=t.project(n.lng,r),a=t.project(o.lng,r),l=e.MercatorCoordinate.fromLngLat(n),c=e.MercatorCoordinate.fromLngLat(o),h=a.x-s.x,u=a.y-s.y,d=c.x-l.x,p=c.y-l.y,f=Math.sqrt((d*d+p*p)/(h*h+u*u));return Math.log(f)/Math.LN2}function Or(e,t,i){const r=Math.cos(i),n=Math.sin(i);return{x:e*r-t*n,y:e*n+t*r}}class Ur{constructor(t,i,r,n,o,s,a){this.tileSize=512,this._renderWorldCopies=void 0===o||o,this._minZoom=t||0,this._maxZoom=i||22,this._minPitch=null==r?0:r,this._maxPitch=null==n?60:n,this.setProjection(s),this.setMaxBounds(a),this.width=0,this.height=0,this._center=new e.LngLat(0,0),this.zoom=0,this.angle=0,this._fov=.6435011087932844,this._pitch=0,this._nearZ=0,this._farZ=0,this._unmodified=!0,this._edgeInsets=new Mr,this._projMatrixCache={},this._alignedProjMatrixCache={},this._fogTileMatrixCache={},this._distanceTileDataCache={},this._camera=new Dr,this._centerAltitude=0,this._centerAltitudeValidForExaggeration=0,this._averageElevation=0,this.cameraElevationReference="ground",this._projectionScaler=1,this._horizonShift=.1}clone(){const e=new Ur(this._minZoom,this._maxZoom,this._minPitch,this.maxPitch,this._renderWorldCopies,this.getProjection());return e._elevation=this._elevation,e._centerAltitude=this._centerAltitude,e._centerAltitudeValidForExaggeration=this._centerAltitudeValidForExaggeration,e.tileSize=this.tileSize,e.width=this.width,e.height=this.height,e.cameraElevationReference=this.cameraElevationReference,e._center=this._center,e._setZoom(this.zoom),e._seaLevelZoom=this._seaLevelZoom,e.angle=this.angle,e._fov=this._fov,e._pitch=this._pitch,e._nearZ=this._nearZ,e._farZ=this._farZ,e._averageElevation=this._averageElevation,e._unmodified=this._unmodified,e._edgeInsets=this._edgeInsets.clone(),e._camera=this._camera.clone(),e._calcMatrices(),e.freezeTileCoverage=this.freezeTileCoverage,e}get elevation(){return this._elevation}set elevation(e){this._elevation!==e&&(this._elevation=e,this._updateCameraOnTerrain(),this._calcMatrices())}updateElevation(e){const t=this._elevation&&this._elevation.exaggeration()!==this._centerAltitudeValidForExaggeration;(null==this._seaLevelZoom||t)&&this._updateCameraOnTerrain(),(e||t)&&this._constrainCameraAltitude(),this._calcMatrices()}getProjection(){return e.pick(this.projection,["name","center","parallels"])}setProjection(t){null==t&&(t={name:"mercator"}),this.projectionOptions=t;const i=this.projection?this.getProjection():void 0;this.projection=e.getProjection(t);const r=this.getProjection();return n(i,r)?null:(this._calcMatrices(),r)}get minZoom(){return this._minZoom}set minZoom(e){this._minZoom!==e&&(this._minZoom=e,this.zoom=Math.max(this.zoom,e))}get maxZoom(){return this._maxZoom}set maxZoom(e){this._maxZoom!==e&&(this._maxZoom=e,this.zoom=Math.min(this.zoom,e))}get minPitch(){return this._minPitch}set minPitch(e){this._minPitch!==e&&(this._minPitch=e,this.pitch=Math.max(this.pitch,e))}get maxPitch(){return this._maxPitch}set maxPitch(e){this._maxPitch!==e&&(this._maxPitch=e,this.pitch=Math.min(this.pitch,e))}get renderWorldCopies(){return this._renderWorldCopies&&!0===this.projection.supportsWorldCopies}set renderWorldCopies(e){void 0===e?e=!0:null===e&&(e=!1),this._renderWorldCopies=e}get worldSize(){return this.tileSize*this.scale}get cameraWorldSize(){const e=Math.max(this._camera.getDistanceToElevation(this._averageElevation),Number.EPSILON);return this._worldSizeFromZoom(this._zoomFromMercatorZ(e))}get pixelsPerMeter(){return this.projection.pixelsPerMeter(this.center.lat,this.worldSize)}get cameraPixelsPerMeter(){return this.projection.pixelsPerMeter(this.center.lat,this.cameraWorldSize)}get centerOffset(){return this.centerPoint._sub(this.size._div(2))}get size(){return new e.pointGeometry(this.width,this.height)}get bearing(){return e.wrap(this.rotation,-180,180)}set bearing(e){this.rotation=e}get rotation(){return-this.angle/Math.PI*180}set rotation(t){const i=-t*Math.PI/180;var r;this.angle!==i&&(this._unmodified=!1,this.angle=i,this._calcMatrices(),this.rotationMatrix=(r=new e.ARRAY_TYPE(4),e.ARRAY_TYPE!=Float32Array&&(r[1]=0,r[2]=0),r[0]=1,r[3]=1,r),function(e,t,i){var r=t[0],n=t[1],o=t[2],s=t[3],a=Math.sin(i),l=Math.cos(i);e[0]=r*l+o*a,e[1]=n*l+s*a,e[2]=r*-a+o*l,e[3]=n*-a+s*l}(this.rotationMatrix,this.rotationMatrix,this.angle))}get pitch(){return this._pitch/Math.PI*180}set pitch(t){const i=e.clamp(t,this.minPitch,this.maxPitch)/180*Math.PI;this._pitch!==i&&(this._unmodified=!1,this._pitch=i,this._calcMatrices())}get fov(){return this._fov/Math.PI*180}set fov(e){e=Math.max(.01,Math.min(60,e)),this._fov!==e&&(this._unmodified=!1,this._fov=e/180*Math.PI,this._calcMatrices())}get averageElevation(){return this._averageElevation}set averageElevation(e){this._averageElevation=e,this._calcFogMatrices(),this._distanceTileDataCache={}}get zoom(){return this._zoom}set zoom(e){const t=Math.min(Math.max(e,this.minZoom),this.maxZoom);this._zoom!==t&&(this._unmodified=!1,this._setZoom(t),this._updateSeaLevelZoom(),this._constrain(),this._calcMatrices())}_setZoom(e){this._zoom=e,this.scale=this.zoomScale(e),this.tileZoom=Math.floor(e),this.zoomFraction=e-this.tileZoom}_updateCameraOnTerrain(){if(!this._elevation||!this._elevation.isDataAvailableAtPoint(this.locationCoordinate(this.center)))return this._centerAltitude=0,this._seaLevelZoom=null,void(this._centerAltitudeValidForExaggeration=0);const e=this._elevation;this._centerAltitude=e.getAtPointOrZero(this.locationCoordinate(this.center)),this._centerAltitudeValidForExaggeration=e.exaggeration(),this._updateSeaLevelZoom()}_updateSeaLevelZoom(){0!==this._centerAltitudeValidForExaggeration&&(this._seaLevelZoom=this._zoomFromMercatorZ((this.pixelsPerMeter*this._centerAltitude+this.cameraToCenterDistance)/this.worldSize))}sampleAverageElevation(){if(!this._elevation)return 0;const t=this._elevation,i=[[.5,.2],[.3,.5],[.5,.5],[.7,.5],[.5,.8]],r=this.horizonLineFromTop();let n=0,o=0;for(let s=0;s<i.length;s++){const a=new e.pointGeometry(i[s][0]*this.width,r+i[s][1]*(this.height-r)),l=t.pointCoordinate(a);if(!l)continue;const c=1/Math.hypot(l[0]-this._camera.position[0],l[1]-this._camera.position[1]);n+=l[3]*c,o+=c}return 0===o?NaN:n/o}get center(){return this._center}set center(e){e.lat===this._center.lat&&e.lng===this._center.lng||(this._unmodified=!1,this._center=e,this._terrainEnabled()&&("ground"===this.cameraElevationReference?this._updateCameraOnTerrain():this._updateZoomFromElevation()),this._constrain(),this._calcMatrices())}_updateZoomFromElevation(){if(null==this._seaLevelZoom||!this._elevation)return;const e=this._seaLevelZoom,t=this._elevation.getAtPointOrZero(this.locationCoordinate(this.center)),i=this.pixelsPerMeter/this.worldSize*t,r=this._mercatorZfromZoom(e),n=this._mercatorZfromZoom(this._maxZoom),o=Math.max(r-i,n);this._setZoom(this._zoomFromMercatorZ(o))}get padding(){return this._edgeInsets.toJSON()}set padding(e){this._edgeInsets.equals(e)||(this._unmodified=!1,this._edgeInsets.interpolate(this._edgeInsets,e,1),this._calcMatrices())}computeZoomRelativeTo(t){const i=this.rayIntersectionCoordinate(this.pointRayIntersection(this.centerPoint,t.toAltitude()));let r;r=t.z<this._camera.position[2]?[i.x,i.y,i.z]:[t.x,t.y,t.z];const n=e.length(e.sub([],this._camera.position,r));return e.clamp(this._zoomFromMercatorZ(n),this._minZoom,this._maxZoom)}setFreeCameraOptions(t){if(!this.height)return;if(!t.position&&!t.orientation)return;this._updateCameraState();let i=!1;if(t.orientation&&!e.exactEquals(t.orientation,this._camera.orientation)&&(i=this._setCameraOrientation(t.orientation)),t.position){const r=[t.position.x,t.position.y,t.position.z];e.exactEquals$1(r,this._camera.position)||(this._setCameraPosition(r),i=!0)}i&&(this._updateStateFromCamera(),this.recenterOnTerrain())}getFreeCameraOptions(){this._updateCameraState();const t=this._camera.position,i=new kr;return i.position=new e.MercatorCoordinate(t[0],t[1],t[2]),i.orientation=this._camera.orientation,i._elevation=this.elevation,i._renderWorldCopies=this.renderWorldCopies,i}_setCameraOrientation(t){if(!e.length$1(t))return!1;e.normalize$1(t,t);const i=e.transformQuat([],[0,0,-1],t),r=e.transformQuat([],[0,-1,0],t);if(r[2]<0)return!1;const n=zr(i,r);return!!n&&(this._camera.orientation=n,!0)}_setCameraPosition(t){const i=this.zoomScale(this.minZoom)*this.tileSize,r=this.zoomScale(this.maxZoom)*this.tileSize,n=this.cameraToCenterDistance;t[2]=e.clamp(t[2],n/r,n/i),this._camera.position=t}get centerPoint(){return this._edgeInsets.getCenter(this.width,this.height)}get fovAboveCenter(){return this._fov*(.5+this.centerOffset.y/this.height)}isPaddingEqual(e){return this._edgeInsets.equals(e)}interpolatePadding(e,t,i){this._unmodified=!1,this._edgeInsets.interpolate(e,t,i),this._constrain(),this._calcMatrices()}coveringZoomLevel(e){const t=(e.roundZoom?Math.round:Math.floor)(this.zoom+this.scaleZoom(this.tileSize/e.tileSize));return Math.max(0,t)}getVisibleUnwrappedCoordinates(t){const i=[new e.UnwrappedTileID(0,t)];if(this.renderWorldCopies){const r=this.pointCoordinate(new e.pointGeometry(0,0)),n=this.pointCoordinate(new e.pointGeometry(this.width,0)),o=this.pointCoordinate(new e.pointGeometry(this.width,this.height)),s=this.pointCoordinate(new e.pointGeometry(0,this.height)),a=Math.floor(Math.min(r.x,n.x,o.x,s.x)),l=Math.floor(Math.max(r.x,n.x,o.x,s.x)),c=1;for(let r=a-c;r<=l+c;r++)0!==r&&i.push(new e.UnwrappedTileID(r,t))}return i}coveringTiles(t){let i=this.coveringZoomLevel(t);const r=i,n=this.elevation&&!t.isTerrainDEM,o="mercator"===this.projection.name;if(void 0!==t.minzoom&&i<t.minzoom)return[];void 0!==t.maxzoom&&i>t.maxzoom&&(i=t.maxzoom);const s=this.locationCoordinate(this.center),a=this.center.lat,l=1<<i,c=[l*s.x,l*s.y,0],h="globe"===this.projection.name,u=!h,d=e.Frustum.fromInvProjectionMatrix(this.invProjMatrix,this.worldSize,i,u),p=h?this._camera.mercatorPosition:this.pointCoordinate(this.getCameraPoint()),f=l*e.mercatorZfromAltitude(1,this.center.lat),m=this._camera.position[2]/e.mercatorZfromAltitude(1,this.center.lat),_=[l*p.x,l*p.y,m*(u?1:f)],g=this.cameraToCenterDistance/t.tileSize*(t.roundZoom?1:.502),y=this.pitch<=60&&this._edgeInsets.top<=this._edgeInsets.bottom&&!this._elevation&&!this.projection.isReprojectedInTileSpace?i:0,x=t.isTerrainDEM&&this._elevation?1e4*this._elevation.exaggeration():this._centerAltitude,v=t.isTerrainDEM?-x:this._elevation?this._elevation.getMinElevationBelowMSL():0,b=this.projection.isReprojectedInTileSpace?Lr(this):1,w=t=>{const i=1/4e4,r=new e.MercatorCoordinate(t.x+i,t.y,t.z),n=new e.MercatorCoordinate(t.x,t.y+i,t.z),o=t.toLngLat(),s=r.toLngLat(),a=n.toLngLat(),l=this.locationCoordinate(o),c=this.locationCoordinate(s),h=this.locationCoordinate(a),u=Math.hypot(c.x-l.x,c.y-l.y),d=Math.hypot(h.x-l.x,h.y-l.y);return Math.sqrt(u*d)*b/i},T=t=>{const i=x,r=v;return{aabb:e.tileAABB(this,l,0,0,0,t,r,i,this.projection),zoom:0,x:0,y:0,minZ:r,maxZ:i,wrap:t,fullyVisible:!1}},E=[];let S=[];const I=i,M=t.reparseOverscaled?r:i,A=e=>e*e,C=A((m-this._centerAltitude)*f),z=e=>{if(!this._elevation||!e.tileID||!o)return;const t=this._elevation.getMinMaxForTile(e.tileID),i=e.aabb;t?(i.min[2]=t.min,i.max[2]=t.max,i.center[2]=(i.min[2]+i.max[2])/2):(e.shouldSplit=k(e),e.shouldSplit||(i.min[2]=i.max[2]=i.center[2]=this._centerAltitude))},k=t=>{if(t.zoom<y)return!0;if(t.zoom===I)return!1;if(null!=t.shouldSplit)return t.shouldSplit;const i=t.aabb.distanceX(_),o=t.aabb.distanceY(_);let s=C,l=1;if(h){s=A(t.aabb.distanceZ(_));const i=Math.pow(2,t.zoom),r=e.latFromMercatorY((t.y+1)/i),n=e.latFromMercatorY(t.y/i),o=Math.min(Math.max(a,r),n),c=e.circumferenceAtLatitude(o)/e.circumferenceAtLatitude(a);l=Math.min(c,1)}else if(n&&(s=A(t.aabb.distanceZ(_)*f)),this.projection.isReprojectedInTileSpace&&r<=5){const i=Math.pow(2,t.zoom),r=w(new e.MercatorCoordinate((t.x+.5)/i,(t.y+.5)/i));l=r>.85?1:r}const c=i*i+o*o+s;return c<A((1<<I-t.zoom)*g*l*((e,t)=>{if(t*A(.707)<e)return 1;const i=Math.sqrt(t/e);return i/(1.4144271570014144+(Math.pow(1.1,i-1.4144271570014144+1)-1)/(1.1-1)-1)})(Math.max(s,C),c))};if(this.renderWorldCopies)for(let e=1;e<=3;e++)E.push(T(-e)),E.push(T(e));for(E.push(T(0));E.length>0;){const r=E.pop(),s=r.x,a=r.y;let u=r.fullyVisible;if(!u){const e=r.aabb.intersects(d);if(0===e)continue;u=2===e}if(r.zoom!==I&&k(r))for(let t=0;t<4;t++){const i=(s<<1)+t%2,c=(a<<1)+(t>>1),d={aabb:o?r.aabb.quadrant(t):e.tileAABB(this,l,r.zoom+1,i,c,r.wrap,r.minZ,r.maxZ,this.projection),zoom:r.zoom+1,x:i,y:c,wrap:r.wrap,fullyVisible:u,tileID:void 0,shouldSplit:void 0,minZ:r.minZ,maxZ:r.maxZ};n&&!h&&(d.tileID=new e.OverscaledTileID(r.zoom+1===I?M:r.zoom+1,r.wrap,r.zoom+1,i,c),z(d)),E.push(d)}else{const n=r.zoom===I?M:r.zoom;if(t.minzoom&&t.minzoom>n)continue;const o=c[0]-(.5+s+(r.wrap<<r.zoom))*(1<<i-r.zoom),l=c[1]-.5-a,h=r.tileID?r.tileID:new e.OverscaledTileID(n,r.wrap,r.zoom,s,a);S.push({tileID:h,distanceSq:o*o+l*l})}}if(this.fogCullDistSq){const i=this.fogCullDistSq,r=this.horizonLineFromTop();S=S.filter((n=>{const o=[0,0,0,1],s=[e.EXTENT,e.EXTENT,0,1],a=this.calculateFogTileMatrix(n.tileID.toUnwrapped());e.transformMat4$1(o,o,a),e.transformMat4$1(s,s,a);const l=e.getAABBPointSquareDist(o,s);if(0===l)return!0;let c=!1;const h=this._elevation;if(h&&l>i&&0!==r){const i=this.calculateProjMatrix(n.tileID.toUnwrapped());let o;t.isTerrainDEM||(o=h.getMinMaxForTile(n.tileID)),o||(o={min:v,max:x});const s=e.furthestTileCorner(this.rotation),a=[s[0]*e.EXTENT,s[1]*e.EXTENT,o.max];e.transformMat4(a,a,i),c=(1-a[1])*this.height*.5<r}return l<i||c}))}return S.sort(((e,t)=>e.distanceSq-t.distanceSq)).map((e=>e.tileID))}resize(e,t){this.width=e,this.height=t,this.pixelsToGLUnits=[2/e,-2/t],this._constrain(),this._calcMatrices()}get unmodified(){return this._unmodified}zoomScale(e){return Math.pow(2,e)}scaleZoom(e){return Math.log(e)/Math.LN2}project(t){const i=e.clamp(t.lat,-e.MAX_MERCATOR_LATITUDE,e.MAX_MERCATOR_LATITUDE),r=this.projection.project(t.lng,i);return new e.pointGeometry(r.x*this.worldSize,r.y*this.worldSize)}unproject(e){return this.projection.unproject(e.x/this.worldSize,e.y/this.worldSize)}get point(){return this.project(this.center)}setLocationAtPoint(t,i){let r,n;const o=this.centerPoint;if("globe"===this.projection.name){const e=this.worldSize;r=(i.x-o.x)/e,n=(i.y-o.y)/e}else{const e=this.pointCoordinate(i),t=this.pointCoordinate(o);r=e.x-t.x,n=e.y-t.y}const s=this.locationCoordinate(t);this.setLocation(new e.MercatorCoordinate(s.x-r,s.y-n))}setLocation(e){this.center=this.coordinateLocation(e),this.projection.wrap&&(this.center=this.center.wrap())}locationPoint(e){return this.projection.locationPoint(this,e)}locationPoint3D(e){return this._coordinatePoint(this.locationCoordinate(e),!0)}pointLocation(e){return this.coordinateLocation(this.pointCoordinate(e))}pointLocation3D(e){return this.coordinateLocation(this.pointCoordinate3D(e))}locationCoordinate(t,i){const r=i?e.mercatorZfromAltitude(i,t.lat):void 0,n=this.projection.project(t.lng,t.lat);return new e.MercatorCoordinate(n.x,n.y,r)}coordinateLocation(e){return this.projection.unproject(e.x,e.y)}pointRayIntersection(t,i){const r=null!=i?i:this._centerAltitude,n=[t.x,t.y,0,1],o=[t.x,t.y,1,1];e.transformMat4$1(n,n,this.pixelMatrixInverse),e.transformMat4$1(o,o,this.pixelMatrixInverse);const s=o[3];e.scale$1(n,n,1/n[3]),e.scale$1(o,o,1/s);const a=n[2],l=o[2];return{p0:n,p1:o,t:a===l?0:(r-a)/(l-a)}}screenPointToMercatorRay(t){const i=[t.x,t.y,0,1],r=[t.x,t.y,1,1];return e.transformMat4$1(i,i,this.pixelMatrixInverse),e.transformMat4$1(r,r,this.pixelMatrixInverse),e.scale$1(i,i,1/i[3]),e.scale$1(r,r,1/r[3]),i[2]=e.mercatorZfromAltitude(i[2],this._center.lat)*this.worldSize,r[2]=e.mercatorZfromAltitude(r[2],this._center.lat)*this.worldSize,e.scale$1(i,i,1/this.worldSize),e.scale$1(r,r,1/this.worldSize),new e.Ray([i[0],i[1],i[2]],e.normalize([],e.sub([],r,i)))}rayIntersectionCoordinate(t){const{p0:i,p1:r,t:n}=t,o=e.mercatorZfromAltitude(i[2],this._center.lat),s=e.mercatorZfromAltitude(r[2],this._center.lat);return new e.MercatorCoordinate(e.number(i[0],r[0],n)/this.worldSize,e.number(i[1],r[1],n)/this.worldSize,e.number(o,s,n))}pointCoordinate(e,t=this._centerAltitude){return this.projection.pointCoordinate(this,e.x,e.y,t)}pointCoordinate3D(t){if(!this.elevation)return this.pointCoordinate(t);const i=this.elevation;let r=this.elevation.pointCoordinate(t);if(r)return new e.MercatorCoordinate(r[0],r[1],r[2]);let n=0,o=this.horizonLineFromTop();if(t.y>o)return this.pointCoordinate(t);const s=.02*o,a=t.clone();for(let t=0;t<10&&o-n>s;t++){a.y=e.number(n,o,.66);const t=i.pointCoordinate(a);t?(o=a.y,r=t):n=a.y}return r?new e.MercatorCoordinate(r[0],r[1],r[2]):this.pointCoordinate(t)}isPointAboveHorizon(e){if(this.elevation)return!this.elevation.pointCoordinate(e);{const t=this.horizonLineFromTop();return e.y<t}}_coordinatePoint(t,i){const r=i&&this.elevation?this.elevation.getAtPointOrZero(t,this._centerAltitude):this._centerAltitude,n=[t.x*this.worldSize,t.y*this.worldSize,r+t.toAltitude(),1];return e.transformMat4$1(n,n,this.pixelMatrix),n[3]>0?new e.pointGeometry(n[0]/n[3],n[1]/n[3]):new e.pointGeometry(Number.MAX_VALUE,Number.MAX_VALUE)}_getBounds(t,i){const r=new e.pointGeometry(this._edgeInsets.left,this._edgeInsets.top),n=new e.pointGeometry(this.width-this._edgeInsets.right,this._edgeInsets.top),o=new e.pointGeometry(this.width-this._edgeInsets.right,this.height-this._edgeInsets.bottom),s=new e.pointGeometry(this._edgeInsets.left,this.height-this._edgeInsets.bottom);let a=this.pointCoordinate(r,t),l=this.pointCoordinate(n,t);const c=this.pointCoordinate(o,i),h=this.pointCoordinate(s,i),u=(e,t)=>(t.y-e.y)/(t.x-e.x);return a.y>1&&l.y>=0?a=new e.MercatorCoordinate((1-h.y)/u(h,a)+h.x,1):a.y<0&&l.y<=1&&(a=new e.MercatorCoordinate(-h.y/u(h,a)+h.x,0)),l.y>1&&a.y>=0?l=new e.MercatorCoordinate((1-c.y)/u(c,l)+c.x,1):l.y<0&&a.y<=1&&(l=new e.MercatorCoordinate(-c.y/u(c,l)+c.x,0)),(new e.LngLatBounds).extend(this.coordinateLocation(a)).extend(this.coordinateLocation(l)).extend(this.coordinateLocation(h)).extend(this.coordinateLocation(c))}_getBounds3D(){const e=this.elevation;if(!e.visibleDemTiles.length)return this._getBounds(0,0);const t=e.visibleDemTiles.reduce(((e,t)=>{if(t.dem){const i=t.dem.tree;e.min=Math.min(e.min,i.minimums[0]),e.max=Math.max(e.max,i.maximums[0])}return e}),{min:Number.MAX_VALUE,max:0});return this._getBounds(t.min*e.exaggeration(),t.max*e.exaggeration())}getBounds(){return this._terrainEnabled()?this._getBounds3D():this._getBounds(0,0)}horizonLineFromTop(e=!0){const t=this.height/2/Math.tan(this._fov/2)/Math.tan(Math.max(this._pitch,.1))+this.centerOffset.y,i=this.height/2-t*(1-this._horizonShift);return e?Math.max(0,i):i}getMaxBounds(){return this.maxBounds}setMaxBounds(t){this.maxBounds=t,this.minLat=-e.MAX_MERCATOR_LATITUDE,this.maxLat=e.MAX_MERCATOR_LATITUDE,this.minLng=-180,this.maxLng=180,t&&(this.minLat=t.getSouth(),this.maxLat=t.getNorth(),this.minLng=t.getWest(),this.maxLng=t.getEast(),this.maxLng<this.minLng&&(this.maxLng+=360)),this.worldMinX=e.mercatorXfromLng(this.minLng)*this.tileSize,this.worldMaxX=e.mercatorXfromLng(this.maxLng)*this.tileSize,this.worldMinY=e.mercatorYfromLat(this.maxLat)*this.tileSize,this.worldMaxY=e.mercatorYfromLat(this.minLat)*this.tileSize,this._constrain()}calculatePosMatrix(e,t){return this.projection.createTileMatrix(this,t,e)}calculateDistanceTileData(t){const i=t.key,r=this._distanceTileDataCache;if(r[i])return r[i];const n=t.canonical,o=1/this.height,s=this.cameraWorldSize/this.zoomScale(n.z),a=(n.x+Math.pow(2,n.z)*t.wrap)*s,l=n.y*s,c=this.point,h=this.angle,u=Math.sin(-h),d=-Math.cos(-h);return r[i]={bearing:[u,d],center:[(c.x-a)*o,(c.y-l)*o],scale:s/e.EXTENT*o},r[i]}calculateFogTileMatrix(t){const i=t.key,r=this._fogTileMatrixCache;if(r[i])return r[i];const n=this.calculatePosMatrix(t,this.cameraWorldSize);return e.multiply$1(n,this.worldToFogMatrix,n),r[i]=new Float32Array(n),r[i]}calculateProjMatrix(t,i=!1){const r=t.key,n=i?this._alignedProjMatrixCache:this._projMatrixCache;if(n[r])return n[r];const o=this.calculatePosMatrix(t,this.worldSize);return e.multiply$1(o,this.projection.isReprojectedInTileSpace?this.mercatorMatrix:i?this.alignedProjMatrix:this.projMatrix,o),n[r]=new Float32Array(o),n[r]}calculatePixelsToTileUnitsMatrix(t){const i=t.tileID.key,r=this._pixelsToTileUnitsCache;if(r[i])return r[i];const n=function(t,i){const{scale:r}=t.tileTransform,n=r*e.EXTENT/(t.tileSize*Math.pow(2,i.zoom-t.tileID.overscaledZ+t.tileID.canonical.z));return o=new Float32Array(4),l=(s=i.inverseAdjustmentMatrix)[1],c=s[2],h=s[3],d=(a=[n,n])[1],o[0]=s[0]*(u=a[0]),o[1]=l*u,o[2]=c*d,o[3]=h*d,o;var o,s,a,l,c,h,u,d}(t,this);return r[i]=n,r[i]}customLayerMatrix(){return this.mercatorMatrix.slice()}recenterOnTerrain(){if(!this._elevation)return;const t=this._elevation;this._updateCameraState();const i=e.mercatorZfromAltitude(1,this._center.lat)*this.worldSize,r=this._computeCameraPosition(i),n=this._camera.forward(),o=e.mercatorZfromAltitude(1,this._center.lat);r[2]/=o,n[2]/=o,e.normalize(n,n);const s=t.raycast(r,n,t.exaggeration());if(s){const t=e.scaleAndAdd([],r,n,s),i=new e.MercatorCoordinate(t[0],t[1],e.mercatorZfromAltitude(t[2],e.latFromMercatorY(t[1]))),a=(i.z+e.length([i.x-r[0],i.y-r[1],i.z-r[2]*o]))*this._projectionScaler;this._seaLevelZoom=this._zoomFromMercatorZ(a),this._centerAltitude=i.toAltitude(),this._center=this.coordinateLocation(i),this._updateZoomFromElevation(),this._constrain(),this._calcMatrices()}}_constrainCameraAltitude(){if(!this._elevation)return;const t=this._elevation;this._updateCameraState();const i=e.mercatorZfromAltitude(1,this._center.lat)*this.worldSize,r=this._computeCameraPosition(i),n=t.getAtPointOrZero(new e.MercatorCoordinate(...r)),o=this._minimumHeightOverTerrain()*Math.cos(e.degToRad(this._maxPitch)),s=this._camera.position[2]-this.pixelsPerMeter/this.worldSize*n;if(s<o){const t=this.locationCoordinate(this._center,this._centerAltitude),i=[t.x-r[0],t.y-r[1],t.z-r[2]],n=e.length(i);i[2]-=(o-s)/this._projectionScaler;const a=e.length(i);if(0===a)return;e.scale$2(i,i,n/a*this._projectionScaler),this._camera.position=[t.x-i[0],t.y-i[1],t.z*this._projectionScaler-i[2]],this._camera.orientation=zr(i,this._camera.up()),this._updateStateFromCamera()}}_constrain(){if(!this.center||!this.width||!this.height||this._constraining)return;if(this._constraining=!0,this.projection.isReprojectedInTileSpace){const t=this.center;return t.lat=e.clamp(t.lat,this.minLat,this.maxLat),!this.maxBounds&&this.renderWorldCopies||(t.lng=e.clamp(t.lng,this.minLng,this.maxLng)),this.center=t,void(this._constraining=!1)}const t=this._unmodified,{x:i,y:r}=this.point;let n=0,o=i,s=r;const a=this.width/2,l=this.height/2,c=this.worldMinY*this.scale,h=this.worldMaxY*this.scale;if(r-l<c&&(s=c+l),r+l>h&&(s=h-l),h-c<this.height&&(n=Math.max(n,this.height/(h-c)),s=(h+c)/2),this.maxBounds||!this._renderWorldCopies||!this.projection.wrap){const e=this.worldMinX*this.scale,t=this.worldMaxX*this.scale,r=this.worldSize/2-(e+t)/2;o=(i+r+this.worldSize)%this.worldSize-r,o-a<e&&(o=e+a),o+a>t&&(o=t-a),t-e<this.width&&(n=Math.max(n,this.width/(t-e)),o=(t+e)/2)}o===i&&s===r||(this.center=this.unproject(new e.pointGeometry(o,s))),n&&(this.zoom+=this.scaleZoom(n)),this._constrainCameraAltitude(),this._unmodified=t,this._constraining=!1}_minZoomForBounds(){let e=Math.max(0,this.scaleZoom(this.height/(this.worldMaxY-this.worldMinY)));return this.maxBounds&&(e=Math.max(e,this.scaleZoom(this.width/(this.worldMaxX-this.worldMinX)))),e}_maxCameraBoundsDistance(){return this._mercatorZfromZoom(this._minZoomForBounds())}_calcMatrices(){if(!this.height)return;const t=this._fov/2,i=this.centerOffset,r=this.pixelsPerMeter;this._projectionScaler=r/(e.mercatorZfromAltitude(1,this.center.lat)*this.worldSize),this.cameraToCenterDistance=.5/Math.tan(t)*this.height*this._projectionScaler,this._updateCameraState(),this._farZ=this.projection.farthestPixelDistance(this),this._nearZ=this.height/50;const n=this._camera.getWorldToCamera(this.worldSize,"meters"===this.projection.zAxisUnit?r:1),o=this._camera.getCameraToClipPerspective(this._fov,this.width/this.height,this._nearZ,this._farZ);o[8]=2*-i.x/this.width,o[9]=2*i.y/this.height;let s=e.mul([],o,n);if(this.projection.isReprojectedInTileSpace){const t=this.locationCoordinate(this.center),i=e.identity([]);e.translate(i,i,[t.x*this.worldSize,t.y*this.worldSize,0]),e.multiply$1(i,i,Pr(this)),e.translate(i,i,[-t.x*this.worldSize,-t.y*this.worldSize,0]),e.multiply$1(s,s,i),this.inverseAdjustmentMatrix=function(e){const t=Pr(e,!0);return y([],[t[0],t[1],t[4],t[5]])}(this)}else this.inverseAdjustmentMatrix=[1,0,0,1];this.mercatorMatrix=e.scale([],s,[this.worldSize,this.worldSize,this.worldSize/r,1]),this.projMatrix=s,this.invProjMatrix=e.invert(new Float64Array(16),this.projMatrix);const a=new Float32Array(16);e.identity(a),e.scale(a,a,[1,-1,1]),e.rotateX(a,a,this._pitch),e.rotateZ(a,a,this.angle);const l=e.perspective(new Float32Array(16),this._fov,this.width/this.height,this._nearZ,this._farZ),c=(Math.PI/2-this._pitch)*(this.height/this._fov)*this._horizonShift;l[8]=2*-i.x/this.width,l[9]=2*(i.y+c)/this.height,this.skyboxMatrix=e.multiply$1(a,l,a);const h=this.point,u=h.x,d=h.y,p=this.width%2/2,f=this.height%2/2,m=Math.cos(this.angle),_=Math.sin(this.angle),g=u-Math.round(u)+m*p+_*f,x=d-Math.round(d)+m*f+_*p,v=new Float64Array(s);if(e.translate(v,v,[g>.5?g-1:g,x>.5?x-1:x,0]),this.alignedProjMatrix=v,s=e.create(),e.scale(s,s,[this.width/2,-this.height/2,1]),e.translate(s,s,[1,-1,0]),this.labelPlaneMatrix=s,s=e.create(),e.scale(s,s,[1,-1,1]),e.translate(s,s,[-1,-1,0]),e.scale(s,s,[2/this.width,2/this.height,1]),this.glCoordMatrix=s,this.pixelMatrix=e.multiply$1(new Float64Array(16),this.labelPlaneMatrix,this.projMatrix),this._calcFogMatrices(),this._distanceTileDataCache={},s=e.invert(new Float64Array(16),this.pixelMatrix),!s)throw new Error("failed to invert matrix");this.pixelMatrixInverse=s,this.globeMatrix="globe"===this.projection.name?e.calculateGlobeMatrix(this):s,this._projMatrixCache={},this._alignedProjMatrixCache={},this._pixelsToTileUnitsCache={}}_calcFogMatrices(){this._fogTileMatrixCache={};const t=this.cameraWorldSize,i=this.cameraPixelsPerMeter,r=this._camera.position,n=1/this.height,o=[t,t,i];e.scale$2(o,o,n),e.scale$2(r,r,-1),e.multiply$2(r,r,o);const s=e.create();e.translate(s,s,r),e.scale(s,s,o),this.mercatorFogMatrix=s,this.worldToFogMatrix=this._camera.getWorldToCameraPosition(t,i,n)}_computeCameraPosition(e){const t=(e=e||this.pixelsPerMeter)/this.pixelsPerMeter,i=this._camera.forward(),r=this.point,n=this._mercatorZfromZoom(this._seaLevelZoom?this._seaLevelZoom:this._zoom)*t-e/this.worldSize*this._centerAltitude;return[r.x/this.worldSize-i[0]*n,r.y/this.worldSize-i[1]*n,e/this.worldSize*this._centerAltitude-i[2]*n]}_updateCameraState(){this.height&&(this._camera.setPitchBearing(this._pitch,this.angle),this._camera.position=this._computeCameraPosition())}_translateCameraConstrained(t){const i=this._maxCameraBoundsDistance()*Math.cos(this._pitch),r=t[2];let n=1;r>0&&(n=Math.min((i-this._camera.position[2])/r,1)),this._camera.position=e.scaleAndAdd([],this._camera.position,t,n),this._updateStateFromCamera(),this.projection.wrap&&(this.center=this.center.wrap())}_updateStateFromCamera(){const t=this._camera.position,i=this._camera.forward(),{pitch:r,bearing:n}=this._camera.getPitchBearing(),o=e.mercatorZfromAltitude(this._centerAltitude,this.center.lat)*this._projectionScaler,s=this._mercatorZfromZoom(this._maxZoom)*Math.cos(e.degToRad(this._maxPitch)),a=Math.max((t[2]-o)/Math.cos(r),s),l=this._zoomFromMercatorZ(a);e.scaleAndAdd(t,t,i,a),this._pitch=e.clamp(r,e.degToRad(this.minPitch),e.degToRad(this.maxPitch)),this.angle=e.wrap(n,-Math.PI,Math.PI),this._setZoom(e.clamp(l,this._minZoom,this._maxZoom)),this._updateSeaLevelZoom(),this._center=this.coordinateLocation(new e.MercatorCoordinate(t[0],t[1],t[2])),this._unmodified=!1,this._constrain(),this._calcMatrices()}_worldSizeFromZoom(e){return Math.pow(2,e)*this.tileSize}_mercatorZfromZoom(e){return this.cameraToCenterDistance/this._worldSizeFromZoom(e)}_minimumHeightOverTerrain(){const e=Math.min((null!=this._seaLevelZoom?this._seaLevelZoom:this._zoom)+2,this._maxZoom);return this._mercatorZfromZoom(e)}_zoomFromMercatorZ(e){return this.scaleZoom(this.cameraToCenterDistance/(e*this.tileSize))}_terrainEnabled(){return!(!this._elevation||!this.projection.supportsTerrain&&(e.warnOnce("Terrain is not yet supported with alternate projections. Use mercator to enable terrain."),1))}anyCornerOffEdge(t,i){const r=Math.min(t.x,i.x),n=Math.max(t.x,i.x),o=Math.min(t.y,i.y),s=Math.max(t.y,i.y);if(o<this.horizonLineFromTop(!1))return!0;if("mercator"!==this.projection.name)return!1;const a=[new e.pointGeometry(r,o),new e.pointGeometry(n,s),new e.pointGeometry(r,s),new e.pointGeometry(n,o)],l=this.renderWorldCopies?-3:0,c=this.renderWorldCopies?4:1;for(const e of a){const t=this.pointRayIntersection(e);if(t.t<0)return!0;const i=this.rayIntersectionCoordinate(t);if(i.x<l||i.y<0||i.x>c||i.y>1)return!0}return!1}isHorizonVisible(){return this.pitch+e.radToDeg(this.fovAboveCenter)>88||this.anyCornerOffEdge(new e.pointGeometry(0,0),new e.pointGeometry(this.width,this.height))}zoomDeltaToMovement(t,i){const r=e.length(e.sub([],this._camera.position,t)),n=this._zoomFromMercatorZ(r)+i;return r-this._mercatorZfromZoom(n)}getCameraPoint(){const t=Math.tan(this._pitch)*(this.cameraToCenterDistance||1);return this.centerPoint.add(new e.pointGeometry(0,t))}}function Vr(e,t){let i=!1,r=null;const n=()=>{r=null,i&&(e(),r=setTimeout(n,t),i=!1)};return()=>(i=!0,r||n(),r)}class jr{constructor(t){this._hashName=t&&encodeURIComponent(t),e.bindAll(["_getCurrentHash","_onHashChange","_updateHash"],this),this._updateHash=Vr(this._updateHashUnthrottled.bind(this),300)}addTo(t){return this._map=t,e.window.addEventListener("hashchange",this._onHashChange,!1),t.on("moveend",this._updateHash),this}remove(){return this._map?(this._map.off("moveend",this._updateHash),e.window.removeEventListener("hashchange",this._onHashChange,!1),clearTimeout(this._updateHash()),this._map=void 0,this):this}getHashString(t){const i=this._map;if(!i)return"";const r=i.getCenter(),n=Math.round(100*i.getZoom())/100,o=Math.ceil((n*Math.LN2+Math.log(512/360/.5))/Math.LN10),s=Math.pow(10,o),a=Math.round(r.lng*s)/s,l=Math.round(r.lat*s)/s,c=i.getBearing(),h=i.getPitch();let u="";if(u+=t?`/${a}/${l}/${n}`:`${n}/${l}/${a}`,(c||h)&&(u+="/"+Math.round(10*c)/10),h&&(u+=`/${Math.round(h)}`),this._hashName){const t=this._hashName;let i=!1;const r=e.window.location.hash.slice(1).split("&").map((e=>{const r=e.split("=")[0];return r===t?(i=!0,`${r}=${u}`):e})).filter((e=>e));return i||r.push(`${t}=${u}`),`#${r.join("&")}`}return`#${u}`}_getCurrentHash(){const t=e.window.location.hash.replace("#","");if(this._hashName){let e;return t.split("&").map((e=>e.split("="))).forEach((t=>{t[0]===this._hashName&&(e=t)})),(e&&e[1]||"").split("/")}return t.split("/")}_onHashChange(){const e=this._map;if(!e)return!1;const t=this._getCurrentHash();if(t.length>=3&&!t.some((e=>isNaN(e)))){const i=e.dragRotate.isEnabled()&&e.touchZoomRotate.isEnabled()?+(t[3]||0):e.getBearing();return e.jumpTo({center:[+t[2],+t[1]],zoom:+t[0],bearing:i,pitch:+(t[4]||0)}),!0}return!1}_updateHashUnthrottled(){const t=e.window.location.href.replace(/(#.+)?$/,this.getHashString());e.window.history.replaceState(e.window.history.state,null,t)}}const Nr={linearity:.3,easing:e.bezier(0,0,.3,1)},Gr=e.extend({deceleration:2500,maxSpeed:1400},Nr),Zr=e.extend({deceleration:20,maxSpeed:1400},Nr),$r=e.extend({deceleration:1e3,maxSpeed:360},Nr),qr=e.extend({deceleration:1e3,maxSpeed:90},Nr);class Xr{constructor(e){this._map=e,this.clear()}clear(){this._inertiaBuffer=[]}record(t){this._drainInertiaBuffer(),this._inertiaBuffer.push({time:e.exported.now(),settings:t})}_drainInertiaBuffer(){const t=this._inertiaBuffer,i=e.exported.now();for(;t.length>0&&i-t[0].time>160;)t.shift()}_onMoveEnd(t){if(this._drainInertiaBuffer(),this._inertiaBuffer.length<2)return;const i={zoom:0,bearing:0,pitch:0,pan:new e.pointGeometry(0,0),pinchAround:void 0,around:void 0};for(const{settings:e}of this._inertiaBuffer)i.zoom+=e.zoomDelta||0,i.bearing+=e.bearingDelta||0,i.pitch+=e.pitchDelta||0,e.panDelta&&i.pan._add(e.panDelta),e.around&&(i.around=e.around),e.pinchAround&&(i.pinchAround=e.pinchAround);const r=this._inertiaBuffer[this._inertiaBuffer.length-1].time-this._inertiaBuffer[0].time,n={};if(i.pan.mag()){const o=Hr(i.pan.mag(),r,e.extend({},Gr,t||{}));n.offset=i.pan.mult(o.amount/i.pan.mag()),n.center=this._map.transform.center,Wr(n,o)}if(i.zoom){const e=Hr(i.zoom,r,Zr);n.zoom=this._map.transform.zoom+e.amount,Wr(n,e)}if(i.bearing){const t=Hr(i.bearing,r,$r);n.bearing=this._map.transform.bearing+e.clamp(t.amount,-179,179),Wr(n,t)}if(i.pitch){const e=Hr(i.pitch,r,qr);n.pitch=this._map.transform.pitch+e.amount,Wr(n,e)}if(n.zoom||n.bearing){const e=void 0===i.pinchAround?i.around:i.pinchAround;n.around=e?this._map.unproject(e):this._map.getCenter()}return this.clear(),n.noMoveStart=!0,n}}function Wr(e,t){(!e.duration||e.duration<t.duration)&&(e.duration=t.duration,e.easing=t.easing)}function Hr(t,i,r){const{maxSpeed:n,linearity:o,deceleration:s}=r,a=e.clamp(t*o/(i/1e3),-n,n),l=Math.abs(a)/(s*o);return{easing:r.easing,duration:1e3*l,amount:a*(l/2)}}class Yr extends e.Event{preventDefault(){this._defaultPrevented=!0}get defaultPrevented(){return this._defaultPrevented}constructor(t,i,r,n={}){const o=f(i.getCanvasContainer(),r),s=i.unproject(o);super(t,e.extend({point:o,lngLat:s,originalEvent:r},n)),this._defaultPrevented=!1,this.target=i}}class Kr extends e.Event{preventDefault(){this._defaultPrevented=!0}get defaultPrevented(){return this._defaultPrevented}constructor(t,i,r){const n="touchend"===t?r.changedTouches:r.touches,o=m(i.getCanvasContainer(),n),s=o.map((e=>i.unproject(e))),a=o.reduce(((e,t,i,r)=>e.add(t.div(r.length))),new e.pointGeometry(0,0));super(t,{points:o,point:a,lngLats:s,lngLat:i.unproject(a),originalEvent:r}),this._defaultPrevented=!1}}class Jr extends e.Event{preventDefault(){this._defaultPrevented=!0}get defaultPrevented(){return this._defaultPrevented}constructor(e,t,i){super(e,{originalEvent:i}),this._defaultPrevented=!1}}class Qr{constructor(e,t){this._map=e,this._clickTolerance=t.clickTolerance}reset(){this._mousedownPos=void 0}wheel(e){return this._firePreventable(new Jr(e.type,this._map,e))}mousedown(e,t){return this._mousedownPos=t,this._firePreventable(new Yr(e.type,this._map,e))}mouseup(e){this._map.fire(new Yr(e.type,this._map,e))}preclick(t){const i=e.extend({},t);i.type="preclick",this._map.fire(new Yr(i.type,this._map,i))}click(e,t){this._mousedownPos&&this._mousedownPos.dist(t)>=this._clickTolerance||(this.preclick(e),this._map.fire(new Yr(e.type,this._map,e)))}dblclick(e){return this._firePreventable(new Yr(e.type,this._map,e))}mouseover(e){this._map.fire(new Yr(e.type,this._map,e))}mouseout(e){this._map.fire(new Yr(e.type,this._map,e))}touchstart(e){return this._firePreventable(new Kr(e.type,this._map,e))}touchmove(e){this._map.fire(new Kr(e.type,this._map,e))}touchend(e){this._map.fire(new Kr(e.type,this._map,e))}touchcancel(e){this._map.fire(new Kr(e.type,this._map,e))}_firePreventable(e){if(this._map.fire(e),e.defaultPrevented)return{}}isEnabled(){return!0}isActive(){return!1}enable(){}disable(){}}class en{constructor(e){this._map=e}reset(){this._delayContextMenu=!1,this._contextMenuEvent=void 0}mousemove(e){this._map.fire(new Yr(e.type,this._map,e))}mousedown(){this._delayContextMenu=!0}mouseup(){this._delayContextMenu=!1,this._contextMenuEvent&&(this._map.fire(new Yr("contextmenu",this._map,this._contextMenuEvent)),delete this._contextMenuEvent)}contextmenu(e){this._delayContextMenu?this._contextMenuEvent=e:this._map.fire(new Yr(e.type,this._map,e)),this._map.listens("contextmenu")&&e.preventDefault()}isEnabled(){return!0}isActive(){return!1}enable(){}disable(){}}class tn{constructor(e,t){this._map=e,this._el=e.getCanvasContainer(),this._container=e.getContainer(),this._clickTolerance=t.clickTolerance||1}isEnabled(){return!!this._enabled}isActive(){return!!this._active}enable(){this.isEnabled()||(this._enabled=!0)}disable(){this.isEnabled()&&(this._enabled=!1)}mousedown(e,t){this.isEnabled()&&e.shiftKey&&0===e.button&&(h(),this._startPos=this._lastPos=t,this._active=!0)}mousemoveWindow(e,t){if(!this._active)return;const i=t;if(this._lastPos.equals(i)||!this._box&&i.dist(this._startPos)<this._clickTolerance)return;const r=this._startPos;this._lastPos=i,this._box||(this._box=o("div","mapboxgl-boxzoom",this._container),this._container.classList.add("mapboxgl-crosshair"),this._fireEvent("boxzoomstart",e));const n=Math.min(r.x,i.x),s=Math.max(r.x,i.x),a=Math.min(r.y,i.y),l=Math.max(r.y,i.y);this._map._requestDomTask((()=>{this._box&&(this._box.style.transform=`translate(${n}px,${a}px)`,this._box.style.width=s-n+"px",this._box.style.height=l-a+"px")}))}mouseupWindow(t,i){if(!this._active)return;if(0!==t.button)return;const r=this._startPos,n=i;if(this.reset(),p(),r.x!==n.x||r.y!==n.y)return this._map.fire(new e.Event("boxzoomend",{originalEvent:t})),{cameraAnimation:e=>e.fitScreenCoordinates(r,n,this._map.getBearing(),{linear:!1})};this._fireEvent("boxzoomcancel",t)}keydown(e){this._active&&27===e.keyCode&&(this.reset(),this._fireEvent("boxzoomcancel",e))}blur(){this.reset()}reset(){this._active=!1,this._container.classList.remove("mapboxgl-crosshair"),this._box&&(this._box.remove(),this._box=null),u(),delete this._startPos,delete this._lastPos}_fireEvent(t,i){return this._map.fire(new e.Event(t,{originalEvent:i}))}}function rn(e,t){const i={};for(let r=0;r<e.length;r++)i[e[r].identifier]=t[r];return i}class nn{constructor(e){this.reset(),this.numTouches=e.numTouches}reset(){this.centroid=void 0,this.startTime=0,this.touches={},this.aborted=!1}touchstart(t,i,r){(this.centroid||r.length>this.numTouches)&&(this.aborted=!0),this.aborted||(0===this.startTime&&(this.startTime=t.timeStamp),r.length===this.numTouches&&(this.centroid=function(t){const i=new e.pointGeometry(0,0);for(const e of t)i._add(e);return i.div(t.length)}(i),this.touches=rn(r,i)))}touchmove(e,t,i){if(this.aborted||!this.centroid)return;const r=rn(i,t);for(const e in this.touches){const t=this.touches[e],i=r[e];(!i||i.dist(t)>30)&&(this.aborted=!0)}}touchend(e,t,i){if((!this.centroid||e.timeStamp-this.startTime>500)&&(this.aborted=!0),0===i.length){const e=!this.aborted&&this.centroid;if(this.reset(),e)return e}}}class on{constructor(e){this.singleTap=new nn(e),this.numTaps=e.numTaps,this.reset()}reset(){this.lastTime=1/0,this.lastTap=void 0,this.count=0,this.singleTap.reset()}touchstart(e,t,i){this.singleTap.touchstart(e,t,i)}touchmove(e,t,i){this.singleTap.touchmove(e,t,i)}touchend(e,t,i){const r=this.singleTap.touchend(e,t,i);if(r){const t=e.timeStamp-this.lastTime<500,i=!this.lastTap||this.lastTap.dist(r)<30;if(t&&i||this.reset(),this.count++,this.lastTime=e.timeStamp,this.lastTap=r,this.count===this.numTaps)return this.reset(),r}}}class sn{constructor(){this._zoomIn=new on({numTouches:1,numTaps:2}),this._zoomOut=new on({numTouches:2,numTaps:1}),this.reset()}reset(){this._active=!1,this._zoomIn.reset(),this._zoomOut.reset()}touchstart(e,t,i){this._zoomIn.touchstart(e,t,i),this._zoomOut.touchstart(e,t,i)}touchmove(e,t,i){this._zoomIn.touchmove(e,t,i),this._zoomOut.touchmove(e,t,i)}touchend(e,t,i){const r=this._zoomIn.touchend(e,t,i),n=this._zoomOut.touchend(e,t,i);return r?(this._active=!0,e.preventDefault(),setTimeout((()=>this.reset()),0),{cameraAnimation:t=>t.easeTo({duration:300,zoom:t.getZoom()+1,around:t.unproject(r)},{originalEvent:e})}):n?(this._active=!0,e.preventDefault(),setTimeout((()=>this.reset()),0),{cameraAnimation:t=>t.easeTo({duration:300,zoom:t.getZoom()-1,around:t.unproject(n)},{originalEvent:e})}):void 0}touchcancel(){this.reset()}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}const an={0:1,2:2};class ln{constructor(e){this.reset(),this._clickTolerance=e.clickTolerance||1}blur(){this.reset()}reset(){this._active=!1,this._moved=!1,this._lastPoint=void 0,this._eventButton=void 0}_correctButton(e,t){return!1}_move(e,t){return{}}mousedown(e,t){if(this._lastPoint)return;const i=_(e);this._correctButton(e,i)&&(this._lastPoint=t,this._eventButton=i)}mousemoveWindow(e,t){const i=this._lastPoint;if(i)if(e.preventDefault(),null!=this._eventButton&&function(e,t){const i=an[t];return void 0===e.buttons||(e.buttons&i)!==i}(e,this._eventButton))this.reset();else if(this._moved||!(t.dist(i)<this._clickTolerance))return this._moved=!0,this._lastPoint=t,this._move(i,t)}mouseupWindow(e){this._lastPoint&&_(e)===this._eventButton&&(this._moved&&p(),this.reset())}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class cn extends ln{mousedown(e,t){super.mousedown(e,t),this._lastPoint&&(this._active=!0)}_correctButton(e,t){return 0===t&&!e.ctrlKey}_move(e,t){return{around:t,panDelta:t.sub(e)}}}class hn extends ln{_correctButton(e,t){return 0===t&&e.ctrlKey||2===t}_move(e,t){const i=.8*(t.x-e.x);if(i)return this._active=!0,{bearingDelta:i}}contextmenu(e){e.preventDefault()}}class un extends ln{_correctButton(e,t){return 0===t&&e.ctrlKey||2===t}_move(e,t){const i=-.5*(t.y-e.y);if(i)return this._active=!0,{pitchDelta:i}}contextmenu(e){e.preventDefault()}}class dn{constructor(t,i){this._map=t,this._el=t.getCanvasContainer(),this._minTouches=1,this._clickTolerance=i.clickTolerance||1,this.reset(),e.bindAll(["_addTouchPanBlocker","_showTouchPanBlockerAlert"],this)}reset(){this._active=!1,this._touches={},this._sum=new e.pointGeometry(0,0)}touchstart(e,t,i){return this._calculateTransform(e,t,i)}touchmove(e,t,i){if(this._active&&!(i.length<this._minTouches)){if(this._map._cooperativeGestures&&!this._map.isMoving()){if(1===i.length)return void this._showTouchPanBlockerAlert();"hidden"!==this._alertContainer.style.visibility&&(this._alertContainer.style.visibility="hidden",clearTimeout(this._alertTimer))}return e.preventDefault(),this._calculateTransform(e,t,i)}}touchend(e,t,i){this._calculateTransform(e,t,i),this._active&&i.length<this._minTouches&&this.reset()}touchcancel(){this.reset()}_calculateTransform(t,i,r){r.length>0&&(this._active=!0);const n=rn(r,i),o=new e.pointGeometry(0,0),s=new e.pointGeometry(0,0);let a=0;for(const e in n){const t=n[e],i=this._touches[e];i&&(o._add(t),s._add(t.sub(i)),a++,n[e]=t)}if(this._touches=n,a<this._minTouches||!s.mag())return;const l=s.div(a);return this._sum._add(l),this._sum.mag()<this._clickTolerance?void 0:{around:o.div(a),panDelta:l}}enable(){this._enabled=!0,this._map._cooperativeGestures&&(this._addTouchPanBlocker(),this._el.classList.add("mapboxgl-touch-pan-blocker-override","mapboxgl-scrollable-page"))}disable(){this._enabled=!1,this._map._cooperativeGestures&&(clearTimeout(this._alertTimer),this._alertContainer.remove(),this._el.classList.remove("mapboxgl-touch-pan-blocker-override","mapboxgl-scrollable-page")),this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}_addTouchPanBlocker(){this._map&&!this._alertContainer&&(this._alertContainer=o("div","mapboxgl-touch-pan-blocker",this._map._container),this._alertContainer.textContent=this._map._getUIString("TouchPanBlocker.Message"),this._alertContainer.style.fontSize=`${Math.max(10,Math.min(24,Math.floor(.05*this._el.clientWidth)))}px`)}_showTouchPanBlockerAlert(){"hidden"===this._alertContainer.style.visibility&&(this._alertContainer.style.visibility="visible"),this._alertContainer.classList.add("mapboxgl-touch-pan-blocker-show"),clearTimeout(this._alertTimer),this._alertTimer=setTimeout((()=>{this._alertContainer.classList.remove("mapboxgl-touch-pan-blocker-show")}),500)}}class pn{constructor(){this.reset()}reset(){this._active=!1,this._firstTwoTouches=void 0}_start(e){}_move(e,t,i){return{}}touchstart(e,t,i){this._firstTwoTouches||i.length<2||(this._firstTwoTouches=[i[0].identifier,i[1].identifier],this._start([t[0],t[1]]))}touchmove(e,t,i){const r=this._firstTwoTouches;if(!r)return;e.preventDefault();const[n,o]=r,s=fn(i,t,n),a=fn(i,t,o);if(!s||!a)return;const l=this._aroundCenter?null:s.add(a).div(2);return this._move([s,a],l,e)}touchend(e,t,i){if(!this._firstTwoTouches)return;const[r,n]=this._firstTwoTouches,o=fn(i,t,r),s=fn(i,t,n);o&&s||(this._active&&p(),this.reset())}touchcancel(){this.reset()}enable(e){this._enabled=!0,this._aroundCenter=!!e&&"center"===e.around}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}function fn(e,t,i){for(let r=0;r<e.length;r++)if(e[r].identifier===i)return t[r]}function mn(e,t){return Math.log(e/t)/Math.LN2}class _n extends pn{reset(){super.reset(),this._distance=0,this._startDistance=0}_start(e){this._startDistance=this._distance=e[0].dist(e[1])}_move(e,t){const i=this._distance;if(this._distance=e[0].dist(e[1]),this._active||!(Math.abs(mn(this._distance,this._startDistance))<.1))return this._active=!0,{zoomDelta:mn(this._distance,i),pinchAround:t}}}function gn(e,t){return 180*e.angleWith(t)/Math.PI}class yn extends pn{reset(){super.reset(),this._minDiameter=0,this._startVector=void 0,this._vector=void 0}_start(e){this._startVector=this._vector=e[0].sub(e[1]),this._minDiameter=e[0].dist(e[1])}_move(e,t){const i=this._vector;if(this._vector=e[0].sub(e[1]),this._active||!this._isBelowThreshold(this._vector))return this._active=!0,{bearingDelta:gn(this._vector,i),pinchAround:t}}_isBelowThreshold(e){this._minDiameter=Math.min(this._minDiameter,e.mag());const t=25/(Math.PI*this._minDiameter)*360,i=gn(e,this._startVector);return Math.abs(i)<t}}function xn(e){return Math.abs(e.y)>Math.abs(e.x)}class vn extends pn{constructor(e){super(),this._map=e}reset(){super.reset(),this._valid=void 0,this._firstMove=void 0,this._lastPoints=void 0}_start(e){this._lastPoints=e,xn(e[0].sub(e[1]))&&(this._valid=!1)}_move(e,t,i){const r=this._lastPoints;if(!r)return;const n=e[0].sub(r[0]),o=e[1].sub(r[1]);return this._map._cooperativeGestures&&i.touches.length<3||(this._valid=this.gestureBeginsVertically(n,o,i.timeStamp),!this._valid)?void 0:(this._lastPoints=e,this._active=!0,{pitchDelta:(n.y+o.y)/2*-.5})}gestureBeginsVertically(e,t,i){if(void 0!==this._valid)return this._valid;const r=e.mag()>=2,n=t.mag()>=2;if(!r&&!n)return;if(!r||!n)return null==this._firstMove&&(this._firstMove=i),i-this._firstMove<100&&void 0;const o=e.y>0==t.y>0;return xn(e)&&xn(t)&&o}}const bn={panStep:100,bearingStep:15,pitchStep:10};class wn{constructor(){const e=bn;this._panStep=e.panStep,this._bearingStep=e.bearingStep,this._pitchStep=e.pitchStep,this._rotationDisabled=!1}blur(){this.reset()}reset(){this._active=!1}keydown(e){if(e.altKey||e.ctrlKey||e.metaKey)return;let t=0,i=0,r=0,n=0,o=0;switch(e.keyCode){case 61:case 107:case 171:case 187:t=1;break;case 189:case 109:case 173:t=-1;break;case 37:e.shiftKey?i=-1:(e.preventDefault(),n=-1);break;case 39:e.shiftKey?i=1:(e.preventDefault(),n=1);break;case 38:e.shiftKey?r=1:(e.preventDefault(),o=-1);break;case 40:e.shiftKey?r=-1:(e.preventDefault(),o=1);break;default:return}return this._rotationDisabled&&(i=0,r=0),{cameraAnimation:s=>{const a=s.getZoom();s.easeTo({duration:300,easeId:"keyboardHandler",easing:Tn,zoom:t?Math.round(a)+t*(e.shiftKey?2:1):a,bearing:s.getBearing()+i*this._bearingStep,pitch:s.getPitch()+r*this._pitchStep,offset:[-n*this._panStep,-o*this._panStep],center:s.getCenter()},{originalEvent:e})}}}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}disableRotation(){this._rotationDisabled=!0}enableRotation(){this._rotationDisabled=!1}}function Tn(e){return e*(2-e)}const En=4.000244140625;class Sn{constructor(t,i){this._map=t,this._el=t.getCanvasContainer(),this._handler=i,this._delta=0,this._defaultZoomRate=.01,this._wheelZoomRate=.0022222222222222222,e.bindAll(["_onTimeout","_addScrollZoomBlocker","_showBlockerAlert","_isFullscreen"],this)}setZoomRate(e){this._defaultZoomRate=e}setWheelZoomRate(e){this._wheelZoomRate=e}isEnabled(){return!!this._enabled}isActive(){return!!this._active||void 0!==this._finishTimeout}isZooming(){return!!this._zooming}enable(e){this.isEnabled()||(this._enabled=!0,this._aroundCenter=!!e&&"center"===e.around,this._map._cooperativeGestures&&this._addScrollZoomBlocker())}disable(){this.isEnabled()&&(this._enabled=!1,this._map._cooperativeGestures&&(clearTimeout(this._alertTimer),this._alertContainer.remove()))}wheel(t){if(!this.isEnabled())return;if(this._map._cooperativeGestures){if(!(t.ctrlKey||t.metaKey||this.isZooming()||this._isFullscreen()))return void this._showBlockerAlert();"hidden"!==this._alertContainer.style.visibility&&(this._alertContainer.style.visibility="hidden",clearTimeout(this._alertTimer))}let i=t.deltaMode===e.window.WheelEvent.DOM_DELTA_LINE?40*t.deltaY:t.deltaY;const r=e.exported.now(),n=r-(this._lastWheelEventTime||0);this._lastWheelEventTime=r,0!==i&&i%En==0?this._type="wheel":0!==i&&Math.abs(i)<4?this._type="trackpad":n>400?(this._type=null,this._lastValue=i,this._timeout=setTimeout(this._onTimeout,40,t)):this._type||(this._type=Math.abs(n*i)<200?"trackpad":"wheel",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,i+=this._lastValue)),t.shiftKey&&i&&(i/=4),this._type&&(this._lastWheelEvent=t,this._delta-=i,this._active||this._start(t)),t.preventDefault()}_onTimeout(e){this._type="wheel",this._delta-=this._lastValue,this._active||this._start(e)}_start(e){if(!this._delta)return;this._frameId&&(this._frameId=null),this._active=!0,this.isZooming()||(this._zooming=!0),this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout);const t=f(this._el,e);this._aroundPoint=this._aroundCenter?this._map.transform.centerPoint:t,this._aroundCoord=this._map.transform.pointCoordinate3D(this._aroundPoint),this._targetZoom=void 0,this._frameId||(this._frameId=!0,this._handler._triggerRenderFrame())}renderFrame(){if(!this._frameId)return;if(this._frameId=null,!this.isActive())return;const t=this._map.transform,i=()=>t._terrainEnabled()&&this._aroundCoord?t.computeZoomRelativeTo(this._aroundCoord):t.zoom;if(0!==this._delta){const e="wheel"===this._type&&Math.abs(this._delta)>En?this._wheelZoomRate:this._defaultZoomRate;let r=2/(1+Math.exp(-Math.abs(this._delta*e)));this._delta<0&&0!==r&&(r=1/r);const n=i(),o=Math.pow(2,n),s="number"==typeof this._targetZoom?t.zoomScale(this._targetZoom):o;this._targetZoom=Math.min(t.maxZoom,Math.max(t.minZoom,t.scaleZoom(s*r))),"wheel"===this._type&&(this._startZoom=i(),this._easing=this._smoothOutEasing(200)),this._delta=0}const r="number"==typeof this._targetZoom?this._targetZoom:i(),n=this._startZoom,o=this._easing;let s,a=!1;if("wheel"===this._type&&n&&o){const t=Math.min((e.exported.now()-this._lastWheelEventTime)/200,1),i=o(t);s=e.number(n,r,i),t<1?this._frameId||(this._frameId=!0):a=!0}else s=r,a=!0;return this._active=!0,a&&(this._active=!1,this._finishTimeout=setTimeout((()=>{this._zooming=!1,this._handler._triggerRenderFrame(),delete this._targetZoom,delete this._finishTimeout}),200)),{noInertia:!0,needsRenderFrame:!a,zoomDelta:s-i(),around:this._aroundPoint,aroundCoord:this._aroundCoord,originalEvent:this._lastWheelEvent}}_smoothOutEasing(t){let i=e.ease;if(this._prevEase){const t=this._prevEase,r=(e.exported.now()-t.start)/t.duration,n=t.easing(r+.01)-t.easing(r),o=.27/Math.sqrt(n*n+1e-4)*.01,s=Math.sqrt(.0729-o*o);i=e.bezier(o,s,.25,1)}return this._prevEase={start:e.exported.now(),duration:t,easing:i},i}blur(){this.reset()}reset(){this._active=!1}_addScrollZoomBlocker(){this._map&&!this._alertContainer&&(this._alertContainer=o("div","mapboxgl-scroll-zoom-blocker",this._map._container),this._alertContainer.textContent=/(Mac|iPad)/i.test(e.window.navigator.userAgent)?this._map._getUIString("ScrollZoomBlocker.CmdMessage"):this._map._getUIString("ScrollZoomBlocker.CtrlMessage"),this._alertContainer.style.fontSize=`${Math.max(10,Math.min(24,Math.floor(.05*this._el.clientWidth)))}px`)}_isFullscreen(){return!!e.window.document.fullscreenElement||!!e.window.document.webkitFullscreenElement}_showBlockerAlert(){"hidden"===this._alertContainer.style.visibility&&(this._alertContainer.style.visibility="visible"),this._alertContainer.classList.add("mapboxgl-scroll-zoom-blocker-show"),clearTimeout(this._alertTimer),this._alertTimer=setTimeout((()=>{this._alertContainer.classList.remove("mapboxgl-scroll-zoom-blocker-show")}),200)}}class In{constructor(e,t){this._clickZoom=e,this._tapZoom=t}enable(){this._clickZoom.enable(),this._tapZoom.enable()}disable(){this._clickZoom.disable(),this._tapZoom.disable()}isEnabled(){return this._clickZoom.isEnabled()&&this._tapZoom.isEnabled()}isActive(){return this._clickZoom.isActive()||this._tapZoom.isActive()}}class Mn{constructor(){this.reset()}reset(){this._active=!1}blur(){this.reset()}dblclick(e,t){return e.preventDefault(),{cameraAnimation:i=>{i.easeTo({duration:300,zoom:i.getZoom()+(e.shiftKey?-1:1),around:i.unproject(t)},{originalEvent:e})}}}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class An{constructor(){this._tap=new on({numTouches:1,numTaps:1}),this.reset()}reset(){this._active=!1,this._swipePoint=void 0,this._swipeTouch=0,this._tapTime=0,this._tap.reset()}touchstart(e,t,i){this._swipePoint||(this._tapTime&&e.timeStamp-this._tapTime>500&&this.reset(),this._tapTime?i.length>0&&(this._swipePoint=t[0],this._swipeTouch=i[0].identifier):this._tap.touchstart(e,t,i))}touchmove(e,t,i){if(this._tapTime){if(this._swipePoint){if(i[0].identifier!==this._swipeTouch)return;const r=t[0],n=r.y-this._swipePoint.y;return this._swipePoint=r,e.preventDefault(),this._active=!0,{zoomDelta:n/128}}}else this._tap.touchmove(e,t,i)}touchend(e,t,i){this._tapTime?this._swipePoint&&0===i.length&&this.reset():this._tap.touchend(e,t,i)&&(this._tapTime=e.timeStamp)}touchcancel(){this.reset()}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class Cn{constructor(e,t,i){this._el=e,this._mousePan=t,this._touchPan=i}enable(e){this._inertiaOptions=e||{},this._mousePan.enable(),this._touchPan.enable(),this._el.classList.add("mapboxgl-touch-drag-pan")}disable(){this._mousePan.disable(),this._touchPan.disable(),this._el.classList.remove("mapboxgl-touch-drag-pan")}isEnabled(){return this._mousePan.isEnabled()&&this._touchPan.isEnabled()}isActive(){return this._mousePan.isActive()||this._touchPan.isActive()}}class zn{constructor(e,t,i){this._pitchWithRotate=e.pitchWithRotate,this._mouseRotate=t,this._mousePitch=i}enable(){this._mouseRotate.enable(),this._pitchWithRotate&&this._mousePitch.enable()}disable(){this._mouseRotate.disable(),this._mousePitch.disable()}isEnabled(){return this._mouseRotate.isEnabled()&&(!this._pitchWithRotate||this._mousePitch.isEnabled())}isActive(){return this._mouseRotate.isActive()||this._mousePitch.isActive()}}class kn{constructor(e,t,i,r){this._el=e,this._touchZoom=t,this._touchRotate=i,this._tapDragZoom=r,this._rotationDisabled=!1,this._enabled=!0}enable(e){this._touchZoom.enable(e),this._rotationDisabled||this._touchRotate.enable(e),this._tapDragZoom.enable(),this._el.classList.add("mapboxgl-touch-zoom-rotate")}disable(){this._touchZoom.disable(),this._touchRotate.disable(),this._tapDragZoom.disable(),this._el.classList.remove("mapboxgl-touch-zoom-rotate")}isEnabled(){return this._touchZoom.isEnabled()&&(this._rotationDisabled||this._touchRotate.isEnabled())&&this._tapDragZoom.isEnabled()}isActive(){return this._touchZoom.isActive()||this._touchRotate.isActive()||this._tapDragZoom.isActive()}disableRotation(){this._rotationDisabled=!0,this._touchRotate.disable()}enableRotation(){this._rotationDisabled=!1,this._touchZoom.isEnabled()&&this._touchRotate.enable()}}const Dn=e=>e.zoom||e.drag||e.pitch||e.rotate;class Pn extends e.Event{}class Ln{constructor(){this.constants=[1,1,.01],this.radius=0}setup(t,i){const r=e.sub([],i,t);this.radius=e.length(r[2]<0?e.div([],r,this.constants):[r[0],r[1],0])}projectRay(t){e.div(t,t,this.constants),e.normalize(t,t),e.mul$1(t,t,this.constants);const i=e.scale$2([],t,this.radius);if(i[2]>0){const t=e.scale$2([],[0,0,1],e.dot(i,[0,0,1])),r=e.scale$2([],e.normalize([],[i[0],i[1],0]),this.radius),n=e.add([],i,e.scale$2([],e.sub([],e.add([],r,t),i),2));i[0]=n[0],i[1]=n[1]}return i}}function Bn(e){return e.panDelta&&e.panDelta.mag()||e.zoomDelta||e.bearingDelta||e.pitchDelta}class Rn{constructor(t,i){this._map=t,this._el=this._map.getCanvasContainer(),this._handlers=[],this._handlersById={},this._changes=[],this._inertia=new Xr(t),this._bearingSnap=i.bearingSnap,this._previousActiveHandlers={},this._trackingEllipsoid=new Ln,this._dragOrigin=null,this._eventsInProgress={},this._addDefaultHandlers(i),e.bindAll(["handleEvent","handleWindowEvent"],this);const r=this._el;this._listeners=[[r,"touchstart",{passive:!0}],[r,"touchmove",{passive:!1}],[r,"touchend",void 0],[r,"touchcancel",void 0],[r,"mousedown",void 0],[r,"mousemove",void 0],[r,"mouseup",void 0],[e.window.document,"mousemove",{capture:!0}],[e.window.document,"mouseup",void 0],[r,"mouseover",void 0],[r,"mouseout",void 0],[r,"dblclick",void 0],[r,"click",void 0],[r,"keydown",{capture:!1}],[r,"keyup",void 0],[r,"wheel",{passive:!1}],[r,"contextmenu",void 0],[e.window,"blur",void 0]];for(const[t,i,r]of this._listeners)t.addEventListener(i,t===e.window.document?this.handleWindowEvent:this.handleEvent,r)}destroy(){for(const[t,i,r]of this._listeners)t.removeEventListener(i,t===e.window.document?this.handleWindowEvent:this.handleEvent,r)}_addDefaultHandlers(e){const t=this._map,i=t.getCanvasContainer();this._add("mapEvent",new Qr(t,e));const r=t.boxZoom=new tn(t,e);this._add("boxZoom",r);const n=new sn,o=new Mn;t.doubleClickZoom=new In(o,n),this._add("tapZoom",n),this._add("clickZoom",o);const s=new An;this._add("tapDragZoom",s);const a=t.touchPitch=new vn(t);this._add("touchPitch",a);const l=new hn(e),c=new un(e);t.dragRotate=new zn(e,l,c),this._add("mouseRotate",l,["mousePitch"]),this._add("mousePitch",c,["mouseRotate"]);const h=new cn(e),u=new dn(t,e);t.dragPan=new Cn(i,h,u),this._add("mousePan",h),this._add("touchPan",u,["touchZoom","touchRotate"]);const d=new yn,p=new _n;t.touchZoomRotate=new kn(i,p,d,s),this._add("touchRotate",d,["touchPan","touchZoom"]),this._add("touchZoom",p,["touchPan","touchRotate"]),this._add("blockableMapEvent",new en(t));const f=t.scrollZoom=new Sn(t,this);this._add("scrollZoom",f,["mousePan"]);const m=t.keyboard=new wn;this._add("keyboard",m);for(const i of["boxZoom","doubleClickZoom","tapDragZoom","touchPitch","dragRotate","dragPan","touchZoomRotate","scrollZoom","keyboard"])e.interactive&&e[i]&&t[i].enable(e[i])}_add(e,t,i){this._handlers.push({handlerName:e,handler:t,allowed:i}),this._handlersById[e]=t}stop(e){if(!this._updatingCamera){for(const{handler:e}of this._handlers)e.reset();this._inertia.clear(),this._fireEvents({},{},e),this._changes=[]}}isActive(){for(const{handler:e}of this._handlers)if(e.isActive())return!0;return!1}isZooming(){return!!this._eventsInProgress.zoom||this._map.scrollZoom.isZooming()}isRotating(){return!!this._eventsInProgress.rotate}isMoving(){return!!Dn(this._eventsInProgress)||this.isZooming()}_blockedByActive(e,t,i){for(const r in e)if(r!==i&&(!t||t.indexOf(r)<0))return!0;return!1}handleWindowEvent(e){this.handleEvent(e,`${e.type}Window`)}_getMapTouches(e){const t=[];for(const i of e)this._el.contains(i.target)&&t.push(i);return t}handleEvent(e,t){this._updatingCamera=!0;const i="renderFrame"===e.type,r=i?void 0:e,n={needsRenderFrame:!1},o={},s={},a=e.touches?this._getMapTouches(e.touches):void 0,l=a?m(this._el,a):i?void 0:f(this._el,e);for(const{handlerName:i,handler:c,allowed:h}of this._handlers){if(!c.isEnabled())continue;let u;this._blockedByActive(s,h,i)?c.reset():c[t||e.type]&&(u=c[t||e.type](e,l,a),this.mergeHandlerResult(n,o,u,i,r),u&&u.needsRenderFrame&&this._triggerRenderFrame()),(u||c.isActive())&&(s[i]=c)}const c={};for(const e in this._previousActiveHandlers)s[e]||(c[e]=r);this._previousActiveHandlers=s,(Object.keys(c).length||Bn(n))&&(this._changes.push([n,o,c]),this._triggerRenderFrame()),(Object.keys(s).length||Bn(n))&&this._map._stop(!0),this._updatingCamera=!1;const{cameraAnimation:h}=n;h&&(this._inertia.clear(),this._fireEvents({},{},!0),this._changes=[],h(this._map))}mergeHandlerResult(t,i,r,n,o){if(!r)return;e.extend(t,r);const s={handlerName:n,originalEvent:r.originalEvent||o};void 0!==r.zoomDelta&&(i.zoom=s),void 0!==r.panDelta&&(i.drag=s),void 0!==r.pitchDelta&&(i.pitch=s),void 0!==r.bearingDelta&&(i.rotate=s)}_applyChanges(){const t={},i={},r={};for(const[n,o,s]of this._changes)n.panDelta&&(t.panDelta=(t.panDelta||new e.pointGeometry(0,0))._add(n.panDelta)),n.zoomDelta&&(t.zoomDelta=(t.zoomDelta||0)+n.zoomDelta),n.bearingDelta&&(t.bearingDelta=(t.bearingDelta||0)+n.bearingDelta),n.pitchDelta&&(t.pitchDelta=(t.pitchDelta||0)+n.pitchDelta),void 0!==n.around&&(t.around=n.around),void 0!==n.aroundCoord&&(t.aroundCoord=n.aroundCoord),void 0!==n.pinchAround&&(t.pinchAround=n.pinchAround),n.noInertia&&(t.noInertia=n.noInertia),e.extend(i,o),e.extend(r,s);this._updateMapTransform(t,i,r),this._changes=[]}_updateMapTransform(t,i,r){const n=this._map,o=n.transform,s=e=>[e.x,e.y,e.z];if((e=>{const t=this._eventsInProgress.drag;return t&&!this._handlersById[t.handlerName].isActive()})()&&!Bn(t)){const e=o.zoom;o.cameraElevationReference="sea",o.recenterOnTerrain(),o.cameraElevationReference="ground",e!==o.zoom&&this._map._update(!0)}if(!Bn(t))return void this._fireEvents(i,r,!0);let{panDelta:a,zoomDelta:l,bearingDelta:c,pitchDelta:h,around:u,aroundCoord:d,pinchAround:p}=t;void 0!==p&&(u=p),(e=>i.drag&&!this._eventsInProgress.drag)()&&u&&(this._dragOrigin=s(o.pointCoordinate3D(u)),this._trackingEllipsoid.setup(o._camera.position,this._dragOrigin)),o.cameraElevationReference="sea",n._stop(!0),u=u||n.transform.centerPoint,c&&(o.bearing+=c),h&&(o.pitch+=h),o._updateCameraState();const f=[0,0,0];if(a){const t=o.pointCoordinate(u);if("globe"===o.projection.name){const i=e.latFromMercatorY(t.y),r=o.center.lat,n=Math.min(e.mercatorZfromAltitude(1,i)/e.mercatorZfromAltitude(1,r),2);a=a.rotate(-o.angle),f[0]=-a.x/o.worldSize*n,f[1]=-a.y/o.worldSize*n}else{const e=o.pointCoordinate(u.sub(a));t&&e&&(f[0]=e.x-t.x,f[1]=e.y-t.y)}}const m=o.zoom,_=[0,0,0];if(l){const t=s(d||o.pointCoordinate3D(u)),i={dir:e.normalize([],e.sub([],t,o._camera.position))};if(i.dir[2]<0){const r=o.zoomDeltaToMovement(t,l);e.scale$2(_,i.dir,r)}}const g=e.add(f,f,_);o._translateCameraConstrained(g),l&&Math.abs(o.zoom-m)>1e-4&&o.recenterOnTerrain(),o.cameraElevationReference="ground",this._map._update(),t.noInertia||this._inertia.record(t),this._fireEvents(i,r,!0)}_fireEvents(t,i,r){const n=Dn(this._eventsInProgress),o=Dn(t),s={};for(const e in t){const{originalEvent:i}=t[e];this._eventsInProgress[e]||(s[`${e}start`]=i),this._eventsInProgress[e]=t[e]}!n&&o&&this._fireEvent("movestart",o.originalEvent);for(const e in s)this._fireEvent(e,s[e]);o&&this._fireEvent("move",o.originalEvent);for(const e in t){const{originalEvent:i}=t[e];this._fireEvent(e,i)}const a={};let l;for(const e in this._eventsInProgress){const{handlerName:t,originalEvent:r}=this._eventsInProgress[e];this._handlersById[t].isActive()||(delete this._eventsInProgress[e],l=i[t]||r,a[`${e}end`]=l)}for(const e in a)this._fireEvent(e,a[e]);const c=Dn(this._eventsInProgress);if(r&&(n||o)&&!c){this._updatingCamera=!0;const t=this._inertia._onMoveEnd(this._map.dragPan._inertiaOptions),i=e=>0!==e&&-this._bearingSnap<e&&e<this._bearingSnap;t?(i(t.bearing||this._map.getBearing())&&(t.bearing=0),this._map.easeTo(t,{originalEvent:l})):(this._map.fire(new e.Event("moveend",{originalEvent:l})),i(this._map.getBearing())&&this._map.resetNorth()),this._updatingCamera=!1}}_fireEvent(t,i){this._map.fire(new e.Event(t,i?{originalEvent:i}:{}))}_requestFrame(){return this._map.triggerRepaint(),this._map._renderTaskQueue.add((e=>{this._frameId=void 0,this.handleEvent(new Pn("renderFrame",{timeStamp:e})),this._applyChanges()}))}_triggerRenderFrame(){void 0===this._frameId&&(this._frameId=this._requestFrame())}}const Fn="map.setFreeCameraOptions(...) and map.getFreeCameraOptions() are not yet supported for non-mercator projections.";class On extends e.Evented{constructor(t,i){super(),this._moving=!1,this._zooming=!1,this.transform=t,this._bearingSnap=i.bearingSnap,e.bindAll(["_renderFrameCallback"],this)}getCenter(){return new e.LngLat(this.transform.center.lng,this.transform.center.lat)}setCenter(e,t){return this.jumpTo({center:e},t)}panBy(t,i,r){return t=e.pointGeometry.convert(t).mult(-1),this.panTo(this.transform.center,e.extend({offset:t},i),r)}panTo(t,i,r){return this.easeTo(e.extend({center:t},i),r)}getZoom(){return this.transform.zoom}setZoom(e,t){return this.jumpTo({zoom:e},t),this}zoomTo(t,i,r){return this.easeTo(e.extend({zoom:t},i),r)}zoomIn(e,t){return this.zoomTo(this.getZoom()+1,e,t),this}zoomOut(e,t){return this.zoomTo(this.getZoom()-1,e,t),this}getBearing(){return this.transform.bearing}setBearing(e,t){return this.jumpTo({bearing:e},t),this}getPadding(){return this.transform.padding}setPadding(e,t){return this.jumpTo({padding:e},t),this}rotateTo(t,i,r){return this.easeTo(e.extend({bearing:t},i),r)}resetNorth(t,i){return this.rotateTo(0,e.extend({duration:1e3},t),i),this}resetNorthPitch(t,i){return this.easeTo(e.extend({bearing:0,pitch:0,duration:1e3},t),i),this}snapToNorth(e,t){return Math.abs(this.getBearing())<this._bearingSnap?this.resetNorth(e,t):this}getPitch(){return this.transform.pitch}setPitch(e,t){return this.jumpTo({pitch:e},t),this}cameraForBounds(t,i){t=e.LngLatBounds.convert(t);const r=i&&i.bearing||0;return this._cameraForBoxAndBearing(t.getNorthWest(),t.getSouthEast(),r,i)}_extendCameraOptions(t){const i={top:0,bottom:0,right:0,left:0};if("number"==typeof(t=e.extend({padding:i,offset:[0,0],maxZoom:this.transform.maxZoom},t)).padding){const e=t.padding;t.padding={top:e,bottom:e,right:e,left:e}}return t.padding=e.extend(i,t.padding),t}_cameraForBoxAndBearing(t,i,r,n){const o=this._extendCameraOptions(n),s=this.transform,a=s.padding,l=s.project(e.LngLat.convert(t)),c=s.project(e.LngLat.convert(i)),h=new e.pointGeometry(l.x,c.y),u=new e.pointGeometry(c.x,l.y),d=-e.degToRad(r),p=l.rotate(d),f=c.rotate(d),m=h.rotate(d),_=u.rotate(d),g=new e.pointGeometry(Math.max(p.x,f.x,m.x,_.x),Math.max(p.y,f.y,m.y,_.y)),y=new e.pointGeometry(Math.min(p.x,f.x,m.x,_.x),Math.min(p.y,f.y,m.y,_.y)),x=g.sub(y),v=(s.width-((a.left||0)+(a.right||0)+o.padding.left+o.padding.right))/x.x,b=(s.height-((a.top||0)+(a.bottom||0)+o.padding.top+o.padding.bottom))/x.y;if(b<0||v<0)return void e.warnOnce("Map cannot fit within canvas with the given bounds, padding, and/or offset.");const w=Math.min(s.scaleZoom(s.scale*Math.min(v,b)),o.maxZoom),T="number"==typeof o.offset.x&&"number"==typeof o.offset.y?new e.pointGeometry(o.offset.x,o.offset.y):e.pointGeometry.convert(o.offset),E=new e.pointGeometry((o.padding.left-o.padding.right)/2,(o.padding.top-o.padding.bottom)/2).rotate(r*Math.PI/180),S=T.add(E).mult(s.scale/s.zoomScale(w));return{center:s.unproject(l.add(c).div(2).sub(S)),zoom:w,bearing:r}}_cameraForBox(t,i,r,n,o){const s=this._extendCameraOptions(o);r=r||0,n=n||0,t=e.LngLat.convert(t),i=e.LngLat.convert(i);const a=this.transform.clone();a.padding=s.padding;const l=this.getFreeCameraOptions(),c=new e.LngLat(.5*(t.lng+i.lng),.5*(t.lat+i.lat)),h=.5*(r+n);if(a._camera.position[2]<e.mercatorZfromAltitude(h,c.lat))return void e.warnOnce("Map cannot fit within canvas with the given bounds, padding, and/or offset.");l.lookAtPoint(c),a.setFreeCameraOptions(l);const u=e.MercatorCoordinate.fromLngLat(t),d=e.MercatorCoordinate.fromLngLat(i),p=a.pointRayIntersection(a.centerPoint,h),f=[(m=a.rayIntersectionCoordinate(p)).x,m.y,m.z];var m;const _=a.screenPointToMercatorRay(a.centerPoint),g="globe"!==a.projection.name;let y,x=0;do{const i=Math.floor(a.zoom),o=1<<i,s=Math.min(o*u.x,o*d.x),l=Math.min(o*u.y,o*d.y),c=Math.max(o*u.x,o*d.x),h=Math.max(o*u.y,o*d.y),p=new e.Aabb([s,l,r],[c,h,n]),m=e.Frustum.fromInvProjectionMatrix(a.invProjMatrix,a.worldSize,i,g);if(2!==p.intersects(m)){y&&(a._camera.position=e.scaleAndAdd([],a._camera.position,_.dir,-y),a._updateStateFromCamera());break}const x=e.sub([],a._camera.position,f);y=.5*e.length(x),a._camera.position=e.scaleAndAdd([],a._camera.position,_.dir,y);try{a._updateStateFromCamera()}catch(t){return void e.warnOnce("Map cannot fit within canvas with the given bounds, padding, and/or offset.")}}while(++x<10);return{center:a.center,zoom:a.zoom,bearing:a.bearing,pitch:a.pitch}}fitBounds(e,t,i){return this._fitInternal(this.cameraForBounds(e,t),t,i)}_raycastElevationBox(t,i){const r=this.transform.elevation;if(!r)return;const n=new e.pointGeometry(t.x,i.y),o=new e.pointGeometry(i.x,t.y),s=r.pointCoordinate(t);if(!s)return;const a=r.pointCoordinate(i);if(!a)return;const l=r.pointCoordinate(n);if(!l)return;const c=r.pointCoordinate(o);if(!c)return;const h=new e.MercatorCoordinate(s[0],s[1]).toLngLat(),u=new e.MercatorCoordinate(a[0],a[1]).toLngLat(),d=new e.MercatorCoordinate(l[0],l[1]).toLngLat(),p=new e.MercatorCoordinate(c[0],c[1]).toLngLat(),f=Math.min(h.lng,Math.min(u.lng,Math.min(d.lng,p.lng))),m=Math.min(h.lat,Math.min(u.lat,Math.min(d.lat,p.lat))),_=Math.max(h.lng,Math.max(u.lng,Math.max(d.lng,p.lng))),g=Math.max(h.lat,Math.max(u.lat,Math.max(d.lat,p.lat))),y=Math.min(s[3],Math.min(a[3],Math.min(l[3],c[3]))),x=Math.max(s[3],Math.max(a[3],Math.max(l[3],c[3])));return{minLngLat:new e.LngLat(f,m),maxLngLat:new e.LngLat(_,g),minAltitude:y,maxAltitude:x}}fitScreenCoordinates(t,i,r,n,o){let s,a,l,c;const h=e.pointGeometry.convert(t),u=e.pointGeometry.convert(i),d=this._raycastElevationBox(h,u);if(d)s=d.minLngLat,a=d.maxLngLat,l=d.minAltitude,c=d.maxAltitude;else{if(this.transform.anyCornerOffEdge(h,u))return this;s=this.transform.pointLocation(h),a=this.transform.pointLocation(u)}return this._fitInternal(0===this.transform.pitch?this._cameraForBoxAndBearing(this.transform.pointLocation(e.pointGeometry.convert(t)),this.transform.pointLocation(e.pointGeometry.convert(i)),r,n):this._cameraForBox(s,a,l,c,n),n,o)}_fitInternal(t,i,r){return t?(delete(i=e.extend(t,i)).padding,i.linear?this.easeTo(i,r):this.flyTo(i,r)):this}jumpTo(t,i){this.stop();const r=t.preloadOnly?this.transform.clone():this.transform;let n=!1,o=!1,s=!1;return"zoom"in t&&r.zoom!==+t.zoom&&(n=!0,r.zoom=+t.zoom),void 0!==t.center&&(r.center=e.LngLat.convert(t.center)),"bearing"in t&&r.bearing!==+t.bearing&&(o=!0,r.bearing=+t.bearing),"pitch"in t&&r.pitch!==+t.pitch&&(s=!0,r.pitch=+t.pitch),null==t.padding||r.isPaddingEqual(t.padding)||(r.padding=t.padding),t.preloadOnly?(this._preloadTiles(r),this):(this.fire(new e.Event("movestart",i)).fire(new e.Event("move",i)),n&&this.fire(new e.Event("zoomstart",i)).fire(new e.Event("zoom",i)).fire(new e.Event("zoomend",i)),o&&this.fire(new e.Event("rotatestart",i)).fire(new e.Event("rotate",i)).fire(new e.Event("rotateend",i)),s&&this.fire(new e.Event("pitchstart",i)).fire(new e.Event("pitch",i)).fire(new e.Event("pitchend",i)),this.fire(new e.Event("moveend",i)))}getFreeCameraOptions(){return this.transform.projection.supportsFreeCamera||e.warnOnce(Fn),this.transform.getFreeCameraOptions()}setFreeCameraOptions(t,i){const r=this.transform;if(!r.projection.supportsFreeCamera)return e.warnOnce(Fn),this;this.stop();const n=r.zoom,o=r.pitch,s=r.bearing;r.setFreeCameraOptions(t);const a=n!==r.zoom,l=o!==r.pitch,c=s!==r.bearing;return this.fire(new e.Event("movestart",i)).fire(new e.Event("move",i)),a&&this.fire(new e.Event("zoomstart",i)).fire(new e.Event("zoom",i)).fire(new e.Event("zoomend",i)),c&&this.fire(new e.Event("rotatestart",i)).fire(new e.Event("rotate",i)).fire(new e.Event("rotateend",i)),l&&this.fire(new e.Event("pitchstart",i)).fire(new e.Event("pitch",i)).fire(new e.Event("pitchend",i)),this.fire(new e.Event("moveend",i)),this}easeTo(t,i){this._stop(!1,t.easeId),(!1===(t=e.extend({offset:[0,0],duration:500,easing:e.ease},t)).animate||!t.essential&&e.exported.prefersReducedMotion)&&(t.duration=0);const r=this.transform,n=this.getZoom(),o=this.getBearing(),s=this.getPitch(),a=this.getPadding(),l="zoom"in t?+t.zoom:n,c="bearing"in t?this._normalizeBearing(t.bearing,o):o,h="pitch"in t?+t.pitch:s,u="padding"in t?t.padding:r.padding,d=e.pointGeometry.convert(t.offset);let p,f,m;if("globe"===r.projection.name){const i=e.MercatorCoordinate.fromLngLat(r.center),n=d.rotate(-r.angle);i.x+=n.x/r.worldSize,i.y+=n.y/r.worldSize;const o=i.toLngLat(),s=e.LngLat.convert(t.center||o);this._normalizeCenter(s),p=r.centerPoint.add(n),f=new e.pointGeometry(i.x,i.y).mult(r.worldSize),m=new e.pointGeometry(e.mercatorXfromLng(s.lng),e.mercatorYfromLat(s.lat)).mult(r.worldSize).sub(f)}else{p=r.centerPoint.add(d);const i=r.pointLocation(p),n=e.LngLat.convert(t.center||i);this._normalizeCenter(n),f=r.project(i),m=r.project(n).sub(f)}const _=r.zoomScale(l-n);let g,y;t.around&&(g=e.LngLat.convert(t.around),y=r.locationPoint(g));const x=this._zooming||l!==n,v=this._rotating||o!==c,b=this._pitching||h!==s,w=!r.isPaddingEqual(u),T=r=>T=>{if(x&&(r.zoom=e.number(n,l,T)),v&&(r.bearing=e.number(o,c,T)),b&&(r.pitch=e.number(s,h,T)),w&&(r.interpolatePadding(a,u,T),p=r.centerPoint.add(d)),g)r.setLocationAtPoint(g,y);else{const e=r.zoomScale(r.zoom-n),t=l>n?Math.min(2,_):Math.max(.5,_),i=Math.pow(t,1-T),o=r.unproject(f.add(m.mult(T*i)).mult(e));r.setLocationAtPoint(r.renderWorldCopies?o.wrap():o,p)}return t.preloadOnly||this._fireMoveEvents(i),r};if(t.preloadOnly){const e=this._emulate(T,t.duration,r);return this._preloadTiles(e),this}const E={moving:this._moving,zooming:this._zooming,rotating:this._rotating,pitching:this._pitching};return this._zooming=x,this._rotating=v,this._pitching=b,this._padding=w,this._easeId=t.easeId,this._prepareEase(i,t.noMoveStart,E),this._ease(T(r),(e=>{r.recenterOnTerrain(),this._afterEase(i,e)}),t),this}_prepareEase(t,i,r={}){this._moving=!0,this.transform.cameraElevationReference="sea",i||r.moving||this.fire(new e.Event("movestart",t)),this._zooming&&!r.zooming&&this.fire(new e.Event("zoomstart",t)),this._rotating&&!r.rotating&&this.fire(new e.Event("rotatestart",t)),this._pitching&&!r.pitching&&this.fire(new e.Event("pitchstart",t))}_fireMoveEvents(t){this.fire(new e.Event("move",t)),this._zooming&&this.fire(new e.Event("zoom",t)),this._rotating&&this.fire(new e.Event("rotate",t)),this._pitching&&this.fire(new e.Event("pitch",t))}_afterEase(t,i){if(this._easeId&&i&&this._easeId===i)return;this._easeId=void 0,this.transform.cameraElevationReference="ground";const r=this._zooming,n=this._rotating,o=this._pitching;this._moving=!1,this._zooming=!1,this._rotating=!1,this._pitching=!1,this._padding=!1,r&&this.fire(new e.Event("zoomend",t)),n&&this.fire(new e.Event("rotateend",t)),o&&this.fire(new e.Event("pitchend",t)),this.fire(new e.Event("moveend",t))}flyTo(t,i){if(!t.essential&&e.exported.prefersReducedMotion){const r=e.pick(t,["center","zoom","bearing","pitch","around"]);return this.jumpTo(r,i)}this.stop(),t=e.extend({offset:[0,0],speed:1.2,curve:1.42,easing:e.ease},t);const r=this.transform,n=this.getZoom(),o=this.getBearing(),s=this.getPitch(),a=this.getPadding(),l="zoom"in t?e.clamp(+t.zoom,r.minZoom,r.maxZoom):n,c="bearing"in t?this._normalizeBearing(t.bearing,o):o,h="pitch"in t?+t.pitch:s,u="padding"in t?t.padding:r.padding,d=r.zoomScale(l-n),p=e.pointGeometry.convert(t.offset);let f=r.centerPoint.add(p);const m=r.pointLocation(f),_=e.LngLat.convert(t.center||m);this._normalizeCenter(_);const g=r.project(m),y=r.project(_).sub(g);let x=t.curve;const v=Math.max(r.width,r.height),b=v/d,w=y.mag();if("minZoom"in t){const i=e.clamp(Math.min(t.minZoom,n,l),r.minZoom,r.maxZoom),o=v/r.zoomScale(i-n);x=Math.sqrt(o/w*2)}const T=x*x;function E(e){const t=(b*b-v*v+(e?-1:1)*T*T*w*w)/(2*(e?b:v)*T*w);return Math.log(Math.sqrt(t*t+1)-t)}function S(e){return(Math.exp(e)-Math.exp(-e))/2}function I(e){return(Math.exp(e)+Math.exp(-e))/2}const M=E(0);let A=function(e){return I(M)/I(M+x*e)},C=function(e){return v*((I(M)*(S(t=M+x*e)/I(t))-S(M))/T)/w;var t},z=(E(1)-M)/x;if(Math.abs(w)<1e-6||!isFinite(z)){if(Math.abs(v-b)<1e-6)return this.easeTo(t,i);const e=b<v?-1:1;z=Math.abs(Math.log(b/v))/x,C=function(){return 0},A=function(t){return Math.exp(e*x*t)}}t.duration="duration"in t?+t.duration:1e3*z/("screenSpeed"in t?+t.screenSpeed/x:+t.speed),t.maxDuration&&t.duration>t.maxDuration&&(t.duration=0);const k=o!==c,D=h!==s,P=!r.isPaddingEqual(u),L=r=>d=>{const m=d*z,x=1/A(m);r.zoom=1===d?l:n+r.scaleZoom(x),k&&(r.bearing=e.number(o,c,d)),D&&(r.pitch=e.number(s,h,d)),P&&(r.interpolatePadding(a,u,d),f=r.centerPoint.add(p));const v=1===d?_:r.unproject(g.add(y.mult(C(m))).mult(x));return r.setLocationAtPoint(r.renderWorldCopies?v.wrap():v,f),r._updateCameraOnTerrain(),t.preloadOnly||this._fireMoveEvents(i),r};if(t.preloadOnly){const e=this._emulate(L,t.duration,r);return this._preloadTiles(e),this}return this._zooming=!0,this._rotating=k,this._pitching=D,this._padding=P,this._prepareEase(i,!1),this._ease(L(r),(()=>this._afterEase(i)),t),this}isEasing(){return!!this._easeFrameId}stop(){return this._stop()}_stop(e,t){if(this._easeFrameId&&(this._cancelRenderFrame(this._easeFrameId),this._easeFrameId=void 0,this._onEaseFrame=void 0),this._onEaseEnd){const e=this._onEaseEnd;this._onEaseEnd=void 0,e.call(this,t)}if(!e){const e=this.handlers;e&&e.stop(!1)}return this}_ease(t,i,r){!1===r.animate||0===r.duration?(t(1),i()):(this._easeStart=e.exported.now(),this._easeOptions=r,this._onEaseFrame=t,this._onEaseEnd=i,this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback))}_renderFrameCallback(){const t=Math.min((e.exported.now()-this._easeStart)/this._easeOptions.duration,1),i=this._onEaseFrame;i&&i(this._easeOptions.easing(t)),t<1?this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback):this.stop()}_normalizeBearing(t,i){t=e.wrap(t,-180,180);const r=Math.abs(t-i);return Math.abs(t-360-i)<r&&(t-=360),Math.abs(t+360-i)<r&&(t+=360),t}_normalizeCenter(e){const t=this.transform;if(!t.renderWorldCopies||t.maxBounds)return;const i=e.lng-t.center.lng;e.lng+=i>180?-360:i<-180?360:0}_emulate(e,t,i){const r=Math.ceil(15*t/1e3),n=[],o=e(i.clone());for(let e=0;e<=r;e++){const t=o(e/r);n.push(t.clone())}return n}}class Un{constructor(t={}){this.options=t,e.bindAll(["_toggleAttribution","_updateEditLink","_updateData","_updateCompact"],this)}getDefaultPosition(){return"bottom-right"}onAdd(e){const t=this.options&&this.options.compact;return this._map=e,this._container=o("div","mapboxgl-ctrl mapboxgl-ctrl-attrib"),this._compactButton=o("button","mapboxgl-ctrl-attrib-button",this._container),o("span","mapboxgl-ctrl-icon",this._compactButton).setAttribute("aria-hidden","true"),this._compactButton.type="button",this._compactButton.addEventListener("click",this._toggleAttribution),this._setElementTitle(this._compactButton,"ToggleAttribution"),this._innerContainer=o("div","mapboxgl-ctrl-attrib-inner",this._container),this._innerContainer.setAttribute("role","list"),t&&this._container.classList.add("mapboxgl-compact"),this._updateAttributions(),this._updateEditLink(),this._map.on("styledata",this._updateData),this._map.on("sourcedata",this._updateData),this._map.on("moveend",this._updateEditLink),void 0===t&&(this._map.on("resize",this._updateCompact),this._updateCompact()),this._container}onRemove(){this._container.remove(),this._map.off("styledata",this._updateData),this._map.off("sourcedata",this._updateData),this._map.off("moveend",this._updateEditLink),this._map.off("resize",this._updateCompact),this._map=void 0,this._attribHTML=void 0}_setElementTitle(e,t){const i=this._map._getUIString(`AttributionControl.${t}`);e.setAttribute("aria-label",i),e.removeAttribute("title"),e.firstElementChild&&e.firstElementChild.setAttribute("title",i)}_toggleAttribution(){this._container.classList.contains("mapboxgl-compact-show")?(this._container.classList.remove("mapboxgl-compact-show"),this._compactButton.setAttribute("aria-expanded","false")):(this._container.classList.add("mapboxgl-compact-show"),this._compactButton.setAttribute("aria-expanded","true"))}_updateEditLink(){let t=this._editLink;t||(t=this._editLink=this._container.querySelector(".mapbox-improve-map"));const i=[{key:"owner",value:this.styleOwner},{key:"id",value:this.styleId},{key:"access_token",value:this._map._requestManager._customAccessToken||e.config.ACCESS_TOKEN}];if(t){const r=i.reduce(((e,t,r)=>(t.value&&(e+=`${t.key}=${t.value}${r<i.length-1?"&":""}`),e)),"?");t.href=`${e.config.FEEDBACK_URL}/${r}${this._map._hash?this._map._hash.getHashString(!0):""}`,t.rel="noopener nofollow",this._setElementTitle(t,"MapFeedback")}}_updateData(e){!e||"metadata"!==e.sourceDataType&&"visibility"!==e.sourceDataType&&"style"!==e.dataType||(this._updateAttributions(),this._updateEditLink())}_updateAttributions(){if(!this._map.style)return;let e=[];if(this._map.style.stylesheet){const e=this._map.style.stylesheet;this.styleOwner=e.owner,this.styleId=e.id}const t=this._map.style._sourceCaches;for(const i in t){const r=t[i];if(r.used){const t=r.getSource();t.attribution&&e.indexOf(t.attribution)<0&&e.push(t.attribution)}}e.sort(((e,t)=>e.length-t.length)),e=e.filter(((t,i)=>{for(let r=i+1;r<e.length;r++)if(e[r].indexOf(t)>=0)return!1;return!0})),this.options.customAttribution&&(Array.isArray(this.options.customAttribution)?e=[...this.options.customAttribution,...e]:e.unshift(this.options.customAttribution));const i=e.join(" | ");i!==this._attribHTML&&(this._attribHTML=i,e.length?(this._innerContainer.innerHTML=i,this._container.classList.remove("mapboxgl-attrib-empty")):this._container.classList.add("mapboxgl-attrib-empty"),this._editLink=null)}_updateCompact(){this._map.getCanvasContainer().offsetWidth<=640?this._container.classList.add("mapboxgl-compact"):this._container.classList.remove("mapboxgl-compact","mapboxgl-compact-show")}}class Vn{constructor(){e.bindAll(["_updateLogo","_updateCompact"],this)}onAdd(e){this._map=e,this._container=o("div","mapboxgl-ctrl");const t=o("a","mapboxgl-ctrl-logo");return t.target="_blank",t.rel="noopener nofollow",t.href="https://www.mapbox.com/",t.setAttribute("aria-label",this._map._getUIString("LogoControl.Title")),t.setAttribute("rel","noopener nofollow"),this._container.appendChild(t),this._container.style.display="none",this._map.on("sourcedata",this._updateLogo),this._updateLogo(),this._map.on("resize",this._updateCompact),this._updateCompact(),this._container}onRemove(){this._container.remove(),this._map.off("sourcedata",this._updateLogo),this._map.off("resize",this._updateCompact)}getDefaultPosition(){return"bottom-left"}_updateLogo(e){e&&"metadata"!==e.sourceDataType||(this._container.style.display=this._logoRequired()?"block":"none")}_logoRequired(){if(!this._map.style)return!0;const e=this._map.style._sourceCaches;if(0===Object.entries(e).length)return!0;for(const t in e){const i=e[t].getSource();if(i.hasOwnProperty("mapbox_logo")&&!i.mapbox_logo)return!1}return!0}_updateCompact(){const e=this._container.children;if(e.length){const t=e[0];this._map.getCanvasContainer().offsetWidth<250?t.classList.add("mapboxgl-compact"):t.classList.remove("mapboxgl-compact")}}}class jn{constructor(){this._queue=[],this._id=0,this._cleared=!1,this._currentlyRunning=!1}add(e){const t=++this._id;return this._queue.push({callback:e,id:t,cancelled:!1}),t}remove(e){const t=this._currentlyRunning,i=t?this._queue.concat(t):this._queue;for(const t of i)if(t.id===e)return void(t.cancelled=!0)}run(e=0){const t=this._currentlyRunning=this._queue;this._queue=[];for(const i of t)if(!i.cancelled&&(i.callback(e),this._cleared))break;this._cleared=!1,this._currentlyRunning=!1}clear(){this._currentlyRunning&&(this._cleared=!0),this._queue=[]}}function Nn(t,i,r){if(t=new e.LngLat(t.lng,t.lat),i){const n=new e.LngLat(t.lng-360,t.lat),o=new e.LngLat(t.lng+360,t.lat),s=360*Math.ceil(Math.abs(t.lng-r.center.lng)/360),a=r.locationPoint(t).distSqr(i),l=i.x<0||i.y<0||i.x>r.width||i.y>r.height;r.locationPoint(n).distSqr(i)<a&&(l||Math.abs(n.lng-r.center.lng)<s)?t=n:r.locationPoint(o).distSqr(i)<a&&(l||Math.abs(o.lng-r.center.lng)<s)&&(t=o)}for(;Math.abs(t.lng-r.center.lng)>180;){const e=r.locationPoint(t);if(e.x>=0&&e.y>=0&&e.x<=r.width&&e.y<=r.height)break;t.lng>r.center.lng?t.lng-=360:t.lng+=360}return t}const Gn={center:"translate(-50%,-50%)",top:"translate(-50%,0)","top-left":"translate(0,0)","top-right":"translate(-100%,0)",bottom:"translate(-50%,-100%)","bottom-left":"translate(0,-100%)","bottom-right":"translate(-100%,-100%)",left:"translate(0,-50%)",right:"translate(-100%,-50%)"};class Zn extends e.Evented{constructor(t,i){if(super(),(t instanceof e.window.HTMLElement||i)&&(t=e.extend({element:t},i)),e.bindAll(["_update","_onMove","_onUp","_addDragHandler","_onMapClick","_onKeyPress","_clearFadeTimer"],this),this._anchor=t&&t.anchor||"center",this._color=t&&t.color||"#3FB1CE",this._scale=t&&t.scale||1,this._draggable=t&&t.draggable||!1,this._clickTolerance=t&&t.clickTolerance||0,this._isDragging=!1,this._state="inactive",this._rotation=t&&t.rotation||0,this._rotationAlignment=t&&t.rotationAlignment||"auto",this._pitchAlignment=t&&t.pitchAlignment&&"auto"!==t.pitchAlignment?t.pitchAlignment:this._rotationAlignment,this._updateMoving=()=>this._update(!0),t&&t.element)this._element=t.element,this._offset=e.pointGeometry.convert(t&&t.offset||[0,0]);else{this._defaultMarker=!0,this._element=o("div");const i=41,r=27,n=s("svg",{display:"block",height:i*this._scale+"px",width:r*this._scale+"px",viewBox:`0 0 ${r} ${i}`},this._element),a=s("radialGradient",{id:"shadowGradient"},s("defs",{},n));s("stop",{offset:"10%","stop-opacity":.4},a),s("stop",{offset:"100%","stop-opacity":.05},a),s("ellipse",{cx:13.5,cy:34.8,rx:10.5,ry:5.25,fill:"url(#shadowGradient)"},n),s("path",{fill:this._color,d:"M27,13.5C27,19.07 20.25,27 14.75,34.5C14.02,35.5 12.98,35.5 12.25,34.5C6.75,27 0,19.22 0,13.5C0,6.04 6.04,0 13.5,0C20.96,0 27,6.04 27,13.5Z"},n),s("path",{opacity:.25,d:"M13.5,0C6.04,0 0,6.04 0,13.5C0,19.22 6.75,27 12.25,34.5C13,35.52 14.02,35.5 14.75,34.5C20.25,27 27,19.07 27,13.5C27,6.04 20.96,0 13.5,0ZM13.5,1C20.42,1 26,6.58 26,13.5C26,15.9 24.5,19.18 22.22,22.74C19.95,26.3 16.71,30.14 13.94,33.91C13.74,34.18 13.61,34.32 13.5,34.44C13.39,34.32 13.26,34.18 13.06,33.91C10.28,30.13 7.41,26.31 5.02,22.77C2.62,19.23 1,15.95 1,13.5C1,6.58 6.58,1 13.5,1Z"},n),s("circle",{fill:"white",cx:13.5,cy:13.5,r:5.5},n),this._offset=e.pointGeometry.convert(t&&t.offset||[0,-14])}this._element.hasAttribute("aria-label")||this._element.setAttribute("aria-label","Map marker"),this._element.classList.add("mapboxgl-marker"),this._element.addEventListener("dragstart",(e=>{e.preventDefault()})),this._element.addEventListener("mousedown",(e=>{e.preventDefault()}));const r=this._element.classList;for(const e in Gn)r.remove(`mapboxgl-marker-anchor-${e}`);r.add(`mapboxgl-marker-anchor-${this._anchor}`),this._popup=null}addTo(e){return e===this._map||(this.remove(),this._map=e,e.getCanvasContainer().appendChild(this._element),e.on("move",this._updateMoving),e.on("moveend",this._update),e.on("remove",this._clearFadeTimer),e._addMarker(this),this.setDraggable(this._draggable),this._update(),e.on("click",this._onMapClick)),this}remove(){const e=this._map;return e&&(e.off("click",this._onMapClick),e.off("move",this._updateMoving),e.off("moveend",this._update),e.off("mousedown",this._addDragHandler),e.off("touchstart",this._addDragHandler),e.off("mouseup",this._onUp),e.off("touchend",this._onUp),e.off("mousemove",this._onMove),e.off("touchmove",this._onMove),e.off("remove",this._clearFadeTimer),e._removeMarker(this),this._map=void 0),this._clearFadeTimer(),this._element.remove(),this._popup&&this._popup.remove(),this}getLngLat(){return this._lngLat}setLngLat(t){return this._lngLat=e.LngLat.convert(t),this._pos=null,this._popup&&this._popup.setLngLat(this._lngLat),this._update(!0),this}getElement(){return this._element}setPopup(e){if(this._popup&&(this._popup.remove(),this._popup=null,this._element.removeAttribute("role"),this._element.removeEventListener("keypress",this._onKeyPress),this._originalTabIndex||this._element.removeAttribute("tabindex")),e){if(!("offset"in e.options)){const t=38.1,i=13.5,r=Math.sqrt(Math.pow(i,2)/2);e.options.offset=this._defaultMarker?{top:[0,0],"top-left":[0,0],"top-right":[0,0],bottom:[0,-t],"bottom-left":[r,-1*(t-i+r)],"bottom-right":[-r,-1*(t-i+r)],left:[i,-1*(t-i)],right:[-i,-1*(t-i)]}:this._offset}this._popup=e,this._lngLat&&this._popup.setLngLat(this._lngLat),this._element.setAttribute("role","button"),this._originalTabIndex=this._element.getAttribute("tabindex"),this._originalTabIndex||this._element.setAttribute("tabindex","0"),this._element.addEventListener("keypress",this._onKeyPress),this._element.setAttribute("aria-expanded","false")}return this}_onKeyPress(e){const t=e.code,i=e.charCode||e.keyCode;"Space"!==t&&"Enter"!==t&&32!==i&&13!==i||this.togglePopup()}_onMapClick(e){const t=e.originalEvent.target,i=this._element;this._popup&&(t===i||i.contains(t))&&this.togglePopup()}getPopup(){return this._popup}togglePopup(){const e=this._popup;return e?(e.isOpen()?(e.remove(),this._element.setAttribute("aria-expanded","false")):this._map&&(e.addTo(this._map),this._element.setAttribute("aria-expanded","true")),this):this}_evaluateOpacity(){const e=this._map;if(!e)return;const t=this._pos;if(!t||t.x<0||t.x>e.transform.width||t.y<0||t.y>e.transform.height)return void this._clearFadeTimer();const i=e.unproject(t);let r=!1;if(e.transform._terrainEnabled()&&e.getTerrain()){const t=e.getFreeCameraOptions();if(t.position){const e=t.position.toLngLat();r=e.distanceTo(i)<.9*e.distanceTo(this._lngLat)}}const n=(1-e._queryFogOpacity(i))*(r?.2:1);this._element.style.opacity=`${n}`,this._popup&&this._popup._setOpacity(`${n}`),this._fadeTimer=null}_clearFadeTimer(){this._fadeTimer&&(clearTimeout(this._fadeTimer),this._fadeTimer=null)}_updateDOM(){const e=this._pos;if(!e)return;const t=this._offset.mult(this._scale),i=this._calculatePitch(),r=this._calculateRotation();this._element.style.transform=`\n translate(${e.x}px, ${e.y}px) ${Gn[this._anchor]}\n rotateX(${i}deg) rotateZ(${r}deg)\n translate(${t.x}px, ${t.y}px)\n `}_calculatePitch(){return"viewport"===this._pitchAlignment||"auto"===this._pitchAlignment?0:this._map&&"map"===this._pitchAlignment?this._map.getPitch():0}_calculateRotation(){return"viewport"===this._rotationAlignment||"auto"===this._rotationAlignment?this._rotation:this._map&&"map"===this._rotationAlignment?this._rotation-this._map.getBearing():0}_update(t){e.window.cancelAnimationFrame(this._updateFrameId);const i=this._map;i&&(i.transform.renderWorldCopies&&(this._lngLat=Nn(this._lngLat,this._pos,i.transform)),this._pos=i.project(this._lngLat),!0===t?this._updateFrameId=e.window.requestAnimationFrame((()=>{this._element&&this._pos&&this._anchor&&(this._pos=this._pos.round(),this._updateDOM())})):this._pos=this._pos.round(),i._requestDomTask((()=>{this._map&&(this._element&&this._pos&&this._anchor&&this._updateDOM(),!i.getTerrain()&&!i.getFog()||this._fadeTimer||(this._fadeTimer=setTimeout(this._evaluateOpacity.bind(this),60)))})))}getOffset(){return this._offset}setOffset(t){return this._offset=e.pointGeometry.convert(t),this._update(),this}_onMove(t){const i=this._map;if(i){if(!this._isDragging){const e=this._clickTolerance||i._clickTolerance;this._isDragging=t.point.dist(this._pointerdownPos)>=e}this._isDragging&&(this._pos=t.point.sub(this._positionDelta),this._lngLat=i.unproject(this._pos),this.setLngLat(this._lngLat),this._element.style.pointerEvents="none","pending"===this._state&&(this._state="active",this.fire(new e.Event("dragstart"))),this.fire(new e.Event("drag")))}}_onUp(){this._element.style.pointerEvents="auto",this._positionDelta=null,this._pointerdownPos=null,this._isDragging=!1;const t=this._map;t&&(t.off("mousemove",this._onMove),t.off("touchmove",this._onMove)),"active"===this._state&&this.fire(new e.Event("dragend")),this._state="inactive"}_addDragHandler(e){const t=this._map;t&&this._element.contains(e.originalEvent.target)&&(e.preventDefault(),this._positionDelta=e.point.sub(this._pos),this._pointerdownPos=e.point,this._state="pending",t.on("mousemove",this._onMove),t.on("touchmove",this._onMove),t.once("mouseup",this._onUp),t.once("touchend",this._onUp))}setDraggable(e){this._draggable=!!e;const t=this._map;return t&&(e?(t.on("mousedown",this._addDragHandler),t.on("touchstart",this._addDragHandler)):(t.off("mousedown",this._addDragHandler),t.off("touchstart",this._addDragHandler))),this}isDraggable(){return this._draggable}setRotation(e){return this._rotation=e||0,this._update(),this}getRotation(){return this._rotation}setRotationAlignment(e){return this._rotationAlignment=e||"auto",this._update(),this}getRotationAlignment(){return this._rotationAlignment}setPitchAlignment(e){return this._pitchAlignment=e&&"auto"!==e?e:this._rotationAlignment,this._update(),this}getPitchAlignment(){return this._pitchAlignment}}class $n{constructor(e){this.jumpTo(e)}getValue(t){if(t<=this._startTime)return this._start;if(t>=this._endTime)return this._end;const i=e.easeCubicInOut((t-this._startTime)/(this._endTime-this._startTime));return this._start*(1-i)+this._end*i}isEasing(e){return e>=this._startTime&&e<=this._endTime}jumpTo(e){this._startTime=-1/0,this._endTime=-1/0,this._start=e,this._end=e}easeTo(e,t,i){this._start=this.getValue(t),this._end=e,this._startTime=t,this._endTime=t+i}}const qn={"AttributionControl.ToggleAttribution":"Toggle attribution","AttributionControl.MapFeedback":"Map feedback","FullscreenControl.Enter":"Enter fullscreen","FullscreenControl.Exit":"Exit fullscreen","GeolocateControl.FindMyLocation":"Find my location","GeolocateControl.LocationNotAvailable":"Location not available","LogoControl.Title":"Mapbox logo","NavigationControl.ResetBearing":"Reset bearing to north","NavigationControl.ZoomIn":"Zoom in","NavigationControl.ZoomOut":"Zoom out","ScaleControl.Feet":"ft","ScaleControl.Meters":"m","ScaleControl.Kilometers":"km","ScaleControl.Miles":"mi","ScaleControl.NauticalMiles":"nm","ScrollZoomBlocker.CtrlMessage":"Use ctrl + scroll to zoom the map","ScrollZoomBlocker.CmdMessage":"Use ⌘ + scroll to zoom the map","TouchPanBlocker.Message":"Use two fingers to move the map"},Xn={center:[0,0],zoom:0,bearing:0,pitch:0,minZoom:-2,maxZoom:22,minPitch:0,maxPitch:85,interactive:!0,scrollZoom:!0,boxZoom:!0,dragRotate:!0,dragPan:!0,keyboard:!0,doubleClickZoom:!0,touchZoomRotate:!0,touchPitch:!0,cooperativeGestures:!1,bearingSnap:7,clickTolerance:3,pitchWithRotate:!0,hash:!1,attributionControl:!0,failIfMajorPerformanceCaveat:!1,preserveDrawingBuffer:!1,trackResize:!0,optimizeForTerrain:!0,renderWorldCopies:!0,refreshExpiredTiles:!0,minTileCacheSize:null,maxTileCacheSize:null,localIdeographFontFamily:"sans-serif",localFontFamily:null,transformRequest:null,accessToken:null,fadeDuration:300,crossSourceCollisions:!0};function Wn(e){e.parentNode&&e.parentNode.removeChild(e)}const Hn={showCompass:!0,showZoom:!0,visualizePitch:!1};class Yn{constructor(t,i,r=!1){this._clickTolerance=10,this.element=i,this.mouseRotate=new hn({clickTolerance:t.dragRotate._mouseRotate._clickTolerance}),this.map=t,r&&(this.mousePitch=new un({clickTolerance:t.dragRotate._mousePitch._clickTolerance})),e.bindAll(["mousedown","mousemove","mouseup","touchstart","touchmove","touchend","reset"],this),i.addEventListener("mousedown",this.mousedown),i.addEventListener("touchstart",this.touchstart,{passive:!1}),i.addEventListener("touchmove",this.touchmove),i.addEventListener("touchend",this.touchend),i.addEventListener("touchcancel",this.reset)}down(e,t){this.mouseRotate.mousedown(e,t),this.mousePitch&&this.mousePitch.mousedown(e,t),h()}move(e,t){const i=this.map,r=this.mouseRotate.mousemoveWindow(e,t),n=r&&r.bearingDelta;if(n&&i.setBearing(i.getBearing()+n),this.mousePitch){const r=this.mousePitch.mousemoveWindow(e,t),n=r&&r.pitchDelta;n&&i.setPitch(i.getPitch()+n)}}off(){const e=this.element;e.removeEventListener("mousedown",this.mousedown),e.removeEventListener("touchstart",this.touchstart,{passive:!1}),e.removeEventListener("touchmove",this.touchmove),e.removeEventListener("touchend",this.touchend),e.removeEventListener("touchcancel",this.reset),this.offTemp()}offTemp(){u(),e.window.removeEventListener("mousemove",this.mousemove),e.window.removeEventListener("mouseup",this.mouseup)}mousedown(t){this.down(e.extend({},t,{ctrlKey:!0,preventDefault:()=>t.preventDefault()}),f(this.element,t)),e.window.addEventListener("mousemove",this.mousemove),e.window.addEventListener("mouseup",this.mouseup)}mousemove(e){this.move(e,f(this.element,e))}mouseup(e){this.mouseRotate.mouseupWindow(e),this.mousePitch&&this.mousePitch.mouseupWindow(e),this.offTemp()}touchstart(e){1!==e.targetTouches.length?this.reset():(this._startPos=this._lastPos=m(this.element,e.targetTouches)[0],this.down({type:"mousedown",button:0,ctrlKey:!0,preventDefault:()=>e.preventDefault()},this._startPos))}touchmove(e){1!==e.targetTouches.length?this.reset():(this._lastPos=m(this.element,e.targetTouches)[0],this.move({preventDefault:()=>e.preventDefault()},this._lastPos))}touchend(e){0===e.targetTouches.length&&this._startPos&&this._lastPos&&this._startPos.dist(this._lastPos)<this._clickTolerance&&this.element.click(),this.reset()}reset(){this.mouseRotate.reset(),this.mousePitch&&this.mousePitch.reset(),delete this._startPos,delete this._lastPos,this.offTemp()}}const Kn={positionOptions:{enableHighAccuracy:!1,maximumAge:0,timeout:6e3},fitBoundsOptions:{maxZoom:15},trackUserLocation:!1,showAccuracyCircle:!0,showUserLocation:!0,showUserHeading:!1};let Jn,Qn=0,eo=!1;const to={maxWidth:100,unit:"metric"};function io(e,t,i){const r=i&&i.maxWidth||100,n=e._containerHeight/2,o=e._containerWidth/2-r/2,s=e.unproject([o,n]),a=e.unproject([o+r,n]),l=s.distanceTo(a);if(i&&"imperial"===i.unit){const i=3.2808*l;i>5280?ro(t,r,i/5280,e._getUIString("ScaleControl.Miles"),e):ro(t,r,i,e._getUIString("ScaleControl.Feet"),e)}else i&&"nautical"===i.unit?ro(t,r,l/1852,e._getUIString("ScaleControl.NauticalMiles"),e):l>=1e3?ro(t,r,l/1e3,e._getUIString("ScaleControl.Kilometers"),e):ro(t,r,l,e._getUIString("ScaleControl.Meters"),e)}function ro(e,t,i,r,n){const o=function(e){const t=Math.pow(10,`${Math.floor(e)}`.length-1);let i=e/t;return i=i>=10?10:i>=5?5:i>=3?3:i>=2?2:i>=1?1:function(e){const t=Math.pow(10,Math.ceil(-Math.log(e)/Math.LN10));return Math.round(e*t)/t}(i),t*i}(i),s=o/i;n._requestDomTask((()=>{e.style.width=t*s+"px",e.innerHTML=`${o}&nbsp;${r}`}))}const no={closeButton:!0,closeOnClick:!0,focusAfterOpen:!0,className:"",maxWidth:"240px"},oo=["a[href]","[tabindex]:not([tabindex='-1'])","[contenteditable]:not([contenteditable='false'])","button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])"].join(", ");function so(t=new e.pointGeometry(0,0),i="bottom"){if("number"==typeof t){const r=Math.round(Math.sqrt(.5*Math.pow(t,2)));switch(i){case"top":return new e.pointGeometry(0,t);case"top-left":return new e.pointGeometry(r,r);case"top-right":return new e.pointGeometry(-r,r);case"bottom":return new e.pointGeometry(0,-t);case"bottom-left":return new e.pointGeometry(r,-r);case"bottom-right":return new e.pointGeometry(-r,-r);case"left":return new e.pointGeometry(t,0);case"right":return new e.pointGeometry(-t,0)}return new e.pointGeometry(0,0)}return t instanceof e.pointGeometry||Array.isArray(t)?e.pointGeometry.convert(t):e.pointGeometry.convert(t[i]||[0,0])}const ao={version:e.version,supported:t,setRTLTextPlugin:e.setRTLTextPlugin,getRTLTextPluginStatus:e.getRTLTextPluginStatus,Map:class extends On{constructor(t){if(null!=(t=e.extend({},Xn,t)).minZoom&&null!=t.maxZoom&&t.minZoom>t.maxZoom)throw new Error("maxZoom must be greater than or equal to minZoom");if(null!=t.minPitch&&null!=t.maxPitch&&t.minPitch>t.maxPitch)throw new Error("maxPitch must be greater than or equal to minPitch");if(null!=t.minPitch&&t.minPitch<0)throw new Error("minPitch must be greater than or equal to 0");if(null!=t.maxPitch&&t.maxPitch>85)throw new Error("maxPitch must be less than or equal to 85");if(t.antialias&&e.isSafariWithAntialiasingBug(e.window)&&(t.antialias=!1,e.warnOnce("Antialiasing is disabled for this WebGL context to avoid browser bug: https://github.com/mapbox/mapbox-gl-js/issues/11609")),super(new Ur(t.minZoom,t.maxZoom,t.minPitch,t.maxPitch,t.renderWorldCopies),t),this._interactive=t.interactive,this._minTileCacheSize=t.minTileCacheSize,this._maxTileCacheSize=t.maxTileCacheSize,this._failIfMajorPerformanceCaveat=t.failIfMajorPerformanceCaveat,this._preserveDrawingBuffer=t.preserveDrawingBuffer,this._antialias=t.antialias,this._trackResize=t.trackResize,this._bearingSnap=t.bearingSnap,this._refreshExpiredTiles=t.refreshExpiredTiles,this._fadeDuration=t.fadeDuration,this._isInitialLoad=!0,this._crossSourceCollisions=t.crossSourceCollisions,this._crossFadingFactor=1,this._collectResourceTiming=t.collectResourceTiming,this._optimizeForTerrain=t.optimizeForTerrain,this._renderTaskQueue=new jn,this._domRenderTaskQueue=new jn,this._controls=[],this._markers=[],this._mapId=e.uniqueId(),this._locale=e.extend({},qn,t.locale),this._clickTolerance=t.clickTolerance,this._cooperativeGestures=t.cooperativeGestures,this._containerWidth=0,this._containerHeight=0,this._averageElevationLastSampledAt=-1/0,this._averageElevationExaggeration=0,this._averageElevation=new $n(0),this._explicitProjection=null,this._requestManager=new e.RequestManager(t.transformRequest,t.accessToken,t.testMode),this._silenceAuthErrors=!!t.testMode,"string"==typeof t.container){if(this._container=e.window.document.getElementById(t.container),!this._container)throw new Error(`Container '${t.container}' not found.`)}else{if(!(t.container instanceof e.window.HTMLElement))throw new Error("Invalid type: 'container' must be a String or HTMLElement.");this._container=t.container}if(this._container.childNodes.length>0&&e.warnOnce("The map container element should be empty, otherwise the map's interactivity will be negatively impacted. If you want to display a message when WebGL is not supported, use the Mapbox GL Supported plugin instead."),t.maxBounds&&this.setMaxBounds(t.maxBounds),e.bindAll(["_onWindowOnline","_onWindowResize","_onMapScroll","_contextLost","_contextRestored"],this),this._setupContainer(),this._setupPainter(),void 0===this.painter)throw new Error("Failed to initialize WebGL.");this.on("move",(()=>this._update(!1))),this.on("moveend",(()=>this._update(!1))),this.on("zoom",(()=>this._update(!0))),void 0!==e.window&&(e.window.addEventListener("online",this._onWindowOnline,!1),e.window.addEventListener("resize",this._onWindowResize,!1),e.window.addEventListener("orientationchange",this._onWindowResize,!1),e.window.addEventListener("webkitfullscreenchange",this._onWindowResize,!1)),this.handlers=new Rn(this,t),this._localFontFamily=t.localFontFamily,this._localIdeographFontFamily=t.localIdeographFontFamily,t.style&&this.setStyle(t.style,{localFontFamily:this._localFontFamily,localIdeographFontFamily:this._localIdeographFontFamily}),t.projection&&this.setProjection(t.projection),this._hash=t.hash&&new jr("string"==typeof t.hash&&t.hash||void 0).addTo(this),this._hash&&this._hash._onHashChange()||(this.jumpTo({center:t.center,zoom:t.zoom,bearing:t.bearing,pitch:t.pitch}),t.bounds&&(this.resize(),this.fitBounds(t.bounds,e.extend({},t.fitBoundsOptions,{duration:0})))),this.resize(),t.attributionControl&&this.addControl(new Un({customAttribution:t.customAttribution})),this._logoControl=new Vn,this.addControl(this._logoControl,t.logoPosition),this.on("style.load",(()=>{this.transform.unmodified&&this.jumpTo(this.style.stylesheet)})),this.on("data",(t=>{this._update("style"===t.dataType),this.fire(new e.Event(`${t.dataType}data`,t))})),this.on("dataloading",(t=>{this.fire(new e.Event(`${t.dataType}dataloading`,t))}))}_getMapId(){return this._mapId}addControl(t,i){if(void 0===i&&(i=t.getDefaultPosition?t.getDefaultPosition():"top-right"),!t||!t.onAdd)return this.fire(new e.ErrorEvent(new Error("Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.")));const r=t.onAdd(this);this._controls.push(t);const n=this._controlPositions[i];return-1!==i.indexOf("bottom")?n.insertBefore(r,n.firstChild):n.appendChild(r),this}removeControl(t){if(!t||!t.onRemove)return this.fire(new e.ErrorEvent(new Error("Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.")));const i=this._controls.indexOf(t);return i>-1&&this._controls.splice(i,1),t.onRemove(this),this}hasControl(e){return this._controls.indexOf(e)>-1}getContainer(){return this._container}getCanvasContainer(){return this._canvasContainer}getCanvas(){return this._canvas}resize(t){if(this._updateContainerDimensions(),this._containerWidth===this.transform.width&&this._containerHeight===this.transform.height)return this;this._resizeCanvas(this._containerWidth,this._containerHeight),this.transform.resize(this._containerWidth,this._containerHeight),this.painter.resize(Math.ceil(this._containerWidth),Math.ceil(this._containerHeight));const i=!this._moving;return i&&this.fire(new e.Event("movestart",t)).fire(new e.Event("move",t)),this.fire(new e.Event("resize",t)),i&&this.fire(new e.Event("moveend",t)),this}getBounds(){return this.transform.getBounds()}getMaxBounds(){return this.transform.getMaxBounds()||null}setMaxBounds(t){return this.transform.setMaxBounds(e.LngLatBounds.convert(t)),this._update()}setMinZoom(t){if((t=null==t?-2:t)>=-2&&t<=this.transform.maxZoom)return this.transform.minZoom=t,this._update(),this.getZoom()<t?this.setZoom(t):this.fire(new e.Event("zoomstart")).fire(new e.Event("zoom")).fire(new e.Event("zoomend")),this;throw new Error("minZoom must be between -2 and the current maxZoom, inclusive")}getMinZoom(){return this.transform.minZoom}setMaxZoom(t){if((t=null==t?22:t)>=this.transform.minZoom)return this.transform.maxZoom=t,this._update(),this.getZoom()>t?this.setZoom(t):this.fire(new e.Event("zoomstart")).fire(new e.Event("zoom")).fire(new e.Event("zoomend")),this;throw new Error("maxZoom must be greater than the current minZoom")}getMaxZoom(){return this.transform.maxZoom}setMinPitch(t){if((t=null==t?0:t)<0)throw new Error("minPitch must be greater than or equal to 0");if(t>=0&&t<=this.transform.maxPitch)return this.transform.minPitch=t,this._update(),this.getPitch()<t?this.setPitch(t):this.fire(new e.Event("pitchstart")).fire(new e.Event("pitch")).fire(new e.Event("pitchend")),this;throw new Error("minPitch must be between 0 and the current maxPitch, inclusive")}getMinPitch(){return this.transform.minPitch}setMaxPitch(t){if((t=null==t?85:t)>85)throw new Error("maxPitch must be less than or equal to 85");if(t>=this.transform.minPitch)return this.transform.maxPitch=t,this._update(),this.getPitch()>t?this.setPitch(t):this.fire(new e.Event("pitchstart")).fire(new e.Event("pitch")).fire(new e.Event("pitchend")),this;throw new Error("maxPitch must be greater than the current minPitch")}getMaxPitch(){return this.transform.maxPitch}getRenderWorldCopies(){return this.transform.renderWorldCopies}setRenderWorldCopies(e){return this.transform.renderWorldCopies=e,this._update()}getProjection(){return this._explicitProjection?this._explicitProjection:this.style&&this.style.stylesheet&&this.style.stylesheet.projection?this.style.stylesheet.projection:{name:"mercator",center:[0,0]}}setProjection(e){return this._lazyInitEmptyStyle(),e?"string"==typeof e&&(e={name:e}):e=null,this._updateProjection(e)}_updateProjection(e){null===e&&(this._explicitProjection=null);const t=e||this.getProjection(),i=this.transform.setProjection(t);if(e&&(this._explicitProjection=this.transform.getProjection()),i){this.painter.clearBackgroundTiles();for(const e in this.style._sourceCaches)this.style._sourceCaches[e].clearTiles();this.style.applyProjectionUpdate(),this._update(!0)}return this}project(t){return this.transform.locationPoint3D(e.LngLat.convert(t))}unproject(t){return this.transform.pointLocation3D(e.pointGeometry.convert(t))}isMoving(){return this._moving||this.handlers&&this.handlers.isMoving()||!1}isZooming(){return this._zooming||this.handlers&&this.handlers.isZooming()||!1}isRotating(){return this._rotating||this.handlers&&this.handlers.isRotating()||!1}_createDelegatedListener(e,t,i){if("mouseenter"===e||"mouseover"===e){let r=!1;const n=n=>{const o=t.filter((e=>this.getLayer(e))),s=o.length?this.queryRenderedFeatures(n.point,{layers:o}):[];s.length?r||(r=!0,i.call(this,new Yr(e,this,n.originalEvent,{features:s}))):r=!1},o=()=>{r=!1};return{layers:new Set(t),listener:i,delegates:{mousemove:n,mouseout:o}}}if("mouseleave"===e||"mouseout"===e){let r=!1;const n=n=>{const o=t.filter((e=>this.getLayer(e)));(o.length?this.queryRenderedFeatures(n.point,{layers:o}):[]).length?r=!0:r&&(r=!1,i.call(this,new Yr(e,this,n.originalEvent)))},o=t=>{r&&(r=!1,i.call(this,new Yr(e,this,t.originalEvent)))};return{layers:new Set(t),listener:i,delegates:{mousemove:n,mouseout:o}}}{const r=e=>{const r=t.filter((e=>this.getLayer(e))),n=r.length?this.queryRenderedFeatures(e.point,{layers:r}):[];n.length&&(e.features=n,i.call(this,e),delete e.features)};return{layers:new Set(t),listener:i,delegates:{[e]:r}}}}on(e,t,i){if(void 0===i)return super.on(e,t);Array.isArray(t)||(t=[t]);const r=this._createDelegatedListener(e,t,i);this._delegatedListeners=this._delegatedListeners||{},this._delegatedListeners[e]=this._delegatedListeners[e]||[],this._delegatedListeners[e].push(r);for(const e in r.delegates)this.on(e,r.delegates[e]);return this}once(e,t,i){if(void 0===i)return super.once(e,t);Array.isArray(t)||(t=[t]);const r=this._createDelegatedListener(e,t,i);for(const e in r.delegates)this.once(e,r.delegates[e]);return this}off(e,t,i){if(void 0===i)return super.off(e,t);t=new Set(Array.isArray(t)?t:[t]);const r=(e,t)=>{if(e.size!==t.size)return!1;for(const i of e)if(!t.has(i))return!1;return!0},n=this._delegatedListeners?this._delegatedListeners[e]:void 0;return n&&(e=>{for(let n=0;n<e.length;n++){const o=e[n];if(o.listener===i&&r(o.layers,t)){for(const e in o.delegates)this.off(e,o.delegates[e]);return e.splice(n,1),this}}})(n),this}queryRenderedFeatures(t,i){return this.style?(void 0!==i||void 0===t||t instanceof e.pointGeometry||Array.isArray(t)||(i=t,t=void 0),this.style.queryRenderedFeatures(t=t||[[0,0],[this.transform.width,this.transform.height]],i=i||{},this.transform)):[]}querySourceFeatures(e,t){return this.style.querySourceFeatures(e,t)}queryTerrainElevation(t,i){const r=this.transform.elevation;return r?(i=e.extend({},{exaggerated:!0},i),r.getAtPoint(e.MercatorCoordinate.fromLngLat(t),null,i.exaggerated)):null}setStyle(t,i){return!1!==(i=e.extend({},{localIdeographFontFamily:this._localIdeographFontFamily,localFontFamily:this._localFontFamily},i)).diff&&i.localIdeographFontFamily===this._localIdeographFontFamily&&i.localFontFamily===this._localFontFamily&&this.style&&t?(this._diffStyle(t,i),this):(this._localIdeographFontFamily=i.localIdeographFontFamily,this._localFontFamily=i.localFontFamily,this._updateStyle(t,i))}_getUIString(e){const t=this._locale[e];if(null==t)throw new Error(`Missing UI string '${e}'`);return t}_updateStyle(e,t){return this.style&&(this.style.setEventedParent(null),this.style._remove(),this.style=void 0),e&&(this.style=new Wt(this,t||{}),this.style.setEventedParent(this,{style:this.style}),"string"==typeof e?this.style.loadURL(e):this.style.loadJSON(e)),this._updateTerrain(),this}_lazyInitEmptyStyle(){this.style||(this.style=new Wt(this,{}),this.style.setEventedParent(this,{style:this.style}),this.style.loadEmpty())}_diffStyle(t,i){if("string"==typeof t){const r=this._requestManager.normalizeStyleURL(t),n=this._requestManager.transformRequest(r,e.ResourceType.Style);e.getJSON(n,((t,r)=>{t?this.fire(new e.ErrorEvent(t)):r&&this._updateDiff(r,i)}))}else"object"==typeof t&&this._updateDiff(t,i)}_updateDiff(t,i){try{this.style.setState(t)&&this._update(!0)}catch(r){e.warnOnce(`Unable to perform style diff: ${r.message||r.error||r}. Rebuilding the style from scratch.`),this._updateStyle(t,i)}}getStyle(){if(this.style)return this.style.serialize()}isStyleLoaded(){return this.style?this.style.loaded():(e.warnOnce("There is no style added to the map."),!1)}addSource(e,t){return this._lazyInitEmptyStyle(),this.style.addSource(e,t),this._update(!0)}isSourceLoaded(e){return!!this.style&&this.style._isSourceCacheLoaded(e)}areTilesLoaded(){const e=this.style&&this.style._sourceCaches;for(const t in e){const i=e[t]._tiles;for(const e in i){const t=i[e];if("loaded"!==t.state&&"errored"!==t.state)return!1}}return!0}addSourceType(e,t,i){this._lazyInitEmptyStyle(),this.style.addSourceType(e,t,i)}removeSource(e){return this.style.removeSource(e),this._updateTerrain(),this._update(!0)}getSource(e){return this.style.getSource(e)}addImage(t,i,{pixelRatio:r=1,sdf:n=!1,stretchX:o,stretchY:s,content:a}={}){if(this._lazyInitEmptyStyle(),i instanceof e.window.HTMLImageElement||e.window.ImageBitmap&&i instanceof e.window.ImageBitmap){const{width:l,height:c,data:h}=e.exported.getImageData(i);this.style.addImage(t,{data:new e.RGBAImage({width:l,height:c},h),pixelRatio:r,stretchX:o,stretchY:s,content:a,sdf:n,version:0})}else if(void 0===i.width||void 0===i.height)this.fire(new e.ErrorEvent(new Error("Invalid arguments to map.addImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`")));else{const{width:l,height:c}=i,h=i;this.style.addImage(t,{data:new e.RGBAImage({width:l,height:c},new Uint8Array(h.data)),pixelRatio:r,stretchX:o,stretchY:s,content:a,sdf:n,version:0,userImage:h}),h.onAdd&&h.onAdd(this,t)}}updateImage(t,i){const r=this.style.getImage(t);if(!r)return void this.fire(new e.ErrorEvent(new Error("The map has no image with that id. If you are adding a new image use `map.addImage(...)` instead.")));const n=i instanceof e.window.HTMLImageElement||e.window.ImageBitmap&&i instanceof e.window.ImageBitmap?e.exported.getImageData(i):i,{width:o,height:s}=n;void 0!==o&&void 0!==s?o===r.data.width&&s===r.data.height?(r.data.replace(n.data,!(i instanceof e.window.HTMLImageElement||e.window.ImageBitmap&&i instanceof e.window.ImageBitmap)),this.style.updateImage(t,r)):this.fire(new e.ErrorEvent(new Error("The width and height of the updated image must be that same as the previous version of the image"))):this.fire(new e.ErrorEvent(new Error("Invalid arguments to map.updateImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`")))}hasImage(t){return t?!!this.style.getImage(t):(this.fire(new e.ErrorEvent(new Error("Missing required image id"))),!1)}removeImage(e){this.style.removeImage(e)}loadImage(t,i){e.getImage(this._requestManager.transformRequest(t,e.ResourceType.Image),((t,r)=>{i(t,r instanceof e.window.HTMLImageElement?e.exported.getImageData(r):r)}))}listImages(){return this.style.listImages()}addLayer(e,t){return this._lazyInitEmptyStyle(),this.style.addLayer(e,t),this._update(!0)}moveLayer(e,t){return this.style.moveLayer(e,t),this._update(!0)}removeLayer(e){return this.style.removeLayer(e),this._update(!0)}getLayer(e){return this.style.getLayer(e)}setLayerZoomRange(e,t,i){return this.style.setLayerZoomRange(e,t,i),this._update(!0)}setFilter(e,t,i={}){return this.style.setFilter(e,t,i),this._update(!0)}getFilter(e){return this.style.getFilter(e)}setPaintProperty(e,t,i,r={}){return this.style.setPaintProperty(e,t,i,r),this._update(!0)}getPaintProperty(e,t){return this.style.getPaintProperty(e,t)}setLayoutProperty(e,t,i,r={}){return this.style.setLayoutProperty(e,t,i,r),this._update(!0)}getLayoutProperty(e,t){return this.style.getLayoutProperty(e,t)}setLight(e,t={}){return this._lazyInitEmptyStyle(),this.style.setLight(e,t),this._update(!0)}getLight(){return this.style.getLight()}setTerrain(e){return this._lazyInitEmptyStyle(),!e&&this.transform.projection.requiresDraping?this.style.setTerrainForDraping():this.style.setTerrain(e),this._averageElevationLastSampledAt=-1/0,this._update(!0)}getTerrain(){return this.style?this.style.getTerrain():null}setFog(e){return this._lazyInitEmptyStyle(),this.style.setFog(e),this._update(!0)}getFog(){return this.style?this.style.getFog():null}_queryFogOpacity(t){return this.style&&this.style.fog?this.style.fog.getOpacityAtLatLng(e.LngLat.convert(t),this.transform):0}setFeatureState(e,t){return this.style.setFeatureState(e,t),this._update()}removeFeatureState(e,t){return this.style.removeFeatureState(e,t),this._update()}getFeatureState(e){return this.style.getFeatureState(e)}_updateContainerDimensions(){if(!this._container)return;const t=this._container.getBoundingClientRect().width||400,i=this._container.getBoundingClientRect().height||300;let r,n,o,s=this._container;for(;s&&(!n||!o);){const t=e.window.getComputedStyle(s).transform;t&&"none"!==t&&(r=t.match(/matrix.*\((.+)\)/)[1].split(", "),r[0]&&"0"!==r[0]&&"1"!==r[0]&&(n=r[0]),r[3]&&"0"!==r[3]&&"1"!==r[3]&&(o=r[3])),s=s.parentElement}this._containerWidth=n?Math.abs(t/n):t,this._containerHeight=o?Math.abs(i/o):i}_detectMissingCSS(){"rgb(250, 128, 114)"!==e.window.getComputedStyle(this._missingCSSCanary).getPropertyValue("background-color")&&e.warnOnce("This page appears to be missing CSS declarations for Mapbox GL JS, which may cause the map to display incorrectly. Please ensure your page includes mapbox-gl.css, as described in https://www.mapbox.com/mapbox-gl-js/api/.")}_setupContainer(){const e=this._container;e.classList.add("mapboxgl-map"),(this._missingCSSCanary=o("div","mapboxgl-canary",e)).style.visibility="hidden",this._detectMissingCSS();const t=this._canvasContainer=o("div","mapboxgl-canvas-container",e);this._interactive&&t.classList.add("mapboxgl-interactive"),this._canvas=o("canvas","mapboxgl-canvas",t),this._canvas.addEventListener("webglcontextlost",this._contextLost,!1),this._canvas.addEventListener("webglcontextrestored",this._contextRestored,!1),this._canvas.setAttribute("tabindex","0"),this._canvas.setAttribute("aria-label","Map"),this._canvas.setAttribute("role","region"),this._updateContainerDimensions(),this._resizeCanvas(this._containerWidth,this._containerHeight);const i=this._controlContainer=o("div","mapboxgl-control-container",e),r=this._controlPositions={};["top-left","top-right","bottom-left","bottom-right"].forEach((e=>{r[e]=o("div",`mapboxgl-ctrl-${e}`,i)})),this._container.addEventListener("scroll",this._onMapScroll,!1)}_resizeCanvas(t,i){const r=e.exported.devicePixelRatio||1;this._canvas.width=r*Math.ceil(t),this._canvas.height=r*Math.ceil(i),this._canvas.style.width=`${t}px`,this._canvas.style.height=`${i}px`}_addMarker(e){this._markers.push(e)}_removeMarker(e){const t=this._markers.indexOf(e);-1!==t&&this._markers.splice(t,1)}_setupPainter(){const i=e.extend({},t.webGLContextAttributes,{failIfMajorPerformanceCaveat:this._failIfMajorPerformanceCaveat,preserveDrawingBuffer:this._preserveDrawingBuffer,antialias:this._antialias||!1}),r=this._canvas.getContext("webgl",i)||this._canvas.getContext("experimental-webgl",i);r?(e.storeAuthState(r,!0),this.painter=new Ir(r,this.transform),this.on("data",(e=>{"source"===e.dataType&&this.painter.setTileLoadedFlag(!0)})),e.exported$1.testSupport(r)):this.fire(new e.ErrorEvent(new Error("Failed to initialize WebGL")))}_contextLost(t){t.preventDefault(),this._frame&&(this._frame.cancel(),this._frame=null),this.fire(new e.Event("webglcontextlost",{originalEvent:t}))}_contextRestored(t){this._setupPainter(),this.resize(),this._update(),this.fire(new e.Event("webglcontextrestored",{originalEvent:t}))}_onMapScroll(e){if(e.target===this._container)return this._container.scrollTop=0,this._container.scrollLeft=0,!1}loaded(){return!this._styleDirty&&!this._sourcesDirty&&!!this.style&&this.style.loaded()}_update(e){return this.style?(this._styleDirty=this._styleDirty||e,this._sourcesDirty=!0,this.triggerRepaint(),this):this}_requestRenderFrame(e){return this._update(),this._renderTaskQueue.add(e)}_cancelRenderFrame(e){this._renderTaskQueue.remove(e)}_requestDomTask(e){!this.loaded()||this.loaded()&&!this.isMoving()?e():this._domRenderTaskQueue.add(e)}_render(t){let i;const r=this.painter.context.extTimerQuery,n=e.exported.now();if(this.listens("gpu-timing-frame")&&(i=r.createQueryEXT(),r.beginQueryEXT(r.TIME_ELAPSED_EXT,i)),this.painter.context.setDirty(),this.painter.setBaseState(),this._renderTaskQueue.run(t),this._domRenderTaskQueue.run(t),this._removed)return;let o=!1;const s=this._isInitialLoad?0:this._fadeDuration;if(this.style&&this._styleDirty){this._styleDirty=!1;const t=this.transform.zoom,i=this.transform.pitch,r=e.exported.now();this.style.zoomHistory.update(t,r);const n=new e.EvaluationParameters(t,{now:r,fadeDuration:s,pitch:i,zoomHistory:this.style.zoomHistory,transition:this.style.getTransition()}),a=n.crossFadingFactor();1===a&&a===this._crossFadingFactor||(o=!0,this._crossFadingFactor=a),this.style.update(n)}this.style&&this.style.fog&&this.style.fog.hasTransition()&&(this.style._markersNeedUpdate=!0,this._sourcesDirty=!0);let a=!1;if(this.style&&this._sourcesDirty?(this._sourcesDirty=!1,this.painter._updateFog(this.style),this._updateTerrain(),a=this._updateAverageElevation(n),this.style._updateSources(this.transform),this._forceMarkerUpdate()):a=this._updateAverageElevation(n),this._placementDirty=this.style&&this.style._updatePlacement(this.painter.transform,this.showCollisionBoxes,s,this._crossSourceCollisions),this.style&&this.painter.render(this.style,{showTileBoundaries:this.showTileBoundaries,showTerrainWireframe:this.showTerrainWireframe,showOverdrawInspector:this._showOverdrawInspector,showQueryGeometry:!!this._showQueryGeometry,rotating:this.isRotating(),zooming:this.isZooming(),moving:this.isMoving(),fadeDuration:s,isInitialLoad:this._isInitialLoad,showPadding:this.showPadding,gpuTiming:!!this.listens("gpu-timing-layer"),speedIndexTiming:this.speedIndexTiming}),this.fire(new e.Event("render")),this.loaded()&&!this._loaded&&(this._loaded=!0,this.fire(new e.Event("load"))),this.style&&(this.style.hasTransitions()||o)&&(this._styleDirty=!0),this.style&&!this._placementDirty&&this.style._releaseSymbolFadeTiles(),this.listens("gpu-timing-frame")){const t=e.exported.now()-n;r.endQueryEXT(r.TIME_ELAPSED_EXT,i),setTimeout((()=>{const n=r.getQueryObjectEXT(i,r.QUERY_RESULT_EXT)/1e6;r.deleteQueryEXT(i),this.fire(new e.Event("gpu-timing-frame",{cpuTime:t,gpuTime:n}))}),50)}if(this.listens("gpu-timing-layer")){const t=this.painter.collectGpuTimers();setTimeout((()=>{const i=this.painter.queryGpuTimers(t);this.fire(new e.Event("gpu-timing-layer",{layerTimes:i}))}),50)}const l=this._sourcesDirty||this._styleDirty||this._placementDirty||a;if(l||this._repaint)this.triggerRepaint();else{const t=!this.isMoving()&&this.loaded();if(t&&(a=this._updateAverageElevation(n,!0)),a)this.triggerRepaint();else if(this._triggerFrame(!1),t&&(this.fire(new e.Event("idle")),this._isInitialLoad=!1,this.speedIndexTiming)){const t=this._calculateSpeedIndex();this.fire(new e.Event("speedindexcompleted",{speedIndex:t})),this.speedIndexTiming=!1}}!this._loaded||this._fullyLoaded||l||(this._fullyLoaded=!0,this._authenticate())}_forceMarkerUpdate(){for(const e of this._markers)e._update()}_updateAverageElevation(e,t=!1){const i=e=>(this.transform.averageElevation=e,this._update(!1),!0);if(!this.painter.averageElevationNeedsEasing())return 0!==this.transform.averageElevation&&i(0);if((t||e-this._averageElevationLastSampledAt>500)&&!this._averageElevation.isEasing(e)){const t=this.transform.averageElevation;let r=this.transform.sampleAverageElevation(),n=!1;this.transform.elevation&&(n=this.transform.elevation.exaggeration()!==this._averageElevationExaggeration,this._averageElevationExaggeration=this.transform.elevation.exaggeration()),isNaN(r)?r=0:this._averageElevationLastSampledAt=e;const o=Math.abs(t-r);if(o>1){if(this._isInitialLoad||n)return this._averageElevation.jumpTo(r),i(r);this._averageElevation.easeTo(r,e,300)}else if(o>1e-4)return this._averageElevation.jumpTo(r),i(r)}return!!this._averageElevation.isEasing(e)&&i(this._averageElevation.getValue(e))}_authenticate(){e.getMapSessionAPI(this._getMapId(),this._requestManager._skuToken,this._requestManager._customAccessToken,(t=>{if(t&&(t.message===e.AUTH_ERR_MSG||401===t.status)){const t=this.painter.context.gl;e.storeAuthState(t,!1),this._logoControl instanceof Vn&&this._logoControl._updateLogo(),t&&t.clear(t.DEPTH_BUFFER_BIT|t.COLOR_BUFFER_BIT|t.STENCIL_BUFFER_BIT),this._silenceAuthErrors||this.fire(new e.ErrorEvent(new Error("A valid Mapbox access token is required to use Mapbox GL JS. To create an account or a new access token, visit https://account.mapbox.com/")))}})),e.postMapLoadEvent(this._getMapId(),this._requestManager._skuToken,this._requestManager._customAccessToken,(()=>{}))}_updateTerrain(){this.painter.updateTerrain(this.style,this.isMoving()||this.isRotating()||this.isZooming())}_calculateSpeedIndex(){const e=this.painter.canvasCopy(),t=this.painter.getCanvasCopiesAndTimestamps();t.timeStamps.push(performance.now());const i=this.painter.context.gl,r=i.createFramebuffer();function n(e){i.framebufferTexture2D(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0,i.TEXTURE_2D,e,0);const t=new Uint8Array(i.drawingBufferWidth*i.drawingBufferHeight*4);return i.readPixels(0,0,i.drawingBufferWidth,i.drawingBufferHeight,i.RGBA,i.UNSIGNED_BYTE,t),t}return i.bindFramebuffer(i.FRAMEBUFFER,r),this._canvasPixelComparison(n(e),t.canvasCopies.map(n),t.timeStamps)}_canvasPixelComparison(e,t,i){let r=i[1]-i[0];const n=e.length/4;for(let o=0;o<t.length;o++){const s=t[o];let a=0;for(let t=0;t<s.length;t+=4)s[t]===e[t]&&s[t+1]===e[t+1]&&s[t+2]===e[t+2]&&s[t+3]===e[t+3]&&(a+=1);r+=(i[o+2]-i[o+1])*(1-a/n)}return r}remove(){this._hash&&this._hash.remove();for(const e of this._controls)e.onRemove(this);this._controls=[],this._frame&&(this._frame.cancel(),this._frame=null),this._renderTaskQueue.clear(),this._domRenderTaskQueue.clear(),this.style&&this.style.destroy(),this.painter.destroy(),this.handlers&&this.handlers.destroy(),this.handlers=void 0,this.setStyle(null),void 0!==e.window&&(e.window.removeEventListener("resize",this._onWindowResize,!1),e.window.removeEventListener("orientationchange",this._onWindowResize,!1),e.window.removeEventListener("webkitfullscreenchange",this._onWindowResize,!1),e.window.removeEventListener("online",this._onWindowOnline,!1));const t=this.painter.context.gl.getExtension("WEBGL_lose_context");t&&t.loseContext(),Wn(this._canvasContainer),Wn(this._controlContainer),Wn(this._missingCSSCanary),this._container.classList.remove("mapboxgl-map"),e.removeAuthState(this.painter.context.gl),this._removed=!0,this.fire(new e.Event("remove"))}triggerRepaint(){this._triggerFrame(!0)}_triggerFrame(t){this._renderNextFrame=this._renderNextFrame||t,this.style&&!this._frame&&(this._frame=e.exported.frame((e=>{const t=!!this._renderNextFrame;this._frame=null,this._renderNextFrame=null,t&&this._render(e)})))}_preloadTiles(t){const i=this.style?Object.values(this.style._sourceCaches):[];return e.asyncAll(i,((e,i)=>e._preloadTiles(t,i)),(()=>{this.triggerRepaint()})),this}_onWindowOnline(){this._update()}_onWindowResize(e){this._trackResize&&this.resize({originalEvent:e})._update()}get showTileBoundaries(){return!!this._showTileBoundaries}set showTileBoundaries(e){this._showTileBoundaries!==e&&(this._showTileBoundaries=e,this._update())}get showTerrainWireframe(){return!!this._showTerrainWireframe}set showTerrainWireframe(e){this._showTerrainWireframe!==e&&(this._showTerrainWireframe=e,this._update())}get speedIndexTiming(){return!!this._speedIndexTiming}set speedIndexTiming(e){this._speedIndexTiming!==e&&(this._speedIndexTiming=e,this._update())}get showPadding(){return!!this._showPadding}set showPadding(e){this._showPadding!==e&&(this._showPadding=e,this._update())}get showCollisionBoxes(){return!!this._showCollisionBoxes}set showCollisionBoxes(e){this._showCollisionBoxes!==e&&(this._showCollisionBoxes=e,e?this.style._generateCollisionBoxes():this._update())}get showOverdrawInspector(){return!!this._showOverdrawInspector}set showOverdrawInspector(e){this._showOverdrawInspector!==e&&(this._showOverdrawInspector=e,this._update())}get repaint(){return!!this._repaint}set repaint(e){this._repaint!==e&&(this._repaint=e,this.triggerRepaint())}get vertices(){return!!this._vertices}set vertices(e){this._vertices=e,this._update()}_setCacheLimits(t,i){e.setCacheLimits(t,i)}get version(){return e.version}},NavigationControl:class{constructor(t){this.options=e.extend({},Hn,t),this._container=o("div","mapboxgl-ctrl mapboxgl-ctrl-group"),this._container.addEventListener("contextmenu",(e=>e.preventDefault())),this.options.showZoom&&(e.bindAll(["_setButtonTitle","_updateZoomButtons"],this),this._zoomInButton=this._createButton("mapboxgl-ctrl-zoom-in",(e=>{this._map&&this._map.zoomIn({},{originalEvent:e})})),o("span","mapboxgl-ctrl-icon",this._zoomInButton).setAttribute("aria-hidden","true"),this._zoomOutButton=this._createButton("mapboxgl-ctrl-zoom-out",(e=>{this._map&&this._map.zoomOut({},{originalEvent:e})})),o("span","mapboxgl-ctrl-icon",this._zoomOutButton).setAttribute("aria-hidden","true")),this.options.showCompass&&(e.bindAll(["_rotateCompassArrow"],this),this._compass=this._createButton("mapboxgl-ctrl-compass",(e=>{const t=this._map;t&&(this.options.visualizePitch?t.resetNorthPitch({},{originalEvent:e}):t.resetNorth({},{originalEvent:e}))})),this._compassIcon=o("span","mapboxgl-ctrl-icon",this._compass),this._compassIcon.setAttribute("aria-hidden","true"))}_updateZoomButtons(){const e=this._map;if(!e)return;const t=e.getZoom(),i=t===e.getMaxZoom(),r=t===e.getMinZoom();this._zoomInButton.disabled=i,this._zoomOutButton.disabled=r,this._zoomInButton.setAttribute("aria-disabled",i.toString()),this._zoomOutButton.setAttribute("aria-disabled",r.toString())}_rotateCompassArrow(){const e=this._map;if(!e)return;const t=this.options.visualizePitch?`scale(${1/Math.pow(Math.cos(e.transform.pitch*(Math.PI/180)),.5)}) rotateX(${e.transform.pitch}deg) rotateZ(${e.transform.angle*(180/Math.PI)}deg)`:`rotate(${e.transform.angle*(180/Math.PI)}deg)`;e._requestDomTask((()=>{this._compassIcon&&(this._compassIcon.style.transform=t)}))}onAdd(e){return this._map=e,this.options.showZoom&&(this._setButtonTitle(this._zoomInButton,"ZoomIn"),this._setButtonTitle(this._zoomOutButton,"ZoomOut"),e.on("zoom",this._updateZoomButtons),this._updateZoomButtons()),this.options.showCompass&&(this._setButtonTitle(this._compass,"ResetBearing"),this.options.visualizePitch&&e.on("pitch",this._rotateCompassArrow),e.on("rotate",this._rotateCompassArrow),this._rotateCompassArrow(),this._handler=new Yn(e,this._compass,this.options.visualizePitch)),this._container}onRemove(){const e=this._map;e&&(this._container.remove(),this.options.showZoom&&e.off("zoom",this._updateZoomButtons),this.options.showCompass&&(this.options.visualizePitch&&e.off("pitch",this._rotateCompassArrow),e.off("rotate",this._rotateCompassArrow),this._handler&&this._handler.off(),this._handler=void 0),this._map=void 0)}_createButton(e,t){const i=o("button",e,this._container);return i.type="button",i.addEventListener("click",t),i}_setButtonTitle(e,t){if(!this._map)return;const i=this._map._getUIString(`NavigationControl.${t}`);e.setAttribute("aria-label",i),e.firstElementChild&&e.firstElementChild.setAttribute("title",i)}},GeolocateControl:class extends e.Evented{constructor(t){super(),this.options=e.extend({},Kn,t),e.bindAll(["_onSuccess","_onError","_onZoom","_finish","_setupUI","_updateCamera","_updateMarker","_updateMarkerRotation","_onDeviceOrientation"],this),this._updateMarkerRotationThrottled=Vr(this._updateMarkerRotation,20)}onAdd(t){var i;return this._map=t,this._container=o("div","mapboxgl-ctrl mapboxgl-ctrl-group"),i=this._setupUI,void 0!==Jn?i(Jn):void 0!==e.window.navigator.permissions?e.window.navigator.permissions.query({name:"geolocation"}).then((e=>{Jn="denied"!==e.state,i(Jn)})):(Jn=!!e.window.navigator.geolocation,i(Jn)),this._container}onRemove(){void 0!==this._geolocationWatchID&&(e.window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0),this.options.showUserLocation&&this._userLocationDotMarker&&this._userLocationDotMarker.remove(),this.options.showAccuracyCircle&&this._accuracyCircleMarker&&this._accuracyCircleMarker.remove(),this._container.remove(),this._map.off("zoom",this._onZoom),this._map=void 0,Qn=0,eo=!1}_isOutOfMapMaxBounds(e){const t=this._map.getMaxBounds(),i=e.coords;return!!t&&(i.longitude<t.getWest()||i.longitude>t.getEast()||i.latitude<t.getSouth()||i.latitude>t.getNorth())}_setErrorState(){switch(this._watchState){case"WAITING_ACTIVE":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active-error");break;case"ACTIVE_LOCK":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting");break;case"BACKGROUND":this._watchState="BACKGROUND_ERROR",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting")}}_onSuccess(t){if(this._map){if(this._isOutOfMapMaxBounds(t))return this._setErrorState(),this.fire(new e.Event("outofmaxbounds",t)),this._updateMarker(),void this._finish();if(this.options.trackUserLocation)switch(this._lastKnownPosition=t,this._watchState){case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active");break;case"BACKGROUND":case"BACKGROUND_ERROR":this._watchState="BACKGROUND",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background")}this.options.showUserLocation&&"OFF"!==this._watchState&&this._updateMarker(t),this.options.trackUserLocation&&"ACTIVE_LOCK"!==this._watchState||this._updateCamera(t),this.options.showUserLocation&&this._dotElement.classList.remove("mapboxgl-user-location-dot-stale"),this.fire(new e.Event("geolocate",t)),this._finish()}}_updateCamera(t){const i=new e.LngLat(t.coords.longitude,t.coords.latitude),r=t.coords.accuracy,n=this._map.getBearing(),o=e.extend({bearing:n},this.options.fitBoundsOptions);this._map.fitBounds(i.toBounds(r),o,{geolocateSource:!0})}_updateMarker(t){if(t){const i=new e.LngLat(t.coords.longitude,t.coords.latitude);this._accuracyCircleMarker.setLngLat(i).addTo(this._map),this._userLocationDotMarker.setLngLat(i).addTo(this._map),this._accuracy=t.coords.accuracy,this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()}else this._userLocationDotMarker.remove(),this._accuracyCircleMarker.remove()}_updateCircleRadius(){const e=this._map._containerHeight/2,t=this._map.unproject([0,e]),i=this._map.unproject([100,e]),r=t.distanceTo(i)/100,n=Math.ceil(2*this._accuracy/r);this._circleElement.style.width=`${n}px`,this._circleElement.style.height=`${n}px`}_onZoom(){this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()}_updateMarkerRotation(){this._userLocationDotMarker&&"number"==typeof this._heading?(this._userLocationDotMarker.setRotation(this._heading),this._dotElement.classList.add("mapboxgl-user-location-show-heading")):(this._dotElement.classList.remove("mapboxgl-user-location-show-heading"),this._userLocationDotMarker.setRotation(0))}_onError(t){if(this._map){if(this.options.trackUserLocation)if(1===t.code){this._watchState="OFF",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background-error"),this._geolocateButton.disabled=!0;const e=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.setAttribute("aria-label",e),this._geolocateButton.firstElementChild&&this._geolocateButton.firstElementChild.setAttribute("title",e),void 0!==this._geolocationWatchID&&this._clearWatch()}else{if(3===t.code&&eo)return;this._setErrorState()}"OFF"!==this._watchState&&this.options.showUserLocation&&this._dotElement.classList.add("mapboxgl-user-location-dot-stale"),this.fire(new e.Event("error",t)),this._finish()}}_finish(){this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0}_setupUI(t){if(this._container.addEventListener("contextmenu",(e=>e.preventDefault())),this._geolocateButton=o("button","mapboxgl-ctrl-geolocate",this._container),o("span","mapboxgl-ctrl-icon",this._geolocateButton).setAttribute("aria-hidden","true"),this._geolocateButton.type="button",!1===t){e.warnOnce("Geolocation support is not available so the GeolocateControl will be disabled.");const t=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.disabled=!0,this._geolocateButton.setAttribute("aria-label",t),this._geolocateButton.firstElementChild&&this._geolocateButton.firstElementChild.setAttribute("title",t)}else{const e=this._map._getUIString("GeolocateControl.FindMyLocation");this._geolocateButton.setAttribute("aria-label",e),this._geolocateButton.firstElementChild&&this._geolocateButton.firstElementChild.setAttribute("title",e)}this.options.trackUserLocation&&(this._geolocateButton.setAttribute("aria-pressed","false"),this._watchState="OFF"),this.options.showUserLocation&&(this._dotElement=o("div","mapboxgl-user-location"),this._dotElement.appendChild(o("div","mapboxgl-user-location-dot")),this._dotElement.appendChild(o("div","mapboxgl-user-location-heading")),this._userLocationDotMarker=new Zn({element:this._dotElement,rotationAlignment:"map",pitchAlignment:"map"}),this._circleElement=o("div","mapboxgl-user-location-accuracy-circle"),this._accuracyCircleMarker=new Zn({element:this._circleElement,pitchAlignment:"map"}),this.options.trackUserLocation&&(this._watchState="OFF"),this._map.on("zoom",this._onZoom)),this._geolocateButton.addEventListener("click",this.trigger.bind(this)),this._setup=!0,this.options.trackUserLocation&&this._map.on("movestart",(t=>{t.geolocateSource||"ACTIVE_LOCK"!==this._watchState||t.originalEvent&&"resize"===t.originalEvent.type||(this._watchState="BACKGROUND",this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this.fire(new e.Event("trackuserlocationend")))}))}_onDeviceOrientation(e){this._userLocationDotMarker&&(e.webkitCompassHeading?this._heading=e.webkitCompassHeading:!0===e.absolute&&(this._heading=-1*e.alpha),this._updateMarkerRotationThrottled())}trigger(){if(!this._setup)return e.warnOnce("Geolocate control triggered before added to a map"),!1;if(this.options.trackUserLocation){switch(this._watchState){case"OFF":this._watchState="WAITING_ACTIVE",this.fire(new e.Event("trackuserlocationstart"));break;case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":case"BACKGROUND_ERROR":Qn--,eo=!1,this._watchState="OFF",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background-error"),this.fire(new e.Event("trackuserlocationend"));break;case"BACKGROUND":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._lastKnownPosition&&this._updateCamera(this._lastKnownPosition),this.fire(new e.Event("trackuserlocationstart"))}switch(this._watchState){case"WAITING_ACTIVE":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active");break;case"ACTIVE_LOCK":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active");break;case"ACTIVE_ERROR":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active-error");break;case"BACKGROUND":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background");break;case"BACKGROUND_ERROR":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background-error")}if("OFF"===this._watchState&&void 0!==this._geolocationWatchID)this._clearWatch();else if(void 0===this._geolocationWatchID){let t;this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","true"),Qn++,Qn>1?(t={maximumAge:6e5,timeout:0},eo=!0):(t=this.options.positionOptions,eo=!1),this._geolocationWatchID=e.window.navigator.geolocation.watchPosition(this._onSuccess,this._onError,t),this.options.showUserHeading&&this._addDeviceOrientationListener()}}else e.window.navigator.geolocation.getCurrentPosition(this._onSuccess,this._onError,this.options.positionOptions),this._timeoutId=setTimeout(this._finish,1e4);return!0}_addDeviceOrientationListener(){const t=()=>{e.window.addEventListener("ondeviceorientationabsolute"in e.window?"deviceorientationabsolute":"deviceorientation",this._onDeviceOrientation)};void 0!==e.window.DeviceMotionEvent&&"function"==typeof e.window.DeviceMotionEvent.requestPermission?DeviceOrientationEvent.requestPermission().then((e=>{"granted"===e&&t()})).catch(console.error):t()}_clearWatch(){e.window.navigator.geolocation.clearWatch(this._geolocationWatchID),e.window.removeEventListener("deviceorientation",this._onDeviceOrientation),e.window.removeEventListener("deviceorientationabsolute",this._onDeviceOrientation),this._geolocationWatchID=void 0,this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","false"),this.options.showUserLocation&&this._updateMarker(null)}},AttributionControl:Un,ScaleControl:class{constructor(t){this.options=e.extend({},to,t),e.bindAll(["_onMove","setUnit"],this)}getDefaultPosition(){return"bottom-left"}_onMove(){io(this._map,this._container,this.options)}onAdd(e){return this._map=e,this._container=o("div","mapboxgl-ctrl mapboxgl-ctrl-scale",e.getContainer()),this._map.on("move",this._onMove),this._onMove(),this._container}onRemove(){this._container.remove(),this._map.off("move",this._onMove),this._map=void 0}setUnit(e){this.options.unit=e,io(this._map,this._container,this.options)}},FullscreenControl:class{constructor(t){this._fullscreen=!1,t&&t.container&&(t.container instanceof e.window.HTMLElement?this._container=t.container:e.warnOnce("Full screen control 'container' must be a DOM element.")),e.bindAll(["_onClickFullscreen","_changeIcon"],this),"onfullscreenchange"in e.window.document?this._fullscreenchange="fullscreenchange":"onwebkitfullscreenchange"in e.window.document&&(this._fullscreenchange="webkitfullscreenchange")}onAdd(t){return this._map=t,this._container||(this._container=this._map.getContainer()),this._controlContainer=o("div","mapboxgl-ctrl mapboxgl-ctrl-group"),this._checkFullscreenSupport()?this._setupUI():(this._controlContainer.style.display="none",e.warnOnce("This device does not support fullscreen mode.")),this._controlContainer}onRemove(){this._controlContainer.remove(),this._map=null,e.window.document.removeEventListener(this._fullscreenchange,this._changeIcon)}_checkFullscreenSupport(){return!(!e.window.document.fullscreenEnabled&&!e.window.document.webkitFullscreenEnabled)}_setupUI(){const t=this._fullscreenButton=o("button","mapboxgl-ctrl-fullscreen",this._controlContainer);o("span","mapboxgl-ctrl-icon",t).setAttribute("aria-hidden","true"),t.type="button",this._updateTitle(),this._fullscreenButton.addEventListener("click",this._onClickFullscreen),e.window.document.addEventListener(this._fullscreenchange,this._changeIcon)}_updateTitle(){const e=this._getTitle();this._fullscreenButton.setAttribute("aria-label",e),this._fullscreenButton.firstElementChild&&this._fullscreenButton.firstElementChild.setAttribute("title",e)}_getTitle(){return this._map._getUIString(this._isFullscreen()?"FullscreenControl.Exit":"FullscreenControl.Enter")}_isFullscreen(){return this._fullscreen}_changeIcon(){(e.window.document.fullscreenElement||e.window.document.webkitFullscreenElement)===this._container!==this._fullscreen&&(this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle("mapboxgl-ctrl-shrink"),this._fullscreenButton.classList.toggle("mapboxgl-ctrl-fullscreen"),this._updateTitle())}_onClickFullscreen(){this._isFullscreen()?e.window.document.exitFullscreen?e.window.document.exitFullscreen():e.window.document.webkitCancelFullScreen&&e.window.document.webkitCancelFullScreen():this._container.requestFullscreen?this._container.requestFullscreen():this._container.webkitRequestFullscreen&&this._container.webkitRequestFullscreen()}},Popup:class extends e.Evented{constructor(t){super(),this.options=e.extend(Object.create(no),t),e.bindAll(["_update","_onClose","remove","_onMouseEvent"],this),this._classList=new Set(t&&t.className?t.className.trim().split(/\s+/):[])}addTo(t){return this._map&&this.remove(),this._map=t,this.options.closeOnClick&&t.on("preclick",this._onClose),this.options.closeOnMove&&t.on("move",this._onClose),t.on("remove",this.remove),this._update(),this._focusFirstElement(),this._trackPointer?(t.on("mousemove",this._onMouseEvent),t.on("mouseup",this._onMouseEvent),t._canvasContainer.classList.add("mapboxgl-track-pointer")):t.on("move",this._update),this.fire(new e.Event("open")),this}isOpen(){return!!this._map}remove(){this._content&&this._content.remove(),this._container&&(this._container.remove(),this._container=void 0);const t=this._map;return t&&(t.off("move",this._update),t.off("move",this._onClose),t.off("preclick",this._onClose),t.off("click",this._onClose),t.off("remove",this.remove),t.off("mousemove",this._onMouseEvent),t.off("mouseup",this._onMouseEvent),t.off("drag",this._onMouseEvent),this._map=void 0),this.fire(new e.Event("close")),this}getLngLat(){return this._lngLat}setLngLat(t){this._lngLat=e.LngLat.convert(t),this._pos=null,this._trackPointer=!1,this._update();const i=this._map;return i&&(i.on("move",this._update),i.off("mousemove",this._onMouseEvent),i._canvasContainer.classList.remove("mapboxgl-track-pointer")),this}trackPointer(){this._trackPointer=!0,this._pos=null,this._update();const e=this._map;return e&&(e.off("move",this._update),e.on("mousemove",this._onMouseEvent),e.on("drag",this._onMouseEvent),e._canvasContainer.classList.add("mapboxgl-track-pointer")),this}getElement(){return this._container}setText(t){return this.setDOMContent(e.window.document.createTextNode(t))}setHTML(t){const i=e.window.document.createDocumentFragment(),r=e.window.document.createElement("body");let n;for(r.innerHTML=t;n=r.firstChild,n;)i.appendChild(n);return this.setDOMContent(i)}getMaxWidth(){return this._container&&this._container.style.maxWidth}setMaxWidth(e){return this.options.maxWidth=e,this._update(),this}setDOMContent(e){let t=this._content;if(t)for(;t.hasChildNodes();)t.firstChild&&t.removeChild(t.firstChild);else t=this._content=o("div","mapboxgl-popup-content",this._container||void 0);if(t.appendChild(e),this.options.closeButton){const e=this._closeButton=o("button","mapboxgl-popup-close-button",t);e.type="button",e.setAttribute("aria-label","Close popup"),e.setAttribute("aria-hidden","true"),e.innerHTML="&#215;",e.addEventListener("click",this._onClose)}return this._update(),this._focusFirstElement(),this}addClassName(e){return this._classList.add(e),this._updateClassList(),this}removeClassName(e){return this._classList.delete(e),this._updateClassList(),this}setOffset(e){return this.options.offset=e,this._update(),this}toggleClassName(e){let t;return this._classList.delete(e)?t=!1:(this._classList.add(e),t=!0),this._updateClassList(),t}_onMouseEvent(e){this._update(e.point)}_getAnchor(e){if(this.options.anchor)return this.options.anchor;const t=this._map,i=this._container,r=this._pos;if(!t||!i||!r)return"bottom";const n=i.offsetWidth,o=i.offsetHeight,s=r.x<n/2,a=r.x>t.transform.width-n/2;if(r.y+e<o)return s?"top-left":a?"top-right":"top";if(r.y>t.transform.height-o){if(s)return"bottom-left";if(a)return"bottom-right"}return s?"left":a?"right":"bottom"}_updateClassList(){const e=this._container;if(!e)return;const t=[...this._classList];t.push("mapboxgl-popup"),this._anchor&&t.push(`mapboxgl-popup-anchor-${this._anchor}`),this._trackPointer&&t.push("mapboxgl-popup-track-pointer"),e.className=t.join(" ")}_update(e){const t=this._map,i=this._content;if(!t||!this._lngLat&&!this._trackPointer||!i)return;let r=this._container;if(r||(r=this._container=o("div","mapboxgl-popup",t.getContainer()),this._tip=o("div","mapboxgl-popup-tip",r),r.appendChild(i)),this.options.maxWidth&&r.style.maxWidth!==this.options.maxWidth&&(r.style.maxWidth=this.options.maxWidth),t.transform.renderWorldCopies&&!this._trackPointer&&(this._lngLat=Nn(this._lngLat,this._pos,t.transform)),!this._trackPointer||e){const i=this._pos=this._trackPointer&&e?e:t.project(this._lngLat),r=so(this.options.offset),n=this._anchor=this._getAnchor(r.y),o=so(this.options.offset,n),s=i.add(o).round();t._requestDomTask((()=>{this._container&&n&&(this._container.style.transform=`${Gn[n]} translate(${s.x}px,${s.y}px)`)}))}this._updateClassList()}_focusFirstElement(){if(!this.options.focusAfterOpen||!this._container)return;const e=this._container.querySelector(oo);e&&e.focus()}_onClose(){this.remove()}_setOpacity(e){this._content&&(this._content.style.opacity=e),this._tip&&(this._tip.style.opacity=e)}},Marker:Zn,Style:Wt,LngLat:e.LngLat,LngLatBounds:e.LngLatBounds,Point:e.pointGeometry,MercatorCoordinate:e.MercatorCoordinate,FreeCameraOptions:kr,Evented:e.Evented,config:e.config,prewarm:function(){Ue().acquire(Re)},clearPrewarmedResources:function(){const e=Oe;e&&(e.isPreloaded()&&1===e.numActive()?(e.release(Re),Oe=null):console.warn("Could not clear WebWorkers since there are active Map instances that still reference it. The pre-warmed WebWorker pool can only be cleared when all map instances have been removed with map.remove()"))},get accessToken(){return e.config.ACCESS_TOKEN},set accessToken(t){e.config.ACCESS_TOKEN=t},get baseApiUrl(){return e.config.API_URL},set baseApiUrl(t){e.config.API_URL=t},get workerCount(){return Fe.workerCount},set workerCount(e){Fe.workerCount=e},get maxParallelImageRequests(){return e.config.MAX_PARALLEL_IMAGE_REQUESTS},set maxParallelImageRequests(t){e.config.MAX_PARALLEL_IMAGE_REQUESTS=t},clearStorage(t){e.clearTileCache(t)},workerUrl:"",workerClass:null,setNow:e.exported.setNow,restoreNow:e.exported.restoreNow};return ao})),i}));
+ //# sourceMappingURL=/sm/4bcb617ec044b136fb4592ba0156b1552fa4e5883ba30fb87db6684749c6d8b0.map \ No newline at end of file
diff --git a/assets/lib/mermaid/mermaid.min.js b/assets/lib/mermaid/mermaid.min.js
index 75b86f97..dd8546ad 100644
--- a/assets/lib/mermaid/mermaid.min.js
+++ b/assets/lib/mermaid/mermaid.min.js
@@ -1,42 +1,3 @@
-!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.mermaid=e():t.mermaid=e()}("undefined"!=typeof self?self:this,(function(){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=353)}([function(t,e,n){"use strict";n.r(e);var r=function(t,e){return t<e?-1:t>e?1:t>=e?0:NaN},i=function(t){var e;return 1===t.length&&(e=t,t=function(t,n){return r(e(t),n)}),{left:function(e,n,r,i){for(null==r&&(r=0),null==i&&(i=e.length);r<i;){var a=r+i>>>1;t(e[a],n)<0?r=a+1:i=a}return r},right:function(e,n,r,i){for(null==r&&(r=0),null==i&&(i=e.length);r<i;){var a=r+i>>>1;t(e[a],n)>0?i=a:r=a+1}return r}}};var a=i(r),o=a.right,s=a.left,u=o,c=function(t,e){null==e&&(e=l);for(var n=0,r=t.length-1,i=t[0],a=new Array(r<0?0:r);n<r;)a[n]=e(i,i=t[++n]);return a};function l(t,e){return[t,e]}var f=function(t,e,n){var r,i,a,o,s=t.length,u=e.length,c=new Array(s*u);for(null==n&&(n=l),r=a=0;r<s;++r)for(o=t[r],i=0;i<u;++i,++a)c[a]=n(o,e[i]);return c},h=function(t,e){return e<t?-1:e>t?1:e>=t?0:NaN},d=function(t){return null===t?NaN:+t},p=function(t,e){var n,r,i=t.length,a=0,o=-1,s=0,u=0;if(null==e)for(;++o<i;)isNaN(n=d(t[o]))||(u+=(r=n-s)*(n-(s+=r/++a)));else for(;++o<i;)isNaN(n=d(e(t[o],o,t)))||(u+=(r=n-s)*(n-(s+=r/++a)));if(a>1)return u/(a-1)},y=function(t,e){var n=p(t,e);return n?Math.sqrt(n):n},g=function(t,e){var n,r,i,a=t.length,o=-1;if(null==e){for(;++o<a;)if(null!=(n=t[o])&&n>=n)for(r=i=n;++o<a;)null!=(n=t[o])&&(r>n&&(r=n),i<n&&(i=n))}else for(;++o<a;)if(null!=(n=e(t[o],o,t))&&n>=n)for(r=i=n;++o<a;)null!=(n=e(t[o],o,t))&&(r>n&&(r=n),i<n&&(i=n));return[r,i]},m=Array.prototype,v=m.slice,b=m.map,x=function(t){return function(){return t}},_=function(t){return t},w=function(t,e,n){t=+t,e=+e,n=(i=arguments.length)<2?(e=t,t=0,1):i<3?1:+n;for(var r=-1,i=0|Math.max(0,Math.ceil((e-t)/n)),a=new Array(i);++r<i;)a[r]=t+r*n;return a},k=Math.sqrt(50),E=Math.sqrt(10),A=Math.sqrt(2),T=function(t,e,n){var r,i,a,o,s=-1;if(n=+n,(t=+t)===(e=+e)&&n>0)return[t];if((r=e<t)&&(i=t,t=e,e=i),0===(o=S(t,e,n))||!isFinite(o))return[];if(o>0)for(t=Math.ceil(t/o),e=Math.floor(e/o),a=new Array(i=Math.ceil(e-t+1));++s<i;)a[s]=(t+s)*o;else for(t=Math.floor(t*o),e=Math.ceil(e*o),a=new Array(i=Math.ceil(t-e+1));++s<i;)a[s]=(t-s)/o;return r&&a.reverse(),a};function S(t,e,n){var r=(e-t)/Math.max(0,n),i=Math.floor(Math.log(r)/Math.LN10),a=r/Math.pow(10,i);return i>=0?(a>=k?10:a>=E?5:a>=A?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(a>=k?10:a>=E?5:a>=A?2:1)}function M(t,e,n){var r=Math.abs(e-t)/Math.max(0,n),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),a=r/i;return a>=k?i*=10:a>=E?i*=5:a>=A&&(i*=2),e<t?-i:i}var O=function(t){return Math.ceil(Math.log(t.length)/Math.LN2)+1},N=function(){var t=_,e=g,n=O;function r(r){var i,a,o=r.length,s=new Array(o);for(i=0;i<o;++i)s[i]=t(r[i],i,r);var c=e(s),l=c[0],f=c[1],h=n(s,l,f);Array.isArray(h)||(h=M(l,f,h),h=w(Math.ceil(l/h)*h,f,h));for(var d=h.length;h[0]<=l;)h.shift(),--d;for(;h[d-1]>f;)h.pop(),--d;var p,y=new Array(d+1);for(i=0;i<=d;++i)(p=y[i]=[]).x0=i>0?h[i-1]:l,p.x1=i<d?h[i]:f;for(i=0;i<o;++i)l<=(a=s[i])&&a<=f&&y[u(h,a,0,d)].push(r[i]);return y}return r.value=function(e){return arguments.length?(t="function"==typeof e?e:x(e),r):t},r.domain=function(t){return arguments.length?(e="function"==typeof t?t:x([t[0],t[1]]),r):e},r.thresholds=function(t){return arguments.length?(n="function"==typeof t?t:Array.isArray(t)?x(v.call(t)):x(t),r):n},r},C=function(t,e,n){if(null==n&&(n=d),r=t.length){if((e=+e)<=0||r<2)return+n(t[0],0,t);if(e>=1)return+n(t[r-1],r-1,t);var r,i=(r-1)*e,a=Math.floor(i),o=+n(t[a],a,t);return o+(+n(t[a+1],a+1,t)-o)*(i-a)}},D=function(t,e,n){return t=b.call(t,d).sort(r),Math.ceil((n-e)/(2*(C(t,.75)-C(t,.25))*Math.pow(t.length,-1/3)))},L=function(t,e,n){return Math.ceil((n-e)/(3.5*y(t)*Math.pow(t.length,-1/3)))},F=function(t,e){var n,r,i=t.length,a=-1;if(null==e){for(;++a<i;)if(null!=(n=t[a])&&n>=n)for(r=n;++a<i;)null!=(n=t[a])&&n>r&&(r=n)}else for(;++a<i;)if(null!=(n=e(t[a],a,t))&&n>=n)for(r=n;++a<i;)null!=(n=e(t[a],a,t))&&n>r&&(r=n);return r},I=function(t,e){var n,r=t.length,i=r,a=-1,o=0;if(null==e)for(;++a<r;)isNaN(n=d(t[a]))?--i:o+=n;else for(;++a<r;)isNaN(n=d(e(t[a],a,t)))?--i:o+=n;if(i)return o/i},P=function(t,e){var n,i=t.length,a=-1,o=[];if(null==e)for(;++a<i;)isNaN(n=d(t[a]))||o.push(n);else for(;++a<i;)isNaN(n=d(e(t[a],a,t)))||o.push(n);return C(o.sort(r),.5)},R=function(t){for(var e,n,r,i=t.length,a=-1,o=0;++a<i;)o+=t[a].length;for(n=new Array(o);--i>=0;)for(e=(r=t[i]).length;--e>=0;)n[--o]=r[e];return n},B=function(t,e){var n,r,i=t.length,a=-1;if(null==e){for(;++a<i;)if(null!=(n=t[a])&&n>=n)for(r=n;++a<i;)null!=(n=t[a])&&r>n&&(r=n)}else for(;++a<i;)if(null!=(n=e(t[a],a,t))&&n>=n)for(r=n;++a<i;)null!=(n=e(t[a],a,t))&&r>n&&(r=n);return r},j=function(t,e){for(var n=e.length,r=new Array(n);n--;)r[n]=t[e[n]];return r},Y=function(t,e){if(n=t.length){var n,i,a=0,o=0,s=t[o];for(null==e&&(e=r);++a<n;)(e(i=t[a],s)<0||0!==e(s,s))&&(s=i,o=a);return 0===e(s,s)?o:void 0}},z=function(t,e,n){for(var r,i,a=(null==n?t.length:n)-(e=null==e?0:+e);a;)i=Math.random()*a--|0,r=t[a+e],t[a+e]=t[i+e],t[i+e]=r;return t},U=function(t,e){var n,r=t.length,i=-1,a=0;if(null==e)for(;++i<r;)(n=+t[i])&&(a+=n);else for(;++i<r;)(n=+e(t[i],i,t))&&(a+=n);return a},$=function(t){if(!(i=t.length))return[];for(var e=-1,n=B(t,G),r=new Array(n);++e<n;)for(var i,a=-1,o=r[e]=new Array(i);++a<i;)o[a]=t[a][e];return r};function G(t){return t.length}var V=function(){return $(arguments)},H=Array.prototype.slice,W=function(t){return t};function q(t){return"translate("+(t+.5)+",0)"}function X(t){return"translate(0,"+(t+.5)+")"}function Z(t){return function(e){return+t(e)}}function J(t){var e=Math.max(0,t.bandwidth()-1)/2;return t.round()&&(e=Math.round(e)),function(n){return+t(n)+e}}function Q(){return!this.__axis}function K(t,e){var n=[],r=null,i=null,a=6,o=6,s=3,u=1===t||4===t?-1:1,c=4===t||2===t?"x":"y",l=1===t||3===t?q:X;function f(f){var h=null==r?e.ticks?e.ticks.apply(e,n):e.domain():r,d=null==i?e.tickFormat?e.tickFormat.apply(e,n):W:i,p=Math.max(a,0)+s,y=e.range(),g=+y[0]+.5,m=+y[y.length-1]+.5,v=(e.bandwidth?J:Z)(e.copy()),b=f.selection?f.selection():f,x=b.selectAll(".domain").data([null]),_=b.selectAll(".tick").data(h,e).order(),w=_.exit(),k=_.enter().append("g").attr("class","tick"),E=_.select("line"),A=_.select("text");x=x.merge(x.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),_=_.merge(k),E=E.merge(k.append("line").attr("stroke","currentColor").attr(c+"2",u*a)),A=A.merge(k.append("text").attr("fill","currentColor").attr(c,u*p).attr("dy",1===t?"0em":3===t?"0.71em":"0.32em")),f!==b&&(x=x.transition(f),_=_.transition(f),E=E.transition(f),A=A.transition(f),w=w.transition(f).attr("opacity",1e-6).attr("transform",(function(t){return isFinite(t=v(t))?l(t):this.getAttribute("transform")})),k.attr("opacity",1e-6).attr("transform",(function(t){var e=this.parentNode.__axis;return l(e&&isFinite(e=e(t))?e:v(t))}))),w.remove(),x.attr("d",4===t||2==t?o?"M"+u*o+","+g+"H0.5V"+m+"H"+u*o:"M0.5,"+g+"V"+m:o?"M"+g+","+u*o+"V0.5H"+m+"V"+u*o:"M"+g+",0.5H"+m),_.attr("opacity",1).attr("transform",(function(t){return l(v(t))})),E.attr(c+"2",u*a),A.attr(c,u*p).text(d),b.filter(Q).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",2===t?"start":4===t?"end":"middle"),b.each((function(){this.__axis=v}))}return f.scale=function(t){return arguments.length?(e=t,f):e},f.ticks=function(){return n=H.call(arguments),f},f.tickArguments=function(t){return arguments.length?(n=null==t?[]:H.call(t),f):n.slice()},f.tickValues=function(t){return arguments.length?(r=null==t?null:H.call(t),f):r&&r.slice()},f.tickFormat=function(t){return arguments.length?(i=t,f):i},f.tickSize=function(t){return arguments.length?(a=o=+t,f):a},f.tickSizeInner=function(t){return arguments.length?(a=+t,f):a},f.tickSizeOuter=function(t){return arguments.length?(o=+t,f):o},f.tickPadding=function(t){return arguments.length?(s=+t,f):s},f}function tt(t){return K(1,t)}function et(t){return K(2,t)}function nt(t){return K(3,t)}function rt(t){return K(4,t)}var it={value:function(){}};function at(){for(var t,e=0,n=arguments.length,r={};e<n;++e){if(!(t=arguments[e]+"")||t in r||/[\s.]/.test(t))throw new Error("illegal type: "+t);r[t]=[]}return new ot(r)}function ot(t){this._=t}function st(t,e){return t.trim().split(/^|\s+/).map((function(t){var n="",r=t.indexOf(".");if(r>=0&&(n=t.slice(r+1),t=t.slice(0,r)),t&&!e.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:n}}))}function ut(t,e){for(var n,r=0,i=t.length;r<i;++r)if((n=t[r]).name===e)return n.value}function ct(t,e,n){for(var r=0,i=t.length;r<i;++r)if(t[r].name===e){t[r]=it,t=t.slice(0,r).concat(t.slice(r+1));break}return null!=n&&t.push({name:e,value:n}),t}ot.prototype=at.prototype={constructor:ot,on:function(t,e){var n,r=this._,i=st(t+"",r),a=-1,o=i.length;if(!(arguments.length<2)){if(null!=e&&"function"!=typeof e)throw new Error("invalid callback: "+e);for(;++a<o;)if(n=(t=i[a]).type)r[n]=ct(r[n],t.name,e);else if(null==e)for(n in r)r[n]=ct(r[n],t.name,null);return this}for(;++a<o;)if((n=(t=i[a]).type)&&(n=ut(r[n],t.name)))return n},copy:function(){var t={},e=this._;for(var n in e)t[n]=e[n].slice();return new ot(t)},call:function(t,e){if((n=arguments.length-2)>0)for(var n,r,i=new Array(n),a=0;a<n;++a)i[a]=arguments[a+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(a=0,n=(r=this._[t]).length;a<n;++a)r[a].value.apply(e,i)},apply:function(t,e,n){if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(var r=this._[t],i=0,a=r.length;i<a;++i)r[i].value.apply(e,n)}};var lt=at;function ft(){}var ht=function(t){return null==t?ft:function(){return this.querySelector(t)}};function dt(){return[]}var pt=function(t){return null==t?dt:function(){return this.querySelectorAll(t)}},yt=function(t){return function(){return this.matches(t)}},gt=function(t){return new Array(t.length)};function mt(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}mt.prototype={constructor:mt,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};function vt(t,e,n,r,i,a){for(var o,s=0,u=e.length,c=a.length;s<c;++s)(o=e[s])?(o.__data__=a[s],r[s]=o):n[s]=new mt(t,a[s]);for(;s<u;++s)(o=e[s])&&(i[s]=o)}function bt(t,e,n,r,i,a,o){var s,u,c,l={},f=e.length,h=a.length,d=new Array(f);for(s=0;s<f;++s)(u=e[s])&&(d[s]=c="$"+o.call(u,u.__data__,s,e),c in l?i[s]=u:l[c]=u);for(s=0;s<h;++s)(u=l[c="$"+o.call(t,a[s],s,a)])?(r[s]=u,u.__data__=a[s],l[c]=null):n[s]=new mt(t,a[s]);for(s=0;s<f;++s)(u=e[s])&&l[d[s]]===u&&(i[s]=u)}function xt(t,e){return t<e?-1:t>e?1:t>=e?0:NaN}var _t="http://www.w3.org/1999/xhtml",wt={svg:"http://www.w3.org/2000/svg",xhtml:_t,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"},kt=function(t){var e=t+="",n=e.indexOf(":");return n>=0&&"xmlns"!==(e=t.slice(0,n))&&(t=t.slice(n+1)),wt.hasOwnProperty(e)?{space:wt[e],local:t}:t};function Et(t){return function(){this.removeAttribute(t)}}function At(t){return function(){this.removeAttributeNS(t.space,t.local)}}function Tt(t,e){return function(){this.setAttribute(t,e)}}function St(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function Mt(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttribute(t):this.setAttribute(t,n)}}function Ot(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}}var Nt=function(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView};function Ct(t){return function(){this.style.removeProperty(t)}}function Dt(t,e,n){return function(){this.style.setProperty(t,e,n)}}function Lt(t,e,n){return function(){var r=e.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,n)}}function Ft(t,e){return t.style.getPropertyValue(e)||Nt(t).getComputedStyle(t,null).getPropertyValue(e)}function It(t){return function(){delete this[t]}}function Pt(t,e){return function(){this[t]=e}}function Rt(t,e){return function(){var n=e.apply(this,arguments);null==n?delete this[t]:this[t]=n}}function Bt(t){return t.trim().split(/^|\s+/)}function jt(t){return t.classList||new Yt(t)}function Yt(t){this._node=t,this._names=Bt(t.getAttribute("class")||"")}function zt(t,e){for(var n=jt(t),r=-1,i=e.length;++r<i;)n.add(e[r])}function Ut(t,e){for(var n=jt(t),r=-1,i=e.length;++r<i;)n.remove(e[r])}function $t(t){return function(){zt(this,t)}}function Gt(t){return function(){Ut(this,t)}}function Vt(t,e){return function(){(e.apply(this,arguments)?zt:Ut)(this,t)}}Yt.prototype={add:function(t){this._names.indexOf(t)<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};function Ht(){this.textContent=""}function Wt(t){return function(){this.textContent=t}}function qt(t){return function(){var e=t.apply(this,arguments);this.textContent=null==e?"":e}}function Xt(){this.innerHTML=""}function Zt(t){return function(){this.innerHTML=t}}function Jt(t){return function(){var e=t.apply(this,arguments);this.innerHTML=null==e?"":e}}function Qt(){this.nextSibling&&this.parentNode.appendChild(this)}function Kt(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function te(t){return function(){var e=this.ownerDocument,n=this.namespaceURI;return n===_t&&e.documentElement.namespaceURI===_t?e.createElement(t):e.createElementNS(n,t)}}function ee(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}var ne=function(t){var e=kt(t);return(e.local?ee:te)(e)};function re(){return null}function ie(){var t=this.parentNode;t&&t.removeChild(this)}function ae(){var t=this.cloneNode(!1),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function oe(){var t=this.cloneNode(!0),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}var se={},ue=null;"undefined"!=typeof document&&("onmouseenter"in document.documentElement||(se={mouseenter:"mouseover",mouseleave:"mouseout"}));function ce(t,e,n){return t=le(t,e,n),function(e){var n=e.relatedTarget;n&&(n===this||8&n.compareDocumentPosition(this))||t.call(this,e)}}function le(t,e,n){return function(r){var i=ue;ue=r;try{t.call(this,this.__data__,e,n)}finally{ue=i}}}function fe(t){return t.trim().split(/^|\s+/).map((function(t){var e="",n=t.indexOf(".");return n>=0&&(e=t.slice(n+1),t=t.slice(0,n)),{type:t,name:e}}))}function he(t){return function(){var e=this.__on;if(e){for(var n,r=0,i=-1,a=e.length;r<a;++r)n=e[r],t.type&&n.type!==t.type||n.name!==t.name?e[++i]=n:this.removeEventListener(n.type,n.listener,n.capture);++i?e.length=i:delete this.__on}}}function de(t,e,n){var r=se.hasOwnProperty(t.type)?ce:le;return function(i,a,o){var s,u=this.__on,c=r(e,a,o);if(u)for(var l=0,f=u.length;l<f;++l)if((s=u[l]).type===t.type&&s.name===t.name)return this.removeEventListener(s.type,s.listener,s.capture),this.addEventListener(s.type,s.listener=c,s.capture=n),void(s.value=e);this.addEventListener(t.type,c,n),s={type:t.type,name:t.name,value:e,listener:c,capture:n},u?u.push(s):this.__on=[s]}}function pe(t,e,n,r){var i=ue;t.sourceEvent=ue,ue=t;try{return e.apply(n,r)}finally{ue=i}}function ye(t,e,n){var r=Nt(t),i=r.CustomEvent;"function"==typeof i?i=new i(e,n):(i=r.document.createEvent("Event"),n?(i.initEvent(e,n.bubbles,n.cancelable),i.detail=n.detail):i.initEvent(e,!1,!1)),t.dispatchEvent(i)}function ge(t,e){return function(){return ye(this,t,e)}}function me(t,e){return function(){return ye(this,t,e.apply(this,arguments))}}var ve=[null];function be(t,e){this._groups=t,this._parents=e}function xe(){return new be([[document.documentElement]],ve)}be.prototype=xe.prototype={constructor:be,select:function(t){"function"!=typeof t&&(t=ht(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var a,o,s=e[i],u=s.length,c=r[i]=new Array(u),l=0;l<u;++l)(a=s[l])&&(o=t.call(a,a.__data__,l,s))&&("__data__"in a&&(o.__data__=a.__data__),c[l]=o);return new be(r,this._parents)},selectAll:function(t){"function"!=typeof t&&(t=pt(t));for(var e=this._groups,n=e.length,r=[],i=[],a=0;a<n;++a)for(var o,s=e[a],u=s.length,c=0;c<u;++c)(o=s[c])&&(r.push(t.call(o,o.__data__,c,s)),i.push(o));return new be(r,i)},filter:function(t){"function"!=typeof t&&(t=yt(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var a,o=e[i],s=o.length,u=r[i]=[],c=0;c<s;++c)(a=o[c])&&t.call(a,a.__data__,c,o)&&u.push(a);return new be(r,this._parents)},data:function(t,e){if(!t)return p=new Array(this.size()),l=-1,this.each((function(t){p[++l]=t})),p;var n,r=e?bt:vt,i=this._parents,a=this._groups;"function"!=typeof t&&(n=t,t=function(){return n});for(var o=a.length,s=new Array(o),u=new Array(o),c=new Array(o),l=0;l<o;++l){var f=i[l],h=a[l],d=h.length,p=t.call(f,f&&f.__data__,l,i),y=p.length,g=u[l]=new Array(y),m=s[l]=new Array(y);r(f,h,g,m,c[l]=new Array(d),p,e);for(var v,b,x=0,_=0;x<y;++x)if(v=g[x]){for(x>=_&&(_=x+1);!(b=m[_])&&++_<y;);v._next=b||null}}return(s=new be(s,i))._enter=u,s._exit=c,s},enter:function(){return new be(this._enter||this._groups.map(gt),this._parents)},exit:function(){return new be(this._exit||this._groups.map(gt),this._parents)},join:function(t,e,n){var r=this.enter(),i=this,a=this.exit();return r="function"==typeof t?t(r):r.append(t+""),null!=e&&(i=e(i)),null==n?a.remove():n(a),r&&i?r.merge(i).order():i},merge:function(t){for(var e=this._groups,n=t._groups,r=e.length,i=n.length,a=Math.min(r,i),o=new Array(r),s=0;s<a;++s)for(var u,c=e[s],l=n[s],f=c.length,h=o[s]=new Array(f),d=0;d<f;++d)(u=c[d]||l[d])&&(h[d]=u);for(;s<r;++s)o[s]=e[s];return new be(o,this._parents)},order:function(){for(var t=this._groups,e=-1,n=t.length;++e<n;)for(var r,i=t[e],a=i.length-1,o=i[a];--a>=0;)(r=i[a])&&(o&&4^r.compareDocumentPosition(o)&&o.parentNode.insertBefore(r,o),o=r);return this},sort:function(t){function e(e,n){return e&&n?t(e.__data__,n.__data__):!e-!n}t||(t=xt);for(var n=this._groups,r=n.length,i=new Array(r),a=0;a<r;++a){for(var o,s=n[a],u=s.length,c=i[a]=new Array(u),l=0;l<u;++l)(o=s[l])&&(c[l]=o);c.sort(e)}return new be(i,this._parents).order()},call:function(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this},nodes:function(){var t=new Array(this.size()),e=-1;return this.each((function(){t[++e]=this})),t},node:function(){for(var t=this._groups,e=0,n=t.length;e<n;++e)for(var r=t[e],i=0,a=r.length;i<a;++i){var o=r[i];if(o)return o}return null},size:function(){var t=0;return this.each((function(){++t})),t},empty:function(){return!this.node()},each:function(t){for(var e=this._groups,n=0,r=e.length;n<r;++n)for(var i,a=e[n],o=0,s=a.length;o<s;++o)(i=a[o])&&t.call(i,i.__data__,o,a);return this},attr:function(t,e){var n=kt(t);if(arguments.length<2){var r=this.node();return n.local?r.getAttributeNS(n.space,n.local):r.getAttribute(n)}return this.each((null==e?n.local?At:Et:"function"==typeof e?n.local?Ot:Mt:n.local?St:Tt)(n,e))},style:function(t,e,n){return arguments.length>1?this.each((null==e?Ct:"function"==typeof e?Lt:Dt)(t,e,null==n?"":n)):Ft(this.node(),t)},property:function(t,e){return arguments.length>1?this.each((null==e?It:"function"==typeof e?Rt:Pt)(t,e)):this.node()[t]},classed:function(t,e){var n=Bt(t+"");if(arguments.length<2){for(var r=jt(this.node()),i=-1,a=n.length;++i<a;)if(!r.contains(n[i]))return!1;return!0}return this.each(("function"==typeof e?Vt:e?$t:Gt)(n,e))},text:function(t){return arguments.length?this.each(null==t?Ht:("function"==typeof t?qt:Wt)(t)):this.node().textContent},html:function(t){return arguments.length?this.each(null==t?Xt:("function"==typeof t?Jt:Zt)(t)):this.node().innerHTML},raise:function(){return this.each(Qt)},lower:function(){return this.each(Kt)},append:function(t){var e="function"==typeof t?t:ne(t);return this.select((function(){return this.appendChild(e.apply(this,arguments))}))},insert:function(t,e){var n="function"==typeof t?t:ne(t),r=null==e?re:"function"==typeof e?e:ht(e);return this.select((function(){return this.insertBefore(n.apply(this,arguments),r.apply(this,arguments)||null)}))},remove:function(){return this.each(ie)},clone:function(t){return this.select(t?oe:ae)},datum:function(t){return arguments.length?this.property("__data__",t):this.node().__data__},on:function(t,e,n){var r,i,a=fe(t+""),o=a.length;if(!(arguments.length<2)){for(s=e?de:he,null==n&&(n=!1),r=0;r<o;++r)this.each(s(a[r],e,n));return this}var s=this.node().__on;if(s)for(var u,c=0,l=s.length;c<l;++c)for(r=0,u=s[c];r<o;++r)if((i=a[r]).type===u.type&&i.name===u.name)return u.value},dispatch:function(t,e){return this.each(("function"==typeof e?me:ge)(t,e))}};var _e=xe,we=function(t){return"string"==typeof t?new be([[document.querySelector(t)]],[document.documentElement]):new be([[t]],ve)};function ke(){ue.stopImmediatePropagation()}var Ee=function(){ue.preventDefault(),ue.stopImmediatePropagation()},Ae=function(t){var e=t.document.documentElement,n=we(t).on("dragstart.drag",Ee,!0);"onselectstart"in e?n.on("selectstart.drag",Ee,!0):(e.__noselect=e.style.MozUserSelect,e.style.MozUserSelect="none")};function Te(t,e){var n=t.document.documentElement,r=we(t).on("dragstart.drag",null);e&&(r.on("click.drag",Ee,!0),setTimeout((function(){r.on("click.drag",null)}),0)),"onselectstart"in n?r.on("selectstart.drag",null):(n.style.MozUserSelect=n.__noselect,delete n.__noselect)}var Se=function(t,e,n){t.prototype=e.prototype=n,n.constructor=t};function Me(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function Oe(){}var Ne="\\s*([+-]?\\d+)\\s*",Ce="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",De="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",Le=/^#([0-9a-f]{3,8})$/,Fe=new RegExp("^rgb\\("+[Ne,Ne,Ne]+"\\)$"),Ie=new RegExp("^rgb\\("+[De,De,De]+"\\)$"),Pe=new RegExp("^rgba\\("+[Ne,Ne,Ne,Ce]+"\\)$"),Re=new RegExp("^rgba\\("+[De,De,De,Ce]+"\\)$"),Be=new RegExp("^hsl\\("+[Ce,De,De]+"\\)$"),je=new RegExp("^hsla\\("+[Ce,De,De,Ce]+"\\)$"),Ye={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function ze(){return this.rgb().formatHex()}function Ue(){return this.rgb().formatRgb()}function $e(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=Le.exec(t))?(n=e[1].length,e=parseInt(e[1],16),6===n?Ge(e):3===n?new qe(e>>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===n?new qe(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===n?new qe(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=Fe.exec(t))?new qe(e[1],e[2],e[3],1):(e=Ie.exec(t))?new qe(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=Pe.exec(t))?Ve(e[1],e[2],e[3],e[4]):(e=Re.exec(t))?Ve(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=Be.exec(t))?Qe(e[1],e[2]/100,e[3]/100,1):(e=je.exec(t))?Qe(e[1],e[2]/100,e[3]/100,e[4]):Ye.hasOwnProperty(t)?Ge(Ye[t]):"transparent"===t?new qe(NaN,NaN,NaN,0):null}function Ge(t){return new qe(t>>16&255,t>>8&255,255&t,1)}function Ve(t,e,n,r){return r<=0&&(t=e=n=NaN),new qe(t,e,n,r)}function He(t){return t instanceof Oe||(t=$e(t)),t?new qe((t=t.rgb()).r,t.g,t.b,t.opacity):new qe}function We(t,e,n,r){return 1===arguments.length?He(t):new qe(t,e,n,null==r?1:r)}function qe(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}function Xe(){return"#"+Je(this.r)+Je(this.g)+Je(this.b)}function Ze(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?")":", "+t+")")}function Je(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?"0":"")+t.toString(16)}function Qe(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new en(t,e,n,r)}function Ke(t){if(t instanceof en)return new en(t.h,t.s,t.l,t.opacity);if(t instanceof Oe||(t=$e(t)),!t)return new en;if(t instanceof en)return t;var e=(t=t.rgb()).r/255,n=t.g/255,r=t.b/255,i=Math.min(e,n,r),a=Math.max(e,n,r),o=NaN,s=a-i,u=(a+i)/2;return s?(o=e===a?(n-r)/s+6*(n<r):n===a?(r-e)/s+2:(e-n)/s+4,s/=u<.5?a+i:2-a-i,o*=60):s=u>0&&u<1?0:o,new en(o,s,u,t.opacity)}function tn(t,e,n,r){return 1===arguments.length?Ke(t):new en(t,e,n,null==r?1:r)}function en(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}function nn(t,e,n){return 255*(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)}function rn(t,e,n,r,i){var a=t*t,o=a*t;return((1-3*t+3*a-o)*e+(4-6*a+3*o)*n+(1+3*t+3*a-3*o)*r+o*i)/6}Se(Oe,$e,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:ze,formatHex:ze,formatHsl:function(){return Ke(this).formatHsl()},formatRgb:Ue,toString:Ue}),Se(qe,We,Me(Oe,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new qe(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new qe(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Xe,formatHex:Xe,formatRgb:Ze,toString:Ze})),Se(en,tn,Me(Oe,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new en(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new en(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new qe(nn(t>=240?t-240:t+120,i,r),nn(t,i,r),nn(t<120?t+240:t-120,i,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"hsl(":"hsla(")+(this.h||0)+", "+100*(this.s||0)+"%, "+100*(this.l||0)+"%"+(1===t?")":", "+t+")")}}));var an=function(t){var e=t.length-1;return function(n){var r=n<=0?n=0:n>=1?(n=1,e-1):Math.floor(n*e),i=t[r],a=t[r+1],o=r>0?t[r-1]:2*i-a,s=r<e-1?t[r+2]:2*a-i;return rn((n-r/e)*e,o,i,a,s)}},on=function(t){var e=t.length;return function(n){var r=Math.floor(((n%=1)<0?++n:n)*e),i=t[(r+e-1)%e],a=t[r%e],o=t[(r+1)%e],s=t[(r+2)%e];return rn((n-r/e)*e,i,a,o,s)}},sn=function(t){return function(){return t}};function un(t,e){return function(n){return t+n*e}}function cn(t,e){var n=e-t;return n?un(t,n>180||n<-180?n-360*Math.round(n/360):n):sn(isNaN(t)?e:t)}function ln(t){return 1==(t=+t)?fn:function(e,n){return n-e?function(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}(e,n,t):sn(isNaN(e)?n:e)}}function fn(t,e){var n=e-t;return n?un(t,n):sn(isNaN(t)?e:t)}var hn=function t(e){var n=ln(e);function r(t,e){var r=n((t=We(t)).r,(e=We(e)).r),i=n(t.g,e.g),a=n(t.b,e.b),o=fn(t.opacity,e.opacity);return function(e){return t.r=r(e),t.g=i(e),t.b=a(e),t.opacity=o(e),t+""}}return r.gamma=t,r}(1);function dn(t){return function(e){var n,r,i=e.length,a=new Array(i),o=new Array(i),s=new Array(i);for(n=0;n<i;++n)r=We(e[n]),a[n]=r.r||0,o[n]=r.g||0,s[n]=r.b||0;return a=t(a),o=t(o),s=t(s),r.opacity=1,function(t){return r.r=a(t),r.g=o(t),r.b=s(t),r+""}}}var pn=dn(an),yn=dn(on),gn=function(t,e){e||(e=[]);var n,r=t?Math.min(e.length,t.length):0,i=e.slice();return function(a){for(n=0;n<r;++n)i[n]=t[n]*(1-a)+e[n]*a;return i}};function mn(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}var vn=function(t,e){return(mn(e)?gn:bn)(t,e)};function bn(t,e){var n,r=e?e.length:0,i=t?Math.min(r,t.length):0,a=new Array(i),o=new Array(r);for(n=0;n<i;++n)a[n]=Mn(t[n],e[n]);for(;n<r;++n)o[n]=e[n];return function(t){for(n=0;n<i;++n)o[n]=a[n](t);return o}}var xn=function(t,e){var n=new Date;return t=+t,e=+e,function(r){return n.setTime(t*(1-r)+e*r),n}},_n=function(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}},wn=function(t,e){var n,r={},i={};for(n in null!==t&&"object"==typeof t||(t={}),null!==e&&"object"==typeof e||(e={}),e)n in t?r[n]=Mn(t[n],e[n]):i[n]=e[n];return function(t){for(n in r)i[n]=r[n](t);return i}},kn=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,En=new RegExp(kn.source,"g");var An,Tn,Sn=function(t,e){var n,r,i,a=kn.lastIndex=En.lastIndex=0,o=-1,s=[],u=[];for(t+="",e+="";(n=kn.exec(t))&&(r=En.exec(e));)(i=r.index)>a&&(i=e.slice(a,i),s[o]?s[o]+=i:s[++o]=i),(n=n[0])===(r=r[0])?s[o]?s[o]+=r:s[++o]=r:(s[++o]=null,u.push({i:o,x:_n(n,r)})),a=En.lastIndex;return a<e.length&&(i=e.slice(a),s[o]?s[o]+=i:s[++o]=i),s.length<2?u[0]?function(t){return function(e){return t(e)+""}}(u[0].x):function(t){return function(){return t}}(e):(e=u.length,function(t){for(var n,r=0;r<e;++r)s[(n=u[r]).i]=n.x(t);return s.join("")})},Mn=function(t,e){var n,r=typeof e;return null==e||"boolean"===r?sn(e):("number"===r?_n:"string"===r?(n=$e(e))?(e=n,hn):Sn:e instanceof $e?hn:e instanceof Date?xn:mn(e)?gn:Array.isArray(e)?bn:"function"!=typeof e.valueOf&&"function"!=typeof e.toString||isNaN(e)?wn:_n)(t,e)},On=function(){for(var t,e=ue;t=e.sourceEvent;)e=t;return e},Nn=function(t,e){var n=t.ownerSVGElement||t;if(n.createSVGPoint){var r=n.createSVGPoint();return r.x=e.clientX,r.y=e.clientY,[(r=r.matrixTransform(t.getScreenCTM().inverse())).x,r.y]}var i=t.getBoundingClientRect();return[e.clientX-i.left-t.clientLeft,e.clientY-i.top-t.clientTop]},Cn=function(t,e,n){arguments.length<3&&(n=e,e=On().changedTouches);for(var r,i=0,a=e?e.length:0;i<a;++i)if((r=e[i]).identifier===n)return Nn(t,r);return null},Dn=function(t){var e=On();return e.changedTouches&&(e=e.changedTouches[0]),Nn(t,e)},Ln=0,Fn=0,In=0,Pn=0,Rn=0,Bn=0,jn="object"==typeof performance&&performance.now?performance:Date,Yn="object"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function zn(){return Rn||(Yn(Un),Rn=jn.now()+Bn)}function Un(){Rn=0}function $n(){this._call=this._time=this._next=null}function Gn(t,e,n){var r=new $n;return r.restart(t,e,n),r}function Vn(){zn(),++Ln;for(var t,e=An;e;)(t=Rn-e._time)>=0&&e._call.call(null,t),e=e._next;--Ln}function Hn(){Rn=(Pn=jn.now())+Bn,Ln=Fn=0;try{Vn()}finally{Ln=0,function(){var t,e,n=An,r=1/0;for(;n;)n._call?(r>n._time&&(r=n._time),t=n,n=n._next):(e=n._next,n._next=null,n=t?t._next=e:An=e);Tn=t,qn(r)}(),Rn=0}}function Wn(){var t=jn.now(),e=t-Pn;e>1e3&&(Bn-=e,Pn=t)}function qn(t){Ln||(Fn&&(Fn=clearTimeout(Fn)),t-Rn>24?(t<1/0&&(Fn=setTimeout(Hn,t-jn.now()-Bn)),In&&(In=clearInterval(In))):(In||(Pn=jn.now(),In=setInterval(Wn,1e3)),Ln=1,Yn(Hn)))}$n.prototype=Gn.prototype={constructor:$n,restart:function(t,e,n){if("function"!=typeof t)throw new TypeError("callback is not a function");n=(null==n?zn():+n)+(null==e?0:+e),this._next||Tn===this||(Tn?Tn._next=this:An=this,Tn=this),this._call=t,this._time=n,qn()},stop:function(){this._call&&(this._call=null,this._time=1/0,qn())}};var Xn=function(t,e,n){var r=new $n;return e=null==e?0:+e,r.restart((function(n){r.stop(),t(n+e)}),e,n),r},Zn=lt("start","end","cancel","interrupt"),Jn=[],Qn=function(t,e,n,r,i,a){var o=t.__transition;if(o){if(n in o)return}else t.__transition={};!function(t,e,n){var r,i=t.__transition;function a(u){var c,l,f,h;if(1!==n.state)return s();for(c in i)if((h=i[c]).name===n.name){if(3===h.state)return Xn(a);4===h.state?(h.state=6,h.timer.stop(),h.on.call("interrupt",t,t.__data__,h.index,h.group),delete i[c]):+c<e&&(h.state=6,h.timer.stop(),h.on.call("cancel",t,t.__data__,h.index,h.group),delete i[c])}if(Xn((function(){3===n.state&&(n.state=4,n.timer.restart(o,n.delay,n.time),o(u))})),n.state=2,n.on.call("start",t,t.__data__,n.index,n.group),2===n.state){for(n.state=3,r=new Array(f=n.tween.length),c=0,l=-1;c<f;++c)(h=n.tween[c].value.call(t,t.__data__,n.index,n.group))&&(r[++l]=h);r.length=l+1}}function o(e){for(var i=e<n.duration?n.ease.call(null,e/n.duration):(n.timer.restart(s),n.state=5,1),a=-1,o=r.length;++a<o;)r[a].call(t,i);5===n.state&&(n.on.call("end",t,t.__data__,n.index,n.group),s())}function s(){for(var r in n.state=6,n.timer.stop(),delete i[e],i)return;delete t.__transition}i[e]=n,n.timer=Gn((function(t){n.state=1,n.timer.restart(a,n.delay,n.time),n.delay<=t&&a(t-n.delay)}),0,n.time)}(t,n,{name:e,index:r,group:i,on:Zn,tween:Jn,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:0})};function Kn(t,e){var n=er(t,e);if(n.state>0)throw new Error("too late; already scheduled");return n}function tr(t,e){var n=er(t,e);if(n.state>3)throw new Error("too late; already running");return n}function er(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}var nr,rr,ir,ar,or=function(t,e){var n,r,i,a=t.__transition,o=!0;if(a){for(i in e=null==e?null:e+"",a)(n=a[i]).name===e?(r=n.state>2&&n.state<5,n.state=6,n.timer.stop(),n.on.call(r?"interrupt":"cancel",t,t.__data__,n.index,n.group),delete a[i]):o=!1;o&&delete t.__transition}},sr=180/Math.PI,ur={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1},cr=function(t,e,n,r,i,a){var o,s,u;return(o=Math.sqrt(t*t+e*e))&&(t/=o,e/=o),(u=t*n+e*r)&&(n-=t*u,r-=e*u),(s=Math.sqrt(n*n+r*r))&&(n/=s,r/=s,u/=s),t*r<e*n&&(t=-t,e=-e,u=-u,o=-o),{translateX:i,translateY:a,rotate:Math.atan2(e,t)*sr,skewX:Math.atan(u)*sr,scaleX:o,scaleY:s}};function lr(t,e,n,r){function i(t){return t.length?t.pop()+" ":""}return function(a,o){var s=[],u=[];return a=t(a),o=t(o),function(t,r,i,a,o,s){if(t!==i||r!==a){var u=o.push("translate(",null,e,null,n);s.push({i:u-4,x:_n(t,i)},{i:u-2,x:_n(r,a)})}else(i||a)&&o.push("translate("+i+e+a+n)}(a.translateX,a.translateY,o.translateX,o.translateY,s,u),function(t,e,n,a){t!==e?(t-e>180?e+=360:e-t>180&&(t+=360),a.push({i:n.push(i(n)+"rotate(",null,r)-2,x:_n(t,e)})):e&&n.push(i(n)+"rotate("+e+r)}(a.rotate,o.rotate,s,u),function(t,e,n,a){t!==e?a.push({i:n.push(i(n)+"skewX(",null,r)-2,x:_n(t,e)}):e&&n.push(i(n)+"skewX("+e+r)}(a.skewX,o.skewX,s,u),function(t,e,n,r,a,o){if(t!==n||e!==r){var s=a.push(i(a)+"scale(",null,",",null,")");o.push({i:s-4,x:_n(t,n)},{i:s-2,x:_n(e,r)})}else 1===n&&1===r||a.push(i(a)+"scale("+n+","+r+")")}(a.scaleX,a.scaleY,o.scaleX,o.scaleY,s,u),a=o=null,function(t){for(var e,n=-1,r=u.length;++n<r;)s[(e=u[n]).i]=e.x(t);return s.join("")}}}var fr=lr((function(t){return"none"===t?ur:(nr||(nr=document.createElement("DIV"),rr=document.documentElement,ir=document.defaultView),nr.style.transform=t,t=ir.getComputedStyle(rr.appendChild(nr),null).getPropertyValue("transform"),rr.removeChild(nr),t=t.slice(7,-1).split(","),cr(+t[0],+t[1],+t[2],+t[3],+t[4],+t[5]))}),"px, ","px)","deg)"),hr=lr((function(t){return null==t?ur:(ar||(ar=document.createElementNS("http://www.w3.org/2000/svg","g")),ar.setAttribute("transform",t),(t=ar.transform.baseVal.consolidate())?(t=t.matrix,cr(t.a,t.b,t.c,t.d,t.e,t.f)):ur)}),", ",")",")");function dr(t,e){var n,r;return function(){var i=tr(this,t),a=i.tween;if(a!==n)for(var o=0,s=(r=n=a).length;o<s;++o)if(r[o].name===e){(r=r.slice()).splice(o,1);break}i.tween=r}}function pr(t,e,n){var r,i;if("function"!=typeof n)throw new Error;return function(){var a=tr(this,t),o=a.tween;if(o!==r){i=(r=o).slice();for(var s={name:e,value:n},u=0,c=i.length;u<c;++u)if(i[u].name===e){i[u]=s;break}u===c&&i.push(s)}a.tween=i}}function yr(t,e,n){var r=t._id;return t.each((function(){var t=tr(this,r);(t.value||(t.value={}))[e]=n.apply(this,arguments)})),function(t){return er(t,r).value[e]}}var gr=function(t,e){var n;return("number"==typeof e?_n:e instanceof $e?hn:(n=$e(e))?(e=n,hn):Sn)(t,e)};function mr(t){return function(){this.removeAttribute(t)}}function vr(t){return function(){this.removeAttributeNS(t.space,t.local)}}function br(t,e,n){var r,i,a=n+"";return function(){var o=this.getAttribute(t);return o===a?null:o===r?i:i=e(r=o,n)}}function xr(t,e,n){var r,i,a=n+"";return function(){var o=this.getAttributeNS(t.space,t.local);return o===a?null:o===r?i:i=e(r=o,n)}}function _r(t,e,n){var r,i,a;return function(){var o,s,u=n(this);if(null!=u)return(o=this.getAttribute(t))===(s=u+"")?null:o===r&&s===i?a:(i=s,a=e(r=o,u));this.removeAttribute(t)}}function wr(t,e,n){var r,i,a;return function(){var o,s,u=n(this);if(null!=u)return(o=this.getAttributeNS(t.space,t.local))===(s=u+"")?null:o===r&&s===i?a:(i=s,a=e(r=o,u));this.removeAttributeNS(t.space,t.local)}}function kr(t,e){return function(n){this.setAttribute(t,e.call(this,n))}}function Er(t,e){return function(n){this.setAttributeNS(t.space,t.local,e.call(this,n))}}function Ar(t,e){var n,r;function i(){var i=e.apply(this,arguments);return i!==r&&(n=(r=i)&&Er(t,i)),n}return i._value=e,i}function Tr(t,e){var n,r;function i(){var i=e.apply(this,arguments);return i!==r&&(n=(r=i)&&kr(t,i)),n}return i._value=e,i}function Sr(t,e){return function(){Kn(this,t).delay=+e.apply(this,arguments)}}function Mr(t,e){return e=+e,function(){Kn(this,t).delay=e}}function Or(t,e){return function(){tr(this,t).duration=+e.apply(this,arguments)}}function Nr(t,e){return e=+e,function(){tr(this,t).duration=e}}function Cr(t,e){if("function"!=typeof e)throw new Error;return function(){tr(this,t).ease=e}}function Dr(t,e,n){var r,i,a=function(t){return(t+"").trim().split(/^|\s+/).every((function(t){var e=t.indexOf(".");return e>=0&&(t=t.slice(0,e)),!t||"start"===t}))}(e)?Kn:tr;return function(){var o=a(this,t),s=o.on;s!==r&&(i=(r=s).copy()).on(e,n),o.on=i}}var Lr=_e.prototype.constructor;function Fr(t){return function(){this.style.removeProperty(t)}}function Ir(t,e,n){return function(r){this.style.setProperty(t,e.call(this,r),n)}}function Pr(t,e,n){var r,i;function a(){var a=e.apply(this,arguments);return a!==i&&(r=(i=a)&&Ir(t,a,n)),r}return a._value=e,a}function Rr(t){return function(e){this.textContent=t.call(this,e)}}function Br(t){var e,n;function r(){var r=t.apply(this,arguments);return r!==n&&(e=(n=r)&&Rr(r)),e}return r._value=t,r}var jr=0;function Yr(t,e,n,r){this._groups=t,this._parents=e,this._name=n,this._id=r}function zr(t){return _e().transition(t)}function Ur(){return++jr}var $r=_e.prototype;function Gr(t){return t*t*t}function Vr(t){return--t*t*t+1}function Hr(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}Yr.prototype=zr.prototype={constructor:Yr,select:function(t){var e=this._name,n=this._id;"function"!=typeof t&&(t=ht(t));for(var r=this._groups,i=r.length,a=new Array(i),o=0;o<i;++o)for(var s,u,c=r[o],l=c.length,f=a[o]=new Array(l),h=0;h<l;++h)(s=c[h])&&(u=t.call(s,s.__data__,h,c))&&("__data__"in s&&(u.__data__=s.__data__),f[h]=u,Qn(f[h],e,n,h,f,er(s,n)));return new Yr(a,this._parents,e,n)},selectAll:function(t){var e=this._name,n=this._id;"function"!=typeof t&&(t=pt(t));for(var r=this._groups,i=r.length,a=[],o=[],s=0;s<i;++s)for(var u,c=r[s],l=c.length,f=0;f<l;++f)if(u=c[f]){for(var h,d=t.call(u,u.__data__,f,c),p=er(u,n),y=0,g=d.length;y<g;++y)(h=d[y])&&Qn(h,e,n,y,d,p);a.push(d),o.push(u)}return new Yr(a,o,e,n)},filter:function(t){"function"!=typeof t&&(t=yt(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var a,o=e[i],s=o.length,u=r[i]=[],c=0;c<s;++c)(a=o[c])&&t.call(a,a.__data__,c,o)&&u.push(a);return new Yr(r,this._parents,this._name,this._id)},merge:function(t){if(t._id!==this._id)throw new Error;for(var e=this._groups,n=t._groups,r=e.length,i=n.length,a=Math.min(r,i),o=new Array(r),s=0;s<a;++s)for(var u,c=e[s],l=n[s],f=c.length,h=o[s]=new Array(f),d=0;d<f;++d)(u=c[d]||l[d])&&(h[d]=u);for(;s<r;++s)o[s]=e[s];return new Yr(o,this._parents,this._name,this._id)},selection:function(){return new Lr(this._groups,this._parents)},transition:function(){for(var t=this._name,e=this._id,n=Ur(),r=this._groups,i=r.length,a=0;a<i;++a)for(var o,s=r[a],u=s.length,c=0;c<u;++c)if(o=s[c]){var l=er(o,e);Qn(o,t,n,c,s,{time:l.time+l.delay+l.duration,delay:0,duration:l.duration,ease:l.ease})}return new Yr(r,this._parents,t,n)},call:$r.call,nodes:$r.nodes,node:$r.node,size:$r.size,empty:$r.empty,each:$r.each,on:function(t,e){var n=this._id;return arguments.length<2?er(this.node(),n).on.on(t):this.each(Dr(n,t,e))},attr:function(t,e){var n=kt(t),r="transform"===n?hr:gr;return this.attrTween(t,"function"==typeof e?(n.local?wr:_r)(n,r,yr(this,"attr."+t,e)):null==e?(n.local?vr:mr)(n):(n.local?xr:br)(n,r,e))},attrTween:function(t,e){var n="attr."+t;if(arguments.length<2)return(n=this.tween(n))&&n._value;if(null==e)return this.tween(n,null);if("function"!=typeof e)throw new Error;var r=kt(t);return this.tween(n,(r.local?Ar:Tr)(r,e))},style:function(t,e,n){var r="transform"==(t+="")?fr:gr;return null==e?this.styleTween(t,function(t,e){var n,r,i;return function(){var a=Ft(this,t),o=(this.style.removeProperty(t),Ft(this,t));return a===o?null:a===n&&o===r?i:i=e(n=a,r=o)}}(t,r)).on("end.style."+t,Fr(t)):"function"==typeof e?this.styleTween(t,function(t,e,n){var r,i,a;return function(){var o=Ft(this,t),s=n(this),u=s+"";return null==s&&(this.style.removeProperty(t),u=s=Ft(this,t)),o===u?null:o===r&&u===i?a:(i=u,a=e(r=o,s))}}(t,r,yr(this,"style."+t,e))).each(function(t,e){var n,r,i,a,o="style."+e,s="end."+o;return function(){var u=tr(this,t),c=u.on,l=null==u.value[o]?a||(a=Fr(e)):void 0;c===n&&i===l||(r=(n=c).copy()).on(s,i=l),u.on=r}}(this._id,t)):this.styleTween(t,function(t,e,n){var r,i,a=n+"";return function(){var o=Ft(this,t);return o===a?null:o===r?i:i=e(r=o,n)}}(t,r,e),n).on("end.style."+t,null)},styleTween:function(t,e,n){var r="style."+(t+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(null==e)return this.tween(r,null);if("function"!=typeof e)throw new Error;return this.tween(r,Pr(t,e,null==n?"":n))},text:function(t){return this.tween("text","function"==typeof t?function(t){return function(){var e=t(this);this.textContent=null==e?"":e}}(yr(this,"text",t)):function(t){return function(){this.textContent=t}}(null==t?"":t+""))},textTween:function(t){var e="text";if(arguments.length<1)return(e=this.tween(e))&&e._value;if(null==t)return this.tween(e,null);if("function"!=typeof t)throw new Error;return this.tween(e,Br(t))},remove:function(){return this.on("end.remove",(t=this._id,function(){var e=this.parentNode;for(var n in this.__transition)if(+n!==t)return;e&&e.removeChild(this)}));var t},tween:function(t,e){var n=this._id;if(t+="",arguments.length<2){for(var r,i=er(this.node(),n).tween,a=0,o=i.length;a<o;++a)if((r=i[a]).name===t)return r.value;return null}return this.each((null==e?dr:pr)(n,t,e))},delay:function(t){var e=this._id;return arguments.length?this.each(("function"==typeof t?Sr:Mr)(e,t)):er(this.node(),e).delay},duration:function(t){var e=this._id;return arguments.length?this.each(("function"==typeof t?Or:Nr)(e,t)):er(this.node(),e).duration},ease:function(t){var e=this._id;return arguments.length?this.each(Cr(e,t)):er(this.node(),e).ease},end:function(){var t,e,n=this,r=n._id,i=n.size();return new Promise((function(a,o){var s={value:o},u={value:function(){0==--i&&a()}};n.each((function(){var n=tr(this,r),i=n.on;i!==t&&((e=(t=i).copy())._.cancel.push(s),e._.interrupt.push(s),e._.end.push(u)),n.on=e}))}))}};var Wr={time:null,delay:0,duration:250,ease:Hr};function qr(t,e){for(var n;!(n=t.__transition)||!(n=n[e]);)if(!(t=t.parentNode))return Wr.time=zn(),Wr;return n}_e.prototype.interrupt=function(t){return this.each((function(){or(this,t)}))},_e.prototype.transition=function(t){var e,n;t instanceof Yr?(e=t._id,t=t._name):(e=Ur(),(n=Wr).time=zn(),t=null==t?null:t+"");for(var r=this._groups,i=r.length,a=0;a<i;++a)for(var o,s=r[a],u=s.length,c=0;c<u;++c)(o=s[c])&&Qn(o,t,e,c,s,n||qr(o,e));return new Yr(r,this._parents,t,e)};var Xr=[null],Zr=function(t,e){var n,r,i=t.__transition;if(i)for(r in e=null==e?null:e+"",i)if((n=i[r]).state>1&&n.name===e)return new Yr([[t]],Xr,e,+r);return null},Jr=function(t){return function(){return t}},Qr=function(t,e,n){this.target=t,this.type=e,this.selection=n};function Kr(){ue.stopImmediatePropagation()}var ti=function(){ue.preventDefault(),ue.stopImmediatePropagation()},ei={name:"drag"},ni={name:"space"},ri={name:"handle"},ii={name:"center"};function ai(t){return[+t[0],+t[1]]}function oi(t){return[ai(t[0]),ai(t[1])]}function si(t){return function(e){return Cn(e,ue.touches,t)}}var ui={name:"x",handles:["w","e"].map(gi),input:function(t,e){return null==t?null:[[+t[0],e[0][1]],[+t[1],e[1][1]]]},output:function(t){return t&&[t[0][0],t[1][0]]}},ci={name:"y",handles:["n","s"].map(gi),input:function(t,e){return null==t?null:[[e[0][0],+t[0]],[e[1][0],+t[1]]]},output:function(t){return t&&[t[0][1],t[1][1]]}},li={name:"xy",handles:["n","w","e","s","nw","ne","sw","se"].map(gi),input:function(t){return null==t?null:oi(t)},output:function(t){return t}},fi={overlay:"crosshair",selection:"move",n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},hi={e:"w",w:"e",nw:"ne",ne:"nw",se:"sw",sw:"se"},di={n:"s",s:"n",nw:"sw",ne:"se",se:"ne",sw:"nw"},pi={overlay:1,selection:1,n:null,e:1,s:null,w:-1,nw:-1,ne:1,se:1,sw:-1},yi={overlay:1,selection:1,n:-1,e:null,s:1,w:null,nw:-1,ne:-1,se:1,sw:1};function gi(t){return{type:t}}function mi(){return!ue.ctrlKey&&!ue.button}function vi(){var t=this.ownerSVGElement||this;return t.hasAttribute("viewBox")?[[(t=t.viewBox.baseVal).x,t.y],[t.x+t.width,t.y+t.height]]:[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]}function bi(){return navigator.maxTouchPoints||"ontouchstart"in this}function xi(t){for(;!t.__brush;)if(!(t=t.parentNode))return;return t.__brush}function _i(t){return t[0][0]===t[1][0]||t[0][1]===t[1][1]}function wi(t){var e=t.__brush;return e?e.dim.output(e.selection):null}function ki(){return Ti(ui)}function Ei(){return Ti(ci)}var Ai=function(){return Ti(li)};function Ti(t){var e,n=vi,r=mi,i=bi,a=!0,o=lt("start","brush","end"),s=6;function u(e){var n=e.property("__brush",y).selectAll(".overlay").data([gi("overlay")]);n.enter().append("rect").attr("class","overlay").attr("pointer-events","all").attr("cursor",fi.overlay).merge(n).each((function(){var t=xi(this).extent;we(this).attr("x",t[0][0]).attr("y",t[0][1]).attr("width",t[1][0]-t[0][0]).attr("height",t[1][1]-t[0][1])})),e.selectAll(".selection").data([gi("selection")]).enter().append("rect").attr("class","selection").attr("cursor",fi.selection).attr("fill","#777").attr("fill-opacity",.3).attr("stroke","#fff").attr("shape-rendering","crispEdges");var r=e.selectAll(".handle").data(t.handles,(function(t){return t.type}));r.exit().remove(),r.enter().append("rect").attr("class",(function(t){return"handle handle--"+t.type})).attr("cursor",(function(t){return fi[t.type]})),e.each(c).attr("fill","none").attr("pointer-events","all").on("mousedown.brush",h).filter(i).on("touchstart.brush",h).on("touchmove.brush",d).on("touchend.brush touchcancel.brush",p).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function c(){var t=we(this),e=xi(this).selection;e?(t.selectAll(".selection").style("display",null).attr("x",e[0][0]).attr("y",e[0][1]).attr("width",e[1][0]-e[0][0]).attr("height",e[1][1]-e[0][1]),t.selectAll(".handle").style("display",null).attr("x",(function(t){return"e"===t.type[t.type.length-1]?e[1][0]-s/2:e[0][0]-s/2})).attr("y",(function(t){return"s"===t.type[0]?e[1][1]-s/2:e[0][1]-s/2})).attr("width",(function(t){return"n"===t.type||"s"===t.type?e[1][0]-e[0][0]+s:s})).attr("height",(function(t){return"e"===t.type||"w"===t.type?e[1][1]-e[0][1]+s:s}))):t.selectAll(".selection,.handle").style("display","none").attr("x",null).attr("y",null).attr("width",null).attr("height",null)}function l(t,e,n){return!n&&t.__brush.emitter||new f(t,e)}function f(t,e){this.that=t,this.args=e,this.state=t.__brush,this.active=0}function h(){if((!e||ue.touches)&&r.apply(this,arguments)){var n,i,o,s,u,f,h,d,p,y,g,m=this,v=ue.target.__data__.type,b="selection"===(a&&ue.metaKey?v="overlay":v)?ei:a&&ue.altKey?ii:ri,x=t===ci?null:pi[v],_=t===ui?null:yi[v],w=xi(m),k=w.extent,E=w.selection,A=k[0][0],T=k[0][1],S=k[1][0],M=k[1][1],O=0,N=0,C=x&&_&&a&&ue.shiftKey,D=ue.touches?si(ue.changedTouches[0].identifier):Dn,L=D(m),F=L,I=l(m,arguments,!0).beforestart();"overlay"===v?(E&&(p=!0),w.selection=E=[[n=t===ci?A:L[0],o=t===ui?T:L[1]],[u=t===ci?S:n,h=t===ui?M:o]]):(n=E[0][0],o=E[0][1],u=E[1][0],h=E[1][1]),i=n,s=o,f=u,d=h;var P=we(m).attr("pointer-events","none"),R=P.selectAll(".overlay").attr("cursor",fi[v]);if(ue.touches)I.moved=j,I.ended=z;else{var B=we(ue.view).on("mousemove.brush",j,!0).on("mouseup.brush",z,!0);a&&B.on("keydown.brush",U,!0).on("keyup.brush",$,!0),Ae(ue.view)}Kr(),or(m),c.call(m),I.start()}function j(){var t=D(m);!C||y||g||(Math.abs(t[0]-F[0])>Math.abs(t[1]-F[1])?g=!0:y=!0),F=t,p=!0,ti(),Y()}function Y(){var t;switch(O=F[0]-L[0],N=F[1]-L[1],b){case ni:case ei:x&&(O=Math.max(A-n,Math.min(S-u,O)),i=n+O,f=u+O),_&&(N=Math.max(T-o,Math.min(M-h,N)),s=o+N,d=h+N);break;case ri:x<0?(O=Math.max(A-n,Math.min(S-n,O)),i=n+O,f=u):x>0&&(O=Math.max(A-u,Math.min(S-u,O)),i=n,f=u+O),_<0?(N=Math.max(T-o,Math.min(M-o,N)),s=o+N,d=h):_>0&&(N=Math.max(T-h,Math.min(M-h,N)),s=o,d=h+N);break;case ii:x&&(i=Math.max(A,Math.min(S,n-O*x)),f=Math.max(A,Math.min(S,u+O*x))),_&&(s=Math.max(T,Math.min(M,o-N*_)),d=Math.max(T,Math.min(M,h+N*_)))}f<i&&(x*=-1,t=n,n=u,u=t,t=i,i=f,f=t,v in hi&&R.attr("cursor",fi[v=hi[v]])),d<s&&(_*=-1,t=o,o=h,h=t,t=s,s=d,d=t,v in di&&R.attr("cursor",fi[v=di[v]])),w.selection&&(E=w.selection),y&&(i=E[0][0],f=E[1][0]),g&&(s=E[0][1],d=E[1][1]),E[0][0]===i&&E[0][1]===s&&E[1][0]===f&&E[1][1]===d||(w.selection=[[i,s],[f,d]],c.call(m),I.brush())}function z(){if(Kr(),ue.touches){if(ue.touches.length)return;e&&clearTimeout(e),e=setTimeout((function(){e=null}),500)}else Te(ue.view,p),B.on("keydown.brush keyup.brush mousemove.brush mouseup.brush",null);P.attr("pointer-events","all"),R.attr("cursor",fi.overlay),w.selection&&(E=w.selection),_i(E)&&(w.selection=null,c.call(m)),I.end()}function U(){switch(ue.keyCode){case 16:C=x&&_;break;case 18:b===ri&&(x&&(u=f-O*x,n=i+O*x),_&&(h=d-N*_,o=s+N*_),b=ii,Y());break;case 32:b!==ri&&b!==ii||(x<0?u=f-O:x>0&&(n=i-O),_<0?h=d-N:_>0&&(o=s-N),b=ni,R.attr("cursor",fi.selection),Y());break;default:return}ti()}function $(){switch(ue.keyCode){case 16:C&&(y=g=C=!1,Y());break;case 18:b===ii&&(x<0?u=f:x>0&&(n=i),_<0?h=d:_>0&&(o=s),b=ri,Y());break;case 32:b===ni&&(ue.altKey?(x&&(u=f-O*x,n=i+O*x),_&&(h=d-N*_,o=s+N*_),b=ii):(x<0?u=f:x>0&&(n=i),_<0?h=d:_>0&&(o=s),b=ri),R.attr("cursor",fi[v]),Y());break;default:return}ti()}}function d(){l(this,arguments).moved()}function p(){l(this,arguments).ended()}function y(){var e=this.__brush||{selection:null};return e.extent=oi(n.apply(this,arguments)),e.dim=t,e}return u.move=function(e,n){e.selection?e.on("start.brush",(function(){l(this,arguments).beforestart().start()})).on("interrupt.brush end.brush",(function(){l(this,arguments).end()})).tween("brush",(function(){var e=this,r=e.__brush,i=l(e,arguments),a=r.selection,o=t.input("function"==typeof n?n.apply(this,arguments):n,r.extent),s=Mn(a,o);function u(t){r.selection=1===t&&null===o?null:s(t),c.call(e),i.brush()}return null!==a&&null!==o?u:u(1)})):e.each((function(){var e=this,r=arguments,i=e.__brush,a=t.input("function"==typeof n?n.apply(e,r):n,i.extent),o=l(e,r).beforestart();or(e),i.selection=null===a?null:a,c.call(e),o.start().brush().end()}))},u.clear=function(t){u.move(t,null)},f.prototype={beforestart:function(){return 1==++this.active&&(this.state.emitter=this,this.starting=!0),this},start:function(){return this.starting?(this.starting=!1,this.emit("start")):this.emit("brush"),this},brush:function(){return this.emit("brush"),this},end:function(){return 0==--this.active&&(delete this.state.emitter,this.emit("end")),this},emit:function(e){pe(new Qr(u,e,t.output(this.state.selection)),o.apply,o,[e,this.that,this.args])}},u.extent=function(t){return arguments.length?(n="function"==typeof t?t:Jr(oi(t)),u):n},u.filter=function(t){return arguments.length?(r="function"==typeof t?t:Jr(!!t),u):r},u.touchable=function(t){return arguments.length?(i="function"==typeof t?t:Jr(!!t),u):i},u.handleSize=function(t){return arguments.length?(s=+t,u):s},u.keyModifiers=function(t){return arguments.length?(a=!!t,u):a},u.on=function(){var t=o.on.apply(o,arguments);return t===o?u:t},u}var Si=Math.cos,Mi=Math.sin,Oi=Math.PI,Ni=Oi/2,Ci=2*Oi,Di=Math.max;function Li(t){return function(e,n){return t(e.source.value+e.target.value,n.source.value+n.target.value)}}var Fi=function(){var t=0,e=null,n=null,r=null;function i(i){var a,o,s,u,c,l,f=i.length,h=[],d=w(f),p=[],y=[],g=y.groups=new Array(f),m=new Array(f*f);for(a=0,c=-1;++c<f;){for(o=0,l=-1;++l<f;)o+=i[c][l];h.push(o),p.push(w(f)),a+=o}for(e&&d.sort((function(t,n){return e(h[t],h[n])})),n&&p.forEach((function(t,e){t.sort((function(t,r){return n(i[e][t],i[e][r])}))})),u=(a=Di(0,Ci-t*f)/a)?t:Ci/f,o=0,c=-1;++c<f;){for(s=o,l=-1;++l<f;){var v=d[c],b=p[v][l],x=i[v][b],_=o,k=o+=x*a;m[b*f+v]={index:v,subindex:b,startAngle:_,endAngle:k,value:x}}g[v]={index:v,startAngle:s,endAngle:o,value:h[v]},o+=u}for(c=-1;++c<f;)for(l=c-1;++l<f;){var E=m[l*f+c],A=m[c*f+l];(E.value||A.value)&&y.push(E.value<A.value?{source:A,target:E}:{source:E,target:A})}return r?y.sort(r):y}return i.padAngle=function(e){return arguments.length?(t=Di(0,e),i):t},i.sortGroups=function(t){return arguments.length?(e=t,i):e},i.sortSubgroups=function(t){return arguments.length?(n=t,i):n},i.sortChords=function(t){return arguments.length?(null==t?r=null:(r=Li(t))._=t,i):r&&r._},i},Ii=Array.prototype.slice,Pi=function(t){return function(){return t}},Ri=Math.PI,Bi=2*Ri,ji=Bi-1e-6;function Yi(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function zi(){return new Yi}Yi.prototype=zi.prototype={constructor:Yi,moveTo:function(t,e){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)},closePath:function(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},lineTo:function(t,e){this._+="L"+(this._x1=+t)+","+(this._y1=+e)},quadraticCurveTo:function(t,e,n,r){this._+="Q"+ +t+","+ +e+","+(this._x1=+n)+","+(this._y1=+r)},bezierCurveTo:function(t,e,n,r,i,a){this._+="C"+ +t+","+ +e+","+ +n+","+ +r+","+(this._x1=+i)+","+(this._y1=+a)},arcTo:function(t,e,n,r,i){t=+t,e=+e,n=+n,r=+r,i=+i;var a=this._x1,o=this._y1,s=n-t,u=r-e,c=a-t,l=o-e,f=c*c+l*l;if(i<0)throw new Error("negative radius: "+i);if(null===this._x1)this._+="M"+(this._x1=t)+","+(this._y1=e);else if(f>1e-6)if(Math.abs(l*s-u*c)>1e-6&&i){var h=n-a,d=r-o,p=s*s+u*u,y=h*h+d*d,g=Math.sqrt(p),m=Math.sqrt(f),v=i*Math.tan((Ri-Math.acos((p+f-y)/(2*g*m)))/2),b=v/m,x=v/g;Math.abs(b-1)>1e-6&&(this._+="L"+(t+b*c)+","+(e+b*l)),this._+="A"+i+","+i+",0,0,"+ +(l*h>c*d)+","+(this._x1=t+x*s)+","+(this._y1=e+x*u)}else this._+="L"+(this._x1=t)+","+(this._y1=e);else;},arc:function(t,e,n,r,i,a){t=+t,e=+e,a=!!a;var o=(n=+n)*Math.cos(r),s=n*Math.sin(r),u=t+o,c=e+s,l=1^a,f=a?r-i:i-r;if(n<0)throw new Error("negative radius: "+n);null===this._x1?this._+="M"+u+","+c:(Math.abs(this._x1-u)>1e-6||Math.abs(this._y1-c)>1e-6)&&(this._+="L"+u+","+c),n&&(f<0&&(f=f%Bi+Bi),f>ji?this._+="A"+n+","+n+",0,1,"+l+","+(t-o)+","+(e-s)+"A"+n+","+n+",0,1,"+l+","+(this._x1=u)+","+(this._y1=c):f>1e-6&&(this._+="A"+n+","+n+",0,"+ +(f>=Ri)+","+l+","+(this._x1=t+n*Math.cos(i))+","+(this._y1=e+n*Math.sin(i))))},rect:function(t,e,n,r){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)+"h"+ +n+"v"+ +r+"h"+-n+"Z"},toString:function(){return this._}};var Ui=zi;function $i(t){return t.source}function Gi(t){return t.target}function Vi(t){return t.radius}function Hi(t){return t.startAngle}function Wi(t){return t.endAngle}var qi=function(){var t=$i,e=Gi,n=Vi,r=Hi,i=Wi,a=null;function o(){var o,s=Ii.call(arguments),u=t.apply(this,s),c=e.apply(this,s),l=+n.apply(this,(s[0]=u,s)),f=r.apply(this,s)-Ni,h=i.apply(this,s)-Ni,d=l*Si(f),p=l*Mi(f),y=+n.apply(this,(s[0]=c,s)),g=r.apply(this,s)-Ni,m=i.apply(this,s)-Ni;if(a||(a=o=Ui()),a.moveTo(d,p),a.arc(0,0,l,f,h),f===g&&h===m||(a.quadraticCurveTo(0,0,y*Si(g),y*Mi(g)),a.arc(0,0,y,g,m)),a.quadraticCurveTo(0,0,d,p),a.closePath(),o)return a=null,o+""||null}return o.radius=function(t){return arguments.length?(n="function"==typeof t?t:Pi(+t),o):n},o.startAngle=function(t){return arguments.length?(r="function"==typeof t?t:Pi(+t),o):r},o.endAngle=function(t){return arguments.length?(i="function"==typeof t?t:Pi(+t),o):i},o.source=function(e){return arguments.length?(t=e,o):t},o.target=function(t){return arguments.length?(e=t,o):e},o.context=function(t){return arguments.length?(a=null==t?null:t,o):a},o};function Xi(){}function Zi(t,e){var n=new Xi;if(t instanceof Xi)t.each((function(t,e){n.set(e,t)}));else if(Array.isArray(t)){var r,i=-1,a=t.length;if(null==e)for(;++i<a;)n.set(i,t[i]);else for(;++i<a;)n.set(e(r=t[i],i,t),r)}else if(t)for(var o in t)n.set(o,t[o]);return n}Xi.prototype=Zi.prototype={constructor:Xi,has:function(t){return"$"+t in this},get:function(t){return this["$"+t]},set:function(t,e){return this["$"+t]=e,this},remove:function(t){var e="$"+t;return e in this&&delete this[e]},clear:function(){for(var t in this)"$"===t[0]&&delete this[t]},keys:function(){var t=[];for(var e in this)"$"===e[0]&&t.push(e.slice(1));return t},values:function(){var t=[];for(var e in this)"$"===e[0]&&t.push(this[e]);return t},entries:function(){var t=[];for(var e in this)"$"===e[0]&&t.push({key:e.slice(1),value:this[e]});return t},size:function(){var t=0;for(var e in this)"$"===e[0]&&++t;return t},empty:function(){for(var t in this)if("$"===t[0])return!1;return!0},each:function(t){for(var e in this)"$"===e[0]&&t(this[e],e.slice(1),this)}};var Ji=Zi,Qi=function(){var t,e,n,r=[],i=[];function a(n,i,o,s){if(i>=r.length)return null!=t&&n.sort(t),null!=e?e(n):n;for(var u,c,l,f=-1,h=n.length,d=r[i++],p=Ji(),y=o();++f<h;)(l=p.get(u=d(c=n[f])+""))?l.push(c):p.set(u,[c]);return p.each((function(t,e){s(y,e,a(t,i,o,s))})),y}return n={object:function(t){return a(t,0,Ki,ta)},map:function(t){return a(t,0,ea,na)},entries:function(t){return function t(n,a){if(++a>r.length)return n;var o,s=i[a-1];return null!=e&&a>=r.length?o=n.entries():(o=[],n.each((function(e,n){o.push({key:n,values:t(e,a)})}))),null!=s?o.sort((function(t,e){return s(t.key,e.key)})):o}(a(t,0,ea,na),0)},key:function(t){return r.push(t),n},sortKeys:function(t){return i[r.length-1]=t,n},sortValues:function(e){return t=e,n},rollup:function(t){return e=t,n}}};function Ki(){return{}}function ta(t,e,n){t[e]=n}function ea(){return Ji()}function na(t,e,n){t.set(e,n)}function ra(){}var ia=Ji.prototype;function aa(t,e){var n=new ra;if(t instanceof ra)t.each((function(t){n.add(t)}));else if(t){var r=-1,i=t.length;if(null==e)for(;++r<i;)n.add(t[r]);else for(;++r<i;)n.add(e(t[r],r,t))}return n}ra.prototype=aa.prototype={constructor:ra,has:ia.has,add:function(t){return this["$"+(t+="")]=t,this},remove:ia.remove,clear:ia.clear,values:ia.keys,size:ia.size,empty:ia.empty,each:ia.each};var oa=aa,sa=function(t){var e=[];for(var n in t)e.push(n);return e},ua=function(t){var e=[];for(var n in t)e.push(t[n]);return e},ca=function(t){var e=[];for(var n in t)e.push({key:n,value:t[n]});return e},la=Math.PI/180,fa=180/Math.PI;function ha(t){if(t instanceof ya)return new ya(t.l,t.a,t.b,t.opacity);if(t instanceof ka)return Ea(t);t instanceof qe||(t=He(t));var e,n,r=ba(t.r),i=ba(t.g),a=ba(t.b),o=ga((.2225045*r+.7168786*i+.0606169*a)/1);return r===i&&i===a?e=n=o:(e=ga((.4360747*r+.3850649*i+.1430804*a)/.96422),n=ga((.0139322*r+.0971045*i+.7141733*a)/.82521)),new ya(116*o-16,500*(e-o),200*(o-n),t.opacity)}function da(t,e){return new ya(t,0,0,null==e?1:e)}function pa(t,e,n,r){return 1===arguments.length?ha(t):new ya(t,e,n,null==r?1:r)}function ya(t,e,n,r){this.l=+t,this.a=+e,this.b=+n,this.opacity=+r}function ga(t){return t>6/29*(6/29)*(6/29)?Math.pow(t,1/3):t/(6/29*3*(6/29))+4/29}function ma(t){return t>6/29?t*t*t:6/29*3*(6/29)*(t-4/29)}function va(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function ba(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function xa(t){if(t instanceof ka)return new ka(t.h,t.c,t.l,t.opacity);if(t instanceof ya||(t=ha(t)),0===t.a&&0===t.b)return new ka(NaN,0<t.l&&t.l<100?0:NaN,t.l,t.opacity);var e=Math.atan2(t.b,t.a)*fa;return new ka(e<0?e+360:e,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function _a(t,e,n,r){return 1===arguments.length?xa(t):new ka(n,e,t,null==r?1:r)}function wa(t,e,n,r){return 1===arguments.length?xa(t):new ka(t,e,n,null==r?1:r)}function ka(t,e,n,r){this.h=+t,this.c=+e,this.l=+n,this.opacity=+r}function Ea(t){if(isNaN(t.h))return new ya(t.l,0,0,t.opacity);var e=t.h*la;return new ya(t.l,Math.cos(e)*t.c,Math.sin(e)*t.c,t.opacity)}Se(ya,pa,Me(Oe,{brighter:function(t){return new ya(this.l+18*(null==t?1:t),this.a,this.b,this.opacity)},darker:function(t){return new ya(this.l-18*(null==t?1:t),this.a,this.b,this.opacity)},rgb:function(){var t=(this.l+16)/116,e=isNaN(this.a)?t:t+this.a/500,n=isNaN(this.b)?t:t-this.b/200;return new qe(va(3.1338561*(e=.96422*ma(e))-1.6168667*(t=1*ma(t))-.4906146*(n=.82521*ma(n))),va(-.9787684*e+1.9161415*t+.033454*n),va(.0719453*e-.2289914*t+1.4052427*n),this.opacity)}})),Se(ka,wa,Me(Oe,{brighter:function(t){return new ka(this.h,this.c,this.l+18*(null==t?1:t),this.opacity)},darker:function(t){return new ka(this.h,this.c,this.l-18*(null==t?1:t),this.opacity)},rgb:function(){return Ea(this).rgb()}}));var Aa=-.29227,Ta=-1.7884503806,Sa=3.5172982438,Ma=-.6557636667999999;function Oa(t){if(t instanceof Ca)return new Ca(t.h,t.s,t.l,t.opacity);t instanceof qe||(t=He(t));var e=t.r/255,n=t.g/255,r=t.b/255,i=(Ma*r+Ta*e-Sa*n)/(Ma+Ta-Sa),a=r-i,o=(1.97294*(n-i)-Aa*a)/-.90649,s=Math.sqrt(o*o+a*a)/(1.97294*i*(1-i)),u=s?Math.atan2(o,a)*fa-120:NaN;return new Ca(u<0?u+360:u,s,i,t.opacity)}function Na(t,e,n,r){return 1===arguments.length?Oa(t):new Ca(t,e,n,null==r?1:r)}function Ca(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}Se(Ca,Na,Me(Oe,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new Ca(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new Ca(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=isNaN(this.h)?0:(this.h+120)*la,e=+this.l,n=isNaN(this.s)?0:this.s*e*(1-e),r=Math.cos(t),i=Math.sin(t);return new qe(255*(e+n*(-.14861*r+1.78277*i)),255*(e+n*(Aa*r+-.90649*i)),255*(e+n*(1.97294*r)),this.opacity)}}));var Da=Array.prototype.slice,La=function(t,e){return t-e},Fa=function(t){return function(){return t}},Ia=function(t,e){for(var n,r=-1,i=e.length;++r<i;)if(n=Pa(t,e[r]))return n;return 0};function Pa(t,e){for(var n=e[0],r=e[1],i=-1,a=0,o=t.length,s=o-1;a<o;s=a++){var u=t[a],c=u[0],l=u[1],f=t[s],h=f[0],d=f[1];if(Ra(u,f,e))return 0;l>r!=d>r&&n<(h-c)*(r-l)/(d-l)+c&&(i=-i)}return i}function Ra(t,e,n){var r,i,a,o;return function(t,e,n){return(e[0]-t[0])*(n[1]-t[1])==(n[0]-t[0])*(e[1]-t[1])}(t,e,n)&&(i=t[r=+(t[0]===e[0])],a=n[r],o=e[r],i<=a&&a<=o||o<=a&&a<=i)}var Ba=function(){},ja=[[],[[[1,1.5],[.5,1]]],[[[1.5,1],[1,1.5]]],[[[1.5,1],[.5,1]]],[[[1,.5],[1.5,1]]],[[[1,1.5],[.5,1]],[[1,.5],[1.5,1]]],[[[1,.5],[1,1.5]]],[[[1,.5],[.5,1]]],[[[.5,1],[1,.5]]],[[[1,1.5],[1,.5]]],[[[.5,1],[1,.5]],[[1.5,1],[1,1.5]]],[[[1.5,1],[1,.5]]],[[[.5,1],[1.5,1]]],[[[1,1.5],[1.5,1]]],[[[.5,1],[1,1.5]]],[]],Ya=function(){var t=1,e=1,n=O,r=s;function i(t){var e=n(t);if(Array.isArray(e))e=e.slice().sort(La);else{var r=g(t),i=r[0],o=r[1];e=M(i,o,e),e=w(Math.floor(i/e)*e,Math.floor(o/e)*e,e)}return e.map((function(e){return a(t,e)}))}function a(n,i){var a=[],s=[];return function(n,r,i){var a,s,u,c,l,f,h=new Array,d=new Array;a=s=-1,c=n[0]>=r,ja[c<<1].forEach(p);for(;++a<t-1;)u=c,c=n[a+1]>=r,ja[u|c<<1].forEach(p);ja[c<<0].forEach(p);for(;++s<e-1;){for(a=-1,c=n[s*t+t]>=r,l=n[s*t]>=r,ja[c<<1|l<<2].forEach(p);++a<t-1;)u=c,c=n[s*t+t+a+1]>=r,f=l,l=n[s*t+a+1]>=r,ja[u|c<<1|l<<2|f<<3].forEach(p);ja[c|l<<3].forEach(p)}a=-1,l=n[s*t]>=r,ja[l<<2].forEach(p);for(;++a<t-1;)f=l,l=n[s*t+a+1]>=r,ja[l<<2|f<<3].forEach(p);function p(t){var e,n,r=[t[0][0]+a,t[0][1]+s],u=[t[1][0]+a,t[1][1]+s],c=o(r),l=o(u);(e=d[c])?(n=h[l])?(delete d[e.end],delete h[n.start],e===n?(e.ring.push(u),i(e.ring)):h[e.start]=d[n.end]={start:e.start,end:n.end,ring:e.ring.concat(n.ring)}):(delete d[e.end],e.ring.push(u),d[e.end=l]=e):(e=h[l])?(n=d[c])?(delete h[e.start],delete d[n.end],e===n?(e.ring.push(u),i(e.ring)):h[n.start]=d[e.end]={start:n.start,end:e.end,ring:n.ring.concat(e.ring)}):(delete h[e.start],e.ring.unshift(r),h[e.start=c]=e):h[c]=d[l]={start:c,end:l,ring:[r,u]}}ja[l<<3].forEach(p)}(n,i,(function(t){r(t,n,i),function(t){for(var e=0,n=t.length,r=t[n-1][1]*t[0][0]-t[n-1][0]*t[0][1];++e<n;)r+=t[e-1][1]*t[e][0]-t[e-1][0]*t[e][1];return r}(t)>0?a.push([t]):s.push(t)})),s.forEach((function(t){for(var e,n=0,r=a.length;n<r;++n)if(-1!==Ia((e=a[n])[0],t))return void e.push(t)})),{type:"MultiPolygon",value:i,coordinates:a}}function o(e){return 2*e[0]+e[1]*(t+1)*4}function s(n,r,i){n.forEach((function(n){var a,o=n[0],s=n[1],u=0|o,c=0|s,l=r[c*t+u];o>0&&o<t&&u===o&&(a=r[c*t+u-1],n[0]=o+(i-a)/(l-a)-.5),s>0&&s<e&&c===s&&(a=r[(c-1)*t+u],n[1]=s+(i-a)/(l-a)-.5)}))}return i.contour=a,i.size=function(n){if(!arguments.length)return[t,e];var r=Math.ceil(n[0]),a=Math.ceil(n[1]);if(!(r>0&&a>0))throw new Error("invalid size");return t=r,e=a,i},i.thresholds=function(t){return arguments.length?(n="function"==typeof t?t:Array.isArray(t)?Fa(Da.call(t)):Fa(t),i):n},i.smooth=function(t){return arguments.length?(r=t?s:Ba,i):r===s},i};function za(t,e,n){for(var r=t.width,i=t.height,a=1+(n<<1),o=0;o<i;++o)for(var s=0,u=0;s<r+n;++s)s<r&&(u+=t.data[s+o*r]),s>=n&&(s>=a&&(u-=t.data[s-a+o*r]),e.data[s-n+o*r]=u/Math.min(s+1,r-1+a-s,a))}function Ua(t,e,n){for(var r=t.width,i=t.height,a=1+(n<<1),o=0;o<r;++o)for(var s=0,u=0;s<i+n;++s)s<i&&(u+=t.data[o+s*r]),s>=n&&(s>=a&&(u-=t.data[o+(s-a)*r]),e.data[o+(s-n)*r]=u/Math.min(s+1,i-1+a-s,a))}function $a(t){return t[0]}function Ga(t){return t[1]}function Va(){return 1}var Ha=function(){var t=$a,e=Ga,n=Va,r=960,i=500,a=20,o=2,s=3*a,u=r+2*s>>o,c=i+2*s>>o,l=Fa(20);function f(r){var i=new Float32Array(u*c),f=new Float32Array(u*c);r.forEach((function(r,a,l){var f=+t(r,a,l)+s>>o,h=+e(r,a,l)+s>>o,d=+n(r,a,l);f>=0&&f<u&&h>=0&&h<c&&(i[f+h*u]+=d)})),za({width:u,height:c,data:i},{width:u,height:c,data:f},a>>o),Ua({width:u,height:c,data:f},{width:u,height:c,data:i},a>>o),za({width:u,height:c,data:i},{width:u,height:c,data:f},a>>o),Ua({width:u,height:c,data:f},{width:u,height:c,data:i},a>>o),za({width:u,height:c,data:i},{width:u,height:c,data:f},a>>o),Ua({width:u,height:c,data:f},{width:u,height:c,data:i},a>>o);var d=l(i);if(!Array.isArray(d)){var p=F(i);d=M(0,p,d),(d=w(0,Math.floor(p/d)*d,d)).shift()}return Ya().thresholds(d).size([u,c])(i).map(h)}function h(t){return t.value*=Math.pow(2,-2*o),t.coordinates.forEach(d),t}function d(t){t.forEach(p)}function p(t){t.forEach(y)}function y(t){t[0]=t[0]*Math.pow(2,o)-s,t[1]=t[1]*Math.pow(2,o)-s}function g(){return u=r+2*(s=3*a)>>o,c=i+2*s>>o,f}return f.x=function(e){return arguments.length?(t="function"==typeof e?e:Fa(+e),f):t},f.y=function(t){return arguments.length?(e="function"==typeof t?t:Fa(+t),f):e},f.weight=function(t){return arguments.length?(n="function"==typeof t?t:Fa(+t),f):n},f.size=function(t){if(!arguments.length)return[r,i];var e=Math.ceil(t[0]),n=Math.ceil(t[1]);if(!(e>=0||e>=0))throw new Error("invalid size");return r=e,i=n,g()},f.cellSize=function(t){if(!arguments.length)return 1<<o;if(!((t=+t)>=1))throw new Error("invalid cell size");return o=Math.floor(Math.log(t)/Math.LN2),g()},f.thresholds=function(t){return arguments.length?(l="function"==typeof t?t:Array.isArray(t)?Fa(Da.call(t)):Fa(t),f):l},f.bandwidth=function(t){if(!arguments.length)return Math.sqrt(a*(a+1));if(!((t=+t)>=0))throw new Error("invalid bandwidth");return a=Math.round((Math.sqrt(4*t*t+1)-1)/2),g()},f},Wa=function(t){return function(){return t}};function qa(t,e,n,r,i,a,o,s,u,c){this.target=t,this.type=e,this.subject=n,this.identifier=r,this.active=i,this.x=a,this.y=o,this.dx=s,this.dy=u,this._=c}function Xa(){return!ue.ctrlKey&&!ue.button}function Za(){return this.parentNode}function Ja(t){return null==t?{x:ue.x,y:ue.y}:t}function Qa(){return navigator.maxTouchPoints||"ontouchstart"in this}qa.prototype.on=function(){var t=this._.on.apply(this._,arguments);return t===this._?this:t};var Ka=function(){var t,e,n,r,i=Xa,a=Za,o=Ja,s=Qa,u={},c=lt("start","drag","end"),l=0,f=0;function h(t){t.on("mousedown.drag",d).filter(s).on("touchstart.drag",g).on("touchmove.drag",m).on("touchend.drag touchcancel.drag",v).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function d(){if(!r&&i.apply(this,arguments)){var o=b("mouse",a.apply(this,arguments),Dn,this,arguments);o&&(we(ue.view).on("mousemove.drag",p,!0).on("mouseup.drag",y,!0),Ae(ue.view),ke(),n=!1,t=ue.clientX,e=ue.clientY,o("start"))}}function p(){if(Ee(),!n){var r=ue.clientX-t,i=ue.clientY-e;n=r*r+i*i>f}u.mouse("drag")}function y(){we(ue.view).on("mousemove.drag mouseup.drag",null),Te(ue.view,n),Ee(),u.mouse("end")}function g(){if(i.apply(this,arguments)){var t,e,n=ue.changedTouches,r=a.apply(this,arguments),o=n.length;for(t=0;t<o;++t)(e=b(n[t].identifier,r,Cn,this,arguments))&&(ke(),e("start"))}}function m(){var t,e,n=ue.changedTouches,r=n.length;for(t=0;t<r;++t)(e=u[n[t].identifier])&&(Ee(),e("drag"))}function v(){var t,e,n=ue.changedTouches,i=n.length;for(r&&clearTimeout(r),r=setTimeout((function(){r=null}),500),t=0;t<i;++t)(e=u[n[t].identifier])&&(ke(),e("end"))}function b(t,e,n,r,i){var a,s,f,d=n(e,t),p=c.copy();if(pe(new qa(h,"beforestart",a,t,l,d[0],d[1],0,0,p),(function(){return null!=(ue.subject=a=o.apply(r,i))&&(s=a.x-d[0]||0,f=a.y-d[1]||0,!0)})))return function o(c){var y,g=d;switch(c){case"start":u[t]=o,y=l++;break;case"end":delete u[t],--l;case"drag":d=n(e,t),y=l}pe(new qa(h,c,a,t,y,d[0]+s,d[1]+f,d[0]-g[0],d[1]-g[1],p),p.apply,p,[c,r,i])}}return h.filter=function(t){return arguments.length?(i="function"==typeof t?t:Wa(!!t),h):i},h.container=function(t){return arguments.length?(a="function"==typeof t?t:Wa(t),h):a},h.subject=function(t){return arguments.length?(o="function"==typeof t?t:Wa(t),h):o},h.touchable=function(t){return arguments.length?(s="function"==typeof t?t:Wa(!!t),h):s},h.on=function(){var t=c.on.apply(c,arguments);return t===c?h:t},h.clickDistance=function(t){return arguments.length?(f=(t=+t)*t,h):Math.sqrt(f)},h},to={},eo={};function no(t){return new Function("d","return {"+t.map((function(t,e){return JSON.stringify(t)+": d["+e+'] || ""'})).join(",")+"}")}function ro(t){var e=Object.create(null),n=[];return t.forEach((function(t){for(var r in t)r in e||n.push(e[r]=r)})),n}function io(t,e){var n=t+"",r=n.length;return r<e?new Array(e-r+1).join(0)+n:n}function ao(t){var e,n=t.getUTCHours(),r=t.getUTCMinutes(),i=t.getUTCSeconds(),a=t.getUTCMilliseconds();return isNaN(t)?"Invalid Date":((e=t.getUTCFullYear())<0?"-"+io(-e,6):e>9999?"+"+io(e,6):io(e,4))+"-"+io(t.getUTCMonth()+1,2)+"-"+io(t.getUTCDate(),2)+(a?"T"+io(n,2)+":"+io(r,2)+":"+io(i,2)+"."+io(a,3)+"Z":i?"T"+io(n,2)+":"+io(r,2)+":"+io(i,2)+"Z":r||n?"T"+io(n,2)+":"+io(r,2)+"Z":"")}var oo=function(t){var e=new RegExp('["'+t+"\n\r]"),n=t.charCodeAt(0);function r(t,e){var r,i=[],a=t.length,o=0,s=0,u=a<=0,c=!1;function l(){if(u)return eo;if(c)return c=!1,to;var e,r,i=o;if(34===t.charCodeAt(i)){for(;o++<a&&34!==t.charCodeAt(o)||34===t.charCodeAt(++o););return(e=o)>=a?u=!0:10===(r=t.charCodeAt(o++))?c=!0:13===r&&(c=!0,10===t.charCodeAt(o)&&++o),t.slice(i+1,e-1).replace(/""/g,'"')}for(;o<a;){if(10===(r=t.charCodeAt(e=o++)))c=!0;else if(13===r)c=!0,10===t.charCodeAt(o)&&++o;else if(r!==n)continue;return t.slice(i,e)}return u=!0,t.slice(i,a)}for(10===t.charCodeAt(a-1)&&--a,13===t.charCodeAt(a-1)&&--a;(r=l())!==eo;){for(var f=[];r!==to&&r!==eo;)f.push(r),r=l();e&&null==(f=e(f,s++))||i.push(f)}return i}function i(e,n){return e.map((function(e){return n.map((function(t){return o(e[t])})).join(t)}))}function a(e){return e.map(o).join(t)}function o(t){return null==t?"":t instanceof Date?ao(t):e.test(t+="")?'"'+t.replace(/"/g,'""')+'"':t}return{parse:function(t,e){var n,i,a=r(t,(function(t,r){if(n)return n(t,r-1);i=t,n=e?function(t,e){var n=no(t);return function(r,i){return e(n(r),i,t)}}(t,e):no(t)}));return a.columns=i||[],a},parseRows:r,format:function(e,n){return null==n&&(n=ro(e)),[n.map(o).join(t)].concat(i(e,n)).join("\n")},formatBody:function(t,e){return null==e&&(e=ro(t)),i(t,e).join("\n")},formatRows:function(t){return t.map(a).join("\n")},formatRow:a,formatValue:o}},so=oo(","),uo=so.parse,co=so.parseRows,lo=so.format,fo=so.formatBody,ho=so.formatRows,po=so.formatRow,yo=so.formatValue,go=oo("\t"),mo=go.parse,vo=go.parseRows,bo=go.format,xo=go.formatBody,_o=go.formatRows,wo=go.formatRow,ko=go.formatValue;function Eo(t){for(var e in t){var n,r,i=t[e].trim();if(i)if("true"===i)i=!0;else if("false"===i)i=!1;else if("NaN"===i)i=NaN;else if(isNaN(n=+i)){if(!(r=i.match(/^([-+]\d{2})?\d{4}(-\d{2}(-\d{2})?)?(T\d{2}:\d{2}(:\d{2}(\.\d{3})?)?(Z|[-+]\d{2}:\d{2})?)?$/)))continue;Ao&&r[4]&&!r[7]&&(i=i.replace(/-/g,"/").replace(/T/," ")),i=new Date(i)}else i=n;else i=null;t[e]=i}return t}var Ao=new Date("2019-01-01T00:00").getHours()||new Date("2019-07-01T00:00").getHours();function To(t){return+t}function So(t){return t*t}function Mo(t){return t*(2-t)}function Oo(t){return((t*=2)<=1?t*t:--t*(2-t)+1)/2}var No=function t(e){function n(t){return Math.pow(t,e)}return e=+e,n.exponent=t,n}(3),Co=function t(e){function n(t){return 1-Math.pow(1-t,e)}return e=+e,n.exponent=t,n}(3),Do=function t(e){function n(t){return((t*=2)<=1?Math.pow(t,e):2-Math.pow(2-t,e))/2}return e=+e,n.exponent=t,n}(3),Lo=Math.PI,Fo=Lo/2;function Io(t){return 1-Math.cos(t*Fo)}function Po(t){return Math.sin(t*Fo)}function Ro(t){return(1-Math.cos(Lo*t))/2}function Bo(t){return Math.pow(2,10*t-10)}function jo(t){return 1-Math.pow(2,-10*t)}function Yo(t){return((t*=2)<=1?Math.pow(2,10*t-10):2-Math.pow(2,10-10*t))/2}function zo(t){return 1-Math.sqrt(1-t*t)}function Uo(t){return Math.sqrt(1- --t*t)}function $o(t){return((t*=2)<=1?1-Math.sqrt(1-t*t):Math.sqrt(1-(t-=2)*t)+1)/2}function Go(t){return 1-Vo(1-t)}function Vo(t){return(t=+t)<4/11?7.5625*t*t:t<8/11?7.5625*(t-=6/11)*t+.75:t<10/11?7.5625*(t-=9/11)*t+.9375:7.5625*(t-=21/22)*t+63/64}function Ho(t){return((t*=2)<=1?1-Vo(1-t):Vo(t-1)+1)/2}var Wo=function t(e){function n(t){return t*t*((e+1)*t-e)}return e=+e,n.overshoot=t,n}(1.70158),qo=function t(e){function n(t){return--t*t*((e+1)*t+e)+1}return e=+e,n.overshoot=t,n}(1.70158),Xo=function t(e){function n(t){return((t*=2)<1?t*t*((e+1)*t-e):(t-=2)*t*((e+1)*t+e)+2)/2}return e=+e,n.overshoot=t,n}(1.70158),Zo=2*Math.PI,Jo=function t(e,n){var r=Math.asin(1/(e=Math.max(1,e)))*(n/=Zo);function i(t){return e*Math.pow(2,10*--t)*Math.sin((r-t)/n)}return i.amplitude=function(e){return t(e,n*Zo)},i.period=function(n){return t(e,n)},i}(1,.3),Qo=function t(e,n){var r=Math.asin(1/(e=Math.max(1,e)))*(n/=Zo);function i(t){return 1-e*Math.pow(2,-10*(t=+t))*Math.sin((t+r)/n)}return i.amplitude=function(e){return t(e,n*Zo)},i.period=function(n){return t(e,n)},i}(1,.3),Ko=function t(e,n){var r=Math.asin(1/(e=Math.max(1,e)))*(n/=Zo);function i(t){return((t=2*t-1)<0?e*Math.pow(2,10*t)*Math.sin((r-t)/n):2-e*Math.pow(2,-10*t)*Math.sin((r+t)/n))/2}return i.amplitude=function(e){return t(e,n*Zo)},i.period=function(n){return t(e,n)},i}(1,.3);function ts(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);return t.blob()}var es=function(t,e){return fetch(t,e).then(ts)};function ns(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);return t.arrayBuffer()}var rs=function(t,e){return fetch(t,e).then(ns)};function is(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);return t.text()}var as=function(t,e){return fetch(t,e).then(is)};function os(t){return function(e,n,r){return 2===arguments.length&&"function"==typeof n&&(r=n,n=void 0),as(e,n).then((function(e){return t(e,r)}))}}function ss(t,e,n,r){3===arguments.length&&"function"==typeof n&&(r=n,n=void 0);var i=oo(t);return as(e,n).then((function(t){return i.parse(t,r)}))}var us=os(uo),cs=os(mo),ls=function(t,e){return new Promise((function(n,r){var i=new Image;for(var a in e)i[a]=e[a];i.onerror=r,i.onload=function(){n(i)},i.src=t}))};function fs(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);return t.json()}var hs=function(t,e){return fetch(t,e).then(fs)};function ds(t){return function(e,n){return as(e,n).then((function(e){return(new DOMParser).parseFromString(e,t)}))}}var ps=ds("application/xml"),ys=ds("text/html"),gs=ds("image/svg+xml"),ms=function(t,e){var n;function r(){var r,i,a=n.length,o=0,s=0;for(r=0;r<a;++r)o+=(i=n[r]).x,s+=i.y;for(o=o/a-t,s=s/a-e,r=0;r<a;++r)(i=n[r]).x-=o,i.y-=s}return null==t&&(t=0),null==e&&(e=0),r.initialize=function(t){n=t},r.x=function(e){return arguments.length?(t=+e,r):t},r.y=function(t){return arguments.length?(e=+t,r):e},r},vs=function(t){return function(){return t}},bs=function(){return 1e-6*(Math.random()-.5)};function xs(t,e,n,r){if(isNaN(e)||isNaN(n))return t;var i,a,o,s,u,c,l,f,h,d=t._root,p={data:r},y=t._x0,g=t._y0,m=t._x1,v=t._y1;if(!d)return t._root=p,t;for(;d.length;)if((c=e>=(a=(y+m)/2))?y=a:m=a,(l=n>=(o=(g+v)/2))?g=o:v=o,i=d,!(d=d[f=l<<1|c]))return i[f]=p,t;if(s=+t._x.call(null,d.data),u=+t._y.call(null,d.data),e===s&&n===u)return p.next=d,i?i[f]=p:t._root=p,t;do{i=i?i[f]=new Array(4):t._root=new Array(4),(c=e>=(a=(y+m)/2))?y=a:m=a,(l=n>=(o=(g+v)/2))?g=o:v=o}while((f=l<<1|c)==(h=(u>=o)<<1|s>=a));return i[h]=d,i[f]=p,t}var _s=function(t,e,n,r,i){this.node=t,this.x0=e,this.y0=n,this.x1=r,this.y1=i};function ws(t){return t[0]}function ks(t){return t[1]}function Es(t,e,n){var r=new As(null==e?ws:e,null==n?ks:n,NaN,NaN,NaN,NaN);return null==t?r:r.addAll(t)}function As(t,e,n,r,i,a){this._x=t,this._y=e,this._x0=n,this._y0=r,this._x1=i,this._y1=a,this._root=void 0}function Ts(t){for(var e={data:t.data},n=e;t=t.next;)n=n.next={data:t.data};return e}var Ss=Es.prototype=As.prototype;function Ms(t){return t.x+t.vx}function Os(t){return t.y+t.vy}Ss.copy=function(){var t,e,n=new As(this._x,this._y,this._x0,this._y0,this._x1,this._y1),r=this._root;if(!r)return n;if(!r.length)return n._root=Ts(r),n;for(t=[{source:r,target:n._root=new Array(4)}];r=t.pop();)for(var i=0;i<4;++i)(e=r.source[i])&&(e.length?t.push({source:e,target:r.target[i]=new Array(4)}):r.target[i]=Ts(e));return n},Ss.add=function(t){var e=+this._x.call(null,t),n=+this._y.call(null,t);return xs(this.cover(e,n),e,n,t)},Ss.addAll=function(t){var e,n,r,i,a=t.length,o=new Array(a),s=new Array(a),u=1/0,c=1/0,l=-1/0,f=-1/0;for(n=0;n<a;++n)isNaN(r=+this._x.call(null,e=t[n]))||isNaN(i=+this._y.call(null,e))||(o[n]=r,s[n]=i,r<u&&(u=r),r>l&&(l=r),i<c&&(c=i),i>f&&(f=i));if(u>l||c>f)return this;for(this.cover(u,c).cover(l,f),n=0;n<a;++n)xs(this,o[n],s[n],t[n]);return this},Ss.cover=function(t,e){if(isNaN(t=+t)||isNaN(e=+e))return this;var n=this._x0,r=this._y0,i=this._x1,a=this._y1;if(isNaN(n))i=(n=Math.floor(t))+1,a=(r=Math.floor(e))+1;else{for(var o,s,u=i-n,c=this._root;n>t||t>=i||r>e||e>=a;)switch(s=(e<r)<<1|t<n,(o=new Array(4))[s]=c,c=o,u*=2,s){case 0:i=n+u,a=r+u;break;case 1:n=i-u,a=r+u;break;case 2:i=n+u,r=a-u;break;case 3:n=i-u,r=a-u}this._root&&this._root.length&&(this._root=c)}return this._x0=n,this._y0=r,this._x1=i,this._y1=a,this},Ss.data=function(){var t=[];return this.visit((function(e){if(!e.length)do{t.push(e.data)}while(e=e.next)})),t},Ss.extent=function(t){return arguments.length?this.cover(+t[0][0],+t[0][1]).cover(+t[1][0],+t[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]},Ss.find=function(t,e,n){var r,i,a,o,s,u,c,l=this._x0,f=this._y0,h=this._x1,d=this._y1,p=[],y=this._root;for(y&&p.push(new _s(y,l,f,h,d)),null==n?n=1/0:(l=t-n,f=e-n,h=t+n,d=e+n,n*=n);u=p.pop();)if(!(!(y=u.node)||(i=u.x0)>h||(a=u.y0)>d||(o=u.x1)<l||(s=u.y1)<f))if(y.length){var g=(i+o)/2,m=(a+s)/2;p.push(new _s(y[3],g,m,o,s),new _s(y[2],i,m,g,s),new _s(y[1],g,a,o,m),new _s(y[0],i,a,g,m)),(c=(e>=m)<<1|t>=g)&&(u=p[p.length-1],p[p.length-1]=p[p.length-1-c],p[p.length-1-c]=u)}else{var v=t-+this._x.call(null,y.data),b=e-+this._y.call(null,y.data),x=v*v+b*b;if(x<n){var _=Math.sqrt(n=x);l=t-_,f=e-_,h=t+_,d=e+_,r=y.data}}return r},Ss.remove=function(t){if(isNaN(a=+this._x.call(null,t))||isNaN(o=+this._y.call(null,t)))return this;var e,n,r,i,a,o,s,u,c,l,f,h,d=this._root,p=this._x0,y=this._y0,g=this._x1,m=this._y1;if(!d)return this;if(d.length)for(;;){if((c=a>=(s=(p+g)/2))?p=s:g=s,(l=o>=(u=(y+m)/2))?y=u:m=u,e=d,!(d=d[f=l<<1|c]))return this;if(!d.length)break;(e[f+1&3]||e[f+2&3]||e[f+3&3])&&(n=e,h=f)}for(;d.data!==t;)if(r=d,!(d=d.next))return this;return(i=d.next)&&delete d.next,r?(i?r.next=i:delete r.next,this):e?(i?e[f]=i:delete e[f],(d=e[0]||e[1]||e[2]||e[3])&&d===(e[3]||e[2]||e[1]||e[0])&&!d.length&&(n?n[h]=d:this._root=d),this):(this._root=i,this)},Ss.removeAll=function(t){for(var e=0,n=t.length;e<n;++e)this.remove(t[e]);return this},Ss.root=function(){return this._root},Ss.size=function(){var t=0;return this.visit((function(e){if(!e.length)do{++t}while(e=e.next)})),t},Ss.visit=function(t){var e,n,r,i,a,o,s=[],u=this._root;for(u&&s.push(new _s(u,this._x0,this._y0,this._x1,this._y1));e=s.pop();)if(!t(u=e.node,r=e.x0,i=e.y0,a=e.x1,o=e.y1)&&u.length){var c=(r+a)/2,l=(i+o)/2;(n=u[3])&&s.push(new _s(n,c,l,a,o)),(n=u[2])&&s.push(new _s(n,r,l,c,o)),(n=u[1])&&s.push(new _s(n,c,i,a,l)),(n=u[0])&&s.push(new _s(n,r,i,c,l))}return this},Ss.visitAfter=function(t){var e,n=[],r=[];for(this._root&&n.push(new _s(this._root,this._x0,this._y0,this._x1,this._y1));e=n.pop();){var i=e.node;if(i.length){var a,o=e.x0,s=e.y0,u=e.x1,c=e.y1,l=(o+u)/2,f=(s+c)/2;(a=i[0])&&n.push(new _s(a,o,s,l,f)),(a=i[1])&&n.push(new _s(a,l,s,u,f)),(a=i[2])&&n.push(new _s(a,o,f,l,c)),(a=i[3])&&n.push(new _s(a,l,f,u,c))}r.push(e)}for(;e=r.pop();)t(e.node,e.x0,e.y0,e.x1,e.y1);return this},Ss.x=function(t){return arguments.length?(this._x=t,this):this._x},Ss.y=function(t){return arguments.length?(this._y=t,this):this._y};var Ns=function(t){var e,n,r=1,i=1;function a(){for(var t,a,s,u,c,l,f,h=e.length,d=0;d<i;++d)for(a=Es(e,Ms,Os).visitAfter(o),t=0;t<h;++t)s=e[t],l=n[s.index],f=l*l,u=s.x+s.vx,c=s.y+s.vy,a.visit(p);function p(t,e,n,i,a){var o=t.data,h=t.r,d=l+h;if(!o)return e>u+d||i<u-d||n>c+d||a<c-d;if(o.index>s.index){var p=u-o.x-o.vx,y=c-o.y-o.vy,g=p*p+y*y;g<d*d&&(0===p&&(g+=(p=bs())*p),0===y&&(g+=(y=bs())*y),g=(d-(g=Math.sqrt(g)))/g*r,s.vx+=(p*=g)*(d=(h*=h)/(f+h)),s.vy+=(y*=g)*d,o.vx-=p*(d=1-d),o.vy-=y*d)}}}function o(t){if(t.data)return t.r=n[t.data.index];for(var e=t.r=0;e<4;++e)t[e]&&t[e].r>t.r&&(t.r=t[e].r)}function s(){if(e){var r,i,a=e.length;for(n=new Array(a),r=0;r<a;++r)i=e[r],n[i.index]=+t(i,r,e)}}return"function"!=typeof t&&(t=vs(null==t?1:+t)),a.initialize=function(t){e=t,s()},a.iterations=function(t){return arguments.length?(i=+t,a):i},a.strength=function(t){return arguments.length?(r=+t,a):r},a.radius=function(e){return arguments.length?(t="function"==typeof e?e:vs(+e),s(),a):t},a};function Cs(t){return t.index}function Ds(t,e){var n=t.get(e);if(!n)throw new Error("missing: "+e);return n}var Ls=function(t){var e,n,r,i,a,o=Cs,s=function(t){return 1/Math.min(i[t.source.index],i[t.target.index])},u=vs(30),c=1;function l(r){for(var i=0,o=t.length;i<c;++i)for(var s,u,l,f,h,d,p,y=0;y<o;++y)u=(s=t[y]).source,f=(l=s.target).x+l.vx-u.x-u.vx||bs(),h=l.y+l.vy-u.y-u.vy||bs(),f*=d=((d=Math.sqrt(f*f+h*h))-n[y])/d*r*e[y],h*=d,l.vx-=f*(p=a[y]),l.vy-=h*p,u.vx+=f*(p=1-p),u.vy+=h*p}function f(){if(r){var s,u,c=r.length,l=t.length,f=Ji(r,o);for(s=0,i=new Array(c);s<l;++s)(u=t[s]).index=s,"object"!=typeof u.source&&(u.source=Ds(f,u.source)),"object"!=typeof u.target&&(u.target=Ds(f,u.target)),i[u.source.index]=(i[u.source.index]||0)+1,i[u.target.index]=(i[u.target.index]||0)+1;for(s=0,a=new Array(l);s<l;++s)u=t[s],a[s]=i[u.source.index]/(i[u.source.index]+i[u.target.index]);e=new Array(l),h(),n=new Array(l),d()}}function h(){if(r)for(var n=0,i=t.length;n<i;++n)e[n]=+s(t[n],n,t)}function d(){if(r)for(var e=0,i=t.length;e<i;++e)n[e]=+u(t[e],e,t)}return null==t&&(t=[]),l.initialize=function(t){r=t,f()},l.links=function(e){return arguments.length?(t=e,f(),l):t},l.id=function(t){return arguments.length?(o=t,l):o},l.iterations=function(t){return arguments.length?(c=+t,l):c},l.strength=function(t){return arguments.length?(s="function"==typeof t?t:vs(+t),h(),l):s},l.distance=function(t){return arguments.length?(u="function"==typeof t?t:vs(+t),d(),l):u},l};function Fs(t){return t.x}function Is(t){return t.y}var Ps=Math.PI*(3-Math.sqrt(5)),Rs=function(t){var e,n=1,r=.001,i=1-Math.pow(r,1/300),a=0,o=.6,s=Ji(),u=Gn(l),c=lt("tick","end");function l(){f(),c.call("tick",e),n<r&&(u.stop(),c.call("end",e))}function f(r){var u,c,l=t.length;void 0===r&&(r=1);for(var f=0;f<r;++f)for(n+=(a-n)*i,s.each((function(t){t(n)})),u=0;u<l;++u)null==(c=t[u]).fx?c.x+=c.vx*=o:(c.x=c.fx,c.vx=0),null==c.fy?c.y+=c.vy*=o:(c.y=c.fy,c.vy=0);return e}function h(){for(var e,n=0,r=t.length;n<r;++n){if((e=t[n]).index=n,null!=e.fx&&(e.x=e.fx),null!=e.fy&&(e.y=e.fy),isNaN(e.x)||isNaN(e.y)){var i=10*Math.sqrt(n),a=n*Ps;e.x=i*Math.cos(a),e.y=i*Math.sin(a)}(isNaN(e.vx)||isNaN(e.vy))&&(e.vx=e.vy=0)}}function d(e){return e.initialize&&e.initialize(t),e}return null==t&&(t=[]),h(),e={tick:f,restart:function(){return u.restart(l),e},stop:function(){return u.stop(),e},nodes:function(n){return arguments.length?(t=n,h(),s.each(d),e):t},alpha:function(t){return arguments.length?(n=+t,e):n},alphaMin:function(t){return arguments.length?(r=+t,e):r},alphaDecay:function(t){return arguments.length?(i=+t,e):+i},alphaTarget:function(t){return arguments.length?(a=+t,e):a},velocityDecay:function(t){return arguments.length?(o=1-t,e):1-o},force:function(t,n){return arguments.length>1?(null==n?s.remove(t):s.set(t,d(n)),e):s.get(t)},find:function(e,n,r){var i,a,o,s,u,c=0,l=t.length;for(null==r?r=1/0:r*=r,c=0;c<l;++c)(o=(i=e-(s=t[c]).x)*i+(a=n-s.y)*a)<r&&(u=s,r=o);return u},on:function(t,n){return arguments.length>1?(c.on(t,n),e):c.on(t)}}},Bs=function(){var t,e,n,r,i=vs(-30),a=1,o=1/0,s=.81;function u(r){var i,a=t.length,o=Es(t,Fs,Is).visitAfter(l);for(n=r,i=0;i<a;++i)e=t[i],o.visit(f)}function c(){if(t){var e,n,a=t.length;for(r=new Array(a),e=0;e<a;++e)n=t[e],r[n.index]=+i(n,e,t)}}function l(t){var e,n,i,a,o,s=0,u=0;if(t.length){for(i=a=o=0;o<4;++o)(e=t[o])&&(n=Math.abs(e.value))&&(s+=e.value,u+=n,i+=n*e.x,a+=n*e.y);t.x=i/u,t.y=a/u}else{(e=t).x=e.data.x,e.y=e.data.y;do{s+=r[e.data.index]}while(e=e.next)}t.value=s}function f(t,i,u,c){if(!t.value)return!0;var l=t.x-e.x,f=t.y-e.y,h=c-i,d=l*l+f*f;if(h*h/s<d)return d<o&&(0===l&&(d+=(l=bs())*l),0===f&&(d+=(f=bs())*f),d<a&&(d=Math.sqrt(a*d)),e.vx+=l*t.value*n/d,e.vy+=f*t.value*n/d),!0;if(!(t.length||d>=o)){(t.data!==e||t.next)&&(0===l&&(d+=(l=bs())*l),0===f&&(d+=(f=bs())*f),d<a&&(d=Math.sqrt(a*d)));do{t.data!==e&&(h=r[t.data.index]*n/d,e.vx+=l*h,e.vy+=f*h)}while(t=t.next)}}return u.initialize=function(e){t=e,c()},u.strength=function(t){return arguments.length?(i="function"==typeof t?t:vs(+t),c(),u):i},u.distanceMin=function(t){return arguments.length?(a=t*t,u):Math.sqrt(a)},u.distanceMax=function(t){return arguments.length?(o=t*t,u):Math.sqrt(o)},u.theta=function(t){return arguments.length?(s=t*t,u):Math.sqrt(s)},u},js=function(t,e,n){var r,i,a,o=vs(.1);function s(t){for(var o=0,s=r.length;o<s;++o){var u=r[o],c=u.x-e||1e-6,l=u.y-n||1e-6,f=Math.sqrt(c*c+l*l),h=(a[o]-f)*i[o]*t/f;u.vx+=c*h,u.vy+=l*h}}function u(){if(r){var e,n=r.length;for(i=new Array(n),a=new Array(n),e=0;e<n;++e)a[e]=+t(r[e],e,r),i[e]=isNaN(a[e])?0:+o(r[e],e,r)}}return"function"!=typeof t&&(t=vs(+t)),null==e&&(e=0),null==n&&(n=0),s.initialize=function(t){r=t,u()},s.strength=function(t){return arguments.length?(o="function"==typeof t?t:vs(+t),u(),s):o},s.radius=function(e){return arguments.length?(t="function"==typeof e?e:vs(+e),u(),s):t},s.x=function(t){return arguments.length?(e=+t,s):e},s.y=function(t){return arguments.length?(n=+t,s):n},s},Ys=function(t){var e,n,r,i=vs(.1);function a(t){for(var i,a=0,o=e.length;a<o;++a)(i=e[a]).vx+=(r[a]-i.x)*n[a]*t}function o(){if(e){var a,o=e.length;for(n=new Array(o),r=new Array(o),a=0;a<o;++a)n[a]=isNaN(r[a]=+t(e[a],a,e))?0:+i(e[a],a,e)}}return"function"!=typeof t&&(t=vs(null==t?0:+t)),a.initialize=function(t){e=t,o()},a.strength=function(t){return arguments.length?(i="function"==typeof t?t:vs(+t),o(),a):i},a.x=function(e){return arguments.length?(t="function"==typeof e?e:vs(+e),o(),a):t},a},zs=function(t){var e,n,r,i=vs(.1);function a(t){for(var i,a=0,o=e.length;a<o;++a)(i=e[a]).vy+=(r[a]-i.y)*n[a]*t}function o(){if(e){var a,o=e.length;for(n=new Array(o),r=new Array(o),a=0;a<o;++a)n[a]=isNaN(r[a]=+t(e[a],a,e))?0:+i(e[a],a,e)}}return"function"!=typeof t&&(t=vs(null==t?0:+t)),a.initialize=function(t){e=t,o()},a.strength=function(t){return arguments.length?(i="function"==typeof t?t:vs(+t),o(),a):i},a.y=function(e){return arguments.length?(t="function"==typeof e?e:vs(+e),o(),a):t},a},Us=function(t,e){if((n=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var n,r=t.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+t.slice(n+1)]},$s=function(t){return(t=Us(Math.abs(t)))?t[1]:NaN},Gs=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Vs(t){if(!(e=Gs.exec(t)))throw new Error("invalid format: "+t);var e;return new Hs({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}function Hs(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}Vs.prototype=Hs.prototype,Hs.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};var Ws,qs,Xs,Zs,Js=function(t,e){var n=Us(t,e);if(!n)return t+"";var r=n[0],i=n[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")},Qs={"%":function(t,e){return(100*t).toFixed(e)},b:function(t){return Math.round(t).toString(2)},c:function(t){return t+""},d:function(t){return Math.round(t).toString(10)},e:function(t,e){return t.toExponential(e)},f:function(t,e){return t.toFixed(e)},g:function(t,e){return t.toPrecision(e)},o:function(t){return Math.round(t).toString(8)},p:function(t,e){return Js(100*t,e)},r:Js,s:function(t,e){var n=Us(t,e);if(!n)return t+"";var r=n[0],i=n[1],a=i-(Ws=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,o=r.length;return a===o?r:a>o?r+new Array(a-o+1).join("0"):a>0?r.slice(0,a)+"."+r.slice(a):"0."+new Array(1-a).join("0")+Us(t,Math.max(0,e+a-1))[0]},X:function(t){return Math.round(t).toString(16).toUpperCase()},x:function(t){return Math.round(t).toString(16)}},Ks=function(t){return t},tu=Array.prototype.map,eu=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"],nu=function(t){var e,n,r=void 0===t.grouping||void 0===t.thousands?Ks:(e=tu.call(t.grouping,Number),n=t.thousands+"",function(t,r){for(var i=t.length,a=[],o=0,s=e[0],u=0;i>0&&s>0&&(u+s+1>r&&(s=Math.max(1,r-u)),a.push(t.substring(i-=s,i+s)),!((u+=s+1)>r));)s=e[o=(o+1)%e.length];return a.reverse().join(n)}),i=void 0===t.currency?"":t.currency[0]+"",a=void 0===t.currency?"":t.currency[1]+"",o=void 0===t.decimal?".":t.decimal+"",s=void 0===t.numerals?Ks:function(t){return function(e){return e.replace(/[0-9]/g,(function(e){return t[+e]}))}}(tu.call(t.numerals,String)),u=void 0===t.percent?"%":t.percent+"",c=void 0===t.minus?"-":t.minus+"",l=void 0===t.nan?"NaN":t.nan+"";function f(t){var e=(t=Vs(t)).fill,n=t.align,f=t.sign,h=t.symbol,d=t.zero,p=t.width,y=t.comma,g=t.precision,m=t.trim,v=t.type;"n"===v?(y=!0,v="g"):Qs[v]||(void 0===g&&(g=12),m=!0,v="g"),(d||"0"===e&&"="===n)&&(d=!0,e="0",n="=");var b="$"===h?i:"#"===h&&/[boxX]/.test(v)?"0"+v.toLowerCase():"",x="$"===h?a:/[%p]/.test(v)?u:"",_=Qs[v],w=/[defgprs%]/.test(v);function k(t){var i,a,u,h=b,k=x;if("c"===v)k=_(t)+k,t="";else{var E=(t=+t)<0;if(t=isNaN(t)?l:_(Math.abs(t),g),m&&(t=function(t){t:for(var e,n=t.length,r=1,i=-1;r<n;++r)switch(t[r]){case".":i=e=r;break;case"0":0===i&&(i=r),e=r;break;default:if(!+t[r])break t;i>0&&(i=0)}return i>0?t.slice(0,i)+t.slice(e+1):t}(t)),E&&0==+t&&(E=!1),h=(E?"("===f?f:c:"-"===f||"("===f?"":f)+h,k=("s"===v?eu[8+Ws/3]:"")+k+(E&&"("===f?")":""),w)for(i=-1,a=t.length;++i<a;)if(48>(u=t.charCodeAt(i))||u>57){k=(46===u?o+t.slice(i+1):t.slice(i))+k,t=t.slice(0,i);break}}y&&!d&&(t=r(t,1/0));var A=h.length+t.length+k.length,T=A<p?new Array(p-A+1).join(e):"";switch(y&&d&&(t=r(T+t,T.length?p-k.length:1/0),T=""),n){case"<":t=h+t+k+T;break;case"=":t=h+T+t+k;break;case"^":t=T.slice(0,A=T.length>>1)+h+t+k+T.slice(A);break;default:t=T+h+t+k}return s(t)}return g=void 0===g?6:/[gprs]/.test(v)?Math.max(1,Math.min(21,g)):Math.max(0,Math.min(20,g)),k.toString=function(){return t+""},k}return{format:f,formatPrefix:function(t,e){var n=f(((t=Vs(t)).type="f",t)),r=3*Math.max(-8,Math.min(8,Math.floor($s(e)/3))),i=Math.pow(10,-r),a=eu[8+r/3];return function(t){return n(i*t)+a}}}};function ru(t){return qs=nu(t),Xs=qs.format,Zs=qs.formatPrefix,qs}ru({decimal:".",thousands:",",grouping:[3],currency:["$",""],minus:"-"});var iu=function(t){return Math.max(0,-$s(Math.abs(t)))},au=function(t,e){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor($s(e)/3)))-$s(Math.abs(t)))},ou=function(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,$s(e)-$s(t))+1},su=function(){return new uu};function uu(){this.reset()}uu.prototype={constructor:uu,reset:function(){this.s=this.t=0},add:function(t){lu(cu,t,this.t),lu(this,cu.s,this.s),this.s?this.t+=cu.t:this.s=cu.t},valueOf:function(){return this.s}};var cu=new uu;function lu(t,e,n){var r=t.s=e+n,i=r-e,a=r-i;t.t=e-a+(n-i)}var fu=Math.PI,hu=fu/2,du=fu/4,pu=2*fu,yu=180/fu,gu=fu/180,mu=Math.abs,vu=Math.atan,bu=Math.atan2,xu=Math.cos,_u=Math.ceil,wu=Math.exp,ku=(Math.floor,Math.log),Eu=Math.pow,Au=Math.sin,Tu=Math.sign||function(t){return t>0?1:t<0?-1:0},Su=Math.sqrt,Mu=Math.tan;function Ou(t){return t>1?0:t<-1?fu:Math.acos(t)}function Nu(t){return t>1?hu:t<-1?-hu:Math.asin(t)}function Cu(t){return(t=Au(t/2))*t}function Du(){}function Lu(t,e){t&&Iu.hasOwnProperty(t.type)&&Iu[t.type](t,e)}var Fu={Feature:function(t,e){Lu(t.geometry,e)},FeatureCollection:function(t,e){for(var n=t.features,r=-1,i=n.length;++r<i;)Lu(n[r].geometry,e)}},Iu={Sphere:function(t,e){e.sphere()},Point:function(t,e){t=t.coordinates,e.point(t[0],t[1],t[2])},MultiPoint:function(t,e){for(var n=t.coordinates,r=-1,i=n.length;++r<i;)t=n[r],e.point(t[0],t[1],t[2])},LineString:function(t,e){Pu(t.coordinates,e,0)},MultiLineString:function(t,e){for(var n=t.coordinates,r=-1,i=n.length;++r<i;)Pu(n[r],e,0)},Polygon:function(t,e){Ru(t.coordinates,e)},MultiPolygon:function(t,e){for(var n=t.coordinates,r=-1,i=n.length;++r<i;)Ru(n[r],e)},GeometryCollection:function(t,e){for(var n=t.geometries,r=-1,i=n.length;++r<i;)Lu(n[r],e)}};function Pu(t,e,n){var r,i=-1,a=t.length-n;for(e.lineStart();++i<a;)r=t[i],e.point(r[0],r[1],r[2]);e.lineEnd()}function Ru(t,e){var n=-1,r=t.length;for(e.polygonStart();++n<r;)Pu(t[n],e,1);e.polygonEnd()}var Bu,ju,Yu,zu,Uu,$u=function(t,e){t&&Fu.hasOwnProperty(t.type)?Fu[t.type](t,e):Lu(t,e)},Gu=su(),Vu=su(),Hu={point:Du,lineStart:Du,lineEnd:Du,polygonStart:function(){Gu.reset(),Hu.lineStart=Wu,Hu.lineEnd=qu},polygonEnd:function(){var t=+Gu;Vu.add(t<0?pu+t:t),this.lineStart=this.lineEnd=this.point=Du},sphere:function(){Vu.add(pu)}};function Wu(){Hu.point=Xu}function qu(){Zu(Bu,ju)}function Xu(t,e){Hu.point=Zu,Bu=t,ju=e,Yu=t*=gu,zu=xu(e=(e*=gu)/2+du),Uu=Au(e)}function Zu(t,e){var n=(t*=gu)-Yu,r=n>=0?1:-1,i=r*n,a=xu(e=(e*=gu)/2+du),o=Au(e),s=Uu*o,u=zu*a+s*xu(i),c=s*r*Au(i);Gu.add(bu(c,u)),Yu=t,zu=a,Uu=o}var Ju=function(t){return Vu.reset(),$u(t,Hu),2*Vu};function Qu(t){return[bu(t[1],t[0]),Nu(t[2])]}function Ku(t){var e=t[0],n=t[1],r=xu(n);return[r*xu(e),r*Au(e),Au(n)]}function tc(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function ec(t,e){return[t[1]*e[2]-t[2]*e[1],t[2]*e[0]-t[0]*e[2],t[0]*e[1]-t[1]*e[0]]}function nc(t,e){t[0]+=e[0],t[1]+=e[1],t[2]+=e[2]}function rc(t,e){return[t[0]*e,t[1]*e,t[2]*e]}function ic(t){var e=Su(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=e,t[1]/=e,t[2]/=e}var ac,oc,sc,uc,cc,lc,fc,hc,dc,pc,yc=su(),gc={point:mc,lineStart:bc,lineEnd:xc,polygonStart:function(){gc.point=_c,gc.lineStart=wc,gc.lineEnd=kc,yc.reset(),Hu.polygonStart()},polygonEnd:function(){Hu.polygonEnd(),gc.point=mc,gc.lineStart=bc,gc.lineEnd=xc,Gu<0?(ac=-(sc=180),oc=-(uc=90)):yc>1e-6?uc=90:yc<-1e-6&&(oc=-90),pc[0]=ac,pc[1]=sc},sphere:function(){ac=-(sc=180),oc=-(uc=90)}};function mc(t,e){dc.push(pc=[ac=t,sc=t]),e<oc&&(oc=e),e>uc&&(uc=e)}function vc(t,e){var n=Ku([t*gu,e*gu]);if(hc){var r=ec(hc,n),i=ec([r[1],-r[0],0],r);ic(i),i=Qu(i);var a,o=t-cc,s=o>0?1:-1,u=i[0]*yu*s,c=mu(o)>180;c^(s*cc<u&&u<s*t)?(a=i[1]*yu)>uc&&(uc=a):c^(s*cc<(u=(u+360)%360-180)&&u<s*t)?(a=-i[1]*yu)<oc&&(oc=a):(e<oc&&(oc=e),e>uc&&(uc=e)),c?t<cc?Ec(ac,t)>Ec(ac,sc)&&(sc=t):Ec(t,sc)>Ec(ac,sc)&&(ac=t):sc>=ac?(t<ac&&(ac=t),t>sc&&(sc=t)):t>cc?Ec(ac,t)>Ec(ac,sc)&&(sc=t):Ec(t,sc)>Ec(ac,sc)&&(ac=t)}else dc.push(pc=[ac=t,sc=t]);e<oc&&(oc=e),e>uc&&(uc=e),hc=n,cc=t}function bc(){gc.point=vc}function xc(){pc[0]=ac,pc[1]=sc,gc.point=mc,hc=null}function _c(t,e){if(hc){var n=t-cc;yc.add(mu(n)>180?n+(n>0?360:-360):n)}else lc=t,fc=e;Hu.point(t,e),vc(t,e)}function wc(){Hu.lineStart()}function kc(){_c(lc,fc),Hu.lineEnd(),mu(yc)>1e-6&&(ac=-(sc=180)),pc[0]=ac,pc[1]=sc,hc=null}function Ec(t,e){return(e-=t)<0?e+360:e}function Ac(t,e){return t[0]-e[0]}function Tc(t,e){return t[0]<=t[1]?t[0]<=e&&e<=t[1]:e<t[0]||t[1]<e}var Sc,Mc,Oc,Nc,Cc,Dc,Lc,Fc,Ic,Pc,Rc,Bc,jc,Yc,zc,Uc,$c=function(t){var e,n,r,i,a,o,s;if(uc=sc=-(ac=oc=1/0),dc=[],$u(t,gc),n=dc.length){for(dc.sort(Ac),e=1,a=[r=dc[0]];e<n;++e)Tc(r,(i=dc[e])[0])||Tc(r,i[1])?(Ec(r[0],i[1])>Ec(r[0],r[1])&&(r[1]=i[1]),Ec(i[0],r[1])>Ec(r[0],r[1])&&(r[0]=i[0])):a.push(r=i);for(o=-1/0,e=0,r=a[n=a.length-1];e<=n;r=i,++e)i=a[e],(s=Ec(r[1],i[0]))>o&&(o=s,ac=i[0],sc=r[1])}return dc=pc=null,ac===1/0||oc===1/0?[[NaN,NaN],[NaN,NaN]]:[[ac,oc],[sc,uc]]},Gc={sphere:Du,point:Vc,lineStart:Wc,lineEnd:Zc,polygonStart:function(){Gc.lineStart=Jc,Gc.lineEnd=Qc},polygonEnd:function(){Gc.lineStart=Wc,Gc.lineEnd=Zc}};function Vc(t,e){t*=gu;var n=xu(e*=gu);Hc(n*xu(t),n*Au(t),Au(e))}function Hc(t,e,n){++Sc,Oc+=(t-Oc)/Sc,Nc+=(e-Nc)/Sc,Cc+=(n-Cc)/Sc}function Wc(){Gc.point=qc}function qc(t,e){t*=gu;var n=xu(e*=gu);Yc=n*xu(t),zc=n*Au(t),Uc=Au(e),Gc.point=Xc,Hc(Yc,zc,Uc)}function Xc(t,e){t*=gu;var n=xu(e*=gu),r=n*xu(t),i=n*Au(t),a=Au(e),o=bu(Su((o=zc*a-Uc*i)*o+(o=Uc*r-Yc*a)*o+(o=Yc*i-zc*r)*o),Yc*r+zc*i+Uc*a);Mc+=o,Dc+=o*(Yc+(Yc=r)),Lc+=o*(zc+(zc=i)),Fc+=o*(Uc+(Uc=a)),Hc(Yc,zc,Uc)}function Zc(){Gc.point=Vc}function Jc(){Gc.point=Kc}function Qc(){tl(Bc,jc),Gc.point=Vc}function Kc(t,e){Bc=t,jc=e,t*=gu,e*=gu,Gc.point=tl;var n=xu(e);Yc=n*xu(t),zc=n*Au(t),Uc=Au(e),Hc(Yc,zc,Uc)}function tl(t,e){t*=gu;var n=xu(e*=gu),r=n*xu(t),i=n*Au(t),a=Au(e),o=zc*a-Uc*i,s=Uc*r-Yc*a,u=Yc*i-zc*r,c=Su(o*o+s*s+u*u),l=Nu(c),f=c&&-l/c;Ic+=f*o,Pc+=f*s,Rc+=f*u,Mc+=l,Dc+=l*(Yc+(Yc=r)),Lc+=l*(zc+(zc=i)),Fc+=l*(Uc+(Uc=a)),Hc(Yc,zc,Uc)}var el=function(t){Sc=Mc=Oc=Nc=Cc=Dc=Lc=Fc=Ic=Pc=Rc=0,$u(t,Gc);var e=Ic,n=Pc,r=Rc,i=e*e+n*n+r*r;return i<1e-12&&(e=Dc,n=Lc,r=Fc,Mc<1e-6&&(e=Oc,n=Nc,r=Cc),(i=e*e+n*n+r*r)<1e-12)?[NaN,NaN]:[bu(n,e)*yu,Nu(r/Su(i))*yu]},nl=function(t){return function(){return t}},rl=function(t,e){function n(n,r){return n=t(n,r),e(n[0],n[1])}return t.invert&&e.invert&&(n.invert=function(n,r){return(n=e.invert(n,r))&&t.invert(n[0],n[1])}),n};function il(t,e){return[mu(t)>fu?t+Math.round(-t/pu)*pu:t,e]}function al(t,e,n){return(t%=pu)?e||n?rl(sl(t),ul(e,n)):sl(t):e||n?ul(e,n):il}function ol(t){return function(e,n){return[(e+=t)>fu?e-pu:e<-fu?e+pu:e,n]}}function sl(t){var e=ol(t);return e.invert=ol(-t),e}function ul(t,e){var n=xu(t),r=Au(t),i=xu(e),a=Au(e);function o(t,e){var o=xu(e),s=xu(t)*o,u=Au(t)*o,c=Au(e),l=c*n+s*r;return[bu(u*i-l*a,s*n-c*r),Nu(l*i+u*a)]}return o.invert=function(t,e){var o=xu(e),s=xu(t)*o,u=Au(t)*o,c=Au(e),l=c*i-u*a;return[bu(u*i+c*a,s*n+l*r),Nu(l*n-s*r)]},o}il.invert=il;var cl=function(t){function e(e){return(e=t(e[0]*gu,e[1]*gu))[0]*=yu,e[1]*=yu,e}return t=al(t[0]*gu,t[1]*gu,t.length>2?t[2]*gu:0),e.invert=function(e){return(e=t.invert(e[0]*gu,e[1]*gu))[0]*=yu,e[1]*=yu,e},e};function ll(t,e,n,r,i,a){if(n){var o=xu(e),s=Au(e),u=r*n;null==i?(i=e+r*pu,a=e-u/2):(i=fl(o,i),a=fl(o,a),(r>0?i<a:i>a)&&(i+=r*pu));for(var c,l=i;r>0?l>a:l<a;l-=u)c=Qu([o,-s*xu(l),-s*Au(l)]),t.point(c[0],c[1])}}function fl(t,e){(e=Ku(e))[0]-=t,ic(e);var n=Ou(-e[1]);return((-e[2]<0?-n:n)+pu-1e-6)%pu}var hl=function(){var t,e,n=nl([0,0]),r=nl(90),i=nl(6),a={point:function(n,r){t.push(n=e(n,r)),n[0]*=yu,n[1]*=yu}};function o(){var o=n.apply(this,arguments),s=r.apply(this,arguments)*gu,u=i.apply(this,arguments)*gu;return t=[],e=al(-o[0]*gu,-o[1]*gu,0).invert,ll(a,s,u,1),o={type:"Polygon",coordinates:[t]},t=e=null,o}return o.center=function(t){return arguments.length?(n="function"==typeof t?t:nl([+t[0],+t[1]]),o):n},o.radius=function(t){return arguments.length?(r="function"==typeof t?t:nl(+t),o):r},o.precision=function(t){return arguments.length?(i="function"==typeof t?t:nl(+t),o):i},o},dl=function(){var t,e=[];return{point:function(e,n){t.push([e,n])},lineStart:function(){e.push(t=[])},lineEnd:Du,rejoin:function(){e.length>1&&e.push(e.pop().concat(e.shift()))},result:function(){var n=e;return e=[],t=null,n}}},pl=function(t,e){return mu(t[0]-e[0])<1e-6&&mu(t[1]-e[1])<1e-6};function yl(t,e,n,r){this.x=t,this.z=e,this.o=n,this.e=r,this.v=!1,this.n=this.p=null}var gl=function(t,e,n,r,i){var a,o,s=[],u=[];if(t.forEach((function(t){if(!((e=t.length-1)<=0)){var e,n,r=t[0],o=t[e];if(pl(r,o)){for(i.lineStart(),a=0;a<e;++a)i.point((r=t[a])[0],r[1]);i.lineEnd()}else s.push(n=new yl(r,t,null,!0)),u.push(n.o=new yl(r,null,n,!1)),s.push(n=new yl(o,t,null,!1)),u.push(n.o=new yl(o,null,n,!0))}})),s.length){for(u.sort(e),ml(s),ml(u),a=0,o=u.length;a<o;++a)u[a].e=n=!n;for(var c,l,f=s[0];;){for(var h=f,d=!0;h.v;)if((h=h.n)===f)return;c=h.z,i.lineStart();do{if(h.v=h.o.v=!0,h.e){if(d)for(a=0,o=c.length;a<o;++a)i.point((l=c[a])[0],l[1]);else r(h.x,h.n.x,1,i);h=h.n}else{if(d)for(c=h.p.z,a=c.length-1;a>=0;--a)i.point((l=c[a])[0],l[1]);else r(h.x,h.p.x,-1,i);h=h.p}c=(h=h.o).z,d=!d}while(!h.v);i.lineEnd()}}};function ml(t){if(e=t.length){for(var e,n,r=0,i=t[0];++r<e;)i.n=n=t[r],n.p=i,i=n;i.n=n=t[0],n.p=i}}var vl=su();function bl(t){return mu(t[0])<=fu?t[0]:Tu(t[0])*((mu(t[0])+fu)%pu-fu)}var xl=function(t,e){var n=bl(e),r=e[1],i=Au(r),a=[Au(n),-xu(n),0],o=0,s=0;vl.reset(),1===i?r=hu+1e-6:-1===i&&(r=-hu-1e-6);for(var u=0,c=t.length;u<c;++u)if(f=(l=t[u]).length)for(var l,f,h=l[f-1],d=bl(h),p=h[1]/2+du,y=Au(p),g=xu(p),m=0;m<f;++m,d=b,y=_,g=w,h=v){var v=l[m],b=bl(v),x=v[1]/2+du,_=Au(x),w=xu(x),k=b-d,E=k>=0?1:-1,A=E*k,T=A>fu,S=y*_;if(vl.add(bu(S*E*Au(A),g*w+S*xu(A))),o+=T?k+E*pu:k,T^d>=n^b>=n){var M=ec(Ku(h),Ku(v));ic(M);var O=ec(a,M);ic(O);var N=(T^k>=0?-1:1)*Nu(O[2]);(r>N||r===N&&(M[0]||M[1]))&&(s+=T^k>=0?1:-1)}}return(o<-1e-6||o<1e-6&&vl<-1e-6)^1&s},_l=function(t,e,n,r){return function(i){var a,o,s,u=e(i),c=dl(),l=e(c),f=!1,h={point:d,lineStart:y,lineEnd:g,polygonStart:function(){h.point=m,h.lineStart=v,h.lineEnd=b,o=[],a=[]},polygonEnd:function(){h.point=d,h.lineStart=y,h.lineEnd=g,o=R(o);var t=xl(a,r);o.length?(f||(i.polygonStart(),f=!0),gl(o,kl,t,n,i)):t&&(f||(i.polygonStart(),f=!0),i.lineStart(),n(null,null,1,i),i.lineEnd()),f&&(i.polygonEnd(),f=!1),o=a=null},sphere:function(){i.polygonStart(),i.lineStart(),n(null,null,1,i),i.lineEnd(),i.polygonEnd()}};function d(e,n){t(e,n)&&i.point(e,n)}function p(t,e){u.point(t,e)}function y(){h.point=p,u.lineStart()}function g(){h.point=d,u.lineEnd()}function m(t,e){s.push([t,e]),l.point(t,e)}function v(){l.lineStart(),s=[]}function b(){m(s[0][0],s[0][1]),l.lineEnd();var t,e,n,r,u=l.clean(),h=c.result(),d=h.length;if(s.pop(),a.push(s),s=null,d)if(1&u){if((e=(n=h[0]).length-1)>0){for(f||(i.polygonStart(),f=!0),i.lineStart(),t=0;t<e;++t)i.point((r=n[t])[0],r[1]);i.lineEnd()}}else d>1&&2&u&&h.push(h.pop().concat(h.shift())),o.push(h.filter(wl))}return h}};function wl(t){return t.length>1}function kl(t,e){return((t=t.x)[0]<0?t[1]-hu-1e-6:hu-t[1])-((e=e.x)[0]<0?e[1]-hu-1e-6:hu-e[1])}var El=_l((function(){return!0}),(function(t){var e,n=NaN,r=NaN,i=NaN;return{lineStart:function(){t.lineStart(),e=1},point:function(a,o){var s=a>0?fu:-fu,u=mu(a-n);mu(u-fu)<1e-6?(t.point(n,r=(r+o)/2>0?hu:-hu),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(s,r),t.point(a,r),e=0):i!==s&&u>=fu&&(mu(n-i)<1e-6&&(n-=1e-6*i),mu(a-s)<1e-6&&(a-=1e-6*s),r=function(t,e,n,r){var i,a,o=Au(t-n);return mu(o)>1e-6?vu((Au(e)*(a=xu(r))*Au(n)-Au(r)*(i=xu(e))*Au(t))/(i*a*o)):(e+r)/2}(n,r,a,o),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(s,r),e=0),t.point(n=a,r=o),i=s},lineEnd:function(){t.lineEnd(),n=r=NaN},clean:function(){return 2-e}}}),(function(t,e,n,r){var i;if(null==t)i=n*hu,r.point(-fu,i),r.point(0,i),r.point(fu,i),r.point(fu,0),r.point(fu,-i),r.point(0,-i),r.point(-fu,-i),r.point(-fu,0),r.point(-fu,i);else if(mu(t[0]-e[0])>1e-6){var a=t[0]<e[0]?fu:-fu;i=n*a/2,r.point(-a,i),r.point(0,i),r.point(a,i)}else r.point(e[0],e[1])}),[-fu,-hu]);var Al=function(t){var e=xu(t),n=6*gu,r=e>0,i=mu(e)>1e-6;function a(t,n){return xu(t)*xu(n)>e}function o(t,n,r){var i=[1,0,0],a=ec(Ku(t),Ku(n)),o=tc(a,a),s=a[0],u=o-s*s;if(!u)return!r&&t;var c=e*o/u,l=-e*s/u,f=ec(i,a),h=rc(i,c);nc(h,rc(a,l));var d=f,p=tc(h,d),y=tc(d,d),g=p*p-y*(tc(h,h)-1);if(!(g<0)){var m=Su(g),v=rc(d,(-p-m)/y);if(nc(v,h),v=Qu(v),!r)return v;var b,x=t[0],_=n[0],w=t[1],k=n[1];_<x&&(b=x,x=_,_=b);var E=_-x,A=mu(E-fu)<1e-6;if(!A&&k<w&&(b=w,w=k,k=b),A||E<1e-6?A?w+k>0^v[1]<(mu(v[0]-x)<1e-6?w:k):w<=v[1]&&v[1]<=k:E>fu^(x<=v[0]&&v[0]<=_)){var T=rc(d,(-p+m)/y);return nc(T,h),[v,Qu(T)]}}}function s(e,n){var i=r?t:fu-t,a=0;return e<-i?a|=1:e>i&&(a|=2),n<-i?a|=4:n>i&&(a|=8),a}return _l(a,(function(t){var e,n,u,c,l;return{lineStart:function(){c=u=!1,l=1},point:function(f,h){var d,p=[f,h],y=a(f,h),g=r?y?0:s(f,h):y?s(f+(f<0?fu:-fu),h):0;if(!e&&(c=u=y)&&t.lineStart(),y!==u&&(!(d=o(e,p))||pl(e,d)||pl(p,d))&&(p[0]+=1e-6,p[1]+=1e-6,y=a(p[0],p[1])),y!==u)l=0,y?(t.lineStart(),d=o(p,e),t.point(d[0],d[1])):(d=o(e,p),t.point(d[0],d[1]),t.lineEnd()),e=d;else if(i&&e&&r^y){var m;g&n||!(m=o(p,e,!0))||(l=0,r?(t.lineStart(),t.point(m[0][0],m[0][1]),t.point(m[1][0],m[1][1]),t.lineEnd()):(t.point(m[1][0],m[1][1]),t.lineEnd(),t.lineStart(),t.point(m[0][0],m[0][1])))}!y||e&&pl(e,p)||t.point(p[0],p[1]),e=p,u=y,n=g},lineEnd:function(){u&&t.lineEnd(),e=null},clean:function(){return l|(c&&u)<<1}}}),(function(e,r,i,a){ll(a,t,n,i,e,r)}),r?[0,-t]:[-fu,t-fu])};function Tl(t,e,n,r){function i(i,a){return t<=i&&i<=n&&e<=a&&a<=r}function a(i,a,s,c){var l=0,f=0;if(null==i||(l=o(i,s))!==(f=o(a,s))||u(i,a)<0^s>0)do{c.point(0===l||3===l?t:n,l>1?r:e)}while((l=(l+s+4)%4)!==f);else c.point(a[0],a[1])}function o(r,i){return mu(r[0]-t)<1e-6?i>0?0:3:mu(r[0]-n)<1e-6?i>0?2:1:mu(r[1]-e)<1e-6?i>0?1:0:i>0?3:2}function s(t,e){return u(t.x,e.x)}function u(t,e){var n=o(t,1),r=o(e,1);return n!==r?n-r:0===n?e[1]-t[1]:1===n?t[0]-e[0]:2===n?t[1]-e[1]:e[0]-t[0]}return function(o){var u,c,l,f,h,d,p,y,g,m,v,b=o,x=dl(),_={point:w,lineStart:function(){_.point=k,c&&c.push(l=[]);m=!0,g=!1,p=y=NaN},lineEnd:function(){u&&(k(f,h),d&&g&&x.rejoin(),u.push(x.result()));_.point=w,g&&b.lineEnd()},polygonStart:function(){b=x,u=[],c=[],v=!0},polygonEnd:function(){var e=function(){for(var e=0,n=0,i=c.length;n<i;++n)for(var a,o,s=c[n],u=1,l=s.length,f=s[0],h=f[0],d=f[1];u<l;++u)a=h,o=d,f=s[u],h=f[0],d=f[1],o<=r?d>r&&(h-a)*(r-o)>(d-o)*(t-a)&&++e:d<=r&&(h-a)*(r-o)<(d-o)*(t-a)&&--e;return e}(),n=v&&e,i=(u=R(u)).length;(n||i)&&(o.polygonStart(),n&&(o.lineStart(),a(null,null,1,o),o.lineEnd()),i&&gl(u,s,e,a,o),o.polygonEnd());b=o,u=c=l=null}};function w(t,e){i(t,e)&&b.point(t,e)}function k(a,o){var s=i(a,o);if(c&&l.push([a,o]),m)f=a,h=o,d=s,m=!1,s&&(b.lineStart(),b.point(a,o));else if(s&&g)b.point(a,o);else{var u=[p=Math.max(-1e9,Math.min(1e9,p)),y=Math.max(-1e9,Math.min(1e9,y))],x=[a=Math.max(-1e9,Math.min(1e9,a)),o=Math.max(-1e9,Math.min(1e9,o))];!function(t,e,n,r,i,a){var o,s=t[0],u=t[1],c=0,l=1,f=e[0]-s,h=e[1]-u;if(o=n-s,f||!(o>0)){if(o/=f,f<0){if(o<c)return;o<l&&(l=o)}else if(f>0){if(o>l)return;o>c&&(c=o)}if(o=i-s,f||!(o<0)){if(o/=f,f<0){if(o>l)return;o>c&&(c=o)}else if(f>0){if(o<c)return;o<l&&(l=o)}if(o=r-u,h||!(o>0)){if(o/=h,h<0){if(o<c)return;o<l&&(l=o)}else if(h>0){if(o>l)return;o>c&&(c=o)}if(o=a-u,h||!(o<0)){if(o/=h,h<0){if(o>l)return;o>c&&(c=o)}else if(h>0){if(o<c)return;o<l&&(l=o)}return c>0&&(t[0]=s+c*f,t[1]=u+c*h),l<1&&(e[0]=s+l*f,e[1]=u+l*h),!0}}}}}(u,x,t,e,n,r)?s&&(b.lineStart(),b.point(a,o),v=!1):(g||(b.lineStart(),b.point(u[0],u[1])),b.point(x[0],x[1]),s||b.lineEnd(),v=!1)}p=a,y=o,g=s}return _}}var Sl,Ml,Ol,Nl=function(){var t,e,n,r=0,i=0,a=960,o=500;return n={stream:function(n){return t&&e===n?t:t=Tl(r,i,a,o)(e=n)},extent:function(s){return arguments.length?(r=+s[0][0],i=+s[0][1],a=+s[1][0],o=+s[1][1],t=e=null,n):[[r,i],[a,o]]}}},Cl=su(),Dl={sphere:Du,point:Du,lineStart:function(){Dl.point=Fl,Dl.lineEnd=Ll},lineEnd:Du,polygonStart:Du,polygonEnd:Du};function Ll(){Dl.point=Dl.lineEnd=Du}function Fl(t,e){Sl=t*=gu,Ml=Au(e*=gu),Ol=xu(e),Dl.point=Il}function Il(t,e){t*=gu;var n=Au(e*=gu),r=xu(e),i=mu(t-Sl),a=xu(i),o=r*Au(i),s=Ol*n-Ml*r*a,u=Ml*n+Ol*r*a;Cl.add(bu(Su(o*o+s*s),u)),Sl=t,Ml=n,Ol=r}var Pl=function(t){return Cl.reset(),$u(t,Dl),+Cl},Rl=[null,null],Bl={type:"LineString",coordinates:Rl},jl=function(t,e){return Rl[0]=t,Rl[1]=e,Pl(Bl)},Yl={Feature:function(t,e){return Ul(t.geometry,e)},FeatureCollection:function(t,e){for(var n=t.features,r=-1,i=n.length;++r<i;)if(Ul(n[r].geometry,e))return!0;return!1}},zl={Sphere:function(){return!0},Point:function(t,e){return $l(t.coordinates,e)},MultiPoint:function(t,e){for(var n=t.coordinates,r=-1,i=n.length;++r<i;)if($l(n[r],e))return!0;return!1},LineString:function(t,e){return Gl(t.coordinates,e)},MultiLineString:function(t,e){for(var n=t.coordinates,r=-1,i=n.length;++r<i;)if(Gl(n[r],e))return!0;return!1},Polygon:function(t,e){return Vl(t.coordinates,e)},MultiPolygon:function(t,e){for(var n=t.coordinates,r=-1,i=n.length;++r<i;)if(Vl(n[r],e))return!0;return!1},GeometryCollection:function(t,e){for(var n=t.geometries,r=-1,i=n.length;++r<i;)if(Ul(n[r],e))return!0;return!1}};function Ul(t,e){return!(!t||!zl.hasOwnProperty(t.type))&&zl[t.type](t,e)}function $l(t,e){return 0===jl(t,e)}function Gl(t,e){for(var n,r,i,a=0,o=t.length;a<o;a++){if(0===(r=jl(t[a],e)))return!0;if(a>0&&(i=jl(t[a],t[a-1]))>0&&n<=i&&r<=i&&(n+r-i)*(1-Math.pow((n-r)/i,2))<1e-12*i)return!0;n=r}return!1}function Vl(t,e){return!!xl(t.map(Hl),Wl(e))}function Hl(t){return(t=t.map(Wl)).pop(),t}function Wl(t){return[t[0]*gu,t[1]*gu]}var ql=function(t,e){return(t&&Yl.hasOwnProperty(t.type)?Yl[t.type]:Ul)(t,e)};function Xl(t,e,n){var r=w(t,e-1e-6,n).concat(e);return function(t){return r.map((function(e){return[t,e]}))}}function Zl(t,e,n){var r=w(t,e-1e-6,n).concat(e);return function(t){return r.map((function(e){return[e,t]}))}}function Jl(){var t,e,n,r,i,a,o,s,u,c,l,f,h=10,d=h,p=90,y=360,g=2.5;function m(){return{type:"MultiLineString",coordinates:v()}}function v(){return w(_u(r/p)*p,n,p).map(l).concat(w(_u(s/y)*y,o,y).map(f)).concat(w(_u(e/h)*h,t,h).filter((function(t){return mu(t%p)>1e-6})).map(u)).concat(w(_u(a/d)*d,i,d).filter((function(t){return mu(t%y)>1e-6})).map(c))}return m.lines=function(){return v().map((function(t){return{type:"LineString",coordinates:t}}))},m.outline=function(){return{type:"Polygon",coordinates:[l(r).concat(f(o).slice(1),l(n).reverse().slice(1),f(s).reverse().slice(1))]}},m.extent=function(t){return arguments.length?m.extentMajor(t).extentMinor(t):m.extentMinor()},m.extentMajor=function(t){return arguments.length?(r=+t[0][0],n=+t[1][0],s=+t[0][1],o=+t[1][1],r>n&&(t=r,r=n,n=t),s>o&&(t=s,s=o,o=t),m.precision(g)):[[r,s],[n,o]]},m.extentMinor=function(n){return arguments.length?(e=+n[0][0],t=+n[1][0],a=+n[0][1],i=+n[1][1],e>t&&(n=e,e=t,t=n),a>i&&(n=a,a=i,i=n),m.precision(g)):[[e,a],[t,i]]},m.step=function(t){return arguments.length?m.stepMajor(t).stepMinor(t):m.stepMinor()},m.stepMajor=function(t){return arguments.length?(p=+t[0],y=+t[1],m):[p,y]},m.stepMinor=function(t){return arguments.length?(h=+t[0],d=+t[1],m):[h,d]},m.precision=function(h){return arguments.length?(g=+h,u=Xl(a,i,90),c=Zl(e,t,g),l=Xl(s,o,90),f=Zl(r,n,g),m):g},m.extentMajor([[-180,1e-6-90],[180,90-1e-6]]).extentMinor([[-180,-80-1e-6],[180,80+1e-6]])}function Ql(){return Jl()()}var Kl,tf,ef,nf,rf=function(t,e){var n=t[0]*gu,r=t[1]*gu,i=e[0]*gu,a=e[1]*gu,o=xu(r),s=Au(r),u=xu(a),c=Au(a),l=o*xu(n),f=o*Au(n),h=u*xu(i),d=u*Au(i),p=2*Nu(Su(Cu(a-r)+o*u*Cu(i-n))),y=Au(p),g=p?function(t){var e=Au(t*=p)/y,n=Au(p-t)/y,r=n*l+e*h,i=n*f+e*d,a=n*s+e*c;return[bu(i,r)*yu,bu(a,Su(r*r+i*i))*yu]}:function(){return[n*yu,r*yu]};return g.distance=p,g},af=function(t){return t},of=su(),sf=su(),uf={point:Du,lineStart:Du,lineEnd:Du,polygonStart:function(){uf.lineStart=cf,uf.lineEnd=hf},polygonEnd:function(){uf.lineStart=uf.lineEnd=uf.point=Du,of.add(mu(sf)),sf.reset()},result:function(){var t=of/2;return of.reset(),t}};function cf(){uf.point=lf}function lf(t,e){uf.point=ff,Kl=ef=t,tf=nf=e}function ff(t,e){sf.add(nf*t-ef*e),ef=t,nf=e}function hf(){ff(Kl,tf)}var df=uf,pf=1/0,yf=pf,gf=-pf,mf=gf;var vf,bf,xf,_f,wf={point:function(t,e){t<pf&&(pf=t);t>gf&&(gf=t);e<yf&&(yf=e);e>mf&&(mf=e)},lineStart:Du,lineEnd:Du,polygonStart:Du,polygonEnd:Du,result:function(){var t=[[pf,yf],[gf,mf]];return gf=mf=-(yf=pf=1/0),t}},kf=0,Ef=0,Af=0,Tf=0,Sf=0,Mf=0,Of=0,Nf=0,Cf=0,Df={point:Lf,lineStart:Ff,lineEnd:Rf,polygonStart:function(){Df.lineStart=Bf,Df.lineEnd=jf},polygonEnd:function(){Df.point=Lf,Df.lineStart=Ff,Df.lineEnd=Rf},result:function(){var t=Cf?[Of/Cf,Nf/Cf]:Mf?[Tf/Mf,Sf/Mf]:Af?[kf/Af,Ef/Af]:[NaN,NaN];return kf=Ef=Af=Tf=Sf=Mf=Of=Nf=Cf=0,t}};function Lf(t,e){kf+=t,Ef+=e,++Af}function Ff(){Df.point=If}function If(t,e){Df.point=Pf,Lf(xf=t,_f=e)}function Pf(t,e){var n=t-xf,r=e-_f,i=Su(n*n+r*r);Tf+=i*(xf+t)/2,Sf+=i*(_f+e)/2,Mf+=i,Lf(xf=t,_f=e)}function Rf(){Df.point=Lf}function Bf(){Df.point=Yf}function jf(){zf(vf,bf)}function Yf(t,e){Df.point=zf,Lf(vf=xf=t,bf=_f=e)}function zf(t,e){var n=t-xf,r=e-_f,i=Su(n*n+r*r);Tf+=i*(xf+t)/2,Sf+=i*(_f+e)/2,Mf+=i,Of+=(i=_f*t-xf*e)*(xf+t),Nf+=i*(_f+e),Cf+=3*i,Lf(xf=t,_f=e)}var Uf=Df;function $f(t){this._context=t}$f.prototype={_radius:4.5,pointRadius:function(t){return this._radius=t,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._context.closePath(),this._point=NaN},point:function(t,e){switch(this._point){case 0:this._context.moveTo(t,e),this._point=1;break;case 1:this._context.lineTo(t,e);break;default:this._context.moveTo(t+this._radius,e),this._context.arc(t,e,this._radius,0,pu)}},result:Du};var Gf,Vf,Hf,Wf,qf,Xf=su(),Zf={point:Du,lineStart:function(){Zf.point=Jf},lineEnd:function(){Gf&&Qf(Vf,Hf),Zf.point=Du},polygonStart:function(){Gf=!0},polygonEnd:function(){Gf=null},result:function(){var t=+Xf;return Xf.reset(),t}};function Jf(t,e){Zf.point=Qf,Vf=Wf=t,Hf=qf=e}function Qf(t,e){Wf-=t,qf-=e,Xf.add(Su(Wf*Wf+qf*qf)),Wf=t,qf=e}var Kf=Zf;function th(){this._string=[]}function eh(t){return"m0,"+t+"a"+t+","+t+" 0 1,1 0,"+-2*t+"a"+t+","+t+" 0 1,1 0,"+2*t+"z"}th.prototype={_radius:4.5,_circle:eh(4.5),pointRadius:function(t){return(t=+t)!==this._radius&&(this._radius=t,this._circle=null),this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._string.push("Z"),this._point=NaN},point:function(t,e){switch(this._point){case 0:this._string.push("M",t,",",e),this._point=1;break;case 1:this._string.push("L",t,",",e);break;default:null==this._circle&&(this._circle=eh(this._radius)),this._string.push("M",t,",",e,this._circle)}},result:function(){if(this._string.length){var t=this._string.join("");return this._string=[],t}return null}};var nh=function(t,e){var n,r,i=4.5;function a(t){return t&&("function"==typeof i&&r.pointRadius(+i.apply(this,arguments)),$u(t,n(r))),r.result()}return a.area=function(t){return $u(t,n(df)),df.result()},a.measure=function(t){return $u(t,n(Kf)),Kf.result()},a.bounds=function(t){return $u(t,n(wf)),wf.result()},a.centroid=function(t){return $u(t,n(Uf)),Uf.result()},a.projection=function(e){return arguments.length?(n=null==e?(t=null,af):(t=e).stream,a):t},a.context=function(t){return arguments.length?(r=null==t?(e=null,new th):new $f(e=t),"function"!=typeof i&&r.pointRadius(i),a):e},a.pointRadius=function(t){return arguments.length?(i="function"==typeof t?t:(r.pointRadius(+t),+t),a):i},a.projection(t).context(e)},rh=function(t){return{stream:ih(t)}};function ih(t){return function(e){var n=new ah;for(var r in t)n[r]=t[r];return n.stream=e,n}}function ah(){}function oh(t,e,n){var r=t.clipExtent&&t.clipExtent();return t.scale(150).translate([0,0]),null!=r&&t.clipExtent(null),$u(n,t.stream(wf)),e(wf.result()),null!=r&&t.clipExtent(r),t}function sh(t,e,n){return oh(t,(function(n){var r=e[1][0]-e[0][0],i=e[1][1]-e[0][1],a=Math.min(r/(n[1][0]-n[0][0]),i/(n[1][1]-n[0][1])),o=+e[0][0]+(r-a*(n[1][0]+n[0][0]))/2,s=+e[0][1]+(i-a*(n[1][1]+n[0][1]))/2;t.scale(150*a).translate([o,s])}),n)}function uh(t,e,n){return sh(t,[[0,0],e],n)}function ch(t,e,n){return oh(t,(function(n){var r=+e,i=r/(n[1][0]-n[0][0]),a=(r-i*(n[1][0]+n[0][0]))/2,o=-i*n[0][1];t.scale(150*i).translate([a,o])}),n)}function lh(t,e,n){return oh(t,(function(n){var r=+e,i=r/(n[1][1]-n[0][1]),a=-i*n[0][0],o=(r-i*(n[1][1]+n[0][1]))/2;t.scale(150*i).translate([a,o])}),n)}ah.prototype={constructor:ah,point:function(t,e){this.stream.point(t,e)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};var fh=xu(30*gu),hh=function(t,e){return+e?function(t,e){function n(r,i,a,o,s,u,c,l,f,h,d,p,y,g){var m=c-r,v=l-i,b=m*m+v*v;if(b>4*e&&y--){var x=o+h,_=s+d,w=u+p,k=Su(x*x+_*_+w*w),E=Nu(w/=k),A=mu(mu(w)-1)<1e-6||mu(a-f)<1e-6?(a+f)/2:bu(_,x),T=t(A,E),S=T[0],M=T[1],O=S-r,N=M-i,C=v*O-m*N;(C*C/b>e||mu((m*O+v*N)/b-.5)>.3||o*h+s*d+u*p<fh)&&(n(r,i,a,o,s,u,S,M,A,x/=k,_/=k,w,y,g),g.point(S,M),n(S,M,A,x,_,w,c,l,f,h,d,p,y,g))}}return function(e){var r,i,a,o,s,u,c,l,f,h,d,p,y={point:g,lineStart:m,lineEnd:b,polygonStart:function(){e.polygonStart(),y.lineStart=x},polygonEnd:function(){e.polygonEnd(),y.lineStart=m}};function g(n,r){n=t(n,r),e.point(n[0],n[1])}function m(){l=NaN,y.point=v,e.lineStart()}function v(r,i){var a=Ku([r,i]),o=t(r,i);n(l,f,c,h,d,p,l=o[0],f=o[1],c=r,h=a[0],d=a[1],p=a[2],16,e),e.point(l,f)}function b(){y.point=g,e.lineEnd()}function x(){m(),y.point=_,y.lineEnd=w}function _(t,e){v(r=t,e),i=l,a=f,o=h,s=d,u=p,y.point=v}function w(){n(l,f,c,h,d,p,i,a,r,o,s,u,16,e),y.lineEnd=b,b()}return y}}(t,e):function(t){return ih({point:function(e,n){e=t(e,n),this.stream.point(e[0],e[1])}})}(t)};var dh=ih({point:function(t,e){this.stream.point(t*gu,e*gu)}});function ph(t,e,n){function r(r,i){return[e+t*r,n-t*i]}return r.invert=function(r,i){return[(r-e)/t,(n-i)/t]},r}function yh(t,e,n,r){var i=xu(r),a=Au(r),o=i*t,s=a*t,u=i/t,c=a/t,l=(a*n-i*e)/t,f=(a*e+i*n)/t;function h(t,r){return[o*t-s*r+e,n-s*t-o*r]}return h.invert=function(t,e){return[u*t-c*e+l,f-c*t-u*e]},h}function gh(t){return mh((function(){return t}))()}function mh(t){var e,n,r,i,a,o,s,u,c,l,f=150,h=480,d=250,p=0,y=0,g=0,m=0,v=0,b=0,x=null,_=El,w=null,k=af,E=.5;function A(t){return u(t[0]*gu,t[1]*gu)}function T(t){return(t=u.invert(t[0],t[1]))&&[t[0]*yu,t[1]*yu]}function S(){var t=yh(f,0,0,b).apply(null,e(p,y)),r=(b?yh:ph)(f,h-t[0],d-t[1],b);return n=al(g,m,v),s=rl(e,r),u=rl(n,s),o=hh(s,E),M()}function M(){return c=l=null,A}return A.stream=function(t){return c&&l===t?c:c=dh(function(t){return ih({point:function(e,n){var r=t(e,n);return this.stream.point(r[0],r[1])}})}(n)(_(o(k(l=t)))))},A.preclip=function(t){return arguments.length?(_=t,x=void 0,M()):_},A.postclip=function(t){return arguments.length?(k=t,w=r=i=a=null,M()):k},A.clipAngle=function(t){return arguments.length?(_=+t?Al(x=t*gu):(x=null,El),M()):x*yu},A.clipExtent=function(t){return arguments.length?(k=null==t?(w=r=i=a=null,af):Tl(w=+t[0][0],r=+t[0][1],i=+t[1][0],a=+t[1][1]),M()):null==w?null:[[w,r],[i,a]]},A.scale=function(t){return arguments.length?(f=+t,S()):f},A.translate=function(t){return arguments.length?(h=+t[0],d=+t[1],S()):[h,d]},A.center=function(t){return arguments.length?(p=t[0]%360*gu,y=t[1]%360*gu,S()):[p*yu,y*yu]},A.rotate=function(t){return arguments.length?(g=t[0]%360*gu,m=t[1]%360*gu,v=t.length>2?t[2]%360*gu:0,S()):[g*yu,m*yu,v*yu]},A.angle=function(t){return arguments.length?(b=t%360*gu,S()):b*yu},A.precision=function(t){return arguments.length?(o=hh(s,E=t*t),M()):Su(E)},A.fitExtent=function(t,e){return sh(A,t,e)},A.fitSize=function(t,e){return uh(A,t,e)},A.fitWidth=function(t,e){return ch(A,t,e)},A.fitHeight=function(t,e){return lh(A,t,e)},function(){return e=t.apply(this,arguments),A.invert=e.invert&&T,S()}}function vh(t){var e=0,n=fu/3,r=mh(t),i=r(e,n);return i.parallels=function(t){return arguments.length?r(e=t[0]*gu,n=t[1]*gu):[e*yu,n*yu]},i}function bh(t,e){var n=Au(t),r=(n+Au(e))/2;if(mu(r)<1e-6)return function(t){var e=xu(t);function n(t,n){return[t*e,Au(n)/e]}return n.invert=function(t,n){return[t/e,Nu(n*e)]},n}(t);var i=1+n*(2*r-n),a=Su(i)/r;function o(t,e){var n=Su(i-2*r*Au(e))/r;return[n*Au(t*=r),a-n*xu(t)]}return o.invert=function(t,e){var n=a-e;return[bu(t,mu(n))/r*Tu(n),Nu((i-(t*t+n*n)*r*r)/(2*r))]},o}var xh=function(){return vh(bh).scale(155.424).center([0,33.6442])},_h=function(){return xh().parallels([29.5,45.5]).scale(1070).translate([480,250]).rotate([96,0]).center([-.6,38.7])};var wh=function(){var t,e,n,r,i,a,o=_h(),s=xh().rotate([154,0]).center([-2,58.5]).parallels([55,65]),u=xh().rotate([157,0]).center([-3,19.9]).parallels([8,18]),c={point:function(t,e){a=[t,e]}};function l(t){var e=t[0],o=t[1];return a=null,n.point(e,o),a||(r.point(e,o),a)||(i.point(e,o),a)}function f(){return t=e=null,l}return l.invert=function(t){var e=o.scale(),n=o.translate(),r=(t[0]-n[0])/e,i=(t[1]-n[1])/e;return(i>=.12&&i<.234&&r>=-.425&&r<-.214?s:i>=.166&&i<.234&&r>=-.214&&r<-.115?u:o).invert(t)},l.stream=function(n){return t&&e===n?t:(r=[o.stream(e=n),s.stream(n),u.stream(n)],i=r.length,t={point:function(t,e){for(var n=-1;++n<i;)r[n].point(t,e)},sphere:function(){for(var t=-1;++t<i;)r[t].sphere()},lineStart:function(){for(var t=-1;++t<i;)r[t].lineStart()},lineEnd:function(){for(var t=-1;++t<i;)r[t].lineEnd()},polygonStart:function(){for(var t=-1;++t<i;)r[t].polygonStart()},polygonEnd:function(){for(var t=-1;++t<i;)r[t].polygonEnd()}});var r,i},l.precision=function(t){return arguments.length?(o.precision(t),s.precision(t),u.precision(t),f()):o.precision()},l.scale=function(t){return arguments.length?(o.scale(t),s.scale(.35*t),u.scale(t),l.translate(o.translate())):o.scale()},l.translate=function(t){if(!arguments.length)return o.translate();var e=o.scale(),a=+t[0],l=+t[1];return n=o.translate(t).clipExtent([[a-.455*e,l-.238*e],[a+.455*e,l+.238*e]]).stream(c),r=s.translate([a-.307*e,l+.201*e]).clipExtent([[a-.425*e+1e-6,l+.12*e+1e-6],[a-.214*e-1e-6,l+.234*e-1e-6]]).stream(c),i=u.translate([a-.205*e,l+.212*e]).clipExtent([[a-.214*e+1e-6,l+.166*e+1e-6],[a-.115*e-1e-6,l+.234*e-1e-6]]).stream(c),f()},l.fitExtent=function(t,e){return sh(l,t,e)},l.fitSize=function(t,e){return uh(l,t,e)},l.fitWidth=function(t,e){return ch(l,t,e)},l.fitHeight=function(t,e){return lh(l,t,e)},l.scale(1070)};function kh(t){return function(e,n){var r=xu(e),i=xu(n),a=t(r*i);return[a*i*Au(e),a*Au(n)]}}function Eh(t){return function(e,n){var r=Su(e*e+n*n),i=t(r),a=Au(i),o=xu(i);return[bu(e*a,r*o),Nu(r&&n*a/r)]}}var Ah=kh((function(t){return Su(2/(1+t))}));Ah.invert=Eh((function(t){return 2*Nu(t/2)}));var Th=function(){return gh(Ah).scale(124.75).clipAngle(179.999)},Sh=kh((function(t){return(t=Ou(t))&&t/Au(t)}));Sh.invert=Eh((function(t){return t}));var Mh=function(){return gh(Sh).scale(79.4188).clipAngle(179.999)};function Oh(t,e){return[t,ku(Mu((hu+e)/2))]}Oh.invert=function(t,e){return[t,2*vu(wu(e))-hu]};var Nh=function(){return Ch(Oh).scale(961/pu)};function Ch(t){var e,n,r,i=gh(t),a=i.center,o=i.scale,s=i.translate,u=i.clipExtent,c=null;function l(){var a=fu*o(),s=i(cl(i.rotate()).invert([0,0]));return u(null==c?[[s[0]-a,s[1]-a],[s[0]+a,s[1]+a]]:t===Oh?[[Math.max(s[0]-a,c),e],[Math.min(s[0]+a,n),r]]:[[c,Math.max(s[1]-a,e)],[n,Math.min(s[1]+a,r)]])}return i.scale=function(t){return arguments.length?(o(t),l()):o()},i.translate=function(t){return arguments.length?(s(t),l()):s()},i.center=function(t){return arguments.length?(a(t),l()):a()},i.clipExtent=function(t){return arguments.length?(null==t?c=e=n=r=null:(c=+t[0][0],e=+t[0][1],n=+t[1][0],r=+t[1][1]),l()):null==c?null:[[c,e],[n,r]]},l()}function Dh(t){return Mu((hu+t)/2)}function Lh(t,e){var n=xu(t),r=t===e?Au(t):ku(n/xu(e))/ku(Dh(e)/Dh(t)),i=n*Eu(Dh(t),r)/r;if(!r)return Oh;function a(t,e){i>0?e<1e-6-hu&&(e=1e-6-hu):e>hu-1e-6&&(e=hu-1e-6);var n=i/Eu(Dh(e),r);return[n*Au(r*t),i-n*xu(r*t)]}return a.invert=function(t,e){var n=i-e,a=Tu(r)*Su(t*t+n*n);return[bu(t,mu(n))/r*Tu(n),2*vu(Eu(i/a,1/r))-hu]},a}var Fh=function(){return vh(Lh).scale(109.5).parallels([30,30])};function Ih(t,e){return[t,e]}Ih.invert=Ih;var Ph=function(){return gh(Ih).scale(152.63)};function Rh(t,e){var n=xu(t),r=t===e?Au(t):(n-xu(e))/(e-t),i=n/r+t;if(mu(r)<1e-6)return Ih;function a(t,e){var n=i-e,a=r*t;return[n*Au(a),i-n*xu(a)]}return a.invert=function(t,e){var n=i-e;return[bu(t,mu(n))/r*Tu(n),i-Tu(r)*Su(t*t+n*n)]},a}var Bh=function(){return vh(Rh).scale(131.154).center([0,13.9389])},jh=1.340264,Yh=-.081106,zh=893e-6,Uh=.003796,$h=Su(3)/2;function Gh(t,e){var n=Nu($h*Au(e)),r=n*n,i=r*r*r;return[t*xu(n)/($h*(jh+3*Yh*r+i*(7*zh+9*Uh*r))),n*(jh+Yh*r+i*(zh+Uh*r))]}Gh.invert=function(t,e){for(var n,r=e,i=r*r,a=i*i*i,o=0;o<12&&(a=(i=(r-=n=(r*(jh+Yh*i+a*(zh+Uh*i))-e)/(jh+3*Yh*i+a*(7*zh+9*Uh*i)))*r)*i*i,!(mu(n)<1e-12));++o);return[$h*t*(jh+3*Yh*i+a*(7*zh+9*Uh*i))/xu(r),Nu(Au(r)/$h)]};var Vh=function(){return gh(Gh).scale(177.158)};function Hh(t,e){var n=xu(e),r=xu(t)*n;return[n*Au(t)/r,Au(e)/r]}Hh.invert=Eh(vu);var Wh=function(){return gh(Hh).scale(144.049).clipAngle(60)};function qh(t,e,n,r){return 1===t&&1===e&&0===n&&0===r?af:ih({point:function(i,a){this.stream.point(i*t+n,a*e+r)}})}var Xh=function(){var t,e,n,r,i,a,o=1,s=0,u=0,c=1,l=1,f=af,h=null,d=af;function p(){return r=i=null,a}return a={stream:function(t){return r&&i===t?r:r=f(d(i=t))},postclip:function(r){return arguments.length?(d=r,h=t=e=n=null,p()):d},clipExtent:function(r){return arguments.length?(d=null==r?(h=t=e=n=null,af):Tl(h=+r[0][0],t=+r[0][1],e=+r[1][0],n=+r[1][1]),p()):null==h?null:[[h,t],[e,n]]},scale:function(t){return arguments.length?(f=qh((o=+t)*c,o*l,s,u),p()):o},translate:function(t){return arguments.length?(f=qh(o*c,o*l,s=+t[0],u=+t[1]),p()):[s,u]},reflectX:function(t){return arguments.length?(f=qh(o*(c=t?-1:1),o*l,s,u),p()):c<0},reflectY:function(t){return arguments.length?(f=qh(o*c,o*(l=t?-1:1),s,u),p()):l<0},fitExtent:function(t,e){return sh(a,t,e)},fitSize:function(t,e){return uh(a,t,e)},fitWidth:function(t,e){return ch(a,t,e)},fitHeight:function(t,e){return lh(a,t,e)}}};function Zh(t,e){var n=e*e,r=n*n;return[t*(.8707-.131979*n+r*(r*(.003971*n-.001529*r)-.013791)),e*(1.007226+n*(.015085+r*(.028874*n-.044475-.005916*r)))]}Zh.invert=function(t,e){var n,r=e,i=25;do{var a=r*r,o=a*a;r-=n=(r*(1.007226+a*(.015085+o*(.028874*a-.044475-.005916*o)))-e)/(1.007226+a*(.045255+o*(.259866*a-.311325-.005916*11*o)))}while(mu(n)>1e-6&&--i>0);return[t/(.8707+(a=r*r)*(a*(a*a*a*(.003971-.001529*a)-.013791)-.131979)),r]};var Jh=function(){return gh(Zh).scale(175.295)};function Qh(t,e){return[xu(e)*Au(t),Au(e)]}Qh.invert=Eh(Nu);var Kh=function(){return gh(Qh).scale(249.5).clipAngle(90+1e-6)};function td(t,e){var n=xu(e),r=1+xu(t)*n;return[n*Au(t)/r,Au(e)/r]}td.invert=Eh((function(t){return 2*vu(t)}));var ed=function(){return gh(td).scale(250).clipAngle(142)};function nd(t,e){return[ku(Mu((hu+e)/2)),-t]}nd.invert=function(t,e){return[-e,2*vu(wu(t))-hu]};var rd=function(){var t=Ch(nd),e=t.center,n=t.rotate;return t.center=function(t){return arguments.length?e([-t[1],t[0]]):[(t=e())[1],-t[0]]},t.rotate=function(t){return arguments.length?n([t[0],t[1],t.length>2?t[2]+90:90]):[(t=n())[0],t[1],t[2]-90]},n([0,0,90]).scale(159.155)};function id(t,e){return t.parent===e.parent?1:2}function ad(t,e){return t+e.x}function od(t,e){return Math.max(t,e.y)}var sd=function(){var t=id,e=1,n=1,r=!1;function i(i){var a,o=0;i.eachAfter((function(e){var n=e.children;n?(e.x=function(t){return t.reduce(ad,0)/t.length}(n),e.y=function(t){return 1+t.reduce(od,0)}(n)):(e.x=a?o+=t(e,a):0,e.y=0,a=e)}));var s=function(t){for(var e;e=t.children;)t=e[0];return t}(i),u=function(t){for(var e;e=t.children;)t=e[e.length-1];return t}(i),c=s.x-t(s,u)/2,l=u.x+t(u,s)/2;return i.eachAfter(r?function(t){t.x=(t.x-i.x)*e,t.y=(i.y-t.y)*n}:function(t){t.x=(t.x-c)/(l-c)*e,t.y=(1-(i.y?t.y/i.y:1))*n})}return i.separation=function(e){return arguments.length?(t=e,i):t},i.size=function(t){return arguments.length?(r=!1,e=+t[0],n=+t[1],i):r?null:[e,n]},i.nodeSize=function(t){return arguments.length?(r=!0,e=+t[0],n=+t[1],i):r?[e,n]:null},i};function ud(t){var e=0,n=t.children,r=n&&n.length;if(r)for(;--r>=0;)e+=n[r].value;else e=1;t.value=e}function cd(t,e){var n,r,i,a,o,s=new dd(t),u=+t.value&&(s.value=t.value),c=[s];for(null==e&&(e=ld);n=c.pop();)if(u&&(n.value=+n.data.value),(i=e(n.data))&&(o=i.length))for(n.children=new Array(o),a=o-1;a>=0;--a)c.push(r=n.children[a]=new dd(i[a])),r.parent=n,r.depth=n.depth+1;return s.eachBefore(hd)}function ld(t){return t.children}function fd(t){t.data=t.data.data}function hd(t){var e=0;do{t.height=e}while((t=t.parent)&&t.height<++e)}function dd(t){this.data=t,this.depth=this.height=0,this.parent=null}dd.prototype=cd.prototype={constructor:dd,count:function(){return this.eachAfter(ud)},each:function(t){var e,n,r,i,a=this,o=[a];do{for(e=o.reverse(),o=[];a=e.pop();)if(t(a),n=a.children)for(r=0,i=n.length;r<i;++r)o.push(n[r])}while(o.length);return this},eachAfter:function(t){for(var e,n,r,i=this,a=[i],o=[];i=a.pop();)if(o.push(i),e=i.children)for(n=0,r=e.length;n<r;++n)a.push(e[n]);for(;i=o.pop();)t(i);return this},eachBefore:function(t){for(var e,n,r=this,i=[r];r=i.pop();)if(t(r),e=r.children)for(n=e.length-1;n>=0;--n)i.push(e[n]);return this},sum:function(t){return this.eachAfter((function(e){for(var n=+t(e.data)||0,r=e.children,i=r&&r.length;--i>=0;)n+=r[i].value;e.value=n}))},sort:function(t){return this.eachBefore((function(e){e.children&&e.children.sort(t)}))},path:function(t){for(var e=this,n=function(t,e){if(t===e)return t;var n=t.ancestors(),r=e.ancestors(),i=null;t=n.pop(),e=r.pop();for(;t===e;)i=t,t=n.pop(),e=r.pop();return i}(e,t),r=[e];e!==n;)e=e.parent,r.push(e);for(var i=r.length;t!==n;)r.splice(i,0,t),t=t.parent;return r},ancestors:function(){for(var t=this,e=[t];t=t.parent;)e.push(t);return e},descendants:function(){var t=[];return this.each((function(e){t.push(e)})),t},leaves:function(){var t=[];return this.eachBefore((function(e){e.children||t.push(e)})),t},links:function(){var t=this,e=[];return t.each((function(n){n!==t&&e.push({source:n.parent,target:n})})),e},copy:function(){return cd(this).eachBefore(fd)}};var pd=Array.prototype.slice;var yd=function(t){for(var e,n,r=0,i=(t=function(t){for(var e,n,r=t.length;r;)n=Math.random()*r--|0,e=t[r],t[r]=t[n],t[n]=e;return t}(pd.call(t))).length,a=[];r<i;)e=t[r],n&&vd(n,e)?++r:(n=xd(a=gd(a,e)),r=0);return n};function gd(t,e){var n,r;if(bd(e,t))return[e];for(n=0;n<t.length;++n)if(md(e,t[n])&&bd(_d(t[n],e),t))return[t[n],e];for(n=0;n<t.length-1;++n)for(r=n+1;r<t.length;++r)if(md(_d(t[n],t[r]),e)&&md(_d(t[n],e),t[r])&&md(_d(t[r],e),t[n])&&bd(wd(t[n],t[r],e),t))return[t[n],t[r],e];throw new Error}function md(t,e){var n=t.r-e.r,r=e.x-t.x,i=e.y-t.y;return n<0||n*n<r*r+i*i}function vd(t,e){var n=t.r-e.r+1e-6,r=e.x-t.x,i=e.y-t.y;return n>0&&n*n>r*r+i*i}function bd(t,e){for(var n=0;n<e.length;++n)if(!vd(t,e[n]))return!1;return!0}function xd(t){switch(t.length){case 1:return{x:(e=t[0]).x,y:e.y,r:e.r};case 2:return _d(t[0],t[1]);case 3:return wd(t[0],t[1],t[2])}var e}function _d(t,e){var n=t.x,r=t.y,i=t.r,a=e.x,o=e.y,s=e.r,u=a-n,c=o-r,l=s-i,f=Math.sqrt(u*u+c*c);return{x:(n+a+u/f*l)/2,y:(r+o+c/f*l)/2,r:(f+i+s)/2}}function wd(t,e,n){var r=t.x,i=t.y,a=t.r,o=e.x,s=e.y,u=e.r,c=n.x,l=n.y,f=n.r,h=r-o,d=r-c,p=i-s,y=i-l,g=u-a,m=f-a,v=r*r+i*i-a*a,b=v-o*o-s*s+u*u,x=v-c*c-l*l+f*f,_=d*p-h*y,w=(p*x-y*b)/(2*_)-r,k=(y*g-p*m)/_,E=(d*b-h*x)/(2*_)-i,A=(h*m-d*g)/_,T=k*k+A*A-1,S=2*(a+w*k+E*A),M=w*w+E*E-a*a,O=-(T?(S+Math.sqrt(S*S-4*T*M))/(2*T):M/S);return{x:r+w+k*O,y:i+E+A*O,r:O}}function kd(t,e,n){var r,i,a,o,s=t.x-e.x,u=t.y-e.y,c=s*s+u*u;c?(i=e.r+n.r,i*=i,o=t.r+n.r,i>(o*=o)?(r=(c+o-i)/(2*c),a=Math.sqrt(Math.max(0,o/c-r*r)),n.x=t.x-r*s-a*u,n.y=t.y-r*u+a*s):(r=(c+i-o)/(2*c),a=Math.sqrt(Math.max(0,i/c-r*r)),n.x=e.x+r*s-a*u,n.y=e.y+r*u+a*s)):(n.x=e.x+n.r,n.y=e.y)}function Ed(t,e){var n=t.r+e.r-1e-6,r=e.x-t.x,i=e.y-t.y;return n>0&&n*n>r*r+i*i}function Ad(t){var e=t._,n=t.next._,r=e.r+n.r,i=(e.x*n.r+n.x*e.r)/r,a=(e.y*n.r+n.y*e.r)/r;return i*i+a*a}function Td(t){this._=t,this.next=null,this.previous=null}function Sd(t){if(!(i=t.length))return 0;var e,n,r,i,a,o,s,u,c,l,f;if((e=t[0]).x=0,e.y=0,!(i>1))return e.r;if(n=t[1],e.x=-n.r,n.x=e.r,n.y=0,!(i>2))return e.r+n.r;kd(n,e,r=t[2]),e=new Td(e),n=new Td(n),r=new Td(r),e.next=r.previous=n,n.next=e.previous=r,r.next=n.previous=e;t:for(s=3;s<i;++s){kd(e._,n._,r=t[s]),r=new Td(r),u=n.next,c=e.previous,l=n._.r,f=e._.r;do{if(l<=f){if(Ed(u._,r._)){n=u,e.next=n,n.previous=e,--s;continue t}l+=u._.r,u=u.next}else{if(Ed(c._,r._)){(e=c).next=n,n.previous=e,--s;continue t}f+=c._.r,c=c.previous}}while(u!==c.next);for(r.previous=e,r.next=n,e.next=n.previous=n=r,a=Ad(e);(r=r.next)!==n;)(o=Ad(r))<a&&(e=r,a=o);n=e.next}for(e=[n._],r=n;(r=r.next)!==n;)e.push(r._);for(r=yd(e),s=0;s<i;++s)(e=t[s]).x-=r.x,e.y-=r.y;return r.r}var Md=function(t){return Sd(t),t};function Od(t){return null==t?null:Nd(t)}function Nd(t){if("function"!=typeof t)throw new Error;return t}function Cd(){return 0}var Dd=function(t){return function(){return t}};function Ld(t){return Math.sqrt(t.value)}var Fd=function(){var t=null,e=1,n=1,r=Cd;function i(i){return i.x=e/2,i.y=n/2,t?i.eachBefore(Id(t)).eachAfter(Pd(r,.5)).eachBefore(Rd(1)):i.eachBefore(Id(Ld)).eachAfter(Pd(Cd,1)).eachAfter(Pd(r,i.r/Math.min(e,n))).eachBefore(Rd(Math.min(e,n)/(2*i.r))),i}return i.radius=function(e){return arguments.length?(t=Od(e),i):t},i.size=function(t){return arguments.length?(e=+t[0],n=+t[1],i):[e,n]},i.padding=function(t){return arguments.length?(r="function"==typeof t?t:Dd(+t),i):r},i};function Id(t){return function(e){e.children||(e.r=Math.max(0,+t(e)||0))}}function Pd(t,e){return function(n){if(r=n.children){var r,i,a,o=r.length,s=t(n)*e||0;if(s)for(i=0;i<o;++i)r[i].r+=s;if(a=Sd(r),s)for(i=0;i<o;++i)r[i].r-=s;n.r=a+s}}}function Rd(t){return function(e){var n=e.parent;e.r*=t,n&&(e.x=n.x+t*e.x,e.y=n.y+t*e.y)}}var Bd=function(t){t.x0=Math.round(t.x0),t.y0=Math.round(t.y0),t.x1=Math.round(t.x1),t.y1=Math.round(t.y1)},jd=function(t,e,n,r,i){for(var a,o=t.children,s=-1,u=o.length,c=t.value&&(r-e)/t.value;++s<u;)(a=o[s]).y0=n,a.y1=i,a.x0=e,a.x1=e+=a.value*c},Yd=function(){var t=1,e=1,n=0,r=!1;function i(i){var a=i.height+1;return i.x0=i.y0=n,i.x1=t,i.y1=e/a,i.eachBefore(function(t,e){return function(r){r.children&&jd(r,r.x0,t*(r.depth+1)/e,r.x1,t*(r.depth+2)/e);var i=r.x0,a=r.y0,o=r.x1-n,s=r.y1-n;o<i&&(i=o=(i+o)/2),s<a&&(a=s=(a+s)/2),r.x0=i,r.y0=a,r.x1=o,r.y1=s}}(e,a)),r&&i.eachBefore(Bd),i}return i.round=function(t){return arguments.length?(r=!!t,i):r},i.size=function(n){return arguments.length?(t=+n[0],e=+n[1],i):[t,e]},i.padding=function(t){return arguments.length?(n=+t,i):n},i},zd={depth:-1},Ud={};function $d(t){return t.id}function Gd(t){return t.parentId}var Vd=function(){var t=$d,e=Gd;function n(n){var r,i,a,o,s,u,c,l=n.length,f=new Array(l),h={};for(i=0;i<l;++i)r=n[i],s=f[i]=new dd(r),null!=(u=t(r,i,n))&&(u+="")&&(h[c="$"+(s.id=u)]=c in h?Ud:s);for(i=0;i<l;++i)if(s=f[i],null!=(u=e(n[i],i,n))&&(u+="")){if(!(o=h["$"+u]))throw new Error("missing: "+u);if(o===Ud)throw new Error("ambiguous: "+u);o.children?o.children.push(s):o.children=[s],s.parent=o}else{if(a)throw new Error("multiple roots");a=s}if(!a)throw new Error("no root");if(a.parent=zd,a.eachBefore((function(t){t.depth=t.parent.depth+1,--l})).eachBefore(hd),a.parent=null,l>0)throw new Error("cycle");return a}return n.id=function(e){return arguments.length?(t=Nd(e),n):t},n.parentId=function(t){return arguments.length?(e=Nd(t),n):e},n};function Hd(t,e){return t.parent===e.parent?1:2}function Wd(t){var e=t.children;return e?e[0]:t.t}function qd(t){var e=t.children;return e?e[e.length-1]:t.t}function Xd(t,e,n){var r=n/(e.i-t.i);e.c-=r,e.s+=n,t.c+=r,e.z+=n,e.m+=n}function Zd(t,e,n){return t.a.parent===e.parent?t.a:n}function Jd(t,e){this._=t,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=e}Jd.prototype=Object.create(dd.prototype);var Qd=function(){var t=Hd,e=1,n=1,r=null;function i(i){var u=function(t){for(var e,n,r,i,a,o=new Jd(t,0),s=[o];e=s.pop();)if(r=e._.children)for(e.children=new Array(a=r.length),i=a-1;i>=0;--i)s.push(n=e.children[i]=new Jd(r[i],i)),n.parent=e;return(o.parent=new Jd(null,0)).children=[o],o}(i);if(u.eachAfter(a),u.parent.m=-u.z,u.eachBefore(o),r)i.eachBefore(s);else{var c=i,l=i,f=i;i.eachBefore((function(t){t.x<c.x&&(c=t),t.x>l.x&&(l=t),t.depth>f.depth&&(f=t)}));var h=c===l?1:t(c,l)/2,d=h-c.x,p=e/(l.x+h+d),y=n/(f.depth||1);i.eachBefore((function(t){t.x=(t.x+d)*p,t.y=t.depth*y}))}return i}function a(e){var n=e.children,r=e.parent.children,i=e.i?r[e.i-1]:null;if(n){!function(t){for(var e,n=0,r=0,i=t.children,a=i.length;--a>=0;)(e=i[a]).z+=n,e.m+=n,n+=e.s+(r+=e.c)}(e);var a=(n[0].z+n[n.length-1].z)/2;i?(e.z=i.z+t(e._,i._),e.m=e.z-a):e.z=a}else i&&(e.z=i.z+t(e._,i._));e.parent.A=function(e,n,r){if(n){for(var i,a=e,o=e,s=n,u=a.parent.children[0],c=a.m,l=o.m,f=s.m,h=u.m;s=qd(s),a=Wd(a),s&&a;)u=Wd(u),(o=qd(o)).a=e,(i=s.z+f-a.z-c+t(s._,a._))>0&&(Xd(Zd(s,e,r),e,i),c+=i,l+=i),f+=s.m,c+=a.m,h+=u.m,l+=o.m;s&&!qd(o)&&(o.t=s,o.m+=f-l),a&&!Wd(u)&&(u.t=a,u.m+=c-h,r=e)}return r}(e,i,e.parent.A||r[0])}function o(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function s(t){t.x*=e,t.y=t.depth*n}return i.separation=function(e){return arguments.length?(t=e,i):t},i.size=function(t){return arguments.length?(r=!1,e=+t[0],n=+t[1],i):r?null:[e,n]},i.nodeSize=function(t){return arguments.length?(r=!0,e=+t[0],n=+t[1],i):r?[e,n]:null},i},Kd=function(t,e,n,r,i){for(var a,o=t.children,s=-1,u=o.length,c=t.value&&(i-n)/t.value;++s<u;)(a=o[s]).x0=e,a.x1=r,a.y0=n,a.y1=n+=a.value*c},tp=(1+Math.sqrt(5))/2;function ep(t,e,n,r,i,a){for(var o,s,u,c,l,f,h,d,p,y,g,m=[],v=e.children,b=0,x=0,_=v.length,w=e.value;b<_;){u=i-n,c=a-r;do{l=v[x++].value}while(!l&&x<_);for(f=h=l,g=l*l*(y=Math.max(c/u,u/c)/(w*t)),p=Math.max(h/g,g/f);x<_;++x){if(l+=s=v[x].value,s<f&&(f=s),s>h&&(h=s),g=l*l*y,(d=Math.max(h/g,g/f))>p){l-=s;break}p=d}m.push(o={value:l,dice:u<c,children:v.slice(b,x)}),o.dice?jd(o,n,r,i,w?r+=c*l/w:a):Kd(o,n,r,w?n+=u*l/w:i,a),w-=l,b=x}return m}var np=function t(e){function n(t,n,r,i,a){ep(e,t,n,r,i,a)}return n.ratio=function(e){return t((e=+e)>1?e:1)},n}(tp),rp=function(){var t=np,e=!1,n=1,r=1,i=[0],a=Cd,o=Cd,s=Cd,u=Cd,c=Cd;function l(t){return t.x0=t.y0=0,t.x1=n,t.y1=r,t.eachBefore(f),i=[0],e&&t.eachBefore(Bd),t}function f(e){var n=i[e.depth],r=e.x0+n,l=e.y0+n,f=e.x1-n,h=e.y1-n;f<r&&(r=f=(r+f)/2),h<l&&(l=h=(l+h)/2),e.x0=r,e.y0=l,e.x1=f,e.y1=h,e.children&&(n=i[e.depth+1]=a(e)/2,r+=c(e)-n,l+=o(e)-n,(f-=s(e)-n)<r&&(r=f=(r+f)/2),(h-=u(e)-n)<l&&(l=h=(l+h)/2),t(e,r,l,f,h))}return l.round=function(t){return arguments.length?(e=!!t,l):e},l.size=function(t){return arguments.length?(n=+t[0],r=+t[1],l):[n,r]},l.tile=function(e){return arguments.length?(t=Nd(e),l):t},l.padding=function(t){return arguments.length?l.paddingInner(t).paddingOuter(t):l.paddingInner()},l.paddingInner=function(t){return arguments.length?(a="function"==typeof t?t:Dd(+t),l):a},l.paddingOuter=function(t){return arguments.length?l.paddingTop(t).paddingRight(t).paddingBottom(t).paddingLeft(t):l.paddingTop()},l.paddingTop=function(t){return arguments.length?(o="function"==typeof t?t:Dd(+t),l):o},l.paddingRight=function(t){return arguments.length?(s="function"==typeof t?t:Dd(+t),l):s},l.paddingBottom=function(t){return arguments.length?(u="function"==typeof t?t:Dd(+t),l):u},l.paddingLeft=function(t){return arguments.length?(c="function"==typeof t?t:Dd(+t),l):c},l},ip=function(t,e,n,r,i){var a,o,s=t.children,u=s.length,c=new Array(u+1);for(c[0]=o=a=0;a<u;++a)c[a+1]=o+=s[a].value;!function t(e,n,r,i,a,o,u){if(e>=n-1){var l=s[e];return l.x0=i,l.y0=a,l.x1=o,void(l.y1=u)}var f=c[e],h=r/2+f,d=e+1,p=n-1;for(;d<p;){var y=d+p>>>1;c[y]<h?d=y+1:p=y}h-c[d-1]<c[d]-h&&e+1<d&&--d;var g=c[d]-f,m=r-g;if(o-i>u-a){var v=(i*m+o*g)/r;t(e,d,g,i,a,v,u),t(d,n,m,v,a,o,u)}else{var b=(a*m+u*g)/r;t(e,d,g,i,a,o,b),t(d,n,m,i,b,o,u)}}(0,u,t.value,e,n,r,i)},ap=function(t,e,n,r,i){(1&t.depth?Kd:jd)(t,e,n,r,i)},op=function t(e){function n(t,n,r,i,a){if((o=t._squarify)&&o.ratio===e)for(var o,s,u,c,l,f=-1,h=o.length,d=t.value;++f<h;){for(u=(s=o[f]).children,c=s.value=0,l=u.length;c<l;++c)s.value+=u[c].value;s.dice?jd(s,n,r,i,r+=(a-r)*s.value/d):Kd(s,n,r,n+=(i-n)*s.value/d,a),d-=s.value}else t._squarify=o=ep(e,t,n,r,i,a),o.ratio=e}return n.ratio=function(e){return t((e=+e)>1?e:1)},n}(tp),sp=function(t){var e=t.length;return function(n){return t[Math.max(0,Math.min(e-1,Math.floor(n*e)))]}},up=function(t,e){var n=cn(+t,+e);return function(t){var e=n(t);return e-360*Math.floor(e/360)}},cp=function(t,e){return t=+t,e=+e,function(n){return Math.round(t*(1-n)+e*n)}},lp=Math.SQRT2;function fp(t){return((t=Math.exp(t))+1/t)/2}var hp=function(t,e){var n,r,i=t[0],a=t[1],o=t[2],s=e[0],u=e[1],c=e[2],l=s-i,f=u-a,h=l*l+f*f;if(h<1e-12)r=Math.log(c/o)/lp,n=function(t){return[i+t*l,a+t*f,o*Math.exp(lp*t*r)]};else{var d=Math.sqrt(h),p=(c*c-o*o+4*h)/(2*o*2*d),y=(c*c-o*o-4*h)/(2*c*2*d),g=Math.log(Math.sqrt(p*p+1)-p),m=Math.log(Math.sqrt(y*y+1)-y);r=(m-g)/lp,n=function(t){var e,n=t*r,s=fp(g),u=o/(2*d)*(s*(e=lp*n+g,((e=Math.exp(2*e))-1)/(e+1))-function(t){return((t=Math.exp(t))-1/t)/2}(g));return[i+u*l,a+u*f,o*s/fp(lp*n+g)]}}return n.duration=1e3*r,n};function dp(t){return function(e,n){var r=t((e=tn(e)).h,(n=tn(n)).h),i=fn(e.s,n.s),a=fn(e.l,n.l),o=fn(e.opacity,n.opacity);return function(t){return e.h=r(t),e.s=i(t),e.l=a(t),e.opacity=o(t),e+""}}}var pp=dp(cn),yp=dp(fn);function gp(t,e){var n=fn((t=pa(t)).l,(e=pa(e)).l),r=fn(t.a,e.a),i=fn(t.b,e.b),a=fn(t.opacity,e.opacity);return function(e){return t.l=n(e),t.a=r(e),t.b=i(e),t.opacity=a(e),t+""}}function mp(t){return function(e,n){var r=t((e=wa(e)).h,(n=wa(n)).h),i=fn(e.c,n.c),a=fn(e.l,n.l),o=fn(e.opacity,n.opacity);return function(t){return e.h=r(t),e.c=i(t),e.l=a(t),e.opacity=o(t),e+""}}}var vp=mp(cn),bp=mp(fn);function xp(t){return function e(n){function r(e,r){var i=t((e=Na(e)).h,(r=Na(r)).h),a=fn(e.s,r.s),o=fn(e.l,r.l),s=fn(e.opacity,r.opacity);return function(t){return e.h=i(t),e.s=a(t),e.l=o(Math.pow(t,n)),e.opacity=s(t),e+""}}return n=+n,r.gamma=e,r}(1)}var _p=xp(cn),wp=xp(fn);function kp(t,e){for(var n=0,r=e.length-1,i=e[0],a=new Array(r<0?0:r);n<r;)a[n]=t(i,i=e[++n]);return function(t){var e=Math.max(0,Math.min(r-1,Math.floor(t*=r)));return a[e](t-e)}}var Ep=function(t,e){for(var n=new Array(e),r=0;r<e;++r)n[r]=t(r/(e-1));return n},Ap=function(t){for(var e,n=-1,r=t.length,i=t[r-1],a=0;++n<r;)e=i,i=t[n],a+=e[1]*i[0]-e[0]*i[1];return a/2},Tp=function(t){for(var e,n,r=-1,i=t.length,a=0,o=0,s=t[i-1],u=0;++r<i;)e=s,s=t[r],u+=n=e[0]*s[1]-s[0]*e[1],a+=(e[0]+s[0])*n,o+=(e[1]+s[1])*n;return[a/(u*=3),o/u]};function Sp(t,e){return t[0]-e[0]||t[1]-e[1]}function Mp(t){for(var e,n,r,i=t.length,a=[0,1],o=2,s=2;s<i;++s){for(;o>1&&(e=t[a[o-2]],n=t[a[o-1]],r=t[s],(n[0]-e[0])*(r[1]-e[1])-(n[1]-e[1])*(r[0]-e[0])<=0);)--o;a[o++]=s}return a.slice(0,o)}var Op=function(t){if((n=t.length)<3)return null;var e,n,r=new Array(n),i=new Array(n);for(e=0;e<n;++e)r[e]=[+t[e][0],+t[e][1],e];for(r.sort(Sp),e=0;e<n;++e)i[e]=[r[e][0],-r[e][1]];var a=Mp(r),o=Mp(i),s=o[0]===a[0],u=o[o.length-1]===a[a.length-1],c=[];for(e=a.length-1;e>=0;--e)c.push(t[r[a[e]][2]]);for(e=+s;e<o.length-u;++e)c.push(t[r[o[e]][2]]);return c},Np=function(t,e){for(var n,r,i=t.length,a=t[i-1],o=e[0],s=e[1],u=a[0],c=a[1],l=!1,f=0;f<i;++f)n=(a=t[f])[0],(r=a[1])>s!=c>s&&o<(u-n)*(s-r)/(c-r)+n&&(l=!l),u=n,c=r;return l},Cp=function(t){for(var e,n,r=-1,i=t.length,a=t[i-1],o=a[0],s=a[1],u=0;++r<i;)e=o,n=s,e-=o=(a=t[r])[0],n-=s=a[1],u+=Math.sqrt(e*e+n*n);return u},Dp=function(){return Math.random()},Lp=function t(e){function n(t,n){return t=null==t?0:+t,n=null==n?1:+n,1===arguments.length?(n=t,t=0):n-=t,function(){return e()*n+t}}return n.source=t,n}(Dp),Fp=function t(e){function n(t,n){var r,i;return t=null==t?0:+t,n=null==n?1:+n,function(){var a;if(null!=r)a=r,r=null;else do{r=2*e()-1,a=2*e()-1,i=r*r+a*a}while(!i||i>1);return t+n*a*Math.sqrt(-2*Math.log(i)/i)}}return n.source=t,n}(Dp),Ip=function t(e){function n(){var t=Fp.source(e).apply(this,arguments);return function(){return Math.exp(t())}}return n.source=t,n}(Dp),Pp=function t(e){function n(t){return function(){for(var n=0,r=0;r<t;++r)n+=e();return n}}return n.source=t,n}(Dp),Rp=function t(e){function n(t){var n=Pp.source(e)(t);return function(){return n()/t}}return n.source=t,n}(Dp),Bp=function t(e){function n(t){return function(){return-Math.log(1-e())/t}}return n.source=t,n}(Dp);function jp(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t)}return this}function Yp(t,e){switch(arguments.length){case 0:break;case 1:this.interpolator(t);break;default:this.interpolator(e).domain(t)}return this}var zp=Array.prototype,Up=zp.map,$p=zp.slice,Gp={name:"implicit"};function Vp(){var t=Ji(),e=[],n=[],r=Gp;function i(i){var a=i+"",o=t.get(a);if(!o){if(r!==Gp)return r;t.set(a,o=e.push(i))}return n[(o-1)%n.length]}return i.domain=function(n){if(!arguments.length)return e.slice();e=[],t=Ji();for(var r,a,o=-1,s=n.length;++o<s;)t.has(a=(r=n[o])+"")||t.set(a,e.push(r));return i},i.range=function(t){return arguments.length?(n=$p.call(t),i):n.slice()},i.unknown=function(t){return arguments.length?(r=t,i):r},i.copy=function(){return Vp(e,n).unknown(r)},jp.apply(i,arguments),i}function Hp(){var t,e,n=Vp().unknown(void 0),r=n.domain,i=n.range,a=[0,1],o=!1,s=0,u=0,c=.5;function l(){var n=r().length,l=a[1]<a[0],f=a[l-0],h=a[1-l];t=(h-f)/Math.max(1,n-s+2*u),o&&(t=Math.floor(t)),f+=(h-f-t*(n-s))*c,e=t*(1-s),o&&(f=Math.round(f),e=Math.round(e));var d=w(n).map((function(e){return f+t*e}));return i(l?d.reverse():d)}return delete n.unknown,n.domain=function(t){return arguments.length?(r(t),l()):r()},n.range=function(t){return arguments.length?(a=[+t[0],+t[1]],l()):a.slice()},n.rangeRound=function(t){return a=[+t[0],+t[1]],o=!0,l()},n.bandwidth=function(){return e},n.step=function(){return t},n.round=function(t){return arguments.length?(o=!!t,l()):o},n.padding=function(t){return arguments.length?(s=Math.min(1,u=+t),l()):s},n.paddingInner=function(t){return arguments.length?(s=Math.min(1,t),l()):s},n.paddingOuter=function(t){return arguments.length?(u=+t,l()):u},n.align=function(t){return arguments.length?(c=Math.max(0,Math.min(1,t)),l()):c},n.copy=function(){return Hp(r(),a).round(o).paddingInner(s).paddingOuter(u).align(c)},jp.apply(l(),arguments)}function Wp(t){var e=t.copy;return t.padding=t.paddingOuter,delete t.paddingInner,delete t.paddingOuter,t.copy=function(){return Wp(e())},t}function qp(){return Wp(Hp.apply(null,arguments).paddingInner(1))}var Xp=function(t){return+t},Zp=[0,1];function Jp(t){return t}function Qp(t,e){return(e-=t=+t)?function(n){return(n-t)/e}:(n=isNaN(e)?NaN:.5,function(){return n});var n}function Kp(t){var e,n=t[0],r=t[t.length-1];return n>r&&(e=n,n=r,r=e),function(t){return Math.max(n,Math.min(r,t))}}function ty(t,e,n){var r=t[0],i=t[1],a=e[0],o=e[1];return i<r?(r=Qp(i,r),a=n(o,a)):(r=Qp(r,i),a=n(a,o)),function(t){return a(r(t))}}function ey(t,e,n){var r=Math.min(t.length,e.length)-1,i=new Array(r),a=new Array(r),o=-1;for(t[r]<t[0]&&(t=t.slice().reverse(),e=e.slice().reverse());++o<r;)i[o]=Qp(t[o],t[o+1]),a[o]=n(e[o],e[o+1]);return function(e){var n=u(t,e,1,r)-1;return a[n](i[n](e))}}function ny(t,e){return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function ry(){var t,e,n,r,i,a,o=Zp,s=Zp,u=Mn,c=Jp;function l(){return r=Math.min(o.length,s.length)>2?ey:ty,i=a=null,f}function f(e){return isNaN(e=+e)?n:(i||(i=r(o.map(t),s,u)))(t(c(e)))}return f.invert=function(n){return c(e((a||(a=r(s,o.map(t),_n)))(n)))},f.domain=function(t){return arguments.length?(o=Up.call(t,Xp),c===Jp||(c=Kp(o)),l()):o.slice()},f.range=function(t){return arguments.length?(s=$p.call(t),l()):s.slice()},f.rangeRound=function(t){return s=$p.call(t),u=cp,l()},f.clamp=function(t){return arguments.length?(c=t?Kp(o):Jp,f):c!==Jp},f.interpolate=function(t){return arguments.length?(u=t,l()):u},f.unknown=function(t){return arguments.length?(n=t,f):n},function(n,r){return t=n,e=r,l()}}function iy(t,e){return ry()(t,e)}var ay=function(t,e,n,r){var i,a=M(t,e,n);switch((r=Vs(null==r?",f":r)).type){case"s":var o=Math.max(Math.abs(t),Math.abs(e));return null!=r.precision||isNaN(i=au(a,o))||(r.precision=i),Zs(r,o);case"":case"e":case"g":case"p":case"r":null!=r.precision||isNaN(i=ou(a,Math.max(Math.abs(t),Math.abs(e))))||(r.precision=i-("e"===r.type));break;case"f":case"%":null!=r.precision||isNaN(i=iu(a))||(r.precision=i-2*("%"===r.type))}return Xs(r)};function oy(t){var e=t.domain;return t.ticks=function(t){var n=e();return T(n[0],n[n.length-1],null==t?10:t)},t.tickFormat=function(t,n){var r=e();return ay(r[0],r[r.length-1],null==t?10:t,n)},t.nice=function(n){null==n&&(n=10);var r,i=e(),a=0,o=i.length-1,s=i[a],u=i[o];return u<s&&(r=s,s=u,u=r,r=a,a=o,o=r),(r=S(s,u,n))>0?r=S(s=Math.floor(s/r)*r,u=Math.ceil(u/r)*r,n):r<0&&(r=S(s=Math.ceil(s*r)/r,u=Math.floor(u*r)/r,n)),r>0?(i[a]=Math.floor(s/r)*r,i[o]=Math.ceil(u/r)*r,e(i)):r<0&&(i[a]=Math.ceil(s*r)/r,i[o]=Math.floor(u*r)/r,e(i)),t},t}function sy(){var t=iy(Jp,Jp);return t.copy=function(){return ny(t,sy())},jp.apply(t,arguments),oy(t)}function uy(t){var e;function n(t){return isNaN(t=+t)?e:t}return n.invert=n,n.domain=n.range=function(e){return arguments.length?(t=Up.call(e,Xp),n):t.slice()},n.unknown=function(t){return arguments.length?(e=t,n):e},n.copy=function(){return uy(t).unknown(e)},t=arguments.length?Up.call(t,Xp):[0,1],oy(n)}var cy=function(t,e){var n,r=0,i=(t=t.slice()).length-1,a=t[r],o=t[i];return o<a&&(n=r,r=i,i=n,n=a,a=o,o=n),t[r]=e.floor(a),t[i]=e.ceil(o),t};function ly(t){return Math.log(t)}function fy(t){return Math.exp(t)}function hy(t){return-Math.log(-t)}function dy(t){return-Math.exp(-t)}function py(t){return isFinite(t)?+("1e"+t):t<0?0:t}function yy(t){return function(e){return-t(-e)}}function gy(t){var e,n,r=t(ly,fy),i=r.domain,a=10;function o(){return e=function(t){return t===Math.E?Math.log:10===t&&Math.log10||2===t&&Math.log2||(t=Math.log(t),function(e){return Math.log(e)/t})}(a),n=function(t){return 10===t?py:t===Math.E?Math.exp:function(e){return Math.pow(t,e)}}(a),i()[0]<0?(e=yy(e),n=yy(n),t(hy,dy)):t(ly,fy),r}return r.base=function(t){return arguments.length?(a=+t,o()):a},r.domain=function(t){return arguments.length?(i(t),o()):i()},r.ticks=function(t){var r,o=i(),s=o[0],u=o[o.length-1];(r=u<s)&&(h=s,s=u,u=h);var c,l,f,h=e(s),d=e(u),p=null==t?10:+t,y=[];if(!(a%1)&&d-h<p){if(h=Math.round(h)-1,d=Math.round(d)+1,s>0){for(;h<d;++h)for(l=1,c=n(h);l<a;++l)if(!((f=c*l)<s)){if(f>u)break;y.push(f)}}else for(;h<d;++h)for(l=a-1,c=n(h);l>=1;--l)if(!((f=c*l)<s)){if(f>u)break;y.push(f)}}else y=T(h,d,Math.min(d-h,p)).map(n);return r?y.reverse():y},r.tickFormat=function(t,i){if(null==i&&(i=10===a?".0e":","),"function"!=typeof i&&(i=Xs(i)),t===1/0)return i;null==t&&(t=10);var o=Math.max(1,a*t/r.ticks().length);return function(t){var r=t/n(Math.round(e(t)));return r*a<a-.5&&(r*=a),r<=o?i(t):""}},r.nice=function(){return i(cy(i(),{floor:function(t){return n(Math.floor(e(t)))},ceil:function(t){return n(Math.ceil(e(t)))}}))},r}function my(){var t=gy(ry()).domain([1,10]);return t.copy=function(){return ny(t,my()).base(t.base())},jp.apply(t,arguments),t}function vy(t){return function(e){return Math.sign(e)*Math.log1p(Math.abs(e/t))}}function by(t){return function(e){return Math.sign(e)*Math.expm1(Math.abs(e))*t}}function xy(t){var e=1,n=t(vy(e),by(e));return n.constant=function(n){return arguments.length?t(vy(e=+n),by(e)):e},oy(n)}function _y(){var t=xy(ry());return t.copy=function(){return ny(t,_y()).constant(t.constant())},jp.apply(t,arguments)}function wy(t){return function(e){return e<0?-Math.pow(-e,t):Math.pow(e,t)}}function ky(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}function Ey(t){return t<0?-t*t:t*t}function Ay(t){var e=t(Jp,Jp),n=1;function r(){return 1===n?t(Jp,Jp):.5===n?t(ky,Ey):t(wy(n),wy(1/n))}return e.exponent=function(t){return arguments.length?(n=+t,r()):n},oy(e)}function Ty(){var t=Ay(ry());return t.copy=function(){return ny(t,Ty()).exponent(t.exponent())},jp.apply(t,arguments),t}function Sy(){return Ty.apply(null,arguments).exponent(.5)}function My(){var t,e=[],n=[],i=[];function a(){var t=0,r=Math.max(1,n.length);for(i=new Array(r-1);++t<r;)i[t-1]=C(e,t/r);return o}function o(e){return isNaN(e=+e)?t:n[u(i,e)]}return o.invertExtent=function(t){var r=n.indexOf(t);return r<0?[NaN,NaN]:[r>0?i[r-1]:e[0],r<i.length?i[r]:e[e.length-1]]},o.domain=function(t){if(!arguments.length)return e.slice();e=[];for(var n,i=0,o=t.length;i<o;++i)null==(n=t[i])||isNaN(n=+n)||e.push(n);return e.sort(r),a()},o.range=function(t){return arguments.length?(n=$p.call(t),a()):n.slice()},o.unknown=function(e){return arguments.length?(t=e,o):t},o.quantiles=function(){return i.slice()},o.copy=function(){return My().domain(e).range(n).unknown(t)},jp.apply(o,arguments)}function Oy(){var t,e=0,n=1,r=1,i=[.5],a=[0,1];function o(e){return e<=e?a[u(i,e,0,r)]:t}function s(){var t=-1;for(i=new Array(r);++t<r;)i[t]=((t+1)*n-(t-r)*e)/(r+1);return o}return o.domain=function(t){return arguments.length?(e=+t[0],n=+t[1],s()):[e,n]},o.range=function(t){return arguments.length?(r=(a=$p.call(t)).length-1,s()):a.slice()},o.invertExtent=function(t){var o=a.indexOf(t);return o<0?[NaN,NaN]:o<1?[e,i[0]]:o>=r?[i[r-1],n]:[i[o-1],i[o]]},o.unknown=function(e){return arguments.length?(t=e,o):o},o.thresholds=function(){return i.slice()},o.copy=function(){return Oy().domain([e,n]).range(a).unknown(t)},jp.apply(oy(o),arguments)}function Ny(){var t,e=[.5],n=[0,1],r=1;function i(i){return i<=i?n[u(e,i,0,r)]:t}return i.domain=function(t){return arguments.length?(e=$p.call(t),r=Math.min(e.length,n.length-1),i):e.slice()},i.range=function(t){return arguments.length?(n=$p.call(t),r=Math.min(e.length,n.length-1),i):n.slice()},i.invertExtent=function(t){var r=n.indexOf(t);return[e[r-1],e[r]]},i.unknown=function(e){return arguments.length?(t=e,i):t},i.copy=function(){return Ny().domain(e).range(n).unknown(t)},jp.apply(i,arguments)}var Cy=new Date,Dy=new Date;function Ly(t,e,n,r){function i(e){return t(e=0===arguments.length?new Date:new Date(+e)),e}return i.floor=function(e){return t(e=new Date(+e)),e},i.ceil=function(n){return t(n=new Date(n-1)),e(n,1),t(n),n},i.round=function(t){var e=i(t),n=i.ceil(t);return t-e<n-t?e:n},i.offset=function(t,n){return e(t=new Date(+t),null==n?1:Math.floor(n)),t},i.range=function(n,r,a){var o,s=[];if(n=i.ceil(n),a=null==a?1:Math.floor(a),!(n<r&&a>0))return s;do{s.push(o=new Date(+n)),e(n,a),t(n)}while(o<n&&n<r);return s},i.filter=function(n){return Ly((function(e){if(e>=e)for(;t(e),!n(e);)e.setTime(e-1)}),(function(t,r){if(t>=t)if(r<0)for(;++r<=0;)for(;e(t,-1),!n(t););else for(;--r>=0;)for(;e(t,1),!n(t););}))},n&&(i.count=function(e,r){return Cy.setTime(+e),Dy.setTime(+r),t(Cy),t(Dy),Math.floor(n(Cy,Dy))},i.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?i.filter(r?function(e){return r(e)%t==0}:function(e){return i.count(0,e)%t==0}):i:null}),i}var Fy=Ly((function(t){t.setMonth(0,1),t.setHours(0,0,0,0)}),(function(t,e){t.setFullYear(t.getFullYear()+e)}),(function(t,e){return e.getFullYear()-t.getFullYear()}),(function(t){return t.getFullYear()}));Fy.every=function(t){return isFinite(t=Math.floor(t))&&t>0?Ly((function(e){e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)}),(function(e,n){e.setFullYear(e.getFullYear()+n*t)})):null};var Iy=Fy,Py=Fy.range,Ry=Ly((function(t){t.setDate(1),t.setHours(0,0,0,0)}),(function(t,e){t.setMonth(t.getMonth()+e)}),(function(t,e){return e.getMonth()-t.getMonth()+12*(e.getFullYear()-t.getFullYear())}),(function(t){return t.getMonth()})),By=Ry,jy=Ry.range;function Yy(t){return Ly((function(e){e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)}),(function(t,e){t.setDate(t.getDate()+7*e)}),(function(t,e){return(e-t-6e4*(e.getTimezoneOffset()-t.getTimezoneOffset()))/6048e5}))}var zy=Yy(0),Uy=Yy(1),$y=Yy(2),Gy=Yy(3),Vy=Yy(4),Hy=Yy(5),Wy=Yy(6),qy=zy.range,Xy=Uy.range,Zy=$y.range,Jy=Gy.range,Qy=Vy.range,Ky=Hy.range,tg=Wy.range,eg=Ly((function(t){t.setHours(0,0,0,0)}),(function(t,e){t.setDate(t.getDate()+e)}),(function(t,e){return(e-t-6e4*(e.getTimezoneOffset()-t.getTimezoneOffset()))/864e5}),(function(t){return t.getDate()-1})),ng=eg,rg=eg.range,ig=Ly((function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds()-6e4*t.getMinutes())}),(function(t,e){t.setTime(+t+36e5*e)}),(function(t,e){return(e-t)/36e5}),(function(t){return t.getHours()})),ag=ig,og=ig.range,sg=Ly((function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds())}),(function(t,e){t.setTime(+t+6e4*e)}),(function(t,e){return(e-t)/6e4}),(function(t){return t.getMinutes()})),ug=sg,cg=sg.range,lg=Ly((function(t){t.setTime(t-t.getMilliseconds())}),(function(t,e){t.setTime(+t+1e3*e)}),(function(t,e){return(e-t)/1e3}),(function(t){return t.getUTCSeconds()})),fg=lg,hg=lg.range,dg=Ly((function(){}),(function(t,e){t.setTime(+t+e)}),(function(t,e){return e-t}));dg.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?Ly((function(e){e.setTime(Math.floor(e/t)*t)}),(function(e,n){e.setTime(+e+n*t)}),(function(e,n){return(n-e)/t})):dg:null};var pg=dg,yg=dg.range;function gg(t){return Ly((function(e){e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+7*e)}),(function(t,e){return(e-t)/6048e5}))}var mg=gg(0),vg=gg(1),bg=gg(2),xg=gg(3),_g=gg(4),wg=gg(5),kg=gg(6),Eg=mg.range,Ag=vg.range,Tg=bg.range,Sg=xg.range,Mg=_g.range,Og=wg.range,Ng=kg.range,Cg=Ly((function(t){t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+e)}),(function(t,e){return(e-t)/864e5}),(function(t){return t.getUTCDate()-1})),Dg=Cg,Lg=Cg.range,Fg=Ly((function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)}),(function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()}),(function(t){return t.getUTCFullYear()}));Fg.every=function(t){return isFinite(t=Math.floor(t))&&t>0?Ly((function(e){e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)}),(function(e,n){e.setUTCFullYear(e.getUTCFullYear()+n*t)})):null};var Ig=Fg,Pg=Fg.range;function Rg(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function Bg(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function jg(t,e,n){return{y:t,m:e,d:n,H:0,M:0,S:0,L:0}}function Yg(t){var e=t.dateTime,n=t.date,r=t.time,i=t.periods,a=t.days,o=t.shortDays,s=t.months,u=t.shortMonths,c=Qg(i),l=Kg(i),f=Qg(a),h=Kg(a),d=Qg(o),p=Kg(o),y=Qg(s),g=Kg(s),m=Qg(u),v=Kg(u),b={a:function(t){return o[t.getDay()]},A:function(t){return a[t.getDay()]},b:function(t){return u[t.getMonth()]},B:function(t){return s[t.getMonth()]},c:null,d:xm,e:xm,f:Am,H:_m,I:wm,j:km,L:Em,m:Tm,M:Sm,p:function(t){return i[+(t.getHours()>=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:ev,s:nv,S:Mm,u:Om,U:Nm,V:Cm,w:Dm,W:Lm,x:null,X:null,y:Fm,Y:Im,Z:Pm,"%":tv},x={a:function(t){return o[t.getUTCDay()]},A:function(t){return a[t.getUTCDay()]},b:function(t){return u[t.getUTCMonth()]},B:function(t){return s[t.getUTCMonth()]},c:null,d:Rm,e:Rm,f:Um,H:Bm,I:jm,j:Ym,L:zm,m:$m,M:Gm,p:function(t){return i[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:ev,s:nv,S:Vm,u:Hm,U:Wm,V:qm,w:Xm,W:Zm,x:null,X:null,y:Jm,Y:Qm,Z:Km,"%":tv},_={a:function(t,e,n){var r=d.exec(e.slice(n));return r?(t.w=p[r[0].toLowerCase()],n+r[0].length):-1},A:function(t,e,n){var r=f.exec(e.slice(n));return r?(t.w=h[r[0].toLowerCase()],n+r[0].length):-1},b:function(t,e,n){var r=m.exec(e.slice(n));return r?(t.m=v[r[0].toLowerCase()],n+r[0].length):-1},B:function(t,e,n){var r=y.exec(e.slice(n));return r?(t.m=g[r[0].toLowerCase()],n+r[0].length):-1},c:function(t,n,r){return E(t,e,n,r)},d:lm,e:lm,f:gm,H:hm,I:hm,j:fm,L:ym,m:cm,M:dm,p:function(t,e,n){var r=c.exec(e.slice(n));return r?(t.p=l[r[0].toLowerCase()],n+r[0].length):-1},q:um,Q:vm,s:bm,S:pm,u:em,U:nm,V:rm,w:tm,W:im,x:function(t,e,r){return E(t,n,e,r)},X:function(t,e,n){return E(t,r,e,n)},y:om,Y:am,Z:sm,"%":mm};function w(t,e){return function(n){var r,i,a,o=[],s=-1,u=0,c=t.length;for(n instanceof Date||(n=new Date(+n));++s<c;)37===t.charCodeAt(s)&&(o.push(t.slice(u,s)),null!=(i=Hg[r=t.charAt(++s)])?r=t.charAt(++s):i="e"===r?" ":"0",(a=e[r])&&(r=a(n,i)),o.push(r),u=s+1);return o.push(t.slice(u,s)),o.join("")}}function k(t,e){return function(n){var r,i,a=jg(1900,void 0,1);if(E(a,t,n+="",0)!=n.length)return null;if("Q"in a)return new Date(a.Q);if("s"in a)return new Date(1e3*a.s+("L"in a?a.L:0));if(!e||"Z"in a||(a.Z=0),"p"in a&&(a.H=a.H%12+12*a.p),void 0===a.m&&(a.m="q"in a?a.q:0),"V"in a){if(a.V<1||a.V>53)return null;"w"in a||(a.w=1),"Z"in a?(i=(r=Bg(jg(a.y,0,1))).getUTCDay(),r=i>4||0===i?vg.ceil(r):vg(r),r=Dg.offset(r,7*(a.V-1)),a.y=r.getUTCFullYear(),a.m=r.getUTCMonth(),a.d=r.getUTCDate()+(a.w+6)%7):(i=(r=Rg(jg(a.y,0,1))).getDay(),r=i>4||0===i?Uy.ceil(r):Uy(r),r=ng.offset(r,7*(a.V-1)),a.y=r.getFullYear(),a.m=r.getMonth(),a.d=r.getDate()+(a.w+6)%7)}else("W"in a||"U"in a)&&("w"in a||(a.w="u"in a?a.u%7:"W"in a?1:0),i="Z"in a?Bg(jg(a.y,0,1)).getUTCDay():Rg(jg(a.y,0,1)).getDay(),a.m=0,a.d="W"in a?(a.w+6)%7+7*a.W-(i+5)%7:a.w+7*a.U-(i+6)%7);return"Z"in a?(a.H+=a.Z/100|0,a.M+=a.Z%100,Bg(a)):Rg(a)}}function E(t,e,n,r){for(var i,a,o=0,s=e.length,u=n.length;o<s;){if(r>=u)return-1;if(37===(i=e.charCodeAt(o++))){if(i=e.charAt(o++),!(a=_[i in Hg?e.charAt(o++):i])||(r=a(t,n,r))<0)return-1}else if(i!=n.charCodeAt(r++))return-1}return r}return(b.x=w(n,b),b.X=w(r,b),b.c=w(e,b),x.x=w(n,x),x.X=w(r,x),x.c=w(e,x),{format:function(t){var e=w(t+="",b);return e.toString=function(){return t},e},parse:function(t){var e=k(t+="",!1);return e.toString=function(){return t},e},utcFormat:function(t){var e=w(t+="",x);return e.toString=function(){return t},e},utcParse:function(t){var e=k(t+="",!0);return e.toString=function(){return t},e}})}var zg,Ug,$g,Gg,Vg,Hg={"-":"",_:" ",0:"0"},Wg=/^\s*\d+/,qg=/^%/,Xg=/[\\^$*+?|[\]().{}]/g;function Zg(t,e,n){var r=t<0?"-":"",i=(r?-t:t)+"",a=i.length;return r+(a<n?new Array(n-a+1).join(e)+i:i)}function Jg(t){return t.replace(Xg,"\\$&")}function Qg(t){return new RegExp("^(?:"+t.map(Jg).join("|")+")","i")}function Kg(t){for(var e={},n=-1,r=t.length;++n<r;)e[t[n].toLowerCase()]=n;return e}function tm(t,e,n){var r=Wg.exec(e.slice(n,n+1));return r?(t.w=+r[0],n+r[0].length):-1}function em(t,e,n){var r=Wg.exec(e.slice(n,n+1));return r?(t.u=+r[0],n+r[0].length):-1}function nm(t,e,n){var r=Wg.exec(e.slice(n,n+2));return r?(t.U=+r[0],n+r[0].length):-1}function rm(t,e,n){var r=Wg.exec(e.slice(n,n+2));return r?(t.V=+r[0],n+r[0].length):-1}function im(t,e,n){var r=Wg.exec(e.slice(n,n+2));return r?(t.W=+r[0],n+r[0].length):-1}function am(t,e,n){var r=Wg.exec(e.slice(n,n+4));return r?(t.y=+r[0],n+r[0].length):-1}function om(t,e,n){var r=Wg.exec(e.slice(n,n+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function sm(t,e,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),n+r[0].length):-1}function um(t,e,n){var r=Wg.exec(e.slice(n,n+1));return r?(t.q=3*r[0]-3,n+r[0].length):-1}function cm(t,e,n){var r=Wg.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function lm(t,e,n){var r=Wg.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function fm(t,e,n){var r=Wg.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function hm(t,e,n){var r=Wg.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function dm(t,e,n){var r=Wg.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function pm(t,e,n){var r=Wg.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function ym(t,e,n){var r=Wg.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function gm(t,e,n){var r=Wg.exec(e.slice(n,n+6));return r?(t.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function mm(t,e,n){var r=qg.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function vm(t,e,n){var r=Wg.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function bm(t,e,n){var r=Wg.exec(e.slice(n));return r?(t.s=+r[0],n+r[0].length):-1}function xm(t,e){return Zg(t.getDate(),e,2)}function _m(t,e){return Zg(t.getHours(),e,2)}function wm(t,e){return Zg(t.getHours()%12||12,e,2)}function km(t,e){return Zg(1+ng.count(Iy(t),t),e,3)}function Em(t,e){return Zg(t.getMilliseconds(),e,3)}function Am(t,e){return Em(t,e)+"000"}function Tm(t,e){return Zg(t.getMonth()+1,e,2)}function Sm(t,e){return Zg(t.getMinutes(),e,2)}function Mm(t,e){return Zg(t.getSeconds(),e,2)}function Om(t){var e=t.getDay();return 0===e?7:e}function Nm(t,e){return Zg(zy.count(Iy(t)-1,t),e,2)}function Cm(t,e){var n=t.getDay();return t=n>=4||0===n?Vy(t):Vy.ceil(t),Zg(Vy.count(Iy(t),t)+(4===Iy(t).getDay()),e,2)}function Dm(t){return t.getDay()}function Lm(t,e){return Zg(Uy.count(Iy(t)-1,t),e,2)}function Fm(t,e){return Zg(t.getFullYear()%100,e,2)}function Im(t,e){return Zg(t.getFullYear()%1e4,e,4)}function Pm(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+Zg(e/60|0,"0",2)+Zg(e%60,"0",2)}function Rm(t,e){return Zg(t.getUTCDate(),e,2)}function Bm(t,e){return Zg(t.getUTCHours(),e,2)}function jm(t,e){return Zg(t.getUTCHours()%12||12,e,2)}function Ym(t,e){return Zg(1+Dg.count(Ig(t),t),e,3)}function zm(t,e){return Zg(t.getUTCMilliseconds(),e,3)}function Um(t,e){return zm(t,e)+"000"}function $m(t,e){return Zg(t.getUTCMonth()+1,e,2)}function Gm(t,e){return Zg(t.getUTCMinutes(),e,2)}function Vm(t,e){return Zg(t.getUTCSeconds(),e,2)}function Hm(t){var e=t.getUTCDay();return 0===e?7:e}function Wm(t,e){return Zg(mg.count(Ig(t)-1,t),e,2)}function qm(t,e){var n=t.getUTCDay();return t=n>=4||0===n?_g(t):_g.ceil(t),Zg(_g.count(Ig(t),t)+(4===Ig(t).getUTCDay()),e,2)}function Xm(t){return t.getUTCDay()}function Zm(t,e){return Zg(vg.count(Ig(t)-1,t),e,2)}function Jm(t,e){return Zg(t.getUTCFullYear()%100,e,2)}function Qm(t,e){return Zg(t.getUTCFullYear()%1e4,e,4)}function Km(){return"+0000"}function tv(){return"%"}function ev(t){return+t}function nv(t){return Math.floor(+t/1e3)}function rv(t){return zg=Yg(t),Ug=zg.format,$g=zg.parse,Gg=zg.utcFormat,Vg=zg.utcParse,zg}rv({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function iv(t){return new Date(t)}function av(t){return t instanceof Date?+t:+new Date(+t)}function ov(t,e,n,r,a,o,s,u,c){var l=iy(Jp,Jp),f=l.invert,h=l.domain,d=c(".%L"),p=c(":%S"),y=c("%I:%M"),g=c("%I %p"),m=c("%a %d"),v=c("%b %d"),b=c("%B"),x=c("%Y"),_=[[s,1,1e3],[s,5,5e3],[s,15,15e3],[s,30,3e4],[o,1,6e4],[o,5,3e5],[o,15,9e5],[o,30,18e5],[a,1,36e5],[a,3,108e5],[a,6,216e5],[a,12,432e5],[r,1,864e5],[r,2,1728e5],[n,1,6048e5],[e,1,2592e6],[e,3,7776e6],[t,1,31536e6]];function w(i){return(s(i)<i?d:o(i)<i?p:a(i)<i?y:r(i)<i?g:e(i)<i?n(i)<i?m:v:t(i)<i?b:x)(i)}function k(e,n,r,a){if(null==e&&(e=10),"number"==typeof e){var o=Math.abs(r-n)/e,s=i((function(t){return t[2]})).right(_,o);s===_.length?(a=M(n/31536e6,r/31536e6,e),e=t):s?(a=(s=_[o/_[s-1][2]<_[s][2]/o?s-1:s])[1],e=s[0]):(a=Math.max(M(n,r,e),1),e=u)}return null==a?e:e.every(a)}return l.invert=function(t){return new Date(f(t))},l.domain=function(t){return arguments.length?h(Up.call(t,av)):h().map(iv)},l.ticks=function(t,e){var n,r=h(),i=r[0],a=r[r.length-1],o=a<i;return o&&(n=i,i=a,a=n),n=(n=k(t,i,a,e))?n.range(i,a+1):[],o?n.reverse():n},l.tickFormat=function(t,e){return null==e?w:c(e)},l.nice=function(t,e){var n=h();return(t=k(t,n[0],n[n.length-1],e))?h(cy(n,t)):l},l.copy=function(){return ny(l,ov(t,e,n,r,a,o,s,u,c))},l}var sv=function(){return jp.apply(ov(Iy,By,zy,ng,ag,ug,fg,pg,Ug).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)},uv=Ly((function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCMonth(t.getUTCMonth()+e)}),(function(t,e){return e.getUTCMonth()-t.getUTCMonth()+12*(e.getUTCFullYear()-t.getUTCFullYear())}),(function(t){return t.getUTCMonth()})),cv=uv,lv=uv.range,fv=Ly((function(t){t.setUTCMinutes(0,0,0)}),(function(t,e){t.setTime(+t+36e5*e)}),(function(t,e){return(e-t)/36e5}),(function(t){return t.getUTCHours()})),hv=fv,dv=fv.range,pv=Ly((function(t){t.setUTCSeconds(0,0)}),(function(t,e){t.setTime(+t+6e4*e)}),(function(t,e){return(e-t)/6e4}),(function(t){return t.getUTCMinutes()})),yv=pv,gv=pv.range,mv=function(){return jp.apply(ov(Ig,cv,mg,Dg,hv,yv,fg,pg,Gg).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)};function vv(){var t,e,n,r,i,a=0,o=1,s=Jp,u=!1;function c(e){return isNaN(e=+e)?i:s(0===n?.5:(e=(r(e)-t)*n,u?Math.max(0,Math.min(1,e)):e))}return c.domain=function(i){return arguments.length?(t=r(a=+i[0]),e=r(o=+i[1]),n=t===e?0:1/(e-t),c):[a,o]},c.clamp=function(t){return arguments.length?(u=!!t,c):u},c.interpolator=function(t){return arguments.length?(s=t,c):s},c.unknown=function(t){return arguments.length?(i=t,c):i},function(i){return r=i,t=i(a),e=i(o),n=t===e?0:1/(e-t),c}}function bv(t,e){return e.domain(t.domain()).interpolator(t.interpolator()).clamp(t.clamp()).unknown(t.unknown())}function xv(){var t=oy(vv()(Jp));return t.copy=function(){return bv(t,xv())},Yp.apply(t,arguments)}function _v(){var t=gy(vv()).domain([1,10]);return t.copy=function(){return bv(t,_v()).base(t.base())},Yp.apply(t,arguments)}function wv(){var t=xy(vv());return t.copy=function(){return bv(t,wv()).constant(t.constant())},Yp.apply(t,arguments)}function kv(){var t=Ay(vv());return t.copy=function(){return bv(t,kv()).exponent(t.exponent())},Yp.apply(t,arguments)}function Ev(){return kv.apply(null,arguments).exponent(.5)}function Av(){var t=[],e=Jp;function n(n){if(!isNaN(n=+n))return e((u(t,n)-1)/(t.length-1))}return n.domain=function(e){if(!arguments.length)return t.slice();t=[];for(var i,a=0,o=e.length;a<o;++a)null==(i=e[a])||isNaN(i=+i)||t.push(i);return t.sort(r),n},n.interpolator=function(t){return arguments.length?(e=t,n):e},n.copy=function(){return Av(e).domain(t)},Yp.apply(n,arguments)}function Tv(){var t,e,n,r,i,a,o,s=0,u=.5,c=1,l=Jp,f=!1;function h(t){return isNaN(t=+t)?o:(t=.5+((t=+a(t))-e)*(t<e?r:i),l(f?Math.max(0,Math.min(1,t)):t))}return h.domain=function(o){return arguments.length?(t=a(s=+o[0]),e=a(u=+o[1]),n=a(c=+o[2]),r=t===e?0:.5/(e-t),i=e===n?0:.5/(n-e),h):[s,u,c]},h.clamp=function(t){return arguments.length?(f=!!t,h):f},h.interpolator=function(t){return arguments.length?(l=t,h):l},h.unknown=function(t){return arguments.length?(o=t,h):o},function(o){return a=o,t=o(s),e=o(u),n=o(c),r=t===e?0:.5/(e-t),i=e===n?0:.5/(n-e),h}}function Sv(){var t=oy(Tv()(Jp));return t.copy=function(){return bv(t,Sv())},Yp.apply(t,arguments)}function Mv(){var t=gy(Tv()).domain([.1,1,10]);return t.copy=function(){return bv(t,Mv()).base(t.base())},Yp.apply(t,arguments)}function Ov(){var t=xy(Tv());return t.copy=function(){return bv(t,Ov()).constant(t.constant())},Yp.apply(t,arguments)}function Nv(){var t=Ay(Tv());return t.copy=function(){return bv(t,Nv()).exponent(t.exponent())},Yp.apply(t,arguments)}function Cv(){return Nv.apply(null,arguments).exponent(.5)}var Dv=function(t){for(var e=t.length/6|0,n=new Array(e),r=0;r<e;)n[r]="#"+t.slice(6*r,6*++r);return n},Lv=Dv("1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf"),Fv=Dv("7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666"),Iv=Dv("1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666"),Pv=Dv("a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928"),Rv=Dv("fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2"),Bv=Dv("b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc"),jv=Dv("e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999"),Yv=Dv("66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3"),zv=Dv("8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f"),Uv=Dv("4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab"),$v=function(t){return pn(t[t.length-1])},Gv=new Array(3).concat("d8b365f5f5f55ab4ac","a6611adfc27d80cdc1018571","a6611adfc27df5f5f580cdc1018571","8c510ad8b365f6e8c3c7eae55ab4ac01665e","8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e","8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e","8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e","5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30","5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30").map(Dv),Vv=$v(Gv),Hv=new Array(3).concat("af8dc3f7f7f77fbf7b","7b3294c2a5cfa6dba0008837","7b3294c2a5cff7f7f7a6dba0008837","762a83af8dc3e7d4e8d9f0d37fbf7b1b7837","762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837","762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837","762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837","40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b","40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b").map(Dv),Wv=$v(Hv),qv=new Array(3).concat("e9a3c9f7f7f7a1d76a","d01c8bf1b6dab8e1864dac26","d01c8bf1b6daf7f7f7b8e1864dac26","c51b7de9a3c9fde0efe6f5d0a1d76a4d9221","c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221","c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221","c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221","8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419","8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419").map(Dv),Xv=$v(qv),Zv=new Array(3).concat("998ec3f7f7f7f1a340","5e3c99b2abd2fdb863e66101","5e3c99b2abd2f7f7f7fdb863e66101","542788998ec3d8daebfee0b6f1a340b35806","542788998ec3d8daebf7f7f7fee0b6f1a340b35806","5427888073acb2abd2d8daebfee0b6fdb863e08214b35806","5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806","2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08","2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08").map(Dv),Jv=$v(Zv),Qv=new Array(3).concat("ef8a62f7f7f767a9cf","ca0020f4a58292c5de0571b0","ca0020f4a582f7f7f792c5de0571b0","b2182bef8a62fddbc7d1e5f067a9cf2166ac","b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac","b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac","b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac","67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061","67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061").map(Dv),Kv=$v(Qv),tb=new Array(3).concat("ef8a62ffffff999999","ca0020f4a582bababa404040","ca0020f4a582ffffffbababa404040","b2182bef8a62fddbc7e0e0e09999994d4d4d","b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d","b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d","b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d","67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a","67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a").map(Dv),eb=$v(tb),nb=new Array(3).concat("fc8d59ffffbf91bfdb","d7191cfdae61abd9e92c7bb6","d7191cfdae61ffffbfabd9e92c7bb6","d73027fc8d59fee090e0f3f891bfdb4575b4","d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4","d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4","d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4","a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695","a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695").map(Dv),rb=$v(nb),ib=new Array(3).concat("fc8d59ffffbf91cf60","d7191cfdae61a6d96a1a9641","d7191cfdae61ffffbfa6d96a1a9641","d73027fc8d59fee08bd9ef8b91cf601a9850","d73027fc8d59fee08bffffbfd9ef8b91cf601a9850","d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850","d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850","a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837","a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837").map(Dv),ab=$v(ib),ob=new Array(3).concat("fc8d59ffffbf99d594","d7191cfdae61abdda42b83ba","d7191cfdae61ffffbfabdda42b83ba","d53e4ffc8d59fee08be6f59899d5943288bd","d53e4ffc8d59fee08bffffbfe6f59899d5943288bd","d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd","d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd","9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2","9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2").map(Dv),sb=$v(ob),ub=new Array(3).concat("e5f5f999d8c92ca25f","edf8fbb2e2e266c2a4238b45","edf8fbb2e2e266c2a42ca25f006d2c","edf8fbccece699d8c966c2a42ca25f006d2c","edf8fbccece699d8c966c2a441ae76238b45005824","f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824","f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b").map(Dv),cb=$v(ub),lb=new Array(3).concat("e0ecf49ebcda8856a7","edf8fbb3cde38c96c688419d","edf8fbb3cde38c96c68856a7810f7c","edf8fbbfd3e69ebcda8c96c68856a7810f7c","edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b","f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b","f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b").map(Dv),fb=$v(lb),hb=new Array(3).concat("e0f3dba8ddb543a2ca","f0f9e8bae4bc7bccc42b8cbe","f0f9e8bae4bc7bccc443a2ca0868ac","f0f9e8ccebc5a8ddb57bccc443a2ca0868ac","f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e","f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e","f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081").map(Dv),db=$v(hb),pb=new Array(3).concat("fee8c8fdbb84e34a33","fef0d9fdcc8afc8d59d7301f","fef0d9fdcc8afc8d59e34a33b30000","fef0d9fdd49efdbb84fc8d59e34a33b30000","fef0d9fdd49efdbb84fc8d59ef6548d7301f990000","fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000","fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000").map(Dv),yb=$v(pb),gb=new Array(3).concat("ece2f0a6bddb1c9099","f6eff7bdc9e167a9cf02818a","f6eff7bdc9e167a9cf1c9099016c59","f6eff7d0d1e6a6bddb67a9cf1c9099016c59","f6eff7d0d1e6a6bddb67a9cf3690c002818a016450","fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450","fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636").map(Dv),mb=$v(gb),vb=new Array(3).concat("ece7f2a6bddb2b8cbe","f1eef6bdc9e174a9cf0570b0","f1eef6bdc9e174a9cf2b8cbe045a8d","f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d","f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b","fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b","fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858").map(Dv),bb=$v(vb),xb=new Array(3).concat("e7e1efc994c7dd1c77","f1eef6d7b5d8df65b0ce1256","f1eef6d7b5d8df65b0dd1c77980043","f1eef6d4b9dac994c7df65b0dd1c77980043","f1eef6d4b9dac994c7df65b0e7298ace125691003f","f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f","f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f").map(Dv),_b=$v(xb),wb=new Array(3).concat("fde0ddfa9fb5c51b8a","feebe2fbb4b9f768a1ae017e","feebe2fbb4b9f768a1c51b8a7a0177","feebe2fcc5c0fa9fb5f768a1c51b8a7a0177","feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177","fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177","fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a").map(Dv),kb=$v(wb),Eb=new Array(3).concat("edf8b17fcdbb2c7fb8","ffffcca1dab441b6c4225ea8","ffffcca1dab441b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58").map(Dv),Ab=$v(Eb),Tb=new Array(3).concat("f7fcb9addd8e31a354","ffffccc2e69978c679238443","ffffccc2e69978c67931a354006837","ffffccd9f0a3addd8e78c67931a354006837","ffffccd9f0a3addd8e78c67941ab5d238443005a32","ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32","ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529").map(Dv),Sb=$v(Tb),Mb=new Array(3).concat("fff7bcfec44fd95f0e","ffffd4fed98efe9929cc4c02","ffffd4fed98efe9929d95f0e993404","ffffd4fee391fec44ffe9929d95f0e993404","ffffd4fee391fec44ffe9929ec7014cc4c028c2d04","ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04","ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506").map(Dv),Ob=$v(Mb),Nb=new Array(3).concat("ffeda0feb24cf03b20","ffffb2fecc5cfd8d3ce31a1c","ffffb2fecc5cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026").map(Dv),Cb=$v(Nb),Db=new Array(3).concat("deebf79ecae13182bd","eff3ffbdd7e76baed62171b5","eff3ffbdd7e76baed63182bd08519c","eff3ffc6dbef9ecae16baed63182bd08519c","eff3ffc6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b").map(Dv),Lb=$v(Db),Fb=new Array(3).concat("e5f5e0a1d99b31a354","edf8e9bae4b374c476238b45","edf8e9bae4b374c47631a354006d2c","edf8e9c7e9c0a1d99b74c47631a354006d2c","edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b").map(Dv),Ib=$v(Fb),Pb=new Array(3).concat("f0f0f0bdbdbd636363","f7f7f7cccccc969696525252","f7f7f7cccccc969696636363252525","f7f7f7d9d9d9bdbdbd969696636363252525","f7f7f7d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000").map(Dv),Rb=$v(Pb),Bb=new Array(3).concat("efedf5bcbddc756bb1","f2f0f7cbc9e29e9ac86a51a3","f2f0f7cbc9e29e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d").map(Dv),jb=$v(Bb),Yb=new Array(3).concat("fee0d2fc9272de2d26","fee5d9fcae91fb6a4acb181d","fee5d9fcae91fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d").map(Dv),zb=$v(Yb),Ub=new Array(3).concat("fee6cefdae6be6550d","feeddefdbe85fd8d3cd94701","feeddefdbe85fd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704").map(Dv),$b=$v(Ub),Gb=function(t){return t=Math.max(0,Math.min(1,t)),"rgb("+Math.max(0,Math.min(255,Math.round(-4.54-t*(35.34-t*(2381.73-t*(6402.7-t*(7024.72-2710.57*t)))))))+", "+Math.max(0,Math.min(255,Math.round(32.49+t*(170.73+t*(52.82-t*(131.46-t*(176.58-67.37*t)))))))+", "+Math.max(0,Math.min(255,Math.round(81.24+t*(442.36-t*(2482.43-t*(6167.24-t*(6614.94-2475.67*t)))))))+")"},Vb=wp(Na(300,.5,0),Na(-240,.5,1)),Hb=wp(Na(-100,.75,.35),Na(80,1.5,.8)),Wb=wp(Na(260,.75,.35),Na(80,1.5,.8)),qb=Na(),Xb=function(t){(t<0||t>1)&&(t-=Math.floor(t));var e=Math.abs(t-.5);return qb.h=360*t-100,qb.s=1.5-1.5*e,qb.l=.8-.9*e,qb+""},Zb=We(),Jb=Math.PI/3,Qb=2*Math.PI/3,Kb=function(t){var e;return t=(.5-t)*Math.PI,Zb.r=255*(e=Math.sin(t))*e,Zb.g=255*(e=Math.sin(t+Jb))*e,Zb.b=255*(e=Math.sin(t+Qb))*e,Zb+""},tx=function(t){return t=Math.max(0,Math.min(1,t)),"rgb("+Math.max(0,Math.min(255,Math.round(34.61+t*(1172.33-t*(10793.56-t*(33300.12-t*(38394.49-14825.05*t)))))))+", "+Math.max(0,Math.min(255,Math.round(23.31+t*(557.33+t*(1225.33-t*(3574.96-t*(1073.77+707.56*t)))))))+", "+Math.max(0,Math.min(255,Math.round(27.2+t*(3211.1-t*(15327.97-t*(27814-t*(22569.18-6838.66*t)))))))+")"};function ex(t){var e=t.length;return function(n){return t[Math.max(0,Math.min(e-1,Math.floor(n*e)))]}}var nx=ex(Dv("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725")),rx=ex(Dv("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")),ix=ex(Dv("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")),ax=ex(Dv("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921")),ox=function(t){return we(ne(t).call(document.documentElement))},sx=0;function ux(){return new cx}function cx(){this._="@"+(++sx).toString(36)}cx.prototype=ux.prototype={constructor:cx,get:function(t){for(var e=this._;!(e in t);)if(!(t=t.parentNode))return;return t[e]},set:function(t,e){return t[this._]=e},remove:function(t){return this._ in t&&delete t[this._]},toString:function(){return this._}};var lx=function(t){return"string"==typeof t?new be([document.querySelectorAll(t)],[document.documentElement]):new be([null==t?[]:t],ve)},fx=function(t,e){null==e&&(e=On().touches);for(var n=0,r=e?e.length:0,i=new Array(r);n<r;++n)i[n]=Nn(t,e[n]);return i},hx=function(t){return function(){return t}},dx=Math.abs,px=Math.atan2,yx=Math.cos,gx=Math.max,mx=Math.min,vx=Math.sin,bx=Math.sqrt,xx=Math.PI,_x=xx/2,wx=2*xx;function kx(t){return t>1?0:t<-1?xx:Math.acos(t)}function Ex(t){return t>=1?_x:t<=-1?-_x:Math.asin(t)}function Ax(t){return t.innerRadius}function Tx(t){return t.outerRadius}function Sx(t){return t.startAngle}function Mx(t){return t.endAngle}function Ox(t){return t&&t.padAngle}function Nx(t,e,n,r,i,a,o,s){var u=n-t,c=r-e,l=o-i,f=s-a,h=f*u-l*c;if(!(h*h<1e-12))return[t+(h=(l*(e-a)-f*(t-i))/h)*u,e+h*c]}function Cx(t,e,n,r,i,a,o){var s=t-n,u=e-r,c=(o?a:-a)/bx(s*s+u*u),l=c*u,f=-c*s,h=t+l,d=e+f,p=n+l,y=r+f,g=(h+p)/2,m=(d+y)/2,v=p-h,b=y-d,x=v*v+b*b,_=i-a,w=h*y-p*d,k=(b<0?-1:1)*bx(gx(0,_*_*x-w*w)),E=(w*b-v*k)/x,A=(-w*v-b*k)/x,T=(w*b+v*k)/x,S=(-w*v+b*k)/x,M=E-g,O=A-m,N=T-g,C=S-m;return M*M+O*O>N*N+C*C&&(E=T,A=S),{cx:E,cy:A,x01:-l,y01:-f,x11:E*(i/_-1),y11:A*(i/_-1)}}var Dx=function(){var t=Ax,e=Tx,n=hx(0),r=null,i=Sx,a=Mx,o=Ox,s=null;function u(){var u,c,l=+t.apply(this,arguments),f=+e.apply(this,arguments),h=i.apply(this,arguments)-_x,d=a.apply(this,arguments)-_x,p=dx(d-h),y=d>h;if(s||(s=u=Ui()),f<l&&(c=f,f=l,l=c),f>1e-12)if(p>wx-1e-12)s.moveTo(f*yx(h),f*vx(h)),s.arc(0,0,f,h,d,!y),l>1e-12&&(s.moveTo(l*yx(d),l*vx(d)),s.arc(0,0,l,d,h,y));else{var g,m,v=h,b=d,x=h,_=d,w=p,k=p,E=o.apply(this,arguments)/2,A=E>1e-12&&(r?+r.apply(this,arguments):bx(l*l+f*f)),T=mx(dx(f-l)/2,+n.apply(this,arguments)),S=T,M=T;if(A>1e-12){var O=Ex(A/l*vx(E)),N=Ex(A/f*vx(E));(w-=2*O)>1e-12?(x+=O*=y?1:-1,_-=O):(w=0,x=_=(h+d)/2),(k-=2*N)>1e-12?(v+=N*=y?1:-1,b-=N):(k=0,v=b=(h+d)/2)}var C=f*yx(v),D=f*vx(v),L=l*yx(_),F=l*vx(_);if(T>1e-12){var I,P=f*yx(b),R=f*vx(b),B=l*yx(x),j=l*vx(x);if(p<xx&&(I=Nx(C,D,B,j,P,R,L,F))){var Y=C-I[0],z=D-I[1],U=P-I[0],$=R-I[1],G=1/vx(kx((Y*U+z*$)/(bx(Y*Y+z*z)*bx(U*U+$*$)))/2),V=bx(I[0]*I[0]+I[1]*I[1]);S=mx(T,(l-V)/(G-1)),M=mx(T,(f-V)/(G+1))}}k>1e-12?M>1e-12?(g=Cx(B,j,C,D,f,M,y),m=Cx(P,R,L,F,f,M,y),s.moveTo(g.cx+g.x01,g.cy+g.y01),M<T?s.arc(g.cx,g.cy,M,px(g.y01,g.x01),px(m.y01,m.x01),!y):(s.arc(g.cx,g.cy,M,px(g.y01,g.x01),px(g.y11,g.x11),!y),s.arc(0,0,f,px(g.cy+g.y11,g.cx+g.x11),px(m.cy+m.y11,m.cx+m.x11),!y),s.arc(m.cx,m.cy,M,px(m.y11,m.x11),px(m.y01,m.x01),!y))):(s.moveTo(C,D),s.arc(0,0,f,v,b,!y)):s.moveTo(C,D),l>1e-12&&w>1e-12?S>1e-12?(g=Cx(L,F,P,R,l,-S,y),m=Cx(C,D,B,j,l,-S,y),s.lineTo(g.cx+g.x01,g.cy+g.y01),S<T?s.arc(g.cx,g.cy,S,px(g.y01,g.x01),px(m.y01,m.x01),!y):(s.arc(g.cx,g.cy,S,px(g.y01,g.x01),px(g.y11,g.x11),!y),s.arc(0,0,l,px(g.cy+g.y11,g.cx+g.x11),px(m.cy+m.y11,m.cx+m.x11),y),s.arc(m.cx,m.cy,S,px(m.y11,m.x11),px(m.y01,m.x01),!y))):s.arc(0,0,l,_,x,y):s.lineTo(L,F)}else s.moveTo(0,0);if(s.closePath(),u)return s=null,u+""||null}return u.centroid=function(){var n=(+t.apply(this,arguments)+ +e.apply(this,arguments))/2,r=(+i.apply(this,arguments)+ +a.apply(this,arguments))/2-xx/2;return[yx(r)*n,vx(r)*n]},u.innerRadius=function(e){return arguments.length?(t="function"==typeof e?e:hx(+e),u):t},u.outerRadius=function(t){return arguments.length?(e="function"==typeof t?t:hx(+t),u):e},u.cornerRadius=function(t){return arguments.length?(n="function"==typeof t?t:hx(+t),u):n},u.padRadius=function(t){return arguments.length?(r=null==t?null:"function"==typeof t?t:hx(+t),u):r},u.startAngle=function(t){return arguments.length?(i="function"==typeof t?t:hx(+t),u):i},u.endAngle=function(t){return arguments.length?(a="function"==typeof t?t:hx(+t),u):a},u.padAngle=function(t){return arguments.length?(o="function"==typeof t?t:hx(+t),u):o},u.context=function(t){return arguments.length?(s=null==t?null:t,u):s},u};function Lx(t){this._context=t}Lx.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._context.lineTo(t,e)}}};var Fx=function(t){return new Lx(t)};function Ix(t){return t[0]}function Px(t){return t[1]}var Rx=function(){var t=Ix,e=Px,n=hx(!0),r=null,i=Fx,a=null;function o(o){var s,u,c,l=o.length,f=!1;for(null==r&&(a=i(c=Ui())),s=0;s<=l;++s)!(s<l&&n(u=o[s],s,o))===f&&((f=!f)?a.lineStart():a.lineEnd()),f&&a.point(+t(u,s,o),+e(u,s,o));if(c)return a=null,c+""||null}return o.x=function(e){return arguments.length?(t="function"==typeof e?e:hx(+e),o):t},o.y=function(t){return arguments.length?(e="function"==typeof t?t:hx(+t),o):e},o.defined=function(t){return arguments.length?(n="function"==typeof t?t:hx(!!t),o):n},o.curve=function(t){return arguments.length?(i=t,null!=r&&(a=i(r)),o):i},o.context=function(t){return arguments.length?(null==t?r=a=null:a=i(r=t),o):r},o},Bx=function(){var t=Ix,e=null,n=hx(0),r=Px,i=hx(!0),a=null,o=Fx,s=null;function u(u){var c,l,f,h,d,p=u.length,y=!1,g=new Array(p),m=new Array(p);for(null==a&&(s=o(d=Ui())),c=0;c<=p;++c){if(!(c<p&&i(h=u[c],c,u))===y)if(y=!y)l=c,s.areaStart(),s.lineStart();else{for(s.lineEnd(),s.lineStart(),f=c-1;f>=l;--f)s.point(g[f],m[f]);s.lineEnd(),s.areaEnd()}y&&(g[c]=+t(h,c,u),m[c]=+n(h,c,u),s.point(e?+e(h,c,u):g[c],r?+r(h,c,u):m[c]))}if(d)return s=null,d+""||null}function c(){return Rx().defined(i).curve(o).context(a)}return u.x=function(n){return arguments.length?(t="function"==typeof n?n:hx(+n),e=null,u):t},u.x0=function(e){return arguments.length?(t="function"==typeof e?e:hx(+e),u):t},u.x1=function(t){return arguments.length?(e=null==t?null:"function"==typeof t?t:hx(+t),u):e},u.y=function(t){return arguments.length?(n="function"==typeof t?t:hx(+t),r=null,u):n},u.y0=function(t){return arguments.length?(n="function"==typeof t?t:hx(+t),u):n},u.y1=function(t){return arguments.length?(r=null==t?null:"function"==typeof t?t:hx(+t),u):r},u.lineX0=u.lineY0=function(){return c().x(t).y(n)},u.lineY1=function(){return c().x(t).y(r)},u.lineX1=function(){return c().x(e).y(n)},u.defined=function(t){return arguments.length?(i="function"==typeof t?t:hx(!!t),u):i},u.curve=function(t){return arguments.length?(o=t,null!=a&&(s=o(a)),u):o},u.context=function(t){return arguments.length?(null==t?a=s=null:s=o(a=t),u):a},u},jx=function(t,e){return e<t?-1:e>t?1:e>=t?0:NaN},Yx=function(t){return t},zx=function(){var t=Yx,e=jx,n=null,r=hx(0),i=hx(wx),a=hx(0);function o(o){var s,u,c,l,f,h=o.length,d=0,p=new Array(h),y=new Array(h),g=+r.apply(this,arguments),m=Math.min(wx,Math.max(-wx,i.apply(this,arguments)-g)),v=Math.min(Math.abs(m)/h,a.apply(this,arguments)),b=v*(m<0?-1:1);for(s=0;s<h;++s)(f=y[p[s]=s]=+t(o[s],s,o))>0&&(d+=f);for(null!=e?p.sort((function(t,n){return e(y[t],y[n])})):null!=n&&p.sort((function(t,e){return n(o[t],o[e])})),s=0,c=d?(m-h*b)/d:0;s<h;++s,g=l)u=p[s],l=g+((f=y[u])>0?f*c:0)+b,y[u]={data:o[u],index:s,value:f,startAngle:g,endAngle:l,padAngle:v};return y}return o.value=function(e){return arguments.length?(t="function"==typeof e?e:hx(+e),o):t},o.sortValues=function(t){return arguments.length?(e=t,n=null,o):e},o.sort=function(t){return arguments.length?(n=t,e=null,o):n},o.startAngle=function(t){return arguments.length?(r="function"==typeof t?t:hx(+t),o):r},o.endAngle=function(t){return arguments.length?(i="function"==typeof t?t:hx(+t),o):i},o.padAngle=function(t){return arguments.length?(a="function"==typeof t?t:hx(+t),o):a},o},Ux=Gx(Fx);function $x(t){this._curve=t}function Gx(t){function e(e){return new $x(t(e))}return e._curve=t,e}function Vx(t){var e=t.curve;return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t.curve=function(t){return arguments.length?e(Gx(t)):e()._curve},t}$x.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(t,e){this._curve.point(e*Math.sin(t),e*-Math.cos(t))}};var Hx=function(){return Vx(Rx().curve(Ux))},Wx=function(){var t=Bx().curve(Ux),e=t.curve,n=t.lineX0,r=t.lineX1,i=t.lineY0,a=t.lineY1;return t.angle=t.x,delete t.x,t.startAngle=t.x0,delete t.x0,t.endAngle=t.x1,delete t.x1,t.radius=t.y,delete t.y,t.innerRadius=t.y0,delete t.y0,t.outerRadius=t.y1,delete t.y1,t.lineStartAngle=function(){return Vx(n())},delete t.lineX0,t.lineEndAngle=function(){return Vx(r())},delete t.lineX1,t.lineInnerRadius=function(){return Vx(i())},delete t.lineY0,t.lineOuterRadius=function(){return Vx(a())},delete t.lineY1,t.curve=function(t){return arguments.length?e(Gx(t)):e()._curve},t},qx=function(t,e){return[(e=+e)*Math.cos(t-=Math.PI/2),e*Math.sin(t)]},Xx=Array.prototype.slice;function Zx(t){return t.source}function Jx(t){return t.target}function Qx(t){var e=Zx,n=Jx,r=Ix,i=Px,a=null;function o(){var o,s=Xx.call(arguments),u=e.apply(this,s),c=n.apply(this,s);if(a||(a=o=Ui()),t(a,+r.apply(this,(s[0]=u,s)),+i.apply(this,s),+r.apply(this,(s[0]=c,s)),+i.apply(this,s)),o)return a=null,o+""||null}return o.source=function(t){return arguments.length?(e=t,o):e},o.target=function(t){return arguments.length?(n=t,o):n},o.x=function(t){return arguments.length?(r="function"==typeof t?t:hx(+t),o):r},o.y=function(t){return arguments.length?(i="function"==typeof t?t:hx(+t),o):i},o.context=function(t){return arguments.length?(a=null==t?null:t,o):a},o}function Kx(t,e,n,r,i){t.moveTo(e,n),t.bezierCurveTo(e=(e+r)/2,n,e,i,r,i)}function t_(t,e,n,r,i){t.moveTo(e,n),t.bezierCurveTo(e,n=(n+i)/2,r,n,r,i)}function e_(t,e,n,r,i){var a=qx(e,n),o=qx(e,n=(n+i)/2),s=qx(r,n),u=qx(r,i);t.moveTo(a[0],a[1]),t.bezierCurveTo(o[0],o[1],s[0],s[1],u[0],u[1])}function n_(){return Qx(Kx)}function r_(){return Qx(t_)}function i_(){var t=Qx(e_);return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t}var a_={draw:function(t,e){var n=Math.sqrt(e/xx);t.moveTo(n,0),t.arc(0,0,n,0,wx)}},o_={draw:function(t,e){var n=Math.sqrt(e/5)/2;t.moveTo(-3*n,-n),t.lineTo(-n,-n),t.lineTo(-n,-3*n),t.lineTo(n,-3*n),t.lineTo(n,-n),t.lineTo(3*n,-n),t.lineTo(3*n,n),t.lineTo(n,n),t.lineTo(n,3*n),t.lineTo(-n,3*n),t.lineTo(-n,n),t.lineTo(-3*n,n),t.closePath()}},s_=Math.sqrt(1/3),u_=2*s_,c_={draw:function(t,e){var n=Math.sqrt(e/u_),r=n*s_;t.moveTo(0,-n),t.lineTo(r,0),t.lineTo(0,n),t.lineTo(-r,0),t.closePath()}},l_=Math.sin(xx/10)/Math.sin(7*xx/10),f_=Math.sin(wx/10)*l_,h_=-Math.cos(wx/10)*l_,d_={draw:function(t,e){var n=Math.sqrt(.8908130915292852*e),r=f_*n,i=h_*n;t.moveTo(0,-n),t.lineTo(r,i);for(var a=1;a<5;++a){var o=wx*a/5,s=Math.cos(o),u=Math.sin(o);t.lineTo(u*n,-s*n),t.lineTo(s*r-u*i,u*r+s*i)}t.closePath()}},p_={draw:function(t,e){var n=Math.sqrt(e),r=-n/2;t.rect(r,r,n,n)}},y_=Math.sqrt(3),g_={draw:function(t,e){var n=-Math.sqrt(e/(3*y_));t.moveTo(0,2*n),t.lineTo(-y_*n,-n),t.lineTo(y_*n,-n),t.closePath()}},m_=Math.sqrt(3)/2,v_=1/Math.sqrt(12),b_=3*(v_/2+1),x_={draw:function(t,e){var n=Math.sqrt(e/b_),r=n/2,i=n*v_,a=r,o=n*v_+n,s=-a,u=o;t.moveTo(r,i),t.lineTo(a,o),t.lineTo(s,u),t.lineTo(-.5*r-m_*i,m_*r+-.5*i),t.lineTo(-.5*a-m_*o,m_*a+-.5*o),t.lineTo(-.5*s-m_*u,m_*s+-.5*u),t.lineTo(-.5*r+m_*i,-.5*i-m_*r),t.lineTo(-.5*a+m_*o,-.5*o-m_*a),t.lineTo(-.5*s+m_*u,-.5*u-m_*s),t.closePath()}},__=[a_,o_,c_,p_,d_,g_,x_],w_=function(){var t=hx(a_),e=hx(64),n=null;function r(){var r;if(n||(n=r=Ui()),t.apply(this,arguments).draw(n,+e.apply(this,arguments)),r)return n=null,r+""||null}return r.type=function(e){return arguments.length?(t="function"==typeof e?e:hx(e),r):t},r.size=function(t){return arguments.length?(e="function"==typeof t?t:hx(+t),r):e},r.context=function(t){return arguments.length?(n=null==t?null:t,r):n},r},k_=function(){};function E_(t,e,n){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+n)/6)}function A_(t){this._context=t}A_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:E_(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:E_(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};var T_=function(t){return new A_(t)};function S_(t){this._context=t}S_.prototype={areaStart:k_,areaEnd:k_,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x2=t,this._y2=e;break;case 1:this._point=2,this._x3=t,this._y3=e;break;case 2:this._point=3,this._x4=t,this._y4=e,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+e)/6);break;default:E_(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};var M_=function(t){return new S_(t)};function O_(t){this._context=t}O_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var n=(this._x0+4*this._x1+t)/6,r=(this._y0+4*this._y1+e)/6;this._line?this._context.lineTo(n,r):this._context.moveTo(n,r);break;case 3:this._point=4;default:E_(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};var N_=function(t){return new O_(t)};function C_(t,e){this._basis=new A_(t),this._beta=e}C_.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,e=this._y,n=t.length-1;if(n>0)for(var r,i=t[0],a=e[0],o=t[n]-i,s=e[n]-a,u=-1;++u<=n;)r=u/n,this._basis.point(this._beta*t[u]+(1-this._beta)*(i+r*o),this._beta*e[u]+(1-this._beta)*(a+r*s));this._x=this._y=null,this._basis.lineEnd()},point:function(t,e){this._x.push(+t),this._y.push(+e)}};var D_=function t(e){function n(t){return 1===e?new A_(t):new C_(t,e)}return n.beta=function(e){return t(+e)},n}(.85);function L_(t,e,n){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-e),t._y2+t._k*(t._y1-n),t._x2,t._y2)}function F_(t,e){this._context=t,this._k=(1-e)/6}F_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:L_(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2,this._x1=t,this._y1=e;break;case 2:this._point=3;default:L_(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var I_=function t(e){function n(t){return new F_(t,e)}return n.tension=function(e){return t(+e)},n}(0);function P_(t,e){this._context=t,this._k=(1-e)/6}P_.prototype={areaStart:k_,areaEnd:k_,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:L_(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var R_=function t(e){function n(t){return new P_(t,e)}return n.tension=function(e){return t(+e)},n}(0);function B_(t,e){this._context=t,this._k=(1-e)/6}B_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:L_(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var j_=function t(e){function n(t){return new B_(t,e)}return n.tension=function(e){return t(+e)},n}(0);function Y_(t,e,n){var r=t._x1,i=t._y1,a=t._x2,o=t._y2;if(t._l01_a>1e-12){var s=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,u=3*t._l01_a*(t._l01_a+t._l12_a);r=(r*s-t._x0*t._l12_2a+t._x2*t._l01_2a)/u,i=(i*s-t._y0*t._l12_2a+t._y2*t._l01_2a)/u}if(t._l23_a>1e-12){var c=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,l=3*t._l23_a*(t._l23_a+t._l12_a);a=(a*c+t._x1*t._l23_2a-e*t._l12_2a)/l,o=(o*c+t._y1*t._l23_2a-n*t._l12_2a)/l}t._context.bezierCurveTo(r,i,a,o,t._x2,t._y2)}function z_(t,e){this._context=t,this._alpha=e}z_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3;default:Y_(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var U_=function t(e){function n(t){return e?new z_(t,e):new F_(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);function $_(t,e){this._context=t,this._alpha=e}$_.prototype={areaStart:k_,areaEnd:k_,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:Y_(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var G_=function t(e){function n(t){return e?new $_(t,e):new P_(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);function V_(t,e){this._context=t,this._alpha=e}V_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+r*r,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Y_(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var H_=function t(e){function n(t){return e?new V_(t,e):new B_(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);function W_(t){this._context=t}W_.prototype={areaStart:k_,areaEnd:k_,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(t,e){t=+t,e=+e,this._point?this._context.lineTo(t,e):(this._point=1,this._context.moveTo(t,e))}};var q_=function(t){return new W_(t)};function X_(t){return t<0?-1:1}function Z_(t,e,n){var r=t._x1-t._x0,i=e-t._x1,a=(t._y1-t._y0)/(r||i<0&&-0),o=(n-t._y1)/(i||r<0&&-0),s=(a*i+o*r)/(r+i);return(X_(a)+X_(o))*Math.min(Math.abs(a),Math.abs(o),.5*Math.abs(s))||0}function J_(t,e){var n=t._x1-t._x0;return n?(3*(t._y1-t._y0)/n-e)/2:e}function Q_(t,e,n){var r=t._x0,i=t._y0,a=t._x1,o=t._y1,s=(a-r)/3;t._context.bezierCurveTo(r+s,i+s*e,a-s,o-s*n,a,o)}function K_(t){this._context=t}function tw(t){this._context=new ew(t)}function ew(t){this._context=t}function nw(t){return new K_(t)}function rw(t){return new tw(t)}function iw(t){this._context=t}function aw(t){var e,n,r=t.length-1,i=new Array(r),a=new Array(r),o=new Array(r);for(i[0]=0,a[0]=2,o[0]=t[0]+2*t[1],e=1;e<r-1;++e)i[e]=1,a[e]=4,o[e]=4*t[e]+2*t[e+1];for(i[r-1]=2,a[r-1]=7,o[r-1]=8*t[r-1]+t[r],e=1;e<r;++e)n=i[e]/a[e-1],a[e]-=n,o[e]-=n*o[e-1];for(i[r-1]=o[r-1]/a[r-1],e=r-2;e>=0;--e)i[e]=(o[e]-i[e+1])/a[e];for(a[r-1]=(t[r]+i[r-1])/2,e=0;e<r-1;++e)a[e]=2*t[e+1]-i[e+1];return[i,a]}K_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:Q_(this,this._t0,J_(this,this._t0))}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){var n=NaN;if(e=+e,(t=+t)!==this._x1||e!==this._y1){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,Q_(this,J_(this,n=Z_(this,t,e)),n);break;default:Q_(this,this._t0,n=Z_(this,t,e))}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e,this._t0=n}}},(tw.prototype=Object.create(K_.prototype)).point=function(t,e){K_.prototype.point.call(this,e,t)},ew.prototype={moveTo:function(t,e){this._context.moveTo(e,t)},closePath:function(){this._context.closePath()},lineTo:function(t,e){this._context.lineTo(e,t)},bezierCurveTo:function(t,e,n,r,i,a){this._context.bezierCurveTo(e,t,r,n,a,i)}},iw.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var t=this._x,e=this._y,n=t.length;if(n)if(this._line?this._context.lineTo(t[0],e[0]):this._context.moveTo(t[0],e[0]),2===n)this._context.lineTo(t[1],e[1]);else for(var r=aw(t),i=aw(e),a=0,o=1;o<n;++a,++o)this._context.bezierCurveTo(r[0][a],i[0][a],r[1][a],i[1][a],t[o],e[o]);(this._line||0!==this._line&&1===n)&&this._context.closePath(),this._line=1-this._line,this._x=this._y=null},point:function(t,e){this._x.push(+t),this._y.push(+e)}};var ow=function(t){return new iw(t)};function sw(t,e){this._context=t,this._t=e}sw.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=this._y=NaN,this._point=0},lineEnd:function(){0<this._t&&this._t<1&&2===this._point&&this._context.lineTo(this._x,this._y),(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line>=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var n=this._x*(1-this._t)+t*this._t;this._context.lineTo(n,this._y),this._context.lineTo(n,e)}}this._x=t,this._y=e}};var uw=function(t){return new sw(t,.5)};function cw(t){return new sw(t,0)}function lw(t){return new sw(t,1)}var fw=function(t,e){if((i=t.length)>1)for(var n,r,i,a=1,o=t[e[0]],s=o.length;a<i;++a)for(r=o,o=t[e[a]],n=0;n<s;++n)o[n][1]+=o[n][0]=isNaN(r[n][1])?r[n][0]:r[n][1]},hw=function(t){for(var e=t.length,n=new Array(e);--e>=0;)n[e]=e;return n};function dw(t,e){return t[e]}var pw=function(){var t=hx([]),e=hw,n=fw,r=dw;function i(i){var a,o,s=t.apply(this,arguments),u=i.length,c=s.length,l=new Array(c);for(a=0;a<c;++a){for(var f,h=s[a],d=l[a]=new Array(u),p=0;p<u;++p)d[p]=f=[0,+r(i[p],h,p,i)],f.data=i[p];d.key=h}for(a=0,o=e(l);a<c;++a)l[o[a]].index=a;return n(l,o),l}return i.keys=function(e){return arguments.length?(t="function"==typeof e?e:hx(Xx.call(e)),i):t},i.value=function(t){return arguments.length?(r="function"==typeof t?t:hx(+t),i):r},i.order=function(t){return arguments.length?(e=null==t?hw:"function"==typeof t?t:hx(Xx.call(t)),i):e},i.offset=function(t){return arguments.length?(n=null==t?fw:t,i):n},i},yw=function(t,e){if((r=t.length)>0){for(var n,r,i,a=0,o=t[0].length;a<o;++a){for(i=n=0;n<r;++n)i+=t[n][a][1]||0;if(i)for(n=0;n<r;++n)t[n][a][1]/=i}fw(t,e)}},gw=function(t,e){if((s=t.length)>0)for(var n,r,i,a,o,s,u=0,c=t[e[0]].length;u<c;++u)for(a=o=0,n=0;n<s;++n)(i=(r=t[e[n]][u])[1]-r[0])>0?(r[0]=a,r[1]=a+=i):i<0?(r[1]=o,r[0]=o+=i):(r[0]=0,r[1]=i)},mw=function(t,e){if((n=t.length)>0){for(var n,r=0,i=t[e[0]],a=i.length;r<a;++r){for(var o=0,s=0;o<n;++o)s+=t[o][r][1]||0;i[r][1]+=i[r][0]=-s/2}fw(t,e)}},vw=function(t,e){if((i=t.length)>0&&(r=(n=t[e[0]]).length)>0){for(var n,r,i,a=0,o=1;o<r;++o){for(var s=0,u=0,c=0;s<i;++s){for(var l=t[e[s]],f=l[o][1]||0,h=(f-(l[o-1][1]||0))/2,d=0;d<s;++d){var p=t[e[d]];h+=(p[o][1]||0)-(p[o-1][1]||0)}u+=f,c+=h*f}n[o-1][1]+=n[o-1][0]=a,u&&(a-=c/u)}n[o-1][1]+=n[o-1][0]=a,fw(t,e)}},bw=function(t){var e=t.map(xw);return hw(t).sort((function(t,n){return e[t]-e[n]}))};function xw(t){for(var e,n=-1,r=0,i=t.length,a=-1/0;++n<i;)(e=+t[n][1])>a&&(a=e,r=n);return r}var _w=function(t){var e=t.map(ww);return hw(t).sort((function(t,n){return e[t]-e[n]}))};function ww(t){for(var e,n=0,r=-1,i=t.length;++r<i;)(e=+t[r][1])&&(n+=e);return n}var kw=function(t){return _w(t).reverse()},Ew=function(t){var e,n,r=t.length,i=t.map(ww),a=bw(t),o=0,s=0,u=[],c=[];for(e=0;e<r;++e)n=a[e],o<s?(o+=i[n],u.push(n)):(s+=i[n],c.push(n));return c.reverse().concat(u)},Aw=function(t){return hw(t).reverse()};var Tw=Date.prototype.toISOString?function(t){return t.toISOString()}:Gg("%Y-%m-%dT%H:%M:%S.%LZ");var Sw=+new Date("2000-01-01T00:00:00.000Z")?function(t){var e=new Date(t);return isNaN(e)?null:e}:Vg("%Y-%m-%dT%H:%M:%S.%LZ"),Mw=function(t,e,n){var r=new $n,i=e;return null==e?(r.restart(t,e,n),r):(e=+e,n=null==n?zn():+n,r.restart((function a(o){o+=i,r.restart(a,i+=e,n),t(o)}),e,n),r)},Ow=function(t){return function(){return t}};function Nw(t){return t[0]}function Cw(t){return t[1]}function Dw(){this._=null}function Lw(t){t.U=t.C=t.L=t.R=t.P=t.N=null}function Fw(t,e){var n=e,r=e.R,i=n.U;i?i.L===n?i.L=r:i.R=r:t._=r,r.U=i,n.U=r,n.R=r.L,n.R&&(n.R.U=n),r.L=n}function Iw(t,e){var n=e,r=e.L,i=n.U;i?i.L===n?i.L=r:i.R=r:t._=r,r.U=i,n.U=r,n.L=r.R,n.L&&(n.L.U=n),r.R=n}function Pw(t){for(;t.L;)t=t.L;return t}Dw.prototype={constructor:Dw,insert:function(t,e){var n,r,i;if(t){if(e.P=t,e.N=t.N,t.N&&(t.N.P=e),t.N=e,t.R){for(t=t.R;t.L;)t=t.L;t.L=e}else t.R=e;n=t}else this._?(t=Pw(this._),e.P=null,e.N=t,t.P=t.L=e,n=t):(e.P=e.N=null,this._=e,n=null);for(e.L=e.R=null,e.U=n,e.C=!0,t=e;n&&n.C;)n===(r=n.U).L?(i=r.R)&&i.C?(n.C=i.C=!1,r.C=!0,t=r):(t===n.R&&(Fw(this,n),n=(t=n).U),n.C=!1,r.C=!0,Iw(this,r)):(i=r.L)&&i.C?(n.C=i.C=!1,r.C=!0,t=r):(t===n.L&&(Iw(this,n),n=(t=n).U),n.C=!1,r.C=!0,Fw(this,r)),n=t.U;this._.C=!1},remove:function(t){t.N&&(t.N.P=t.P),t.P&&(t.P.N=t.N),t.N=t.P=null;var e,n,r,i=t.U,a=t.L,o=t.R;if(n=a?o?Pw(o):a:o,i?i.L===t?i.L=n:i.R=n:this._=n,a&&o?(r=n.C,n.C=t.C,n.L=a,a.U=n,n!==o?(i=n.U,n.U=t.U,t=n.R,i.L=t,n.R=o,o.U=n):(n.U=i,i=n,t=n.R)):(r=t.C,t=n),t&&(t.U=i),!r)if(t&&t.C)t.C=!1;else{do{if(t===this._)break;if(t===i.L){if((e=i.R).C&&(e.C=!1,i.C=!0,Fw(this,i),e=i.R),e.L&&e.L.C||e.R&&e.R.C){e.R&&e.R.C||(e.L.C=!1,e.C=!0,Iw(this,e),e=i.R),e.C=i.C,i.C=e.R.C=!1,Fw(this,i),t=this._;break}}else if((e=i.L).C&&(e.C=!1,i.C=!0,Iw(this,i),e=i.L),e.L&&e.L.C||e.R&&e.R.C){e.L&&e.L.C||(e.R.C=!1,e.C=!0,Fw(this,e),e=i.L),e.C=i.C,i.C=e.L.C=!1,Iw(this,i),t=this._;break}e.C=!0,t=i,i=i.U}while(!t.C);t&&(t.C=!1)}}};var Rw=Dw;function Bw(t,e,n,r){var i=[null,null],a=uk.push(i)-1;return i.left=t,i.right=e,n&&Yw(i,t,e,n),r&&Yw(i,e,t,r),ok[t.index].halfedges.push(a),ok[e.index].halfedges.push(a),i}function jw(t,e,n){var r=[e,n];return r.left=t,r}function Yw(t,e,n,r){t[0]||t[1]?t.left===n?t[1]=r:t[0]=r:(t[0]=r,t.left=e,t.right=n)}function zw(t,e,n,r,i){var a,o=t[0],s=t[1],u=o[0],c=o[1],l=0,f=1,h=s[0]-u,d=s[1]-c;if(a=e-u,h||!(a>0)){if(a/=h,h<0){if(a<l)return;a<f&&(f=a)}else if(h>0){if(a>f)return;a>l&&(l=a)}if(a=r-u,h||!(a<0)){if(a/=h,h<0){if(a>f)return;a>l&&(l=a)}else if(h>0){if(a<l)return;a<f&&(f=a)}if(a=n-c,d||!(a>0)){if(a/=d,d<0){if(a<l)return;a<f&&(f=a)}else if(d>0){if(a>f)return;a>l&&(l=a)}if(a=i-c,d||!(a<0)){if(a/=d,d<0){if(a>f)return;a>l&&(l=a)}else if(d>0){if(a<l)return;a<f&&(f=a)}return!(l>0||f<1)||(l>0&&(t[0]=[u+l*h,c+l*d]),f<1&&(t[1]=[u+f*h,c+f*d]),!0)}}}}}function Uw(t,e,n,r,i){var a=t[1];if(a)return!0;var o,s,u=t[0],c=t.left,l=t.right,f=c[0],h=c[1],d=l[0],p=l[1],y=(f+d)/2,g=(h+p)/2;if(p===h){if(y<e||y>=r)return;if(f>d){if(u){if(u[1]>=i)return}else u=[y,n];a=[y,i]}else{if(u){if(u[1]<n)return}else u=[y,i];a=[y,n]}}else if(s=g-(o=(f-d)/(p-h))*y,o<-1||o>1)if(f>d){if(u){if(u[1]>=i)return}else u=[(n-s)/o,n];a=[(i-s)/o,i]}else{if(u){if(u[1]<n)return}else u=[(i-s)/o,i];a=[(n-s)/o,n]}else if(h<p){if(u){if(u[0]>=r)return}else u=[e,o*e+s];a=[r,o*r+s]}else{if(u){if(u[0]<e)return}else u=[r,o*r+s];a=[e,o*e+s]}return t[0]=u,t[1]=a,!0}function $w(t,e){var n=t.site,r=e.left,i=e.right;return n===i&&(i=r,r=n),i?Math.atan2(i[1]-r[1],i[0]-r[0]):(n===r?(r=e[1],i=e[0]):(r=e[0],i=e[1]),Math.atan2(r[0]-i[0],i[1]-r[1]))}function Gw(t,e){return e[+(e.left!==t.site)]}function Vw(t,e){return e[+(e.left===t.site)]}var Hw,Ww=[];function qw(){Lw(this),this.x=this.y=this.arc=this.site=this.cy=null}function Xw(t){var e=t.P,n=t.N;if(e&&n){var r=e.site,i=t.site,a=n.site;if(r!==a){var o=i[0],s=i[1],u=r[0]-o,c=r[1]-s,l=a[0]-o,f=a[1]-s,h=2*(u*f-c*l);if(!(h>=-lk)){var d=u*u+c*c,p=l*l+f*f,y=(f*d-c*p)/h,g=(u*p-l*d)/h,m=Ww.pop()||new qw;m.arc=t,m.site=i,m.x=y+o,m.y=(m.cy=g+s)+Math.sqrt(y*y+g*g),t.circle=m;for(var v=null,b=sk._;b;)if(m.y<b.y||m.y===b.y&&m.x<=b.x){if(!b.L){v=b.P;break}b=b.L}else{if(!b.R){v=b;break}b=b.R}sk.insert(v,m),v||(Hw=m)}}}}function Zw(t){var e=t.circle;e&&(e.P||(Hw=e.N),sk.remove(e),Ww.push(e),Lw(e),t.circle=null)}var Jw=[];function Qw(){Lw(this),this.edge=this.site=this.circle=null}function Kw(t){var e=Jw.pop()||new Qw;return e.site=t,e}function tk(t){Zw(t),ak.remove(t),Jw.push(t),Lw(t)}function ek(t){var e=t.circle,n=e.x,r=e.cy,i=[n,r],a=t.P,o=t.N,s=[t];tk(t);for(var u=a;u.circle&&Math.abs(n-u.circle.x)<ck&&Math.abs(r-u.circle.cy)<ck;)a=u.P,s.unshift(u),tk(u),u=a;s.unshift(u),Zw(u);for(var c=o;c.circle&&Math.abs(n-c.circle.x)<ck&&Math.abs(r-c.circle.cy)<ck;)o=c.N,s.push(c),tk(c),c=o;s.push(c),Zw(c);var l,f=s.length;for(l=1;l<f;++l)c=s[l],u=s[l-1],Yw(c.edge,u.site,c.site,i);u=s[0],(c=s[f-1]).edge=Bw(u.site,c.site,null,i),Xw(u),Xw(c)}function nk(t){for(var e,n,r,i,a=t[0],o=t[1],s=ak._;s;)if((r=rk(s,o)-a)>ck)s=s.L;else{if(!((i=a-ik(s,o))>ck)){r>-ck?(e=s.P,n=s):i>-ck?(e=s,n=s.N):e=n=s;break}if(!s.R){e=s;break}s=s.R}!function(t){ok[t.index]={site:t,halfedges:[]}}(t);var u=Kw(t);if(ak.insert(e,u),e||n){if(e===n)return Zw(e),n=Kw(e.site),ak.insert(u,n),u.edge=n.edge=Bw(e.site,u.site),Xw(e),void Xw(n);if(n){Zw(e),Zw(n);var c=e.site,l=c[0],f=c[1],h=t[0]-l,d=t[1]-f,p=n.site,y=p[0]-l,g=p[1]-f,m=2*(h*g-d*y),v=h*h+d*d,b=y*y+g*g,x=[(g*v-d*b)/m+l,(h*b-y*v)/m+f];Yw(n.edge,c,p,x),u.edge=Bw(c,t,null,x),n.edge=Bw(t,p,null,x),Xw(e),Xw(n)}else u.edge=Bw(e.site,u.site)}}function rk(t,e){var n=t.site,r=n[0],i=n[1],a=i-e;if(!a)return r;var o=t.P;if(!o)return-1/0;var s=(n=o.site)[0],u=n[1],c=u-e;if(!c)return s;var l=s-r,f=1/a-1/c,h=l/c;return f?(-h+Math.sqrt(h*h-2*f*(l*l/(-2*c)-u+c/2+i-a/2)))/f+r:(r+s)/2}function ik(t,e){var n=t.N;if(n)return rk(n,e);var r=t.site;return r[1]===e?r[0]:1/0}var ak,ok,sk,uk,ck=1e-6,lk=1e-12;function fk(t,e){return e[1]-t[1]||e[0]-t[0]}function hk(t,e){var n,r,i,a=t.sort(fk).pop();for(uk=[],ok=new Array(t.length),ak=new Rw,sk=new Rw;;)if(i=Hw,a&&(!i||a[1]<i.y||a[1]===i.y&&a[0]<i.x))a[0]===n&&a[1]===r||(nk(a),n=a[0],r=a[1]),a=t.pop();else{if(!i)break;ek(i.arc)}if(function(){for(var t,e,n,r,i=0,a=ok.length;i<a;++i)if((t=ok[i])&&(r=(e=t.halfedges).length)){var o=new Array(r),s=new Array(r);for(n=0;n<r;++n)o[n]=n,s[n]=$w(t,uk[e[n]]);for(o.sort((function(t,e){return s[e]-s[t]})),n=0;n<r;++n)s[n]=e[o[n]];for(n=0;n<r;++n)e[n]=s[n]}}(),e){var o=+e[0][0],s=+e[0][1],u=+e[1][0],c=+e[1][1];!function(t,e,n,r){for(var i,a=uk.length;a--;)Uw(i=uk[a],t,e,n,r)&&zw(i,t,e,n,r)&&(Math.abs(i[0][0]-i[1][0])>ck||Math.abs(i[0][1]-i[1][1])>ck)||delete uk[a]}(o,s,u,c),function(t,e,n,r){var i,a,o,s,u,c,l,f,h,d,p,y,g=ok.length,m=!0;for(i=0;i<g;++i)if(a=ok[i]){for(o=a.site,s=(u=a.halfedges).length;s--;)uk[u[s]]||u.splice(s,1);for(s=0,c=u.length;s<c;)p=(d=Vw(a,uk[u[s]]))[0],y=d[1],f=(l=Gw(a,uk[u[++s%c]]))[0],h=l[1],(Math.abs(p-f)>ck||Math.abs(y-h)>ck)&&(u.splice(s,0,uk.push(jw(o,d,Math.abs(p-t)<ck&&r-y>ck?[t,Math.abs(f-t)<ck?h:r]:Math.abs(y-r)<ck&&n-p>ck?[Math.abs(h-r)<ck?f:n,r]:Math.abs(p-n)<ck&&y-e>ck?[n,Math.abs(f-n)<ck?h:e]:Math.abs(y-e)<ck&&p-t>ck?[Math.abs(h-e)<ck?f:t,e]:null))-1),++c);c&&(m=!1)}if(m){var v,b,x,_=1/0;for(i=0,m=null;i<g;++i)(a=ok[i])&&(x=(v=(o=a.site)[0]-t)*v+(b=o[1]-e)*b)<_&&(_=x,m=a);if(m){var w=[t,e],k=[t,r],E=[n,r],A=[n,e];m.halfedges.push(uk.push(jw(o=m.site,w,k))-1,uk.push(jw(o,k,E))-1,uk.push(jw(o,E,A))-1,uk.push(jw(o,A,w))-1)}}for(i=0;i<g;++i)(a=ok[i])&&(a.halfedges.length||delete ok[i])}(o,s,u,c)}this.edges=uk,this.cells=ok,ak=sk=uk=ok=null}hk.prototype={constructor:hk,polygons:function(){var t=this.edges;return this.cells.map((function(e){var n=e.halfedges.map((function(n){return Gw(e,t[n])}));return n.data=e.site.data,n}))},triangles:function(){var t=[],e=this.edges;return this.cells.forEach((function(n,r){if(a=(i=n.halfedges).length)for(var i,a,o,s,u,c,l=n.site,f=-1,h=e[i[a-1]],d=h.left===l?h.right:h.left;++f<a;)o=d,d=(h=e[i[f]]).left===l?h.right:h.left,o&&d&&r<o.index&&r<d.index&&(u=o,c=d,((s=l)[0]-c[0])*(u[1]-s[1])-(s[0]-u[0])*(c[1]-s[1])<0)&&t.push([l.data,o.data,d.data])})),t},links:function(){return this.edges.filter((function(t){return t.right})).map((function(t){return{source:t.left.data,target:t.right.data}}))},find:function(t,e,n){for(var r,i,a=this,o=a._found||0,s=a.cells.length;!(i=a.cells[o]);)if(++o>=s)return null;var u=t-i.site[0],c=e-i.site[1],l=u*u+c*c;do{i=a.cells[r=o],o=null,i.halfedges.forEach((function(n){var r=a.edges[n],s=r.left;if(s!==i.site&&s||(s=r.right)){var u=t-s[0],c=e-s[1],f=u*u+c*c;f<l&&(l=f,o=s.index)}}))}while(null!==o);return a._found=r,null==n||l<=n*n?i.site:null}};var dk=function(){var t=Nw,e=Cw,n=null;function r(r){return new hk(r.map((function(n,i){var a=[Math.round(t(n,i,r)/ck)*ck,Math.round(e(n,i,r)/ck)*ck];return a.index=i,a.data=n,a})),n)}return r.polygons=function(t){return r(t).polygons()},r.links=function(t){return r(t).links()},r.triangles=function(t){return r(t).triangles()},r.x=function(e){return arguments.length?(t="function"==typeof e?e:Ow(+e),r):t},r.y=function(t){return arguments.length?(e="function"==typeof t?t:Ow(+t),r):e},r.extent=function(t){return arguments.length?(n=null==t?null:[[+t[0][0],+t[0][1]],[+t[1][0],+t[1][1]]],r):n&&[[n[0][0],n[0][1]],[n[1][0],n[1][1]]]},r.size=function(t){return arguments.length?(n=null==t?null:[[0,0],[+t[0],+t[1]]],r):n&&[n[1][0]-n[0][0],n[1][1]-n[0][1]]},r},pk=function(t){return function(){return t}};function yk(t,e,n){this.target=t,this.type=e,this.transform=n}function gk(t,e,n){this.k=t,this.x=e,this.y=n}gk.prototype={constructor:gk,scale:function(t){return 1===t?this:new gk(this.k*t,this.x,this.y)},translate:function(t,e){return 0===t&0===e?this:new gk(this.k,this.x+this.k*t,this.y+this.k*e)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var mk=new gk(1,0,0);function vk(t){for(;!t.__zoom;)if(!(t=t.parentNode))return mk;return t.__zoom}function bk(){ue.stopImmediatePropagation()}vk.prototype=gk.prototype;var xk=function(){ue.preventDefault(),ue.stopImmediatePropagation()};function _k(){return!ue.ctrlKey&&!ue.button}function wk(){var t=this;return t instanceof SVGElement?(t=t.ownerSVGElement||t).hasAttribute("viewBox")?[[(t=t.viewBox.baseVal).x,t.y],[t.x+t.width,t.y+t.height]]:[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]:[[0,0],[t.clientWidth,t.clientHeight]]}function kk(){return this.__zoom||mk}function Ek(){return-ue.deltaY*(1===ue.deltaMode?.05:ue.deltaMode?1:.002)}function Ak(){return navigator.maxTouchPoints||"ontouchstart"in this}function Tk(t,e,n){var r=t.invertX(e[0][0])-n[0][0],i=t.invertX(e[1][0])-n[1][0],a=t.invertY(e[0][1])-n[0][1],o=t.invertY(e[1][1])-n[1][1];return t.translate(i>r?(r+i)/2:Math.min(0,r)||Math.max(0,i),o>a?(a+o)/2:Math.min(0,a)||Math.max(0,o))}var Sk=function(){var t,e,n=_k,r=wk,i=Tk,a=Ek,o=Ak,s=[0,1/0],u=[[-1/0,-1/0],[1/0,1/0]],c=250,l=hp,f=lt("start","zoom","end"),h=0;function d(t){t.property("__zoom",kk).on("wheel.zoom",x).on("mousedown.zoom",_).on("dblclick.zoom",w).filter(o).on("touchstart.zoom",k).on("touchmove.zoom",E).on("touchend.zoom touchcancel.zoom",A).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function p(t,e){return(e=Math.max(s[0],Math.min(s[1],e)))===t.k?t:new gk(e,t.x,t.y)}function y(t,e,n){var r=e[0]-n[0]*t.k,i=e[1]-n[1]*t.k;return r===t.x&&i===t.y?t:new gk(t.k,r,i)}function g(t){return[(+t[0][0]+ +t[1][0])/2,(+t[0][1]+ +t[1][1])/2]}function m(t,e,n){t.on("start.zoom",(function(){v(this,arguments).start()})).on("interrupt.zoom end.zoom",(function(){v(this,arguments).end()})).tween("zoom",(function(){var t=this,i=arguments,a=v(t,i),o=r.apply(t,i),s=null==n?g(o):"function"==typeof n?n.apply(t,i):n,u=Math.max(o[1][0]-o[0][0],o[1][1]-o[0][1]),c=t.__zoom,f="function"==typeof e?e.apply(t,i):e,h=l(c.invert(s).concat(u/c.k),f.invert(s).concat(u/f.k));return function(t){if(1===t)t=f;else{var e=h(t),n=u/e[2];t=new gk(n,s[0]-e[0]*n,s[1]-e[1]*n)}a.zoom(null,t)}}))}function v(t,e,n){return!n&&t.__zooming||new b(t,e)}function b(t,e){this.that=t,this.args=e,this.active=0,this.extent=r.apply(t,e),this.taps=0}function x(){if(n.apply(this,arguments)){var t=v(this,arguments),e=this.__zoom,r=Math.max(s[0],Math.min(s[1],e.k*Math.pow(2,a.apply(this,arguments)))),o=Dn(this);if(t.wheel)t.mouse[0][0]===o[0]&&t.mouse[0][1]===o[1]||(t.mouse[1]=e.invert(t.mouse[0]=o)),clearTimeout(t.wheel);else{if(e.k===r)return;t.mouse=[o,e.invert(o)],or(this),t.start()}xk(),t.wheel=setTimeout(c,150),t.zoom("mouse",i(y(p(e,r),t.mouse[0],t.mouse[1]),t.extent,u))}function c(){t.wheel=null,t.end()}}function _(){if(!e&&n.apply(this,arguments)){var t=v(this,arguments,!0),r=we(ue.view).on("mousemove.zoom",c,!0).on("mouseup.zoom",l,!0),a=Dn(this),o=ue.clientX,s=ue.clientY;Ae(ue.view),bk(),t.mouse=[a,this.__zoom.invert(a)],or(this),t.start()}function c(){if(xk(),!t.moved){var e=ue.clientX-o,n=ue.clientY-s;t.moved=e*e+n*n>h}t.zoom("mouse",i(y(t.that.__zoom,t.mouse[0]=Dn(t.that),t.mouse[1]),t.extent,u))}function l(){r.on("mousemove.zoom mouseup.zoom",null),Te(ue.view,t.moved),xk(),t.end()}}function w(){if(n.apply(this,arguments)){var t=this.__zoom,e=Dn(this),a=t.invert(e),o=t.k*(ue.shiftKey?.5:2),s=i(y(p(t,o),e,a),r.apply(this,arguments),u);xk(),c>0?we(this).transition().duration(c).call(m,s,e):we(this).call(d.transform,s)}}function k(){if(n.apply(this,arguments)){var e,r,i,a,o=ue.touches,s=o.length,u=v(this,arguments,ue.changedTouches.length===s);for(bk(),r=0;r<s;++r)i=o[r],a=[a=Cn(this,o,i.identifier),this.__zoom.invert(a),i.identifier],u.touch0?u.touch1||u.touch0[2]===a[2]||(u.touch1=a,u.taps=0):(u.touch0=a,e=!0,u.taps=1+!!t);t&&(t=clearTimeout(t)),e&&(u.taps<2&&(t=setTimeout((function(){t=null}),500)),or(this),u.start())}}function E(){if(this.__zooming){var e,n,r,a,o=v(this,arguments),s=ue.changedTouches,c=s.length;for(xk(),t&&(t=clearTimeout(t)),o.taps=0,e=0;e<c;++e)n=s[e],r=Cn(this,s,n.identifier),o.touch0&&o.touch0[2]===n.identifier?o.touch0[0]=r:o.touch1&&o.touch1[2]===n.identifier&&(o.touch1[0]=r);if(n=o.that.__zoom,o.touch1){var l=o.touch0[0],f=o.touch0[1],h=o.touch1[0],d=o.touch1[1],g=(g=h[0]-l[0])*g+(g=h[1]-l[1])*g,m=(m=d[0]-f[0])*m+(m=d[1]-f[1])*m;n=p(n,Math.sqrt(g/m)),r=[(l[0]+h[0])/2,(l[1]+h[1])/2],a=[(f[0]+d[0])/2,(f[1]+d[1])/2]}else{if(!o.touch0)return;r=o.touch0[0],a=o.touch0[1]}o.zoom("touch",i(y(n,r,a),o.extent,u))}}function A(){if(this.__zooming){var t,n,r=v(this,arguments),i=ue.changedTouches,a=i.length;for(bk(),e&&clearTimeout(e),e=setTimeout((function(){e=null}),500),t=0;t<a;++t)n=i[t],r.touch0&&r.touch0[2]===n.identifier?delete r.touch0:r.touch1&&r.touch1[2]===n.identifier&&delete r.touch1;if(r.touch1&&!r.touch0&&(r.touch0=r.touch1,delete r.touch1),r.touch0)r.touch0[1]=this.__zoom.invert(r.touch0[0]);else if(r.end(),2===r.taps){var o=we(this).on("dblclick.zoom");o&&o.apply(this,arguments)}}}return d.transform=function(t,e,n){var r=t.selection?t.selection():t;r.property("__zoom",kk),t!==r?m(t,e,n):r.interrupt().each((function(){v(this,arguments).start().zoom(null,"function"==typeof e?e.apply(this,arguments):e).end()}))},d.scaleBy=function(t,e,n){d.scaleTo(t,(function(){var t=this.__zoom.k,n="function"==typeof e?e.apply(this,arguments):e;return t*n}),n)},d.scaleTo=function(t,e,n){d.transform(t,(function(){var t=r.apply(this,arguments),a=this.__zoom,o=null==n?g(t):"function"==typeof n?n.apply(this,arguments):n,s=a.invert(o),c="function"==typeof e?e.apply(this,arguments):e;return i(y(p(a,c),o,s),t,u)}),n)},d.translateBy=function(t,e,n){d.transform(t,(function(){return i(this.__zoom.translate("function"==typeof e?e.apply(this,arguments):e,"function"==typeof n?n.apply(this,arguments):n),r.apply(this,arguments),u)}))},d.translateTo=function(t,e,n,a){d.transform(t,(function(){var t=r.apply(this,arguments),o=this.__zoom,s=null==a?g(t):"function"==typeof a?a.apply(this,arguments):a;return i(mk.translate(s[0],s[1]).scale(o.k).translate("function"==typeof e?-e.apply(this,arguments):-e,"function"==typeof n?-n.apply(this,arguments):-n),t,u)}),a)},b.prototype={start:function(){return 1==++this.active&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(t,e){return this.mouse&&"mouse"!==t&&(this.mouse[1]=e.invert(this.mouse[0])),this.touch0&&"touch"!==t&&(this.touch0[1]=e.invert(this.touch0[0])),this.touch1&&"touch"!==t&&(this.touch1[1]=e.invert(this.touch1[0])),this.that.__zoom=e,this.emit("zoom"),this},end:function(){return 0==--this.active&&(delete this.that.__zooming,this.emit("end")),this},emit:function(t){pe(new yk(d,t,this.that.__zoom),f.apply,f,[t,this.that,this.args])}},d.wheelDelta=function(t){return arguments.length?(a="function"==typeof t?t:pk(+t),d):a},d.filter=function(t){return arguments.length?(n="function"==typeof t?t:pk(!!t),d):n},d.touchable=function(t){return arguments.length?(o="function"==typeof t?t:pk(!!t),d):o},d.extent=function(t){return arguments.length?(r="function"==typeof t?t:pk([[+t[0][0],+t[0][1]],[+t[1][0],+t[1][1]]]),d):r},d.scaleExtent=function(t){return arguments.length?(s[0]=+t[0],s[1]=+t[1],d):[s[0],s[1]]},d.translateExtent=function(t){return arguments.length?(u[0][0]=+t[0][0],u[1][0]=+t[1][0],u[0][1]=+t[0][1],u[1][1]=+t[1][1],d):[[u[0][0],u[0][1]],[u[1][0],u[1][1]]]},d.constrain=function(t){return arguments.length?(i=t,d):i},d.duration=function(t){return arguments.length?(c=+t,d):c},d.interpolate=function(t){return arguments.length?(l=t,d):l},d.on=function(){var t=f.on.apply(f,arguments);return t===f?d:t},d.clickDistance=function(t){return arguments.length?(h=(t=+t)*t,d):Math.sqrt(h)},d};n.d(e,"version",(function(){return"5.15.0"})),n.d(e,"bisect",(function(){return u})),n.d(e,"bisectRight",(function(){return o})),n.d(e,"bisectLeft",(function(){return s})),n.d(e,"ascending",(function(){return r})),n.d(e,"bisector",(function(){return i})),n.d(e,"cross",(function(){return f})),n.d(e,"descending",(function(){return h})),n.d(e,"deviation",(function(){return y})),n.d(e,"extent",(function(){return g})),n.d(e,"histogram",(function(){return N})),n.d(e,"thresholdFreedmanDiaconis",(function(){return D})),n.d(e,"thresholdScott",(function(){return L})),n.d(e,"thresholdSturges",(function(){return O})),n.d(e,"max",(function(){return F})),n.d(e,"mean",(function(){return I})),n.d(e,"median",(function(){return P})),n.d(e,"merge",(function(){return R})),n.d(e,"min",(function(){return B})),n.d(e,"pairs",(function(){return c})),n.d(e,"permute",(function(){return j})),n.d(e,"quantile",(function(){return C})),n.d(e,"range",(function(){return w})),n.d(e,"scan",(function(){return Y})),n.d(e,"shuffle",(function(){return z})),n.d(e,"sum",(function(){return U})),n.d(e,"ticks",(function(){return T})),n.d(e,"tickIncrement",(function(){return S})),n.d(e,"tickStep",(function(){return M})),n.d(e,"transpose",(function(){return $})),n.d(e,"variance",(function(){return p})),n.d(e,"zip",(function(){return V})),n.d(e,"axisTop",(function(){return tt})),n.d(e,"axisRight",(function(){return et})),n.d(e,"axisBottom",(function(){return nt})),n.d(e,"axisLeft",(function(){return rt})),n.d(e,"brush",(function(){return Ai})),n.d(e,"brushX",(function(){return ki})),n.d(e,"brushY",(function(){return Ei})),n.d(e,"brushSelection",(function(){return wi})),n.d(e,"chord",(function(){return Fi})),n.d(e,"ribbon",(function(){return qi})),n.d(e,"nest",(function(){return Qi})),n.d(e,"set",(function(){return oa})),n.d(e,"map",(function(){return Ji})),n.d(e,"keys",(function(){return sa})),n.d(e,"values",(function(){return ua})),n.d(e,"entries",(function(){return ca})),n.d(e,"color",(function(){return $e})),n.d(e,"rgb",(function(){return We})),n.d(e,"hsl",(function(){return tn})),n.d(e,"lab",(function(){return pa})),n.d(e,"hcl",(function(){return wa})),n.d(e,"lch",(function(){return _a})),n.d(e,"gray",(function(){return da})),n.d(e,"cubehelix",(function(){return Na})),n.d(e,"contours",(function(){return Ya})),n.d(e,"contourDensity",(function(){return Ha})),n.d(e,"dispatch",(function(){return lt})),n.d(e,"drag",(function(){return Ka})),n.d(e,"dragDisable",(function(){return Ae})),n.d(e,"dragEnable",(function(){return Te})),n.d(e,"dsvFormat",(function(){return oo})),n.d(e,"csvParse",(function(){return uo})),n.d(e,"csvParseRows",(function(){return co})),n.d(e,"csvFormat",(function(){return lo})),n.d(e,"csvFormatBody",(function(){return fo})),n.d(e,"csvFormatRows",(function(){return ho})),n.d(e,"csvFormatRow",(function(){return po})),n.d(e,"csvFormatValue",(function(){return yo})),n.d(e,"tsvParse",(function(){return mo})),n.d(e,"tsvParseRows",(function(){return vo})),n.d(e,"tsvFormat",(function(){return bo})),n.d(e,"tsvFormatBody",(function(){return xo})),n.d(e,"tsvFormatRows",(function(){return _o})),n.d(e,"tsvFormatRow",(function(){return wo})),n.d(e,"tsvFormatValue",(function(){return ko})),n.d(e,"autoType",(function(){return Eo})),n.d(e,"easeLinear",(function(){return To})),n.d(e,"easeQuad",(function(){return Oo})),n.d(e,"easeQuadIn",(function(){return So})),n.d(e,"easeQuadOut",(function(){return Mo})),n.d(e,"easeQuadInOut",(function(){return Oo})),n.d(e,"easeCubic",(function(){return Hr})),n.d(e,"easeCubicIn",(function(){return Gr})),n.d(e,"easeCubicOut",(function(){return Vr})),n.d(e,"easeCubicInOut",(function(){return Hr})),n.d(e,"easePoly",(function(){return Do})),n.d(e,"easePolyIn",(function(){return No})),n.d(e,"easePolyOut",(function(){return Co})),n.d(e,"easePolyInOut",(function(){return Do})),n.d(e,"easeSin",(function(){return Ro})),n.d(e,"easeSinIn",(function(){return Io})),n.d(e,"easeSinOut",(function(){return Po})),n.d(e,"easeSinInOut",(function(){return Ro})),n.d(e,"easeExp",(function(){return Yo})),n.d(e,"easeExpIn",(function(){return Bo})),n.d(e,"easeExpOut",(function(){return jo})),n.d(e,"easeExpInOut",(function(){return Yo})),n.d(e,"easeCircle",(function(){return $o})),n.d(e,"easeCircleIn",(function(){return zo})),n.d(e,"easeCircleOut",(function(){return Uo})),n.d(e,"easeCircleInOut",(function(){return $o})),n.d(e,"easeBounce",(function(){return Vo})),n.d(e,"easeBounceIn",(function(){return Go})),n.d(e,"easeBounceOut",(function(){return Vo})),n.d(e,"easeBounceInOut",(function(){return Ho})),n.d(e,"easeBack",(function(){return Xo})),n.d(e,"easeBackIn",(function(){return Wo})),n.d(e,"easeBackOut",(function(){return qo})),n.d(e,"easeBackInOut",(function(){return Xo})),n.d(e,"easeElastic",(function(){return Qo})),n.d(e,"easeElasticIn",(function(){return Jo})),n.d(e,"easeElasticOut",(function(){return Qo})),n.d(e,"easeElasticInOut",(function(){return Ko})),n.d(e,"blob",(function(){return es})),n.d(e,"buffer",(function(){return rs})),n.d(e,"dsv",(function(){return ss})),n.d(e,"csv",(function(){return us})),n.d(e,"tsv",(function(){return cs})),n.d(e,"image",(function(){return ls})),n.d(e,"json",(function(){return hs})),n.d(e,"text",(function(){return as})),n.d(e,"xml",(function(){return ps})),n.d(e,"html",(function(){return ys})),n.d(e,"svg",(function(){return gs})),n.d(e,"forceCenter",(function(){return ms})),n.d(e,"forceCollide",(function(){return Ns})),n.d(e,"forceLink",(function(){return Ls})),n.d(e,"forceManyBody",(function(){return Bs})),n.d(e,"forceRadial",(function(){return js})),n.d(e,"forceSimulation",(function(){return Rs})),n.d(e,"forceX",(function(){return Ys})),n.d(e,"forceY",(function(){return zs})),n.d(e,"formatDefaultLocale",(function(){return ru})),n.d(e,"format",(function(){return Xs})),n.d(e,"formatPrefix",(function(){return Zs})),n.d(e,"formatLocale",(function(){return nu})),n.d(e,"formatSpecifier",(function(){return Vs})),n.d(e,"FormatSpecifier",(function(){return Hs})),n.d(e,"precisionFixed",(function(){return iu})),n.d(e,"precisionPrefix",(function(){return au})),n.d(e,"precisionRound",(function(){return ou})),n.d(e,"geoArea",(function(){return Ju})),n.d(e,"geoBounds",(function(){return $c})),n.d(e,"geoCentroid",(function(){return el})),n.d(e,"geoCircle",(function(){return hl})),n.d(e,"geoClipAntimeridian",(function(){return El})),n.d(e,"geoClipCircle",(function(){return Al})),n.d(e,"geoClipExtent",(function(){return Nl})),n.d(e,"geoClipRectangle",(function(){return Tl})),n.d(e,"geoContains",(function(){return ql})),n.d(e,"geoDistance",(function(){return jl})),n.d(e,"geoGraticule",(function(){return Jl})),n.d(e,"geoGraticule10",(function(){return Ql})),n.d(e,"geoInterpolate",(function(){return rf})),n.d(e,"geoLength",(function(){return Pl})),n.d(e,"geoPath",(function(){return nh})),n.d(e,"geoAlbers",(function(){return _h})),n.d(e,"geoAlbersUsa",(function(){return wh})),n.d(e,"geoAzimuthalEqualArea",(function(){return Th})),n.d(e,"geoAzimuthalEqualAreaRaw",(function(){return Ah})),n.d(e,"geoAzimuthalEquidistant",(function(){return Mh})),n.d(e,"geoAzimuthalEquidistantRaw",(function(){return Sh})),n.d(e,"geoConicConformal",(function(){return Fh})),n.d(e,"geoConicConformalRaw",(function(){return Lh})),n.d(e,"geoConicEqualArea",(function(){return xh})),n.d(e,"geoConicEqualAreaRaw",(function(){return bh})),n.d(e,"geoConicEquidistant",(function(){return Bh})),n.d(e,"geoConicEquidistantRaw",(function(){return Rh})),n.d(e,"geoEqualEarth",(function(){return Vh})),n.d(e,"geoEqualEarthRaw",(function(){return Gh})),n.d(e,"geoEquirectangular",(function(){return Ph})),n.d(e,"geoEquirectangularRaw",(function(){return Ih})),n.d(e,"geoGnomonic",(function(){return Wh})),n.d(e,"geoGnomonicRaw",(function(){return Hh})),n.d(e,"geoIdentity",(function(){return Xh})),n.d(e,"geoProjection",(function(){return gh})),n.d(e,"geoProjectionMutator",(function(){return mh})),n.d(e,"geoMercator",(function(){return Nh})),n.d(e,"geoMercatorRaw",(function(){return Oh})),n.d(e,"geoNaturalEarth1",(function(){return Jh})),n.d(e,"geoNaturalEarth1Raw",(function(){return Zh})),n.d(e,"geoOrthographic",(function(){return Kh})),n.d(e,"geoOrthographicRaw",(function(){return Qh})),n.d(e,"geoStereographic",(function(){return ed})),n.d(e,"geoStereographicRaw",(function(){return td})),n.d(e,"geoTransverseMercator",(function(){return rd})),n.d(e,"geoTransverseMercatorRaw",(function(){return nd})),n.d(e,"geoRotation",(function(){return cl})),n.d(e,"geoStream",(function(){return $u})),n.d(e,"geoTransform",(function(){return rh})),n.d(e,"cluster",(function(){return sd})),n.d(e,"hierarchy",(function(){return cd})),n.d(e,"pack",(function(){return Fd})),n.d(e,"packSiblings",(function(){return Md})),n.d(e,"packEnclose",(function(){return yd})),n.d(e,"partition",(function(){return Yd})),n.d(e,"stratify",(function(){return Vd})),n.d(e,"tree",(function(){return Qd})),n.d(e,"treemap",(function(){return rp})),n.d(e,"treemapBinary",(function(){return ip})),n.d(e,"treemapDice",(function(){return jd})),n.d(e,"treemapSlice",(function(){return Kd})),n.d(e,"treemapSliceDice",(function(){return ap})),n.d(e,"treemapSquarify",(function(){return np})),n.d(e,"treemapResquarify",(function(){return op})),n.d(e,"interpolate",(function(){return Mn})),n.d(e,"interpolateArray",(function(){return vn})),n.d(e,"interpolateBasis",(function(){return an})),n.d(e,"interpolateBasisClosed",(function(){return on})),n.d(e,"interpolateDate",(function(){return xn})),n.d(e,"interpolateDiscrete",(function(){return sp})),n.d(e,"interpolateHue",(function(){return up})),n.d(e,"interpolateNumber",(function(){return _n})),n.d(e,"interpolateNumberArray",(function(){return gn})),n.d(e,"interpolateObject",(function(){return wn})),n.d(e,"interpolateRound",(function(){return cp})),n.d(e,"interpolateString",(function(){return Sn})),n.d(e,"interpolateTransformCss",(function(){return fr})),n.d(e,"interpolateTransformSvg",(function(){return hr})),n.d(e,"interpolateZoom",(function(){return hp})),n.d(e,"interpolateRgb",(function(){return hn})),n.d(e,"interpolateRgbBasis",(function(){return pn})),n.d(e,"interpolateRgbBasisClosed",(function(){return yn})),n.d(e,"interpolateHsl",(function(){return pp})),n.d(e,"interpolateHslLong",(function(){return yp})),n.d(e,"interpolateLab",(function(){return gp})),n.d(e,"interpolateHcl",(function(){return vp})),n.d(e,"interpolateHclLong",(function(){return bp})),n.d(e,"interpolateCubehelix",(function(){return _p})),n.d(e,"interpolateCubehelixLong",(function(){return wp})),n.d(e,"piecewise",(function(){return kp})),n.d(e,"quantize",(function(){return Ep})),n.d(e,"path",(function(){return Ui})),n.d(e,"polygonArea",(function(){return Ap})),n.d(e,"polygonCentroid",(function(){return Tp})),n.d(e,"polygonHull",(function(){return Op})),n.d(e,"polygonContains",(function(){return Np})),n.d(e,"polygonLength",(function(){return Cp})),n.d(e,"quadtree",(function(){return Es})),n.d(e,"randomUniform",(function(){return Lp})),n.d(e,"randomNormal",(function(){return Fp})),n.d(e,"randomLogNormal",(function(){return Ip})),n.d(e,"randomBates",(function(){return Rp})),n.d(e,"randomIrwinHall",(function(){return Pp})),n.d(e,"randomExponential",(function(){return Bp})),n.d(e,"scaleBand",(function(){return Hp})),n.d(e,"scalePoint",(function(){return qp})),n.d(e,"scaleIdentity",(function(){return uy})),n.d(e,"scaleLinear",(function(){return sy})),n.d(e,"scaleLog",(function(){return my})),n.d(e,"scaleSymlog",(function(){return _y})),n.d(e,"scaleOrdinal",(function(){return Vp})),n.d(e,"scaleImplicit",(function(){return Gp})),n.d(e,"scalePow",(function(){return Ty})),n.d(e,"scaleSqrt",(function(){return Sy})),n.d(e,"scaleQuantile",(function(){return My})),n.d(e,"scaleQuantize",(function(){return Oy})),n.d(e,"scaleThreshold",(function(){return Ny})),n.d(e,"scaleTime",(function(){return sv})),n.d(e,"scaleUtc",(function(){return mv})),n.d(e,"scaleSequential",(function(){return xv})),n.d(e,"scaleSequentialLog",(function(){return _v})),n.d(e,"scaleSequentialPow",(function(){return kv})),n.d(e,"scaleSequentialSqrt",(function(){return Ev})),n.d(e,"scaleSequentialSymlog",(function(){return wv})),n.d(e,"scaleSequentialQuantile",(function(){return Av})),n.d(e,"scaleDiverging",(function(){return Sv})),n.d(e,"scaleDivergingLog",(function(){return Mv})),n.d(e,"scaleDivergingPow",(function(){return Nv})),n.d(e,"scaleDivergingSqrt",(function(){return Cv})),n.d(e,"scaleDivergingSymlog",(function(){return Ov})),n.d(e,"tickFormat",(function(){return ay})),n.d(e,"schemeCategory10",(function(){return Lv})),n.d(e,"schemeAccent",(function(){return Fv})),n.d(e,"schemeDark2",(function(){return Iv})),n.d(e,"schemePaired",(function(){return Pv})),n.d(e,"schemePastel1",(function(){return Rv})),n.d(e,"schemePastel2",(function(){return Bv})),n.d(e,"schemeSet1",(function(){return jv})),n.d(e,"schemeSet2",(function(){return Yv})),n.d(e,"schemeSet3",(function(){return zv})),n.d(e,"schemeTableau10",(function(){return Uv})),n.d(e,"interpolateBrBG",(function(){return Vv})),n.d(e,"schemeBrBG",(function(){return Gv})),n.d(e,"interpolatePRGn",(function(){return Wv})),n.d(e,"schemePRGn",(function(){return Hv})),n.d(e,"interpolatePiYG",(function(){return Xv})),n.d(e,"schemePiYG",(function(){return qv})),n.d(e,"interpolatePuOr",(function(){return Jv})),n.d(e,"schemePuOr",(function(){return Zv})),n.d(e,"interpolateRdBu",(function(){return Kv})),n.d(e,"schemeRdBu",(function(){return Qv})),n.d(e,"interpolateRdGy",(function(){return eb})),n.d(e,"schemeRdGy",(function(){return tb})),n.d(e,"interpolateRdYlBu",(function(){return rb})),n.d(e,"schemeRdYlBu",(function(){return nb})),n.d(e,"interpolateRdYlGn",(function(){return ab})),n.d(e,"schemeRdYlGn",(function(){return ib})),n.d(e,"interpolateSpectral",(function(){return sb})),n.d(e,"schemeSpectral",(function(){return ob})),n.d(e,"interpolateBuGn",(function(){return cb})),n.d(e,"schemeBuGn",(function(){return ub})),n.d(e,"interpolateBuPu",(function(){return fb})),n.d(e,"schemeBuPu",(function(){return lb})),n.d(e,"interpolateGnBu",(function(){return db})),n.d(e,"schemeGnBu",(function(){return hb})),n.d(e,"interpolateOrRd",(function(){return yb})),n.d(e,"schemeOrRd",(function(){return pb})),n.d(e,"interpolatePuBuGn",(function(){return mb})),n.d(e,"schemePuBuGn",(function(){return gb})),n.d(e,"interpolatePuBu",(function(){return bb})),n.d(e,"schemePuBu",(function(){return vb})),n.d(e,"interpolatePuRd",(function(){return _b})),n.d(e,"schemePuRd",(function(){return xb})),n.d(e,"interpolateRdPu",(function(){return kb})),n.d(e,"schemeRdPu",(function(){return wb})),n.d(e,"interpolateYlGnBu",(function(){return Ab})),n.d(e,"schemeYlGnBu",(function(){return Eb})),n.d(e,"interpolateYlGn",(function(){return Sb})),n.d(e,"schemeYlGn",(function(){return Tb})),n.d(e,"interpolateYlOrBr",(function(){return Ob})),n.d(e,"schemeYlOrBr",(function(){return Mb})),n.d(e,"interpolateYlOrRd",(function(){return Cb})),n.d(e,"schemeYlOrRd",(function(){return Nb})),n.d(e,"interpolateBlues",(function(){return Lb})),n.d(e,"schemeBlues",(function(){return Db})),n.d(e,"interpolateGreens",(function(){return Ib})),n.d(e,"schemeGreens",(function(){return Fb})),n.d(e,"interpolateGreys",(function(){return Rb})),n.d(e,"schemeGreys",(function(){return Pb})),n.d(e,"interpolatePurples",(function(){return jb})),n.d(e,"schemePurples",(function(){return Bb})),n.d(e,"interpolateReds",(function(){return zb})),n.d(e,"schemeReds",(function(){return Yb})),n.d(e,"interpolateOranges",(function(){return $b})),n.d(e,"schemeOranges",(function(){return Ub})),n.d(e,"interpolateCividis",(function(){return Gb})),n.d(e,"interpolateCubehelixDefault",(function(){return Vb})),n.d(e,"interpolateRainbow",(function(){return Xb})),n.d(e,"interpolateWarm",(function(){return Hb})),n.d(e,"interpolateCool",(function(){return Wb})),n.d(e,"interpolateSinebow",(function(){return Kb})),n.d(e,"interpolateTurbo",(function(){return tx})),n.d(e,"interpolateViridis",(function(){return nx})),n.d(e,"interpolateMagma",(function(){return rx})),n.d(e,"interpolateInferno",(function(){return ix})),n.d(e,"interpolatePlasma",(function(){return ax})),n.d(e,"create",(function(){return ox})),n.d(e,"creator",(function(){return ne})),n.d(e,"local",(function(){return ux})),n.d(e,"matcher",(function(){return yt})),n.d(e,"mouse",(function(){return Dn})),n.d(e,"namespace",(function(){return kt})),n.d(e,"namespaces",(function(){return wt})),n.d(e,"clientPoint",(function(){return Nn})),n.d(e,"select",(function(){return we})),n.d(e,"selectAll",(function(){return lx})),n.d(e,"selection",(function(){return _e})),n.d(e,"selector",(function(){return ht})),n.d(e,"selectorAll",(function(){return pt})),n.d(e,"style",(function(){return Ft})),n.d(e,"touch",(function(){return Cn})),n.d(e,"touches",(function(){return fx})),n.d(e,"window",(function(){return Nt})),n.d(e,"event",(function(){return ue})),n.d(e,"customEvent",(function(){return pe})),n.d(e,"arc",(function(){return Dx})),n.d(e,"area",(function(){return Bx})),n.d(e,"line",(function(){return Rx})),n.d(e,"pie",(function(){return zx})),n.d(e,"areaRadial",(function(){return Wx})),n.d(e,"radialArea",(function(){return Wx})),n.d(e,"lineRadial",(function(){return Hx})),n.d(e,"radialLine",(function(){return Hx})),n.d(e,"pointRadial",(function(){return qx})),n.d(e,"linkHorizontal",(function(){return n_})),n.d(e,"linkVertical",(function(){return r_})),n.d(e,"linkRadial",(function(){return i_})),n.d(e,"symbol",(function(){return w_})),n.d(e,"symbols",(function(){return __})),n.d(e,"symbolCircle",(function(){return a_})),n.d(e,"symbolCross",(function(){return o_})),n.d(e,"symbolDiamond",(function(){return c_})),n.d(e,"symbolSquare",(function(){return p_})),n.d(e,"symbolStar",(function(){return d_})),n.d(e,"symbolTriangle",(function(){return g_})),n.d(e,"symbolWye",(function(){return x_})),n.d(e,"curveBasisClosed",(function(){return M_})),n.d(e,"curveBasisOpen",(function(){return N_})),n.d(e,"curveBasis",(function(){return T_})),n.d(e,"curveBundle",(function(){return D_})),n.d(e,"curveCardinalClosed",(function(){return R_})),n.d(e,"curveCardinalOpen",(function(){return j_})),n.d(e,"curveCardinal",(function(){return I_})),n.d(e,"curveCatmullRomClosed",(function(){return G_})),n.d(e,"curveCatmullRomOpen",(function(){return H_})),n.d(e,"curveCatmullRom",(function(){return U_})),n.d(e,"curveLinearClosed",(function(){return q_})),n.d(e,"curveLinear",(function(){return Fx})),n.d(e,"curveMonotoneX",(function(){return nw})),n.d(e,"curveMonotoneY",(function(){return rw})),n.d(e,"curveNatural",(function(){return ow})),n.d(e,"curveStep",(function(){return uw})),n.d(e,"curveStepAfter",(function(){return lw})),n.d(e,"curveStepBefore",(function(){return cw})),n.d(e,"stack",(function(){return pw})),n.d(e,"stackOffsetExpand",(function(){return yw})),n.d(e,"stackOffsetDiverging",(function(){return gw})),n.d(e,"stackOffsetNone",(function(){return fw})),n.d(e,"stackOffsetSilhouette",(function(){return mw})),n.d(e,"stackOffsetWiggle",(function(){return vw})),n.d(e,"stackOrderAppearance",(function(){return bw})),n.d(e,"stackOrderAscending",(function(){return _w})),n.d(e,"stackOrderDescending",(function(){return kw})),n.d(e,"stackOrderInsideOut",(function(){return Ew})),n.d(e,"stackOrderNone",(function(){return hw})),n.d(e,"stackOrderReverse",(function(){return Aw})),n.d(e,"timeInterval",(function(){return Ly})),n.d(e,"timeMillisecond",(function(){return pg})),n.d(e,"timeMilliseconds",(function(){return yg})),n.d(e,"utcMillisecond",(function(){return pg})),n.d(e,"utcMilliseconds",(function(){return yg})),n.d(e,"timeSecond",(function(){return fg})),n.d(e,"timeSeconds",(function(){return hg})),n.d(e,"utcSecond",(function(){return fg})),n.d(e,"utcSeconds",(function(){return hg})),n.d(e,"timeMinute",(function(){return ug})),n.d(e,"timeMinutes",(function(){return cg})),n.d(e,"timeHour",(function(){return ag})),n.d(e,"timeHours",(function(){return og})),n.d(e,"timeDay",(function(){return ng})),n.d(e,"timeDays",(function(){return rg})),n.d(e,"timeWeek",(function(){return zy})),n.d(e,"timeWeeks",(function(){return qy})),n.d(e,"timeSunday",(function(){return zy})),n.d(e,"timeSundays",(function(){return qy})),n.d(e,"timeMonday",(function(){return Uy})),n.d(e,"timeMondays",(function(){return Xy})),n.d(e,"timeTuesday",(function(){return $y})),n.d(e,"timeTuesdays",(function(){return Zy})),n.d(e,"timeWednesday",(function(){return Gy})),n.d(e,"timeWednesdays",(function(){return Jy})),n.d(e,"timeThursday",(function(){return Vy})),n.d(e,"timeThursdays",(function(){return Qy})),n.d(e,"timeFriday",(function(){return Hy})),n.d(e,"timeFridays",(function(){return Ky})),n.d(e,"timeSaturday",(function(){return Wy})),n.d(e,"timeSaturdays",(function(){return tg})),n.d(e,"timeMonth",(function(){return By})),n.d(e,"timeMonths",(function(){return jy})),n.d(e,"timeYear",(function(){return Iy})),n.d(e,"timeYears",(function(){return Py})),n.d(e,"utcMinute",(function(){return yv})),n.d(e,"utcMinutes",(function(){return gv})),n.d(e,"utcHour",(function(){return hv})),n.d(e,"utcHours",(function(){return dv})),n.d(e,"utcDay",(function(){return Dg})),n.d(e,"utcDays",(function(){return Lg})),n.d(e,"utcWeek",(function(){return mg})),n.d(e,"utcWeeks",(function(){return Eg})),n.d(e,"utcSunday",(function(){return mg})),n.d(e,"utcSundays",(function(){return Eg})),n.d(e,"utcMonday",(function(){return vg})),n.d(e,"utcMondays",(function(){return Ag})),n.d(e,"utcTuesday",(function(){return bg})),n.d(e,"utcTuesdays",(function(){return Tg})),n.d(e,"utcWednesday",(function(){return xg})),n.d(e,"utcWednesdays",(function(){return Sg})),n.d(e,"utcThursday",(function(){return _g})),n.d(e,"utcThursdays",(function(){return Mg})),n.d(e,"utcFriday",(function(){return wg})),n.d(e,"utcFridays",(function(){return Og})),n.d(e,"utcSaturday",(function(){return kg})),n.d(e,"utcSaturdays",(function(){return Ng})),n.d(e,"utcMonth",(function(){return cv})),n.d(e,"utcMonths",(function(){return lv})),n.d(e,"utcYear",(function(){return Ig})),n.d(e,"utcYears",(function(){return Pg})),n.d(e,"timeFormatDefaultLocale",(function(){return rv})),n.d(e,"timeFormat",(function(){return Ug})),n.d(e,"timeParse",(function(){return $g})),n.d(e,"utcFormat",(function(){return Gg})),n.d(e,"utcParse",(function(){return Vg})),n.d(e,"timeFormatLocale",(function(){return Yg})),n.d(e,"isoFormat",(function(){return Tw})),n.d(e,"isoParse",(function(){return Sw})),n.d(e,"now",(function(){return zn})),n.d(e,"timer",(function(){return Gn})),n.d(e,"timerFlush",(function(){return Vn})),n.d(e,"timeout",(function(){return Xn})),n.d(e,"interval",(function(){return Mw})),n.d(e,"transition",(function(){return zr})),n.d(e,"active",(function(){return Zr})),n.d(e,"interrupt",(function(){return or})),n.d(e,"voronoi",(function(){return dk})),n.d(e,"zoom",(function(){return Sk})),n.d(e,"zoomTransform",(function(){return vk})),n.d(e,"zoomIdentity",(function(){return mk}))},function(t,e,n){(function(t,r){var i=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[1,2],n=[1,3],r=[1,4],i=[2,4],a=[1,9],o=[1,11],s=[1,12],u=[1,14],c=[1,15],l=[1,16],f=[1,18],h=[1,19],d=[1,20],p=[1,21],y=[1,22],g=[1,23],m=[1,25],v=[1,26],b=[1,4,5,10,15,16,17,19,21,22,23,24,25,27,29,30,31,42],x=[1,34],_=[4,5,10,15,16,17,19,21,22,23,24,25,27,31,42],w=[4,5,10,15,16,17,19,21,22,23,24,25,27,30,31,42],k=[4,5,10,15,16,17,19,21,22,23,24,25,27,29,31,42],E=[40,41,42],A={trace:function(){},yy:{},symbols_:{error:2,start:3,SPACE:4,NL:5,SD:6,document:7,line:8,statement:9,participant:10,actor:11,AS:12,restOfLine:13,signal:14,autonumber:15,activate:16,deactivate:17,note_statement:18,title:19,text2:20,loop:21,end:22,rect:23,opt:24,alt:25,else_sections:26,par:27,par_sections:28,and:29,else:30,note:31,placement:32,over:33,actor_pair:34,spaceList:35,",":36,left_of:37,right_of:38,signaltype:39,"+":40,"-":41,ACTOR:42,SOLID_OPEN_ARROW:43,DOTTED_OPEN_ARROW:44,SOLID_ARROW:45,DOTTED_ARROW:46,SOLID_CROSS:47,DOTTED_CROSS:48,TXT:49,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NL",6:"SD",10:"participant",12:"AS",13:"restOfLine",15:"autonumber",16:"activate",17:"deactivate",19:"title",21:"loop",22:"end",23:"rect",24:"opt",25:"alt",27:"par",29:"and",30:"else",31:"note",33:"over",36:",",37:"left_of",38:"right_of",40:"+",41:"-",42:"ACTOR",43:"SOLID_OPEN_ARROW",44:"DOTTED_OPEN_ARROW",45:"SOLID_ARROW",46:"DOTTED_ARROW",47:"SOLID_CROSS",48:"DOTTED_CROSS",49:"TXT"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[9,5],[9,3],[9,2],[9,1],[9,3],[9,3],[9,2],[9,3],[9,4],[9,4],[9,4],[9,4],[9,4],[28,1],[28,4],[26,1],[26,4],[18,4],[18,4],[35,2],[35,1],[34,3],[34,1],[32,1],[32,1],[14,5],[14,5],[14,4],[11,1],[39,1],[39,1],[39,1],[39,1],[39,1],[39,1],[20,1]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 3:return r.apply(a[s]),a[s];case 4:this.$=[];break;case 5:a[s-1].push(a[s]),this.$=a[s-1];break;case 6:case 7:this.$=a[s];break;case 8:this.$=[];break;case 9:a[s-3].description=a[s-1],this.$=a[s-3];break;case 10:this.$=a[s-1];break;case 12:r.enableSequenceNumbers();break;case 13:this.$={type:"activeStart",signalType:r.LINETYPE.ACTIVE_START,actor:a[s-1]};break;case 14:this.$={type:"activeEnd",signalType:r.LINETYPE.ACTIVE_END,actor:a[s-1]};break;case 16:this.$=[{type:"setTitle",text:a[s-1]}];break;case 17:a[s-1].unshift({type:"loopStart",loopText:a[s-2],signalType:r.LINETYPE.LOOP_START}),a[s-1].push({type:"loopEnd",loopText:a[s-2],signalType:r.LINETYPE.LOOP_END}),this.$=a[s-1];break;case 18:a[s-1].unshift({type:"rectStart",color:a[s-2],signalType:r.LINETYPE.RECT_START}),a[s-1].push({type:"rectEnd",color:a[s-2],signalType:r.LINETYPE.RECT_END}),this.$=a[s-1];break;case 19:a[s-1].unshift({type:"optStart",optText:a[s-2],signalType:r.LINETYPE.OPT_START}),a[s-1].push({type:"optEnd",optText:a[s-2],signalType:r.LINETYPE.OPT_END}),this.$=a[s-1];break;case 20:a[s-1].unshift({type:"altStart",altText:a[s-2],signalType:r.LINETYPE.ALT_START}),a[s-1].push({type:"altEnd",signalType:r.LINETYPE.ALT_END}),this.$=a[s-1];break;case 21:a[s-1].unshift({type:"parStart",parText:a[s-2],signalType:r.LINETYPE.PAR_START}),a[s-1].push({type:"parEnd",signalType:r.LINETYPE.PAR_END}),this.$=a[s-1];break;case 23:this.$=a[s-3].concat([{type:"and",parText:a[s-1],signalType:r.LINETYPE.PAR_AND},a[s]]);break;case 25:this.$=a[s-3].concat([{type:"else",altText:a[s-1],signalType:r.LINETYPE.ALT_ELSE},a[s]]);break;case 26:this.$=[a[s-1],{type:"addNote",placement:a[s-2],actor:a[s-1].actor,text:a[s]}];break;case 27:a[s-2]=[].concat(a[s-1],a[s-1]).slice(0,2),a[s-2][0]=a[s-2][0].actor,a[s-2][1]=a[s-2][1].actor,this.$=[a[s-1],{type:"addNote",placement:r.PLACEMENT.OVER,actor:a[s-2].slice(0,2),text:a[s]}];break;case 30:this.$=[a[s-2],a[s]];break;case 31:this.$=a[s];break;case 32:this.$=r.PLACEMENT.LEFTOF;break;case 33:this.$=r.PLACEMENT.RIGHTOF;break;case 34:this.$=[a[s-4],a[s-1],{type:"addMessage",from:a[s-4].actor,to:a[s-1].actor,signalType:a[s-3],msg:a[s]},{type:"activeStart",signalType:r.LINETYPE.ACTIVE_START,actor:a[s-1]}];break;case 35:this.$=[a[s-4],a[s-1],{type:"addMessage",from:a[s-4].actor,to:a[s-1].actor,signalType:a[s-3],msg:a[s]},{type:"activeEnd",signalType:r.LINETYPE.ACTIVE_END,actor:a[s-4]}];break;case 36:this.$=[a[s-3],a[s-1],{type:"addMessage",from:a[s-3].actor,to:a[s-1].actor,signalType:a[s-2],msg:a[s]}];break;case 37:this.$={type:"addActor",actor:a[s]};break;case 38:this.$=r.LINETYPE.SOLID_OPEN;break;case 39:this.$=r.LINETYPE.DOTTED_OPEN;break;case 40:this.$=r.LINETYPE.SOLID;break;case 41:this.$=r.LINETYPE.DOTTED;break;case 42:this.$=r.LINETYPE.SOLID_CROSS;break;case 43:this.$=r.LINETYPE.DOTTED_CROSS;break;case 44:this.$=a[s].substring(1).trim().replace(/\\n/gm,"\n")}},table:[{3:1,4:e,5:n,6:r},{1:[3]},{3:5,4:e,5:n,6:r},{3:6,4:e,5:n,6:r},t([1,4,5,10,15,16,17,19,21,23,24,25,27,31,42],i,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:a,5:o,8:8,9:10,10:s,11:24,14:13,15:u,16:c,17:l,18:17,19:f,21:h,23:d,24:p,25:y,27:g,31:m,42:v},t(b,[2,5]),{9:27,10:s,11:24,14:13,15:u,16:c,17:l,18:17,19:f,21:h,23:d,24:p,25:y,27:g,31:m,42:v},t(b,[2,7]),t(b,[2,8]),{11:28,42:v},{5:[1,29]},t(b,[2,12]),{11:30,42:v},{11:31,42:v},{5:[1,32]},{20:33,49:x},{13:[1,35]},{13:[1,36]},{13:[1,37]},{13:[1,38]},{13:[1,39]},{39:40,43:[1,41],44:[1,42],45:[1,43],46:[1,44],47:[1,45],48:[1,46]},{32:47,33:[1,48],37:[1,49],38:[1,50]},t([5,12,36,43,44,45,46,47,48,49],[2,37]),t(b,[2,6]),{5:[1,52],12:[1,51]},t(b,[2,11]),{5:[1,53]},{5:[1,54]},t(b,[2,15]),{5:[1,55]},{5:[2,44]},t(_,i,{7:56}),t(_,i,{7:57}),t(_,i,{7:58}),t(w,i,{26:59,7:60}),t(k,i,{28:61,7:62}),{11:65,40:[1,63],41:[1,64],42:v},t(E,[2,38]),t(E,[2,39]),t(E,[2,40]),t(E,[2,41]),t(E,[2,42]),t(E,[2,43]),{11:66,42:v},{11:68,34:67,42:v},{42:[2,32]},{42:[2,33]},{13:[1,69]},t(b,[2,10]),t(b,[2,13]),t(b,[2,14]),t(b,[2,16]),{4:a,5:o,8:8,9:10,10:s,11:24,14:13,15:u,16:c,17:l,18:17,19:f,21:h,22:[1,70],23:d,24:p,25:y,27:g,31:m,42:v},{4:a,5:o,8:8,9:10,10:s,11:24,14:13,15:u,16:c,17:l,18:17,19:f,21:h,22:[1,71],23:d,24:p,25:y,27:g,31:m,42:v},{4:a,5:o,8:8,9:10,10:s,11:24,14:13,15:u,16:c,17:l,18:17,19:f,21:h,22:[1,72],23:d,24:p,25:y,27:g,31:m,42:v},{22:[1,73]},{4:a,5:o,8:8,9:10,10:s,11:24,14:13,15:u,16:c,17:l,18:17,19:f,21:h,22:[2,24],23:d,24:p,25:y,27:g,30:[1,74],31:m,42:v},{22:[1,75]},{4:a,5:o,8:8,9:10,10:s,11:24,14:13,15:u,16:c,17:l,18:17,19:f,21:h,22:[2,22],23:d,24:p,25:y,27:g,29:[1,76],31:m,42:v},{11:77,42:v},{11:78,42:v},{20:79,49:x},{20:80,49:x},{20:81,49:x},{36:[1,82],49:[2,31]},{5:[1,83]},t(b,[2,17]),t(b,[2,18]),t(b,[2,19]),t(b,[2,20]),{13:[1,84]},t(b,[2,21]),{13:[1,85]},{20:86,49:x},{20:87,49:x},{5:[2,36]},{5:[2,26]},{5:[2,27]},{11:88,42:v},t(b,[2,9]),t(w,i,{7:60,26:89}),t(k,i,{7:62,28:90}),{5:[2,34]},{5:[2,35]},{49:[2,30]},{22:[2,25]},{22:[2,23]}],defaultActions:{5:[2,1],6:[2,2],34:[2,44],49:[2,32],50:[2,33],79:[2,36],80:[2,26],81:[2,27],86:[2,34],87:[2,35],88:[2,30],89:[2,25],90:[2,23]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",u=0,c=0,l=0,f=2,h=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),y={yy:{}};for(var g in this.yy)Object.prototype.hasOwnProperty.call(this.yy,g)&&(y.yy[g]=this.yy[g]);p.setInput(t,y.yy),y.yy.lexer=p,y.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var m=p.yylloc;a.push(m);var v=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||h)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof y.yy.parseError?this.parseError=y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var x,_,w,k,E,A,T,S,M,O={};;){if(w=n[n.length-1],this.defaultActions[w]?k=this.defaultActions[w]:(null==x&&(x=b()),k=o[w]&&o[w][x]),void 0===k||!k.length||!k[0]){var N="";for(A in M=[],o[w])this.terminals_[A]&&A>f&&M.push("'"+this.terminals_[A]+"'");N=p.showPosition?"Parse error on line "+(u+1)+":\n"+p.showPosition()+"\nExpecting "+M.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(u+1)+": Unexpected "+(x==h?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(N,{text:p.match,token:this.terminals_[x]||x,line:p.yylineno,loc:m,expected:M})}if(k[0]instanceof Array&&k.length>1)throw new Error("Parse Error: multiple actions possible at state: "+w+", token: "+x);switch(k[0]){case 1:n.push(x),i.push(p.yytext),a.push(p.yylloc),n.push(k[1]),x=null,_?(x=_,_=null):(c=p.yyleng,s=p.yytext,u=p.yylineno,m=p.yylloc,l>0&&l--);break;case 2:if(T=this.productions_[k[1]][1],O.$=i[i.length-T],O._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},v&&(O._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(O,[s,c,u,y.yy,k[1],i,a].concat(d))))return E;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[k[1]][0]),i.push(O.$),a.push(O._$),S=o[n[n.length-2]][n[n.length-1]],n.push(S);break;case 3:return!0}}return!0}},T={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;a<i.length;a++)if((n=this._input.match(this.rules[i[a]]))&&(!e||n[0].length>e[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return 5;case 1:case 2:case 3:case 4:break;case 5:return this.begin("ID"),10;case 6:return e.yytext=e.yytext.trim(),this.begin("ALIAS"),42;case 7:return this.popState(),this.popState(),this.begin("LINE"),12;case 8:return this.popState(),this.popState(),5;case 9:return this.begin("LINE"),21;case 10:return this.begin("LINE"),23;case 11:return this.begin("LINE"),24;case 12:return this.begin("LINE"),25;case 13:return this.begin("LINE"),30;case 14:return this.begin("LINE"),27;case 15:return this.begin("LINE"),29;case 16:return this.popState(),13;case 17:return 22;case 18:return 37;case 19:return 38;case 20:return 33;case 21:return 31;case 22:return this.begin("ID"),16;case 23:return this.begin("ID"),17;case 24:return 19;case 25:return 6;case 26:return 15;case 27:return 36;case 28:return 5;case 29:return e.yytext=e.yytext.trim(),42;case 30:return 45;case 31:return 46;case 32:return 43;case 33:return 44;case 34:return 47;case 35:return 48;case 36:return 49;case 37:return 40;case 38:return 41;case 39:return 5;case 40:return"INVALID"}},rules:[/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:participant\b)/i,/^(?:[^\->:\n,;]+?(?=((?!\n)\s)+as(?!\n)\s|[#\n;]|$))/i,/^(?:as\b)/i,/^(?:(?:))/i,/^(?:loop\b)/i,/^(?:rect\b)/i,/^(?:opt\b)/i,/^(?:alt\b)/i,/^(?:else\b)/i,/^(?:par\b)/i,/^(?:and\b)/i,/^(?:[^#\n;]*)/i,/^(?:end\b)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:over\b)/i,/^(?:note\b)/i,/^(?:activate\b)/i,/^(?:deactivate\b)/i,/^(?:title\b)/i,/^(?:sequenceDiagram\b)/i,/^(?:autonumber\b)/i,/^(?:,)/i,/^(?:;)/i,/^(?:[^\+\->:\n,;]+)/i,/^(?:->>)/i,/^(?:-->>)/i,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?::[^#\n;]+)/i,/^(?:\+)/i,/^(?:-)/i,/^(?:$)/i,/^(?:.)/i],conditions:{LINE:{rules:[2,3,16],inclusive:!1},ALIAS:{rules:[2,3,7,8],inclusive:!1},ID:{rules:[2,3,6],inclusive:!1},INITIAL:{rules:[0,1,3,4,5,9,10,11,12,13,14,15,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40],inclusive:!0}}};function S(){this.yy={}}return A.lexer=T,S.prototype=A,A.Parser=S,new S}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(14).readFileSync(n(15).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(11),n(6)(t))},function(t,e,n){var r=n(168);t.exports={Graph:r.Graph,json:n(271),alg:n(272),version:r.version}},function(t,e,n){var r;try{r={cloneDeep:n(283),constant:n(78),defaults:n(137),each:n(79),filter:n(111),find:n(284),flatten:n(139),forEach:n(109),forIn:n(289),has:n(85),isUndefined:n(122),last:n(290),map:n(123),mapValues:n(291),max:n(292),merge:n(294),min:n(299),minBy:n(300),now:n(301),pick:n(144),range:n(145),reduce:n(125),sortBy:n(308),uniqueId:n(146),values:n(130),zipObject:n(313)}}catch(t){}r||(r=window._),t.exports=r},function(t,e){var n=Array.isArray;t.exports=n},function(t,e,n){
-/**
- * @license
- * Copyright (c) 2012-2013 Chris Pettitt
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-t.exports={graphlib:n(281),dagre:n(136),intersect:n(338),render:n(340),util:n(10),version:n(352)}},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},function(t,e,n){"use strict";var r=n(3),i=n(13).Graph;function a(t,e,n,i){var a;do{a=r.uniqueId(i)}while(t.hasNode(a));return n.dummy=e,t.setNode(a,n),a}function o(t){return r.max(r.map(t.nodes(),(function(e){var n=t.node(e).rank;if(!r.isUndefined(n))return n})))}t.exports={addDummyNode:a,simplify:function(t){var e=(new i).setGraph(t.graph());return r.forEach(t.nodes(),(function(n){e.setNode(n,t.node(n))})),r.forEach(t.edges(),(function(n){var r=e.edge(n.v,n.w)||{weight:0,minlen:1},i=t.edge(n);e.setEdge(n.v,n.w,{weight:r.weight+i.weight,minlen:Math.max(r.minlen,i.minlen)})})),e},asNonCompoundGraph:function(t){var e=new i({multigraph:t.isMultigraph()}).setGraph(t.graph());return r.forEach(t.nodes(),(function(n){t.children(n).length||e.setNode(n,t.node(n))})),r.forEach(t.edges(),(function(n){e.setEdge(n,t.edge(n))})),e},successorWeights:function(t){var e=r.map(t.nodes(),(function(e){var n={};return r.forEach(t.outEdges(e),(function(e){n[e.w]=(n[e.w]||0)+t.edge(e).weight})),n}));return r.zipObject(t.nodes(),e)},predecessorWeights:function(t){var e=r.map(t.nodes(),(function(e){var n={};return r.forEach(t.inEdges(e),(function(e){n[e.v]=(n[e.v]||0)+t.edge(e).weight})),n}));return r.zipObject(t.nodes(),e)},intersectRect:function(t,e){var n,r,i=t.x,a=t.y,o=e.x-i,s=e.y-a,u=t.width/2,c=t.height/2;if(!o&&!s)throw new Error("Not possible to find intersection inside of the rectangle");Math.abs(s)*u>Math.abs(o)*c?(s<0&&(c=-c),n=c*o/s,r=c):(o<0&&(u=-u),n=u,r=u*s/o);return{x:i+n,y:a+r}},buildLayerMatrix:function(t){var e=r.map(r.range(o(t)+1),(function(){return[]}));return r.forEach(t.nodes(),(function(n){var i=t.node(n),a=i.rank;r.isUndefined(a)||(e[a][i.order]=n)})),e},normalizeRanks:function(t){var e=r.min(r.map(t.nodes(),(function(e){return t.node(e).rank})));r.forEach(t.nodes(),(function(n){var i=t.node(n);r.has(i,"rank")&&(i.rank-=e)}))},removeEmptyRanks:function(t){var e=r.min(r.map(t.nodes(),(function(e){return t.node(e).rank}))),n=[];r.forEach(t.nodes(),(function(r){var i=t.node(r).rank-e;n[i]||(n[i]=[]),n[i].push(r)}));var i=0,a=t.graph().nodeRankFactor;r.forEach(n,(function(e,n){r.isUndefined(e)&&n%a!=0?--i:i&&r.forEach(e,(function(e){t.node(e).rank+=i}))}))},addBorderNode:function(t,e,n,r){var i={width:0,height:0};arguments.length>=4&&(i.rank=n,i.order=r);return a(t,"border",i,e)},maxRank:o,partition:function(t,e){var n={lhs:[],rhs:[]};return r.forEach(t,(function(t){e(t)?n.lhs.push(t):n.rhs.push(t)})),n},time:function(t,e){var n=r.now();try{return e()}finally{console.log(t+" time: "+(r.now()-n)+"ms")}},notime:function(t,e){return e()}}},function(t,e,n){var r;try{r={clone:n(169),constant:n(78),each:n(79),filter:n(111),has:n(85),isArray:n(4),isEmpty:n(246),isFunction:n(31),isUndefined:n(122),keys:n(25),map:n(123),reduce:n(125),size:n(249),transform:n(255),union:n(256),values:n(130)}}catch(t){}r||(r=window._),t.exports=r},function(t,e){t.exports=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}},function(t,e,n){var r=n(37);t.exports={isSubgraph:function(t,e){return!!t.children(e).length},edgeToId:function(t){return a(t.v)+":"+a(t.w)+":"+a(t.name)},applyStyle:function(t,e){e&&t.attr("style",e)},applyClass:function(t,e,n){e&&t.attr("class",e).attr("class",n+" "+t.attr("class"))},applyTransition:function(t,e){var n=e.graph();if(r.isPlainObject(n)){var i=n.transition;if(r.isFunction(i))return i(t)}return t}};var i=/:/g;function a(t){return t?String(t).replace(i,"\\:"):""}},function(t,e){var n,r,i=t.exports={};function a(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}function s(t){if(n===setTimeout)return setTimeout(t,0);if((n===a||!n)&&setTimeout)return n=setTimeout,setTimeout(t,0);try{return n(t,0)}catch(e){try{return n.call(null,t,0)}catch(e){return n.call(this,t,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:a}catch(t){n=a}try{r="function"==typeof clearTimeout?clearTimeout:o}catch(t){r=o}}();var u,c=[],l=!1,f=-1;function h(){l&&u&&(l=!1,u.length?c=u.concat(c):f=-1,c.length&&d())}function d(){if(!l){var t=s(h);l=!0;for(var e=c.length;e;){for(u=c,c=[];++f<e;)u&&u[f].run();f=-1,e=c.length}u=null,l=!1,function(t){if(r===clearTimeout)return clearTimeout(t);if((r===o||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(t);try{r(t)}catch(e){try{return r.call(null,t)}catch(e){return r.call(this,t)}}}(t)}}function p(t,e){this.fun=t,this.array=e}function y(){}i.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];c.push(new p(t,e)),1!==c.length||l||s(d)},p.prototype.run=function(){this.fun.apply(null,this.array)},i.title="browser",i.browser=!0,i.env={},i.argv=[],i.version="",i.versions={},i.on=y,i.addListener=y,i.once=y,i.off=y,i.removeListener=y,i.removeAllListeners=y,i.emit=y,i.prependListener=y,i.prependOnceListener=y,i.listeners=function(t){return[]},i.binding=function(t){throw new Error("process.binding is not supported")},i.cwd=function(){return"/"},i.chdir=function(t){throw new Error("process.chdir is not supported")},i.umask=function(){return 0}},function(t,e,n){var r=n(92),i="object"==typeof self&&self&&self.Object===Object&&self,a=r||i||Function("return this")();t.exports=a},function(t,e,n){var r;try{r=n(2)}catch(t){}r||(r=window.graphlib),t.exports=r},function(t,e){},function(t,e,n){(function(t){function n(t,e){for(var n=0,r=t.length-1;r>=0;r--){var i=t[r];"."===i?t.splice(r,1):".."===i?(t.splice(r,1),n++):n&&(t.splice(r,1),n--)}if(e)for(;n--;n)t.unshift("..");return t}function r(t,e){if(t.filter)return t.filter(e);for(var n=[],r=0;r<t.length;r++)e(t[r],r,t)&&n.push(t[r]);return n}e.resolve=function(){for(var e="",i=!1,a=arguments.length-1;a>=-1&&!i;a--){var o=a>=0?arguments[a]:t.cwd();if("string"!=typeof o)throw new TypeError("Arguments to path.resolve must be strings");o&&(e=o+"/"+e,i="/"===o.charAt(0))}return(i?"/":"")+(e=n(r(e.split("/"),(function(t){return!!t})),!i).join("/"))||"."},e.normalize=function(t){var a=e.isAbsolute(t),o="/"===i(t,-1);return(t=n(r(t.split("/"),(function(t){return!!t})),!a).join("/"))||a||(t="."),t&&o&&(t+="/"),(a?"/":"")+t},e.isAbsolute=function(t){return"/"===t.charAt(0)},e.join=function(){var t=Array.prototype.slice.call(arguments,0);return e.normalize(r(t,(function(t,e){if("string"!=typeof t)throw new TypeError("Arguments to path.join must be strings");return t})).join("/"))},e.relative=function(t,n){function r(t){for(var e=0;e<t.length&&""===t[e];e++);for(var n=t.length-1;n>=0&&""===t[n];n--);return e>n?[]:t.slice(e,n-e+1)}t=e.resolve(t).substr(1),n=e.resolve(n).substr(1);for(var i=r(t.split("/")),a=r(n.split("/")),o=Math.min(i.length,a.length),s=o,u=0;u<o;u++)if(i[u]!==a[u]){s=u;break}var c=[];for(u=s;u<i.length;u++)c.push("..");return(c=c.concat(a.slice(s))).join("/")},e.sep="/",e.delimiter=":",e.dirname=function(t){if("string"!=typeof t&&(t+=""),0===t.length)return".";for(var e=t.charCodeAt(0),n=47===e,r=-1,i=!0,a=t.length-1;a>=1;--a)if(47===(e=t.charCodeAt(a))){if(!i){r=a;break}}else i=!1;return-1===r?n?"/":".":n&&1===r?"/":t.slice(0,r)},e.basename=function(t,e){var n=function(t){"string"!=typeof t&&(t+="");var e,n=0,r=-1,i=!0;for(e=t.length-1;e>=0;--e)if(47===t.charCodeAt(e)){if(!i){n=e+1;break}}else-1===r&&(i=!1,r=e+1);return-1===r?"":t.slice(n,r)}(t);return e&&n.substr(-1*e.length)===e&&(n=n.substr(0,n.length-e.length)),n},e.extname=function(t){"string"!=typeof t&&(t+="");for(var e=-1,n=0,r=-1,i=!0,a=0,o=t.length-1;o>=0;--o){var s=t.charCodeAt(o);if(47!==s)-1===r&&(i=!1,r=o+1),46===s?-1===e?e=o:1!==a&&(a=1):-1!==e&&(a=-1);else if(!i){n=o+1;break}}return-1===e||-1===r||0===a||1===a&&e===r-1&&e===n+1?"":t.slice(e,r)};var i="b"==="ab".substr(-1)?function(t,e,n){return t.substr(e,n)}:function(t,e,n){return e<0&&(e=t.length+e),t.substr(e,n)}}).call(this,n(11))},function(t,e){t.exports=function(t){return null!=t&&"object"==typeof t}},function(t,e,n){(function(t,r){var i=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[1,2],n=[1,3],r=[1,4],i=[2,4],a=[1,9],o=[1,11],s=[1,13],u=[1,14],c=[1,15],l=[1,16],f=[1,21],h=[1,17],d=[1,18],p=[1,19],y=[1,20],g=[1,22],m=[1,4,5,13,14,16,18,19,21,22,23,24,25,28],v=[1,4,5,11,12,13,14,16,18,19,21,22,23,24,25,28],b=[4,5,13,14,16,18,19,21,22,23,24,25,28],x={trace:function(){},yy:{},symbols_:{error:2,start:3,SPACE:4,NL:5,SD:6,document:7,line:8,statement:9,idStatement:10,DESCR:11,"--\x3e":12,HIDE_EMPTY:13,scale:14,WIDTH:15,COMPOSIT_STATE:16,STRUCT_START:17,STRUCT_STOP:18,STATE_DESCR:19,AS:20,ID:21,FORK:22,JOIN:23,CONCURRENT:24,note:25,notePosition:26,NOTE_TEXT:27,EDGE_STATE:28,left_of:29,right_of:30,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NL",6:"SD",11:"DESCR",12:"--\x3e",13:"HIDE_EMPTY",14:"scale",15:"WIDTH",16:"COMPOSIT_STATE",17:"STRUCT_START",18:"STRUCT_STOP",19:"STATE_DESCR",20:"AS",21:"ID",22:"FORK",23:"JOIN",24:"CONCURRENT",25:"note",27:"NOTE_TEXT",28:"EDGE_STATE",29:"left_of",30:"right_of"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[9,1],[9,2],[9,3],[9,4],[9,1],[9,2],[9,1],[9,4],[9,3],[9,6],[9,1],[9,1],[9,1],[9,4],[9,4],[10,1],[10,1],[26,1],[26,1]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 3:return r.setRootDoc(a[s]),a[s];case 4:this.$=[];break;case 5:"nl"!=a[s]&&(a[s-1].push(a[s]),this.$=a[s-1]);break;case 6:case 7:this.$=a[s];break;case 8:this.$="nl";break;case 9:this.$={stmt:"state",id:a[s],type:"default",description:""};break;case 10:this.$={stmt:"state",id:a[s-1],type:"default",description:r.trimColon(a[s])};break;case 11:this.$={stmt:"relation",state1:{stmt:"state",id:a[s-2],type:"default",description:""},state2:{stmt:"state",id:a[s],type:"default",description:""}};break;case 12:this.$={stmt:"relation",state1:{stmt:"state",id:a[s-3],type:"default",description:""},state2:{stmt:"state",id:a[s-1],type:"default",description:""},description:a[s].substr(1).trim()};break;case 16:this.$={stmt:"state",id:a[s-3],type:"default",description:"",doc:a[s-1]};break;case 17:var u=a[s],c=a[s-2].trim();if(a[s].match(":")){var l=a[s].split(":");u=l[0],c=[c,l[1]]}this.$={stmt:"state",id:u,type:"default",description:c};break;case 18:this.$={stmt:"state",id:a[s-3],type:"default",description:a[s-5],doc:a[s-1]};break;case 19:this.$={stmt:"state",id:a[s],type:"fork"};break;case 20:this.$={stmt:"state",id:a[s],type:"join"};break;case 21:this.$={stmt:"state",id:r.getDividerId(),type:"divider"};break;case 22:this.$={stmt:"state",id:a[s-1].trim(),note:{position:a[s-2].trim(),text:a[s].trim()}};break;case 24:case 25:this.$=a[s]}},table:[{3:1,4:e,5:n,6:r},{1:[3]},{3:5,4:e,5:n,6:r},{3:6,4:e,5:n,6:r},t([1,4,5,13,14,16,19,21,22,23,24,25,28],i,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:a,5:o,8:8,9:10,10:12,13:s,14:u,16:c,19:l,21:f,22:h,23:d,24:p,25:y,28:g},t(m,[2,5]),{9:23,10:12,13:s,14:u,16:c,19:l,21:f,22:h,23:d,24:p,25:y,28:g},t(m,[2,7]),t(m,[2,8]),t(m,[2,9],{11:[1,24],12:[1,25]}),t(m,[2,13]),{15:[1,26]},t(m,[2,15],{17:[1,27]}),{20:[1,28]},t(m,[2,19]),t(m,[2,20]),t(m,[2,21]),{26:29,27:[1,30],29:[1,31],30:[1,32]},t(v,[2,24]),t(v,[2,25]),t(m,[2,6]),t(m,[2,10]),{10:33,21:f,28:g},t(m,[2,14]),t(b,i,{7:34}),{21:[1,35]},{21:[1,36]},{20:[1,37]},{21:[2,26]},{21:[2,27]},t(m,[2,11],{11:[1,38]}),{4:a,5:o,8:8,9:10,10:12,13:s,14:u,16:c,18:[1,39],19:l,21:f,22:h,23:d,24:p,25:y,28:g},t(m,[2,17],{17:[1,40]}),{27:[1,41]},{21:[1,42]},t(m,[2,12]),t(m,[2,16]),t(b,i,{7:43}),t(m,[2,22]),t(m,[2,23]),{4:a,5:o,8:8,9:10,10:12,13:s,14:u,16:c,18:[1,44],19:l,21:f,22:h,23:d,24:p,25:y,28:g},t(m,[2,18])],defaultActions:{5:[2,1],6:[2,2],31:[2,26],32:[2,27]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",u=0,c=0,l=0,f=2,h=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),y={yy:{}};for(var g in this.yy)Object.prototype.hasOwnProperty.call(this.yy,g)&&(y.yy[g]=this.yy[g]);p.setInput(t,y.yy),y.yy.lexer=p,y.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var m=p.yylloc;a.push(m);var v=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||h)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof y.yy.parseError?this.parseError=y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var x,_,w,k,E,A,T,S,M,O={};;){if(w=n[n.length-1],this.defaultActions[w]?k=this.defaultActions[w]:(null==x&&(x=b()),k=o[w]&&o[w][x]),void 0===k||!k.length||!k[0]){var N="";for(A in M=[],o[w])this.terminals_[A]&&A>f&&M.push("'"+this.terminals_[A]+"'");N=p.showPosition?"Parse error on line "+(u+1)+":\n"+p.showPosition()+"\nExpecting "+M.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(u+1)+": Unexpected "+(x==h?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(N,{text:p.match,token:this.terminals_[x]||x,line:p.yylineno,loc:m,expected:M})}if(k[0]instanceof Array&&k.length>1)throw new Error("Parse Error: multiple actions possible at state: "+w+", token: "+x);switch(k[0]){case 1:n.push(x),i.push(p.yytext),a.push(p.yylloc),n.push(k[1]),x=null,_?(x=_,_=null):(c=p.yyleng,s=p.yytext,u=p.yylineno,m=p.yylloc,l>0&&l--);break;case 2:if(T=this.productions_[k[1]][1],O.$=i[i.length-T],O._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},v&&(O._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(O,[s,c,u,y.yy,k[1],i,a].concat(d))))return E;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[k[1]][0]),i.push(O.$),a.push(O._$),S=o[n[n.length-2]][n[n.length-1]],n.push(S);break;case 3:return!0}}return!0}},_={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;a<i.length;a++)if((n=this._input.match(this.rules[i[a]]))&&(!e||n[0].length>e[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return 5;case 1:case 2:case 3:case 4:break;case 5:return this.pushState("SCALE"),14;case 6:return 15;case 7:this.popState();break;case 8:this.pushState("STATE");break;case 9:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),22;case 10:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),23;case 11:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),22;case 12:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),23;case 13:this.begin("STATE_STRING");break;case 14:return this.popState(),this.pushState("STATE_ID"),"AS";case 15:return this.popState(),"ID";case 16:this.popState();break;case 17:return"STATE_DESCR";case 18:return 16;case 19:this.popState();break;case 20:return this.popState(),this.pushState("struct"),17;case 21:return this.popState(),18;case 22:break;case 23:return this.begin("NOTE"),25;case 24:return this.popState(),this.pushState("NOTE_ID"),29;case 25:return this.popState(),this.pushState("NOTE_ID"),30;case 26:this.popState(),this.pushState("FLOATING_NOTE");break;case 27:return this.popState(),this.pushState("FLOATING_NOTE_ID"),"AS";case 28:break;case 29:return"NOTE_TEXT";case 30:return this.popState(),"ID";case 31:return this.popState(),this.pushState("NOTE_TEXT"),21;case 32:return this.popState(),e.yytext=e.yytext.substr(2).trim(),27;case 33:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),27;case 34:case 35:return 6;case 36:return 13;case 37:return 28;case 38:return 21;case 39:return e.yytext=e.yytext.trim(),11;case 40:return 12;case 41:return 24;case 42:return 5;case 43:return"INVALID"}},rules:[/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:state\s+)/i,/^(?:.*<<fork>>)/i,/^(?:.*<<join>>)/i,/^(?:.*\[\[fork\]\])/i,/^(?:.*\[\[join\]\])/i,/^(?:["])/i,/^(?:\s*as\s+)/i,/^(?:[^\n\{]*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n\s\{]+)/i,/^(?:\n)/i,/^(?:\{)/i,/^(?:\})/i,/^(?:[\n])/i,/^(?:note\s+)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:")/i,/^(?:\s*as\s*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n]*)/i,/^(?:\s*[^:\n\s\-]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:\s*[^:;]+end note\b)/i,/^(?:stateDiagram\s+)/i,/^(?:stateDiagram-v2\s+)/i,/^(?:hide empty description\b)/i,/^(?:\[\*\])/i,/^(?:[^:\n\s\-\{]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:-->)/i,/^(?:--)/i,/^(?:$)/i,/^(?:.)/i],conditions:{LINE:{rules:[2,3],inclusive:!1},struct:{rules:[2,3,8,21,22,23,37,38,39,40,41],inclusive:!1},FLOATING_NOTE_ID:{rules:[30],inclusive:!1},FLOATING_NOTE:{rules:[27,28,29],inclusive:!1},NOTE_TEXT:{rules:[32,33],inclusive:!1},NOTE_ID:{rules:[31],inclusive:!1},NOTE:{rules:[24,25,26],inclusive:!1},SCALE:{rules:[6,7],inclusive:!1},ALIAS:{rules:[],inclusive:!1},STATE_ID:{rules:[15],inclusive:!1},STATE_STRING:{rules:[16,17],inclusive:!1},FORK_STATE:{rules:[],inclusive:!1},STATE:{rules:[2,3,9,10,11,12,13,14,18,19,20],inclusive:!1},ID:{rules:[2,3],inclusive:!1},INITIAL:{rules:[0,1,3,4,5,8,20,23,34,35,36,37,38,39,40,42,43],inclusive:!0}}};function w(){this.yy={}}return x.lexer=_,w.prototype=x,x.Parser=w,new w}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(14).readFileSync(n(15).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(11),n(6)(t))},function(t,e,n){(function(t){t.exports=function(){"use strict";var e,r;function i(){return e.apply(null,arguments)}function a(t){return t instanceof Array||"[object Array]"===Object.prototype.toString.call(t)}function o(t){return null!=t&&"[object Object]"===Object.prototype.toString.call(t)}function s(t){return void 0===t}function u(t){return"number"==typeof t||"[object Number]"===Object.prototype.toString.call(t)}function c(t){return t instanceof Date||"[object Date]"===Object.prototype.toString.call(t)}function l(t,e){var n,r=[];for(n=0;n<t.length;++n)r.push(e(t[n],n));return r}function f(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function h(t,e){for(var n in e)f(e,n)&&(t[n]=e[n]);return f(e,"toString")&&(t.toString=e.toString),f(e,"valueOf")&&(t.valueOf=e.valueOf),t}function d(t,e,n,r){return be(t,e,n,r,!0).utc()}function p(t){return null==t._pf&&(t._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null,rfc2822:!1,weekdayMismatch:!1}),t._pf}function y(t){if(null==t._isValid){var e=p(t),n=r.call(e.parsedDateParts,(function(t){return null!=t})),i=!isNaN(t._d.getTime())&&e.overflow<0&&!e.empty&&!e.invalidMonth&&!e.invalidWeekday&&!e.weekdayMismatch&&!e.nullInput&&!e.invalidFormat&&!e.userInvalidated&&(!e.meridiem||e.meridiem&&n);if(t._strict&&(i=i&&0===e.charsLeftOver&&0===e.unusedTokens.length&&void 0===e.bigHour),null!=Object.isFrozen&&Object.isFrozen(t))return i;t._isValid=i}return t._isValid}function g(t){var e=d(NaN);return null!=t?h(p(e),t):p(e).userInvalidated=!0,e}r=Array.prototype.some?Array.prototype.some:function(t){for(var e=Object(this),n=e.length>>>0,r=0;r<n;r++)if(r in e&&t.call(this,e[r],r,e))return!0;return!1};var m=i.momentProperties=[];function v(t,e){var n,r,i;if(s(e._isAMomentObject)||(t._isAMomentObject=e._isAMomentObject),s(e._i)||(t._i=e._i),s(e._f)||(t._f=e._f),s(e._l)||(t._l=e._l),s(e._strict)||(t._strict=e._strict),s(e._tzm)||(t._tzm=e._tzm),s(e._isUTC)||(t._isUTC=e._isUTC),s(e._offset)||(t._offset=e._offset),s(e._pf)||(t._pf=p(e)),s(e._locale)||(t._locale=e._locale),0<m.length)for(n=0;n<m.length;n++)s(i=e[r=m[n]])||(t[r]=i);return t}var b=!1;function x(t){v(this,t),this._d=new Date(null!=t._d?t._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===b&&(b=!0,i.updateOffset(this),b=!1)}function _(t){return t instanceof x||null!=t&&null!=t._isAMomentObject}function w(t){return t<0?Math.ceil(t)||0:Math.floor(t)}function k(t){var e=+t,n=0;return 0!==e&&isFinite(e)&&(n=w(e)),n}function E(t,e,n){var r,i=Math.min(t.length,e.length),a=Math.abs(t.length-e.length),o=0;for(r=0;r<i;r++)(n&&t[r]!==e[r]||!n&&k(t[r])!==k(e[r]))&&o++;return o+a}function A(t){!1===i.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function T(t,e){var n=!0;return h((function(){if(null!=i.deprecationHandler&&i.deprecationHandler(null,t),n){for(var r,a=[],o=0;o<arguments.length;o++){if(r="","object"==typeof arguments[o]){for(var s in r+="\n["+o+"] ",arguments[0])r+=s+": "+arguments[0][s]+", ";r=r.slice(0,-2)}else r=arguments[o];a.push(r)}A(t+"\nArguments: "+Array.prototype.slice.call(a).join("")+"\n"+(new Error).stack),n=!1}return e.apply(this,arguments)}),e)}var S,M={};function O(t,e){null!=i.deprecationHandler&&i.deprecationHandler(t,e),M[t]||(A(e),M[t]=!0)}function N(t){return t instanceof Function||"[object Function]"===Object.prototype.toString.call(t)}function C(t,e){var n,r=h({},t);for(n in e)f(e,n)&&(o(t[n])&&o(e[n])?(r[n]={},h(r[n],t[n]),h(r[n],e[n])):null!=e[n]?r[n]=e[n]:delete r[n]);for(n in t)f(t,n)&&!f(e,n)&&o(t[n])&&(r[n]=h({},r[n]));return r}function D(t){null!=t&&this.set(t)}i.suppressDeprecationWarnings=!1,i.deprecationHandler=null,S=Object.keys?Object.keys:function(t){var e,n=[];for(e in t)f(t,e)&&n.push(e);return n};var L={};function F(t,e){var n=t.toLowerCase();L[n]=L[n+"s"]=L[e]=t}function I(t){return"string"==typeof t?L[t]||L[t.toLowerCase()]:void 0}function P(t){var e,n,r={};for(n in t)f(t,n)&&(e=I(n))&&(r[e]=t[n]);return r}var R={};function B(t,e){R[t]=e}function j(t,e,n){var r=""+Math.abs(t),i=e-r.length;return(0<=t?n?"+":"":"-")+Math.pow(10,Math.max(0,i)).toString().substr(1)+r}var Y=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,z=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,U={},$={};function G(t,e,n,r){var i=r;"string"==typeof r&&(i=function(){return this[r]()}),t&&($[t]=i),e&&($[e[0]]=function(){return j(i.apply(this,arguments),e[1],e[2])}),n&&($[n]=function(){return this.localeData().ordinal(i.apply(this,arguments),t)})}function V(t,e){return t.isValid()?(e=H(e,t.localeData()),U[e]=U[e]||function(t){var e,n,r,i=t.match(Y);for(e=0,n=i.length;e<n;e++)$[i[e]]?i[e]=$[i[e]]:i[e]=(r=i[e]).match(/\[[\s\S]/)?r.replace(/^\[|\]$/g,""):r.replace(/\\/g,"");return function(e){var r,a="";for(r=0;r<n;r++)a+=N(i[r])?i[r].call(e,t):i[r];return a}}(e),U[e](t)):t.localeData().invalidDate()}function H(t,e){var n=5;function r(t){return e.longDateFormat(t)||t}for(z.lastIndex=0;0<=n&&z.test(t);)t=t.replace(z,r),z.lastIndex=0,n-=1;return t}var W=/\d/,q=/\d\d/,X=/\d{3}/,Z=/\d{4}/,J=/[+-]?\d{6}/,Q=/\d\d?/,K=/\d\d\d\d?/,tt=/\d\d\d\d\d\d?/,et=/\d{1,3}/,nt=/\d{1,4}/,rt=/[+-]?\d{1,6}/,it=/\d+/,at=/[+-]?\d+/,ot=/Z|[+-]\d\d:?\d\d/gi,st=/Z|[+-]\d\d(?::?\d\d)?/gi,ut=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,ct={};function lt(t,e,n){ct[t]=N(e)?e:function(t,r){return t&&n?n:e}}function ft(t,e){return f(ct,t)?ct[t](e._strict,e._locale):new RegExp(ht(t.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,(function(t,e,n,r,i){return e||n||r||i}))))}function ht(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}var dt={};function pt(t,e){var n,r=e;for("string"==typeof t&&(t=[t]),u(e)&&(r=function(t,n){n[e]=k(t)}),n=0;n<t.length;n++)dt[t[n]]=r}function yt(t,e){pt(t,(function(t,n,r,i){r._w=r._w||{},e(t,r._w,r,i)}))}function gt(t){return mt(t)?366:365}function mt(t){return t%4==0&&t%100!=0||t%400==0}G("Y",0,0,(function(){var t=this.year();return t<=9999?""+t:"+"+t})),G(0,["YY",2],0,(function(){return this.year()%100})),G(0,["YYYY",4],0,"year"),G(0,["YYYYY",5],0,"year"),G(0,["YYYYYY",6,!0],0,"year"),F("year","y"),B("year",1),lt("Y",at),lt("YY",Q,q),lt("YYYY",nt,Z),lt("YYYYY",rt,J),lt("YYYYYY",rt,J),pt(["YYYYY","YYYYYY"],0),pt("YYYY",(function(t,e){e[0]=2===t.length?i.parseTwoDigitYear(t):k(t)})),pt("YY",(function(t,e){e[0]=i.parseTwoDigitYear(t)})),pt("Y",(function(t,e){e[0]=parseInt(t,10)})),i.parseTwoDigitYear=function(t){return k(t)+(68<k(t)?1900:2e3)};var vt,bt=xt("FullYear",!0);function xt(t,e){return function(n){return null!=n?(wt(this,t,n),i.updateOffset(this,e),this):_t(this,t)}}function _t(t,e){return t.isValid()?t._d["get"+(t._isUTC?"UTC":"")+e]():NaN}function wt(t,e,n){t.isValid()&&!isNaN(n)&&("FullYear"===e&&mt(t.year())&&1===t.month()&&29===t.date()?t._d["set"+(t._isUTC?"UTC":"")+e](n,t.month(),kt(n,t.month())):t._d["set"+(t._isUTC?"UTC":"")+e](n))}function kt(t,e){if(isNaN(t)||isNaN(e))return NaN;var n=(e%12+12)%12;return t+=(e-n)/12,1===n?mt(t)?29:28:31-n%7%2}vt=Array.prototype.indexOf?Array.prototype.indexOf:function(t){var e;for(e=0;e<this.length;++e)if(this[e]===t)return e;return-1},G("M",["MM",2],"Mo",(function(){return this.month()+1})),G("MMM",0,0,(function(t){return this.localeData().monthsShort(this,t)})),G("MMMM",0,0,(function(t){return this.localeData().months(this,t)})),F("month","M"),B("month",8),lt("M",Q),lt("MM",Q,q),lt("MMM",(function(t,e){return e.monthsShortRegex(t)})),lt("MMMM",(function(t,e){return e.monthsRegex(t)})),pt(["M","MM"],(function(t,e){e[1]=k(t)-1})),pt(["MMM","MMMM"],(function(t,e,n,r){var i=n._locale.monthsParse(t,r,n._strict);null!=i?e[1]=i:p(n).invalidMonth=t}));var Et=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,At="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),Tt="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_");function St(t,e){var n;if(!t.isValid())return t;if("string"==typeof e)if(/^\d+$/.test(e))e=k(e);else if(!u(e=t.localeData().monthsParse(e)))return t;return n=Math.min(t.date(),kt(t.year(),e)),t._d["set"+(t._isUTC?"UTC":"")+"Month"](e,n),t}function Mt(t){return null!=t?(St(this,t),i.updateOffset(this,!0),this):_t(this,"Month")}var Ot=ut,Nt=ut;function Ct(){function t(t,e){return e.length-t.length}var e,n,r=[],i=[],a=[];for(e=0;e<12;e++)n=d([2e3,e]),r.push(this.monthsShort(n,"")),i.push(this.months(n,"")),a.push(this.months(n,"")),a.push(this.monthsShort(n,""));for(r.sort(t),i.sort(t),a.sort(t),e=0;e<12;e++)r[e]=ht(r[e]),i[e]=ht(i[e]);for(e=0;e<24;e++)a[e]=ht(a[e]);this._monthsRegex=new RegExp("^("+a.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+i.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+r.join("|")+")","i")}function Dt(t){var e;if(t<100&&0<=t){var n=Array.prototype.slice.call(arguments);n[0]=t+400,e=new Date(Date.UTC.apply(null,n)),isFinite(e.getUTCFullYear())&&e.setUTCFullYear(t)}else e=new Date(Date.UTC.apply(null,arguments));return e}function Lt(t,e,n){var r=7+e-n;return-(7+Dt(t,0,r).getUTCDay()-e)%7+r-1}function Ft(t,e,n,r,i){var a,o,s=1+7*(e-1)+(7+n-r)%7+Lt(t,r,i);return o=s<=0?gt(a=t-1)+s:s>gt(t)?(a=t+1,s-gt(t)):(a=t,s),{year:a,dayOfYear:o}}function It(t,e,n){var r,i,a=Lt(t.year(),e,n),o=Math.floor((t.dayOfYear()-a-1)/7)+1;return o<1?r=o+Pt(i=t.year()-1,e,n):o>Pt(t.year(),e,n)?(r=o-Pt(t.year(),e,n),i=t.year()+1):(i=t.year(),r=o),{week:r,year:i}}function Pt(t,e,n){var r=Lt(t,e,n),i=Lt(t+1,e,n);return(gt(t)-r+i)/7}function Rt(t,e){return t.slice(e,7).concat(t.slice(0,e))}G("w",["ww",2],"wo","week"),G("W",["WW",2],"Wo","isoWeek"),F("week","w"),F("isoWeek","W"),B("week",5),B("isoWeek",5),lt("w",Q),lt("ww",Q,q),lt("W",Q),lt("WW",Q,q),yt(["w","ww","W","WW"],(function(t,e,n,r){e[r.substr(0,1)]=k(t)})),G("d",0,"do","day"),G("dd",0,0,(function(t){return this.localeData().weekdaysMin(this,t)})),G("ddd",0,0,(function(t){return this.localeData().weekdaysShort(this,t)})),G("dddd",0,0,(function(t){return this.localeData().weekdays(this,t)})),G("e",0,0,"weekday"),G("E",0,0,"isoWeekday"),F("day","d"),F("weekday","e"),F("isoWeekday","E"),B("day",11),B("weekday",11),B("isoWeekday",11),lt("d",Q),lt("e",Q),lt("E",Q),lt("dd",(function(t,e){return e.weekdaysMinRegex(t)})),lt("ddd",(function(t,e){return e.weekdaysShortRegex(t)})),lt("dddd",(function(t,e){return e.weekdaysRegex(t)})),yt(["dd","ddd","dddd"],(function(t,e,n,r){var i=n._locale.weekdaysParse(t,r,n._strict);null!=i?e.d=i:p(n).invalidWeekday=t})),yt(["d","e","E"],(function(t,e,n,r){e[r]=k(t)}));var Bt="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),jt="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Yt="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),zt=ut,Ut=ut,$t=ut;function Gt(){function t(t,e){return e.length-t.length}var e,n,r,i,a,o=[],s=[],u=[],c=[];for(e=0;e<7;e++)n=d([2e3,1]).day(e),r=this.weekdaysMin(n,""),i=this.weekdaysShort(n,""),a=this.weekdays(n,""),o.push(r),s.push(i),u.push(a),c.push(r),c.push(i),c.push(a);for(o.sort(t),s.sort(t),u.sort(t),c.sort(t),e=0;e<7;e++)s[e]=ht(s[e]),u[e]=ht(u[e]),c[e]=ht(c[e]);this._weekdaysRegex=new RegExp("^("+c.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+s.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+o.join("|")+")","i")}function Vt(){return this.hours()%12||12}function Ht(t,e){G(t,0,0,(function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)}))}function Wt(t,e){return e._meridiemParse}G("H",["HH",2],0,"hour"),G("h",["hh",2],0,Vt),G("k",["kk",2],0,(function(){return this.hours()||24})),G("hmm",0,0,(function(){return""+Vt.apply(this)+j(this.minutes(),2)})),G("hmmss",0,0,(function(){return""+Vt.apply(this)+j(this.minutes(),2)+j(this.seconds(),2)})),G("Hmm",0,0,(function(){return""+this.hours()+j(this.minutes(),2)})),G("Hmmss",0,0,(function(){return""+this.hours()+j(this.minutes(),2)+j(this.seconds(),2)})),Ht("a",!0),Ht("A",!1),F("hour","h"),B("hour",13),lt("a",Wt),lt("A",Wt),lt("H",Q),lt("h",Q),lt("k",Q),lt("HH",Q,q),lt("hh",Q,q),lt("kk",Q,q),lt("hmm",K),lt("hmmss",tt),lt("Hmm",K),lt("Hmmss",tt),pt(["H","HH"],3),pt(["k","kk"],(function(t,e,n){var r=k(t);e[3]=24===r?0:r})),pt(["a","A"],(function(t,e,n){n._isPm=n._locale.isPM(t),n._meridiem=t})),pt(["h","hh"],(function(t,e,n){e[3]=k(t),p(n).bigHour=!0})),pt("hmm",(function(t,e,n){var r=t.length-2;e[3]=k(t.substr(0,r)),e[4]=k(t.substr(r)),p(n).bigHour=!0})),pt("hmmss",(function(t,e,n){var r=t.length-4,i=t.length-2;e[3]=k(t.substr(0,r)),e[4]=k(t.substr(r,2)),e[5]=k(t.substr(i)),p(n).bigHour=!0})),pt("Hmm",(function(t,e,n){var r=t.length-2;e[3]=k(t.substr(0,r)),e[4]=k(t.substr(r))})),pt("Hmmss",(function(t,e,n){var r=t.length-4,i=t.length-2;e[3]=k(t.substr(0,r)),e[4]=k(t.substr(r,2)),e[5]=k(t.substr(i))}));var qt,Xt=xt("Hours",!0),Zt={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:At,monthsShort:Tt,week:{dow:0,doy:6},weekdays:Bt,weekdaysMin:Yt,weekdaysShort:jt,meridiemParse:/[ap]\.?m?\.?/i},Jt={},Qt={};function Kt(t){return t?t.toLowerCase().replace("_","-"):t}function te(e){var r=null;if(!Jt[e]&&void 0!==t&&t&&t.exports)try{r=qt._abbr,n(167)("./"+e),ee(r)}catch(e){}return Jt[e]}function ee(t,e){var n;return t&&((n=s(e)?re(t):ne(t,e))?qt=n:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+t+" not found. Did you forget to load it?")),qt._abbr}function ne(t,e){if(null===e)return delete Jt[t],null;var n,r=Zt;if(e.abbr=t,null!=Jt[t])O("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),r=Jt[t]._config;else if(null!=e.parentLocale)if(null!=Jt[e.parentLocale])r=Jt[e.parentLocale]._config;else{if(null==(n=te(e.parentLocale)))return Qt[e.parentLocale]||(Qt[e.parentLocale]=[]),Qt[e.parentLocale].push({name:t,config:e}),null;r=n._config}return Jt[t]=new D(C(r,e)),Qt[t]&&Qt[t].forEach((function(t){ne(t.name,t.config)})),ee(t),Jt[t]}function re(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return qt;if(!a(t)){if(e=te(t))return e;t=[t]}return function(t){for(var e,n,r,i,a=0;a<t.length;){for(e=(i=Kt(t[a]).split("-")).length,n=(n=Kt(t[a+1]))?n.split("-"):null;0<e;){if(r=te(i.slice(0,e).join("-")))return r;if(n&&n.length>=e&&E(i,n,!0)>=e-1)break;e--}a++}return qt}(t)}function ie(t){var e,n=t._a;return n&&-2===p(t).overflow&&(e=n[1]<0||11<n[1]?1:n[2]<1||n[2]>kt(n[0],n[1])?2:n[3]<0||24<n[3]||24===n[3]&&(0!==n[4]||0!==n[5]||0!==n[6])?3:n[4]<0||59<n[4]?4:n[5]<0||59<n[5]?5:n[6]<0||999<n[6]?6:-1,p(t)._overflowDayOfYear&&(e<0||2<e)&&(e=2),p(t)._overflowWeeks&&-1===e&&(e=7),p(t)._overflowWeekday&&-1===e&&(e=8),p(t).overflow=e),t}function ae(t,e,n){return null!=t?t:null!=e?e:n}function oe(t){var e,n,r,a,o,s=[];if(!t._d){var u,c;for(u=t,c=new Date(i.now()),r=u._useUTC?[c.getUTCFullYear(),c.getUTCMonth(),c.getUTCDate()]:[c.getFullYear(),c.getMonth(),c.getDate()],t._w&&null==t._a[2]&&null==t._a[1]&&function(t){var e,n,r,i,a,o,s,u;if(null!=(e=t._w).GG||null!=e.W||null!=e.E)a=1,o=4,n=ae(e.GG,t._a[0],It(xe(),1,4).year),r=ae(e.W,1),((i=ae(e.E,1))<1||7<i)&&(u=!0);else{a=t._locale._week.dow,o=t._locale._week.doy;var c=It(xe(),a,o);n=ae(e.gg,t._a[0],c.year),r=ae(e.w,c.week),null!=e.d?((i=e.d)<0||6<i)&&(u=!0):null!=e.e?(i=e.e+a,(e.e<0||6<e.e)&&(u=!0)):i=a}r<1||r>Pt(n,a,o)?p(t)._overflowWeeks=!0:null!=u?p(t)._overflowWeekday=!0:(s=Ft(n,r,i,a,o),t._a[0]=s.year,t._dayOfYear=s.dayOfYear)}(t),null!=t._dayOfYear&&(o=ae(t._a[0],r[0]),(t._dayOfYear>gt(o)||0===t._dayOfYear)&&(p(t)._overflowDayOfYear=!0),n=Dt(o,0,t._dayOfYear),t._a[1]=n.getUTCMonth(),t._a[2]=n.getUTCDate()),e=0;e<3&&null==t._a[e];++e)t._a[e]=s[e]=r[e];for(;e<7;e++)t._a[e]=s[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[3]&&0===t._a[4]&&0===t._a[5]&&0===t._a[6]&&(t._nextDay=!0,t._a[3]=0),t._d=(t._useUTC?Dt:function(t,e,n,r,i,a,o){var s;return t<100&&0<=t?(s=new Date(t+400,e,n,r,i,a,o),isFinite(s.getFullYear())&&s.setFullYear(t)):s=new Date(t,e,n,r,i,a,o),s}).apply(null,s),a=t._useUTC?t._d.getUTCDay():t._d.getDay(),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[3]=24),t._w&&void 0!==t._w.d&&t._w.d!==a&&(p(t).weekdayMismatch=!0)}}var se=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ue=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ce=/Z|[+-]\d\d(?::?\d\d)?/,le=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],fe=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],he=/^\/?Date\((\-?\d+)/i;function de(t){var e,n,r,i,a,o,s=t._i,u=se.exec(s)||ue.exec(s);if(u){for(p(t).iso=!0,e=0,n=le.length;e<n;e++)if(le[e][1].exec(u[1])){i=le[e][0],r=!1!==le[e][2];break}if(null==i)return void(t._isValid=!1);if(u[3]){for(e=0,n=fe.length;e<n;e++)if(fe[e][1].exec(u[3])){a=(u[2]||" ")+fe[e][0];break}if(null==a)return void(t._isValid=!1)}if(!r&&null!=a)return void(t._isValid=!1);if(u[4]){if(!ce.exec(u[4]))return void(t._isValid=!1);o="Z"}t._f=i+(a||"")+(o||""),me(t)}else t._isValid=!1}var pe=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,ye={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function ge(t){var e,n,r,i=pe.exec(t._i.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,""));if(i){var a=function(t,e,n,r,i,a){var o=[function(t){var e=parseInt(t,10);return e<=49?2e3+e:e<=999?1900+e:e}(t),Tt.indexOf(e),parseInt(n,10),parseInt(r,10),parseInt(i,10)];return a&&o.push(parseInt(a,10)),o}(i[4],i[3],i[2],i[5],i[6],i[7]);if(n=a,r=t,(e=i[1])&&jt.indexOf(e)!==new Date(n[0],n[1],n[2]).getDay()&&(p(r).weekdayMismatch=!0,!(r._isValid=!1)))return;t._a=a,t._tzm=function(t,e,n){if(t)return ye[t];if(e)return 0;var r=parseInt(n,10),i=r%100;return(r-i)/100*60+i}(i[8],i[9],i[10]),t._d=Dt.apply(null,t._a),t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),p(t).rfc2822=!0}else t._isValid=!1}function me(t){if(t._f!==i.ISO_8601)if(t._f!==i.RFC_2822){t._a=[],p(t).empty=!0;var e,n,r,a,o,s,u,c,l=""+t._i,h=l.length,d=0;for(r=H(t._f,t._locale).match(Y)||[],e=0;e<r.length;e++)a=r[e],(n=(l.match(ft(a,t))||[])[0])&&(0<(o=l.substr(0,l.indexOf(n))).length&&p(t).unusedInput.push(o),l=l.slice(l.indexOf(n)+n.length),d+=n.length),$[a]?(n?p(t).empty=!1:p(t).unusedTokens.push(a),s=a,c=t,null!=(u=n)&&f(dt,s)&&dt[s](u,c._a,c,s)):t._strict&&!n&&p(t).unusedTokens.push(a);p(t).charsLeftOver=h-d,0<l.length&&p(t).unusedInput.push(l),t._a[3]<=12&&!0===p(t).bigHour&&0<t._a[3]&&(p(t).bigHour=void 0),p(t).parsedDateParts=t._a.slice(0),p(t).meridiem=t._meridiem,t._a[3]=function(t,e,n){var r;return null==n?e:null!=t.meridiemHour?t.meridiemHour(e,n):(null!=t.isPM&&((r=t.isPM(n))&&e<12&&(e+=12),r||12!==e||(e=0)),e)}(t._locale,t._a[3],t._meridiem),oe(t),ie(t)}else ge(t);else de(t)}function ve(t){var e,n,r,f,d=t._i,m=t._f;return t._locale=t._locale||re(t._l),null===d||void 0===m&&""===d?g({nullInput:!0}):("string"==typeof d&&(t._i=d=t._locale.preparse(d)),_(d)?new x(ie(d)):(c(d)?t._d=d:a(m)?function(t){var e,n,r,i,a;if(0===t._f.length)return p(t).invalidFormat=!0,t._d=new Date(NaN);for(i=0;i<t._f.length;i++)a=0,e=v({},t),null!=t._useUTC&&(e._useUTC=t._useUTC),e._f=t._f[i],me(e),y(e)&&(a+=p(e).charsLeftOver,a+=10*p(e).unusedTokens.length,p(e).score=a,(null==r||a<r)&&(r=a,n=e));h(t,n||e)}(t):m?me(t):s(n=(e=t)._i)?e._d=new Date(i.now()):c(n)?e._d=new Date(n.valueOf()):"string"==typeof n?(r=e,null===(f=he.exec(r._i))?(de(r),!1===r._isValid&&(delete r._isValid,ge(r),!1===r._isValid&&(delete r._isValid,i.createFromInputFallback(r)))):r._d=new Date(+f[1])):a(n)?(e._a=l(n.slice(0),(function(t){return parseInt(t,10)})),oe(e)):o(n)?function(t){if(!t._d){var e=P(t._i);t._a=l([e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],(function(t){return t&&parseInt(t,10)})),oe(t)}}(e):u(n)?e._d=new Date(n):i.createFromInputFallback(e),y(t)||(t._d=null),t))}function be(t,e,n,r,i){var s,u={};return!0!==n&&!1!==n||(r=n,n=void 0),(o(t)&&function(t){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(t).length;var e;for(e in t)if(t.hasOwnProperty(e))return!1;return!0}(t)||a(t)&&0===t.length)&&(t=void 0),u._isAMomentObject=!0,u._useUTC=u._isUTC=i,u._l=n,u._i=t,u._f=e,u._strict=r,(s=new x(ie(ve(u))))._nextDay&&(s.add(1,"d"),s._nextDay=void 0),s}function xe(t,e,n,r){return be(t,e,n,r,!1)}i.createFromInputFallback=T("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",(function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))})),i.ISO_8601=function(){},i.RFC_2822=function(){};var _e=T("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",(function(){var t=xe.apply(null,arguments);return this.isValid()&&t.isValid()?t<this?this:t:g()})),we=T("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",(function(){var t=xe.apply(null,arguments);return this.isValid()&&t.isValid()?this<t?this:t:g()}));function ke(t,e){var n,r;if(1===e.length&&a(e[0])&&(e=e[0]),!e.length)return xe();for(n=e[0],r=1;r<e.length;++r)e[r].isValid()&&!e[r][t](n)||(n=e[r]);return n}var Ee=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Ae(t){var e=P(t),n=e.year||0,r=e.quarter||0,i=e.month||0,a=e.week||e.isoWeek||0,o=e.day||0,s=e.hour||0,u=e.minute||0,c=e.second||0,l=e.millisecond||0;this._isValid=function(t){for(var e in t)if(-1===vt.call(Ee,e)||null!=t[e]&&isNaN(t[e]))return!1;for(var n=!1,r=0;r<Ee.length;++r)if(t[Ee[r]]){if(n)return!1;parseFloat(t[Ee[r]])!==k(t[Ee[r]])&&(n=!0)}return!0}(e),this._milliseconds=+l+1e3*c+6e4*u+1e3*s*60*60,this._days=+o+7*a,this._months=+i+3*r+12*n,this._data={},this._locale=re(),this._bubble()}function Te(t){return t instanceof Ae}function Se(t){return t<0?-1*Math.round(-1*t):Math.round(t)}function Me(t,e){G(t,0,0,(function(){var t=this.utcOffset(),n="+";return t<0&&(t=-t,n="-"),n+j(~~(t/60),2)+e+j(~~t%60,2)}))}Me("Z",":"),Me("ZZ",""),lt("Z",st),lt("ZZ",st),pt(["Z","ZZ"],(function(t,e,n){n._useUTC=!0,n._tzm=Ne(st,t)}));var Oe=/([\+\-]|\d\d)/gi;function Ne(t,e){var n=(e||"").match(t);if(null===n)return null;var r=((n[n.length-1]||[])+"").match(Oe)||["-",0,0],i=60*r[1]+k(r[2]);return 0===i?0:"+"===r[0]?i:-i}function Ce(t,e){var n,r;return e._isUTC?(n=e.clone(),r=(_(t)||c(t)?t.valueOf():xe(t).valueOf())-n.valueOf(),n._d.setTime(n._d.valueOf()+r),i.updateOffset(n,!1),n):xe(t).local()}function De(t){return 15*-Math.round(t._d.getTimezoneOffset()/15)}function Le(){return!!this.isValid()&&this._isUTC&&0===this._offset}i.updateOffset=function(){};var Fe=/^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,Ie=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function Pe(t,e){var n,r,i,a=t,o=null;return Te(t)?a={ms:t._milliseconds,d:t._days,M:t._months}:u(t)?(a={},e?a[e]=t:a.milliseconds=t):(o=Fe.exec(t))?(n="-"===o[1]?-1:1,a={y:0,d:k(o[2])*n,h:k(o[3])*n,m:k(o[4])*n,s:k(o[5])*n,ms:k(Se(1e3*o[6]))*n}):(o=Ie.exec(t))?(n="-"===o[1]?-1:1,a={y:Re(o[2],n),M:Re(o[3],n),w:Re(o[4],n),d:Re(o[5],n),h:Re(o[6],n),m:Re(o[7],n),s:Re(o[8],n)}):null==a?a={}:"object"==typeof a&&("from"in a||"to"in a)&&(i=function(t,e){var n;return t.isValid()&&e.isValid()?(e=Ce(e,t),t.isBefore(e)?n=Be(t,e):((n=Be(e,t)).milliseconds=-n.milliseconds,n.months=-n.months),n):{milliseconds:0,months:0}}(xe(a.from),xe(a.to)),(a={}).ms=i.milliseconds,a.M=i.months),r=new Ae(a),Te(t)&&f(t,"_locale")&&(r._locale=t._locale),r}function Re(t,e){var n=t&&parseFloat(t.replace(",","."));return(isNaN(n)?0:n)*e}function Be(t,e){var n={};return n.months=e.month()-t.month()+12*(e.year()-t.year()),t.clone().add(n.months,"M").isAfter(e)&&--n.months,n.milliseconds=+e-+t.clone().add(n.months,"M"),n}function je(t,e){return function(n,r){var i;return null===r||isNaN(+r)||(O(e,"moment()."+e+"(period, number) is deprecated. Please use moment()."+e+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),i=n,n=r,r=i),Ye(this,Pe(n="string"==typeof n?+n:n,r),t),this}}function Ye(t,e,n,r){var a=e._milliseconds,o=Se(e._days),s=Se(e._months);t.isValid()&&(r=null==r||r,s&&St(t,_t(t,"Month")+s*n),o&&wt(t,"Date",_t(t,"Date")+o*n),a&&t._d.setTime(t._d.valueOf()+a*n),r&&i.updateOffset(t,o||s))}Pe.fn=Ae.prototype,Pe.invalid=function(){return Pe(NaN)};var ze=je(1,"add"),Ue=je(-1,"subtract");function $e(t,e){var n=12*(e.year()-t.year())+(e.month()-t.month()),r=t.clone().add(n,"months");return-(n+(e-r<0?(e-r)/(r-t.clone().add(n-1,"months")):(e-r)/(t.clone().add(n+1,"months")-r)))||0}function Ge(t){var e;return void 0===t?this._locale._abbr:(null!=(e=re(t))&&(this._locale=e),this)}i.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",i.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var Ve=T("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",(function(t){return void 0===t?this.localeData():this.locale(t)}));function He(){return this._locale}var We=126227808e5;function qe(t,e){return(t%e+e)%e}function Xe(t,e,n){return t<100&&0<=t?new Date(t+400,e,n)-We:new Date(t,e,n).valueOf()}function Ze(t,e,n){return t<100&&0<=t?Date.UTC(t+400,e,n)-We:Date.UTC(t,e,n)}function Je(t,e){G(0,[t,t.length],0,e)}function Qe(t,e,n,r,i){var a;return null==t?It(this,r,i).year:((a=Pt(t,r,i))<e&&(e=a),function(t,e,n,r,i){var a=Ft(t,e,n,r,i),o=Dt(a.year,0,a.dayOfYear);return this.year(o.getUTCFullYear()),this.month(o.getUTCMonth()),this.date(o.getUTCDate()),this}.call(this,t,e,n,r,i))}G(0,["gg",2],0,(function(){return this.weekYear()%100})),G(0,["GG",2],0,(function(){return this.isoWeekYear()%100})),Je("gggg","weekYear"),Je("ggggg","weekYear"),Je("GGGG","isoWeekYear"),Je("GGGGG","isoWeekYear"),F("weekYear","gg"),F("isoWeekYear","GG"),B("weekYear",1),B("isoWeekYear",1),lt("G",at),lt("g",at),lt("GG",Q,q),lt("gg",Q,q),lt("GGGG",nt,Z),lt("gggg",nt,Z),lt("GGGGG",rt,J),lt("ggggg",rt,J),yt(["gggg","ggggg","GGGG","GGGGG"],(function(t,e,n,r){e[r.substr(0,2)]=k(t)})),yt(["gg","GG"],(function(t,e,n,r){e[r]=i.parseTwoDigitYear(t)})),G("Q",0,"Qo","quarter"),F("quarter","Q"),B("quarter",7),lt("Q",W),pt("Q",(function(t,e){e[1]=3*(k(t)-1)})),G("D",["DD",2],"Do","date"),F("date","D"),B("date",9),lt("D",Q),lt("DD",Q,q),lt("Do",(function(t,e){return t?e._dayOfMonthOrdinalParse||e._ordinalParse:e._dayOfMonthOrdinalParseLenient})),pt(["D","DD"],2),pt("Do",(function(t,e){e[2]=k(t.match(Q)[0])}));var Ke=xt("Date",!0);G("DDD",["DDDD",3],"DDDo","dayOfYear"),F("dayOfYear","DDD"),B("dayOfYear",4),lt("DDD",et),lt("DDDD",X),pt(["DDD","DDDD"],(function(t,e,n){n._dayOfYear=k(t)})),G("m",["mm",2],0,"minute"),F("minute","m"),B("minute",14),lt("m",Q),lt("mm",Q,q),pt(["m","mm"],4);var tn=xt("Minutes",!1);G("s",["ss",2],0,"second"),F("second","s"),B("second",15),lt("s",Q),lt("ss",Q,q),pt(["s","ss"],5);var en,nn=xt("Seconds",!1);for(G("S",0,0,(function(){return~~(this.millisecond()/100)})),G(0,["SS",2],0,(function(){return~~(this.millisecond()/10)})),G(0,["SSS",3],0,"millisecond"),G(0,["SSSS",4],0,(function(){return 10*this.millisecond()})),G(0,["SSSSS",5],0,(function(){return 100*this.millisecond()})),G(0,["SSSSSS",6],0,(function(){return 1e3*this.millisecond()})),G(0,["SSSSSSS",7],0,(function(){return 1e4*this.millisecond()})),G(0,["SSSSSSSS",8],0,(function(){return 1e5*this.millisecond()})),G(0,["SSSSSSSSS",9],0,(function(){return 1e6*this.millisecond()})),F("millisecond","ms"),B("millisecond",16),lt("S",et,W),lt("SS",et,q),lt("SSS",et,X),en="SSSS";en.length<=9;en+="S")lt(en,it);function rn(t,e){e[6]=k(1e3*("0."+t))}for(en="S";en.length<=9;en+="S")pt(en,rn);var an=xt("Milliseconds",!1);G("z",0,0,"zoneAbbr"),G("zz",0,0,"zoneName");var on=x.prototype;function sn(t){return t}on.add=ze,on.calendar=function(t,e){var n=t||xe(),r=Ce(n,this).startOf("day"),a=i.calendarFormat(this,r)||"sameElse",o=e&&(N(e[a])?e[a].call(this,n):e[a]);return this.format(o||this.localeData().calendar(a,this,xe(n)))},on.clone=function(){return new x(this)},on.diff=function(t,e,n){var r,i,a;if(!this.isValid())return NaN;if(!(r=Ce(t,this)).isValid())return NaN;switch(i=6e4*(r.utcOffset()-this.utcOffset()),e=I(e)){case"year":a=$e(this,r)/12;break;case"month":a=$e(this,r);break;case"quarter":a=$e(this,r)/3;break;case"second":a=(this-r)/1e3;break;case"minute":a=(this-r)/6e4;break;case"hour":a=(this-r)/36e5;break;case"day":a=(this-r-i)/864e5;break;case"week":a=(this-r-i)/6048e5;break;default:a=this-r}return n?a:w(a)},on.endOf=function(t){var e;if(void 0===(t=I(t))||"millisecond"===t||!this.isValid())return this;var n=this._isUTC?Ze:Xe;switch(t){case"year":e=n(this.year()+1,0,1)-1;break;case"quarter":e=n(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":e=n(this.year(),this.month()+1,1)-1;break;case"week":e=n(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":e=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":e=n(this.year(),this.month(),this.date()+1)-1;break;case"hour":e=this._d.valueOf(),e+=36e5-qe(e+(this._isUTC?0:6e4*this.utcOffset()),36e5)-1;break;case"minute":e=this._d.valueOf(),e+=6e4-qe(e,6e4)-1;break;case"second":e=this._d.valueOf(),e+=1e3-qe(e,1e3)-1}return this._d.setTime(e),i.updateOffset(this,!0),this},on.format=function(t){t||(t=this.isUtc()?i.defaultFormatUtc:i.defaultFormat);var e=V(this,t);return this.localeData().postformat(e)},on.from=function(t,e){return this.isValid()&&(_(t)&&t.isValid()||xe(t).isValid())?Pe({to:this,from:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()},on.fromNow=function(t){return this.from(xe(),t)},on.to=function(t,e){return this.isValid()&&(_(t)&&t.isValid()||xe(t).isValid())?Pe({from:this,to:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()},on.toNow=function(t){return this.to(xe(),t)},on.get=function(t){return N(this[t=I(t)])?this[t]():this},on.invalidAt=function(){return p(this).overflow},on.isAfter=function(t,e){var n=_(t)?t:xe(t);return!(!this.isValid()||!n.isValid())&&("millisecond"===(e=I(e)||"millisecond")?this.valueOf()>n.valueOf():n.valueOf()<this.clone().startOf(e).valueOf())},on.isBefore=function(t,e){var n=_(t)?t:xe(t);return!(!this.isValid()||!n.isValid())&&("millisecond"===(e=I(e)||"millisecond")?this.valueOf()<n.valueOf():this.clone().endOf(e).valueOf()<n.valueOf())},on.isBetween=function(t,e,n,r){var i=_(t)?t:xe(t),a=_(e)?e:xe(e);return!!(this.isValid()&&i.isValid()&&a.isValid())&&("("===(r=r||"()")[0]?this.isAfter(i,n):!this.isBefore(i,n))&&(")"===r[1]?this.isBefore(a,n):!this.isAfter(a,n))},on.isSame=function(t,e){var n,r=_(t)?t:xe(t);return!(!this.isValid()||!r.isValid())&&("millisecond"===(e=I(e)||"millisecond")?this.valueOf()===r.valueOf():(n=r.valueOf(),this.clone().startOf(e).valueOf()<=n&&n<=this.clone().endOf(e).valueOf()))},on.isSameOrAfter=function(t,e){return this.isSame(t,e)||this.isAfter(t,e)},on.isSameOrBefore=function(t,e){return this.isSame(t,e)||this.isBefore(t,e)},on.isValid=function(){return y(this)},on.lang=Ve,on.locale=Ge,on.localeData=He,on.max=we,on.min=_e,on.parsingFlags=function(){return h({},p(this))},on.set=function(t,e){if("object"==typeof t)for(var n=function(t){var e=[];for(var n in t)e.push({unit:n,priority:R[n]});return e.sort((function(t,e){return t.priority-e.priority})),e}(t=P(t)),r=0;r<n.length;r++)this[n[r].unit](t[n[r].unit]);else if(N(this[t=I(t)]))return this[t](e);return this},on.startOf=function(t){var e;if(void 0===(t=I(t))||"millisecond"===t||!this.isValid())return this;var n=this._isUTC?Ze:Xe;switch(t){case"year":e=n(this.year(),0,1);break;case"quarter":e=n(this.year(),this.month()-this.month()%3,1);break;case"month":e=n(this.year(),this.month(),1);break;case"week":e=n(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":e=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":e=n(this.year(),this.month(),this.date());break;case"hour":e=this._d.valueOf(),e-=qe(e+(this._isUTC?0:6e4*this.utcOffset()),36e5);break;case"minute":e=this._d.valueOf(),e-=qe(e,6e4);break;case"second":e=this._d.valueOf(),e-=qe(e,1e3)}return this._d.setTime(e),i.updateOffset(this,!0),this},on.subtract=Ue,on.toArray=function(){var t=this;return[t.year(),t.month(),t.date(),t.hour(),t.minute(),t.second(),t.millisecond()]},on.toObject=function(){var t=this;return{years:t.year(),months:t.month(),date:t.date(),hours:t.hours(),minutes:t.minutes(),seconds:t.seconds(),milliseconds:t.milliseconds()}},on.toDate=function(){return new Date(this.valueOf())},on.toISOString=function(t){if(!this.isValid())return null;var e=!0!==t,n=e?this.clone().utc():this;return n.year()<0||9999<n.year()?V(n,e?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):N(Date.prototype.toISOString)?e?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",V(n,"Z")):V(n,e?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},on.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var t="moment",e="";this.isLocal()||(t=0===this.utcOffset()?"moment.utc":"moment.parseZone",e="Z");var n="["+t+'("]',r=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",i=e+'[")]';return this.format(n+r+"-MM-DD[T]HH:mm:ss.SSS"+i)},on.toJSON=function(){return this.isValid()?this.toISOString():null},on.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},on.unix=function(){return Math.floor(this.valueOf()/1e3)},on.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},on.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},on.year=bt,on.isLeapYear=function(){return mt(this.year())},on.weekYear=function(t){return Qe.call(this,t,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},on.isoWeekYear=function(t){return Qe.call(this,t,this.isoWeek(),this.isoWeekday(),1,4)},on.quarter=on.quarters=function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},on.month=Mt,on.daysInMonth=function(){return kt(this.year(),this.month())},on.week=on.weeks=function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},on.isoWeek=on.isoWeeks=function(t){var e=It(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},on.weeksInYear=function(){var t=this.localeData()._week;return Pt(this.year(),t.dow,t.doy)},on.isoWeeksInYear=function(){return Pt(this.year(),1,4)},on.date=Ke,on.day=on.days=function(t){if(!this.isValid())return null!=t?this:NaN;var e,n,r=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(e=t,n=this.localeData(),t="string"!=typeof e?e:isNaN(e)?"number"==typeof(e=n.weekdaysParse(e))?e:null:parseInt(e,10),this.add(t-r,"d")):r},on.weekday=function(t){if(!this.isValid())return null!=t?this:NaN;var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")},on.isoWeekday=function(t){if(!this.isValid())return null!=t?this:NaN;if(null==t)return this.day()||7;var e,n,r=(e=t,n=this.localeData(),"string"==typeof e?n.weekdaysParse(e)%7||7:isNaN(e)?null:e);return this.day(this.day()%7?r:r-7)},on.dayOfYear=function(t){var e=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")},on.hour=on.hours=Xt,on.minute=on.minutes=tn,on.second=on.seconds=nn,on.millisecond=on.milliseconds=an,on.utcOffset=function(t,e,n){var r,a=this._offset||0;if(!this.isValid())return null!=t?this:NaN;if(null==t)return this._isUTC?a:De(this);if("string"==typeof t){if(null===(t=Ne(st,t)))return this}else Math.abs(t)<16&&!n&&(t*=60);return!this._isUTC&&e&&(r=De(this)),this._offset=t,this._isUTC=!0,null!=r&&this.add(r,"m"),a!==t&&(!e||this._changeInProgress?Ye(this,Pe(t-a,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,i.updateOffset(this,!0),this._changeInProgress=null)),this},on.utc=function(t){return this.utcOffset(0,t)},on.local=function(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(De(this),"m")),this},on.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var t=Ne(ot,this._i);null!=t?this.utcOffset(t):this.utcOffset(0,!0)}return this},on.hasAlignedHourOffset=function(t){return!!this.isValid()&&(t=t?xe(t).utcOffset():0,(this.utcOffset()-t)%60==0)},on.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},on.isLocal=function(){return!!this.isValid()&&!this._isUTC},on.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},on.isUtc=Le,on.isUTC=Le,on.zoneAbbr=function(){return this._isUTC?"UTC":""},on.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},on.dates=T("dates accessor is deprecated. Use date instead.",Ke),on.months=T("months accessor is deprecated. Use month instead",Mt),on.years=T("years accessor is deprecated. Use year instead",bt),on.zone=T("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",(function(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()})),on.isDSTShifted=T("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",(function(){if(!s(this._isDSTShifted))return this._isDSTShifted;var t={};if(v(t,this),(t=ve(t))._a){var e=t._isUTC?d(t._a):xe(t._a);this._isDSTShifted=this.isValid()&&0<E(t._a,e.toArray())}else this._isDSTShifted=!1;return this._isDSTShifted}));var un=D.prototype;function cn(t,e,n,r){var i=re(),a=d().set(r,e);return i[n](a,t)}function ln(t,e,n){if(u(t)&&(e=t,t=void 0),t=t||"",null!=e)return cn(t,e,n,"month");var r,i=[];for(r=0;r<12;r++)i[r]=cn(t,r,n,"month");return i}function fn(t,e,n,r){"boolean"==typeof t?u(e)&&(n=e,e=void 0):(e=t,t=!1,u(n=e)&&(n=e,e=void 0)),e=e||"";var i,a=re(),o=t?a._week.dow:0;if(null!=n)return cn(e,(n+o)%7,r,"day");var s=[];for(i=0;i<7;i++)s[i]=cn(e,(i+o)%7,r,"day");return s}un.calendar=function(t,e,n){var r=this._calendar[t]||this._calendar.sameElse;return N(r)?r.call(e,n):r},un.longDateFormat=function(t){var e=this._longDateFormat[t],n=this._longDateFormat[t.toUpperCase()];return e||!n?e:(this._longDateFormat[t]=n.replace(/MMMM|MM|DD|dddd/g,(function(t){return t.slice(1)})),this._longDateFormat[t])},un.invalidDate=function(){return this._invalidDate},un.ordinal=function(t){return this._ordinal.replace("%d",t)},un.preparse=sn,un.postformat=sn,un.relativeTime=function(t,e,n,r){var i=this._relativeTime[n];return N(i)?i(t,e,n,r):i.replace(/%d/i,t)},un.pastFuture=function(t,e){var n=this._relativeTime[0<t?"future":"past"];return N(n)?n(e):n.replace(/%s/i,e)},un.set=function(t){var e,n;for(n in t)N(e=t[n])?this[n]=e:this["_"+n]=e;this._config=t,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},un.months=function(t,e){return t?a(this._months)?this._months[t.month()]:this._months[(this._months.isFormat||Et).test(e)?"format":"standalone"][t.month()]:a(this._months)?this._months:this._months.standalone},un.monthsShort=function(t,e){return t?a(this._monthsShort)?this._monthsShort[t.month()]:this._monthsShort[Et.test(e)?"format":"standalone"][t.month()]:a(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},un.monthsParse=function(t,e,n){var r,i,a;if(this._monthsParseExact)return function(t,e,n){var r,i,a,o=t.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],r=0;r<12;++r)a=d([2e3,r]),this._shortMonthsParse[r]=this.monthsShort(a,"").toLocaleLowerCase(),this._longMonthsParse[r]=this.months(a,"").toLocaleLowerCase();return n?"MMM"===e?-1!==(i=vt.call(this._shortMonthsParse,o))?i:null:-1!==(i=vt.call(this._longMonthsParse,o))?i:null:"MMM"===e?-1!==(i=vt.call(this._shortMonthsParse,o))?i:-1!==(i=vt.call(this._longMonthsParse,o))?i:null:-1!==(i=vt.call(this._longMonthsParse,o))?i:-1!==(i=vt.call(this._shortMonthsParse,o))?i:null}.call(this,t,e,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),r=0;r<12;r++){if(i=d([2e3,r]),n&&!this._longMonthsParse[r]&&(this._longMonthsParse[r]=new RegExp("^"+this.months(i,"").replace(".","")+"$","i"),this._shortMonthsParse[r]=new RegExp("^"+this.monthsShort(i,"").replace(".","")+"$","i")),n||this._monthsParse[r]||(a="^"+this.months(i,"")+"|^"+this.monthsShort(i,""),this._monthsParse[r]=new RegExp(a.replace(".",""),"i")),n&&"MMMM"===e&&this._longMonthsParse[r].test(t))return r;if(n&&"MMM"===e&&this._shortMonthsParse[r].test(t))return r;if(!n&&this._monthsParse[r].test(t))return r}},un.monthsRegex=function(t){return this._monthsParseExact?(f(this,"_monthsRegex")||Ct.call(this),t?this._monthsStrictRegex:this._monthsRegex):(f(this,"_monthsRegex")||(this._monthsRegex=Nt),this._monthsStrictRegex&&t?this._monthsStrictRegex:this._monthsRegex)},un.monthsShortRegex=function(t){return this._monthsParseExact?(f(this,"_monthsRegex")||Ct.call(this),t?this._monthsShortStrictRegex:this._monthsShortRegex):(f(this,"_monthsShortRegex")||(this._monthsShortRegex=Ot),this._monthsShortStrictRegex&&t?this._monthsShortStrictRegex:this._monthsShortRegex)},un.week=function(t){return It(t,this._week.dow,this._week.doy).week},un.firstDayOfYear=function(){return this._week.doy},un.firstDayOfWeek=function(){return this._week.dow},un.weekdays=function(t,e){var n=a(this._weekdays)?this._weekdays:this._weekdays[t&&!0!==t&&this._weekdays.isFormat.test(e)?"format":"standalone"];return!0===t?Rt(n,this._week.dow):t?n[t.day()]:n},un.weekdaysMin=function(t){return!0===t?Rt(this._weekdaysMin,this._week.dow):t?this._weekdaysMin[t.day()]:this._weekdaysMin},un.weekdaysShort=function(t){return!0===t?Rt(this._weekdaysShort,this._week.dow):t?this._weekdaysShort[t.day()]:this._weekdaysShort},un.weekdaysParse=function(t,e,n){var r,i,a;if(this._weekdaysParseExact)return function(t,e,n){var r,i,a,o=t.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],r=0;r<7;++r)a=d([2e3,1]).day(r),this._minWeekdaysParse[r]=this.weekdaysMin(a,"").toLocaleLowerCase(),this._shortWeekdaysParse[r]=this.weekdaysShort(a,"").toLocaleLowerCase(),this._weekdaysParse[r]=this.weekdays(a,"").toLocaleLowerCase();return n?"dddd"===e?-1!==(i=vt.call(this._weekdaysParse,o))?i:null:"ddd"===e?-1!==(i=vt.call(this._shortWeekdaysParse,o))?i:null:-1!==(i=vt.call(this._minWeekdaysParse,o))?i:null:"dddd"===e?-1!==(i=vt.call(this._weekdaysParse,o))?i:-1!==(i=vt.call(this._shortWeekdaysParse,o))?i:-1!==(i=vt.call(this._minWeekdaysParse,o))?i:null:"ddd"===e?-1!==(i=vt.call(this._shortWeekdaysParse,o))?i:-1!==(i=vt.call(this._weekdaysParse,o))?i:-1!==(i=vt.call(this._minWeekdaysParse,o))?i:null:-1!==(i=vt.call(this._minWeekdaysParse,o))?i:-1!==(i=vt.call(this._weekdaysParse,o))?i:-1!==(i=vt.call(this._shortWeekdaysParse,o))?i:null}.call(this,t,e,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),r=0;r<7;r++){if(i=d([2e3,1]).day(r),n&&!this._fullWeekdaysParse[r]&&(this._fullWeekdaysParse[r]=new RegExp("^"+this.weekdays(i,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[r]=new RegExp("^"+this.weekdaysShort(i,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[r]=new RegExp("^"+this.weekdaysMin(i,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[r]||(a="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[r]=new RegExp(a.replace(".",""),"i")),n&&"dddd"===e&&this._fullWeekdaysParse[r].test(t))return r;if(n&&"ddd"===e&&this._shortWeekdaysParse[r].test(t))return r;if(n&&"dd"===e&&this._minWeekdaysParse[r].test(t))return r;if(!n&&this._weekdaysParse[r].test(t))return r}},un.weekdaysRegex=function(t){return this._weekdaysParseExact?(f(this,"_weekdaysRegex")||Gt.call(this),t?this._weekdaysStrictRegex:this._weekdaysRegex):(f(this,"_weekdaysRegex")||(this._weekdaysRegex=zt),this._weekdaysStrictRegex&&t?this._weekdaysStrictRegex:this._weekdaysRegex)},un.weekdaysShortRegex=function(t){return this._weekdaysParseExact?(f(this,"_weekdaysRegex")||Gt.call(this),t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(f(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Ut),this._weekdaysShortStrictRegex&&t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},un.weekdaysMinRegex=function(t){return this._weekdaysParseExact?(f(this,"_weekdaysRegex")||Gt.call(this),t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(f(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=$t),this._weekdaysMinStrictRegex&&t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},un.isPM=function(t){return"p"===(t+"").toLowerCase().charAt(0)},un.meridiem=function(t,e,n){return 11<t?n?"pm":"PM":n?"am":"AM"},ee("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10;return t+(1===k(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")}}),i.lang=T("moment.lang is deprecated. Use moment.locale instead.",ee),i.langData=T("moment.langData is deprecated. Use moment.localeData instead.",re);var hn=Math.abs;function dn(t,e,n,r){var i=Pe(e,n);return t._milliseconds+=r*i._milliseconds,t._days+=r*i._days,t._months+=r*i._months,t._bubble()}function pn(t){return t<0?Math.floor(t):Math.ceil(t)}function yn(t){return 4800*t/146097}function gn(t){return 146097*t/4800}function mn(t){return function(){return this.as(t)}}var vn=mn("ms"),bn=mn("s"),xn=mn("m"),_n=mn("h"),wn=mn("d"),kn=mn("w"),En=mn("M"),An=mn("Q"),Tn=mn("y");function Sn(t){return function(){return this.isValid()?this._data[t]:NaN}}var Mn=Sn("milliseconds"),On=Sn("seconds"),Nn=Sn("minutes"),Cn=Sn("hours"),Dn=Sn("days"),Ln=Sn("months"),Fn=Sn("years"),In=Math.round,Pn={ss:44,s:45,m:45,h:22,d:26,M:11},Rn=Math.abs;function Bn(t){return(0<t)-(t<0)||+t}function jn(){if(!this.isValid())return this.localeData().invalidDate();var t,e,n=Rn(this._milliseconds)/1e3,r=Rn(this._days),i=Rn(this._months);e=w((t=w(n/60))/60),n%=60,t%=60;var a=w(i/12),o=i%=12,s=r,u=e,c=t,l=n?n.toFixed(3).replace(/\.?0+$/,""):"",f=this.asSeconds();if(!f)return"P0D";var h=f<0?"-":"",d=Bn(this._months)!==Bn(f)?"-":"",p=Bn(this._days)!==Bn(f)?"-":"",y=Bn(this._milliseconds)!==Bn(f)?"-":"";return h+"P"+(a?d+a+"Y":"")+(o?d+o+"M":"")+(s?p+s+"D":"")+(u||c||l?"T":"")+(u?y+u+"H":"")+(c?y+c+"M":"")+(l?y+l+"S":"")}var Yn=Ae.prototype;return Yn.isValid=function(){return this._isValid},Yn.abs=function(){var t=this._data;return this._milliseconds=hn(this._milliseconds),this._days=hn(this._days),this._months=hn(this._months),t.milliseconds=hn(t.milliseconds),t.seconds=hn(t.seconds),t.minutes=hn(t.minutes),t.hours=hn(t.hours),t.months=hn(t.months),t.years=hn(t.years),this},Yn.add=function(t,e){return dn(this,t,e,1)},Yn.subtract=function(t,e){return dn(this,t,e,-1)},Yn.as=function(t){if(!this.isValid())return NaN;var e,n,r=this._milliseconds;if("month"===(t=I(t))||"quarter"===t||"year"===t)switch(e=this._days+r/864e5,n=this._months+yn(e),t){case"month":return n;case"quarter":return n/3;case"year":return n/12}else switch(e=this._days+Math.round(gn(this._months)),t){case"week":return e/7+r/6048e5;case"day":return e+r/864e5;case"hour":return 24*e+r/36e5;case"minute":return 1440*e+r/6e4;case"second":return 86400*e+r/1e3;case"millisecond":return Math.floor(864e5*e)+r;default:throw new Error("Unknown unit "+t)}},Yn.asMilliseconds=vn,Yn.asSeconds=bn,Yn.asMinutes=xn,Yn.asHours=_n,Yn.asDays=wn,Yn.asWeeks=kn,Yn.asMonths=En,Yn.asQuarters=An,Yn.asYears=Tn,Yn.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*k(this._months/12):NaN},Yn._bubble=function(){var t,e,n,r,i,a=this._milliseconds,o=this._days,s=this._months,u=this._data;return 0<=a&&0<=o&&0<=s||a<=0&&o<=0&&s<=0||(a+=864e5*pn(gn(s)+o),s=o=0),u.milliseconds=a%1e3,t=w(a/1e3),u.seconds=t%60,e=w(t/60),u.minutes=e%60,n=w(e/60),u.hours=n%24,s+=i=w(yn(o+=w(n/24))),o-=pn(gn(i)),r=w(s/12),s%=12,u.days=o,u.months=s,u.years=r,this},Yn.clone=function(){return Pe(this)},Yn.get=function(t){return t=I(t),this.isValid()?this[t+"s"]():NaN},Yn.milliseconds=Mn,Yn.seconds=On,Yn.minutes=Nn,Yn.hours=Cn,Yn.days=Dn,Yn.weeks=function(){return w(this.days()/7)},Yn.months=Ln,Yn.years=Fn,Yn.humanize=function(t){if(!this.isValid())return this.localeData().invalidDate();var e,n,r,i,a,o,s,u,c,l,f=this.localeData(),h=(e=!t,n=f,r=Pe(this).abs(),i=In(r.as("s")),a=In(r.as("m")),o=In(r.as("h")),s=In(r.as("d")),u=In(r.as("M")),c=In(r.as("y")),(l=i<=Pn.ss&&["s",i]||i<Pn.s&&["ss",i]||a<=1&&["m"]||a<Pn.m&&["mm",a]||o<=1&&["h"]||o<Pn.h&&["hh",o]||s<=1&&["d"]||s<Pn.d&&["dd",s]||u<=1&&["M"]||u<Pn.M&&["MM",u]||c<=1&&["y"]||["yy",c])[2]=e,l[3]=0<+this,l[4]=n,function(t,e,n,r,i){return i.relativeTime(e||1,!!n,t,r)}.apply(null,l));return t&&(h=f.pastFuture(+this,h)),f.postformat(h)},Yn.toISOString=jn,Yn.toString=jn,Yn.toJSON=jn,Yn.locale=Ge,Yn.localeData=He,Yn.toIsoString=T("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",jn),Yn.lang=Ve,G("X",0,0,"unix"),G("x",0,0,"valueOf"),lt("x",at),lt("X",/[+-]?\d+(\.\d{1,3})?/),pt("X",(function(t,e,n){n._d=new Date(1e3*parseFloat(t,10))})),pt("x",(function(t,e,n){n._d=new Date(k(t))})),i.version="2.24.0",e=xe,i.fn=on,i.min=function(){return ke("isBefore",[].slice.call(arguments,0))},i.max=function(){return ke("isAfter",[].slice.call(arguments,0))},i.now=function(){return Date.now?Date.now():+new Date},i.utc=d,i.unix=function(t){return xe(1e3*t)},i.months=function(t,e){return ln(t,e,"months")},i.isDate=c,i.locale=ee,i.invalid=g,i.duration=Pe,i.isMoment=_,i.weekdays=function(t,e,n){return fn(t,e,n,"weekdays")},i.parseZone=function(){return xe.apply(null,arguments).parseZone()},i.localeData=re,i.isDuration=Te,i.monthsShort=function(t,e){return ln(t,e,"monthsShort")},i.weekdaysMin=function(t,e,n){return fn(t,e,n,"weekdaysMin")},i.defineLocale=ne,i.updateLocale=function(t,e){if(null!=e){var n,r,i=Zt;null!=(r=te(t))&&(i=r._config),(n=new D(e=C(i,e))).parentLocale=Jt[t],Jt[t]=n,ee(t)}else null!=Jt[t]&&(null!=Jt[t].parentLocale?Jt[t]=Jt[t].parentLocale:null!=Jt[t]&&delete Jt[t]);return Jt[t]},i.locales=function(){return S(Jt)},i.weekdaysShort=function(t,e,n){return fn(t,e,n,"weekdaysShort")},i.normalizeUnits=I,i.relativeTimeRounding=function(t){return void 0===t?In:"function"==typeof t&&(In=t,!0)},i.relativeTimeThreshold=function(t,e){return void 0!==Pn[t]&&(void 0===e?Pn[t]:(Pn[t]=e,"s"===t&&(Pn.ss=e-1),!0))},i.calendarFormat=function(t,e){var n=t.diff(e,"days",!0);return n<-6?"sameElse":n<-1?"lastWeek":n<0?"lastDay":n<1?"sameDay":n<2?"nextDay":n<7?"nextWeek":"sameElse"},i.prototype=on,i.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},i}()}).call(this,n(6)(t))},function(t,e,n){var r=n(31),i=n(72);t.exports=function(t){return null!=t&&i(t.length)&&!r(t)}},function(t,e,n){var r=n(226),i=n(236),a=n(29),o=n(4),s=n(243);t.exports=function(t){return"function"==typeof t?t:null==t?a:"object"==typeof t?o(t)?i(t[0],t[1]):r(t):s(t)}},function(t,e,n){t.exports={graphlib:n(13),layout:n(282),debug:n(336),util:{time:n(7).time,notime:n(7).notime},version:n(337)}},function(t,e,n){(function(t,r){var i=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[1,4],n=[1,3],r=[1,5],i=[1,8,9,10,11,26,34,63,64,65,66,67,68,78,79,82,83,84,86,87,93,94,95,96,97,98],a=[2,2],o=[1,12],s=[1,13],u=[1,14],c=[1,15],l=[1,22],f=[1,46],h=[1,24],d=[1,25],p=[1,26],y=[1,27],g=[1,28],m=[1,40],v=[1,35],b=[1,37],x=[1,32],_=[1,36],w=[1,39],k=[1,43],E=[1,44],A=[1,45],T=[1,34],S=[1,38],M=[1,41],O=[1,42],N=[1,33],C=[1,51],D=[1,8,9,10,11,26,30,34,63,64,65,66,67,68,78,79,82,83,84,86,87,93,94,95,96,97,98],L=[1,55],F=[1,54],I=[1,56],P=[8,9,11,57,58],R=[8,9,10,11,57,58],B=[8,9,10,11,35,57,58],j=[8,9,10,11,28,34,35,37,39,41,43,45,47,49,50,52,57,58,68,78,79,82,83,84,86,87,93,94,95,96,97,98],Y=[8,9,11,34,57,58,68,78,79,82,83,84,86,87,93,94,95,96,97,98],z=[34,68,78,79,82,83,84,86,87,93,94,95,96,97,98],U=[1,101],$=[1,122],G=[1,123],V=[1,124],H=[1,125],W=[1,105],q=[1,96],X=[1,97],Z=[1,93],J=[1,117],Q=[1,118],K=[1,119],tt=[1,120],et=[1,121],nt=[1,126],rt=[1,127],it=[1,99],at=[1,107],ot=[1,110],st=[1,108],ut=[1,109],ct=[1,102],lt=[1,115],ft=[1,114],ht=[1,98],dt=[1,95],pt=[1,104],yt=[1,106],gt=[1,111],mt=[1,112],vt=[1,113],bt=[1,116],xt=[8,9,10,11,26,30,34,63,64,65,66,67,68,78,79,82,83,84,86,87,93,94,95,96,97,98],_t=[1,130],wt=[1,134],kt=[1,136],Et=[1,137],At=[8,9,10,11,12,13,26,28,29,30,34,38,40,42,44,46,48,49,51,53,57,58,59,63,64,65,66,67,68,69,72,78,79,82,83,84,86,87,88,89,93,94,95,96,97,98],Tt=[8,9,10,11,13,34,68,78,79,82,83,84,86,87,93,94,95,96,97,98],St=[10,79],Mt=[1,204],Ot=[1,208],Nt=[1,205],Ct=[1,202],Dt=[1,199],Lt=[1,200],Ft=[1,201],It=[1,203],Pt=[1,206],Rt=[1,207],Bt=[1,209],jt=[8,9,11],Yt=[1,225],zt=[8,9,11,79],Ut=[8,9,10,11,63,75,78,79,82,83,84,85,86,87,88],$t={trace:function(){},yy:{},symbols_:{error:2,mermaidDoc:3,graphConfig:4,document:5,line:6,statement:7,SEMI:8,NEWLINE:9,SPACE:10,EOF:11,GRAPH:12,DIR:13,FirstStmtSeperator:14,ending:15,endToken:16,spaceList:17,spaceListNewline:18,verticeStatement:19,separator:20,styleStatement:21,linkStyleStatement:22,classDefStatement:23,classStatement:24,clickStatement:25,subgraph:26,text:27,SQS:28,SQE:29,end:30,link:31,node:32,vertex:33,AMP:34,STYLE_SEPARATOR:35,idString:36,PS:37,PE:38,"(-":39,"-)":40,STADIUMSTART:41,STADIUMEND:42,SUBROUTINESTART:43,SUBROUTINEEND:44,CYLINDERSTART:45,CYLINDEREND:46,DIAMOND_START:47,DIAMOND_STOP:48,TAGEND:49,TRAPSTART:50,TRAPEND:51,INVTRAPSTART:52,INVTRAPEND:53,linkStatement:54,arrowText:55,TESTSTR:56,START_LINK:57,LINK:58,PIPE:59,textToken:60,STR:61,keywords:62,STYLE:63,LINKSTYLE:64,CLASSDEF:65,CLASS:66,CLICK:67,DOWN:68,UP:69,textNoTags:70,textNoTagsToken:71,DEFAULT:72,stylesOpt:73,alphaNum:74,HEX:75,numList:76,INTERPOLATE:77,NUM:78,COMMA:79,style:80,styleComponent:81,ALPHA:82,COLON:83,MINUS:84,UNIT:85,BRKT:86,DOT:87,PCT:88,TAGSTART:89,alphaNumToken:90,idStringToken:91,alphaNumStatement:92,PUNCTUATION:93,UNICODE_TEXT:94,PLUS:95,EQUALS:96,MULT:97,UNDERSCORE:98,graphCodeTokens:99,ARROW_CROSS:100,ARROW_POINT:101,ARROW_CIRCLE:102,ARROW_OPEN:103,QUOTE:104,$accept:0,$end:1},terminals_:{2:"error",8:"SEMI",9:"NEWLINE",10:"SPACE",11:"EOF",12:"GRAPH",13:"DIR",26:"subgraph",28:"SQS",29:"SQE",30:"end",34:"AMP",35:"STYLE_SEPARATOR",37:"PS",38:"PE",39:"(-",40:"-)",41:"STADIUMSTART",42:"STADIUMEND",43:"SUBROUTINESTART",44:"SUBROUTINEEND",45:"CYLINDERSTART",46:"CYLINDEREND",47:"DIAMOND_START",48:"DIAMOND_STOP",49:"TAGEND",50:"TRAPSTART",51:"TRAPEND",52:"INVTRAPSTART",53:"INVTRAPEND",56:"TESTSTR",57:"START_LINK",58:"LINK",59:"PIPE",61:"STR",63:"STYLE",64:"LINKSTYLE",65:"CLASSDEF",66:"CLASS",67:"CLICK",68:"DOWN",69:"UP",72:"DEFAULT",75:"HEX",77:"INTERPOLATE",78:"NUM",79:"COMMA",82:"ALPHA",83:"COLON",84:"MINUS",85:"UNIT",86:"BRKT",87:"DOT",88:"PCT",89:"TAGSTART",93:"PUNCTUATION",94:"UNICODE_TEXT",95:"PLUS",96:"EQUALS",97:"MULT",98:"UNDERSCORE",100:"ARROW_CROSS",101:"ARROW_POINT",102:"ARROW_CIRCLE",103:"ARROW_OPEN",104:"QUOTE"},productions_:[0,[3,2],[5,0],[5,2],[6,1],[6,1],[6,1],[6,1],[6,1],[4,2],[4,2],[4,3],[15,2],[15,1],[16,1],[16,1],[16,1],[14,1],[14,1],[14,2],[18,2],[18,2],[18,1],[18,1],[17,2],[17,1],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,9],[7,6],[7,4],[20,1],[20,1],[20,1],[19,3],[19,4],[19,2],[19,1],[32,1],[32,5],[32,3],[33,4],[33,6],[33,4],[33,4],[33,4],[33,4],[33,4],[33,4],[33,6],[33,4],[33,4],[33,4],[33,4],[33,4],[33,1],[31,2],[31,3],[31,3],[31,1],[31,3],[54,1],[55,3],[27,1],[27,2],[27,1],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[70,1],[70,2],[23,5],[23,5],[24,5],[25,5],[25,7],[25,5],[25,7],[21,5],[21,5],[22,5],[22,5],[22,9],[22,9],[22,7],[22,7],[76,1],[76,3],[73,1],[73,3],[80,1],[80,2],[81,1],[81,1],[81,1],[81,1],[81,1],[81,1],[81,1],[81,1],[81,1],[81,1],[81,1],[60,1],[60,1],[60,1],[60,1],[60,1],[60,1],[71,1],[71,1],[71,1],[71,1],[36,1],[36,2],[74,1],[74,2],[92,1],[92,1],[92,1],[92,1],[90,1],[90,1],[90,1],[90,1],[90,1],[90,1],[90,1],[90,1],[90,1],[90,1],[90,1],[90,1],[90,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1],[99,1]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 2:this.$=[];break;case 3:a[s]!==[]&&a[s-1].push(a[s]),this.$=a[s-1];break;case 4:case 67:case 69:case 81:case 127:case 129:case 130:this.$=a[s];break;case 11:r.setDirection(a[s-1]),this.$=a[s-1];break;case 26:this.$=a[s-1].nodes;break;case 27:case 28:case 29:case 30:case 31:this.$=[];break;case 32:this.$=r.addSubGraph(a[s-6],a[s-1],a[s-4]);break;case 33:this.$=r.addSubGraph(a[s-3],a[s-1],a[s-3]);break;case 34:this.$=r.addSubGraph(void 0,a[s-1],void 0);break;case 38:r.addLink(a[s-2].stmt,a[s],a[s-1]),this.$={stmt:a[s],nodes:a[s].concat(a[s-2].nodes)};break;case 39:r.addLink(a[s-3].stmt,a[s-1],a[s-2]),this.$={stmt:a[s-1],nodes:a[s-1].concat(a[s-3].nodes)};break;case 40:this.$={stmt:a[s-1],nodes:a[s-1]};break;case 41:this.$={stmt:a[s],nodes:a[s]};break;case 42:this.$=[a[s]];break;case 43:this.$=a[s-4].concat(a[s]);break;case 44:this.$=[a[s-2]],r.setClass(a[s-2],a[s]);break;case 45:this.$=a[s-3],r.addVertex(a[s-3],a[s-1],"square");break;case 46:this.$=a[s-5],r.addVertex(a[s-5],a[s-2],"circle");break;case 47:this.$=a[s-3],r.addVertex(a[s-3],a[s-1],"ellipse");break;case 48:this.$=a[s-3],r.addVertex(a[s-3],a[s-1],"stadium");break;case 49:this.$=a[s-3],r.addVertex(a[s-3],a[s-1],"subroutine");break;case 50:this.$=a[s-3],r.addVertex(a[s-3],a[s-1],"cylinder");break;case 51:this.$=a[s-3],r.addVertex(a[s-3],a[s-1],"round");break;case 52:this.$=a[s-3],r.addVertex(a[s-3],a[s-1],"diamond");break;case 53:this.$=a[s-5],r.addVertex(a[s-5],a[s-2],"hexagon");break;case 54:this.$=a[s-3],r.addVertex(a[s-3],a[s-1],"odd");break;case 55:this.$=a[s-3],r.addVertex(a[s-3],a[s-1],"trapezoid");break;case 56:this.$=a[s-3],r.addVertex(a[s-3],a[s-1],"inv_trapezoid");break;case 57:this.$=a[s-3],r.addVertex(a[s-3],a[s-1],"lean_right");break;case 58:this.$=a[s-3],r.addVertex(a[s-3],a[s-1],"lean_left");break;case 59:this.$=a[s],r.addVertex(a[s]);break;case 60:a[s-1].text=a[s],this.$=a[s-1];break;case 61:case 62:a[s-2].text=a[s-1],this.$=a[s-2];break;case 63:this.$=a[s];break;case 64:var u=r.destructLink(a[s],a[s-2]);this.$={type:u.type,stroke:u.stroke,text:a[s-1]};break;case 65:u=r.destructLink(a[s]);this.$={type:u.type,stroke:u.stroke};break;case 66:this.$=a[s-1];break;case 68:case 82:case 128:this.$=a[s-1]+""+a[s];break;case 83:case 84:this.$=a[s-4],r.addClass(a[s-2],a[s]);break;case 85:this.$=a[s-4],r.setClass(a[s-2],a[s]);break;case 86:this.$=a[s-4],r.setClickEvent(a[s-2],a[s],void 0);break;case 87:this.$=a[s-6],r.setClickEvent(a[s-4],a[s-2],a[s]);break;case 88:this.$=a[s-4],r.setLink(a[s-2],a[s],void 0);break;case 89:this.$=a[s-6],r.setLink(a[s-4],a[s-2],a[s]);break;case 90:this.$=a[s-4],r.addVertex(a[s-2],void 0,void 0,a[s]);break;case 91:case 93:this.$=a[s-4],r.updateLink(a[s-2],a[s]);break;case 92:this.$=a[s-4],r.updateLink([a[s-2]],a[s]);break;case 94:this.$=a[s-8],r.updateLinkInterpolate([a[s-6]],a[s-2]),r.updateLink([a[s-6]],a[s]);break;case 95:this.$=a[s-8],r.updateLinkInterpolate(a[s-6],a[s-2]),r.updateLink(a[s-6],a[s]);break;case 96:this.$=a[s-6],r.updateLinkInterpolate([a[s-4]],a[s]);break;case 97:this.$=a[s-6],r.updateLinkInterpolate(a[s-4],a[s]);break;case 98:case 100:this.$=[a[s]];break;case 99:case 101:a[s-2].push(a[s]),this.$=a[s-2];break;case 103:this.$=a[s-1]+a[s];break;case 125:this.$=a[s];break;case 126:this.$=a[s-1]+""+a[s];break;case 131:this.$="v";break;case 132:this.$="-"}},table:[{3:1,4:2,9:e,10:n,12:r},{1:[3]},t(i,a,{5:6}),{4:7,9:e,10:n,12:r},{4:8,9:e,10:n,12:r},{13:[1,9]},{1:[2,1],6:10,7:11,8:o,9:s,10:u,11:c,19:16,21:17,22:18,23:19,24:20,25:21,26:l,32:23,33:29,34:f,36:30,63:h,64:d,65:p,66:y,67:g,68:m,78:v,79:b,82:x,83:_,84:w,86:k,87:E,91:31,93:A,94:T,95:S,96:M,97:O,98:N},t(i,[2,9]),t(i,[2,10]),{8:[1,48],9:[1,49],10:C,14:47,17:50},t(D,[2,3]),t(D,[2,4]),t(D,[2,5]),t(D,[2,6]),t(D,[2,7]),t(D,[2,8]),{8:L,9:F,11:I,20:52,31:53,54:57,57:[1,58],58:[1,59]},{8:L,9:F,11:I,20:60},{8:L,9:F,11:I,20:61},{8:L,9:F,11:I,20:62},{8:L,9:F,11:I,20:63},{8:L,9:F,11:I,20:64},{8:L,9:F,10:[1,65],11:I,20:66},t(P,[2,41],{17:67,10:C}),{10:[1,68]},{10:[1,69]},{10:[1,70]},{10:[1,71]},{10:[1,72]},t(R,[2,42],{35:[1,73]}),t(B,[2,59],{91:84,28:[1,74],34:f,37:[1,75],39:[1,76],41:[1,77],43:[1,78],45:[1,79],47:[1,80],49:[1,81],50:[1,82],52:[1,83],68:m,78:v,79:b,82:x,83:_,84:w,86:k,87:E,93:A,94:T,95:S,96:M,97:O,98:N}),t(j,[2,125]),t(j,[2,146]),t(j,[2,147]),t(j,[2,148]),t(j,[2,149]),t(j,[2,150]),t(j,[2,151]),t(j,[2,152]),t(j,[2,153]),t(j,[2,154]),t(j,[2,155]),t(j,[2,156]),t(j,[2,157]),t(j,[2,158]),t(j,[2,159]),t(j,[2,160]),t(i,[2,11]),t(i,[2,17]),t(i,[2,18]),{9:[1,85]},t(Y,[2,25],{17:86,10:C}),t(D,[2,26]),{32:87,33:29,34:f,36:30,68:m,78:v,79:b,82:x,83:_,84:w,86:k,87:E,91:31,93:A,94:T,95:S,96:M,97:O,98:N},t(D,[2,35]),t(D,[2,36]),t(D,[2,37]),t(z,[2,63],{55:88,56:[1,89],59:[1,90]}),{10:U,12:$,13:G,26:V,27:91,30:H,34:W,49:q,57:X,60:92,61:Z,62:103,63:J,64:Q,65:K,66:tt,67:et,68:nt,69:rt,71:94,72:it,78:at,79:ot,82:st,83:ut,84:ct,86:lt,87:ft,88:ht,89:dt,90:100,93:pt,94:yt,95:gt,96:mt,97:vt,98:bt},t([34,56,59,68,78,79,82,83,84,86,87,93,94,95,96,97,98],[2,65]),t(D,[2,27]),t(D,[2,28]),t(D,[2,29]),t(D,[2,30]),t(D,[2,31]),{10:U,12:$,13:G,26:V,27:128,30:H,34:W,49:q,57:X,60:92,61:Z,62:103,63:J,64:Q,65:K,66:tt,67:et,68:nt,69:rt,71:94,72:it,78:at,79:ot,82:st,83:ut,84:ct,86:lt,87:ft,88:ht,89:dt,90:100,93:pt,94:yt,95:gt,96:mt,97:vt,98:bt},t(xt,a,{5:129}),t(P,[2,40],{34:_t}),{13:wt,34:W,68:kt,74:131,75:[1,132],78:at,79:ot,82:st,83:ut,84:Et,86:lt,87:ft,90:135,92:133,93:pt,94:yt,95:gt,96:mt,97:vt,98:bt},{72:[1,138],76:139,78:[1,140]},{13:wt,34:W,68:kt,72:[1,141],74:142,78:at,79:ot,82:st,83:ut,84:Et,86:lt,87:ft,90:135,92:133,93:pt,94:yt,95:gt,96:mt,97:vt,98:bt},{13:wt,34:W,68:kt,74:143,78:at,79:ot,82:st,83:ut,84:Et,86:lt,87:ft,90:135,92:133,93:pt,94:yt,95:gt,96:mt,97:vt,98:bt},{13:wt,34:W,68:kt,74:144,78:at,79:ot,82:st,83:ut,84:Et,86:lt,87:ft,90:135,92:133,93:pt,94:yt,95:gt,96:mt,97:vt,98:bt},{34:f,36:145,68:m,78:v,79:b,82:x,83:_,84:w,86:k,87:E,91:31,93:A,94:T,95:S,96:M,97:O,98:N},{10:U,12:$,13:G,26:V,27:146,30:H,34:W,49:q,57:X,60:92,61:Z,62:103,63:J,64:Q,65:K,66:tt,67:et,68:nt,69:rt,71:94,72:it,78:at,79:ot,82:st,83:ut,84:ct,86:lt,87:ft,88:ht,89:dt,90:100,93:pt,94:yt,95:gt,96:mt,97:vt,98:bt},{10:U,12:$,13:G,26:V,27:148,30:H,34:W,37:[1,147],49:q,57:X,60:92,61:Z,62:103,63:J,64:Q,65:K,66:tt,67:et,68:nt,69:rt,71:94,72:it,78:at,79:ot,82:st,83:ut,84:ct,86:lt,87:ft,88:ht,89:dt,90:100,93:pt,94:yt,95:gt,96:mt,97:vt,98:bt},{10:U,12:$,13:G,26:V,27:149,30:H,34:W,49:q,57:X,60:92,61:Z,62:103,63:J,64:Q,65:K,66:tt,67:et,68:nt,69:rt,71:94,72:it,78:at,79:ot,82:st,83:ut,84:ct,86:lt,87:ft,88:ht,89:dt,90:100,93:pt,94:yt,95:gt,96:mt,97:vt,98:bt},{10:U,12:$,13:G,26:V,27:150,30:H,34:W,49:q,57:X,60:92,61:Z,62:103,63:J,64:Q,65:K,66:tt,67:et,68:nt,69:rt,71:94,72:it,78:at,79:ot,82:st,83:ut,84:ct,86:lt,87:ft,88:ht,89:dt,90:100,93:pt,94:yt,95:gt,96:mt,97:vt,98:bt},{10:U,12:$,13:G,26:V,27:151,30:H,34:W,49:q,57:X,60:92,61:Z,62:103,63:J,64:Q,65:K,66:tt,67:et,68:nt,69:rt,71:94,72:it,78:at,79:ot,82:st,83:ut,84:ct,86:lt,87:ft,88:ht,89:dt,90:100,93:pt,94:yt,95:gt,96:mt,97:vt,98:bt},{10:U,12:$,13:G,26:V,27:152,30:H,34:W,49:q,57:X,60:92,61:Z,62:103,63:J,64:Q,65:K,66:tt,67:et,68:nt,69:rt,71:94,72:it,78:at,79:ot,82:st,83:ut,84:ct,86:lt,87:ft,88:ht,89:dt,90:100,93:pt,94:yt,95:gt,96:mt,97:vt,98:bt},{10:U,12:$,13:G,26:V,27:153,30:H,34:W,47:[1,154],49:q,57:X,60:92,61:Z,62:103,63:J,64:Q,65:K,66:tt,67:et,68:nt,69:rt,71:94,72:it,78:at,79:ot,82:st,83:ut,84:ct,86:lt,87:ft,88:ht,89:dt,90:100,93:pt,94:yt,95:gt,96:mt,97:vt,98:bt},{10:U,12:$,13:G,26:V,27:155,30:H,34:W,49:q,57:X,60:92,61:Z,62:103,63:J,64:Q,65:K,66:tt,67:et,68:nt,69:rt,71:94,72:it,78:at,79:ot,82:st,83:ut,84:ct,86:lt,87:ft,88:ht,89:dt,90:100,93:pt,94:yt,95:gt,96:mt,97:vt,98:bt},{10:U,12:$,13:G,26:V,27:156,30:H,34:W,49:q,57:X,60:92,61:Z,62:103,63:J,64:Q,65:K,66:tt,67:et,68:nt,69:rt,71:94,72:it,78:at,79:ot,82:st,83:ut,84:ct,86:lt,87:ft,88:ht,89:dt,90:100,93:pt,94:yt,95:gt,96:mt,97:vt,98:bt},{10:U,12:$,13:G,26:V,27:157,30:H,34:W,49:q,57:X,60:92,61:Z,62:103,63:J,64:Q,65:K,66:tt,67:et,68:nt,69:rt,71:94,72:it,78:at,79:ot,82:st,83:ut,84:ct,86:lt,87:ft,88:ht,89:dt,90:100,93:pt,94:yt,95:gt,96:mt,97:vt,98:bt},t(j,[2,126]),t(i,[2,19]),t(Y,[2,24]),t(P,[2,38],{17:158,10:C}),t(z,[2,60],{10:[1,159]}),{10:[1,160]},{10:U,12:$,13:G,26:V,27:161,30:H,34:W,49:q,57:X,60:92,61:Z,62:103,63:J,64:Q,65:K,66:tt,67:et,68:nt,69:rt,71:94,72:it,78:at,79:ot,82:st,83:ut,84:ct,86:lt,87:ft,88:ht,89:dt,90:100,93:pt,94:yt,95:gt,96:mt,97:vt,98:bt},{10:U,12:$,13:G,26:V,30:H,34:W,49:q,57:X,58:[1,162],60:163,62:103,63:J,64:Q,65:K,66:tt,67:et,68:nt,69:rt,71:94,72:it,78:at,79:ot,82:st,83:ut,84:ct,86:lt,87:ft,88:ht,89:dt,90:100,93:pt,94:yt,95:gt,96:mt,97:vt,98:bt},t(At,[2,67]),t(At,[2,69]),t(At,[2,115]),t(At,[2,116]),t(At,[2,117]),t(At,[2,118]),t(At,[2,119]),t(At,[2,120]),t(At,[2,121]),t(At,[2,122]),t(At,[2,123]),t(At,[2,124]),t(At,[2,133]),t(At,[2,134]),t(At,[2,135]),t(At,[2,136]),t(At,[2,137]),t(At,[2,138]),t(At,[2,139]),t(At,[2,140]),t(At,[2,141]),t(At,[2,142]),t(At,[2,143]),t(At,[2,144]),t(At,[2,145]),t(At,[2,70]),t(At,[2,71]),t(At,[2,72]),t(At,[2,73]),t(At,[2,74]),t(At,[2,75]),t(At,[2,76]),t(At,[2,77]),t(At,[2,78]),t(At,[2,79]),t(At,[2,80]),{8:L,9:F,10:U,11:I,12:$,13:G,20:165,26:V,28:[1,164],30:H,34:W,49:q,57:X,60:163,62:103,63:J,64:Q,65:K,66:tt,67:et,68:nt,69:rt,71:94,72:it,78:at,79:ot,82:st,83:ut,84:ct,86:lt,87:ft,88:ht,89:dt,90:100,93:pt,94:yt,95:gt,96:mt,97:vt,98:bt},{6:10,7:11,8:o,9:s,10:u,11:c,19:16,21:17,22:18,23:19,24:20,25:21,26:l,30:[1,166],32:23,33:29,34:f,36:30,63:h,64:d,65:p,66:y,67:g,68:m,78:v,79:b,82:x,83:_,84:w,86:k,87:E,91:31,93:A,94:T,95:S,96:M,97:O,98:N},{10:C,17:167},{10:[1,168],13:wt,34:W,68:kt,78:at,79:ot,82:st,83:ut,84:Et,86:lt,87:ft,90:135,92:169,93:pt,94:yt,95:gt,96:mt,97:vt,98:bt},{10:[1,170]},t(Tt,[2,127]),t(Tt,[2,129]),t(Tt,[2,130]),t(Tt,[2,131]),t(Tt,[2,132]),{10:[1,171]},{10:[1,172],79:[1,173]},t(St,[2,98]),{10:[1,174]},{10:[1,175],13:wt,34:W,68:kt,78:at,79:ot,82:st,83:ut,84:Et,86:lt,87:ft,90:135,92:169,93:pt,94:yt,95:gt,96:mt,97:vt,98:bt},{10:[1,176],13:wt,34:W,68:kt,78:at,79:ot,82:st,83:ut,84:Et,86:lt,87:ft,90:135,92:169,93:pt,94:yt,95:gt,96:mt,97:vt,98:bt},{10:[1,177],13:wt,34:W,68:kt,78:at,79:ot,82:st,83:ut,84:Et,86:lt,87:ft,90:135,92:169,93:pt,94:yt,95:gt,96:mt,97:vt,98:bt},t(R,[2,44],{91:84,34:f,68:m,78:v,79:b,82:x,83:_,84:w,86:k,87:E,93:A,94:T,95:S,96:M,97:O,98:N}),{10:U,12:$,13:G,26:V,29:[1,178],30:H,34:W,49:q,57:X,60:163,62:103,63:J,64:Q,65:K,66:tt,67:et,68:nt,69:rt,71:94,72:it,78:at,79:ot,82:st,83:ut,84:ct,86:lt,87:ft,88:ht,89:dt,90:100,93:pt,94:yt,95:gt,96:mt,97:vt,98:bt},{10:U,12:$,13:G,26:V,27:179,30:H,34:W,49:q,57:X,60:92,61:Z,62:103,63:J,64:Q,65:K,66:tt,67:et,68:nt,69:rt,71:94,72:it,78:at,79:ot,82:st,83:ut,84:ct,86:lt,87:ft,88:ht,89:dt,90:100,93:pt,94:yt,95:gt,96:mt,97:vt,98:bt},{10:U,12:$,13:G,26:V,30:H,34:W,38:[1,180],49:q,57:X,60:163,62:103,63:J,64:Q,65:K,66:tt,67:et,68:nt,69:rt,71:94,72:it,78:at,79:ot,82:st,83:ut,84:ct,86:lt,87:ft,88:ht,89:dt,90:100,93:pt,94:yt,95:gt,96:mt,97:vt,98:bt},{10:U,12:$,13:G,26:V,30:H,34:W,40:[1,181],49:q,57:X,60:163,62:103,63:J,64:Q,65:K,66:tt,67:et,68:nt,69:rt,71:94,72:it,78:at,79:ot,82:st,83:ut,84:ct,86:lt,87:ft,88:ht,89:dt,90:100,93:pt,94:yt,95:gt,96:mt,97:vt,98:bt},{10:U,12:$,13:G,26:V,30:H,34:W,42:[1,182],49:q,57:X,60:163,62:103,63:J,64:Q,65:K,66:tt,67:et,68:nt,69:rt,71:94,72:it,78:at,79:ot,82:st,83:ut,84:ct,86:lt,87:ft,88:ht,89:dt,90:100,93:pt,94:yt,95:gt,96:mt,97:vt,98:bt},{10:U,12:$,13:G,26:V,30:H,34:W,44:[1,183],49:q,57:X,60:163,62:103,63:J,64:Q,65:K,66:tt,67:et,68:nt,69:rt,71:94,72:it,78:at,79:ot,82:st,83:ut,84:ct,86:lt,87:ft,88:ht,89:dt,90:100,93:pt,94:yt,95:gt,96:mt,97:vt,98:bt},{10:U,12:$,13:G,26:V,30:H,34:W,46:[1,184],49:q,57:X,60:163,62:103,63:J,64:Q,65:K,66:tt,67:et,68:nt,69:rt,71:94,72:it,78:at,79:ot,82:st,83:ut,84:ct,86:lt,87:ft,88:ht,89:dt,90:100,93:pt,94:yt,95:gt,96:mt,97:vt,98:bt},{10:U,12:$,13:G,26:V,30:H,34:W,48:[1,185],49:q,57:X,60:163,62:103,63:J,64:Q,65:K,66:tt,67:et,68:nt,69:rt,71:94,72:it,78:at,79:ot,82:st,83:ut,84:ct,86:lt,87:ft,88:ht,89:dt,90:100,93:pt,94:yt,95:gt,96:mt,97:vt,98:bt},{10:U,12:$,13:G,26:V,27:186,30:H,34:W,49:q,57:X,60:92,61:Z,62:103,63:J,64:Q,65:K,66:tt,67:et,68:nt,69:rt,71:94,72:it,78:at,79:ot,82:st,83:ut,84:ct,86:lt,87:ft,88:ht,89:dt,90:100,93:pt,94:yt,95:gt,96:mt,97:vt,98:bt},{10:U,12:$,13:G,26:V,29:[1,187],30:H,34:W,49:q,57:X,60:163,62:103,63:J,64:Q,65:K,66:tt,67:et,68:nt,69:rt,71:94,72:it,78:at,79:ot,82:st,83:ut,84:ct,86:lt,87:ft,88:ht,89:dt,90:100,93:pt,94:yt,95:gt,96:mt,97:vt,98:bt},{10:U,12:$,13:G,26:V,30:H,34:W,49:q,51:[1,188],53:[1,189],57:X,60:163,62:103,63:J,64:Q,65:K,66:tt,67:et,68:nt,69:rt,71:94,72:it,78:at,79:ot,82:st,83:ut,84:ct,86:lt,87:ft,88:ht,89:dt,90:100,93:pt,94:yt,95:gt,96:mt,97:vt,98:bt},{10:U,12:$,13:G,26:V,30:H,34:W,49:q,51:[1,191],53:[1,190],57:X,60:163,62:103,63:J,64:Q,65:K,66:tt,67:et,68:nt,69:rt,71:94,72:it,78:at,79:ot,82:st,83:ut,84:ct,86:lt,87:ft,88:ht,89:dt,90:100,93:pt,94:yt,95:gt,96:mt,97:vt,98:bt},t(P,[2,39],{34:_t}),t(z,[2,62]),t(z,[2,61]),{10:U,12:$,13:G,26:V,30:H,34:W,49:q,57:X,59:[1,192],60:163,62:103,63:J,64:Q,65:K,66:tt,67:et,68:nt,69:rt,71:94,72:it,78:at,79:ot,82:st,83:ut,84:ct,86:lt,87:ft,88:ht,89:dt,90:100,93:pt,94:yt,95:gt,96:mt,97:vt,98:bt},t(z,[2,64]),t(At,[2,68]),{10:U,12:$,13:G,26:V,27:193,30:H,34:W,49:q,57:X,60:92,61:Z,62:103,63:J,64:Q,65:K,66:tt,67:et,68:nt,69:rt,71:94,72:it,78:at,79:ot,82:st,83:ut,84:ct,86:lt,87:ft,88:ht,89:dt,90:100,93:pt,94:yt,95:gt,96:mt,97:vt,98:bt},t(xt,a,{5:194}),t(D,[2,34]),{33:195,34:f,36:30,68:m,78:v,79:b,82:x,83:_,84:w,86:k,87:E,91:31,93:A,94:T,95:S,96:M,97:O,98:N},{10:Mt,63:Ot,73:196,75:Nt,78:Ct,80:197,81:198,82:Dt,83:Lt,84:Ft,85:It,86:Pt,87:Rt,88:Bt},t(Tt,[2,128]),{10:Mt,63:Ot,73:210,75:Nt,78:Ct,80:197,81:198,82:Dt,83:Lt,84:Ft,85:It,86:Pt,87:Rt,88:Bt},{10:Mt,63:Ot,73:211,75:Nt,77:[1,212],78:Ct,80:197,81:198,82:Dt,83:Lt,84:Ft,85:It,86:Pt,87:Rt,88:Bt},{10:Mt,63:Ot,73:213,75:Nt,77:[1,214],78:Ct,80:197,81:198,82:Dt,83:Lt,84:Ft,85:It,86:Pt,87:Rt,88:Bt},{78:[1,215]},{10:Mt,63:Ot,73:216,75:Nt,78:Ct,80:197,81:198,82:Dt,83:Lt,84:Ft,85:It,86:Pt,87:Rt,88:Bt},{10:Mt,63:Ot,73:217,75:Nt,78:Ct,80:197,81:198,82:Dt,83:Lt,84:Ft,85:It,86:Pt,87:Rt,88:Bt},{13:wt,34:W,68:kt,74:218,78:at,79:ot,82:st,83:ut,84:Et,86:lt,87:ft,90:135,92:133,93:pt,94:yt,95:gt,96:mt,97:vt,98:bt},{13:wt,34:W,61:[1,220],68:kt,74:219,78:at,79:ot,82:st,83:ut,84:Et,86:lt,87:ft,90:135,92:133,93:pt,94:yt,95:gt,96:mt,97:vt,98:bt},t(B,[2,45]),{10:U,12:$,13:G,26:V,30:H,34:W,38:[1,221],49:q,57:X,60:163,62:103,63:J,64:Q,65:K,66:tt,67:et,68:nt,69:rt,71:94,72:it,78:at,79:ot,82:st,83:ut,84:ct,86:lt,87:ft,88:ht,89:dt,90:100,93:pt,94:yt,95:gt,96:mt,97:vt,98:bt},t(B,[2,51]),t(B,[2,47]),t(B,[2,48]),t(B,[2,49]),t(B,[2,50]),t(B,[2,52]),{10:U,12:$,13:G,26:V,30:H,34:W,48:[1,222],49:q,57:X,60:163,62:103,63:J,64:Q,65:K,66:tt,67:et,68:nt,69:rt,71:94,72:it,78:at,79:ot,82:st,83:ut,84:ct,86:lt,87:ft,88:ht,89:dt,90:100,93:pt,94:yt,95:gt,96:mt,97:vt,98:bt},t(B,[2,54]),t(B,[2,55]),t(B,[2,57]),t(B,[2,56]),t(B,[2,58]),t([10,34,68,78,79,82,83,84,86,87,93,94,95,96,97,98],[2,66]),{10:U,12:$,13:G,26:V,29:[1,223],30:H,34:W,49:q,57:X,60:163,62:103,63:J,64:Q,65:K,66:tt,67:et,68:nt,69:rt,71:94,72:it,78:at,79:ot,82:st,83:ut,84:ct,86:lt,87:ft,88:ht,89:dt,90:100,93:pt,94:yt,95:gt,96:mt,97:vt,98:bt},{6:10,7:11,8:o,9:s,10:u,11:c,19:16,21:17,22:18,23:19,24:20,25:21,26:l,30:[1,224],32:23,33:29,34:f,36:30,63:h,64:d,65:p,66:y,67:g,68:m,78:v,79:b,82:x,83:_,84:w,86:k,87:E,91:31,93:A,94:T,95:S,96:M,97:O,98:N},t(R,[2,43]),t(jt,[2,90],{79:Yt}),t(zt,[2,100],{81:226,10:Mt,63:Ot,75:Nt,78:Ct,82:Dt,83:Lt,84:Ft,85:It,86:Pt,87:Rt,88:Bt}),t(Ut,[2,102]),t(Ut,[2,104]),t(Ut,[2,105]),t(Ut,[2,106]),t(Ut,[2,107]),t(Ut,[2,108]),t(Ut,[2,109]),t(Ut,[2,110]),t(Ut,[2,111]),t(Ut,[2,112]),t(Ut,[2,113]),t(Ut,[2,114]),t(jt,[2,91],{79:Yt}),t(jt,[2,92],{79:Yt}),{10:[1,227]},t(jt,[2,93],{79:Yt}),{10:[1,228]},t(St,[2,99]),t(jt,[2,83],{79:Yt}),t(jt,[2,84],{79:Yt}),t(jt,[2,85],{90:135,92:169,13:wt,34:W,68:kt,78:at,79:ot,82:st,83:ut,84:Et,86:lt,87:ft,93:pt,94:yt,95:gt,96:mt,97:vt,98:bt}),t(jt,[2,86],{90:135,92:169,10:[1,229],13:wt,34:W,68:kt,78:at,79:ot,82:st,83:ut,84:Et,86:lt,87:ft,93:pt,94:yt,95:gt,96:mt,97:vt,98:bt}),t(jt,[2,88],{10:[1,230]}),{38:[1,231]},{48:[1,232]},{8:L,9:F,11:I,20:233},t(D,[2,33]),{10:Mt,63:Ot,75:Nt,78:Ct,80:234,81:198,82:Dt,83:Lt,84:Ft,85:It,86:Pt,87:Rt,88:Bt},t(Ut,[2,103]),{13:wt,34:W,68:kt,74:235,78:at,79:ot,82:st,83:ut,84:Et,86:lt,87:ft,90:135,92:133,93:pt,94:yt,95:gt,96:mt,97:vt,98:bt},{13:wt,34:W,68:kt,74:236,78:at,79:ot,82:st,83:ut,84:Et,86:lt,87:ft,90:135,92:133,93:pt,94:yt,95:gt,96:mt,97:vt,98:bt},{61:[1,237]},{61:[1,238]},t(B,[2,46]),t(B,[2,53]),t(xt,a,{5:239}),t(zt,[2,101],{81:226,10:Mt,63:Ot,75:Nt,78:Ct,82:Dt,83:Lt,84:Ft,85:It,86:Pt,87:Rt,88:Bt}),t(jt,[2,96],{90:135,92:169,10:[1,240],13:wt,34:W,68:kt,78:at,79:ot,82:st,83:ut,84:Et,86:lt,87:ft,93:pt,94:yt,95:gt,96:mt,97:vt,98:bt}),t(jt,[2,97],{90:135,92:169,10:[1,241],13:wt,34:W,68:kt,78:at,79:ot,82:st,83:ut,84:Et,86:lt,87:ft,93:pt,94:yt,95:gt,96:mt,97:vt,98:bt}),t(jt,[2,87]),t(jt,[2,89]),{6:10,7:11,8:o,9:s,10:u,11:c,19:16,21:17,22:18,23:19,24:20,25:21,26:l,30:[1,242],32:23,33:29,34:f,36:30,63:h,64:d,65:p,66:y,67:g,68:m,78:v,79:b,82:x,83:_,84:w,86:k,87:E,91:31,93:A,94:T,95:S,96:M,97:O,98:N},{10:Mt,63:Ot,73:243,75:Nt,78:Ct,80:197,81:198,82:Dt,83:Lt,84:Ft,85:It,86:Pt,87:Rt,88:Bt},{10:Mt,63:Ot,73:244,75:Nt,78:Ct,80:197,81:198,82:Dt,83:Lt,84:Ft,85:It,86:Pt,87:Rt,88:Bt},t(D,[2,32]),t(jt,[2,94],{79:Yt}),t(jt,[2,95],{79:Yt})],defaultActions:{},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",u=0,c=0,l=0,f=2,h=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),y={yy:{}};for(var g in this.yy)Object.prototype.hasOwnProperty.call(this.yy,g)&&(y.yy[g]=this.yy[g]);p.setInput(t,y.yy),y.yy.lexer=p,y.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var m=p.yylloc;a.push(m);var v=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||h)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof y.yy.parseError?this.parseError=y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var x,_,w,k,E,A,T,S,M,O={};;){if(w=n[n.length-1],this.defaultActions[w]?k=this.defaultActions[w]:(null==x&&(x=b()),k=o[w]&&o[w][x]),void 0===k||!k.length||!k[0]){var N="";for(A in M=[],o[w])this.terminals_[A]&&A>f&&M.push("'"+this.terminals_[A]+"'");N=p.showPosition?"Parse error on line "+(u+1)+":\n"+p.showPosition()+"\nExpecting "+M.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(u+1)+": Unexpected "+(x==h?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(N,{text:p.match,token:this.terminals_[x]||x,line:p.yylineno,loc:m,expected:M})}if(k[0]instanceof Array&&k.length>1)throw new Error("Parse Error: multiple actions possible at state: "+w+", token: "+x);switch(k[0]){case 1:n.push(x),i.push(p.yytext),a.push(p.yylloc),n.push(k[1]),x=null,_?(x=_,_=null):(c=p.yyleng,s=p.yytext,u=p.yylineno,m=p.yylloc,l>0&&l--);break;case 2:if(T=this.productions_[k[1]][1],O.$=i[i.length-T],O._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},v&&(O._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(O,[s,c,u,y.yy,k[1],i,a].concat(d))))return E;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[k[1]][0]),i.push(O.$),a.push(O._$),S=o[n[n.length-2]][n[n.length-1]],n.push(S);break;case 3:return!0}}return!0}},Gt={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;a<i.length;a++)if((n=this._input.match(this.rules[i[a]]))&&(!e||n[0].length>e[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(t,e,n,r){switch(n){case 0:break;case 1:this.begin("string");break;case 2:this.popState();break;case 3:return"STR";case 4:return 63;case 5:return 72;case 6:return 64;case 7:return 77;case 8:return 65;case 9:return 66;case 10:return 67;case 11:case 12:return t.lex.firstGraph()&&this.begin("dir"),12;case 13:return 26;case 14:return 30;case 15:case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 23:case 24:return this.popState(),13;case 25:return 78;case 26:return 86;case 27:return 35;case 28:return 83;case 29:return 34;case 30:return 8;case 31:return 79;case 32:return 97;case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 46:case 47:case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 58:case 59:case 60:return 58;case 61:case 62:case 63:case 64:case 65:case 66:case 67:case 68:case 69:case 70:case 71:case 72:return 57;case 73:return 39;case 74:return 40;case 75:return 41;case 76:return 42;case 77:return 43;case 78:return 44;case 79:return 45;case 80:return 46;case 81:return 84;case 82:return 87;case 83:return 98;case 84:return 95;case 85:return 88;case 86:case 87:return 96;case 88:return 89;case 89:return 49;case 90:return 69;case 91:return"SEP";case 92:return 68;case 93:return 82;case 94:return 51;case 95:return 50;case 96:return 53;case 97:return 52;case 98:return 93;case 99:return 94;case 100:return 59;case 101:return 37;case 102:return 38;case 103:return 28;case 104:return 29;case 105:return 47;case 106:return 48;case 107:return 104;case 108:return 9;case 109:return 10;case 110:return 11}},rules:[/^(?:%%[^\n]*\n*)/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:style\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\b)/,/^(?:class\b)/,/^(?:click\b)/,/^(?:graph\b)/,/^(?:flowchart\b)/,/^(?:subgraph\b)/,/^(?:end\b\s*)/,/^(?:\s*LR\b)/,/^(?:\s*RL\b)/,/^(?:\s*TB\b)/,/^(?:\s*BT\b)/,/^(?:\s*TD\b)/,/^(?:\s*BR\b)/,/^(?:\s*<)/,/^(?:\s*>)/,/^(?:\s*\^)/,/^(?:\s*v\b)/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::::)/,/^(?::)/,/^(?:&)/,/^(?:;)/,/^(?:,)/,/^(?:\*)/,/^(?:\s*--[x]\s*)/,/^(?:\s*-->\s*)/,/^(?:\s*<-->\s*)/,/^(?:\s*[x]--[x]\s*)/,/^(?:\s*[o]--[o]\s*)/,/^(?:\s*[o]\.-[o]\s*)/,/^(?:\s*<==>\s*)/,/^(?:\s*[o]==[o]\s*)/,/^(?:\s*[x]==[x]\s*)/,/^(?:\s*[x].-[x]\s*)/,/^(?:\s*[x]-\.-[x]\s*)/,/^(?:\s*<\.->\s*)/,/^(?:\s*<-\.->\s*)/,/^(?:\s*[o]-\.-[o]\s*)/,/^(?:\s*--[o]\s*)/,/^(?:\s*---\s*)/,/^(?:\s*-\.-[x]\s*)/,/^(?:\s*-\.->\s*)/,/^(?:\s*-\.-[o]\s*)/,/^(?:\s*-\.-\s*)/,/^(?:\s*.-[x]\s*)/,/^(?:\s*\.->\s*)/,/^(?:\s*\.-[o]\s*)/,/^(?:\s*\.-\s*)/,/^(?:\s*==[x]\s*)/,/^(?:\s*==>\s*)/,/^(?:\s*==[o]\s*)/,/^(?:\s*==[\=]\s*)/,/^(?:\s*<--\s*)/,/^(?:\s*[x]--\s*)/,/^(?:\s*[o]--\s*)/,/^(?:\s*<-\.\s*)/,/^(?:\s*[x]-\.\s*)/,/^(?:\s*[o]-\.\s*)/,/^(?:\s*<==\s*)/,/^(?:\s*[x]==\s*)/,/^(?:\s*[o]==\s*)/,/^(?:\s*--\s*)/,/^(?:\s*-\.\s*)/,/^(?:\s*==\s*)/,/^(?:\(-)/,/^(?:-\))/,/^(?:\(\[)/,/^(?:\]\))/,/^(?:\[\[)/,/^(?:\]\])/,/^(?:\[\()/,/^(?:\)\])/,/^(?:-)/,/^(?:\.)/,/^(?:[\_])/,/^(?:\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:<)/,/^(?:>)/,/^(?:\^)/,/^(?:\\\|)/,/^(?:v\b)/,/^(?:[A-Za-z]+)/,/^(?:\\\])/,/^(?:\[\/)/,/^(?:\/\])/,/^(?:\[\\)/,/^(?:[!"#$%&'*+,-.`?\\_/])/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\|)/,/^(?:\()/,/^(?:\))/,/^(?:\[)/,/^(?:\])/,/^(?:\{)/,/^(?:\})/,/^(?:")/,/^(?:(\r|\n|\r\n)+)/,/^(?:\s)/,/^(?:$)/],conditions:{vertex:{rules:[],inclusive:!1},dir:{rules:[15,16,17,18,19,20,21,22,23,24],inclusive:!1},string:{rules:[2,3],inclusive:!1},INITIAL:{rules:[0,1,4,5,6,7,8,9,10,11,12,13,14,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110],inclusive:!0}}};function Vt(){this.yy={}}return $t.lexer=Gt,Vt.prototype=$t,$t.Parser=Vt,new Vt}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(14).readFileSync(n(15).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(11),n(6)(t))},function(t,e,n){(function(t,r){var i=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[6,8,10,11,12,13,14,15,16,17,19,21],n=[1,9],r=[1,10],i=[1,11],a=[1,12],o=[1,13],s=[1,14],u=[1,15],c=[1,17],l=[1,18],f={trace:function(){},yy:{},symbols_:{error:2,start:3,gantt:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NL:10,dateFormat:11,inclusiveEndDates:12,axisFormat:13,excludes:14,todayMarker:15,title:16,section:17,clickStatement:18,taskTxt:19,taskData:20,click:21,callbackname:22,callbackargs:23,href:24,clickStatementDebug:25,$accept:0,$end:1},terminals_:{2:"error",4:"gantt",6:"EOF",8:"SPACE",10:"NL",11:"dateFormat",12:"inclusiveEndDates",13:"axisFormat",14:"excludes",15:"todayMarker",16:"title",17:"section",19:"taskTxt",20:"taskData",21:"click",22:"callbackname",23:"callbackargs",24:"href"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,2],[18,2],[18,3],[18,3],[18,4],[18,3],[18,4],[18,2],[25,2],[25,3],[25,3],[25,4],[25,3],[25,4],[25,2]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 1:return a[s-1];case 2:this.$=[];break;case 3:a[s-1].push(a[s]),this.$=a[s-1];break;case 4:case 5:this.$=a[s];break;case 6:case 7:this.$=[];break;case 8:r.setDateFormat(a[s].substr(11)),this.$=a[s].substr(11);break;case 9:r.enableInclusiveEndDates(),this.$=a[s].substr(18);break;case 10:r.setAxisFormat(a[s].substr(11)),this.$=a[s].substr(11);break;case 11:r.setExcludes(a[s].substr(9)),this.$=a[s].substr(9);break;case 12:r.setTodayMarker(a[s].substr(12)),this.$=a[s].substr(12);break;case 13:r.setTitle(a[s].substr(6)),this.$=a[s].substr(6);break;case 14:r.addSection(a[s].substr(8)),this.$=a[s].substr(8);break;case 16:r.addTask(a[s-1],a[s]),this.$="task";break;case 17:this.$=a[s-1],r.setClickEvent(a[s-1],a[s],null);break;case 18:this.$=a[s-2],r.setClickEvent(a[s-2],a[s-1],a[s]);break;case 19:this.$=a[s-2],r.setClickEvent(a[s-2],a[s-1],null),r.setLink(a[s-2],a[s]);break;case 20:this.$=a[s-3],r.setClickEvent(a[s-3],a[s-2],a[s-1]),r.setLink(a[s-3],a[s]);break;case 21:this.$=a[s-2],r.setClickEvent(a[s-2],a[s],null),r.setLink(a[s-2],a[s-1]);break;case 22:this.$=a[s-3],r.setClickEvent(a[s-3],a[s-1],a[s]),r.setLink(a[s-3],a[s-2]);break;case 23:this.$=a[s-1],r.setLink(a[s-1],a[s]);break;case 24:case 30:this.$=a[s-1]+" "+a[s];break;case 25:case 26:case 28:this.$=a[s-2]+" "+a[s-1]+" "+a[s];break;case 27:case 29:this.$=a[s-3]+" "+a[s-2]+" "+a[s-1]+" "+a[s]}},table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:n,12:r,13:i,14:a,15:o,16:s,17:u,18:16,19:c,21:l},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:19,11:n,12:r,13:i,14:a,15:o,16:s,17:u,18:16,19:c,21:l},t(e,[2,5]),t(e,[2,6]),t(e,[2,8]),t(e,[2,9]),t(e,[2,10]),t(e,[2,11]),t(e,[2,12]),t(e,[2,13]),t(e,[2,14]),t(e,[2,15]),{20:[1,20]},{22:[1,21],24:[1,22]},t(e,[2,4]),t(e,[2,16]),t(e,[2,17],{23:[1,23],24:[1,24]}),t(e,[2,23],{22:[1,25]}),t(e,[2,18],{24:[1,26]}),t(e,[2,19]),t(e,[2,21],{23:[1,27]}),t(e,[2,20]),t(e,[2,22])],defaultActions:{},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",u=0,c=0,l=0,f=2,h=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),y={yy:{}};for(var g in this.yy)Object.prototype.hasOwnProperty.call(this.yy,g)&&(y.yy[g]=this.yy[g]);p.setInput(t,y.yy),y.yy.lexer=p,y.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var m=p.yylloc;a.push(m);var v=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||h)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof y.yy.parseError?this.parseError=y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var x,_,w,k,E,A,T,S,M,O={};;){if(w=n[n.length-1],this.defaultActions[w]?k=this.defaultActions[w]:(null==x&&(x=b()),k=o[w]&&o[w][x]),void 0===k||!k.length||!k[0]){var N="";for(A in M=[],o[w])this.terminals_[A]&&A>f&&M.push("'"+this.terminals_[A]+"'");N=p.showPosition?"Parse error on line "+(u+1)+":\n"+p.showPosition()+"\nExpecting "+M.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(u+1)+": Unexpected "+(x==h?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(N,{text:p.match,token:this.terminals_[x]||x,line:p.yylineno,loc:m,expected:M})}if(k[0]instanceof Array&&k.length>1)throw new Error("Parse Error: multiple actions possible at state: "+w+", token: "+x);switch(k[0]){case 1:n.push(x),i.push(p.yytext),a.push(p.yylloc),n.push(k[1]),x=null,_?(x=_,_=null):(c=p.yyleng,s=p.yytext,u=p.yylineno,m=p.yylloc,l>0&&l--);break;case 2:if(T=this.productions_[k[1]][1],O.$=i[i.length-T],O._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},v&&(O._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(O,[s,c,u,y.yy,k[1],i,a].concat(d))))return E;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[k[1]][0]),i.push(O.$),a.push(O._$),S=o[n[n.length-2]][n[n.length-1]],n.push(S);break;case 3:return!0}}return!0}},h={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;a<i.length;a++)if((n=this._input.match(this.rules[i[a]]))&&(!e||n[0].length>e[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return 10;case 1:case 2:case 3:break;case 4:this.begin("href");break;case 5:this.popState();break;case 6:return 24;case 7:this.begin("callbackname");break;case 8:this.popState();break;case 9:this.popState(),this.begin("callbackargs");break;case 10:return 22;case 11:this.popState();break;case 12:return 23;case 13:this.begin("click");break;case 14:this.popState();break;case 15:return 21;case 16:return 4;case 17:return 11;case 18:return 12;case 19:return 13;case 20:return 14;case 21:return 15;case 22:return"date";case 23:return 16;case 24:return 17;case 25:return 19;case 26:return 20;case 27:return":";case 28:return 6;case 29:return"INVALID"}},rules:[/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:href[\s]+["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:call[\s]+)/i,/^(?:\([\s]*\))/i,/^(?:\()/i,/^(?:[^(]*)/i,/^(?:\))/i,/^(?:[^)]*)/i,/^(?:click[\s]+)/i,/^(?:[\s\n])/i,/^(?:[^\s\n]*)/i,/^(?:gantt\b)/i,/^(?:dateFormat\s[^#\n;]+)/i,/^(?:inclusiveEndDates\b)/i,/^(?:axisFormat\s[^#\n;]+)/i,/^(?:excludes\s[^#\n;]+)/i,/^(?:todayMarker\s[^\n;]+)/i,/^(?:\d\d\d\d-\d\d-\d\d\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{callbackargs:{rules:[11,12],inclusive:!1},callbackname:{rules:[8,9,10],inclusive:!1},href:{rules:[5,6],inclusive:!1},click:{rules:[14,15],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,7,13,16,17,18,19,20,21,22,23,24,25,26,27,28,29],inclusive:!0}}};function d(){this.yy={}}return f.lexer=h,d.prototype=f,f.Parser=d,new d}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(14).readFileSync(n(15).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(11),n(6)(t))},function(t,e,n){(function(t,r){var i=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[6,8,10,11,12,13],n=[1,9],r=[1,10],i=[1,11],a={trace:function(){},yy:{},symbols_:{error:2,start:3,journey:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NL:10,title:11,section:12,taskName:13,taskData:14,$accept:0,$end:1},terminals_:{2:"error",4:"journey",6:"EOF",8:"SPACE",10:"NL",11:"title",12:"section",13:"taskName",14:"taskData"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,1],[9,2]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 1:return a[s-1];case 2:this.$=[];break;case 3:a[s-1].push(a[s]),this.$=a[s-1];break;case 4:case 5:this.$=a[s];break;case 6:case 7:this.$=[];break;case 8:r.setTitle(a[s].substr(6)),this.$=a[s].substr(6);break;case 9:r.addSection(a[s].substr(8)),this.$=a[s].substr(8);break;case 10:r.addTask(a[s-1],a[s]),this.$="task"}},table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:n,12:r,13:i},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:12,11:n,12:r,13:i},t(e,[2,5]),t(e,[2,6]),t(e,[2,8]),t(e,[2,9]),{14:[1,13]},t(e,[2,4]),t(e,[2,10])],defaultActions:{},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",u=0,c=0,l=0,f=2,h=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),y={yy:{}};for(var g in this.yy)Object.prototype.hasOwnProperty.call(this.yy,g)&&(y.yy[g]=this.yy[g]);p.setInput(t,y.yy),y.yy.lexer=p,y.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var m=p.yylloc;a.push(m);var v=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||h)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof y.yy.parseError?this.parseError=y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var x,_,w,k,E,A,T,S,M,O={};;){if(w=n[n.length-1],this.defaultActions[w]?k=this.defaultActions[w]:(null==x&&(x=b()),k=o[w]&&o[w][x]),void 0===k||!k.length||!k[0]){var N="";for(A in M=[],o[w])this.terminals_[A]&&A>f&&M.push("'"+this.terminals_[A]+"'");N=p.showPosition?"Parse error on line "+(u+1)+":\n"+p.showPosition()+"\nExpecting "+M.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(u+1)+": Unexpected "+(x==h?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(N,{text:p.match,token:this.terminals_[x]||x,line:p.yylineno,loc:m,expected:M})}if(k[0]instanceof Array&&k.length>1)throw new Error("Parse Error: multiple actions possible at state: "+w+", token: "+x);switch(k[0]){case 1:n.push(x),i.push(p.yytext),a.push(p.yylloc),n.push(k[1]),x=null,_?(x=_,_=null):(c=p.yyleng,s=p.yytext,u=p.yylineno,m=p.yylloc,l>0&&l--);break;case 2:if(T=this.productions_[k[1]][1],O.$=i[i.length-T],O._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},v&&(O._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(O,[s,c,u,y.yy,k[1],i,a].concat(d))))return E;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[k[1]][0]),i.push(O.$),a.push(O._$),S=o[n[n.length-2]][n[n.length-1]],n.push(S);break;case 3:return!0}}return!0}},o={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;a<i.length;a++)if((n=this._input.match(this.rules[i[a]]))&&(!e||n[0].length>e[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return 10;case 1:case 2:case 3:break;case 4:return 4;case 5:return 11;case 6:return 12;case 7:return 13;case 8:return 14;case 9:return":";case 10:return 6;case 11:return"INVALID"}},rules:[/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:journey\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11],inclusive:!0}}};function s(){this.yy={}}return a.lexer=o,s.prototype=a,a.Parser=s,new s}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(14).readFileSync(n(15).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(11),n(6)(t))},function(t,e,n){var r=n(95),i=n(74),a=n(19);t.exports=function(t){return a(t)?r(t):i(t)}},function(t,e,n){var r;if(!r)try{r=n(0)}catch(t){}r||(r=window.d3),t.exports=r},function(t,e,n){var r=n(180),i=n(186);t.exports=function(t,e){var n=i(t,e);return r(n)?n:void 0}},function(t,e,n){var r=n(32),i=n(182),a=n(183),o=r?r.toStringTag:void 0;t.exports=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":o&&o in Object(t)?i(t):a(t)}},function(t,e){t.exports=function(t){return t}},function(t,e){t.exports=function(t,e){return t===e||t!=t&&e!=e}},function(t,e,n){var r=n(28),i=n(9);t.exports=function(t){if(!i(t))return!1;var e=r(t);return"[object Function]"==e||"[object GeneratorFunction]"==e||"[object AsyncFunction]"==e||"[object Proxy]"==e}},function(t,e,n){var r=n(12).Symbol;t.exports=r},function(t,e,n){(function(t){var r=n(12),i=n(202),a=e&&!e.nodeType&&e,o=a&&"object"==typeof t&&t&&!t.nodeType&&t,s=o&&o.exports===a?r.Buffer:void 0,u=(s?s.isBuffer:void 0)||i;t.exports=u}).call(this,n(6)(t))},function(t,e,n){var r=n(95),i=n(206),a=n(19);t.exports=function(t){return a(t)?r(t,!0):i(t)}},function(t,e,n){var r=n(211),i=n(69),a=n(212),o=n(104),s=n(213),u=n(28),c=n(93),l=c(r),f=c(i),h=c(a),d=c(o),p=c(s),y=u;(r&&"[object DataView]"!=y(new r(new ArrayBuffer(1)))||i&&"[object Map]"!=y(new i)||a&&"[object Promise]"!=y(a.resolve())||o&&"[object Set]"!=y(new o)||s&&"[object WeakMap]"!=y(new s))&&(y=function(t){var e=u(t),n="[object Object]"==e?t.constructor:void 0,r=n?c(n):"";if(r)switch(r){case l:return"[object DataView]";case f:return"[object Map]";case h:return"[object Promise]";case d:return"[object Set]";case p:return"[object WeakMap]"}return e}),t.exports=y},function(t,e,n){var r=n(28),i=n(16);t.exports=function(t){return"symbol"==typeof t||i(t)&&"[object Symbol]"==r(t)}},function(t,e,n){var r;try{r={defaults:n(137),each:n(79),isFunction:n(31),isPlainObject:n(141),pick:n(144),has:n(85),range:n(145),uniqueId:n(146)}}catch(t){}r||(r=window._),t.exports=r},function(t,e,n){(function(t,r){var i=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[1,13],n=[1,16],r=[1,14],i=[1,15],a=[1,17],o=[1,18],s=[1,20],u=[1,21],c=[1,22],l=[6,8],f=[1,31],h=[1,32],d=[1,33],p=[1,34],y=[1,35],g=[1,36],m=[6,8,14,20,28,31,32,33,34,35,36],v=[6,8,12,14,20,24,28,31,32,33,34,35,36,52,53,54],b=[28,52,53,54],x=[28,35,36,52,53,54],_=[28,31,32,33,34,52,53,54],w=[6,8,14],k=[1,59],E={trace:function(){},yy:{},symbols_:{error:2,mermaidDoc:3,graphConfig:4,CLASS_DIAGRAM:5,NEWLINE:6,statements:7,EOF:8,statement:9,className:10,alphaNumToken:11,GENERICTYPE:12,relationStatement:13,LABEL:14,classStatement:15,methodStatement:16,annotationStatement:17,clickStatement:18,CLASS:19,STRUCT_START:20,members:21,STRUCT_STOP:22,ANNOTATION_START:23,ANNOTATION_END:24,MEMBER:25,SEPARATOR:26,relation:27,STR:28,relationType:29,lineType:30,AGGREGATION:31,EXTENSION:32,COMPOSITION:33,DEPENDENCY:34,LINE:35,DOTTED_LINE:36,CALLBACK:37,LINK:38,commentToken:39,textToken:40,graphCodeTokens:41,textNoTagsToken:42,TAGSTART:43,TAGEND:44,"==":45,"--":46,PCT:47,DEFAULT:48,SPACE:49,MINUS:50,keywords:51,UNICODE_TEXT:52,NUM:53,ALPHA:54,$accept:0,$end:1},terminals_:{2:"error",5:"CLASS_DIAGRAM",6:"NEWLINE",8:"EOF",12:"GENERICTYPE",14:"LABEL",19:"CLASS",20:"STRUCT_START",22:"STRUCT_STOP",23:"ANNOTATION_START",24:"ANNOTATION_END",25:"MEMBER",26:"SEPARATOR",28:"STR",31:"AGGREGATION",32:"EXTENSION",33:"COMPOSITION",34:"DEPENDENCY",35:"LINE",36:"DOTTED_LINE",37:"CALLBACK",38:"LINK",41:"graphCodeTokens",43:"TAGSTART",44:"TAGEND",45:"==",46:"--",47:"PCT",48:"DEFAULT",49:"SPACE",50:"MINUS",51:"keywords",52:"UNICODE_TEXT",53:"NUM",54:"ALPHA"},productions_:[0,[3,1],[4,4],[7,1],[7,2],[7,3],[10,2],[10,1],[10,3],[10,2],[9,1],[9,2],[9,1],[9,1],[9,1],[9,1],[15,2],[15,5],[17,4],[21,1],[21,2],[16,1],[16,2],[16,1],[16,1],[13,3],[13,4],[13,4],[13,5],[27,3],[27,2],[27,2],[27,1],[29,1],[29,1],[29,1],[29,1],[30,1],[30,1],[18,3],[18,4],[18,3],[18,4],[39,1],[39,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[42,1],[42,1],[42,1],[42,1],[11,1],[11,1],[11,1]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 6:this.$=a[s-1]+a[s];break;case 7:this.$=a[s];break;case 8:this.$=a[s-2]+"~"+a[s-1]+a[s];break;case 9:this.$=a[s-1]+"~"+a[s];break;case 10:r.addRelation(a[s]);break;case 11:a[s-1].title=r.cleanupLabel(a[s]),r.addRelation(a[s-1]);break;case 16:r.addClass(a[s]);break;case 17:r.addClass(a[s-3]),r.addMembers(a[s-3],a[s-1]);break;case 18:r.addAnnotation(a[s],a[s-2]);break;case 19:this.$=[a[s]];break;case 20:a[s].push(a[s-1]),this.$=a[s];break;case 21:break;case 22:r.addMember(a[s-1],r.cleanupLabel(a[s]));break;case 23:case 24:break;case 25:this.$={id1:a[s-2],id2:a[s],relation:a[s-1],relationTitle1:"none",relationTitle2:"none"};break;case 26:this.$={id1:a[s-3],id2:a[s],relation:a[s-1],relationTitle1:a[s-2],relationTitle2:"none"};break;case 27:this.$={id1:a[s-3],id2:a[s],relation:a[s-2],relationTitle1:"none",relationTitle2:a[s-1]};break;case 28:this.$={id1:a[s-4],id2:a[s],relation:a[s-2],relationTitle1:a[s-3],relationTitle2:a[s-1]};break;case 29:this.$={type1:a[s-2],type2:a[s],lineType:a[s-1]};break;case 30:this.$={type1:"none",type2:a[s],lineType:a[s-1]};break;case 31:this.$={type1:a[s-1],type2:"none",lineType:a[s]};break;case 32:this.$={type1:"none",type2:"none",lineType:a[s]};break;case 33:this.$=r.relationType.AGGREGATION;break;case 34:this.$=r.relationType.EXTENSION;break;case 35:this.$=r.relationType.COMPOSITION;break;case 36:this.$=r.relationType.DEPENDENCY;break;case 37:this.$=r.lineType.LINE;break;case 38:this.$=r.lineType.DOTTED_LINE;break;case 39:this.$=a[s-2],r.setClickEvent(a[s-1],a[s],void 0);break;case 40:this.$=a[s-3],r.setClickEvent(a[s-2],a[s-1],a[s]);break;case 41:this.$=a[s-2],r.setLink(a[s-1],a[s],void 0);break;case 42:this.$=a[s-3],r.setLink(a[s-2],a[s-1],a[s])}},table:[{3:1,4:2,5:[1,3]},{1:[3]},{1:[2,1]},{6:[1,4]},{7:5,9:6,10:12,11:19,13:7,15:8,16:9,17:10,18:11,19:e,23:n,25:r,26:i,37:a,38:o,52:s,53:u,54:c},{8:[1,23]},{6:[1,24],8:[2,3]},t(l,[2,10],{14:[1,25]}),t(l,[2,12]),t(l,[2,13]),t(l,[2,14]),t(l,[2,15]),t(l,[2,21],{27:26,29:29,30:30,14:[1,28],28:[1,27],31:f,32:h,33:d,34:p,35:y,36:g}),{10:37,11:19,52:s,53:u,54:c},t(l,[2,23]),t(l,[2,24]),{11:38,52:s,53:u,54:c},{10:39,11:19,52:s,53:u,54:c},{10:40,11:19,52:s,53:u,54:c},t(m,[2,7],{11:19,10:41,12:[1,42],52:s,53:u,54:c}),t(v,[2,56]),t(v,[2,57]),t(v,[2,58]),{1:[2,2]},{7:43,8:[2,4],9:6,10:12,11:19,13:7,15:8,16:9,17:10,18:11,19:e,23:n,25:r,26:i,37:a,38:o,52:s,53:u,54:c},t(l,[2,11]),{10:44,11:19,28:[1,45],52:s,53:u,54:c},{27:46,29:29,30:30,31:f,32:h,33:d,34:p,35:y,36:g},t(l,[2,22]),{30:47,35:y,36:g},t(b,[2,32],{29:48,31:f,32:h,33:d,34:p}),t(x,[2,33]),t(x,[2,34]),t(x,[2,35]),t(x,[2,36]),t(_,[2,37]),t(_,[2,38]),t(l,[2,16],{20:[1,49]}),{24:[1,50]},{28:[1,51]},{28:[1,52]},t(m,[2,6]),t(m,[2,9],{11:19,10:53,52:s,53:u,54:c}),{8:[2,5]},t(w,[2,25]),{10:54,11:19,52:s,53:u,54:c},{10:55,11:19,28:[1,56],52:s,53:u,54:c},t(b,[2,31],{29:57,31:f,32:h,33:d,34:p}),t(b,[2,30]),{21:58,25:k},{10:60,11:19,52:s,53:u,54:c},t(l,[2,39],{28:[1,61]}),t(l,[2,41],{28:[1,62]}),t(m,[2,8]),t(w,[2,27]),t(w,[2,26]),{10:63,11:19,52:s,53:u,54:c},t(b,[2,29]),{22:[1,64]},{21:65,22:[2,19],25:k},t(l,[2,18]),t(l,[2,40]),t(l,[2,42]),t(w,[2,28]),t(l,[2,17]),{22:[2,20]}],defaultActions:{2:[2,1],23:[2,2],43:[2,5],65:[2,20]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",u=0,c=0,l=0,f=2,h=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),y={yy:{}};for(var g in this.yy)Object.prototype.hasOwnProperty.call(this.yy,g)&&(y.yy[g]=this.yy[g]);p.setInput(t,y.yy),y.yy.lexer=p,y.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var m=p.yylloc;a.push(m);var v=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||h)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof y.yy.parseError?this.parseError=y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var x,_,w,k,E,A,T,S,M,O={};;){if(w=n[n.length-1],this.defaultActions[w]?k=this.defaultActions[w]:(null==x&&(x=b()),k=o[w]&&o[w][x]),void 0===k||!k.length||!k[0]){var N="";for(A in M=[],o[w])this.terminals_[A]&&A>f&&M.push("'"+this.terminals_[A]+"'");N=p.showPosition?"Parse error on line "+(u+1)+":\n"+p.showPosition()+"\nExpecting "+M.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(u+1)+": Unexpected "+(x==h?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(N,{text:p.match,token:this.terminals_[x]||x,line:p.yylineno,loc:m,expected:M})}if(k[0]instanceof Array&&k.length>1)throw new Error("Parse Error: multiple actions possible at state: "+w+", token: "+x);switch(k[0]){case 1:n.push(x),i.push(p.yytext),a.push(p.yylloc),n.push(k[1]),x=null,_?(x=_,_=null):(c=p.yyleng,s=p.yytext,u=p.yylineno,m=p.yylloc,l>0&&l--);break;case 2:if(T=this.productions_[k[1]][1],O.$=i[i.length-T],O._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},v&&(O._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(O,[s,c,u,y.yy,k[1],i,a].concat(d))))return E;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[k[1]][0]),i.push(O.$),a.push(O._$),S=o[n[n.length-2]][n[n.length-1]],n.push(S);break;case 3:return!0}}return!0}},A={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;a<i.length;a++)if((n=this._input.match(this.rules[i[a]]))&&(!e||n[0].length>e[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(t,e,n,r){switch(n){case 0:break;case 1:return 6;case 2:break;case 3:return 5;case 4:return this.begin("struct"),20;case 5:return"EOF_IN_STRUCT";case 6:return"OPEN_IN_STRUCT";case 7:return this.popState(),22;case 8:break;case 9:return"MEMBER";case 10:return 19;case 11:return 37;case 12:return 38;case 13:return 23;case 14:return 24;case 15:this.begin("generic");break;case 16:this.popState();break;case 17:return"GENERICTYPE";case 18:this.begin("string");break;case 19:this.popState();break;case 20:return"STR";case 21:case 22:return 32;case 23:case 24:return 34;case 25:return 33;case 26:return 31;case 27:return 35;case 28:return 36;case 29:return 14;case 30:return 50;case 31:return"DOT";case 32:return"PLUS";case 33:return 47;case 34:case 35:return"EQUALS";case 36:return 54;case 37:return"PUNCTUATION";case 38:return 53;case 39:return 52;case 40:return 49;case 41:return 8}},rules:[/^(?:%%[^\n]*\n*)/,/^(?:\n+)/,/^(?:\s+)/,/^(?:classDiagram\b)/,/^(?:[\{])/,/^(?:$)/,/^(?:[\{])/,/^(?:\})/,/^(?:[\n])/,/^(?:[^\{\}\n]*)/,/^(?:class\b)/,/^(?:callback\b)/,/^(?:link\b)/,/^(?:<<)/,/^(?:>>)/,/^(?:[~])/,/^(?:[~])/,/^(?:[^~]*)/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:\s*<\|)/,/^(?:\s*\|>)/,/^(?:\s*>)/,/^(?:\s*<)/,/^(?:\s*\*)/,/^(?:\s*o\b)/,/^(?:--)/,/^(?:\.\.)/,/^(?::[^\n;]+)/,/^(?:-)/,/^(?:\.)/,/^(?:\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:\w+)/,/^(?:[!"#$%&'*+,-.`?\\/])/,/^(?:[0-9]+)/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\s)/,/^(?:$)/],conditions:{string:{rules:[19,20],inclusive:!1},generic:{rules:[16,17],inclusive:!1},struct:{rules:[5,6,7,8,9],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,10,11,12,13,14,15,18,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41],inclusive:!0}}};function T(){this.yy={}}return E.lexer=A,T.prototype=E,E.Parser=T,new T}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(14).readFileSync(n(15).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(11),n(6)(t))},function(t){t.exports=JSON.parse('{"name":"mermaid","version":"8.5.1","description":"Markdownish syntax for generating flowcharts, sequence diagrams, class diagrams, gantt charts and git graphs.","main":"dist/mermaid.core.js","keywords":["diagram","markdown","flowchart","sequence diagram","gantt","class diagram","git graph"],"scripts":{"build":"webpack --progress --colors -p","postbuild":"documentation build src/mermaidAPI.js --shallow -f md --markdown-toc false -o docs/mermaidAPI.md","build:watch":"yarn build --watch","minify":"minify ./dist/mermaid.js > ./dist/mermaid.min.js","release":"yarn build -p --config webpack.config.prod.babel.js","lint":"eslint src","e2e:depr":"yarn lint && jest e2e --config e2e/jest.config.js","cypress":"percy exec -- cypress run","e2e":"start-server-and-test dev http://localhost:9000/ cypress","e2e-upd":"yarn lint && jest e2e -u --config e2e/jest.config.js","dev":"webpack-dev-server --config webpack.config.e2e.js","test":"yarn lint && jest src/.*","test:watch":"jest --watch src","prepublishOnly":"yarn build && yarn release && yarn test && yarn e2e","prepush":"yarn test","prepare":"yarn build"},"repository":{"type":"git","url":"https://github.com/knsv/mermaid"},"author":"Knut Sveidqvist","license":"MIT","standard":{"ignore":["**/parser/*.js","dist/**/*.js","cypress/**/*.js"],"globals":["page"]},"dependencies":{"@braintree/sanitize-url":"^3.1.0","crypto-random-string":"^3.0.1","d3":"^5.7.0","dagre":"^0.8.4","dagre-d3":"^0.6.4","entity-decode":"^2.0.2","graphlib":"^2.1.7","he":"^1.2.0","minify":"^4.1.1","moment-mini":"^2.22.1","scope-css":"^1.2.1"},"devDependencies":{"@babel/core":"^7.2.2","@babel/preset-env":"^7.8.4","@babel/register":"^7.0.0","@percy/cypress":"*","babel-core":"7.0.0-bridge.0","babel-jest":"^24.9.0","babel-loader":"^8.0.4","coveralls":"^3.0.2","css-loader":"^2.0.1","css-to-string-loader":"^0.1.3","cypress":"4.0.1","documentation":"^12.0.1","eslint":"^6.3.0","eslint-config-prettier":"^6.3.0","eslint-plugin-prettier":"^3.1.0","husky":"^1.2.1","identity-obj-proxy":"^3.0.0","jest":"^24.9.0","jison":"^0.4.18","moment":"^2.23.0","node-sass":"^4.12.0","prettier":"^1.18.2","puppeteer":"^1.17.0","sass-loader":"^7.1.0","start-server-and-test":"^1.10.6","terser-webpack-plugin":"^2.2.2","webpack":"^4.41.2","webpack-bundle-analyzer":"^3.7.0","webpack-cli":"^3.1.2","webpack-dev-server":"^3.4.1","webpack-node-externals":"^1.7.2","yarn-upgrade-all":"^0.5.0"},"files":["dist"],"yarn-upgrade-all":{"ignore":["babel-core"]},"sideEffects":["**/*.css","**/*.scss"]}')},function(t,e,n){var r=n(51),i=n(52);t.exports=function(t,e,n,a){var o=!n;n||(n={});for(var s=-1,u=e.length;++s<u;){var c=e[s],l=a?a(n[c],t[c],c,n,t):void 0;void 0===l&&(l=t[c]),o?i(n,c,l):r(n,c,l)}return n}},function(t,e,n){var r=n(201),i=n(16),a=Object.prototype,o=a.hasOwnProperty,s=a.propertyIsEnumerable,u=r(function(){return arguments}())?r:function(t){return i(t)&&o.call(t,"callee")&&!s.call(t,"callee")};t.exports=u},function(t,e,n){var r=n(203),i=n(54),a=n(73),o=a&&a.isTypedArray,s=o?i(o):r;t.exports=s},function(t,e,n){var r=n(36);t.exports=function(t){if("string"==typeof t||r(t))return t;var e=t+"";return"0"==e&&1/t==-1/0?"-0":e}},function(t,e,n){var r=n(10);t.exports=function(t,e){var n=t.append("foreignObject").attr("width","100000"),i=n.append("xhtml:div");i.attr("xmlns","http://www.w3.org/1999/xhtml");var a=e.label;switch(typeof a){case"function":i.insert(a);break;case"object":i.insert((function(){return a}));break;default:i.html(a)}r.applyStyle(i,e.labelStyle),i.style("display","inline-block"),i.style("white-space","nowrap");var o=i.node().getBoundingClientRect();return n.attr("width",o.width).attr("height",o.height),n}},function(t,e,n){"use strict";t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var n=function(t,e){var n=t[1]||"",r=t[3];if(!r)return n;if(e&&"function"==typeof btoa){var i=(o=r,"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(o))))+" */"),a=r.sources.map((function(t){return"/*# sourceURL="+r.sourceRoot+t+" */"}));return[n].concat(a).concat([i]).join("\n")}var o;return[n].join("\n")}(e,t);return e[2]?"@media "+e[2]+"{"+n+"}":n})).join("")},e.i=function(t,n){"string"==typeof t&&(t=[[null,t,""]]);for(var r={},i=0;i<this.length;i++){var a=this[i][0];null!=a&&(r[a]=!0)}for(i=0;i<t.length;i++){var o=t[i];null!=o[0]&&r[o[0]]||(n&&!o[2]?o[2]=n:n&&(o[2]="("+o[2]+") and ("+n+")"),e.push(o))}},e}},function(t,e,n){var r=n(47),i=n(175),a=n(176),o=n(177),s=n(178),u=n(179);function c(t){var e=this.__data__=new r(t);this.size=e.size}c.prototype.clear=i,c.prototype.delete=a,c.prototype.get=o,c.prototype.has=s,c.prototype.set=u,t.exports=c},function(t,e,n){var r=n(170),i=n(171),a=n(172),o=n(173),s=n(174);function u(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}u.prototype.clear=r,u.prototype.delete=i,u.prototype.get=a,u.prototype.has=o,u.prototype.set=s,t.exports=u},function(t,e,n){var r=n(30);t.exports=function(t,e){for(var n=t.length;n--;)if(r(t[n][0],e))return n;return-1}},function(t,e,n){var r=n(27)(Object,"create");t.exports=r},function(t,e,n){var r=n(195);t.exports=function(t,e){var n=t.__data__;return r(e)?n["string"==typeof e?"string":"hash"]:n.map}},function(t,e,n){var r=n(52),i=n(30),a=Object.prototype.hasOwnProperty;t.exports=function(t,e,n){var o=t[e];a.call(t,e)&&i(o,n)&&(void 0!==n||e in t)||r(t,e,n)}},function(t,e,n){var r=n(94);t.exports=function(t,e,n){"__proto__"==e&&r?r(t,e,{configurable:!0,enumerable:!0,value:n,writable:!0}):t[e]=n}},function(t,e){var n=/^(?:0|[1-9]\d*)$/;t.exports=function(t,e){var r=typeof t;return!!(e=null==e?9007199254740991:e)&&("number"==r||"symbol"!=r&&n.test(t))&&t>-1&&t%1==0&&t<e}},function(t,e){t.exports=function(t){return function(e){return t(e)}}},function(t,e){var n=Object.prototype;t.exports=function(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||n)}},function(t,e,n){var r=n(96)(Object.getPrototypeOf,Object);t.exports=r},function(t,e,n){var r=n(80),i=n(224)(r);t.exports=i},function(t,e,n){var r=n(4),i=n(84),a=n(238),o=n(118);t.exports=function(t,e){return r(t)?t:i(t,e)?[t]:a(o(t))}},function(t,e){t.exports=function(t,e){for(var n=-1,r=null==t?0:t.length,i=Array(r);++n<r;)i[n]=e(t[n],n,t);return i}},function(t,e,n){var r=n(29),i=n(126),a=n(127);t.exports=function(t,e){return a(i(t,e,r),t+"")}},function(t,e,n){var r=n(30),i=n(19),a=n(53),o=n(9);t.exports=function(t,e,n){if(!o(n))return!1;var s=typeof e;return!!("number"==s?i(n)&&a(e,n.length):"string"==s&&e in n)&&r(n[e],t)}},function(t,e,n){"use strict";var r=n(3);t.exports={longestPath:function(t){var e={};r.forEach(t.sources(),(function n(i){var a=t.node(i);if(r.has(e,i))return a.rank;e[i]=!0;var o=r.min(r.map(t.outEdges(i),(function(e){return n(e.w)-t.edge(e).minlen})));return o!==Number.POSITIVE_INFINITY&&null!=o||(o=0),a.rank=o}))},slack:function(t,e){return t.node(e.w).rank-t.node(e.v).rank-t.edge(e).minlen}}},function(t,e,n){"use strict";var r=/^(%20|\s)*(javascript|data)/im,i=/[^\x20-\x7E]/gim,a=/^([^:]+):/gm,o=[".","/"];t.exports={sanitizeUrl:function(t){if(!t)return"about:blank";var e,n,s=t.replace(i,"").trim();return function(t){return o.indexOf(t[0])>-1}(s)?s:(n=s.match(a))?(e=n[0],r.test(e)?"about:blank":s):"about:blank"}}},function(t,e,n){(function(t,r){var i=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[2,3],n=[1,7],r=[7,12,15,17,19,20,21],i=[7,11,12,15,17,19,20,21],a=[2,20],o=[1,32],s={trace:function(){},yy:{},symbols_:{error:2,start:3,GG:4,":":5,document:6,EOF:7,DIR:8,options:9,body:10,OPT:11,NL:12,line:13,statement:14,COMMIT:15,commit_arg:16,BRANCH:17,ID:18,CHECKOUT:19,MERGE:20,RESET:21,reset_arg:22,STR:23,HEAD:24,reset_parents:25,CARET:26,$accept:0,$end:1},terminals_:{2:"error",4:"GG",5:":",7:"EOF",8:"DIR",11:"OPT",12:"NL",15:"COMMIT",17:"BRANCH",18:"ID",19:"CHECKOUT",20:"MERGE",21:"RESET",23:"STR",24:"HEAD",26:"CARET"},productions_:[0,[3,4],[3,5],[6,0],[6,2],[9,2],[9,1],[10,0],[10,2],[13,2],[13,1],[14,2],[14,2],[14,2],[14,2],[14,2],[16,0],[16,1],[22,2],[22,2],[25,0],[25,2]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 1:return a[s-1];case 2:return r.setDirection(a[s-3]),a[s-1];case 4:r.setOptions(a[s-1]),this.$=a[s];break;case 5:a[s-1]+=a[s],this.$=a[s-1];break;case 7:this.$=[];break;case 8:a[s-1].push(a[s]),this.$=a[s-1];break;case 9:this.$=a[s-1];break;case 11:r.commit(a[s]);break;case 12:r.branch(a[s]);break;case 13:r.checkout(a[s]);break;case 14:r.merge(a[s]);break;case 15:r.reset(a[s]);break;case 16:this.$="";break;case 17:this.$=a[s];break;case 18:this.$=a[s-1]+":"+a[s];break;case 19:this.$=a[s-1]+":"+r.count,r.count=0;break;case 20:r.count=0;break;case 21:r.count+=1}},table:[{3:1,4:[1,2]},{1:[3]},{5:[1,3],8:[1,4]},{6:5,7:e,9:6,12:n},{5:[1,8]},{7:[1,9]},t(r,[2,7],{10:10,11:[1,11]}),t(i,[2,6]),{6:12,7:e,9:6,12:n},{1:[2,1]},{7:[2,4],12:[1,15],13:13,14:14,15:[1,16],17:[1,17],19:[1,18],20:[1,19],21:[1,20]},t(i,[2,5]),{7:[1,21]},t(r,[2,8]),{12:[1,22]},t(r,[2,10]),{12:[2,16],16:23,23:[1,24]},{18:[1,25]},{18:[1,26]},{18:[1,27]},{18:[1,30],22:28,24:[1,29]},{1:[2,2]},t(r,[2,9]),{12:[2,11]},{12:[2,17]},{12:[2,12]},{12:[2,13]},{12:[2,14]},{12:[2,15]},{12:a,25:31,26:o},{12:a,25:33,26:o},{12:[2,18]},{12:a,25:34,26:o},{12:[2,19]},{12:[2,21]}],defaultActions:{9:[2,1],21:[2,2],23:[2,11],24:[2,17],25:[2,12],26:[2,13],27:[2,14],28:[2,15],31:[2,18],33:[2,19],34:[2,21]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",u=0,c=0,l=0,f=2,h=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),y={yy:{}};for(var g in this.yy)Object.prototype.hasOwnProperty.call(this.yy,g)&&(y.yy[g]=this.yy[g]);p.setInput(t,y.yy),y.yy.lexer=p,y.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var m=p.yylloc;a.push(m);var v=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||h)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof y.yy.parseError?this.parseError=y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var x,_,w,k,E,A,T,S,M,O={};;){if(w=n[n.length-1],this.defaultActions[w]?k=this.defaultActions[w]:(null==x&&(x=b()),k=o[w]&&o[w][x]),void 0===k||!k.length||!k[0]){var N="";for(A in M=[],o[w])this.terminals_[A]&&A>f&&M.push("'"+this.terminals_[A]+"'");N=p.showPosition?"Parse error on line "+(u+1)+":\n"+p.showPosition()+"\nExpecting "+M.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(u+1)+": Unexpected "+(x==h?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(N,{text:p.match,token:this.terminals_[x]||x,line:p.yylineno,loc:m,expected:M})}if(k[0]instanceof Array&&k.length>1)throw new Error("Parse Error: multiple actions possible at state: "+w+", token: "+x);switch(k[0]){case 1:n.push(x),i.push(p.yytext),a.push(p.yylloc),n.push(k[1]),x=null,_?(x=_,_=null):(c=p.yyleng,s=p.yytext,u=p.yylineno,m=p.yylloc,l>0&&l--);break;case 2:if(T=this.productions_[k[1]][1],O.$=i[i.length-T],O._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},v&&(O._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(O,[s,c,u,y.yy,k[1],i,a].concat(d))))return E;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[k[1]][0]),i.push(O.$),a.push(O._$),S=o[n[n.length-2]][n[n.length-1]],n.push(S);break;case 3:return!0}}return!0}},u={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;a<i.length;a++)if((n=this._input.match(this.rules[i[a]]))&&(!e||n[0].length>e[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return 12;case 1:case 2:case 3:break;case 4:return 4;case 5:return 15;case 6:return 17;case 7:return 20;case 8:return 21;case 9:return 19;case 10:case 11:return 8;case 12:return 5;case 13:return 26;case 14:this.begin("options");break;case 15:this.popState();break;case 16:return 11;case 17:this.begin("string");break;case 18:this.popState();break;case 19:return 23;case 20:return 18;case 21:return 7}},rules:[/^(?:(\r?\n)+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:gitGraph\b)/i,/^(?:commit\b)/i,/^(?:branch\b)/i,/^(?:merge\b)/i,/^(?:reset\b)/i,/^(?:checkout\b)/i,/^(?:LR\b)/i,/^(?:BT\b)/i,/^(?::)/i,/^(?:\^)/i,/^(?:options\r?\n)/i,/^(?:end\r?\n)/i,/^(?:[^\n]+\r?\n)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[a-zA-Z][a-zA-Z0-9_]+)/i,/^(?:$)/i],conditions:{options:{rules:[15,16],inclusive:!1},string:{rules:[18,19],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,17,20,21],inclusive:!0}}};function c(){this.yy={}}return s.lexer=u,c.prototype=s,s.Parser=c,new c}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(14).readFileSync(n(15).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(11),n(6)(t))},function(t,e,n){(function(t,r){var i=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[6,9,10],n={trace:function(){},yy:{},symbols_:{error:2,start:3,info:4,document:5,EOF:6,line:7,statement:8,NL:9,showInfo:10,$accept:0,$end:1},terminals_:{2:"error",4:"info",6:"EOF",9:"NL",10:"showInfo"},productions_:[0,[3,3],[5,0],[5,2],[7,1],[7,1],[8,1]],performAction:function(t,e,n,r,i,a,o){a.length;switch(i){case 1:return r;case 4:break;case 6:r.setInfo(!0)}},table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:6,9:[1,7],10:[1,8]},{1:[2,1]},t(e,[2,3]),t(e,[2,4]),t(e,[2,5]),t(e,[2,6])],defaultActions:{4:[2,1]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",u=0,c=0,l=0,f=2,h=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),y={yy:{}};for(var g in this.yy)Object.prototype.hasOwnProperty.call(this.yy,g)&&(y.yy[g]=this.yy[g]);p.setInput(t,y.yy),y.yy.lexer=p,y.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var m=p.yylloc;a.push(m);var v=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||h)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof y.yy.parseError?this.parseError=y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var x,_,w,k,E,A,T,S,M,O={};;){if(w=n[n.length-1],this.defaultActions[w]?k=this.defaultActions[w]:(null==x&&(x=b()),k=o[w]&&o[w][x]),void 0===k||!k.length||!k[0]){var N="";for(A in M=[],o[w])this.terminals_[A]&&A>f&&M.push("'"+this.terminals_[A]+"'");N=p.showPosition?"Parse error on line "+(u+1)+":\n"+p.showPosition()+"\nExpecting "+M.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(u+1)+": Unexpected "+(x==h?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(N,{text:p.match,token:this.terminals_[x]||x,line:p.yylineno,loc:m,expected:M})}if(k[0]instanceof Array&&k.length>1)throw new Error("Parse Error: multiple actions possible at state: "+w+", token: "+x);switch(k[0]){case 1:n.push(x),i.push(p.yytext),a.push(p.yylloc),n.push(k[1]),x=null,_?(x=_,_=null):(c=p.yyleng,s=p.yytext,u=p.yylineno,m=p.yylloc,l>0&&l--);break;case 2:if(T=this.productions_[k[1]][1],O.$=i[i.length-T],O._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},v&&(O._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(O,[s,c,u,y.yy,k[1],i,a].concat(d))))return E;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[k[1]][0]),i.push(O.$),a.push(O._$),S=o[n[n.length-2]][n[n.length-1]],n.push(S);break;case 3:return!0}}return!0}},r={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;a<i.length;a++)if((n=this._input.match(this.rules[i[a]]))&&(!e||n[0].length>e[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return 4;case 1:return 9;case 2:return"space";case 3:return 10;case 4:return 6;case 5:return"TXT"}},rules:[/^(?:info\b)/i,/^(?:[\s\n\r]+)/i,/^(?:[\s]+)/i,/^(?:showInfo\b)/i,/^(?:$)/i,/^(?:.)/i],conditions:{INITIAL:{rules:[0,1,2,3,4,5],inclusive:!0}}};function i(){this.yy={}}return n.lexer=r,i.prototype=n,n.Parser=i,new i}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(14).readFileSync(n(15).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(11),n(6)(t))},function(t,e,n){(function(t,r){var i=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[6,9,10,12],n={trace:function(){},yy:{},symbols_:{error:2,start:3,pie:4,document:5,EOF:6,line:7,statement:8,NL:9,STR:10,VALUE:11,title:12,$accept:0,$end:1},terminals_:{2:"error",4:"pie",6:"EOF",9:"NL",10:"STR",11:"VALUE",12:"title"},productions_:[0,[3,3],[5,0],[5,2],[7,1],[7,1],[8,2],[8,1]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 4:break;case 6:r.addSection(a[s-1],r.cleanupValue(a[s]));break;case 7:r.setTitle(a[s].substr(6)),this.$=a[s].substr(6)}},table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:6,9:[1,7],10:[1,8],12:[1,9]},{1:[2,1]},t(e,[2,3]),t(e,[2,4]),t(e,[2,5]),{11:[1,10]},t(e,[2,7]),t(e,[2,6])],defaultActions:{4:[2,1]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",u=0,c=0,l=0,f=2,h=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),y={yy:{}};for(var g in this.yy)Object.prototype.hasOwnProperty.call(this.yy,g)&&(y.yy[g]=this.yy[g]);p.setInput(t,y.yy),y.yy.lexer=p,y.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var m=p.yylloc;a.push(m);var v=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||h)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof y.yy.parseError?this.parseError=y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var x,_,w,k,E,A,T,S,M,O={};;){if(w=n[n.length-1],this.defaultActions[w]?k=this.defaultActions[w]:(null==x&&(x=b()),k=o[w]&&o[w][x]),void 0===k||!k.length||!k[0]){var N="";for(A in M=[],o[w])this.terminals_[A]&&A>f&&M.push("'"+this.terminals_[A]+"'");N=p.showPosition?"Parse error on line "+(u+1)+":\n"+p.showPosition()+"\nExpecting "+M.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(u+1)+": Unexpected "+(x==h?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(N,{text:p.match,token:this.terminals_[x]||x,line:p.yylineno,loc:m,expected:M})}if(k[0]instanceof Array&&k.length>1)throw new Error("Parse Error: multiple actions possible at state: "+w+", token: "+x);switch(k[0]){case 1:n.push(x),i.push(p.yytext),a.push(p.yylloc),n.push(k[1]),x=null,_?(x=_,_=null):(c=p.yyleng,s=p.yytext,u=p.yylineno,m=p.yylloc,l>0&&l--);break;case 2:if(T=this.productions_[k[1]][1],O.$=i[i.length-T],O._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},v&&(O._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(O,[s,c,u,y.yy,k[1],i,a].concat(d))))return E;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[k[1]][0]),i.push(O.$),a.push(O._$),S=o[n[n.length-2]][n[n.length-1]],n.push(S);break;case 3:return!0}}return!0}},r={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;a<i.length;a++)if((n=this._input.match(this.rules[i[a]]))&&(!e||n[0].length>e[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:case 1:break;case 2:return 4;case 3:return 9;case 4:return"space";case 5:return 12;case 6:this.begin("string");break;case 7:this.popState();break;case 8:return"STR";case 9:return"VALUE";case 10:return 6}},rules:[/^(?:%%[^\n]*)/i,/^(?:\s+)/i,/^(?:pie\b)/i,/^(?:[\s\n\r]+)/i,/^(?:[\s]+)/i,/^(?:title\s[^#\n;]+)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?::[\s]*[\d]+(?:\.[\d]+)?)/i,/^(?:$)/i],conditions:{string:{rules:[7,8],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,9,10],inclusive:!0}}};function i(){this.yy={}}return n.lexer=r,i.prototype=n,n.Parser=i,new i}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(14).readFileSync(n(15).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(11),n(6)(t))},function(t,e,n){(function(t,r){var i=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[6,12],n=[1,7],r=[1,10],i=[1,11],a=[1,12],o=[1,13],s=[12,19,20],u=[15,16,17,18],c={trace:function(){},yy:{},symbols_:{error:2,start:3,ER_DIAGRAM:4,document:5,EOF:6,statement:7,entityName:8,relSpec:9,":":10,role:11,ALPHANUM:12,cardinality:13,relType:14,ZERO_OR_ONE:15,ZERO_OR_MORE:16,ONE_OR_MORE:17,ONLY_ONE:18,NON_IDENTIFYING:19,IDENTIFYING:20,STR:21,$accept:0,$end:1},terminals_:{2:"error",4:"ER_DIAGRAM",6:"EOF",10:":",12:"ALPHANUM",15:"ZERO_OR_ONE",16:"ZERO_OR_MORE",17:"ONE_OR_MORE",18:"ONLY_ONE",19:"NON_IDENTIFYING",20:"IDENTIFYING",21:"STR"},productions_:[0,[3,3],[5,0],[5,2],[7,5],[8,1],[9,3],[13,1],[13,1],[13,1],[13,1],[14,1],[14,1],[11,1],[11,1]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 1:break;case 4:r.addEntity(a[s-4]),r.addEntity(a[s-2]),r.addRelationship(a[s-4],a[s],a[s-2],a[s-3]);break;case 5:this.$=a[s];break;case 6:this.$={cardA:a[s],relType:a[s-1],cardB:a[s-2]};break;case 7:this.$=r.Cardinality.ZERO_OR_ONE;break;case 8:this.$=r.Cardinality.ZERO_OR_MORE;break;case 9:this.$=r.Cardinality.ONE_OR_MORE;break;case 10:this.$=r.Cardinality.ONLY_ONE;break;case 11:this.$=r.Identification.NON_IDENTIFYING;break;case 12:this.$=r.Identification.IDENTIFYING;break;case 13:case 14:this.$=a[s]}},table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:6,12:n},{1:[2,1]},t(e,[2,3]),{9:8,13:9,15:r,16:i,17:a,18:o},t([10,15,16,17,18],[2,5]),{8:14,12:n},{14:15,19:[1,16],20:[1,17]},t(s,[2,7]),t(s,[2,8]),t(s,[2,9]),t(s,[2,10]),{10:[1,18]},{13:19,15:r,16:i,17:a,18:o},t(u,[2,11]),t(u,[2,12]),{11:20,12:[1,22],21:[1,21]},{12:[2,6]},t(e,[2,4]),t(e,[2,13]),t(e,[2,14])],defaultActions:{4:[2,1],19:[2,6]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",u=0,c=0,l=0,f=2,h=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),y={yy:{}};for(var g in this.yy)Object.prototype.hasOwnProperty.call(this.yy,g)&&(y.yy[g]=this.yy[g]);p.setInput(t,y.yy),y.yy.lexer=p,y.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var m=p.yylloc;a.push(m);var v=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||h)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof y.yy.parseError?this.parseError=y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var x,_,w,k,E,A,T,S,M,O={};;){if(w=n[n.length-1],this.defaultActions[w]?k=this.defaultActions[w]:(null==x&&(x=b()),k=o[w]&&o[w][x]),void 0===k||!k.length||!k[0]){var N="";for(A in M=[],o[w])this.terminals_[A]&&A>f&&M.push("'"+this.terminals_[A]+"'");N=p.showPosition?"Parse error on line "+(u+1)+":\n"+p.showPosition()+"\nExpecting "+M.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(u+1)+": Unexpected "+(x==h?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(N,{text:p.match,token:this.terminals_[x]||x,line:p.yylineno,loc:m,expected:M})}if(k[0]instanceof Array&&k.length>1)throw new Error("Parse Error: multiple actions possible at state: "+w+", token: "+x);switch(k[0]){case 1:n.push(x),i.push(p.yytext),a.push(p.yylloc),n.push(k[1]),x=null,_?(x=_,_=null):(c=p.yyleng,s=p.yytext,u=p.yylineno,m=p.yylloc,l>0&&l--);break;case 2:if(T=this.productions_[k[1]][1],O.$=i[i.length-T],O._$={first_line:a[a.length-(T||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(T||1)].first_column,last_column:a[a.length-1].last_column},v&&(O._$.range=[a[a.length-(T||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(O,[s,c,u,y.yy,k[1],i,a].concat(d))))return E;T&&(n=n.slice(0,-1*T*2),i=i.slice(0,-1*T),a=a.slice(0,-1*T)),n.push(this.productions_[k[1]][0]),i.push(O.$),a.push(O._$),S=o[n[n.length-2]][n[n.length-1]],n.push(S);break;case 3:return!0}}return!0}},l={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;a<i.length;a++)if((n=this._input.match(this.rules[i[a]]))&&(!e||n[0].length>e[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:break;case 1:return"SPACE";case 2:this.begin("string");break;case 3:this.popState();break;case 4:return 21;case 5:return 4;case 6:return 15;case 7:return 16;case 8:return 17;case 9:return 18;case 10:return 15;case 11:return 16;case 12:return 17;case 13:return 19;case 14:return 20;case 15:case 16:return 19;case 17:return 12;case 18:return e.yytext[0];case 19:return 6}},rules:[/^(?:\s+)/i,/^(?:[\s]+)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:erDiagram\b)/i,/^(?:\|o\b)/i,/^(?:\}o\b)/i,/^(?:\}\|)/i,/^(?:\|\|)/i,/^(?:o\|)/i,/^(?:o\{)/i,/^(?:\|\{)/i,/^(?:\.\.)/i,/^(?:--)/i,/^(?:\.-)/i,/^(?:-\.)/i,/^(?:[A-Za-z][A-Za-z0-9\-]*)/i,/^(?:.)/i,/^(?:$)/i],conditions:{string:{rules:[3,4],inclusive:!1},INITIAL:{rules:[0,1,2,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19],inclusive:!0}}};function f(){this.yy={}}return c.lexer=l,f.prototype=c,c.Parser=f,new f}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(14).readFileSync(n(15).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(11),n(6)(t))},function(t,e,n){"use strict";var r=n(8);t.exports=i;function i(t){this._isDirected=!r.has(t,"directed")||t.directed,this._isMultigraph=!!r.has(t,"multigraph")&&t.multigraph,this._isCompound=!!r.has(t,"compound")&&t.compound,this._label=void 0,this._defaultNodeLabelFn=r.constant(void 0),this._defaultEdgeLabelFn=r.constant(void 0),this._nodes={},this._isCompound&&(this._parent={},this._children={},this._children["\0"]={}),this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={}}function a(t,e){t[e]?t[e]++:t[e]=1}function o(t,e){--t[e]||delete t[e]}function s(t,e,n,i){var a=""+e,o=""+n;if(!t&&a>o){var s=a;a=o,o=s}return a+""+o+""+(r.isUndefined(i)?"\0":i)}function u(t,e,n,r){var i=""+e,a=""+n;if(!t&&i>a){var o=i;i=a,a=o}var s={v:i,w:a};return r&&(s.name=r),s}function c(t,e){return s(t,e.v,e.w,e.name)}i.prototype._nodeCount=0,i.prototype._edgeCount=0,i.prototype.isDirected=function(){return this._isDirected},i.prototype.isMultigraph=function(){return this._isMultigraph},i.prototype.isCompound=function(){return this._isCompound},i.prototype.setGraph=function(t){return this._label=t,this},i.prototype.graph=function(){return this._label},i.prototype.setDefaultNodeLabel=function(t){return r.isFunction(t)||(t=r.constant(t)),this._defaultNodeLabelFn=t,this},i.prototype.nodeCount=function(){return this._nodeCount},i.prototype.nodes=function(){return r.keys(this._nodes)},i.prototype.sources=function(){var t=this;return r.filter(this.nodes(),(function(e){return r.isEmpty(t._in[e])}))},i.prototype.sinks=function(){var t=this;return r.filter(this.nodes(),(function(e){return r.isEmpty(t._out[e])}))},i.prototype.setNodes=function(t,e){var n=arguments,i=this;return r.each(t,(function(t){n.length>1?i.setNode(t,e):i.setNode(t)})),this},i.prototype.setNode=function(t,e){return r.has(this._nodes,t)?(arguments.length>1&&(this._nodes[t]=e),this):(this._nodes[t]=arguments.length>1?e:this._defaultNodeLabelFn(t),this._isCompound&&(this._parent[t]="\0",this._children[t]={},this._children["\0"][t]=!0),this._in[t]={},this._preds[t]={},this._out[t]={},this._sucs[t]={},++this._nodeCount,this)},i.prototype.node=function(t){return this._nodes[t]},i.prototype.hasNode=function(t){return r.has(this._nodes,t)},i.prototype.removeNode=function(t){var e=this;if(r.has(this._nodes,t)){var n=function(t){e.removeEdge(e._edgeObjs[t])};delete this._nodes[t],this._isCompound&&(this._removeFromParentsChildList(t),delete this._parent[t],r.each(this.children(t),(function(t){e.setParent(t)})),delete this._children[t]),r.each(r.keys(this._in[t]),n),delete this._in[t],delete this._preds[t],r.each(r.keys(this._out[t]),n),delete this._out[t],delete this._sucs[t],--this._nodeCount}return this},i.prototype.setParent=function(t,e){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(r.isUndefined(e))e="\0";else{for(var n=e+="";!r.isUndefined(n);n=this.parent(n))if(n===t)throw new Error("Setting "+e+" as parent of "+t+" would create a cycle");this.setNode(e)}return this.setNode(t),this._removeFromParentsChildList(t),this._parent[t]=e,this._children[e][t]=!0,this},i.prototype._removeFromParentsChildList=function(t){delete this._children[this._parent[t]][t]},i.prototype.parent=function(t){if(this._isCompound){var e=this._parent[t];if("\0"!==e)return e}},i.prototype.children=function(t){if(r.isUndefined(t)&&(t="\0"),this._isCompound){var e=this._children[t];if(e)return r.keys(e)}else{if("\0"===t)return this.nodes();if(this.hasNode(t))return[]}},i.prototype.predecessors=function(t){var e=this._preds[t];if(e)return r.keys(e)},i.prototype.successors=function(t){var e=this._sucs[t];if(e)return r.keys(e)},i.prototype.neighbors=function(t){var e=this.predecessors(t);if(e)return r.union(e,this.successors(t))},i.prototype.isLeaf=function(t){return 0===(this.isDirected()?this.successors(t):this.neighbors(t)).length},i.prototype.filterNodes=function(t){var e=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});e.setGraph(this.graph());var n=this;r.each(this._nodes,(function(n,r){t(r)&&e.setNode(r,n)})),r.each(this._edgeObjs,(function(t){e.hasNode(t.v)&&e.hasNode(t.w)&&e.setEdge(t,n.edge(t))}));var i={};return this._isCompound&&r.each(e.nodes(),(function(t){e.setParent(t,function t(r){var a=n.parent(r);return void 0===a||e.hasNode(a)?(i[r]=a,a):a in i?i[a]:t(a)}(t))})),e},i.prototype.setDefaultEdgeLabel=function(t){return r.isFunction(t)||(t=r.constant(t)),this._defaultEdgeLabelFn=t,this},i.prototype.edgeCount=function(){return this._edgeCount},i.prototype.edges=function(){return r.values(this._edgeObjs)},i.prototype.setPath=function(t,e){var n=this,i=arguments;return r.reduce(t,(function(t,r){return i.length>1?n.setEdge(t,r,e):n.setEdge(t,r),r})),this},i.prototype.setEdge=function(){var t,e,n,i,o=!1,c=arguments[0];"object"==typeof c&&null!==c&&"v"in c?(t=c.v,e=c.w,n=c.name,2===arguments.length&&(i=arguments[1],o=!0)):(t=c,e=arguments[1],n=arguments[3],arguments.length>2&&(i=arguments[2],o=!0)),t=""+t,e=""+e,r.isUndefined(n)||(n=""+n);var l=s(this._isDirected,t,e,n);if(r.has(this._edgeLabels,l))return o&&(this._edgeLabels[l]=i),this;if(!r.isUndefined(n)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(t),this.setNode(e),this._edgeLabels[l]=o?i:this._defaultEdgeLabelFn(t,e,n);var f=u(this._isDirected,t,e,n);return t=f.v,e=f.w,Object.freeze(f),this._edgeObjs[l]=f,a(this._preds[e],t),a(this._sucs[t],e),this._in[e][l]=f,this._out[t][l]=f,this._edgeCount++,this},i.prototype.edge=function(t,e,n){var r=1===arguments.length?c(this._isDirected,arguments[0]):s(this._isDirected,t,e,n);return this._edgeLabels[r]},i.prototype.hasEdge=function(t,e,n){var i=1===arguments.length?c(this._isDirected,arguments[0]):s(this._isDirected,t,e,n);return r.has(this._edgeLabels,i)},i.prototype.removeEdge=function(t,e,n){var r=1===arguments.length?c(this._isDirected,arguments[0]):s(this._isDirected,t,e,n),i=this._edgeObjs[r];return i&&(t=i.v,e=i.w,delete this._edgeLabels[r],delete this._edgeObjs[r],o(this._preds[e],t),o(this._sucs[t],e),delete this._in[e][r],delete this._out[t][r],this._edgeCount--),this},i.prototype.inEdges=function(t,e){var n=this._in[t];if(n){var i=r.values(n);return e?r.filter(i,(function(t){return t.v===e})):i}},i.prototype.outEdges=function(t,e){var n=this._out[t];if(n){var i=r.values(n);return e?r.filter(i,(function(t){return t.w===e})):i}},i.prototype.nodeEdges=function(t,e){var n=this.inEdges(t,e);if(n)return n.concat(this.outEdges(t,e))}},function(t,e,n){var r=n(27)(n(12),"Map");t.exports=r},function(t,e,n){var r=n(187),i=n(194),a=n(196),o=n(197),s=n(198);function u(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}u.prototype.clear=r,u.prototype.delete=i,u.prototype.get=a,u.prototype.has=o,u.prototype.set=s,t.exports=u},function(t,e){t.exports=function(t,e){for(var n=-1,r=null==t?0:t.length;++n<r&&!1!==e(t[n],n,t););return t}},function(t,e){t.exports=function(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=9007199254740991}},function(t,e,n){(function(t){var r=n(92),i=e&&!e.nodeType&&e,a=i&&"object"==typeof t&&t&&!t.nodeType&&t,o=a&&a.exports===i&&r.process,s=function(){try{var t=a&&a.require&&a.require("util").types;return t||o&&o.binding&&o.binding("util")}catch(t){}}();t.exports=s}).call(this,n(6)(t))},function(t,e,n){var r=n(55),i=n(204),a=Object.prototype.hasOwnProperty;t.exports=function(t){if(!r(t))return i(t);var e=[];for(var n in Object(t))a.call(t,n)&&"constructor"!=n&&e.push(n);return e}},function(t,e,n){var r=n(99),i=n(100),a=Object.prototype.propertyIsEnumerable,o=Object.getOwnPropertySymbols,s=o?function(t){return null==t?[]:(t=Object(t),r(o(t),(function(e){return a.call(t,e)})))}:i;t.exports=s},function(t,e){t.exports=function(t,e){for(var n=-1,r=e.length,i=t.length;++n<r;)t[i+n]=e[n];return t}},function(t,e,n){var r=n(105);t.exports=function(t){var e=new t.constructor(t.byteLength);return new r(e).set(new r(t)),e}},function(t,e){t.exports=function(t){return function(){return t}}},function(t,e,n){t.exports=n(109)},function(t,e,n){var r=n(81),i=n(25);t.exports=function(t,e){return t&&r(t,e,i)}},function(t,e,n){var r=n(223)();t.exports=r},function(t,e){t.exports=function(t){var e=-1,n=Array(t.size);return t.forEach((function(t){n[++e]=t})),n}},function(t,e,n){var r=n(58),i=n(43);t.exports=function(t,e){for(var n=0,a=(e=r(e,t)).length;null!=t&&n<a;)t=t[i(e[n++])];return n&&n==a?t:void 0}},function(t,e,n){var r=n(4),i=n(36),a=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,o=/^\w*$/;t.exports=function(t,e){if(r(t))return!1;var n=typeof t;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=t&&!i(t))||(o.test(t)||!a.test(t)||null!=e&&t in Object(e))}},function(t,e,n){var r=n(245),i=n(120);t.exports=function(t,e){return null!=t&&i(t,e,r)}},function(t,e,n){var r=n(76),i=n(257);t.exports=function t(e,n,a,o,s){var u=-1,c=e.length;for(a||(a=i),s||(s=[]);++u<c;){var l=e[u];n>0&&a(l)?n>1?t(l,n-1,a,o,s):r(s,l):o||(s[s.length]=l)}return s}},function(t,e,n){var r=n(36);t.exports=function(t,e,n){for(var i=-1,a=t.length;++i<a;){var o=t[i],s=e(o);if(null!=s&&(void 0===u?s==s&&!r(s):n(s,u)))var u=s,c=o}return c}},function(t,e){t.exports=function(t,e,n,r){var i=t.x,a=t.y,o=i-r.x,s=a-r.y,u=Math.sqrt(e*e*s*s+n*n*o*o),c=Math.abs(e*n*o/u);r.x<i&&(c=-c);var l=Math.abs(e*n*s/u);r.y<a&&(l=-l);return{x:i+c,y:a+l}}},function(t,e,n){var r=n(342),i=n(44),a=n(343);t.exports=function(t,e,n){var o=e.label,s=t.append("g");"svg"===e.labelType?a(s,e):"string"!=typeof o||"html"===e.labelType?i(s,e):r(s,e);var u,c=s.node().getBBox();switch(n){case"top":u=-e.height/2;break;case"bottom":u=e.height/2-c.height;break;default:u=-c.height/2}return s.attr("transform","translate("+-c.width/2+","+u+")"),s}},function(t,e){},function(t,e,n){var r=n(46),i=n(71),a=n(51),o=n(199),s=n(205),u=n(97),c=n(98),l=n(208),f=n(209),h=n(102),d=n(210),p=n(35),y=n(214),g=n(215),m=n(107),v=n(4),b=n(33),x=n(219),_=n(9),w=n(221),k=n(25),E={};E["[object Arguments]"]=E["[object Array]"]=E["[object ArrayBuffer]"]=E["[object DataView]"]=E["[object Boolean]"]=E["[object Date]"]=E["[object Float32Array]"]=E["[object Float64Array]"]=E["[object Int8Array]"]=E["[object Int16Array]"]=E["[object Int32Array]"]=E["[object Map]"]=E["[object Number]"]=E["[object Object]"]=E["[object RegExp]"]=E["[object Set]"]=E["[object String]"]=E["[object Symbol]"]=E["[object Uint8Array]"]=E["[object Uint8ClampedArray]"]=E["[object Uint16Array]"]=E["[object Uint32Array]"]=!0,E["[object Error]"]=E["[object Function]"]=E["[object WeakMap]"]=!1,t.exports=function t(e,n,A,T,S,M){var O,N=1&n,C=2&n,D=4&n;if(A&&(O=S?A(e,T,S,M):A(e)),void 0!==O)return O;if(!_(e))return e;var L=v(e);if(L){if(O=y(e),!N)return c(e,O)}else{var F=p(e),I="[object Function]"==F||"[object GeneratorFunction]"==F;if(b(e))return u(e,N);if("[object Object]"==F||"[object Arguments]"==F||I&&!S){if(O=C||I?{}:m(e),!N)return C?f(e,s(O,e)):l(e,o(O,e))}else{if(!E[F])return S?e:{};O=g(e,F,N)}}M||(M=new r);var P=M.get(e);if(P)return P;M.set(e,O),w(e)?e.forEach((function(r){O.add(t(r,n,A,r,e,M))})):x(e)&&e.forEach((function(r,i){O.set(i,t(r,n,A,i,e,M))}));var R=D?C?d:h:C?keysIn:k,B=L?void 0:R(e);return i(B||e,(function(r,i){B&&(r=e[i=r]),a(O,i,t(r,n,A,i,e,M))})),O}},function(t,e,n){(function(e){var n="object"==typeof e&&e&&e.Object===Object&&e;t.exports=n}).call(this,n(181))},function(t,e){var n=Function.prototype.toString;t.exports=function(t){if(null!=t){try{return n.call(t)}catch(t){}try{return t+""}catch(t){}}return""}},function(t,e,n){var r=n(27),i=function(){try{var t=r(Object,"defineProperty");return t({},"",{}),t}catch(t){}}();t.exports=i},function(t,e,n){var r=n(200),i=n(41),a=n(4),o=n(33),s=n(53),u=n(42),c=Object.prototype.hasOwnProperty;t.exports=function(t,e){var n=a(t),l=!n&&i(t),f=!n&&!l&&o(t),h=!n&&!l&&!f&&u(t),d=n||l||f||h,p=d?r(t.length,String):[],y=p.length;for(var g in t)!e&&!c.call(t,g)||d&&("length"==g||f&&("offset"==g||"parent"==g)||h&&("buffer"==g||"byteLength"==g||"byteOffset"==g)||s(g,y))||p.push(g);return p}},function(t,e){t.exports=function(t,e){return function(n){return t(e(n))}}},function(t,e,n){(function(t){var r=n(12),i=e&&!e.nodeType&&e,a=i&&"object"==typeof t&&t&&!t.nodeType&&t,o=a&&a.exports===i?r.Buffer:void 0,s=o?o.allocUnsafe:void 0;t.exports=function(t,e){if(e)return t.slice();var n=t.length,r=s?s(n):new t.constructor(n);return t.copy(r),r}}).call(this,n(6)(t))},function(t,e){t.exports=function(t,e){var n=-1,r=t.length;for(e||(e=Array(r));++n<r;)e[n]=t[n];return e}},function(t,e){t.exports=function(t,e){for(var n=-1,r=null==t?0:t.length,i=0,a=[];++n<r;){var o=t[n];e(o,n,t)&&(a[i++]=o)}return a}},function(t,e){t.exports=function(){return[]}},function(t,e,n){var r=n(76),i=n(56),a=n(75),o=n(100),s=Object.getOwnPropertySymbols?function(t){for(var e=[];t;)r(e,a(t)),t=i(t);return e}:o;t.exports=s},function(t,e,n){var r=n(103),i=n(75),a=n(25);t.exports=function(t){return r(t,a,i)}},function(t,e,n){var r=n(76),i=n(4);t.exports=function(t,e,n){var a=e(t);return i(t)?a:r(a,n(t))}},function(t,e,n){var r=n(27)(n(12),"Set");t.exports=r},function(t,e,n){var r=n(12).Uint8Array;t.exports=r},function(t,e,n){var r=n(77);t.exports=function(t,e){var n=e?r(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.length)}},function(t,e,n){var r=n(108),i=n(56),a=n(55);t.exports=function(t){return"function"!=typeof t.constructor||a(t)?{}:r(i(t))}},function(t,e,n){var r=n(9),i=Object.create,a=function(){function t(){}return function(e){if(!r(e))return{};if(i)return i(e);t.prototype=e;var n=new t;return t.prototype=void 0,n}}();t.exports=a},function(t,e,n){var r=n(71),i=n(57),a=n(110),o=n(4);t.exports=function(t,e){return(o(t)?r:i)(t,a(e))}},function(t,e,n){var r=n(29);t.exports=function(t){return"function"==typeof t?t:r}},function(t,e,n){var r=n(99),i=n(225),a=n(20),o=n(4);t.exports=function(t,e){return(o(t)?r:i)(t,a(e,3))}},function(t,e,n){var r=n(228),i=n(16);t.exports=function t(e,n,a,o,s){return e===n||(null==e||null==n||!i(e)&&!i(n)?e!=e&&n!=n:r(e,n,a,o,t,s))}},function(t,e,n){var r=n(114),i=n(231),a=n(115);t.exports=function(t,e,n,o,s,u){var c=1&n,l=t.length,f=e.length;if(l!=f&&!(c&&f>l))return!1;var h=u.get(t);if(h&&u.get(e))return h==e;var d=-1,p=!0,y=2&n?new r:void 0;for(u.set(t,e),u.set(e,t);++d<l;){var g=t[d],m=e[d];if(o)var v=c?o(m,g,d,e,t,u):o(g,m,d,t,e,u);if(void 0!==v){if(v)continue;p=!1;break}if(y){if(!i(e,(function(t,e){if(!a(y,e)&&(g===t||s(g,t,n,o,u)))return y.push(e)}))){p=!1;break}}else if(g!==m&&!s(g,m,n,o,u)){p=!1;break}}return u.delete(t),u.delete(e),p}},function(t,e,n){var r=n(70),i=n(229),a=n(230);function o(t){var e=-1,n=null==t?0:t.length;for(this.__data__=new r;++e<n;)this.add(t[e])}o.prototype.add=o.prototype.push=i,o.prototype.has=a,t.exports=o},function(t,e){t.exports=function(t,e){return t.has(e)}},function(t,e,n){var r=n(9);t.exports=function(t){return t==t&&!r(t)}},function(t,e){t.exports=function(t,e){return function(n){return null!=n&&(n[t]===e&&(void 0!==e||t in Object(n)))}}},function(t,e,n){var r=n(241);t.exports=function(t){return null==t?"":r(t)}},function(t,e,n){var r=n(242),i=n(120);t.exports=function(t,e){return null!=t&&i(t,e,r)}},function(t,e,n){var r=n(58),i=n(41),a=n(4),o=n(53),s=n(72),u=n(43);t.exports=function(t,e,n){for(var c=-1,l=(e=r(e,t)).length,f=!1;++c<l;){var h=u(e[c]);if(!(f=null!=t&&n(t,h)))break;t=t[h]}return f||++c!=l?f:!!(l=null==t?0:t.length)&&s(l)&&o(h,l)&&(a(t)||i(t))}},function(t,e){t.exports=function(t){return function(e){return null==e?void 0:e[t]}}},function(t,e){t.exports=function(t){return void 0===t}},function(t,e,n){var r=n(59),i=n(20),a=n(124),o=n(4);t.exports=function(t,e){return(o(t)?r:a)(t,i(e,3))}},function(t,e,n){var r=n(57),i=n(19);t.exports=function(t,e){var n=-1,a=i(t)?Array(t.length):[];return r(t,(function(t,r,i){a[++n]=e(t,r,i)})),a}},function(t,e,n){var r=n(247),i=n(57),a=n(20),o=n(248),s=n(4);t.exports=function(t,e,n){var u=s(t)?r:o,c=arguments.length<3;return u(t,a(e,4),n,c,i)}},function(t,e,n){var r=n(258),i=Math.max;t.exports=function(t,e,n){return e=i(void 0===e?t.length-1:e,0),function(){for(var a=arguments,o=-1,s=i(a.length-e,0),u=Array(s);++o<s;)u[o]=a[e+o];o=-1;for(var c=Array(e+1);++o<e;)c[o]=a[o];return c[e]=n(u),r(t,this,c)}}},function(t,e,n){var r=n(259),i=n(260)(r);t.exports=i},function(t,e){t.exports=function(t,e,n,r){for(var i=t.length,a=n+(r?1:-1);r?a--:++a<i;)if(e(t[a],a,t))return a;return-1}},function(t,e,n){var r=n(19),i=n(16);t.exports=function(t){return i(t)&&r(t)}},function(t,e,n){var r=n(269),i=n(25);t.exports=function(t){return null==t?[]:r(t,i(t))}},function(t,e,n){var r=n(8),i=n(132);t.exports=function(t,e,n,r){return function(t,e,n,r){var a,o,s={},u=new i,c=function(t){var e=t.v!==a?t.v:t.w,r=s[e],i=n(t),c=o.distance+i;if(i<0)throw new Error("dijkstra does not allow negative edge weights. Bad edge: "+t+" Weight: "+i);c<r.distance&&(r.distance=c,r.predecessor=a,u.decrease(e,c))};t.nodes().forEach((function(t){var n=t===e?0:Number.POSITIVE_INFINITY;s[t]={distance:n},u.add(t,n)}));for(;u.size()>0&&(a=u.removeMin(),(o=s[a]).distance!==Number.POSITIVE_INFINITY);)r(a).forEach(c);return s}(t,String(e),n||a,r||function(e){return t.outEdges(e)})};var a=r.constant(1)},function(t,e,n){var r=n(8);function i(){this._arr=[],this._keyIndices={}}t.exports=i,i.prototype.size=function(){return this._arr.length},i.prototype.keys=function(){return this._arr.map((function(t){return t.key}))},i.prototype.has=function(t){return r.has(this._keyIndices,t)},i.prototype.priority=function(t){var e=this._keyIndices[t];if(void 0!==e)return this._arr[e].priority},i.prototype.min=function(){if(0===this.size())throw new Error("Queue underflow");return this._arr[0].key},i.prototype.add=function(t,e){var n=this._keyIndices;if(t=String(t),!r.has(n,t)){var i=this._arr,a=i.length;return n[t]=a,i.push({key:t,priority:e}),this._decrease(a),!0}return!1},i.prototype.removeMin=function(){this._swap(0,this._arr.length-1);var t=this._arr.pop();return delete this._keyIndices[t.key],this._heapify(0),t.key},i.prototype.decrease=function(t,e){var n=this._keyIndices[t];if(e>this._arr[n].priority)throw new Error("New priority is greater than current priority. Key: "+t+" Old: "+this._arr[n].priority+" New: "+e);this._arr[n].priority=e,this._decrease(n)},i.prototype._heapify=function(t){var e=this._arr,n=2*t,r=n+1,i=t;n<e.length&&(i=e[n].priority<e[i].priority?n:i,r<e.length&&(i=e[r].priority<e[i].priority?r:i),i!==t&&(this._swap(t,i),this._heapify(i)))},i.prototype._decrease=function(t){for(var e,n=this._arr,r=n[t].priority;0!==t&&!(n[e=t>>1].priority<r);)this._swap(t,e),t=e},i.prototype._swap=function(t,e){var n=this._arr,r=this._keyIndices,i=n[t],a=n[e];n[t]=a,n[e]=i,r[a.key]=t,r[i.key]=e}},function(t,e,n){var r=n(8);t.exports=function(t){var e=0,n=[],i={},a=[];return t.nodes().forEach((function(o){r.has(i,o)||function o(s){var u=i[s]={onStack:!0,lowlink:e,index:e++};if(n.push(s),t.successors(s).forEach((function(t){r.has(i,t)?i[t].onStack&&(u.lowlink=Math.min(u.lowlink,i[t].index)):(o(t),u.lowlink=Math.min(u.lowlink,i[t].lowlink))})),u.lowlink===u.index){var c,l=[];do{c=n.pop(),i[c].onStack=!1,l.push(c)}while(s!==c);a.push(l)}}(o)})),a}},function(t,e,n){var r=n(8);function i(t){var e={},n={},i=[];if(r.each(t.sinks(),(function o(s){if(r.has(n,s))throw new a;r.has(e,s)||(n[s]=!0,e[s]=!0,r.each(t.predecessors(s),o),delete n[s],i.push(s))})),r.size(e)!==t.nodeCount())throw new a;return i}function a(){}t.exports=i,i.CycleException=a,a.prototype=new Error},function(t,e,n){var r=n(8);t.exports=function(t,e,n){r.isArray(e)||(e=[e]);var i=(t.isDirected()?t.successors:t.neighbors).bind(t),a=[],o={};return r.each(e,(function(e){if(!t.hasNode(e))throw new Error("Graph does not have node: "+e);!function t(e,n,i,a,o,s){r.has(a,n)||(a[n]=!0,i||s.push(n),r.each(o(n),(function(n){t(e,n,i,a,o,s)})),i&&s.push(n))}(t,e,"post"===n,o,i,a)})),a}},function(t,e,n){var r;try{r=n(21)}catch(t){}r||(r=window.dagre),t.exports=r},function(t,e,n){var r=n(60),i=n(30),a=n(61),o=n(34),s=Object.prototype,u=s.hasOwnProperty,c=r((function(t,e){t=Object(t);var n=-1,r=e.length,c=r>2?e[2]:void 0;for(c&&a(e[0],e[1],c)&&(r=1);++n<r;)for(var l=e[n],f=o(l),h=-1,d=f.length;++h<d;){var p=f[h],y=t[p];(void 0===y||i(y,s[p])&&!u.call(t,p))&&(t[p]=l[p])}return t}));t.exports=c},function(t,e,n){var r=n(288);t.exports=function(t){return t?(t=r(t))===1/0||t===-1/0?17976931348623157e292*(t<0?-1:1):t==t?t:0:0===t?t:0}},function(t,e,n){var r=n(86);t.exports=function(t){return(null==t?0:t.length)?r(t,1):[]}},function(t,e,n){var r=n(52),i=n(30);t.exports=function(t,e,n){(void 0===n||i(t[e],n))&&(void 0!==n||e in t)||r(t,e,n)}},function(t,e,n){var r=n(28),i=n(56),a=n(16),o=Function.prototype,s=Object.prototype,u=o.toString,c=s.hasOwnProperty,l=u.call(Object);t.exports=function(t){if(!a(t)||"[object Object]"!=r(t))return!1;var e=i(t);if(null===e)return!0;var n=c.call(e,"constructor")&&e.constructor;return"function"==typeof n&&n instanceof n&&u.call(n)==l}},function(t,e){t.exports=function(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]}},function(t,e){t.exports=function(t,e){return t<e}},function(t,e,n){var r=n(302),i=n(305)((function(t,e){return null==t?{}:r(t,e)}));t.exports=i},function(t,e,n){var r=n(306)();t.exports=r},function(t,e,n){var r=n(118),i=0;t.exports=function(t){var e=++i;return r(t)+e}},function(t,e,n){"use strict";var r=n(3),i=n(13).Graph,a=n(62).slack;function o(t,e){return r.forEach(t.nodes(),(function n(i){r.forEach(e.nodeEdges(i),(function(r){var o=r.v,s=i===o?r.w:o;t.hasNode(s)||a(e,r)||(t.setNode(s,{}),t.setEdge(i,s,{}),n(s))}))})),t.nodeCount()}function s(t,e){return r.minBy(e.edges(),(function(n){if(t.hasNode(n.v)!==t.hasNode(n.w))return a(e,n)}))}function u(t,e,n){r.forEach(t.nodes(),(function(t){e.node(t).rank+=n}))}t.exports=function(t){var e,n,r=new i({directed:!1}),c=t.nodes()[0],l=t.nodeCount();r.setNode(c,{});for(;o(r,t)<l;)e=s(r,t),n=r.hasNode(e.v)?a(t,e):-a(t,e),u(r,t,n);return r}},function(t,e){t.exports=function(t,e){return t.intersect(e)}},function(t,e,n){var r=n(88);t.exports=function(t,e,n){return r(t,e,e,n)}},function(t,e,n){var r=n(339);t.exports=function(t,e,n){var i=t.x,a=t.y,o=[],s=Number.POSITIVE_INFINITY,u=Number.POSITIVE_INFINITY;e.forEach((function(t){s=Math.min(s,t.x),u=Math.min(u,t.y)}));for(var c=i-t.width/2-s,l=a-t.height/2-u,f=0;f<e.length;f++){var h=e[f],d=e[f<e.length-1?f+1:0],p=r(t,n,{x:c+h.x,y:l+h.y},{x:c+d.x,y:l+d.y});p&&o.push(p)}if(!o.length)return console.log("NO INTERSECTION FOUND, RETURN NODE CENTER",t),t;o.length>1&&o.sort((function(t,e){var r=t.x-n.x,i=t.y-n.y,a=Math.sqrt(r*r+i*i),o=e.x-n.x,s=e.y-n.y,u=Math.sqrt(o*o+s*s);return a<u?-1:a===u?0:1}));return o[0]}},function(t,e){t.exports=function(t,e){var n,r,i=t.x,a=t.y,o=e.x-i,s=e.y-a,u=t.width/2,c=t.height/2;Math.abs(s)*u>Math.abs(o)*c?(s<0&&(c=-c),n=0===s?0:c*o/s,r=c):(o<0&&(u=-u),n=u,r=0===o?0:u*s/o);return{x:i+n,y:a+r}}},function(t,e,n){"use strict";var r=n(154),i=n(155),a=n(156);function o(t,e,n){if(!t)return t;if(!e)return t;"string"==typeof n&&(n={keyframes:n}),n||(n={keyframes:!1}),t=s(t,e+" $1$2");var i=e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&");t=(t=(t=(t=t.replace(new RegExp("("+i+")\\s*\\1(?=[\\s\\r\\n,{])","g"),"$1")).replace(new RegExp("("+i+")\\s*:host","g"),"$1")).replace(new RegExp("("+i+")\\s*@","g"),"@")).replace(new RegExp("("+i+")\\s*:root","g"),":root");for(var a,o=[],u=/@keyframes\s+([a-zA-Z0-9_-]+)\s*{/g;null!==(a=u.exec(t));)o.indexOf(a[1])<0&&o.push(a[1]);var c=r(e);return o.forEach((function(e){var r=(!0===n.keyframes?c+"-":"string"==typeof n.keyframes?n.keyframes:"")+e;t=(t=t.replace(new RegExp("(@keyframes\\s+)"+e+"(\\s*{)","g"),"$1"+r+"$2")).replace(new RegExp("(animation(?:-name)?\\s*:[^;]*\\s*)"+e+"([\\s;}])","g"),"$1"+r+"$2")})),t=t.replace(new RegExp("("+i+" )(\\s*(?:to|from|[+-]?(?:(?:\\.\\d+)|(?:\\d+(?:\\.\\d*)?))%))(?=[\\s\\r\\n,{])","g"),"$2")}function s(t,e){var n=[];return t=a(t),t=(t=i.replace(t,!0,n)).replace(/([^\r\n,{}]+)(,(?=[^}]*{)|\s*{)/g,e),t=i.paste(t,n)}t.exports=o,o.replace=s},function(t,e){t.exports=function(t,e){return t.intersect(e)}},function(t,e,n){var r;r=function(){var t=JSON.parse('{"$":"dollar","%":"percent","&":"and","<":"less",">":"greater","|":"or","¢":"cent","£":"pound","¤":"currency","¥":"yen","©":"(c)","ª":"a","®":"(r)","º":"o","À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","Æ":"AE","Ç":"C","È":"E","É":"E","Ê":"E","Ë":"E","Ì":"I","Í":"I","Î":"I","Ï":"I","Ð":"D","Ñ":"N","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","Ù":"U","Ú":"U","Û":"U","Ü":"U","Ý":"Y","Þ":"TH","ß":"ss","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","æ":"ae","ç":"c","è":"e","é":"e","ê":"e","ë":"e","ì":"i","í":"i","î":"i","ï":"i","ð":"d","ñ":"n","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","ù":"u","ú":"u","û":"u","ü":"u","ý":"y","þ":"th","ÿ":"y","Ā":"A","ā":"a","Ă":"A","ă":"a","Ą":"A","ą":"a","Ć":"C","ć":"c","Č":"C","č":"c","Ď":"D","ď":"d","Đ":"DJ","đ":"dj","Ē":"E","ē":"e","Ė":"E","ė":"e","Ę":"e","ę":"e","Ě":"E","ě":"e","Ğ":"G","ğ":"g","Ģ":"G","ģ":"g","Ĩ":"I","ĩ":"i","Ī":"i","ī":"i","Į":"I","į":"i","İ":"I","ı":"i","Ķ":"k","ķ":"k","Ļ":"L","ļ":"l","Ľ":"L","ľ":"l","Ł":"L","ł":"l","Ń":"N","ń":"n","Ņ":"N","ņ":"n","Ň":"N","ň":"n","Ő":"O","ő":"o","Œ":"OE","œ":"oe","Ŕ":"R","ŕ":"r","Ř":"R","ř":"r","Ś":"S","ś":"s","Ş":"S","ş":"s","Š":"S","š":"s","Ţ":"T","ţ":"t","Ť":"T","ť":"t","Ũ":"U","ũ":"u","Ū":"u","ū":"u","Ů":"U","ů":"u","Ű":"U","ű":"u","Ų":"U","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","ź":"z","Ż":"Z","ż":"z","Ž":"Z","ž":"z","ƒ":"f","Ơ":"O","ơ":"o","Ư":"U","ư":"u","Lj":"LJ","lj":"lj","Nj":"NJ","nj":"nj","Ș":"S","ș":"s","Ț":"T","ț":"t","˚":"o","Ά":"A","Έ":"E","Ή":"H","Ί":"I","Ό":"O","Ύ":"Y","Ώ":"W","ΐ":"i","Α":"A","Β":"B","Γ":"G","Δ":"D","Ε":"E","Ζ":"Z","Η":"H","Θ":"8","Ι":"I","Κ":"K","Λ":"L","Μ":"M","Ν":"N","Ξ":"3","Ο":"O","Π":"P","Ρ":"R","Σ":"S","Τ":"T","Υ":"Y","Φ":"F","Χ":"X","Ψ":"PS","Ω":"W","Ϊ":"I","Ϋ":"Y","ά":"a","έ":"e","ή":"h","ί":"i","ΰ":"y","α":"a","β":"b","γ":"g","δ":"d","ε":"e","ζ":"z","η":"h","θ":"8","ι":"i","κ":"k","λ":"l","μ":"m","ν":"n","ξ":"3","ο":"o","π":"p","ρ":"r","ς":"s","σ":"s","τ":"t","υ":"y","φ":"f","χ":"x","ψ":"ps","ω":"w","ϊ":"i","ϋ":"y","ό":"o","ύ":"y","ώ":"w","Ё":"Yo","Ђ":"DJ","Є":"Ye","І":"I","Ї":"Yi","Ј":"J","Љ":"LJ","Њ":"NJ","Ћ":"C","Џ":"DZ","А":"A","Б":"B","В":"V","Г":"G","Д":"D","Е":"E","Ж":"Zh","З":"Z","И":"I","Й":"J","К":"K","Л":"L","М":"M","Н":"N","О":"O","П":"P","Р":"R","С":"S","Т":"T","У":"U","Ф":"F","Х":"H","Ц":"C","Ч":"Ch","Ш":"Sh","Щ":"Sh","Ъ":"U","Ы":"Y","Ь":"","Э":"E","Ю":"Yu","Я":"Ya","а":"a","б":"b","в":"v","г":"g","д":"d","е":"e","ж":"zh","з":"z","и":"i","й":"j","к":"k","л":"l","м":"m","н":"n","о":"o","п":"p","р":"r","с":"s","т":"t","у":"u","ф":"f","х":"h","ц":"c","ч":"ch","ш":"sh","щ":"sh","ъ":"u","ы":"y","ь":"","э":"e","ю":"yu","я":"ya","ё":"yo","ђ":"dj","є":"ye","і":"i","ї":"yi","ј":"j","љ":"lj","њ":"nj","ћ":"c","ѝ":"u","џ":"dz","Ґ":"G","ґ":"g","Ғ":"GH","ғ":"gh","Қ":"KH","қ":"kh","Ң":"NG","ң":"ng","Ү":"UE","ү":"ue","Ұ":"U","ұ":"u","Һ":"H","һ":"h","Ә":"AE","ә":"ae","Ө":"OE","ө":"oe","฿":"baht","ა":"a","ბ":"b","გ":"g","დ":"d","ე":"e","ვ":"v","ზ":"z","თ":"t","ი":"i","კ":"k","ლ":"l","მ":"m","ნ":"n","ო":"o","პ":"p","ჟ":"zh","რ":"r","ს":"s","ტ":"t","უ":"u","ფ":"f","ქ":"k","ღ":"gh","ყ":"q","შ":"sh","ჩ":"ch","ც":"ts","ძ":"dz","წ":"ts","ჭ":"ch","ხ":"kh","ჯ":"j","ჰ":"h","Ẁ":"W","ẁ":"w","Ẃ":"W","ẃ":"w","Ẅ":"W","ẅ":"w","ẞ":"SS","Ạ":"A","ạ":"a","Ả":"A","ả":"a","Ấ":"A","ấ":"a","Ầ":"A","ầ":"a","Ẩ":"A","ẩ":"a","Ẫ":"A","ẫ":"a","Ậ":"A","ậ":"a","Ắ":"A","ắ":"a","Ằ":"A","ằ":"a","Ẳ":"A","ẳ":"a","Ẵ":"A","ẵ":"a","Ặ":"A","ặ":"a","Ẹ":"E","ẹ":"e","Ẻ":"E","ẻ":"e","Ẽ":"E","ẽ":"e","Ế":"E","ế":"e","Ề":"E","ề":"e","Ể":"E","ể":"e","Ễ":"E","ễ":"e","Ệ":"E","ệ":"e","Ỉ":"I","ỉ":"i","Ị":"I","ị":"i","Ọ":"O","ọ":"o","Ỏ":"O","ỏ":"o","Ố":"O","ố":"o","Ồ":"O","ồ":"o","Ổ":"O","ổ":"o","Ỗ":"O","ỗ":"o","Ộ":"O","ộ":"o","Ớ":"O","ớ":"o","Ờ":"O","ờ":"o","Ở":"O","ở":"o","Ỡ":"O","ỡ":"o","Ợ":"O","ợ":"o","Ụ":"U","ụ":"u","Ủ":"U","ủ":"u","Ứ":"U","ứ":"u","Ừ":"U","ừ":"u","Ử":"U","ử":"u","Ữ":"U","ữ":"u","Ự":"U","ự":"u","Ỳ":"Y","ỳ":"y","Ỵ":"Y","ỵ":"y","Ỷ":"Y","ỷ":"y","Ỹ":"Y","ỹ":"y","‘":"\'","’":"\'","“":"\\"","”":"\\"","†":"+","•":"*","…":"...","₠":"ecu","₢":"cruzeiro","₣":"french franc","₤":"lira","₥":"mill","₦":"naira","₧":"peseta","₨":"rupee","₩":"won","₪":"new shequel","₫":"dong","€":"euro","₭":"kip","₮":"tugrik","₯":"drachma","₰":"penny","₱":"peso","₲":"guarani","₳":"austral","₴":"hryvnia","₵":"cedi","₸":"kazakhstani tenge","₹":"indian rupee","₽":"russian ruble","₿":"bitcoin","℠":"sm","™":"tm","∂":"d","∆":"delta","∑":"sum","∞":"infinity","♥":"love","元":"yuan","円":"yen","﷼":"rial"}'),e=JSON.parse('{"vi":{"Đ":"D","đ":"d"}}');function n(n,r){if("string"!=typeof n)throw new Error("slugify: string argument expected");var i=e[(r="string"==typeof r?{replacement:r}:r||{}).locale]||{},a=n.split("").reduce((function(e,n){return e+(i[n]||t[n]||n).replace(r.remove||/[^\w\s$*_+~.()'"!\-:@]/g,"")}),"").trim().replace(/[-\s]+/g,r.replacement||"-");return r.lower?a.toLowerCase():a}return n.extend=function(e){for(var n in e)t[n]=e[n]},n},t.exports=r(),t.exports.default=r()},function(t,e,n){
-/*!
- * Escaper v2.5.3
- * https://github.com/kobezzza/Escaper
- *
- * Released under the MIT license
- * https://github.com/kobezzza/Escaper/blob/master/LICENSE
- *
- * Date: Tue, 23 Jan 2018 15:58:45 GMT
- */
-!function(t){"use strict";var e,n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r=e={VERSION:[2,5,3],content:[],cache:{},snakeskinRgxp:null,symbols:null,replace:M,paste:N},i={'"':!0,"'":!0,"`":!0},a={"/":!0};for(var o in i){if(!i.hasOwnProperty(o))break;a[o]=!0}var s={"//":!0,"//*":!0,"//!":!0,"//#":!0,"//@":!0,"//$":!0},u={"/*":!0,"/**":!0,"/*!":!0,"/*#":!0,"/*@":!0,"/*$":!0},c=[],l={};for(var f in a){if(!a.hasOwnProperty(f))break;c.push(f),l[f]=!0}for(var h in s){if(!s.hasOwnProperty(h))break;c.push(h),l[h]=!0}for(var d in u){if(!u.hasOwnProperty(d))break;c.push(d),l[d]=!0}var p=[],y={g:!0,m:!0,i:!0,y:!0,u:!0};for(var g in y){if(!y.hasOwnProperty(g))break;p.push(g)}var m={"-":!0,"+":!0,"*":!0,"%":!0,"~":!0,">":!0,"<":!0,"^":!0,",":!0,";":!0,"=":!0,"|":!0,"&":!0,"!":!0,"?":!0,":":!0,"(":!0,"{":!0,"[":!0},v={return:!0,yield:!0,await:!0,typeof:!0,void:!0,instanceof:!0,delete:!0,in:!0,new:!0,of:!0};function b(t,e,n){for(var r in t){if(!t.hasOwnProperty(r))break;r in e==0&&(e[r]=n)}}var x=void 0,_=void 0,w=/[^\s/]/,k=/[a-z]/,E=/\s/,A=/[\r\n]/,T=/\${pos}/g,S={object:!0,function:!0};function M(t,r,o,f){x=x||e.symbols||"a-z",_=_||e.snakeskinRgxp||new RegExp("[!$"+x+"_]","i");var h=e.cache,d=e.content,g=Boolean(r&&S[void 0===r?"undefined":n(r)]),M=g?Object(r):{};function O(t){return M["@label"]?M["@label"].replace(T,t):"__ESCAPER_QUOT__"+t+"_"}var N=!1;"boolean"==typeof r&&(N=Boolean(r)),"@comments"in M&&(b(u,M,M["@comments"]),b(s,M,M["@comments"]),delete M["@comments"]),"@strings"in M&&(b(i,M,M["@strings"]),delete M["@strings"]),"@literals"in M&&(b(a,M,M["@literals"]),delete M["@literals"]),"@all"in M&&(b(l,M,M["@all"]),delete M["@all"]);for(var C="",D=-1;++D<c.length;){var L=c[D];u[L]||s[L]?M[L]=N||M[L]:M[L]=M[L]||!g,C+=M[L]+","}var F=t,I=o||d;if(I===d&&h[C]&&h[C][F])return h[C][F];for(var P=!1,R=!0,B=!1,j=!1,Y=0,z=!1,U=0,$=!1,G=void 0,V=void 0,H="",W="",q=-1;++q<t.length;){var X=t.charAt(q),Z=t.charAt(q+1),J=t.substr(q,2),Q=t.substr(q,3);if(j)(A.test(Z)&&s[j]||u[X+t.charAt(q-1)]&&q-Y>2&&u[j])&&(M[j]&&(G=t.substring(Y,q+1),-1===M[j]?V="":(V=O(I.length),I.push(G)),t=t.substring(0,Y)+V+t.substring(q+1),q+=V.length-G.length),j=!1);else{if(!P){if("/"===X&&((s[J]||u[J])&&(j=s[Q]||u[Q]?Q:J),j)){Y=q;continue}m[X]||v[W]?(R=!0,W=""):w.test(X)&&(R=!1),k.test(X)?H+=X:(W=H,H="");var K=!1;f&&("|"===X&&_.test(Z)?($=!0,R=!1,K=!0):$&&E.test(X)&&($=!1,R=!0,K=!0)),K||(m[X]?R=!0:w.test(X)&&(R=!1))}if("/"!==P||B||("["===X?z=!0:"]"===X&&(z=!1)),!P&&U&&("}"===X?U--:"{"===X&&U++,U||(X="`")),"`"!==P||B||"${"!==J||(X="`",q++,U++),!l[X]||"/"===X&&!R||P){if(P&&("\\"===X||B))B=!B;else if(l[X]&&P===X&&!B&&("/"!==P||!z)){if("/"===X)for(var tt=-1;++tt<p.length;)y[t.charAt(q+1)]&&q++;P=!1,R=!1,M[X]&&(G=t.substring(Y,q+1),-1===M[X]?V="":(V=O(I.length),I.push(G)),t=t.substring(0,Y)+V+t.substring(q+1),q+=V.length-G.length)}}else P=X,Y=q}}return I===d&&(h[C]=h[C]||{},h[C][F]=t),t}var O=/__ESCAPER_QUOT__(\d+)_/g;function N(t,n,r){return t.replace(r||O,(function(t,r){return(n||e.content)[r]}))}t.default=r,t.replace=M,t.paste=N,Object.defineProperty(t,"__esModule",{value:!0})}(e)},function(t,e,n){"use strict";var r=n(157);t.exports=function(t,e){var n;t=t.toString();var i="",a="",o=!1,s=!(!1===(e=e||{}).preserve||!0===e.all),u="";"function"==typeof e.preserve?(s=!1,n=e.preserve):r(e.preserve)&&(s=!1,n=function(t){return e.preserve.test(t)});for(var c=0;c<t.length;c++)if(a=t[c],"\\"!==t[c-1]&&('"'!==a&&"'"!==a||(o===a?o=!1:o||(o=a))),o||"/"!==a||"*"!==t[c+1]||s&&"!"===t[c+2])u+=a;else{for(var l=c+2;l<t.length;l++){if("*"===t[l]&&"/"===t[l+1]){n&&(u=n(i)?u+"/*"+i+"*/":u,i="");break}n&&(i+=t[l])}c=l+1}return u}},function(t,e,n){"use strict";t.exports=function(t){return"[object RegExp]"===Object.prototype.toString.call(t)}},function(t,e,n){var r={"./dark/index.scss":159,"./default/index.scss":161,"./forest/index.scss":163,"./neutral/index.scss":165};function i(t){var e=a(t);return n(e)}function a(t){if(!n.o(r,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return r[t]}i.keys=function(){return Object.keys(r)},i.resolve=a,t.exports=i,i.id=158},function(t,e,n){var r=n(160);t.exports="string"==typeof r?r:r.toString()},function(t,e,n){(t.exports=n(45)(!1)).push([t.i,".label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);color:#333}.label text{fill:#333}.node rect,.node circle,.node ellipse,.node polygon,.node path{fill:#BDD5EA;stroke:purple;stroke-width:1px}.node .label{text-align:center}.node.clickable{cursor:pointer}.arrowheadPath{fill:#d3d3d3}.edgePath .path{stroke:#d3d3d3;stroke-width:1.5px}.edgeLabel{background-color:#e8e8e8;text-align:center}.edgeLabel rect{opacity:0.5}.cluster rect{fill:#6D6D65;stroke:rgba(255,255,255,0.25);stroke-width:1px}.cluster text{fill:#F9FFFE}div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#6D6D65;border:1px solid rgba(255,255,255,0.25);border-radius:2px;pointer-events:none;z-index:100}.actor{stroke:#81B1DB;fill:#BDD5EA}text.actor{fill:#000;stroke:none}.actor-line{stroke:#d3d3d3}.messageLine0{stroke-width:1.5;stroke-dasharray:'2 2';stroke:#d3d3d3}.messageLine1{stroke-width:1.5;stroke-dasharray:'2 2';stroke:#d3d3d3}#arrowhead{fill:#d3d3d3}.sequenceNumber{fill:#fff}#sequencenumber{fill:#d3d3d3}#crosshead path{fill:#d3d3d3 !important;stroke:#d3d3d3 !important}.messageText{fill:#d3d3d3;stroke:none}.labelBox{stroke:#81B1DB;fill:#BDD5EA}.labelText{fill:#323D47;stroke:none}.loopText{fill:#d3d3d3;stroke:none}.loopLine{stroke-width:2;stroke-dasharray:'2 2';stroke:#81B1DB}.note{stroke:rgba(255,255,255,0.25);fill:#fff5ad}.noteText{fill:black;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:14px}.activation0{fill:#f4f4f4;stroke:#666}.activation1{fill:#f4f4f4;stroke:#666}.activation2{fill:#f4f4f4;stroke:#666}.mermaid-main-font{font-family:\"trebuchet ms\", verdana, arial;font-family:var(--mermaid-font-family)}.section{stroke:none;opacity:0.2}.section0{fill:rgba(255,255,255,0.3)}.section2{fill:#EAE8B9}.section1,.section3{fill:#fff;opacity:0.2}.sectionTitle0{fill:#F9FFFE}.sectionTitle1{fill:#F9FFFE}.sectionTitle2{fill:#F9FFFE}.sectionTitle3{fill:#F9FFFE}.sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}.grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.grid path{stroke-width:0}.today{fill:none;stroke:#DB5757;stroke-width:2px}.task{stroke-width:2}.taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.taskText:not([font-size]){font-size:11px}.taskTextOutsideRight{fill:#323D47;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.taskTextOutsideLeft{fill:#323D47;text-anchor:end;font-size:11px}.task.clickable{cursor:pointer}.taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}.taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}.taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}.taskText0,.taskText1,.taskText2,.taskText3{fill:#323D47}.task0,.task1,.task2,.task3{fill:#BDD5EA;stroke:rgba(255,255,255,0.5)}.taskTextOutside0,.taskTextOutside2{fill:#d3d3d3}.taskTextOutside1,.taskTextOutside3{fill:#d3d3d3}.active0,.active1,.active2,.active3{fill:#81B1DB;stroke:rgba(255,255,255,0.5)}.activeText0,.activeText1,.activeText2,.activeText3{fill:#323D47 !important}.done0,.done1,.done2,.done3{stroke:grey;fill:#d3d3d3;stroke-width:2}.doneText0,.doneText1,.doneText2,.doneText3{fill:#323D47 !important}.crit0,.crit1,.crit2,.crit3{stroke:#E83737;fill:#E83737;stroke-width:2}.activeCrit0,.activeCrit1,.activeCrit2,.activeCrit3{stroke:#E83737;fill:#81B1DB;stroke-width:2}.doneCrit0,.doneCrit1,.doneCrit2,.doneCrit3{stroke:#E83737;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}.milestone{transform:rotate(45deg) scale(0.8, 0.8)}.milestoneText{font-style:italic}.doneCritText0,.doneCritText1,.doneCritText2,.doneCritText3{fill:#323D47 !important}.activeCritText0,.activeCritText1,.activeCritText2,.activeCritText3{fill:#323D47 !important}.titleText{text-anchor:middle;font-size:18px;fill:#323D47;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}g.classGroup text{fill:purple;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}g.classGroup text .title{font-weight:bolder}g.clickable{cursor:pointer}g.classGroup rect{fill:#BDD5EA;stroke:purple}g.classGroup line{stroke:purple;stroke-width:1}.classLabel .box{stroke:none;stroke-width:0;fill:#BDD5EA;opacity:0.5}.classLabel .label{fill:purple;font-size:10px}.relation{stroke:purple;stroke-width:1;fill:none}.dashed-line{stroke-dasharray:3}#compositionStart{fill:purple;stroke:purple;stroke-width:1}#compositionEnd{fill:purple;stroke:purple;stroke-width:1}#aggregationStart{fill:#BDD5EA;stroke:purple;stroke-width:1}#aggregationEnd{fill:#BDD5EA;stroke:purple;stroke-width:1}#dependencyStart{fill:purple;stroke:purple;stroke-width:1}#dependencyEnd{fill:purple;stroke:purple;stroke-width:1}#extensionStart{fill:purple;stroke:purple;stroke-width:1}#extensionEnd{fill:purple;stroke:purple;stroke-width:1}.commit-id,.commit-msg,.branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.pieTitleText{text-anchor:middle;font-size:25px;fill:#323D47;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}g.stateGroup text{fill:purple;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}g.stateGroup text{fill:purple;stroke:none;font-size:10px}g.stateGroup .state-title{font-weight:bolder;fill:#000}g.stateGroup rect{fill:#BDD5EA;stroke:purple}g.stateGroup line{stroke:purple;stroke-width:1}.transition{stroke:purple;stroke-width:1;fill:none}.stateGroup .composit{fill:white;border-bottom:1px}.stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}.state-note{stroke:rgba(255,255,255,0.25);fill:#fff5ad}.state-note text{fill:black;stroke:none;font-size:10px}.stateLabel .box{stroke:none;stroke-width:0;fill:#BDD5EA;opacity:0.5}.stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.node circle.state-start{fill:black;stroke:black}.node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#statediagram-barbEnd{fill:purple}.statediagram-cluster rect{fill:#BDD5EA;stroke:purple;stroke-width:1px}.statediagram-cluster rect.outer{rx:5px;ry:5px}.statediagram-state .divider{stroke:purple}.statediagram-state .title-state{rx:5px;ry:5px}.statediagram-cluster.statediagram-cluster .inner{fill:white}.statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}.statediagram-cluster .inner{rx:0;ry:0}.statediagram-state rect.basic{rx:5px;ry:5px}.statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}.note-edge{stroke-dasharray:5}.statediagram-note rect{fill:#fff5ad;stroke:rgba(255,255,255,0.25);stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '\"trebuchet ms\", verdana, arial';--mermaid-font-family: \"Comic Sans MS\", \"Comic Sans\", cursive}\n",""])},function(t,e,n){var r=n(162);t.exports="string"==typeof r?r:r.toString()},function(t,e,n){(t.exports=n(45)(!1)).push([t.i,".label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);color:#333}.label text{fill:#333}.node rect,.node circle,.node ellipse,.node polygon,.node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}.node .label{text-align:center}.node.clickable{cursor:pointer}.arrowheadPath{fill:#333}.edgePath .path{stroke:#333;stroke-width:1.5px}.edgeLabel{background-color:#e8e8e8;text-align:center}.edgeLabel rect{opacity:0.5}.cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}.cluster text{fill:#333}div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}.actor{stroke:#ccf;fill:#ECECFF}text.actor{fill:#000;stroke:none}.actor-line{stroke:grey}.messageLine0{stroke-width:1.5;stroke-dasharray:'2 2';stroke:#333}.messageLine1{stroke-width:1.5;stroke-dasharray:'2 2';stroke:#333}#arrowhead{fill:#333}.sequenceNumber{fill:#fff}#sequencenumber{fill:#333}#crosshead path{fill:#333 !important;stroke:#333 !important}.messageText{fill:#333;stroke:none}.labelBox{stroke:#ccf;fill:#ECECFF}.labelText{fill:#000;stroke:none}.loopText{fill:#000;stroke:none}.loopLine{stroke-width:2;stroke-dasharray:'2 2';stroke:#ccf}.note{stroke:#aa3;fill:#fff5ad}.noteText{fill:black;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:14px}.activation0{fill:#f4f4f4;stroke:#666}.activation1{fill:#f4f4f4;stroke:#666}.activation2{fill:#f4f4f4;stroke:#666}.mermaid-main-font{font-family:\"trebuchet ms\", verdana, arial;font-family:var(--mermaid-font-family)}.section{stroke:none;opacity:0.2}.section0{fill:rgba(102,102,255,0.49)}.section2{fill:#fff400}.section1,.section3{fill:#fff;opacity:0.2}.sectionTitle0{fill:#333}.sectionTitle1{fill:#333}.sectionTitle2{fill:#333}.sectionTitle3{fill:#333}.sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}.grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.grid path{stroke-width:0}.today{fill:none;stroke:red;stroke-width:2px}.task{stroke-width:2}.taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.taskText:not([font-size]){font-size:11px}.taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}.task.clickable{cursor:pointer}.taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}.taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}.taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}.taskText0,.taskText1,.taskText2,.taskText3{fill:#fff}.task0,.task1,.task2,.task3{fill:#8a90dd;stroke:#534fbc}.taskTextOutside0,.taskTextOutside2{fill:#000}.taskTextOutside1,.taskTextOutside3{fill:#000}.active0,.active1,.active2,.active3{fill:#bfc7ff;stroke:#534fbc}.activeText0,.activeText1,.activeText2,.activeText3{fill:#000 !important}.done0,.done1,.done2,.done3{stroke:grey;fill:#d3d3d3;stroke-width:2}.doneText0,.doneText1,.doneText2,.doneText3{fill:#000 !important}.crit0,.crit1,.crit2,.crit3{stroke:#f88;fill:red;stroke-width:2}.activeCrit0,.activeCrit1,.activeCrit2,.activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}.doneCrit0,.doneCrit1,.doneCrit2,.doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}.milestone{transform:rotate(45deg) scale(0.8, 0.8)}.milestoneText{font-style:italic}.doneCritText0,.doneCritText1,.doneCritText2,.doneCritText3{fill:#000 !important}.activeCritText0,.activeCritText1,.activeCritText2,.activeCritText3{fill:#000 !important}.titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}g.classGroup text .title{font-weight:bolder}g.clickable{cursor:pointer}g.classGroup rect{fill:#ECECFF;stroke:#9370db}g.classGroup line{stroke:#9370db;stroke-width:1}.classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}.classLabel .label{fill:#9370db;font-size:10px}.relation{stroke:#9370db;stroke-width:1;fill:none}.dashed-line{stroke-dasharray:3}#compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}.commit-id,.commit-msg,.branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}g.stateGroup text{fill:#9370db;stroke:none;font-size:10px}g.stateGroup .state-title{font-weight:bolder;fill:#000}g.stateGroup rect{fill:#ECECFF;stroke:#9370db}g.stateGroup line{stroke:#9370db;stroke-width:1}.transition{stroke:#9370db;stroke-width:1;fill:none}.stateGroup .composit{fill:white;border-bottom:1px}.stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}.state-note{stroke:#aa3;fill:#fff5ad}.state-note text{fill:black;stroke:none;font-size:10px}.stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}.stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.node circle.state-start{fill:black;stroke:black}.node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#statediagram-barbEnd{fill:#9370db}.statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}.statediagram-cluster rect.outer{rx:5px;ry:5px}.statediagram-state .divider{stroke:#9370db}.statediagram-state .title-state{rx:5px;ry:5px}.statediagram-cluster.statediagram-cluster .inner{fill:white}.statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}.statediagram-cluster .inner{rx:0;ry:0}.statediagram-state rect.basic{rx:5px;ry:5px}.statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}.note-edge{stroke-dasharray:5}.statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '\"trebuchet ms\", verdana, arial';--mermaid-font-family: \"Comic Sans MS\", \"Comic Sans\", cursive}\n",""])},function(t,e,n){var r=n(164);t.exports="string"==typeof r?r:r.toString()},function(t,e,n){(t.exports=n(45)(!1)).push([t.i,".label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);color:#333}.label text{fill:#333}.node rect,.node circle,.node ellipse,.node polygon,.node path{fill:#cde498;stroke:#13540c;stroke-width:1px}.node .label{text-align:center}.node.clickable{cursor:pointer}.arrowheadPath{fill:green}.edgePath .path{stroke:green;stroke-width:1.5px}.edgeLabel{background-color:#e8e8e8;text-align:center}.edgeLabel rect{opacity:0.5}.cluster rect{fill:#cdffb2;stroke:#6eaa49;stroke-width:1px}.cluster text{fill:#333}div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#cdffb2;border:1px solid #6eaa49;border-radius:2px;pointer-events:none;z-index:100}.actor{stroke:#13540c;fill:#cde498}text.actor{fill:#000;stroke:none}.actor-line{stroke:grey}.messageLine0{stroke-width:1.5;stroke-dasharray:'2 2';stroke:#333}.messageLine1{stroke-width:1.5;stroke-dasharray:'2 2';stroke:#333}#arrowhead{fill:#333}.sequenceNumber{fill:#fff}#sequencenumber{fill:#333}#crosshead path{fill:#333 !important;stroke:#333 !important}.messageText{fill:#333;stroke:none}.labelBox{stroke:#326932;fill:#cde498}.labelText{fill:#000;stroke:none}.loopText{fill:#000;stroke:none}.loopLine{stroke-width:2;stroke-dasharray:'2 2';stroke:#326932}.note{stroke:#6eaa49;fill:#fff5ad}.noteText{fill:black;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:14px}.activation0{fill:#f4f4f4;stroke:#666}.activation1{fill:#f4f4f4;stroke:#666}.activation2{fill:#f4f4f4;stroke:#666}.mermaid-main-font{font-family:\"trebuchet ms\", verdana, arial;font-family:var(--mermaid-font-family)}.section{stroke:none;opacity:0.2}.section0{fill:#6eaa49}.section2{fill:#6eaa49}.section1,.section3{fill:#fff;opacity:0.2}.sectionTitle0{fill:#333}.sectionTitle1{fill:#333}.sectionTitle2{fill:#333}.sectionTitle3{fill:#333}.sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}.grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.grid path{stroke-width:0}.today{fill:none;stroke:red;stroke-width:2px}.task{stroke-width:2}.taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.taskText:not([font-size]){font-size:11px}.taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}.task.clickable{cursor:pointer}.taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}.taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}.taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}.taskText0,.taskText1,.taskText2,.taskText3{fill:#fff}.task0,.task1,.task2,.task3{fill:#487e3a;stroke:#13540c}.taskTextOutside0,.taskTextOutside2{fill:#000}.taskTextOutside1,.taskTextOutside3{fill:#000}.active0,.active1,.active2,.active3{fill:#cde498;stroke:#13540c}.activeText0,.activeText1,.activeText2,.activeText3{fill:#000 !important}.done0,.done1,.done2,.done3{stroke:grey;fill:#d3d3d3;stroke-width:2}.doneText0,.doneText1,.doneText2,.doneText3{fill:#000 !important}.crit0,.crit1,.crit2,.crit3{stroke:#f88;fill:red;stroke-width:2}.activeCrit0,.activeCrit1,.activeCrit2,.activeCrit3{stroke:#f88;fill:#cde498;stroke-width:2}.doneCrit0,.doneCrit1,.doneCrit2,.doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}.milestone{transform:rotate(45deg) scale(0.8, 0.8)}.milestoneText{font-style:italic}.doneCritText0,.doneCritText1,.doneCritText2,.doneCritText3{fill:#000 !important}.activeCritText0,.activeCritText1,.activeCritText2,.activeCritText3{fill:#000 !important}.titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}g.classGroup text{fill:#13540c;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}g.classGroup text .title{font-weight:bolder}g.clickable{cursor:pointer}g.classGroup rect{fill:#cde498;stroke:#13540c}g.classGroup line{stroke:#13540c;stroke-width:1}.classLabel .box{stroke:none;stroke-width:0;fill:#cde498;opacity:0.5}.classLabel .label{fill:#13540c;font-size:10px}.relation{stroke:#13540c;stroke-width:1;fill:none}.dashed-line{stroke-dasharray:3}#compositionStart{fill:#13540c;stroke:#13540c;stroke-width:1}#compositionEnd{fill:#13540c;stroke:#13540c;stroke-width:1}#aggregationStart{fill:#cde498;stroke:#13540c;stroke-width:1}#aggregationEnd{fill:#cde498;stroke:#13540c;stroke-width:1}#dependencyStart{fill:#13540c;stroke:#13540c;stroke-width:1}#dependencyEnd{fill:#13540c;stroke:#13540c;stroke-width:1}#extensionStart{fill:#13540c;stroke:#13540c;stroke-width:1}#extensionEnd{fill:#13540c;stroke:#13540c;stroke-width:1}.commit-id,.commit-msg,.branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}g.stateGroup text{fill:#13540c;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}g.stateGroup text{fill:#13540c;stroke:none;font-size:10px}g.stateGroup .state-title{font-weight:bolder;fill:#000}g.stateGroup rect{fill:#cde498;stroke:#13540c}g.stateGroup line{stroke:#13540c;stroke-width:1}.transition{stroke:#13540c;stroke-width:1;fill:none}.stateGroup .composit{fill:white;border-bottom:1px}.stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}.state-note{stroke:#6eaa49;fill:#fff5ad}.state-note text{fill:black;stroke:none;font-size:10px}.stateLabel .box{stroke:none;stroke-width:0;fill:#cde498;opacity:0.5}.stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.node circle.state-start{fill:black;stroke:black}.node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#statediagram-barbEnd{fill:#13540c}.statediagram-cluster rect{fill:#cde498;stroke:#13540c;stroke-width:1px}.statediagram-cluster rect.outer{rx:5px;ry:5px}.statediagram-state .divider{stroke:#13540c}.statediagram-state .title-state{rx:5px;ry:5px}.statediagram-cluster.statediagram-cluster .inner{fill:white}.statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}.statediagram-cluster .inner{rx:0;ry:0}.statediagram-state rect.basic{rx:5px;ry:5px}.statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}.note-edge{stroke-dasharray:5}.statediagram-note rect{fill:#fff5ad;stroke:#6eaa49;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '\"trebuchet ms\", verdana, arial';--mermaid-font-family: \"Comic Sans MS\", \"Comic Sans\", cursive}\n",""])},function(t,e,n){var r=n(166);t.exports="string"==typeof r?r:r.toString()},function(t,e,n){(t.exports=n(45)(!1)).push([t.i,".label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);color:#333}.label text{fill:#333}.node rect,.node circle,.node ellipse,.node polygon,.node path{fill:#eee;stroke:#999;stroke-width:1px}.node .label{text-align:center}.node.clickable{cursor:pointer}.arrowheadPath{fill:#333}.edgePath .path{stroke:#666;stroke-width:1.5px}.edgeLabel{background-color:#fff;text-align:center}.edgeLabel rect{opacity:0.5}.cluster rect{fill:#eaf2fb;stroke:#26a;stroke-width:1px}.cluster text{fill:#333}div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#eaf2fb;border:1px solid #26a;border-radius:2px;pointer-events:none;z-index:100}.actor{stroke:#999;fill:#eee}text.actor{fill:#333;stroke:none}.actor-line{stroke:#666}.messageLine0{stroke-width:1.5;stroke-dasharray:'2 2';stroke:#333}.messageLine1{stroke-width:1.5;stroke-dasharray:'2 2';stroke:#333}#arrowhead{fill:#333}.sequenceNumber{fill:#fff}#sequencenumber{fill:#333}#crosshead path{fill:#333 !important;stroke:#333 !important}.messageText{fill:#333;stroke:none}.labelBox{stroke:#999;fill:#eee}.labelText{fill:#333;stroke:none}.loopText{fill:#333;stroke:none}.loopLine{stroke-width:2;stroke-dasharray:'2 2';stroke:#999}.note{stroke:#770;fill:#ffa}.noteText{fill:black;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:14px}.activation0{fill:#f4f4f4;stroke:#666}.activation1{fill:#f4f4f4;stroke:#666}.activation2{fill:#f4f4f4;stroke:#666}.mermaid-main-font{font-family:\"trebuchet ms\", verdana, arial;font-family:var(--mermaid-font-family)}.section{stroke:none;opacity:0.2}.section0{fill:#80b3e6}.section2{fill:#80b3e6}.section1,.section3{fill:#fff;opacity:0.2}.sectionTitle0{fill:#333}.sectionTitle1{fill:#333}.sectionTitle2{fill:#333}.sectionTitle3{fill:#333}.sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.grid .tick{stroke:#e6e6e6;opacity:0.8;shape-rendering:crispEdges}.grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.grid path{stroke-width:0}.today{fill:none;stroke:#d42;stroke-width:2px}.task{stroke-width:2}.taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.taskText:not([font-size]){font-size:11px}.taskTextOutsideRight{fill:#333;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.taskTextOutsideLeft{fill:#333;text-anchor:end;font-size:11px}.task.clickable{cursor:pointer}.taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}.taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}.taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}.taskText0,.taskText1,.taskText2,.taskText3{fill:#fff}.task0,.task1,.task2,.task3{fill:#26a;stroke:#1a4d80}.taskTextOutside0,.taskTextOutside2{fill:#333}.taskTextOutside1,.taskTextOutside3{fill:#333}.active0,.active1,.active2,.active3{fill:#eee;stroke:#1a4d80}.activeText0,.activeText1,.activeText2,.activeText3{fill:#333 !important}.done0,.done1,.done2,.done3{stroke:#666;fill:#bbb;stroke-width:2}.doneText0,.doneText1,.doneText2,.doneText3{fill:#333 !important}.crit0,.crit1,.crit2,.crit3{stroke:#b1361b;fill:#d42;stroke-width:2}.activeCrit0,.activeCrit1,.activeCrit2,.activeCrit3{stroke:#b1361b;fill:#eee;stroke-width:2}.doneCrit0,.doneCrit1,.doneCrit2,.doneCrit3{stroke:#b1361b;fill:#bbb;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}.milestone{transform:rotate(45deg) scale(0.8, 0.8)}.milestoneText{font-style:italic}.doneCritText0,.doneCritText1,.doneCritText2,.doneCritText3{fill:#333 !important}.activeCritText0,.activeCritText1,.activeCritText2,.activeCritText3{fill:#333 !important}.titleText{text-anchor:middle;font-size:18px;fill:#333;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}g.classGroup text{fill:#999;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}g.classGroup text .title{font-weight:bolder}g.clickable{cursor:pointer}g.classGroup rect{fill:#eee;stroke:#999}g.classGroup line{stroke:#999;stroke-width:1}.classLabel .box{stroke:none;stroke-width:0;fill:#eee;opacity:0.5}.classLabel .label{fill:#999;font-size:10px}.relation{stroke:#999;stroke-width:1;fill:none}.dashed-line{stroke-dasharray:3}#compositionStart{fill:#999;stroke:#999;stroke-width:1}#compositionEnd{fill:#999;stroke:#999;stroke-width:1}#aggregationStart{fill:#eee;stroke:#999;stroke-width:1}#aggregationEnd{fill:#eee;stroke:#999;stroke-width:1}#dependencyStart{fill:#999;stroke:#999;stroke-width:1}#dependencyEnd{fill:#999;stroke:#999;stroke-width:1}#extensionStart{fill:#999;stroke:#999;stroke-width:1}#extensionEnd{fill:#999;stroke:#999;stroke-width:1}.commit-id,.commit-msg,.branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.pieTitleText{text-anchor:middle;font-size:25px;fill:#333;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}g.stateGroup text{fill:#999;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}g.stateGroup text{fill:#999;stroke:none;font-size:10px}g.stateGroup .state-title{font-weight:bolder;fill:#000}g.stateGroup rect{fill:#eee;stroke:#999}g.stateGroup line{stroke:#999;stroke-width:1}.transition{stroke:#999;stroke-width:1;fill:none}.stateGroup .composit{fill:white;border-bottom:1px}.stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}.state-note{stroke:#770;fill:#ffa}.state-note text{fill:black;stroke:none;font-size:10px}.stateLabel .box{stroke:none;stroke-width:0;fill:#eee;opacity:0.5}.stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.node circle.state-start{fill:black;stroke:black}.node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#statediagram-barbEnd{fill:#999}.statediagram-cluster rect{fill:#eee;stroke:#999;stroke-width:1px}.statediagram-cluster rect.outer{rx:5px;ry:5px}.statediagram-state .divider{stroke:#999}.statediagram-state .title-state{rx:5px;ry:5px}.statediagram-cluster.statediagram-cluster .inner{fill:white}.statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}.statediagram-cluster .inner{rx:0;ry:0}.statediagram-state rect.basic{rx:5px;ry:5px}.statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}.note-edge{stroke-dasharray:5}.statediagram-note rect{fill:#ffa;stroke:#770;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '\"trebuchet ms\", verdana, arial';--mermaid-font-family: \"Comic Sans MS\", \"Comic Sans\", cursive}\n",""])},function(t,e,n){var r={"./locale":90,"./locale.js":90};function i(t){var e=a(t);return n(e)}function a(t){if(!n.o(r,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return r[t]}i.keys=function(){return Object.keys(r)},i.resolve=a,t.exports=i,i.id=167},function(t,e,n){t.exports={Graph:n(68),version:n(270)}},function(t,e,n){var r=n(91);t.exports=function(t){return r(t,4)}},function(t,e){t.exports=function(){this.__data__=[],this.size=0}},function(t,e,n){var r=n(48),i=Array.prototype.splice;t.exports=function(t){var e=this.__data__,n=r(e,t);return!(n<0)&&(n==e.length-1?e.pop():i.call(e,n,1),--this.size,!0)}},function(t,e,n){var r=n(48);t.exports=function(t){var e=this.__data__,n=r(e,t);return n<0?void 0:e[n][1]}},function(t,e,n){var r=n(48);t.exports=function(t){return r(this.__data__,t)>-1}},function(t,e,n){var r=n(48);t.exports=function(t,e){var n=this.__data__,i=r(n,t);return i<0?(++this.size,n.push([t,e])):n[i][1]=e,this}},function(t,e,n){var r=n(47);t.exports=function(){this.__data__=new r,this.size=0}},function(t,e){t.exports=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n}},function(t,e){t.exports=function(t){return this.__data__.get(t)}},function(t,e){t.exports=function(t){return this.__data__.has(t)}},function(t,e,n){var r=n(47),i=n(69),a=n(70);t.exports=function(t,e){var n=this.__data__;if(n instanceof r){var o=n.__data__;if(!i||o.length<199)return o.push([t,e]),this.size=++n.size,this;n=this.__data__=new a(o)}return n.set(t,e),this.size=n.size,this}},function(t,e,n){var r=n(31),i=n(184),a=n(9),o=n(93),s=/^\[object .+?Constructor\]$/,u=Function.prototype,c=Object.prototype,l=u.toString,f=c.hasOwnProperty,h=RegExp("^"+l.call(f).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");t.exports=function(t){return!(!a(t)||i(t))&&(r(t)?h:s).test(o(t))}},function(t,e){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(t){"object"==typeof window&&(n=window)}t.exports=n},function(t,e,n){var r=n(32),i=Object.prototype,a=i.hasOwnProperty,o=i.toString,s=r?r.toStringTag:void 0;t.exports=function(t){var e=a.call(t,s),n=t[s];try{t[s]=void 0;var r=!0}catch(t){}var i=o.call(t);return r&&(e?t[s]=n:delete t[s]),i}},function(t,e){var n=Object.prototype.toString;t.exports=function(t){return n.call(t)}},function(t,e,n){var r,i=n(185),a=(r=/[^.]+$/.exec(i&&i.keys&&i.keys.IE_PROTO||""))?"Symbol(src)_1."+r:"";t.exports=function(t){return!!a&&a in t}},function(t,e,n){var r=n(12)["__core-js_shared__"];t.exports=r},function(t,e){t.exports=function(t,e){return null==t?void 0:t[e]}},function(t,e,n){var r=n(188),i=n(47),a=n(69);t.exports=function(){this.size=0,this.__data__={hash:new r,map:new(a||i),string:new r}}},function(t,e,n){var r=n(189),i=n(190),a=n(191),o=n(192),s=n(193);function u(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}u.prototype.clear=r,u.prototype.delete=i,u.prototype.get=a,u.prototype.has=o,u.prototype.set=s,t.exports=u},function(t,e,n){var r=n(49);t.exports=function(){this.__data__=r?r(null):{},this.size=0}},function(t,e){t.exports=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}},function(t,e,n){var r=n(49),i=Object.prototype.hasOwnProperty;t.exports=function(t){var e=this.__data__;if(r){var n=e[t];return"__lodash_hash_undefined__"===n?void 0:n}return i.call(e,t)?e[t]:void 0}},function(t,e,n){var r=n(49),i=Object.prototype.hasOwnProperty;t.exports=function(t){var e=this.__data__;return r?void 0!==e[t]:i.call(e,t)}},function(t,e,n){var r=n(49);t.exports=function(t,e){var n=this.__data__;return this.size+=this.has(t)?0:1,n[t]=r&&void 0===e?"__lodash_hash_undefined__":e,this}},function(t,e,n){var r=n(50);t.exports=function(t){var e=r(this,t).delete(t);return this.size-=e?1:0,e}},function(t,e){t.exports=function(t){var e=typeof t;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t}},function(t,e,n){var r=n(50);t.exports=function(t){return r(this,t).get(t)}},function(t,e,n){var r=n(50);t.exports=function(t){return r(this,t).has(t)}},function(t,e,n){var r=n(50);t.exports=function(t,e){var n=r(this,t),i=n.size;return n.set(t,e),this.size+=n.size==i?0:1,this}},function(t,e,n){var r=n(40),i=n(25);t.exports=function(t,e){return t&&r(e,i(e),t)}},function(t,e){t.exports=function(t,e){for(var n=-1,r=Array(t);++n<t;)r[n]=e(n);return r}},function(t,e,n){var r=n(28),i=n(16);t.exports=function(t){return i(t)&&"[object Arguments]"==r(t)}},function(t,e){t.exports=function(){return!1}},function(t,e,n){var r=n(28),i=n(72),a=n(16),o={};o["[object Float32Array]"]=o["[object Float64Array]"]=o["[object Int8Array]"]=o["[object Int16Array]"]=o["[object Int32Array]"]=o["[object Uint8Array]"]=o["[object Uint8ClampedArray]"]=o["[object Uint16Array]"]=o["[object Uint32Array]"]=!0,o["[object Arguments]"]=o["[object Array]"]=o["[object ArrayBuffer]"]=o["[object Boolean]"]=o["[object DataView]"]=o["[object Date]"]=o["[object Error]"]=o["[object Function]"]=o["[object Map]"]=o["[object Number]"]=o["[object Object]"]=o["[object RegExp]"]=o["[object Set]"]=o["[object String]"]=o["[object WeakMap]"]=!1,t.exports=function(t){return a(t)&&i(t.length)&&!!o[r(t)]}},function(t,e,n){var r=n(96)(Object.keys,Object);t.exports=r},function(t,e,n){var r=n(40),i=n(34);t.exports=function(t,e){return t&&r(e,i(e),t)}},function(t,e,n){var r=n(9),i=n(55),a=n(207),o=Object.prototype.hasOwnProperty;t.exports=function(t){if(!r(t))return a(t);var e=i(t),n=[];for(var s in t)("constructor"!=s||!e&&o.call(t,s))&&n.push(s);return n}},function(t,e){t.exports=function(t){var e=[];if(null!=t)for(var n in Object(t))e.push(n);return e}},function(t,e,n){var r=n(40),i=n(75);t.exports=function(t,e){return r(t,i(t),e)}},function(t,e,n){var r=n(40),i=n(101);t.exports=function(t,e){return r(t,i(t),e)}},function(t,e,n){var r=n(103),i=n(101),a=n(34);t.exports=function(t){return r(t,a,i)}},function(t,e,n){var r=n(27)(n(12),"DataView");t.exports=r},function(t,e,n){var r=n(27)(n(12),"Promise");t.exports=r},function(t,e,n){var r=n(27)(n(12),"WeakMap");t.exports=r},function(t,e){var n=Object.prototype.hasOwnProperty;t.exports=function(t){var e=t.length,r=new t.constructor(e);return e&&"string"==typeof t[0]&&n.call(t,"index")&&(r.index=t.index,r.input=t.input),r}},function(t,e,n){var r=n(77),i=n(216),a=n(217),o=n(218),s=n(106);t.exports=function(t,e,n){var u=t.constructor;switch(e){case"[object ArrayBuffer]":return r(t);case"[object Boolean]":case"[object Date]":return new u(+t);case"[object DataView]":return i(t,n);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return s(t,n);case"[object Map]":return new u;case"[object Number]":case"[object String]":return new u(t);case"[object RegExp]":return a(t);case"[object Set]":return new u;case"[object Symbol]":return o(t)}}},function(t,e,n){var r=n(77);t.exports=function(t,e){var n=e?r(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.byteLength)}},function(t,e){var n=/\w*$/;t.exports=function(t){var e=new t.constructor(t.source,n.exec(t));return e.lastIndex=t.lastIndex,e}},function(t,e,n){var r=n(32),i=r?r.prototype:void 0,a=i?i.valueOf:void 0;t.exports=function(t){return a?Object(a.call(t)):{}}},function(t,e,n){var r=n(220),i=n(54),a=n(73),o=a&&a.isMap,s=o?i(o):r;t.exports=s},function(t,e,n){var r=n(35),i=n(16);t.exports=function(t){return i(t)&&"[object Map]"==r(t)}},function(t,e,n){var r=n(222),i=n(54),a=n(73),o=a&&a.isSet,s=o?i(o):r;t.exports=s},function(t,e,n){var r=n(35),i=n(16);t.exports=function(t){return i(t)&&"[object Set]"==r(t)}},function(t,e){t.exports=function(t){return function(e,n,r){for(var i=-1,a=Object(e),o=r(e),s=o.length;s--;){var u=o[t?s:++i];if(!1===n(a[u],u,a))break}return e}}},function(t,e,n){var r=n(19);t.exports=function(t,e){return function(n,i){if(null==n)return n;if(!r(n))return t(n,i);for(var a=n.length,o=e?a:-1,s=Object(n);(e?o--:++o<a)&&!1!==i(s[o],o,s););return n}}},function(t,e,n){var r=n(57);t.exports=function(t,e){var n=[];return r(t,(function(t,r,i){e(t,r,i)&&n.push(t)})),n}},function(t,e,n){var r=n(227),i=n(235),a=n(117);t.exports=function(t){var e=i(t);return 1==e.length&&e[0][2]?a(e[0][0],e[0][1]):function(n){return n===t||r(n,t,e)}}},function(t,e,n){var r=n(46),i=n(112);t.exports=function(t,e,n,a){var o=n.length,s=o,u=!a;if(null==t)return!s;for(t=Object(t);o--;){var c=n[o];if(u&&c[2]?c[1]!==t[c[0]]:!(c[0]in t))return!1}for(;++o<s;){var l=(c=n[o])[0],f=t[l],h=c[1];if(u&&c[2]){if(void 0===f&&!(l in t))return!1}else{var d=new r;if(a)var p=a(f,h,l,t,e,d);if(!(void 0===p?i(h,f,3,a,d):p))return!1}}return!0}},function(t,e,n){var r=n(46),i=n(113),a=n(232),o=n(234),s=n(35),u=n(4),c=n(33),l=n(42),f="[object Object]",h=Object.prototype.hasOwnProperty;t.exports=function(t,e,n,d,p,y){var g=u(t),m=u(e),v=g?"[object Array]":s(t),b=m?"[object Array]":s(e),x=(v="[object Arguments]"==v?f:v)==f,_=(b="[object Arguments]"==b?f:b)==f,w=v==b;if(w&&c(t)){if(!c(e))return!1;g=!0,x=!1}if(w&&!x)return y||(y=new r),g||l(t)?i(t,e,n,d,p,y):a(t,e,v,n,d,p,y);if(!(1&n)){var k=x&&h.call(t,"__wrapped__"),E=_&&h.call(e,"__wrapped__");if(k||E){var A=k?t.value():t,T=E?e.value():e;return y||(y=new r),p(A,T,n,d,y)}}return!!w&&(y||(y=new r),o(t,e,n,d,p,y))}},function(t,e){t.exports=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this}},function(t,e){t.exports=function(t){return this.__data__.has(t)}},function(t,e){t.exports=function(t,e){for(var n=-1,r=null==t?0:t.length;++n<r;)if(e(t[n],n,t))return!0;return!1}},function(t,e,n){var r=n(32),i=n(105),a=n(30),o=n(113),s=n(233),u=n(82),c=r?r.prototype:void 0,l=c?c.valueOf:void 0;t.exports=function(t,e,n,r,c,f,h){switch(n){case"[object DataView]":if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case"[object ArrayBuffer]":return!(t.byteLength!=e.byteLength||!f(new i(t),new i(e)));case"[object Boolean]":case"[object Date]":case"[object Number]":return a(+t,+e);case"[object Error]":return t.name==e.name&&t.message==e.message;case"[object RegExp]":case"[object String]":return t==e+"";case"[object Map]":var d=s;case"[object Set]":var p=1&r;if(d||(d=u),t.size!=e.size&&!p)return!1;var y=h.get(t);if(y)return y==e;r|=2,h.set(t,e);var g=o(d(t),d(e),r,c,f,h);return h.delete(t),g;case"[object Symbol]":if(l)return l.call(t)==l.call(e)}return!1}},function(t,e){t.exports=function(t){var e=-1,n=Array(t.size);return t.forEach((function(t,r){n[++e]=[r,t]})),n}},function(t,e,n){var r=n(102),i=Object.prototype.hasOwnProperty;t.exports=function(t,e,n,a,o,s){var u=1&n,c=r(t),l=c.length;if(l!=r(e).length&&!u)return!1;for(var f=l;f--;){var h=c[f];if(!(u?h in e:i.call(e,h)))return!1}var d=s.get(t);if(d&&s.get(e))return d==e;var p=!0;s.set(t,e),s.set(e,t);for(var y=u;++f<l;){var g=t[h=c[f]],m=e[h];if(a)var v=u?a(m,g,h,e,t,s):a(g,m,h,t,e,s);if(!(void 0===v?g===m||o(g,m,n,a,s):v)){p=!1;break}y||(y="constructor"==h)}if(p&&!y){var b=t.constructor,x=e.constructor;b!=x&&"constructor"in t&&"constructor"in e&&!("function"==typeof b&&b instanceof b&&"function"==typeof x&&x instanceof x)&&(p=!1)}return s.delete(t),s.delete(e),p}},function(t,e,n){var r=n(116),i=n(25);t.exports=function(t){for(var e=i(t),n=e.length;n--;){var a=e[n],o=t[a];e[n]=[a,o,r(o)]}return e}},function(t,e,n){var r=n(112),i=n(237),a=n(119),o=n(84),s=n(116),u=n(117),c=n(43);t.exports=function(t,e){return o(t)&&s(e)?u(c(t),e):function(n){var o=i(n,t);return void 0===o&&o===e?a(n,t):r(e,o,3)}}},function(t,e,n){var r=n(83);t.exports=function(t,e,n){var i=null==t?void 0:r(t,e);return void 0===i?n:i}},function(t,e,n){var r=n(239),i=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,a=/\\(\\)?/g,o=r((function(t){var e=[];return 46===t.charCodeAt(0)&&e.push(""),t.replace(i,(function(t,n,r,i){e.push(r?i.replace(a,"$1"):n||t)})),e}));t.exports=o},function(t,e,n){var r=n(240);t.exports=function(t){var e=r(t,(function(t){return 500===n.size&&n.clear(),t})),n=e.cache;return e}},function(t,e,n){var r=n(70);function i(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new TypeError("Expected a function");var n=function(){var r=arguments,i=e?e.apply(this,r):r[0],a=n.cache;if(a.has(i))return a.get(i);var o=t.apply(this,r);return n.cache=a.set(i,o)||a,o};return n.cache=new(i.Cache||r),n}i.Cache=r,t.exports=i},function(t,e,n){var r=n(32),i=n(59),a=n(4),o=n(36),s=r?r.prototype:void 0,u=s?s.toString:void 0;t.exports=function t(e){if("string"==typeof e)return e;if(a(e))return i(e,t)+"";if(o(e))return u?u.call(e):"";var n=e+"";return"0"==n&&1/e==-1/0?"-0":n}},function(t,e){t.exports=function(t,e){return null!=t&&e in Object(t)}},function(t,e,n){var r=n(121),i=n(244),a=n(84),o=n(43);t.exports=function(t){return a(t)?r(o(t)):i(t)}},function(t,e,n){var r=n(83);t.exports=function(t){return function(e){return r(e,t)}}},function(t,e){var n=Object.prototype.hasOwnProperty;t.exports=function(t,e){return null!=t&&n.call(t,e)}},function(t,e,n){var r=n(74),i=n(35),a=n(41),o=n(4),s=n(19),u=n(33),c=n(55),l=n(42),f=Object.prototype.hasOwnProperty;t.exports=function(t){if(null==t)return!0;if(s(t)&&(o(t)||"string"==typeof t||"function"==typeof t.splice||u(t)||l(t)||a(t)))return!t.length;var e=i(t);if("[object Map]"==e||"[object Set]"==e)return!t.size;if(c(t))return!r(t).length;for(var n in t)if(f.call(t,n))return!1;return!0}},function(t,e){t.exports=function(t,e,n,r){var i=-1,a=null==t?0:t.length;for(r&&a&&(n=t[++i]);++i<a;)n=e(n,t[i],i,t);return n}},function(t,e){t.exports=function(t,e,n,r,i){return i(t,(function(t,i,a){n=r?(r=!1,t):e(n,t,i,a)})),n}},function(t,e,n){var r=n(74),i=n(35),a=n(19),o=n(250),s=n(251);t.exports=function(t){if(null==t)return 0;if(a(t))return o(t)?s(t):t.length;var e=i(t);return"[object Map]"==e||"[object Set]"==e?t.size:r(t).length}},function(t,e,n){var r=n(28),i=n(4),a=n(16);t.exports=function(t){return"string"==typeof t||!i(t)&&a(t)&&"[object String]"==r(t)}},function(t,e,n){var r=n(252),i=n(253),a=n(254);t.exports=function(t){return i(t)?a(t):r(t)}},function(t,e,n){var r=n(121)("length");t.exports=r},function(t,e){var n=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");t.exports=function(t){return n.test(t)}},function(t,e){var n="[\\ud800-\\udfff]",r="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",i="\\ud83c[\\udffb-\\udfff]",a="[^\\ud800-\\udfff]",o="(?:\\ud83c[\\udde6-\\uddff]){2}",s="[\\ud800-\\udbff][\\udc00-\\udfff]",u="(?:"+r+"|"+i+")"+"?",c="[\\ufe0e\\ufe0f]?"+u+("(?:\\u200d(?:"+[a,o,s].join("|")+")[\\ufe0e\\ufe0f]?"+u+")*"),l="(?:"+[a+r+"?",r,o,s,n].join("|")+")",f=RegExp(i+"(?="+i+")|"+l+c,"g");t.exports=function(t){for(var e=f.lastIndex=0;f.test(t);)++e;return e}},function(t,e,n){var r=n(71),i=n(108),a=n(80),o=n(20),s=n(56),u=n(4),c=n(33),l=n(31),f=n(9),h=n(42);t.exports=function(t,e,n){var d=u(t),p=d||c(t)||h(t);if(e=o(e,4),null==n){var y=t&&t.constructor;n=p?d?new y:[]:f(t)&&l(y)?i(s(t)):{}}return(p?r:a)(t,(function(t,r,i){return e(n,t,r,i)})),n}},function(t,e,n){var r=n(86),i=n(60),a=n(261),o=n(129),s=i((function(t){return a(r(t,1,o,!0))}));t.exports=s},function(t,e,n){var r=n(32),i=n(41),a=n(4),o=r?r.isConcatSpreadable:void 0;t.exports=function(t){return a(t)||i(t)||!!(o&&t&&t[o])}},function(t,e){t.exports=function(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)}},function(t,e,n){var r=n(78),i=n(94),a=n(29),o=i?function(t,e){return i(t,"toString",{configurable:!0,enumerable:!1,value:r(e),writable:!0})}:a;t.exports=o},function(t,e){var n=Date.now;t.exports=function(t){var e=0,r=0;return function(){var i=n(),a=16-(i-r);if(r=i,a>0){if(++e>=800)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}},function(t,e,n){var r=n(114),i=n(262),a=n(266),o=n(115),s=n(267),u=n(82);t.exports=function(t,e,n){var c=-1,l=i,f=t.length,h=!0,d=[],p=d;if(n)h=!1,l=a;else if(f>=200){var y=e?null:s(t);if(y)return u(y);h=!1,l=o,p=new r}else p=e?[]:d;t:for(;++c<f;){var g=t[c],m=e?e(g):g;if(g=n||0!==g?g:0,h&&m==m){for(var v=p.length;v--;)if(p[v]===m)continue t;e&&p.push(m),d.push(g)}else l(p,m,n)||(p!==d&&p.push(m),d.push(g))}return d}},function(t,e,n){var r=n(263);t.exports=function(t,e){return!!(null==t?0:t.length)&&r(t,e,0)>-1}},function(t,e,n){var r=n(128),i=n(264),a=n(265);t.exports=function(t,e,n){return e==e?a(t,e,n):r(t,i,n)}},function(t,e){t.exports=function(t){return t!=t}},function(t,e){t.exports=function(t,e,n){for(var r=n-1,i=t.length;++r<i;)if(t[r]===e)return r;return-1}},function(t,e){t.exports=function(t,e,n){for(var r=-1,i=null==t?0:t.length;++r<i;)if(n(e,t[r]))return!0;return!1}},function(t,e,n){var r=n(104),i=n(268),a=n(82),o=r&&1/a(new r([,-0]))[1]==1/0?function(t){return new r(t)}:i;t.exports=o},function(t,e){t.exports=function(){}},function(t,e,n){var r=n(59);t.exports=function(t,e){return r(e,(function(e){return t[e]}))}},function(t,e){t.exports="2.1.8"},function(t,e,n){var r=n(8),i=n(68);function a(t){return r.map(t.nodes(),(function(e){var n=t.node(e),i=t.parent(e),a={v:e};return r.isUndefined(n)||(a.value=n),r.isUndefined(i)||(a.parent=i),a}))}function o(t){return r.map(t.edges(),(function(e){var n=t.edge(e),i={v:e.v,w:e.w};return r.isUndefined(e.name)||(i.name=e.name),r.isUndefined(n)||(i.value=n),i}))}t.exports={write:function(t){var e={options:{directed:t.isDirected(),multigraph:t.isMultigraph(),compound:t.isCompound()},nodes:a(t),edges:o(t)};r.isUndefined(t.graph())||(e.value=r.clone(t.graph()));return e},read:function(t){var e=new i(t.options).setGraph(t.value);return r.each(t.nodes,(function(t){e.setNode(t.v,t.value),t.parent&&e.setParent(t.v,t.parent)})),r.each(t.edges,(function(t){e.setEdge({v:t.v,w:t.w,name:t.name},t.value)})),e}}},function(t,e,n){t.exports={components:n(273),dijkstra:n(131),dijkstraAll:n(274),findCycles:n(275),floydWarshall:n(276),isAcyclic:n(277),postorder:n(278),preorder:n(279),prim:n(280),tarjan:n(133),topsort:n(134)}},function(t,e,n){var r=n(8);t.exports=function(t){var e,n={},i=[];function a(i){r.has(n,i)||(n[i]=!0,e.push(i),r.each(t.successors(i),a),r.each(t.predecessors(i),a))}return r.each(t.nodes(),(function(t){e=[],a(t),e.length&&i.push(e)})),i}},function(t,e,n){var r=n(131),i=n(8);t.exports=function(t,e,n){return i.transform(t.nodes(),(function(i,a){i[a]=r(t,a,e,n)}),{})}},function(t,e,n){var r=n(8),i=n(133);t.exports=function(t){return r.filter(i(t),(function(e){return e.length>1||1===e.length&&t.hasEdge(e[0],e[0])}))}},function(t,e,n){var r=n(8);t.exports=function(t,e,n){return function(t,e,n){var r={},i=t.nodes();return i.forEach((function(t){r[t]={},r[t][t]={distance:0},i.forEach((function(e){t!==e&&(r[t][e]={distance:Number.POSITIVE_INFINITY})})),n(t).forEach((function(n){var i=n.v===t?n.w:n.v,a=e(n);r[t][i]={distance:a,predecessor:t}}))})),i.forEach((function(t){var e=r[t];i.forEach((function(n){var a=r[n];i.forEach((function(n){var r=a[t],i=e[n],o=a[n],s=r.distance+i.distance;s<o.distance&&(o.distance=s,o.predecessor=i.predecessor)}))}))})),r}(t,e||i,n||function(e){return t.outEdges(e)})};var i=r.constant(1)},function(t,e,n){var r=n(134);t.exports=function(t){try{r(t)}catch(t){if(t instanceof r.CycleException)return!1;throw t}return!0}},function(t,e,n){var r=n(135);t.exports=function(t,e){return r(t,e,"post")}},function(t,e,n){var r=n(135);t.exports=function(t,e){return r(t,e,"pre")}},function(t,e,n){var r=n(8),i=n(68),a=n(132);t.exports=function(t,e){var n,o=new i,s={},u=new a;function c(t){var r=t.v===n?t.w:t.v,i=u.priority(r);if(void 0!==i){var a=e(t);a<i&&(s[r]=n,u.decrease(r,a))}}if(0===t.nodeCount())return o;r.each(t.nodes(),(function(t){u.add(t,Number.POSITIVE_INFINITY),o.setNode(t)})),u.decrease(t.nodes()[0],0);var l=!1;for(;u.size()>0;){if(n=u.removeMin(),r.has(s,n))o.setEdge(n,s[n]);else{if(l)throw new Error("Input graph is not connected: "+t);l=!0}t.nodeEdges(n).forEach(c)}return o}},function(t,e,n){var r;try{r=n(2)}catch(t){}r||(r=window.graphlib),t.exports=r},function(t,e,n){"use strict";var r=n(3),i=n(315),a=n(318),o=n(319),s=n(7).normalizeRanks,u=n(321),c=n(7).removeEmptyRanks,l=n(322),f=n(323),h=n(324),d=n(325),p=n(334),y=n(7),g=n(13).Graph;t.exports=function(t,e){var n=e&&e.debugTiming?y.time:y.notime;n("layout",(function(){var e=n(" buildLayoutGraph",(function(){return function(t){var e=new g({multigraph:!0,compound:!0}),n=T(t.graph());return e.setGraph(r.merge({},v,A(n,m),r.pick(n,b))),r.forEach(t.nodes(),(function(n){var i=T(t.node(n));e.setNode(n,r.defaults(A(i,x),_)),e.setParent(n,t.parent(n))})),r.forEach(t.edges(),(function(n){var i=T(t.edge(n));e.setEdge(n,r.merge({},k,A(i,w),r.pick(i,E)))})),e}(t)}));n(" runLayout",(function(){!function(t,e){e(" makeSpaceForEdgeLabels",(function(){!function(t){var e=t.graph();e.ranksep/=2,r.forEach(t.edges(),(function(n){var r=t.edge(n);r.minlen*=2,"c"!==r.labelpos.toLowerCase()&&("TB"===e.rankdir||"BT"===e.rankdir?r.width+=r.labeloffset:r.height+=r.labeloffset)}))}(t)})),e(" removeSelfEdges",(function(){!function(t){r.forEach(t.edges(),(function(e){if(e.v===e.w){var n=t.node(e.v);n.selfEdges||(n.selfEdges=[]),n.selfEdges.push({e:e,label:t.edge(e)}),t.removeEdge(e)}}))}(t)})),e(" acyclic",(function(){i.run(t)})),e(" nestingGraph.run",(function(){l.run(t)})),e(" rank",(function(){o(y.asNonCompoundGraph(t))})),e(" injectEdgeLabelProxies",(function(){!function(t){r.forEach(t.edges(),(function(e){var n=t.edge(e);if(n.width&&n.height){var r=t.node(e.v),i={rank:(t.node(e.w).rank-r.rank)/2+r.rank,e:e};y.addDummyNode(t,"edge-proxy",i,"_ep")}}))}(t)})),e(" removeEmptyRanks",(function(){c(t)})),e(" nestingGraph.cleanup",(function(){l.cleanup(t)})),e(" normalizeRanks",(function(){s(t)})),e(" assignRankMinMax",(function(){!function(t){var e=0;r.forEach(t.nodes(),(function(n){var i=t.node(n);i.borderTop&&(i.minRank=t.node(i.borderTop).rank,i.maxRank=t.node(i.borderBottom).rank,e=r.max(e,i.maxRank))})),t.graph().maxRank=e}(t)})),e(" removeEdgeLabelProxies",(function(){!function(t){r.forEach(t.nodes(),(function(e){var n=t.node(e);"edge-proxy"===n.dummy&&(t.edge(n.e).labelRank=n.rank,t.removeNode(e))}))}(t)})),e(" normalize.run",(function(){a.run(t)})),e(" parentDummyChains",(function(){u(t)})),e(" addBorderSegments",(function(){f(t)})),e(" order",(function(){d(t)})),e(" insertSelfEdges",(function(){!function(t){var e=y.buildLayerMatrix(t);r.forEach(e,(function(e){var n=0;r.forEach(e,(function(e,i){var a=t.node(e);a.order=i+n,r.forEach(a.selfEdges,(function(e){y.addDummyNode(t,"selfedge",{width:e.label.width,height:e.label.height,rank:a.rank,order:i+ ++n,e:e.e,label:e.label},"_se")})),delete a.selfEdges}))}))}(t)})),e(" adjustCoordinateSystem",(function(){h.adjust(t)})),e(" position",(function(){p(t)})),e(" positionSelfEdges",(function(){!function(t){r.forEach(t.nodes(),(function(e){var n=t.node(e);if("selfedge"===n.dummy){var r=t.node(n.e.v),i=r.x+r.width/2,a=r.y,o=n.x-i,s=r.height/2;t.setEdge(n.e,n.label),t.removeNode(e),n.label.points=[{x:i+2*o/3,y:a-s},{x:i+5*o/6,y:a-s},{x:i+o,y:a},{x:i+5*o/6,y:a+s},{x:i+2*o/3,y:a+s}],n.label.x=n.x,n.label.y=n.y}}))}(t)})),e(" removeBorderNodes",(function(){!function(t){r.forEach(t.nodes(),(function(e){if(t.children(e).length){var n=t.node(e),i=t.node(n.borderTop),a=t.node(n.borderBottom),o=t.node(r.last(n.borderLeft)),s=t.node(r.last(n.borderRight));n.width=Math.abs(s.x-o.x),n.height=Math.abs(a.y-i.y),n.x=o.x+n.width/2,n.y=i.y+n.height/2}})),r.forEach(t.nodes(),(function(e){"border"===t.node(e).dummy&&t.removeNode(e)}))}(t)})),e(" normalize.undo",(function(){a.undo(t)})),e(" fixupEdgeLabelCoords",(function(){!function(t){r.forEach(t.edges(),(function(e){var n=t.edge(e);if(r.has(n,"x"))switch("l"!==n.labelpos&&"r"!==n.labelpos||(n.width-=n.labeloffset),n.labelpos){case"l":n.x-=n.width/2+n.labeloffset;break;case"r":n.x+=n.width/2+n.labeloffset}}))}(t)})),e(" undoCoordinateSystem",(function(){h.undo(t)})),e(" translateGraph",(function(){!function(t){var e=Number.POSITIVE_INFINITY,n=0,i=Number.POSITIVE_INFINITY,a=0,o=t.graph(),s=o.marginx||0,u=o.marginy||0;function c(t){var r=t.x,o=t.y,s=t.width,u=t.height;e=Math.min(e,r-s/2),n=Math.max(n,r+s/2),i=Math.min(i,o-u/2),a=Math.max(a,o+u/2)}r.forEach(t.nodes(),(function(e){c(t.node(e))})),r.forEach(t.edges(),(function(e){var n=t.edge(e);r.has(n,"x")&&c(n)})),e-=s,i-=u,r.forEach(t.nodes(),(function(n){var r=t.node(n);r.x-=e,r.y-=i})),r.forEach(t.edges(),(function(n){var a=t.edge(n);r.forEach(a.points,(function(t){t.x-=e,t.y-=i})),r.has(a,"x")&&(a.x-=e),r.has(a,"y")&&(a.y-=i)})),o.width=n-e+s,o.height=a-i+u}(t)})),e(" assignNodeIntersects",(function(){!function(t){r.forEach(t.edges(),(function(e){var n,r,i=t.edge(e),a=t.node(e.v),o=t.node(e.w);i.points?(n=i.points[0],r=i.points[i.points.length-1]):(i.points=[],n=o,r=a),i.points.unshift(y.intersectRect(a,n)),i.points.push(y.intersectRect(o,r))}))}(t)})),e(" reversePoints",(function(){!function(t){r.forEach(t.edges(),(function(e){var n=t.edge(e);n.reversed&&n.points.reverse()}))}(t)})),e(" acyclic.undo",(function(){i.undo(t)}))}(e,n)})),n(" updateInputGraph",(function(){!function(t,e){r.forEach(t.nodes(),(function(n){var r=t.node(n),i=e.node(n);r&&(r.x=i.x,r.y=i.y,e.children(n).length&&(r.width=i.width,r.height=i.height))})),r.forEach(t.edges(),(function(n){var i=t.edge(n),a=e.edge(n);i.points=a.points,r.has(a,"x")&&(i.x=a.x,i.y=a.y)})),t.graph().width=e.graph().width,t.graph().height=e.graph().height}(t,e)}))}))};var m=["nodesep","edgesep","ranksep","marginx","marginy"],v={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},b=["acyclicer","ranker","rankdir","align"],x=["width","height"],_={width:0,height:0},w=["minlen","weight","width","height","labeloffset"],k={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},E=["labelpos"];function A(t,e){return r.mapValues(r.pick(t,e),Number)}function T(t){var e={};return r.forEach(t,(function(t,n){e[n.toLowerCase()]=t})),e}},function(t,e,n){var r=n(91);t.exports=function(t){return r(t,5)}},function(t,e,n){var r=n(285)(n(286));t.exports=r},function(t,e,n){var r=n(20),i=n(19),a=n(25);t.exports=function(t){return function(e,n,o){var s=Object(e);if(!i(e)){var u=r(n,3);e=a(e),n=function(t){return u(s[t],t,s)}}var c=t(e,n,o);return c>-1?s[u?e[c]:c]:void 0}}},function(t,e,n){var r=n(128),i=n(20),a=n(287),o=Math.max;t.exports=function(t,e,n){var s=null==t?0:t.length;if(!s)return-1;var u=null==n?0:a(n);return u<0&&(u=o(s+u,0)),r(t,i(e,3),u)}},function(t,e,n){var r=n(138);t.exports=function(t){var e=r(t),n=e%1;return e==e?n?e-n:e:0}},function(t,e,n){var r=n(9),i=n(36),a=/^\s+|\s+$/g,o=/^[-+]0x[0-9a-f]+$/i,s=/^0b[01]+$/i,u=/^0o[0-7]+$/i,c=parseInt;t.exports=function(t){if("number"==typeof t)return t;if(i(t))return NaN;if(r(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=r(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(a,"");var n=s.test(t);return n||u.test(t)?c(t.slice(2),n?2:8):o.test(t)?NaN:+t}},function(t,e,n){var r=n(81),i=n(110),a=n(34);t.exports=function(t,e){return null==t?t:r(t,i(e),a)}},function(t,e){t.exports=function(t){var e=null==t?0:t.length;return e?t[e-1]:void 0}},function(t,e,n){var r=n(52),i=n(80),a=n(20);t.exports=function(t,e){var n={};return e=a(e,3),i(t,(function(t,i,a){r(n,i,e(t,i,a))})),n}},function(t,e,n){var r=n(87),i=n(293),a=n(29);t.exports=function(t){return t&&t.length?r(t,a,i):void 0}},function(t,e){t.exports=function(t,e){return t>e}},function(t,e,n){var r=n(295),i=n(298)((function(t,e,n){r(t,e,n)}));t.exports=i},function(t,e,n){var r=n(46),i=n(140),a=n(81),o=n(296),s=n(9),u=n(34),c=n(142);t.exports=function t(e,n,l,f,h){e!==n&&a(n,(function(a,u){if(h||(h=new r),s(a))o(e,n,u,l,t,f,h);else{var d=f?f(c(e,u),a,u+"",e,n,h):void 0;void 0===d&&(d=a),i(e,u,d)}}),u)}},function(t,e,n){var r=n(140),i=n(97),a=n(106),o=n(98),s=n(107),u=n(41),c=n(4),l=n(129),f=n(33),h=n(31),d=n(9),p=n(141),y=n(42),g=n(142),m=n(297);t.exports=function(t,e,n,v,b,x,_){var w=g(t,n),k=g(e,n),E=_.get(k);if(E)r(t,n,E);else{var A=x?x(w,k,n+"",t,e,_):void 0,T=void 0===A;if(T){var S=c(k),M=!S&&f(k),O=!S&&!M&&y(k);A=k,S||M||O?c(w)?A=w:l(w)?A=o(w):M?(T=!1,A=i(k,!0)):O?(T=!1,A=a(k,!0)):A=[]:p(k)||u(k)?(A=w,u(w)?A=m(w):d(w)&&!h(w)||(A=s(k))):T=!1}T&&(_.set(k,A),b(A,k,v,x,_),_.delete(k)),r(t,n,A)}}},function(t,e,n){var r=n(40),i=n(34);t.exports=function(t){return r(t,i(t))}},function(t,e,n){var r=n(60),i=n(61);t.exports=function(t){return r((function(e,n){var r=-1,a=n.length,o=a>1?n[a-1]:void 0,s=a>2?n[2]:void 0;for(o=t.length>3&&"function"==typeof o?(a--,o):void 0,s&&i(n[0],n[1],s)&&(o=a<3?void 0:o,a=1),e=Object(e);++r<a;){var u=n[r];u&&t(e,u,r,o)}return e}))}},function(t,e,n){var r=n(87),i=n(143),a=n(29);t.exports=function(t){return t&&t.length?r(t,a,i):void 0}},function(t,e,n){var r=n(87),i=n(20),a=n(143);t.exports=function(t,e){return t&&t.length?r(t,i(e,2),a):void 0}},function(t,e,n){var r=n(12);t.exports=function(){return r.Date.now()}},function(t,e,n){var r=n(303),i=n(119);t.exports=function(t,e){return r(t,e,(function(e,n){return i(t,n)}))}},function(t,e,n){var r=n(83),i=n(304),a=n(58);t.exports=function(t,e,n){for(var o=-1,s=e.length,u={};++o<s;){var c=e[o],l=r(t,c);n(l,c)&&i(u,a(c,t),l)}return u}},function(t,e,n){var r=n(51),i=n(58),a=n(53),o=n(9),s=n(43);t.exports=function(t,e,n,u){if(!o(t))return t;for(var c=-1,l=(e=i(e,t)).length,f=l-1,h=t;null!=h&&++c<l;){var d=s(e[c]),p=n;if(c!=f){var y=h[d];void 0===(p=u?u(y,d,h):void 0)&&(p=o(y)?y:a(e[c+1])?[]:{})}r(h,d,p),h=h[d]}return t}},function(t,e,n){var r=n(139),i=n(126),a=n(127);t.exports=function(t){return a(i(t,void 0,r),t+"")}},function(t,e,n){var r=n(307),i=n(61),a=n(138);t.exports=function(t){return function(e,n,o){return o&&"number"!=typeof o&&i(e,n,o)&&(n=o=void 0),e=a(e),void 0===n?(n=e,e=0):n=a(n),o=void 0===o?e<n?1:-1:a(o),r(e,n,o,t)}}},function(t,e){var n=Math.ceil,r=Math.max;t.exports=function(t,e,i,a){for(var o=-1,s=r(n((e-t)/(i||1)),0),u=Array(s);s--;)u[a?s:++o]=t,t+=i;return u}},function(t,e,n){var r=n(86),i=n(309),a=n(60),o=n(61),s=a((function(t,e){if(null==t)return[];var n=e.length;return n>1&&o(t,e[0],e[1])?e=[]:n>2&&o(e[0],e[1],e[2])&&(e=[e[0]]),i(t,r(e,1),[])}));t.exports=s},function(t,e,n){var r=n(59),i=n(20),a=n(124),o=n(310),s=n(54),u=n(311),c=n(29);t.exports=function(t,e,n){var l=-1;e=r(e.length?e:[c],s(i));var f=a(t,(function(t,n,i){return{criteria:r(e,(function(e){return e(t)})),index:++l,value:t}}));return o(f,(function(t,e){return u(t,e,n)}))}},function(t,e){t.exports=function(t,e){var n=t.length;for(t.sort(e);n--;)t[n]=t[n].value;return t}},function(t,e,n){var r=n(312);t.exports=function(t,e,n){for(var i=-1,a=t.criteria,o=e.criteria,s=a.length,u=n.length;++i<s;){var c=r(a[i],o[i]);if(c)return i>=u?c:c*("desc"==n[i]?-1:1)}return t.index-e.index}},function(t,e,n){var r=n(36);t.exports=function(t,e){if(t!==e){var n=void 0!==t,i=null===t,a=t==t,o=r(t),s=void 0!==e,u=null===e,c=e==e,l=r(e);if(!u&&!l&&!o&&t>e||o&&s&&c&&!u&&!l||i&&s&&c||!n&&c||!a)return 1;if(!i&&!o&&!l&&t<e||l&&n&&a&&!i&&!o||u&&n&&a||!s&&a||!c)return-1}return 0}},function(t,e,n){var r=n(51),i=n(314);t.exports=function(t,e){return i(t||[],e||[],r)}},function(t,e){t.exports=function(t,e,n){for(var r=-1,i=t.length,a=e.length,o={};++r<i;){var s=r<a?e[r]:void 0;n(o,t[r],s)}return o}},function(t,e,n){"use strict";var r=n(3),i=n(316);t.exports={run:function(t){var e="greedy"===t.graph().acyclicer?i(t,function(t){return function(e){return t.edge(e).weight}}(t)):function(t){var e=[],n={},i={};function a(o){r.has(i,o)||(i[o]=!0,n[o]=!0,r.forEach(t.outEdges(o),(function(t){r.has(n,t.w)?e.push(t):a(t.w)})),delete n[o])}return r.forEach(t.nodes(),a),e}(t);r.forEach(e,(function(e){var n=t.edge(e);t.removeEdge(e),n.forwardName=e.name,n.reversed=!0,t.setEdge(e.w,e.v,n,r.uniqueId("rev"))}))},undo:function(t){r.forEach(t.edges(),(function(e){var n=t.edge(e);if(n.reversed){t.removeEdge(e);var r=n.forwardName;delete n.reversed,delete n.forwardName,t.setEdge(e.w,e.v,n,r)}}))}}},function(t,e,n){var r=n(3),i=n(13).Graph,a=n(317);t.exports=function(t,e){if(t.nodeCount()<=1)return[];var n=function(t,e){var n=new i,o=0,s=0;r.forEach(t.nodes(),(function(t){n.setNode(t,{v:t,in:0,out:0})})),r.forEach(t.edges(),(function(t){var r=n.edge(t.v,t.w)||0,i=e(t),a=r+i;n.setEdge(t.v,t.w,a),s=Math.max(s,n.node(t.v).out+=i),o=Math.max(o,n.node(t.w).in+=i)}));var c=r.range(s+o+3).map((function(){return new a})),l=o+1;return r.forEach(n.nodes(),(function(t){u(c,l,n.node(t))})),{graph:n,buckets:c,zeroIdx:l}}(t,e||o),c=function(t,e,n){var r,i=[],a=e[e.length-1],o=e[0];for(;t.nodeCount();){for(;r=o.dequeue();)s(t,e,n,r);for(;r=a.dequeue();)s(t,e,n,r);if(t.nodeCount())for(var u=e.length-2;u>0;--u)if(r=e[u].dequeue()){i=i.concat(s(t,e,n,r,!0));break}}return i}(n.graph,n.buckets,n.zeroIdx);return r.flatten(r.map(c,(function(e){return t.outEdges(e.v,e.w)})),!0)};var o=r.constant(1);function s(t,e,n,i,a){var o=a?[]:void 0;return r.forEach(t.inEdges(i.v),(function(r){var i=t.edge(r),s=t.node(r.v);a&&o.push({v:r.v,w:r.w}),s.out-=i,u(e,n,s)})),r.forEach(t.outEdges(i.v),(function(r){var i=t.edge(r),a=r.w,o=t.node(a);o.in-=i,u(e,n,o)})),t.removeNode(i.v),o}function u(t,e,n){n.out?n.in?t[n.out-n.in+e].enqueue(n):t[t.length-1].enqueue(n):t[0].enqueue(n)}},function(t,e){function n(){var t={};t._next=t._prev=t,this._sentinel=t}function r(t){t._prev._next=t._next,t._next._prev=t._prev,delete t._next,delete t._prev}function i(t,e){if("_next"!==t&&"_prev"!==t)return e}t.exports=n,n.prototype.dequeue=function(){var t=this._sentinel,e=t._prev;if(e!==t)return r(e),e},n.prototype.enqueue=function(t){var e=this._sentinel;t._prev&&t._next&&r(t),t._next=e._next,e._next._prev=t,e._next=t,t._prev=e},n.prototype.toString=function(){for(var t=[],e=this._sentinel,n=e._prev;n!==e;)t.push(JSON.stringify(n,i)),n=n._prev;return"["+t.join(", ")+"]"}},function(t,e,n){"use strict";var r=n(3),i=n(7);t.exports={run:function(t){t.graph().dummyChains=[],r.forEach(t.edges(),(function(e){!function(t,e){var n,r,a,o=e.v,s=t.node(o).rank,u=e.w,c=t.node(u).rank,l=e.name,f=t.edge(e),h=f.labelRank;if(c===s+1)return;for(t.removeEdge(e),a=0,++s;s<c;++a,++s)f.points=[],r={width:0,height:0,edgeLabel:f,edgeObj:e,rank:s},n=i.addDummyNode(t,"edge",r,"_d"),s===h&&(r.width=f.width,r.height=f.height,r.dummy="edge-label",r.labelpos=f.labelpos),t.setEdge(o,n,{weight:f.weight},l),0===a&&t.graph().dummyChains.push(n),o=n;t.setEdge(o,u,{weight:f.weight},l)}(t,e)}))},undo:function(t){r.forEach(t.graph().dummyChains,(function(e){var n,r=t.node(e),i=r.edgeLabel;for(t.setEdge(r.edgeObj,i);r.dummy;)n=t.successors(e)[0],t.removeNode(e),i.points.push({x:r.x,y:r.y}),"edge-label"===r.dummy&&(i.x=r.x,i.y=r.y,i.width=r.width,i.height=r.height),e=n,r=t.node(e)}))}}},function(t,e,n){"use strict";var r=n(62).longestPath,i=n(147),a=n(320);t.exports=function(t){switch(t.graph().ranker){case"network-simplex":s(t);break;case"tight-tree":!function(t){r(t),i(t)}(t);break;case"longest-path":o(t);break;default:s(t)}};var o=r;function s(t){a(t)}},function(t,e,n){"use strict";var r=n(3),i=n(147),a=n(62).slack,o=n(62).longestPath,s=n(13).alg.preorder,u=n(13).alg.postorder,c=n(7).simplify;function l(t){t=c(t),o(t);var e,n=i(t);for(d(n),f(n,t);e=y(n);)m(n,t,e,g(n,t,e))}function f(t,e){var n=u(t,t.nodes());n=n.slice(0,n.length-1),r.forEach(n,(function(n){!function(t,e,n){var r=t.node(n).parent;t.edge(n,r).cutvalue=h(t,e,n)}(t,e,n)}))}function h(t,e,n){var i=t.node(n).parent,a=!0,o=e.edge(n,i),s=0;return o||(a=!1,o=e.edge(i,n)),s=o.weight,r.forEach(e.nodeEdges(n),(function(r){var o,u,c=r.v===n,l=c?r.w:r.v;if(l!==i){var f=c===a,h=e.edge(r).weight;if(s+=f?h:-h,o=n,u=l,t.hasEdge(o,u)){var d=t.edge(n,l).cutvalue;s+=f?-d:d}}})),s}function d(t,e){arguments.length<2&&(e=t.nodes()[0]),p(t,{},1,e)}function p(t,e,n,i,a){var o=n,s=t.node(i);return e[i]=!0,r.forEach(t.neighbors(i),(function(a){r.has(e,a)||(n=p(t,e,n,a,i))})),s.low=o,s.lim=n++,a?s.parent=a:delete s.parent,n}function y(t){return r.find(t.edges(),(function(e){return t.edge(e).cutvalue<0}))}function g(t,e,n){var i=n.v,o=n.w;e.hasEdge(i,o)||(i=n.w,o=n.v);var s=t.node(i),u=t.node(o),c=s,l=!1;s.lim>u.lim&&(c=u,l=!0);var f=r.filter(e.edges(),(function(e){return l===v(t,t.node(e.v),c)&&l!==v(t,t.node(e.w),c)}));return r.minBy(f,(function(t){return a(e,t)}))}function m(t,e,n,i){var a=n.v,o=n.w;t.removeEdge(a,o),t.setEdge(i.v,i.w,{}),d(t),f(t,e),function(t,e){var n=r.find(t.nodes(),(function(t){return!e.node(t).parent})),i=s(t,n);i=i.slice(1),r.forEach(i,(function(n){var r=t.node(n).parent,i=e.edge(n,r),a=!1;i||(i=e.edge(r,n),a=!0),e.node(n).rank=e.node(r).rank+(a?i.minlen:-i.minlen)}))}(t,e)}function v(t,e,n){return n.low<=e.lim&&e.lim<=n.lim}t.exports=l,l.initLowLimValues=d,l.initCutValues=f,l.calcCutValue=h,l.leaveEdge=y,l.enterEdge=g,l.exchangeEdges=m},function(t,e,n){var r=n(3);t.exports=function(t){var e=function(t){var e={},n=0;function i(a){var o=n;r.forEach(t.children(a),i),e[a]={low:o,lim:n++}}return r.forEach(t.children(),i),e}(t);r.forEach(t.graph().dummyChains,(function(n){for(var r=t.node(n),i=r.edgeObj,a=function(t,e,n,r){var i,a,o=[],s=[],u=Math.min(e[n].low,e[r].low),c=Math.max(e[n].lim,e[r].lim);i=n;do{i=t.parent(i),o.push(i)}while(i&&(e[i].low>u||c>e[i].lim));a=i,i=r;for(;(i=t.parent(i))!==a;)s.push(i);return{path:o.concat(s.reverse()),lca:a}}(t,e,i.v,i.w),o=a.path,s=a.lca,u=0,c=o[u],l=!0;n!==i.w;){if(r=t.node(n),l){for(;(c=o[u])!==s&&t.node(c).maxRank<r.rank;)u++;c===s&&(l=!1)}if(!l){for(;u<o.length-1&&t.node(c=o[u+1]).minRank<=r.rank;)u++;c=o[u]}t.setParent(n,c),n=t.successors(n)[0]}}))}},function(t,e,n){var r=n(3),i=n(7);t.exports={run:function(t){var e=i.addDummyNode(t,"root",{},"_root"),n=function(t){var e={};return r.forEach(t.children(),(function(n){!function n(i,a){var o=t.children(i);o&&o.length&&r.forEach(o,(function(t){n(t,a+1)}));e[i]=a}(n,1)})),e}(t),a=r.max(r.values(n))-1,o=2*a+1;t.graph().nestingRoot=e,r.forEach(t.edges(),(function(e){t.edge(e).minlen*=o}));var s=function(t){return r.reduce(t.edges(),(function(e,n){return e+t.edge(n).weight}),0)}(t)+1;r.forEach(t.children(),(function(u){!function t(e,n,a,o,s,u,c){var l=e.children(c);if(!l.length)return void(c!==n&&e.setEdge(n,c,{weight:0,minlen:a}));var f=i.addBorderNode(e,"_bt"),h=i.addBorderNode(e,"_bb"),d=e.node(c);e.setParent(f,c),d.borderTop=f,e.setParent(h,c),d.borderBottom=h,r.forEach(l,(function(r){t(e,n,a,o,s,u,r);var i=e.node(r),l=i.borderTop?i.borderTop:r,d=i.borderBottom?i.borderBottom:r,p=i.borderTop?o:2*o,y=l!==d?1:s-u[c]+1;e.setEdge(f,l,{weight:p,minlen:y,nestingEdge:!0}),e.setEdge(d,h,{weight:p,minlen:y,nestingEdge:!0})})),e.parent(c)||e.setEdge(n,f,{weight:0,minlen:s+u[c]})}(t,e,o,s,a,n,u)})),t.graph().nodeRankFactor=o},cleanup:function(t){var e=t.graph();t.removeNode(e.nestingRoot),delete e.nestingRoot,r.forEach(t.edges(),(function(e){t.edge(e).nestingEdge&&t.removeEdge(e)}))}}},function(t,e,n){var r=n(3),i=n(7);function a(t,e,n,r,a,o){var s={width:0,height:0,rank:o,borderType:e},u=a[e][o-1],c=i.addDummyNode(t,"border",s,n);a[e][o]=c,t.setParent(c,r),u&&t.setEdge(u,c,{weight:1})}t.exports=function(t){r.forEach(t.children(),(function e(n){var i=t.children(n),o=t.node(n);if(i.length&&r.forEach(i,e),r.has(o,"minRank")){o.borderLeft=[],o.borderRight=[];for(var s=o.minRank,u=o.maxRank+1;s<u;++s)a(t,"borderLeft","_bl",n,o,s),a(t,"borderRight","_br",n,o,s)}}))}},function(t,e,n){"use strict";var r=n(3);function i(t){r.forEach(t.nodes(),(function(e){a(t.node(e))})),r.forEach(t.edges(),(function(e){a(t.edge(e))}))}function a(t){var e=t.width;t.width=t.height,t.height=e}function o(t){t.y=-t.y}function s(t){var e=t.x;t.x=t.y,t.y=e}t.exports={adjust:function(t){var e=t.graph().rankdir.toLowerCase();"lr"!==e&&"rl"!==e||i(t)},undo:function(t){var e=t.graph().rankdir.toLowerCase();"bt"!==e&&"rl"!==e||function(t){r.forEach(t.nodes(),(function(e){o(t.node(e))})),r.forEach(t.edges(),(function(e){var n=t.edge(e);r.forEach(n.points,o),r.has(n,"y")&&o(n)}))}(t);"lr"!==e&&"rl"!==e||(!function(t){r.forEach(t.nodes(),(function(e){s(t.node(e))})),r.forEach(t.edges(),(function(e){var n=t.edge(e);r.forEach(n.points,s),r.has(n,"x")&&s(n)}))}(t),i(t))}}},function(t,e,n){"use strict";var r=n(3),i=n(326),a=n(327),o=n(328),s=n(332),u=n(333),c=n(13).Graph,l=n(7);function f(t,e,n){return r.map(e,(function(e){return s(t,e,n)}))}function h(t,e){var n=new c;r.forEach(t,(function(t){var i=t.graph().root,a=o(t,i,n,e);r.forEach(a.vs,(function(e,n){t.node(e).order=n})),u(t,n,a.vs)}))}function d(t,e){r.forEach(e,(function(e){r.forEach(e,(function(e,n){t.node(e).order=n}))}))}t.exports=function(t){var e=l.maxRank(t),n=f(t,r.range(1,e+1),"inEdges"),o=f(t,r.range(e-1,-1,-1),"outEdges"),s=i(t);d(t,s);for(var u,c=Number.POSITIVE_INFINITY,p=0,y=0;y<4;++p,++y){h(p%2?n:o,p%4>=2),s=l.buildLayerMatrix(t);var g=a(t,s);g<c&&(y=0,u=r.cloneDeep(s),c=g)}d(t,u)}},function(t,e,n){"use strict";var r=n(3);t.exports=function(t){var e={},n=r.filter(t.nodes(),(function(e){return!t.children(e).length})),i=r.max(r.map(n,(function(e){return t.node(e).rank}))),a=r.map(r.range(i+1),(function(){return[]}));var o=r.sortBy(n,(function(e){return t.node(e).rank}));return r.forEach(o,(function n(i){if(r.has(e,i))return;e[i]=!0;var o=t.node(i);a[o.rank].push(i),r.forEach(t.successors(i),n)})),a}},function(t,e,n){"use strict";var r=n(3);function i(t,e,n){for(var i=r.zipObject(n,r.map(n,(function(t,e){return e}))),a=r.flatten(r.map(e,(function(e){return r.sortBy(r.map(t.outEdges(e),(function(e){return{pos:i[e.w],weight:t.edge(e).weight}})),"pos")})),!0),o=1;o<n.length;)o<<=1;var s=2*o-1;o-=1;var u=r.map(new Array(s),(function(){return 0})),c=0;return r.forEach(a.forEach((function(t){var e=t.pos+o;u[e]+=t.weight;for(var n=0;e>0;)e%2&&(n+=u[e+1]),u[e=e-1>>1]+=t.weight;c+=t.weight*n}))),c}t.exports=function(t,e){for(var n=0,r=1;r<e.length;++r)n+=i(t,e[r-1],e[r]);return n}},function(t,e,n){var r=n(3),i=n(329),a=n(330),o=n(331);t.exports=function t(e,n,s,u){var c=e.children(n),l=e.node(n),f=l?l.borderLeft:void 0,h=l?l.borderRight:void 0,d={};f&&(c=r.filter(c,(function(t){return t!==f&&t!==h})));var p=i(e,c);r.forEach(p,(function(n){if(e.children(n.v).length){var i=t(e,n.v,s,u);d[n.v]=i,r.has(i,"barycenter")&&(a=n,o=i,r.isUndefined(a.barycenter)?(a.barycenter=o.barycenter,a.weight=o.weight):(a.barycenter=(a.barycenter*a.weight+o.barycenter*o.weight)/(a.weight+o.weight),a.weight+=o.weight))}var a,o}));var y=a(p,s);!function(t,e){r.forEach(t,(function(t){t.vs=r.flatten(t.vs.map((function(t){return e[t]?e[t].vs:t})),!0)}))}(y,d);var g=o(y,u);if(f&&(g.vs=r.flatten([f,g.vs,h],!0),e.predecessors(f).length)){var m=e.node(e.predecessors(f)[0]),v=e.node(e.predecessors(h)[0]);r.has(g,"barycenter")||(g.barycenter=0,g.weight=0),g.barycenter=(g.barycenter*g.weight+m.order+v.order)/(g.weight+2),g.weight+=2}return g}},function(t,e,n){var r=n(3);t.exports=function(t,e){return r.map(e,(function(e){var n=t.inEdges(e);if(n.length){var i=r.reduce(n,(function(e,n){var r=t.edge(n),i=t.node(n.v);return{sum:e.sum+r.weight*i.order,weight:e.weight+r.weight}}),{sum:0,weight:0});return{v:e,barycenter:i.sum/i.weight,weight:i.weight}}return{v:e}}))}},function(t,e,n){"use strict";var r=n(3);t.exports=function(t,e){var n={};return r.forEach(t,(function(t,e){var i=n[t.v]={indegree:0,in:[],out:[],vs:[t.v],i:e};r.isUndefined(t.barycenter)||(i.barycenter=t.barycenter,i.weight=t.weight)})),r.forEach(e.edges(),(function(t){var e=n[t.v],i=n[t.w];r.isUndefined(e)||r.isUndefined(i)||(i.indegree++,e.out.push(n[t.w]))})),function(t){var e=[];function n(t){return function(e){e.merged||(r.isUndefined(e.barycenter)||r.isUndefined(t.barycenter)||e.barycenter>=t.barycenter)&&function(t,e){var n=0,r=0;t.weight&&(n+=t.barycenter*t.weight,r+=t.weight);e.weight&&(n+=e.barycenter*e.weight,r+=e.weight);t.vs=e.vs.concat(t.vs),t.barycenter=n/r,t.weight=r,t.i=Math.min(e.i,t.i),e.merged=!0}(t,e)}}function i(e){return function(n){n.in.push(e),0==--n.indegree&&t.push(n)}}for(;t.length;){var a=t.pop();e.push(a),r.forEach(a.in.reverse(),n(a)),r.forEach(a.out,i(a))}return r.map(r.filter(e,(function(t){return!t.merged})),(function(t){return r.pick(t,["vs","i","barycenter","weight"])}))}(r.filter(n,(function(t){return!t.indegree})))}},function(t,e,n){var r=n(3),i=n(7);function a(t,e,n){for(var i;e.length&&(i=r.last(e)).i<=n;)e.pop(),t.push(i.vs),n++;return n}t.exports=function(t,e){var n=i.partition(t,(function(t){return r.has(t,"barycenter")})),o=n.lhs,s=r.sortBy(n.rhs,(function(t){return-t.i})),u=[],c=0,l=0,f=0;o.sort((h=!!e,function(t,e){return t.barycenter<e.barycenter?-1:t.barycenter>e.barycenter?1:h?e.i-t.i:t.i-e.i})),f=a(u,s,f),r.forEach(o,(function(t){f+=t.vs.length,u.push(t.vs),c+=t.barycenter*t.weight,l+=t.weight,f=a(u,s,f)}));var h;var d={vs:r.flatten(u,!0)};l&&(d.barycenter=c/l,d.weight=l);return d}},function(t,e,n){var r=n(3),i=n(13).Graph;t.exports=function(t,e,n){var a=function(t){var e;for(;t.hasNode(e=r.uniqueId("_root")););return e}(t),o=new i({compound:!0}).setGraph({root:a}).setDefaultNodeLabel((function(e){return t.node(e)}));return r.forEach(t.nodes(),(function(i){var s=t.node(i),u=t.parent(i);(s.rank===e||s.minRank<=e&&e<=s.maxRank)&&(o.setNode(i),o.setParent(i,u||a),r.forEach(t[n](i),(function(e){var n=e.v===i?e.w:e.v,a=o.edge(n,i),s=r.isUndefined(a)?0:a.weight;o.setEdge(n,i,{weight:t.edge(e).weight+s})})),r.has(s,"minRank")&&o.setNode(i,{borderLeft:s.borderLeft[e],borderRight:s.borderRight[e]}))})),o}},function(t,e,n){var r=n(3);t.exports=function(t,e,n){var i,a={};r.forEach(n,(function(n){for(var r,o,s=t.parent(n);s;){if((r=t.parent(s))?(o=a[r],a[r]=s):(o=i,i=s),o&&o!==s)return void e.setEdge(o,s);s=r}}))}},function(t,e,n){"use strict";var r=n(3),i=n(7),a=n(335).positionX;t.exports=function(t){(function(t){var e=i.buildLayerMatrix(t),n=t.graph().ranksep,a=0;r.forEach(e,(function(e){var i=r.max(r.map(e,(function(e){return t.node(e).height})));r.forEach(e,(function(e){t.node(e).y=a+i/2})),a+=i+n}))})(t=i.asNonCompoundGraph(t)),r.forEach(a(t),(function(e,n){t.node(n).x=e}))}},function(t,e,n){"use strict";var r=n(3),i=n(13).Graph,a=n(7);function o(t,e){var n={};return r.reduce(e,(function(e,i){var a=0,o=0,s=e.length,c=r.last(i);return r.forEach(i,(function(e,l){var f=function(t,e){if(t.node(e).dummy)return r.find(t.predecessors(e),(function(e){return t.node(e).dummy}))}(t,e),h=f?t.node(f).order:s;(f||e===c)&&(r.forEach(i.slice(o,l+1),(function(e){r.forEach(t.predecessors(e),(function(r){var i=t.node(r),o=i.order;!(o<a||h<o)||i.dummy&&t.node(e).dummy||u(n,r,e)}))})),o=l+1,a=h)})),i})),n}function s(t,e){var n={};function i(e,i,a,o,s){var c;r.forEach(r.range(i,a),(function(i){c=e[i],t.node(c).dummy&&r.forEach(t.predecessors(c),(function(e){var r=t.node(e);r.dummy&&(r.order<o||r.order>s)&&u(n,e,c)}))}))}return r.reduce(e,(function(e,n){var a,o=-1,s=0;return r.forEach(n,(function(r,u){if("border"===t.node(r).dummy){var c=t.predecessors(r);c.length&&(a=t.node(c[0]).order,i(n,s,u,o,a),s=u,o=a)}i(n,s,n.length,a,e.length)})),n})),n}function u(t,e,n){if(e>n){var r=e;e=n,n=r}var i=t[e];i||(t[e]=i={}),i[n]=!0}function c(t,e,n){if(e>n){var i=e;e=n,n=i}return r.has(t[e],n)}function l(t,e,n,i){var a={},o={},s={};return r.forEach(e,(function(t){r.forEach(t,(function(t,e){a[t]=t,o[t]=t,s[t]=e}))})),r.forEach(e,(function(t){var e=-1;r.forEach(t,(function(t){var u=i(t);if(u.length)for(var l=((u=r.sortBy(u,(function(t){return s[t]}))).length-1)/2,f=Math.floor(l),h=Math.ceil(l);f<=h;++f){var d=u[f];o[t]===t&&e<s[d]&&!c(n,t,d)&&(o[d]=t,o[t]=a[t]=a[d],e=s[d])}}))})),{root:a,align:o}}function f(t,e,n,a,o){var s={},u=function(t,e,n,a){var o=new i,s=t.graph(),u=function(t,e,n){return function(i,a,o){var s,u=i.node(a),c=i.node(o),l=0;if(l+=u.width/2,r.has(u,"labelpos"))switch(u.labelpos.toLowerCase()){case"l":s=-u.width/2;break;case"r":s=u.width/2}if(s&&(l+=n?s:-s),s=0,l+=(u.dummy?e:t)/2,l+=(c.dummy?e:t)/2,l+=c.width/2,r.has(c,"labelpos"))switch(c.labelpos.toLowerCase()){case"l":s=c.width/2;break;case"r":s=-c.width/2}return s&&(l+=n?s:-s),s=0,l}}(s.nodesep,s.edgesep,a);return r.forEach(e,(function(e){var i;r.forEach(e,(function(e){var r=n[e];if(o.setNode(r),i){var a=n[i],s=o.edge(a,r);o.setEdge(a,r,Math.max(u(t,e,i),s||0))}i=e}))})),o}(t,e,n,o),c=o?"borderLeft":"borderRight";function l(t,e){for(var n=u.nodes(),r=n.pop(),i={};r;)i[r]?t(r):(i[r]=!0,n.push(r),n=n.concat(e(r))),r=n.pop()}return l((function(t){s[t]=u.inEdges(t).reduce((function(t,e){return Math.max(t,s[e.v]+u.edge(e))}),0)}),u.predecessors.bind(u)),l((function(e){var n=u.outEdges(e).reduce((function(t,e){return Math.min(t,s[e.w]-u.edge(e))}),Number.POSITIVE_INFINITY),r=t.node(e);n!==Number.POSITIVE_INFINITY&&r.borderType!==c&&(s[e]=Math.max(s[e],n))}),u.successors.bind(u)),r.forEach(a,(function(t){s[t]=s[n[t]]})),s}function h(t,e){return r.minBy(r.values(e),(function(e){var n=Number.NEGATIVE_INFINITY,i=Number.POSITIVE_INFINITY;return r.forIn(e,(function(e,r){var a=function(t,e){return t.node(e).width}(t,r)/2;n=Math.max(e+a,n),i=Math.min(e-a,i)})),n-i}))}function d(t,e){var n=r.values(e),i=r.min(n),a=r.max(n);r.forEach(["u","d"],(function(n){r.forEach(["l","r"],(function(o){var s,u=n+o,c=t[u];if(c!==e){var l=r.values(c);(s="l"===o?i-r.min(l):a-r.max(l))&&(t[u]=r.mapValues(c,(function(t){return t+s})))}}))}))}function p(t,e){return r.mapValues(t.ul,(function(n,i){if(e)return t[e.toLowerCase()][i];var a=r.sortBy(r.map(t,i));return(a[1]+a[2])/2}))}t.exports={positionX:function(t){var e,n=a.buildLayerMatrix(t),i=r.merge(o(t,n),s(t,n)),u={};r.forEach(["u","d"],(function(a){e="u"===a?n:r.values(n).reverse(),r.forEach(["l","r"],(function(n){"r"===n&&(e=r.map(e,(function(t){return r.values(t).reverse()})));var o=("u"===a?t.predecessors:t.successors).bind(t),s=l(t,e,i,o),c=f(t,e,s.root,s.align,"r"===n);"r"===n&&(c=r.mapValues(c,(function(t){return-t}))),u[a+n]=c}))}));var c=h(t,u);return d(u,c),p(u,t.graph().align)},findType1Conflicts:o,findType2Conflicts:s,addConflict:u,hasConflict:c,verticalAlignment:l,horizontalCompaction:f,alignCoordinates:d,findSmallestWidthAlignment:h,balance:p}},function(t,e,n){var r=n(3),i=n(7),a=n(13).Graph;t.exports={debugOrdering:function(t){var e=i.buildLayerMatrix(t),n=new a({compound:!0,multigraph:!0}).setGraph({});return r.forEach(t.nodes(),(function(e){n.setNode(e,{label:e}),n.setParent(e,"layer"+t.node(e).rank)})),r.forEach(t.edges(),(function(t){n.setEdge(t.v,t.w,{},t.name)})),r.forEach(e,(function(t,e){var i="layer"+e;n.setNode(i,{rank:"same"}),r.reduce(t,(function(t,e){return n.setEdge(t,e,{style:"invis"}),e}))})),n}}},function(t,e){t.exports="0.8.5"},function(t,e,n){t.exports={node:n(148),circle:n(149),ellipse:n(88),polygon:n(150),rect:n(151)}},function(t,e){function n(t,e){return t*e>0}t.exports=function(t,e,r,i){var a,o,s,u,c,l,f,h,d,p,y,g,m;if(a=e.y-t.y,s=t.x-e.x,c=e.x*t.y-t.x*e.y,d=a*r.x+s*r.y+c,p=a*i.x+s*i.y+c,0!==d&&0!==p&&n(d,p))return;if(o=i.y-r.y,u=r.x-i.x,l=i.x*r.y-r.x*i.y,f=o*t.x+u*t.y+l,h=o*e.x+u*e.y+l,0!==f&&0!==h&&n(f,h))return;if(0===(y=a*u-o*s))return;return g=Math.abs(y/2),{x:(m=s*l-u*c)<0?(m-g)/y:(m+g)/y,y:(m=o*c-a*l)<0?(m-g)/y:(m+g)/y}}},function(t,e,n){var r=n(37),i=n(26),a=n(136).layout;t.exports=function(){var t=n(341),e=n(344),i=n(345),c=n(346),l=n(347),f=n(348),h=n(349),d=n(350),p=n(351),y=function(n,y){!function(t){t.nodes().forEach((function(e){var n=t.node(e);r.has(n,"label")||t.children(e).length||(n.label=e),r.has(n,"paddingX")&&r.defaults(n,{paddingLeft:n.paddingX,paddingRight:n.paddingX}),r.has(n,"paddingY")&&r.defaults(n,{paddingTop:n.paddingY,paddingBottom:n.paddingY}),r.has(n,"padding")&&r.defaults(n,{paddingLeft:n.padding,paddingRight:n.padding,paddingTop:n.padding,paddingBottom:n.padding}),r.defaults(n,o),r.each(["paddingLeft","paddingRight","paddingTop","paddingBottom"],(function(t){n[t]=Number(n[t])})),r.has(n,"width")&&(n._prevWidth=n.width),r.has(n,"height")&&(n._prevHeight=n.height)})),t.edges().forEach((function(e){var n=t.edge(e);r.has(n,"label")||(n.label=""),r.defaults(n,s)}))}(y);var g=u(n,"output"),m=u(g,"clusters"),v=u(g,"edgePaths"),b=i(u(g,"edgeLabels"),y),x=t(u(g,"nodes"),y,d);a(y),l(x,y),f(b,y),c(v,y,p);var _=e(m,y);h(_,y),function(t){r.each(t.nodes(),(function(e){var n=t.node(e);r.has(n,"_prevWidth")?n.width=n._prevWidth:delete n.width,r.has(n,"_prevHeight")?n.height=n._prevHeight:delete n.height,delete n._prevWidth,delete n._prevHeight}))}(y)};return y.createNodes=function(e){return arguments.length?(t=e,y):t},y.createClusters=function(t){return arguments.length?(e=t,y):e},y.createEdgeLabels=function(t){return arguments.length?(i=t,y):i},y.createEdgePaths=function(t){return arguments.length?(c=t,y):c},y.shapes=function(t){return arguments.length?(d=t,y):d},y.arrows=function(t){return arguments.length?(p=t,y):p},y};var o={paddingLeft:10,paddingRight:10,paddingTop:10,paddingBottom:10,rx:0,ry:0,shape:"rect"},s={arrowhead:"normal",curve:i.curveLinear};function u(t,e){var n=t.select("g."+e);return n.empty()&&(n=t.append("g").attr("class",e)),n}},function(t,e,n){"use strict";var r=n(37),i=n(89),a=n(10),o=n(26);t.exports=function(t,e,n){var s,u=e.nodes().filter((function(t){return!a.isSubgraph(e,t)})),c=t.selectAll("g.node").data(u,(function(t){return t})).classed("update",!0);c.exit().remove(),c.enter().append("g").attr("class","node").style("opacity",0),(c=t.selectAll("g.node")).each((function(t){var s=e.node(t),u=o.select(this);a.applyClass(u,s.class,(u.classed("update")?"update ":"")+"node"),u.select("g.label").remove();var c=u.append("g").attr("class","label"),l=i(c,s),f=n[s.shape],h=r.pick(l.node().getBBox(),"width","height");s.elem=this,s.id&&u.attr("id",s.id),s.labelId&&c.attr("id",s.labelId),r.has(s,"width")&&(h.width=s.width),r.has(s,"height")&&(h.height=s.height),h.width+=s.paddingLeft+s.paddingRight,h.height+=s.paddingTop+s.paddingBottom,c.attr("transform","translate("+(s.paddingLeft-s.paddingRight)/2+","+(s.paddingTop-s.paddingBottom)/2+")");var d=o.select(this);d.select(".label-container").remove();var p=f(d,h,s).classed("label-container",!0);a.applyStyle(p,s.style);var y=p.node().getBBox();s.width=y.width,s.height=y.height})),s=c.exit?c.exit():c.selectAll(null);return a.applyTransition(s,e).style("opacity",0).remove(),c}},function(t,e,n){var r=n(10);t.exports=function(t,e){for(var n=t.append("text"),i=function(t){for(var e,n="",r=!1,i=0;i<t.length;++i)if(e=t[i],r){switch(e){case"n":n+="\n";break;default:n+=e}r=!1}else"\\"===e?r=!0:n+=e;return n}(e.label).split("\n"),a=0;a<i.length;a++)n.append("tspan").attr("xml:space","preserve").attr("dy","1em").attr("x","1").text(i[a]);return r.applyStyle(n,e.labelStyle),n}},function(t,e,n){var r=n(10);t.exports=function(t,e){var n=t;return n.node().appendChild(e.label),r.applyStyle(n,e.labelStyle),n}},function(t,e,n){var r=n(10),i=n(26),a=n(89);t.exports=function(t,e){var n,o=e.nodes().filter((function(t){return r.isSubgraph(e,t)})),s=t.selectAll("g.cluster").data(o,(function(t){return t}));s.selectAll("*").remove(),s.enter().append("g").attr("class","cluster").attr("id",(function(t){return e.node(t).id})).style("opacity",0),s=t.selectAll("g.cluster"),r.applyTransition(s,e).style("opacity",1),s.each((function(t){var n=e.node(t),r=i.select(this);i.select(this).append("rect");var o=r.append("g").attr("class","label");a(o,n,n.clusterLabelPos)})),s.selectAll("rect").each((function(t){var n=e.node(t),a=i.select(this);r.applyStyle(a,n.style)})),n=s.exit?s.exit():s.selectAll(null);return r.applyTransition(n,e).style("opacity",0).remove(),s}},function(t,e,n){"use strict";var r=n(37),i=n(89),a=n(10),o=n(26);t.exports=function(t,e){var n,s=t.selectAll("g.edgeLabel").data(e.edges(),(function(t){return a.edgeToId(t)})).classed("update",!0);s.exit().remove(),s.enter().append("g").classed("edgeLabel",!0).style("opacity",0),(s=t.selectAll("g.edgeLabel")).each((function(t){var n=o.select(this);n.select(".label").remove();var a=e.edge(t),s=i(n,e.edge(t),0,0).classed("label",!0),u=s.node().getBBox();a.labelId&&s.attr("id",a.labelId),r.has(a,"width")||(a.width=u.width),r.has(a,"height")||(a.height=u.height)})),n=s.exit?s.exit():s.selectAll(null);return a.applyTransition(n,e).style("opacity",0).remove(),s}},function(t,e,n){"use strict";var r=n(37),i=n(148),a=n(10),o=n(26);function s(t,e){var n=(o.line||o.svg.line)().x((function(t){return t.x})).y((function(t){return t.y}));return(n.curve||n.interpolate)(t.curve),n(e)}t.exports=function(t,e,n){var u=t.selectAll("g.edgePath").data(e.edges(),(function(t){return a.edgeToId(t)})).classed("update",!0),c=function(t,e){var n=t.enter().append("g").attr("class","edgePath").style("opacity",0);return n.append("path").attr("class","path").attr("d",(function(t){var n=e.edge(t),i=e.node(t.v).elem;return s(n,r.range(n.points.length).map((function(){return e=(t=i).getBBox(),{x:(n=t.ownerSVGElement.getScreenCTM().inverse().multiply(t.getScreenCTM()).translate(e.width/2,e.height/2)).e,y:n.f};var t,e,n})))})),n.append("defs"),n}(u,e);!function(t,e){var n=t.exit();a.applyTransition(n,e).style("opacity",0).remove()}(u,e);var l=void 0!==u.merge?u.merge(c):u;return a.applyTransition(l,e).style("opacity",1),l.each((function(t){var n=o.select(this),r=e.edge(t);r.elem=this,r.id&&n.attr("id",r.id),a.applyClass(n,r.class,(n.classed("update")?"update ":"")+"edgePath")})),l.selectAll("path.path").each((function(t){var n=e.edge(t);n.arrowheadId=r.uniqueId("arrowhead");var u=o.select(this).attr("marker-end",(function(){return"url("+(t=location.href,e=n.arrowheadId,t.split("#")[0]+"#"+e)+")";var t,e})).style("fill","none");a.applyTransition(u,e).attr("d",(function(t){return function(t,e){var n=t.edge(e),r=t.node(e.v),a=t.node(e.w),o=n.points.slice(1,n.points.length-1);return o.unshift(i(r,o[0])),o.push(i(a,o[o.length-1])),s(n,o)}(e,t)})),a.applyStyle(u,n.style)})),l.selectAll("defs *").remove(),l.selectAll("defs").each((function(t){var r=e.edge(t);(0,n[r.arrowhead])(o.select(this),r.arrowheadId,r,"arrowhead")})),l}},function(t,e,n){"use strict";var r=n(10),i=n(26);t.exports=function(t,e){function n(t){var n=e.node(t);return"translate("+n.x+","+n.y+")"}t.filter((function(){return!i.select(this).classed("update")})).attr("transform",n),r.applyTransition(t,e).style("opacity",1).attr("transform",n)}},function(t,e,n){"use strict";var r=n(10),i=n(26),a=n(37);t.exports=function(t,e){function n(t){var n=e.edge(t);return a.has(n,"x")?"translate("+n.x+","+n.y+")":""}t.filter((function(){return!i.select(this).classed("update")})).attr("transform",n),r.applyTransition(t,e).style("opacity",1).attr("transform",n)}},function(t,e,n){"use strict";var r=n(10),i=n(26);t.exports=function(t,e){var n=t.filter((function(){return!i.select(this).classed("update")}));function a(t){var n=e.node(t);return"translate("+n.x+","+n.y+")"}n.attr("transform",a),r.applyTransition(t,e).style("opacity",1).attr("transform",a),r.applyTransition(n.selectAll("rect"),e).attr("width",(function(t){return e.node(t).width})).attr("height",(function(t){return e.node(t).height})).attr("x",(function(t){return-e.node(t).width/2})).attr("y",(function(t){return-e.node(t).height/2}))}},function(t,e,n){"use strict";var r=n(151),i=n(88),a=n(149),o=n(150);t.exports={rect:function(t,e,n){var i=t.insert("rect",":first-child").attr("rx",n.rx).attr("ry",n.ry).attr("x",-e.width/2).attr("y",-e.height/2).attr("width",e.width).attr("height",e.height);return n.intersect=function(t){return r(n,t)},i},ellipse:function(t,e,n){var r=e.width/2,a=e.height/2,o=t.insert("ellipse",":first-child").attr("x",-e.width/2).attr("y",-e.height/2).attr("rx",r).attr("ry",a);return n.intersect=function(t){return i(n,r,a,t)},o},circle:function(t,e,n){var r=Math.max(e.width,e.height)/2,i=t.insert("circle",":first-child").attr("x",-e.width/2).attr("y",-e.height/2).attr("r",r);return n.intersect=function(t){return a(n,r,t)},i},diamond:function(t,e,n){var r=e.width*Math.SQRT2/2,i=e.height*Math.SQRT2/2,a=[{x:0,y:-i},{x:-r,y:0},{x:0,y:i},{x:r,y:0}],s=t.insert("polygon",":first-child").attr("points",a.map((function(t){return t.x+","+t.y})).join(" "));return n.intersect=function(t){return o(n,a,t)},s}}},function(t,e,n){var r=n(10);function i(t,e,n,i){var a=t.append("marker").attr("id",e).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerUnits","strokeWidth").attr("markerWidth",8).attr("markerHeight",6).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").style("stroke-width",1).style("stroke-dasharray","1,0");r.applyStyle(a,n[i+"Style"]),n[i+"Class"]&&a.attr("class",n[i+"Class"])}t.exports={default:i,normal:i,vee:function(t,e,n,i){var a=t.append("marker").attr("id",e).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerUnits","strokeWidth").attr("markerWidth",8).attr("markerHeight",6).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 L 4 5 z").style("stroke-width",1).style("stroke-dasharray","1,0");r.applyStyle(a,n[i+"Style"]),n[i+"Class"]&&a.attr("class",n[i+"Class"])},undirected:function(t,e,n,i){var a=t.append("marker").attr("id",e).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerUnits","strokeWidth").attr("markerWidth",8).attr("markerHeight",6).attr("orient","auto").append("path").attr("d","M 0 5 L 10 5").style("stroke-width",1).style("stroke-dasharray","1,0");r.applyStyle(a,n[i+"Style"]),n[i+"Class"]&&a.attr("class",n[i+"Class"])}}},function(t,e){t.exports="0.6.4"},function(t,e,n){"use strict";var r;function i(t){return r=r||document.createElement("div"),t=escape(t).replace(/%26/g,"&").replace(/%23/g,"#").replace(/%3B/g,";"),r.innerHTML=t,unescape(r.textContent)}n.r(e);var a=n(0),o=n(152),s=n.n(o),u=n(39);function c(t){return(c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var l={},f=function(t){!function(t){for(var e=Object.keys(t),n=0;n<e.length;n++)if("object"===c(t[e[n]])&&null!=t[e[n]])for(var r=Object.keys(t[e[n]]),i=0;i<r.length;i++)void 0===l[e[n]]&&(l[e[n]]={}),l[e[n]][r[i]]=t[e[n]][r[i]];else l[e[n]]=t[e[n]]}(t)},h=function(){return l},d=n(18),p=n.n(d),y=1,g=2,m=3,v=4,b=5,x={debug:function(){},info:function(){},warn:function(){},error:function(){},fatal:function(){}},_=function(t){x.trace=function(){},x.debug=function(){},x.info=function(){},x.warn=function(){},x.error=function(){},x.fatal=function(){},t<=b&&(x.fatal=console.error?console.error.bind(console,w("FATAL"),"color: orange"):console.log.bind(console,"",w("FATAL"))),t<=v&&(x.error=console.error?console.error.bind(console,w("ERROR"),"color: orange"):console.log.bind(console,"",w("ERROR"))),t<=m&&(x.warn=console.warn?console.warn.bind(console,w("WARN"),"color: orange"):console.log.bind(console,"",w("WARN"))),t<=g&&(x.info=console.info?console.info.bind(console,w("INFO"),"color: lightblue"):console.log.bind(console,"",w("INFO"))),t<=y&&(x.debug=console.debug?console.debug.bind(console,w("DEBUG"),"color: lightgreen"):console.log.bind(console,"",w("DEBUG")))},w=function(t){var e=p()().format("ss.SSS");return"%c".concat(e," : ").concat(t," : ")},k=n(63),E={curveBasis:a.curveBasis,curveBasisClosed:a.curveBasisClosed,curveBasisOpen:a.curveBasisOpen,curveLinear:a.curveLinear,curveLinearClosed:a.curveLinearClosed,curveMonotoneX:a.curveMonotoneX,curveMonotoneY:a.curveMonotoneY,curveNatural:a.curveNatural,curveStep:a.curveStep,curveStepAfter:a.curveStepAfter,curveStepBefore:a.curveStepBefore},A=function(t,e){if(!t)return e;var n="curve".concat(t.charAt(0).toUpperCase()+t.slice(1));return E[n]||e},T=function(t,e){return t&&e?Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2)):0},S=function(t){for(var e="",n="",r=0;r<t.length;r++)void 0!==t[r]&&(t[r].startsWith("color:")||t[r].startsWith("text-align:")?n=n+t[r]+";":e=e+t[r]+";");return{style:e,labelStyle:n}},M=0,O=function(){return M++,"id-"+Math.random().toString(36).substr(2,12)+"-"+M},N=function(t){return t=t.replace(/^\s*%%.*\n/g,"\n"),x.debug("Detecting diagram type based on the text "+t),t.match(/^\s*sequenceDiagram/)?"sequence":t.match(/^\s*gantt/)?"gantt":t.match(/^\s*classDiagram/)?"class":t.match(/^\s*stateDiagram-v2/)?"stateDiagram":t.match(/^\s*stateDiagram/)?"state":t.match(/^\s*gitGraph/)?"git":t.match(/^\s*flowchart/)?"flowchart-v2":t.match(/^\s*info/)?"info":t.match(/^\s*pie/)?"pie":t.match(/^\s*erDiagram/)?"er":t.match(/^\s*journey/)?"journey":"flowchart"},C=function(t,e){for(var n=0;n<e.length;n++)if(e[n].match(t))return n;return-1},D=function(t){return function(t){var e,n=0;t.forEach((function(t){n+=T(t,e),e=t}));var r,i=n/2;return e=void 0,t.forEach((function(t){if(e&&!r){var n=T(t,e);if(n<i)i-=n;else{var a=i/n;a<=0&&(r=e),a>=1&&(r={x:t.x,y:t.y}),a>0&&a<1&&(r={x:(1-a)*e.x+a*t.x,y:(1-a)*e.y+a*t.y})}}e=t})),r}(t)},L=function(t,e,n){var r;e[0]!==n&&(e=e.reverse()),e.forEach((function(t){T(t,r),r=t}));var i,a=25;r=void 0,e.forEach((function(t){if(r&&!i){var e=T(t,r);if(e<a)a-=e;else{var n=a/e;n<=0&&(i=r),n>=1&&(i={x:t.x,y:t.y}),n>0&&n<1&&(i={x:(1-n)*r.x+n*t.x,y:(1-n)*r.y+n*t.y})}}r=t}));var o=t?10:5,s=Math.atan2(e[0].y-i.y,e[0].x-i.x),u={x:0,y:0};return u.x=Math.sin(s)*o+(e[0].x+i.x)/2,u.y=-Math.cos(s)*o+(e[0].y+i.y)/2,u},F=function(t,e){var n=t.trim();if(n)return"loose"!==e.securityLevel?Object(k.sanitizeUrl)(n):n},I=n(2),P=n.n(I),R=/<br\s*\/?>/gi,B=function(t){return t.replace(R,"#br#")},j=function(t){return t.replace(/#br#/g,"<br/>")},Y=function(t){if(!t)return 1;var e=B(t);return(e=e.replace(/\\n/g,"#br#")).split("#br#")},z=function(t,e){var n=t,r=!0;return!e.flowchart||!1!==e.flowchart.htmlLabels&&"false"!==e.flowchart.htmlLabels||(r=!1),"loose"!==e.securityLevel&&r&&(n=(n=(n=B(n)).replace(/</g,"&lt;").replace(/>/g,"&gt;")).replace(/=/g,"&equals;"),n=j(n)),n},U=R;function $(t){return($="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var G,V=h(),H={},W=[],q=[],X=[],Z={},J={},Q=0,K=!0,tt=[],et=function(t,e,n,r){var i=t,a=e;i[0].match(/\d/)&&(i=""+i),a[0].match(/\d/)&&(a=""+a);var o={start:i,end:a,type:void 0,text:""};void 0!==(r=n.text)&&(o.text=z(r.trim(),V),'"'===o.text[0]&&'"'===o.text[o.text.length-1]&&(o.text=o.text.substring(1,o.text.length-1))),void 0!==n&&(o.type=n.type,o.stroke=n.stroke),W.push(o)},nt=function(t,e){t.split(",").forEach((function(t){var n=t;t[0].match(/\d/)&&(n=""+n),void 0!==H[n]&&H[n].classes.push(e),void 0!==Z[n]&&Z[n].classes.push(e)}))},rt=function(t,e){t.split(",").forEach((function(t){void 0!==e&&(J[t]=z(e,V))}))},it=function(t){var e=Object(a.select)(".mermaidTooltip");null===(e._groups||e)[0][0]&&(e=Object(a.select)("body").append("div").attr("class","mermaidTooltip").style("opacity",0)),Object(a.select)(t).select("svg").selectAll("g.node").on("mouseover",(function(){var t=Object(a.select)(this);if(null!==t.attr("title")){var n=this.getBoundingClientRect();e.transition().duration(200).style("opacity",".9"),e.html(t.attr("title")).style("left",n.left+(n.right-n.left)/2+"px").style("top",n.top-14+document.body.scrollTop+"px"),t.classed("hover",!0)}})).on("mouseout",(function(){e.transition().duration(500).style("opacity",0),Object(a.select)(this).classed("hover",!1)}))};tt.push(it);var at=function(t){for(var e=0;e<X.length;e++)if(X[e].id===t)return e;return-1},ot=-1,st=[],ut={addVertex:function(t,e,n,r,i){var a,o=t;void 0!==o&&0!==o.trim().length&&(o[0].match(/\d/)&&(o=""+o),void 0===H[o]&&(H[o]={id:o,styles:[],classes:[]}),void 0!==e?('"'===(a=z(e.trim(),V))[0]&&'"'===a[a.length-1]&&(a=a.substring(1,a.length-1)),H[o].text=a):void 0===H[o].text&&(H[o].text=t),void 0!==n&&(H[o].type=n),null!=r&&r.forEach((function(t){H[o].styles.push(t)})),null!=i&&i.forEach((function(t){H[o].classes.push(t)})))},addLink:function(t,e,n,r){var i,a;for(i=0;i<t.length;i++)for(a=0;a<e.length;a++)et(t[i],e[a],n,r)},updateLinkInterpolate:function(t,e){t.forEach((function(t){"default"===t?W.defaultInterpolate=e:W[t].interpolate=e}))},updateLink:function(t,e){t.forEach((function(t){"default"===t?W.defaultStyle=e:(-1===C("fill",e)&&e.push("fill:none"),W[t].style=e)}))},addClass:function(t,e){void 0===q[t]&&(q[t]={id:t,styles:[],textStyles:[]}),null!=e&&e.forEach((function(e){if(e.match("color")){var n=e.replace("fill","bgFill").replace("color","fill");q[t].textStyles.push(n)}q[t].styles.push(e)}))},setDirection:function(t){(G=t).match(/.*</)&&(G="RL"),G.match(/.*\^/)&&(G="BT"),G.match(/.*>/)&&(G="LR"),G.match(/.*v/)&&(G="TB")},setClass:nt,getTooltip:function(t){return J[t]},setClickEvent:function(t,e,n){t.split(",").forEach((function(t){!function(t,e){var n=t;t[0].match(/\d/)&&(n=""+n),"loose"===V.securityLevel&&void 0!==e&&void 0!==H[n]&&tt.push((function(){var t=document.querySelector('[id="'.concat(n,'"]'));null!==t&&t.addEventListener("click",(function(){window[e](n)}),!1)}))}(t,e)})),rt(t,n),nt(t,"clickable")},setLink:function(t,e,n){t.split(",").forEach((function(t){var n=t;t[0].match(/\d/)&&(n=""+n),void 0!==H[n]&&(H[n].link=F(e,V))})),rt(t,n),nt(t,"clickable")},bindFunctions:function(t){tt.forEach((function(e){e(t)}))},getDirection:function(){return G.trim()},getVertices:function(){return H},getEdges:function(){return W},getClasses:function(){return q},clear:function(){H={},q={},W=[],(tt=[]).push(it),X=[],Z={},Q=0,J=[],K=!0},defaultStyle:function(){return"fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;"},addSubGraph:function(t,e,n){var r=t.trim(),i=n;t===n&&n.match(/\s/)&&(r=void 0);var a,o,s,u=[];a=u.concat.apply(u,e),o={boolean:{},number:{},string:{}},s=[],u=a.filter((function(t){var e=$(t);return""!==t.trim()&&(e in o?!o[e].hasOwnProperty(t)&&(o[e][t]=!0):!(s.indexOf(t)>=0)&&s.push(t))}));for(var c=0;c<u.length;c++)u[c][0].match(/\d/)&&(u[c]=""+u[c]);(r=r||"subGraph"+Q)[0].match(/\d/)&&(r=""+r),i=z(i=i||"",V),Q+=1;var l={id:r,nodes:u,title:i.trim(),classes:[]};return X.push(l),Z[r]=l,r},getDepthFirstPos:function(t){return st[t]},indexNodes:function(){ot=-1,X.length>0&&function t(e,n){var r=X[n].nodes;if(!((ot+=1)>2e3)){if(st[ot]=n,X[n].id===e)return{result:!0,count:0};for(var i=0,a=1;i<r.length;){var o=at(r[i]);if(o>=0){var s=t(e,o);if(s.result)return{result:!0,count:a+s.count};a+=s.count}i+=1}return{result:!1,count:a}}}("none",X.length-1)},getSubGraphs:function(){return X},destructLink:function(t,e){var n,r=function(t){switch(t.trim()){case"--x":return{type:"arrow_cross",stroke:"normal"};case"--\x3e":return{type:"arrow_point",stroke:"normal"};case"<--\x3e":return{type:"double_arrow_point",stroke:"normal"};case"x--x":return{type:"double_arrow_cross",stroke:"normal"};case"o--o":return{type:"double_arrow_circle",stroke:"normal"};case"o.-o":return{type:"double_arrow_circle",stroke:"dotted"};case"<==>":return{type:"double_arrow_point",stroke:"thick"};case"o==o":return{type:"double_arrow_circle",stroke:"thick"};case"x==x":return{type:"double_arrow_cross",stroke:"thick"};case"x.-x":case"x-.-x":return{type:"double_arrow_cross",stroke:"dotted"};case"<.->":case"<-.->":return{type:"double_arrow_point",stroke:"dotted"};case"o-.-o":return{type:"double_arrow_circle",stroke:"dotted"};case"--o":return{type:"arrow_circle",stroke:"normal"};case"---":return{type:"arrow_open",stroke:"normal"};case"-.-x":return{type:"arrow_cross",stroke:"dotted"};case"-.->":return{type:"arrow_point",stroke:"dotted"};case"-.-o":return{type:"arrow_circle",stroke:"dotted"};case"-.-":return{type:"arrow_open",stroke:"dotted"};case".-x":return{type:"arrow_cross",stroke:"dotted"};case".->":return{type:"arrow_point",stroke:"dotted"};case".-o":return{type:"arrow_circle",stroke:"dotted"};case".-":return{type:"arrow_open",stroke:"dotted"};case"==x":return{type:"arrow_cross",stroke:"thick"};case"==>":return{type:"arrow_point",stroke:"thick"};case"==o":return{type:"arrow_circle",stroke:"thick"};case"===":return{type:"arrow_open",stroke:"thick"}}}(t);if(e){if((n=function(t){switch(t.trim()){case"<--":return{type:"arrow_point",stroke:"normal"};case"x--":return{type:"arrow_cross",stroke:"normal"};case"o--":return{type:"arrow_circle",stroke:"normal"};case"<-.":return{type:"arrow_point",stroke:"dotted"};case"x-.":return{type:"arrow_cross",stroke:"dotted"};case"o-.":return{type:"arrow_circle",stroke:"dotted"};case"<==":return{type:"arrow_point",stroke:"thick"};case"x==":return{type:"arrow_cross",stroke:"thick"};case"o==":return{type:"arrow_circle",stroke:"thick"};case"--":return{type:"arrow_open",stroke:"normal"};case"==":return{type:"arrow_open",stroke:"thick"};case"-.":return{type:"arrow_open",stroke:"dotted"}}}(e)).stroke!==r.stroke)return{type:"INVALID",stroke:"INVALID"};if("arrow_open"===n.type)n.type=r.type;else{if(n.type!==r.type)return{type:"INVALID",stroke:"INVALID"};n.type="double_"+n.type}return"double_arrow"===n.type&&(n.type="double_arrow_point"),n}return r},lex:{firstGraph:function(){return!!K&&(K=!1,!0)}}},ct=n(22),lt=n.n(ct),ft=n(5),ht=n.n(ft),dt=n(44),pt=n.n(dt);function yt(t,e,n){var r=.9*(e.width+e.height),i=[{x:r/2,y:0},{x:r,y:-r/2},{x:r/2,y:-r},{x:0,y:-r/2}],a=Tt(t,r,r,i);return n.intersect=function(t){return ht.a.intersect.polygon(n,i,t)},a}function gt(t,e,n){var r=e.height,i=r/4,a=e.width+2*i,o=[{x:i,y:0},{x:a-i,y:0},{x:a,y:-r/2},{x:a-i,y:-r},{x:i,y:-r},{x:0,y:-r/2}],s=Tt(t,a,r,o);return n.intersect=function(t){return ht.a.intersect.polygon(n,o,t)},s}function mt(t,e,n){var r=e.width,i=e.height,a=[{x:-i/2,y:0},{x:r,y:0},{x:r,y:-i},{x:-i/2,y:-i},{x:0,y:-i/2}],o=Tt(t,r,i,a);return n.intersect=function(t){return ht.a.intersect.polygon(n,a,t)},o}function vt(t,e,n){var r=e.width,i=e.height,a=[{x:-2*i/6,y:0},{x:r-i/6,y:0},{x:r+2*i/6,y:-i},{x:i/6,y:-i}],o=Tt(t,r,i,a);return n.intersect=function(t){return ht.a.intersect.polygon(n,a,t)},o}function bt(t,e,n){var r=e.width,i=e.height,a=[{x:2*i/6,y:0},{x:r+i/6,y:0},{x:r-2*i/6,y:-i},{x:-i/6,y:-i}],o=Tt(t,r,i,a);return n.intersect=function(t){return ht.a.intersect.polygon(n,a,t)},o}function xt(t,e,n){var r=e.width,i=e.height,a=[{x:-2*i/6,y:0},{x:r+2*i/6,y:0},{x:r-i/6,y:-i},{x:i/6,y:-i}],o=Tt(t,r,i,a);return n.intersect=function(t){return ht.a.intersect.polygon(n,a,t)},o}function _t(t,e,n){var r=e.width,i=e.height,a=[{x:i/6,y:0},{x:r-i/6,y:0},{x:r+2*i/6,y:-i},{x:-2*i/6,y:-i}],o=Tt(t,r,i,a);return n.intersect=function(t){return ht.a.intersect.polygon(n,a,t)},o}function wt(t,e,n){var r=e.width,i=e.height,a=[{x:0,y:0},{x:r+i/2,y:0},{x:r,y:-i/2},{x:r+i/2,y:-i},{x:0,y:-i}],o=Tt(t,r,i,a);return n.intersect=function(t){return ht.a.intersect.polygon(n,a,t)},o}function kt(t,e,n){var r=e.height,i=e.width+r/4,a=t.insert("rect",":first-child").attr("rx",r/2).attr("ry",r/2).attr("x",-i/2).attr("y",-r/2).attr("width",i).attr("height",r);return n.intersect=function(t){return ht.a.intersect.rect(n,t)},a}function Et(t,e,n){var r=e.width,i=e.height,a=[{x:0,y:0},{x:r,y:0},{x:r,y:-i},{x:0,y:-i},{x:0,y:0},{x:-8,y:0},{x:r+8,y:0},{x:r+8,y:-i},{x:-8,y:-i},{x:-8,y:0}],o=Tt(t,r,i,a);return n.intersect=function(t){return ht.a.intersect.polygon(n,a,t)},o}function At(t,e,n){var r=e.width,i=r/2,a=i/(2.5+r/50),o=e.height+a,s="M 0,"+a+" a "+i+","+a+" 0,0,0 "+r+" 0 a "+i+","+a+" 0,0,0 "+-r+" 0 l 0,"+o+" a "+i+","+a+" 0,0,0 "+r+" 0 l 0,"+-o,u=t.attr("label-offset-y",a).insert("path",":first-child").attr("d",s).attr("transform","translate("+-r/2+","+-(o/2+a)+")");return n.intersect=function(t){var e=ht.a.intersect.rect(n,t),r=e.x-n.x;if(0!=i&&(Math.abs(r)<n.width/2||Math.abs(r)==n.width/2&&Math.abs(e.y-n.y)>n.height/2-a)){var o=a*a*(1-r*r/(i*i));0!=o&&(o=Math.sqrt(o)),o=a-o,t.y-n.y>0&&(o=-o),e.y+=o}return e},u}function Tt(t,e,n,r){return t.insert("polygon",":first-child").attr("points",r.map((function(t){return t.x+","+t.y})).join(" ")).attr("transform","translate("+-e/2+","+n/2+")")}var St={addToRender:function(t){t.shapes().question=yt,t.shapes().hexagon=gt,t.shapes().stadium=kt,t.shapes().subroutine=Et,t.shapes().cylinder=At,t.shapes().rect_left_inv_arrow=mt,t.shapes().lean_right=vt,t.shapes().lean_left=bt,t.shapes().trapezoid=xt,t.shapes().inv_trapezoid=_t,t.shapes().rect_right_inv_arrow=wt},addToRenderV2:function(t){t({question:yt}),t({hexagon:gt}),t({stadium:kt}),t({subroutine:Et}),t({cylinder:At}),t({rect_left_inv_arrow:mt}),t({lean_right:vt}),t({lean_left:bt}),t({trapezoid:xt}),t({inv_trapezoid:_t}),t({rect_right_inv_arrow:wt})}},Mt={},Ot=function(t,e,n){var r=Object(a.select)('[id="'.concat(n,'"]'));Object.keys(t).forEach((function(n){var i=t[n],a="default";i.classes.length>0&&(a=i.classes.join(" "));var o,s=S(i.styles),u=void 0!==i.text?i.text:i.id;if(h().flowchart.htmlLabels){var c={label:u.replace(/fa[lrsb]?:fa-[\w-]+/g,(function(t){return"<i class='".concat(t.replace(":"," "),"'></i>")}))};(o=pt()(r,c).node()).parentNode.removeChild(o)}else{var l=document.createElementNS("http://www.w3.org/2000/svg","text");l.setAttribute("style",s.labelStyle.replace("color:","fill:"));for(var f=u.split(U),d=0;d<f.length;d++){var p=document.createElementNS("http://www.w3.org/2000/svg","tspan");p.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),p.setAttribute("dy","1em"),p.setAttribute("x","1"),p.textContent=f[d],l.appendChild(p)}o=l}var y=0,g="";switch(i.type){case"round":y=5,g="rect";break;case"square":g="rect";break;case"diamond":g="question";break;case"hexagon":g="hexagon";break;case"odd":g="rect_left_inv_arrow";break;case"lean_right":g="lean_right";break;case"lean_left":g="lean_left";break;case"trapezoid":g="trapezoid";break;case"inv_trapezoid":g="inv_trapezoid";break;case"odd_right":g="rect_left_inv_arrow";break;case"circle":g="circle";break;case"ellipse":g="ellipse";break;case"stadium":g="stadium";break;case"subroutine":g="subroutine";break;case"cylinder":g="cylinder";break;case"group":g="rect";break;default:g="rect"}e.setNode(i.id,{labelType:"svg",labelStyle:s.labelStyle,shape:g,label:o,rx:y,ry:y,class:a,style:s.style,id:i.id})}))},Nt=function(t,e){var n,r,i=0;if(void 0!==t.defaultStyle){var o=S(t.defaultStyle);n=o.style,r=o.labelStyle}t.forEach((function(o){i++;var s={};"arrow_open"===o.type?s.arrowhead="none":s.arrowhead="normal";var u="",c="";if(void 0!==o.style){var l=S(o.style);u=l.style,c=l.labelStyle}else switch(o.stroke){case"normal":u="fill:none",void 0!==n&&(u=n),void 0!==r&&(c=r);break;case"dotted":u="fill:none;stroke-width:2px;stroke-dasharray:3;";break;case"thick":u=" stroke-width: 3.5px;fill:none"}s.style=u,s.labelStyle=c,void 0!==o.interpolate?s.curve=A(o.interpolate,a.curveLinear):void 0!==t.defaultInterpolate?s.curve=A(t.defaultInterpolate,a.curveLinear):s.curve=A(Mt.curve,a.curveLinear),void 0===o.text?void 0!==o.style&&(s.arrowheadStyle="fill: #333"):(s.arrowheadStyle="fill: #333",s.labelpos="c",h().flowchart.htmlLabels?(s.labelType="html",s.label='<span class="edgeLabel">'+o.text+"</span>"):(s.labelType="text",s.label=o.text.replace(U,"\n"),void 0===o.style&&(s.style=s.style||"stroke: #333; stroke-width: 1.5px;fill:none"),s.labelStyle=s.labelStyle.replace("color:","fill:"))),e.setEdge(o.start,o.end,s,i)}))},Ct=function(t){for(var e=Object.keys(t),n=0;n<e.length;n++)Mt[e[n]]=t[e[n]]},Dt=function(t){x.info("Extracting classes"),ut.clear();var e=lt.a.parser;return e.yy=ut,e.parse(t),ut.getClasses()},Lt=function(t,e){x.info("Drawing flowchart"),ut.clear();var n=lt.a.parser;n.yy=ut;try{n.parse(t)}catch(t){x.debug("Parsing failed")}var r=ut.getDirection();void 0===r&&(r="TD");for(var i,o=h().flowchart,s=o.nodeSpacing||50,u=o.rankSpacing||50,c=new P.a.Graph({multigraph:!0,compound:!0}).setGraph({rankdir:r,nodesep:s,ranksep:u,marginx:8,marginy:8}).setDefaultEdgeLabel((function(){return{}})),l=ut.getSubGraphs(),f=l.length-1;f>=0;f--)i=l[f],ut.addVertex(i.id,i.title,"group",void 0,i.classes);var d=ut.getVertices(),p=ut.getEdges(),y=0;for(y=l.length-1;y>=0;y--){i=l[y],Object(a.selectAll)("cluster").append("text");for(var g=0;g<i.nodes.length;g++)c.setParent(i.nodes[g],i.id)}Ot(d,c,e),Nt(p,c);var m=new(0,ht.a.render);St.addToRender(m),m.arrows().none=function(t,e,n,r){var i=t.append("marker").attr("id",e).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerUnits","strokeWidth").attr("markerWidth",8).attr("markerHeight",6).attr("orient","auto").append("path").attr("d","M 0 0 L 0 0 L 0 0 z");ht.a.util.applyStyle(i,n[r+"Style"])},m.arrows().normal=function(t,e){t.append("marker").attr("id",e).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerUnits","strokeWidth").attr("markerWidth",8).attr("markerHeight",6).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowheadPath").style("stroke-width",1).style("stroke-dasharray","1,0")};var v=Object(a.select)('[id="'.concat(e,'"]')),b=Object(a.select)("#"+e+" g");m(b,c),b.selectAll("g.node").attr("title",(function(){return ut.getTooltip(this.id)}));var _=v.node().getBBox(),w=_.width+16,k=_.height+16;o.useMaxWidth?(v.attr("width","100%"),v.attr("style","max-width: ".concat(w,"px;"))):(v.attr("height",k),v.attr("width",w));var E="".concat(_.x-8," ").concat(_.y-8," ").concat(w," ").concat(k);for(x.debug("viewBox ".concat(E)),v.attr("viewBox",E),ut.indexNodes("subGraph"+y),y=0;y<l.length;y++)if("undefined"!==(i=l[y]).title){var A=document.querySelectorAll("#"+e+' [id="'+i.id+'"] rect'),T=document.querySelectorAll("#"+e+' [id="'+i.id+'"]'),S=A[0].x.baseVal.value,M=A[0].y.baseVal.value,O=A[0].width.baseVal.value,N=Object(a.select)(T[0]).select(".label");N.attr("transform","translate(".concat(S+O/2,", ").concat(M+14,")")),N.attr("id",e+"Text");for(var C=0;C<i.classes.length;C++)T[0].classList.add(i.classes[C])}o.htmlLabels;for(var D=document.querySelectorAll('[id="'+e+'"] .edgeLabel .label'),L=0;L<D.length;L++){var F=D[L],I=F.getBBox(),R=document.createElementNS("http://www.w3.org/2000/svg","rect");R.setAttribute("rx",0),R.setAttribute("ry",0),R.setAttribute("width",I.width),R.setAttribute("height",I.height),R.setAttribute("style","fill:#e8e8e8;"),F.insertBefore(R,F.firstChild)}Object.keys(d).forEach((function(t){var n=d[t];if(n.link){var r=Object(a.select)("#"+e+' [id="'+t+'"]');if(r){var i=document.createElementNS("http://www.w3.org/2000/svg","a");i.setAttributeNS("http://www.w3.org/2000/svg","class",n.classes.join(" ")),i.setAttributeNS("http://www.w3.org/2000/svg","href",n.link),i.setAttributeNS("http://www.w3.org/2000/svg","rel","noopener");var o=r.insert((function(){return i}),":first-child"),s=r.select(".label-container");s&&o.append((function(){return s.node()}));var u=r.select(".label");u&&o.append((function(){return u.node()}))}}}))},Ft=n(21),It=n.n(Ft),Pt={extension:function(t,e,n){x.trace("Making markers for ",n),t.append("defs").append("marker").attr("id",e+"-extensionStart").attr("class","extension "+e).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),t.append("defs").append("marker").attr("id",e+"-extensionEnd "+e).attr("class","extension "+e).attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z")},composition:function(t,e){t.append("defs").append("marker").attr("id",e+"-compositionStart").attr("class","extension "+e).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",e+"-compositionEnd").attr("class","extension "+e).attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},aggregation:function(t,e){t.append("defs").append("marker").attr("id",e+"-aggregationStart").attr("class","extension "+e).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",e+"-aggregationEnd").attr("class",e).attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},dependency:function(t,e){t.append("defs").append("marker").attr("id",e+"-dependencyStart").attr("class","extension "+e).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",e+"-dependencyEnd").attr("class",e).attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},point:function(t,e){t.append("marker").attr("id",e+"-pointEnd").attr("class",e).attr("viewBox","0 0 10 10").attr("refX",10).attr("refY",5).attr("markerUnits","strokeWidth").attr("markerWidth",8).attr("markerHeight",8).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",e+"-pointStart").attr("class",e).attr("viewBox","0 0 10 10").attr("refX",0).attr("refY",5).attr("markerUnits","strokeWidth").attr("markerWidth",8).attr("markerHeight",8).attr("orient","auto").append("path").attr("d","M 0 5 L 10 10 L 10 0 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},circle:function(t,e){t.append("marker").attr("id",e+"-circleEnd").attr("class",e).attr("viewBox","0 0 10 10").attr("refX",11).attr("refY",5).attr("markerUnits","strokeWidth").attr("markerWidth",7).attr("markerHeight",7).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",e+"-circleStart").attr("class",e).attr("viewBox","0 0 10 10").attr("refX",-1).attr("refY",5).attr("markerUnits","strokeWidth").attr("markerWidth",7).attr("markerHeight",7).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},cross:function(t,e){t.append("marker").attr("id",e+"-crossEnd").attr("class",e).attr("viewBox","0 0 11 11").attr("refX",12).attr("refY",5.2).attr("markerUnits","strokeWidth").attr("markerWidth",7).attr("markerHeight",7).attr("orient","auto").append("path").attr("stroke","black").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),t.append("marker").attr("id",e+"-crossStart").attr("class",e).attr("viewBox","0 0 11 11").attr("refX",-1).attr("refY",5.2).attr("markerUnits","strokeWidth").attr("markerWidth",7).attr("markerHeight",7).attr("orient","auto").append("path").attr("stroke","black").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0")},barb:function(t,e){t.append("defs").append("marker").attr("id",e+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits",0).attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")}},Rt=function(t,e,n,r){e.forEach((function(e){Pt[e](t,n,r)}))},Bt=function(t,e,n){var r=document.createElementNS("http://www.w3.org/2000/svg","text");r.setAttribute("style",e.replace("color:","fill:"));var i=[];i="string"==typeof t?t.split(/\\n|\n|<br\s*\/?>/gi):Array.isArray(t)?t:[];for(var a=0;a<i.length;a++){var o=document.createElementNS("http://www.w3.org/2000/svg","tspan");o.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),o.setAttribute("dy","1em"),o.setAttribute("x","0"),n?o.setAttribute("class","title-row"):o.setAttribute("class","row"),o.textContent=i[a].trim(),r.appendChild(o)}return r},jt=function(t,e,n){var r;r=n||"node default";var i=t.insert("g").attr("class",r).attr("id",e.id),a=i.insert("g").attr("class","label"),o=a.node().appendChild(Bt(e.labelText,e.labelStyle)).getBBox(),s=e.padding/2;return a.attr("transform","translate("+-o.width/2+", "+-o.height/2+")"),{shapeSvg:i,bbox:o,halfPadding:s,label:a}},Yt=function(t,e){var n=e.node().getBBox();t.width=n.width,t.height=n.height};function zt(t,e,n,r){return t.insert("polygon",":first-child").attr("points",r.map((function(t){return t.x+","+t.y})).join(" ")).attr("class","label-container").attr("transform","translate("+-e/2+","+n/2+")")}var Ut={},$t={},Gt={},Vt=function(t,e){return x.debug("In isDecendant",e," ",t," = ",$t[e].indexOf(t)>=0),$t[e].indexOf(t)>=0},Ht=function t(e,n,r,i){x.info("Copying children of ",e,"root",i,"data",n.node(e),i);var a=n.children(e)||[];e!==i&&a.push(e),x.debug("Copying (nodes) clusterId",e,"nodes",a),a.forEach((function(a){if(n.children(a).length>0)t(a,n,r,i);else{var o=n.node(a);x.info("cp ",a," to ",i," with parent ",e),r.setNode(a,o),x.debug("Setting parent",a,n.parent(a)),i!==n.parent(a)&&r.setParent(a,n.parent(a)),e!==i&&a!==e?(x.debug("Setting parent",a,e),r.setParent(a,e)):(x.info("In copy ",e,"root",i,"data",n.node(e),i),x.debug("Not Setting parent for node=",a,"cluster!==rootId",e!==i,"node!==clusterId",a!==e));var s=n.edges(a);x.debug("Copying Edges",s),s.forEach((function(t){x.info("Edge",t);var a=n.edge(t.v,t.w,t.name);x.info("Edge data",a,i);try{!function(t,e){return x.info("Decendants of ",e," is ",$t[e]),x.info("Edge is ",t),t.v!==e&&(t.w!==e&&($t[e]?(x.info("Here "),$t[e].indexOf(t.v)>=0||(!!Vt(t.v,e)||(!!Vt(t.w,e)||$t[e].indexOf(t.w)>=0))):(x.debug("Tilt, ",e,",not in decendants"),!1)))}(t,i)?x.info("Skipping copy of edge ",t.v,"--\x3e",t.w," rootId: ",i," clusterId:",e):(x.info("Copying as ",t.v,t.w,a,t.name),r.setEdge(t.v,t.w,a,t.name),x.info("newGraph edges ",r.edges(),r.edge(r.edges()[0])))}catch(t){x.error(t)}}))}x.debug("Removing node",a),n.removeNode(a)}))},Wt=function t(e,n){x.trace("Searching",e);var r=n.children(e);if(r.length<1)return x.trace("This is a valid node",e),e;for(var i=0;i<r.length;i++){var a=t(r[i],n);if(a)return x.trace("Found replacement for",e," => ",a),a}},qt=function(t){return Ut[t]&&Ut[t].externalConnections&&Ut[t]?Ut[t].id:t},Xt=function(t,e){!t||e>10?x.debug("Opting out, no graph "):(x.debug("Opting in, graph "),t.nodes().forEach((function(e){t.children(e).length>0&&(x.trace("Cluster identified",e," Replacement id in edges: ",Wt(e,t)),$t[e]=function t(e,n){for(var r=n.children(e),i=[].concat(r),a=0;a<r.length;a++)Gt[r[a]]=e,i=i.concat(t(r[a],n));return i}(e,t),Ut[e]={id:Wt(e,t),clusterData:t.node(e)})})),t.nodes().forEach((function(e){var n=t.children(e),r=t.edges();n.length>0&&(x.debug("Cluster identified",e,$t),r.forEach((function(t){t.v!==e&&t.w!==e&&(Vt(t.v,e)^Vt(t.w,e)&&(x.debug("Edge: ",t," leaves cluster ",e),x.debug("Decendants of ",e,": ",$t[e]),Ut[e].externalConnections=!0))})))})),Zt(t,0),t.edges().forEach((function(e){var n=t.edge(e);x.trace("Edge "+e.v+" -> "+e.w+": "+JSON.stringify(e)),x.trace("Edge "+e.v+" -> "+e.w+": "+JSON.stringify(t.edge(e)));var r=e.v,i=e.w;x.trace("Fix",Ut,"ids:",e.v,e.w,"Translateing: ",Ut[e.v],Ut[e.w]),(Ut[e.v]||Ut[e.w])&&(x.trace("Fixing and trixing - removing",e.v,e.w,e.name),r=qt(e.v),i=qt(e.w),t.removeEdge(e.v,e.w,e.name),r!==e.v&&(n.fromCluster=e.v),i!==e.w&&(n.toCluster=e.w),x.trace("Replacing with",r,i,e.name),t.setEdge(r,i,n,e.name))})),x.debug("Adjusted Graph",P.a.json.write(t)),x.trace(Ut))},Zt=function t(e,n){if(x.debug("extractor - ",n,P.a.json.write(e),e.children("D")),n>10)x.error("Bailing out");else{for(var r=e.nodes(),i=!1,a=0;a<r.length;a++){var o=r[a],s=e.children(o);i=i||s.length>0}if(i){x.debug("Nodes = ",r,n);for(var u=0;u<r.length;u++){var c=r[u];if(x.debug("Extracting node",c,Ut,Ut[c]&&!Ut[c].externalConnections,!e.parent(c),e.node(c),e.children("D")," Depth ",n),Ut[c])if(!Ut[c].externalConnections&&!e.parent(c)&&e.children(c)&&e.children(c).length>0){x.debug("Cluster without external connections, without a parent and with children",c,n);var l=e.graph(),f=new P.a.Graph({multigraph:!0,compound:!0}).setGraph({rankdir:"TB"===l.rankdir?"LR":"TB",nodesep:50,ranksep:50,marginx:8,marginy:8}).setDefaultEdgeLabel((function(){return{}}));x.debug("Old graph before copy",P.a.json.write(e)),Ht(c,e,f,c),e.setNode(c,{clusterNode:!0,id:c,clusterData:Ut[c].clusterData,labelText:Ut[c].labelText,graph:f}),x.debug("New graph after copy",P.a.json.write(f)),x.debug("Old graph after copy",P.a.json.write(e))}else x.debug("Cluster ** ",c," **not meeting the criteria !externalConnections:",!Ut[c].externalConnections," no parent: ",!e.parent(c)," children ",e.children(c)&&e.children(c).length>0,e.children("D"),n),x.debug(Ut);else x.debug("Not a cluster",c,n)}r=e.nodes(),x.debug("New list of nodes",r);for(var h=0;h<r.length;h++){var d=r[h],p=e.node(d);x.debug(" Now next leveö",d,p),p.clusterNode&&t(p.graph,n+1)}}else x.debug("Done, no node has children",e.nodes())}},Jt=n(153);var Qt=function(t,e,n,r){var i=t.x,a=t.y,o=i-r.x,s=a-r.y,u=Math.sqrt(e*e*s*s+n*n*o*o),c=Math.abs(e*n*o/u);r.x<i&&(c=-c);var l=Math.abs(e*n*s/u);return r.y<a&&(l=-l),{x:i+c,y:a+l}};var Kt=function(t,e,n){return Qt(t,e,e,n)};function te(t,e){return t*e>0}var ee=function(t,e,n,r){var i,a,o,s,u,c,l,f,h,d,p,y,g;if(i=e.y-t.y,o=t.x-e.x,u=e.x*t.y-t.x*e.y,h=i*n.x+o*n.y+u,d=i*r.x+o*r.y+u,!(0!==h&&0!==d&&te(h,d)||(a=r.y-n.y,s=n.x-r.x,c=r.x*n.y-n.x*r.y,l=a*t.x+s*t.y+c,f=a*e.x+s*e.y+c,0!==l&&0!==f&&te(l,f)||0==(p=i*s-a*o))))return y=Math.abs(p/2),{x:(g=o*c-s*u)<0?(g-y)/p:(g+y)/p,y:(g=a*u-i*c)<0?(g-y)/p:(g+y)/p}},ne=function(t,e,n){var r=t.x,i=t.y,a=[],o=Number.POSITIVE_INFINITY,s=Number.POSITIVE_INFINITY;e.forEach((function(t){o=Math.min(o,t.x),s=Math.min(s,t.y)}));for(var u=r-t.width/2-o,c=i-t.height/2-s,l=0;l<e.length;l++){var f=e[l],h=e[l<e.length-1?l+1:0],d=ee(t,n,{x:u+f.x,y:c+f.y},{x:u+h.x,y:c+h.y});d&&a.push(d)}if(!a.length)return console.log("NO INTERSECTION FOUND, RETURN NODE CENTER",t),t;a.length>1&&a.sort((function(t,e){var r=t.x-n.x,i=t.y-n.y,a=Math.sqrt(r*r+i*i),o=e.x-n.x,s=e.y-n.y,u=Math.sqrt(o*o+s*s);return a<u?-1:a===u?0:1}));return a[0]};var re=function(t,e){var n,r,i=t.x,a=t.y,o=e.x-i,s=e.y-a,u=t.width/2,c=t.height/2;return Math.abs(s)*u>Math.abs(o)*c?(s<0&&(c=-c),n=0===s?0:c*o/s,r=c):(o<0&&(u=-u),n=u,r=0===o?0:u*s/o),{x:i+n,y:a+r}},ie={node:n.n(Jt).a,circle:Kt,ellipse:Qt,polygon:ne,rect:re},ae=function(t,e,n){var r=t.insert("g").attr("class","node default").attr("id",e.id),i=70,a=10;"LR"===n&&(i=10,a=70);var o=r.append("rect").style("stroke","black").style("fill","black").attr("x",-1*i/2).attr("y",-1*a/2).attr("width",i).attr("height",a).attr("class","fork-join");return Yt(e,o),e.height=e.height+e.padding/2,e.width=e.width+e.padding/2,e.intersect=function(t){return ie.rect(e,t)},r},oe={question:function(t,e){var n=jt(t,e),r=n.shapeSvg,i=n.bbox,a=i.width+e.padding+(i.height+e.padding),o=[{x:a/2,y:0},{x:a,y:-a/2},{x:a/2,y:-a},{x:0,y:-a/2}],s=zt(r,a,a,o);return Yt(e,s),e.intersect=function(t){return x.warn("Intersect called"),ie.polygon(e,o,t)},r},rect:function(t,e){var n=jt(t,e,"node "+e.classes),r=n.shapeSvg,i=n.bbox,a=n.halfPadding;x.trace("Classes = ",e.classes);var o=r.insert("rect",":first-child");return o.attr("class","basic label-container").attr("rx",e.rx).attr("ry",e.ry).attr("x",-i.width/2-a).attr("y",-i.height/2-a).attr("width",i.width+e.padding).attr("height",i.height+e.padding),Yt(e,o),e.intersect=function(t){return ie.rect(e,t)},r},rectWithTitle:function(t,e){var n;n=e.classes?"node "+e.classes:"node default";var r=t.insert("g").attr("class",n).attr("id",e.id),i=r.insert("rect",":first-child"),o=r.insert("line"),s=r.insert("g").attr("class","label"),u=e.labelText.flat();x.info("Label text",u[0]);var c=s.node().appendChild(Bt(u[0],e.labelStyle,!0)),l=u.slice(1,u.length),f=c.getBBox(),h=s.node().appendChild(Bt(l.join("<br/>"),e.labelStyle,!0));x.info(h);var d=e.padding/2;Object(a.select)(h).attr("transform","translate( 0, "+(f.height+d)+")");var p=s.node().getBBox();return s.attr("transform","translate("+-p.width/2+", "+(-p.height/2-d+3)+")"),i.attr("class","outer title-state").attr("x",-p.width/2-d).attr("y",-p.height/2-d).attr("width",p.width+e.padding).attr("height",p.height+e.padding),o.attr("class","divider").attr("x1",-p.width/2-d).attr("x2",p.width/2+d).attr("y1",-p.height/2-d+f.height+d).attr("y2",-p.height/2-d+f.height+d),Yt(e,i),e.intersect=function(t){return ie.rect(e,t)},r},circle:function(t,e){var n=jt(t,e),r=n.shapeSvg,i=n.bbox,a=n.halfPadding,o=r.insert("circle",":first-child");return o.attr("rx",e.rx).attr("ry",e.ry).attr("r",i.width/2+a).attr("width",i.width+e.padding).attr("height",i.height+e.padding),Yt(e,o),e.intersect=function(t){return ie.circle(e,e.rx,t)},r},stadium:function(t,e){var n=jt(t,e),r=n.shapeSvg,i=n.bbox,a=i.height+e.padding,o=i.width+a/4+e.padding,s=r.insert("rect",":first-child").attr("rx",a/2).attr("ry",a/2).attr("x",-o/2).attr("y",-a/2).attr("width",o).attr("height",a);return Yt(e,s),e.intersect=function(t){return ie.rect(e,t)},r},hexagon:function(t,e){var n=jt(t,e),r=n.shapeSvg,i=n.bbox,a=i.height+e.padding,o=a/4,s=i.width+2*o+e.padding,u=zt(r,s,a,[{x:o,y:0},{x:s-o,y:0},{x:s,y:-a/2},{x:s-o,y:-a},{x:o,y:-a},{x:0,y:-a/2}]);return Yt(e,u),e.intersect=function(t){return ie.polygon(e,t)},r},rect_left_inv_arrow:function(t,e){var n=jt(t,e),r=n.shapeSvg,i=n.bbox,a=i.width+e.padding,o=i.height+e.padding,s=zt(r,a,o,[{x:-o/2,y:0},{x:a,y:0},{x:a,y:-o},{x:-o/2,y:-o},{x:0,y:-o/2}]);return Yt(e,s),e.intersect=function(t){return ie.polygon(e,t)},r},lean_right:function(t,e){var n=jt(t,e),r=n.shapeSvg,i=n.bbox,a=i.width+e.padding,o=i.height+e.padding,s=zt(r,a,o,[{x:-2*o/6,y:0},{x:a-o/6,y:0},{x:a+2*o/6,y:-o},{x:o/6,y:-o}]);return Yt(e,s),e.intersect=function(t){return ie.polygon(e,t)},r},lean_left:function(t,e){var n=jt(t,e),r=n.shapeSvg,i=n.bbox,a=i.width+e.padding,o=i.height+e.padding,s=zt(r,a,o,[{x:2*o/6,y:0},{x:a+o/6,y:0},{x:a-2*o/6,y:-o},{x:-o/6,y:-o}]);return Yt(e,s),e.intersect=function(t){return ie.polygon(e,t)},r},trapezoid:function(t,e){var n=jt(t,e),r=n.shapeSvg,i=n.bbox,a=i.width+e.padding,o=i.height+e.padding,s=zt(r,a,o,[{x:-2*o/6,y:0},{x:a+2*o/6,y:0},{x:a-o/6,y:-o},{x:o/6,y:-o}]);return Yt(e,s),e.intersect=function(t){return ie.polygon(e,t)},r},inv_trapezoid:function(t,e){var n=jt(t,e),r=n.shapeSvg,i=n.bbox,a=i.width+e.padding,o=i.height+e.padding,s=zt(r,a,o,[{x:o/6,y:0},{x:a-o/6,y:0},{x:a+2*o/6,y:-o},{x:-2*o/6,y:-o}]);return Yt(e,s),e.intersect=function(t){return ie.polygon(e,t)},r},rect_right_inv_arrow:function(t,e){var n=jt(t,e),r=n.shapeSvg,i=n.bbox,a=i.width+e.padding,o=i.height+e.padding,s=zt(r,a,o,[{x:0,y:0},{x:a+o/2,y:0},{x:a,y:-o/2},{x:a+o/2,y:-o},{x:0,y:-o}]);return Yt(e,s),e.intersect=function(t){return ie.polygon(e,t)},r},cylinder:function(t,e){var n=jt(t,e),r=n.shapeSvg,i=n.bbox,a=i.width+e.padding,o=a/2,s=o/(2.5+a/50),u=i.height+s+e.padding,c="M 0,"+s+" a "+o+","+s+" 0,0,0 "+a+" 0 a "+o+","+s+" 0,0,0 "+-a+" 0 l 0,"+u+" a "+o+","+s+" 0,0,0 "+a+" 0 l 0,"+-u,l=r.attr("label-offset-y",s).insert("path",":first-child").attr("d",c).attr("transform","translate("+-a/2+","+-(u/2+s)+")");return Yt(e,l),e.intersect=function(t){var n=ie.rect(e,t),r=n.x-e.x;if(0!=o&&(Math.abs(r)<e.width/2||Math.abs(r)==e.width/2&&Math.abs(n.y-e.y)>e.height/2-s)){var i=s*s*(1-r*r/(o*o));0!=i&&(i=Math.sqrt(i)),i=s-i,t.y-e.y>0&&(i=-i),n.y+=i}return n},r},start:function(t,e){var n=t.insert("g").attr("class","node default").attr("id",e.id),r=n.insert("circle",":first-child");return r.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),Yt(e,r),e.intersect=function(t){return ie.circle(e,7,t)},n},end:function(t,e){var n=t.insert("g").attr("class","node default").attr("id",e.id),r=n.insert("circle",":first-child"),i=n.insert("circle",":first-child");return i.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),r.attr("class","state-end").attr("r",5).attr("width",10).attr("height",10),Yt(e,i),e.intersect=function(t){return ie.circle(e,7,t)},n},note:function(t,e){var n=jt(t,e,"node "+e.classes),r=n.shapeSvg,i=n.bbox,a=n.halfPadding;x.info("Classes = ",e.classes);var o=r.insert("rect",":first-child");return o.attr("rx",e.rx).attr("ry",e.ry).attr("x",-i.width/2-a).attr("y",-i.height/2-a).attr("width",i.width+e.padding).attr("height",i.height+e.padding),Yt(e,o),e.intersect=function(t){return ie.rect(e,t)},r},subroutine:function(t,e){var n=jt(t,e),r=n.shapeSvg,i=n.bbox,a=i.width+e.padding,o=i.height+e.padding,s=zt(r,a,o,[{x:0,y:0},{x:a,y:0},{x:a,y:-o},{x:0,y:-o},{x:0,y:0},{x:-8,y:0},{x:a+8,y:0},{x:a+8,y:-o},{x:-8,y:-o},{x:-8,y:0}]);return Yt(e,s),e.intersect=function(t){return ie.polygon(e,t)},r},fork:ae,join:ae},se={},ue=function(t){var e=se[t.id];x.trace("Transforming node",t,"translate("+(t.x-t.width/2-5)+", "+(t.y-t.height/2-5)+")");t.clusterNode?e.attr("transform","translate("+(t.x-t.width/2-8)+", "+(t.y-t.height/2-8)+")"):e.attr("transform","translate("+t.x+", "+t.y+")")},ce={rect:function(t,e){x.trace("Creating subgraph rect for ",e.id,e);var n=t.insert("g").attr("class","cluster").attr("id",e.id),r=n.insert("rect",":first-child"),i=n.insert("g").attr("class","cluster-label"),a=i.node().appendChild(Bt(e.labelText,e.labelStyle)).getBBox(),o=0*e.padding,s=o/2;x.trace("Data ",e,JSON.stringify(e)),r.attr("rx",e.rx).attr("ry",e.ry).attr("x",e.x-e.width/2-s).attr("y",e.y-e.height/2-s).attr("width",e.width+o).attr("height",e.height+o),i.attr("transform","translate("+(e.x-a.width/2)+", "+(e.y-e.height/2-e.padding/3+3)+")");var u=r.node().getBBox();return e.width=u.width,e.height=u.height,e.intersect=function(t){return re(e,t)},n},roundedWithTitle:function(t,e){var n=t.insert("g").attr("class",e.classes).attr("id",e.id),r=n.insert("rect",":first-child"),i=n.insert("g").attr("class","cluster-label"),a=n.append("rect"),o=i.node().appendChild(Bt(e.labelText,e.labelStyle)).getBBox(),s=0*e.padding,u=s/2;r.attr("class","outer").attr("x",e.x-e.width/2-u).attr("y",e.y-e.height/2-u).attr("width",e.width+s).attr("height",e.height+s),a.attr("class","inner").attr("x",e.x-e.width/2-u).attr("y",e.y-e.height/2-u+o.height-1).attr("width",e.width+s).attr("height",e.height+s-o.height-3),i.attr("transform","translate("+(e.x-o.width/2)+", "+(e.y-e.height/2-e.padding/3+3)+")");var c=r.node().getBBox();return e.width=c.width,e.height=c.height,e.intersect=function(t){return re(e,t)},n},noteGroup:function(t,e){var n=t.insert("g").attr("class","note-cluster").attr("id",e.id),r=n.insert("rect",":first-child"),i=0*e.padding,a=i/2;r.attr("rx",e.rx).attr("ry",e.ry).attr("x",e.x-e.width/2-a).attr("y",e.y-e.height/2-a).attr("width",e.width+i).attr("height",e.height+i).attr("fill","none");var o=r.node().getBBox();return e.width=o.width,e.height=o.height,e.intersect=function(t){return re(e,t)},n},divider:function(t,e){var n=t.insert("g").attr("class",e.classes).attr("id",e.id),r=n.insert("rect",":first-child"),i=0*e.padding,a=i/2;r.attr("class","divider").attr("x",e.x-e.width/2-a).attr("y",e.y-e.height/2).attr("width",e.width+i).attr("height",e.height+i);var o=r.node().getBBox();return e.width=o.width,e.height=o.height,e.intersect=function(t){return re(e,t)},n}},le={},fe={},he=function(t,e){var n=t.x,r=t.y,i=Math.abs(e.x-n),a=Math.abs(e.y-r),o=t.width/2,s=t.height/2;return i>o||a>s},de=function(t,e,n){x.trace("intersection o:",e," i:",n,t);var r=t.x,i=t.y,a=Math.abs(r-n.x),o=t.width/2,s=n.x<e.x?o-a:o+a,u=Math.abs(i-n.y),c=t.height/2,l=(n.y,e.y,c-u),f=Math.abs(e.y-n.y),h=Math.abs(e.x-n.x);return Math.abs(i-e.y)*o>Math.abs(r-e.x)*c?(s=h*l/f,{x:n.x<e.x?n.x+s:n.x-s,y:n.y+l}):(s=h*(l=f*s/h)/f,{x:n.x<e.x?n.x+s:n.x+a-o,y:n.y<e.y?n.y+l:n.y-l})},pe=function t(e,n,r,i){x.info("Graph in recursive render:",P.a.json.write(n),i);var o=n.graph().rankdir;x.warn("Dir in recursive render - dir:",o);var s=e.insert("g").attr("class","root");n.nodes()?x.trace("Recursive render",n.nodes()):x.trace("No nodes found for",n),n.edges().length>0&&x.trace("Recursive edges",n.edge(n.edges()[0]));var u=s.insert("g").attr("class","clusters"),c=s.insert("g").attr("class","edgePaths"),l=s.insert("g").attr("class","edgeLabels"),f=s.insert("g").attr("class","nodes");return n.nodes().forEach((function(e){var a=n.node(e);if(void 0!==i){var s=JSON.parse(JSON.stringify(i.clusterData));x.trace("Setting data for cluster",s),n.setNode(i.id,s),n.setParent(e,i.id,s)}if(x.trace("(Insert) Node "+e+": "+JSON.stringify(n.node(e))),a&&a.clusterNode){x.trace("Cluster identified",e,a,n.node(e));var u=t(f,a.graph,r,n.node(e));Yt(a,u),function(t,e){se[e.id]=t}(u,a),x.warn("Recursive render complete",u,a)}else n.children(e).length>0?(x.trace("Cluster - the non recursive path",e,a.id,a,n),x.trace(Wt(a.id,n)),Ut[a.id]={id:Wt(a.id,n),node:a}):(x.trace("Node - the non recursive path",e,a.id,a),function(t,e,n){se[e.id]=oe[e.shape](t,e,n)}(f,n.node(e),o))})),n.edges().forEach((function(t){var e=n.edge(t.v,t.w,t.name);x.trace("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(t)),x.trace("Edge "+t.v+" -> "+t.w+": ",t," ",JSON.stringify(n.edge(t))),x.trace("Fix",Ut,"ids:",t.v,t.w,"Translateing: ",Ut[t.v],Ut[t.w]),function(t,e){var n=Bt(e.label,e.labelStyle),r=t.insert("g").attr("class","edgeLabel"),i=r.insert("g").attr("class","label");i.node().appendChild(n);var a=n.getBBox();i.attr("transform","translate("+-a.width/2+", "+-a.height/2+")"),fe[e.id]=r,e.width=a.width,e.height=a.height}(l,e)})),n.edges().forEach((function(t){x.info("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(t))})),x.info("#############################################"),x.info("### Layout ###"),x.info("#############################################"),x.info(n),It.a.layout(n),x.trace("Graph after layout:",P.a.json.write(n)),n.nodes().forEach((function(t){var e=n.node(t);x.trace("Position "+t+": ("+e.x,","+e.y,") width: ",e.width," height: ",e.height),e&&e.clusterNode?ue(e):n.children(t).length>0?(!function(t,e){x.trace("Inserting cluster");var n=e.shape||"rect";le[e.id]=ce[n](t,e)}(u,e),Ut[e.id].node=e):ue(e)})),n.edges().forEach((function(t){var e=n.edge(t);x.info("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(e),e),function(t,e,n,r,i,o){var s=n.points,u=o.node(e.v),c=o.node(e.w);if(c.intersect&&u.intersect&&((s=s.slice(1,n.points.length-1)).unshift(u.intersect(s[0])),s.push(c.intersect(s[s.length-1]))),n.toCluster){var l;x.trace("edge",n),x.trace("to cluster",r[n.toCluster]),s=[];var f=!1;n.points.forEach((function(t){var e=r[n.toCluster].node;if(he(e,t)||f)f||s.push(t);else{x.trace("inside",n.toCluster,t,l);var i=de(e,l,t);x.trace("intersect",i),s.push(i),f=!0}l=t}))}if(n.fromCluster){x.trace("edge",n),x.trace("from cluster",r[n.toCluster]);for(var d,p=[],y=!1,g=s.length-1;g>=0;g--){var m=s[g],v=r[n.fromCluster].node;if(he(v,m)||y)x.trace("Outside point",m),y||p.unshift(m);else{x.trace("inside",n.toCluster,m);var b=de(v,d,m);p.unshift(b),y=!0}d=m}s=p}var _=s.filter((function(t){return!Number.isNaN(t.y)})),w=Object(a.line)().x((function(t){return t.x})).y((function(t){return t.y})).curve(a.curveBasis),k=t.append("path").attr("d",w(_)).attr("id",n.id).attr("class","transition"+(n.classes?" "+n.classes:"")),E="";switch(h().state.arrowMarkerAbsolute&&(E=(E=(E=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search).replace(/\(/g,"\\(")).replace(/\)/g,"\\)")),x.info("arrowType",n.arrowType),n.arrowType){case"arrow_cross":k.attr("marker-end","url("+E+"#"+i+"-crossEnd)");break;case"double_arrow_cross":k.attr("marker-end","url("+E+"#"+i+"-crossEnd)"),k.attr("marker-start","url("+E+"#"+i+"-crossStart)");break;case"arrow_point":k.attr("marker-end","url("+E+"#"+i+"-pointEnd)");break;case"double_arrow_point":k.attr("marker-end","url("+E+"#"+i+"-pointEnd)"),k.attr("marker-start","url("+E+"#"+i+"-pointStart)");break;case"arrow_barb":k.attr("marker-end","url("+E+"#"+i+"-barbEnd)");break;case"double_arrow_barb":k.attr("marker-end","url("+E+"#"+i+"-barnEnd)"),k.attr("marker-start","url("+E+"#"+i+"-barbStart)");break;case"arrow_circle":k.attr("marker-end","url("+E+"#"+i+"-circleEnd)");break;case"double_arrow_circle":k.attr("marker-end","url("+E+"#"+i+"-circleEnd)"),k.attr("marker-start","url("+E+"#"+i+"-circleStart)")}}(c,t,e,Ut,r,n),function(t){(x.info("Moving label",t.id,t.label,fe[t.id]),t.label)&&fe[t.id].attr("transform","translate("+t.x+", "+t.y+")")}(e)})),s},ye=function(t,e,n,r,i){Rt(t,n,r,i),se={},fe={},le={},$t={},Gt={},Ut={},x.warn("Graph before:",P.a.json.write(e)),Xt(e),x.warn("Graph after:",P.a.json.write(e)),x.warn("Graph ever after:",e.graph()),pe(t,e,r)},ge={},me=function(t,e,n){var r=Object(a.select)('[id="'.concat(n,'"]'));Object.keys(t).forEach((function(n){var i=t[n],a="default";i.classes.length>0&&(a=i.classes.join(" "));var o,s=S(i.styles),u=void 0!==i.text?i.text:i.id;if(h().flowchart.htmlLabels){var c={label:u.replace(/fa[lrsb]?:fa-[\w-]+/g,(function(t){return"<i class='".concat(t.replace(":"," "),"'></i>")}))};(o=pt()(r,c).node()).parentNode.removeChild(o)}else{var l=document.createElementNS("http://www.w3.org/2000/svg","text");l.setAttribute("style",s.labelStyle.replace("color:","fill:"));for(var f=u.split(U),d=0;d<f.length;d++){var p=document.createElementNS("http://www.w3.org/2000/svg","tspan");p.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),p.setAttribute("dy","1em"),p.setAttribute("x","1"),p.textContent=f[d],l.appendChild(p)}o=l}var y=0,g="";switch(i.type){case"round":y=5,g="rect";break;case"square":g="rect";break;case"diamond":g="question";break;case"hexagon":g="hexagon";break;case"odd":g="rect_left_inv_arrow";break;case"lean_right":g="lean_right";break;case"lean_left":g="lean_left";break;case"trapezoid":g="trapezoid";break;case"inv_trapezoid":g="inv_trapezoid";break;case"odd_right":g="rect_left_inv_arrow";break;case"circle":g="circle";break;case"ellipse":g="ellipse";break;case"stadium":g="stadium";break;case"subroutine":g="subroutine";break;case"cylinder":g="cylinder";break;case"group":g="rect";break;default:g="rect"}e.setNode(i.id,{labelStyle:s.labelStyle,shape:g,labelText:u,rx:y,ry:y,class:a,style:s.style,id:i.id,width:"group"===i.type?500:void 0,type:i.type,padding:h().flowchart.padding}),x.info("setNode",{labelStyle:s.labelStyle,shape:g,labelText:u,rx:y,ry:y,class:a,style:s.style,id:i.id,width:"group"===i.type?500:void 0,type:i.type,padding:h().flowchart.padding})}))},ve=function(t,e){var n,r,i=0;if(void 0!==t.defaultStyle){var o=S(t.defaultStyle);n=o.style,r=o.labelStyle}t.forEach((function(o){i++;var s={};s.id="id"+i,"arrow_open"===o.type?s.arrowhead="none":s.arrowhead="normal",x.info(s,o),s.arrowType=o.type;var u="",c="";if(void 0!==o.style){var l=S(o.style);u=l.style,c=l.labelStyle}else switch(o.stroke){case"normal":u="fill:none",void 0!==n&&(u=n),void 0!==r&&(c=r);break;case"dotted":u="fill:none;stroke-width:2px;stroke-dasharray:3;";break;case"thick":u=" stroke-width: 3.5px;fill:none"}s.style=u,s.labelStyle=c,void 0!==o.interpolate?s.curve=A(o.interpolate,a.curveLinear):void 0!==t.defaultInterpolate?s.curve=A(t.defaultInterpolate,a.curveLinear):s.curve=A(ge.curve,a.curveLinear),void 0===o.text?void 0!==o.style&&(s.arrowheadStyle="fill: #333"):(s.arrowheadStyle="fill: #333",s.labelpos="c",h().flowchart.htmlLabels,s.labelType="text",s.label=o.text.replace(U,"\n"),void 0===o.style&&(s.style=s.style||"stroke: #333; stroke-width: 1.5px;fill:none"),s.labelStyle=s.labelStyle.replace("color:","fill:")),e.setEdge(o.start,o.end,s,i)}))},be=function(t){for(var e=Object.keys(t),n=0;n<e.length;n++)ge[e[n]]=t[e[n]]},xe=function(t,e){x.info("Drawing flowchart"),ut.clear();var n=lt.a.parser;n.yy=ut;try{n.parse(t)}catch(t){x.debug("Parsing failed")}var r=ut.getDirection();void 0===r&&(r="TD");var i,o=h().flowchart,s=o.nodeSpacing||50,u=o.rankSpacing||50,c=new P.a.Graph({multigraph:!0,compound:!0}).setGraph({rankdir:r,nodesep:s,ranksep:u,marginx:8,marginy:8}).setDefaultEdgeLabel((function(){return{}})),l=ut.getSubGraphs();x.info("Subgraphs - ",l);for(var f=l.length-1;f>=0;f--)i=l[f],x.info("Subgraph - ",i),ut.addVertex(i.id,i.title,"group",void 0,i.classes);var d=ut.getVertices(),p=ut.getEdges();x.info(p);var y=0;for(y=l.length-1;y>=0;y--){i=l[y],Object(a.selectAll)("cluster").append("text");for(var g=0;g<i.nodes.length;g++)c.setParent(i.nodes[g],i.id)}me(d,c,e),ve(p,c);var m=Object(a.select)('[id="'.concat(e,'"]')),v=Object(a.select)("#"+e+" g");ye(v,c,["point","circle","cross"],"flowchart",e),v.selectAll("g.node").attr("title",(function(){return ut.getTooltip(this.id)}));var b=m.node().getBBox(),_=b.width+16,w=b.height+16;if(x.debug("new ViewBox 0 0 ".concat(_," ").concat(w),"translate(".concat(8-c._label.marginx,", ").concat(8-c._label.marginy,")")),o.useMaxWidth?(m.attr("width","100%"),m.attr("style","max-width: ".concat(_,"px;"))):(m.attr("height",w),m.attr("width",_)),m.attr("viewBox","0 0 ".concat(_," ").concat(w)),m.select("g").attr("transform","translate(".concat(8-c._label.marginx,", ").concat(8-b.y,")")),ut.indexNodes("subGraph"+y),!o.htmlLabels)for(var k=document.querySelectorAll('[id="'+e+'"] .edgeLabel .label'),E=0;E<k.length;E++){var A=k[E],T=A.getBBox(),S=document.createElementNS("http://www.w3.org/2000/svg","rect");S.setAttribute("rx",0),S.setAttribute("ry",0),S.setAttribute("width",T.width),S.setAttribute("height",T.height),S.setAttribute("style","fill:#e8e8e8;"),A.insertBefore(S,A.firstChild)}Object.keys(d).forEach((function(t){var n=d[t];if(n.link){var r=Object(a.select)("#"+e+' [id="'+t+'"]');if(r){var i=document.createElementNS("http://www.w3.org/2000/svg","a");i.setAttributeNS("http://www.w3.org/2000/svg","class",n.classes.join(" ")),i.setAttributeNS("http://www.w3.org/2000/svg","href",n.link),i.setAttributeNS("http://www.w3.org/2000/svg","rel","noopener");var o=r.insert((function(){return i}),":first-child"),s=r.select(".label-container");s&&o.append((function(){return s.node()}));var u=r.select(".label");u&&o.append((function(){return u.node()}))}}}))},_e=function(t,e){var n=t.append("rect");return n.attr("x",e.x),n.attr("y",e.y),n.attr("fill",e.fill),n.attr("stroke",e.stroke),n.attr("width",e.width),n.attr("height",e.height),n.attr("rx",e.rx),n.attr("ry",e.ry),void 0!==e.class&&n.attr("class",e.class),n},we=function(t,e){var n=e.text.replace(U," "),r=t.append("text");r.attr("x",e.x),r.attr("y",e.y),r.style("text-anchor",e.anchor),r.attr("fill",e.fill),void 0!==e.class&&r.attr("class",e.class);var i=r.append("tspan");return i.attr("x",e.x+2*e.textMargin),i.attr("fill",e.fill),i.text(n),r},ke=function(t,e){var n,r,i,a,o,s=t.append("polygon");s.attr("points",(n=e.x,r=e.y,n+","+r+" "+(n+(i=50))+","+r+" "+(n+i)+","+(r+(a=20)-(o=7))+" "+(n+i-1.2*o)+","+(r+a)+" "+n+","+(r+a))),s.attr("class","labelBox"),e.y=e.y+e.labelMargin,e.x=e.x+.5*e.labelMargin,we(t,e)},Ee=-1,Ae=function(){return{x:0,y:0,fill:void 0,"text-anchor":"start",style:"#666",width:100,height:100,textMargin:0,rx:0,ry:0}},Te=function(){return{x:0,y:0,fill:"#EDF2AE",stroke:"#666",width:100,anchor:"start",height:100,rx:0,ry:0}},Se=function(){function t(t,e,n,i,a,o,s){r(e.append("text").attr("x",n+a/2).attr("y",i+o/2+5).style("text-anchor","middle").text(t),s)}function e(t,e,n,i,a,o,s,u){for(var c=u.actorFontSize,l=u.actorFontFamily,f=t.split(U),h=0;h<f.length;h++){var d=h*c-c*(f.length-1)/2,p=e.append("text").attr("x",n+a/2).attr("y",i).style("text-anchor","middle").style("font-size",c).style("font-family",l);p.append("tspan").attr("x",n+a/2).attr("dy",d).text(f[h]),p.attr("y",i+o/2).attr("dominant-baseline","central").attr("alignment-baseline","central"),r(p,s)}}function n(t,n,i,a,o,s,u,c){var l=n.append("switch"),f=l.append("foreignObject").attr("x",i).attr("y",a).attr("width",o).attr("height",s).append("div").style("display","table").style("height","100%").style("width","100%");f.append("div").style("display","table-cell").style("text-align","center").style("vertical-align","middle").text(t),e(t,l,i,a,o,s,u,c),r(f,u)}function r(t,e){for(var n in e)e.hasOwnProperty(n)&&t.attr(n,e[n])}return function(r){return"fo"===r.textPlacement?n:"old"===r.textPlacement?t:e}}(),Me={drawRect:_e,drawText:we,drawLabel:ke,drawActor:function(t,e,n){var r=e.x+e.width/2,i=t.append("g");0===e.y&&(Ee++,i.append("line").attr("id","actor"+Ee).attr("x1",r).attr("y1",5).attr("x2",r).attr("y2",2e3).attr("class","actor-line").attr("stroke-width","0.5px").attr("stroke","#999"));var a=Te();a.x=e.x,a.y=e.y,a.fill="#eaeaea",a.width=e.width,a.height=e.height,a.class="actor",a.rx=3,a.ry=3,_e(i,a),Se(n)(e.description,i,a.x,a.y,a.width,a.height,{class:"actor"},n)},anchorElement:function(t){return t.append("g")},drawActivation:function(t,e,n,r,i){var a=Te(),o=e.anchored;a.x=e.startx,a.y=e.starty,a.class="activation"+i%3,a.width=e.stopx-e.startx,a.height=n-e.starty,_e(o,a)},drawLoop:function(t,e,n,r){var i=t.append("g"),a=function(t,e,n,r){return i.append("line").attr("x1",t).attr("y1",e).attr("x2",n).attr("y2",r).attr("class","loopLine")};a(e.startx,e.starty,e.stopx,e.starty),a(e.stopx,e.starty,e.stopx,e.stopy),a(e.startx,e.stopy,e.stopx,e.stopy),a(e.startx,e.starty,e.startx,e.stopy),void 0!==e.sections&&e.sections.forEach((function(t){a(e.startx,t,e.stopx,t).style("stroke-dasharray","3, 3")}));var o=Ae();o.text=n,o.x=e.startx,o.y=e.starty,o.labelMargin=15,o.class="labelText",ke(i,o),(o=Ae()).text="[ "+e.title+" ]",o.x=e.startx+(e.stopx-e.startx)/2,o.y=e.starty+1.5*r.boxMargin,o.anchor="middle",o.class="loopText",we(i,o),void 0!==e.sectionTitles&&e.sectionTitles.forEach((function(t,n){""!==t&&(o.text="[ "+t+" ]",o.y=e.sections[n]+1.5*r.boxMargin,we(i,o))}))},drawBackgroundRect:function(t,e){_e(t,{x:e.startx,y:e.starty,width:e.stopx-e.startx,height:e.stopy-e.starty,fill:e.fill,class:"rect"}).lower()},insertArrowHead:function(t){t.append("defs").append("marker").attr("id","arrowhead").attr("refX",5).attr("refY",2).attr("markerWidth",6).attr("markerHeight",4).attr("orient","auto").append("path").attr("d","M 0,0 V 4 L6,2 Z")},insertSequenceNumber:function(t){t.append("defs").append("marker").attr("id","sequencenumber").attr("refX",15).attr("refY",15).attr("markerWidth",60).attr("markerHeight",40).attr("orient","auto").append("circle").attr("cx",15).attr("cy",15).attr("r",6)},insertArrowCrossHead:function(t){var e=t.append("defs").append("marker").attr("id","crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",16).attr("refY",4);e.append("path").attr("fill","black").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 9,2 V 6 L16,4 Z"),e.append("path").attr("fill","none").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 0,1 L 6,7 M 6,1 L 0,7")},getTextObj:Ae,getNoteRect:Te},Oe=n(1),Ne=n.n(Oe),Ce=void 0,De={},Le=[],Fe=[],Ie="",Pe=!1,Re=function(t,e,n){var r=De[t];r&&e===r.name&&null==n||(null==n&&(n=e),De[t]={name:e,description:n,prevActor:Ce},Ce&&De[Ce]&&(De[Ce].nextActor=t),Ce=t)},Be=function(t,e,n,r){if(x.debug("Adding message from="+t+" to="+e+" message="+n+" type="+r),r===je.ACTIVE_END){var i=function(t){var e=0,n=0;for(e=0;e<Le.length;e++)Le[e].type===je.ACTIVE_START&&Le[e].from.actor===t&&n++,Le[e].type===je.ACTIVE_END&&Le[e].from.actor===t&&n--;return n}(t.actor);if(x.debug("Adding message from=",Le,i),i<1){var a=new Error("Trying to inactivate an inactive participant ("+t.actor+")");throw a.hash={text:"->>-",token:"->>-",line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["'ACTIVE_PARTICIPANT'"]},a}}return Le.push({from:t,to:e,message:n,type:r}),!0},je={SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23},Ye=function(t,e,n){var r={actor:t,placement:e,message:n},i=[].concat(t,t);Fe.push(r),Le.push({from:i[0],to:i[1],message:n,type:je.NOTE,placement:e})},ze=function(t){Ie=t},Ue={addActor:Re,addMessage:function(t,e,n,r){Le.push({from:t,to:e,message:n,answer:r})},addSignal:Be,enableSequenceNumbers:function(){Pe=!0},showSequenceNumbers:function(){return Pe},getMessages:function(){return Le},getActors:function(){return De},getActor:function(t){return De[t]},getActorKeys:function(){return Object.keys(De)},getTitle:function(){return Ie},clear:function(){De={},Le=[]},LINETYPE:je,ARROWTYPE:{FILLED:0,OPEN:1},PLACEMENT:{LEFTOF:0,RIGHTOF:1,OVER:2},addNote:Ye,setTitle:ze,apply:function t(e){if(e instanceof Array)e.forEach((function(e){t(e)}));else switch(e.type){case"addActor":Re(e.actor,e.actor,e.description);break;case"activeStart":case"activeEnd":Be(e.actor,void 0,void 0,e.signalType);break;case"addNote":Ye(e.actor,e.placement,e.text);break;case"addMessage":Be(e.from,e.to,e.msg,e.signalType);break;case"loopStart":Be(void 0,void 0,e.loopText,e.signalType);break;case"loopEnd":Be(void 0,void 0,void 0,e.signalType);break;case"rectStart":Be(void 0,void 0,e.color,e.signalType);break;case"rectEnd":Be(void 0,void 0,void 0,e.signalType);break;case"optStart":Be(void 0,void 0,e.optText,e.signalType);break;case"optEnd":Be(void 0,void 0,void 0,e.signalType);break;case"altStart":case"else":Be(void 0,void 0,e.altText,e.signalType);break;case"altEnd":Be(void 0,void 0,void 0,e.signalType);break;case"setTitle":ze(e.text);break;case"parStart":case"and":Be(void 0,void 0,e.parText,e.signalType);break;case"parEnd":Be(void 0,void 0,void 0,e.signalType)}}};function $e(t){return function(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);e<t.length;e++)n[e]=t[e];return n}}(t)||function(t){if(Symbol.iterator in Object(t)||"[object Arguments]"===Object.prototype.toString.call(t))return Array.from(t)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()}Oe.parser.yy=Ue;var Ge={diagramMarginX:50,diagramMarginY:30,actorMargin:50,width:150,height:65,actorFontSize:14,actorFontFamily:'"Open-Sans", "sans-serif"',noteFontSize:14,noteFontFamily:'"trebuchet ms", verdana, arial',noteAlign:"center",messageFontSize:16,messageFontFamily:'"trebuchet ms", verdana, arial',boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",mirrorActors:!1,bottomMarginAdj:1,activationWidth:10,textPlacement:"tspan",showSequenceNumbers:!1},Ve={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],activations:[],init:function(){this.sequenceItems=[],this.activations=[],this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0},updateVal:function(t,e,n,r){void 0===t[e]?t[e]=n:t[e]=r(n,t[e])},updateBounds:function(t,e,n,r){var i=this,a=0;function o(o){return function(s){a++;var u=i.sequenceItems.length-a+1;i.updateVal(s,"starty",e-u*Ge.boxMargin,Math.min),i.updateVal(s,"stopy",r+u*Ge.boxMargin,Math.max),i.updateVal(Ve.data,"startx",t-u*Ge.boxMargin,Math.min),i.updateVal(Ve.data,"stopx",n+u*Ge.boxMargin,Math.max),"activation"!==o&&(i.updateVal(s,"startx",t-u*Ge.boxMargin,Math.min),i.updateVal(s,"stopx",n+u*Ge.boxMargin,Math.max),i.updateVal(Ve.data,"starty",e-u*Ge.boxMargin,Math.min),i.updateVal(Ve.data,"stopy",r+u*Ge.boxMargin,Math.max))}}this.sequenceItems.forEach(o()),this.activations.forEach(o("activation"))},insert:function(t,e,n,r){var i=Math.min(t,n),a=Math.max(t,n),o=Math.min(e,r),s=Math.max(e,r);this.updateVal(Ve.data,"startx",i,Math.min),this.updateVal(Ve.data,"starty",o,Math.min),this.updateVal(Ve.data,"stopx",a,Math.max),this.updateVal(Ve.data,"stopy",s,Math.max),this.updateBounds(i,o,a,s)},newActivation:function(t,e){var n=Oe.parser.yy.getActors()[t.from.actor],r=qe(t.from.actor).length,i=n.x+Ge.width/2+(r-1)*Ge.activationWidth/2;this.activations.push({startx:i,starty:this.verticalPos+2,stopx:i+Ge.activationWidth,stopy:void 0,actor:t.from.actor,anchored:Me.anchorElement(e)})},endActivation:function(t){var e=this.activations.map((function(t){return t.actor})).lastIndexOf(t.from.actor);return this.activations.splice(e,1)[0]},newLoop:function(t,e){this.sequenceItems.push({startx:void 0,starty:this.verticalPos,stopx:void 0,stopy:void 0,title:t,fill:e})},endLoop:function(){return this.sequenceItems.pop()},addSectionToLoop:function(t){var e=this.sequenceItems.pop();e.sections=e.sections||[],e.sectionTitles=e.sectionTitles||[],e.sections.push(Ve.getVerticalPos()),e.sectionTitles.push(t),this.sequenceItems.push(e)},bumpVerticalPos:function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=this.verticalPos},getVerticalPos:function(){return this.verticalPos},getBounds:function(){return this.data}},He=function(t,e,n,r,i){var a=Me.getNoteRect();a.x=e,a.y=n,a.width=i||Ge.width,a.class="note";var o=t.append("g"),s=Me.drawRect(o,a),u=function(t,e,n,r,i){var a=0,o=0,s={left:"start",start:"start",center:"middle",middle:"middle",right:"end",end:"end"},u=t.split(U),c=!0,l=!1,f=void 0;try{for(var h,d=u[Symbol.iterator]();!(c=(h=d.next()).done);c=!0){var p=h.value,y=Me.getTextObj(),g=s[Ge.noteAlign]||"middle";switch(g){case"start":y.x=e+Ge.noteMargin;break;case"middle":y.x=e+i/2;break;case"end":y.x=e+i-Ge.noteMargin}y.y=n+a,y.dy="1em",y.text=p,y.class="noteText";var m=Me.drawText(r,y).style("text-anchor",g).style("font-size",Ge.noteFontSize).style("font-family",Ge.noteFontFamily).attr("dominant-baseline","central").attr("alignment-baseline","central");a+=(m._groups||m)[0][0].getBBox().height,m.attr("y",n+(o+a+2*Ge.noteMargin)/2),o=a}}catch(t){l=!0,f=t}finally{try{c||null==d.return||d.return()}finally{if(l)throw f}}return a}(r.message,e,n,o,a.width);Ve.insert(e,n,e+a.width,n+2*Ge.noteMargin+u),s.attr("height",u+2*Ge.noteMargin),Ve.bumpVerticalPos(u+2*Ge.noteMargin)},We=function(t,e,n,r){for(var i=0,a=0,o=0;o<n.length;o++){var s=e[n[o]];s.width=s.width||Ze(s),s.height=Ge.height,s.margin=s.margin||Ge.actorMargin,s.x=i+a,s.y=r,Me.drawActor(t,s,Ge),Ve.insert(s.x,r,s.x+s.width,Ge.height),i+=s.width,a+=s.margin}Ve.bumpVerticalPos(Ge.height)},qe=function(t){return Ve.activations.filter((function(e){return e.actor===t}))},Xe=function(t){var e=Oe.parser.yy.getActors()[t],n=qe(t);return[n.reduce((function(t,e){return Math.min(t,e.startx)}),e.x+e.width/2),n.reduce((function(t,e){return Math.max(t,e.stopx)}),e.x+e.width/2)]},Ze=function(t){return t.description?Math.max(Ge.width,Je(t.description,Ge.actorFontSize,Ge.actorFontFamily)):Ge.width},Je=function(t,e,n){if(!t)return 0;e=e||Ge.actorFontSize;var r=["sans-serif",n=n||Ge.actorFontFamily],i=t.split(U),o=0,s=Object(a.select)("body");if(!s.remove)return 0;var u=s.append("svg"),c=!0,l=!1,f=void 0;try{for(var h,d=i[Symbol.iterator]();!(c=(h=d.next()).done);c=!0){var p=h.value,y=!0,g=!1,m=void 0;try{for(var v,b=r[Symbol.iterator]();!(y=(v=b.next()).done);y=!0){var x=v.value,_=Me.getTextObj();_.text=p;var w=Me.drawText(u,_).style("font-size",e).style("font-family",x);o=Math.max(o,(w._groups||w)[0][0].getBBox().width)}}catch(t){g=!0,m=t}finally{try{y||null==b.return||b.return()}finally{if(g)throw m}}}}catch(t){l=!0,f=t}finally{try{c||null==d.return||d.return()}finally{if(l)throw f}}return u.remove(),o+35},Qe=function(t,e){var n={};return e.forEach((function(e){if(t[e.to]&&t[e.from]){var r=t[e.to];if(e.placement==Oe.parser.yy.PLACEMENT.LEFTOF&&!r.prevActor)return;if(e.placement==Oe.parser.yy.PLACEMENT.RIGHTOF&&!r.nextActor)return;var i=void 0!==e.placement,a=!i,o=i?Ge.noteFontSize:Ge.messageFontSize,s=i?Ge.noteFontFamily:Ge.messageFontFamily,u=Je(e.message,o,s);a&&e.from==r.nextActor?n[e.to]=Math.max(n[e.to]||0,u):a&&e.from==r.prevActor||e.placement==Oe.parser.yy.PLACEMENT.RIGHTOF?n[e.from]=Math.max(n[e.from]||0,u):e.placement==Oe.parser.yy.PLACEMENT.LEFTOF?n[r.prevActor]=Math.max(n[r.prevActor]||0,u):e.placement==Oe.parser.yy.PLACEMENT.OVER&&(r.prevActor&&(n[r.prevActor]=Math.max(n[r.prevActor]||0,u/2)),r.nextActor&&(n[e.from]=Math.max(n[e.from]||0,u/2)))}})),n},Ke=function(t,e){for(var n in e){var r=t[n];if(r){var i=t[r.nextActor];if(i){r.width=Math.max(Ge.width,Je(r.description,Ge.actorFontSize,Ge.actorFontFamily)),i.width=Math.max(Ge.width,Je(i.description,Ge.actorFontSize,Ge.actorFontFamily));var a=e[n]+Ge.actorMargin-r.width/2-i.width/2;r.margin=Math.max(a,Ge.actorMargin)}}}},tn=function(t){Object.keys(t).forEach((function(e){Ge[e]=t[e]})),t.fontFamily&&(Ge.actorFontFamily=Ge.noteFontFamily=t.fontFamily)},en=function(t,e){Oe.parser.yy.clear(),Oe.parser.parse(t+"\n"),Ve.init();var n,r,i,o=Object(a.select)('[id="'.concat(e,'"]')),s=Oe.parser.yy.getActors(),u=Oe.parser.yy.getActorKeys(),c=Oe.parser.yy.getMessages(),l=Oe.parser.yy.getTitle(),f=Qe(s,c);Ke(s,f),We(o,s,u,0),Me.insertArrowHead(o),Me.insertArrowCrossHead(o),Me.insertSequenceNumber(o);var h=1;c.forEach((function(t){var e,a=Math.max(Ge.width,Je(t.message,Ge.noteFontSize,Ge.noteFontFamily));switch(t.type){case Oe.parser.yy.LINETYPE.NOTE:Ve.bumpVerticalPos(Ge.boxMargin),n=s[t.from].x,r=s[t.to].x,t.placement===Oe.parser.yy.PLACEMENT.RIGHTOF?He(o,n+(s[t.from].width+Ge.actorMargin)/2,Ve.getVerticalPos(),t,a):t.placement===Oe.parser.yy.PLACEMENT.LEFTOF?He(o,n-a+(s[t.from].width-Ge.actorMargin)/2,Ve.getVerticalPos(),t,a):t.to===t.from?He(o,n+(s[t.to].width-a)/2,Ve.getVerticalPos(),t,a):(i=Math.abs(n-r)+Ge.actorMargin,He(o,(n+r+a-i)/2,Ve.getVerticalPos(),t,i));break;case Oe.parser.yy.LINETYPE.ACTIVE_START:Ve.newActivation(t,o);break;case Oe.parser.yy.LINETYPE.ACTIVE_END:!function(t,e){var n=Ve.endActivation(t);n.starty+18>e&&(n.starty=e-6,e+=12),Me.drawActivation(o,n,e,Ge,qe(t.from.actor).length),Ve.insert(n.startx,e-10,n.stopx,e)}(t,Ve.getVerticalPos());break;case Oe.parser.yy.LINETYPE.LOOP_START:Ve.bumpVerticalPos(Ge.boxMargin),Ve.newLoop(t.message),Ve.bumpVerticalPos(Ge.boxMargin+Ge.boxTextMargin);break;case Oe.parser.yy.LINETYPE.LOOP_END:e=Ve.endLoop(),Me.drawLoop(o,e,"loop",Ge),Ve.bumpVerticalPos(Ge.boxMargin);break;case Oe.parser.yy.LINETYPE.RECT_START:Ve.bumpVerticalPos(Ge.boxMargin),Ve.newLoop(void 0,t.message),Ve.bumpVerticalPos(Ge.boxMargin);break;case Oe.parser.yy.LINETYPE.RECT_END:var u=Ve.endLoop();Me.drawBackgroundRect(o,u),Ve.bumpVerticalPos(Ge.boxMargin);break;case Oe.parser.yy.LINETYPE.OPT_START:Ve.bumpVerticalPos(Ge.boxMargin),Ve.newLoop(t.message),Ve.bumpVerticalPos(Ge.boxMargin+Ge.boxTextMargin);break;case Oe.parser.yy.LINETYPE.OPT_END:e=Ve.endLoop(),Me.drawLoop(o,e,"opt",Ge),Ve.bumpVerticalPos(Ge.boxMargin);break;case Oe.parser.yy.LINETYPE.ALT_START:Ve.bumpVerticalPos(Ge.boxMargin),Ve.newLoop(t.message),Ve.bumpVerticalPos(Ge.boxMargin+Ge.boxTextMargin);break;case Oe.parser.yy.LINETYPE.ALT_ELSE:Ve.bumpVerticalPos(Ge.boxMargin),e=Ve.addSectionToLoop(t.message),Ve.bumpVerticalPos(Ge.boxMargin);break;case Oe.parser.yy.LINETYPE.ALT_END:e=Ve.endLoop(),Me.drawLoop(o,e,"alt",Ge),Ve.bumpVerticalPos(Ge.boxMargin);break;case Oe.parser.yy.LINETYPE.PAR_START:Ve.bumpVerticalPos(Ge.boxMargin),Ve.newLoop(t.message),Ve.bumpVerticalPos(Ge.boxMargin+Ge.boxTextMargin);break;case Oe.parser.yy.LINETYPE.PAR_AND:Ve.bumpVerticalPos(Ge.boxMargin),e=Ve.addSectionToLoop(t.message),Ve.bumpVerticalPos(Ge.boxMargin);break;case Oe.parser.yy.LINETYPE.PAR_END:e=Ve.endLoop(),Me.drawLoop(o,e,"par",Ge),Ve.bumpVerticalPos(Ge.boxMargin);break;default:try{Ve.bumpVerticalPos(Ge.messageMargin);var c=Xe(t.from),l=Xe(t.to),f=c[0]<=l[0]?1:0,d=c[0]<l[0]?0:1;n=c[f],r=l[d];var p=Ve.getVerticalPos();!function(t,e,n,r,i,a){var o=t.append("g"),s=e+(n-e)/2,u=[],c=0,l=i.message.split(U),f=!0,h=!1,d=void 0;try{for(var p,y=l[Symbol.iterator]();!(f=(p=y.next()).done);f=!0){var g=p.value;u.push(o.append("text").attr("x",s).attr("y",r-7+17*c).style("font-size",Ge.messageFontSize).style("font-family",Ge.messageFontFamily).style("text-anchor","middle").attr("class","messageText").text(g.trim())),c++}}catch(t){h=!0,d=t}finally{try{f||null==y.return||y.return()}finally{if(h)throw d}}for(var m,v=17*(c-1),b=u.map((function(t){return(t._groups||t)[0][0].getBBox().width})),x=Math.max.apply(Math,$e(b)),_=0,w=u;_<w.length;_++){var k=w[_];"left"===Ge.messageAlign?k.attr("x",s-x/2).style("text-anchor","start"):"right"===Ge.messageAlign&&k.attr("x",s+x/2).style("text-anchor","end")}if(Ve.bumpVerticalPos(v),e===n){Ge.rightAngles?m=o.append("path").attr("d","M ".concat(e,",").concat(r+v," H ").concat(e+Ge.width/2," V ").concat(r+25+v," H ").concat(e)):(v+=5,m=o.append("path").attr("d","M "+e+","+(r+v)+" C "+(e+60)+","+(r-10+v)+" "+(e+60)+","+(r+30+v)+" "+e+","+(r+20+v))),Ve.bumpVerticalPos(30+v);var E=Math.max(x/2,100);Ve.insert(e-E,Ve.getVerticalPos()-10+v,n+E,Ve.getVerticalPos()+v)}else(m=o.append("line")).attr("x1",e),m.attr("y1",r+v),m.attr("x2",n),m.attr("y2",r+v),Ve.insert(e,Ve.getVerticalPos()-10+v,n,Ve.getVerticalPos()+v);i.type===Oe.parser.yy.LINETYPE.DOTTED||i.type===Oe.parser.yy.LINETYPE.DOTTED_CROSS||i.type===Oe.parser.yy.LINETYPE.DOTTED_OPEN?(m.style("stroke-dasharray","3, 3"),m.attr("class","messageLine1")):m.attr("class","messageLine0");var A="";Ge.arrowMarkerAbsolute&&(A=(A=(A=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search).replace(/\(/g,"\\(")).replace(/\)/g,"\\)")),m.attr("stroke-width",2),m.attr("stroke","black"),m.style("fill","none"),i.type!==Oe.parser.yy.LINETYPE.SOLID&&i.type!==Oe.parser.yy.LINETYPE.DOTTED||m.attr("marker-end","url("+A+"#arrowhead)"),i.type!==Oe.parser.yy.LINETYPE.SOLID_CROSS&&i.type!==Oe.parser.yy.LINETYPE.DOTTED_CROSS||m.attr("marker-end","url("+A+"#crosshead)"),(Ue.showSequenceNumbers()||Ge.showSequenceNumbers)&&(m.attr("marker-start","url("+A+"#sequencenumber)"),o.append("text").attr("x",e).attr("y",r+4+v).attr("font-family","sans-serif").attr("font-size","12px").attr("text-anchor","middle").attr("textLength","16px").attr("class","sequenceNumber").text(a))}(o,n,r,p,t,h);var y=c.concat(l);Ve.insert(Math.min.apply(null,y),p,Math.max.apply(null,y),p)}catch(t){x.error("error while drawing message",t)}}[Oe.parser.yy.LINETYPE.SOLID_OPEN,Oe.parser.yy.LINETYPE.DOTTED_OPEN,Oe.parser.yy.LINETYPE.SOLID,Oe.parser.yy.LINETYPE.DOTTED,Oe.parser.yy.LINETYPE.SOLID_CROSS,Oe.parser.yy.LINETYPE.DOTTED_CROSS].includes(t.type)&&h++})),Ge.mirrorActors&&(Ve.bumpVerticalPos(2*Ge.boxMargin),We(o,s,u,Ve.getVerticalPos()));var d=Ve.getBounds();x.debug("For line height fix Querying: #"+e+" .actor-line"),Object(a.selectAll)("#"+e+" .actor-line").attr("y2",d.stopy);var p=d.stopy-d.starty+2*Ge.diagramMarginY;Ge.mirrorActors&&(p=p-Ge.boxMargin+Ge.bottomMarginAdj);var y=d.stopx-d.startx+2*Ge.diagramMarginX;l&&o.append("text").text(l).attr("x",(d.stopx-d.startx)/2-2*Ge.diagramMarginX).attr("y",-25),Ge.useMaxWidth?(o.attr("height","100%"),o.attr("width","100%"),o.attr("style","max-width:"+y+"px;")):(o.attr("height",p),o.attr("width",y));var g=l?40:0;o.attr("viewBox",d.startx-Ge.diagramMarginX+" -"+(Ge.diagramMarginY+g)+" "+y+" "+(p+g))},nn=n(23),rn=n.n(nn);function an(t){return function(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);e<t.length;e++)n[e]=t[e];return n}}(t)||function(t){if(Symbol.iterator in Object(t)||"[object Arguments]"===Object.prototype.toString.call(t))return Array.from(t)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()}var on,sn,un=h(),cn="",ln="",fn="",hn=[],dn="",pn=[],yn=[],gn="",mn=["active","done","crit","milestone"],vn=[],bn=!1,xn=function(t,e,n){return t.isoWeekday()>=6&&n.indexOf("weekends")>=0||(n.indexOf(t.format("dddd").toLowerCase())>=0||n.indexOf(t.format(e.trim()))>=0)},_n=function(t,e,n){if(n.length&&!t.manualEndTime){var r=p()(t.startTime,e,!0);r.add(1,"d");var i=p()(t.endTime,e,!0),a=wn(r,i,e,n);t.endTime=i.toDate(),t.renderEndTime=a}},wn=function(t,e,n,r){for(var i=!1,a=null;t<=e;)i||(a=e.toDate()),(i=xn(t,n,r))&&e.add(1,"d"),t.add(1,"d");return a},kn=function(t,e,n){n=n.trim();var r=/^after\s+([\d\w- ]+)/.exec(n.trim());if(null!==r){var i=null;if(r[1].split(" ").forEach((function(t){var e=Nn(t);void 0!==e&&(i?e.endTime>i.endTime&&(i=e):i=e)})),i)return i.endTime;var a=new Date;return a.setHours(0,0,0,0),a}var o=p()(n,e.trim(),!0);return o.isValid()?o.toDate():(x.debug("Invalid date:"+n),x.debug("With date format:"+e.trim()),new Date)},En=function(t,e){if(null!==t)switch(t[2]){case"s":e.add(t[1],"seconds");break;case"m":e.add(t[1],"minutes");break;case"h":e.add(t[1],"hours");break;case"d":e.add(t[1],"days");break;case"w":e.add(t[1],"weeks")}return e.toDate()},An=function(t,e,n,r){r=r||!1,n=n.trim();var i=p()(n,e.trim(),!0);return i.isValid()?(r&&i.add(1,"d"),i.toDate()):En(/^([\d]+)([wdhms])/.exec(n.trim()),p()(t))},Tn=0,Sn=function(t){return void 0===t?"task"+(Tn+=1):t},Mn=[],On={},Nn=function(t){var e=On[t];return Mn[e]},Cn=function(){for(var t=function(t){var e=Mn[t],n="";switch(Mn[t].raw.startTime.type){case"prevTaskEnd":var r=Nn(e.prevTaskId);e.startTime=r.endTime;break;case"getStartDate":(n=kn(0,cn,Mn[t].raw.startTime.startData))&&(Mn[t].startTime=n)}return Mn[t].startTime&&(Mn[t].endTime=An(Mn[t].startTime,cn,Mn[t].raw.endTime.data,bn),Mn[t].endTime&&(Mn[t].processed=!0,Mn[t].manualEndTime=p()(Mn[t].raw.endTime.data,"YYYY-MM-DD",!0).isValid(),_n(Mn[t],cn,hn))),Mn[t].processed},e=!0,n=0;n<Mn.length;n++)t(n),e=e&&Mn[n].processed;return e},Dn=function(t,e){t.split(",").forEach((function(t){var n=Nn(t);void 0!==n&&n.classes.push(e)}))},Ln=function(t,e){vn.push((function(){var n=document.querySelector('[id="'.concat(t,'"]'));null!==n&&n.addEventListener("click",(function(){e()}))})),vn.push((function(){var n=document.querySelector('[id="'.concat(t,'-text"]'));null!==n&&n.addEventListener("click",(function(){e()}))}))},Fn={clear:function(){pn=[],yn=[],gn="",vn=[],dn="",Tn=0,on=void 0,sn=void 0,Mn=[],cn="",ln="",fn="",hn=[],bn=!1},setDateFormat:function(t){cn=t},getDateFormat:function(){return cn},enableInclusiveEndDates:function(){bn=!0},endDatesAreInclusive:function(){return bn},setAxisFormat:function(t){ln=t},getAxisFormat:function(){return ln},setTodayMarker:function(t){fn=t},getTodayMarker:function(){return fn},setTitle:function(t){dn=t},getTitle:function(){return dn},addSection:function(t){gn=t,pn.push(t)},getSections:function(){return pn},getTasks:function(){for(var t=Cn(),e=0;!t&&e<10;)t=Cn(),e++;return yn=Mn},addTask:function(t,e){var n={section:gn,type:gn,processed:!1,manualEndTime:!1,renderEndTime:null,raw:{data:e},task:t,classes:[]},r=function(t,e){var n=(":"===e.substr(0,1)?e.substr(1,e.length):e).split(","),r={};In(n,r,mn);for(var i=0;i<n.length;i++)n[i]=n[i].trim();switch(n.length){case 1:r.id=Sn(),r.startTime={type:"prevTaskEnd",id:t},r.endTime={data:n[0]};break;case 2:r.id=Sn(),r.startTime={type:"getStartDate",startData:n[0]},r.endTime={data:n[1]};break;case 3:r.id=Sn(n[0]),r.startTime={type:"getStartDate",startData:n[1]},r.endTime={data:n[2]}}return r}(sn,e);n.raw.startTime=r.startTime,n.raw.endTime=r.endTime,n.id=r.id,n.prevTaskId=sn,n.active=r.active,n.done=r.done,n.crit=r.crit,n.milestone=r.milestone;var i=Mn.push(n);sn=n.id,On[n.id]=i-1},findTaskById:Nn,addTaskOrg:function(t,e){var n={section:gn,type:gn,description:t,task:t,classes:[]},r=function(t,e){var n=(":"===e.substr(0,1)?e.substr(1,e.length):e).split(","),r={};In(n,r,mn);for(var i=0;i<n.length;i++)n[i]=n[i].trim();var a="";switch(n.length){case 1:r.id=Sn(),r.startTime=t.endTime,a=n[0];break;case 2:r.id=Sn(),r.startTime=kn(0,cn,n[0]),a=n[1];break;case 3:r.id=Sn(n[0]),r.startTime=kn(0,cn,n[1]),a=n[2]}return a&&(r.endTime=An(r.startTime,cn,a,bn),r.manualEndTime=p()(a,"YYYY-MM-DD",!0).isValid(),_n(r,cn,hn)),r}(on,e);n.startTime=r.startTime,n.endTime=r.endTime,n.id=r.id,n.active=r.active,n.done=r.done,n.crit=r.crit,n.milestone=r.milestone,on=n,yn.push(n)},setExcludes:function(t){hn=t.toLowerCase().split(/[\s,]+/)},getExcludes:function(){return hn},setClickEvent:function(t,e,n){t.split(",").forEach((function(t){!function(t,e,n){if("loose"===un.securityLevel&&void 0!==e){var r=[];if("string"==typeof n){r=n.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(var i=0;i<r.length;i++){var a=r[i].trim();'"'===a.charAt(0)&&'"'===a.charAt(a.length-1)&&(a=a.substr(1,a.length-2)),r[i]=a}}0===r.length&&r.push(t),void 0!==Nn(t)&&Ln(t,(function(){var t;(t=window)[e].apply(t,an(r))}))}}(t,e,n)})),Dn(t,"clickable")},setLink:function(t,e){var n=e;"loose"!==un.securityLevel&&(n=Object(k.sanitizeUrl)(e)),t.split(",").forEach((function(t){void 0!==Nn(t)&&Ln(t,(function(){window.open(n,"_self")}))})),Dn(t,"clickable")},bindFunctions:function(t){vn.forEach((function(e){e(t)}))},durationToDate:En};function In(t,e,n){for(var r=!0;r;)r=!1,n.forEach((function(n){var i=new RegExp("^\\s*"+n+"\\s*$");t[0].match(i)&&(e[n]=!0,t.shift(1),r=!0)}))}nn.parser.yy=Fn;var Pn,Rn={titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,rightPadding:75,leftPadding:75,gridLineStartPadding:35,fontSize:11,fontFamily:'"Open-Sans", "sans-serif"'},Bn=function(t){Object.keys(t).forEach((function(e){Rn[e]=t[e]}))},jn=function(t,e){nn.parser.yy.clear(),nn.parser.parse(t);var n=document.getElementById(e);void 0===(Pn=n.parentElement.offsetWidth)&&(Pn=1200),void 0!==Rn.useWidth&&(Pn=Rn.useWidth);var r=nn.parser.yy.getTasks(),i=r.length*(Rn.barHeight+Rn.barGap)+2*Rn.topPadding;n.setAttribute("height","100%"),n.setAttribute("viewBox","0 0 "+Pn+" "+i);for(var o=Object(a.select)('[id="'.concat(e,'"]')),s=Object(a.scaleTime)().domain([Object(a.min)(r,(function(t){return t.startTime})),Object(a.max)(r,(function(t){return t.endTime}))]).rangeRound([0,Pn-Rn.leftPadding-Rn.rightPadding]),u=[],c=0;c<r.length;c++)u.push(r[c].type);var l=u;function f(t){for(var e=t.length,n={};e;)n[t[--e]]=(n[t[e]]||0)+1;return n}u=function(t){for(var e={},n=[],r=0,i=t.length;r<i;++r)e.hasOwnProperty(t[r])||(e[t[r]]=!0,n.push(t[r]));return n}(u),function(t,e,n){var r=Rn.barHeight,i=r+Rn.barGap,c=Rn.topPadding,h=Rn.leftPadding;Object(a.scaleLinear)().domain([0,u.length]).range(["#00B9FA","#F95002"]).interpolate(a.interpolateHcl);(function(t,e,n,r){var i=Object(a.axisBottom)(s).tickSize(-r+e+Rn.gridLineStartPadding).tickFormat(Object(a.timeFormat)(nn.parser.yy.getAxisFormat()||Rn.axisFormat||"%Y-%m-%d"));o.append("g").attr("class","grid").attr("transform","translate("+t+", "+(r-50)+")").call(i).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10).attr("dy","1em")})(h,c,0,n),function(t,e,n,r,i,a,c){o.append("g").selectAll("rect").data(t).enter().append("rect").attr("x",0).attr("y",(function(t,r){return r*e+n-2})).attr("width",(function(){return c-Rn.rightPadding/2})).attr("height",e).attr("class",(function(t){for(var e=0;e<u.length;e++)if(t.type===u[e])return"section section"+e%Rn.numberSectionStyles;return"section section0"}));var l=o.append("g").selectAll("rect").data(t).enter();l.append("rect").attr("id",(function(t){return t.id})).attr("rx",3).attr("ry",3).attr("x",(function(t){return t.milestone?s(t.startTime)+r+.5*(s(t.endTime)-s(t.startTime))-.5*i:s(t.startTime)+r})).attr("y",(function(t,r){return r*e+n})).attr("width",(function(t){return t.milestone?i:s(t.renderEndTime||t.endTime)-s(t.startTime)})).attr("height",i).attr("transform-origin",(function(t,a){return(s(t.startTime)+r+.5*(s(t.endTime)-s(t.startTime))).toString()+"px "+(a*e+n+.5*i).toString()+"px"})).attr("class",(function(t){var e="";t.classes.length>0&&(e=t.classes.join(" "));for(var n=0,r=0;r<u.length;r++)t.type===u[r]&&(n=r%Rn.numberSectionStyles);var i="";return t.active?t.crit?i+=" activeCrit":i=" active":t.done?i=t.crit?" doneCrit":" done":t.crit&&(i+=" crit"),0===i.length&&(i=" task"),t.milestone&&(i=" milestone "+i),i+=n,"task"+(i+=" "+e)})),l.append("text").attr("id",(function(t){return t.id+"-text"})).text((function(t){return t.task})).attr("font-size",Rn.fontSize).attr("x",(function(t){var e=s(t.startTime),n=s(t.renderEndTime||t.endTime);t.milestone&&(e+=.5*(s(t.endTime)-s(t.startTime))-.5*i),t.milestone&&(n=e+i);var a=this.getBBox().width;return a>n-e?n+a+1.5*Rn.leftPadding>c?e+r-5:n+r+5:(n-e)/2+e+r})).attr("y",(function(t,r){return r*e+Rn.barHeight/2+(Rn.fontSize/2-2)+n})).attr("text-height",i).attr("class",(function(t){var e=s(t.startTime),n=s(t.endTime);t.milestone&&(n=e+i);var r=this.getBBox().width,a="";t.classes.length>0&&(a=t.classes.join(" "));for(var o=0,l=0;l<u.length;l++)t.type===u[l]&&(o=l%Rn.numberSectionStyles);var f="";return t.active&&(f=t.crit?"activeCritText"+o:"activeText"+o),t.done?f=t.crit?f+" doneCritText"+o:f+" doneText"+o:t.crit&&(f=f+" critText"+o),t.milestone&&(f+=" milestoneText"),r>n-e?n+r+1.5*Rn.leftPadding>c?a+" taskTextOutsideLeft taskTextOutside"+o+" "+f:a+" taskTextOutsideRight taskTextOutside"+o+" "+f+" width-"+r:a+" taskText taskText"+o+" "+f+" width-"+r}))}(t,i,c,h,r,0,e),function(t,e){for(var n=[],r=0,i=0;i<u.length;i++)n[i]=[u[i],(a=u[i],s=l,f(s)[a]||0)];var a,s;o.append("g").selectAll("text").data(n).enter().append((function(t){var e=t[0].split(U),n=-(e.length-1)/2,r=document.createElementNS("http://www.w3.org/2000/svg","text");r.setAttribute("dy",n+"em");for(var i=0;i<e.length;i++){var a=document.createElementNS("http://www.w3.org/2000/svg","tspan");a.setAttribute("alignment-baseline","central"),a.setAttribute("x","10"),i>0&&a.setAttribute("dy","1em"),a.textContent=e[i],r.appendChild(a)}return r})).attr("x",10).attr("y",(function(i,a){if(!(a>0))return i[1]*t/2+e;for(var o=0;o<a;o++)return r+=n[a-1][1],i[1]*t/2+r*t+e})).attr("class",(function(t){for(var e=0;e<u.length;e++)if(t[0]===u[e])return"sectionTitle sectionTitle"+e%Rn.numberSectionStyles;return"sectionTitle"}))}(i,c),function(t,e,n,r){var i=Fn.getTodayMarker();if("off"===i)return;var a=o.append("g").attr("class","today"),u=new Date,c=a.append("line");c.attr("x1",s(u)+t).attr("x2",s(u)+t).attr("y1",Rn.titleTopMargin).attr("y2",r-Rn.titleTopMargin).attr("class","today"),""!==i&&c.attr("style",i.replace(/,/g,";"))}(h,0,0,n)}(r,Pn,i),void 0!==Rn.useWidth&&n.setAttribute("width",Pn),o.append("text").text(nn.parser.yy.getTitle()).attr("x",Pn/2).attr("y",Rn.titleTopMargin).attr("class","titleText")},Yn=h(),zn=[],Un={},$n=0,Gn=[],Vn=function(t){var e="",n=t;if(t.indexOf("~")>0){var r=t.split("~");n=r[0],e=r[1]}return{className:n,type:e}},Hn=function(t){var e=Vn(t);void 0===Un[e.className]&&(Un[e.className]={id:e.className,type:e.type,cssClasses:[],methods:[],members:[],annotations:[],domId:"classid-"+e.className+"-"+$n},$n++)},Wn=function(t){for(var e=Object.keys(Un),n=0;n<e.length;n++)if(Un[e[n]].id===t)return Un[e[n]].domId},qn=function(t,e){var n=Vn(t).className,r=Un[n];if("string"==typeof e){var i=e.trim();i.startsWith("<<")&&i.endsWith(">>")?r.annotations.push(i.substring(2,i.length-2)):i.indexOf(")")>0?r.methods.push(i):i&&r.members.push(i)}},Xn=function(t,e){t.split(",").forEach((function(t){var n=t;t[0].match(/\d/)&&(n="classid-"+n),void 0!==Un[n]&&Un[n].cssClasses.push(e)}))},Zn=function(t,e,n){var r=t,i=Wn(r);"loose"===Yn.securityLevel&&void 0!==e&&void 0!==Un[r]&&(n&&(Un[r].tooltip=z(n,Yn)),Gn.push((function(){var t=document.querySelector('[id="'.concat(i,'"]'));null!==t&&t.addEventListener("click",(function(){window[e](i)}),!1)})))},Jn={AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3},Qn=function(t){var e=Object(a.select)(".mermaidTooltip");null===(e._groups||e)[0][0]&&(e=Object(a.select)("body").append("div").attr("class","mermaidTooltip").style("opacity",0)),Object(a.select)(t).select("svg").selectAll("g.node").on("mouseover",(function(){var t=Object(a.select)(this);if(null!==t.attr("title")){var n=this.getBoundingClientRect();e.transition().duration(200).style("opacity",".9"),e.html(t.attr("title")).style("left",n.left+(n.right-n.left)/2+"px").style("top",n.top-14+document.body.scrollTop+"px"),t.classed("hover",!0)}})).on("mouseout",(function(){e.transition().duration(500).style("opacity",0),Object(a.select)(this).classed("hover",!1)}))};Gn.push(Qn);var Kn={addClass:Hn,bindFunctions:function(t){Gn.forEach((function(e){e(t)}))},clear:function(){zn=[],Un={},(Gn=[]).push(Qn)},getClass:function(t){return Un[t]},getClasses:function(){return Un},addAnnotation:function(t,e){var n=Vn(t).className;Un[n].annotations.push(e)},getRelations:function(){return zn},addRelation:function(t){x.debug("Adding relation: "+JSON.stringify(t)),Hn(t.id1),Hn(t.id2),t.id1=Vn(t.id1).className,t.id2=Vn(t.id2).className,zn.push(t)},addMember:qn,addMembers:function(t,e){Array.isArray(e)&&(e.reverse(),e.forEach((function(e){return qn(t,e)})))},cleanupLabel:function(t){return":"===t.substring(0,1)?t.substr(1).trim():t.trim()},lineType:{LINE:0,DOTTED_LINE:1},relationType:Jn,setClickEvent:function(t,e,n){t.split(",").forEach((function(t){Zn(t,e,n)})),Xn(t,"clickable")},setCssClass:Xn,setLink:function(t,e,n){t.split(",").forEach((function(t){var r=t;t[0].match(/\d/)&&(r="classid-"+r),void 0!==Un[r]&&(Un[r].link=F(e,Yn),n&&(Un[r].tooltip=z(n,Yn)))})),Xn(t,"clickable")},lookUpDomId:Wn},tr=n(38),er=n.n(tr),nr=0,rr=function(t){var e=t.match(/^(\+|-|~|#)?(\w+)(~\w+~|\[\])?\s+(\w+)$/),n=t.match(/^(\+|-|~|#)?(\w+)\s?\(\s*(\w+(~\w+~|\[\])?\s*(\w+)?)?\s*\)\s?([*|$])?\s?(\w+(~\w+~|\[\])?)?\s*$/);return e?ir(e):n?ar(n):or(t)},ir=function(t){return{displayText:(t[1]?t[1].trim():"")+(t[2]?t[2].trim():"")+(t[3]?ur(t[3]):"")+" "+(t[4]?t[4].trim():""),cssStyle:""}},ar=function(t){var e=t[1]?t[1].trim():"",n=t[2]?t[2].trim():"",r=t[3]?ur(t[3]):"",i=t[6]?t[6].trim():"";return{displayText:e+n+"("+r+")"+(t[7]?" : "+ur(t[7]).trim():""),cssStyle:cr(i)}},or=function(t){var e="",n="",r="",i=t.indexOf("("),a=t.indexOf(")");if(i>1&&a>i&&a<=t.length){var o=t.match(/(\+|-|~|#)?(\w+)/),s=o[1]?o[1].trim():"",u=o[2],c=t.substring(i+1,a),l=t.substring(a,a+1);n=cr(l),a<(e=s+u+"("+ur(c.trim())+")").length&&""!==(r=t.substring(a+2).trim())&&(r=" : "+ur(r))}else e=ur(t);return{displayText:e+r,cssStyle:n}},sr=function(t,e,n,r){var i=rr(e),a=t.append("tspan").attr("x",r.padding).text(i.displayText);""!==i.cssStyle&&a.attr("style",i.cssStyle),n||a.attr("dy",r.textHeight)},ur=function t(e){var n=e;return-1!=e.indexOf("~")?t(n=(n=n.replace("~","<")).replace("~",">")):n},cr=function(t){switch(t){case"*":return"font-style:italic;";case"$":return"text-decoration:underline;";default:return""}},lr=function(t,e,n){x.info("Rendering class "+e);var r="classGroup ";e.cssClasses.length>0&&(r+=e.cssClasses.join(" "));var i,a=e.id,o={id:a,label:e.id,width:0,height:0},s=t.append("g").attr("id",Wn(a)).attr("class",r);i=e.link?s.append("svg:a").attr("xlink:href",e.link).attr("target","_blank").append("text").attr("y",n.textHeight+n.padding).attr("x",0):s.append("text").attr("y",n.textHeight+n.padding).attr("x",0);var u=!0;e.annotations.forEach((function(t){var e=i.append("tspan").text("«"+t+"»");u||e.attr("dy",n.textHeight),u=!1}));var c=e.id;void 0!==e.type&&""!==e.type&&(c+="<"+e.type+">");var l=i.append("tspan").text(c).attr("class","title");u||l.attr("dy",n.textHeight);var f=i.node().getBBox().height,h=s.append("line").attr("x1",0).attr("y1",n.padding+f+n.dividerMargin/2).attr("y2",n.padding+f+n.dividerMargin/2),d=s.append("text").attr("x",n.padding).attr("y",f+n.dividerMargin+n.textHeight).attr("fill","white").attr("class","classText");u=!0,e.members.forEach((function(t){sr(d,t,u,n),u=!1}));var p=d.node().getBBox(),y=s.append("line").attr("x1",0).attr("y1",n.padding+f+n.dividerMargin+p.height).attr("y2",n.padding+f+n.dividerMargin+p.height),g=s.append("text").attr("x",n.padding).attr("y",f+2*n.dividerMargin+p.height+n.textHeight).attr("fill","white").attr("class","classText");u=!0,e.methods.forEach((function(t){sr(g,t,u,n),u=!1}));var m=s.node().getBBox(),v=s.insert("rect",":first-child").attr("x",0).attr("y",0).attr("width",m.width+2*n.padding).attr("height",m.height+n.padding+.5*n.dividerMargin).node().getBBox().width;return i.node().childNodes.forEach((function(t){t.setAttribute("x",(v-t.getBBox().width)/2)})),e.tooltip&&i.insert("title").text(e.tooltip),h.attr("x2",v),y.attr("x2",v),o.width=v,o.height=m.height+n.padding+.5*n.dividerMargin,o},fr=function(t,e,n,r){var i=function(t){switch(t){case Jn.AGGREGATION:return"aggregation";case Jn.EXTENSION:return"extension";case Jn.COMPOSITION:return"composition";case Jn.DEPENDENCY:return"dependency"}};e.points=e.points.filter((function(t){return!Number.isNaN(t.y)}));var o,s,u=e.points,c=Object(a.line)().x((function(t){return t.x})).y((function(t){return t.y})).curve(a.curveBasis),l=t.append("path").attr("d",c(u)).attr("id","edge"+nr).attr("class","relation"),f="";r.arrowMarkerAbsolute&&(f=(f=(f=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search).replace(/\(/g,"\\(")).replace(/\)/g,"\\)")),1==n.relation.lineType&&l.attr("class","relation dashed-line"),"none"!==n.relation.type1&&l.attr("marker-start","url("+f+"#"+i(n.relation.type1)+"Start)"),"none"!==n.relation.type2&&l.attr("marker-end","url("+f+"#"+i(n.relation.type2)+"End)");var h,d,p,y,g=e.points.length,m=D(e.points);if(o=m.x,s=m.y,g%2!=0&&g>1){var v=L("none"!==n.relation.type1,e.points,e.points[0]),b=L("none"!==n.relation.type2,e.points,e.points[g-1]);x.debug("cardinality_1_point "+JSON.stringify(v)),x.debug("cardinality_2_point "+JSON.stringify(b)),h=v.x,d=v.y,p=b.x,y=b.y}if(void 0!==n.title){var _=t.append("g").attr("class","classLabel"),w=_.append("text").attr("class","label").attr("x",o).attr("y",s).attr("fill","red").attr("text-anchor","middle").text(n.title);window.label=w;var k=w.node().getBBox();_.insert("rect",":first-child").attr("class","box").attr("x",k.x-r.padding/2).attr("y",k.y-r.padding/2).attr("width",k.width+r.padding).attr("height",k.height+r.padding)}(x.info("Rendering relation "+JSON.stringify(n)),void 0!==n.relationTitle1&&"none"!==n.relationTitle1)&&t.append("g").attr("class","cardinality").append("text").attr("class","type1").attr("x",h).attr("y",d).attr("fill","black").attr("font-size","6").text(n.relationTitle1);void 0!==n.relationTitle2&&"none"!==n.relationTitle2&&t.append("g").attr("class","cardinality").append("text").attr("class","type2").attr("x",p).attr("y",y).attr("fill","black").attr("font-size","6").text(n.relationTitle2);nr++};tr.parser.yy=Kn;var hr={},dr={dividerMargin:10,padding:5,textHeight:10},pr=function(t){for(var e=Object.keys(hr),n=0;n<e.length;n++)if(hr[e[n]].label===t)return e[n]},yr=function(t){Object.keys(t).forEach((function(e){dr[e]=t[e]}))},gr=function(t,e){hr={},tr.parser.yy.clear(),tr.parser.parse(t),x.info("Rendering diagram "+t);var n,r=Object(a.select)("[id='".concat(e,"']"));(n=r).append("defs").append("marker").attr("id","extensionStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),n.append("defs").append("marker").attr("id","extensionEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z"),n.append("defs").append("marker").attr("id","compositionStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),n.append("defs").append("marker").attr("id","compositionEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),n.append("defs").append("marker").attr("id","aggregationStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),n.append("defs").append("marker").attr("id","aggregationEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),n.append("defs").append("marker").attr("id","dependencyStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),n.append("defs").append("marker").attr("id","dependencyEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z");var i=new P.a.Graph({multigraph:!0});i.setGraph({isMultiGraph:!0}),i.setDefaultEdgeLabel((function(){return{}}));for(var o=Kn.getClasses(),s=Object.keys(o),u=0;u<s.length;u++){var c=o[s[u]],l=lr(r,c,dr);hr[l.id]=l,i.setNode(l.id,l),x.info("Org height: "+l.height)}Kn.getRelations().forEach((function(t){x.info("tjoho"+pr(t.id1)+pr(t.id2)+JSON.stringify(t)),i.setEdge(pr(t.id1),pr(t.id2),{relation:t},t.title||"DEFAULT")})),It.a.layout(i),i.nodes().forEach((function(t){void 0!==t&&void 0!==i.node(t)&&(x.debug("Node "+t+": "+JSON.stringify(i.node(t))),Object(a.select)("#"+Wn(t)).attr("transform","translate("+(i.node(t).x-i.node(t).width/2)+","+(i.node(t).y-i.node(t).height/2)+" )"))})),i.edges().forEach((function(t){void 0!==t&&void 0!==i.edge(t)&&(x.debug("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(i.edge(t))),fr(r,i.edge(t),i.edge(t).relation,dr))}));var f=r.node().getBBox(),h=f.width+40,d=f.height+40;dr.useMaxWidth?(r.attr("width","100%"),r.attr("style","max-width: ".concat(h,"px;"))):(r.attr("height",d),r.attr("width",h));var p="".concat(f.x-20," ").concat(f.y-20," ").concat(h," ").concat(d);x.debug("viewBox ".concat(p)),r.attr("viewBox",p)};function mr(t){return(mr="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var vr,br=function(t){return JSON.parse(JSON.stringify(t))},xr=[],_r={root:{relations:[],states:{},documents:{}}},wr=_r.root,kr=0,Er=function(t,e,n,r,i){void 0===wr.states[t]?wr.states[t]={id:t,descriptions:[],type:e,doc:n,note:i}:(wr.states[t].doc||(wr.states[t].doc=n),wr.states[t].type||(wr.states[t].type=e)),r&&(x.info("Adding state ",t,r),"string"==typeof r&&Sr(t,r.trim()),"object"===mr(r)&&r.forEach((function(e){return Sr(t,e.trim())}))),i&&(wr.states[t].note=i)},Ar=function(){wr=(_r={root:{relations:[],states:{},documents:{}}}).root},Tr=function(t,e,n){var r=t,i=e,a="default",o="default";"[*]"===t&&(r="start"+ ++kr,a="start"),"[*]"===e&&(i="end"+kr,o="end"),Er(r,a),Er(i,o),wr.relations.push({id1:r,id2:i,title:n})},Sr=function(t,e){var n=wr.states[t],r=e;":"===r[0]&&(r=r.substr(1).trim()),n.descriptions.push(r)},Mr=0,Or=[],Nr={addState:Er,clear:Ar,getState:function(t){return wr.states[t]},getStates:function(){return wr.states},getRelations:function(){return wr.relations},getClasses:function(){return Or},getDirection:function(){return"TB"},addRelation:Tr,getDividerId:function(){return"divider-id-"+ ++Mr},cleanupLabel:function(t){return":"===t.substring(0,1)?t.substr(2).trim():t.trim()},lineType:{LINE:0,DOTTED_LINE:1},relationType:{AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3},logDocuments:function(){x.info("Documents = ",_r)},getRootDoc:function(){return xr},setRootDoc:function(t){x.info("Setting root doc",t),xr=t},getRootDocV2:function(){return function t(e,n,r){if("relation"===n.stmt)t(e,n.state1,!0),t(e,n.state2,!1);else if("state"===n.stmt&&"[*]"===n.id&&(n.id=r?e.id+"_start":e.id+"_end",n.start=r),n.doc){var i=[],a=0,o=[];for(a=0;a<n.doc.length;a++)if("divider"===n.doc[a].type){var s=br(n.doc[a]);s.doc=br(o),i.push(s),o=[]}else o.push(n.doc[a]);if(i.length>0&&o.length>0){var u={stmt:"state",id:O(),type:"divider",doc:br(o)};i.push(br(u)),n.doc=i}n.doc.forEach((function(e){return t(n,e,!0)}))}}({id:"root"},{id:"root",doc:xr},!0),{id:"root",doc:xr}},extract:function(t){var e;e=t.doc?t.doc:t,x.info(e),Ar(),x.info("Extract",e),e.forEach((function(t){"state"===t.stmt&&Er(t.id,t.type,t.doc,t.description,t.note),"relation"===t.stmt&&Tr(t.state1.id,t.state2.id,t.description)}))},trimColon:function(t){return t&&":"===t[0]?t.substr(1).trim():t.trim()}},Cr=n(17),Dr=n.n(Cr),Lr={},Fr=function(t,e){Lr[t]=e},Ir=function(t,e){var n=t.append("text").attr("x",2*h().state.padding).attr("y",h().state.textHeight+1.3*h().state.padding).attr("font-size",h().state.fontSize).attr("class","state-title").text(e.descriptions[0]).node().getBBox(),r=n.height,i=t.append("text").attr("x",h().state.padding).attr("y",r+.4*h().state.padding+h().state.dividerMargin+h().state.textHeight).attr("class","state-description"),a=!0,o=!0;e.descriptions.forEach((function(t){a||(!function(t,e,n){var r=t.append("tspan").attr("x",2*h().state.padding).text(e);n||r.attr("dy",h().state.textHeight)}(i,t,o),o=!1),a=!1}));var s=t.append("line").attr("x1",h().state.padding).attr("y1",h().state.padding+r+h().state.dividerMargin/2).attr("y2",h().state.padding+r+h().state.dividerMargin/2).attr("class","descr-divider"),u=i.node().getBBox(),c=Math.max(u.width,n.width);return s.attr("x2",c+3*h().state.padding),t.insert("rect",":first-child").attr("x",h().state.padding).attr("y",h().state.padding).attr("width",c+2*h().state.padding).attr("height",u.height+r+2*h().state.padding).attr("rx",h().state.radius),t},Pr=function(t,e,n){var r,i=h().state.padding,a=2*h().state.padding,o=t.node().getBBox(),s=o.width,u=o.x,c=t.append("text").attr("x",0).attr("y",h().state.titleShift).attr("font-size",h().state.fontSize).attr("class","state-title").text(e.id),l=c.node().getBBox().width+a,f=Math.max(l,s);f===s&&(f+=a);var d=t.node().getBBox();e.doc,r=u-i,l>s&&(r=(s-f)/2+i),Math.abs(u-d.x)<i&&l>s&&(r=u-(l-s)/2);var p=1-h().state.textHeight;return t.insert("rect",":first-child").attr("x",r).attr("y",p).attr("class",n?"alt-composit":"composit").attr("width",f).attr("height",d.height+h().state.textHeight+h().state.titleShift+1).attr("rx","0"),c.attr("x",r+i),l<=s&&c.attr("x",u+(f-a)/2-l/2+i),t.insert("rect",":first-child").attr("x",r).attr("y",h().state.titleShift-h().state.textHeight-h().state.padding).attr("width",f).attr("height",3*h().state.textHeight).attr("rx",h().state.radius),t.insert("rect",":first-child").attr("x",r).attr("y",h().state.titleShift-h().state.textHeight-h().state.padding).attr("width",f).attr("height",d.height+3+2*h().state.textHeight).attr("rx",h().state.radius),t},Rr=function(t,e){e.attr("class","state-note");var n=e.append("rect").attr("x",0).attr("y",h().state.padding),r=function(t,e,n,r){var i=0,a=r.append("text");a.style("text-anchor","start"),a.attr("class","noteText");var o=t.replace(/\r\n/g,"<br/>"),s=(o=o.replace(/\n/g,"<br/>")).split(U),u=1.25*h().state.noteMargin,c=!0,l=!1,f=void 0;try{for(var d,p=s[Symbol.iterator]();!(c=(d=p.next()).done);c=!0){var y=d.value.trim();if(y.length>0){var g=a.append("tspan");if(g.text(y),0===u)u+=g.node().getBBox().height;i+=u,g.attr("x",e+h().state.noteMargin),g.attr("y",n+i+1.25*h().state.noteMargin)}}}catch(t){l=!0,f=t}finally{try{c||null==p.return||p.return()}finally{if(l)throw f}}return{textWidth:a.node().getBBox().width,textHeight:i}}(t,0,0,e.append("g")),i=r.textWidth,a=r.textHeight;return n.attr("height",a+2*h().state.noteMargin),n.attr("width",i+2*h().state.noteMargin),n},Br=function(t,e){var n=e.id,r={id:n,label:e.id,width:0,height:0},i=t.append("g").attr("id",n).attr("class","stateGroup");"start"===e.type&&function(t){t.append("circle").style("stroke","black").style("fill","black").attr("r",h().state.sizeUnit).attr("cx",h().state.padding+h().state.sizeUnit).attr("cy",h().state.padding+h().state.sizeUnit)}(i),"end"===e.type&&function(t){t.append("circle").style("stroke","black").style("fill","white").attr("r",h().state.sizeUnit+h().state.miniPadding).attr("cx",h().state.padding+h().state.sizeUnit+h().state.miniPadding).attr("cy",h().state.padding+h().state.sizeUnit+h().state.miniPadding),t.append("circle").style("stroke","black").style("fill","black").attr("r",h().state.sizeUnit).attr("cx",h().state.padding+h().state.sizeUnit+2).attr("cy",h().state.padding+h().state.sizeUnit+2)}(i),"fork"!==e.type&&"join"!==e.type||function(t,e){var n=h().state.forkWidth,r=h().state.forkHeight;if(e.parentId){var i=n;n=r,r=i}t.append("rect").style("stroke","black").style("fill","black").attr("width",n).attr("height",r).attr("x",h().state.padding).attr("y",h().state.padding)}(i,e),"note"===e.type&&Rr(e.note.text,i),"divider"===e.type&&function(t){t.append("line").style("stroke","grey").style("stroke-dasharray","3").attr("x1",h().state.textHeight).attr("class","divider").attr("x2",2*h().state.textHeight).attr("y1",0).attr("y2",0)}(i),"default"===e.type&&0===e.descriptions.length&&function(t,e){var n=t.append("text").attr("x",2*h().state.padding).attr("y",h().state.textHeight+2*h().state.padding).attr("font-size",h().state.fontSize).attr("class","state-title").text(e.id),r=n.node().getBBox();t.insert("rect",":first-child").attr("x",h().state.padding).attr("y",h().state.padding).attr("width",r.width+2*h().state.padding).attr("height",r.height+2*h().state.padding).attr("rx",h().state.radius)}(i,e),"default"===e.type&&e.descriptions.length>0&&Ir(i,e);var a=i.node().getBBox();return r.width=a.width+2*h().state.padding,r.height=a.height+2*h().state.padding,Fr(n,r),r},jr=0;Cr.parser.yy=Nr;var Yr={},zr=function t(e,n,r,i){var o,s=new P.a.Graph({compound:!0,multigraph:!0}),u=!0;for(o=0;o<e.length;o++)if("relation"===e[o].stmt){u=!1;break}r?s.setGraph({rankdir:"LR",multigraph:!0,compound:!0,ranker:"tight-tree",ranksep:u?1:vr.edgeLengthFactor,nodeSep:u?1:50,isMultiGraph:!0}):s.setGraph({rankdir:"TB",multigraph:!0,compound:!0,ranksep:u?1:vr.edgeLengthFactor,nodeSep:u?1:50,ranker:"tight-tree",isMultiGraph:!0}),s.setDefaultEdgeLabel((function(){return{}})),Nr.extract(e);for(var c=Nr.getStates(),l=Nr.getRelations(),f=Object.keys(c),d=0;d<f.length;d++){var p=c[f[d]];r&&(p.parentId=r);var y=void 0;if(p.doc){var g=n.append("g").attr("id",p.id).attr("class","stateGroup");y=t(p.doc,g,p.id,!i);var m=(g=Pr(g,p,i)).node().getBBox();y.width=m.width,y.height=m.height+vr.padding/2,Yr[p.id]={y:vr.compositTitleSize}}else y=Br(n,p);if(p.note){var v={descriptions:[],id:p.id+"-note",note:p.note,type:"note"},b=Br(n,v);"left of"===p.note.position?(s.setNode(y.id+"-note",b),s.setNode(y.id,y)):(s.setNode(y.id,y),s.setNode(y.id+"-note",b)),s.setParent(y.id,y.id+"-group"),s.setParent(y.id+"-note",y.id+"-group")}else s.setNode(y.id,y)}x.debug("Count=",s.nodeCount(),s);var _=0;l.forEach((function(t){var e;_++,x.debug("Setting edge",t),s.setEdge(t.id1,t.id2,{relation:t,width:(e=t.title,e?e.length*vr.fontSizeFactor:1),height:vr.labelHeight*Y(t.title).length,labelpos:"c"},"id"+_)})),It.a.layout(s),x.debug("Graph after layout",s.nodes());var w=n.node();s.nodes().forEach((function(t){void 0!==t&&void 0!==s.node(t)?(x.warn("Node "+t+": "+JSON.stringify(s.node(t))),Object(a.select)("#"+w.id+" #"+t).attr("transform","translate("+(s.node(t).x-s.node(t).width/2)+","+(s.node(t).y+(Yr[t]?Yr[t].y:0)-s.node(t).height/2)+" )"),Object(a.select)("#"+w.id+" #"+t).attr("data-x-shift",s.node(t).x-s.node(t).width/2),document.querySelectorAll("#"+w.id+" #"+t+" .divider").forEach((function(t){var e=t.parentElement,n=0,r=0;e&&(e.parentElement&&(n=e.parentElement.getBBox().width),r=parseInt(e.getAttribute("data-x-shift"),10),Number.isNaN(r)&&(r=0)),t.setAttribute("x1",0-r+8),t.setAttribute("x2",n-r-8)}))):x.debug("No Node "+t+": "+JSON.stringify(s.node(t)))}));var k=w.getBBox();s.edges().forEach((function(t){void 0!==t&&void 0!==s.edge(t)&&(x.debug("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(s.edge(t))),function(t,e,n){e.points=e.points.filter((function(t){return!Number.isNaN(t.y)}));var r=e.points,i=Object(a.line)().x((function(t){return t.x})).y((function(t){return t.y})).curve(a.curveBasis),o=t.append("path").attr("d",i(r)).attr("id","edge"+jr).attr("class","transition"),s="";if(h().state.arrowMarkerAbsolute&&(s=(s=(s=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search).replace(/\(/g,"\\(")).replace(/\)/g,"\\)")),o.attr("marker-end","url("+s+"#"+function(t){switch(t){case Nr.relationType.AGGREGATION:return"aggregation";case Nr.relationType.EXTENSION:return"extension";case Nr.relationType.COMPOSITION:return"composition";case Nr.relationType.DEPENDENCY:return"dependency"}}(Nr.relationType.DEPENDENCY)+"End)"),void 0!==n.title){for(var u=t.append("g").attr("class","stateLabel"),c=D(e.points),l=c.x,f=c.y,d=Y(n.title),p=0,y=[],g=0,m=0,v=0;v<=d.length;v++){var b=u.append("text").attr("text-anchor","middle").text(d[v]).attr("x",l).attr("y",f+p),_=b.node().getBBox();if(g=Math.max(g,_.width),m=Math.min(m,_.x),x.info(_.x,l,f+p),0===p){var w=b.node().getBBox();p=w.height,x.info("Title height",p,f)}y.push(b)}var k=p*d.length;if(d.length>1){var E=(d.length-1)*p*.5;y.forEach((function(t,e){return t.attr("y",f+e*p-E)})),k=p*d.length}var A=u.node().getBBox();u.insert("rect",":first-child").attr("class","box").attr("x",l-g/2-h().state.padding/2).attr("y",f-k/2-h().state.padding/2-3.5).attr("width",g+h().state.padding).attr("height",k+h().state.padding),x.info(A)}jr++}(n,s.edge(t),s.edge(t).relation))})),k=w.getBBox();var E={id:r||"root",label:r||"root",width:0,height:0};return E.width=k.width+2*vr.padding,E.height=k.height+2*vr.padding,x.debug("Doc rendered",E,s),E},Ur=function(){},$r=function(t,e){vr=h().state,Cr.parser.yy.clear(),Cr.parser.parse(t),x.debug("Rendering diagram "+t);var n=Object(a.select)("[id='".concat(e,"']"));n.append("defs").append("marker").attr("id","dependencyEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z"),new P.a.Graph({multigraph:!0,compound:!0,rankdir:"RL"}).setDefaultEdgeLabel((function(){return{}}));var r=Nr.getRootDoc();zr(r,n,void 0,!1);var i=vr.padding,o=n.node().getBBox(),s=o.width+2*i,u=o.height+2*i;vr.useMaxWidth?(n.attr("width","100%"),n.attr("style","max-width: ".concat(1.75*s,"px;"))):n.attr("width",1.75*s),n.attr("viewBox","".concat(o.x-vr.padding," ").concat(o.y-vr.padding," ")+s+" "+u)},Gr={},Vr={},Hr=function(t,e,n,r){if("root"!==n.id){var i="rect";!0===n.start&&(i="start"),!1===n.start&&(i="end"),"default"!==n.type&&(i=n.type),Vr[n.id]||(Vr[n.id]={id:n.id,shape:i,description:n.id,classes:"statediagram-state"}),n.description&&(Array.isArray(Vr[n.id].description)?(Vr[n.id].shape="rectWithTitle",Vr[n.id].description.push(n.description)):Vr[n.id].description.length>0?(Vr[n.id].shape="rectWithTitle",Vr[n.id].description===n.id?Vr[n.id].description=[n.description]:Vr[n.id].description=[Vr[n.id].description,n.description]):(Vr[n.id].shape="rect",Vr[n.id].description=n.description)),!Vr[n.id].type&&n.doc&&(x.info("Setting cluser for ",n.id),Vr[n.id].type="group",Vr[n.id].shape="divider"===n.type?"divider":"roundedWithTitle",Vr[n.id].classes=Vr[n.id].classes+" "+(r?"statediagram-cluster statediagram-cluster-alt":"statediagram-cluster"));var a={labelStyle:"",shape:Vr[n.id].shape,labelText:Vr[n.id].description,classes:Vr[n.id].classes,style:"",id:n.id,type:Vr[n.id].type,padding:15};if(n.note){var o={labelStyle:"",shape:"note",labelText:n.note.text,classes:"statediagram-note",style:"",id:n.id+"----note",type:Vr[n.id].type,padding:15},s={labelStyle:"",shape:"noteGroup",labelText:n.note.text,classes:Vr[n.id].classes,style:"",id:n.id+"----parent",type:"group",padding:0};t.setNode(n.id+"----parent",s),t.setNode(o.id,o),t.setNode(n.id,a),t.setParent(n.id,n.id+"----parent"),t.setParent(o.id,n.id+"----parent");var u=n.id,c=o.id;"left of"===n.note.position&&(u=o.id,c=n.id),t.setEdge(u,c,{arrowhead:"none",arrowType:"",style:"fill:none",labelStyle:"",classes:"note-edge",arrowheadStyle:"fill: #333",labelpos:"c",labelType:"text"})}else t.setNode(n.id,a)}e&&"root"!==e.id&&(x.info("Setting node ",n.id," to be child of its parent ",e.id),t.setParent(n.id,e.id)),n.doc&&(x.info("Adding nodes children "),qr(t,n,n.doc,!r))},Wr=0,qr=function(t,e,n,r){x.trace("items",n),n.forEach((function(n){if("state"===n.stmt||"default"===n.stmt)Hr(t,e,n,r);else if("relation"===n.stmt){Hr(t,e,n.state1,r),Hr(t,e,n.state2,r);var i={id:"edge"+Wr,arrowhead:"normal",arrowType:"arrow_barb",style:"fill:none",labelStyle:"",label:n.description,arrowheadStyle:"fill: #333",labelpos:"c",labelType:"text"},a=n.state1.id,o=n.state2.id;t.setEdge(a,o,i,Wr),Wr++}}))},Xr=function(t){for(var e=Object.keys(t),n=0;n<e.length;n++)Gr[e[n]]=t[e[n]]},Zr=function(t,e){x.info("Drawing state diagram (v2)",e),Nr.clear();var n=Dr.a.parser;n.yy=Nr;try{n.parse(t)}catch(t){x.debug("Parsing failed")}var r=Nr.getDirection();void 0===r&&(r="LR");var i=h().state,o=i.nodeSpacing||50,s=i.rankSpacing||50,u=new P.a.Graph({multigraph:!0,compound:!0}).setGraph({rankdir:"TB",nodesep:o,ranksep:s,marginx:8,marginy:8}).setDefaultEdgeLabel((function(){return{}}));x.info(Nr.getRootDocV2()),Nr.extract(Nr.getRootDocV2()),x.info(Nr.getRootDocV2()),Hr(u,void 0,Nr.getRootDocV2(),!0);var c=Object(a.select)('[id="'.concat(e,'"]')),l=Object(a.select)("#"+e+" g");ye(l,u,["barb"],"statediagram",e);var f=c.node().getBBox(),d=f.width+16,p=f.height+16;c.attr("width",1.75*d),c.attr("class","statediagram");var y=c.node().getBBox();i.useMaxWidth?(c.attr("width","100%"),c.attr("style","max-width: ".concat(d,"px;"))):(c.attr("height",p),c.attr("width",d));var g="".concat(y.x-8," ").concat(y.y-8," ").concat(d," ").concat(p);if(x.debug("viewBox ".concat(g)),c.attr("viewBox",g),!i.htmlLabels)for(var m=document.querySelectorAll('[id="'+e+'"] .edgeLabel .label'),v=0;v<m.length;v++){var b=m[v],_=b.getBBox(),w=document.createElementNS("http://www.w3.org/2000/svg","rect");w.setAttribute("rx",0),w.setAttribute("ry",0),w.setAttribute("width",_.width),w.setAttribute("height",_.height),w.setAttribute("style","fill:#e8e8e8;"),b.insertBefore(w,b.firstChild)}},Jr={},Qr=null,Kr={master:Qr},ti="master",ei="LR",ni=0;function ri(){return function(t){for(var e="",n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",r=n.length,i=0;i<t;i++)e+=n.charAt(Math.floor(Math.random()*r));return e}(7)}function ii(t,e){for(x.debug("Entering isfastforwardable:",t.id,e.id);t.seq<=e.seq&&t!==e&&null!=e.parent;){if(Array.isArray(e.parent))return x.debug("In merge commit:",e.parent),ii(t,Jr[e.parent[0]])||ii(t,Jr[e.parent[1]]);e=Jr[e.parent]}return x.debug(t.id,e.id),t.id===e.id}var ai={};function oi(t,e,n){var r=t.indexOf(e);-1===r?t.push(n):t.splice(r,1,n)}function si(t){var e=t.reduce((function(t,e){return t.seq>e.seq?t:e}),t[0]),n="";t.forEach((function(t){n+=t===e?"\t*":"\t|"}));var r,i,a,o=[n,e.id,e.seq];for(var s in Kr)Kr[s]===e.id&&o.push(s);if(x.debug(o.join(" ")),Array.isArray(e.parent)){var u=Jr[e.parent[0]];oi(t,e,u),t.push(Jr[e.parent[1]])}else{if(null==e.parent)return;var c=Jr[e.parent];oi(t,e,c)}r=t,i=function(t){return t.id},a=Object.create(null),si(t=r.reduce((function(t,e){var n=i(e);return a[n]||(a[n]=!0,t.push(e)),t}),[]))}var ui,ci=function(){var t=Object.keys(Jr).map((function(t){return Jr[t]}));return t.forEach((function(t){x.debug(t.id)})),t.sort((function(t,e){return e.seq-t.seq})),t},li={setDirection:function(t){ei=t},setOptions:function(t){x.debug("options str",t),t=(t=t&&t.trim())||"{}";try{ai=JSON.parse(t)}catch(t){x.error("error while parsing gitGraph options",t.message)}},getOptions:function(){return ai},commit:function(t){var e={id:ri(),message:t,seq:ni++,parent:null==Qr?null:Qr.id};Qr=e,Jr[e.id]=e,Kr[ti]=e.id,x.debug("in pushCommit "+e.id)},branch:function(t){Kr[t]=null!=Qr?Qr.id:null,x.debug("in createBranch")},merge:function(t){var e=Jr[Kr[ti]],n=Jr[Kr[t]];if(function(t,e){return t.seq>e.seq&&ii(e,t)}(e,n))x.debug("Already merged");else{if(ii(e,n))Kr[ti]=Kr[t],Qr=Jr[Kr[ti]];else{var r={id:ri(),message:"merged branch "+t+" into "+ti,seq:ni++,parent:[null==Qr?null:Qr.id,Kr[t]]};Qr=r,Jr[r.id]=r,Kr[ti]=r.id}x.debug(Kr),x.debug("in mergeBranch")}},checkout:function(t){x.debug("in checkout");var e=Kr[ti=t];Qr=Jr[e]},reset:function(t){x.debug("in reset",t);var e=t.split(":")[0],n=parseInt(t.split(":")[1]),r="HEAD"===e?Qr:Jr[Kr[e]];for(x.debug(r,n);n>0;)if(n--,!(r=Jr[r.parent])){var i="Critical error - unique parent commit not found during reset";throw x.error(i),i}Qr=r,Kr[ti]=r.id},prettyPrint:function(){x.debug(Jr),si([ci()[0]])},clear:function(){Jr={},Kr={master:Qr=null},ti="master",ni=0},getBranchesAsObjArray:function(){var t=[];for(var e in Kr)t.push({name:e,commit:Jr[Kr[e]]});return t},getBranches:function(){return Kr},getCommits:function(){return Jr},getCommitsArray:ci,getCurrentBranch:function(){return ti},getDirection:function(){return ei},getHead:function(){return Qr}},fi=n(64),hi=n.n(fi),di={},pi={nodeSpacing:150,nodeFillColor:"yellow",nodeStrokeWidth:2,nodeStrokeColor:"grey",lineStrokeWidth:4,branchOffset:50,lineColor:"grey",leftMargin:50,branchColors:["#442f74","#983351","#609732","#AA9A39"],nodeRadius:10,nodeLabel:{width:75,height:100,x:-25,y:0}},yi={};function gi(t,e,n,r){var i=A(r,a.curveBasis),o=pi.branchColors[n%pi.branchColors.length],s=Object(a.line)().x((function(t){return Math.round(t.x)})).y((function(t){return Math.round(t.y)})).curve(i);t.append("svg:path").attr("d",s(e)).style("stroke",o).style("stroke-width",pi.lineStrokeWidth).style("fill","none")}function mi(t,e){e=e||t.node().getBBox();var n=t.node().getCTM();return{left:n.e+e.x*n.a,top:n.f+e.y*n.d,width:e.width,height:e.height}}function vi(t,e,n,r,i){x.debug("svgDrawLineForCommits: ",e,n);var a=mi(t.select("#node-"+e+" circle")),o=mi(t.select("#node-"+n+" circle"));switch(r){case"LR":if(a.left-o.left>pi.nodeSpacing){var s={x:a.left-pi.nodeSpacing,y:o.top+o.height/2};gi(t,[s,{x:o.left+o.width,y:o.top+o.height/2}],i,"linear"),gi(t,[{x:a.left,y:a.top+a.height/2},{x:a.left-pi.nodeSpacing/2,y:a.top+a.height/2},{x:a.left-pi.nodeSpacing/2,y:s.y},s],i)}else gi(t,[{x:a.left,y:a.top+a.height/2},{x:a.left-pi.nodeSpacing/2,y:a.top+a.height/2},{x:a.left-pi.nodeSpacing/2,y:o.top+o.height/2},{x:o.left+o.width,y:o.top+o.height/2}],i);break;case"BT":if(o.top-a.top>pi.nodeSpacing){var u={x:o.left+o.width/2,y:a.top+a.height+pi.nodeSpacing};gi(t,[u,{x:o.left+o.width/2,y:o.top}],i,"linear"),gi(t,[{x:a.left+a.width/2,y:a.top+a.height},{x:a.left+a.width/2,y:a.top+a.height+pi.nodeSpacing/2},{x:o.left+o.width/2,y:u.y-pi.nodeSpacing/2},u],i)}else gi(t,[{x:a.left+a.width/2,y:a.top+a.height},{x:a.left+a.width/2,y:a.top+pi.nodeSpacing/2},{x:o.left+o.width/2,y:o.top-pi.nodeSpacing/2},{x:o.left+o.width/2,y:o.top}],i)}}function bi(t,e){return t.select(e).node().cloneNode(!0)}function xi(t,e,n,r){var i,a=Object.keys(di).length;if("string"==typeof e)do{if(i=di[e],x.debug("in renderCommitHistory",i.id,i.seq),t.select("#node-"+e).size()>0)return;t.append((function(){return bi(t,"#def-commit")})).attr("class","commit").attr("id",(function(){return"node-"+i.id})).attr("transform",(function(){switch(r){case"LR":return"translate("+(i.seq*pi.nodeSpacing+pi.leftMargin)+", "+ui*pi.branchOffset+")";case"BT":return"translate("+(ui*pi.branchOffset+pi.leftMargin)+", "+(a-i.seq)*pi.nodeSpacing+")"}})).attr("fill",pi.nodeFillColor).attr("stroke",pi.nodeStrokeColor).attr("stroke-width",pi.nodeStrokeWidth);var o=void 0;for(var s in n)if(n[s].commit===i){o=n[s];break}o&&(x.debug("found branch ",o.name),t.select("#node-"+i.id+" p").append("xhtml:span").attr("class","branch-label").text(o.name+", ")),t.select("#node-"+i.id+" p").append("xhtml:span").attr("class","commit-id").text(i.id),""!==i.message&&"BT"===r&&t.select("#node-"+i.id+" p").append("xhtml:span").attr("class","commit-msg").text(", "+i.message),e=i.parent}while(e&&di[e]);Array.isArray(e)&&(x.debug("found merge commmit",e),xi(t,e[0],n,r),ui++,xi(t,e[1],n,r),ui--)}function _i(t,e,n,r){for(r=r||0;e.seq>0&&!e.lineDrawn;)"string"==typeof e.parent?(vi(t,e.id,e.parent,n,r),e.lineDrawn=!0,e=di[e.parent]):Array.isArray(e.parent)&&(vi(t,e.id,e.parent[0],n,r),vi(t,e.id,e.parent[1],n,r+1),_i(t,di[e.parent[1]],n,r+1),e.lineDrawn=!0,e=di[e.parent[0]])}var wi,ki=function(t){yi=t},Ei=function(t,e,n){try{var r=hi.a.parser;r.yy=li,r.yy.clear(),x.debug("in gitgraph renderer",t+"\n","id:",e,n),r.parse(t+"\n"),pi=Object.assign(pi,yi,li.getOptions()),x.debug("effective options",pi);var i=li.getDirection();di=li.getCommits();var o=li.getBranchesAsObjArray();"BT"===i&&(pi.nodeLabel.x=o.length*pi.branchOffset,pi.nodeLabel.width="100%",pi.nodeLabel.y=-2*pi.nodeRadius);var s=Object(a.select)('[id="'.concat(e,'"]'));for(var u in function(t){t.append("defs").append("g").attr("id","def-commit").append("circle").attr("r",pi.nodeRadius).attr("cx",0).attr("cy",0),t.select("#def-commit").append("foreignObject").attr("width",pi.nodeLabel.width).attr("height",pi.nodeLabel.height).attr("x",pi.nodeLabel.x).attr("y",pi.nodeLabel.y).attr("class","node-label").attr("requiredFeatures","http://www.w3.org/TR/SVG11/feature#Extensibility").append("p").html("")}(s),ui=1,o){var c=o[u];xi(s,c.commit.id,o,i),_i(s,c.commit,i),ui++}s.attr("height",(function(){return"BT"===i?Object.keys(di).length*pi.nodeSpacing:(o.length+1)*pi.branchOffset}))}catch(t){x.error("Error while rendering gitgraph"),x.error(t.message)}},Ai="",Ti=!1,Si={setMessage:function(t){x.debug("Setting message to: "+t),Ai=t},getMessage:function(){return Ai},setInfo:function(t){Ti=t},getInfo:function(){return Ti}},Mi=n(65),Oi=n.n(Mi),Ni={},Ci=function(t){Object.keys(t).forEach((function(e){Ni[e]=t[e]}))},Di=function(t,e,n){try{var r=Oi.a.parser;r.yy=Si,x.debug("Renering info diagram\n"+t),r.parse(t),x.debug("Parsed info diagram");var i=Object(a.select)("#"+e);i.append("g").append("text").attr("x",100).attr("y",40).attr("class","version").attr("font-size","32px").style("text-anchor","middle").text("v "+n),i.attr("height",100),i.attr("width",400)}catch(t){x.error("Error while rendering info diagram"),x.error(t.message)}},Li={},Fi="",Ii={addSection:function(t,e){void 0===Li[t]&&(Li[t]=e,x.debug("Added new section :",t))},getSections:function(){return Li},cleanupValue:function(t){return":"===t.substring(0,1)?(t=t.substring(1).trim(),Number(t.trim())):Number(t.trim())},clear:function(){Li={},Fi=""},setTitle:function(t){Fi=t},getTitle:function(){return Fi}},Pi=n(66),Ri=n.n(Pi),Bi={},ji=function(t){Object.keys(t).forEach((function(e){Bi[e]=t[e]}))},Yi=function(t,e){try{var n=Ri.a.parser;n.yy=Ii,x.debug("Rendering info diagram\n"+t),n.yy.clear(),n.parse(t),x.debug("Parsed info diagram");var r=document.getElementById(e);void 0===(wi=r.parentElement.offsetWidth)&&(wi=1200),void 0!==Bi.useWidth&&(wi=Bi.useWidth);r.setAttribute("height","100%"),r.setAttribute("viewBox","0 0 "+wi+" 450");var i=wi,o=Math.min(i,450)/2-40,s=Object(a.select)("#"+e).append("svg").attr("width",i).attr("height",450).append("g").attr("transform","translate("+i/2+",225)"),u=Ii.getSections(),c=0;Object.keys(u).forEach((function(t){c+=u[t]})),x.info(u);var l=Object(a.scaleOrdinal)().domain(u).range(a.schemeSet2),f=Object(a.pie)().value((function(t){return t.value}))(Object(a.entries)(u)),h=Object(a.arc)().innerRadius(0).outerRadius(o);s.selectAll("mySlices").data(f).enter().append("path").attr("d",h).attr("fill",(function(t){return l(t.data.key)})).attr("stroke","black").style("stroke-width","2px").style("opacity",.7),s.selectAll("mySlices").data(f).enter().append("text").text((function(t){return(t.data.value/c*100).toFixed(0)+"%"})).attr("transform",(function(t){return"translate("+h.centroid(t)+")"})).style("text-anchor","middle").attr("class","slice").style("font-size",17),s.append("text").text(n.yy.getTitle()).attr("x",0).attr("y",-200).attr("class","pieTitleText");var d=s.selectAll(".legend").data(l.domain()).enter().append("g").attr("class","legend").attr("transform",(function(t,e){return"translate(216,"+(22*e-22*l.domain().length/2)+")"}));d.append("rect").attr("width",18).attr("height",18).style("fill",l).style("stroke",l),d.append("text").attr("x",22).attr("y",14).text((function(t){return t}))}catch(t){x.error("Error while rendering info diagram"),x.error(t.message)}},zi={},Ui=[],$i="",Gi={Cardinality:{ZERO_OR_ONE:"ZERO_OR_ONE",ZERO_OR_MORE:"ZERO_OR_MORE",ONE_OR_MORE:"ONE_OR_MORE",ONLY_ONE:"ONLY_ONE"},Identification:{NON_IDENTIFYING:"NON_IDENTIFYING",IDENTIFYING:"IDENTIFYING"},addEntity:function(t){void 0===zi[t]&&(zi[t]=t,x.debug("Added new entity :",t))},getEntities:function(){return zi},addRelationship:function(t,e,n,r){var i={entityA:t,roleA:e,entityB:n,relSpec:r};Ui.push(i),x.debug("Added new relationship :",i)},getRelationships:function(){return Ui},clear:function(){zi={},Ui=[],$i=""},setTitle:function(t){$i=t},getTitle:function(){return $i}},Vi=n(67),Hi=n.n(Vi),Wi={ONLY_ONE_START:"ONLY_ONE_START",ONLY_ONE_END:"ONLY_ONE_END",ZERO_OR_ONE_START:"ZERO_OR_ONE_START",ZERO_OR_ONE_END:"ZERO_OR_ONE_END",ONE_OR_MORE_START:"ONE_OR_MORE_START",ONE_OR_MORE_END:"ONE_OR_MORE_END",ZERO_OR_MORE_START:"ZERO_OR_MORE_START",ZERO_OR_MORE_END:"ZERO_OR_MORE_END"},qi=Wi,Xi=function(t,e){var n;t.append("defs").append("marker").attr("id",Wi.ONLY_ONE_START).attr("refX",0).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M9,0 L9,18 M15,0 L15,18"),t.append("defs").append("marker").attr("id",Wi.ONLY_ONE_END).attr("refX",18).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M3,0 L3,18 M9,0 L9,18"),(n=t.append("defs").append("marker").attr("id",Wi.ZERO_OR_ONE_START).attr("refX",0).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto")).append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",21).attr("cy",9).attr("r",6),n.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M9,0 L9,18"),(n=t.append("defs").append("marker").attr("id",Wi.ZERO_OR_ONE_END).attr("refX",30).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto")).append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",9).attr("cy",9).attr("r",6),n.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M21,0 L21,18"),t.append("defs").append("marker").attr("id",Wi.ONE_OR_MORE_START).attr("refX",18).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27"),t.append("defs").append("marker").attr("id",Wi.ONE_OR_MORE_END).attr("refX",27).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18"),(n=t.append("defs").append("marker").attr("id",Wi.ZERO_OR_MORE_START).attr("refX",18).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto")).append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",48).attr("cy",18).attr("r",6),n.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M0,18 Q18,0 36,18 Q18,36 0,18"),(n=t.append("defs").append("marker").attr("id",Wi.ZERO_OR_MORE_END).attr("refX",39).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto")).append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",9).attr("cy",18).attr("r",6),n.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M21,18 Q39,0 57,18 Q39,36 21,18")},Zi={},Ji=function(t){return(t.entityA+t.roleA+t.entityB).replace(/\s/g,"")},Qi=0,Ki=function(t){for(var e=Object.keys(t),n=0;n<e.length;n++)Zi[e[n]]=t[e[n]]},ta=function(t,e){x.info("Drawing ER diagram"),Gi.clear();var n=Hi.a.parser;n.yy=Gi;try{n.parse(t)}catch(t){x.debug("Parsing failed")}var r,i=Object(a.select)("[id='".concat(e,"']"));Xi(i,Zi),r=new P.a.Graph({multigraph:!0,directed:!0,compound:!1}).setGraph({rankdir:Zi.layoutDirection,marginx:20,marginy:20,nodesep:100,edgesep:100,ranksep:100}).setDefaultEdgeLabel((function(){return{}}));var o,s,u,c,l=(o=i,s=Gi.getEntities(),u=r,Object.keys(s).forEach((function(t){var e=o.append("g").attr("id",t);c=void 0===c?t:c;var n="entity-"+t,r=e.append("text").attr("id",n).attr("x",0).attr("y",0).attr("dominant-baseline","middle").attr("text-anchor","middle").attr("style","font-family: "+h().fontFamily+"; font-size: "+Zi.fontSize+"px").text(t),i=r.node().getBBox(),a=Math.max(Zi.minEntityWidth,i.width+2*Zi.entityPadding),s=Math.max(Zi.minEntityHeight,i.height+2*Zi.entityPadding);r.attr("transform","translate("+a/2+","+s/2+")");var l=e.insert("rect","#"+n).attr("fill",Zi.fill).attr("fill-opacity","100%").attr("stroke",Zi.stroke).attr("x",0).attr("y",0).attr("width",a).attr("height",s).node().getBBox();u.setNode(t,{width:l.width,height:l.height,shape:"rect",id:t})})),c),f=function(t,e){return t.forEach((function(t){e.setEdge(t.entityA,t.entityB,{relationship:t},Ji(t))})),t}(Gi.getRelationships(),r);It.a.layout(r),function(t,e){e.nodes().forEach((function(n){void 0!==n&&void 0!==e.node(n)&&t.select("#"+n).attr("transform","translate("+(e.node(n).x-e.node(n).width/2)+","+(e.node(n).y-e.node(n).height/2)+" )")}))}(i,r),f.forEach((function(t){!function(t,e,n,r){Qi++;var i=n.edge(e.entityA,e.entityB,Ji(e)),o=Object(a.line)().x((function(t){return t.x})).y((function(t){return t.y})).curve(a.curveBasis),s=t.insert("path","#"+r).attr("d",o(i.points)).attr("stroke",Zi.stroke).attr("fill","none");e.relSpec.relType===Gi.Identification.NON_IDENTIFYING&&s.attr("stroke-dasharray","8,8");var u="";switch(Zi.arrowMarkerAbsolute&&(u=(u=(u=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search).replace(/\(/g,"\\(")).replace(/\)/g,"\\)")),e.relSpec.cardA){case Gi.Cardinality.ZERO_OR_ONE:s.attr("marker-end","url("+u+"#"+qi.ZERO_OR_ONE_END+")");break;case Gi.Cardinality.ZERO_OR_MORE:s.attr("marker-end","url("+u+"#"+qi.ZERO_OR_MORE_END+")");break;case Gi.Cardinality.ONE_OR_MORE:s.attr("marker-end","url("+u+"#"+qi.ONE_OR_MORE_END+")");break;case Gi.Cardinality.ONLY_ONE:s.attr("marker-end","url("+u+"#"+qi.ONLY_ONE_END+")")}switch(e.relSpec.cardB){case Gi.Cardinality.ZERO_OR_ONE:s.attr("marker-start","url("+u+"#"+qi.ZERO_OR_ONE_START+")");break;case Gi.Cardinality.ZERO_OR_MORE:s.attr("marker-start","url("+u+"#"+qi.ZERO_OR_MORE_START+")");break;case Gi.Cardinality.ONE_OR_MORE:s.attr("marker-start","url("+u+"#"+qi.ONE_OR_MORE_START+")");break;case Gi.Cardinality.ONLY_ONE:s.attr("marker-start","url("+u+"#"+qi.ONLY_ONE_START+")")}var c=s.node().getTotalLength(),l=s.node().getPointAtLength(.5*c),f="rel"+Qi,d=t.append("text").attr("id",f).attr("x",l.x).attr("y",l.y).attr("text-anchor","middle").attr("dominant-baseline","middle").attr("style","font-family: "+h().fontFamily+"; font-size: "+Zi.fontSize+"px").text(e.roleA).node().getBBox();t.insert("rect","#"+f).attr("x",l.x-d.width/2).attr("y",l.y-d.height/2).attr("width",d.width).attr("height",d.height).attr("fill","white").attr("fill-opacity","85%")}(i,t,r,l)}));var d=Zi.diagramPadding,p=i.node().getBBox(),y=p.width+2*d,g=p.height+2*d;i.attr("height",g),i.attr("width","100%"),i.attr("style","max-width: ".concat(y,"px;")),i.attr("viewBox","".concat(p.x-d," ").concat(p.y-d," ").concat(y," ").concat(g))},ea=n(24),na=n.n(ea);function ra(t){return function(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);e<t.length;e++)n[e]=t[e];return n}}(t)||function(t){if(Symbol.iterator in Object(t)||"[object Arguments]"===Object.prototype.toString.call(t))return Array.from(t)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()}var ia="",aa="",oa=[],sa=[],ua=[],ca=function(){for(var t=!0,e=0;e<ua.length;e++)ua[e].processed,t=t&&ua[e].processed;return t},la={clear:function(){oa.length=0,sa.length=0,aa="",ia="",ua.length=0},setTitle:function(t){ia=t},getTitle:function(){return ia},addSection:function(t){aa=t,oa.push(t)},getSections:function(){return oa},getTasks:function(){for(var t=ca(),e=0;!t&&e<100;)t=ca(),e++;return sa.push.apply(sa,ua),sa},addTask:function(t,e){var n=e.substr(1).split(":"),r=0,i=[];1===n.length?(r=Number(n[0]),i=[]):(r=Number(n[0]),i=n[1].split(","));var a=i.map((function(t){return t.trim()})),o={section:aa,type:aa,people:a,task:t,score:r};ua.push(o)},addTaskOrg:function(t){var e={section:aa,type:aa,description:t,task:t,classes:[]};sa.push(e)},getActors:function(){return t=[],sa.forEach((function(e){e.people&&t.push.apply(t,ra(e.people))})),ra(new Set(t)).sort();var t}},fa=function(t,e){var n=t.append("rect");return n.attr("x",e.x),n.attr("y",e.y),n.attr("fill",e.fill),n.attr("stroke",e.stroke),n.attr("width",e.width),n.attr("height",e.height),n.attr("rx",e.rx),n.attr("ry",e.ry),void 0!==e.class&&n.attr("class",e.class),n},ha=function(t,e){var n=t.append("circle");return n.attr("cx",e.cx),n.attr("cy",e.cy),n.attr("fill",e.fill),n.attr("stroke",e.stroke),n.attr("r",e.r),void 0!==n.class&&n.attr("class",n.class),void 0!==e.title&&n.append("title").text(e.title),n},da=function(t,e){var n=e.text.replace(/<br\s*\/?>/gi," "),r=t.append("text");r.attr("x",e.x),r.attr("y",e.y),r.attr("fill",e.fill),r.style("text-anchor",e.anchor),void 0!==e.class&&r.attr("class",e.class);var i=r.append("tspan");return i.attr("x",e.x+2*e.textMargin),i.text(n),r},pa=-1,ya=function(){return{x:0,y:0,width:100,anchor:"start",height:100,rx:0,ry:0}},ga=function(){function t(t,e,n,i,a,o,s,u){r(e.append("text").attr("x",n+a/2).attr("y",i+o/2+5).style("font-color",u).style("text-anchor","middle").text(t),s)}function e(t,e,n,i,a,o,s,u,c){for(var l=u.taskFontSize,f=u.taskFontFamily,h=t.split(/<br\s*\/?>/gi),d=0;d<h.length;d++){var p=d*l-l*(h.length-1)/2,y=e.append("text").attr("x",n+a/2).attr("y",i).attr("fill",c).style("text-anchor","middle").style("font-size",l).style("font-family",f);y.append("tspan").attr("x",n+a/2).attr("dy",p).text(h[d]),y.attr("y",i+o/2).attr("dominant-baseline","central").attr("alignment-baseline","central"),r(y,s)}}function n(t,n,i,a,o,s,u,c,l){var f=n.append("switch"),h=f.append("foreignObject").attr("x",i).attr("y",a).attr("width",o).attr("height",s).attr("position","fixed").append("div").style("display","table").style("height","100%").style("width","100%");h.append("div").style("display","table-cell").style("text-align","center").style("vertical-align","middle").style("color",l).text(t),e(t,f,i,a,o,s,u,c),r(h,u)}function r(t,e){for(var n in e)n in e&&t.attr(n,e[n])}return function(r){return"fo"===r.textPlacement?n:"old"===r.textPlacement?t:e}}(),ma=ha,va=function(t,e,n){var r=t.append("g"),i=ya();i.x=e.x,i.y=e.y,i.fill=e.fill,i.width=n.width,i.height=n.height,i.class="journey-section",i.rx=3,i.ry=3,fa(r,i),ga(n)(e.text,r,i.x,i.y,i.width,i.height,{class:"journey-section"},n,e.colour)},ba=da,xa=function(t,e,n){var r=e.x+n.width/2,i=t.append("g");pa++;var o,s,u;i.append("line").attr("id","task"+pa).attr("x1",r).attr("y1",e.y).attr("x2",r).attr("y2",450).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),o=i,s={cx:r,cy:300+30*(5-e.score),score:e.score},o.append("circle").attr("cx",s.cx).attr("cy",s.cy).attr("fill","#FFF8DC").attr("stroke","#999").attr("r",15).attr("stroke-width",2).attr("overflow","visible"),(u=o.append("g")).append("circle").attr("cx",s.cx-5).attr("cy",s.cy-5).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),u.append("circle").attr("cx",s.cx+5).attr("cy",s.cy-5).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),s.score>3?function(t){var e=Object(a.arc)().startAngle(Math.PI/2).endAngle(Math.PI/2*3).innerRadius(7.5).outerRadius(15/2.2);t.append("path").attr("d",e).attr("transform","translate("+s.cx+","+(s.cy+2)+")")}(u):s.score<3?function(t){var e=Object(a.arc)().startAngle(3*Math.PI/2).endAngle(Math.PI/2*5).innerRadius(7.5).outerRadius(15/2.2);t.append("path").attr("d",e).attr("transform","translate("+s.cx+","+(s.cy+7)+")")}(u):function(t){t.append("line").attr("stroke",2).attr("x1",s.cx-5).attr("y1",s.cy+7).attr("x2",s.cx+5).attr("y2",s.cy+7).attr("class","task-line").attr("stroke-width","1px").attr("stroke","#666")}(u);var c=ya();c.x=e.x,c.y=e.y,c.fill=e.fill,c.width=n.width,c.height=n.height,c.class="task",c.rx=3,c.ry=3,fa(i,c);var l=e.x+14;e.people.forEach((function(t){var n=e.actors[t],r={cx:l,cy:e.y,r:7,fill:n,stroke:"#000",title:t};ha(i,r),l+=10})),ga(n)(e.task,i,c.x,c.y,c.width,c.height,{class:"task"},n,e.colour)},_a=function(t){t.append("defs").append("marker").attr("id","arrowhead").attr("refX",5).attr("refY",2).attr("markerWidth",6).attr("markerHeight",4).attr("orient","auto").append("path").attr("d","M 0,0 V 4 L6,2 Z")};ea.parser.yy=la;var wa={leftMargin:150,diagramMarginX:50,diagramMarginY:20,taskMargin:50,width:150,height:50,taskFontSize:14,taskFontFamily:'"Open-Sans", "sans-serif"',boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"]},ka={};var Ea=wa.leftMargin,Aa={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],init:function(){this.sequenceItems=[],this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0},updateVal:function(t,e,n,r){void 0===t[e]?t[e]=n:t[e]=r(n,t[e])},updateBounds:function(t,e,n,r){var i,a=this,o=0;this.sequenceItems.forEach((function(s){o++;var u=a.sequenceItems.length-o+1;a.updateVal(s,"starty",e-u*wa.boxMargin,Math.min),a.updateVal(s,"stopy",r+u*wa.boxMargin,Math.max),a.updateVal(Aa.data,"startx",t-u*wa.boxMargin,Math.min),a.updateVal(Aa.data,"stopx",n+u*wa.boxMargin,Math.max),"activation"!==i&&(a.updateVal(s,"startx",t-u*wa.boxMargin,Math.min),a.updateVal(s,"stopx",n+u*wa.boxMargin,Math.max),a.updateVal(Aa.data,"starty",e-u*wa.boxMargin,Math.min),a.updateVal(Aa.data,"stopy",r+u*wa.boxMargin,Math.max))}))},insert:function(t,e,n,r){var i=Math.min(t,n),a=Math.max(t,n),o=Math.min(e,r),s=Math.max(e,r);this.updateVal(Aa.data,"startx",i,Math.min),this.updateVal(Aa.data,"starty",o,Math.min),this.updateVal(Aa.data,"stopx",a,Math.max),this.updateVal(Aa.data,"stopy",s,Math.max),this.updateBounds(i,o,a,s)},bumpVerticalPos:function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=this.verticalPos},getVerticalPos:function(){return this.verticalPos},getBounds:function(){return this.data}},Ta=wa.sectionFills,Sa=wa.sectionColours,Ma=function(t,e,n){for(var r="",i=n+(2*wa.height+wa.diagramMarginY),a=0,o="#CCC",s="black",u=0;u<e.length;u++){var c=e[u];if(r!==c.section){o=Ta[a%Ta.length],s=Sa[a%Sa.length];var l={x:u*wa.taskMargin+u*wa.width+Ea,y:50,text:c.section,fill:o,colour:s};va(t,l,wa),r=c.section,a++}var f=c.people.reduce((function(t,e){return ka[e]&&(t[e]=ka[e]),t}),{});c.x=u*wa.taskMargin+u*wa.width+Ea,c.y=i,c.width=wa.diagramMarginX,c.height=wa.diagramMarginY,c.colour=s,c.fill=o,c.actors=f,xa(t,c,wa),Aa.insert(c.x,c.y,c.x+c.width+wa.taskMargin,450)}},Oa=function(t){Object.keys(t).forEach((function(e){wa[e]=t[e]}))},Na=function(t,e){ea.parser.yy.clear(),ea.parser.parse(t+"\n"),Aa.init();var n=Object(a.select)("#"+e);n.attr("xmlns:xlink","http://www.w3.org/1999/xlink"),_a(n);var r=ea.parser.yy.getTasks(),i=ea.parser.yy.getTitle(),o=ea.parser.yy.getActors();for(var s in ka)delete ka[s];var u=0;o.forEach((function(t){ka[t]=wa.actorColours[u%wa.actorColours.length],u++})),function(t){var e=60;Object.keys(ka).forEach((function(n){var r=ka[n];ma(t,{cx:20,cy:e,r:7,fill:r,stroke:"#000"}),ba(t,{x:40,y:e+7,fill:"#666",text:n}),e+=20}))}(n),Aa.insert(0,0,Ea,50*Object.keys(ka).length),Ma(n,r,0);var c=Aa.getBounds();i&&n.append("text").text(i).attr("x",Ea).attr("font-size","4ex").attr("font-weight","bold").attr("y",25);var l=c.stopy-c.starty+2*wa.diagramMarginY,f=Ea+c.stopx+2*wa.diagramMarginX;wa.useMaxWidth?(n.attr("height","100%"),n.attr("width","100%"),n.attr("style","max-width:"+f+"px;")):(n.attr("height",l),n.attr("width",f)),n.append("line").attr("x1",Ea).attr("y1",4*wa.height).attr("x2",f-Ea-4).attr("y2",4*wa.height).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)");var h=i?70:0;n.attr("viewBox","".concat(c.startx," -25 ").concat(f," ").concat(l+h)),n.attr("preserveAspectRatio","xMinYMin meet")};function Ca(t){return(Ca="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}for(var Da={},La=0,Fa=["default","forest","dark","neutral"];La<Fa.length;La++){var Ia=Fa[La];Da[Ia]=n(158)("./".concat(Ia,"/index.scss"))}var Pa={theme:"default",themeCSS:void 0,maxTextSize:5e4,fontFamily:'"trebuchet ms", verdana, arial;',logLevel:5,securityLevel:"strict",startOnLoad:!0,arrowMarkerAbsolute:!1,flowchart:{htmlLabels:!0,nodeSpacing:50,rankSpacing:50,curve:"linear",padding:15},sequence:{diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",mirrorActors:!0,bottomMarginAdj:1,useMaxWidth:!0,rightAngles:!1,showSequenceNumbers:!1,actorFontSize:14,actorFontFamily:'"Open-Sans", "sans-serif"',noteFontSize:14,noteFontFamily:'"trebuchet ms", verdana, arial',noteAlign:"center",messageFontSize:16,messageFontFamily:'"trebuchet ms", verdana, arial'},gantt:{titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,leftPadding:75,gridLineStartPadding:35,fontSize:11,fontFamily:'"Open-Sans", "sans-serif"',numberSectionStyles:4,axisFormat:"%Y-%m-%d"},journey:{diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,useMaxWidth:!0,rightAngles:!1},class:{},git:{},state:{dividerMargin:10,sizeUnit:5,padding:8,textHeight:10,titleShift:-15,noteMargin:10,forkWidth:70,forkHeight:7,miniPadding:2,fontSizeFactor:5.02,fontSize:24,labelHeight:16,edgeLengthFactor:"20",compositTitleSize:35,radius:5},er:{diagramPadding:20,layoutDirection:"TB",minEntityWidth:100,minEntityHeight:75,entityPadding:15,stroke:"gray",fill:"honeydew",fontSize:12}};_(Pa.logLevel),f(Pa);var Ra={render:function(t,e,n,r){var i=e;if(e.length>Pa.maxTextSize&&(i="graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa"),void 0!==r)r.innerHTML="",Object(a.select)(r).append("div").attr("id","d"+t).attr("style","font-family: "+Pa.fontFamily).append("svg").attr("id",t).attr("width","100%").attr("xmlns","http://www.w3.org/2000/svg").append("g");else{var o=document.getElementById(t);o&&o.remove();var c=document.querySelector("#d"+t);c&&(c.innerHTML=""),Object(a.select)("body").append("div").attr("id","d"+t).append("svg").attr("id",t).attr("width","100%").attr("xmlns","http://www.w3.org/2000/svg").append("g")}window.txt=i,i=function(t){var e=t;return e=(e=(e=e.replace(/style.*:\S*#.*;/g,(function(t){return t.substring(0,t.length-1)}))).replace(/classDef.*:\S*#.*;/g,(function(t){return t.substring(0,t.length-1)}))).replace(/#\w+;/g,(function(t){var e=t.substring(1,t.length-1);return/^\+?\d+$/.test(e)?"fl°°"+e+"¶ß":"fl°"+e+"¶ß"}))}(i);var l=Object(a.select)("#d"+t).node(),f=N(i),h=l.firstChild,d=h.firstChild,p=Da[Pa.theme];if(void 0===p&&(p=""),void 0!==Pa.themeCSS&&(p+="\n".concat(Pa.themeCSS)),void 0!==Pa.fontFamily&&(p+="\n:root { --mermaid-font-family: ".concat(Pa.fontFamily,"}")),void 0!==Pa.altFontFamily&&(p+="\n:root { --mermaid-alt-font-family: ".concat(Pa.altFontFamily,"}")),"flowchart"===f||"flowchart-v2"===f){var y=Dt(i);for(var g in y)p+="\n.".concat(g," > * { ").concat(y[g].styles.join(" !important; ")," !important; }"),y[g].textStyles&&(p+="\n.".concat(g," tspan { ").concat(y[g].textStyles.join(" !important; ")," !important; }"))}var m=document.createElement("style");m.innerHTML=s()(p,"#".concat(t)),h.insertBefore(m,d);var v=document.createElement("style"),b=window.getComputedStyle(h);switch(v.innerHTML="#".concat(t," {\n color: ").concat(b.color,";\n font: ").concat(b.font,";\n }"),h.insertBefore(v,d),f){case"git":Pa.flowchart.arrowMarkerAbsolute=Pa.arrowMarkerAbsolute,ki(Pa.git),Ei(i,t,!1);break;case"flowchart":Pa.flowchart.arrowMarkerAbsolute=Pa.arrowMarkerAbsolute,Ct(Pa.flowchart),Lt(i,t,!1);break;case"flowchart-v2":Pa.flowchart.arrowMarkerAbsolute=Pa.arrowMarkerAbsolute,be(Pa.flowchart),xe(i,t,!1);break;case"sequence":Pa.sequence.arrowMarkerAbsolute=Pa.arrowMarkerAbsolute,Pa.sequenceDiagram?(tn(Object.assign(Pa.sequence,Pa.sequenceDiagram)),console.error("`mermaid config.sequenceDiagram` has been renamed to `config.sequence`. Please update your mermaid config.")):tn(Pa.sequence),en(i,t);break;case"gantt":Pa.gantt.arrowMarkerAbsolute=Pa.arrowMarkerAbsolute,Bn(Pa.gantt),jn(i,t);break;case"class":Pa.class.arrowMarkerAbsolute=Pa.arrowMarkerAbsolute,yr(Pa.class),gr(i,t);break;case"state":Ur(Pa.state),$r(i,t);break;case"stateDiagram":Xr(Pa.state),Zr(i,t);break;case"info":Pa.class.arrowMarkerAbsolute=Pa.arrowMarkerAbsolute,Ci(Pa.class),Di(i,t,u.version);break;case"pie":Pa.class.arrowMarkerAbsolute=Pa.arrowMarkerAbsolute,ji(Pa.class),Yi(i,t,u.version);break;case"er":Ki(Pa.er),ta(i,t,u.version);break;case"journey":Oa(Pa.journey),Na(i,t,u.version)}Object(a.select)('[id="'.concat(t,'"]')).selectAll("foreignobject > *").attr("xmlns","http://www.w3.org/1999/xhtml");var _=Object(a.select)("#d"+t).node().innerHTML;if(Pa.arrowMarkerAbsolute&&"false"!==Pa.arrowMarkerAbsolute||(_=_.replace(/marker-end="url\(.*?#/g,'marker-end="url(#',"g")),_=function(t){var e=t;return e=(e=(e=e.replace(/fl°°/g,(function(){return"&#"}))).replace(/fl°/g,(function(){return"&"}))).replace(/¶ß/g,(function(){return";"}))}(_),void 0!==n)switch(f){case"flowchart":case"flowchart-v2":n(_,ut.bindFunctions);break;case"gantt":n(_,Fn.bindFunctions);break;case"class":n(_,Kn.bindFunctions);break;default:n(_)}else x.debug("CB = undefined!");var w=Object(a.select)("#d"+t).node();return null!==w&&"function"==typeof w.remove&&Object(a.select)("#d"+t).node().remove(),_},parse:function(t){var e,n=N(t);switch(x.debug("Type "+n),n){case"git":(e=hi.a).parser.yy=li;break;case"flowchart":case"flowchart-v2":ut.clear(),(e=lt.a).parser.yy=ut;break;case"sequence":(e=Ne.a).parser.yy=Ue;break;case"gantt":(e=rn.a).parser.yy=Fn;break;case"class":(e=er.a).parser.yy=Kn;break;case"state":case"stateDiagram":(e=Dr.a).parser.yy=Nr;break;case"info":x.debug("info info info"),(e=Oi.a).parser.yy=Si;break;case"pie":x.debug("pie"),(e=Ri.a).parser.yy=Ii;break;case"er":x.debug("er"),(e=Hi.a).parser.yy=Gi;break;case"journey":x.debug("Journey"),(e=na.a).parser.yy=la}e.parser.yy.parseError=function(t,e){throw{str:t,hash:e}},e.parse(t)},initialize:function(t){x.debug("Initializing mermaidAPI ",u.version),"object"===Ca(t)&&function(t){for(var e=Object.keys(t),n=0;n<e.length;n++)if("object"===Ca(t[e[n]])&&null!=t[e[n]])for(var r=Object.keys(t[e[n]]),i=0;i<r.length;i++)x.debug("Setting conf ",e[n],"-",r[i]),void 0===Pa[e[n]]&&(Pa[e[n]]={}),x.debug("Setting config: "+e[n]+" "+r[i]+" to "+t[e[n]][r[i]]),Pa[e[n]][r[i]]=t[e[n]][r[i]];else Pa[e[n]]=t[e[n]]}(t),f(Pa),_(Pa.logLevel)},getConfig:h},Ba=function(){ja.startOnLoad?Ra.getConfig().startOnLoad&&ja.init():void 0===ja.startOnLoad&&(x.debug("In start, no config"),Ra.getConfig().startOnLoad&&ja.init())};"undefined"!=typeof document&&
-/*!
- * Wait for document loaded before starting the execution
- */
-window.addEventListener("load",(function(){Ba()}),!1);var ja={startOnLoad:!0,htmlLabels:!0,mermaidAPI:Ra,parse:Ra.parse,render:Ra.render,init:function(){var t,e,n,r=Ra.getConfig();x.debug("Starting rendering diagrams"),arguments.length>=2?(
-/*! sequence config was passed as #1 */
-void 0!==arguments[0]&&(ja.sequenceConfig=arguments[0]),t=arguments[1]):t=arguments[0],"function"==typeof arguments[arguments.length-1]?(e=arguments[arguments.length-1],x.debug("Callback function found")):void 0!==r.mermaid&&("function"==typeof r.mermaid.callback?(e=r.mermaid.callback,x.debug("Callback function found")):x.debug("No Callback function found")),t=void 0===t?document.querySelectorAll(".mermaid"):"string"==typeof t?document.querySelectorAll(t):t instanceof window.Node?[t]:t,x.debug("Start On Load before: "+ja.startOnLoad),void 0!==ja.startOnLoad&&(x.debug("Start On Load inner: "+ja.startOnLoad),Ra.initialize({startOnLoad:ja.startOnLoad})),void 0!==ja.ganttConfig&&Ra.initialize({gantt:ja.ganttConfig});for(var a=function(r){var a=t[r];
-/*! Check if previously processed */if(a.getAttribute("data-processed"))return"continue";a.setAttribute("data-processed",!0);var o="mermaid-".concat(Date.now());n=i(n=a.innerHTML).trim().replace(/<br\s*\/?>/gi,"<br/>"),Ra.render(o,n,(function(t,n){a.innerHTML=t,void 0!==e&&e(o),n&&n(a)}),a)},o=0;o<t.length;o++)a(o)},initialize:function(t){void 0!==t.mermaid&&(void 0!==t.mermaid.startOnLoad&&(ja.startOnLoad=t.mermaid.startOnLoad),void 0!==t.mermaid.htmlLabels&&(ja.htmlLabels=t.mermaid.htmlLabels)),Ra.initialize(t),x.debug("Initializing mermaid ")},contentLoaded:Ba};e.default=ja}]).default}));
+/*! For license information please see mermaid.min.js.LICENSE.txt */
+!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.mermaid=e():t.mermaid=e()}("undefined"!=typeof self?self:this,(()=>(()=>{var t={1362:(t,e,n)=>{t=n.nmd(t);var r=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[1,3],n=[1,7],r=[1,8],i=[1,9],a=[1,10],o=[1,13],s=[1,12],c=[1,16,25],u=[1,20],l=[1,31],h=[1,32],f=[1,33],d=[1,35],p=[1,38],g=[1,36],y=[1,37],m=[1,39],v=[1,40],b=[1,41],_=[1,42],x=[1,45],w=[1,46],k=[1,47],T=[1,48],C=[16,25],E=[1,62],S=[1,63],A=[1,64],M=[1,65],N=[1,66],D=[1,67],B=[16,25,32,44,45,53,56,57,58,59,60,61,66,68],L=[16,25,30,32,44,45,49,53,56,57,58,59,60,61,66,68,83,84,85,86],O=[5,8,9,10,11,16,19,23,25],I=[53,83,84,85,86],R=[53,60,61,83,84,85,86],F=[53,56,57,58,59,83,84,85,86],P=[16,25,32],Y=[1,99],j={trace:function(){},yy:{},symbols_:{error:2,start:3,mermaidDoc:4,statments:5,direction:6,directive:7,direction_tb:8,direction_bt:9,direction_rl:10,direction_lr:11,graphConfig:12,openDirective:13,typeDirective:14,closeDirective:15,NEWLINE:16,":":17,argDirective:18,open_directive:19,type_directive:20,arg_directive:21,close_directive:22,CLASS_DIAGRAM:23,statements:24,EOF:25,statement:26,className:27,alphaNumToken:28,classLiteralName:29,GENERICTYPE:30,relationStatement:31,LABEL:32,classStatement:33,methodStatement:34,annotationStatement:35,clickStatement:36,cssClassStatement:37,acc_title:38,acc_title_value:39,acc_descr:40,acc_descr_value:41,acc_descr_multiline_value:42,CLASS:43,STYLE_SEPARATOR:44,STRUCT_START:45,members:46,STRUCT_STOP:47,ANNOTATION_START:48,ANNOTATION_END:49,MEMBER:50,SEPARATOR:51,relation:52,STR:53,relationType:54,lineType:55,AGGREGATION:56,EXTENSION:57,COMPOSITION:58,DEPENDENCY:59,LINE:60,DOTTED_LINE:61,CALLBACK:62,LINK:63,LINK_TARGET:64,CLICK:65,CALLBACK_NAME:66,CALLBACK_ARGS:67,HREF:68,CSSCLASS:69,commentToken:70,textToken:71,graphCodeTokens:72,textNoTagsToken:73,TAGSTART:74,TAGEND:75,"==":76,"--":77,PCT:78,DEFAULT:79,SPACE:80,MINUS:81,keywords:82,UNICODE_TEXT:83,NUM:84,ALPHA:85,BQUOTE_STR:86,$accept:0,$end:1},terminals_:{2:"error",5:"statments",8:"direction_tb",9:"direction_bt",10:"direction_rl",11:"direction_lr",16:"NEWLINE",17:":",19:"open_directive",20:"type_directive",21:"arg_directive",22:"close_directive",23:"CLASS_DIAGRAM",25:"EOF",30:"GENERICTYPE",32:"LABEL",38:"acc_title",39:"acc_title_value",40:"acc_descr",41:"acc_descr_value",42:"acc_descr_multiline_value",43:"CLASS",44:"STYLE_SEPARATOR",45:"STRUCT_START",47:"STRUCT_STOP",48:"ANNOTATION_START",49:"ANNOTATION_END",50:"MEMBER",51:"SEPARATOR",53:"STR",56:"AGGREGATION",57:"EXTENSION",58:"COMPOSITION",59:"DEPENDENCY",60:"LINE",61:"DOTTED_LINE",62:"CALLBACK",63:"LINK",64:"LINK_TARGET",65:"CLICK",66:"CALLBACK_NAME",67:"CALLBACK_ARGS",68:"HREF",69:"CSSCLASS",72:"graphCodeTokens",74:"TAGSTART",75:"TAGEND",76:"==",77:"--",78:"PCT",79:"DEFAULT",80:"SPACE",81:"MINUS",82:"keywords",83:"UNICODE_TEXT",84:"NUM",85:"ALPHA",86:"BQUOTE_STR"},productions_:[0,[3,1],[3,1],[3,1],[3,2],[6,1],[6,1],[6,1],[6,1],[4,1],[7,4],[7,6],[13,1],[14,1],[18,1],[15,1],[12,4],[24,1],[24,2],[24,3],[27,1],[27,1],[27,2],[27,2],[27,2],[26,1],[26,2],[26,1],[26,1],[26,1],[26,1],[26,1],[26,1],[26,1],[26,2],[26,2],[26,1],[33,2],[33,4],[33,5],[33,7],[35,4],[46,1],[46,2],[34,1],[34,2],[34,1],[34,1],[31,3],[31,4],[31,4],[31,5],[52,3],[52,2],[52,2],[52,1],[54,1],[54,1],[54,1],[54,1],[55,1],[55,1],[36,3],[36,4],[36,3],[36,4],[36,4],[36,5],[36,3],[36,4],[36,4],[36,5],[36,3],[36,4],[36,4],[36,5],[37,3],[70,1],[70,1],[71,1],[71,1],[71,1],[71,1],[71,1],[71,1],[71,1],[73,1],[73,1],[73,1],[73,1],[28,1],[28,1],[28,1],[29,1]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 5:r.setDirection("TB");break;case 6:r.setDirection("BT");break;case 7:r.setDirection("RL");break;case 8:r.setDirection("LR");break;case 12:r.parseDirective("%%{","open_directive");break;case 13:r.parseDirective(a[s],"type_directive");break;case 14:a[s]=a[s].trim().replace(/'/g,'"'),r.parseDirective(a[s],"arg_directive");break;case 15:r.parseDirective("}%%","close_directive","class");break;case 20:case 21:this.$=a[s];break;case 22:this.$=a[s-1]+a[s];break;case 23:case 24:this.$=a[s-1]+"~"+a[s];break;case 25:r.addRelation(a[s]);break;case 26:a[s-1].title=r.cleanupLabel(a[s]),r.addRelation(a[s-1]);break;case 34:this.$=a[s].trim(),r.setTitle(this.$);break;case 35:case 36:this.$=a[s].trim(),r.setAccDescription(this.$);break;case 37:r.addClass(a[s]);break;case 38:r.addClass(a[s-2]),r.setCssClass(a[s-2],a[s]);break;case 39:r.addClass(a[s-3]),r.addMembers(a[s-3],a[s-1]);break;case 40:r.addClass(a[s-5]),r.setCssClass(a[s-5],a[s-3]),r.addMembers(a[s-5],a[s-1]);break;case 41:r.addAnnotation(a[s],a[s-2]);break;case 42:this.$=[a[s]];break;case 43:a[s].push(a[s-1]),this.$=a[s];break;case 44:case 46:case 47:break;case 45:r.addMember(a[s-1],r.cleanupLabel(a[s]));break;case 48:this.$={id1:a[s-2],id2:a[s],relation:a[s-1],relationTitle1:"none",relationTitle2:"none"};break;case 49:this.$={id1:a[s-3],id2:a[s],relation:a[s-1],relationTitle1:a[s-2],relationTitle2:"none"};break;case 50:this.$={id1:a[s-3],id2:a[s],relation:a[s-2],relationTitle1:"none",relationTitle2:a[s-1]};break;case 51:this.$={id1:a[s-4],id2:a[s],relation:a[s-2],relationTitle1:a[s-3],relationTitle2:a[s-1]};break;case 52:this.$={type1:a[s-2],type2:a[s],lineType:a[s-1]};break;case 53:this.$={type1:"none",type2:a[s],lineType:a[s-1]};break;case 54:this.$={type1:a[s-1],type2:"none",lineType:a[s]};break;case 55:this.$={type1:"none",type2:"none",lineType:a[s]};break;case 56:this.$=r.relationType.AGGREGATION;break;case 57:this.$=r.relationType.EXTENSION;break;case 58:this.$=r.relationType.COMPOSITION;break;case 59:this.$=r.relationType.DEPENDENCY;break;case 60:this.$=r.lineType.LINE;break;case 61:this.$=r.lineType.DOTTED_LINE;break;case 62:case 68:this.$=a[s-2],r.setClickEvent(a[s-1],a[s]);break;case 63:case 69:this.$=a[s-3],r.setClickEvent(a[s-2],a[s-1]),r.setTooltip(a[s-2],a[s]);break;case 64:case 72:this.$=a[s-2],r.setLink(a[s-1],a[s]);break;case 65:case 73:this.$=a[s-3],r.setLink(a[s-2],a[s-1],a[s]);break;case 66:case 74:this.$=a[s-3],r.setLink(a[s-2],a[s-1]),r.setTooltip(a[s-2],a[s]);break;case 67:case 75:this.$=a[s-4],r.setLink(a[s-3],a[s-2],a[s]),r.setTooltip(a[s-3],a[s-1]);break;case 70:this.$=a[s-3],r.setClickEvent(a[s-2],a[s-1],a[s]);break;case 71:this.$=a[s-4],r.setClickEvent(a[s-3],a[s-2],a[s-1]),r.setTooltip(a[s-3],a[s]);break;case 76:r.setCssClass(a[s-1],a[s])}},table:[{3:1,4:2,5:e,6:4,7:5,8:n,9:r,10:i,11:a,12:6,13:11,19:o,23:s},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{3:14,4:2,5:e,6:4,7:5,8:n,9:r,10:i,11:a,12:6,13:11,19:o,23:s},{1:[2,9]},t(c,[2,5]),t(c,[2,6]),t(c,[2,7]),t(c,[2,8]),{14:15,20:[1,16]},{16:[1,17]},{20:[2,12]},{1:[2,4]},{15:18,17:[1,19],22:u},t([17,22],[2,13]),{6:30,7:29,8:n,9:r,10:i,11:a,13:11,19:o,24:21,26:22,27:34,28:43,29:44,31:23,33:24,34:25,35:26,36:27,37:28,38:l,40:h,42:f,43:d,48:p,50:g,51:y,62:m,63:v,65:b,69:_,83:x,84:w,85:k,86:T},{16:[1,49]},{18:50,21:[1,51]},{16:[2,15]},{25:[1,52]},{16:[1,53],25:[2,17]},t(C,[2,25],{32:[1,54]}),t(C,[2,27]),t(C,[2,28]),t(C,[2,29]),t(C,[2,30]),t(C,[2,31]),t(C,[2,32]),t(C,[2,33]),{39:[1,55]},{41:[1,56]},t(C,[2,36]),t(C,[2,44],{52:57,54:60,55:61,32:[1,59],53:[1,58],56:E,57:S,58:A,59:M,60:N,61:D}),{27:68,28:43,29:44,83:x,84:w,85:k,86:T},t(C,[2,46]),t(C,[2,47]),{28:69,83:x,84:w,85:k},{27:70,28:43,29:44,83:x,84:w,85:k,86:T},{27:71,28:43,29:44,83:x,84:w,85:k,86:T},{27:72,28:43,29:44,83:x,84:w,85:k,86:T},{53:[1,73]},t(B,[2,20],{28:43,29:44,27:74,30:[1,75],83:x,84:w,85:k,86:T}),t(B,[2,21],{30:[1,76]}),t(L,[2,90]),t(L,[2,91]),t(L,[2,92]),t([16,25,30,32,44,45,53,56,57,58,59,60,61,66,68],[2,93]),t(O,[2,10]),{15:77,22:u},{22:[2,14]},{1:[2,16]},{6:30,7:29,8:n,9:r,10:i,11:a,13:11,19:o,24:78,25:[2,18],26:22,27:34,28:43,29:44,31:23,33:24,34:25,35:26,36:27,37:28,38:l,40:h,42:f,43:d,48:p,50:g,51:y,62:m,63:v,65:b,69:_,83:x,84:w,85:k,86:T},t(C,[2,26]),t(C,[2,34]),t(C,[2,35]),{27:79,28:43,29:44,53:[1,80],83:x,84:w,85:k,86:T},{52:81,54:60,55:61,56:E,57:S,58:A,59:M,60:N,61:D},t(C,[2,45]),{55:82,60:N,61:D},t(I,[2,55],{54:83,56:E,57:S,58:A,59:M}),t(R,[2,56]),t(R,[2,57]),t(R,[2,58]),t(R,[2,59]),t(F,[2,60]),t(F,[2,61]),t(C,[2,37],{44:[1,84],45:[1,85]}),{49:[1,86]},{53:[1,87]},{53:[1,88]},{66:[1,89],68:[1,90]},{28:91,83:x,84:w,85:k},t(B,[2,22]),t(B,[2,23]),t(B,[2,24]),{16:[1,92]},{25:[2,19]},t(P,[2,48]),{27:93,28:43,29:44,83:x,84:w,85:k,86:T},{27:94,28:43,29:44,53:[1,95],83:x,84:w,85:k,86:T},t(I,[2,54],{54:96,56:E,57:S,58:A,59:M}),t(I,[2,53]),{28:97,83:x,84:w,85:k},{46:98,50:Y},{27:100,28:43,29:44,83:x,84:w,85:k,86:T},t(C,[2,62],{53:[1,101]}),t(C,[2,64],{53:[1,103],64:[1,102]}),t(C,[2,68],{53:[1,104],67:[1,105]}),t(C,[2,72],{53:[1,107],64:[1,106]}),t(C,[2,76]),t(O,[2,11]),t(P,[2,50]),t(P,[2,49]),{27:108,28:43,29:44,83:x,84:w,85:k,86:T},t(I,[2,52]),t(C,[2,38],{45:[1,109]}),{47:[1,110]},{46:111,47:[2,42],50:Y},t(C,[2,41]),t(C,[2,63]),t(C,[2,65]),t(C,[2,66],{64:[1,112]}),t(C,[2,69]),t(C,[2,70],{53:[1,113]}),t(C,[2,73]),t(C,[2,74],{64:[1,114]}),t(P,[2,51]),{46:115,50:Y},t(C,[2,39]),{47:[2,43]},t(C,[2,67]),t(C,[2,71]),t(C,[2,75]),{47:[1,116]},t(C,[2,40])],defaultActions:{2:[2,1],3:[2,2],4:[2,3],6:[2,9],13:[2,12],14:[2,4],20:[2,15],51:[2,14],52:[2,16],78:[2,19],111:[2,43]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",c=0,u=0,l=0,h=2,f=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),g={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(g.yy[y]=this.yy[y]);p.setInput(t,g.yy),g.yy.lexer=p,g.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var m=p.yylloc;a.push(m);var v=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||f)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var _,x,w,k,T,C,E,S,A,M={};;){if(w=n[n.length-1],this.defaultActions[w]?k=this.defaultActions[w]:(null==_&&(_=b()),k=o[w]&&o[w][_]),void 0===k||!k.length||!k[0]){var N="";for(C in A=[],o[w])this.terminals_[C]&&C>h&&A.push("'"+this.terminals_[C]+"'");N=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+A.join(", ")+", got '"+(this.terminals_[_]||_)+"'":"Parse error on line "+(c+1)+": Unexpected "+(_==f?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(N,{text:p.match,token:this.terminals_[_]||_,line:p.yylineno,loc:m,expected:A})}if(k[0]instanceof Array&&k.length>1)throw new Error("Parse Error: multiple actions possible at state: "+w+", token: "+_);switch(k[0]){case 1:n.push(_),i.push(p.yytext),a.push(p.yylloc),n.push(k[1]),_=null,x?(_=x,x=null):(u=p.yyleng,s=p.yytext,c=p.yylineno,m=p.yylloc,l>0&&l--);break;case 2:if(E=this.productions_[k[1]][1],M.$=i[i.length-E],M._$={first_line:a[a.length-(E||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(E||1)].first_column,last_column:a[a.length-1].last_column},v&&(M._$.range=[a[a.length-(E||1)].range[0],a[a.length-1].range[1]]),void 0!==(T=this.performAction.apply(M,[s,u,c,g.yy,k[1],i,a].concat(d))))return T;E&&(n=n.slice(0,-1*E*2),i=i.slice(0,-1*E),a=a.slice(0,-1*E)),n.push(this.productions_[k[1]][0]),i.push(M.$),a.push(M._$),S=o[n[n.length-2]][n[n.length-1]],n.push(S);break;case 3:return!0}}return!0}},U={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;a<i.length;a++)if((n=this._input.match(this.rules[i[a]]))&&(!e||n[0].length>e[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),19;case 1:return 8;case 2:return 9;case 3:return 10;case 4:return 11;case 5:return this.begin("type_directive"),20;case 6:return this.popState(),this.begin("arg_directive"),17;case 7:return this.popState(),this.popState(),22;case 8:return 21;case 9:case 10:case 19:case 26:break;case 11:return this.begin("acc_title"),38;case 12:return this.popState(),"acc_title_value";case 13:return this.begin("acc_descr"),40;case 14:return this.popState(),"acc_descr_value";case 15:this.begin("acc_descr_multiline");break;case 16:case 36:case 39:case 42:case 45:case 48:case 51:this.popState();break;case 17:return"acc_descr_multiline_value";case 18:return 16;case 20:case 21:return 23;case 22:return this.begin("struct"),45;case 23:return"EOF_IN_STRUCT";case 24:return"OPEN_IN_STRUCT";case 25:return this.popState(),47;case 27:return"MEMBER";case 28:return 43;case 29:return 69;case 30:return 62;case 31:return 63;case 32:return 65;case 33:return 48;case 34:return 49;case 35:this.begin("generic");break;case 37:return"GENERICTYPE";case 38:this.begin("string");break;case 40:return"STR";case 41:this.begin("bqstring");break;case 43:return"BQUOTE_STR";case 44:this.begin("href");break;case 46:return 68;case 47:this.begin("callback_name");break;case 49:this.popState(),this.begin("callback_args");break;case 50:return 66;case 52:return 67;case 53:case 54:case 55:case 56:return 64;case 57:case 58:return 57;case 59:case 60:return 59;case 61:return 58;case 62:return 56;case 63:return 60;case 64:return 61;case 65:return 32;case 66:return 44;case 67:return 81;case 68:return"DOT";case 69:return"PLUS";case 70:return 78;case 71:case 72:return"EQUALS";case 73:return 85;case 74:return"PUNCTUATION";case 75:return 84;case 76:return 83;case 77:return 80;case 78:return 25}},rules:[/^(?:%%\{)/,/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:((?:(?!\}%%)[^:.])*))/,/^(?::)/,/^(?:\}%%)/,/^(?:((?:(?!\}%%).|\n)*))/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:classDiagram-v2\b)/,/^(?:classDiagram\b)/,/^(?:[{])/,/^(?:$)/,/^(?:[{])/,/^(?:[}])/,/^(?:[\n])/,/^(?:[^{}\n]*)/,/^(?:class\b)/,/^(?:cssClass\b)/,/^(?:callback\b)/,/^(?:link\b)/,/^(?:click\b)/,/^(?:<<)/,/^(?:>>)/,/^(?:[~])/,/^(?:[~])/,/^(?:[^~]*)/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:[`])/,/^(?:[`])/,/^(?:[^`]+)/,/^(?:href[\s]+["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:\s*<\|)/,/^(?:\s*\|>)/,/^(?:\s*>)/,/^(?:\s*<)/,/^(?:\s*\*)/,/^(?:\s*o\b)/,/^(?:--)/,/^(?:\.\.)/,/^(?::{1}[^:\n;]+)/,/^(?::{3})/,/^(?:-)/,/^(?:\.)/,/^(?:\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:\w+)/,/^(?:[!"#$%&'*+,-.`?\\/])/,/^(?:[0-9]+)/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\s)/,/^(?:$)/],conditions:{acc_descr_multiline:{rules:[16,17],inclusive:!1},acc_descr:{rules:[14],inclusive:!1},acc_title:{rules:[12],inclusive:!1},arg_directive:{rules:[7,8],inclusive:!1},type_directive:{rules:[6,7],inclusive:!1},open_directive:{rules:[5],inclusive:!1},callback_args:{rules:[51,52],inclusive:!1},callback_name:{rules:[48,49,50],inclusive:!1},href:{rules:[45,46],inclusive:!1},struct:{rules:[23,24,25,26,27],inclusive:!1},generic:{rules:[36,37],inclusive:!1},bqstring:{rules:[42,43],inclusive:!1},string:{rules:[39,40],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,9,10,11,13,15,18,19,20,21,22,28,29,30,31,32,33,34,35,38,41,44,47,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78],inclusive:!0}}};function z(){this.yy={}}return j.lexer=U,z.prototype=j,j.Parser=z,new z}();e.parser=r,e.Parser=r.Parser,e.parse=function(){return r.parse.apply(r,arguments)},e.main=function(t){t[1]||(console.log("Usage: "+t[0]+" FILE"),process.exit(1));var r=n(8218).readFileSync(n(6470).normalize(t[1]),"utf8");return e.parser.parse(r)},n.c[n.s]===t&&e.main(process.argv.slice(1))},5890:(t,e,n)=>{t=n.nmd(t);var r=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[1,2],n=[1,5],r=[6,9,11,23,25,27,29,30,48],i=[1,17],a=[1,18],o=[1,19],s=[1,20],c=[1,21],u=[1,24],l=[1,29],h=[1,30],f=[1,31],d=[1,32],p=[1,44],g=[30,45,46],y=[4,6,9,11,23,25,27,29,30,48],m=[41,42,43,44],v=[22,36],b=[1,62],_={trace:function(){},yy:{},symbols_:{error:2,start:3,ER_DIAGRAM:4,document:5,EOF:6,directive:7,line:8,SPACE:9,statement:10,NEWLINE:11,openDirective:12,typeDirective:13,closeDirective:14,":":15,argDirective:16,entityName:17,relSpec:18,role:19,BLOCK_START:20,attributes:21,BLOCK_STOP:22,title:23,title_value:24,acc_title:25,acc_title_value:26,acc_descr:27,acc_descr_value:28,acc_descr_multiline_value:29,ALPHANUM:30,attribute:31,attributeType:32,attributeName:33,attributeKeyType:34,attributeComment:35,ATTRIBUTE_WORD:36,ATTRIBUTE_KEY:37,COMMENT:38,cardinality:39,relType:40,ZERO_OR_ONE:41,ZERO_OR_MORE:42,ONE_OR_MORE:43,ONLY_ONE:44,NON_IDENTIFYING:45,IDENTIFYING:46,WORD:47,open_directive:48,type_directive:49,arg_directive:50,close_directive:51,$accept:0,$end:1},terminals_:{2:"error",4:"ER_DIAGRAM",6:"EOF",9:"SPACE",11:"NEWLINE",15:":",20:"BLOCK_START",22:"BLOCK_STOP",23:"title",24:"title_value",25:"acc_title",26:"acc_title_value",27:"acc_descr",28:"acc_descr_value",29:"acc_descr_multiline_value",30:"ALPHANUM",36:"ATTRIBUTE_WORD",37:"ATTRIBUTE_KEY",38:"COMMENT",41:"ZERO_OR_ONE",42:"ZERO_OR_MORE",43:"ONE_OR_MORE",44:"ONLY_ONE",45:"NON_IDENTIFYING",46:"IDENTIFYING",47:"WORD",48:"open_directive",49:"type_directive",50:"arg_directive",51:"close_directive"},productions_:[0,[3,3],[3,2],[5,0],[5,2],[8,2],[8,1],[8,1],[8,1],[7,4],[7,6],[10,1],[10,5],[10,4],[10,3],[10,1],[10,2],[10,2],[10,2],[10,1],[17,1],[21,1],[21,2],[31,2],[31,3],[31,3],[31,4],[32,1],[33,1],[34,1],[35,1],[18,3],[39,1],[39,1],[39,1],[39,1],[40,1],[40,1],[19,1],[19,1],[12,1],[13,1],[16,1],[14,1]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 1:break;case 3:case 7:case 8:this.$=[];break;case 4:a[s-1].push(a[s]),this.$=a[s-1];break;case 5:case 6:case 20:case 27:case 28:case 29:case 39:this.$=a[s];break;case 12:r.addEntity(a[s-4]),r.addEntity(a[s-2]),r.addRelationship(a[s-4],a[s],a[s-2],a[s-3]);break;case 13:r.addEntity(a[s-3]),r.addAttributes(a[s-3],a[s-1]);break;case 14:r.addEntity(a[s-2]);break;case 15:r.addEntity(a[s]);break;case 16:case 17:this.$=a[s].trim(),r.setTitle(this.$);break;case 18:case 19:this.$=a[s].trim(),r.setAccDescription(this.$);break;case 21:this.$=[a[s]];break;case 22:a[s].push(a[s-1]),this.$=a[s];break;case 23:this.$={attributeType:a[s-1],attributeName:a[s]};break;case 24:this.$={attributeType:a[s-2],attributeName:a[s-1],attributeKeyType:a[s]};break;case 25:this.$={attributeType:a[s-2],attributeName:a[s-1],attributeComment:a[s]};break;case 26:this.$={attributeType:a[s-3],attributeName:a[s-2],attributeKeyType:a[s-1],attributeComment:a[s]};break;case 30:case 38:this.$=a[s].replace(/"/g,"");break;case 31:this.$={cardA:a[s],relType:a[s-1],cardB:a[s-2]};break;case 32:this.$=r.Cardinality.ZERO_OR_ONE;break;case 33:this.$=r.Cardinality.ZERO_OR_MORE;break;case 34:this.$=r.Cardinality.ONE_OR_MORE;break;case 35:this.$=r.Cardinality.ONLY_ONE;break;case 36:this.$=r.Identification.NON_IDENTIFYING;break;case 37:this.$=r.Identification.IDENTIFYING;break;case 40:r.parseDirective("%%{","open_directive");break;case 41:r.parseDirective(a[s],"type_directive");break;case 42:a[s]=a[s].trim().replace(/'/g,'"'),r.parseDirective(a[s],"arg_directive");break;case 43:r.parseDirective("}%%","close_directive","er")}},table:[{3:1,4:e,7:3,12:4,48:n},{1:[3]},t(r,[2,3],{5:6}),{3:7,4:e,7:3,12:4,48:n},{13:8,49:[1,9]},{49:[2,40]},{6:[1,10],7:15,8:11,9:[1,12],10:13,11:[1,14],12:4,17:16,23:i,25:a,27:o,29:s,30:c,48:n},{1:[2,2]},{14:22,15:[1,23],51:u},t([15,51],[2,41]),t(r,[2,8],{1:[2,1]}),t(r,[2,4]),{7:15,10:25,12:4,17:16,23:i,25:a,27:o,29:s,30:c,48:n},t(r,[2,6]),t(r,[2,7]),t(r,[2,11]),t(r,[2,15],{18:26,39:28,20:[1,27],41:l,42:h,43:f,44:d}),{24:[1,33]},{26:[1,34]},{28:[1,35]},t(r,[2,19]),t([6,9,11,15,20,23,25,27,29,30,41,42,43,44,48],[2,20]),{11:[1,36]},{16:37,50:[1,38]},{11:[2,43]},t(r,[2,5]),{17:39,30:c},{21:40,22:[1,41],31:42,32:43,36:p},{40:45,45:[1,46],46:[1,47]},t(g,[2,32]),t(g,[2,33]),t(g,[2,34]),t(g,[2,35]),t(r,[2,16]),t(r,[2,17]),t(r,[2,18]),t(y,[2,9]),{14:48,51:u},{51:[2,42]},{15:[1,49]},{22:[1,50]},t(r,[2,14]),{21:51,22:[2,21],31:42,32:43,36:p},{33:52,36:[1,53]},{36:[2,27]},{39:54,41:l,42:h,43:f,44:d},t(m,[2,36]),t(m,[2,37]),{11:[1,55]},{19:56,30:[1,58],47:[1,57]},t(r,[2,13]),{22:[2,22]},t(v,[2,23],{34:59,35:60,37:[1,61],38:b}),t([22,36,37,38],[2,28]),{30:[2,31]},t(y,[2,10]),t(r,[2,12]),t(r,[2,38]),t(r,[2,39]),t(v,[2,24],{35:63,38:b}),t(v,[2,25]),t([22,36,38],[2,29]),t(v,[2,30]),t(v,[2,26])],defaultActions:{5:[2,40],7:[2,2],24:[2,43],38:[2,42],44:[2,27],51:[2,22],54:[2,31]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",c=0,u=0,l=0,h=2,f=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),g={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(g.yy[y]=this.yy[y]);p.setInput(t,g.yy),g.yy.lexer=p,g.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var m=p.yylloc;a.push(m);var v=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||f)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var _,x,w,k,T,C,E,S,A,M={};;){if(w=n[n.length-1],this.defaultActions[w]?k=this.defaultActions[w]:(null==_&&(_=b()),k=o[w]&&o[w][_]),void 0===k||!k.length||!k[0]){var N="";for(C in A=[],o[w])this.terminals_[C]&&C>h&&A.push("'"+this.terminals_[C]+"'");N=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+A.join(", ")+", got '"+(this.terminals_[_]||_)+"'":"Parse error on line "+(c+1)+": Unexpected "+(_==f?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(N,{text:p.match,token:this.terminals_[_]||_,line:p.yylineno,loc:m,expected:A})}if(k[0]instanceof Array&&k.length>1)throw new Error("Parse Error: multiple actions possible at state: "+w+", token: "+_);switch(k[0]){case 1:n.push(_),i.push(p.yytext),a.push(p.yylloc),n.push(k[1]),_=null,x?(_=x,x=null):(u=p.yyleng,s=p.yytext,c=p.yylineno,m=p.yylloc,l>0&&l--);break;case 2:if(E=this.productions_[k[1]][1],M.$=i[i.length-E],M._$={first_line:a[a.length-(E||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(E||1)].first_column,last_column:a[a.length-1].last_column},v&&(M._$.range=[a[a.length-(E||1)].range[0],a[a.length-1].range[1]]),void 0!==(T=this.performAction.apply(M,[s,u,c,g.yy,k[1],i,a].concat(d))))return T;E&&(n=n.slice(0,-1*E*2),i=i.slice(0,-1*E),a=a.slice(0,-1*E)),n.push(this.productions_[k[1]][0]),i.push(M.$),a.push(M._$),S=o[n[n.length-2]][n[n.length-1]],n.push(S);break;case 3:return!0}}return!0}},x={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;a<i.length;a++)if((n=this._input.match(this.rules[i[a]]))&&(!e||n[0].length>e[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("acc_title"),25;case 1:return this.popState(),"acc_title_value";case 2:return this.begin("acc_descr"),27;case 3:return this.popState(),"acc_descr_value";case 4:this.begin("acc_descr_multiline");break;case 5:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:return this.begin("open_directive"),48;case 8:return this.begin("type_directive"),49;case 9:return this.popState(),this.begin("arg_directive"),15;case 10:return this.popState(),this.popState(),51;case 11:return 50;case 12:case 13:case 15:case 20:case 24:break;case 14:return 11;case 16:return 9;case 17:return 47;case 18:return 4;case 19:return this.begin("block"),20;case 21:return 37;case 22:return 36;case 23:return 38;case 25:return this.popState(),22;case 26:case 39:return e.yytext[0];case 27:case 31:return 41;case 28:case 32:return 42;case 29:case 33:return 43;case 30:return 44;case 34:case 36:case 37:return 45;case 35:return 46;case 38:return 30;case 40:return 6}},rules:[/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:[\s]+)/i,/^(?:"[^"]*")/i,/^(?:erDiagram\b)/i,/^(?:\{)/i,/^(?:\s+)/i,/^(?:(?:PK)|(?:FK))/i,/^(?:[A-Za-z][A-Za-z0-9\-_]*)/i,/^(?:"[^"]*")/i,/^(?:[\n]+)/i,/^(?:\})/i,/^(?:.)/i,/^(?:\|o\b)/i,/^(?:\}o\b)/i,/^(?:\}\|)/i,/^(?:\|\|)/i,/^(?:o\|)/i,/^(?:o\{)/i,/^(?:\|\{)/i,/^(?:\.\.)/i,/^(?:--)/i,/^(?:\.-)/i,/^(?:-\.)/i,/^(?:[A-Za-z][A-Za-z0-9\-_]*)/i,/^(?:.)/i,/^(?:$)/i],conditions:{acc_descr_multiline:{rules:[5,6],inclusive:!1},acc_descr:{rules:[3],inclusive:!1},acc_title:{rules:[1],inclusive:!1},open_directive:{rules:[8],inclusive:!1},type_directive:{rules:[9,10],inclusive:!1},arg_directive:{rules:[10,11],inclusive:!1},block:{rules:[20,21,22,23,24,25,26],inclusive:!1},INITIAL:{rules:[0,2,4,7,12,13,14,15,16,17,18,19,27,28,29,30,31,32,33,34,35,36,37,38,39,40],inclusive:!0}}};function w(){this.yy={}}return _.lexer=x,w.prototype=_,_.Parser=w,new w}();e.parser=r,e.Parser=r.Parser,e.parse=function(){return r.parse.apply(r,arguments)},e.main=function(t){t[1]||(console.log("Usage: "+t[0]+" FILE"),process.exit(1));var r=n(8009).readFileSync(n(6470).normalize(t[1]),"utf8");return e.parser.parse(r)},n.c[n.s]===t&&e.main(process.argv.slice(1))},3602:(t,e,n)=>{t=n.nmd(t);var r=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[1,9],n=[1,7],r=[1,6],i=[1,8],a=[1,20,21,22,23,38,44,46,48,52,66,67,86,87,88,89,90,91,95,105,106,109,111,112,118,119,120,121,122,123,124,125,126,127],o=[2,10],s=[1,20],c=[1,21],u=[1,22],l=[1,23],h=[1,30],f=[1,32],d=[1,33],p=[1,34],g=[1,62],y=[1,48],m=[1,52],v=[1,36],b=[1,37],_=[1,38],x=[1,39],w=[1,40],k=[1,56],T=[1,63],C=[1,51],E=[1,53],S=[1,55],A=[1,59],M=[1,60],N=[1,41],D=[1,42],B=[1,43],L=[1,44],O=[1,61],I=[1,50],R=[1,54],F=[1,57],P=[1,58],Y=[1,49],j=[1,66],U=[1,71],z=[1,20,21,22,23,38,42,44,46,48,52,66,67,86,87,88,89,90,91,95,105,106,109,111,112,118,119,120,121,122,123,124,125,126,127],$=[1,75],q=[1,74],H=[1,76],W=[20,21,23,81,82],V=[1,99],G=[1,104],X=[1,107],Z=[1,108],Q=[1,101],K=[1,106],J=[1,109],tt=[1,102],et=[1,114],nt=[1,113],rt=[1,103],it=[1,105],at=[1,110],ot=[1,111],st=[1,112],ct=[1,115],ut=[20,21,22,23,81,82],lt=[20,21,22,23,53,81,82],ht=[20,21,22,23,40,52,53,55,57,59,61,63,65,66,67,69,71,73,74,76,81,82,91,95,105,106,109,111,112,122,123,124,125,126,127],ft=[20,21,23],dt=[20,21,23,52,66,67,81,82,91,95,105,106,109,111,112,122,123,124,125,126,127],pt=[1,12,20,21,22,23,24,38,42,44,46,48,52,66,67,86,87,88,89,90,91,95,105,106,109,111,112,118,119,120,121,122,123,124,125,126,127],gt=[52,66,67,91,95,105,106,109,111,112,122,123,124,125,126,127],yt=[1,149],mt=[1,157],vt=[1,158],bt=[1,159],_t=[1,160],xt=[1,144],wt=[1,145],kt=[1,141],Tt=[1,152],Ct=[1,153],Et=[1,154],St=[1,155],At=[1,156],Mt=[1,161],Nt=[1,162],Dt=[1,147],Bt=[1,150],Lt=[1,146],Ot=[1,143],It=[20,21,22,23,38,42,44,46,48,52,66,67,86,87,88,89,90,91,95,105,106,109,111,112,118,119,120,121,122,123,124,125,126,127],Rt=[1,165],Ft=[20,21,22,23,26,52,66,67,91,105,106,109,111,112,122,123,124,125,126,127],Pt=[20,21,22,23,24,26,38,40,41,42,52,56,58,60,62,64,66,67,68,70,72,73,75,77,81,82,86,87,88,89,90,91,92,95,105,106,109,111,112,113,114,122,123,124,125,126,127],Yt=[12,21,22,24],jt=[22,106],Ut=[1,250],zt=[1,245],$t=[1,246],qt=[1,254],Ht=[1,251],Wt=[1,248],Vt=[1,247],Gt=[1,249],Xt=[1,252],Zt=[1,253],Qt=[1,255],Kt=[1,273],Jt=[20,21,23,106],te=[20,21,22,23,66,67,86,102,105,106,109,110,111,112,113],ee={trace:function(){},yy:{},symbols_:{error:2,start:3,mermaidDoc:4,directive:5,openDirective:6,typeDirective:7,closeDirective:8,separator:9,":":10,argDirective:11,open_directive:12,type_directive:13,arg_directive:14,close_directive:15,graphConfig:16,document:17,line:18,statement:19,SEMI:20,NEWLINE:21,SPACE:22,EOF:23,GRAPH:24,NODIR:25,DIR:26,FirstStmtSeperator:27,ending:28,endToken:29,spaceList:30,spaceListNewline:31,verticeStatement:32,styleStatement:33,linkStyleStatement:34,classDefStatement:35,classStatement:36,clickStatement:37,subgraph:38,text:39,SQS:40,SQE:41,end:42,direction:43,acc_title:44,acc_title_value:45,acc_descr:46,acc_descr_value:47,acc_descr_multiline_value:48,link:49,node:50,vertex:51,AMP:52,STYLE_SEPARATOR:53,idString:54,DOUBLECIRCLESTART:55,DOUBLECIRCLEEND:56,PS:57,PE:58,"(-":59,"-)":60,STADIUMSTART:61,STADIUMEND:62,SUBROUTINESTART:63,SUBROUTINEEND:64,VERTEX_WITH_PROPS_START:65,ALPHA:66,COLON:67,PIPE:68,CYLINDERSTART:69,CYLINDEREND:70,DIAMOND_START:71,DIAMOND_STOP:72,TAGEND:73,TRAPSTART:74,TRAPEND:75,INVTRAPSTART:76,INVTRAPEND:77,linkStatement:78,arrowText:79,TESTSTR:80,START_LINK:81,LINK:82,textToken:83,STR:84,keywords:85,STYLE:86,LINKSTYLE:87,CLASSDEF:88,CLASS:89,CLICK:90,DOWN:91,UP:92,textNoTags:93,textNoTagsToken:94,DEFAULT:95,stylesOpt:96,alphaNum:97,CALLBACKNAME:98,CALLBACKARGS:99,HREF:100,LINK_TARGET:101,HEX:102,numList:103,INTERPOLATE:104,NUM:105,COMMA:106,style:107,styleComponent:108,MINUS:109,UNIT:110,BRKT:111,DOT:112,PCT:113,TAGSTART:114,alphaNumToken:115,idStringToken:116,alphaNumStatement:117,direction_tb:118,direction_bt:119,direction_rl:120,direction_lr:121,PUNCTUATION:122,UNICODE_TEXT:123,PLUS:124,EQUALS:125,MULT:126,UNDERSCORE:127,graphCodeTokens:128,ARROW_CROSS:129,ARROW_POINT:130,ARROW_CIRCLE:131,ARROW_OPEN:132,QUOTE:133,$accept:0,$end:1},terminals_:{2:"error",10:":",12:"open_directive",13:"type_directive",14:"arg_directive",15:"close_directive",20:"SEMI",21:"NEWLINE",22:"SPACE",23:"EOF",24:"GRAPH",25:"NODIR",26:"DIR",38:"subgraph",40:"SQS",41:"SQE",42:"end",44:"acc_title",45:"acc_title_value",46:"acc_descr",47:"acc_descr_value",48:"acc_descr_multiline_value",52:"AMP",53:"STYLE_SEPARATOR",55:"DOUBLECIRCLESTART",56:"DOUBLECIRCLEEND",57:"PS",58:"PE",59:"(-",60:"-)",61:"STADIUMSTART",62:"STADIUMEND",63:"SUBROUTINESTART",64:"SUBROUTINEEND",65:"VERTEX_WITH_PROPS_START",66:"ALPHA",67:"COLON",68:"PIPE",69:"CYLINDERSTART",70:"CYLINDEREND",71:"DIAMOND_START",72:"DIAMOND_STOP",73:"TAGEND",74:"TRAPSTART",75:"TRAPEND",76:"INVTRAPSTART",77:"INVTRAPEND",80:"TESTSTR",81:"START_LINK",82:"LINK",84:"STR",86:"STYLE",87:"LINKSTYLE",88:"CLASSDEF",89:"CLASS",90:"CLICK",91:"DOWN",92:"UP",95:"DEFAULT",98:"CALLBACKNAME",99:"CALLBACKARGS",100:"HREF",101:"LINK_TARGET",102:"HEX",104:"INTERPOLATE",105:"NUM",106:"COMMA",109:"MINUS",110:"UNIT",111:"BRKT",112:"DOT",113:"PCT",114:"TAGSTART",118:"direction_tb",119:"direction_bt",120:"direction_rl",121:"direction_lr",122:"PUNCTUATION",123:"UNICODE_TEXT",124:"PLUS",125:"EQUALS",126:"MULT",127:"UNDERSCORE",129:"ARROW_CROSS",130:"ARROW_POINT",131:"ARROW_CIRCLE",132:"ARROW_OPEN",133:"QUOTE"},productions_:[0,[3,1],[3,2],[5,4],[5,6],[6,1],[7,1],[11,1],[8,1],[4,2],[17,0],[17,2],[18,1],[18,1],[18,1],[18,1],[18,1],[16,2],[16,2],[16,2],[16,3],[28,2],[28,1],[29,1],[29,1],[29,1],[27,1],[27,1],[27,2],[31,2],[31,2],[31,1],[31,1],[30,2],[30,1],[19,2],[19,2],[19,2],[19,2],[19,2],[19,2],[19,9],[19,6],[19,4],[19,1],[19,2],[19,2],[19,1],[9,1],[9,1],[9,1],[32,3],[32,4],[32,2],[32,1],[50,1],[50,5],[50,3],[51,4],[51,4],[51,6],[51,4],[51,4],[51,4],[51,8],[51,4],[51,4],[51,4],[51,6],[51,4],[51,4],[51,4],[51,4],[51,4],[51,1],[49,2],[49,3],[49,3],[49,1],[49,3],[78,1],[79,3],[39,1],[39,2],[39,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[93,1],[93,2],[35,5],[35,5],[36,5],[37,2],[37,4],[37,3],[37,5],[37,2],[37,4],[37,4],[37,6],[37,2],[37,4],[37,2],[37,4],[37,4],[37,6],[33,5],[33,5],[34,5],[34,5],[34,9],[34,9],[34,7],[34,7],[103,1],[103,3],[96,1],[96,3],[107,1],[107,2],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[94,1],[94,1],[94,1],[94,1],[54,1],[54,2],[97,1],[97,2],[117,1],[117,1],[117,1],[117,1],[43,1],[43,1],[43,1],[43,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 5:r.parseDirective("%%{","open_directive");break;case 6:r.parseDirective(a[s],"type_directive");break;case 7:a[s]=a[s].trim().replace(/'/g,'"'),r.parseDirective(a[s],"arg_directive");break;case 8:r.parseDirective("}%%","close_directive","flowchart");break;case 10:case 36:case 37:case 38:case 39:case 40:this.$=[];break;case 11:a[s]!==[]&&a[s-1].push(a[s]),this.$=a[s-1];break;case 12:case 82:case 84:case 96:case 152:case 154:case 155:case 78:case 150:this.$=a[s];break;case 19:r.setDirection("TB"),this.$="TB";break;case 20:r.setDirection(a[s-1]),this.$=a[s-1];break;case 35:this.$=a[s-1].nodes;break;case 41:this.$=r.addSubGraph(a[s-6],a[s-1],a[s-4]);break;case 42:this.$=r.addSubGraph(a[s-3],a[s-1],a[s-3]);break;case 43:this.$=r.addSubGraph(void 0,a[s-1],void 0);break;case 45:this.$=a[s].trim(),r.setTitle(this.$);break;case 46:case 47:this.$=a[s].trim(),r.setAccDescription(this.$);break;case 51:r.addLink(a[s-2].stmt,a[s],a[s-1]),this.$={stmt:a[s],nodes:a[s].concat(a[s-2].nodes)};break;case 52:r.addLink(a[s-3].stmt,a[s-1],a[s-2]),this.$={stmt:a[s-1],nodes:a[s-1].concat(a[s-3].nodes)};break;case 53:this.$={stmt:a[s-1],nodes:a[s-1]};break;case 54:this.$={stmt:a[s],nodes:a[s]};break;case 55:case 123:case 125:this.$=[a[s]];break;case 56:this.$=a[s-4].concat(a[s]);break;case 57:this.$=[a[s-2]],r.setClass(a[s-2],a[s]);break;case 58:this.$=a[s-3],r.addVertex(a[s-3],a[s-1],"square");break;case 59:this.$=a[s-3],r.addVertex(a[s-3],a[s-1],"doublecircle");break;case 60:this.$=a[s-5],r.addVertex(a[s-5],a[s-2],"circle");break;case 61:this.$=a[s-3],r.addVertex(a[s-3],a[s-1],"ellipse");break;case 62:this.$=a[s-3],r.addVertex(a[s-3],a[s-1],"stadium");break;case 63:this.$=a[s-3],r.addVertex(a[s-3],a[s-1],"subroutine");break;case 64:this.$=a[s-7],r.addVertex(a[s-7],a[s-1],"rect",void 0,void 0,void 0,Object.fromEntries([[a[s-5],a[s-3]]]));break;case 65:this.$=a[s-3],r.addVertex(a[s-3],a[s-1],"cylinder");break;case 66:this.$=a[s-3],r.addVertex(a[s-3],a[s-1],"round");break;case 67:this.$=a[s-3],r.addVertex(a[s-3],a[s-1],"diamond");break;case 68:this.$=a[s-5],r.addVertex(a[s-5],a[s-2],"hexagon");break;case 69:this.$=a[s-3],r.addVertex(a[s-3],a[s-1],"odd");break;case 70:this.$=a[s-3],r.addVertex(a[s-3],a[s-1],"trapezoid");break;case 71:this.$=a[s-3],r.addVertex(a[s-3],a[s-1],"inv_trapezoid");break;case 72:this.$=a[s-3],r.addVertex(a[s-3],a[s-1],"lean_right");break;case 73:this.$=a[s-3],r.addVertex(a[s-3],a[s-1],"lean_left");break;case 74:this.$=a[s],r.addVertex(a[s]);break;case 75:a[s-1].text=a[s],this.$=a[s-1];break;case 76:case 77:a[s-2].text=a[s-1],this.$=a[s-2];break;case 79:var c=r.destructLink(a[s],a[s-2]);this.$={type:c.type,stroke:c.stroke,length:c.length,text:a[s-1]};break;case 80:c=r.destructLink(a[s]),this.$={type:c.type,stroke:c.stroke,length:c.length};break;case 81:this.$=a[s-1];break;case 83:case 97:case 153:case 151:this.$=a[s-1]+""+a[s];break;case 98:case 99:this.$=a[s-4],r.addClass(a[s-2],a[s]);break;case 100:this.$=a[s-4],r.setClass(a[s-2],a[s]);break;case 101:case 109:this.$=a[s-1],r.setClickEvent(a[s-1],a[s]);break;case 102:case 110:this.$=a[s-3],r.setClickEvent(a[s-3],a[s-2]),r.setTooltip(a[s-3],a[s]);break;case 103:this.$=a[s-2],r.setClickEvent(a[s-2],a[s-1],a[s]);break;case 104:this.$=a[s-4],r.setClickEvent(a[s-4],a[s-3],a[s-2]),r.setTooltip(a[s-4],a[s]);break;case 105:case 111:this.$=a[s-1],r.setLink(a[s-1],a[s]);break;case 106:case 112:this.$=a[s-3],r.setLink(a[s-3],a[s-2]),r.setTooltip(a[s-3],a[s]);break;case 107:case 113:this.$=a[s-3],r.setLink(a[s-3],a[s-2],a[s]);break;case 108:case 114:this.$=a[s-5],r.setLink(a[s-5],a[s-4],a[s]),r.setTooltip(a[s-5],a[s-2]);break;case 115:this.$=a[s-4],r.addVertex(a[s-2],void 0,void 0,a[s]);break;case 116:case 118:this.$=a[s-4],r.updateLink(a[s-2],a[s]);break;case 117:this.$=a[s-4],r.updateLink([a[s-2]],a[s]);break;case 119:this.$=a[s-8],r.updateLinkInterpolate([a[s-6]],a[s-2]),r.updateLink([a[s-6]],a[s]);break;case 120:this.$=a[s-8],r.updateLinkInterpolate(a[s-6],a[s-2]),r.updateLink(a[s-6],a[s]);break;case 121:this.$=a[s-6],r.updateLinkInterpolate([a[s-4]],a[s]);break;case 122:this.$=a[s-6],r.updateLinkInterpolate(a[s-4],a[s]);break;case 124:case 126:a[s-2].push(a[s]),this.$=a[s-2];break;case 128:this.$=a[s-1]+a[s];break;case 156:this.$="v";break;case 157:this.$="-";break;case 158:this.$={stmt:"dir",value:"TB"};break;case 159:this.$={stmt:"dir",value:"BT"};break;case 160:this.$={stmt:"dir",value:"RL"};break;case 161:this.$={stmt:"dir",value:"LR"}}},table:[{3:1,4:2,5:3,6:5,12:e,16:4,21:n,22:r,24:i},{1:[3]},{1:[2,1]},{3:10,4:2,5:3,6:5,12:e,16:4,21:n,22:r,24:i},t(a,o,{17:11}),{7:12,13:[1,13]},{16:14,21:n,22:r,24:i},{16:15,21:n,22:r,24:i},{25:[1,16],26:[1,17]},{13:[2,5]},{1:[2,2]},{1:[2,9],18:18,19:19,20:s,21:c,22:u,23:l,32:24,33:25,34:26,35:27,36:28,37:29,38:h,43:31,44:f,46:d,48:p,50:35,51:45,52:g,54:46,66:y,67:m,86:v,87:b,88:_,89:x,90:w,91:k,95:T,105:C,106:E,109:S,111:A,112:M,116:47,118:N,119:D,120:B,121:L,122:O,123:I,124:R,125:F,126:P,127:Y},{8:64,10:[1,65],15:j},t([10,15],[2,6]),t(a,[2,17]),t(a,[2,18]),t(a,[2,19]),{20:[1,68],21:[1,69],22:U,27:67,30:70},t(z,[2,11]),t(z,[2,12]),t(z,[2,13]),t(z,[2,14]),t(z,[2,15]),t(z,[2,16]),{9:72,20:$,21:q,23:H,49:73,78:77,81:[1,78],82:[1,79]},{9:80,20:$,21:q,23:H},{9:81,20:$,21:q,23:H},{9:82,20:$,21:q,23:H},{9:83,20:$,21:q,23:H},{9:84,20:$,21:q,23:H},{9:86,20:$,21:q,22:[1,85],23:H},t(z,[2,44]),{45:[1,87]},{47:[1,88]},t(z,[2,47]),t(W,[2,54],{30:89,22:U}),{22:[1,90]},{22:[1,91]},{22:[1,92]},{22:[1,93]},{26:V,52:G,66:X,67:Z,84:[1,97],91:Q,97:96,98:[1,94],100:[1,95],105:K,106:J,109:tt,111:et,112:nt,115:100,117:98,122:rt,123:it,124:at,125:ot,126:st,127:ct},t(z,[2,158]),t(z,[2,159]),t(z,[2,160]),t(z,[2,161]),t(ut,[2,55],{53:[1,116]}),t(lt,[2,74],{116:129,40:[1,117],52:g,55:[1,118],57:[1,119],59:[1,120],61:[1,121],63:[1,122],65:[1,123],66:y,67:m,69:[1,124],71:[1,125],73:[1,126],74:[1,127],76:[1,128],91:k,95:T,105:C,106:E,109:S,111:A,112:M,122:O,123:I,124:R,125:F,126:P,127:Y}),t(ht,[2,150]),t(ht,[2,175]),t(ht,[2,176]),t(ht,[2,177]),t(ht,[2,178]),t(ht,[2,179]),t(ht,[2,180]),t(ht,[2,181]),t(ht,[2,182]),t(ht,[2,183]),t(ht,[2,184]),t(ht,[2,185]),t(ht,[2,186]),t(ht,[2,187]),t(ht,[2,188]),t(ht,[2,189]),t(ht,[2,190]),{9:130,20:$,21:q,23:H},{11:131,14:[1,132]},t(ft,[2,8]),t(a,[2,20]),t(a,[2,26]),t(a,[2,27]),{21:[1,133]},t(dt,[2,34],{30:134,22:U}),t(z,[2,35]),{50:135,51:45,52:g,54:46,66:y,67:m,91:k,95:T,105:C,106:E,109:S,111:A,112:M,116:47,122:O,123:I,124:R,125:F,126:P,127:Y},t(pt,[2,48]),t(pt,[2,49]),t(pt,[2,50]),t(gt,[2,78],{79:136,68:[1,138],80:[1,137]}),{22:yt,24:mt,26:vt,38:bt,39:139,42:_t,52:G,66:X,67:Z,73:xt,81:wt,83:140,84:kt,85:151,86:Tt,87:Ct,88:Et,89:St,90:At,91:Mt,92:Nt,94:142,95:Dt,105:K,106:J,109:Bt,111:et,112:nt,113:Lt,114:Ot,115:148,122:rt,123:it,124:at,125:ot,126:st,127:ct},t([52,66,67,68,80,91,95,105,106,109,111,112,122,123,124,125,126,127],[2,80]),t(z,[2,36]),t(z,[2,37]),t(z,[2,38]),t(z,[2,39]),t(z,[2,40]),{22:yt,24:mt,26:vt,38:bt,39:163,42:_t,52:G,66:X,67:Z,73:xt,81:wt,83:140,84:kt,85:151,86:Tt,87:Ct,88:Et,89:St,90:At,91:Mt,92:Nt,94:142,95:Dt,105:K,106:J,109:Bt,111:et,112:nt,113:Lt,114:Ot,115:148,122:rt,123:it,124:at,125:ot,126:st,127:ct},t(It,o,{17:164}),t(z,[2,45]),t(z,[2,46]),t(W,[2,53],{52:Rt}),{26:V,52:G,66:X,67:Z,91:Q,97:166,102:[1,167],105:K,106:J,109:tt,111:et,112:nt,115:100,117:98,122:rt,123:it,124:at,125:ot,126:st,127:ct},{95:[1,168],103:169,105:[1,170]},{26:V,52:G,66:X,67:Z,91:Q,95:[1,171],97:172,105:K,106:J,109:tt,111:et,112:nt,115:100,117:98,122:rt,123:it,124:at,125:ot,126:st,127:ct},{26:V,52:G,66:X,67:Z,91:Q,97:173,105:K,106:J,109:tt,111:et,112:nt,115:100,117:98,122:rt,123:it,124:at,125:ot,126:st,127:ct},t(ft,[2,101],{22:[1,174],99:[1,175]}),t(ft,[2,105],{22:[1,176]}),t(ft,[2,109],{115:100,117:178,22:[1,177],26:V,52:G,66:X,67:Z,91:Q,105:K,106:J,109:tt,111:et,112:nt,122:rt,123:it,124:at,125:ot,126:st,127:ct}),t(ft,[2,111],{22:[1,179]}),t(Ft,[2,152]),t(Ft,[2,154]),t(Ft,[2,155]),t(Ft,[2,156]),t(Ft,[2,157]),t(Pt,[2,162]),t(Pt,[2,163]),t(Pt,[2,164]),t(Pt,[2,165]),t(Pt,[2,166]),t(Pt,[2,167]),t(Pt,[2,168]),t(Pt,[2,169]),t(Pt,[2,170]),t(Pt,[2,171]),t(Pt,[2,172]),t(Pt,[2,173]),t(Pt,[2,174]),{52:g,54:180,66:y,67:m,91:k,95:T,105:C,106:E,109:S,111:A,112:M,116:47,122:O,123:I,124:R,125:F,126:P,127:Y},{22:yt,24:mt,26:vt,38:bt,39:181,42:_t,52:G,66:X,67:Z,73:xt,81:wt,83:140,84:kt,85:151,86:Tt,87:Ct,88:Et,89:St,90:At,91:Mt,92:Nt,94:142,95:Dt,105:K,106:J,109:Bt,111:et,112:nt,113:Lt,114:Ot,115:148,122:rt,123:it,124:at,125:ot,126:st,127:ct},{22:yt,24:mt,26:vt,38:bt,39:182,42:_t,52:G,66:X,67:Z,73:xt,81:wt,83:140,84:kt,85:151,86:Tt,87:Ct,88:Et,89:St,90:At,91:Mt,92:Nt,94:142,95:Dt,105:K,106:J,109:Bt,111:et,112:nt,113:Lt,114:Ot,115:148,122:rt,123:it,124:at,125:ot,126:st,127:ct},{22:yt,24:mt,26:vt,38:bt,39:184,42:_t,52:G,57:[1,183],66:X,67:Z,73:xt,81:wt,83:140,84:kt,85:151,86:Tt,87:Ct,88:Et,89:St,90:At,91:Mt,92:Nt,94:142,95:Dt,105:K,106:J,109:Bt,111:et,112:nt,113:Lt,114:Ot,115:148,122:rt,123:it,124:at,125:ot,126:st,127:ct},{22:yt,24:mt,26:vt,38:bt,39:185,42:_t,52:G,66:X,67:Z,73:xt,81:wt,83:140,84:kt,85:151,86:Tt,87:Ct,88:Et,89:St,90:At,91:Mt,92:Nt,94:142,95:Dt,105:K,106:J,109:Bt,111:et,112:nt,113:Lt,114:Ot,115:148,122:rt,123:it,124:at,125:ot,126:st,127:ct},{22:yt,24:mt,26:vt,38:bt,39:186,42:_t,52:G,66:X,67:Z,73:xt,81:wt,83:140,84:kt,85:151,86:Tt,87:Ct,88:Et,89:St,90:At,91:Mt,92:Nt,94:142,95:Dt,105:K,106:J,109:Bt,111:et,112:nt,113:Lt,114:Ot,115:148,122:rt,123:it,124:at,125:ot,126:st,127:ct},{22:yt,24:mt,26:vt,38:bt,39:187,42:_t,52:G,66:X,67:Z,73:xt,81:wt,83:140,84:kt,85:151,86:Tt,87:Ct,88:Et,89:St,90:At,91:Mt,92:Nt,94:142,95:Dt,105:K,106:J,109:Bt,111:et,112:nt,113:Lt,114:Ot,115:148,122:rt,123:it,124:at,125:ot,126:st,127:ct},{66:[1,188]},{22:yt,24:mt,26:vt,38:bt,39:189,42:_t,52:G,66:X,67:Z,73:xt,81:wt,83:140,84:kt,85:151,86:Tt,87:Ct,88:Et,89:St,90:At,91:Mt,92:Nt,94:142,95:Dt,105:K,106:J,109:Bt,111:et,112:nt,113:Lt,114:Ot,115:148,122:rt,123:it,124:at,125:ot,126:st,127:ct},{22:yt,24:mt,26:vt,38:bt,39:190,42:_t,52:G,66:X,67:Z,71:[1,191],73:xt,81:wt,83:140,84:kt,85:151,86:Tt,87:Ct,88:Et,89:St,90:At,91:Mt,92:Nt,94:142,95:Dt,105:K,106:J,109:Bt,111:et,112:nt,113:Lt,114:Ot,115:148,122:rt,123:it,124:at,125:ot,126:st,127:ct},{22:yt,24:mt,26:vt,38:bt,39:192,42:_t,52:G,66:X,67:Z,73:xt,81:wt,83:140,84:kt,85:151,86:Tt,87:Ct,88:Et,89:St,90:At,91:Mt,92:Nt,94:142,95:Dt,105:K,106:J,109:Bt,111:et,112:nt,113:Lt,114:Ot,115:148,122:rt,123:it,124:at,125:ot,126:st,127:ct},{22:yt,24:mt,26:vt,38:bt,39:193,42:_t,52:G,66:X,67:Z,73:xt,81:wt,83:140,84:kt,85:151,86:Tt,87:Ct,88:Et,89:St,90:At,91:Mt,92:Nt,94:142,95:Dt,105:K,106:J,109:Bt,111:et,112:nt,113:Lt,114:Ot,115:148,122:rt,123:it,124:at,125:ot,126:st,127:ct},{22:yt,24:mt,26:vt,38:bt,39:194,42:_t,52:G,66:X,67:Z,73:xt,81:wt,83:140,84:kt,85:151,86:Tt,87:Ct,88:Et,89:St,90:At,91:Mt,92:Nt,94:142,95:Dt,105:K,106:J,109:Bt,111:et,112:nt,113:Lt,114:Ot,115:148,122:rt,123:it,124:at,125:ot,126:st,127:ct},t(ht,[2,151]),t(Yt,[2,3]),{8:195,15:j},{15:[2,7]},t(a,[2,28]),t(dt,[2,33]),t(W,[2,51],{30:196,22:U}),t(gt,[2,75],{22:[1,197]}),{22:[1,198]},{22:yt,24:mt,26:vt,38:bt,39:199,42:_t,52:G,66:X,67:Z,73:xt,81:wt,83:140,84:kt,85:151,86:Tt,87:Ct,88:Et,89:St,90:At,91:Mt,92:Nt,94:142,95:Dt,105:K,106:J,109:Bt,111:et,112:nt,113:Lt,114:Ot,115:148,122:rt,123:it,124:at,125:ot,126:st,127:ct},{22:yt,24:mt,26:vt,38:bt,42:_t,52:G,66:X,67:Z,73:xt,81:wt,82:[1,200],83:201,85:151,86:Tt,87:Ct,88:Et,89:St,90:At,91:Mt,92:Nt,94:142,95:Dt,105:K,106:J,109:Bt,111:et,112:nt,113:Lt,114:Ot,115:148,122:rt,123:it,124:at,125:ot,126:st,127:ct},t(Pt,[2,82]),t(Pt,[2,84]),t(Pt,[2,140]),t(Pt,[2,141]),t(Pt,[2,142]),t(Pt,[2,143]),t(Pt,[2,144]),t(Pt,[2,145]),t(Pt,[2,146]),t(Pt,[2,147]),t(Pt,[2,148]),t(Pt,[2,149]),t(Pt,[2,85]),t(Pt,[2,86]),t(Pt,[2,87]),t(Pt,[2,88]),t(Pt,[2,89]),t(Pt,[2,90]),t(Pt,[2,91]),t(Pt,[2,92]),t(Pt,[2,93]),t(Pt,[2,94]),t(Pt,[2,95]),{9:203,20:$,21:q,22:yt,23:H,24:mt,26:vt,38:bt,40:[1,202],42:_t,52:G,66:X,67:Z,73:xt,81:wt,83:201,85:151,86:Tt,87:Ct,88:Et,89:St,90:At,91:Mt,92:Nt,94:142,95:Dt,105:K,106:J,109:Bt,111:et,112:nt,113:Lt,114:Ot,115:148,122:rt,123:it,124:at,125:ot,126:st,127:ct},{18:18,19:19,20:s,21:c,22:u,23:l,32:24,33:25,34:26,35:27,36:28,37:29,38:h,42:[1,204],43:31,44:f,46:d,48:p,50:35,51:45,52:g,54:46,66:y,67:m,86:v,87:b,88:_,89:x,90:w,91:k,95:T,105:C,106:E,109:S,111:A,112:M,116:47,118:N,119:D,120:B,121:L,122:O,123:I,124:R,125:F,126:P,127:Y},{22:U,30:205},{22:[1,206],26:V,52:G,66:X,67:Z,91:Q,105:K,106:J,109:tt,111:et,112:nt,115:100,117:178,122:rt,123:it,124:at,125:ot,126:st,127:ct},{22:[1,207]},{22:[1,208]},{22:[1,209],106:[1,210]},t(jt,[2,123]),{22:[1,211]},{22:[1,212],26:V,52:G,66:X,67:Z,91:Q,105:K,106:J,109:tt,111:et,112:nt,115:100,117:178,122:rt,123:it,124:at,125:ot,126:st,127:ct},{22:[1,213],26:V,52:G,66:X,67:Z,91:Q,105:K,106:J,109:tt,111:et,112:nt,115:100,117:178,122:rt,123:it,124:at,125:ot,126:st,127:ct},{84:[1,214]},t(ft,[2,103],{22:[1,215]}),{84:[1,216],101:[1,217]},{84:[1,218]},t(Ft,[2,153]),{84:[1,219],101:[1,220]},t(ut,[2,57],{116:129,52:g,66:y,67:m,91:k,95:T,105:C,106:E,109:S,111:A,112:M,122:O,123:I,124:R,125:F,126:P,127:Y}),{22:yt,24:mt,26:vt,38:bt,41:[1,221],42:_t,52:G,66:X,67:Z,73:xt,81:wt,83:201,85:151,86:Tt,87:Ct,88:Et,89:St,90:At,91:Mt,92:Nt,94:142,95:Dt,105:K,106:J,109:Bt,111:et,112:nt,113:Lt,114:Ot,115:148,122:rt,123:it,124:at,125:ot,126:st,127:ct},{22:yt,24:mt,26:vt,38:bt,42:_t,52:G,56:[1,222],66:X,67:Z,73:xt,81:wt,83:201,85:151,86:Tt,87:Ct,88:Et,89:St,90:At,91:Mt,92:Nt,94:142,95:Dt,105:K,106:J,109:Bt,111:et,112:nt,113:Lt,114:Ot,115:148,122:rt,123:it,124:at,125:ot,126:st,127:ct},{22:yt,24:mt,26:vt,38:bt,39:223,42:_t,52:G,66:X,67:Z,73:xt,81:wt,83:140,84:kt,85:151,86:Tt,87:Ct,88:Et,89:St,90:At,91:Mt,92:Nt,94:142,95:Dt,105:K,106:J,109:Bt,111:et,112:nt,113:Lt,114:Ot,115:148,122:rt,123:it,124:at,125:ot,126:st,127:ct},{22:yt,24:mt,26:vt,38:bt,42:_t,52:G,58:[1,224],66:X,67:Z,73:xt,81:wt,83:201,85:151,86:Tt,87:Ct,88:Et,89:St,90:At,91:Mt,92:Nt,94:142,95:Dt,105:K,106:J,109:Bt,111:et,112:nt,113:Lt,114:Ot,115:148,122:rt,123:it,124:at,125:ot,126:st,127:ct},{22:yt,24:mt,26:vt,38:bt,42:_t,52:G,60:[1,225],66:X,67:Z,73:xt,81:wt,83:201,85:151,86:Tt,87:Ct,88:Et,89:St,90:At,91:Mt,92:Nt,94:142,95:Dt,105:K,106:J,109:Bt,111:et,112:nt,113:Lt,114:Ot,115:148,122:rt,123:it,124:at,125:ot,126:st,127:ct},{22:yt,24:mt,26:vt,38:bt,42:_t,52:G,62:[1,226],66:X,67:Z,73:xt,81:wt,83:201,85:151,86:Tt,87:Ct,88:Et,89:St,90:At,91:Mt,92:Nt,94:142,95:Dt,105:K,106:J,109:Bt,111:et,112:nt,113:Lt,114:Ot,115:148,122:rt,123:it,124:at,125:ot,126:st,127:ct},{22:yt,24:mt,26:vt,38:bt,42:_t,52:G,64:[1,227],66:X,67:Z,73:xt,81:wt,83:201,85:151,86:Tt,87:Ct,88:Et,89:St,90:At,91:Mt,92:Nt,94:142,95:Dt,105:K,106:J,109:Bt,111:et,112:nt,113:Lt,114:Ot,115:148,122:rt,123:it,124:at,125:ot,126:st,127:ct},{67:[1,228]},{22:yt,24:mt,26:vt,38:bt,42:_t,52:G,66:X,67:Z,70:[1,229],73:xt,81:wt,83:201,85:151,86:Tt,87:Ct,88:Et,89:St,90:At,91:Mt,92:Nt,94:142,95:Dt,105:K,106:J,109:Bt,111:et,112:nt,113:Lt,114:Ot,115:148,122:rt,123:it,124:at,125:ot,126:st,127:ct},{22:yt,24:mt,26:vt,38:bt,42:_t,52:G,66:X,67:Z,72:[1,230],73:xt,81:wt,83:201,85:151,86:Tt,87:Ct,88:Et,89:St,90:At,91:Mt,92:Nt,94:142,95:Dt,105:K,106:J,109:Bt,111:et,112:nt,113:Lt,114:Ot,115:148,122:rt,123:it,124:at,125:ot,126:st,127:ct},{22:yt,24:mt,26:vt,38:bt,39:231,42:_t,52:G,66:X,67:Z,73:xt,81:wt,83:140,84:kt,85:151,86:Tt,87:Ct,88:Et,89:St,90:At,91:Mt,92:Nt,94:142,95:Dt,105:K,106:J,109:Bt,111:et,112:nt,113:Lt,114:Ot,115:148,122:rt,123:it,124:at,125:ot,126:st,127:ct},{22:yt,24:mt,26:vt,38:bt,41:[1,232],42:_t,52:G,66:X,67:Z,73:xt,81:wt,83:201,85:151,86:Tt,87:Ct,88:Et,89:St,90:At,91:Mt,92:Nt,94:142,95:Dt,105:K,106:J,109:Bt,111:et,112:nt,113:Lt,114:Ot,115:148,122:rt,123:it,124:at,125:ot,126:st,127:ct},{22:yt,24:mt,26:vt,38:bt,42:_t,52:G,66:X,67:Z,73:xt,75:[1,233],77:[1,234],81:wt,83:201,85:151,86:Tt,87:Ct,88:Et,89:St,90:At,91:Mt,92:Nt,94:142,95:Dt,105:K,106:J,109:Bt,111:et,112:nt,113:Lt,114:Ot,115:148,122:rt,123:it,124:at,125:ot,126:st,127:ct},{22:yt,24:mt,26:vt,38:bt,42:_t,52:G,66:X,67:Z,73:xt,75:[1,236],77:[1,235],81:wt,83:201,85:151,86:Tt,87:Ct,88:Et,89:St,90:At,91:Mt,92:Nt,94:142,95:Dt,105:K,106:J,109:Bt,111:et,112:nt,113:Lt,114:Ot,115:148,122:rt,123:it,124:at,125:ot,126:st,127:ct},{9:237,20:$,21:q,23:H},t(W,[2,52],{52:Rt}),t(gt,[2,77]),t(gt,[2,76]),{22:yt,24:mt,26:vt,38:bt,42:_t,52:G,66:X,67:Z,68:[1,238],73:xt,81:wt,83:201,85:151,86:Tt,87:Ct,88:Et,89:St,90:At,91:Mt,92:Nt,94:142,95:Dt,105:K,106:J,109:Bt,111:et,112:nt,113:Lt,114:Ot,115:148,122:rt,123:it,124:at,125:ot,126:st,127:ct},t(gt,[2,79]),t(Pt,[2,83]),{22:yt,24:mt,26:vt,38:bt,39:239,42:_t,52:G,66:X,67:Z,73:xt,81:wt,83:140,84:kt,85:151,86:Tt,87:Ct,88:Et,89:St,90:At,91:Mt,92:Nt,94:142,95:Dt,105:K,106:J,109:Bt,111:et,112:nt,113:Lt,114:Ot,115:148,122:rt,123:it,124:at,125:ot,126:st,127:ct},t(It,o,{17:240}),t(z,[2,43]),{51:241,52:g,54:46,66:y,67:m,91:k,95:T,105:C,106:E,109:S,111:A,112:M,116:47,122:O,123:I,124:R,125:F,126:P,127:Y},{22:Ut,66:zt,67:$t,86:qt,96:242,102:Ht,105:Wt,107:243,108:244,109:Vt,110:Gt,111:Xt,112:Zt,113:Qt},{22:Ut,66:zt,67:$t,86:qt,96:256,102:Ht,105:Wt,107:243,108:244,109:Vt,110:Gt,111:Xt,112:Zt,113:Qt},{22:Ut,66:zt,67:$t,86:qt,96:257,102:Ht,104:[1,258],105:Wt,107:243,108:244,109:Vt,110:Gt,111:Xt,112:Zt,113:Qt},{22:Ut,66:zt,67:$t,86:qt,96:259,102:Ht,104:[1,260],105:Wt,107:243,108:244,109:Vt,110:Gt,111:Xt,112:Zt,113:Qt},{105:[1,261]},{22:Ut,66:zt,67:$t,86:qt,96:262,102:Ht,105:Wt,107:243,108:244,109:Vt,110:Gt,111:Xt,112:Zt,113:Qt},{22:Ut,66:zt,67:$t,86:qt,96:263,102:Ht,105:Wt,107:243,108:244,109:Vt,110:Gt,111:Xt,112:Zt,113:Qt},{26:V,52:G,66:X,67:Z,91:Q,97:264,105:K,106:J,109:tt,111:et,112:nt,115:100,117:98,122:rt,123:it,124:at,125:ot,126:st,127:ct},t(ft,[2,102]),{84:[1,265]},t(ft,[2,106],{22:[1,266]}),t(ft,[2,107]),t(ft,[2,110]),t(ft,[2,112],{22:[1,267]}),t(ft,[2,113]),t(lt,[2,58]),t(lt,[2,59]),{22:yt,24:mt,26:vt,38:bt,42:_t,52:G,58:[1,268],66:X,67:Z,73:xt,81:wt,83:201,85:151,86:Tt,87:Ct,88:Et,89:St,90:At,91:Mt,92:Nt,94:142,95:Dt,105:K,106:J,109:Bt,111:et,112:nt,113:Lt,114:Ot,115:148,122:rt,123:it,124:at,125:ot,126:st,127:ct},t(lt,[2,66]),t(lt,[2,61]),t(lt,[2,62]),t(lt,[2,63]),{66:[1,269]},t(lt,[2,65]),t(lt,[2,67]),{22:yt,24:mt,26:vt,38:bt,42:_t,52:G,66:X,67:Z,72:[1,270],73:xt,81:wt,83:201,85:151,86:Tt,87:Ct,88:Et,89:St,90:At,91:Mt,92:Nt,94:142,95:Dt,105:K,106:J,109:Bt,111:et,112:nt,113:Lt,114:Ot,115:148,122:rt,123:it,124:at,125:ot,126:st,127:ct},t(lt,[2,69]),t(lt,[2,70]),t(lt,[2,72]),t(lt,[2,71]),t(lt,[2,73]),t(Yt,[2,4]),t([22,52,66,67,91,95,105,106,109,111,112,122,123,124,125,126,127],[2,81]),{22:yt,24:mt,26:vt,38:bt,41:[1,271],42:_t,52:G,66:X,67:Z,73:xt,81:wt,83:201,85:151,86:Tt,87:Ct,88:Et,89:St,90:At,91:Mt,92:Nt,94:142,95:Dt,105:K,106:J,109:Bt,111:et,112:nt,113:Lt,114:Ot,115:148,122:rt,123:it,124:at,125:ot,126:st,127:ct},{18:18,19:19,20:s,21:c,22:u,23:l,32:24,33:25,34:26,35:27,36:28,37:29,38:h,42:[1,272],43:31,44:f,46:d,48:p,50:35,51:45,52:g,54:46,66:y,67:m,86:v,87:b,88:_,89:x,90:w,91:k,95:T,105:C,106:E,109:S,111:A,112:M,116:47,118:N,119:D,120:B,121:L,122:O,123:I,124:R,125:F,126:P,127:Y},t(ut,[2,56]),t(ft,[2,115],{106:Kt}),t(Jt,[2,125],{108:274,22:Ut,66:zt,67:$t,86:qt,102:Ht,105:Wt,109:Vt,110:Gt,111:Xt,112:Zt,113:Qt}),t(te,[2,127]),t(te,[2,129]),t(te,[2,130]),t(te,[2,131]),t(te,[2,132]),t(te,[2,133]),t(te,[2,134]),t(te,[2,135]),t(te,[2,136]),t(te,[2,137]),t(te,[2,138]),t(te,[2,139]),t(ft,[2,116],{106:Kt}),t(ft,[2,117],{106:Kt}),{22:[1,275]},t(ft,[2,118],{106:Kt}),{22:[1,276]},t(jt,[2,124]),t(ft,[2,98],{106:Kt}),t(ft,[2,99],{106:Kt}),t(ft,[2,100],{115:100,117:178,26:V,52:G,66:X,67:Z,91:Q,105:K,106:J,109:tt,111:et,112:nt,122:rt,123:it,124:at,125:ot,126:st,127:ct}),t(ft,[2,104]),{101:[1,277]},{101:[1,278]},{58:[1,279]},{68:[1,280]},{72:[1,281]},{9:282,20:$,21:q,23:H},t(z,[2,42]),{22:Ut,66:zt,67:$t,86:qt,102:Ht,105:Wt,107:283,108:244,109:Vt,110:Gt,111:Xt,112:Zt,113:Qt},t(te,[2,128]),{26:V,52:G,66:X,67:Z,91:Q,97:284,105:K,106:J,109:tt,111:et,112:nt,115:100,117:98,122:rt,123:it,124:at,125:ot,126:st,127:ct},{26:V,52:G,66:X,67:Z,91:Q,97:285,105:K,106:J,109:tt,111:et,112:nt,115:100,117:98,122:rt,123:it,124:at,125:ot,126:st,127:ct},t(ft,[2,108]),t(ft,[2,114]),t(lt,[2,60]),{22:yt,24:mt,26:vt,38:bt,39:286,42:_t,52:G,66:X,67:Z,73:xt,81:wt,83:140,84:kt,85:151,86:Tt,87:Ct,88:Et,89:St,90:At,91:Mt,92:Nt,94:142,95:Dt,105:K,106:J,109:Bt,111:et,112:nt,113:Lt,114:Ot,115:148,122:rt,123:it,124:at,125:ot,126:st,127:ct},t(lt,[2,68]),t(It,o,{17:287}),t(Jt,[2,126],{108:274,22:Ut,66:zt,67:$t,86:qt,102:Ht,105:Wt,109:Vt,110:Gt,111:Xt,112:Zt,113:Qt}),t(ft,[2,121],{115:100,117:178,22:[1,288],26:V,52:G,66:X,67:Z,91:Q,105:K,106:J,109:tt,111:et,112:nt,122:rt,123:it,124:at,125:ot,126:st,127:ct}),t(ft,[2,122],{115:100,117:178,22:[1,289],26:V,52:G,66:X,67:Z,91:Q,105:K,106:J,109:tt,111:et,112:nt,122:rt,123:it,124:at,125:ot,126:st,127:ct}),{22:yt,24:mt,26:vt,38:bt,41:[1,290],42:_t,52:G,66:X,67:Z,73:xt,81:wt,83:201,85:151,86:Tt,87:Ct,88:Et,89:St,90:At,91:Mt,92:Nt,94:142,95:Dt,105:K,106:J,109:Bt,111:et,112:nt,113:Lt,114:Ot,115:148,122:rt,123:it,124:at,125:ot,126:st,127:ct},{18:18,19:19,20:s,21:c,22:u,23:l,32:24,33:25,34:26,35:27,36:28,37:29,38:h,42:[1,291],43:31,44:f,46:d,48:p,50:35,51:45,52:g,54:46,66:y,67:m,86:v,87:b,88:_,89:x,90:w,91:k,95:T,105:C,106:E,109:S,111:A,112:M,116:47,118:N,119:D,120:B,121:L,122:O,123:I,124:R,125:F,126:P,127:Y},{22:Ut,66:zt,67:$t,86:qt,96:292,102:Ht,105:Wt,107:243,108:244,109:Vt,110:Gt,111:Xt,112:Zt,113:Qt},{22:Ut,66:zt,67:$t,86:qt,96:293,102:Ht,105:Wt,107:243,108:244,109:Vt,110:Gt,111:Xt,112:Zt,113:Qt},t(lt,[2,64]),t(z,[2,41]),t(ft,[2,119],{106:Kt}),t(ft,[2,120],{106:Kt})],defaultActions:{2:[2,1],9:[2,5],10:[2,2],132:[2,7]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",c=0,u=0,l=0,h=2,f=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),g={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(g.yy[y]=this.yy[y]);p.setInput(t,g.yy),g.yy.lexer=p,g.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var m=p.yylloc;a.push(m);var v=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||f)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var _,x,w,k,T,C,E,S,A,M={};;){if(w=n[n.length-1],this.defaultActions[w]?k=this.defaultActions[w]:(null==_&&(_=b()),k=o[w]&&o[w][_]),void 0===k||!k.length||!k[0]){var N="";for(C in A=[],o[w])this.terminals_[C]&&C>h&&A.push("'"+this.terminals_[C]+"'");N=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+A.join(", ")+", got '"+(this.terminals_[_]||_)+"'":"Parse error on line "+(c+1)+": Unexpected "+(_==f?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(N,{text:p.match,token:this.terminals_[_]||_,line:p.yylineno,loc:m,expected:A})}if(k[0]instanceof Array&&k.length>1)throw new Error("Parse Error: multiple actions possible at state: "+w+", token: "+_);switch(k[0]){case 1:n.push(_),i.push(p.yytext),a.push(p.yylloc),n.push(k[1]),_=null,x?(_=x,x=null):(u=p.yyleng,s=p.yytext,c=p.yylineno,m=p.yylloc,l>0&&l--);break;case 2:if(E=this.productions_[k[1]][1],M.$=i[i.length-E],M._$={first_line:a[a.length-(E||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(E||1)].first_column,last_column:a[a.length-1].last_column},v&&(M._$.range=[a[a.length-(E||1)].range[0],a[a.length-1].range[1]]),void 0!==(T=this.performAction.apply(M,[s,u,c,g.yy,k[1],i,a].concat(d))))return T;E&&(n=n.slice(0,-1*E*2),i=i.slice(0,-1*E),a=a.slice(0,-1*E)),n.push(this.productions_[k[1]][0]),i.push(M.$),a.push(M._$),S=o[n[n.length-2]][n[n.length-1]],n.push(S);break;case 3:return!0}}return!0}},ne={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;a<i.length;a++)if((n=this._input.match(this.rules[i[a]]))&&(!e||n[0].length>e[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),12;case 1:return this.begin("type_directive"),13;case 2:return this.popState(),this.begin("arg_directive"),10;case 3:return this.popState(),this.popState(),15;case 4:return 14;case 5:case 6:break;case 7:return this.begin("acc_title"),44;case 8:return this.popState(),"acc_title_value";case 9:return this.begin("acc_descr"),46;case 10:return this.popState(),"acc_descr_value";case 11:this.begin("acc_descr_multiline");break;case 12:case 15:case 24:case 27:case 30:case 33:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:this.begin("string");break;case 16:return"STR";case 17:return 86;case 18:return 95;case 19:return 87;case 20:return 104;case 21:return 88;case 22:return 89;case 23:this.begin("href");break;case 25:return 100;case 26:this.begin("callbackname");break;case 28:this.popState(),this.begin("callbackargs");break;case 29:return 98;case 31:return 99;case 32:this.begin("click");break;case 34:return 90;case 35:case 36:return t.lex.firstGraph()&&this.begin("dir"),24;case 37:return 38;case 38:return 42;case 39:case 40:case 41:case 42:return 101;case 43:return this.popState(),25;case 44:case 45:case 46:case 47:case 48:case 49:case 50:case 51:case 52:case 53:return this.popState(),26;case 54:return 118;case 55:return 119;case 56:return 120;case 57:return 121;case 58:return 105;case 59:return 111;case 60:return 53;case 61:return 67;case 62:return 52;case 63:return 20;case 64:return 106;case 65:return 126;case 66:case 67:case 68:return 82;case 69:case 70:case 71:return 81;case 72:return 59;case 73:return 60;case 74:return 61;case 75:return 62;case 76:return 63;case 77:return 64;case 78:return 65;case 79:return 69;case 80:return 70;case 81:return 55;case 82:return 56;case 83:return 109;case 84:return 112;case 85:return 127;case 86:return 124;case 87:return 113;case 88:case 89:return 125;case 90:return 114;case 91:return 73;case 92:return 92;case 93:return"SEP";case 94:return 91;case 95:return 66;case 96:return 75;case 97:return 74;case 98:return 77;case 99:return 76;case 100:return 122;case 101:return 123;case 102:return 68;case 103:return 57;case 104:return 58;case 105:return 40;case 106:return 41;case 107:return 71;case 108:return 72;case 109:return 133;case 110:return 21;case 111:return 22;case 112:return 23}},rules:[/^(?:%%\{)/,/^(?:((?:(?!\}%%)[^:.])*))/,/^(?::)/,/^(?:\}%%)/,/^(?:((?:(?!\}%%).|\n)*))/,/^(?:%%(?!\{)[^\n]*)/,/^(?:[^\}]%%[^\n]*)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:style\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\b)/,/^(?:class\b)/,/^(?:href[\s]+["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:click[\s]+)/,/^(?:[\s\n])/,/^(?:[^\s\n]*)/,/^(?:graph\b)/,/^(?:flowchart\b)/,/^(?:subgraph\b)/,/^(?:end\b\s*)/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:(\r?\n)*\s*\n)/,/^(?:\s*LR\b)/,/^(?:\s*RL\b)/,/^(?:\s*TB\b)/,/^(?:\s*BT\b)/,/^(?:\s*TD\b)/,/^(?:\s*BR\b)/,/^(?:\s*<)/,/^(?:\s*>)/,/^(?:\s*\^)/,/^(?:\s*v\b)/,/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::::)/,/^(?::)/,/^(?:&)/,/^(?:;)/,/^(?:,)/,/^(?:\*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:\(-)/,/^(?:-\))/,/^(?:\(\[)/,/^(?:\]\))/,/^(?:\[\[)/,/^(?:\]\])/,/^(?:\[\|)/,/^(?:\[\()/,/^(?:\)\])/,/^(?:\(\(\()/,/^(?:\)\)\))/,/^(?:-)/,/^(?:\.)/,/^(?:[\_])/,/^(?:\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:<)/,/^(?:>)/,/^(?:\^)/,/^(?:\\\|)/,/^(?:v\b)/,/^(?:[A-Za-z]+)/,/^(?:\\\])/,/^(?:\[\/)/,/^(?:\/\])/,/^(?:\[\\)/,/^(?:[!"#$%&'*+,-.`?\\_/])/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\|)/,/^(?:\()/,/^(?:\))/,/^(?:\[)/,/^(?:\])/,/^(?:\{)/,/^(?:\})/,/^(?:")/,/^(?:(\r?\n)+)/,/^(?:\s)/,/^(?:$)/],conditions:{close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},callbackargs:{rules:[30,31],inclusive:!1},callbackname:{rules:[27,28,29],inclusive:!1},href:{rules:[24,25],inclusive:!1},click:{rules:[33,34],inclusive:!1},vertex:{rules:[],inclusive:!1},dir:{rules:[43,44,45,46,47,48,49,50,51,52,53],inclusive:!1},acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},string:{rules:[15,16],inclusive:!1},INITIAL:{rules:[0,5,6,7,9,11,14,17,18,19,20,21,22,23,26,32,35,36,37,38,39,40,41,42,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112],inclusive:!0}}};function re(){this.yy={}}return ee.lexer=ne,re.prototype=ee,ee.Parser=re,new re}();e.parser=r,e.Parser=r.Parser,e.parse=function(){return r.parse.apply(r,arguments)},e.main=function(t){t[1]||(console.log("Usage: "+t[0]+" FILE"),process.exit(1));var r=n(5354).readFileSync(n(6470).normalize(t[1]),"utf8");return e.parser.parse(r)},n.c[n.s]===t&&e.main(process.argv.slice(1))},9959:(t,e,n)=>{t=n.nmd(t);var r=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[1,3],n=[1,5],r=[7,9,11,12,13,14,15,16,17,18,19,20,22,24,25,27,34,39],i=[1,15],a=[1,16],o=[1,17],s=[1,18],c=[1,19],u=[1,20],l=[1,21],h=[1,22],f=[1,23],d=[1,24],p=[1,25],g=[1,26],y=[1,28],m=[1,30],v=[1,33],b=[5,7,9,11,12,13,14,15,16,17,18,19,20,22,24,25,27,34,39],_={trace:function(){},yy:{},symbols_:{error:2,start:3,directive:4,gantt:5,document:6,EOF:7,line:8,SPACE:9,statement:10,NL:11,dateFormat:12,inclusiveEndDates:13,topAxis:14,axisFormat:15,excludes:16,includes:17,todayMarker:18,title:19,acc_title:20,acc_title_value:21,acc_descr:22,acc_descr_value:23,acc_descr_multiline_value:24,section:25,clickStatement:26,taskTxt:27,taskData:28,openDirective:29,typeDirective:30,closeDirective:31,":":32,argDirective:33,click:34,callbackname:35,callbackargs:36,href:37,clickStatementDebug:38,open_directive:39,type_directive:40,arg_directive:41,close_directive:42,$accept:0,$end:1},terminals_:{2:"error",5:"gantt",7:"EOF",9:"SPACE",11:"NL",12:"dateFormat",13:"inclusiveEndDates",14:"topAxis",15:"axisFormat",16:"excludes",17:"includes",18:"todayMarker",19:"title",20:"acc_title",21:"acc_title_value",22:"acc_descr",23:"acc_descr_value",24:"acc_descr_multiline_value",25:"section",27:"taskTxt",28:"taskData",32:":",34:"click",35:"callbackname",36:"callbackargs",37:"href",39:"open_directive",40:"type_directive",41:"arg_directive",42:"close_directive"},productions_:[0,[3,2],[3,3],[6,0],[6,2],[8,2],[8,1],[8,1],[8,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,2],[10,2],[10,1],[10,1],[10,1],[10,2],[10,1],[4,4],[4,6],[26,2],[26,3],[26,3],[26,4],[26,3],[26,4],[26,2],[38,2],[38,3],[38,3],[38,4],[38,3],[38,4],[38,2],[29,1],[30,1],[33,1],[31,1]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 2:return a[s-1];case 3:case 7:case 8:this.$=[];break;case 4:a[s-1].push(a[s]),this.$=a[s-1];break;case 5:case 6:this.$=a[s];break;case 9:r.setDateFormat(a[s].substr(11)),this.$=a[s].substr(11);break;case 10:r.enableInclusiveEndDates(),this.$=a[s].substr(18);break;case 11:r.TopAxis(),this.$=a[s].substr(8);break;case 12:r.setAxisFormat(a[s].substr(11)),this.$=a[s].substr(11);break;case 13:r.setExcludes(a[s].substr(9)),this.$=a[s].substr(9);break;case 14:r.setIncludes(a[s].substr(9)),this.$=a[s].substr(9);break;case 15:r.setTodayMarker(a[s].substr(12)),this.$=a[s].substr(12);break;case 16:r.setTitle(a[s].substr(6)),this.$=a[s].substr(6);break;case 17:this.$=a[s].trim(),r.setTitle(this.$);break;case 18:case 19:this.$=a[s].trim(),r.setAccDescription(this.$);break;case 20:r.addSection(a[s].substr(8)),this.$=a[s].substr(8);break;case 22:r.addTask(a[s-1],a[s]),this.$="task";break;case 26:this.$=a[s-1],r.setClickEvent(a[s-1],a[s],null);break;case 27:this.$=a[s-2],r.setClickEvent(a[s-2],a[s-1],a[s]);break;case 28:this.$=a[s-2],r.setClickEvent(a[s-2],a[s-1],null),r.setLink(a[s-2],a[s]);break;case 29:this.$=a[s-3],r.setClickEvent(a[s-3],a[s-2],a[s-1]),r.setLink(a[s-3],a[s]);break;case 30:this.$=a[s-2],r.setClickEvent(a[s-2],a[s],null),r.setLink(a[s-2],a[s-1]);break;case 31:this.$=a[s-3],r.setClickEvent(a[s-3],a[s-1],a[s]),r.setLink(a[s-3],a[s-2]);break;case 32:this.$=a[s-1],r.setLink(a[s-1],a[s]);break;case 33:case 39:this.$=a[s-1]+" "+a[s];break;case 34:case 35:case 37:this.$=a[s-2]+" "+a[s-1]+" "+a[s];break;case 36:case 38:this.$=a[s-3]+" "+a[s-2]+" "+a[s-1]+" "+a[s];break;case 40:r.parseDirective("%%{","open_directive");break;case 41:r.parseDirective(a[s],"type_directive");break;case 42:a[s]=a[s].trim().replace(/'/g,'"'),r.parseDirective(a[s],"arg_directive");break;case 43:r.parseDirective("}%%","close_directive","gantt")}},table:[{3:1,4:2,5:e,29:4,39:n},{1:[3]},{3:6,4:2,5:e,29:4,39:n},t(r,[2,3],{6:7}),{30:8,40:[1,9]},{40:[2,40]},{1:[2,1]},{4:29,7:[1,10],8:11,9:[1,12],10:13,11:[1,14],12:i,13:a,14:o,15:s,16:c,17:u,18:l,19:h,20:f,22:d,24:p,25:g,26:27,27:y,29:4,34:m,39:n},{31:31,32:[1,32],42:v},t([32,42],[2,41]),t(r,[2,8],{1:[2,2]}),t(r,[2,4]),{4:29,10:34,12:i,13:a,14:o,15:s,16:c,17:u,18:l,19:h,20:f,22:d,24:p,25:g,26:27,27:y,29:4,34:m,39:n},t(r,[2,6]),t(r,[2,7]),t(r,[2,9]),t(r,[2,10]),t(r,[2,11]),t(r,[2,12]),t(r,[2,13]),t(r,[2,14]),t(r,[2,15]),t(r,[2,16]),{21:[1,35]},{23:[1,36]},t(r,[2,19]),t(r,[2,20]),t(r,[2,21]),{28:[1,37]},t(r,[2,23]),{35:[1,38],37:[1,39]},{11:[1,40]},{33:41,41:[1,42]},{11:[2,43]},t(r,[2,5]),t(r,[2,17]),t(r,[2,18]),t(r,[2,22]),t(r,[2,26],{36:[1,43],37:[1,44]}),t(r,[2,32],{35:[1,45]}),t(b,[2,24]),{31:46,42:v},{42:[2,42]},t(r,[2,27],{37:[1,47]}),t(r,[2,28]),t(r,[2,30],{36:[1,48]}),{11:[1,49]},t(r,[2,29]),t(r,[2,31]),t(b,[2,25])],defaultActions:{5:[2,40],6:[2,1],33:[2,43],42:[2,42]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",c=0,u=0,l=0,h=2,f=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),g={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(g.yy[y]=this.yy[y]);p.setInput(t,g.yy),g.yy.lexer=p,g.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var m=p.yylloc;a.push(m);var v=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||f)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var _,x,w,k,T,C,E,S,A,M={};;){if(w=n[n.length-1],this.defaultActions[w]?k=this.defaultActions[w]:(null==_&&(_=b()),k=o[w]&&o[w][_]),void 0===k||!k.length||!k[0]){var N="";for(C in A=[],o[w])this.terminals_[C]&&C>h&&A.push("'"+this.terminals_[C]+"'");N=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+A.join(", ")+", got '"+(this.terminals_[_]||_)+"'":"Parse error on line "+(c+1)+": Unexpected "+(_==f?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(N,{text:p.match,token:this.terminals_[_]||_,line:p.yylineno,loc:m,expected:A})}if(k[0]instanceof Array&&k.length>1)throw new Error("Parse Error: multiple actions possible at state: "+w+", token: "+_);switch(k[0]){case 1:n.push(_),i.push(p.yytext),a.push(p.yylloc),n.push(k[1]),_=null,x?(_=x,x=null):(u=p.yyleng,s=p.yytext,c=p.yylineno,m=p.yylloc,l>0&&l--);break;case 2:if(E=this.productions_[k[1]][1],M.$=i[i.length-E],M._$={first_line:a[a.length-(E||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(E||1)].first_column,last_column:a[a.length-1].last_column},v&&(M._$.range=[a[a.length-(E||1)].range[0],a[a.length-1].range[1]]),void 0!==(T=this.performAction.apply(M,[s,u,c,g.yy,k[1],i,a].concat(d))))return T;E&&(n=n.slice(0,-1*E*2),i=i.slice(0,-1*E),a=a.slice(0,-1*E)),n.push(this.productions_[k[1]][0]),i.push(M.$),a.push(M._$),S=o[n[n.length-2]][n[n.length-1]],n.push(S);break;case 3:return!0}}return!0}},x={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;a<i.length;a++)if((n=this._input.match(this.rules[i[a]]))&&(!e||n[0].length>e[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),39;case 1:return this.begin("type_directive"),40;case 2:return this.popState(),this.begin("arg_directive"),32;case 3:return this.popState(),this.popState(),42;case 4:return 41;case 5:return this.begin("acc_title"),20;case 6:return this.popState(),"acc_title_value";case 7:return this.begin("acc_descr"),22;case 8:return this.popState(),"acc_descr_value";case 9:this.begin("acc_descr_multiline");break;case 10:case 20:case 23:case 26:case 29:this.popState();break;case 11:return"acc_descr_multiline_value";case 12:case 13:case 14:case 16:case 17:case 18:break;case 15:return 11;case 19:this.begin("href");break;case 21:return 37;case 22:this.begin("callbackname");break;case 24:this.popState(),this.begin("callbackargs");break;case 25:return 35;case 27:return 36;case 28:this.begin("click");break;case 30:return 34;case 31:return 5;case 32:return 12;case 33:return 13;case 34:return 14;case 35:return 15;case 36:return 17;case 37:return 16;case 38:return 18;case 39:return"date";case 40:return 19;case 41:return"accDescription";case 42:return 25;case 43:return 27;case 44:return 28;case 45:return 32;case 46:return 7;case 47:return"INVALID"}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:%%(?!\{)*[^\n]*)/i,/^(?:[^\}]%%*[^\n]*)/i,/^(?:%%*[^\n]*[\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:href[\s]+["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:call[\s]+)/i,/^(?:\([\s]*\))/i,/^(?:\()/i,/^(?:[^(]*)/i,/^(?:\))/i,/^(?:[^)]*)/i,/^(?:click[\s]+)/i,/^(?:[\s\n])/i,/^(?:[^\s\n]*)/i,/^(?:gantt\b)/i,/^(?:dateFormat\s[^#\n;]+)/i,/^(?:inclusiveEndDates\b)/i,/^(?:topAxis\b)/i,/^(?:axisFormat\s[^#\n;]+)/i,/^(?:includes\s[^#\n;]+)/i,/^(?:excludes\s[^#\n;]+)/i,/^(?:todayMarker\s[^\n;]+)/i,/^(?:\d\d\d\d-\d\d-\d\d\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:accDescription\s[^#\n;]+)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[10,11],inclusive:!1},acc_descr:{rules:[8],inclusive:!1},acc_title:{rules:[6],inclusive:!1},close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},callbackargs:{rules:[26,27],inclusive:!1},callbackname:{rules:[23,24,25],inclusive:!1},href:{rules:[20,21],inclusive:!1},click:{rules:[29,30],inclusive:!1},INITIAL:{rules:[0,5,7,9,12,13,14,15,16,17,18,19,22,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47],inclusive:!0}}};function w(){this.yy={}}return _.lexer=x,w.prototype=_,_.Parser=w,new w}();e.parser=r,e.Parser=r.Parser,e.parse=function(){return r.parse.apply(r,arguments)},e.main=function(t){t[1]||(console.log("Usage: "+t[0]+" FILE"),process.exit(1));var r=n(6878).readFileSync(n(6470).normalize(t[1]),"utf8");return e.parser.parse(r)},n.c[n.s]===t&&e.main(process.argv.slice(1))},2553:(t,e,n)=>{t=n.nmd(t);var r=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[1,4],n=[1,7],r=[1,5],i=[1,9],a=[1,6],o=[2,6],s=[1,16],c=[6,8,14,19,21,23,24,26,28,31,34,47,51],u=[8,14,19,21,23,24,26,28,31,34],l=[8,13,14,19,21,23,24,26,28,31,34],h=[1,26],f=[6,8,14,47,51],d=[8,14,51],p=[1,61],g=[1,62],y=[1,63],m=[8,14,32,38,39,51],v={trace:function(){},yy:{},symbols_:{error:2,start:3,eol:4,directive:5,GG:6,document:7,EOF:8,":":9,DIR:10,options:11,body:12,OPT:13,NL:14,line:15,statement:16,commitStatement:17,mergeStatement:18,acc_title:19,acc_title_value:20,acc_descr:21,acc_descr_value:22,acc_descr_multiline_value:23,section:24,branchStatement:25,CHECKOUT:26,ID:27,BRANCH:28,ORDER:29,NUM:30,MERGE:31,COMMIT_TAG:32,STR:33,COMMIT:34,commit_arg:35,COMMIT_TYPE:36,commitType:37,COMMIT_ID:38,COMMIT_MSG:39,NORMAL:40,REVERSE:41,HIGHLIGHT:42,openDirective:43,typeDirective:44,closeDirective:45,argDirective:46,open_directive:47,type_directive:48,arg_directive:49,close_directive:50,";":51,$accept:0,$end:1},terminals_:{2:"error",6:"GG",8:"EOF",9:":",10:"DIR",13:"OPT",14:"NL",19:"acc_title",20:"acc_title_value",21:"acc_descr",22:"acc_descr_value",23:"acc_descr_multiline_value",24:"section",26:"CHECKOUT",27:"ID",28:"BRANCH",29:"ORDER",30:"NUM",31:"MERGE",32:"COMMIT_TAG",33:"STR",34:"COMMIT",36:"COMMIT_TYPE",38:"COMMIT_ID",39:"COMMIT_MSG",40:"NORMAL",41:"REVERSE",42:"HIGHLIGHT",47:"open_directive",48:"type_directive",49:"arg_directive",50:"close_directive",51:";"},productions_:[0,[3,2],[3,2],[3,3],[3,4],[3,5],[7,0],[7,2],[11,2],[11,1],[12,0],[12,2],[15,2],[15,1],[16,1],[16,1],[16,2],[16,2],[16,1],[16,1],[16,1],[16,2],[25,2],[25,4],[18,2],[18,4],[17,2],[17,3],[17,3],[17,5],[17,5],[17,3],[17,5],[17,5],[17,5],[17,5],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,3],[17,5],[17,5],[17,5],[17,5],[17,5],[17,5],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[35,0],[35,1],[37,1],[37,1],[37,1],[5,3],[5,5],[43,1],[44,1],[46,1],[45,1],[4,1],[4,1],[4,1]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 3:return a[s];case 4:return a[s-1];case 5:return r.setDirection(a[s-3]),a[s-1];case 7:r.setOptions(a[s-1]),this.$=a[s];break;case 8:a[s-1]+=a[s],this.$=a[s-1];break;case 10:this.$=[];break;case 11:a[s-1].push(a[s]),this.$=a[s-1];break;case 12:this.$=a[s-1];break;case 16:this.$=a[s].trim(),r.setTitle(this.$);break;case 17:case 18:this.$=a[s].trim(),r.setAccDescription(this.$);break;case 19:r.addSection(a[s].substr(8)),this.$=a[s].substr(8);break;case 21:r.checkout(a[s]);break;case 22:r.branch(a[s]);break;case 23:r.branch(a[s-2],a[s]);break;case 24:r.merge(a[s]);break;case 25:r.merge(a[s-2],a[s]);break;case 26:r.commit(a[s]);break;case 27:r.commit("","",r.commitType.NORMAL,a[s]);break;case 28:r.commit("","",a[s],"");break;case 29:r.commit("","",a[s],a[s-2]);break;case 30:r.commit("","",a[s-2],a[s]);break;case 31:r.commit("",a[s],r.commitType.NORMAL,"");break;case 32:r.commit("",a[s-2],r.commitType.NORMAL,a[s]);break;case 33:r.commit("",a[s],r.commitType.NORMAL,a[s-2]);break;case 34:r.commit("",a[s-2],a[s],"");break;case 35:r.commit("",a[s],a[s-2],"");break;case 36:r.commit("",a[s-4],a[s-2],a[s]);break;case 37:r.commit("",a[s-4],a[s],a[s-2]);break;case 38:r.commit("",a[s-2],a[s-4],a[s]);break;case 39:r.commit("",a[s],a[s-4],a[s-2]);break;case 40:r.commit("",a[s],a[s-2],a[s-4]);break;case 41:r.commit("",a[s-2],a[s],a[s-4]);break;case 42:r.commit(a[s],"",r.commitType.NORMAL,"");break;case 43:r.commit(a[s],"",r.commitType.NORMAL,a[s-2]);break;case 44:r.commit(a[s-2],"",r.commitType.NORMAL,a[s]);break;case 45:r.commit(a[s-2],"",a[s],"");break;case 46:r.commit(a[s],"",a[s-2],"");break;case 47:r.commit(a[s],a[s-2],r.commitType.NORMAL,"");break;case 48:r.commit(a[s-2],a[s],r.commitType.NORMAL,"");break;case 49:r.commit(a[s-4],"",a[s-2],a[s]);break;case 50:r.commit(a[s-4],"",a[s],a[s-2]);break;case 51:r.commit(a[s-2],"",a[s-4],a[s]);break;case 52:r.commit(a[s],"",a[s-4],a[s-2]);break;case 53:r.commit(a[s],"",a[s-2],a[s-4]);break;case 54:r.commit(a[s-2],"",a[s],a[s-4]);break;case 55:r.commit(a[s-4],a[s],a[s-2],"");break;case 56:r.commit(a[s-4],a[s-2],a[s],"");break;case 57:r.commit(a[s-2],a[s],a[s-4],"");break;case 58:r.commit(a[s],a[s-2],a[s-4],"");break;case 59:r.commit(a[s],a[s-4],a[s-2],"");break;case 60:r.commit(a[s-2],a[s-4],a[s],"");break;case 61:r.commit(a[s-4],a[s],r.commitType.NORMAL,a[s-2]);break;case 62:r.commit(a[s-4],a[s-2],r.commitType.NORMAL,a[s]);break;case 63:r.commit(a[s-2],a[s],r.commitType.NORMAL,a[s-4]);break;case 64:r.commit(a[s],a[s-2],r.commitType.NORMAL,a[s-4]);break;case 65:r.commit(a[s],a[s-4],r.commitType.NORMAL,a[s-2]);break;case 66:r.commit(a[s-2],a[s-4],r.commitType.NORMAL,a[s]);break;case 67:r.commit(a[s-6],a[s-4],a[s-2],a[s]);break;case 68:r.commit(a[s-6],a[s-4],a[s],a[s-2]);break;case 69:r.commit(a[s-6],a[s-2],a[s-4],a[s]);break;case 70:r.commit(a[s-6],a[s],a[s-4],a[s-2]);break;case 71:r.commit(a[s-6],a[s-2],a[s],a[s-4]);break;case 72:r.commit(a[s-6],a[s],a[s-2],a[s-4]);break;case 73:r.commit(a[s-4],a[s-6],a[s-2],a[s]);break;case 74:r.commit(a[s-4],a[s-6],a[s],a[s-2]);break;case 75:r.commit(a[s-2],a[s-6],a[s-4],a[s]);break;case 76:r.commit(a[s],a[s-6],a[s-4],a[s-2]);break;case 77:r.commit(a[s-2],a[s-6],a[s],a[s-4]);break;case 78:r.commit(a[s],a[s-6],a[s-2],a[s-4]);break;case 79:r.commit(a[s],a[s-4],a[s-2],a[s-6]);break;case 80:r.commit(a[s-2],a[s-4],a[s],a[s-6]);break;case 81:r.commit(a[s],a[s-2],a[s-4],a[s-6]);break;case 82:r.commit(a[s-2],a[s],a[s-4],a[s-6]);break;case 83:r.commit(a[s-4],a[s-2],a[s],a[s-6]);break;case 84:r.commit(a[s-4],a[s],a[s-2],a[s-6]);break;case 85:r.commit(a[s-2],a[s-4],a[s-6],a[s]);break;case 86:r.commit(a[s],a[s-4],a[s-6],a[s-2]);break;case 87:r.commit(a[s-2],a[s],a[s-6],a[s-4]);break;case 88:r.commit(a[s],a[s-2],a[s-6],a[s-4]);break;case 89:r.commit(a[s-4],a[s-2],a[s-6],a[s]);break;case 90:r.commit(a[s-4],a[s],a[s-6],a[s-2]);break;case 91:this.$="";break;case 92:this.$=a[s];break;case 93:this.$=r.commitType.NORMAL;break;case 94:this.$=r.commitType.REVERSE;break;case 95:this.$=r.commitType.HIGHLIGHT;break;case 98:r.parseDirective("%%{","open_directive");break;case 99:r.parseDirective(a[s],"type_directive");break;case 100:a[s]=a[s].trim().replace(/'/g,'"'),r.parseDirective(a[s],"arg_directive");break;case 101:r.parseDirective("}%%","close_directive","gitGraph")}},table:[{3:1,4:2,5:3,6:e,8:n,14:r,43:8,47:i,51:a},{1:[3]},{3:10,4:2,5:3,6:e,8:n,14:r,43:8,47:i,51:a},{3:11,4:2,5:3,6:e,8:n,14:r,43:8,47:i,51:a},{7:12,8:o,9:[1,13],10:[1,14],11:15,14:s},t(c,[2,102]),t(c,[2,103]),t(c,[2,104]),{44:17,48:[1,18]},{48:[2,98]},{1:[2,1]},{1:[2,2]},{8:[1,19]},{7:20,8:o,11:15,14:s},{9:[1,21]},t(u,[2,10],{12:22,13:[1,23]}),t(l,[2,9]),{9:[1,25],45:24,50:h},t([9,50],[2,99]),{1:[2,3]},{8:[1,27]},{7:28,8:o,11:15,14:s},{8:[2,7],14:[1,31],15:29,16:30,17:32,18:33,19:[1,34],21:[1,35],23:[1,36],24:[1,37],25:38,26:[1,39],28:[1,42],31:[1,41],34:[1,40]},t(l,[2,8]),t(f,[2,96]),{46:43,49:[1,44]},t(f,[2,101]),{1:[2,4]},{8:[1,45]},t(u,[2,11]),{4:46,8:n,14:r,51:a},t(u,[2,13]),t(d,[2,14]),t(d,[2,15]),{20:[1,47]},{22:[1,48]},t(d,[2,18]),t(d,[2,19]),t(d,[2,20]),{27:[1,49]},t(d,[2,91],{35:50,32:[1,51],33:[1,55],36:[1,52],38:[1,53],39:[1,54]}),{27:[1,56]},{27:[1,57]},{45:58,50:h},{50:[2,100]},{1:[2,5]},t(u,[2,12]),t(d,[2,16]),t(d,[2,17]),t(d,[2,21]),t(d,[2,26]),{33:[1,59]},{37:60,40:p,41:g,42:y},{33:[1,64]},{33:[1,65]},t(d,[2,92]),t(d,[2,24],{32:[1,66]}),t(d,[2,22],{29:[1,67]}),t(f,[2,97]),t(d,[2,27],{36:[1,68],38:[1,69],39:[1,70]}),t(d,[2,28],{32:[1,71],38:[1,72],39:[1,73]}),t(m,[2,93]),t(m,[2,94]),t(m,[2,95]),t(d,[2,31],{32:[1,74],36:[1,75],39:[1,76]}),t(d,[2,42],{32:[1,77],36:[1,78],38:[1,79]}),{33:[1,80]},{30:[1,81]},{37:82,40:p,41:g,42:y},{33:[1,83]},{33:[1,84]},{33:[1,85]},{33:[1,86]},{33:[1,87]},{33:[1,88]},{37:89,40:p,41:g,42:y},{33:[1,90]},{33:[1,91]},{37:92,40:p,41:g,42:y},{33:[1,93]},t(d,[2,25]),t(d,[2,23]),t(d,[2,29],{38:[1,94],39:[1,95]}),t(d,[2,33],{36:[1,96],39:[1,97]}),t(d,[2,43],{36:[1,98],38:[1,99]}),t(d,[2,30],{38:[1,100],39:[1,101]}),t(d,[2,35],{32:[1,102],39:[1,103]}),t(d,[2,46],{32:[1,104],38:[1,105]}),t(d,[2,32],{36:[1,106],39:[1,107]}),t(d,[2,34],{32:[1,108],39:[1,109]}),t(d,[2,47],{32:[1,111],36:[1,110]}),t(d,[2,44],{36:[1,112],38:[1,113]}),t(d,[2,45],{32:[1,114],38:[1,115]}),t(d,[2,48],{32:[1,117],36:[1,116]}),{33:[1,118]},{33:[1,119]},{37:120,40:p,41:g,42:y},{33:[1,121]},{37:122,40:p,41:g,42:y},{33:[1,123]},{33:[1,124]},{33:[1,125]},{33:[1,126]},{33:[1,127]},{33:[1,128]},{33:[1,129]},{37:130,40:p,41:g,42:y},{33:[1,131]},{33:[1,132]},{33:[1,133]},{37:134,40:p,41:g,42:y},{33:[1,135]},{37:136,40:p,41:g,42:y},{33:[1,137]},{33:[1,138]},{33:[1,139]},{37:140,40:p,41:g,42:y},{33:[1,141]},t(d,[2,40],{39:[1,142]}),t(d,[2,53],{38:[1,143]}),t(d,[2,41],{39:[1,144]}),t(d,[2,64],{36:[1,145]}),t(d,[2,54],{38:[1,146]}),t(d,[2,63],{36:[1,147]}),t(d,[2,39],{39:[1,148]}),t(d,[2,52],{38:[1,149]}),t(d,[2,38],{39:[1,150]}),t(d,[2,58],{32:[1,151]}),t(d,[2,51],{38:[1,152]}),t(d,[2,57],{32:[1,153]}),t(d,[2,37],{39:[1,154]}),t(d,[2,65],{36:[1,155]}),t(d,[2,36],{39:[1,156]}),t(d,[2,59],{32:[1,157]}),t(d,[2,60],{32:[1,158]}),t(d,[2,66],{36:[1,159]}),t(d,[2,50],{38:[1,160]}),t(d,[2,61],{36:[1,161]}),t(d,[2,49],{38:[1,162]}),t(d,[2,55],{32:[1,163]}),t(d,[2,56],{32:[1,164]}),t(d,[2,62],{36:[1,165]}),{33:[1,166]},{33:[1,167]},{33:[1,168]},{37:169,40:p,41:g,42:y},{33:[1,170]},{37:171,40:p,41:g,42:y},{33:[1,172]},{33:[1,173]},{33:[1,174]},{33:[1,175]},{33:[1,176]},{33:[1,177]},{33:[1,178]},{37:179,40:p,41:g,42:y},{33:[1,180]},{33:[1,181]},{33:[1,182]},{37:183,40:p,41:g,42:y},{33:[1,184]},{37:185,40:p,41:g,42:y},{33:[1,186]},{33:[1,187]},{33:[1,188]},{37:189,40:p,41:g,42:y},t(d,[2,81]),t(d,[2,82]),t(d,[2,79]),t(d,[2,80]),t(d,[2,84]),t(d,[2,83]),t(d,[2,88]),t(d,[2,87]),t(d,[2,86]),t(d,[2,85]),t(d,[2,90]),t(d,[2,89]),t(d,[2,78]),t(d,[2,77]),t(d,[2,76]),t(d,[2,75]),t(d,[2,73]),t(d,[2,74]),t(d,[2,72]),t(d,[2,71]),t(d,[2,70]),t(d,[2,69]),t(d,[2,67]),t(d,[2,68])],defaultActions:{9:[2,98],10:[2,1],11:[2,2],19:[2,3],27:[2,4],44:[2,100],45:[2,5]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",c=0,u=0,l=0,h=2,f=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),g={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(g.yy[y]=this.yy[y]);p.setInput(t,g.yy),g.yy.lexer=p,g.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var m=p.yylloc;a.push(m);var v=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||f)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var _,x,w,k,T,C,E,S,A,M={};;){if(w=n[n.length-1],this.defaultActions[w]?k=this.defaultActions[w]:(null==_&&(_=b()),k=o[w]&&o[w][_]),void 0===k||!k.length||!k[0]){var N="";for(C in A=[],o[w])this.terminals_[C]&&C>h&&A.push("'"+this.terminals_[C]+"'");N=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+A.join(", ")+", got '"+(this.terminals_[_]||_)+"'":"Parse error on line "+(c+1)+": Unexpected "+(_==f?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(N,{text:p.match,token:this.terminals_[_]||_,line:p.yylineno,loc:m,expected:A})}if(k[0]instanceof Array&&k.length>1)throw new Error("Parse Error: multiple actions possible at state: "+w+", token: "+_);switch(k[0]){case 1:n.push(_),i.push(p.yytext),a.push(p.yylloc),n.push(k[1]),_=null,x?(_=x,x=null):(u=p.yyleng,s=p.yytext,c=p.yylineno,m=p.yylloc,l>0&&l--);break;case 2:if(E=this.productions_[k[1]][1],M.$=i[i.length-E],M._$={first_line:a[a.length-(E||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(E||1)].first_column,last_column:a[a.length-1].last_column},v&&(M._$.range=[a[a.length-(E||1)].range[0],a[a.length-1].range[1]]),void 0!==(T=this.performAction.apply(M,[s,u,c,g.yy,k[1],i,a].concat(d))))return T;E&&(n=n.slice(0,-1*E*2),i=i.slice(0,-1*E),a=a.slice(0,-1*E)),n.push(this.productions_[k[1]][0]),i.push(M.$),a.push(M._$),S=o[n[n.length-2]][n[n.length-1]],n.push(S);break;case 3:return!0}}return!0}},b={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;a<i.length;a++)if((n=this._input.match(this.rules[i[a]]))&&(!e||n[0].length>e[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),47;case 1:return this.begin("type_directive"),48;case 2:return this.popState(),this.begin("arg_directive"),9;case 3:return this.popState(),this.popState(),50;case 4:return 49;case 5:return this.begin("acc_title"),19;case 6:return this.popState(),"acc_title_value";case 7:return this.begin("acc_descr"),21;case 8:return this.popState(),"acc_descr_value";case 9:this.begin("acc_descr_multiline");break;case 10:case 34:case 37:this.popState();break;case 11:return"acc_descr_multiline_value";case 12:return 14;case 13:case 14:case 15:break;case 16:return 6;case 17:return 34;case 18:return 38;case 19:return 36;case 20:return 39;case 21:return 40;case 22:return 41;case 23:return 42;case 24:return 32;case 25:return 28;case 26:return 29;case 27:return 31;case 28:return 26;case 29:case 30:return 10;case 31:return 9;case 32:return"CARET";case 33:this.begin("options");break;case 35:return 13;case 36:this.begin("string");break;case 38:return 33;case 39:return 30;case 40:return 27;case 41:return 8}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:(\r?\n)+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:gitGraph\b)/i,/^(?:commit\b)/i,/^(?:id:)/i,/^(?:type:)/i,/^(?:msg:)/i,/^(?:NORMAL\b)/i,/^(?:REVERSE\b)/i,/^(?:HIGHLIGHT\b)/i,/^(?:tag:)/i,/^(?:branch\b)/i,/^(?:order:)/i,/^(?:merge\b)/i,/^(?:checkout\b)/i,/^(?:LR\b)/i,/^(?:BT\b)/i,/^(?::)/i,/^(?:\^)/i,/^(?:options\r?\n)/i,/^(?:[ \r\n\t]+end\b)/i,/^(?:[\s\S]+(?=[ \r\n\t]+end))/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[0-9]+)/i,/^(?:[a-zA-Z][-_\./a-zA-Z0-9]*[-_a-zA-Z0-9])/i,/^(?:$)/i],conditions:{acc_descr_multiline:{rules:[10,11],inclusive:!1},acc_descr:{rules:[8],inclusive:!1},acc_title:{rules:[6],inclusive:!1},close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},options:{rules:[34,35],inclusive:!1},string:{rules:[37,38],inclusive:!1},INITIAL:{rules:[0,5,7,9,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,36,39,40,41],inclusive:!0}}};function _(){this.yy={}}return v.lexer=b,_.prototype=v,v.Parser=_,new _}();e.parser=r,e.Parser=r.Parser,e.parse=function(){return r.parse.apply(r,arguments)},e.main=function(t){t[1]||(console.log("Usage: "+t[0]+" FILE"),process.exit(1));var r=n(8183).readFileSync(n(6470).normalize(t[1]),"utf8");return e.parser.parse(r)},n.c[n.s]===t&&e.main(process.argv.slice(1))},6765:(t,e,n)=>{t=n.nmd(t);var r=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[6,9,10],n={trace:function(){},yy:{},symbols_:{error:2,start:3,info:4,document:5,EOF:6,line:7,statement:8,NL:9,showInfo:10,$accept:0,$end:1},terminals_:{2:"error",4:"info",6:"EOF",9:"NL",10:"showInfo"},productions_:[0,[3,3],[5,0],[5,2],[7,1],[7,1],[8,1]],performAction:function(t,e,n,r,i,a,o){switch(a.length,i){case 1:return r;case 4:break;case 6:r.setInfo(!0)}},table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:6,9:[1,7],10:[1,8]},{1:[2,1]},t(e,[2,3]),t(e,[2,4]),t(e,[2,5]),t(e,[2,6])],defaultActions:{4:[2,1]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",c=0,u=0,l=0,h=2,f=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),g={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(g.yy[y]=this.yy[y]);p.setInput(t,g.yy),g.yy.lexer=p,g.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var m=p.yylloc;a.push(m);var v=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||f)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var _,x,w,k,T,C,E,S,A,M={};;){if(w=n[n.length-1],this.defaultActions[w]?k=this.defaultActions[w]:(null==_&&(_=b()),k=o[w]&&o[w][_]),void 0===k||!k.length||!k[0]){var N="";for(C in A=[],o[w])this.terminals_[C]&&C>h&&A.push("'"+this.terminals_[C]+"'");N=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+A.join(", ")+", got '"+(this.terminals_[_]||_)+"'":"Parse error on line "+(c+1)+": Unexpected "+(_==f?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(N,{text:p.match,token:this.terminals_[_]||_,line:p.yylineno,loc:m,expected:A})}if(k[0]instanceof Array&&k.length>1)throw new Error("Parse Error: multiple actions possible at state: "+w+", token: "+_);switch(k[0]){case 1:n.push(_),i.push(p.yytext),a.push(p.yylloc),n.push(k[1]),_=null,x?(_=x,x=null):(u=p.yyleng,s=p.yytext,c=p.yylineno,m=p.yylloc,l>0&&l--);break;case 2:if(E=this.productions_[k[1]][1],M.$=i[i.length-E],M._$={first_line:a[a.length-(E||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(E||1)].first_column,last_column:a[a.length-1].last_column},v&&(M._$.range=[a[a.length-(E||1)].range[0],a[a.length-1].range[1]]),void 0!==(T=this.performAction.apply(M,[s,u,c,g.yy,k[1],i,a].concat(d))))return T;E&&(n=n.slice(0,-1*E*2),i=i.slice(0,-1*E),a=a.slice(0,-1*E)),n.push(this.productions_[k[1]][0]),i.push(M.$),a.push(M._$),S=o[n[n.length-2]][n[n.length-1]],n.push(S);break;case 3:return!0}}return!0}},r={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;a<i.length;a++)if((n=this._input.match(this.rules[i[a]]))&&(!e||n[0].length>e[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return 4;case 1:return 9;case 2:return"space";case 3:return 10;case 4:return 6;case 5:return"TXT"}},rules:[/^(?:info\b)/i,/^(?:[\s\n\r]+)/i,/^(?:[\s]+)/i,/^(?:showInfo\b)/i,/^(?:$)/i,/^(?:.)/i],conditions:{INITIAL:{rules:[0,1,2,3,4,5],inclusive:!0}}};function i(){this.yy={}}return n.lexer=r,i.prototype=n,n.Parser=i,new i}();e.parser=r,e.Parser=r.Parser,e.parse=function(){return r.parse.apply(r,arguments)},e.main=function(t){t[1]||(console.log("Usage: "+t[0]+" FILE"),process.exit(1));var r=n(1428).readFileSync(n(6470).normalize(t[1]),"utf8");return e.parser.parse(r)},n.c[n.s]===t&&e.main(process.argv.slice(1))},7062:(t,e,n)=>{t=n.nmd(t);var r=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[1,4],n=[1,5],r=[1,6],i=[1,7],a=[1,9],o=[1,11,13,15,17,19,20,26,27,28,29],s=[2,5],c=[1,6,11,13,15,17,19,20,26,27,28,29],u=[26,27,28],l=[2,8],h=[1,18],f=[1,19],d=[1,20],p=[1,21],g=[1,22],y=[1,23],m=[1,28],v=[6,26,27,28,29],b={trace:function(){},yy:{},symbols_:{error:2,start:3,eol:4,directive:5,PIE:6,document:7,showData:8,line:9,statement:10,txt:11,value:12,title:13,title_value:14,acc_title:15,acc_title_value:16,acc_descr:17,acc_descr_value:18,acc_descr_multiline_value:19,section:20,openDirective:21,typeDirective:22,closeDirective:23,":":24,argDirective:25,NEWLINE:26,";":27,EOF:28,open_directive:29,type_directive:30,arg_directive:31,close_directive:32,$accept:0,$end:1},terminals_:{2:"error",6:"PIE",8:"showData",11:"txt",12:"value",13:"title",14:"title_value",15:"acc_title",16:"acc_title_value",17:"acc_descr",18:"acc_descr_value",19:"acc_descr_multiline_value",20:"section",24:":",26:"NEWLINE",27:";",28:"EOF",29:"open_directive",30:"type_directive",31:"arg_directive",32:"close_directive"},productions_:[0,[3,2],[3,2],[3,2],[3,3],[7,0],[7,2],[9,2],[10,0],[10,2],[10,2],[10,2],[10,2],[10,1],[10,1],[10,1],[5,3],[5,5],[4,1],[4,1],[4,1],[21,1],[22,1],[25,1],[23,1]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 4:r.setShowData(!0);break;case 7:this.$=a[s-1];break;case 9:r.addSection(a[s-1],r.cleanupValue(a[s]));break;case 10:this.$=a[s].trim(),r.setPieTitle(this.$);break;case 11:this.$=a[s].trim(),r.setTitle(this.$);break;case 12:case 13:this.$=a[s].trim(),r.setAccDescription(this.$);break;case 14:r.addSection(a[s].substr(8)),this.$=a[s].substr(8);break;case 21:r.parseDirective("%%{","open_directive");break;case 22:r.parseDirective(a[s],"type_directive");break;case 23:a[s]=a[s].trim().replace(/'/g,'"'),r.parseDirective(a[s],"arg_directive");break;case 24:r.parseDirective("}%%","close_directive","pie")}},table:[{3:1,4:2,5:3,6:e,21:8,26:n,27:r,28:i,29:a},{1:[3]},{3:10,4:2,5:3,6:e,21:8,26:n,27:r,28:i,29:a},{3:11,4:2,5:3,6:e,21:8,26:n,27:r,28:i,29:a},t(o,s,{7:12,8:[1,13]}),t(c,[2,18]),t(c,[2,19]),t(c,[2,20]),{22:14,30:[1,15]},{30:[2,21]},{1:[2,1]},{1:[2,2]},t(u,l,{21:8,9:16,10:17,5:24,1:[2,3],11:h,13:f,15:d,17:p,19:g,20:y,29:a}),t(o,s,{7:25}),{23:26,24:[1,27],32:m},t([24,32],[2,22]),t(o,[2,6]),{4:29,26:n,27:r,28:i},{12:[1,30]},{14:[1,31]},{16:[1,32]},{18:[1,33]},t(u,[2,13]),t(u,[2,14]),t(u,[2,15]),t(u,l,{21:8,9:16,10:17,5:24,1:[2,4],11:h,13:f,15:d,17:p,19:g,20:y,29:a}),t(v,[2,16]),{25:34,31:[1,35]},t(v,[2,24]),t(o,[2,7]),t(u,[2,9]),t(u,[2,10]),t(u,[2,11]),t(u,[2,12]),{23:36,32:m},{32:[2,23]},t(v,[2,17])],defaultActions:{9:[2,21],10:[2,1],11:[2,2],35:[2,23]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",c=0,u=0,l=0,h=2,f=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),g={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(g.yy[y]=this.yy[y]);p.setInput(t,g.yy),g.yy.lexer=p,g.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var m=p.yylloc;a.push(m);var v=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||f)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var _,x,w,k,T,C,E,S,A,M={};;){if(w=n[n.length-1],this.defaultActions[w]?k=this.defaultActions[w]:(null==_&&(_=b()),k=o[w]&&o[w][_]),void 0===k||!k.length||!k[0]){var N="";for(C in A=[],o[w])this.terminals_[C]&&C>h&&A.push("'"+this.terminals_[C]+"'");N=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+A.join(", ")+", got '"+(this.terminals_[_]||_)+"'":"Parse error on line "+(c+1)+": Unexpected "+(_==f?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(N,{text:p.match,token:this.terminals_[_]||_,line:p.yylineno,loc:m,expected:A})}if(k[0]instanceof Array&&k.length>1)throw new Error("Parse Error: multiple actions possible at state: "+w+", token: "+_);switch(k[0]){case 1:n.push(_),i.push(p.yytext),a.push(p.yylloc),n.push(k[1]),_=null,x?(_=x,x=null):(u=p.yyleng,s=p.yytext,c=p.yylineno,m=p.yylloc,l>0&&l--);break;case 2:if(E=this.productions_[k[1]][1],M.$=i[i.length-E],M._$={first_line:a[a.length-(E||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(E||1)].first_column,last_column:a[a.length-1].last_column},v&&(M._$.range=[a[a.length-(E||1)].range[0],a[a.length-1].range[1]]),void 0!==(T=this.performAction.apply(M,[s,u,c,g.yy,k[1],i,a].concat(d))))return T;E&&(n=n.slice(0,-1*E*2),i=i.slice(0,-1*E),a=a.slice(0,-1*E)),n.push(this.productions_[k[1]][0]),i.push(M.$),a.push(M._$),S=o[n[n.length-2]][n[n.length-1]],n.push(S);break;case 3:return!0}}return!0}},_={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;a<i.length;a++)if((n=this._input.match(this.rules[i[a]]))&&(!e||n[0].length>e[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),29;case 1:return this.begin("type_directive"),30;case 2:return this.popState(),this.begin("arg_directive"),24;case 3:return this.popState(),this.popState(),32;case 4:return 31;case 5:case 6:case 8:case 9:break;case 7:return 26;case 10:return this.begin("title"),13;case 11:return this.popState(),"title_value";case 12:return this.begin("acc_title"),15;case 13:return this.popState(),"acc_title_value";case 14:return this.begin("acc_descr"),17;case 15:return this.popState(),"acc_descr_value";case 16:this.begin("acc_descr_multiline");break;case 17:case 20:this.popState();break;case 18:return"acc_descr_multiline_value";case 19:this.begin("string");break;case 21:return"txt";case 22:return 6;case 23:return 8;case 24:return"value";case 25:return 28}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:[\s]+)/i,/^(?:title\b)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:pie\b)/i,/^(?:showData\b)/i,/^(?::[\s]*[\d]+(?:\.[\d]+)?)/i,/^(?:$)/i],conditions:{acc_descr_multiline:{rules:[17,18],inclusive:!1},acc_descr:{rules:[15],inclusive:!1},acc_title:{rules:[13],inclusive:!1},close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},title:{rules:[11],inclusive:!1},string:{rules:[20,21],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,12,14,16,19,22,23,24,25],inclusive:!0}}};function x(){this.yy={}}return b.lexer=_,x.prototype=b,b.Parser=x,new x}();e.parser=r,e.Parser=r.Parser,e.parse=function(){return r.parse.apply(r,arguments)},e.main=function(t){t[1]||(console.log("Usage: "+t[0]+" FILE"),process.exit(1));var r=n(4551).readFileSync(n(6470).normalize(t[1]),"utf8");return e.parser.parse(r)},n.c[n.s]===t&&e.main(process.argv.slice(1))},3176:(t,e,n)=>{t=n.nmd(t);var r=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[1,3],n=[1,5],r=[1,6],i=[1,7],a=[1,8],o=[5,6,8,14,16,18,19,40,41,42,43,44,45,53,71,72],s=[1,22],c=[2,13],u=[1,26],l=[1,27],h=[1,28],f=[1,29],d=[1,30],p=[1,31],g=[1,24],y=[1,32],m=[1,33],v=[1,36],b=[71,72],_=[5,8,14,16,18,19,40,41,42,43,44,45,53,60,62,71,72],x=[1,56],w=[1,57],k=[1,58],T=[1,59],C=[1,60],E=[1,61],S=[1,62],A=[62,63],M=[1,74],N=[1,70],D=[1,71],B=[1,72],L=[1,73],O=[1,75],I=[1,79],R=[1,80],F=[1,77],P=[1,78],Y=[5,8,14,16,18,19,40,41,42,43,44,45,53,71,72],j={trace:function(){},yy:{},symbols_:{error:2,start:3,directive:4,NEWLINE:5,RD:6,diagram:7,EOF:8,openDirective:9,typeDirective:10,closeDirective:11,":":12,argDirective:13,acc_title:14,acc_title_value:15,acc_descr:16,acc_descr_value:17,acc_descr_multiline_value:18,open_directive:19,type_directive:20,arg_directive:21,close_directive:22,requirementDef:23,elementDef:24,relationshipDef:25,requirementType:26,requirementName:27,STRUCT_START:28,requirementBody:29,ID:30,COLONSEP:31,id:32,TEXT:33,text:34,RISK:35,riskLevel:36,VERIFYMTHD:37,verifyType:38,STRUCT_STOP:39,REQUIREMENT:40,FUNCTIONAL_REQUIREMENT:41,INTERFACE_REQUIREMENT:42,PERFORMANCE_REQUIREMENT:43,PHYSICAL_REQUIREMENT:44,DESIGN_CONSTRAINT:45,LOW_RISK:46,MED_RISK:47,HIGH_RISK:48,VERIFY_ANALYSIS:49,VERIFY_DEMONSTRATION:50,VERIFY_INSPECTION:51,VERIFY_TEST:52,ELEMENT:53,elementName:54,elementBody:55,TYPE:56,type:57,DOCREF:58,ref:59,END_ARROW_L:60,relationship:61,LINE:62,END_ARROW_R:63,CONTAINS:64,COPIES:65,DERIVES:66,SATISFIES:67,VERIFIES:68,REFINES:69,TRACES:70,unqString:71,qString:72,$accept:0,$end:1},terminals_:{2:"error",5:"NEWLINE",6:"RD",8:"EOF",12:":",14:"acc_title",15:"acc_title_value",16:"acc_descr",17:"acc_descr_value",18:"acc_descr_multiline_value",19:"open_directive",20:"type_directive",21:"arg_directive",22:"close_directive",28:"STRUCT_START",30:"ID",31:"COLONSEP",33:"TEXT",35:"RISK",37:"VERIFYMTHD",39:"STRUCT_STOP",40:"REQUIREMENT",41:"FUNCTIONAL_REQUIREMENT",42:"INTERFACE_REQUIREMENT",43:"PERFORMANCE_REQUIREMENT",44:"PHYSICAL_REQUIREMENT",45:"DESIGN_CONSTRAINT",46:"LOW_RISK",47:"MED_RISK",48:"HIGH_RISK",49:"VERIFY_ANALYSIS",50:"VERIFY_DEMONSTRATION",51:"VERIFY_INSPECTION",52:"VERIFY_TEST",53:"ELEMENT",56:"TYPE",58:"DOCREF",60:"END_ARROW_L",62:"LINE",63:"END_ARROW_R",64:"CONTAINS",65:"COPIES",66:"DERIVES",67:"SATISFIES",68:"VERIFIES",69:"REFINES",70:"TRACES",71:"unqString",72:"qString"},productions_:[0,[3,3],[3,2],[3,4],[4,3],[4,5],[4,2],[4,2],[4,1],[9,1],[10,1],[13,1],[11,1],[7,0],[7,2],[7,2],[7,2],[7,2],[7,2],[23,5],[29,5],[29,5],[29,5],[29,5],[29,2],[29,1],[26,1],[26,1],[26,1],[26,1],[26,1],[26,1],[36,1],[36,1],[36,1],[38,1],[38,1],[38,1],[38,1],[24,5],[55,5],[55,5],[55,2],[55,1],[25,5],[25,5],[61,1],[61,1],[61,1],[61,1],[61,1],[61,1],[61,1],[27,1],[27,1],[32,1],[32,1],[34,1],[34,1],[54,1],[54,1],[57,1],[57,1],[59,1],[59,1]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 6:this.$=a[s].trim(),r.setTitle(this.$);break;case 7:case 8:this.$=a[s].trim(),r.setAccDescription(this.$);break;case 9:r.parseDirective("%%{","open_directive");break;case 10:r.parseDirective(a[s],"type_directive");break;case 11:a[s]=a[s].trim().replace(/'/g,'"'),r.parseDirective(a[s],"arg_directive");break;case 12:r.parseDirective("}%%","close_directive","pie");break;case 13:this.$=[];break;case 19:r.addRequirement(a[s-3],a[s-4]);break;case 20:r.setNewReqId(a[s-2]);break;case 21:r.setNewReqText(a[s-2]);break;case 22:r.setNewReqRisk(a[s-2]);break;case 23:r.setNewReqVerifyMethod(a[s-2]);break;case 26:this.$=r.RequirementType.REQUIREMENT;break;case 27:this.$=r.RequirementType.FUNCTIONAL_REQUIREMENT;break;case 28:this.$=r.RequirementType.INTERFACE_REQUIREMENT;break;case 29:this.$=r.RequirementType.PERFORMANCE_REQUIREMENT;break;case 30:this.$=r.RequirementType.PHYSICAL_REQUIREMENT;break;case 31:this.$=r.RequirementType.DESIGN_CONSTRAINT;break;case 32:this.$=r.RiskLevel.LOW_RISK;break;case 33:this.$=r.RiskLevel.MED_RISK;break;case 34:this.$=r.RiskLevel.HIGH_RISK;break;case 35:this.$=r.VerifyType.VERIFY_ANALYSIS;break;case 36:this.$=r.VerifyType.VERIFY_DEMONSTRATION;break;case 37:this.$=r.VerifyType.VERIFY_INSPECTION;break;case 38:this.$=r.VerifyType.VERIFY_TEST;break;case 39:r.addElement(a[s-3]);break;case 40:r.setNewElementType(a[s-2]);break;case 41:r.setNewElementDocRef(a[s-2]);break;case 44:r.addRelationship(a[s-2],a[s],a[s-4]);break;case 45:r.addRelationship(a[s-2],a[s-4],a[s]);break;case 46:this.$=r.Relationships.CONTAINS;break;case 47:this.$=r.Relationships.COPIES;break;case 48:this.$=r.Relationships.DERIVES;break;case 49:this.$=r.Relationships.SATISFIES;break;case 50:this.$=r.Relationships.VERIFIES;break;case 51:this.$=r.Relationships.REFINES;break;case 52:this.$=r.Relationships.TRACES}},table:[{3:1,4:2,6:e,9:4,14:n,16:r,18:i,19:a},{1:[3]},{3:10,4:2,5:[1,9],6:e,9:4,14:n,16:r,18:i,19:a},{5:[1,11]},{10:12,20:[1,13]},{15:[1,14]},{17:[1,15]},t(o,[2,8]),{20:[2,9]},{3:16,4:2,6:e,9:4,14:n,16:r,18:i,19:a},{1:[2,2]},{4:21,5:s,7:17,8:c,9:4,14:n,16:r,18:i,19:a,23:18,24:19,25:20,26:23,32:25,40:u,41:l,42:h,43:f,44:d,45:p,53:g,71:y,72:m},{11:34,12:[1,35],22:v},t([12,22],[2,10]),t(o,[2,6]),t(o,[2,7]),{1:[2,1]},{8:[1,37]},{4:21,5:s,7:38,8:c,9:4,14:n,16:r,18:i,19:a,23:18,24:19,25:20,26:23,32:25,40:u,41:l,42:h,43:f,44:d,45:p,53:g,71:y,72:m},{4:21,5:s,7:39,8:c,9:4,14:n,16:r,18:i,19:a,23:18,24:19,25:20,26:23,32:25,40:u,41:l,42:h,43:f,44:d,45:p,53:g,71:y,72:m},{4:21,5:s,7:40,8:c,9:4,14:n,16:r,18:i,19:a,23:18,24:19,25:20,26:23,32:25,40:u,41:l,42:h,43:f,44:d,45:p,53:g,71:y,72:m},{4:21,5:s,7:41,8:c,9:4,14:n,16:r,18:i,19:a,23:18,24:19,25:20,26:23,32:25,40:u,41:l,42:h,43:f,44:d,45:p,53:g,71:y,72:m},{4:21,5:s,7:42,8:c,9:4,14:n,16:r,18:i,19:a,23:18,24:19,25:20,26:23,32:25,40:u,41:l,42:h,43:f,44:d,45:p,53:g,71:y,72:m},{27:43,71:[1,44],72:[1,45]},{54:46,71:[1,47],72:[1,48]},{60:[1,49],62:[1,50]},t(b,[2,26]),t(b,[2,27]),t(b,[2,28]),t(b,[2,29]),t(b,[2,30]),t(b,[2,31]),t(_,[2,55]),t(_,[2,56]),t(o,[2,4]),{13:51,21:[1,52]},t(o,[2,12]),{1:[2,3]},{8:[2,14]},{8:[2,15]},{8:[2,16]},{8:[2,17]},{8:[2,18]},{28:[1,53]},{28:[2,53]},{28:[2,54]},{28:[1,54]},{28:[2,59]},{28:[2,60]},{61:55,64:x,65:w,66:k,67:T,68:C,69:E,70:S},{61:63,64:x,65:w,66:k,67:T,68:C,69:E,70:S},{11:64,22:v},{22:[2,11]},{5:[1,65]},{5:[1,66]},{62:[1,67]},t(A,[2,46]),t(A,[2,47]),t(A,[2,48]),t(A,[2,49]),t(A,[2,50]),t(A,[2,51]),t(A,[2,52]),{63:[1,68]},t(o,[2,5]),{5:M,29:69,30:N,33:D,35:B,37:L,39:O},{5:I,39:R,55:76,56:F,58:P},{32:81,71:y,72:m},{32:82,71:y,72:m},t(Y,[2,19]),{31:[1,83]},{31:[1,84]},{31:[1,85]},{31:[1,86]},{5:M,29:87,30:N,33:D,35:B,37:L,39:O},t(Y,[2,25]),t(Y,[2,39]),{31:[1,88]},{31:[1,89]},{5:I,39:R,55:90,56:F,58:P},t(Y,[2,43]),t(Y,[2,44]),t(Y,[2,45]),{32:91,71:y,72:m},{34:92,71:[1,93],72:[1,94]},{36:95,46:[1,96],47:[1,97],48:[1,98]},{38:99,49:[1,100],50:[1,101],51:[1,102],52:[1,103]},t(Y,[2,24]),{57:104,71:[1,105],72:[1,106]},{59:107,71:[1,108],72:[1,109]},t(Y,[2,42]),{5:[1,110]},{5:[1,111]},{5:[2,57]},{5:[2,58]},{5:[1,112]},{5:[2,32]},{5:[2,33]},{5:[2,34]},{5:[1,113]},{5:[2,35]},{5:[2,36]},{5:[2,37]},{5:[2,38]},{5:[1,114]},{5:[2,61]},{5:[2,62]},{5:[1,115]},{5:[2,63]},{5:[2,64]},{5:M,29:116,30:N,33:D,35:B,37:L,39:O},{5:M,29:117,30:N,33:D,35:B,37:L,39:O},{5:M,29:118,30:N,33:D,35:B,37:L,39:O},{5:M,29:119,30:N,33:D,35:B,37:L,39:O},{5:I,39:R,55:120,56:F,58:P},{5:I,39:R,55:121,56:F,58:P},t(Y,[2,20]),t(Y,[2,21]),t(Y,[2,22]),t(Y,[2,23]),t(Y,[2,40]),t(Y,[2,41])],defaultActions:{8:[2,9],10:[2,2],16:[2,1],37:[2,3],38:[2,14],39:[2,15],40:[2,16],41:[2,17],42:[2,18],44:[2,53],45:[2,54],47:[2,59],48:[2,60],52:[2,11],93:[2,57],94:[2,58],96:[2,32],97:[2,33],98:[2,34],100:[2,35],101:[2,36],102:[2,37],103:[2,38],105:[2,61],106:[2,62],108:[2,63],109:[2,64]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",c=0,u=0,l=0,h=2,f=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),g={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(g.yy[y]=this.yy[y]);p.setInput(t,g.yy),g.yy.lexer=p,g.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var m=p.yylloc;a.push(m);var v=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||f)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var _,x,w,k,T,C,E,S,A,M={};;){if(w=n[n.length-1],this.defaultActions[w]?k=this.defaultActions[w]:(null==_&&(_=b()),k=o[w]&&o[w][_]),void 0===k||!k.length||!k[0]){var N="";for(C in A=[],o[w])this.terminals_[C]&&C>h&&A.push("'"+this.terminals_[C]+"'");N=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+A.join(", ")+", got '"+(this.terminals_[_]||_)+"'":"Parse error on line "+(c+1)+": Unexpected "+(_==f?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(N,{text:p.match,token:this.terminals_[_]||_,line:p.yylineno,loc:m,expected:A})}if(k[0]instanceof Array&&k.length>1)throw new Error("Parse Error: multiple actions possible at state: "+w+", token: "+_);switch(k[0]){case 1:n.push(_),i.push(p.yytext),a.push(p.yylloc),n.push(k[1]),_=null,x?(_=x,x=null):(u=p.yyleng,s=p.yytext,c=p.yylineno,m=p.yylloc,l>0&&l--);break;case 2:if(E=this.productions_[k[1]][1],M.$=i[i.length-E],M._$={first_line:a[a.length-(E||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(E||1)].first_column,last_column:a[a.length-1].last_column},v&&(M._$.range=[a[a.length-(E||1)].range[0],a[a.length-1].range[1]]),void 0!==(T=this.performAction.apply(M,[s,u,c,g.yy,k[1],i,a].concat(d))))return T;E&&(n=n.slice(0,-1*E*2),i=i.slice(0,-1*E),a=a.slice(0,-1*E)),n.push(this.productions_[k[1]][0]),i.push(M.$),a.push(M._$),S=o[n[n.length-2]][n[n.length-1]],n.push(S);break;case 3:return!0}}return!0}},U={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;a<i.length;a++)if((n=this._input.match(this.rules[i[a]]))&&(!e||n[0].length>e[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),19;case 1:return this.begin("type_directive"),20;case 2:return this.popState(),this.begin("arg_directive"),12;case 3:return this.popState(),this.popState(),22;case 4:return 21;case 5:return"title";case 6:return this.begin("acc_title"),14;case 7:return this.popState(),"acc_title_value";case 8:return this.begin("acc_descr"),16;case 9:return this.popState(),"acc_descr_value";case 10:this.begin("acc_descr_multiline");break;case 11:case 53:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:return 5;case 14:case 15:case 16:break;case 17:return 8;case 18:return 6;case 19:return 28;case 20:return 39;case 21:return 31;case 22:return 30;case 23:return 33;case 24:return 35;case 25:return 37;case 26:return 40;case 27:return 41;case 28:return 42;case 29:return 43;case 30:return 44;case 31:return 45;case 32:return 46;case 33:return 47;case 34:return 48;case 35:return 49;case 36:return 50;case 37:return 51;case 38:return 52;case 39:return 53;case 40:return 64;case 41:return 65;case 42:return 66;case 43:return 67;case 44:return 68;case 45:return 69;case 46:return 70;case 47:return 56;case 48:return 58;case 49:return 60;case 50:return 63;case 51:return 62;case 52:this.begin("string");break;case 54:return"qString";case 55:return e.yytext=e.yytext.trim(),71}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:(\r?\n)+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:$)/i,/^(?:requirementDiagram\b)/i,/^(?:\{)/i,/^(?:\})/i,/^(?::)/i,/^(?:id\b)/i,/^(?:text\b)/i,/^(?:risk\b)/i,/^(?:verifyMethod\b)/i,/^(?:requirement\b)/i,/^(?:functionalRequirement\b)/i,/^(?:interfaceRequirement\b)/i,/^(?:performanceRequirement\b)/i,/^(?:physicalRequirement\b)/i,/^(?:designConstraint\b)/i,/^(?:low\b)/i,/^(?:medium\b)/i,/^(?:high\b)/i,/^(?:analysis\b)/i,/^(?:demonstration\b)/i,/^(?:inspection\b)/i,/^(?:test\b)/i,/^(?:element\b)/i,/^(?:contains\b)/i,/^(?:copies\b)/i,/^(?:derives\b)/i,/^(?:satisfies\b)/i,/^(?:verifies\b)/i,/^(?:refines\b)/i,/^(?:traces\b)/i,/^(?:type\b)/i,/^(?:docref\b)/i,/^(?:<-)/i,/^(?:->)/i,/^(?:-)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[\w][^\r\n\{\<\>\-\=]*)/i],conditions:{acc_descr_multiline:{rules:[11,12],inclusive:!1},acc_descr:{rules:[9],inclusive:!1},acc_title:{rules:[7],inclusive:!1},close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},unqString:{rules:[],inclusive:!1},token:{rules:[],inclusive:!1},string:{rules:[53,54],inclusive:!1},INITIAL:{rules:[0,5,6,8,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,55],inclusive:!0}}};function z(){this.yy={}}return j.lexer=U,z.prototype=j,j.Parser=z,new z}();e.parser=r,e.Parser=r.Parser,e.parse=function(){return r.parse.apply(r,arguments)},e.main=function(t){t[1]||(console.log("Usage: "+t[0]+" FILE"),process.exit(1));var r=n(8800).readFileSync(n(6470).normalize(t[1]),"utf8");return e.parser.parse(r)},n.c[n.s]===t&&e.main(process.argv.slice(1))},6876:(t,e,n)=>{t=n.nmd(t);var r=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[1,2],n=[1,3],r=[1,5],i=[1,7],a=[2,5],o=[1,15],s=[1,17],c=[1,18],u=[1,19],l=[1,21],h=[1,22],f=[1,23],d=[1,29],p=[1,30],g=[1,31],y=[1,32],m=[1,33],v=[1,34],b=[1,35],_=[1,36],x=[1,37],w=[1,38],k=[1,41],T=[1,42],C=[1,43],E=[1,44],S=[1,45],A=[1,46],M=[1,49],N=[1,4,5,16,20,22,25,26,32,33,34,36,38,39,40,41,42,43,45,47,48,49,54,55,56,57,65,75],D=[4,5,16,20,22,25,26,32,33,34,36,38,39,40,41,42,43,45,49,54,55,56,57,65,75],B=[4,5,16,20,22,25,26,32,33,34,36,38,39,40,41,42,43,45,48,49,54,55,56,57,65,75],L=[4,5,16,20,22,25,26,32,33,34,36,38,39,40,41,42,43,45,47,49,54,55,56,57,65,75],O=[63,64,65],I=[1,114],R=[1,4,5,7,16,20,22,25,26,32,33,34,36,38,39,40,41,42,43,45,47,48,49,54,55,56,57,65,75],F={trace:function(){},yy:{},symbols_:{error:2,start:3,SPACE:4,NEWLINE:5,directive:6,SD:7,document:8,line:9,statement:10,openDirective:11,typeDirective:12,closeDirective:13,":":14,argDirective:15,participant:16,actor:17,AS:18,restOfLine:19,participant_actor:20,signal:21,autonumber:22,NUM:23,off:24,activate:25,deactivate:26,note_statement:27,links_statement:28,link_statement:29,properties_statement:30,details_statement:31,title:32,legacy_title:33,acc_title:34,acc_title_value:35,acc_descr:36,acc_descr_value:37,acc_descr_multiline_value:38,loop:39,end:40,rect:41,opt:42,alt:43,else_sections:44,par:45,par_sections:46,and:47,else:48,note:49,placement:50,text2:51,over:52,actor_pair:53,links:54,link:55,properties:56,details:57,spaceList:58,",":59,left_of:60,right_of:61,signaltype:62,"+":63,"-":64,ACTOR:65,SOLID_OPEN_ARROW:66,DOTTED_OPEN_ARROW:67,SOLID_ARROW:68,DOTTED_ARROW:69,SOLID_CROSS:70,DOTTED_CROSS:71,SOLID_POINT:72,DOTTED_POINT:73,TXT:74,open_directive:75,type_directive:76,arg_directive:77,close_directive:78,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NEWLINE",7:"SD",14:":",16:"participant",18:"AS",19:"restOfLine",20:"participant_actor",22:"autonumber",23:"NUM",24:"off",25:"activate",26:"deactivate",32:"title",33:"legacy_title",34:"acc_title",35:"acc_title_value",36:"acc_descr",37:"acc_descr_value",38:"acc_descr_multiline_value",39:"loop",40:"end",41:"rect",42:"opt",43:"alt",45:"par",47:"and",48:"else",49:"note",52:"over",54:"links",55:"link",56:"properties",57:"details",59:",",60:"left_of",61:"right_of",63:"+",64:"-",65:"ACTOR",66:"SOLID_OPEN_ARROW",67:"DOTTED_OPEN_ARROW",68:"SOLID_ARROW",69:"DOTTED_ARROW",70:"SOLID_CROSS",71:"DOTTED_CROSS",72:"SOLID_POINT",73:"DOTTED_POINT",74:"TXT",75:"open_directive",76:"type_directive",77:"arg_directive",78:"close_directive"},productions_:[0,[3,2],[3,2],[3,2],[3,2],[8,0],[8,2],[9,2],[9,1],[9,1],[6,4],[6,6],[10,5],[10,3],[10,5],[10,3],[10,2],[10,4],[10,3],[10,3],[10,2],[10,3],[10,3],[10,2],[10,2],[10,2],[10,2],[10,2],[10,1],[10,1],[10,2],[10,2],[10,1],[10,4],[10,4],[10,4],[10,4],[10,4],[10,1],[46,1],[46,4],[44,1],[44,4],[27,4],[27,4],[28,3],[29,3],[30,3],[31,3],[58,2],[58,1],[53,3],[53,1],[50,1],[50,1],[21,5],[21,5],[21,4],[17,1],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[51,1],[11,1],[12,1],[15,1],[13,1]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 4:return r.apply(a[s]),a[s];case 5:case 9:this.$=[];break;case 6:a[s-1].push(a[s]),this.$=a[s-1];break;case 7:case 8:case 52:this.$=a[s];break;case 12:a[s-3].type="addParticipant",a[s-3].description=r.parseMessage(a[s-1]),this.$=a[s-3];break;case 13:a[s-1].type="addParticipant",this.$=a[s-1];break;case 14:a[s-3].type="addActor",a[s-3].description=r.parseMessage(a[s-1]),this.$=a[s-3];break;case 15:a[s-1].type="addActor",this.$=a[s-1];break;case 17:this.$={type:"sequenceIndex",sequenceIndex:Number(a[s-2]),sequenceIndexStep:Number(a[s-1]),sequenceVisible:!0,signalType:r.LINETYPE.AUTONUMBER};break;case 18:this.$={type:"sequenceIndex",sequenceIndex:Number(a[s-1]),sequenceIndexStep:1,sequenceVisible:!0,signalType:r.LINETYPE.AUTONUMBER};break;case 19:this.$={type:"sequenceIndex",sequenceVisible:!1,signalType:r.LINETYPE.AUTONUMBER};break;case 20:this.$={type:"sequenceIndex",sequenceVisible:!0,signalType:r.LINETYPE.AUTONUMBER};break;case 21:this.$={type:"activeStart",signalType:r.LINETYPE.ACTIVE_START,actor:a[s-1]};break;case 22:this.$={type:"activeEnd",signalType:r.LINETYPE.ACTIVE_END,actor:a[s-1]};break;case 28:r.setDiagramTitle(a[s].substring(6)),this.$=a[s].substring(6);break;case 29:r.setDiagramTitle(a[s].substring(7)),this.$=a[s].substring(7);break;case 30:this.$=a[s].trim(),r.setTitle(this.$);break;case 31:case 32:this.$=a[s].trim(),r.setAccDescription(this.$);break;case 33:a[s-1].unshift({type:"loopStart",loopText:r.parseMessage(a[s-2]),signalType:r.LINETYPE.LOOP_START}),a[s-1].push({type:"loopEnd",loopText:a[s-2],signalType:r.LINETYPE.LOOP_END}),this.$=a[s-1];break;case 34:a[s-1].unshift({type:"rectStart",color:r.parseMessage(a[s-2]),signalType:r.LINETYPE.RECT_START}),a[s-1].push({type:"rectEnd",color:r.parseMessage(a[s-2]),signalType:r.LINETYPE.RECT_END}),this.$=a[s-1];break;case 35:a[s-1].unshift({type:"optStart",optText:r.parseMessage(a[s-2]),signalType:r.LINETYPE.OPT_START}),a[s-1].push({type:"optEnd",optText:r.parseMessage(a[s-2]),signalType:r.LINETYPE.OPT_END}),this.$=a[s-1];break;case 36:a[s-1].unshift({type:"altStart",altText:r.parseMessage(a[s-2]),signalType:r.LINETYPE.ALT_START}),a[s-1].push({type:"altEnd",signalType:r.LINETYPE.ALT_END}),this.$=a[s-1];break;case 37:a[s-1].unshift({type:"parStart",parText:r.parseMessage(a[s-2]),signalType:r.LINETYPE.PAR_START}),a[s-1].push({type:"parEnd",signalType:r.LINETYPE.PAR_END}),this.$=a[s-1];break;case 40:this.$=a[s-3].concat([{type:"and",parText:r.parseMessage(a[s-1]),signalType:r.LINETYPE.PAR_AND},a[s]]);break;case 42:this.$=a[s-3].concat([{type:"else",altText:r.parseMessage(a[s-1]),signalType:r.LINETYPE.ALT_ELSE},a[s]]);break;case 43:this.$=[a[s-1],{type:"addNote",placement:a[s-2],actor:a[s-1].actor,text:a[s]}];break;case 44:a[s-2]=[].concat(a[s-1],a[s-1]).slice(0,2),a[s-2][0]=a[s-2][0].actor,a[s-2][1]=a[s-2][1].actor,this.$=[a[s-1],{type:"addNote",placement:r.PLACEMENT.OVER,actor:a[s-2].slice(0,2),text:a[s]}];break;case 45:this.$=[a[s-1],{type:"addLinks",actor:a[s-1].actor,text:a[s]}];break;case 46:this.$=[a[s-1],{type:"addALink",actor:a[s-1].actor,text:a[s]}];break;case 47:this.$=[a[s-1],{type:"addProperties",actor:a[s-1].actor,text:a[s]}];break;case 48:this.$=[a[s-1],{type:"addDetails",actor:a[s-1].actor,text:a[s]}];break;case 51:this.$=[a[s-2],a[s]];break;case 53:this.$=r.PLACEMENT.LEFTOF;break;case 54:this.$=r.PLACEMENT.RIGHTOF;break;case 55:this.$=[a[s-4],a[s-1],{type:"addMessage",from:a[s-4].actor,to:a[s-1].actor,signalType:a[s-3],msg:a[s]},{type:"activeStart",signalType:r.LINETYPE.ACTIVE_START,actor:a[s-1]}];break;case 56:this.$=[a[s-4],a[s-1],{type:"addMessage",from:a[s-4].actor,to:a[s-1].actor,signalType:a[s-3],msg:a[s]},{type:"activeEnd",signalType:r.LINETYPE.ACTIVE_END,actor:a[s-4]}];break;case 57:this.$=[a[s-3],a[s-1],{type:"addMessage",from:a[s-3].actor,to:a[s-1].actor,signalType:a[s-2],msg:a[s]}];break;case 58:this.$={type:"addParticipant",actor:a[s]};break;case 59:this.$=r.LINETYPE.SOLID_OPEN;break;case 60:this.$=r.LINETYPE.DOTTED_OPEN;break;case 61:this.$=r.LINETYPE.SOLID;break;case 62:this.$=r.LINETYPE.DOTTED;break;case 63:this.$=r.LINETYPE.SOLID_CROSS;break;case 64:this.$=r.LINETYPE.DOTTED_CROSS;break;case 65:this.$=r.LINETYPE.SOLID_POINT;break;case 66:this.$=r.LINETYPE.DOTTED_POINT;break;case 67:this.$=r.parseMessage(a[s].trim().substring(1));break;case 68:r.parseDirective("%%{","open_directive");break;case 69:r.parseDirective(a[s],"type_directive");break;case 70:a[s]=a[s].trim().replace(/'/g,'"'),r.parseDirective(a[s],"arg_directive");break;case 71:r.parseDirective("}%%","close_directive","sequence")}},table:[{3:1,4:e,5:n,6:4,7:r,11:6,75:i},{1:[3]},{3:8,4:e,5:n,6:4,7:r,11:6,75:i},{3:9,4:e,5:n,6:4,7:r,11:6,75:i},{3:10,4:e,5:n,6:4,7:r,11:6,75:i},t([1,4,5,16,20,22,25,26,32,33,34,36,38,39,41,42,43,45,49,54,55,56,57,65,75],a,{8:11}),{12:12,76:[1,13]},{76:[2,68]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{1:[2,4],4:o,5:s,6:39,9:14,10:16,11:6,16:c,17:40,20:u,21:20,22:l,25:h,26:f,27:24,28:25,29:26,30:27,31:28,32:d,33:p,34:g,36:y,38:m,39:v,41:b,42:_,43:x,45:w,49:k,54:T,55:C,56:E,57:S,65:A,75:i},{13:47,14:[1,48],78:M},t([14,78],[2,69]),t(N,[2,6]),{6:39,10:50,11:6,16:c,17:40,20:u,21:20,22:l,25:h,26:f,27:24,28:25,29:26,30:27,31:28,32:d,33:p,34:g,36:y,38:m,39:v,41:b,42:_,43:x,45:w,49:k,54:T,55:C,56:E,57:S,65:A,75:i},t(N,[2,8]),t(N,[2,9]),{17:51,65:A},{17:52,65:A},{5:[1,53]},{5:[1,56],23:[1,54],24:[1,55]},{17:57,65:A},{17:58,65:A},{5:[1,59]},{5:[1,60]},{5:[1,61]},{5:[1,62]},{5:[1,63]},t(N,[2,28]),t(N,[2,29]),{35:[1,64]},{37:[1,65]},t(N,[2,32]),{19:[1,66]},{19:[1,67]},{19:[1,68]},{19:[1,69]},{19:[1,70]},t(N,[2,38]),{62:71,66:[1,72],67:[1,73],68:[1,74],69:[1,75],70:[1,76],71:[1,77],72:[1,78],73:[1,79]},{50:80,52:[1,81],60:[1,82],61:[1,83]},{17:84,65:A},{17:85,65:A},{17:86,65:A},{17:87,65:A},t([5,18,59,66,67,68,69,70,71,72,73,74],[2,58]),{5:[1,88]},{15:89,77:[1,90]},{5:[2,71]},t(N,[2,7]),{5:[1,92],18:[1,91]},{5:[1,94],18:[1,93]},t(N,[2,16]),{5:[1,96],23:[1,95]},{5:[1,97]},t(N,[2,20]),{5:[1,98]},{5:[1,99]},t(N,[2,23]),t(N,[2,24]),t(N,[2,25]),t(N,[2,26]),t(N,[2,27]),t(N,[2,30]),t(N,[2,31]),t(D,a,{8:100}),t(D,a,{8:101}),t(D,a,{8:102}),t(B,a,{44:103,8:104}),t(L,a,{46:105,8:106}),{17:109,63:[1,107],64:[1,108],65:A},t(O,[2,59]),t(O,[2,60]),t(O,[2,61]),t(O,[2,62]),t(O,[2,63]),t(O,[2,64]),t(O,[2,65]),t(O,[2,66]),{17:110,65:A},{17:112,53:111,65:A},{65:[2,53]},{65:[2,54]},{51:113,74:I},{51:115,74:I},{51:116,74:I},{51:117,74:I},t(R,[2,10]),{13:118,78:M},{78:[2,70]},{19:[1,119]},t(N,[2,13]),{19:[1,120]},t(N,[2,15]),{5:[1,121]},t(N,[2,18]),t(N,[2,19]),t(N,[2,21]),t(N,[2,22]),{4:o,5:s,6:39,9:14,10:16,11:6,16:c,17:40,20:u,21:20,22:l,25:h,26:f,27:24,28:25,29:26,30:27,31:28,32:d,33:p,34:g,36:y,38:m,39:v,40:[1,122],41:b,42:_,43:x,45:w,49:k,54:T,55:C,56:E,57:S,65:A,75:i},{4:o,5:s,6:39,9:14,10:16,11:6,16:c,17:40,20:u,21:20,22:l,25:h,26:f,27:24,28:25,29:26,30:27,31:28,32:d,33:p,34:g,36:y,38:m,39:v,40:[1,123],41:b,42:_,43:x,45:w,49:k,54:T,55:C,56:E,57:S,65:A,75:i},{4:o,5:s,6:39,9:14,10:16,11:6,16:c,17:40,20:u,21:20,22:l,25:h,26:f,27:24,28:25,29:26,30:27,31:28,32:d,33:p,34:g,36:y,38:m,39:v,40:[1,124],41:b,42:_,43:x,45:w,49:k,54:T,55:C,56:E,57:S,65:A,75:i},{40:[1,125]},{4:o,5:s,6:39,9:14,10:16,11:6,16:c,17:40,20:u,21:20,22:l,25:h,26:f,27:24,28:25,29:26,30:27,31:28,32:d,33:p,34:g,36:y,38:m,39:v,40:[2,41],41:b,42:_,43:x,45:w,48:[1,126],49:k,54:T,55:C,56:E,57:S,65:A,75:i},{40:[1,127]},{4:o,5:s,6:39,9:14,10:16,11:6,16:c,17:40,20:u,21:20,22:l,25:h,26:f,27:24,28:25,29:26,30:27,31:28,32:d,33:p,34:g,36:y,38:m,39:v,40:[2,39],41:b,42:_,43:x,45:w,47:[1,128],49:k,54:T,55:C,56:E,57:S,65:A,75:i},{17:129,65:A},{17:130,65:A},{51:131,74:I},{51:132,74:I},{51:133,74:I},{59:[1,134],74:[2,52]},{5:[2,45]},{5:[2,67]},{5:[2,46]},{5:[2,47]},{5:[2,48]},{5:[1,135]},{5:[1,136]},{5:[1,137]},t(N,[2,17]),t(N,[2,33]),t(N,[2,34]),t(N,[2,35]),t(N,[2,36]),{19:[1,138]},t(N,[2,37]),{19:[1,139]},{51:140,74:I},{51:141,74:I},{5:[2,57]},{5:[2,43]},{5:[2,44]},{17:142,65:A},t(R,[2,11]),t(N,[2,12]),t(N,[2,14]),t(B,a,{8:104,44:143}),t(L,a,{8:106,46:144}),{5:[2,55]},{5:[2,56]},{74:[2,51]},{40:[2,42]},{40:[2,40]}],defaultActions:{7:[2,68],8:[2,1],9:[2,2],10:[2,3],49:[2,71],82:[2,53],83:[2,54],90:[2,70],113:[2,45],114:[2,67],115:[2,46],116:[2,47],117:[2,48],131:[2,57],132:[2,43],133:[2,44],140:[2,55],141:[2,56],142:[2,51],143:[2,42],144:[2,40]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",c=0,u=0,l=0,h=2,f=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),g={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(g.yy[y]=this.yy[y]);p.setInput(t,g.yy),g.yy.lexer=p,g.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var m=p.yylloc;a.push(m);var v=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||f)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var _,x,w,k,T,C,E,S,A,M={};;){if(w=n[n.length-1],this.defaultActions[w]?k=this.defaultActions[w]:(null==_&&(_=b()),k=o[w]&&o[w][_]),void 0===k||!k.length||!k[0]){var N="";for(C in A=[],o[w])this.terminals_[C]&&C>h&&A.push("'"+this.terminals_[C]+"'");N=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+A.join(", ")+", got '"+(this.terminals_[_]||_)+"'":"Parse error on line "+(c+1)+": Unexpected "+(_==f?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(N,{text:p.match,token:this.terminals_[_]||_,line:p.yylineno,loc:m,expected:A})}if(k[0]instanceof Array&&k.length>1)throw new Error("Parse Error: multiple actions possible at state: "+w+", token: "+_);switch(k[0]){case 1:n.push(_),i.push(p.yytext),a.push(p.yylloc),n.push(k[1]),_=null,x?(_=x,x=null):(u=p.yyleng,s=p.yytext,c=p.yylineno,m=p.yylloc,l>0&&l--);break;case 2:if(E=this.productions_[k[1]][1],M.$=i[i.length-E],M._$={first_line:a[a.length-(E||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(E||1)].first_column,last_column:a[a.length-1].last_column},v&&(M._$.range=[a[a.length-(E||1)].range[0],a[a.length-1].range[1]]),void 0!==(T=this.performAction.apply(M,[s,u,c,g.yy,k[1],i,a].concat(d))))return T;E&&(n=n.slice(0,-1*E*2),i=i.slice(0,-1*E),a=a.slice(0,-1*E)),n.push(this.productions_[k[1]][0]),i.push(M.$),a.push(M._$),S=o[n[n.length-2]][n[n.length-1]],n.push(S);break;case 3:return!0}}return!0}},P={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;a<i.length;a++)if((n=this._input.match(this.rules[i[a]]))&&(!e||n[0].length>e[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),75;case 1:return this.begin("type_directive"),76;case 2:return this.popState(),this.begin("arg_directive"),14;case 3:return this.popState(),this.popState(),78;case 4:return 77;case 5:case 49:case 62:return 5;case 6:case 7:case 8:case 9:case 10:break;case 11:return 23;case 12:return this.begin("ID"),16;case 13:return this.begin("ID"),20;case 14:return e.yytext=e.yytext.trim(),this.begin("ALIAS"),65;case 15:return this.popState(),this.popState(),this.begin("LINE"),18;case 16:return this.popState(),this.popState(),5;case 17:return this.begin("LINE"),39;case 18:return this.begin("LINE"),41;case 19:return this.begin("LINE"),42;case 20:return this.begin("LINE"),43;case 21:return this.begin("LINE"),48;case 22:return this.begin("LINE"),45;case 23:return this.begin("LINE"),47;case 24:return this.popState(),19;case 25:return 40;case 26:return 60;case 27:return 61;case 28:return 54;case 29:return 55;case 30:return 56;case 31:return 57;case 32:return 52;case 33:return 49;case 34:return this.begin("ID"),25;case 35:return this.begin("ID"),26;case 36:return 32;case 37:return 33;case 38:return this.begin("acc_title"),34;case 39:return this.popState(),"acc_title_value";case 40:return this.begin("acc_descr"),36;case 41:return this.popState(),"acc_descr_value";case 42:this.begin("acc_descr_multiline");break;case 43:this.popState();break;case 44:return"acc_descr_multiline_value";case 45:return 7;case 46:return 22;case 47:return 24;case 48:return 59;case 50:return e.yytext=e.yytext.trim(),65;case 51:return 68;case 52:return 69;case 53:return 66;case 54:return 67;case 55:return 70;case 56:return 71;case 57:return 72;case 58:return 73;case 59:return 74;case 60:return 63;case 61:return 64;case 63:return"INVALID"}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[0-9]+(?=[ \n]+))/i,/^(?:participant\b)/i,/^(?:actor\b)/i,/^(?:[^\->:\n,;]+?(?=((?!\n)\s)+as(?!\n)\s|[#\n;]|$))/i,/^(?:as\b)/i,/^(?:(?:))/i,/^(?:loop\b)/i,/^(?:rect\b)/i,/^(?:opt\b)/i,/^(?:alt\b)/i,/^(?:else\b)/i,/^(?:par\b)/i,/^(?:and\b)/i,/^(?:(?:[:]?(?:no)?wrap)?[^#\n;]*)/i,/^(?:end\b)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:links\b)/i,/^(?:link\b)/i,/^(?:properties\b)/i,/^(?:details\b)/i,/^(?:over\b)/i,/^(?:note\b)/i,/^(?:activate\b)/i,/^(?:deactivate\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:title:\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:sequenceDiagram\b)/i,/^(?:autonumber\b)/i,/^(?:off\b)/i,/^(?:,)/i,/^(?:;)/i,/^(?:[^\+\->:\n,;]+((?!(-x|--x|-\)|--\)))[\-]*[^\+\->:\n,;]+)*)/i,/^(?:->>)/i,/^(?:-->>)/i,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?:-[\)])/i,/^(?:--[\)])/i,/^(?::(?:(?:no)?wrap)?[^#\n;]+)/i,/^(?:\+)/i,/^(?:-)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[43,44],inclusive:!1},acc_descr:{rules:[41],inclusive:!1},acc_title:{rules:[39],inclusive:!1},open_directive:{rules:[1,8],inclusive:!1},type_directive:{rules:[2,3,8],inclusive:!1},arg_directive:{rules:[3,4,8],inclusive:!1},ID:{rules:[7,8,14],inclusive:!1},ALIAS:{rules:[7,8,15,16],inclusive:!1},LINE:{rules:[7,8,24],inclusive:!1},INITIAL:{rules:[0,5,6,8,9,10,11,12,13,17,18,19,20,21,22,23,25,26,27,28,29,30,31,32,33,34,35,36,37,38,40,42,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63],inclusive:!0}}};function Y(){this.yy={}}return F.lexer=P,Y.prototype=F,F.Parser=Y,new Y}();e.parser=r,e.Parser=r.Parser,e.parse=function(){return r.parse.apply(r,arguments)},e.main=function(t){t[1]||(console.log("Usage: "+t[0]+" FILE"),process.exit(1));var r=n(1993).readFileSync(n(6470).normalize(t[1]),"utf8");return e.parser.parse(r)},n.c[n.s]===t&&e.main(process.argv.slice(1))},3584:(t,e,n)=>{t=n.nmd(t);var r=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[1,2],n=[1,3],r=[1,5],i=[1,7],a=[2,5],o=[1,15],s=[1,17],c=[1,19],u=[1,20],l=[1,21],h=[1,22],f=[1,33],d=[1,23],p=[1,24],g=[1,25],y=[1,26],m=[1,27],v=[1,30],b=[1,31],_=[1,32],x=[1,35],w=[1,36],k=[1,37],T=[1,38],C=[1,34],E=[1,41],S=[1,4,5,14,15,17,19,20,22,23,24,25,26,27,31,33,35,41,42,43,44,47,50],A=[1,4,5,12,13,14,15,17,19,20,22,23,24,25,26,27,31,33,35,41,42,43,44,47,50],M=[1,4,5,7,14,15,17,19,20,22,23,24,25,26,27,31,33,35,41,42,43,44,47,50],N=[4,5,14,15,17,19,20,22,23,24,25,26,27,31,33,35,41,42,43,44,47,50],D={trace:function(){},yy:{},symbols_:{error:2,start:3,SPACE:4,NL:5,directive:6,SD:7,document:8,line:9,statement:10,idStatement:11,DESCR:12,"--\x3e":13,HIDE_EMPTY:14,scale:15,WIDTH:16,COMPOSIT_STATE:17,STRUCT_START:18,STRUCT_STOP:19,STATE_DESCR:20,AS:21,ID:22,FORK:23,JOIN:24,CHOICE:25,CONCURRENT:26,note:27,notePosition:28,NOTE_TEXT:29,direction:30,acc_title:31,acc_title_value:32,acc_descr:33,acc_descr_value:34,acc_descr_multiline_value:35,openDirective:36,typeDirective:37,closeDirective:38,":":39,argDirective:40,direction_tb:41,direction_bt:42,direction_rl:43,direction_lr:44,eol:45,";":46,EDGE_STATE:47,left_of:48,right_of:49,open_directive:50,type_directive:51,arg_directive:52,close_directive:53,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NL",7:"SD",12:"DESCR",13:"--\x3e",14:"HIDE_EMPTY",15:"scale",16:"WIDTH",17:"COMPOSIT_STATE",18:"STRUCT_START",19:"STRUCT_STOP",20:"STATE_DESCR",21:"AS",22:"ID",23:"FORK",24:"JOIN",25:"CHOICE",26:"CONCURRENT",27:"note",29:"NOTE_TEXT",31:"acc_title",32:"acc_title_value",33:"acc_descr",34:"acc_descr_value",35:"acc_descr_multiline_value",39:":",41:"direction_tb",42:"direction_bt",43:"direction_rl",44:"direction_lr",46:";",47:"EDGE_STATE",48:"left_of",49:"right_of",50:"open_directive",51:"type_directive",52:"arg_directive",53:"close_directive"},productions_:[0,[3,2],[3,2],[3,2],[3,2],[8,0],[8,2],[9,2],[9,1],[9,1],[10,1],[10,2],[10,3],[10,4],[10,1],[10,2],[10,1],[10,4],[10,3],[10,6],[10,1],[10,1],[10,1],[10,1],[10,4],[10,4],[10,1],[10,1],[10,2],[10,2],[10,1],[6,3],[6,5],[30,1],[30,1],[30,1],[30,1],[45,1],[45,1],[11,1],[11,1],[28,1],[28,1],[36,1],[37,1],[40,1],[38,1]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 4:return r.setRootDoc(a[s]),a[s];case 5:this.$=[];break;case 6:"nl"!=a[s]&&(a[s-1].push(a[s]),this.$=a[s-1]);break;case 7:case 8:case 39:case 40:this.$=a[s];break;case 9:this.$="nl";break;case 10:this.$={stmt:"state",id:a[s],type:"default",description:""};break;case 11:this.$={stmt:"state",id:a[s-1],type:"default",description:r.trimColon(a[s])};break;case 12:this.$={stmt:"relation",state1:{stmt:"state",id:a[s-2],type:"default",description:""},state2:{stmt:"state",id:a[s],type:"default",description:""}};break;case 13:this.$={stmt:"relation",state1:{stmt:"state",id:a[s-3],type:"default",description:""},state2:{stmt:"state",id:a[s-1],type:"default",description:""},description:a[s].substr(1).trim()};break;case 17:this.$={stmt:"state",id:a[s-3],type:"default",description:"",doc:a[s-1]};break;case 18:var c=a[s],u=a[s-2].trim();if(a[s].match(":")){var l=a[s].split(":");c=l[0],u=[u,l[1]]}this.$={stmt:"state",id:c,type:"default",description:u};break;case 19:this.$={stmt:"state",id:a[s-3],type:"default",description:a[s-5],doc:a[s-1]};break;case 20:this.$={stmt:"state",id:a[s],type:"fork"};break;case 21:this.$={stmt:"state",id:a[s],type:"join"};break;case 22:this.$={stmt:"state",id:a[s],type:"choice"};break;case 23:this.$={stmt:"state",id:r.getDividerId(),type:"divider"};break;case 24:this.$={stmt:"state",id:a[s-1].trim(),note:{position:a[s-2].trim(),text:a[s].trim()}};break;case 28:this.$=a[s].trim(),r.setTitle(this.$);break;case 29:case 30:this.$=a[s].trim(),r.setAccDescription(this.$);break;case 33:r.setDirection("TB"),this.$={stmt:"dir",value:"TB"};break;case 34:r.setDirection("BT"),this.$={stmt:"dir",value:"BT"};break;case 35:r.setDirection("RL"),this.$={stmt:"dir",value:"RL"};break;case 36:r.setDirection("LR"),this.$={stmt:"dir",value:"LR"};break;case 43:r.parseDirective("%%{","open_directive");break;case 44:r.parseDirective(a[s],"type_directive");break;case 45:a[s]=a[s].trim().replace(/'/g,'"'),r.parseDirective(a[s],"arg_directive");break;case 46:r.parseDirective("}%%","close_directive","state")}},table:[{3:1,4:e,5:n,6:4,7:r,36:6,50:i},{1:[3]},{3:8,4:e,5:n,6:4,7:r,36:6,50:i},{3:9,4:e,5:n,6:4,7:r,36:6,50:i},{3:10,4:e,5:n,6:4,7:r,36:6,50:i},t([1,4,5,14,15,17,20,22,23,24,25,26,27,31,33,35,41,42,43,44,47,50],a,{8:11}),{37:12,51:[1,13]},{51:[2,43]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{1:[2,4],4:o,5:s,6:28,9:14,10:16,11:18,14:c,15:u,17:l,20:h,22:f,23:d,24:p,25:g,26:y,27:m,30:29,31:v,33:b,35:_,36:6,41:x,42:w,43:k,44:T,47:C,50:i},{38:39,39:[1,40],53:E},t([39,53],[2,44]),t(S,[2,6]),{6:28,10:42,11:18,14:c,15:u,17:l,20:h,22:f,23:d,24:p,25:g,26:y,27:m,30:29,31:v,33:b,35:_,36:6,41:x,42:w,43:k,44:T,47:C,50:i},t(S,[2,8]),t(S,[2,9]),t(S,[2,10],{12:[1,43],13:[1,44]}),t(S,[2,14]),{16:[1,45]},t(S,[2,16],{18:[1,46]}),{21:[1,47]},t(S,[2,20]),t(S,[2,21]),t(S,[2,22]),t(S,[2,23]),{28:48,29:[1,49],48:[1,50],49:[1,51]},t(S,[2,26]),t(S,[2,27]),{32:[1,52]},{34:[1,53]},t(S,[2,30]),t(A,[2,39]),t(A,[2,40]),t(S,[2,33]),t(S,[2,34]),t(S,[2,35]),t(S,[2,36]),t(M,[2,31]),{40:54,52:[1,55]},t(M,[2,46]),t(S,[2,7]),t(S,[2,11]),{11:56,22:f,47:C},t(S,[2,15]),t(N,a,{8:57}),{22:[1,58]},{22:[1,59]},{21:[1,60]},{22:[2,41]},{22:[2,42]},t(S,[2,28]),t(S,[2,29]),{38:61,53:E},{53:[2,45]},t(S,[2,12],{12:[1,62]}),{4:o,5:s,6:28,9:14,10:16,11:18,14:c,15:u,17:l,19:[1,63],20:h,22:f,23:d,24:p,25:g,26:y,27:m,30:29,31:v,33:b,35:_,36:6,41:x,42:w,43:k,44:T,47:C,50:i},t(S,[2,18],{18:[1,64]}),{29:[1,65]},{22:[1,66]},t(M,[2,32]),t(S,[2,13]),t(S,[2,17]),t(N,a,{8:67}),t(S,[2,24]),t(S,[2,25]),{4:o,5:s,6:28,9:14,10:16,11:18,14:c,15:u,17:l,19:[1,68],20:h,22:f,23:d,24:p,25:g,26:y,27:m,30:29,31:v,33:b,35:_,36:6,41:x,42:w,43:k,44:T,47:C,50:i},t(S,[2,19])],defaultActions:{7:[2,43],8:[2,1],9:[2,2],10:[2,3],50:[2,41],51:[2,42],55:[2,45]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",c=0,u=0,l=0,h=2,f=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),g={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(g.yy[y]=this.yy[y]);p.setInput(t,g.yy),g.yy.lexer=p,g.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var m=p.yylloc;a.push(m);var v=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||f)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var _,x,w,k,T,C,E,S,A,M={};;){if(w=n[n.length-1],this.defaultActions[w]?k=this.defaultActions[w]:(null==_&&(_=b()),k=o[w]&&o[w][_]),void 0===k||!k.length||!k[0]){var N="";for(C in A=[],o[w])this.terminals_[C]&&C>h&&A.push("'"+this.terminals_[C]+"'");N=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+A.join(", ")+", got '"+(this.terminals_[_]||_)+"'":"Parse error on line "+(c+1)+": Unexpected "+(_==f?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(N,{text:p.match,token:this.terminals_[_]||_,line:p.yylineno,loc:m,expected:A})}if(k[0]instanceof Array&&k.length>1)throw new Error("Parse Error: multiple actions possible at state: "+w+", token: "+_);switch(k[0]){case 1:n.push(_),i.push(p.yytext),a.push(p.yylloc),n.push(k[1]),_=null,x?(_=x,x=null):(u=p.yyleng,s=p.yytext,c=p.yylineno,m=p.yylloc,l>0&&l--);break;case 2:if(E=this.productions_[k[1]][1],M.$=i[i.length-E],M._$={first_line:a[a.length-(E||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(E||1)].first_column,last_column:a[a.length-1].last_column},v&&(M._$.range=[a[a.length-(E||1)].range[0],a[a.length-1].range[1]]),void 0!==(T=this.performAction.apply(M,[s,u,c,g.yy,k[1],i,a].concat(d))))return T;E&&(n=n.slice(0,-1*E*2),i=i.slice(0,-1*E),a=a.slice(0,-1*E)),n.push(this.productions_[k[1]][0]),i.push(M.$),a.push(M._$),S=o[n[n.length-2]][n[n.length-1]],n.push(S);break;case 3:return!0}}return!0}},B={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;a<i.length;a++)if((n=this._input.match(this.rules[i[a]]))&&(!e||n[0].length>e[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:case 33:return 41;case 1:case 34:return 42;case 2:case 35:return 43;case 3:case 36:return 44;case 4:return this.begin("open_directive"),50;case 5:return this.begin("type_directive"),51;case 6:return this.popState(),this.begin("arg_directive"),39;case 7:return this.popState(),this.popState(),53;case 8:return 52;case 9:case 10:case 12:case 13:case 14:case 15:case 46:case 52:break;case 11:case 66:return 5;case 16:return this.pushState("SCALE"),15;case 17:return 16;case 18:case 24:case 40:case 43:this.popState();break;case 19:return this.begin("acc_title"),31;case 20:return this.popState(),"acc_title_value";case 21:return this.begin("acc_descr"),33;case 22:return this.popState(),"acc_descr_value";case 23:this.begin("acc_descr_multiline");break;case 25:return"acc_descr_multiline_value";case 26:this.pushState("STATE");break;case 27:case 30:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),23;case 28:case 31:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),24;case 29:case 32:return this.popState(),e.yytext=e.yytext.slice(0,-10).trim(),25;case 37:this.begin("STATE_STRING");break;case 38:return this.popState(),this.pushState("STATE_ID"),"AS";case 39:case 54:return this.popState(),"ID";case 41:return"STATE_DESCR";case 42:return 17;case 44:return this.popState(),this.pushState("struct"),18;case 45:return this.popState(),19;case 47:return this.begin("NOTE"),27;case 48:return this.popState(),this.pushState("NOTE_ID"),48;case 49:return this.popState(),this.pushState("NOTE_ID"),49;case 50:this.popState(),this.pushState("FLOATING_NOTE");break;case 51:return this.popState(),this.pushState("FLOATING_NOTE_ID"),"AS";case 53:return"NOTE_TEXT";case 55:return this.popState(),this.pushState("NOTE_TEXT"),22;case 56:return this.popState(),e.yytext=e.yytext.substr(2).trim(),29;case 57:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),29;case 58:case 59:return 7;case 60:return 14;case 61:return 47;case 62:return 22;case 63:return e.yytext=e.yytext.trim(),12;case 64:return 13;case 65:return 26;case 67:return"INVALID"}},rules:[/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:[\s]+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:state\s+)/i,/^(?:.*<<fork>>)/i,/^(?:.*<<join>>)/i,/^(?:.*<<choice>>)/i,/^(?:.*\[\[fork\]\])/i,/^(?:.*\[\[join\]\])/i,/^(?:.*\[\[choice\]\])/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:["])/i,/^(?:\s*as\s+)/i,/^(?:[^\n\{]*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n\s\{]+)/i,/^(?:\n)/i,/^(?:\{)/i,/^(?:\})/i,/^(?:[\n])/i,/^(?:note\s+)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:")/i,/^(?:\s*as\s*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n]*)/i,/^(?:\s*[^:\n\s\-]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:[\s\S]*?end note\b)/i,/^(?:stateDiagram\s+)/i,/^(?:stateDiagram-v2\s+)/i,/^(?:hide empty description\b)/i,/^(?:\[\*\])/i,/^(?:[^:\n\s\-\{]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:-->)/i,/^(?:--)/i,/^(?:$)/i,/^(?:.)/i],conditions:{LINE:{rules:[13,14],inclusive:!1},close_directive:{rules:[13,14],inclusive:!1},arg_directive:{rules:[7,8,13,14],inclusive:!1},type_directive:{rules:[6,7,13,14],inclusive:!1},open_directive:{rules:[5,13,14],inclusive:!1},struct:{rules:[13,14,26,33,34,35,36,45,46,47,61,62,63,64,65],inclusive:!1},FLOATING_NOTE_ID:{rules:[54],inclusive:!1},FLOATING_NOTE:{rules:[51,52,53],inclusive:!1},NOTE_TEXT:{rules:[56,57],inclusive:!1},NOTE_ID:{rules:[55],inclusive:!1},NOTE:{rules:[48,49,50],inclusive:!1},acc_descr_multiline:{rules:[24,25],inclusive:!1},acc_descr:{rules:[22],inclusive:!1},acc_title:{rules:[20],inclusive:!1},SCALE:{rules:[17,18],inclusive:!1},ALIAS:{rules:[],inclusive:!1},STATE_ID:{rules:[39],inclusive:!1},STATE_STRING:{rules:[40,41],inclusive:!1},FORK_STATE:{rules:[],inclusive:!1},STATE:{rules:[13,14,27,28,29,30,31,32,37,38,42,43,44],inclusive:!1},ID:{rules:[13,14],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,9,10,11,12,14,15,16,19,21,23,26,44,47,58,59,60,61,62,63,64,66,67],inclusive:!0}}};function L(){this.yy={}}return D.lexer=B,L.prototype=D,D.Parser=L,new L}();e.parser=r,e.Parser=r.Parser,e.parse=function(){return r.parse.apply(r,arguments)},e.main=function(t){t[1]||(console.log("Usage: "+t[0]+" FILE"),process.exit(1));var r=n(3069).readFileSync(n(6470).normalize(t[1]),"utf8");return e.parser.parse(r)},n.c[n.s]===t&&e.main(process.argv.slice(1))},9763:(t,e,n)=>{t=n.nmd(t);var r=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[1,2],n=[1,5],r=[6,9,11,17,18,20,22,23,24,26],i=[1,15],a=[1,16],o=[1,17],s=[1,18],c=[1,19],u=[1,20],l=[1,24],h=[4,6,9,11,17,18,20,22,23,24,26],f={trace:function(){},yy:{},symbols_:{error:2,start:3,journey:4,document:5,EOF:6,directive:7,line:8,SPACE:9,statement:10,NEWLINE:11,openDirective:12,typeDirective:13,closeDirective:14,":":15,argDirective:16,title:17,acc_title:18,acc_title_value:19,acc_descr:20,acc_descr_value:21,acc_descr_multiline_value:22,section:23,taskName:24,taskData:25,open_directive:26,type_directive:27,arg_directive:28,close_directive:29,$accept:0,$end:1},terminals_:{2:"error",4:"journey",6:"EOF",9:"SPACE",11:"NEWLINE",15:":",17:"title",18:"acc_title",19:"acc_title_value",20:"acc_descr",21:"acc_descr_value",22:"acc_descr_multiline_value",23:"section",24:"taskName",25:"taskData",26:"open_directive",27:"type_directive",28:"arg_directive",29:"close_directive"},productions_:[0,[3,3],[3,2],[5,0],[5,2],[8,2],[8,1],[8,1],[8,1],[7,4],[7,6],[10,1],[10,2],[10,2],[10,1],[10,1],[10,2],[10,1],[12,1],[13,1],[16,1],[14,1]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 1:return a[s-1];case 3:case 7:case 8:this.$=[];break;case 4:a[s-1].push(a[s]),this.$=a[s-1];break;case 5:case 6:this.$=a[s];break;case 11:r.setTitle(a[s].substr(6)),this.$=a[s].substr(6);break;case 12:this.$=a[s].trim(),r.setTitle(this.$);break;case 13:case 14:this.$=a[s].trim(),r.setAccDescription(this.$);break;case 15:r.addSection(a[s].substr(8)),this.$=a[s].substr(8);break;case 16:r.addTask(a[s-1],a[s]),this.$="task";break;case 18:r.parseDirective("%%{","open_directive");break;case 19:r.parseDirective(a[s],"type_directive");break;case 20:a[s]=a[s].trim().replace(/'/g,'"'),r.parseDirective(a[s],"arg_directive");break;case 21:r.parseDirective("}%%","close_directive","journey")}},table:[{3:1,4:e,7:3,12:4,26:n},{1:[3]},t(r,[2,3],{5:6}),{3:7,4:e,7:3,12:4,26:n},{13:8,27:[1,9]},{27:[2,18]},{6:[1,10],7:21,8:11,9:[1,12],10:13,11:[1,14],12:4,17:i,18:a,20:o,22:s,23:c,24:u,26:n},{1:[2,2]},{14:22,15:[1,23],29:l},t([15,29],[2,19]),t(r,[2,8],{1:[2,1]}),t(r,[2,4]),{7:21,10:25,12:4,17:i,18:a,20:o,22:s,23:c,24:u,26:n},t(r,[2,6]),t(r,[2,7]),t(r,[2,11]),{19:[1,26]},{21:[1,27]},t(r,[2,14]),t(r,[2,15]),{25:[1,28]},t(r,[2,17]),{11:[1,29]},{16:30,28:[1,31]},{11:[2,21]},t(r,[2,5]),t(r,[2,12]),t(r,[2,13]),t(r,[2,16]),t(h,[2,9]),{14:32,29:l},{29:[2,20]},{11:[1,33]},t(h,[2,10])],defaultActions:{5:[2,18],7:[2,2],24:[2,21],31:[2,20]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",c=0,u=0,l=0,h=2,f=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),g={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(g.yy[y]=this.yy[y]);p.setInput(t,g.yy),g.yy.lexer=p,g.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var m=p.yylloc;a.push(m);var v=p.options&&p.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||p.lex()||f)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var _,x,w,k,T,C,E,S,A,M={};;){if(w=n[n.length-1],this.defaultActions[w]?k=this.defaultActions[w]:(null==_&&(_=b()),k=o[w]&&o[w][_]),void 0===k||!k.length||!k[0]){var N="";for(C in A=[],o[w])this.terminals_[C]&&C>h&&A.push("'"+this.terminals_[C]+"'");N=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+A.join(", ")+", got '"+(this.terminals_[_]||_)+"'":"Parse error on line "+(c+1)+": Unexpected "+(_==f?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(N,{text:p.match,token:this.terminals_[_]||_,line:p.yylineno,loc:m,expected:A})}if(k[0]instanceof Array&&k.length>1)throw new Error("Parse Error: multiple actions possible at state: "+w+", token: "+_);switch(k[0]){case 1:n.push(_),i.push(p.yytext),a.push(p.yylloc),n.push(k[1]),_=null,x?(_=x,x=null):(u=p.yyleng,s=p.yytext,c=p.yylineno,m=p.yylloc,l>0&&l--);break;case 2:if(E=this.productions_[k[1]][1],M.$=i[i.length-E],M._$={first_line:a[a.length-(E||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(E||1)].first_column,last_column:a[a.length-1].last_column},v&&(M._$.range=[a[a.length-(E||1)].range[0],a[a.length-1].range[1]]),void 0!==(T=this.performAction.apply(M,[s,u,c,g.yy,k[1],i,a].concat(d))))return T;E&&(n=n.slice(0,-1*E*2),i=i.slice(0,-1*E),a=a.slice(0,-1*E)),n.push(this.productions_[k[1]][0]),i.push(M.$),a.push(M._$),S=o[n[n.length-2]][n[n.length-1]],n.push(S);break;case 3:return!0}}return!0}},d={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;a<i.length;a++)if((n=this._input.match(this.rules[i[a]]))&&(!e||n[0].length>e[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return this.begin("open_directive"),26;case 1:return this.begin("type_directive"),27;case 2:return this.popState(),this.begin("arg_directive"),15;case 3:return this.popState(),this.popState(),29;case 4:return 28;case 5:case 6:case 8:case 9:break;case 7:return 11;case 10:return 4;case 11:return 17;case 12:return this.begin("acc_title"),18;case 13:return this.popState(),"acc_title_value";case 14:return this.begin("acc_descr"),20;case 15:return this.popState(),"acc_descr_value";case 16:this.begin("acc_descr_multiline");break;case 17:this.popState();break;case 18:return"acc_descr_multiline_value";case 19:return 23;case 20:return 24;case 21:return 25;case 22:return 15;case 23:return 6;case 24:return"INVALID"}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:journey\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{open_directive:{rules:[1],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},acc_descr_multiline:{rules:[17,18],inclusive:!1},acc_descr:{rules:[15],inclusive:!1},acc_title:{rules:[13],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,11,12,14,16,19,20,21,22,23,24],inclusive:!0}}};function p(){this.yy={}}return f.lexer=d,p.prototype=f,f.Parser=p,new p}();e.parser=r,e.Parser=r.Parser,e.parse=function(){return r.parse.apply(r,arguments)},e.main=function(t){t[1]||(console.log("Usage: "+t[0]+" FILE"),process.exit(1));var r=n(9143).readFileSync(n(6470).normalize(t[1]),"utf8");return e.parser.parse(r)},n.c[n.s]===t&&e.main(process.argv.slice(1))},7967:(t,e)=>{"use strict";e.N=void 0;var n=/^([^\w]*)(javascript|data|vbscript)/im,r=/&#(\w+)(^\w|;)?/g,i=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim,a=/^([^:]+):/gm,o=[".","/"];e.N=function(t){var e,s=(e=t||"",e.replace(r,(function(t,e){return String.fromCharCode(e)}))).replace(i,"").trim();if(!s)return"about:blank";if(function(t){return o.indexOf(t[0])>-1}(s))return s;var c=s.match(a);if(!c)return s;var u=c[0];return n.test(u)?"about:blank":s}},3841:t=>{t.exports=function(t,e){return t.intersect(e)}},8968:(t,e,n)=>{"use strict";n.d(e,{default:()=>qE});var r=n(1941),i=n.n(r),a={debug:1,info:2,warn:3,error:4,fatal:5},o={debug:function(){},info:function(){},warn:function(){},error:function(){},fatal:function(){}},s=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"fatal";isNaN(t)&&(t=t.toLowerCase(),void 0!==a[t]&&(t=a[t])),o.trace=function(){},o.debug=function(){},o.info=function(){},o.warn=function(){},o.error=function(){},o.fatal=function(){},t<=a.fatal&&(o.fatal=console.error?console.error.bind(console,c("FATAL"),"color: orange"):console.log.bind(console,"",c("FATAL"))),t<=a.error&&(o.error=console.error?console.error.bind(console,c("ERROR"),"color: orange"):console.log.bind(console,"",c("ERROR"))),t<=a.warn&&(o.warn=console.warn?console.warn.bind(console,c("WARN"),"color: orange"):console.log.bind(console,"",c("WARN"))),t<=a.info&&(o.info=console.info?console.info.bind(console,c("INFO"),"color: lightblue"):console.log.bind(console,"",c("INFO"))),t<=a.debug&&(o.debug=console.debug?console.debug.bind(console,c("DEBUG"),"color: lightgreen"):console.log.bind(console,"",c("DEBUG")))},c=function(t){var e=i()().format("ss.SSS");return"%c".concat(e," : ").concat(t," : ")};function u(t,e){let n;if(void 0===e)for(const e of t)null!=e&&(n<e||void 0===n&&e>=e)&&(n=e);else{let r=-1;for(let i of t)null!=(i=e(i,++r,t))&&(n<i||void 0===n&&i>=i)&&(n=i)}return n}function l(t,e){let n;if(void 0===e)for(const e of t)null!=e&&(n>e||void 0===n&&e>=e)&&(n=e);else{let r=-1;for(let i of t)null!=(i=e(i,++r,t))&&(n>i||void 0===n&&i>=i)&&(n=i)}return n}function h(t){return t}var f=1e-6;function d(t){return"translate("+t+",0)"}function p(t){return"translate(0,"+t+")"}function g(t){return e=>+t(e)}function y(t,e){return e=Math.max(0,t.bandwidth()-2*e)/2,t.round()&&(e=Math.round(e)),n=>+t(n)+e}function m(){return!this.__axis}function v(t,e){var n=[],r=null,i=null,a=6,o=6,s=3,c="undefined"!=typeof window&&window.devicePixelRatio>1?0:.5,u=1===t||4===t?-1:1,l=4===t||2===t?"x":"y",v=1===t||3===t?d:p;function b(d){var p=null==r?e.ticks?e.ticks.apply(e,n):e.domain():r,b=null==i?e.tickFormat?e.tickFormat.apply(e,n):h:i,_=Math.max(a,0)+s,x=e.range(),w=+x[0]+c,k=+x[x.length-1]+c,T=(e.bandwidth?y:g)(e.copy(),c),C=d.selection?d.selection():d,E=C.selectAll(".domain").data([null]),S=C.selectAll(".tick").data(p,e).order(),A=S.exit(),M=S.enter().append("g").attr("class","tick"),N=S.select("line"),D=S.select("text");E=E.merge(E.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),S=S.merge(M),N=N.merge(M.append("line").attr("stroke","currentColor").attr(l+"2",u*a)),D=D.merge(M.append("text").attr("fill","currentColor").attr(l,u*_).attr("dy",1===t?"0em":3===t?"0.71em":"0.32em")),d!==C&&(E=E.transition(d),S=S.transition(d),N=N.transition(d),D=D.transition(d),A=A.transition(d).attr("opacity",f).attr("transform",(function(t){return isFinite(t=T(t))?v(t+c):this.getAttribute("transform")})),M.attr("opacity",f).attr("transform",(function(t){var e=this.parentNode.__axis;return v((e&&isFinite(e=e(t))?e:T(t))+c)}))),A.remove(),E.attr("d",4===t||2===t?o?"M"+u*o+","+w+"H"+c+"V"+k+"H"+u*o:"M"+c+","+w+"V"+k:o?"M"+w+","+u*o+"V"+c+"H"+k+"V"+u*o:"M"+w+","+c+"H"+k),S.attr("opacity",1).attr("transform",(function(t){return v(T(t)+c)})),N.attr(l+"2",u*a),D.attr(l,u*_).text(b),C.filter(m).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",2===t?"start":4===t?"end":"middle"),C.each((function(){this.__axis=T}))}return b.scale=function(t){return arguments.length?(e=t,b):e},b.ticks=function(){return n=Array.from(arguments),b},b.tickArguments=function(t){return arguments.length?(n=null==t?[]:Array.from(t),b):n.slice()},b.tickValues=function(t){return arguments.length?(r=null==t?null:Array.from(t),b):r&&r.slice()},b.tickFormat=function(t){return arguments.length?(i=t,b):i},b.tickSize=function(t){return arguments.length?(a=o=+t,b):a},b.tickSizeInner=function(t){return arguments.length?(a=+t,b):a},b.tickSizeOuter=function(t){return arguments.length?(o=+t,b):o},b.tickPadding=function(t){return arguments.length?(s=+t,b):s},b.offset=function(t){return arguments.length?(c=+t,b):c},b}function b(){}function _(t){return null==t?b:function(){return this.querySelector(t)}}function x(t){return null==t?[]:Array.isArray(t)?t:Array.from(t)}function w(){return[]}function k(t){return null==t?w:function(){return this.querySelectorAll(t)}}function T(t){return function(){return this.matches(t)}}function C(t){return function(e){return e.matches(t)}}var E=Array.prototype.find;function S(){return this.firstElementChild}var A=Array.prototype.filter;function M(){return Array.from(this.children)}function N(t){return new Array(t.length)}function D(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}function B(t){return function(){return t}}function L(t,e,n,r,i,a){for(var o,s=0,c=e.length,u=a.length;s<u;++s)(o=e[s])?(o.__data__=a[s],r[s]=o):n[s]=new D(t,a[s]);for(;s<c;++s)(o=e[s])&&(i[s]=o)}function O(t,e,n,r,i,a,o){var s,c,u,l=new Map,h=e.length,f=a.length,d=new Array(h);for(s=0;s<h;++s)(c=e[s])&&(d[s]=u=o.call(c,c.__data__,s,e)+"",l.has(u)?i[s]=c:l.set(u,c));for(s=0;s<f;++s)u=o.call(t,a[s],s,a)+"",(c=l.get(u))?(r[s]=c,c.__data__=a[s],l.delete(u)):n[s]=new D(t,a[s]);for(s=0;s<h;++s)(c=e[s])&&l.get(d[s])===c&&(i[s]=c)}function I(t){return t.__data__}function R(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}function F(t,e){return t<e?-1:t>e?1:t>=e?0:NaN}D.prototype={constructor:D,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};var P="http://www.w3.org/1999/xhtml";const Y={svg:"http://www.w3.org/2000/svg",xhtml:P,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function j(t){var e=t+="",n=e.indexOf(":");return n>=0&&"xmlns"!==(e=t.slice(0,n))&&(t=t.slice(n+1)),Y.hasOwnProperty(e)?{space:Y[e],local:t}:t}function U(t){return function(){this.removeAttribute(t)}}function z(t){return function(){this.removeAttributeNS(t.space,t.local)}}function $(t,e){return function(){this.setAttribute(t,e)}}function q(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function H(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttribute(t):this.setAttribute(t,n)}}function W(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}}function V(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function G(t){return function(){this.style.removeProperty(t)}}function X(t,e,n){return function(){this.style.setProperty(t,e,n)}}function Z(t,e,n){return function(){var r=e.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,n)}}function Q(t,e){return t.style.getPropertyValue(e)||V(t).getComputedStyle(t,null).getPropertyValue(e)}function K(t){return function(){delete this[t]}}function J(t,e){return function(){this[t]=e}}function tt(t,e){return function(){var n=e.apply(this,arguments);null==n?delete this[t]:this[t]=n}}function et(t){return t.trim().split(/^|\s+/)}function nt(t){return t.classList||new rt(t)}function rt(t){this._node=t,this._names=et(t.getAttribute("class")||"")}function it(t,e){for(var n=nt(t),r=-1,i=e.length;++r<i;)n.add(e[r])}function at(t,e){for(var n=nt(t),r=-1,i=e.length;++r<i;)n.remove(e[r])}function ot(t){return function(){it(this,t)}}function st(t){return function(){at(this,t)}}function ct(t,e){return function(){(e.apply(this,arguments)?it:at)(this,t)}}function ut(){this.textContent=""}function lt(t){return function(){this.textContent=t}}function ht(t){return function(){var e=t.apply(this,arguments);this.textContent=null==e?"":e}}function ft(){this.innerHTML=""}function dt(t){return function(){this.innerHTML=t}}function pt(t){return function(){var e=t.apply(this,arguments);this.innerHTML=null==e?"":e}}function gt(){this.nextSibling&&this.parentNode.appendChild(this)}function yt(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function mt(t){return function(){var e=this.ownerDocument,n=this.namespaceURI;return n===P&&e.documentElement.namespaceURI===P?e.createElement(t):e.createElementNS(n,t)}}function vt(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function bt(t){var e=j(t);return(e.local?vt:mt)(e)}function _t(){return null}function xt(){var t=this.parentNode;t&&t.removeChild(this)}function wt(){var t=this.cloneNode(!1),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function kt(){var t=this.cloneNode(!0),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function Tt(t){return t.trim().split(/^|\s+/).map((function(t){var e="",n=t.indexOf(".");return n>=0&&(e=t.slice(n+1),t=t.slice(0,n)),{type:t,name:e}}))}function Ct(t){return function(){var e=this.__on;if(e){for(var n,r=0,i=-1,a=e.length;r<a;++r)n=e[r],t.type&&n.type!==t.type||n.name!==t.name?e[++i]=n:this.removeEventListener(n.type,n.listener,n.options);++i?e.length=i:delete this.__on}}}function Et(t,e,n){return function(){var r,i=this.__on,a=function(t){return function(e){t.call(this,e,this.__data__)}}(e);if(i)for(var o=0,s=i.length;o<s;++o)if((r=i[o]).type===t.type&&r.name===t.name)return this.removeEventListener(r.type,r.listener,r.options),this.addEventListener(r.type,r.listener=a,r.options=n),void(r.value=e);this.addEventListener(t.type,a,n),r={type:t.type,name:t.name,value:e,listener:a,options:n},i?i.push(r):this.__on=[r]}}function St(t,e,n){var r=V(t),i=r.CustomEvent;"function"==typeof i?i=new i(e,n):(i=r.document.createEvent("Event"),n?(i.initEvent(e,n.bubbles,n.cancelable),i.detail=n.detail):i.initEvent(e,!1,!1)),t.dispatchEvent(i)}function At(t,e){return function(){return St(this,t,e)}}function Mt(t,e){return function(){return St(this,t,e.apply(this,arguments))}}rt.prototype={add:function(t){this._names.indexOf(t)<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var Nt=[null];function Dt(t,e){this._groups=t,this._parents=e}function Bt(){return new Dt([[document.documentElement]],Nt)}Dt.prototype=Bt.prototype={constructor:Dt,select:function(t){"function"!=typeof t&&(t=_(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var a,o,s=e[i],c=s.length,u=r[i]=new Array(c),l=0;l<c;++l)(a=s[l])&&(o=t.call(a,a.__data__,l,s))&&("__data__"in a&&(o.__data__=a.__data__),u[l]=o);return new Dt(r,this._parents)},selectAll:function(t){t="function"==typeof t?function(t){return function(){return x(t.apply(this,arguments))}}(t):k(t);for(var e=this._groups,n=e.length,r=[],i=[],a=0;a<n;++a)for(var o,s=e[a],c=s.length,u=0;u<c;++u)(o=s[u])&&(r.push(t.call(o,o.__data__,u,s)),i.push(o));return new Dt(r,i)},selectChild:function(t){return this.select(null==t?S:function(t){return function(){return E.call(this.children,t)}}("function"==typeof t?t:C(t)))},selectChildren:function(t){return this.selectAll(null==t?M:function(t){return function(){return A.call(this.children,t)}}("function"==typeof t?t:C(t)))},filter:function(t){"function"!=typeof t&&(t=T(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var a,o=e[i],s=o.length,c=r[i]=[],u=0;u<s;++u)(a=o[u])&&t.call(a,a.__data__,u,o)&&c.push(a);return new Dt(r,this._parents)},data:function(t,e){if(!arguments.length)return Array.from(this,I);var n=e?O:L,r=this._parents,i=this._groups;"function"!=typeof t&&(t=B(t));for(var a=i.length,o=new Array(a),s=new Array(a),c=new Array(a),u=0;u<a;++u){var l=r[u],h=i[u],f=h.length,d=R(t.call(l,l&&l.__data__,u,r)),p=d.length,g=s[u]=new Array(p),y=o[u]=new Array(p),m=c[u]=new Array(f);n(l,h,g,y,m,d,e);for(var v,b,_=0,x=0;_<p;++_)if(v=g[_]){for(_>=x&&(x=_+1);!(b=y[x])&&++x<p;);v._next=b||null}}return(o=new Dt(o,r))._enter=s,o._exit=c,o},enter:function(){return new Dt(this._enter||this._groups.map(N),this._parents)},exit:function(){return new Dt(this._exit||this._groups.map(N),this._parents)},join:function(t,e,n){var r=this.enter(),i=this,a=this.exit();return"function"==typeof t?(r=t(r))&&(r=r.selection()):r=r.append(t+""),null!=e&&(i=e(i))&&(i=i.selection()),null==n?a.remove():n(a),r&&i?r.merge(i).order():i},merge:function(t){for(var e=t.selection?t.selection():t,n=this._groups,r=e._groups,i=n.length,a=r.length,o=Math.min(i,a),s=new Array(i),c=0;c<o;++c)for(var u,l=n[c],h=r[c],f=l.length,d=s[c]=new Array(f),p=0;p<f;++p)(u=l[p]||h[p])&&(d[p]=u);for(;c<i;++c)s[c]=n[c];return new Dt(s,this._parents)},selection:function(){return this},order:function(){for(var t=this._groups,e=-1,n=t.length;++e<n;)for(var r,i=t[e],a=i.length-1,o=i[a];--a>=0;)(r=i[a])&&(o&&4^r.compareDocumentPosition(o)&&o.parentNode.insertBefore(r,o),o=r);return this},sort:function(t){function e(e,n){return e&&n?t(e.__data__,n.__data__):!e-!n}t||(t=F);for(var n=this._groups,r=n.length,i=new Array(r),a=0;a<r;++a){for(var o,s=n[a],c=s.length,u=i[a]=new Array(c),l=0;l<c;++l)(o=s[l])&&(u[l]=o);u.sort(e)}return new Dt(i,this._parents).order()},call:function(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this},nodes:function(){return Array.from(this)},node:function(){for(var t=this._groups,e=0,n=t.length;e<n;++e)for(var r=t[e],i=0,a=r.length;i<a;++i){var o=r[i];if(o)return o}return null},size:function(){let t=0;for(const e of this)++t;return t},empty:function(){return!this.node()},each:function(t){for(var e=this._groups,n=0,r=e.length;n<r;++n)for(var i,a=e[n],o=0,s=a.length;o<s;++o)(i=a[o])&&t.call(i,i.__data__,o,a);return this},attr:function(t,e){var n=j(t);if(arguments.length<2){var r=this.node();return n.local?r.getAttributeNS(n.space,n.local):r.getAttribute(n)}return this.each((null==e?n.local?z:U:"function"==typeof e?n.local?W:H:n.local?q:$)(n,e))},style:function(t,e,n){return arguments.length>1?this.each((null==e?G:"function"==typeof e?Z:X)(t,e,null==n?"":n)):Q(this.node(),t)},property:function(t,e){return arguments.length>1?this.each((null==e?K:"function"==typeof e?tt:J)(t,e)):this.node()[t]},classed:function(t,e){var n=et(t+"");if(arguments.length<2){for(var r=nt(this.node()),i=-1,a=n.length;++i<a;)if(!r.contains(n[i]))return!1;return!0}return this.each(("function"==typeof e?ct:e?ot:st)(n,e))},text:function(t){return arguments.length?this.each(null==t?ut:("function"==typeof t?ht:lt)(t)):this.node().textContent},html:function(t){return arguments.length?this.each(null==t?ft:("function"==typeof t?pt:dt)(t)):this.node().innerHTML},raise:function(){return this.each(gt)},lower:function(){return this.each(yt)},append:function(t){var e="function"==typeof t?t:bt(t);return this.select((function(){return this.appendChild(e.apply(this,arguments))}))},insert:function(t,e){var n="function"==typeof t?t:bt(t),r=null==e?_t:"function"==typeof e?e:_(e);return this.select((function(){return this.insertBefore(n.apply(this,arguments),r.apply(this,arguments)||null)}))},remove:function(){return this.each(xt)},clone:function(t){return this.select(t?kt:wt)},datum:function(t){return arguments.length?this.property("__data__",t):this.node().__data__},on:function(t,e,n){var r,i,a=Tt(t+""),o=a.length;if(!(arguments.length<2)){for(s=e?Et:Ct,r=0;r<o;++r)this.each(s(a[r],e,n));return this}var s=this.node().__on;if(s)for(var c,u=0,l=s.length;u<l;++u)for(r=0,c=s[u];r<o;++r)if((i=a[r]).type===c.type&&i.name===c.name)return c.value},dispatch:function(t,e){return this.each(("function"==typeof e?Mt:At)(t,e))},[Symbol.iterator]:function*(){for(var t=this._groups,e=0,n=t.length;e<n;++e)for(var r,i=t[e],a=0,o=i.length;a<o;++a)(r=i[a])&&(yield r)}};const Lt=Bt;var Ot={value:()=>{}};function It(){for(var t,e=0,n=arguments.length,r={};e<n;++e){if(!(t=arguments[e]+"")||t in r||/[\s.]/.test(t))throw new Error("illegal type: "+t);r[t]=[]}return new Rt(r)}function Rt(t){this._=t}function Ft(t,e){return t.trim().split(/^|\s+/).map((function(t){var n="",r=t.indexOf(".");if(r>=0&&(n=t.slice(r+1),t=t.slice(0,r)),t&&!e.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:n}}))}function Pt(t,e){for(var n,r=0,i=t.length;r<i;++r)if((n=t[r]).name===e)return n.value}function Yt(t,e,n){for(var r=0,i=t.length;r<i;++r)if(t[r].name===e){t[r]=Ot,t=t.slice(0,r).concat(t.slice(r+1));break}return null!=n&&t.push({name:e,value:n}),t}Rt.prototype=It.prototype={constructor:Rt,on:function(t,e){var n,r=this._,i=Ft(t+"",r),a=-1,o=i.length;if(!(arguments.length<2)){if(null!=e&&"function"!=typeof e)throw new Error("invalid callback: "+e);for(;++a<o;)if(n=(t=i[a]).type)r[n]=Yt(r[n],t.name,e);else if(null==e)for(n in r)r[n]=Yt(r[n],t.name,null);return this}for(;++a<o;)if((n=(t=i[a]).type)&&(n=Pt(r[n],t.name)))return n},copy:function(){var t={},e=this._;for(var n in e)t[n]=e[n].slice();return new Rt(t)},call:function(t,e){if((n=arguments.length-2)>0)for(var n,r,i=new Array(n),a=0;a<n;++a)i[a]=arguments[a+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(a=0,n=(r=this._[t]).length;a<n;++a)r[a].value.apply(e,i)},apply:function(t,e,n){if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(var r=this._[t],i=0,a=r.length;i<a;++i)r[i].value.apply(e,n)}};const jt=It;var Ut,zt,$t=0,qt=0,Ht=0,Wt=0,Vt=0,Gt=0,Xt="object"==typeof performance&&performance.now?performance:Date,Zt="object"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function Qt(){return Vt||(Zt(Kt),Vt=Xt.now()+Gt)}function Kt(){Vt=0}function Jt(){this._call=this._time=this._next=null}function te(t,e,n){var r=new Jt;return r.restart(t,e,n),r}function ee(){Vt=(Wt=Xt.now())+Gt,$t=qt=0;try{!function(){Qt(),++$t;for(var t,e=Ut;e;)(t=Vt-e._time)>=0&&e._call.call(void 0,t),e=e._next;--$t}()}finally{$t=0,function(){for(var t,e,n=Ut,r=1/0;n;)n._call?(r>n._time&&(r=n._time),t=n,n=n._next):(e=n._next,n._next=null,n=t?t._next=e:Ut=e);zt=t,re(r)}(),Vt=0}}function ne(){var t=Xt.now(),e=t-Wt;e>1e3&&(Gt-=e,Wt=t)}function re(t){$t||(qt&&(qt=clearTimeout(qt)),t-Vt>24?(t<1/0&&(qt=setTimeout(ee,t-Xt.now()-Gt)),Ht&&(Ht=clearInterval(Ht))):(Ht||(Wt=Xt.now(),Ht=setInterval(ne,1e3)),$t=1,Zt(ee)))}function ie(t,e,n){var r=new Jt;return e=null==e?0:+e,r.restart((n=>{r.stop(),t(n+e)}),e,n),r}Jt.prototype=te.prototype={constructor:Jt,restart:function(t,e,n){if("function"!=typeof t)throw new TypeError("callback is not a function");n=(null==n?Qt():+n)+(null==e?0:+e),this._next||zt===this||(zt?zt._next=this:Ut=this,zt=this),this._call=t,this._time=n,re()},stop:function(){this._call&&(this._call=null,this._time=1/0,re())}};var ae=jt("start","end","cancel","interrupt"),oe=[];function se(t,e,n,r,i,a){var o=t.__transition;if(o){if(n in o)return}else t.__transition={};!function(t,e,n){var r,i=t.__transition;function a(c){var u,l,h,f;if(1!==n.state)return s();for(u in i)if((f=i[u]).name===n.name){if(3===f.state)return ie(a);4===f.state?(f.state=6,f.timer.stop(),f.on.call("interrupt",t,t.__data__,f.index,f.group),delete i[u]):+u<e&&(f.state=6,f.timer.stop(),f.on.call("cancel",t,t.__data__,f.index,f.group),delete i[u])}if(ie((function(){3===n.state&&(n.state=4,n.timer.restart(o,n.delay,n.time),o(c))})),n.state=2,n.on.call("start",t,t.__data__,n.index,n.group),2===n.state){for(n.state=3,r=new Array(h=n.tween.length),u=0,l=-1;u<h;++u)(f=n.tween[u].value.call(t,t.__data__,n.index,n.group))&&(r[++l]=f);r.length=l+1}}function o(e){for(var i=e<n.duration?n.ease.call(null,e/n.duration):(n.timer.restart(s),n.state=5,1),a=-1,o=r.length;++a<o;)r[a].call(t,i);5===n.state&&(n.on.call("end",t,t.__data__,n.index,n.group),s())}function s(){for(var r in n.state=6,n.timer.stop(),delete i[e],i)return;delete t.__transition}i[e]=n,n.timer=te((function(t){n.state=1,n.timer.restart(a,n.delay,n.time),n.delay<=t&&a(t-n.delay)}),0,n.time)}(t,n,{name:e,index:r,group:i,on:ae,tween:oe,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:0})}function ce(t,e){var n=le(t,e);if(n.state>0)throw new Error("too late; already scheduled");return n}function ue(t,e){var n=le(t,e);if(n.state>3)throw new Error("too late; already running");return n}function le(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}function he(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}var fe,de=180/Math.PI,pe={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function ge(t,e,n,r,i,a){var o,s,c;return(o=Math.sqrt(t*t+e*e))&&(t/=o,e/=o),(c=t*n+e*r)&&(n-=t*c,r-=e*c),(s=Math.sqrt(n*n+r*r))&&(n/=s,r/=s,c/=s),t*r<e*n&&(t=-t,e=-e,c=-c,o=-o),{translateX:i,translateY:a,rotate:Math.atan2(e,t)*de,skewX:Math.atan(c)*de,scaleX:o,scaleY:s}}function ye(t,e,n,r){function i(t){return t.length?t.pop()+" ":""}return function(a,o){var s=[],c=[];return a=t(a),o=t(o),function(t,r,i,a,o,s){if(t!==i||r!==a){var c=o.push("translate(",null,e,null,n);s.push({i:c-4,x:he(t,i)},{i:c-2,x:he(r,a)})}else(i||a)&&o.push("translate("+i+e+a+n)}(a.translateX,a.translateY,o.translateX,o.translateY,s,c),function(t,e,n,a){t!==e?(t-e>180?e+=360:e-t>180&&(t+=360),a.push({i:n.push(i(n)+"rotate(",null,r)-2,x:he(t,e)})):e&&n.push(i(n)+"rotate("+e+r)}(a.rotate,o.rotate,s,c),function(t,e,n,a){t!==e?a.push({i:n.push(i(n)+"skewX(",null,r)-2,x:he(t,e)}):e&&n.push(i(n)+"skewX("+e+r)}(a.skewX,o.skewX,s,c),function(t,e,n,r,a,o){if(t!==n||e!==r){var s=a.push(i(a)+"scale(",null,",",null,")");o.push({i:s-4,x:he(t,n)},{i:s-2,x:he(e,r)})}else 1===n&&1===r||a.push(i(a)+"scale("+n+","+r+")")}(a.scaleX,a.scaleY,o.scaleX,o.scaleY,s,c),a=o=null,function(t){for(var e,n=-1,r=c.length;++n<r;)s[(e=c[n]).i]=e.x(t);return s.join("")}}}var me=ye((function(t){const e=new("function"==typeof DOMMatrix?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?pe:ge(e.a,e.b,e.c,e.d,e.e,e.f)}),"px, ","px)","deg)"),ve=ye((function(t){return null==t?pe:(fe||(fe=document.createElementNS("http://www.w3.org/2000/svg","g")),fe.setAttribute("transform",t),(t=fe.transform.baseVal.consolidate())?ge((t=t.matrix).a,t.b,t.c,t.d,t.e,t.f):pe)}),", ",")",")");function be(t,e){var n,r;return function(){var i=ue(this,t),a=i.tween;if(a!==n)for(var o=0,s=(r=n=a).length;o<s;++o)if(r[o].name===e){(r=r.slice()).splice(o,1);break}i.tween=r}}function _e(t,e,n){var r,i;if("function"!=typeof n)throw new Error;return function(){var a=ue(this,t),o=a.tween;if(o!==r){i=(r=o).slice();for(var s={name:e,value:n},c=0,u=i.length;c<u;++c)if(i[c].name===e){i[c]=s;break}c===u&&i.push(s)}a.tween=i}}function xe(t,e,n){var r=t._id;return t.each((function(){var t=ue(this,r);(t.value||(t.value={}))[e]=n.apply(this,arguments)})),function(t){return le(t,r).value[e]}}function we(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function ke(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function Te(){}var Ce=.7,Ee=1/Ce,Se="\\s*([+-]?\\d+)\\s*",Ae="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",Me="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",Ne=/^#([0-9a-f]{3,8})$/,De=new RegExp("^rgb\\("+[Se,Se,Se]+"\\)$"),Be=new RegExp("^rgb\\("+[Me,Me,Me]+"\\)$"),Le=new RegExp("^rgba\\("+[Se,Se,Se,Ae]+"\\)$"),Oe=new RegExp("^rgba\\("+[Me,Me,Me,Ae]+"\\)$"),Ie=new RegExp("^hsl\\("+[Ae,Me,Me]+"\\)$"),Re=new RegExp("^hsla\\("+[Ae,Me,Me,Ae]+"\\)$"),Fe={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function Pe(){return this.rgb().formatHex()}function Ye(){return this.rgb().formatRgb()}function je(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=Ne.exec(t))?(n=e[1].length,e=parseInt(e[1],16),6===n?Ue(e):3===n?new He(e>>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===n?ze(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===n?ze(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=De.exec(t))?new He(e[1],e[2],e[3],1):(e=Be.exec(t))?new He(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=Le.exec(t))?ze(e[1],e[2],e[3],e[4]):(e=Oe.exec(t))?ze(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=Ie.exec(t))?Xe(e[1],e[2]/100,e[3]/100,1):(e=Re.exec(t))?Xe(e[1],e[2]/100,e[3]/100,e[4]):Fe.hasOwnProperty(t)?Ue(Fe[t]):"transparent"===t?new He(NaN,NaN,NaN,0):null}function Ue(t){return new He(t>>16&255,t>>8&255,255&t,1)}function ze(t,e,n,r){return r<=0&&(t=e=n=NaN),new He(t,e,n,r)}function $e(t){return t instanceof Te||(t=je(t)),t?new He((t=t.rgb()).r,t.g,t.b,t.opacity):new He}function qe(t,e,n,r){return 1===arguments.length?$e(t):new He(t,e,n,null==r?1:r)}function He(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}function We(){return"#"+Ge(this.r)+Ge(this.g)+Ge(this.b)}function Ve(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?")":", "+t+")")}function Ge(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?"0":"")+t.toString(16)}function Xe(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new Qe(t,e,n,r)}function Ze(t){if(t instanceof Qe)return new Qe(t.h,t.s,t.l,t.opacity);if(t instanceof Te||(t=je(t)),!t)return new Qe;if(t instanceof Qe)return t;var e=(t=t.rgb()).r/255,n=t.g/255,r=t.b/255,i=Math.min(e,n,r),a=Math.max(e,n,r),o=NaN,s=a-i,c=(a+i)/2;return s?(o=e===a?(n-r)/s+6*(n<r):n===a?(r-e)/s+2:(e-n)/s+4,s/=c<.5?a+i:2-a-i,o*=60):s=c>0&&c<1?0:o,new Qe(o,s,c,t.opacity)}function Qe(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}function Ke(t,e,n){return 255*(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)}function Je(t,e,n,r,i){var a=t*t,o=a*t;return((1-3*t+3*a-o)*e+(4-6*a+3*o)*n+(1+3*t+3*a-3*o)*r+o*i)/6}we(Te,je,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:Pe,formatHex:Pe,formatHsl:function(){return Ze(this).formatHsl()},formatRgb:Ye,toString:Ye}),we(He,qe,ke(Te,{brighter:function(t){return t=null==t?Ee:Math.pow(Ee,t),new He(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?Ce:Math.pow(Ce,t),new He(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:We,formatHex:We,formatRgb:Ve,toString:Ve})),we(Qe,(function(t,e,n,r){return 1===arguments.length?Ze(t):new Qe(t,e,n,null==r?1:r)}),ke(Te,{brighter:function(t){return t=null==t?Ee:Math.pow(Ee,t),new Qe(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?Ce:Math.pow(Ce,t),new Qe(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new He(Ke(t>=240?t-240:t+120,i,r),Ke(t,i,r),Ke(t<120?t+240:t-120,i,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"hsl(":"hsla(")+(this.h||0)+", "+100*(this.s||0)+"%, "+100*(this.l||0)+"%"+(1===t?")":", "+t+")")}}));const tn=t=>()=>t;function en(t,e){var n=e-t;return n?function(t,e){return function(n){return t+n*e}}(t,n):tn(isNaN(t)?e:t)}const nn=function t(e){var n=function(t){return 1==(t=+t)?en:function(e,n){return n-e?function(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}(e,n,t):tn(isNaN(e)?n:e)}}(e);function r(t,e){var r=n((t=qe(t)).r,(e=qe(e)).r),i=n(t.g,e.g),a=n(t.b,e.b),o=en(t.opacity,e.opacity);return function(e){return t.r=r(e),t.g=i(e),t.b=a(e),t.opacity=o(e),t+""}}return r.gamma=t,r}(1);function rn(t){return function(e){var n,r,i=e.length,a=new Array(i),o=new Array(i),s=new Array(i);for(n=0;n<i;++n)r=qe(e[n]),a[n]=r.r||0,o[n]=r.g||0,s[n]=r.b||0;return a=t(a),o=t(o),s=t(s),r.opacity=1,function(t){return r.r=a(t),r.g=o(t),r.b=s(t),r+""}}}rn((function(t){var e=t.length-1;return function(n){var r=n<=0?n=0:n>=1?(n=1,e-1):Math.floor(n*e),i=t[r],a=t[r+1],o=r>0?t[r-1]:2*i-a,s=r<e-1?t[r+2]:2*a-i;return Je((n-r/e)*e,o,i,a,s)}})),rn((function(t){var e=t.length;return function(n){var r=Math.floor(((n%=1)<0?++n:n)*e),i=t[(r+e-1)%e],a=t[r%e],o=t[(r+1)%e],s=t[(r+2)%e];return Je((n-r/e)*e,i,a,o,s)}}));var an=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,on=new RegExp(an.source,"g");function sn(t,e){var n,r,i,a=an.lastIndex=on.lastIndex=0,o=-1,s=[],c=[];for(t+="",e+="";(n=an.exec(t))&&(r=on.exec(e));)(i=r.index)>a&&(i=e.slice(a,i),s[o]?s[o]+=i:s[++o]=i),(n=n[0])===(r=r[0])?s[o]?s[o]+=r:s[++o]=r:(s[++o]=null,c.push({i:o,x:he(n,r)})),a=on.lastIndex;return a<e.length&&(i=e.slice(a),s[o]?s[o]+=i:s[++o]=i),s.length<2?c[0]?function(t){return function(e){return t(e)+""}}(c[0].x):function(t){return function(){return t}}(e):(e=c.length,function(t){for(var n,r=0;r<e;++r)s[(n=c[r]).i]=n.x(t);return s.join("")})}function cn(t,e){var n;return("number"==typeof e?he:e instanceof je?nn:(n=je(e))?(e=n,nn):sn)(t,e)}function un(t){return function(){this.removeAttribute(t)}}function ln(t){return function(){this.removeAttributeNS(t.space,t.local)}}function hn(t,e,n){var r,i,a=n+"";return function(){var o=this.getAttribute(t);return o===a?null:o===r?i:i=e(r=o,n)}}function fn(t,e,n){var r,i,a=n+"";return function(){var o=this.getAttributeNS(t.space,t.local);return o===a?null:o===r?i:i=e(r=o,n)}}function dn(t,e,n){var r,i,a;return function(){var o,s,c=n(this);if(null!=c)return(o=this.getAttribute(t))===(s=c+"")?null:o===r&&s===i?a:(i=s,a=e(r=o,c));this.removeAttribute(t)}}function pn(t,e,n){var r,i,a;return function(){var o,s,c=n(this);if(null!=c)return(o=this.getAttributeNS(t.space,t.local))===(s=c+"")?null:o===r&&s===i?a:(i=s,a=e(r=o,c));this.removeAttributeNS(t.space,t.local)}}function gn(t,e){return function(n){this.setAttribute(t,e.call(this,n))}}function yn(t,e){return function(n){this.setAttributeNS(t.space,t.local,e.call(this,n))}}function mn(t,e){var n,r;function i(){var i=e.apply(this,arguments);return i!==r&&(n=(r=i)&&yn(t,i)),n}return i._value=e,i}function vn(t,e){var n,r;function i(){var i=e.apply(this,arguments);return i!==r&&(n=(r=i)&&gn(t,i)),n}return i._value=e,i}function bn(t,e){return function(){ce(this,t).delay=+e.apply(this,arguments)}}function _n(t,e){return e=+e,function(){ce(this,t).delay=e}}function xn(t,e){return function(){ue(this,t).duration=+e.apply(this,arguments)}}function wn(t,e){return e=+e,function(){ue(this,t).duration=e}}function kn(t,e){if("function"!=typeof e)throw new Error;return function(){ue(this,t).ease=e}}function Tn(t,e,n){var r,i,a=function(t){return(t+"").trim().split(/^|\s+/).every((function(t){var e=t.indexOf(".");return e>=0&&(t=t.slice(0,e)),!t||"start"===t}))}(e)?ce:ue;return function(){var o=a(this,t),s=o.on;s!==r&&(i=(r=s).copy()).on(e,n),o.on=i}}var Cn=Lt.prototype.constructor;function En(t){return function(){this.style.removeProperty(t)}}function Sn(t,e,n){return function(r){this.style.setProperty(t,e.call(this,r),n)}}function An(t,e,n){var r,i;function a(){var a=e.apply(this,arguments);return a!==i&&(r=(i=a)&&Sn(t,a,n)),r}return a._value=e,a}function Mn(t){return function(e){this.textContent=t.call(this,e)}}function Nn(t){var e,n;function r(){var r=t.apply(this,arguments);return r!==n&&(e=(n=r)&&Mn(r)),e}return r._value=t,r}var Dn=0;function Bn(t,e,n,r){this._groups=t,this._parents=e,this._name=n,this._id=r}function Ln(){return++Dn}var On=Lt.prototype;Bn.prototype=function(t){return Lt().transition(t)}.prototype={constructor:Bn,select:function(t){var e=this._name,n=this._id;"function"!=typeof t&&(t=_(t));for(var r=this._groups,i=r.length,a=new Array(i),o=0;o<i;++o)for(var s,c,u=r[o],l=u.length,h=a[o]=new Array(l),f=0;f<l;++f)(s=u[f])&&(c=t.call(s,s.__data__,f,u))&&("__data__"in s&&(c.__data__=s.__data__),h[f]=c,se(h[f],e,n,f,h,le(s,n)));return new Bn(a,this._parents,e,n)},selectAll:function(t){var e=this._name,n=this._id;"function"!=typeof t&&(t=k(t));for(var r=this._groups,i=r.length,a=[],o=[],s=0;s<i;++s)for(var c,u=r[s],l=u.length,h=0;h<l;++h)if(c=u[h]){for(var f,d=t.call(c,c.__data__,h,u),p=le(c,n),g=0,y=d.length;g<y;++g)(f=d[g])&&se(f,e,n,g,d,p);a.push(d),o.push(c)}return new Bn(a,o,e,n)},selectChild:On.selectChild,selectChildren:On.selectChildren,filter:function(t){"function"!=typeof t&&(t=T(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var a,o=e[i],s=o.length,c=r[i]=[],u=0;u<s;++u)(a=o[u])&&t.call(a,a.__data__,u,o)&&c.push(a);return new Bn(r,this._parents,this._name,this._id)},merge:function(t){if(t._id!==this._id)throw new Error;for(var e=this._groups,n=t._groups,r=e.length,i=n.length,a=Math.min(r,i),o=new Array(r),s=0;s<a;++s)for(var c,u=e[s],l=n[s],h=u.length,f=o[s]=new Array(h),d=0;d<h;++d)(c=u[d]||l[d])&&(f[d]=c);for(;s<r;++s)o[s]=e[s];return new Bn(o,this._parents,this._name,this._id)},selection:function(){return new Cn(this._groups,this._parents)},transition:function(){for(var t=this._name,e=this._id,n=Ln(),r=this._groups,i=r.length,a=0;a<i;++a)for(var o,s=r[a],c=s.length,u=0;u<c;++u)if(o=s[u]){var l=le(o,e);se(o,t,n,u,s,{time:l.time+l.delay+l.duration,delay:0,duration:l.duration,ease:l.ease})}return new Bn(r,this._parents,t,n)},call:On.call,nodes:On.nodes,node:On.node,size:On.size,empty:On.empty,each:On.each,on:function(t,e){var n=this._id;return arguments.length<2?le(this.node(),n).on.on(t):this.each(Tn(n,t,e))},attr:function(t,e){var n=j(t),r="transform"===n?ve:cn;return this.attrTween(t,"function"==typeof e?(n.local?pn:dn)(n,r,xe(this,"attr."+t,e)):null==e?(n.local?ln:un)(n):(n.local?fn:hn)(n,r,e))},attrTween:function(t,e){var n="attr."+t;if(arguments.length<2)return(n=this.tween(n))&&n._value;if(null==e)return this.tween(n,null);if("function"!=typeof e)throw new Error;var r=j(t);return this.tween(n,(r.local?mn:vn)(r,e))},style:function(t,e,n){var r="transform"==(t+="")?me:cn;return null==e?this.styleTween(t,function(t,e){var n,r,i;return function(){var a=Q(this,t),o=(this.style.removeProperty(t),Q(this,t));return a===o?null:a===n&&o===r?i:i=e(n=a,r=o)}}(t,r)).on("end.style."+t,En(t)):"function"==typeof e?this.styleTween(t,function(t,e,n){var r,i,a;return function(){var o=Q(this,t),s=n(this),c=s+"";return null==s&&(this.style.removeProperty(t),c=s=Q(this,t)),o===c?null:o===r&&c===i?a:(i=c,a=e(r=o,s))}}(t,r,xe(this,"style."+t,e))).each(function(t,e){var n,r,i,a,o="style."+e,s="end."+o;return function(){var c=ue(this,t),u=c.on,l=null==c.value[o]?a||(a=En(e)):void 0;u===n&&i===l||(r=(n=u).copy()).on(s,i=l),c.on=r}}(this._id,t)):this.styleTween(t,function(t,e,n){var r,i,a=n+"";return function(){var o=Q(this,t);return o===a?null:o===r?i:i=e(r=o,n)}}(t,r,e),n).on("end.style."+t,null)},styleTween:function(t,e,n){var r="style."+(t+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(null==e)return this.tween(r,null);if("function"!=typeof e)throw new Error;return this.tween(r,An(t,e,null==n?"":n))},text:function(t){return this.tween("text","function"==typeof t?function(t){return function(){var e=t(this);this.textContent=null==e?"":e}}(xe(this,"text",t)):function(t){return function(){this.textContent=t}}(null==t?"":t+""))},textTween:function(t){var e="text";if(arguments.length<1)return(e=this.tween(e))&&e._value;if(null==t)return this.tween(e,null);if("function"!=typeof t)throw new Error;return this.tween(e,Nn(t))},remove:function(){return this.on("end.remove",function(t){return function(){var e=this.parentNode;for(var n in this.__transition)if(+n!==t)return;e&&e.removeChild(this)}}(this._id))},tween:function(t,e){var n=this._id;if(t+="",arguments.length<2){for(var r,i=le(this.node(),n).tween,a=0,o=i.length;a<o;++a)if((r=i[a]).name===t)return r.value;return null}return this.each((null==e?be:_e)(n,t,e))},delay:function(t){var e=this._id;return arguments.length?this.each(("function"==typeof t?bn:_n)(e,t)):le(this.node(),e).delay},duration:function(t){var e=this._id;return arguments.length?this.each(("function"==typeof t?xn:wn)(e,t)):le(this.node(),e).duration},ease:function(t){var e=this._id;return arguments.length?this.each(kn(e,t)):le(this.node(),e).ease},easeVarying:function(t){if("function"!=typeof t)throw new Error;return this.each(function(t,e){return function(){var n=e.apply(this,arguments);if("function"!=typeof n)throw new Error;ue(this,t).ease=n}}(this._id,t))},end:function(){var t,e,n=this,r=n._id,i=n.size();return new Promise((function(a,o){var s={value:o},c={value:function(){0==--i&&a()}};n.each((function(){var n=ue(this,r),i=n.on;i!==t&&((e=(t=i).copy())._.cancel.push(s),e._.interrupt.push(s),e._.end.push(c)),n.on=e})),0===i&&a()}))},[Symbol.iterator]:On[Symbol.iterator]};var In={time:null,delay:0,duration:250,ease:function(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}};function Rn(t,e){for(var n;!(n=t.__transition)||!(n=n[e]);)if(!(t=t.parentNode))throw new Error(`transition ${e} not found`);return n}Lt.prototype.interrupt=function(t){return this.each((function(){!function(t,e){var n,r,i,a=t.__transition,o=!0;if(a){for(i in e=null==e?null:e+"",a)(n=a[i]).name===e?(r=n.state>2&&n.state<5,n.state=6,n.timer.stop(),n.on.call(r?"interrupt":"cancel",t,t.__data__,n.index,n.group),delete a[i]):o=!1;o&&delete t.__transition}}(this,t)}))},Lt.prototype.transition=function(t){var e,n;t instanceof Bn?(e=t._id,t=t._name):(e=Ln(),(n=In).time=Qt(),t=null==t?null:t+"");for(var r=this._groups,i=r.length,a=0;a<i;++a)for(var o,s=r[a],c=s.length,u=0;u<c;++u)(o=s[u])&&se(o,t,e,u,s,n||Rn(o,e));return new Bn(r,this._parents,t,e)};const{abs:Fn,max:Pn,min:Yn}=Math;function jn(t){return{type:t}}function Un(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function zn(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function $n(){}["w","e"].map(jn),["n","s"].map(jn),["n","w","e","s","nw","ne","sw","se"].map(jn);var qn=.7,Hn=1/qn,Wn="\\s*([+-]?\\d+)\\s*",Vn="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",Gn="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",Xn=/^#([0-9a-f]{3,8})$/,Zn=new RegExp("^rgb\\("+[Wn,Wn,Wn]+"\\)$"),Qn=new RegExp("^rgb\\("+[Gn,Gn,Gn]+"\\)$"),Kn=new RegExp("^rgba\\("+[Wn,Wn,Wn,Vn]+"\\)$"),Jn=new RegExp("^rgba\\("+[Gn,Gn,Gn,Vn]+"\\)$"),tr=new RegExp("^hsl\\("+[Vn,Gn,Gn]+"\\)$"),er=new RegExp("^hsla\\("+[Vn,Gn,Gn,Vn]+"\\)$"),nr={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function rr(){return this.rgb().formatHex()}function ir(){return this.rgb().formatRgb()}function ar(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=Xn.exec(t))?(n=e[1].length,e=parseInt(e[1],16),6===n?or(e):3===n?new lr(e>>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===n?sr(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===n?sr(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=Zn.exec(t))?new lr(e[1],e[2],e[3],1):(e=Qn.exec(t))?new lr(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=Kn.exec(t))?sr(e[1],e[2],e[3],e[4]):(e=Jn.exec(t))?sr(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=tr.exec(t))?pr(e[1],e[2]/100,e[3]/100,1):(e=er.exec(t))?pr(e[1],e[2]/100,e[3]/100,e[4]):nr.hasOwnProperty(t)?or(nr[t]):"transparent"===t?new lr(NaN,NaN,NaN,0):null}function or(t){return new lr(t>>16&255,t>>8&255,255&t,1)}function sr(t,e,n,r){return r<=0&&(t=e=n=NaN),new lr(t,e,n,r)}function cr(t){return t instanceof $n||(t=ar(t)),t?new lr((t=t.rgb()).r,t.g,t.b,t.opacity):new lr}function ur(t,e,n,r){return 1===arguments.length?cr(t):new lr(t,e,n,null==r?1:r)}function lr(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}function hr(){return"#"+dr(this.r)+dr(this.g)+dr(this.b)}function fr(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?")":", "+t+")")}function dr(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?"0":"")+t.toString(16)}function pr(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new yr(t,e,n,r)}function gr(t){if(t instanceof yr)return new yr(t.h,t.s,t.l,t.opacity);if(t instanceof $n||(t=ar(t)),!t)return new yr;if(t instanceof yr)return t;var e=(t=t.rgb()).r/255,n=t.g/255,r=t.b/255,i=Math.min(e,n,r),a=Math.max(e,n,r),o=NaN,s=a-i,c=(a+i)/2;return s?(o=e===a?(n-r)/s+6*(n<r):n===a?(r-e)/s+2:(e-n)/s+4,s/=c<.5?a+i:2-a-i,o*=60):s=c>0&&c<1?0:o,new yr(o,s,c,t.opacity)}function yr(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}function mr(t,e,n){return 255*(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)}Un($n,ar,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:rr,formatHex:rr,formatHsl:function(){return gr(this).formatHsl()},formatRgb:ir,toString:ir}),Un(lr,ur,zn($n,{brighter:function(t){return t=null==t?Hn:Math.pow(Hn,t),new lr(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?qn:Math.pow(qn,t),new lr(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:hr,formatHex:hr,formatRgb:fr,toString:fr})),Un(yr,(function(t,e,n,r){return 1===arguments.length?gr(t):new yr(t,e,n,null==r?1:r)}),zn($n,{brighter:function(t){return t=null==t?Hn:Math.pow(Hn,t),new yr(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?qn:Math.pow(qn,t),new yr(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new lr(mr(t>=240?t-240:t+120,i,r),mr(t,i,r),mr(t<120?t+240:t-120,i,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"hsl(":"hsla(")+(this.h||0)+", "+100*(this.s||0)+"%, "+100*(this.l||0)+"%"+(1===t?")":", "+t+")")}}));const vr=Math.PI/180,br=180/Math.PI,_r=.96422,xr=.82521,wr=4/29,kr=6/29,Tr=3*kr*kr;function Cr(t){if(t instanceof Er)return new Er(t.l,t.a,t.b,t.opacity);if(t instanceof Lr)return Or(t);t instanceof lr||(t=cr(t));var e,n,r=Nr(t.r),i=Nr(t.g),a=Nr(t.b),o=Sr((.2225045*r+.7168786*i+.0606169*a)/1);return r===i&&i===a?e=n=o:(e=Sr((.4360747*r+.3850649*i+.1430804*a)/_r),n=Sr((.0139322*r+.0971045*i+.7141733*a)/xr)),new Er(116*o-16,500*(e-o),200*(o-n),t.opacity)}function Er(t,e,n,r){this.l=+t,this.a=+e,this.b=+n,this.opacity=+r}function Sr(t){return t>.008856451679035631?Math.pow(t,1/3):t/Tr+wr}function Ar(t){return t>kr?t*t*t:Tr*(t-wr)}function Mr(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function Nr(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function Dr(t){if(t instanceof Lr)return new Lr(t.h,t.c,t.l,t.opacity);if(t instanceof Er||(t=Cr(t)),0===t.a&&0===t.b)return new Lr(NaN,0<t.l&&t.l<100?0:NaN,t.l,t.opacity);var e=Math.atan2(t.b,t.a)*br;return new Lr(e<0?e+360:e,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function Br(t,e,n,r){return 1===arguments.length?Dr(t):new Lr(t,e,n,null==r?1:r)}function Lr(t,e,n,r){this.h=+t,this.c=+e,this.l=+n,this.opacity=+r}function Or(t){if(isNaN(t.h))return new Er(t.l,0,0,t.opacity);var e=t.h*vr;return new Er(t.l,Math.cos(e)*t.c,Math.sin(e)*t.c,t.opacity)}Un(Er,(function(t,e,n,r){return 1===arguments.length?Cr(t):new Er(t,e,n,null==r?1:r)}),zn($n,{brighter:function(t){return new Er(this.l+18*(null==t?1:t),this.a,this.b,this.opacity)},darker:function(t){return new Er(this.l-18*(null==t?1:t),this.a,this.b,this.opacity)},rgb:function(){var t=(this.l+16)/116,e=isNaN(this.a)?t:t+this.a/500,n=isNaN(this.b)?t:t-this.b/200;return new lr(Mr(3.1338561*(e=_r*Ar(e))-1.6168667*(t=1*Ar(t))-.4906146*(n=xr*Ar(n))),Mr(-.9787684*e+1.9161415*t+.033454*n),Mr(.0719453*e-.2289914*t+1.4052427*n),this.opacity)}})),Un(Lr,Br,zn($n,{brighter:function(t){return new Lr(this.h,this.c,this.l+18*(null==t?1:t),this.opacity)},darker:function(t){return new Lr(this.h,this.c,this.l-18*(null==t?1:t),this.opacity)},rgb:function(){return Or(this).rgb()}}));const Ir=t=>()=>t;function Rr(t,e){return function(n){return t+n*e}}function Fr(t,e){var n=e-t;return n?Rr(t,n):Ir(isNaN(t)?e:t)}function Pr(t){return function(e,n){var r=t((e=Br(e)).h,(n=Br(n)).h),i=Fr(e.c,n.c),a=Fr(e.l,n.l),o=Fr(e.opacity,n.opacity);return function(t){return e.h=r(t),e.c=i(t),e.l=a(t),e.opacity=o(t),e+""}}}const Yr=Pr((function(t,e){var n=e-t;return n?Rr(t,n>180||n<-180?n-360*Math.round(n/360):n):Ir(isNaN(t)?e:t)}));Pr(Fr);var jr=Math.sqrt(50),Ur=Math.sqrt(10),zr=Math.sqrt(2);function $r(t,e,n){var r=(e-t)/Math.max(0,n),i=Math.floor(Math.log(r)/Math.LN10),a=r/Math.pow(10,i);return i>=0?(a>=jr?10:a>=Ur?5:a>=zr?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(a>=jr?10:a>=Ur?5:a>=zr?2:1)}function qr(t,e,n){var r=Math.abs(e-t)/Math.max(0,n),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),a=r/i;return a>=jr?i*=10:a>=Ur?i*=5:a>=zr&&(i*=2),e<t?-i:i}function Hr(t,e){return null==t||null==e?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function Wr(t){let e=t,n=t,r=t;function i(t,e,i=0,a=t.length){if(i<a){if(0!==n(e,e))return a;do{const n=i+a>>>1;r(t[n],e)<0?i=n+1:a=n}while(i<a)}return i}return 2!==t.length&&(e=(e,n)=>t(e)-n,n=Hr,r=(e,n)=>Hr(t(e),n)),{left:i,center:function(t,n,r=0,a=t.length){const o=i(t,n,r,a-1);return o>r&&e(t[o-1],n)>-e(t[o],n)?o-1:o},right:function(t,e,i=0,a=t.length){if(i<a){if(0!==n(e,e))return a;do{const n=i+a>>>1;r(t[n],e)<=0?i=n+1:a=n}while(i<a)}return i}}}const Vr=Wr(Hr),Gr=Vr.right,Xr=(Vr.left,Wr((function(t){return null===t?NaN:+t})).center,Gr);function Zr(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function Qr(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function Kr(){}var Jr=.7,ti=1.4285714285714286,ei="\\s*([+-]?\\d+)\\s*",ni="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",ri="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",ii=/^#([0-9a-f]{3,8})$/,ai=new RegExp("^rgb\\("+[ei,ei,ei]+"\\)$"),oi=new RegExp("^rgb\\("+[ri,ri,ri]+"\\)$"),si=new RegExp("^rgba\\("+[ei,ei,ei,ni]+"\\)$"),ci=new RegExp("^rgba\\("+[ri,ri,ri,ni]+"\\)$"),ui=new RegExp("^hsl\\("+[ni,ri,ri]+"\\)$"),li=new RegExp("^hsla\\("+[ni,ri,ri,ni]+"\\)$"),hi={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function fi(){return this.rgb().formatHex()}function di(){return this.rgb().formatRgb()}function pi(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=ii.exec(t))?(n=e[1].length,e=parseInt(e[1],16),6===n?gi(e):3===n?new bi(e>>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===n?yi(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===n?yi(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=ai.exec(t))?new bi(e[1],e[2],e[3],1):(e=oi.exec(t))?new bi(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=si.exec(t))?yi(e[1],e[2],e[3],e[4]):(e=ci.exec(t))?yi(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=ui.exec(t))?ki(e[1],e[2]/100,e[3]/100,1):(e=li.exec(t))?ki(e[1],e[2]/100,e[3]/100,e[4]):hi.hasOwnProperty(t)?gi(hi[t]):"transparent"===t?new bi(NaN,NaN,NaN,0):null}function gi(t){return new bi(t>>16&255,t>>8&255,255&t,1)}function yi(t,e,n,r){return r<=0&&(t=e=n=NaN),new bi(t,e,n,r)}function mi(t){return t instanceof Kr||(t=pi(t)),t?new bi((t=t.rgb()).r,t.g,t.b,t.opacity):new bi}function vi(t,e,n,r){return 1===arguments.length?mi(t):new bi(t,e,n,null==r?1:r)}function bi(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}function _i(){return"#"+wi(this.r)+wi(this.g)+wi(this.b)}function xi(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?")":", "+t+")")}function wi(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?"0":"")+t.toString(16)}function ki(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new Ci(t,e,n,r)}function Ti(t){if(t instanceof Ci)return new Ci(t.h,t.s,t.l,t.opacity);if(t instanceof Kr||(t=pi(t)),!t)return new Ci;if(t instanceof Ci)return t;var e=(t=t.rgb()).r/255,n=t.g/255,r=t.b/255,i=Math.min(e,n,r),a=Math.max(e,n,r),o=NaN,s=a-i,c=(a+i)/2;return s?(o=e===a?(n-r)/s+6*(n<r):n===a?(r-e)/s+2:(e-n)/s+4,s/=c<.5?a+i:2-a-i,o*=60):s=c>0&&c<1?0:o,new Ci(o,s,c,t.opacity)}function Ci(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}function Ei(t,e,n){return 255*(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)}function Si(t,e,n,r,i){var a=t*t,o=a*t;return((1-3*t+3*a-o)*e+(4-6*a+3*o)*n+(1+3*t+3*a-3*o)*r+o*i)/6}Zr(Kr,pi,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:fi,formatHex:fi,formatHsl:function(){return Ti(this).formatHsl()},formatRgb:di,toString:di}),Zr(bi,vi,Qr(Kr,{brighter:function(t){return t=null==t?ti:Math.pow(ti,t),new bi(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?Jr:Math.pow(Jr,t),new bi(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:_i,formatHex:_i,formatRgb:xi,toString:xi})),Zr(Ci,(function(t,e,n,r){return 1===arguments.length?Ti(t):new Ci(t,e,n,null==r?1:r)}),Qr(Kr,{brighter:function(t){return t=null==t?ti:Math.pow(ti,t),new Ci(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?Jr:Math.pow(Jr,t),new Ci(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new bi(Ei(t>=240?t-240:t+120,i,r),Ei(t,i,r),Ei(t<120?t+240:t-120,i,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"hsl(":"hsla(")+(this.h||0)+", "+100*(this.s||0)+"%, "+100*(this.l||0)+"%"+(1===t?")":", "+t+")")}}));const Ai=t=>()=>t;function Mi(t,e){var n=e-t;return n?function(t,e){return function(n){return t+n*e}}(t,n):Ai(isNaN(t)?e:t)}const Ni=function t(e){var n=function(t){return 1==(t=+t)?Mi:function(e,n){return n-e?function(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}(e,n,t):Ai(isNaN(e)?n:e)}}(e);function r(t,e){var r=n((t=vi(t)).r,(e=vi(e)).r),i=n(t.g,e.g),a=n(t.b,e.b),o=Mi(t.opacity,e.opacity);return function(e){return t.r=r(e),t.g=i(e),t.b=a(e),t.opacity=o(e),t+""}}return r.gamma=t,r}(1);function Di(t){return function(e){var n,r,i=e.length,a=new Array(i),o=new Array(i),s=new Array(i);for(n=0;n<i;++n)r=vi(e[n]),a[n]=r.r||0,o[n]=r.g||0,s[n]=r.b||0;return a=t(a),o=t(o),s=t(s),r.opacity=1,function(t){return r.r=a(t),r.g=o(t),r.b=s(t),r+""}}}function Bi(t,e){var n,r=e?e.length:0,i=t?Math.min(r,t.length):0,a=new Array(i),o=new Array(r);for(n=0;n<i;++n)a[n]=ji(t[n],e[n]);for(;n<r;++n)o[n]=e[n];return function(t){for(n=0;n<i;++n)o[n]=a[n](t);return o}}function Li(t,e){var n=new Date;return t=+t,e=+e,function(r){return n.setTime(t*(1-r)+e*r),n}}function Oi(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}function Ii(t,e){var n,r={},i={};for(n in null!==t&&"object"==typeof t||(t={}),null!==e&&"object"==typeof e||(e={}),e)n in t?r[n]=ji(t[n],e[n]):i[n]=e[n];return function(t){for(n in r)i[n]=r[n](t);return i}}Di((function(t){var e=t.length-1;return function(n){var r=n<=0?n=0:n>=1?(n=1,e-1):Math.floor(n*e),i=t[r],a=t[r+1],o=r>0?t[r-1]:2*i-a,s=r<e-1?t[r+2]:2*a-i;return Si((n-r/e)*e,o,i,a,s)}})),Di((function(t){var e=t.length;return function(n){var r=Math.floor(((n%=1)<0?++n:n)*e),i=t[(r+e-1)%e],a=t[r%e],o=t[(r+1)%e],s=t[(r+2)%e];return Si((n-r/e)*e,i,a,o,s)}}));var Ri=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Fi=new RegExp(Ri.source,"g");function Pi(t,e){var n,r,i,a=Ri.lastIndex=Fi.lastIndex=0,o=-1,s=[],c=[];for(t+="",e+="";(n=Ri.exec(t))&&(r=Fi.exec(e));)(i=r.index)>a&&(i=e.slice(a,i),s[o]?s[o]+=i:s[++o]=i),(n=n[0])===(r=r[0])?s[o]?s[o]+=r:s[++o]=r:(s[++o]=null,c.push({i:o,x:Oi(n,r)})),a=Fi.lastIndex;return a<e.length&&(i=e.slice(a),s[o]?s[o]+=i:s[++o]=i),s.length<2?c[0]?function(t){return function(e){return t(e)+""}}(c[0].x):function(t){return function(){return t}}(e):(e=c.length,function(t){for(var n,r=0;r<e;++r)s[(n=c[r]).i]=n.x(t);return s.join("")})}function Yi(t,e){e||(e=[]);var n,r=t?Math.min(e.length,t.length):0,i=e.slice();return function(a){for(n=0;n<r;++n)i[n]=t[n]*(1-a)+e[n]*a;return i}}function ji(t,e){var n,r,i=typeof e;return null==e||"boolean"===i?Ai(e):("number"===i?Oi:"string"===i?(n=pi(e))?(e=n,Ni):Pi:e instanceof pi?Ni:e instanceof Date?Li:(r=e,!ArrayBuffer.isView(r)||r instanceof DataView?Array.isArray(e)?Bi:"function"!=typeof e.valueOf&&"function"!=typeof e.toString||isNaN(e)?Ii:Oi:Yi))(t,e)}function Ui(t,e){return t=+t,e=+e,function(n){return Math.round(t*(1-n)+e*n)}}function zi(t){return+t}var $i=[0,1];function qi(t){return t}function Hi(t,e){return(e-=t=+t)?function(n){return(n-t)/e}:(n=isNaN(e)?NaN:.5,function(){return n});var n}function Wi(t,e,n){var r=t[0],i=t[1],a=e[0],o=e[1];return i<r?(r=Hi(i,r),a=n(o,a)):(r=Hi(r,i),a=n(a,o)),function(t){return a(r(t))}}function Vi(t,e,n){var r=Math.min(t.length,e.length)-1,i=new Array(r),a=new Array(r),o=-1;for(t[r]<t[0]&&(t=t.slice().reverse(),e=e.slice().reverse());++o<r;)i[o]=Hi(t[o],t[o+1]),a[o]=n(e[o],e[o+1]);return function(e){var n=Xr(t,e,1,r)-1;return a[n](i[n](e))}}function Gi(t,e){return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function Xi(){return function(){var t,e,n,r,i,a,o=$i,s=$i,c=ji,u=qi;function l(){var t,e,n,c=Math.min(o.length,s.length);return u!==qi&&(t=o[0],e=o[c-1],t>e&&(n=t,t=e,e=n),u=function(n){return Math.max(t,Math.min(e,n))}),r=c>2?Vi:Wi,i=a=null,h}function h(e){return null==e||isNaN(e=+e)?n:(i||(i=r(o.map(t),s,c)))(t(u(e)))}return h.invert=function(n){return u(e((a||(a=r(s,o.map(t),Oi)))(n)))},h.domain=function(t){return arguments.length?(o=Array.from(t,zi),l()):o.slice()},h.range=function(t){return arguments.length?(s=Array.from(t),l()):s.slice()},h.rangeRound=function(t){return s=Array.from(t),c=Ui,l()},h.clamp=function(t){return arguments.length?(u=!!t||qi,l()):u!==qi},h.interpolate=function(t){return arguments.length?(c=t,l()):c},h.unknown=function(t){return arguments.length?(n=t,h):n},function(n,r){return t=n,e=r,l()}}()(qi,qi)}function Zi(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t)}return this}var Qi,Ki=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Ji(t){if(!(e=Ki.exec(t)))throw new Error("invalid format: "+t);var e;return new ta({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}function ta(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}function ea(t,e){if((n=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var n,r=t.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+t.slice(n+1)]}function na(t){return(t=ea(Math.abs(t)))?t[1]:NaN}function ra(t,e){var n=ea(t,e);if(!n)return t+"";var r=n[0],i=n[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}Ji.prototype=ta.prototype,ta.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};const ia={"%":(t,e)=>(100*t).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:function(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)},e:(t,e)=>t.toExponential(e),f:(t,e)=>t.toFixed(e),g:(t,e)=>t.toPrecision(e),o:t=>Math.round(t).toString(8),p:(t,e)=>ra(100*t,e),r:ra,s:function(t,e){var n=ea(t,e);if(!n)return t+"";var r=n[0],i=n[1],a=i-(Qi=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,o=r.length;return a===o?r:a>o?r+new Array(a-o+1).join("0"):a>0?r.slice(0,a)+"."+r.slice(a):"0."+new Array(1-a).join("0")+ea(t,Math.max(0,e+a-1))[0]},X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function aa(t){return t}var oa,sa,ca,ua=Array.prototype.map,la=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function ha(t){var e=t.domain;return t.ticks=function(t){var n=e();return function(t,e,n){var r,i,a,o,s=-1;if(n=+n,(t=+t)==(e=+e)&&n>0)return[t];if((r=e<t)&&(i=t,t=e,e=i),0===(o=$r(t,e,n))||!isFinite(o))return[];if(o>0){let n=Math.round(t/o),r=Math.round(e/o);for(n*o<t&&++n,r*o>e&&--r,a=new Array(i=r-n+1);++s<i;)a[s]=(n+s)*o}else{o=-o;let n=Math.round(t*o),r=Math.round(e*o);for(n/o<t&&++n,r/o>e&&--r,a=new Array(i=r-n+1);++s<i;)a[s]=(n+s)/o}return r&&a.reverse(),a}(n[0],n[n.length-1],null==t?10:t)},t.tickFormat=function(t,n){var r=e();return function(t,e,n,r){var i,a=qr(t,e,n);switch((r=Ji(null==r?",f":r)).type){case"s":var o=Math.max(Math.abs(t),Math.abs(e));return null!=r.precision||isNaN(i=function(t,e){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(na(e)/3)))-na(Math.abs(t)))}(a,o))||(r.precision=i),ca(r,o);case"":case"e":case"g":case"p":case"r":null!=r.precision||isNaN(i=function(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,na(e)-na(t))+1}(a,Math.max(Math.abs(t),Math.abs(e))))||(r.precision=i-("e"===r.type));break;case"f":case"%":null!=r.precision||isNaN(i=function(t){return Math.max(0,-na(Math.abs(t)))}(a))||(r.precision=i-2*("%"===r.type))}return sa(r)}(r[0],r[r.length-1],null==t?10:t,n)},t.nice=function(n){null==n&&(n=10);var r,i,a=e(),o=0,s=a.length-1,c=a[o],u=a[s],l=10;for(u<c&&(i=c,c=u,u=i,i=o,o=s,s=i);l-- >0;){if((i=$r(c,u,n))===r)return a[o]=c,a[s]=u,e(a);if(i>0)c=Math.floor(c/i)*i,u=Math.ceil(u/i)*i;else{if(!(i<0))break;c=Math.ceil(c*i)/i,u=Math.floor(u*i)/i}r=i}return t},t}function fa(){var t=Xi();return t.copy=function(){return Gi(t,fa())},Zi.apply(t,arguments),ha(t)}oa=function(t){var e,n,r=void 0===t.grouping||void 0===t.thousands?aa:(e=ua.call(t.grouping,Number),n=t.thousands+"",function(t,r){for(var i=t.length,a=[],o=0,s=e[0],c=0;i>0&&s>0&&(c+s+1>r&&(s=Math.max(1,r-c)),a.push(t.substring(i-=s,i+s)),!((c+=s+1)>r));)s=e[o=(o+1)%e.length];return a.reverse().join(n)}),i=void 0===t.currency?"":t.currency[0]+"",a=void 0===t.currency?"":t.currency[1]+"",o=void 0===t.decimal?".":t.decimal+"",s=void 0===t.numerals?aa:function(t){return function(e){return e.replace(/[0-9]/g,(function(e){return t[+e]}))}}(ua.call(t.numerals,String)),c=void 0===t.percent?"%":t.percent+"",u=void 0===t.minus?"−":t.minus+"",l=void 0===t.nan?"NaN":t.nan+"";function h(t){var e=(t=Ji(t)).fill,n=t.align,h=t.sign,f=t.symbol,d=t.zero,p=t.width,g=t.comma,y=t.precision,m=t.trim,v=t.type;"n"===v?(g=!0,v="g"):ia[v]||(void 0===y&&(y=12),m=!0,v="g"),(d||"0"===e&&"="===n)&&(d=!0,e="0",n="=");var b="$"===f?i:"#"===f&&/[boxX]/.test(v)?"0"+v.toLowerCase():"",_="$"===f?a:/[%p]/.test(v)?c:"",x=ia[v],w=/[defgprs%]/.test(v);function k(t){var i,a,c,f=b,k=_;if("c"===v)k=x(t)+k,t="";else{var T=(t=+t)<0||1/t<0;if(t=isNaN(t)?l:x(Math.abs(t),y),m&&(t=function(t){t:for(var e,n=t.length,r=1,i=-1;r<n;++r)switch(t[r]){case".":i=e=r;break;case"0":0===i&&(i=r),e=r;break;default:if(!+t[r])break t;i>0&&(i=0)}return i>0?t.slice(0,i)+t.slice(e+1):t}(t)),T&&0==+t&&"+"!==h&&(T=!1),f=(T?"("===h?h:u:"-"===h||"("===h?"":h)+f,k=("s"===v?la[8+Qi/3]:"")+k+(T&&"("===h?")":""),w)for(i=-1,a=t.length;++i<a;)if(48>(c=t.charCodeAt(i))||c>57){k=(46===c?o+t.slice(i+1):t.slice(i))+k,t=t.slice(0,i);break}}g&&!d&&(t=r(t,1/0));var C=f.length+t.length+k.length,E=C<p?new Array(p-C+1).join(e):"";switch(g&&d&&(t=r(E+t,E.length?p-k.length:1/0),E=""),n){case"<":t=f+t+k+E;break;case"=":t=f+E+t+k;break;case"^":t=E.slice(0,C=E.length>>1)+f+t+k+E.slice(C);break;default:t=E+f+t+k}return s(t)}return y=void 0===y?6:/[gprs]/.test(v)?Math.max(1,Math.min(21,y)):Math.max(0,Math.min(20,y)),k.toString=function(){return t+""},k}return{format:h,formatPrefix:function(t,e){var n=h(((t=Ji(t)).type="f",t)),r=3*Math.max(-8,Math.min(8,Math.floor(na(e)/3))),i=Math.pow(10,-r),a=la[8+r/3];return function(t){return n(i*t)+a}}}}({thousands:",",grouping:[3],currency:["$",""]}),sa=oa.format,ca=oa.formatPrefix;class da extends Map{constructor(t,e=ga){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:e}}),null!=t)for(const[e,n]of t)this.set(e,n)}get(t){return super.get(pa(this,t))}has(t){return super.has(pa(this,t))}set(t,e){return super.set(function({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):(t.set(r,n),n)}(this,t),e)}delete(t){return super.delete(function({_intern:t,_key:e},n){const r=e(n);return t.has(r)&&(n=t.get(r),t.delete(r)),n}(this,t))}}function pa({_intern:t,_key:e},n){const r=e(n);return t.has(r)?t.get(r):n}function ga(t){return null!==t&&"object"==typeof t?t.valueOf():t}Set;const ya=Symbol("implicit");function ma(){var t=new da,e=[],n=[],r=ya;function i(i){let a=t.get(i);if(void 0===a){if(r!==ya)return r;t.set(i,a=e.push(i)-1)}return n[a%n.length]}return i.domain=function(n){if(!arguments.length)return e.slice();e=[],t=new da;for(const r of n)t.has(r)||t.set(r,e.push(r)-1);return i},i.range=function(t){return arguments.length?(n=Array.from(t),i):n.slice()},i.unknown=function(t){return arguments.length?(r=t,i):r},i.copy=function(){return ma(e,n).unknown(r)},Zi.apply(i,arguments),i}const va=1e3,ba=6e4,_a=36e5,xa=864e5,wa=6048e5,ka=31536e6;var Ta=new Date,Ca=new Date;function Ea(t,e,n,r){function i(e){return t(e=0===arguments.length?new Date:new Date(+e)),e}return i.floor=function(e){return t(e=new Date(+e)),e},i.ceil=function(n){return t(n=new Date(n-1)),e(n,1),t(n),n},i.round=function(t){var e=i(t),n=i.ceil(t);return t-e<n-t?e:n},i.offset=function(t,n){return e(t=new Date(+t),null==n?1:Math.floor(n)),t},i.range=function(n,r,a){var o,s=[];if(n=i.ceil(n),a=null==a?1:Math.floor(a),!(n<r&&a>0))return s;do{s.push(o=new Date(+n)),e(n,a),t(n)}while(o<n&&n<r);return s},i.filter=function(n){return Ea((function(e){if(e>=e)for(;t(e),!n(e);)e.setTime(e-1)}),(function(t,r){if(t>=t)if(r<0)for(;++r<=0;)for(;e(t,-1),!n(t););else for(;--r>=0;)for(;e(t,1),!n(t););}))},n&&(i.count=function(e,r){return Ta.setTime(+e),Ca.setTime(+r),t(Ta),t(Ca),Math.floor(n(Ta,Ca))},i.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?i.filter(r?function(e){return r(e)%t==0}:function(e){return i.count(0,e)%t==0}):i:null}),i}var Sa=Ea((function(){}),(function(t,e){t.setTime(+t+e)}),(function(t,e){return e-t}));Sa.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?Ea((function(e){e.setTime(Math.floor(e/t)*t)}),(function(e,n){e.setTime(+e+n*t)}),(function(e,n){return(n-e)/t})):Sa:null};const Aa=Sa;Sa.range;var Ma=Ea((function(t){t.setTime(t-t.getMilliseconds())}),(function(t,e){t.setTime(+t+e*va)}),(function(t,e){return(e-t)/va}),(function(t){return t.getUTCSeconds()}));const Na=Ma;Ma.range;var Da=Ea((function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*va)}),(function(t,e){t.setTime(+t+e*ba)}),(function(t,e){return(e-t)/ba}),(function(t){return t.getMinutes()}));const Ba=Da;Da.range;var La=Ea((function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*va-t.getMinutes()*ba)}),(function(t,e){t.setTime(+t+e*_a)}),(function(t,e){return(e-t)/_a}),(function(t){return t.getHours()}));const Oa=La;La.range;var Ia=Ea((t=>t.setHours(0,0,0,0)),((t,e)=>t.setDate(t.getDate()+e)),((t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*ba)/xa),(t=>t.getDate()-1));const Ra=Ia;function Fa(t){return Ea((function(e){e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)}),(function(t,e){t.setDate(t.getDate()+7*e)}),(function(t,e){return(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*ba)/wa}))}Ia.range;var Pa=Fa(0),Ya=Fa(1),ja=Fa(2),Ua=Fa(3),za=Fa(4),$a=Fa(5),qa=Fa(6),Ha=(Pa.range,Ya.range,ja.range,Ua.range,za.range,$a.range,qa.range,Ea((function(t){t.setDate(1),t.setHours(0,0,0,0)}),(function(t,e){t.setMonth(t.getMonth()+e)}),(function(t,e){return e.getMonth()-t.getMonth()+12*(e.getFullYear()-t.getFullYear())}),(function(t){return t.getMonth()})));const Wa=Ha;Ha.range;var Va=Ea((function(t){t.setMonth(0,1),t.setHours(0,0,0,0)}),(function(t,e){t.setFullYear(t.getFullYear()+e)}),(function(t,e){return e.getFullYear()-t.getFullYear()}),(function(t){return t.getFullYear()}));Va.every=function(t){return isFinite(t=Math.floor(t))&&t>0?Ea((function(e){e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)}),(function(e,n){e.setFullYear(e.getFullYear()+n*t)})):null};const Ga=Va;Va.range;var Xa=Ea((function(t){t.setUTCSeconds(0,0)}),(function(t,e){t.setTime(+t+e*ba)}),(function(t,e){return(e-t)/ba}),(function(t){return t.getUTCMinutes()}));const Za=Xa;Xa.range;var Qa=Ea((function(t){t.setUTCMinutes(0,0,0)}),(function(t,e){t.setTime(+t+e*_a)}),(function(t,e){return(e-t)/_a}),(function(t){return t.getUTCHours()}));const Ka=Qa;Qa.range;var Ja=Ea((function(t){t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+e)}),(function(t,e){return(e-t)/xa}),(function(t){return t.getUTCDate()-1}));const to=Ja;function eo(t){return Ea((function(e){e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+7*e)}),(function(t,e){return(e-t)/wa}))}Ja.range;var no=eo(0),ro=eo(1),io=eo(2),ao=eo(3),oo=eo(4),so=eo(5),co=eo(6),uo=(no.range,ro.range,io.range,ao.range,oo.range,so.range,co.range,Ea((function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCMonth(t.getUTCMonth()+e)}),(function(t,e){return e.getUTCMonth()-t.getUTCMonth()+12*(e.getUTCFullYear()-t.getUTCFullYear())}),(function(t){return t.getUTCMonth()})));const lo=uo;uo.range;var ho=Ea((function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)}),(function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()}),(function(t){return t.getUTCFullYear()}));ho.every=function(t){return isFinite(t=Math.floor(t))&&t>0?Ea((function(e){e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)}),(function(e,n){e.setUTCFullYear(e.getUTCFullYear()+n*t)})):null};const fo=ho;function po(t,e,n,r,i,a){const o=[[Na,1,va],[Na,5,5e3],[Na,15,15e3],[Na,30,3e4],[a,1,ba],[a,5,3e5],[a,15,9e5],[a,30,18e5],[i,1,_a],[i,3,108e5],[i,6,216e5],[i,12,432e5],[r,1,xa],[r,2,1728e5],[n,1,wa],[e,1,2592e6],[e,3,7776e6],[t,1,ka]];function s(e,n,r){const i=Math.abs(n-e)/r,a=Wr((([,,t])=>t)).right(o,i);if(a===o.length)return t.every(qr(e/ka,n/ka,r));if(0===a)return Aa.every(Math.max(qr(e,n,r),1));const[s,c]=o[i/o[a-1][2]<o[a][2]/i?a-1:a];return s.every(c)}return[function(t,e,n){const r=e<t;r&&([t,e]=[e,t]);const i=n&&"function"==typeof n.range?n:s(t,e,n),a=i?i.range(t,+e+1):[];return r?a.reverse():a},s]}ho.range;const[go,yo]=po(fo,lo,no,to,Ka,Za),[mo,vo]=po(Ga,Wa,Pa,Ra,Oa,Ba);function bo(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function _o(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function xo(t,e,n){return{y:t,m:e,d:n,H:0,M:0,S:0,L:0}}var wo,ko,To={"-":"",_:" ",0:"0"},Co=/^\s*\d+/,Eo=/^%/,So=/[\\^$*+?|[\]().{}]/g;function Ao(t,e,n){var r=t<0?"-":"",i=(r?-t:t)+"",a=i.length;return r+(a<n?new Array(n-a+1).join(e)+i:i)}function Mo(t){return t.replace(So,"\\$&")}function No(t){return new RegExp("^(?:"+t.map(Mo).join("|")+")","i")}function Do(t){return new Map(t.map(((t,e)=>[t.toLowerCase(),e])))}function Bo(t,e,n){var r=Co.exec(e.slice(n,n+1));return r?(t.w=+r[0],n+r[0].length):-1}function Lo(t,e,n){var r=Co.exec(e.slice(n,n+1));return r?(t.u=+r[0],n+r[0].length):-1}function Oo(t,e,n){var r=Co.exec(e.slice(n,n+2));return r?(t.U=+r[0],n+r[0].length):-1}function Io(t,e,n){var r=Co.exec(e.slice(n,n+2));return r?(t.V=+r[0],n+r[0].length):-1}function Ro(t,e,n){var r=Co.exec(e.slice(n,n+2));return r?(t.W=+r[0],n+r[0].length):-1}function Fo(t,e,n){var r=Co.exec(e.slice(n,n+4));return r?(t.y=+r[0],n+r[0].length):-1}function Po(t,e,n){var r=Co.exec(e.slice(n,n+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function Yo(t,e,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),n+r[0].length):-1}function jo(t,e,n){var r=Co.exec(e.slice(n,n+1));return r?(t.q=3*r[0]-3,n+r[0].length):-1}function Uo(t,e,n){var r=Co.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function zo(t,e,n){var r=Co.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function $o(t,e,n){var r=Co.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function qo(t,e,n){var r=Co.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function Ho(t,e,n){var r=Co.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function Wo(t,e,n){var r=Co.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function Vo(t,e,n){var r=Co.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function Go(t,e,n){var r=Co.exec(e.slice(n,n+6));return r?(t.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function Xo(t,e,n){var r=Eo.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function Zo(t,e,n){var r=Co.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function Qo(t,e,n){var r=Co.exec(e.slice(n));return r?(t.s=+r[0],n+r[0].length):-1}function Ko(t,e){return Ao(t.getDate(),e,2)}function Jo(t,e){return Ao(t.getHours(),e,2)}function ts(t,e){return Ao(t.getHours()%12||12,e,2)}function es(t,e){return Ao(1+Ra.count(Ga(t),t),e,3)}function ns(t,e){return Ao(t.getMilliseconds(),e,3)}function rs(t,e){return ns(t,e)+"000"}function is(t,e){return Ao(t.getMonth()+1,e,2)}function as(t,e){return Ao(t.getMinutes(),e,2)}function os(t,e){return Ao(t.getSeconds(),e,2)}function ss(t){var e=t.getDay();return 0===e?7:e}function cs(t,e){return Ao(Pa.count(Ga(t)-1,t),e,2)}function us(t){var e=t.getDay();return e>=4||0===e?za(t):za.ceil(t)}function ls(t,e){return t=us(t),Ao(za.count(Ga(t),t)+(4===Ga(t).getDay()),e,2)}function hs(t){return t.getDay()}function fs(t,e){return Ao(Ya.count(Ga(t)-1,t),e,2)}function ds(t,e){return Ao(t.getFullYear()%100,e,2)}function ps(t,e){return Ao((t=us(t)).getFullYear()%100,e,2)}function gs(t,e){return Ao(t.getFullYear()%1e4,e,4)}function ys(t,e){var n=t.getDay();return Ao((t=n>=4||0===n?za(t):za.ceil(t)).getFullYear()%1e4,e,4)}function ms(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+Ao(e/60|0,"0",2)+Ao(e%60,"0",2)}function vs(t,e){return Ao(t.getUTCDate(),e,2)}function bs(t,e){return Ao(t.getUTCHours(),e,2)}function _s(t,e){return Ao(t.getUTCHours()%12||12,e,2)}function xs(t,e){return Ao(1+to.count(fo(t),t),e,3)}function ws(t,e){return Ao(t.getUTCMilliseconds(),e,3)}function ks(t,e){return ws(t,e)+"000"}function Ts(t,e){return Ao(t.getUTCMonth()+1,e,2)}function Cs(t,e){return Ao(t.getUTCMinutes(),e,2)}function Es(t,e){return Ao(t.getUTCSeconds(),e,2)}function Ss(t){var e=t.getUTCDay();return 0===e?7:e}function As(t,e){return Ao(no.count(fo(t)-1,t),e,2)}function Ms(t){var e=t.getUTCDay();return e>=4||0===e?oo(t):oo.ceil(t)}function Ns(t,e){return t=Ms(t),Ao(oo.count(fo(t),t)+(4===fo(t).getUTCDay()),e,2)}function Ds(t){return t.getUTCDay()}function Bs(t,e){return Ao(ro.count(fo(t)-1,t),e,2)}function Ls(t,e){return Ao(t.getUTCFullYear()%100,e,2)}function Os(t,e){return Ao((t=Ms(t)).getUTCFullYear()%100,e,2)}function Is(t,e){return Ao(t.getUTCFullYear()%1e4,e,4)}function Rs(t,e){var n=t.getUTCDay();return Ao((t=n>=4||0===n?oo(t):oo.ceil(t)).getUTCFullYear()%1e4,e,4)}function Fs(){return"+0000"}function Ps(){return"%"}function Ys(t){return+t}function js(t){return Math.floor(+t/1e3)}function Us(t){return new Date(t)}function zs(t){return t instanceof Date?+t:+new Date(+t)}function $s(t,e,n,r,i,a,o,s,c,u){var l=Xi(),h=l.invert,f=l.domain,d=u(".%L"),p=u(":%S"),g=u("%I:%M"),y=u("%I %p"),m=u("%a %d"),v=u("%b %d"),b=u("%B"),_=u("%Y");function x(t){return(c(t)<t?d:s(t)<t?p:o(t)<t?g:a(t)<t?y:r(t)<t?i(t)<t?m:v:n(t)<t?b:_)(t)}return l.invert=function(t){return new Date(h(t))},l.domain=function(t){return arguments.length?f(Array.from(t,zs)):f().map(Us)},l.ticks=function(e){var n=f();return t(n[0],n[n.length-1],null==e?10:e)},l.tickFormat=function(t,e){return null==e?x:u(e)},l.nice=function(t){var n=f();return t&&"function"==typeof t.range||(t=e(n[0],n[n.length-1],null==t?10:t)),t?f(function(t,e){var n,r=0,i=(t=t.slice()).length-1,a=t[r],o=t[i];return o<a&&(n=r,r=i,i=n,n=a,a=o,o=n),t[r]=e.floor(a),t[i]=e.ceil(o),t}(n,t)):l},l.copy=function(){return Gi(l,$s(t,e,n,r,i,a,o,s,c,u))},l}function qs(){}function Hs(t){return null==t?qs:function(){return this.querySelector(t)}}function Ws(t){return null==t?[]:Array.isArray(t)?t:Array.from(t)}function Vs(){return[]}function Gs(t){return null==t?Vs:function(){return this.querySelectorAll(t)}}function Xs(t){return function(){return this.matches(t)}}function Zs(t){return function(e){return e.matches(t)}}wo=function(t){var e=t.dateTime,n=t.date,r=t.time,i=t.periods,a=t.days,o=t.shortDays,s=t.months,c=t.shortMonths,u=No(i),l=Do(i),h=No(a),f=Do(a),d=No(o),p=Do(o),g=No(s),y=Do(s),m=No(c),v=Do(c),b={a:function(t){return o[t.getDay()]},A:function(t){return a[t.getDay()]},b:function(t){return c[t.getMonth()]},B:function(t){return s[t.getMonth()]},c:null,d:Ko,e:Ko,f:rs,g:ps,G:ys,H:Jo,I:ts,j:es,L:ns,m:is,M:as,p:function(t){return i[+(t.getHours()>=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:Ys,s:js,S:os,u:ss,U:cs,V:ls,w:hs,W:fs,x:null,X:null,y:ds,Y:gs,Z:ms,"%":Ps},_={a:function(t){return o[t.getUTCDay()]},A:function(t){return a[t.getUTCDay()]},b:function(t){return c[t.getUTCMonth()]},B:function(t){return s[t.getUTCMonth()]},c:null,d:vs,e:vs,f:ks,g:Os,G:Rs,H:bs,I:_s,j:xs,L:ws,m:Ts,M:Cs,p:function(t){return i[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:Ys,s:js,S:Es,u:Ss,U:As,V:Ns,w:Ds,W:Bs,x:null,X:null,y:Ls,Y:Is,Z:Fs,"%":Ps},x={a:function(t,e,n){var r=d.exec(e.slice(n));return r?(t.w=p.get(r[0].toLowerCase()),n+r[0].length):-1},A:function(t,e,n){var r=h.exec(e.slice(n));return r?(t.w=f.get(r[0].toLowerCase()),n+r[0].length):-1},b:function(t,e,n){var r=m.exec(e.slice(n));return r?(t.m=v.get(r[0].toLowerCase()),n+r[0].length):-1},B:function(t,e,n){var r=g.exec(e.slice(n));return r?(t.m=y.get(r[0].toLowerCase()),n+r[0].length):-1},c:function(t,n,r){return T(t,e,n,r)},d:zo,e:zo,f:Go,g:Po,G:Fo,H:qo,I:qo,j:$o,L:Vo,m:Uo,M:Ho,p:function(t,e,n){var r=u.exec(e.slice(n));return r?(t.p=l.get(r[0].toLowerCase()),n+r[0].length):-1},q:jo,Q:Zo,s:Qo,S:Wo,u:Lo,U:Oo,V:Io,w:Bo,W:Ro,x:function(t,e,r){return T(t,n,e,r)},X:function(t,e,n){return T(t,r,e,n)},y:Po,Y:Fo,Z:Yo,"%":Xo};function w(t,e){return function(n){var r,i,a,o=[],s=-1,c=0,u=t.length;for(n instanceof Date||(n=new Date(+n));++s<u;)37===t.charCodeAt(s)&&(o.push(t.slice(c,s)),null!=(i=To[r=t.charAt(++s)])?r=t.charAt(++s):i="e"===r?" ":"0",(a=e[r])&&(r=a(n,i)),o.push(r),c=s+1);return o.push(t.slice(c,s)),o.join("")}}function k(t,e){return function(n){var r,i,a=xo(1900,void 0,1);if(T(a,t,n+="",0)!=n.length)return null;if("Q"in a)return new Date(a.Q);if("s"in a)return new Date(1e3*a.s+("L"in a?a.L:0));if(e&&!("Z"in a)&&(a.Z=0),"p"in a&&(a.H=a.H%12+12*a.p),void 0===a.m&&(a.m="q"in a?a.q:0),"V"in a){if(a.V<1||a.V>53)return null;"w"in a||(a.w=1),"Z"in a?(i=(r=_o(xo(a.y,0,1))).getUTCDay(),r=i>4||0===i?ro.ceil(r):ro(r),r=to.offset(r,7*(a.V-1)),a.y=r.getUTCFullYear(),a.m=r.getUTCMonth(),a.d=r.getUTCDate()+(a.w+6)%7):(i=(r=bo(xo(a.y,0,1))).getDay(),r=i>4||0===i?Ya.ceil(r):Ya(r),r=Ra.offset(r,7*(a.V-1)),a.y=r.getFullYear(),a.m=r.getMonth(),a.d=r.getDate()+(a.w+6)%7)}else("W"in a||"U"in a)&&("w"in a||(a.w="u"in a?a.u%7:"W"in a?1:0),i="Z"in a?_o(xo(a.y,0,1)).getUTCDay():bo(xo(a.y,0,1)).getDay(),a.m=0,a.d="W"in a?(a.w+6)%7+7*a.W-(i+5)%7:a.w+7*a.U-(i+6)%7);return"Z"in a?(a.H+=a.Z/100|0,a.M+=a.Z%100,_o(a)):bo(a)}}function T(t,e,n,r){for(var i,a,o=0,s=e.length,c=n.length;o<s;){if(r>=c)return-1;if(37===(i=e.charCodeAt(o++))){if(i=e.charAt(o++),!(a=x[i in To?e.charAt(o++):i])||(r=a(t,n,r))<0)return-1}else if(i!=n.charCodeAt(r++))return-1}return r}return b.x=w(n,b),b.X=w(r,b),b.c=w(e,b),_.x=w(n,_),_.X=w(r,_),_.c=w(e,_),{format:function(t){var e=w(t+="",b);return e.toString=function(){return t},e},parse:function(t){var e=k(t+="",!1);return e.toString=function(){return t},e},utcFormat:function(t){var e=w(t+="",_);return e.toString=function(){return t},e},utcParse:function(t){var e=k(t+="",!0);return e.toString=function(){return t},e}}}({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]}),ko=wo.format,wo.parse,wo.utcFormat,wo.utcParse;var Qs=Array.prototype.find;function Ks(){return this.firstElementChild}var Js=Array.prototype.filter;function tc(){return Array.from(this.children)}function ec(t){return new Array(t.length)}function nc(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}function rc(t){return function(){return t}}function ic(t,e,n,r,i,a){for(var o,s=0,c=e.length,u=a.length;s<u;++s)(o=e[s])?(o.__data__=a[s],r[s]=o):n[s]=new nc(t,a[s]);for(;s<c;++s)(o=e[s])&&(i[s]=o)}function ac(t,e,n,r,i,a,o){var s,c,u,l=new Map,h=e.length,f=a.length,d=new Array(h);for(s=0;s<h;++s)(c=e[s])&&(d[s]=u=o.call(c,c.__data__,s,e)+"",l.has(u)?i[s]=c:l.set(u,c));for(s=0;s<f;++s)u=o.call(t,a[s],s,a)+"",(c=l.get(u))?(r[s]=c,c.__data__=a[s],l.delete(u)):n[s]=new nc(t,a[s]);for(s=0;s<h;++s)(c=e[s])&&l.get(d[s])===c&&(i[s]=c)}function oc(t){return t.__data__}function sc(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}function cc(t,e){return t<e?-1:t>e?1:t>=e?0:NaN}nc.prototype={constructor:nc,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};var uc="http://www.w3.org/1999/xhtml";const lc={svg:"http://www.w3.org/2000/svg",xhtml:uc,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function hc(t){var e=t+="",n=e.indexOf(":");return n>=0&&"xmlns"!==(e=t.slice(0,n))&&(t=t.slice(n+1)),lc.hasOwnProperty(e)?{space:lc[e],local:t}:t}function fc(t){return function(){this.removeAttribute(t)}}function dc(t){return function(){this.removeAttributeNS(t.space,t.local)}}function pc(t,e){return function(){this.setAttribute(t,e)}}function gc(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function yc(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttribute(t):this.setAttribute(t,n)}}function mc(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}}function vc(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function bc(t){return function(){this.style.removeProperty(t)}}function _c(t,e,n){return function(){this.style.setProperty(t,e,n)}}function xc(t,e,n){return function(){var r=e.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,n)}}function wc(t,e){return t.style.getPropertyValue(e)||vc(t).getComputedStyle(t,null).getPropertyValue(e)}function kc(t){return function(){delete this[t]}}function Tc(t,e){return function(){this[t]=e}}function Cc(t,e){return function(){var n=e.apply(this,arguments);null==n?delete this[t]:this[t]=n}}function Ec(t){return t.trim().split(/^|\s+/)}function Sc(t){return t.classList||new Ac(t)}function Ac(t){this._node=t,this._names=Ec(t.getAttribute("class")||"")}function Mc(t,e){for(var n=Sc(t),r=-1,i=e.length;++r<i;)n.add(e[r])}function Nc(t,e){for(var n=Sc(t),r=-1,i=e.length;++r<i;)n.remove(e[r])}function Dc(t){return function(){Mc(this,t)}}function Bc(t){return function(){Nc(this,t)}}function Lc(t,e){return function(){(e.apply(this,arguments)?Mc:Nc)(this,t)}}function Oc(){this.textContent=""}function Ic(t){return function(){this.textContent=t}}function Rc(t){return function(){var e=t.apply(this,arguments);this.textContent=null==e?"":e}}function Fc(){this.innerHTML=""}function Pc(t){return function(){this.innerHTML=t}}function Yc(t){return function(){var e=t.apply(this,arguments);this.innerHTML=null==e?"":e}}function jc(){this.nextSibling&&this.parentNode.appendChild(this)}function Uc(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function zc(t){return function(){var e=this.ownerDocument,n=this.namespaceURI;return n===uc&&e.documentElement.namespaceURI===uc?e.createElement(t):e.createElementNS(n,t)}}function $c(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function qc(t){var e=hc(t);return(e.local?$c:zc)(e)}function Hc(){return null}function Wc(){var t=this.parentNode;t&&t.removeChild(this)}function Vc(){var t=this.cloneNode(!1),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function Gc(){var t=this.cloneNode(!0),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function Xc(t){return t.trim().split(/^|\s+/).map((function(t){var e="",n=t.indexOf(".");return n>=0&&(e=t.slice(n+1),t=t.slice(0,n)),{type:t,name:e}}))}function Zc(t){return function(){var e=this.__on;if(e){for(var n,r=0,i=-1,a=e.length;r<a;++r)n=e[r],t.type&&n.type!==t.type||n.name!==t.name?e[++i]=n:this.removeEventListener(n.type,n.listener,n.options);++i?e.length=i:delete this.__on}}}function Qc(t,e,n){return function(){var r,i=this.__on,a=function(t){return function(e){t.call(this,e,this.__data__)}}(e);if(i)for(var o=0,s=i.length;o<s;++o)if((r=i[o]).type===t.type&&r.name===t.name)return this.removeEventListener(r.type,r.listener,r.options),this.addEventListener(r.type,r.listener=a,r.options=n),void(r.value=e);this.addEventListener(t.type,a,n),r={type:t.type,name:t.name,value:e,listener:a,options:n},i?i.push(r):this.__on=[r]}}function Kc(t,e,n){var r=vc(t),i=r.CustomEvent;"function"==typeof i?i=new i(e,n):(i=r.document.createEvent("Event"),n?(i.initEvent(e,n.bubbles,n.cancelable),i.detail=n.detail):i.initEvent(e,!1,!1)),t.dispatchEvent(i)}function Jc(t,e){return function(){return Kc(this,t,e)}}function tu(t,e){return function(){return Kc(this,t,e.apply(this,arguments))}}Ac.prototype={add:function(t){this._names.indexOf(t)<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var eu=[null];function nu(t,e){this._groups=t,this._parents=e}function ru(){return new nu([[document.documentElement]],eu)}nu.prototype=ru.prototype={constructor:nu,select:function(t){"function"!=typeof t&&(t=Hs(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var a,o,s=e[i],c=s.length,u=r[i]=new Array(c),l=0;l<c;++l)(a=s[l])&&(o=t.call(a,a.__data__,l,s))&&("__data__"in a&&(o.__data__=a.__data__),u[l]=o);return new nu(r,this._parents)},selectAll:function(t){t="function"==typeof t?function(t){return function(){return Ws(t.apply(this,arguments))}}(t):Gs(t);for(var e=this._groups,n=e.length,r=[],i=[],a=0;a<n;++a)for(var o,s=e[a],c=s.length,u=0;u<c;++u)(o=s[u])&&(r.push(t.call(o,o.__data__,u,s)),i.push(o));return new nu(r,i)},selectChild:function(t){return this.select(null==t?Ks:function(t){return function(){return Qs.call(this.children,t)}}("function"==typeof t?t:Zs(t)))},selectChildren:function(t){return this.selectAll(null==t?tc:function(t){return function(){return Js.call(this.children,t)}}("function"==typeof t?t:Zs(t)))},filter:function(t){"function"!=typeof t&&(t=Xs(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var a,o=e[i],s=o.length,c=r[i]=[],u=0;u<s;++u)(a=o[u])&&t.call(a,a.__data__,u,o)&&c.push(a);return new nu(r,this._parents)},data:function(t,e){if(!arguments.length)return Array.from(this,oc);var n=e?ac:ic,r=this._parents,i=this._groups;"function"!=typeof t&&(t=rc(t));for(var a=i.length,o=new Array(a),s=new Array(a),c=new Array(a),u=0;u<a;++u){var l=r[u],h=i[u],f=h.length,d=sc(t.call(l,l&&l.__data__,u,r)),p=d.length,g=s[u]=new Array(p),y=o[u]=new Array(p),m=c[u]=new Array(f);n(l,h,g,y,m,d,e);for(var v,b,_=0,x=0;_<p;++_)if(v=g[_]){for(_>=x&&(x=_+1);!(b=y[x])&&++x<p;);v._next=b||null}}return(o=new nu(o,r))._enter=s,o._exit=c,o},enter:function(){return new nu(this._enter||this._groups.map(ec),this._parents)},exit:function(){return new nu(this._exit||this._groups.map(ec),this._parents)},join:function(t,e,n){var r=this.enter(),i=this,a=this.exit();return"function"==typeof t?(r=t(r))&&(r=r.selection()):r=r.append(t+""),null!=e&&(i=e(i))&&(i=i.selection()),null==n?a.remove():n(a),r&&i?r.merge(i).order():i},merge:function(t){for(var e=t.selection?t.selection():t,n=this._groups,r=e._groups,i=n.length,a=r.length,o=Math.min(i,a),s=new Array(i),c=0;c<o;++c)for(var u,l=n[c],h=r[c],f=l.length,d=s[c]=new Array(f),p=0;p<f;++p)(u=l[p]||h[p])&&(d[p]=u);for(;c<i;++c)s[c]=n[c];return new nu(s,this._parents)},selection:function(){return this},order:function(){for(var t=this._groups,e=-1,n=t.length;++e<n;)for(var r,i=t[e],a=i.length-1,o=i[a];--a>=0;)(r=i[a])&&(o&&4^r.compareDocumentPosition(o)&&o.parentNode.insertBefore(r,o),o=r);return this},sort:function(t){function e(e,n){return e&&n?t(e.__data__,n.__data__):!e-!n}t||(t=cc);for(var n=this._groups,r=n.length,i=new Array(r),a=0;a<r;++a){for(var o,s=n[a],c=s.length,u=i[a]=new Array(c),l=0;l<c;++l)(o=s[l])&&(u[l]=o);u.sort(e)}return new nu(i,this._parents).order()},call:function(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this},nodes:function(){return Array.from(this)},node:function(){for(var t=this._groups,e=0,n=t.length;e<n;++e)for(var r=t[e],i=0,a=r.length;i<a;++i){var o=r[i];if(o)return o}return null},size:function(){let t=0;for(const e of this)++t;return t},empty:function(){return!this.node()},each:function(t){for(var e=this._groups,n=0,r=e.length;n<r;++n)for(var i,a=e[n],o=0,s=a.length;o<s;++o)(i=a[o])&&t.call(i,i.__data__,o,a);return this},attr:function(t,e){var n=hc(t);if(arguments.length<2){var r=this.node();return n.local?r.getAttributeNS(n.space,n.local):r.getAttribute(n)}return this.each((null==e?n.local?dc:fc:"function"==typeof e?n.local?mc:yc:n.local?gc:pc)(n,e))},style:function(t,e,n){return arguments.length>1?this.each((null==e?bc:"function"==typeof e?xc:_c)(t,e,null==n?"":n)):wc(this.node(),t)},property:function(t,e){return arguments.length>1?this.each((null==e?kc:"function"==typeof e?Cc:Tc)(t,e)):this.node()[t]},classed:function(t,e){var n=Ec(t+"");if(arguments.length<2){for(var r=Sc(this.node()),i=-1,a=n.length;++i<a;)if(!r.contains(n[i]))return!1;return!0}return this.each(("function"==typeof e?Lc:e?Dc:Bc)(n,e))},text:function(t){return arguments.length?this.each(null==t?Oc:("function"==typeof t?Rc:Ic)(t)):this.node().textContent},html:function(t){return arguments.length?this.each(null==t?Fc:("function"==typeof t?Yc:Pc)(t)):this.node().innerHTML},raise:function(){return this.each(jc)},lower:function(){return this.each(Uc)},append:function(t){var e="function"==typeof t?t:qc(t);return this.select((function(){return this.appendChild(e.apply(this,arguments))}))},insert:function(t,e){var n="function"==typeof t?t:qc(t),r=null==e?Hc:"function"==typeof e?e:Hs(e);return this.select((function(){return this.insertBefore(n.apply(this,arguments),r.apply(this,arguments)||null)}))},remove:function(){return this.each(Wc)},clone:function(t){return this.select(t?Gc:Vc)},datum:function(t){return arguments.length?this.property("__data__",t):this.node().__data__},on:function(t,e,n){var r,i,a=Xc(t+""),o=a.length;if(!(arguments.length<2)){for(s=e?Qc:Zc,r=0;r<o;++r)this.each(s(a[r],e,n));return this}var s=this.node().__on;if(s)for(var c,u=0,l=s.length;u<l;++u)for(r=0,c=s[u];r<o;++r)if((i=a[r]).type===c.type&&i.name===c.name)return c.value},dispatch:function(t,e){return this.each(("function"==typeof e?tu:Jc)(t,e))},[Symbol.iterator]:function*(){for(var t=this._groups,e=0,n=t.length;e<n;++e)for(var r,i=t[e],a=0,o=i.length;a<o;++a)(r=i[a])&&(yield r)}};const iu=ru;function au(t){return"string"==typeof t?new nu([[document.querySelector(t)]],[document.documentElement]):new nu([[t]],eu)}function ou(t){return"string"==typeof t?new nu([document.querySelectorAll(t)],[document.documentElement]):new nu([Ws(t)],eu)}const su=Math.PI,cu=2*su,uu=1e-6,lu=cu-uu;function hu(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function fu(){return new hu}hu.prototype=fu.prototype={constructor:hu,moveTo:function(t,e){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)},closePath:function(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},lineTo:function(t,e){this._+="L"+(this._x1=+t)+","+(this._y1=+e)},quadraticCurveTo:function(t,e,n,r){this._+="Q"+ +t+","+ +e+","+(this._x1=+n)+","+(this._y1=+r)},bezierCurveTo:function(t,e,n,r,i,a){this._+="C"+ +t+","+ +e+","+ +n+","+ +r+","+(this._x1=+i)+","+(this._y1=+a)},arcTo:function(t,e,n,r,i){t=+t,e=+e,n=+n,r=+r,i=+i;var a=this._x1,o=this._y1,s=n-t,c=r-e,u=a-t,l=o-e,h=u*u+l*l;if(i<0)throw new Error("negative radius: "+i);if(null===this._x1)this._+="M"+(this._x1=t)+","+(this._y1=e);else if(h>uu)if(Math.abs(l*s-c*u)>uu&&i){var f=n-a,d=r-o,p=s*s+c*c,g=f*f+d*d,y=Math.sqrt(p),m=Math.sqrt(h),v=i*Math.tan((su-Math.acos((p+h-g)/(2*y*m)))/2),b=v/m,_=v/y;Math.abs(b-1)>uu&&(this._+="L"+(t+b*u)+","+(e+b*l)),this._+="A"+i+","+i+",0,0,"+ +(l*f>u*d)+","+(this._x1=t+_*s)+","+(this._y1=e+_*c)}else this._+="L"+(this._x1=t)+","+(this._y1=e)},arc:function(t,e,n,r,i,a){t=+t,e=+e,a=!!a;var o=(n=+n)*Math.cos(r),s=n*Math.sin(r),c=t+o,u=e+s,l=1^a,h=a?r-i:i-r;if(n<0)throw new Error("negative radius: "+n);null===this._x1?this._+="M"+c+","+u:(Math.abs(this._x1-c)>uu||Math.abs(this._y1-u)>uu)&&(this._+="L"+c+","+u),n&&(h<0&&(h=h%cu+cu),h>lu?this._+="A"+n+","+n+",0,1,"+l+","+(t-o)+","+(e-s)+"A"+n+","+n+",0,1,"+l+","+(this._x1=c)+","+(this._y1=u):h>uu&&(this._+="A"+n+","+n+",0,"+ +(h>=su)+","+l+","+(this._x1=t+n*Math.cos(i))+","+(this._y1=e+n*Math.sin(i))))},rect:function(t,e,n,r){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)+"h"+ +n+"v"+ +r+"h"+-n+"Z"},toString:function(){return this._}};const du=fu;function pu(t){return function(){return t}}var gu=Math.abs,yu=Math.atan2,mu=Math.cos,vu=Math.max,bu=Math.min,_u=Math.sin,xu=Math.sqrt,wu=1e-12,ku=Math.PI,Tu=ku/2,Cu=2*ku;function Eu(t){return t>1?0:t<-1?ku:Math.acos(t)}function Su(t){return t>=1?Tu:t<=-1?-Tu:Math.asin(t)}function Au(t){return t.innerRadius}function Mu(t){return t.outerRadius}function Nu(t){return t.startAngle}function Du(t){return t.endAngle}function Bu(t){return t&&t.padAngle}function Lu(t,e,n,r,i,a,o,s){var c=n-t,u=r-e,l=o-i,h=s-a,f=h*c-l*u;if(!(f*f<wu))return[t+(f=(l*(e-a)-h*(t-i))/f)*c,e+f*u]}function Ou(t,e,n,r,i,a,o){var s=t-n,c=e-r,u=(o?a:-a)/xu(s*s+c*c),l=u*c,h=-u*s,f=t+l,d=e+h,p=n+l,g=r+h,y=(f+p)/2,m=(d+g)/2,v=p-f,b=g-d,_=v*v+b*b,x=i-a,w=f*g-p*d,k=(b<0?-1:1)*xu(vu(0,x*x*_-w*w)),T=(w*b-v*k)/_,C=(-w*v-b*k)/_,E=(w*b+v*k)/_,S=(-w*v+b*k)/_,A=T-y,M=C-m,N=E-y,D=S-m;return A*A+M*M>N*N+D*D&&(T=E,C=S),{cx:T,cy:C,x01:-l,y01:-h,x11:T*(i/x-1),y11:C*(i/x-1)}}function Iu(){var t=Au,e=Mu,n=pu(0),r=null,i=Nu,a=Du,o=Bu,s=null;function c(){var c,u,l=+t.apply(this,arguments),h=+e.apply(this,arguments),f=i.apply(this,arguments)-Tu,d=a.apply(this,arguments)-Tu,p=gu(d-f),g=d>f;if(s||(s=c=du()),h<l&&(u=h,h=l,l=u),h>wu)if(p>Cu-wu)s.moveTo(h*mu(f),h*_u(f)),s.arc(0,0,h,f,d,!g),l>wu&&(s.moveTo(l*mu(d),l*_u(d)),s.arc(0,0,l,d,f,g));else{var y,m,v=f,b=d,_=f,x=d,w=p,k=p,T=o.apply(this,arguments)/2,C=T>wu&&(r?+r.apply(this,arguments):xu(l*l+h*h)),E=bu(gu(h-l)/2,+n.apply(this,arguments)),S=E,A=E;if(C>wu){var M=Su(C/l*_u(T)),N=Su(C/h*_u(T));(w-=2*M)>wu?(_+=M*=g?1:-1,x-=M):(w=0,_=x=(f+d)/2),(k-=2*N)>wu?(v+=N*=g?1:-1,b-=N):(k=0,v=b=(f+d)/2)}var D=h*mu(v),B=h*_u(v),L=l*mu(x),O=l*_u(x);if(E>wu){var I,R=h*mu(b),F=h*_u(b),P=l*mu(_),Y=l*_u(_);if(p<ku&&(I=Lu(D,B,P,Y,R,F,L,O))){var j=D-I[0],U=B-I[1],z=R-I[0],$=F-I[1],q=1/_u(Eu((j*z+U*$)/(xu(j*j+U*U)*xu(z*z+$*$)))/2),H=xu(I[0]*I[0]+I[1]*I[1]);S=bu(E,(l-H)/(q-1)),A=bu(E,(h-H)/(q+1))}}k>wu?A>wu?(y=Ou(P,Y,D,B,h,A,g),m=Ou(R,F,L,O,h,A,g),s.moveTo(y.cx+y.x01,y.cy+y.y01),A<E?s.arc(y.cx,y.cy,A,yu(y.y01,y.x01),yu(m.y01,m.x01),!g):(s.arc(y.cx,y.cy,A,yu(y.y01,y.x01),yu(y.y11,y.x11),!g),s.arc(0,0,h,yu(y.cy+y.y11,y.cx+y.x11),yu(m.cy+m.y11,m.cx+m.x11),!g),s.arc(m.cx,m.cy,A,yu(m.y11,m.x11),yu(m.y01,m.x01),!g))):(s.moveTo(D,B),s.arc(0,0,h,v,b,!g)):s.moveTo(D,B),l>wu&&w>wu?S>wu?(y=Ou(L,O,R,F,l,-S,g),m=Ou(D,B,P,Y,l,-S,g),s.lineTo(y.cx+y.x01,y.cy+y.y01),S<E?s.arc(y.cx,y.cy,S,yu(y.y01,y.x01),yu(m.y01,m.x01),!g):(s.arc(y.cx,y.cy,S,yu(y.y01,y.x01),yu(y.y11,y.x11),!g),s.arc(0,0,l,yu(y.cy+y.y11,y.cx+y.x11),yu(m.cy+m.y11,m.cx+m.x11),g),s.arc(m.cx,m.cy,S,yu(m.y11,m.x11),yu(m.y01,m.x01),!g))):s.arc(0,0,l,x,_,g):s.lineTo(L,O)}else s.moveTo(0,0);if(s.closePath(),c)return s=null,c+""||null}return c.centroid=function(){var n=(+t.apply(this,arguments)+ +e.apply(this,arguments))/2,r=(+i.apply(this,arguments)+ +a.apply(this,arguments))/2-ku/2;return[mu(r)*n,_u(r)*n]},c.innerRadius=function(e){return arguments.length?(t="function"==typeof e?e:pu(+e),c):t},c.outerRadius=function(t){return arguments.length?(e="function"==typeof t?t:pu(+t),c):e},c.cornerRadius=function(t){return arguments.length?(n="function"==typeof t?t:pu(+t),c):n},c.padRadius=function(t){return arguments.length?(r=null==t?null:"function"==typeof t?t:pu(+t),c):r},c.startAngle=function(t){return arguments.length?(i="function"==typeof t?t:pu(+t),c):i},c.endAngle=function(t){return arguments.length?(a="function"==typeof t?t:pu(+t),c):a},c.padAngle=function(t){return arguments.length?(o="function"==typeof t?t:pu(+t),c):o},c.context=function(t){return arguments.length?(s=null==t?null:t,c):s},c}function Ru(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}function Fu(t){this._context=t}function Pu(t){return new Fu(t)}function Yu(t){return t[0]}function ju(t){return t[1]}function Uu(t,e){var n=pu(!0),r=null,i=Pu,a=null;function o(o){var s,c,u,l=(o=Ru(o)).length,h=!1;for(null==r&&(a=i(u=du())),s=0;s<=l;++s)!(s<l&&n(c=o[s],s,o))===h&&((h=!h)?a.lineStart():a.lineEnd()),h&&a.point(+t(c,s,o),+e(c,s,o));if(u)return a=null,u+""||null}return t="function"==typeof t?t:void 0===t?Yu:pu(t),e="function"==typeof e?e:void 0===e?ju:pu(e),o.x=function(e){return arguments.length?(t="function"==typeof e?e:pu(+e),o):t},o.y=function(t){return arguments.length?(e="function"==typeof t?t:pu(+t),o):e},o.defined=function(t){return arguments.length?(n="function"==typeof t?t:pu(!!t),o):n},o.curve=function(t){return arguments.length?(i=t,null!=r&&(a=i(r)),o):i},o.context=function(t){return arguments.length?(null==t?r=a=null:a=i(r=t),o):r},o}function zu(t,e){return e<t?-1:e>t?1:e>=t?0:NaN}function $u(t){return t}function qu(){}function Hu(t,e,n){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+n)/6)}function Wu(t){this._context=t}function Vu(t){return new Wu(t)}function Gu(t){this._context=t}function Xu(t){this._context=t}function Zu(t){this._context=t}function Qu(t){return t<0?-1:1}function Ku(t,e,n){var r=t._x1-t._x0,i=e-t._x1,a=(t._y1-t._y0)/(r||i<0&&-0),o=(n-t._y1)/(i||r<0&&-0),s=(a*i+o*r)/(r+i);return(Qu(a)+Qu(o))*Math.min(Math.abs(a),Math.abs(o),.5*Math.abs(s))||0}function Ju(t,e){var n=t._x1-t._x0;return n?(3*(t._y1-t._y0)/n-e)/2:e}function tl(t,e,n){var r=t._x0,i=t._y0,a=t._x1,o=t._y1,s=(a-r)/3;t._context.bezierCurveTo(r+s,i+s*e,a-s,o-s*n,a,o)}function el(t){this._context=t}function nl(t){this._context=new rl(t)}function rl(t){this._context=t}function il(t){this._context=t}function al(t){var e,n,r=t.length-1,i=new Array(r),a=new Array(r),o=new Array(r);for(i[0]=0,a[0]=2,o[0]=t[0]+2*t[1],e=1;e<r-1;++e)i[e]=1,a[e]=4,o[e]=4*t[e]+2*t[e+1];for(i[r-1]=2,a[r-1]=7,o[r-1]=8*t[r-1]+t[r],e=1;e<r;++e)n=i[e]/a[e-1],a[e]-=n,o[e]-=n*o[e-1];for(i[r-1]=o[r-1]/a[r-1],e=r-2;e>=0;--e)i[e]=(o[e]-i[e+1])/a[e];for(a[r-1]=(t[r]+i[r-1])/2,e=0;e<r-1;++e)a[e]=2*t[e+1]-i[e+1];return[i,a]}function ol(t,e){this._context=t,this._t=e}Array.prototype.slice,Fu.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._context.lineTo(t,e)}}},Wu.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:Hu(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:Hu(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},Gu.prototype={areaStart:qu,areaEnd:qu,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x2=t,this._y2=e;break;case 1:this._point=2,this._x3=t,this._y3=e;break;case 2:this._point=3,this._x4=t,this._y4=e,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+e)/6);break;default:Hu(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},Xu.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var n=(this._x0+4*this._x1+t)/6,r=(this._y0+4*this._y1+e)/6;this._line?this._context.lineTo(n,r):this._context.moveTo(n,r);break;case 3:this._point=4;default:Hu(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},Zu.prototype={areaStart:qu,areaEnd:qu,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(t,e){t=+t,e=+e,this._point?this._context.lineTo(t,e):(this._point=1,this._context.moveTo(t,e))}},el.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:tl(this,this._t0,Ju(this,this._t0))}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){var n=NaN;if(e=+e,(t=+t)!==this._x1||e!==this._y1){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,tl(this,Ju(this,n=Ku(this,t,e)),n);break;default:tl(this,this._t0,n=Ku(this,t,e))}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e,this._t0=n}}},(nl.prototype=Object.create(el.prototype)).point=function(t,e){el.prototype.point.call(this,e,t)},rl.prototype={moveTo:function(t,e){this._context.moveTo(e,t)},closePath:function(){this._context.closePath()},lineTo:function(t,e){this._context.lineTo(e,t)},bezierCurveTo:function(t,e,n,r,i,a){this._context.bezierCurveTo(e,t,r,n,a,i)}},il.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var t=this._x,e=this._y,n=t.length;if(n)if(this._line?this._context.lineTo(t[0],e[0]):this._context.moveTo(t[0],e[0]),2===n)this._context.lineTo(t[1],e[1]);else for(var r=al(t),i=al(e),a=0,o=1;o<n;++a,++o)this._context.bezierCurveTo(r[0][a],i[0][a],r[1][a],i[1][a],t[o],e[o]);(this._line||0!==this._line&&1===n)&&this._context.closePath(),this._line=1-this._line,this._x=this._y=null},point:function(t,e){this._x.push(+t),this._y.push(+e)}},ol.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=this._y=NaN,this._point=0},lineEnd:function(){0<this._t&&this._t<1&&2===this._point&&this._context.lineTo(this._x,this._y),(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line>=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var n=this._x*(1-this._t)+t*this._t;this._context.lineTo(n,this._y),this._context.lineTo(n,e)}}this._x=t,this._y=e}};var sl=new Date,cl=new Date;function ul(t,e,n,r){function i(e){return t(e=0===arguments.length?new Date:new Date(+e)),e}return i.floor=function(e){return t(e=new Date(+e)),e},i.ceil=function(n){return t(n=new Date(n-1)),e(n,1),t(n),n},i.round=function(t){var e=i(t),n=i.ceil(t);return t-e<n-t?e:n},i.offset=function(t,n){return e(t=new Date(+t),null==n?1:Math.floor(n)),t},i.range=function(n,r,a){var o,s=[];if(n=i.ceil(n),a=null==a?1:Math.floor(a),!(n<r&&a>0))return s;do{s.push(o=new Date(+n)),e(n,a),t(n)}while(o<n&&n<r);return s},i.filter=function(n){return ul((function(e){if(e>=e)for(;t(e),!n(e);)e.setTime(e-1)}),(function(t,r){if(t>=t)if(r<0)for(;++r<=0;)for(;e(t,-1),!n(t););else for(;--r>=0;)for(;e(t,1),!n(t););}))},n&&(i.count=function(e,r){return sl.setTime(+e),cl.setTime(+r),t(sl),t(cl),Math.floor(n(sl,cl))},i.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?i.filter(r?function(e){return r(e)%t==0}:function(e){return i.count(0,e)%t==0}):i:null}),i}const ll=864e5,hl=6048e5;function fl(t){return ul((function(e){e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+7*e)}),(function(t,e){return(e-t)/hl}))}var dl=fl(0),pl=fl(1),gl=fl(2),yl=fl(3),ml=fl(4),vl=fl(5),bl=fl(6),_l=(dl.range,pl.range,gl.range,yl.range,ml.range,vl.range,bl.range,ul((function(t){t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+e)}),(function(t,e){return(e-t)/ll}),(function(t){return t.getUTCDate()-1})));const xl=_l;function wl(t){return ul((function(e){e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)}),(function(t,e){t.setDate(t.getDate()+7*e)}),(function(t,e){return(e-t-6e4*(e.getTimezoneOffset()-t.getTimezoneOffset()))/hl}))}_l.range;var kl=wl(0),Tl=wl(1),Cl=wl(2),El=wl(3),Sl=wl(4),Al=wl(5),Ml=wl(6),Nl=(kl.range,Tl.range,Cl.range,El.range,Sl.range,Al.range,Ml.range,ul((t=>t.setHours(0,0,0,0)),((t,e)=>t.setDate(t.getDate()+e)),((t,e)=>(e-t-6e4*(e.getTimezoneOffset()-t.getTimezoneOffset()))/ll),(t=>t.getDate()-1)));const Dl=Nl;Nl.range;var Bl=ul((function(t){t.setMonth(0,1),t.setHours(0,0,0,0)}),(function(t,e){t.setFullYear(t.getFullYear()+e)}),(function(t,e){return e.getFullYear()-t.getFullYear()}),(function(t){return t.getFullYear()}));Bl.every=function(t){return isFinite(t=Math.floor(t))&&t>0?ul((function(e){e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)}),(function(e,n){e.setFullYear(e.getFullYear()+n*t)})):null};const Ll=Bl;Bl.range;var Ol=ul((function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)}),(function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()}),(function(t){return t.getUTCFullYear()}));Ol.every=function(t){return isFinite(t=Math.floor(t))&&t>0?ul((function(e){e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)}),(function(e,n){e.setUTCFullYear(e.getUTCFullYear()+n*t)})):null};const Il=Ol;function Rl(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function Fl(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function Pl(t,e,n){return{y:t,m:e,d:n,H:0,M:0,S:0,L:0}}Ol.range;var Yl,jl,Ul={"-":"",_:" ",0:"0"},zl=/^\s*\d+/,$l=/^%/,ql=/[\\^$*+?|[\]().{}]/g;function Hl(t,e,n){var r=t<0?"-":"",i=(r?-t:t)+"",a=i.length;return r+(a<n?new Array(n-a+1).join(e)+i:i)}function Wl(t){return t.replace(ql,"\\$&")}function Vl(t){return new RegExp("^(?:"+t.map(Wl).join("|")+")","i")}function Gl(t){return new Map(t.map(((t,e)=>[t.toLowerCase(),e])))}function Xl(t,e,n){var r=zl.exec(e.slice(n,n+1));return r?(t.w=+r[0],n+r[0].length):-1}function Zl(t,e,n){var r=zl.exec(e.slice(n,n+1));return r?(t.u=+r[0],n+r[0].length):-1}function Ql(t,e,n){var r=zl.exec(e.slice(n,n+2));return r?(t.U=+r[0],n+r[0].length):-1}function Kl(t,e,n){var r=zl.exec(e.slice(n,n+2));return r?(t.V=+r[0],n+r[0].length):-1}function Jl(t,e,n){var r=zl.exec(e.slice(n,n+2));return r?(t.W=+r[0],n+r[0].length):-1}function th(t,e,n){var r=zl.exec(e.slice(n,n+4));return r?(t.y=+r[0],n+r[0].length):-1}function eh(t,e,n){var r=zl.exec(e.slice(n,n+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function nh(t,e,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),n+r[0].length):-1}function rh(t,e,n){var r=zl.exec(e.slice(n,n+1));return r?(t.q=3*r[0]-3,n+r[0].length):-1}function ih(t,e,n){var r=zl.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function ah(t,e,n){var r=zl.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function oh(t,e,n){var r=zl.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function sh(t,e,n){var r=zl.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function ch(t,e,n){var r=zl.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function uh(t,e,n){var r=zl.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function lh(t,e,n){var r=zl.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function hh(t,e,n){var r=zl.exec(e.slice(n,n+6));return r?(t.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function fh(t,e,n){var r=$l.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function dh(t,e,n){var r=zl.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function ph(t,e,n){var r=zl.exec(e.slice(n));return r?(t.s=+r[0],n+r[0].length):-1}function gh(t,e){return Hl(t.getDate(),e,2)}function yh(t,e){return Hl(t.getHours(),e,2)}function mh(t,e){return Hl(t.getHours()%12||12,e,2)}function vh(t,e){return Hl(1+Dl.count(Ll(t),t),e,3)}function bh(t,e){return Hl(t.getMilliseconds(),e,3)}function _h(t,e){return bh(t,e)+"000"}function xh(t,e){return Hl(t.getMonth()+1,e,2)}function wh(t,e){return Hl(t.getMinutes(),e,2)}function kh(t,e){return Hl(t.getSeconds(),e,2)}function Th(t){var e=t.getDay();return 0===e?7:e}function Ch(t,e){return Hl(kl.count(Ll(t)-1,t),e,2)}function Eh(t){var e=t.getDay();return e>=4||0===e?Sl(t):Sl.ceil(t)}function Sh(t,e){return t=Eh(t),Hl(Sl.count(Ll(t),t)+(4===Ll(t).getDay()),e,2)}function Ah(t){return t.getDay()}function Mh(t,e){return Hl(Tl.count(Ll(t)-1,t),e,2)}function Nh(t,e){return Hl(t.getFullYear()%100,e,2)}function Dh(t,e){return Hl((t=Eh(t)).getFullYear()%100,e,2)}function Bh(t,e){return Hl(t.getFullYear()%1e4,e,4)}function Lh(t,e){var n=t.getDay();return Hl((t=n>=4||0===n?Sl(t):Sl.ceil(t)).getFullYear()%1e4,e,4)}function Oh(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+Hl(e/60|0,"0",2)+Hl(e%60,"0",2)}function Ih(t,e){return Hl(t.getUTCDate(),e,2)}function Rh(t,e){return Hl(t.getUTCHours(),e,2)}function Fh(t,e){return Hl(t.getUTCHours()%12||12,e,2)}function Ph(t,e){return Hl(1+xl.count(Il(t),t),e,3)}function Yh(t,e){return Hl(t.getUTCMilliseconds(),e,3)}function jh(t,e){return Yh(t,e)+"000"}function Uh(t,e){return Hl(t.getUTCMonth()+1,e,2)}function zh(t,e){return Hl(t.getUTCMinutes(),e,2)}function $h(t,e){return Hl(t.getUTCSeconds(),e,2)}function qh(t){var e=t.getUTCDay();return 0===e?7:e}function Hh(t,e){return Hl(dl.count(Il(t)-1,t),e,2)}function Wh(t){var e=t.getUTCDay();return e>=4||0===e?ml(t):ml.ceil(t)}function Vh(t,e){return t=Wh(t),Hl(ml.count(Il(t),t)+(4===Il(t).getUTCDay()),e,2)}function Gh(t){return t.getUTCDay()}function Xh(t,e){return Hl(pl.count(Il(t)-1,t),e,2)}function Zh(t,e){return Hl(t.getUTCFullYear()%100,e,2)}function Qh(t,e){return Hl((t=Wh(t)).getUTCFullYear()%100,e,2)}function Kh(t,e){return Hl(t.getUTCFullYear()%1e4,e,4)}function Jh(t,e){var n=t.getUTCDay();return Hl((t=n>=4||0===n?ml(t):ml.ceil(t)).getUTCFullYear()%1e4,e,4)}function tf(){return"+0000"}function ef(){return"%"}function nf(t){return+t}function rf(t){return Math.floor(+t/1e3)}Yl=function(t){var e=t.dateTime,n=t.date,r=t.time,i=t.periods,a=t.days,o=t.shortDays,s=t.months,c=t.shortMonths,u=Vl(i),l=Gl(i),h=Vl(a),f=Gl(a),d=Vl(o),p=Gl(o),g=Vl(s),y=Gl(s),m=Vl(c),v=Gl(c),b={a:function(t){return o[t.getDay()]},A:function(t){return a[t.getDay()]},b:function(t){return c[t.getMonth()]},B:function(t){return s[t.getMonth()]},c:null,d:gh,e:gh,f:_h,g:Dh,G:Lh,H:yh,I:mh,j:vh,L:bh,m:xh,M:wh,p:function(t){return i[+(t.getHours()>=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:nf,s:rf,S:kh,u:Th,U:Ch,V:Sh,w:Ah,W:Mh,x:null,X:null,y:Nh,Y:Bh,Z:Oh,"%":ef},_={a:function(t){return o[t.getUTCDay()]},A:function(t){return a[t.getUTCDay()]},b:function(t){return c[t.getUTCMonth()]},B:function(t){return s[t.getUTCMonth()]},c:null,d:Ih,e:Ih,f:jh,g:Qh,G:Jh,H:Rh,I:Fh,j:Ph,L:Yh,m:Uh,M:zh,p:function(t){return i[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:nf,s:rf,S:$h,u:qh,U:Hh,V:Vh,w:Gh,W:Xh,x:null,X:null,y:Zh,Y:Kh,Z:tf,"%":ef},x={a:function(t,e,n){var r=d.exec(e.slice(n));return r?(t.w=p.get(r[0].toLowerCase()),n+r[0].length):-1},A:function(t,e,n){var r=h.exec(e.slice(n));return r?(t.w=f.get(r[0].toLowerCase()),n+r[0].length):-1},b:function(t,e,n){var r=m.exec(e.slice(n));return r?(t.m=v.get(r[0].toLowerCase()),n+r[0].length):-1},B:function(t,e,n){var r=g.exec(e.slice(n));return r?(t.m=y.get(r[0].toLowerCase()),n+r[0].length):-1},c:function(t,n,r){return T(t,e,n,r)},d:ah,e:ah,f:hh,g:eh,G:th,H:sh,I:sh,j:oh,L:lh,m:ih,M:ch,p:function(t,e,n){var r=u.exec(e.slice(n));return r?(t.p=l.get(r[0].toLowerCase()),n+r[0].length):-1},q:rh,Q:dh,s:ph,S:uh,u:Zl,U:Ql,V:Kl,w:Xl,W:Jl,x:function(t,e,r){return T(t,n,e,r)},X:function(t,e,n){return T(t,r,e,n)},y:eh,Y:th,Z:nh,"%":fh};function w(t,e){return function(n){var r,i,a,o=[],s=-1,c=0,u=t.length;for(n instanceof Date||(n=new Date(+n));++s<u;)37===t.charCodeAt(s)&&(o.push(t.slice(c,s)),null!=(i=Ul[r=t.charAt(++s)])?r=t.charAt(++s):i="e"===r?" ":"0",(a=e[r])&&(r=a(n,i)),o.push(r),c=s+1);return o.push(t.slice(c,s)),o.join("")}}function k(t,e){return function(n){var r,i,a=Pl(1900,void 0,1);if(T(a,t,n+="",0)!=n.length)return null;if("Q"in a)return new Date(a.Q);if("s"in a)return new Date(1e3*a.s+("L"in a?a.L:0));if(e&&!("Z"in a)&&(a.Z=0),"p"in a&&(a.H=a.H%12+12*a.p),void 0===a.m&&(a.m="q"in a?a.q:0),"V"in a){if(a.V<1||a.V>53)return null;"w"in a||(a.w=1),"Z"in a?(i=(r=Fl(Pl(a.y,0,1))).getUTCDay(),r=i>4||0===i?pl.ceil(r):pl(r),r=xl.offset(r,7*(a.V-1)),a.y=r.getUTCFullYear(),a.m=r.getUTCMonth(),a.d=r.getUTCDate()+(a.w+6)%7):(i=(r=Rl(Pl(a.y,0,1))).getDay(),r=i>4||0===i?Tl.ceil(r):Tl(r),r=Dl.offset(r,7*(a.V-1)),a.y=r.getFullYear(),a.m=r.getMonth(),a.d=r.getDate()+(a.w+6)%7)}else("W"in a||"U"in a)&&("w"in a||(a.w="u"in a?a.u%7:"W"in a?1:0),i="Z"in a?Fl(Pl(a.y,0,1)).getUTCDay():Rl(Pl(a.y,0,1)).getDay(),a.m=0,a.d="W"in a?(a.w+6)%7+7*a.W-(i+5)%7:a.w+7*a.U-(i+6)%7);return"Z"in a?(a.H+=a.Z/100|0,a.M+=a.Z%100,Fl(a)):Rl(a)}}function T(t,e,n,r){for(var i,a,o=0,s=e.length,c=n.length;o<s;){if(r>=c)return-1;if(37===(i=e.charCodeAt(o++))){if(i=e.charAt(o++),!(a=x[i in Ul?e.charAt(o++):i])||(r=a(t,n,r))<0)return-1}else if(i!=n.charCodeAt(r++))return-1}return r}return b.x=w(n,b),b.X=w(r,b),b.c=w(e,b),_.x=w(n,_),_.X=w(r,_),_.c=w(e,_),{format:function(t){var e=w(t+="",b);return e.toString=function(){return t},e},parse:function(t){var e=k(t+="",!1);return e.toString=function(){return t},e},utcFormat:function(t){var e=w(t+="",_);return e.toString=function(){return t},e},utcParse:function(t){var e=k(t+="",!0);return e.toString=function(){return t},e}}}({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]}),jl=Yl.format,Yl.parse,Yl.utcFormat,Yl.utcParse;var af={value:()=>{}};function of(){for(var t,e=0,n=arguments.length,r={};e<n;++e){if(!(t=arguments[e]+"")||t in r||/[\s.]/.test(t))throw new Error("illegal type: "+t);r[t]=[]}return new sf(r)}function sf(t){this._=t}function cf(t,e){return t.trim().split(/^|\s+/).map((function(t){var n="",r=t.indexOf(".");if(r>=0&&(n=t.slice(r+1),t=t.slice(0,r)),t&&!e.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:n}}))}function uf(t,e){for(var n,r=0,i=t.length;r<i;++r)if((n=t[r]).name===e)return n.value}function lf(t,e,n){for(var r=0,i=t.length;r<i;++r)if(t[r].name===e){t[r]=af,t=t.slice(0,r).concat(t.slice(r+1));break}return null!=n&&t.push({name:e,value:n}),t}sf.prototype=of.prototype={constructor:sf,on:function(t,e){var n,r=this._,i=cf(t+"",r),a=-1,o=i.length;if(!(arguments.length<2)){if(null!=e&&"function"!=typeof e)throw new Error("invalid callback: "+e);for(;++a<o;)if(n=(t=i[a]).type)r[n]=lf(r[n],t.name,e);else if(null==e)for(n in r)r[n]=lf(r[n],t.name,null);return this}for(;++a<o;)if((n=(t=i[a]).type)&&(n=uf(r[n],t.name)))return n},copy:function(){var t={},e=this._;for(var n in e)t[n]=e[n].slice();return new sf(t)},call:function(t,e){if((n=arguments.length-2)>0)for(var n,r,i=new Array(n),a=0;a<n;++a)i[a]=arguments[a+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(a=0,n=(r=this._[t]).length;a<n;++a)r[a].value.apply(e,i)},apply:function(t,e,n){if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(var r=this._[t],i=0,a=r.length;i<a;++i)r[i].value.apply(e,n)}};const hf=of;var ff,df,pf=0,gf=0,yf=0,mf=0,vf=0,bf=0,_f="object"==typeof performance&&performance.now?performance:Date,xf="object"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function wf(){return vf||(xf(kf),vf=_f.now()+bf)}function kf(){vf=0}function Tf(){this._call=this._time=this._next=null}function Cf(t,e,n){var r=new Tf;return r.restart(t,e,n),r}function Ef(){vf=(mf=_f.now())+bf,pf=gf=0;try{!function(){wf(),++pf;for(var t,e=ff;e;)(t=vf-e._time)>=0&&e._call.call(void 0,t),e=e._next;--pf}()}finally{pf=0,function(){for(var t,e,n=ff,r=1/0;n;)n._call?(r>n._time&&(r=n._time),t=n,n=n._next):(e=n._next,n._next=null,n=t?t._next=e:ff=e);df=t,Af(r)}(),vf=0}}function Sf(){var t=_f.now(),e=t-mf;e>1e3&&(bf-=e,mf=t)}function Af(t){pf||(gf&&(gf=clearTimeout(gf)),t-vf>24?(t<1/0&&(gf=setTimeout(Ef,t-_f.now()-bf)),yf&&(yf=clearInterval(yf))):(yf||(mf=_f.now(),yf=setInterval(Sf,1e3)),pf=1,xf(Ef)))}function Mf(t,e,n){var r=new Tf;return e=null==e?0:+e,r.restart((n=>{r.stop(),t(n+e)}),e,n),r}Tf.prototype=Cf.prototype={constructor:Tf,restart:function(t,e,n){if("function"!=typeof t)throw new TypeError("callback is not a function");n=(null==n?wf():+n)+(null==e?0:+e),this._next||df===this||(df?df._next=this:ff=this,df=this),this._call=t,this._time=n,Af()},stop:function(){this._call&&(this._call=null,this._time=1/0,Af())}};var Nf=hf("start","end","cancel","interrupt"),Df=[];function Bf(t,e,n,r,i,a){var o=t.__transition;if(o){if(n in o)return}else t.__transition={};!function(t,e,n){var r,i=t.__transition;function a(c){var u,l,h,f;if(1!==n.state)return s();for(u in i)if((f=i[u]).name===n.name){if(3===f.state)return Mf(a);4===f.state?(f.state=6,f.timer.stop(),f.on.call("interrupt",t,t.__data__,f.index,f.group),delete i[u]):+u<e&&(f.state=6,f.timer.stop(),f.on.call("cancel",t,t.__data__,f.index,f.group),delete i[u])}if(Mf((function(){3===n.state&&(n.state=4,n.timer.restart(o,n.delay,n.time),o(c))})),n.state=2,n.on.call("start",t,t.__data__,n.index,n.group),2===n.state){for(n.state=3,r=new Array(h=n.tween.length),u=0,l=-1;u<h;++u)(f=n.tween[u].value.call(t,t.__data__,n.index,n.group))&&(r[++l]=f);r.length=l+1}}function o(e){for(var i=e<n.duration?n.ease.call(null,e/n.duration):(n.timer.restart(s),n.state=5,1),a=-1,o=r.length;++a<o;)r[a].call(t,i);5===n.state&&(n.on.call("end",t,t.__data__,n.index,n.group),s())}function s(){for(var r in n.state=6,n.timer.stop(),delete i[e],i)return;delete t.__transition}i[e]=n,n.timer=Cf((function(t){n.state=1,n.timer.restart(a,n.delay,n.time),n.delay<=t&&a(t-n.delay)}),0,n.time)}(t,n,{name:e,index:r,group:i,on:Nf,tween:Df,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:0})}function Lf(t,e){var n=If(t,e);if(n.state>0)throw new Error("too late; already scheduled");return n}function Of(t,e){var n=If(t,e);if(n.state>3)throw new Error("too late; already running");return n}function If(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}function Rf(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}var Ff,Pf=180/Math.PI,Yf={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function jf(t,e,n,r,i,a){var o,s,c;return(o=Math.sqrt(t*t+e*e))&&(t/=o,e/=o),(c=t*n+e*r)&&(n-=t*c,r-=e*c),(s=Math.sqrt(n*n+r*r))&&(n/=s,r/=s,c/=s),t*r<e*n&&(t=-t,e=-e,c=-c,o=-o),{translateX:i,translateY:a,rotate:Math.atan2(e,t)*Pf,skewX:Math.atan(c)*Pf,scaleX:o,scaleY:s}}function Uf(t,e,n,r){function i(t){return t.length?t.pop()+" ":""}return function(a,o){var s=[],c=[];return a=t(a),o=t(o),function(t,r,i,a,o,s){if(t!==i||r!==a){var c=o.push("translate(",null,e,null,n);s.push({i:c-4,x:Rf(t,i)},{i:c-2,x:Rf(r,a)})}else(i||a)&&o.push("translate("+i+e+a+n)}(a.translateX,a.translateY,o.translateX,o.translateY,s,c),function(t,e,n,a){t!==e?(t-e>180?e+=360:e-t>180&&(t+=360),a.push({i:n.push(i(n)+"rotate(",null,r)-2,x:Rf(t,e)})):e&&n.push(i(n)+"rotate("+e+r)}(a.rotate,o.rotate,s,c),function(t,e,n,a){t!==e?a.push({i:n.push(i(n)+"skewX(",null,r)-2,x:Rf(t,e)}):e&&n.push(i(n)+"skewX("+e+r)}(a.skewX,o.skewX,s,c),function(t,e,n,r,a,o){if(t!==n||e!==r){var s=a.push(i(a)+"scale(",null,",",null,")");o.push({i:s-4,x:Rf(t,n)},{i:s-2,x:Rf(e,r)})}else 1===n&&1===r||a.push(i(a)+"scale("+n+","+r+")")}(a.scaleX,a.scaleY,o.scaleX,o.scaleY,s,c),a=o=null,function(t){for(var e,n=-1,r=c.length;++n<r;)s[(e=c[n]).i]=e.x(t);return s.join("")}}}var zf=Uf((function(t){const e=new("function"==typeof DOMMatrix?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?Yf:jf(e.a,e.b,e.c,e.d,e.e,e.f)}),"px, ","px)","deg)"),$f=Uf((function(t){return null==t?Yf:(Ff||(Ff=document.createElementNS("http://www.w3.org/2000/svg","g")),Ff.setAttribute("transform",t),(t=Ff.transform.baseVal.consolidate())?jf((t=t.matrix).a,t.b,t.c,t.d,t.e,t.f):Yf)}),", ",")",")");function qf(t,e){var n,r;return function(){var i=Of(this,t),a=i.tween;if(a!==n)for(var o=0,s=(r=n=a).length;o<s;++o)if(r[o].name===e){(r=r.slice()).splice(o,1);break}i.tween=r}}function Hf(t,e,n){var r,i;if("function"!=typeof n)throw new Error;return function(){var a=Of(this,t),o=a.tween;if(o!==r){i=(r=o).slice();for(var s={name:e,value:n},c=0,u=i.length;c<u;++c)if(i[c].name===e){i[c]=s;break}c===u&&i.push(s)}a.tween=i}}function Wf(t,e,n){var r=t._id;return t.each((function(){var t=Of(this,r);(t.value||(t.value={}))[e]=n.apply(this,arguments)})),function(t){return If(t,r).value[e]}}function Vf(t,e,n,r,i){var a=t*t,o=a*t;return((1-3*t+3*a-o)*e+(4-6*a+3*o)*n+(1+3*t+3*a-3*o)*r+o*i)/6}const Gf=function t(e){var n=function(t){return 1==(t=+t)?Fr:function(e,n){return n-e?function(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}(e,n,t):Ir(isNaN(e)?n:e)}}(e);function r(t,e){var r=n((t=ur(t)).r,(e=ur(e)).r),i=n(t.g,e.g),a=n(t.b,e.b),o=Fr(t.opacity,e.opacity);return function(e){return t.r=r(e),t.g=i(e),t.b=a(e),t.opacity=o(e),t+""}}return r.gamma=t,r}(1);function Xf(t){return function(e){var n,r,i=e.length,a=new Array(i),o=new Array(i),s=new Array(i);for(n=0;n<i;++n)r=ur(e[n]),a[n]=r.r||0,o[n]=r.g||0,s[n]=r.b||0;return a=t(a),o=t(o),s=t(s),r.opacity=1,function(t){return r.r=a(t),r.g=o(t),r.b=s(t),r+""}}}Xf((function(t){var e=t.length-1;return function(n){var r=n<=0?n=0:n>=1?(n=1,e-1):Math.floor(n*e),i=t[r],a=t[r+1],o=r>0?t[r-1]:2*i-a,s=r<e-1?t[r+2]:2*a-i;return Vf((n-r/e)*e,o,i,a,s)}})),Xf((function(t){var e=t.length;return function(n){var r=Math.floor(((n%=1)<0?++n:n)*e),i=t[(r+e-1)%e],a=t[r%e],o=t[(r+1)%e],s=t[(r+2)%e];return Vf((n-r/e)*e,i,a,o,s)}}));var Zf=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Qf=new RegExp(Zf.source,"g");function Kf(t,e){var n,r,i,a=Zf.lastIndex=Qf.lastIndex=0,o=-1,s=[],c=[];for(t+="",e+="";(n=Zf.exec(t))&&(r=Qf.exec(e));)(i=r.index)>a&&(i=e.slice(a,i),s[o]?s[o]+=i:s[++o]=i),(n=n[0])===(r=r[0])?s[o]?s[o]+=r:s[++o]=r:(s[++o]=null,c.push({i:o,x:Rf(n,r)})),a=Qf.lastIndex;return a<e.length&&(i=e.slice(a),s[o]?s[o]+=i:s[++o]=i),s.length<2?c[0]?function(t){return function(e){return t(e)+""}}(c[0].x):function(t){return function(){return t}}(e):(e=c.length,function(t){for(var n,r=0;r<e;++r)s[(n=c[r]).i]=n.x(t);return s.join("")})}function Jf(t,e){var n;return("number"==typeof e?Rf:e instanceof ar?Gf:(n=ar(e))?(e=n,Gf):Kf)(t,e)}function td(t){return function(){this.removeAttribute(t)}}function ed(t){return function(){this.removeAttributeNS(t.space,t.local)}}function nd(t,e,n){var r,i,a=n+"";return function(){var o=this.getAttribute(t);return o===a?null:o===r?i:i=e(r=o,n)}}function rd(t,e,n){var r,i,a=n+"";return function(){var o=this.getAttributeNS(t.space,t.local);return o===a?null:o===r?i:i=e(r=o,n)}}function id(t,e,n){var r,i,a;return function(){var o,s,c=n(this);if(null!=c)return(o=this.getAttribute(t))===(s=c+"")?null:o===r&&s===i?a:(i=s,a=e(r=o,c));this.removeAttribute(t)}}function ad(t,e,n){var r,i,a;return function(){var o,s,c=n(this);if(null!=c)return(o=this.getAttributeNS(t.space,t.local))===(s=c+"")?null:o===r&&s===i?a:(i=s,a=e(r=o,c));this.removeAttributeNS(t.space,t.local)}}function od(t,e){return function(n){this.setAttribute(t,e.call(this,n))}}function sd(t,e){return function(n){this.setAttributeNS(t.space,t.local,e.call(this,n))}}function cd(t,e){var n,r;function i(){var i=e.apply(this,arguments);return i!==r&&(n=(r=i)&&sd(t,i)),n}return i._value=e,i}function ud(t,e){var n,r;function i(){var i=e.apply(this,arguments);return i!==r&&(n=(r=i)&&od(t,i)),n}return i._value=e,i}function ld(t,e){return function(){Lf(this,t).delay=+e.apply(this,arguments)}}function hd(t,e){return e=+e,function(){Lf(this,t).delay=e}}function fd(t,e){return function(){Of(this,t).duration=+e.apply(this,arguments)}}function dd(t,e){return e=+e,function(){Of(this,t).duration=e}}function pd(t,e){if("function"!=typeof e)throw new Error;return function(){Of(this,t).ease=e}}function gd(t,e,n){var r,i,a=function(t){return(t+"").trim().split(/^|\s+/).every((function(t){var e=t.indexOf(".");return e>=0&&(t=t.slice(0,e)),!t||"start"===t}))}(e)?Lf:Of;return function(){var o=a(this,t),s=o.on;s!==r&&(i=(r=s).copy()).on(e,n),o.on=i}}var yd=iu.prototype.constructor;function md(t){return function(){this.style.removeProperty(t)}}function vd(t,e,n){return function(r){this.style.setProperty(t,e.call(this,r),n)}}function bd(t,e,n){var r,i;function a(){var a=e.apply(this,arguments);return a!==i&&(r=(i=a)&&vd(t,a,n)),r}return a._value=e,a}function _d(t){return function(e){this.textContent=t.call(this,e)}}function xd(t){var e,n;function r(){var r=t.apply(this,arguments);return r!==n&&(e=(n=r)&&_d(r)),e}return r._value=t,r}var wd=0;function kd(t,e,n,r){this._groups=t,this._parents=e,this._name=n,this._id=r}function Td(){return++wd}var Cd=iu.prototype;kd.prototype=function(t){return iu().transition(t)}.prototype={constructor:kd,select:function(t){var e=this._name,n=this._id;"function"!=typeof t&&(t=Hs(t));for(var r=this._groups,i=r.length,a=new Array(i),o=0;o<i;++o)for(var s,c,u=r[o],l=u.length,h=a[o]=new Array(l),f=0;f<l;++f)(s=u[f])&&(c=t.call(s,s.__data__,f,u))&&("__data__"in s&&(c.__data__=s.__data__),h[f]=c,Bf(h[f],e,n,f,h,If(s,n)));return new kd(a,this._parents,e,n)},selectAll:function(t){var e=this._name,n=this._id;"function"!=typeof t&&(t=Gs(t));for(var r=this._groups,i=r.length,a=[],o=[],s=0;s<i;++s)for(var c,u=r[s],l=u.length,h=0;h<l;++h)if(c=u[h]){for(var f,d=t.call(c,c.__data__,h,u),p=If(c,n),g=0,y=d.length;g<y;++g)(f=d[g])&&Bf(f,e,n,g,d,p);a.push(d),o.push(c)}return new kd(a,o,e,n)},selectChild:Cd.selectChild,selectChildren:Cd.selectChildren,filter:function(t){"function"!=typeof t&&(t=Xs(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var a,o=e[i],s=o.length,c=r[i]=[],u=0;u<s;++u)(a=o[u])&&t.call(a,a.__data__,u,o)&&c.push(a);return new kd(r,this._parents,this._name,this._id)},merge:function(t){if(t._id!==this._id)throw new Error;for(var e=this._groups,n=t._groups,r=e.length,i=n.length,a=Math.min(r,i),o=new Array(r),s=0;s<a;++s)for(var c,u=e[s],l=n[s],h=u.length,f=o[s]=new Array(h),d=0;d<h;++d)(c=u[d]||l[d])&&(f[d]=c);for(;s<r;++s)o[s]=e[s];return new kd(o,this._parents,this._name,this._id)},selection:function(){return new yd(this._groups,this._parents)},transition:function(){for(var t=this._name,e=this._id,n=Td(),r=this._groups,i=r.length,a=0;a<i;++a)for(var o,s=r[a],c=s.length,u=0;u<c;++u)if(o=s[u]){var l=If(o,e);Bf(o,t,n,u,s,{time:l.time+l.delay+l.duration,delay:0,duration:l.duration,ease:l.ease})}return new kd(r,this._parents,t,n)},call:Cd.call,nodes:Cd.nodes,node:Cd.node,size:Cd.size,empty:Cd.empty,each:Cd.each,on:function(t,e){var n=this._id;return arguments.length<2?If(this.node(),n).on.on(t):this.each(gd(n,t,e))},attr:function(t,e){var n=hc(t),r="transform"===n?$f:Jf;return this.attrTween(t,"function"==typeof e?(n.local?ad:id)(n,r,Wf(this,"attr."+t,e)):null==e?(n.local?ed:td)(n):(n.local?rd:nd)(n,r,e))},attrTween:function(t,e){var n="attr."+t;if(arguments.length<2)return(n=this.tween(n))&&n._value;if(null==e)return this.tween(n,null);if("function"!=typeof e)throw new Error;var r=hc(t);return this.tween(n,(r.local?cd:ud)(r,e))},style:function(t,e,n){var r="transform"==(t+="")?zf:Jf;return null==e?this.styleTween(t,function(t,e){var n,r,i;return function(){var a=wc(this,t),o=(this.style.removeProperty(t),wc(this,t));return a===o?null:a===n&&o===r?i:i=e(n=a,r=o)}}(t,r)).on("end.style."+t,md(t)):"function"==typeof e?this.styleTween(t,function(t,e,n){var r,i,a;return function(){var o=wc(this,t),s=n(this),c=s+"";return null==s&&(this.style.removeProperty(t),c=s=wc(this,t)),o===c?null:o===r&&c===i?a:(i=c,a=e(r=o,s))}}(t,r,Wf(this,"style."+t,e))).each(function(t,e){var n,r,i,a,o="style."+e,s="end."+o;return function(){var c=Of(this,t),u=c.on,l=null==c.value[o]?a||(a=md(e)):void 0;u===n&&i===l||(r=(n=u).copy()).on(s,i=l),c.on=r}}(this._id,t)):this.styleTween(t,function(t,e,n){var r,i,a=n+"";return function(){var o=wc(this,t);return o===a?null:o===r?i:i=e(r=o,n)}}(t,r,e),n).on("end.style."+t,null)},styleTween:function(t,e,n){var r="style."+(t+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(null==e)return this.tween(r,null);if("function"!=typeof e)throw new Error;return this.tween(r,bd(t,e,null==n?"":n))},text:function(t){return this.tween("text","function"==typeof t?function(t){return function(){var e=t(this);this.textContent=null==e?"":e}}(Wf(this,"text",t)):function(t){return function(){this.textContent=t}}(null==t?"":t+""))},textTween:function(t){var e="text";if(arguments.length<1)return(e=this.tween(e))&&e._value;if(null==t)return this.tween(e,null);if("function"!=typeof t)throw new Error;return this.tween(e,xd(t))},remove:function(){return this.on("end.remove",function(t){return function(){var e=this.parentNode;for(var n in this.__transition)if(+n!==t)return;e&&e.removeChild(this)}}(this._id))},tween:function(t,e){var n=this._id;if(t+="",arguments.length<2){for(var r,i=If(this.node(),n).tween,a=0,o=i.length;a<o;++a)if((r=i[a]).name===t)return r.value;return null}return this.each((null==e?qf:Hf)(n,t,e))},delay:function(t){var e=this._id;return arguments.length?this.each(("function"==typeof t?ld:hd)(e,t)):If(this.node(),e).delay},duration:function(t){var e=this._id;return arguments.length?this.each(("function"==typeof t?fd:dd)(e,t)):If(this.node(),e).duration},ease:function(t){var e=this._id;return arguments.length?this.each(pd(e,t)):If(this.node(),e).ease},easeVarying:function(t){if("function"!=typeof t)throw new Error;return this.each(function(t,e){return function(){var n=e.apply(this,arguments);if("function"!=typeof n)throw new Error;Of(this,t).ease=n}}(this._id,t))},end:function(){var t,e,n=this,r=n._id,i=n.size();return new Promise((function(a,o){var s={value:o},c={value:function(){0==--i&&a()}};n.each((function(){var n=Of(this,r),i=n.on;i!==t&&((e=(t=i).copy())._.cancel.push(s),e._.interrupt.push(s),e._.end.push(c)),n.on=e})),0===i&&a()}))},[Symbol.iterator]:Cd[Symbol.iterator]};var Ed={time:null,delay:0,duration:250,ease:function(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}};function Sd(t,e){for(var n;!(n=t.__transition)||!(n=n[e]);)if(!(t=t.parentNode))throw new Error(`transition ${e} not found`);return n}function Ad(){}function Md(t){return null==t?Ad:function(){return this.querySelector(t)}}function Nd(t){return null==t?[]:Array.isArray(t)?t:Array.from(t)}function Dd(){return[]}function Bd(t){return null==t?Dd:function(){return this.querySelectorAll(t)}}function Ld(t){return function(){return this.matches(t)}}function Od(t){return function(e){return e.matches(t)}}iu.prototype.interrupt=function(t){return this.each((function(){!function(t,e){var n,r,i,a=t.__transition,o=!0;if(a){for(i in e=null==e?null:e+"",a)(n=a[i]).name===e?(r=n.state>2&&n.state<5,n.state=6,n.timer.stop(),n.on.call(r?"interrupt":"cancel",t,t.__data__,n.index,n.group),delete a[i]):o=!1;o&&delete t.__transition}}(this,t)}))},iu.prototype.transition=function(t){var e,n;t instanceof kd?(e=t._id,t=t._name):(e=Td(),(n=Ed).time=wf(),t=null==t?null:t+"");for(var r=this._groups,i=r.length,a=0;a<i;++a)for(var o,s=r[a],c=s.length,u=0;u<c;++u)(o=s[u])&&Bf(o,t,e,u,s,n||Sd(o,e));return new kd(r,this._parents,t,e)};var Id=Array.prototype.find;function Rd(){return this.firstElementChild}var Fd=Array.prototype.filter;function Pd(){return Array.from(this.children)}function Yd(t){return new Array(t.length)}function jd(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}function Ud(t){return function(){return t}}function zd(t,e,n,r,i,a){for(var o,s=0,c=e.length,u=a.length;s<u;++s)(o=e[s])?(o.__data__=a[s],r[s]=o):n[s]=new jd(t,a[s]);for(;s<c;++s)(o=e[s])&&(i[s]=o)}function $d(t,e,n,r,i,a,o){var s,c,u,l=new Map,h=e.length,f=a.length,d=new Array(h);for(s=0;s<h;++s)(c=e[s])&&(d[s]=u=o.call(c,c.__data__,s,e)+"",l.has(u)?i[s]=c:l.set(u,c));for(s=0;s<f;++s)u=o.call(t,a[s],s,a)+"",(c=l.get(u))?(r[s]=c,c.__data__=a[s],l.delete(u)):n[s]=new jd(t,a[s]);for(s=0;s<h;++s)(c=e[s])&&l.get(d[s])===c&&(i[s]=c)}function qd(t){return t.__data__}function Hd(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}function Wd(t,e){return t<e?-1:t>e?1:t>=e?0:NaN}jd.prototype={constructor:jd,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};var Vd="http://www.w3.org/1999/xhtml";const Gd={svg:"http://www.w3.org/2000/svg",xhtml:Vd,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function Xd(t){var e=t+="",n=e.indexOf(":");return n>=0&&"xmlns"!==(e=t.slice(0,n))&&(t=t.slice(n+1)),Gd.hasOwnProperty(e)?{space:Gd[e],local:t}:t}function Zd(t){return function(){this.removeAttribute(t)}}function Qd(t){return function(){this.removeAttributeNS(t.space,t.local)}}function Kd(t,e){return function(){this.setAttribute(t,e)}}function Jd(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function tp(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttribute(t):this.setAttribute(t,n)}}function ep(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}}function np(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function rp(t){return function(){this.style.removeProperty(t)}}function ip(t,e,n){return function(){this.style.setProperty(t,e,n)}}function ap(t,e,n){return function(){var r=e.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,n)}}function op(t,e){return t.style.getPropertyValue(e)||np(t).getComputedStyle(t,null).getPropertyValue(e)}function sp(t){return function(){delete this[t]}}function cp(t,e){return function(){this[t]=e}}function up(t,e){return function(){var n=e.apply(this,arguments);null==n?delete this[t]:this[t]=n}}function lp(t){return t.trim().split(/^|\s+/)}function hp(t){return t.classList||new fp(t)}function fp(t){this._node=t,this._names=lp(t.getAttribute("class")||"")}function dp(t,e){for(var n=hp(t),r=-1,i=e.length;++r<i;)n.add(e[r])}function pp(t,e){for(var n=hp(t),r=-1,i=e.length;++r<i;)n.remove(e[r])}function gp(t){return function(){dp(this,t)}}function yp(t){return function(){pp(this,t)}}function mp(t,e){return function(){(e.apply(this,arguments)?dp:pp)(this,t)}}function vp(){this.textContent=""}function bp(t){return function(){this.textContent=t}}function _p(t){return function(){var e=t.apply(this,arguments);this.textContent=null==e?"":e}}function xp(){this.innerHTML=""}function wp(t){return function(){this.innerHTML=t}}function kp(t){return function(){var e=t.apply(this,arguments);this.innerHTML=null==e?"":e}}function Tp(){this.nextSibling&&this.parentNode.appendChild(this)}function Cp(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function Ep(t){return function(){var e=this.ownerDocument,n=this.namespaceURI;return n===Vd&&e.documentElement.namespaceURI===Vd?e.createElement(t):e.createElementNS(n,t)}}function Sp(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function Ap(t){var e=Xd(t);return(e.local?Sp:Ep)(e)}function Mp(){return null}function Np(){var t=this.parentNode;t&&t.removeChild(this)}function Dp(){var t=this.cloneNode(!1),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function Bp(){var t=this.cloneNode(!0),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function Lp(t){return t.trim().split(/^|\s+/).map((function(t){var e="",n=t.indexOf(".");return n>=0&&(e=t.slice(n+1),t=t.slice(0,n)),{type:t,name:e}}))}function Op(t){return function(){var e=this.__on;if(e){for(var n,r=0,i=-1,a=e.length;r<a;++r)n=e[r],t.type&&n.type!==t.type||n.name!==t.name?e[++i]=n:this.removeEventListener(n.type,n.listener,n.options);++i?e.length=i:delete this.__on}}}function Ip(t,e,n){return function(){var r,i=this.__on,a=function(t){return function(e){t.call(this,e,this.__data__)}}(e);if(i)for(var o=0,s=i.length;o<s;++o)if((r=i[o]).type===t.type&&r.name===t.name)return this.removeEventListener(r.type,r.listener,r.options),this.addEventListener(r.type,r.listener=a,r.options=n),void(r.value=e);this.addEventListener(t.type,a,n),r={type:t.type,name:t.name,value:e,listener:a,options:n},i?i.push(r):this.__on=[r]}}function Rp(t,e,n){var r=np(t),i=r.CustomEvent;"function"==typeof i?i=new i(e,n):(i=r.document.createEvent("Event"),n?(i.initEvent(e,n.bubbles,n.cancelable),i.detail=n.detail):i.initEvent(e,!1,!1)),t.dispatchEvent(i)}function Fp(t,e){return function(){return Rp(this,t,e)}}function Pp(t,e){return function(){return Rp(this,t,e.apply(this,arguments))}}fp.prototype={add:function(t){this._names.indexOf(t)<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var Yp=[null];function jp(t,e){this._groups=t,this._parents=e}function Up(){return new jp([[document.documentElement]],Yp)}jp.prototype=Up.prototype={constructor:jp,select:function(t){"function"!=typeof t&&(t=Md(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var a,o,s=e[i],c=s.length,u=r[i]=new Array(c),l=0;l<c;++l)(a=s[l])&&(o=t.call(a,a.__data__,l,s))&&("__data__"in a&&(o.__data__=a.__data__),u[l]=o);return new jp(r,this._parents)},selectAll:function(t){t="function"==typeof t?function(t){return function(){return Nd(t.apply(this,arguments))}}(t):Bd(t);for(var e=this._groups,n=e.length,r=[],i=[],a=0;a<n;++a)for(var o,s=e[a],c=s.length,u=0;u<c;++u)(o=s[u])&&(r.push(t.call(o,o.__data__,u,s)),i.push(o));return new jp(r,i)},selectChild:function(t){return this.select(null==t?Rd:function(t){return function(){return Id.call(this.children,t)}}("function"==typeof t?t:Od(t)))},selectChildren:function(t){return this.selectAll(null==t?Pd:function(t){return function(){return Fd.call(this.children,t)}}("function"==typeof t?t:Od(t)))},filter:function(t){"function"!=typeof t&&(t=Ld(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var a,o=e[i],s=o.length,c=r[i]=[],u=0;u<s;++u)(a=o[u])&&t.call(a,a.__data__,u,o)&&c.push(a);return new jp(r,this._parents)},data:function(t,e){if(!arguments.length)return Array.from(this,qd);var n=e?$d:zd,r=this._parents,i=this._groups;"function"!=typeof t&&(t=Ud(t));for(var a=i.length,o=new Array(a),s=new Array(a),c=new Array(a),u=0;u<a;++u){var l=r[u],h=i[u],f=h.length,d=Hd(t.call(l,l&&l.__data__,u,r)),p=d.length,g=s[u]=new Array(p),y=o[u]=new Array(p),m=c[u]=new Array(f);n(l,h,g,y,m,d,e);for(var v,b,_=0,x=0;_<p;++_)if(v=g[_]){for(_>=x&&(x=_+1);!(b=y[x])&&++x<p;);v._next=b||null}}return(o=new jp(o,r))._enter=s,o._exit=c,o},enter:function(){return new jp(this._enter||this._groups.map(Yd),this._parents)},exit:function(){return new jp(this._exit||this._groups.map(Yd),this._parents)},join:function(t,e,n){var r=this.enter(),i=this,a=this.exit();return"function"==typeof t?(r=t(r))&&(r=r.selection()):r=r.append(t+""),null!=e&&(i=e(i))&&(i=i.selection()),null==n?a.remove():n(a),r&&i?r.merge(i).order():i},merge:function(t){for(var e=t.selection?t.selection():t,n=this._groups,r=e._groups,i=n.length,a=r.length,o=Math.min(i,a),s=new Array(i),c=0;c<o;++c)for(var u,l=n[c],h=r[c],f=l.length,d=s[c]=new Array(f),p=0;p<f;++p)(u=l[p]||h[p])&&(d[p]=u);for(;c<i;++c)s[c]=n[c];return new jp(s,this._parents)},selection:function(){return this},order:function(){for(var t=this._groups,e=-1,n=t.length;++e<n;)for(var r,i=t[e],a=i.length-1,o=i[a];--a>=0;)(r=i[a])&&(o&&4^r.compareDocumentPosition(o)&&o.parentNode.insertBefore(r,o),o=r);return this},sort:function(t){function e(e,n){return e&&n?t(e.__data__,n.__data__):!e-!n}t||(t=Wd);for(var n=this._groups,r=n.length,i=new Array(r),a=0;a<r;++a){for(var o,s=n[a],c=s.length,u=i[a]=new Array(c),l=0;l<c;++l)(o=s[l])&&(u[l]=o);u.sort(e)}return new jp(i,this._parents).order()},call:function(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this},nodes:function(){return Array.from(this)},node:function(){for(var t=this._groups,e=0,n=t.length;e<n;++e)for(var r=t[e],i=0,a=r.length;i<a;++i){var o=r[i];if(o)return o}return null},size:function(){let t=0;for(const e of this)++t;return t},empty:function(){return!this.node()},each:function(t){for(var e=this._groups,n=0,r=e.length;n<r;++n)for(var i,a=e[n],o=0,s=a.length;o<s;++o)(i=a[o])&&t.call(i,i.__data__,o,a);return this},attr:function(t,e){var n=Xd(t);if(arguments.length<2){var r=this.node();return n.local?r.getAttributeNS(n.space,n.local):r.getAttribute(n)}return this.each((null==e?n.local?Qd:Zd:"function"==typeof e?n.local?ep:tp:n.local?Jd:Kd)(n,e))},style:function(t,e,n){return arguments.length>1?this.each((null==e?rp:"function"==typeof e?ap:ip)(t,e,null==n?"":n)):op(this.node(),t)},property:function(t,e){return arguments.length>1?this.each((null==e?sp:"function"==typeof e?up:cp)(t,e)):this.node()[t]},classed:function(t,e){var n=lp(t+"");if(arguments.length<2){for(var r=hp(this.node()),i=-1,a=n.length;++i<a;)if(!r.contains(n[i]))return!1;return!0}return this.each(("function"==typeof e?mp:e?gp:yp)(n,e))},text:function(t){return arguments.length?this.each(null==t?vp:("function"==typeof t?_p:bp)(t)):this.node().textContent},html:function(t){return arguments.length?this.each(null==t?xp:("function"==typeof t?kp:wp)(t)):this.node().innerHTML},raise:function(){return this.each(Tp)},lower:function(){return this.each(Cp)},append:function(t){var e="function"==typeof t?t:Ap(t);return this.select((function(){return this.appendChild(e.apply(this,arguments))}))},insert:function(t,e){var n="function"==typeof t?t:Ap(t),r=null==e?Mp:"function"==typeof e?e:Md(e);return this.select((function(){return this.insertBefore(n.apply(this,arguments),r.apply(this,arguments)||null)}))},remove:function(){return this.each(Np)},clone:function(t){return this.select(t?Bp:Dp)},datum:function(t){return arguments.length?this.property("__data__",t):this.node().__data__},on:function(t,e,n){var r,i,a=Lp(t+""),o=a.length;if(!(arguments.length<2)){for(s=e?Ip:Op,r=0;r<o;++r)this.each(s(a[r],e,n));return this}var s=this.node().__on;if(s)for(var c,u=0,l=s.length;u<l;++u)for(r=0,c=s[u];r<o;++r)if((i=a[r]).type===c.type&&i.name===c.name)return c.value},dispatch:function(t,e){return this.each(("function"==typeof e?Pp:Fp)(t,e))},[Symbol.iterator]:function*(){for(var t=this._groups,e=0,n=t.length;e<n;++e)for(var r,i=t[e],a=0,o=i.length;a<o;++a)(r=i[a])&&(yield r)}};const zp=Up;var $p={value:()=>{}};function qp(){for(var t,e=0,n=arguments.length,r={};e<n;++e){if(!(t=arguments[e]+"")||t in r||/[\s.]/.test(t))throw new Error("illegal type: "+t);r[t]=[]}return new Hp(r)}function Hp(t){this._=t}function Wp(t,e){return t.trim().split(/^|\s+/).map((function(t){var n="",r=t.indexOf(".");if(r>=0&&(n=t.slice(r+1),t=t.slice(0,r)),t&&!e.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:n}}))}function Vp(t,e){for(var n,r=0,i=t.length;r<i;++r)if((n=t[r]).name===e)return n.value}function Gp(t,e,n){for(var r=0,i=t.length;r<i;++r)if(t[r].name===e){t[r]=$p,t=t.slice(0,r).concat(t.slice(r+1));break}return null!=n&&t.push({name:e,value:n}),t}Hp.prototype=qp.prototype={constructor:Hp,on:function(t,e){var n,r=this._,i=Wp(t+"",r),a=-1,o=i.length;if(!(arguments.length<2)){if(null!=e&&"function"!=typeof e)throw new Error("invalid callback: "+e);for(;++a<o;)if(n=(t=i[a]).type)r[n]=Gp(r[n],t.name,e);else if(null==e)for(n in r)r[n]=Gp(r[n],t.name,null);return this}for(;++a<o;)if((n=(t=i[a]).type)&&(n=Vp(r[n],t.name)))return n},copy:function(){var t={},e=this._;for(var n in e)t[n]=e[n].slice();return new Hp(t)},call:function(t,e){if((n=arguments.length-2)>0)for(var n,r,i=new Array(n),a=0;a<n;++a)i[a]=arguments[a+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(a=0,n=(r=this._[t]).length;a<n;++a)r[a].value.apply(e,i)},apply:function(t,e,n){if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(var r=this._[t],i=0,a=r.length;i<a;++i)r[i].value.apply(e,n)}};const Xp=qp;var Zp,Qp,Kp=0,Jp=0,tg=0,eg=0,ng=0,rg=0,ig="object"==typeof performance&&performance.now?performance:Date,ag="object"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function og(){return ng||(ag(sg),ng=ig.now()+rg)}function sg(){ng=0}function cg(){this._call=this._time=this._next=null}function ug(t,e,n){var r=new cg;return r.restart(t,e,n),r}function lg(){ng=(eg=ig.now())+rg,Kp=Jp=0;try{!function(){og(),++Kp;for(var t,e=Zp;e;)(t=ng-e._time)>=0&&e._call.call(void 0,t),e=e._next;--Kp}()}finally{Kp=0,function(){for(var t,e,n=Zp,r=1/0;n;)n._call?(r>n._time&&(r=n._time),t=n,n=n._next):(e=n._next,n._next=null,n=t?t._next=e:Zp=e);Qp=t,fg(r)}(),ng=0}}function hg(){var t=ig.now(),e=t-eg;e>1e3&&(rg-=e,eg=t)}function fg(t){Kp||(Jp&&(Jp=clearTimeout(Jp)),t-ng>24?(t<1/0&&(Jp=setTimeout(lg,t-ig.now()-rg)),tg&&(tg=clearInterval(tg))):(tg||(eg=ig.now(),tg=setInterval(hg,1e3)),Kp=1,ag(lg)))}function dg(t,e,n){var r=new cg;return e=null==e?0:+e,r.restart((n=>{r.stop(),t(n+e)}),e,n),r}cg.prototype=ug.prototype={constructor:cg,restart:function(t,e,n){if("function"!=typeof t)throw new TypeError("callback is not a function");n=(null==n?og():+n)+(null==e?0:+e),this._next||Qp===this||(Qp?Qp._next=this:Zp=this,Qp=this),this._call=t,this._time=n,fg()},stop:function(){this._call&&(this._call=null,this._time=1/0,fg())}};var pg=Xp("start","end","cancel","interrupt"),gg=[];function yg(t,e,n,r,i,a){var o=t.__transition;if(o){if(n in o)return}else t.__transition={};!function(t,e,n){var r,i=t.__transition;function a(c){var u,l,h,f;if(1!==n.state)return s();for(u in i)if((f=i[u]).name===n.name){if(3===f.state)return dg(a);4===f.state?(f.state=6,f.timer.stop(),f.on.call("interrupt",t,t.__data__,f.index,f.group),delete i[u]):+u<e&&(f.state=6,f.timer.stop(),f.on.call("cancel",t,t.__data__,f.index,f.group),delete i[u])}if(dg((function(){3===n.state&&(n.state=4,n.timer.restart(o,n.delay,n.time),o(c))})),n.state=2,n.on.call("start",t,t.__data__,n.index,n.group),2===n.state){for(n.state=3,r=new Array(h=n.tween.length),u=0,l=-1;u<h;++u)(f=n.tween[u].value.call(t,t.__data__,n.index,n.group))&&(r[++l]=f);r.length=l+1}}function o(e){for(var i=e<n.duration?n.ease.call(null,e/n.duration):(n.timer.restart(s),n.state=5,1),a=-1,o=r.length;++a<o;)r[a].call(t,i);5===n.state&&(n.on.call("end",t,t.__data__,n.index,n.group),s())}function s(){for(var r in n.state=6,n.timer.stop(),delete i[e],i)return;delete t.__transition}i[e]=n,n.timer=ug((function(t){n.state=1,n.timer.restart(a,n.delay,n.time),n.delay<=t&&a(t-n.delay)}),0,n.time)}(t,n,{name:e,index:r,group:i,on:pg,tween:gg,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:0})}function mg(t,e){var n=bg(t,e);if(n.state>0)throw new Error("too late; already scheduled");return n}function vg(t,e){var n=bg(t,e);if(n.state>3)throw new Error("too late; already running");return n}function bg(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}function _g(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}var xg,wg=180/Math.PI,kg={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function Tg(t,e,n,r,i,a){var o,s,c;return(o=Math.sqrt(t*t+e*e))&&(t/=o,e/=o),(c=t*n+e*r)&&(n-=t*c,r-=e*c),(s=Math.sqrt(n*n+r*r))&&(n/=s,r/=s,c/=s),t*r<e*n&&(t=-t,e=-e,c=-c,o=-o),{translateX:i,translateY:a,rotate:Math.atan2(e,t)*wg,skewX:Math.atan(c)*wg,scaleX:o,scaleY:s}}function Cg(t,e,n,r){function i(t){return t.length?t.pop()+" ":""}return function(a,o){var s=[],c=[];return a=t(a),o=t(o),function(t,r,i,a,o,s){if(t!==i||r!==a){var c=o.push("translate(",null,e,null,n);s.push({i:c-4,x:_g(t,i)},{i:c-2,x:_g(r,a)})}else(i||a)&&o.push("translate("+i+e+a+n)}(a.translateX,a.translateY,o.translateX,o.translateY,s,c),function(t,e,n,a){t!==e?(t-e>180?e+=360:e-t>180&&(t+=360),a.push({i:n.push(i(n)+"rotate(",null,r)-2,x:_g(t,e)})):e&&n.push(i(n)+"rotate("+e+r)}(a.rotate,o.rotate,s,c),function(t,e,n,a){t!==e?a.push({i:n.push(i(n)+"skewX(",null,r)-2,x:_g(t,e)}):e&&n.push(i(n)+"skewX("+e+r)}(a.skewX,o.skewX,s,c),function(t,e,n,r,a,o){if(t!==n||e!==r){var s=a.push(i(a)+"scale(",null,",",null,")");o.push({i:s-4,x:_g(t,n)},{i:s-2,x:_g(e,r)})}else 1===n&&1===r||a.push(i(a)+"scale("+n+","+r+")")}(a.scaleX,a.scaleY,o.scaleX,o.scaleY,s,c),a=o=null,function(t){for(var e,n=-1,r=c.length;++n<r;)s[(e=c[n]).i]=e.x(t);return s.join("")}}}var Eg=Cg((function(t){const e=new("function"==typeof DOMMatrix?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?kg:Tg(e.a,e.b,e.c,e.d,e.e,e.f)}),"px, ","px)","deg)"),Sg=Cg((function(t){return null==t?kg:(xg||(xg=document.createElementNS("http://www.w3.org/2000/svg","g")),xg.setAttribute("transform",t),(t=xg.transform.baseVal.consolidate())?Tg((t=t.matrix).a,t.b,t.c,t.d,t.e,t.f):kg)}),", ",")",")");function Ag(t,e){var n,r;return function(){var i=vg(this,t),a=i.tween;if(a!==n)for(var o=0,s=(r=n=a).length;o<s;++o)if(r[o].name===e){(r=r.slice()).splice(o,1);break}i.tween=r}}function Mg(t,e,n){var r,i;if("function"!=typeof n)throw new Error;return function(){var a=vg(this,t),o=a.tween;if(o!==r){i=(r=o).slice();for(var s={name:e,value:n},c=0,u=i.length;c<u;++c)if(i[c].name===e){i[c]=s;break}c===u&&i.push(s)}a.tween=i}}function Ng(t,e,n){var r=t._id;return t.each((function(){var t=vg(this,r);(t.value||(t.value={}))[e]=n.apply(this,arguments)})),function(t){return bg(t,r).value[e]}}function Dg(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function Bg(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function Lg(){}var Og=.7,Ig=1.4285714285714286,Rg="\\s*([+-]?\\d+)\\s*",Fg="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",Pg="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",Yg=/^#([0-9a-f]{3,8})$/,jg=new RegExp("^rgb\\("+[Rg,Rg,Rg]+"\\)$"),Ug=new RegExp("^rgb\\("+[Pg,Pg,Pg]+"\\)$"),zg=new RegExp("^rgba\\("+[Rg,Rg,Rg,Fg]+"\\)$"),$g=new RegExp("^rgba\\("+[Pg,Pg,Pg,Fg]+"\\)$"),qg=new RegExp("^hsl\\("+[Fg,Pg,Pg]+"\\)$"),Hg=new RegExp("^hsla\\("+[Fg,Pg,Pg,Fg]+"\\)$"),Wg={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function Vg(){return this.rgb().formatHex()}function Gg(){return this.rgb().formatRgb()}function Xg(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=Yg.exec(t))?(n=e[1].length,e=parseInt(e[1],16),6===n?Zg(e):3===n?new ty(e>>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===n?Qg(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===n?Qg(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=jg.exec(t))?new ty(e[1],e[2],e[3],1):(e=Ug.exec(t))?new ty(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=zg.exec(t))?Qg(e[1],e[2],e[3],e[4]):(e=$g.exec(t))?Qg(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=qg.exec(t))?iy(e[1],e[2]/100,e[3]/100,1):(e=Hg.exec(t))?iy(e[1],e[2]/100,e[3]/100,e[4]):Wg.hasOwnProperty(t)?Zg(Wg[t]):"transparent"===t?new ty(NaN,NaN,NaN,0):null}function Zg(t){return new ty(t>>16&255,t>>8&255,255&t,1)}function Qg(t,e,n,r){return r<=0&&(t=e=n=NaN),new ty(t,e,n,r)}function Kg(t){return t instanceof Lg||(t=Xg(t)),t?new ty((t=t.rgb()).r,t.g,t.b,t.opacity):new ty}function Jg(t,e,n,r){return 1===arguments.length?Kg(t):new ty(t,e,n,null==r?1:r)}function ty(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}function ey(){return"#"+ry(this.r)+ry(this.g)+ry(this.b)}function ny(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?")":", "+t+")")}function ry(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?"0":"")+t.toString(16)}function iy(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new oy(t,e,n,r)}function ay(t){if(t instanceof oy)return new oy(t.h,t.s,t.l,t.opacity);if(t instanceof Lg||(t=Xg(t)),!t)return new oy;if(t instanceof oy)return t;var e=(t=t.rgb()).r/255,n=t.g/255,r=t.b/255,i=Math.min(e,n,r),a=Math.max(e,n,r),o=NaN,s=a-i,c=(a+i)/2;return s?(o=e===a?(n-r)/s+6*(n<r):n===a?(r-e)/s+2:(e-n)/s+4,s/=c<.5?a+i:2-a-i,o*=60):s=c>0&&c<1?0:o,new oy(o,s,c,t.opacity)}function oy(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}function sy(t,e,n){return 255*(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)}function cy(t,e,n,r,i){var a=t*t,o=a*t;return((1-3*t+3*a-o)*e+(4-6*a+3*o)*n+(1+3*t+3*a-3*o)*r+o*i)/6}Dg(Lg,Xg,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:Vg,formatHex:Vg,formatHsl:function(){return ay(this).formatHsl()},formatRgb:Gg,toString:Gg}),Dg(ty,Jg,Bg(Lg,{brighter:function(t){return t=null==t?Ig:Math.pow(Ig,t),new ty(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?Og:Math.pow(Og,t),new ty(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:ey,formatHex:ey,formatRgb:ny,toString:ny})),Dg(oy,(function(t,e,n,r){return 1===arguments.length?ay(t):new oy(t,e,n,null==r?1:r)}),Bg(Lg,{brighter:function(t){return t=null==t?Ig:Math.pow(Ig,t),new oy(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?Og:Math.pow(Og,t),new oy(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new ty(sy(t>=240?t-240:t+120,i,r),sy(t,i,r),sy(t<120?t+240:t-120,i,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"hsl(":"hsla(")+(this.h||0)+", "+100*(this.s||0)+"%, "+100*(this.l||0)+"%"+(1===t?")":", "+t+")")}}));const uy=t=>()=>t;function ly(t,e){var n=e-t;return n?function(t,e){return function(n){return t+n*e}}(t,n):uy(isNaN(t)?e:t)}const hy=function t(e){var n=function(t){return 1==(t=+t)?ly:function(e,n){return n-e?function(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}(e,n,t):uy(isNaN(e)?n:e)}}(e);function r(t,e){var r=n((t=Jg(t)).r,(e=Jg(e)).r),i=n(t.g,e.g),a=n(t.b,e.b),o=ly(t.opacity,e.opacity);return function(e){return t.r=r(e),t.g=i(e),t.b=a(e),t.opacity=o(e),t+""}}return r.gamma=t,r}(1);function fy(t){return function(e){var n,r,i=e.length,a=new Array(i),o=new Array(i),s=new Array(i);for(n=0;n<i;++n)r=Jg(e[n]),a[n]=r.r||0,o[n]=r.g||0,s[n]=r.b||0;return a=t(a),o=t(o),s=t(s),r.opacity=1,function(t){return r.r=a(t),r.g=o(t),r.b=s(t),r+""}}}fy((function(t){var e=t.length-1;return function(n){var r=n<=0?n=0:n>=1?(n=1,e-1):Math.floor(n*e),i=t[r],a=t[r+1],o=r>0?t[r-1]:2*i-a,s=r<e-1?t[r+2]:2*a-i;return cy((n-r/e)*e,o,i,a,s)}})),fy((function(t){var e=t.length;return function(n){var r=Math.floor(((n%=1)<0?++n:n)*e),i=t[(r+e-1)%e],a=t[r%e],o=t[(r+1)%e],s=t[(r+2)%e];return cy((n-r/e)*e,i,a,o,s)}}));var dy=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,py=new RegExp(dy.source,"g");function gy(t,e){var n,r,i,a=dy.lastIndex=py.lastIndex=0,o=-1,s=[],c=[];for(t+="",e+="";(n=dy.exec(t))&&(r=py.exec(e));)(i=r.index)>a&&(i=e.slice(a,i),s[o]?s[o]+=i:s[++o]=i),(n=n[0])===(r=r[0])?s[o]?s[o]+=r:s[++o]=r:(s[++o]=null,c.push({i:o,x:_g(n,r)})),a=py.lastIndex;return a<e.length&&(i=e.slice(a),s[o]?s[o]+=i:s[++o]=i),s.length<2?c[0]?function(t){return function(e){return t(e)+""}}(c[0].x):function(t){return function(){return t}}(e):(e=c.length,function(t){for(var n,r=0;r<e;++r)s[(n=c[r]).i]=n.x(t);return s.join("")})}function yy(t,e){var n;return("number"==typeof e?_g:e instanceof Xg?hy:(n=Xg(e))?(e=n,hy):gy)(t,e)}function my(t){return function(){this.removeAttribute(t)}}function vy(t){return function(){this.removeAttributeNS(t.space,t.local)}}function by(t,e,n){var r,i,a=n+"";return function(){var o=this.getAttribute(t);return o===a?null:o===r?i:i=e(r=o,n)}}function _y(t,e,n){var r,i,a=n+"";return function(){var o=this.getAttributeNS(t.space,t.local);return o===a?null:o===r?i:i=e(r=o,n)}}function xy(t,e,n){var r,i,a;return function(){var o,s,c=n(this);if(null!=c)return(o=this.getAttribute(t))===(s=c+"")?null:o===r&&s===i?a:(i=s,a=e(r=o,c));this.removeAttribute(t)}}function wy(t,e,n){var r,i,a;return function(){var o,s,c=n(this);if(null!=c)return(o=this.getAttributeNS(t.space,t.local))===(s=c+"")?null:o===r&&s===i?a:(i=s,a=e(r=o,c));this.removeAttributeNS(t.space,t.local)}}function ky(t,e){return function(n){this.setAttribute(t,e.call(this,n))}}function Ty(t,e){return function(n){this.setAttributeNS(t.space,t.local,e.call(this,n))}}function Cy(t,e){var n,r;function i(){var i=e.apply(this,arguments);return i!==r&&(n=(r=i)&&Ty(t,i)),n}return i._value=e,i}function Ey(t,e){var n,r;function i(){var i=e.apply(this,arguments);return i!==r&&(n=(r=i)&&ky(t,i)),n}return i._value=e,i}function Sy(t,e){return function(){mg(this,t).delay=+e.apply(this,arguments)}}function Ay(t,e){return e=+e,function(){mg(this,t).delay=e}}function My(t,e){return function(){vg(this,t).duration=+e.apply(this,arguments)}}function Ny(t,e){return e=+e,function(){vg(this,t).duration=e}}function Dy(t,e){if("function"!=typeof e)throw new Error;return function(){vg(this,t).ease=e}}function By(t,e,n){var r,i,a=function(t){return(t+"").trim().split(/^|\s+/).every((function(t){var e=t.indexOf(".");return e>=0&&(t=t.slice(0,e)),!t||"start"===t}))}(e)?mg:vg;return function(){var o=a(this,t),s=o.on;s!==r&&(i=(r=s).copy()).on(e,n),o.on=i}}var Ly=zp.prototype.constructor;function Oy(t){return function(){this.style.removeProperty(t)}}function Iy(t,e,n){return function(r){this.style.setProperty(t,e.call(this,r),n)}}function Ry(t,e,n){var r,i;function a(){var a=e.apply(this,arguments);return a!==i&&(r=(i=a)&&Iy(t,a,n)),r}return a._value=e,a}function Fy(t){return function(e){this.textContent=t.call(this,e)}}function Py(t){var e,n;function r(){var r=t.apply(this,arguments);return r!==n&&(e=(n=r)&&Fy(r)),e}return r._value=t,r}var Yy=0;function jy(t,e,n,r){this._groups=t,this._parents=e,this._name=n,this._id=r}function Uy(){return++Yy}var zy=zp.prototype;jy.prototype=function(t){return zp().transition(t)}.prototype={constructor:jy,select:function(t){var e=this._name,n=this._id;"function"!=typeof t&&(t=Md(t));for(var r=this._groups,i=r.length,a=new Array(i),o=0;o<i;++o)for(var s,c,u=r[o],l=u.length,h=a[o]=new Array(l),f=0;f<l;++f)(s=u[f])&&(c=t.call(s,s.__data__,f,u))&&("__data__"in s&&(c.__data__=s.__data__),h[f]=c,yg(h[f],e,n,f,h,bg(s,n)));return new jy(a,this._parents,e,n)},selectAll:function(t){var e=this._name,n=this._id;"function"!=typeof t&&(t=Bd(t));for(var r=this._groups,i=r.length,a=[],o=[],s=0;s<i;++s)for(var c,u=r[s],l=u.length,h=0;h<l;++h)if(c=u[h]){for(var f,d=t.call(c,c.__data__,h,u),p=bg(c,n),g=0,y=d.length;g<y;++g)(f=d[g])&&yg(f,e,n,g,d,p);a.push(d),o.push(c)}return new jy(a,o,e,n)},selectChild:zy.selectChild,selectChildren:zy.selectChildren,filter:function(t){"function"!=typeof t&&(t=Ld(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var a,o=e[i],s=o.length,c=r[i]=[],u=0;u<s;++u)(a=o[u])&&t.call(a,a.__data__,u,o)&&c.push(a);return new jy(r,this._parents,this._name,this._id)},merge:function(t){if(t._id!==this._id)throw new Error;for(var e=this._groups,n=t._groups,r=e.length,i=n.length,a=Math.min(r,i),o=new Array(r),s=0;s<a;++s)for(var c,u=e[s],l=n[s],h=u.length,f=o[s]=new Array(h),d=0;d<h;++d)(c=u[d]||l[d])&&(f[d]=c);for(;s<r;++s)o[s]=e[s];return new jy(o,this._parents,this._name,this._id)},selection:function(){return new Ly(this._groups,this._parents)},transition:function(){for(var t=this._name,e=this._id,n=Uy(),r=this._groups,i=r.length,a=0;a<i;++a)for(var o,s=r[a],c=s.length,u=0;u<c;++u)if(o=s[u]){var l=bg(o,e);yg(o,t,n,u,s,{time:l.time+l.delay+l.duration,delay:0,duration:l.duration,ease:l.ease})}return new jy(r,this._parents,t,n)},call:zy.call,nodes:zy.nodes,node:zy.node,size:zy.size,empty:zy.empty,each:zy.each,on:function(t,e){var n=this._id;return arguments.length<2?bg(this.node(),n).on.on(t):this.each(By(n,t,e))},attr:function(t,e){var n=Xd(t),r="transform"===n?Sg:yy;return this.attrTween(t,"function"==typeof e?(n.local?wy:xy)(n,r,Ng(this,"attr."+t,e)):null==e?(n.local?vy:my)(n):(n.local?_y:by)(n,r,e))},attrTween:function(t,e){var n="attr."+t;if(arguments.length<2)return(n=this.tween(n))&&n._value;if(null==e)return this.tween(n,null);if("function"!=typeof e)throw new Error;var r=Xd(t);return this.tween(n,(r.local?Cy:Ey)(r,e))},style:function(t,e,n){var r="transform"==(t+="")?Eg:yy;return null==e?this.styleTween(t,function(t,e){var n,r,i;return function(){var a=op(this,t),o=(this.style.removeProperty(t),op(this,t));return a===o?null:a===n&&o===r?i:i=e(n=a,r=o)}}(t,r)).on("end.style."+t,Oy(t)):"function"==typeof e?this.styleTween(t,function(t,e,n){var r,i,a;return function(){var o=op(this,t),s=n(this),c=s+"";return null==s&&(this.style.removeProperty(t),c=s=op(this,t)),o===c?null:o===r&&c===i?a:(i=c,a=e(r=o,s))}}(t,r,Ng(this,"style."+t,e))).each(function(t,e){var n,r,i,a,o="style."+e,s="end."+o;return function(){var c=vg(this,t),u=c.on,l=null==c.value[o]?a||(a=Oy(e)):void 0;u===n&&i===l||(r=(n=u).copy()).on(s,i=l),c.on=r}}(this._id,t)):this.styleTween(t,function(t,e,n){var r,i,a=n+"";return function(){var o=op(this,t);return o===a?null:o===r?i:i=e(r=o,n)}}(t,r,e),n).on("end.style."+t,null)},styleTween:function(t,e,n){var r="style."+(t+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(null==e)return this.tween(r,null);if("function"!=typeof e)throw new Error;return this.tween(r,Ry(t,e,null==n?"":n))},text:function(t){return this.tween("text","function"==typeof t?function(t){return function(){var e=t(this);this.textContent=null==e?"":e}}(Ng(this,"text",t)):function(t){return function(){this.textContent=t}}(null==t?"":t+""))},textTween:function(t){var e="text";if(arguments.length<1)return(e=this.tween(e))&&e._value;if(null==t)return this.tween(e,null);if("function"!=typeof t)throw new Error;return this.tween(e,Py(t))},remove:function(){return this.on("end.remove",function(t){return function(){var e=this.parentNode;for(var n in this.__transition)if(+n!==t)return;e&&e.removeChild(this)}}(this._id))},tween:function(t,e){var n=this._id;if(t+="",arguments.length<2){for(var r,i=bg(this.node(),n).tween,a=0,o=i.length;a<o;++a)if((r=i[a]).name===t)return r.value;return null}return this.each((null==e?Ag:Mg)(n,t,e))},delay:function(t){var e=this._id;return arguments.length?this.each(("function"==typeof t?Sy:Ay)(e,t)):bg(this.node(),e).delay},duration:function(t){var e=this._id;return arguments.length?this.each(("function"==typeof t?My:Ny)(e,t)):bg(this.node(),e).duration},ease:function(t){var e=this._id;return arguments.length?this.each(Dy(e,t)):bg(this.node(),e).ease},easeVarying:function(t){if("function"!=typeof t)throw new Error;return this.each(function(t,e){return function(){var n=e.apply(this,arguments);if("function"!=typeof n)throw new Error;vg(this,t).ease=n}}(this._id,t))},end:function(){var t,e,n=this,r=n._id,i=n.size();return new Promise((function(a,o){var s={value:o},c={value:function(){0==--i&&a()}};n.each((function(){var n=vg(this,r),i=n.on;i!==t&&((e=(t=i).copy())._.cancel.push(s),e._.interrupt.push(s),e._.end.push(c)),n.on=e})),0===i&&a()}))},[Symbol.iterator]:zy[Symbol.iterator]};var $y={time:null,delay:0,duration:250,ease:function(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}};function qy(t,e){for(var n;!(n=t.__transition)||!(n=n[e]);)if(!(t=t.parentNode))throw new Error(`transition ${e} not found`);return n}function Hy(t,e,n){this.k=t,this.x=e,this.y=n}zp.prototype.interrupt=function(t){return this.each((function(){!function(t,e){var n,r,i,a=t.__transition,o=!0;if(a){for(i in e=null==e?null:e+"",a)(n=a[i]).name===e?(r=n.state>2&&n.state<5,n.state=6,n.timer.stop(),n.on.call(r?"interrupt":"cancel",t,t.__data__,n.index,n.group),delete a[i]):o=!1;o&&delete t.__transition}}(this,t)}))},zp.prototype.transition=function(t){var e,n;t instanceof jy?(e=t._id,t=t._name):(e=Uy(),(n=$y).time=og(),t=null==t?null:t+"");for(var r=this._groups,i=r.length,a=0;a<i;++a)for(var o,s=r[a],c=s.length,u=0;u<c;++u)(o=s[u])&&yg(o,t,e,u,s,n||qy(o,e));return new jy(r,this._parents,t,e)},Hy.prototype={constructor:Hy,scale:function(t){return 1===t?this:new Hy(this.k*t,this.x,this.y)},translate:function(t,e){return 0===t&0===e?this:new Hy(this.k,this.x+this.k*t,this.y+this.k*e)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}},new Hy(1,0,0),Hy.prototype;var Wy="comm",Vy="rule",Gy="decl",Xy=Math.abs,Zy=String.fromCharCode;function Qy(t){return t.trim()}function Ky(t,e,n){return t.replace(e,n)}function Jy(t,e){return t.indexOf(e)}function tm(t,e){return 0|t.charCodeAt(e)}function em(t,e,n){return t.slice(e,n)}function nm(t){return t.length}function rm(t){return t.length}function im(t,e){return e.push(t),t}function am(t,e){for(var n="",r=rm(t),i=0;i<r;i++)n+=e(t[i],i,t,e)||"";return n}function om(t,e,n,r){switch(t.type){case"@import":case Gy:return t.return=t.return||t.value;case Wy:return"";case"@keyframes":return t.return=t.value+"{"+am(t.children,r)+"}";case Vy:t.value=t.props.join(",")}return nm(n=am(t.children,r))?t.return=t.value+"{"+n+"}":""}Object.assign;var sm=1,cm=1,um=0,lm=0,hm=0,fm="";function dm(t,e,n,r,i,a,o){return{value:t,root:e,parent:n,type:r,props:i,children:a,line:sm,column:cm,length:o,return:""}}function pm(){return hm=lm>0?tm(fm,--lm):0,cm--,10===hm&&(cm=1,sm--),hm}function gm(){return hm=lm<um?tm(fm,lm++):0,cm++,10===hm&&(cm=1,sm++),hm}function ym(){return tm(fm,lm)}function mm(){return lm}function vm(t,e){return em(fm,t,e)}function bm(t){switch(t){case 0:case 9:case 10:case 13:case 32:return 5;case 33:case 43:case 44:case 47:case 62:case 64:case 126:case 59:case 123:case 125:return 4;case 58:return 3;case 34:case 39:case 40:case 91:return 2;case 41:case 93:return 1}return 0}function _m(t){return Qy(vm(lm-1,km(91===t?t+2:40===t?t+1:t)))}function xm(t){for(;(hm=ym())&&hm<33;)gm();return bm(t)>2||bm(hm)>3?"":" "}function wm(t,e){for(;--e&&gm()&&!(hm<48||hm>102||hm>57&&hm<65||hm>70&&hm<97););return vm(t,mm()+(e<6&&32==ym()&&32==gm()))}function km(t){for(;gm();)switch(hm){case t:return lm;case 34:case 39:34!==t&&39!==t&&km(hm);break;case 40:41===t&&km(t);break;case 92:gm()}return lm}function Tm(t,e){for(;gm()&&t+hm!==57&&(t+hm!==84||47!==ym()););return"/*"+vm(e,lm-1)+"*"+Zy(47===t?t:gm())}function Cm(t){for(;!bm(ym());)gm();return vm(t,lm)}function Em(t){return function(t){return fm="",t}(Sm("",null,null,null,[""],t=function(t){return sm=cm=1,um=nm(fm=t),lm=0,[]}(t),0,[0],t))}function Sm(t,e,n,r,i,a,o,s,c){for(var u=0,l=0,h=o,f=0,d=0,p=0,g=1,y=1,m=1,v=0,b="",_=i,x=a,w=r,k=b;y;)switch(p=v,v=gm()){case 40:if(108!=p&&58==k.charCodeAt(h-1)){-1!=Jy(k+=Ky(_m(v),"&","&\f"),"&\f")&&(m=-1);break}case 34:case 39:case 91:k+=_m(v);break;case 9:case 10:case 13:case 32:k+=xm(p);break;case 92:k+=wm(mm()-1,7);continue;case 47:switch(ym()){case 42:case 47:im(Mm(Tm(gm(),mm()),e,n),c);break;default:k+="/"}break;case 123*g:s[u++]=nm(k)*m;case 125*g:case 59:case 0:switch(v){case 0:case 125:y=0;case 59+l:d>0&&nm(k)-h&&im(d>32?Nm(k+";",r,n,h-1):Nm(Ky(k," ","")+";",r,n,h-2),c);break;case 59:k+=";";default:if(im(w=Am(k,e,n,u,l,i,s,b,_=[],x=[],h),a),123===v)if(0===l)Sm(k,e,w,w,_,a,h,s,x);else switch(f){case 100:case 109:case 115:Sm(t,w,w,r&&im(Am(t,w,w,0,0,i,s,b,i,_=[],h),x),i,x,h,s,r?_:x);break;default:Sm(k,w,w,w,[""],x,0,s,x)}}u=l=d=0,g=m=1,b=k="",h=o;break;case 58:h=1+nm(k),d=p;default:if(g<1)if(123==v)--g;else if(125==v&&0==g++&&125==pm())continue;switch(k+=Zy(v),v*g){case 38:m=l>0?1:(k+="\f",-1);break;case 44:s[u++]=(nm(k)-1)*m,m=1;break;case 64:45===ym()&&(k+=_m(gm())),f=ym(),l=h=nm(b=k+=Cm(mm())),v++;break;case 45:45===p&&2==nm(k)&&(g=0)}}return a}function Am(t,e,n,r,i,a,o,s,c,u,l){for(var h=i-1,f=0===i?a:[""],d=rm(f),p=0,g=0,y=0;p<r;++p)for(var m=0,v=em(t,h+1,h=Xy(g=o[p])),b=t;m<d;++m)(b=Qy(g>0?f[m]+" "+v:Ky(v,/&\f/g,f[m])))&&(c[y++]=b);return dm(t,e,n,0===i?Vy:s,c,u,l)}function Mm(t,e,n){return dm(t,e,n,Wy,Zy(hm),em(t,2,-2),0)}function Nm(t,e,n,r){return dm(t,e,n,Gy,em(t,0,r),em(t,r+1,-1),r)}const Dm="9.1.0";var Bm=n(7967),Lm=n(7856),Om=n.n(Lm),Im=function(t){var e=t.replace(/\\u[\dA-F]{4}/gi,(function(t){return String.fromCharCode(parseInt(t.replace(/\\u/g,""),16))}));return e=(e=(e=e.replace(/\\x([0-9a-f]{2})/gi,(function(t,e){return String.fromCharCode(parseInt(e,16))}))).replace(/\\[\d\d\d]{3}/gi,(function(t){return String.fromCharCode(parseInt(t.replace(/\\/g,""),8))}))).replace(/\\[\d\d\d]{2}/gi,(function(t){return String.fromCharCode(parseInt(t.replace(/\\/g,""),8))}))},Rm=function(t){for(var e="",n=0;n>=0;){if(!((n=t.indexOf("<script"))>=0)){e+=t,n=-1;break}e+=t.substr(0,n),(n=(t=t.substr(n+1)).indexOf("<\/script>"))>=0&&(n+=9,t=t.substr(n))}var r=Im(e);return(r=(r=(r=(r=r.replaceAll(/script>/gi,"#")).replaceAll(/javascript:/gi,"#")).replaceAll(/javascript&colon/gi,"#")).replaceAll(/onerror=/gi,"onerror:")).replaceAll(/<iframe/gi,"")},Fm=function(t,e){var n=t,r=!0;if(!e.flowchart||!1!==e.flowchart.htmlLabels&&"false"!==e.flowchart.htmlLabels||(r=!1),r){var i=e.securityLevel;"antiscript"===i||"strict"===i?n=Rm(n):"loose"!==i&&(n=(n=(n=Um(n)).replace(/</g,"&lt;").replace(/>/g,"&gt;")).replace(/=/g,"&equals;"),n=jm(n))}return n},Pm=function(t,e){return t?e.dompurifyConfig?Om().sanitize(Fm(t,e),e.dompurifyConfig):Om().sanitize(Fm(t,e)):t},Ym=/<br\s*\/?>/gi,jm=function(t){return t.replace(/#br#/g,"<br/>")},Um=function(t){return t.replace(Ym,"#br#")},zm=function(t){return"false"!==t&&!1!==t};const $m={getRows:function(t){if(!t)return 1;var e=Um(t);return(e=e.replace(/\\n/g,"#br#")).split("#br#")},sanitizeText:Pm,sanitizeTextOrArray:function(t,e){return"string"==typeof t?Pm(t,e):t.flat().map((function(t){return Pm(t,e)}))},hasBreaks:function(t){return Ym.test(t)},splitBreaks:function(t){return t.split(Ym)},lineBreakRegex:Ym,removeScript:Rm,getUrl:function(t){var e="";return t&&(e=(e=(e=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search).replace(/\(/g,"\\(")).replace(/\)/g,"\\)")),e},evaluate:zm,removeEscapes:Im},qm={min:{r:0,g:0,b:0,s:0,l:0,a:0},max:{r:255,g:255,b:255,h:360,s:100,l:100,a:1},clamp:{r:t=>t>=255?255:t<0?0:t,g:t=>t>=255?255:t<0?0:t,b:t=>t>=255?255:t<0?0:t,h:t=>t%360,s:t=>t>=100?100:t<0?0:t,l:t=>t>=100?100:t<0?0:t,a:t=>t>=1?1:t<0?0:t},toLinear:t=>{const e=t/255;return t>.03928?Math.pow((e+.055)/1.055,2.4):e/12.92},hue2rgb:(t,e,n)=>(n<0&&(n+=1),n>1&&(n-=1),n<1/6?t+6*(e-t)*n:n<.5?e:n<2/3?t+(e-t)*(2/3-n)*6:t),hsl2rgb:({h:t,s:e,l:n},r)=>{if(!e)return 2.55*n;t/=360,e/=100;const i=(n/=100)<.5?n*(1+e):n+e-n*e,a=2*n-i;switch(r){case"r":return 255*qm.hue2rgb(a,i,t+1/3);case"g":return 255*qm.hue2rgb(a,i,t);case"b":return 255*qm.hue2rgb(a,i,t-1/3)}},rgb2hsl:({r:t,g:e,b:n},r)=>{t/=255,e/=255,n/=255;const i=Math.max(t,e,n),a=Math.min(t,e,n),o=(i+a)/2;if("l"===r)return 100*o;if(i===a)return 0;const s=i-a;if("s"===r)return 100*(o>.5?s/(2-i-a):s/(i+a));switch(i){case t:return 60*((e-n)/s+(e<n?6:0));case e:return 60*((n-t)/s+2);case n:return 60*((t-e)/s+4);default:return-1}}},Hm={clamp:(t,e,n)=>e>n?Math.min(e,Math.max(n,t)):Math.min(n,Math.max(e,t)),round:t=>Math.round(1e10*t)/1e10},Wm={dec2hex:t=>{const e=Math.round(t).toString(16);return e.length>1?e:`0${e}`}},Vm={channel:qm,lang:Hm,unit:Wm},Gm={};for(let t=0;t<=255;t++)Gm[t]=Vm.unit.dec2hex(t);const Xm=new class{constructor(t,e){this.color=e,this.changed=!1,this.data=t,this.type=new class{constructor(){this.type=0}get(){return this.type}set(t){if(this.type&&this.type!==t)throw new Error("Cannot change both RGB and HSL channels at the same time");this.type=t}reset(){this.type=0}is(t){return this.type===t}}}set(t,e){return this.color=e,this.changed=!1,this.data=t,this.type.type=0,this}_ensureHSL(){const t=this.data,{h:e,s:n,l:r}=t;void 0===e&&(t.h=Vm.channel.rgb2hsl(t,"h")),void 0===n&&(t.s=Vm.channel.rgb2hsl(t,"s")),void 0===r&&(t.l=Vm.channel.rgb2hsl(t,"l"))}_ensureRGB(){const t=this.data,{r:e,g:n,b:r}=t;void 0===e&&(t.r=Vm.channel.hsl2rgb(t,"r")),void 0===n&&(t.g=Vm.channel.hsl2rgb(t,"g")),void 0===r&&(t.b=Vm.channel.hsl2rgb(t,"b"))}get r(){const t=this.data,e=t.r;return this.type.is(2)||void 0===e?(this._ensureHSL(),Vm.channel.hsl2rgb(t,"r")):e}get g(){const t=this.data,e=t.g;return this.type.is(2)||void 0===e?(this._ensureHSL(),Vm.channel.hsl2rgb(t,"g")):e}get b(){const t=this.data,e=t.b;return this.type.is(2)||void 0===e?(this._ensureHSL(),Vm.channel.hsl2rgb(t,"b")):e}get h(){const t=this.data,e=t.h;return this.type.is(1)||void 0===e?(this._ensureRGB(),Vm.channel.rgb2hsl(t,"h")):e}get s(){const t=this.data,e=t.s;return this.type.is(1)||void 0===e?(this._ensureRGB(),Vm.channel.rgb2hsl(t,"s")):e}get l(){const t=this.data,e=t.l;return this.type.is(1)||void 0===e?(this._ensureRGB(),Vm.channel.rgb2hsl(t,"l")):e}get a(){return this.data.a}set r(t){this.type.set(1),this.changed=!0,this.data.r=t}set g(t){this.type.set(1),this.changed=!0,this.data.g=t}set b(t){this.type.set(1),this.changed=!0,this.data.b=t}set h(t){this.type.set(2),this.changed=!0,this.data.h=t}set s(t){this.type.set(2),this.changed=!0,this.data.s=t}set l(t){this.type.set(2),this.changed=!0,this.data.l=t}set a(t){this.changed=!0,this.data.a=t}}({r:0,g:0,b:0,a:0},"transparent"),Zm={re:/^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,parse:t=>{if(35!==t.charCodeAt(0))return;const e=t.match(Zm.re);if(!e)return;const n=e[1],r=parseInt(n,16),i=n.length,a=i%4==0,o=i>4,s=o?1:17,c=o?8:4,u=a?0:-1,l=o?255:15;return Xm.set({r:(r>>c*(u+3)&l)*s,g:(r>>c*(u+2)&l)*s,b:(r>>c*(u+1)&l)*s,a:a?(r&l)*s/255:1},t)},stringify:t=>{const{r:e,g:n,b:r,a:i}=t;return i<1?`#${Gm[Math.round(e)]}${Gm[Math.round(n)]}${Gm[Math.round(r)]}${Gm[Math.round(255*i)]}`:`#${Gm[Math.round(e)]}${Gm[Math.round(n)]}${Gm[Math.round(r)]}`}},Qm=Zm,Km={re:/^hsla?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(?:deg|grad|rad|turn)?)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(%)?))?\s*?\)$/i,hueRe:/^(.+?)(deg|grad|rad|turn)$/i,_hue2deg:t=>{const e=t.match(Km.hueRe);if(e){const[,t,n]=e;switch(n){case"grad":return Vm.channel.clamp.h(.9*parseFloat(t));case"rad":return Vm.channel.clamp.h(180*parseFloat(t)/Math.PI);case"turn":return Vm.channel.clamp.h(360*parseFloat(t))}}return Vm.channel.clamp.h(parseFloat(t))},parse:t=>{const e=t.charCodeAt(0);if(104!==e&&72!==e)return;const n=t.match(Km.re);if(!n)return;const[,r,i,a,o,s]=n;return Xm.set({h:Km._hue2deg(r),s:Vm.channel.clamp.s(parseFloat(i)),l:Vm.channel.clamp.l(parseFloat(a)),a:o?Vm.channel.clamp.a(s?parseFloat(o)/100:parseFloat(o)):1},t)},stringify:t=>{const{h:e,s:n,l:r,a:i}=t;return i<1?`hsla(${Vm.lang.round(e)}, ${Vm.lang.round(n)}%, ${Vm.lang.round(r)}%, ${i})`:`hsl(${Vm.lang.round(e)}, ${Vm.lang.round(n)}%, ${Vm.lang.round(r)}%)`}},Jm=Km,tv={colors:{aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyanaqua:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",transparent:"#00000000",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},parse:t=>{t=t.toLowerCase();const e=tv.colors[t];if(e)return Qm.parse(e)},stringify:t=>{const e=Qm.stringify(t);for(const t in tv.colors)if(tv.colors[t]===e)return t}},ev=tv,nv={re:/^rgba?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?)))?\s*?\)$/i,parse:t=>{const e=t.charCodeAt(0);if(114!==e&&82!==e)return;const n=t.match(nv.re);if(!n)return;const[,r,i,a,o,s,c,u,l]=n;return Xm.set({r:Vm.channel.clamp.r(i?2.55*parseFloat(r):parseFloat(r)),g:Vm.channel.clamp.g(o?2.55*parseFloat(a):parseFloat(a)),b:Vm.channel.clamp.b(c?2.55*parseFloat(s):parseFloat(s)),a:u?Vm.channel.clamp.a(l?parseFloat(u)/100:parseFloat(u)):1},t)},stringify:t=>{const{r:e,g:n,b:r,a:i}=t;return i<1?`rgba(${Vm.lang.round(e)}, ${Vm.lang.round(n)}, ${Vm.lang.round(r)}, ${Vm.lang.round(i)})`:`rgb(${Vm.lang.round(e)}, ${Vm.lang.round(n)}, ${Vm.lang.round(r)})`}},rv=nv,iv={format:{keyword:ev,hex:Qm,rgb:rv,rgba:rv,hsl:Jm,hsla:Jm},parse:t=>{if("string"!=typeof t)return t;const e=Qm.parse(t)||rv.parse(t)||Jm.parse(t)||ev.parse(t);if(e)return e;throw new Error(`Unsupported color format: "${t}"`)},stringify:t=>!t.changed&&t.color?t.color:t.type.is(2)||void 0===t.data.r?Jm.stringify(t):t.a<1||!Number.isInteger(t.r)||!Number.isInteger(t.g)||!Number.isInteger(t.b)?rv.stringify(t):Qm.stringify(t)},av=iv,ov=(t,e)=>{const n=av.parse(t);for(const t in e)n[t]=Vm.channel.clamp[t](e[t]);return av.stringify(n)},sv=(t,e)=>{const n=av.parse(t),r={};for(const t in e)e[t]&&(r[t]=n[t]+e[t]);return ov(t,r)},cv=(t,e,n=0,r=1)=>{if("number"!=typeof t)return ov(t,{a:e});const i=Xm.set({r:Vm.channel.clamp.r(t),g:Vm.channel.clamp.g(e),b:Vm.channel.clamp.b(n),a:Vm.channel.clamp.a(r)});return av.stringify(i)},uv=(t,e=100)=>{const n=av.parse(t);return n.r=255-n.r,n.g=255-n.g,n.b=255-n.b,((t,e,n=50)=>{const{r,g:i,b:a,a:o}=av.parse(t),{r:s,g:c,b:u,a:l}=av.parse(e),h=n/100,f=2*h-1,d=o-l,p=((f*d==-1?f:(f+d)/(1+f*d))+1)/2,g=1-p;return cv(r*p+s*g,i*p+c*g,a*p+u*g,o*h+l*(1-h))})(n,t,e)},lv=(t,e,n)=>{const r=av.parse(t),i=r[e],a=Vm.channel.clamp[e](i+n);return i!==a&&(r[e]=a),av.stringify(r)},hv=(t,e)=>lv(t,"l",-e),fv=(t,e)=>lv(t,"l",e);var dv=function(t,e){return sv(t,e?{s:-40,l:10}:{s:-40,l:-10})};function pv(t){return pv="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},pv(t)}function gv(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}var yv=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.background="#f4f4f4",this.darkMode=!1,this.primaryColor="#fff4dd",this.noteBkgColor="#fff5ad",this.noteTextColor="#333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px"}var e,n;return e=t,n=[{key:"updateColors",value:function(){this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#333"),this.secondaryColor=this.secondaryColor||sv(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||sv(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||dv(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||dv(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||dv(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||dv(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#333",this.secondaryTextColor=this.secondaryTextColor||uv(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||uv(this.tertiaryColor),this.lineColor=this.lineColor||uv(this.background),this.textColor=this.textColor||this.primaryTextColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.primaryBorderColor,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?hv(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||"grey",this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||hv(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||uv(this.lineColor),this.sectionBkgColor=this.sectionBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||this.secondaryColor,this.sectionBkgColor2=this.sectionBkgColor2||this.primaryColor,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||this.primaryColor,this.activeTaskBorderColor=this.activeTaskBorderColor||this.primaryColor,this.activeTaskBkgColor=this.activeTaskBkgColor||fv(this.primaryColor,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.taskTextColor=this.taskTextColor||this.textColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||this.tertiaryColor,this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.classText=this.classText||this.textColor,this.fillType0=this.fillType0||this.primaryColor,this.fillType1=this.fillType1||this.secondaryColor,this.fillType2=this.fillType2||sv(this.primaryColor,{h:64}),this.fillType3=this.fillType3||sv(this.secondaryColor,{h:64}),this.fillType4=this.fillType4||sv(this.primaryColor,{h:-64}),this.fillType5=this.fillType5||sv(this.secondaryColor,{h:-64}),this.fillType6=this.fillType6||sv(this.primaryColor,{h:128}),this.fillType7=this.fillType7||sv(this.secondaryColor,{h:128}),this.pie1=this.pie1||this.primaryColor,this.pie2=this.pie2||this.secondaryColor,this.pie3=this.pie3||this.tertiaryColor,this.pie4=this.pie4||sv(this.primaryColor,{l:-10}),this.pie5=this.pie5||sv(this.secondaryColor,{l:-10}),this.pie6=this.pie6||sv(this.tertiaryColor,{l:-10}),this.pie7=this.pie7||sv(this.primaryColor,{h:60,l:-10}),this.pie8=this.pie8||sv(this.primaryColor,{h:-60,l:-10}),this.pie9=this.pie9||sv(this.primaryColor,{h:120,l:0}),this.pie10=this.pie10||sv(this.primaryColor,{h:60,l:-20}),this.pie11=this.pie11||sv(this.primaryColor,{h:-60,l:-20}),this.pie12=this.pie12||sv(this.primaryColor,{h:120,l:-10}),this.pieTitleTextSize=this.pieTitleTextSize||"25px",this.pieTitleTextColor=this.pieTitleTextColor||this.taskTextDarkColor,this.pieSectionTextSize=this.pieSectionTextSize||"17px",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||"17px",this.pieLegendTextColor=this.pieLegendTextColor||this.taskTextDarkColor,this.pieStrokeColor=this.pieStrokeColor||"black",this.pieStrokeWidth=this.pieStrokeWidth||"2px",this.pieOpacity=this.pieOpacity||"0.7",this.requirementBackground=this.requirementBackground||this.primaryColor,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||this.primaryBorderColor,this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||(this.darkMode?hv(this.secondaryColor,30):this.secondaryColor),this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.git0=this.git0||this.primaryColor,this.git1=this.git1||this.secondaryColor,this.git2=this.git2||this.tertiaryColor,this.git3=this.git3||sv(this.primaryColor,{h:-30}),this.git4=this.git4||sv(this.primaryColor,{h:-60}),this.git5=this.git5||sv(this.primaryColor,{h:-90}),this.git6=this.git6||sv(this.primaryColor,{h:60}),this.git7=this.git7||sv(this.primaryColor,{h:120}),this.darkMode?(this.git0=fv(this.git0,25),this.git1=fv(this.git1,25),this.git2=fv(this.git2,25),this.git3=fv(this.git3,25),this.git4=fv(this.git4,25),this.git5=fv(this.git5,25),this.git6=fv(this.git6,25),this.git7=fv(this.git7,25)):(this.git0=hv(this.git0,25),this.git1=hv(this.git1,25),this.git2=hv(this.git2,25),this.git3=hv(this.git3,25),this.git4=hv(this.git4,25),this.git5=hv(this.git5,25),this.git6=hv(this.git6,25),this.git7=hv(this.git7,25)),this.gitInv0=this.gitInv0||uv(this.git0),this.gitInv1=this.gitInv1||uv(this.git1),this.gitInv2=this.gitInv2||uv(this.git2),this.gitInv3=this.gitInv3||uv(this.git3),this.gitInv4=this.gitInv4||uv(this.git4),this.gitInv5=this.gitInv5||uv(this.git5),this.gitInv6=this.gitInv6||uv(this.git6),this.gitInv7=this.gitInv7||uv(this.git7),this.branchLabelColor=this.branchLabelColor||(this.darkMode?"black":this.labelTextColor),this.gitBranchLabel0=this.gitBranchLabel0||this.branchLabelColor,this.gitBranchLabel1=this.gitBranchLabel1||this.branchLabelColor,this.gitBranchLabel2=this.gitBranchLabel2||this.branchLabelColor,this.gitBranchLabel3=this.gitBranchLabel3||this.branchLabelColor,this.gitBranchLabel4=this.gitBranchLabel4||this.branchLabelColor,this.gitBranchLabel5=this.gitBranchLabel5||this.branchLabelColor,this.gitBranchLabel6=this.gitBranchLabel6||this.branchLabelColor,this.gitBranchLabel7=this.gitBranchLabel7||this.branchLabelColor,this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor}},{key:"calculate",value:function(t){var e=this;if("object"===pv(t)){var n=Object.keys(t);n.forEach((function(n){e[n]=t[n]})),this.updateColors(),n.forEach((function(n){e[n]=t[n]}))}else this.updateColors()}}],n&&gv(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),t}();function mv(t){return mv="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},mv(t)}function vv(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}var bv=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.background="#333",this.primaryColor="#1f2020",this.secondaryColor=fv(this.primaryColor,16),this.tertiaryColor=sv(this.primaryColor,{h:-160}),this.primaryBorderColor=uv(this.background),this.secondaryBorderColor=dv(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=dv(this.tertiaryColor,this.darkMode),this.primaryTextColor=uv(this.primaryColor),this.secondaryTextColor=uv(this.secondaryColor),this.tertiaryTextColor=uv(this.tertiaryColor),this.lineColor=uv(this.background),this.textColor=uv(this.background),this.mainBkg="#1f2020",this.secondBkg="calculated",this.mainContrastColor="lightgrey",this.darkTextColor=fv(uv("#323D47"),10),this.lineColor="calculated",this.border1="#81B1DB",this.border2=cv(255,255,255,.25),this.arrowheadColor="calculated",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="#181818",this.textColor="#ccc",this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#F9FFFE",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="calculated",this.activationBkgColor="calculated",this.sequenceNumberColor="black",this.sectionBkgColor=hv("#EAE8D9",30),this.altSectionBkgColor="calculated",this.sectionBkgColor2="#EAE8D9",this.taskBorderColor=cv(255,255,255,70),this.taskBkgColor="calculated",this.taskTextColor="calculated",this.taskTextLightColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor=cv(255,255,255,50),this.activeTaskBkgColor="#81B1DB",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="grey",this.critBorderColor="#E83737",this.critBkgColor="#E83737",this.taskTextDarkColor="calculated",this.todayLineColor="#DB5757",this.labelColor="calculated",this.errorBkgColor="#a44141",this.errorTextColor="#ddd"}var e,n;return e=t,n=[{key:"updateColors",value:function(){this.secondBkg=fv(this.mainBkg,16),this.lineColor=this.mainContrastColor,this.arrowheadColor=this.mainContrastColor,this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.edgeLabelBackground=fv(this.labelBackground,25),this.actorBorder=this.border1,this.actorBkg=this.mainBkg,this.actorTextColor=this.mainContrastColor,this.actorLineColor=this.mainContrastColor,this.signalColor=this.mainContrastColor,this.signalTextColor=this.mainContrastColor,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.mainContrastColor,this.loopTextColor=this.mainContrastColor,this.noteBorderColor=this.secondaryBorderColor,this.noteBkgColor=this.secondBkg,this.noteTextColor=this.secondaryTextColor,this.activationBorderColor=this.border1,this.activationBkgColor=this.secondBkg,this.altSectionBkgColor=this.background,this.taskBkgColor=fv(this.mainBkg,23),this.taskTextColor=this.darkTextColor,this.taskTextLightColor=this.mainContrastColor,this.taskTextOutsideColor=this.taskTextLightColor,this.gridColor=this.mainContrastColor,this.doneTaskBkgColor=this.mainContrastColor,this.taskTextDarkColor=this.darkTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#555",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.primaryBorderColor,this.specialStateColor="#f4f4f4",this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=sv(this.primaryColor,{h:64}),this.fillType3=sv(this.secondaryColor,{h:64}),this.fillType4=sv(this.primaryColor,{h:-64}),this.fillType5=sv(this.secondaryColor,{h:-64}),this.fillType6=sv(this.primaryColor,{h:128}),this.fillType7=sv(this.secondaryColor,{h:128}),this.pie1=this.pie1||"#0b0000",this.pie2=this.pie2||"#4d1037",this.pie3=this.pie3||"#3f5258",this.pie4=this.pie4||"#4f2f1b",this.pie5=this.pie5||"#6e0a0a",this.pie6=this.pie6||"#3b0048",this.pie7=this.pie7||"#995a01",this.pie8=this.pie8||"#154706",this.pie9=this.pie9||"#161722",this.pie10=this.pie10||"#00296f",this.pie11=this.pie11||"#01629c",this.pie12=this.pie12||"#010029",this.pieTitleTextSize=this.pieTitleTextSize||"25px",this.pieTitleTextColor=this.pieTitleTextColor||this.taskTextDarkColor,this.pieSectionTextSize=this.pieSectionTextSize||"17px",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||"17px",this.pieLegendTextColor=this.pieLegendTextColor||this.taskTextDarkColor,this.pieStrokeColor=this.pieStrokeColor||"black",this.pieStrokeWidth=this.pieStrokeWidth||"2px",this.pieOpacity=this.pieOpacity||"0.7",this.classText=this.primaryTextColor,this.requirementBackground=this.requirementBackground||this.primaryColor,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||this.primaryBorderColor,this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||(this.darkMode?hv(this.secondaryColor,30):this.secondaryColor),this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.git0=fv(this.secondaryColor,20),this.git1=fv(this.pie2||this.secondaryColor,20),this.git2=fv(this.pie3||this.tertiaryColor,20),this.git3=fv(this.pie4||sv(this.primaryColor,{h:-30}),20),this.git4=fv(this.pie5||sv(this.primaryColor,{h:-60}),20),this.git5=fv(this.pie6||sv(this.primaryColor,{h:-90}),10),this.git6=fv(this.pie7||sv(this.primaryColor,{h:60}),10),this.git7=fv(this.pie8||sv(this.primaryColor,{h:120}),20),this.gitInv0=this.gitInv0||uv(this.git0),this.gitInv1=this.gitInv1||uv(this.git1),this.gitInv2=this.gitInv2||uv(this.git2),this.gitInv3=this.gitInv3||uv(this.git3),this.gitInv4=this.gitInv4||uv(this.git4),this.gitInv5=this.gitInv5||uv(this.git5),this.gitInv6=this.gitInv6||uv(this.git6),this.gitInv7=this.gitInv7||uv(this.git7),this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor}},{key:"calculate",value:function(t){var e=this;if("object"===mv(t)){var n=Object.keys(t);n.forEach((function(n){e[n]=t[n]})),this.updateColors(),n.forEach((function(n){e[n]=t[n]}))}else this.updateColors()}}],n&&vv(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),t}();function _v(t){return _v="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},_v(t)}function xv(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}var wv=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.background="#f4f4f4",this.primaryColor="#ECECFF",this.secondaryColor=sv(this.primaryColor,{h:120}),this.secondaryColor="#ffffde",this.tertiaryColor=sv(this.primaryColor,{h:-160}),this.primaryBorderColor=dv(this.primaryColor,this.darkMode),this.secondaryBorderColor=dv(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=dv(this.tertiaryColor,this.darkMode),this.primaryTextColor=uv(this.primaryColor),this.secondaryTextColor=uv(this.secondaryColor),this.tertiaryTextColor=uv(this.tertiaryColor),this.lineColor=uv(this.background),this.textColor=uv(this.background),this.background="white",this.mainBkg="#ECECFF",this.secondBkg="#ffffde",this.lineColor="#333333",this.border1="#9370DB",this.border2="#aaaa33",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="#e8e8e8",this.textColor="#333",this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="grey",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="calculated",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="calculated",this.taskTextColor=this.taskTextLightColor,this.taskTextDarkColor="calculated",this.taskTextOutsideColor=this.taskTextDarkColor,this.taskTextClickableColor="calculated",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBorderColor="calculated",this.critBkgColor="calculated",this.todayLineColor="calculated",this.sectionBkgColor=cv(102,102,255,.49),this.altSectionBkgColor="white",this.sectionBkgColor2="#fff400",this.taskBorderColor="#534fbc",this.taskBkgColor="#8a90dd",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="#534fbc",this.activeTaskBkgColor="#bfc7ff",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222",this.updateColors()}var e,n;return e=t,n=[{key:"updateColors",value:function(){this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.titleColor=this.textColor,this.edgeLabelBackground=this.labelBackground,this.actorBorder=fv(this.border1,23),this.actorBkg=this.mainBkg,this.labelBoxBkgColor=this.actorBkg,this.signalColor=this.textColor,this.signalTextColor=this.textColor,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.actorTextColor,this.loopTextColor=this.actorTextColor,this.noteBorderColor=this.border2,this.noteTextColor=this.actorTextColor,this.taskTextColor=this.taskTextLightColor,this.taskTextOutsideColor=this.taskTextDarkColor,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#f0f0f0",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.specialStateColor=this.lineColor,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.classText=this.primaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=sv(this.primaryColor,{h:64}),this.fillType3=sv(this.secondaryColor,{h:64}),this.fillType4=sv(this.primaryColor,{h:-64}),this.fillType5=sv(this.secondaryColor,{h:-64}),this.fillType6=sv(this.primaryColor,{h:128}),this.fillType7=sv(this.secondaryColor,{h:128}),this.pie1=this.pie1||this.primaryColor,this.pie2=this.pie2||this.secondaryColor,this.pie3=this.pie3||sv(this.tertiaryColor,{l:-40}),this.pie4=this.pie4||sv(this.primaryColor,{l:-10}),this.pie5=this.pie5||sv(this.secondaryColor,{l:-30}),this.pie6=this.pie6||sv(this.tertiaryColor,{l:-20}),this.pie7=this.pie7||sv(this.primaryColor,{h:60,l:-20}),this.pie8=this.pie8||sv(this.primaryColor,{h:-60,l:-40}),this.pie9=this.pie9||sv(this.primaryColor,{h:120,l:-40}),this.pie10=this.pie10||sv(this.primaryColor,{h:60,l:-40}),this.pie11=this.pie11||sv(this.primaryColor,{h:-90,l:-40}),this.pie12=this.pie12||sv(this.primaryColor,{h:120,l:-30}),this.pieTitleTextSize=this.pieTitleTextSize||"25px",this.pieTitleTextColor=this.pieTitleTextColor||this.taskTextDarkColor,this.pieSectionTextSize=this.pieSectionTextSize||"17px",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||"17px",this.pieLegendTextColor=this.pieLegendTextColor||this.taskTextDarkColor,this.pieStrokeColor=this.pieStrokeColor||"black",this.pieStrokeWidth=this.pieStrokeWidth||"2px",this.pieOpacity=this.pieOpacity||"0.7",this.requirementBackground=this.requirementBackground||this.primaryColor,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||this.primaryBorderColor,this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||this.labelBackground,this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.git0=this.git0||this.primaryColor,this.git1=this.git1||this.secondaryColor,this.git2=this.git2||this.tertiaryColor,this.git3=this.git3||sv(this.primaryColor,{h:-30}),this.git4=this.git4||sv(this.primaryColor,{h:-60}),this.git5=this.git5||sv(this.primaryColor,{h:-90}),this.git6=this.git6||sv(this.primaryColor,{h:60}),this.git7=this.git7||sv(this.primaryColor,{h:120}),this.darkMode?(this.git0=fv(this.git0,25),this.git1=fv(this.git1,25),this.git2=fv(this.git2,25),this.git3=fv(this.git3,25),this.git4=fv(this.git4,25),this.git5=fv(this.git5,25),this.git6=fv(this.git6,25),this.git7=fv(this.git7,25)):(this.git0=hv(this.git0,25),this.git1=hv(this.git1,25),this.git2=hv(this.git2,25),this.git3=hv(this.git3,25),this.git4=hv(this.git4,25),this.git5=hv(this.git5,25),this.git6=hv(this.git6,25),this.git7=hv(this.git7,25)),this.gitInv0=this.gitInv0||hv(uv(this.git0),25),this.gitInv1=this.gitInv1||uv(this.git1),this.gitInv2=this.gitInv2||uv(this.git2),this.gitInv3=this.gitInv3||uv(this.git3),this.gitInv4=this.gitInv4||uv(this.git4),this.gitInv5=this.gitInv5||uv(this.git5),this.gitInv6=this.gitInv6||uv(this.git6),this.gitInv7=this.gitInv7||uv(this.git7),this.gitBranchLabel0=this.gitBranchLabel0||uv(this.labelTextColor),this.gitBranchLabel1=this.gitBranchLabel1||this.labelTextColor,this.gitBranchLabel2=this.gitBranchLabel2||this.labelTextColor,this.gitBranchLabel3=this.gitBranchLabel3||uv(this.labelTextColor),this.gitBranchLabel4=this.gitBranchLabel4||this.labelTextColor,this.gitBranchLabel5=this.gitBranchLabel5||this.labelTextColor,this.gitBranchLabel6=this.gitBranchLabel6||this.labelTextColor,this.gitBranchLabel7=this.gitBranchLabel7||this.labelTextColor,this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor}},{key:"calculate",value:function(t){var e=this;if("object"===_v(t)){var n=Object.keys(t);n.forEach((function(n){e[n]=t[n]})),this.updateColors(),n.forEach((function(n){e[n]=t[n]}))}else this.updateColors()}}],n&&xv(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),t}();function kv(t){return kv="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},kv(t)}function Tv(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}var Cv=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.background="#f4f4f4",this.primaryColor="#cde498",this.secondaryColor="#cdffb2",this.background="white",this.mainBkg="#cde498",this.secondBkg="#cdffb2",this.lineColor="green",this.border1="#13540c",this.border2="#6eaa49",this.arrowheadColor="green",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.tertiaryColor=fv("#cde498",10),this.primaryBorderColor=dv(this.primaryColor,this.darkMode),this.secondaryBorderColor=dv(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=dv(this.tertiaryColor,this.darkMode),this.primaryTextColor=uv(this.primaryColor),this.secondaryTextColor=uv(this.secondaryColor),this.tertiaryTextColor=uv(this.primaryColor),this.lineColor=uv(this.background),this.textColor=uv(this.background),this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#333",this.edgeLabelBackground="#e8e8e8",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="grey",this.signalColor="#333",this.signalTextColor="#333",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="#326932",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="#6eaa49",this.altSectionBkgColor="white",this.sectionBkgColor2="#6eaa49",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="#487e3a",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}var e,n;return e=t,n=[{key:"updateColors",value:function(){this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.actorBorder=hv(this.mainBkg,20),this.actorBkg=this.mainBkg,this.labelBoxBkgColor=this.actorBkg,this.labelTextColor=this.actorTextColor,this.loopTextColor=this.actorTextColor,this.noteBorderColor=this.border2,this.noteTextColor=this.actorTextColor,this.taskBorderColor=this.border1,this.taskTextColor=this.taskTextLightColor,this.taskTextOutsideColor=this.taskTextDarkColor,this.activeTaskBorderColor=this.taskBorderColor,this.activeTaskBkgColor=this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#f0f0f0",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.primaryBorderColor,this.specialStateColor=this.lineColor,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.classText=this.primaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=sv(this.primaryColor,{h:64}),this.fillType3=sv(this.secondaryColor,{h:64}),this.fillType4=sv(this.primaryColor,{h:-64}),this.fillType5=sv(this.secondaryColor,{h:-64}),this.fillType6=sv(this.primaryColor,{h:128}),this.fillType7=sv(this.secondaryColor,{h:128}),this.pie1=this.pie1||this.primaryColor,this.pie2=this.pie2||this.secondaryColor,this.pie3=this.pie3||this.tertiaryColor,this.pie4=this.pie4||sv(this.primaryColor,{l:-30}),this.pie5=this.pie5||sv(this.secondaryColor,{l:-30}),this.pie6=this.pie6||sv(this.tertiaryColor,{h:40,l:-40}),this.pie7=this.pie7||sv(this.primaryColor,{h:60,l:-10}),this.pie8=this.pie8||sv(this.primaryColor,{h:-60,l:-10}),this.pie9=this.pie9||sv(this.primaryColor,{h:120,l:0}),this.pie10=this.pie10||sv(this.primaryColor,{h:60,l:-50}),this.pie11=this.pie11||sv(this.primaryColor,{h:-60,l:-50}),this.pie12=this.pie12||sv(this.primaryColor,{h:120,l:-50}),this.pieTitleTextSize=this.pieTitleTextSize||"25px",this.pieTitleTextColor=this.pieTitleTextColor||this.taskTextDarkColor,this.pieSectionTextSize=this.pieSectionTextSize||"17px",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||"17px",this.pieLegendTextColor=this.pieLegendTextColor||this.taskTextDarkColor,this.pieStrokeColor=this.pieStrokeColor||"black",this.pieStrokeWidth=this.pieStrokeWidth||"2px",this.pieOpacity=this.pieOpacity||"0.7",this.requirementBackground=this.requirementBackground||this.primaryColor,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||this.primaryBorderColor,this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||this.edgeLabelBackground,this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.git0=this.git0||this.primaryColor,this.git1=this.git1||this.secondaryColor,this.git2=this.git2||this.tertiaryColor,this.git3=this.git3||sv(this.primaryColor,{h:-30}),this.git4=this.git4||sv(this.primaryColor,{h:-60}),this.git5=this.git5||sv(this.primaryColor,{h:-90}),this.git6=this.git6||sv(this.primaryColor,{h:60}),this.git7=this.git7||sv(this.primaryColor,{h:120}),this.darkMode?(this.git0=fv(this.git0,25),this.git1=fv(this.git1,25),this.git2=fv(this.git2,25),this.git3=fv(this.git3,25),this.git4=fv(this.git4,25),this.git5=fv(this.git5,25),this.git6=fv(this.git6,25),this.git7=fv(this.git7,25)):(this.git0=hv(this.git0,25),this.git1=hv(this.git1,25),this.git2=hv(this.git2,25),this.git3=hv(this.git3,25),this.git4=hv(this.git4,25),this.git5=hv(this.git5,25),this.git6=hv(this.git6,25),this.git7=hv(this.git7,25)),this.gitInv0=this.gitInv0||uv(this.git0),this.gitInv1=this.gitInv1||uv(this.git1),this.gitInv2=this.gitInv2||uv(this.git2),this.gitInv3=this.gitInv3||uv(this.git3),this.gitInv4=this.gitInv4||uv(this.git4),this.gitInv5=this.gitInv5||uv(this.git5),this.gitInv6=this.gitInv6||uv(this.git6),this.gitInv7=this.gitInv7||uv(this.git7),this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor}},{key:"calculate",value:function(t){var e=this;if("object"===kv(t)){var n=Object.keys(t);n.forEach((function(n){e[n]=t[n]})),this.updateColors(),n.forEach((function(n){e[n]=t[n]}))}else this.updateColors()}}],n&&Tv(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),t}();function Ev(t){return Ev="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Ev(t)}function Sv(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}var Av=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.primaryColor="#eee",this.contrast="#707070",this.secondaryColor=fv(this.contrast,55),this.background="#ffffff",this.tertiaryColor=sv(this.primaryColor,{h:-160}),this.primaryBorderColor=dv(this.primaryColor,this.darkMode),this.secondaryBorderColor=dv(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=dv(this.tertiaryColor,this.darkMode),this.primaryTextColor=uv(this.primaryColor),this.secondaryTextColor=uv(this.secondaryColor),this.tertiaryTextColor=uv(this.tertiaryColor),this.lineColor=uv(this.background),this.textColor=uv(this.background),this.mainBkg="#eee",this.secondBkg="calculated",this.lineColor="#666",this.border1="#999",this.border2="calculated",this.note="#ffa",this.text="#333",this.critical="#d42",this.done="#bbb",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="white",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="calculated",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="white",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBkgColor="calculated",this.critBorderColor="calculated",this.todayLineColor="calculated",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}var e,n;return e=t,n=[{key:"updateColors",value:function(){this.secondBkg=fv(this.contrast,55),this.border2=this.contrast,this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.titleColor=this.text,this.actorBorder=fv(this.border1,23),this.actorBkg=this.mainBkg,this.actorTextColor=this.text,this.actorLineColor=this.lineColor,this.signalColor=this.text,this.signalTextColor=this.text,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.text,this.loopTextColor=this.text,this.noteBorderColor="#999",this.noteBkgColor="#666",this.noteTextColor="#fff",this.sectionBkgColor=fv(this.contrast,30),this.sectionBkgColor2=fv(this.contrast,30),this.taskBorderColor=hv(this.contrast,10),this.taskBkgColor=this.contrast,this.taskTextColor=this.taskTextLightColor,this.taskTextDarkColor=this.text,this.taskTextOutsideColor=this.taskTextDarkColor,this.activeTaskBorderColor=this.taskBorderColor,this.activeTaskBkgColor=this.mainBkg,this.gridColor=fv(this.border1,30),this.doneTaskBkgColor=this.done,this.doneTaskBorderColor=this.lineColor,this.critBkgColor=this.critical,this.critBorderColor=hv(this.critBkgColor,10),this.todayLineColor=this.critBkgColor,this.transitionColor=this.transitionColor||"#000",this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#f4f4f4",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.stateBorder=this.stateBorder||"#000",this.innerEndBackground=this.primaryBorderColor,this.specialStateColor="#222",this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.classText=this.primaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=sv(this.primaryColor,{h:64}),this.fillType3=sv(this.secondaryColor,{h:64}),this.fillType4=sv(this.primaryColor,{h:-64}),this.fillType5=sv(this.secondaryColor,{h:-64}),this.fillType6=sv(this.primaryColor,{h:128}),this.fillType7=sv(this.secondaryColor,{h:128}),this.pie1=this.pie1||"#F4F4F4",this.pie2=this.pie2||"#555",this.pie3=this.pie3||"#BBB",this.pie4=this.pie4||"#777",this.pie5=this.pie5||"#999",this.pie6=this.pie6||"#DDD",this.pie7=this.pie7||"#FFF",this.pie8=this.pie8||"#DDD",this.pie9=this.pie9||"#BBB",this.pie10=this.pie10||"#999",this.pie11=this.pie11||"#777",this.pie12=this.pie12||"#555",this.pieTitleTextSize=this.pieTitleTextSize||"25px",this.pieTitleTextColor=this.pieTitleTextColor||this.taskTextDarkColor,this.pieSectionTextSize=this.pieSectionTextSize||"17px",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||"17px",this.pieLegendTextColor=this.pieLegendTextColor||this.taskTextDarkColor,this.pieStrokeColor=this.pieStrokeColor||"black",this.pieStrokeWidth=this.pieStrokeWidth||"2px",this.pieOpacity=this.pieOpacity||"0.7",this.requirementBackground=this.requirementBackground||this.primaryColor,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||this.primaryBorderColor,this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||this.edgeLabelBackground,this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.git0=hv(this.pie1,25)||this.primaryColor,this.git1=this.pie2||this.secondaryColor,this.git2=this.pie3||this.tertiaryColor,this.git3=this.pie4||sv(this.primaryColor,{h:-30}),this.git4=this.pie5||sv(this.primaryColor,{h:-60}),this.git5=this.pie6||sv(this.primaryColor,{h:-90}),this.git6=this.pie7||sv(this.primaryColor,{h:60}),this.git7=this.pie8||sv(this.primaryColor,{h:120}),this.gitInv0=this.gitInv0||uv(this.git0),this.gitInv1=this.gitInv1||uv(this.git1),this.gitInv2=this.gitInv2||uv(this.git2),this.gitInv3=this.gitInv3||uv(this.git3),this.gitInv4=this.gitInv4||uv(this.git4),this.gitInv5=this.gitInv5||uv(this.git5),this.gitInv6=this.gitInv6||uv(this.git6),this.gitInv7=this.gitInv7||uv(this.git7),this.branchLabelColor=this.branchLabelColor||this.labelTextColor,this.gitBranchLabel0=this.branchLabelColor,this.gitBranchLabel1="white",this.gitBranchLabel2=this.branchLabelColor,this.gitBranchLabel3="white",this.gitBranchLabel4=this.branchLabelColor,this.gitBranchLabel5=this.branchLabelColor,this.gitBranchLabel6=this.branchLabelColor,this.gitBranchLabel7=this.branchLabelColor,this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor}},{key:"calculate",value:function(t){var e=this;if("object"===Ev(t)){var n=Object.keys(t);n.forEach((function(n){e[n]=t[n]})),this.updateColors(),n.forEach((function(n){e[n]=t[n]}))}else this.updateColors()}}],n&&Sv(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),t}();const Mv={base:{getThemeVariables:function(t){var e=new yv;return e.calculate(t),e}},dark:{getThemeVariables:function(t){var e=new bv;return e.calculate(t),e}},default:{getThemeVariables:function(t){var e=new wv;return e.calculate(t),e}},forest:{getThemeVariables:function(t){var e=new Cv;return e.calculate(t),e}},neutral:{getThemeVariables:function(t){var e=new Av;return e.calculate(t),e}}};function Nv(t){return function(t){if(Array.isArray(t))return Dv(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return Dv(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Dv(t,e):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Dv(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}function Bv(t){return Bv="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Bv(t)}var Lv={theme:"default",themeVariables:Mv.default.getThemeVariables(),themeCSS:void 0,maxTextSize:5e4,darkMode:!1,fontFamily:'"trebuchet ms", verdana, arial, sans-serif;',logLevel:5,securityLevel:"strict",startOnLoad:!0,arrowMarkerAbsolute:!1,secure:["secure","securityLevel","startOnLoad","maxTextSize"],deterministicIds:!1,deterministicIDSeed:void 0,flowchart:{diagramPadding:8,htmlLabels:!0,nodeSpacing:50,rankSpacing:50,curve:"basis",padding:15,useMaxWidth:!0,defaultRenderer:"dagre-d3"},sequence:{hideUnusedParticipants:!1,activationWidth:10,diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",mirrorActors:!0,forceMenus:!1,bottomMarginAdj:1,useMaxWidth:!0,rightAngles:!1,showSequenceNumbers:!1,actorFontSize:14,actorFontFamily:'"Open Sans", sans-serif',actorFontWeight:400,noteFontSize:14,noteFontFamily:'"trebuchet ms", verdana, arial, sans-serif',noteFontWeight:400,noteAlign:"center",messageFontSize:16,messageFontFamily:'"trebuchet ms", verdana, arial, sans-serif',messageFontWeight:400,wrap:!1,wrapPadding:10,labelBoxWidth:50,labelBoxHeight:20,messageFont:function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},noteFont:function(){return{fontFamily:this.noteFontFamily,fontSize:this.noteFontSize,fontWeight:this.noteFontWeight}},actorFont:function(){return{fontFamily:this.actorFontFamily,fontSize:this.actorFontSize,fontWeight:this.actorFontWeight}}},gantt:{titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,rightPadding:75,leftPadding:75,gridLineStartPadding:35,fontSize:11,sectionFontSize:11,numberSectionStyles:4,axisFormat:"%Y-%m-%d",useMaxWidth:!0,topAxis:!1,useWidth:void 0},journey:{diagramMarginX:50,diagramMarginY:10,leftMargin:150,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,useMaxWidth:!0,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"]},class:{arrowMarkerAbsolute:!1,useMaxWidth:!0,defaultRenderer:"dagre-wrapper"},state:{dividerMargin:10,sizeUnit:5,padding:8,textHeight:10,titleShift:-15,noteMargin:10,forkWidth:70,forkHeight:7,miniPadding:2,fontSizeFactor:5.02,fontSize:24,labelHeight:16,edgeLengthFactor:"20",compositTitleSize:35,radius:5,useMaxWidth:!0,defaultRenderer:"dagre-wrapper"},er:{diagramPadding:20,layoutDirection:"TB",minEntityWidth:100,minEntityHeight:75,entityPadding:15,stroke:"gray",fill:"honeydew",fontSize:12,useMaxWidth:!0},pie:{useWidth:void 0,useMaxWidth:!0},requirement:{useWidth:void 0,useMaxWidth:!0,rect_fill:"#f9f9f9",text_color:"#333",rect_border_size:"0.5px",rect_border_color:"#bbb",rect_min_width:200,rect_min_height:200,fontSize:14,rect_padding:10,line_height:20},gitGraph:{diagramPadding:8,nodeLabel:{width:75,height:100,x:-25,y:0},mainBranchName:"main",mainBranchOrder:0,showCommitLabel:!0,showBranches:!0}};Lv.class.arrowMarkerAbsolute=Lv.arrowMarkerAbsolute,Lv.gitGraph.arrowMarkerAbsolute=Lv.arrowMarkerAbsolute;var Ov=function t(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return Object.keys(e).reduce((function(r,i){return Array.isArray(e[i])?r:"object"===Bv(e[i])&&null!==e[i]?[].concat(Nv(r),[n+i],Nv(t(e[i],""))):[].concat(Nv(r),[n+i])}),[])}(Lv,"");const Iv=Lv;var Rv=void 0;function Fv(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function Pv(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=Uv(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,s=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return o=t.done,t},e:function(t){s=!0,a=t},f:function(){try{o||null==n.return||n.return()}finally{if(s)throw a}}}}function Yv(t){return Yv="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Yv(t)}function jv(t){return function(t){if(Array.isArray(t))return zv(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||Uv(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Uv(t,e){if(t){if("string"==typeof t)return zv(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?zv(t,e):void 0}}function zv(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}var $v,qv={curveBasis:Vu,curveBasisClosed:function(t){return new Gu(t)},curveBasisOpen:function(t){return new Xu(t)},curveLinear:Pu,curveLinearClosed:function(t){return new Zu(t)},curveMonotoneX:function(t){return new el(t)},curveMonotoneY:function(t){return new nl(t)},curveNatural:function(t){return new il(t)},curveStep:function(t){return new ol(t,.5)},curveStepAfter:function(t){return new ol(t,1)},curveStepBefore:function(t){return new ol(t,0)}},Hv=/[%]{2}[{]\s*(?:(?:(\w+)\s*:|(\w+))\s*(?:(?:(\w+))|((?:(?![}][%]{2}).|\r?\n)*))?\s*)(?:[}][%]{2})?/gi,Wv=/\s*(?:(?:(\w+)(?=:):|(\w+))\s*(?:(?:(\w+))|((?:(?![}][%]{2}).|\r?\n)*))?\s*)(?:[}][%]{2})?/gi,Vv=/\s*%%.*\n/gm,Gv=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;try{var n=new RegExp("[%]{2}(?![{]".concat(Wv.source,")(?=[}][%]{2}).*\n"),"ig");t=t.trim().replace(n,"").replace(/'/gm,'"'),o.debug("Detecting diagram directive".concat(null!==e?" type:"+e:""," based on the text:").concat(t));for(var r,i=[];null!==(r=Hv.exec(t));)if(r.index===Hv.lastIndex&&Hv.lastIndex++,r&&!e||e&&r[1]&&r[1].match(e)||e&&r[2]&&r[2].match(e)){var a=r[1]?r[1]:r[2],s=r[3]?r[3].trim():r[4]?JSON.parse(r[4].trim()):null;i.push({type:a,args:s})}return 0===i.length&&i.push({type:t,args:null}),1===i.length?i[0]:i}catch(n){return o.error("ERROR: ".concat(n.message," - Unable to parse directive\n ").concat(null!==e?" type:"+e:""," based on the text:").concat(t)),{type:null,args:null}}},Xv=function(t,e){return(t=t.replace(Hv,"").replace(Vv,"\n")).match(/^\s*sequenceDiagram/)?"sequence":t.match(/^\s*gantt/)?"gantt":t.match(/^\s*classDiagram-v2/)?"classDiagram":t.match(/^\s*classDiagram/)?e&&e.class&&"dagre-wrapper"===e.class.defaultRenderer?"classDiagram":"class":t.match(/^\s*stateDiagram-v2/)?"stateDiagram":t.match(/^\s*stateDiagram/)?e&&e.class&&"dagre-wrapper"===e.state.defaultRenderer?"stateDiagram":"state":t.match(/^\s*gitGraph/)?"gitGraph":t.match(/^\s*flowchart/)?"flowchart-v2":t.match(/^\s*info/)?"info":t.match(/^\s*pie/)?"pie":t.match(/^\s*erDiagram/)?"er":t.match(/^\s*journey/)?"journey":t.match(/^\s*requirement/)||t.match(/^\s*requirementDiagram/)?"requirement":e&&e.flowchart&&"dagre-wrapper"===e.flowchart.defaultRenderer?"flowchart-v2":"flowchart"},Zv=function(t,e){var n={};return function(){for(var r=arguments.length,i=new Array(r),a=0;a<r;a++)i[a]=arguments[a];var o=e?e.apply(Rv,i):i[0];if(o in n)return n[o];var s=t.apply(void 0,i);return n[o]=s,s}},Qv=function(t,e){if(!t)return e;var n="curve".concat(t.charAt(0).toUpperCase()+t.slice(1));return qv[n]||e},Kv=function(t,e){return t&&e?Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2)):0},Jv=function(t){for(var e="",n="",r=0;r<t.length;r++)void 0!==t[r]&&(t[r].startsWith("color:")||t[r].startsWith("text-align:")?n=n+t[r]+";":e=e+t[r]+";");return{style:e,labelStyle:n}},tb=0,eb=function(){return tb++,"id-"+Math.random().toString(36).substr(2,12)+"-"+tb},nb=function(t){return function(t){for(var e="",n="0123456789abcdef",r=n.length,i=0;i<t;i++)e+=n.charAt(Math.floor(Math.random()*r));return e}(t.length)},rb=function t(e,n,r){var i=Object.assign({depth:2,clobber:!1},r),a=i.depth,o=i.clobber;return Array.isArray(n)&&!Array.isArray(e)?(n.forEach((function(n){return t(e,n,r)})),e):Array.isArray(n)&&Array.isArray(e)?(n.forEach((function(t){-1===e.indexOf(t)&&e.push(t)})),e):void 0===e||a<=0?null!=e&&"object"===Yv(e)&&"object"===Yv(n)?Object.assign(e,n):n:(void 0!==n&&"object"===Yv(e)&&"object"===Yv(n)&&Object.keys(n).forEach((function(r){"object"!==Yv(n[r])||void 0!==e[r]&&"object"!==Yv(e[r])?(o||"object"!==Yv(e[r])&&"object"!==Yv(n[r]))&&(e[r]=n[r]):(void 0===e[r]&&(e[r]=Array.isArray(n[r])?[]:{}),e[r]=t(e[r],n[r],{depth:a-1,clobber:o}))})),e)},ib=function(t,e){var n=e.text.replace($m.lineBreakRegex," "),r=t.append("text");r.attr("x",e.x),r.attr("y",e.y),r.style("text-anchor",e.anchor),r.style("font-family",e.fontFamily),r.style("font-size",e.fontSize),r.style("font-weight",e.fontWeight),r.attr("fill",e.fill),void 0!==e.class&&r.attr("class",e.class);var i=r.append("tspan");return i.attr("x",e.x+2*e.textMargin),i.attr("fill",e.fill),i.text(n),r},ab=Zv((function(t,e,n){if(!t)return t;if(n=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",joinWith:"<br/>"},n),$m.lineBreakRegex.test(t))return t;var r=t.split(" "),i=[],a="";return r.forEach((function(t,o){var s=sb("".concat(t," "),n),c=sb(a,n);if(s>e){var u=ob(t,e,"-",n),l=u.hyphenatedStrings,h=u.remainingWord;i.push.apply(i,[a].concat(jv(l))),a=h}else c+s>=e?(i.push(a),a=t):a=[a,t].filter(Boolean).join(" ");o+1===r.length&&i.push(a)})),i.filter((function(t){return""!==t})).join(n.joinWith)}),(function(t,e,n){return"".concat(t,"-").concat(e,"-").concat(n.fontSize,"-").concat(n.fontWeight,"-").concat(n.fontFamily,"-").concat(n.joinWith)})),ob=Zv((function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"-",r=arguments.length>3?arguments[3]:void 0;r=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",margin:0},r);var i=t.split(""),a=[],o="";return i.forEach((function(t,s){var c="".concat(o).concat(t);if(sb(c,r)>=e){var u=s+1,l=i.length===u,h="".concat(c).concat(n);a.push(l?c:h),o=""}else o=c})),{hyphenatedStrings:a,remainingWord:o}}),(function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"-",r=arguments.length>3?arguments[3]:void 0;return"".concat(t,"-").concat(e,"-").concat(n,"-").concat(r.fontSize,"-").concat(r.fontWeight,"-").concat(r.fontFamily)})),sb=function(t,e){return e=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial"},e),cb(t,e).width},cb=Zv((function(t,e){var n=e=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial"},e),r=n.fontSize,i=n.fontFamily,a=n.fontWeight;if(!t)return{width:0,height:0};var o=["sans-serif",i],s=t.split($m.lineBreakRegex),c=[],u=au("body");if(!u.remove)return{width:0,height:0,lineHeight:0};for(var l=u.append("svg"),h=0,f=o;h<f.length;h++){var d,p=f[h],g=0,y={width:0,height:0,lineHeight:0},m=Pv(s);try{for(m.s();!(d=m.n()).done;){var v=d.value,b={x:0,y:0,fill:void 0,anchor:"start",style:"#666",width:100,height:100,textMargin:0,rx:0,ry:0,valign:void 0};b.text=v;var _=ib(l,b).style("font-size",r).style("font-weight",a).style("font-family",p),x=(_._groups||_)[0][0].getBBox();y.width=Math.round(Math.max(y.width,x.width)),g=Math.round(x.height),y.height+=g,y.lineHeight=Math.round(Math.max(y.lineHeight,g))}}catch(t){m.e(t)}finally{m.f()}c.push(y)}return l.remove(),c[isNaN(c[1].height)||isNaN(c[1].width)||isNaN(c[1].lineHeight)||c[0].height>c[1].height&&c[0].width>c[1].width&&c[0].lineHeight>c[1].lineHeight?0:1]}),(function(t,e){return"".concat(t,"-").concat(e.fontSize,"-").concat(e.fontWeight,"-").concat(e.fontFamily)})),ub=function(t,e,n){var r=new Map;return r.set("height",t),n?(r.set("width","100%"),r.set("style","max-width: ".concat(e,"px;"))):r.set("width",e),r},lb=function(t,e,n,r){!function(t,e){var n,r=Pv(e);try{for(r.s();!(n=r.n()).done;){var i=n.value;t.attr(i[0],i[1])}}catch(t){r.e(t)}finally{r.f()}}(t,ub(e,n,r))},hb=function t(e){o.debug("directiveSanitizer called with",e),"object"===Yv(e)&&(e.length?e.forEach((function(e){return t(e)})):Object.keys(e).forEach((function(n){o.debug("Checking key",n),0===n.indexOf("__")&&(o.debug("sanitize deleting __ option",n),delete e[n]),n.indexOf("proto")>=0&&(o.debug("sanitize deleting proto option",n),delete e[n]),n.indexOf("constr")>=0&&(o.debug("sanitize deleting constr option",n),delete e[n]),n.indexOf("themeCSS")>=0&&(o.debug("sanitizing themeCss option"),e[n]=fb(e[n])),Ov.indexOf(n)<0?(o.debug("sanitize deleting option",n),delete e[n]):"object"===Yv(e[n])&&(o.debug("sanitize deleting object",n),t(e[n]))})))},fb=function(t){return(t.match(/\{/g)||[]).length!==(t.match(/\}/g)||[]).length?"{ /* ERROR: Unbalanced CSS */ }":t};const db={assignWithDepth:rb,wrapLabel:ab,calculateTextHeight:function(t,e){return e=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",margin:15},e),cb(t,e).height},calculateTextWidth:sb,calculateTextDimensions:cb,calculateSvgSizeAttrs:ub,configureSvgSize:lb,detectInit:function(t,e){var n=Gv(t,/(?:init\b)|(?:initialize\b)/),r={};if(Array.isArray(n)){var i=n.map((function(t){return t.args}));hb(i),r=rb(r,jv(i))}else r=n.args;if(r){var a=Xv(t,e);["config"].forEach((function(t){void 0!==r[t]&&("flowchart-v2"===a&&(a="flowchart"),r[a]=r[t],delete r[t])}))}return r},detectDirective:Gv,detectType:Xv,isSubstringInArray:function(t,e){for(var n=0;n<e.length;n++)if(e[n].match(t))return n;return-1},interpolateToCurve:Qv,calcLabelPosition:function(t){return function(t){var e,n=0;t.forEach((function(t){n+=Kv(t,e),e=t}));var r=n/2,i=void 0;return e=void 0,t.forEach((function(t){if(e&&!i){var n=Kv(t,e);if(n<r)r-=n;else{var a=r/n;a<=0&&(i=e),a>=1&&(i={x:t.x,y:t.y}),a>0&&a<1&&(i={x:(1-a)*e.x+a*t.x,y:(1-a)*e.y+a*t.y})}}e=t})),i}(t)},calcCardinalityPosition:function(t,e,n){var r;o.info("our points",e),e[0]!==n&&(e=e.reverse()),e.forEach((function(t){Kv(t,r),r=t}));var i,a=25;r=void 0,e.forEach((function(t){if(r&&!i){var e=Kv(t,r);if(e<a)a-=e;else{var n=a/e;n<=0&&(i=r),n>=1&&(i={x:t.x,y:t.y}),n>0&&n<1&&(i={x:(1-n)*r.x+n*t.x,y:(1-n)*r.y+n*t.y})}}r=t}));var s=t?10:5,c=Math.atan2(e[0].y-i.y,e[0].x-i.x),u={x:0,y:0};return u.x=Math.sin(c)*s+(e[0].x+i.x)/2,u.y=-Math.cos(c)*s+(e[0].y+i.y)/2,u},calcTerminalLabelPosition:function(t,e,n){var r,i=JSON.parse(JSON.stringify(n));o.info("our points",i),"start_left"!==e&&"start_right"!==e&&(i=i.reverse()),i.forEach((function(t){Kv(t,r),r=t}));var a,s=25+t;r=void 0,i.forEach((function(t){if(r&&!a){var e=Kv(t,r);if(e<s)s-=e;else{var n=s/e;n<=0&&(a=r),n>=1&&(a={x:t.x,y:t.y}),n>0&&n<1&&(a={x:(1-n)*r.x+n*t.x,y:(1-n)*r.y+n*t.y})}}r=t}));var c=10+.5*t,u=Math.atan2(i[0].y-a.y,i[0].x-a.x),l={x:0,y:0};return l.x=Math.sin(u)*c+(i[0].x+a.x)/2,l.y=-Math.cos(u)*c+(i[0].y+a.y)/2,"start_left"===e&&(l.x=Math.sin(u+Math.PI)*c+(i[0].x+a.x)/2,l.y=-Math.cos(u+Math.PI)*c+(i[0].y+a.y)/2),"end_right"===e&&(l.x=Math.sin(u-Math.PI)*c+(i[0].x+a.x)/2-5,l.y=-Math.cos(u-Math.PI)*c+(i[0].y+a.y)/2-5),"end_left"===e&&(l.x=Math.sin(u)*c+(i[0].x+a.x)/2-5,l.y=-Math.cos(u)*c+(i[0].y+a.y)/2-5),l},formatUrl:function(t,e){var n=t.trim();if(n)return"loose"!==e.securityLevel?(0,Bm.N)(n):n},getStylesFromArray:Jv,generateId:eb,random:nb,memoize:Zv,runFunc:function(t){for(var e,n=t.split("."),r=n.length-1,i=n[r],a=window,o=0;o<r;o++)if(!(a=a[n[o]]))return;for(var s=arguments.length,c=new Array(s>1?s-1:0),u=1;u<s;u++)c[u-1]=arguments[u];(e=a)[i].apply(e,c)},entityDecode:function(t){return $v=$v||document.createElement("div"),t=escape(t).replace(/%26/g,"&").replace(/%23/g,"#").replace(/%3B/g,";"),$v.innerHTML=t,unescape($v.textContent)},initIdGeneratior:function(){function t(e,n){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.deterministic=e,this.seed=n,this.count=n?n.length:0}var e,n;return e=t,(n=[{key:"next",value:function(){return this.deterministic?this.count++:Date.now()}}])&&Fv(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),t}(),directiveSanitizer:hb,sanitizeCss:fb};function pb(t){return pb="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},pb(t)}var gb,yb=Object.freeze(Iv),mb=rb({},yb),vb=[],bb=rb({},yb),_b=function(t,e){for(var n=rb({},t),r={},i=0;i<e.length;i++){var a=e[i];kb(a),r=rb(r,a)}if(n=rb(n,r),r.theme&&Mv[r.theme]){var o=rb({},gb),s=rb(o.themeVariables||{},r.themeVariables);n.themeVariables=Mv[n.theme].getThemeVariables(s)}return bb=n,n},xb=function(){return rb({},mb)},wb=function(){return rb({},bb)},kb=function t(e){Object.keys(mb.secure).forEach((function(t){void 0!==e[mb.secure[t]]&&(o.debug("Denied attempt to modify a secure key ".concat(mb.secure[t]),e[mb.secure[t]]),delete e[mb.secure[t]])})),Object.keys(e).forEach((function(t){0===t.indexOf("__")&&delete e[t]})),Object.keys(e).forEach((function(n){"string"==typeof e[n]&&(e[n].indexOf("<")>-1||e[n].indexOf(">")>-1||e[n].indexOf("url(data:")>-1)&&delete e[n],"object"===pb(e[n])&&t(e[n])}))},Tb=function(t){t.fontFamily&&(t.themeVariables&&t.themeVariables.fontFamily||(t.themeVariables={fontFamily:t.fontFamily})),vb.push(t),_b(mb,vb)},Cb=function(){_b(mb,vb=[])},Eb="",Sb="",Ab=function(t){return Pm(t,wb())},Mb=function(){Eb="",Sb=""},Nb=function(t){Eb=Ab(t).replace(/^\s+/g,"")},Db=function(){return Eb},Bb=function(t){Sb=Ab(t).replace(/\n\s+/g,"\n")},Lb=function(){return Sb};function Ob(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}var Ib="classid-",Rb=[],Fb={},Pb=0,Yb=[],jb=function(t){return $m.sanitizeText(t,wb())},Ub=function(t){var e="",n=t;if(t.indexOf("~")>0){var r=t.split("~");n=r[0],e=$m.sanitizeText(r[1],wb())}return{className:n,type:e}},zb=function(t){var e=Ub(t);void 0===Fb[e.className]&&(Fb[e.className]={id:e.className,type:e.type,cssClasses:[],methods:[],members:[],annotations:[],domId:Ib+e.className+"-"+Pb},Pb++)},$b=function(t){for(var e=Object.keys(Fb),n=0;n<e.length;n++)if(Fb[e[n]].id===t)return Fb[e[n]].domId},qb=function(t,e){console.log(t,e);var n=Ub(t).className,r=Fb[n];if("string"==typeof e){var i=e.trim();i.startsWith("<<")&&i.endsWith(">>")?r.annotations.push(jb(i.substring(2,i.length-2))):i.indexOf(")")>0?r.methods.push(jb(i)):i&&r.members.push(jb(i))}},Hb=function(t,e){t.split(",").forEach((function(t){var n=t;t[0].match(/\d/)&&(n=Ib+n),void 0!==Fb[n]&&Fb[n].cssClasses.push(e)}))},Wb=function(t,e,n){var r=wb(),i=t,a=$b(i);if("loose"===r.securityLevel&&void 0!==e&&void 0!==Fb[i]){var o=[];if("string"==typeof n){o=n.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(var s=0;s<o.length;s++){var c=o[s].trim();'"'===c.charAt(0)&&'"'===c.charAt(c.length-1)&&(c=c.substr(1,c.length-2)),o[s]=c}}0===o.length&&o.push(a),Yb.push((function(){var t=document.querySelector('[id="'.concat(a,'"]'));null!==t&&t.addEventListener("click",(function(){var t;db.runFunc.apply(db,[e].concat(function(t){if(Array.isArray(t))return Ob(t)}(t=o)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return Ob(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Ob(t,e):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()))}),!1)}))}},Vb={AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3},Gb=function(t){var e=au(".mermaidTooltip");null===(e._groups||e)[0][0]&&(e=au("body").append("div").attr("class","mermaidTooltip").style("opacity",0)),au(t).select("svg").selectAll("g.node").on("mouseover",(function(){var t=au(this);if(null!==t.attr("title")){var n=this.getBoundingClientRect();e.transition().duration(200).style("opacity",".9"),e.text(t.attr("title")).style("left",window.scrollX+n.left+(n.right-n.left)/2+"px").style("top",window.scrollY+n.top-14+document.body.scrollTop+"px"),t.classed("hover",!0)}})).on("mouseout",(function(){e.transition().duration(500).style("opacity",0),au(this).classed("hover",!1)}))};Yb.push(Gb);var Xb="TB";const Zb={parseDirective:function(t,e,n){UE.parseDirective(this,t,e,n)},setTitle:Nb,getTitle:Db,getAccDescription:Lb,setAccDescription:Bb,getConfig:function(){return wb().class},addClass:zb,bindFunctions:function(t){Yb.forEach((function(e){e(t)}))},clear:function(){Rb=[],Fb={},(Yb=[]).push(Gb),Mb()},getClass:function(t){return Fb[t]},getClasses:function(){return Fb},addAnnotation:function(t,e){var n=Ub(t).className;Fb[n].annotations.push(e)},getRelations:function(){return Rb},addRelation:function(t){o.debug("Adding relation: "+JSON.stringify(t)),zb(t.id1),zb(t.id2),t.id1=Ub(t.id1).className,t.id2=Ub(t.id2).className,t.relationTitle1=$m.sanitizeText(t.relationTitle1.trim(),wb()),t.relationTitle2=$m.sanitizeText(t.relationTitle2.trim(),wb()),Rb.push(t)},getDirection:function(){return Xb},setDirection:function(t){Xb=t},addMember:qb,addMembers:function(t,e){Array.isArray(e)&&(e.reverse(),e.forEach((function(e){return qb(t,e)})))},cleanupLabel:function(t){return":"===t.substring(0,1)?$m.sanitizeText(t.substr(1).trim(),wb()):jb(t.trim())},lineType:{LINE:0,DOTTED_LINE:1},relationType:Vb,setClickEvent:function(t,e,n){t.split(",").forEach((function(t){Wb(t,e,n),Fb[t].haveCallback=!0})),Hb(t,"clickable")},setCssClass:Hb,setLink:function(t,e,n){var r=wb();t.split(",").forEach((function(t){var i=t;t[0].match(/\d/)&&(i=Ib+i),void 0!==Fb[i]&&(Fb[i].link=db.formatUrl(e,r),"sandbox"===r.securityLevel?Fb[i].linkTarget="_top":Fb[i].linkTarget="string"==typeof n?jb(n):"_blank")})),Hb(t,"clickable")},setTooltip:function(t,e){var n=wb();t.split(",").forEach((function(t){void 0!==e&&(Fb[t].tooltip=$m.sanitizeText(e,n))}))},lookUpDomId:$b};var Qb=n(681),Kb=n.n(Qb),Jb=n(8282),t_=n.n(Jb),e_=n(1362),n_=n.n(e_),r_=0,i_=function(t){var e=t.match(/^(\+|-|~|#)?(\w+)(~\w+~|\[\])?\s+(\w+) *(\*|\$)?$/),n=t.match(/^([+|\-|~|#])?(\w+) *\( *(.*)\) *(\*|\$)? *(\w*[~|[\]]*\s*\w*~?)$/);return e&&!n?a_(e):n?o_(n):s_(t)},a_=function(t){var e="",n="";try{var r=t[1]?t[1].trim():"",i=t[2]?t[2].trim():"",a=t[3]?u_(t[3].trim()):"",o=t[4]?t[4].trim():"",s=t[5]?t[5].trim():"";n=r+i+a+" "+o,e=l_(s)}catch(e){n=t}return{displayText:n,cssStyle:e}},o_=function(t){var e="",n="";try{var r=t[1]?t[1].trim():"",i=t[2]?t[2].trim():"",a=t[3]?u_(t[3].trim()):"",o=t[4]?t[4].trim():"";n=r+i+"("+a+")"+(t[5]?" : "+u_(t[5]).trim():""),e=l_(o)}catch(e){n=t}return{displayText:n,cssStyle:e}},s_=function(t){var e="",n="",r="",i=t.indexOf("("),a=t.indexOf(")");if(i>1&&a>i&&a<=t.length){var o="",s="",c=t.substring(0,1);c.match(/\w/)?s=t.substring(0,i).trim():(c.match(/\+|-|~|#/)&&(o=c),s=t.substring(1,i).trim());var u=t.substring(i+1,a),l=t.substring(a+1,1);n=l_(l),e=o+s+"("+u_(u.trim())+")",a<"".length&&""!==(r=t.substring(a+2).trim())&&(r=" : "+u_(r))}else e=u_(t);return{displayText:e,cssStyle:n}},c_=function(t,e,n,r){var i=i_(e),a=t.append("tspan").attr("x",r.padding).text(i.displayText);""!==i.cssStyle&&a.attr("style",i.cssStyle),n||a.attr("dy",r.textHeight)},u_=function t(e){var n=e;return-1!=e.indexOf("~")?t(n=(n=n.replace("~","<")).replace("~",">")):n},l_=function(t){switch(t){case"*":return"font-style:italic;";case"$":return"text-decoration:underline;";default:return""}};const h_=function(t,e,n){o.info("Rendering class "+e);var r,i=e.id,a={id:i,label:e.id,width:0,height:0},s=t.append("g").attr("id",$b(i)).attr("class","classGroup");r=e.link?s.append("svg:a").attr("xlink:href",e.link).attr("target",e.linkTarget).append("text").attr("y",n.textHeight+n.padding).attr("x",0):s.append("text").attr("y",n.textHeight+n.padding).attr("x",0);var c=!0;e.annotations.forEach((function(t){var e=r.append("tspan").text("«"+t+"»");c||e.attr("dy",n.textHeight),c=!1}));var u=e.id;void 0!==e.type&&""!==e.type&&(u+="<"+e.type+">");var l=r.append("tspan").text(u).attr("class","title");c||l.attr("dy",n.textHeight);var h=r.node().getBBox().height,f=s.append("line").attr("x1",0).attr("y1",n.padding+h+n.dividerMargin/2).attr("y2",n.padding+h+n.dividerMargin/2),d=s.append("text").attr("x",n.padding).attr("y",h+n.dividerMargin+n.textHeight).attr("fill","white").attr("class","classText");c=!0,e.members.forEach((function(t){c_(d,t,c,n),c=!1}));var p=d.node().getBBox(),g=s.append("line").attr("x1",0).attr("y1",n.padding+h+n.dividerMargin+p.height).attr("y2",n.padding+h+n.dividerMargin+p.height),y=s.append("text").attr("x",n.padding).attr("y",h+2*n.dividerMargin+p.height+n.textHeight).attr("fill","white").attr("class","classText");c=!0,e.methods.forEach((function(t){c_(y,t,c,n),c=!1}));var m=s.node().getBBox(),v=" ";e.cssClasses.length>0&&(v+=e.cssClasses.join(" "));var b=s.insert("rect",":first-child").attr("x",0).attr("y",0).attr("width",m.width+2*n.padding).attr("height",m.height+n.padding+.5*n.dividerMargin).attr("class",v).node().getBBox().width;return r.node().childNodes.forEach((function(t){t.setAttribute("x",(b-t.getBBox().width)/2)})),e.tooltip&&r.insert("title").text(e.tooltip),f.attr("x2",b),g.attr("x2",b),a.width=b,a.height=m.height+n.padding+.5*n.dividerMargin,a};function f_(t,e,n){if(void 0!==e.insert){var r=t.getTitle(),i=t.getAccDescription();e.attr("role","img").attr("aria-labelledby","chart-title-"+n+" chart-desc-"+n),e.insert("desc",":first-child").attr("id","chart-desc-"+n).text(i),e.insert("title",":first-child").attr("id","chart-title-"+n).text(r)}}e_.parser.yy=Zb;var d_={},p_={dividerMargin:10,padding:5,textHeight:10},g_=function(t){var e=Object.entries(d_).find((function(e){return e[1].label===t}));if(e)return e[0]};const y_=function(t){Object.keys(t).forEach((function(e){p_[e]=t[e]}))},m_=function(t,e){d_={},e_.parser.yy.clear(),e_.parser.parse(t),o.info("Rendering diagram "+t);var n,r=wb().securityLevel;"sandbox"===r&&(n=au("#i"+e));var i,a=au("sandbox"===r?n.nodes()[0].contentDocument.body:"body"),s=("sandbox"===r?n.nodes()[0].contentDocument:document,a.select("[id='".concat(e,"']")));s.attr("xmlns:xlink","http://www.w3.org/1999/xlink"),(i=s).append("defs").append("marker").attr("id","extensionStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),i.append("defs").append("marker").attr("id","extensionEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z"),i.append("defs").append("marker").attr("id","compositionStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id","compositionEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id","aggregationStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id","aggregationEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id","dependencyStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id","dependencyEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z");var c=new(t_().Graph)({multigraph:!0});c.setGraph({isMultiGraph:!0}),c.setDefaultEdgeLabel((function(){return{}}));for(var u=Zb.getClasses(),l=Object.keys(u),h=0;h<l.length;h++){var f=u[l[h]],d=h_(s,f,p_);d_[d.id]=d,c.setNode(d.id,d),o.info("Org height: "+d.height)}Zb.getRelations().forEach((function(t){o.info("tjoho"+g_(t.id1)+g_(t.id2)+JSON.stringify(t)),c.setEdge(g_(t.id1),g_(t.id2),{relation:t},t.title||"DEFAULT")})),Kb().layout(c),c.nodes().forEach((function(t){void 0!==t&&void 0!==c.node(t)&&(o.debug("Node "+t+": "+JSON.stringify(c.node(t))),a.select("#"+$b(t)).attr("transform","translate("+(c.node(t).x-c.node(t).width/2)+","+(c.node(t).y-c.node(t).height/2)+" )"))})),c.edges().forEach((function(t){void 0!==t&&void 0!==c.edge(t)&&(o.debug("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(c.edge(t))),function(t,e,n,r){var i=function(t){switch(t){case Vb.AGGREGATION:return"aggregation";case Vb.EXTENSION:return"extension";case Vb.COMPOSITION:return"composition";case Vb.DEPENDENCY:return"dependency"}};e.points=e.points.filter((function(t){return!Number.isNaN(t.y)}));var a,s,c=e.points,u=Uu().x((function(t){return t.x})).y((function(t){return t.y})).curve(Vu),l=t.append("path").attr("d",u(c)).attr("id","edge"+r_).attr("class","relation"),h="";r.arrowMarkerAbsolute&&(h=(h=(h=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search).replace(/\(/g,"\\(")).replace(/\)/g,"\\)")),1==n.relation.lineType&&l.attr("class","relation dashed-line"),"none"!==n.relation.type1&&l.attr("marker-start","url("+h+"#"+i(n.relation.type1)+"Start)"),"none"!==n.relation.type2&&l.attr("marker-end","url("+h+"#"+i(n.relation.type2)+"End)");var f,d,p,g,y=e.points.length,m=db.calcLabelPosition(e.points);if(a=m.x,s=m.y,y%2!=0&&y>1){var v=db.calcCardinalityPosition("none"!==n.relation.type1,e.points,e.points[0]),b=db.calcCardinalityPosition("none"!==n.relation.type2,e.points,e.points[y-1]);o.debug("cardinality_1_point "+JSON.stringify(v)),o.debug("cardinality_2_point "+JSON.stringify(b)),f=v.x,d=v.y,p=b.x,g=b.y}if(void 0!==n.title){var _=t.append("g").attr("class","classLabel"),x=_.append("text").attr("class","label").attr("x",a).attr("y",s).attr("fill","red").attr("text-anchor","middle").text(n.title);window.label=x;var w=x.node().getBBox();_.insert("rect",":first-child").attr("class","box").attr("x",w.x-r.padding/2).attr("y",w.y-r.padding/2).attr("width",w.width+r.padding).attr("height",w.height+r.padding)}o.info("Rendering relation "+JSON.stringify(n)),void 0!==n.relationTitle1&&"none"!==n.relationTitle1&&t.append("g").attr("class","cardinality").append("text").attr("class","type1").attr("x",f).attr("y",d).attr("fill","black").attr("font-size","6").text(n.relationTitle1),void 0!==n.relationTitle2&&"none"!==n.relationTitle2&&t.append("g").attr("class","cardinality").append("text").attr("class","type2").attr("x",p).attr("y",g).attr("fill","black").attr("font-size","6").text(n.relationTitle2),r_++}(s,c.edge(t),c.edge(t).relation,p_))}));var p=s.node().getBBox(),g=p.width+40,y=p.height+40;lb(s,y,g,p_.useMaxWidth);var m="".concat(p.x-20," ").concat(p.y-20," ").concat(g," ").concat(y);o.debug("viewBox ".concat(m)),s.attr("viewBox",m),f_(e_.parser.yy,s,e)};var v_={extension:function(t,e,n){o.trace("Making markers for ",n),t.append("defs").append("marker").attr("id",e+"-extensionStart").attr("class","marker extension "+e).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),t.append("defs").append("marker").attr("id",e+"-extensionEnd").attr("class","marker extension "+e).attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z")},composition:function(t,e){t.append("defs").append("marker").attr("id",e+"-compositionStart").attr("class","marker composition "+e).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",e+"-compositionEnd").attr("class","marker composition "+e).attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},aggregation:function(t,e){t.append("defs").append("marker").attr("id",e+"-aggregationStart").attr("class","marker aggregation "+e).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",e+"-aggregationEnd").attr("class","marker aggregation "+e).attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},dependency:function(t,e){t.append("defs").append("marker").attr("id",e+"-dependencyStart").attr("class","marker dependency "+e).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",e+"-dependencyEnd").attr("class","marker dependency "+e).attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},point:function(t,e){t.append("marker").attr("id",e+"-pointEnd").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",e+"-pointStart").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",0).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 5 L 10 10 L 10 0 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},circle:function(t,e){t.append("marker").attr("id",e+"-circleEnd").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",11).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",e+"-circleStart").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",-1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},cross:function(t,e){t.append("marker").attr("id",e+"-crossEnd").attr("class","marker cross "+e).attr("viewBox","0 0 11 11").attr("refX",12).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),t.append("marker").attr("id",e+"-crossStart").attr("class","marker cross "+e).attr("viewBox","0 0 11 11").attr("refX",-1).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0")},barb:function(t,e){t.append("defs").append("marker").attr("id",e+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","strokeWidth").attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")}};const b_=function(t,e,n,r){e.forEach((function(e){v_[e](t,n,r)}))};function __(t){return __="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},__(t)}const x_=function(t,e,n,r){var i,a,s,c,u,l,h=t||"";if("object"===__(h)&&(h=h[0]),zm(wb().flowchart.htmlLabels))return h=h.replace(/\\n|\n/g,"<br />"),o.info("vertexText"+h),i={isNode:r,label:h.replace(/fa[lrsb]?:fa-[\w-]+/g,(function(t){return"<i class='".concat(t.replace(":"," "),"'></i>")})),labelStyle:e.replace("fill:","color:")},s=au(document.createElementNS("http://www.w3.org/2000/svg","foreignObject")),c=s.append("xhtml:div"),u=i.label,l=i.isNode?"nodeLabel":"edgeLabel",c.html('<span class="'+l+'" '+(i.labelStyle?'style="'+i.labelStyle+'"':"")+">"+u+"</span>"),(a=i.labelStyle)&&c.attr("style",a),c.style("display","inline-block"),c.style("white-space","nowrap"),c.attr("xmlns","http://www.w3.org/1999/xhtml"),s.node();var f=document.createElementNS("http://www.w3.org/2000/svg","text");f.setAttribute("style",e.replace("color:","fill:"));var d=[];d="string"==typeof h?h.split(/\\n|\n|<br\s*\/?>/gi):Array.isArray(h)?h:[];for(var p=0;p<d.length;p++){var g=document.createElementNS("http://www.w3.org/2000/svg","tspan");g.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),g.setAttribute("dy","1em"),g.setAttribute("x","0"),n?g.setAttribute("class","title-row"):g.setAttribute("class","row"),g.textContent=d[p].trim(),f.appendChild(g)}return f};var w_=function(t,e,n,r){var i;i=n||"node default";var a=t.insert("g").attr("class",i).attr("id",e.domId||e.id),o=a.insert("g").attr("class","label").attr("style",e.labelStyle),s="string"==typeof e.labelText?e.labelText:e.labelText[0],c=o.node().appendChild(x_(Pm(FE(s),wb()),e.labelStyle,!1,r)),u=c.getBBox();if(zm(wb().flowchart.htmlLabels)){var l=c.children[0],h=au(c);u=l.getBoundingClientRect(),h.attr("width",u.width),h.attr("height",u.height)}var f=e.padding/2;return o.attr("transform","translate("+-u.width/2+", "+-u.height/2+")"),{shapeSvg:a,bbox:u,halfPadding:f,label:o}},k_=function(t,e){var n=e.node().getBBox();t.width=n.width,t.height=n.height};function T_(t,e,n,r){return t.insert("polygon",":first-child").attr("points",r.map((function(t){return t.x+","+t.y})).join(" ")).attr("class","label-container").attr("transform","translate("+-e/2+","+n/2+")")}var C_={},E_={},S_={},A_=function(t,e){return o.trace("In isDecendant",e," ",t," = ",E_[e].indexOf(t)>=0),E_[e].indexOf(t)>=0},M_=function t(e,n,r,i){o.warn("Copying children of ",e,"root",i,"data",n.node(e),i);var a=n.children(e)||[];e!==i&&a.push(e),o.warn("Copying (nodes) clusterId",e,"nodes",a),a.forEach((function(a){if(n.children(a).length>0)t(a,n,r,i);else{var s=n.node(a);o.info("cp ",a," to ",i," with parent ",e),r.setNode(a,s),i!==n.parent(a)&&(o.warn("Setting parent",a,n.parent(a)),r.setParent(a,n.parent(a))),e!==i&&a!==e?(o.debug("Setting parent",a,e),r.setParent(a,e)):(o.info("In copy ",e,"root",i,"data",n.node(e),i),o.debug("Not Setting parent for node=",a,"cluster!==rootId",e!==i,"node!==clusterId",a!==e));var c=n.edges(a);o.debug("Copying Edges",c),c.forEach((function(t){o.info("Edge",t);var a=n.edge(t.v,t.w,t.name);o.info("Edge data",a,i);try{!function(t,e){return o.info("Decendants of ",e," is ",E_[e]),o.info("Edge is ",t),t.v!==e&&t.w!==e&&(E_[e]?(o.info("Here "),E_[e].indexOf(t.v)>=0||!!A_(t.v,e)||!!A_(t.w,e)||E_[e].indexOf(t.w)>=0):(o.debug("Tilt, ",e,",not in decendants"),!1))}(t,i)?o.info("Skipping copy of edge ",t.v,"--\x3e",t.w," rootId: ",i," clusterId:",e):(o.info("Copying as ",t.v,t.w,a,t.name),r.setEdge(t.v,t.w,a,t.name),o.info("newGraph edges ",r.edges(),r.edge(r.edges()[0])))}catch(t){o.error(t)}}))}o.debug("Removing node",a),n.removeNode(a)}))},N_=function t(e,n){for(var r=n.children(e),i=[].concat(r),a=0;a<r.length;a++)S_[r[a]]=e,i=i.concat(t(r[a],n));return i},D_=function t(e,n){o.trace("Searching",e);var r=n.children(e);if(o.trace("Searching children of id ",e,r),r.length<1)return o.trace("This is a valid node",e),e;for(var i=0;i<r.length;i++){var a=t(r[i],n);if(a)return o.trace("Found replacement for",e," => ",a),a}},B_=function(t){return C_[t]&&C_[t].externalConnections&&C_[t]?C_[t].id:t},L_=function(t,e){!t||e>10?o.debug("Opting out, no graph "):(o.debug("Opting in, graph "),t.nodes().forEach((function(e){t.children(e).length>0&&(o.warn("Cluster identified",e," Replacement id in edges: ",D_(e,t)),E_[e]=N_(e,t),C_[e]={id:D_(e,t),clusterData:t.node(e)})})),t.nodes().forEach((function(e){var n=t.children(e),r=t.edges();n.length>0?(o.debug("Cluster identified",e,E_),r.forEach((function(t){t.v!==e&&t.w!==e&&A_(t.v,e)^A_(t.w,e)&&(o.warn("Edge: ",t," leaves cluster ",e),o.warn("Decendants of XXX ",e,": ",E_[e]),C_[e].externalConnections=!0)}))):o.debug("Not a cluster ",e,E_)})),t.edges().forEach((function(e){var n=t.edge(e);o.warn("Edge "+e.v+" -> "+e.w+": "+JSON.stringify(e)),o.warn("Edge "+e.v+" -> "+e.w+": "+JSON.stringify(t.edge(e)));var r=e.v,i=e.w;o.warn("Fix XXX",C_,"ids:",e.v,e.w,"Translateing: ",C_[e.v]," --- ",C_[e.w]),(C_[e.v]||C_[e.w])&&(o.warn("Fixing and trixing - removing XXX",e.v,e.w,e.name),r=B_(e.v),i=B_(e.w),t.removeEdge(e.v,e.w,e.name),r!==e.v&&(n.fromCluster=e.v),i!==e.w&&(n.toCluster=e.w),o.warn("Fix Replacing with XXX",r,i,e.name),t.setEdge(r,i,n,e.name))})),o.warn("Adjusted Graph",t_().json.write(t)),O_(t,0),o.trace(C_))},O_=function t(e,n){if(o.warn("extractor - ",n,t_().json.write(e),e.children("D")),n>10)o.error("Bailing out");else{for(var r=e.nodes(),i=!1,a=0;a<r.length;a++){var s=r[a],c=e.children(s);i=i||c.length>0}if(i){o.debug("Nodes = ",r,n);for(var u=0;u<r.length;u++){var l=r[u];if(o.debug("Extracting node",l,C_,C_[l]&&!C_[l].externalConnections,!e.parent(l),e.node(l),e.children("D")," Depth ",n),C_[l])if(!C_[l].externalConnections&&e.children(l)&&e.children(l).length>0){o.warn("Cluster without external connections, without a parent and with children",l,n);var h="TB"===e.graph().rankdir?"LR":"TB";C_[l]&&C_[l].clusterData&&C_[l].clusterData.dir&&(h=C_[l].clusterData.dir,o.warn("Fixing dir",C_[l].clusterData.dir,h));var f=new(t_().Graph)({multigraph:!0,compound:!0}).setGraph({rankdir:h,nodesep:50,ranksep:50,marginx:8,marginy:8}).setDefaultEdgeLabel((function(){return{}}));o.warn("Old graph before copy",t_().json.write(e)),M_(l,e,f,l),e.setNode(l,{clusterNode:!0,id:l,clusterData:C_[l].clusterData,labelText:C_[l].labelText,graph:f}),o.warn("New graph after copy node: (",l,")",t_().json.write(f)),o.debug("Old graph after copy",t_().json.write(e))}else o.warn("Cluster ** ",l," **not meeting the criteria !externalConnections:",!C_[l].externalConnections," no parent: ",!e.parent(l)," children ",e.children(l)&&e.children(l).length>0,e.children("D"),n),o.debug(C_);else o.debug("Not a cluster",l,n)}r=e.nodes(),o.warn("New list of nodes",r);for(var d=0;d<r.length;d++){var p=r[d],g=e.node(p);o.warn(" Now next level",p,g),g.clusterNode&&t(g.graph,n+1)}}else o.debug("Done, no node has children",e.nodes())}},I_=function t(e,n){if(0===n.length)return[];var r=Object.assign(n);return n.forEach((function(n){var i=e.children(n),a=t(e,i);r=r.concat(a)})),r},R_=function(t){return I_(t,t.children())},F_=n(3841);const P_=function(t,e,n,r){var i=t.x,a=t.y,o=i-r.x,s=a-r.y,c=Math.sqrt(e*e*s*s+n*n*o*o),u=Math.abs(e*n*o/c);r.x<i&&(u=-u);var l=Math.abs(e*n*s/c);return r.y<a&&(l=-l),{x:i+u,y:a+l}};function Y_(t,e){return t*e>0}const j_=function(t,e,n,r){var i,a,o,s,c,u,l,h,f,d,p,g,y;if(i=e.y-t.y,o=t.x-e.x,c=e.x*t.y-t.x*e.y,f=i*n.x+o*n.y+c,d=i*r.x+o*r.y+c,!(0!==f&&0!==d&&Y_(f,d)||(a=r.y-n.y,s=n.x-r.x,u=r.x*n.y-n.x*r.y,l=a*t.x+s*t.y+u,h=a*e.x+s*e.y+u,0!==l&&0!==h&&Y_(l,h)||0==(p=i*s-a*o))))return g=Math.abs(p/2),{x:(y=o*u-s*c)<0?(y-g)/p:(y+g)/p,y:(y=a*c-i*u)<0?(y-g)/p:(y+g)/p}},U_=function(t,e){var n,r,i=t.x,a=t.y,o=e.x-i,s=e.y-a,c=t.width/2,u=t.height/2;return Math.abs(s)*c>Math.abs(o)*u?(s<0&&(u=-u),n=0===s?0:u*o/s,r=u):(o<0&&(c=-c),n=c,r=0===o?0:c*s/o),{x:i+n,y:a+r}},z_=(n.n(F_)(),function(t,e,n){return P_(t,e,e,n)}),$_=function(t,e,n){var r=t.x,i=t.y,a=[],o=Number.POSITIVE_INFINITY,s=Number.POSITIVE_INFINITY;"function"==typeof e.forEach?e.forEach((function(t){o=Math.min(o,t.x),s=Math.min(s,t.y)})):(o=Math.min(o,e.x),s=Math.min(s,e.y));for(var c=r-t.width/2-o,u=i-t.height/2-s,l=0;l<e.length;l++){var h=e[l],f=e[l<e.length-1?l+1:0],d=j_(t,n,{x:c+h.x,y:u+h.y},{x:c+f.x,y:u+f.y});d&&a.push(d)}return a.length?(a.length>1&&a.sort((function(t,e){var r=t.x-n.x,i=t.y-n.y,a=Math.sqrt(r*r+i*i),o=e.x-n.x,s=e.y-n.y,c=Math.sqrt(o*o+s*s);return a<c?-1:a===c?0:1})),a[0]):t},q_=U_;function H_(t){return H_="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},H_(t)}var W_=function(t,e,n){var r=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),i=70,a=10;"LR"===n&&(i=10,a=70);var o=r.append("rect").attr("x",-1*i/2).attr("y",-1*a/2).attr("width",i).attr("height",a).attr("class","fork-join");return k_(e,o),e.height=e.height+e.padding/2,e.width=e.width+e.padding/2,e.intersect=function(t){return q_(e,t)},r},V_={question:function(t,e){var n=w_(t,e,void 0,!0),r=n.shapeSvg,i=n.bbox,a=i.width+e.padding+(i.height+e.padding),s=[{x:a/2,y:0},{x:a,y:-a/2},{x:a/2,y:-a},{x:0,y:-a/2}];o.info("Question main (Circle)");var c=T_(r,a,a,s);return c.attr("style",e.style),k_(e,c),e.intersect=function(t){return o.warn("Intersect called"),$_(e,s,t)},r},rect:function(t,e){var n=w_(t,e,"node "+e.classes,!0),r=n.shapeSvg,i=n.bbox,a=n.halfPadding;o.trace("Classes = ",e.classes);var s=r.insert("rect",":first-child"),c=i.width+e.padding,u=i.height+e.padding;if(s.attr("class","basic label-container").attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("x",-i.width/2-a).attr("y",-i.height/2-a).attr("width",c).attr("height",u),e.props){var l=new Set(Object.keys(e.props));e.props.borders&&(function(t,e,n,r){var i=[],a=function(t){i.push(t),i.push(0)},s=function(t){i.push(0),i.push(t)};e.includes("t")?(o.debug("add top border"),a(n)):s(n),e.includes("r")?(o.debug("add right border"),a(r)):s(r),e.includes("b")?(o.debug("add bottom border"),a(n)):s(n),e.includes("l")?(o.debug("add left border"),a(r)):s(r),t.attr("stroke-dasharray",i.join(" "))}(s,e.props.borders,c,u),l.delete("borders")),l.forEach((function(t){o.warn("Unknown node property ".concat(t))}))}return k_(e,s),e.intersect=function(t){return q_(e,t)},r},rectWithTitle:function(t,e){var n;n=e.classes?"node "+e.classes:"node default";var r,i=t.insert("g").attr("class",n).attr("id",e.domId||e.id),a=i.insert("rect",":first-child"),s=i.insert("line"),c=i.insert("g").attr("class","label"),u=e.labelText.flat?e.labelText.flat():e.labelText;r="object"===H_(u)?u[0]:u,o.info("Label text abc79",r,u,"object"===H_(u));var l=c.node().appendChild(x_(r,e.labelStyle,!0,!0)),h={width:0,height:0};if(zm(wb().flowchart.htmlLabels)){var f=l.children[0],d=au(l);h=f.getBoundingClientRect(),d.attr("width",h.width),d.attr("height",h.height)}o.info("Text 2",u);var p=u.slice(1,u.length),g=l.getBBox(),y=c.node().appendChild(x_(p.join?p.join("<br/>"):p,e.labelStyle,!0,!0));if(zm(wb().flowchart.htmlLabels)){var m=y.children[0],v=au(y);h=m.getBoundingClientRect(),v.attr("width",h.width),v.attr("height",h.height)}var b=e.padding/2;return au(y).attr("transform","translate( "+(h.width>g.width?0:(g.width-h.width)/2)+", "+(g.height+b+5)+")"),au(l).attr("transform","translate( "+(h.width<g.width?0:-(g.width-h.width)/2)+", 0)"),h=c.node().getBBox(),c.attr("transform","translate("+-h.width/2+", "+(-h.height/2-b+3)+")"),a.attr("class","outer title-state").attr("x",-h.width/2-b).attr("y",-h.height/2-b).attr("width",h.width+e.padding).attr("height",h.height+e.padding),s.attr("class","divider").attr("x1",-h.width/2-b).attr("x2",h.width/2+b).attr("y1",-h.height/2-b+g.height+b).attr("y2",-h.height/2-b+g.height+b),k_(e,a),e.intersect=function(t){return q_(e,t)},i},choice:function(t,e){var n=t.insert("g").attr("class","node default").attr("id",e.domId||e.id);return n.insert("polygon",":first-child").attr("points",[{x:0,y:14},{x:14,y:0},{x:0,y:-14},{x:-14,y:0}].map((function(t){return t.x+","+t.y})).join(" ")).attr("class","state-start").attr("r",7).attr("width",28).attr("height",28),e.width=28,e.height=28,e.intersect=function(t){return z_(e,14,t)},n},circle:function(t,e){var n=w_(t,e,void 0,!0),r=n.shapeSvg,i=n.bbox,a=n.halfPadding,s=r.insert("circle",":first-child");return s.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("r",i.width/2+a).attr("width",i.width+e.padding).attr("height",i.height+e.padding),o.info("Circle main"),k_(e,s),e.intersect=function(t){return o.info("Circle intersect",e,i.width/2+a,t),z_(e,i.width/2+a,t)},r},doublecircle:function(t,e){var n=w_(t,e,void 0,!0),r=n.shapeSvg,i=n.bbox,a=n.halfPadding,s=r.insert("g",":first-child"),c=s.insert("circle"),u=s.insert("circle");return c.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("r",i.width/2+a+5).attr("width",i.width+e.padding+10).attr("height",i.height+e.padding+10),u.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("r",i.width/2+a).attr("width",i.width+e.padding).attr("height",i.height+e.padding),o.info("DoubleCircle main"),k_(e,c),e.intersect=function(t){return o.info("DoubleCircle intersect",e,i.width/2+a+5,t),z_(e,i.width/2+a+5,t)},r},stadium:function(t,e){var n=w_(t,e,void 0,!0),r=n.shapeSvg,i=n.bbox,a=i.height+e.padding,o=i.width+a/4+e.padding,s=r.insert("rect",":first-child").attr("style",e.style).attr("rx",a/2).attr("ry",a/2).attr("x",-o/2).attr("y",-a/2).attr("width",o).attr("height",a);return k_(e,s),e.intersect=function(t){return q_(e,t)},r},hexagon:function(t,e){var n=w_(t,e,void 0,!0),r=n.shapeSvg,i=n.bbox,a=i.height+e.padding,o=a/4,s=i.width+2*o+e.padding,c=[{x:o,y:0},{x:s-o,y:0},{x:s,y:-a/2},{x:s-o,y:-a},{x:o,y:-a},{x:0,y:-a/2}],u=T_(r,s,a,c);return u.attr("style",e.style),k_(e,u),e.intersect=function(t){return $_(e,c,t)},r},rect_left_inv_arrow:function(t,e){var n=w_(t,e,void 0,!0),r=n.shapeSvg,i=n.bbox,a=i.width+e.padding,o=i.height+e.padding,s=[{x:-o/2,y:0},{x:a,y:0},{x:a,y:-o},{x:-o/2,y:-o},{x:0,y:-o/2}];return T_(r,a,o,s).attr("style",e.style),e.width=a+o,e.height=o,e.intersect=function(t){return $_(e,s,t)},r},lean_right:function(t,e){var n=w_(t,e,void 0,!0),r=n.shapeSvg,i=n.bbox,a=i.width+e.padding,o=i.height+e.padding,s=[{x:-2*o/6,y:0},{x:a-o/6,y:0},{x:a+2*o/6,y:-o},{x:o/6,y:-o}],c=T_(r,a,o,s);return c.attr("style",e.style),k_(e,c),e.intersect=function(t){return $_(e,s,t)},r},lean_left:function(t,e){var n=w_(t,e,void 0,!0),r=n.shapeSvg,i=n.bbox,a=i.width+e.padding,o=i.height+e.padding,s=[{x:2*o/6,y:0},{x:a+o/6,y:0},{x:a-2*o/6,y:-o},{x:-o/6,y:-o}],c=T_(r,a,o,s);return c.attr("style",e.style),k_(e,c),e.intersect=function(t){return $_(e,s,t)},r},trapezoid:function(t,e){var n=w_(t,e,void 0,!0),r=n.shapeSvg,i=n.bbox,a=i.width+e.padding,o=i.height+e.padding,s=[{x:-2*o/6,y:0},{x:a+2*o/6,y:0},{x:a-o/6,y:-o},{x:o/6,y:-o}],c=T_(r,a,o,s);return c.attr("style",e.style),k_(e,c),e.intersect=function(t){return $_(e,s,t)},r},inv_trapezoid:function(t,e){var n=w_(t,e,void 0,!0),r=n.shapeSvg,i=n.bbox,a=i.width+e.padding,o=i.height+e.padding,s=[{x:o/6,y:0},{x:a-o/6,y:0},{x:a+2*o/6,y:-o},{x:-2*o/6,y:-o}],c=T_(r,a,o,s);return c.attr("style",e.style),k_(e,c),e.intersect=function(t){return $_(e,s,t)},r},rect_right_inv_arrow:function(t,e){var n=w_(t,e,void 0,!0),r=n.shapeSvg,i=n.bbox,a=i.width+e.padding,o=i.height+e.padding,s=[{x:0,y:0},{x:a+o/2,y:0},{x:a,y:-o/2},{x:a+o/2,y:-o},{x:0,y:-o}],c=T_(r,a,o,s);return c.attr("style",e.style),k_(e,c),e.intersect=function(t){return $_(e,s,t)},r},cylinder:function(t,e){var n=w_(t,e,void 0,!0),r=n.shapeSvg,i=n.bbox,a=i.width+e.padding,o=a/2,s=o/(2.5+a/50),c=i.height+s+e.padding,u="M 0,"+s+" a "+o+","+s+" 0,0,0 "+a+" 0 a "+o+","+s+" 0,0,0 "+-a+" 0 l 0,"+c+" a "+o+","+s+" 0,0,0 "+a+" 0 l 0,"+-c,l=r.attr("label-offset-y",s).insert("path",":first-child").attr("style",e.style).attr("d",u).attr("transform","translate("+-a/2+","+-(c/2+s)+")");return k_(e,l),e.intersect=function(t){var n=q_(e,t),r=n.x-e.x;if(0!=o&&(Math.abs(r)<e.width/2||Math.abs(r)==e.width/2&&Math.abs(n.y-e.y)>e.height/2-s)){var i=s*s*(1-r*r/(o*o));0!=i&&(i=Math.sqrt(i)),i=s-i,t.y-e.y>0&&(i=-i),n.y+=i}return n},r},start:function(t,e){var n=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),r=n.insert("circle",":first-child");return r.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),k_(e,r),e.intersect=function(t){return z_(e,7,t)},n},end:function(t,e){var n=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),r=n.insert("circle",":first-child"),i=n.insert("circle",":first-child");return i.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),r.attr("class","state-end").attr("r",5).attr("width",10).attr("height",10),k_(e,i),e.intersect=function(t){return z_(e,7,t)},n},note:function(t,e){var n=w_(t,e,"node "+e.classes,!0),r=n.shapeSvg,i=n.bbox,a=n.halfPadding;o.info("Classes = ",e.classes);var s=r.insert("rect",":first-child");return s.attr("rx",e.rx).attr("ry",e.ry).attr("x",-i.width/2-a).attr("y",-i.height/2-a).attr("width",i.width+e.padding).attr("height",i.height+e.padding),k_(e,s),e.intersect=function(t){return q_(e,t)},r},subroutine:function(t,e){var n=w_(t,e,void 0,!0),r=n.shapeSvg,i=n.bbox,a=i.width+e.padding,o=i.height+e.padding,s=[{x:0,y:0},{x:a,y:0},{x:a,y:-o},{x:0,y:-o},{x:0,y:0},{x:-8,y:0},{x:a+8,y:0},{x:a+8,y:-o},{x:-8,y:-o},{x:-8,y:0}],c=T_(r,a,o,s);return c.attr("style",e.style),k_(e,c),e.intersect=function(t){return $_(e,s,t)},r},fork:W_,join:W_,class_box:function(t,e){var n,r=e.padding/2;n=e.classes?"node "+e.classes:"node default";var i=t.insert("g").attr("class",n).attr("id",e.domId||e.id),a=i.insert("rect",":first-child"),o=i.insert("line"),s=i.insert("line"),c=0,u=4,l=i.insert("g").attr("class","label"),h=0,f=e.classData.annotations&&e.classData.annotations[0],d=e.classData.annotations[0]?"«"+e.classData.annotations[0]+"»":"",p=l.node().appendChild(x_(d,e.labelStyle,!0,!0)),g=p.getBBox();if(zm(wb().flowchart.htmlLabels)){var y=p.children[0],m=au(p);g=y.getBoundingClientRect(),m.attr("width",g.width),m.attr("height",g.height)}e.classData.annotations[0]&&(u+=g.height+4,c+=g.width);var v=e.classData.id;void 0!==e.classData.type&&""!==e.classData.type&&(wb().flowchart.htmlLabels?v+="&lt;"+e.classData.type+"&gt;":v+="<"+e.classData.type+">");var b=l.node().appendChild(x_(v,e.labelStyle,!0,!0));au(b).attr("class","classTitle");var _=b.getBBox();if(zm(wb().flowchart.htmlLabels)){var x=b.children[0],w=au(b);_=x.getBoundingClientRect(),w.attr("width",_.width),w.attr("height",_.height)}u+=_.height+4,_.width>c&&(c=_.width);var k=[];e.classData.members.forEach((function(t){var n=i_(t),r=n.displayText;wb().flowchart.htmlLabels&&(r=r.replace(/</g,"&lt;").replace(/>/g,"&gt;"));var i=l.node().appendChild(x_(r,n.cssStyle?n.cssStyle:e.labelStyle,!0,!0)),a=i.getBBox();if(zm(wb().flowchart.htmlLabels)){var o=i.children[0],s=au(i);a=o.getBoundingClientRect(),s.attr("width",a.width),s.attr("height",a.height)}a.width>c&&(c=a.width),u+=a.height+4,k.push(i)})),u+=8;var T=[];if(e.classData.methods.forEach((function(t){var n=i_(t),r=n.displayText;wb().flowchart.htmlLabels&&(r=r.replace(/</g,"&lt;").replace(/>/g,"&gt;"));var i=l.node().appendChild(x_(r,n.cssStyle?n.cssStyle:e.labelStyle,!0,!0)),a=i.getBBox();if(zm(wb().flowchart.htmlLabels)){var o=i.children[0],s=au(i);a=o.getBoundingClientRect(),s.attr("width",a.width),s.attr("height",a.height)}a.width>c&&(c=a.width),u+=a.height+4,T.push(i)})),u+=8,f){var C=(c-g.width)/2;au(p).attr("transform","translate( "+(-1*c/2+C)+", "+-1*u/2+")"),h=g.height+4}var E=(c-_.width)/2;return au(b).attr("transform","translate( "+(-1*c/2+E)+", "+(-1*u/2+h)+")"),h+=_.height+4,o.attr("class","divider").attr("x1",-c/2-r).attr("x2",c/2+r).attr("y1",-u/2-r+8+h).attr("y2",-u/2-r+8+h),h+=8,k.forEach((function(t){au(t).attr("transform","translate( "+-c/2+", "+(-1*u/2+h+4)+")"),h+=_.height+4})),h+=8,s.attr("class","divider").attr("x1",-c/2-r).attr("x2",c/2+r).attr("y1",-u/2-r+8+h).attr("y2",-u/2-r+8+h),h+=8,T.forEach((function(t){au(t).attr("transform","translate( "+-c/2+", "+(-1*u/2+h)+")"),h+=_.height+4})),a.attr("class","outer title-state").attr("x",-c/2-r).attr("y",-u/2-r).attr("width",c+e.padding).attr("height",u+e.padding),k_(e,a),e.intersect=function(t){return q_(e,t)},i}},G_={},X_=function(t){var e=G_[t.id];o.trace("Transforming node",t.diff,t,"translate("+(t.x-t.width/2-5)+", "+t.width/2+")");var n=t.diff||0;return t.clusterNode?e.attr("transform","translate("+(t.x+n-t.width/2)+", "+(t.y-t.height/2-8)+")"):e.attr("transform","translate("+t.x+", "+t.y+")"),n},Z_={rect:function(t,e){o.trace("Creating subgraph rect for ",e.id,e);var n=t.insert("g").attr("class","cluster"+(e.class?" "+e.class:"")).attr("id",e.id),r=n.insert("rect",":first-child"),i=n.insert("g").attr("class","cluster-label"),a=i.node().appendChild(x_(e.labelText,e.labelStyle,void 0,!0)),s=a.getBBox();if(zm(wb().flowchart.htmlLabels)){var c=a.children[0],u=au(a);s=c.getBoundingClientRect(),u.attr("width",s.width),u.attr("height",s.height)}var l=0*e.padding,h=l/2,f=e.width<=s.width+l?s.width+l:e.width;e.width<=s.width+l?e.diff=(s.width-e.width)/2:e.diff=-e.padding/2,o.trace("Data ",e,JSON.stringify(e)),r.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("x",e.x-f/2).attr("y",e.y-e.height/2-h).attr("width",f).attr("height",e.height+l),i.attr("transform","translate("+(e.x-s.width/2)+", "+(e.y-e.height/2+e.padding/3)+")");var d=r.node().getBBox();return e.width=d.width,e.height=d.height,e.intersect=function(t){return U_(e,t)},n},roundedWithTitle:function(t,e){var n=t.insert("g").attr("class",e.classes).attr("id",e.id),r=n.insert("rect",":first-child"),i=n.insert("g").attr("class","cluster-label"),a=n.append("rect"),o=i.node().appendChild(x_(e.labelText,e.labelStyle,void 0,!0)),s=o.getBBox();if(zm(wb().flowchart.htmlLabels)){var c=o.children[0],u=au(o);s=c.getBoundingClientRect(),u.attr("width",s.width),u.attr("height",s.height)}s=o.getBBox();var l=0*e.padding,h=l/2,f=e.width<=s.width+e.padding?s.width+e.padding:e.width;e.width<=s.width+e.padding?e.diff=(s.width+0*e.padding-e.width)/2:e.diff=-e.padding/2,r.attr("class","outer").attr("x",e.x-f/2-h).attr("y",e.y-e.height/2-h).attr("width",f+l).attr("height",e.height+l),a.attr("class","inner").attr("x",e.x-f/2-h).attr("y",e.y-e.height/2-h+s.height-1).attr("width",f+l).attr("height",e.height+l-s.height-3),i.attr("transform","translate("+(e.x-s.width/2)+", "+(e.y-e.height/2-e.padding/3+(zm(wb().flowchart.htmlLabels)?5:3))+")");var d=r.node().getBBox();return e.height=d.height,e.intersect=function(t){return U_(e,t)},n},noteGroup:function(t,e){var n=t.insert("g").attr("class","note-cluster").attr("id",e.id),r=n.insert("rect",":first-child"),i=0*e.padding,a=i/2;r.attr("rx",e.rx).attr("ry",e.ry).attr("x",e.x-e.width/2-a).attr("y",e.y-e.height/2-a).attr("width",e.width+i).attr("height",e.height+i).attr("fill","none");var o=r.node().getBBox();return e.width=o.width,e.height=o.height,e.intersect=function(t){return U_(e,t)},n},divider:function(t,e){var n=t.insert("g").attr("class",e.classes).attr("id",e.id),r=n.insert("rect",":first-child"),i=0*e.padding,a=i/2;r.attr("class","divider").attr("x",e.x-e.width/2-a).attr("y",e.y-e.height/2).attr("width",e.width+i).attr("height",e.height+i);var o=r.node().getBBox();return e.width=o.width,e.height=o.height,e.diff=-e.padding/2,e.intersect=function(t){return U_(e,t)},n}},Q_={},K_={},J_={},tx=function(t,e){var n=x_(e.label,e.labelStyle),r=t.insert("g").attr("class","edgeLabel"),i=r.insert("g").attr("class","label");i.node().appendChild(n);var a,o=n.getBBox();if(zm(wb().flowchart.htmlLabels)){var s=n.children[0],c=au(n);o=s.getBoundingClientRect(),c.attr("width",o.width),c.attr("height",o.height)}if(i.attr("transform","translate("+-o.width/2+", "+-o.height/2+")"),K_[e.id]=r,e.width=o.width,e.height=o.height,e.startLabelLeft){var u=x_(e.startLabelLeft,e.labelStyle),l=t.insert("g").attr("class","edgeTerminals"),h=l.insert("g").attr("class","inner");a=h.node().appendChild(u);var f=u.getBBox();h.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"),J_[e.id]||(J_[e.id]={}),J_[e.id].startLeft=l,ex(a,e.startLabelLeft)}if(e.startLabelRight){var d=x_(e.startLabelRight,e.labelStyle),p=t.insert("g").attr("class","edgeTerminals"),g=p.insert("g").attr("class","inner");a=p.node().appendChild(d),g.node().appendChild(d);var y=d.getBBox();g.attr("transform","translate("+-y.width/2+", "+-y.height/2+")"),J_[e.id]||(J_[e.id]={}),J_[e.id].startRight=p,ex(a,e.startLabelRight)}if(e.endLabelLeft){var m=x_(e.endLabelLeft,e.labelStyle),v=t.insert("g").attr("class","edgeTerminals"),b=v.insert("g").attr("class","inner");a=b.node().appendChild(m);var _=m.getBBox();b.attr("transform","translate("+-_.width/2+", "+-_.height/2+")"),v.node().appendChild(m),J_[e.id]||(J_[e.id]={}),J_[e.id].endLeft=v,ex(a,e.endLabelLeft)}if(e.endLabelRight){var x=x_(e.endLabelRight,e.labelStyle),w=t.insert("g").attr("class","edgeTerminals"),k=w.insert("g").attr("class","inner");a=k.node().appendChild(x);var T=x.getBBox();k.attr("transform","translate("+-T.width/2+", "+-T.height/2+")"),w.node().appendChild(x),J_[e.id]||(J_[e.id]={}),J_[e.id].endRight=w,ex(a,e.endLabelRight)}};function ex(t,e){wb().flowchart.htmlLabels&&t&&(t.style.width=9*e.length+"px",t.style.height="12px")}var nx=function(t,e){o.info("Moving label abc78 ",t.id,t.label,K_[t.id]);var n=e.updatedPath?e.updatedPath:e.originalPath;if(t.label){var r=K_[t.id],i=t.x,a=t.y;if(n){var s=db.calcLabelPosition(n);o.info("Moving label from (",i,",",a,") to (",s.x,",",s.y,") abc78")}r.attr("transform","translate("+i+", "+a+")")}if(t.startLabelLeft){var c=J_[t.id].startLeft,u=t.x,l=t.y;if(n){var h=db.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_left",n);u=h.x,l=h.y}c.attr("transform","translate("+u+", "+l+")")}if(t.startLabelRight){var f=J_[t.id].startRight,d=t.x,p=t.y;if(n){var g=db.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_right",n);d=g.x,p=g.y}f.attr("transform","translate("+d+", "+p+")")}if(t.endLabelLeft){var y=J_[t.id].endLeft,m=t.x,v=t.y;if(n){var b=db.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_left",n);m=b.x,v=b.y}y.attr("transform","translate("+m+", "+v+")")}if(t.endLabelRight){var _=J_[t.id].endRight,x=t.x,w=t.y;if(n){var k=db.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_right",n);x=k.x,w=k.y}_.attr("transform","translate("+x+", "+w+")")}},rx=function(t,e){o.warn("abc88 cutPathAtIntersect",t,e);var n=[],r=t[0],i=!1;return t.forEach((function(t){if(o.info("abc88 checking point",t,e),function(t,e){var n=t.x,r=t.y,i=Math.abs(e.x-n),a=Math.abs(e.y-r),o=t.width/2,s=t.height/2;return i>=o||a>=s}(e,t)||i)o.warn("abc88 outside",t,r),r=t,i||n.push(t);else{var a=function(t,e,n){o.warn("intersection calc abc89:\n outsidePoint: ".concat(JSON.stringify(e),"\n insidePoint : ").concat(JSON.stringify(n),"\n node : x:").concat(t.x," y:").concat(t.y," w:").concat(t.width," h:").concat(t.height));var r=t.x,i=t.y,a=Math.abs(r-n.x),s=t.width/2,c=n.x<e.x?s-a:s+a,u=t.height/2,l=Math.abs(e.y-n.y),h=Math.abs(e.x-n.x);if(Math.abs(i-e.y)*s>Math.abs(r-e.x)*u){var f=n.y<e.y?e.y-u-i:i-u-e.y;c=h*f/l;var d={x:n.x<e.x?n.x+c:n.x-h+c,y:n.y<e.y?n.y+l-f:n.y-l+f};return 0===c&&(d.x=e.x,d.y=e.y),0===h&&(d.x=e.x),0===l&&(d.y=e.y),o.warn("abc89 topp/bott calc, Q ".concat(l,", q ").concat(f,", R ").concat(h,", r ").concat(c),d),d}var p=l*(c=n.x<e.x?e.x-s-r:r-s-e.x)/h,g=n.x<e.x?n.x+h-c:n.x-h+c,y=n.y<e.y?n.y+p:n.y-p;return o.warn("sides calc abc89, Q ".concat(l,", q ").concat(p,", R ").concat(h,", r ").concat(c),{_x:g,_y:y}),0===c&&(g=e.x,y=e.y),0===h&&(g=e.x),0===l&&(y=e.y),{x:g,y}}(e,r,t);o.warn("abc88 inside",t,r,a),o.warn("abc88 intersection",a);var s=!1;n.forEach((function(t){s=s||t.x===a.x&&t.y===a.y})),n.find((function(t){return t.x===a.x&&t.y===a.y}))?o.warn("abc88 no intersect",a,n):n.push(a),i=!0}})),o.warn("abc88 returning points",n),n},ix=function t(e,n,r,i){o.info("Graph in recursive render: XXX",t_().json.write(n),i);var a=n.graph().rankdir;o.trace("Dir in recursive render - dir:",a);var s=e.insert("g").attr("class","root");n.nodes()?o.info("Recursive render XXX",n.nodes()):o.info("No nodes found for",n),n.edges().length>0&&o.trace("Recursive edges",n.edge(n.edges()[0]));var c=s.insert("g").attr("class","clusters"),u=s.insert("g").attr("class","edgePaths"),l=s.insert("g").attr("class","edgeLabels"),h=s.insert("g").attr("class","nodes");n.nodes().forEach((function(e){var s=n.node(e);if(void 0!==i){var c=JSON.parse(JSON.stringify(i.clusterData));o.info("Setting data for cluster XXX (",e,") ",c,i),n.setNode(i.id,c),n.parent(e)||(o.trace("Setting parent",e,i.id),n.setParent(e,i.id,c))}if(o.info("(Insert) Node XXX"+e+": "+JSON.stringify(n.node(e))),s&&s.clusterNode){o.info("Cluster identified",e,s.width,n.node(e));var u=t(h,s.graph,r,n.node(e)),l=u.elem;k_(s,l),s.diff=u.diff||0,o.info("Node bounds (abc123)",e,s,s.width,s.x,s.y),function(t,e){G_[e.id]=t}(l,s),o.warn("Recursive render complete ",l,s)}else n.children(e).length>0?(o.info("Cluster - the non recursive path XXX",e,s.id,s,n),o.info(D_(s.id,n)),C_[s.id]={id:D_(s.id,n),node:s}):(o.info("Node - the non recursive path",e,s.id,s),function(t,e,n){var r,i,a;e.link?("sandbox"===wb().securityLevel?a="_top":e.linkTarget&&(a=e.linkTarget||"_blank"),r=t.insert("svg:a").attr("xlink:href",e.link).attr("target",a),i=V_[e.shape](r,e,n)):r=i=V_[e.shape](t,e,n),e.tooltip&&i.attr("title",e.tooltip),e.class&&i.attr("class","node default "+e.class),G_[e.id]=r,e.haveCallback&&G_[e.id].attr("class",G_[e.id].attr("class")+" clickable")}(h,n.node(e),a))})),n.edges().forEach((function(t){var e=n.edge(t.v,t.w,t.name);o.info("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(t)),o.info("Edge "+t.v+" -> "+t.w+": ",t," ",JSON.stringify(n.edge(t))),o.info("Fix",C_,"ids:",t.v,t.w,"Translateing: ",C_[t.v],C_[t.w]),tx(l,e)})),n.edges().forEach((function(t){o.info("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(t))})),o.info("#############################################"),o.info("### Layout ###"),o.info("#############################################"),o.info(n),Kb().layout(n),o.info("Graph after layout:",t_().json.write(n));var f=0;return R_(n).forEach((function(t){var e=n.node(t);o.info("Position "+t+": "+JSON.stringify(n.node(t))),o.info("Position "+t+": ("+e.x,","+e.y,") width: ",e.width," height: ",e.height),e&&e.clusterNode?X_(e):n.children(t).length>0?(function(t,e){o.trace("Inserting cluster");var n=e.shape||"rect";Q_[e.id]=Z_[n](t,e)}(c,e),C_[e.id].node=e):X_(e)})),n.edges().forEach((function(t){var e=n.edge(t);o.info("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(e),e);var i=function(t,e,n,r,i,a){var s=n.points,c=!1,u=a.node(e.v),l=a.node(e.w);o.info("abc88 InsertEdge: ",n),l.intersect&&u.intersect&&((s=s.slice(1,n.points.length-1)).unshift(u.intersect(s[0])),o.info("Last point",s[s.length-1],l,l.intersect(s[s.length-1])),s.push(l.intersect(s[s.length-1]))),n.toCluster&&(o.info("to cluster abc88",r[n.toCluster]),s=rx(n.points,r[n.toCluster].node),c=!0),n.fromCluster&&(o.info("from cluster abc88",r[n.fromCluster]),s=rx(s.reverse(),r[n.fromCluster].node).reverse(),c=!0);var h,f=s.filter((function(t){return!Number.isNaN(t.y)}));h=("graph"===i||"flowchart"===i)&&n.curve||Vu;var d,p=Uu().x((function(t){return t.x})).y((function(t){return t.y})).curve(h);switch(n.thickness){case"normal":d="edge-thickness-normal";break;case"thick":d="edge-thickness-thick";break;default:d=""}switch(n.pattern){case"solid":d+=" edge-pattern-solid";break;case"dotted":d+=" edge-pattern-dotted";break;case"dashed":d+=" edge-pattern-dashed"}var g=t.append("path").attr("d",p(f)).attr("id",n.id).attr("class"," "+d+(n.classes?" "+n.classes:"")).attr("style",n.style),y="";switch(wb().state.arrowMarkerAbsolute&&(y=(y=(y=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search).replace(/\(/g,"\\(")).replace(/\)/g,"\\)")),o.info("arrowTypeStart",n.arrowTypeStart),o.info("arrowTypeEnd",n.arrowTypeEnd),n.arrowTypeStart){case"arrow_cross":g.attr("marker-start","url("+y+"#"+i+"-crossStart)");break;case"arrow_point":g.attr("marker-start","url("+y+"#"+i+"-pointStart)");break;case"arrow_barb":g.attr("marker-start","url("+y+"#"+i+"-barbStart)");break;case"arrow_circle":g.attr("marker-start","url("+y+"#"+i+"-circleStart)");break;case"aggregation":g.attr("marker-start","url("+y+"#"+i+"-aggregationStart)");break;case"extension":g.attr("marker-start","url("+y+"#"+i+"-extensionStart)");break;case"composition":g.attr("marker-start","url("+y+"#"+i+"-compositionStart)");break;case"dependency":g.attr("marker-start","url("+y+"#"+i+"-dependencyStart)")}switch(n.arrowTypeEnd){case"arrow_cross":g.attr("marker-end","url("+y+"#"+i+"-crossEnd)");break;case"arrow_point":g.attr("marker-end","url("+y+"#"+i+"-pointEnd)");break;case"arrow_barb":g.attr("marker-end","url("+y+"#"+i+"-barbEnd)");break;case"arrow_circle":g.attr("marker-end","url("+y+"#"+i+"-circleEnd)");break;case"aggregation":g.attr("marker-end","url("+y+"#"+i+"-aggregationEnd)");break;case"extension":g.attr("marker-end","url("+y+"#"+i+"-extensionEnd)");break;case"composition":g.attr("marker-end","url("+y+"#"+i+"-compositionEnd)");break;case"dependency":g.attr("marker-end","url("+y+"#"+i+"-dependencyEnd)")}var m={};return c&&(m.updatedPath=s),m.originalPath=n.points,m}(u,t,e,C_,r,n);nx(e,i)})),n.nodes().forEach((function(t){var e=n.node(t);o.info(t,e.type,e.diff),"group"===e.type&&(f=e.diff)})),{elem:s,diff:f}},ax=function(t,e,n,r,i){b_(t,n,r,i),G_={},K_={},J_={},Q_={},E_={},S_={},C_={},o.warn("Graph at first:",t_().json.write(e)),L_(e),o.warn("Graph after:",t_().json.write(e)),ix(t,e,r)};e_.parser.yy=Zb;var ox={dividerMargin:10,padding:5,textHeight:10};function sx(t){var e;switch(t){case 0:e="aggregation";break;case 1:e="extension";break;case 2:e="composition";break;case 3:e="dependency";break;default:e="none"}return e}var cx={},ux=[],lx=function(t){return void 0===cx[t]&&(cx[t]={attributes:[]},o.info("Added new entity :",t)),cx[t]};const hx={Cardinality:{ZERO_OR_ONE:"ZERO_OR_ONE",ZERO_OR_MORE:"ZERO_OR_MORE",ONE_OR_MORE:"ONE_OR_MORE",ONLY_ONE:"ONLY_ONE"},Identification:{NON_IDENTIFYING:"NON_IDENTIFYING",IDENTIFYING:"IDENTIFYING"},parseDirective:function(t,e,n){UE.parseDirective(this,t,e,n)},getConfig:function(){return wb().er},addEntity:lx,addAttributes:function(t,e){var n,r=lx(t);for(n=e.length-1;n>=0;n--)r.attributes.push(e[n]),o.debug("Added attribute ",e[n].attributeName)},getEntities:function(){return cx},addRelationship:function(t,e,n,r){var i={entityA:t,roleA:e,entityB:n,relSpec:r};ux.push(i),o.debug("Added new relationship :",i)},getRelationships:function(){return ux},clear:function(){cx={},ux=[],Mb()},setTitle:Nb,getTitle:Db,setAccDescription:Bb,getAccDescription:Lb};var fx=n(5890),dx=n.n(fx),px={ONLY_ONE_START:"ONLY_ONE_START",ONLY_ONE_END:"ONLY_ONE_END",ZERO_OR_ONE_START:"ZERO_OR_ONE_START",ZERO_OR_ONE_END:"ZERO_OR_ONE_END",ONE_OR_MORE_START:"ONE_OR_MORE_START",ONE_OR_MORE_END:"ONE_OR_MORE_END",ZERO_OR_MORE_START:"ZERO_OR_MORE_START",ZERO_OR_MORE_END:"ZERO_OR_MORE_END"};const gx=px;var yx={},mx=function(t){return(t.entityA+t.roleA+t.entityB).replace(/\s/g,"")},vx=0;const bx=function(t){for(var e=Object.keys(t),n=0;n<e.length;n++)yx[e[n]]=t[e[n]]},_x=function(t,e){o.info("Drawing ER diagram"),hx.clear();var n=dx().parser;n.yy=hx;var r,i=wb().securityLevel;"sandbox"===i&&(r=au("#i"+e));var a=au("sandbox"===i?r.nodes()[0].contentDocument.body:"body");"sandbox"===i?r.nodes()[0].contentDocument:document;try{n.parse(t)}catch(t){o.debug("Parsing failed")}var s,c=a.select("[id='".concat(e,"']"));(function(t,e){var n;t.append("defs").append("marker").attr("id",px.ONLY_ONE_START).attr("refX",0).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M9,0 L9,18 M15,0 L15,18"),t.append("defs").append("marker").attr("id",px.ONLY_ONE_END).attr("refX",18).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M3,0 L3,18 M9,0 L9,18"),(n=t.append("defs").append("marker").attr("id",px.ZERO_OR_ONE_START).attr("refX",0).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto")).append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",21).attr("cy",9).attr("r",6),n.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M9,0 L9,18"),(n=t.append("defs").append("marker").attr("id",px.ZERO_OR_ONE_END).attr("refX",30).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto")).append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",9).attr("cy",9).attr("r",6),n.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M21,0 L21,18"),t.append("defs").append("marker").attr("id",px.ONE_OR_MORE_START).attr("refX",18).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27"),t.append("defs").append("marker").attr("id",px.ONE_OR_MORE_END).attr("refX",27).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18"),(n=t.append("defs").append("marker").attr("id",px.ZERO_OR_MORE_START).attr("refX",18).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto")).append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",48).attr("cy",18).attr("r",6),n.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M0,18 Q18,0 36,18 Q18,36 0,18"),(n=t.append("defs").append("marker").attr("id",px.ZERO_OR_MORE_END).attr("refX",39).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto")).append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",9).attr("cy",18).attr("r",6),n.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M21,18 Q39,0 57,18 Q39,36 21,18")})(c,yx),s=new(t_().Graph)({multigraph:!0,directed:!0,compound:!1}).setGraph({rankdir:yx.layoutDirection,marginx:20,marginy:20,nodesep:100,edgesep:100,ranksep:100}).setDefaultEdgeLabel((function(){return{}}));var u=function(t,e,n){var r;return Object.keys(e).forEach((function(i){var a=t.append("g").attr("id",i);r=void 0===r?i:r;var o="entity-"+i,s=a.append("text").attr("class","er entityLabel").attr("id",o).attr("x",0).attr("y",0).attr("dominant-baseline","middle").attr("text-anchor","middle").attr("style","font-family: "+wb().fontFamily+"; font-size: "+yx.fontSize+"px").text(i),c=function(t,e,n){var r=yx.entityPadding/3,i=yx.entityPadding/3,a=.85*yx.fontSize,o=e.node().getBBox(),s=[],c=!1,u=!1,l=0,h=0,f=0,d=0,p=o.height+2*r,g=1;n.forEach((function(t){void 0!==t.attributeKeyType&&(c=!0),void 0!==t.attributeComment&&(u=!0)})),n.forEach((function(n){var i="".concat(e.node().id,"-attr-").concat(g),o=0,y=t.append("text").attr("class","er entityLabel").attr("id","".concat(i,"-type")).attr("x",0).attr("y",0).attr("dominant-baseline","middle").attr("text-anchor","left").attr("style","font-family: "+wb().fontFamily+"; font-size: "+a+"px").text(n.attributeType),m=t.append("text").attr("class","er entityLabel").attr("id","".concat(i,"-name")).attr("x",0).attr("y",0).attr("dominant-baseline","middle").attr("text-anchor","left").attr("style","font-family: "+wb().fontFamily+"; font-size: "+a+"px").text(n.attributeName),v={};v.tn=y,v.nn=m;var b=y.node().getBBox(),_=m.node().getBBox();if(l=Math.max(l,b.width),h=Math.max(h,_.width),o=Math.max(b.height,_.height),c){var x=t.append("text").attr("class","er entityLabel").attr("id","".concat(i,"-key")).attr("x",0).attr("y",0).attr("dominant-baseline","middle").attr("text-anchor","left").attr("style","font-family: "+wb().fontFamily+"; font-size: "+a+"px").text(n.attributeKeyType||"");v.kn=x;var w=x.node().getBBox();f=Math.max(f,w.width),o=Math.max(o,w.height)}if(u){var k=t.append("text").attr("class","er entityLabel").attr("id","".concat(i,"-comment")).attr("x",0).attr("y",0).attr("dominant-baseline","middle").attr("text-anchor","left").attr("style","font-family: "+wb().fontFamily+"; font-size: "+a+"px").text(n.attributeComment||"");v.cn=k;var T=k.node().getBBox();d=Math.max(d,T.width),o=Math.max(o,T.height)}v.height=o,s.push(v),p+=o+2*r,g+=1}));var y=4;c&&(y+=2),u&&(y+=2);var m=l+h+f+d,v={width:Math.max(yx.minEntityWidth,Math.max(o.width+2*yx.entityPadding,m+i*y)),height:n.length>0?p:Math.max(yx.minEntityHeight,o.height+2*yx.entityPadding)};if(n.length>0){var b=Math.max(0,(v.width-m-i*y)/(y/2));e.attr("transform","translate("+v.width/2+","+(r+o.height/2)+")");var _=o.height+2*r,x="attributeBoxOdd";s.forEach((function(e){var n=_+r+e.height/2;e.tn.attr("transform","translate("+i+","+n+")");var a=t.insert("rect","#"+e.tn.node().id).attr("class","er ".concat(x)).attr("fill",yx.fill).attr("fill-opacity","100%").attr("stroke",yx.stroke).attr("x",0).attr("y",_).attr("width",l+2*i+b).attr("height",e.height+2*r),o=parseFloat(a.attr("x"))+parseFloat(a.attr("width"));e.nn.attr("transform","translate("+(o+i)+","+n+")");var s=t.insert("rect","#"+e.nn.node().id).attr("class","er ".concat(x)).attr("fill",yx.fill).attr("fill-opacity","100%").attr("stroke",yx.stroke).attr("x",o).attr("y",_).attr("width",h+2*i+b).attr("height",e.height+2*r),p=parseFloat(s.attr("x"))+parseFloat(s.attr("width"));if(c){e.kn.attr("transform","translate("+(p+i)+","+n+")");var g=t.insert("rect","#"+e.kn.node().id).attr("class","er ".concat(x)).attr("fill",yx.fill).attr("fill-opacity","100%").attr("stroke",yx.stroke).attr("x",p).attr("y",_).attr("width",f+2*i+b).attr("height",e.height+2*r);p=parseFloat(g.attr("x"))+parseFloat(g.attr("width"))}u&&(e.cn.attr("transform","translate("+(p+i)+","+n+")"),t.insert("rect","#"+e.cn.node().id).attr("class","er ".concat(x)).attr("fill",yx.fill).attr("fill-opacity","100%").attr("stroke",yx.stroke).attr("x",p).attr("y",_).attr("width",d+2*i+b).attr("height",e.height+2*r)),_+=e.height+2*r,x="attributeBoxOdd"==x?"attributeBoxEven":"attributeBoxOdd"}))}else v.height=Math.max(yx.minEntityHeight,p),e.attr("transform","translate("+v.width/2+","+v.height/2+")");return v}(a,s,e[i].attributes),u=c.width,l=c.height,h=a.insert("rect","#"+o).attr("class","er entityBox").attr("fill",yx.fill).attr("fill-opacity","100%").attr("stroke",yx.stroke).attr("x",0).attr("y",0).attr("width",u).attr("height",l).node().getBBox();n.setNode(i,{width:h.width,height:h.height,shape:"rect",id:i})})),r}(c,hx.getEntities(),s),l=function(t,e){return t.forEach((function(t){e.setEdge(t.entityA,t.entityB,{relationship:t},mx(t))})),t}(hx.getRelationships(),s);Kb().layout(s),function(t,e){e.nodes().forEach((function(n){void 0!==n&&void 0!==e.node(n)&&t.select("#"+n).attr("transform","translate("+(e.node(n).x-e.node(n).width/2)+","+(e.node(n).y-e.node(n).height/2)+" )")}))}(c,s),l.forEach((function(t){!function(t,e,n,r){vx++;var i=n.edge(e.entityA,e.entityB,mx(e)),a=Uu().x((function(t){return t.x})).y((function(t){return t.y})).curve(Vu),o=t.insert("path","#"+r).attr("class","er relationshipLine").attr("d",a(i.points)).attr("stroke",yx.stroke).attr("fill","none");e.relSpec.relType===hx.Identification.NON_IDENTIFYING&&o.attr("stroke-dasharray","8,8");var s="";switch(yx.arrowMarkerAbsolute&&(s=(s=(s=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search).replace(/\(/g,"\\(")).replace(/\)/g,"\\)")),e.relSpec.cardA){case hx.Cardinality.ZERO_OR_ONE:o.attr("marker-end","url("+s+"#"+gx.ZERO_OR_ONE_END+")");break;case hx.Cardinality.ZERO_OR_MORE:o.attr("marker-end","url("+s+"#"+gx.ZERO_OR_MORE_END+")");break;case hx.Cardinality.ONE_OR_MORE:o.attr("marker-end","url("+s+"#"+gx.ONE_OR_MORE_END+")");break;case hx.Cardinality.ONLY_ONE:o.attr("marker-end","url("+s+"#"+gx.ONLY_ONE_END+")")}switch(e.relSpec.cardB){case hx.Cardinality.ZERO_OR_ONE:o.attr("marker-start","url("+s+"#"+gx.ZERO_OR_ONE_START+")");break;case hx.Cardinality.ZERO_OR_MORE:o.attr("marker-start","url("+s+"#"+gx.ZERO_OR_MORE_START+")");break;case hx.Cardinality.ONE_OR_MORE:o.attr("marker-start","url("+s+"#"+gx.ONE_OR_MORE_START+")");break;case hx.Cardinality.ONLY_ONE:o.attr("marker-start","url("+s+"#"+gx.ONLY_ONE_START+")")}var c=o.node().getTotalLength(),u=o.node().getPointAtLength(.5*c),l="rel"+vx,h=t.append("text").attr("class","er relationshipLabel").attr("id",l).attr("x",u.x).attr("y",u.y).attr("text-anchor","middle").attr("dominant-baseline","middle").attr("style","font-family: "+wb().fontFamily+"; font-size: "+yx.fontSize+"px").text(e.roleA).node().getBBox();t.insert("rect","#"+l).attr("class","er relationshipLabelBox").attr("x",u.x-h.width/2).attr("y",u.y-h.height/2).attr("width",h.width).attr("height",h.height).attr("fill","white").attr("fill-opacity","85%")}(c,t,s,u)}));var h=yx.diagramPadding,f=c.node().getBBox(),d=f.width+2*h,p=f.height+2*h;lb(c,p,d,yx.useMaxWidth),c.attr("viewBox","".concat(f.x-h," ").concat(f.y-h," ").concat(d," ").concat(p)),f_(n.yy,c,e)};function xx(t){return xx="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},xx(t)}function wx(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}var kx,Tx,Cx="flowchart-",Ex=0,Sx=wb(),Ax={},Mx=[],Nx=[],Dx=[],Bx={},Lx={},Ox=0,Ix=!0,Rx=[],Fx=function(t){return $m.sanitizeText(t,Sx)},Px=function(t){for(var e=Object.keys(Ax),n=0;n<e.length;n++)if(Ax[e[n]].id===t)return Ax[e[n]].domId;return t},Yx=function(t,e,n,r){var i={start:t,end:e,type:void 0,text:""};void 0!==(r=n.text)&&(i.text=Fx(r.trim()),'"'===i.text[0]&&'"'===i.text[i.text.length-1]&&(i.text=i.text.substring(1,i.text.length-1))),void 0!==n&&(i.type=n.type,i.stroke=n.stroke,i.length=n.length),Mx.push(i)},jx=function(t,e){t.split(",").forEach((function(t){var n=t;void 0!==Ax[n]&&Ax[n].classes.push(e),void 0!==Bx[n]&&Bx[n].classes.push(e)}))},Ux=function(t){var e=au(".mermaidTooltip");null===(e._groups||e)[0][0]&&(e=au("body").append("div").attr("class","mermaidTooltip").style("opacity",0)),au(t).select("svg").selectAll("g.node").on("mouseover",(function(){var t=au(this);if(null!==t.attr("title")){var n=this.getBoundingClientRect();e.transition().duration(200).style("opacity",".9"),e.text(t.attr("title")).style("left",window.scrollX+n.left+(n.right-n.left)/2+"px").style("top",window.scrollY+n.top-14+document.body.scrollTop+"px"),t.classed("hover",!0)}})).on("mouseout",(function(){e.transition().duration(500).style("opacity",0),au(this).classed("hover",!1)}))};Rx.push(Ux);var zx=function(t){for(var e=0;e<Dx.length;e++)if(Dx[e].id===t)return e;return-1},$x=-1,qx=[],Hx=function t(e,n){var r=Dx[n].nodes;if(!(($x+=1)>2e3)){if(qx[$x]=n,Dx[n].id===e)return{result:!0,count:0};for(var i=0,a=1;i<r.length;){var o=zx(r[i]);if(o>=0){var s=t(e,o);if(s.result)return{result:!0,count:a+s.count};a+=s.count}i+=1}return{result:!1,count:a}}},Wx=function(t,e){var n=!1;return t.forEach((function(t){t.nodes.indexOf(e)>=0&&(n=!0)})),n},Vx=function(t,e){var n=[];return t.nodes.forEach((function(r,i){Wx(e,r)||n.push(t.nodes[i])})),{nodes:n}};const Gx={parseDirective:function(t,e,n){UE.parseDirective(this,t,e,n)},defaultConfig:function(){return yb.flowchart},setTitle:Nb,getTitle:Db,getAccDescription:Lb,setAccDescription:Bb,addVertex:function(t,e,n,r,i,a){var o,s=arguments.length>6&&void 0!==arguments[6]?arguments[6]:{},c=t;void 0!==c&&0!==c.trim().length&&(void 0===Ax[c]&&(Ax[c]={id:c,domId:Cx+c+"-"+Ex,styles:[],classes:[]}),Ex++,void 0!==e?(Sx=wb(),'"'===(o=Fx(e.trim()))[0]&&'"'===o[o.length-1]&&(o=o.substring(1,o.length-1)),Ax[c].text=o):void 0===Ax[c].text&&(Ax[c].text=t),void 0!==n&&(Ax[c].type=n),null!=r&&r.forEach((function(t){Ax[c].styles.push(t)})),null!=i&&i.forEach((function(t){Ax[c].classes.push(t)})),void 0!==a&&(Ax[c].dir=a),Ax[c].props=s)},lookUpDomId:Px,addLink:function(t,e,n,r){var i,a;for(i=0;i<t.length;i++)for(a=0;a<e.length;a++)Yx(t[i],e[a],n,r)},updateLinkInterpolate:function(t,e){t.forEach((function(t){"default"===t?Mx.defaultInterpolate=e:Mx[t].interpolate=e}))},updateLink:function(t,e){t.forEach((function(t){"default"===t?Mx.defaultStyle=e:(-1===db.isSubstringInArray("fill",e)&&e.push("fill:none"),Mx[t].style=e)}))},addClass:function(t,e){void 0===Nx[t]&&(Nx[t]={id:t,styles:[],textStyles:[]}),null!=e&&e.forEach((function(e){if(e.match("color")){var n=e.replace("fill","bgFill").replace("color","fill");Nx[t].textStyles.push(n)}Nx[t].styles.push(e)}))},setDirection:function(t){(kx=t).match(/.*</)&&(kx="RL"),kx.match(/.*\^/)&&(kx="BT"),kx.match(/.*>/)&&(kx="LR"),kx.match(/.*v/)&&(kx="TB")},setClass:jx,setTooltip:function(t,e){t.split(",").forEach((function(t){void 0!==e&&(Lx["gen-1"===Tx?Px(t):t]=Fx(e))}))},getTooltip:function(t){return Lx[t]},setClickEvent:function(t,e,n){t.split(",").forEach((function(t){!function(t,e,n){var r=Px(t);if("loose"===wb().securityLevel&&void 0!==e){var i=[];if("string"==typeof n){i=n.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(var a=0;a<i.length;a++){var o=i[a].trim();'"'===o.charAt(0)&&'"'===o.charAt(o.length-1)&&(o=o.substr(1,o.length-2)),i[a]=o}}0===i.length&&i.push(t),void 0!==Ax[t]&&(Ax[t].haveCallback=!0,Rx.push((function(){var t=document.querySelector('[id="'.concat(r,'"]'));null!==t&&t.addEventListener("click",(function(){var t;db.runFunc.apply(db,[e].concat(function(t){if(Array.isArray(t))return wx(t)}(t=i)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return wx(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?wx(t,e):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()))}),!1)})))}}(t,e,n)})),jx(t,"clickable")},setLink:function(t,e,n){t.split(",").forEach((function(t){void 0!==Ax[t]&&(Ax[t].link=db.formatUrl(e,Sx),Ax[t].linkTarget=n)})),jx(t,"clickable")},bindFunctions:function(t){Rx.forEach((function(e){e(t)}))},getDirection:function(){return kx.trim()},getVertices:function(){return Ax},getEdges:function(){return Mx},getClasses:function(){return Nx},clear:function(t){Ax={},Nx={},Mx=[],(Rx=[]).push(Ux),Dx=[],Bx={},Ox=0,Lx=[],Ix=!0,Tx=t||"gen-1",Mb()},setGen:function(t){Tx=t||"gen-1"},defaultStyle:function(){return"fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;"},addSubGraph:function(t,e,n){var r=t.trim(),i=n;t===n&&n.match(/\s/)&&(r=void 0);var a=[],s=function(t){var e,n={boolean:{},number:{},string:{}},r=[],i=t.filter((function(t){var i=xx(t);return t.stmt&&"dir"===t.stmt?(e=t.value,!1):""!==t.trim()&&(i in n?!n[i].hasOwnProperty(t)&&(n[i][t]=!0):!(r.indexOf(t)>=0)&&r.push(t))}));return{nodeList:i,dir:e}}(a.concat.apply(a,e)),c=s.nodeList,u=s.dir;if(a=c,"gen-1"===Tx){o.warn("LOOKING UP");for(var l=0;l<a.length;l++)a[l]=Px(a[l])}r=r||"subGraph"+Ox,i=Fx(i=i||""),Ox+=1;var h={id:r,nodes:a,title:i.trim(),classes:[],dir:u};return o.info("Adding",h.id,h.nodes,h.dir),h.nodes=Vx(h,Dx).nodes,Dx.push(h),Bx[r]=h,r},getDepthFirstPos:function(t){return qx[t]},indexNodes:function(){$x=-1,Dx.length>0&&Hx("none",Dx.length-1)},getSubGraphs:function(){return Dx},destructLink:function(t,e){var n,r=function(t){var e=t.trim(),n=e.slice(0,-1),r="arrow_open";switch(e.slice(-1)){case"x":r="arrow_cross","x"===e[0]&&(r="double_"+r,n=n.slice(1));break;case">":r="arrow_point","<"===e[0]&&(r="double_"+r,n=n.slice(1));break;case"o":r="arrow_circle","o"===e[0]&&(r="double_"+r,n=n.slice(1))}var i="normal",a=n.length-1;"="===n[0]&&(i="thick");var o=function(t,e){for(var n=e.length,r=0,i=0;i<n;++i)"."===e[i]&&++r;return r}(0,n);return o&&(i="dotted",a=o),{type:r,stroke:i,length:a}}(t);if(e){if(n=function(t){var e=t.trim(),n="arrow_open";switch(e[0]){case"<":n="arrow_point",e=e.slice(1);break;case"x":n="arrow_cross",e=e.slice(1);break;case"o":n="arrow_circle",e=e.slice(1)}var r="normal";return-1!==e.indexOf("=")&&(r="thick"),-1!==e.indexOf(".")&&(r="dotted"),{type:n,stroke:r}}(e),n.stroke!==r.stroke)return{type:"INVALID",stroke:"INVALID"};if("arrow_open"===n.type)n.type=r.type;else{if(n.type!==r.type)return{type:"INVALID",stroke:"INVALID"};n.type="double_"+n.type}return"double_arrow"===n.type&&(n.type="double_arrow_point"),n.length=r.length,n}return r},lex:{firstGraph:function(){return!!Ix&&(Ix=!1,!0)}},exists:Wx,makeUniq:Vx};var Xx=n(3602),Zx=n.n(Xx),Qx=n(4949),Kx=n.n(Qx),Jx=n(8284),tw=n.n(Jx);function ew(t,e,n){var r=.9*(e.width+e.height),i=[{x:r/2,y:0},{x:r,y:-r/2},{x:r/2,y:-r},{x:0,y:-r/2}],a=fw(t,r,r,i);return n.intersect=function(t){return Kx().intersect.polygon(n,i,t)},a}function nw(t,e,n){var r=e.height,i=r/4,a=e.width+2*i,o=[{x:i,y:0},{x:a-i,y:0},{x:a,y:-r/2},{x:a-i,y:-r},{x:i,y:-r},{x:0,y:-r/2}],s=fw(t,a,r,o);return n.intersect=function(t){return Kx().intersect.polygon(n,o,t)},s}function rw(t,e,n){var r=e.width,i=e.height,a=[{x:-i/2,y:0},{x:r,y:0},{x:r,y:-i},{x:-i/2,y:-i},{x:0,y:-i/2}],o=fw(t,r,i,a);return n.intersect=function(t){return Kx().intersect.polygon(n,a,t)},o}function iw(t,e,n){var r=e.width,i=e.height,a=[{x:-2*i/6,y:0},{x:r-i/6,y:0},{x:r+2*i/6,y:-i},{x:i/6,y:-i}],o=fw(t,r,i,a);return n.intersect=function(t){return Kx().intersect.polygon(n,a,t)},o}function aw(t,e,n){var r=e.width,i=e.height,a=[{x:2*i/6,y:0},{x:r+i/6,y:0},{x:r-2*i/6,y:-i},{x:-i/6,y:-i}],o=fw(t,r,i,a);return n.intersect=function(t){return Kx().intersect.polygon(n,a,t)},o}function ow(t,e,n){var r=e.width,i=e.height,a=[{x:-2*i/6,y:0},{x:r+2*i/6,y:0},{x:r-i/6,y:-i},{x:i/6,y:-i}],o=fw(t,r,i,a);return n.intersect=function(t){return Kx().intersect.polygon(n,a,t)},o}function sw(t,e,n){var r=e.width,i=e.height,a=[{x:i/6,y:0},{x:r-i/6,y:0},{x:r+2*i/6,y:-i},{x:-2*i/6,y:-i}],o=fw(t,r,i,a);return n.intersect=function(t){return Kx().intersect.polygon(n,a,t)},o}function cw(t,e,n){var r=e.width,i=e.height,a=[{x:0,y:0},{x:r+i/2,y:0},{x:r,y:-i/2},{x:r+i/2,y:-i},{x:0,y:-i}],o=fw(t,r,i,a);return n.intersect=function(t){return Kx().intersect.polygon(n,a,t)},o}function uw(t,e,n){var r=e.height,i=e.width+r/4,a=t.insert("rect",":first-child").attr("rx",r/2).attr("ry",r/2).attr("x",-i/2).attr("y",-r/2).attr("width",i).attr("height",r);return n.intersect=function(t){return Kx().intersect.rect(n,t)},a}function lw(t,e,n){var r=e.width,i=e.height,a=[{x:0,y:0},{x:r,y:0},{x:r,y:-i},{x:0,y:-i},{x:0,y:0},{x:-8,y:0},{x:r+8,y:0},{x:r+8,y:-i},{x:-8,y:-i},{x:-8,y:0}],o=fw(t,r,i,a);return n.intersect=function(t){return Kx().intersect.polygon(n,a,t)},o}function hw(t,e,n){var r=e.width,i=r/2,a=i/(2.5+r/50),o=e.height+a,s="M 0,"+a+" a "+i+","+a+" 0,0,0 "+r+" 0 a "+i+","+a+" 0,0,0 "+-r+" 0 l 0,"+o+" a "+i+","+a+" 0,0,0 "+r+" 0 l 0,"+-o,c=t.attr("label-offset-y",a).insert("path",":first-child").attr("d",s).attr("transform","translate("+-r/2+","+-(o/2+a)+")");return n.intersect=function(t){var e=Kx().intersect.rect(n,t),r=e.x-n.x;if(0!=i&&(Math.abs(r)<n.width/2||Math.abs(r)==n.width/2&&Math.abs(e.y-n.y)>n.height/2-a)){var o=a*a*(1-r*r/(i*i));0!=o&&(o=Math.sqrt(o)),o=a-o,t.y-n.y>0&&(o=-o),e.y+=o}return e},c}function fw(t,e,n,r){return t.insert("polygon",":first-child").attr("points",r.map((function(t){return t.x+","+t.y})).join(" ")).attr("transform","translate("+-e/2+","+n/2+")")}const dw=function(t){t.shapes().question=ew,t.shapes().hexagon=nw,t.shapes().stadium=uw,t.shapes().subroutine=lw,t.shapes().cylinder=hw,t.shapes().rect_left_inv_arrow=rw,t.shapes().lean_right=iw,t.shapes().lean_left=aw,t.shapes().trapezoid=ow,t.shapes().inv_trapezoid=sw,t.shapes().rect_right_inv_arrow=cw};var pw={};const gw=function(t){for(var e=Object.keys(t),n=0;n<e.length;n++)pw[e[n]]=t[e[n]]},yw=function(t,e){o.info("Drawing flowchart"),Gx.clear(),Gx.setGen("gen-1");var n=Zx().parser;n.yy=Gx;var r,i=wb().securityLevel;"sandbox"===i&&(r=au("#i"+e));var a=au("sandbox"===i?r.nodes()[0].contentDocument.body:"body"),s="sandbox"===i?r.nodes()[0].contentDocument:document;n.parse(t);var c=Gx.getDirection();void 0===c&&(c="TD");for(var u,l=wb().flowchart,h=l.nodeSpacing||50,f=l.rankSpacing||50,d=new(t_().Graph)({multigraph:!0,compound:!0}).setGraph({rankdir:c,nodesep:h,ranksep:f,marginx:8,marginy:8}).setDefaultEdgeLabel((function(){return{}})),p=Gx.getSubGraphs(),g=p.length-1;g>=0;g--)u=p[g],Gx.addVertex(u.id,u.title,"group",void 0,u.classes);var y=Gx.getVertices();o.warn("Get vertices",y);var m=Gx.getEdges(),v=0;for(v=p.length-1;v>=0;v--){u=p[v],ou("cluster").append("text");for(var b=0;b<u.nodes.length;b++)o.warn("Setting subgraph",u.nodes[b],Gx.lookUpDomId(u.nodes[b]),Gx.lookUpDomId(u.id)),d.setParent(Gx.lookUpDomId(u.nodes[b]),Gx.lookUpDomId(u.id))}(function(t,e,n,r,i){wb().securityLevel;var a=r?r.select('[id="'.concat(n,'"]')):au('[id="'.concat(n,'"]')),s=i||document;Object.keys(t).forEach((function(n){var r=t[n],i="default";r.classes.length>0&&(i=r.classes.join(" "));var c,u=Jv(r.styles),l=void 0!==r.text?r.text:r.id;if(zm(wb().flowchart.htmlLabels)){var h={label:l.replace(/fa[lrsb]?:fa-[\w-]+/g,(function(t){return"<i class='".concat(t.replace(":"," "),"'></i>")}))};(c=tw()(a,h).node()).parentNode.removeChild(c)}else{var f=s.createElementNS("http://www.w3.org/2000/svg","text");f.setAttribute("style",u.labelStyle.replace("color:","fill:"));for(var d=l.split($m.lineBreakRegex),p=0;p<d.length;p++){var g=s.createElementNS("http://www.w3.org/2000/svg","tspan");g.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),g.setAttribute("dy","1em"),g.setAttribute("x","1"),g.textContent=d[p],f.appendChild(g)}c=f}var y=0,m="";switch(r.type){case"round":y=5,m="rect";break;case"square":case"group":default:m="rect";break;case"diamond":m="question";break;case"hexagon":m="hexagon";break;case"odd":case"odd_right":m="rect_left_inv_arrow";break;case"lean_right":m="lean_right";break;case"lean_left":m="lean_left";break;case"trapezoid":m="trapezoid";break;case"inv_trapezoid":m="inv_trapezoid";break;case"circle":m="circle";break;case"ellipse":m="ellipse";break;case"stadium":m="stadium";break;case"subroutine":m="subroutine";break;case"cylinder":m="cylinder"}o.warn("Adding node",r.id,r.domId),e.setNode(Gx.lookUpDomId(r.id),{labelType:"svg",labelStyle:u.labelStyle,shape:m,label:c,rx:y,ry:y,class:i,style:u.style,id:Gx.lookUpDomId(r.id)})}))})(y,d,e,a,s),function(t,e){var n,r,i=0;if(void 0!==t.defaultStyle){var a=Jv(t.defaultStyle);n=a.style,r=a.labelStyle}t.forEach((function(a){i++;var o="L-"+a.start+"-"+a.end,s="LS-"+a.start,c="LE-"+a.end,u={};"arrow_open"===a.type?u.arrowhead="none":u.arrowhead="normal";var l="",h="";if(void 0!==a.style){var f=Jv(a.style);l=f.style,h=f.labelStyle}else switch(a.stroke){case"normal":l="fill:none",void 0!==n&&(l=n),void 0!==r&&(h=r);break;case"dotted":l="fill:none;stroke-width:2px;stroke-dasharray:3;";break;case"thick":l=" stroke-width: 3.5px;fill:none"}u.style=l,u.labelStyle=h,void 0!==a.interpolate?u.curve=Qv(a.interpolate,Pu):void 0!==t.defaultInterpolate?u.curve=Qv(t.defaultInterpolate,Pu):u.curve=Qv(pw.curve,Pu),void 0===a.text?void 0!==a.style&&(u.arrowheadStyle="fill: #333"):(u.arrowheadStyle="fill: #333",u.labelpos="c",zm(wb().flowchart.htmlLabels)?(u.labelType="html",u.label='<span id="L-'.concat(o,'" class="edgeLabel L-').concat(s,"' L-").concat(c,'" style="').concat(u.labelStyle,'">').concat(a.text.replace(/fa[lrsb]?:fa-[\w-]+/g,(function(t){return"<i class='".concat(t.replace(":"," "),"'></i>")})),"</span>")):(u.labelType="text",u.label=a.text.replace($m.lineBreakRegex,"\n"),void 0===a.style&&(u.style=u.style||"stroke: #333; stroke-width: 1.5px;fill:none"),u.labelStyle=u.labelStyle.replace("color:","fill:"))),u.id=o,u.class=s+" "+c,u.minlen=a.length||1,e.setEdge(Gx.lookUpDomId(a.start),Gx.lookUpDomId(a.end),u,i)}))}(m,d);var _=new(0,Kx().render);dw(_),_.arrows().none=function(t,e,n,r){var i=t.append("marker").attr("id",e).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerUnits","strokeWidth").attr("markerWidth",8).attr("markerHeight",6).attr("orient","auto").append("path").attr("d","M 0 0 L 0 0 L 0 0 z");Kx().util.applyStyle(i,n[r+"Style"])},_.arrows().normal=function(t,e){t.append("marker").attr("id",e).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerUnits","strokeWidth").attr("markerWidth",8).attr("markerHeight",6).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowheadPath").style("stroke-width",1).style("stroke-dasharray","1,0")};var x=a.select('[id="'.concat(e,'"]'));x.attr("xmlns:xlink","http://www.w3.org/1999/xlink"),o.warn(d),f_(n.yy,x,e);var w=a.select("#"+e+" g");_(w,d),w.selectAll("g.node").attr("title",(function(){return Gx.getTooltip(this.id)}));var k=l.diagramPadding,T=x.node().getBBox(),C=T.width+2*k,E=T.height+2*k;lb(x,E,C,l.useMaxWidth);var S="".concat(T.x-k," ").concat(T.y-k," ").concat(C," ").concat(E);for(o.debug("viewBox ".concat(S)),x.attr("viewBox",S),Gx.indexNodes("subGraph"+v),v=0;v<p.length;v++)if("undefined"!==(u=p[v]).title){var A=s.querySelectorAll("#"+e+' [id="'+Gx.lookUpDomId(u.id)+'"] rect'),M=s.querySelectorAll("#"+e+' [id="'+Gx.lookUpDomId(u.id)+'"]'),N=A[0].x.baseVal.value,D=A[0].y.baseVal.value,B=A[0].width.baseVal.value,L=au(M[0]).select(".label");L.attr("transform","translate(".concat(N+B/2,", ").concat(D+14,")")),L.attr("id",e+"Text");for(var O=0;O<u.classes.length;O++)M[0].classList.add(u.classes[O])}zm(l.htmlLabels);for(var I=s.querySelectorAll('[id="'+e+'"] .edgeLabel .label'),R=0;R<I.length;R++){var F=I[R],P=F.getBBox(),Y=s.createElementNS("http://www.w3.org/2000/svg","rect");Y.setAttribute("rx",0),Y.setAttribute("ry",0),Y.setAttribute("width",P.width),Y.setAttribute("height",P.height),F.insertBefore(Y,F.firstChild)}Object.keys(y).forEach((function(t){var n=y[t];if(n.link){var r=a.select("#"+e+' [id="'+Gx.lookUpDomId(t)+'"]');if(r){var o=s.createElementNS("http://www.w3.org/2000/svg","a");o.setAttributeNS("http://www.w3.org/2000/svg","class",n.classes.join(" ")),o.setAttributeNS("http://www.w3.org/2000/svg","href",n.link),o.setAttributeNS("http://www.w3.org/2000/svg","rel","noopener"),"sandbox"===i?o.setAttributeNS("http://www.w3.org/2000/svg","target","_top"):n.linkTarget&&o.setAttributeNS("http://www.w3.org/2000/svg","target",n.linkTarget);var c=r.insert((function(){return o}),":first-child"),u=r.select(".label-container");u&&c.append((function(){return u.node()}));var l=r.select(".label");l&&c.append((function(){return l.node()}))}}}))};var mw={};const vw=function(t){for(var e=Object.keys(t),n=0;n<e.length;n++)mw[e[n]]=t[e[n]]},bw=function(t,e){o.info("Drawing flowchart"),Gx.clear(),Gx.setGen("gen-2");var n=Zx().parser;n.yy=Gx,n.parse(t);var r=Gx.getDirection();void 0===r&&(r="TD");var i,a=wb().flowchart,s=a.nodeSpacing||50,c=a.rankSpacing||50,u=wb().securityLevel;"sandbox"===u&&(i=au("#i"+e));var l,h=au("sandbox"===u?i.nodes()[0].contentDocument.body:"body"),f="sandbox"===u?i.nodes()[0].contentDocument:document,d=new(t_().Graph)({multigraph:!0,compound:!0}).setGraph({rankdir:r,nodesep:s,ranksep:c,marginx:8,marginy:8}).setDefaultEdgeLabel((function(){return{}})),p=Gx.getSubGraphs();o.info("Subgraphs - ",p);for(var g=p.length-1;g>=0;g--)l=p[g],o.info("Subgraph - ",l),Gx.addVertex(l.id,l.title,"group",void 0,l.classes,l.dir);var y=Gx.getVertices(),m=Gx.getEdges();o.info(m);var v=0;for(v=p.length-1;v>=0;v--){l=p[v],ou("cluster").append("text");for(var b=0;b<l.nodes.length;b++)o.info("Setting up subgraphs",l.nodes[b],l.id),d.setParent(l.nodes[b],l.id)}(function(t,e,n,r,i){var a=r.select('[id="'.concat(n,'"]'));Object.keys(t).forEach((function(n){var r=t[n],s="default";r.classes.length>0&&(s=r.classes.join(" "));var c,u=Jv(r.styles),l=void 0!==r.text?r.text:r.id;if(zm(wb().flowchart.htmlLabels)){var h={label:l.replace(/fa[lrsb]?:fa-[\w-]+/g,(function(t){return"<i class='".concat(t.replace(":"," "),"'></i>")}))};(c=tw()(a,h).node()).parentNode.removeChild(c)}else{var f=i.createElementNS("http://www.w3.org/2000/svg","text");f.setAttribute("style",u.labelStyle.replace("color:","fill:"));for(var d=l.split($m.lineBreakRegex),p=0;p<d.length;p++){var g=i.createElementNS("http://www.w3.org/2000/svg","tspan");g.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),g.setAttribute("dy","1em"),g.setAttribute("x","1"),g.textContent=d[p],f.appendChild(g)}c=f}var y=0,m="";switch(r.type){case"round":y=5,m="rect";break;case"square":case"group":default:m="rect";break;case"diamond":m="question";break;case"hexagon":m="hexagon";break;case"odd":case"odd_right":m="rect_left_inv_arrow";break;case"lean_right":m="lean_right";break;case"lean_left":m="lean_left";break;case"trapezoid":m="trapezoid";break;case"inv_trapezoid":m="inv_trapezoid";break;case"circle":m="circle";break;case"ellipse":m="ellipse";break;case"stadium":m="stadium";break;case"subroutine":m="subroutine";break;case"cylinder":m="cylinder";break;case"doublecircle":m="doublecircle"}e.setNode(r.id,{labelStyle:u.labelStyle,shape:m,labelText:l,rx:y,ry:y,class:s,style:u.style,id:r.id,link:r.link,linkTarget:r.linkTarget,tooltip:Gx.getTooltip(r.id)||"",domId:Gx.lookUpDomId(r.id),haveCallback:r.haveCallback,width:"group"===r.type?500:void 0,dir:r.dir,type:r.type,props:r.props,padding:wb().flowchart.padding}),o.info("setNode",{labelStyle:u.labelStyle,shape:m,labelText:l,rx:y,ry:y,class:s,style:u.style,id:r.id,domId:Gx.lookUpDomId(r.id),width:"group"===r.type?500:void 0,type:r.type,dir:r.dir,props:r.props,padding:wb().flowchart.padding})}))})(y,d,e,h,f),function(t,e){o.info("abc78 edges = ",t);var n,r,i=0,a={};if(void 0!==t.defaultStyle){var s=Jv(t.defaultStyle);n=s.style,r=s.labelStyle}t.forEach((function(s){i++;var c="L-"+s.start+"-"+s.end;void 0===a[c]?(a[c]=0,o.info("abc78 new entry",c,a[c])):(a[c]++,o.info("abc78 new entry",c,a[c]));var u=c+"-"+a[c];o.info("abc78 new link id to be used is",c,u,a[c]);var l="LS-"+s.start,h="LE-"+s.end,f={style:"",labelStyle:""};switch(f.minlen=s.length||1,"arrow_open"===s.type?f.arrowhead="none":f.arrowhead="normal",f.arrowTypeStart="arrow_open",f.arrowTypeEnd="arrow_open",s.type){case"double_arrow_cross":f.arrowTypeStart="arrow_cross";case"arrow_cross":f.arrowTypeEnd="arrow_cross";break;case"double_arrow_point":f.arrowTypeStart="arrow_point";case"arrow_point":f.arrowTypeEnd="arrow_point";break;case"double_arrow_circle":f.arrowTypeStart="arrow_circle";case"arrow_circle":f.arrowTypeEnd="arrow_circle"}var d="",p="";switch(s.stroke){case"normal":d="fill:none;",void 0!==n&&(d=n),void 0!==r&&(p=r),f.thickness="normal",f.pattern="solid";break;case"dotted":f.thickness="normal",f.pattern="dotted",f.style="fill:none;stroke-width:2px;stroke-dasharray:3;";break;case"thick":f.thickness="thick",f.pattern="solid",f.style="stroke-width: 3.5px;fill:none;"}if(void 0!==s.style){var g=Jv(s.style);d=g.style,p=g.labelStyle}f.style=f.style+=d,f.labelStyle=f.labelStyle+=p,void 0!==s.interpolate?f.curve=Qv(s.interpolate,Pu):void 0!==t.defaultInterpolate?f.curve=Qv(t.defaultInterpolate,Pu):f.curve=Qv(mw.curve,Pu),void 0===s.text?void 0!==s.style&&(f.arrowheadStyle="fill: #333"):(f.arrowheadStyle="fill: #333",f.labelpos="c"),f.labelType="text",f.label=s.text.replace($m.lineBreakRegex,"\n"),void 0===s.style&&(f.style=f.style||"stroke: #333; stroke-width: 1.5px;fill:none;"),f.labelStyle=f.labelStyle.replace("color:","fill:"),f.id=u,f.classes="flowchart-link "+l+" "+h,e.setEdge(s.start,s.end,f,i)}))}(m,d);var _=h.select('[id="'.concat(e,'"]'));_.attr("xmlns:xlink","http://www.w3.org/1999/xlink"),f_(n.yy,_,e);var x=h.select("#"+e+" g");ax(x,d,["point","circle","cross"],"flowchart",e);var w=a.diagramPadding,k=_.node().getBBox(),T=k.width+2*w,C=k.height+2*w;if(o.debug("new ViewBox 0 0 ".concat(T," ").concat(C),"translate(".concat(w-d._label.marginx,", ").concat(w-d._label.marginy,")")),lb(_,C,T,a.useMaxWidth),_.attr("viewBox","0 0 ".concat(T," ").concat(C)),_.select("g").attr("transform","translate(".concat(w-d._label.marginx,", ").concat(w-k.y,")")),Gx.indexNodes("subGraph"+v),!a.htmlLabels)for(var E=f.querySelectorAll('[id="'+e+'"] .edgeLabel .label'),S=0;S<E.length;S++){var A=E[S],M=A.getBBox(),N=f.createElementNS("http://www.w3.org/2000/svg","rect");N.setAttribute("rx",0),N.setAttribute("ry",0),N.setAttribute("width",M.width),N.setAttribute("height",M.height),A.insertBefore(N,A.firstChild)}Object.keys(y).forEach((function(t){var n=y[t];if(n.link){var r=au("#"+e+' [id="'+t+'"]');if(r){var i=f.createElementNS("http://www.w3.org/2000/svg","a");i.setAttributeNS("http://www.w3.org/2000/svg","class",n.classes.join(" ")),i.setAttributeNS("http://www.w3.org/2000/svg","href",n.link),i.setAttributeNS("http://www.w3.org/2000/svg","rel","noopener"),"sandbox"===u?i.setAttributeNS("http://www.w3.org/2000/svg","target","_top"):n.linkTarget&&i.setAttributeNS("http://www.w3.org/2000/svg","target",n.linkTarget);var a=r.insert((function(){return i}),":first-child"),o=r.select(".label-container");o&&a.append((function(){return o.node()}));var s=r.select(".label");s&&a.append((function(){return s.node()}))}}}))};function _w(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}var xw,ww,kw="",Tw="",Cw="",Ew=[],Sw=[],Aw={},Mw=[],Nw=[],Dw="",Bw=["active","done","crit","milestone"],Lw=[],Ow=!1,Iw=!1,Rw=0,Fw=function(t,e,n,r){return!(r.indexOf(t.format(e.trim()))>=0)&&(t.isoWeekday()>=6&&n.indexOf("weekends")>=0||n.indexOf(t.format("dddd").toLowerCase())>=0||n.indexOf(t.format(e.trim()))>=0)},Pw=function(t,e,n,r){if(n.length&&!t.manualEndTime){var a=i()(t.startTime,e,!0);a.add(1,"d");var o=i()(t.endTime,e,!0),s=Yw(a,o,e,n,r);t.endTime=o.toDate(),t.renderEndTime=s}},Yw=function(t,e,n,r,i){for(var a=!1,o=null;t<=e;)a||(o=e.toDate()),(a=Fw(t,n,r,i))&&e.add(1,"d"),t.add(1,"d");return o},jw=function(t,e,n){n=n.trim();var r=/^after\s+([\d\w- ]+)/.exec(n.trim());if(null!==r){var a=null;if(r[1].split(" ").forEach((function(t){var e=Vw(t);void 0!==e&&(a?e.endTime>a.endTime&&(a=e):a=e)})),a)return a.endTime;var s=new Date;return s.setHours(0,0,0,0),s}var c=i()(n,e.trim(),!0);return c.isValid()?c.toDate():(o.debug("Invalid date:"+n),o.debug("With date format:"+e.trim()),new Date)},Uw=function(t,e){if(null!==t)switch(t[2]){case"s":e.add(t[1],"seconds");break;case"m":e.add(t[1],"minutes");break;case"h":e.add(t[1],"hours");break;case"d":e.add(t[1],"days");break;case"w":e.add(t[1],"weeks")}return e.toDate()},zw=function(t,e,n,r){r=r||!1,n=n.trim();var a=i()(n,e.trim(),!0);return a.isValid()?(r&&a.add(1,"d"),a.toDate()):Uw(/^([\d]+)([wdhms])/.exec(n.trim()),i()(t))},$w=0,qw=function(t){return void 0===t?"task"+($w+=1):t},Hw=[],Ww={},Vw=function(t){var e=Ww[t];return Hw[e]},Gw=function(){for(var t=function(t){var e=Hw[t],n="";switch(Hw[t].raw.startTime.type){case"prevTaskEnd":var r=Vw(e.prevTaskId);e.startTime=r.endTime;break;case"getStartDate":(n=jw(0,kw,Hw[t].raw.startTime.startData))&&(Hw[t].startTime=n)}return Hw[t].startTime&&(Hw[t].endTime=zw(Hw[t].startTime,kw,Hw[t].raw.endTime.data,Ow),Hw[t].endTime&&(Hw[t].processed=!0,Hw[t].manualEndTime=i()(Hw[t].raw.endTime.data,"YYYY-MM-DD",!0).isValid(),Pw(Hw[t],kw,Sw,Ew))),Hw[t].processed},e=!0,n=0;n<Hw.length;n++)t(n),e=e&&Hw[n].processed;return e},Xw=function(t,e){t.split(",").forEach((function(t){var n=Vw(t);void 0!==n&&n.classes.push(e)}))},Zw=function(t,e){Lw.push((function(){var n=document.querySelector('[id="'.concat(t,'"]'));null!==n&&n.addEventListener("click",(function(){e()}))})),Lw.push((function(){var n=document.querySelector('[id="'.concat(t,'-text"]'));null!==n&&n.addEventListener("click",(function(){e()}))}))};const Qw={parseDirective:function(t,e,n){UE.parseDirective(this,t,e,n)},getConfig:function(){return wb().gantt},clear:function(){Mw=[],Nw=[],Dw="",Lw=[],$w=0,xw=void 0,ww=void 0,Hw=[],kw="",Tw="",Cw="",Ew=[],Sw=[],Ow=!1,Iw=!1,Rw=0,Aw={},Mb()},setDateFormat:function(t){kw=t},getDateFormat:function(){return kw},enableInclusiveEndDates:function(){Ow=!0},endDatesAreInclusive:function(){return Ow},enableTopAxis:function(){Iw=!0},topAxisEnabled:function(){return Iw},setAxisFormat:function(t){Tw=t},getAxisFormat:function(){return Tw},setTodayMarker:function(t){Cw=t},getTodayMarker:function(){return Cw},setTitle:Nb,getTitle:Db,setAccDescription:Bb,getAccDescription:Lb,addSection:function(t){Dw=t,Mw.push(t)},getSections:function(){return Mw},getTasks:function(){for(var t=Gw(),e=0;!t&&e<10;)t=Gw(),e++;return Nw=Hw},addTask:function(t,e){var n={section:Dw,type:Dw,processed:!1,manualEndTime:!1,renderEndTime:null,raw:{data:e},task:t,classes:[]},r=function(t,e){var n=(":"===e.substr(0,1)?e.substr(1,e.length):e).split(","),r={};Kw(n,r,Bw);for(var i=0;i<n.length;i++)n[i]=n[i].trim();switch(n.length){case 1:r.id=qw(),r.startTime={type:"prevTaskEnd",id:t},r.endTime={data:n[0]};break;case 2:r.id=qw(),r.startTime={type:"getStartDate",startData:n[0]},r.endTime={data:n[1]};break;case 3:r.id=qw(n[0]),r.startTime={type:"getStartDate",startData:n[1]},r.endTime={data:n[2]}}return r}(ww,e);n.raw.startTime=r.startTime,n.raw.endTime=r.endTime,n.id=r.id,n.prevTaskId=ww,n.active=r.active,n.done=r.done,n.crit=r.crit,n.milestone=r.milestone,n.order=Rw,Rw++;var i=Hw.push(n);ww=n.id,Ww[n.id]=i-1},findTaskById:Vw,addTaskOrg:function(t,e){var n={section:Dw,type:Dw,description:t,task:t,classes:[]},r=function(t,e){var n=(":"===e.substr(0,1)?e.substr(1,e.length):e).split(","),r={};Kw(n,r,Bw);for(var a=0;a<n.length;a++)n[a]=n[a].trim();var o="";switch(n.length){case 1:r.id=qw(),r.startTime=t.endTime,o=n[0];break;case 2:r.id=qw(),r.startTime=jw(0,kw,n[0]),o=n[1];break;case 3:r.id=qw(n[0]),r.startTime=jw(0,kw,n[1]),o=n[2]}return o&&(r.endTime=zw(r.startTime,kw,o,Ow),r.manualEndTime=i()(o,"YYYY-MM-DD",!0).isValid(),Pw(r,kw,Sw,Ew)),r}(xw,e);n.startTime=r.startTime,n.endTime=r.endTime,n.id=r.id,n.active=r.active,n.done=r.done,n.crit=r.crit,n.milestone=r.milestone,xw=n,Nw.push(n)},setIncludes:function(t){Ew=t.toLowerCase().split(/[\s,]+/)},getIncludes:function(){return Ew},setExcludes:function(t){Sw=t.toLowerCase().split(/[\s,]+/)},getExcludes:function(){return Sw},setClickEvent:function(t,e,n){t.split(",").forEach((function(t){!function(t,e,n){if("loose"===wb().securityLevel&&void 0!==e){var r=[];if("string"==typeof n){r=n.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(var i=0;i<r.length;i++){var a=r[i].trim();'"'===a.charAt(0)&&'"'===a.charAt(a.length-1)&&(a=a.substr(1,a.length-2)),r[i]=a}}0===r.length&&r.push(t),void 0!==Vw(t)&&Zw(t,(function(){var t;db.runFunc.apply(db,[e].concat(function(t){if(Array.isArray(t))return _w(t)}(t=r)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return _w(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_w(t,e):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()))}))}}(t,e,n)})),Xw(t,"clickable")},setLink:function(t,e){var n=e;"loose"!==wb().securityLevel&&(n=(0,Bm.N)(e)),t.split(",").forEach((function(t){void 0!==Vw(t)&&(Zw(t,(function(){window.open(n,"_self")})),Aw[t]=n)})),Xw(t,"clickable")},getLinks:function(){return Aw},bindFunctions:function(t){Lw.forEach((function(e){e(t)}))},durationToDate:Uw,isInvalidDate:Fw};function Kw(t,e,n){for(var r=!0;r;)r=!1,n.forEach((function(n){var i=new RegExp("^\\s*"+n+"\\s*$");t[0].match(i)&&(e[n]=!0,t.shift(1),r=!0)}))}var Jw,tk=n(9959),ek=n.n(tk);tk.parser.yy=Qw;const nk=function(t,e){var n=wb().gantt;tk.parser.yy.clear(),tk.parser.parse(t);var r,a=wb().securityLevel;"sandbox"===a&&(r=au("#i"+e));var o=au("sandbox"===a?r.nodes()[0].contentDocument.body:"body"),s="sandbox"===a?r.nodes()[0].contentDocument:document,c=s.getElementById(e);void 0===(Jw=c.parentElement.offsetWidth)&&(Jw=1200),void 0!==n.useWidth&&(Jw=n.useWidth);var h=tk.parser.yy.getTasks(),f=h.length*(n.barHeight+n.barGap)+2*n.topPadding;c.setAttribute("viewBox","0 0 "+Jw+" "+f);for(var d=o.select('[id="'.concat(e,'"]')),p=function(){return Zi.apply($s(mo,vo,Ga,Wa,Pa,Ra,Oa,Ba,Na,ko).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}().domain([l(h,(function(t){return t.startTime})),u(h,(function(t){return t.endTime}))]).rangeRound([0,Jw-n.leftPadding-n.rightPadding]),g=[],y=0;y<h.length;y++)g.push(h[y].type);var m=g;g=function(t){for(var e={},n=[],r=0,i=t.length;r<i;++r)Object.prototype.hasOwnProperty.call(e,t[r])||(e[t[r]]=!0,n.push(t[r]));return n}(g),h.sort((function(t,e){var n=t.startTime,r=e.startTime,i=0;return n>r?i=1:n<r&&(i=-1),i})),function(t,r,a){var o=n.barHeight,c=o+n.barGap,u=n.topPadding,l=n.leftPadding;fa().domain([0,g.length]).range(["#00B9FA","#F95002"]).interpolate(Yr),function(t,e,r,a,o,s,c,u){var l=s.reduce((function(t,e){var n=e.startTime;return t?Math.min(t,n):n}),0),h=s.reduce((function(t,e){var n=e.endTime;return t?Math.max(t,n):n}),0),f=tk.parser.yy.getDateFormat();if(l&&h){for(var g=[],y=null,m=i()(l);m.valueOf()<=h;)tk.parser.yy.isInvalidDate(m,f,c,u)?y?y.end=m.clone():y={start:m.clone(),end:m.clone()}:y&&(g.push(y),y=null),m.add(1,"d");d.append("g").selectAll("rect").data(g).enter().append("rect").attr("id",(function(t){return"exclude-"+t.start.format("YYYY-MM-DD")})).attr("x",(function(t){return p(t.start)+r})).attr("y",n.gridLineStartPadding).attr("width",(function(t){var e=t.end.clone().add(1,"day");return p(e)-p(t.start)})).attr("height",o-e-n.gridLineStartPadding).attr("transform-origin",(function(e,n){return(p(e.start)+r+.5*(p(e.end)-p(e.start))).toString()+"px "+(n*t+.5*o).toString()+"px"})).attr("class","exclude-range")}}(c,u,l,0,a,t,tk.parser.yy.getExcludes(),tk.parser.yy.getIncludes()),function(t,e,r,i){var a,o=(a=p,v(3,a)).tickSize(-i+e+n.gridLineStartPadding).tickFormat(jl(tk.parser.yy.getAxisFormat()||n.axisFormat||"%Y-%m-%d"));if(d.append("g").attr("class","grid").attr("transform","translate("+t+", "+(i-50)+")").call(o).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10).attr("dy","1em"),Qw.topAxisEnabled()||n.topAxis){var s=function(t){return v(1,t)}(p).tickSize(-i+e+n.gridLineStartPadding).tickFormat(jl(tk.parser.yy.getAxisFormat()||n.axisFormat||"%Y-%m-%d"));d.append("g").attr("class","grid").attr("transform","translate("+t+", "+e+")").call(s).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10)}}(l,u,0,a),function(t,r,i,a,o,s,c){d.append("g").selectAll("rect").data(t).enter().append("rect").attr("x",0).attr("y",(function(t,e){return t.order*r+i-2})).attr("width",(function(){return c-n.rightPadding/2})).attr("height",r).attr("class",(function(t){for(var e=0;e<g.length;e++)if(t.type===g[e])return"section section"+e%n.numberSectionStyles;return"section section0"}));var u=d.append("g").selectAll("rect").data(t).enter(),l=Qw.getLinks();if(u.append("rect").attr("id",(function(t){return t.id})).attr("rx",3).attr("ry",3).attr("x",(function(t){return t.milestone?p(t.startTime)+a+.5*(p(t.endTime)-p(t.startTime))-.5*o:p(t.startTime)+a})).attr("y",(function(t,e){return t.order*r+i})).attr("width",(function(t){return t.milestone?o:p(t.renderEndTime||t.endTime)-p(t.startTime)})).attr("height",o).attr("transform-origin",(function(t,e){return e=t.order,(p(t.startTime)+a+.5*(p(t.endTime)-p(t.startTime))).toString()+"px "+(e*r+i+.5*o).toString()+"px"})).attr("class",(function(t){var e="";t.classes.length>0&&(e=t.classes.join(" "));for(var r=0,i=0;i<g.length;i++)t.type===g[i]&&(r=i%n.numberSectionStyles);var a="";return t.active?t.crit?a+=" activeCrit":a=" active":t.done?a=t.crit?" doneCrit":" done":t.crit&&(a+=" crit"),0===a.length&&(a=" task"),t.milestone&&(a=" milestone "+a),"task"+(a+=r)+" "+e})),u.append("text").attr("id",(function(t){return t.id+"-text"})).text((function(t){return t.task})).attr("font-size",n.fontSize).attr("x",(function(t){var e=p(t.startTime),r=p(t.renderEndTime||t.endTime);t.milestone&&(e+=.5*(p(t.endTime)-p(t.startTime))-.5*o),t.milestone&&(r=e+o);var i=this.getBBox().width;return i>r-e?r+i+1.5*n.leftPadding>c?e+a-5:r+a+5:(r-e)/2+e+a})).attr("y",(function(t,e){return t.order*r+n.barHeight/2+(n.fontSize/2-2)+i})).attr("text-height",o).attr("class",(function(t){var e=p(t.startTime),r=p(t.endTime);t.milestone&&(r=e+o);var i=this.getBBox().width,a="";t.classes.length>0&&(a=t.classes.join(" "));for(var s=0,u=0;u<g.length;u++)t.type===g[u]&&(s=u%n.numberSectionStyles);var l="";return t.active&&(l=t.crit?"activeCritText"+s:"activeText"+s),t.done?l=t.crit?l+" doneCritText"+s:l+" doneText"+s:t.crit&&(l=l+" critText"+s),t.milestone&&(l+=" milestoneText"),i>r-e?r+i+1.5*n.leftPadding>c?a+" taskTextOutsideLeft taskTextOutside"+s+" "+l:a+" taskTextOutsideRight taskTextOutside"+s+" "+l+" width-"+i:a+" taskText taskText"+s+" "+l+" width-"+i})),"sandbox"===wb().securityLevel){var h;h=au("#i"+e),au(h.nodes()[0].contentDocument.body);var f=h.nodes()[0].contentDocument;u.filter((function(t){return void 0!==l[t.id]})).each((function(t){var e=f.querySelector("#"+t.id),n=f.querySelector("#"+t.id+"-text"),r=e.parentNode,i=f.createElement("a");i.setAttribute("xlink:href",l[t.id]),i.setAttribute("target","_top"),r.appendChild(i),i.appendChild(e),i.appendChild(n)}))}}(t,c,u,l,o,0,r),function(t,e){for(var r=[],i=0,a=0;a<g.length;a++)r[a]=[g[a],(o=g[a],c=m,function(t){for(var e=t.length,n={};e;)n[t[--e]]=(n[t[e]]||0)+1;return n}(c)[o]||0)];var o,c;d.append("g").selectAll("text").data(r).enter().append((function(t){var e=t[0].split($m.lineBreakRegex),n=-(e.length-1)/2,r=s.createElementNS("http://www.w3.org/2000/svg","text");r.setAttribute("dy",n+"em");for(var i=0;i<e.length;i++){var a=s.createElementNS("http://www.w3.org/2000/svg","tspan");a.setAttribute("alignment-baseline","central"),a.setAttribute("x","10"),i>0&&a.setAttribute("dy","1em"),a.textContent=e[i],r.appendChild(a)}return r})).attr("x",10).attr("y",(function(n,a){if(!(a>0))return n[1]*t/2+e;for(var o=0;o<a;o++)return i+=r[a-1][1],n[1]*t/2+i*t+e})).attr("font-size",n.sectionFontSize).attr("font-size",n.sectionFontSize).attr("class",(function(t){for(var e=0;e<g.length;e++)if(t[0]===g[e])return"sectionTitle sectionTitle"+e%n.numberSectionStyles;return"sectionTitle"}))}(c,u),function(t,e,r,i){var a=Qw.getTodayMarker();if("off"!==a){var o=d.append("g").attr("class","today"),s=new Date,c=o.append("line");c.attr("x1",p(s)+t).attr("x2",p(s)+t).attr("y1",n.titleTopMargin).attr("y2",i-n.titleTopMargin).attr("class","today"),""!==a&&c.attr("style",a.replace(/,/g,";"))}}(l,0,0,a)}(h,Jw,f),lb(d,f,Jw,n.useMaxWidth),d.append("text").text(tk.parser.yy.getTitle()).attr("x",Jw/2).attr("y",n.titleTopMargin).attr("class","titleText"),f_(tk.parser.yy,d,e)};function rk(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function ik(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?rk(Object(n),!0).forEach((function(e){ak(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):rk(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function ak(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var ok=wb().gitGraph.mainBranchName,sk=wb().gitGraph.mainBranchOrder,ck={},uk=null,lk={};lk[ok]={name:ok,order:sk};var hk={};hk[ok]=uk;var fk=ok,dk="LR",pk=0;function gk(){return nb({length:7})}var yk={},mk=function(t){if(t=$m.sanitizeText(t,wb()),void 0===hk[t]){var e=new Error('Trying to checkout branch which is not yet created. (Help try using "branch '+t+'")');throw e.hash={text:"checkout "+t,token:"checkout "+t,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:['"branch '+t+'"']},e}var n=hk[fk=t];uk=ck[n]};function vk(t,e,n){var r=t.indexOf(e);-1===r?t.push(n):t.splice(r,1,n)}function bk(t){var e=t.reduce((function(t,e){return t.seq>e.seq?t:e}),t[0]),n="";t.forEach((function(t){n+=t===e?"\t*":"\t|"}));var r,i,a,s=[n,e.id,e.seq];for(var c in hk)hk[c]===e.id&&s.push(c);if(o.debug(s.join(" ")),e.parents&&2==e.parents.length){var u=ck[e.parents[0]];vk(t,e,u),t.push(ck[e.parents[1]])}else{if(0==e.parents.length)return;var l=ck[e.parents];vk(t,e,l)}r=t,i=function(t){return t.id},a=Object.create(null),bk(t=r.reduce((function(t,e){var n=i(e);return a[n]||(a[n]=!0,t.push(e)),t}),[]))}var _k=function(){var t=Object.keys(ck).map((function(t){return ck[t]}));return t.forEach((function(t){o.debug(t.id)})),t.sort((function(t,e){return t.seq-e.seq})),t},xk={NORMAL:0,REVERSE:1,HIGHLIGHT:2,MERGE:3};const wk={parseDirective:function(t,e,n){UE.parseDirective(this,t,e,n)},getConfig:function(){return wb().gitGraph},setDirection:function(t){dk=t},setOptions:function(t){o.debug("options str",t),t=(t=t&&t.trim())||"{}";try{yk=JSON.parse(t)}catch(t){o.error("error while parsing gitGraph options",t.message)}},getOptions:function(){return yk},commit:function(t,e,n,r){o.debug("Entering commit:",t,e,n,r),e=$m.sanitizeText(e,wb()),t=$m.sanitizeText(t,wb()),r=$m.sanitizeText(r,wb());var i={id:e||pk+"-"+gk(),message:t,seq:pk++,type:n||xk.NORMAL,tag:r||"",parents:null==uk?[]:[uk.id],branch:fk};uk=i,ck[i.id]=i,hk[fk]=i.id,o.debug("in pushCommit "+i.id)},branch:function(t,e){if(t=$m.sanitizeText(t,wb()),void 0!==hk[t]){var n=new Error('Trying to create an existing branch. (Help: Either use a new name if you want create a new branch or try using "checkout '+t+'")');throw n.hash={text:"branch "+t,token:"branch "+t,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:['"checkout '+t+'"']},n}hk[t]=null!=uk?uk.id:null,lk[t]={name:t,order:e?parseInt(e,10):null},mk(t),o.debug("in createBranch")},merge:function(t,e){t=$m.sanitizeText(t,wb());var n=ck[hk[fk]],r=ck[hk[t]];if(fk===t){var i=new Error('Incorrect usage of "merge". Cannot merge a branch to itself');throw i.hash={text:"merge "+t,token:"merge "+t,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["branch abc"]},i}if(void 0===n||!n){var a=new Error('Incorrect usage of "merge". Current branch ('+fk+")has no commits");throw a.hash={text:"merge "+t,token:"merge "+t,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["commit"]},a}if(void 0===hk[t]){var s=new Error('Incorrect usage of "merge". Branch to be merged ('+t+") does not exist");throw s.hash={text:"merge "+t,token:"merge "+t,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["branch "+t]},s}if(void 0===r||!r){var c=new Error('Incorrect usage of "merge". Branch to be merged ('+t+") has no commits");throw c.hash={text:"merge "+t,token:"merge "+t,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:['"commit"']},c}if(n===r){var u=new Error('Incorrect usage of "merge". Both branches have same head');throw u.hash={text:"merge "+t,token:"merge "+t,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["branch abc"]},u}var l={id:pk+"-"+gk(),message:"merged branch "+t+" into "+fk,seq:pk++,parents:[null==uk?null:uk.id,hk[t]],branch:fk,type:xk.MERGE,tag:e||""};uk=l,ck[l.id]=l,hk[fk]=l.id,o.debug(hk),o.debug("in mergeBranch")},checkout:mk,prettyPrint:function(){o.debug(ck),bk([_k()[0]])},clear:function(){ck={},uk=null;var t=wb().gitGraph.mainBranchName,e=wb().gitGraph.mainBranchOrder;(hk={})[t]=null,(lk={})[t]={name:t,order:e},fk=t,pk=0,Mb()},getBranchesAsObjArray:function(){return Object.values(lk).map((function(t,e){return null!==t.order?t:ik(ik({},t),{},{order:parseFloat("0.".concat(e),10)})})).sort((function(t,e){return t.order-e.order})).map((function(t){return{name:t.name}}))},getBranches:function(){return hk},getCommits:function(){return ck},getCommitsArray:_k,getCurrentBranch:function(){return fk},getDirection:function(){return dk},getHead:function(){return uk},setTitle:Nb,getTitle:Db,getAccDescription:Lb,setAccDescription:Bb,commitType:xk};var kk=n(2553),Tk=n.n(kk),Ck={},Ek={},Sk={},Ak=[],Mk=0,Nk=function(t,e,n){var r=wb().gitGraph,i=t.append("g").attr("class","commit-bullets"),a=t.append("g").attr("class","commit-labels"),o=0;Object.keys(e).sort((function(t,n){return e[t].seq-e[n].seq})).forEach((function(t,s){var c=e[t],u=Ek[c.branch].pos,l=o+10;if(n){var h;switch(c.type){case 0:default:h="commit-normal";break;case 1:h="commit-reverse";break;case 2:h="commit-highlight";break;case 3:h="commit-merge"}if(2===c.type){var f=i.append("rect");f.attr("x",l-10),f.attr("y",u-10),f.attr("height",20),f.attr("width",20),f.attr("class","commit "+c.id+" commit-highlight"+Ek[c.branch].index+" "+h+"-outer"),i.append("rect").attr("x",l-6).attr("y",u-6).attr("height",12).attr("width",12).attr("class","commit "+c.id+" commit"+Ek[c.branch].index+" "+h+"-inner")}else{var d=i.append("circle");if(d.attr("cx",l),d.attr("cy",u),d.attr("r",3===c.type?9:10),d.attr("class","commit "+c.id+" commit"+Ek[c.branch].index),3===c.type){var p=i.append("circle");p.attr("cx",l),p.attr("cy",u),p.attr("r",6),p.attr("class","commit "+h+" "+c.id+" commit"+Ek[c.branch].index)}1===c.type&&i.append("path").attr("d","M ".concat(l-5,",").concat(u-5,"L").concat(l+5,",").concat(u+5,"M").concat(l-5,",").concat(u+5,"L").concat(l+5,",").concat(u-5)).attr("class","commit "+h+" "+c.id+" commit"+Ek[c.branch].index)}}if(Sk[c.id]={x:o+10,y:u},n){if(3!==c.type&&r.showCommitLabel){var g=a.insert("rect").attr("class","commit-label-bkg"),y=a.append("text").attr("x",o).attr("y",u+25).attr("class","commit-label").text(c.id),m=y.node().getBBox();g.attr("x",o+10-m.width/2-2).attr("y",u+13.5).attr("width",m.width+4).attr("height",m.height+4),y.attr("x",o+10-m.width/2)}if(c.tag){var v=a.insert("polygon"),b=a.append("circle"),_=a.append("text").attr("y",u-16).attr("class","tag-label").text(c.tag),x=_.node().getBBox();_.attr("x",o+10-x.width/2);var w=x.height/2,k=u-19.2;v.attr("class","tag-label-bkg").attr("points","\n ".concat(o-x.width/2-2,",").concat(k+2,"\n ").concat(o-x.width/2-2,",").concat(k-2,"\n ").concat(o+10-x.width/2-4,",").concat(k-w-2,"\n ").concat(o+10+x.width/2+4,",").concat(k-w-2,"\n ").concat(o+10+x.width/2+4,",").concat(k+w+2,"\n ").concat(o+10-x.width/2-4,",").concat(k+w+2)),b.attr("cx",o-x.width/2+2).attr("cy",k).attr("r",1.5).attr("class","tag-hole")}}(o+=50)>Mk&&(Mk=o)}))},Dk=function t(e,n,r){var i=r||0,a=e+Math.abs(e-n)/2;if(i>5)return a;for(var o=!0,s=0;s<Ak.length;s++)Math.abs(Ak[s]-a)<10&&(o=!1);return o?(Ak.push(a),a):t(e,n-Math.abs(e-n)/5,i)};const Bk=function(t,e,n){Ek={},Sk={},Ck={},Mk=0,Ak=[];var r=wb(),i=wb().gitGraph,a=Tk().parser;a.yy=wk,a.yy.clear(),o.debug("in gitgraph renderer",t+"\n","id:",e,n),a.parse(t+"\n"),wk.getDirection(),Ck=wk.getCommits();var s=wk.getBranchesAsObjArray(),c=0;s.forEach((function(t,e){Ek[t.name]={pos:c,index:e},c+=50}));var u=au('[id="'.concat(e,'"]'));f_(a.yy,u,e),Nk(u,Ck,!1),i.showBranches&&function(t,e){wb().gitGraph;var n=t.append("g");e.forEach((function(t,e){var r=Ek[t.name].pos,i=n.append("line");i.attr("x1",0),i.attr("y1",r),i.attr("x2",Mk),i.attr("y2",r),i.attr("class","branch branch"+e),Ak.push(r);var a=function(t){var e=document.createElementNS("http://www.w3.org/2000/svg","text"),n=[];n="string"==typeof t?t.split(/\\n|\n|<br\s*\/?>/gi):Array.isArray(t)?t:[];for(var r=0;r<n.length;r++){var i=document.createElementNS("http://www.w3.org/2000/svg","tspan");i.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),i.setAttribute("dy","1em"),i.setAttribute("x","0"),i.setAttribute("class","row"),i.textContent=n[r].trim(),e.appendChild(i)}return e}(t.name),o=n.insert("rect"),s=n.insert("g").attr("class","branchLabel").insert("g").attr("class","label branch-label"+e);s.node().appendChild(a);var c=a.getBBox();o.attr("class","branchLabelBkg label"+e).attr("rx",4).attr("ry",4).attr("x",-c.width-4).attr("y",-c.height/2+8).attr("width",c.width+18).attr("height",c.height+4),s.attr("transform","translate("+(-c.width-14)+", "+(r-c.height/2-1)+")"),o.attr("transform","translate(-19, "+(r-c.height/2)+")")}))}(u,s),function(t,e){var n=t.append("g").attr("class","commit-arrows");Object.keys(e).forEach((function(t,r){var i=e[t];i.parents&&i.parents.length>0&&i.parents.forEach((function(t){!function(t,e,n,r){var i=wb(),a=Sk[e.id],o=Sk[n.id],s=function(t,e,n){return Sk[e.id],Sk[t.id],Object.keys(n).filter((function(r){return n[r].branch===e.branch&&n[r].seq>t.seq&&n[r].seq<e.seq})).length>0}(e,n,r);i.arrowMarkerAbsolute&&(window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search).replace(/\(/g,"\\(").replace(/\)/g,"\\)");var c,u="",l="",h=0,f=0,d=Ek[n.branch].index;if(s){u="A 10 10, 0, 0, 0,",l="A 10 10, 0, 0, 1,",h=10,f=10,d=Ek[n.branch].index;var p=a.y<o.y?Dk(a.y,o.y):Dk(o.y,a.y);c=a.y<o.y?"M ".concat(a.x," ").concat(a.y," L ").concat(a.x," ").concat(p-h," ").concat(u," ").concat(a.x+f," ").concat(p," L ").concat(o.x-h," ").concat(p," ").concat(l," ").concat(o.x," ").concat(p+f," L ").concat(o.x," ").concat(o.y):"M ".concat(a.x," ").concat(a.y," L ").concat(a.x," ").concat(p+h," ").concat(l," ").concat(a.x+f," ").concat(p," L ").concat(o.x-h," ").concat(p," ").concat(u," ").concat(o.x," ").concat(p-f," L ").concat(o.x," ").concat(o.y)}else a.y<o.y&&(u="A 20 20, 0, 0, 0,",h=20,f=20,d=Ek[n.branch].index,c="M ".concat(a.x," ").concat(a.y," L ").concat(a.x," ").concat(o.y-h," ").concat(u," ").concat(a.x+f," ").concat(o.y," L ").concat(o.x," ").concat(o.y)),a.y>o.y&&(u="A 20 20, 0, 0, 0,",h=20,f=20,d=Ek[e.branch].index,c="M ".concat(a.x," ").concat(a.y," L ").concat(o.x-h," ").concat(a.y," ").concat(u," ").concat(o.x," ").concat(a.y-f," L ").concat(o.x," ").concat(o.y)),a.y===o.y&&(d=Ek[e.branch].index,c="M ".concat(a.x," ").concat(a.y," L ").concat(a.x," ").concat(o.y-h," ").concat(u," ").concat(a.x+f," ").concat(o.y," L ").concat(o.x," ").concat(o.y));t.append("path").attr("d",c).attr("class","arrow arrow"+d)}(n,e[t],i,e)}))}))}(u,Ck),Nk(u,Ck,!0);var l=i.diagramPadding,h=u.node().getBBox(),f=h.width+2*l,d=h.height+2*l;lb(u,d,f,r.useMaxWidth);var p="".concat(h.x-l," ").concat(h.y-l," ").concat(f," ").concat(d);u.attr("viewBox",p)};var Lk="",Ok=!1;const Ik={setMessage:function(t){o.debug("Setting message to: "+t),Lk=t},getMessage:function(){return Lk},setInfo:function(t){Ok=t},getInfo:function(){return Ok}};var Rk=n(6765),Fk=n.n(Rk),Pk={};const Yk=function(t){Object.keys(t).forEach((function(e){Pk[e]=t[e]}))};var jk=n(7062),Uk=n.n(jk),zk={},$k="",qk=!1;const Hk={parseDirective:function(t,e,n){UE.parseDirective(this,t,e,n)},getConfig:function(){return wb().pie},addSection:function(t,e){t=$m.sanitizeText(t,wb()),void 0===zk[t]&&(zk[t]=e,o.debug("Added new section :",t))},getSections:function(){return zk},cleanupValue:function(t){return":"===t.substring(0,1)?(t=t.substring(1).trim(),Number(t.trim())):Number(t.trim())},clear:function(){zk={},$k="",qk=!1,Mb()},setTitle:Nb,getTitle:Db,setPieTitle:function(t){var e=$m.sanitizeText(t,wb());$k=e},getPieTitle:function(){return $k},setShowData:function(t){qk=t},getShowData:function(){return qk},getAccDescription:Lb,setAccDescription:Bb};var Wk,Vk=wb();const Gk=function(t,e){try{Vk=wb();var n=Uk().parser;n.yy=Hk,o.debug("Rendering info diagram\n"+t);var r,i=wb().securityLevel;"sandbox"===i&&(r=au("#i"+e));var a=au("sandbox"===i?r.nodes()[0].contentDocument.body:"body"),s="sandbox"===i?r.nodes()[0].contentDocument:document;n.yy.clear(),n.parse(t),o.debug("Parsed info diagram");var c=s.getElementById(e);void 0===(Wk=c.parentElement.offsetWidth)&&(Wk=1200),void 0!==Vk.useWidth&&(Wk=Vk.useWidth),void 0!==Vk.pie.useWidth&&(Wk=Vk.pie.useWidth);var u=a.select("#"+e);lb(u,450,Wk,Vk.pie.useMaxWidth),f_(n.yy,u,e),c.setAttribute("viewBox","0 0 "+Wk+" 450");var l=Math.min(Wk,450)/2-40,h=u.append("g").attr("transform","translate("+Wk/2+",225)"),f=Hk.getSections(),d=0;Object.keys(f).forEach((function(t){d+=f[t]}));var p=Vk.themeVariables,g=[p.pie1,p.pie2,p.pie3,p.pie4,p.pie5,p.pie6,p.pie7,p.pie8,p.pie9,p.pie10,p.pie11,p.pie12],y=ma().range(g),m=function(){var t=$u,e=zu,n=null,r=pu(0),i=pu(Cu),a=pu(0);function o(o){var s,c,u,l,h,f=(o=Ru(o)).length,d=0,p=new Array(f),g=new Array(f),y=+r.apply(this,arguments),m=Math.min(Cu,Math.max(-Cu,i.apply(this,arguments)-y)),v=Math.min(Math.abs(m)/f,a.apply(this,arguments)),b=v*(m<0?-1:1);for(s=0;s<f;++s)(h=g[p[s]=s]=+t(o[s],s,o))>0&&(d+=h);for(null!=e?p.sort((function(t,n){return e(g[t],g[n])})):null!=n&&p.sort((function(t,e){return n(o[t],o[e])})),s=0,u=d?(m-f*b)/d:0;s<f;++s,y=l)c=p[s],l=y+((h=g[c])>0?h*u:0)+b,g[c]={data:o[c],index:s,value:h,startAngle:y,endAngle:l,padAngle:v};return g}return o.value=function(e){return arguments.length?(t="function"==typeof e?e:pu(+e),o):t},o.sortValues=function(t){return arguments.length?(e=t,n=null,o):e},o.sort=function(t){return arguments.length?(n=t,e=null,o):n},o.startAngle=function(t){return arguments.length?(r="function"==typeof t?t:pu(+t),o):r},o.endAngle=function(t){return arguments.length?(i="function"==typeof t?t:pu(+t),o):i},o.padAngle=function(t){return arguments.length?(a="function"==typeof t?t:pu(+t),o):a},o}().value((function(t){return t[1]})),v=m(Object.entries(f)),b=Iu().innerRadius(0).outerRadius(l);h.selectAll("mySlices").data(v).enter().append("path").attr("d",b).attr("fill",(function(t){return y(t.data[0])})).attr("class","pieCircle"),h.selectAll("mySlices").data(v).enter().append("text").text((function(t){return(t.data[1]/d*100).toFixed(0)+"%"})).attr("transform",(function(t){return"translate("+b.centroid(t)+")"})).style("text-anchor","middle").attr("class","slice"),h.append("text").text(n.yy.getPieTitle()).attr("x",0).attr("y",-200).attr("class","pieTitleText");var _=h.selectAll(".legend").data(y.domain()).enter().append("g").attr("class","legend").attr("transform",(function(t,e){return"translate(216,"+(22*e-22*y.domain().length/2)+")"}));_.append("rect").attr("width",18).attr("height",18).style("fill",y).style("stroke",y),_.data(v).append("text").attr("x",22).attr("y",14).text((function(t){return n.yy.getShowData()||Vk.showData||Vk.pie.showData?t.data[0]+" ["+t.data[1]+"]":t.data[0]}))}catch(t){o.error("Error while rendering info diagram"),o.error(t)}};var Xk=n(3176),Zk=n.n(Xk),Qk=[],Kk={},Jk={},tT={},eT={};const nT={RequirementType:{REQUIREMENT:"Requirement",FUNCTIONAL_REQUIREMENT:"Functional Requirement",INTERFACE_REQUIREMENT:"Interface Requirement",PERFORMANCE_REQUIREMENT:"Performance Requirement",PHYSICAL_REQUIREMENT:"Physical Requirement",DESIGN_CONSTRAINT:"Design Constraint"},RiskLevel:{LOW_RISK:"Low",MED_RISK:"Medium",HIGH_RISK:"High"},VerifyType:{VERIFY_ANALYSIS:"Analysis",VERIFY_DEMONSTRATION:"Demonstration",VERIFY_INSPECTION:"Inspection",VERIFY_TEST:"Test"},Relationships:{CONTAINS:"contains",COPIES:"copies",DERIVES:"derives",SATISFIES:"satisfies",VERIFIES:"verifies",REFINES:"refines",TRACES:"traces"},parseDirective:function(t,e,n){UE.parseDirective(this,t,e,n)},getConfig:function(){return wb().req},addRequirement:function(t,e){return void 0===Jk[t]&&(Jk[t]={name:t,type:e,id:Kk.id,text:Kk.text,risk:Kk.risk,verifyMethod:Kk.verifyMethod}),Kk={},Jk[t]},getRequirements:function(){return Jk},setNewReqId:function(t){void 0!==Kk&&(Kk.id=t)},setNewReqText:function(t){void 0!==Kk&&(Kk.text=t)},setNewReqRisk:function(t){void 0!==Kk&&(Kk.risk=t)},setNewReqVerifyMethod:function(t){void 0!==Kk&&(Kk.verifyMethod=t)},setTitle:Nb,getTitle:Db,setAccDescription:Bb,getAccDescription:Lb,addElement:function(t){return void 0===eT[t]&&(eT[t]={name:t,type:tT.type,docRef:tT.docRef},o.info("Added new requirement: ",t)),tT={},eT[t]},getElements:function(){return eT},setNewElementType:function(t){void 0!==tT&&(tT.type=t)},setNewElementDocRef:function(t){void 0!==tT&&(tT.docRef=t)},addRelationship:function(t,e,n){Qk.push({type:t,src:e,dst:n})},getRelationships:function(){return Qk},clear:function(){Qk=[],Kk={},Jk={},tT={},eT={},Mb()}};var rT={CONTAINS:"contains",ARROW:"arrow"};const iT=rT;var aT={},oT=0,sT=function(t,e){return t.insert("rect","#"+e).attr("class","req reqBox").attr("x",0).attr("y",0).attr("width",aT.rect_min_width+"px").attr("height",aT.rect_min_height+"px")},cT=function(t,e,n){var r=aT.rect_min_width/2,i=t.append("text").attr("class","req reqLabel reqTitle").attr("id",e).attr("x",r).attr("y",aT.rect_padding).attr("dominant-baseline","hanging"),a=0;n.forEach((function(t){0==a?i.append("tspan").attr("text-anchor","middle").attr("x",aT.rect_min_width/2).attr("dy",0).text(t):i.append("tspan").attr("text-anchor","middle").attr("x",aT.rect_min_width/2).attr("dy",.75*aT.line_height).text(t),a++}));var o=1.5*aT.rect_padding+a*aT.line_height*.75;return t.append("line").attr("class","req-title-line").attr("x1","0").attr("x2",aT.rect_min_width).attr("y1",o).attr("y2",o),{titleNode:i,y:o}},uT=function(t,e,n,r){var i=t.append("text").attr("class","req reqLabel").attr("id",e).attr("x",aT.rect_padding).attr("y",r).attr("dominant-baseline","hanging"),a=0,o=[];return n.forEach((function(t){for(var e=t.length;e>30&&a<3;){var n=t.substring(0,30);e=(t=t.substring(30,t.length)).length,o[o.length]=n,a++}if(3==a){var r=o[o.length-1];o[o.length-1]=r.substring(0,r.length-4)+"..."}else o[o.length]=t;a=0})),o.forEach((function(t){i.append("tspan").attr("x",aT.rect_padding).attr("dy",aT.line_height).text(t)})),i},lT=function(t){return t.replace(/\s/g,"").replace(/\./g,"_")};const hT=function(t){if(void 0!==t)for(var e=Object.keys(t),n=0;n<e.length;n++)aT[e[n]]=t[e[n]]},fT=function(t,e){Xk.parser.yy=nT,Xk.parser.yy.clear(),Xk.parser.parse(t);var n,r=wb().securityLevel;"sandbox"===r&&(n=au("#i"+e));var i=au("sandbox"===r?n.nodes()[0].contentDocument.body:"body"),a=("sandbox"===r?n.nodes()[0].contentDocument:document,i.select("[id='".concat(e,"']")));!function(t,e){var n=t.append("defs").append("marker").attr("id",rT.CONTAINS+"_line_ending").attr("refX",0).attr("refY",e.line_height/2).attr("markerWidth",e.line_height).attr("markerHeight",e.line_height).attr("orient","auto").append("g");n.append("circle").attr("cx",e.line_height/2).attr("cy",e.line_height/2).attr("r",e.line_height/2).attr("fill","none"),n.append("line").attr("x1",0).attr("x2",e.line_height).attr("y1",e.line_height/2).attr("y2",e.line_height/2).attr("stroke-width",1),n.append("line").attr("y1",0).attr("y2",e.line_height).attr("x1",e.line_height/2).attr("x2",e.line_height/2).attr("stroke-width",1),t.append("defs").append("marker").attr("id",rT.ARROW+"_line_ending").attr("refX",e.line_height).attr("refY",.5*e.line_height).attr("markerWidth",e.line_height).attr("markerHeight",e.line_height).attr("orient","auto").append("path").attr("d","M0,0\n L".concat(e.line_height,",").concat(e.line_height/2,"\n M").concat(e.line_height,",").concat(e.line_height/2,"\n L0,").concat(e.line_height)).attr("stroke-width",1)}(a,aT);var s=new(t_().Graph)({multigraph:!1,compound:!1,directed:!0}).setGraph({rankdir:aT.layoutDirection,marginx:20,marginy:20,nodesep:100,edgesep:100,ranksep:100}).setDefaultEdgeLabel((function(){return{}})),c=nT.getRequirements(),u=nT.getElements(),l=nT.getRelationships();!function(t,e,n){Object.keys(t).forEach((function(r){var i=t[r];r=lT(r),o.info("Added new requirement: ",r);var a=n.append("g").attr("id",r),s=sT(a,"req-"+r),c=[],u=cT(a,r+"_title",["<<".concat(i.type,">>"),"".concat(i.name)]);c.push(u.titleNode);var l=uT(a,r+"_body",["Id: ".concat(i.id),"Text: ".concat(i.text),"Risk: ".concat(i.risk),"Verification: ".concat(i.verifyMethod)],u.y);c.push(l);var h=s.node().getBBox();e.setNode(r,{width:h.width,height:h.height,shape:"rect",id:r})}))}(c,s,a),function(t,e,n){Object.keys(t).forEach((function(r){var i=t[r],a=lT(r),o=n.append("g").attr("id",a),s="element-"+a,c=sT(o,s),u=[],l=cT(o,s+"_title",["<<Element>>","".concat(r)]);u.push(l.titleNode);var h=uT(o,s+"_body",["Type: ".concat(i.type||"Not Specified"),"Doc Ref: ".concat(i.docRef||"None")],l.y);u.push(h);var f=c.node().getBBox();e.setNode(a,{width:f.width,height:f.height,shape:"rect",id:a})}))}(u,s,a),function(t,e){t.forEach((function(t){var n=lT(t.src),r=lT(t.dst);e.setEdge(n,r,{relationship:t})}))}(l,s),Kb().layout(s),function(t,e){e.nodes().forEach((function(n){void 0!==n&&void 0!==e.node(n)&&(t.select("#"+n),t.select("#"+n).attr("transform","translate("+(e.node(n).x-e.node(n).width/2)+","+(e.node(n).y-e.node(n).height/2)+" )"))}))}(a,s),l.forEach((function(t){!function(t,e,n,r){var i=n.edge(lT(e.src),lT(e.dst)),a=Uu().x((function(t){return t.x})).y((function(t){return t.y})),o=t.insert("path","#"+r).attr("class","er relationshipLine").attr("d",a(i.points)).attr("fill","none");e.type==nT.Relationships.CONTAINS?o.attr("marker-start","url("+$m.getUrl(aT.arrowMarkerAbsolute)+"#"+e.type+"_line_ending)"):(o.attr("stroke-dasharray","10,7"),o.attr("marker-end","url("+$m.getUrl(aT.arrowMarkerAbsolute)+"#"+iT.ARROW+"_line_ending)")),function(t,e,n,r){var i=e.node().getTotalLength(),a=e.node().getPointAtLength(.5*i),o="rel"+oT;oT++;var s=t.append("text").attr("class","req relationshipLabel").attr("id",o).attr("x",a.x).attr("y",a.y).attr("text-anchor","middle").attr("dominant-baseline","middle").text(r).node().getBBox();t.insert("rect","#"+o).attr("class","req reqLabelBox").attr("x",a.x-s.width/2).attr("y",a.y-s.height/2).attr("width",s.width).attr("height",s.height).attr("fill","white").attr("fill-opacity","85%")}(t,o,0,"<<".concat(e.type,">>"))}(a,t,s,e)}));var h=aT.rect_padding,f=a.node().getBBox(),d=f.width+2*h,p=f.height+2*h;lb(a,p,d,aT.useMaxWidth),a.attr("viewBox","".concat(f.x-h," ").concat(f.y-h," ").concat(d," ").concat(p)),f_(Xk.parser.yy,a,e)};var dT=n(6876),pT=n.n(dT),gT=void 0,yT={},mT=[],vT=[],bT="",_T=!1,xT=!1,wT=function(t,e,n,r){var i=yT[t];i&&e===i.name&&null==n||(null!=n&&null!=n.text||(n={text:e,wrap:null,type:r}),null!=r&&null!=n.text||(n={text:e,wrap:null,type:r}),yT[t]={name:e,description:n.text,wrap:void 0===n.wrap&&ET()||!!n.wrap,prevActor:gT,links:{},properties:{},actorCnt:null,rectData:null,type:r||"participant"},gT&&yT[gT]&&(yT[gT].nextActor=t),gT=t)},kT=function(t){var e,n=0;for(e=0;e<mT.length;e++)mT[e].type===ST.ACTIVE_START&&mT[e].from.actor===t&&n++,mT[e].type===ST.ACTIVE_END&&mT[e].from.actor===t&&n--;return n},TT=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{text:void 0,wrap:void 0},r=arguments.length>3?arguments[3]:void 0;if(r===ST.ACTIVE_END){var i=kT(t.actor);if(i<1){var a=new Error("Trying to inactivate an inactive participant ("+t.actor+")");throw a.hash={text:"->>-",token:"->>-",line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["'ACTIVE_PARTICIPANT'"]},a}}return mT.push({from:t,to:e,message:n.text,wrap:void 0===n.wrap&&ET()||!!n.wrap,type:r}),!0},CT=function(t){return yT[t]},ET=function(){return xT},ST={SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25,AUTONUMBER:26},AT=function(t,e,n){var r={actor:t,placement:e,message:n.text,wrap:void 0===n.wrap&&ET()||!!n.wrap},i=[].concat(t,t);vT.push(r),mT.push({from:i[0],to:i[1],message:n.text,wrap:void 0===n.wrap&&ET()||!!n.wrap,type:ST.NOTE,placement:e})},MT=function(t,e){var n=CT(t);try{var r=Pm(e.text,wb());r=(r=r.replace(/&amp;/g,"&")).replace(/&equals;/g,"="),NT(n,JSON.parse(r))}catch(t){o.error("error while parsing actor link text",t)}};function NT(t,e){if(null==t.links)t.links=e;else for(var n in e)t.links[n]=e[n]}var DT=function(t,e){var n=CT(t);try{var r=Pm(e.text,wb());BT(n,JSON.parse(r))}catch(t){o.error("error while parsing actor properties text",t)}};function BT(t,e){if(null==t.properties)t.properties=e;else for(var n in e)t.properties[n]=e[n]}var LT=function(t,e){var n=CT(t),r=document.getElementById(e.text);try{var i=r.innerHTML,a=JSON.parse(i);a.properties&&BT(n,a.properties),a.links&&NT(n,a.links)}catch(t){o.error("error while parsing actor details text",t)}};const OT={addActor:wT,addMessage:function(t,e,n,r){mT.push({from:t,to:e,message:n.text,wrap:void 0===n.wrap&&ET()||!!n.wrap,answer:r})},addSignal:TT,addLinks:MT,addDetails:LT,addProperties:DT,autoWrap:ET,setWrap:function(t){xT=t},enableSequenceNumbers:function(){_T=!0},disableSequenceNumbers:function(){_T=!1},showSequenceNumbers:function(){return _T},getMessages:function(){return mT},getActors:function(){return yT},getActor:CT,getActorKeys:function(){return Object.keys(yT)},getActorProperty:function(t,e){if(void 0!==t&&void 0!==t.properties)return t.properties[e]},getTitle:Db,getDiagramTitle:function(){return bT},parseDirective:function(t,e,n){UE.parseDirective(this,t,e,n)},getConfig:function(){return wb().sequence},clear:function(){yT={},mT=[],_T=!1,bT="",Mb()},parseMessage:function(t){var e=t.trim(),n={text:e.replace(/^[:]?(?:no)?wrap:/,"").trim(),wrap:null!==e.match(/^[:]?wrap:/)||null===e.match(/^[:]?nowrap:/)&&void 0};return o.debug("parseMessage:",n),n},LINETYPE:ST,ARROWTYPE:{FILLED:0,OPEN:1},PLACEMENT:{LEFTOF:0,RIGHTOF:1,OVER:2},addNote:AT,setTitle:Nb,setDiagramTitle:function(t){var e=Pm(t,wb());bT=e},apply:function t(e){if(e instanceof Array)e.forEach((function(e){t(e)}));else switch(e.type){case"sequenceIndex":mT.push({from:void 0,to:void 0,message:{start:e.sequenceIndex,step:e.sequenceIndexStep,visible:e.sequenceVisible},wrap:!1,type:e.signalType});break;case"addParticipant":wT(e.actor,e.actor,e.description,"participant");break;case"addActor":wT(e.actor,e.actor,e.description,"actor");break;case"activeStart":case"activeEnd":TT(e.actor,void 0,void 0,e.signalType);break;case"addNote":AT(e.actor,e.placement,e.text);break;case"addLinks":MT(e.actor,e.text);break;case"addALink":!function(t,e){var n=CT(t);try{var r={},i=Pm(e.text,wb()),a=i.indexOf("@"),s=(i=(i=i.replace(/&amp;/g,"&")).replace(/&equals;/g,"=")).slice(0,a-1).trim(),c=i.slice(a+1).trim();r[s]=c,NT(n,r)}catch(t){o.error("error while parsing actor link text",t)}}(e.actor,e.text);break;case"addProperties":DT(e.actor,e.text);break;case"addDetails":LT(e.actor,e.text);break;case"addMessage":TT(e.from,e.to,e.msg,e.signalType);break;case"loopStart":TT(void 0,void 0,e.loopText,e.signalType);break;case"loopEnd":case"rectEnd":case"optEnd":case"altEnd":case"parEnd":TT(void 0,void 0,void 0,e.signalType);break;case"rectStart":TT(void 0,void 0,e.color,e.signalType);break;case"optStart":TT(void 0,void 0,e.optText,e.signalType);break;case"altStart":case"else":TT(void 0,void 0,e.altText,e.signalType);break;case"setTitle":Nb(e.text);break;case"parStart":case"and":TT(void 0,void 0,e.parText,e.signalType)}},setAccDescription:Bb,getAccDescription:Lb};var IT=[],RT=function(t,e){var n=t.append("rect");return n.attr("x",e.x),n.attr("y",e.y),n.attr("fill",e.fill),n.attr("stroke",e.stroke),n.attr("width",e.width),n.attr("height",e.height),n.attr("rx",e.rx),n.attr("ry",e.ry),void 0!==e.class&&n.attr("class",e.class),n},FT=function(t,e){var n;n=function(){var n=document.querySelectorAll(t);0!==n.length&&(n[0].addEventListener("mouseover",(function(){jT("actor"+e+"_popup")})),n[0].addEventListener("mouseout",(function(){UT("actor"+e+"_popup")})))},IT.push(n)},PT=function(t,e,n,r){var i=t.append("image");i.attr("x",e),i.attr("y",n);var a=(0,Bm.N)(r);i.attr("xlink:href",a)},YT=function(t,e,n,r){var i=t.append("use");i.attr("x",e),i.attr("y",n);var a=(0,Bm.N)(r);i.attr("xlink:href","#"+a)},jT=function(t){var e=document.getElementById(t);null!=e&&(e.style.display="block")},UT=function(t){var e=document.getElementById(t);null!=e&&(e.style.display="none")},zT=function(t,e){var n=0,r=0,i=e.text.split($m.lineBreakRegex),a=[],o=0,s=function(){return e.y};if(void 0!==e.valign&&void 0!==e.textMargin&&e.textMargin>0)switch(e.valign){case"top":case"start":s=function(){return Math.round(e.y+e.textMargin)};break;case"middle":case"center":s=function(){return Math.round(e.y+(n+r+e.textMargin)/2)};break;case"bottom":case"end":s=function(){return Math.round(e.y+(n+r+2*e.textMargin)-e.textMargin)}}if(void 0!==e.anchor&&void 0!==e.textMargin&&void 0!==e.width)switch(e.anchor){case"left":case"start":e.x=Math.round(e.x+e.textMargin),e.anchor="start",e.dominantBaseline="text-after-edge",e.alignmentBaseline="middle";break;case"middle":case"center":e.x=Math.round(e.x+e.width/2),e.anchor="middle",e.dominantBaseline="middle",e.alignmentBaseline="middle";break;case"right":case"end":e.x=Math.round(e.x+e.width-e.textMargin),e.anchor="end",e.dominantBaseline="text-before-edge",e.alignmentBaseline="middle"}for(var c=0;c<i.length;c++){var u=i[c];void 0!==e.textMargin&&0===e.textMargin&&void 0!==e.fontSize&&(o=c*e.fontSize);var l=t.append("text");if(l.attr("x",e.x),l.attr("y",s()),void 0!==e.anchor&&l.attr("text-anchor",e.anchor).attr("dominant-baseline",e.dominantBaseline).attr("alignment-baseline",e.alignmentBaseline),void 0!==e.fontFamily&&l.style("font-family",e.fontFamily),void 0!==e.fontSize&&l.style("font-size",e.fontSize),void 0!==e.fontWeight&&l.style("font-weight",e.fontWeight),void 0!==e.fill&&l.attr("fill",e.fill),void 0!==e.class&&l.attr("class",e.class),void 0!==e.dy?l.attr("dy",e.dy):0!==o&&l.attr("dy",o),e.tspan){var h=l.append("tspan");h.attr("x",e.x),void 0!==e.fill&&h.attr("fill",e.fill),h.text(u)}else l.text(u);void 0!==e.valign&&void 0!==e.textMargin&&e.textMargin>0&&(r+=(l._groups||l)[0][0].getBBox().height,n=r),a.push(l)}return a},$T=function(t,e){var n=t.append("polygon");return n.attr("points",function(t,e,n,r,i){return t+","+e+" "+(t+n)+","+e+" "+(t+n)+","+(e+r-7)+" "+(t+n-8.4)+","+(e+r)+" "+t+","+(e+r)}(e.x,e.y,e.width,e.height)),n.attr("class","labelBox"),e.y=e.y+e.height/2,zT(t,e),n},qT=-1,HT=function(t,e){t.selectAll&&t.selectAll(".actor-line").attr("class","200").attr("y2",e-55)},WT=function(){return{x:0,y:0,fill:void 0,anchor:void 0,style:"#666",width:void 0,height:void 0,textMargin:0,rx:0,ry:0,tspan:!0,valign:void 0}},VT=function(){return{x:0,y:0,fill:"#EDF2AE",stroke:"#666",width:100,anchor:"start",height:100,rx:0,ry:0}},GT=function(){function t(t,e,n,i,a,o,s){r(e.append("text").attr("x",n+a/2).attr("y",i+o/2+5).style("text-anchor","middle").text(t),s)}function e(t,e,n,i,a,o,s,c){for(var u=c.actorFontSize,l=c.actorFontFamily,h=c.actorFontWeight,f=t.split($m.lineBreakRegex),d=0;d<f.length;d++){var p=d*u-u*(f.length-1)/2,g=e.append("text").attr("x",n+a/2).attr("y",i).style("text-anchor","middle").style("font-size",u).style("font-weight",h).style("font-family",l);g.append("tspan").attr("x",n+a/2).attr("dy",p).text(f[d]),g.attr("y",i+o/2).attr("dominant-baseline","central").attr("alignment-baseline","central"),r(g,s)}}function n(t,n,i,a,o,s,c,u){var l=n.append("switch"),h=l.append("foreignObject").attr("x",i).attr("y",a).attr("width",o).attr("height",s).append("xhtml:div").style("display","table").style("height","100%").style("width","100%");h.append("div").style("display","table-cell").style("text-align","center").style("vertical-align","middle").text(t),e(t,l,i,a,o,s,c,u),r(h,c)}function r(t,e){for(var n in e)e.hasOwnProperty(n)&&t.attr(n,e[n])}return function(r){return"fo"===r.textPlacement?n:"old"===r.textPlacement?t:e}}(),XT=function(){function t(t,e,n,i,a,o,s){r(e.append("text").attr("x",n).attr("y",i).style("text-anchor","start").text(t),s)}function e(t,e,n,i,a,o,s,c){for(var u=c.actorFontSize,l=c.actorFontFamily,h=c.actorFontWeight,f=t.split($m.lineBreakRegex),d=0;d<f.length;d++){var p=d*u-u*(f.length-1)/2,g=e.append("text").attr("x",n).attr("y",i).style("text-anchor","start").style("font-size",u).style("font-weight",h).style("font-family",l);g.append("tspan").attr("x",n).attr("dy",p).text(f[d]),g.attr("y",i+o/2).attr("dominant-baseline","central").attr("alignment-baseline","central"),r(g,s)}}function n(t,n,i,a,o,s,c,u){var l=n.append("switch"),h=l.append("foreignObject").attr("x",i).attr("y",a).attr("width",o).attr("height",s).append("xhtml:div").style("display","table").style("height","100%").style("width","100%");h.append("div").style("display","table-cell").style("text-align","center").style("vertical-align","middle").text(t),e(t,l,i,a,0,s,c,u),r(h,c)}function r(t,e){for(var n in e)e.hasOwnProperty(n)&&t.attr(n,e[n])}return function(r){return"fo"===r.textPlacement?n:"old"===r.textPlacement?t:e}}();const ZT=RT,QT=function(t,e,n){switch(e.type){case"actor":return function(t,e,n){var r=e.x+e.width/2;0===e.y&&(qT++,t.append("line").attr("id","actor"+qT).attr("x1",r).attr("y1",80).attr("x2",r).attr("y2",2e3).attr("class","actor-line").attr("stroke-width","0.5px").attr("stroke","#999"));var i=t.append("g");i.attr("class","actor-man");var a={x:0,y:0,fill:"#EDF2AE",stroke:"#666",width:100,anchor:"start",height:100,rx:0,ry:0};a.x=e.x,a.y=e.y,a.fill="#eaeaea",a.width=e.width,a.height=e.height,a.class="actor",a.rx=3,a.ry=3,i.append("line").attr("id","actor-man-torso"+qT).attr("x1",r).attr("y1",e.y+25).attr("x2",r).attr("y2",e.y+45),i.append("line").attr("id","actor-man-arms"+qT).attr("x1",r-18).attr("y1",e.y+33).attr("x2",r+18).attr("y2",e.y+33),i.append("line").attr("x1",r-18).attr("y1",e.y+60).attr("x2",r).attr("y2",e.y+45),i.append("line").attr("x1",r).attr("y1",e.y+45).attr("x2",r+16).attr("y2",e.y+60);var o=i.append("circle");o.attr("cx",e.x+e.width/2),o.attr("cy",e.y+10),o.attr("r",15),o.attr("width",e.width),o.attr("height",e.height);var s=i.node().getBBox();return e.height=s.height,GT(n)(e.description,i,a.x,a.y+35,a.width,a.height,{class:"actor"},n),e.height}(t,e,n);case"participant":return function(t,e,n){var r=e.x+e.width/2,i=t.append("g"),a=i;0===e.y&&(qT++,a.append("line").attr("id","actor"+qT).attr("x1",r).attr("y1",5).attr("x2",r).attr("y2",2e3).attr("class","actor-line").attr("stroke-width","0.5px").attr("stroke","#999"),a=i.append("g"),e.actorCnt=qT,null!=e.links&&(a.attr("id","root-"+qT),FT("#root-"+qT,qT)));var o={x:0,y:0,fill:"#EDF2AE",stroke:"#666",width:100,anchor:"start",height:100,rx:0,ry:0},s="actor";null!=e.properties&&e.properties.class?s=e.properties.class:o.fill="#eaeaea",o.x=e.x,o.y=e.y,o.width=e.width,o.height=e.height,o.class=s,o.rx=3,o.ry=3;var c=RT(a,o);if(e.rectData=o,null!=e.properties&&e.properties.icon){var u=e.properties.icon.trim();"@"===u.charAt(0)?YT(a,o.x+o.width-20,o.y+10,u.substr(1)):PT(a,o.x+o.width-20,o.y+10,u)}GT(n)(e.description,a,o.x,o.y,o.width,o.height,{class:"actor"},n);var l=e.height;if(c.node){var h=c.node().getBBox();e.height=h.height,l=h.height}return l}(t,e,n)}},KT=function(t,e,n,r,i){if(void 0===e.links||null===e.links||0===Object.keys(e.links).length)return{height:0,width:0};var a=e.links,o=e.actorCnt,s=e.rectData,c="none";i&&(c="block !important");var u=t.append("g");u.attr("id","actor"+o+"_popup"),u.attr("class","actorPopupMenu"),u.attr("display",c),FT("#actor"+o+"_popup",o);var l="";void 0!==s.class&&(l=" "+s.class);var h=s.width>n?s.width:n,f=u.append("rect");if(f.attr("class","actorPopupMenuPanel"+l),f.attr("x",s.x),f.attr("y",s.height),f.attr("fill",s.fill),f.attr("stroke",s.stroke),f.attr("width",h),f.attr("height",s.height),f.attr("rx",s.rx),f.attr("ry",s.ry),null!=a){var d=20;for(var p in a){var g=u.append("a"),y=(0,Bm.N)(a[p]);g.attr("xlink:href",y),g.attr("target","_blank"),XT(r)(p,g,s.x+10,s.height+d,h,20,{class:"actor"},r),d+=30}}return f.attr("height",d),{height:s.height+d,width:h}},JT=function(t){return t.append("g")},tC=function(t,e,n,r,i){var a={x:0,y:0,fill:"#EDF2AE",stroke:"#666",width:100,anchor:"start",height:100,rx:0,ry:0},o=e.anchored;a.x=e.startx,a.y=e.starty,a.class="activation"+i%3,a.width=e.stopx-e.startx,a.height=n-e.starty,RT(o,a)},eC=function(t,e,n,r){var i=r.boxMargin,a=r.boxTextMargin,o=r.labelBoxHeight,s=r.labelBoxWidth,c=r.messageFontFamily,u=r.messageFontSize,l=r.messageFontWeight,h=t.append("g"),f=function(t,e,n,r){return h.append("line").attr("x1",t).attr("y1",e).attr("x2",n).attr("y2",r).attr("class","loopLine")};f(e.startx,e.starty,e.stopx,e.starty),f(e.stopx,e.starty,e.stopx,e.stopy),f(e.startx,e.stopy,e.stopx,e.stopy),f(e.startx,e.starty,e.startx,e.stopy),void 0!==e.sections&&e.sections.forEach((function(t){f(e.startx,t.y,e.stopx,t.y).style("stroke-dasharray","3, 3")}));var d={x:0,y:0,fill:void 0,anchor:void 0,style:"#666",width:void 0,height:void 0,textMargin:0,rx:0,ry:0,tspan:!0,valign:void 0};d.text=n,d.x=e.startx,d.y=e.starty,d.fontFamily=c,d.fontSize=u,d.fontWeight=l,d.anchor="middle",d.valign="middle",d.tspan=!1,d.width=s||50,d.height=o||20,d.textMargin=a,d.class="labelText",$T(h,d),(d={x:0,y:0,fill:void 0,anchor:void 0,style:"#666",width:void 0,height:void 0,textMargin:0,rx:0,ry:0,tspan:!0,valign:void 0}).text=e.title,d.x=e.startx+s/2+(e.stopx-e.startx)/2,d.y=e.starty+i+a,d.anchor="middle",d.valign="middle",d.textMargin=a,d.class="loopText",d.fontFamily=c,d.fontSize=u,d.fontWeight=l,d.wrap=!0;var p=zT(h,d);return void 0!==e.sectionTitles&&e.sectionTitles.forEach((function(t,n){if(t.message){d.text=t.message,d.x=e.startx+(e.stopx-e.startx)/2,d.y=e.sections[n].y+i+a,d.class="loopText",d.anchor="middle",d.valign="middle",d.tspan=!1,d.fontFamily=c,d.fontSize=u,d.fontWeight=l,d.wrap=e.wrap,p=zT(h,d);var r=Math.round(p.map((function(t){return(t._groups||t)[0][0].getBBox().height})).reduce((function(t,e){return t+e})));e.sections[n].height+=r-(i+a)}})),e.height=Math.round(e.stopy-e.starty),h},nC=function(t,e){RT(t,{x:e.startx,y:e.starty,width:e.stopx-e.startx,height:e.stopy-e.starty,fill:e.fill,class:"rect"}).lower()},rC=function(t){t.append("defs").append("marker").attr("id","arrowhead").attr("refX",9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z")},iC=function(t){t.append("defs").append("marker").attr("id","filled-head").attr("refX",18).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},aC=function(t){t.append("defs").append("marker").attr("id","sequencenumber").attr("refX",15).attr("refY",15).attr("markerWidth",60).attr("markerHeight",40).attr("orient","auto").append("circle").attr("cx",15).attr("cy",15).attr("r",6)},oC=function(t){var e=t.append("defs").append("marker").attr("id","crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",16).attr("refY",4);e.append("path").attr("fill","black").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 9,2 V 6 L16,4 Z"),e.append("path").attr("fill","none").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 0,1 L 6,7 M 6,1 L 0,7")},sC=function(t){t.append("defs").append("symbol").attr("id","database").attr("fill-rule","evenodd").attr("clip-rule","evenodd").append("path").attr("transform","scale(.5)").attr("d","M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z")},cC=function(t){t.append("defs").append("symbol").attr("id","computer").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z")},uC=function(t){t.append("defs").append("symbol").attr("id","clock").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z")},lC=WT,hC=VT;Bm.N;dT.parser.yy=OT;var fC={},dC={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],activations:[],models:{getHeight:function(){return Math.max.apply(null,0===this.actors.length?[0]:this.actors.map((function(t){return t.height||0})))+(0===this.loops.length?0:this.loops.map((function(t){return t.height||0})).reduce((function(t,e){return t+e})))+(0===this.messages.length?0:this.messages.map((function(t){return t.height||0})).reduce((function(t,e){return t+e})))+(0===this.notes.length?0:this.notes.map((function(t){return t.height||0})).reduce((function(t,e){return t+e})))},clear:function(){this.actors=[],this.loops=[],this.messages=[],this.notes=[]},addActor:function(t){this.actors.push(t)},addLoop:function(t){this.loops.push(t)},addMessage:function(t){this.messages.push(t)},addNote:function(t){this.notes.push(t)},lastActor:function(){return this.actors[this.actors.length-1]},lastLoop:function(){return this.loops[this.loops.length-1]},lastMessage:function(){return this.messages[this.messages.length-1]},lastNote:function(){return this.notes[this.notes.length-1]},actors:[],loops:[],messages:[],notes:[]},init:function(){this.sequenceItems=[],this.activations=[],this.models.clear(),this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0,bC(dT.parser.yy.getConfig())},updateVal:function(t,e,n,r){void 0===t[e]?t[e]=n:t[e]=r(n,t[e])},updateBounds:function(t,e,n,r){var i=this,a=0;function o(o){return function(s){a++;var c=i.sequenceItems.length-a+1;i.updateVal(s,"starty",e-c*fC.boxMargin,Math.min),i.updateVal(s,"stopy",r+c*fC.boxMargin,Math.max),i.updateVal(dC.data,"startx",t-c*fC.boxMargin,Math.min),i.updateVal(dC.data,"stopx",n+c*fC.boxMargin,Math.max),"activation"!==o&&(i.updateVal(s,"startx",t-c*fC.boxMargin,Math.min),i.updateVal(s,"stopx",n+c*fC.boxMargin,Math.max),i.updateVal(dC.data,"starty",e-c*fC.boxMargin,Math.min),i.updateVal(dC.data,"stopy",r+c*fC.boxMargin,Math.max))}}this.sequenceItems.forEach(o()),this.activations.forEach(o("activation"))},insert:function(t,e,n,r){var i=Math.min(t,n),a=Math.max(t,n),o=Math.min(e,r),s=Math.max(e,r);this.updateVal(dC.data,"startx",i,Math.min),this.updateVal(dC.data,"starty",o,Math.min),this.updateVal(dC.data,"stopx",a,Math.max),this.updateVal(dC.data,"stopy",s,Math.max),this.updateBounds(i,o,a,s)},newActivation:function(t,e,n){var r=n[t.from.actor],i=_C(t.from.actor).length||0,a=r.x+r.width/2+(i-1)*fC.activationWidth/2;this.activations.push({startx:a,starty:this.verticalPos+2,stopx:a+fC.activationWidth,stopy:void 0,actor:t.from.actor,anchored:JT(e)})},endActivation:function(t){var e=this.activations.map((function(t){return t.actor})).lastIndexOf(t.from.actor);return this.activations.splice(e,1)[0]},createLoop:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{message:void 0,wrap:!1,width:void 0},e=arguments.length>1?arguments[1]:void 0;return{startx:void 0,starty:this.verticalPos,stopx:void 0,stopy:void 0,title:t.message,wrap:t.wrap,width:t.width,height:0,fill:e}},newLoop:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{message:void 0,wrap:!1,width:void 0},e=arguments.length>1?arguments[1]:void 0;this.sequenceItems.push(this.createLoop(t,e))},endLoop:function(){return this.sequenceItems.pop()},addSectionToLoop:function(t){var e=this.sequenceItems.pop();e.sections=e.sections||[],e.sectionTitles=e.sectionTitles||[],e.sections.push({y:dC.getVerticalPos(),height:0}),e.sectionTitles.push(t),this.sequenceItems.push(e)},bumpVerticalPos:function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=this.verticalPos},getVerticalPos:function(){return this.verticalPos},getBounds:function(){return{bounds:this.data,models:this.models}}},pC=function(t){return{fontFamily:t.messageFontFamily,fontSize:t.messageFontSize,fontWeight:t.messageFontWeight}},gC=function(t){return{fontFamily:t.noteFontFamily,fontSize:t.noteFontSize,fontWeight:t.noteFontWeight}},yC=function(t){return{fontFamily:t.actorFontFamily,fontSize:t.actorFontSize,fontWeight:t.actorFontWeight}},mC=function(t,e,n,r,i,a){if(!0===i.hideUnusedParticipants){var o=new Set;a.forEach((function(t){o.add(t.from),o.add(t.to)})),n=n.filter((function(t){return o.has(t)}))}for(var s=0,c=0,u=0,l=0;l<n.length;l++){var h=e[n[l]];h.width=h.width||fC.width,h.height=Math.max(h.height||fC.height,fC.height),h.margin=h.margin||fC.actorMargin,h.x=s+c,h.y=r;var f=QT(t,h,fC);u=Math.max(u,f),dC.insert(h.x,r,h.x+h.width,h.height),s+=h.width,c+=h.margin,dC.models.addActor(h)}dC.bumpVerticalPos(u)},vC=function(t,e,n,r){for(var i=0,a=0,o=0;o<n.length;o++){var s=e[n[o]],c=kC(s),u=KT(t,s,c,fC,fC.forceMenus,r);u.height>i&&(i=u.height),u.width+s.x>a&&(a=u.width+s.x)}return{maxHeight:i,maxWidth:a}},bC=function(t){rb(fC,t),t.fontFamily&&(fC.actorFontFamily=fC.noteFontFamily=fC.messageFontFamily=t.fontFamily),t.fontSize&&(fC.actorFontSize=fC.noteFontSize=fC.messageFontSize=t.fontSize),t.fontWeight&&(fC.actorFontWeight=fC.noteFontWeight=fC.messageFontWeight=t.fontWeight)},_C=function(t){return dC.activations.filter((function(e){return e.actor===t}))},xC=function(t,e){var n=e[t],r=_C(t);return[r.reduce((function(t,e){return Math.min(t,e.startx)}),n.x+n.width/2),r.reduce((function(t,e){return Math.max(t,e.stopx)}),n.x+n.width/2)]};function wC(t,e,n,r,i){dC.bumpVerticalPos(n);var a=r;if(e.id&&e.message&&t[e.id]){var s=t[e.id].width,c=pC(fC);e.message=db.wrapLabel("[".concat(e.message,"]"),s-2*fC.wrapPadding,c),e.width=s,e.wrap=!0;var u=db.calculateTextDimensions(e.message,c),l=Math.max(u.height,fC.labelBoxHeight);a=r+l,o.debug("".concat(l," - ").concat(e.message))}i(e),dC.bumpVerticalPos(a)}var kC=function(t){var e=0,n=yC(fC);for(var r in t.links){var i=db.calculateTextDimensions(r,n).width+2*fC.wrapPadding+2*fC.boxMargin;e<i&&(e=i)}return e};const TC={bounds:dC,drawActors:mC,drawActorsPopup:vC,setConf:bC,draw:function(t,e){fC=wb().sequence;var n,r=wb().securityLevel;"sandbox"===r&&(n=au("#i"+e));var i=au("sandbox"===r?n.nodes()[0].contentDocument.body:"body"),a="sandbox"===r?n.nodes()[0].contentDocument:document;dT.parser.yy.clear(),dT.parser.yy.setWrap(fC.wrap),dT.parser.parse(t+"\n"),dC.init(),o.debug("C:".concat(JSON.stringify(fC,null,2)));var s="sandbox"===r?i.select('[id="'.concat(e,'"]')):au('[id="'.concat(e,'"]')),c=dT.parser.yy.getActors(),u=dT.parser.yy.getActorKeys(),l=dT.parser.yy.getMessages(),h=dT.parser.yy.getDiagramTitle(),f=function(t,e){var n={};return e.forEach((function(e){if(t[e.to]&&t[e.from]){var r=t[e.to];if(e.placement===dT.parser.yy.PLACEMENT.LEFTOF&&!r.prevActor)return;if(e.placement===dT.parser.yy.PLACEMENT.RIGHTOF&&!r.nextActor)return;var i=void 0!==e.placement,a=!i,o=i?gC(fC):pC(fC),s=e.wrap?db.wrapLabel(e.message,fC.width-2*fC.wrapPadding,o):e.message,c=db.calculateTextDimensions(s,o).width+2*fC.wrapPadding;a&&e.from===r.nextActor?n[e.to]=Math.max(n[e.to]||0,c):a&&e.from===r.prevActor?n[e.from]=Math.max(n[e.from]||0,c):a&&e.from===e.to?(n[e.from]=Math.max(n[e.from]||0,c/2),n[e.to]=Math.max(n[e.to]||0,c/2)):e.placement===dT.parser.yy.PLACEMENT.RIGHTOF?n[e.from]=Math.max(n[e.from]||0,c):e.placement===dT.parser.yy.PLACEMENT.LEFTOF?n[r.prevActor]=Math.max(n[r.prevActor]||0,c):e.placement===dT.parser.yy.PLACEMENT.OVER&&(r.prevActor&&(n[r.prevActor]=Math.max(n[r.prevActor]||0,c/2)),r.nextActor&&(n[e.from]=Math.max(n[e.from]||0,c/2)))}})),o.debug("maxMessageWidthPerActor:",n),n}(c,l);fC.height=function(t,e){var n=0;for(var r in Object.keys(t).forEach((function(e){var r=t[e];r.wrap&&(r.description=db.wrapLabel(r.description,fC.width-2*fC.wrapPadding,yC(fC)));var i=db.calculateTextDimensions(r.description,yC(fC));r.width=r.wrap?fC.width:Math.max(fC.width,i.width+2*fC.wrapPadding),r.height=r.wrap?Math.max(i.height,fC.height):fC.height,n=Math.max(n,r.height)})),e){var i=t[r];if(i){var a=t[i.nextActor];if(a){var o=e[r]+fC.actorMargin-i.width/2-a.width/2;i.margin=Math.max(o,fC.actorMargin)}}}return Math.max(n,fC.height)}(c,f),cC(s),sC(s),uC(s),mC(s,c,u,0,fC,l);var d=function(t,e){var n,r,i,a={},s=[];return t.forEach((function(t){switch(t.id=db.random({length:10}),t.type){case dT.parser.yy.LINETYPE.LOOP_START:case dT.parser.yy.LINETYPE.ALT_START:case dT.parser.yy.LINETYPE.OPT_START:case dT.parser.yy.LINETYPE.PAR_START:s.push({id:t.id,msg:t.message,from:Number.MAX_SAFE_INTEGER,to:Number.MIN_SAFE_INTEGER,width:0});break;case dT.parser.yy.LINETYPE.ALT_ELSE:case dT.parser.yy.LINETYPE.PAR_AND:t.message&&(n=s.pop(),a[n.id]=n,a[t.id]=n,s.push(n));break;case dT.parser.yy.LINETYPE.LOOP_END:case dT.parser.yy.LINETYPE.ALT_END:case dT.parser.yy.LINETYPE.OPT_END:case dT.parser.yy.LINETYPE.PAR_END:n=s.pop(),a[n.id]=n;break;case dT.parser.yy.LINETYPE.ACTIVE_START:var c=e[t.from?t.from.actor:t.to.actor],u=_C(t.from?t.from.actor:t.to.actor).length,l=c.x+c.width/2+(u-1)*fC.activationWidth/2,h={startx:l,stopx:l+fC.activationWidth,actor:t.from.actor,enabled:!0};dC.activations.push(h);break;case dT.parser.yy.LINETYPE.ACTIVE_END:var f=dC.activations.map((function(t){return t.actor})).lastIndexOf(t.from.actor);delete dC.activations.splice(f,1)[0]}void 0!==t.placement?(r=function(t,e){var n=e[t.from].x,r=e[t.to].x,i=t.wrap&&t.message,a=db.calculateTextDimensions(i?db.wrapLabel(t.message,fC.width,gC(fC)):t.message,gC(fC)),s={width:i?fC.width:Math.max(fC.width,a.width+2*fC.noteMargin),height:0,startx:e[t.from].x,stopx:0,starty:0,stopy:0,message:t.message};return t.placement===dT.parser.yy.PLACEMENT.RIGHTOF?(s.width=i?Math.max(fC.width,a.width):Math.max(e[t.from].width/2+e[t.to].width/2,a.width+2*fC.noteMargin),s.startx=n+(e[t.from].width+fC.actorMargin)/2):t.placement===dT.parser.yy.PLACEMENT.LEFTOF?(s.width=i?Math.max(fC.width,a.width+2*fC.noteMargin):Math.max(e[t.from].width/2+e[t.to].width/2,a.width+2*fC.noteMargin),s.startx=n-s.width+(e[t.from].width-fC.actorMargin)/2):t.to===t.from?(a=db.calculateTextDimensions(i?db.wrapLabel(t.message,Math.max(fC.width,e[t.from].width),gC(fC)):t.message,gC(fC)),s.width=i?Math.max(fC.width,e[t.from].width):Math.max(e[t.from].width,fC.width,a.width+2*fC.noteMargin),s.startx=n+(e[t.from].width-s.width)/2):(s.width=Math.abs(n+e[t.from].width/2-(r+e[t.to].width/2))+fC.actorMargin,s.startx=n<r?n+e[t.from].width/2-fC.actorMargin/2:r+e[t.to].width/2-fC.actorMargin/2),i&&(s.message=db.wrapLabel(t.message,s.width-2*fC.wrapPadding,gC(fC))),o.debug("NM:[".concat(s.startx,",").concat(s.stopx,",").concat(s.starty,",").concat(s.stopy,":").concat(s.width,",").concat(s.height,"=").concat(t.message,"]")),s}(t,e),t.noteModel=r,s.forEach((function(t){(n=t).from=Math.min(n.from,r.startx),n.to=Math.max(n.to,r.startx+r.width),n.width=Math.max(n.width,Math.abs(n.from-n.to))-fC.labelBoxWidth}))):(i=function(t,e){var n=!1;if([dT.parser.yy.LINETYPE.SOLID_OPEN,dT.parser.yy.LINETYPE.DOTTED_OPEN,dT.parser.yy.LINETYPE.SOLID,dT.parser.yy.LINETYPE.DOTTED,dT.parser.yy.LINETYPE.SOLID_CROSS,dT.parser.yy.LINETYPE.DOTTED_CROSS,dT.parser.yy.LINETYPE.SOLID_POINT,dT.parser.yy.LINETYPE.DOTTED_POINT].includes(t.type)&&(n=!0),!n)return{};var r=xC(t.from,e),i=xC(t.to,e),a=r[0]<=i[0]?1:0,o=r[0]<i[0]?0:1,s=r.concat(i),c=Math.abs(i[o]-r[a]);t.wrap&&t.message&&(t.message=db.wrapLabel(t.message,Math.max(c+2*fC.wrapPadding,fC.width),pC(fC)));var u=db.calculateTextDimensions(t.message,pC(fC));return{width:Math.max(t.wrap?0:u.width+2*fC.wrapPadding,c+2*fC.wrapPadding,fC.width),height:0,startx:r[a],stopx:i[o],starty:0,stopy:0,message:t.message,type:t.type,wrap:t.wrap,fromBounds:Math.min.apply(null,s),toBounds:Math.max.apply(null,s)}}(t,e),t.msgModel=i,i.startx&&i.stopx&&s.length>0&&s.forEach((function(r){if(n=r,i.startx===i.stopx){var a=e[t.from],o=e[t.to];n.from=Math.min(a.x-i.width/2,a.x-a.width/2,n.from),n.to=Math.max(o.x+i.width/2,o.x+a.width/2,n.to),n.width=Math.max(n.width,Math.abs(n.to-n.from))-fC.labelBoxWidth}else n.from=Math.min(i.startx,n.from),n.to=Math.max(i.stopx,n.to),n.width=Math.max(n.width,i.width)-fC.labelBoxWidth})))})),dC.activations=[],o.debug("Loop type widths:",a),a}(l,c);rC(s),oC(s),iC(s),aC(s);var p=1,g=1,y=Array();l.forEach((function(t){var e,n,r;switch(t.type){case dT.parser.yy.LINETYPE.NOTE:n=t.noteModel,function(t,e){dC.bumpVerticalPos(fC.boxMargin),e.height=fC.boxMargin,e.starty=dC.getVerticalPos();var n=hC();n.x=e.startx,n.y=e.starty,n.width=e.width||fC.width,n.class="note";var r=t.append("g"),i=ZT(r,n),a=lC();a.x=e.startx,a.y=e.starty,a.width=n.width,a.dy="1em",a.text=e.message,a.class="noteText",a.fontFamily=fC.noteFontFamily,a.fontSize=fC.noteFontSize,a.fontWeight=fC.noteFontWeight,a.anchor=fC.noteAlign,a.textMargin=fC.noteMargin,a.valign=fC.noteAlign;var o=zT(r,a),s=Math.round(o.map((function(t){return(t._groups||t)[0][0].getBBox().height})).reduce((function(t,e){return t+e})));i.attr("height",s+2*fC.noteMargin),e.height+=s+2*fC.noteMargin,dC.bumpVerticalPos(s+2*fC.noteMargin),e.stopy=e.starty+s+2*fC.noteMargin,e.stopx=e.startx+n.width,dC.insert(e.startx,e.starty,e.stopx,e.stopy),dC.models.addNote(e)}(s,n);break;case dT.parser.yy.LINETYPE.ACTIVE_START:dC.newActivation(t,s,c);break;case dT.parser.yy.LINETYPE.ACTIVE_END:!function(t,e){var n=dC.endActivation(t);n.starty+18>e&&(n.starty=e-6,e+=12),tC(s,n,e,fC,_C(t.from.actor).length),dC.insert(n.startx,e-10,n.stopx,e)}(t,dC.getVerticalPos());break;case dT.parser.yy.LINETYPE.LOOP_START:wC(d,t,fC.boxMargin,fC.boxMargin+fC.boxTextMargin,(function(t){return dC.newLoop(t)}));break;case dT.parser.yy.LINETYPE.LOOP_END:e=dC.endLoop(),eC(s,e,"loop",fC),dC.bumpVerticalPos(e.stopy-dC.getVerticalPos()),dC.models.addLoop(e);break;case dT.parser.yy.LINETYPE.RECT_START:wC(d,t,fC.boxMargin,fC.boxMargin,(function(t){return dC.newLoop(void 0,t.message)}));break;case dT.parser.yy.LINETYPE.RECT_END:e=dC.endLoop(),nC(s,e),dC.models.addLoop(e),dC.bumpVerticalPos(e.stopy-dC.getVerticalPos());break;case dT.parser.yy.LINETYPE.OPT_START:wC(d,t,fC.boxMargin,fC.boxMargin+fC.boxTextMargin,(function(t){return dC.newLoop(t)}));break;case dT.parser.yy.LINETYPE.OPT_END:e=dC.endLoop(),eC(s,e,"opt",fC),dC.bumpVerticalPos(e.stopy-dC.getVerticalPos()),dC.models.addLoop(e);break;case dT.parser.yy.LINETYPE.ALT_START:wC(d,t,fC.boxMargin,fC.boxMargin+fC.boxTextMargin,(function(t){return dC.newLoop(t)}));break;case dT.parser.yy.LINETYPE.ALT_ELSE:wC(d,t,fC.boxMargin+fC.boxTextMargin,fC.boxMargin,(function(t){return dC.addSectionToLoop(t)}));break;case dT.parser.yy.LINETYPE.ALT_END:e=dC.endLoop(),eC(s,e,"alt",fC),dC.bumpVerticalPos(e.stopy-dC.getVerticalPos()),dC.models.addLoop(e);break;case dT.parser.yy.LINETYPE.PAR_START:wC(d,t,fC.boxMargin,fC.boxMargin+fC.boxTextMargin,(function(t){return dC.newLoop(t)}));break;case dT.parser.yy.LINETYPE.PAR_AND:wC(d,t,fC.boxMargin+fC.boxTextMargin,fC.boxMargin,(function(t){return dC.addSectionToLoop(t)}));break;case dT.parser.yy.LINETYPE.PAR_END:e=dC.endLoop(),eC(s,e,"par",fC),dC.bumpVerticalPos(e.stopy-dC.getVerticalPos()),dC.models.addLoop(e);break;case dT.parser.yy.LINETYPE.AUTONUMBER:p=t.message.start||p,g=t.message.step||g,t.message.visible?dT.parser.yy.enableSequenceNumbers():dT.parser.yy.disableSequenceNumbers();break;default:try{(r=t.msgModel).starty=dC.getVerticalPos(),r.sequenceIndex=p,r.sequenceVisible=dT.parser.yy.showSequenceNumbers();var i=function(t,e){dC.bumpVerticalPos(10);var n,r=e.startx,i=e.stopx,a=e.message,o=$m.splitBreaks(a).length,s=db.calculateTextDimensions(a,pC(fC)),c=s.height/o;e.height+=c,dC.bumpVerticalPos(c);var u=s.height-10,l=s.width;if(r===i){n=dC.getVerticalPos()+u,fC.rightAngles||(u+=fC.boxMargin,n=dC.getVerticalPos()+u),u+=30;var h=Math.max(l/2,fC.width/2);dC.insert(r-h,dC.getVerticalPos()-10+u,i+h,dC.getVerticalPos()+30+u)}else u+=fC.boxMargin,n=dC.getVerticalPos()+u,dC.insert(r,n-10,i,n);return dC.bumpVerticalPos(u),e.height+=u,e.stopy=e.starty+e.height,dC.insert(e.fromBounds,e.starty,e.toBounds,e.stopy),n}(0,r);y.push({messageModel:r,lineStarty:i}),dC.models.addMessage(r)}catch(t){o.error("error while drawing message",t)}}[dT.parser.yy.LINETYPE.SOLID_OPEN,dT.parser.yy.LINETYPE.DOTTED_OPEN,dT.parser.yy.LINETYPE.SOLID,dT.parser.yy.LINETYPE.DOTTED,dT.parser.yy.LINETYPE.SOLID_CROSS,dT.parser.yy.LINETYPE.DOTTED_CROSS,dT.parser.yy.LINETYPE.SOLID_POINT,dT.parser.yy.LINETYPE.DOTTED_POINT].includes(t.type)&&(p+=g)})),y.forEach((function(t){return function(t,e,n){var r=e.startx,i=e.stopx,a=e.starty,o=e.message,s=e.type,c=e.sequenceIndex,u=e.sequenceVisible,l=db.calculateTextDimensions(o,pC(fC)),h=lC();h.x=r,h.y=a+10,h.width=i-r,h.class="messageText",h.dy="1em",h.text=o,h.fontFamily=fC.messageFontFamily,h.fontSize=fC.messageFontSize,h.fontWeight=fC.messageFontWeight,h.anchor=fC.messageAlign,h.valign=fC.messageAlign,h.textMargin=fC.wrapPadding,h.tspan=!1,zT(t,h);var f,d=l.width;r===i?f=fC.rightAngles?t.append("path").attr("d","M ".concat(r,",").concat(n," H ").concat(r+Math.max(fC.width/2,d/2)," V ").concat(n+25," H ").concat(r)):t.append("path").attr("d","M "+r+","+n+" C "+(r+60)+","+(n-10)+" "+(r+60)+","+(n+30)+" "+r+","+(n+20)):((f=t.append("line")).attr("x1",r),f.attr("y1",n),f.attr("x2",i),f.attr("y2",n)),s===dT.parser.yy.LINETYPE.DOTTED||s===dT.parser.yy.LINETYPE.DOTTED_CROSS||s===dT.parser.yy.LINETYPE.DOTTED_POINT||s===dT.parser.yy.LINETYPE.DOTTED_OPEN?(f.style("stroke-dasharray","3, 3"),f.attr("class","messageLine1")):f.attr("class","messageLine0");var p="";fC.arrowMarkerAbsolute&&(p=(p=(p=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search).replace(/\(/g,"\\(")).replace(/\)/g,"\\)")),f.attr("stroke-width",2),f.attr("stroke","none"),f.style("fill","none"),s!==dT.parser.yy.LINETYPE.SOLID&&s!==dT.parser.yy.LINETYPE.DOTTED||f.attr("marker-end","url("+p+"#arrowhead)"),s!==dT.parser.yy.LINETYPE.SOLID_POINT&&s!==dT.parser.yy.LINETYPE.DOTTED_POINT||f.attr("marker-end","url("+p+"#filled-head)"),s!==dT.parser.yy.LINETYPE.SOLID_CROSS&&s!==dT.parser.yy.LINETYPE.DOTTED_CROSS||f.attr("marker-end","url("+p+"#crosshead)"),(u||fC.showSequenceNumbers)&&(f.attr("marker-start","url("+p+"#sequencenumber)"),t.append("text").attr("x",r).attr("y",n+4).attr("font-family","sans-serif").attr("font-size","12px").attr("text-anchor","middle").attr("textLength","16px").attr("class","sequenceNumber").text(c))}(s,t.messageModel,t.lineStarty)})),fC.mirrorActors&&(dC.bumpVerticalPos(2*fC.boxMargin),mC(s,c,u,dC.getVerticalPos(),fC,l),dC.bumpVerticalPos(fC.boxMargin),HT(s,dC.getVerticalPos()));var m=vC(s,c,u,a),v=dC.getBounds().bounds;o.debug("For line height fix Querying: #"+e+" .actor-line"),ou("#"+e+" .actor-line").attr("y2",v.stopy);var b=v.stopy-v.starty;b<m.maxHeight&&(b=m.maxHeight);var _=b+2*fC.diagramMarginY;fC.mirrorActors&&(_=_-fC.boxMargin+fC.bottomMarginAdj);var x=v.stopx-v.startx;x<m.maxWidth&&(x=m.maxWidth);var w=x+2*fC.diagramMarginX;h&&s.append("text").text(h).attr("x",(v.stopx-v.startx)/2-2*fC.diagramMarginX).attr("y",-25),lb(s,_,w,fC.useMaxWidth);var k=h?40:0;s.attr("viewBox",v.startx-fC.diagramMarginX+" -"+(fC.diagramMarginY+k)+" "+w+" "+(_+k)),f_(dT.parser.yy,s,e),o.debug("models:",dC.models)}};var CC=n(3584),EC=n.n(CC);function SC(t){return SC="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},SC(t)}var AC=function(t){return JSON.parse(JSON.stringify(t))},MC=[],NC=function t(e,n,r){if("relation"===n.stmt)t(e,n.state1,!0),t(e,n.state2,!1);else if("state"===n.stmt&&"[*]"===n.id&&(n.id=r?e.id+"_start":e.id+"_end",n.start=r),n.doc){var i=[],a=0,o=[];for(a=0;a<n.doc.length;a++)if("divider"===n.doc[a].type){var s=AC(n.doc[a]);s.doc=AC(o),i.push(s),o=[]}else o.push(n.doc[a]);if(i.length>0&&o.length>0){var c={stmt:"state",id:eb(),type:"divider",doc:AC(o)};i.push(AC(c)),n.doc=i}n.doc.forEach((function(e){return t(n,e,!0)}))}},DC={root:{relations:[],states:{},documents:{}}},BC=DC.root,LC=0,OC=function(t,e,n,r,i){void 0===BC.states[t]?BC.states[t]={id:t,descriptions:[],type:e,doc:n,note:i}:(BC.states[t].doc||(BC.states[t].doc=n),BC.states[t].type||(BC.states[t].type=e)),r&&(o.info("Adding state ",t,r),"string"==typeof r&&FC(t,r.trim()),"object"===SC(r)&&r.forEach((function(e){return FC(t,e.trim())}))),i&&(BC.states[t].note=i,BC.states[t].note.text=$m.sanitizeText(BC.states[t].note.text,wb()))},IC=function(){BC=(DC={root:{relations:[],states:{},documents:{}}}).root,BC=DC.root,LC=0,YC=[],Mb()},RC=function(t,e,n){var r=t,i=e,a="default",o="default";"[*]"===t&&(r="start"+ ++LC,a="start"),"[*]"===e&&(i="end"+LC,o="end"),OC(r,a),OC(i,o),BC.relations.push({id1:r,id2:i,title:$m.sanitizeText(n,wb())})},FC=function(t,e){var n=BC.states[t],r=e;":"===r[0]&&(r=r.substr(1).trim()),n.descriptions.push($m.sanitizeText(r,wb()))},PC=0,YC=[],jC="TB";const UC={parseDirective:function(t,e,n){UE.parseDirective(this,t,e,n)},getConfig:function(){return wb().state},addState:OC,clear:IC,getState:function(t){return BC.states[t]},getStates:function(){return BC.states},getRelations:function(){return BC.relations},getClasses:function(){return YC},getDirection:function(){return jC},addRelation:RC,getDividerId:function(){return"divider-id-"+ ++PC},setDirection:function(t){jC=t},cleanupLabel:function(t){return":"===t.substring(0,1)?t.substr(2).trim():t.trim()},lineType:{LINE:0,DOTTED_LINE:1},relationType:{AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3},logDocuments:function(){o.info("Documents = ",DC)},getRootDoc:function(){return MC},setRootDoc:function(t){o.info("Setting root doc",t),MC=t},getRootDocV2:function(){return NC({id:"root"},{id:"root",doc:MC},!0),{id:"root",doc:MC}},extract:function(t){var e;e=t.doc?t.doc:t,o.info(e),IC(),o.info("Extract",e),e.forEach((function(t){"state"===t.stmt&&OC(t.id,t.type,t.doc,t.description,t.note),"relation"===t.stmt&&RC(t.state1.id,t.state2.id,t.description)}))},trimColon:function(t){return t&&":"===t[0]?t.substr(1).trim():t.trim()},getTitle:Db,setTitle:Nb,getAccDescription:Lb,setAccDescription:Bb};var zC={};function $C(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}var qC,HC=function(t,e,n){var r,i=wb().state.padding,a=2*wb().state.padding,o=t.node().getBBox(),s=o.width,c=o.x,u=t.append("text").attr("x",0).attr("y",wb().state.titleShift).attr("font-size",wb().state.fontSize).attr("class","state-title").text(e.id),l=u.node().getBBox().width+a,h=Math.max(l,s);h===s&&(h+=a);var f=t.node().getBBox();e.doc,r=c-i,l>s&&(r=(s-h)/2+i),Math.abs(c-f.x)<i&&l>s&&(r=c-(l-s)/2);var d=1-wb().state.textHeight;return t.insert("rect",":first-child").attr("x",r).attr("y",d).attr("class",n?"alt-composit":"composit").attr("width",h).attr("height",f.height+wb().state.textHeight+wb().state.titleShift+1).attr("rx","0"),u.attr("x",r+i),l<=s&&u.attr("x",c+(h-a)/2-l/2+i),t.insert("rect",":first-child").attr("x",r).attr("y",wb().state.titleShift-wb().state.textHeight-wb().state.padding).attr("width",h).attr("height",3*wb().state.textHeight).attr("rx",wb().state.radius),t.insert("rect",":first-child").attr("x",r).attr("y",wb().state.titleShift-wb().state.textHeight-wb().state.padding).attr("width",h).attr("height",f.height+3+2*wb().state.textHeight).attr("rx",wb().state.radius),t},WC=function(t,e){e.attr("class","state-note");var n=e.append("rect").attr("x",0).attr("y",wb().state.padding),r=function(t,e,n,r){var i=0,a=r.append("text");a.style("text-anchor","start"),a.attr("class","noteText");var o,s=t.replace(/\r\n/g,"<br/>"),c=(s=s.replace(/\n/g,"<br/>")).split($m.lineBreakRegex),u=1.25*wb().state.noteMargin,l=function(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(t){if("string"==typeof t)return $C(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?$C(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,s=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return o=t.done,t},e:function(t){s=!0,a=t},f:function(){try{o||null==n.return||n.return()}finally{if(s)throw a}}}}(c);try{for(l.s();!(o=l.n()).done;){var h=o.value.trim();if(h.length>0){var f=a.append("tspan");f.text(h),0===u&&(u+=f.node().getBBox().height),i+=u,f.attr("x",0+wb().state.noteMargin),f.attr("y",0+i+1.25*wb().state.noteMargin)}}}catch(t){l.e(t)}finally{l.f()}return{textWidth:a.node().getBBox().width,textHeight:i}}(t,0,0,e.append("g")),i=r.textWidth,a=r.textHeight;return n.attr("height",a+2*wb().state.noteMargin),n.attr("width",i+2*wb().state.noteMargin),n},VC=function(t,e){var n=e.id,r={id:n,label:e.id,width:0,height:0},i=t.append("g").attr("id",n).attr("class","stateGroup");"start"===e.type&&function(t){t.append("circle").attr("class","start-state").attr("r",wb().state.sizeUnit).attr("cx",wb().state.padding+wb().state.sizeUnit).attr("cy",wb().state.padding+wb().state.sizeUnit)}(i),"end"===e.type&&function(t){t.append("circle").attr("class","end-state-outer").attr("r",wb().state.sizeUnit+wb().state.miniPadding).attr("cx",wb().state.padding+wb().state.sizeUnit+wb().state.miniPadding).attr("cy",wb().state.padding+wb().state.sizeUnit+wb().state.miniPadding),t.append("circle").attr("class","end-state-inner").attr("r",wb().state.sizeUnit).attr("cx",wb().state.padding+wb().state.sizeUnit+2).attr("cy",wb().state.padding+wb().state.sizeUnit+2)}(i),"fork"!==e.type&&"join"!==e.type||function(t,e){var n=wb().state.forkWidth,r=wb().state.forkHeight;if(e.parentId){var i=n;n=r,r=i}t.append("rect").style("stroke","black").style("fill","black").attr("width",n).attr("height",r).attr("x",wb().state.padding).attr("y",wb().state.padding)}(i,e),"note"===e.type&&WC(e.note.text,i),"divider"===e.type&&function(t){t.append("line").style("stroke","grey").style("stroke-dasharray","3").attr("x1",wb().state.textHeight).attr("class","divider").attr("x2",2*wb().state.textHeight).attr("y1",0).attr("y2",0)}(i),"default"===e.type&&0===e.descriptions.length&&function(t,e){var n=t.append("text").attr("x",2*wb().state.padding).attr("y",wb().state.textHeight+2*wb().state.padding).attr("font-size",wb().state.fontSize).attr("class","state-title").text(e.id).node().getBBox();t.insert("rect",":first-child").attr("x",wb().state.padding).attr("y",wb().state.padding).attr("width",n.width+2*wb().state.padding).attr("height",n.height+2*wb().state.padding).attr("rx",wb().state.radius)}(i,e),"default"===e.type&&e.descriptions.length>0&&function(t,e){var n=t.append("text").attr("x",2*wb().state.padding).attr("y",wb().state.textHeight+1.3*wb().state.padding).attr("font-size",wb().state.fontSize).attr("class","state-title").text(e.descriptions[0]).node().getBBox(),r=n.height,i=t.append("text").attr("x",wb().state.padding).attr("y",r+.4*wb().state.padding+wb().state.dividerMargin+wb().state.textHeight).attr("class","state-description"),a=!0,o=!0;e.descriptions.forEach((function(t){a||(function(t,e,n){var r=t.append("tspan").attr("x",2*wb().state.padding).text(e);n||r.attr("dy",wb().state.textHeight)}(i,t,o),o=!1),a=!1}));var s=t.append("line").attr("x1",wb().state.padding).attr("y1",wb().state.padding+r+wb().state.dividerMargin/2).attr("y2",wb().state.padding+r+wb().state.dividerMargin/2).attr("class","descr-divider"),c=i.node().getBBox(),u=Math.max(c.width,n.width);s.attr("x2",u+3*wb().state.padding),t.insert("rect",":first-child").attr("x",wb().state.padding).attr("y",wb().state.padding).attr("width",u+2*wb().state.padding).attr("height",c.height+r+2*wb().state.padding).attr("rx",wb().state.radius)}(i,e);var a,o=i.node().getBBox();return r.width=o.width+2*wb().state.padding,r.height=o.height+2*wb().state.padding,a=r,zC[n]=a,r},GC=0;CC.parser.yy=UC;var XC={},ZC=function t(e,n,r,i,a,s){var c,u=new(t_().Graph)({compound:!0,multigraph:!0}),l=!0;for(c=0;c<e.length;c++)if("relation"===e[c].stmt){l=!1;break}r?u.setGraph({rankdir:"LR",multigraph:!0,compound:!0,ranker:"tight-tree",ranksep:l?1:qC.edgeLengthFactor,nodeSep:l?1:50,isMultiGraph:!0}):u.setGraph({rankdir:"TB",multigraph:!0,compound:!0,ranksep:l?1:qC.edgeLengthFactor,nodeSep:l?1:50,ranker:"tight-tree",isMultiGraph:!0}),u.setDefaultEdgeLabel((function(){return{}})),UC.extract(e);for(var h=UC.getStates(),f=UC.getRelations(),d=Object.keys(h),p=0;p<d.length;p++){var g=h[d[p]];r&&(g.parentId=r);var y=void 0;if(g.doc){var m=n.append("g").attr("id",g.id).attr("class","stateGroup");y=t(g.doc,m,g.id,!i,a,s);var v=(m=HC(m,g,i)).node().getBBox();y.width=v.width,y.height=v.height+qC.padding/2,XC[g.id]={y:qC.compositTitleSize}}else y=VC(n,g);if(g.note){var b={descriptions:[],id:g.id+"-note",note:g.note,type:"note"},_=VC(n,b);"left of"===g.note.position?(u.setNode(y.id+"-note",_),u.setNode(y.id,y)):(u.setNode(y.id,y),u.setNode(y.id+"-note",_)),u.setParent(y.id,y.id+"-group"),u.setParent(y.id+"-note",y.id+"-group")}else u.setNode(y.id,y)}o.debug("Count=",u.nodeCount(),u);var x=0;f.forEach((function(t){var e;x++,o.debug("Setting edge",t),u.setEdge(t.id1,t.id2,{relation:t,width:(e=t.title,e?e.length*qC.fontSizeFactor:1),height:qC.labelHeight*$m.getRows(t.title).length,labelpos:"c"},"id"+x)})),Kb().layout(u),o.debug("Graph after layout",u.nodes());var w=n.node();u.nodes().forEach((function(t){void 0!==t&&void 0!==u.node(t)?(o.warn("Node "+t+": "+JSON.stringify(u.node(t))),a.select("#"+w.id+" #"+t).attr("transform","translate("+(u.node(t).x-u.node(t).width/2)+","+(u.node(t).y+(XC[t]?XC[t].y:0)-u.node(t).height/2)+" )"),a.select("#"+w.id+" #"+t).attr("data-x-shift",u.node(t).x-u.node(t).width/2),s.querySelectorAll("#"+w.id+" #"+t+" .divider").forEach((function(t){var e=t.parentElement,n=0,r=0;e&&(e.parentElement&&(n=e.parentElement.getBBox().width),r=parseInt(e.getAttribute("data-x-shift"),10),Number.isNaN(r)&&(r=0)),t.setAttribute("x1",0-r+8),t.setAttribute("x2",n-r-8)}))):o.debug("No Node "+t+": "+JSON.stringify(u.node(t)))}));var k=w.getBBox();u.edges().forEach((function(t){void 0!==t&&void 0!==u.edge(t)&&(o.debug("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(u.edge(t))),function(t,e,n){e.points=e.points.filter((function(t){return!Number.isNaN(t.y)}));var r=e.points,i=Uu().x((function(t){return t.x})).y((function(t){return t.y})).curve(Vu),a=t.append("path").attr("d",i(r)).attr("id","edge"+GC).attr("class","transition"),s="";if(wb().state.arrowMarkerAbsolute&&(s=(s=(s=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search).replace(/\(/g,"\\(")).replace(/\)/g,"\\)")),a.attr("marker-end","url("+s+"#"+function(t){switch(t){case UC.relationType.AGGREGATION:return"aggregation";case UC.relationType.EXTENSION:return"extension";case UC.relationType.COMPOSITION:return"composition";case UC.relationType.DEPENDENCY:return"dependency"}}(UC.relationType.DEPENDENCY)+"End)"),void 0!==n.title){for(var c=t.append("g").attr("class","stateLabel"),u=db.calcLabelPosition(e.points),l=u.x,h=u.y,f=$m.getRows(n.title),d=0,p=[],g=0,y=0,m=0;m<=f.length;m++){var v=c.append("text").attr("text-anchor","middle").text(f[m]).attr("x",l).attr("y",h+d),b=v.node().getBBox();if(g=Math.max(g,b.width),y=Math.min(y,b.x),o.info(b.x,l,h+d),0===d){var _=v.node().getBBox();d=_.height,o.info("Title height",d,h)}p.push(v)}var x=d*f.length;if(f.length>1){var w=(f.length-1)*d*.5;p.forEach((function(t,e){return t.attr("y",h+e*d-w)})),x=d*f.length}var k=c.node().getBBox();c.insert("rect",":first-child").attr("class","box").attr("x",l-g/2-wb().state.padding/2).attr("y",h-x/2-wb().state.padding/2-3.5).attr("width",g+wb().state.padding).attr("height",x+wb().state.padding),o.info(k)}GC++}(n,u.edge(t),u.edge(t).relation))})),k=w.getBBox();var T={id:r||"root",label:r||"root",width:0,height:0};return T.width=k.width+2*qC.padding,T.height=k.height+2*qC.padding,o.debug("Doc rendered",T,u),T};const QC=function(t,e){qC=wb().state;var n,r=wb().securityLevel;"sandbox"===r&&(n=au("#i"+e));var i=au("sandbox"===r?n.nodes()[0].contentDocument.body:"body"),a="sandbox"===r?n.nodes()[0].contentDocument:document;CC.parser.yy.clear(),CC.parser.parse(t),o.debug("Rendering diagram "+t);var s=i.select("[id='".concat(e,"']"));s.append("defs").append("marker").attr("id","dependencyEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z"),new(t_().Graph)({multigraph:!0,compound:!0,rankdir:"RL"}).setDefaultEdgeLabel((function(){return{}}));var c=UC.getRootDoc();ZC(c,s,void 0,!1,i,a);var u=qC.padding,l=s.node().getBBox(),h=l.width+2*u,f=l.height+2*u;lb(s,f,1.75*h,qC.useMaxWidth),s.attr("viewBox","".concat(l.x-qC.padding," ").concat(l.y-qC.padding," ")+h+" "+f),f_(CC.parser.yy,s,e)};var KC={},JC={},tE=function(t,e,n,r){if("root"!==n.id){var i="rect";!0===n.start&&(i="start"),!1===n.start&&(i="end"),"default"!==n.type&&(i=n.type),JC[n.id]||(JC[n.id]={id:n.id,shape:i,description:$m.sanitizeText(n.id,wb()),classes:"statediagram-state"}),n.description&&(Array.isArray(JC[n.id].description)?(JC[n.id].shape="rectWithTitle",JC[n.id].description.push(n.description)):JC[n.id].description.length>0?(JC[n.id].shape="rectWithTitle",JC[n.id].description===n.id?JC[n.id].description=[n.description]:JC[n.id].description=[JC[n.id].description,n.description]):(JC[n.id].shape="rect",JC[n.id].description=n.description),JC[n.id].description=$m.sanitizeTextOrArray(JC[n.id].description,wb())),1===JC[n.id].description.length&&"rectWithTitle"===JC[n.id].shape&&(JC[n.id].shape="rect"),!JC[n.id].type&&n.doc&&(o.info("Setting cluster for ",n.id,rE(n)),JC[n.id].type="group",JC[n.id].dir=rE(n),JC[n.id].shape="divider"===n.type?"divider":"roundedWithTitle",JC[n.id].classes=JC[n.id].classes+" "+(r?"statediagram-cluster statediagram-cluster-alt":"statediagram-cluster"));var a={labelStyle:"",shape:JC[n.id].shape,labelText:JC[n.id].description,classes:JC[n.id].classes,style:"",id:n.id,dir:JC[n.id].dir,domId:"state-"+n.id+"-"+eE,type:JC[n.id].type,padding:15};if(n.note){var s={labelStyle:"",shape:"note",labelText:n.note.text,classes:"statediagram-note",style:"",id:n.id+"----note-"+eE,domId:"state-"+n.id+"----note-"+eE,type:JC[n.id].type,padding:15},c={labelStyle:"",shape:"noteGroup",labelText:n.note.text,classes:JC[n.id].classes,style:"",id:n.id+"----parent",domId:"state-"+n.id+"----parent-"+eE,type:"group",padding:0};eE++,t.setNode(n.id+"----parent",c),t.setNode(s.id,s),t.setNode(n.id,a),t.setParent(n.id,n.id+"----parent"),t.setParent(s.id,n.id+"----parent");var u=n.id,l=s.id;"left of"===n.note.position&&(u=s.id,l=n.id),t.setEdge(u,l,{arrowhead:"none",arrowType:"",style:"fill:none",labelStyle:"",classes:"transition note-edge",arrowheadStyle:"fill: #333",labelpos:"c",labelType:"text",thickness:"normal"})}else t.setNode(n.id,a)}e&&"root"!==e.id&&(o.trace("Setting node ",n.id," to be child of its parent ",e.id),t.setParent(n.id,e.id)),n.doc&&(o.trace("Adding nodes children "),nE(t,n,n.doc,!r))},eE=0,nE=function(t,e,n,r){o.trace("items",n),n.forEach((function(n){if("state"===n.stmt||"default"===n.stmt)tE(t,e,n,r);else if("relation"===n.stmt){tE(t,e,n.state1,r),tE(t,e,n.state2,r);var i={id:"edge"+eE,arrowhead:"normal",arrowTypeEnd:"arrow_barb",style:"fill:none",labelStyle:"",label:$m.sanitizeText(n.description,wb()),arrowheadStyle:"fill: #333",labelpos:"c",labelType:"text",thickness:"normal",classes:"transition"},a=n.state1.id,o=n.state2.id;t.setEdge(a,o,i,eE),eE++}}))},rE=function(t,e){var n=e||"TB";if(t.doc)for(var r=0;r<t.doc.length;r++){var i=t.doc[r];"dir"===i.stmt&&(n=i.value)}return n};const iE=function(t){for(var e=Object.keys(t),n=0;n<e.length;n++)KC[e[n]]=t[e[n]]};function aE(t){return function(t){if(Array.isArray(t))return oE(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return oE(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?oE(t,e):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function oE(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}var sE="",cE=[],uE=[],lE=[],hE=function(){for(var t=!0,e=0;e<lE.length;e++)lE[e].processed,t=t&&lE[e].processed;return t};const fE={parseDirective:function(t,e,n){UE.parseDirective(this,t,e,n)},getConfig:function(){return wb().journey},clear:function(){cE.length=0,uE.length=0,sE="",lE.length=0,Mb()},setTitle:Nb,getTitle:Db,setAccDescription:Bb,getAccDescription:Lb,addSection:function(t){sE=t,cE.push(t)},getSections:function(){return cE},getTasks:function(){for(var t=hE(),e=0;!t&&e<100;)t=hE(),e++;return uE.push.apply(uE,lE),uE},addTask:function(t,e){var n=e.substr(1).split(":"),r=0,i=[];1===n.length?(r=Number(n[0]),i=[]):(r=Number(n[0]),i=n[1].split(","));var a=i.map((function(t){return t.trim()})),o={section:sE,type:sE,people:a,task:t,score:r};lE.push(o)},addTaskOrg:function(t){var e={section:sE,type:sE,description:t,task:t,classes:[]};uE.push(e)},getActors:function(){return t=[],uE.forEach((function(e){e.people&&t.push.apply(t,aE(e.people))})),aE(new Set(t)).sort();var t}};var dE=n(9763),pE=n.n(dE),gE=function(t,e){var n=t.append("rect");return n.attr("x",e.x),n.attr("y",e.y),n.attr("fill",e.fill),n.attr("stroke",e.stroke),n.attr("width",e.width),n.attr("height",e.height),n.attr("rx",e.rx),n.attr("ry",e.ry),void 0!==e.class&&n.attr("class",e.class),n},yE=function(t,e){var n=t.append("circle");return n.attr("cx",e.cx),n.attr("cy",e.cy),n.attr("class","actor-"+e.pos),n.attr("fill",e.fill),n.attr("stroke",e.stroke),n.attr("r",e.r),void 0!==n.class&&n.attr("class",n.class),void 0!==e.title&&n.append("title").text(e.title),n},mE=-1,vE=function(){function t(t,e,n,i,a,o,s,c){r(e.append("text").attr("x",n+a/2).attr("y",i+o/2+5).style("font-color",c).style("text-anchor","middle").text(t),s)}function e(t,e,n,i,a,o,s,c,u){for(var l=c.taskFontSize,h=c.taskFontFamily,f=t.split(/<br\s*\/?>/gi),d=0;d<f.length;d++){var p=d*l-l*(f.length-1)/2,g=e.append("text").attr("x",n+a/2).attr("y",i).attr("fill",u).style("text-anchor","middle").style("font-size",l).style("font-family",h);g.append("tspan").attr("x",n+a/2).attr("dy",p).text(f[d]),g.attr("y",i+o/2).attr("dominant-baseline","central").attr("alignment-baseline","central"),r(g,s)}}function n(t,n,i,a,o,s,c,u){var l=n.append("switch"),h=l.append("foreignObject").attr("x",i).attr("y",a).attr("width",o).attr("height",s).attr("position","fixed").append("xhtml:div").style("display","table").style("height","100%").style("width","100%");h.append("div").attr("class","label").style("display","table-cell").style("text-align","center").style("vertical-align","middle").text(t),e(t,l,i,a,o,s,c,u),r(h,c)}function r(t,e){for(var n in e)n in e&&t.attr(n,e[n])}return function(r){return"fo"===r.textPlacement?n:"old"===r.textPlacement?t:e}}();const bE=yE,_E=function(t,e,n){var r=t.append("g"),i={x:0,y:0,width:100,anchor:"start",height:100,rx:0,ry:0};i.x=e.x,i.y=e.y,i.fill=e.fill,i.width=n.width,i.height=n.height,i.class="journey-section section-type-"+e.num,i.rx=3,i.ry=3,gE(r,i),vE(n)(e.text,r,i.x,i.y,i.width,i.height,{class:"journey-section section-type-"+e.num},n,e.colour)},xE=function(t,e){var n=e.text.replace(/<br\s*\/?>/gi," "),r=t.append("text");r.attr("x",e.x),r.attr("y",e.y),r.attr("class","legend"),r.style("text-anchor",e.anchor),void 0!==e.class&&r.attr("class",e.class);var i=r.append("tspan");return i.attr("x",e.x+2*e.textMargin),i.text(n),r},wE=function(t,e,n){var r,i,a,o=e.x+n.width/2,s=t.append("g");mE++,s.append("line").attr("id","task"+mE).attr("x1",o).attr("y1",e.y).attr("x2",o).attr("y2",450).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),r=s,i={cx:o,cy:300+30*(5-e.score),score:e.score},r.append("circle").attr("cx",i.cx).attr("cy",i.cy).attr("class","face").attr("r",15).attr("stroke-width",2).attr("overflow","visible"),(a=r.append("g")).append("circle").attr("cx",i.cx-5).attr("cy",i.cy-5).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),a.append("circle").attr("cx",i.cx+5).attr("cy",i.cy-5).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),i.score>3?function(t){var e=Iu().startAngle(Math.PI/2).endAngle(Math.PI/2*3).innerRadius(7.5).outerRadius(15/2.2);t.append("path").attr("class","mouth").attr("d",e).attr("transform","translate("+i.cx+","+(i.cy+2)+")")}(a):i.score<3?function(t){var e=Iu().startAngle(3*Math.PI/2).endAngle(Math.PI/2*5).innerRadius(7.5).outerRadius(15/2.2);t.append("path").attr("class","mouth").attr("d",e).attr("transform","translate("+i.cx+","+(i.cy+7)+")")}(a):function(t){t.append("line").attr("class","mouth").attr("stroke",2).attr("x1",i.cx-5).attr("y1",i.cy+7).attr("x2",i.cx+5).attr("y2",i.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}(a);var c={x:0,y:0,width:100,anchor:"start",height:100,rx:0,ry:0};c.x=e.x,c.y=e.y,c.fill=e.fill,c.width=n.width,c.height=n.height,c.class="task task-type-"+e.num,c.rx=3,c.ry=3,gE(s,c);var u=e.x+14;e.people.forEach((function(t){var n=e.actors[t].color,r={cx:u,cy:e.y,r:7,fill:n,stroke:"#000",title:t,pos:e.actors[t].position};yE(s,r),u+=10})),vE(n)(e.task,s,c.x,c.y,c.width,c.height,{class:"task"},n,e.colour)};dE.parser.yy=fE;var kE={},TE=wb().journey,CE=wb().journey.leftMargin,EE={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],init:function(){this.sequenceItems=[],this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0},updateVal:function(t,e,n,r){void 0===t[e]?t[e]=n:t[e]=r(n,t[e])},updateBounds:function(t,e,n,r){var i=wb().journey,a=this,o=0;this.sequenceItems.forEach((function(s){o++;var c=a.sequenceItems.length-o+1;a.updateVal(s,"starty",e-c*i.boxMargin,Math.min),a.updateVal(s,"stopy",r+c*i.boxMargin,Math.max),a.updateVal(EE.data,"startx",t-c*i.boxMargin,Math.min),a.updateVal(EE.data,"stopx",n+c*i.boxMargin,Math.max),a.updateVal(s,"startx",t-c*i.boxMargin,Math.min),a.updateVal(s,"stopx",n+c*i.boxMargin,Math.max),a.updateVal(EE.data,"starty",e-c*i.boxMargin,Math.min),a.updateVal(EE.data,"stopy",r+c*i.boxMargin,Math.max)}))},insert:function(t,e,n,r){var i=Math.min(t,n),a=Math.max(t,n),o=Math.min(e,r),s=Math.max(e,r);this.updateVal(EE.data,"startx",i,Math.min),this.updateVal(EE.data,"starty",o,Math.min),this.updateVal(EE.data,"stopx",a,Math.max),this.updateVal(EE.data,"stopy",s,Math.max),this.updateBounds(i,o,a,s)},bumpVerticalPos:function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=this.verticalPos},getVerticalPos:function(){return this.verticalPos},getBounds:function(){return this.data}},SE=TE.sectionFills,AE=TE.sectionColours;const ME=function(t){Object.keys(t).forEach((function(e){TE[e]=t[e]}))},NE=function(t,e){var n=wb().journey;dE.parser.yy.clear(),dE.parser.parse(t+"\n");var r,i=wb().securityLevel;"sandbox"===i&&(r=au("#i"+e));var a=au("sandbox"===i?r.nodes()[0].contentDocument.body:"body");"sandbox"===i?r.nodes()[0].contentDocument:document,EE.init();var o=a.select("#"+e);o.attr("xmlns:xlink","http://www.w3.org/1999/xlink"),o.append("defs").append("marker").attr("id","arrowhead").attr("refX",5).attr("refY",2).attr("markerWidth",6).attr("markerHeight",4).attr("orient","auto").append("path").attr("d","M 0,0 V 4 L6,2 Z");var s=dE.parser.yy.getTasks(),c=dE.parser.yy.getTitle(),u=dE.parser.yy.getActors();for(var l in kE)delete kE[l];var h=0;u.forEach((function(t){kE[t]={color:n.actorColours[h%n.actorColours.length],position:h},h++})),function(t){var e=wb().journey,n=60;Object.keys(kE).forEach((function(r){var i=kE[r].color,a={cx:20,cy:n,r:7,fill:i,stroke:"#000",pos:kE[r].position};bE(t,a);var o={x:40,y:n+7,fill:"#666",text:r,textMargin:5|e.boxTextMargin};xE(t,o),n+=20}))}(o),EE.insert(0,0,CE,50*Object.keys(kE).length),function(t,e,n){for(var r=wb().journey,i="",a=n+(2*r.height+r.diagramMarginY),o=0,s="#CCC",c="black",u=0,l=0;l<e.length;l++){var h=e[l];if(i!==h.section){s=SE[o%SE.length],u=o%SE.length,c=AE[o%AE.length];var f={x:l*r.taskMargin+l*r.width+CE,y:50,text:h.section,fill:s,num:u,colour:c};_E(t,f,r),i=h.section,o++}var d=h.people.reduce((function(t,e){return kE[e]&&(t[e]=kE[e]),t}),{});h.x=l*r.taskMargin+l*r.width+CE,h.y=a,h.width=r.diagramMarginX,h.height=r.diagramMarginY,h.colour=c,h.fill=s,h.num=u,h.actors=d,wE(t,h,r),EE.insert(h.x,h.y,h.x+h.width+r.taskMargin,450)}}(o,s,0);var f=EE.getBounds();c&&o.append("text").text(c).attr("x",CE).attr("font-size","4ex").attr("font-weight","bold").attr("y",25);var d=f.stopy-f.starty+2*n.diagramMarginY,p=CE+f.stopx+2*n.diagramMarginX;lb(o,d,p,n.useMaxWidth),o.append("line").attr("x1",CE).attr("y1",4*n.height).attr("x2",p-CE-4).attr("y2",4*n.height).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)");var g=c?70:0;o.attr("viewBox","".concat(f.startx," -25 ").concat(p," ").concat(d+g)),o.attr("preserveAspectRatio","xMinYMin meet"),o.attr("height",d+g+25),f_(dE.parser.yy,o,e)};var DE={};const BE=function(t){return"g.classGroup text {\n fill: ".concat(t.nodeBorder,";\n fill: ").concat(t.classText,";\n stroke: none;\n font-family: ").concat(t.fontFamily,";\n font-size: 10px;\n\n .title {\n font-weight: bolder;\n }\n\n}\n\n.nodeLabel, .edgeLabel {\n color: ").concat(t.classText,";\n}\n.edgeLabel .label rect {\n fill: ").concat(t.mainBkg,";\n}\n.label text {\n fill: ").concat(t.classText,";\n}\n.edgeLabel .label span {\n background: ").concat(t.mainBkg,";\n}\n\n.classTitle {\n font-weight: bolder;\n}\n.node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ").concat(t.mainBkg,";\n stroke: ").concat(t.nodeBorder,";\n stroke-width: 1px;\n }\n\n\n.divider {\n stroke: ").concat(t.nodeBorder,";\n stroke: 1;\n}\n\ng.clickable {\n cursor: pointer;\n}\n\ng.classGroup rect {\n fill: ").concat(t.mainBkg,";\n stroke: ").concat(t.nodeBorder,";\n}\n\ng.classGroup line {\n stroke: ").concat(t.nodeBorder,";\n stroke-width: 1;\n}\n\n.classLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: ").concat(t.mainBkg,";\n opacity: 0.5;\n}\n\n.classLabel .label {\n fill: ").concat(t.nodeBorder,";\n font-size: 10px;\n}\n\n.relation {\n stroke: ").concat(t.lineColor,";\n stroke-width: 1;\n fill: none;\n}\n\n.dashed-line{\n stroke-dasharray: 3;\n}\n\n#compositionStart, .composition {\n fill: ").concat(t.lineColor," !important;\n stroke: ").concat(t.lineColor," !important;\n stroke-width: 1;\n}\n\n#compositionEnd, .composition {\n fill: ").concat(t.lineColor," !important;\n stroke: ").concat(t.lineColor," !important;\n stroke-width: 1;\n}\n\n#dependencyStart, .dependency {\n fill: ").concat(t.lineColor," !important;\n stroke: ").concat(t.lineColor," !important;\n stroke-width: 1;\n}\n\n#dependencyStart, .dependency {\n fill: ").concat(t.lineColor," !important;\n stroke: ").concat(t.lineColor," !important;\n stroke-width: 1;\n}\n\n#extensionStart, .extension {\n fill: ").concat(t.lineColor," !important;\n stroke: ").concat(t.lineColor," !important;\n stroke-width: 1;\n}\n\n#extensionEnd, .extension {\n fill: ").concat(t.lineColor," !important;\n stroke: ").concat(t.lineColor," !important;\n stroke-width: 1;\n}\n\n#aggregationStart, .aggregation {\n fill: ").concat(t.mainBkg," !important;\n stroke: ").concat(t.lineColor," !important;\n stroke-width: 1;\n}\n\n#aggregationEnd, .aggregation {\n fill: ").concat(t.mainBkg," !important;\n stroke: ").concat(t.lineColor," !important;\n stroke-width: 1;\n}\n\n.edgeTerminals {\n font-size: 11px;\n}\n\n")},LE=function(t){return".label {\n font-family: ".concat(t.fontFamily,";\n color: ").concat(t.nodeTextColor||t.textColor,";\n }\n .cluster-label text {\n fill: ").concat(t.titleColor,";\n }\n .cluster-label span {\n color: ").concat(t.titleColor,";\n }\n\n .label text,span {\n fill: ").concat(t.nodeTextColor||t.textColor,";\n color: ").concat(t.nodeTextColor||t.textColor,";\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ").concat(t.mainBkg,";\n stroke: ").concat(t.nodeBorder,";\n stroke-width: 1px;\n }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ").concat(t.arrowheadColor,";\n }\n\n .edgePath .path {\n stroke: ").concat(t.lineColor,";\n stroke-width: 2.0px;\n }\n\n .flowchart-link {\n stroke: ").concat(t.lineColor,";\n fill: none;\n }\n\n .edgeLabel {\n background-color: ").concat(t.edgeLabelBackground,";\n rect {\n opacity: 0.5;\n background-color: ").concat(t.edgeLabelBackground,";\n fill: ").concat(t.edgeLabelBackground,";\n }\n text-align: center;\n }\n\n .cluster rect {\n fill: ").concat(t.clusterBkg,";\n stroke: ").concat(t.clusterBorder,";\n stroke-width: 1px;\n }\n\n .cluster text {\n fill: ").concat(t.titleColor,";\n }\n\n .cluster span {\n color: ").concat(t.titleColor,";\n }\n /* .cluster div {\n color: ").concat(t.titleColor,";\n } */\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: ").concat(t.fontFamily,";\n font-size: 12px;\n background: ").concat(t.tertiaryColor,";\n border: 1px solid ").concat(t.border2,";\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n")},OE=function(t){return"\ndefs #statediagram-barbEnd {\n fill: ".concat(t.transitionColor,";\n stroke: ").concat(t.transitionColor,";\n }\ng.stateGroup text {\n fill: ").concat(t.nodeBorder,";\n stroke: none;\n font-size: 10px;\n}\ng.stateGroup text {\n fill: ").concat(t.textColor,";\n stroke: none;\n font-size: 10px;\n\n}\ng.stateGroup .state-title {\n font-weight: bolder;\n fill: ").concat(t.stateLabelColor,";\n}\n\ng.stateGroup rect {\n fill: ").concat(t.mainBkg,";\n stroke: ").concat(t.nodeBorder,";\n}\n\ng.stateGroup line {\n stroke: ").concat(t.lineColor,";\n stroke-width: 1;\n}\n\n.transition {\n stroke: ").concat(t.transitionColor,";\n stroke-width: 1;\n fill: none;\n}\n\n.stateGroup .composit {\n fill: ").concat(t.background,";\n border-bottom: 1px\n}\n\n.stateGroup .alt-composit {\n fill: #e0e0e0;\n border-bottom: 1px\n}\n\n.state-note {\n stroke: ").concat(t.noteBorderColor,";\n fill: ").concat(t.noteBkgColor,";\n\n text {\n fill: ").concat(t.noteTextColor,";\n stroke: none;\n font-size: 10px;\n }\n}\n\n.stateLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: ").concat(t.mainBkg,";\n opacity: 0.5;\n}\n\n.edgeLabel .label rect {\n fill: ").concat(t.labelBackgroundColor,";\n opacity: 0.5;\n}\n.edgeLabel .label text {\n fill: ").concat(t.transitionLabelColor||t.tertiaryTextColor,";\n}\n.label div .edgeLabel {\n color: ").concat(t.transitionLabelColor||t.tertiaryTextColor,";\n}\n\n.stateLabel text {\n fill: ").concat(t.stateLabelColor,";\n font-size: 10px;\n font-weight: bold;\n}\n\n.node circle.state-start {\n fill: ").concat(t.specialStateColor,";\n stroke: ").concat(t.specialStateColor,";\n}\n\n.node .fork-join {\n fill: ").concat(t.specialStateColor,";\n stroke: ").concat(t.specialStateColor,";\n}\n\n.node circle.state-end {\n fill: ").concat(t.innerEndBackground,";\n stroke: ").concat(t.background,";\n stroke-width: 1.5\n}\n.end-state-inner {\n fill: ").concat(t.compositeBackground||t.background,";\n // stroke: ").concat(t.background,";\n stroke-width: 1.5\n}\n\n.node rect {\n fill: ").concat(t.stateBkg||t.mainBkg,";\n stroke: ").concat(t.stateBorder||t.nodeBorder,";\n stroke-width: 1px;\n}\n.node polygon {\n fill: ").concat(t.mainBkg,";\n stroke: ").concat(t.stateBorder||t.nodeBorder,";;\n stroke-width: 1px;\n}\n#statediagram-barbEnd {\n fill: ").concat(t.lineColor,";\n}\n\n.statediagram-cluster rect {\n fill: ").concat(t.compositeTitleBackground,";\n stroke: ").concat(t.stateBorder||t.nodeBorder,";\n stroke-width: 1px;\n}\n\n.cluster-label, .nodeLabel {\n color: ").concat(t.stateLabelColor,";\n}\n\n.statediagram-cluster rect.outer {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-state .divider {\n stroke: ").concat(t.stateBorder||t.nodeBorder,";\n}\n\n.statediagram-state .title-state {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-cluster.statediagram-cluster .inner {\n fill: ").concat(t.compositeBackground||t.background,";\n}\n.statediagram-cluster.statediagram-cluster-alt .inner {\n fill: ").concat(t.altBackground?t.altBackground:"#efefef",";\n}\n\n.statediagram-cluster .inner {\n rx:0;\n ry:0;\n}\n\n.statediagram-state rect.basic {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-state rect.divider {\n stroke-dasharray: 10,10;\n fill: ").concat(t.altBackground?t.altBackground:"#efefef",";\n}\n\n.note-edge {\n stroke-dasharray: 5;\n}\n\n.statediagram-note rect {\n fill: ").concat(t.noteBkgColor,";\n stroke: ").concat(t.noteBorderColor,";\n stroke-width: 1px;\n rx: 0;\n ry: 0;\n}\n.statediagram-note rect {\n fill: ").concat(t.noteBkgColor,";\n stroke: ").concat(t.noteBorderColor,";\n stroke-width: 1px;\n rx: 0;\n ry: 0;\n}\n\n.statediagram-note text {\n fill: ").concat(t.noteTextColor,";\n}\n\n.statediagram-note .nodeLabel {\n color: ").concat(t.noteTextColor,";\n}\n.statediagram .edgeLabel {\n color: red; // ").concat(t.noteTextColor,";\n}\n\n#dependencyStart, #dependencyEnd {\n fill: ").concat(t.lineColor,";\n stroke: ").concat(t.lineColor,";\n stroke-width: 1;\n}\n")};var IE={flowchart:LE,"flowchart-v2":LE,sequence:function(t){return".actor {\n stroke: ".concat(t.actorBorder,";\n fill: ").concat(t.actorBkg,";\n }\n\n text.actor > tspan {\n fill: ").concat(t.actorTextColor,";\n stroke: none;\n }\n\n .actor-line {\n stroke: ").concat(t.actorLineColor,";\n }\n\n .messageLine0 {\n stroke-width: 1.5;\n stroke-dasharray: none;\n stroke: ").concat(t.signalColor,";\n }\n\n .messageLine1 {\n stroke-width: 1.5;\n stroke-dasharray: 2, 2;\n stroke: ").concat(t.signalColor,";\n }\n\n #arrowhead path {\n fill: ").concat(t.signalColor,";\n stroke: ").concat(t.signalColor,";\n }\n\n .sequenceNumber {\n fill: ").concat(t.sequenceNumberColor,";\n }\n\n #sequencenumber {\n fill: ").concat(t.signalColor,";\n }\n\n #crosshead path {\n fill: ").concat(t.signalColor,";\n stroke: ").concat(t.signalColor,";\n }\n\n .messageText {\n fill: ").concat(t.signalTextColor,";\n stroke: ").concat(t.signalTextColor,";\n }\n\n .labelBox {\n stroke: ").concat(t.labelBoxBorderColor,";\n fill: ").concat(t.labelBoxBkgColor,";\n }\n\n .labelText, .labelText > tspan {\n fill: ").concat(t.labelTextColor,";\n stroke: none;\n }\n\n .loopText, .loopText > tspan {\n fill: ").concat(t.loopTextColor,";\n stroke: none;\n }\n\n .loopLine {\n stroke-width: 2px;\n stroke-dasharray: 2, 2;\n stroke: ").concat(t.labelBoxBorderColor,";\n fill: ").concat(t.labelBoxBorderColor,";\n }\n\n .note {\n //stroke: #decc93;\n stroke: ").concat(t.noteBorderColor,";\n fill: ").concat(t.noteBkgColor,";\n }\n\n .noteText, .noteText > tspan {\n fill: ").concat(t.noteTextColor,";\n stroke: none;\n }\n\n .activation0 {\n fill: ").concat(t.activationBkgColor,";\n stroke: ").concat(t.activationBorderColor,";\n }\n\n .activation1 {\n fill: ").concat(t.activationBkgColor,";\n stroke: ").concat(t.activationBorderColor,";\n }\n\n .activation2 {\n fill: ").concat(t.activationBkgColor,";\n stroke: ").concat(t.activationBorderColor,";\n }\n\n .actorPopupMenu {\n position: absolute;\n }\n\n .actorPopupMenuPanel {\n position: absolute;\n fill: ").concat(t.actorBkg,";\n box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);\n filter: drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));\n}\n .actor-man line {\n stroke: ").concat(t.actorBorder,";\n fill: ").concat(t.actorBkg,";\n }\n .actor-man circle, line {\n stroke: ").concat(t.actorBorder,";\n fill: ").concat(t.actorBkg,";\n stroke-width: 2px;\n }\n")},gantt:function(t){return'\n .mermaid-main-font {\n font-family: "trebuchet ms", verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n .exclude-range {\n fill: '.concat(t.excludeBkgColor,";\n }\n\n .section {\n stroke: none;\n opacity: 0.2;\n }\n\n .section0 {\n fill: ").concat(t.sectionBkgColor,";\n }\n\n .section2 {\n fill: ").concat(t.sectionBkgColor2,";\n }\n\n .section1,\n .section3 {\n fill: ").concat(t.altSectionBkgColor,";\n opacity: 0.2;\n }\n\n .sectionTitle0 {\n fill: ").concat(t.titleColor,";\n }\n\n .sectionTitle1 {\n fill: ").concat(t.titleColor,";\n }\n\n .sectionTitle2 {\n fill: ").concat(t.titleColor,";\n }\n\n .sectionTitle3 {\n fill: ").concat(t.titleColor,";\n }\n\n .sectionTitle {\n text-anchor: start;\n // font-size: ").concat(t.ganttFontSize,";\n // text-height: 14px;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n\n }\n\n\n /* Grid and axis */\n\n .grid .tick {\n stroke: ").concat(t.gridColor,";\n opacity: 0.8;\n shape-rendering: crispEdges;\n text {\n font-family: ").concat(t.fontFamily,";\n fill: ").concat(t.textColor,";\n }\n }\n\n .grid path {\n stroke-width: 0;\n }\n\n\n /* Today line */\n\n .today {\n fill: none;\n stroke: ").concat(t.todayLineColor,";\n stroke-width: 2px;\n }\n\n\n /* Task styling */\n\n /* Default task */\n\n .task {\n stroke-width: 2;\n }\n\n .taskText {\n text-anchor: middle;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n\n // .taskText:not([font-size]) {\n // font-size: ").concat(t.ganttFontSize,";\n // }\n\n .taskTextOutsideRight {\n fill: ").concat(t.taskTextDarkColor,";\n text-anchor: start;\n // font-size: ").concat(t.ganttFontSize,";\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n\n }\n\n .taskTextOutsideLeft {\n fill: ").concat(t.taskTextDarkColor,";\n text-anchor: end;\n // font-size: ").concat(t.ganttFontSize,";\n }\n\n /* Special case clickable */\n .task.clickable {\n cursor: pointer;\n }\n .taskText.clickable {\n cursor: pointer;\n fill: ").concat(t.taskTextClickableColor," !important;\n font-weight: bold;\n }\n\n .taskTextOutsideLeft.clickable {\n cursor: pointer;\n fill: ").concat(t.taskTextClickableColor," !important;\n font-weight: bold;\n }\n\n .taskTextOutsideRight.clickable {\n cursor: pointer;\n fill: ").concat(t.taskTextClickableColor," !important;\n font-weight: bold;\n }\n\n /* Specific task settings for the sections*/\n\n .taskText0,\n .taskText1,\n .taskText2,\n .taskText3 {\n fill: ").concat(t.taskTextColor,";\n }\n\n .task0,\n .task1,\n .task2,\n .task3 {\n fill: ").concat(t.taskBkgColor,";\n stroke: ").concat(t.taskBorderColor,";\n }\n\n .taskTextOutside0,\n .taskTextOutside2\n {\n fill: ").concat(t.taskTextOutsideColor,";\n }\n\n .taskTextOutside1,\n .taskTextOutside3 {\n fill: ").concat(t.taskTextOutsideColor,";\n }\n\n\n /* Active task */\n\n .active0,\n .active1,\n .active2,\n .active3 {\n fill: ").concat(t.activeTaskBkgColor,";\n stroke: ").concat(t.activeTaskBorderColor,";\n }\n\n .activeText0,\n .activeText1,\n .activeText2,\n .activeText3 {\n fill: ").concat(t.taskTextDarkColor," !important;\n }\n\n\n /* Completed task */\n\n .done0,\n .done1,\n .done2,\n .done3 {\n stroke: ").concat(t.doneTaskBorderColor,";\n fill: ").concat(t.doneTaskBkgColor,";\n stroke-width: 2;\n }\n\n .doneText0,\n .doneText1,\n .doneText2,\n .doneText3 {\n fill: ").concat(t.taskTextDarkColor," !important;\n }\n\n\n /* Tasks on the critical line */\n\n .crit0,\n .crit1,\n .crit2,\n .crit3 {\n stroke: ").concat(t.critBorderColor,";\n fill: ").concat(t.critBkgColor,";\n stroke-width: 2;\n }\n\n .activeCrit0,\n .activeCrit1,\n .activeCrit2,\n .activeCrit3 {\n stroke: ").concat(t.critBorderColor,";\n fill: ").concat(t.activeTaskBkgColor,";\n stroke-width: 2;\n }\n\n .doneCrit0,\n .doneCrit1,\n .doneCrit2,\n .doneCrit3 {\n stroke: ").concat(t.critBorderColor,";\n fill: ").concat(t.doneTaskBkgColor,";\n stroke-width: 2;\n cursor: pointer;\n shape-rendering: crispEdges;\n }\n\n .milestone {\n transform: rotate(45deg) scale(0.8,0.8);\n }\n\n .milestoneText {\n font-style: italic;\n }\n .doneCritText0,\n .doneCritText1,\n .doneCritText2,\n .doneCritText3 {\n fill: ").concat(t.taskTextDarkColor," !important;\n }\n\n .activeCritText0,\n .activeCritText1,\n .activeCritText2,\n .activeCritText3 {\n fill: ").concat(t.taskTextDarkColor," !important;\n }\n\n .titleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ").concat(t.textColor," ;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n")},classDiagram:BE,"classDiagram-v2":BE,class:BE,stateDiagram:OE,state:OE,gitGraph:function(t){return"\n .commit-id,\n .commit-msg,\n .branch-label {\n fill: lightgrey;\n color: lightgrey;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n ".concat([0,1,2,3,4,5,6,7].map((function(e){return"\n .branch-label".concat(e," { fill: ").concat(t["gitBranchLabel"+e],"; }\n .commit").concat(e," { stroke: ").concat(t["git"+e],"; fill: ").concat(t["git"+e],"; }\n .commit-highlight").concat(e," { stroke: ").concat(t["gitInv"+e],"; fill: ").concat(t["gitInv"+e],"; }\n .label").concat(e," { fill: ").concat(t["git"+e],"; }\n .arrow").concat(e," { stroke: ").concat(t["git"+e],"; }\n ")})).join("\n"),"\n\n .branch {\n stroke-width: 1;\n stroke: ").concat(t.lineColor,";\n stroke-dasharray: 2;\n }\n .commit-label { font-size: 10px; fill: ").concat(t.commitLabelColor,";}\n .commit-label-bkg { font-size: 10px; fill: ").concat(t.commitLabelBackground,"; opacity: 0.5; }\n .tag-label { font-size: 10px; fill: ").concat(t.tagLabelColor,";}\n .tag-label-bkg { fill: ").concat(t.tagLabelBackground,"; stroke: ").concat(t.tagLabelBorder,"; }\n .tag-hole { fill: ").concat(t.textColor,"; }\n\n .commit-merge {\n stroke: ").concat(t.primaryColor,";\n fill: ").concat(t.primaryColor,";\n }\n .commit-reverse {\n stroke: ").concat(t.primaryColor,";\n fill: ").concat(t.primaryColor,";\n stroke-width: 3;\n }\n .commit-highlight-outer {\n }\n .commit-highlight-inner {\n stroke: ").concat(t.primaryColor,";\n fill: ").concat(t.primaryColor,";\n }\n\n .arrow { stroke-width: 8; stroke-linecap: round; fill: none}\n }\n")},info:function(){return""},pie:function(t){return"\n .pieCircle{\n stroke: ".concat(t.pieStrokeColor,";\n stroke-width : ").concat(t.pieStrokeWidth,";\n opacity : ").concat(t.pieOpacity,";\n }\n .pieTitleText {\n text-anchor: middle;\n font-size: ").concat(t.pieTitleTextSize,";\n fill: ").concat(t.pieTitleTextColor,";\n font-family: ").concat(t.fontFamily,";\n }\n .slice {\n font-family: ").concat(t.fontFamily,";\n fill: ").concat(t.pieSectionTextColor,";\n font-size:").concat(t.pieSectionTextSize,";\n // fill: white;\n }\n .legend text {\n fill: ").concat(t.pieLegendTextColor,";\n font-family: ").concat(t.fontFamily,";\n font-size: ").concat(t.pieLegendTextSize,";\n }\n")},er:function(t){return"\n .entityBox {\n fill: ".concat(t.mainBkg,";\n stroke: ").concat(t.nodeBorder,";\n }\n\n .attributeBoxOdd {\n fill: #ffffff;\n stroke: ").concat(t.nodeBorder,";\n }\n\n .attributeBoxEven {\n fill: #f2f2f2;\n stroke: ").concat(t.nodeBorder,";\n }\n\n .relationshipLabelBox {\n fill: ").concat(t.tertiaryColor,";\n opacity: 0.7;\n background-color: ").concat(t.tertiaryColor,";\n rect {\n opacity: 0.5;\n }\n }\n\n .relationshipLine {\n stroke: ").concat(t.lineColor,";\n }\n")},journey:function(t){return".label {\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n color: ".concat(t.textColor,";\n }\n .mouth {\n stroke: #666;\n }\n\n line {\n stroke: ").concat(t.textColor,"\n }\n\n .legend {\n fill: ").concat(t.textColor,";\n }\n\n .label text {\n fill: #333;\n }\n .label {\n color: ").concat(t.textColor,"\n }\n\n .face {\n ").concat(t.faceColor?"fill: ".concat(t.faceColor):"fill: #FFF8DC",";\n stroke: #999;\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ").concat(t.mainBkg,";\n stroke: ").concat(t.nodeBorder,";\n stroke-width: 1px;\n }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ").concat(t.arrowheadColor,";\n }\n\n .edgePath .path {\n stroke: ").concat(t.lineColor,";\n stroke-width: 1.5px;\n }\n\n .flowchart-link {\n stroke: ").concat(t.lineColor,";\n fill: none;\n }\n\n .edgeLabel {\n background-color: ").concat(t.edgeLabelBackground,";\n rect {\n opacity: 0.5;\n }\n text-align: center;\n }\n\n .cluster rect {\n }\n\n .cluster text {\n fill: ").concat(t.titleColor,";\n }\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n font-size: 12px;\n background: ").concat(t.tertiaryColor,";\n border: 1px solid ").concat(t.border2,";\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .task-type-0, .section-type-0 {\n ").concat(t.fillType0?"fill: ".concat(t.fillType0):"",";\n }\n .task-type-1, .section-type-1 {\n ").concat(t.fillType0?"fill: ".concat(t.fillType1):"",";\n }\n .task-type-2, .section-type-2 {\n ").concat(t.fillType0?"fill: ".concat(t.fillType2):"",";\n }\n .task-type-3, .section-type-3 {\n ").concat(t.fillType0?"fill: ".concat(t.fillType3):"",";\n }\n .task-type-4, .section-type-4 {\n ").concat(t.fillType0?"fill: ".concat(t.fillType4):"",";\n }\n .task-type-5, .section-type-5 {\n ").concat(t.fillType0?"fill: ".concat(t.fillType5):"",";\n }\n .task-type-6, .section-type-6 {\n ").concat(t.fillType0?"fill: ".concat(t.fillType6):"",";\n }\n .task-type-7, .section-type-7 {\n ").concat(t.fillType0?"fill: ".concat(t.fillType7):"",";\n }\n\n .actor-0 {\n ").concat(t.actor0?"fill: ".concat(t.actor0):"",";\n }\n .actor-1 {\n ").concat(t.actor1?"fill: ".concat(t.actor1):"",";\n }\n .actor-2 {\n ").concat(t.actor2?"fill: ".concat(t.actor2):"",";\n }\n .actor-3 {\n ").concat(t.actor3?"fill: ".concat(t.actor3):"",";\n }\n .actor-4 {\n ").concat(t.actor4?"fill: ".concat(t.actor4):"",";\n }\n .actor-5 {\n ").concat(t.actor5?"fill: ".concat(t.actor5):"",";\n }\n\n }\n")},requirement:function(t){return"\n\n marker {\n fill: ".concat(t.relationColor,";\n stroke: ").concat(t.relationColor,";\n }\n\n marker.cross {\n stroke: ").concat(t.lineColor,";\n }\n\n svg {\n font-family: ").concat(t.fontFamily,";\n font-size: ").concat(t.fontSize,";\n }\n\n .reqBox {\n fill: ").concat(t.requirementBackground,";\n fill-opacity: 100%;\n stroke: ").concat(t.requirementBorderColor,";\n stroke-width: ").concat(t.requirementBorderSize,";\n }\n \n .reqTitle, .reqLabel{\n fill: ").concat(t.requirementTextColor,";\n }\n .reqLabelBox {\n fill: ").concat(t.relationLabelBackground,";\n fill-opacity: 100%;\n }\n\n .req-title-line {\n stroke: ").concat(t.requirementBorderColor,";\n stroke-width: ").concat(t.requirementBorderSize,";\n }\n .relationshipLine {\n stroke: ").concat(t.relationColor,";\n stroke-width: 1;\n }\n .relationshipLabel {\n fill: ").concat(t.relationLabelColor,";\n }\n\n")}};function RE(t){return RE="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},RE(t)}var FE=function(t){var e=t;return(e=(e=e.replace(/fl°°/g,(function(){return"&#"}))).replace(/fl°/g,(function(){return"&"}))).replace(/¶ß/g,(function(){return";"}))},PE={};function YE(t){var e;gw(t.flowchart),vw(t.flowchart),void 0!==t.sequenceDiagram&&TC.setConf(rb(t.sequence,t.sequenceDiagram)),TC.setConf(t.sequence),t.gantt,y_(t.class),t.state,iE(t.state),Yk(t.class),bx(t.er),ME(t.journey),hT(t.requirement),e=t.class,Object.keys(e).forEach((function(t){DE[t]=e[t]}))}var jE=Object.freeze({render:function(t,e,n,r){Cb();var i=e.replace(/\r\n?/g,"\n"),a=db.detectInit(i);a&&(hb(a),Tb(a));var s=wb();o.debug(s),e.length>s.maxTextSize&&(i="graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa");var c=au("body");if(void 0!==r){if("sandbox"===s.securityLevel){var u=au("body").append("iframe").attr("id","i"+t).attr("style","width: 100%; height: 100%;").attr("sandbox","");(c=au(u.nodes()[0].contentDocument.body)).node().style.margin=0}if(r.innerHTML="","sandbox"===s.securityLevel){var l=au(r).append("iframe").attr("id","i"+t).attr("style","width: 100%; height: 100%;").attr("sandbox","");(c=au(l.nodes()[0].contentDocument.body)).node().style.margin=0}else c=au(r);c.append("div").attr("id","d"+t).attr("style","font-family: "+s.fontFamily).append("svg").attr("id",t).attr("width","100%").attr("xmlns","http://www.w3.org/2000/svg").append("g")}else{var h,f=document.getElementById(t);if(f&&f.remove(),(h="sandbox"!==s.securityLevel?document.querySelector("#d"+t):document.querySelector("#i"+t))&&h.remove(),"sandbox"===s.securityLevel){var d=au("body").append("iframe").attr("id","i"+t).attr("style","width: 100%; height: 100%;").attr("sandbox","");(c=au(d.nodes()[0].contentDocument.body)).node().style.margin=0}else c=au("body");c.append("div").attr("id","d"+t).append("svg").attr("id",t).attr("width","100%").attr("xmlns","http://www.w3.org/2000/svg").append("g")}i=i.replace(/style.*:\S*#.*;/g,(function(t){return t.substring(0,t.length-1)})).replace(/classDef.*:\S*#.*;/g,(function(t){return t.substring(0,t.length-1)})).replace(/#\w+;/g,(function(t){var e=t.substring(1,t.length-1);return/^\+?\d+$/.test(e)?"fl°°"+e+"¶ß":"fl°"+e+"¶ß"}));var p=c.select("#d"+t).node(),g=db.detectType(i,s),y=p.firstChild,m=y.firstChild,v="";if(void 0!==s.themeCSS&&(v+="\n".concat(s.themeCSS)),void 0!==s.fontFamily&&(v+="\n:root { --mermaid-font-family: ".concat(s.fontFamily,"}")),void 0!==s.altFontFamily&&(v+="\n:root { --mermaid-alt-font-family: ".concat(s.altFontFamily,"}")),"flowchart"===g||"flowchart-v2"===g||"graph"===g){var b=function(t){o.info("Extracting classes"),Gx.clear();try{var e=Zx().parser;return e.yy=Gx,e.parse(t),Gx.getClasses()}catch(t){return}}(i),_=s.htmlLabels||s.flowchart.htmlLabels;for(var x in b)_?(v+="\n.".concat(x," > * { ").concat(b[x].styles.join(" !important; ")," !important; }"),v+="\n.".concat(x," span { ").concat(b[x].styles.join(" !important; ")," !important; }")):(v+="\n.".concat(x," path { ").concat(b[x].styles.join(" !important; ")," !important; }"),v+="\n.".concat(x," rect { ").concat(b[x].styles.join(" !important; ")," !important; }"),v+="\n.".concat(x," polygon { ").concat(b[x].styles.join(" !important; ")," !important; }"),v+="\n.".concat(x," ellipse { ").concat(b[x].styles.join(" !important; ")," !important; }"),v+="\n.".concat(x," circle { ").concat(b[x].styles.join(" !important; ")," !important; }"),b[x].textStyles&&(v+="\n.".concat(x," tspan { ").concat(b[x].textStyles.join(" !important; ")," !important; }")))}var w=function(t,e){return am(Em("".concat(t,"{").concat(e,"}")),om)}("#".concat(t),function(t,e,n){return" {\n font-family: ".concat(n.fontFamily,";\n font-size: ").concat(n.fontSize,";\n fill: ").concat(n.textColor,"\n }\n\n /* Classes common for multiple diagrams */\n\n .error-icon {\n fill: ").concat(n.errorBkgColor,";\n }\n .error-text {\n fill: ").concat(n.errorTextColor,";\n stroke: ").concat(n.errorTextColor,";\n }\n\n .edge-thickness-normal {\n stroke-width: 2px;\n }\n .edge-thickness-thick {\n stroke-width: 3.5px\n }\n .edge-pattern-solid {\n stroke-dasharray: 0;\n }\n\n .edge-pattern-dashed{\n stroke-dasharray: 3;\n }\n .edge-pattern-dotted {\n stroke-dasharray: 2;\n }\n\n .marker {\n fill: ").concat(n.lineColor,";\n stroke: ").concat(n.lineColor,";\n }\n .marker.cross {\n stroke: ").concat(n.lineColor,";\n }\n\n svg {\n font-family: ").concat(n.fontFamily,";\n font-size: ").concat(n.fontSize,";\n }\n\n ").concat(IE[t](n),"\n\n ").concat(e,"\n")}(g,v,s.themeVariables)),k=document.createElement("style");k.innerHTML="#".concat(t," ")+w,y.insertBefore(k,m);try{switch(g){case"gitGraph":Bk(i,t,!1);break;case"flowchart":s.flowchart.arrowMarkerAbsolute=s.arrowMarkerAbsolute,gw(s.flowchart),yw(i,t);break;case"flowchart-v2":s.flowchart.arrowMarkerAbsolute=s.arrowMarkerAbsolute,vw(s.flowchart),bw(i,t);break;case"sequence":s.sequence.arrowMarkerAbsolute=s.arrowMarkerAbsolute,s.sequenceDiagram?(TC.setConf(Object.assign(s.sequence,s.sequenceDiagram)),console.error("`mermaid config.sequenceDiagram` has been renamed to `config.sequence`. Please update your mermaid config.")):TC.setConf(s.sequence),TC.draw(i,t);break;case"gantt":s.gantt.arrowMarkerAbsolute=s.arrowMarkerAbsolute,s.gantt,nk(i,t);break;case"class":s.class.arrowMarkerAbsolute=s.arrowMarkerAbsolute,y_(s.class),m_(i,t);break;case"classDiagram":s.class.arrowMarkerAbsolute=s.arrowMarkerAbsolute,function(t){Object.keys(t).forEach((function(e){ox[e]=t[e]}))}(s.class),function(t,e){o.info("Drawing class - ",e),Zb.clear(),e_.parser.parse(t);var n=wb().flowchart,r=wb().securityLevel;o.info("config:",n);var i,a=n.nodeSpacing||50,s=n.rankSpacing||50,c=new(t_().Graph)({multigraph:!0,compound:!0}).setGraph({rankdir:Zb.getDirection(),nodesep:a,ranksep:s,marginx:8,marginy:8}).setDefaultEdgeLabel((function(){return{}})),u=Zb.getClasses(),l=Zb.getRelations();o.info(l),function(t,e){var n=Object.keys(t);o.info("keys:",n),o.info(t),n.forEach((function(n){var r=t[n],i="";r.cssClasses.length>0&&(i=i+" "+r.cssClasses.join(" "));var a,s,c={labelStyle:""},u=void 0!==r.text?r.text:r.id;r.type,s="class_box",e.setNode(r.id,{labelStyle:c.labelStyle,shape:s,labelText:(a=u,$m.sanitizeText(a,wb())),classData:r,rx:0,ry:0,class:i,style:c.style,id:r.id,domId:r.domId,haveCallback:r.haveCallback,link:r.link,width:"group"===r.type?500:void 0,type:r.type,padding:wb().flowchart.padding}),o.info("setNode",{labelStyle:c.labelStyle,shape:s,labelText:u,rx:0,ry:0,class:i,style:c.style,id:r.id,width:"group"===r.type?500:void 0,type:r.type,padding:wb().flowchart.padding})}))}(u,c),function(t,e){var n=0;t.forEach((function(r){n++;var i={classes:"relation"};i.pattern=1==r.relation.lineType?"dashed":"solid",i.id="id"+n,"arrow_open"===r.type?i.arrowhead="none":i.arrowhead="normal",o.info(i,r),i.startLabelRight="none"===r.relationTitle1?"":r.relationTitle1,i.endLabelLeft="none"===r.relationTitle2?"":r.relationTitle2,i.arrowTypeStart=sx(r.relation.type1),i.arrowTypeEnd=sx(r.relation.type2);var a="",s="";if(void 0!==r.style){var c=Jv(r.style);a=c.style,s=c.labelStyle}else a="fill:none";i.style=a,i.labelStyle=s,void 0!==r.interpolate?i.curve=Qv(r.interpolate,Pu):void 0!==t.defaultInterpolate?i.curve=Qv(t.defaultInterpolate,Pu):i.curve=Qv(ox.curve,Pu),r.text=r.title,void 0===r.text?void 0!==r.style&&(i.arrowheadStyle="fill: #333"):(i.arrowheadStyle="fill: #333",i.labelpos="c",wb().flowchart.htmlLabels?(i.labelType="html",i.label='<span class="edgeLabel">'+r.text+"</span>"):(i.labelType="text",i.label=r.text.replace($m.lineBreakRegex,"\n"),void 0===r.style&&(i.style=i.style||"stroke: #333; stroke-width: 1.5px;fill:none"),i.labelStyle=i.labelStyle.replace("color:","fill:"))),e.setEdge(r.id1,r.id2,i,n)}))}(l,c),"sandbox"===r&&(i=au("#i"+e));var h=au("sandbox"===r?i.nodes()[0].contentDocument.body:"body"),f=h.select('[id="'.concat(e,'"]'));f.attr("xmlns:xlink","http://www.w3.org/1999/xlink");var d=h.select("#"+e+" g");ax(d,c,["aggregation","extension","composition","dependency"],"classDiagram",e);var p=f.node().getBBox(),g=p.width+16,y=p.height+16;if(o.debug("new ViewBox 0 0 ".concat(g," ").concat(y),"translate(".concat(8-c._label.marginx,", ").concat(8-c._label.marginy,")")),lb(f,y,g,n.useMaxWidth),f.attr("viewBox","0 0 ".concat(g," ").concat(y)),f.select("g").attr("transform","translate(".concat(8-c._label.marginx,", ").concat(8-p.y,")")),!n.htmlLabels)for(var m="sandbox"===r?i.nodes()[0].contentDocument:document,v=m.querySelectorAll('[id="'+e+'"] .edgeLabel .label'),b=0;b<v.length;b++){var _=v[b],x=_.getBBox(),w=m.createElementNS("http://www.w3.org/2000/svg","rect");w.setAttribute("rx",0),w.setAttribute("ry",0),w.setAttribute("width",x.width),w.setAttribute("height",x.height),_.insertBefore(w,_.firstChild)}f_(e_.parser.yy,f,e)}(i,t);break;case"state":s.class.arrowMarkerAbsolute=s.arrowMarkerAbsolute,s.state,QC(i,t);break;case"stateDiagram":s.class.arrowMarkerAbsolute=s.arrowMarkerAbsolute,iE(s.state),function(t,e){o.info("Drawing state diagram (v2)",e),UC.clear(),JC={};var n=EC().parser;n.yy=UC,n.parse(t);var r=UC.getDirection();void 0===r&&(r="LR");var i=wb().state,a=i.nodeSpacing||50,s=i.rankSpacing||50,c=wb().securityLevel;o.info(UC.getRootDocV2()),UC.extract(UC.getRootDocV2()),o.info(UC.getRootDocV2());var u,l=new(t_().Graph)({multigraph:!0,compound:!0}).setGraph({rankdir:rE(UC.getRootDocV2()),nodesep:a,ranksep:s,marginx:8,marginy:8}).setDefaultEdgeLabel((function(){return{}}));tE(l,void 0,UC.getRootDocV2(),!0),"sandbox"===c&&(u=au("#i"+e));var h=au("sandbox"===c?u.nodes()[0].contentDocument.body:"body"),f=("sandbox"===c?u.nodes()[0].contentDocument:document,h.select('[id="'.concat(e,'"]'))),d=h.select("#"+e+" g");ax(d,l,["barb"],"statediagram",e);var p=f.node().getBBox(),g=p.width+16,y=p.height+16;f.attr("class","statediagram");var m=f.node().getBBox();lb(f,y,1.75*g,i.useMaxWidth);var v="".concat(m.x-8," ").concat(m.y-8," ").concat(g," ").concat(y);o.debug("viewBox ".concat(v)),f.attr("viewBox",v);for(var b=document.querySelectorAll('[id="'+e+'"] .edgeLabel .label'),_=0;_<b.length;_++){var x=b[_],w=x.getBBox(),k=document.createElementNS("http://www.w3.org/2000/svg","rect");k.setAttribute("rx",0),k.setAttribute("ry",0),k.setAttribute("width",w.width),k.setAttribute("height",w.height),x.insertBefore(k,x.firstChild)}f_(n.yy,f,e)}(i,t);break;case"info":s.class.arrowMarkerAbsolute=s.arrowMarkerAbsolute,Yk(s.class),function(t,e,n){try{var r=Fk().parser;r.yy=Ik,o.debug("Renering info diagram\n"+t);var i,a=wb().securityLevel;"sandbox"===a&&(i=au("#i"+e));var s=au("sandbox"===a?i.nodes()[0].contentDocument.body:"body");"sandbox"===a?i.nodes()[0].contentDocument:document,r.parse(t),o.debug("Parsed info diagram");var c=s.select("#"+e);c.append("g").append("text").attr("x",100).attr("y",40).attr("class","version").attr("font-size","32px").style("text-anchor","middle").text("v "+n),c.attr("height",100),c.attr("width",400)}catch(t){o.error("Error while rendering info diagram"),o.error(t.message)}}(i,t,Dm);break;case"pie":Gk(i,t);break;case"er":bx(s.er),_x(i,t);break;case"journey":ME(s.journey),NE(i,t);break;case"requirement":hT(s.requirement),fT(i,t)}}catch(e){throw function(t,e){try{o.debug("Renering svg for syntax error\n");var n=au("#"+t),r=n.append("g");r.append("path").attr("class","error-icon").attr("d","m411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z"),r.append("path").attr("class","error-icon").attr("d","m459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z"),r.append("path").attr("class","error-icon").attr("d","m340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z"),r.append("path").attr("class","error-icon").attr("d","m400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z"),r.append("path").attr("class","error-icon").attr("d","m496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z"),r.append("path").attr("class","error-icon").attr("d","m436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z"),r.append("text").attr("class","error-text").attr("x",1240).attr("y",250).attr("font-size","150px").style("text-anchor","middle").text("Syntax error in graph"),r.append("text").attr("class","error-text").attr("x",1050).attr("y",400).attr("font-size","100px").style("text-anchor","middle").text("mermaid version "+e),n.attr("height",100),n.attr("width",400),n.attr("viewBox","768 0 512 512")}catch(t){o.error("Error while rendering info diagram"),o.error(t.message)}}(t,Dm),e}c.select('[id="'.concat(t,'"]')).selectAll("foreignobject > *").attr("xmlns","http://www.w3.org/1999/xhtml");var T=c.select("#d"+t).node().innerHTML;if(o.debug("cnf.arrowMarkerAbsolute",s.arrowMarkerAbsolute),s.arrowMarkerAbsolute&&"false"!==s.arrowMarkerAbsolute||"sandbox"===s.arrowMarkerAbsolute||(T=T.replace(/marker-end="url\(.*?#/g,'marker-end="url(#',"g")),T=(T=FE(T)).replace(/<br>/g,"<br/>"),"sandbox"===s.securityLevel){var C=c.select("#d"+t+" svg").node(),E="100%";C&&(E=C.viewBox.baseVal.height+"px"),T='<iframe style="width:'.concat("100%",";height:").concat(E,';border:0;margin:0;" src="data:text/html;base64,').concat(btoa('<body style="margin:0">'+T+"</body>"),'" sandbox="allow-top-navigation-by-user-activation allow-popups">\n The “iframe” tag is not supported by your browser.\n</iframe>')}else"loose"!==s.securityLevel&&(T=Om().sanitize(T,{ADD_TAGS:["foreignobject"],ADD_ATTR:["dominant-baseline"]}));if(void 0!==n)switch(g){case"flowchart":case"flowchart-v2":n(T,Gx.bindFunctions);break;case"gantt":n(T,Qw.bindFunctions);break;case"class":case"classDiagram":n(T,Zb.bindFunctions);break;default:n(T)}else o.debug("CB = undefined!");IT.forEach((function(t){t()})),IT=[];var S="sandbox"===s.securityLevel?"#i"+t:"#d"+t,A=au(S).node();return null!==A&&"function"==typeof A.remove&&au(S).node().remove(),T},parse:function(t){t+="\n";var e=wb(),n=db.detectInit(t,e);n&&o.info("reinit ",n);var r,i=db.detectType(t,e);switch(o.debug("Type "+i),i){case"gitGraph":wk.clear(),(r=Tk()).parser.yy=wk;break;case"flowchart":case"flowchart-v2":Gx.clear(),(r=Zx()).parser.yy=Gx;break;case"sequence":OT.clear(),(r=pT()).parser.yy=OT;break;case"gantt":(r=ek()).parser.yy=Qw;break;case"class":case"classDiagram":(r=n_()).parser.yy=Zb;break;case"state":case"stateDiagram":(r=EC()).parser.yy=UC;break;case"info":o.debug("info info info"),(r=Fk()).parser.yy=Ik;break;case"pie":o.debug("pie"),(r=Uk()).parser.yy=Hk;break;case"er":o.debug("er"),(r=dx()).parser.yy=hx;break;case"journey":o.debug("Journey"),(r=pE()).parser.yy=fE;break;case"requirement":case"requirementDiagram":o.debug("RequirementDiagram"),(r=Zk()).parser.yy=nT}return r.parser.yy.graphType=i,r.parser.yy.parseError=function(t,e){throw{str:t,hash:e}},r.parse(t),r},parseDirective:function(t,e,n,r){try{if(void 0!==e)switch(e=e.trim(),n){case"open_directive":PE={};break;case"type_directive":PE.type=e.toLowerCase();break;case"arg_directive":PE.args=JSON.parse(e);break;case"close_directive":(function(t,e,n){switch(o.debug("Directive type=".concat(e.type," with args:"),e.args),e.type){case"init":case"initialize":["config"].forEach((function(t){void 0!==e.args[t]&&("flowchart-v2"===n&&(n="flowchart"),e.args[n]=e.args[t],delete e.args[t])})),o.debug("sanitize in handleDirective",e.args),hb(e.args),o.debug("sanitize in handleDirective (done)",e.args),e.args,Tb(e.args);break;case"wrap":case"nowrap":t&&t.setWrap&&t.setWrap("wrap"===e.type);break;case"themeCss":o.warn("themeCss encountered");break;default:o.warn("Unhandled directive: source: '%%{".concat(e.type,": ").concat(JSON.stringify(e.args?e.args:{}),"}%%"),e)}})(t,PE,r),PE=null}}catch(t){o.error("Error while rendering sequenceDiagram directive: ".concat(e," jison context: ").concat(n)),o.error(t.message)}},initialize:function(t){t&&t.fontFamily&&(t.themeVariables&&t.themeVariables.fontFamily||(t.themeVariables={fontFamily:t.fontFamily})),function(t){gb=rb({},t)}(t),t&&t.theme&&Mv[t.theme]?t.themeVariables=Mv[t.theme].getThemeVariables(t.themeVariables):t&&(t.themeVariables=Mv.default.getThemeVariables(t.themeVariables));var e="object"===RE(t)?function(t){return mb=rb({},yb),mb=rb(mb,t),t.theme&&Mv[t.theme]&&(mb.themeVariables=Mv[t.theme].getThemeVariables(t.themeVariables)),bb=_b(mb,vb),mb}(t):xb();YE(e),s(e.logLevel)},reinitialize:function(){},getConfig:wb,setConfig:function(t){return rb(bb,t),wb()},getSiteConfig:xb,updateSiteConfig:function(t){return mb=rb(mb,t),_b(mb,vb),mb},reset:function(){Cb()},globalReset:function(){Cb(),YE(wb())},defaultConfig:yb});s(wb().logLevel),Cb(wb());const UE=jE;var zE=function(){$E.startOnLoad?UE.getConfig().startOnLoad&&$E.init():void 0===$E.startOnLoad&&(o.debug("In start, no config"),UE.getConfig().startOnLoad&&$E.init())};"undefined"!=typeof document&&window.addEventListener("load",(function(){zE()}),!1);var $E={startOnLoad:!0,htmlLabels:!0,mermaidAPI:UE,parse:UE.parse,render:UE.render,init:function(){try{!function(){var t,e,n=UE.getConfig();arguments.length>=2?(void 0!==arguments[0]&&($E.sequenceConfig=arguments[0]),t=arguments[1]):t=arguments[0],"function"==typeof arguments[arguments.length-1]?(e=arguments[arguments.length-1],o.debug("Callback function found")):void 0!==n.mermaid&&("function"==typeof n.mermaid.callback?(e=n.mermaid.callback,o.debug("Callback function found")):o.debug("No Callback function found")),t=void 0===t?document.querySelectorAll(".mermaid"):"string"==typeof t?document.querySelectorAll(t):t instanceof window.Node?[t]:t,o.debug("Start On Load before: "+$E.startOnLoad),void 0!==$E.startOnLoad&&(o.debug("Start On Load inner: "+$E.startOnLoad),UE.updateSiteConfig({startOnLoad:$E.startOnLoad})),void 0!==$E.ganttConfig&&UE.updateSiteConfig({gantt:$E.ganttConfig});for(var r,i=new db.initIdGeneratior(n.deterministicIds,n.deterministicIDSeed),a=function(n){var a=t[n];if(a.getAttribute("data-processed"))return"continue";a.setAttribute("data-processed",!0);var s="mermaid-".concat(i.next());r=a.innerHTML,r=db.entityDecode(r).trim().replace(/<br\s*\/?>/gi,"<br/>");var c=db.detectInit(r);c&&o.debug("Detected early reinit: ",c),UE.render(s,r,(function(t,n){a.innerHTML=t,void 0!==e&&e(s),n&&n(a)}),a)},s=0;s<t.length;s++)a(s)}()}catch(t){o.warn("Syntax Error rendering"),o.warn(t),this.parseError&&this.parseError(t)}},initialize:function(t){void 0!==t.mermaid&&(void 0!==t.mermaid.startOnLoad&&($E.startOnLoad=t.mermaid.startOnLoad),void 0!==t.mermaid.htmlLabels&&($E.htmlLabels="false"!==t.mermaid.htmlLabels&&!1!==t.mermaid.htmlLabels)),UE.initialize(t)},contentLoaded:zE};const qE=$E},4949:(t,e,n)=>{t.exports={graphlib:n(6614),dagre:n(1463),intersect:n(8114),render:n(5787),util:n(8355),version:n(5689)}},9144:(t,e,n)=>{var r=n(8355);function i(t,e,n,i){var a=t.append("marker").attr("id",e).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerUnits","strokeWidth").attr("markerWidth",8).attr("markerHeight",6).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").style("stroke-width",1).style("stroke-dasharray","1,0");r.applyStyle(a,n[i+"Style"]),n[i+"Class"]&&a.attr("class",n[i+"Class"])}t.exports={default:i,normal:i,vee:function(t,e,n,i){var a=t.append("marker").attr("id",e).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerUnits","strokeWidth").attr("markerWidth",8).attr("markerHeight",6).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 L 4 5 z").style("stroke-width",1).style("stroke-dasharray","1,0");r.applyStyle(a,n[i+"Style"]),n[i+"Class"]&&a.attr("class",n[i+"Class"])},undirected:function(t,e,n,i){var a=t.append("marker").attr("id",e).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerUnits","strokeWidth").attr("markerWidth",8).attr("markerHeight",6).attr("orient","auto").append("path").attr("d","M 0 5 L 10 5").style("stroke-width",1).style("stroke-dasharray","1,0");r.applyStyle(a,n[i+"Style"]),n[i+"Class"]&&a.attr("class",n[i+"Class"])}}},5632:(t,e,n)=>{var r=n(8355),i=n(4322),a=n(1322);t.exports=function(t,e){var n,o=e.nodes().filter((function(t){return r.isSubgraph(e,t)})),s=t.selectAll("g.cluster").data(o,(function(t){return t}));return s.selectAll("*").remove(),s.enter().append("g").attr("class","cluster").attr("id",(function(t){return e.node(t).id})).style("opacity",0),s=t.selectAll("g.cluster"),r.applyTransition(s,e).style("opacity",1),s.each((function(t){var n=e.node(t),r=i.select(this);i.select(this).append("rect");var o=r.append("g").attr("class","label");a(o,n,n.clusterLabelPos)})),s.selectAll("rect").each((function(t){var n=e.node(t),a=i.select(this);r.applyStyle(a,n.style)})),n=s.exit?s.exit():s.selectAll(null),r.applyTransition(n,e).style("opacity",0).remove(),s}},6315:(t,e,n)=>{"use strict";var r=n(1034),i=n(1322),a=n(8355),o=n(4322);t.exports=function(t,e){var n,s=t.selectAll("g.edgeLabel").data(e.edges(),(function(t){return a.edgeToId(t)})).classed("update",!0);return s.exit().remove(),s.enter().append("g").classed("edgeLabel",!0).style("opacity",0),(s=t.selectAll("g.edgeLabel")).each((function(t){var n=o.select(this);n.select(".label").remove();var a=e.edge(t),s=i(n,e.edge(t),0,0).classed("label",!0),c=s.node().getBBox();a.labelId&&s.attr("id",a.labelId),r.has(a,"width")||(a.width=c.width),r.has(a,"height")||(a.height=c.height)})),n=s.exit?s.exit():s.selectAll(null),a.applyTransition(n,e).style("opacity",0).remove(),s}},940:(t,e,n)=>{"use strict";var r=n(1034),i=n(3042),a=n(8355),o=n(4322);function s(t,e){var n=(o.line||o.svg.line)().x((function(t){return t.x})).y((function(t){return t.y}));return(n.curve||n.interpolate)(t.curve),n(e)}t.exports=function(t,e,n){var c=t.selectAll("g.edgePath").data(e.edges(),(function(t){return a.edgeToId(t)})).classed("update",!0),u=function(t,e){var n=t.enter().append("g").attr("class","edgePath").style("opacity",0);return n.append("path").attr("class","path").attr("d",(function(t){var n=e.edge(t),i=e.node(t.v).elem;return s(n,r.range(n.points.length).map((function(){return e=(t=i).getBBox(),{x:(n=t.ownerSVGElement.getScreenCTM().inverse().multiply(t.getScreenCTM()).translate(e.width/2,e.height/2)).e,y:n.f};var t,e,n})))})),n.append("defs"),n}(c,e);!function(t,e){var n=t.exit();a.applyTransition(n,e).style("opacity",0).remove()}(c,e);var l=void 0!==c.merge?c.merge(u):c;return a.applyTransition(l,e).style("opacity",1),l.each((function(t){var n=o.select(this),r=e.edge(t);r.elem=this,r.id&&n.attr("id",r.id),a.applyClass(n,r.class,(n.classed("update")?"update ":"")+"edgePath")})),l.selectAll("path.path").each((function(t){var n=e.edge(t);n.arrowheadId=r.uniqueId("arrowhead");var c=o.select(this).attr("marker-end",(function(){return"url("+(t=location.href,e=n.arrowheadId,t.split("#")[0]+"#"+e+")");var t,e})).style("fill","none");a.applyTransition(c,e).attr("d",(function(t){return function(t,e){var n=t.edge(e),r=t.node(e.v),a=t.node(e.w),o=n.points.slice(1,n.points.length-1);return o.unshift(i(r,o[0])),o.push(i(a,o[o.length-1])),s(n,o)}(e,t)})),a.applyStyle(c,n.style)})),l.selectAll("defs *").remove(),l.selectAll("defs").each((function(t){var r=e.edge(t);(0,n[r.arrowhead])(o.select(this),r.arrowheadId,r,"arrowhead")})),l}},607:(t,e,n)=>{"use strict";var r=n(1034),i=n(1322),a=n(8355),o=n(4322);t.exports=function(t,e,n){var s,c=e.nodes().filter((function(t){return!a.isSubgraph(e,t)})),u=t.selectAll("g.node").data(c,(function(t){return t})).classed("update",!0);return u.exit().remove(),u.enter().append("g").attr("class","node").style("opacity",0),(u=t.selectAll("g.node")).each((function(t){var s=e.node(t),c=o.select(this);a.applyClass(c,s.class,(c.classed("update")?"update ":"")+"node"),c.select("g.label").remove();var u=c.append("g").attr("class","label"),l=i(u,s),h=n[s.shape],f=r.pick(l.node().getBBox(),"width","height");s.elem=this,s.id&&c.attr("id",s.id),s.labelId&&u.attr("id",s.labelId),r.has(s,"width")&&(f.width=s.width),r.has(s,"height")&&(f.height=s.height),f.width+=s.paddingLeft+s.paddingRight,f.height+=s.paddingTop+s.paddingBottom,u.attr("transform","translate("+(s.paddingLeft-s.paddingRight)/2+","+(s.paddingTop-s.paddingBottom)/2+")");var d=o.select(this);d.select(".label-container").remove();var p=h(d,f,s).classed("label-container",!0);a.applyStyle(p,s.style);var g=p.node().getBBox();s.width=g.width,s.height=g.height})),s=u.exit?u.exit():u.selectAll(null),a.applyTransition(s,e).style("opacity",0).remove(),u}},4322:(t,e,n)=>{var r;if(!r)try{r=n(7188)}catch(t){}r||(r=window.d3),t.exports=r},1463:(t,e,n)=>{var r;try{r=n(681)}catch(t){}r||(r=window.dagre),t.exports=r},6614:(t,e,n)=>{var r;try{r=n(8282)}catch(t){}r||(r=window.graphlib),t.exports=r},8114:(t,e,n)=>{t.exports={node:n(3042),circle:n(6587),ellipse:n(3260),polygon:n(5337),rect:n(8049)}},6587:(t,e,n)=>{var r=n(3260);t.exports=function(t,e,n){return r(t,e,e,n)}},3260:t=>{t.exports=function(t,e,n,r){var i=t.x,a=t.y,o=i-r.x,s=a-r.y,c=Math.sqrt(e*e*s*s+n*n*o*o),u=Math.abs(e*n*o/c);r.x<i&&(u=-u);var l=Math.abs(e*n*s/c);return r.y<a&&(l=-l),{x:i+u,y:a+l}}},6808:t=>{function e(t,e){return t*e>0}t.exports=function(t,n,r,i){var a,o,s,c,u,l,h,f,d,p,g,y,m;if(!(a=n.y-t.y,s=t.x-n.x,u=n.x*t.y-t.x*n.y,d=a*r.x+s*r.y+u,p=a*i.x+s*i.y+u,0!==d&&0!==p&&e(d,p)||(o=i.y-r.y,c=r.x-i.x,l=i.x*r.y-r.x*i.y,h=o*t.x+c*t.y+l,f=o*n.x+c*n.y+l,0!==h&&0!==f&&e(h,f)||0==(g=a*c-o*s))))return y=Math.abs(g/2),{x:(m=s*l-c*u)<0?(m-y)/g:(m+y)/g,y:(m=o*u-a*l)<0?(m-y)/g:(m+y)/g}}},3042:t=>{t.exports=function(t,e){return t.intersect(e)}},5337:(t,e,n)=>{var r=n(6808);t.exports=function(t,e,n){var i=t.x,a=t.y,o=[],s=Number.POSITIVE_INFINITY,c=Number.POSITIVE_INFINITY;e.forEach((function(t){s=Math.min(s,t.x),c=Math.min(c,t.y)}));for(var u=i-t.width/2-s,l=a-t.height/2-c,h=0;h<e.length;h++){var f=e[h],d=e[h<e.length-1?h+1:0],p=r(t,n,{x:u+f.x,y:l+f.y},{x:u+d.x,y:l+d.y});p&&o.push(p)}return o.length?(o.length>1&&o.sort((function(t,e){var r=t.x-n.x,i=t.y-n.y,a=Math.sqrt(r*r+i*i),o=e.x-n.x,s=e.y-n.y,c=Math.sqrt(o*o+s*s);return a<c?-1:a===c?0:1})),o[0]):(console.log("NO INTERSECTION FOUND, RETURN NODE CENTER",t),t)}},8049:t=>{t.exports=function(t,e){var n,r,i=t.x,a=t.y,o=e.x-i,s=e.y-a,c=t.width/2,u=t.height/2;return Math.abs(s)*c>Math.abs(o)*u?(s<0&&(u=-u),n=0===s?0:u*o/s,r=u):(o<0&&(c=-c),n=c,r=0===o?0:c*s/o),{x:i+n,y:a+r}}},8284:(t,e,n)=>{var r=n(8355);t.exports=function(t,e){var n=t.append("foreignObject").attr("width","100000"),i=n.append("xhtml:div");i.attr("xmlns","http://www.w3.org/1999/xhtml");var a=e.label;switch(typeof a){case"function":i.insert(a);break;case"object":i.insert((function(){return a}));break;default:i.html(a)}r.applyStyle(i,e.labelStyle),i.style("display","inline-block"),i.style("white-space","nowrap");var o=i.node().getBoundingClientRect();return n.attr("width",o.width).attr("height",o.height),n}},1322:(t,e,n)=>{var r=n(7318),i=n(8284),a=n(8287);t.exports=function(t,e,n){var o=e.label,s=t.append("g");"svg"===e.labelType?a(s,e):"string"!=typeof o||"html"===e.labelType?i(s,e):r(s,e);var c,u=s.node().getBBox();switch(n){case"top":c=-e.height/2;break;case"bottom":c=e.height/2-u.height;break;default:c=-u.height/2}return s.attr("transform","translate("+-u.width/2+","+c+")"),s}},8287:(t,e,n)=>{var r=n(8355);t.exports=function(t,e){var n=t;return n.node().appendChild(e.label),r.applyStyle(n,e.labelStyle),n}},7318:(t,e,n)=>{var r=n(8355);t.exports=function(t,e){for(var n=t.append("text"),i=function(t){for(var e,n="",r=!1,i=0;i<t.length;++i)e=t[i],r?(n+="n"===e?"\n":e,r=!1):"\\"===e?r=!0:n+=e;return n}(e.label).split("\n"),a=0;a<i.length;a++)n.append("tspan").attr("xml:space","preserve").attr("dy","1em").attr("x","1").text(i[a]);return r.applyStyle(n,e.labelStyle),n}},1034:(t,e,n)=>{var r;try{r={defaults:n(1747),each:n(6073),isFunction:n(3560),isPlainObject:n(8630),pick:n(9722),has:n(8721),range:n(6026),uniqueId:n(3955)}}catch(t){}r||(r=window._),t.exports=r},6381:(t,e,n)=>{"use strict";var r=n(8355),i=n(4322);t.exports=function(t,e){var n=t.filter((function(){return!i.select(this).classed("update")}));function a(t){var n=e.node(t);return"translate("+n.x+","+n.y+")"}n.attr("transform",a),r.applyTransition(t,e).style("opacity",1).attr("transform",a),r.applyTransition(n.selectAll("rect"),e).attr("width",(function(t){return e.node(t).width})).attr("height",(function(t){return e.node(t).height})).attr("x",(function(t){return-e.node(t).width/2})).attr("y",(function(t){return-e.node(t).height/2}))}},4577:(t,e,n)=>{"use strict";var r=n(8355),i=n(4322),a=n(1034);t.exports=function(t,e){function n(t){var n=e.edge(t);return a.has(n,"x")?"translate("+n.x+","+n.y+")":""}t.filter((function(){return!i.select(this).classed("update")})).attr("transform",n),r.applyTransition(t,e).style("opacity",1).attr("transform",n)}},4849:(t,e,n)=>{"use strict";var r=n(8355),i=n(4322);t.exports=function(t,e){function n(t){var n=e.node(t);return"translate("+n.x+","+n.y+")"}t.filter((function(){return!i.select(this).classed("update")})).attr("transform",n),r.applyTransition(t,e).style("opacity",1).attr("transform",n)}},5787:(t,e,n)=>{var r=n(1034),i=n(4322),a=n(1463).layout;t.exports=function(){var t=n(607),e=n(5632),i=n(6315),u=n(940),l=n(4849),h=n(4577),f=n(6381),d=n(4418),p=n(9144),g=function(n,g){!function(t){t.nodes().forEach((function(e){var n=t.node(e);r.has(n,"label")||t.children(e).length||(n.label=e),r.has(n,"paddingX")&&r.defaults(n,{paddingLeft:n.paddingX,paddingRight:n.paddingX}),r.has(n,"paddingY")&&r.defaults(n,{paddingTop:n.paddingY,paddingBottom:n.paddingY}),r.has(n,"padding")&&r.defaults(n,{paddingLeft:n.padding,paddingRight:n.padding,paddingTop:n.padding,paddingBottom:n.padding}),r.defaults(n,o),r.each(["paddingLeft","paddingRight","paddingTop","paddingBottom"],(function(t){n[t]=Number(n[t])})),r.has(n,"width")&&(n._prevWidth=n.width),r.has(n,"height")&&(n._prevHeight=n.height)})),t.edges().forEach((function(e){var n=t.edge(e);r.has(n,"label")||(n.label=""),r.defaults(n,s)}))}(g);var y=c(n,"output"),m=c(y,"clusters"),v=c(y,"edgePaths"),b=i(c(y,"edgeLabels"),g),_=t(c(y,"nodes"),g,d);a(g),l(_,g),h(b,g),u(v,g,p);var x=e(m,g);f(x,g),function(t){r.each(t.nodes(),(function(e){var n=t.node(e);r.has(n,"_prevWidth")?n.width=n._prevWidth:delete n.width,r.has(n,"_prevHeight")?n.height=n._prevHeight:delete n.height,delete n._prevWidth,delete n._prevHeight}))}(g)};return g.createNodes=function(e){return arguments.length?(t=e,g):t},g.createClusters=function(t){return arguments.length?(e=t,g):e},g.createEdgeLabels=function(t){return arguments.length?(i=t,g):i},g.createEdgePaths=function(t){return arguments.length?(u=t,g):u},g.shapes=function(t){return arguments.length?(d=t,g):d},g.arrows=function(t){return arguments.length?(p=t,g):p},g};var o={paddingLeft:10,paddingRight:10,paddingTop:10,paddingBottom:10,rx:0,ry:0,shape:"rect"},s={arrowhead:"normal",curve:i.curveLinear};function c(t,e){var n=t.select("g."+e);return n.empty()&&(n=t.append("g").attr("class",e)),n}},4418:(t,e,n)=>{"use strict";var r=n(8049),i=n(3260),a=n(6587),o=n(5337);t.exports={rect:function(t,e,n){var i=t.insert("rect",":first-child").attr("rx",n.rx).attr("ry",n.ry).attr("x",-e.width/2).attr("y",-e.height/2).attr("width",e.width).attr("height",e.height);return n.intersect=function(t){return r(n,t)},i},ellipse:function(t,e,n){var r=e.width/2,a=e.height/2,o=t.insert("ellipse",":first-child").attr("x",-e.width/2).attr("y",-e.height/2).attr("rx",r).attr("ry",a);return n.intersect=function(t){return i(n,r,a,t)},o},circle:function(t,e,n){var r=Math.max(e.width,e.height)/2,i=t.insert("circle",":first-child").attr("x",-e.width/2).attr("y",-e.height/2).attr("r",r);return n.intersect=function(t){return a(n,r,t)},i},diamond:function(t,e,n){var r=e.width*Math.SQRT2/2,i=e.height*Math.SQRT2/2,a=[{x:0,y:-i},{x:-r,y:0},{x:0,y:i},{x:r,y:0}],s=t.insert("polygon",":first-child").attr("points",a.map((function(t){return t.x+","+t.y})).join(" "));return n.intersect=function(t){return o(n,a,t)},s}}},8355:(t,e,n)=>{var r=n(1034);t.exports={isSubgraph:function(t,e){return!!t.children(e).length},edgeToId:function(t){return a(t.v)+":"+a(t.w)+":"+a(t.name)},applyStyle:function(t,e){e&&t.attr("style",e)},applyClass:function(t,e,n){e&&t.attr("class",e).attr("class",n+" "+t.attr("class"))},applyTransition:function(t,e){var n=e.graph();if(r.isPlainObject(n)){var i=n.transition;if(r.isFunction(i))return i(t)}return t}};var i=/:/g;function a(t){return t?String(t).replace(i,"\\:"):""}},5689:t=>{t.exports="0.6.4"},7188:(t,e,n)=>{"use strict";n.r(e),n.d(e,{FormatSpecifier:()=>uc,active:()=>Jr,arc:()=>fx,area:()=>vx,areaRadial:()=>Sx,ascending:()=>i,autoType:()=>Fo,axisBottom:()=>it,axisLeft:()=>at,axisRight:()=>rt,axisTop:()=>nt,bisect:()=>u,bisectLeft:()=>c,bisectRight:()=>s,bisector:()=>a,blob:()=>ms,brush:()=>Ai,brushSelection:()=>Ci,brushX:()=>Ei,brushY:()=>Si,buffer:()=>bs,chord:()=>Fi,clientPoint:()=>Dn,cluster:()=>Sd,color:()=>Ve,contourDensity:()=>oo,contours:()=>to,create:()=>Y_,creator:()=>ie,cross:()=>f,csv:()=>Ts,csvFormat:()=>To,csvFormatBody:()=>Co,csvFormatRow:()=>So,csvFormatRows:()=>Eo,csvFormatValue:()=>Ao,csvParse:()=>wo,csvParseRows:()=>ko,cubehelix:()=>qa,curveBasis:()=>sw,curveBasisClosed:()=>uw,curveBasisOpen:()=>hw,curveBundle:()=>dw,curveCardinal:()=>yw,curveCardinalClosed:()=>vw,curveCardinalOpen:()=>_w,curveCatmullRom:()=>kw,curveCatmullRomClosed:()=>Cw,curveCatmullRomOpen:()=>Sw,curveLinear:()=>px,curveLinearClosed:()=>Mw,curveMonotoneX:()=>Fw,curveMonotoneY:()=>Pw,curveNatural:()=>Uw,curveStep:()=>$w,curveStepAfter:()=>Hw,curveStepBefore:()=>qw,customEvent:()=>ye,descending:()=>d,deviation:()=>y,dispatch:()=>ft,drag:()=>po,dragDisable:()=>Se,dragEnable:()=>Ae,dsv:()=>ks,dsvFormat:()=>_o,easeBack:()=>hs,easeBackIn:()=>us,easeBackInOut:()=>hs,easeBackOut:()=>ls,easeBounce:()=>os,easeBounceIn:()=>as,easeBounceInOut:()=>ss,easeBounceOut:()=>os,easeCircle:()=>rs,easeCircleIn:()=>es,easeCircleInOut:()=>rs,easeCircleOut:()=>ns,easeCubic:()=>Xr,easeCubicIn:()=>Vr,easeCubicInOut:()=>Xr,easeCubicOut:()=>Gr,easeElastic:()=>ps,easeElasticIn:()=>ds,easeElasticInOut:()=>gs,easeElasticOut:()=>ps,easeExp:()=>ts,easeExpIn:()=>Ko,easeExpInOut:()=>ts,easeExpOut:()=>Jo,easeLinear:()=>Yo,easePoly:()=>Ho,easePolyIn:()=>$o,easePolyInOut:()=>Ho,easePolyOut:()=>qo,easeQuad:()=>zo,easeQuadIn:()=>jo,easeQuadInOut:()=>zo,easeQuadOut:()=>Uo,easeSin:()=>Zo,easeSinIn:()=>Go,easeSinInOut:()=>Zo,easeSinOut:()=>Xo,entries:()=>pa,event:()=>le,extent:()=>m,forceCenter:()=>Ls,forceCollide:()=>Ws,forceLink:()=>Xs,forceManyBody:()=>tc,forceRadial:()=>ec,forceSimulation:()=>Js,forceX:()=>nc,forceY:()=>rc,format:()=>pc,formatDefaultLocale:()=>bc,formatLocale:()=>vc,formatPrefix:()=>gc,formatSpecifier:()=>cc,geoAlbers:()=>zf,geoAlbersUsa:()=>$f,geoArea:()=>gu,geoAzimuthalEqualArea:()=>Vf,geoAzimuthalEqualAreaRaw:()=>Wf,geoAzimuthalEquidistant:()=>Xf,geoAzimuthalEquidistantRaw:()=>Gf,geoBounds:()=>sl,geoCentroid:()=>bl,geoCircle:()=>Nl,geoClipAntimeridian:()=>zl,geoClipCircle:()=>$l,geoClipExtent:()=>Vl,geoClipRectangle:()=>Wl,geoConicConformal:()=>ed,geoConicConformalRaw:()=>td,geoConicEqualArea:()=>Uf,geoConicEqualAreaRaw:()=>jf,geoConicEquidistant:()=>ad,geoConicEquidistantRaw:()=>id,geoContains:()=>ph,geoDistance:()=>ah,geoEqualEarth:()=>fd,geoEqualEarthRaw:()=>hd,geoEquirectangular:()=>rd,geoEquirectangularRaw:()=>nd,geoGnomonic:()=>pd,geoGnomonicRaw:()=>dd,geoGraticule:()=>mh,geoGraticule10:()=>vh,geoIdentity:()=>gd,geoInterpolate:()=>bh,geoLength:()=>nh,geoMercator:()=>Qf,geoMercatorRaw:()=>Zf,geoNaturalEarth1:()=>md,geoNaturalEarth1Raw:()=>yd,geoOrthographic:()=>bd,geoOrthographicRaw:()=>vd,geoPath:()=>kf,geoProjection:()=>Ff,geoProjectionMutator:()=>Pf,geoRotation:()=>Sl,geoStereographic:()=>xd,geoStereographicRaw:()=>_d,geoStream:()=>nu,geoTransform:()=>Tf,geoTransverseMercator:()=>kd,geoTransverseMercatorRaw:()=>wd,gray:()=>ka,hcl:()=>Ba,hierarchy:()=>Md,histogram:()=>D,hsl:()=>an,html:()=>Ds,image:()=>Es,interpolate:()=>Mn,interpolateArray:()=>xn,interpolateBasis:()=>un,interpolateBasisClosed:()=>ln,interpolateBlues:()=>f_,interpolateBrBG:()=>Tb,interpolateBuGn:()=>zb,interpolateBuPu:()=>qb,interpolateCividis:()=>k_,interpolateCool:()=>E_,interpolateCubehelix:()=>Up,interpolateCubehelixDefault:()=>T_,interpolateCubehelixLong:()=>zp,interpolateDate:()=>kn,interpolateDiscrete:()=>Sp,interpolateGnBu:()=>Wb,interpolateGreens:()=>p_,interpolateGreys:()=>y_,interpolateHcl:()=>Pp,interpolateHclLong:()=>Yp,interpolateHsl:()=>Op,interpolateHslLong:()=>Ip,interpolateHue:()=>Ap,interpolateInferno:()=>F_,interpolateLab:()=>Rp,interpolateMagma:()=>R_,interpolateNumber:()=>Tn,interpolateNumberArray:()=>bn,interpolateObject:()=>Cn,interpolateOrRd:()=>Gb,interpolateOranges:()=>w_,interpolatePRGn:()=>Eb,interpolatePiYG:()=>Ab,interpolatePlasma:()=>P_,interpolatePuBu:()=>Kb,interpolatePuBuGn:()=>Zb,interpolatePuOr:()=>Nb,interpolatePuRd:()=>t_,interpolatePurples:()=>v_,interpolateRainbow:()=>A_,interpolateRdBu:()=>Bb,interpolateRdGy:()=>Ob,interpolateRdPu:()=>n_,interpolateRdYlBu:()=>Rb,interpolateRdYlGn:()=>Pb,interpolateReds:()=>__,interpolateRgb:()=>gn,interpolateRgbBasis:()=>mn,interpolateRgbBasisClosed:()=>vn,interpolateRound:()=>Mp,interpolateSinebow:()=>B_,interpolateSpectral:()=>jb,interpolateString:()=>An,interpolateTransformCss:()=>pr,interpolateTransformSvg:()=>gr,interpolateTurbo:()=>L_,interpolateViridis:()=>I_,interpolateWarm:()=>C_,interpolateYlGn:()=>o_,interpolateYlGnBu:()=>i_,interpolateYlOrBr:()=>c_,interpolateYlOrRd:()=>l_,interpolateZoom:()=>Bp,interrupt:()=>ar,interval:()=>fk,isoFormat:()=>uk,isoParse:()=>hk,json:()=>As,keys:()=>fa,lab:()=>Ta,lch:()=>Da,line:()=>mx,lineRadial:()=>Ex,linkHorizontal:()=>Rx,linkRadial:()=>Px,linkVertical:()=>Fx,local:()=>U_,map:()=>na,matcher:()=>mt,max:()=>I,mean:()=>R,median:()=>F,merge:()=>P,min:()=>Y,mouse:()=>Ln,namespace:()=>Ct,namespaces:()=>Tt,nest:()=>ra,now:()=>qn,pack:()=>tp,packEnclose:()=>Id,packSiblings:()=>Gd,pairs:()=>l,partition:()=>op,path:()=>Wi,permute:()=>j,pie:()=>xx,piecewise:()=>$p,pointRadial:()=>Ax,polygonArea:()=>Hp,polygonCentroid:()=>Wp,polygonContains:()=>Qp,polygonHull:()=>Zp,polygonLength:()=>Kp,precisionFixed:()=>_c,precisionPrefix:()=>xc,precisionRound:()=>wc,quadtree:()=>js,quantile:()=>B,quantize:()=>qp,radialArea:()=>Sx,radialLine:()=>Ex,randomBates:()=>ig,randomExponential:()=>ag,randomIrwinHall:()=>rg,randomLogNormal:()=>ng,randomNormal:()=>eg,randomUniform:()=>tg,range:()=>k,rgb:()=>Qe,ribbon:()=>Ki,scaleBand:()=>dg,scaleDiverging:()=>ob,scaleDivergingLog:()=>sb,scaleDivergingPow:()=>ub,scaleDivergingSqrt:()=>lb,scaleDivergingSymlog:()=>cb,scaleIdentity:()=>Mg,scaleImplicit:()=>hg,scaleLinear:()=>Ag,scaleLog:()=>Pg,scaleOrdinal:()=>fg,scalePoint:()=>gg,scalePow:()=>Vg,scaleQuantile:()=>Xg,scaleQuantize:()=>Zg,scaleSequential:()=>Jv,scaleSequentialLog:()=>tb,scaleSequentialPow:()=>nb,scaleSequentialQuantile:()=>ib,scaleSequentialSqrt:()=>rb,scaleSequentialSymlog:()=>eb,scaleSqrt:()=>Gg,scaleSymlog:()=>zg,scaleThreshold:()=>Qg,scaleTime:()=>jv,scaleUtc:()=>Zv,scan:()=>U,schemeAccent:()=>db,schemeBlues:()=>h_,schemeBrBG:()=>kb,schemeBuGn:()=>Ub,schemeBuPu:()=>$b,schemeCategory10:()=>fb,schemeDark2:()=>pb,schemeGnBu:()=>Hb,schemeGreens:()=>d_,schemeGreys:()=>g_,schemeOrRd:()=>Vb,schemeOranges:()=>x_,schemePRGn:()=>Cb,schemePaired:()=>gb,schemePastel1:()=>yb,schemePastel2:()=>mb,schemePiYG:()=>Sb,schemePuBu:()=>Qb,schemePuBuGn:()=>Xb,schemePuOr:()=>Mb,schemePuRd:()=>Jb,schemePurples:()=>m_,schemeRdBu:()=>Db,schemeRdGy:()=>Lb,schemeRdPu:()=>e_,schemeRdYlBu:()=>Ib,schemeRdYlGn:()=>Fb,schemeReds:()=>b_,schemeSet1:()=>vb,schemeSet2:()=>bb,schemeSet3:()=>_b,schemeSpectral:()=>Yb,schemeTableau10:()=>xb,schemeYlGn:()=>a_,schemeYlGnBu:()=>r_,schemeYlOrBr:()=>s_,schemeYlOrRd:()=>u_,select:()=>Te,selectAll:()=>$_,selection:()=>ke,selector:()=>pt,selectorAll:()=>yt,set:()=>ha,shuffle:()=>z,stack:()=>Xw,stackOffsetDiverging:()=>Qw,stackOffsetExpand:()=>Zw,stackOffsetNone:()=>Ww,stackOffsetSilhouette:()=>Kw,stackOffsetWiggle:()=>Jw,stackOrderAppearance:()=>tk,stackOrderAscending:()=>nk,stackOrderDescending:()=>ik,stackOrderInsideOut:()=>ak,stackOrderNone:()=>Vw,stackOrderReverse:()=>ok,stratify:()=>hp,style:()=>Rt,sum:()=>$,svg:()=>Bs,symbol:()=>rw,symbolCircle:()=>Yx,symbolCross:()=>jx,symbolDiamond:()=>$x,symbolSquare:()=>Gx,symbolStar:()=>Vx,symbolTriangle:()=>Zx,symbolWye:()=>ew,symbols:()=>nw,text:()=>xs,thresholdFreedmanDiaconis:()=>L,thresholdScott:()=>O,thresholdSturges:()=>N,tickFormat:()=>Eg,tickIncrement:()=>A,tickStep:()=>M,ticks:()=>S,timeDay:()=>Ay,timeDays:()=>My,timeFormat:()=>pm,timeFormatDefaultLocale:()=>Iv,timeFormatLocale:()=>fm,timeFriday:()=>vy,timeFridays:()=>Cy,timeHour:()=>Dy,timeHours:()=>By,timeInterval:()=>ty,timeMillisecond:()=>jy,timeMilliseconds:()=>Uy,timeMinute:()=>Oy,timeMinutes:()=>Iy,timeMonday:()=>py,timeMondays:()=>xy,timeMonth:()=>ay,timeMonths:()=>oy,timeParse:()=>gm,timeSaturday:()=>by,timeSaturdays:()=>Ey,timeSecond:()=>Fy,timeSeconds:()=>Py,timeSunday:()=>dy,timeSundays:()=>_y,timeThursday:()=>my,timeThursdays:()=>Ty,timeTuesday:()=>gy,timeTuesdays:()=>wy,timeWednesday:()=>yy,timeWednesdays:()=>ky,timeWeek:()=>dy,timeWeeks:()=>_y,timeYear:()=>ny,timeYears:()=>ry,timeout:()=>Kn,timer:()=>Vn,timerFlush:()=>Gn,touch:()=>Bn,touches:()=>q_,transition:()=>qr,transpose:()=>q,tree:()=>vp,treemap:()=>kp,treemapBinary:()=>Tp,treemapDice:()=>ap,treemapResquarify:()=>Ep,treemapSlice:()=>bp,treemapSliceDice:()=>Cp,treemapSquarify:()=>wp,tsv:()=>Cs,tsvFormat:()=>Bo,tsvFormatBody:()=>Lo,tsvFormatRow:()=>Io,tsvFormatRows:()=>Oo,tsvFormatValue:()=>Ro,tsvParse:()=>No,tsvParseRows:()=>Do,utcDay:()=>im,utcDays:()=>am,utcFormat:()=>ym,utcFriday:()=>Gy,utcFridays:()=>em,utcHour:()=>Hv,utcHours:()=>Wv,utcMillisecond:()=>jy,utcMilliseconds:()=>Uy,utcMinute:()=>Gv,utcMinutes:()=>Xv,utcMonday:()=>qy,utcMondays:()=>Qy,utcMonth:()=>zv,utcMonths:()=>$v,utcParse:()=>mm,utcSaturday:()=>Xy,utcSaturdays:()=>nm,utcSecond:()=>Fy,utcSeconds:()=>Py,utcSunday:()=>$y,utcSundays:()=>Zy,utcThursday:()=>Vy,utcThursdays:()=>tm,utcTuesday:()=>Hy,utcTuesdays:()=>Ky,utcWednesday:()=>Wy,utcWednesdays:()=>Jy,utcWeek:()=>$y,utcWeeks:()=>Zy,utcYear:()=>sm,utcYears:()=>cm,values:()=>da,variance:()=>g,version:()=>r,voronoi:()=>Kk,window:()=>Bt,xml:()=>Ns,zip:()=>W,zoom:()=>fT,zoomIdentity:()=>nT,zoomTransform:()=>rT});var r="5.16.0";function i(t,e){return t<e?-1:t>e?1:t>=e?0:NaN}function a(t){var e;return 1===t.length&&(e=t,t=function(t,n){return i(e(t),n)}),{left:function(e,n,r,i){for(null==r&&(r=0),null==i&&(i=e.length);r<i;){var a=r+i>>>1;t(e[a],n)<0?r=a+1:i=a}return r},right:function(e,n,r,i){for(null==r&&(r=0),null==i&&(i=e.length);r<i;){var a=r+i>>>1;t(e[a],n)>0?i=a:r=a+1}return r}}}var o=a(i),s=o.right,c=o.left;const u=s;function l(t,e){null==e&&(e=h);for(var n=0,r=t.length-1,i=t[0],a=new Array(r<0?0:r);n<r;)a[n]=e(i,i=t[++n]);return a}function h(t,e){return[t,e]}function f(t,e,n){var r,i,a,o,s=t.length,c=e.length,u=new Array(s*c);for(null==n&&(n=h),r=a=0;r<s;++r)for(o=t[r],i=0;i<c;++i,++a)u[a]=n(o,e[i]);return u}function d(t,e){return e<t?-1:e>t?1:e>=t?0:NaN}function p(t){return null===t?NaN:+t}function g(t,e){var n,r,i=t.length,a=0,o=-1,s=0,c=0;if(null==e)for(;++o<i;)isNaN(n=p(t[o]))||(c+=(r=n-s)*(n-(s+=r/++a)));else for(;++o<i;)isNaN(n=p(e(t[o],o,t)))||(c+=(r=n-s)*(n-(s+=r/++a)));if(a>1)return c/(a-1)}function y(t,e){var n=g(t,e);return n?Math.sqrt(n):n}function m(t,e){var n,r,i,a=t.length,o=-1;if(null==e){for(;++o<a;)if(null!=(n=t[o])&&n>=n)for(r=i=n;++o<a;)null!=(n=t[o])&&(r>n&&(r=n),i<n&&(i=n))}else for(;++o<a;)if(null!=(n=e(t[o],o,t))&&n>=n)for(r=i=n;++o<a;)null!=(n=e(t[o],o,t))&&(r>n&&(r=n),i<n&&(i=n));return[r,i]}var v=Array.prototype,b=v.slice,_=v.map;function x(t){return function(){return t}}function w(t){return t}function k(t,e,n){t=+t,e=+e,n=(i=arguments.length)<2?(e=t,t=0,1):i<3?1:+n;for(var r=-1,i=0|Math.max(0,Math.ceil((e-t)/n)),a=new Array(i);++r<i;)a[r]=t+r*n;return a}var T=Math.sqrt(50),C=Math.sqrt(10),E=Math.sqrt(2);function S(t,e,n){var r,i,a,o,s=-1;if(n=+n,(t=+t)==(e=+e)&&n>0)return[t];if((r=e<t)&&(i=t,t=e,e=i),0===(o=A(t,e,n))||!isFinite(o))return[];if(o>0)for(t=Math.ceil(t/o),e=Math.floor(e/o),a=new Array(i=Math.ceil(e-t+1));++s<i;)a[s]=(t+s)*o;else for(t=Math.floor(t*o),e=Math.ceil(e*o),a=new Array(i=Math.ceil(t-e+1));++s<i;)a[s]=(t-s)/o;return r&&a.reverse(),a}function A(t,e,n){var r=(e-t)/Math.max(0,n),i=Math.floor(Math.log(r)/Math.LN10),a=r/Math.pow(10,i);return i>=0?(a>=T?10:a>=C?5:a>=E?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(a>=T?10:a>=C?5:a>=E?2:1)}function M(t,e,n){var r=Math.abs(e-t)/Math.max(0,n),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),a=r/i;return a>=T?i*=10:a>=C?i*=5:a>=E&&(i*=2),e<t?-i:i}function N(t){return Math.ceil(Math.log(t.length)/Math.LN2)+1}function D(){var t=w,e=m,n=N;function r(r){var i,a,o=r.length,s=new Array(o);for(i=0;i<o;++i)s[i]=t(r[i],i,r);var c=e(s),l=c[0],h=c[1],f=n(s,l,h);Array.isArray(f)||(f=M(l,h,f),f=k(Math.ceil(l/f)*f,h,f));for(var d=f.length;f[0]<=l;)f.shift(),--d;for(;f[d-1]>h;)f.pop(),--d;var p,g=new Array(d+1);for(i=0;i<=d;++i)(p=g[i]=[]).x0=i>0?f[i-1]:l,p.x1=i<d?f[i]:h;for(i=0;i<o;++i)l<=(a=s[i])&&a<=h&&g[u(f,a,0,d)].push(r[i]);return g}return r.value=function(e){return arguments.length?(t="function"==typeof e?e:x(e),r):t},r.domain=function(t){return arguments.length?(e="function"==typeof t?t:x([t[0],t[1]]),r):e},r.thresholds=function(t){return arguments.length?(n="function"==typeof t?t:Array.isArray(t)?x(b.call(t)):x(t),r):n},r}function B(t,e,n){if(null==n&&(n=p),r=t.length){if((e=+e)<=0||r<2)return+n(t[0],0,t);if(e>=1)return+n(t[r-1],r-1,t);var r,i=(r-1)*e,a=Math.floor(i),o=+n(t[a],a,t);return o+(+n(t[a+1],a+1,t)-o)*(i-a)}}function L(t,e,n){return t=_.call(t,p).sort(i),Math.ceil((n-e)/(2*(B(t,.75)-B(t,.25))*Math.pow(t.length,-1/3)))}function O(t,e,n){return Math.ceil((n-e)/(3.5*y(t)*Math.pow(t.length,-1/3)))}function I(t,e){var n,r,i=t.length,a=-1;if(null==e){for(;++a<i;)if(null!=(n=t[a])&&n>=n)for(r=n;++a<i;)null!=(n=t[a])&&n>r&&(r=n)}else for(;++a<i;)if(null!=(n=e(t[a],a,t))&&n>=n)for(r=n;++a<i;)null!=(n=e(t[a],a,t))&&n>r&&(r=n);return r}function R(t,e){var n,r=t.length,i=r,a=-1,o=0;if(null==e)for(;++a<r;)isNaN(n=p(t[a]))?--i:o+=n;else for(;++a<r;)isNaN(n=p(e(t[a],a,t)))?--i:o+=n;if(i)return o/i}function F(t,e){var n,r=t.length,a=-1,o=[];if(null==e)for(;++a<r;)isNaN(n=p(t[a]))||o.push(n);else for(;++a<r;)isNaN(n=p(e(t[a],a,t)))||o.push(n);return B(o.sort(i),.5)}function P(t){for(var e,n,r,i=t.length,a=-1,o=0;++a<i;)o+=t[a].length;for(n=new Array(o);--i>=0;)for(e=(r=t[i]).length;--e>=0;)n[--o]=r[e];return n}function Y(t,e){var n,r,i=t.length,a=-1;if(null==e){for(;++a<i;)if(null!=(n=t[a])&&n>=n)for(r=n;++a<i;)null!=(n=t[a])&&r>n&&(r=n)}else for(;++a<i;)if(null!=(n=e(t[a],a,t))&&n>=n)for(r=n;++a<i;)null!=(n=e(t[a],a,t))&&r>n&&(r=n);return r}function j(t,e){for(var n=e.length,r=new Array(n);n--;)r[n]=t[e[n]];return r}function U(t,e){if(n=t.length){var n,r,a=0,o=0,s=t[o];for(null==e&&(e=i);++a<n;)(e(r=t[a],s)<0||0!==e(s,s))&&(s=r,o=a);return 0===e(s,s)?o:void 0}}function z(t,e,n){for(var r,i,a=(null==n?t.length:n)-(e=null==e?0:+e);a;)i=Math.random()*a--|0,r=t[a+e],t[a+e]=t[i+e],t[i+e]=r;return t}function $(t,e){var n,r=t.length,i=-1,a=0;if(null==e)for(;++i<r;)(n=+t[i])&&(a+=n);else for(;++i<r;)(n=+e(t[i],i,t))&&(a+=n);return a}function q(t){if(!(i=t.length))return[];for(var e=-1,n=Y(t,H),r=new Array(n);++e<n;)for(var i,a=-1,o=r[e]=new Array(i);++a<i;)o[a]=t[a][e];return r}function H(t){return t.length}function W(){return q(arguments)}var V=Array.prototype.slice;function G(t){return t}var X=1e-6;function Z(t){return"translate("+(t+.5)+",0)"}function Q(t){return"translate(0,"+(t+.5)+")"}function K(t){return function(e){return+t(e)}}function J(t){var e=Math.max(0,t.bandwidth()-1)/2;return t.round()&&(e=Math.round(e)),function(n){return+t(n)+e}}function tt(){return!this.__axis}function et(t,e){var n=[],r=null,i=null,a=6,o=6,s=3,c=1===t||4===t?-1:1,u=4===t||2===t?"x":"y",l=1===t||3===t?Z:Q;function h(h){var f=null==r?e.ticks?e.ticks.apply(e,n):e.domain():r,d=null==i?e.tickFormat?e.tickFormat.apply(e,n):G:i,p=Math.max(a,0)+s,g=e.range(),y=+g[0]+.5,m=+g[g.length-1]+.5,v=(e.bandwidth?J:K)(e.copy()),b=h.selection?h.selection():h,_=b.selectAll(".domain").data([null]),x=b.selectAll(".tick").data(f,e).order(),w=x.exit(),k=x.enter().append("g").attr("class","tick"),T=x.select("line"),C=x.select("text");_=_.merge(_.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),x=x.merge(k),T=T.merge(k.append("line").attr("stroke","currentColor").attr(u+"2",c*a)),C=C.merge(k.append("text").attr("fill","currentColor").attr(u,c*p).attr("dy",1===t?"0em":3===t?"0.71em":"0.32em")),h!==b&&(_=_.transition(h),x=x.transition(h),T=T.transition(h),C=C.transition(h),w=w.transition(h).attr("opacity",X).attr("transform",(function(t){return isFinite(t=v(t))?l(t):this.getAttribute("transform")})),k.attr("opacity",X).attr("transform",(function(t){var e=this.parentNode.__axis;return l(e&&isFinite(e=e(t))?e:v(t))}))),w.remove(),_.attr("d",4===t||2==t?o?"M"+c*o+","+y+"H0.5V"+m+"H"+c*o:"M0.5,"+y+"V"+m:o?"M"+y+","+c*o+"V0.5H"+m+"V"+c*o:"M"+y+",0.5H"+m),x.attr("opacity",1).attr("transform",(function(t){return l(v(t))})),T.attr(u+"2",c*a),C.attr(u,c*p).text(d),b.filter(tt).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",2===t?"start":4===t?"end":"middle"),b.each((function(){this.__axis=v}))}return h.scale=function(t){return arguments.length?(e=t,h):e},h.ticks=function(){return n=V.call(arguments),h},h.tickArguments=function(t){return arguments.length?(n=null==t?[]:V.call(t),h):n.slice()},h.tickValues=function(t){return arguments.length?(r=null==t?null:V.call(t),h):r&&r.slice()},h.tickFormat=function(t){return arguments.length?(i=t,h):i},h.tickSize=function(t){return arguments.length?(a=o=+t,h):a},h.tickSizeInner=function(t){return arguments.length?(a=+t,h):a},h.tickSizeOuter=function(t){return arguments.length?(o=+t,h):o},h.tickPadding=function(t){return arguments.length?(s=+t,h):s},h}function nt(t){return et(1,t)}function rt(t){return et(2,t)}function it(t){return et(3,t)}function at(t){return et(4,t)}var ot={value:function(){}};function st(){for(var t,e=0,n=arguments.length,r={};e<n;++e){if(!(t=arguments[e]+"")||t in r||/[\s.]/.test(t))throw new Error("illegal type: "+t);r[t]=[]}return new ct(r)}function ct(t){this._=t}function ut(t,e){return t.trim().split(/^|\s+/).map((function(t){var n="",r=t.indexOf(".");if(r>=0&&(n=t.slice(r+1),t=t.slice(0,r)),t&&!e.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:n}}))}function lt(t,e){for(var n,r=0,i=t.length;r<i;++r)if((n=t[r]).name===e)return n.value}function ht(t,e,n){for(var r=0,i=t.length;r<i;++r)if(t[r].name===e){t[r]=ot,t=t.slice(0,r).concat(t.slice(r+1));break}return null!=n&&t.push({name:e,value:n}),t}ct.prototype=st.prototype={constructor:ct,on:function(t,e){var n,r=this._,i=ut(t+"",r),a=-1,o=i.length;if(!(arguments.length<2)){if(null!=e&&"function"!=typeof e)throw new Error("invalid callback: "+e);for(;++a<o;)if(n=(t=i[a]).type)r[n]=ht(r[n],t.name,e);else if(null==e)for(n in r)r[n]=ht(r[n],t.name,null);return this}for(;++a<o;)if((n=(t=i[a]).type)&&(n=lt(r[n],t.name)))return n},copy:function(){var t={},e=this._;for(var n in e)t[n]=e[n].slice();return new ct(t)},call:function(t,e){if((n=arguments.length-2)>0)for(var n,r,i=new Array(n),a=0;a<n;++a)i[a]=arguments[a+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(a=0,n=(r=this._[t]).length;a<n;++a)r[a].value.apply(e,i)},apply:function(t,e,n){if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(var r=this._[t],i=0,a=r.length;i<a;++i)r[i].value.apply(e,n)}};const ft=st;function dt(){}function pt(t){return null==t?dt:function(){return this.querySelector(t)}}function gt(){return[]}function yt(t){return null==t?gt:function(){return this.querySelectorAll(t)}}function mt(t){return function(){return this.matches(t)}}function vt(t){return new Array(t.length)}function bt(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}function _t(t,e,n,r,i,a){for(var o,s=0,c=e.length,u=a.length;s<u;++s)(o=e[s])?(o.__data__=a[s],r[s]=o):n[s]=new bt(t,a[s]);for(;s<c;++s)(o=e[s])&&(i[s]=o)}function xt(t,e,n,r,i,a,o){var s,c,u,l={},h=e.length,f=a.length,d=new Array(h);for(s=0;s<h;++s)(c=e[s])&&(d[s]=u="$"+o.call(c,c.__data__,s,e),u in l?i[s]=c:l[u]=c);for(s=0;s<f;++s)(c=l[u="$"+o.call(t,a[s],s,a)])?(r[s]=c,c.__data__=a[s],l[u]=null):n[s]=new bt(t,a[s]);for(s=0;s<h;++s)(c=e[s])&&l[d[s]]===c&&(i[s]=c)}function wt(t,e){return t<e?-1:t>e?1:t>=e?0:NaN}bt.prototype={constructor:bt,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};var kt="http://www.w3.org/1999/xhtml";const Tt={svg:"http://www.w3.org/2000/svg",xhtml:kt,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function Ct(t){var e=t+="",n=e.indexOf(":");return n>=0&&"xmlns"!==(e=t.slice(0,n))&&(t=t.slice(n+1)),Tt.hasOwnProperty(e)?{space:Tt[e],local:t}:t}function Et(t){return function(){this.removeAttribute(t)}}function St(t){return function(){this.removeAttributeNS(t.space,t.local)}}function At(t,e){return function(){this.setAttribute(t,e)}}function Mt(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function Nt(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttribute(t):this.setAttribute(t,n)}}function Dt(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}}function Bt(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function Lt(t){return function(){this.style.removeProperty(t)}}function Ot(t,e,n){return function(){this.style.setProperty(t,e,n)}}function It(t,e,n){return function(){var r=e.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,n)}}function Rt(t,e){return t.style.getPropertyValue(e)||Bt(t).getComputedStyle(t,null).getPropertyValue(e)}function Ft(t){return function(){delete this[t]}}function Pt(t,e){return function(){this[t]=e}}function Yt(t,e){return function(){var n=e.apply(this,arguments);null==n?delete this[t]:this[t]=n}}function jt(t){return t.trim().split(/^|\s+/)}function Ut(t){return t.classList||new zt(t)}function zt(t){this._node=t,this._names=jt(t.getAttribute("class")||"")}function $t(t,e){for(var n=Ut(t),r=-1,i=e.length;++r<i;)n.add(e[r])}function qt(t,e){for(var n=Ut(t),r=-1,i=e.length;++r<i;)n.remove(e[r])}function Ht(t){return function(){$t(this,t)}}function Wt(t){return function(){qt(this,t)}}function Vt(t,e){return function(){(e.apply(this,arguments)?$t:qt)(this,t)}}function Gt(){this.textContent=""}function Xt(t){return function(){this.textContent=t}}function Zt(t){return function(){var e=t.apply(this,arguments);this.textContent=null==e?"":e}}function Qt(){this.innerHTML=""}function Kt(t){return function(){this.innerHTML=t}}function Jt(t){return function(){var e=t.apply(this,arguments);this.innerHTML=null==e?"":e}}function te(){this.nextSibling&&this.parentNode.appendChild(this)}function ee(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function ne(t){return function(){var e=this.ownerDocument,n=this.namespaceURI;return n===kt&&e.documentElement.namespaceURI===kt?e.createElement(t):e.createElementNS(n,t)}}function re(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function ie(t){var e=Ct(t);return(e.local?re:ne)(e)}function ae(){return null}function oe(){var t=this.parentNode;t&&t.removeChild(this)}function se(){var t=this.cloneNode(!1),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function ce(){var t=this.cloneNode(!0),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}zt.prototype={add:function(t){this._names.indexOf(t)<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var ue={},le=null;function he(t,e,n){return t=fe(t,e,n),function(e){var n=e.relatedTarget;n&&(n===this||8&n.compareDocumentPosition(this))||t.call(this,e)}}function fe(t,e,n){return function(r){var i=le;le=r;try{t.call(this,this.__data__,e,n)}finally{le=i}}}function de(t){return t.trim().split(/^|\s+/).map((function(t){var e="",n=t.indexOf(".");return n>=0&&(e=t.slice(n+1),t=t.slice(0,n)),{type:t,name:e}}))}function pe(t){return function(){var e=this.__on;if(e){for(var n,r=0,i=-1,a=e.length;r<a;++r)n=e[r],t.type&&n.type!==t.type||n.name!==t.name?e[++i]=n:this.removeEventListener(n.type,n.listener,n.capture);++i?e.length=i:delete this.__on}}}function ge(t,e,n){var r=ue.hasOwnProperty(t.type)?he:fe;return function(i,a,o){var s,c=this.__on,u=r(e,a,o);if(c)for(var l=0,h=c.length;l<h;++l)if((s=c[l]).type===t.type&&s.name===t.name)return this.removeEventListener(s.type,s.listener,s.capture),this.addEventListener(s.type,s.listener=u,s.capture=n),void(s.value=e);this.addEventListener(t.type,u,n),s={type:t.type,name:t.name,value:e,listener:u,capture:n},c?c.push(s):this.__on=[s]}}function ye(t,e,n,r){var i=le;t.sourceEvent=le,le=t;try{return e.apply(n,r)}finally{le=i}}function me(t,e,n){var r=Bt(t),i=r.CustomEvent;"function"==typeof i?i=new i(e,n):(i=r.document.createEvent("Event"),n?(i.initEvent(e,n.bubbles,n.cancelable),i.detail=n.detail):i.initEvent(e,!1,!1)),t.dispatchEvent(i)}function ve(t,e){return function(){return me(this,t,e)}}function be(t,e){return function(){return me(this,t,e.apply(this,arguments))}}"undefined"!=typeof document&&("onmouseenter"in document.documentElement||(ue={mouseenter:"mouseover",mouseleave:"mouseout"}));var _e=[null];function xe(t,e){this._groups=t,this._parents=e}function we(){return new xe([[document.documentElement]],_e)}xe.prototype=we.prototype={constructor:xe,select:function(t){"function"!=typeof t&&(t=pt(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var a,o,s=e[i],c=s.length,u=r[i]=new Array(c),l=0;l<c;++l)(a=s[l])&&(o=t.call(a,a.__data__,l,s))&&("__data__"in a&&(o.__data__=a.__data__),u[l]=o);return new xe(r,this._parents)},selectAll:function(t){"function"!=typeof t&&(t=yt(t));for(var e=this._groups,n=e.length,r=[],i=[],a=0;a<n;++a)for(var o,s=e[a],c=s.length,u=0;u<c;++u)(o=s[u])&&(r.push(t.call(o,o.__data__,u,s)),i.push(o));return new xe(r,i)},filter:function(t){"function"!=typeof t&&(t=mt(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var a,o=e[i],s=o.length,c=r[i]=[],u=0;u<s;++u)(a=o[u])&&t.call(a,a.__data__,u,o)&&c.push(a);return new xe(r,this._parents)},data:function(t,e){if(!t)return p=new Array(this.size()),l=-1,this.each((function(t){p[++l]=t})),p;var n,r=e?xt:_t,i=this._parents,a=this._groups;"function"!=typeof t&&(n=t,t=function(){return n});for(var o=a.length,s=new Array(o),c=new Array(o),u=new Array(o),l=0;l<o;++l){var h=i[l],f=a[l],d=f.length,p=t.call(h,h&&h.__data__,l,i),g=p.length,y=c[l]=new Array(g),m=s[l]=new Array(g);r(h,f,y,m,u[l]=new Array(d),p,e);for(var v,b,_=0,x=0;_<g;++_)if(v=y[_]){for(_>=x&&(x=_+1);!(b=m[x])&&++x<g;);v._next=b||null}}return(s=new xe(s,i))._enter=c,s._exit=u,s},enter:function(){return new xe(this._enter||this._groups.map(vt),this._parents)},exit:function(){return new xe(this._exit||this._groups.map(vt),this._parents)},join:function(t,e,n){var r=this.enter(),i=this,a=this.exit();return r="function"==typeof t?t(r):r.append(t+""),null!=e&&(i=e(i)),null==n?a.remove():n(a),r&&i?r.merge(i).order():i},merge:function(t){for(var e=this._groups,n=t._groups,r=e.length,i=n.length,a=Math.min(r,i),o=new Array(r),s=0;s<a;++s)for(var c,u=e[s],l=n[s],h=u.length,f=o[s]=new Array(h),d=0;d<h;++d)(c=u[d]||l[d])&&(f[d]=c);for(;s<r;++s)o[s]=e[s];return new xe(o,this._parents)},order:function(){for(var t=this._groups,e=-1,n=t.length;++e<n;)for(var r,i=t[e],a=i.length-1,o=i[a];--a>=0;)(r=i[a])&&(o&&4^r.compareDocumentPosition(o)&&o.parentNode.insertBefore(r,o),o=r);return this},sort:function(t){function e(e,n){return e&&n?t(e.__data__,n.__data__):!e-!n}t||(t=wt);for(var n=this._groups,r=n.length,i=new Array(r),a=0;a<r;++a){for(var o,s=n[a],c=s.length,u=i[a]=new Array(c),l=0;l<c;++l)(o=s[l])&&(u[l]=o);u.sort(e)}return new xe(i,this._parents).order()},call:function(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this},nodes:function(){var t=new Array(this.size()),e=-1;return this.each((function(){t[++e]=this})),t},node:function(){for(var t=this._groups,e=0,n=t.length;e<n;++e)for(var r=t[e],i=0,a=r.length;i<a;++i){var o=r[i];if(o)return o}return null},size:function(){var t=0;return this.each((function(){++t})),t},empty:function(){return!this.node()},each:function(t){for(var e=this._groups,n=0,r=e.length;n<r;++n)for(var i,a=e[n],o=0,s=a.length;o<s;++o)(i=a[o])&&t.call(i,i.__data__,o,a);return this},attr:function(t,e){var n=Ct(t);if(arguments.length<2){var r=this.node();return n.local?r.getAttributeNS(n.space,n.local):r.getAttribute(n)}return this.each((null==e?n.local?St:Et:"function"==typeof e?n.local?Dt:Nt:n.local?Mt:At)(n,e))},style:function(t,e,n){return arguments.length>1?this.each((null==e?Lt:"function"==typeof e?It:Ot)(t,e,null==n?"":n)):Rt(this.node(),t)},property:function(t,e){return arguments.length>1?this.each((null==e?Ft:"function"==typeof e?Yt:Pt)(t,e)):this.node()[t]},classed:function(t,e){var n=jt(t+"");if(arguments.length<2){for(var r=Ut(this.node()),i=-1,a=n.length;++i<a;)if(!r.contains(n[i]))return!1;return!0}return this.each(("function"==typeof e?Vt:e?Ht:Wt)(n,e))},text:function(t){return arguments.length?this.each(null==t?Gt:("function"==typeof t?Zt:Xt)(t)):this.node().textContent},html:function(t){return arguments.length?this.each(null==t?Qt:("function"==typeof t?Jt:Kt)(t)):this.node().innerHTML},raise:function(){return this.each(te)},lower:function(){return this.each(ee)},append:function(t){var e="function"==typeof t?t:ie(t);return this.select((function(){return this.appendChild(e.apply(this,arguments))}))},insert:function(t,e){var n="function"==typeof t?t:ie(t),r=null==e?ae:"function"==typeof e?e:pt(e);return this.select((function(){return this.insertBefore(n.apply(this,arguments),r.apply(this,arguments)||null)}))},remove:function(){return this.each(oe)},clone:function(t){return this.select(t?ce:se)},datum:function(t){return arguments.length?this.property("__data__",t):this.node().__data__},on:function(t,e,n){var r,i,a=de(t+""),o=a.length;if(!(arguments.length<2)){for(s=e?ge:pe,null==n&&(n=!1),r=0;r<o;++r)this.each(s(a[r],e,n));return this}var s=this.node().__on;if(s)for(var c,u=0,l=s.length;u<l;++u)for(r=0,c=s[u];r<o;++r)if((i=a[r]).type===c.type&&i.name===c.name)return c.value},dispatch:function(t,e){return this.each(("function"==typeof e?be:ve)(t,e))}};const ke=we;function Te(t){return"string"==typeof t?new xe([[document.querySelector(t)]],[document.documentElement]):new xe([[t]],_e)}function Ce(){le.stopImmediatePropagation()}function Ee(){le.preventDefault(),le.stopImmediatePropagation()}function Se(t){var e=t.document.documentElement,n=Te(t).on("dragstart.drag",Ee,!0);"onselectstart"in e?n.on("selectstart.drag",Ee,!0):(e.__noselect=e.style.MozUserSelect,e.style.MozUserSelect="none")}function Ae(t,e){var n=t.document.documentElement,r=Te(t).on("dragstart.drag",null);e&&(r.on("click.drag",Ee,!0),setTimeout((function(){r.on("click.drag",null)}),0)),"onselectstart"in n?r.on("selectstart.drag",null):(n.style.MozUserSelect=n.__noselect,delete n.__noselect)}function Me(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function Ne(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function De(){}var Be=.7,Le=1/Be,Oe="\\s*([+-]?\\d+)\\s*",Ie="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",Re="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",Fe=/^#([0-9a-f]{3,8})$/,Pe=new RegExp("^rgb\\("+[Oe,Oe,Oe]+"\\)$"),Ye=new RegExp("^rgb\\("+[Re,Re,Re]+"\\)$"),je=new RegExp("^rgba\\("+[Oe,Oe,Oe,Ie]+"\\)$"),Ue=new RegExp("^rgba\\("+[Re,Re,Re,Ie]+"\\)$"),ze=new RegExp("^hsl\\("+[Ie,Re,Re]+"\\)$"),$e=new RegExp("^hsla\\("+[Ie,Re,Re,Ie]+"\\)$"),qe={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function He(){return this.rgb().formatHex()}function We(){return this.rgb().formatRgb()}function Ve(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=Fe.exec(t))?(n=e[1].length,e=parseInt(e[1],16),6===n?Ge(e):3===n?new Ke(e>>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===n?Xe(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===n?Xe(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=Pe.exec(t))?new Ke(e[1],e[2],e[3],1):(e=Ye.exec(t))?new Ke(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=je.exec(t))?Xe(e[1],e[2],e[3],e[4]):(e=Ue.exec(t))?Xe(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=ze.exec(t))?nn(e[1],e[2]/100,e[3]/100,1):(e=$e.exec(t))?nn(e[1],e[2]/100,e[3]/100,e[4]):qe.hasOwnProperty(t)?Ge(qe[t]):"transparent"===t?new Ke(NaN,NaN,NaN,0):null}function Ge(t){return new Ke(t>>16&255,t>>8&255,255&t,1)}function Xe(t,e,n,r){return r<=0&&(t=e=n=NaN),new Ke(t,e,n,r)}function Ze(t){return t instanceof De||(t=Ve(t)),t?new Ke((t=t.rgb()).r,t.g,t.b,t.opacity):new Ke}function Qe(t,e,n,r){return 1===arguments.length?Ze(t):new Ke(t,e,n,null==r?1:r)}function Ke(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}function Je(){return"#"+en(this.r)+en(this.g)+en(this.b)}function tn(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?")":", "+t+")")}function en(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?"0":"")+t.toString(16)}function nn(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new on(t,e,n,r)}function rn(t){if(t instanceof on)return new on(t.h,t.s,t.l,t.opacity);if(t instanceof De||(t=Ve(t)),!t)return new on;if(t instanceof on)return t;var e=(t=t.rgb()).r/255,n=t.g/255,r=t.b/255,i=Math.min(e,n,r),a=Math.max(e,n,r),o=NaN,s=a-i,c=(a+i)/2;return s?(o=e===a?(n-r)/s+6*(n<r):n===a?(r-e)/s+2:(e-n)/s+4,s/=c<.5?a+i:2-a-i,o*=60):s=c>0&&c<1?0:o,new on(o,s,c,t.opacity)}function an(t,e,n,r){return 1===arguments.length?rn(t):new on(t,e,n,null==r?1:r)}function on(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}function sn(t,e,n){return 255*(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)}function cn(t,e,n,r,i){var a=t*t,o=a*t;return((1-3*t+3*a-o)*e+(4-6*a+3*o)*n+(1+3*t+3*a-3*o)*r+o*i)/6}function un(t){var e=t.length-1;return function(n){var r=n<=0?n=0:n>=1?(n=1,e-1):Math.floor(n*e),i=t[r],a=t[r+1],o=r>0?t[r-1]:2*i-a,s=r<e-1?t[r+2]:2*a-i;return cn((n-r/e)*e,o,i,a,s)}}function ln(t){var e=t.length;return function(n){var r=Math.floor(((n%=1)<0?++n:n)*e),i=t[(r+e-1)%e],a=t[r%e],o=t[(r+1)%e],s=t[(r+2)%e];return cn((n-r/e)*e,i,a,o,s)}}function hn(t){return function(){return t}}function fn(t,e){return function(n){return t+n*e}}function dn(t,e){var n=e-t;return n?fn(t,n>180||n<-180?n-360*Math.round(n/360):n):hn(isNaN(t)?e:t)}function pn(t,e){var n=e-t;return n?fn(t,n):hn(isNaN(t)?e:t)}Me(De,Ve,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:He,formatHex:He,formatHsl:function(){return rn(this).formatHsl()},formatRgb:We,toString:We}),Me(Ke,Qe,Ne(De,{brighter:function(t){return t=null==t?Le:Math.pow(Le,t),new Ke(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?Be:Math.pow(Be,t),new Ke(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Je,formatHex:Je,formatRgb:tn,toString:tn})),Me(on,an,Ne(De,{brighter:function(t){return t=null==t?Le:Math.pow(Le,t),new on(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?Be:Math.pow(Be,t),new on(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new Ke(sn(t>=240?t-240:t+120,i,r),sn(t,i,r),sn(t<120?t+240:t-120,i,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"hsl(":"hsla(")+(this.h||0)+", "+100*(this.s||0)+"%, "+100*(this.l||0)+"%"+(1===t?")":", "+t+")")}}));const gn=function t(e){var n=function(t){return 1==(t=+t)?pn:function(e,n){return n-e?function(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}(e,n,t):hn(isNaN(e)?n:e)}}(e);function r(t,e){var r=n((t=Qe(t)).r,(e=Qe(e)).r),i=n(t.g,e.g),a=n(t.b,e.b),o=pn(t.opacity,e.opacity);return function(e){return t.r=r(e),t.g=i(e),t.b=a(e),t.opacity=o(e),t+""}}return r.gamma=t,r}(1);function yn(t){return function(e){var n,r,i=e.length,a=new Array(i),o=new Array(i),s=new Array(i);for(n=0;n<i;++n)r=Qe(e[n]),a[n]=r.r||0,o[n]=r.g||0,s[n]=r.b||0;return a=t(a),o=t(o),s=t(s),r.opacity=1,function(t){return r.r=a(t),r.g=o(t),r.b=s(t),r+""}}}var mn=yn(un),vn=yn(ln);function bn(t,e){e||(e=[]);var n,r=t?Math.min(e.length,t.length):0,i=e.slice();return function(a){for(n=0;n<r;++n)i[n]=t[n]*(1-a)+e[n]*a;return i}}function _n(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function xn(t,e){return(_n(e)?bn:wn)(t,e)}function wn(t,e){var n,r=e?e.length:0,i=t?Math.min(r,t.length):0,a=new Array(i),o=new Array(r);for(n=0;n<i;++n)a[n]=Mn(t[n],e[n]);for(;n<r;++n)o[n]=e[n];return function(t){for(n=0;n<i;++n)o[n]=a[n](t);return o}}function kn(t,e){var n=new Date;return t=+t,e=+e,function(r){return n.setTime(t*(1-r)+e*r),n}}function Tn(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}function Cn(t,e){var n,r={},i={};for(n in null!==t&&"object"==typeof t||(t={}),null!==e&&"object"==typeof e||(e={}),e)n in t?r[n]=Mn(t[n],e[n]):i[n]=e[n];return function(t){for(n in r)i[n]=r[n](t);return i}}var En=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Sn=new RegExp(En.source,"g");function An(t,e){var n,r,i,a=En.lastIndex=Sn.lastIndex=0,o=-1,s=[],c=[];for(t+="",e+="";(n=En.exec(t))&&(r=Sn.exec(e));)(i=r.index)>a&&(i=e.slice(a,i),s[o]?s[o]+=i:s[++o]=i),(n=n[0])===(r=r[0])?s[o]?s[o]+=r:s[++o]=r:(s[++o]=null,c.push({i:o,x:Tn(n,r)})),a=Sn.lastIndex;return a<e.length&&(i=e.slice(a),s[o]?s[o]+=i:s[++o]=i),s.length<2?c[0]?function(t){return function(e){return t(e)+""}}(c[0].x):function(t){return function(){return t}}(e):(e=c.length,function(t){for(var n,r=0;r<e;++r)s[(n=c[r]).i]=n.x(t);return s.join("")})}function Mn(t,e){var n,r=typeof e;return null==e||"boolean"===r?hn(e):("number"===r?Tn:"string"===r?(n=Ve(e))?(e=n,gn):An:e instanceof Ve?gn:e instanceof Date?kn:_n(e)?bn:Array.isArray(e)?wn:"function"!=typeof e.valueOf&&"function"!=typeof e.toString||isNaN(e)?Cn:Tn)(t,e)}function Nn(){for(var t,e=le;t=e.sourceEvent;)e=t;return e}function Dn(t,e){var n=t.ownerSVGElement||t;if(n.createSVGPoint){var r=n.createSVGPoint();return r.x=e.clientX,r.y=e.clientY,[(r=r.matrixTransform(t.getScreenCTM().inverse())).x,r.y]}var i=t.getBoundingClientRect();return[e.clientX-i.left-t.clientLeft,e.clientY-i.top-t.clientTop]}function Bn(t,e,n){arguments.length<3&&(n=e,e=Nn().changedTouches);for(var r,i=0,a=e?e.length:0;i<a;++i)if((r=e[i]).identifier===n)return Dn(t,r);return null}function Ln(t){var e=Nn();return e.changedTouches&&(e=e.changedTouches[0]),Dn(t,e)}var On,In,Rn=0,Fn=0,Pn=0,Yn=0,jn=0,Un=0,zn="object"==typeof performance&&performance.now?performance:Date,$n="object"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function qn(){return jn||($n(Hn),jn=zn.now()+Un)}function Hn(){jn=0}function Wn(){this._call=this._time=this._next=null}function Vn(t,e,n){var r=new Wn;return r.restart(t,e,n),r}function Gn(){qn(),++Rn;for(var t,e=On;e;)(t=jn-e._time)>=0&&e._call.call(null,t),e=e._next;--Rn}function Xn(){jn=(Yn=zn.now())+Un,Rn=Fn=0;try{Gn()}finally{Rn=0,function(){for(var t,e,n=On,r=1/0;n;)n._call?(r>n._time&&(r=n._time),t=n,n=n._next):(e=n._next,n._next=null,n=t?t._next=e:On=e);In=t,Qn(r)}(),jn=0}}function Zn(){var t=zn.now(),e=t-Yn;e>1e3&&(Un-=e,Yn=t)}function Qn(t){Rn||(Fn&&(Fn=clearTimeout(Fn)),t-jn>24?(t<1/0&&(Fn=setTimeout(Xn,t-zn.now()-Un)),Pn&&(Pn=clearInterval(Pn))):(Pn||(Yn=zn.now(),Pn=setInterval(Zn,1e3)),Rn=1,$n(Xn)))}function Kn(t,e,n){var r=new Wn;return e=null==e?0:+e,r.restart((function(n){r.stop(),t(n+e)}),e,n),r}Wn.prototype=Vn.prototype={constructor:Wn,restart:function(t,e,n){if("function"!=typeof t)throw new TypeError("callback is not a function");n=(null==n?qn():+n)+(null==e?0:+e),this._next||In===this||(In?In._next=this:On=this,In=this),this._call=t,this._time=n,Qn()},stop:function(){this._call&&(this._call=null,this._time=1/0,Qn())}};var Jn=ft("start","end","cancel","interrupt"),tr=[];function er(t,e,n,r,i,a){var o=t.__transition;if(o){if(n in o)return}else t.__transition={};!function(t,e,n){var r,i=t.__transition;function a(c){var u,l,h,f;if(1!==n.state)return s();for(u in i)if((f=i[u]).name===n.name){if(3===f.state)return Kn(a);4===f.state?(f.state=6,f.timer.stop(),f.on.call("interrupt",t,t.__data__,f.index,f.group),delete i[u]):+u<e&&(f.state=6,f.timer.stop(),f.on.call("cancel",t,t.__data__,f.index,f.group),delete i[u])}if(Kn((function(){3===n.state&&(n.state=4,n.timer.restart(o,n.delay,n.time),o(c))})),n.state=2,n.on.call("start",t,t.__data__,n.index,n.group),2===n.state){for(n.state=3,r=new Array(h=n.tween.length),u=0,l=-1;u<h;++u)(f=n.tween[u].value.call(t,t.__data__,n.index,n.group))&&(r[++l]=f);r.length=l+1}}function o(e){for(var i=e<n.duration?n.ease.call(null,e/n.duration):(n.timer.restart(s),n.state=5,1),a=-1,o=r.length;++a<o;)r[a].call(t,i);5===n.state&&(n.on.call("end",t,t.__data__,n.index,n.group),s())}function s(){for(var r in n.state=6,n.timer.stop(),delete i[e],i)return;delete t.__transition}i[e]=n,n.timer=Vn((function(t){n.state=1,n.timer.restart(a,n.delay,n.time),n.delay<=t&&a(t-n.delay)}),0,n.time)}(t,n,{name:e,index:r,group:i,on:Jn,tween:tr,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:0})}function nr(t,e){var n=ir(t,e);if(n.state>0)throw new Error("too late; already scheduled");return n}function rr(t,e){var n=ir(t,e);if(n.state>3)throw new Error("too late; already running");return n}function ir(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}function ar(t,e){var n,r,i,a=t.__transition,o=!0;if(a){for(i in e=null==e?null:e+"",a)(n=a[i]).name===e?(r=n.state>2&&n.state<5,n.state=6,n.timer.stop(),n.on.call(r?"interrupt":"cancel",t,t.__data__,n.index,n.group),delete a[i]):o=!1;o&&delete t.__transition}}var or,sr,cr,ur,lr=180/Math.PI,hr={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function fr(t,e,n,r,i,a){var o,s,c;return(o=Math.sqrt(t*t+e*e))&&(t/=o,e/=o),(c=t*n+e*r)&&(n-=t*c,r-=e*c),(s=Math.sqrt(n*n+r*r))&&(n/=s,r/=s,c/=s),t*r<e*n&&(t=-t,e=-e,c=-c,o=-o),{translateX:i,translateY:a,rotate:Math.atan2(e,t)*lr,skewX:Math.atan(c)*lr,scaleX:o,scaleY:s}}function dr(t,e,n,r){function i(t){return t.length?t.pop()+" ":""}return function(a,o){var s=[],c=[];return a=t(a),o=t(o),function(t,r,i,a,o,s){if(t!==i||r!==a){var c=o.push("translate(",null,e,null,n);s.push({i:c-4,x:Tn(t,i)},{i:c-2,x:Tn(r,a)})}else(i||a)&&o.push("translate("+i+e+a+n)}(a.translateX,a.translateY,o.translateX,o.translateY,s,c),function(t,e,n,a){t!==e?(t-e>180?e+=360:e-t>180&&(t+=360),a.push({i:n.push(i(n)+"rotate(",null,r)-2,x:Tn(t,e)})):e&&n.push(i(n)+"rotate("+e+r)}(a.rotate,o.rotate,s,c),function(t,e,n,a){t!==e?a.push({i:n.push(i(n)+"skewX(",null,r)-2,x:Tn(t,e)}):e&&n.push(i(n)+"skewX("+e+r)}(a.skewX,o.skewX,s,c),function(t,e,n,r,a,o){if(t!==n||e!==r){var s=a.push(i(a)+"scale(",null,",",null,")");o.push({i:s-4,x:Tn(t,n)},{i:s-2,x:Tn(e,r)})}else 1===n&&1===r||a.push(i(a)+"scale("+n+","+r+")")}(a.scaleX,a.scaleY,o.scaleX,o.scaleY,s,c),a=o=null,function(t){for(var e,n=-1,r=c.length;++n<r;)s[(e=c[n]).i]=e.x(t);return s.join("")}}}var pr=dr((function(t){return"none"===t?hr:(or||(or=document.createElement("DIV"),sr=document.documentElement,cr=document.defaultView),or.style.transform=t,t=cr.getComputedStyle(sr.appendChild(or),null).getPropertyValue("transform"),sr.removeChild(or),fr(+(t=t.slice(7,-1).split(","))[0],+t[1],+t[2],+t[3],+t[4],+t[5]))}),"px, ","px)","deg)"),gr=dr((function(t){return null==t?hr:(ur||(ur=document.createElementNS("http://www.w3.org/2000/svg","g")),ur.setAttribute("transform",t),(t=ur.transform.baseVal.consolidate())?fr((t=t.matrix).a,t.b,t.c,t.d,t.e,t.f):hr)}),", ",")",")");function yr(t,e){var n,r;return function(){var i=rr(this,t),a=i.tween;if(a!==n)for(var o=0,s=(r=n=a).length;o<s;++o)if(r[o].name===e){(r=r.slice()).splice(o,1);break}i.tween=r}}function mr(t,e,n){var r,i;if("function"!=typeof n)throw new Error;return function(){var a=rr(this,t),o=a.tween;if(o!==r){i=(r=o).slice();for(var s={name:e,value:n},c=0,u=i.length;c<u;++c)if(i[c].name===e){i[c]=s;break}c===u&&i.push(s)}a.tween=i}}function vr(t,e,n){var r=t._id;return t.each((function(){var t=rr(this,r);(t.value||(t.value={}))[e]=n.apply(this,arguments)})),function(t){return ir(t,r).value[e]}}function br(t,e){var n;return("number"==typeof e?Tn:e instanceof Ve?gn:(n=Ve(e))?(e=n,gn):An)(t,e)}function _r(t){return function(){this.removeAttribute(t)}}function xr(t){return function(){this.removeAttributeNS(t.space,t.local)}}function wr(t,e,n){var r,i,a=n+"";return function(){var o=this.getAttribute(t);return o===a?null:o===r?i:i=e(r=o,n)}}function kr(t,e,n){var r,i,a=n+"";return function(){var o=this.getAttributeNS(t.space,t.local);return o===a?null:o===r?i:i=e(r=o,n)}}function Tr(t,e,n){var r,i,a;return function(){var o,s,c=n(this);if(null!=c)return(o=this.getAttribute(t))===(s=c+"")?null:o===r&&s===i?a:(i=s,a=e(r=o,c));this.removeAttribute(t)}}function Cr(t,e,n){var r,i,a;return function(){var o,s,c=n(this);if(null!=c)return(o=this.getAttributeNS(t.space,t.local))===(s=c+"")?null:o===r&&s===i?a:(i=s,a=e(r=o,c));this.removeAttributeNS(t.space,t.local)}}function Er(t,e){return function(n){this.setAttribute(t,e.call(this,n))}}function Sr(t,e){return function(n){this.setAttributeNS(t.space,t.local,e.call(this,n))}}function Ar(t,e){var n,r;function i(){var i=e.apply(this,arguments);return i!==r&&(n=(r=i)&&Sr(t,i)),n}return i._value=e,i}function Mr(t,e){var n,r;function i(){var i=e.apply(this,arguments);return i!==r&&(n=(r=i)&&Er(t,i)),n}return i._value=e,i}function Nr(t,e){return function(){nr(this,t).delay=+e.apply(this,arguments)}}function Dr(t,e){return e=+e,function(){nr(this,t).delay=e}}function Br(t,e){return function(){rr(this,t).duration=+e.apply(this,arguments)}}function Lr(t,e){return e=+e,function(){rr(this,t).duration=e}}function Or(t,e){if("function"!=typeof e)throw new Error;return function(){rr(this,t).ease=e}}function Ir(t,e,n){var r,i,a=function(t){return(t+"").trim().split(/^|\s+/).every((function(t){var e=t.indexOf(".");return e>=0&&(t=t.slice(0,e)),!t||"start"===t}))}(e)?nr:rr;return function(){var o=a(this,t),s=o.on;s!==r&&(i=(r=s).copy()).on(e,n),o.on=i}}var Rr=ke.prototype.constructor;function Fr(t){return function(){this.style.removeProperty(t)}}function Pr(t,e,n){return function(r){this.style.setProperty(t,e.call(this,r),n)}}function Yr(t,e,n){var r,i;function a(){var a=e.apply(this,arguments);return a!==i&&(r=(i=a)&&Pr(t,a,n)),r}return a._value=e,a}function jr(t){return function(e){this.textContent=t.call(this,e)}}function Ur(t){var e,n;function r(){var r=t.apply(this,arguments);return r!==n&&(e=(n=r)&&jr(r)),e}return r._value=t,r}var zr=0;function $r(t,e,n,r){this._groups=t,this._parents=e,this._name=n,this._id=r}function qr(t){return ke().transition(t)}function Hr(){return++zr}var Wr=ke.prototype;function Vr(t){return t*t*t}function Gr(t){return--t*t*t+1}function Xr(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}$r.prototype=qr.prototype={constructor:$r,select:function(t){var e=this._name,n=this._id;"function"!=typeof t&&(t=pt(t));for(var r=this._groups,i=r.length,a=new Array(i),o=0;o<i;++o)for(var s,c,u=r[o],l=u.length,h=a[o]=new Array(l),f=0;f<l;++f)(s=u[f])&&(c=t.call(s,s.__data__,f,u))&&("__data__"in s&&(c.__data__=s.__data__),h[f]=c,er(h[f],e,n,f,h,ir(s,n)));return new $r(a,this._parents,e,n)},selectAll:function(t){var e=this._name,n=this._id;"function"!=typeof t&&(t=yt(t));for(var r=this._groups,i=r.length,a=[],o=[],s=0;s<i;++s)for(var c,u=r[s],l=u.length,h=0;h<l;++h)if(c=u[h]){for(var f,d=t.call(c,c.__data__,h,u),p=ir(c,n),g=0,y=d.length;g<y;++g)(f=d[g])&&er(f,e,n,g,d,p);a.push(d),o.push(c)}return new $r(a,o,e,n)},filter:function(t){"function"!=typeof t&&(t=mt(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var a,o=e[i],s=o.length,c=r[i]=[],u=0;u<s;++u)(a=o[u])&&t.call(a,a.__data__,u,o)&&c.push(a);return new $r(r,this._parents,this._name,this._id)},merge:function(t){if(t._id!==this._id)throw new Error;for(var e=this._groups,n=t._groups,r=e.length,i=n.length,a=Math.min(r,i),o=new Array(r),s=0;s<a;++s)for(var c,u=e[s],l=n[s],h=u.length,f=o[s]=new Array(h),d=0;d<h;++d)(c=u[d]||l[d])&&(f[d]=c);for(;s<r;++s)o[s]=e[s];return new $r(o,this._parents,this._name,this._id)},selection:function(){return new Rr(this._groups,this._parents)},transition:function(){for(var t=this._name,e=this._id,n=Hr(),r=this._groups,i=r.length,a=0;a<i;++a)for(var o,s=r[a],c=s.length,u=0;u<c;++u)if(o=s[u]){var l=ir(o,e);er(o,t,n,u,s,{time:l.time+l.delay+l.duration,delay:0,duration:l.duration,ease:l.ease})}return new $r(r,this._parents,t,n)},call:Wr.call,nodes:Wr.nodes,node:Wr.node,size:Wr.size,empty:Wr.empty,each:Wr.each,on:function(t,e){var n=this._id;return arguments.length<2?ir(this.node(),n).on.on(t):this.each(Ir(n,t,e))},attr:function(t,e){var n=Ct(t),r="transform"===n?gr:br;return this.attrTween(t,"function"==typeof e?(n.local?Cr:Tr)(n,r,vr(this,"attr."+t,e)):null==e?(n.local?xr:_r)(n):(n.local?kr:wr)(n,r,e))},attrTween:function(t,e){var n="attr."+t;if(arguments.length<2)return(n=this.tween(n))&&n._value;if(null==e)return this.tween(n,null);if("function"!=typeof e)throw new Error;var r=Ct(t);return this.tween(n,(r.local?Ar:Mr)(r,e))},style:function(t,e,n){var r="transform"==(t+="")?pr:br;return null==e?this.styleTween(t,function(t,e){var n,r,i;return function(){var a=Rt(this,t),o=(this.style.removeProperty(t),Rt(this,t));return a===o?null:a===n&&o===r?i:i=e(n=a,r=o)}}(t,r)).on("end.style."+t,Fr(t)):"function"==typeof e?this.styleTween(t,function(t,e,n){var r,i,a;return function(){var o=Rt(this,t),s=n(this),c=s+"";return null==s&&(this.style.removeProperty(t),c=s=Rt(this,t)),o===c?null:o===r&&c===i?a:(i=c,a=e(r=o,s))}}(t,r,vr(this,"style."+t,e))).each(function(t,e){var n,r,i,a,o="style."+e,s="end."+o;return function(){var c=rr(this,t),u=c.on,l=null==c.value[o]?a||(a=Fr(e)):void 0;u===n&&i===l||(r=(n=u).copy()).on(s,i=l),c.on=r}}(this._id,t)):this.styleTween(t,function(t,e,n){var r,i,a=n+"";return function(){var o=Rt(this,t);return o===a?null:o===r?i:i=e(r=o,n)}}(t,r,e),n).on("end.style."+t,null)},styleTween:function(t,e,n){var r="style."+(t+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(null==e)return this.tween(r,null);if("function"!=typeof e)throw new Error;return this.tween(r,Yr(t,e,null==n?"":n))},text:function(t){return this.tween("text","function"==typeof t?function(t){return function(){var e=t(this);this.textContent=null==e?"":e}}(vr(this,"text",t)):function(t){return function(){this.textContent=t}}(null==t?"":t+""))},textTween:function(t){var e="text";if(arguments.length<1)return(e=this.tween(e))&&e._value;if(null==t)return this.tween(e,null);if("function"!=typeof t)throw new Error;return this.tween(e,Ur(t))},remove:function(){return this.on("end.remove",function(t){return function(){var e=this.parentNode;for(var n in this.__transition)if(+n!==t)return;e&&e.removeChild(this)}}(this._id))},tween:function(t,e){var n=this._id;if(t+="",arguments.length<2){for(var r,i=ir(this.node(),n).tween,a=0,o=i.length;a<o;++a)if((r=i[a]).name===t)return r.value;return null}return this.each((null==e?yr:mr)(n,t,e))},delay:function(t){var e=this._id;return arguments.length?this.each(("function"==typeof t?Nr:Dr)(e,t)):ir(this.node(),e).delay},duration:function(t){var e=this._id;return arguments.length?this.each(("function"==typeof t?Br:Lr)(e,t)):ir(this.node(),e).duration},ease:function(t){var e=this._id;return arguments.length?this.each(Or(e,t)):ir(this.node(),e).ease},end:function(){var t,e,n=this,r=n._id,i=n.size();return new Promise((function(a,o){var s={value:o},c={value:function(){0==--i&&a()}};n.each((function(){var n=rr(this,r),i=n.on;i!==t&&((e=(t=i).copy())._.cancel.push(s),e._.interrupt.push(s),e._.end.push(c)),n.on=e}))}))}};var Zr={time:null,delay:0,duration:250,ease:Xr};function Qr(t,e){for(var n;!(n=t.__transition)||!(n=n[e]);)if(!(t=t.parentNode))return Zr.time=qn(),Zr;return n}ke.prototype.interrupt=function(t){return this.each((function(){ar(this,t)}))},ke.prototype.transition=function(t){var e,n;t instanceof $r?(e=t._id,t=t._name):(e=Hr(),(n=Zr).time=qn(),t=null==t?null:t+"");for(var r=this._groups,i=r.length,a=0;a<i;++a)for(var o,s=r[a],c=s.length,u=0;u<c;++u)(o=s[u])&&er(o,t,e,u,s,n||Qr(o,e));return new $r(r,this._parents,t,e)};var Kr=[null];function Jr(t,e){var n,r,i=t.__transition;if(i)for(r in e=null==e?null:e+"",i)if((n=i[r]).state>1&&n.name===e)return new $r([[t]],Kr,e,+r);return null}function ti(t){return function(){return t}}function ei(t,e,n){this.target=t,this.type=e,this.selection=n}function ni(){le.stopImmediatePropagation()}function ri(){le.preventDefault(),le.stopImmediatePropagation()}var ii={name:"drag"},ai={name:"space"},oi={name:"handle"},si={name:"center"};function ci(t){return[+t[0],+t[1]]}function ui(t){return[ci(t[0]),ci(t[1])]}function li(t){return function(e){return Bn(e,le.touches,t)}}var hi={name:"x",handles:["w","e"].map(bi),input:function(t,e){return null==t?null:[[+t[0],e[0][1]],[+t[1],e[1][1]]]},output:function(t){return t&&[t[0][0],t[1][0]]}},fi={name:"y",handles:["n","s"].map(bi),input:function(t,e){return null==t?null:[[e[0][0],+t[0]],[e[1][0],+t[1]]]},output:function(t){return t&&[t[0][1],t[1][1]]}},di={name:"xy",handles:["n","w","e","s","nw","ne","sw","se"].map(bi),input:function(t){return null==t?null:ui(t)},output:function(t){return t}},pi={overlay:"crosshair",selection:"move",n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},gi={e:"w",w:"e",nw:"ne",ne:"nw",se:"sw",sw:"se"},yi={n:"s",s:"n",nw:"sw",ne:"se",se:"ne",sw:"nw"},mi={overlay:1,selection:1,n:null,e:1,s:null,w:-1,nw:-1,ne:1,se:1,sw:-1},vi={overlay:1,selection:1,n:-1,e:null,s:1,w:null,nw:-1,ne:-1,se:1,sw:1};function bi(t){return{type:t}}function _i(){return!le.ctrlKey&&!le.button}function xi(){var t=this.ownerSVGElement||this;return t.hasAttribute("viewBox")?[[(t=t.viewBox.baseVal).x,t.y],[t.x+t.width,t.y+t.height]]:[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]}function wi(){return navigator.maxTouchPoints||"ontouchstart"in this}function ki(t){for(;!t.__brush;)if(!(t=t.parentNode))return;return t.__brush}function Ti(t){return t[0][0]===t[1][0]||t[0][1]===t[1][1]}function Ci(t){var e=t.__brush;return e?e.dim.output(e.selection):null}function Ei(){return Mi(hi)}function Si(){return Mi(fi)}function Ai(){return Mi(di)}function Mi(t){var e,n=xi,r=_i,i=wi,a=!0,o=ft("start","brush","end"),s=6;function c(e){var n=e.property("__brush",g).selectAll(".overlay").data([bi("overlay")]);n.enter().append("rect").attr("class","overlay").attr("pointer-events","all").attr("cursor",pi.overlay).merge(n).each((function(){var t=ki(this).extent;Te(this).attr("x",t[0][0]).attr("y",t[0][1]).attr("width",t[1][0]-t[0][0]).attr("height",t[1][1]-t[0][1])})),e.selectAll(".selection").data([bi("selection")]).enter().append("rect").attr("class","selection").attr("cursor",pi.selection).attr("fill","#777").attr("fill-opacity",.3).attr("stroke","#fff").attr("shape-rendering","crispEdges");var r=e.selectAll(".handle").data(t.handles,(function(t){return t.type}));r.exit().remove(),r.enter().append("rect").attr("class",(function(t){return"handle handle--"+t.type})).attr("cursor",(function(t){return pi[t.type]})),e.each(u).attr("fill","none").attr("pointer-events","all").on("mousedown.brush",f).filter(i).on("touchstart.brush",f).on("touchmove.brush",d).on("touchend.brush touchcancel.brush",p).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function u(){var t=Te(this),e=ki(this).selection;e?(t.selectAll(".selection").style("display",null).attr("x",e[0][0]).attr("y",e[0][1]).attr("width",e[1][0]-e[0][0]).attr("height",e[1][1]-e[0][1]),t.selectAll(".handle").style("display",null).attr("x",(function(t){return"e"===t.type[t.type.length-1]?e[1][0]-s/2:e[0][0]-s/2})).attr("y",(function(t){return"s"===t.type[0]?e[1][1]-s/2:e[0][1]-s/2})).attr("width",(function(t){return"n"===t.type||"s"===t.type?e[1][0]-e[0][0]+s:s})).attr("height",(function(t){return"e"===t.type||"w"===t.type?e[1][1]-e[0][1]+s:s}))):t.selectAll(".selection,.handle").style("display","none").attr("x",null).attr("y",null).attr("width",null).attr("height",null)}function l(t,e,n){var r=t.__brush.emitter;return!r||n&&r.clean?new h(t,e,n):r}function h(t,e,n){this.that=t,this.args=e,this.state=t.__brush,this.active=0,this.clean=n}function f(){if((!e||le.touches)&&r.apply(this,arguments)){var n,i,o,s,c,h,f,d,p,g,y,m=this,v=le.target.__data__.type,b="selection"===(a&&le.metaKey?v="overlay":v)?ii:a&&le.altKey?si:oi,_=t===fi?null:mi[v],x=t===hi?null:vi[v],w=ki(m),k=w.extent,T=w.selection,C=k[0][0],E=k[0][1],S=k[1][0],A=k[1][1],M=0,N=0,D=_&&x&&a&&le.shiftKey,B=le.touches?li(le.changedTouches[0].identifier):Ln,L=B(m),O=L,I=l(m,arguments,!0).beforestart();"overlay"===v?(T&&(p=!0),w.selection=T=[[n=t===fi?C:L[0],o=t===hi?E:L[1]],[c=t===fi?S:n,f=t===hi?A:o]]):(n=T[0][0],o=T[0][1],c=T[1][0],f=T[1][1]),i=n,s=o,h=c,d=f;var R=Te(m).attr("pointer-events","none"),F=R.selectAll(".overlay").attr("cursor",pi[v]);if(le.touches)I.moved=Y,I.ended=U;else{var P=Te(le.view).on("mousemove.brush",Y,!0).on("mouseup.brush",U,!0);a&&P.on("keydown.brush",z,!0).on("keyup.brush",$,!0),Se(le.view)}ni(),ar(m),u.call(m),I.start()}function Y(){var t=B(m);!D||g||y||(Math.abs(t[0]-O[0])>Math.abs(t[1]-O[1])?y=!0:g=!0),O=t,p=!0,ri(),j()}function j(){var t;switch(M=O[0]-L[0],N=O[1]-L[1],b){case ai:case ii:_&&(M=Math.max(C-n,Math.min(S-c,M)),i=n+M,h=c+M),x&&(N=Math.max(E-o,Math.min(A-f,N)),s=o+N,d=f+N);break;case oi:_<0?(M=Math.max(C-n,Math.min(S-n,M)),i=n+M,h=c):_>0&&(M=Math.max(C-c,Math.min(S-c,M)),i=n,h=c+M),x<0?(N=Math.max(E-o,Math.min(A-o,N)),s=o+N,d=f):x>0&&(N=Math.max(E-f,Math.min(A-f,N)),s=o,d=f+N);break;case si:_&&(i=Math.max(C,Math.min(S,n-M*_)),h=Math.max(C,Math.min(S,c+M*_))),x&&(s=Math.max(E,Math.min(A,o-N*x)),d=Math.max(E,Math.min(A,f+N*x)))}h<i&&(_*=-1,t=n,n=c,c=t,t=i,i=h,h=t,v in gi&&F.attr("cursor",pi[v=gi[v]])),d<s&&(x*=-1,t=o,o=f,f=t,t=s,s=d,d=t,v in yi&&F.attr("cursor",pi[v=yi[v]])),w.selection&&(T=w.selection),g&&(i=T[0][0],h=T[1][0]),y&&(s=T[0][1],d=T[1][1]),T[0][0]===i&&T[0][1]===s&&T[1][0]===h&&T[1][1]===d||(w.selection=[[i,s],[h,d]],u.call(m),I.brush())}function U(){if(ni(),le.touches){if(le.touches.length)return;e&&clearTimeout(e),e=setTimeout((function(){e=null}),500)}else Ae(le.view,p),P.on("keydown.brush keyup.brush mousemove.brush mouseup.brush",null);R.attr("pointer-events","all"),F.attr("cursor",pi.overlay),w.selection&&(T=w.selection),Ti(T)&&(w.selection=null,u.call(m)),I.end()}function z(){switch(le.keyCode){case 16:D=_&&x;break;case 18:b===oi&&(_&&(c=h-M*_,n=i+M*_),x&&(f=d-N*x,o=s+N*x),b=si,j());break;case 32:b!==oi&&b!==si||(_<0?c=h-M:_>0&&(n=i-M),x<0?f=d-N:x>0&&(o=s-N),b=ai,F.attr("cursor",pi.selection),j());break;default:return}ri()}function $(){switch(le.keyCode){case 16:D&&(g=y=D=!1,j());break;case 18:b===si&&(_<0?c=h:_>0&&(n=i),x<0?f=d:x>0&&(o=s),b=oi,j());break;case 32:b===ai&&(le.altKey?(_&&(c=h-M*_,n=i+M*_),x&&(f=d-N*x,o=s+N*x),b=si):(_<0?c=h:_>0&&(n=i),x<0?f=d:x>0&&(o=s),b=oi),F.attr("cursor",pi[v]),j());break;default:return}ri()}}function d(){l(this,arguments).moved()}function p(){l(this,arguments).ended()}function g(){var e=this.__brush||{selection:null};return e.extent=ui(n.apply(this,arguments)),e.dim=t,e}return c.move=function(e,n){e.selection?e.on("start.brush",(function(){l(this,arguments).beforestart().start()})).on("interrupt.brush end.brush",(function(){l(this,arguments).end()})).tween("brush",(function(){var e=this,r=e.__brush,i=l(e,arguments),a=r.selection,o=t.input("function"==typeof n?n.apply(this,arguments):n,r.extent),s=Mn(a,o);function c(t){r.selection=1===t&&null===o?null:s(t),u.call(e),i.brush()}return null!==a&&null!==o?c:c(1)})):e.each((function(){var e=this,r=arguments,i=e.__brush,a=t.input("function"==typeof n?n.apply(e,r):n,i.extent),o=l(e,r).beforestart();ar(e),i.selection=null===a?null:a,u.call(e),o.start().brush().end()}))},c.clear=function(t){c.move(t,null)},h.prototype={beforestart:function(){return 1==++this.active&&(this.state.emitter=this,this.starting=!0),this},start:function(){return this.starting?(this.starting=!1,this.emit("start")):this.emit("brush"),this},brush:function(){return this.emit("brush"),this},end:function(){return 0==--this.active&&(delete this.state.emitter,this.emit("end")),this},emit:function(e){ye(new ei(c,e,t.output(this.state.selection)),o.apply,o,[e,this.that,this.args])}},c.extent=function(t){return arguments.length?(n="function"==typeof t?t:ti(ui(t)),c):n},c.filter=function(t){return arguments.length?(r="function"==typeof t?t:ti(!!t),c):r},c.touchable=function(t){return arguments.length?(i="function"==typeof t?t:ti(!!t),c):i},c.handleSize=function(t){return arguments.length?(s=+t,c):s},c.keyModifiers=function(t){return arguments.length?(a=!!t,c):a},c.on=function(){var t=o.on.apply(o,arguments);return t===o?c:t},c}var Ni=Math.cos,Di=Math.sin,Bi=Math.PI,Li=Bi/2,Oi=2*Bi,Ii=Math.max;function Ri(t){return function(e,n){return t(e.source.value+e.target.value,n.source.value+n.target.value)}}function Fi(){var t=0,e=null,n=null,r=null;function i(i){var a,o,s,c,u,l,h=i.length,f=[],d=k(h),p=[],g=[],y=g.groups=new Array(h),m=new Array(h*h);for(a=0,u=-1;++u<h;){for(o=0,l=-1;++l<h;)o+=i[u][l];f.push(o),p.push(k(h)),a+=o}for(e&&d.sort((function(t,n){return e(f[t],f[n])})),n&&p.forEach((function(t,e){t.sort((function(t,r){return n(i[e][t],i[e][r])}))})),c=(a=Ii(0,Oi-t*h)/a)?t:Oi/h,o=0,u=-1;++u<h;){for(s=o,l=-1;++l<h;){var v=d[u],b=p[v][l],_=i[v][b],x=o,w=o+=_*a;m[b*h+v]={index:v,subindex:b,startAngle:x,endAngle:w,value:_}}y[v]={index:v,startAngle:s,endAngle:o,value:f[v]},o+=c}for(u=-1;++u<h;)for(l=u-1;++l<h;){var T=m[l*h+u],C=m[u*h+l];(T.value||C.value)&&g.push(T.value<C.value?{source:C,target:T}:{source:T,target:C})}return r?g.sort(r):g}return i.padAngle=function(e){return arguments.length?(t=Ii(0,e),i):t},i.sortGroups=function(t){return arguments.length?(e=t,i):e},i.sortSubgroups=function(t){return arguments.length?(n=t,i):n},i.sortChords=function(t){return arguments.length?(null==t?r=null:(r=Ri(t))._=t,i):r&&r._},i}var Pi=Array.prototype.slice;function Yi(t){return function(){return t}}var ji=Math.PI,Ui=2*ji,zi=1e-6,$i=Ui-zi;function qi(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function Hi(){return new qi}qi.prototype=Hi.prototype={constructor:qi,moveTo:function(t,e){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)},closePath:function(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},lineTo:function(t,e){this._+="L"+(this._x1=+t)+","+(this._y1=+e)},quadraticCurveTo:function(t,e,n,r){this._+="Q"+ +t+","+ +e+","+(this._x1=+n)+","+(this._y1=+r)},bezierCurveTo:function(t,e,n,r,i,a){this._+="C"+ +t+","+ +e+","+ +n+","+ +r+","+(this._x1=+i)+","+(this._y1=+a)},arcTo:function(t,e,n,r,i){t=+t,e=+e,n=+n,r=+r,i=+i;var a=this._x1,o=this._y1,s=n-t,c=r-e,u=a-t,l=o-e,h=u*u+l*l;if(i<0)throw new Error("negative radius: "+i);if(null===this._x1)this._+="M"+(this._x1=t)+","+(this._y1=e);else if(h>zi)if(Math.abs(l*s-c*u)>zi&&i){var f=n-a,d=r-o,p=s*s+c*c,g=f*f+d*d,y=Math.sqrt(p),m=Math.sqrt(h),v=i*Math.tan((ji-Math.acos((p+h-g)/(2*y*m)))/2),b=v/m,_=v/y;Math.abs(b-1)>zi&&(this._+="L"+(t+b*u)+","+(e+b*l)),this._+="A"+i+","+i+",0,0,"+ +(l*f>u*d)+","+(this._x1=t+_*s)+","+(this._y1=e+_*c)}else this._+="L"+(this._x1=t)+","+(this._y1=e)},arc:function(t,e,n,r,i,a){t=+t,e=+e,a=!!a;var o=(n=+n)*Math.cos(r),s=n*Math.sin(r),c=t+o,u=e+s,l=1^a,h=a?r-i:i-r;if(n<0)throw new Error("negative radius: "+n);null===this._x1?this._+="M"+c+","+u:(Math.abs(this._x1-c)>zi||Math.abs(this._y1-u)>zi)&&(this._+="L"+c+","+u),n&&(h<0&&(h=h%Ui+Ui),h>$i?this._+="A"+n+","+n+",0,1,"+l+","+(t-o)+","+(e-s)+"A"+n+","+n+",0,1,"+l+","+(this._x1=c)+","+(this._y1=u):h>zi&&(this._+="A"+n+","+n+",0,"+ +(h>=ji)+","+l+","+(this._x1=t+n*Math.cos(i))+","+(this._y1=e+n*Math.sin(i))))},rect:function(t,e,n,r){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)+"h"+ +n+"v"+ +r+"h"+-n+"Z"},toString:function(){return this._}};const Wi=Hi;function Vi(t){return t.source}function Gi(t){return t.target}function Xi(t){return t.radius}function Zi(t){return t.startAngle}function Qi(t){return t.endAngle}function Ki(){var t=Vi,e=Gi,n=Xi,r=Zi,i=Qi,a=null;function o(){var o,s=Pi.call(arguments),c=t.apply(this,s),u=e.apply(this,s),l=+n.apply(this,(s[0]=c,s)),h=r.apply(this,s)-Li,f=i.apply(this,s)-Li,d=l*Ni(h),p=l*Di(h),g=+n.apply(this,(s[0]=u,s)),y=r.apply(this,s)-Li,m=i.apply(this,s)-Li;if(a||(a=o=Wi()),a.moveTo(d,p),a.arc(0,0,l,h,f),h===y&&f===m||(a.quadraticCurveTo(0,0,g*Ni(y),g*Di(y)),a.arc(0,0,g,y,m)),a.quadraticCurveTo(0,0,d,p),a.closePath(),o)return a=null,o+""||null}return o.radius=function(t){return arguments.length?(n="function"==typeof t?t:Yi(+t),o):n},o.startAngle=function(t){return arguments.length?(r="function"==typeof t?t:Yi(+t),o):r},o.endAngle=function(t){return arguments.length?(i="function"==typeof t?t:Yi(+t),o):i},o.source=function(e){return arguments.length?(t=e,o):t},o.target=function(t){return arguments.length?(e=t,o):e},o.context=function(t){return arguments.length?(a=null==t?null:t,o):a},o}var Ji="$";function ta(){}function ea(t,e){var n=new ta;if(t instanceof ta)t.each((function(t,e){n.set(e,t)}));else if(Array.isArray(t)){var r,i=-1,a=t.length;if(null==e)for(;++i<a;)n.set(i,t[i]);else for(;++i<a;)n.set(e(r=t[i],i,t),r)}else if(t)for(var o in t)n.set(o,t[o]);return n}ta.prototype=ea.prototype={constructor:ta,has:function(t){return Ji+t in this},get:function(t){return this[Ji+t]},set:function(t,e){return this[Ji+t]=e,this},remove:function(t){var e=Ji+t;return e in this&&delete this[e]},clear:function(){for(var t in this)t[0]===Ji&&delete this[t]},keys:function(){var t=[];for(var e in this)e[0]===Ji&&t.push(e.slice(1));return t},values:function(){var t=[];for(var e in this)e[0]===Ji&&t.push(this[e]);return t},entries:function(){var t=[];for(var e in this)e[0]===Ji&&t.push({key:e.slice(1),value:this[e]});return t},size:function(){var t=0;for(var e in this)e[0]===Ji&&++t;return t},empty:function(){for(var t in this)if(t[0]===Ji)return!1;return!0},each:function(t){for(var e in this)e[0]===Ji&&t(this[e],e.slice(1),this)}};const na=ea;function ra(){var t,e,n,r=[],i=[];function a(n,i,o,s){if(i>=r.length)return null!=t&&n.sort(t),null!=e?e(n):n;for(var c,u,l,h=-1,f=n.length,d=r[i++],p=na(),g=o();++h<f;)(l=p.get(c=d(u=n[h])+""))?l.push(u):p.set(c,[u]);return p.each((function(t,e){s(g,e,a(t,i,o,s))})),g}function o(t,n){if(++n>r.length)return t;var a,s=i[n-1];return null!=e&&n>=r.length?a=t.entries():(a=[],t.each((function(t,e){a.push({key:e,values:o(t,n)})}))),null!=s?a.sort((function(t,e){return s(t.key,e.key)})):a}return n={object:function(t){return a(t,0,ia,aa)},map:function(t){return a(t,0,oa,sa)},entries:function(t){return o(a(t,0,oa,sa),0)},key:function(t){return r.push(t),n},sortKeys:function(t){return i[r.length-1]=t,n},sortValues:function(e){return t=e,n},rollup:function(t){return e=t,n}}}function ia(){return{}}function aa(t,e,n){t[e]=n}function oa(){return na()}function sa(t,e,n){t.set(e,n)}function ca(){}var ua=na.prototype;function la(t,e){var n=new ca;if(t instanceof ca)t.each((function(t){n.add(t)}));else if(t){var r=-1,i=t.length;if(null==e)for(;++r<i;)n.add(t[r]);else for(;++r<i;)n.add(e(t[r],r,t))}return n}ca.prototype=la.prototype={constructor:ca,has:ua.has,add:function(t){return this[Ji+(t+="")]=t,this},remove:ua.remove,clear:ua.clear,values:ua.keys,size:ua.size,empty:ua.empty,each:ua.each};const ha=la;function fa(t){var e=[];for(var n in t)e.push(n);return e}function da(t){var e=[];for(var n in t)e.push(t[n]);return e}function pa(t){var e=[];for(var n in t)e.push({key:n,value:t[n]});return e}var ga=Math.PI/180,ya=180/Math.PI,ma=.96422,va=.82521,ba=4/29,_a=6/29,xa=3*_a*_a;function wa(t){if(t instanceof Ca)return new Ca(t.l,t.a,t.b,t.opacity);if(t instanceof La)return Oa(t);t instanceof Ke||(t=Ze(t));var e,n,r=Ma(t.r),i=Ma(t.g),a=Ma(t.b),o=Ea((.2225045*r+.7168786*i+.0606169*a)/1);return r===i&&i===a?e=n=o:(e=Ea((.4360747*r+.3850649*i+.1430804*a)/ma),n=Ea((.0139322*r+.0971045*i+.7141733*a)/va)),new Ca(116*o-16,500*(e-o),200*(o-n),t.opacity)}function ka(t,e){return new Ca(t,0,0,null==e?1:e)}function Ta(t,e,n,r){return 1===arguments.length?wa(t):new Ca(t,e,n,null==r?1:r)}function Ca(t,e,n,r){this.l=+t,this.a=+e,this.b=+n,this.opacity=+r}function Ea(t){return t>.008856451679035631?Math.pow(t,1/3):t/xa+ba}function Sa(t){return t>_a?t*t*t:xa*(t-ba)}function Aa(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function Ma(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function Na(t){if(t instanceof La)return new La(t.h,t.c,t.l,t.opacity);if(t instanceof Ca||(t=wa(t)),0===t.a&&0===t.b)return new La(NaN,0<t.l&&t.l<100?0:NaN,t.l,t.opacity);var e=Math.atan2(t.b,t.a)*ya;return new La(e<0?e+360:e,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function Da(t,e,n,r){return 1===arguments.length?Na(t):new La(n,e,t,null==r?1:r)}function Ba(t,e,n,r){return 1===arguments.length?Na(t):new La(t,e,n,null==r?1:r)}function La(t,e,n,r){this.h=+t,this.c=+e,this.l=+n,this.opacity=+r}function Oa(t){if(isNaN(t.h))return new Ca(t.l,0,0,t.opacity);var e=t.h*ga;return new Ca(t.l,Math.cos(e)*t.c,Math.sin(e)*t.c,t.opacity)}Me(Ca,Ta,Ne(De,{brighter:function(t){return new Ca(this.l+18*(null==t?1:t),this.a,this.b,this.opacity)},darker:function(t){return new Ca(this.l-18*(null==t?1:t),this.a,this.b,this.opacity)},rgb:function(){var t=(this.l+16)/116,e=isNaN(this.a)?t:t+this.a/500,n=isNaN(this.b)?t:t-this.b/200;return new Ke(Aa(3.1338561*(e=ma*Sa(e))-1.6168667*(t=1*Sa(t))-.4906146*(n=va*Sa(n))),Aa(-.9787684*e+1.9161415*t+.033454*n),Aa(.0719453*e-.2289914*t+1.4052427*n),this.opacity)}})),Me(La,Ba,Ne(De,{brighter:function(t){return new La(this.h,this.c,this.l+18*(null==t?1:t),this.opacity)},darker:function(t){return new La(this.h,this.c,this.l-18*(null==t?1:t),this.opacity)},rgb:function(){return Oa(this).rgb()}}));var Ia=-.14861,Ra=1.78277,Fa=-.29227,Pa=-.90649,Ya=1.97294,ja=Ya*Pa,Ua=Ya*Ra,za=Ra*Fa-Pa*Ia;function $a(t){if(t instanceof Ha)return new Ha(t.h,t.s,t.l,t.opacity);t instanceof Ke||(t=Ze(t));var e=t.r/255,n=t.g/255,r=t.b/255,i=(za*r+ja*e-Ua*n)/(za+ja-Ua),a=r-i,o=(Ya*(n-i)-Fa*a)/Pa,s=Math.sqrt(o*o+a*a)/(Ya*i*(1-i)),c=s?Math.atan2(o,a)*ya-120:NaN;return new Ha(c<0?c+360:c,s,i,t.opacity)}function qa(t,e,n,r){return 1===arguments.length?$a(t):new Ha(t,e,n,null==r?1:r)}function Ha(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}Me(Ha,qa,Ne(De,{brighter:function(t){return t=null==t?Le:Math.pow(Le,t),new Ha(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?Be:Math.pow(Be,t),new Ha(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=isNaN(this.h)?0:(this.h+120)*ga,e=+this.l,n=isNaN(this.s)?0:this.s*e*(1-e),r=Math.cos(t),i=Math.sin(t);return new Ke(255*(e+n*(Ia*r+Ra*i)),255*(e+n*(Fa*r+Pa*i)),255*(e+n*(Ya*r)),this.opacity)}}));var Wa=Array.prototype.slice;function Va(t,e){return t-e}function Ga(t){return function(){return t}}function Xa(t,e){for(var n,r=-1,i=e.length;++r<i;)if(n=Za(t,e[r]))return n;return 0}function Za(t,e){for(var n=e[0],r=e[1],i=-1,a=0,o=t.length,s=o-1;a<o;s=a++){var c=t[a],u=c[0],l=c[1],h=t[s],f=h[0],d=h[1];if(Qa(c,h,e))return 0;l>r!=d>r&&n<(f-u)*(r-l)/(d-l)+u&&(i=-i)}return i}function Qa(t,e,n){var r,i,a,o;return function(t,e,n){return(e[0]-t[0])*(n[1]-t[1])==(n[0]-t[0])*(e[1]-t[1])}(t,e,n)&&(i=t[r=+(t[0]===e[0])],a=n[r],o=e[r],i<=a&&a<=o||o<=a&&a<=i)}function Ka(){}var Ja=[[],[[[1,1.5],[.5,1]]],[[[1.5,1],[1,1.5]]],[[[1.5,1],[.5,1]]],[[[1,.5],[1.5,1]]],[[[1,1.5],[.5,1]],[[1,.5],[1.5,1]]],[[[1,.5],[1,1.5]]],[[[1,.5],[.5,1]]],[[[.5,1],[1,.5]]],[[[1,1.5],[1,.5]]],[[[.5,1],[1,.5]],[[1.5,1],[1,1.5]]],[[[1.5,1],[1,.5]]],[[[.5,1],[1.5,1]]],[[[1,1.5],[1.5,1]]],[[[.5,1],[1,1.5]]],[]];function to(){var t=1,e=1,n=N,r=s;function i(t){var e=n(t);if(Array.isArray(e))e=e.slice().sort(Va);else{var r=m(t),i=r[0],o=r[1];e=M(i,o,e),e=k(Math.floor(i/e)*e,Math.floor(o/e)*e,e)}return e.map((function(e){return a(t,e)}))}function a(n,i){var a=[],s=[];return function(n,r,i){var a,s,c,u,l,h,f=new Array,d=new Array;for(a=s=-1,u=n[0]>=r,Ja[u<<1].forEach(p);++a<t-1;)c=u,u=n[a+1]>=r,Ja[c|u<<1].forEach(p);for(Ja[u<<0].forEach(p);++s<e-1;){for(a=-1,u=n[s*t+t]>=r,l=n[s*t]>=r,Ja[u<<1|l<<2].forEach(p);++a<t-1;)c=u,u=n[s*t+t+a+1]>=r,h=l,l=n[s*t+a+1]>=r,Ja[c|u<<1|l<<2|h<<3].forEach(p);Ja[u|l<<3].forEach(p)}for(a=-1,l=n[s*t]>=r,Ja[l<<2].forEach(p);++a<t-1;)h=l,l=n[s*t+a+1]>=r,Ja[l<<2|h<<3].forEach(p);function p(t){var e,n,r=[t[0][0]+a,t[0][1]+s],c=[t[1][0]+a,t[1][1]+s],u=o(r),l=o(c);(e=d[u])?(n=f[l])?(delete d[e.end],delete f[n.start],e===n?(e.ring.push(c),i(e.ring)):f[e.start]=d[n.end]={start:e.start,end:n.end,ring:e.ring.concat(n.ring)}):(delete d[e.end],e.ring.push(c),d[e.end=l]=e):(e=f[l])?(n=d[u])?(delete f[e.start],delete d[n.end],e===n?(e.ring.push(c),i(e.ring)):f[n.start]=d[e.end]={start:n.start,end:e.end,ring:n.ring.concat(e.ring)}):(delete f[e.start],e.ring.unshift(r),f[e.start=u]=e):f[u]=d[l]={start:u,end:l,ring:[r,c]}}Ja[l<<3].forEach(p)}(n,i,(function(t){r(t,n,i),function(t){for(var e=0,n=t.length,r=t[n-1][1]*t[0][0]-t[n-1][0]*t[0][1];++e<n;)r+=t[e-1][1]*t[e][0]-t[e-1][0]*t[e][1];return r}(t)>0?a.push([t]):s.push(t)})),s.forEach((function(t){for(var e,n=0,r=a.length;n<r;++n)if(-1!==Xa((e=a[n])[0],t))return void e.push(t)})),{type:"MultiPolygon",value:i,coordinates:a}}function o(e){return 2*e[0]+e[1]*(t+1)*4}function s(n,r,i){n.forEach((function(n){var a,o=n[0],s=n[1],c=0|o,u=0|s,l=r[u*t+c];o>0&&o<t&&c===o&&(a=r[u*t+c-1],n[0]=o+(i-a)/(l-a)-.5),s>0&&s<e&&u===s&&(a=r[(u-1)*t+c],n[1]=s+(i-a)/(l-a)-.5)}))}return i.contour=a,i.size=function(n){if(!arguments.length)return[t,e];var r=Math.ceil(n[0]),a=Math.ceil(n[1]);if(!(r>0&&a>0))throw new Error("invalid size");return t=r,e=a,i},i.thresholds=function(t){return arguments.length?(n="function"==typeof t?t:Array.isArray(t)?Ga(Wa.call(t)):Ga(t),i):n},i.smooth=function(t){return arguments.length?(r=t?s:Ka,i):r===s},i}function eo(t,e,n){for(var r=t.width,i=t.height,a=1+(n<<1),o=0;o<i;++o)for(var s=0,c=0;s<r+n;++s)s<r&&(c+=t.data[s+o*r]),s>=n&&(s>=a&&(c-=t.data[s-a+o*r]),e.data[s-n+o*r]=c/Math.min(s+1,r-1+a-s,a))}function no(t,e,n){for(var r=t.width,i=t.height,a=1+(n<<1),o=0;o<r;++o)for(var s=0,c=0;s<i+n;++s)s<i&&(c+=t.data[o+s*r]),s>=n&&(s>=a&&(c-=t.data[o+(s-a)*r]),e.data[o+(s-n)*r]=c/Math.min(s+1,i-1+a-s,a))}function ro(t){return t[0]}function io(t){return t[1]}function ao(){return 1}function oo(){var t=ro,e=io,n=ao,r=960,i=500,a=20,o=2,s=3*a,c=r+2*s>>o,u=i+2*s>>o,l=Ga(20);function h(r){var i=new Float32Array(c*u),h=new Float32Array(c*u);r.forEach((function(r,a,l){var h=+t(r,a,l)+s>>o,f=+e(r,a,l)+s>>o,d=+n(r,a,l);h>=0&&h<c&&f>=0&&f<u&&(i[h+f*c]+=d)})),eo({width:c,height:u,data:i},{width:c,height:u,data:h},a>>o),no({width:c,height:u,data:h},{width:c,height:u,data:i},a>>o),eo({width:c,height:u,data:i},{width:c,height:u,data:h},a>>o),no({width:c,height:u,data:h},{width:c,height:u,data:i},a>>o),eo({width:c,height:u,data:i},{width:c,height:u,data:h},a>>o),no({width:c,height:u,data:h},{width:c,height:u,data:i},a>>o);var d=l(i);if(!Array.isArray(d)){var p=I(i);d=M(0,p,d),(d=k(0,Math.floor(p/d)*d,d)).shift()}return to().thresholds(d).size([c,u])(i).map(f)}function f(t){return t.value*=Math.pow(2,-2*o),t.coordinates.forEach(d),t}function d(t){t.forEach(p)}function p(t){t.forEach(g)}function g(t){t[0]=t[0]*Math.pow(2,o)-s,t[1]=t[1]*Math.pow(2,o)-s}function y(){return c=r+2*(s=3*a)>>o,u=i+2*s>>o,h}return h.x=function(e){return arguments.length?(t="function"==typeof e?e:Ga(+e),h):t},h.y=function(t){return arguments.length?(e="function"==typeof t?t:Ga(+t),h):e},h.weight=function(t){return arguments.length?(n="function"==typeof t?t:Ga(+t),h):n},h.size=function(t){if(!arguments.length)return[r,i];var e=Math.ceil(t[0]),n=Math.ceil(t[1]);if(!(e>=0||e>=0))throw new Error("invalid size");return r=e,i=n,y()},h.cellSize=function(t){if(!arguments.length)return 1<<o;if(!((t=+t)>=1))throw new Error("invalid cell size");return o=Math.floor(Math.log(t)/Math.LN2),y()},h.thresholds=function(t){return arguments.length?(l="function"==typeof t?t:Array.isArray(t)?Ga(Wa.call(t)):Ga(t),h):l},h.bandwidth=function(t){if(!arguments.length)return Math.sqrt(a*(a+1));if(!((t=+t)>=0))throw new Error("invalid bandwidth");return a=Math.round((Math.sqrt(4*t*t+1)-1)/2),y()},h}function so(t){return function(){return t}}function co(t,e,n,r,i,a,o,s,c,u){this.target=t,this.type=e,this.subject=n,this.identifier=r,this.active=i,this.x=a,this.y=o,this.dx=s,this.dy=c,this._=u}function uo(){return!le.ctrlKey&&!le.button}function lo(){return this.parentNode}function ho(t){return null==t?{x:le.x,y:le.y}:t}function fo(){return navigator.maxTouchPoints||"ontouchstart"in this}function po(){var t,e,n,r,i=uo,a=lo,o=ho,s=fo,c={},u=ft("start","drag","end"),l=0,h=0;function f(t){t.on("mousedown.drag",d).filter(s).on("touchstart.drag",y).on("touchmove.drag",m).on("touchend.drag touchcancel.drag",v).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function d(){if(!r&&i.apply(this,arguments)){var o=b("mouse",a.apply(this,arguments),Ln,this,arguments);o&&(Te(le.view).on("mousemove.drag",p,!0).on("mouseup.drag",g,!0),Se(le.view),Ce(),n=!1,t=le.clientX,e=le.clientY,o("start"))}}function p(){if(Ee(),!n){var r=le.clientX-t,i=le.clientY-e;n=r*r+i*i>h}c.mouse("drag")}function g(){Te(le.view).on("mousemove.drag mouseup.drag",null),Ae(le.view,n),Ee(),c.mouse("end")}function y(){if(i.apply(this,arguments)){var t,e,n=le.changedTouches,r=a.apply(this,arguments),o=n.length;for(t=0;t<o;++t)(e=b(n[t].identifier,r,Bn,this,arguments))&&(Ce(),e("start"))}}function m(){var t,e,n=le.changedTouches,r=n.length;for(t=0;t<r;++t)(e=c[n[t].identifier])&&(Ee(),e("drag"))}function v(){var t,e,n=le.changedTouches,i=n.length;for(r&&clearTimeout(r),r=setTimeout((function(){r=null}),500),t=0;t<i;++t)(e=c[n[t].identifier])&&(Ce(),e("end"))}function b(t,e,n,r,i){var a,s,h,d=n(e,t),p=u.copy();if(ye(new co(f,"beforestart",a,t,l,d[0],d[1],0,0,p),(function(){return null!=(le.subject=a=o.apply(r,i))&&(s=a.x-d[0]||0,h=a.y-d[1]||0,!0)})))return function o(u){var g,y=d;switch(u){case"start":c[t]=o,g=l++;break;case"end":delete c[t],--l;case"drag":d=n(e,t),g=l}ye(new co(f,u,a,t,g,d[0]+s,d[1]+h,d[0]-y[0],d[1]-y[1],p),p.apply,p,[u,r,i])}}return f.filter=function(t){return arguments.length?(i="function"==typeof t?t:so(!!t),f):i},f.container=function(t){return arguments.length?(a="function"==typeof t?t:so(t),f):a},f.subject=function(t){return arguments.length?(o="function"==typeof t?t:so(t),f):o},f.touchable=function(t){return arguments.length?(s="function"==typeof t?t:so(!!t),f):s},f.on=function(){var t=u.on.apply(u,arguments);return t===u?f:t},f.clickDistance=function(t){return arguments.length?(h=(t=+t)*t,f):Math.sqrt(h)},f}co.prototype.on=function(){var t=this._.on.apply(this._,arguments);return t===this._?this:t};var go={},yo={};function mo(t){return new Function("d","return {"+t.map((function(t,e){return JSON.stringify(t)+": d["+e+'] || ""'})).join(",")+"}")}function vo(t){var e=Object.create(null),n=[];return t.forEach((function(t){for(var r in t)r in e||n.push(e[r]=r)})),n}function bo(t,e){var n=t+"",r=n.length;return r<e?new Array(e-r+1).join(0)+n:n}function _o(t){var e=new RegExp('["'+t+"\n\r]"),n=t.charCodeAt(0);function r(t,e){var r,i=[],a=t.length,o=0,s=0,c=a<=0,u=!1;function l(){if(c)return yo;if(u)return u=!1,go;var e,r,i=o;if(34===t.charCodeAt(i)){for(;o++<a&&34!==t.charCodeAt(o)||34===t.charCodeAt(++o););return(e=o)>=a?c=!0:10===(r=t.charCodeAt(o++))?u=!0:13===r&&(u=!0,10===t.charCodeAt(o)&&++o),t.slice(i+1,e-1).replace(/""/g,'"')}for(;o<a;){if(10===(r=t.charCodeAt(e=o++)))u=!0;else if(13===r)u=!0,10===t.charCodeAt(o)&&++o;else if(r!==n)continue;return t.slice(i,e)}return c=!0,t.slice(i,a)}for(10===t.charCodeAt(a-1)&&--a,13===t.charCodeAt(a-1)&&--a;(r=l())!==yo;){for(var h=[];r!==go&&r!==yo;)h.push(r),r=l();e&&null==(h=e(h,s++))||i.push(h)}return i}function i(e,n){return e.map((function(e){return n.map((function(t){return o(e[t])})).join(t)}))}function a(e){return e.map(o).join(t)}function o(t){return null==t?"":t instanceof Date?function(t){var e=t.getUTCHours(),n=t.getUTCMinutes(),r=t.getUTCSeconds(),i=t.getUTCMilliseconds();return isNaN(t)?"Invalid Date":function(t){return t<0?"-"+bo(-t,6):t>9999?"+"+bo(t,6):bo(t,4)}(t.getUTCFullYear())+"-"+bo(t.getUTCMonth()+1,2)+"-"+bo(t.getUTCDate(),2)+(i?"T"+bo(e,2)+":"+bo(n,2)+":"+bo(r,2)+"."+bo(i,3)+"Z":r?"T"+bo(e,2)+":"+bo(n,2)+":"+bo(r,2)+"Z":n||e?"T"+bo(e,2)+":"+bo(n,2)+"Z":"")}(t):e.test(t+="")?'"'+t.replace(/"/g,'""')+'"':t}return{parse:function(t,e){var n,i,a=r(t,(function(t,r){if(n)return n(t,r-1);i=t,n=e?function(t,e){var n=mo(t);return function(r,i){return e(n(r),i,t)}}(t,e):mo(t)}));return a.columns=i||[],a},parseRows:r,format:function(e,n){return null==n&&(n=vo(e)),[n.map(o).join(t)].concat(i(e,n)).join("\n")},formatBody:function(t,e){return null==e&&(e=vo(t)),i(t,e).join("\n")},formatRows:function(t){return t.map(a).join("\n")},formatRow:a,formatValue:o}}var xo=_o(","),wo=xo.parse,ko=xo.parseRows,To=xo.format,Co=xo.formatBody,Eo=xo.formatRows,So=xo.formatRow,Ao=xo.formatValue,Mo=_o("\t"),No=Mo.parse,Do=Mo.parseRows,Bo=Mo.format,Lo=Mo.formatBody,Oo=Mo.formatRows,Io=Mo.formatRow,Ro=Mo.formatValue;function Fo(t){for(var e in t){var n,r,i=t[e].trim();if(i)if("true"===i)i=!0;else if("false"===i)i=!1;else if("NaN"===i)i=NaN;else if(isNaN(n=+i)){if(!(r=i.match(/^([-+]\d{2})?\d{4}(-\d{2}(-\d{2})?)?(T\d{2}:\d{2}(:\d{2}(\.\d{3})?)?(Z|[-+]\d{2}:\d{2})?)?$/)))continue;Po&&r[4]&&!r[7]&&(i=i.replace(/-/g,"/").replace(/T/," ")),i=new Date(i)}else i=n;else i=null;t[e]=i}return t}var Po=new Date("2019-01-01T00:00").getHours()||new Date("2019-07-01T00:00").getHours();function Yo(t){return+t}function jo(t){return t*t}function Uo(t){return t*(2-t)}function zo(t){return((t*=2)<=1?t*t:--t*(2-t)+1)/2}var $o=function t(e){function n(t){return Math.pow(t,e)}return e=+e,n.exponent=t,n}(3),qo=function t(e){function n(t){return 1-Math.pow(1-t,e)}return e=+e,n.exponent=t,n}(3),Ho=function t(e){function n(t){return((t*=2)<=1?Math.pow(t,e):2-Math.pow(2-t,e))/2}return e=+e,n.exponent=t,n}(3),Wo=Math.PI,Vo=Wo/2;function Go(t){return 1==+t?1:1-Math.cos(t*Vo)}function Xo(t){return Math.sin(t*Vo)}function Zo(t){return(1-Math.cos(Wo*t))/2}function Qo(t){return 1.0009775171065494*(Math.pow(2,-10*t)-.0009765625)}function Ko(t){return Qo(1-+t)}function Jo(t){return 1-Qo(t)}function ts(t){return((t*=2)<=1?Qo(1-t):2-Qo(t-1))/2}function es(t){return 1-Math.sqrt(1-t*t)}function ns(t){return Math.sqrt(1- --t*t)}function rs(t){return((t*=2)<=1?1-Math.sqrt(1-t*t):Math.sqrt(1-(t-=2)*t)+1)/2}var is=7.5625;function as(t){return 1-os(1-t)}function os(t){return(t=+t)<.36363636363636365?is*t*t:t<.7272727272727273?is*(t-=.5454545454545454)*t+.75:t<.9090909090909091?is*(t-=.8181818181818182)*t+.9375:is*(t-=.9545454545454546)*t+.984375}function ss(t){return((t*=2)<=1?1-os(1-t):os(t-1)+1)/2}var cs=1.70158,us=function t(e){function n(t){return(t=+t)*t*(e*(t-1)+t)}return e=+e,n.overshoot=t,n}(cs),ls=function t(e){function n(t){return--t*t*((t+1)*e+t)+1}return e=+e,n.overshoot=t,n}(cs),hs=function t(e){function n(t){return((t*=2)<1?t*t*((e+1)*t-e):(t-=2)*t*((e+1)*t+e)+2)/2}return e=+e,n.overshoot=t,n}(cs),fs=2*Math.PI,ds=function t(e,n){var r=Math.asin(1/(e=Math.max(1,e)))*(n/=fs);function i(t){return e*Qo(- --t)*Math.sin((r-t)/n)}return i.amplitude=function(e){return t(e,n*fs)},i.period=function(n){return t(e,n)},i}(1,.3),ps=function t(e,n){var r=Math.asin(1/(e=Math.max(1,e)))*(n/=fs);function i(t){return 1-e*Qo(t=+t)*Math.sin((t+r)/n)}return i.amplitude=function(e){return t(e,n*fs)},i.period=function(n){return t(e,n)},i}(1,.3),gs=function t(e,n){var r=Math.asin(1/(e=Math.max(1,e)))*(n/=fs);function i(t){return((t=2*t-1)<0?e*Qo(-t)*Math.sin((r-t)/n):2-e*Qo(t)*Math.sin((r+t)/n))/2}return i.amplitude=function(e){return t(e,n*fs)},i.period=function(n){return t(e,n)},i}(1,.3);function ys(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);return t.blob()}function ms(t,e){return fetch(t,e).then(ys)}function vs(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);return t.arrayBuffer()}function bs(t,e){return fetch(t,e).then(vs)}function _s(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);return t.text()}function xs(t,e){return fetch(t,e).then(_s)}function ws(t){return function(e,n,r){return 2===arguments.length&&"function"==typeof n&&(r=n,n=void 0),xs(e,n).then((function(e){return t(e,r)}))}}function ks(t,e,n,r){3===arguments.length&&"function"==typeof n&&(r=n,n=void 0);var i=_o(t);return xs(e,n).then((function(t){return i.parse(t,r)}))}var Ts=ws(wo),Cs=ws(No);function Es(t,e){return new Promise((function(n,r){var i=new Image;for(var a in e)i[a]=e[a];i.onerror=r,i.onload=function(){n(i)},i.src=t}))}function Ss(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);if(204!==t.status&&205!==t.status)return t.json()}function As(t,e){return fetch(t,e).then(Ss)}function Ms(t){return function(e,n){return xs(e,n).then((function(e){return(new DOMParser).parseFromString(e,t)}))}}const Ns=Ms("application/xml");var Ds=Ms("text/html"),Bs=Ms("image/svg+xml");function Ls(t,e){var n;function r(){var r,i,a=n.length,o=0,s=0;for(r=0;r<a;++r)o+=(i=n[r]).x,s+=i.y;for(o=o/a-t,s=s/a-e,r=0;r<a;++r)(i=n[r]).x-=o,i.y-=s}return null==t&&(t=0),null==e&&(e=0),r.initialize=function(t){n=t},r.x=function(e){return arguments.length?(t=+e,r):t},r.y=function(t){return arguments.length?(e=+t,r):e},r}function Os(t){return function(){return t}}function Is(){return 1e-6*(Math.random()-.5)}function Rs(t,e,n,r){if(isNaN(e)||isNaN(n))return t;var i,a,o,s,c,u,l,h,f,d=t._root,p={data:r},g=t._x0,y=t._y0,m=t._x1,v=t._y1;if(!d)return t._root=p,t;for(;d.length;)if((u=e>=(a=(g+m)/2))?g=a:m=a,(l=n>=(o=(y+v)/2))?y=o:v=o,i=d,!(d=d[h=l<<1|u]))return i[h]=p,t;if(s=+t._x.call(null,d.data),c=+t._y.call(null,d.data),e===s&&n===c)return p.next=d,i?i[h]=p:t._root=p,t;do{i=i?i[h]=new Array(4):t._root=new Array(4),(u=e>=(a=(g+m)/2))?g=a:m=a,(l=n>=(o=(y+v)/2))?y=o:v=o}while((h=l<<1|u)==(f=(c>=o)<<1|s>=a));return i[f]=d,i[h]=p,t}function Fs(t,e,n,r,i){this.node=t,this.x0=e,this.y0=n,this.x1=r,this.y1=i}function Ps(t){return t[0]}function Ys(t){return t[1]}function js(t,e,n){var r=new Us(null==e?Ps:e,null==n?Ys:n,NaN,NaN,NaN,NaN);return null==t?r:r.addAll(t)}function Us(t,e,n,r,i,a){this._x=t,this._y=e,this._x0=n,this._y0=r,this._x1=i,this._y1=a,this._root=void 0}function zs(t){for(var e={data:t.data},n=e;t=t.next;)n=n.next={data:t.data};return e}var $s=js.prototype=Us.prototype;function qs(t){return t.x+t.vx}function Hs(t){return t.y+t.vy}function Ws(t){var e,n,r=1,i=1;function a(){for(var t,a,s,c,u,l,h,f=e.length,d=0;d<i;++d)for(a=js(e,qs,Hs).visitAfter(o),t=0;t<f;++t)s=e[t],l=n[s.index],h=l*l,c=s.x+s.vx,u=s.y+s.vy,a.visit(p);function p(t,e,n,i,a){var o=t.data,f=t.r,d=l+f;if(!o)return e>c+d||i<c-d||n>u+d||a<u-d;if(o.index>s.index){var p=c-o.x-o.vx,g=u-o.y-o.vy,y=p*p+g*g;y<d*d&&(0===p&&(y+=(p=Is())*p),0===g&&(y+=(g=Is())*g),y=(d-(y=Math.sqrt(y)))/y*r,s.vx+=(p*=y)*(d=(f*=f)/(h+f)),s.vy+=(g*=y)*d,o.vx-=p*(d=1-d),o.vy-=g*d)}}}function o(t){if(t.data)return t.r=n[t.data.index];for(var e=t.r=0;e<4;++e)t[e]&&t[e].r>t.r&&(t.r=t[e].r)}function s(){if(e){var r,i,a=e.length;for(n=new Array(a),r=0;r<a;++r)i=e[r],n[i.index]=+t(i,r,e)}}return"function"!=typeof t&&(t=Os(null==t?1:+t)),a.initialize=function(t){e=t,s()},a.iterations=function(t){return arguments.length?(i=+t,a):i},a.strength=function(t){return arguments.length?(r=+t,a):r},a.radius=function(e){return arguments.length?(t="function"==typeof e?e:Os(+e),s(),a):t},a}function Vs(t){return t.index}function Gs(t,e){var n=t.get(e);if(!n)throw new Error("missing: "+e);return n}function Xs(t){var e,n,r,i,a,o=Vs,s=function(t){return 1/Math.min(i[t.source.index],i[t.target.index])},c=Os(30),u=1;function l(r){for(var i=0,o=t.length;i<u;++i)for(var s,c,l,h,f,d,p,g=0;g<o;++g)c=(s=t[g]).source,h=(l=s.target).x+l.vx-c.x-c.vx||Is(),f=l.y+l.vy-c.y-c.vy||Is(),h*=d=((d=Math.sqrt(h*h+f*f))-n[g])/d*r*e[g],f*=d,l.vx-=h*(p=a[g]),l.vy-=f*p,c.vx+=h*(p=1-p),c.vy+=f*p}function h(){if(r){var s,c,u=r.length,l=t.length,h=na(r,o);for(s=0,i=new Array(u);s<l;++s)(c=t[s]).index=s,"object"!=typeof c.source&&(c.source=Gs(h,c.source)),"object"!=typeof c.target&&(c.target=Gs(h,c.target)),i[c.source.index]=(i[c.source.index]||0)+1,i[c.target.index]=(i[c.target.index]||0)+1;for(s=0,a=new Array(l);s<l;++s)c=t[s],a[s]=i[c.source.index]/(i[c.source.index]+i[c.target.index]);e=new Array(l),f(),n=new Array(l),d()}}function f(){if(r)for(var n=0,i=t.length;n<i;++n)e[n]=+s(t[n],n,t)}function d(){if(r)for(var e=0,i=t.length;e<i;++e)n[e]=+c(t[e],e,t)}return null==t&&(t=[]),l.initialize=function(t){r=t,h()},l.links=function(e){return arguments.length?(t=e,h(),l):t},l.id=function(t){return arguments.length?(o=t,l):o},l.iterations=function(t){return arguments.length?(u=+t,l):u},l.strength=function(t){return arguments.length?(s="function"==typeof t?t:Os(+t),f(),l):s},l.distance=function(t){return arguments.length?(c="function"==typeof t?t:Os(+t),d(),l):c},l}function Zs(t){return t.x}function Qs(t){return t.y}$s.copy=function(){var t,e,n=new Us(this._x,this._y,this._x0,this._y0,this._x1,this._y1),r=this._root;if(!r)return n;if(!r.length)return n._root=zs(r),n;for(t=[{source:r,target:n._root=new Array(4)}];r=t.pop();)for(var i=0;i<4;++i)(e=r.source[i])&&(e.length?t.push({source:e,target:r.target[i]=new Array(4)}):r.target[i]=zs(e));return n},$s.add=function(t){var e=+this._x.call(null,t),n=+this._y.call(null,t);return Rs(this.cover(e,n),e,n,t)},$s.addAll=function(t){var e,n,r,i,a=t.length,o=new Array(a),s=new Array(a),c=1/0,u=1/0,l=-1/0,h=-1/0;for(n=0;n<a;++n)isNaN(r=+this._x.call(null,e=t[n]))||isNaN(i=+this._y.call(null,e))||(o[n]=r,s[n]=i,r<c&&(c=r),r>l&&(l=r),i<u&&(u=i),i>h&&(h=i));if(c>l||u>h)return this;for(this.cover(c,u).cover(l,h),n=0;n<a;++n)Rs(this,o[n],s[n],t[n]);return this},$s.cover=function(t,e){if(isNaN(t=+t)||isNaN(e=+e))return this;var n=this._x0,r=this._y0,i=this._x1,a=this._y1;if(isNaN(n))i=(n=Math.floor(t))+1,a=(r=Math.floor(e))+1;else{for(var o,s,c=i-n,u=this._root;n>t||t>=i||r>e||e>=a;)switch(s=(e<r)<<1|t<n,(o=new Array(4))[s]=u,u=o,c*=2,s){case 0:i=n+c,a=r+c;break;case 1:n=i-c,a=r+c;break;case 2:i=n+c,r=a-c;break;case 3:n=i-c,r=a-c}this._root&&this._root.length&&(this._root=u)}return this._x0=n,this._y0=r,this._x1=i,this._y1=a,this},$s.data=function(){var t=[];return this.visit((function(e){if(!e.length)do{t.push(e.data)}while(e=e.next)})),t},$s.extent=function(t){return arguments.length?this.cover(+t[0][0],+t[0][1]).cover(+t[1][0],+t[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]},$s.find=function(t,e,n){var r,i,a,o,s,c,u,l=this._x0,h=this._y0,f=this._x1,d=this._y1,p=[],g=this._root;for(g&&p.push(new Fs(g,l,h,f,d)),null==n?n=1/0:(l=t-n,h=e-n,f=t+n,d=e+n,n*=n);c=p.pop();)if(!(!(g=c.node)||(i=c.x0)>f||(a=c.y0)>d||(o=c.x1)<l||(s=c.y1)<h))if(g.length){var y=(i+o)/2,m=(a+s)/2;p.push(new Fs(g[3],y,m,o,s),new Fs(g[2],i,m,y,s),new Fs(g[1],y,a,o,m),new Fs(g[0],i,a,y,m)),(u=(e>=m)<<1|t>=y)&&(c=p[p.length-1],p[p.length-1]=p[p.length-1-u],p[p.length-1-u]=c)}else{var v=t-+this._x.call(null,g.data),b=e-+this._y.call(null,g.data),_=v*v+b*b;if(_<n){var x=Math.sqrt(n=_);l=t-x,h=e-x,f=t+x,d=e+x,r=g.data}}return r},$s.remove=function(t){if(isNaN(a=+this._x.call(null,t))||isNaN(o=+this._y.call(null,t)))return this;var e,n,r,i,a,o,s,c,u,l,h,f,d=this._root,p=this._x0,g=this._y0,y=this._x1,m=this._y1;if(!d)return this;if(d.length)for(;;){if((u=a>=(s=(p+y)/2))?p=s:y=s,(l=o>=(c=(g+m)/2))?g=c:m=c,e=d,!(d=d[h=l<<1|u]))return this;if(!d.length)break;(e[h+1&3]||e[h+2&3]||e[h+3&3])&&(n=e,f=h)}for(;d.data!==t;)if(r=d,!(d=d.next))return this;return(i=d.next)&&delete d.next,r?(i?r.next=i:delete r.next,this):e?(i?e[h]=i:delete e[h],(d=e[0]||e[1]||e[2]||e[3])&&d===(e[3]||e[2]||e[1]||e[0])&&!d.length&&(n?n[f]=d:this._root=d),this):(this._root=i,this)},$s.removeAll=function(t){for(var e=0,n=t.length;e<n;++e)this.remove(t[e]);return this},$s.root=function(){return this._root},$s.size=function(){var t=0;return this.visit((function(e){if(!e.length)do{++t}while(e=e.next)})),t},$s.visit=function(t){var e,n,r,i,a,o,s=[],c=this._root;for(c&&s.push(new Fs(c,this._x0,this._y0,this._x1,this._y1));e=s.pop();)if(!t(c=e.node,r=e.x0,i=e.y0,a=e.x1,o=e.y1)&&c.length){var u=(r+a)/2,l=(i+o)/2;(n=c[3])&&s.push(new Fs(n,u,l,a,o)),(n=c[2])&&s.push(new Fs(n,r,l,u,o)),(n=c[1])&&s.push(new Fs(n,u,i,a,l)),(n=c[0])&&s.push(new Fs(n,r,i,u,l))}return this},$s.visitAfter=function(t){var e,n=[],r=[];for(this._root&&n.push(new Fs(this._root,this._x0,this._y0,this._x1,this._y1));e=n.pop();){var i=e.node;if(i.length){var a,o=e.x0,s=e.y0,c=e.x1,u=e.y1,l=(o+c)/2,h=(s+u)/2;(a=i[0])&&n.push(new Fs(a,o,s,l,h)),(a=i[1])&&n.push(new Fs(a,l,s,c,h)),(a=i[2])&&n.push(new Fs(a,o,h,l,u)),(a=i[3])&&n.push(new Fs(a,l,h,c,u))}r.push(e)}for(;e=r.pop();)t(e.node,e.x0,e.y0,e.x1,e.y1);return this},$s.x=function(t){return arguments.length?(this._x=t,this):this._x},$s.y=function(t){return arguments.length?(this._y=t,this):this._y};var Ks=Math.PI*(3-Math.sqrt(5));function Js(t){var e,n=1,r=.001,i=1-Math.pow(r,1/300),a=0,o=.6,s=na(),c=Vn(l),u=ft("tick","end");function l(){h(),u.call("tick",e),n<r&&(c.stop(),u.call("end",e))}function h(r){var c,u,l=t.length;void 0===r&&(r=1);for(var h=0;h<r;++h)for(n+=(a-n)*i,s.each((function(t){t(n)})),c=0;c<l;++c)null==(u=t[c]).fx?u.x+=u.vx*=o:(u.x=u.fx,u.vx=0),null==u.fy?u.y+=u.vy*=o:(u.y=u.fy,u.vy=0);return e}function f(){for(var e,n=0,r=t.length;n<r;++n){if((e=t[n]).index=n,null!=e.fx&&(e.x=e.fx),null!=e.fy&&(e.y=e.fy),isNaN(e.x)||isNaN(e.y)){var i=10*Math.sqrt(n),a=n*Ks;e.x=i*Math.cos(a),e.y=i*Math.sin(a)}(isNaN(e.vx)||isNaN(e.vy))&&(e.vx=e.vy=0)}}function d(e){return e.initialize&&e.initialize(t),e}return null==t&&(t=[]),f(),e={tick:h,restart:function(){return c.restart(l),e},stop:function(){return c.stop(),e},nodes:function(n){return arguments.length?(t=n,f(),s.each(d),e):t},alpha:function(t){return arguments.length?(n=+t,e):n},alphaMin:function(t){return arguments.length?(r=+t,e):r},alphaDecay:function(t){return arguments.length?(i=+t,e):+i},alphaTarget:function(t){return arguments.length?(a=+t,e):a},velocityDecay:function(t){return arguments.length?(o=1-t,e):1-o},force:function(t,n){return arguments.length>1?(null==n?s.remove(t):s.set(t,d(n)),e):s.get(t)},find:function(e,n,r){var i,a,o,s,c,u=0,l=t.length;for(null==r?r=1/0:r*=r,u=0;u<l;++u)(o=(i=e-(s=t[u]).x)*i+(a=n-s.y)*a)<r&&(c=s,r=o);return c},on:function(t,n){return arguments.length>1?(u.on(t,n),e):u.on(t)}}}function tc(){var t,e,n,r,i=Os(-30),a=1,o=1/0,s=.81;function c(r){var i,a=t.length,o=js(t,Zs,Qs).visitAfter(l);for(n=r,i=0;i<a;++i)e=t[i],o.visit(h)}function u(){if(t){var e,n,a=t.length;for(r=new Array(a),e=0;e<a;++e)n=t[e],r[n.index]=+i(n,e,t)}}function l(t){var e,n,i,a,o,s=0,c=0;if(t.length){for(i=a=o=0;o<4;++o)(e=t[o])&&(n=Math.abs(e.value))&&(s+=e.value,c+=n,i+=n*e.x,a+=n*e.y);t.x=i/c,t.y=a/c}else{(e=t).x=e.data.x,e.y=e.data.y;do{s+=r[e.data.index]}while(e=e.next)}t.value=s}function h(t,i,c,u){if(!t.value)return!0;var l=t.x-e.x,h=t.y-e.y,f=u-i,d=l*l+h*h;if(f*f/s<d)return d<o&&(0===l&&(d+=(l=Is())*l),0===h&&(d+=(h=Is())*h),d<a&&(d=Math.sqrt(a*d)),e.vx+=l*t.value*n/d,e.vy+=h*t.value*n/d),!0;if(!(t.length||d>=o)){(t.data!==e||t.next)&&(0===l&&(d+=(l=Is())*l),0===h&&(d+=(h=Is())*h),d<a&&(d=Math.sqrt(a*d)));do{t.data!==e&&(f=r[t.data.index]*n/d,e.vx+=l*f,e.vy+=h*f)}while(t=t.next)}}return c.initialize=function(e){t=e,u()},c.strength=function(t){return arguments.length?(i="function"==typeof t?t:Os(+t),u(),c):i},c.distanceMin=function(t){return arguments.length?(a=t*t,c):Math.sqrt(a)},c.distanceMax=function(t){return arguments.length?(o=t*t,c):Math.sqrt(o)},c.theta=function(t){return arguments.length?(s=t*t,c):Math.sqrt(s)},c}function ec(t,e,n){var r,i,a,o=Os(.1);function s(t){for(var o=0,s=r.length;o<s;++o){var c=r[o],u=c.x-e||1e-6,l=c.y-n||1e-6,h=Math.sqrt(u*u+l*l),f=(a[o]-h)*i[o]*t/h;c.vx+=u*f,c.vy+=l*f}}function c(){if(r){var e,n=r.length;for(i=new Array(n),a=new Array(n),e=0;e<n;++e)a[e]=+t(r[e],e,r),i[e]=isNaN(a[e])?0:+o(r[e],e,r)}}return"function"!=typeof t&&(t=Os(+t)),null==e&&(e=0),null==n&&(n=0),s.initialize=function(t){r=t,c()},s.strength=function(t){return arguments.length?(o="function"==typeof t?t:Os(+t),c(),s):o},s.radius=function(e){return arguments.length?(t="function"==typeof e?e:Os(+e),c(),s):t},s.x=function(t){return arguments.length?(e=+t,s):e},s.y=function(t){return arguments.length?(n=+t,s):n},s}function nc(t){var e,n,r,i=Os(.1);function a(t){for(var i,a=0,o=e.length;a<o;++a)(i=e[a]).vx+=(r[a]-i.x)*n[a]*t}function o(){if(e){var a,o=e.length;for(n=new Array(o),r=new Array(o),a=0;a<o;++a)n[a]=isNaN(r[a]=+t(e[a],a,e))?0:+i(e[a],a,e)}}return"function"!=typeof t&&(t=Os(null==t?0:+t)),a.initialize=function(t){e=t,o()},a.strength=function(t){return arguments.length?(i="function"==typeof t?t:Os(+t),o(),a):i},a.x=function(e){return arguments.length?(t="function"==typeof e?e:Os(+e),o(),a):t},a}function rc(t){var e,n,r,i=Os(.1);function a(t){for(var i,a=0,o=e.length;a<o;++a)(i=e[a]).vy+=(r[a]-i.y)*n[a]*t}function o(){if(e){var a,o=e.length;for(n=new Array(o),r=new Array(o),a=0;a<o;++a)n[a]=isNaN(r[a]=+t(e[a],a,e))?0:+i(e[a],a,e)}}return"function"!=typeof t&&(t=Os(null==t?0:+t)),a.initialize=function(t){e=t,o()},a.strength=function(t){return arguments.length?(i="function"==typeof t?t:Os(+t),o(),a):i},a.y=function(e){return arguments.length?(t="function"==typeof e?e:Os(+e),o(),a):t},a}function ic(t,e){if((n=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var n,r=t.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+t.slice(n+1)]}function ac(t){return(t=ic(Math.abs(t)))?t[1]:NaN}var oc,sc=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function cc(t){if(!(e=sc.exec(t)))throw new Error("invalid format: "+t);var e;return new uc({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}function uc(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}function lc(t,e){var n=ic(t,e);if(!n)return t+"";var r=n[0],i=n[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}cc.prototype=uc.prototype,uc.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};const hc={"%":function(t,e){return(100*t).toFixed(e)},b:function(t){return Math.round(t).toString(2)},c:function(t){return t+""},d:function(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)},e:function(t,e){return t.toExponential(e)},f:function(t,e){return t.toFixed(e)},g:function(t,e){return t.toPrecision(e)},o:function(t){return Math.round(t).toString(8)},p:function(t,e){return lc(100*t,e)},r:lc,s:function(t,e){var n=ic(t,e);if(!n)return t+"";var r=n[0],i=n[1],a=i-(oc=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,o=r.length;return a===o?r:a>o?r+new Array(a-o+1).join("0"):a>0?r.slice(0,a)+"."+r.slice(a):"0."+new Array(1-a).join("0")+ic(t,Math.max(0,e+a-1))[0]},X:function(t){return Math.round(t).toString(16).toUpperCase()},x:function(t){return Math.round(t).toString(16)}};function fc(t){return t}var dc,pc,gc,yc=Array.prototype.map,mc=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function vc(t){var e,n,r=void 0===t.grouping||void 0===t.thousands?fc:(e=yc.call(t.grouping,Number),n=t.thousands+"",function(t,r){for(var i=t.length,a=[],o=0,s=e[0],c=0;i>0&&s>0&&(c+s+1>r&&(s=Math.max(1,r-c)),a.push(t.substring(i-=s,i+s)),!((c+=s+1)>r));)s=e[o=(o+1)%e.length];return a.reverse().join(n)}),i=void 0===t.currency?"":t.currency[0]+"",a=void 0===t.currency?"":t.currency[1]+"",o=void 0===t.decimal?".":t.decimal+"",s=void 0===t.numerals?fc:function(t){return function(e){return e.replace(/[0-9]/g,(function(e){return t[+e]}))}}(yc.call(t.numerals,String)),c=void 0===t.percent?"%":t.percent+"",u=void 0===t.minus?"-":t.minus+"",l=void 0===t.nan?"NaN":t.nan+"";function h(t){var e=(t=cc(t)).fill,n=t.align,h=t.sign,f=t.symbol,d=t.zero,p=t.width,g=t.comma,y=t.precision,m=t.trim,v=t.type;"n"===v?(g=!0,v="g"):hc[v]||(void 0===y&&(y=12),m=!0,v="g"),(d||"0"===e&&"="===n)&&(d=!0,e="0",n="=");var b="$"===f?i:"#"===f&&/[boxX]/.test(v)?"0"+v.toLowerCase():"",_="$"===f?a:/[%p]/.test(v)?c:"",x=hc[v],w=/[defgprs%]/.test(v);function k(t){var i,a,c,f=b,k=_;if("c"===v)k=x(t)+k,t="";else{var T=(t=+t)<0||1/t<0;if(t=isNaN(t)?l:x(Math.abs(t),y),m&&(t=function(t){t:for(var e,n=t.length,r=1,i=-1;r<n;++r)switch(t[r]){case".":i=e=r;break;case"0":0===i&&(i=r),e=r;break;default:if(!+t[r])break t;i>0&&(i=0)}return i>0?t.slice(0,i)+t.slice(e+1):t}(t)),T&&0==+t&&"+"!==h&&(T=!1),f=(T?"("===h?h:u:"-"===h||"("===h?"":h)+f,k=("s"===v?mc[8+oc/3]:"")+k+(T&&"("===h?")":""),w)for(i=-1,a=t.length;++i<a;)if(48>(c=t.charCodeAt(i))||c>57){k=(46===c?o+t.slice(i+1):t.slice(i))+k,t=t.slice(0,i);break}}g&&!d&&(t=r(t,1/0));var C=f.length+t.length+k.length,E=C<p?new Array(p-C+1).join(e):"";switch(g&&d&&(t=r(E+t,E.length?p-k.length:1/0),E=""),n){case"<":t=f+t+k+E;break;case"=":t=f+E+t+k;break;case"^":t=E.slice(0,C=E.length>>1)+f+t+k+E.slice(C);break;default:t=E+f+t+k}return s(t)}return y=void 0===y?6:/[gprs]/.test(v)?Math.max(1,Math.min(21,y)):Math.max(0,Math.min(20,y)),k.toString=function(){return t+""},k}return{format:h,formatPrefix:function(t,e){var n=h(((t=cc(t)).type="f",t)),r=3*Math.max(-8,Math.min(8,Math.floor(ac(e)/3))),i=Math.pow(10,-r),a=mc[8+r/3];return function(t){return n(i*t)+a}}}}function bc(t){return dc=vc(t),pc=dc.format,gc=dc.formatPrefix,dc}function _c(t){return Math.max(0,-ac(Math.abs(t)))}function xc(t,e){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(ac(e)/3)))-ac(Math.abs(t)))}function wc(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,ac(e)-ac(t))+1}function kc(){return new Tc}function Tc(){this.reset()}bc({decimal:".",thousands:",",grouping:[3],currency:["$",""],minus:"-"}),Tc.prototype={constructor:Tc,reset:function(){this.s=this.t=0},add:function(t){Ec(Cc,t,this.t),Ec(this,Cc.s,this.s),this.s?this.t+=Cc.t:this.s=Cc.t},valueOf:function(){return this.s}};var Cc=new Tc;function Ec(t,e,n){var r=t.s=e+n,i=r-e,a=r-i;t.t=e-a+(n-i)}var Sc=1e-6,Ac=1e-12,Mc=Math.PI,Nc=Mc/2,Dc=Mc/4,Bc=2*Mc,Lc=180/Mc,Oc=Mc/180,Ic=Math.abs,Rc=Math.atan,Fc=Math.atan2,Pc=Math.cos,Yc=Math.ceil,jc=Math.exp,Uc=(Math.floor,Math.log),zc=Math.pow,$c=Math.sin,qc=Math.sign||function(t){return t>0?1:t<0?-1:0},Hc=Math.sqrt,Wc=Math.tan;function Vc(t){return t>1?0:t<-1?Mc:Math.acos(t)}function Gc(t){return t>1?Nc:t<-1?-Nc:Math.asin(t)}function Xc(t){return(t=$c(t/2))*t}function Zc(){}function Qc(t,e){t&&Jc.hasOwnProperty(t.type)&&Jc[t.type](t,e)}var Kc={Feature:function(t,e){Qc(t.geometry,e)},FeatureCollection:function(t,e){for(var n=t.features,r=-1,i=n.length;++r<i;)Qc(n[r].geometry,e)}},Jc={Sphere:function(t,e){e.sphere()},Point:function(t,e){t=t.coordinates,e.point(t[0],t[1],t[2])},MultiPoint:function(t,e){for(var n=t.coordinates,r=-1,i=n.length;++r<i;)t=n[r],e.point(t[0],t[1],t[2])},LineString:function(t,e){tu(t.coordinates,e,0)},MultiLineString:function(t,e){for(var n=t.coordinates,r=-1,i=n.length;++r<i;)tu(n[r],e,0)},Polygon:function(t,e){eu(t.coordinates,e)},MultiPolygon:function(t,e){for(var n=t.coordinates,r=-1,i=n.length;++r<i;)eu(n[r],e)},GeometryCollection:function(t,e){for(var n=t.geometries,r=-1,i=n.length;++r<i;)Qc(n[r],e)}};function tu(t,e,n){var r,i=-1,a=t.length-n;for(e.lineStart();++i<a;)r=t[i],e.point(r[0],r[1],r[2]);e.lineEnd()}function eu(t,e){var n=-1,r=t.length;for(e.polygonStart();++n<r;)tu(t[n],e,1);e.polygonEnd()}function nu(t,e){t&&Kc.hasOwnProperty(t.type)?Kc[t.type](t,e):Qc(t,e)}var ru,iu,au,ou,su,cu=kc(),uu=kc(),lu={point:Zc,lineStart:Zc,lineEnd:Zc,polygonStart:function(){cu.reset(),lu.lineStart=hu,lu.lineEnd=fu},polygonEnd:function(){var t=+cu;uu.add(t<0?Bc+t:t),this.lineStart=this.lineEnd=this.point=Zc},sphere:function(){uu.add(Bc)}};function hu(){lu.point=du}function fu(){pu(ru,iu)}function du(t,e){lu.point=pu,ru=t,iu=e,au=t*=Oc,ou=Pc(e=(e*=Oc)/2+Dc),su=$c(e)}function pu(t,e){var n=(t*=Oc)-au,r=n>=0?1:-1,i=r*n,a=Pc(e=(e*=Oc)/2+Dc),o=$c(e),s=su*o,c=ou*a+s*Pc(i),u=s*r*$c(i);cu.add(Fc(u,c)),au=t,ou=a,su=o}function gu(t){return uu.reset(),nu(t,lu),2*uu}function yu(t){return[Fc(t[1],t[0]),Gc(t[2])]}function mu(t){var e=t[0],n=t[1],r=Pc(n);return[r*Pc(e),r*$c(e),$c(n)]}function vu(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function bu(t,e){return[t[1]*e[2]-t[2]*e[1],t[2]*e[0]-t[0]*e[2],t[0]*e[1]-t[1]*e[0]]}function _u(t,e){t[0]+=e[0],t[1]+=e[1],t[2]+=e[2]}function xu(t,e){return[t[0]*e,t[1]*e,t[2]*e]}function wu(t){var e=Hc(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=e,t[1]/=e,t[2]/=e}var ku,Tu,Cu,Eu,Su,Au,Mu,Nu,Du,Bu,Lu,Ou,Iu,Ru,Fu,Pu,Yu,ju,Uu,zu,$u,qu,Hu,Wu,Vu,Gu,Xu=kc(),Zu={point:Qu,lineStart:Ju,lineEnd:tl,polygonStart:function(){Zu.point=el,Zu.lineStart=nl,Zu.lineEnd=rl,Xu.reset(),lu.polygonStart()},polygonEnd:function(){lu.polygonEnd(),Zu.point=Qu,Zu.lineStart=Ju,Zu.lineEnd=tl,cu<0?(ku=-(Cu=180),Tu=-(Eu=90)):Xu>Sc?Eu=90:Xu<-1e-6&&(Tu=-90),Bu[0]=ku,Bu[1]=Cu},sphere:function(){ku=-(Cu=180),Tu=-(Eu=90)}};function Qu(t,e){Du.push(Bu=[ku=t,Cu=t]),e<Tu&&(Tu=e),e>Eu&&(Eu=e)}function Ku(t,e){var n=mu([t*Oc,e*Oc]);if(Nu){var r=bu(Nu,n),i=bu([r[1],-r[0],0],r);wu(i),i=yu(i);var a,o=t-Su,s=o>0?1:-1,c=i[0]*Lc*s,u=Ic(o)>180;u^(s*Su<c&&c<s*t)?(a=i[1]*Lc)>Eu&&(Eu=a):u^(s*Su<(c=(c+360)%360-180)&&c<s*t)?(a=-i[1]*Lc)<Tu&&(Tu=a):(e<Tu&&(Tu=e),e>Eu&&(Eu=e)),u?t<Su?il(ku,t)>il(ku,Cu)&&(Cu=t):il(t,Cu)>il(ku,Cu)&&(ku=t):Cu>=ku?(t<ku&&(ku=t),t>Cu&&(Cu=t)):t>Su?il(ku,t)>il(ku,Cu)&&(Cu=t):il(t,Cu)>il(ku,Cu)&&(ku=t)}else Du.push(Bu=[ku=t,Cu=t]);e<Tu&&(Tu=e),e>Eu&&(Eu=e),Nu=n,Su=t}function Ju(){Zu.point=Ku}function tl(){Bu[0]=ku,Bu[1]=Cu,Zu.point=Qu,Nu=null}function el(t,e){if(Nu){var n=t-Su;Xu.add(Ic(n)>180?n+(n>0?360:-360):n)}else Au=t,Mu=e;lu.point(t,e),Ku(t,e)}function nl(){lu.lineStart()}function rl(){el(Au,Mu),lu.lineEnd(),Ic(Xu)>Sc&&(ku=-(Cu=180)),Bu[0]=ku,Bu[1]=Cu,Nu=null}function il(t,e){return(e-=t)<0?e+360:e}function al(t,e){return t[0]-e[0]}function ol(t,e){return t[0]<=t[1]?t[0]<=e&&e<=t[1]:e<t[0]||t[1]<e}function sl(t){var e,n,r,i,a,o,s;if(Eu=Cu=-(ku=Tu=1/0),Du=[],nu(t,Zu),n=Du.length){for(Du.sort(al),e=1,a=[r=Du[0]];e<n;++e)ol(r,(i=Du[e])[0])||ol(r,i[1])?(il(r[0],i[1])>il(r[0],r[1])&&(r[1]=i[1]),il(i[0],r[1])>il(r[0],r[1])&&(r[0]=i[0])):a.push(r=i);for(o=-1/0,e=0,r=a[n=a.length-1];e<=n;r=i,++e)i=a[e],(s=il(r[1],i[0]))>o&&(o=s,ku=i[0],Cu=r[1])}return Du=Bu=null,ku===1/0||Tu===1/0?[[NaN,NaN],[NaN,NaN]]:[[ku,Tu],[Cu,Eu]]}var cl={sphere:Zc,point:ul,lineStart:hl,lineEnd:pl,polygonStart:function(){cl.lineStart=gl,cl.lineEnd=yl},polygonEnd:function(){cl.lineStart=hl,cl.lineEnd=pl}};function ul(t,e){t*=Oc;var n=Pc(e*=Oc);ll(n*Pc(t),n*$c(t),$c(e))}function ll(t,e,n){++Lu,Iu+=(t-Iu)/Lu,Ru+=(e-Ru)/Lu,Fu+=(n-Fu)/Lu}function hl(){cl.point=fl}function fl(t,e){t*=Oc;var n=Pc(e*=Oc);Wu=n*Pc(t),Vu=n*$c(t),Gu=$c(e),cl.point=dl,ll(Wu,Vu,Gu)}function dl(t,e){t*=Oc;var n=Pc(e*=Oc),r=n*Pc(t),i=n*$c(t),a=$c(e),o=Fc(Hc((o=Vu*a-Gu*i)*o+(o=Gu*r-Wu*a)*o+(o=Wu*i-Vu*r)*o),Wu*r+Vu*i+Gu*a);Ou+=o,Pu+=o*(Wu+(Wu=r)),Yu+=o*(Vu+(Vu=i)),ju+=o*(Gu+(Gu=a)),ll(Wu,Vu,Gu)}function pl(){cl.point=ul}function gl(){cl.point=ml}function yl(){vl(qu,Hu),cl.point=ul}function ml(t,e){qu=t,Hu=e,t*=Oc,e*=Oc,cl.point=vl;var n=Pc(e);Wu=n*Pc(t),Vu=n*$c(t),Gu=$c(e),ll(Wu,Vu,Gu)}function vl(t,e){t*=Oc;var n=Pc(e*=Oc),r=n*Pc(t),i=n*$c(t),a=$c(e),o=Vu*a-Gu*i,s=Gu*r-Wu*a,c=Wu*i-Vu*r,u=Hc(o*o+s*s+c*c),l=Gc(u),h=u&&-l/u;Uu+=h*o,zu+=h*s,$u+=h*c,Ou+=l,Pu+=l*(Wu+(Wu=r)),Yu+=l*(Vu+(Vu=i)),ju+=l*(Gu+(Gu=a)),ll(Wu,Vu,Gu)}function bl(t){Lu=Ou=Iu=Ru=Fu=Pu=Yu=ju=Uu=zu=$u=0,nu(t,cl);var e=Uu,n=zu,r=$u,i=e*e+n*n+r*r;return i<Ac&&(e=Pu,n=Yu,r=ju,Ou<Sc&&(e=Iu,n=Ru,r=Fu),(i=e*e+n*n+r*r)<Ac)?[NaN,NaN]:[Fc(n,e)*Lc,Gc(r/Hc(i))*Lc]}function _l(t){return function(){return t}}function xl(t,e){function n(n,r){return n=t(n,r),e(n[0],n[1])}return t.invert&&e.invert&&(n.invert=function(n,r){return(n=e.invert(n,r))&&t.invert(n[0],n[1])}),n}function wl(t,e){return[Ic(t)>Mc?t+Math.round(-t/Bc)*Bc:t,e]}function kl(t,e,n){return(t%=Bc)?e||n?xl(Cl(t),El(e,n)):Cl(t):e||n?El(e,n):wl}function Tl(t){return function(e,n){return[(e+=t)>Mc?e-Bc:e<-Mc?e+Bc:e,n]}}function Cl(t){var e=Tl(t);return e.invert=Tl(-t),e}function El(t,e){var n=Pc(t),r=$c(t),i=Pc(e),a=$c(e);function o(t,e){var o=Pc(e),s=Pc(t)*o,c=$c(t)*o,u=$c(e),l=u*n+s*r;return[Fc(c*i-l*a,s*n-u*r),Gc(l*i+c*a)]}return o.invert=function(t,e){var o=Pc(e),s=Pc(t)*o,c=$c(t)*o,u=$c(e),l=u*i-c*a;return[Fc(c*i+u*a,s*n+l*r),Gc(l*n-s*r)]},o}function Sl(t){function e(e){return(e=t(e[0]*Oc,e[1]*Oc))[0]*=Lc,e[1]*=Lc,e}return t=kl(t[0]*Oc,t[1]*Oc,t.length>2?t[2]*Oc:0),e.invert=function(e){return(e=t.invert(e[0]*Oc,e[1]*Oc))[0]*=Lc,e[1]*=Lc,e},e}function Al(t,e,n,r,i,a){if(n){var o=Pc(e),s=$c(e),c=r*n;null==i?(i=e+r*Bc,a=e-c/2):(i=Ml(o,i),a=Ml(o,a),(r>0?i<a:i>a)&&(i+=r*Bc));for(var u,l=i;r>0?l>a:l<a;l-=c)u=yu([o,-s*Pc(l),-s*$c(l)]),t.point(u[0],u[1])}}function Ml(t,e){(e=mu(e))[0]-=t,wu(e);var n=Vc(-e[1]);return((-e[2]<0?-n:n)+Bc-Sc)%Bc}function Nl(){var t,e,n=_l([0,0]),r=_l(90),i=_l(6),a={point:function(n,r){t.push(n=e(n,r)),n[0]*=Lc,n[1]*=Lc}};function o(){var o=n.apply(this,arguments),s=r.apply(this,arguments)*Oc,c=i.apply(this,arguments)*Oc;return t=[],e=kl(-o[0]*Oc,-o[1]*Oc,0).invert,Al(a,s,c,1),o={type:"Polygon",coordinates:[t]},t=e=null,o}return o.center=function(t){return arguments.length?(n="function"==typeof t?t:_l([+t[0],+t[1]]),o):n},o.radius=function(t){return arguments.length?(r="function"==typeof t?t:_l(+t),o):r},o.precision=function(t){return arguments.length?(i="function"==typeof t?t:_l(+t),o):i},o}function Dl(){var t,e=[];return{point:function(e,n,r){t.push([e,n,r])},lineStart:function(){e.push(t=[])},lineEnd:Zc,rejoin:function(){e.length>1&&e.push(e.pop().concat(e.shift()))},result:function(){var n=e;return e=[],t=null,n}}}function Bl(t,e){return Ic(t[0]-e[0])<Sc&&Ic(t[1]-e[1])<Sc}function Ll(t,e,n,r){this.x=t,this.z=e,this.o=n,this.e=r,this.v=!1,this.n=this.p=null}function Ol(t,e,n,r,i){var a,o,s=[],c=[];if(t.forEach((function(t){if(!((e=t.length-1)<=0)){var e,n,r=t[0],o=t[e];if(Bl(r,o)){if(!r[2]&&!o[2]){for(i.lineStart(),a=0;a<e;++a)i.point((r=t[a])[0],r[1]);return void i.lineEnd()}o[0]+=2e-6}s.push(n=new Ll(r,t,null,!0)),c.push(n.o=new Ll(r,null,n,!1)),s.push(n=new Ll(o,t,null,!1)),c.push(n.o=new Ll(o,null,n,!0))}})),s.length){for(c.sort(e),Il(s),Il(c),a=0,o=c.length;a<o;++a)c[a].e=n=!n;for(var u,l,h=s[0];;){for(var f=h,d=!0;f.v;)if((f=f.n)===h)return;u=f.z,i.lineStart();do{if(f.v=f.o.v=!0,f.e){if(d)for(a=0,o=u.length;a<o;++a)i.point((l=u[a])[0],l[1]);else r(f.x,f.n.x,1,i);f=f.n}else{if(d)for(u=f.p.z,a=u.length-1;a>=0;--a)i.point((l=u[a])[0],l[1]);else r(f.x,f.p.x,-1,i);f=f.p}u=(f=f.o).z,d=!d}while(!f.v);i.lineEnd()}}}function Il(t){if(e=t.length){for(var e,n,r=0,i=t[0];++r<e;)i.n=n=t[r],n.p=i,i=n;i.n=n=t[0],n.p=i}}wl.invert=wl;var Rl=kc();function Fl(t){return Ic(t[0])<=Mc?t[0]:qc(t[0])*((Ic(t[0])+Mc)%Bc-Mc)}function Pl(t,e){var n=Fl(e),r=e[1],i=$c(r),a=[$c(n),-Pc(n),0],o=0,s=0;Rl.reset(),1===i?r=Nc+Sc:-1===i&&(r=-Nc-Sc);for(var c=0,u=t.length;c<u;++c)if(h=(l=t[c]).length)for(var l,h,f=l[h-1],d=Fl(f),p=f[1]/2+Dc,g=$c(p),y=Pc(p),m=0;m<h;++m,d=b,g=x,y=w,f=v){var v=l[m],b=Fl(v),_=v[1]/2+Dc,x=$c(_),w=Pc(_),k=b-d,T=k>=0?1:-1,C=T*k,E=C>Mc,S=g*x;if(Rl.add(Fc(S*T*$c(C),y*w+S*Pc(C))),o+=E?k+T*Bc:k,E^d>=n^b>=n){var A=bu(mu(f),mu(v));wu(A);var M=bu(a,A);wu(M);var N=(E^k>=0?-1:1)*Gc(M[2]);(r>N||r===N&&(A[0]||A[1]))&&(s+=E^k>=0?1:-1)}}return(o<-1e-6||o<Sc&&Rl<-1e-6)^1&s}function Yl(t,e,n,r){return function(i){var a,o,s,c=e(i),u=Dl(),l=e(u),h=!1,f={point:d,lineStart:g,lineEnd:y,polygonStart:function(){f.point=m,f.lineStart=v,f.lineEnd=b,o=[],a=[]},polygonEnd:function(){f.point=d,f.lineStart=g,f.lineEnd=y,o=P(o);var t=Pl(a,r);o.length?(h||(i.polygonStart(),h=!0),Ol(o,Ul,t,n,i)):t&&(h||(i.polygonStart(),h=!0),i.lineStart(),n(null,null,1,i),i.lineEnd()),h&&(i.polygonEnd(),h=!1),o=a=null},sphere:function(){i.polygonStart(),i.lineStart(),n(null,null,1,i),i.lineEnd(),i.polygonEnd()}};function d(e,n){t(e,n)&&i.point(e,n)}function p(t,e){c.point(t,e)}function g(){f.point=p,c.lineStart()}function y(){f.point=d,c.lineEnd()}function m(t,e){s.push([t,e]),l.point(t,e)}function v(){l.lineStart(),s=[]}function b(){m(s[0][0],s[0][1]),l.lineEnd();var t,e,n,r,c=l.clean(),f=u.result(),d=f.length;if(s.pop(),a.push(s),s=null,d)if(1&c){if((e=(n=f[0]).length-1)>0){for(h||(i.polygonStart(),h=!0),i.lineStart(),t=0;t<e;++t)i.point((r=n[t])[0],r[1]);i.lineEnd()}}else d>1&&2&c&&f.push(f.pop().concat(f.shift())),o.push(f.filter(jl))}return f}}function jl(t){return t.length>1}function Ul(t,e){return((t=t.x)[0]<0?t[1]-Nc-Sc:Nc-t[1])-((e=e.x)[0]<0?e[1]-Nc-Sc:Nc-e[1])}const zl=Yl((function(){return!0}),(function(t){var e,n=NaN,r=NaN,i=NaN;return{lineStart:function(){t.lineStart(),e=1},point:function(a,o){var s=a>0?Mc:-Mc,c=Ic(a-n);Ic(c-Mc)<Sc?(t.point(n,r=(r+o)/2>0?Nc:-Nc),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(s,r),t.point(a,r),e=0):i!==s&&c>=Mc&&(Ic(n-i)<Sc&&(n-=i*Sc),Ic(a-s)<Sc&&(a-=s*Sc),r=function(t,e,n,r){var i,a,o=$c(t-n);return Ic(o)>Sc?Rc(($c(e)*(a=Pc(r))*$c(n)-$c(r)*(i=Pc(e))*$c(t))/(i*a*o)):(e+r)/2}(n,r,a,o),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(s,r),e=0),t.point(n=a,r=o),i=s},lineEnd:function(){t.lineEnd(),n=r=NaN},clean:function(){return 2-e}}}),(function(t,e,n,r){var i;if(null==t)i=n*Nc,r.point(-Mc,i),r.point(0,i),r.point(Mc,i),r.point(Mc,0),r.point(Mc,-i),r.point(0,-i),r.point(-Mc,-i),r.point(-Mc,0),r.point(-Mc,i);else if(Ic(t[0]-e[0])>Sc){var a=t[0]<e[0]?Mc:-Mc;i=n*a/2,r.point(-a,i),r.point(0,i),r.point(a,i)}else r.point(e[0],e[1])}),[-Mc,-Nc]);function $l(t){var e=Pc(t),n=6*Oc,r=e>0,i=Ic(e)>Sc;function a(t,n){return Pc(t)*Pc(n)>e}function o(t,n,r){var i=[1,0,0],a=bu(mu(t),mu(n)),o=vu(a,a),s=a[0],c=o-s*s;if(!c)return!r&&t;var u=e*o/c,l=-e*s/c,h=bu(i,a),f=xu(i,u);_u(f,xu(a,l));var d=h,p=vu(f,d),g=vu(d,d),y=p*p-g*(vu(f,f)-1);if(!(y<0)){var m=Hc(y),v=xu(d,(-p-m)/g);if(_u(v,f),v=yu(v),!r)return v;var b,_=t[0],x=n[0],w=t[1],k=n[1];x<_&&(b=_,_=x,x=b);var T=x-_,C=Ic(T-Mc)<Sc;if(!C&&k<w&&(b=w,w=k,k=b),C||T<Sc?C?w+k>0^v[1]<(Ic(v[0]-_)<Sc?w:k):w<=v[1]&&v[1]<=k:T>Mc^(_<=v[0]&&v[0]<=x)){var E=xu(d,(-p+m)/g);return _u(E,f),[v,yu(E)]}}}function s(e,n){var i=r?t:Mc-t,a=0;return e<-i?a|=1:e>i&&(a|=2),n<-i?a|=4:n>i&&(a|=8),a}return Yl(a,(function(t){var e,n,c,u,l;return{lineStart:function(){u=c=!1,l=1},point:function(h,f){var d,p=[h,f],g=a(h,f),y=r?g?0:s(h,f):g?s(h+(h<0?Mc:-Mc),f):0;if(!e&&(u=c=g)&&t.lineStart(),g!==c&&(!(d=o(e,p))||Bl(e,d)||Bl(p,d))&&(p[2]=1),g!==c)l=0,g?(t.lineStart(),d=o(p,e),t.point(d[0],d[1])):(d=o(e,p),t.point(d[0],d[1],2),t.lineEnd()),e=d;else if(i&&e&&r^g){var m;y&n||!(m=o(p,e,!0))||(l=0,r?(t.lineStart(),t.point(m[0][0],m[0][1]),t.point(m[1][0],m[1][1]),t.lineEnd()):(t.point(m[1][0],m[1][1]),t.lineEnd(),t.lineStart(),t.point(m[0][0],m[0][1],3)))}!g||e&&Bl(e,p)||t.point(p[0],p[1]),e=p,c=g,n=y},lineEnd:function(){c&&t.lineEnd(),e=null},clean:function(){return l|(u&&c)<<1}}}),(function(e,r,i,a){Al(a,t,n,i,e,r)}),r?[0,-t]:[-Mc,t-Mc])}var ql=1e9,Hl=-ql;function Wl(t,e,n,r){function i(i,a){return t<=i&&i<=n&&e<=a&&a<=r}function a(i,a,s,u){var l=0,h=0;if(null==i||(l=o(i,s))!==(h=o(a,s))||c(i,a)<0^s>0)do{u.point(0===l||3===l?t:n,l>1?r:e)}while((l=(l+s+4)%4)!==h);else u.point(a[0],a[1])}function o(r,i){return Ic(r[0]-t)<Sc?i>0?0:3:Ic(r[0]-n)<Sc?i>0?2:1:Ic(r[1]-e)<Sc?i>0?1:0:i>0?3:2}function s(t,e){return c(t.x,e.x)}function c(t,e){var n=o(t,1),r=o(e,1);return n!==r?n-r:0===n?e[1]-t[1]:1===n?t[0]-e[0]:2===n?t[1]-e[1]:e[0]-t[0]}return function(o){var c,u,l,h,f,d,p,g,y,m,v,b=o,_=Dl(),x={point:w,lineStart:function(){x.point=k,u&&u.push(l=[]),m=!0,y=!1,p=g=NaN},lineEnd:function(){c&&(k(h,f),d&&y&&_.rejoin(),c.push(_.result())),x.point=w,y&&b.lineEnd()},polygonStart:function(){b=_,c=[],u=[],v=!0},polygonEnd:function(){var e=function(){for(var e=0,n=0,i=u.length;n<i;++n)for(var a,o,s=u[n],c=1,l=s.length,h=s[0],f=h[0],d=h[1];c<l;++c)a=f,o=d,f=(h=s[c])[0],d=h[1],o<=r?d>r&&(f-a)*(r-o)>(d-o)*(t-a)&&++e:d<=r&&(f-a)*(r-o)<(d-o)*(t-a)&&--e;return e}(),n=v&&e,i=(c=P(c)).length;(n||i)&&(o.polygonStart(),n&&(o.lineStart(),a(null,null,1,o),o.lineEnd()),i&&Ol(c,s,e,a,o),o.polygonEnd()),b=o,c=u=l=null}};function w(t,e){i(t,e)&&b.point(t,e)}function k(a,o){var s=i(a,o);if(u&&l.push([a,o]),m)h=a,f=o,d=s,m=!1,s&&(b.lineStart(),b.point(a,o));else if(s&&y)b.point(a,o);else{var c=[p=Math.max(Hl,Math.min(ql,p)),g=Math.max(Hl,Math.min(ql,g))],_=[a=Math.max(Hl,Math.min(ql,a)),o=Math.max(Hl,Math.min(ql,o))];!function(t,e,n,r,i,a){var o,s=t[0],c=t[1],u=0,l=1,h=e[0]-s,f=e[1]-c;if(o=n-s,h||!(o>0)){if(o/=h,h<0){if(o<u)return;o<l&&(l=o)}else if(h>0){if(o>l)return;o>u&&(u=o)}if(o=i-s,h||!(o<0)){if(o/=h,h<0){if(o>l)return;o>u&&(u=o)}else if(h>0){if(o<u)return;o<l&&(l=o)}if(o=r-c,f||!(o>0)){if(o/=f,f<0){if(o<u)return;o<l&&(l=o)}else if(f>0){if(o>l)return;o>u&&(u=o)}if(o=a-c,f||!(o<0)){if(o/=f,f<0){if(o>l)return;o>u&&(u=o)}else if(f>0){if(o<u)return;o<l&&(l=o)}return u>0&&(t[0]=s+u*h,t[1]=c+u*f),l<1&&(e[0]=s+l*h,e[1]=c+l*f),!0}}}}}(c,_,t,e,n,r)?s&&(b.lineStart(),b.point(a,o),v=!1):(y||(b.lineStart(),b.point(c[0],c[1])),b.point(_[0],_[1]),s||b.lineEnd(),v=!1)}p=a,g=o,y=s}return x}}function Vl(){var t,e,n,r=0,i=0,a=960,o=500;return n={stream:function(n){return t&&e===n?t:t=Wl(r,i,a,o)(e=n)},extent:function(s){return arguments.length?(r=+s[0][0],i=+s[0][1],a=+s[1][0],o=+s[1][1],t=e=null,n):[[r,i],[a,o]]}}}var Gl,Xl,Zl,Ql=kc(),Kl={sphere:Zc,point:Zc,lineStart:function(){Kl.point=th,Kl.lineEnd=Jl},lineEnd:Zc,polygonStart:Zc,polygonEnd:Zc};function Jl(){Kl.point=Kl.lineEnd=Zc}function th(t,e){Gl=t*=Oc,Xl=$c(e*=Oc),Zl=Pc(e),Kl.point=eh}function eh(t,e){t*=Oc;var n=$c(e*=Oc),r=Pc(e),i=Ic(t-Gl),a=Pc(i),o=r*$c(i),s=Zl*n-Xl*r*a,c=Xl*n+Zl*r*a;Ql.add(Fc(Hc(o*o+s*s),c)),Gl=t,Xl=n,Zl=r}function nh(t){return Ql.reset(),nu(t,Kl),+Ql}var rh=[null,null],ih={type:"LineString",coordinates:rh};function ah(t,e){return rh[0]=t,rh[1]=e,nh(ih)}var oh={Feature:function(t,e){return ch(t.geometry,e)},FeatureCollection:function(t,e){for(var n=t.features,r=-1,i=n.length;++r<i;)if(ch(n[r].geometry,e))return!0;return!1}},sh={Sphere:function(){return!0},Point:function(t,e){return uh(t.coordinates,e)},MultiPoint:function(t,e){for(var n=t.coordinates,r=-1,i=n.length;++r<i;)if(uh(n[r],e))return!0;return!1},LineString:function(t,e){return lh(t.coordinates,e)},MultiLineString:function(t,e){for(var n=t.coordinates,r=-1,i=n.length;++r<i;)if(lh(n[r],e))return!0;return!1},Polygon:function(t,e){return hh(t.coordinates,e)},MultiPolygon:function(t,e){for(var n=t.coordinates,r=-1,i=n.length;++r<i;)if(hh(n[r],e))return!0;return!1},GeometryCollection:function(t,e){for(var n=t.geometries,r=-1,i=n.length;++r<i;)if(ch(n[r],e))return!0;return!1}};function ch(t,e){return!(!t||!sh.hasOwnProperty(t.type))&&sh[t.type](t,e)}function uh(t,e){return 0===ah(t,e)}function lh(t,e){for(var n,r,i,a=0,o=t.length;a<o;a++){if(0===(r=ah(t[a],e)))return!0;if(a>0&&(i=ah(t[a],t[a-1]))>0&&n<=i&&r<=i&&(n+r-i)*(1-Math.pow((n-r)/i,2))<Ac*i)return!0;n=r}return!1}function hh(t,e){return!!Pl(t.map(fh),dh(e))}function fh(t){return(t=t.map(dh)).pop(),t}function dh(t){return[t[0]*Oc,t[1]*Oc]}function ph(t,e){return(t&&oh.hasOwnProperty(t.type)?oh[t.type]:ch)(t,e)}function gh(t,e,n){var r=k(t,e-Sc,n).concat(e);return function(t){return r.map((function(e){return[t,e]}))}}function yh(t,e,n){var r=k(t,e-Sc,n).concat(e);return function(t){return r.map((function(e){return[e,t]}))}}function mh(){var t,e,n,r,i,a,o,s,c,u,l,h,f=10,d=f,p=90,g=360,y=2.5;function m(){return{type:"MultiLineString",coordinates:v()}}function v(){return k(Yc(r/p)*p,n,p).map(l).concat(k(Yc(s/g)*g,o,g).map(h)).concat(k(Yc(e/f)*f,t,f).filter((function(t){return Ic(t%p)>Sc})).map(c)).concat(k(Yc(a/d)*d,i,d).filter((function(t){return Ic(t%g)>Sc})).map(u))}return m.lines=function(){return v().map((function(t){return{type:"LineString",coordinates:t}}))},m.outline=function(){return{type:"Polygon",coordinates:[l(r).concat(h(o).slice(1),l(n).reverse().slice(1),h(s).reverse().slice(1))]}},m.extent=function(t){return arguments.length?m.extentMajor(t).extentMinor(t):m.extentMinor()},m.extentMajor=function(t){return arguments.length?(r=+t[0][0],n=+t[1][0],s=+t[0][1],o=+t[1][1],r>n&&(t=r,r=n,n=t),s>o&&(t=s,s=o,o=t),m.precision(y)):[[r,s],[n,o]]},m.extentMinor=function(n){return arguments.length?(e=+n[0][0],t=+n[1][0],a=+n[0][1],i=+n[1][1],e>t&&(n=e,e=t,t=n),a>i&&(n=a,a=i,i=n),m.precision(y)):[[e,a],[t,i]]},m.step=function(t){return arguments.length?m.stepMajor(t).stepMinor(t):m.stepMinor()},m.stepMajor=function(t){return arguments.length?(p=+t[0],g=+t[1],m):[p,g]},m.stepMinor=function(t){return arguments.length?(f=+t[0],d=+t[1],m):[f,d]},m.precision=function(f){return arguments.length?(y=+f,c=gh(a,i,90),u=yh(e,t,y),l=gh(s,o,90),h=yh(r,n,y),m):y},m.extentMajor([[-180,-89.999999],[180,89.999999]]).extentMinor([[-180,-80.000001],[180,80.000001]])}function vh(){return mh()()}function bh(t,e){var n=t[0]*Oc,r=t[1]*Oc,i=e[0]*Oc,a=e[1]*Oc,o=Pc(r),s=$c(r),c=Pc(a),u=$c(a),l=o*Pc(n),h=o*$c(n),f=c*Pc(i),d=c*$c(i),p=2*Gc(Hc(Xc(a-r)+o*c*Xc(i-n))),g=$c(p),y=p?function(t){var e=$c(t*=p)/g,n=$c(p-t)/g,r=n*l+e*f,i=n*h+e*d,a=n*s+e*u;return[Fc(i,r)*Lc,Fc(a,Hc(r*r+i*i))*Lc]}:function(){return[n*Lc,r*Lc]};return y.distance=p,y}function _h(t){return t}var xh,wh,kh,Th,Ch=kc(),Eh=kc(),Sh={point:Zc,lineStart:Zc,lineEnd:Zc,polygonStart:function(){Sh.lineStart=Ah,Sh.lineEnd=Dh},polygonEnd:function(){Sh.lineStart=Sh.lineEnd=Sh.point=Zc,Ch.add(Ic(Eh)),Eh.reset()},result:function(){var t=Ch/2;return Ch.reset(),t}};function Ah(){Sh.point=Mh}function Mh(t,e){Sh.point=Nh,xh=kh=t,wh=Th=e}function Nh(t,e){Eh.add(Th*t-kh*e),kh=t,Th=e}function Dh(){Nh(xh,wh)}const Bh=Sh;var Lh=1/0,Oh=Lh,Ih=-Lh,Rh=Ih,Fh={point:function(t,e){t<Lh&&(Lh=t),t>Ih&&(Ih=t),e<Oh&&(Oh=e),e>Rh&&(Rh=e)},lineStart:Zc,lineEnd:Zc,polygonStart:Zc,polygonEnd:Zc,result:function(){var t=[[Lh,Oh],[Ih,Rh]];return Ih=Rh=-(Oh=Lh=1/0),t}};const Ph=Fh;var Yh,jh,Uh,zh,$h=0,qh=0,Hh=0,Wh=0,Vh=0,Gh=0,Xh=0,Zh=0,Qh=0,Kh={point:Jh,lineStart:tf,lineEnd:rf,polygonStart:function(){Kh.lineStart=af,Kh.lineEnd=of},polygonEnd:function(){Kh.point=Jh,Kh.lineStart=tf,Kh.lineEnd=rf},result:function(){var t=Qh?[Xh/Qh,Zh/Qh]:Gh?[Wh/Gh,Vh/Gh]:Hh?[$h/Hh,qh/Hh]:[NaN,NaN];return $h=qh=Hh=Wh=Vh=Gh=Xh=Zh=Qh=0,t}};function Jh(t,e){$h+=t,qh+=e,++Hh}function tf(){Kh.point=ef}function ef(t,e){Kh.point=nf,Jh(Uh=t,zh=e)}function nf(t,e){var n=t-Uh,r=e-zh,i=Hc(n*n+r*r);Wh+=i*(Uh+t)/2,Vh+=i*(zh+e)/2,Gh+=i,Jh(Uh=t,zh=e)}function rf(){Kh.point=Jh}function af(){Kh.point=sf}function of(){cf(Yh,jh)}function sf(t,e){Kh.point=cf,Jh(Yh=Uh=t,jh=zh=e)}function cf(t,e){var n=t-Uh,r=e-zh,i=Hc(n*n+r*r);Wh+=i*(Uh+t)/2,Vh+=i*(zh+e)/2,Gh+=i,Xh+=(i=zh*t-Uh*e)*(Uh+t),Zh+=i*(zh+e),Qh+=3*i,Jh(Uh=t,zh=e)}const uf=Kh;function lf(t){this._context=t}lf.prototype={_radius:4.5,pointRadius:function(t){return this._radius=t,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._context.closePath(),this._point=NaN},point:function(t,e){switch(this._point){case 0:this._context.moveTo(t,e),this._point=1;break;case 1:this._context.lineTo(t,e);break;default:this._context.moveTo(t+this._radius,e),this._context.arc(t,e,this._radius,0,Bc)}},result:Zc};var hf,ff,df,pf,gf,yf=kc(),mf={point:Zc,lineStart:function(){mf.point=vf},lineEnd:function(){hf&&bf(ff,df),mf.point=Zc},polygonStart:function(){hf=!0},polygonEnd:function(){hf=null},result:function(){var t=+yf;return yf.reset(),t}};function vf(t,e){mf.point=bf,ff=pf=t,df=gf=e}function bf(t,e){pf-=t,gf-=e,yf.add(Hc(pf*pf+gf*gf)),pf=t,gf=e}const _f=mf;function xf(){this._string=[]}function wf(t){return"m0,"+t+"a"+t+","+t+" 0 1,1 0,"+-2*t+"a"+t+","+t+" 0 1,1 0,"+2*t+"z"}function kf(t,e){var n,r,i=4.5;function a(t){return t&&("function"==typeof i&&r.pointRadius(+i.apply(this,arguments)),nu(t,n(r))),r.result()}return a.area=function(t){return nu(t,n(Bh)),Bh.result()},a.measure=function(t){return nu(t,n(_f)),_f.result()},a.bounds=function(t){return nu(t,n(Ph)),Ph.result()},a.centroid=function(t){return nu(t,n(uf)),uf.result()},a.projection=function(e){return arguments.length?(n=null==e?(t=null,_h):(t=e).stream,a):t},a.context=function(t){return arguments.length?(r=null==t?(e=null,new xf):new lf(e=t),"function"!=typeof i&&r.pointRadius(i),a):e},a.pointRadius=function(t){return arguments.length?(i="function"==typeof t?t:(r.pointRadius(+t),+t),a):i},a.projection(t).context(e)}function Tf(t){return{stream:Cf(t)}}function Cf(t){return function(e){var n=new Ef;for(var r in t)n[r]=t[r];return n.stream=e,n}}function Ef(){}function Sf(t,e,n){var r=t.clipExtent&&t.clipExtent();return t.scale(150).translate([0,0]),null!=r&&t.clipExtent(null),nu(n,t.stream(Ph)),e(Ph.result()),null!=r&&t.clipExtent(r),t}function Af(t,e,n){return Sf(t,(function(n){var r=e[1][0]-e[0][0],i=e[1][1]-e[0][1],a=Math.min(r/(n[1][0]-n[0][0]),i/(n[1][1]-n[0][1])),o=+e[0][0]+(r-a*(n[1][0]+n[0][0]))/2,s=+e[0][1]+(i-a*(n[1][1]+n[0][1]))/2;t.scale(150*a).translate([o,s])}),n)}function Mf(t,e,n){return Af(t,[[0,0],e],n)}function Nf(t,e,n){return Sf(t,(function(n){var r=+e,i=r/(n[1][0]-n[0][0]),a=(r-i*(n[1][0]+n[0][0]))/2,o=-i*n[0][1];t.scale(150*i).translate([a,o])}),n)}function Df(t,e,n){return Sf(t,(function(n){var r=+e,i=r/(n[1][1]-n[0][1]),a=-i*n[0][0],o=(r-i*(n[1][1]+n[0][1]))/2;t.scale(150*i).translate([a,o])}),n)}xf.prototype={_radius:4.5,_circle:wf(4.5),pointRadius:function(t){return(t=+t)!==this._radius&&(this._radius=t,this._circle=null),this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._string.push("Z"),this._point=NaN},point:function(t,e){switch(this._point){case 0:this._string.push("M",t,",",e),this._point=1;break;case 1:this._string.push("L",t,",",e);break;default:null==this._circle&&(this._circle=wf(this._radius)),this._string.push("M",t,",",e,this._circle)}},result:function(){if(this._string.length){var t=this._string.join("");return this._string=[],t}return null}},Ef.prototype={constructor:Ef,point:function(t,e){this.stream.point(t,e)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};var Bf=Pc(30*Oc);function Lf(t,e){return+e?function(t,e){function n(r,i,a,o,s,c,u,l,h,f,d,p,g,y){var m=u-r,v=l-i,b=m*m+v*v;if(b>4*e&&g--){var _=o+f,x=s+d,w=c+p,k=Hc(_*_+x*x+w*w),T=Gc(w/=k),C=Ic(Ic(w)-1)<Sc||Ic(a-h)<Sc?(a+h)/2:Fc(x,_),E=t(C,T),S=E[0],A=E[1],M=S-r,N=A-i,D=v*M-m*N;(D*D/b>e||Ic((m*M+v*N)/b-.5)>.3||o*f+s*d+c*p<Bf)&&(n(r,i,a,o,s,c,S,A,C,_/=k,x/=k,w,g,y),y.point(S,A),n(S,A,C,_,x,w,u,l,h,f,d,p,g,y))}}return function(e){var r,i,a,o,s,c,u,l,h,f,d,p,g={point:y,lineStart:m,lineEnd:b,polygonStart:function(){e.polygonStart(),g.lineStart=_},polygonEnd:function(){e.polygonEnd(),g.lineStart=m}};function y(n,r){n=t(n,r),e.point(n[0],n[1])}function m(){l=NaN,g.point=v,e.lineStart()}function v(r,i){var a=mu([r,i]),o=t(r,i);n(l,h,u,f,d,p,l=o[0],h=o[1],u=r,f=a[0],d=a[1],p=a[2],16,e),e.point(l,h)}function b(){g.point=y,e.lineEnd()}function _(){m(),g.point=x,g.lineEnd=w}function x(t,e){v(r=t,e),i=l,a=h,o=f,s=d,c=p,g.point=v}function w(){n(l,h,u,f,d,p,i,a,r,o,s,c,16,e),g.lineEnd=b,b()}return g}}(t,e):function(t){return Cf({point:function(e,n){e=t(e,n),this.stream.point(e[0],e[1])}})}(t)}var Of=Cf({point:function(t,e){this.stream.point(t*Oc,e*Oc)}});function If(t,e,n,r,i){function a(a,o){return[e+t*(a*=r),n-t*(o*=i)]}return a.invert=function(a,o){return[(a-e)/t*r,(n-o)/t*i]},a}function Rf(t,e,n,r,i,a){var o=Pc(a),s=$c(a),c=o*t,u=s*t,l=o/t,h=s/t,f=(s*n-o*e)/t,d=(s*e+o*n)/t;function p(t,a){return[c*(t*=r)-u*(a*=i)+e,n-u*t-c*a]}return p.invert=function(t,e){return[r*(l*t-h*e+f),i*(d-h*t-l*e)]},p}function Ff(t){return Pf((function(){return t}))()}function Pf(t){var e,n,r,i,a,o,s,c,u,l,h=150,f=480,d=250,p=0,g=0,y=0,m=0,v=0,b=0,_=1,x=1,w=null,k=zl,T=null,C=_h,E=.5;function S(t){return c(t[0]*Oc,t[1]*Oc)}function A(t){return(t=c.invert(t[0],t[1]))&&[t[0]*Lc,t[1]*Lc]}function M(){var t=Rf(h,0,0,_,x,b).apply(null,e(p,g)),r=(b?Rf:If)(h,f-t[0],d-t[1],_,x,b);return n=kl(y,m,v),s=xl(e,r),c=xl(n,s),o=Lf(s,E),N()}function N(){return u=l=null,S}return S.stream=function(t){return u&&l===t?u:u=Of(function(t){return Cf({point:function(e,n){var r=t(e,n);return this.stream.point(r[0],r[1])}})}(n)(k(o(C(l=t)))))},S.preclip=function(t){return arguments.length?(k=t,w=void 0,N()):k},S.postclip=function(t){return arguments.length?(C=t,T=r=i=a=null,N()):C},S.clipAngle=function(t){return arguments.length?(k=+t?$l(w=t*Oc):(w=null,zl),N()):w*Lc},S.clipExtent=function(t){return arguments.length?(C=null==t?(T=r=i=a=null,_h):Wl(T=+t[0][0],r=+t[0][1],i=+t[1][0],a=+t[1][1]),N()):null==T?null:[[T,r],[i,a]]},S.scale=function(t){return arguments.length?(h=+t,M()):h},S.translate=function(t){return arguments.length?(f=+t[0],d=+t[1],M()):[f,d]},S.center=function(t){return arguments.length?(p=t[0]%360*Oc,g=t[1]%360*Oc,M()):[p*Lc,g*Lc]},S.rotate=function(t){return arguments.length?(y=t[0]%360*Oc,m=t[1]%360*Oc,v=t.length>2?t[2]%360*Oc:0,M()):[y*Lc,m*Lc,v*Lc]},S.angle=function(t){return arguments.length?(b=t%360*Oc,M()):b*Lc},S.reflectX=function(t){return arguments.length?(_=t?-1:1,M()):_<0},S.reflectY=function(t){return arguments.length?(x=t?-1:1,M()):x<0},S.precision=function(t){return arguments.length?(o=Lf(s,E=t*t),N()):Hc(E)},S.fitExtent=function(t,e){return Af(S,t,e)},S.fitSize=function(t,e){return Mf(S,t,e)},S.fitWidth=function(t,e){return Nf(S,t,e)},S.fitHeight=function(t,e){return Df(S,t,e)},function(){return e=t.apply(this,arguments),S.invert=e.invert&&A,M()}}function Yf(t){var e=0,n=Mc/3,r=Pf(t),i=r(e,n);return i.parallels=function(t){return arguments.length?r(e=t[0]*Oc,n=t[1]*Oc):[e*Lc,n*Lc]},i}function jf(t,e){var n=$c(t),r=(n+$c(e))/2;if(Ic(r)<Sc)return function(t){var e=Pc(t);function n(t,n){return[t*e,$c(n)/e]}return n.invert=function(t,n){return[t/e,Gc(n*e)]},n}(t);var i=1+n*(2*r-n),a=Hc(i)/r;function o(t,e){var n=Hc(i-2*r*$c(e))/r;return[n*$c(t*=r),a-n*Pc(t)]}return o.invert=function(t,e){var n=a-e,o=Fc(t,Ic(n))*qc(n);return n*r<0&&(o-=Mc*qc(t)*qc(n)),[o/r,Gc((i-(t*t+n*n)*r*r)/(2*r))]},o}function Uf(){return Yf(jf).scale(155.424).center([0,33.6442])}function zf(){return Uf().parallels([29.5,45.5]).scale(1070).translate([480,250]).rotate([96,0]).center([-.6,38.7])}function $f(){var t,e,n,r,i,a,o=zf(),s=Uf().rotate([154,0]).center([-2,58.5]).parallels([55,65]),c=Uf().rotate([157,0]).center([-3,19.9]).parallels([8,18]),u={point:function(t,e){a=[t,e]}};function l(t){var e=t[0],o=t[1];return a=null,n.point(e,o),a||(r.point(e,o),a)||(i.point(e,o),a)}function h(){return t=e=null,l}return l.invert=function(t){var e=o.scale(),n=o.translate(),r=(t[0]-n[0])/e,i=(t[1]-n[1])/e;return(i>=.12&&i<.234&&r>=-.425&&r<-.214?s:i>=.166&&i<.234&&r>=-.214&&r<-.115?c:o).invert(t)},l.stream=function(n){return t&&e===n?t:(r=[o.stream(e=n),s.stream(n),c.stream(n)],i=r.length,t={point:function(t,e){for(var n=-1;++n<i;)r[n].point(t,e)},sphere:function(){for(var t=-1;++t<i;)r[t].sphere()},lineStart:function(){for(var t=-1;++t<i;)r[t].lineStart()},lineEnd:function(){for(var t=-1;++t<i;)r[t].lineEnd()},polygonStart:function(){for(var t=-1;++t<i;)r[t].polygonStart()},polygonEnd:function(){for(var t=-1;++t<i;)r[t].polygonEnd()}});var r,i},l.precision=function(t){return arguments.length?(o.precision(t),s.precision(t),c.precision(t),h()):o.precision()},l.scale=function(t){return arguments.length?(o.scale(t),s.scale(.35*t),c.scale(t),l.translate(o.translate())):o.scale()},l.translate=function(t){if(!arguments.length)return o.translate();var e=o.scale(),a=+t[0],l=+t[1];return n=o.translate(t).clipExtent([[a-.455*e,l-.238*e],[a+.455*e,l+.238*e]]).stream(u),r=s.translate([a-.307*e,l+.201*e]).clipExtent([[a-.425*e+Sc,l+.12*e+Sc],[a-.214*e-Sc,l+.234*e-Sc]]).stream(u),i=c.translate([a-.205*e,l+.212*e]).clipExtent([[a-.214*e+Sc,l+.166*e+Sc],[a-.115*e-Sc,l+.234*e-Sc]]).stream(u),h()},l.fitExtent=function(t,e){return Af(l,t,e)},l.fitSize=function(t,e){return Mf(l,t,e)},l.fitWidth=function(t,e){return Nf(l,t,e)},l.fitHeight=function(t,e){return Df(l,t,e)},l.scale(1070)}function qf(t){return function(e,n){var r=Pc(e),i=Pc(n),a=t(r*i);return[a*i*$c(e),a*$c(n)]}}function Hf(t){return function(e,n){var r=Hc(e*e+n*n),i=t(r),a=$c(i),o=Pc(i);return[Fc(e*a,r*o),Gc(r&&n*a/r)]}}var Wf=qf((function(t){return Hc(2/(1+t))}));function Vf(){return Ff(Wf).scale(124.75).clipAngle(179.999)}Wf.invert=Hf((function(t){return 2*Gc(t/2)}));var Gf=qf((function(t){return(t=Vc(t))&&t/$c(t)}));function Xf(){return Ff(Gf).scale(79.4188).clipAngle(179.999)}function Zf(t,e){return[t,Uc(Wc((Nc+e)/2))]}function Qf(){return Kf(Zf).scale(961/Bc)}function Kf(t){var e,n,r,i=Ff(t),a=i.center,o=i.scale,s=i.translate,c=i.clipExtent,u=null;function l(){var a=Mc*o(),s=i(Sl(i.rotate()).invert([0,0]));return c(null==u?[[s[0]-a,s[1]-a],[s[0]+a,s[1]+a]]:t===Zf?[[Math.max(s[0]-a,u),e],[Math.min(s[0]+a,n),r]]:[[u,Math.max(s[1]-a,e)],[n,Math.min(s[1]+a,r)]])}return i.scale=function(t){return arguments.length?(o(t),l()):o()},i.translate=function(t){return arguments.length?(s(t),l()):s()},i.center=function(t){return arguments.length?(a(t),l()):a()},i.clipExtent=function(t){return arguments.length?(null==t?u=e=n=r=null:(u=+t[0][0],e=+t[0][1],n=+t[1][0],r=+t[1][1]),l()):null==u?null:[[u,e],[n,r]]},l()}function Jf(t){return Wc((Nc+t)/2)}function td(t,e){var n=Pc(t),r=t===e?$c(t):Uc(n/Pc(e))/Uc(Jf(e)/Jf(t)),i=n*zc(Jf(t),r)/r;if(!r)return Zf;function a(t,e){i>0?e<-Nc+Sc&&(e=-Nc+Sc):e>Nc-Sc&&(e=Nc-Sc);var n=i/zc(Jf(e),r);return[n*$c(r*t),i-n*Pc(r*t)]}return a.invert=function(t,e){var n=i-e,a=qc(r)*Hc(t*t+n*n),o=Fc(t,Ic(n))*qc(n);return n*r<0&&(o-=Mc*qc(t)*qc(n)),[o/r,2*Rc(zc(i/a,1/r))-Nc]},a}function ed(){return Yf(td).scale(109.5).parallels([30,30])}function nd(t,e){return[t,e]}function rd(){return Ff(nd).scale(152.63)}function id(t,e){var n=Pc(t),r=t===e?$c(t):(n-Pc(e))/(e-t),i=n/r+t;if(Ic(r)<Sc)return nd;function a(t,e){var n=i-e,a=r*t;return[n*$c(a),i-n*Pc(a)]}return a.invert=function(t,e){var n=i-e,a=Fc(t,Ic(n))*qc(n);return n*r<0&&(a-=Mc*qc(t)*qc(n)),[a/r,i-qc(r)*Hc(t*t+n*n)]},a}function ad(){return Yf(id).scale(131.154).center([0,13.9389])}Gf.invert=Hf((function(t){return t})),Zf.invert=function(t,e){return[t,2*Rc(jc(e))-Nc]},nd.invert=nd;var od=1.340264,sd=-.081106,cd=893e-6,ud=.003796,ld=Hc(3)/2;function hd(t,e){var n=Gc(ld*$c(e)),r=n*n,i=r*r*r;return[t*Pc(n)/(ld*(od+3*sd*r+i*(7*cd+9*ud*r))),n*(od+sd*r+i*(cd+ud*r))]}function fd(){return Ff(hd).scale(177.158)}function dd(t,e){var n=Pc(e),r=Pc(t)*n;return[n*$c(t)/r,$c(e)/r]}function pd(){return Ff(dd).scale(144.049).clipAngle(60)}function gd(){var t,e,n,r,i,a,o,s=1,c=0,u=0,l=1,h=1,f=0,d=null,p=1,g=1,y=Cf({point:function(t,e){var n=b([t,e]);this.stream.point(n[0],n[1])}}),m=_h;function v(){return p=s*l,g=s*h,a=o=null,b}function b(n){var r=n[0]*p,i=n[1]*g;if(f){var a=i*t-r*e;r=r*t+i*e,i=a}return[r+c,i+u]}return b.invert=function(n){var r=n[0]-c,i=n[1]-u;if(f){var a=i*t+r*e;r=r*t-i*e,i=a}return[r/p,i/g]},b.stream=function(t){return a&&o===t?a:a=y(m(o=t))},b.postclip=function(t){return arguments.length?(m=t,d=n=r=i=null,v()):m},b.clipExtent=function(t){return arguments.length?(m=null==t?(d=n=r=i=null,_h):Wl(d=+t[0][0],n=+t[0][1],r=+t[1][0],i=+t[1][1]),v()):null==d?null:[[d,n],[r,i]]},b.scale=function(t){return arguments.length?(s=+t,v()):s},b.translate=function(t){return arguments.length?(c=+t[0],u=+t[1],v()):[c,u]},b.angle=function(n){return arguments.length?(e=$c(f=n%360*Oc),t=Pc(f),v()):f*Lc},b.reflectX=function(t){return arguments.length?(l=t?-1:1,v()):l<0},b.reflectY=function(t){return arguments.length?(h=t?-1:1,v()):h<0},b.fitExtent=function(t,e){return Af(b,t,e)},b.fitSize=function(t,e){return Mf(b,t,e)},b.fitWidth=function(t,e){return Nf(b,t,e)},b.fitHeight=function(t,e){return Df(b,t,e)},b}function yd(t,e){var n=e*e,r=n*n;return[t*(.8707-.131979*n+r*(r*(.003971*n-.001529*r)-.013791)),e*(1.007226+n*(.015085+r*(.028874*n-.044475-.005916*r)))]}function md(){return Ff(yd).scale(175.295)}function vd(t,e){return[Pc(e)*$c(t),$c(e)]}function bd(){return Ff(vd).scale(249.5).clipAngle(90.000001)}function _d(t,e){var n=Pc(e),r=1+Pc(t)*n;return[n*$c(t)/r,$c(e)/r]}function xd(){return Ff(_d).scale(250).clipAngle(142)}function wd(t,e){return[Uc(Wc((Nc+e)/2)),-t]}function kd(){var t=Kf(wd),e=t.center,n=t.rotate;return t.center=function(t){return arguments.length?e([-t[1],t[0]]):[(t=e())[1],-t[0]]},t.rotate=function(t){return arguments.length?n([t[0],t[1],t.length>2?t[2]+90:90]):[(t=n())[0],t[1],t[2]-90]},n([0,0,90]).scale(159.155)}function Td(t,e){return t.parent===e.parent?1:2}function Cd(t,e){return t+e.x}function Ed(t,e){return Math.max(t,e.y)}function Sd(){var t=Td,e=1,n=1,r=!1;function i(i){var a,o=0;i.eachAfter((function(e){var n=e.children;n?(e.x=function(t){return t.reduce(Cd,0)/t.length}(n),e.y=function(t){return 1+t.reduce(Ed,0)}(n)):(e.x=a?o+=t(e,a):0,e.y=0,a=e)}));var s=function(t){for(var e;e=t.children;)t=e[0];return t}(i),c=function(t){for(var e;e=t.children;)t=e[e.length-1];return t}(i),u=s.x-t(s,c)/2,l=c.x+t(c,s)/2;return i.eachAfter(r?function(t){t.x=(t.x-i.x)*e,t.y=(i.y-t.y)*n}:function(t){t.x=(t.x-u)/(l-u)*e,t.y=(1-(i.y?t.y/i.y:1))*n})}return i.separation=function(e){return arguments.length?(t=e,i):t},i.size=function(t){return arguments.length?(r=!1,e=+t[0],n=+t[1],i):r?null:[e,n]},i.nodeSize=function(t){return arguments.length?(r=!0,e=+t[0],n=+t[1],i):r?[e,n]:null},i}function Ad(t){var e=0,n=t.children,r=n&&n.length;if(r)for(;--r>=0;)e+=n[r].value;else e=1;t.value=e}function Md(t,e){var n,r,i,a,o,s=new Ld(t),c=+t.value&&(s.value=t.value),u=[s];for(null==e&&(e=Nd);n=u.pop();)if(c&&(n.value=+n.data.value),(i=e(n.data))&&(o=i.length))for(n.children=new Array(o),a=o-1;a>=0;--a)u.push(r=n.children[a]=new Ld(i[a])),r.parent=n,r.depth=n.depth+1;return s.eachBefore(Bd)}function Nd(t){return t.children}function Dd(t){t.data=t.data.data}function Bd(t){var e=0;do{t.height=e}while((t=t.parent)&&t.height<++e)}function Ld(t){this.data=t,this.depth=this.height=0,this.parent=null}hd.invert=function(t,e){for(var n,r=e,i=r*r,a=i*i*i,o=0;o<12&&(a=(i=(r-=n=(r*(od+sd*i+a*(cd+ud*i))-e)/(od+3*sd*i+a*(7*cd+9*ud*i)))*r)*i*i,!(Ic(n)<Ac));++o);return[ld*t*(od+3*sd*i+a*(7*cd+9*ud*i))/Pc(r),Gc($c(r)/ld)]},dd.invert=Hf(Rc),yd.invert=function(t,e){var n,r=e,i=25;do{var a=r*r,o=a*a;r-=n=(r*(1.007226+a*(.015085+o*(.028874*a-.044475-.005916*o)))-e)/(1.007226+a*(.045255+o*(.259866*a-.311325-.005916*11*o)))}while(Ic(n)>Sc&&--i>0);return[t/(.8707+(a=r*r)*(a*(a*a*a*(.003971-.001529*a)-.013791)-.131979)),r]},vd.invert=Hf(Gc),_d.invert=Hf((function(t){return 2*Rc(t)})),wd.invert=function(t,e){return[-e,2*Rc(jc(t))-Nc]},Ld.prototype=Md.prototype={constructor:Ld,count:function(){return this.eachAfter(Ad)},each:function(t){var e,n,r,i,a=this,o=[a];do{for(e=o.reverse(),o=[];a=e.pop();)if(t(a),n=a.children)for(r=0,i=n.length;r<i;++r)o.push(n[r])}while(o.length);return this},eachAfter:function(t){for(var e,n,r,i=this,a=[i],o=[];i=a.pop();)if(o.push(i),e=i.children)for(n=0,r=e.length;n<r;++n)a.push(e[n]);for(;i=o.pop();)t(i);return this},eachBefore:function(t){for(var e,n,r=this,i=[r];r=i.pop();)if(t(r),e=r.children)for(n=e.length-1;n>=0;--n)i.push(e[n]);return this},sum:function(t){return this.eachAfter((function(e){for(var n=+t(e.data)||0,r=e.children,i=r&&r.length;--i>=0;)n+=r[i].value;e.value=n}))},sort:function(t){return this.eachBefore((function(e){e.children&&e.children.sort(t)}))},path:function(t){for(var e=this,n=function(t,e){if(t===e)return t;var n=t.ancestors(),r=e.ancestors(),i=null;for(t=n.pop(),e=r.pop();t===e;)i=t,t=n.pop(),e=r.pop();return i}(e,t),r=[e];e!==n;)e=e.parent,r.push(e);for(var i=r.length;t!==n;)r.splice(i,0,t),t=t.parent;return r},ancestors:function(){for(var t=this,e=[t];t=t.parent;)e.push(t);return e},descendants:function(){var t=[];return this.each((function(e){t.push(e)})),t},leaves:function(){var t=[];return this.eachBefore((function(e){e.children||t.push(e)})),t},links:function(){var t=this,e=[];return t.each((function(n){n!==t&&e.push({source:n.parent,target:n})})),e},copy:function(){return Md(this).eachBefore(Dd)}};var Od=Array.prototype.slice;function Id(t){for(var e,n,r=0,i=(t=function(t){for(var e,n,r=t.length;r;)n=Math.random()*r--|0,e=t[r],t[r]=t[n],t[n]=e;return t}(Od.call(t))).length,a=[];r<i;)e=t[r],n&&Pd(n,e)?++r:(n=jd(a=Rd(a,e)),r=0);return n}function Rd(t,e){var n,r;if(Yd(e,t))return[e];for(n=0;n<t.length;++n)if(Fd(e,t[n])&&Yd(Ud(t[n],e),t))return[t[n],e];for(n=0;n<t.length-1;++n)for(r=n+1;r<t.length;++r)if(Fd(Ud(t[n],t[r]),e)&&Fd(Ud(t[n],e),t[r])&&Fd(Ud(t[r],e),t[n])&&Yd(zd(t[n],t[r],e),t))return[t[n],t[r],e];throw new Error}function Fd(t,e){var n=t.r-e.r,r=e.x-t.x,i=e.y-t.y;return n<0||n*n<r*r+i*i}function Pd(t,e){var n=t.r-e.r+1e-6,r=e.x-t.x,i=e.y-t.y;return n>0&&n*n>r*r+i*i}function Yd(t,e){for(var n=0;n<e.length;++n)if(!Pd(t,e[n]))return!1;return!0}function jd(t){switch(t.length){case 1:return function(t){return{x:t.x,y:t.y,r:t.r}}(t[0]);case 2:return Ud(t[0],t[1]);case 3:return zd(t[0],t[1],t[2])}}function Ud(t,e){var n=t.x,r=t.y,i=t.r,a=e.x,o=e.y,s=e.r,c=a-n,u=o-r,l=s-i,h=Math.sqrt(c*c+u*u);return{x:(n+a+c/h*l)/2,y:(r+o+u/h*l)/2,r:(h+i+s)/2}}function zd(t,e,n){var r=t.x,i=t.y,a=t.r,o=e.x,s=e.y,c=e.r,u=n.x,l=n.y,h=n.r,f=r-o,d=r-u,p=i-s,g=i-l,y=c-a,m=h-a,v=r*r+i*i-a*a,b=v-o*o-s*s+c*c,_=v-u*u-l*l+h*h,x=d*p-f*g,w=(p*_-g*b)/(2*x)-r,k=(g*y-p*m)/x,T=(d*b-f*_)/(2*x)-i,C=(f*m-d*y)/x,E=k*k+C*C-1,S=2*(a+w*k+T*C),A=w*w+T*T-a*a,M=-(E?(S+Math.sqrt(S*S-4*E*A))/(2*E):A/S);return{x:r+w+k*M,y:i+T+C*M,r:M}}function $d(t,e,n){var r,i,a,o,s=t.x-e.x,c=t.y-e.y,u=s*s+c*c;u?(i=e.r+n.r,i*=i,o=t.r+n.r,i>(o*=o)?(r=(u+o-i)/(2*u),a=Math.sqrt(Math.max(0,o/u-r*r)),n.x=t.x-r*s-a*c,n.y=t.y-r*c+a*s):(r=(u+i-o)/(2*u),a=Math.sqrt(Math.max(0,i/u-r*r)),n.x=e.x+r*s-a*c,n.y=e.y+r*c+a*s)):(n.x=e.x+n.r,n.y=e.y)}function qd(t,e){var n=t.r+e.r-1e-6,r=e.x-t.x,i=e.y-t.y;return n>0&&n*n>r*r+i*i}function Hd(t){var e=t._,n=t.next._,r=e.r+n.r,i=(e.x*n.r+n.x*e.r)/r,a=(e.y*n.r+n.y*e.r)/r;return i*i+a*a}function Wd(t){this._=t,this.next=null,this.previous=null}function Vd(t){if(!(i=t.length))return 0;var e,n,r,i,a,o,s,c,u,l,h;if((e=t[0]).x=0,e.y=0,!(i>1))return e.r;if(n=t[1],e.x=-n.r,n.x=e.r,n.y=0,!(i>2))return e.r+n.r;$d(n,e,r=t[2]),e=new Wd(e),n=new Wd(n),r=new Wd(r),e.next=r.previous=n,n.next=e.previous=r,r.next=n.previous=e;t:for(s=3;s<i;++s){$d(e._,n._,r=t[s]),r=new Wd(r),c=n.next,u=e.previous,l=n._.r,h=e._.r;do{if(l<=h){if(qd(c._,r._)){n=c,e.next=n,n.previous=e,--s;continue t}l+=c._.r,c=c.next}else{if(qd(u._,r._)){(e=u).next=n,n.previous=e,--s;continue t}h+=u._.r,u=u.previous}}while(c!==u.next);for(r.previous=e,r.next=n,e.next=n.previous=n=r,a=Hd(e);(r=r.next)!==n;)(o=Hd(r))<a&&(e=r,a=o);n=e.next}for(e=[n._],r=n;(r=r.next)!==n;)e.push(r._);for(r=Id(e),s=0;s<i;++s)(e=t[s]).x-=r.x,e.y-=r.y;return r.r}function Gd(t){return Vd(t),t}function Xd(t){return null==t?null:Zd(t)}function Zd(t){if("function"!=typeof t)throw new Error;return t}function Qd(){return 0}function Kd(t){return function(){return t}}function Jd(t){return Math.sqrt(t.value)}function tp(){var t=null,e=1,n=1,r=Qd;function i(i){return i.x=e/2,i.y=n/2,t?i.eachBefore(ep(t)).eachAfter(np(r,.5)).eachBefore(rp(1)):i.eachBefore(ep(Jd)).eachAfter(np(Qd,1)).eachAfter(np(r,i.r/Math.min(e,n))).eachBefore(rp(Math.min(e,n)/(2*i.r))),i}return i.radius=function(e){return arguments.length?(t=Xd(e),i):t},i.size=function(t){return arguments.length?(e=+t[0],n=+t[1],i):[e,n]},i.padding=function(t){return arguments.length?(r="function"==typeof t?t:Kd(+t),i):r},i}function ep(t){return function(e){e.children||(e.r=Math.max(0,+t(e)||0))}}function np(t,e){return function(n){if(r=n.children){var r,i,a,o=r.length,s=t(n)*e||0;if(s)for(i=0;i<o;++i)r[i].r+=s;if(a=Vd(r),s)for(i=0;i<o;++i)r[i].r-=s;n.r=a+s}}}function rp(t){return function(e){var n=e.parent;e.r*=t,n&&(e.x=n.x+t*e.x,e.y=n.y+t*e.y)}}function ip(t){t.x0=Math.round(t.x0),t.y0=Math.round(t.y0),t.x1=Math.round(t.x1),t.y1=Math.round(t.y1)}function ap(t,e,n,r,i){for(var a,o=t.children,s=-1,c=o.length,u=t.value&&(r-e)/t.value;++s<c;)(a=o[s]).y0=n,a.y1=i,a.x0=e,a.x1=e+=a.value*u}function op(){var t=1,e=1,n=0,r=!1;function i(i){var a=i.height+1;return i.x0=i.y0=n,i.x1=t,i.y1=e/a,i.eachBefore(function(t,e){return function(r){r.children&&ap(r,r.x0,t*(r.depth+1)/e,r.x1,t*(r.depth+2)/e);var i=r.x0,a=r.y0,o=r.x1-n,s=r.y1-n;o<i&&(i=o=(i+o)/2),s<a&&(a=s=(a+s)/2),r.x0=i,r.y0=a,r.x1=o,r.y1=s}}(e,a)),r&&i.eachBefore(ip),i}return i.round=function(t){return arguments.length?(r=!!t,i):r},i.size=function(n){return arguments.length?(t=+n[0],e=+n[1],i):[t,e]},i.padding=function(t){return arguments.length?(n=+t,i):n},i}var sp={depth:-1},cp={};function up(t){return t.id}function lp(t){return t.parentId}function hp(){var t=up,e=lp;function n(n){var r,i,a,o,s,c,u,l=n.length,h=new Array(l),f={};for(i=0;i<l;++i)r=n[i],s=h[i]=new Ld(r),null!=(c=t(r,i,n))&&(c+="")&&(f[u="$"+(s.id=c)]=u in f?cp:s);for(i=0;i<l;++i)if(s=h[i],null!=(c=e(n[i],i,n))&&(c+="")){if(!(o=f["$"+c]))throw new Error("missing: "+c);if(o===cp)throw new Error("ambiguous: "+c);o.children?o.children.push(s):o.children=[s],s.parent=o}else{if(a)throw new Error("multiple roots");a=s}if(!a)throw new Error("no root");if(a.parent=sp,a.eachBefore((function(t){t.depth=t.parent.depth+1,--l})).eachBefore(Bd),a.parent=null,l>0)throw new Error("cycle");return a}return n.id=function(e){return arguments.length?(t=Zd(e),n):t},n.parentId=function(t){return arguments.length?(e=Zd(t),n):e},n}function fp(t,e){return t.parent===e.parent?1:2}function dp(t){var e=t.children;return e?e[0]:t.t}function pp(t){var e=t.children;return e?e[e.length-1]:t.t}function gp(t,e,n){var r=n/(e.i-t.i);e.c-=r,e.s+=n,t.c+=r,e.z+=n,e.m+=n}function yp(t,e,n){return t.a.parent===e.parent?t.a:n}function mp(t,e){this._=t,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=e}function vp(){var t=fp,e=1,n=1,r=null;function i(i){var c=function(t){for(var e,n,r,i,a,o=new mp(t,0),s=[o];e=s.pop();)if(r=e._.children)for(e.children=new Array(a=r.length),i=a-1;i>=0;--i)s.push(n=e.children[i]=new mp(r[i],i)),n.parent=e;return(o.parent=new mp(null,0)).children=[o],o}(i);if(c.eachAfter(a),c.parent.m=-c.z,c.eachBefore(o),r)i.eachBefore(s);else{var u=i,l=i,h=i;i.eachBefore((function(t){t.x<u.x&&(u=t),t.x>l.x&&(l=t),t.depth>h.depth&&(h=t)}));var f=u===l?1:t(u,l)/2,d=f-u.x,p=e/(l.x+f+d),g=n/(h.depth||1);i.eachBefore((function(t){t.x=(t.x+d)*p,t.y=t.depth*g}))}return i}function a(e){var n=e.children,r=e.parent.children,i=e.i?r[e.i-1]:null;if(n){!function(t){for(var e,n=0,r=0,i=t.children,a=i.length;--a>=0;)(e=i[a]).z+=n,e.m+=n,n+=e.s+(r+=e.c)}(e);var a=(n[0].z+n[n.length-1].z)/2;i?(e.z=i.z+t(e._,i._),e.m=e.z-a):e.z=a}else i&&(e.z=i.z+t(e._,i._));e.parent.A=function(e,n,r){if(n){for(var i,a=e,o=e,s=n,c=a.parent.children[0],u=a.m,l=o.m,h=s.m,f=c.m;s=pp(s),a=dp(a),s&&a;)c=dp(c),(o=pp(o)).a=e,(i=s.z+h-a.z-u+t(s._,a._))>0&&(gp(yp(s,e,r),e,i),u+=i,l+=i),h+=s.m,u+=a.m,f+=c.m,l+=o.m;s&&!pp(o)&&(o.t=s,o.m+=h-l),a&&!dp(c)&&(c.t=a,c.m+=u-f,r=e)}return r}(e,i,e.parent.A||r[0])}function o(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function s(t){t.x*=e,t.y=t.depth*n}return i.separation=function(e){return arguments.length?(t=e,i):t},i.size=function(t){return arguments.length?(r=!1,e=+t[0],n=+t[1],i):r?null:[e,n]},i.nodeSize=function(t){return arguments.length?(r=!0,e=+t[0],n=+t[1],i):r?[e,n]:null},i}function bp(t,e,n,r,i){for(var a,o=t.children,s=-1,c=o.length,u=t.value&&(i-n)/t.value;++s<c;)(a=o[s]).x0=e,a.x1=r,a.y0=n,a.y1=n+=a.value*u}mp.prototype=Object.create(Ld.prototype);var _p=(1+Math.sqrt(5))/2;function xp(t,e,n,r,i,a){for(var o,s,c,u,l,h,f,d,p,g,y,m=[],v=e.children,b=0,_=0,x=v.length,w=e.value;b<x;){c=i-n,u=a-r;do{l=v[_++].value}while(!l&&_<x);for(h=f=l,y=l*l*(g=Math.max(u/c,c/u)/(w*t)),p=Math.max(f/y,y/h);_<x;++_){if(l+=s=v[_].value,s<h&&(h=s),s>f&&(f=s),y=l*l*g,(d=Math.max(f/y,y/h))>p){l-=s;break}p=d}m.push(o={value:l,dice:c<u,children:v.slice(b,_)}),o.dice?ap(o,n,r,i,w?r+=u*l/w:a):bp(o,n,r,w?n+=c*l/w:i,a),w-=l,b=_}return m}const wp=function t(e){function n(t,n,r,i,a){xp(e,t,n,r,i,a)}return n.ratio=function(e){return t((e=+e)>1?e:1)},n}(_p);function kp(){var t=wp,e=!1,n=1,r=1,i=[0],a=Qd,o=Qd,s=Qd,c=Qd,u=Qd;function l(t){return t.x0=t.y0=0,t.x1=n,t.y1=r,t.eachBefore(h),i=[0],e&&t.eachBefore(ip),t}function h(e){var n=i[e.depth],r=e.x0+n,l=e.y0+n,h=e.x1-n,f=e.y1-n;h<r&&(r=h=(r+h)/2),f<l&&(l=f=(l+f)/2),e.x0=r,e.y0=l,e.x1=h,e.y1=f,e.children&&(n=i[e.depth+1]=a(e)/2,r+=u(e)-n,l+=o(e)-n,(h-=s(e)-n)<r&&(r=h=(r+h)/2),(f-=c(e)-n)<l&&(l=f=(l+f)/2),t(e,r,l,h,f))}return l.round=function(t){return arguments.length?(e=!!t,l):e},l.size=function(t){return arguments.length?(n=+t[0],r=+t[1],l):[n,r]},l.tile=function(e){return arguments.length?(t=Zd(e),l):t},l.padding=function(t){return arguments.length?l.paddingInner(t).paddingOuter(t):l.paddingInner()},l.paddingInner=function(t){return arguments.length?(a="function"==typeof t?t:Kd(+t),l):a},l.paddingOuter=function(t){return arguments.length?l.paddingTop(t).paddingRight(t).paddingBottom(t).paddingLeft(t):l.paddingTop()},l.paddingTop=function(t){return arguments.length?(o="function"==typeof t?t:Kd(+t),l):o},l.paddingRight=function(t){return arguments.length?(s="function"==typeof t?t:Kd(+t),l):s},l.paddingBottom=function(t){return arguments.length?(c="function"==typeof t?t:Kd(+t),l):c},l.paddingLeft=function(t){return arguments.length?(u="function"==typeof t?t:Kd(+t),l):u},l}function Tp(t,e,n,r,i){var a,o,s=t.children,c=s.length,u=new Array(c+1);for(u[0]=o=a=0;a<c;++a)u[a+1]=o+=s[a].value;!function t(e,n,r,i,a,o,c){if(e>=n-1){var l=s[e];return l.x0=i,l.y0=a,l.x1=o,void(l.y1=c)}for(var h=u[e],f=r/2+h,d=e+1,p=n-1;d<p;){var g=d+p>>>1;u[g]<f?d=g+1:p=g}f-u[d-1]<u[d]-f&&e+1<d&&--d;var y=u[d]-h,m=r-y;if(o-i>c-a){var v=(i*m+o*y)/r;t(e,d,y,i,a,v,c),t(d,n,m,v,a,o,c)}else{var b=(a*m+c*y)/r;t(e,d,y,i,a,o,b),t(d,n,m,i,b,o,c)}}(0,c,t.value,e,n,r,i)}function Cp(t,e,n,r,i){(1&t.depth?bp:ap)(t,e,n,r,i)}const Ep=function t(e){function n(t,n,r,i,a){if((o=t._squarify)&&o.ratio===e)for(var o,s,c,u,l,h=-1,f=o.length,d=t.value;++h<f;){for(c=(s=o[h]).children,u=s.value=0,l=c.length;u<l;++u)s.value+=c[u].value;s.dice?ap(s,n,r,i,r+=(a-r)*s.value/d):bp(s,n,r,n+=(i-n)*s.value/d,a),d-=s.value}else t._squarify=o=xp(e,t,n,r,i,a),o.ratio=e}return n.ratio=function(e){return t((e=+e)>1?e:1)},n}(_p);function Sp(t){var e=t.length;return function(n){return t[Math.max(0,Math.min(e-1,Math.floor(n*e)))]}}function Ap(t,e){var n=dn(+t,+e);return function(t){var e=n(t);return e-360*Math.floor(e/360)}}function Mp(t,e){return t=+t,e=+e,function(n){return Math.round(t*(1-n)+e*n)}}var Np=Math.SQRT2;function Dp(t){return((t=Math.exp(t))+1/t)/2}function Bp(t,e){var n,r,i=t[0],a=t[1],o=t[2],s=e[0],c=e[1],u=e[2],l=s-i,h=c-a,f=l*l+h*h;if(f<1e-12)r=Math.log(u/o)/Np,n=function(t){return[i+t*l,a+t*h,o*Math.exp(Np*t*r)]};else{var d=Math.sqrt(f),p=(u*u-o*o+4*f)/(2*o*2*d),g=(u*u-o*o-4*f)/(2*u*2*d),y=Math.log(Math.sqrt(p*p+1)-p),m=Math.log(Math.sqrt(g*g+1)-g);r=(m-y)/Np,n=function(t){var e,n=t*r,s=Dp(y),c=o/(2*d)*(s*(e=Np*n+y,((e=Math.exp(2*e))-1)/(e+1))-function(t){return((t=Math.exp(t))-1/t)/2}(y));return[i+c*l,a+c*h,o*s/Dp(Np*n+y)]}}return n.duration=1e3*r,n}function Lp(t){return function(e,n){var r=t((e=an(e)).h,(n=an(n)).h),i=pn(e.s,n.s),a=pn(e.l,n.l),o=pn(e.opacity,n.opacity);return function(t){return e.h=r(t),e.s=i(t),e.l=a(t),e.opacity=o(t),e+""}}}const Op=Lp(dn);var Ip=Lp(pn);function Rp(t,e){var n=pn((t=Ta(t)).l,(e=Ta(e)).l),r=pn(t.a,e.a),i=pn(t.b,e.b),a=pn(t.opacity,e.opacity);return function(e){return t.l=n(e),t.a=r(e),t.b=i(e),t.opacity=a(e),t+""}}function Fp(t){return function(e,n){var r=t((e=Ba(e)).h,(n=Ba(n)).h),i=pn(e.c,n.c),a=pn(e.l,n.l),o=pn(e.opacity,n.opacity);return function(t){return e.h=r(t),e.c=i(t),e.l=a(t),e.opacity=o(t),e+""}}}const Pp=Fp(dn);var Yp=Fp(pn);function jp(t){return function e(n){function r(e,r){var i=t((e=qa(e)).h,(r=qa(r)).h),a=pn(e.s,r.s),o=pn(e.l,r.l),s=pn(e.opacity,r.opacity);return function(t){return e.h=i(t),e.s=a(t),e.l=o(Math.pow(t,n)),e.opacity=s(t),e+""}}return n=+n,r.gamma=e,r}(1)}const Up=jp(dn);var zp=jp(pn);function $p(t,e){for(var n=0,r=e.length-1,i=e[0],a=new Array(r<0?0:r);n<r;)a[n]=t(i,i=e[++n]);return function(t){var e=Math.max(0,Math.min(r-1,Math.floor(t*=r)));return a[e](t-e)}}function qp(t,e){for(var n=new Array(e),r=0;r<e;++r)n[r]=t(r/(e-1));return n}function Hp(t){for(var e,n=-1,r=t.length,i=t[r-1],a=0;++n<r;)e=i,i=t[n],a+=e[1]*i[0]-e[0]*i[1];return a/2}function Wp(t){for(var e,n,r=-1,i=t.length,a=0,o=0,s=t[i-1],c=0;++r<i;)e=s,s=t[r],c+=n=e[0]*s[1]-s[0]*e[1],a+=(e[0]+s[0])*n,o+=(e[1]+s[1])*n;return[a/(c*=3),o/c]}function Vp(t,e,n){return(e[0]-t[0])*(n[1]-t[1])-(e[1]-t[1])*(n[0]-t[0])}function Gp(t,e){return t[0]-e[0]||t[1]-e[1]}function Xp(t){for(var e=t.length,n=[0,1],r=2,i=2;i<e;++i){for(;r>1&&Vp(t[n[r-2]],t[n[r-1]],t[i])<=0;)--r;n[r++]=i}return n.slice(0,r)}function Zp(t){if((n=t.length)<3)return null;var e,n,r=new Array(n),i=new Array(n);for(e=0;e<n;++e)r[e]=[+t[e][0],+t[e][1],e];for(r.sort(Gp),e=0;e<n;++e)i[e]=[r[e][0],-r[e][1]];var a=Xp(r),o=Xp(i),s=o[0]===a[0],c=o[o.length-1]===a[a.length-1],u=[];for(e=a.length-1;e>=0;--e)u.push(t[r[a[e]][2]]);for(e=+s;e<o.length-c;++e)u.push(t[r[o[e]][2]]);return u}function Qp(t,e){for(var n,r,i=t.length,a=t[i-1],o=e[0],s=e[1],c=a[0],u=a[1],l=!1,h=0;h<i;++h)n=(a=t[h])[0],(r=a[1])>s!=u>s&&o<(c-n)*(s-r)/(u-r)+n&&(l=!l),c=n,u=r;return l}function Kp(t){for(var e,n,r=-1,i=t.length,a=t[i-1],o=a[0],s=a[1],c=0;++r<i;)e=o,n=s,e-=o=(a=t[r])[0],n-=s=a[1],c+=Math.sqrt(e*e+n*n);return c}function Jp(){return Math.random()}const tg=function t(e){function n(t,n){return t=null==t?0:+t,n=null==n?1:+n,1===arguments.length?(n=t,t=0):n-=t,function(){return e()*n+t}}return n.source=t,n}(Jp),eg=function t(e){function n(t,n){var r,i;return t=null==t?0:+t,n=null==n?1:+n,function(){var a;if(null!=r)a=r,r=null;else do{r=2*e()-1,a=2*e()-1,i=r*r+a*a}while(!i||i>1);return t+n*a*Math.sqrt(-2*Math.log(i)/i)}}return n.source=t,n}(Jp),ng=function t(e){function n(){var t=eg.source(e).apply(this,arguments);return function(){return Math.exp(t())}}return n.source=t,n}(Jp),rg=function t(e){function n(t){return function(){for(var n=0,r=0;r<t;++r)n+=e();return n}}return n.source=t,n}(Jp),ig=function t(e){function n(t){var n=rg.source(e)(t);return function(){return n()/t}}return n.source=t,n}(Jp),ag=function t(e){function n(t){return function(){return-Math.log(1-e())/t}}return n.source=t,n}(Jp);function og(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t)}return this}function sg(t,e){switch(arguments.length){case 0:break;case 1:this.interpolator(t);break;default:this.interpolator(e).domain(t)}return this}var cg=Array.prototype,ug=cg.map,lg=cg.slice,hg={name:"implicit"};function fg(){var t=na(),e=[],n=[],r=hg;function i(i){var a=i+"",o=t.get(a);if(!o){if(r!==hg)return r;t.set(a,o=e.push(i))}return n[(o-1)%n.length]}return i.domain=function(n){if(!arguments.length)return e.slice();e=[],t=na();for(var r,a,o=-1,s=n.length;++o<s;)t.has(a=(r=n[o])+"")||t.set(a,e.push(r));return i},i.range=function(t){return arguments.length?(n=lg.call(t),i):n.slice()},i.unknown=function(t){return arguments.length?(r=t,i):r},i.copy=function(){return fg(e,n).unknown(r)},og.apply(i,arguments),i}function dg(){var t,e,n=fg().unknown(void 0),r=n.domain,i=n.range,a=[0,1],o=!1,s=0,c=0,u=.5;function l(){var n=r().length,l=a[1]<a[0],h=a[l-0],f=a[1-l];t=(f-h)/Math.max(1,n-s+2*c),o&&(t=Math.floor(t)),h+=(f-h-t*(n-s))*u,e=t*(1-s),o&&(h=Math.round(h),e=Math.round(e));var d=k(n).map((function(e){return h+t*e}));return i(l?d.reverse():d)}return delete n.unknown,n.domain=function(t){return arguments.length?(r(t),l()):r()},n.range=function(t){return arguments.length?(a=[+t[0],+t[1]],l()):a.slice()},n.rangeRound=function(t){return a=[+t[0],+t[1]],o=!0,l()},n.bandwidth=function(){return e},n.step=function(){return t},n.round=function(t){return arguments.length?(o=!!t,l()):o},n.padding=function(t){return arguments.length?(s=Math.min(1,c=+t),l()):s},n.paddingInner=function(t){return arguments.length?(s=Math.min(1,t),l()):s},n.paddingOuter=function(t){return arguments.length?(c=+t,l()):c},n.align=function(t){return arguments.length?(u=Math.max(0,Math.min(1,t)),l()):u},n.copy=function(){return dg(r(),a).round(o).paddingInner(s).paddingOuter(c).align(u)},og.apply(l(),arguments)}function pg(t){var e=t.copy;return t.padding=t.paddingOuter,delete t.paddingInner,delete t.paddingOuter,t.copy=function(){return pg(e())},t}function gg(){return pg(dg.apply(null,arguments).paddingInner(1))}function yg(t){return+t}var mg=[0,1];function vg(t){return t}function bg(t,e){return(e-=t=+t)?function(n){return(n-t)/e}:(n=isNaN(e)?NaN:.5,function(){return n});var n}function _g(t){var e,n=t[0],r=t[t.length-1];return n>r&&(e=n,n=r,r=e),function(t){return Math.max(n,Math.min(r,t))}}function xg(t,e,n){var r=t[0],i=t[1],a=e[0],o=e[1];return i<r?(r=bg(i,r),a=n(o,a)):(r=bg(r,i),a=n(a,o)),function(t){return a(r(t))}}function wg(t,e,n){var r=Math.min(t.length,e.length)-1,i=new Array(r),a=new Array(r),o=-1;for(t[r]<t[0]&&(t=t.slice().reverse(),e=e.slice().reverse());++o<r;)i[o]=bg(t[o],t[o+1]),a[o]=n(e[o],e[o+1]);return function(e){var n=u(t,e,1,r)-1;return a[n](i[n](e))}}function kg(t,e){return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function Tg(){var t,e,n,r,i,a,o=mg,s=mg,c=Mn,u=vg;function l(){return r=Math.min(o.length,s.length)>2?wg:xg,i=a=null,h}function h(e){return isNaN(e=+e)?n:(i||(i=r(o.map(t),s,c)))(t(u(e)))}return h.invert=function(n){return u(e((a||(a=r(s,o.map(t),Tn)))(n)))},h.domain=function(t){return arguments.length?(o=ug.call(t,yg),u===vg||(u=_g(o)),l()):o.slice()},h.range=function(t){return arguments.length?(s=lg.call(t),l()):s.slice()},h.rangeRound=function(t){return s=lg.call(t),c=Mp,l()},h.clamp=function(t){return arguments.length?(u=t?_g(o):vg,h):u!==vg},h.interpolate=function(t){return arguments.length?(c=t,l()):c},h.unknown=function(t){return arguments.length?(n=t,h):n},function(n,r){return t=n,e=r,l()}}function Cg(t,e){return Tg()(t,e)}function Eg(t,e,n,r){var i,a=M(t,e,n);switch((r=cc(null==r?",f":r)).type){case"s":var o=Math.max(Math.abs(t),Math.abs(e));return null!=r.precision||isNaN(i=xc(a,o))||(r.precision=i),gc(r,o);case"":case"e":case"g":case"p":case"r":null!=r.precision||isNaN(i=wc(a,Math.max(Math.abs(t),Math.abs(e))))||(r.precision=i-("e"===r.type));break;case"f":case"%":null!=r.precision||isNaN(i=_c(a))||(r.precision=i-2*("%"===r.type))}return pc(r)}function Sg(t){var e=t.domain;return t.ticks=function(t){var n=e();return S(n[0],n[n.length-1],null==t?10:t)},t.tickFormat=function(t,n){var r=e();return Eg(r[0],r[r.length-1],null==t?10:t,n)},t.nice=function(n){null==n&&(n=10);var r,i=e(),a=0,o=i.length-1,s=i[a],c=i[o];return c<s&&(r=s,s=c,c=r,r=a,a=o,o=r),(r=A(s,c,n))>0?r=A(s=Math.floor(s/r)*r,c=Math.ceil(c/r)*r,n):r<0&&(r=A(s=Math.ceil(s*r)/r,c=Math.floor(c*r)/r,n)),r>0?(i[a]=Math.floor(s/r)*r,i[o]=Math.ceil(c/r)*r,e(i)):r<0&&(i[a]=Math.ceil(s*r)/r,i[o]=Math.floor(c*r)/r,e(i)),t},t}function Ag(){var t=Cg(vg,vg);return t.copy=function(){return kg(t,Ag())},og.apply(t,arguments),Sg(t)}function Mg(t){var e;function n(t){return isNaN(t=+t)?e:t}return n.invert=n,n.domain=n.range=function(e){return arguments.length?(t=ug.call(e,yg),n):t.slice()},n.unknown=function(t){return arguments.length?(e=t,n):e},n.copy=function(){return Mg(t).unknown(e)},t=arguments.length?ug.call(t,yg):[0,1],Sg(n)}function Ng(t,e){var n,r=0,i=(t=t.slice()).length-1,a=t[r],o=t[i];return o<a&&(n=r,r=i,i=n,n=a,a=o,o=n),t[r]=e.floor(a),t[i]=e.ceil(o),t}function Dg(t){return Math.log(t)}function Bg(t){return Math.exp(t)}function Lg(t){return-Math.log(-t)}function Og(t){return-Math.exp(-t)}function Ig(t){return isFinite(t)?+("1e"+t):t<0?0:t}function Rg(t){return function(e){return-t(-e)}}function Fg(t){var e,n,r=t(Dg,Bg),i=r.domain,a=10;function o(){return e=function(t){return t===Math.E?Math.log:10===t&&Math.log10||2===t&&Math.log2||(t=Math.log(t),function(e){return Math.log(e)/t})}(a),n=function(t){return 10===t?Ig:t===Math.E?Math.exp:function(e){return Math.pow(t,e)}}(a),i()[0]<0?(e=Rg(e),n=Rg(n),t(Lg,Og)):t(Dg,Bg),r}return r.base=function(t){return arguments.length?(a=+t,o()):a},r.domain=function(t){return arguments.length?(i(t),o()):i()},r.ticks=function(t){var r,o=i(),s=o[0],c=o[o.length-1];(r=c<s)&&(f=s,s=c,c=f);var u,l,h,f=e(s),d=e(c),p=null==t?10:+t,g=[];if(!(a%1)&&d-f<p){if(f=Math.round(f)-1,d=Math.round(d)+1,s>0){for(;f<d;++f)for(l=1,u=n(f);l<a;++l)if(!((h=u*l)<s)){if(h>c)break;g.push(h)}}else for(;f<d;++f)for(l=a-1,u=n(f);l>=1;--l)if(!((h=u*l)<s)){if(h>c)break;g.push(h)}}else g=S(f,d,Math.min(d-f,p)).map(n);return r?g.reverse():g},r.tickFormat=function(t,i){if(null==i&&(i=10===a?".0e":","),"function"!=typeof i&&(i=pc(i)),t===1/0)return i;null==t&&(t=10);var o=Math.max(1,a*t/r.ticks().length);return function(t){var r=t/n(Math.round(e(t)));return r*a<a-.5&&(r*=a),r<=o?i(t):""}},r.nice=function(){return i(Ng(i(),{floor:function(t){return n(Math.floor(e(t)))},ceil:function(t){return n(Math.ceil(e(t)))}}))},r}function Pg(){var t=Fg(Tg()).domain([1,10]);return t.copy=function(){return kg(t,Pg()).base(t.base())},og.apply(t,arguments),t}function Yg(t){return function(e){return Math.sign(e)*Math.log1p(Math.abs(e/t))}}function jg(t){return function(e){return Math.sign(e)*Math.expm1(Math.abs(e))*t}}function Ug(t){var e=1,n=t(Yg(e),jg(e));return n.constant=function(n){return arguments.length?t(Yg(e=+n),jg(e)):e},Sg(n)}function zg(){var t=Ug(Tg());return t.copy=function(){return kg(t,zg()).constant(t.constant())},og.apply(t,arguments)}function $g(t){return function(e){return e<0?-Math.pow(-e,t):Math.pow(e,t)}}function qg(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}function Hg(t){return t<0?-t*t:t*t}function Wg(t){var e=t(vg,vg),n=1;function r(){return 1===n?t(vg,vg):.5===n?t(qg,Hg):t($g(n),$g(1/n))}return e.exponent=function(t){return arguments.length?(n=+t,r()):n},Sg(e)}function Vg(){var t=Wg(Tg());return t.copy=function(){return kg(t,Vg()).exponent(t.exponent())},og.apply(t,arguments),t}function Gg(){return Vg.apply(null,arguments).exponent(.5)}function Xg(){var t,e=[],n=[],r=[];function a(){var t=0,i=Math.max(1,n.length);for(r=new Array(i-1);++t<i;)r[t-1]=B(e,t/i);return o}function o(e){return isNaN(e=+e)?t:n[u(r,e)]}return o.invertExtent=function(t){var i=n.indexOf(t);return i<0?[NaN,NaN]:[i>0?r[i-1]:e[0],i<r.length?r[i]:e[e.length-1]]},o.domain=function(t){if(!arguments.length)return e.slice();e=[];for(var n,r=0,o=t.length;r<o;++r)null==(n=t[r])||isNaN(n=+n)||e.push(n);return e.sort(i),a()},o.range=function(t){return arguments.length?(n=lg.call(t),a()):n.slice()},o.unknown=function(e){return arguments.length?(t=e,o):t},o.quantiles=function(){return r.slice()},o.copy=function(){return Xg().domain(e).range(n).unknown(t)},og.apply(o,arguments)}function Zg(){var t,e=0,n=1,r=1,i=[.5],a=[0,1];function o(e){return e<=e?a[u(i,e,0,r)]:t}function s(){var t=-1;for(i=new Array(r);++t<r;)i[t]=((t+1)*n-(t-r)*e)/(r+1);return o}return o.domain=function(t){return arguments.length?(e=+t[0],n=+t[1],s()):[e,n]},o.range=function(t){return arguments.length?(r=(a=lg.call(t)).length-1,s()):a.slice()},o.invertExtent=function(t){var o=a.indexOf(t);return o<0?[NaN,NaN]:o<1?[e,i[0]]:o>=r?[i[r-1],n]:[i[o-1],i[o]]},o.unknown=function(e){return arguments.length?(t=e,o):o},o.thresholds=function(){return i.slice()},o.copy=function(){return Zg().domain([e,n]).range(a).unknown(t)},og.apply(Sg(o),arguments)}function Qg(){var t,e=[.5],n=[0,1],r=1;function i(i){return i<=i?n[u(e,i,0,r)]:t}return i.domain=function(t){return arguments.length?(e=lg.call(t),r=Math.min(e.length,n.length-1),i):e.slice()},i.range=function(t){return arguments.length?(n=lg.call(t),r=Math.min(e.length,n.length-1),i):n.slice()},i.invertExtent=function(t){var r=n.indexOf(t);return[e[r-1],e[r]]},i.unknown=function(e){return arguments.length?(t=e,i):t},i.copy=function(){return Qg().domain(e).range(n).unknown(t)},og.apply(i,arguments)}var Kg=new Date,Jg=new Date;function ty(t,e,n,r){function i(e){return t(e=0===arguments.length?new Date:new Date(+e)),e}return i.floor=function(e){return t(e=new Date(+e)),e},i.ceil=function(n){return t(n=new Date(n-1)),e(n,1),t(n),n},i.round=function(t){var e=i(t),n=i.ceil(t);return t-e<n-t?e:n},i.offset=function(t,n){return e(t=new Date(+t),null==n?1:Math.floor(n)),t},i.range=function(n,r,a){var o,s=[];if(n=i.ceil(n),a=null==a?1:Math.floor(a),!(n<r&&a>0))return s;do{s.push(o=new Date(+n)),e(n,a),t(n)}while(o<n&&n<r);return s},i.filter=function(n){return ty((function(e){if(e>=e)for(;t(e),!n(e);)e.setTime(e-1)}),(function(t,r){if(t>=t)if(r<0)for(;++r<=0;)for(;e(t,-1),!n(t););else for(;--r>=0;)for(;e(t,1),!n(t););}))},n&&(i.count=function(e,r){return Kg.setTime(+e),Jg.setTime(+r),t(Kg),t(Jg),Math.floor(n(Kg,Jg))},i.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?i.filter(r?function(e){return r(e)%t==0}:function(e){return i.count(0,e)%t==0}):i:null}),i}var ey=ty((function(t){t.setMonth(0,1),t.setHours(0,0,0,0)}),(function(t,e){t.setFullYear(t.getFullYear()+e)}),(function(t,e){return e.getFullYear()-t.getFullYear()}),(function(t){return t.getFullYear()}));ey.every=function(t){return isFinite(t=Math.floor(t))&&t>0?ty((function(e){e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)}),(function(e,n){e.setFullYear(e.getFullYear()+n*t)})):null};const ny=ey;var ry=ey.range,iy=ty((function(t){t.setDate(1),t.setHours(0,0,0,0)}),(function(t,e){t.setMonth(t.getMonth()+e)}),(function(t,e){return e.getMonth()-t.getMonth()+12*(e.getFullYear()-t.getFullYear())}),(function(t){return t.getMonth()}));const ay=iy;var oy=iy.range,sy=1e3,cy=6e4,uy=36e5,ly=864e5,hy=6048e5;function fy(t){return ty((function(e){e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)}),(function(t,e){t.setDate(t.getDate()+7*e)}),(function(t,e){return(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*cy)/hy}))}var dy=fy(0),py=fy(1),gy=fy(2),yy=fy(3),my=fy(4),vy=fy(5),by=fy(6),_y=dy.range,xy=py.range,wy=gy.range,ky=yy.range,Ty=my.range,Cy=vy.range,Ey=by.range,Sy=ty((function(t){t.setHours(0,0,0,0)}),(function(t,e){t.setDate(t.getDate()+e)}),(function(t,e){return(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*cy)/ly}),(function(t){return t.getDate()-1}));const Ay=Sy;var My=Sy.range,Ny=ty((function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*sy-t.getMinutes()*cy)}),(function(t,e){t.setTime(+t+e*uy)}),(function(t,e){return(e-t)/uy}),(function(t){return t.getHours()}));const Dy=Ny;var By=Ny.range,Ly=ty((function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*sy)}),(function(t,e){t.setTime(+t+e*cy)}),(function(t,e){return(e-t)/cy}),(function(t){return t.getMinutes()}));const Oy=Ly;var Iy=Ly.range,Ry=ty((function(t){t.setTime(t-t.getMilliseconds())}),(function(t,e){t.setTime(+t+e*sy)}),(function(t,e){return(e-t)/sy}),(function(t){return t.getUTCSeconds()}));const Fy=Ry;var Py=Ry.range,Yy=ty((function(){}),(function(t,e){t.setTime(+t+e)}),(function(t,e){return e-t}));Yy.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?ty((function(e){e.setTime(Math.floor(e/t)*t)}),(function(e,n){e.setTime(+e+n*t)}),(function(e,n){return(n-e)/t})):Yy:null};const jy=Yy;var Uy=Yy.range;function zy(t){return ty((function(e){e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+7*e)}),(function(t,e){return(e-t)/hy}))}var $y=zy(0),qy=zy(1),Hy=zy(2),Wy=zy(3),Vy=zy(4),Gy=zy(5),Xy=zy(6),Zy=$y.range,Qy=qy.range,Ky=Hy.range,Jy=Wy.range,tm=Vy.range,em=Gy.range,nm=Xy.range,rm=ty((function(t){t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+e)}),(function(t,e){return(e-t)/ly}),(function(t){return t.getUTCDate()-1}));const im=rm;var am=rm.range,om=ty((function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)}),(function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()}),(function(t){return t.getUTCFullYear()}));om.every=function(t){return isFinite(t=Math.floor(t))&&t>0?ty((function(e){e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)}),(function(e,n){e.setUTCFullYear(e.getUTCFullYear()+n*t)})):null};const sm=om;var cm=om.range;function um(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function lm(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function hm(t,e,n){return{y:t,m:e,d:n,H:0,M:0,S:0,L:0}}function fm(t){var e=t.dateTime,n=t.date,r=t.time,i=t.periods,a=t.days,o=t.shortDays,s=t.months,c=t.shortMonths,u=Tm(i),l=Cm(i),h=Tm(a),f=Cm(a),d=Tm(o),p=Cm(o),g=Tm(s),y=Cm(s),m=Tm(c),v=Cm(c),b={a:function(t){return o[t.getDay()]},A:function(t){return a[t.getDay()]},b:function(t){return c[t.getMonth()]},B:function(t){return s[t.getMonth()]},c:null,d:Wm,e:Wm,f:Qm,g:cv,G:lv,H:Vm,I:Gm,j:Xm,L:Zm,m:Km,M:Jm,p:function(t){return i[+(t.getHours()>=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:Lv,s:Ov,S:tv,u:ev,U:nv,V:iv,w:av,W:ov,x:null,X:null,y:sv,Y:uv,Z:hv,"%":Bv},_={a:function(t){return o[t.getUTCDay()]},A:function(t){return a[t.getUTCDay()]},b:function(t){return c[t.getUTCMonth()]},B:function(t){return s[t.getUTCMonth()]},c:null,d:fv,e:fv,f:mv,g:Av,G:Nv,H:dv,I:pv,j:gv,L:yv,m:vv,M:bv,p:function(t){return i[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:Lv,s:Ov,S:_v,u:xv,U:wv,V:Tv,w:Cv,W:Ev,x:null,X:null,y:Sv,Y:Mv,Z:Dv,"%":Bv},x={a:function(t,e,n){var r=d.exec(e.slice(n));return r?(t.w=p[r[0].toLowerCase()],n+r[0].length):-1},A:function(t,e,n){var r=h.exec(e.slice(n));return r?(t.w=f[r[0].toLowerCase()],n+r[0].length):-1},b:function(t,e,n){var r=m.exec(e.slice(n));return r?(t.m=v[r[0].toLowerCase()],n+r[0].length):-1},B:function(t,e,n){var r=g.exec(e.slice(n));return r?(t.m=y[r[0].toLowerCase()],n+r[0].length):-1},c:function(t,n,r){return T(t,e,n,r)},d:Rm,e:Rm,f:zm,g:Bm,G:Dm,H:Pm,I:Pm,j:Fm,L:Um,m:Im,M:Ym,p:function(t,e,n){var r=u.exec(e.slice(n));return r?(t.p=l[r[0].toLowerCase()],n+r[0].length):-1},q:Om,Q:qm,s:Hm,S:jm,u:Sm,U:Am,V:Mm,w:Em,W:Nm,x:function(t,e,r){return T(t,n,e,r)},X:function(t,e,n){return T(t,r,e,n)},y:Bm,Y:Dm,Z:Lm,"%":$m};function w(t,e){return function(n){var r,i,a,o=[],s=-1,c=0,u=t.length;for(n instanceof Date||(n=new Date(+n));++s<u;)37===t.charCodeAt(s)&&(o.push(t.slice(c,s)),null!=(i=vm[r=t.charAt(++s)])?r=t.charAt(++s):i="e"===r?" ":"0",(a=e[r])&&(r=a(n,i)),o.push(r),c=s+1);return o.push(t.slice(c,s)),o.join("")}}function k(t,e){return function(n){var r,i,a=hm(1900,void 0,1);if(T(a,t,n+="",0)!=n.length)return null;if("Q"in a)return new Date(a.Q);if("s"in a)return new Date(1e3*a.s+("L"in a?a.L:0));if(e&&!("Z"in a)&&(a.Z=0),"p"in a&&(a.H=a.H%12+12*a.p),void 0===a.m&&(a.m="q"in a?a.q:0),"V"in a){if(a.V<1||a.V>53)return null;"w"in a||(a.w=1),"Z"in a?(i=(r=lm(hm(a.y,0,1))).getUTCDay(),r=i>4||0===i?qy.ceil(r):qy(r),r=im.offset(r,7*(a.V-1)),a.y=r.getUTCFullYear(),a.m=r.getUTCMonth(),a.d=r.getUTCDate()+(a.w+6)%7):(i=(r=um(hm(a.y,0,1))).getDay(),r=i>4||0===i?py.ceil(r):py(r),r=Ay.offset(r,7*(a.V-1)),a.y=r.getFullYear(),a.m=r.getMonth(),a.d=r.getDate()+(a.w+6)%7)}else("W"in a||"U"in a)&&("w"in a||(a.w="u"in a?a.u%7:"W"in a?1:0),i="Z"in a?lm(hm(a.y,0,1)).getUTCDay():um(hm(a.y,0,1)).getDay(),a.m=0,a.d="W"in a?(a.w+6)%7+7*a.W-(i+5)%7:a.w+7*a.U-(i+6)%7);return"Z"in a?(a.H+=a.Z/100|0,a.M+=a.Z%100,lm(a)):um(a)}}function T(t,e,n,r){for(var i,a,o=0,s=e.length,c=n.length;o<s;){if(r>=c)return-1;if(37===(i=e.charCodeAt(o++))){if(i=e.charAt(o++),!(a=x[i in vm?e.charAt(o++):i])||(r=a(t,n,r))<0)return-1}else if(i!=n.charCodeAt(r++))return-1}return r}return b.x=w(n,b),b.X=w(r,b),b.c=w(e,b),_.x=w(n,_),_.X=w(r,_),_.c=w(e,_),{format:function(t){var e=w(t+="",b);return e.toString=function(){return t},e},parse:function(t){var e=k(t+="",!1);return e.toString=function(){return t},e},utcFormat:function(t){var e=w(t+="",_);return e.toString=function(){return t},e},utcParse:function(t){var e=k(t+="",!0);return e.toString=function(){return t},e}}}var dm,pm,gm,ym,mm,vm={"-":"",_:" ",0:"0"},bm=/^\s*\d+/,_m=/^%/,xm=/[\\^$*+?|[\]().{}]/g;function wm(t,e,n){var r=t<0?"-":"",i=(r?-t:t)+"",a=i.length;return r+(a<n?new Array(n-a+1).join(e)+i:i)}function km(t){return t.replace(xm,"\\$&")}function Tm(t){return new RegExp("^(?:"+t.map(km).join("|")+")","i")}function Cm(t){for(var e={},n=-1,r=t.length;++n<r;)e[t[n].toLowerCase()]=n;return e}function Em(t,e,n){var r=bm.exec(e.slice(n,n+1));return r?(t.w=+r[0],n+r[0].length):-1}function Sm(t,e,n){var r=bm.exec(e.slice(n,n+1));return r?(t.u=+r[0],n+r[0].length):-1}function Am(t,e,n){var r=bm.exec(e.slice(n,n+2));return r?(t.U=+r[0],n+r[0].length):-1}function Mm(t,e,n){var r=bm.exec(e.slice(n,n+2));return r?(t.V=+r[0],n+r[0].length):-1}function Nm(t,e,n){var r=bm.exec(e.slice(n,n+2));return r?(t.W=+r[0],n+r[0].length):-1}function Dm(t,e,n){var r=bm.exec(e.slice(n,n+4));return r?(t.y=+r[0],n+r[0].length):-1}function Bm(t,e,n){var r=bm.exec(e.slice(n,n+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function Lm(t,e,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),n+r[0].length):-1}function Om(t,e,n){var r=bm.exec(e.slice(n,n+1));return r?(t.q=3*r[0]-3,n+r[0].length):-1}function Im(t,e,n){var r=bm.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function Rm(t,e,n){var r=bm.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function Fm(t,e,n){var r=bm.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function Pm(t,e,n){var r=bm.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function Ym(t,e,n){var r=bm.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function jm(t,e,n){var r=bm.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function Um(t,e,n){var r=bm.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function zm(t,e,n){var r=bm.exec(e.slice(n,n+6));return r?(t.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function $m(t,e,n){var r=_m.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function qm(t,e,n){var r=bm.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function Hm(t,e,n){var r=bm.exec(e.slice(n));return r?(t.s=+r[0],n+r[0].length):-1}function Wm(t,e){return wm(t.getDate(),e,2)}function Vm(t,e){return wm(t.getHours(),e,2)}function Gm(t,e){return wm(t.getHours()%12||12,e,2)}function Xm(t,e){return wm(1+Ay.count(ny(t),t),e,3)}function Zm(t,e){return wm(t.getMilliseconds(),e,3)}function Qm(t,e){return Zm(t,e)+"000"}function Km(t,e){return wm(t.getMonth()+1,e,2)}function Jm(t,e){return wm(t.getMinutes(),e,2)}function tv(t,e){return wm(t.getSeconds(),e,2)}function ev(t){var e=t.getDay();return 0===e?7:e}function nv(t,e){return wm(dy.count(ny(t)-1,t),e,2)}function rv(t){var e=t.getDay();return e>=4||0===e?my(t):my.ceil(t)}function iv(t,e){return t=rv(t),wm(my.count(ny(t),t)+(4===ny(t).getDay()),e,2)}function av(t){return t.getDay()}function ov(t,e){return wm(py.count(ny(t)-1,t),e,2)}function sv(t,e){return wm(t.getFullYear()%100,e,2)}function cv(t,e){return wm((t=rv(t)).getFullYear()%100,e,2)}function uv(t,e){return wm(t.getFullYear()%1e4,e,4)}function lv(t,e){var n=t.getDay();return wm((t=n>=4||0===n?my(t):my.ceil(t)).getFullYear()%1e4,e,4)}function hv(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+wm(e/60|0,"0",2)+wm(e%60,"0",2)}function fv(t,e){return wm(t.getUTCDate(),e,2)}function dv(t,e){return wm(t.getUTCHours(),e,2)}function pv(t,e){return wm(t.getUTCHours()%12||12,e,2)}function gv(t,e){return wm(1+im.count(sm(t),t),e,3)}function yv(t,e){return wm(t.getUTCMilliseconds(),e,3)}function mv(t,e){return yv(t,e)+"000"}function vv(t,e){return wm(t.getUTCMonth()+1,e,2)}function bv(t,e){return wm(t.getUTCMinutes(),e,2)}function _v(t,e){return wm(t.getUTCSeconds(),e,2)}function xv(t){var e=t.getUTCDay();return 0===e?7:e}function wv(t,e){return wm($y.count(sm(t)-1,t),e,2)}function kv(t){var e=t.getUTCDay();return e>=4||0===e?Vy(t):Vy.ceil(t)}function Tv(t,e){return t=kv(t),wm(Vy.count(sm(t),t)+(4===sm(t).getUTCDay()),e,2)}function Cv(t){return t.getUTCDay()}function Ev(t,e){return wm(qy.count(sm(t)-1,t),e,2)}function Sv(t,e){return wm(t.getUTCFullYear()%100,e,2)}function Av(t,e){return wm((t=kv(t)).getUTCFullYear()%100,e,2)}function Mv(t,e){return wm(t.getUTCFullYear()%1e4,e,4)}function Nv(t,e){var n=t.getUTCDay();return wm((t=n>=4||0===n?Vy(t):Vy.ceil(t)).getUTCFullYear()%1e4,e,4)}function Dv(){return"+0000"}function Bv(){return"%"}function Lv(t){return+t}function Ov(t){return Math.floor(+t/1e3)}function Iv(t){return dm=fm(t),pm=dm.format,gm=dm.parse,ym=dm.utcFormat,mm=dm.utcParse,dm}Iv({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});var Rv=31536e6;function Fv(t){return new Date(t)}function Pv(t){return t instanceof Date?+t:+new Date(+t)}function Yv(t,e,n,r,i,o,s,c,u){var l=Cg(vg,vg),h=l.invert,f=l.domain,d=u(".%L"),p=u(":%S"),g=u("%I:%M"),y=u("%I %p"),m=u("%a %d"),v=u("%b %d"),b=u("%B"),_=u("%Y"),x=[[s,1,1e3],[s,5,5e3],[s,15,15e3],[s,30,3e4],[o,1,6e4],[o,5,3e5],[o,15,9e5],[o,30,18e5],[i,1,36e5],[i,3,108e5],[i,6,216e5],[i,12,432e5],[r,1,864e5],[r,2,1728e5],[n,1,6048e5],[e,1,2592e6],[e,3,7776e6],[t,1,Rv]];function w(a){return(s(a)<a?d:o(a)<a?p:i(a)<a?g:r(a)<a?y:e(a)<a?n(a)<a?m:v:t(a)<a?b:_)(a)}function k(e,n,r,i){if(null==e&&(e=10),"number"==typeof e){var o=Math.abs(r-n)/e,s=a((function(t){return t[2]})).right(x,o);s===x.length?(i=M(n/Rv,r/Rv,e),e=t):s?(i=(s=x[o/x[s-1][2]<x[s][2]/o?s-1:s])[1],e=s[0]):(i=Math.max(M(n,r,e),1),e=c)}return null==i?e:e.every(i)}return l.invert=function(t){return new Date(h(t))},l.domain=function(t){return arguments.length?f(ug.call(t,Pv)):f().map(Fv)},l.ticks=function(t,e){var n,r=f(),i=r[0],a=r[r.length-1],o=a<i;return o&&(n=i,i=a,a=n),n=(n=k(t,i,a,e))?n.range(i,a+1):[],o?n.reverse():n},l.tickFormat=function(t,e){return null==e?w:u(e)},l.nice=function(t,e){var n=f();return(t=k(t,n[0],n[n.length-1],e))?f(Ng(n,t)):l},l.copy=function(){return kg(l,Yv(t,e,n,r,i,o,s,c,u))},l}function jv(){return og.apply(Yv(ny,ay,dy,Ay,Dy,Oy,Fy,jy,pm).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}var Uv=ty((function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCMonth(t.getUTCMonth()+e)}),(function(t,e){return e.getUTCMonth()-t.getUTCMonth()+12*(e.getUTCFullYear()-t.getUTCFullYear())}),(function(t){return t.getUTCMonth()}));const zv=Uv;var $v=Uv.range,qv=ty((function(t){t.setUTCMinutes(0,0,0)}),(function(t,e){t.setTime(+t+e*uy)}),(function(t,e){return(e-t)/uy}),(function(t){return t.getUTCHours()}));const Hv=qv;var Wv=qv.range,Vv=ty((function(t){t.setUTCSeconds(0,0)}),(function(t,e){t.setTime(+t+e*cy)}),(function(t,e){return(e-t)/cy}),(function(t){return t.getUTCMinutes()}));const Gv=Vv;var Xv=Vv.range;function Zv(){return og.apply(Yv(sm,zv,$y,im,Hv,Gv,Fy,jy,ym).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}function Qv(){var t,e,n,r,i,a=0,o=1,s=vg,c=!1;function u(e){return isNaN(e=+e)?i:s(0===n?.5:(e=(r(e)-t)*n,c?Math.max(0,Math.min(1,e)):e))}return u.domain=function(i){return arguments.length?(t=r(a=+i[0]),e=r(o=+i[1]),n=t===e?0:1/(e-t),u):[a,o]},u.clamp=function(t){return arguments.length?(c=!!t,u):c},u.interpolator=function(t){return arguments.length?(s=t,u):s},u.unknown=function(t){return arguments.length?(i=t,u):i},function(i){return r=i,t=i(a),e=i(o),n=t===e?0:1/(e-t),u}}function Kv(t,e){return e.domain(t.domain()).interpolator(t.interpolator()).clamp(t.clamp()).unknown(t.unknown())}function Jv(){var t=Sg(Qv()(vg));return t.copy=function(){return Kv(t,Jv())},sg.apply(t,arguments)}function tb(){var t=Fg(Qv()).domain([1,10]);return t.copy=function(){return Kv(t,tb()).base(t.base())},sg.apply(t,arguments)}function eb(){var t=Ug(Qv());return t.copy=function(){return Kv(t,eb()).constant(t.constant())},sg.apply(t,arguments)}function nb(){var t=Wg(Qv());return t.copy=function(){return Kv(t,nb()).exponent(t.exponent())},sg.apply(t,arguments)}function rb(){return nb.apply(null,arguments).exponent(.5)}function ib(){var t=[],e=vg;function n(n){if(!isNaN(n=+n))return e((u(t,n)-1)/(t.length-1))}return n.domain=function(e){if(!arguments.length)return t.slice();t=[];for(var r,a=0,o=e.length;a<o;++a)null==(r=e[a])||isNaN(r=+r)||t.push(r);return t.sort(i),n},n.interpolator=function(t){return arguments.length?(e=t,n):e},n.copy=function(){return ib(e).domain(t)},sg.apply(n,arguments)}function ab(){var t,e,n,r,i,a,o,s=0,c=.5,u=1,l=vg,h=!1;function f(t){return isNaN(t=+t)?o:(t=.5+((t=+a(t))-e)*(t<e?r:i),l(h?Math.max(0,Math.min(1,t)):t))}return f.domain=function(o){return arguments.length?(t=a(s=+o[0]),e=a(c=+o[1]),n=a(u=+o[2]),r=t===e?0:.5/(e-t),i=e===n?0:.5/(n-e),f):[s,c,u]},f.clamp=function(t){return arguments.length?(h=!!t,f):h},f.interpolator=function(t){return arguments.length?(l=t,f):l},f.unknown=function(t){return arguments.length?(o=t,f):o},function(o){return a=o,t=o(s),e=o(c),n=o(u),r=t===e?0:.5/(e-t),i=e===n?0:.5/(n-e),f}}function ob(){var t=Sg(ab()(vg));return t.copy=function(){return Kv(t,ob())},sg.apply(t,arguments)}function sb(){var t=Fg(ab()).domain([.1,1,10]);return t.copy=function(){return Kv(t,sb()).base(t.base())},sg.apply(t,arguments)}function cb(){var t=Ug(ab());return t.copy=function(){return Kv(t,cb()).constant(t.constant())},sg.apply(t,arguments)}function ub(){var t=Wg(ab());return t.copy=function(){return Kv(t,ub()).exponent(t.exponent())},sg.apply(t,arguments)}function lb(){return ub.apply(null,arguments).exponent(.5)}function hb(t){for(var e=t.length/6|0,n=new Array(e),r=0;r<e;)n[r]="#"+t.slice(6*r,6*++r);return n}const fb=hb("1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf"),db=hb("7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666"),pb=hb("1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666"),gb=hb("a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928"),yb=hb("fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2"),mb=hb("b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc"),vb=hb("e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999"),bb=hb("66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3"),_b=hb("8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f"),xb=hb("4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab");function wb(t){return mn(t[t.length-1])}var kb=new Array(3).concat("d8b365f5f5f55ab4ac","a6611adfc27d80cdc1018571","a6611adfc27df5f5f580cdc1018571","8c510ad8b365f6e8c3c7eae55ab4ac01665e","8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e","8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e","8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e","5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30","5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30").map(hb);const Tb=wb(kb);var Cb=new Array(3).concat("af8dc3f7f7f77fbf7b","7b3294c2a5cfa6dba0008837","7b3294c2a5cff7f7f7a6dba0008837","762a83af8dc3e7d4e8d9f0d37fbf7b1b7837","762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837","762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837","762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837","40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b","40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b").map(hb);const Eb=wb(Cb);var Sb=new Array(3).concat("e9a3c9f7f7f7a1d76a","d01c8bf1b6dab8e1864dac26","d01c8bf1b6daf7f7f7b8e1864dac26","c51b7de9a3c9fde0efe6f5d0a1d76a4d9221","c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221","c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221","c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221","8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419","8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419").map(hb);const Ab=wb(Sb);var Mb=new Array(3).concat("998ec3f7f7f7f1a340","5e3c99b2abd2fdb863e66101","5e3c99b2abd2f7f7f7fdb863e66101","542788998ec3d8daebfee0b6f1a340b35806","542788998ec3d8daebf7f7f7fee0b6f1a340b35806","5427888073acb2abd2d8daebfee0b6fdb863e08214b35806","5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806","2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08","2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08").map(hb);const Nb=wb(Mb);var Db=new Array(3).concat("ef8a62f7f7f767a9cf","ca0020f4a58292c5de0571b0","ca0020f4a582f7f7f792c5de0571b0","b2182bef8a62fddbc7d1e5f067a9cf2166ac","b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac","b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac","b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac","67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061","67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061").map(hb);const Bb=wb(Db);var Lb=new Array(3).concat("ef8a62ffffff999999","ca0020f4a582bababa404040","ca0020f4a582ffffffbababa404040","b2182bef8a62fddbc7e0e0e09999994d4d4d","b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d","b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d","b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d","67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a","67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a").map(hb);const Ob=wb(Lb);var Ib=new Array(3).concat("fc8d59ffffbf91bfdb","d7191cfdae61abd9e92c7bb6","d7191cfdae61ffffbfabd9e92c7bb6","d73027fc8d59fee090e0f3f891bfdb4575b4","d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4","d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4","d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4","a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695","a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695").map(hb);const Rb=wb(Ib);var Fb=new Array(3).concat("fc8d59ffffbf91cf60","d7191cfdae61a6d96a1a9641","d7191cfdae61ffffbfa6d96a1a9641","d73027fc8d59fee08bd9ef8b91cf601a9850","d73027fc8d59fee08bffffbfd9ef8b91cf601a9850","d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850","d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850","a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837","a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837").map(hb);const Pb=wb(Fb);var Yb=new Array(3).concat("fc8d59ffffbf99d594","d7191cfdae61abdda42b83ba","d7191cfdae61ffffbfabdda42b83ba","d53e4ffc8d59fee08be6f59899d5943288bd","d53e4ffc8d59fee08bffffbfe6f59899d5943288bd","d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd","d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd","9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2","9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2").map(hb);const jb=wb(Yb);var Ub=new Array(3).concat("e5f5f999d8c92ca25f","edf8fbb2e2e266c2a4238b45","edf8fbb2e2e266c2a42ca25f006d2c","edf8fbccece699d8c966c2a42ca25f006d2c","edf8fbccece699d8c966c2a441ae76238b45005824","f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824","f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b").map(hb);const zb=wb(Ub);var $b=new Array(3).concat("e0ecf49ebcda8856a7","edf8fbb3cde38c96c688419d","edf8fbb3cde38c96c68856a7810f7c","edf8fbbfd3e69ebcda8c96c68856a7810f7c","edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b","f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b","f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b").map(hb);const qb=wb($b);var Hb=new Array(3).concat("e0f3dba8ddb543a2ca","f0f9e8bae4bc7bccc42b8cbe","f0f9e8bae4bc7bccc443a2ca0868ac","f0f9e8ccebc5a8ddb57bccc443a2ca0868ac","f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e","f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e","f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081").map(hb);const Wb=wb(Hb);var Vb=new Array(3).concat("fee8c8fdbb84e34a33","fef0d9fdcc8afc8d59d7301f","fef0d9fdcc8afc8d59e34a33b30000","fef0d9fdd49efdbb84fc8d59e34a33b30000","fef0d9fdd49efdbb84fc8d59ef6548d7301f990000","fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000","fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000").map(hb);const Gb=wb(Vb);var Xb=new Array(3).concat("ece2f0a6bddb1c9099","f6eff7bdc9e167a9cf02818a","f6eff7bdc9e167a9cf1c9099016c59","f6eff7d0d1e6a6bddb67a9cf1c9099016c59","f6eff7d0d1e6a6bddb67a9cf3690c002818a016450","fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450","fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636").map(hb);const Zb=wb(Xb);var Qb=new Array(3).concat("ece7f2a6bddb2b8cbe","f1eef6bdc9e174a9cf0570b0","f1eef6bdc9e174a9cf2b8cbe045a8d","f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d","f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b","fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b","fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858").map(hb);const Kb=wb(Qb);var Jb=new Array(3).concat("e7e1efc994c7dd1c77","f1eef6d7b5d8df65b0ce1256","f1eef6d7b5d8df65b0dd1c77980043","f1eef6d4b9dac994c7df65b0dd1c77980043","f1eef6d4b9dac994c7df65b0e7298ace125691003f","f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f","f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f").map(hb);const t_=wb(Jb);var e_=new Array(3).concat("fde0ddfa9fb5c51b8a","feebe2fbb4b9f768a1ae017e","feebe2fbb4b9f768a1c51b8a7a0177","feebe2fcc5c0fa9fb5f768a1c51b8a7a0177","feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177","fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177","fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a").map(hb);const n_=wb(e_);var r_=new Array(3).concat("edf8b17fcdbb2c7fb8","ffffcca1dab441b6c4225ea8","ffffcca1dab441b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58").map(hb);const i_=wb(r_);var a_=new Array(3).concat("f7fcb9addd8e31a354","ffffccc2e69978c679238443","ffffccc2e69978c67931a354006837","ffffccd9f0a3addd8e78c67931a354006837","ffffccd9f0a3addd8e78c67941ab5d238443005a32","ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32","ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529").map(hb);const o_=wb(a_);var s_=new Array(3).concat("fff7bcfec44fd95f0e","ffffd4fed98efe9929cc4c02","ffffd4fed98efe9929d95f0e993404","ffffd4fee391fec44ffe9929d95f0e993404","ffffd4fee391fec44ffe9929ec7014cc4c028c2d04","ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04","ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506").map(hb);const c_=wb(s_);var u_=new Array(3).concat("ffeda0feb24cf03b20","ffffb2fecc5cfd8d3ce31a1c","ffffb2fecc5cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026").map(hb);const l_=wb(u_);var h_=new Array(3).concat("deebf79ecae13182bd","eff3ffbdd7e76baed62171b5","eff3ffbdd7e76baed63182bd08519c","eff3ffc6dbef9ecae16baed63182bd08519c","eff3ffc6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b").map(hb);const f_=wb(h_);var d_=new Array(3).concat("e5f5e0a1d99b31a354","edf8e9bae4b374c476238b45","edf8e9bae4b374c47631a354006d2c","edf8e9c7e9c0a1d99b74c47631a354006d2c","edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b").map(hb);const p_=wb(d_);var g_=new Array(3).concat("f0f0f0bdbdbd636363","f7f7f7cccccc969696525252","f7f7f7cccccc969696636363252525","f7f7f7d9d9d9bdbdbd969696636363252525","f7f7f7d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000").map(hb);const y_=wb(g_);var m_=new Array(3).concat("efedf5bcbddc756bb1","f2f0f7cbc9e29e9ac86a51a3","f2f0f7cbc9e29e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d").map(hb);const v_=wb(m_);var b_=new Array(3).concat("fee0d2fc9272de2d26","fee5d9fcae91fb6a4acb181d","fee5d9fcae91fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d").map(hb);const __=wb(b_);var x_=new Array(3).concat("fee6cefdae6be6550d","feeddefdbe85fd8d3cd94701","feeddefdbe85fd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704").map(hb);const w_=wb(x_);function k_(t){return t=Math.max(0,Math.min(1,t)),"rgb("+Math.max(0,Math.min(255,Math.round(-4.54-t*(35.34-t*(2381.73-t*(6402.7-t*(7024.72-2710.57*t)))))))+", "+Math.max(0,Math.min(255,Math.round(32.49+t*(170.73+t*(52.82-t*(131.46-t*(176.58-67.37*t)))))))+", "+Math.max(0,Math.min(255,Math.round(81.24+t*(442.36-t*(2482.43-t*(6167.24-t*(6614.94-2475.67*t)))))))+")"}const T_=zp(qa(300,.5,0),qa(-240,.5,1));var C_=zp(qa(-100,.75,.35),qa(80,1.5,.8)),E_=zp(qa(260,.75,.35),qa(80,1.5,.8)),S_=qa();function A_(t){(t<0||t>1)&&(t-=Math.floor(t));var e=Math.abs(t-.5);return S_.h=360*t-100,S_.s=1.5-1.5*e,S_.l=.8-.9*e,S_+""}var M_=Qe(),N_=Math.PI/3,D_=2*Math.PI/3;function B_(t){var e;return t=(.5-t)*Math.PI,M_.r=255*(e=Math.sin(t))*e,M_.g=255*(e=Math.sin(t+N_))*e,M_.b=255*(e=Math.sin(t+D_))*e,M_+""}function L_(t){return t=Math.max(0,Math.min(1,t)),"rgb("+Math.max(0,Math.min(255,Math.round(34.61+t*(1172.33-t*(10793.56-t*(33300.12-t*(38394.49-14825.05*t)))))))+", "+Math.max(0,Math.min(255,Math.round(23.31+t*(557.33+t*(1225.33-t*(3574.96-t*(1073.77+707.56*t)))))))+", "+Math.max(0,Math.min(255,Math.round(27.2+t*(3211.1-t*(15327.97-t*(27814-t*(22569.18-6838.66*t)))))))+")"}function O_(t){var e=t.length;return function(n){return t[Math.max(0,Math.min(e-1,Math.floor(n*e)))]}}const I_=O_(hb("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725"));var R_=O_(hb("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")),F_=O_(hb("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")),P_=O_(hb("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921"));function Y_(t){return Te(ie(t).call(document.documentElement))}var j_=0;function U_(){return new z_}function z_(){this._="@"+(++j_).toString(36)}function $_(t){return"string"==typeof t?new xe([document.querySelectorAll(t)],[document.documentElement]):new xe([null==t?[]:t],_e)}function q_(t,e){null==e&&(e=Nn().touches);for(var n=0,r=e?e.length:0,i=new Array(r);n<r;++n)i[n]=Dn(t,e[n]);return i}function H_(t){return function(){return t}}z_.prototype=U_.prototype={constructor:z_,get:function(t){for(var e=this._;!(e in t);)if(!(t=t.parentNode))return;return t[e]},set:function(t,e){return t[this._]=e},remove:function(t){return this._ in t&&delete t[this._]},toString:function(){return this._}};var W_=Math.abs,V_=Math.atan2,G_=Math.cos,X_=Math.max,Z_=Math.min,Q_=Math.sin,K_=Math.sqrt,J_=1e-12,tx=Math.PI,ex=tx/2,nx=2*tx;function rx(t){return t>1?0:t<-1?tx:Math.acos(t)}function ix(t){return t>=1?ex:t<=-1?-ex:Math.asin(t)}function ax(t){return t.innerRadius}function ox(t){return t.outerRadius}function sx(t){return t.startAngle}function cx(t){return t.endAngle}function ux(t){return t&&t.padAngle}function lx(t,e,n,r,i,a,o,s){var c=n-t,u=r-e,l=o-i,h=s-a,f=h*c-l*u;if(!(f*f<J_))return[t+(f=(l*(e-a)-h*(t-i))/f)*c,e+f*u]}function hx(t,e,n,r,i,a,o){var s=t-n,c=e-r,u=(o?a:-a)/K_(s*s+c*c),l=u*c,h=-u*s,f=t+l,d=e+h,p=n+l,g=r+h,y=(f+p)/2,m=(d+g)/2,v=p-f,b=g-d,_=v*v+b*b,x=i-a,w=f*g-p*d,k=(b<0?-1:1)*K_(X_(0,x*x*_-w*w)),T=(w*b-v*k)/_,C=(-w*v-b*k)/_,E=(w*b+v*k)/_,S=(-w*v+b*k)/_,A=T-y,M=C-m,N=E-y,D=S-m;return A*A+M*M>N*N+D*D&&(T=E,C=S),{cx:T,cy:C,x01:-l,y01:-h,x11:T*(i/x-1),y11:C*(i/x-1)}}function fx(){var t=ax,e=ox,n=H_(0),r=null,i=sx,a=cx,o=ux,s=null;function c(){var c,u,l=+t.apply(this,arguments),h=+e.apply(this,arguments),f=i.apply(this,arguments)-ex,d=a.apply(this,arguments)-ex,p=W_(d-f),g=d>f;if(s||(s=c=Wi()),h<l&&(u=h,h=l,l=u),h>J_)if(p>nx-J_)s.moveTo(h*G_(f),h*Q_(f)),s.arc(0,0,h,f,d,!g),l>J_&&(s.moveTo(l*G_(d),l*Q_(d)),s.arc(0,0,l,d,f,g));else{var y,m,v=f,b=d,_=f,x=d,w=p,k=p,T=o.apply(this,arguments)/2,C=T>J_&&(r?+r.apply(this,arguments):K_(l*l+h*h)),E=Z_(W_(h-l)/2,+n.apply(this,arguments)),S=E,A=E;if(C>J_){var M=ix(C/l*Q_(T)),N=ix(C/h*Q_(T));(w-=2*M)>J_?(_+=M*=g?1:-1,x-=M):(w=0,_=x=(f+d)/2),(k-=2*N)>J_?(v+=N*=g?1:-1,b-=N):(k=0,v=b=(f+d)/2)}var D=h*G_(v),B=h*Q_(v),L=l*G_(x),O=l*Q_(x);if(E>J_){var I,R=h*G_(b),F=h*Q_(b),P=l*G_(_),Y=l*Q_(_);if(p<tx&&(I=lx(D,B,P,Y,R,F,L,O))){var j=D-I[0],U=B-I[1],z=R-I[0],$=F-I[1],q=1/Q_(rx((j*z+U*$)/(K_(j*j+U*U)*K_(z*z+$*$)))/2),H=K_(I[0]*I[0]+I[1]*I[1]);S=Z_(E,(l-H)/(q-1)),A=Z_(E,(h-H)/(q+1))}}k>J_?A>J_?(y=hx(P,Y,D,B,h,A,g),m=hx(R,F,L,O,h,A,g),s.moveTo(y.cx+y.x01,y.cy+y.y01),A<E?s.arc(y.cx,y.cy,A,V_(y.y01,y.x01),V_(m.y01,m.x01),!g):(s.arc(y.cx,y.cy,A,V_(y.y01,y.x01),V_(y.y11,y.x11),!g),s.arc(0,0,h,V_(y.cy+y.y11,y.cx+y.x11),V_(m.cy+m.y11,m.cx+m.x11),!g),s.arc(m.cx,m.cy,A,V_(m.y11,m.x11),V_(m.y01,m.x01),!g))):(s.moveTo(D,B),s.arc(0,0,h,v,b,!g)):s.moveTo(D,B),l>J_&&w>J_?S>J_?(y=hx(L,O,R,F,l,-S,g),m=hx(D,B,P,Y,l,-S,g),s.lineTo(y.cx+y.x01,y.cy+y.y01),S<E?s.arc(y.cx,y.cy,S,V_(y.y01,y.x01),V_(m.y01,m.x01),!g):(s.arc(y.cx,y.cy,S,V_(y.y01,y.x01),V_(y.y11,y.x11),!g),s.arc(0,0,l,V_(y.cy+y.y11,y.cx+y.x11),V_(m.cy+m.y11,m.cx+m.x11),g),s.arc(m.cx,m.cy,S,V_(m.y11,m.x11),V_(m.y01,m.x01),!g))):s.arc(0,0,l,x,_,g):s.lineTo(L,O)}else s.moveTo(0,0);if(s.closePath(),c)return s=null,c+""||null}return c.centroid=function(){var n=(+t.apply(this,arguments)+ +e.apply(this,arguments))/2,r=(+i.apply(this,arguments)+ +a.apply(this,arguments))/2-tx/2;return[G_(r)*n,Q_(r)*n]},c.innerRadius=function(e){return arguments.length?(t="function"==typeof e?e:H_(+e),c):t},c.outerRadius=function(t){return arguments.length?(e="function"==typeof t?t:H_(+t),c):e},c.cornerRadius=function(t){return arguments.length?(n="function"==typeof t?t:H_(+t),c):n},c.padRadius=function(t){return arguments.length?(r=null==t?null:"function"==typeof t?t:H_(+t),c):r},c.startAngle=function(t){return arguments.length?(i="function"==typeof t?t:H_(+t),c):i},c.endAngle=function(t){return arguments.length?(a="function"==typeof t?t:H_(+t),c):a},c.padAngle=function(t){return arguments.length?(o="function"==typeof t?t:H_(+t),c):o},c.context=function(t){return arguments.length?(s=null==t?null:t,c):s},c}function dx(t){this._context=t}function px(t){return new dx(t)}function gx(t){return t[0]}function yx(t){return t[1]}function mx(){var t=gx,e=yx,n=H_(!0),r=null,i=px,a=null;function o(o){var s,c,u,l=o.length,h=!1;for(null==r&&(a=i(u=Wi())),s=0;s<=l;++s)!(s<l&&n(c=o[s],s,o))===h&&((h=!h)?a.lineStart():a.lineEnd()),h&&a.point(+t(c,s,o),+e(c,s,o));if(u)return a=null,u+""||null}return o.x=function(e){return arguments.length?(t="function"==typeof e?e:H_(+e),o):t},o.y=function(t){return arguments.length?(e="function"==typeof t?t:H_(+t),o):e},o.defined=function(t){return arguments.length?(n="function"==typeof t?t:H_(!!t),o):n},o.curve=function(t){return arguments.length?(i=t,null!=r&&(a=i(r)),o):i},o.context=function(t){return arguments.length?(null==t?r=a=null:a=i(r=t),o):r},o}function vx(){var t=gx,e=null,n=H_(0),r=yx,i=H_(!0),a=null,o=px,s=null;function c(c){var u,l,h,f,d,p=c.length,g=!1,y=new Array(p),m=new Array(p);for(null==a&&(s=o(d=Wi())),u=0;u<=p;++u){if(!(u<p&&i(f=c[u],u,c))===g)if(g=!g)l=u,s.areaStart(),s.lineStart();else{for(s.lineEnd(),s.lineStart(),h=u-1;h>=l;--h)s.point(y[h],m[h]);s.lineEnd(),s.areaEnd()}g&&(y[u]=+t(f,u,c),m[u]=+n(f,u,c),s.point(e?+e(f,u,c):y[u],r?+r(f,u,c):m[u]))}if(d)return s=null,d+""||null}function u(){return mx().defined(i).curve(o).context(a)}return c.x=function(n){return arguments.length?(t="function"==typeof n?n:H_(+n),e=null,c):t},c.x0=function(e){return arguments.length?(t="function"==typeof e?e:H_(+e),c):t},c.x1=function(t){return arguments.length?(e=null==t?null:"function"==typeof t?t:H_(+t),c):e},c.y=function(t){return arguments.length?(n="function"==typeof t?t:H_(+t),r=null,c):n},c.y0=function(t){return arguments.length?(n="function"==typeof t?t:H_(+t),c):n},c.y1=function(t){return arguments.length?(r=null==t?null:"function"==typeof t?t:H_(+t),c):r},c.lineX0=c.lineY0=function(){return u().x(t).y(n)},c.lineY1=function(){return u().x(t).y(r)},c.lineX1=function(){return u().x(e).y(n)},c.defined=function(t){return arguments.length?(i="function"==typeof t?t:H_(!!t),c):i},c.curve=function(t){return arguments.length?(o=t,null!=a&&(s=o(a)),c):o},c.context=function(t){return arguments.length?(null==t?a=s=null:s=o(a=t),c):a},c}function bx(t,e){return e<t?-1:e>t?1:e>=t?0:NaN}function _x(t){return t}function xx(){var t=_x,e=bx,n=null,r=H_(0),i=H_(nx),a=H_(0);function o(o){var s,c,u,l,h,f=o.length,d=0,p=new Array(f),g=new Array(f),y=+r.apply(this,arguments),m=Math.min(nx,Math.max(-nx,i.apply(this,arguments)-y)),v=Math.min(Math.abs(m)/f,a.apply(this,arguments)),b=v*(m<0?-1:1);for(s=0;s<f;++s)(h=g[p[s]=s]=+t(o[s],s,o))>0&&(d+=h);for(null!=e?p.sort((function(t,n){return e(g[t],g[n])})):null!=n&&p.sort((function(t,e){return n(o[t],o[e])})),s=0,u=d?(m-f*b)/d:0;s<f;++s,y=l)c=p[s],l=y+((h=g[c])>0?h*u:0)+b,g[c]={data:o[c],index:s,value:h,startAngle:y,endAngle:l,padAngle:v};return g}return o.value=function(e){return arguments.length?(t="function"==typeof e?e:H_(+e),o):t},o.sortValues=function(t){return arguments.length?(e=t,n=null,o):e},o.sort=function(t){return arguments.length?(n=t,e=null,o):n},o.startAngle=function(t){return arguments.length?(r="function"==typeof t?t:H_(+t),o):r},o.endAngle=function(t){return arguments.length?(i="function"==typeof t?t:H_(+t),o):i},o.padAngle=function(t){return arguments.length?(a="function"==typeof t?t:H_(+t),o):a},o}dx.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._context.lineTo(t,e)}}};var wx=Tx(px);function kx(t){this._curve=t}function Tx(t){function e(e){return new kx(t(e))}return e._curve=t,e}function Cx(t){var e=t.curve;return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t.curve=function(t){return arguments.length?e(Tx(t)):e()._curve},t}function Ex(){return Cx(mx().curve(wx))}function Sx(){var t=vx().curve(wx),e=t.curve,n=t.lineX0,r=t.lineX1,i=t.lineY0,a=t.lineY1;return t.angle=t.x,delete t.x,t.startAngle=t.x0,delete t.x0,t.endAngle=t.x1,delete t.x1,t.radius=t.y,delete t.y,t.innerRadius=t.y0,delete t.y0,t.outerRadius=t.y1,delete t.y1,t.lineStartAngle=function(){return Cx(n())},delete t.lineX0,t.lineEndAngle=function(){return Cx(r())},delete t.lineX1,t.lineInnerRadius=function(){return Cx(i())},delete t.lineY0,t.lineOuterRadius=function(){return Cx(a())},delete t.lineY1,t.curve=function(t){return arguments.length?e(Tx(t)):e()._curve},t}function Ax(t,e){return[(e=+e)*Math.cos(t-=Math.PI/2),e*Math.sin(t)]}kx.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(t,e){this._curve.point(e*Math.sin(t),e*-Math.cos(t))}};var Mx=Array.prototype.slice;function Nx(t){return t.source}function Dx(t){return t.target}function Bx(t){var e=Nx,n=Dx,r=gx,i=yx,a=null;function o(){var o,s=Mx.call(arguments),c=e.apply(this,s),u=n.apply(this,s);if(a||(a=o=Wi()),t(a,+r.apply(this,(s[0]=c,s)),+i.apply(this,s),+r.apply(this,(s[0]=u,s)),+i.apply(this,s)),o)return a=null,o+""||null}return o.source=function(t){return arguments.length?(e=t,o):e},o.target=function(t){return arguments.length?(n=t,o):n},o.x=function(t){return arguments.length?(r="function"==typeof t?t:H_(+t),o):r},o.y=function(t){return arguments.length?(i="function"==typeof t?t:H_(+t),o):i},o.context=function(t){return arguments.length?(a=null==t?null:t,o):a},o}function Lx(t,e,n,r,i){t.moveTo(e,n),t.bezierCurveTo(e=(e+r)/2,n,e,i,r,i)}function Ox(t,e,n,r,i){t.moveTo(e,n),t.bezierCurveTo(e,n=(n+i)/2,r,n,r,i)}function Ix(t,e,n,r,i){var a=Ax(e,n),o=Ax(e,n=(n+i)/2),s=Ax(r,n),c=Ax(r,i);t.moveTo(a[0],a[1]),t.bezierCurveTo(o[0],o[1],s[0],s[1],c[0],c[1])}function Rx(){return Bx(Lx)}function Fx(){return Bx(Ox)}function Px(){var t=Bx(Ix);return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t}const Yx={draw:function(t,e){var n=Math.sqrt(e/tx);t.moveTo(n,0),t.arc(0,0,n,0,nx)}},jx={draw:function(t,e){var n=Math.sqrt(e/5)/2;t.moveTo(-3*n,-n),t.lineTo(-n,-n),t.lineTo(-n,-3*n),t.lineTo(n,-3*n),t.lineTo(n,-n),t.lineTo(3*n,-n),t.lineTo(3*n,n),t.lineTo(n,n),t.lineTo(n,3*n),t.lineTo(-n,3*n),t.lineTo(-n,n),t.lineTo(-3*n,n),t.closePath()}};var Ux=Math.sqrt(1/3),zx=2*Ux;const $x={draw:function(t,e){var n=Math.sqrt(e/zx),r=n*Ux;t.moveTo(0,-n),t.lineTo(r,0),t.lineTo(0,n),t.lineTo(-r,0),t.closePath()}};var qx=Math.sin(tx/10)/Math.sin(7*tx/10),Hx=Math.sin(nx/10)*qx,Wx=-Math.cos(nx/10)*qx;const Vx={draw:function(t,e){var n=Math.sqrt(.8908130915292852*e),r=Hx*n,i=Wx*n;t.moveTo(0,-n),t.lineTo(r,i);for(var a=1;a<5;++a){var o=nx*a/5,s=Math.cos(o),c=Math.sin(o);t.lineTo(c*n,-s*n),t.lineTo(s*r-c*i,c*r+s*i)}t.closePath()}},Gx={draw:function(t,e){var n=Math.sqrt(e),r=-n/2;t.rect(r,r,n,n)}};var Xx=Math.sqrt(3);const Zx={draw:function(t,e){var n=-Math.sqrt(e/(3*Xx));t.moveTo(0,2*n),t.lineTo(-Xx*n,-n),t.lineTo(Xx*n,-n),t.closePath()}};var Qx=-.5,Kx=Math.sqrt(3)/2,Jx=1/Math.sqrt(12),tw=3*(Jx/2+1);const ew={draw:function(t,e){var n=Math.sqrt(e/tw),r=n/2,i=n*Jx,a=r,o=n*Jx+n,s=-a,c=o;t.moveTo(r,i),t.lineTo(a,o),t.lineTo(s,c),t.lineTo(Qx*r-Kx*i,Kx*r+Qx*i),t.lineTo(Qx*a-Kx*o,Kx*a+Qx*o),t.lineTo(Qx*s-Kx*c,Kx*s+Qx*c),t.lineTo(Qx*r+Kx*i,Qx*i-Kx*r),t.lineTo(Qx*a+Kx*o,Qx*o-Kx*a),t.lineTo(Qx*s+Kx*c,Qx*c-Kx*s),t.closePath()}};var nw=[Yx,jx,$x,Gx,Vx,Zx,ew];function rw(){var t=H_(Yx),e=H_(64),n=null;function r(){var r;if(n||(n=r=Wi()),t.apply(this,arguments).draw(n,+e.apply(this,arguments)),r)return n=null,r+""||null}return r.type=function(e){return arguments.length?(t="function"==typeof e?e:H_(e),r):t},r.size=function(t){return arguments.length?(e="function"==typeof t?t:H_(+t),r):e},r.context=function(t){return arguments.length?(n=null==t?null:t,r):n},r}function iw(){}function aw(t,e,n){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+n)/6)}function ow(t){this._context=t}function sw(t){return new ow(t)}function cw(t){this._context=t}function uw(t){return new cw(t)}function lw(t){this._context=t}function hw(t){return new lw(t)}function fw(t,e){this._basis=new ow(t),this._beta=e}ow.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:aw(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:aw(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},cw.prototype={areaStart:iw,areaEnd:iw,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x2=t,this._y2=e;break;case 1:this._point=2,this._x3=t,this._y3=e;break;case 2:this._point=3,this._x4=t,this._y4=e,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+e)/6);break;default:aw(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},lw.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var n=(this._x0+4*this._x1+t)/6,r=(this._y0+4*this._y1+e)/6;this._line?this._context.lineTo(n,r):this._context.moveTo(n,r);break;case 3:this._point=4;default:aw(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},fw.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,e=this._y,n=t.length-1;if(n>0)for(var r,i=t[0],a=e[0],o=t[n]-i,s=e[n]-a,c=-1;++c<=n;)r=c/n,this._basis.point(this._beta*t[c]+(1-this._beta)*(i+r*o),this._beta*e[c]+(1-this._beta)*(a+r*s));this._x=this._y=null,this._basis.lineEnd()},point:function(t,e){this._x.push(+t),this._y.push(+e)}};const dw=function t(e){function n(t){return 1===e?new ow(t):new fw(t,e)}return n.beta=function(e){return t(+e)},n}(.85);function pw(t,e,n){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-e),t._y2+t._k*(t._y1-n),t._x2,t._y2)}function gw(t,e){this._context=t,this._k=(1-e)/6}gw.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:pw(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2,this._x1=t,this._y1=e;break;case 2:this._point=3;default:pw(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const yw=function t(e){function n(t){return new gw(t,e)}return n.tension=function(e){return t(+e)},n}(0);function mw(t,e){this._context=t,this._k=(1-e)/6}mw.prototype={areaStart:iw,areaEnd:iw,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:pw(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const vw=function t(e){function n(t){return new mw(t,e)}return n.tension=function(e){return t(+e)},n}(0);function bw(t,e){this._context=t,this._k=(1-e)/6}bw.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:pw(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const _w=function t(e){function n(t){return new bw(t,e)}return n.tension=function(e){return t(+e)},n}(0);function xw(t,e,n){var r=t._x1,i=t._y1,a=t._x2,o=t._y2;if(t._l01_a>J_){var s=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,c=3*t._l01_a*(t._l01_a+t._l12_a);r=(r*s-t._x0*t._l12_2a+t._x2*t._l01_2a)/c,i=(i*s-t._y0*t._l12_2a+t._y2*t._l01_2a)/c}if(t._l23_a>J_){var u=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,l=3*t._l23_a*(t._l23_a+t._l12_a);a=(a*u+t._x1*t._l23_2a-e*t._l12_2a)/l,o=(o*u+t._y1*t._l23_2a-n*t._l12_2a)/l}t._context.bezierCurveTo(r,i,a,o,t._x2,t._y2)}function ww(t,e){this._context=t,this._alpha=e}ww.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3;default:xw(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const kw=function t(e){function n(t){return e?new ww(t,e):new gw(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);function Tw(t,e){this._context=t,this._alpha=e}Tw.prototype={areaStart:iw,areaEnd:iw,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:xw(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const Cw=function t(e){function n(t){return e?new Tw(t,e):new mw(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);function Ew(t,e){this._context=t,this._alpha=e}Ew.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+r*r,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:xw(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const Sw=function t(e){function n(t){return e?new Ew(t,e):new bw(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);function Aw(t){this._context=t}function Mw(t){return new Aw(t)}function Nw(t){return t<0?-1:1}function Dw(t,e,n){var r=t._x1-t._x0,i=e-t._x1,a=(t._y1-t._y0)/(r||i<0&&-0),o=(n-t._y1)/(i||r<0&&-0),s=(a*i+o*r)/(r+i);return(Nw(a)+Nw(o))*Math.min(Math.abs(a),Math.abs(o),.5*Math.abs(s))||0}function Bw(t,e){var n=t._x1-t._x0;return n?(3*(t._y1-t._y0)/n-e)/2:e}function Lw(t,e,n){var r=t._x0,i=t._y0,a=t._x1,o=t._y1,s=(a-r)/3;t._context.bezierCurveTo(r+s,i+s*e,a-s,o-s*n,a,o)}function Ow(t){this._context=t}function Iw(t){this._context=new Rw(t)}function Rw(t){this._context=t}function Fw(t){return new Ow(t)}function Pw(t){return new Iw(t)}function Yw(t){this._context=t}function jw(t){var e,n,r=t.length-1,i=new Array(r),a=new Array(r),o=new Array(r);for(i[0]=0,a[0]=2,o[0]=t[0]+2*t[1],e=1;e<r-1;++e)i[e]=1,a[e]=4,o[e]=4*t[e]+2*t[e+1];for(i[r-1]=2,a[r-1]=7,o[r-1]=8*t[r-1]+t[r],e=1;e<r;++e)n=i[e]/a[e-1],a[e]-=n,o[e]-=n*o[e-1];for(i[r-1]=o[r-1]/a[r-1],e=r-2;e>=0;--e)i[e]=(o[e]-i[e+1])/a[e];for(a[r-1]=(t[r]+i[r-1])/2,e=0;e<r-1;++e)a[e]=2*t[e+1]-i[e+1];return[i,a]}function Uw(t){return new Yw(t)}function zw(t,e){this._context=t,this._t=e}function $w(t){return new zw(t,.5)}function qw(t){return new zw(t,0)}function Hw(t){return new zw(t,1)}function Ww(t,e){if((i=t.length)>1)for(var n,r,i,a=1,o=t[e[0]],s=o.length;a<i;++a)for(r=o,o=t[e[a]],n=0;n<s;++n)o[n][1]+=o[n][0]=isNaN(r[n][1])?r[n][0]:r[n][1]}function Vw(t){for(var e=t.length,n=new Array(e);--e>=0;)n[e]=e;return n}function Gw(t,e){return t[e]}function Xw(){var t=H_([]),e=Vw,n=Ww,r=Gw;function i(i){var a,o,s=t.apply(this,arguments),c=i.length,u=s.length,l=new Array(u);for(a=0;a<u;++a){for(var h,f=s[a],d=l[a]=new Array(c),p=0;p<c;++p)d[p]=h=[0,+r(i[p],f,p,i)],h.data=i[p];d.key=f}for(a=0,o=e(l);a<u;++a)l[o[a]].index=a;return n(l,o),l}return i.keys=function(e){return arguments.length?(t="function"==typeof e?e:H_(Mx.call(e)),i):t},i.value=function(t){return arguments.length?(r="function"==typeof t?t:H_(+t),i):r},i.order=function(t){return arguments.length?(e=null==t?Vw:"function"==typeof t?t:H_(Mx.call(t)),i):e},i.offset=function(t){return arguments.length?(n=null==t?Ww:t,i):n},i}function Zw(t,e){if((r=t.length)>0){for(var n,r,i,a=0,o=t[0].length;a<o;++a){for(i=n=0;n<r;++n)i+=t[n][a][1]||0;if(i)for(n=0;n<r;++n)t[n][a][1]/=i}Ww(t,e)}}function Qw(t,e){if((s=t.length)>0)for(var n,r,i,a,o,s,c=0,u=t[e[0]].length;c<u;++c)for(a=o=0,n=0;n<s;++n)(i=(r=t[e[n]][c])[1]-r[0])>0?(r[0]=a,r[1]=a+=i):i<0?(r[1]=o,r[0]=o+=i):(r[0]=0,r[1]=i)}function Kw(t,e){if((n=t.length)>0){for(var n,r=0,i=t[e[0]],a=i.length;r<a;++r){for(var o=0,s=0;o<n;++o)s+=t[o][r][1]||0;i[r][1]+=i[r][0]=-s/2}Ww(t,e)}}function Jw(t,e){if((i=t.length)>0&&(r=(n=t[e[0]]).length)>0){for(var n,r,i,a=0,o=1;o<r;++o){for(var s=0,c=0,u=0;s<i;++s){for(var l=t[e[s]],h=l[o][1]||0,f=(h-(l[o-1][1]||0))/2,d=0;d<s;++d){var p=t[e[d]];f+=(p[o][1]||0)-(p[o-1][1]||0)}c+=h,u+=f*h}n[o-1][1]+=n[o-1][0]=a,c&&(a-=u/c)}n[o-1][1]+=n[o-1][0]=a,Ww(t,e)}}function tk(t){var e=t.map(ek);return Vw(t).sort((function(t,n){return e[t]-e[n]}))}function ek(t){for(var e,n=-1,r=0,i=t.length,a=-1/0;++n<i;)(e=+t[n][1])>a&&(a=e,r=n);return r}function nk(t){var e=t.map(rk);return Vw(t).sort((function(t,n){return e[t]-e[n]}))}function rk(t){for(var e,n=0,r=-1,i=t.length;++r<i;)(e=+t[r][1])&&(n+=e);return n}function ik(t){return nk(t).reverse()}function ak(t){var e,n,r=t.length,i=t.map(rk),a=tk(t),o=0,s=0,c=[],u=[];for(e=0;e<r;++e)n=a[e],o<s?(o+=i[n],c.push(n)):(s+=i[n],u.push(n));return u.reverse().concat(c)}function ok(t){return Vw(t).reverse()}Aw.prototype={areaStart:iw,areaEnd:iw,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(t,e){t=+t,e=+e,this._point?this._context.lineTo(t,e):(this._point=1,this._context.moveTo(t,e))}},Ow.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:Lw(this,this._t0,Bw(this,this._t0))}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){var n=NaN;if(e=+e,(t=+t)!==this._x1||e!==this._y1){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,Lw(this,Bw(this,n=Dw(this,t,e)),n);break;default:Lw(this,this._t0,n=Dw(this,t,e))}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e,this._t0=n}}},(Iw.prototype=Object.create(Ow.prototype)).point=function(t,e){Ow.prototype.point.call(this,e,t)},Rw.prototype={moveTo:function(t,e){this._context.moveTo(e,t)},closePath:function(){this._context.closePath()},lineTo:function(t,e){this._context.lineTo(e,t)},bezierCurveTo:function(t,e,n,r,i,a){this._context.bezierCurveTo(e,t,r,n,a,i)}},Yw.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var t=this._x,e=this._y,n=t.length;if(n)if(this._line?this._context.lineTo(t[0],e[0]):this._context.moveTo(t[0],e[0]),2===n)this._context.lineTo(t[1],e[1]);else for(var r=jw(t),i=jw(e),a=0,o=1;o<n;++a,++o)this._context.bezierCurveTo(r[0][a],i[0][a],r[1][a],i[1][a],t[o],e[o]);(this._line||0!==this._line&&1===n)&&this._context.closePath(),this._line=1-this._line,this._x=this._y=null},point:function(t,e){this._x.push(+t),this._y.push(+e)}},zw.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=this._y=NaN,this._point=0},lineEnd:function(){0<this._t&&this._t<1&&2===this._point&&this._context.lineTo(this._x,this._y),(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line>=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var n=this._x*(1-this._t)+t*this._t;this._context.lineTo(n,this._y),this._context.lineTo(n,e)}}this._x=t,this._y=e}};var sk="%Y-%m-%dT%H:%M:%S.%LZ",ck=Date.prototype.toISOString?function(t){return t.toISOString()}:ym(sk);const uk=ck;var lk=+new Date("2000-01-01T00:00:00.000Z")?function(t){var e=new Date(t);return isNaN(e)?null:e}:mm(sk);const hk=lk;function fk(t,e,n){var r=new Wn,i=e;return null==e?(r.restart(t,e,n),r):(e=+e,n=null==n?qn():+n,r.restart((function a(o){o+=i,r.restart(a,i+=e,n),t(o)}),e,n),r)}function dk(t){return function(){return t}}function pk(t){return t[0]}function gk(t){return t[1]}function yk(){this._=null}function mk(t){t.U=t.C=t.L=t.R=t.P=t.N=null}function vk(t,e){var n=e,r=e.R,i=n.U;i?i.L===n?i.L=r:i.R=r:t._=r,r.U=i,n.U=r,n.R=r.L,n.R&&(n.R.U=n),r.L=n}function bk(t,e){var n=e,r=e.L,i=n.U;i?i.L===n?i.L=r:i.R=r:t._=r,r.U=i,n.U=r,n.L=r.R,n.L&&(n.L.U=n),r.R=n}function _k(t){for(;t.L;)t=t.L;return t}yk.prototype={constructor:yk,insert:function(t,e){var n,r,i;if(t){if(e.P=t,e.N=t.N,t.N&&(t.N.P=e),t.N=e,t.R){for(t=t.R;t.L;)t=t.L;t.L=e}else t.R=e;n=t}else this._?(t=_k(this._),e.P=null,e.N=t,t.P=t.L=e,n=t):(e.P=e.N=null,this._=e,n=null);for(e.L=e.R=null,e.U=n,e.C=!0,t=e;n&&n.C;)n===(r=n.U).L?(i=r.R)&&i.C?(n.C=i.C=!1,r.C=!0,t=r):(t===n.R&&(vk(this,n),n=(t=n).U),n.C=!1,r.C=!0,bk(this,r)):(i=r.L)&&i.C?(n.C=i.C=!1,r.C=!0,t=r):(t===n.L&&(bk(this,n),n=(t=n).U),n.C=!1,r.C=!0,vk(this,r)),n=t.U;this._.C=!1},remove:function(t){t.N&&(t.N.P=t.P),t.P&&(t.P.N=t.N),t.N=t.P=null;var e,n,r,i=t.U,a=t.L,o=t.R;if(n=a?o?_k(o):a:o,i?i.L===t?i.L=n:i.R=n:this._=n,a&&o?(r=n.C,n.C=t.C,n.L=a,a.U=n,n!==o?(i=n.U,n.U=t.U,t=n.R,i.L=t,n.R=o,o.U=n):(n.U=i,i=n,t=n.R)):(r=t.C,t=n),t&&(t.U=i),!r)if(t&&t.C)t.C=!1;else{do{if(t===this._)break;if(t===i.L){if((e=i.R).C&&(e.C=!1,i.C=!0,vk(this,i),e=i.R),e.L&&e.L.C||e.R&&e.R.C){e.R&&e.R.C||(e.L.C=!1,e.C=!0,bk(this,e),e=i.R),e.C=i.C,i.C=e.R.C=!1,vk(this,i),t=this._;break}}else if((e=i.L).C&&(e.C=!1,i.C=!0,bk(this,i),e=i.L),e.L&&e.L.C||e.R&&e.R.C){e.L&&e.L.C||(e.R.C=!1,e.C=!0,vk(this,e),e=i.L),e.C=i.C,i.C=e.L.C=!1,bk(this,i),t=this._;break}e.C=!0,t=i,i=i.U}while(!t.C);t&&(t.C=!1)}}};const xk=yk;function wk(t,e,n,r){var i=[null,null],a=Wk.push(i)-1;return i.left=t,i.right=e,n&&Tk(i,t,e,n),r&&Tk(i,e,t,r),qk[t.index].halfedges.push(a),qk[e.index].halfedges.push(a),i}function kk(t,e,n){var r=[e,n];return r.left=t,r}function Tk(t,e,n,r){t[0]||t[1]?t.left===n?t[1]=r:t[0]=r:(t[0]=r,t.left=e,t.right=n)}function Ck(t,e,n,r,i){var a,o=t[0],s=t[1],c=o[0],u=o[1],l=0,h=1,f=s[0]-c,d=s[1]-u;if(a=e-c,f||!(a>0)){if(a/=f,f<0){if(a<l)return;a<h&&(h=a)}else if(f>0){if(a>h)return;a>l&&(l=a)}if(a=r-c,f||!(a<0)){if(a/=f,f<0){if(a>h)return;a>l&&(l=a)}else if(f>0){if(a<l)return;a<h&&(h=a)}if(a=n-u,d||!(a>0)){if(a/=d,d<0){if(a<l)return;a<h&&(h=a)}else if(d>0){if(a>h)return;a>l&&(l=a)}if(a=i-u,d||!(a<0)){if(a/=d,d<0){if(a>h)return;a>l&&(l=a)}else if(d>0){if(a<l)return;a<h&&(h=a)}return!(l>0||h<1)||(l>0&&(t[0]=[c+l*f,u+l*d]),h<1&&(t[1]=[c+h*f,u+h*d]),!0)}}}}}function Ek(t,e,n,r,i){var a=t[1];if(a)return!0;var o,s,c=t[0],u=t.left,l=t.right,h=u[0],f=u[1],d=l[0],p=l[1],g=(h+d)/2,y=(f+p)/2;if(p===f){if(g<e||g>=r)return;if(h>d){if(c){if(c[1]>=i)return}else c=[g,n];a=[g,i]}else{if(c){if(c[1]<n)return}else c=[g,i];a=[g,n]}}else if(s=y-(o=(h-d)/(p-f))*g,o<-1||o>1)if(h>d){if(c){if(c[1]>=i)return}else c=[(n-s)/o,n];a=[(i-s)/o,i]}else{if(c){if(c[1]<n)return}else c=[(i-s)/o,i];a=[(n-s)/o,n]}else if(f<p){if(c){if(c[0]>=r)return}else c=[e,o*e+s];a=[r,o*r+s]}else{if(c){if(c[0]<e)return}else c=[r,o*r+s];a=[e,o*e+s]}return t[0]=c,t[1]=a,!0}function Sk(t,e){var n=t.site,r=e.left,i=e.right;return n===i&&(i=r,r=n),i?Math.atan2(i[1]-r[1],i[0]-r[0]):(n===r?(r=e[1],i=e[0]):(r=e[0],i=e[1]),Math.atan2(r[0]-i[0],i[1]-r[1]))}function Ak(t,e){return e[+(e.left!==t.site)]}function Mk(t,e){return e[+(e.left===t.site)]}var Nk,Dk=[];function Bk(){mk(this),this.x=this.y=this.arc=this.site=this.cy=null}function Lk(t){var e=t.P,n=t.N;if(e&&n){var r=e.site,i=t.site,a=n.site;if(r!==a){var o=i[0],s=i[1],c=r[0]-o,u=r[1]-s,l=a[0]-o,h=a[1]-s,f=2*(c*h-u*l);if(!(f>=-Gk)){var d=c*c+u*u,p=l*l+h*h,g=(h*d-u*p)/f,y=(c*p-l*d)/f,m=Dk.pop()||new Bk;m.arc=t,m.site=i,m.x=g+o,m.y=(m.cy=y+s)+Math.sqrt(g*g+y*y),t.circle=m;for(var v=null,b=Hk._;b;)if(m.y<b.y||m.y===b.y&&m.x<=b.x){if(!b.L){v=b.P;break}b=b.L}else{if(!b.R){v=b;break}b=b.R}Hk.insert(v,m),v||(Nk=m)}}}}function Ok(t){var e=t.circle;e&&(e.P||(Nk=e.N),Hk.remove(e),Dk.push(e),mk(e),t.circle=null)}var Ik=[];function Rk(){mk(this),this.edge=this.site=this.circle=null}function Fk(t){var e=Ik.pop()||new Rk;return e.site=t,e}function Pk(t){Ok(t),$k.remove(t),Ik.push(t),mk(t)}function Yk(t){var e=t.circle,n=e.x,r=e.cy,i=[n,r],a=t.P,o=t.N,s=[t];Pk(t);for(var c=a;c.circle&&Math.abs(n-c.circle.x)<Vk&&Math.abs(r-c.circle.cy)<Vk;)a=c.P,s.unshift(c),Pk(c),c=a;s.unshift(c),Ok(c);for(var u=o;u.circle&&Math.abs(n-u.circle.x)<Vk&&Math.abs(r-u.circle.cy)<Vk;)o=u.N,s.push(u),Pk(u),u=o;s.push(u),Ok(u);var l,h=s.length;for(l=1;l<h;++l)u=s[l],c=s[l-1],Tk(u.edge,c.site,u.site,i);c=s[0],(u=s[h-1]).edge=wk(c.site,u.site,null,i),Lk(c),Lk(u)}function jk(t){for(var e,n,r,i,a=t[0],o=t[1],s=$k._;s;)if((r=Uk(s,o)-a)>Vk)s=s.L;else{if(!((i=a-zk(s,o))>Vk)){r>-Vk?(e=s.P,n=s):i>-Vk?(e=s,n=s.N):e=n=s;break}if(!s.R){e=s;break}s=s.R}!function(t){qk[t.index]={site:t,halfedges:[]}}(t);var c=Fk(t);if($k.insert(e,c),e||n){if(e===n)return Ok(e),n=Fk(e.site),$k.insert(c,n),c.edge=n.edge=wk(e.site,c.site),Lk(e),void Lk(n);if(n){Ok(e),Ok(n);var u=e.site,l=u[0],h=u[1],f=t[0]-l,d=t[1]-h,p=n.site,g=p[0]-l,y=p[1]-h,m=2*(f*y-d*g),v=f*f+d*d,b=g*g+y*y,_=[(y*v-d*b)/m+l,(f*b-g*v)/m+h];Tk(n.edge,u,p,_),c.edge=wk(u,t,null,_),n.edge=wk(t,p,null,_),Lk(e),Lk(n)}else c.edge=wk(e.site,c.site)}}function Uk(t,e){var n=t.site,r=n[0],i=n[1],a=i-e;if(!a)return r;var o=t.P;if(!o)return-1/0;var s=(n=o.site)[0],c=n[1],u=c-e;if(!u)return s;var l=s-r,h=1/a-1/u,f=l/u;return h?(-f+Math.sqrt(f*f-2*h*(l*l/(-2*u)-c+u/2+i-a/2)))/h+r:(r+s)/2}function zk(t,e){var n=t.N;if(n)return Uk(n,e);var r=t.site;return r[1]===e?r[0]:1/0}var $k,qk,Hk,Wk,Vk=1e-6,Gk=1e-12;function Xk(t,e,n){return(t[0]-n[0])*(e[1]-t[1])-(t[0]-e[0])*(n[1]-t[1])}function Zk(t,e){return e[1]-t[1]||e[0]-t[0]}function Qk(t,e){var n,r,i,a=t.sort(Zk).pop();for(Wk=[],qk=new Array(t.length),$k=new xk,Hk=new xk;;)if(i=Nk,a&&(!i||a[1]<i.y||a[1]===i.y&&a[0]<i.x))a[0]===n&&a[1]===r||(jk(a),n=a[0],r=a[1]),a=t.pop();else{if(!i)break;Yk(i.arc)}if(function(){for(var t,e,n,r,i=0,a=qk.length;i<a;++i)if((t=qk[i])&&(r=(e=t.halfedges).length)){var o=new Array(r),s=new Array(r);for(n=0;n<r;++n)o[n]=n,s[n]=Sk(t,Wk[e[n]]);for(o.sort((function(t,e){return s[e]-s[t]})),n=0;n<r;++n)s[n]=e[o[n]];for(n=0;n<r;++n)e[n]=s[n]}}(),e){var o=+e[0][0],s=+e[0][1],c=+e[1][0],u=+e[1][1];!function(t,e,n,r){for(var i,a=Wk.length;a--;)Ek(i=Wk[a],t,e,n,r)&&Ck(i,t,e,n,r)&&(Math.abs(i[0][0]-i[1][0])>Vk||Math.abs(i[0][1]-i[1][1])>Vk)||delete Wk[a]}(o,s,c,u),function(t,e,n,r){var i,a,o,s,c,u,l,h,f,d,p,g,y=qk.length,m=!0;for(i=0;i<y;++i)if(a=qk[i]){for(o=a.site,s=(c=a.halfedges).length;s--;)Wk[c[s]]||c.splice(s,1);for(s=0,u=c.length;s<u;)p=(d=Mk(a,Wk[c[s]]))[0],g=d[1],h=(l=Ak(a,Wk[c[++s%u]]))[0],f=l[1],(Math.abs(p-h)>Vk||Math.abs(g-f)>Vk)&&(c.splice(s,0,Wk.push(kk(o,d,Math.abs(p-t)<Vk&&r-g>Vk?[t,Math.abs(h-t)<Vk?f:r]:Math.abs(g-r)<Vk&&n-p>Vk?[Math.abs(f-r)<Vk?h:n,r]:Math.abs(p-n)<Vk&&g-e>Vk?[n,Math.abs(h-n)<Vk?f:e]:Math.abs(g-e)<Vk&&p-t>Vk?[Math.abs(f-e)<Vk?h:t,e]:null))-1),++u);u&&(m=!1)}if(m){var v,b,_,x=1/0;for(i=0,m=null;i<y;++i)(a=qk[i])&&(_=(v=(o=a.site)[0]-t)*v+(b=o[1]-e)*b)<x&&(x=_,m=a);if(m){var w=[t,e],k=[t,r],T=[n,r],C=[n,e];m.halfedges.push(Wk.push(kk(o=m.site,w,k))-1,Wk.push(kk(o,k,T))-1,Wk.push(kk(o,T,C))-1,Wk.push(kk(o,C,w))-1)}}for(i=0;i<y;++i)(a=qk[i])&&(a.halfedges.length||delete qk[i])}(o,s,c,u)}this.edges=Wk,this.cells=qk,$k=Hk=Wk=qk=null}function Kk(){var t=pk,e=gk,n=null;function r(r){return new Qk(r.map((function(n,i){var a=[Math.round(t(n,i,r)/Vk)*Vk,Math.round(e(n,i,r)/Vk)*Vk];return a.index=i,a.data=n,a})),n)}return r.polygons=function(t){return r(t).polygons()},r.links=function(t){return r(t).links()},r.triangles=function(t){return r(t).triangles()},r.x=function(e){return arguments.length?(t="function"==typeof e?e:dk(+e),r):t},r.y=function(t){return arguments.length?(e="function"==typeof t?t:dk(+t),r):e},r.extent=function(t){return arguments.length?(n=null==t?null:[[+t[0][0],+t[0][1]],[+t[1][0],+t[1][1]]],r):n&&[[n[0][0],n[0][1]],[n[1][0],n[1][1]]]},r.size=function(t){return arguments.length?(n=null==t?null:[[0,0],[+t[0],+t[1]]],r):n&&[n[1][0]-n[0][0],n[1][1]-n[0][1]]},r}function Jk(t){return function(){return t}}function tT(t,e,n){this.target=t,this.type=e,this.transform=n}function eT(t,e,n){this.k=t,this.x=e,this.y=n}Qk.prototype={constructor:Qk,polygons:function(){var t=this.edges;return this.cells.map((function(e){var n=e.halfedges.map((function(n){return Ak(e,t[n])}));return n.data=e.site.data,n}))},triangles:function(){var t=[],e=this.edges;return this.cells.forEach((function(n,r){if(a=(i=n.halfedges).length)for(var i,a,o,s=n.site,c=-1,u=e[i[a-1]],l=u.left===s?u.right:u.left;++c<a;)o=l,l=(u=e[i[c]]).left===s?u.right:u.left,o&&l&&r<o.index&&r<l.index&&Xk(s,o,l)<0&&t.push([s.data,o.data,l.data])})),t},links:function(){return this.edges.filter((function(t){return t.right})).map((function(t){return{source:t.left.data,target:t.right.data}}))},find:function(t,e,n){for(var r,i,a=this,o=a._found||0,s=a.cells.length;!(i=a.cells[o]);)if(++o>=s)return null;var c=t-i.site[0],u=e-i.site[1],l=c*c+u*u;do{i=a.cells[r=o],o=null,i.halfedges.forEach((function(n){var r=a.edges[n],s=r.left;if(s!==i.site&&s||(s=r.right)){var c=t-s[0],u=e-s[1],h=c*c+u*u;h<l&&(l=h,o=s.index)}}))}while(null!==o);return a._found=r,null==n||l<=n*n?i.site:null}},eT.prototype={constructor:eT,scale:function(t){return 1===t?this:new eT(this.k*t,this.x,this.y)},translate:function(t,e){return 0===t&0===e?this:new eT(this.k,this.x+this.k*t,this.y+this.k*e)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var nT=new eT(1,0,0);function rT(t){for(;!t.__zoom;)if(!(t=t.parentNode))return nT;return t.__zoom}function iT(){le.stopImmediatePropagation()}function aT(){le.preventDefault(),le.stopImmediatePropagation()}function oT(){return!le.ctrlKey&&!le.button}function sT(){var t=this;return t instanceof SVGElement?(t=t.ownerSVGElement||t).hasAttribute("viewBox")?[[(t=t.viewBox.baseVal).x,t.y],[t.x+t.width,t.y+t.height]]:[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]:[[0,0],[t.clientWidth,t.clientHeight]]}function cT(){return this.__zoom||nT}function uT(){return-le.deltaY*(1===le.deltaMode?.05:le.deltaMode?1:.002)}function lT(){return navigator.maxTouchPoints||"ontouchstart"in this}function hT(t,e,n){var r=t.invertX(e[0][0])-n[0][0],i=t.invertX(e[1][0])-n[1][0],a=t.invertY(e[0][1])-n[0][1],o=t.invertY(e[1][1])-n[1][1];return t.translate(i>r?(r+i)/2:Math.min(0,r)||Math.max(0,i),o>a?(a+o)/2:Math.min(0,a)||Math.max(0,o))}function fT(){var t,e,n=oT,r=sT,i=hT,a=uT,o=lT,s=[0,1/0],c=[[-1/0,-1/0],[1/0,1/0]],u=250,l=Bp,h=ft("start","zoom","end"),f=500,d=0;function p(t){t.property("__zoom",cT).on("wheel.zoom",x).on("mousedown.zoom",w).on("dblclick.zoom",k).filter(o).on("touchstart.zoom",T).on("touchmove.zoom",C).on("touchend.zoom touchcancel.zoom",E).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function g(t,e){return(e=Math.max(s[0],Math.min(s[1],e)))===t.k?t:new eT(e,t.x,t.y)}function y(t,e,n){var r=e[0]-n[0]*t.k,i=e[1]-n[1]*t.k;return r===t.x&&i===t.y?t:new eT(t.k,r,i)}function m(t){return[(+t[0][0]+ +t[1][0])/2,(+t[0][1]+ +t[1][1])/2]}function v(t,e,n){t.on("start.zoom",(function(){b(this,arguments).start()})).on("interrupt.zoom end.zoom",(function(){b(this,arguments).end()})).tween("zoom",(function(){var t=this,i=arguments,a=b(t,i),o=r.apply(t,i),s=null==n?m(o):"function"==typeof n?n.apply(t,i):n,c=Math.max(o[1][0]-o[0][0],o[1][1]-o[0][1]),u=t.__zoom,h="function"==typeof e?e.apply(t,i):e,f=l(u.invert(s).concat(c/u.k),h.invert(s).concat(c/h.k));return function(t){if(1===t)t=h;else{var e=f(t),n=c/e[2];t=new eT(n,s[0]-e[0]*n,s[1]-e[1]*n)}a.zoom(null,t)}}))}function b(t,e,n){return!n&&t.__zooming||new _(t,e)}function _(t,e){this.that=t,this.args=e,this.active=0,this.extent=r.apply(t,e),this.taps=0}function x(){if(n.apply(this,arguments)){var t=b(this,arguments),e=this.__zoom,r=Math.max(s[0],Math.min(s[1],e.k*Math.pow(2,a.apply(this,arguments)))),o=Ln(this);if(t.wheel)t.mouse[0][0]===o[0]&&t.mouse[0][1]===o[1]||(t.mouse[1]=e.invert(t.mouse[0]=o)),clearTimeout(t.wheel);else{if(e.k===r)return;t.mouse=[o,e.invert(o)],ar(this),t.start()}aT(),t.wheel=setTimeout(u,150),t.zoom("mouse",i(y(g(e,r),t.mouse[0],t.mouse[1]),t.extent,c))}function u(){t.wheel=null,t.end()}}function w(){if(!e&&n.apply(this,arguments)){var t=b(this,arguments,!0),r=Te(le.view).on("mousemove.zoom",u,!0).on("mouseup.zoom",l,!0),a=Ln(this),o=le.clientX,s=le.clientY;Se(le.view),iT(),t.mouse=[a,this.__zoom.invert(a)],ar(this),t.start()}function u(){if(aT(),!t.moved){var e=le.clientX-o,n=le.clientY-s;t.moved=e*e+n*n>d}t.zoom("mouse",i(y(t.that.__zoom,t.mouse[0]=Ln(t.that),t.mouse[1]),t.extent,c))}function l(){r.on("mousemove.zoom mouseup.zoom",null),Ae(le.view,t.moved),aT(),t.end()}}function k(){if(n.apply(this,arguments)){var t=this.__zoom,e=Ln(this),a=t.invert(e),o=t.k*(le.shiftKey?.5:2),s=i(y(g(t,o),e,a),r.apply(this,arguments),c);aT(),u>0?Te(this).transition().duration(u).call(v,s,e):Te(this).call(p.transform,s)}}function T(){if(n.apply(this,arguments)){var e,r,i,a,o=le.touches,s=o.length,c=b(this,arguments,le.changedTouches.length===s);for(iT(),r=0;r<s;++r)a=[a=Bn(this,o,(i=o[r]).identifier),this.__zoom.invert(a),i.identifier],c.touch0?c.touch1||c.touch0[2]===a[2]||(c.touch1=a,c.taps=0):(c.touch0=a,e=!0,c.taps=1+!!t);t&&(t=clearTimeout(t)),e&&(c.taps<2&&(t=setTimeout((function(){t=null}),f)),ar(this),c.start())}}function C(){if(this.__zooming){var e,n,r,a,o=b(this,arguments),s=le.changedTouches,u=s.length;for(aT(),t&&(t=clearTimeout(t)),o.taps=0,e=0;e<u;++e)r=Bn(this,s,(n=s[e]).identifier),o.touch0&&o.touch0[2]===n.identifier?o.touch0[0]=r:o.touch1&&o.touch1[2]===n.identifier&&(o.touch1[0]=r);if(n=o.that.__zoom,o.touch1){var l=o.touch0[0],h=o.touch0[1],f=o.touch1[0],d=o.touch1[1],p=(p=f[0]-l[0])*p+(p=f[1]-l[1])*p,m=(m=d[0]-h[0])*m+(m=d[1]-h[1])*m;n=g(n,Math.sqrt(p/m)),r=[(l[0]+f[0])/2,(l[1]+f[1])/2],a=[(h[0]+d[0])/2,(h[1]+d[1])/2]}else{if(!o.touch0)return;r=o.touch0[0],a=o.touch0[1]}o.zoom("touch",i(y(n,r,a),o.extent,c))}}function E(){if(this.__zooming){var t,n,r=b(this,arguments),i=le.changedTouches,a=i.length;for(iT(),e&&clearTimeout(e),e=setTimeout((function(){e=null}),f),t=0;t<a;++t)n=i[t],r.touch0&&r.touch0[2]===n.identifier?delete r.touch0:r.touch1&&r.touch1[2]===n.identifier&&delete r.touch1;if(r.touch1&&!r.touch0&&(r.touch0=r.touch1,delete r.touch1),r.touch0)r.touch0[1]=this.__zoom.invert(r.touch0[0]);else if(r.end(),2===r.taps){var o=Te(this).on("dblclick.zoom");o&&o.apply(this,arguments)}}}return p.transform=function(t,e,n){var r=t.selection?t.selection():t;r.property("__zoom",cT),t!==r?v(t,e,n):r.interrupt().each((function(){b(this,arguments).start().zoom(null,"function"==typeof e?e.apply(this,arguments):e).end()}))},p.scaleBy=function(t,e,n){p.scaleTo(t,(function(){var t=this.__zoom.k,n="function"==typeof e?e.apply(this,arguments):e;return t*n}),n)},p.scaleTo=function(t,e,n){p.transform(t,(function(){var t=r.apply(this,arguments),a=this.__zoom,o=null==n?m(t):"function"==typeof n?n.apply(this,arguments):n,s=a.invert(o),u="function"==typeof e?e.apply(this,arguments):e;return i(y(g(a,u),o,s),t,c)}),n)},p.translateBy=function(t,e,n){p.transform(t,(function(){return i(this.__zoom.translate("function"==typeof e?e.apply(this,arguments):e,"function"==typeof n?n.apply(this,arguments):n),r.apply(this,arguments),c)}))},p.translateTo=function(t,e,n,a){p.transform(t,(function(){var t=r.apply(this,arguments),o=this.__zoom,s=null==a?m(t):"function"==typeof a?a.apply(this,arguments):a;return i(nT.translate(s[0],s[1]).scale(o.k).translate("function"==typeof e?-e.apply(this,arguments):-e,"function"==typeof n?-n.apply(this,arguments):-n),t,c)}),a)},_.prototype={start:function(){return 1==++this.active&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(t,e){return this.mouse&&"mouse"!==t&&(this.mouse[1]=e.invert(this.mouse[0])),this.touch0&&"touch"!==t&&(this.touch0[1]=e.invert(this.touch0[0])),this.touch1&&"touch"!==t&&(this.touch1[1]=e.invert(this.touch1[0])),this.that.__zoom=e,this.emit("zoom"),this},end:function(){return 0==--this.active&&(delete this.that.__zooming,this.emit("end")),this},emit:function(t){ye(new tT(p,t,this.that.__zoom),h.apply,h,[t,this.that,this.args])}},p.wheelDelta=function(t){return arguments.length?(a="function"==typeof t?t:Jk(+t),p):a},p.filter=function(t){return arguments.length?(n="function"==typeof t?t:Jk(!!t),p):n},p.touchable=function(t){return arguments.length?(o="function"==typeof t?t:Jk(!!t),p):o},p.extent=function(t){return arguments.length?(r="function"==typeof t?t:Jk([[+t[0][0],+t[0][1]],[+t[1][0],+t[1][1]]]),p):r},p.scaleExtent=function(t){return arguments.length?(s[0]=+t[0],s[1]=+t[1],p):[s[0],s[1]]},p.translateExtent=function(t){return arguments.length?(c[0][0]=+t[0][0],c[1][0]=+t[1][0],c[0][1]=+t[0][1],c[1][1]=+t[1][1],p):[[c[0][0],c[0][1]],[c[1][0],c[1][1]]]},p.constrain=function(t){return arguments.length?(i=t,p):i},p.duration=function(t){return arguments.length?(u=+t,p):u},p.interpolate=function(t){return arguments.length?(l=t,p):l},p.on=function(){var t=h.on.apply(h,arguments);return t===h?p:t},p.clickDistance=function(t){return arguments.length?(d=(t=+t)*t,p):Math.sqrt(d)},p}rT.prototype=eT.prototype},681:(t,e,n)=>{t.exports={graphlib:n(574),layout:n(8123),debug:n(7570),util:{time:n(1138).time,notime:n(1138).notime},version:n(8177)}},2188:(t,e,n)=>{"use strict";var r=n(8436),i=n(4079);t.exports={run:function(t){var e="greedy"===t.graph().acyclicer?i(t,function(t){return function(e){return t.edge(e).weight}}(t)):function(t){var e=[],n={},i={};return r.forEach(t.nodes(),(function a(o){r.has(i,o)||(i[o]=!0,n[o]=!0,r.forEach(t.outEdges(o),(function(t){r.has(n,t.w)?e.push(t):a(t.w)})),delete n[o])})),e}(t);r.forEach(e,(function(e){var n=t.edge(e);t.removeEdge(e),n.forwardName=e.name,n.reversed=!0,t.setEdge(e.w,e.v,n,r.uniqueId("rev"))}))},undo:function(t){r.forEach(t.edges(),(function(e){var n=t.edge(e);if(n.reversed){t.removeEdge(e);var r=n.forwardName;delete n.reversed,delete n.forwardName,t.setEdge(e.w,e.v,n,r)}}))}}},1133:(t,e,n)=>{var r=n(8436),i=n(1138);function a(t,e,n,r,a,o){var s={width:0,height:0,rank:o,borderType:e},c=a[e][o-1],u=i.addDummyNode(t,"border",s,n);a[e][o]=u,t.setParent(u,r),c&&t.setEdge(c,u,{weight:1})}t.exports=function(t){r.forEach(t.children(),(function e(n){var i=t.children(n),o=t.node(n);if(i.length&&r.forEach(i,e),r.has(o,"minRank")){o.borderLeft=[],o.borderRight=[];for(var s=o.minRank,c=o.maxRank+1;s<c;++s)a(t,"borderLeft","_bl",n,o,s),a(t,"borderRight","_br",n,o,s)}}))}},3258:(t,e,n)=>{"use strict";var r=n(8436);function i(t){r.forEach(t.nodes(),(function(e){a(t.node(e))})),r.forEach(t.edges(),(function(e){a(t.edge(e))}))}function a(t){var e=t.width;t.width=t.height,t.height=e}function o(t){t.y=-t.y}function s(t){var e=t.x;t.x=t.y,t.y=e}t.exports={adjust:function(t){var e=t.graph().rankdir.toLowerCase();"lr"!==e&&"rl"!==e||i(t)},undo:function(t){var e=t.graph().rankdir.toLowerCase();"bt"!==e&&"rl"!==e||function(t){r.forEach(t.nodes(),(function(e){o(t.node(e))})),r.forEach(t.edges(),(function(e){var n=t.edge(e);r.forEach(n.points,o),r.has(n,"y")&&o(n)}))}(t),"lr"!==e&&"rl"!==e||(function(t){r.forEach(t.nodes(),(function(e){s(t.node(e))})),r.forEach(t.edges(),(function(e){var n=t.edge(e);r.forEach(n.points,s),r.has(n,"x")&&s(n)}))}(t),i(t))}}},7822:t=>{function e(){var t={};t._next=t._prev=t,this._sentinel=t}function n(t){t._prev._next=t._next,t._next._prev=t._prev,delete t._next,delete t._prev}function r(t,e){if("_next"!==t&&"_prev"!==t)return e}t.exports=e,e.prototype.dequeue=function(){var t=this._sentinel,e=t._prev;if(e!==t)return n(e),e},e.prototype.enqueue=function(t){var e=this._sentinel;t._prev&&t._next&&n(t),t._next=e._next,e._next._prev=t,e._next=t,t._prev=e},e.prototype.toString=function(){for(var t=[],e=this._sentinel,n=e._prev;n!==e;)t.push(JSON.stringify(n,r)),n=n._prev;return"["+t.join(", ")+"]"}},7570:(t,e,n)=>{var r=n(8436),i=n(1138),a=n(574).Graph;t.exports={debugOrdering:function(t){var e=i.buildLayerMatrix(t),n=new a({compound:!0,multigraph:!0}).setGraph({});return r.forEach(t.nodes(),(function(e){n.setNode(e,{label:e}),n.setParent(e,"layer"+t.node(e).rank)})),r.forEach(t.edges(),(function(t){n.setEdge(t.v,t.w,{},t.name)})),r.forEach(e,(function(t,e){var i="layer"+e;n.setNode(i,{rank:"same"}),r.reduce(t,(function(t,e){return n.setEdge(t,e,{style:"invis"}),e}))})),n}}},574:(t,e,n)=>{var r;try{r=n(8282)}catch(t){}r||(r=window.graphlib),t.exports=r},4079:(t,e,n)=>{var r=n(8436),i=n(574).Graph,a=n(7822);t.exports=function(t,e){if(t.nodeCount()<=1)return[];var n=function(t,e){var n=new i,o=0,s=0;r.forEach(t.nodes(),(function(t){n.setNode(t,{v:t,in:0,out:0})})),r.forEach(t.edges(),(function(t){var r=n.edge(t.v,t.w)||0,i=e(t),a=r+i;n.setEdge(t.v,t.w,a),s=Math.max(s,n.node(t.v).out+=i),o=Math.max(o,n.node(t.w).in+=i)}));var u=r.range(s+o+3).map((function(){return new a})),l=o+1;return r.forEach(n.nodes(),(function(t){c(u,l,n.node(t))})),{graph:n,buckets:u,zeroIdx:l}}(t,e||o),u=function(t,e,n){for(var r,i=[],a=e[e.length-1],o=e[0];t.nodeCount();){for(;r=o.dequeue();)s(t,e,n,r);for(;r=a.dequeue();)s(t,e,n,r);if(t.nodeCount())for(var c=e.length-2;c>0;--c)if(r=e[c].dequeue()){i=i.concat(s(t,e,n,r,!0));break}}return i}(n.graph,n.buckets,n.zeroIdx);return r.flatten(r.map(u,(function(e){return t.outEdges(e.v,e.w)})),!0)};var o=r.constant(1);function s(t,e,n,i,a){var o=a?[]:void 0;return r.forEach(t.inEdges(i.v),(function(r){var i=t.edge(r),s=t.node(r.v);a&&o.push({v:r.v,w:r.w}),s.out-=i,c(e,n,s)})),r.forEach(t.outEdges(i.v),(function(r){var i=t.edge(r),a=r.w,o=t.node(a);o.in-=i,c(e,n,o)})),t.removeNode(i.v),o}function c(t,e,n){n.out?n.in?t[n.out-n.in+e].enqueue(n):t[t.length-1].enqueue(n):t[0].enqueue(n)}},8123:(t,e,n)=>{"use strict";var r=n(8436),i=n(2188),a=n(5995),o=n(8093),s=n(1138).normalizeRanks,c=n(4219),u=n(1138).removeEmptyRanks,l=n(2981),h=n(1133),f=n(3258),d=n(3408),p=n(7873),g=n(1138),y=n(574).Graph;t.exports=function(t,e){var n=e&&e.debugTiming?g.time:g.notime;n("layout",(function(){var e=n(" buildLayoutGraph",(function(){return function(t){var e=new y({multigraph:!0,compound:!0}),n=E(t.graph());return e.setGraph(r.merge({},v,C(n,m),r.pick(n,b))),r.forEach(t.nodes(),(function(n){var i=E(t.node(n));e.setNode(n,r.defaults(C(i,_),x)),e.setParent(n,t.parent(n))})),r.forEach(t.edges(),(function(n){var i=E(t.edge(n));e.setEdge(n,r.merge({},k,C(i,w),r.pick(i,T)))})),e}(t)}));n(" runLayout",(function(){!function(t,e){e(" makeSpaceForEdgeLabels",(function(){!function(t){var e=t.graph();e.ranksep/=2,r.forEach(t.edges(),(function(n){var r=t.edge(n);r.minlen*=2,"c"!==r.labelpos.toLowerCase()&&("TB"===e.rankdir||"BT"===e.rankdir?r.width+=r.labeloffset:r.height+=r.labeloffset)}))}(t)})),e(" removeSelfEdges",(function(){!function(t){r.forEach(t.edges(),(function(e){if(e.v===e.w){var n=t.node(e.v);n.selfEdges||(n.selfEdges=[]),n.selfEdges.push({e,label:t.edge(e)}),t.removeEdge(e)}}))}(t)})),e(" acyclic",(function(){i.run(t)})),e(" nestingGraph.run",(function(){l.run(t)})),e(" rank",(function(){o(g.asNonCompoundGraph(t))})),e(" injectEdgeLabelProxies",(function(){!function(t){r.forEach(t.edges(),(function(e){var n=t.edge(e);if(n.width&&n.height){var r=t.node(e.v),i={rank:(t.node(e.w).rank-r.rank)/2+r.rank,e};g.addDummyNode(t,"edge-proxy",i,"_ep")}}))}(t)})),e(" removeEmptyRanks",(function(){u(t)})),e(" nestingGraph.cleanup",(function(){l.cleanup(t)})),e(" normalizeRanks",(function(){s(t)})),e(" assignRankMinMax",(function(){!function(t){var e=0;r.forEach(t.nodes(),(function(n){var i=t.node(n);i.borderTop&&(i.minRank=t.node(i.borderTop).rank,i.maxRank=t.node(i.borderBottom).rank,e=r.max(e,i.maxRank))})),t.graph().maxRank=e}(t)})),e(" removeEdgeLabelProxies",(function(){!function(t){r.forEach(t.nodes(),(function(e){var n=t.node(e);"edge-proxy"===n.dummy&&(t.edge(n.e).labelRank=n.rank,t.removeNode(e))}))}(t)})),e(" normalize.run",(function(){a.run(t)})),e(" parentDummyChains",(function(){c(t)})),e(" addBorderSegments",(function(){h(t)})),e(" order",(function(){d(t)})),e(" insertSelfEdges",(function(){!function(t){var e=g.buildLayerMatrix(t);r.forEach(e,(function(e){var n=0;r.forEach(e,(function(e,i){var a=t.node(e);a.order=i+n,r.forEach(a.selfEdges,(function(e){g.addDummyNode(t,"selfedge",{width:e.label.width,height:e.label.height,rank:a.rank,order:i+ ++n,e:e.e,label:e.label},"_se")})),delete a.selfEdges}))}))}(t)})),e(" adjustCoordinateSystem",(function(){f.adjust(t)})),e(" position",(function(){p(t)})),e(" positionSelfEdges",(function(){!function(t){r.forEach(t.nodes(),(function(e){var n=t.node(e);if("selfedge"===n.dummy){var r=t.node(n.e.v),i=r.x+r.width/2,a=r.y,o=n.x-i,s=r.height/2;t.setEdge(n.e,n.label),t.removeNode(e),n.label.points=[{x:i+2*o/3,y:a-s},{x:i+5*o/6,y:a-s},{x:i+o,y:a},{x:i+5*o/6,y:a+s},{x:i+2*o/3,y:a+s}],n.label.x=n.x,n.label.y=n.y}}))}(t)})),e(" removeBorderNodes",(function(){!function(t){r.forEach(t.nodes(),(function(e){if(t.children(e).length){var n=t.node(e),i=t.node(n.borderTop),a=t.node(n.borderBottom),o=t.node(r.last(n.borderLeft)),s=t.node(r.last(n.borderRight));n.width=Math.abs(s.x-o.x),n.height=Math.abs(a.y-i.y),n.x=o.x+n.width/2,n.y=i.y+n.height/2}})),r.forEach(t.nodes(),(function(e){"border"===t.node(e).dummy&&t.removeNode(e)}))}(t)})),e(" normalize.undo",(function(){a.undo(t)})),e(" fixupEdgeLabelCoords",(function(){!function(t){r.forEach(t.edges(),(function(e){var n=t.edge(e);if(r.has(n,"x"))switch("l"!==n.labelpos&&"r"!==n.labelpos||(n.width-=n.labeloffset),n.labelpos){case"l":n.x-=n.width/2+n.labeloffset;break;case"r":n.x+=n.width/2+n.labeloffset}}))}(t)})),e(" undoCoordinateSystem",(function(){f.undo(t)})),e(" translateGraph",(function(){!function(t){var e=Number.POSITIVE_INFINITY,n=0,i=Number.POSITIVE_INFINITY,a=0,o=t.graph(),s=o.marginx||0,c=o.marginy||0;function u(t){var r=t.x,o=t.y,s=t.width,c=t.height;e=Math.min(e,r-s/2),n=Math.max(n,r+s/2),i=Math.min(i,o-c/2),a=Math.max(a,o+c/2)}r.forEach(t.nodes(),(function(e){u(t.node(e))})),r.forEach(t.edges(),(function(e){var n=t.edge(e);r.has(n,"x")&&u(n)})),e-=s,i-=c,r.forEach(t.nodes(),(function(n){var r=t.node(n);r.x-=e,r.y-=i})),r.forEach(t.edges(),(function(n){var a=t.edge(n);r.forEach(a.points,(function(t){t.x-=e,t.y-=i})),r.has(a,"x")&&(a.x-=e),r.has(a,"y")&&(a.y-=i)})),o.width=n-e+s,o.height=a-i+c}(t)})),e(" assignNodeIntersects",(function(){!function(t){r.forEach(t.edges(),(function(e){var n,r,i=t.edge(e),a=t.node(e.v),o=t.node(e.w);i.points?(n=i.points[0],r=i.points[i.points.length-1]):(i.points=[],n=o,r=a),i.points.unshift(g.intersectRect(a,n)),i.points.push(g.intersectRect(o,r))}))}(t)})),e(" reversePoints",(function(){!function(t){r.forEach(t.edges(),(function(e){var n=t.edge(e);n.reversed&&n.points.reverse()}))}(t)})),e(" acyclic.undo",(function(){i.undo(t)}))}(e,n)})),n(" updateInputGraph",(function(){!function(t,e){r.forEach(t.nodes(),(function(n){var r=t.node(n),i=e.node(n);r&&(r.x=i.x,r.y=i.y,e.children(n).length&&(r.width=i.width,r.height=i.height))})),r.forEach(t.edges(),(function(n){var i=t.edge(n),a=e.edge(n);i.points=a.points,r.has(a,"x")&&(i.x=a.x,i.y=a.y)})),t.graph().width=e.graph().width,t.graph().height=e.graph().height}(t,e)}))}))};var m=["nodesep","edgesep","ranksep","marginx","marginy"],v={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},b=["acyclicer","ranker","rankdir","align"],_=["width","height"],x={width:0,height:0},w=["minlen","weight","width","height","labeloffset"],k={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},T=["labelpos"];function C(t,e){return r.mapValues(r.pick(t,e),Number)}function E(t){var e={};return r.forEach(t,(function(t,n){e[n.toLowerCase()]=t})),e}},8436:(t,e,n)=>{var r;try{r={cloneDeep:n(361),constant:n(5703),defaults:n(1747),each:n(6073),filter:n(3105),find:n(3311),flatten:n(5564),forEach:n(4486),forIn:n(2620),has:n(8721),isUndefined:n(2353),last:n(928),map:n(5161),mapValues:n(6604),max:n(6162),merge:n(3857),min:n(3632),minBy:n(2762),now:n(7771),pick:n(9722),range:n(6026),reduce:n(4061),sortBy:n(9734),uniqueId:n(3955),values:n(2628),zipObject:n(7287)}}catch(t){}r||(r=window._),t.exports=r},2981:(t,e,n)=>{var r=n(8436),i=n(1138);function a(t,e,n,o,s,c,u){var l=t.children(u);if(l.length){var h=i.addBorderNode(t,"_bt"),f=i.addBorderNode(t,"_bb"),d=t.node(u);t.setParent(h,u),d.borderTop=h,t.setParent(f,u),d.borderBottom=f,r.forEach(l,(function(r){a(t,e,n,o,s,c,r);var i=t.node(r),l=i.borderTop?i.borderTop:r,d=i.borderBottom?i.borderBottom:r,p=i.borderTop?o:2*o,g=l!==d?1:s-c[u]+1;t.setEdge(h,l,{weight:p,minlen:g,nestingEdge:!0}),t.setEdge(d,f,{weight:p,minlen:g,nestingEdge:!0})})),t.parent(u)||t.setEdge(e,h,{weight:0,minlen:s+c[u]})}else u!==e&&t.setEdge(e,u,{weight:0,minlen:n})}t.exports={run:function(t){var e=i.addDummyNode(t,"root",{},"_root"),n=function(t){var e={};function n(i,a){var o=t.children(i);o&&o.length&&r.forEach(o,(function(t){n(t,a+1)})),e[i]=a}return r.forEach(t.children(),(function(t){n(t,1)})),e}(t),o=r.max(r.values(n))-1,s=2*o+1;t.graph().nestingRoot=e,r.forEach(t.edges(),(function(e){t.edge(e).minlen*=s}));var c=function(t){return r.reduce(t.edges(),(function(e,n){return e+t.edge(n).weight}),0)}(t)+1;r.forEach(t.children(),(function(r){a(t,e,s,c,o,n,r)})),t.graph().nodeRankFactor=s},cleanup:function(t){var e=t.graph();t.removeNode(e.nestingRoot),delete e.nestingRoot,r.forEach(t.edges(),(function(e){t.edge(e).nestingEdge&&t.removeEdge(e)}))}}},5995:(t,e,n)=>{"use strict";var r=n(8436),i=n(1138);t.exports={run:function(t){t.graph().dummyChains=[],r.forEach(t.edges(),(function(e){!function(t,e){var n,r,a,o=e.v,s=t.node(o).rank,c=e.w,u=t.node(c).rank,l=e.name,h=t.edge(e),f=h.labelRank;if(u!==s+1){for(t.removeEdge(e),a=0,++s;s<u;++a,++s)h.points=[],r={width:0,height:0,edgeLabel:h,edgeObj:e,rank:s},n=i.addDummyNode(t,"edge",r,"_d"),s===f&&(r.width=h.width,r.height=h.height,r.dummy="edge-label",r.labelpos=h.labelpos),t.setEdge(o,n,{weight:h.weight},l),0===a&&t.graph().dummyChains.push(n),o=n;t.setEdge(o,c,{weight:h.weight},l)}}(t,e)}))},undo:function(t){r.forEach(t.graph().dummyChains,(function(e){var n,r=t.node(e),i=r.edgeLabel;for(t.setEdge(r.edgeObj,i);r.dummy;)n=t.successors(e)[0],t.removeNode(e),i.points.push({x:r.x,y:r.y}),"edge-label"===r.dummy&&(i.x=r.x,i.y=r.y,i.width=r.width,i.height=r.height),e=n,r=t.node(e)}))}}},5093:(t,e,n)=>{var r=n(8436);t.exports=function(t,e,n){var i,a={};r.forEach(n,(function(n){for(var r,o,s=t.parent(n);s;){if((r=t.parent(s))?(o=a[r],a[r]=s):(o=i,i=s),o&&o!==s)return void e.setEdge(o,s);s=r}}))}},5439:(t,e,n)=>{var r=n(8436);t.exports=function(t,e){return r.map(e,(function(e){var n=t.inEdges(e);if(n.length){var i=r.reduce(n,(function(e,n){var r=t.edge(n),i=t.node(n.v);return{sum:e.sum+r.weight*i.order,weight:e.weight+r.weight}}),{sum:0,weight:0});return{v:e,barycenter:i.sum/i.weight,weight:i.weight}}return{v:e}}))}},3128:(t,e,n)=>{var r=n(8436),i=n(574).Graph;t.exports=function(t,e,n){var a=function(t){for(var e;t.hasNode(e=r.uniqueId("_root")););return e}(t),o=new i({compound:!0}).setGraph({root:a}).setDefaultNodeLabel((function(e){return t.node(e)}));return r.forEach(t.nodes(),(function(i){var s=t.node(i),c=t.parent(i);(s.rank===e||s.minRank<=e&&e<=s.maxRank)&&(o.setNode(i),o.setParent(i,c||a),r.forEach(t[n](i),(function(e){var n=e.v===i?e.w:e.v,a=o.edge(n,i),s=r.isUndefined(a)?0:a.weight;o.setEdge(n,i,{weight:t.edge(e).weight+s})})),r.has(s,"minRank")&&o.setNode(i,{borderLeft:s.borderLeft[e],borderRight:s.borderRight[e]}))})),o}},6630:(t,e,n)=>{"use strict";var r=n(8436);function i(t,e,n){for(var i=r.zipObject(n,r.map(n,(function(t,e){return e}))),a=r.flatten(r.map(e,(function(e){return r.sortBy(r.map(t.outEdges(e),(function(e){return{pos:i[e.w],weight:t.edge(e).weight}})),"pos")})),!0),o=1;o<n.length;)o<<=1;var s=2*o-1;o-=1;var c=r.map(new Array(s),(function(){return 0})),u=0;return r.forEach(a.forEach((function(t){var e=t.pos+o;c[e]+=t.weight;for(var n=0;e>0;)e%2&&(n+=c[e+1]),c[e=e-1>>1]+=t.weight;u+=t.weight*n}))),u}t.exports=function(t,e){for(var n=0,r=1;r<e.length;++r)n+=i(t,e[r-1],e[r]);return n}},3408:(t,e,n)=>{"use strict";var r=n(8436),i=n(2588),a=n(6630),o=n(1026),s=n(3128),c=n(5093),u=n(574).Graph,l=n(1138);function h(t,e,n){return r.map(e,(function(e){return s(t,e,n)}))}function f(t,e){var n=new u;r.forEach(t,(function(t){var i=t.graph().root,a=o(t,i,n,e);r.forEach(a.vs,(function(e,n){t.node(e).order=n})),c(t,n,a.vs)}))}function d(t,e){r.forEach(e,(function(e){r.forEach(e,(function(e,n){t.node(e).order=n}))}))}t.exports=function(t){var e=l.maxRank(t),n=h(t,r.range(1,e+1),"inEdges"),o=h(t,r.range(e-1,-1,-1),"outEdges"),s=i(t);d(t,s);for(var c,u=Number.POSITIVE_INFINITY,p=0,g=0;g<4;++p,++g){f(p%2?n:o,p%4>=2),s=l.buildLayerMatrix(t);var y=a(t,s);y<u&&(g=0,c=r.cloneDeep(s),u=y)}d(t,c)}},2588:(t,e,n)=>{"use strict";var r=n(8436);t.exports=function(t){var e={},n=r.filter(t.nodes(),(function(e){return!t.children(e).length})),i=r.max(r.map(n,(function(e){return t.node(e).rank}))),a=r.map(r.range(i+1),(function(){return[]})),o=r.sortBy(n,(function(e){return t.node(e).rank}));return r.forEach(o,(function n(i){if(!r.has(e,i)){e[i]=!0;var o=t.node(i);a[o.rank].push(i),r.forEach(t.successors(i),n)}})),a}},9567:(t,e,n)=>{"use strict";var r=n(8436);t.exports=function(t,e){var n={};return r.forEach(t,(function(t,e){var i=n[t.v]={indegree:0,in:[],out:[],vs:[t.v],i:e};r.isUndefined(t.barycenter)||(i.barycenter=t.barycenter,i.weight=t.weight)})),r.forEach(e.edges(),(function(t){var e=n[t.v],i=n[t.w];r.isUndefined(e)||r.isUndefined(i)||(i.indegree++,e.out.push(n[t.w]))})),function(t){var e=[];function n(t){return function(e){var n,i,a,o;e.merged||(r.isUndefined(e.barycenter)||r.isUndefined(t.barycenter)||e.barycenter>=t.barycenter)&&(i=e,a=0,o=0,(n=t).weight&&(a+=n.barycenter*n.weight,o+=n.weight),i.weight&&(a+=i.barycenter*i.weight,o+=i.weight),n.vs=i.vs.concat(n.vs),n.barycenter=a/o,n.weight=o,n.i=Math.min(i.i,n.i),i.merged=!0)}}function i(e){return function(n){n.in.push(e),0==--n.indegree&&t.push(n)}}for(;t.length;){var a=t.pop();e.push(a),r.forEach(a.in.reverse(),n(a)),r.forEach(a.out,i(a))}return r.map(r.filter(e,(function(t){return!t.merged})),(function(t){return r.pick(t,["vs","i","barycenter","weight"])}))}(r.filter(n,(function(t){return!t.indegree})))}},1026:(t,e,n)=>{var r=n(8436),i=n(5439),a=n(9567),o=n(7304);t.exports=function t(e,n,s,c){var u=e.children(n),l=e.node(n),h=l?l.borderLeft:void 0,f=l?l.borderRight:void 0,d={};h&&(u=r.filter(u,(function(t){return t!==h&&t!==f})));var p=i(e,u);r.forEach(p,(function(n){if(e.children(n.v).length){var i=t(e,n.v,s,c);d[n.v]=i,r.has(i,"barycenter")&&(a=n,o=i,r.isUndefined(a.barycenter)?(a.barycenter=o.barycenter,a.weight=o.weight):(a.barycenter=(a.barycenter*a.weight+o.barycenter*o.weight)/(a.weight+o.weight),a.weight+=o.weight))}var a,o}));var g=a(p,s);!function(t,e){r.forEach(t,(function(t){t.vs=r.flatten(t.vs.map((function(t){return e[t]?e[t].vs:t})),!0)}))}(g,d);var y=o(g,c);if(h&&(y.vs=r.flatten([h,y.vs,f],!0),e.predecessors(h).length)){var m=e.node(e.predecessors(h)[0]),v=e.node(e.predecessors(f)[0]);r.has(y,"barycenter")||(y.barycenter=0,y.weight=0),y.barycenter=(y.barycenter*y.weight+m.order+v.order)/(y.weight+2),y.weight+=2}return y}},7304:(t,e,n)=>{var r=n(8436),i=n(1138);function a(t,e,n){for(var i;e.length&&(i=r.last(e)).i<=n;)e.pop(),t.push(i.vs),n++;return n}t.exports=function(t,e){var n,o=i.partition(t,(function(t){return r.has(t,"barycenter")})),s=o.lhs,c=r.sortBy(o.rhs,(function(t){return-t.i})),u=[],l=0,h=0,f=0;s.sort((n=!!e,function(t,e){return t.barycenter<e.barycenter?-1:t.barycenter>e.barycenter?1:n?e.i-t.i:t.i-e.i})),f=a(u,c,f),r.forEach(s,(function(t){f+=t.vs.length,u.push(t.vs),l+=t.barycenter*t.weight,h+=t.weight,f=a(u,c,f)}));var d={vs:r.flatten(u,!0)};return h&&(d.barycenter=l/h,d.weight=h),d}},4219:(t,e,n)=>{var r=n(8436);t.exports=function(t){var e=function(t){var e={},n=0;return r.forEach(t.children(),(function i(a){var o=n;r.forEach(t.children(a),i),e[a]={low:o,lim:n++}})),e}(t);r.forEach(t.graph().dummyChains,(function(n){for(var r=t.node(n),i=r.edgeObj,a=function(t,e,n,r){var i,a,o=[],s=[],c=Math.min(e[n].low,e[r].low),u=Math.max(e[n].lim,e[r].lim);i=n;do{i=t.parent(i),o.push(i)}while(i&&(e[i].low>c||u>e[i].lim));for(a=i,i=r;(i=t.parent(i))!==a;)s.push(i);return{path:o.concat(s.reverse()),lca:a}}(t,e,i.v,i.w),o=a.path,s=a.lca,c=0,u=o[c],l=!0;n!==i.w;){if(r=t.node(n),l){for(;(u=o[c])!==s&&t.node(u).maxRank<r.rank;)c++;u===s&&(l=!1)}if(!l){for(;c<o.length-1&&t.node(u=o[c+1]).minRank<=r.rank;)c++;u=o[c]}t.setParent(n,u),n=t.successors(n)[0]}}))}},3573:(t,e,n)=>{"use strict";var r=n(8436),i=n(574).Graph,a=n(1138);function o(t,e){var n={};return r.reduce(e,(function(e,i){var a=0,o=0,s=e.length,u=r.last(i);return r.forEach(i,(function(e,l){var h=function(t,e){if(t.node(e).dummy)return r.find(t.predecessors(e),(function(e){return t.node(e).dummy}))}(t,e),f=h?t.node(h).order:s;(h||e===u)&&(r.forEach(i.slice(o,l+1),(function(e){r.forEach(t.predecessors(e),(function(r){var i=t.node(r),o=i.order;!(o<a||f<o)||i.dummy&&t.node(e).dummy||c(n,r,e)}))})),o=l+1,a=f)})),i})),n}function s(t,e){var n={};function i(e,i,a,o,s){var u;r.forEach(r.range(i,a),(function(i){u=e[i],t.node(u).dummy&&r.forEach(t.predecessors(u),(function(e){var r=t.node(e);r.dummy&&(r.order<o||r.order>s)&&c(n,e,u)}))}))}return r.reduce(e,(function(e,n){var a,o=-1,s=0;return r.forEach(n,(function(r,c){if("border"===t.node(r).dummy){var u=t.predecessors(r);u.length&&(a=t.node(u[0]).order,i(n,s,c,o,a),s=c,o=a)}i(n,s,n.length,a,e.length)})),n})),n}function c(t,e,n){if(e>n){var r=e;e=n,n=r}var i=t[e];i||(t[e]=i={}),i[n]=!0}function u(t,e,n){if(e>n){var i=e;e=n,n=i}return r.has(t[e],n)}function l(t,e,n,i){var a={},o={},s={};return r.forEach(e,(function(t){r.forEach(t,(function(t,e){a[t]=t,o[t]=t,s[t]=e}))})),r.forEach(e,(function(t){var e=-1;r.forEach(t,(function(t){var c=i(t);if(c.length){c=r.sortBy(c,(function(t){return s[t]}));for(var l=(c.length-1)/2,h=Math.floor(l),f=Math.ceil(l);h<=f;++h){var d=c[h];o[t]===t&&e<s[d]&&!u(n,t,d)&&(o[d]=t,o[t]=a[t]=a[d],e=s[d])}}}))})),{root:a,align:o}}function h(t,e,n,a,o){var s={},c=function(t,e,n,a){var o=new i,s=t.graph(),c=function(t,e,n){return function(i,a,o){var s,c=i.node(a),u=i.node(o),l=0;if(l+=c.width/2,r.has(c,"labelpos"))switch(c.labelpos.toLowerCase()){case"l":s=-c.width/2;break;case"r":s=c.width/2}if(s&&(l+=n?s:-s),s=0,l+=(c.dummy?e:t)/2,l+=(u.dummy?e:t)/2,l+=u.width/2,r.has(u,"labelpos"))switch(u.labelpos.toLowerCase()){case"l":s=u.width/2;break;case"r":s=-u.width/2}return s&&(l+=n?s:-s),s=0,l}}(s.nodesep,s.edgesep,a);return r.forEach(e,(function(e){var i;r.forEach(e,(function(e){var r=n[e];if(o.setNode(r),i){var a=n[i],s=o.edge(a,r);o.setEdge(a,r,Math.max(c(t,e,i),s||0))}i=e}))})),o}(t,e,n,o),u=o?"borderLeft":"borderRight";function l(t,e){for(var n=c.nodes(),r=n.pop(),i={};r;)i[r]?t(r):(i[r]=!0,n.push(r),n=n.concat(e(r))),r=n.pop()}return l((function(t){s[t]=c.inEdges(t).reduce((function(t,e){return Math.max(t,s[e.v]+c.edge(e))}),0)}),c.predecessors.bind(c)),l((function(e){var n=c.outEdges(e).reduce((function(t,e){return Math.min(t,s[e.w]-c.edge(e))}),Number.POSITIVE_INFINITY),r=t.node(e);n!==Number.POSITIVE_INFINITY&&r.borderType!==u&&(s[e]=Math.max(s[e],n))}),c.successors.bind(c)),r.forEach(a,(function(t){s[t]=s[n[t]]})),s}function f(t,e){return r.minBy(r.values(e),(function(e){var n=Number.NEGATIVE_INFINITY,i=Number.POSITIVE_INFINITY;return r.forIn(e,(function(e,r){var a=function(t,e){return t.node(e).width}(t,r)/2;n=Math.max(e+a,n),i=Math.min(e-a,i)})),n-i}))}function d(t,e){var n=r.values(e),i=r.min(n),a=r.max(n);r.forEach(["u","d"],(function(n){r.forEach(["l","r"],(function(o){var s,c=n+o,u=t[c];if(u!==e){var l=r.values(u);(s="l"===o?i-r.min(l):a-r.max(l))&&(t[c]=r.mapValues(u,(function(t){return t+s})))}}))}))}function p(t,e){return r.mapValues(t.ul,(function(n,i){if(e)return t[e.toLowerCase()][i];var a=r.sortBy(r.map(t,i));return(a[1]+a[2])/2}))}t.exports={positionX:function(t){var e,n=a.buildLayerMatrix(t),i=r.merge(o(t,n),s(t,n)),c={};r.forEach(["u","d"],(function(a){e="u"===a?n:r.values(n).reverse(),r.forEach(["l","r"],(function(n){"r"===n&&(e=r.map(e,(function(t){return r.values(t).reverse()})));var o=("u"===a?t.predecessors:t.successors).bind(t),s=l(0,e,i,o),u=h(t,e,s.root,s.align,"r"===n);"r"===n&&(u=r.mapValues(u,(function(t){return-t}))),c[a+n]=u}))}));var u=f(t,c);return d(c,u),p(c,t.graph().align)},findType1Conflicts:o,findType2Conflicts:s,addConflict:c,hasConflict:u,verticalAlignment:l,horizontalCompaction:h,alignCoordinates:d,findSmallestWidthAlignment:f,balance:p}},7873:(t,e,n)=>{"use strict";var r=n(8436),i=n(1138),a=n(3573).positionX;t.exports=function(t){(function(t){var e=i.buildLayerMatrix(t),n=t.graph().ranksep,a=0;r.forEach(e,(function(e){var i=r.max(r.map(e,(function(e){return t.node(e).height})));r.forEach(e,(function(e){t.node(e).y=a+i/2})),a+=i+n}))})(t=i.asNonCompoundGraph(t)),r.forEach(a(t),(function(e,n){t.node(n).x=e}))}},300:(t,e,n)=>{"use strict";var r=n(8436),i=n(574).Graph,a=n(6681).slack;function o(t,e){return r.forEach(t.nodes(),(function n(i){r.forEach(e.nodeEdges(i),(function(r){var o=r.v,s=i===o?r.w:o;t.hasNode(s)||a(e,r)||(t.setNode(s,{}),t.setEdge(i,s,{}),n(s))}))})),t.nodeCount()}function s(t,e){return r.minBy(e.edges(),(function(n){if(t.hasNode(n.v)!==t.hasNode(n.w))return a(e,n)}))}function c(t,e,n){r.forEach(t.nodes(),(function(t){e.node(t).rank+=n}))}t.exports=function(t){var e,n,r=new i({directed:!1}),u=t.nodes()[0],l=t.nodeCount();for(r.setNode(u,{});o(r,t)<l;)e=s(r,t),n=r.hasNode(e.v)?a(t,e):-a(t,e),c(r,t,n);return r}},8093:(t,e,n)=>{"use strict";var r=n(6681).longestPath,i=n(300),a=n(2472);t.exports=function(t){switch(t.graph().ranker){case"network-simplex":default:!function(t){a(t)}(t);break;case"tight-tree":!function(t){r(t),i(t)}(t);break;case"longest-path":o(t)}};var o=r},2472:(t,e,n)=>{"use strict";var r=n(8436),i=n(300),a=n(6681).slack,o=n(6681).longestPath,s=n(574).alg.preorder,c=n(574).alg.postorder,u=n(1138).simplify;function l(t){t=u(t),o(t);var e,n=i(t);for(d(n),h(n,t);e=g(n);)m(n,t,e,y(n,t,e))}function h(t,e){var n=c(t,t.nodes());n=n.slice(0,n.length-1),r.forEach(n,(function(n){!function(t,e,n){var r=t.node(n).parent;t.edge(n,r).cutvalue=f(t,e,n)}(t,e,n)}))}function f(t,e,n){var i=t.node(n).parent,a=!0,o=e.edge(n,i),s=0;return o||(a=!1,o=e.edge(i,n)),s=o.weight,r.forEach(e.nodeEdges(n),(function(r){var o,c,u=r.v===n,l=u?r.w:r.v;if(l!==i){var h=u===a,f=e.edge(r).weight;if(s+=h?f:-f,o=n,c=l,t.hasEdge(o,c)){var d=t.edge(n,l).cutvalue;s+=h?-d:d}}})),s}function d(t,e){arguments.length<2&&(e=t.nodes()[0]),p(t,{},1,e)}function p(t,e,n,i,a){var o=n,s=t.node(i);return e[i]=!0,r.forEach(t.neighbors(i),(function(a){r.has(e,a)||(n=p(t,e,n,a,i))})),s.low=o,s.lim=n++,a?s.parent=a:delete s.parent,n}function g(t){return r.find(t.edges(),(function(e){return t.edge(e).cutvalue<0}))}function y(t,e,n){var i=n.v,o=n.w;e.hasEdge(i,o)||(i=n.w,o=n.v);var s=t.node(i),c=t.node(o),u=s,l=!1;s.lim>c.lim&&(u=c,l=!0);var h=r.filter(e.edges(),(function(e){return l===v(0,t.node(e.v),u)&&l!==v(0,t.node(e.w),u)}));return r.minBy(h,(function(t){return a(e,t)}))}function m(t,e,n,i){var a=n.v,o=n.w;t.removeEdge(a,o),t.setEdge(i.v,i.w,{}),d(t),h(t,e),function(t,e){var n=r.find(t.nodes(),(function(t){return!e.node(t).parent})),i=s(t,n);i=i.slice(1),r.forEach(i,(function(n){var r=t.node(n).parent,i=e.edge(n,r),a=!1;i||(i=e.edge(r,n),a=!0),e.node(n).rank=e.node(r).rank+(a?i.minlen:-i.minlen)}))}(t,e)}function v(t,e,n){return n.low<=e.lim&&e.lim<=n.lim}t.exports=l,l.initLowLimValues=d,l.initCutValues=h,l.calcCutValue=f,l.leaveEdge=g,l.enterEdge=y,l.exchangeEdges=m},6681:(t,e,n)=>{"use strict";var r=n(8436);t.exports={longestPath:function(t){var e={};r.forEach(t.sources(),(function n(i){var a=t.node(i);if(r.has(e,i))return a.rank;e[i]=!0;var o=r.min(r.map(t.outEdges(i),(function(e){return n(e.w)-t.edge(e).minlen})));return o!==Number.POSITIVE_INFINITY&&null!=o||(o=0),a.rank=o}))},slack:function(t,e){return t.node(e.w).rank-t.node(e.v).rank-t.edge(e).minlen}}},1138:(t,e,n)=>{"use strict";var r=n(8436),i=n(574).Graph;function a(t,e,n,i){var a;do{a=r.uniqueId(i)}while(t.hasNode(a));return n.dummy=e,t.setNode(a,n),a}function o(t){return r.max(r.map(t.nodes(),(function(e){var n=t.node(e).rank;if(!r.isUndefined(n))return n})))}t.exports={addDummyNode:a,simplify:function(t){var e=(new i).setGraph(t.graph());return r.forEach(t.nodes(),(function(n){e.setNode(n,t.node(n))})),r.forEach(t.edges(),(function(n){var r=e.edge(n.v,n.w)||{weight:0,minlen:1},i=t.edge(n);e.setEdge(n.v,n.w,{weight:r.weight+i.weight,minlen:Math.max(r.minlen,i.minlen)})})),e},asNonCompoundGraph:function(t){var e=new i({multigraph:t.isMultigraph()}).setGraph(t.graph());return r.forEach(t.nodes(),(function(n){t.children(n).length||e.setNode(n,t.node(n))})),r.forEach(t.edges(),(function(n){e.setEdge(n,t.edge(n))})),e},successorWeights:function(t){var e=r.map(t.nodes(),(function(e){var n={};return r.forEach(t.outEdges(e),(function(e){n[e.w]=(n[e.w]||0)+t.edge(e).weight})),n}));return r.zipObject(t.nodes(),e)},predecessorWeights:function(t){var e=r.map(t.nodes(),(function(e){var n={};return r.forEach(t.inEdges(e),(function(e){n[e.v]=(n[e.v]||0)+t.edge(e).weight})),n}));return r.zipObject(t.nodes(),e)},intersectRect:function(t,e){var n,r,i=t.x,a=t.y,o=e.x-i,s=e.y-a,c=t.width/2,u=t.height/2;if(!o&&!s)throw new Error("Not possible to find intersection inside of the rectangle");return Math.abs(s)*c>Math.abs(o)*u?(s<0&&(u=-u),n=u*o/s,r=u):(o<0&&(c=-c),n=c,r=c*s/o),{x:i+n,y:a+r}},buildLayerMatrix:function(t){var e=r.map(r.range(o(t)+1),(function(){return[]}));return r.forEach(t.nodes(),(function(n){var i=t.node(n),a=i.rank;r.isUndefined(a)||(e[a][i.order]=n)})),e},normalizeRanks:function(t){var e=r.min(r.map(t.nodes(),(function(e){return t.node(e).rank})));r.forEach(t.nodes(),(function(n){var i=t.node(n);r.has(i,"rank")&&(i.rank-=e)}))},removeEmptyRanks:function(t){var e=r.min(r.map(t.nodes(),(function(e){return t.node(e).rank}))),n=[];r.forEach(t.nodes(),(function(r){var i=t.node(r).rank-e;n[i]||(n[i]=[]),n[i].push(r)}));var i=0,a=t.graph().nodeRankFactor;r.forEach(n,(function(e,n){r.isUndefined(e)&&n%a!=0?--i:i&&r.forEach(e,(function(e){t.node(e).rank+=i}))}))},addBorderNode:function(t,e,n,r){var i={width:0,height:0};return arguments.length>=4&&(i.rank=n,i.order=r),a(t,"border",i,e)},maxRank:o,partition:function(t,e){var n={lhs:[],rhs:[]};return r.forEach(t,(function(t){e(t)?n.lhs.push(t):n.rhs.push(t)})),n},time:function(t,e){var n=r.now();try{return e()}finally{console.log(t+" time: "+(r.now()-n)+"ms")}},notime:function(t,e){return e()}}},8177:t=>{t.exports="0.8.5"},7856:function(t){t.exports=function(){"use strict";var t=Object.hasOwnProperty,e=Object.setPrototypeOf,n=Object.isFrozen,r=Object.getPrototypeOf,i=Object.getOwnPropertyDescriptor,a=Object.freeze,o=Object.seal,s=Object.create,c="undefined"!=typeof Reflect&&Reflect,u=c.apply,l=c.construct;u||(u=function(t,e,n){return t.apply(e,n)}),a||(a=function(t){return t}),o||(o=function(t){return t}),l||(l=function(t,e){return new(Function.prototype.bind.apply(t,[null].concat(function(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e<t.length;e++)n[e]=t[e];return n}return Array.from(t)}(e))))});var h,f=w(Array.prototype.forEach),d=w(Array.prototype.pop),p=w(Array.prototype.push),g=w(String.prototype.toLowerCase),y=w(String.prototype.match),m=w(String.prototype.replace),v=w(String.prototype.indexOf),b=w(String.prototype.trim),_=w(RegExp.prototype.test),x=(h=TypeError,function(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];return l(h,e)});function w(t){return function(e){for(var n=arguments.length,r=Array(n>1?n-1:0),i=1;i<n;i++)r[i-1]=arguments[i];return u(t,e,r)}}function k(t,r){e&&e(t,null);for(var i=r.length;i--;){var a=r[i];if("string"==typeof a){var o=g(a);o!==a&&(n(r)||(r[i]=o),a=o)}t[a]=!0}return t}function T(e){var n=s(null),r=void 0;for(r in e)u(t,e,[r])&&(n[r]=e[r]);return n}function C(t,e){for(;null!==t;){var n=i(t,e);if(n){if(n.get)return w(n.get);if("function"==typeof n.value)return w(n.value)}t=r(t)}return function(t){return console.warn("fallback value for",t),null}}var E=a(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),S=a(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),A=a(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),M=a(["animate","color-profile","cursor","discard","fedropshadow","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),N=a(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover"]),D=a(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),B=a(["#text"]),L=a(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","face","for","headers","height","hidden","high","href","hreflang","id","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","playsinline","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","xmlns","slot"]),O=a(["accent-height","accumulate","additive","alignment-baseline","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),I=a(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),R=a(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),F=o(/\{\{[\s\S]*|[\s\S]*\}\}/gm),P=o(/<%[\s\S]*|[\s\S]*%>/gm),Y=o(/^data-[\-\w.\u00B7-\uFFFF]/),j=o(/^aria-[\-\w]+$/),U=o(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),z=o(/^(?:\w+script|data):/i),$=o(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),q=o(/^html$/i),H="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};function W(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e<t.length;e++)n[e]=t[e];return n}return Array.from(t)}var V=function(){return"undefined"==typeof window?null:window},G=function(t,e){if("object"!==(void 0===t?"undefined":H(t))||"function"!=typeof t.createPolicy)return null;var n=null,r="data-tt-policy-suffix";e.currentScript&&e.currentScript.hasAttribute(r)&&(n=e.currentScript.getAttribute(r));var i="dompurify"+(n?"#"+n:"");try{return t.createPolicy(i,{createHTML:function(t){return t}})}catch(t){return console.warn("TrustedTypes policy "+i+" could not be created."),null}};return function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:V(),n=function(e){return t(e)};if(n.version="2.3.6",n.removed=[],!e||!e.document||9!==e.document.nodeType)return n.isSupported=!1,n;var r=e.document,i=e.document,o=e.DocumentFragment,s=e.HTMLTemplateElement,c=e.Node,u=e.Element,l=e.NodeFilter,h=e.NamedNodeMap,w=void 0===h?e.NamedNodeMap||e.MozNamedAttrMap:h,X=e.HTMLFormElement,Z=e.DOMParser,Q=e.trustedTypes,K=u.prototype,J=C(K,"cloneNode"),tt=C(K,"nextSibling"),et=C(K,"childNodes"),nt=C(K,"parentNode");if("function"==typeof s){var rt=i.createElement("template");rt.content&&rt.content.ownerDocument&&(i=rt.content.ownerDocument)}var it=G(Q,r),at=it?it.createHTML(""):"",ot=i,st=ot.implementation,ct=ot.createNodeIterator,ut=ot.createDocumentFragment,lt=ot.getElementsByTagName,ht=r.importNode,ft={};try{ft=T(i).documentMode?i.documentMode:{}}catch(t){}var dt={};n.isSupported="function"==typeof nt&&st&&void 0!==st.createHTMLDocument&&9!==ft;var pt=F,gt=P,yt=Y,mt=j,vt=z,bt=$,_t=U,xt=null,wt=k({},[].concat(W(E),W(S),W(A),W(N),W(B))),kt=null,Tt=k({},[].concat(W(L),W(O),W(I),W(R))),Ct=Object.seal(Object.create(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Et=null,St=null,At=!0,Mt=!0,Nt=!1,Dt=!1,Bt=!1,Lt=!1,Ot=!1,It=!1,Rt=!1,Ft=!1,Pt=!0,Yt=!0,jt=!1,Ut={},zt=null,$t=k({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),qt=null,Ht=k({},["audio","video","img","source","image","track"]),Wt=null,Vt=k({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Gt="http://www.w3.org/1998/Math/MathML",Xt="http://www.w3.org/2000/svg",Zt="http://www.w3.org/1999/xhtml",Qt=Zt,Kt=!1,Jt=void 0,te=["application/xhtml+xml","text/html"],ee="text/html",ne=void 0,re=null,ie=i.createElement("form"),ae=function(t){return t instanceof RegExp||t instanceof Function},oe=function(t){re&&re===t||(t&&"object"===(void 0===t?"undefined":H(t))||(t={}),t=T(t),xt="ALLOWED_TAGS"in t?k({},t.ALLOWED_TAGS):wt,kt="ALLOWED_ATTR"in t?k({},t.ALLOWED_ATTR):Tt,Wt="ADD_URI_SAFE_ATTR"in t?k(T(Vt),t.ADD_URI_SAFE_ATTR):Vt,qt="ADD_DATA_URI_TAGS"in t?k(T(Ht),t.ADD_DATA_URI_TAGS):Ht,zt="FORBID_CONTENTS"in t?k({},t.FORBID_CONTENTS):$t,Et="FORBID_TAGS"in t?k({},t.FORBID_TAGS):{},St="FORBID_ATTR"in t?k({},t.FORBID_ATTR):{},Ut="USE_PROFILES"in t&&t.USE_PROFILES,At=!1!==t.ALLOW_ARIA_ATTR,Mt=!1!==t.ALLOW_DATA_ATTR,Nt=t.ALLOW_UNKNOWN_PROTOCOLS||!1,Dt=t.SAFE_FOR_TEMPLATES||!1,Bt=t.WHOLE_DOCUMENT||!1,It=t.RETURN_DOM||!1,Rt=t.RETURN_DOM_FRAGMENT||!1,Ft=t.RETURN_TRUSTED_TYPE||!1,Ot=t.FORCE_BODY||!1,Pt=!1!==t.SANITIZE_DOM,Yt=!1!==t.KEEP_CONTENT,jt=t.IN_PLACE||!1,_t=t.ALLOWED_URI_REGEXP||_t,Qt=t.NAMESPACE||Zt,t.CUSTOM_ELEMENT_HANDLING&&ae(t.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(Ct.tagNameCheck=t.CUSTOM_ELEMENT_HANDLING.tagNameCheck),t.CUSTOM_ELEMENT_HANDLING&&ae(t.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(Ct.attributeNameCheck=t.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),t.CUSTOM_ELEMENT_HANDLING&&"boolean"==typeof t.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements&&(Ct.allowCustomizedBuiltInElements=t.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),Jt=Jt=-1===te.indexOf(t.PARSER_MEDIA_TYPE)?ee:t.PARSER_MEDIA_TYPE,ne="application/xhtml+xml"===Jt?function(t){return t}:g,Dt&&(Mt=!1),Rt&&(It=!0),Ut&&(xt=k({},[].concat(W(B))),kt=[],!0===Ut.html&&(k(xt,E),k(kt,L)),!0===Ut.svg&&(k(xt,S),k(kt,O),k(kt,R)),!0===Ut.svgFilters&&(k(xt,A),k(kt,O),k(kt,R)),!0===Ut.mathMl&&(k(xt,N),k(kt,I),k(kt,R))),t.ADD_TAGS&&(xt===wt&&(xt=T(xt)),k(xt,t.ADD_TAGS)),t.ADD_ATTR&&(kt===Tt&&(kt=T(kt)),k(kt,t.ADD_ATTR)),t.ADD_URI_SAFE_ATTR&&k(Wt,t.ADD_URI_SAFE_ATTR),t.FORBID_CONTENTS&&(zt===$t&&(zt=T(zt)),k(zt,t.FORBID_CONTENTS)),Yt&&(xt["#text"]=!0),Bt&&k(xt,["html","head","body"]),xt.table&&(k(xt,["tbody"]),delete Et.tbody),a&&a(t),re=t)},se=k({},["mi","mo","mn","ms","mtext"]),ce=k({},["foreignobject","desc","title","annotation-xml"]),ue=k({},S);k(ue,A),k(ue,M);var le=k({},N);k(le,D);var he=function(t){var e=nt(t);e&&e.tagName||(e={namespaceURI:Zt,tagName:"template"});var n=g(t.tagName),r=g(e.tagName);if(t.namespaceURI===Xt)return e.namespaceURI===Zt?"svg"===n:e.namespaceURI===Gt?"svg"===n&&("annotation-xml"===r||se[r]):Boolean(ue[n]);if(t.namespaceURI===Gt)return e.namespaceURI===Zt?"math"===n:e.namespaceURI===Xt?"math"===n&&ce[r]:Boolean(le[n]);if(t.namespaceURI===Zt){if(e.namespaceURI===Xt&&!ce[r])return!1;if(e.namespaceURI===Gt&&!se[r])return!1;var i=k({},["title","style","font","a","script"]);return!le[n]&&(i[n]||!ue[n])}return!1},fe=function(t){p(n.removed,{element:t});try{t.parentNode.removeChild(t)}catch(e){try{t.outerHTML=at}catch(e){t.remove()}}},de=function(t,e){try{p(n.removed,{attribute:e.getAttributeNode(t),from:e})}catch(t){p(n.removed,{attribute:null,from:e})}if(e.removeAttribute(t),"is"===t&&!kt[t])if(It||Rt)try{fe(e)}catch(t){}else try{e.setAttribute(t,"")}catch(t){}},pe=function(t){var e=void 0,n=void 0;if(Ot)t="<remove></remove>"+t;else{var r=y(t,/^[\r\n\t ]+/);n=r&&r[0]}"application/xhtml+xml"===Jt&&(t='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+t+"</body></html>");var a=it?it.createHTML(t):t;if(Qt===Zt)try{e=(new Z).parseFromString(a,Jt)}catch(t){}if(!e||!e.documentElement){e=st.createDocument(Qt,"template",null);try{e.documentElement.innerHTML=Kt?"":a}catch(t){}}var o=e.body||e.documentElement;return t&&n&&o.insertBefore(i.createTextNode(n),o.childNodes[0]||null),Qt===Zt?lt.call(e,Bt?"html":"body")[0]:Bt?e.documentElement:o},ge=function(t){return ct.call(t.ownerDocument||t,t,l.SHOW_ELEMENT|l.SHOW_COMMENT|l.SHOW_TEXT,null,!1)},ye=function(t){return t instanceof X&&("string"!=typeof t.nodeName||"string"!=typeof t.textContent||"function"!=typeof t.removeChild||!(t.attributes instanceof w)||"function"!=typeof t.removeAttribute||"function"!=typeof t.setAttribute||"string"!=typeof t.namespaceURI||"function"!=typeof t.insertBefore)},me=function(t){return"object"===(void 0===c?"undefined":H(c))?t instanceof c:t&&"object"===(void 0===t?"undefined":H(t))&&"number"==typeof t.nodeType&&"string"==typeof t.nodeName},ve=function(t,e,r){dt[t]&&f(dt[t],(function(t){t.call(n,e,r,re)}))},be=function(t){var e=void 0;if(ve("beforeSanitizeElements",t,null),ye(t))return fe(t),!0;if(y(t.nodeName,/[\u0080-\uFFFF]/))return fe(t),!0;var r=ne(t.nodeName);if(ve("uponSanitizeElement",t,{tagName:r,allowedTags:xt}),!me(t.firstElementChild)&&(!me(t.content)||!me(t.content.firstElementChild))&&_(/<[/\w]/g,t.innerHTML)&&_(/<[/\w]/g,t.textContent))return fe(t),!0;if("select"===r&&_(/<template/i,t.innerHTML))return fe(t),!0;if(!xt[r]||Et[r]){if(!Et[r]&&xe(r)){if(Ct.tagNameCheck instanceof RegExp&&_(Ct.tagNameCheck,r))return!1;if(Ct.tagNameCheck instanceof Function&&Ct.tagNameCheck(r))return!1}if(Yt&&!zt[r]){var i=nt(t)||t.parentNode,a=et(t)||t.childNodes;if(a&&i)for(var o=a.length-1;o>=0;--o)i.insertBefore(J(a[o],!0),tt(t))}return fe(t),!0}return t instanceof u&&!he(t)?(fe(t),!0):"noscript"!==r&&"noembed"!==r||!_(/<\/no(script|embed)/i,t.innerHTML)?(Dt&&3===t.nodeType&&(e=t.textContent,e=m(e,pt," "),e=m(e,gt," "),t.textContent!==e&&(p(n.removed,{element:t.cloneNode()}),t.textContent=e)),ve("afterSanitizeElements",t,null),!1):(fe(t),!0)},_e=function(t,e,n){if(Pt&&("id"===e||"name"===e)&&(n in i||n in ie))return!1;if(Mt&&!St[e]&&_(yt,e));else if(At&&_(mt,e));else if(!kt[e]||St[e]){if(!(xe(t)&&(Ct.tagNameCheck instanceof RegExp&&_(Ct.tagNameCheck,t)||Ct.tagNameCheck instanceof Function&&Ct.tagNameCheck(t))&&(Ct.attributeNameCheck instanceof RegExp&&_(Ct.attributeNameCheck,e)||Ct.attributeNameCheck instanceof Function&&Ct.attributeNameCheck(e))||"is"===e&&Ct.allowCustomizedBuiltInElements&&(Ct.tagNameCheck instanceof RegExp&&_(Ct.tagNameCheck,n)||Ct.tagNameCheck instanceof Function&&Ct.tagNameCheck(n))))return!1}else if(Wt[e]);else if(_(_t,m(n,bt,"")));else if("src"!==e&&"xlink:href"!==e&&"href"!==e||"script"===t||0!==v(n,"data:")||!qt[t])if(Nt&&!_(vt,m(n,bt,"")));else if(n)return!1;return!0},xe=function(t){return t.indexOf("-")>0},we=function(t){var e=void 0,r=void 0,i=void 0,a=void 0;ve("beforeSanitizeAttributes",t,null);var o=t.attributes;if(o){var s={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:kt};for(a=o.length;a--;){var c=e=o[a],u=c.name,l=c.namespaceURI;if(r=b(e.value),i=ne(u),s.attrName=i,s.attrValue=r,s.keepAttr=!0,s.forceKeepAttr=void 0,ve("uponSanitizeAttribute",t,s),r=s.attrValue,!s.forceKeepAttr&&(de(u,t),s.keepAttr))if(_(/\/>/i,r))de(u,t);else{Dt&&(r=m(r,pt," "),r=m(r,gt," "));var h=ne(t.nodeName);if(_e(h,i,r))try{l?t.setAttributeNS(l,u,r):t.setAttribute(u,r),d(n.removed)}catch(t){}}}ve("afterSanitizeAttributes",t,null)}},ke=function t(e){var n=void 0,r=ge(e);for(ve("beforeSanitizeShadowDOM",e,null);n=r.nextNode();)ve("uponSanitizeShadowNode",n,null),be(n)||(n.content instanceof o&&t(n.content),we(n));ve("afterSanitizeShadowDOM",e,null)};return n.sanitize=function(t,i){var a=void 0,s=void 0,u=void 0,l=void 0,h=void 0;if((Kt=!t)&&(t="\x3c!--\x3e"),"string"!=typeof t&&!me(t)){if("function"!=typeof t.toString)throw x("toString is not a function");if("string"!=typeof(t=t.toString()))throw x("dirty is not a string, aborting")}if(!n.isSupported){if("object"===H(e.toStaticHTML)||"function"==typeof e.toStaticHTML){if("string"==typeof t)return e.toStaticHTML(t);if(me(t))return e.toStaticHTML(t.outerHTML)}return t}if(Lt||oe(i),n.removed=[],"string"==typeof t&&(jt=!1),jt){if(t.nodeName){var f=ne(t.nodeName);if(!xt[f]||Et[f])throw x("root node is forbidden and cannot be sanitized in-place")}}else if(t instanceof c)1===(s=(a=pe("\x3c!----\x3e")).ownerDocument.importNode(t,!0)).nodeType&&"BODY"===s.nodeName||"HTML"===s.nodeName?a=s:a.appendChild(s);else{if(!It&&!Dt&&!Bt&&-1===t.indexOf("<"))return it&&Ft?it.createHTML(t):t;if(!(a=pe(t)))return It?null:Ft?at:""}a&&Ot&&fe(a.firstChild);for(var d=ge(jt?t:a);u=d.nextNode();)3===u.nodeType&&u===l||be(u)||(u.content instanceof o&&ke(u.content),we(u),l=u);if(l=null,jt)return t;if(It){if(Rt)for(h=ut.call(a.ownerDocument);a.firstChild;)h.appendChild(a.firstChild);else h=a;return kt.shadowroot&&(h=ht.call(r,h,!0)),h}var p=Bt?a.outerHTML:a.innerHTML;return Bt&&xt["!doctype"]&&a.ownerDocument&&a.ownerDocument.doctype&&a.ownerDocument.doctype.name&&_(q,a.ownerDocument.doctype.name)&&(p="<!DOCTYPE "+a.ownerDocument.doctype.name+">\n"+p),Dt&&(p=m(p,pt," "),p=m(p,gt," ")),it&&Ft?it.createHTML(p):p},n.setConfig=function(t){oe(t),Lt=!0},n.clearConfig=function(){re=null,Lt=!1},n.isValidAttribute=function(t,e,n){re||oe({});var r=ne(t),i=ne(e);return _e(r,i,n)},n.addHook=function(t,e){"function"==typeof e&&(dt[t]=dt[t]||[],p(dt[t],e))},n.removeHook=function(t){dt[t]&&d(dt[t])},n.removeHooks=function(t){dt[t]&&(dt[t]=[])},n.removeAllHooks=function(){dt={}},n}()}()},8282:(t,e,n)=>{var r=n(2354);t.exports={Graph:r.Graph,json:n(8974),alg:n(2440),version:r.version}},2842:(t,e,n)=>{var r=n(9126);t.exports=function(t){var e,n={},i=[];function a(i){r.has(n,i)||(n[i]=!0,e.push(i),r.each(t.successors(i),a),r.each(t.predecessors(i),a))}return r.each(t.nodes(),(function(t){e=[],a(t),e.length&&i.push(e)})),i}},3984:(t,e,n)=>{var r=n(9126);function i(t,e,n,a,o,s){r.has(a,e)||(a[e]=!0,n||s.push(e),r.each(o(e),(function(e){i(t,e,n,a,o,s)})),n&&s.push(e))}t.exports=function(t,e,n){r.isArray(e)||(e=[e]);var a=(t.isDirected()?t.successors:t.neighbors).bind(t),o=[],s={};return r.each(e,(function(e){if(!t.hasNode(e))throw new Error("Graph does not have node: "+e);i(t,e,"post"===n,s,a,o)})),o}},4847:(t,e,n)=>{var r=n(3763),i=n(9126);t.exports=function(t,e,n){return i.transform(t.nodes(),(function(i,a){i[a]=r(t,a,e,n)}),{})}},3763:(t,e,n)=>{var r=n(9126),i=n(9675);t.exports=function(t,e,n,r){return function(t,e,n,r){var a,o,s={},c=new i,u=function(t){var e=t.v!==a?t.v:t.w,r=s[e],i=n(t),u=o.distance+i;if(i<0)throw new Error("dijkstra does not allow negative edge weights. Bad edge: "+t+" Weight: "+i);u<r.distance&&(r.distance=u,r.predecessor=a,c.decrease(e,u))};for(t.nodes().forEach((function(t){var n=t===e?0:Number.POSITIVE_INFINITY;s[t]={distance:n},c.add(t,n)}));c.size()>0&&(a=c.removeMin(),(o=s[a]).distance!==Number.POSITIVE_INFINITY);)r(a).forEach(u);return s}(t,String(e),n||a,r||function(e){return t.outEdges(e)})};var a=r.constant(1)},9096:(t,e,n)=>{var r=n(9126),i=n(5023);t.exports=function(t){return r.filter(i(t),(function(e){return e.length>1||1===e.length&&t.hasEdge(e[0],e[0])}))}},8924:(t,e,n)=>{var r=n(9126);t.exports=function(t,e,n){return function(t,e,n){var r={},i=t.nodes();return i.forEach((function(t){r[t]={},r[t][t]={distance:0},i.forEach((function(e){t!==e&&(r[t][e]={distance:Number.POSITIVE_INFINITY})})),n(t).forEach((function(n){var i=n.v===t?n.w:n.v,a=e(n);r[t][i]={distance:a,predecessor:t}}))})),i.forEach((function(t){var e=r[t];i.forEach((function(n){var a=r[n];i.forEach((function(n){var r=a[t],i=e[n],o=a[n],s=r.distance+i.distance;s<o.distance&&(o.distance=s,o.predecessor=i.predecessor)}))}))})),r}(t,e||i,n||function(e){return t.outEdges(e)})};var i=r.constant(1)},2440:(t,e,n)=>{t.exports={components:n(2842),dijkstra:n(3763),dijkstraAll:n(4847),findCycles:n(9096),floydWarshall:n(8924),isAcyclic:n(2707),postorder:n(8828),preorder:n(2648),prim:n(514),tarjan:n(5023),topsort:n(2166)}},2707:(t,e,n)=>{var r=n(2166);t.exports=function(t){try{r(t)}catch(t){if(t instanceof r.CycleException)return!1;throw t}return!0}},8828:(t,e,n)=>{var r=n(3984);t.exports=function(t,e){return r(t,e,"post")}},2648:(t,e,n)=>{var r=n(3984);t.exports=function(t,e){return r(t,e,"pre")}},514:(t,e,n)=>{var r=n(9126),i=n(771),a=n(9675);t.exports=function(t,e){var n,o=new i,s={},c=new a;function u(t){var r=t.v===n?t.w:t.v,i=c.priority(r);if(void 0!==i){var a=e(t);a<i&&(s[r]=n,c.decrease(r,a))}}if(0===t.nodeCount())return o;r.each(t.nodes(),(function(t){c.add(t,Number.POSITIVE_INFINITY),o.setNode(t)})),c.decrease(t.nodes()[0],0);for(var l=!1;c.size()>0;){if(n=c.removeMin(),r.has(s,n))o.setEdge(n,s[n]);else{if(l)throw new Error("Input graph is not connected: "+t);l=!0}t.nodeEdges(n).forEach(u)}return o}},5023:(t,e,n)=>{var r=n(9126);t.exports=function(t){var e=0,n=[],i={},a=[];function o(s){var c=i[s]={onStack:!0,lowlink:e,index:e++};if(n.push(s),t.successors(s).forEach((function(t){r.has(i,t)?i[t].onStack&&(c.lowlink=Math.min(c.lowlink,i[t].index)):(o(t),c.lowlink=Math.min(c.lowlink,i[t].lowlink))})),c.lowlink===c.index){var u,l=[];do{u=n.pop(),i[u].onStack=!1,l.push(u)}while(s!==u);a.push(l)}}return t.nodes().forEach((function(t){r.has(i,t)||o(t)})),a}},2166:(t,e,n)=>{var r=n(9126);function i(t){var e={},n={},i=[];if(r.each(t.sinks(),(function o(s){if(r.has(n,s))throw new a;r.has(e,s)||(n[s]=!0,e[s]=!0,r.each(t.predecessors(s),o),delete n[s],i.push(s))})),r.size(e)!==t.nodeCount())throw new a;return i}function a(){}t.exports=i,i.CycleException=a,a.prototype=new Error},9675:(t,e,n)=>{var r=n(9126);function i(){this._arr=[],this._keyIndices={}}t.exports=i,i.prototype.size=function(){return this._arr.length},i.prototype.keys=function(){return this._arr.map((function(t){return t.key}))},i.prototype.has=function(t){return r.has(this._keyIndices,t)},i.prototype.priority=function(t){var e=this._keyIndices[t];if(void 0!==e)return this._arr[e].priority},i.prototype.min=function(){if(0===this.size())throw new Error("Queue underflow");return this._arr[0].key},i.prototype.add=function(t,e){var n=this._keyIndices;if(t=String(t),!r.has(n,t)){var i=this._arr,a=i.length;return n[t]=a,i.push({key:t,priority:e}),this._decrease(a),!0}return!1},i.prototype.removeMin=function(){this._swap(0,this._arr.length-1);var t=this._arr.pop();return delete this._keyIndices[t.key],this._heapify(0),t.key},i.prototype.decrease=function(t,e){var n=this._keyIndices[t];if(e>this._arr[n].priority)throw new Error("New priority is greater than current priority. Key: "+t+" Old: "+this._arr[n].priority+" New: "+e);this._arr[n].priority=e,this._decrease(n)},i.prototype._heapify=function(t){var e=this._arr,n=2*t,r=n+1,i=t;n<e.length&&(i=e[n].priority<e[i].priority?n:i,r<e.length&&(i=e[r].priority<e[i].priority?r:i),i!==t&&(this._swap(t,i),this._heapify(i)))},i.prototype._decrease=function(t){for(var e,n=this._arr,r=n[t].priority;0!==t&&!(n[e=t>>1].priority<r);)this._swap(t,e),t=e},i.prototype._swap=function(t,e){var n=this._arr,r=this._keyIndices,i=n[t],a=n[e];n[t]=a,n[e]=i,r[a.key]=t,r[i.key]=e}},771:(t,e,n)=>{"use strict";var r=n(9126);t.exports=a;var i="\0";function a(t){this._isDirected=!r.has(t,"directed")||t.directed,this._isMultigraph=!!r.has(t,"multigraph")&&t.multigraph,this._isCompound=!!r.has(t,"compound")&&t.compound,this._label=void 0,this._defaultNodeLabelFn=r.constant(void 0),this._defaultEdgeLabelFn=r.constant(void 0),this._nodes={},this._isCompound&&(this._parent={},this._children={},this._children["\0"]={}),this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={}}function o(t,e){t[e]?t[e]++:t[e]=1}function s(t,e){--t[e]||delete t[e]}function c(t,e,n,i){var a=""+e,o=""+n;if(!t&&a>o){var s=a;a=o,o=s}return a+""+o+""+(r.isUndefined(i)?"\0":i)}function u(t,e,n,r){var i=""+e,a=""+n;if(!t&&i>a){var o=i;i=a,a=o}var s={v:i,w:a};return r&&(s.name=r),s}function l(t,e){return c(t,e.v,e.w,e.name)}a.prototype._nodeCount=0,a.prototype._edgeCount=0,a.prototype.isDirected=function(){return this._isDirected},a.prototype.isMultigraph=function(){return this._isMultigraph},a.prototype.isCompound=function(){return this._isCompound},a.prototype.setGraph=function(t){return this._label=t,this},a.prototype.graph=function(){return this._label},a.prototype.setDefaultNodeLabel=function(t){return r.isFunction(t)||(t=r.constant(t)),this._defaultNodeLabelFn=t,this},a.prototype.nodeCount=function(){return this._nodeCount},a.prototype.nodes=function(){return r.keys(this._nodes)},a.prototype.sources=function(){var t=this;return r.filter(this.nodes(),(function(e){return r.isEmpty(t._in[e])}))},a.prototype.sinks=function(){var t=this;return r.filter(this.nodes(),(function(e){return r.isEmpty(t._out[e])}))},a.prototype.setNodes=function(t,e){var n=arguments,i=this;return r.each(t,(function(t){n.length>1?i.setNode(t,e):i.setNode(t)})),this},a.prototype.setNode=function(t,e){return r.has(this._nodes,t)?(arguments.length>1&&(this._nodes[t]=e),this):(this._nodes[t]=arguments.length>1?e:this._defaultNodeLabelFn(t),this._isCompound&&(this._parent[t]=i,this._children[t]={},this._children["\0"][t]=!0),this._in[t]={},this._preds[t]={},this._out[t]={},this._sucs[t]={},++this._nodeCount,this)},a.prototype.node=function(t){return this._nodes[t]},a.prototype.hasNode=function(t){return r.has(this._nodes,t)},a.prototype.removeNode=function(t){var e=this;if(r.has(this._nodes,t)){var n=function(t){e.removeEdge(e._edgeObjs[t])};delete this._nodes[t],this._isCompound&&(this._removeFromParentsChildList(t),delete this._parent[t],r.each(this.children(t),(function(t){e.setParent(t)})),delete this._children[t]),r.each(r.keys(this._in[t]),n),delete this._in[t],delete this._preds[t],r.each(r.keys(this._out[t]),n),delete this._out[t],delete this._sucs[t],--this._nodeCount}return this},a.prototype.setParent=function(t,e){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(r.isUndefined(e))e=i;else{for(var n=e+="";!r.isUndefined(n);n=this.parent(n))if(n===t)throw new Error("Setting "+e+" as parent of "+t+" would create a cycle");this.setNode(e)}return this.setNode(t),this._removeFromParentsChildList(t),this._parent[t]=e,this._children[e][t]=!0,this},a.prototype._removeFromParentsChildList=function(t){delete this._children[this._parent[t]][t]},a.prototype.parent=function(t){if(this._isCompound){var e=this._parent[t];if(e!==i)return e}},a.prototype.children=function(t){if(r.isUndefined(t)&&(t=i),this._isCompound){var e=this._children[t];if(e)return r.keys(e)}else{if(t===i)return this.nodes();if(this.hasNode(t))return[]}},a.prototype.predecessors=function(t){var e=this._preds[t];if(e)return r.keys(e)},a.prototype.successors=function(t){var e=this._sucs[t];if(e)return r.keys(e)},a.prototype.neighbors=function(t){var e=this.predecessors(t);if(e)return r.union(e,this.successors(t))},a.prototype.isLeaf=function(t){return 0===(this.isDirected()?this.successors(t):this.neighbors(t)).length},a.prototype.filterNodes=function(t){var e=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});e.setGraph(this.graph());var n=this;r.each(this._nodes,(function(n,r){t(r)&&e.setNode(r,n)})),r.each(this._edgeObjs,(function(t){e.hasNode(t.v)&&e.hasNode(t.w)&&e.setEdge(t,n.edge(t))}));var i={};function a(t){var r=n.parent(t);return void 0===r||e.hasNode(r)?(i[t]=r,r):r in i?i[r]:a(r)}return this._isCompound&&r.each(e.nodes(),(function(t){e.setParent(t,a(t))})),e},a.prototype.setDefaultEdgeLabel=function(t){return r.isFunction(t)||(t=r.constant(t)),this._defaultEdgeLabelFn=t,this},a.prototype.edgeCount=function(){return this._edgeCount},a.prototype.edges=function(){return r.values(this._edgeObjs)},a.prototype.setPath=function(t,e){var n=this,i=arguments;return r.reduce(t,(function(t,r){return i.length>1?n.setEdge(t,r,e):n.setEdge(t,r),r})),this},a.prototype.setEdge=function(){var t,e,n,i,a=!1,s=arguments[0];"object"==typeof s&&null!==s&&"v"in s?(t=s.v,e=s.w,n=s.name,2===arguments.length&&(i=arguments[1],a=!0)):(t=s,e=arguments[1],n=arguments[3],arguments.length>2&&(i=arguments[2],a=!0)),t=""+t,e=""+e,r.isUndefined(n)||(n=""+n);var l=c(this._isDirected,t,e,n);if(r.has(this._edgeLabels,l))return a&&(this._edgeLabels[l]=i),this;if(!r.isUndefined(n)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(t),this.setNode(e),this._edgeLabels[l]=a?i:this._defaultEdgeLabelFn(t,e,n);var h=u(this._isDirected,t,e,n);return t=h.v,e=h.w,Object.freeze(h),this._edgeObjs[l]=h,o(this._preds[e],t),o(this._sucs[t],e),this._in[e][l]=h,this._out[t][l]=h,this._edgeCount++,this},a.prototype.edge=function(t,e,n){var r=1===arguments.length?l(this._isDirected,arguments[0]):c(this._isDirected,t,e,n);return this._edgeLabels[r]},a.prototype.hasEdge=function(t,e,n){var i=1===arguments.length?l(this._isDirected,arguments[0]):c(this._isDirected,t,e,n);return r.has(this._edgeLabels,i)},a.prototype.removeEdge=function(t,e,n){var r=1===arguments.length?l(this._isDirected,arguments[0]):c(this._isDirected,t,e,n),i=this._edgeObjs[r];return i&&(t=i.v,e=i.w,delete this._edgeLabels[r],delete this._edgeObjs[r],s(this._preds[e],t),s(this._sucs[t],e),delete this._in[e][r],delete this._out[t][r],this._edgeCount--),this},a.prototype.inEdges=function(t,e){var n=this._in[t];if(n){var i=r.values(n);return e?r.filter(i,(function(t){return t.v===e})):i}},a.prototype.outEdges=function(t,e){var n=this._out[t];if(n){var i=r.values(n);return e?r.filter(i,(function(t){return t.w===e})):i}},a.prototype.nodeEdges=function(t,e){var n=this.inEdges(t,e);if(n)return n.concat(this.outEdges(t,e))}},2354:(t,e,n)=>{t.exports={Graph:n(771),version:n(9631)}},8974:(t,e,n)=>{var r=n(9126),i=n(771);function a(t){return r.map(t.nodes(),(function(e){var n=t.node(e),i=t.parent(e),a={v:e};return r.isUndefined(n)||(a.value=n),r.isUndefined(i)||(a.parent=i),a}))}function o(t){return r.map(t.edges(),(function(e){var n=t.edge(e),i={v:e.v,w:e.w};return r.isUndefined(e.name)||(i.name=e.name),r.isUndefined(n)||(i.value=n),i}))}t.exports={write:function(t){var e={options:{directed:t.isDirected(),multigraph:t.isMultigraph(),compound:t.isCompound()},nodes:a(t),edges:o(t)};return r.isUndefined(t.graph())||(e.value=r.clone(t.graph())),e},read:function(t){var e=new i(t.options).setGraph(t.value);return r.each(t.nodes,(function(t){e.setNode(t.v,t.value),t.parent&&e.setParent(t.v,t.parent)})),r.each(t.edges,(function(t){e.setEdge({v:t.v,w:t.w,name:t.name},t.value)})),e}}},9126:(t,e,n)=>{var r;try{r={clone:n(6678),constant:n(5703),each:n(6073),filter:n(3105),has:n(8721),isArray:n(1469),isEmpty:n(1609),isFunction:n(3560),isUndefined:n(2353),keys:n(3674),map:n(5161),reduce:n(4061),size:n(4238),transform:n(8718),union:n(3386),values:n(2628)}}catch(t){}r||(r=window._),t.exports=r},9631:t=>{t.exports="2.1.8"},8552:(t,e,n)=>{var r=n(852)(n(5639),"DataView");t.exports=r},1989:(t,e,n)=>{var r=n(1789),i=n(401),a=n(7667),o=n(1327),s=n(1866);function c(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}c.prototype.clear=r,c.prototype.delete=i,c.prototype.get=a,c.prototype.has=o,c.prototype.set=s,t.exports=c},8407:(t,e,n)=>{var r=n(7040),i=n(4125),a=n(2117),o=n(7518),s=n(4705);function c(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}c.prototype.clear=r,c.prototype.delete=i,c.prototype.get=a,c.prototype.has=o,c.prototype.set=s,t.exports=c},7071:(t,e,n)=>{var r=n(852)(n(5639),"Map");t.exports=r},3369:(t,e,n)=>{var r=n(4785),i=n(1285),a=n(6e3),o=n(9916),s=n(5265);function c(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}c.prototype.clear=r,c.prototype.delete=i,c.prototype.get=a,c.prototype.has=o,c.prototype.set=s,t.exports=c},3818:(t,e,n)=>{var r=n(852)(n(5639),"Promise");t.exports=r},8525:(t,e,n)=>{var r=n(852)(n(5639),"Set");t.exports=r},8668:(t,e,n)=>{var r=n(3369),i=n(619),a=n(2385);function o(t){var e=-1,n=null==t?0:t.length;for(this.__data__=new r;++e<n;)this.add(t[e])}o.prototype.add=o.prototype.push=i,o.prototype.has=a,t.exports=o},6384:(t,e,n)=>{var r=n(8407),i=n(7465),a=n(3779),o=n(7599),s=n(4758),c=n(4309);function u(t){var e=this.__data__=new r(t);this.size=e.size}u.prototype.clear=i,u.prototype.delete=a,u.prototype.get=o,u.prototype.has=s,u.prototype.set=c,t.exports=u},2705:(t,e,n)=>{var r=n(5639).Symbol;t.exports=r},1149:(t,e,n)=>{var r=n(5639).Uint8Array;t.exports=r},577:(t,e,n)=>{var r=n(852)(n(5639),"WeakMap");t.exports=r},6874:t=>{t.exports=function(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)}},7412:t=>{t.exports=function(t,e){for(var n=-1,r=null==t?0:t.length;++n<r&&!1!==e(t[n],n,t););return t}},4963:t=>{t.exports=function(t,e){for(var n=-1,r=null==t?0:t.length,i=0,a=[];++n<r;){var o=t[n];e(o,n,t)&&(a[i++]=o)}return a}},7443:(t,e,n)=>{var r=n(2118);t.exports=function(t,e){return!(null==t||!t.length)&&r(t,e,0)>-1}},1196:t=>{t.exports=function(t,e,n){for(var r=-1,i=null==t?0:t.length;++r<i;)if(n(e,t[r]))return!0;return!1}},4636:(t,e,n)=>{var r=n(2545),i=n(5694),a=n(1469),o=n(4144),s=n(5776),c=n(6719),u=Object.prototype.hasOwnProperty;t.exports=function(t,e){var n=a(t),l=!n&&i(t),h=!n&&!l&&o(t),f=!n&&!l&&!h&&c(t),d=n||l||h||f,p=d?r(t.length,String):[],g=p.length;for(var y in t)!e&&!u.call(t,y)||d&&("length"==y||h&&("offset"==y||"parent"==y)||f&&("buffer"==y||"byteLength"==y||"byteOffset"==y)||s(y,g))||p.push(y);return p}},9932:t=>{t.exports=function(t,e){for(var n=-1,r=null==t?0:t.length,i=Array(r);++n<r;)i[n]=e(t[n],n,t);return i}},2488:t=>{t.exports=function(t,e){for(var n=-1,r=e.length,i=t.length;++n<r;)t[i+n]=e[n];return t}},2663:t=>{t.exports=function(t,e,n,r){var i=-1,a=null==t?0:t.length;for(r&&a&&(n=t[++i]);++i<a;)n=e(n,t[i],i,t);return n}},2908:t=>{t.exports=function(t,e){for(var n=-1,r=null==t?0:t.length;++n<r;)if(e(t[n],n,t))return!0;return!1}},8983:(t,e,n)=>{var r=n(371)("length");t.exports=r},6556:(t,e,n)=>{var r=n(9465),i=n(7813);t.exports=function(t,e,n){(void 0!==n&&!i(t[e],n)||void 0===n&&!(e in t))&&r(t,e,n)}},4865:(t,e,n)=>{var r=n(9465),i=n(7813),a=Object.prototype.hasOwnProperty;t.exports=function(t,e,n){var o=t[e];a.call(t,e)&&i(o,n)&&(void 0!==n||e in t)||r(t,e,n)}},8470:(t,e,n)=>{var r=n(7813);t.exports=function(t,e){for(var n=t.length;n--;)if(r(t[n][0],e))return n;return-1}},4037:(t,e,n)=>{var r=n(8363),i=n(3674);t.exports=function(t,e){return t&&r(e,i(e),t)}},3886:(t,e,n)=>{var r=n(8363),i=n(1704);t.exports=function(t,e){return t&&r(e,i(e),t)}},9465:(t,e,n)=>{var r=n(8777);t.exports=function(t,e,n){"__proto__"==e&&r?r(t,e,{configurable:!0,enumerable:!0,value:n,writable:!0}):t[e]=n}},5990:(t,e,n)=>{var r=n(6384),i=n(7412),a=n(4865),o=n(4037),s=n(3886),c=n(4626),u=n(278),l=n(8805),h=n(1911),f=n(8234),d=n(6904),p=n(4160),g=n(3824),y=n(9148),m=n(8517),v=n(1469),b=n(4144),_=n(6688),x=n(3218),w=n(2928),k=n(3674),T=n(1704),C="[object Arguments]",E="[object Function]",S="[object Object]",A={};A[C]=A["[object Array]"]=A["[object ArrayBuffer]"]=A["[object DataView]"]=A["[object Boolean]"]=A["[object Date]"]=A["[object Float32Array]"]=A["[object Float64Array]"]=A["[object Int8Array]"]=A["[object Int16Array]"]=A["[object Int32Array]"]=A["[object Map]"]=A["[object Number]"]=A[S]=A["[object RegExp]"]=A["[object Set]"]=A["[object String]"]=A["[object Symbol]"]=A["[object Uint8Array]"]=A["[object Uint8ClampedArray]"]=A["[object Uint16Array]"]=A["[object Uint32Array]"]=!0,A["[object Error]"]=A[E]=A["[object WeakMap]"]=!1,t.exports=function t(e,n,M,N,D,B){var L,O=1&n,I=2&n,R=4&n;if(M&&(L=D?M(e,N,D,B):M(e)),void 0!==L)return L;if(!x(e))return e;var F=v(e);if(F){if(L=g(e),!O)return u(e,L)}else{var P=p(e),Y=P==E||"[object GeneratorFunction]"==P;if(b(e))return c(e,O);if(P==S||P==C||Y&&!D){if(L=I||Y?{}:m(e),!O)return I?h(e,s(L,e)):l(e,o(L,e))}else{if(!A[P])return D?e:{};L=y(e,P,O)}}B||(B=new r);var j=B.get(e);if(j)return j;B.set(e,L),w(e)?e.forEach((function(r){L.add(t(r,n,M,r,e,B))})):_(e)&&e.forEach((function(r,i){L.set(i,t(r,n,M,i,e,B))}));var U=F?void 0:(R?I?d:f:I?T:k)(e);return i(U||e,(function(r,i){U&&(r=e[i=r]),a(L,i,t(r,n,M,i,e,B))})),L}},3118:(t,e,n)=>{var r=n(3218),i=Object.create,a=function(){function t(){}return function(e){if(!r(e))return{};if(i)return i(e);t.prototype=e;var n=new t;return t.prototype=void 0,n}}();t.exports=a},9881:(t,e,n)=>{var r=n(7816),i=n(9291)(r);t.exports=i},6029:(t,e,n)=>{var r=n(3448);t.exports=function(t,e,n){for(var i=-1,a=t.length;++i<a;){var o=t[i],s=e(o);if(null!=s&&(void 0===c?s==s&&!r(s):n(s,c)))var c=s,u=o}return u}},760:(t,e,n)=>{var r=n(9881);t.exports=function(t,e){var n=[];return r(t,(function(t,r,i){e(t,r,i)&&n.push(t)})),n}},1848:t=>{t.exports=function(t,e,n,r){for(var i=t.length,a=n+(r?1:-1);r?a--:++a<i;)if(e(t[a],a,t))return a;return-1}},1078:(t,e,n)=>{var r=n(2488),i=n(7285);t.exports=function t(e,n,a,o,s){var c=-1,u=e.length;for(a||(a=i),s||(s=[]);++c<u;){var l=e[c];n>0&&a(l)?n>1?t(l,n-1,a,o,s):r(s,l):o||(s[s.length]=l)}return s}},8483:(t,e,n)=>{var r=n(5063)();t.exports=r},7816:(t,e,n)=>{var r=n(8483),i=n(3674);t.exports=function(t,e){return t&&r(t,e,i)}},7786:(t,e,n)=>{var r=n(1811),i=n(327);t.exports=function(t,e){for(var n=0,a=(e=r(e,t)).length;null!=t&&n<a;)t=t[i(e[n++])];return n&&n==a?t:void 0}},8866:(t,e,n)=>{var r=n(2488),i=n(1469);t.exports=function(t,e,n){var a=e(t);return i(t)?a:r(a,n(t))}},4239:(t,e,n)=>{var r=n(2705),i=n(9607),a=n(2333),o=r?r.toStringTag:void 0;t.exports=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":o&&o in Object(t)?i(t):a(t)}},3325:t=>{t.exports=function(t,e){return t>e}},8565:t=>{var e=Object.prototype.hasOwnProperty;t.exports=function(t,n){return null!=t&&e.call(t,n)}},13:t=>{t.exports=function(t,e){return null!=t&&e in Object(t)}},2118:(t,e,n)=>{var r=n(1848),i=n(2722),a=n(2351);t.exports=function(t,e,n){return e==e?a(t,e,n):r(t,i,n)}},9454:(t,e,n)=>{var r=n(4239),i=n(7005);t.exports=function(t){return i(t)&&"[object Arguments]"==r(t)}},939:(t,e,n)=>{var r=n(2492),i=n(7005);t.exports=function t(e,n,a,o,s){return e===n||(null==e||null==n||!i(e)&&!i(n)?e!=e&&n!=n:r(e,n,a,o,t,s))}},2492:(t,e,n)=>{var r=n(6384),i=n(7114),a=n(8351),o=n(6096),s=n(4160),c=n(1469),u=n(4144),l=n(6719),h="[object Arguments]",f="[object Array]",d="[object Object]",p=Object.prototype.hasOwnProperty;t.exports=function(t,e,n,g,y,m){var v=c(t),b=c(e),_=v?f:s(t),x=b?f:s(e),w=(_=_==h?d:_)==d,k=(x=x==h?d:x)==d,T=_==x;if(T&&u(t)){if(!u(e))return!1;v=!0,w=!1}if(T&&!w)return m||(m=new r),v||l(t)?i(t,e,n,g,y,m):a(t,e,_,n,g,y,m);if(!(1&n)){var C=w&&p.call(t,"__wrapped__"),E=k&&p.call(e,"__wrapped__");if(C||E){var S=C?t.value():t,A=E?e.value():e;return m||(m=new r),y(S,A,n,g,m)}}return!!T&&(m||(m=new r),o(t,e,n,g,y,m))}},5588:(t,e,n)=>{var r=n(4160),i=n(7005);t.exports=function(t){return i(t)&&"[object Map]"==r(t)}},2958:(t,e,n)=>{var r=n(6384),i=n(939);t.exports=function(t,e,n,a){var o=n.length,s=o,c=!a;if(null==t)return!s;for(t=Object(t);o--;){var u=n[o];if(c&&u[2]?u[1]!==t[u[0]]:!(u[0]in t))return!1}for(;++o<s;){var l=(u=n[o])[0],h=t[l],f=u[1];if(c&&u[2]){if(void 0===h&&!(l in t))return!1}else{var d=new r;if(a)var p=a(h,f,l,t,e,d);if(!(void 0===p?i(f,h,3,a,d):p))return!1}}return!0}},2722:t=>{t.exports=function(t){return t!=t}},8458:(t,e,n)=>{var r=n(3560),i=n(5346),a=n(3218),o=n(346),s=/^\[object .+?Constructor\]$/,c=Function.prototype,u=Object.prototype,l=c.toString,h=u.hasOwnProperty,f=RegExp("^"+l.call(h).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");t.exports=function(t){return!(!a(t)||i(t))&&(r(t)?f:s).test(o(t))}},9221:(t,e,n)=>{var r=n(4160),i=n(7005);t.exports=function(t){return i(t)&&"[object Set]"==r(t)}},8749:(t,e,n)=>{var r=n(4239),i=n(1780),a=n(7005),o={};o["[object Float32Array]"]=o["[object Float64Array]"]=o["[object Int8Array]"]=o["[object Int16Array]"]=o["[object Int32Array]"]=o["[object Uint8Array]"]=o["[object Uint8ClampedArray]"]=o["[object Uint16Array]"]=o["[object Uint32Array]"]=!0,o["[object Arguments]"]=o["[object Array]"]=o["[object ArrayBuffer]"]=o["[object Boolean]"]=o["[object DataView]"]=o["[object Date]"]=o["[object Error]"]=o["[object Function]"]=o["[object Map]"]=o["[object Number]"]=o["[object Object]"]=o["[object RegExp]"]=o["[object Set]"]=o["[object String]"]=o["[object WeakMap]"]=!1,t.exports=function(t){return a(t)&&i(t.length)&&!!o[r(t)]}},7206:(t,e,n)=>{var r=n(1573),i=n(6432),a=n(6557),o=n(1469),s=n(9601);t.exports=function(t){return"function"==typeof t?t:null==t?a:"object"==typeof t?o(t)?i(t[0],t[1]):r(t):s(t)}},280:(t,e,n)=>{var r=n(5726),i=n(6916),a=Object.prototype.hasOwnProperty;t.exports=function(t){if(!r(t))return i(t);var e=[];for(var n in Object(t))a.call(t,n)&&"constructor"!=n&&e.push(n);return e}},313:(t,e,n)=>{var r=n(3218),i=n(5726),a=n(3498),o=Object.prototype.hasOwnProperty;t.exports=function(t){if(!r(t))return a(t);var e=i(t),n=[];for(var s in t)("constructor"!=s||!e&&o.call(t,s))&&n.push(s);return n}},433:t=>{t.exports=function(t,e){return t<e}},9199:(t,e,n)=>{var r=n(9881),i=n(8612);t.exports=function(t,e){var n=-1,a=i(t)?Array(t.length):[];return r(t,(function(t,r,i){a[++n]=e(t,r,i)})),a}},1573:(t,e,n)=>{var r=n(2958),i=n(1499),a=n(2634);t.exports=function(t){var e=i(t);return 1==e.length&&e[0][2]?a(e[0][0],e[0][1]):function(n){return n===t||r(n,t,e)}}},6432:(t,e,n)=>{var r=n(939),i=n(7361),a=n(9095),o=n(5403),s=n(9162),c=n(2634),u=n(327);t.exports=function(t,e){return o(t)&&s(e)?c(u(t),e):function(n){var o=i(n,t);return void 0===o&&o===e?a(n,t):r(e,o,3)}}},2980:(t,e,n)=>{var r=n(6384),i=n(6556),a=n(8483),o=n(9783),s=n(3218),c=n(1704),u=n(6390);t.exports=function t(e,n,l,h,f){e!==n&&a(n,(function(a,c){if(f||(f=new r),s(a))o(e,n,c,l,t,h,f);else{var d=h?h(u(e,c),a,c+"",e,n,f):void 0;void 0===d&&(d=a),i(e,c,d)}}),c)}},9783:(t,e,n)=>{var r=n(6556),i=n(4626),a=n(7133),o=n(278),s=n(8517),c=n(5694),u=n(1469),l=n(9246),h=n(4144),f=n(3560),d=n(3218),p=n(8630),g=n(6719),y=n(6390),m=n(3678);t.exports=function(t,e,n,v,b,_,x){var w=y(t,n),k=y(e,n),T=x.get(k);if(T)r(t,n,T);else{var C=_?_(w,k,n+"",t,e,x):void 0,E=void 0===C;if(E){var S=u(k),A=!S&&h(k),M=!S&&!A&&g(k);C=k,S||A||M?u(w)?C=w:l(w)?C=o(w):A?(E=!1,C=i(k,!0)):M?(E=!1,C=a(k,!0)):C=[]:p(k)||c(k)?(C=w,c(w)?C=m(w):d(w)&&!f(w)||(C=s(k))):E=!1}E&&(x.set(k,C),b(C,k,v,_,x),x.delete(k)),r(t,n,C)}}},9556:(t,e,n)=>{var r=n(9932),i=n(7786),a=n(7206),o=n(9199),s=n(1131),c=n(1717),u=n(5022),l=n(6557),h=n(1469);t.exports=function(t,e,n){e=e.length?r(e,(function(t){return h(t)?function(e){return i(e,1===t.length?t[0]:t)}:t})):[l];var f=-1;e=r(e,c(a));var d=o(t,(function(t,n,i){return{criteria:r(e,(function(e){return e(t)})),index:++f,value:t}}));return s(d,(function(t,e){return u(t,e,n)}))}},5970:(t,e,n)=>{var r=n(3012),i=n(9095);t.exports=function(t,e){return r(t,e,(function(e,n){return i(t,n)}))}},3012:(t,e,n)=>{var r=n(7786),i=n(611),a=n(1811);t.exports=function(t,e,n){for(var o=-1,s=e.length,c={};++o<s;){var u=e[o],l=r(t,u);n(l,u)&&i(c,a(u,t),l)}return c}},371:t=>{t.exports=function(t){return function(e){return null==e?void 0:e[t]}}},9152:(t,e,n)=>{var r=n(7786);t.exports=function(t){return function(e){return r(e,t)}}},98:t=>{var e=Math.ceil,n=Math.max;t.exports=function(t,r,i,a){for(var o=-1,s=n(e((r-t)/(i||1)),0),c=Array(s);s--;)c[a?s:++o]=t,t+=i;return c}},107:t=>{t.exports=function(t,e,n,r,i){return i(t,(function(t,i,a){n=r?(r=!1,t):e(n,t,i,a)})),n}},5976:(t,e,n)=>{var r=n(6557),i=n(5357),a=n(61);t.exports=function(t,e){return a(i(t,e,r),t+"")}},611:(t,e,n)=>{var r=n(4865),i=n(1811),a=n(5776),o=n(3218),s=n(327);t.exports=function(t,e,n,c){if(!o(t))return t;for(var u=-1,l=(e=i(e,t)).length,h=l-1,f=t;null!=f&&++u<l;){var d=s(e[u]),p=n;if("__proto__"===d||"constructor"===d||"prototype"===d)return t;if(u!=h){var g=f[d];void 0===(p=c?c(g,d,f):void 0)&&(p=o(g)?g:a(e[u+1])?[]:{})}r(f,d,p),f=f[d]}return t}},6560:(t,e,n)=>{var r=n(5703),i=n(8777),a=n(6557),o=i?function(t,e){return i(t,"toString",{configurable:!0,enumerable:!1,value:r(e),writable:!0})}:a;t.exports=o},1131:t=>{t.exports=function(t,e){var n=t.length;for(t.sort(e);n--;)t[n]=t[n].value;return t}},2545:t=>{t.exports=function(t,e){for(var n=-1,r=Array(t);++n<t;)r[n]=e(n);return r}},531:(t,e,n)=>{var r=n(2705),i=n(9932),a=n(1469),o=n(3448),s=r?r.prototype:void 0,c=s?s.toString:void 0;t.exports=function t(e){if("string"==typeof e)return e;if(a(e))return i(e,t)+"";if(o(e))return c?c.call(e):"";var n=e+"";return"0"==n&&1/e==-1/0?"-0":n}},7561:(t,e,n)=>{var r=n(7990),i=/^\s+/;t.exports=function(t){return t?t.slice(0,r(t)+1).replace(i,""):t}},1717:t=>{t.exports=function(t){return function(e){return t(e)}}},5652:(t,e,n)=>{var r=n(8668),i=n(7443),a=n(1196),o=n(4757),s=n(3593),c=n(1814);t.exports=function(t,e,n){var u=-1,l=i,h=t.length,f=!0,d=[],p=d;if(n)f=!1,l=a;else if(h>=200){var g=e?null:s(t);if(g)return c(g);f=!1,l=o,p=new r}else p=e?[]:d;t:for(;++u<h;){var y=t[u],m=e?e(y):y;if(y=n||0!==y?y:0,f&&m==m){for(var v=p.length;v--;)if(p[v]===m)continue t;e&&p.push(m),d.push(y)}else l(p,m,n)||(p!==d&&p.push(m),d.push(y))}return d}},7415:(t,e,n)=>{var r=n(9932);t.exports=function(t,e){return r(e,(function(e){return t[e]}))}},1757:t=>{t.exports=function(t,e,n){for(var r=-1,i=t.length,a=e.length,o={};++r<i;){var s=r<a?e[r]:void 0;n(o,t[r],s)}return o}},4757:t=>{t.exports=function(t,e){return t.has(e)}},4290:(t,e,n)=>{var r=n(6557);t.exports=function(t){return"function"==typeof t?t:r}},1811:(t,e,n)=>{var r=n(1469),i=n(5403),a=n(5514),o=n(9833);t.exports=function(t,e){return r(t)?t:i(t,e)?[t]:a(o(t))}},4318:(t,e,n)=>{var r=n(1149);t.exports=function(t){var e=new t.constructor(t.byteLength);return new r(e).set(new r(t)),e}},4626:(t,e,n)=>{t=n.nmd(t);var r=n(5639),i=e&&!e.nodeType&&e,a=i&&t&&!t.nodeType&&t,o=a&&a.exports===i?r.Buffer:void 0,s=o?o.allocUnsafe:void 0;t.exports=function(t,e){if(e)return t.slice();var n=t.length,r=s?s(n):new t.constructor(n);return t.copy(r),r}},7157:(t,e,n)=>{var r=n(4318);t.exports=function(t,e){var n=e?r(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.byteLength)}},3147:t=>{var e=/\w*$/;t.exports=function(t){var n=new t.constructor(t.source,e.exec(t));return n.lastIndex=t.lastIndex,n}},419:(t,e,n)=>{var r=n(2705),i=r?r.prototype:void 0,a=i?i.valueOf:void 0;t.exports=function(t){return a?Object(a.call(t)):{}}},7133:(t,e,n)=>{var r=n(4318);t.exports=function(t,e){var n=e?r(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.length)}},6393:(t,e,n)=>{var r=n(3448);t.exports=function(t,e){if(t!==e){var n=void 0!==t,i=null===t,a=t==t,o=r(t),s=void 0!==e,c=null===e,u=e==e,l=r(e);if(!c&&!l&&!o&&t>e||o&&s&&u&&!c&&!l||i&&s&&u||!n&&u||!a)return 1;if(!i&&!o&&!l&&t<e||l&&n&&a&&!i&&!o||c&&n&&a||!s&&a||!u)return-1}return 0}},5022:(t,e,n)=>{var r=n(6393);t.exports=function(t,e,n){for(var i=-1,a=t.criteria,o=e.criteria,s=a.length,c=n.length;++i<s;){var u=r(a[i],o[i]);if(u)return i>=c?u:u*("desc"==n[i]?-1:1)}return t.index-e.index}},278:t=>{t.exports=function(t,e){var n=-1,r=t.length;for(e||(e=Array(r));++n<r;)e[n]=t[n];return e}},8363:(t,e,n)=>{var r=n(4865),i=n(9465);t.exports=function(t,e,n,a){var o=!n;n||(n={});for(var s=-1,c=e.length;++s<c;){var u=e[s],l=a?a(n[u],t[u],u,n,t):void 0;void 0===l&&(l=t[u]),o?i(n,u,l):r(n,u,l)}return n}},8805:(t,e,n)=>{var r=n(8363),i=n(9551);t.exports=function(t,e){return r(t,i(t),e)}},1911:(t,e,n)=>{var r=n(8363),i=n(1442);t.exports=function(t,e){return r(t,i(t),e)}},4429:(t,e,n)=>{var r=n(5639)["__core-js_shared__"];t.exports=r},1750:(t,e,n)=>{var r=n(5976),i=n(6612);t.exports=function(t){return r((function(e,n){var r=-1,a=n.length,o=a>1?n[a-1]:void 0,s=a>2?n[2]:void 0;for(o=t.length>3&&"function"==typeof o?(a--,o):void 0,s&&i(n[0],n[1],s)&&(o=a<3?void 0:o,a=1),e=Object(e);++r<a;){var c=n[r];c&&t(e,c,r,o)}return e}))}},9291:(t,e,n)=>{var r=n(8612);t.exports=function(t,e){return function(n,i){if(null==n)return n;if(!r(n))return t(n,i);for(var a=n.length,o=e?a:-1,s=Object(n);(e?o--:++o<a)&&!1!==i(s[o],o,s););return n}}},5063:t=>{t.exports=function(t){return function(e,n,r){for(var i=-1,a=Object(e),o=r(e),s=o.length;s--;){var c=o[t?s:++i];if(!1===n(a[c],c,a))break}return e}}},7740:(t,e,n)=>{var r=n(7206),i=n(8612),a=n(3674);t.exports=function(t){return function(e,n,o){var s=Object(e);if(!i(e)){var c=r(n,3);e=a(e),n=function(t){return c(s[t],t,s)}}var u=t(e,n,o);return u>-1?s[c?e[u]:u]:void 0}}},7445:(t,e,n)=>{var r=n(98),i=n(6612),a=n(8601);t.exports=function(t){return function(e,n,o){return o&&"number"!=typeof o&&i(e,n,o)&&(n=o=void 0),e=a(e),void 0===n?(n=e,e=0):n=a(n),o=void 0===o?e<n?1:-1:a(o),r(e,n,o,t)}}},3593:(t,e,n)=>{var r=n(8525),i=n(308),a=n(1814),o=r&&1/a(new r([,-0]))[1]==1/0?function(t){return new r(t)}:i;t.exports=o},8777:(t,e,n)=>{var r=n(852),i=function(){try{var t=r(Object,"defineProperty");return t({},"",{}),t}catch(t){}}();t.exports=i},7114:(t,e,n)=>{var r=n(8668),i=n(2908),a=n(4757);t.exports=function(t,e,n,o,s,c){var u=1&n,l=t.length,h=e.length;if(l!=h&&!(u&&h>l))return!1;var f=c.get(t),d=c.get(e);if(f&&d)return f==e&&d==t;var p=-1,g=!0,y=2&n?new r:void 0;for(c.set(t,e),c.set(e,t);++p<l;){var m=t[p],v=e[p];if(o)var b=u?o(v,m,p,e,t,c):o(m,v,p,t,e,c);if(void 0!==b){if(b)continue;g=!1;break}if(y){if(!i(e,(function(t,e){if(!a(y,e)&&(m===t||s(m,t,n,o,c)))return y.push(e)}))){g=!1;break}}else if(m!==v&&!s(m,v,n,o,c)){g=!1;break}}return c.delete(t),c.delete(e),g}},8351:(t,e,n)=>{var r=n(2705),i=n(1149),a=n(7813),o=n(7114),s=n(8776),c=n(1814),u=r?r.prototype:void 0,l=u?u.valueOf:void 0;t.exports=function(t,e,n,r,u,h,f){switch(n){case"[object DataView]":if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case"[object ArrayBuffer]":return!(t.byteLength!=e.byteLength||!h(new i(t),new i(e)));case"[object Boolean]":case"[object Date]":case"[object Number]":return a(+t,+e);case"[object Error]":return t.name==e.name&&t.message==e.message;case"[object RegExp]":case"[object String]":return t==e+"";case"[object Map]":var d=s;case"[object Set]":var p=1&r;if(d||(d=c),t.size!=e.size&&!p)return!1;var g=f.get(t);if(g)return g==e;r|=2,f.set(t,e);var y=o(d(t),d(e),r,u,h,f);return f.delete(t),y;case"[object Symbol]":if(l)return l.call(t)==l.call(e)}return!1}},6096:(t,e,n)=>{var r=n(8234),i=Object.prototype.hasOwnProperty;t.exports=function(t,e,n,a,o,s){var c=1&n,u=r(t),l=u.length;if(l!=r(e).length&&!c)return!1;for(var h=l;h--;){var f=u[h];if(!(c?f in e:i.call(e,f)))return!1}var d=s.get(t),p=s.get(e);if(d&&p)return d==e&&p==t;var g=!0;s.set(t,e),s.set(e,t);for(var y=c;++h<l;){var m=t[f=u[h]],v=e[f];if(a)var b=c?a(v,m,f,e,t,s):a(m,v,f,t,e,s);if(!(void 0===b?m===v||o(m,v,n,a,s):b)){g=!1;break}y||(y="constructor"==f)}if(g&&!y){var _=t.constructor,x=e.constructor;_==x||!("constructor"in t)||!("constructor"in e)||"function"==typeof _&&_ instanceof _&&"function"==typeof x&&x instanceof x||(g=!1)}return s.delete(t),s.delete(e),g}},9021:(t,e,n)=>{var r=n(5564),i=n(5357),a=n(61);t.exports=function(t){return a(i(t,void 0,r),t+"")}},1957:(t,e,n)=>{var r="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g;t.exports=r},8234:(t,e,n)=>{var r=n(8866),i=n(9551),a=n(3674);t.exports=function(t){return r(t,a,i)}},6904:(t,e,n)=>{var r=n(8866),i=n(1442),a=n(1704);t.exports=function(t){return r(t,a,i)}},5050:(t,e,n)=>{var r=n(7019);t.exports=function(t,e){var n=t.__data__;return r(e)?n["string"==typeof e?"string":"hash"]:n.map}},1499:(t,e,n)=>{var r=n(9162),i=n(3674);t.exports=function(t){for(var e=i(t),n=e.length;n--;){var a=e[n],o=t[a];e[n]=[a,o,r(o)]}return e}},852:(t,e,n)=>{var r=n(8458),i=n(7801);t.exports=function(t,e){var n=i(t,e);return r(n)?n:void 0}},5924:(t,e,n)=>{var r=n(5569)(Object.getPrototypeOf,Object);t.exports=r},9607:(t,e,n)=>{var r=n(2705),i=Object.prototype,a=i.hasOwnProperty,o=i.toString,s=r?r.toStringTag:void 0;t.exports=function(t){var e=a.call(t,s),n=t[s];try{t[s]=void 0;var r=!0}catch(t){}var i=o.call(t);return r&&(e?t[s]=n:delete t[s]),i}},9551:(t,e,n)=>{var r=n(4963),i=n(479),a=Object.prototype.propertyIsEnumerable,o=Object.getOwnPropertySymbols,s=o?function(t){return null==t?[]:(t=Object(t),r(o(t),(function(e){return a.call(t,e)})))}:i;t.exports=s},1442:(t,e,n)=>{var r=n(2488),i=n(5924),a=n(9551),o=n(479),s=Object.getOwnPropertySymbols?function(t){for(var e=[];t;)r(e,a(t)),t=i(t);return e}:o;t.exports=s},4160:(t,e,n)=>{var r=n(8552),i=n(7071),a=n(3818),o=n(8525),s=n(577),c=n(4239),u=n(346),l="[object Map]",h="[object Promise]",f="[object Set]",d="[object WeakMap]",p="[object DataView]",g=u(r),y=u(i),m=u(a),v=u(o),b=u(s),_=c;(r&&_(new r(new ArrayBuffer(1)))!=p||i&&_(new i)!=l||a&&_(a.resolve())!=h||o&&_(new o)!=f||s&&_(new s)!=d)&&(_=function(t){var e=c(t),n="[object Object]"==e?t.constructor:void 0,r=n?u(n):"";if(r)switch(r){case g:return p;case y:return l;case m:return h;case v:return f;case b:return d}return e}),t.exports=_},7801:t=>{t.exports=function(t,e){return null==t?void 0:t[e]}},222:(t,e,n)=>{var r=n(1811),i=n(5694),a=n(1469),o=n(5776),s=n(1780),c=n(327);t.exports=function(t,e,n){for(var u=-1,l=(e=r(e,t)).length,h=!1;++u<l;){var f=c(e[u]);if(!(h=null!=t&&n(t,f)))break;t=t[f]}return h||++u!=l?h:!!(l=null==t?0:t.length)&&s(l)&&o(f,l)&&(a(t)||i(t))}},2689:t=>{var e=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");t.exports=function(t){return e.test(t)}},1789:(t,e,n)=>{var r=n(4536);t.exports=function(){this.__data__=r?r(null):{},this.size=0}},401:t=>{t.exports=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}},7667:(t,e,n)=>{var r=n(4536),i=Object.prototype.hasOwnProperty;t.exports=function(t){var e=this.__data__;if(r){var n=e[t];return"__lodash_hash_undefined__"===n?void 0:n}return i.call(e,t)?e[t]:void 0}},1327:(t,e,n)=>{var r=n(4536),i=Object.prototype.hasOwnProperty;t.exports=function(t){var e=this.__data__;return r?void 0!==e[t]:i.call(e,t)}},1866:(t,e,n)=>{var r=n(4536);t.exports=function(t,e){var n=this.__data__;return this.size+=this.has(t)?0:1,n[t]=r&&void 0===e?"__lodash_hash_undefined__":e,this}},3824:t=>{var e=Object.prototype.hasOwnProperty;t.exports=function(t){var n=t.length,r=new t.constructor(n);return n&&"string"==typeof t[0]&&e.call(t,"index")&&(r.index=t.index,r.input=t.input),r}},9148:(t,e,n)=>{var r=n(4318),i=n(7157),a=n(3147),o=n(419),s=n(7133);t.exports=function(t,e,n){var c=t.constructor;switch(e){case"[object ArrayBuffer]":return r(t);case"[object Boolean]":case"[object Date]":return new c(+t);case"[object DataView]":return i(t,n);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return s(t,n);case"[object Map]":case"[object Set]":return new c;case"[object Number]":case"[object String]":return new c(t);case"[object RegExp]":return a(t);case"[object Symbol]":return o(t)}}},8517:(t,e,n)=>{var r=n(3118),i=n(5924),a=n(5726);t.exports=function(t){return"function"!=typeof t.constructor||a(t)?{}:r(i(t))}},7285:(t,e,n)=>{var r=n(2705),i=n(5694),a=n(1469),o=r?r.isConcatSpreadable:void 0;t.exports=function(t){return a(t)||i(t)||!!(o&&t&&t[o])}},5776:t=>{var e=/^(?:0|[1-9]\d*)$/;t.exports=function(t,n){var r=typeof t;return!!(n=null==n?9007199254740991:n)&&("number"==r||"symbol"!=r&&e.test(t))&&t>-1&&t%1==0&&t<n}},6612:(t,e,n)=>{var r=n(7813),i=n(8612),a=n(5776),o=n(3218);t.exports=function(t,e,n){if(!o(n))return!1;var s=typeof e;return!!("number"==s?i(n)&&a(e,n.length):"string"==s&&e in n)&&r(n[e],t)}},5403:(t,e,n)=>{var r=n(1469),i=n(3448),a=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,o=/^\w*$/;t.exports=function(t,e){if(r(t))return!1;var n=typeof t;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=t&&!i(t))||o.test(t)||!a.test(t)||null!=e&&t in Object(e)}},7019:t=>{t.exports=function(t){var e=typeof t;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t}},5346:(t,e,n)=>{var r,i=n(4429),a=(r=/[^.]+$/.exec(i&&i.keys&&i.keys.IE_PROTO||""))?"Symbol(src)_1."+r:"";t.exports=function(t){return!!a&&a in t}},5726:t=>{var e=Object.prototype;t.exports=function(t){var n=t&&t.constructor;return t===("function"==typeof n&&n.prototype||e)}},9162:(t,e,n)=>{var r=n(3218);t.exports=function(t){return t==t&&!r(t)}},7040:t=>{t.exports=function(){this.__data__=[],this.size=0}},4125:(t,e,n)=>{var r=n(8470),i=Array.prototype.splice;t.exports=function(t){var e=this.__data__,n=r(e,t);return!(n<0||(n==e.length-1?e.pop():i.call(e,n,1),--this.size,0))}},2117:(t,e,n)=>{var r=n(8470);t.exports=function(t){var e=this.__data__,n=r(e,t);return n<0?void 0:e[n][1]}},7518:(t,e,n)=>{var r=n(8470);t.exports=function(t){return r(this.__data__,t)>-1}},4705:(t,e,n)=>{var r=n(8470);t.exports=function(t,e){var n=this.__data__,i=r(n,t);return i<0?(++this.size,n.push([t,e])):n[i][1]=e,this}},4785:(t,e,n)=>{var r=n(1989),i=n(8407),a=n(7071);t.exports=function(){this.size=0,this.__data__={hash:new r,map:new(a||i),string:new r}}},1285:(t,e,n)=>{var r=n(5050);t.exports=function(t){var e=r(this,t).delete(t);return this.size-=e?1:0,e}},6e3:(t,e,n)=>{var r=n(5050);t.exports=function(t){return r(this,t).get(t)}},9916:(t,e,n)=>{var r=n(5050);t.exports=function(t){return r(this,t).has(t)}},5265:(t,e,n)=>{var r=n(5050);t.exports=function(t,e){var n=r(this,t),i=n.size;return n.set(t,e),this.size+=n.size==i?0:1,this}},8776:t=>{t.exports=function(t){var e=-1,n=Array(t.size);return t.forEach((function(t,r){n[++e]=[r,t]})),n}},2634:t=>{t.exports=function(t,e){return function(n){return null!=n&&n[t]===e&&(void 0!==e||t in Object(n))}}},4523:(t,e,n)=>{var r=n(8306);t.exports=function(t){var e=r(t,(function(t){return 500===n.size&&n.clear(),t})),n=e.cache;return e}},4536:(t,e,n)=>{var r=n(852)(Object,"create");t.exports=r},6916:(t,e,n)=>{var r=n(5569)(Object.keys,Object);t.exports=r},3498:t=>{t.exports=function(t){var e=[];if(null!=t)for(var n in Object(t))e.push(n);return e}},1167:(t,e,n)=>{t=n.nmd(t);var r=n(1957),i=e&&!e.nodeType&&e,a=i&&t&&!t.nodeType&&t,o=a&&a.exports===i&&r.process,s=function(){try{return a&&a.require&&a.require("util").types||o&&o.binding&&o.binding("util")}catch(t){}}();t.exports=s},2333:t=>{var e=Object.prototype.toString;t.exports=function(t){return e.call(t)}},5569:t=>{t.exports=function(t,e){return function(n){return t(e(n))}}},5357:(t,e,n)=>{var r=n(6874),i=Math.max;t.exports=function(t,e,n){return e=i(void 0===e?t.length-1:e,0),function(){for(var a=arguments,o=-1,s=i(a.length-e,0),c=Array(s);++o<s;)c[o]=a[e+o];o=-1;for(var u=Array(e+1);++o<e;)u[o]=a[o];return u[e]=n(c),r(t,this,u)}}},5639:(t,e,n)=>{var r=n(1957),i="object"==typeof self&&self&&self.Object===Object&&self,a=r||i||Function("return this")();t.exports=a},6390:t=>{t.exports=function(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]}},619:t=>{t.exports=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this}},2385:t=>{t.exports=function(t){return this.__data__.has(t)}},1814:t=>{t.exports=function(t){var e=-1,n=Array(t.size);return t.forEach((function(t){n[++e]=t})),n}},61:(t,e,n)=>{var r=n(6560),i=n(1275)(r);t.exports=i},1275:t=>{var e=Date.now;t.exports=function(t){var n=0,r=0;return function(){var i=e(),a=16-(i-r);if(r=i,a>0){if(++n>=800)return arguments[0]}else n=0;return t.apply(void 0,arguments)}}},7465:(t,e,n)=>{var r=n(8407);t.exports=function(){this.__data__=new r,this.size=0}},3779:t=>{t.exports=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n}},7599:t=>{t.exports=function(t){return this.__data__.get(t)}},4758:t=>{t.exports=function(t){return this.__data__.has(t)}},4309:(t,e,n)=>{var r=n(8407),i=n(7071),a=n(3369);t.exports=function(t,e){var n=this.__data__;if(n instanceof r){var o=n.__data__;if(!i||o.length<199)return o.push([t,e]),this.size=++n.size,this;n=this.__data__=new a(o)}return n.set(t,e),this.size=n.size,this}},2351:t=>{t.exports=function(t,e,n){for(var r=n-1,i=t.length;++r<i;)if(t[r]===e)return r;return-1}},8016:(t,e,n)=>{var r=n(8983),i=n(2689),a=n(1903);t.exports=function(t){return i(t)?a(t):r(t)}},5514:(t,e,n)=>{var r=n(4523),i=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,a=/\\(\\)?/g,o=r((function(t){var e=[];return 46===t.charCodeAt(0)&&e.push(""),t.replace(i,(function(t,n,r,i){e.push(r?i.replace(a,"$1"):n||t)})),e}));t.exports=o},327:(t,e,n)=>{var r=n(3448);t.exports=function(t){if("string"==typeof t||r(t))return t;var e=t+"";return"0"==e&&1/t==-1/0?"-0":e}},346:t=>{var e=Function.prototype.toString;t.exports=function(t){if(null!=t){try{return e.call(t)}catch(t){}try{return t+""}catch(t){}}return""}},7990:t=>{var e=/\s/;t.exports=function(t){for(var n=t.length;n--&&e.test(t.charAt(n)););return n}},1903:t=>{var e="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",n="\\ud83c[\\udffb-\\udfff]",r="[^\\ud800-\\udfff]",i="(?:\\ud83c[\\udde6-\\uddff]){2}",a="[\\ud800-\\udbff][\\udc00-\\udfff]",o="(?:"+e+"|"+n+")?",s="[\\ufe0e\\ufe0f]?",c=s+o+"(?:\\u200d(?:"+[r,i,a].join("|")+")"+s+o+")*",u="(?:"+[r+e+"?",e,i,a,"[\\ud800-\\udfff]"].join("|")+")",l=RegExp(n+"(?="+n+")|"+u+c,"g");t.exports=function(t){for(var e=l.lastIndex=0;l.test(t);)++e;return e}},6678:(t,e,n)=>{var r=n(5990);t.exports=function(t){return r(t,4)}},361:(t,e,n)=>{var r=n(5990);t.exports=function(t){return r(t,5)}},5703:t=>{t.exports=function(t){return function(){return t}}},1747:(t,e,n)=>{var r=n(5976),i=n(7813),a=n(6612),o=n(1704),s=Object.prototype,c=s.hasOwnProperty,u=r((function(t,e){t=Object(t);var n=-1,r=e.length,u=r>2?e[2]:void 0;for(u&&a(e[0],e[1],u)&&(r=1);++n<r;)for(var l=e[n],h=o(l),f=-1,d=h.length;++f<d;){var p=h[f],g=t[p];(void 0===g||i(g,s[p])&&!c.call(t,p))&&(t[p]=l[p])}return t}));t.exports=u},6073:(t,e,n)=>{t.exports=n(4486)},7813:t=>{t.exports=function(t,e){return t===e||t!=t&&e!=e}},3105:(t,e,n)=>{var r=n(4963),i=n(760),a=n(7206),o=n(1469);t.exports=function(t,e){return(o(t)?r:i)(t,a(e,3))}},3311:(t,e,n)=>{var r=n(7740)(n(998));t.exports=r},998:(t,e,n)=>{var r=n(1848),i=n(7206),a=n(554),o=Math.max;t.exports=function(t,e,n){var s=null==t?0:t.length;if(!s)return-1;var c=null==n?0:a(n);return c<0&&(c=o(s+c,0)),r(t,i(e,3),c)}},5564:(t,e,n)=>{var r=n(1078);t.exports=function(t){return null!=t&&t.length?r(t,1):[]}},4486:(t,e,n)=>{var r=n(7412),i=n(9881),a=n(4290),o=n(1469);t.exports=function(t,e){return(o(t)?r:i)(t,a(e))}},2620:(t,e,n)=>{var r=n(8483),i=n(4290),a=n(1704);t.exports=function(t,e){return null==t?t:r(t,i(e),a)}},7361:(t,e,n)=>{var r=n(7786);t.exports=function(t,e,n){var i=null==t?void 0:r(t,e);return void 0===i?n:i}},8721:(t,e,n)=>{var r=n(8565),i=n(222);t.exports=function(t,e){return null!=t&&i(t,e,r)}},9095:(t,e,n)=>{var r=n(13),i=n(222);t.exports=function(t,e){return null!=t&&i(t,e,r)}},6557:t=>{t.exports=function(t){return t}},5694:(t,e,n)=>{var r=n(9454),i=n(7005),a=Object.prototype,o=a.hasOwnProperty,s=a.propertyIsEnumerable,c=r(function(){return arguments}())?r:function(t){return i(t)&&o.call(t,"callee")&&!s.call(t,"callee")};t.exports=c},1469:t=>{var e=Array.isArray;t.exports=e},8612:(t,e,n)=>{var r=n(3560),i=n(1780);t.exports=function(t){return null!=t&&i(t.length)&&!r(t)}},9246:(t,e,n)=>{var r=n(8612),i=n(7005);t.exports=function(t){return i(t)&&r(t)}},4144:(t,e,n)=>{t=n.nmd(t);var r=n(5639),i=n(5062),a=e&&!e.nodeType&&e,o=a&&t&&!t.nodeType&&t,s=o&&o.exports===a?r.Buffer:void 0,c=(s?s.isBuffer:void 0)||i;t.exports=c},1609:(t,e,n)=>{var r=n(280),i=n(4160),a=n(5694),o=n(1469),s=n(8612),c=n(4144),u=n(5726),l=n(6719),h=Object.prototype.hasOwnProperty;t.exports=function(t){if(null==t)return!0;if(s(t)&&(o(t)||"string"==typeof t||"function"==typeof t.splice||c(t)||l(t)||a(t)))return!t.length;var e=i(t);if("[object Map]"==e||"[object Set]"==e)return!t.size;if(u(t))return!r(t).length;for(var n in t)if(h.call(t,n))return!1;return!0}},3560:(t,e,n)=>{var r=n(4239),i=n(3218);t.exports=function(t){if(!i(t))return!1;var e=r(t);return"[object Function]"==e||"[object GeneratorFunction]"==e||"[object AsyncFunction]"==e||"[object Proxy]"==e}},1780:t=>{t.exports=function(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=9007199254740991}},6688:(t,e,n)=>{var r=n(5588),i=n(1717),a=n(1167),o=a&&a.isMap,s=o?i(o):r;t.exports=s},3218:t=>{t.exports=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}},7005:t=>{t.exports=function(t){return null!=t&&"object"==typeof t}},8630:(t,e,n)=>{var r=n(4239),i=n(5924),a=n(7005),o=Function.prototype,s=Object.prototype,c=o.toString,u=s.hasOwnProperty,l=c.call(Object);t.exports=function(t){if(!a(t)||"[object Object]"!=r(t))return!1;var e=i(t);if(null===e)return!0;var n=u.call(e,"constructor")&&e.constructor;return"function"==typeof n&&n instanceof n&&c.call(n)==l}},2928:(t,e,n)=>{var r=n(9221),i=n(1717),a=n(1167),o=a&&a.isSet,s=o?i(o):r;t.exports=s},7037:(t,e,n)=>{var r=n(4239),i=n(1469),a=n(7005);t.exports=function(t){return"string"==typeof t||!i(t)&&a(t)&&"[object String]"==r(t)}},3448:(t,e,n)=>{var r=n(4239),i=n(7005);t.exports=function(t){return"symbol"==typeof t||i(t)&&"[object Symbol]"==r(t)}},6719:(t,e,n)=>{var r=n(8749),i=n(1717),a=n(1167),o=a&&a.isTypedArray,s=o?i(o):r;t.exports=s},2353:t=>{t.exports=function(t){return void 0===t}},3674:(t,e,n)=>{var r=n(4636),i=n(280),a=n(8612);t.exports=function(t){return a(t)?r(t):i(t)}},1704:(t,e,n)=>{var r=n(4636),i=n(313),a=n(8612);t.exports=function(t){return a(t)?r(t,!0):i(t)}},928:t=>{t.exports=function(t){var e=null==t?0:t.length;return e?t[e-1]:void 0}},5161:(t,e,n)=>{var r=n(9932),i=n(7206),a=n(9199),o=n(1469);t.exports=function(t,e){return(o(t)?r:a)(t,i(e,3))}},6604:(t,e,n)=>{var r=n(9465),i=n(7816),a=n(7206);t.exports=function(t,e){var n={};return e=a(e,3),i(t,(function(t,i,a){r(n,i,e(t,i,a))})),n}},6162:(t,e,n)=>{var r=n(6029),i=n(3325),a=n(6557);t.exports=function(t){return t&&t.length?r(t,a,i):void 0}},8306:(t,e,n)=>{var r=n(3369);function i(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new TypeError("Expected a function");var n=function(){var r=arguments,i=e?e.apply(this,r):r[0],a=n.cache;if(a.has(i))return a.get(i);var o=t.apply(this,r);return n.cache=a.set(i,o)||a,o};return n.cache=new(i.Cache||r),n}i.Cache=r,t.exports=i},3857:(t,e,n)=>{var r=n(2980),i=n(1750)((function(t,e,n){r(t,e,n)}));t.exports=i},3632:(t,e,n)=>{var r=n(6029),i=n(433),a=n(6557);t.exports=function(t){return t&&t.length?r(t,a,i):void 0}},2762:(t,e,n)=>{var r=n(6029),i=n(7206),a=n(433);t.exports=function(t,e){return t&&t.length?r(t,i(e,2),a):void 0}},308:t=>{t.exports=function(){}},7771:(t,e,n)=>{var r=n(5639);t.exports=function(){return r.Date.now()}},9722:(t,e,n)=>{var r=n(5970),i=n(9021)((function(t,e){return null==t?{}:r(t,e)}));t.exports=i},9601:(t,e,n)=>{var r=n(371),i=n(9152),a=n(5403),o=n(327);t.exports=function(t){return a(t)?r(o(t)):i(t)}},6026:(t,e,n)=>{var r=n(7445)();t.exports=r},4061:(t,e,n)=>{var r=n(2663),i=n(9881),a=n(7206),o=n(107),s=n(1469);t.exports=function(t,e,n){var c=s(t)?r:o,u=arguments.length<3;return c(t,a(e,4),n,u,i)}},4238:(t,e,n)=>{var r=n(280),i=n(4160),a=n(8612),o=n(7037),s=n(8016);t.exports=function(t){if(null==t)return 0;if(a(t))return o(t)?s(t):t.length;var e=i(t);return"[object Map]"==e||"[object Set]"==e?t.size:r(t).length}},9734:(t,e,n)=>{var r=n(1078),i=n(9556),a=n(5976),o=n(6612),s=a((function(t,e){if(null==t)return[];var n=e.length;return n>1&&o(t,e[0],e[1])?e=[]:n>2&&o(e[0],e[1],e[2])&&(e=[e[0]]),i(t,r(e,1),[])}));t.exports=s},479:t=>{t.exports=function(){return[]}},5062:t=>{t.exports=function(){return!1}},8601:(t,e,n)=>{var r=n(4841);t.exports=function(t){return t?Infinity===(t=r(t))||t===-1/0?17976931348623157e292*(t<0?-1:1):t==t?t:0:0===t?t:0}},554:(t,e,n)=>{var r=n(8601);t.exports=function(t){var e=r(t),n=e%1;return e==e?n?e-n:e:0}},4841:(t,e,n)=>{var r=n(7561),i=n(3218),a=n(3448),o=/^[-+]0x[0-9a-f]+$/i,s=/^0b[01]+$/i,c=/^0o[0-7]+$/i,u=parseInt;t.exports=function(t){if("number"==typeof t)return t;if(a(t))return NaN;if(i(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=i(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=r(t);var n=s.test(t);return n||c.test(t)?u(t.slice(2),n?2:8):o.test(t)?NaN:+t}},3678:(t,e,n)=>{var r=n(8363),i=n(1704);t.exports=function(t){return r(t,i(t))}},9833:(t,e,n)=>{var r=n(531);t.exports=function(t){return null==t?"":r(t)}},8718:(t,e,n)=>{var r=n(7412),i=n(3118),a=n(7816),o=n(7206),s=n(5924),c=n(1469),u=n(4144),l=n(3560),h=n(3218),f=n(6719);t.exports=function(t,e,n){var d=c(t),p=d||u(t)||f(t);if(e=o(e,4),null==n){var g=t&&t.constructor;n=p?d?new g:[]:h(t)&&l(g)?i(s(t)):{}}return(p?r:a)(t,(function(t,r,i){return e(n,t,r,i)})),n}},3386:(t,e,n)=>{var r=n(1078),i=n(5976),a=n(5652),o=n(9246),s=i((function(t){return a(r(t,1,o,!0))}));t.exports=s},3955:(t,e,n)=>{var r=n(9833),i=0;t.exports=function(t){var e=++i;return r(t)+e}},2628:(t,e,n)=>{var r=n(7415),i=n(3674);t.exports=function(t){return null==t?[]:r(t,i(t))}},7287:(t,e,n)=>{var r=n(4865),i=n(1757);t.exports=function(t,e){return i(t||[],e||[],r)}},9234:()=>{},1748:(t,e,n)=>{var r={"./locale":9234,"./locale.js":9234};function i(t){var e=a(t);return n(e)}function a(t){if(!n.o(r,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return r[t]}i.keys=function(){return Object.keys(r)},i.resolve=a,t.exports=i,i.id=1748},1941:function(t,e,n){(t=n.nmd(t)).exports=function(){"use strict";var e,r;function i(){return e.apply(null,arguments)}function a(t){return t instanceof Array||"[object Array]"===Object.prototype.toString.call(t)}function o(t){return null!=t&&"[object Object]"===Object.prototype.toString.call(t)}function s(t){return void 0===t}function c(t){return"number"==typeof t||"[object Number]"===Object.prototype.toString.call(t)}function u(t){return t instanceof Date||"[object Date]"===Object.prototype.toString.call(t)}function l(t,e){var n,r=[];for(n=0;n<t.length;++n)r.push(e(t[n],n));return r}function h(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function f(t,e){for(var n in e)h(e,n)&&(t[n]=e[n]);return h(e,"toString")&&(t.toString=e.toString),h(e,"valueOf")&&(t.valueOf=e.valueOf),t}function d(t,e,n,r){return be(t,e,n,r,!0).utc()}function p(t){return null==t._pf&&(t._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null,rfc2822:!1,weekdayMismatch:!1}),t._pf}function g(t){if(null==t._isValid){var e=p(t),n=r.call(e.parsedDateParts,(function(t){return null!=t})),i=!isNaN(t._d.getTime())&&e.overflow<0&&!e.empty&&!e.invalidMonth&&!e.invalidWeekday&&!e.weekdayMismatch&&!e.nullInput&&!e.invalidFormat&&!e.userInvalidated&&(!e.meridiem||e.meridiem&&n);if(t._strict&&(i=i&&0===e.charsLeftOver&&0===e.unusedTokens.length&&void 0===e.bigHour),null!=Object.isFrozen&&Object.isFrozen(t))return i;t._isValid=i}return t._isValid}function y(t){var e=d(NaN);return null!=t?f(p(e),t):p(e).userInvalidated=!0,e}r=Array.prototype.some?Array.prototype.some:function(t){for(var e=Object(this),n=e.length>>>0,r=0;r<n;r++)if(r in e&&t.call(this,e[r],r,e))return!0;return!1};var m=i.momentProperties=[];function v(t,e){var n,r,i;if(s(e._isAMomentObject)||(t._isAMomentObject=e._isAMomentObject),s(e._i)||(t._i=e._i),s(e._f)||(t._f=e._f),s(e._l)||(t._l=e._l),s(e._strict)||(t._strict=e._strict),s(e._tzm)||(t._tzm=e._tzm),s(e._isUTC)||(t._isUTC=e._isUTC),s(e._offset)||(t._offset=e._offset),s(e._pf)||(t._pf=p(e)),s(e._locale)||(t._locale=e._locale),0<m.length)for(n=0;n<m.length;n++)s(i=e[r=m[n]])||(t[r]=i);return t}var b=!1;function _(t){v(this,t),this._d=new Date(null!=t._d?t._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===b&&(b=!0,i.updateOffset(this),b=!1)}function x(t){return t instanceof _||null!=t&&null!=t._isAMomentObject}function w(t){return t<0?Math.ceil(t)||0:Math.floor(t)}function k(t){var e=+t,n=0;return 0!==e&&isFinite(e)&&(n=w(e)),n}function T(t,e,n){var r,i=Math.min(t.length,e.length),a=Math.abs(t.length-e.length),o=0;for(r=0;r<i;r++)(n&&t[r]!==e[r]||!n&&k(t[r])!==k(e[r]))&&o++;return o+a}function C(t){!1===i.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function E(t,e){var n=!0;return f((function(){if(null!=i.deprecationHandler&&i.deprecationHandler(null,t),n){for(var r,a=[],o=0;o<arguments.length;o++){if(r="","object"==typeof arguments[o]){for(var s in r+="\n["+o+"] ",arguments[0])r+=s+": "+arguments[0][s]+", ";r=r.slice(0,-2)}else r=arguments[o];a.push(r)}C(t+"\nArguments: "+Array.prototype.slice.call(a).join("")+"\n"+(new Error).stack),n=!1}return e.apply(this,arguments)}),e)}var S,A={};function M(t,e){null!=i.deprecationHandler&&i.deprecationHandler(t,e),A[t]||(C(e),A[t]=!0)}function N(t){return t instanceof Function||"[object Function]"===Object.prototype.toString.call(t)}function D(t,e){var n,r=f({},t);for(n in e)h(e,n)&&(o(t[n])&&o(e[n])?(r[n]={},f(r[n],t[n]),f(r[n],e[n])):null!=e[n]?r[n]=e[n]:delete r[n]);for(n in t)h(t,n)&&!h(e,n)&&o(t[n])&&(r[n]=f({},r[n]));return r}function B(t){null!=t&&this.set(t)}i.suppressDeprecationWarnings=!1,i.deprecationHandler=null,S=Object.keys?Object.keys:function(t){var e,n=[];for(e in t)h(t,e)&&n.push(e);return n};var L={};function O(t,e){var n=t.toLowerCase();L[n]=L[n+"s"]=L[e]=t}function I(t){return"string"==typeof t?L[t]||L[t.toLowerCase()]:void 0}function R(t){var e,n,r={};for(n in t)h(t,n)&&(e=I(n))&&(r[e]=t[n]);return r}var F={};function P(t,e){F[t]=e}function Y(t,e,n){var r=""+Math.abs(t),i=e-r.length;return(0<=t?n?"+":"":"-")+Math.pow(10,Math.max(0,i)).toString().substr(1)+r}var j=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,U=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,z={},$={};function q(t,e,n,r){var i=r;"string"==typeof r&&(i=function(){return this[r]()}),t&&($[t]=i),e&&($[e[0]]=function(){return Y(i.apply(this,arguments),e[1],e[2])}),n&&($[n]=function(){return this.localeData().ordinal(i.apply(this,arguments),t)})}function H(t,e){return t.isValid()?(e=W(e,t.localeData()),z[e]=z[e]||function(t){var e,n,r,i=t.match(j);for(e=0,n=i.length;e<n;e++)$[i[e]]?i[e]=$[i[e]]:i[e]=(r=i[e]).match(/\[[\s\S]/)?r.replace(/^\[|\]$/g,""):r.replace(/\\/g,"");return function(e){var r,a="";for(r=0;r<n;r++)a+=N(i[r])?i[r].call(e,t):i[r];return a}}(e),z[e](t)):t.localeData().invalidDate()}function W(t,e){var n=5;function r(t){return e.longDateFormat(t)||t}for(U.lastIndex=0;0<=n&&U.test(t);)t=t.replace(U,r),U.lastIndex=0,n-=1;return t}var V=/\d/,G=/\d\d/,X=/\d{3}/,Z=/\d{4}/,Q=/[+-]?\d{6}/,K=/\d\d?/,J=/\d\d\d\d?/,tt=/\d\d\d\d\d\d?/,et=/\d{1,3}/,nt=/\d{1,4}/,rt=/[+-]?\d{1,6}/,it=/\d+/,at=/[+-]?\d+/,ot=/Z|[+-]\d\d:?\d\d/gi,st=/Z|[+-]\d\d(?::?\d\d)?/gi,ct=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,ut={};function lt(t,e,n){ut[t]=N(e)?e:function(t,r){return t&&n?n:e}}function ht(t,e){return h(ut,t)?ut[t](e._strict,e._locale):new RegExp(ft(t.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,(function(t,e,n,r,i){return e||n||r||i}))))}function ft(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}var dt={};function pt(t,e){var n,r=e;for("string"==typeof t&&(t=[t]),c(e)&&(r=function(t,n){n[e]=k(t)}),n=0;n<t.length;n++)dt[t[n]]=r}function gt(t,e){pt(t,(function(t,n,r,i){r._w=r._w||{},e(t,r._w,r,i)}))}function yt(t){return mt(t)?366:365}function mt(t){return t%4==0&&t%100!=0||t%400==0}q("Y",0,0,(function(){var t=this.year();return t<=9999?""+t:"+"+t})),q(0,["YY",2],0,(function(){return this.year()%100})),q(0,["YYYY",4],0,"year"),q(0,["YYYYY",5],0,"year"),q(0,["YYYYYY",6,!0],0,"year"),O("year","y"),P("year",1),lt("Y",at),lt("YY",K,G),lt("YYYY",nt,Z),lt("YYYYY",rt,Q),lt("YYYYYY",rt,Q),pt(["YYYYY","YYYYYY"],0),pt("YYYY",(function(t,e){e[0]=2===t.length?i.parseTwoDigitYear(t):k(t)})),pt("YY",(function(t,e){e[0]=i.parseTwoDigitYear(t)})),pt("Y",(function(t,e){e[0]=parseInt(t,10)})),i.parseTwoDigitYear=function(t){return k(t)+(68<k(t)?1900:2e3)};var vt,bt=_t("FullYear",!0);function _t(t,e){return function(n){return null!=n?(wt(this,t,n),i.updateOffset(this,e),this):xt(this,t)}}function xt(t,e){return t.isValid()?t._d["get"+(t._isUTC?"UTC":"")+e]():NaN}function wt(t,e,n){t.isValid()&&!isNaN(n)&&("FullYear"===e&&mt(t.year())&&1===t.month()&&29===t.date()?t._d["set"+(t._isUTC?"UTC":"")+e](n,t.month(),kt(n,t.month())):t._d["set"+(t._isUTC?"UTC":"")+e](n))}function kt(t,e){if(isNaN(t)||isNaN(e))return NaN;var n=(e%12+12)%12;return t+=(e-n)/12,1===n?mt(t)?29:28:31-n%7%2}vt=Array.prototype.indexOf?Array.prototype.indexOf:function(t){var e;for(e=0;e<this.length;++e)if(this[e]===t)return e;return-1},q("M",["MM",2],"Mo",(function(){return this.month()+1})),q("MMM",0,0,(function(t){return this.localeData().monthsShort(this,t)})),q("MMMM",0,0,(function(t){return this.localeData().months(this,t)})),O("month","M"),P("month",8),lt("M",K),lt("MM",K,G),lt("MMM",(function(t,e){return e.monthsShortRegex(t)})),lt("MMMM",(function(t,e){return e.monthsRegex(t)})),pt(["M","MM"],(function(t,e){e[1]=k(t)-1})),pt(["MMM","MMMM"],(function(t,e,n,r){var i=n._locale.monthsParse(t,r,n._strict);null!=i?e[1]=i:p(n).invalidMonth=t}));var Tt=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,Ct="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),Et="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_");function St(t,e){var n;if(!t.isValid())return t;if("string"==typeof e)if(/^\d+$/.test(e))e=k(e);else if(!c(e=t.localeData().monthsParse(e)))return t;return n=Math.min(t.date(),kt(t.year(),e)),t._d["set"+(t._isUTC?"UTC":"")+"Month"](e,n),t}function At(t){return null!=t?(St(this,t),i.updateOffset(this,!0),this):xt(this,"Month")}var Mt=ct,Nt=ct;function Dt(){function t(t,e){return e.length-t.length}var e,n,r=[],i=[],a=[];for(e=0;e<12;e++)n=d([2e3,e]),r.push(this.monthsShort(n,"")),i.push(this.months(n,"")),a.push(this.months(n,"")),a.push(this.monthsShort(n,""));for(r.sort(t),i.sort(t),a.sort(t),e=0;e<12;e++)r[e]=ft(r[e]),i[e]=ft(i[e]);for(e=0;e<24;e++)a[e]=ft(a[e]);this._monthsRegex=new RegExp("^("+a.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+i.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+r.join("|")+")","i")}function Bt(t){var e;if(t<100&&0<=t){var n=Array.prototype.slice.call(arguments);n[0]=t+400,e=new Date(Date.UTC.apply(null,n)),isFinite(e.getUTCFullYear())&&e.setUTCFullYear(t)}else e=new Date(Date.UTC.apply(null,arguments));return e}function Lt(t,e,n){var r=7+e-n;return-(7+Bt(t,0,r).getUTCDay()-e)%7+r-1}function Ot(t,e,n,r,i){var a,o,s=1+7*(e-1)+(7+n-r)%7+Lt(t,r,i);return o=s<=0?yt(a=t-1)+s:s>yt(t)?(a=t+1,s-yt(t)):(a=t,s),{year:a,dayOfYear:o}}function It(t,e,n){var r,i,a=Lt(t.year(),e,n),o=Math.floor((t.dayOfYear()-a-1)/7)+1;return o<1?r=o+Rt(i=t.year()-1,e,n):o>Rt(t.year(),e,n)?(r=o-Rt(t.year(),e,n),i=t.year()+1):(i=t.year(),r=o),{week:r,year:i}}function Rt(t,e,n){var r=Lt(t,e,n),i=Lt(t+1,e,n);return(yt(t)-r+i)/7}function Ft(t,e){return t.slice(e,7).concat(t.slice(0,e))}q("w",["ww",2],"wo","week"),q("W",["WW",2],"Wo","isoWeek"),O("week","w"),O("isoWeek","W"),P("week",5),P("isoWeek",5),lt("w",K),lt("ww",K,G),lt("W",K),lt("WW",K,G),gt(["w","ww","W","WW"],(function(t,e,n,r){e[r.substr(0,1)]=k(t)})),q("d",0,"do","day"),q("dd",0,0,(function(t){return this.localeData().weekdaysMin(this,t)})),q("ddd",0,0,(function(t){return this.localeData().weekdaysShort(this,t)})),q("dddd",0,0,(function(t){return this.localeData().weekdays(this,t)})),q("e",0,0,"weekday"),q("E",0,0,"isoWeekday"),O("day","d"),O("weekday","e"),O("isoWeekday","E"),P("day",11),P("weekday",11),P("isoWeekday",11),lt("d",K),lt("e",K),lt("E",K),lt("dd",(function(t,e){return e.weekdaysMinRegex(t)})),lt("ddd",(function(t,e){return e.weekdaysShortRegex(t)})),lt("dddd",(function(t,e){return e.weekdaysRegex(t)})),gt(["dd","ddd","dddd"],(function(t,e,n,r){var i=n._locale.weekdaysParse(t,r,n._strict);null!=i?e.d=i:p(n).invalidWeekday=t})),gt(["d","e","E"],(function(t,e,n,r){e[r]=k(t)}));var Pt="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Yt="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),jt="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),Ut=ct,zt=ct,$t=ct;function qt(){function t(t,e){return e.length-t.length}var e,n,r,i,a,o=[],s=[],c=[],u=[];for(e=0;e<7;e++)n=d([2e3,1]).day(e),r=this.weekdaysMin(n,""),i=this.weekdaysShort(n,""),a=this.weekdays(n,""),o.push(r),s.push(i),c.push(a),u.push(r),u.push(i),u.push(a);for(o.sort(t),s.sort(t),c.sort(t),u.sort(t),e=0;e<7;e++)s[e]=ft(s[e]),c[e]=ft(c[e]),u[e]=ft(u[e]);this._weekdaysRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+c.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+s.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+o.join("|")+")","i")}function Ht(){return this.hours()%12||12}function Wt(t,e){q(t,0,0,(function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)}))}function Vt(t,e){return e._meridiemParse}q("H",["HH",2],0,"hour"),q("h",["hh",2],0,Ht),q("k",["kk",2],0,(function(){return this.hours()||24})),q("hmm",0,0,(function(){return""+Ht.apply(this)+Y(this.minutes(),2)})),q("hmmss",0,0,(function(){return""+Ht.apply(this)+Y(this.minutes(),2)+Y(this.seconds(),2)})),q("Hmm",0,0,(function(){return""+this.hours()+Y(this.minutes(),2)})),q("Hmmss",0,0,(function(){return""+this.hours()+Y(this.minutes(),2)+Y(this.seconds(),2)})),Wt("a",!0),Wt("A",!1),O("hour","h"),P("hour",13),lt("a",Vt),lt("A",Vt),lt("H",K),lt("h",K),lt("k",K),lt("HH",K,G),lt("hh",K,G),lt("kk",K,G),lt("hmm",J),lt("hmmss",tt),lt("Hmm",J),lt("Hmmss",tt),pt(["H","HH"],3),pt(["k","kk"],(function(t,e,n){var r=k(t);e[3]=24===r?0:r})),pt(["a","A"],(function(t,e,n){n._isPm=n._locale.isPM(t),n._meridiem=t})),pt(["h","hh"],(function(t,e,n){e[3]=k(t),p(n).bigHour=!0})),pt("hmm",(function(t,e,n){var r=t.length-2;e[3]=k(t.substr(0,r)),e[4]=k(t.substr(r)),p(n).bigHour=!0})),pt("hmmss",(function(t,e,n){var r=t.length-4,i=t.length-2;e[3]=k(t.substr(0,r)),e[4]=k(t.substr(r,2)),e[5]=k(t.substr(i)),p(n).bigHour=!0})),pt("Hmm",(function(t,e,n){var r=t.length-2;e[3]=k(t.substr(0,r)),e[4]=k(t.substr(r))})),pt("Hmmss",(function(t,e,n){var r=t.length-4,i=t.length-2;e[3]=k(t.substr(0,r)),e[4]=k(t.substr(r,2)),e[5]=k(t.substr(i))}));var Gt,Xt=_t("Hours",!0),Zt={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Ct,monthsShort:Et,week:{dow:0,doy:6},weekdays:Pt,weekdaysMin:jt,weekdaysShort:Yt,meridiemParse:/[ap]\.?m?\.?/i},Qt={},Kt={};function Jt(t){return t?t.toLowerCase().replace("_","-"):t}function te(e){var r=null;if(!Qt[e]&&t&&t.exports)try{r=Gt._abbr,n(1748)("./"+e),ee(r)}catch(e){}return Qt[e]}function ee(t,e){var n;return t&&((n=s(e)?re(t):ne(t,e))?Gt=n:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+t+" not found. Did you forget to load it?")),Gt._abbr}function ne(t,e){if(null===e)return delete Qt[t],null;var n,r=Zt;if(e.abbr=t,null!=Qt[t])M("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),r=Qt[t]._config;else if(null!=e.parentLocale)if(null!=Qt[e.parentLocale])r=Qt[e.parentLocale]._config;else{if(null==(n=te(e.parentLocale)))return Kt[e.parentLocale]||(Kt[e.parentLocale]=[]),Kt[e.parentLocale].push({name:t,config:e}),null;r=n._config}return Qt[t]=new B(D(r,e)),Kt[t]&&Kt[t].forEach((function(t){ne(t.name,t.config)})),ee(t),Qt[t]}function re(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Gt;if(!a(t)){if(e=te(t))return e;t=[t]}return function(t){for(var e,n,r,i,a=0;a<t.length;){for(e=(i=Jt(t[a]).split("-")).length,n=(n=Jt(t[a+1]))?n.split("-"):null;0<e;){if(r=te(i.slice(0,e).join("-")))return r;if(n&&n.length>=e&&T(i,n,!0)>=e-1)break;e--}a++}return Gt}(t)}function ie(t){var e,n=t._a;return n&&-2===p(t).overflow&&(e=n[1]<0||11<n[1]?1:n[2]<1||n[2]>kt(n[0],n[1])?2:n[3]<0||24<n[3]||24===n[3]&&(0!==n[4]||0!==n[5]||0!==n[6])?3:n[4]<0||59<n[4]?4:n[5]<0||59<n[5]?5:n[6]<0||999<n[6]?6:-1,p(t)._overflowDayOfYear&&(e<0||2<e)&&(e=2),p(t)._overflowWeeks&&-1===e&&(e=7),p(t)._overflowWeekday&&-1===e&&(e=8),p(t).overflow=e),t}function ae(t,e,n){return null!=t?t:null!=e?e:n}function oe(t){var e,n,r,a,o,s=[];if(!t._d){var c,u;for(c=t,u=new Date(i.now()),r=c._useUTC?[u.getUTCFullYear(),u.getUTCMonth(),u.getUTCDate()]:[u.getFullYear(),u.getMonth(),u.getDate()],t._w&&null==t._a[2]&&null==t._a[1]&&function(t){var e,n,r,i,a,o,s,c;if(null!=(e=t._w).GG||null!=e.W||null!=e.E)a=1,o=4,n=ae(e.GG,t._a[0],It(_e(),1,4).year),r=ae(e.W,1),((i=ae(e.E,1))<1||7<i)&&(c=!0);else{a=t._locale._week.dow,o=t._locale._week.doy;var u=It(_e(),a,o);n=ae(e.gg,t._a[0],u.year),r=ae(e.w,u.week),null!=e.d?((i=e.d)<0||6<i)&&(c=!0):null!=e.e?(i=e.e+a,(e.e<0||6<e.e)&&(c=!0)):i=a}r<1||r>Rt(n,a,o)?p(t)._overflowWeeks=!0:null!=c?p(t)._overflowWeekday=!0:(s=Ot(n,r,i,a,o),t._a[0]=s.year,t._dayOfYear=s.dayOfYear)}(t),null!=t._dayOfYear&&(o=ae(t._a[0],r[0]),(t._dayOfYear>yt(o)||0===t._dayOfYear)&&(p(t)._overflowDayOfYear=!0),n=Bt(o,0,t._dayOfYear),t._a[1]=n.getUTCMonth(),t._a[2]=n.getUTCDate()),e=0;e<3&&null==t._a[e];++e)t._a[e]=s[e]=r[e];for(;e<7;e++)t._a[e]=s[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[3]&&0===t._a[4]&&0===t._a[5]&&0===t._a[6]&&(t._nextDay=!0,t._a[3]=0),t._d=(t._useUTC?Bt:function(t,e,n,r,i,a,o){var s;return t<100&&0<=t?(s=new Date(t+400,e,n,r,i,a,o),isFinite(s.getFullYear())&&s.setFullYear(t)):s=new Date(t,e,n,r,i,a,o),s}).apply(null,s),a=t._useUTC?t._d.getUTCDay():t._d.getDay(),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[3]=24),t._w&&void 0!==t._w.d&&t._w.d!==a&&(p(t).weekdayMismatch=!0)}}var se=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ce=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ue=/Z|[+-]\d\d(?::?\d\d)?/,le=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],he=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],fe=/^\/?Date\((\-?\d+)/i;function de(t){var e,n,r,i,a,o,s=t._i,c=se.exec(s)||ce.exec(s);if(c){for(p(t).iso=!0,e=0,n=le.length;e<n;e++)if(le[e][1].exec(c[1])){i=le[e][0],r=!1!==le[e][2];break}if(null==i)return void(t._isValid=!1);if(c[3]){for(e=0,n=he.length;e<n;e++)if(he[e][1].exec(c[3])){a=(c[2]||" ")+he[e][0];break}if(null==a)return void(t._isValid=!1)}if(!r&&null!=a)return void(t._isValid=!1);if(c[4]){if(!ue.exec(c[4]))return void(t._isValid=!1);o="Z"}t._f=i+(a||"")+(o||""),me(t)}else t._isValid=!1}var pe=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/;var ge={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function ye(t){var e,n,r,i=pe.exec(t._i.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,""));if(i){var a=function(t,e,n,r,i,a){var o=[function(t){var e=parseInt(t,10);return e<=49?2e3+e:e<=999?1900+e:e}(t),Et.indexOf(e),parseInt(n,10),parseInt(r,10),parseInt(i,10)];return a&&o.push(parseInt(a,10)),o}(i[4],i[3],i[2],i[5],i[6],i[7]);if(n=a,r=t,(e=i[1])&&Yt.indexOf(e)!==new Date(n[0],n[1],n[2]).getDay()&&(p(r).weekdayMismatch=!0,!(r._isValid=!1)))return;t._a=a,t._tzm=function(t,e,n){if(t)return ge[t];if(e)return 0;var r=parseInt(n,10),i=r%100;return(r-i)/100*60+i}(i[8],i[9],i[10]),t._d=Bt.apply(null,t._a),t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),p(t).rfc2822=!0}else t._isValid=!1}function me(t){if(t._f!==i.ISO_8601)if(t._f!==i.RFC_2822){t._a=[],p(t).empty=!0;var e,n,r,a,o,s,c,u,l=""+t._i,f=l.length,d=0;for(r=W(t._f,t._locale).match(j)||[],e=0;e<r.length;e++)a=r[e],(n=(l.match(ht(a,t))||[])[0])&&(0<(o=l.substr(0,l.indexOf(n))).length&&p(t).unusedInput.push(o),l=l.slice(l.indexOf(n)+n.length),d+=n.length),$[a]?(n?p(t).empty=!1:p(t).unusedTokens.push(a),s=a,u=t,null!=(c=n)&&h(dt,s)&&dt[s](c,u._a,u,s)):t._strict&&!n&&p(t).unusedTokens.push(a);p(t).charsLeftOver=f-d,0<l.length&&p(t).unusedInput.push(l),t._a[3]<=12&&!0===p(t).bigHour&&0<t._a[3]&&(p(t).bigHour=void 0),p(t).parsedDateParts=t._a.slice(0),p(t).meridiem=t._meridiem,t._a[3]=function(t,e,n){var r;return null==n?e:null!=t.meridiemHour?t.meridiemHour(e,n):(null!=t.isPM&&((r=t.isPM(n))&&e<12&&(e+=12),r||12!==e||(e=0)),e)}(t._locale,t._a[3],t._meridiem),oe(t),ie(t)}else ye(t);else de(t)}function ve(t){var e,n,r,h,d=t._i,m=t._f;return t._locale=t._locale||re(t._l),null===d||void 0===m&&""===d?y({nullInput:!0}):("string"==typeof d&&(t._i=d=t._locale.preparse(d)),x(d)?new _(ie(d)):(u(d)?t._d=d:a(m)?function(t){var e,n,r,i,a;if(0===t._f.length)return p(t).invalidFormat=!0,t._d=new Date(NaN);for(i=0;i<t._f.length;i++)a=0,e=v({},t),null!=t._useUTC&&(e._useUTC=t._useUTC),e._f=t._f[i],me(e),g(e)&&(a+=p(e).charsLeftOver,a+=10*p(e).unusedTokens.length,p(e).score=a,(null==r||a<r)&&(r=a,n=e));f(t,n||e)}(t):m?me(t):s(n=(e=t)._i)?e._d=new Date(i.now()):u(n)?e._d=new Date(n.valueOf()):"string"==typeof n?(r=e,null===(h=fe.exec(r._i))?(de(r),!1===r._isValid&&(delete r._isValid,ye(r),!1===r._isValid&&(delete r._isValid,i.createFromInputFallback(r)))):r._d=new Date(+h[1])):a(n)?(e._a=l(n.slice(0),(function(t){return parseInt(t,10)})),oe(e)):o(n)?function(t){if(!t._d){var e=R(t._i);t._a=l([e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],(function(t){return t&&parseInt(t,10)})),oe(t)}}(e):c(n)?e._d=new Date(n):i.createFromInputFallback(e),g(t)||(t._d=null),t))}function be(t,e,n,r,i){var s,c={};return!0!==n&&!1!==n||(r=n,n=void 0),(o(t)&&function(t){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(t).length;var e;for(e in t)if(t.hasOwnProperty(e))return!1;return!0}(t)||a(t)&&0===t.length)&&(t=void 0),c._isAMomentObject=!0,c._useUTC=c._isUTC=i,c._l=n,c._i=t,c._f=e,c._strict=r,(s=new _(ie(ve(c))))._nextDay&&(s.add(1,"d"),s._nextDay=void 0),s}function _e(t,e,n,r){return be(t,e,n,r,!1)}i.createFromInputFallback=E("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",(function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))})),i.ISO_8601=function(){},i.RFC_2822=function(){};var xe=E("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",(function(){var t=_e.apply(null,arguments);return this.isValid()&&t.isValid()?t<this?this:t:y()})),we=E("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",(function(){var t=_e.apply(null,arguments);return this.isValid()&&t.isValid()?this<t?this:t:y()}));function ke(t,e){var n,r;if(1===e.length&&a(e[0])&&(e=e[0]),!e.length)return _e();for(n=e[0],r=1;r<e.length;++r)e[r].isValid()&&!e[r][t](n)||(n=e[r]);return n}var Te=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Ce(t){var e=R(t),n=e.year||0,r=e.quarter||0,i=e.month||0,a=e.week||e.isoWeek||0,o=e.day||0,s=e.hour||0,c=e.minute||0,u=e.second||0,l=e.millisecond||0;this._isValid=function(t){for(var e in t)if(-1===vt.call(Te,e)||null!=t[e]&&isNaN(t[e]))return!1;for(var n=!1,r=0;r<Te.length;++r)if(t[Te[r]]){if(n)return!1;parseFloat(t[Te[r]])!==k(t[Te[r]])&&(n=!0)}return!0}(e),this._milliseconds=+l+1e3*u+6e4*c+1e3*s*60*60,this._days=+o+7*a,this._months=+i+3*r+12*n,this._data={},this._locale=re(),this._bubble()}function Ee(t){return t instanceof Ce}function Se(t){return t<0?-1*Math.round(-1*t):Math.round(t)}function Ae(t,e){q(t,0,0,(function(){var t=this.utcOffset(),n="+";return t<0&&(t=-t,n="-"),n+Y(~~(t/60),2)+e+Y(~~t%60,2)}))}Ae("Z",":"),Ae("ZZ",""),lt("Z",st),lt("ZZ",st),pt(["Z","ZZ"],(function(t,e,n){n._useUTC=!0,n._tzm=Ne(st,t)}));var Me=/([\+\-]|\d\d)/gi;function Ne(t,e){var n=(e||"").match(t);if(null===n)return null;var r=((n[n.length-1]||[])+"").match(Me)||["-",0,0],i=60*r[1]+k(r[2]);return 0===i?0:"+"===r[0]?i:-i}function De(t,e){var n,r;return e._isUTC?(n=e.clone(),r=(x(t)||u(t)?t.valueOf():_e(t).valueOf())-n.valueOf(),n._d.setTime(n._d.valueOf()+r),i.updateOffset(n,!1),n):_e(t).local()}function Be(t){return 15*-Math.round(t._d.getTimezoneOffset()/15)}function Le(){return!!this.isValid()&&this._isUTC&&0===this._offset}i.updateOffset=function(){};var Oe=/^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,Ie=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function Re(t,e){var n,r,i,a=t,o=null;return Ee(t)?a={ms:t._milliseconds,d:t._days,M:t._months}:c(t)?(a={},e?a[e]=t:a.milliseconds=t):(o=Oe.exec(t))?(n="-"===o[1]?-1:1,a={y:0,d:k(o[2])*n,h:k(o[3])*n,m:k(o[4])*n,s:k(o[5])*n,ms:k(Se(1e3*o[6]))*n}):(o=Ie.exec(t))?(n="-"===o[1]?-1:1,a={y:Fe(o[2],n),M:Fe(o[3],n),w:Fe(o[4],n),d:Fe(o[5],n),h:Fe(o[6],n),m:Fe(o[7],n),s:Fe(o[8],n)}):null==a?a={}:"object"==typeof a&&("from"in a||"to"in a)&&(i=function(t,e){var n;return t.isValid()&&e.isValid()?(e=De(e,t),t.isBefore(e)?n=Pe(t,e):((n=Pe(e,t)).milliseconds=-n.milliseconds,n.months=-n.months),n):{milliseconds:0,months:0}}(_e(a.from),_e(a.to)),(a={}).ms=i.milliseconds,a.M=i.months),r=new Ce(a),Ee(t)&&h(t,"_locale")&&(r._locale=t._locale),r}function Fe(t,e){var n=t&&parseFloat(t.replace(",","."));return(isNaN(n)?0:n)*e}function Pe(t,e){var n={};return n.months=e.month()-t.month()+12*(e.year()-t.year()),t.clone().add(n.months,"M").isAfter(e)&&--n.months,n.milliseconds=+e-+t.clone().add(n.months,"M"),n}function Ye(t,e){return function(n,r){var i;return null===r||isNaN(+r)||(M(e,"moment()."+e+"(period, number) is deprecated. Please use moment()."+e+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),i=n,n=r,r=i),je(this,Re(n="string"==typeof n?+n:n,r),t),this}}function je(t,e,n,r){var a=e._milliseconds,o=Se(e._days),s=Se(e._months);t.isValid()&&(r=null==r||r,s&&St(t,xt(t,"Month")+s*n),o&&wt(t,"Date",xt(t,"Date")+o*n),a&&t._d.setTime(t._d.valueOf()+a*n),r&&i.updateOffset(t,o||s))}Re.fn=Ce.prototype,Re.invalid=function(){return Re(NaN)};var Ue=Ye(1,"add"),ze=Ye(-1,"subtract");function $e(t,e){var n=12*(e.year()-t.year())+(e.month()-t.month()),r=t.clone().add(n,"months");return-(n+(e-r<0?(e-r)/(r-t.clone().add(n-1,"months")):(e-r)/(t.clone().add(n+1,"months")-r)))||0}function qe(t){var e;return void 0===t?this._locale._abbr:(null!=(e=re(t))&&(this._locale=e),this)}i.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",i.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var He=E("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",(function(t){return void 0===t?this.localeData():this.locale(t)}));function We(){return this._locale}var Ve=126227808e5;function Ge(t,e){return(t%e+e)%e}function Xe(t,e,n){return t<100&&0<=t?new Date(t+400,e,n)-Ve:new Date(t,e,n).valueOf()}function Ze(t,e,n){return t<100&&0<=t?Date.UTC(t+400,e,n)-Ve:Date.UTC(t,e,n)}function Qe(t,e){q(0,[t,t.length],0,e)}function Ke(t,e,n,r,i){var a;return null==t?It(this,r,i).year:((a=Rt(t,r,i))<e&&(e=a),function(t,e,n,r,i){var a=Ot(t,e,n,r,i),o=Bt(a.year,0,a.dayOfYear);return this.year(o.getUTCFullYear()),this.month(o.getUTCMonth()),this.date(o.getUTCDate()),this}.call(this,t,e,n,r,i))}q(0,["gg",2],0,(function(){return this.weekYear()%100})),q(0,["GG",2],0,(function(){return this.isoWeekYear()%100})),Qe("gggg","weekYear"),Qe("ggggg","weekYear"),Qe("GGGG","isoWeekYear"),Qe("GGGGG","isoWeekYear"),O("weekYear","gg"),O("isoWeekYear","GG"),P("weekYear",1),P("isoWeekYear",1),lt("G",at),lt("g",at),lt("GG",K,G),lt("gg",K,G),lt("GGGG",nt,Z),lt("gggg",nt,Z),lt("GGGGG",rt,Q),lt("ggggg",rt,Q),gt(["gggg","ggggg","GGGG","GGGGG"],(function(t,e,n,r){e[r.substr(0,2)]=k(t)})),gt(["gg","GG"],(function(t,e,n,r){e[r]=i.parseTwoDigitYear(t)})),q("Q",0,"Qo","quarter"),O("quarter","Q"),P("quarter",7),lt("Q",V),pt("Q",(function(t,e){e[1]=3*(k(t)-1)})),q("D",["DD",2],"Do","date"),O("date","D"),P("date",9),lt("D",K),lt("DD",K,G),lt("Do",(function(t,e){return t?e._dayOfMonthOrdinalParse||e._ordinalParse:e._dayOfMonthOrdinalParseLenient})),pt(["D","DD"],2),pt("Do",(function(t,e){e[2]=k(t.match(K)[0])}));var Je=_t("Date",!0);q("DDD",["DDDD",3],"DDDo","dayOfYear"),O("dayOfYear","DDD"),P("dayOfYear",4),lt("DDD",et),lt("DDDD",X),pt(["DDD","DDDD"],(function(t,e,n){n._dayOfYear=k(t)})),q("m",["mm",2],0,"minute"),O("minute","m"),P("minute",14),lt("m",K),lt("mm",K,G),pt(["m","mm"],4);var tn=_t("Minutes",!1);q("s",["ss",2],0,"second"),O("second","s"),P("second",15),lt("s",K),lt("ss",K,G),pt(["s","ss"],5);var en,nn=_t("Seconds",!1);for(q("S",0,0,(function(){return~~(this.millisecond()/100)})),q(0,["SS",2],0,(function(){return~~(this.millisecond()/10)})),q(0,["SSS",3],0,"millisecond"),q(0,["SSSS",4],0,(function(){return 10*this.millisecond()})),q(0,["SSSSS",5],0,(function(){return 100*this.millisecond()})),q(0,["SSSSSS",6],0,(function(){return 1e3*this.millisecond()})),q(0,["SSSSSSS",7],0,(function(){return 1e4*this.millisecond()})),q(0,["SSSSSSSS",8],0,(function(){return 1e5*this.millisecond()})),q(0,["SSSSSSSSS",9],0,(function(){return 1e6*this.millisecond()})),O("millisecond","ms"),P("millisecond",16),lt("S",et,V),lt("SS",et,G),lt("SSS",et,X),en="SSSS";en.length<=9;en+="S")lt(en,it);function rn(t,e){e[6]=k(1e3*("0."+t))}for(en="S";en.length<=9;en+="S")pt(en,rn);var an=_t("Milliseconds",!1);q("z",0,0,"zoneAbbr"),q("zz",0,0,"zoneName");var on=_.prototype;function sn(t){return t}on.add=Ue,on.calendar=function(t,e){var n=t||_e(),r=De(n,this).startOf("day"),a=i.calendarFormat(this,r)||"sameElse",o=e&&(N(e[a])?e[a].call(this,n):e[a]);return this.format(o||this.localeData().calendar(a,this,_e(n)))},on.clone=function(){return new _(this)},on.diff=function(t,e,n){var r,i,a;if(!this.isValid())return NaN;if(!(r=De(t,this)).isValid())return NaN;switch(i=6e4*(r.utcOffset()-this.utcOffset()),e=I(e)){case"year":a=$e(this,r)/12;break;case"month":a=$e(this,r);break;case"quarter":a=$e(this,r)/3;break;case"second":a=(this-r)/1e3;break;case"minute":a=(this-r)/6e4;break;case"hour":a=(this-r)/36e5;break;case"day":a=(this-r-i)/864e5;break;case"week":a=(this-r-i)/6048e5;break;default:a=this-r}return n?a:w(a)},on.endOf=function(t){var e;if(void 0===(t=I(t))||"millisecond"===t||!this.isValid())return this;var n=this._isUTC?Ze:Xe;switch(t){case"year":e=n(this.year()+1,0,1)-1;break;case"quarter":e=n(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":e=n(this.year(),this.month()+1,1)-1;break;case"week":e=n(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":e=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":e=n(this.year(),this.month(),this.date()+1)-1;break;case"hour":e=this._d.valueOf(),e+=36e5-Ge(e+(this._isUTC?0:6e4*this.utcOffset()),36e5)-1;break;case"minute":e=this._d.valueOf(),e+=6e4-Ge(e,6e4)-1;break;case"second":e=this._d.valueOf(),e+=1e3-Ge(e,1e3)-1}return this._d.setTime(e),i.updateOffset(this,!0),this},on.format=function(t){t||(t=this.isUtc()?i.defaultFormatUtc:i.defaultFormat);var e=H(this,t);return this.localeData().postformat(e)},on.from=function(t,e){return this.isValid()&&(x(t)&&t.isValid()||_e(t).isValid())?Re({to:this,from:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()},on.fromNow=function(t){return this.from(_e(),t)},on.to=function(t,e){return this.isValid()&&(x(t)&&t.isValid()||_e(t).isValid())?Re({from:this,to:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()},on.toNow=function(t){return this.to(_e(),t)},on.get=function(t){return N(this[t=I(t)])?this[t]():this},on.invalidAt=function(){return p(this).overflow},on.isAfter=function(t,e){var n=x(t)?t:_e(t);return!(!this.isValid()||!n.isValid())&&("millisecond"===(e=I(e)||"millisecond")?this.valueOf()>n.valueOf():n.valueOf()<this.clone().startOf(e).valueOf())},on.isBefore=function(t,e){var n=x(t)?t:_e(t);return!(!this.isValid()||!n.isValid())&&("millisecond"===(e=I(e)||"millisecond")?this.valueOf()<n.valueOf():this.clone().endOf(e).valueOf()<n.valueOf())},on.isBetween=function(t,e,n,r){var i=x(t)?t:_e(t),a=x(e)?e:_e(e);return!!(this.isValid()&&i.isValid()&&a.isValid())&&("("===(r=r||"()")[0]?this.isAfter(i,n):!this.isBefore(i,n))&&(")"===r[1]?this.isBefore(a,n):!this.isAfter(a,n))},on.isSame=function(t,e){var n,r=x(t)?t:_e(t);return!(!this.isValid()||!r.isValid())&&("millisecond"===(e=I(e)||"millisecond")?this.valueOf()===r.valueOf():(n=r.valueOf(),this.clone().startOf(e).valueOf()<=n&&n<=this.clone().endOf(e).valueOf()))},on.isSameOrAfter=function(t,e){return this.isSame(t,e)||this.isAfter(t,e)},on.isSameOrBefore=function(t,e){return this.isSame(t,e)||this.isBefore(t,e)},on.isValid=function(){return g(this)},on.lang=He,on.locale=qe,on.localeData=We,on.max=we,on.min=xe,on.parsingFlags=function(){return f({},p(this))},on.set=function(t,e){if("object"==typeof t)for(var n=function(t){var e=[];for(var n in t)e.push({unit:n,priority:F[n]});return e.sort((function(t,e){return t.priority-e.priority})),e}(t=R(t)),r=0;r<n.length;r++)this[n[r].unit](t[n[r].unit]);else if(N(this[t=I(t)]))return this[t](e);return this},on.startOf=function(t){var e;if(void 0===(t=I(t))||"millisecond"===t||!this.isValid())return this;var n=this._isUTC?Ze:Xe;switch(t){case"year":e=n(this.year(),0,1);break;case"quarter":e=n(this.year(),this.month()-this.month()%3,1);break;case"month":e=n(this.year(),this.month(),1);break;case"week":e=n(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":e=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":e=n(this.year(),this.month(),this.date());break;case"hour":e=this._d.valueOf(),e-=Ge(e+(this._isUTC?0:6e4*this.utcOffset()),36e5);break;case"minute":e=this._d.valueOf(),e-=Ge(e,6e4);break;case"second":e=this._d.valueOf(),e-=Ge(e,1e3)}return this._d.setTime(e),i.updateOffset(this,!0),this},on.subtract=ze,on.toArray=function(){var t=this;return[t.year(),t.month(),t.date(),t.hour(),t.minute(),t.second(),t.millisecond()]},on.toObject=function(){var t=this;return{years:t.year(),months:t.month(),date:t.date(),hours:t.hours(),minutes:t.minutes(),seconds:t.seconds(),milliseconds:t.milliseconds()}},on.toDate=function(){return new Date(this.valueOf())},on.toISOString=function(t){if(!this.isValid())return null;var e=!0!==t,n=e?this.clone().utc():this;return n.year()<0||9999<n.year()?H(n,e?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):N(Date.prototype.toISOString)?e?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",H(n,"Z")):H(n,e?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},on.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var t="moment",e="";this.isLocal()||(t=0===this.utcOffset()?"moment.utc":"moment.parseZone",e="Z");var n="["+t+'("]',r=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",i=e+'[")]';return this.format(n+r+"-MM-DD[T]HH:mm:ss.SSS"+i)},on.toJSON=function(){return this.isValid()?this.toISOString():null},on.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},on.unix=function(){return Math.floor(this.valueOf()/1e3)},on.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},on.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},on.year=bt,on.isLeapYear=function(){return mt(this.year())},on.weekYear=function(t){return Ke.call(this,t,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},on.isoWeekYear=function(t){return Ke.call(this,t,this.isoWeek(),this.isoWeekday(),1,4)},on.quarter=on.quarters=function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},on.month=At,on.daysInMonth=function(){return kt(this.year(),this.month())},on.week=on.weeks=function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},on.isoWeek=on.isoWeeks=function(t){var e=It(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},on.weeksInYear=function(){var t=this.localeData()._week;return Rt(this.year(),t.dow,t.doy)},on.isoWeeksInYear=function(){return Rt(this.year(),1,4)},on.date=Je,on.day=on.days=function(t){if(!this.isValid())return null!=t?this:NaN;var e,n,r=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(e=t,n=this.localeData(),t="string"!=typeof e?e:isNaN(e)?"number"==typeof(e=n.weekdaysParse(e))?e:null:parseInt(e,10),this.add(t-r,"d")):r},on.weekday=function(t){if(!this.isValid())return null!=t?this:NaN;var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")},on.isoWeekday=function(t){if(!this.isValid())return null!=t?this:NaN;if(null==t)return this.day()||7;var e,n,r=(e=t,n=this.localeData(),"string"==typeof e?n.weekdaysParse(e)%7||7:isNaN(e)?null:e);return this.day(this.day()%7?r:r-7)},on.dayOfYear=function(t){var e=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")},on.hour=on.hours=Xt,on.minute=on.minutes=tn,on.second=on.seconds=nn,on.millisecond=on.milliseconds=an,on.utcOffset=function(t,e,n){var r,a=this._offset||0;if(!this.isValid())return null!=t?this:NaN;if(null==t)return this._isUTC?a:Be(this);if("string"==typeof t){if(null===(t=Ne(st,t)))return this}else Math.abs(t)<16&&!n&&(t*=60);return!this._isUTC&&e&&(r=Be(this)),this._offset=t,this._isUTC=!0,null!=r&&this.add(r,"m"),a!==t&&(!e||this._changeInProgress?je(this,Re(t-a,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,i.updateOffset(this,!0),this._changeInProgress=null)),this},on.utc=function(t){return this.utcOffset(0,t)},on.local=function(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(Be(this),"m")),this},on.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var t=Ne(ot,this._i);null!=t?this.utcOffset(t):this.utcOffset(0,!0)}return this},on.hasAlignedHourOffset=function(t){return!!this.isValid()&&(t=t?_e(t).utcOffset():0,(this.utcOffset()-t)%60==0)},on.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},on.isLocal=function(){return!!this.isValid()&&!this._isUTC},on.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},on.isUtc=Le,on.isUTC=Le,on.zoneAbbr=function(){return this._isUTC?"UTC":""},on.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},on.dates=E("dates accessor is deprecated. Use date instead.",Je),on.months=E("months accessor is deprecated. Use month instead",At),on.years=E("years accessor is deprecated. Use year instead",bt),on.zone=E("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",(function(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()})),on.isDSTShifted=E("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",(function(){if(!s(this._isDSTShifted))return this._isDSTShifted;var t={};if(v(t,this),(t=ve(t))._a){var e=t._isUTC?d(t._a):_e(t._a);this._isDSTShifted=this.isValid()&&0<T(t._a,e.toArray())}else this._isDSTShifted=!1;return this._isDSTShifted}));var cn=B.prototype;function un(t,e,n,r){var i=re(),a=d().set(r,e);return i[n](a,t)}function ln(t,e,n){if(c(t)&&(e=t,t=void 0),t=t||"",null!=e)return un(t,e,n,"month");var r,i=[];for(r=0;r<12;r++)i[r]=un(t,r,n,"month");return i}function hn(t,e,n,r){"boolean"==typeof t?c(e)&&(n=e,e=void 0):(e=t,t=!1,c(n=e)&&(n=e,e=void 0)),e=e||"";var i,a=re(),o=t?a._week.dow:0;if(null!=n)return un(e,(n+o)%7,r,"day");var s=[];for(i=0;i<7;i++)s[i]=un(e,(i+o)%7,r,"day");return s}cn.calendar=function(t,e,n){var r=this._calendar[t]||this._calendar.sameElse;return N(r)?r.call(e,n):r},cn.longDateFormat=function(t){var e=this._longDateFormat[t],n=this._longDateFormat[t.toUpperCase()];return e||!n?e:(this._longDateFormat[t]=n.replace(/MMMM|MM|DD|dddd/g,(function(t){return t.slice(1)})),this._longDateFormat[t])},cn.invalidDate=function(){return this._invalidDate},cn.ordinal=function(t){return this._ordinal.replace("%d",t)},cn.preparse=sn,cn.postformat=sn,cn.relativeTime=function(t,e,n,r){var i=this._relativeTime[n];return N(i)?i(t,e,n,r):i.replace(/%d/i,t)},cn.pastFuture=function(t,e){var n=this._relativeTime[0<t?"future":"past"];return N(n)?n(e):n.replace(/%s/i,e)},cn.set=function(t){var e,n;for(n in t)N(e=t[n])?this[n]=e:this["_"+n]=e;this._config=t,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},cn.months=function(t,e){return t?a(this._months)?this._months[t.month()]:this._months[(this._months.isFormat||Tt).test(e)?"format":"standalone"][t.month()]:a(this._months)?this._months:this._months.standalone},cn.monthsShort=function(t,e){return t?a(this._monthsShort)?this._monthsShort[t.month()]:this._monthsShort[Tt.test(e)?"format":"standalone"][t.month()]:a(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},cn.monthsParse=function(t,e,n){var r,i,a;if(this._monthsParseExact)return function(t,e,n){var r,i,a,o=t.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],r=0;r<12;++r)a=d([2e3,r]),this._shortMonthsParse[r]=this.monthsShort(a,"").toLocaleLowerCase(),this._longMonthsParse[r]=this.months(a,"").toLocaleLowerCase();return n?"MMM"===e?-1!==(i=vt.call(this._shortMonthsParse,o))?i:null:-1!==(i=vt.call(this._longMonthsParse,o))?i:null:"MMM"===e?-1!==(i=vt.call(this._shortMonthsParse,o))||-1!==(i=vt.call(this._longMonthsParse,o))?i:null:-1!==(i=vt.call(this._longMonthsParse,o))||-1!==(i=vt.call(this._shortMonthsParse,o))?i:null}.call(this,t,e,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),r=0;r<12;r++){if(i=d([2e3,r]),n&&!this._longMonthsParse[r]&&(this._longMonthsParse[r]=new RegExp("^"+this.months(i,"").replace(".","")+"$","i"),this._shortMonthsParse[r]=new RegExp("^"+this.monthsShort(i,"").replace(".","")+"$","i")),n||this._monthsParse[r]||(a="^"+this.months(i,"")+"|^"+this.monthsShort(i,""),this._monthsParse[r]=new RegExp(a.replace(".",""),"i")),n&&"MMMM"===e&&this._longMonthsParse[r].test(t))return r;if(n&&"MMM"===e&&this._shortMonthsParse[r].test(t))return r;if(!n&&this._monthsParse[r].test(t))return r}},cn.monthsRegex=function(t){return this._monthsParseExact?(h(this,"_monthsRegex")||Dt.call(this),t?this._monthsStrictRegex:this._monthsRegex):(h(this,"_monthsRegex")||(this._monthsRegex=Nt),this._monthsStrictRegex&&t?this._monthsStrictRegex:this._monthsRegex)},cn.monthsShortRegex=function(t){return this._monthsParseExact?(h(this,"_monthsRegex")||Dt.call(this),t?this._monthsShortStrictRegex:this._monthsShortRegex):(h(this,"_monthsShortRegex")||(this._monthsShortRegex=Mt),this._monthsShortStrictRegex&&t?this._monthsShortStrictRegex:this._monthsShortRegex)},cn.week=function(t){return It(t,this._week.dow,this._week.doy).week},cn.firstDayOfYear=function(){return this._week.doy},cn.firstDayOfWeek=function(){return this._week.dow},cn.weekdays=function(t,e){var n=a(this._weekdays)?this._weekdays:this._weekdays[t&&!0!==t&&this._weekdays.isFormat.test(e)?"format":"standalone"];return!0===t?Ft(n,this._week.dow):t?n[t.day()]:n},cn.weekdaysMin=function(t){return!0===t?Ft(this._weekdaysMin,this._week.dow):t?this._weekdaysMin[t.day()]:this._weekdaysMin},cn.weekdaysShort=function(t){return!0===t?Ft(this._weekdaysShort,this._week.dow):t?this._weekdaysShort[t.day()]:this._weekdaysShort},cn.weekdaysParse=function(t,e,n){var r,i,a;if(this._weekdaysParseExact)return function(t,e,n){var r,i,a,o=t.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],r=0;r<7;++r)a=d([2e3,1]).day(r),this._minWeekdaysParse[r]=this.weekdaysMin(a,"").toLocaleLowerCase(),this._shortWeekdaysParse[r]=this.weekdaysShort(a,"").toLocaleLowerCase(),this._weekdaysParse[r]=this.weekdays(a,"").toLocaleLowerCase();return n?"dddd"===e?-1!==(i=vt.call(this._weekdaysParse,o))?i:null:"ddd"===e?-1!==(i=vt.call(this._shortWeekdaysParse,o))?i:null:-1!==(i=vt.call(this._minWeekdaysParse,o))?i:null:"dddd"===e?-1!==(i=vt.call(this._weekdaysParse,o))||-1!==(i=vt.call(this._shortWeekdaysParse,o))||-1!==(i=vt.call(this._minWeekdaysParse,o))?i:null:"ddd"===e?-1!==(i=vt.call(this._shortWeekdaysParse,o))||-1!==(i=vt.call(this._weekdaysParse,o))||-1!==(i=vt.call(this._minWeekdaysParse,o))?i:null:-1!==(i=vt.call(this._minWeekdaysParse,o))||-1!==(i=vt.call(this._weekdaysParse,o))||-1!==(i=vt.call(this._shortWeekdaysParse,o))?i:null}.call(this,t,e,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),r=0;r<7;r++){if(i=d([2e3,1]).day(r),n&&!this._fullWeekdaysParse[r]&&(this._fullWeekdaysParse[r]=new RegExp("^"+this.weekdays(i,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[r]=new RegExp("^"+this.weekdaysShort(i,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[r]=new RegExp("^"+this.weekdaysMin(i,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[r]||(a="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[r]=new RegExp(a.replace(".",""),"i")),n&&"dddd"===e&&this._fullWeekdaysParse[r].test(t))return r;if(n&&"ddd"===e&&this._shortWeekdaysParse[r].test(t))return r;if(n&&"dd"===e&&this._minWeekdaysParse[r].test(t))return r;if(!n&&this._weekdaysParse[r].test(t))return r}},cn.weekdaysRegex=function(t){return this._weekdaysParseExact?(h(this,"_weekdaysRegex")||qt.call(this),t?this._weekdaysStrictRegex:this._weekdaysRegex):(h(this,"_weekdaysRegex")||(this._weekdaysRegex=Ut),this._weekdaysStrictRegex&&t?this._weekdaysStrictRegex:this._weekdaysRegex)},cn.weekdaysShortRegex=function(t){return this._weekdaysParseExact?(h(this,"_weekdaysRegex")||qt.call(this),t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(h(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=zt),this._weekdaysShortStrictRegex&&t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},cn.weekdaysMinRegex=function(t){return this._weekdaysParseExact?(h(this,"_weekdaysRegex")||qt.call(this),t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(h(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=$t),this._weekdaysMinStrictRegex&&t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},cn.isPM=function(t){return"p"===(t+"").toLowerCase().charAt(0)},cn.meridiem=function(t,e,n){return 11<t?n?"pm":"PM":n?"am":"AM"},ee("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10;return t+(1===k(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")}}),i.lang=E("moment.lang is deprecated. Use moment.locale instead.",ee),i.langData=E("moment.langData is deprecated. Use moment.localeData instead.",re);var fn=Math.abs;function dn(t,e,n,r){var i=Re(e,n);return t._milliseconds+=r*i._milliseconds,t._days+=r*i._days,t._months+=r*i._months,t._bubble()}function pn(t){return t<0?Math.floor(t):Math.ceil(t)}function gn(t){return 4800*t/146097}function yn(t){return 146097*t/4800}function mn(t){return function(){return this.as(t)}}var vn=mn("ms"),bn=mn("s"),_n=mn("m"),xn=mn("h"),wn=mn("d"),kn=mn("w"),Tn=mn("M"),Cn=mn("Q"),En=mn("y");function Sn(t){return function(){return this.isValid()?this._data[t]:NaN}}var An=Sn("milliseconds"),Mn=Sn("seconds"),Nn=Sn("minutes"),Dn=Sn("hours"),Bn=Sn("days"),Ln=Sn("months"),On=Sn("years"),In=Math.round,Rn={ss:44,s:45,m:45,h:22,d:26,M:11},Fn=Math.abs;function Pn(t){return(0<t)-(t<0)||+t}function Yn(){if(!this.isValid())return this.localeData().invalidDate();var t,e,n=Fn(this._milliseconds)/1e3,r=Fn(this._days),i=Fn(this._months);e=w((t=w(n/60))/60),n%=60,t%=60;var a=w(i/12),o=i%=12,s=r,c=e,u=t,l=n?n.toFixed(3).replace(/\.?0+$/,""):"",h=this.asSeconds();if(!h)return"P0D";var f=h<0?"-":"",d=Pn(this._months)!==Pn(h)?"-":"",p=Pn(this._days)!==Pn(h)?"-":"",g=Pn(this._milliseconds)!==Pn(h)?"-":"";return f+"P"+(a?d+a+"Y":"")+(o?d+o+"M":"")+(s?p+s+"D":"")+(c||u||l?"T":"")+(c?g+c+"H":"")+(u?g+u+"M":"")+(l?g+l+"S":"")}var jn=Ce.prototype;return jn.isValid=function(){return this._isValid},jn.abs=function(){var t=this._data;return this._milliseconds=fn(this._milliseconds),this._days=fn(this._days),this._months=fn(this._months),t.milliseconds=fn(t.milliseconds),t.seconds=fn(t.seconds),t.minutes=fn(t.minutes),t.hours=fn(t.hours),t.months=fn(t.months),t.years=fn(t.years),this},jn.add=function(t,e){return dn(this,t,e,1)},jn.subtract=function(t,e){return dn(this,t,e,-1)},jn.as=function(t){if(!this.isValid())return NaN;var e,n,r=this._milliseconds;if("month"===(t=I(t))||"quarter"===t||"year"===t)switch(e=this._days+r/864e5,n=this._months+gn(e),t){case"month":return n;case"quarter":return n/3;case"year":return n/12}else switch(e=this._days+Math.round(yn(this._months)),t){case"week":return e/7+r/6048e5;case"day":return e+r/864e5;case"hour":return 24*e+r/36e5;case"minute":return 1440*e+r/6e4;case"second":return 86400*e+r/1e3;case"millisecond":return Math.floor(864e5*e)+r;default:throw new Error("Unknown unit "+t)}},jn.asMilliseconds=vn,jn.asSeconds=bn,jn.asMinutes=_n,jn.asHours=xn,jn.asDays=wn,jn.asWeeks=kn,jn.asMonths=Tn,jn.asQuarters=Cn,jn.asYears=En,jn.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*k(this._months/12):NaN},jn._bubble=function(){var t,e,n,r,i,a=this._milliseconds,o=this._days,s=this._months,c=this._data;return 0<=a&&0<=o&&0<=s||a<=0&&o<=0&&s<=0||(a+=864e5*pn(yn(s)+o),s=o=0),c.milliseconds=a%1e3,t=w(a/1e3),c.seconds=t%60,e=w(t/60),c.minutes=e%60,n=w(e/60),c.hours=n%24,s+=i=w(gn(o+=w(n/24))),o-=pn(yn(i)),r=w(s/12),s%=12,c.days=o,c.months=s,c.years=r,this},jn.clone=function(){return Re(this)},jn.get=function(t){return t=I(t),this.isValid()?this[t+"s"]():NaN},jn.milliseconds=An,jn.seconds=Mn,jn.minutes=Nn,jn.hours=Dn,jn.days=Bn,jn.weeks=function(){return w(this.days()/7)},jn.months=Ln,jn.years=On,jn.humanize=function(t){if(!this.isValid())return this.localeData().invalidDate();var e,n,r,i,a,o,s,c,u,l,h=this.localeData(),f=(e=!t,n=h,r=Re(this).abs(),i=In(r.as("s")),a=In(r.as("m")),o=In(r.as("h")),s=In(r.as("d")),c=In(r.as("M")),u=In(r.as("y")),(l=i<=Rn.ss&&["s",i]||i<Rn.s&&["ss",i]||a<=1&&["m"]||a<Rn.m&&["mm",a]||o<=1&&["h"]||o<Rn.h&&["hh",o]||s<=1&&["d"]||s<Rn.d&&["dd",s]||c<=1&&["M"]||c<Rn.M&&["MM",c]||u<=1&&["y"]||["yy",u])[2]=e,l[3]=0<+this,l[4]=n,function(t,e,n,r,i){return i.relativeTime(e||1,!!n,t,r)}.apply(null,l));return t&&(f=h.pastFuture(+this,f)),h.postformat(f)},jn.toISOString=Yn,jn.toString=Yn,jn.toJSON=Yn,jn.locale=qe,jn.localeData=We,jn.toIsoString=E("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Yn),jn.lang=He,q("X",0,0,"unix"),q("x",0,0,"valueOf"),lt("x",at),lt("X",/[+-]?\d+(\.\d{1,3})?/),pt("X",(function(t,e,n){n._d=new Date(1e3*parseFloat(t,10))})),pt("x",(function(t,e,n){n._d=new Date(k(t))})),i.version="2.24.0",e=_e,i.fn=on,i.min=function(){return ke("isBefore",[].slice.call(arguments,0))},i.max=function(){return ke("isAfter",[].slice.call(arguments,0))},i.now=function(){return Date.now?Date.now():+new Date},i.utc=d,i.unix=function(t){return _e(1e3*t)},i.months=function(t,e){return ln(t,e,"months")},i.isDate=u,i.locale=ee,i.invalid=y,i.duration=Re,i.isMoment=x,i.weekdays=function(t,e,n){return hn(t,e,n,"weekdays")},i.parseZone=function(){return _e.apply(null,arguments).parseZone()},i.localeData=re,i.isDuration=Ee,i.monthsShort=function(t,e){return ln(t,e,"monthsShort")},i.weekdaysMin=function(t,e,n){return hn(t,e,n,"weekdaysMin")},i.defineLocale=ne,i.updateLocale=function(t,e){if(null!=e){var n,r,i=Zt;null!=(r=te(t))&&(i=r._config),(n=new B(e=D(i,e))).parentLocale=Qt[t],Qt[t]=n,ee(t)}else null!=Qt[t]&&(null!=Qt[t].parentLocale?Qt[t]=Qt[t].parentLocale:null!=Qt[t]&&delete Qt[t]);return Qt[t]},i.locales=function(){return S(Qt)},i.weekdaysShort=function(t,e,n){return hn(t,e,n,"weekdaysShort")},i.normalizeUnits=I,i.relativeTimeRounding=function(t){return void 0===t?In:"function"==typeof t&&(In=t,!0)},i.relativeTimeThreshold=function(t,e){return void 0!==Rn[t]&&(void 0===e?Rn[t]:(Rn[t]=e,"s"===t&&(Rn.ss=e-1),!0))},i.calendarFormat=function(t,e){var n=t.diff(e,"days",!0);return n<-6?"sameElse":n<-1?"lastWeek":n<0?"lastDay":n<1?"sameDay":n<2?"nextDay":n<7?"nextWeek":"sameElse"},i.prototype=on,i.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},i}()},6470:t=>{"use strict";function e(t){if("string"!=typeof t)throw new TypeError("Path must be a string. Received "+JSON.stringify(t))}function n(t,e){for(var n,r="",i=0,a=-1,o=0,s=0;s<=t.length;++s){if(s<t.length)n=t.charCodeAt(s);else{if(47===n)break;n=47}if(47===n){if(a===s-1||1===o);else if(a!==s-1&&2===o){if(r.length<2||2!==i||46!==r.charCodeAt(r.length-1)||46!==r.charCodeAt(r.length-2))if(r.length>2){var c=r.lastIndexOf("/");if(c!==r.length-1){-1===c?(r="",i=0):i=(r=r.slice(0,c)).length-1-r.lastIndexOf("/"),a=s,o=0;continue}}else if(2===r.length||1===r.length){r="",i=0,a=s,o=0;continue}e&&(r.length>0?r+="/..":r="..",i=2)}else r.length>0?r+="/"+t.slice(a+1,s):r=t.slice(a+1,s),i=s-a-1;a=s,o=0}else 46===n&&-1!==o?++o:o=-1}return r}var r={resolve:function(){for(var t,r="",i=!1,a=arguments.length-1;a>=-1&&!i;a--){var o;a>=0?o=arguments[a]:(void 0===t&&(t=process.cwd()),o=t),e(o),0!==o.length&&(r=o+"/"+r,i=47===o.charCodeAt(0))}return r=n(r,!i),i?r.length>0?"/"+r:"/":r.length>0?r:"."},normalize:function(t){if(e(t),0===t.length)return".";var r=47===t.charCodeAt(0),i=47===t.charCodeAt(t.length-1);return 0!==(t=n(t,!r)).length||r||(t="."),t.length>0&&i&&(t+="/"),r?"/"+t:t},isAbsolute:function(t){return e(t),t.length>0&&47===t.charCodeAt(0)},join:function(){if(0===arguments.length)return".";for(var t,n=0;n<arguments.length;++n){var i=arguments[n];e(i),i.length>0&&(void 0===t?t=i:t+="/"+i)}return void 0===t?".":r.normalize(t)},relative:function(t,n){if(e(t),e(n),t===n)return"";if((t=r.resolve(t))===(n=r.resolve(n)))return"";for(var i=1;i<t.length&&47===t.charCodeAt(i);++i);for(var a=t.length,o=a-i,s=1;s<n.length&&47===n.charCodeAt(s);++s);for(var c=n.length-s,u=o<c?o:c,l=-1,h=0;h<=u;++h){if(h===u){if(c>u){if(47===n.charCodeAt(s+h))return n.slice(s+h+1);if(0===h)return n.slice(s+h)}else o>u&&(47===t.charCodeAt(i+h)?l=h:0===h&&(l=0));break}var f=t.charCodeAt(i+h);if(f!==n.charCodeAt(s+h))break;47===f&&(l=h)}var d="";for(h=i+l+1;h<=a;++h)h!==a&&47!==t.charCodeAt(h)||(0===d.length?d+="..":d+="/..");return d.length>0?d+n.slice(s+l):(s+=l,47===n.charCodeAt(s)&&++s,n.slice(s))},_makeLong:function(t){return t},dirname:function(t){if(e(t),0===t.length)return".";for(var n=t.charCodeAt(0),r=47===n,i=-1,a=!0,o=t.length-1;o>=1;--o)if(47===(n=t.charCodeAt(o))){if(!a){i=o;break}}else a=!1;return-1===i?r?"/":".":r&&1===i?"//":t.slice(0,i)},basename:function(t,n){if(void 0!==n&&"string"!=typeof n)throw new TypeError('"ext" argument must be a string');e(t);var r,i=0,a=-1,o=!0;if(void 0!==n&&n.length>0&&n.length<=t.length){if(n.length===t.length&&n===t)return"";var s=n.length-1,c=-1;for(r=t.length-1;r>=0;--r){var u=t.charCodeAt(r);if(47===u){if(!o){i=r+1;break}}else-1===c&&(o=!1,c=r+1),s>=0&&(u===n.charCodeAt(s)?-1==--s&&(a=r):(s=-1,a=c))}return i===a?a=c:-1===a&&(a=t.length),t.slice(i,a)}for(r=t.length-1;r>=0;--r)if(47===t.charCodeAt(r)){if(!o){i=r+1;break}}else-1===a&&(o=!1,a=r+1);return-1===a?"":t.slice(i,a)},extname:function(t){e(t);for(var n=-1,r=0,i=-1,a=!0,o=0,s=t.length-1;s>=0;--s){var c=t.charCodeAt(s);if(47!==c)-1===i&&(a=!1,i=s+1),46===c?-1===n?n=s:1!==o&&(o=1):-1!==n&&(o=-1);else if(!a){r=s+1;break}}return-1===n||-1===i||0===o||1===o&&n===i-1&&n===r+1?"":t.slice(n,i)},format:function(t){if(null===t||"object"!=typeof t)throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof t);return function(t,e){var n=e.dir||e.root,r=e.base||(e.name||"")+(e.ext||"");return n?n===e.root?n+r:n+"/"+r:r}(0,t)},parse:function(t){e(t);var n={root:"",dir:"",base:"",ext:"",name:""};if(0===t.length)return n;var r,i=t.charCodeAt(0),a=47===i;a?(n.root="/",r=1):r=0;for(var o=-1,s=0,c=-1,u=!0,l=t.length-1,h=0;l>=r;--l)if(47!==(i=t.charCodeAt(l)))-1===c&&(u=!1,c=l+1),46===i?-1===o?o=l:1!==h&&(h=1):-1!==o&&(h=-1);else if(!u){s=l+1;break}return-1===o||-1===c||0===h||1===h&&o===c-1&&o===s+1?-1!==c&&(n.base=n.name=0===s&&a?t.slice(1,c):t.slice(s,c)):(0===s&&a?(n.name=t.slice(1,o),n.base=t.slice(1,c)):(n.name=t.slice(s,o),n.base=t.slice(s,c)),n.ext=t.slice(o,c)),s>0?n.dir=t.slice(0,s-1):a&&(n.dir="/"),n},sep:"/",delimiter:":",win32:null,posix:null};r.posix=r,t.exports=r},8218:()=>{},8009:()=>{},5354:()=>{},6878:()=>{},8183:()=>{},1428:()=>{},4551:()=>{},8800:()=>{},1993:()=>{},3069:()=>{},9143:()=>{}},e={};function n(r){var i=e[r];if(void 0!==i)return i.exports;var a=e[r]={id:r,loaded:!1,exports:{}};return t[r].call(a.exports,a,a.exports,n),a.loaded=!0,a.exports}n.c=e,n.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return n.d(e,{a:e}),e},n.d=(t,e)=>{for(var r in e)n.o(e,r)&&!n.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),n.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.nmd=t=>(t.paths=[],t.children||(t.children=[]),t);var r=n(n.s=8968);return r.default})()));
//# sourceMappingURL=mermaid.min.js.map \ No newline at end of file
diff --git a/assets/lib/mermaid/mermaid.min.js.map b/assets/lib/mermaid/mermaid.min.js.map
new file mode 100644
index 00000000..cee967fe
--- /dev/null
+++ b/assets/lib/mermaid/mermaid.min.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"mermaid.min.js","mappings":"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AG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,EAAE,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAKC,GAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GA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AAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,I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AG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,GA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","sources":["webpack://mermaid/webpack/universalModuleDefinition","webpack://mermaid/./src/diagrams/class/parser/classDiagram.jison","webpack://mermaid/./src/diagrams/er/parser/erDiagram.jison","webpack://mermaid/./src/diagrams/flowchart/parser/flow.jison","webpack://mermaid/./src/diagrams/gantt/parser/gantt.jison","webpack://mermaid/./src/diagrams/git/parser/gitGraph.jison","webpack://mermaid/./src/diagrams/info/parser/info.jison","webpack://mermaid/./src/diagrams/pie/parser/pie.jison","webpack://mermaid/./src/diagrams/requirement/parser/requirementDiagram.jison","webpack://mermaid/./src/diagrams/sequence/parser/sequenceDiagram.jison","webpack://mermaid/./src/diagrams/state/parser/stateDiagram.jison","webpack://mermaid/./src/diagrams/user-journey/parser/journey.jison","webpack://mermaid/./node_modules/@braintree/sanitize-url/dist/index.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-node.js","webpack://mermaid/./src/logger.js","webpack://mermaid/./node_modules/d3/node_modules/d3-array/src/max.js","webpack://mermaid/./node_modules/d3/node_modules/d3-array/src/min.js","webpack://mermaid/./node_modules/d3-axis/src/identity.js","webpack://mermaid/./node_modules/d3-axis/src/axis.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selector.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/array.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selectorAll.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/matcher.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/selectChild.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/selectChildren.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/sparse.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/enter.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/constant.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/data.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/sort.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/namespaces.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/namespace.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/attr.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/window.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/style.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/property.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/classed.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/text.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/html.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/raise.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/lower.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/creator.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/insert.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/remove.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/clone.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/on.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/dispatch.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/index.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/select.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/selectAll.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/filter.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/exit.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/join.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/merge.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/order.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/call.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/nodes.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/node.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/size.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/empty.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/each.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/append.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/datum.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-selection/src/selection/iterator.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-dispatch/src/dispatch.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-timer/src/timer.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-timer/src/timeout.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/schedule.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-interpolate/src/number.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-interpolate/src/transform/decompose.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-interpolate/src/transform/parse.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-interpolate/src/transform/index.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/tween.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-color/src/define.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-color/src/color.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-interpolate/src/basis.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-interpolate/src/constant.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-interpolate/src/color.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-interpolate/src/rgb.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-interpolate/src/basisClosed.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-interpolate/src/string.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/interpolate.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/attr.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/attrTween.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/delay.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/duration.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/ease.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/on.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/selection.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/style.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/styleTween.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/textTween.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/index.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/select.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/selectAll.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/filter.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/merge.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/transition.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/text.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/remove.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/easeVarying.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/transition/end.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/selection/transition.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-ease/src/cubic.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/selection/index.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/selection/interrupt.js","webpack://mermaid/./node_modules/d3-brush/node_modules/d3-transition/src/interrupt.js","webpack://mermaid/./node_modules/d3-brush/src/brush.js","webpack://mermaid/./node_modules/d3/node_modules/d3-color/src/define.js","webpack://mermaid/./node_modules/d3/node_modules/d3-color/src/color.js","webpack://mermaid/./node_modules/d3/node_modules/d3-color/src/math.js","webpack://mermaid/./node_modules/d3/node_modules/d3-color/src/lab.js","webpack://mermaid/./node_modules/d3/node_modules/d3-interpolate/src/constant.js","webpack://mermaid/./node_modules/d3/node_modules/d3-interpolate/src/color.js","webpack://mermaid/./node_modules/d3/node_modules/d3-interpolate/src/hcl.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-array/src/ticks.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-array/src/ascending.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-array/src/bisector.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-array/src/bisect.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-array/src/number.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-color/src/define.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-color/src/color.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-interpolate/src/basis.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-interpolate/src/constant.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-interpolate/src/color.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-interpolate/src/rgb.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-interpolate/src/array.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-interpolate/src/date.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-interpolate/src/number.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-interpolate/src/object.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-interpolate/src/basisClosed.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-interpolate/src/string.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-interpolate/src/numberArray.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-interpolate/src/value.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-interpolate/src/round.js","webpack://mermaid/./node_modules/d3-scale/src/number.js","webpack://mermaid/./node_modules/d3-scale/src/continuous.js","webpack://mermaid/./node_modules/d3-scale/src/constant.js","webpack://mermaid/./node_modules/d3-scale/src/init.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-format/src/formatSpecifier.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-format/src/formatPrefixAuto.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-format/src/formatDecimal.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-format/src/exponent.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-format/src/formatRounded.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-format/src/formatTypes.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-format/src/identity.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-format/src/locale.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-format/src/defaultLocale.js","webpack://mermaid/./node_modules/d3-scale/src/linear.js","webpack://mermaid/./node_modules/d3-scale/src/tickFormat.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-format/src/precisionPrefix.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-format/src/precisionRound.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-format/src/precisionFixed.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-format/src/formatGroup.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-format/src/formatNumerals.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-format/src/formatTrim.js","webpack://mermaid/./node_modules/internmap/src/index.js","webpack://mermaid/./node_modules/d3-scale/src/ordinal.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-time/src/duration.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-time/src/interval.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-time/src/millisecond.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-time/src/second.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-time/src/minute.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-time/src/hour.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-time/src/day.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-time/src/week.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-time/src/month.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-time/src/year.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-time/src/utcMinute.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-time/src/utcHour.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-time/src/utcDay.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-time/src/utcWeek.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-time/src/utcMonth.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-time/src/utcYear.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-time/src/ticks.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-time-format/src/locale.js","webpack://mermaid/./node_modules/d3-scale/node_modules/d3-time-format/src/defaultLocale.js","webpack://mermaid/./node_modules/d3-scale/src/time.js","webpack://mermaid/./node_modules/d3-scale/src/nice.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selector.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/array.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selectorAll.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/matcher.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/selectChild.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/selectChildren.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/sparse.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/enter.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/constant.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/data.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/sort.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/namespaces.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/namespace.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/attr.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/window.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/style.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/property.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/classed.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/text.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/html.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/raise.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/lower.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/creator.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/insert.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/remove.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/clone.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/on.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/dispatch.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/index.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/select.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/selectAll.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/filter.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/exit.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/join.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/merge.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/order.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/call.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/nodes.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/node.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/size.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/empty.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/each.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/append.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/datum.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selection/iterator.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/select.js","webpack://mermaid/./node_modules/d3/node_modules/d3-selection/src/selectAll.js","webpack://mermaid/./node_modules/d3-shape/node_modules/d3-path/src/path.js","webpack://mermaid/./node_modules/d3-shape/src/constant.js","webpack://mermaid/./node_modules/d3-shape/src/math.js","webpack://mermaid/./node_modules/d3-shape/src/arc.js","webpack://mermaid/./node_modules/d3-shape/src/array.js","webpack://mermaid/./node_modules/d3-shape/src/curve/linear.js","webpack://mermaid/./node_modules/d3-shape/src/point.js","webpack://mermaid/./node_modules/d3-shape/src/line.js","webpack://mermaid/./node_modules/d3-shape/src/descending.js","webpack://mermaid/./node_modules/d3-shape/src/identity.js","webpack://mermaid/./node_modules/d3-shape/src/noop.js","webpack://mermaid/./node_modules/d3-shape/src/curve/basis.js","webpack://mermaid/./node_modules/d3-shape/src/curve/basisClosed.js","webpack://mermaid/./node_modules/d3-shape/src/curve/basisOpen.js","webpack://mermaid/./node_modules/d3-shape/src/curve/linearClosed.js","webpack://mermaid/./node_modules/d3-shape/src/curve/monotone.js","webpack://mermaid/./node_modules/d3-shape/src/curve/natural.js","webpack://mermaid/./node_modules/d3-shape/src/curve/step.js","webpack://mermaid/./node_modules/d3/node_modules/d3-time/src/interval.js","webpack://mermaid/./node_modules/d3/node_modules/d3-time/src/duration.js","webpack://mermaid/./node_modules/d3/node_modules/d3-time/src/utcWeek.js","webpack://mermaid/./node_modules/d3/node_modules/d3-time/src/utcDay.js","webpack://mermaid/./node_modules/d3/node_modules/d3-time/src/week.js","webpack://mermaid/./node_modules/d3/node_modules/d3-time/src/day.js","webpack://mermaid/./node_modules/d3/node_modules/d3-time/src/year.js","webpack://mermaid/./node_modules/d3/node_modules/d3-time/src/utcYear.js","webpack://mermaid/./node_modules/d3/node_modules/d3-time-format/src/locale.js","webpack://mermaid/./node_modules/d3/node_modules/d3-time-format/src/defaultLocale.js","webpack://mermaid/./node_modules/d3/node_modules/d3-dispatch/src/dispatch.js","webpack://mermaid/./node_modules/d3/node_modules/d3-timer/src/timer.js","webpack://mermaid/./node_modules/d3/node_modules/d3-timer/src/timeout.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/schedule.js","webpack://mermaid/./node_modules/d3/node_modules/d3-interpolate/src/number.js","webpack://mermaid/./node_modules/d3/node_modules/d3-interpolate/src/transform/decompose.js","webpack://mermaid/./node_modules/d3/node_modules/d3-interpolate/src/transform/parse.js","webpack://mermaid/./node_modules/d3/node_modules/d3-interpolate/src/transform/index.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/tween.js","webpack://mermaid/./node_modules/d3/node_modules/d3-interpolate/src/basis.js","webpack://mermaid/./node_modules/d3/node_modules/d3-interpolate/src/rgb.js","webpack://mermaid/./node_modules/d3/node_modules/d3-interpolate/src/basisClosed.js","webpack://mermaid/./node_modules/d3/node_modules/d3-interpolate/src/string.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/interpolate.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/attr.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/attrTween.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/delay.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/duration.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/ease.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/on.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/selection.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/style.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/styleTween.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/textTween.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/index.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/select.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/selectAll.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/filter.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/merge.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/transition.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/text.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/remove.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/easeVarying.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/transition/end.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/selection/transition.js","webpack://mermaid/./node_modules/d3/node_modules/d3-ease/src/cubic.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selector.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/array.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selectorAll.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/matcher.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/selection/index.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/selection/interrupt.js","webpack://mermaid/./node_modules/d3/node_modules/d3-transition/src/interrupt.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/selectChild.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/selectChildren.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/sparse.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/enter.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/constant.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/data.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/sort.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/namespaces.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/namespace.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/attr.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/window.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/style.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/property.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/classed.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/text.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/html.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/raise.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/lower.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/creator.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/insert.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/remove.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/clone.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/on.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/dispatch.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/index.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/select.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/selectAll.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/filter.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/exit.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/join.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/merge.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/order.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/call.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/nodes.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/node.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/size.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/empty.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/each.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/append.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/datum.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-selection/src/selection/iterator.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-dispatch/src/dispatch.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-timer/src/timer.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-timer/src/timeout.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/schedule.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-interpolate/src/number.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-interpolate/src/transform/decompose.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-interpolate/src/transform/parse.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-interpolate/src/transform/index.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/tween.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-color/src/define.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-color/src/color.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-interpolate/src/basis.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-interpolate/src/constant.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-interpolate/src/color.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-interpolate/src/rgb.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-interpolate/src/basisClosed.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-interpolate/src/string.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/interpolate.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/attr.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/attrTween.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/delay.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/duration.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/ease.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/on.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/selection.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/style.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/styleTween.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/textTween.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/index.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/select.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/selectAll.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/filter.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/merge.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/transition.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/text.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/remove.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/easeVarying.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/transition/end.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/selection/transition.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-ease/src/cubic.js","webpack://mermaid/./node_modules/d3-zoom/src/transform.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/selection/index.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/selection/interrupt.js","webpack://mermaid/./node_modules/d3-zoom/node_modules/d3-transition/src/interrupt.js","webpack://mermaid/./node_modules/stylis/src/Enum.js","webpack://mermaid/./node_modules/stylis/src/Utility.js","webpack://mermaid/./node_modules/stylis/src/Serializer.js","webpack://mermaid/./node_modules/stylis/src/Tokenizer.js","webpack://mermaid/./node_modules/stylis/src/Parser.js","webpack://mermaid/./src/diagrams/common/common.js","webpack://mermaid/./node_modules/khroma/dist/utils/channel.js","webpack://mermaid/./node_modules/khroma/dist/utils/lang.js","webpack://mermaid/./node_modules/khroma/dist/utils/unit.js","webpack://mermaid/./node_modules/khroma/dist/utils/index.js","webpack://mermaid/./node_modules/khroma/dist/constants.js","webpack://mermaid/./node_modules/khroma/dist/channels/reusable.js","webpack://mermaid/./node_modules/khroma/dist/channels/index.js","webpack://mermaid/./node_modules/khroma/dist/channels/type.js","webpack://mermaid/./node_modules/khroma/dist/color/hex.js","webpack://mermaid/./node_modules/khroma/dist/color/hsl.js","webpack://mermaid/./node_modules/khroma/dist/color/keyword.js","webpack://mermaid/./node_modules/khroma/dist/color/rgb.js","webpack://mermaid/./node_modules/khroma/dist/color/index.js","webpack://mermaid/./node_modules/khroma/dist/methods/change.js","webpack://mermaid/./node_modules/khroma/dist/methods/adjust.js","webpack://mermaid/./node_modules/khroma/dist/methods/rgba.js","webpack://mermaid/./node_modules/khroma/dist/methods/invert.js","webpack://mermaid/./node_modules/khroma/dist/methods/mix.js","webpack://mermaid/./node_modules/khroma/dist/methods/adjust_channel.js","webpack://mermaid/./node_modules/khroma/dist/methods/darken.js","webpack://mermaid/./node_modules/khroma/dist/methods/lighten.js","webpack://mermaid/./src/themes/theme-helpers.js","webpack://mermaid/./src/themes/theme-base.js","webpack://mermaid/./src/themes/theme-dark.js","webpack://mermaid/./src/themes/theme-default.js","webpack://mermaid/./src/themes/theme-forest.js","webpack://mermaid/./src/themes/theme-neutral.js","webpack://mermaid/./src/themes/index.js","webpack://mermaid/./src/defaultConfig.js","webpack://mermaid/./src/utils.js","webpack://mermaid/./src/config.js","webpack://mermaid/./src/commonDb.js","webpack://mermaid/./src/diagrams/class/classDb.js","webpack://mermaid/./src/diagrams/class/svgDraw.js","webpack://mermaid/./src/accessibility.js","webpack://mermaid/./src/diagrams/class/classRenderer.js","webpack://mermaid/./src/dagre-wrapper/markers.js","webpack://mermaid/./src/dagre-wrapper/createLabel.js","webpack://mermaid/./src/dagre-wrapper/shapes/util.js","webpack://mermaid/./src/dagre-wrapper/mermaid-graphlib.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-ellipse.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-line.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-rect.js","webpack://mermaid/./src/dagre-wrapper/intersect/index.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-circle.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-polygon.js","webpack://mermaid/./src/dagre-wrapper/nodes.js","webpack://mermaid/./src/dagre-wrapper/shapes/note.js","webpack://mermaid/./src/dagre-wrapper/clusters.js","webpack://mermaid/./src/dagre-wrapper/edges.js","webpack://mermaid/./src/dagre-wrapper/index.js","webpack://mermaid/./src/diagrams/class/classRenderer-v2.js","webpack://mermaid/./src/diagrams/er/erDb.js","webpack://mermaid/./src/diagrams/er/erMarkers.js","webpack://mermaid/./src/diagrams/er/erRenderer.js","webpack://mermaid/./src/diagrams/flowchart/flowDb.js","webpack://mermaid/./src/diagrams/flowchart/flowChartShapes.js","webpack://mermaid/./src/diagrams/flowchart/flowRenderer.js","webpack://mermaid/./src/diagrams/flowchart/flowRenderer-v2.js","webpack://mermaid/./src/diagrams/gantt/ganttDb.js","webpack://mermaid/./src/diagrams/gantt/ganttRenderer.js","webpack://mermaid/./src/diagrams/git/gitGraphAst.js","webpack://mermaid/./src/diagrams/git/gitGraphRenderer.js","webpack://mermaid/./src/diagrams/info/infoDb.js","webpack://mermaid/./src/diagrams/info/infoRenderer.js","webpack://mermaid/./src/diagrams/pie/pieDb.js","webpack://mermaid/./src/diagrams/pie/pieRenderer.js","webpack://mermaid/./node_modules/d3-shape/src/pie.js","webpack://mermaid/./src/diagrams/requirement/requirementDb.js","webpack://mermaid/./src/diagrams/requirement/requirementMarkers.js","webpack://mermaid/./src/diagrams/requirement/requirementRenderer.js","webpack://mermaid/./src/diagrams/sequence/sequenceDb.js","webpack://mermaid/./src/interactionDb.js","webpack://mermaid/./src/diagrams/sequence/svgDraw.js","webpack://mermaid/./src/diagrams/sequence/sequenceRenderer.js","webpack://mermaid/./src/diagrams/state/stateDb.js","webpack://mermaid/./src/diagrams/state/id-cache.js","webpack://mermaid/./src/diagrams/state/shapes.js","webpack://mermaid/./src/diagrams/state/stateRenderer.js","webpack://mermaid/./src/diagrams/state/stateRenderer-v2.js","webpack://mermaid/./src/diagrams/user-journey/journeyDb.js","webpack://mermaid/./src/diagrams/user-journey/svgDraw.js","webpack://mermaid/./src/diagrams/user-journey/journeyRenderer.js","webpack://mermaid/./src/errorRenderer.js","webpack://mermaid/./src/diagrams/class/styles.js","webpack://mermaid/./src/diagrams/flowchart/styles.js","webpack://mermaid/./src/diagrams/state/styles.js","webpack://mermaid/./src/styles.js","webpack://mermaid/./src/diagrams/sequence/styles.js","webpack://mermaid/./src/diagrams/gantt/styles.js","webpack://mermaid/./src/diagrams/git/styles.js","webpack://mermaid/./src/diagrams/info/styles.js","webpack://mermaid/./src/diagrams/pie/styles.js","webpack://mermaid/./src/diagrams/er/styles.js","webpack://mermaid/./src/diagrams/user-journey/styles.js","webpack://mermaid/./src/diagrams/requirement/styles.js","webpack://mermaid/./src/mermaidAPI.js","webpack://mermaid/./src/mermaid.js","webpack://mermaid/./node_modules/dagre-d3/index.js","webpack://mermaid/./node_modules/dagre-d3/lib/arrows.js","webpack://mermaid/./node_modules/dagre-d3/lib/create-clusters.js","webpack://mermaid/./node_modules/dagre-d3/lib/create-edge-labels.js","webpack://mermaid/./node_modules/dagre-d3/lib/create-edge-paths.js","webpack://mermaid/./node_modules/dagre-d3/lib/create-nodes.js","webpack://mermaid/./node_modules/dagre-d3/lib/d3.js","webpack://mermaid/./node_modules/dagre-d3/lib/dagre.js","webpack://mermaid/./node_modules/dagre-d3/lib/graphlib.js","webpack://mermaid/./node_modules/dagre-d3/lib/intersect/index.js","webpack://mermaid/./node_modules/dagre-d3/lib/intersect/intersect-circle.js","webpack://mermaid/./node_modules/dagre-d3/lib/intersect/intersect-ellipse.js","webpack://mermaid/./node_modules/dagre-d3/lib/intersect/intersect-line.js","webpack://mermaid/./node_modules/dagre-d3/lib/intersect/intersect-node.js","webpack://mermaid/./node_modules/dagre-d3/lib/intersect/intersect-polygon.js","webpack://mermaid/./node_modules/dagre-d3/lib/intersect/intersect-rect.js","webpack://mermaid/./node_modules/dagre-d3/lib/label/add-html-label.js","webpack://mermaid/./node_modules/dagre-d3/lib/label/add-label.js","webpack://mermaid/./node_modules/dagre-d3/lib/label/add-svg-label.js","webpack://mermaid/./node_modules/dagre-d3/lib/label/add-text-label.js","webpack://mermaid/./node_modules/dagre-d3/lib/lodash.js","webpack://mermaid/./node_modules/dagre-d3/lib/position-clusters.js","webpack://mermaid/./node_modules/dagre-d3/lib/position-edge-labels.js","webpack://mermaid/./node_modules/dagre-d3/lib/position-nodes.js","webpack://mermaid/./node_modules/dagre-d3/lib/render.js","webpack://mermaid/./node_modules/dagre-d3/lib/shapes.js","webpack://mermaid/./node_modules/dagre-d3/lib/util.js","webpack://mermaid/./node_modules/dagre-d3/lib/version.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3/dist/package.js","webpack://mermaid/./node_modules/d3-array/src/ascending.js","webpack://mermaid/./node_modules/d3-array/src/bisector.js","webpack://mermaid/./node_modules/d3-array/src/bisect.js","webpack://mermaid/./node_modules/d3-array/src/pairs.js","webpack://mermaid/./node_modules/d3-array/src/cross.js","webpack://mermaid/./node_modules/d3-array/src/descending.js","webpack://mermaid/./node_modules/d3-array/src/number.js","webpack://mermaid/./node_modules/d3-array/src/variance.js","webpack://mermaid/./node_modules/d3-array/src/deviation.js","webpack://mermaid/./node_modules/d3-array/src/extent.js","webpack://mermaid/./node_modules/d3-array/src/array.js","webpack://mermaid/./node_modules/d3-array/src/constant.js","webpack://mermaid/./node_modules/d3-array/src/identity.js","webpack://mermaid/./node_modules/d3-array/src/range.js","webpack://mermaid/./node_modules/d3-array/src/ticks.js","webpack://mermaid/./node_modules/d3-array/src/threshold/sturges.js","webpack://mermaid/./node_modules/d3-array/src/histogram.js","webpack://mermaid/./node_modules/d3-array/src/quantile.js","webpack://mermaid/./node_modules/d3-array/src/threshold/freedmanDiaconis.js","webpack://mermaid/./node_modules/d3-array/src/threshold/scott.js","webpack://mermaid/./node_modules/d3-array/src/max.js","webpack://mermaid/./node_modules/d3-array/src/mean.js","webpack://mermaid/./node_modules/d3-array/src/median.js","webpack://mermaid/./node_modules/d3-array/src/merge.js","webpack://mermaid/./node_modules/d3-array/src/min.js","webpack://mermaid/./node_modules/d3-array/src/permute.js","webpack://mermaid/./node_modules/d3-array/src/scan.js","webpack://mermaid/./node_modules/d3-array/src/shuffle.js","webpack://mermaid/./node_modules/d3-array/src/sum.js","webpack://mermaid/./node_modules/d3-array/src/transpose.js","webpack://mermaid/./node_modules/d3-array/src/zip.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-axis/src/array.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-axis/src/identity.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-axis/src/axis.js","webpack://mermaid/./node_modules/d3-dispatch/src/dispatch.js","webpack://mermaid/./node_modules/d3-selection/src/selector.js","webpack://mermaid/./node_modules/d3-selection/src/selectorAll.js","webpack://mermaid/./node_modules/d3-selection/src/matcher.js","webpack://mermaid/./node_modules/d3-selection/src/selection/sparse.js","webpack://mermaid/./node_modules/d3-selection/src/selection/enter.js","webpack://mermaid/./node_modules/d3-selection/src/selection/data.js","webpack://mermaid/./node_modules/d3-selection/src/selection/sort.js","webpack://mermaid/./node_modules/d3-selection/src/namespaces.js","webpack://mermaid/./node_modules/d3-selection/src/namespace.js","webpack://mermaid/./node_modules/d3-selection/src/selection/attr.js","webpack://mermaid/./node_modules/d3-selection/src/window.js","webpack://mermaid/./node_modules/d3-selection/src/selection/style.js","webpack://mermaid/./node_modules/d3-selection/src/selection/property.js","webpack://mermaid/./node_modules/d3-selection/src/selection/classed.js","webpack://mermaid/./node_modules/d3-selection/src/selection/text.js","webpack://mermaid/./node_modules/d3-selection/src/selection/html.js","webpack://mermaid/./node_modules/d3-selection/src/selection/raise.js","webpack://mermaid/./node_modules/d3-selection/src/selection/lower.js","webpack://mermaid/./node_modules/d3-selection/src/creator.js","webpack://mermaid/./node_modules/d3-selection/src/selection/insert.js","webpack://mermaid/./node_modules/d3-selection/src/selection/remove.js","webpack://mermaid/./node_modules/d3-selection/src/selection/clone.js","webpack://mermaid/./node_modules/d3-selection/src/selection/on.js","webpack://mermaid/./node_modules/d3-selection/src/selection/dispatch.js","webpack://mermaid/./node_modules/d3-selection/src/selection/index.js","webpack://mermaid/./node_modules/d3-selection/src/selection/select.js","webpack://mermaid/./node_modules/d3-selection/src/selection/selectAll.js","webpack://mermaid/./node_modules/d3-selection/src/selection/filter.js","webpack://mermaid/./node_modules/d3-selection/src/constant.js","webpack://mermaid/./node_modules/d3-selection/src/selection/exit.js","webpack://mermaid/./node_modules/d3-selection/src/selection/join.js","webpack://mermaid/./node_modules/d3-selection/src/selection/merge.js","webpack://mermaid/./node_modules/d3-selection/src/selection/order.js","webpack://mermaid/./node_modules/d3-selection/src/selection/call.js","webpack://mermaid/./node_modules/d3-selection/src/selection/nodes.js","webpack://mermaid/./node_modules/d3-selection/src/selection/node.js","webpack://mermaid/./node_modules/d3-selection/src/selection/size.js","webpack://mermaid/./node_modules/d3-selection/src/selection/empty.js","webpack://mermaid/./node_modules/d3-selection/src/selection/each.js","webpack://mermaid/./node_modules/d3-selection/src/selection/append.js","webpack://mermaid/./node_modules/d3-selection/src/selection/datum.js","webpack://mermaid/./node_modules/d3-selection/src/select.js","webpack://mermaid/./node_modules/d3-drag/src/noevent.js","webpack://mermaid/./node_modules/d3-drag/src/nodrag.js","webpack://mermaid/./node_modules/d3-color/src/define.js","webpack://mermaid/./node_modules/d3-color/src/color.js","webpack://mermaid/./node_modules/d3-interpolate/src/basis.js","webpack://mermaid/./node_modules/d3-interpolate/src/basisClosed.js","webpack://mermaid/./node_modules/d3-interpolate/src/constant.js","webpack://mermaid/./node_modules/d3-interpolate/src/color.js","webpack://mermaid/./node_modules/d3-interpolate/src/rgb.js","webpack://mermaid/./node_modules/d3-interpolate/src/numberArray.js","webpack://mermaid/./node_modules/d3-interpolate/src/array.js","webpack://mermaid/./node_modules/d3-interpolate/src/date.js","webpack://mermaid/./node_modules/d3-interpolate/src/number.js","webpack://mermaid/./node_modules/d3-interpolate/src/object.js","webpack://mermaid/./node_modules/d3-interpolate/src/string.js","webpack://mermaid/./node_modules/d3-interpolate/src/value.js","webpack://mermaid/./node_modules/d3-selection/src/sourceEvent.js","webpack://mermaid/./node_modules/d3-selection/src/point.js","webpack://mermaid/./node_modules/d3-selection/src/touch.js","webpack://mermaid/./node_modules/d3-selection/src/mouse.js","webpack://mermaid/./node_modules/d3-timer/src/timer.js","webpack://mermaid/./node_modules/d3-timer/src/timeout.js","webpack://mermaid/./node_modules/d3-transition/src/transition/schedule.js","webpack://mermaid/./node_modules/d3-transition/src/interrupt.js","webpack://mermaid/./node_modules/d3-interpolate/src/transform/decompose.js","webpack://mermaid/./node_modules/d3-interpolate/src/transform/parse.js","webpack://mermaid/./node_modules/d3-interpolate/src/transform/index.js","webpack://mermaid/./node_modules/d3-transition/src/transition/tween.js","webpack://mermaid/./node_modules/d3-transition/src/transition/interpolate.js","webpack://mermaid/./node_modules/d3-transition/src/transition/attr.js","webpack://mermaid/./node_modules/d3-transition/src/transition/attrTween.js","webpack://mermaid/./node_modules/d3-transition/src/transition/delay.js","webpack://mermaid/./node_modules/d3-transition/src/transition/duration.js","webpack://mermaid/./node_modules/d3-transition/src/transition/ease.js","webpack://mermaid/./node_modules/d3-transition/src/transition/on.js","webpack://mermaid/./node_modules/d3-transition/src/transition/selection.js","webpack://mermaid/./node_modules/d3-transition/src/transition/style.js","webpack://mermaid/./node_modules/d3-transition/src/transition/styleTween.js","webpack://mermaid/./node_modules/d3-transition/src/transition/textTween.js","webpack://mermaid/./node_modules/d3-transition/src/transition/index.js","webpack://mermaid/./node_modules/d3-ease/src/cubic.js","webpack://mermaid/./node_modules/d3-transition/src/transition/select.js","webpack://mermaid/./node_modules/d3-transition/src/transition/selectAll.js","webpack://mermaid/./node_modules/d3-transition/src/transition/filter.js","webpack://mermaid/./node_modules/d3-transition/src/transition/merge.js","webpack://mermaid/./node_modules/d3-transition/src/transition/transition.js","webpack://mermaid/./node_modules/d3-transition/src/transition/text.js","webpack://mermaid/./node_modules/d3-transition/src/transition/remove.js","webpack://mermaid/./node_modules/d3-transition/src/transition/end.js","webpack://mermaid/./node_modules/d3-transition/src/selection/transition.js","webpack://mermaid/./node_modules/d3-transition/src/selection/index.js","webpack://mermaid/./node_modules/d3-transition/src/selection/interrupt.js","webpack://mermaid/./node_modules/d3-transition/src/active.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-brush/src/constant.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-brush/src/event.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-brush/src/noevent.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-brush/src/brush.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-chord/src/math.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-chord/src/chord.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-chord/src/array.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-chord/src/constant.js","webpack://mermaid/./node_modules/d3-path/src/path.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-chord/src/ribbon.js","webpack://mermaid/./node_modules/d3-collection/src/map.js","webpack://mermaid/./node_modules/d3-collection/src/nest.js","webpack://mermaid/./node_modules/d3-collection/src/set.js","webpack://mermaid/./node_modules/d3-collection/src/keys.js","webpack://mermaid/./node_modules/d3-collection/src/values.js","webpack://mermaid/./node_modules/d3-collection/src/entries.js","webpack://mermaid/./node_modules/d3-color/src/math.js","webpack://mermaid/./node_modules/d3-color/src/lab.js","webpack://mermaid/./node_modules/d3-color/src/cubehelix.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-contour/src/array.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-contour/src/ascending.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-contour/src/constant.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-contour/src/contains.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-contour/src/noop.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-contour/src/contours.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-contour/src/area.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-contour/src/blur.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-contour/src/density.js","webpack://mermaid/./node_modules/d3-drag/src/constant.js","webpack://mermaid/./node_modules/d3-drag/src/event.js","webpack://mermaid/./node_modules/d3-drag/src/drag.js","webpack://mermaid/./node_modules/d3-dsv/src/dsv.js","webpack://mermaid/./node_modules/d3-dsv/src/csv.js","webpack://mermaid/./node_modules/d3-dsv/src/tsv.js","webpack://mermaid/./node_modules/d3-dsv/src/autoType.js","webpack://mermaid/./node_modules/d3-ease/src/linear.js","webpack://mermaid/./node_modules/d3-ease/src/quad.js","webpack://mermaid/./node_modules/d3-ease/src/poly.js","webpack://mermaid/./node_modules/d3-ease/src/sin.js","webpack://mermaid/./node_modules/d3-ease/src/math.js","webpack://mermaid/./node_modules/d3-ease/src/exp.js","webpack://mermaid/./node_modules/d3-ease/src/circle.js","webpack://mermaid/./node_modules/d3-ease/src/bounce.js","webpack://mermaid/./node_modules/d3-ease/src/back.js","webpack://mermaid/./node_modules/d3-ease/src/elastic.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-fetch/src/blob.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-fetch/src/buffer.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-fetch/src/text.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-fetch/src/dsv.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-fetch/src/image.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-fetch/src/json.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-fetch/src/xml.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-force/src/center.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-force/src/constant.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-force/src/jiggle.js","webpack://mermaid/./node_modules/d3-quadtree/src/add.js","webpack://mermaid/./node_modules/d3-quadtree/src/quad.js","webpack://mermaid/./node_modules/d3-quadtree/src/x.js","webpack://mermaid/./node_modules/d3-quadtree/src/y.js","webpack://mermaid/./node_modules/d3-quadtree/src/quadtree.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-force/src/collide.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-force/src/link.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-force/src/simulation.js","webpack://mermaid/./node_modules/d3-quadtree/src/cover.js","webpack://mermaid/./node_modules/d3-quadtree/src/data.js","webpack://mermaid/./node_modules/d3-quadtree/src/extent.js","webpack://mermaid/./node_modules/d3-quadtree/src/find.js","webpack://mermaid/./node_modules/d3-quadtree/src/remove.js","webpack://mermaid/./node_modules/d3-quadtree/src/root.js","webpack://mermaid/./node_modules/d3-quadtree/src/size.js","webpack://mermaid/./node_modules/d3-quadtree/src/visit.js","webpack://mermaid/./node_modules/d3-quadtree/src/visitAfter.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-force/src/manyBody.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-force/src/radial.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-force/src/x.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-force/src/y.js","webpack://mermaid/./node_modules/d3-format/src/formatDecimal.js","webpack://mermaid/./node_modules/d3-format/src/exponent.js","webpack://mermaid/./node_modules/d3-format/src/formatSpecifier.js","webpack://mermaid/./node_modules/d3-format/src/formatPrefixAuto.js","webpack://mermaid/./node_modules/d3-format/src/formatRounded.js","webpack://mermaid/./node_modules/d3-format/src/formatTypes.js","webpack://mermaid/./node_modules/d3-format/src/identity.js","webpack://mermaid/./node_modules/d3-format/src/locale.js","webpack://mermaid/./node_modules/d3-format/src/defaultLocale.js","webpack://mermaid/./node_modules/d3-format/src/formatGroup.js","webpack://mermaid/./node_modules/d3-format/src/formatNumerals.js","webpack://mermaid/./node_modules/d3-format/src/formatTrim.js","webpack://mermaid/./node_modules/d3-format/src/precisionFixed.js","webpack://mermaid/./node_modules/d3-format/src/precisionPrefix.js","webpack://mermaid/./node_modules/d3-format/src/precisionRound.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/adder.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/math.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/noop.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/stream.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/area.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/cartesian.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/bounds.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/centroid.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/constant.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/compose.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/rotation.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/circle.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/clip/buffer.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/pointEqual.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/clip/rejoin.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/polygonContains.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/clip/index.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/clip/antimeridian.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/clip/circle.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/clip/rectangle.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/clip/line.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/clip/extent.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/length.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/distance.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/contains.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/graticule.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/interpolate.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/identity.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/path/area.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/path/bounds.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/path/centroid.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/path/context.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/path/measure.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/path/string.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/path/index.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/transform.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/fit.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/resample.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/index.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/conic.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/conicEqualArea.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/cylindricalEqualArea.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/albers.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/albersUsa.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/azimuthal.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/azimuthalEqualArea.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/azimuthalEquidistant.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/mercator.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/conicConformal.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/equirectangular.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/conicEquidistant.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/equalEarth.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/gnomonic.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/identity.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/naturalEarth1.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/orthographic.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/stereographic.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-geo/src/projection/transverseMercator.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/cluster.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/hierarchy/count.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/hierarchy/index.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/hierarchy/each.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/hierarchy/sum.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/hierarchy/sort.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/hierarchy/path.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/hierarchy/ancestors.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/hierarchy/descendants.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/hierarchy/leaves.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/hierarchy/links.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/array.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/pack/enclose.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/pack/siblings.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/accessors.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/constant.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/pack/index.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/treemap/round.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/treemap/dice.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/partition.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/stratify.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/tree.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/treemap/slice.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/treemap/squarify.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/treemap/index.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/treemap/binary.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/treemap/sliceDice.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-hierarchy/src/treemap/resquarify.js","webpack://mermaid/./node_modules/d3-interpolate/src/discrete.js","webpack://mermaid/./node_modules/d3-interpolate/src/hue.js","webpack://mermaid/./node_modules/d3-interpolate/src/round.js","webpack://mermaid/./node_modules/d3-interpolate/src/zoom.js","webpack://mermaid/./node_modules/d3-interpolate/src/hsl.js","webpack://mermaid/./node_modules/d3-interpolate/src/lab.js","webpack://mermaid/./node_modules/d3-interpolate/src/hcl.js","webpack://mermaid/./node_modules/d3-interpolate/src/cubehelix.js","webpack://mermaid/./node_modules/d3-interpolate/src/piecewise.js","webpack://mermaid/./node_modules/d3-interpolate/src/quantize.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-polygon/src/area.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-polygon/src/centroid.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-polygon/src/cross.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-polygon/src/hull.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-polygon/src/contains.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-polygon/src/length.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-random/src/defaultSource.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-random/src/uniform.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-random/src/normal.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-random/src/logNormal.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-random/src/irwinHall.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-random/src/bates.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-random/src/exponential.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/init.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/array.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/ordinal.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/band.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/number.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/continuous.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/constant.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/tickFormat.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/linear.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/identity.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/nice.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/log.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/symlog.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/pow.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/quantile.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/quantize.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/threshold.js","webpack://mermaid/./node_modules/d3-time/src/interval.js","webpack://mermaid/./node_modules/d3-time/src/year.js","webpack://mermaid/./node_modules/d3-time/src/month.js","webpack://mermaid/./node_modules/d3-time/src/duration.js","webpack://mermaid/./node_modules/d3-time/src/week.js","webpack://mermaid/./node_modules/d3-time/src/day.js","webpack://mermaid/./node_modules/d3-time/src/hour.js","webpack://mermaid/./node_modules/d3-time/src/minute.js","webpack://mermaid/./node_modules/d3-time/src/second.js","webpack://mermaid/./node_modules/d3-time/src/millisecond.js","webpack://mermaid/./node_modules/d3-time/src/utcWeek.js","webpack://mermaid/./node_modules/d3-time/src/utcDay.js","webpack://mermaid/./node_modules/d3-time/src/utcYear.js","webpack://mermaid/./node_modules/d3-time-format/src/locale.js","webpack://mermaid/./node_modules/d3-time-format/src/defaultLocale.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/time.js","webpack://mermaid/./node_modules/d3-time/src/utcMonth.js","webpack://mermaid/./node_modules/d3-time/src/utcHour.js","webpack://mermaid/./node_modules/d3-time/src/utcMinute.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/utcTime.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/sequential.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/sequentialQuantile.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale/src/diverging.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/colors.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/categorical/category10.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/categorical/Accent.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/categorical/Dark2.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/categorical/Paired.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/categorical/Pastel1.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/categorical/Pastel2.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/categorical/Set1.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/categorical/Set2.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/categorical/Set3.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/categorical/Tableau10.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/ramp.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/diverging/BrBG.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/diverging/PRGn.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/diverging/PiYG.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/diverging/PuOr.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/diverging/RdBu.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/diverging/RdGy.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/diverging/RdYlBu.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/diverging/RdYlGn.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/diverging/Spectral.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-multi/BuGn.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-multi/BuPu.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-multi/GnBu.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-multi/OrRd.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-multi/PuBuGn.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-multi/PuBu.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-multi/PuRd.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-multi/RdPu.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-multi/YlGnBu.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-multi/YlGn.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-multi/YlOrBr.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-multi/YlOrRd.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-single/Blues.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-single/Greens.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-single/Greys.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-single/Purples.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-single/Reds.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-single/Oranges.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-multi/cividis.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-multi/cubehelix.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-multi/rainbow.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-multi/sinebow.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-multi/turbo.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-scale-chromatic/src/sequential-multi/viridis.js","webpack://mermaid/./node_modules/d3-selection/src/create.js","webpack://mermaid/./node_modules/d3-selection/src/local.js","webpack://mermaid/./node_modules/d3-selection/src/selectAll.js","webpack://mermaid/./node_modules/d3-selection/src/touches.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/constant.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/math.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/arc.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/curve/linear.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/point.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/line.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/area.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/descending.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/identity.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/pie.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/curve/radial.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/lineRadial.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/areaRadial.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/pointRadial.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/array.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/link/index.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/symbol/circle.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/symbol/cross.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/symbol/diamond.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/symbol/star.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/symbol/square.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/symbol/triangle.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/symbol/wye.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/symbol.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/noop.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/curve/basis.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/curve/basisClosed.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/curve/basisOpen.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/curve/bundle.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/curve/cardinal.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/curve/cardinalClosed.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/curve/cardinalOpen.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/curve/catmullRom.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/curve/catmullRomClosed.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/curve/catmullRomOpen.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/curve/linearClosed.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/curve/monotone.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/curve/natural.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/curve/step.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/offset/none.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/order/none.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/stack.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/offset/expand.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/offset/diverging.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/offset/silhouette.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/offset/wiggle.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/order/appearance.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/order/ascending.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/order/descending.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/order/insideOut.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-shape/src/order/reverse.js","webpack://mermaid/./node_modules/d3-time-format/src/isoFormat.js","webpack://mermaid/./node_modules/d3-time-format/src/isoParse.js","webpack://mermaid/./node_modules/d3-timer/src/interval.js","webpack://mermaid/./node_modules/d3-voronoi/src/constant.js","webpack://mermaid/./node_modules/d3-voronoi/src/point.js","webpack://mermaid/./node_modules/d3-voronoi/src/RedBlackTree.js","webpack://mermaid/./node_modules/d3-voronoi/src/Edge.js","webpack://mermaid/./node_modules/d3-voronoi/src/Cell.js","webpack://mermaid/./node_modules/d3-voronoi/src/Circle.js","webpack://mermaid/./node_modules/d3-voronoi/src/Beach.js","webpack://mermaid/./node_modules/d3-voronoi/src/Diagram.js","webpack://mermaid/./node_modules/d3-voronoi/src/voronoi.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-zoom/src/constant.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-zoom/src/event.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-zoom/src/transform.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-zoom/src/noevent.js","webpack://mermaid/./node_modules/dagre-d3/node_modules/d3-zoom/src/zoom.js","webpack://mermaid/./node_modules/dagre/index.js","webpack://mermaid/./node_modules/dagre/lib/acyclic.js","webpack://mermaid/./node_modules/dagre/lib/add-border-segments.js","webpack://mermaid/./node_modules/dagre/lib/coordinate-system.js","webpack://mermaid/./node_modules/dagre/lib/data/list.js","webpack://mermaid/./node_modules/dagre/lib/debug.js","webpack://mermaid/./node_modules/dagre/lib/graphlib.js","webpack://mermaid/./node_modules/dagre/lib/greedy-fas.js","webpack://mermaid/./node_modules/dagre/lib/layout.js","webpack://mermaid/./node_modules/dagre/lib/lodash.js","webpack://mermaid/./node_modules/dagre/lib/nesting-graph.js","webpack://mermaid/./node_modules/dagre/lib/normalize.js","webpack://mermaid/./node_modules/dagre/lib/order/add-subgraph-constraints.js","webpack://mermaid/./node_modules/dagre/lib/order/barycenter.js","webpack://mermaid/./node_modules/dagre/lib/order/build-layer-graph.js","webpack://mermaid/./node_modules/dagre/lib/order/cross-count.js","webpack://mermaid/./node_modules/dagre/lib/order/index.js","webpack://mermaid/./node_modules/dagre/lib/order/init-order.js","webpack://mermaid/./node_modules/dagre/lib/order/resolve-conflicts.js","webpack://mermaid/./node_modules/dagre/lib/order/sort-subgraph.js","webpack://mermaid/./node_modules/dagre/lib/order/sort.js","webpack://mermaid/./node_modules/dagre/lib/parent-dummy-chains.js","webpack://mermaid/./node_modules/dagre/lib/position/bk.js","webpack://mermaid/./node_modules/dagre/lib/position/index.js","webpack://mermaid/./node_modules/dagre/lib/rank/feasible-tree.js","webpack://mermaid/./node_modules/dagre/lib/rank/index.js","webpack://mermaid/./node_modules/dagre/lib/rank/network-simplex.js","webpack://mermaid/./node_modules/dagre/lib/rank/util.js","webpack://mermaid/./node_modules/dagre/lib/util.js","webpack://mermaid/./node_modules/dagre/lib/version.js","webpack://mermaid/./node_modules/dompurify/dist/purify.js","webpack://mermaid/./node_modules/graphlib/index.js","webpack://mermaid/./node_modules/graphlib/lib/alg/components.js","webpack://mermaid/./node_modules/graphlib/lib/alg/dfs.js","webpack://mermaid/./node_modules/graphlib/lib/alg/dijkstra-all.js","webpack://mermaid/./node_modules/graphlib/lib/alg/dijkstra.js","webpack://mermaid/./node_modules/graphlib/lib/alg/find-cycles.js","webpack://mermaid/./node_modules/graphlib/lib/alg/floyd-warshall.js","webpack://mermaid/./node_modules/graphlib/lib/alg/index.js","webpack://mermaid/./node_modules/graphlib/lib/alg/is-acyclic.js","webpack://mermaid/./node_modules/graphlib/lib/alg/postorder.js","webpack://mermaid/./node_modules/graphlib/lib/alg/preorder.js","webpack://mermaid/./node_modules/graphlib/lib/alg/prim.js","webpack://mermaid/./node_modules/graphlib/lib/alg/tarjan.js","webpack://mermaid/./node_modules/graphlib/lib/alg/topsort.js","webpack://mermaid/./node_modules/graphlib/lib/data/priority-queue.js","webpack://mermaid/./node_modules/graphlib/lib/graph.js","webpack://mermaid/./node_modules/graphlib/lib/index.js","webpack://mermaid/./node_modules/graphlib/lib/json.js","webpack://mermaid/./node_modules/graphlib/lib/lodash.js","webpack://mermaid/./node_modules/graphlib/lib/version.js","webpack://mermaid/./node_modules/lodash/_DataView.js","webpack://mermaid/./node_modules/lodash/_Hash.js","webpack://mermaid/./node_modules/lodash/_ListCache.js","webpack://mermaid/./node_modules/lodash/_Map.js","webpack://mermaid/./node_modules/lodash/_MapCache.js","webpack://mermaid/./node_modules/lodash/_Promise.js","webpack://mermaid/./node_modules/lodash/_Set.js","webpack://mermaid/./node_modules/lodash/_SetCache.js","webpack://mermaid/./node_modules/lodash/_Stack.js","webpack://mermaid/./node_modules/lodash/_Symbol.js","webpack://mermaid/./node_modules/lodash/_Uint8Array.js","webpack://mermaid/./node_modules/lodash/_WeakMap.js","webpack://mermaid/./node_modules/lodash/_apply.js","webpack://mermaid/./node_modules/lodash/_arrayEach.js","webpack://mermaid/./node_modules/lodash/_arrayFilter.js","webpack://mermaid/./node_modules/lodash/_arrayIncludes.js","webpack://mermaid/./node_modules/lodash/_arrayIncludesWith.js","webpack://mermaid/./node_modules/lodash/_arrayLikeKeys.js","webpack://mermaid/./node_modules/lodash/_arrayMap.js","webpack://mermaid/./node_modules/lodash/_arrayPush.js","webpack://mermaid/./node_modules/lodash/_arrayReduce.js","webpack://mermaid/./node_modules/lodash/_arraySome.js","webpack://mermaid/./node_modules/lodash/_asciiSize.js","webpack://mermaid/./node_modules/lodash/_assignMergeValue.js","webpack://mermaid/./node_modules/lodash/_assignValue.js","webpack://mermaid/./node_modules/lodash/_assocIndexOf.js","webpack://mermaid/./node_modules/lodash/_baseAssign.js","webpack://mermaid/./node_modules/lodash/_baseAssignIn.js","webpack://mermaid/./node_modules/lodash/_baseAssignValue.js","webpack://mermaid/./node_modules/lodash/_baseClone.js","webpack://mermaid/./node_modules/lodash/_baseCreate.js","webpack://mermaid/./node_modules/lodash/_baseEach.js","webpack://mermaid/./node_modules/lodash/_baseExtremum.js","webpack://mermaid/./node_modules/lodash/_baseFilter.js","webpack://mermaid/./node_modules/lodash/_baseFindIndex.js","webpack://mermaid/./node_modules/lodash/_baseFlatten.js","webpack://mermaid/./node_modules/lodash/_baseFor.js","webpack://mermaid/./node_modules/lodash/_baseForOwn.js","webpack://mermaid/./node_modules/lodash/_baseGet.js","webpack://mermaid/./node_modules/lodash/_baseGetAllKeys.js","webpack://mermaid/./node_modules/lodash/_baseGetTag.js","webpack://mermaid/./node_modules/lodash/_baseGt.js","webpack://mermaid/./node_modules/lodash/_baseHas.js","webpack://mermaid/./node_modules/lodash/_baseHasIn.js","webpack://mermaid/./node_modules/lodash/_baseIndexOf.js","webpack://mermaid/./node_modules/lodash/_baseIsArguments.js","webpack://mermaid/./node_modules/lodash/_baseIsEqual.js","webpack://mermaid/./node_modules/lodash/_baseIsEqualDeep.js","webpack://mermaid/./node_modules/lodash/_baseIsMap.js","webpack://mermaid/./node_modules/lodash/_baseIsMatch.js","webpack://mermaid/./node_modules/lodash/_baseIsNaN.js","webpack://mermaid/./node_modules/lodash/_baseIsNative.js","webpack://mermaid/./node_modules/lodash/_baseIsSet.js","webpack://mermaid/./node_modules/lodash/_baseIsTypedArray.js","webpack://mermaid/./node_modules/lodash/_baseIteratee.js","webpack://mermaid/./node_modules/lodash/_baseKeys.js","webpack://mermaid/./node_modules/lodash/_baseKeysIn.js","webpack://mermaid/./node_modules/lodash/_baseLt.js","webpack://mermaid/./node_modules/lodash/_baseMap.js","webpack://mermaid/./node_modules/lodash/_baseMatches.js","webpack://mermaid/./node_modules/lodash/_baseMatchesProperty.js","webpack://mermaid/./node_modules/lodash/_baseMerge.js","webpack://mermaid/./node_modules/lodash/_baseMergeDeep.js","webpack://mermaid/./node_modules/lodash/_baseOrderBy.js","webpack://mermaid/./node_modules/lodash/_basePick.js","webpack://mermaid/./node_modules/lodash/_basePickBy.js","webpack://mermaid/./node_modules/lodash/_baseProperty.js","webpack://mermaid/./node_modules/lodash/_basePropertyDeep.js","webpack://mermaid/./node_modules/lodash/_baseRange.js","webpack://mermaid/./node_modules/lodash/_baseReduce.js","webpack://mermaid/./node_modules/lodash/_baseRest.js","webpack://mermaid/./node_modules/lodash/_baseSet.js","webpack://mermaid/./node_modules/lodash/_baseSetToString.js","webpack://mermaid/./node_modules/lodash/_baseSortBy.js","webpack://mermaid/./node_modules/lodash/_baseTimes.js","webpack://mermaid/./node_modules/lodash/_baseToString.js","webpack://mermaid/./node_modules/lodash/_baseTrim.js","webpack://mermaid/./node_modules/lodash/_baseUnary.js","webpack://mermaid/./node_modules/lodash/_baseUniq.js","webpack://mermaid/./node_modules/lodash/_baseValues.js","webpack://mermaid/./node_modules/lodash/_baseZipObject.js","webpack://mermaid/./node_modules/lodash/_cacheHas.js","webpack://mermaid/./node_modules/lodash/_castFunction.js","webpack://mermaid/./node_modules/lodash/_castPath.js","webpack://mermaid/./node_modules/lodash/_cloneArrayBuffer.js","webpack://mermaid/./node_modules/lodash/_cloneBuffer.js","webpack://mermaid/./node_modules/lodash/_cloneDataView.js","webpack://mermaid/./node_modules/lodash/_cloneRegExp.js","webpack://mermaid/./node_modules/lodash/_cloneSymbol.js","webpack://mermaid/./node_modules/lodash/_cloneTypedArray.js","webpack://mermaid/./node_modules/lodash/_compareAscending.js","webpack://mermaid/./node_modules/lodash/_compareMultiple.js","webpack://mermaid/./node_modules/lodash/_copyArray.js","webpack://mermaid/./node_modules/lodash/_copyObject.js","webpack://mermaid/./node_modules/lodash/_copySymbols.js","webpack://mermaid/./node_modules/lodash/_copySymbolsIn.js","webpack://mermaid/./node_modules/lodash/_coreJsData.js","webpack://mermaid/./node_modules/lodash/_createAssigner.js","webpack://mermaid/./node_modules/lodash/_createBaseEach.js","webpack://mermaid/./node_modules/lodash/_createBaseFor.js","webpack://mermaid/./node_modules/lodash/_createFind.js","webpack://mermaid/./node_modules/lodash/_createRange.js","webpack://mermaid/./node_modules/lodash/_createSet.js","webpack://mermaid/./node_modules/lodash/_defineProperty.js","webpack://mermaid/./node_modules/lodash/_equalArrays.js","webpack://mermaid/./node_modules/lodash/_equalByTag.js","webpack://mermaid/./node_modules/lodash/_equalObjects.js","webpack://mermaid/./node_modules/lodash/_flatRest.js","webpack://mermaid/./node_modules/lodash/_freeGlobal.js","webpack://mermaid/./node_modules/lodash/_getAllKeys.js","webpack://mermaid/./node_modules/lodash/_getAllKeysIn.js","webpack://mermaid/./node_modules/lodash/_getMapData.js","webpack://mermaid/./node_modules/lodash/_getMatchData.js","webpack://mermaid/./node_modules/lodash/_getNative.js","webpack://mermaid/./node_modules/lodash/_getPrototype.js","webpack://mermaid/./node_modules/lodash/_getRawTag.js","webpack://mermaid/./node_modules/lodash/_getSymbols.js","webpack://mermaid/./node_modules/lodash/_getSymbolsIn.js","webpack://mermaid/./node_modules/lodash/_getTag.js","webpack://mermaid/./node_modules/lodash/_getValue.js","webpack://mermaid/./node_modules/lodash/_hasPath.js","webpack://mermaid/./node_modules/lodash/_hasUnicode.js","webpack://mermaid/./node_modules/lodash/_hashClear.js","webpack://mermaid/./node_modules/lodash/_hashDelete.js","webpack://mermaid/./node_modules/lodash/_hashGet.js","webpack://mermaid/./node_modules/lodash/_hashHas.js","webpack://mermaid/./node_modules/lodash/_hashSet.js","webpack://mermaid/./node_modules/lodash/_initCloneArray.js","webpack://mermaid/./node_modules/lodash/_initCloneByTag.js","webpack://mermaid/./node_modules/lodash/_initCloneObject.js","webpack://mermaid/./node_modules/lodash/_isFlattenable.js","webpack://mermaid/./node_modules/lodash/_isIndex.js","webpack://mermaid/./node_modules/lodash/_isIterateeCall.js","webpack://mermaid/./node_modules/lodash/_isKey.js","webpack://mermaid/./node_modules/lodash/_isKeyable.js","webpack://mermaid/./node_modules/lodash/_isMasked.js","webpack://mermaid/./node_modules/lodash/_isPrototype.js","webpack://mermaid/./node_modules/lodash/_isStrictComparable.js","webpack://mermaid/./node_modules/lodash/_listCacheClear.js","webpack://mermaid/./node_modules/lodash/_listCacheDelete.js","webpack://mermaid/./node_modules/lodash/_listCacheGet.js","webpack://mermaid/./node_modules/lodash/_listCacheHas.js","webpack://mermaid/./node_modules/lodash/_listCacheSet.js","webpack://mermaid/./node_modules/lodash/_mapCacheClear.js","webpack://mermaid/./node_modules/lodash/_mapCacheDelete.js","webpack://mermaid/./node_modules/lodash/_mapCacheGet.js","webpack://mermaid/./node_modules/lodash/_mapCacheHas.js","webpack://mermaid/./node_modules/lodash/_mapCacheSet.js","webpack://mermaid/./node_modules/lodash/_mapToArray.js","webpack://mermaid/./node_modules/lodash/_matchesStrictComparable.js","webpack://mermaid/./node_modules/lodash/_memoizeCapped.js","webpack://mermaid/./node_modules/lodash/_nativeCreate.js","webpack://mermaid/./node_modules/lodash/_nativeKeys.js","webpack://mermaid/./node_modules/lodash/_nativeKeysIn.js","webpack://mermaid/./node_modules/lodash/_nodeUtil.js","webpack://mermaid/./node_modules/lodash/_objectToString.js","webpack://mermaid/./node_modules/lodash/_overArg.js","webpack://mermaid/./node_modules/lodash/_overRest.js","webpack://mermaid/./node_modules/lodash/_root.js","webpack://mermaid/./node_modules/lodash/_safeGet.js","webpack://mermaid/./node_modules/lodash/_setCacheAdd.js","webpack://mermaid/./node_modules/lodash/_setCacheHas.js","webpack://mermaid/./node_modules/lodash/_setToArray.js","webpack://mermaid/./node_modules/lodash/_setToString.js","webpack://mermaid/./node_modules/lodash/_shortOut.js","webpack://mermaid/./node_modules/lodash/_stackClear.js","webpack://mermaid/./node_modules/lodash/_stackDelete.js","webpack://mermaid/./node_modules/lodash/_stackGet.js","webpack://mermaid/./node_modules/lodash/_stackHas.js","webpack://mermaid/./node_modules/lodash/_stackSet.js","webpack://mermaid/./node_modules/lodash/_strictIndexOf.js","webpack://mermaid/./node_modules/lodash/_stringSize.js","webpack://mermaid/./node_modules/lodash/_stringToPath.js","webpack://mermaid/./node_modules/lodash/_toKey.js","webpack://mermaid/./node_modules/lodash/_toSource.js","webpack://mermaid/./node_modules/lodash/_trimmedEndIndex.js","webpack://mermaid/./node_modules/lodash/_unicodeSize.js","webpack://mermaid/./node_modules/lodash/clone.js","webpack://mermaid/./node_modules/lodash/cloneDeep.js","webpack://mermaid/./node_modules/lodash/constant.js","webpack://mermaid/./node_modules/lodash/defaults.js","webpack://mermaid/./node_modules/lodash/each.js","webpack://mermaid/./node_modules/lodash/eq.js","webpack://mermaid/./node_modules/lodash/filter.js","webpack://mermaid/./node_modules/lodash/find.js","webpack://mermaid/./node_modules/lodash/findIndex.js","webpack://mermaid/./node_modules/lodash/flatten.js","webpack://mermaid/./node_modules/lodash/forEach.js","webpack://mermaid/./node_modules/lodash/forIn.js","webpack://mermaid/./node_modules/lodash/get.js","webpack://mermaid/./node_modules/lodash/has.js","webpack://mermaid/./node_modules/lodash/hasIn.js","webpack://mermaid/./node_modules/lodash/identity.js","webpack://mermaid/./node_modules/lodash/isArguments.js","webpack://mermaid/./node_modules/lodash/isArray.js","webpack://mermaid/./node_modules/lodash/isArrayLike.js","webpack://mermaid/./node_modules/lodash/isArrayLikeObject.js","webpack://mermaid/./node_modules/lodash/isBuffer.js","webpack://mermaid/./node_modules/lodash/isEmpty.js","webpack://mermaid/./node_modules/lodash/isFunction.js","webpack://mermaid/./node_modules/lodash/isLength.js","webpack://mermaid/./node_modules/lodash/isMap.js","webpack://mermaid/./node_modules/lodash/isObject.js","webpack://mermaid/./node_modules/lodash/isObjectLike.js","webpack://mermaid/./node_modules/lodash/isPlainObject.js","webpack://mermaid/./node_modules/lodash/isSet.js","webpack://mermaid/./node_modules/lodash/isString.js","webpack://mermaid/./node_modules/lodash/isSymbol.js","webpack://mermaid/./node_modules/lodash/isTypedArray.js","webpack://mermaid/./node_modules/lodash/isUndefined.js","webpack://mermaid/./node_modules/lodash/keys.js","webpack://mermaid/./node_modules/lodash/keysIn.js","webpack://mermaid/./node_modules/lodash/last.js","webpack://mermaid/./node_modules/lodash/map.js","webpack://mermaid/./node_modules/lodash/mapValues.js","webpack://mermaid/./node_modules/lodash/max.js","webpack://mermaid/./node_modules/lodash/memoize.js","webpack://mermaid/./node_modules/lodash/merge.js","webpack://mermaid/./node_modules/lodash/min.js","webpack://mermaid/./node_modules/lodash/minBy.js","webpack://mermaid/./node_modules/lodash/noop.js","webpack://mermaid/./node_modules/lodash/now.js","webpack://mermaid/./node_modules/lodash/pick.js","webpack://mermaid/./node_modules/lodash/property.js","webpack://mermaid/./node_modules/lodash/range.js","webpack://mermaid/./node_modules/lodash/reduce.js","webpack://mermaid/./node_modules/lodash/size.js","webpack://mermaid/./node_modules/lodash/sortBy.js","webpack://mermaid/./node_modules/lodash/stubArray.js","webpack://mermaid/./node_modules/lodash/stubFalse.js","webpack://mermaid/./node_modules/lodash/toFinite.js","webpack://mermaid/./node_modules/lodash/toInteger.js","webpack://mermaid/./node_modules/lodash/toNumber.js","webpack://mermaid/./node_modules/lodash/toPlainObject.js","webpack://mermaid/./node_modules/lodash/toString.js","webpack://mermaid/./node_modules/lodash/transform.js","webpack://mermaid/./node_modules/lodash/union.js","webpack://mermaid/./node_modules/lodash/uniqueId.js","webpack://mermaid/./node_modules/lodash/values.js","webpack://mermaid/./node_modules/lodash/zipObject.js","webpack://mermaid/./node_modules/moment-mini/locale/ sync ^\\.\\/.*$","webpack://mermaid/./node_modules/moment-mini/moment.min.js","webpack://mermaid/./node_modules/path-browserify/index.js","webpack://mermaid/webpack/bootstrap","webpack://mermaid/webpack/runtime/compat get default export","webpack://mermaid/webpack/runtime/define property getters","webpack://mermaid/webpack/runtime/global","webpack://mermaid/webpack/runtime/hasOwnProperty shorthand","webpack://mermaid/webpack/runtime/make namespace object","webpack://mermaid/webpack/runtime/node module decorator","webpack://mermaid/webpack/startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"mermaid\"] = factory();\n\telse\n\t\troot[\"mermaid\"] = factory();\n})(typeof self !== \"undefined\" ? self : this, () => {\nreturn ","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,3],$V1=[1,7],$V2=[1,8],$V3=[1,9],$V4=[1,10],$V5=[1,13],$V6=[1,12],$V7=[1,16,25],$V8=[1,20],$V9=[1,31],$Va=[1,32],$Vb=[1,33],$Vc=[1,35],$Vd=[1,38],$Ve=[1,36],$Vf=[1,37],$Vg=[1,39],$Vh=[1,40],$Vi=[1,41],$Vj=[1,42],$Vk=[1,45],$Vl=[1,46],$Vm=[1,47],$Vn=[1,48],$Vo=[16,25],$Vp=[1,62],$Vq=[1,63],$Vr=[1,64],$Vs=[1,65],$Vt=[1,66],$Vu=[1,67],$Vv=[16,25,32,44,45,53,56,57,58,59,60,61,66,68],$Vw=[16,25,30,32,44,45,49,53,56,57,58,59,60,61,66,68,83,84,85,86],$Vx=[5,8,9,10,11,16,19,23,25],$Vy=[53,83,84,85,86],$Vz=[53,60,61,83,84,85,86],$VA=[53,56,57,58,59,83,84,85,86],$VB=[16,25,32],$VC=[1,99];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"mermaidDoc\":4,\"statments\":5,\"direction\":6,\"directive\":7,\"direction_tb\":8,\"direction_bt\":9,\"direction_rl\":10,\"direction_lr\":11,\"graphConfig\":12,\"openDirective\":13,\"typeDirective\":14,\"closeDirective\":15,\"NEWLINE\":16,\":\":17,\"argDirective\":18,\"open_directive\":19,\"type_directive\":20,\"arg_directive\":21,\"close_directive\":22,\"CLASS_DIAGRAM\":23,\"statements\":24,\"EOF\":25,\"statement\":26,\"className\":27,\"alphaNumToken\":28,\"classLiteralName\":29,\"GENERICTYPE\":30,\"relationStatement\":31,\"LABEL\":32,\"classStatement\":33,\"methodStatement\":34,\"annotationStatement\":35,\"clickStatement\":36,\"cssClassStatement\":37,\"acc_title\":38,\"acc_title_value\":39,\"acc_descr\":40,\"acc_descr_value\":41,\"acc_descr_multiline_value\":42,\"CLASS\":43,\"STYLE_SEPARATOR\":44,\"STRUCT_START\":45,\"members\":46,\"STRUCT_STOP\":47,\"ANNOTATION_START\":48,\"ANNOTATION_END\":49,\"MEMBER\":50,\"SEPARATOR\":51,\"relation\":52,\"STR\":53,\"relationType\":54,\"lineType\":55,\"AGGREGATION\":56,\"EXTENSION\":57,\"COMPOSITION\":58,\"DEPENDENCY\":59,\"LINE\":60,\"DOTTED_LINE\":61,\"CALLBACK\":62,\"LINK\":63,\"LINK_TARGET\":64,\"CLICK\":65,\"CALLBACK_NAME\":66,\"CALLBACK_ARGS\":67,\"HREF\":68,\"CSSCLASS\":69,\"commentToken\":70,\"textToken\":71,\"graphCodeTokens\":72,\"textNoTagsToken\":73,\"TAGSTART\":74,\"TAGEND\":75,\"==\":76,\"--\":77,\"PCT\":78,\"DEFAULT\":79,\"SPACE\":80,\"MINUS\":81,\"keywords\":82,\"UNICODE_TEXT\":83,\"NUM\":84,\"ALPHA\":85,\"BQUOTE_STR\":86,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",5:\"statments\",8:\"direction_tb\",9:\"direction_bt\",10:\"direction_rl\",11:\"direction_lr\",16:\"NEWLINE\",17:\":\",19:\"open_directive\",20:\"type_directive\",21:\"arg_directive\",22:\"close_directive\",23:\"CLASS_DIAGRAM\",25:\"EOF\",30:\"GENERICTYPE\",32:\"LABEL\",38:\"acc_title\",39:\"acc_title_value\",40:\"acc_descr\",41:\"acc_descr_value\",42:\"acc_descr_multiline_value\",43:\"CLASS\",44:\"STYLE_SEPARATOR\",45:\"STRUCT_START\",47:\"STRUCT_STOP\",48:\"ANNOTATION_START\",49:\"ANNOTATION_END\",50:\"MEMBER\",51:\"SEPARATOR\",53:\"STR\",56:\"AGGREGATION\",57:\"EXTENSION\",58:\"COMPOSITION\",59:\"DEPENDENCY\",60:\"LINE\",61:\"DOTTED_LINE\",62:\"CALLBACK\",63:\"LINK\",64:\"LINK_TARGET\",65:\"CLICK\",66:\"CALLBACK_NAME\",67:\"CALLBACK_ARGS\",68:\"HREF\",69:\"CSSCLASS\",72:\"graphCodeTokens\",74:\"TAGSTART\",75:\"TAGEND\",76:\"==\",77:\"--\",78:\"PCT\",79:\"DEFAULT\",80:\"SPACE\",81:\"MINUS\",82:\"keywords\",83:\"UNICODE_TEXT\",84:\"NUM\",85:\"ALPHA\",86:\"BQUOTE_STR\"},\nproductions_: [0,[3,1],[3,1],[3,1],[3,2],[6,1],[6,1],[6,1],[6,1],[4,1],[7,4],[7,6],[13,1],[14,1],[18,1],[15,1],[12,4],[24,1],[24,2],[24,3],[27,1],[27,1],[27,2],[27,2],[27,2],[26,1],[26,2],[26,1],[26,1],[26,1],[26,1],[26,1],[26,1],[26,1],[26,2],[26,2],[26,1],[33,2],[33,4],[33,5],[33,7],[35,4],[46,1],[46,2],[34,1],[34,2],[34,1],[34,1],[31,3],[31,4],[31,4],[31,5],[52,3],[52,2],[52,2],[52,1],[54,1],[54,1],[54,1],[54,1],[55,1],[55,1],[36,3],[36,4],[36,3],[36,4],[36,4],[36,5],[36,3],[36,4],[36,4],[36,5],[36,3],[36,4],[36,4],[36,5],[37,3],[70,1],[70,1],[71,1],[71,1],[71,1],[71,1],[71,1],[71,1],[71,1],[73,1],[73,1],[73,1],[73,1],[28,1],[28,1],[28,1],[29,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 5:\n yy.setDirection('TB');\nbreak;\ncase 6:\n yy.setDirection('BT');\nbreak;\ncase 7:\n yy.setDirection('RL');\nbreak;\ncase 8:\n yy.setDirection('LR');\nbreak;\ncase 12:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 13:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 14:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 15:\n yy.parseDirective('}%%', 'close_directive', 'class'); \nbreak;\ncase 20: case 21:\n this.$=$$[$0]; \nbreak;\ncase 22:\n this.$=$$[$0-1]+$$[$0]; \nbreak;\ncase 23: case 24:\n this.$=$$[$0-1]+'~'+$$[$0]; \nbreak;\ncase 25:\n yy.addRelation($$[$0]); \nbreak;\ncase 26:\n $$[$0-1].title = yy.cleanupLabel($$[$0]); yy.addRelation($$[$0-1]); \nbreak;\ncase 34:\n this.$=$$[$0].trim();yy.setTitle(this.$); \nbreak;\ncase 35: case 36:\n this.$=$$[$0].trim();yy.setAccDescription(this.$); \nbreak;\ncase 37:\nyy.addClass($$[$0]);\nbreak;\ncase 38:\nyy.addClass($$[$0-2]);yy.setCssClass($$[$0-2], $$[$0]);\nbreak;\ncase 39:\n/*console.log($$[$0-3],JSON.stringify($$[$0-1]));*/yy.addClass($$[$0-3]);yy.addMembers($$[$0-3],$$[$0-1]);\nbreak;\ncase 40:\nyy.addClass($$[$0-5]);yy.setCssClass($$[$0-5], $$[$0-3]);yy.addMembers($$[$0-5],$$[$0-1]);\nbreak;\ncase 41:\n yy.addAnnotation($$[$0],$$[$0-2]); \nbreak;\ncase 42:\n this.$ = [$$[$0]]; \nbreak;\ncase 43:\n $$[$0].push($$[$0-1]);this.$=$$[$0];\nbreak;\ncase 44:\n/*console.log('Rel found',$$[$0]);*/\nbreak;\ncase 45:\nyy.addMember($$[$0-1],yy.cleanupLabel($$[$0]));\nbreak;\ncase 46:\n/*console.warn('Member',$$[$0]);*/\nbreak;\ncase 47:\n/*console.log('sep found',$$[$0]);*/\nbreak;\ncase 48:\n this.$ = {'id1':$$[$0-2],'id2':$$[$0], relation:$$[$0-1], relationTitle1:'none', relationTitle2:'none'}; \nbreak;\ncase 49:\n this.$ = {id1:$$[$0-3], id2:$$[$0], relation:$$[$0-1], relationTitle1:$$[$0-2], relationTitle2:'none'}\nbreak;\ncase 50:\n this.$ = {id1:$$[$0-3], id2:$$[$0], relation:$$[$0-2], relationTitle1:'none', relationTitle2:$$[$0-1]}; \nbreak;\ncase 51:\n this.$ = {id1:$$[$0-4], id2:$$[$0], relation:$$[$0-2], relationTitle1:$$[$0-3], relationTitle2:$$[$0-1]} \nbreak;\ncase 52:\n this.$={type1:$$[$0-2],type2:$$[$0],lineType:$$[$0-1]}; \nbreak;\ncase 53:\n this.$={type1:'none',type2:$$[$0],lineType:$$[$0-1]}; \nbreak;\ncase 54:\n this.$={type1:$$[$0-1],type2:'none',lineType:$$[$0]}; \nbreak;\ncase 55:\n this.$={type1:'none',type2:'none',lineType:$$[$0]}; \nbreak;\ncase 56:\n this.$=yy.relationType.AGGREGATION;\nbreak;\ncase 57:\n this.$=yy.relationType.EXTENSION;\nbreak;\ncase 58:\n this.$=yy.relationType.COMPOSITION;\nbreak;\ncase 59:\n this.$=yy.relationType.DEPENDENCY;\nbreak;\ncase 60:\nthis.$=yy.lineType.LINE;\nbreak;\ncase 61:\nthis.$=yy.lineType.DOTTED_LINE;\nbreak;\ncase 62: case 68:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-1], $$[$0]);\nbreak;\ncase 63: case 69:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-2], $$[$0-1]);yy.setTooltip($$[$0-2], $$[$0]);\nbreak;\ncase 64: case 72:\nthis.$ = $$[$0-2];yy.setLink($$[$0-1], $$[$0]);\nbreak;\ncase 65:\nthis.$ = $$[$0-3];yy.setLink($$[$0-2], $$[$0-1],$$[$0]);\nbreak;\ncase 66: case 74:\nthis.$ = $$[$0-3];yy.setLink($$[$0-2], $$[$0-1]);yy.setTooltip($$[$0-2], $$[$0]);\nbreak;\ncase 67: case 75:\nthis.$ = $$[$0-4];yy.setLink($$[$0-3], $$[$0-2], $$[$0]);yy.setTooltip($$[$0-3], $$[$0-1]);\nbreak;\ncase 70:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-2], $$[$0-1], $$[$0]);\nbreak;\ncase 71:\nthis.$ = $$[$0-4];yy.setClickEvent($$[$0-3], $$[$0-2], $$[$0-1]);yy.setTooltip($$[$0-3], $$[$0]);\nbreak;\ncase 73:\nthis.$ = $$[$0-3];yy.setLink($$[$0-2], $$[$0-1], $$[$0]);\nbreak;\ncase 76:\nyy.setCssClass($$[$0-1], $$[$0]);\nbreak;\n}\n},\ntable: [{3:1,4:2,5:$V0,6:4,7:5,8:$V1,9:$V2,10:$V3,11:$V4,12:6,13:11,19:$V5,23:$V6},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{3:14,4:2,5:$V0,6:4,7:5,8:$V1,9:$V2,10:$V3,11:$V4,12:6,13:11,19:$V5,23:$V6},{1:[2,9]},o($V7,[2,5]),o($V7,[2,6]),o($V7,[2,7]),o($V7,[2,8]),{14:15,20:[1,16]},{16:[1,17]},{20:[2,12]},{1:[2,4]},{15:18,17:[1,19],22:$V8},o([17,22],[2,13]),{6:30,7:29,8:$V1,9:$V2,10:$V3,11:$V4,13:11,19:$V5,24:21,26:22,27:34,28:43,29:44,31:23,33:24,34:25,35:26,36:27,37:28,38:$V9,40:$Va,42:$Vb,43:$Vc,48:$Vd,50:$Ve,51:$Vf,62:$Vg,63:$Vh,65:$Vi,69:$Vj,83:$Vk,84:$Vl,85:$Vm,86:$Vn},{16:[1,49]},{18:50,21:[1,51]},{16:[2,15]},{25:[1,52]},{16:[1,53],25:[2,17]},o($Vo,[2,25],{32:[1,54]}),o($Vo,[2,27]),o($Vo,[2,28]),o($Vo,[2,29]),o($Vo,[2,30]),o($Vo,[2,31]),o($Vo,[2,32]),o($Vo,[2,33]),{39:[1,55]},{41:[1,56]},o($Vo,[2,36]),o($Vo,[2,44],{52:57,54:60,55:61,32:[1,59],53:[1,58],56:$Vp,57:$Vq,58:$Vr,59:$Vs,60:$Vt,61:$Vu}),{27:68,28:43,29:44,83:$Vk,84:$Vl,85:$Vm,86:$Vn},o($Vo,[2,46]),o($Vo,[2,47]),{28:69,83:$Vk,84:$Vl,85:$Vm},{27:70,28:43,29:44,83:$Vk,84:$Vl,85:$Vm,86:$Vn},{27:71,28:43,29:44,83:$Vk,84:$Vl,85:$Vm,86:$Vn},{27:72,28:43,29:44,83:$Vk,84:$Vl,85:$Vm,86:$Vn},{53:[1,73]},o($Vv,[2,20],{28:43,29:44,27:74,30:[1,75],83:$Vk,84:$Vl,85:$Vm,86:$Vn}),o($Vv,[2,21],{30:[1,76]}),o($Vw,[2,90]),o($Vw,[2,91]),o($Vw,[2,92]),o([16,25,30,32,44,45,53,56,57,58,59,60,61,66,68],[2,93]),o($Vx,[2,10]),{15:77,22:$V8},{22:[2,14]},{1:[2,16]},{6:30,7:29,8:$V1,9:$V2,10:$V3,11:$V4,13:11,19:$V5,24:78,25:[2,18],26:22,27:34,28:43,29:44,31:23,33:24,34:25,35:26,36:27,37:28,38:$V9,40:$Va,42:$Vb,43:$Vc,48:$Vd,50:$Ve,51:$Vf,62:$Vg,63:$Vh,65:$Vi,69:$Vj,83:$Vk,84:$Vl,85:$Vm,86:$Vn},o($Vo,[2,26]),o($Vo,[2,34]),o($Vo,[2,35]),{27:79,28:43,29:44,53:[1,80],83:$Vk,84:$Vl,85:$Vm,86:$Vn},{52:81,54:60,55:61,56:$Vp,57:$Vq,58:$Vr,59:$Vs,60:$Vt,61:$Vu},o($Vo,[2,45]),{55:82,60:$Vt,61:$Vu},o($Vy,[2,55],{54:83,56:$Vp,57:$Vq,58:$Vr,59:$Vs}),o($Vz,[2,56]),o($Vz,[2,57]),o($Vz,[2,58]),o($Vz,[2,59]),o($VA,[2,60]),o($VA,[2,61]),o($Vo,[2,37],{44:[1,84],45:[1,85]}),{49:[1,86]},{53:[1,87]},{53:[1,88]},{66:[1,89],68:[1,90]},{28:91,83:$Vk,84:$Vl,85:$Vm},o($Vv,[2,22]),o($Vv,[2,23]),o($Vv,[2,24]),{16:[1,92]},{25:[2,19]},o($VB,[2,48]),{27:93,28:43,29:44,83:$Vk,84:$Vl,85:$Vm,86:$Vn},{27:94,28:43,29:44,53:[1,95],83:$Vk,84:$Vl,85:$Vm,86:$Vn},o($Vy,[2,54],{54:96,56:$Vp,57:$Vq,58:$Vr,59:$Vs}),o($Vy,[2,53]),{28:97,83:$Vk,84:$Vl,85:$Vm},{46:98,50:$VC},{27:100,28:43,29:44,83:$Vk,84:$Vl,85:$Vm,86:$Vn},o($Vo,[2,62],{53:[1,101]}),o($Vo,[2,64],{53:[1,103],64:[1,102]}),o($Vo,[2,68],{53:[1,104],67:[1,105]}),o($Vo,[2,72],{53:[1,107],64:[1,106]}),o($Vo,[2,76]),o($Vx,[2,11]),o($VB,[2,50]),o($VB,[2,49]),{27:108,28:43,29:44,83:$Vk,84:$Vl,85:$Vm,86:$Vn},o($Vy,[2,52]),o($Vo,[2,38],{45:[1,109]}),{47:[1,110]},{46:111,47:[2,42],50:$VC},o($Vo,[2,41]),o($Vo,[2,63]),o($Vo,[2,65]),o($Vo,[2,66],{64:[1,112]}),o($Vo,[2,69]),o($Vo,[2,70],{53:[1,113]}),o($Vo,[2,73]),o($Vo,[2,74],{64:[1,114]}),o($VB,[2,51]),{46:115,50:$VC},o($Vo,[2,39]),{47:[2,43]},o($Vo,[2,67]),o($Vo,[2,71]),o($Vo,[2,75]),{47:[1,116]},o($Vo,[2,40])],\ndefaultActions: {2:[2,1],3:[2,2],4:[2,3],6:[2,9],13:[2,12],14:[2,4],20:[2,15],51:[2,14],52:[2,16],78:[2,19],111:[2,43]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 19; \nbreak;\ncase 1:return 8;\nbreak;\ncase 2:return 9;\nbreak;\ncase 3:return 10;\nbreak;\ncase 4:return 11;\nbreak;\ncase 5: this.begin('type_directive'); return 20; \nbreak;\ncase 6: this.popState(); this.begin('arg_directive'); return 17; \nbreak;\ncase 7: this.popState(); this.popState(); return 22; \nbreak;\ncase 8:return 21;\nbreak;\ncase 9:/* skip comments */\nbreak;\ncase 10:/* skip comments */\nbreak;\ncase 11: this.begin(\"acc_title\");return 38; \nbreak;\ncase 12: this.popState(); return \"acc_title_value\"; \nbreak;\ncase 13: this.begin(\"acc_descr\");return 40; \nbreak;\ncase 14: this.popState(); return \"acc_descr_value\"; \nbreak;\ncase 15: this.begin(\"acc_descr_multiline\");\nbreak;\ncase 16: this.popState(); \nbreak;\ncase 17:return \"acc_descr_multiline_value\";\nbreak;\ncase 18:return 16;\nbreak;\ncase 19:/* skip whitespace */\nbreak;\ncase 20:return 23;\nbreak;\ncase 21:return 23;\nbreak;\ncase 22: this.begin(\"struct\"); /*console.log('Starting struct');*/ return 45;\nbreak;\ncase 23:return \"EOF_IN_STRUCT\";\nbreak;\ncase 24:return \"OPEN_IN_STRUCT\";\nbreak;\ncase 25: /*console.log('Ending struct');*/this.popState(); return 47;\nbreak;\ncase 26:/* nothing */\nbreak;\ncase 27: /*console.log('lex-member: ' + yy_.yytext);*/ return \"MEMBER\";\nbreak;\ncase 28:return 43;\nbreak;\ncase 29:return 69;\nbreak;\ncase 30:return 62;\nbreak;\ncase 31:return 63;\nbreak;\ncase 32:return 65;\nbreak;\ncase 33:return 48;\nbreak;\ncase 34:return 49;\nbreak;\ncase 35:this.begin(\"generic\");\nbreak;\ncase 36:this.popState();\nbreak;\ncase 37:return \"GENERICTYPE\";\nbreak;\ncase 38:this.begin(\"string\");\nbreak;\ncase 39:this.popState();\nbreak;\ncase 40:return \"STR\";\nbreak;\ncase 41:this.begin(\"bqstring\");\nbreak;\ncase 42:this.popState();\nbreak;\ncase 43:return \"BQUOTE_STR\";\nbreak;\ncase 44:this.begin(\"href\");\nbreak;\ncase 45:this.popState();\nbreak;\ncase 46:return 68;\nbreak;\ncase 47:this.begin(\"callback_name\");\nbreak;\ncase 48:this.popState();\nbreak;\ncase 49:this.popState(); this.begin(\"callback_args\");\nbreak;\ncase 50:return 66;\nbreak;\ncase 51:this.popState();\nbreak;\ncase 52:return 67;\nbreak;\ncase 53:return 64;\nbreak;\ncase 54:return 64;\nbreak;\ncase 55:return 64;\nbreak;\ncase 56:return 64;\nbreak;\ncase 57:return 57;\nbreak;\ncase 58:return 57;\nbreak;\ncase 59:return 59;\nbreak;\ncase 60:return 59;\nbreak;\ncase 61:return 58;\nbreak;\ncase 62:return 56;\nbreak;\ncase 63:return 60;\nbreak;\ncase 64:return 61;\nbreak;\ncase 65:return 32;\nbreak;\ncase 66:return 44;\nbreak;\ncase 67:return 81;\nbreak;\ncase 68:return 'DOT';\nbreak;\ncase 69:return 'PLUS';\nbreak;\ncase 70:return 78;\nbreak;\ncase 71:return 'EQUALS';\nbreak;\ncase 72:return 'EQUALS';\nbreak;\ncase 73:return 85;\nbreak;\ncase 74:return 'PUNCTUATION';\nbreak;\ncase 75:return 84;\nbreak;\ncase 76:return 83;\nbreak;\ncase 77:return 80;\nbreak;\ncase 78:return 25;\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/,/^(?:.*direction\\s+TB[^\\n]*)/,/^(?:.*direction\\s+BT[^\\n]*)/,/^(?:.*direction\\s+RL[^\\n]*)/,/^(?:.*direction\\s+LR[^\\n]*)/,/^(?:((?:(?!\\}%%)[^:.])*))/,/^(?::)/,/^(?:\\}%%)/,/^(?:((?:(?!\\}%%).|\\n)*))/,/^(?:%%(?!\\{)*[^\\n]*(\\r?\\n?)+)/,/^(?:%%[^\\n]*(\\r?\\n)*)/,/^(?:accTitle\\s*:\\s*)/,/^(?:(?!\\n||)*[^\\n]*)/,/^(?:accDescr\\s*:\\s*)/,/^(?:(?!\\n||)*[^\\n]*)/,/^(?:accDescr\\s*\\{\\s*)/,/^(?:[\\}])/,/^(?:[^\\}]*)/,/^(?:\\s*(\\r?\\n)+)/,/^(?:\\s+)/,/^(?:classDiagram-v2\\b)/,/^(?:classDiagram\\b)/,/^(?:[{])/,/^(?:$)/,/^(?:[{])/,/^(?:[}])/,/^(?:[\\n])/,/^(?:[^{}\\n]*)/,/^(?:class\\b)/,/^(?:cssClass\\b)/,/^(?:callback\\b)/,/^(?:link\\b)/,/^(?:click\\b)/,/^(?:<<)/,/^(?:>>)/,/^(?:[~])/,/^(?:[~])/,/^(?:[^~]*)/,/^(?:[\"])/,/^(?:[\"])/,/^(?:[^\"]*)/,/^(?:[`])/,/^(?:[`])/,/^(?:[^`]+)/,/^(?:href[\\s]+[\"])/,/^(?:[\"])/,/^(?:[^\"]*)/,/^(?:call[\\s]+)/,/^(?:\\([\\s]*\\))/,/^(?:\\()/,/^(?:[^(]*)/,/^(?:\\))/,/^(?:[^)]*)/,/^(?:_self\\b)/,/^(?:_blank\\b)/,/^(?:_parent\\b)/,/^(?:_top\\b)/,/^(?:\\s*<\\|)/,/^(?:\\s*\\|>)/,/^(?:\\s*>)/,/^(?:\\s*<)/,/^(?:\\s*\\*)/,/^(?:\\s*o\\b)/,/^(?:--)/,/^(?:\\.\\.)/,/^(?::{1}[^:\\n;]+)/,/^(?::{3})/,/^(?:-)/,/^(?:\\.)/,/^(?:\\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:\\w+)/,/^(?:[!\"#$%&'*+,-.`?\\\\/])/,/^(?:[0-9]+)/,/^(?:[\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6]|[\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377]|[\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5]|[\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA]|[\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE]|[\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA]|[\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0]|[\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977]|[\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2]|[\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A]|[\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39]|[\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8]|[\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C]|[\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C]|[\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99]|[\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0]|[\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D]|[\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3]|[\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10]|[\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1]|[\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81]|[\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3]|[\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6]|[\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A]|[\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081]|[\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D]|[\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0]|[\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310]|[\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C]|[\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711]|[\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7]|[\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C]|[\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16]|[\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF]|[\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC]|[\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D]|[\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D]|[\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3]|[\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F]|[\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128]|[\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184]|[\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3]|[\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6]|[\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE]|[\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C]|[\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D]|[\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC]|[\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B]|[\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788]|[\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805]|[\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB]|[\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28]|[\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5]|[\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4]|[\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E]|[\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D]|[\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36]|[\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D]|[\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC]|[\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF]|[\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC])/,/^(?:\\s)/,/^(?:$)/],\nconditions: {\"acc_descr_multiline\":{\"rules\":[16,17],\"inclusive\":false},\"acc_descr\":{\"rules\":[14],\"inclusive\":false},\"acc_title\":{\"rules\":[12],\"inclusive\":false},\"arg_directive\":{\"rules\":[7,8],\"inclusive\":false},\"type_directive\":{\"rules\":[6,7],\"inclusive\":false},\"open_directive\":{\"rules\":[5],\"inclusive\":false},\"callback_args\":{\"rules\":[51,52],\"inclusive\":false},\"callback_name\":{\"rules\":[48,49,50],\"inclusive\":false},\"href\":{\"rules\":[45,46],\"inclusive\":false},\"struct\":{\"rules\":[23,24,25,26,27],\"inclusive\":false},\"generic\":{\"rules\":[36,37],\"inclusive\":false},\"bqstring\":{\"rules\":[42,43],\"inclusive\":false},\"string\":{\"rules\":[39,40],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,2,3,4,9,10,11,13,15,18,19,20,21,22,28,29,30,31,32,33,34,35,38,41,44,47,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,2],$V1=[1,5],$V2=[6,9,11,23,25,27,29,30,48],$V3=[1,17],$V4=[1,18],$V5=[1,19],$V6=[1,20],$V7=[1,21],$V8=[1,24],$V9=[1,29],$Va=[1,30],$Vb=[1,31],$Vc=[1,32],$Vd=[1,44],$Ve=[30,45,46],$Vf=[4,6,9,11,23,25,27,29,30,48],$Vg=[41,42,43,44],$Vh=[22,36],$Vi=[1,62];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"ER_DIAGRAM\":4,\"document\":5,\"EOF\":6,\"directive\":7,\"line\":8,\"SPACE\":9,\"statement\":10,\"NEWLINE\":11,\"openDirective\":12,\"typeDirective\":13,\"closeDirective\":14,\":\":15,\"argDirective\":16,\"entityName\":17,\"relSpec\":18,\"role\":19,\"BLOCK_START\":20,\"attributes\":21,\"BLOCK_STOP\":22,\"title\":23,\"title_value\":24,\"acc_title\":25,\"acc_title_value\":26,\"acc_descr\":27,\"acc_descr_value\":28,\"acc_descr_multiline_value\":29,\"ALPHANUM\":30,\"attribute\":31,\"attributeType\":32,\"attributeName\":33,\"attributeKeyType\":34,\"attributeComment\":35,\"ATTRIBUTE_WORD\":36,\"ATTRIBUTE_KEY\":37,\"COMMENT\":38,\"cardinality\":39,\"relType\":40,\"ZERO_OR_ONE\":41,\"ZERO_OR_MORE\":42,\"ONE_OR_MORE\":43,\"ONLY_ONE\":44,\"NON_IDENTIFYING\":45,\"IDENTIFYING\":46,\"WORD\":47,\"open_directive\":48,\"type_directive\":49,\"arg_directive\":50,\"close_directive\":51,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"ER_DIAGRAM\",6:\"EOF\",9:\"SPACE\",11:\"NEWLINE\",15:\":\",20:\"BLOCK_START\",22:\"BLOCK_STOP\",23:\"title\",24:\"title_value\",25:\"acc_title\",26:\"acc_title_value\",27:\"acc_descr\",28:\"acc_descr_value\",29:\"acc_descr_multiline_value\",30:\"ALPHANUM\",36:\"ATTRIBUTE_WORD\",37:\"ATTRIBUTE_KEY\",38:\"COMMENT\",41:\"ZERO_OR_ONE\",42:\"ZERO_OR_MORE\",43:\"ONE_OR_MORE\",44:\"ONLY_ONE\",45:\"NON_IDENTIFYING\",46:\"IDENTIFYING\",47:\"WORD\",48:\"open_directive\",49:\"type_directive\",50:\"arg_directive\",51:\"close_directive\"},\nproductions_: [0,[3,3],[3,2],[5,0],[5,2],[8,2],[8,1],[8,1],[8,1],[7,4],[7,6],[10,1],[10,5],[10,4],[10,3],[10,1],[10,2],[10,2],[10,2],[10,1],[17,1],[21,1],[21,2],[31,2],[31,3],[31,3],[31,4],[32,1],[33,1],[34,1],[35,1],[18,3],[39,1],[39,1],[39,1],[39,1],[40,1],[40,1],[19,1],[19,1],[12,1],[13,1],[16,1],[14,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\n /*console.log('finished parsing');*/ \nbreak;\ncase 3:\n this.$ = [] \nbreak;\ncase 4:\n$$[$0-1].push($$[$0]);this.$ = $$[$0-1]\nbreak;\ncase 5: case 6:\n this.$ = $$[$0] \nbreak;\ncase 7: case 8:\n this.$=[];\nbreak;\ncase 12:\n\n yy.addEntity($$[$0-4]);\n yy.addEntity($$[$0-2]);\n yy.addRelationship($$[$0-4], $$[$0], $$[$0-2], $$[$0-3]);\n /*console.log($$[$0-4] + $$[$0-3] + $$[$0-2] + ':' + $$[$0]);*/\n \nbreak;\ncase 13:\n\n /* console.log('detected block'); */\n yy.addEntity($$[$0-3]);\n yy.addAttributes($$[$0-3], $$[$0-1]);\n /* console.log('handled block'); */\n \nbreak;\ncase 14:\n yy.addEntity($$[$0-2]); \nbreak;\ncase 15:\n yy.addEntity($$[$0]); \nbreak;\ncase 16: case 17:\n this.$=$$[$0].trim();yy.setTitle(this.$); \nbreak;\ncase 18: case 19:\n this.$=$$[$0].trim();yy.setAccDescription(this.$); \nbreak;\ncase 20:\n this.$ = $$[$0]; /*console.log('Entity: ' + $$[$0]);*/ \nbreak;\ncase 21:\n this.$ = [$$[$0]]; \nbreak;\ncase 22:\n $$[$0].push($$[$0-1]); this.$=$$[$0]; \nbreak;\ncase 23:\n this.$ = { attributeType: $$[$0-1], attributeName: $$[$0] }; \nbreak;\ncase 24:\n this.$ = { attributeType: $$[$0-2], attributeName: $$[$0-1], attributeKeyType: $$[$0] }; \nbreak;\ncase 25:\n this.$ = { attributeType: $$[$0-2], attributeName: $$[$0-1], attributeComment: $$[$0] }; \nbreak;\ncase 26:\n this.$ = { attributeType: $$[$0-3], attributeName: $$[$0-2], attributeKeyType: $$[$0-1], attributeComment: $$[$0] }; \nbreak;\ncase 27: case 28: case 29:\n this.$=$$[$0]; \nbreak;\ncase 30:\n this.$=$$[$0].replace(/\"/g, ''); \nbreak;\ncase 31:\n\n this.$ = { cardA: $$[$0], relType: $$[$0-1], cardB: $$[$0-2] };\n /*console.log('relSpec: ' + $$[$0] + $$[$0-1] + $$[$0-2]);*/\n \nbreak;\ncase 32:\n this.$ = yy.Cardinality.ZERO_OR_ONE; \nbreak;\ncase 33:\n this.$ = yy.Cardinality.ZERO_OR_MORE; \nbreak;\ncase 34:\n this.$ = yy.Cardinality.ONE_OR_MORE; \nbreak;\ncase 35:\n this.$ = yy.Cardinality.ONLY_ONE; \nbreak;\ncase 36:\n this.$ = yy.Identification.NON_IDENTIFYING; \nbreak;\ncase 37:\n this.$ = yy.Identification.IDENTIFYING; \nbreak;\ncase 38:\n this.$ = $$[$0].replace(/\"/g, ''); \nbreak;\ncase 39:\n this.$ = $$[$0]; \nbreak;\ncase 40:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 41:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 42:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 43:\n yy.parseDirective('}%%', 'close_directive', 'er'); \nbreak;\n}\n},\ntable: [{3:1,4:$V0,7:3,12:4,48:$V1},{1:[3]},o($V2,[2,3],{5:6}),{3:7,4:$V0,7:3,12:4,48:$V1},{13:8,49:[1,9]},{49:[2,40]},{6:[1,10],7:15,8:11,9:[1,12],10:13,11:[1,14],12:4,17:16,23:$V3,25:$V4,27:$V5,29:$V6,30:$V7,48:$V1},{1:[2,2]},{14:22,15:[1,23],51:$V8},o([15,51],[2,41]),o($V2,[2,8],{1:[2,1]}),o($V2,[2,4]),{7:15,10:25,12:4,17:16,23:$V3,25:$V4,27:$V5,29:$V6,30:$V7,48:$V1},o($V2,[2,6]),o($V2,[2,7]),o($V2,[2,11]),o($V2,[2,15],{18:26,39:28,20:[1,27],41:$V9,42:$Va,43:$Vb,44:$Vc}),{24:[1,33]},{26:[1,34]},{28:[1,35]},o($V2,[2,19]),o([6,9,11,15,20,23,25,27,29,30,41,42,43,44,48],[2,20]),{11:[1,36]},{16:37,50:[1,38]},{11:[2,43]},o($V2,[2,5]),{17:39,30:$V7},{21:40,22:[1,41],31:42,32:43,36:$Vd},{40:45,45:[1,46],46:[1,47]},o($Ve,[2,32]),o($Ve,[2,33]),o($Ve,[2,34]),o($Ve,[2,35]),o($V2,[2,16]),o($V2,[2,17]),o($V2,[2,18]),o($Vf,[2,9]),{14:48,51:$V8},{51:[2,42]},{15:[1,49]},{22:[1,50]},o($V2,[2,14]),{21:51,22:[2,21],31:42,32:43,36:$Vd},{33:52,36:[1,53]},{36:[2,27]},{39:54,41:$V9,42:$Va,43:$Vb,44:$Vc},o($Vg,[2,36]),o($Vg,[2,37]),{11:[1,55]},{19:56,30:[1,58],47:[1,57]},o($V2,[2,13]),{22:[2,22]},o($Vh,[2,23],{34:59,35:60,37:[1,61],38:$Vi}),o([22,36,37,38],[2,28]),{30:[2,31]},o($Vf,[2,10]),o($V2,[2,12]),o($V2,[2,38]),o($V2,[2,39]),o($Vh,[2,24],{35:63,38:$Vi}),o($Vh,[2,25]),o([22,36,38],[2,29]),o($Vh,[2,30]),o($Vh,[2,26])],\ndefaultActions: {5:[2,40],7:[2,2],24:[2,43],38:[2,42],44:[2,27],51:[2,22],54:[2,31]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin(\"acc_title\");return 25; \nbreak;\ncase 1: this.popState(); return \"acc_title_value\"; \nbreak;\ncase 2: this.begin(\"acc_descr\");return 27; \nbreak;\ncase 3: this.popState(); return \"acc_descr_value\"; \nbreak;\ncase 4: this.begin(\"acc_descr_multiline\");\nbreak;\ncase 5: this.popState(); \nbreak;\ncase 6:return \"acc_descr_multiline_value\";\nbreak;\ncase 7: this.begin('open_directive'); return 48; \nbreak;\ncase 8: this.begin('type_directive'); return 49; \nbreak;\ncase 9: this.popState(); this.begin('arg_directive'); return 15; \nbreak;\ncase 10: this.popState(); this.popState(); return 51; \nbreak;\ncase 11:return 50;\nbreak;\ncase 12:/* skip comments */\nbreak;\ncase 13:/* skip comments */\nbreak;\ncase 14:return 11;\nbreak;\ncase 15:/* skip whitespace */\nbreak;\ncase 16:return 9;\nbreak;\ncase 17:return 47;\nbreak;\ncase 18:return 4;\nbreak;\ncase 19: this.begin(\"block\"); return 20; \nbreak;\ncase 20:/* skip whitespace in block */\nbreak;\ncase 21:return 37\nbreak;\ncase 22:return 36\nbreak;\ncase 23:return 38;\nbreak;\ncase 24:/* nothing */\nbreak;\ncase 25: this.popState(); return 22; \nbreak;\ncase 26:return yy_.yytext[0];\nbreak;\ncase 27:return 41;\nbreak;\ncase 28:return 42;\nbreak;\ncase 29:return 43;\nbreak;\ncase 30:return 44;\nbreak;\ncase 31:return 41;\nbreak;\ncase 32:return 42;\nbreak;\ncase 33:return 43;\nbreak;\ncase 34:return 45;\nbreak;\ncase 35:return 46;\nbreak;\ncase 36:return 45;\nbreak;\ncase 37:return 45;\nbreak;\ncase 38:return 30;\nbreak;\ncase 39:return yy_.yytext[0];\nbreak;\ncase 40:return 6;\nbreak;\n}\n},\nrules: [/^(?:accTitle\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*\\{\\s*)/i,/^(?:[\\}])/i,/^(?:[^\\}]*)/i,/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:%(?!\\{)[^\\n]*)/i,/^(?:[^\\}]%%[^\\n]*)/i,/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?:[\\s]+)/i,/^(?:\"[^\"]*\")/i,/^(?:erDiagram\\b)/i,/^(?:\\{)/i,/^(?:\\s+)/i,/^(?:(?:PK)|(?:FK))/i,/^(?:[A-Za-z][A-Za-z0-9\\-_]*)/i,/^(?:\"[^\"]*\")/i,/^(?:[\\n]+)/i,/^(?:\\})/i,/^(?:.)/i,/^(?:\\|o\\b)/i,/^(?:\\}o\\b)/i,/^(?:\\}\\|)/i,/^(?:\\|\\|)/i,/^(?:o\\|)/i,/^(?:o\\{)/i,/^(?:\\|\\{)/i,/^(?:\\.\\.)/i,/^(?:--)/i,/^(?:\\.-)/i,/^(?:-\\.)/i,/^(?:[A-Za-z][A-Za-z0-9\\-_]*)/i,/^(?:.)/i,/^(?:$)/i],\nconditions: {\"acc_descr_multiline\":{\"rules\":[5,6],\"inclusive\":false},\"acc_descr\":{\"rules\":[3],\"inclusive\":false},\"acc_title\":{\"rules\":[1],\"inclusive\":false},\"open_directive\":{\"rules\":[8],\"inclusive\":false},\"type_directive\":{\"rules\":[9,10],\"inclusive\":false},\"arg_directive\":{\"rules\":[10,11],\"inclusive\":false},\"block\":{\"rules\":[20,21,22,23,24,25,26],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,2,4,7,12,13,14,15,16,17,18,19,27,28,29,30,31,32,33,34,35,36,37,38,39,40],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,9],$V1=[1,7],$V2=[1,6],$V3=[1,8],$V4=[1,20,21,22,23,38,44,46,48,52,66,67,86,87,88,89,90,91,95,105,106,109,111,112,118,119,120,121,122,123,124,125,126,127],$V5=[2,10],$V6=[1,20],$V7=[1,21],$V8=[1,22],$V9=[1,23],$Va=[1,30],$Vb=[1,32],$Vc=[1,33],$Vd=[1,34],$Ve=[1,62],$Vf=[1,48],$Vg=[1,52],$Vh=[1,36],$Vi=[1,37],$Vj=[1,38],$Vk=[1,39],$Vl=[1,40],$Vm=[1,56],$Vn=[1,63],$Vo=[1,51],$Vp=[1,53],$Vq=[1,55],$Vr=[1,59],$Vs=[1,60],$Vt=[1,41],$Vu=[1,42],$Vv=[1,43],$Vw=[1,44],$Vx=[1,61],$Vy=[1,50],$Vz=[1,54],$VA=[1,57],$VB=[1,58],$VC=[1,49],$VD=[1,66],$VE=[1,71],$VF=[1,20,21,22,23,38,42,44,46,48,52,66,67,86,87,88,89,90,91,95,105,106,109,111,112,118,119,120,121,122,123,124,125,126,127],$VG=[1,75],$VH=[1,74],$VI=[1,76],$VJ=[20,21,23,81,82],$VK=[1,99],$VL=[1,104],$VM=[1,107],$VN=[1,108],$VO=[1,101],$VP=[1,106],$VQ=[1,109],$VR=[1,102],$VS=[1,114],$VT=[1,113],$VU=[1,103],$VV=[1,105],$VW=[1,110],$VX=[1,111],$VY=[1,112],$VZ=[1,115],$V_=[20,21,22,23,81,82],$V$=[20,21,22,23,53,81,82],$V01=[20,21,22,23,40,52,53,55,57,59,61,63,65,66,67,69,71,73,74,76,81,82,91,95,105,106,109,111,112,122,123,124,125,126,127],$V11=[20,21,23],$V21=[20,21,23,52,66,67,81,82,91,95,105,106,109,111,112,122,123,124,125,126,127],$V31=[1,12,20,21,22,23,24,38,42,44,46,48,52,66,67,86,87,88,89,90,91,95,105,106,109,111,112,118,119,120,121,122,123,124,125,126,127],$V41=[52,66,67,91,95,105,106,109,111,112,122,123,124,125,126,127],$V51=[1,149],$V61=[1,157],$V71=[1,158],$V81=[1,159],$V91=[1,160],$Va1=[1,144],$Vb1=[1,145],$Vc1=[1,141],$Vd1=[1,152],$Ve1=[1,153],$Vf1=[1,154],$Vg1=[1,155],$Vh1=[1,156],$Vi1=[1,161],$Vj1=[1,162],$Vk1=[1,147],$Vl1=[1,150],$Vm1=[1,146],$Vn1=[1,143],$Vo1=[20,21,22,23,38,42,44,46,48,52,66,67,86,87,88,89,90,91,95,105,106,109,111,112,118,119,120,121,122,123,124,125,126,127],$Vp1=[1,165],$Vq1=[20,21,22,23,26,52,66,67,91,105,106,109,111,112,122,123,124,125,126,127],$Vr1=[20,21,22,23,24,26,38,40,41,42,52,56,58,60,62,64,66,67,68,70,72,73,75,77,81,82,86,87,88,89,90,91,92,95,105,106,109,111,112,113,114,122,123,124,125,126,127],$Vs1=[12,21,22,24],$Vt1=[22,106],$Vu1=[1,250],$Vv1=[1,245],$Vw1=[1,246],$Vx1=[1,254],$Vy1=[1,251],$Vz1=[1,248],$VA1=[1,247],$VB1=[1,249],$VC1=[1,252],$VD1=[1,253],$VE1=[1,255],$VF1=[1,273],$VG1=[20,21,23,106],$VH1=[20,21,22,23,66,67,86,102,105,106,109,110,111,112,113];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"mermaidDoc\":4,\"directive\":5,\"openDirective\":6,\"typeDirective\":7,\"closeDirective\":8,\"separator\":9,\":\":10,\"argDirective\":11,\"open_directive\":12,\"type_directive\":13,\"arg_directive\":14,\"close_directive\":15,\"graphConfig\":16,\"document\":17,\"line\":18,\"statement\":19,\"SEMI\":20,\"NEWLINE\":21,\"SPACE\":22,\"EOF\":23,\"GRAPH\":24,\"NODIR\":25,\"DIR\":26,\"FirstStmtSeperator\":27,\"ending\":28,\"endToken\":29,\"spaceList\":30,\"spaceListNewline\":31,\"verticeStatement\":32,\"styleStatement\":33,\"linkStyleStatement\":34,\"classDefStatement\":35,\"classStatement\":36,\"clickStatement\":37,\"subgraph\":38,\"text\":39,\"SQS\":40,\"SQE\":41,\"end\":42,\"direction\":43,\"acc_title\":44,\"acc_title_value\":45,\"acc_descr\":46,\"acc_descr_value\":47,\"acc_descr_multiline_value\":48,\"link\":49,\"node\":50,\"vertex\":51,\"AMP\":52,\"STYLE_SEPARATOR\":53,\"idString\":54,\"DOUBLECIRCLESTART\":55,\"DOUBLECIRCLEEND\":56,\"PS\":57,\"PE\":58,\"(-\":59,\"-)\":60,\"STADIUMSTART\":61,\"STADIUMEND\":62,\"SUBROUTINESTART\":63,\"SUBROUTINEEND\":64,\"VERTEX_WITH_PROPS_START\":65,\"ALPHA\":66,\"COLON\":67,\"PIPE\":68,\"CYLINDERSTART\":69,\"CYLINDEREND\":70,\"DIAMOND_START\":71,\"DIAMOND_STOP\":72,\"TAGEND\":73,\"TRAPSTART\":74,\"TRAPEND\":75,\"INVTRAPSTART\":76,\"INVTRAPEND\":77,\"linkStatement\":78,\"arrowText\":79,\"TESTSTR\":80,\"START_LINK\":81,\"LINK\":82,\"textToken\":83,\"STR\":84,\"keywords\":85,\"STYLE\":86,\"LINKSTYLE\":87,\"CLASSDEF\":88,\"CLASS\":89,\"CLICK\":90,\"DOWN\":91,\"UP\":92,\"textNoTags\":93,\"textNoTagsToken\":94,\"DEFAULT\":95,\"stylesOpt\":96,\"alphaNum\":97,\"CALLBACKNAME\":98,\"CALLBACKARGS\":99,\"HREF\":100,\"LINK_TARGET\":101,\"HEX\":102,\"numList\":103,\"INTERPOLATE\":104,\"NUM\":105,\"COMMA\":106,\"style\":107,\"styleComponent\":108,\"MINUS\":109,\"UNIT\":110,\"BRKT\":111,\"DOT\":112,\"PCT\":113,\"TAGSTART\":114,\"alphaNumToken\":115,\"idStringToken\":116,\"alphaNumStatement\":117,\"direction_tb\":118,\"direction_bt\":119,\"direction_rl\":120,\"direction_lr\":121,\"PUNCTUATION\":122,\"UNICODE_TEXT\":123,\"PLUS\":124,\"EQUALS\":125,\"MULT\":126,\"UNDERSCORE\":127,\"graphCodeTokens\":128,\"ARROW_CROSS\":129,\"ARROW_POINT\":130,\"ARROW_CIRCLE\":131,\"ARROW_OPEN\":132,\"QUOTE\":133,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",10:\":\",12:\"open_directive\",13:\"type_directive\",14:\"arg_directive\",15:\"close_directive\",20:\"SEMI\",21:\"NEWLINE\",22:\"SPACE\",23:\"EOF\",24:\"GRAPH\",25:\"NODIR\",26:\"DIR\",38:\"subgraph\",40:\"SQS\",41:\"SQE\",42:\"end\",44:\"acc_title\",45:\"acc_title_value\",46:\"acc_descr\",47:\"acc_descr_value\",48:\"acc_descr_multiline_value\",52:\"AMP\",53:\"STYLE_SEPARATOR\",55:\"DOUBLECIRCLESTART\",56:\"DOUBLECIRCLEEND\",57:\"PS\",58:\"PE\",59:\"(-\",60:\"-)\",61:\"STADIUMSTART\",62:\"STADIUMEND\",63:\"SUBROUTINESTART\",64:\"SUBROUTINEEND\",65:\"VERTEX_WITH_PROPS_START\",66:\"ALPHA\",67:\"COLON\",68:\"PIPE\",69:\"CYLINDERSTART\",70:\"CYLINDEREND\",71:\"DIAMOND_START\",72:\"DIAMOND_STOP\",73:\"TAGEND\",74:\"TRAPSTART\",75:\"TRAPEND\",76:\"INVTRAPSTART\",77:\"INVTRAPEND\",80:\"TESTSTR\",81:\"START_LINK\",82:\"LINK\",84:\"STR\",86:\"STYLE\",87:\"LINKSTYLE\",88:\"CLASSDEF\",89:\"CLASS\",90:\"CLICK\",91:\"DOWN\",92:\"UP\",95:\"DEFAULT\",98:\"CALLBACKNAME\",99:\"CALLBACKARGS\",100:\"HREF\",101:\"LINK_TARGET\",102:\"HEX\",104:\"INTERPOLATE\",105:\"NUM\",106:\"COMMA\",109:\"MINUS\",110:\"UNIT\",111:\"BRKT\",112:\"DOT\",113:\"PCT\",114:\"TAGSTART\",118:\"direction_tb\",119:\"direction_bt\",120:\"direction_rl\",121:\"direction_lr\",122:\"PUNCTUATION\",123:\"UNICODE_TEXT\",124:\"PLUS\",125:\"EQUALS\",126:\"MULT\",127:\"UNDERSCORE\",129:\"ARROW_CROSS\",130:\"ARROW_POINT\",131:\"ARROW_CIRCLE\",132:\"ARROW_OPEN\",133:\"QUOTE\"},\nproductions_: [0,[3,1],[3,2],[5,4],[5,6],[6,1],[7,1],[11,1],[8,1],[4,2],[17,0],[17,2],[18,1],[18,1],[18,1],[18,1],[18,1],[16,2],[16,2],[16,2],[16,3],[28,2],[28,1],[29,1],[29,1],[29,1],[27,1],[27,1],[27,2],[31,2],[31,2],[31,1],[31,1],[30,2],[30,1],[19,2],[19,2],[19,2],[19,2],[19,2],[19,2],[19,9],[19,6],[19,4],[19,1],[19,2],[19,2],[19,1],[9,1],[9,1],[9,1],[32,3],[32,4],[32,2],[32,1],[50,1],[50,5],[50,3],[51,4],[51,4],[51,6],[51,4],[51,4],[51,4],[51,8],[51,4],[51,4],[51,4],[51,6],[51,4],[51,4],[51,4],[51,4],[51,4],[51,1],[49,2],[49,3],[49,3],[49,1],[49,3],[78,1],[79,3],[39,1],[39,2],[39,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[93,1],[93,2],[35,5],[35,5],[36,5],[37,2],[37,4],[37,3],[37,5],[37,2],[37,4],[37,4],[37,6],[37,2],[37,4],[37,2],[37,4],[37,4],[37,6],[33,5],[33,5],[34,5],[34,5],[34,9],[34,9],[34,7],[34,7],[103,1],[103,3],[96,1],[96,3],[107,1],[107,2],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[94,1],[94,1],[94,1],[94,1],[54,1],[54,2],[97,1],[97,2],[117,1],[117,1],[117,1],[117,1],[43,1],[43,1],[43,1],[43,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1],[128,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 5:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 6:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 7:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 8:\n yy.parseDirective('}%%', 'close_directive', 'flowchart'); \nbreak;\ncase 10:\n this.$ = [];\nbreak;\ncase 11:\n\n\t if($$[$0] !== []){\n\t $$[$0-1].push($$[$0]);\n\t }\n\t this.$=$$[$0-1];\nbreak;\ncase 12: case 82: case 84: case 96: case 152: case 154: case 155:\nthis.$=$$[$0];\nbreak;\ncase 19:\n yy.setDirection('TB');this.$ = 'TB';\nbreak;\ncase 20:\n yy.setDirection($$[$0-1]);this.$ = $$[$0-1];\nbreak;\ncase 35:\n /* console.warn('finat vs', $$[$0-1].nodes); */ this.$=$$[$0-1].nodes\nbreak;\ncase 36: case 37: case 38: case 39: case 40:\nthis.$=[];\nbreak;\ncase 41:\nthis.$=yy.addSubGraph($$[$0-6],$$[$0-1],$$[$0-4]);\nbreak;\ncase 42:\nthis.$=yy.addSubGraph($$[$0-3],$$[$0-1],$$[$0-3]);\nbreak;\ncase 43:\nthis.$=yy.addSubGraph(undefined,$$[$0-1],undefined);\nbreak;\ncase 45:\n this.$=$$[$0].trim();yy.setTitle(this.$); \nbreak;\ncase 46: case 47:\n this.$=$$[$0].trim();yy.setAccDescription(this.$); \nbreak;\ncase 51:\n /* console.warn('vs',$$[$0-2].stmt,$$[$0]); */ yy.addLink($$[$0-2].stmt,$$[$0],$$[$0-1]); this.$ = { stmt: $$[$0], nodes: $$[$0].concat($$[$0-2].nodes) } \nbreak;\ncase 52:\n /* console.warn('vs',$$[$0-3].stmt,$$[$0-1]); */ yy.addLink($$[$0-3].stmt,$$[$0-1],$$[$0-2]); this.$ = { stmt: $$[$0-1], nodes: $$[$0-1].concat($$[$0-3].nodes) } \nbreak;\ncase 53:\n/*console.warn('noda', $$[$0-1]);*/ this.$ = {stmt: $$[$0-1], nodes:$$[$0-1] }\nbreak;\ncase 54:\n /*console.warn('noda', $$[$0]);*/ this.$ = {stmt: $$[$0], nodes:$$[$0] }\nbreak;\ncase 55:\n /* console.warn('nod', $$[$0]); */ this.$ = [$$[$0]];\nbreak;\ncase 56:\n this.$ = $$[$0-4].concat($$[$0]); /* console.warn('pip', $$[$0-4][0], $$[$0], this.$); */ \nbreak;\ncase 57:\nthis.$ = [$$[$0-2]];yy.setClass($$[$0-2],$$[$0])\nbreak;\ncase 58:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'square');\nbreak;\ncase 59:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'doublecircle');\nbreak;\ncase 60:\nthis.$ = $$[$0-5];yy.addVertex($$[$0-5],$$[$0-2],'circle');\nbreak;\ncase 61:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'ellipse');\nbreak;\ncase 62:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'stadium');\nbreak;\ncase 63:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'subroutine');\nbreak;\ncase 64:\nthis.$ = $$[$0-7];yy.addVertex($$[$0-7],$$[$0-1],'rect',undefined,undefined,undefined, Object.fromEntries([[$$[$0-5], $$[$0-3]]]));\nbreak;\ncase 65:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'cylinder');\nbreak;\ncase 66:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'round');\nbreak;\ncase 67:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'diamond');\nbreak;\ncase 68:\nthis.$ = $$[$0-5];yy.addVertex($$[$0-5],$$[$0-2],'hexagon');\nbreak;\ncase 69:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'odd');\nbreak;\ncase 70:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'trapezoid');\nbreak;\ncase 71:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'inv_trapezoid');\nbreak;\ncase 72:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'lean_right');\nbreak;\ncase 73:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'lean_left');\nbreak;\ncase 74:\n /*console.warn('h: ', $$[$0]);*/this.$ = $$[$0];yy.addVertex($$[$0]);\nbreak;\ncase 75:\n$$[$0-1].text = $$[$0];this.$ = $$[$0-1];\nbreak;\ncase 76: case 77:\n$$[$0-2].text = $$[$0-1];this.$ = $$[$0-2];\nbreak;\ncase 78:\nthis.$ = $$[$0];\nbreak;\ncase 79:\nvar inf = yy.destructLink($$[$0], $$[$0-2]); this.$ = {\"type\":inf.type,\"stroke\":inf.stroke,\"length\":inf.length,\"text\":$$[$0-1]};\nbreak;\ncase 80:\nvar inf = yy.destructLink($$[$0]);this.$ = {\"type\":inf.type,\"stroke\":inf.stroke,\"length\":inf.length};\nbreak;\ncase 81:\nthis.$ = $$[$0-1];\nbreak;\ncase 83: case 97: case 153:\nthis.$=$$[$0-1]+''+$$[$0];\nbreak;\ncase 98: case 99:\nthis.$ = $$[$0-4];yy.addClass($$[$0-2],$$[$0]);\nbreak;\ncase 100:\nthis.$ = $$[$0-4];yy.setClass($$[$0-2], $$[$0]);\nbreak;\ncase 101: case 109:\nthis.$ = $$[$0-1];yy.setClickEvent($$[$0-1], $$[$0]);\nbreak;\ncase 102: case 110:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-3], $$[$0-2]);yy.setTooltip($$[$0-3], $$[$0]);\nbreak;\ncase 103:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-2], $$[$0-1], $$[$0]);\nbreak;\ncase 104:\nthis.$ = $$[$0-4];yy.setClickEvent($$[$0-4], $$[$0-3], $$[$0-2]);yy.setTooltip($$[$0-4], $$[$0]);\nbreak;\ncase 105: case 111:\nthis.$ = $$[$0-1];yy.setLink($$[$0-1], $$[$0]);\nbreak;\ncase 106: case 112:\nthis.$ = $$[$0-3];yy.setLink($$[$0-3], $$[$0-2]);yy.setTooltip($$[$0-3], $$[$0]);\nbreak;\ncase 107: case 113:\nthis.$ = $$[$0-3];yy.setLink($$[$0-3], $$[$0-2], $$[$0]);\nbreak;\ncase 108: case 114:\nthis.$ = $$[$0-5];yy.setLink($$[$0-5], $$[$0-4], $$[$0]);yy.setTooltip($$[$0-5], $$[$0-2]);\nbreak;\ncase 115:\nthis.$ = $$[$0-4];yy.addVertex($$[$0-2],undefined,undefined,$$[$0]);\nbreak;\ncase 116: case 118:\nthis.$ = $$[$0-4];yy.updateLink($$[$0-2],$$[$0]);\nbreak;\ncase 117:\nthis.$ = $$[$0-4];yy.updateLink([$$[$0-2]],$$[$0]);\nbreak;\ncase 119:\nthis.$ = $$[$0-8];yy.updateLinkInterpolate([$$[$0-6]],$$[$0-2]);yy.updateLink([$$[$0-6]],$$[$0]);\nbreak;\ncase 120:\nthis.$ = $$[$0-8];yy.updateLinkInterpolate($$[$0-6],$$[$0-2]);yy.updateLink($$[$0-6],$$[$0]);\nbreak;\ncase 121:\nthis.$ = $$[$0-6];yy.updateLinkInterpolate([$$[$0-4]],$$[$0]);\nbreak;\ncase 122:\nthis.$ = $$[$0-6];yy.updateLinkInterpolate($$[$0-4],$$[$0]);\nbreak;\ncase 123: case 125:\nthis.$ = [$$[$0]]\nbreak;\ncase 124: case 126:\n$$[$0-2].push($$[$0]);this.$ = $$[$0-2];\nbreak;\ncase 128:\nthis.$ = $$[$0-1] + $$[$0];\nbreak;\ncase 150:\nthis.$=$$[$0]\nbreak;\ncase 151:\nthis.$=$$[$0-1]+''+$$[$0]\nbreak;\ncase 156:\nthis.$='v';\nbreak;\ncase 157:\nthis.$='-';\nbreak;\ncase 158:\n this.$={stmt:'dir', value:'TB'};\nbreak;\ncase 159:\n this.$={stmt:'dir', value:'BT'};\nbreak;\ncase 160:\n this.$={stmt:'dir', value:'RL'};\nbreak;\ncase 161:\n this.$={stmt:'dir', value:'LR'};\nbreak;\n}\n},\ntable: [{3:1,4:2,5:3,6:5,12:$V0,16:4,21:$V1,22:$V2,24:$V3},{1:[3]},{1:[2,1]},{3:10,4:2,5:3,6:5,12:$V0,16:4,21:$V1,22:$V2,24:$V3},o($V4,$V5,{17:11}),{7:12,13:[1,13]},{16:14,21:$V1,22:$V2,24:$V3},{16:15,21:$V1,22:$V2,24:$V3},{25:[1,16],26:[1,17]},{13:[2,5]},{1:[2,2]},{1:[2,9],18:18,19:19,20:$V6,21:$V7,22:$V8,23:$V9,32:24,33:25,34:26,35:27,36:28,37:29,38:$Va,43:31,44:$Vb,46:$Vc,48:$Vd,50:35,51:45,52:$Ve,54:46,66:$Vf,67:$Vg,86:$Vh,87:$Vi,88:$Vj,89:$Vk,90:$Vl,91:$Vm,95:$Vn,105:$Vo,106:$Vp,109:$Vq,111:$Vr,112:$Vs,116:47,118:$Vt,119:$Vu,120:$Vv,121:$Vw,122:$Vx,123:$Vy,124:$Vz,125:$VA,126:$VB,127:$VC},{8:64,10:[1,65],15:$VD},o([10,15],[2,6]),o($V4,[2,17]),o($V4,[2,18]),o($V4,[2,19]),{20:[1,68],21:[1,69],22:$VE,27:67,30:70},o($VF,[2,11]),o($VF,[2,12]),o($VF,[2,13]),o($VF,[2,14]),o($VF,[2,15]),o($VF,[2,16]),{9:72,20:$VG,21:$VH,23:$VI,49:73,78:77,81:[1,78],82:[1,79]},{9:80,20:$VG,21:$VH,23:$VI},{9:81,20:$VG,21:$VH,23:$VI},{9:82,20:$VG,21:$VH,23:$VI},{9:83,20:$VG,21:$VH,23:$VI},{9:84,20:$VG,21:$VH,23:$VI},{9:86,20:$VG,21:$VH,22:[1,85],23:$VI},o($VF,[2,44]),{45:[1,87]},{47:[1,88]},o($VF,[2,47]),o($VJ,[2,54],{30:89,22:$VE}),{22:[1,90]},{22:[1,91]},{22:[1,92]},{22:[1,93]},{26:$VK,52:$VL,66:$VM,67:$VN,84:[1,97],91:$VO,97:96,98:[1,94],100:[1,95],105:$VP,106:$VQ,109:$VR,111:$VS,112:$VT,115:100,117:98,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},o($VF,[2,158]),o($VF,[2,159]),o($VF,[2,160]),o($VF,[2,161]),o($V_,[2,55],{53:[1,116]}),o($V$,[2,74],{116:129,40:[1,117],52:$Ve,55:[1,118],57:[1,119],59:[1,120],61:[1,121],63:[1,122],65:[1,123],66:$Vf,67:$Vg,69:[1,124],71:[1,125],73:[1,126],74:[1,127],76:[1,128],91:$Vm,95:$Vn,105:$Vo,106:$Vp,109:$Vq,111:$Vr,112:$Vs,122:$Vx,123:$Vy,124:$Vz,125:$VA,126:$VB,127:$VC}),o($V01,[2,150]),o($V01,[2,175]),o($V01,[2,176]),o($V01,[2,177]),o($V01,[2,178]),o($V01,[2,179]),o($V01,[2,180]),o($V01,[2,181]),o($V01,[2,182]),o($V01,[2,183]),o($V01,[2,184]),o($V01,[2,185]),o($V01,[2,186]),o($V01,[2,187]),o($V01,[2,188]),o($V01,[2,189]),o($V01,[2,190]),{9:130,20:$VG,21:$VH,23:$VI},{11:131,14:[1,132]},o($V11,[2,8]),o($V4,[2,20]),o($V4,[2,26]),o($V4,[2,27]),{21:[1,133]},o($V21,[2,34],{30:134,22:$VE}),o($VF,[2,35]),{50:135,51:45,52:$Ve,54:46,66:$Vf,67:$Vg,91:$Vm,95:$Vn,105:$Vo,106:$Vp,109:$Vq,111:$Vr,112:$Vs,116:47,122:$Vx,123:$Vy,124:$Vz,125:$VA,126:$VB,127:$VC},o($V31,[2,48]),o($V31,[2,49]),o($V31,[2,50]),o($V41,[2,78],{79:136,68:[1,138],80:[1,137]}),{22:$V51,24:$V61,26:$V71,38:$V81,39:139,42:$V91,52:$VL,66:$VM,67:$VN,73:$Va1,81:$Vb1,83:140,84:$Vc1,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},o([52,66,67,68,80,91,95,105,106,109,111,112,122,123,124,125,126,127],[2,80]),o($VF,[2,36]),o($VF,[2,37]),o($VF,[2,38]),o($VF,[2,39]),o($VF,[2,40]),{22:$V51,24:$V61,26:$V71,38:$V81,39:163,42:$V91,52:$VL,66:$VM,67:$VN,73:$Va1,81:$Vb1,83:140,84:$Vc1,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},o($Vo1,$V5,{17:164}),o($VF,[2,45]),o($VF,[2,46]),o($VJ,[2,53],{52:$Vp1}),{26:$VK,52:$VL,66:$VM,67:$VN,91:$VO,97:166,102:[1,167],105:$VP,106:$VQ,109:$VR,111:$VS,112:$VT,115:100,117:98,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{95:[1,168],103:169,105:[1,170]},{26:$VK,52:$VL,66:$VM,67:$VN,91:$VO,95:[1,171],97:172,105:$VP,106:$VQ,109:$VR,111:$VS,112:$VT,115:100,117:98,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{26:$VK,52:$VL,66:$VM,67:$VN,91:$VO,97:173,105:$VP,106:$VQ,109:$VR,111:$VS,112:$VT,115:100,117:98,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},o($V11,[2,101],{22:[1,174],99:[1,175]}),o($V11,[2,105],{22:[1,176]}),o($V11,[2,109],{115:100,117:178,22:[1,177],26:$VK,52:$VL,66:$VM,67:$VN,91:$VO,105:$VP,106:$VQ,109:$VR,111:$VS,112:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ}),o($V11,[2,111],{22:[1,179]}),o($Vq1,[2,152]),o($Vq1,[2,154]),o($Vq1,[2,155]),o($Vq1,[2,156]),o($Vq1,[2,157]),o($Vr1,[2,162]),o($Vr1,[2,163]),o($Vr1,[2,164]),o($Vr1,[2,165]),o($Vr1,[2,166]),o($Vr1,[2,167]),o($Vr1,[2,168]),o($Vr1,[2,169]),o($Vr1,[2,170]),o($Vr1,[2,171]),o($Vr1,[2,172]),o($Vr1,[2,173]),o($Vr1,[2,174]),{52:$Ve,54:180,66:$Vf,67:$Vg,91:$Vm,95:$Vn,105:$Vo,106:$Vp,109:$Vq,111:$Vr,112:$Vs,116:47,122:$Vx,123:$Vy,124:$Vz,125:$VA,126:$VB,127:$VC},{22:$V51,24:$V61,26:$V71,38:$V81,39:181,42:$V91,52:$VL,66:$VM,67:$VN,73:$Va1,81:$Vb1,83:140,84:$Vc1,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{22:$V51,24:$V61,26:$V71,38:$V81,39:182,42:$V91,52:$VL,66:$VM,67:$VN,73:$Va1,81:$Vb1,83:140,84:$Vc1,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{22:$V51,24:$V61,26:$V71,38:$V81,39:184,42:$V91,52:$VL,57:[1,183],66:$VM,67:$VN,73:$Va1,81:$Vb1,83:140,84:$Vc1,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{22:$V51,24:$V61,26:$V71,38:$V81,39:185,42:$V91,52:$VL,66:$VM,67:$VN,73:$Va1,81:$Vb1,83:140,84:$Vc1,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{22:$V51,24:$V61,26:$V71,38:$V81,39:186,42:$V91,52:$VL,66:$VM,67:$VN,73:$Va1,81:$Vb1,83:140,84:$Vc1,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{22:$V51,24:$V61,26:$V71,38:$V81,39:187,42:$V91,52:$VL,66:$VM,67:$VN,73:$Va1,81:$Vb1,83:140,84:$Vc1,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{66:[1,188]},{22:$V51,24:$V61,26:$V71,38:$V81,39:189,42:$V91,52:$VL,66:$VM,67:$VN,73:$Va1,81:$Vb1,83:140,84:$Vc1,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{22:$V51,24:$V61,26:$V71,38:$V81,39:190,42:$V91,52:$VL,66:$VM,67:$VN,71:[1,191],73:$Va1,81:$Vb1,83:140,84:$Vc1,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{22:$V51,24:$V61,26:$V71,38:$V81,39:192,42:$V91,52:$VL,66:$VM,67:$VN,73:$Va1,81:$Vb1,83:140,84:$Vc1,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{22:$V51,24:$V61,26:$V71,38:$V81,39:193,42:$V91,52:$VL,66:$VM,67:$VN,73:$Va1,81:$Vb1,83:140,84:$Vc1,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{22:$V51,24:$V61,26:$V71,38:$V81,39:194,42:$V91,52:$VL,66:$VM,67:$VN,73:$Va1,81:$Vb1,83:140,84:$Vc1,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},o($V01,[2,151]),o($Vs1,[2,3]),{8:195,15:$VD},{15:[2,7]},o($V4,[2,28]),o($V21,[2,33]),o($VJ,[2,51],{30:196,22:$VE}),o($V41,[2,75],{22:[1,197]}),{22:[1,198]},{22:$V51,24:$V61,26:$V71,38:$V81,39:199,42:$V91,52:$VL,66:$VM,67:$VN,73:$Va1,81:$Vb1,83:140,84:$Vc1,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{22:$V51,24:$V61,26:$V71,38:$V81,42:$V91,52:$VL,66:$VM,67:$VN,73:$Va1,81:$Vb1,82:[1,200],83:201,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},o($Vr1,[2,82]),o($Vr1,[2,84]),o($Vr1,[2,140]),o($Vr1,[2,141]),o($Vr1,[2,142]),o($Vr1,[2,143]),o($Vr1,[2,144]),o($Vr1,[2,145]),o($Vr1,[2,146]),o($Vr1,[2,147]),o($Vr1,[2,148]),o($Vr1,[2,149]),o($Vr1,[2,85]),o($Vr1,[2,86]),o($Vr1,[2,87]),o($Vr1,[2,88]),o($Vr1,[2,89]),o($Vr1,[2,90]),o($Vr1,[2,91]),o($Vr1,[2,92]),o($Vr1,[2,93]),o($Vr1,[2,94]),o($Vr1,[2,95]),{9:203,20:$VG,21:$VH,22:$V51,23:$VI,24:$V61,26:$V71,38:$V81,40:[1,202],42:$V91,52:$VL,66:$VM,67:$VN,73:$Va1,81:$Vb1,83:201,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{18:18,19:19,20:$V6,21:$V7,22:$V8,23:$V9,32:24,33:25,34:26,35:27,36:28,37:29,38:$Va,42:[1,204],43:31,44:$Vb,46:$Vc,48:$Vd,50:35,51:45,52:$Ve,54:46,66:$Vf,67:$Vg,86:$Vh,87:$Vi,88:$Vj,89:$Vk,90:$Vl,91:$Vm,95:$Vn,105:$Vo,106:$Vp,109:$Vq,111:$Vr,112:$Vs,116:47,118:$Vt,119:$Vu,120:$Vv,121:$Vw,122:$Vx,123:$Vy,124:$Vz,125:$VA,126:$VB,127:$VC},{22:$VE,30:205},{22:[1,206],26:$VK,52:$VL,66:$VM,67:$VN,91:$VO,105:$VP,106:$VQ,109:$VR,111:$VS,112:$VT,115:100,117:178,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{22:[1,207]},{22:[1,208]},{22:[1,209],106:[1,210]},o($Vt1,[2,123]),{22:[1,211]},{22:[1,212],26:$VK,52:$VL,66:$VM,67:$VN,91:$VO,105:$VP,106:$VQ,109:$VR,111:$VS,112:$VT,115:100,117:178,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{22:[1,213],26:$VK,52:$VL,66:$VM,67:$VN,91:$VO,105:$VP,106:$VQ,109:$VR,111:$VS,112:$VT,115:100,117:178,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{84:[1,214]},o($V11,[2,103],{22:[1,215]}),{84:[1,216],101:[1,217]},{84:[1,218]},o($Vq1,[2,153]),{84:[1,219],101:[1,220]},o($V_,[2,57],{116:129,52:$Ve,66:$Vf,67:$Vg,91:$Vm,95:$Vn,105:$Vo,106:$Vp,109:$Vq,111:$Vr,112:$Vs,122:$Vx,123:$Vy,124:$Vz,125:$VA,126:$VB,127:$VC}),{22:$V51,24:$V61,26:$V71,38:$V81,41:[1,221],42:$V91,52:$VL,66:$VM,67:$VN,73:$Va1,81:$Vb1,83:201,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{22:$V51,24:$V61,26:$V71,38:$V81,42:$V91,52:$VL,56:[1,222],66:$VM,67:$VN,73:$Va1,81:$Vb1,83:201,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{22:$V51,24:$V61,26:$V71,38:$V81,39:223,42:$V91,52:$VL,66:$VM,67:$VN,73:$Va1,81:$Vb1,83:140,84:$Vc1,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{22:$V51,24:$V61,26:$V71,38:$V81,42:$V91,52:$VL,58:[1,224],66:$VM,67:$VN,73:$Va1,81:$Vb1,83:201,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{22:$V51,24:$V61,26:$V71,38:$V81,42:$V91,52:$VL,60:[1,225],66:$VM,67:$VN,73:$Va1,81:$Vb1,83:201,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{22:$V51,24:$V61,26:$V71,38:$V81,42:$V91,52:$VL,62:[1,226],66:$VM,67:$VN,73:$Va1,81:$Vb1,83:201,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{22:$V51,24:$V61,26:$V71,38:$V81,42:$V91,52:$VL,64:[1,227],66:$VM,67:$VN,73:$Va1,81:$Vb1,83:201,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{67:[1,228]},{22:$V51,24:$V61,26:$V71,38:$V81,42:$V91,52:$VL,66:$VM,67:$VN,70:[1,229],73:$Va1,81:$Vb1,83:201,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{22:$V51,24:$V61,26:$V71,38:$V81,42:$V91,52:$VL,66:$VM,67:$VN,72:[1,230],73:$Va1,81:$Vb1,83:201,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{22:$V51,24:$V61,26:$V71,38:$V81,39:231,42:$V91,52:$VL,66:$VM,67:$VN,73:$Va1,81:$Vb1,83:140,84:$Vc1,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{22:$V51,24:$V61,26:$V71,38:$V81,41:[1,232],42:$V91,52:$VL,66:$VM,67:$VN,73:$Va1,81:$Vb1,83:201,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{22:$V51,24:$V61,26:$V71,38:$V81,42:$V91,52:$VL,66:$VM,67:$VN,73:$Va1,75:[1,233],77:[1,234],81:$Vb1,83:201,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{22:$V51,24:$V61,26:$V71,38:$V81,42:$V91,52:$VL,66:$VM,67:$VN,73:$Va1,75:[1,236],77:[1,235],81:$Vb1,83:201,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{9:237,20:$VG,21:$VH,23:$VI},o($VJ,[2,52],{52:$Vp1}),o($V41,[2,77]),o($V41,[2,76]),{22:$V51,24:$V61,26:$V71,38:$V81,42:$V91,52:$VL,66:$VM,67:$VN,68:[1,238],73:$Va1,81:$Vb1,83:201,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},o($V41,[2,79]),o($Vr1,[2,83]),{22:$V51,24:$V61,26:$V71,38:$V81,39:239,42:$V91,52:$VL,66:$VM,67:$VN,73:$Va1,81:$Vb1,83:140,84:$Vc1,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},o($Vo1,$V5,{17:240}),o($VF,[2,43]),{51:241,52:$Ve,54:46,66:$Vf,67:$Vg,91:$Vm,95:$Vn,105:$Vo,106:$Vp,109:$Vq,111:$Vr,112:$Vs,116:47,122:$Vx,123:$Vy,124:$Vz,125:$VA,126:$VB,127:$VC},{22:$Vu1,66:$Vv1,67:$Vw1,86:$Vx1,96:242,102:$Vy1,105:$Vz1,107:243,108:244,109:$VA1,110:$VB1,111:$VC1,112:$VD1,113:$VE1},{22:$Vu1,66:$Vv1,67:$Vw1,86:$Vx1,96:256,102:$Vy1,105:$Vz1,107:243,108:244,109:$VA1,110:$VB1,111:$VC1,112:$VD1,113:$VE1},{22:$Vu1,66:$Vv1,67:$Vw1,86:$Vx1,96:257,102:$Vy1,104:[1,258],105:$Vz1,107:243,108:244,109:$VA1,110:$VB1,111:$VC1,112:$VD1,113:$VE1},{22:$Vu1,66:$Vv1,67:$Vw1,86:$Vx1,96:259,102:$Vy1,104:[1,260],105:$Vz1,107:243,108:244,109:$VA1,110:$VB1,111:$VC1,112:$VD1,113:$VE1},{105:[1,261]},{22:$Vu1,66:$Vv1,67:$Vw1,86:$Vx1,96:262,102:$Vy1,105:$Vz1,107:243,108:244,109:$VA1,110:$VB1,111:$VC1,112:$VD1,113:$VE1},{22:$Vu1,66:$Vv1,67:$Vw1,86:$Vx1,96:263,102:$Vy1,105:$Vz1,107:243,108:244,109:$VA1,110:$VB1,111:$VC1,112:$VD1,113:$VE1},{26:$VK,52:$VL,66:$VM,67:$VN,91:$VO,97:264,105:$VP,106:$VQ,109:$VR,111:$VS,112:$VT,115:100,117:98,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},o($V11,[2,102]),{84:[1,265]},o($V11,[2,106],{22:[1,266]}),o($V11,[2,107]),o($V11,[2,110]),o($V11,[2,112],{22:[1,267]}),o($V11,[2,113]),o($V$,[2,58]),o($V$,[2,59]),{22:$V51,24:$V61,26:$V71,38:$V81,42:$V91,52:$VL,58:[1,268],66:$VM,67:$VN,73:$Va1,81:$Vb1,83:201,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},o($V$,[2,66]),o($V$,[2,61]),o($V$,[2,62]),o($V$,[2,63]),{66:[1,269]},o($V$,[2,65]),o($V$,[2,67]),{22:$V51,24:$V61,26:$V71,38:$V81,42:$V91,52:$VL,66:$VM,67:$VN,72:[1,270],73:$Va1,81:$Vb1,83:201,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},o($V$,[2,69]),o($V$,[2,70]),o($V$,[2,72]),o($V$,[2,71]),o($V$,[2,73]),o($Vs1,[2,4]),o([22,52,66,67,91,95,105,106,109,111,112,122,123,124,125,126,127],[2,81]),{22:$V51,24:$V61,26:$V71,38:$V81,41:[1,271],42:$V91,52:$VL,66:$VM,67:$VN,73:$Va1,81:$Vb1,83:201,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{18:18,19:19,20:$V6,21:$V7,22:$V8,23:$V9,32:24,33:25,34:26,35:27,36:28,37:29,38:$Va,42:[1,272],43:31,44:$Vb,46:$Vc,48:$Vd,50:35,51:45,52:$Ve,54:46,66:$Vf,67:$Vg,86:$Vh,87:$Vi,88:$Vj,89:$Vk,90:$Vl,91:$Vm,95:$Vn,105:$Vo,106:$Vp,109:$Vq,111:$Vr,112:$Vs,116:47,118:$Vt,119:$Vu,120:$Vv,121:$Vw,122:$Vx,123:$Vy,124:$Vz,125:$VA,126:$VB,127:$VC},o($V_,[2,56]),o($V11,[2,115],{106:$VF1}),o($VG1,[2,125],{108:274,22:$Vu1,66:$Vv1,67:$Vw1,86:$Vx1,102:$Vy1,105:$Vz1,109:$VA1,110:$VB1,111:$VC1,112:$VD1,113:$VE1}),o($VH1,[2,127]),o($VH1,[2,129]),o($VH1,[2,130]),o($VH1,[2,131]),o($VH1,[2,132]),o($VH1,[2,133]),o($VH1,[2,134]),o($VH1,[2,135]),o($VH1,[2,136]),o($VH1,[2,137]),o($VH1,[2,138]),o($VH1,[2,139]),o($V11,[2,116],{106:$VF1}),o($V11,[2,117],{106:$VF1}),{22:[1,275]},o($V11,[2,118],{106:$VF1}),{22:[1,276]},o($Vt1,[2,124]),o($V11,[2,98],{106:$VF1}),o($V11,[2,99],{106:$VF1}),o($V11,[2,100],{115:100,117:178,26:$VK,52:$VL,66:$VM,67:$VN,91:$VO,105:$VP,106:$VQ,109:$VR,111:$VS,112:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ}),o($V11,[2,104]),{101:[1,277]},{101:[1,278]},{58:[1,279]},{68:[1,280]},{72:[1,281]},{9:282,20:$VG,21:$VH,23:$VI},o($VF,[2,42]),{22:$Vu1,66:$Vv1,67:$Vw1,86:$Vx1,102:$Vy1,105:$Vz1,107:283,108:244,109:$VA1,110:$VB1,111:$VC1,112:$VD1,113:$VE1},o($VH1,[2,128]),{26:$VK,52:$VL,66:$VM,67:$VN,91:$VO,97:284,105:$VP,106:$VQ,109:$VR,111:$VS,112:$VT,115:100,117:98,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{26:$VK,52:$VL,66:$VM,67:$VN,91:$VO,97:285,105:$VP,106:$VQ,109:$VR,111:$VS,112:$VT,115:100,117:98,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},o($V11,[2,108]),o($V11,[2,114]),o($V$,[2,60]),{22:$V51,24:$V61,26:$V71,38:$V81,39:286,42:$V91,52:$VL,66:$VM,67:$VN,73:$Va1,81:$Vb1,83:140,84:$Vc1,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},o($V$,[2,68]),o($Vo1,$V5,{17:287}),o($VG1,[2,126],{108:274,22:$Vu1,66:$Vv1,67:$Vw1,86:$Vx1,102:$Vy1,105:$Vz1,109:$VA1,110:$VB1,111:$VC1,112:$VD1,113:$VE1}),o($V11,[2,121],{115:100,117:178,22:[1,288],26:$VK,52:$VL,66:$VM,67:$VN,91:$VO,105:$VP,106:$VQ,109:$VR,111:$VS,112:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ}),o($V11,[2,122],{115:100,117:178,22:[1,289],26:$VK,52:$VL,66:$VM,67:$VN,91:$VO,105:$VP,106:$VQ,109:$VR,111:$VS,112:$VT,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ}),{22:$V51,24:$V61,26:$V71,38:$V81,41:[1,290],42:$V91,52:$VL,66:$VM,67:$VN,73:$Va1,81:$Vb1,83:201,85:151,86:$Vd1,87:$Ve1,88:$Vf1,89:$Vg1,90:$Vh1,91:$Vi1,92:$Vj1,94:142,95:$Vk1,105:$VP,106:$VQ,109:$Vl1,111:$VS,112:$VT,113:$Vm1,114:$Vn1,115:148,122:$VU,123:$VV,124:$VW,125:$VX,126:$VY,127:$VZ},{18:18,19:19,20:$V6,21:$V7,22:$V8,23:$V9,32:24,33:25,34:26,35:27,36:28,37:29,38:$Va,42:[1,291],43:31,44:$Vb,46:$Vc,48:$Vd,50:35,51:45,52:$Ve,54:46,66:$Vf,67:$Vg,86:$Vh,87:$Vi,88:$Vj,89:$Vk,90:$Vl,91:$Vm,95:$Vn,105:$Vo,106:$Vp,109:$Vq,111:$Vr,112:$Vs,116:47,118:$Vt,119:$Vu,120:$Vv,121:$Vw,122:$Vx,123:$Vy,124:$Vz,125:$VA,126:$VB,127:$VC},{22:$Vu1,66:$Vv1,67:$Vw1,86:$Vx1,96:292,102:$Vy1,105:$Vz1,107:243,108:244,109:$VA1,110:$VB1,111:$VC1,112:$VD1,113:$VE1},{22:$Vu1,66:$Vv1,67:$Vw1,86:$Vx1,96:293,102:$Vy1,105:$Vz1,107:243,108:244,109:$VA1,110:$VB1,111:$VC1,112:$VD1,113:$VE1},o($V$,[2,64]),o($VF,[2,41]),o($V11,[2,119],{106:$VF1}),o($V11,[2,120],{106:$VF1})],\ndefaultActions: {2:[2,1],9:[2,5],10:[2,2],132:[2,7]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 12; \nbreak;\ncase 1: this.begin('type_directive'); return 13; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 10; \nbreak;\ncase 3: this.popState(); this.popState(); return 15; \nbreak;\ncase 4:return 14;\nbreak;\ncase 5:/* skip comments */\nbreak;\ncase 6:/* skip comments */\nbreak;\ncase 7: this.begin(\"acc_title\");return 44; \nbreak;\ncase 8: this.popState(); return \"acc_title_value\"; \nbreak;\ncase 9: this.begin(\"acc_descr\");return 46; \nbreak;\ncase 10: this.popState(); return \"acc_descr_value\"; \nbreak;\ncase 11: this.begin(\"acc_descr_multiline\");\nbreak;\ncase 12: this.popState(); \nbreak;\ncase 13:return \"acc_descr_multiline_value\";\nbreak;\ncase 14:this.begin(\"string\");\nbreak;\ncase 15:this.popState();\nbreak;\ncase 16:return \"STR\";\nbreak;\ncase 17:return 86;\nbreak;\ncase 18:return 95;\nbreak;\ncase 19:return 87;\nbreak;\ncase 20:return 104;\nbreak;\ncase 21:return 88;\nbreak;\ncase 22:return 89;\nbreak;\ncase 23:this.begin(\"href\");\nbreak;\ncase 24:this.popState();\nbreak;\ncase 25:return 100;\nbreak;\ncase 26:this.begin(\"callbackname\");\nbreak;\ncase 27:this.popState();\nbreak;\ncase 28:this.popState(); this.begin(\"callbackargs\");\nbreak;\ncase 29:return 98;\nbreak;\ncase 30:this.popState();\nbreak;\ncase 31:return 99;\nbreak;\ncase 32:this.begin(\"click\");\nbreak;\ncase 33:this.popState();\nbreak;\ncase 34:return 90;\nbreak;\ncase 35:if(yy.lex.firstGraph()){this.begin(\"dir\");} return 24;\nbreak;\ncase 36:if(yy.lex.firstGraph()){this.begin(\"dir\");} return 24;\nbreak;\ncase 37:return 38;\nbreak;\ncase 38:return 42;\nbreak;\ncase 39:return 101;\nbreak;\ncase 40:return 101;\nbreak;\ncase 41:return 101;\nbreak;\ncase 42:return 101;\nbreak;\ncase 43: this.popState(); return 25; \nbreak;\ncase 44: this.popState(); return 26; \nbreak;\ncase 45: this.popState(); return 26; \nbreak;\ncase 46: this.popState(); return 26; \nbreak;\ncase 47: this.popState(); return 26; \nbreak;\ncase 48: this.popState(); return 26; \nbreak;\ncase 49: this.popState(); return 26; \nbreak;\ncase 50: this.popState(); return 26; \nbreak;\ncase 51: this.popState(); return 26; \nbreak;\ncase 52: this.popState(); return 26; \nbreak;\ncase 53: this.popState(); return 26; \nbreak;\ncase 54:return 118;\nbreak;\ncase 55:return 119;\nbreak;\ncase 56:return 120;\nbreak;\ncase 57:return 121;\nbreak;\ncase 58: return 105;\nbreak;\ncase 59:return 111;\nbreak;\ncase 60:return 53;\nbreak;\ncase 61:return 67;\nbreak;\ncase 62:return 52;\nbreak;\ncase 63:return 20;\nbreak;\ncase 64:return 106;\nbreak;\ncase 65:return 126;\nbreak;\ncase 66:return 82;\nbreak;\ncase 67:return 82;\nbreak;\ncase 68:return 82;\nbreak;\ncase 69:return 81;\nbreak;\ncase 70:return 81;\nbreak;\ncase 71:return 81;\nbreak;\ncase 72:return 59;\nbreak;\ncase 73:return 60;\nbreak;\ncase 74:return 61;\nbreak;\ncase 75:return 62;\nbreak;\ncase 76:return 63;\nbreak;\ncase 77:return 64;\nbreak;\ncase 78:return 65;\nbreak;\ncase 79:return 69;\nbreak;\ncase 80:return 70;\nbreak;\ncase 81:return 55;\nbreak;\ncase 82:return 56;\nbreak;\ncase 83:return 109;\nbreak;\ncase 84:return 112;\nbreak;\ncase 85:return 127;\nbreak;\ncase 86:return 124;\nbreak;\ncase 87:return 113;\nbreak;\ncase 88:return 125;\nbreak;\ncase 89:return 125;\nbreak;\ncase 90:return 114;\nbreak;\ncase 91:return 73;\nbreak;\ncase 92:return 92;\nbreak;\ncase 93:return 'SEP';\nbreak;\ncase 94:return 91;\nbreak;\ncase 95:return 66;\nbreak;\ncase 96:return 75;\nbreak;\ncase 97:return 74;\nbreak;\ncase 98:return 77;\nbreak;\ncase 99:return 76;\nbreak;\ncase 100:return 122;\nbreak;\ncase 101:return 123;\nbreak;\ncase 102:return 68;\nbreak;\ncase 103:return 57;\nbreak;\ncase 104:return 58;\nbreak;\ncase 105:return 40;\nbreak;\ncase 106:return 41;\nbreak;\ncase 107:return 71\nbreak;\ncase 108:return 72\nbreak;\ncase 109:return 133;\nbreak;\ncase 110:return 21;\nbreak;\ncase 111:return 22;\nbreak;\ncase 112:return 23;\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/,/^(?:((?:(?!\\}%%)[^:.])*))/,/^(?::)/,/^(?:\\}%%)/,/^(?:((?:(?!\\}%%).|\\n)*))/,/^(?:%%(?!\\{)[^\\n]*)/,/^(?:[^\\}]%%[^\\n]*)/,/^(?:accTitle\\s*:\\s*)/,/^(?:(?!\\n||)*[^\\n]*)/,/^(?:accDescr\\s*:\\s*)/,/^(?:(?!\\n||)*[^\\n]*)/,/^(?:accDescr\\s*\\{\\s*)/,/^(?:[\\}])/,/^(?:[^\\}]*)/,/^(?:[\"])/,/^(?:[\"])/,/^(?:[^\"]*)/,/^(?:style\\b)/,/^(?:default\\b)/,/^(?:linkStyle\\b)/,/^(?:interpolate\\b)/,/^(?:classDef\\b)/,/^(?:class\\b)/,/^(?:href[\\s]+[\"])/,/^(?:[\"])/,/^(?:[^\"]*)/,/^(?:call[\\s]+)/,/^(?:\\([\\s]*\\))/,/^(?:\\()/,/^(?:[^(]*)/,/^(?:\\))/,/^(?:[^)]*)/,/^(?:click[\\s]+)/,/^(?:[\\s\\n])/,/^(?:[^\\s\\n]*)/,/^(?:graph\\b)/,/^(?:flowchart\\b)/,/^(?:subgraph\\b)/,/^(?:end\\b\\s*)/,/^(?:_self\\b)/,/^(?:_blank\\b)/,/^(?:_parent\\b)/,/^(?:_top\\b)/,/^(?:(\\r?\\n)*\\s*\\n)/,/^(?:\\s*LR\\b)/,/^(?:\\s*RL\\b)/,/^(?:\\s*TB\\b)/,/^(?:\\s*BT\\b)/,/^(?:\\s*TD\\b)/,/^(?:\\s*BR\\b)/,/^(?:\\s*<)/,/^(?:\\s*>)/,/^(?:\\s*\\^)/,/^(?:\\s*v\\b)/,/^(?:.*direction\\s+TB[^\\n]*)/,/^(?:.*direction\\s+BT[^\\n]*)/,/^(?:.*direction\\s+RL[^\\n]*)/,/^(?:.*direction\\s+LR[^\\n]*)/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::::)/,/^(?::)/,/^(?:&)/,/^(?:;)/,/^(?:,)/,/^(?:\\*)/,/^(?:\\s*[xo<]?--+[-xo>]\\s*)/,/^(?:\\s*[xo<]?==+[=xo>]\\s*)/,/^(?:\\s*[xo<]?-?\\.+-[xo>]?\\s*)/,/^(?:\\s*[xo<]?--\\s*)/,/^(?:\\s*[xo<]?==\\s*)/,/^(?:\\s*[xo<]?-\\.\\s*)/,/^(?:\\(-)/,/^(?:-\\))/,/^(?:\\(\\[)/,/^(?:\\]\\))/,/^(?:\\[\\[)/,/^(?:\\]\\])/,/^(?:\\[\\|)/,/^(?:\\[\\()/,/^(?:\\)\\])/,/^(?:\\(\\(\\()/,/^(?:\\)\\)\\))/,/^(?:-)/,/^(?:\\.)/,/^(?:[\\_])/,/^(?:\\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:<)/,/^(?:>)/,/^(?:\\^)/,/^(?:\\\\\\|)/,/^(?:v\\b)/,/^(?:[A-Za-z]+)/,/^(?:\\\\\\])/,/^(?:\\[\\/)/,/^(?:\\/\\])/,/^(?:\\[\\\\)/,/^(?:[!\"#$%&'*+,-.`?\\\\_/])/,/^(?:[\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6]|[\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377]|[\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5]|[\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA]|[\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE]|[\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA]|[\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0]|[\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977]|[\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2]|[\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A]|[\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39]|[\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8]|[\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C]|[\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C]|[\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99]|[\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0]|[\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D]|[\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3]|[\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10]|[\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1]|[\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81]|[\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3]|[\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6]|[\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A]|[\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081]|[\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D]|[\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0]|[\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310]|[\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C]|[\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711]|[\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7]|[\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C]|[\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16]|[\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF]|[\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC]|[\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D]|[\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D]|[\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3]|[\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F]|[\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128]|[\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184]|[\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3]|[\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6]|[\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE]|[\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C]|[\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D]|[\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC]|[\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B]|[\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788]|[\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805]|[\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB]|[\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28]|[\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5]|[\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4]|[\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E]|[\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D]|[\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36]|[\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D]|[\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC]|[\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF]|[\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC])/,/^(?:\\|)/,/^(?:\\()/,/^(?:\\))/,/^(?:\\[)/,/^(?:\\])/,/^(?:\\{)/,/^(?:\\})/,/^(?:\")/,/^(?:(\\r?\\n)+)/,/^(?:\\s)/,/^(?:$)/],\nconditions: {\"close_directive\":{\"rules\":[],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3],\"inclusive\":false},\"open_directive\":{\"rules\":[1],\"inclusive\":false},\"callbackargs\":{\"rules\":[30,31],\"inclusive\":false},\"callbackname\":{\"rules\":[27,28,29],\"inclusive\":false},\"href\":{\"rules\":[24,25],\"inclusive\":false},\"click\":{\"rules\":[33,34],\"inclusive\":false},\"vertex\":{\"rules\":[],\"inclusive\":false},\"dir\":{\"rules\":[43,44,45,46,47,48,49,50,51,52,53],\"inclusive\":false},\"acc_descr_multiline\":{\"rules\":[12,13],\"inclusive\":false},\"acc_descr\":{\"rules\":[10],\"inclusive\":false},\"acc_title\":{\"rules\":[8],\"inclusive\":false},\"string\":{\"rules\":[15,16],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,7,9,11,14,17,18,19,20,21,22,23,26,32,35,36,37,38,39,40,41,42,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,3],$V1=[1,5],$V2=[7,9,11,12,13,14,15,16,17,18,19,20,22,24,25,27,34,39],$V3=[1,15],$V4=[1,16],$V5=[1,17],$V6=[1,18],$V7=[1,19],$V8=[1,20],$V9=[1,21],$Va=[1,22],$Vb=[1,23],$Vc=[1,24],$Vd=[1,25],$Ve=[1,26],$Vf=[1,28],$Vg=[1,30],$Vh=[1,33],$Vi=[5,7,9,11,12,13,14,15,16,17,18,19,20,22,24,25,27,34,39];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"directive\":4,\"gantt\":5,\"document\":6,\"EOF\":7,\"line\":8,\"SPACE\":9,\"statement\":10,\"NL\":11,\"dateFormat\":12,\"inclusiveEndDates\":13,\"topAxis\":14,\"axisFormat\":15,\"excludes\":16,\"includes\":17,\"todayMarker\":18,\"title\":19,\"acc_title\":20,\"acc_title_value\":21,\"acc_descr\":22,\"acc_descr_value\":23,\"acc_descr_multiline_value\":24,\"section\":25,\"clickStatement\":26,\"taskTxt\":27,\"taskData\":28,\"openDirective\":29,\"typeDirective\":30,\"closeDirective\":31,\":\":32,\"argDirective\":33,\"click\":34,\"callbackname\":35,\"callbackargs\":36,\"href\":37,\"clickStatementDebug\":38,\"open_directive\":39,\"type_directive\":40,\"arg_directive\":41,\"close_directive\":42,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",5:\"gantt\",7:\"EOF\",9:\"SPACE\",11:\"NL\",12:\"dateFormat\",13:\"inclusiveEndDates\",14:\"topAxis\",15:\"axisFormat\",16:\"excludes\",17:\"includes\",18:\"todayMarker\",19:\"title\",20:\"acc_title\",21:\"acc_title_value\",22:\"acc_descr\",23:\"acc_descr_value\",24:\"acc_descr_multiline_value\",25:\"section\",27:\"taskTxt\",28:\"taskData\",32:\":\",34:\"click\",35:\"callbackname\",36:\"callbackargs\",37:\"href\",39:\"open_directive\",40:\"type_directive\",41:\"arg_directive\",42:\"close_directive\"},\nproductions_: [0,[3,2],[3,3],[6,0],[6,2],[8,2],[8,1],[8,1],[8,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,2],[10,2],[10,1],[10,1],[10,1],[10,2],[10,1],[4,4],[4,6],[26,2],[26,3],[26,3],[26,4],[26,3],[26,4],[26,2],[38,2],[38,3],[38,3],[38,4],[38,3],[38,4],[38,2],[29,1],[30,1],[33,1],[31,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 2:\n return $$[$0-1]; \nbreak;\ncase 3:\n this.$ = [] \nbreak;\ncase 4:\n$$[$0-1].push($$[$0]);this.$ = $$[$0-1]\nbreak;\ncase 5: case 6:\n this.$ = $$[$0] \nbreak;\ncase 7: case 8:\n this.$=[];\nbreak;\ncase 9:\nyy.setDateFormat($$[$0].substr(11));this.$=$$[$0].substr(11);\nbreak;\ncase 10:\nyy.enableInclusiveEndDates();this.$=$$[$0].substr(18);\nbreak;\ncase 11:\nyy.TopAxis();this.$=$$[$0].substr(8);\nbreak;\ncase 12:\nyy.setAxisFormat($$[$0].substr(11));this.$=$$[$0].substr(11);\nbreak;\ncase 13:\nyy.setExcludes($$[$0].substr(9));this.$=$$[$0].substr(9);\nbreak;\ncase 14:\nyy.setIncludes($$[$0].substr(9));this.$=$$[$0].substr(9);\nbreak;\ncase 15:\nyy.setTodayMarker($$[$0].substr(12));this.$=$$[$0].substr(12);\nbreak;\ncase 16:\nyy.setTitle($$[$0].substr(6));this.$=$$[$0].substr(6);\nbreak;\ncase 17:\n this.$=$$[$0].trim();yy.setTitle(this.$); \nbreak;\ncase 18: case 19:\n this.$=$$[$0].trim();yy.setAccDescription(this.$); \nbreak;\ncase 20:\nyy.addSection($$[$0].substr(8));this.$=$$[$0].substr(8);\nbreak;\ncase 22:\nyy.addTask($$[$0-1],$$[$0]);this.$='task';\nbreak;\ncase 26:\nthis.$ = $$[$0-1];yy.setClickEvent($$[$0-1], $$[$0], null);\nbreak;\ncase 27:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-2], $$[$0-1], $$[$0]);\nbreak;\ncase 28:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-2], $$[$0-1], null);yy.setLink($$[$0-2],$$[$0]);\nbreak;\ncase 29:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-3], $$[$0-2], $$[$0-1]);yy.setLink($$[$0-3],$$[$0]);\nbreak;\ncase 30:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-2], $$[$0], null);yy.setLink($$[$0-2],$$[$0-1]);\nbreak;\ncase 31:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-3], $$[$0-1], $$[$0]);yy.setLink($$[$0-3],$$[$0-2]);\nbreak;\ncase 32:\nthis.$ = $$[$0-1];yy.setLink($$[$0-1], $$[$0]);\nbreak;\ncase 33: case 39:\nthis.$=$$[$0-1] + ' ' + $$[$0];\nbreak;\ncase 34: case 35: case 37:\nthis.$=$$[$0-2] + ' ' + $$[$0-1] + ' ' + $$[$0];\nbreak;\ncase 36: case 38:\nthis.$=$$[$0-3] + ' ' + $$[$0-2] + ' ' + $$[$0-1] + ' ' + $$[$0];\nbreak;\ncase 40:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 41:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 42:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 43:\n yy.parseDirective('}%%', 'close_directive', 'gantt'); \nbreak;\n}\n},\ntable: [{3:1,4:2,5:$V0,29:4,39:$V1},{1:[3]},{3:6,4:2,5:$V0,29:4,39:$V1},o($V2,[2,3],{6:7}),{30:8,40:[1,9]},{40:[2,40]},{1:[2,1]},{4:29,7:[1,10],8:11,9:[1,12],10:13,11:[1,14],12:$V3,13:$V4,14:$V5,15:$V6,16:$V7,17:$V8,18:$V9,19:$Va,20:$Vb,22:$Vc,24:$Vd,25:$Ve,26:27,27:$Vf,29:4,34:$Vg,39:$V1},{31:31,32:[1,32],42:$Vh},o([32,42],[2,41]),o($V2,[2,8],{1:[2,2]}),o($V2,[2,4]),{4:29,10:34,12:$V3,13:$V4,14:$V5,15:$V6,16:$V7,17:$V8,18:$V9,19:$Va,20:$Vb,22:$Vc,24:$Vd,25:$Ve,26:27,27:$Vf,29:4,34:$Vg,39:$V1},o($V2,[2,6]),o($V2,[2,7]),o($V2,[2,9]),o($V2,[2,10]),o($V2,[2,11]),o($V2,[2,12]),o($V2,[2,13]),o($V2,[2,14]),o($V2,[2,15]),o($V2,[2,16]),{21:[1,35]},{23:[1,36]},o($V2,[2,19]),o($V2,[2,20]),o($V2,[2,21]),{28:[1,37]},o($V2,[2,23]),{35:[1,38],37:[1,39]},{11:[1,40]},{33:41,41:[1,42]},{11:[2,43]},o($V2,[2,5]),o($V2,[2,17]),o($V2,[2,18]),o($V2,[2,22]),o($V2,[2,26],{36:[1,43],37:[1,44]}),o($V2,[2,32],{35:[1,45]}),o($Vi,[2,24]),{31:46,42:$Vh},{42:[2,42]},o($V2,[2,27],{37:[1,47]}),o($V2,[2,28]),o($V2,[2,30],{36:[1,48]}),{11:[1,49]},o($V2,[2,29]),o($V2,[2,31]),o($Vi,[2,25])],\ndefaultActions: {5:[2,40],6:[2,1],33:[2,43],42:[2,42]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 39; \nbreak;\ncase 1: this.begin('type_directive'); return 40; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 32; \nbreak;\ncase 3: this.popState(); this.popState(); return 42; \nbreak;\ncase 4:return 41;\nbreak;\ncase 5: this.begin(\"acc_title\");return 20; \nbreak;\ncase 6: this.popState(); return \"acc_title_value\"; \nbreak;\ncase 7: this.begin(\"acc_descr\");return 22; \nbreak;\ncase 8: this.popState(); return \"acc_descr_value\"; \nbreak;\ncase 9: this.begin(\"acc_descr_multiline\");\nbreak;\ncase 10: this.popState(); \nbreak;\ncase 11:return \"acc_descr_multiline_value\";\nbreak;\ncase 12:/* skip comments */\nbreak;\ncase 13:/* skip comments */\nbreak;\ncase 14:/* do nothing */\nbreak;\ncase 15:return 11;\nbreak;\ncase 16:/* skip whitespace */\nbreak;\ncase 17:/* skip comments */\nbreak;\ncase 18:/* skip comments */\nbreak;\ncase 19:this.begin(\"href\");\nbreak;\ncase 20:this.popState();\nbreak;\ncase 21:return 37;\nbreak;\ncase 22:this.begin(\"callbackname\");\nbreak;\ncase 23:this.popState();\nbreak;\ncase 24:this.popState(); this.begin(\"callbackargs\");\nbreak;\ncase 25:return 35;\nbreak;\ncase 26:this.popState();\nbreak;\ncase 27:return 36;\nbreak;\ncase 28:this.begin(\"click\");\nbreak;\ncase 29:this.popState();\nbreak;\ncase 30:return 34;\nbreak;\ncase 31:return 5;\nbreak;\ncase 32:return 12;\nbreak;\ncase 33:return 13;\nbreak;\ncase 34:return 14;\nbreak;\ncase 35:return 15;\nbreak;\ncase 36:return 17;\nbreak;\ncase 37:return 16;\nbreak;\ncase 38:return 18;\nbreak;\ncase 39:return 'date';\nbreak;\ncase 40:return 19;\nbreak;\ncase 41:return 'accDescription'\nbreak;\ncase 42:return 25;\nbreak;\ncase 43:return 27;\nbreak;\ncase 44:return 28;\nbreak;\ncase 45:return 32;\nbreak;\ncase 46:return 7;\nbreak;\ncase 47:return 'INVALID';\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:accTitle\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*\\{\\s*)/i,/^(?:[\\}])/i,/^(?:[^\\}]*)/i,/^(?:%%(?!\\{)*[^\\n]*)/i,/^(?:[^\\}]%%*[^\\n]*)/i,/^(?:%%*[^\\n]*[\\n]*)/i,/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?:#[^\\n]*)/i,/^(?:%[^\\n]*)/i,/^(?:href[\\s]+[\"])/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:call[\\s]+)/i,/^(?:\\([\\s]*\\))/i,/^(?:\\()/i,/^(?:[^(]*)/i,/^(?:\\))/i,/^(?:[^)]*)/i,/^(?:click[\\s]+)/i,/^(?:[\\s\\n])/i,/^(?:[^\\s\\n]*)/i,/^(?:gantt\\b)/i,/^(?:dateFormat\\s[^#\\n;]+)/i,/^(?:inclusiveEndDates\\b)/i,/^(?:topAxis\\b)/i,/^(?:axisFormat\\s[^#\\n;]+)/i,/^(?:includes\\s[^#\\n;]+)/i,/^(?:excludes\\s[^#\\n;]+)/i,/^(?:todayMarker\\s[^\\n;]+)/i,/^(?:\\d\\d\\d\\d-\\d\\d-\\d\\d\\b)/i,/^(?:title\\s[^#\\n;]+)/i,/^(?:accDescription\\s[^#\\n;]+)/i,/^(?:section\\s[^#:\\n;]+)/i,/^(?:[^#:\\n;]+)/i,/^(?::[^#\\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"acc_descr_multiline\":{\"rules\":[10,11],\"inclusive\":false},\"acc_descr\":{\"rules\":[8],\"inclusive\":false},\"acc_title\":{\"rules\":[6],\"inclusive\":false},\"close_directive\":{\"rules\":[],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3],\"inclusive\":false},\"open_directive\":{\"rules\":[1],\"inclusive\":false},\"callbackargs\":{\"rules\":[26,27],\"inclusive\":false},\"callbackname\":{\"rules\":[23,24,25],\"inclusive\":false},\"href\":{\"rules\":[20,21],\"inclusive\":false},\"click\":{\"rules\":[29,30],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,7,9,12,13,14,15,16,17,18,19,22,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,4],$V1=[1,7],$V2=[1,5],$V3=[1,9],$V4=[1,6],$V5=[2,6],$V6=[1,16],$V7=[6,8,14,19,21,23,24,26,28,31,34,47,51],$V8=[8,14,19,21,23,24,26,28,31,34],$V9=[8,13,14,19,21,23,24,26,28,31,34],$Va=[1,26],$Vb=[6,8,14,47,51],$Vc=[8,14,51],$Vd=[1,61],$Ve=[1,62],$Vf=[1,63],$Vg=[8,14,32,38,39,51];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"eol\":4,\"directive\":5,\"GG\":6,\"document\":7,\"EOF\":8,\":\":9,\"DIR\":10,\"options\":11,\"body\":12,\"OPT\":13,\"NL\":14,\"line\":15,\"statement\":16,\"commitStatement\":17,\"mergeStatement\":18,\"acc_title\":19,\"acc_title_value\":20,\"acc_descr\":21,\"acc_descr_value\":22,\"acc_descr_multiline_value\":23,\"section\":24,\"branchStatement\":25,\"CHECKOUT\":26,\"ID\":27,\"BRANCH\":28,\"ORDER\":29,\"NUM\":30,\"MERGE\":31,\"COMMIT_TAG\":32,\"STR\":33,\"COMMIT\":34,\"commit_arg\":35,\"COMMIT_TYPE\":36,\"commitType\":37,\"COMMIT_ID\":38,\"COMMIT_MSG\":39,\"NORMAL\":40,\"REVERSE\":41,\"HIGHLIGHT\":42,\"openDirective\":43,\"typeDirective\":44,\"closeDirective\":45,\"argDirective\":46,\"open_directive\":47,\"type_directive\":48,\"arg_directive\":49,\"close_directive\":50,\";\":51,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",6:\"GG\",8:\"EOF\",9:\":\",10:\"DIR\",13:\"OPT\",14:\"NL\",19:\"acc_title\",20:\"acc_title_value\",21:\"acc_descr\",22:\"acc_descr_value\",23:\"acc_descr_multiline_value\",24:\"section\",26:\"CHECKOUT\",27:\"ID\",28:\"BRANCH\",29:\"ORDER\",30:\"NUM\",31:\"MERGE\",32:\"COMMIT_TAG\",33:\"STR\",34:\"COMMIT\",36:\"COMMIT_TYPE\",38:\"COMMIT_ID\",39:\"COMMIT_MSG\",40:\"NORMAL\",41:\"REVERSE\",42:\"HIGHLIGHT\",47:\"open_directive\",48:\"type_directive\",49:\"arg_directive\",50:\"close_directive\",51:\";\"},\nproductions_: [0,[3,2],[3,2],[3,3],[3,4],[3,5],[7,0],[7,2],[11,2],[11,1],[12,0],[12,2],[15,2],[15,1],[16,1],[16,1],[16,2],[16,2],[16,1],[16,1],[16,1],[16,2],[25,2],[25,4],[18,2],[18,4],[17,2],[17,3],[17,3],[17,5],[17,5],[17,3],[17,5],[17,5],[17,5],[17,5],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,3],[17,5],[17,5],[17,5],[17,5],[17,5],[17,5],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[35,0],[35,1],[37,1],[37,1],[37,1],[5,3],[5,5],[43,1],[44,1],[46,1],[45,1],[4,1],[4,1],[4,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 3:\n return $$[$0]; \nbreak;\ncase 4:\n return $$[$0-1]; \nbreak;\ncase 5:\nyy.setDirection($$[$0-3]); return $$[$0-1];\nbreak;\ncase 7:\n yy.setOptions($$[$0-1]); this.$ = $$[$0]\nbreak;\ncase 8:\n$$[$0-1] +=$$[$0]; this.$=$$[$0-1]\nbreak;\ncase 10:\nthis.$ = []\nbreak;\ncase 11:\n$$[$0-1].push($$[$0]); this.$=$$[$0-1];\nbreak;\ncase 12:\nthis.$ =$$[$0-1]\nbreak;\ncase 16:\n this.$=$$[$0].trim();yy.setTitle(this.$); \nbreak;\ncase 17: case 18:\n this.$=$$[$0].trim();yy.setAccDescription(this.$); \nbreak;\ncase 19:\nyy.addSection($$[$0].substr(8));this.$=$$[$0].substr(8);\nbreak;\ncase 21:\nyy.checkout($$[$0])\nbreak;\ncase 22:\nyy.branch($$[$0])\nbreak;\ncase 23:\nyy.branch($$[$0-2], $$[$0])\nbreak;\ncase 24:\nyy.merge($$[$0])\nbreak;\ncase 25:\nyy.merge($$[$0-2], $$[$0])\nbreak;\ncase 26:\nyy.commit($$[$0])\nbreak;\ncase 27:\nyy.commit('','',yy.commitType.NORMAL,$$[$0])\nbreak;\ncase 28:\nyy.commit('','',$$[$0],'')\nbreak;\ncase 29:\nyy.commit('','',$$[$0],$$[$0-2])\nbreak;\ncase 30:\nyy.commit('','',$$[$0-2],$$[$0])\nbreak;\ncase 31:\nyy.commit('',$$[$0],yy.commitType.NORMAL,'')\nbreak;\ncase 32:\nyy.commit('',$$[$0-2],yy.commitType.NORMAL,$$[$0])\nbreak;\ncase 33:\nyy.commit('',$$[$0],yy.commitType.NORMAL,$$[$0-2])\nbreak;\ncase 34:\nyy.commit('',$$[$0-2],$$[$0],'')\nbreak;\ncase 35:\nyy.commit('',$$[$0],$$[$0-2],'')\nbreak;\ncase 36:\nyy.commit('',$$[$0-4],$$[$0-2],$$[$0])\nbreak;\ncase 37:\nyy.commit('',$$[$0-4],$$[$0],$$[$0-2])\nbreak;\ncase 38:\nyy.commit('',$$[$0-2],$$[$0-4],$$[$0])\nbreak;\ncase 39:\nyy.commit('',$$[$0],$$[$0-4],$$[$0-2])\nbreak;\ncase 40:\nyy.commit('',$$[$0],$$[$0-2],$$[$0-4])\nbreak;\ncase 41:\nyy.commit('',$$[$0-2],$$[$0],$$[$0-4])\nbreak;\ncase 42:\nyy.commit($$[$0],'',yy.commitType.NORMAL,'')\nbreak;\ncase 43:\nyy.commit($$[$0],'',yy.commitType.NORMAL,$$[$0-2])\nbreak;\ncase 44:\nyy.commit($$[$0-2],'',yy.commitType.NORMAL,$$[$0])\nbreak;\ncase 45:\nyy.commit($$[$0-2],'',$$[$0],'')\nbreak;\ncase 46:\nyy.commit($$[$0],'',$$[$0-2],'')\nbreak;\ncase 47:\nyy.commit($$[$0],$$[$0-2],yy.commitType.NORMAL,'')\nbreak;\ncase 48:\nyy.commit($$[$0-2],$$[$0],yy.commitType.NORMAL,'')\nbreak;\ncase 49:\nyy.commit($$[$0-4],'',$$[$0-2],$$[$0])\nbreak;\ncase 50:\nyy.commit($$[$0-4],'',$$[$0],$$[$0-2])\nbreak;\ncase 51:\nyy.commit($$[$0-2],'',$$[$0-4],$$[$0])\nbreak;\ncase 52:\nyy.commit($$[$0],'',$$[$0-4],$$[$0-2])\nbreak;\ncase 53:\nyy.commit($$[$0],'',$$[$0-2],$$[$0-4])\nbreak;\ncase 54:\nyy.commit($$[$0-2],'',$$[$0],$$[$0-4])\nbreak;\ncase 55:\nyy.commit($$[$0-4],$$[$0],$$[$0-2],'')\nbreak;\ncase 56:\nyy.commit($$[$0-4],$$[$0-2],$$[$0],'')\nbreak;\ncase 57:\nyy.commit($$[$0-2],$$[$0],$$[$0-4],'')\nbreak;\ncase 58:\nyy.commit($$[$0],$$[$0-2],$$[$0-4],'')\nbreak;\ncase 59:\nyy.commit($$[$0],$$[$0-4],$$[$0-2],'')\nbreak;\ncase 60:\nyy.commit($$[$0-2],$$[$0-4],$$[$0],'')\nbreak;\ncase 61:\nyy.commit($$[$0-4],$$[$0],yy.commitType.NORMAL,$$[$0-2])\nbreak;\ncase 62:\nyy.commit($$[$0-4],$$[$0-2],yy.commitType.NORMAL,$$[$0])\nbreak;\ncase 63:\nyy.commit($$[$0-2],$$[$0],yy.commitType.NORMAL,$$[$0-4])\nbreak;\ncase 64:\nyy.commit($$[$0],$$[$0-2],yy.commitType.NORMAL,$$[$0-4])\nbreak;\ncase 65:\nyy.commit($$[$0],$$[$0-4],yy.commitType.NORMAL,$$[$0-2])\nbreak;\ncase 66:\nyy.commit($$[$0-2],$$[$0-4],yy.commitType.NORMAL,$$[$0])\nbreak;\ncase 67:\nyy.commit($$[$0-6],$$[$0-4],$$[$0-2],$$[$0])\nbreak;\ncase 68:\nyy.commit($$[$0-6],$$[$0-4],$$[$0],$$[$0-2])\nbreak;\ncase 69:\nyy.commit($$[$0-6],$$[$0-2],$$[$0-4],$$[$0])\nbreak;\ncase 70:\nyy.commit($$[$0-6],$$[$0],$$[$0-4],$$[$0-2])\nbreak;\ncase 71:\nyy.commit($$[$0-6],$$[$0-2],$$[$0],$$[$0-4])\nbreak;\ncase 72:\nyy.commit($$[$0-6],$$[$0],$$[$0-2],$$[$0-4])\nbreak;\ncase 73:\nyy.commit($$[$0-4],$$[$0-6],$$[$0-2],$$[$0])\nbreak;\ncase 74:\nyy.commit($$[$0-4],$$[$0-6],$$[$0],$$[$0-2])\nbreak;\ncase 75:\nyy.commit($$[$0-2],$$[$0-6],$$[$0-4],$$[$0])\nbreak;\ncase 76:\nyy.commit($$[$0],$$[$0-6],$$[$0-4],$$[$0-2])\nbreak;\ncase 77:\nyy.commit($$[$0-2],$$[$0-6],$$[$0],$$[$0-4])\nbreak;\ncase 78:\nyy.commit($$[$0],$$[$0-6],$$[$0-2],$$[$0-4])\nbreak;\ncase 79:\nyy.commit($$[$0],$$[$0-4],$$[$0-2],$$[$0-6])\nbreak;\ncase 80:\nyy.commit($$[$0-2],$$[$0-4],$$[$0],$$[$0-6])\nbreak;\ncase 81:\nyy.commit($$[$0],$$[$0-2],$$[$0-4],$$[$0-6])\nbreak;\ncase 82:\nyy.commit($$[$0-2],$$[$0],$$[$0-4],$$[$0-6])\nbreak;\ncase 83:\nyy.commit($$[$0-4],$$[$0-2],$$[$0],$$[$0-6])\nbreak;\ncase 84:\nyy.commit($$[$0-4],$$[$0],$$[$0-2],$$[$0-6])\nbreak;\ncase 85:\nyy.commit($$[$0-2],$$[$0-4],$$[$0-6],$$[$0])\nbreak;\ncase 86:\nyy.commit($$[$0],$$[$0-4],$$[$0-6],$$[$0-2])\nbreak;\ncase 87:\nyy.commit($$[$0-2],$$[$0],$$[$0-6],$$[$0-4])\nbreak;\ncase 88:\nyy.commit($$[$0],$$[$0-2],$$[$0-6],$$[$0-4])\nbreak;\ncase 89:\nyy.commit($$[$0-4],$$[$0-2],$$[$0-6],$$[$0])\nbreak;\ncase 90:\nyy.commit($$[$0-4],$$[$0],$$[$0-6],$$[$0-2])\nbreak;\ncase 91:\nthis.$ = \"\"\nbreak;\ncase 92:\nthis.$=$$[$0]\nbreak;\ncase 93:\n this.$=yy.commitType.NORMAL;\nbreak;\ncase 94:\n this.$=yy.commitType.REVERSE;\nbreak;\ncase 95:\n this.$=yy.commitType.HIGHLIGHT;\nbreak;\ncase 98:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 99:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 100:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 101:\n yy.parseDirective('}%%', 'close_directive', 'gitGraph'); \nbreak;\n}\n},\ntable: [{3:1,4:2,5:3,6:$V0,8:$V1,14:$V2,43:8,47:$V3,51:$V4},{1:[3]},{3:10,4:2,5:3,6:$V0,8:$V1,14:$V2,43:8,47:$V3,51:$V4},{3:11,4:2,5:3,6:$V0,8:$V1,14:$V2,43:8,47:$V3,51:$V4},{7:12,8:$V5,9:[1,13],10:[1,14],11:15,14:$V6},o($V7,[2,102]),o($V7,[2,103]),o($V7,[2,104]),{44:17,48:[1,18]},{48:[2,98]},{1:[2,1]},{1:[2,2]},{8:[1,19]},{7:20,8:$V5,11:15,14:$V6},{9:[1,21]},o($V8,[2,10],{12:22,13:[1,23]}),o($V9,[2,9]),{9:[1,25],45:24,50:$Va},o([9,50],[2,99]),{1:[2,3]},{8:[1,27]},{7:28,8:$V5,11:15,14:$V6},{8:[2,7],14:[1,31],15:29,16:30,17:32,18:33,19:[1,34],21:[1,35],23:[1,36],24:[1,37],25:38,26:[1,39],28:[1,42],31:[1,41],34:[1,40]},o($V9,[2,8]),o($Vb,[2,96]),{46:43,49:[1,44]},o($Vb,[2,101]),{1:[2,4]},{8:[1,45]},o($V8,[2,11]),{4:46,8:$V1,14:$V2,51:$V4},o($V8,[2,13]),o($Vc,[2,14]),o($Vc,[2,15]),{20:[1,47]},{22:[1,48]},o($Vc,[2,18]),o($Vc,[2,19]),o($Vc,[2,20]),{27:[1,49]},o($Vc,[2,91],{35:50,32:[1,51],33:[1,55],36:[1,52],38:[1,53],39:[1,54]}),{27:[1,56]},{27:[1,57]},{45:58,50:$Va},{50:[2,100]},{1:[2,5]},o($V8,[2,12]),o($Vc,[2,16]),o($Vc,[2,17]),o($Vc,[2,21]),o($Vc,[2,26]),{33:[1,59]},{37:60,40:$Vd,41:$Ve,42:$Vf},{33:[1,64]},{33:[1,65]},o($Vc,[2,92]),o($Vc,[2,24],{32:[1,66]}),o($Vc,[2,22],{29:[1,67]}),o($Vb,[2,97]),o($Vc,[2,27],{36:[1,68],38:[1,69],39:[1,70]}),o($Vc,[2,28],{32:[1,71],38:[1,72],39:[1,73]}),o($Vg,[2,93]),o($Vg,[2,94]),o($Vg,[2,95]),o($Vc,[2,31],{32:[1,74],36:[1,75],39:[1,76]}),o($Vc,[2,42],{32:[1,77],36:[1,78],38:[1,79]}),{33:[1,80]},{30:[1,81]},{37:82,40:$Vd,41:$Ve,42:$Vf},{33:[1,83]},{33:[1,84]},{33:[1,85]},{33:[1,86]},{33:[1,87]},{33:[1,88]},{37:89,40:$Vd,41:$Ve,42:$Vf},{33:[1,90]},{33:[1,91]},{37:92,40:$Vd,41:$Ve,42:$Vf},{33:[1,93]},o($Vc,[2,25]),o($Vc,[2,23]),o($Vc,[2,29],{38:[1,94],39:[1,95]}),o($Vc,[2,33],{36:[1,96],39:[1,97]}),o($Vc,[2,43],{36:[1,98],38:[1,99]}),o($Vc,[2,30],{38:[1,100],39:[1,101]}),o($Vc,[2,35],{32:[1,102],39:[1,103]}),o($Vc,[2,46],{32:[1,104],38:[1,105]}),o($Vc,[2,32],{36:[1,106],39:[1,107]}),o($Vc,[2,34],{32:[1,108],39:[1,109]}),o($Vc,[2,47],{32:[1,111],36:[1,110]}),o($Vc,[2,44],{36:[1,112],38:[1,113]}),o($Vc,[2,45],{32:[1,114],38:[1,115]}),o($Vc,[2,48],{32:[1,117],36:[1,116]}),{33:[1,118]},{33:[1,119]},{37:120,40:$Vd,41:$Ve,42:$Vf},{33:[1,121]},{37:122,40:$Vd,41:$Ve,42:$Vf},{33:[1,123]},{33:[1,124]},{33:[1,125]},{33:[1,126]},{33:[1,127]},{33:[1,128]},{33:[1,129]},{37:130,40:$Vd,41:$Ve,42:$Vf},{33:[1,131]},{33:[1,132]},{33:[1,133]},{37:134,40:$Vd,41:$Ve,42:$Vf},{33:[1,135]},{37:136,40:$Vd,41:$Ve,42:$Vf},{33:[1,137]},{33:[1,138]},{33:[1,139]},{37:140,40:$Vd,41:$Ve,42:$Vf},{33:[1,141]},o($Vc,[2,40],{39:[1,142]}),o($Vc,[2,53],{38:[1,143]}),o($Vc,[2,41],{39:[1,144]}),o($Vc,[2,64],{36:[1,145]}),o($Vc,[2,54],{38:[1,146]}),o($Vc,[2,63],{36:[1,147]}),o($Vc,[2,39],{39:[1,148]}),o($Vc,[2,52],{38:[1,149]}),o($Vc,[2,38],{39:[1,150]}),o($Vc,[2,58],{32:[1,151]}),o($Vc,[2,51],{38:[1,152]}),o($Vc,[2,57],{32:[1,153]}),o($Vc,[2,37],{39:[1,154]}),o($Vc,[2,65],{36:[1,155]}),o($Vc,[2,36],{39:[1,156]}),o($Vc,[2,59],{32:[1,157]}),o($Vc,[2,60],{32:[1,158]}),o($Vc,[2,66],{36:[1,159]}),o($Vc,[2,50],{38:[1,160]}),o($Vc,[2,61],{36:[1,161]}),o($Vc,[2,49],{38:[1,162]}),o($Vc,[2,55],{32:[1,163]}),o($Vc,[2,56],{32:[1,164]}),o($Vc,[2,62],{36:[1,165]}),{33:[1,166]},{33:[1,167]},{33:[1,168]},{37:169,40:$Vd,41:$Ve,42:$Vf},{33:[1,170]},{37:171,40:$Vd,41:$Ve,42:$Vf},{33:[1,172]},{33:[1,173]},{33:[1,174]},{33:[1,175]},{33:[1,176]},{33:[1,177]},{33:[1,178]},{37:179,40:$Vd,41:$Ve,42:$Vf},{33:[1,180]},{33:[1,181]},{33:[1,182]},{37:183,40:$Vd,41:$Ve,42:$Vf},{33:[1,184]},{37:185,40:$Vd,41:$Ve,42:$Vf},{33:[1,186]},{33:[1,187]},{33:[1,188]},{37:189,40:$Vd,41:$Ve,42:$Vf},o($Vc,[2,81]),o($Vc,[2,82]),o($Vc,[2,79]),o($Vc,[2,80]),o($Vc,[2,84]),o($Vc,[2,83]),o($Vc,[2,88]),o($Vc,[2,87]),o($Vc,[2,86]),o($Vc,[2,85]),o($Vc,[2,90]),o($Vc,[2,89]),o($Vc,[2,78]),o($Vc,[2,77]),o($Vc,[2,76]),o($Vc,[2,75]),o($Vc,[2,73]),o($Vc,[2,74]),o($Vc,[2,72]),o($Vc,[2,71]),o($Vc,[2,70]),o($Vc,[2,69]),o($Vc,[2,67]),o($Vc,[2,68])],\ndefaultActions: {9:[2,98],10:[2,1],11:[2,2],19:[2,3],27:[2,4],44:[2,100],45:[2,5]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 47; \nbreak;\ncase 1: this.begin('type_directive'); return 48; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 9; \nbreak;\ncase 3: this.popState(); this.popState(); return 50; \nbreak;\ncase 4:return 49;\nbreak;\ncase 5: this.begin(\"acc_title\");return 19; \nbreak;\ncase 6: this.popState(); return \"acc_title_value\"; \nbreak;\ncase 7: this.begin(\"acc_descr\");return 21; \nbreak;\ncase 8: this.popState(); return \"acc_descr_value\"; \nbreak;\ncase 9: this.begin(\"acc_descr_multiline\");\nbreak;\ncase 10: this.popState(); \nbreak;\ncase 11:return \"acc_descr_multiline_value\";\nbreak;\ncase 12:/*{console.log('New line');return 14;}*/ return 14;\nbreak;\ncase 13:/* skip all whitespace */\nbreak;\ncase 14:/* skip comments */\nbreak;\ncase 15:/* skip comments */\nbreak;\ncase 16:return 6;\nbreak;\ncase 17:return 34;\nbreak;\ncase 18:return 38;\nbreak;\ncase 19:return 36;\nbreak;\ncase 20:return 39;\nbreak;\ncase 21:return 40;\nbreak;\ncase 22:return 41;\nbreak;\ncase 23:return 42;\nbreak;\ncase 24:return 32;\nbreak;\ncase 25:return 28;\nbreak;\ncase 26:return 29;\nbreak;\ncase 27:return 31;\nbreak;\ncase 28:return 26;\nbreak;\ncase 29:return 10;\nbreak;\ncase 30:return 10;\nbreak;\ncase 31:return 9;\nbreak;\ncase 32:return 'CARET'\nbreak;\ncase 33:this.begin(\"options\"); //\nbreak;\ncase 34:this.popState(); // not used anymore in the renderer, fixed for backward compatibility\nbreak;\ncase 35:return 13; //\nbreak;\ncase 36:this.begin(\"string\");\nbreak;\ncase 37:this.popState();\nbreak;\ncase 38:return 33;\nbreak;\ncase 39:return 30;\nbreak;\ncase 40:return 27;\nbreak;\ncase 41:return 8;\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:accTitle\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*\\{\\s*)/i,/^(?:[\\}])/i,/^(?:[^\\}]*)/i,/^(?:(\\r?\\n)+)/i,/^(?:\\s+)/i,/^(?:#[^\\n]*)/i,/^(?:%[^\\n]*)/i,/^(?:gitGraph\\b)/i,/^(?:commit\\b)/i,/^(?:id:)/i,/^(?:type:)/i,/^(?:msg:)/i,/^(?:NORMAL\\b)/i,/^(?:REVERSE\\b)/i,/^(?:HIGHLIGHT\\b)/i,/^(?:tag:)/i,/^(?:branch\\b)/i,/^(?:order:)/i,/^(?:merge\\b)/i,/^(?:checkout\\b)/i,/^(?:LR\\b)/i,/^(?:BT\\b)/i,/^(?::)/i,/^(?:\\^)/i,/^(?:options\\r?\\n)/i,/^(?:[ \\r\\n\\t]+end\\b)/i,/^(?:[\\s\\S]+(?=[ \\r\\n\\t]+end))/i,/^(?:[\"])/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:[0-9]+)/i,/^(?:[a-zA-Z][-_\\./a-zA-Z0-9]*[-_a-zA-Z0-9])/i,/^(?:$)/i],\nconditions: {\"acc_descr_multiline\":{\"rules\":[10,11],\"inclusive\":false},\"acc_descr\":{\"rules\":[8],\"inclusive\":false},\"acc_title\":{\"rules\":[6],\"inclusive\":false},\"close_directive\":{\"rules\":[],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3],\"inclusive\":false},\"open_directive\":{\"rules\":[1],\"inclusive\":false},\"options\":{\"rules\":[34,35],\"inclusive\":false},\"string\":{\"rules\":[37,38],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,7,9,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,36,39,40,41],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[6,9,10];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"info\":4,\"document\":5,\"EOF\":6,\"line\":7,\"statement\":8,\"NL\":9,\"showInfo\":10,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"info\",6:\"EOF\",9:\"NL\",10:\"showInfo\"},\nproductions_: [0,[3,3],[5,0],[5,2],[7,1],[7,1],[8,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\n return yy; \nbreak;\ncase 4:\n \nbreak;\ncase 6:\n yy.setInfo(true); \nbreak;\n}\n},\ntable: [{3:1,4:[1,2]},{1:[3]},o($V0,[2,2],{5:3}),{6:[1,4],7:5,8:6,9:[1,7],10:[1,8]},{1:[2,1]},o($V0,[2,3]),o($V0,[2,4]),o($V0,[2,5]),o($V0,[2,6])],\ndefaultActions: {4:[2,1]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\r\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\r\n\t// Pre-lexer code can go here\r\n\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:return 4 ;\nbreak;\ncase 1:return 9 ;\nbreak;\ncase 2:return 'space';\nbreak;\ncase 3:return 10;\nbreak;\ncase 4:return 6 ;\nbreak;\ncase 5:return 'TXT' ;\nbreak;\n}\n},\nrules: [/^(?:info\\b)/i,/^(?:[\\s\\n\\r]+)/i,/^(?:[\\s]+)/i,/^(?:showInfo\\b)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"INITIAL\":{\"rules\":[0,1,2,3,4,5],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,4],$V1=[1,5],$V2=[1,6],$V3=[1,7],$V4=[1,9],$V5=[1,11,13,15,17,19,20,26,27,28,29],$V6=[2,5],$V7=[1,6,11,13,15,17,19,20,26,27,28,29],$V8=[26,27,28],$V9=[2,8],$Va=[1,18],$Vb=[1,19],$Vc=[1,20],$Vd=[1,21],$Ve=[1,22],$Vf=[1,23],$Vg=[1,28],$Vh=[6,26,27,28,29];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"eol\":4,\"directive\":5,\"PIE\":6,\"document\":7,\"showData\":8,\"line\":9,\"statement\":10,\"txt\":11,\"value\":12,\"title\":13,\"title_value\":14,\"acc_title\":15,\"acc_title_value\":16,\"acc_descr\":17,\"acc_descr_value\":18,\"acc_descr_multiline_value\":19,\"section\":20,\"openDirective\":21,\"typeDirective\":22,\"closeDirective\":23,\":\":24,\"argDirective\":25,\"NEWLINE\":26,\";\":27,\"EOF\":28,\"open_directive\":29,\"type_directive\":30,\"arg_directive\":31,\"close_directive\":32,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",6:\"PIE\",8:\"showData\",11:\"txt\",12:\"value\",13:\"title\",14:\"title_value\",15:\"acc_title\",16:\"acc_title_value\",17:\"acc_descr\",18:\"acc_descr_value\",19:\"acc_descr_multiline_value\",20:\"section\",24:\":\",26:\"NEWLINE\",27:\";\",28:\"EOF\",29:\"open_directive\",30:\"type_directive\",31:\"arg_directive\",32:\"close_directive\"},\nproductions_: [0,[3,2],[3,2],[3,2],[3,3],[7,0],[7,2],[9,2],[10,0],[10,2],[10,2],[10,2],[10,2],[10,1],[10,1],[10,1],[5,3],[5,5],[4,1],[4,1],[4,1],[21,1],[22,1],[25,1],[23,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 4:\nyy.setShowData(true);\nbreak;\ncase 7:\n this.$ = $$[$0-1] \nbreak;\ncase 9:\n yy.addSection($$[$0-1],yy.cleanupValue($$[$0])); \nbreak;\ncase 10:\n this.$=$$[$0].trim();yy.setPieTitle(this.$); \nbreak;\ncase 11:\n this.$=$$[$0].trim();yy.setTitle(this.$); \nbreak;\ncase 12: case 13:\n this.$=$$[$0].trim();yy.setAccDescription(this.$); \nbreak;\ncase 14:\nyy.addSection($$[$0].substr(8));this.$=$$[$0].substr(8);\nbreak;\ncase 21:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 22:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 23:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 24:\n yy.parseDirective('}%%', 'close_directive', 'pie'); \nbreak;\n}\n},\ntable: [{3:1,4:2,5:3,6:$V0,21:8,26:$V1,27:$V2,28:$V3,29:$V4},{1:[3]},{3:10,4:2,5:3,6:$V0,21:8,26:$V1,27:$V2,28:$V3,29:$V4},{3:11,4:2,5:3,6:$V0,21:8,26:$V1,27:$V2,28:$V3,29:$V4},o($V5,$V6,{7:12,8:[1,13]}),o($V7,[2,18]),o($V7,[2,19]),o($V7,[2,20]),{22:14,30:[1,15]},{30:[2,21]},{1:[2,1]},{1:[2,2]},o($V8,$V9,{21:8,9:16,10:17,5:24,1:[2,3],11:$Va,13:$Vb,15:$Vc,17:$Vd,19:$Ve,20:$Vf,29:$V4}),o($V5,$V6,{7:25}),{23:26,24:[1,27],32:$Vg},o([24,32],[2,22]),o($V5,[2,6]),{4:29,26:$V1,27:$V2,28:$V3},{12:[1,30]},{14:[1,31]},{16:[1,32]},{18:[1,33]},o($V8,[2,13]),o($V8,[2,14]),o($V8,[2,15]),o($V8,$V9,{21:8,9:16,10:17,5:24,1:[2,4],11:$Va,13:$Vb,15:$Vc,17:$Vd,19:$Ve,20:$Vf,29:$V4}),o($Vh,[2,16]),{25:34,31:[1,35]},o($Vh,[2,24]),o($V5,[2,7]),o($V8,[2,9]),o($V8,[2,10]),o($V8,[2,11]),o($V8,[2,12]),{23:36,32:$Vg},{32:[2,23]},o($Vh,[2,17])],\ndefaultActions: {9:[2,21],10:[2,1],11:[2,2],35:[2,23]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 29; \nbreak;\ncase 1: this.begin('type_directive'); return 30; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 24; \nbreak;\ncase 3: this.popState(); this.popState(); return 32; \nbreak;\ncase 4:return 31;\nbreak;\ncase 5:/* skip comments */\nbreak;\ncase 6:/* skip comments */{ /*console.log('');*/ }\nbreak;\ncase 7:return 26;\nbreak;\ncase 8:/* do nothing */\nbreak;\ncase 9:/* ignore */\nbreak;\ncase 10: this.begin(\"title\");return 13; \nbreak;\ncase 11: this.popState(); return \"title_value\"; \nbreak;\ncase 12: this.begin(\"acc_title\");return 15; \nbreak;\ncase 13: this.popState(); return \"acc_title_value\"; \nbreak;\ncase 14: this.begin(\"acc_descr\");return 17; \nbreak;\ncase 15: this.popState(); return \"acc_descr_value\"; \nbreak;\ncase 16: this.begin(\"acc_descr_multiline\");\nbreak;\ncase 17: this.popState(); \nbreak;\ncase 18:return \"acc_descr_multiline_value\";\nbreak;\ncase 19: this.begin(\"string\"); \nbreak;\ncase 20: this.popState(); \nbreak;\ncase 21: return \"txt\"; \nbreak;\ncase 22:return 6;\nbreak;\ncase 23:return 8;\nbreak;\ncase 24:return \"value\";\nbreak;\ncase 25:return 28;\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:%%(?!\\{)[^\\n]*)/i,/^(?:[^\\}]%%[^\\n]*)/i,/^(?:[\\n\\r]+)/i,/^(?:%%[^\\n]*)/i,/^(?:[\\s]+)/i,/^(?:title\\b)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accTitle\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*\\{\\s*)/i,/^(?:[\\}])/i,/^(?:[^\\}]*)/i,/^(?:[\"])/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:pie\\b)/i,/^(?:showData\\b)/i,/^(?::[\\s]*[\\d]+(?:\\.[\\d]+)?)/i,/^(?:$)/i],\nconditions: {\"acc_descr_multiline\":{\"rules\":[17,18],\"inclusive\":false},\"acc_descr\":{\"rules\":[15],\"inclusive\":false},\"acc_title\":{\"rules\":[13],\"inclusive\":false},\"close_directive\":{\"rules\":[],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3],\"inclusive\":false},\"open_directive\":{\"rules\":[1],\"inclusive\":false},\"title\":{\"rules\":[11],\"inclusive\":false},\"string\":{\"rules\":[20,21],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,7,8,9,10,12,14,16,19,22,23,24,25],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,3],$V1=[1,5],$V2=[1,6],$V3=[1,7],$V4=[1,8],$V5=[5,6,8,14,16,18,19,40,41,42,43,44,45,53,71,72],$V6=[1,22],$V7=[2,13],$V8=[1,26],$V9=[1,27],$Va=[1,28],$Vb=[1,29],$Vc=[1,30],$Vd=[1,31],$Ve=[1,24],$Vf=[1,32],$Vg=[1,33],$Vh=[1,36],$Vi=[71,72],$Vj=[5,8,14,16,18,19,40,41,42,43,44,45,53,60,62,71,72],$Vk=[1,56],$Vl=[1,57],$Vm=[1,58],$Vn=[1,59],$Vo=[1,60],$Vp=[1,61],$Vq=[1,62],$Vr=[62,63],$Vs=[1,74],$Vt=[1,70],$Vu=[1,71],$Vv=[1,72],$Vw=[1,73],$Vx=[1,75],$Vy=[1,79],$Vz=[1,80],$VA=[1,77],$VB=[1,78],$VC=[5,8,14,16,18,19,40,41,42,43,44,45,53,71,72];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"directive\":4,\"NEWLINE\":5,\"RD\":6,\"diagram\":7,\"EOF\":8,\"openDirective\":9,\"typeDirective\":10,\"closeDirective\":11,\":\":12,\"argDirective\":13,\"acc_title\":14,\"acc_title_value\":15,\"acc_descr\":16,\"acc_descr_value\":17,\"acc_descr_multiline_value\":18,\"open_directive\":19,\"type_directive\":20,\"arg_directive\":21,\"close_directive\":22,\"requirementDef\":23,\"elementDef\":24,\"relationshipDef\":25,\"requirementType\":26,\"requirementName\":27,\"STRUCT_START\":28,\"requirementBody\":29,\"ID\":30,\"COLONSEP\":31,\"id\":32,\"TEXT\":33,\"text\":34,\"RISK\":35,\"riskLevel\":36,\"VERIFYMTHD\":37,\"verifyType\":38,\"STRUCT_STOP\":39,\"REQUIREMENT\":40,\"FUNCTIONAL_REQUIREMENT\":41,\"INTERFACE_REQUIREMENT\":42,\"PERFORMANCE_REQUIREMENT\":43,\"PHYSICAL_REQUIREMENT\":44,\"DESIGN_CONSTRAINT\":45,\"LOW_RISK\":46,\"MED_RISK\":47,\"HIGH_RISK\":48,\"VERIFY_ANALYSIS\":49,\"VERIFY_DEMONSTRATION\":50,\"VERIFY_INSPECTION\":51,\"VERIFY_TEST\":52,\"ELEMENT\":53,\"elementName\":54,\"elementBody\":55,\"TYPE\":56,\"type\":57,\"DOCREF\":58,\"ref\":59,\"END_ARROW_L\":60,\"relationship\":61,\"LINE\":62,\"END_ARROW_R\":63,\"CONTAINS\":64,\"COPIES\":65,\"DERIVES\":66,\"SATISFIES\":67,\"VERIFIES\":68,\"REFINES\":69,\"TRACES\":70,\"unqString\":71,\"qString\":72,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",5:\"NEWLINE\",6:\"RD\",8:\"EOF\",12:\":\",14:\"acc_title\",15:\"acc_title_value\",16:\"acc_descr\",17:\"acc_descr_value\",18:\"acc_descr_multiline_value\",19:\"open_directive\",20:\"type_directive\",21:\"arg_directive\",22:\"close_directive\",28:\"STRUCT_START\",30:\"ID\",31:\"COLONSEP\",33:\"TEXT\",35:\"RISK\",37:\"VERIFYMTHD\",39:\"STRUCT_STOP\",40:\"REQUIREMENT\",41:\"FUNCTIONAL_REQUIREMENT\",42:\"INTERFACE_REQUIREMENT\",43:\"PERFORMANCE_REQUIREMENT\",44:\"PHYSICAL_REQUIREMENT\",45:\"DESIGN_CONSTRAINT\",46:\"LOW_RISK\",47:\"MED_RISK\",48:\"HIGH_RISK\",49:\"VERIFY_ANALYSIS\",50:\"VERIFY_DEMONSTRATION\",51:\"VERIFY_INSPECTION\",52:\"VERIFY_TEST\",53:\"ELEMENT\",56:\"TYPE\",58:\"DOCREF\",60:\"END_ARROW_L\",62:\"LINE\",63:\"END_ARROW_R\",64:\"CONTAINS\",65:\"COPIES\",66:\"DERIVES\",67:\"SATISFIES\",68:\"VERIFIES\",69:\"REFINES\",70:\"TRACES\",71:\"unqString\",72:\"qString\"},\nproductions_: [0,[3,3],[3,2],[3,4],[4,3],[4,5],[4,2],[4,2],[4,1],[9,1],[10,1],[13,1],[11,1],[7,0],[7,2],[7,2],[7,2],[7,2],[7,2],[23,5],[29,5],[29,5],[29,5],[29,5],[29,2],[29,1],[26,1],[26,1],[26,1],[26,1],[26,1],[26,1],[36,1],[36,1],[36,1],[38,1],[38,1],[38,1],[38,1],[24,5],[55,5],[55,5],[55,2],[55,1],[25,5],[25,5],[61,1],[61,1],[61,1],[61,1],[61,1],[61,1],[61,1],[27,1],[27,1],[32,1],[32,1],[34,1],[34,1],[54,1],[54,1],[57,1],[57,1],[59,1],[59,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 6:\n this.$=$$[$0].trim();yy.setTitle(this.$); \nbreak;\ncase 7: case 8:\n this.$=$$[$0].trim();yy.setAccDescription(this.$); \nbreak;\ncase 9:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 10:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 11:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 12:\n yy.parseDirective('}%%', 'close_directive', 'pie'); \nbreak;\ncase 13:\n this.$ = [] \nbreak;\ncase 19:\n yy.addRequirement($$[$0-3], $$[$0-4]) \nbreak;\ncase 20:\n yy.setNewReqId($$[$0-2]); \nbreak;\ncase 21:\n yy.setNewReqText($$[$0-2]); \nbreak;\ncase 22:\n yy.setNewReqRisk($$[$0-2]); \nbreak;\ncase 23:\n yy.setNewReqVerifyMethod($$[$0-2]); \nbreak;\ncase 26:\n this.$=yy.RequirementType.REQUIREMENT;\nbreak;\ncase 27:\n this.$=yy.RequirementType.FUNCTIONAL_REQUIREMENT;\nbreak;\ncase 28:\n this.$=yy.RequirementType.INTERFACE_REQUIREMENT;\nbreak;\ncase 29:\n this.$=yy.RequirementType.PERFORMANCE_REQUIREMENT;\nbreak;\ncase 30:\n this.$=yy.RequirementType.PHYSICAL_REQUIREMENT;\nbreak;\ncase 31:\n this.$=yy.RequirementType.DESIGN_CONSTRAINT;\nbreak;\ncase 32:\n this.$=yy.RiskLevel.LOW_RISK;\nbreak;\ncase 33:\n this.$=yy.RiskLevel.MED_RISK;\nbreak;\ncase 34:\n this.$=yy.RiskLevel.HIGH_RISK;\nbreak;\ncase 35:\n this.$=yy.VerifyType.VERIFY_ANALYSIS;\nbreak;\ncase 36:\n this.$=yy.VerifyType.VERIFY_DEMONSTRATION;\nbreak;\ncase 37:\n this.$=yy.VerifyType.VERIFY_INSPECTION;\nbreak;\ncase 38:\n this.$=yy.VerifyType.VERIFY_TEST;\nbreak;\ncase 39:\n yy.addElement($$[$0-3]) \nbreak;\ncase 40:\n yy.setNewElementType($$[$0-2]); \nbreak;\ncase 41:\n yy.setNewElementDocRef($$[$0-2]); \nbreak;\ncase 44:\n yy.addRelationship($$[$0-2], $$[$0], $$[$0-4]) \nbreak;\ncase 45:\n yy.addRelationship($$[$0-2], $$[$0-4], $$[$0]) \nbreak;\ncase 46:\n this.$=yy.Relationships.CONTAINS;\nbreak;\ncase 47:\n this.$=yy.Relationships.COPIES;\nbreak;\ncase 48:\n this.$=yy.Relationships.DERIVES;\nbreak;\ncase 49:\n this.$=yy.Relationships.SATISFIES;\nbreak;\ncase 50:\n this.$=yy.Relationships.VERIFIES;\nbreak;\ncase 51:\n this.$=yy.Relationships.REFINES;\nbreak;\ncase 52:\n this.$=yy.Relationships.TRACES;\nbreak;\n}\n},\ntable: [{3:1,4:2,6:$V0,9:4,14:$V1,16:$V2,18:$V3,19:$V4},{1:[3]},{3:10,4:2,5:[1,9],6:$V0,9:4,14:$V1,16:$V2,18:$V3,19:$V4},{5:[1,11]},{10:12,20:[1,13]},{15:[1,14]},{17:[1,15]},o($V5,[2,8]),{20:[2,9]},{3:16,4:2,6:$V0,9:4,14:$V1,16:$V2,18:$V3,19:$V4},{1:[2,2]},{4:21,5:$V6,7:17,8:$V7,9:4,14:$V1,16:$V2,18:$V3,19:$V4,23:18,24:19,25:20,26:23,32:25,40:$V8,41:$V9,42:$Va,43:$Vb,44:$Vc,45:$Vd,53:$Ve,71:$Vf,72:$Vg},{11:34,12:[1,35],22:$Vh},o([12,22],[2,10]),o($V5,[2,6]),o($V5,[2,7]),{1:[2,1]},{8:[1,37]},{4:21,5:$V6,7:38,8:$V7,9:4,14:$V1,16:$V2,18:$V3,19:$V4,23:18,24:19,25:20,26:23,32:25,40:$V8,41:$V9,42:$Va,43:$Vb,44:$Vc,45:$Vd,53:$Ve,71:$Vf,72:$Vg},{4:21,5:$V6,7:39,8:$V7,9:4,14:$V1,16:$V2,18:$V3,19:$V4,23:18,24:19,25:20,26:23,32:25,40:$V8,41:$V9,42:$Va,43:$Vb,44:$Vc,45:$Vd,53:$Ve,71:$Vf,72:$Vg},{4:21,5:$V6,7:40,8:$V7,9:4,14:$V1,16:$V2,18:$V3,19:$V4,23:18,24:19,25:20,26:23,32:25,40:$V8,41:$V9,42:$Va,43:$Vb,44:$Vc,45:$Vd,53:$Ve,71:$Vf,72:$Vg},{4:21,5:$V6,7:41,8:$V7,9:4,14:$V1,16:$V2,18:$V3,19:$V4,23:18,24:19,25:20,26:23,32:25,40:$V8,41:$V9,42:$Va,43:$Vb,44:$Vc,45:$Vd,53:$Ve,71:$Vf,72:$Vg},{4:21,5:$V6,7:42,8:$V7,9:4,14:$V1,16:$V2,18:$V3,19:$V4,23:18,24:19,25:20,26:23,32:25,40:$V8,41:$V9,42:$Va,43:$Vb,44:$Vc,45:$Vd,53:$Ve,71:$Vf,72:$Vg},{27:43,71:[1,44],72:[1,45]},{54:46,71:[1,47],72:[1,48]},{60:[1,49],62:[1,50]},o($Vi,[2,26]),o($Vi,[2,27]),o($Vi,[2,28]),o($Vi,[2,29]),o($Vi,[2,30]),o($Vi,[2,31]),o($Vj,[2,55]),o($Vj,[2,56]),o($V5,[2,4]),{13:51,21:[1,52]},o($V5,[2,12]),{1:[2,3]},{8:[2,14]},{8:[2,15]},{8:[2,16]},{8:[2,17]},{8:[2,18]},{28:[1,53]},{28:[2,53]},{28:[2,54]},{28:[1,54]},{28:[2,59]},{28:[2,60]},{61:55,64:$Vk,65:$Vl,66:$Vm,67:$Vn,68:$Vo,69:$Vp,70:$Vq},{61:63,64:$Vk,65:$Vl,66:$Vm,67:$Vn,68:$Vo,69:$Vp,70:$Vq},{11:64,22:$Vh},{22:[2,11]},{5:[1,65]},{5:[1,66]},{62:[1,67]},o($Vr,[2,46]),o($Vr,[2,47]),o($Vr,[2,48]),o($Vr,[2,49]),o($Vr,[2,50]),o($Vr,[2,51]),o($Vr,[2,52]),{63:[1,68]},o($V5,[2,5]),{5:$Vs,29:69,30:$Vt,33:$Vu,35:$Vv,37:$Vw,39:$Vx},{5:$Vy,39:$Vz,55:76,56:$VA,58:$VB},{32:81,71:$Vf,72:$Vg},{32:82,71:$Vf,72:$Vg},o($VC,[2,19]),{31:[1,83]},{31:[1,84]},{31:[1,85]},{31:[1,86]},{5:$Vs,29:87,30:$Vt,33:$Vu,35:$Vv,37:$Vw,39:$Vx},o($VC,[2,25]),o($VC,[2,39]),{31:[1,88]},{31:[1,89]},{5:$Vy,39:$Vz,55:90,56:$VA,58:$VB},o($VC,[2,43]),o($VC,[2,44]),o($VC,[2,45]),{32:91,71:$Vf,72:$Vg},{34:92,71:[1,93],72:[1,94]},{36:95,46:[1,96],47:[1,97],48:[1,98]},{38:99,49:[1,100],50:[1,101],51:[1,102],52:[1,103]},o($VC,[2,24]),{57:104,71:[1,105],72:[1,106]},{59:107,71:[1,108],72:[1,109]},o($VC,[2,42]),{5:[1,110]},{5:[1,111]},{5:[2,57]},{5:[2,58]},{5:[1,112]},{5:[2,32]},{5:[2,33]},{5:[2,34]},{5:[1,113]},{5:[2,35]},{5:[2,36]},{5:[2,37]},{5:[2,38]},{5:[1,114]},{5:[2,61]},{5:[2,62]},{5:[1,115]},{5:[2,63]},{5:[2,64]},{5:$Vs,29:116,30:$Vt,33:$Vu,35:$Vv,37:$Vw,39:$Vx},{5:$Vs,29:117,30:$Vt,33:$Vu,35:$Vv,37:$Vw,39:$Vx},{5:$Vs,29:118,30:$Vt,33:$Vu,35:$Vv,37:$Vw,39:$Vx},{5:$Vs,29:119,30:$Vt,33:$Vu,35:$Vv,37:$Vw,39:$Vx},{5:$Vy,39:$Vz,55:120,56:$VA,58:$VB},{5:$Vy,39:$Vz,55:121,56:$VA,58:$VB},o($VC,[2,20]),o($VC,[2,21]),o($VC,[2,22]),o($VC,[2,23]),o($VC,[2,40]),o($VC,[2,41])],\ndefaultActions: {8:[2,9],10:[2,2],16:[2,1],37:[2,3],38:[2,14],39:[2,15],40:[2,16],41:[2,17],42:[2,18],44:[2,53],45:[2,54],47:[2,59],48:[2,60],52:[2,11],93:[2,57],94:[2,58],96:[2,32],97:[2,33],98:[2,34],100:[2,35],101:[2,36],102:[2,37],103:[2,38],105:[2,61],106:[2,62],108:[2,63],109:[2,64]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 19; \nbreak;\ncase 1: this.begin('type_directive'); return 20; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 12; \nbreak;\ncase 3: this.popState(); this.popState(); return 22; \nbreak;\ncase 4:return 21;\nbreak;\ncase 5:return 'title';\nbreak;\ncase 6: this.begin(\"acc_title\");return 14; \nbreak;\ncase 7: this.popState(); return \"acc_title_value\"; \nbreak;\ncase 8: this.begin(\"acc_descr\");return 16; \nbreak;\ncase 9: this.popState(); return \"acc_descr_value\"; \nbreak;\ncase 10: this.begin(\"acc_descr_multiline\");\nbreak;\ncase 11: this.popState(); \nbreak;\ncase 12:return \"acc_descr_multiline_value\";\nbreak;\ncase 13:return 5;\nbreak;\ncase 14:/* skip all whitespace */\nbreak;\ncase 15:/* skip comments */\nbreak;\ncase 16:/* skip comments */\nbreak;\ncase 17:return 8;\nbreak;\ncase 18:return 6;\nbreak;\ncase 19:return 28;\nbreak;\ncase 20:return 39;\nbreak;\ncase 21:return 31;\nbreak;\ncase 22:return 30;\nbreak;\ncase 23:return 33;\nbreak;\ncase 24:return 35;\nbreak;\ncase 25:return 37;\nbreak;\ncase 26:return 40;\nbreak;\ncase 27:return 41;\nbreak;\ncase 28:return 42;\nbreak;\ncase 29:return 43;\nbreak;\ncase 30:return 44;\nbreak;\ncase 31:return 45;\nbreak;\ncase 32:return 46;\nbreak;\ncase 33:return 47;\nbreak;\ncase 34:return 48;\nbreak;\ncase 35:return 49;\nbreak;\ncase 36:return 50;\nbreak;\ncase 37:return 51;\nbreak;\ncase 38:return 52;\nbreak;\ncase 39:return 53;\nbreak;\ncase 40:return 64;\nbreak;\ncase 41:return 65;\nbreak;\ncase 42:return 66;\nbreak;\ncase 43:return 67;\nbreak;\ncase 44:return 68;\nbreak;\ncase 45:return 69;\nbreak;\ncase 46:return 70;\nbreak;\ncase 47:return 56;\nbreak;\ncase 48:return 58;\nbreak;\ncase 49:return 60;\nbreak;\ncase 50:return 63;\nbreak;\ncase 51:return 62;\nbreak;\ncase 52: this.begin(\"string\"); \nbreak;\ncase 53: this.popState(); \nbreak;\ncase 54: return \"qString\"; \nbreak;\ncase 55: yy_.yytext = yy_.yytext.trim(); return 71;\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:title\\s[^#\\n;]+)/i,/^(?:accTitle\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*\\{\\s*)/i,/^(?:[\\}])/i,/^(?:[^\\}]*)/i,/^(?:(\\r?\\n)+)/i,/^(?:\\s+)/i,/^(?:#[^\\n]*)/i,/^(?:%[^\\n]*)/i,/^(?:$)/i,/^(?:requirementDiagram\\b)/i,/^(?:\\{)/i,/^(?:\\})/i,/^(?::)/i,/^(?:id\\b)/i,/^(?:text\\b)/i,/^(?:risk\\b)/i,/^(?:verifyMethod\\b)/i,/^(?:requirement\\b)/i,/^(?:functionalRequirement\\b)/i,/^(?:interfaceRequirement\\b)/i,/^(?:performanceRequirement\\b)/i,/^(?:physicalRequirement\\b)/i,/^(?:designConstraint\\b)/i,/^(?:low\\b)/i,/^(?:medium\\b)/i,/^(?:high\\b)/i,/^(?:analysis\\b)/i,/^(?:demonstration\\b)/i,/^(?:inspection\\b)/i,/^(?:test\\b)/i,/^(?:element\\b)/i,/^(?:contains\\b)/i,/^(?:copies\\b)/i,/^(?:derives\\b)/i,/^(?:satisfies\\b)/i,/^(?:verifies\\b)/i,/^(?:refines\\b)/i,/^(?:traces\\b)/i,/^(?:type\\b)/i,/^(?:docref\\b)/i,/^(?:<-)/i,/^(?:->)/i,/^(?:-)/i,/^(?:[\"])/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:[\\w][^\\r\\n\\{\\<\\>\\-\\=]*)/i],\nconditions: {\"acc_descr_multiline\":{\"rules\":[11,12],\"inclusive\":false},\"acc_descr\":{\"rules\":[9],\"inclusive\":false},\"acc_title\":{\"rules\":[7],\"inclusive\":false},\"close_directive\":{\"rules\":[],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3],\"inclusive\":false},\"open_directive\":{\"rules\":[1],\"inclusive\":false},\"unqString\":{\"rules\":[],\"inclusive\":false},\"token\":{\"rules\":[],\"inclusive\":false},\"string\":{\"rules\":[53,54],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,8,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,55],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,2],$V1=[1,3],$V2=[1,5],$V3=[1,7],$V4=[2,5],$V5=[1,15],$V6=[1,17],$V7=[1,18],$V8=[1,19],$V9=[1,21],$Va=[1,22],$Vb=[1,23],$Vc=[1,29],$Vd=[1,30],$Ve=[1,31],$Vf=[1,32],$Vg=[1,33],$Vh=[1,34],$Vi=[1,35],$Vj=[1,36],$Vk=[1,37],$Vl=[1,38],$Vm=[1,41],$Vn=[1,42],$Vo=[1,43],$Vp=[1,44],$Vq=[1,45],$Vr=[1,46],$Vs=[1,49],$Vt=[1,4,5,16,20,22,25,26,32,33,34,36,38,39,40,41,42,43,45,47,48,49,54,55,56,57,65,75],$Vu=[4,5,16,20,22,25,26,32,33,34,36,38,39,40,41,42,43,45,49,54,55,56,57,65,75],$Vv=[4,5,16,20,22,25,26,32,33,34,36,38,39,40,41,42,43,45,48,49,54,55,56,57,65,75],$Vw=[4,5,16,20,22,25,26,32,33,34,36,38,39,40,41,42,43,45,47,49,54,55,56,57,65,75],$Vx=[63,64,65],$Vy=[1,114],$Vz=[1,4,5,7,16,20,22,25,26,32,33,34,36,38,39,40,41,42,43,45,47,48,49,54,55,56,57,65,75];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"SPACE\":4,\"NEWLINE\":5,\"directive\":6,\"SD\":7,\"document\":8,\"line\":9,\"statement\":10,\"openDirective\":11,\"typeDirective\":12,\"closeDirective\":13,\":\":14,\"argDirective\":15,\"participant\":16,\"actor\":17,\"AS\":18,\"restOfLine\":19,\"participant_actor\":20,\"signal\":21,\"autonumber\":22,\"NUM\":23,\"off\":24,\"activate\":25,\"deactivate\":26,\"note_statement\":27,\"links_statement\":28,\"link_statement\":29,\"properties_statement\":30,\"details_statement\":31,\"title\":32,\"legacy_title\":33,\"acc_title\":34,\"acc_title_value\":35,\"acc_descr\":36,\"acc_descr_value\":37,\"acc_descr_multiline_value\":38,\"loop\":39,\"end\":40,\"rect\":41,\"opt\":42,\"alt\":43,\"else_sections\":44,\"par\":45,\"par_sections\":46,\"and\":47,\"else\":48,\"note\":49,\"placement\":50,\"text2\":51,\"over\":52,\"actor_pair\":53,\"links\":54,\"link\":55,\"properties\":56,\"details\":57,\"spaceList\":58,\",\":59,\"left_of\":60,\"right_of\":61,\"signaltype\":62,\"+\":63,\"-\":64,\"ACTOR\":65,\"SOLID_OPEN_ARROW\":66,\"DOTTED_OPEN_ARROW\":67,\"SOLID_ARROW\":68,\"DOTTED_ARROW\":69,\"SOLID_CROSS\":70,\"DOTTED_CROSS\":71,\"SOLID_POINT\":72,\"DOTTED_POINT\":73,\"TXT\":74,\"open_directive\":75,\"type_directive\":76,\"arg_directive\":77,\"close_directive\":78,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"SPACE\",5:\"NEWLINE\",7:\"SD\",14:\":\",16:\"participant\",18:\"AS\",19:\"restOfLine\",20:\"participant_actor\",22:\"autonumber\",23:\"NUM\",24:\"off\",25:\"activate\",26:\"deactivate\",32:\"title\",33:\"legacy_title\",34:\"acc_title\",35:\"acc_title_value\",36:\"acc_descr\",37:\"acc_descr_value\",38:\"acc_descr_multiline_value\",39:\"loop\",40:\"end\",41:\"rect\",42:\"opt\",43:\"alt\",45:\"par\",47:\"and\",48:\"else\",49:\"note\",52:\"over\",54:\"links\",55:\"link\",56:\"properties\",57:\"details\",59:\",\",60:\"left_of\",61:\"right_of\",63:\"+\",64:\"-\",65:\"ACTOR\",66:\"SOLID_OPEN_ARROW\",67:\"DOTTED_OPEN_ARROW\",68:\"SOLID_ARROW\",69:\"DOTTED_ARROW\",70:\"SOLID_CROSS\",71:\"DOTTED_CROSS\",72:\"SOLID_POINT\",73:\"DOTTED_POINT\",74:\"TXT\",75:\"open_directive\",76:\"type_directive\",77:\"arg_directive\",78:\"close_directive\"},\nproductions_: [0,[3,2],[3,2],[3,2],[3,2],[8,0],[8,2],[9,2],[9,1],[9,1],[6,4],[6,6],[10,5],[10,3],[10,5],[10,3],[10,2],[10,4],[10,3],[10,3],[10,2],[10,3],[10,3],[10,2],[10,2],[10,2],[10,2],[10,2],[10,1],[10,1],[10,2],[10,2],[10,1],[10,4],[10,4],[10,4],[10,4],[10,4],[10,1],[46,1],[46,4],[44,1],[44,4],[27,4],[27,4],[28,3],[29,3],[30,3],[31,3],[58,2],[58,1],[53,3],[53,1],[50,1],[50,1],[21,5],[21,5],[21,4],[17,1],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[51,1],[11,1],[12,1],[15,1],[13,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 4:\n yy.apply($$[$0]);return $$[$0]; \nbreak;\ncase 5:\n this.$ = [] \nbreak;\ncase 6:\n$$[$0-1].push($$[$0]);this.$ = $$[$0-1]\nbreak;\ncase 7: case 8:\n this.$ = $$[$0] \nbreak;\ncase 9:\n this.$=[]; \nbreak;\ncase 12:\n$$[$0-3].type='addParticipant';$$[$0-3].description=yy.parseMessage($$[$0-1]); this.$=$$[$0-3];\nbreak;\ncase 13:\n$$[$0-1].type='addParticipant';this.$=$$[$0-1];\nbreak;\ncase 14:\n$$[$0-3].type='addActor';$$[$0-3].description=yy.parseMessage($$[$0-1]); this.$=$$[$0-3];\nbreak;\ncase 15:\n$$[$0-1].type='addActor'; this.$=$$[$0-1];\nbreak;\ncase 17:\n this.$= {type:'sequenceIndex',sequenceIndex: Number($$[$0-2]), sequenceIndexStep:Number($$[$0-1]), sequenceVisible:true, signalType:yy.LINETYPE.AUTONUMBER};\nbreak;\ncase 18:\n this.$ = {type:'sequenceIndex',sequenceIndex: Number($$[$0-1]), sequenceIndexStep:1, sequenceVisible:true, signalType:yy.LINETYPE.AUTONUMBER};\nbreak;\ncase 19:\n this.$ = {type:'sequenceIndex', sequenceVisible:false, signalType:yy.LINETYPE.AUTONUMBER};\nbreak;\ncase 20:\nthis.$ = {type:'sequenceIndex', sequenceVisible:true, signalType:yy.LINETYPE.AUTONUMBER}; \nbreak;\ncase 21:\nthis.$={type: 'activeStart', signalType: yy.LINETYPE.ACTIVE_START, actor: $$[$0-1]};\nbreak;\ncase 22:\nthis.$={type: 'activeEnd', signalType: yy.LINETYPE.ACTIVE_END, actor: $$[$0-1]};\nbreak;\ncase 28:\nyy.setDiagramTitle($$[$0].substring(6));this.$=$$[$0].substring(6);\nbreak;\ncase 29:\nyy.setDiagramTitle($$[$0].substring(7));this.$=$$[$0].substring(7);\nbreak;\ncase 30:\n this.$=$$[$0].trim();yy.setTitle(this.$); \nbreak;\ncase 31: case 32:\n this.$=$$[$0].trim();yy.setAccDescription(this.$); \nbreak;\ncase 33:\n\n\t\t$$[$0-1].unshift({type: 'loopStart', loopText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.LOOP_START});\n\t\t$$[$0-1].push({type: 'loopEnd', loopText:$$[$0-2], signalType: yy.LINETYPE.LOOP_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 34:\n\n\t\t$$[$0-1].unshift({type: 'rectStart', color:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.RECT_START });\n\t\t$$[$0-1].push({type: 'rectEnd', color:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.RECT_END });\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 35:\n\n\t\t$$[$0-1].unshift({type: 'optStart', optText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.OPT_START});\n\t\t$$[$0-1].push({type: 'optEnd', optText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.OPT_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 36:\n\n\t\t// Alt start\n\t\t$$[$0-1].unshift({type: 'altStart', altText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.ALT_START});\n\t\t// Content in alt is already in $$[$0-1]\n\t\t// End\n\t\t$$[$0-1].push({type: 'altEnd', signalType: yy.LINETYPE.ALT_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 37:\n\n\t\t// Parallel start\n\t\t$$[$0-1].unshift({type: 'parStart', parText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.PAR_START});\n\t\t// Content in par is already in $$[$0-1]\n\t\t// End\n\t\t$$[$0-1].push({type: 'parEnd', signalType: yy.LINETYPE.PAR_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 40:\n this.$ = $$[$0-3].concat([{type: 'and', parText:yy.parseMessage($$[$0-1]), signalType: yy.LINETYPE.PAR_AND}, $$[$0]]); \nbreak;\ncase 42:\n this.$ = $$[$0-3].concat([{type: 'else', altText:yy.parseMessage($$[$0-1]), signalType: yy.LINETYPE.ALT_ELSE}, $$[$0]]); \nbreak;\ncase 43:\n\n\t\tthis.$ = [$$[$0-1], {type:'addNote', placement:$$[$0-2], actor:$$[$0-1].actor, text:$$[$0]}];\nbreak;\ncase 44:\n\n\t\t// Coerce actor_pair into a [to, from, ...] array\n\t\t$$[$0-2] = [].concat($$[$0-1], $$[$0-1]).slice(0, 2);\n\t\t$$[$0-2][0] = $$[$0-2][0].actor;\n\t\t$$[$0-2][1] = $$[$0-2][1].actor;\n\t\tthis.$ = [$$[$0-1], {type:'addNote', placement:yy.PLACEMENT.OVER, actor:$$[$0-2].slice(0, 2), text:$$[$0]}];\nbreak;\ncase 45:\n\n\t\tthis.$ = [$$[$0-1], {type:'addLinks', actor:$$[$0-1].actor, text:$$[$0]}];\n \nbreak;\ncase 46:\n\n\t\tthis.$ = [$$[$0-1], {type:'addALink', actor:$$[$0-1].actor, text:$$[$0]}];\n \nbreak;\ncase 47:\n\n\t\tthis.$ = [$$[$0-1], {type:'addProperties', actor:$$[$0-1].actor, text:$$[$0]}];\n \nbreak;\ncase 48:\n\n\t\tthis.$ = [$$[$0-1], {type:'addDetails', actor:$$[$0-1].actor, text:$$[$0]}];\n \nbreak;\ncase 51:\n this.$ = [$$[$0-2], $$[$0]]; \nbreak;\ncase 52:\n this.$ = $$[$0]; \nbreak;\ncase 53:\n this.$ = yy.PLACEMENT.LEFTOF; \nbreak;\ncase 54:\n this.$ = yy.PLACEMENT.RIGHTOF; \nbreak;\ncase 55:\n this.$ = [$$[$0-4],$$[$0-1],{type: 'addMessage', from:$$[$0-4].actor, to:$$[$0-1].actor, signalType:$$[$0-3], msg:$$[$0]},\n\t {type: 'activeStart', signalType: yy.LINETYPE.ACTIVE_START, actor: $$[$0-1]}\n\t ]\nbreak;\ncase 56:\n this.$ = [$$[$0-4],$$[$0-1],{type: 'addMessage', from:$$[$0-4].actor, to:$$[$0-1].actor, signalType:$$[$0-3], msg:$$[$0]},\n\t {type: 'activeEnd', signalType: yy.LINETYPE.ACTIVE_END, actor: $$[$0-4]}\n\t ]\nbreak;\ncase 57:\n this.$ = [$$[$0-3],$$[$0-1],{type: 'addMessage', from:$$[$0-3].actor, to:$$[$0-1].actor, signalType:$$[$0-2], msg:$$[$0]}]\nbreak;\ncase 58:\nthis.$={ type: 'addParticipant', actor:$$[$0]}\nbreak;\ncase 59:\n this.$ = yy.LINETYPE.SOLID_OPEN; \nbreak;\ncase 60:\n this.$ = yy.LINETYPE.DOTTED_OPEN; \nbreak;\ncase 61:\n this.$ = yy.LINETYPE.SOLID; \nbreak;\ncase 62:\n this.$ = yy.LINETYPE.DOTTED; \nbreak;\ncase 63:\n this.$ = yy.LINETYPE.SOLID_CROSS; \nbreak;\ncase 64:\n this.$ = yy.LINETYPE.DOTTED_CROSS; \nbreak;\ncase 65:\n this.$ = yy.LINETYPE.SOLID_POINT; \nbreak;\ncase 66:\n this.$ = yy.LINETYPE.DOTTED_POINT; \nbreak;\ncase 67:\nthis.$ = yy.parseMessage($$[$0].trim().substring(1)) \nbreak;\ncase 68:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 69:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 70:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 71:\n yy.parseDirective('}%%', 'close_directive', 'sequence'); \nbreak;\n}\n},\ntable: [{3:1,4:$V0,5:$V1,6:4,7:$V2,11:6,75:$V3},{1:[3]},{3:8,4:$V0,5:$V1,6:4,7:$V2,11:6,75:$V3},{3:9,4:$V0,5:$V1,6:4,7:$V2,11:6,75:$V3},{3:10,4:$V0,5:$V1,6:4,7:$V2,11:6,75:$V3},o([1,4,5,16,20,22,25,26,32,33,34,36,38,39,41,42,43,45,49,54,55,56,57,65,75],$V4,{8:11}),{12:12,76:[1,13]},{76:[2,68]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{1:[2,4],4:$V5,5:$V6,6:39,9:14,10:16,11:6,16:$V7,17:40,20:$V8,21:20,22:$V9,25:$Va,26:$Vb,27:24,28:25,29:26,30:27,31:28,32:$Vc,33:$Vd,34:$Ve,36:$Vf,38:$Vg,39:$Vh,41:$Vi,42:$Vj,43:$Vk,45:$Vl,49:$Vm,54:$Vn,55:$Vo,56:$Vp,57:$Vq,65:$Vr,75:$V3},{13:47,14:[1,48],78:$Vs},o([14,78],[2,69]),o($Vt,[2,6]),{6:39,10:50,11:6,16:$V7,17:40,20:$V8,21:20,22:$V9,25:$Va,26:$Vb,27:24,28:25,29:26,30:27,31:28,32:$Vc,33:$Vd,34:$Ve,36:$Vf,38:$Vg,39:$Vh,41:$Vi,42:$Vj,43:$Vk,45:$Vl,49:$Vm,54:$Vn,55:$Vo,56:$Vp,57:$Vq,65:$Vr,75:$V3},o($Vt,[2,8]),o($Vt,[2,9]),{17:51,65:$Vr},{17:52,65:$Vr},{5:[1,53]},{5:[1,56],23:[1,54],24:[1,55]},{17:57,65:$Vr},{17:58,65:$Vr},{5:[1,59]},{5:[1,60]},{5:[1,61]},{5:[1,62]},{5:[1,63]},o($Vt,[2,28]),o($Vt,[2,29]),{35:[1,64]},{37:[1,65]},o($Vt,[2,32]),{19:[1,66]},{19:[1,67]},{19:[1,68]},{19:[1,69]},{19:[1,70]},o($Vt,[2,38]),{62:71,66:[1,72],67:[1,73],68:[1,74],69:[1,75],70:[1,76],71:[1,77],72:[1,78],73:[1,79]},{50:80,52:[1,81],60:[1,82],61:[1,83]},{17:84,65:$Vr},{17:85,65:$Vr},{17:86,65:$Vr},{17:87,65:$Vr},o([5,18,59,66,67,68,69,70,71,72,73,74],[2,58]),{5:[1,88]},{15:89,77:[1,90]},{5:[2,71]},o($Vt,[2,7]),{5:[1,92],18:[1,91]},{5:[1,94],18:[1,93]},o($Vt,[2,16]),{5:[1,96],23:[1,95]},{5:[1,97]},o($Vt,[2,20]),{5:[1,98]},{5:[1,99]},o($Vt,[2,23]),o($Vt,[2,24]),o($Vt,[2,25]),o($Vt,[2,26]),o($Vt,[2,27]),o($Vt,[2,30]),o($Vt,[2,31]),o($Vu,$V4,{8:100}),o($Vu,$V4,{8:101}),o($Vu,$V4,{8:102}),o($Vv,$V4,{44:103,8:104}),o($Vw,$V4,{46:105,8:106}),{17:109,63:[1,107],64:[1,108],65:$Vr},o($Vx,[2,59]),o($Vx,[2,60]),o($Vx,[2,61]),o($Vx,[2,62]),o($Vx,[2,63]),o($Vx,[2,64]),o($Vx,[2,65]),o($Vx,[2,66]),{17:110,65:$Vr},{17:112,53:111,65:$Vr},{65:[2,53]},{65:[2,54]},{51:113,74:$Vy},{51:115,74:$Vy},{51:116,74:$Vy},{51:117,74:$Vy},o($Vz,[2,10]),{13:118,78:$Vs},{78:[2,70]},{19:[1,119]},o($Vt,[2,13]),{19:[1,120]},o($Vt,[2,15]),{5:[1,121]},o($Vt,[2,18]),o($Vt,[2,19]),o($Vt,[2,21]),o($Vt,[2,22]),{4:$V5,5:$V6,6:39,9:14,10:16,11:6,16:$V7,17:40,20:$V8,21:20,22:$V9,25:$Va,26:$Vb,27:24,28:25,29:26,30:27,31:28,32:$Vc,33:$Vd,34:$Ve,36:$Vf,38:$Vg,39:$Vh,40:[1,122],41:$Vi,42:$Vj,43:$Vk,45:$Vl,49:$Vm,54:$Vn,55:$Vo,56:$Vp,57:$Vq,65:$Vr,75:$V3},{4:$V5,5:$V6,6:39,9:14,10:16,11:6,16:$V7,17:40,20:$V8,21:20,22:$V9,25:$Va,26:$Vb,27:24,28:25,29:26,30:27,31:28,32:$Vc,33:$Vd,34:$Ve,36:$Vf,38:$Vg,39:$Vh,40:[1,123],41:$Vi,42:$Vj,43:$Vk,45:$Vl,49:$Vm,54:$Vn,55:$Vo,56:$Vp,57:$Vq,65:$Vr,75:$V3},{4:$V5,5:$V6,6:39,9:14,10:16,11:6,16:$V7,17:40,20:$V8,21:20,22:$V9,25:$Va,26:$Vb,27:24,28:25,29:26,30:27,31:28,32:$Vc,33:$Vd,34:$Ve,36:$Vf,38:$Vg,39:$Vh,40:[1,124],41:$Vi,42:$Vj,43:$Vk,45:$Vl,49:$Vm,54:$Vn,55:$Vo,56:$Vp,57:$Vq,65:$Vr,75:$V3},{40:[1,125]},{4:$V5,5:$V6,6:39,9:14,10:16,11:6,16:$V7,17:40,20:$V8,21:20,22:$V9,25:$Va,26:$Vb,27:24,28:25,29:26,30:27,31:28,32:$Vc,33:$Vd,34:$Ve,36:$Vf,38:$Vg,39:$Vh,40:[2,41],41:$Vi,42:$Vj,43:$Vk,45:$Vl,48:[1,126],49:$Vm,54:$Vn,55:$Vo,56:$Vp,57:$Vq,65:$Vr,75:$V3},{40:[1,127]},{4:$V5,5:$V6,6:39,9:14,10:16,11:6,16:$V7,17:40,20:$V8,21:20,22:$V9,25:$Va,26:$Vb,27:24,28:25,29:26,30:27,31:28,32:$Vc,33:$Vd,34:$Ve,36:$Vf,38:$Vg,39:$Vh,40:[2,39],41:$Vi,42:$Vj,43:$Vk,45:$Vl,47:[1,128],49:$Vm,54:$Vn,55:$Vo,56:$Vp,57:$Vq,65:$Vr,75:$V3},{17:129,65:$Vr},{17:130,65:$Vr},{51:131,74:$Vy},{51:132,74:$Vy},{51:133,74:$Vy},{59:[1,134],74:[2,52]},{5:[2,45]},{5:[2,67]},{5:[2,46]},{5:[2,47]},{5:[2,48]},{5:[1,135]},{5:[1,136]},{5:[1,137]},o($Vt,[2,17]),o($Vt,[2,33]),o($Vt,[2,34]),o($Vt,[2,35]),o($Vt,[2,36]),{19:[1,138]},o($Vt,[2,37]),{19:[1,139]},{51:140,74:$Vy},{51:141,74:$Vy},{5:[2,57]},{5:[2,43]},{5:[2,44]},{17:142,65:$Vr},o($Vz,[2,11]),o($Vt,[2,12]),o($Vt,[2,14]),o($Vv,$V4,{8:104,44:143}),o($Vw,$V4,{8:106,46:144}),{5:[2,55]},{5:[2,56]},{74:[2,51]},{40:[2,42]},{40:[2,40]}],\ndefaultActions: {7:[2,68],8:[2,1],9:[2,2],10:[2,3],49:[2,71],82:[2,53],83:[2,54],90:[2,70],113:[2,45],114:[2,67],115:[2,46],116:[2,47],117:[2,48],131:[2,57],132:[2,43],133:[2,44],140:[2,55],141:[2,56],142:[2,51],143:[2,42],144:[2,40]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 75; \nbreak;\ncase 1: this.begin('type_directive'); return 76; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 14; \nbreak;\ncase 3: this.popState(); this.popState(); return 78; \nbreak;\ncase 4:return 77;\nbreak;\ncase 5:return 5;\nbreak;\ncase 6:/* skip all whitespace */\nbreak;\ncase 7:/* skip same-line whitespace */\nbreak;\ncase 8:/* skip comments */\nbreak;\ncase 9:/* skip comments */\nbreak;\ncase 10:/* skip comments */\nbreak;\ncase 11:return 23;\nbreak;\ncase 12: this.begin('ID'); return 16; \nbreak;\ncase 13: this.begin('ID'); return 20; \nbreak;\ncase 14: yy_.yytext = yy_.yytext.trim(); this.begin('ALIAS'); return 65; \nbreak;\ncase 15: this.popState(); this.popState(); this.begin('LINE'); return 18; \nbreak;\ncase 16: this.popState(); this.popState(); return 5; \nbreak;\ncase 17: this.begin('LINE'); return 39; \nbreak;\ncase 18: this.begin('LINE'); return 41; \nbreak;\ncase 19: this.begin('LINE'); return 42; \nbreak;\ncase 20: this.begin('LINE'); return 43; \nbreak;\ncase 21: this.begin('LINE'); return 48; \nbreak;\ncase 22: this.begin('LINE'); return 45; \nbreak;\ncase 23: this.begin('LINE'); return 47; \nbreak;\ncase 24: this.popState(); return 19; \nbreak;\ncase 25:return 40;\nbreak;\ncase 26:return 60;\nbreak;\ncase 27:return 61;\nbreak;\ncase 28:return 54;\nbreak;\ncase 29:return 55;\nbreak;\ncase 30:return 56;\nbreak;\ncase 31:return 57;\nbreak;\ncase 32:return 52;\nbreak;\ncase 33:return 49;\nbreak;\ncase 34: this.begin('ID'); return 25; \nbreak;\ncase 35: this.begin('ID'); return 26; \nbreak;\ncase 36:return 32;\nbreak;\ncase 37:return 33;\nbreak;\ncase 38: this.begin(\"acc_title\");return 34; \nbreak;\ncase 39: this.popState(); return \"acc_title_value\"; \nbreak;\ncase 40: this.begin(\"acc_descr\");return 36; \nbreak;\ncase 41: this.popState(); return \"acc_descr_value\"; \nbreak;\ncase 42: this.begin(\"acc_descr_multiline\");\nbreak;\ncase 43: this.popState(); \nbreak;\ncase 44:return \"acc_descr_multiline_value\";\nbreak;\ncase 45:return 7;\nbreak;\ncase 46:return 22;\nbreak;\ncase 47:return 24;\nbreak;\ncase 48:return 59;\nbreak;\ncase 49:return 5;\nbreak;\ncase 50: yy_.yytext = yy_.yytext.trim(); return 65; \nbreak;\ncase 51:return 68;\nbreak;\ncase 52:return 69;\nbreak;\ncase 53:return 66;\nbreak;\ncase 54:return 67;\nbreak;\ncase 55:return 70;\nbreak;\ncase 56:return 71;\nbreak;\ncase 57:return 72;\nbreak;\ncase 58:return 73;\nbreak;\ncase 59:return 74;\nbreak;\ncase 60:return 63;\nbreak;\ncase 61:return 64;\nbreak;\ncase 62:return 5;\nbreak;\ncase 63:return 'INVALID';\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?:((?!\\n)\\s)+)/i,/^(?:#[^\\n]*)/i,/^(?:%(?!\\{)[^\\n]*)/i,/^(?:[^\\}]%%[^\\n]*)/i,/^(?:[0-9]+(?=[ \\n]+))/i,/^(?:participant\\b)/i,/^(?:actor\\b)/i,/^(?:[^\\->:\\n,;]+?(?=((?!\\n)\\s)+as(?!\\n)\\s|[#\\n;]|$))/i,/^(?:as\\b)/i,/^(?:(?:))/i,/^(?:loop\\b)/i,/^(?:rect\\b)/i,/^(?:opt\\b)/i,/^(?:alt\\b)/i,/^(?:else\\b)/i,/^(?:par\\b)/i,/^(?:and\\b)/i,/^(?:(?:[:]?(?:no)?wrap)?[^#\\n;]*)/i,/^(?:end\\b)/i,/^(?:left of\\b)/i,/^(?:right of\\b)/i,/^(?:links\\b)/i,/^(?:link\\b)/i,/^(?:properties\\b)/i,/^(?:details\\b)/i,/^(?:over\\b)/i,/^(?:note\\b)/i,/^(?:activate\\b)/i,/^(?:deactivate\\b)/i,/^(?:title\\s[^#\\n;]+)/i,/^(?:title:\\s[^#\\n;]+)/i,/^(?:accTitle\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*\\{\\s*)/i,/^(?:[\\}])/i,/^(?:[^\\}]*)/i,/^(?:sequenceDiagram\\b)/i,/^(?:autonumber\\b)/i,/^(?:off\\b)/i,/^(?:,)/i,/^(?:;)/i,/^(?:[^\\+\\->:\\n,;]+((?!(-x|--x|-\\)|--\\)))[\\-]*[^\\+\\->:\\n,;]+)*)/i,/^(?:->>)/i,/^(?:-->>)/i,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?:-[\\)])/i,/^(?:--[\\)])/i,/^(?::(?:(?:no)?wrap)?[^#\\n;]+)/i,/^(?:\\+)/i,/^(?:-)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"acc_descr_multiline\":{\"rules\":[43,44],\"inclusive\":false},\"acc_descr\":{\"rules\":[41],\"inclusive\":false},\"acc_title\":{\"rules\":[39],\"inclusive\":false},\"open_directive\":{\"rules\":[1,8],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3,8],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4,8],\"inclusive\":false},\"ID\":{\"rules\":[7,8,14],\"inclusive\":false},\"ALIAS\":{\"rules\":[7,8,15,16],\"inclusive\":false},\"LINE\":{\"rules\":[7,8,24],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,8,9,10,11,12,13,17,18,19,20,21,22,23,25,26,27,28,29,30,31,32,33,34,35,36,37,38,40,42,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,2],$V1=[1,3],$V2=[1,5],$V3=[1,7],$V4=[2,5],$V5=[1,15],$V6=[1,17],$V7=[1,19],$V8=[1,20],$V9=[1,21],$Va=[1,22],$Vb=[1,33],$Vc=[1,23],$Vd=[1,24],$Ve=[1,25],$Vf=[1,26],$Vg=[1,27],$Vh=[1,30],$Vi=[1,31],$Vj=[1,32],$Vk=[1,35],$Vl=[1,36],$Vm=[1,37],$Vn=[1,38],$Vo=[1,34],$Vp=[1,41],$Vq=[1,4,5,14,15,17,19,20,22,23,24,25,26,27,31,33,35,41,42,43,44,47,50],$Vr=[1,4,5,12,13,14,15,17,19,20,22,23,24,25,26,27,31,33,35,41,42,43,44,47,50],$Vs=[1,4,5,7,14,15,17,19,20,22,23,24,25,26,27,31,33,35,41,42,43,44,47,50],$Vt=[4,5,14,15,17,19,20,22,23,24,25,26,27,31,33,35,41,42,43,44,47,50];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"SPACE\":4,\"NL\":5,\"directive\":6,\"SD\":7,\"document\":8,\"line\":9,\"statement\":10,\"idStatement\":11,\"DESCR\":12,\"-->\":13,\"HIDE_EMPTY\":14,\"scale\":15,\"WIDTH\":16,\"COMPOSIT_STATE\":17,\"STRUCT_START\":18,\"STRUCT_STOP\":19,\"STATE_DESCR\":20,\"AS\":21,\"ID\":22,\"FORK\":23,\"JOIN\":24,\"CHOICE\":25,\"CONCURRENT\":26,\"note\":27,\"notePosition\":28,\"NOTE_TEXT\":29,\"direction\":30,\"acc_title\":31,\"acc_title_value\":32,\"acc_descr\":33,\"acc_descr_value\":34,\"acc_descr_multiline_value\":35,\"openDirective\":36,\"typeDirective\":37,\"closeDirective\":38,\":\":39,\"argDirective\":40,\"direction_tb\":41,\"direction_bt\":42,\"direction_rl\":43,\"direction_lr\":44,\"eol\":45,\";\":46,\"EDGE_STATE\":47,\"left_of\":48,\"right_of\":49,\"open_directive\":50,\"type_directive\":51,\"arg_directive\":52,\"close_directive\":53,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"SPACE\",5:\"NL\",7:\"SD\",12:\"DESCR\",13:\"-->\",14:\"HIDE_EMPTY\",15:\"scale\",16:\"WIDTH\",17:\"COMPOSIT_STATE\",18:\"STRUCT_START\",19:\"STRUCT_STOP\",20:\"STATE_DESCR\",21:\"AS\",22:\"ID\",23:\"FORK\",24:\"JOIN\",25:\"CHOICE\",26:\"CONCURRENT\",27:\"note\",29:\"NOTE_TEXT\",31:\"acc_title\",32:\"acc_title_value\",33:\"acc_descr\",34:\"acc_descr_value\",35:\"acc_descr_multiline_value\",39:\":\",41:\"direction_tb\",42:\"direction_bt\",43:\"direction_rl\",44:\"direction_lr\",46:\";\",47:\"EDGE_STATE\",48:\"left_of\",49:\"right_of\",50:\"open_directive\",51:\"type_directive\",52:\"arg_directive\",53:\"close_directive\"},\nproductions_: [0,[3,2],[3,2],[3,2],[3,2],[8,0],[8,2],[9,2],[9,1],[9,1],[10,1],[10,2],[10,3],[10,4],[10,1],[10,2],[10,1],[10,4],[10,3],[10,6],[10,1],[10,1],[10,1],[10,1],[10,4],[10,4],[10,1],[10,1],[10,2],[10,2],[10,1],[6,3],[6,5],[30,1],[30,1],[30,1],[30,1],[45,1],[45,1],[11,1],[11,1],[28,1],[28,1],[36,1],[37,1],[40,1],[38,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 4:\n /*console.warn('Root document', $$[$0]);*/ yy.setRootDoc($$[$0]);return $$[$0]; \nbreak;\ncase 5:\n this.$ = [] \nbreak;\ncase 6:\n\n if($$[$0]!='nl'){\n $$[$0-1].push($$[$0]);this.$ = $$[$0-1]\n }\n // console.warn('Got document',$$[$0-1], $$[$0]);\n \nbreak;\ncase 7: case 8:\n this.$ = $$[$0] \nbreak;\ncase 9:\n this.$='nl';\nbreak;\ncase 10:\n /*console.warn('got id and descr', $$[$0]);*/this.$={ stmt: 'state', id: $$[$0], type: 'default', description: ''};\nbreak;\ncase 11:\n /*console.warn('got id and descr', $$[$0-1], $$[$0].trim());*/this.$={ stmt: 'state', id: $$[$0-1], type: 'default', description: yy.trimColon($$[$0])};\nbreak;\ncase 12:\n\n /*console.warn('got id', $$[$0-2]);yy.addRelation($$[$0-2], $$[$0]);*/\n this.$={ stmt: 'relation', state1: { stmt: 'state', id: $$[$0-2], type: 'default', description: '' }, state2:{ stmt: 'state', id: $$[$0] ,type: 'default', description: ''}};\n \nbreak;\ncase 13:\n\n /*yy.addRelation($$[$0-3], $$[$0-1], $$[$0].substr(1).trim());*/\n this.$={ stmt: 'relation', state1: { stmt: 'state', id: $$[$0-3], type: 'default', description: '' }, state2:{ stmt: 'state', id: $$[$0-1] ,type: 'default', description: ''}, description: $$[$0].substr(1).trim()};\n \nbreak;\ncase 17:\n\n /* console.warn('Adding document for state without id ', $$[$0-3]);*/\n this.$={ stmt: 'state', id: $$[$0-3], type: 'default', description: '', doc: $$[$0-1] }\n \nbreak;\ncase 18:\n\n var id=$$[$0];\n var description = $$[$0-2].trim();\n if($$[$0].match(':')){\n var parts = $$[$0].split(':');\n id=parts[0];\n description = [description, parts[1]];\n }\n this.$={stmt: 'state', id: id, type: 'default', description: description};\n\n \nbreak;\ncase 19:\n\n // console.warn('Adding document for state with id zxzx', $$[$0-3], $$[$0-2], yy.getDirection()); yy.addDocument($$[$0-3]);\n this.$={ stmt: 'state', id: $$[$0-3], type: 'default', description: $$[$0-5], doc: $$[$0-1] }\n \nbreak;\ncase 20:\n\n this.$={ stmt: 'state', id: $$[$0], type: 'fork' }\n \nbreak;\ncase 21:\n\n this.$={ stmt: 'state', id: $$[$0], type: 'join' }\n \nbreak;\ncase 22:\n\n this.$={ stmt: 'state', id: $$[$0], type: 'choice' }\n \nbreak;\ncase 23:\n\n this.$={ stmt: 'state', id: yy.getDividerId(), type: 'divider' }\n \nbreak;\ncase 24:\n\n /* console.warn('got NOTE, position: ', $$[$0-2].trim(), 'id = ', $$[$0-1].trim(), 'note: ', $$[$0]);*/\n this.$={ stmt: 'state', id: $$[$0-1].trim(), note:{position: $$[$0-2].trim(), text: $$[$0].trim()}};\n \nbreak;\ncase 28:\n this.$=$$[$0].trim();yy.setTitle(this.$); \nbreak;\ncase 29: case 30:\n this.$=$$[$0].trim();yy.setAccDescription(this.$); \nbreak;\ncase 33:\n yy.setDirection('TB');this.$={stmt:'dir', value:'TB'};\nbreak;\ncase 34:\n yy.setDirection('BT');this.$={stmt:'dir', value:'BT'};\nbreak;\ncase 35:\n yy.setDirection('RL'); this.$={stmt:'dir', value:'RL'};\nbreak;\ncase 36:\n yy.setDirection('LR');this.$={stmt:'dir', value:'LR'};\nbreak;\ncase 39: case 40:\nthis.$=$$[$0];\nbreak;\ncase 43:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 44:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 45:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 46:\n yy.parseDirective('}%%', 'close_directive', 'state'); \nbreak;\n}\n},\ntable: [{3:1,4:$V0,5:$V1,6:4,7:$V2,36:6,50:$V3},{1:[3]},{3:8,4:$V0,5:$V1,6:4,7:$V2,36:6,50:$V3},{3:9,4:$V0,5:$V1,6:4,7:$V2,36:6,50:$V3},{3:10,4:$V0,5:$V1,6:4,7:$V2,36:6,50:$V3},o([1,4,5,14,15,17,20,22,23,24,25,26,27,31,33,35,41,42,43,44,47,50],$V4,{8:11}),{37:12,51:[1,13]},{51:[2,43]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{1:[2,4],4:$V5,5:$V6,6:28,9:14,10:16,11:18,14:$V7,15:$V8,17:$V9,20:$Va,22:$Vb,23:$Vc,24:$Vd,25:$Ve,26:$Vf,27:$Vg,30:29,31:$Vh,33:$Vi,35:$Vj,36:6,41:$Vk,42:$Vl,43:$Vm,44:$Vn,47:$Vo,50:$V3},{38:39,39:[1,40],53:$Vp},o([39,53],[2,44]),o($Vq,[2,6]),{6:28,10:42,11:18,14:$V7,15:$V8,17:$V9,20:$Va,22:$Vb,23:$Vc,24:$Vd,25:$Ve,26:$Vf,27:$Vg,30:29,31:$Vh,33:$Vi,35:$Vj,36:6,41:$Vk,42:$Vl,43:$Vm,44:$Vn,47:$Vo,50:$V3},o($Vq,[2,8]),o($Vq,[2,9]),o($Vq,[2,10],{12:[1,43],13:[1,44]}),o($Vq,[2,14]),{16:[1,45]},o($Vq,[2,16],{18:[1,46]}),{21:[1,47]},o($Vq,[2,20]),o($Vq,[2,21]),o($Vq,[2,22]),o($Vq,[2,23]),{28:48,29:[1,49],48:[1,50],49:[1,51]},o($Vq,[2,26]),o($Vq,[2,27]),{32:[1,52]},{34:[1,53]},o($Vq,[2,30]),o($Vr,[2,39]),o($Vr,[2,40]),o($Vq,[2,33]),o($Vq,[2,34]),o($Vq,[2,35]),o($Vq,[2,36]),o($Vs,[2,31]),{40:54,52:[1,55]},o($Vs,[2,46]),o($Vq,[2,7]),o($Vq,[2,11]),{11:56,22:$Vb,47:$Vo},o($Vq,[2,15]),o($Vt,$V4,{8:57}),{22:[1,58]},{22:[1,59]},{21:[1,60]},{22:[2,41]},{22:[2,42]},o($Vq,[2,28]),o($Vq,[2,29]),{38:61,53:$Vp},{53:[2,45]},o($Vq,[2,12],{12:[1,62]}),{4:$V5,5:$V6,6:28,9:14,10:16,11:18,14:$V7,15:$V8,17:$V9,19:[1,63],20:$Va,22:$Vb,23:$Vc,24:$Vd,25:$Ve,26:$Vf,27:$Vg,30:29,31:$Vh,33:$Vi,35:$Vj,36:6,41:$Vk,42:$Vl,43:$Vm,44:$Vn,47:$Vo,50:$V3},o($Vq,[2,18],{18:[1,64]}),{29:[1,65]},{22:[1,66]},o($Vs,[2,32]),o($Vq,[2,13]),o($Vq,[2,17]),o($Vt,$V4,{8:67}),o($Vq,[2,24]),o($Vq,[2,25]),{4:$V5,5:$V6,6:28,9:14,10:16,11:18,14:$V7,15:$V8,17:$V9,19:[1,68],20:$Va,22:$Vb,23:$Vc,24:$Vd,25:$Ve,26:$Vf,27:$Vg,30:29,31:$Vh,33:$Vi,35:$Vj,36:6,41:$Vk,42:$Vl,43:$Vm,44:$Vn,47:$Vo,50:$V3},o($Vq,[2,19])],\ndefaultActions: {7:[2,43],8:[2,1],9:[2,2],10:[2,3],50:[2,41],51:[2,42],55:[2,45]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:return 41;\nbreak;\ncase 1:return 42;\nbreak;\ncase 2:return 43;\nbreak;\ncase 3:return 44;\nbreak;\ncase 4: this.begin('open_directive'); return 50; \nbreak;\ncase 5: this.begin('type_directive'); return 51; \nbreak;\ncase 6: this.popState(); this.begin('arg_directive'); return 39; \nbreak;\ncase 7: this.popState(); this.popState(); return 53; \nbreak;\ncase 8:return 52;\nbreak;\ncase 9:/* skip comments */\nbreak;\ncase 10:/* skip comments */{ /*console.log('Crap after close');*/ }\nbreak;\ncase 11:return 5;\nbreak;\ncase 12:/* skip all whitespace */\nbreak;\ncase 13:/* skip same-line whitespace */\nbreak;\ncase 14:/* skip comments */\nbreak;\ncase 15:/* skip comments */\nbreak;\ncase 16: this.pushState('SCALE'); /* console.log('Got scale', yy_.yytext);*/ return 15; \nbreak;\ncase 17:return 16;\nbreak;\ncase 18:this.popState();\nbreak;\ncase 19: this.begin(\"acc_title\");return 31; \nbreak;\ncase 20: this.popState(); return \"acc_title_value\"; \nbreak;\ncase 21: this.begin(\"acc_descr\");return 33; \nbreak;\ncase 22: this.popState(); return \"acc_descr_value\"; \nbreak;\ncase 23: this.begin(\"acc_descr_multiline\");\nbreak;\ncase 24: this.popState(); \nbreak;\ncase 25:return \"acc_descr_multiline_value\";\nbreak;\ncase 26: /*console.log('Starting STATE zxzx'+yy.getDirection());*/this.pushState('STATE'); \nbreak;\ncase 27:this.popState();yy_.yytext=yy_.yytext.slice(0,-8).trim(); /*console.warn('Fork Fork: ',yy_.yytext);*/return 23;\nbreak;\ncase 28:this.popState();yy_.yytext=yy_.yytext.slice(0,-8).trim();/*console.warn('Fork Join: ',yy_.yytext);*/return 24;\nbreak;\ncase 29:this.popState();yy_.yytext=yy_.yytext.slice(0,-10).trim();/*console.warn('Fork Join: ',yy_.yytext);*/return 25;\nbreak;\ncase 30:this.popState();yy_.yytext=yy_.yytext.slice(0,-8).trim();/*console.warn('Fork Fork: ',yy_.yytext);*/return 23;\nbreak;\ncase 31:this.popState();yy_.yytext=yy_.yytext.slice(0,-8).trim();/*console.warn('Fork Join: ',yy_.yytext);*/return 24;\nbreak;\ncase 32:this.popState();yy_.yytext=yy_.yytext.slice(0,-10).trim();/*console.warn('Fork Join: ',yy_.yytext);*/return 25;\nbreak;\ncase 33: return 41;\nbreak;\ncase 34: return 42;\nbreak;\ncase 35: return 43;\nbreak;\ncase 36: return 44;\nbreak;\ncase 37: /*console.log('Starting STATE_STRING zxzx');*/this.begin(\"STATE_STRING\");\nbreak;\ncase 38:this.popState();this.pushState('STATE_ID');return \"AS\";\nbreak;\ncase 39:this.popState();/* console.log('STATE_ID', yy_.yytext);*/return \"ID\";\nbreak;\ncase 40:this.popState();\nbreak;\ncase 41: /*console.log('Long description:', yy_.yytext);*/return \"STATE_DESCR\";\nbreak;\ncase 42:/*console.log('COMPOSIT_STATE', yy_.yytext);*/return 17;\nbreak;\ncase 43:this.popState();\nbreak;\ncase 44:this.popState();this.pushState('struct'); /*console.log('begin struct', yy_.yytext);*/return 18;\nbreak;\ncase 45: /*console.log('Ending struct');*/ this.popState(); return 19;\nbreak;\ncase 46:/* nothing */\nbreak;\ncase 47: this.begin('NOTE'); return 27; \nbreak;\ncase 48: this.popState();this.pushState('NOTE_ID');return 48;\nbreak;\ncase 49: this.popState();this.pushState('NOTE_ID');return 49;\nbreak;\ncase 50: this.popState();this.pushState('FLOATING_NOTE');\nbreak;\ncase 51:this.popState();this.pushState('FLOATING_NOTE_ID');return \"AS\";\nbreak;\ncase 52:/**/\nbreak;\ncase 53: /*console.log('Floating note text: ', yy_.yytext);*/return \"NOTE_TEXT\";\nbreak;\ncase 54:this.popState();/*console.log('Floating note ID', yy_.yytext);*/return \"ID\";\nbreak;\ncase 55: this.popState();this.pushState('NOTE_TEXT');/*console.log('Got ID for note', yy_.yytext);*/return 22;\nbreak;\ncase 56: this.popState();/*console.log('Got NOTE_TEXT for note',yy_.yytext);*/yy_.yytext = yy_.yytext.substr(2).trim();return 29;\nbreak;\ncase 57: this.popState();/*console.log('Got NOTE_TEXT for note',yy_.yytext);*/yy_.yytext = yy_.yytext.slice(0,-8).trim();return 29;\nbreak;\ncase 58: /*console.log('Got state diagram', yy_.yytext,'#');*/return 7; \nbreak;\ncase 59: /*console.log('Got state diagram', yy_.yytext,'#');*/return 7; \nbreak;\ncase 60: /*console.log('HIDE_EMPTY', yy_.yytext,'#');*/return 14; \nbreak;\ncase 61: /*console.log('EDGE_STATE=',yy_.yytext);*/ return 47;\nbreak;\ncase 62: /*console.log('=>ID=',yy_.yytext);*/ return 22;\nbreak;\ncase 63: yy_.yytext = yy_.yytext.trim(); /*console.log('Descr = ', yy_.yytext);*/ return 12; \nbreak;\ncase 64:return 13;\nbreak;\ncase 65:return 26;\nbreak;\ncase 66:return 5;\nbreak;\ncase 67:return 'INVALID';\nbreak;\n}\n},\nrules: [/^(?:.*direction\\s+TB[^\\n]*)/i,/^(?:.*direction\\s+BT[^\\n]*)/i,/^(?:.*direction\\s+RL[^\\n]*)/i,/^(?:.*direction\\s+LR[^\\n]*)/i,/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:%%(?!\\{)[^\\n]*)/i,/^(?:[^\\}]%%[^\\n]*)/i,/^(?:[\\n]+)/i,/^(?:[\\s]+)/i,/^(?:((?!\\n)\\s)+)/i,/^(?:#[^\\n]*)/i,/^(?:%[^\\n]*)/i,/^(?:scale\\s+)/i,/^(?:\\d+)/i,/^(?:\\s+width\\b)/i,/^(?:accTitle\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*\\{\\s*)/i,/^(?:[\\}])/i,/^(?:[^\\}]*)/i,/^(?:state\\s+)/i,/^(?:.*<<fork>>)/i,/^(?:.*<<join>>)/i,/^(?:.*<<choice>>)/i,/^(?:.*\\[\\[fork\\]\\])/i,/^(?:.*\\[\\[join\\]\\])/i,/^(?:.*\\[\\[choice\\]\\])/i,/^(?:.*direction\\s+TB[^\\n]*)/i,/^(?:.*direction\\s+BT[^\\n]*)/i,/^(?:.*direction\\s+RL[^\\n]*)/i,/^(?:.*direction\\s+LR[^\\n]*)/i,/^(?:[\"])/i,/^(?:\\s*as\\s+)/i,/^(?:[^\\n\\{]*)/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:[^\\n\\s\\{]+)/i,/^(?:\\n)/i,/^(?:\\{)/i,/^(?:\\})/i,/^(?:[\\n])/i,/^(?:note\\s+)/i,/^(?:left of\\b)/i,/^(?:right of\\b)/i,/^(?:\")/i,/^(?:\\s*as\\s*)/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:[^\\n]*)/i,/^(?:\\s*[^:\\n\\s\\-]+)/i,/^(?:\\s*:[^:\\n;]+)/i,/^(?:[\\s\\S]*?end note\\b)/i,/^(?:stateDiagram\\s+)/i,/^(?:stateDiagram-v2\\s+)/i,/^(?:hide empty description\\b)/i,/^(?:\\[\\*\\])/i,/^(?:[^:\\n\\s\\-\\{]+)/i,/^(?:\\s*:[^:\\n;]+)/i,/^(?:-->)/i,/^(?:--)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"LINE\":{\"rules\":[13,14],\"inclusive\":false},\"close_directive\":{\"rules\":[13,14],\"inclusive\":false},\"arg_directive\":{\"rules\":[7,8,13,14],\"inclusive\":false},\"type_directive\":{\"rules\":[6,7,13,14],\"inclusive\":false},\"open_directive\":{\"rules\":[5,13,14],\"inclusive\":false},\"struct\":{\"rules\":[13,14,26,33,34,35,36,45,46,47,61,62,63,64,65],\"inclusive\":false},\"FLOATING_NOTE_ID\":{\"rules\":[54],\"inclusive\":false},\"FLOATING_NOTE\":{\"rules\":[51,52,53],\"inclusive\":false},\"NOTE_TEXT\":{\"rules\":[56,57],\"inclusive\":false},\"NOTE_ID\":{\"rules\":[55],\"inclusive\":false},\"NOTE\":{\"rules\":[48,49,50],\"inclusive\":false},\"acc_descr_multiline\":{\"rules\":[24,25],\"inclusive\":false},\"acc_descr\":{\"rules\":[22],\"inclusive\":false},\"acc_title\":{\"rules\":[20],\"inclusive\":false},\"SCALE\":{\"rules\":[17,18],\"inclusive\":false},\"ALIAS\":{\"rules\":[],\"inclusive\":false},\"STATE_ID\":{\"rules\":[39],\"inclusive\":false},\"STATE_STRING\":{\"rules\":[40,41],\"inclusive\":false},\"FORK_STATE\":{\"rules\":[],\"inclusive\":false},\"STATE\":{\"rules\":[13,14,27,28,29,30,31,32,37,38,42,43,44],\"inclusive\":false},\"ID\":{\"rules\":[13,14],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,2,3,4,9,10,11,12,14,15,16,19,21,23,26,44,47,58,59,60,61,62,63,64,66,67],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,2],$V1=[1,5],$V2=[6,9,11,17,18,20,22,23,24,26],$V3=[1,15],$V4=[1,16],$V5=[1,17],$V6=[1,18],$V7=[1,19],$V8=[1,20],$V9=[1,24],$Va=[4,6,9,11,17,18,20,22,23,24,26];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"journey\":4,\"document\":5,\"EOF\":6,\"directive\":7,\"line\":8,\"SPACE\":9,\"statement\":10,\"NEWLINE\":11,\"openDirective\":12,\"typeDirective\":13,\"closeDirective\":14,\":\":15,\"argDirective\":16,\"title\":17,\"acc_title\":18,\"acc_title_value\":19,\"acc_descr\":20,\"acc_descr_value\":21,\"acc_descr_multiline_value\":22,\"section\":23,\"taskName\":24,\"taskData\":25,\"open_directive\":26,\"type_directive\":27,\"arg_directive\":28,\"close_directive\":29,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"journey\",6:\"EOF\",9:\"SPACE\",11:\"NEWLINE\",15:\":\",17:\"title\",18:\"acc_title\",19:\"acc_title_value\",20:\"acc_descr\",21:\"acc_descr_value\",22:\"acc_descr_multiline_value\",23:\"section\",24:\"taskName\",25:\"taskData\",26:\"open_directive\",27:\"type_directive\",28:\"arg_directive\",29:\"close_directive\"},\nproductions_: [0,[3,3],[3,2],[5,0],[5,2],[8,2],[8,1],[8,1],[8,1],[7,4],[7,6],[10,1],[10,2],[10,2],[10,1],[10,1],[10,2],[10,1],[12,1],[13,1],[16,1],[14,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\n return $$[$0-1]; \nbreak;\ncase 3:\n this.$ = [] \nbreak;\ncase 4:\n$$[$0-1].push($$[$0]);this.$ = $$[$0-1]\nbreak;\ncase 5: case 6:\n this.$ = $$[$0] \nbreak;\ncase 7: case 8:\n this.$=[];\nbreak;\ncase 11:\nyy.setTitle($$[$0].substr(6));this.$=$$[$0].substr(6);\nbreak;\ncase 12:\n this.$=$$[$0].trim();yy.setTitle(this.$); \nbreak;\ncase 13: case 14:\n this.$=$$[$0].trim();yy.setAccDescription(this.$); \nbreak;\ncase 15:\nyy.addSection($$[$0].substr(8));this.$=$$[$0].substr(8);\nbreak;\ncase 16:\nyy.addTask($$[$0-1], $$[$0]);this.$='task';\nbreak;\ncase 18:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 19:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 20:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 21:\n yy.parseDirective('}%%', 'close_directive', 'journey'); \nbreak;\n}\n},\ntable: [{3:1,4:$V0,7:3,12:4,26:$V1},{1:[3]},o($V2,[2,3],{5:6}),{3:7,4:$V0,7:3,12:4,26:$V1},{13:8,27:[1,9]},{27:[2,18]},{6:[1,10],7:21,8:11,9:[1,12],10:13,11:[1,14],12:4,17:$V3,18:$V4,20:$V5,22:$V6,23:$V7,24:$V8,26:$V1},{1:[2,2]},{14:22,15:[1,23],29:$V9},o([15,29],[2,19]),o($V2,[2,8],{1:[2,1]}),o($V2,[2,4]),{7:21,10:25,12:4,17:$V3,18:$V4,20:$V5,22:$V6,23:$V7,24:$V8,26:$V1},o($V2,[2,6]),o($V2,[2,7]),o($V2,[2,11]),{19:[1,26]},{21:[1,27]},o($V2,[2,14]),o($V2,[2,15]),{25:[1,28]},o($V2,[2,17]),{11:[1,29]},{16:30,28:[1,31]},{11:[2,21]},o($V2,[2,5]),o($V2,[2,12]),o($V2,[2,13]),o($V2,[2,16]),o($Va,[2,9]),{14:32,29:$V9},{29:[2,20]},{11:[1,33]},o($Va,[2,10])],\ndefaultActions: {5:[2,18],7:[2,2],24:[2,21],31:[2,20]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\r\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 26; \nbreak;\ncase 1: this.begin('type_directive'); return 27; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 15; \nbreak;\ncase 3: this.popState(); this.popState(); return 29; \nbreak;\ncase 4:return 28;\nbreak;\ncase 5:/* skip comments */\nbreak;\ncase 6:/* skip comments */\nbreak;\ncase 7:return 11;\nbreak;\ncase 8:/* skip whitespace */\nbreak;\ncase 9:/* skip comments */\nbreak;\ncase 10:return 4;\nbreak;\ncase 11:return 17;\nbreak;\ncase 12: this.begin(\"acc_title\");return 18; \nbreak;\ncase 13: this.popState(); return \"acc_title_value\"; \nbreak;\ncase 14: this.begin(\"acc_descr\");return 20; \nbreak;\ncase 15: this.popState(); return \"acc_descr_value\"; \nbreak;\ncase 16: this.begin(\"acc_descr_multiline\");\nbreak;\ncase 17: this.popState(); \nbreak;\ncase 18:return \"acc_descr_multiline_value\";\nbreak;\ncase 19:return 23;\nbreak;\ncase 20:return 24;\nbreak;\ncase 21:return 25;\nbreak;\ncase 22:return 15;\nbreak;\ncase 23:return 6;\nbreak;\ncase 24:return 'INVALID';\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:%(?!\\{)[^\\n]*)/i,/^(?:[^\\}]%%[^\\n]*)/i,/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?:#[^\\n]*)/i,/^(?:journey\\b)/i,/^(?:title\\s[^#\\n;]+)/i,/^(?:accTitle\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*:\\s*)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:accDescr\\s*\\{\\s*)/i,/^(?:[\\}])/i,/^(?:[^\\}]*)/i,/^(?:section\\s[^#:\\n;]+)/i,/^(?:[^#:\\n;]+)/i,/^(?::[^#\\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"open_directive\":{\"rules\":[1],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4],\"inclusive\":false},\"acc_descr_multiline\":{\"rules\":[17,18],\"inclusive\":false},\"acc_descr\":{\"rules\":[15],\"inclusive\":false},\"acc_title\":{\"rules\":[13],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,7,8,9,10,11,12,14,16,19,20,21,22,23,24],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sanitizeUrl = void 0;\nvar invalidProtocolRegex = /^([^\\w]*)(javascript|data|vbscript)/im;\nvar htmlEntitiesRegex = /&#(\\w+)(^\\w|;)?/g;\nvar ctrlCharactersRegex = /[\\u0000-\\u001F\\u007F-\\u009F\\u2000-\\u200D\\uFEFF]/gim;\nvar urlSchemeRegex = /^([^:]+):/gm;\nvar relativeFirstCharacters = [\".\", \"/\"];\nfunction isRelativeUrlWithoutProtocol(url) {\n return relativeFirstCharacters.indexOf(url[0]) > -1;\n}\n// adapted from https://stackoverflow.com/a/29824550/2601552\nfunction decodeHtmlCharacters(str) {\n return str.replace(htmlEntitiesRegex, function (match, dec) {\n return String.fromCharCode(dec);\n });\n}\nfunction sanitizeUrl(url) {\n var sanitizedUrl = decodeHtmlCharacters(url || \"\")\n .replace(ctrlCharactersRegex, \"\")\n .trim();\n if (!sanitizedUrl) {\n return \"about:blank\";\n }\n if (isRelativeUrlWithoutProtocol(sanitizedUrl)) {\n return sanitizedUrl;\n }\n var urlSchemeParseResults = sanitizedUrl.match(urlSchemeRegex);\n if (!urlSchemeParseResults) {\n return sanitizedUrl;\n }\n var urlScheme = urlSchemeParseResults[0];\n if (invalidProtocolRegex.test(urlScheme)) {\n return \"about:blank\";\n }\n return sanitizedUrl;\n}\nexports.sanitizeUrl = sanitizeUrl;\n","module.exports = intersectNode;\n\n/**\n * @param node\n * @param point\n */\nfunction intersectNode(node, point) {\n // console.info('Intersect Node');\n return node.intersect(point);\n}\n","import moment from 'moment-mini';\n\n/** @typedef {'debug' | 'info' | 'warn' | 'error' | 'fatal'} LogLevel A log level */\n\n/** @type {Object<LogLevel, number>} */\nexport const LEVELS = {\n debug: 1,\n info: 2,\n warn: 3,\n error: 4,\n fatal: 5,\n};\n\nexport const log = {\n debug: () => {},\n info: () => {},\n warn: () => {},\n error: () => {},\n fatal: () => {},\n};\n\n/**\n * Sets a log level\n *\n * @param {LogLevel} [level=\"fatal\"] The level to set the logging to. Default is `\"fatal\"`\n */\nexport const setLogLevel = function (level = 'fatal') {\n if (isNaN(level)) {\n level = level.toLowerCase();\n if (LEVELS[level] !== undefined) {\n level = LEVELS[level];\n }\n }\n log.trace = () => {};\n log.debug = () => {};\n log.info = () => {};\n log.warn = () => {};\n log.error = () => {};\n log.fatal = () => {};\n if (level <= LEVELS.fatal) {\n log.fatal = console.error\n ? console.error.bind(console, format('FATAL'), 'color: orange')\n : console.log.bind(console, '\\x1b[35m', format('FATAL'));\n }\n if (level <= LEVELS.error) {\n log.error = console.error\n ? console.error.bind(console, format('ERROR'), 'color: orange')\n : console.log.bind(console, '\\x1b[31m', format('ERROR'));\n }\n if (level <= LEVELS.warn) {\n log.warn = console.warn\n ? console.warn.bind(console, format('WARN'), 'color: orange')\n : console.log.bind(console, `\\x1b[33m`, format('WARN'));\n }\n if (level <= LEVELS.info) {\n log.info = console.info // ? console.info.bind(console, '\\x1b[34m', format('INFO'), 'color: blue')\n ? console.info.bind(console, format('INFO'), 'color: lightblue')\n : console.log.bind(console, '\\x1b[34m', format('INFO'));\n }\n if (level <= LEVELS.debug) {\n log.debug = console.debug\n ? console.debug.bind(console, format('DEBUG'), 'color: lightgreen')\n : console.log.bind(console, '\\x1b[32m', format('DEBUG'));\n }\n};\n\n/**\n * Returns a format with the timestamp and the log level\n *\n * @param {LogLevel} level The level for the log format\n * @returns {string} The format with the timestamp and log level\n */\nconst format = (level) => {\n const time = moment().format('ss.SSS');\n return `%c${time} : ${level} : `;\n};\n","export default function max(values, valueof) {\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n }\n return max;\n}\n","export default function min(values, valueof) {\n let min;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n }\n return min;\n}\n","export default function(x) {\n return x;\n}\n","import identity from \"./identity.js\";\n\nvar top = 1,\n right = 2,\n bottom = 3,\n left = 4,\n epsilon = 1e-6;\n\nfunction translateX(x) {\n return \"translate(\" + x + \",0)\";\n}\n\nfunction translateY(y) {\n return \"translate(0,\" + y + \")\";\n}\n\nfunction number(scale) {\n return d => +scale(d);\n}\n\nfunction center(scale, offset) {\n offset = Math.max(0, scale.bandwidth() - offset * 2) / 2;\n if (scale.round()) offset = Math.round(offset);\n return d => +scale(d) + offset;\n}\n\nfunction entering() {\n return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n var tickArguments = [],\n tickValues = null,\n tickFormat = null,\n tickSizeInner = 6,\n tickSizeOuter = 6,\n tickPadding = 3,\n offset = typeof window !== \"undefined\" && window.devicePixelRatio > 1 ? 0 : 0.5,\n k = orient === top || orient === left ? -1 : 1,\n x = orient === left || orient === right ? \"x\" : \"y\",\n transform = orient === top || orient === bottom ? translateX : translateY;\n\n function axis(context) {\n var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n spacing = Math.max(tickSizeInner, 0) + tickPadding,\n range = scale.range(),\n range0 = +range[0] + offset,\n range1 = +range[range.length - 1] + offset,\n position = (scale.bandwidth ? center : number)(scale.copy(), offset),\n selection = context.selection ? context.selection() : context,\n path = selection.selectAll(\".domain\").data([null]),\n tick = selection.selectAll(\".tick\").data(values, scale).order(),\n tickExit = tick.exit(),\n tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n line = tick.select(\"line\"),\n text = tick.select(\"text\");\n\n path = path.merge(path.enter().insert(\"path\", \".tick\")\n .attr(\"class\", \"domain\")\n .attr(\"stroke\", \"currentColor\"));\n\n tick = tick.merge(tickEnter);\n\n line = line.merge(tickEnter.append(\"line\")\n .attr(\"stroke\", \"currentColor\")\n .attr(x + \"2\", k * tickSizeInner));\n\n text = text.merge(tickEnter.append(\"text\")\n .attr(\"fill\", \"currentColor\")\n .attr(x, k * spacing)\n .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n if (context !== selection) {\n path = path.transition(context);\n tick = tick.transition(context);\n line = line.transition(context);\n text = text.transition(context);\n\n tickExit = tickExit.transition(context)\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d + offset) : this.getAttribute(\"transform\"); });\n\n tickEnter\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform((p && isFinite(p = p(d)) ? p : position(d)) + offset); });\n }\n\n tickExit.remove();\n\n path\n .attr(\"d\", orient === left || orient === right\n ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H\" + offset + \"V\" + range1 + \"H\" + k * tickSizeOuter : \"M\" + offset + \",\" + range0 + \"V\" + range1)\n : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V\" + offset + \"H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",\" + offset + \"H\" + range1));\n\n tick\n .attr(\"opacity\", 1)\n .attr(\"transform\", function(d) { return transform(position(d) + offset); });\n\n line\n .attr(x + \"2\", k * tickSizeInner);\n\n text\n .attr(x, k * spacing)\n .text(format);\n\n selection.filter(entering)\n .attr(\"fill\", \"none\")\n .attr(\"font-size\", 10)\n .attr(\"font-family\", \"sans-serif\")\n .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n selection\n .each(function() { this.__axis = position; });\n }\n\n axis.scale = function(_) {\n return arguments.length ? (scale = _, axis) : scale;\n };\n\n axis.ticks = function() {\n return tickArguments = Array.from(arguments), axis;\n };\n\n axis.tickArguments = function(_) {\n return arguments.length ? (tickArguments = _ == null ? [] : Array.from(_), axis) : tickArguments.slice();\n };\n\n axis.tickValues = function(_) {\n return arguments.length ? (tickValues = _ == null ? null : Array.from(_), axis) : tickValues && tickValues.slice();\n };\n\n axis.tickFormat = function(_) {\n return arguments.length ? (tickFormat = _, axis) : tickFormat;\n };\n\n axis.tickSize = function(_) {\n return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeInner = function(_) {\n return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeOuter = function(_) {\n return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n };\n\n axis.tickPadding = function(_) {\n return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n };\n\n axis.offset = function(_) {\n return arguments.length ? (offset = +_, axis) : offset;\n };\n\n return axis;\n}\n\nexport function axisTop(scale) {\n return axis(top, scale);\n}\n\nexport function axisRight(scale) {\n return axis(right, scale);\n}\n\nexport function axisBottom(scale) {\n return axis(bottom, scale);\n}\n\nexport function axisLeft(scale) {\n return axis(left, scale);\n}\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don’t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n\nexport function childMatcher(selector) {\n return function(node) {\n return node.matches(selector);\n };\n}\n\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n return function() {\n return find.call(this.children, match);\n };\n}\n\nfunction childFirst() {\n return this.firstElementChild;\n}\n\nexport default function(match) {\n return this.select(match == null ? childFirst\n : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n return function() {\n return filter.call(this.children, match);\n };\n}\n\nexport default function(match) {\n return this.selectAll(match == null ? children\n : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = new Map,\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = key.call(parent, data[i], i, data) + \"\";\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n exit[i] = node;\n }\n }\n}\n\nfunction datum(node) {\n return node.__data__;\n}\n\nexport default function(value, key) {\n if (!arguments.length) return Array.from(this, datum);\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn’t worried about “live” collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don’t; we’d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n return typeof data === \"object\" && \"length\" in data\n ? data // Array, TypedArray, NodeList, array-like\n : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n","import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","function contextListener(listener) {\n return function(event) {\n listener.call(this, event, this.__data__);\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, options) {\n return function() {\n var on = this.__on, o, listener = contextListener(value);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, options) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n return this;\n}\n","import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n return this;\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n selection: selection_selection,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch,\n [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n return function() {\n return array(select.apply(this, arguments));\n };\n}\n\nexport default function(select) {\n if (typeof select === \"function\") select = arrayAll(select);\n else select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n if (typeof onenter === \"function\") {\n enter = onenter(enter);\n if (enter) enter = enter.selection();\n } else {\n enter = enter.append(onenter + \"\");\n }\n if (onupdate != null) {\n update = onupdate(update);\n if (update) update = update.selection();\n }\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(context) {\n var selection = context.selection ? context.selection() : context;\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n let size = 0;\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import creator from \"../creator.js\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","export default function*() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) yield node;\n }\n }\n}\n","var noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(elapsed => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n selectChild: selection_prototype.selectChild,\n selectChildren: selection_prototype.selectChildren,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n easeVarying: transition_easeVarying,\n end: transition_end,\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\") throw new Error;\n set(this, id).ease = v;\n };\n}\n\nexport default function(value) {\n if (typeof value !== \"function\") throw new Error;\n return this.each(easeVarying(this._id, value));\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n\n // The selection was empty, resolve end immediately\n if (size === 0) resolve();\n });\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n throw new Error(`transition ${id} not found`);\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {pointer, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport BrushEvent from \"./event.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\nvar MODE_DRAG = {name: \"drag\"},\n MODE_SPACE = {name: \"space\"},\n MODE_HANDLE = {name: \"handle\"},\n MODE_CENTER = {name: \"center\"};\n\nconst {abs, max, min} = Math;\n\nfunction number1(e) {\n return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n return [number1(e[0]), number1(e[1])];\n}\n\nvar X = {\n name: \"x\",\n handles: [\"w\", \"e\"].map(type),\n input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },\n output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n name: \"y\",\n handles: [\"n\", \"s\"].map(type),\n input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },\n output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n name: \"xy\",\n handles: [\"n\", \"w\", \"e\", \"s\", \"nw\", \"ne\", \"sw\", \"se\"].map(type),\n input: function(xy) { return xy == null ? null : number2(xy); },\n output: function(xy) { return xy; }\n};\n\nvar cursors = {\n overlay: \"crosshair\",\n selection: \"move\",\n n: \"ns-resize\",\n e: \"ew-resize\",\n s: \"ns-resize\",\n w: \"ew-resize\",\n nw: \"nwse-resize\",\n ne: \"nesw-resize\",\n se: \"nwse-resize\",\n sw: \"nesw-resize\"\n};\n\nvar flipX = {\n e: \"w\",\n w: \"e\",\n nw: \"ne\",\n ne: \"nw\",\n se: \"sw\",\n sw: \"se\"\n};\n\nvar flipY = {\n n: \"s\",\n s: \"n\",\n nw: \"sw\",\n ne: \"se\",\n se: \"ne\",\n sw: \"nw\"\n};\n\nvar signsX = {\n overlay: +1,\n selection: +1,\n n: null,\n e: +1,\n s: null,\n w: -1,\n nw: -1,\n ne: +1,\n se: +1,\n sw: -1\n};\n\nvar signsY = {\n overlay: +1,\n selection: +1,\n n: -1,\n e: null,\n s: +1,\n w: null,\n nw: -1,\n ne: -1,\n se: +1,\n sw: +1\n};\n\nfunction type(t) {\n return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter(event) {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var svg = this.ownerSVGElement || this;\n if (svg.hasAttribute(\"viewBox\")) {\n svg = svg.viewBox.baseVal;\n return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];\n }\n return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n// Like d3.local, but with the name “__brush” rather than auto-generated.\nfunction local(node) {\n while (!node.__brush) if (!(node = node.parentNode)) return;\n return node.__brush;\n}\n\nfunction empty(extent) {\n return extent[0][0] === extent[1][0]\n || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n var state = node.__brush;\n return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n return brush(X);\n}\n\nexport function brushY() {\n return brush(Y);\n}\n\nexport default function() {\n return brush(XY);\n}\n\nfunction brush(dim) {\n var extent = defaultExtent,\n filter = defaultFilter,\n touchable = defaultTouchable,\n keys = true,\n listeners = dispatch(\"start\", \"brush\", \"end\"),\n handleSize = 6,\n touchending;\n\n function brush(group) {\n var overlay = group\n .property(\"__brush\", initialize)\n .selectAll(\".overlay\")\n .data([type(\"overlay\")]);\n\n overlay.enter().append(\"rect\")\n .attr(\"class\", \"overlay\")\n .attr(\"pointer-events\", \"all\")\n .attr(\"cursor\", cursors.overlay)\n .merge(overlay)\n .each(function() {\n var extent = local(this).extent;\n select(this)\n .attr(\"x\", extent[0][0])\n .attr(\"y\", extent[0][1])\n .attr(\"width\", extent[1][0] - extent[0][0])\n .attr(\"height\", extent[1][1] - extent[0][1]);\n });\n\n group.selectAll(\".selection\")\n .data([type(\"selection\")])\n .enter().append(\"rect\")\n .attr(\"class\", \"selection\")\n .attr(\"cursor\", cursors.selection)\n .attr(\"fill\", \"#777\")\n .attr(\"fill-opacity\", 0.3)\n .attr(\"stroke\", \"#fff\")\n .attr(\"shape-rendering\", \"crispEdges\");\n\n var handle = group.selectAll(\".handle\")\n .data(dim.handles, function(d) { return d.type; });\n\n handle.exit().remove();\n\n handle.enter().append(\"rect\")\n .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n group\n .each(redraw)\n .attr(\"fill\", \"none\")\n .attr(\"pointer-events\", \"all\")\n .on(\"mousedown.brush\", started)\n .filter(touchable)\n .on(\"touchstart.brush\", started)\n .on(\"touchmove.brush\", touchmoved)\n .on(\"touchend.brush touchcancel.brush\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n brush.move = function(group, selection, event) {\n if (group.tween) {\n group\n .on(\"start.brush\", function(event) { emitter(this, arguments).beforestart().start(event); })\n .on(\"interrupt.brush end.brush\", function(event) { emitter(this, arguments).end(event); })\n .tween(\"brush\", function() {\n var that = this,\n state = that.__brush,\n emit = emitter(that, arguments),\n selection0 = state.selection,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n i = interpolate(selection0, selection1);\n\n function tween(t) {\n state.selection = t === 1 && selection1 === null ? null : i(t);\n redraw.call(that);\n emit.brush();\n }\n\n return selection0 !== null && selection1 !== null ? tween : tween(1);\n });\n } else {\n group\n .each(function() {\n var that = this,\n args = arguments,\n state = that.__brush,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n emit = emitter(that, args).beforestart();\n\n interrupt(that);\n state.selection = selection1 === null ? null : selection1;\n redraw.call(that);\n emit.start(event).brush(event).end(event);\n });\n }\n };\n\n brush.clear = function(group, event) {\n brush.move(group, null, event);\n };\n\n function redraw() {\n var group = select(this),\n selection = local(this).selection;\n\n if (selection) {\n group.selectAll(\".selection\")\n .style(\"display\", null)\n .attr(\"x\", selection[0][0])\n .attr(\"y\", selection[0][1])\n .attr(\"width\", selection[1][0] - selection[0][0])\n .attr(\"height\", selection[1][1] - selection[0][1]);\n\n group.selectAll(\".handle\")\n .style(\"display\", null)\n .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n }\n\n else {\n group.selectAll(\".selection,.handle\")\n .style(\"display\", \"none\")\n .attr(\"x\", null)\n .attr(\"y\", null)\n .attr(\"width\", null)\n .attr(\"height\", null);\n }\n }\n\n function emitter(that, args, clean) {\n var emit = that.__brush.emitter;\n return emit && (!clean || !emit.clean) ? emit : new Emitter(that, args, clean);\n }\n\n function Emitter(that, args, clean) {\n this.that = that;\n this.args = args;\n this.state = that.__brush;\n this.active = 0;\n this.clean = clean;\n }\n\n Emitter.prototype = {\n beforestart: function() {\n if (++this.active === 1) this.state.emitter = this, this.starting = true;\n return this;\n },\n start: function(event, mode) {\n if (this.starting) this.starting = false, this.emit(\"start\", event, mode);\n else this.emit(\"brush\", event);\n return this;\n },\n brush: function(event, mode) {\n this.emit(\"brush\", event, mode);\n return this;\n },\n end: function(event, mode) {\n if (--this.active === 0) delete this.state.emitter, this.emit(\"end\", event, mode);\n return this;\n },\n emit: function(type, event, mode) {\n var d = select(this.that).datum();\n listeners.call(\n type,\n this.that,\n new BrushEvent(type, {\n sourceEvent: event,\n target: brush,\n selection: dim.output(this.state.selection),\n mode,\n dispatch: listeners\n }),\n d\n );\n }\n };\n\n function started(event) {\n if (touchending && !event.touches) return;\n if (!filter.apply(this, arguments)) return;\n\n var that = this,\n type = event.target.__data__.type,\n mode = (keys && event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE),\n signX = dim === Y ? null : signsX[type],\n signY = dim === X ? null : signsY[type],\n state = local(that),\n extent = state.extent,\n selection = state.selection,\n W = extent[0][0], w0, w1,\n N = extent[0][1], n0, n1,\n E = extent[1][0], e0, e1,\n S = extent[1][1], s0, s1,\n dx = 0,\n dy = 0,\n moving,\n shifting = signX && signY && keys && event.shiftKey,\n lockX,\n lockY,\n points = Array.from(event.touches || [event], t => {\n const i = t.identifier;\n t = pointer(t, that);\n t.point0 = t.slice();\n t.identifier = i;\n return t;\n });\n\n interrupt(that);\n var emit = emitter(that, arguments, true).beforestart();\n\n if (type === \"overlay\") {\n if (selection) moving = true;\n const pts = [points[0], points[1] || points[0]];\n state.selection = selection = [[\n w0 = dim === Y ? W : min(pts[0][0], pts[1][0]),\n n0 = dim === X ? N : min(pts[0][1], pts[1][1])\n ], [\n e0 = dim === Y ? E : max(pts[0][0], pts[1][0]),\n s0 = dim === X ? S : max(pts[0][1], pts[1][1])\n ]];\n if (points.length > 1) move(event);\n } else {\n w0 = selection[0][0];\n n0 = selection[0][1];\n e0 = selection[1][0];\n s0 = selection[1][1];\n }\n\n w1 = w0;\n n1 = n0;\n e1 = e0;\n s1 = s0;\n\n var group = select(that)\n .attr(\"pointer-events\", \"none\");\n\n var overlay = group.selectAll(\".overlay\")\n .attr(\"cursor\", cursors[type]);\n\n if (event.touches) {\n emit.moved = moved;\n emit.ended = ended;\n } else {\n var view = select(event.view)\n .on(\"mousemove.brush\", moved, true)\n .on(\"mouseup.brush\", ended, true);\n if (keys) view\n .on(\"keydown.brush\", keydowned, true)\n .on(\"keyup.brush\", keyupped, true)\n\n dragDisable(event.view);\n }\n\n redraw.call(that);\n emit.start(event, mode.name);\n\n function moved(event) {\n for (const p of event.changedTouches || [event]) {\n for (const d of points)\n if (d.identifier === p.identifier) d.cur = pointer(p, that);\n }\n if (shifting && !lockX && !lockY && points.length === 1) {\n const point = points[0];\n if (abs(point.cur[0] - point[0]) > abs(point.cur[1] - point[1]))\n lockY = true;\n else\n lockX = true;\n }\n for (const point of points)\n if (point.cur) point[0] = point.cur[0], point[1] = point.cur[1];\n moving = true;\n noevent(event);\n move(event);\n }\n\n function move(event) {\n const point = points[0], point0 = point.point0;\n var t;\n\n dx = point[0] - point0[0];\n dy = point[1] - point0[1];\n\n switch (mode) {\n case MODE_SPACE:\n case MODE_DRAG: {\n if (signX) dx = max(W - w0, min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n if (signY) dy = max(N - n0, min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n break;\n }\n case MODE_HANDLE: {\n if (points[1]) {\n if (signX) w1 = max(W, min(E, points[0][0])), e1 = max(W, min(E, points[1][0])), signX = 1;\n if (signY) n1 = max(N, min(S, points[0][1])), s1 = max(N, min(S, points[1][1])), signY = 1;\n } else {\n if (signX < 0) dx = max(W - w0, min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n else if (signX > 0) dx = max(W - e0, min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n if (signY < 0) dy = max(N - n0, min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n else if (signY > 0) dy = max(N - s0, min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n }\n break;\n }\n case MODE_CENTER: {\n if (signX) w1 = max(W, min(E, w0 - dx * signX)), e1 = max(W, min(E, e0 + dx * signX));\n if (signY) n1 = max(N, min(S, n0 - dy * signY)), s1 = max(N, min(S, s0 + dy * signY));\n break;\n }\n }\n\n if (e1 < w1) {\n signX *= -1;\n t = w0, w0 = e0, e0 = t;\n t = w1, w1 = e1, e1 = t;\n if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n }\n\n if (s1 < n1) {\n signY *= -1;\n t = n0, n0 = s0, s0 = t;\n t = n1, n1 = s1, s1 = t;\n if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n }\n\n if (state.selection) selection = state.selection; // May be set by brush.move!\n if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n if (selection[0][0] !== w1\n || selection[0][1] !== n1\n || selection[1][0] !== e1\n || selection[1][1] !== s1) {\n state.selection = [[w1, n1], [e1, s1]];\n redraw.call(that);\n emit.brush(event, mode.name);\n }\n }\n\n function ended(event) {\n nopropagation(event);\n if (event.touches) {\n if (event.touches.length) return;\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n } else {\n dragEnable(event.view, moving);\n view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n }\n group.attr(\"pointer-events\", \"all\");\n overlay.attr(\"cursor\", cursors.overlay);\n if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n if (empty(selection)) state.selection = null, redraw.call(that);\n emit.end(event, mode.name);\n }\n\n function keydowned(event) {\n switch (event.keyCode) {\n case 16: { // SHIFT\n shifting = signX && signY;\n break;\n }\n case 18: { // ALT\n if (mode === MODE_HANDLE) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n move(event);\n }\n break;\n }\n case 32: { // SPACE; takes priority over ALT\n if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n mode = MODE_SPACE;\n overlay.attr(\"cursor\", cursors.selection);\n move(event);\n }\n break;\n }\n default: return;\n }\n noevent(event);\n }\n\n function keyupped(event) {\n switch (event.keyCode) {\n case 16: { // SHIFT\n if (shifting) {\n lockX = lockY = shifting = false;\n move(event);\n }\n break;\n }\n case 18: { // ALT\n if (mode === MODE_CENTER) {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n move(event);\n }\n break;\n }\n case 32: { // SPACE\n if (mode === MODE_SPACE) {\n if (event.altKey) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n } else {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n }\n overlay.attr(\"cursor\", cursors[type]);\n move(event);\n }\n break;\n }\n default: return;\n }\n noevent(event);\n }\n }\n\n function touchmoved(event) {\n emitter(this, arguments).moved(event);\n }\n\n function touchended(event) {\n emitter(this, arguments).ended(event);\n }\n\n function initialize() {\n var state = this.__brush || {selection: null};\n state.extent = number2(extent.apply(this, arguments));\n state.dim = dim;\n return state;\n }\n\n brush.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant(number2(_)), brush) : extent;\n };\n\n brush.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n };\n\n brush.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), brush) : touchable;\n };\n\n brush.handleSize = function(_) {\n return arguments.length ? (handleSize = +_, brush) : handleSize;\n };\n\n brush.keyModifiers = function(_) {\n return arguments.length ? (keys = !!_, brush) : keys;\n };\n\n brush.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? brush : value;\n };\n\n return brush;\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export const radians = Math.PI / 180;\nexport const degrees = 180 / Math.PI;\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb} from \"./color.js\";\nimport {degrees, radians} from \"./math.js\";\n\n// https://observablehq.com/@mbostock/lab-and-rgb\nconst K = 18,\n Xn = 0.96422,\n Yn = 1,\n Zn = 0.82521,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) return hcl2lab(o);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = rgb2lrgb(o.r),\n g = rgb2lrgb(o.g),\n b = rgb2lrgb(o.b),\n y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n if (r === g && g === b) x = z = y; else {\n x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n }\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nexport function gray(l, opacity) {\n return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nexport default function lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nexport function Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n brighter: function(k) {\n return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker: function(k) {\n return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb: function() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n x = Xn * lab2xyz(x);\n y = Yn * lab2xyz(y);\n z = Zn * lab2xyz(z);\n return new Rgb(\n lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n this.opacity\n );\n }\n}));\n\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);\n var h = Math.atan2(o.b, o.a) * degrees;\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nexport function lch(l, c, h, opacity) {\n return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n}\n\nfunction hcl2lab(o) {\n if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n var h = o.h * radians;\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n}\n\ndefine(Hcl, hcl, extend(Color, {\n brighter: function(k) {\n return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n },\n darker: function(k) {\n return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n },\n rgb: function() {\n return hcl2lab(this).rgb();\n }\n}));\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {hcl as colorHcl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hcl(hue) {\n return function(start, end) {\n var h = hue((start = colorHcl(start)).h, (end = colorHcl(end)).h),\n c = color(start.c, end.c),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.c = c(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hcl(hue);\nexport var hclLong = hcl(color);\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function ticks(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n let r0 = Math.round(start / step), r1 = Math.round(stop / step);\n if (r0 * step < start) ++r0;\n if (r1 * step > stop) --r1;\n ticks = new Array(n = r1 - r0 + 1);\n while (++i < n) ticks[i] = (r0 + i) * step;\n } else {\n step = -step;\n let r0 = Math.round(start * step), r1 = Math.round(stop * step);\n if (r0 / step < start) ++r0;\n if (r1 / step > stop) --r1;\n ticks = new Array(n = r1 - r0 + 1);\n while (++i < n) ticks[i] = (r0 + i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","export default function ascending(a, b) {\n return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending.js\";\n\nexport default function bisector(f) {\n let delta = f;\n let compare1 = f;\n let compare2 = f;\n\n if (f.length !== 2) {\n delta = (d, x) => f(d) - x;\n compare1 = ascending;\n compare2 = (d, x) => ascending(f(d), x);\n }\n\n function left(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function right(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) <= 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function center(a, x, lo = 0, hi = a.length) {\n const i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n\n return {left, center, right};\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n","export default function number(x) {\n return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","export default function number(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n var t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n var n = Math.min(domain.length, range.length);\n if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n piecewise = n > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous() {\n return transformer()(identity, identity);\n}\n","export default function constants(x) {\n return function() {\n return x;\n };\n}\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: {\n if (typeof domain === \"function\") this.interpolator(domain);\n else this.range(domain);\n break;\n }\n default: {\n this.domain(domain);\n if (typeof interpolator === \"function\") this.interpolator(interpolator);\n else this.range(interpolator);\n break;\n }\n }\n return this;\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": (x, p) => (x * 100).toFixed(p),\n \"b\": (x) => Math.round(x).toString(2),\n \"c\": (x) => x + \"\",\n \"d\": formatDecimal,\n \"e\": (x, p) => x.toExponential(p),\n \"f\": (x, p) => x.toFixed(p),\n \"g\": (x, p) => x.toPrecision(p),\n \"o\": (x) => Math.round(x).toString(8),\n \"p\": (x, p) => formatRounded(x * 100, p),\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n \"x\": (x) => Math.round(x).toString(16)\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain();\n var i0 = 0;\n var i1 = d.length - 1;\n var start = d[i0];\n var stop = d[i1];\n var prestep;\n var step;\n var maxIter = 10;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n \n while (maxIter-- > 0) {\n step = tickIncrement(start, stop, count);\n if (step === prestep) {\n d[i0] = start\n d[i1] = stop\n return domain(d);\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n } else {\n break;\n }\n prestep = step;\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous();\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","export class InternMap extends Map {\n constructor(entries, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (entries != null) for (const [key, value] of entries) this.set(key, value);\n }\n get(key) {\n return super.get(intern_get(this, key));\n }\n has(key) {\n return super.has(intern_get(this, key));\n }\n set(key, value) {\n return super.set(intern_set(this, key), value);\n }\n delete(key) {\n return super.delete(intern_delete(this, key));\n }\n}\n\nexport class InternSet extends Set {\n constructor(values, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (values != null) for (const value of values) this.add(value);\n }\n has(value) {\n return super.has(intern_get(this, value));\n }\n add(value) {\n return super.add(intern_set(this, value));\n }\n delete(value) {\n return super.delete(intern_delete(this, value));\n }\n}\n\nfunction intern_get({_intern, _key}, value) {\n const key = _key(value);\n return _intern.has(key) ? _intern.get(key) : value;\n}\n\nfunction intern_set({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) return _intern.get(key);\n _intern.set(key, value);\n return value;\n}\n\nfunction intern_delete({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) {\n value = _intern.get(key);\n _intern.delete(key);\n }\n return value;\n}\n\nfunction keyof(value) {\n return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}\n","import {InternMap} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n var index = new InternMap(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n let i = index.get(d);\n if (i === undefined) {\n if (unknown !== implicit) return unknown;\n index.set(d, i = domain.push(d) - 1);\n }\n return range[i % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = new InternMap();\n for (const value of _) {\n if (index.has(value)) continue;\n index.set(value, domain.push(value) - 1);\n }\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","export const durationSecond = 1000;\nexport const durationMinute = durationSecond * 60;\nexport const durationHour = durationMinute * 60;\nexport const durationDay = durationHour * 24;\nexport const durationWeek = durationDay * 7;\nexport const durationMonth = durationDay * 30;\nexport const durationYear = durationDay * 365;\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = function(date) {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval.js\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","import interval from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nvar second = interval(function(date) {\n date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nvar minute = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nvar hour = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(\n date => date.setHours(0, 0, 0, 0),\n (date, step) => date.setDate(date.getDate() + step),\n (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n date => date.getDate() - 1\n);\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval.js\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval.js\";\nimport {durationMinute} from \"./duration.js\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval.js\";\nimport {durationHour} from \"./duration.js\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval.js\";\nimport {durationDay} from \"./duration.js\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval.js\";\nimport {durationWeek} from \"./duration.js\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval.js\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval.js\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {bisector, tickStep} from \"d3-array\";\nimport {durationDay, durationHour, durationMinute, durationMonth, durationSecond, durationWeek, durationYear} from \"./duration.js\";\nimport millisecond from \"./millisecond.js\";\nimport second from \"./second.js\";\nimport minute from \"./minute.js\";\nimport hour from \"./hour.js\";\nimport day from \"./day.js\";\nimport {sunday as week} from \"./week.js\";\nimport month from \"./month.js\";\nimport year from \"./year.js\";\nimport utcMinute from \"./utcMinute.js\";\nimport utcHour from \"./utcHour.js\";\nimport utcDay from \"./utcDay.js\";\nimport {utcSunday as utcWeek} from \"./utcWeek.js\";\nimport utcMonth from \"./utcMonth.js\";\nimport utcYear from \"./utcYear.js\";\n\nfunction ticker(year, month, week, day, hour, minute) {\n\n const tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function ticks(start, stop, count) {\n const reverse = stop < start;\n if (reverse) [start, stop] = [stop, start];\n const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n return reverse ? ticks.reverse() : ticks;\n }\n\n function tickInterval(start, stop, count) {\n const target = Math.abs(stop - start) / count;\n const i = bisector(([,, step]) => step).right(tickIntervals, target);\n if (i === tickIntervals.length) return year.every(tickStep(start / durationYear, stop / durationYear, count));\n if (i === 0) return millisecond.every(Math.max(tickStep(start, stop, count), 1));\n const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n return t.every(step);\n }\n\n return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute);\nconst [timeTicks, timeTickInterval] = ticker(year, month, week, day, hour, minute);\n\nexport {utcTicks, utcTickInterval, timeTicks, timeTickInterval};\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n return new Map(names.map((name, i) => [name.toLowerCase(), i]));\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeTicks, timeTickInterval} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport nice from \"./nice.js\";\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) {\n var scale = continuous(),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval);\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval) {\n var d = domain();\n if (!interval || typeof interval.range !== \"function\") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval);\n return interval ? domain(nice(d, interval)) : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format));\n };\n\n return scale;\n}\n\nexport default function time() {\n return initRange.apply(calendar(timeTicks, timeTickInterval, timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","export default function nice(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don’t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n\nexport function childMatcher(selector) {\n return function(node) {\n return node.matches(selector);\n };\n}\n\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n return function() {\n return find.call(this.children, match);\n };\n}\n\nfunction childFirst() {\n return this.firstElementChild;\n}\n\nexport default function(match) {\n return this.select(match == null ? childFirst\n : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n return function() {\n return filter.call(this.children, match);\n };\n}\n\nexport default function(match) {\n return this.selectAll(match == null ? children\n : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = new Map,\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = key.call(parent, data[i], i, data) + \"\";\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n exit[i] = node;\n }\n }\n}\n\nfunction datum(node) {\n return node.__data__;\n}\n\nexport default function(value, key) {\n if (!arguments.length) return Array.from(this, datum);\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn’t worried about “live” collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don’t; we’d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n return typeof data === \"object\" && \"length\" in data\n ? data // Array, TypedArray, NodeList, array-like\n : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n","import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","function contextListener(listener) {\n return function(event) {\n listener.call(this, event, this.__data__);\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, options) {\n return function() {\n var on = this.__on, o, listener = contextListener(value);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, options) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n return this;\n}\n","import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n return this;\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n selection: selection_selection,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch,\n [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n return function() {\n return array(select.apply(this, arguments));\n };\n}\n\nexport default function(select) {\n if (typeof select === \"function\") select = arrayAll(select);\n else select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n if (typeof onenter === \"function\") {\n enter = onenter(enter);\n if (enter) enter = enter.selection();\n } else {\n enter = enter.append(onenter + \"\");\n }\n if (onupdate != null) {\n update = onupdate(update);\n if (update) update = update.selection();\n }\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(context) {\n var selection = context.selection ? context.selection() : context;\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n let size = 0;\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import creator from \"../creator.js\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","export default function*() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) yield node;\n }\n }\n}\n","import {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","import array from \"./array.js\";\nimport {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([document.querySelectorAll(selector)], [document.documentElement])\n : new Selection([array(selector)], root);\n}\n","const pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null;\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle.\n if (da < pi && (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10))) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector’s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector’s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n","export var slice = Array.prototype.slice;\n\nexport default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // falls through\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import {path} from \"d3-path\";\nimport array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x, y) {\n var defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n x = typeof x === \"function\" ? x : (x === undefined) ? pointX : constant(x);\n y = typeof y === \"function\" ? y : (y === undefined) ? pointY : constant(y);\n\n function line(data) {\n var i,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","export default function(d) {\n return d;\n}\n","export default function() {}\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n (2 * that._x0 + that._x1) / 3,\n (2 * that._y0 + that._y1) / 3,\n (that._x0 + 2 * that._x1) / 3,\n (that._y0 + 2 * that._y1) / 3,\n (that._x0 + 4 * that._x1 + x) / 6,\n (that._y0 + 4 * that._y1 + y) / 6\n );\n}\n\nexport function Basis(context) {\n this._context = context;\n}\n\nBasis.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 3: point(this, this._x1, this._y1); // falls through\n case 2: this._context.lineTo(this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new Basis(context);\n}\n","import noop from \"../noop.js\";\nimport {point} from \"./basis.js\";\n\nfunction BasisClosed(context) {\n this._context = context;\n}\n\nBasisClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x2, this._y2);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x2, this._y2);\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisClosed(context);\n}\n","import {point} from \"./basis.js\";\n\nfunction BasisOpen(context) {\n this._context = context;\n}\n\nBasisOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n case 3: this._point = 4; // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisOpen(context);\n}\n","import noop from \"../noop.js\";\n\nfunction LinearClosed(context) {\n this._context = context;\n}\n\nLinearClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._point) this._context.closePath();\n },\n point: function(x, y) {\n x = +x, y = +y;\n if (this._point) this._context.lineTo(x, y);\n else this._point = 1, this._context.moveTo(x, y);\n }\n};\n\nexport default function(context) {\n return new LinearClosed(context);\n}\n","function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n","function Natural(context) {\n this._context = context;\n}\n\nNatural.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = [];\n this._y = [];\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n n = x.length;\n\n if (n) {\n this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n if (n === 2) {\n this._context.lineTo(x[1], y[1]);\n } else {\n var px = controlPoints(x),\n py = controlPoints(y);\n for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n }\n }\n }\n\n if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n this._line = 1 - this._line;\n this._x = this._y = null;\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n var i,\n n = x.length - 1,\n m,\n a = new Array(n),\n b = new Array(n),\n r = new Array(n);\n a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n a[n - 1] = r[n - 1] / b[n - 1];\n for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n b[n - 1] = (x[n] + a[n - 1]) / 2;\n for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n return [a, b];\n}\n\nexport default function(context) {\n return new Natural(context);\n}\n","function Step(context, t) {\n this._context = context;\n this._t = t;\n}\n\nStep.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // falls through\n default: {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\n\nexport default function(context) {\n return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n return new Step(context, 1);\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = function(date) {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","export const durationSecond = 1000;\nexport const durationMinute = durationSecond * 60;\nexport const durationHour = durationMinute * 60;\nexport const durationDay = durationHour * 24;\nexport const durationWeek = durationDay * 7;\nexport const durationMonth = durationDay * 30;\nexport const durationYear = durationDay * 365;\n","import interval from \"./interval.js\";\nimport {durationWeek} from \"./duration.js\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval.js\";\nimport {durationDay} from \"./duration.js\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(\n date => date.setHours(0, 0, 0, 0),\n (date, step) => date.setDate(date.getDate() + step),\n (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n date => date.getDate() - 1\n);\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval.js\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n return new Map(names.map((name, i) => [name.toLowerCase(), i]));\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","var noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(elapsed => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n selectChild: selection_prototype.selectChild,\n selectChildren: selection_prototype.selectChildren,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n easeVarying: transition_easeVarying,\n end: transition_end,\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\") throw new Error;\n set(this, id).ease = v;\n };\n}\n\nexport default function(value) {\n if (typeof value !== \"function\") throw new Error;\n return this.each(easeVarying(this._id, value));\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n\n // The selection was empty, resolve end immediately\n if (size === 0) resolve();\n });\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n throw new Error(`transition ${id} not found`);\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don’t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n\nexport function childMatcher(selector) {\n return function(node) {\n return node.matches(selector);\n };\n}\n\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n return function() {\n return find.call(this.children, match);\n };\n}\n\nfunction childFirst() {\n return this.firstElementChild;\n}\n\nexport default function(match) {\n return this.select(match == null ? childFirst\n : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n return function() {\n return filter.call(this.children, match);\n };\n}\n\nexport default function(match) {\n return this.selectAll(match == null ? children\n : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = new Map,\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = key.call(parent, data[i], i, data) + \"\";\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n exit[i] = node;\n }\n }\n}\n\nfunction datum(node) {\n return node.__data__;\n}\n\nexport default function(value, key) {\n if (!arguments.length) return Array.from(this, datum);\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn’t worried about “live” collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don’t; we’d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n return typeof data === \"object\" && \"length\" in data\n ? data // Array, TypedArray, NodeList, array-like\n : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n","import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","function contextListener(listener) {\n return function(event) {\n listener.call(this, event, this.__data__);\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, options) {\n return function() {\n var on = this.__on, o, listener = contextListener(value);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, options) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n return this;\n}\n","import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n return this;\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n selection: selection_selection,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch,\n [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n return function() {\n return array(select.apply(this, arguments));\n };\n}\n\nexport default function(select) {\n if (typeof select === \"function\") select = arrayAll(select);\n else select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n if (typeof onenter === \"function\") {\n enter = onenter(enter);\n if (enter) enter = enter.selection();\n } else {\n enter = enter.append(onenter + \"\");\n }\n if (onupdate != null) {\n update = onupdate(update);\n if (update) update = update.selection();\n }\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(context) {\n var selection = context.selection ? context.selection() : context;\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n let size = 0;\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import creator from \"../creator.js\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","export default function*() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) yield node;\n }\n }\n}\n","var noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(elapsed => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n selectChild: selection_prototype.selectChild,\n selectChildren: selection_prototype.selectChildren,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n easeVarying: transition_easeVarying,\n end: transition_end,\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\") throw new Error;\n set(this, id).ease = v;\n };\n}\n\nexport default function(value) {\n if (typeof value !== \"function\") throw new Error;\n return this.each(easeVarying(this._id, value));\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n\n // The selection was empty, resolve end immediately\n if (size === 0) resolve();\n });\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n throw new Error(`transition ${id} not found`);\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\n","/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3)\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @return {number}\n */\nexport function indexof (value, search) {\n\treturn value.indexOf(search)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n","import {IMPORT, COMMENT, RULESET, DECLARATION, KEYFRAMES} from './Enum.js'\nimport {strlen, sizeof} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\tvar length = sizeof(children)\n\n\tfor (var i = 0; i < length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase IMPORT: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: element.value = element.props.join(',')\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n","import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: ''}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0), root, {length: -root.length}, props)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n","import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && characters.charCodeAt(length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f') != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset:\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tswitch (atrule) {\n\t\t\t\t\t\t\t\t\t// d m s\n\t\t\t\t\t\t\t\t\tcase 100: case 109: case 115:\n\t\t\t\t\t\t\t\t\t\tparse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tparse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @return {object}\n */\nexport function comment (value, root, parent) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @return {object}\n */\nexport function declaration (value, root, parent, length) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length)\n}\n","import DOMPurify from 'dompurify';\n\n/**\n * Gets the number of lines in a string\n *\n * @param {string | undefined} s The string to check the lines for\n * @returns {number} The number of lines in that string\n */\nexport const getRows = (s) => {\n if (!s) return 1;\n let str = breakToPlaceholder(s);\n str = str.replace(/\\\\n/g, '#br#');\n return str.split('#br#');\n};\n\nexport const removeEscapes = (text) => {\n let newStr = text.replace(/\\\\u[\\dA-F]{4}/gi, function (match) {\n return String.fromCharCode(parseInt(match.replace(/\\\\u/g, ''), 16));\n });\n\n newStr = newStr.replace(/\\\\x([0-9a-f]{2})/gi, (_, c) => String.fromCharCode(parseInt(c, 16)));\n newStr = newStr.replace(/\\\\[\\d\\d\\d]{3}/gi, function (match) {\n return String.fromCharCode(parseInt(match.replace(/\\\\/g, ''), 8));\n });\n newStr = newStr.replace(/\\\\[\\d\\d\\d]{2}/gi, function (match) {\n return String.fromCharCode(parseInt(match.replace(/\\\\/g, ''), 8));\n });\n\n return newStr;\n};\n\n/**\n * Removes script tags from a text\n *\n * @param {string} txt The text to sanitize\n * @returns {string} The safer text\n */\nexport const removeScript = (txt) => {\n var rs = '';\n var idx = 0;\n\n while (idx >= 0) {\n idx = txt.indexOf('<script');\n if (idx >= 0) {\n rs += txt.substr(0, idx);\n txt = txt.substr(idx + 1);\n\n idx = txt.indexOf('</script>');\n if (idx >= 0) {\n idx += 9;\n txt = txt.substr(idx);\n }\n } else {\n rs += txt;\n idx = -1;\n break;\n }\n }\n let decodedText = removeEscapes(rs);\n decodedText = decodedText.replaceAll(/script>/gi, '#');\n decodedText = decodedText.replaceAll(/javascript:/gi, '#');\n decodedText = decodedText.replaceAll(/javascript&colon/gi, '#');\n decodedText = decodedText.replaceAll(/onerror=/gi, 'onerror:');\n decodedText = decodedText.replaceAll(/<iframe/gi, '');\n return decodedText;\n};\n\nconst sanitizeMore = (text, config) => {\n let txt = text;\n let htmlLabels = true;\n if (\n config.flowchart &&\n (config.flowchart.htmlLabels === false || config.flowchart.htmlLabels === 'false')\n ) {\n htmlLabels = false;\n }\n\n if (htmlLabels) {\n const level = config.securityLevel;\n\n if (level === 'antiscript' || level === 'strict') {\n txt = removeScript(txt);\n } else if (level !== 'loose') {\n // eslint-disable-line\n txt = breakToPlaceholder(txt);\n txt = txt.replace(/</g, '&lt;').replace(/>/g, '&gt;');\n txt = txt.replace(/=/g, '&equals;');\n txt = placeholderToBreak(txt);\n }\n }\n\n return txt;\n};\n\nexport const sanitizeText = (text, config) => {\n if (!text) return text;\n let txt = '';\n if (config['dompurifyConfig']) {\n txt = DOMPurify.sanitize(sanitizeMore(text, config), config['dompurifyConfig']);\n } else {\n txt = DOMPurify.sanitize(sanitizeMore(text, config));\n }\n return txt;\n};\n\nexport const sanitizeTextOrArray = (a, config) => {\n if (typeof a === 'string') return sanitizeText(a, config);\n\n const f = (x) => sanitizeText(x, config);\n return a.flat().map(f);\n};\n\nexport const lineBreakRegex = /<br\\s*\\/?>/gi;\n\n/**\n * Whether or not a text has any linebreaks\n *\n * @param {string} text The text to test\n * @returns {boolean} Whether or not the text has breaks\n */\nexport const hasBreaks = (text) => {\n return lineBreakRegex.test(text);\n};\n\n/**\n * Splits on <br> tags\n *\n * @param {string} text Text to split\n * @returns {string[]} List of lines as strings\n */\nexport const splitBreaks = (text) => {\n return text.split(lineBreakRegex);\n};\n\n/**\n * Converts placeholders to linebreaks in HTML\n *\n * @param {string} s HTML with placeholders\n * @returns {string} HTML with breaks instead of placeholders\n */\nconst placeholderToBreak = (s) => {\n return s.replace(/#br#/g, '<br/>');\n};\n\n/**\n * Opposite of `placeholderToBreak`, converts breaks to placeholders\n *\n * @param {string} s HTML string\n * @returns {string} String with placeholders\n */\nconst breakToPlaceholder = (s) => {\n return s.replace(lineBreakRegex, '#br#');\n};\n\n/**\n * Gets the current URL\n *\n * @param {boolean} useAbsolute Whether to return the absolute URL or not\n * @returns {string} The current URL\n */\nconst getUrl = (useAbsolute) => {\n let url = '';\n if (useAbsolute) {\n url =\n window.location.protocol +\n '//' +\n window.location.host +\n window.location.pathname +\n window.location.search;\n url = url.replace(/\\(/g, '\\\\(');\n url = url.replace(/\\)/g, '\\\\)');\n }\n\n return url;\n};\n\n/**\n * Converts a string/boolean into a boolean\n *\n * @param {string | boolean} val String or boolean to convert\n * @returns {boolean} The result from the input\n */\nexport const evaluate = (val) => (val === 'false' || val === false ? false : true);\n\nexport default {\n getRows,\n sanitizeText,\n sanitizeTextOrArray,\n hasBreaks,\n splitBreaks,\n lineBreakRegex,\n removeScript,\n getUrl,\n evaluate,\n removeEscapes,\n};\n","/* IMPORT */\n/* MAIN */\nconst Channel = {\n /* CLAMP */\n min: {\n r: 0,\n g: 0,\n b: 0,\n s: 0,\n l: 0,\n a: 0\n },\n max: {\n r: 255,\n g: 255,\n b: 255,\n h: 360,\n s: 100,\n l: 100,\n a: 1\n },\n clamp: {\n r: (r) => r >= 255 ? 255 : (r < 0 ? 0 : r),\n g: (g) => g >= 255 ? 255 : (g < 0 ? 0 : g),\n b: (b) => b >= 255 ? 255 : (b < 0 ? 0 : b),\n h: (h) => h % 360,\n s: (s) => s >= 100 ? 100 : (s < 0 ? 0 : s),\n l: (l) => l >= 100 ? 100 : (l < 0 ? 0 : l),\n a: (a) => a >= 1 ? 1 : (a < 0 ? 0 : a)\n },\n /* CONVERSION */\n //SOURCE: https://planetcalc.com/7779\n toLinear: (c) => {\n const n = c / 255;\n return c > .03928 ? Math.pow(((n + .055) / 1.055), 2.4) : n / 12.92;\n },\n //SOURCE: https://gist.github.com/mjackson/5311256\n hue2rgb: (p, q, t) => {\n if (t < 0)\n t += 1;\n if (t > 1)\n t -= 1;\n if (t < 1 / 6)\n return p + (q - p) * 6 * t;\n if (t < 1 / 2)\n return q;\n if (t < 2 / 3)\n return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n },\n hsl2rgb: ({ h, s, l }, channel) => {\n if (!s)\n return l * 2.55; // Achromatic\n h /= 360;\n s /= 100;\n l /= 100;\n const q = (l < .5) ? l * (1 + s) : (l + s) - (l * s);\n const p = 2 * l - q;\n switch (channel) {\n case 'r': return Channel.hue2rgb(p, q, h + 1 / 3) * 255;\n case 'g': return Channel.hue2rgb(p, q, h) * 255;\n case 'b': return Channel.hue2rgb(p, q, h - 1 / 3) * 255;\n }\n },\n rgb2hsl: ({ r, g, b }, channel) => {\n r /= 255;\n g /= 255;\n b /= 255;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n if (channel === 'l')\n return l * 100;\n if (max === min)\n return 0; // Achromatic\n const d = max - min;\n const s = (l > .5) ? d / (2 - max - min) : d / (max + min);\n if (channel === 's')\n return s * 100;\n switch (max) {\n case r: return ((g - b) / d + (g < b ? 6 : 0)) * 60;\n case g: return ((b - r) / d + 2) * 60;\n case b: return ((r - g) / d + 4) * 60;\n default: return -1; //TSC: TypeScript is stupid and complains if there isn't this useless default statement\n }\n }\n};\n/* EXPORT */\nexport default Channel;\n","/* MAIN */\nconst Lang = {\n /* API */\n clamp: (number, lower, upper) => {\n if (lower > upper)\n return Math.min(lower, Math.max(upper, number));\n return Math.min(upper, Math.max(lower, number));\n },\n round: (number) => {\n return Math.round(number * 10000000000) / 10000000000;\n }\n};\n/* EXPORT */\nexport default Lang;\n","/* MAIN */\nconst Unit = {\n /* API */\n dec2hex: (dec) => {\n const hex = Math.round(dec).toString(16);\n return hex.length > 1 ? hex : `0${hex}`;\n }\n};\n/* EXPORT */\nexport default Unit;\n","/* IMPORT */\nimport channel from './channel.js';\nimport lang from './lang.js';\nimport unit from './unit.js';\n/* MAIN */\nconst Utils = {\n channel,\n lang,\n unit\n};\n/* EXPORT */\nexport default Utils;\n","/* IMPORT */\nimport _ from './utils/index.js';\n/* MAIN */\nconst DEC2HEX = {};\nfor (let i = 0; i <= 255; i++)\n DEC2HEX[i] = _.unit.dec2hex(i); // Populating dynamically, striking a balance between code size and performance\nconst TYPE = {\n ALL: 0,\n RGB: 1,\n HSL: 2\n};\n/* EXPORT */\nexport { DEC2HEX, TYPE };\n","/* IMPORT */\nimport Channels from './/index.js';\n/* MAIN */\nconst channels = new Channels({ r: 0, g: 0, b: 0, a: 0 }, 'transparent');\n/* EXPORT */\nexport default channels;\n","/* IMPORT */\nimport _ from '../utils/index.js';\nimport Type from './type.js';\nimport { TYPE } from '../constants.js';\n/* MAIN */\nclass Channels {\n /* CONSTRUCTOR */\n constructor(data, color) {\n this.color = color;\n this.changed = false;\n this.data = data; //TSC\n this.type = new Type();\n }\n /* API */\n set(data, color) {\n this.color = color;\n this.changed = false;\n this.data = data; //TSC\n this.type.type = TYPE.ALL;\n return this;\n }\n /* HELPERS */\n _ensureHSL() {\n const data = this.data;\n const { h, s, l } = data;\n if (h === undefined)\n data.h = _.channel.rgb2hsl(data, 'h');\n if (s === undefined)\n data.s = _.channel.rgb2hsl(data, 's');\n if (l === undefined)\n data.l = _.channel.rgb2hsl(data, 'l');\n }\n _ensureRGB() {\n const data = this.data;\n const { r, g, b } = data;\n if (r === undefined)\n data.r = _.channel.hsl2rgb(data, 'r');\n if (g === undefined)\n data.g = _.channel.hsl2rgb(data, 'g');\n if (b === undefined)\n data.b = _.channel.hsl2rgb(data, 'b');\n }\n /* GETTERS */\n get r() {\n const data = this.data;\n const r = data.r;\n if (!this.type.is(TYPE.HSL) && r !== undefined)\n return r;\n this._ensureHSL();\n return _.channel.hsl2rgb(data, 'r');\n }\n get g() {\n const data = this.data;\n const g = data.g;\n if (!this.type.is(TYPE.HSL) && g !== undefined)\n return g;\n this._ensureHSL();\n return _.channel.hsl2rgb(data, 'g');\n }\n get b() {\n const data = this.data;\n const b = data.b;\n if (!this.type.is(TYPE.HSL) && b !== undefined)\n return b;\n this._ensureHSL();\n return _.channel.hsl2rgb(data, 'b');\n }\n get h() {\n const data = this.data;\n const h = data.h;\n if (!this.type.is(TYPE.RGB) && h !== undefined)\n return h;\n this._ensureRGB();\n return _.channel.rgb2hsl(data, 'h');\n }\n get s() {\n const data = this.data;\n const s = data.s;\n if (!this.type.is(TYPE.RGB) && s !== undefined)\n return s;\n this._ensureRGB();\n return _.channel.rgb2hsl(data, 's');\n }\n get l() {\n const data = this.data;\n const l = data.l;\n if (!this.type.is(TYPE.RGB) && l !== undefined)\n return l;\n this._ensureRGB();\n return _.channel.rgb2hsl(data, 'l');\n }\n get a() {\n return this.data.a;\n }\n /* SETTERS */\n set r(r) {\n this.type.set(TYPE.RGB);\n this.changed = true;\n this.data.r = r;\n }\n set g(g) {\n this.type.set(TYPE.RGB);\n this.changed = true;\n this.data.g = g;\n }\n set b(b) {\n this.type.set(TYPE.RGB);\n this.changed = true;\n this.data.b = b;\n }\n set h(h) {\n this.type.set(TYPE.HSL);\n this.changed = true;\n this.data.h = h;\n }\n set s(s) {\n this.type.set(TYPE.HSL);\n this.changed = true;\n this.data.s = s;\n }\n set l(l) {\n this.type.set(TYPE.HSL);\n this.changed = true;\n this.data.l = l;\n }\n set a(a) {\n this.changed = true;\n this.data.a = a;\n }\n}\n/* EXPORT */\nexport default Channels;\n","/* IMPORT */\nimport { TYPE } from '../constants.js';\n/* MAIN */\nclass Type {\n constructor() {\n /* VARIABLES */\n this.type = TYPE.ALL;\n }\n /* API */\n get() {\n return this.type;\n }\n set(type) {\n if (this.type && this.type !== type)\n throw new Error('Cannot change both RGB and HSL channels at the same time');\n this.type = type;\n }\n reset() {\n this.type = TYPE.ALL;\n }\n is(type) {\n return this.type === type;\n }\n}\n/* EXPORT */\nexport default Type;\n","/* IMPORT */\nimport _ from '../utils/index.js';\nimport ChannelsReusable from '../channels/reusable.js';\nimport { DEC2HEX } from '../constants.js';\n/* MAIN */\nconst Hex = {\n /* VARIABLES */\n re: /^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,\n /* API */\n parse: (color) => {\n if (color.charCodeAt(0) !== 35)\n return; // '#'\n const match = color.match(Hex.re);\n if (!match)\n return;\n const hex = match[1];\n const dec = parseInt(hex, 16);\n const length = hex.length;\n const hasAlpha = length % 4 === 0;\n const isFullLength = length > 4;\n const multiplier = isFullLength ? 1 : 17;\n const bits = isFullLength ? 8 : 4;\n const bitsOffset = hasAlpha ? 0 : -1;\n const mask = isFullLength ? 255 : 15;\n return ChannelsReusable.set({\n r: ((dec >> (bits * (bitsOffset + 3))) & mask) * multiplier,\n g: ((dec >> (bits * (bitsOffset + 2))) & mask) * multiplier,\n b: ((dec >> (bits * (bitsOffset + 1))) & mask) * multiplier,\n a: hasAlpha ? (dec & mask) * multiplier / 255 : 1\n }, color);\n },\n stringify: (channels) => {\n const { r, g, b, a } = channels;\n if (a < 1) { // #RRGGBBAA\n return `#${DEC2HEX[Math.round(r)]}${DEC2HEX[Math.round(g)]}${DEC2HEX[Math.round(b)]}${DEC2HEX[Math.round(a * 255)]}`;\n }\n else { // #RRGGBB\n return `#${DEC2HEX[Math.round(r)]}${DEC2HEX[Math.round(g)]}${DEC2HEX[Math.round(b)]}`;\n }\n }\n};\n/* EXPORT */\nexport default Hex;\n","/* IMPORT */\nimport _ from '../utils/index.js';\nimport ChannelsReusable from '../channels/reusable.js';\n/* MAIN */\nconst HSL = {\n /* VARIABLES */\n re: /^hsla?\\(\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e-?\\d+)?(?:deg|grad|rad|turn)?)\\s*?(?:,|\\s)\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e-?\\d+)?%)\\s*?(?:,|\\s)\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e-?\\d+)?%)(?:\\s*?(?:,|\\/)\\s*?\\+?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e-?\\d+)?(%)?))?\\s*?\\)$/i,\n hueRe: /^(.+?)(deg|grad|rad|turn)$/i,\n /* HELPERS */\n _hue2deg: (hue) => {\n const match = hue.match(HSL.hueRe);\n if (match) {\n const [, number, unit] = match;\n switch (unit) {\n case 'grad': return _.channel.clamp.h(parseFloat(number) * .9);\n case 'rad': return _.channel.clamp.h(parseFloat(number) * 180 / Math.PI);\n case 'turn': return _.channel.clamp.h(parseFloat(number) * 360);\n }\n }\n return _.channel.clamp.h(parseFloat(hue));\n },\n /* API */\n parse: (color) => {\n const charCode = color.charCodeAt(0);\n if (charCode !== 104 && charCode !== 72)\n return; // 'h'/'H'\n const match = color.match(HSL.re);\n if (!match)\n return;\n const [, h, s, l, a, isAlphaPercentage] = match;\n return ChannelsReusable.set({\n h: HSL._hue2deg(h),\n s: _.channel.clamp.s(parseFloat(s)),\n l: _.channel.clamp.l(parseFloat(l)),\n a: a ? _.channel.clamp.a(isAlphaPercentage ? parseFloat(a) / 100 : parseFloat(a)) : 1\n }, color);\n },\n stringify: (channels) => {\n const { h, s, l, a } = channels;\n if (a < 1) { // HSLA\n return `hsla(${_.lang.round(h)}, ${_.lang.round(s)}%, ${_.lang.round(l)}%, ${a})`;\n }\n else { // HSL\n return `hsl(${_.lang.round(h)}, ${_.lang.round(s)}%, ${_.lang.round(l)}%)`;\n }\n }\n};\n/* EXPORT */\nexport default HSL;\n","/* IMPORT */\nimport Hex from './hex.js';\n/* MAIN */\nconst Keyword = {\n /* VARIABLES */\n colors: {\n aliceblue: '#f0f8ff',\n antiquewhite: '#faebd7',\n aqua: '#00ffff',\n aquamarine: '#7fffd4',\n azure: '#f0ffff',\n beige: '#f5f5dc',\n bisque: '#ffe4c4',\n black: '#000000',\n blanchedalmond: '#ffebcd',\n blue: '#0000ff',\n blueviolet: '#8a2be2',\n brown: '#a52a2a',\n burlywood: '#deb887',\n cadetblue: '#5f9ea0',\n chartreuse: '#7fff00',\n chocolate: '#d2691e',\n coral: '#ff7f50',\n cornflowerblue: '#6495ed',\n cornsilk: '#fff8dc',\n crimson: '#dc143c',\n cyanaqua: '#00ffff',\n darkblue: '#00008b',\n darkcyan: '#008b8b',\n darkgoldenrod: '#b8860b',\n darkgray: '#a9a9a9',\n darkgreen: '#006400',\n darkgrey: '#a9a9a9',\n darkkhaki: '#bdb76b',\n darkmagenta: '#8b008b',\n darkolivegreen: '#556b2f',\n darkorange: '#ff8c00',\n darkorchid: '#9932cc',\n darkred: '#8b0000',\n darksalmon: '#e9967a',\n darkseagreen: '#8fbc8f',\n darkslateblue: '#483d8b',\n darkslategray: '#2f4f4f',\n darkslategrey: '#2f4f4f',\n darkturquoise: '#00ced1',\n darkviolet: '#9400d3',\n deeppink: '#ff1493',\n deepskyblue: '#00bfff',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1e90ff',\n firebrick: '#b22222',\n floralwhite: '#fffaf0',\n forestgreen: '#228b22',\n fuchsia: '#ff00ff',\n gainsboro: '#dcdcdc',\n ghostwhite: '#f8f8ff',\n gold: '#ffd700',\n goldenrod: '#daa520',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#adff2f',\n grey: '#808080',\n honeydew: '#f0fff0',\n hotpink: '#ff69b4',\n indianred: '#cd5c5c',\n indigo: '#4b0082',\n ivory: '#fffff0',\n khaki: '#f0e68c',\n lavender: '#e6e6fa',\n lavenderblush: '#fff0f5',\n lawngreen: '#7cfc00',\n lemonchiffon: '#fffacd',\n lightblue: '#add8e6',\n lightcoral: '#f08080',\n lightcyan: '#e0ffff',\n lightgoldenrodyellow: '#fafad2',\n lightgray: '#d3d3d3',\n lightgreen: '#90ee90',\n lightgrey: '#d3d3d3',\n lightpink: '#ffb6c1',\n lightsalmon: '#ffa07a',\n lightseagreen: '#20b2aa',\n lightskyblue: '#87cefa',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#b0c4de',\n lightyellow: '#ffffe0',\n lime: '#00ff00',\n limegreen: '#32cd32',\n linen: '#faf0e6',\n magenta: '#ff00ff',\n maroon: '#800000',\n mediumaquamarine: '#66cdaa',\n mediumblue: '#0000cd',\n mediumorchid: '#ba55d3',\n mediumpurple: '#9370db',\n mediumseagreen: '#3cb371',\n mediumslateblue: '#7b68ee',\n mediumspringgreen: '#00fa9a',\n mediumturquoise: '#48d1cc',\n mediumvioletred: '#c71585',\n midnightblue: '#191970',\n mintcream: '#f5fffa',\n mistyrose: '#ffe4e1',\n moccasin: '#ffe4b5',\n navajowhite: '#ffdead',\n navy: '#000080',\n oldlace: '#fdf5e6',\n olive: '#808000',\n olivedrab: '#6b8e23',\n orange: '#ffa500',\n orangered: '#ff4500',\n orchid: '#da70d6',\n palegoldenrod: '#eee8aa',\n palegreen: '#98fb98',\n paleturquoise: '#afeeee',\n palevioletred: '#db7093',\n papayawhip: '#ffefd5',\n peachpuff: '#ffdab9',\n peru: '#cd853f',\n pink: '#ffc0cb',\n plum: '#dda0dd',\n powderblue: '#b0e0e6',\n purple: '#800080',\n rebeccapurple: '#663399',\n red: '#ff0000',\n rosybrown: '#bc8f8f',\n royalblue: '#4169e1',\n saddlebrown: '#8b4513',\n salmon: '#fa8072',\n sandybrown: '#f4a460',\n seagreen: '#2e8b57',\n seashell: '#fff5ee',\n sienna: '#a0522d',\n silver: '#c0c0c0',\n skyblue: '#87ceeb',\n slateblue: '#6a5acd',\n slategray: '#708090',\n slategrey: '#708090',\n snow: '#fffafa',\n springgreen: '#00ff7f',\n tan: '#d2b48c',\n teal: '#008080',\n thistle: '#d8bfd8',\n transparent: '#00000000',\n turquoise: '#40e0d0',\n violet: '#ee82ee',\n wheat: '#f5deb3',\n white: '#ffffff',\n whitesmoke: '#f5f5f5',\n yellow: '#ffff00',\n yellowgreen: '#9acd32'\n },\n /* API */\n parse: (color) => {\n color = color.toLowerCase();\n const hex = Keyword.colors[color];\n if (!hex)\n return;\n return Hex.parse(hex);\n },\n stringify: (channels) => {\n const hex = Hex.stringify(channels);\n for (const name in Keyword.colors) {\n if (Keyword.colors[name] === hex)\n return name;\n }\n return;\n }\n};\n/* EXPORT */\nexport default Keyword;\n","/* IMPORT */\nimport _ from '../utils/index.js';\nimport ChannelsReusable from '../channels/reusable.js';\n/* MAIN */\nconst RGB = {\n /* VARIABLES */\n re: /^rgba?\\(\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e\\d+)?(%?))\\s*?(?:,|\\s)\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e\\d+)?(%?))\\s*?(?:,|\\s)\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e\\d+)?(%?))(?:\\s*?(?:,|\\/)\\s*?\\+?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e\\d+)?(%?)))?\\s*?\\)$/i,\n /* API */\n parse: (color) => {\n const charCode = color.charCodeAt(0);\n if (charCode !== 114 && charCode !== 82)\n return; // 'r'/'R'\n const match = color.match(RGB.re);\n if (!match)\n return;\n const [, r, isRedPercentage, g, isGreenPercentage, b, isBluePercentage, a, isAlphaPercentage] = match;\n return ChannelsReusable.set({\n r: _.channel.clamp.r(isRedPercentage ? parseFloat(r) * 2.55 : parseFloat(r)),\n g: _.channel.clamp.g(isGreenPercentage ? parseFloat(g) * 2.55 : parseFloat(g)),\n b: _.channel.clamp.b(isBluePercentage ? parseFloat(b) * 2.55 : parseFloat(b)),\n a: a ? _.channel.clamp.a(isAlphaPercentage ? parseFloat(a) / 100 : parseFloat(a)) : 1\n }, color);\n },\n stringify: (channels) => {\n const { r, g, b, a } = channels;\n if (a < 1) { // RGBA\n return `rgba(${_.lang.round(r)}, ${_.lang.round(g)}, ${_.lang.round(b)}, ${_.lang.round(a)})`;\n }\n else { // RGB\n return `rgb(${_.lang.round(r)}, ${_.lang.round(g)}, ${_.lang.round(b)})`;\n }\n }\n};\n/* EXPORT */\nexport default RGB;\n","/* IMPORT */\nimport _ from '../utils/index.js';\nimport Hex from './hex.js';\nimport HSL from './hsl.js';\nimport Keyword from './keyword.js';\nimport RGB from './rgb.js';\nimport { TYPE } from '../constants.js';\n/* MAIN */\nconst Color = {\n /* VARIABLES */\n format: {\n keyword: Keyword,\n hex: Hex,\n rgb: RGB,\n rgba: RGB,\n hsl: HSL,\n hsla: HSL\n },\n /* API */\n parse: (color) => {\n if (typeof color !== 'string')\n return color;\n const channels = Hex.parse(color) || RGB.parse(color) || HSL.parse(color) || Keyword.parse(color); // Color providers ordered with performance in mind\n if (channels)\n return channels;\n throw new Error(`Unsupported color format: \"${color}\"`);\n },\n stringify: (channels) => {\n // SASS returns a keyword if possible, but we avoid doing that as it's slower and doesn't really add any value\n if (!channels.changed && channels.color)\n return channels.color;\n if (channels.type.is(TYPE.HSL) || channels.data.r === undefined) {\n return HSL.stringify(channels);\n }\n else if (channels.a < 1 || !Number.isInteger(channels.r) || !Number.isInteger(channels.g) || !Number.isInteger(channels.b)) {\n return RGB.stringify(channels);\n }\n else {\n return Hex.stringify(channels);\n }\n }\n};\n/* EXPORT */\nexport default Color;\n","/* IMPORT */\nimport _ from '../utils/index.js';\nimport Color from '../color/index.js';\n/* MAIN */\nconst change = (color, channels) => {\n const ch = Color.parse(color);\n for (const c in channels) {\n ch[c] = _.channel.clamp[c](channels[c]);\n }\n return Color.stringify(ch);\n};\n/* EXPORT */\nexport default change;\n","/* IMPORT */\nimport Color from '../color/index.js';\nimport change from './change.js';\n/* MAIN */\nconst adjust = (color, channels) => {\n const ch = Color.parse(color);\n const changes = {};\n for (const c in channels) {\n if (!channels[c])\n continue;\n changes[c] = ch[c] + channels[c];\n }\n return change(color, changes);\n};\n/* EXPORT */\nexport default adjust;\n","/* IMPORT */\nimport _ from '../utils/index.js';\nimport ChannelsReusable from '../channels/reusable.js';\nimport Color from '../color/index.js';\nimport change from './change.js';\n/* MAIN */\nconst rgba = (r, g, b = 0, a = 1) => {\n if (typeof r !== 'number')\n return change(r, { a: g });\n const channels = ChannelsReusable.set({\n r: _.channel.clamp.r(r),\n g: _.channel.clamp.g(g),\n b: _.channel.clamp.b(b),\n a: _.channel.clamp.a(a)\n });\n return Color.stringify(channels);\n};\n/* EXPORT */\nexport default rgba;\n","/* IMPORT */\nimport Color from '../color/index.js';\nimport mix from './mix.js';\n/* MAIN */\nconst invert = (color, weight = 100) => {\n const inverse = Color.parse(color);\n inverse.r = 255 - inverse.r;\n inverse.g = 255 - inverse.g;\n inverse.b = 255 - inverse.b;\n return mix(inverse, color, weight);\n};\n/* EXPORT */\nexport default invert;\n","/* IMPORT */\nimport Color from '../color/index.js';\nimport rgba from './rgba.js';\n/* MAIN */\n//SOURCE: https://github.com/sass/dart-sass/blob/7457d2e9e7e623d9844ffd037a070cf32d39c348/lib/src/functions/color.dart#L718-L756\nconst mix = (color1, color2, weight = 50) => {\n const { r: r1, g: g1, b: b1, a: a1 } = Color.parse(color1);\n const { r: r2, g: g2, b: b2, a: a2 } = Color.parse(color2);\n const weightScale = weight / 100;\n const weightNormalized = (weightScale * 2) - 1;\n const alphaDelta = a1 - a2;\n const weight1combined = ((weightNormalized * alphaDelta) === -1) ? weightNormalized : (weightNormalized + alphaDelta) / (1 + weightNormalized * alphaDelta);\n const weight1 = (weight1combined + 1) / 2;\n const weight2 = 1 - weight1;\n const r = (r1 * weight1) + (r2 * weight2);\n const g = (g1 * weight1) + (g2 * weight2);\n const b = (b1 * weight1) + (b2 * weight2);\n const a = (a1 * weightScale) + (a2 * (1 - weightScale));\n return rgba(r, g, b, a);\n};\n/* EXPORT */\nexport default mix;\n","/* IMPORT */\nimport _ from '../utils/index.js';\nimport Color from '../color/index.js';\n/* MAIN */\nconst adjustChannel = (color, channel, amount) => {\n const channels = Color.parse(color);\n const amountCurrent = channels[channel];\n const amountNext = _.channel.clamp[channel](amountCurrent + amount);\n if (amountCurrent !== amountNext)\n channels[channel] = amountNext;\n return Color.stringify(channels);\n};\n/* EXPORT */\nexport default adjustChannel;\n","/* IMPORT */\nimport adjustChannel from './adjust_channel.js';\n/* MAIN */\nconst darken = (color, amount) => {\n return adjustChannel(color, 'l', -amount);\n};\n/* EXPORT */\nexport default darken;\n","/* IMPORT */\nimport adjustChannel from './adjust_channel.js';\n/* MAIN */\nconst lighten = (color, amount) => {\n return adjustChannel(color, 'l', amount);\n};\n/* EXPORT */\nexport default lighten;\n","import { adjust } from 'khroma';\r\n\r\nexport const mkBorder = (col, darkMode) =>\r\n darkMode ? adjust(col, { s: -40, l: 10 }) : adjust(col, { s: -40, l: -10 });\r\n","import { darken, lighten, adjust, invert } from 'khroma';\nimport { mkBorder } from './theme-helpers';\nclass Theme {\n constructor() {\n /** # Base variables */\n /**\n * - Background - used to know what the background color is of the diagram. This is used for\n * deducing colors for istance line color. Defaulr value is #f4f4f4.\n */\n this.background = '#f4f4f4';\n this.darkMode = false;\n\n // this.background = '#0c0c0c';\n // this.darkMode = true;\n this.primaryColor = '#fff4dd';\n // this.background = '#0c0c0c';\n // this.primaryColor = '#1f1f00';\n\n this.noteBkgColor = '#fff5ad';\n this.noteTextColor = '#333';\n\n // dark\n\n // this.primaryColor = '#034694';\n // this.primaryColor = '#f2ee7e';\n // this.primaryColor = '#9f33be';\n // this.primaryColor = '#f0fff0';\n // this.primaryColor = '#fa255e';\n // this.primaryColor = '#ECECFF';\n\n // this.secondaryColor = '#c39ea0';\n // this.tertiaryColor = '#f8e5e5';\n\n // this.secondaryColor = '#dfdfde';\n // this.tertiaryColor = '#CCCCFF';\n\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = '16px';\n // this.updateColors();\n }\n updateColors() {\n // The || is to make sure that if the variable has been defiend by a user override that value is to be used\n\n /* Main */\n this.primaryTextColor = this.primaryTextColor || (this.darkMode ? '#eee' : '#333'); // invert(this.primaryColor);\n this.secondaryColor = this.secondaryColor || adjust(this.primaryColor, { h: -120 });\n this.tertiaryColor = this.tertiaryColor || adjust(this.primaryColor, { h: 180, l: 5 });\n\n this.primaryBorderColor = this.primaryBorderColor || mkBorder(this.primaryColor, this.darkMode);\n this.secondaryBorderColor =\n this.secondaryBorderColor || mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor =\n this.tertiaryBorderColor || mkBorder(this.tertiaryColor, this.darkMode);\n this.noteBorderColor = this.noteBorderColor || mkBorder(this.noteBkgColor, this.darkMode);\n this.noteBkgColor = this.noteBkgColor || '#fff5ad';\n this.noteTextColor = this.noteTextColor || '#333';\n\n this.secondaryTextColor = this.secondaryTextColor || invert(this.secondaryColor);\n this.tertiaryTextColor = this.tertiaryTextColor || invert(this.tertiaryColor);\n this.lineColor = this.lineColor || invert(this.background);\n this.textColor = this.textColor || this.primaryTextColor;\n\n /* Flowchart variables */\n this.nodeBkg = this.nodeBkg || this.primaryColor;\n this.mainBkg = this.mainBkg || this.primaryColor;\n this.nodeBorder = this.nodeBorder || this.primaryBorderColor;\n this.clusterBkg = this.clusterBkg || this.tertiaryColor;\n this.clusterBorder = this.clusterBorder || this.tertiaryBorderColor;\n this.defaultLinkColor = this.defaultLinkColor || this.lineColor;\n this.titleColor = this.titleColor || this.tertiaryTextColor;\n this.edgeLabelBackground =\n this.edgeLabelBackground ||\n (this.darkMode ? darken(this.secondaryColor, 30) : this.secondaryColor);\n this.nodeTextColor = this.nodeTextColor || this.primaryTextColor;\n /* Sequence Diagram variables */\n\n // this.actorBorder = lighten(this.border1, 0.5);\n this.actorBorder = this.actorBorder || this.primaryBorderColor;\n this.actorBkg = this.actorBkg || this.mainBkg;\n this.actorTextColor = this.actorTextColor || this.primaryTextColor;\n this.actorLineColor = this.actorLineColor || 'grey';\n this.labelBoxBkgColor = this.labelBoxBkgColor || this.actorBkg;\n this.signalColor = this.signalColor || this.textColor;\n this.signalTextColor = this.signalTextColor || this.textColor;\n this.labelBoxBorderColor = this.labelBoxBorderColor || this.actorBorder;\n this.labelTextColor = this.labelTextColor || this.actorTextColor;\n this.loopTextColor = this.loopTextColor || this.actorTextColor;\n this.activationBorderColor = this.activationBorderColor || darken(this.secondaryColor, 10);\n this.activationBkgColor = this.activationBkgColor || this.secondaryColor;\n this.sequenceNumberColor = this.sequenceNumberColor || invert(this.lineColor);\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = this.sectionBkgColor || this.tertiaryColor;\n this.altSectionBkgColor = this.altSectionBkgColor || 'white';\n this.sectionBkgColor = this.sectionBkgColor || this.secondaryColor;\n this.sectionBkgColor2 = this.sectionBkgColor2 || this.primaryColor;\n this.excludeBkgColor = this.excludeBkgColor || '#eeeeee';\n this.taskBorderColor = this.taskBorderColor || this.primaryBorderColor;\n this.taskBkgColor = this.taskBkgColor || this.primaryColor;\n this.activeTaskBorderColor = this.activeTaskBorderColor || this.primaryColor;\n this.activeTaskBkgColor = this.activeTaskBkgColor || lighten(this.primaryColor, 23);\n this.gridColor = this.gridColor || 'lightgrey';\n this.doneTaskBkgColor = this.doneTaskBkgColor || 'lightgrey';\n this.doneTaskBorderColor = this.doneTaskBorderColor || 'grey';\n this.critBorderColor = this.critBorderColor || '#ff8888';\n this.critBkgColor = this.critBkgColor || 'red';\n this.todayLineColor = this.todayLineColor || 'red';\n this.taskTextColor = this.taskTextColor || this.textColor;\n this.taskTextOutsideColor = this.taskTextOutsideColor || this.textColor;\n this.taskTextLightColor = this.taskTextLightColor || this.textColor;\n this.taskTextColor = this.taskTextColor || this.primaryTextColor;\n this.taskTextDarkColor = this.taskTextDarkColor || this.textColor;\n this.taskTextClickableColor = this.taskTextClickableColor || '#003163';\n\n /* state colors */\n this.transitionColor = this.transitionColor || this.lineColor;\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n /* The color of the text tables of the tstates*/\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || this.tertiaryColor;\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.compositeBorder = this.compositeBorder || this.nodeBorder;\n this.innerEndBackground = this.nodeBorder;\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n this.transitionColor = this.transitionColor || this.lineColor;\n this.specialStateColor = this.lineColor;\n\n /* class */\n this.classText = this.classText || this.textColor;\n\n /* user-journey */\n this.fillType0 = this.fillType0 || this.primaryColor;\n this.fillType1 = this.fillType1 || this.secondaryColor;\n this.fillType2 = this.fillType2 || adjust(this.primaryColor, { h: 64 });\n this.fillType3 = this.fillType3 || adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = this.fillType4 || adjust(this.primaryColor, { h: -64 });\n this.fillType5 = this.fillType5 || adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = this.fillType6 || adjust(this.primaryColor, { h: 128 });\n this.fillType7 = this.fillType7 || adjust(this.secondaryColor, { h: 128 });\n\n /* pie */\n this.pie1 = this.pie1 || this.primaryColor;\n this.pie2 = this.pie2 || this.secondaryColor;\n this.pie3 = this.pie3 || this.tertiaryColor;\n this.pie4 = this.pie4 || adjust(this.primaryColor, { l: -10 });\n this.pie5 = this.pie5 || adjust(this.secondaryColor, { l: -10 });\n this.pie6 = this.pie6 || adjust(this.tertiaryColor, { l: -10 });\n this.pie7 = this.pie7 || adjust(this.primaryColor, { h: +60, l: -10 });\n this.pie8 = this.pie8 || adjust(this.primaryColor, { h: -60, l: -10 });\n this.pie9 = this.pie9 || adjust(this.primaryColor, { h: 120, l: 0 });\n this.pie10 = this.pie10 || adjust(this.primaryColor, { h: +60, l: -20 });\n this.pie11 = this.pie11 || adjust(this.primaryColor, { h: -60, l: -20 });\n this.pie12 = this.pie12 || adjust(this.primaryColor, { h: 120, l: -10 });\n this.pieTitleTextSize = this.pieTitleTextSize || '25px';\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || '17px';\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || '17px';\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || 'black';\n this.pieStrokeWidth = this.pieStrokeWidth || '2px';\n this.pieOpacity = this.pieOpacity || '0.7';\n\n /* requirement-diagram */\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || this.primaryBorderColor;\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground =\n this.relationLabelBackground ||\n (this.darkMode ? darken(this.secondaryColor, 30) : this.secondaryColor);\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n\n /* git */\n this.git0 = this.git0 || this.primaryColor;\n this.git1 = this.git1 || this.secondaryColor;\n this.git2 = this.git2 || this.tertiaryColor;\n this.git3 = this.git3 || adjust(this.primaryColor, { h: -30 });\n this.git4 = this.git4 || adjust(this.primaryColor, { h: -60 });\n this.git5 = this.git5 || adjust(this.primaryColor, { h: -90 });\n this.git6 = this.git6 || adjust(this.primaryColor, { h: +60 });\n this.git7 = this.git7 || adjust(this.primaryColor, { h: +120 });\n if (this.darkMode) {\n this.git0 = lighten(this.git0, 25);\n this.git1 = lighten(this.git1, 25);\n this.git2 = lighten(this.git2, 25);\n this.git3 = lighten(this.git3, 25);\n this.git4 = lighten(this.git4, 25);\n this.git5 = lighten(this.git5, 25);\n this.git6 = lighten(this.git6, 25);\n this.git7 = lighten(this.git7, 25);\n } else {\n this.git0 = darken(this.git0, 25);\n this.git1 = darken(this.git1, 25);\n this.git2 = darken(this.git2, 25);\n this.git3 = darken(this.git3, 25);\n this.git4 = darken(this.git4, 25);\n this.git5 = darken(this.git5, 25);\n this.git6 = darken(this.git6, 25);\n this.git7 = darken(this.git7, 25);\n }\n this.gitInv0 = this.gitInv0 || invert(this.git0);\n this.gitInv1 = this.gitInv1 || invert(this.git1);\n this.gitInv2 = this.gitInv2 || invert(this.git2);\n this.gitInv3 = this.gitInv3 || invert(this.git3);\n this.gitInv4 = this.gitInv4 || invert(this.git4);\n this.gitInv5 = this.gitInv5 || invert(this.git5);\n this.gitInv6 = this.gitInv6 || invert(this.git6);\n this.gitInv7 = this.gitInv7 || invert(this.git7);\n this.branchLabelColor =\n this.branchLabelColor || (this.darkMode ? 'black' : this.labelTextColor);\n this.gitBranchLabel0 = this.gitBranchLabel0 || this.branchLabelColor;\n this.gitBranchLabel1 = this.gitBranchLabel1 || this.branchLabelColor;\n this.gitBranchLabel2 = this.gitBranchLabel2 || this.branchLabelColor;\n this.gitBranchLabel3 = this.gitBranchLabel3 || this.branchLabelColor;\n this.gitBranchLabel4 = this.gitBranchLabel4 || this.branchLabelColor;\n this.gitBranchLabel5 = this.gitBranchLabel5 || this.branchLabelColor;\n this.gitBranchLabel6 = this.gitBranchLabel6 || this.branchLabelColor;\n this.gitBranchLabel7 = this.gitBranchLabel7 || this.branchLabelColor;\n\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = (userOverrides) => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n","import { invert, lighten, darken, rgba, adjust } from 'khroma';\nimport { mkBorder } from './theme-helpers';\nclass Theme {\n constructor() {\n this.background = '#333';\n this.primaryColor = '#1f2020';\n this.secondaryColor = lighten(this.primaryColor, 16);\n\n this.tertiaryColor = adjust(this.primaryColor, { h: -160 });\n this.primaryBorderColor = invert(this.background);\n this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n this.primaryTextColor = invert(this.primaryColor);\n this.secondaryTextColor = invert(this.secondaryColor);\n this.tertiaryTextColor = invert(this.tertiaryColor);\n this.lineColor = invert(this.background);\n this.textColor = invert(this.background);\n\n this.mainBkg = '#1f2020';\n this.secondBkg = 'calculated';\n this.mainContrastColor = 'lightgrey';\n this.darkTextColor = lighten(invert('#323D47'), 10);\n this.lineColor = 'calculated';\n this.border1 = '#81B1DB';\n this.border2 = rgba(255, 255, 255, 0.25);\n this.arrowheadColor = 'calculated';\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = '16px';\n this.labelBackground = '#181818';\n this.textColor = '#ccc';\n /* Flowchart variables */\n\n this.nodeBkg = 'calculated';\n this.nodeBorder = 'calculated';\n this.clusterBkg = 'calculated';\n this.clusterBorder = 'calculated';\n this.defaultLinkColor = 'calculated';\n this.titleColor = '#F9FFFE';\n this.edgeLabelBackground = 'calculated';\n\n /* Sequence Diagram variables */\n\n this.actorBorder = 'calculated';\n this.actorBkg = 'calculated';\n this.actorTextColor = 'calculated';\n this.actorLineColor = 'calculated';\n this.signalColor = 'calculated';\n this.signalTextColor = 'calculated';\n this.labelBoxBkgColor = 'calculated';\n this.labelBoxBorderColor = 'calculated';\n this.labelTextColor = 'calculated';\n this.loopTextColor = 'calculated';\n this.noteBorderColor = 'calculated';\n this.noteBkgColor = '#fff5ad';\n this.noteTextColor = 'calculated';\n this.activationBorderColor = 'calculated';\n this.activationBkgColor = 'calculated';\n this.sequenceNumberColor = 'black';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = darken('#EAE8D9', 30);\n this.altSectionBkgColor = 'calculated';\n this.sectionBkgColor2 = '#EAE8D9';\n this.taskBorderColor = rgba(255, 255, 255, 70);\n this.taskBkgColor = 'calculated';\n this.taskTextColor = 'calculated';\n this.taskTextLightColor = 'calculated';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = rgba(255, 255, 255, 50);\n this.activeTaskBkgColor = '#81B1DB';\n this.gridColor = 'calculated';\n this.doneTaskBkgColor = 'calculated';\n this.doneTaskBorderColor = 'grey';\n this.critBorderColor = '#E83737';\n this.critBkgColor = '#E83737';\n this.taskTextDarkColor = 'calculated';\n this.todayLineColor = '#DB5757';\n\n /* state colors */\n this.labelColor = 'calculated';\n\n this.errorBkgColor = '#a44141';\n this.errorTextColor = '#ddd';\n }\n updateColors() {\n this.secondBkg = lighten(this.mainBkg, 16);\n this.lineColor = this.mainContrastColor;\n this.arrowheadColor = this.mainContrastColor;\n /* Flowchart variables */\n\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.edgeLabelBackground = lighten(this.labelBackground, 25);\n\n /* Sequence Diagram variables */\n\n this.actorBorder = this.border1;\n this.actorBkg = this.mainBkg;\n this.actorTextColor = this.mainContrastColor;\n this.actorLineColor = this.mainContrastColor;\n this.signalColor = this.mainContrastColor;\n this.signalTextColor = this.mainContrastColor;\n this.labelBoxBkgColor = this.actorBkg;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.mainContrastColor;\n this.loopTextColor = this.mainContrastColor;\n this.noteBorderColor = this.secondaryBorderColor;\n this.noteBkgColor = this.secondBkg;\n this.noteTextColor = this.secondaryTextColor;\n this.activationBorderColor = this.border1;\n this.activationBkgColor = this.secondBkg;\n\n /* Gantt chart variables */\n\n this.altSectionBkgColor = this.background;\n this.taskBkgColor = lighten(this.mainBkg, 23);\n this.taskTextColor = this.darkTextColor;\n this.taskTextLightColor = this.mainContrastColor;\n this.taskTextOutsideColor = this.taskTextLightColor;\n this.gridColor = this.mainContrastColor;\n this.doneTaskBkgColor = this.mainContrastColor;\n this.taskTextDarkColor = this.darkTextColor;\n\n /* state colors */\n this.transitionColor = this.transitionColor || this.lineColor;\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || '#555';\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.compositeBorder = this.compositeBorder || this.nodeBorder;\n this.innerEndBackground = this.primaryBorderColor;\n this.specialStateColor = '#f4f4f4'; // this.lineColor;\n\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n\n /* pie */\n this.pie1 = this.pie1 || '#0b0000';\n this.pie2 = this.pie2 || '#4d1037';\n this.pie3 = this.pie3 || '#3f5258';\n this.pie4 = this.pie4 || '#4f2f1b';\n this.pie5 = this.pie5 || '#6e0a0a';\n this.pie6 = this.pie6 || '#3b0048';\n this.pie7 = this.pie7 || '#995a01';\n this.pie8 = this.pie8 || '#154706';\n this.pie9 = this.pie9 || '#161722';\n this.pie10 = this.pie10 || '#00296f';\n this.pie11 = this.pie11 || '#01629c';\n this.pie12 = this.pie12 || '#010029';\n this.pieTitleTextSize = this.pieTitleTextSize || '25px';\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || '17px';\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || '17px';\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || 'black';\n this.pieStrokeWidth = this.pieStrokeWidth || '2px';\n this.pieOpacity = this.pieOpacity || '0.7';\n\n /* class */\n this.classText = this.primaryTextColor;\n\n /* requirement-diagram */\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || this.primaryBorderColor;\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground =\n this.relationLabelBackground ||\n (this.darkMode ? darken(this.secondaryColor, 30) : this.secondaryColor);\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n\n /* git */\n this.git0 = lighten(this.secondaryColor, 20);\n this.git1 = lighten(this.pie2 || this.secondaryColor, 20);\n this.git2 = lighten(this.pie3 || this.tertiaryColor, 20);\n this.git3 = lighten(this.pie4 || adjust(this.primaryColor, { h: -30 }), 20);\n this.git4 = lighten(this.pie5 || adjust(this.primaryColor, { h: -60 }), 20);\n this.git5 = lighten(this.pie6 || adjust(this.primaryColor, { h: -90 }), 10);\n this.git6 = lighten(this.pie7 || adjust(this.primaryColor, { h: +60 }), 10);\n this.git7 = lighten(this.pie8 || adjust(this.primaryColor, { h: +120 }), 20);\n this.gitInv0 = this.gitInv0 || invert(this.git0);\n this.gitInv1 = this.gitInv1 || invert(this.git1);\n this.gitInv2 = this.gitInv2 || invert(this.git2);\n this.gitInv3 = this.gitInv3 || invert(this.git3);\n this.gitInv4 = this.gitInv4 || invert(this.git4);\n this.gitInv5 = this.gitInv5 || invert(this.git5);\n this.gitInv6 = this.gitInv6 || invert(this.git6);\n this.gitInv7 = this.gitInv7 || invert(this.git7);\n\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = (userOverrides) => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n","import { invert, lighten, rgba, adjust, darken } from 'khroma';\nimport { mkBorder } from './theme-helpers';\n\nclass Theme {\n constructor() {\n /* Base variables */\n this.background = '#f4f4f4';\n this.primaryColor = '#ECECFF';\n\n this.secondaryColor = adjust(this.primaryColor, { h: 120 });\n this.secondaryColor = '#ffffde';\n this.tertiaryColor = adjust(this.primaryColor, { h: -160 });\n this.primaryBorderColor = mkBorder(this.primaryColor, this.darkMode);\n this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n // this.noteBorderColor = mkBorder(this.noteBkgColor, this.darkMode);\n\n this.primaryTextColor = invert(this.primaryColor);\n this.secondaryTextColor = invert(this.secondaryColor);\n this.tertiaryTextColor = invert(this.tertiaryColor);\n this.lineColor = invert(this.background);\n this.textColor = invert(this.background);\n\n this.background = 'white';\n this.mainBkg = '#ECECFF';\n this.secondBkg = '#ffffde';\n this.lineColor = '#333333';\n this.border1 = '#9370DB';\n this.border2 = '#aaaa33';\n this.arrowheadColor = '#333333';\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = '16px';\n this.labelBackground = '#e8e8e8';\n this.textColor = '#333';\n\n /* Flowchart variables */\n\n this.nodeBkg = 'calculated';\n this.nodeBorder = 'calculated';\n this.clusterBkg = 'calculated';\n this.clusterBorder = 'calculated';\n this.defaultLinkColor = 'calculated';\n this.titleColor = 'calculated';\n this.edgeLabelBackground = 'calculated';\n\n /* Sequence Diagram variables */\n\n this.actorBorder = 'calculated';\n this.actorBkg = 'calculated';\n this.actorTextColor = 'black';\n this.actorLineColor = 'grey';\n this.signalColor = 'calculated';\n this.signalTextColor = 'calculated';\n this.labelBoxBkgColor = 'calculated';\n this.labelBoxBorderColor = 'calculated';\n this.labelTextColor = 'calculated';\n this.loopTextColor = 'calculated';\n this.noteBorderColor = 'calculated';\n this.noteBkgColor = '#fff5ad';\n this.noteTextColor = 'calculated';\n this.activationBorderColor = '#666';\n this.activationBkgColor = '#f4f4f4';\n this.sequenceNumberColor = 'white';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = 'calculated';\n this.altSectionBkgColor = 'calculated';\n this.sectionBkgColor2 = 'calculated';\n this.excludeBkgColor = '#eeeeee';\n this.taskBorderColor = 'calculated';\n this.taskBkgColor = 'calculated';\n this.taskTextLightColor = 'calculated';\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextDarkColor = 'calculated';\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.taskTextClickableColor = 'calculated';\n this.activeTaskBorderColor = 'calculated';\n this.activeTaskBkgColor = 'calculated';\n this.gridColor = 'calculated';\n this.doneTaskBkgColor = 'calculated';\n this.doneTaskBorderColor = 'calculated';\n this.critBorderColor = 'calculated';\n this.critBkgColor = 'calculated';\n this.todayLineColor = 'calculated';\n\n this.sectionBkgColor = rgba(102, 102, 255, 0.49);\n this.altSectionBkgColor = 'white';\n this.sectionBkgColor2 = '#fff400';\n this.taskBorderColor = '#534fbc';\n this.taskBkgColor = '#8a90dd';\n this.taskTextLightColor = 'white';\n this.taskTextColor = 'calculated';\n this.taskTextDarkColor = 'black';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = '#534fbc';\n this.activeTaskBkgColor = '#bfc7ff';\n this.gridColor = 'lightgrey';\n this.doneTaskBkgColor = 'lightgrey';\n this.doneTaskBorderColor = 'grey';\n this.critBorderColor = '#ff8888';\n this.critBkgColor = 'red';\n this.todayLineColor = 'red';\n\n /* state colors */\n this.labelColor = 'black';\n this.errorBkgColor = '#552222';\n this.errorTextColor = '#552222';\n this.updateColors();\n }\n updateColors() {\n /* Flowchart variables */\n\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1; // border 1\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.titleColor = this.textColor;\n this.edgeLabelBackground = this.labelBackground;\n\n /* Sequence Diagram variables */\n\n // this.actorBorder = lighten(this.border1, 0.5);\n this.actorBorder = lighten(this.border1, 23);\n this.actorBkg = this.mainBkg;\n this.labelBoxBkgColor = this.actorBkg;\n this.signalColor = this.textColor;\n this.signalTextColor = this.textColor;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.actorTextColor;\n this.loopTextColor = this.actorTextColor;\n this.noteBorderColor = this.border2;\n this.noteTextColor = this.actorTextColor;\n\n /* Gantt chart variables */\n\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n\n /* state colors */\n this.transitionColor = this.transitionColor || this.lineColor;\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || '#f0f0f0';\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.compositeBorder = this.compositeBorder || this.nodeBorder;\n this.innerEndBackground = this.nodeBorder;\n this.specialStateColor = this.lineColor;\n\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n this.transitionColor = this.transitionColor || this.lineColor;\n /* class */\n this.classText = this.primaryTextColor;\n /* journey */\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n\n /* pie */\n this.pie1 = this.pie1 || this.primaryColor;\n this.pie2 = this.pie2 || this.secondaryColor;\n this.pie3 = this.pie3 || adjust(this.tertiaryColor, { l: -40 });\n this.pie4 = this.pie4 || adjust(this.primaryColor, { l: -10 });\n this.pie5 = this.pie5 || adjust(this.secondaryColor, { l: -30 });\n this.pie6 = this.pie6 || adjust(this.tertiaryColor, { l: -20 });\n this.pie7 = this.pie7 || adjust(this.primaryColor, { h: +60, l: -20 });\n this.pie8 = this.pie8 || adjust(this.primaryColor, { h: -60, l: -40 });\n this.pie9 = this.pie9 || adjust(this.primaryColor, { h: 120, l: -40 });\n this.pie10 = this.pie10 || adjust(this.primaryColor, { h: +60, l: -40 });\n this.pie11 = this.pie11 || adjust(this.primaryColor, { h: -90, l: -40 });\n this.pie12 = this.pie12 || adjust(this.primaryColor, { h: 120, l: -30 });\n this.pieTitleTextSize = this.pieTitleTextSize || '25px';\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || '17px';\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || '17px';\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || 'black';\n this.pieStrokeWidth = this.pieStrokeWidth || '2px';\n this.pieOpacity = this.pieOpacity || '0.7';\n\n /* requirement-diagram */\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || this.primaryBorderColor;\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground = this.relationLabelBackground || this.labelBackground;\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n\n /* git */\n this.git0 = this.git0 || this.primaryColor;\n this.git1 = this.git1 || this.secondaryColor;\n this.git2 = this.git2 || this.tertiaryColor;\n this.git3 = this.git3 || adjust(this.primaryColor, { h: -30 });\n this.git4 = this.git4 || adjust(this.primaryColor, { h: -60 });\n this.git5 = this.git5 || adjust(this.primaryColor, { h: -90 });\n this.git6 = this.git6 || adjust(this.primaryColor, { h: +60 });\n this.git7 = this.git7 || adjust(this.primaryColor, { h: +120 });\n if (this.darkMode) {\n this.git0 = lighten(this.git0, 25);\n this.git1 = lighten(this.git1, 25);\n this.git2 = lighten(this.git2, 25);\n this.git3 = lighten(this.git3, 25);\n this.git4 = lighten(this.git4, 25);\n this.git5 = lighten(this.git5, 25);\n this.git6 = lighten(this.git6, 25);\n this.git7 = lighten(this.git7, 25);\n } else {\n this.git0 = darken(this.git0, 25);\n this.git1 = darken(this.git1, 25);\n this.git2 = darken(this.git2, 25);\n this.git3 = darken(this.git3, 25);\n this.git4 = darken(this.git4, 25);\n this.git5 = darken(this.git5, 25);\n this.git6 = darken(this.git6, 25);\n this.git7 = darken(this.git7, 25);\n }\n this.gitInv0 = this.gitInv0 || darken(invert(this.git0), 25);\n this.gitInv1 = this.gitInv1 || invert(this.git1);\n this.gitInv2 = this.gitInv2 || invert(this.git2);\n this.gitInv3 = this.gitInv3 || invert(this.git3);\n this.gitInv4 = this.gitInv4 || invert(this.git4);\n this.gitInv5 = this.gitInv5 || invert(this.git5);\n this.gitInv6 = this.gitInv6 || invert(this.git6);\n this.gitInv7 = this.gitInv7 || invert(this.git7);\n this.gitBranchLabel0 = this.gitBranchLabel0 || invert(this.labelTextColor);\n this.gitBranchLabel1 = this.gitBranchLabel1 || this.labelTextColor;\n this.gitBranchLabel2 = this.gitBranchLabel2 || this.labelTextColor;\n this.gitBranchLabel3 = this.gitBranchLabel3 || invert(this.labelTextColor);\n this.gitBranchLabel4 = this.gitBranchLabel4 || this.labelTextColor;\n this.gitBranchLabel5 = this.gitBranchLabel5 || this.labelTextColor;\n this.gitBranchLabel6 = this.gitBranchLabel6 || this.labelTextColor;\n this.gitBranchLabel7 = this.gitBranchLabel7 || this.labelTextColor;\n\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = (userOverrides) => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n","import { darken, lighten, adjust, invert } from 'khroma';\nimport { mkBorder } from './theme-helpers';\nclass Theme {\n constructor() {\n /* Base vales */\n this.background = '#f4f4f4';\n this.primaryColor = '#cde498';\n this.secondaryColor = '#cdffb2';\n this.background = 'white';\n this.mainBkg = '#cde498';\n this.secondBkg = '#cdffb2';\n this.lineColor = 'green';\n this.border1 = '#13540c';\n this.border2 = '#6eaa49';\n this.arrowheadColor = 'green';\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = '16px';\n\n this.tertiaryColor = lighten('#cde498', 10);\n this.primaryBorderColor = mkBorder(this.primaryColor, this.darkMode);\n this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n this.primaryTextColor = invert(this.primaryColor);\n this.secondaryTextColor = invert(this.secondaryColor);\n this.tertiaryTextColor = invert(this.primaryColor);\n this.lineColor = invert(this.background);\n this.textColor = invert(this.background);\n\n /* Flowchart variables */\n this.nodeBkg = 'calculated';\n this.nodeBorder = 'calculated';\n this.clusterBkg = 'calculated';\n this.clusterBorder = 'calculated';\n this.defaultLinkColor = 'calculated';\n this.titleColor = '#333';\n this.edgeLabelBackground = '#e8e8e8';\n\n /* Sequence Diagram variables */\n\n this.actorBorder = 'calculated';\n this.actorBkg = 'calculated';\n this.actorTextColor = 'black';\n this.actorLineColor = 'grey';\n this.signalColor = '#333';\n this.signalTextColor = '#333';\n this.labelBoxBkgColor = 'calculated';\n this.labelBoxBorderColor = '#326932';\n this.labelTextColor = 'calculated';\n this.loopTextColor = 'calculated';\n this.noteBorderColor = 'calculated';\n this.noteBkgColor = '#fff5ad';\n this.noteTextColor = 'calculated';\n this.activationBorderColor = '#666';\n this.activationBkgColor = '#f4f4f4';\n this.sequenceNumberColor = 'white';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = '#6eaa49';\n this.altSectionBkgColor = 'white';\n this.sectionBkgColor2 = '#6eaa49';\n this.excludeBkgColor = '#eeeeee';\n this.taskBorderColor = 'calculated';\n this.taskBkgColor = '#487e3a';\n this.taskTextLightColor = 'white';\n this.taskTextColor = 'calculated';\n this.taskTextDarkColor = 'black';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = 'calculated';\n this.activeTaskBkgColor = 'calculated';\n this.gridColor = 'lightgrey';\n this.doneTaskBkgColor = 'lightgrey';\n this.doneTaskBorderColor = 'grey';\n this.critBorderColor = '#ff8888';\n this.critBkgColor = 'red';\n this.todayLineColor = 'red';\n\n /* state colors */\n this.labelColor = 'black';\n\n this.errorBkgColor = '#552222';\n this.errorTextColor = '#552222';\n }\n updateColors() {\n /* Flowchart variables */\n\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n\n /* Sequence Diagram variables */\n\n this.actorBorder = darken(this.mainBkg, 20);\n this.actorBkg = this.mainBkg;\n this.labelBoxBkgColor = this.actorBkg;\n this.labelTextColor = this.actorTextColor;\n this.loopTextColor = this.actorTextColor;\n this.noteBorderColor = this.border2;\n this.noteTextColor = this.actorTextColor;\n\n /* Gantt chart variables */\n\n this.taskBorderColor = this.border1;\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.activeTaskBorderColor = this.taskBorderColor;\n this.activeTaskBkgColor = this.mainBkg;\n\n /* state colors */\n this.transitionColor = this.transitionColor || this.lineColor;\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || '#f0f0f0';\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.compositeBorder = this.compositeBorder || this.nodeBorder;\n this.innerEndBackground = this.primaryBorderColor;\n this.specialStateColor = this.lineColor;\n\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n this.transitionColor = this.transitionColor || this.lineColor;\n /* class */\n this.classText = this.primaryTextColor;\n /* journey */\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n\n /* pie */\n this.pie1 = this.pie1 || this.primaryColor;\n this.pie2 = this.pie2 || this.secondaryColor;\n this.pie3 = this.pie3 || this.tertiaryColor;\n this.pie4 = this.pie4 || adjust(this.primaryColor, { l: -30 });\n this.pie5 = this.pie5 || adjust(this.secondaryColor, { l: -30 });\n this.pie6 = this.pie6 || adjust(this.tertiaryColor, { h: +40, l: -40 });\n this.pie7 = this.pie7 || adjust(this.primaryColor, { h: +60, l: -10 });\n this.pie8 = this.pie8 || adjust(this.primaryColor, { h: -60, l: -10 });\n this.pie9 = this.pie9 || adjust(this.primaryColor, { h: 120, l: 0 });\n this.pie10 = this.pie10 || adjust(this.primaryColor, { h: +60, l: -50 });\n this.pie11 = this.pie11 || adjust(this.primaryColor, { h: -60, l: -50 });\n this.pie12 = this.pie12 || adjust(this.primaryColor, { h: 120, l: -50 });\n this.pieTitleTextSize = this.pieTitleTextSize || '25px';\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || '17px';\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || '17px';\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || 'black';\n this.pieStrokeWidth = this.pieStrokeWidth || '2px';\n this.pieOpacity = this.pieOpacity || '0.7';\n\n /* requirement-diagram */\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || this.primaryBorderColor;\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground = this.relationLabelBackground || this.edgeLabelBackground;\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n\n /* git */\n this.git0 = this.git0 || this.primaryColor;\n this.git1 = this.git1 || this.secondaryColor;\n this.git2 = this.git2 || this.tertiaryColor;\n this.git3 = this.git3 || adjust(this.primaryColor, { h: -30 });\n this.git4 = this.git4 || adjust(this.primaryColor, { h: -60 });\n this.git5 = this.git5 || adjust(this.primaryColor, { h: -90 });\n this.git6 = this.git6 || adjust(this.primaryColor, { h: +60 });\n this.git7 = this.git7 || adjust(this.primaryColor, { h: +120 });\n if (this.darkMode) {\n this.git0 = lighten(this.git0, 25);\n this.git1 = lighten(this.git1, 25);\n this.git2 = lighten(this.git2, 25);\n this.git3 = lighten(this.git3, 25);\n this.git4 = lighten(this.git4, 25);\n this.git5 = lighten(this.git5, 25);\n this.git6 = lighten(this.git6, 25);\n this.git7 = lighten(this.git7, 25);\n } else {\n this.git0 = darken(this.git0, 25);\n this.git1 = darken(this.git1, 25);\n this.git2 = darken(this.git2, 25);\n this.git3 = darken(this.git3, 25);\n this.git4 = darken(this.git4, 25);\n this.git5 = darken(this.git5, 25);\n this.git6 = darken(this.git6, 25);\n this.git7 = darken(this.git7, 25);\n }\n this.gitInv0 = this.gitInv0 || invert(this.git0);\n this.gitInv1 = this.gitInv1 || invert(this.git1);\n this.gitInv2 = this.gitInv2 || invert(this.git2);\n this.gitInv3 = this.gitInv3 || invert(this.git3);\n this.gitInv4 = this.gitInv4 || invert(this.git4);\n this.gitInv5 = this.gitInv5 || invert(this.git5);\n this.gitInv6 = this.gitInv6 || invert(this.git6);\n this.gitInv7 = this.gitInv7 || invert(this.git7);\n\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = (userOverrides) => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n","import { invert, darken, lighten, adjust } from 'khroma';\nimport { mkBorder } from './theme-helpers';\n\n// const Color = require ( 'khroma/dist/color' ).default\n// Color.format.hex.stringify(Color.parse('hsl(210, 66.6666666667%, 95%)')); // => \"#EAF2FB\"\n\nclass Theme {\n constructor() {\n this.primaryColor = '#eee';\n this.contrast = '#707070';\n this.secondaryColor = lighten(this.contrast, 55);\n this.background = '#ffffff';\n\n // this.secondaryColor = adjust(this.primaryColor, { h: 120 });\n this.tertiaryColor = adjust(this.primaryColor, { h: -160 });\n this.primaryBorderColor = mkBorder(this.primaryColor, this.darkMode);\n this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n // this.noteBorderColor = mkBorder(this.noteBkgColor, this.darkMode);\n\n this.primaryTextColor = invert(this.primaryColor);\n this.secondaryTextColor = invert(this.secondaryColor);\n this.tertiaryTextColor = invert(this.tertiaryColor);\n this.lineColor = invert(this.background);\n this.textColor = invert(this.background);\n\n // this.altBackground = lighten(this.contrast, 55);\n this.mainBkg = '#eee';\n this.secondBkg = 'calculated';\n this.lineColor = '#666';\n this.border1 = '#999';\n this.border2 = 'calculated';\n this.note = '#ffa';\n this.text = '#333';\n this.critical = '#d42';\n this.done = '#bbb';\n this.arrowheadColor = '#333333';\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = '16px';\n\n /* Flowchart variables */\n\n this.nodeBkg = 'calculated';\n this.nodeBorder = 'calculated';\n this.clusterBkg = 'calculated';\n this.clusterBorder = 'calculated';\n this.defaultLinkColor = 'calculated';\n this.titleColor = 'calculated';\n this.edgeLabelBackground = 'white';\n\n /* Sequence Diagram variables */\n\n this.actorBorder = 'calculated';\n this.actorBkg = 'calculated';\n this.actorTextColor = 'calculated';\n this.actorLineColor = 'calculated';\n this.signalColor = 'calculated';\n this.signalTextColor = 'calculated';\n this.labelBoxBkgColor = 'calculated';\n this.labelBoxBorderColor = 'calculated';\n this.labelTextColor = 'calculated';\n this.loopTextColor = 'calculated';\n this.noteBorderColor = 'calculated';\n this.noteBkgColor = 'calculated';\n this.noteTextColor = 'calculated';\n this.activationBorderColor = '#666';\n this.activationBkgColor = '#f4f4f4';\n this.sequenceNumberColor = 'white';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = 'calculated';\n this.altSectionBkgColor = 'white';\n this.sectionBkgColor2 = 'calculated';\n this.excludeBkgColor = '#eeeeee';\n this.taskBorderColor = 'calculated';\n this.taskBkgColor = 'calculated';\n this.taskTextLightColor = 'white';\n this.taskTextColor = 'calculated';\n this.taskTextDarkColor = 'calculated';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = 'calculated';\n this.activeTaskBkgColor = 'calculated';\n this.gridColor = 'calculated';\n this.doneTaskBkgColor = 'calculated';\n this.doneTaskBorderColor = 'calculated';\n this.critBkgColor = 'calculated';\n this.critBorderColor = 'calculated';\n this.todayLineColor = 'calculated';\n\n /* state colors */\n this.labelColor = 'black';\n\n this.errorBkgColor = '#552222';\n this.errorTextColor = '#552222';\n }\n updateColors() {\n this.secondBkg = lighten(this.contrast, 55);\n this.border2 = this.contrast;\n\n /* Flowchart variables */\n\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.titleColor = this.text;\n\n /* Sequence Diagram variables */\n\n this.actorBorder = lighten(this.border1, 23);\n this.actorBkg = this.mainBkg;\n this.actorTextColor = this.text;\n this.actorLineColor = this.lineColor;\n this.signalColor = this.text;\n this.signalTextColor = this.text;\n this.labelBoxBkgColor = this.actorBkg;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.text;\n this.loopTextColor = this.text;\n this.noteBorderColor = '#999';\n this.noteBkgColor = '#666';\n this.noteTextColor = '#fff';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = lighten(this.contrast, 30);\n this.sectionBkgColor2 = lighten(this.contrast, 30);\n\n this.taskBorderColor = darken(this.contrast, 10);\n\n this.taskBkgColor = this.contrast;\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextDarkColor = this.text;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.activeTaskBorderColor = this.taskBorderColor;\n this.activeTaskBkgColor = this.mainBkg;\n this.gridColor = lighten(this.border1, 30);\n\n this.doneTaskBkgColor = this.done;\n this.doneTaskBorderColor = this.lineColor;\n this.critBkgColor = this.critical;\n this.critBorderColor = darken(this.critBkgColor, 10);\n\n this.todayLineColor = this.critBkgColor;\n\n /* state colors */\n this.transitionColor = this.transitionColor || '#000';\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || '#f4f4f4';\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.stateBorder = this.stateBorder || '#000';\n this.innerEndBackground = this.primaryBorderColor;\n this.specialStateColor = '#222';\n\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n\n /* class */\n this.classText = this.primaryTextColor;\n /* journey */\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n\n // /* pie */\n this.pie1 = this.pie1 || '#F4F4F4';\n this.pie2 = this.pie2 || '#555';\n this.pie3 = this.pie3 || '#BBB';\n this.pie4 = this.pie4 || '#777';\n this.pie5 = this.pie5 || '#999';\n this.pie6 = this.pie6 || '#DDD';\n this.pie7 = this.pie7 || '#FFF';\n this.pie8 = this.pie8 || '#DDD';\n this.pie9 = this.pie9 || '#BBB';\n this.pie10 = this.pie10 || '#999';\n this.pie11 = this.pie11 || '#777';\n this.pie12 = this.pie12 || '#555';\n this.pieTitleTextSize = this.pieTitleTextSize || '25px';\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || '17px';\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || '17px';\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || 'black';\n this.pieStrokeWidth = this.pieStrokeWidth || '2px';\n this.pieOpacity = this.pieOpacity || '0.7';\n\n // this.pie1 = this.pie1 || '#212529';\n // this.pie2 = this.pie2 || '#343A40';\n // this.pie3 = this.pie3 || '#495057';\n // this.pie4 = this.pie4 || '#6C757D';\n // this.pie5 = this.pie5 || adjust(this.secondaryColor, { l: -10 });\n // this.pie6 = this.pie6 || adjust(this.tertiaryColor, { l: -10 });\n // this.pie7 = this.pie7 || adjust(this.primaryColor, { h: +60, l: -10 });\n // this.pie8 = this.pie8 || adjust(this.primaryColor, { h: -60, l: -10 });\n // this.pie9 = this.pie9 || adjust(this.primaryColor, { h: 120, l: 0 });\n // this.pie10 = this.pie10 || adjust(this.primaryColor, { h: +60, l: -20 });\n // this.pie11 = this.pie11 || adjust(this.primaryColor, { h: -60, l: -20 });\n // this.pie12 = this.pie12 || adjust(this.primaryColor, { h: 120, l: -10 });\n\n /* requirement-diagram */\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || this.primaryBorderColor;\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground = this.relationLabelBackground || this.edgeLabelBackground;\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n\n /* git */\n this.git0 = darken(this.pie1, 25) || this.primaryColor;\n this.git1 = this.pie2 || this.secondaryColor;\n this.git2 = this.pie3 || this.tertiaryColor;\n this.git3 = this.pie4 || adjust(this.primaryColor, { h: -30 });\n this.git4 = this.pie5 || adjust(this.primaryColor, { h: -60 });\n this.git5 = this.pie6 || adjust(this.primaryColor, { h: -90 });\n this.git6 = this.pie7 || adjust(this.primaryColor, { h: +60 });\n this.git7 = this.pie8 || adjust(this.primaryColor, { h: +120 });\n\n this.gitInv0 = this.gitInv0 || invert(this.git0);\n this.gitInv1 = this.gitInv1 || invert(this.git1);\n this.gitInv2 = this.gitInv2 || invert(this.git2);\n this.gitInv3 = this.gitInv3 || invert(this.git3);\n this.gitInv4 = this.gitInv4 || invert(this.git4);\n this.gitInv5 = this.gitInv5 || invert(this.git5);\n this.gitInv6 = this.gitInv6 || invert(this.git6);\n this.gitInv7 = this.gitInv7 || invert(this.git7);\n\n this.branchLabelColor = this.branchLabelColor || this.labelTextColor;\n this.gitBranchLabel0 = this.branchLabelColor;\n this.gitBranchLabel1 = 'white';\n this.gitBranchLabel2 = this.branchLabelColor;\n this.gitBranchLabel3 = 'white';\n this.gitBranchLabel4 = this.branchLabelColor;\n this.gitBranchLabel5 = this.branchLabelColor;\n this.gitBranchLabel6 = this.branchLabelColor;\n this.gitBranchLabel7 = this.branchLabelColor;\n\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = (userOverrides) => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n","import { getThemeVariables as baseThemeVariables } from './theme-base';\nimport { getThemeVariables as darkThemeVariables } from './theme-dark';\nimport { getThemeVariables as defaultThemeVariables } from './theme-default';\nimport { getThemeVariables as forestThemeVariables } from './theme-forest';\nimport { getThemeVariables as neutralThemeVariables } from './theme-neutral';\n\nexport default {\n base: {\n getThemeVariables: baseThemeVariables,\n },\n dark: {\n getThemeVariables: darkThemeVariables,\n },\n default: {\n getThemeVariables: defaultThemeVariables,\n },\n forest: {\n getThemeVariables: forestThemeVariables,\n },\n neutral: {\n getThemeVariables: neutralThemeVariables,\n },\n};\n","import theme from './themes';\n/**\n * **Configuration methods in Mermaid version 8.6.0 have been updated, to learn more[[click\n * here](8.6.0_docs.md)].**\n *\n * ## **What follows are config instructions for older versions**\n *\n * These are the default options which can be overridden with the initialization call like so:\n *\n * **Example 1:**<pre> mermaid.initialize({ flowchart:{ htmlLabels: false } }); </pre>\n *\n * **Example 2:**<pre> <script> var config = { startOnLoad:true, flowchart:{ useMaxWidth:true,\n * htmlLabels:true, curve:'cardinal', },\n *\n * securityLevel:'loose',\n *\n * }; mermaid.initialize(config); </script> </pre>\n *\n * A summary of all options and their defaults is found [here](#mermaidapi-configuration-defaults).\n * A description of each option follows below.\n *\n * @name Configuration\n */\nconst config = {\n /**\n * Theme , the CSS style sheet\n *\n * | Parameter | Description | Type | Required | Values |\n * | --------- | --------------- | ------ | -------- | ---------------------------------------------- |\n * | theme | Built in Themes | string | Optional | 'default', 'forest', 'dark', 'neutral', 'null' |\n *\n * **Notes:** To disable any pre-defined mermaid theme, use \"null\".<pre> \"theme\": \"forest\",\n * \"themeCSS\": \".node rect { fill: red; }\" </pre>\n */\n theme: 'default',\n themeVariables: theme['default'].getThemeVariables(),\n themeCSS: undefined,\n /* **maxTextSize** - The maximum allowed size of the users text diagram */\n maxTextSize: 50000,\n darkMode: false,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ---------- | ------------------------------------------------------ | ------ | -------- | --------------------------- |\n * | fontFamily | specifies the font to be used in the rendered diagrams | string | Required | Any Possible CSS FontFamily |\n *\n * **Notes:** Default value: '\"trebuchet ms\", verdana, arial, sans-serif;'.\n */\n fontFamily: '\"trebuchet ms\", verdana, arial, sans-serif;',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ----------------------------------------------------- | ---------------- | -------- | ------------- |\n * | logLevel | This option decides the amount of logging to be used. | string \\| number | Required | 1, 2, 3, 4, 5 |\n *\n * **Notes:**\n *\n * - Debug: 1\n * - Info: 2\n * - Warn: 3\n * - Error: 4\n * - Fatal: 5 (default)\n */\n logLevel: 5,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------- | --------------------------------- | ------ | -------- | ------------------------------- |\n * | securitylevel | Level of trust for parsed diagram | string | Required | 'strict', 'loose', 'antiscript' |\n *\n * **Notes**:\n *\n * - **strict**: (**default**) tags in text are encoded, click functionality is disabled\n * - **loose**: tags in text are allowed, click functionality is enabled\n * - **antiscript**: html tags in text are allowed, (only script element is removed), click\n * functionality is enabled\n */\n securityLevel: 'strict',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | -------------------------------------------- | ------- | -------- | ----------- |\n * | startOnLoad | Dictates whether mermaid starts on Page load | boolean | Required | true, false |\n *\n * **Notes:** Default value: true\n */\n startOnLoad: true,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------------- | ---------------------------------------------------------------------------- | ------- | -------- | ----------- |\n * | arrowMarkerAbsolute | Controls whether or arrow markers in html code are absolute paths or anchors | boolean | Required | true, false |\n *\n * **Notes**:\n *\n * This matters if you are using base tag settings.\n *\n * Default value: false\n */\n arrowMarkerAbsolute: false,\n\n /**\n * This option controls which currentConfig keys are considered _secure_ and can only be changed\n * via call to mermaidAPI.initialize. Calls to mermaidAPI.reinitialize cannot make changes to the\n * `secure` keys in the current currentConfig. This prevents malicious graph directives from\n * overriding a site's default security.\n *\n * **Notes**:\n *\n * Default value: ['secure', 'securityLevel', 'startOnLoad', 'maxTextSize']\n */\n secure: ['secure', 'securityLevel', 'startOnLoad', 'maxTextSize'],\n\n /**\n * This option controls if the generated ids of nodes in the SVG are generated randomly or based\n * on a seed. If set to false, the IDs are generated based on the current date and thus are not\n * deterministic. This is the default behaviour.\n *\n * **Notes**:\n *\n * This matters if your files are checked into sourcecontrol e.g. git and should not change unless\n * content is changed.\n *\n * Default value: false\n */\n deterministicIds: false,\n\n /**\n * This option is the optional seed for deterministic ids. if set to undefined but\n * deterministicIds is true, a simple number iterator is used. You can set this attribute to base\n * the seed on a static string.\n */\n deterministicIDSeed: undefined,\n\n /** The object containing configurations specific for flowcharts */\n flowchart: {\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ----------------------------------------------- | ------- | -------- | ------------------ |\n * | diagramPadding | Amount of padding around the diagram as a whole | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n *\n * The amount of padding around the diagram as a whole so that embedded diagrams have margins,\n * expressed in pixels\n *\n * Default value: 8\n */\n diagramPadding: 8,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ---------- | -------------------------------------------------------------------------------------------- | ------- | -------- | ----------- |\n * | htmlLabels | Flag for setting whether or not a html tag should be used for rendering labels on the edges. | boolean | Required | true, false |\n *\n * **Notes:** Default value: true.\n */\n htmlLabels: true,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | --------------------------------------------------- | ------- | -------- | ------------------- |\n * | nodeSpacing | Defines the spacing between nodes on the same level | Integer | Required | Any positive Number |\n *\n * **Notes:**\n *\n * Pertains to horizontal spacing for TB (top to bottom) or BT (bottom to top) graphs, and the\n * vertical spacing for LR as well as RL graphs.**\n *\n * Default value: 50\n */\n nodeSpacing: 50,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------------------------------------------------- | ------- | -------- | ------------------- |\n * | rankSpacing | Defines the spacing between nodes on different levels | Integer | Required | Any Positive Number |\n *\n * **Notes**:\n *\n * Pertains to vertical spacing for TB (top to bottom) or BT (bottom to top), and the horizontal\n * spacing for LR as well as RL graphs.\n *\n * Default value 50\n */\n rankSpacing: 50,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | -------------------------------------------------- | ------ | -------- | ----------------------------- |\n * | curve | Defines how mermaid renders curves for flowcharts. | string | Required | 'basis', 'linear', 'cardinal' |\n *\n * **Notes:**\n *\n * Default Value: 'basis'\n */\n curve: 'basis',\n // Only used in new experimental rendering\n // represents the padding between the labels and the shape\n padding: 15,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See notes | boolean | 4 | true, false |\n *\n * **Notes:**\n *\n * When this flag is set the height and width is set to 100% and is then scaling with the\n * available space if not the absolute space required is used.\n *\n * Default value: true\n */\n useMaxWidth: true,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ----------- | ------- | -------- | ----------------------- |\n * | defaultRenderer | See notes | boolean | 4 | dagre-d3, dagre-wrapper |\n *\n * **Notes:**\n *\n * Decides which rendering engine that is to be used for the rendering. Legal values are:\n * dagre-d3 dagre-wrapper - wrapper for dagre implemented in mermaid\n *\n * Default value: 'dagre-d3'\n */\n defaultRenderer: 'dagre-d3',\n },\n\n /** The object containing configurations specific for sequence diagrams */\n sequence: {\n hideUnusedParticipants: false,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ---------------------------- | ------- | -------- | ------------------ |\n * | activationWidth | Width of the activation rect | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value :10\n */\n activationWidth: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ---------------------------------------------------- | ------- | -------- | ------------------ |\n * | diagramMarginX | Margin to the right and left of the sequence diagram | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 50\n */\n diagramMarginX: 50,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ------------------------------------------------- | ------- | -------- | ------------------ |\n * | diagramMarginY | Margin to the over and under the sequence diagram | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 10\n */\n diagramMarginY: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | --------------------- | ------- | -------- | ------------------ |\n * | actorMargin | Margin between actors | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 50\n */\n actorMargin: 50,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | -------------------- | ------- | -------- | ------------------ |\n * | width | Width of actor boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 150\n */\n width: 150,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | --------------------- | ------- | -------- | ------------------ |\n * | height | Height of actor boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 65\n */\n height: 65,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ------------------------ | ------- | -------- | ------------------ |\n * | boxMargin | Margin around loop boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 10\n */\n boxMargin: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------- | -------------------------------------------- | ------- | -------- | ------------------ |\n * | boxTextMargin | Margin around the text in loop/alt/opt boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 5\n */\n boxTextMargin: 5,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ---------- | ------------------- | ------- | -------- | ------------------ |\n * | noteMargin | margin around notes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 10\n */\n noteMargin: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------- | ---------------------- | ------- | -------- | ------------------ |\n * | messageMargin | Space between messages | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 35\n */\n messageMargin: 35,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------ | --------------------------- | ------ | -------- | ------------------------- |\n * | messageAlign | Multiline message alignment | string | Required | 'left', 'center', 'right' |\n *\n * **Notes:** Default value: 'center'\n */\n messageAlign: 'center',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------ | --------------------------- | ------- | -------- | ----------- |\n * | mirrorActors | Mirror actors under diagram | boolean | Required | true, false |\n *\n * **Notes:** Default value: true\n */\n mirrorActors: true,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ---------- | ----------------------------------------------------------------------- | ------- | -------- | ----------- |\n * | forceMenus | forces actor popup menus to always be visible (to support E2E testing). | Boolean | Required | True, False |\n *\n * **Notes:**\n *\n * Default value: false.\n */\n forceMenus: false,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ------------------------------------------ | ------- | -------- | ------------------ |\n * | bottomMarginAdj | Prolongs the edge of the diagram downwards | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n *\n * Depending on css styling this might need adjustment.\n *\n * Default value: 1\n */\n bottomMarginAdj: 1,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See Notes | boolean | Required | true, false |\n *\n * **Notes:** When this flag is set to true, the height and width is set to 100% and is then\n * scaling with the available space. If set to false, the absolute space required is used.\n *\n * Default value: true\n */\n useMaxWidth: true,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ------------------------------------ | ------- | -------- | ----------- |\n * | rightAngles | display curve arrows as right angles | boolean | Required | true, false |\n *\n * **Notes:**\n *\n * This will display arrows that start and begin at the same node as right angles, rather than a curve\n *\n * Default value: false\n */\n rightAngles: false,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------------- | ------------------------------- | ------- | -------- | ----------- |\n * | showSequenceNumbers | This will show the node numbers | boolean | Required | true, false |\n *\n * **Notes:** Default value: false\n */\n showSequenceNumbers: false,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------- | -------------------------------------------------- | ------- | -------- | ------------------ |\n * | actorFontSize | This sets the font size of the actor's description | Integer | Require | Any Positive Value |\n *\n * **Notes:** **Default value 14**..\n */\n actorFontSize: 14,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ---------------------------------------------------- | ------ | -------- | --------------------------- |\n * | actorFontFamily | This sets the font family of the actor's description | string | Required | Any Possible CSS FontFamily |\n *\n * **Notes:** Default value: \"'Open Sans\", sans-serif'\n */\n actorFontFamily: '\"Open Sans\", sans-serif',\n\n /**\n * This sets the font weight of the actor's description\n *\n * **Notes:** Default value: 400.\n */\n actorFontWeight: 400,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------ | ----------------------------------------------- | ------- | -------- | ------------------ |\n * | noteFontSize | This sets the font size of actor-attached notes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 14\n */\n noteFontSize: 14,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | -------------------------------------------------- | ------ | -------- | --------------------------- |\n * | noteFontFamily | This sets the font family of actor-attached notes. | string | Required | Any Possible CSS FontFamily |\n *\n * **Notes:** Default value: ''\"trebuchet ms\", verdana, arial, sans-serif'\n */\n noteFontFamily: '\"trebuchet ms\", verdana, arial, sans-serif',\n\n /**\n * This sets the font weight of the note's description\n *\n * **Notes:** Default value: 400\n */\n noteFontWeight: 400,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ---------------------------------------------------- | ------ | -------- | ------------------------- |\n * | noteAlign | This sets the text alignment of actor-attached notes | string | required | 'left', 'center', 'right' |\n *\n * **Notes:** Default value: 'center'\n */\n noteAlign: 'center',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ----------------------------------------- | ------- | -------- | ------------------- |\n * | messageFontSize | This sets the font size of actor messages | Integer | Required | Any Positive Number |\n *\n * **Notes:** Default value: 16\n */\n messageFontSize: 16,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------------- | ------------------------------------------- | ------ | -------- | --------------------------- |\n * | messageFontFamily | This sets the font family of actor messages | string | Required | Any Possible CSS FontFamily |\n *\n * **Notes:** Default value: '\"trebuchet ms\", verdana, arial, sans-serif'\n */\n messageFontFamily: '\"trebuchet ms\", verdana, arial, sans-serif',\n\n /**\n * This sets the font weight of the message's description\n *\n * **Notes:** Default value: 400.\n */\n messageFontWeight: 400,\n\n /**\n * This sets the auto-wrap state for the diagram\n *\n * **Notes:** Default value: false.\n */\n wrap: false,\n\n /**\n * This sets the auto-wrap padding for the diagram (sides only)\n *\n * **Notes:** Default value: 0.\n */\n wrapPadding: 10,\n\n /**\n * This sets the width of the loop-box (loop, alt, opt, par)\n *\n * **Notes:** Default value: 50.\n */\n labelBoxWidth: 50,\n\n /**\n * This sets the height of the loop-box (loop, alt, opt, par)\n *\n * **Notes:** Default value: 20.\n */\n labelBoxHeight: 20,\n\n messageFont: function () {\n return {\n fontFamily: this.messageFontFamily,\n fontSize: this.messageFontSize,\n fontWeight: this.messageFontWeight,\n };\n },\n noteFont: function () {\n return {\n fontFamily: this.noteFontFamily,\n fontSize: this.noteFontSize,\n fontWeight: this.noteFontWeight,\n };\n },\n actorFont: function () {\n return {\n fontFamily: this.actorFontFamily,\n fontSize: this.actorFontSize,\n fontWeight: this.actorFontWeight,\n };\n },\n },\n\n /** The object containing configurations specific for gantt diagrams */\n gantt: {\n /**\n * ### titleTopMargin\n *\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ---------------------------------------------- | ------- | -------- | ------------------ |\n * | titleTopMargin | Margin top for the text over the gantt diagram | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 25\n */\n titleTopMargin: 25,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ----------------------------------- | ------- | -------- | ------------------ |\n * | barHeight | The height of the bars in the graph | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 20\n */\n barHeight: 20,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ---------------------------------------------------------------- | ------- | -------- | ------------------ |\n * | barGap | The margin between the different activities in the gantt diagram | Integer | Optional | Any Positive Value |\n *\n * **Notes:** Default value: 4\n */\n barGap: 4,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ---------- | -------------------------------------------------------------------------- | ------- | -------- | ------------------ |\n * | topPadding | Margin between title and gantt diagram and between axis and gantt diagram. | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 50\n */\n topPadding: 50,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------ | ----------------------------------------------------------------------- | ------- | -------- | ------------------ |\n * | rightPadding | The space allocated for the section name to the right of the activities | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 75\n */\n rightPadding: 75,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ---------------------------------------------------------------------- | ------- | -------- | ------------------ |\n * | leftPadding | The space allocated for the section name to the left of the activities | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 75\n */\n leftPadding: 75,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------------- | -------------------------------------------- | ------- | -------- | ------------------ |\n * | gridLineStartPadding | Vertical starting position of the grid lines | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 35\n */\n gridLineStartPadding: 35,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ----------- | ------- | -------- | ------------------ |\n * | fontSize | Font size | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 11\n */\n fontSize: 11,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ---------------------- | ------- | -------- | ------------------ |\n * | sectionFontSize | Font size for sections | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 11\n */\n sectionFontSize: 11,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------------- | ---------------------------------------- | ------- | -------- | ------------------ |\n * | numberSectionStyles | The number of alternating section styles | Integer | 4 | Any Positive Value |\n *\n * **Notes:** Default value: 4\n */\n numberSectionStyles: 4,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ---------- | --------------------------- | ---- | -------- | ---------------- |\n * | axisFormat | Datetime format of the axis | 3 | Required | Date in yy-mm-dd |\n *\n * **Notes:**\n *\n * This might need adjustment to match your locale and preferences\n *\n * Default value: '%Y-%m-%d'.\n */\n axisFormat: '%Y-%m-%d',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See notes | boolean | 4 | true, false |\n *\n * **Notes:**\n *\n * When this flag is set the height and width is set to 100% and is then scaling with the\n * available space if not the absolute space required is used.\n *\n * Default value: true\n */\n useMaxWidth: true,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ----------- | ------- | -------- | ----------- |\n * | topAxis | See notes | Boolean | 4 | True, False |\n *\n * **Notes:** when this flag is set date labels will be added to the top of the chart\n *\n * **Default value false**.\n */\n topAxis: false,\n\n useWidth: undefined,\n },\n\n /** The object containing configurations specific for journey diagrams */\n journey: {\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ---------------------------------------------------- | ------- | -------- | ------------------ |\n * | diagramMarginX | Margin to the right and left of the sequence diagram | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 50\n */\n diagramMarginX: 50,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | -------------------------------------------------- | ------- | -------- | ------------------ |\n * | diagramMarginY | Margin to the over and under the sequence diagram. | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 10\n */\n diagramMarginY: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | --------------------- | ------- | -------- | ------------------ |\n * | actorMargin | Margin between actors | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 50\n */\n leftMargin: 150,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | -------------------- | ------- | -------- | ------------------ |\n * | width | Width of actor boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 150\n */\n width: 150,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | --------------------- | ------- | -------- | ------------------ |\n * | height | Height of actor boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 65\n */\n height: 50,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ------------------------ | ------- | -------- | ------------------ |\n * | boxMargin | Margin around loop boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 10\n */\n boxMargin: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------- | -------------------------------------------- | ------- | -------- | ------------------ |\n * | boxTextMargin | Margin around the text in loop/alt/opt boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 5\n */\n boxTextMargin: 5,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ---------- | ------------------- | ------- | -------- | ------------------ |\n * | noteMargin | Margin around notes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 10\n */\n noteMargin: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------- | ----------------------- | ------- | -------- | ------------------ |\n * | messageMargin | Space between messages. | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n *\n * Space between messages.\n *\n * Default value: 35\n */\n messageMargin: 35,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------ | --------------------------- | ---- | -------- | ------------------------- |\n * | messageAlign | Multiline message alignment | 3 | 4 | 'left', 'center', 'right' |\n *\n * **Notes:** Default value: 'center'\n */\n messageAlign: 'center',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ------------------------------------------ | ------- | -------- | ------------------ |\n * | bottomMarginAdj | Prolongs the edge of the diagram downwards | Integer | 4 | Any Positive Value |\n *\n * **Notes:**\n *\n * Depending on css styling this might need adjustment.\n *\n * Default value: 1\n */\n bottomMarginAdj: 1,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See notes | boolean | 4 | true, false |\n *\n * **Notes:**\n *\n * When this flag is set the height and width is set to 100% and is then scaling with the\n * available space if not the absolute space required is used.\n *\n * Default value: true\n */\n useMaxWidth: true,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | --------------------------------- | ---- | -------- | ----------- |\n * | rightAngles | Curved Arrows become Right Angles | 3 | 4 | true, false |\n *\n * **Notes:**\n *\n * This will display arrows that start and begin at the same node as right angles, rather than a curves\n *\n * Default value: false\n */\n rightAngles: false,\n taskFontSize: 14,\n taskFontFamily: '\"Open Sans\", sans-serif',\n taskMargin: 50,\n // width of activation box\n activationWidth: 10,\n\n // text placement as: tspan | fo | old only text as before\n textPlacement: 'fo',\n actorColours: ['#8FBC8F', '#7CFC00', '#00FFFF', '#20B2AA', '#B0E0E6', '#FFFFE0'],\n\n sectionFills: ['#191970', '#8B008B', '#4B0082', '#2F4F4F', '#800000', '#8B4513', '#00008B'],\n sectionColours: ['#fff'],\n },\n class: {\n arrowMarkerAbsolute: false,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See notes | boolean | 4 | true, false |\n *\n * **Notes:**\n *\n * When this flag is set the height and width is set to 100% and is then scaling with the\n * available space if not the absolute space required is used.\n *\n * Default value: true\n */\n useMaxWidth: true,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ----------- | ------- | -------- | ----------------------- |\n * | defaultRenderer | See notes | boolean | 4 | dagre-d3, dagre-wrapper |\n *\n * **Notes**:\n *\n * Decides which rendering engine that is to be used for the rendering. Legal values are:\n * dagre-d3 dagre-wrapper - wrapper for dagre implemented in mermaid\n *\n * Default value: 'dagre-d3'\n */\n defaultRenderer: 'dagre-wrapper',\n },\n state: {\n dividerMargin: 10,\n sizeUnit: 5,\n padding: 8,\n textHeight: 10,\n titleShift: -15,\n noteMargin: 10,\n forkWidth: 70,\n forkHeight: 7,\n // Used\n miniPadding: 2,\n // Font size factor, this is used to guess the width of the edges labels before rendering by dagre\n // layout. This might need updating if/when switching font\n fontSizeFactor: 5.02,\n fontSize: 24,\n labelHeight: 16,\n edgeLengthFactor: '20',\n compositTitleSize: 35,\n radius: 5,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See notes | boolean | 4 | true, false |\n *\n * **Notes:**\n *\n * When this flag is set the height and width is set to 100% and is then scaling with the\n * available space if not the absolute space required is used.\n *\n * Default value: true\n */\n useMaxWidth: true,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ----------- | ------- | -------- | ----------------------- |\n * | defaultRenderer | See notes | boolean | 4 | dagre-d3, dagre-wrapper |\n *\n * **Notes:**\n *\n * Decides which rendering engine that is to be used for the rendering. Legal values are:\n * dagre-d3 dagre-wrapper - wrapper for dagre implemented in mermaid\n *\n * Default value: 'dagre-d3'\n */\n defaultRenderer: 'dagre-wrapper',\n },\n\n /** The object containing configurations specific for entity relationship diagrams */\n er: {\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ----------------------------------------------- | ------- | -------- | ------------------ |\n * | diagramPadding | Amount of padding around the diagram as a whole | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n *\n * The amount of padding around the diagram as a whole so that embedded diagrams have margins,\n * expressed in pixels\n *\n * Default value: 20\n */\n diagramPadding: 20,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ---------------------------------------- | ------ | -------- | ---------------------- |\n * | layoutDirection | Directional bias for layout of entities. | string | Required | \"TB\", \"BT\", \"LR\", \"RL\" |\n *\n * **Notes:**\n *\n * 'TB' for Top-Bottom, 'BT'for Bottom-Top, 'LR' for Left-Right, or 'RL' for Right to Left.\n *\n * T = top, B = bottom, L = left, and R = right.\n *\n * Default value: 'TB'\n */\n layoutDirection: 'TB',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ---------------------------------- | ------- | -------- | ------------------ |\n * | minEntityWidth | The minimum width of an entity box | Integer | Required | Any Positive Value |\n *\n * **Notes:** Expressed in pixels. Default value: 100\n */\n minEntityWidth: 100,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ----------------------------------- | ------- | -------- | ------------------ |\n * | minEntityHeight | The minimum height of an entity box | Integer | 4 | Any Positive Value |\n *\n * **Notes:** Expressed in pixels Default value: 75\n */\n minEntityHeight: 75,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------- | ----------------------------------------------------------- | ------- | -------- | ------------------ |\n * | entityPadding | Minimum internal padding betweentext in box and box borders | Integer | 4 | Any Positive Value |\n *\n * **Notes:**\n *\n * The minimum internal padding betweentext in an entity box and the enclosing box borders,\n * expressed in pixels.\n *\n * Default value: 15\n */\n entityPadding: 15,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ----------------------------------- | ------ | -------- | -------------------- |\n * | stroke | Stroke color of box edges and lines | string | 4 | Any recognized color |\n *\n * **Notes:** Default value: 'gray'\n */\n stroke: 'gray',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | -------------------------- | ------ | -------- | -------------------- |\n * | fill | Fill color of entity boxes | string | 4 | Any recognized color |\n *\n * **Notes:** Default value: 'honeydew'\n */\n fill: 'honeydew',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ------------------- | ------- | -------- | ------------------ |\n * | fontSize | Font Size in pixels | Integer | | Any Positive Value |\n *\n * **Notes:**\n *\n * Font size (expressed as an integer representing a number of pixels) Default value: 12\n */\n fontSize: 12,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See Notes | boolean | Required | true, false |\n *\n * **Notes:**\n *\n * When this flag is set to true, the diagram width is locked to 100% and scaled based on\n * available space. If set to false, the diagram reserves its absolute width.\n *\n * Default value: true\n */\n useMaxWidth: true,\n },\n\n /** The object containing configurations specific for pie diagrams */\n pie: {\n useWidth: undefined,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See Notes | boolean | Required | true, false |\n *\n * **Notes:**\n *\n * When this flag is set to true, the diagram width is locked to 100% and scaled based on\n * available space. If set to false, the diagram reserves its absolute width.\n *\n * Default value: true\n */\n useMaxWidth: true,\n },\n\n /** The object containing configurations specific for req diagrams */\n requirement: {\n useWidth: undefined,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See Notes | boolean | Required | true, false |\n *\n * **Notes:**\n *\n * When this flag is set to true, the diagram width is locked to 100% and scaled based on\n * available space. If set to false, the diagram reserves its absolute width.\n *\n * Default value: true\n */\n useMaxWidth: true,\n\n rect_fill: '#f9f9f9',\n text_color: '#333',\n rect_border_size: '0.5px',\n rect_border_color: '#bbb',\n rect_min_width: 200,\n rect_min_height: 200,\n fontSize: 14,\n rect_padding: 10,\n line_height: 20,\n },\n gitGraph: {\n diagramPadding: 8,\n nodeLabel: {\n width: 75,\n height: 100,\n x: -25,\n y: 0,\n },\n mainBranchName: 'main',\n mainBranchOrder: 0,\n showCommitLabel: true,\n showBranches: true,\n },\n};\n\nconfig.class.arrowMarkerAbsolute = config.arrowMarkerAbsolute;\nconfig.gitGraph.arrowMarkerAbsolute = config.arrowMarkerAbsolute;\n\nconst keyify = (obj, prefix = '') =>\n Object.keys(obj).reduce((res, el) => {\n if (Array.isArray(obj[el])) {\n return res;\n } else if (typeof obj[el] === 'object' && obj[el] !== null) {\n return [...res, prefix + el, ...keyify(obj[el], '')];\n }\n return [...res, prefix + el];\n }, []);\n\nexport const configKeys = keyify(config, '');\nexport default config;\n","import { sanitizeUrl } from '@braintree/sanitize-url';\nimport {\n curveBasis,\n curveBasisClosed,\n curveBasisOpen,\n curveLinear,\n curveLinearClosed,\n curveMonotoneX,\n curveMonotoneY,\n curveNatural,\n curveStep,\n curveStepAfter,\n curveStepBefore,\n select,\n} from 'd3';\nimport common from './diagrams/common/common';\nimport { configKeys } from './defaultConfig';\nimport { log } from './logger';\n\n// Effectively an enum of the supported curve types, accessible by name\nconst d3CurveTypes = {\n curveBasis: curveBasis,\n curveBasisClosed: curveBasisClosed,\n curveBasisOpen: curveBasisOpen,\n curveLinear: curveLinear,\n curveLinearClosed: curveLinearClosed,\n curveMonotoneX: curveMonotoneX,\n curveMonotoneY: curveMonotoneY,\n curveNatural: curveNatural,\n curveStep: curveStep,\n curveStepAfter: curveStepAfter,\n curveStepBefore: curveStepBefore,\n};\nconst directive =\n /[%]{2}[{]\\s*(?:(?:(\\w+)\\s*:|(\\w+))\\s*(?:(?:(\\w+))|((?:(?![}][%]{2}).|\\r?\\n)*))?\\s*)(?:[}][%]{2})?/gi;\nconst directiveWithoutOpen =\n /\\s*(?:(?:(\\w+)(?=:):|(\\w+))\\s*(?:(?:(\\w+))|((?:(?![}][%]{2}).|\\r?\\n)*))?\\s*)(?:[}][%]{2})?/gi;\nconst anyComment = /\\s*%%.*\\n/gm;\n\n/**\n * @function detectInit Detects the init config object from the text\n *\n * ```mermaid\n * %%{init: {\"theme\": \"debug\", \"logLevel\": 1 }}%%\n * graph LR\n * a-->b\n * b-->c\n * c-->d\n * d-->e\n * e-->f\n * f-->g\n * g-->h\n * ```\n *\n * Or\n *\n * ```mermaid\n * %%{initialize: {\"theme\": \"dark\", logLevel: \"debug\" }}%%\n * graph LR\n * a-->b\n * b-->c\n * c-->d\n * d-->e\n * e-->f\n * f-->g\n * g-->h\n * ```\n * @param {string} text The text defining the graph\n * @param {any} cnf\n * @returns {object} The json object representing the init passed to mermaid.initialize()\n */\nexport const detectInit = function (text, cnf) {\n let inits = detectDirective(text, /(?:init\\b)|(?:initialize\\b)/);\n let results = {};\n\n if (Array.isArray(inits)) {\n let args = inits.map((init) => init.args);\n directiveSanitizer(args);\n\n results = assignWithDepth(results, [...args]);\n } else {\n results = inits.args;\n }\n if (results) {\n let type = detectType(text, cnf);\n ['config'].forEach((prop) => {\n if (typeof results[prop] !== 'undefined') {\n if (type === 'flowchart-v2') {\n type = 'flowchart';\n }\n results[type] = results[prop];\n delete results[prop];\n }\n });\n }\n\n // Todo: refactor this, these results are never used\n return results;\n};\n\n/**\n * @function detectDirective Detects the directive from the text. Text can be single line or\n * multiline. If type is null or omitted the first directive encountered in text will be returned\n *\n * ```mermaid\n * graph LR\n * %%{somedirective}%%\n * a-->b\n * b-->c\n * c-->d\n * d-->e\n * e-->f\n * f-->g\n * g-->h\n * ```\n * @param {string} text The text defining the graph\n * @param {string | RegExp} type The directive to return (default: null)\n * @returns {object | Array} An object or Array representing the directive(s): { type: string, args:\n * object|null } matched by the input type if a single directive was found, that directive object\n * will be returned.\n */\nexport const detectDirective = function (text, type = null) {\n try {\n const commentWithoutDirectives = new RegExp(\n `[%]{2}(?![{]${directiveWithoutOpen.source})(?=[}][%]{2}).*\\n`,\n 'ig'\n );\n text = text.trim().replace(commentWithoutDirectives, '').replace(/'/gm, '\"');\n log.debug(\n `Detecting diagram directive${type !== null ? ' type:' + type : ''} based on the text:${text}`\n );\n let match,\n result = [];\n while ((match = directive.exec(text)) !== null) {\n // This is necessary to avoid infinite loops with zero-width matches\n if (match.index === directive.lastIndex) {\n directive.lastIndex++;\n }\n if (\n (match && !type) ||\n (type && match[1] && match[1].match(type)) ||\n (type && match[2] && match[2].match(type))\n ) {\n let type = match[1] ? match[1] : match[2];\n let args = match[3] ? match[3].trim() : match[4] ? JSON.parse(match[4].trim()) : null;\n result.push({ type, args });\n }\n }\n if (result.length === 0) {\n result.push({ type: text, args: null });\n }\n\n return result.length === 1 ? result[0] : result;\n } catch (error) {\n log.error(\n `ERROR: ${error.message} - Unable to parse directive\n ${type !== null ? ' type:' + type : ''} based on the text:${text}`\n );\n return { type: null, args: null };\n }\n};\n\n/**\n * @function detectType Detects the type of the graph text. Takes into consideration the possible\n * existence of an %%init directive\n *\n * ```mermaid\n * %%{initialize: {\"startOnLoad\": true, logLevel: \"fatal\" }}%%\n * graph LR\n * a-->b\n * b-->c\n * c-->d\n * d-->e\n * e-->f\n * f-->g\n * g-->h\n * ```\n * @param {string} text The text defining the graph\n * @param {{\n * class: { defaultRenderer: string } | undefined;\n * state: { defaultRenderer: string } | undefined;\n * flowchart: { defaultRenderer: string } | undefined;\n * }} [cnf]\n * @returns {string} A graph definition key\n */\nexport const detectType = function (text, cnf) {\n text = text.replace(directive, '').replace(anyComment, '\\n');\n if (text.match(/^\\s*sequenceDiagram/)) {\n return 'sequence';\n }\n\n if (text.match(/^\\s*gantt/)) {\n return 'gantt';\n }\n if (text.match(/^\\s*classDiagram-v2/)) {\n return 'classDiagram';\n }\n if (text.match(/^\\s*classDiagram/)) {\n if (cnf && cnf.class && cnf.class.defaultRenderer === 'dagre-wrapper') return 'classDiagram';\n return 'class';\n }\n\n if (text.match(/^\\s*stateDiagram-v2/)) {\n return 'stateDiagram';\n }\n\n if (text.match(/^\\s*stateDiagram/)) {\n if (cnf && cnf.class && cnf.state.defaultRenderer === 'dagre-wrapper') return 'stateDiagram';\n return 'state';\n }\n\n if (text.match(/^\\s*gitGraph/)) {\n return 'gitGraph';\n }\n if (text.match(/^\\s*flowchart/)) {\n return 'flowchart-v2';\n }\n\n if (text.match(/^\\s*info/)) {\n return 'info';\n }\n if (text.match(/^\\s*pie/)) {\n return 'pie';\n }\n\n if (text.match(/^\\s*erDiagram/)) {\n return 'er';\n }\n\n if (text.match(/^\\s*journey/)) {\n return 'journey';\n }\n\n if (text.match(/^\\s*requirement/) || text.match(/^\\s*requirementDiagram/)) {\n return 'requirement';\n }\n if (cnf && cnf.flowchart && cnf.flowchart.defaultRenderer === 'dagre-wrapper')\n return 'flowchart-v2';\n\n return 'flowchart';\n};\n\n/**\n * Caches results of functions based on input\n *\n * @param {Function} fn Function to run\n * @param {Function} resolver Function that resolves to an ID given arguments the `fn` takes\n * @returns {Function} An optimized caching function\n */\nconst memoize = (fn, resolver) => {\n let cache = {};\n return (...args) => {\n let n = resolver ? resolver.apply(this, args) : args[0];\n if (n in cache) {\n return cache[n];\n } else {\n let result = fn(...args);\n cache[n] = result;\n return result;\n }\n };\n};\n\n/**\n * @function isSubstringInArray Detects whether a substring in present in a given array\n * @param {string} str The substring to detect\n * @param {Array} arr The array to search\n * @returns {number} The array index containing the substring or -1 if not present\n */\nexport const isSubstringInArray = function (str, arr) {\n for (let i = 0; i < arr.length; i++) {\n if (arr[i].match(str)) return i;\n }\n return -1;\n};\n\n/**\n * Returns a d3 curve given a curve name\n *\n * @param {string | undefined} interpolate The interpolation name\n * @param {any} defaultCurve The default curve to return\n * @returns {import('d3-shape').CurveFactory} The curve factory to use\n */\nexport const interpolateToCurve = (interpolate, defaultCurve) => {\n if (!interpolate) {\n return defaultCurve;\n }\n const curveName = `curve${interpolate.charAt(0).toUpperCase() + interpolate.slice(1)}`;\n return d3CurveTypes[curveName] || defaultCurve;\n};\n\n/**\n * Formats a URL string\n *\n * @param {string} linkStr String of the URL\n * @param {{ securityLevel: string }} config Configuration passed to MermaidJS\n * @returns {string | undefined} The formatted URL\n */\nexport const formatUrl = (linkStr, config) => {\n let url = linkStr.trim();\n\n if (url) {\n if (config.securityLevel !== 'loose') {\n return sanitizeUrl(url);\n }\n\n return url;\n }\n};\n\n/**\n * Runs a function\n *\n * @param {string} functionName A dot seperated path to the function relative to the `window`\n * @param {...any} params Parameters to pass to the function\n */\nexport const runFunc = (functionName, ...params) => {\n const arrPaths = functionName.split('.');\n\n const len = arrPaths.length - 1;\n const fnName = arrPaths[len];\n\n let obj = window;\n for (let i = 0; i < len; i++) {\n obj = obj[arrPaths[i]];\n if (!obj) return;\n }\n\n obj[fnName](...params);\n};\n\n/**\n * @typedef {object} Point A (x, y) point\n * @property {number} x The x value\n * @property {number} y The y value\n */\n\n/**\n * Finds the distance between two points using the Distance Formula\n *\n * @param {Point} p1 The first point\n * @param {Point} p2 The second point\n * @returns {number} The distance\n */\nconst distance = (p1, p2) =>\n p1 && p2 ? Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2)) : 0;\n\n/**\n * @param {Point[]} points List of points\n * @returns {Point}\n * @todo Give this a description\n */\nconst traverseEdge = (points) => {\n let prevPoint;\n let totalDistance = 0;\n\n points.forEach((point) => {\n totalDistance += distance(point, prevPoint);\n prevPoint = point;\n });\n\n // Traverse half of total distance along points\n let remainingDistance = totalDistance / 2;\n let center = undefined;\n prevPoint = undefined;\n points.forEach((point) => {\n if (prevPoint && !center) {\n const vectorDistance = distance(point, prevPoint);\n if (vectorDistance < remainingDistance) {\n remainingDistance -= vectorDistance;\n } else {\n // The point is remainingDistance from prevPoint in the vector between prevPoint and point\n // Calculate the coordinates\n const distanceRatio = remainingDistance / vectorDistance;\n if (distanceRatio <= 0) center = prevPoint;\n if (distanceRatio >= 1) center = { x: point.x, y: point.y };\n if (distanceRatio > 0 && distanceRatio < 1) {\n center = {\n x: (1 - distanceRatio) * prevPoint.x + distanceRatio * point.x,\n y: (1 - distanceRatio) * prevPoint.y + distanceRatio * point.y,\n };\n }\n }\n }\n prevPoint = point;\n });\n return center;\n};\n\n/**\n * Alias for `traverseEdge`\n *\n * @param {Point[]} points List of points\n * @returns {Point} Return result of `transverseEdge`\n */\nconst calcLabelPosition = (points) => {\n return traverseEdge(points);\n};\n\nconst calcCardinalityPosition = (isRelationTypePresent, points, initialPosition) => {\n let prevPoint;\n let totalDistance = 0; // eslint-disable-line\n log.info('our points', points);\n if (points[0] !== initialPosition) {\n points = points.reverse();\n }\n points.forEach((point) => {\n totalDistance += distance(point, prevPoint);\n prevPoint = point;\n });\n\n // Traverse only 25 total distance along points to find cardinality point\n const distanceToCardinalityPoint = 25;\n\n let remainingDistance = distanceToCardinalityPoint;\n let center;\n prevPoint = undefined;\n points.forEach((point) => {\n if (prevPoint && !center) {\n const vectorDistance = distance(point, prevPoint);\n if (vectorDistance < remainingDistance) {\n remainingDistance -= vectorDistance;\n } else {\n // The point is remainingDistance from prevPoint in the vector between prevPoint and point\n // Calculate the coordinates\n const distanceRatio = remainingDistance / vectorDistance;\n if (distanceRatio <= 0) center = prevPoint;\n if (distanceRatio >= 1) center = { x: point.x, y: point.y };\n if (distanceRatio > 0 && distanceRatio < 1) {\n center = {\n x: (1 - distanceRatio) * prevPoint.x + distanceRatio * point.x,\n y: (1 - distanceRatio) * prevPoint.y + distanceRatio * point.y,\n };\n }\n }\n }\n prevPoint = point;\n });\n // if relation is present (Arrows will be added), change cardinality point off-set distance (d)\n let d = isRelationTypePresent ? 10 : 5;\n //Calculate Angle for x and y axis\n let angle = Math.atan2(points[0].y - center.y, points[0].x - center.x);\n let cardinalityPosition = { x: 0, y: 0 };\n //Calculation cardinality position using angle, center point on the line/curve but pendicular and with offset-distance\n cardinalityPosition.x = Math.sin(angle) * d + (points[0].x + center.x) / 2;\n cardinalityPosition.y = -Math.cos(angle) * d + (points[0].y + center.y) / 2;\n return cardinalityPosition;\n};\n\n/**\n * Position ['start_left', 'start_right', 'end_left', 'end_right']\n *\n * @param {any} terminalMarkerSize\n * @param {any} position\n * @param {any} _points\n * @returns {any}\n */\nconst calcTerminalLabelPosition = (terminalMarkerSize, position, _points) => {\n // Todo looking to faster cloning method\n let points = JSON.parse(JSON.stringify(_points));\n let prevPoint;\n let totalDistance = 0; // eslint-disable-line\n log.info('our points', points);\n if (position !== 'start_left' && position !== 'start_right') {\n points = points.reverse();\n }\n\n points.forEach((point) => {\n totalDistance += distance(point, prevPoint);\n prevPoint = point;\n });\n\n // Traverse only 25 total distance along points to find cardinality point\n const distanceToCardinalityPoint = 25 + terminalMarkerSize;\n\n let remainingDistance = distanceToCardinalityPoint;\n let center;\n prevPoint = undefined;\n points.forEach((point) => {\n if (prevPoint && !center) {\n const vectorDistance = distance(point, prevPoint);\n if (vectorDistance < remainingDistance) {\n remainingDistance -= vectorDistance;\n } else {\n // The point is remainingDistance from prevPoint in the vector between prevPoint and point\n // Calculate the coordinates\n const distanceRatio = remainingDistance / vectorDistance;\n if (distanceRatio <= 0) center = prevPoint;\n if (distanceRatio >= 1) center = { x: point.x, y: point.y };\n if (distanceRatio > 0 && distanceRatio < 1) {\n center = {\n x: (1 - distanceRatio) * prevPoint.x + distanceRatio * point.x,\n y: (1 - distanceRatio) * prevPoint.y + distanceRatio * point.y,\n };\n }\n }\n }\n prevPoint = point;\n });\n // if relation is present (Arrows will be added), change cardinality point off-set distance (d)\n let d = 10 + terminalMarkerSize * 0.5;\n //Calculate Angle for x and y axis\n let angle = Math.atan2(points[0].y - center.y, points[0].x - center.x);\n\n let cardinalityPosition = { x: 0, y: 0 };\n\n //Calculation cardinality position using angle, center point on the line/curve but pendicular and with offset-distance\n\n cardinalityPosition.x = Math.sin(angle) * d + (points[0].x + center.x) / 2;\n cardinalityPosition.y = -Math.cos(angle) * d + (points[0].y + center.y) / 2;\n if (position === 'start_left') {\n cardinalityPosition.x = Math.sin(angle + Math.PI) * d + (points[0].x + center.x) / 2;\n cardinalityPosition.y = -Math.cos(angle + Math.PI) * d + (points[0].y + center.y) / 2;\n }\n if (position === 'end_right') {\n cardinalityPosition.x = Math.sin(angle - Math.PI) * d + (points[0].x + center.x) / 2 - 5;\n cardinalityPosition.y = -Math.cos(angle - Math.PI) * d + (points[0].y + center.y) / 2 - 5;\n }\n if (position === 'end_left') {\n cardinalityPosition.x = Math.sin(angle) * d + (points[0].x + center.x) / 2 - 5;\n cardinalityPosition.y = -Math.cos(angle) * d + (points[0].y + center.y) / 2 - 5;\n }\n return cardinalityPosition;\n};\n\n/**\n * Gets styles from an array of declarations\n *\n * @param {string[]} arr Declarations\n * @returns {{ style: string; labelStyle: string }} The styles grouped as strings\n */\nexport const getStylesFromArray = (arr) => {\n let style = '';\n let labelStyle = '';\n\n for (let i = 0; i < arr.length; i++) {\n if (typeof arr[i] !== 'undefined') {\n // add text properties to label style definition\n if (arr[i].startsWith('color:') || arr[i].startsWith('text-align:')) {\n labelStyle = labelStyle + arr[i] + ';';\n } else {\n style = style + arr[i] + ';';\n }\n }\n }\n\n return { style: style, labelStyle: labelStyle };\n};\n\nlet cnt = 0;\nexport const generateId = () => {\n cnt++;\n return 'id-' + Math.random().toString(36).substr(2, 12) + '-' + cnt;\n};\n\n/**\n * @param {any} length\n * @returns {any}\n */\nfunction makeid(length) {\n var result = '';\n var characters = '0123456789abcdef';\n var charactersLength = characters.length;\n for (var i = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n }\n return result;\n}\n\nexport const random = (options) => {\n return makeid(options.length);\n};\n\n/**\n * @function assignWithDepth Extends the functionality of {@link ObjectConstructor.assign} with the\n * ability to merge arbitrary-depth objects For each key in src with path `k` (recursively)\n * performs an Object.assign(dst[`k`], src[`k`]) with a slight change from the typical handling of\n * undefined for dst[`k`]: instead of raising an error, dst[`k`] is auto-initialized to {} and\n * effectively merged with src[`k`]<p> Additionally, dissimilar types will not clobber unless the\n * config.clobber parameter === true. Example:\n *\n * ```js\n * let config_0 = { foo: { bar: 'bar' }, bar: 'foo' };\n * let config_1 = { foo: 'foo', bar: 'bar' };\n * let result = assignWithDepth(config_0, config_1);\n * console.log(result);\n * //-> result: { foo: { bar: 'bar' }, bar: 'bar' }\n * ```\n *\n * Traditional Object.assign would have clobbered foo in config_0 with foo in config_1. If src is a\n * destructured array of objects and dst is not an array, assignWithDepth will apply each element\n * of src to dst in order.\n * @param dst\n * @param src\n * @param config\n * @param dst\n * @param src\n * @param config\n * @param dst\n * @param src\n * @param config\n * @param {any} dst - The destination of the merge\n * @param {any} src - The source object(s) to merge into destination\n * @param {{ depth: number; clobber: boolean }} [config={ depth: 2, clobber: false }] - Depth: depth\n * to traverse within src and dst for merging - clobber: should dissimilar types clobber (default:\n * { depth: 2, clobber: false }). Default is `{ depth: 2, clobber: false }`\n * @returns {any}\n */\nexport const assignWithDepth = function (dst, src, config) {\n const { depth, clobber } = Object.assign({ depth: 2, clobber: false }, config);\n if (Array.isArray(src) && !Array.isArray(dst)) {\n src.forEach((s) => assignWithDepth(dst, s, config));\n return dst;\n } else if (Array.isArray(src) && Array.isArray(dst)) {\n src.forEach((s) => {\n if (dst.indexOf(s) === -1) {\n dst.push(s);\n }\n });\n return dst;\n }\n if (typeof dst === 'undefined' || depth <= 0) {\n if (dst !== undefined && dst !== null && typeof dst === 'object' && typeof src === 'object') {\n return Object.assign(dst, src);\n } else {\n return src;\n }\n }\n if (typeof src !== 'undefined' && typeof dst === 'object' && typeof src === 'object') {\n Object.keys(src).forEach((key) => {\n if (\n typeof src[key] === 'object' &&\n (dst[key] === undefined || typeof dst[key] === 'object')\n ) {\n if (dst[key] === undefined) {\n dst[key] = Array.isArray(src[key]) ? [] : {};\n }\n dst[key] = assignWithDepth(dst[key], src[key], { depth: depth - 1, clobber });\n } else if (clobber || (typeof dst[key] !== 'object' && typeof src[key] !== 'object')) {\n dst[key] = src[key];\n }\n });\n }\n return dst;\n};\n\nexport const getTextObj = function () {\n return {\n x: 0,\n y: 0,\n fill: undefined,\n anchor: 'start',\n style: '#666',\n width: 100,\n height: 100,\n textMargin: 0,\n rx: 0,\n ry: 0,\n valign: undefined,\n };\n};\n\n/**\n * Adds text to an element\n *\n * @param {SVGElement} elem Element to add text to\n * @param {{\n * text: string;\n * x: number;\n * y: number;\n * anchor: 'start' | 'middle' | 'end';\n * fontFamily: string;\n * fontSize: string | number;\n * fontWeight: string | number;\n * fill: string;\n * class: string | undefined;\n * textMargin: number;\n * }} textData\n * @returns {SVGTextElement} Text element with given styling and content\n */\nexport const drawSimpleText = function (elem, textData) {\n // Remove and ignore br:s\n const nText = textData.text.replace(common.lineBreakRegex, ' ');\n\n const textElem = elem.append('text');\n textElem.attr('x', textData.x);\n textElem.attr('y', textData.y);\n textElem.style('text-anchor', textData.anchor);\n textElem.style('font-family', textData.fontFamily);\n textElem.style('font-size', textData.fontSize);\n textElem.style('font-weight', textData.fontWeight);\n textElem.attr('fill', textData.fill);\n if (typeof textData.class !== 'undefined') {\n textElem.attr('class', textData.class);\n }\n\n const span = textElem.append('tspan');\n span.attr('x', textData.x + textData.textMargin * 2);\n span.attr('fill', textData.fill);\n span.text(nText);\n\n return textElem;\n};\n\nexport const wrapLabel = memoize(\n (label, maxWidth, config) => {\n if (!label) {\n return label;\n }\n config = Object.assign(\n { fontSize: 12, fontWeight: 400, fontFamily: 'Arial', joinWith: '<br/>' },\n config\n );\n if (common.lineBreakRegex.test(label)) {\n return label;\n }\n const words = label.split(' ');\n const completedLines = [];\n let nextLine = '';\n words.forEach((word, index) => {\n const wordLength = calculateTextWidth(`${word} `, config);\n const nextLineLength = calculateTextWidth(nextLine, config);\n if (wordLength > maxWidth) {\n const { hyphenatedStrings, remainingWord } = breakString(word, maxWidth, '-', config);\n completedLines.push(nextLine, ...hyphenatedStrings);\n nextLine = remainingWord;\n } else if (nextLineLength + wordLength >= maxWidth) {\n completedLines.push(nextLine);\n nextLine = word;\n } else {\n nextLine = [nextLine, word].filter(Boolean).join(' ');\n }\n const currentWord = index + 1;\n const isLastWord = currentWord === words.length;\n if (isLastWord) {\n completedLines.push(nextLine);\n }\n });\n return completedLines.filter((line) => line !== '').join(config.joinWith);\n },\n (label, maxWidth, config) =>\n `${label}-${maxWidth}-${config.fontSize}-${config.fontWeight}-${config.fontFamily}-${config.joinWith}`\n);\n\nconst breakString = memoize(\n (word, maxWidth, hyphenCharacter = '-', config) => {\n config = Object.assign(\n { fontSize: 12, fontWeight: 400, fontFamily: 'Arial', margin: 0 },\n config\n );\n const characters = word.split('');\n const lines = [];\n let currentLine = '';\n characters.forEach((character, index) => {\n const nextLine = `${currentLine}${character}`;\n const lineWidth = calculateTextWidth(nextLine, config);\n if (lineWidth >= maxWidth) {\n const currentCharacter = index + 1;\n const isLastLine = characters.length === currentCharacter;\n const hyphenatedNextLine = `${nextLine}${hyphenCharacter}`;\n lines.push(isLastLine ? nextLine : hyphenatedNextLine);\n currentLine = '';\n } else {\n currentLine = nextLine;\n }\n });\n return { hyphenatedStrings: lines, remainingWord: currentLine };\n },\n (word, maxWidth, hyphenCharacter = '-', config) =>\n `${word}-${maxWidth}-${hyphenCharacter}-${config.fontSize}-${config.fontWeight}-${config.fontFamily}`\n);\n\n/**\n * This calculates the text's height, taking into account the wrap breaks and both the statically\n * configured height, width, and the length of the text (in pixels).\n *\n * If the wrapped text text has greater height, we extend the height, so it's value won't overflow.\n *\n * @param {any} text The text to measure\n * @param {any} config - The config for fontSize, fontFamily, and fontWeight all impacting the resulting size\n * @returns {any} - The height for the given text\n */\nexport const calculateTextHeight = function (text, config) {\n config = Object.assign(\n { fontSize: 12, fontWeight: 400, fontFamily: 'Arial', margin: 15 },\n config\n );\n return calculateTextDimensions(text, config).height;\n};\n\n/**\n * This calculates the width of the given text, font size and family.\n *\n * @param {any} text - The text to calculate the width of\n * @param {any} config - The config for fontSize, fontFamily, and fontWeight all impacting the resulting size\n * @returns {any} - The width for the given text\n */\nexport const calculateTextWidth = function (text, config) {\n config = Object.assign({ fontSize: 12, fontWeight: 400, fontFamily: 'Arial' }, config);\n return calculateTextDimensions(text, config).width;\n};\n\n/**\n * This calculates the dimensions of the given text, font size, font family, font weight, and margins.\n *\n * @param {any} text - The text to calculate the width of\n * @param {any} config - The config for fontSize, fontFamily, fontWeight, and margin all impacting\n * the resulting size\n * @returns - The width for the given text\n */\nexport const calculateTextDimensions = memoize(\n function (text, config) {\n config = Object.assign({ fontSize: 12, fontWeight: 400, fontFamily: 'Arial' }, config);\n const { fontSize, fontFamily, fontWeight } = config;\n if (!text) {\n return { width: 0, height: 0 };\n }\n\n // We can't really know if the user supplied font family will render on the user agent;\n // thus, we'll take the max width between the user supplied font family, and a default\n // of sans-serif.\n const fontFamilies = ['sans-serif', fontFamily];\n const lines = text.split(common.lineBreakRegex);\n let dims = [];\n\n const body = select('body');\n // We don't want to leak DOM elements - if a removal operation isn't available\n // for any reason, do not continue.\n if (!body.remove) {\n return { width: 0, height: 0, lineHeight: 0 };\n }\n\n const g = body.append('svg');\n\n for (let fontFamily of fontFamilies) {\n let cheight = 0;\n let dim = { width: 0, height: 0, lineHeight: 0 };\n for (let line of lines) {\n const textObj = getTextObj();\n textObj.text = line;\n const textElem = drawSimpleText(g, textObj)\n .style('font-size', fontSize)\n .style('font-weight', fontWeight)\n .style('font-family', fontFamily);\n\n let bBox = (textElem._groups || textElem)[0][0].getBBox();\n dim.width = Math.round(Math.max(dim.width, bBox.width));\n cheight = Math.round(bBox.height);\n dim.height += cheight;\n dim.lineHeight = Math.round(Math.max(dim.lineHeight, cheight));\n }\n dims.push(dim);\n }\n\n g.remove();\n\n let index =\n isNaN(dims[1].height) ||\n isNaN(dims[1].width) ||\n isNaN(dims[1].lineHeight) ||\n (dims[0].height > dims[1].height &&\n dims[0].width > dims[1].width &&\n dims[0].lineHeight > dims[1].lineHeight)\n ? 0\n : 1;\n return dims[index];\n },\n (text, config) => `${text}-${config.fontSize}-${config.fontWeight}-${config.fontFamily}`\n);\n\n/**\n * Applys d3 attributes\n *\n * @param {any} d3Elem D3 Element to apply the attributes onto\n * @param {[string, string][]} attrs Object.keys equivalent format of key to value mapping of attributes\n */\nconst d3Attrs = function (d3Elem, attrs) {\n for (let attr of attrs) {\n d3Elem.attr(attr[0], attr[1]);\n }\n};\n\n/**\n * Gives attributes for an SVG's size given arguments\n *\n * @param {number} height The height of the SVG\n * @param {number} width The width of the SVG\n * @param {boolean} useMaxWidth Whether or not to use max-width and set width to 100%\n * @returns {Map<'height' | 'width' | 'style', string>} Attributes for the SVG\n */\nexport const calculateSvgSizeAttrs = function (height, width, useMaxWidth) {\n let attrs = new Map();\n attrs.set('height', height);\n if (useMaxWidth) {\n attrs.set('width', '100%');\n attrs.set('style', `max-width: ${width}px;`);\n } else {\n attrs.set('width', width);\n }\n return attrs;\n};\n\n/**\n * Applies attributes from `calculateSvgSizeAttrs`\n *\n * @param {SVGSVGElement} svgElem The SVG Element to configure\n * @param {number} height The height of the SVG\n * @param {number} width The width of the SVG\n * @param {boolean} useMaxWidth Whether or not to use max-width and set width to 100%\n */\nexport const configureSvgSize = function (svgElem, height, width, useMaxWidth) {\n const attrs = calculateSvgSizeAttrs(height, width, useMaxWidth);\n d3Attrs(svgElem, attrs);\n};\n\nexport const initIdGeneratior = class iterator {\n constructor(deterministic, seed) {\n this.deterministic = deterministic;\n this.seed = seed;\n\n this.count = seed ? seed.length : 0;\n }\n\n next() {\n if (!this.deterministic) return Date.now();\n\n return this.count++;\n }\n};\n\nlet decoder;\n\n/**\n * Decodes HTML, source: {@link https://github.com/shrpne/entity-decode/blob/v2.0.1/browser.js}\n *\n * @param {string} html HTML as a string\n * @returns Unescaped HTML\n */\nexport const entityDecode = function (html) {\n decoder = decoder || document.createElement('div');\n // Escape HTML before decoding for HTML Entities\n html = escape(html).replace(/%26/g, '&').replace(/%23/g, '#').replace(/%3B/g, ';');\n // decoding\n decoder.innerHTML = html;\n return unescape(decoder.textContent);\n};\n\n/**\n * Sanitizes directive objects\n *\n * @param {object} args Directive's JSON\n */\nexport const directiveSanitizer = (args) => {\n log.debug('directiveSanitizer called with', args);\n if (typeof args === 'object') {\n // check for array\n if (args.length) {\n args.forEach((arg) => directiveSanitizer(arg));\n } else {\n // This is an object\n Object.keys(args).forEach((key) => {\n log.debug('Checking key', key);\n if (key.indexOf('__') === 0) {\n log.debug('sanitize deleting __ option', key);\n delete args[key];\n }\n\n if (key.indexOf('proto') >= 0) {\n log.debug('sanitize deleting proto option', key);\n delete args[key];\n }\n\n if (key.indexOf('constr') >= 0) {\n log.debug('sanitize deleting constr option', key);\n delete args[key];\n }\n\n if (key.indexOf('themeCSS') >= 0) {\n log.debug('sanitizing themeCss option');\n args[key] = sanitizeCss(args[key]);\n }\n if (configKeys.indexOf(key) < 0) {\n log.debug('sanitize deleting option', key);\n delete args[key];\n } else {\n if (typeof args[key] === 'object') {\n log.debug('sanitize deleting object', key);\n directiveSanitizer(args[key]);\n }\n }\n });\n }\n }\n};\nexport const sanitizeCss = (str) => {\n const stringsearch = 'o';\n const startCnt = (str.match(/\\{/g) || []).length;\n const endCnt = (str.match(/\\}/g) || []).length;\n if (startCnt !== endCnt) {\n return '{ /* ERROR: Unbalanced CSS */ }';\n }\n // Todo add more checks here\n return str;\n};\n\nexport default {\n assignWithDepth,\n wrapLabel,\n calculateTextHeight,\n calculateTextWidth,\n calculateTextDimensions,\n calculateSvgSizeAttrs,\n configureSvgSize,\n detectInit,\n detectDirective,\n detectType,\n isSubstringInArray,\n interpolateToCurve,\n calcLabelPosition,\n calcCardinalityPosition,\n calcTerminalLabelPosition,\n formatUrl,\n getStylesFromArray,\n generateId,\n random,\n memoize,\n runFunc,\n entityDecode,\n initIdGeneratior,\n directiveSanitizer,\n sanitizeCss,\n};\n","import { assignWithDepth } from './utils';\nimport { log } from './logger';\nimport theme from './themes';\nimport config from './defaultConfig';\n\nexport const defaultConfig = Object.freeze(config);\n\nlet siteConfig = assignWithDepth({}, defaultConfig);\nlet configFromInitialize;\nlet directives = [];\nlet currentConfig = assignWithDepth({}, defaultConfig);\n\nexport const updateCurrentConfig = (siteCfg, _directives) => {\n // start with config beeing the siteConfig\n let cfg = assignWithDepth({}, siteCfg);\n // let sCfg = assignWithDepth(defaultConfig, siteConfigDelta);\n\n // Join directives\n let sumOfDirectives = {};\n for (let i = 0; i < _directives.length; i++) {\n const d = _directives[i];\n sanitize(d);\n\n // Apply the data from the directive where the the overrides the themeVaraibles\n sumOfDirectives = assignWithDepth(sumOfDirectives, d);\n }\n\n cfg = assignWithDepth(cfg, sumOfDirectives);\n\n if (sumOfDirectives.theme && theme[sumOfDirectives.theme]) {\n const tmpConfigFromInitialize = assignWithDepth({}, configFromInitialize);\n const themeVariables = assignWithDepth(\n tmpConfigFromInitialize.themeVariables || {},\n sumOfDirectives.themeVariables\n );\n cfg.themeVariables = theme[cfg.theme].getThemeVariables(themeVariables);\n }\n\n currentConfig = cfg;\n return cfg;\n};\n\n/**\n * ## setSiteConfig\n *\n * | Function | Description | Type | Values |\n * | ------------- | ------------------------------------- | ----------- | --------------------------------------- |\n * | setSiteConfig | Sets the siteConfig to desired values | Put Request | Any Values, except ones in secure array |\n *\n * **Notes:** Sets the siteConfig. The siteConfig is a protected configuration for repeat use. Calls\n * to reset() will reset the currentConfig to siteConfig. Calls to reset(configApi.defaultConfig)\n * will reset siteConfig and currentConfig to the defaultConfig Note: currentConfig is set in this\n * function _Default value: At default, will mirror Global Config_\n *\n * @param conf - The base currentConfig to use as siteConfig\n * @returns {object} - The siteConfig\n */\nexport const setSiteConfig = (conf) => {\n siteConfig = assignWithDepth({}, defaultConfig);\n siteConfig = assignWithDepth(siteConfig, conf);\n\n if (conf.theme && theme[conf.theme]) {\n siteConfig.themeVariables = theme[conf.theme].getThemeVariables(conf.themeVariables);\n }\n\n currentConfig = updateCurrentConfig(siteConfig, directives);\n return siteConfig;\n};\n\nexport const saveConfigFromInitilize = (conf) => {\n configFromInitialize = assignWithDepth({}, conf);\n};\n\nexport const updateSiteConfig = (conf) => {\n siteConfig = assignWithDepth(siteConfig, conf);\n updateCurrentConfig(siteConfig, directives);\n\n return siteConfig;\n};\n/**\n * ## getSiteConfig\n *\n * | Function | Description | Type | Values |\n * | ------------- | ------------------------------------------------- | ----------- | -------------------------------- |\n * | setSiteConfig | Returns the current siteConfig base configuration | Get Request | Returns Any Values in siteConfig |\n *\n * **Notes**: Returns **any** values in siteConfig.\n *\n * @returns {object} - The siteConfig\n */\nexport const getSiteConfig = () => {\n return assignWithDepth({}, siteConfig);\n};\n/**\n * ## setConfig\n *\n * | Function | Description | Type | Values |\n * | ------------- | ------------------------------------- | ----------- | --------------------------------------- |\n * | setSiteConfig | Sets the siteConfig to desired values | Put Request | Any Values, except ones in secure array |\n *\n * **Notes**: Sets the currentConfig. The parameter conf is sanitized based on the siteConfig.secure\n * keys. Any values found in conf with key found in siteConfig.secure will be replaced with the\n * corresponding siteConfig value.\n *\n * @param {any} conf - The potential currentConfig\n * @returns {any} - The currentConfig merged with the sanitized conf\n */\nexport const setConfig = (conf) => {\n // sanitize(conf);\n // Object.keys(conf).forEach(key => {\n // const manipulator = manipulators[key];\n // conf[key] = manipulator ? manipulator(conf[key]) : conf[key];\n // });\n\n assignWithDepth(currentConfig, conf);\n\n return getConfig();\n};\n\n/**\n * ## getConfig\n *\n * | Function | Description | Type | Return Values |\n * | --------- | ------------------------- | ----------- | ------------------------------ |\n * | getConfig | Obtains the currentConfig | Get Request | Any Values from current Config |\n *\n * **Notes**: Returns **any** the currentConfig\n *\n * @returns {any} - The currentConfig\n */\nexport const getConfig = () => {\n return assignWithDepth({}, currentConfig);\n};\n/**\n * ## sanitize\n *\n * | Function | Description | Type | Values |\n * | -------- | -------------------------------------- | ----------- | ------ |\n * | sanitize | Sets the siteConfig to desired values. | Put Request | None |\n *\n * Ensures options parameter does not attempt to override siteConfig secure keys **Notes**: modifies\n * options in-place\n *\n * @param {any} options - The potential setConfig parameter\n */\nexport const sanitize = (options) => {\n // Checking that options are not in the list of excluded options\n Object.keys(siteConfig.secure).forEach((key) => {\n if (typeof options[siteConfig.secure[key]] !== 'undefined') {\n // DO NOT attempt to print options[siteConfig.secure[key]] within `${}` as a malicious script\n // can exploit the logger's attempt to stringify the value and execute arbitrary code\n log.debug(\n `Denied attempt to modify a secure key ${siteConfig.secure[key]}`,\n options[siteConfig.secure[key]]\n );\n delete options[siteConfig.secure[key]];\n }\n });\n\n // Check that there no attempts of prototype pollution\n Object.keys(options).forEach((key) => {\n if (key.indexOf('__') === 0) {\n delete options[key];\n }\n });\n // Check that there no attempts of xss, there should be no tags at all in the directive\n // blocking data urls as base64 urls can contain svgs with inline script tags\n Object.keys(options).forEach((key) => {\n if (typeof options[key] === 'string') {\n if (\n options[key].indexOf('<') > -1 ||\n options[key].indexOf('>') > -1 ||\n options[key].indexOf('url(data:') > -1\n ) {\n delete options[key];\n }\n }\n if (typeof options[key] === 'object') {\n sanitize(options[key]);\n }\n });\n};\n\n/**\n * Pushes in a directive to the configuration\n *\n * @param {object} directive The directive to push in\n */\nexport const addDirective = (directive) => {\n if (directive.fontFamily) {\n if (!directive.themeVariables) {\n directive.themeVariables = { fontFamily: directive.fontFamily };\n } else {\n if (!directive.themeVariables.fontFamily) {\n directive.themeVariables = { fontFamily: directive.fontFamily };\n }\n }\n }\n directives.push(directive);\n updateCurrentConfig(siteConfig, directives);\n};\n\n/**\n * ## reset\n *\n * | Function | Description | Type | Required | Values |\n * | -------- | ---------------------------- | ----------- | -------- | ------ |\n * | reset | Resets currentConfig to conf | Put Request | Required | None |\n *\n * ## conf\n *\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ------------------------------------------------------------- | ---------- | -------- | -------------------------------------------- |\n * | conf | base set of values, which currentConfig coul be **reset** to. | Dictionary | Required | Any Values, with respect to the secure Array |\n *\n * **Notes**: (default: current siteConfig ) (optional, default `getSiteConfig()`)\n */\nexport const reset = () => {\n // Replace current config with siteConfig\n directives = [];\n updateCurrentConfig(siteConfig, directives);\n};\n","import { sanitizeText as _sanitizeText } from './diagrams/common/common';\nimport { getConfig } from './config';\nlet title = '';\nlet description = '';\nconst sanitizeText = (txt) => _sanitizeText(txt, getConfig());\n\nexport const clear = function () {\n title = '';\n description = '';\n};\n\nexport const setTitle = function (txt) {\n title = sanitizeText(txt).replace(/^\\s+/g, '');\n};\n\nexport const getTitle = function () {\n return title;\n};\n\nexport const setAccDescription = function (txt) {\n description = sanitizeText(txt).replace(/\\n\\s+/g, '\\n');\n};\n\nexport const getAccDescription = function () {\n return description;\n};\n\nexport default {\n setTitle,\n getTitle,\n getAccDescription,\n setAccDescription,\n clear,\n};\n","import { select } from 'd3';\nimport { log } from '../../logger';\nimport * as configApi from '../../config';\nimport common from '../common/common';\nimport utils from '../../utils';\nimport mermaidAPI from '../../mermaidAPI';\nimport {\n setTitle,\n getTitle,\n getAccDescription,\n setAccDescription,\n clear as commonClear,\n} from '../../commonDb';\n\nconst MERMAID_DOM_ID_PREFIX = 'classid-';\n\nlet relations = [];\nlet classes = {};\nlet classCounter = 0;\n\nlet funs = [];\n\nconst sanitizeText = (txt) => common.sanitizeText(txt, configApi.getConfig());\n\nexport const parseDirective = function (statement, context, type) {\n mermaidAPI.parseDirective(this, statement, context, type);\n};\n\nconst splitClassNameAndType = function (id) {\n let genericType = '';\n let className = id;\n\n if (id.indexOf('~') > 0) {\n let split = id.split('~');\n className = split[0];\n\n genericType = common.sanitizeText(split[1], configApi.getConfig());\n }\n\n return { className: className, type: genericType };\n};\n\n/**\n * Function called by parser when a node definition has been found.\n *\n * @param id\n * @public\n */\nexport const addClass = function (id) {\n let classId = splitClassNameAndType(id);\n // Only add class if not exists\n if (typeof classes[classId.className] !== 'undefined') return;\n\n classes[classId.className] = {\n id: classId.className,\n type: classId.type,\n cssClasses: [],\n methods: [],\n members: [],\n annotations: [],\n domId: MERMAID_DOM_ID_PREFIX + classId.className + '-' + classCounter,\n };\n\n classCounter++;\n};\n\n/**\n * Function to lookup domId from id in the graph definition.\n *\n * @param id\n * @public\n */\nexport const lookUpDomId = function (id) {\n const classKeys = Object.keys(classes);\n for (let i = 0; i < classKeys.length; i++) {\n if (classes[classKeys[i]].id === id) {\n return classes[classKeys[i]].domId;\n }\n }\n};\n\nexport const clear = function () {\n relations = [];\n classes = {};\n funs = [];\n funs.push(setupToolTips);\n commonClear();\n};\n\nexport const getClass = function (id) {\n return classes[id];\n};\nexport const getClasses = function () {\n return classes;\n};\n\nexport const getRelations = function () {\n return relations;\n};\n\nexport const addRelation = function (relation) {\n log.debug('Adding relation: ' + JSON.stringify(relation));\n addClass(relation.id1);\n addClass(relation.id2);\n\n relation.id1 = splitClassNameAndType(relation.id1).className;\n relation.id2 = splitClassNameAndType(relation.id2).className;\n\n relation.relationTitle1 = common.sanitizeText(\n relation.relationTitle1.trim(),\n configApi.getConfig()\n );\n\n relation.relationTitle2 = common.sanitizeText(\n relation.relationTitle2.trim(),\n configApi.getConfig()\n );\n\n relations.push(relation);\n};\n\n/**\n * Adds an annotation to the specified class Annotations mark special properties of the given type\n * (like 'interface' or 'service')\n *\n * @param className The class name\n * @param annotation The name of the annotation without any brackets\n * @public\n */\nexport const addAnnotation = function (className, annotation) {\n const validatedClassName = splitClassNameAndType(className).className;\n classes[validatedClassName].annotations.push(annotation);\n};\n\n/**\n * Adds a member to the specified class\n *\n * @param className The class name\n * @param member The full name of the member. If the member is enclosed in <<brackets>> it is\n * treated as an annotation If the member is ending with a closing bracket ) it is treated as a\n * method Otherwise the member will be treated as a normal property\n * @public\n */\nexport const addMember = function (className, member) {\n console.log(className, member);\n const validatedClassName = splitClassNameAndType(className).className;\n const theClass = classes[validatedClassName];\n\n if (typeof member === 'string') {\n // Member can contain white spaces, we trim them out\n const memberString = member.trim();\n\n if (memberString.startsWith('<<') && memberString.endsWith('>>')) {\n // Remove leading and trailing brackets\n // theClass.annotations.push(memberString.substring(2, memberString.length - 2));\n theClass.annotations.push(sanitizeText(memberString.substring(2, memberString.length - 2)));\n } else if (memberString.indexOf(')') > 0) {\n theClass.methods.push(sanitizeText(memberString));\n } else if (memberString) {\n theClass.members.push(sanitizeText(memberString));\n }\n }\n};\n\nexport const addMembers = function (className, members) {\n if (Array.isArray(members)) {\n members.reverse();\n members.forEach((member) => addMember(className, member));\n }\n};\n\nexport const cleanupLabel = function (label) {\n if (label.substring(0, 1) === ':') {\n return common.sanitizeText(label.substr(1).trim(), configApi.getConfig());\n } else {\n return sanitizeText(label.trim());\n }\n};\n\n/**\n * Called by parser when a special node is found, e.g. a clickable element.\n *\n * @param ids Comma separated list of ids\n * @param className Class to add\n */\nexport const setCssClass = function (ids, className) {\n ids.split(',').forEach(function (_id) {\n let id = _id;\n if (_id[0].match(/\\d/)) id = MERMAID_DOM_ID_PREFIX + id;\n if (typeof classes[id] !== 'undefined') {\n classes[id].cssClasses.push(className);\n }\n });\n};\n\n/**\n * Called by parser when a tooltip is found, e.g. a clickable element.\n *\n * @param ids Comma separated list of ids\n * @param tooltip Tooltip to add\n */\nconst setTooltip = function (ids, tooltip) {\n const config = configApi.getConfig();\n ids.split(',').forEach(function (id) {\n if (typeof tooltip !== 'undefined') {\n classes[id].tooltip = common.sanitizeText(tooltip, config);\n }\n });\n};\n\n/**\n * Called by parser when a link is found. Adds the URL to the vertex data.\n *\n * @param ids Comma separated list of ids\n * @param linkStr URL to create a link for\n * @param target Target of the link, _blank by default as originally defined in the svgDraw.js file\n */\nexport const setLink = function (ids, linkStr, target) {\n const config = configApi.getConfig();\n ids.split(',').forEach(function (_id) {\n let id = _id;\n if (_id[0].match(/\\d/)) id = MERMAID_DOM_ID_PREFIX + id;\n if (typeof classes[id] !== 'undefined') {\n classes[id].link = utils.formatUrl(linkStr, config);\n if (config.securityLevel === 'sandbox') {\n classes[id].linkTarget = '_top';\n } else if (typeof target === 'string') {\n classes[id].linkTarget = sanitizeText(target);\n } else {\n classes[id].linkTarget = '_blank';\n }\n }\n });\n setCssClass(ids, 'clickable');\n};\n\n/**\n * Called by parser when a click definition is found. Registers an event handler.\n *\n * @param ids Comma separated list of ids\n * @param functionName Function to be called on click\n * @param functionArgs Function args the function should be called with\n */\nexport const setClickEvent = function (ids, functionName, functionArgs) {\n ids.split(',').forEach(function (id) {\n setClickFunc(id, functionName, functionArgs);\n classes[id].haveCallback = true;\n });\n setCssClass(ids, 'clickable');\n};\n\nconst setClickFunc = function (domId, functionName, functionArgs) {\n const config = configApi.getConfig();\n let id = domId;\n let elemId = lookUpDomId(id);\n\n if (config.securityLevel !== 'loose') {\n return;\n }\n if (typeof functionName === 'undefined') {\n return;\n }\n if (typeof classes[id] !== 'undefined') {\n let argList = [];\n if (typeof functionArgs === 'string') {\n /* Splits functionArgs by ',', ignoring all ',' in double quoted strings */\n argList = functionArgs.split(/,(?=(?:(?:[^\"]*\"){2})*[^\"]*$)/);\n for (let i = 0; i < argList.length; i++) {\n let item = argList[i].trim();\n /* Removes all double quotes at the start and end of an argument */\n /* This preserves all starting and ending whitespace inside */\n if (item.charAt(0) === '\"' && item.charAt(item.length - 1) === '\"') {\n item = item.substr(1, item.length - 2);\n }\n argList[i] = item;\n }\n }\n\n /* if no arguments passed into callback, default to passing in id */\n if (argList.length === 0) {\n argList.push(elemId);\n }\n\n funs.push(function () {\n const elem = document.querySelector(`[id=\"${elemId}\"]`);\n if (elem !== null) {\n elem.addEventListener(\n 'click',\n function () {\n utils.runFunc(functionName, ...argList);\n },\n false\n );\n }\n });\n }\n};\n\nexport const bindFunctions = function (element) {\n funs.forEach(function (fun) {\n fun(element);\n });\n};\n\nexport const lineType = {\n LINE: 0,\n DOTTED_LINE: 1,\n};\n\nexport const relationType = {\n AGGREGATION: 0,\n EXTENSION: 1,\n COMPOSITION: 2,\n DEPENDENCY: 3,\n};\n\nconst setupToolTips = function (element) {\n let tooltipElem = select('.mermaidTooltip');\n if ((tooltipElem._groups || tooltipElem)[0][0] === null) {\n tooltipElem = select('body').append('div').attr('class', 'mermaidTooltip').style('opacity', 0);\n }\n\n const svg = select(element).select('svg');\n\n const nodes = svg.selectAll('g.node');\n nodes\n .on('mouseover', function () {\n const el = select(this);\n const title = el.attr('title');\n // Dont try to draw a tooltip if no data is provided\n if (title === null) {\n return;\n }\n const rect = this.getBoundingClientRect();\n\n tooltipElem.transition().duration(200).style('opacity', '.9');\n tooltipElem\n .text(el.attr('title'))\n .style('left', window.scrollX + rect.left + (rect.right - rect.left) / 2 + 'px')\n .style('top', window.scrollY + rect.top - 14 + document.body.scrollTop + 'px');\n el.classed('hover', true);\n })\n .on('mouseout', function () {\n tooltipElem.transition().duration(500).style('opacity', 0);\n const el = select(this);\n el.classed('hover', false);\n });\n};\nfuns.push(setupToolTips);\n\nlet direction = 'TB';\nconst getDirection = () => direction;\nconst setDirection = (dir) => {\n direction = dir;\n};\n\nexport default {\n parseDirective,\n setTitle,\n getTitle,\n getAccDescription,\n setAccDescription,\n getConfig: () => configApi.getConfig().class,\n addClass,\n bindFunctions,\n clear,\n getClass,\n getClasses,\n addAnnotation,\n getRelations,\n addRelation,\n getDirection,\n setDirection,\n addMember,\n addMembers,\n cleanupLabel,\n lineType,\n relationType,\n setClickEvent,\n setCssClass,\n setLink,\n setTooltip,\n lookUpDomId,\n};\n","import { line, curveBasis } from 'd3';\nimport { lookUpDomId, relationType } from './classDb';\nimport utils from '../../utils';\nimport { log } from '../../logger';\n\nlet edgeCount = 0;\nexport const drawEdge = function (elem, path, relation, conf) {\n const getRelationType = function (type) {\n switch (type) {\n case relationType.AGGREGATION:\n return 'aggregation';\n case relationType.EXTENSION:\n return 'extension';\n case relationType.COMPOSITION:\n return 'composition';\n case relationType.DEPENDENCY:\n return 'dependency';\n }\n };\n\n path.points = path.points.filter((p) => !Number.isNaN(p.y));\n\n // The data for our line\n const lineData = path.points;\n\n // This is the accessor function we talked about above\n const lineFunction = line()\n .x(function (d) {\n return d.x;\n })\n .y(function (d) {\n return d.y;\n })\n .curve(curveBasis);\n\n const svgPath = elem\n .append('path')\n .attr('d', lineFunction(lineData))\n .attr('id', 'edge' + edgeCount)\n .attr('class', 'relation');\n let url = '';\n if (conf.arrowMarkerAbsolute) {\n url =\n window.location.protocol +\n '//' +\n window.location.host +\n window.location.pathname +\n window.location.search;\n url = url.replace(/\\(/g, '\\\\(');\n url = url.replace(/\\)/g, '\\\\)');\n }\n\n if (relation.relation.lineType == 1) {\n svgPath.attr('class', 'relation dashed-line');\n }\n if (relation.relation.type1 !== 'none') {\n svgPath.attr(\n 'marker-start',\n 'url(' + url + '#' + getRelationType(relation.relation.type1) + 'Start' + ')'\n );\n }\n if (relation.relation.type2 !== 'none') {\n svgPath.attr(\n 'marker-end',\n 'url(' + url + '#' + getRelationType(relation.relation.type2) + 'End' + ')'\n );\n }\n\n let x, y;\n const l = path.points.length;\n // Calculate Label position\n let labelPosition = utils.calcLabelPosition(path.points);\n x = labelPosition.x;\n y = labelPosition.y;\n\n let p1_card_x, p1_card_y;\n let p2_card_x, p2_card_y;\n\n if (l % 2 !== 0 && l > 1) {\n let cardinality_1_point = utils.calcCardinalityPosition(\n relation.relation.type1 !== 'none',\n path.points,\n path.points[0]\n );\n let cardinality_2_point = utils.calcCardinalityPosition(\n relation.relation.type2 !== 'none',\n path.points,\n path.points[l - 1]\n );\n\n log.debug('cardinality_1_point ' + JSON.stringify(cardinality_1_point));\n log.debug('cardinality_2_point ' + JSON.stringify(cardinality_2_point));\n\n p1_card_x = cardinality_1_point.x;\n p1_card_y = cardinality_1_point.y;\n p2_card_x = cardinality_2_point.x;\n p2_card_y = cardinality_2_point.y;\n }\n\n if (typeof relation.title !== 'undefined') {\n const g = elem.append('g').attr('class', 'classLabel');\n const label = g\n .append('text')\n .attr('class', 'label')\n .attr('x', x)\n .attr('y', y)\n .attr('fill', 'red')\n .attr('text-anchor', 'middle')\n .text(relation.title);\n\n window.label = label;\n const bounds = label.node().getBBox();\n\n g.insert('rect', ':first-child')\n .attr('class', 'box')\n .attr('x', bounds.x - conf.padding / 2)\n .attr('y', bounds.y - conf.padding / 2)\n .attr('width', bounds.width + conf.padding)\n .attr('height', bounds.height + conf.padding);\n }\n\n log.info('Rendering relation ' + JSON.stringify(relation));\n if (typeof relation.relationTitle1 !== 'undefined' && relation.relationTitle1 !== 'none') {\n const g = elem.append('g').attr('class', 'cardinality');\n g.append('text')\n .attr('class', 'type1')\n .attr('x', p1_card_x)\n .attr('y', p1_card_y)\n .attr('fill', 'black')\n .attr('font-size', '6')\n .text(relation.relationTitle1);\n }\n if (typeof relation.relationTitle2 !== 'undefined' && relation.relationTitle2 !== 'none') {\n const g = elem.append('g').attr('class', 'cardinality');\n g.append('text')\n .attr('class', 'type2')\n .attr('x', p2_card_x)\n .attr('y', p2_card_y)\n .attr('fill', 'black')\n .attr('font-size', '6')\n .text(relation.relationTitle2);\n }\n\n edgeCount++;\n};\n\n/**\n * Renders a class diagram\n *\n * @param {SVGSVGElement} elem The element to draw it into\n * @param classDef\n * @param conf\n * @todo Add more information in the JSDOC here\n */\nexport const drawClass = function (elem, classDef, conf) {\n log.info('Rendering class ' + classDef);\n\n const id = classDef.id;\n const classInfo = {\n id: id,\n label: classDef.id,\n width: 0,\n height: 0,\n };\n\n // add class group\n const g = elem.append('g').attr('id', lookUpDomId(id)).attr('class', 'classGroup');\n\n // add title\n let title;\n if (classDef.link) {\n title = g\n .append('svg:a')\n .attr('xlink:href', classDef.link)\n .attr('target', classDef.linkTarget)\n .append('text')\n .attr('y', conf.textHeight + conf.padding)\n .attr('x', 0);\n } else {\n title = g\n .append('text')\n .attr('y', conf.textHeight + conf.padding)\n .attr('x', 0);\n }\n\n // add annotations\n let isFirst = true;\n classDef.annotations.forEach(function (member) {\n const titleText2 = title.append('tspan').text('«' + member + '»');\n if (!isFirst) titleText2.attr('dy', conf.textHeight);\n isFirst = false;\n });\n\n let classTitleString = classDef.id;\n\n if (classDef.type !== undefined && classDef.type !== '') {\n classTitleString += '<' + classDef.type + '>';\n }\n\n const classTitle = title.append('tspan').text(classTitleString).attr('class', 'title');\n\n // If class has annotations the title needs to have an offset of the text height\n if (!isFirst) classTitle.attr('dy', conf.textHeight);\n\n const titleHeight = title.node().getBBox().height;\n\n const membersLine = g\n .append('line') // text label for the x axis\n .attr('x1', 0)\n .attr('y1', conf.padding + titleHeight + conf.dividerMargin / 2)\n .attr('y2', conf.padding + titleHeight + conf.dividerMargin / 2);\n\n const members = g\n .append('text') // text label for the x axis\n .attr('x', conf.padding)\n .attr('y', titleHeight + conf.dividerMargin + conf.textHeight)\n .attr('fill', 'white')\n .attr('class', 'classText');\n\n isFirst = true;\n classDef.members.forEach(function (member) {\n addTspan(members, member, isFirst, conf);\n isFirst = false;\n });\n\n const membersBox = members.node().getBBox();\n\n const methodsLine = g\n .append('line') // text label for the x axis\n .attr('x1', 0)\n .attr('y1', conf.padding + titleHeight + conf.dividerMargin + membersBox.height)\n .attr('y2', conf.padding + titleHeight + conf.dividerMargin + membersBox.height);\n\n const methods = g\n .append('text') // text label for the x axis\n .attr('x', conf.padding)\n .attr('y', titleHeight + 2 * conf.dividerMargin + membersBox.height + conf.textHeight)\n .attr('fill', 'white')\n .attr('class', 'classText');\n\n isFirst = true;\n\n classDef.methods.forEach(function (method) {\n addTspan(methods, method, isFirst, conf);\n isFirst = false;\n });\n\n const classBox = g.node().getBBox();\n var cssClassStr = ' ';\n\n if (classDef.cssClasses.length > 0) {\n cssClassStr = cssClassStr + classDef.cssClasses.join(' ');\n }\n\n const rect = g\n .insert('rect', ':first-child')\n .attr('x', 0)\n .attr('y', 0)\n .attr('width', classBox.width + 2 * conf.padding)\n .attr('height', classBox.height + conf.padding + 0.5 * conf.dividerMargin)\n .attr('class', cssClassStr);\n\n const rectWidth = rect.node().getBBox().width;\n\n // Center title\n // We subtract the width of each text element from the class box width and divide it by 2\n title.node().childNodes.forEach(function (x) {\n x.setAttribute('x', (rectWidth - x.getBBox().width) / 2);\n });\n\n if (classDef.tooltip) {\n title.insert('title').text(classDef.tooltip);\n }\n\n membersLine.attr('x2', rectWidth);\n methodsLine.attr('x2', rectWidth);\n\n classInfo.width = rectWidth;\n classInfo.height = classBox.height + conf.padding + 0.5 * conf.dividerMargin;\n\n return classInfo;\n};\n\nexport const parseMember = function (text) {\n const fieldRegEx = /^(\\+|-|~|#)?(\\w+)(~\\w+~|\\[\\])?\\s+(\\w+) *(\\*|\\$)?$/;\n const methodRegEx = /^([+|\\-|~|#])?(\\w+) *\\( *(.*)\\) *(\\*|\\$)? *(\\w*[~|[\\]]*\\s*\\w*~?)$/;\n\n let fieldMatch = text.match(fieldRegEx);\n let methodMatch = text.match(methodRegEx);\n\n if (fieldMatch && !methodMatch) {\n return buildFieldDisplay(fieldMatch);\n } else if (methodMatch) {\n return buildMethodDisplay(methodMatch);\n } else {\n return buildLegacyDisplay(text);\n }\n};\n\nconst buildFieldDisplay = function (parsedText) {\n let cssStyle = '';\n let displayText = '';\n\n try {\n let visibility = parsedText[1] ? parsedText[1].trim() : '';\n let fieldType = parsedText[2] ? parsedText[2].trim() : '';\n let genericType = parsedText[3] ? parseGenericTypes(parsedText[3].trim()) : '';\n let fieldName = parsedText[4] ? parsedText[4].trim() : '';\n let classifier = parsedText[5] ? parsedText[5].trim() : '';\n\n displayText = visibility + fieldType + genericType + ' ' + fieldName;\n cssStyle = parseClassifier(classifier);\n } catch (err) {\n displayText = parsedText;\n }\n\n return {\n displayText: displayText,\n cssStyle: cssStyle,\n };\n};\n\nconst buildMethodDisplay = function (parsedText) {\n let cssStyle = '';\n let displayText = '';\n\n try {\n let visibility = parsedText[1] ? parsedText[1].trim() : '';\n let methodName = parsedText[2] ? parsedText[2].trim() : '';\n let parameters = parsedText[3] ? parseGenericTypes(parsedText[3].trim()) : '';\n let classifier = parsedText[4] ? parsedText[4].trim() : '';\n let returnType = parsedText[5] ? ' : ' + parseGenericTypes(parsedText[5]).trim() : '';\n\n displayText = visibility + methodName + '(' + parameters + ')' + returnType;\n cssStyle = parseClassifier(classifier);\n } catch (err) {\n displayText = parsedText;\n }\n\n return {\n displayText: displayText,\n cssStyle: cssStyle,\n };\n};\n\nconst buildLegacyDisplay = function (text) {\n // if for some reason we dont have any match, use old format to parse text\n let displayText = '';\n let cssStyle = '';\n let memberText = '';\n let returnType = '';\n let methodStart = text.indexOf('(');\n let methodEnd = text.indexOf(')');\n\n if (methodStart > 1 && methodEnd > methodStart && methodEnd <= text.length) {\n let visibility = '';\n let methodName = '';\n\n let firstChar = text.substring(0, 1);\n if (firstChar.match(/\\w/)) {\n methodName = text.substring(0, methodStart).trim();\n } else {\n if (firstChar.match(/\\+|-|~|#/)) {\n visibility = firstChar;\n }\n\n methodName = text.substring(1, methodStart).trim();\n }\n\n let parameters = text.substring(methodStart + 1, methodEnd);\n let classifier = text.substring(methodEnd + 1, 1);\n cssStyle = parseClassifier(classifier);\n\n displayText = visibility + methodName + '(' + parseGenericTypes(parameters.trim()) + ')';\n\n if (methodEnd < memberText.length) {\n returnType = text.substring(methodEnd + 2).trim();\n if (returnType !== '') {\n returnType = ' : ' + parseGenericTypes(returnType);\n }\n }\n } else {\n // finally - if all else fails, just send the text back as written (other than parsing for generic types)\n displayText = parseGenericTypes(text);\n }\n\n return {\n displayText: displayText,\n cssStyle: cssStyle,\n };\n};\n\n/**\n * Adds a <tspan> for a member in a diagram\n *\n * @param {SVGElement} textEl The element to append to\n * @param {string} txt The member\n * @param {boolean} isFirst\n * @param {{ padding: string; textHeight: string }} conf The configuration for the member\n */\nconst addTspan = function (textEl, txt, isFirst, conf) {\n let member = parseMember(txt);\n\n const tSpan = textEl.append('tspan').attr('x', conf.padding).text(member.displayText);\n\n if (member.cssStyle !== '') {\n tSpan.attr('style', member.cssStyle);\n }\n\n if (!isFirst) {\n tSpan.attr('dy', conf.textHeight);\n }\n};\n\n/**\n * Makes generics in typescript syntax\n *\n * @example <caption>Array of array of strings in typescript syntax</caption>\n * // returns \"Array<Array<string>>\"\n * parseGenericTypes('Array~Array~string~~');\n *\n * @param {string} text The text to convert\n * @returns {string} The converted string\n */\nconst parseGenericTypes = function (text) {\n let cleanedText = text;\n\n if (text.indexOf('~') != -1) {\n cleanedText = cleanedText.replace('~', '<');\n cleanedText = cleanedText.replace('~', '>');\n\n return parseGenericTypes(cleanedText);\n } else {\n return cleanedText;\n }\n};\n\n/**\n * Gives the styles for a classifier\n *\n * @param {'+' | '-' | '#' | '~' | '*' | '$'} classifier The classifier string\n * @returns {string} Styling for the classifier\n */\nconst parseClassifier = function (classifier) {\n switch (classifier) {\n case '*':\n return 'font-style:italic;';\n case '$':\n return 'text-decoration:underline;';\n default:\n return '';\n }\n};\n\nexport default {\n drawClass,\n drawEdge,\n parseMember,\n};\n","/**\n * This method will add a basic title and description element to a chart. The yy parser will need to\n * respond to getTitle and getAccDescription, where the title is the title element on the chart,\n * which is generally not displayed and the accDescription is the description element on the chart,\n * which is never displayed.\n *\n * The following charts display their title as a visual and accessibility element: gantt\n *\n * @param yy_parser\n * @param svg\n * @param id\n */\nexport default function addSVGAccessibilityFields(yy_parser, svg, id) {\n if (typeof svg.insert === 'undefined') {\n return;\n }\n\n let title_string = yy_parser.getTitle();\n let description = yy_parser.getAccDescription();\n svg.attr('role', 'img').attr('aria-labelledby', 'chart-title-' + id + ' chart-desc-' + id);\n svg\n .insert('desc', ':first-child')\n .attr('id', 'chart-desc-' + id)\n .text(description);\n svg\n .insert('title', ':first-child')\n .attr('id', 'chart-title-' + id)\n .text(title_string);\n}\n","import { select } from 'd3';\nimport dagre from 'dagre';\nimport graphlib from 'graphlib';\nimport { log } from '../../logger';\nimport classDb, { lookUpDomId } from './classDb';\nimport { parser } from './parser/classDiagram';\nimport svgDraw from './svgDraw';\nimport { configureSvgSize } from '../../utils';\nimport { getConfig } from '../../config';\nimport addSVGAccessibilityFields from '../../accessibility';\n\nparser.yy = classDb;\n\nlet idCache = {};\nconst padding = 20;\n\nconst conf = {\n dividerMargin: 10,\n padding: 5,\n textHeight: 10,\n};\n\n/**\n * Gets the ID with the same label as in the cache\n *\n * @param {string} label The label to look for\n * @returns {string} The resulting ID\n */\nconst getGraphId = function (label) {\n const foundEntry = Object.entries(idCache).find((entry) => entry[1].label === label);\n\n if (foundEntry) {\n return foundEntry[0];\n }\n};\n\n/**\n * Setup arrow head and define the marker. The result is appended to the svg.\n *\n * @param {SVGSVGElement} elem The SVG element to append to\n */\nconst insertMarkers = function (elem) {\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'extensionStart')\n .attr('class', 'extension')\n .attr('refX', 0)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 1,7 L18,13 V 1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'extensionEnd')\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 1,1 V 13 L18,7 Z'); // this is actual shape for arrowhead\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'compositionStart')\n .attr('class', 'extension')\n .attr('refX', 0)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'compositionEnd')\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'aggregationStart')\n .attr('class', 'extension')\n .attr('refX', 0)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'aggregationEnd')\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'dependencyStart')\n .attr('class', 'extension')\n .attr('refX', 0)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 5,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'dependencyEnd')\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L14,7 L9,1 Z');\n};\n\n/**\n * Merges the value of `conf` with the passed `cnf`\n *\n * @param {object} cnf Config to merge\n */\nexport const setConf = function (cnf) {\n const keys = Object.keys(cnf);\n\n keys.forEach(function (key) {\n conf[key] = cnf[key];\n });\n};\n\n/**\n * Draws a flowchart in the tag with id: id based on the graph definition in text.\n *\n * @param {string} text\n * @param {string} id\n */\nexport const draw = function (text, id) {\n idCache = {};\n parser.yy.clear();\n parser.parse(text);\n\n log.info('Rendering diagram ' + text);\n\n const securityLevel = getConfig().securityLevel;\n // Handle root and ocument for when rendering in sanbox mode\n let sandboxElement;\n if (securityLevel === 'sandbox') {\n sandboxElement = select('#i' + id);\n }\n const root =\n securityLevel === 'sandbox'\n ? select(sandboxElement.nodes()[0].contentDocument.body)\n : select('body');\n const doc = securityLevel === 'sandbox' ? sandboxElement.nodes()[0].contentDocument : document;\n\n // Fetch the default direction, use TD if none was found\n const diagram = root.select(`[id='${id}']`);\n diagram.attr('xmlns:xlink', 'http://www.w3.org/1999/xlink');\n insertMarkers(diagram);\n\n // Layout graph, Create a new directed graph\n const g = new graphlib.Graph({\n multigraph: true,\n });\n\n // Set an object for the graph label\n g.setGraph({\n isMultiGraph: true,\n });\n\n // Default to assigning a new object as a label for each new edge.\n g.setDefaultEdgeLabel(function () {\n return {};\n });\n\n const classes = classDb.getClasses();\n const keys = Object.keys(classes);\n\n for (let i = 0; i < keys.length; i++) {\n const classDef = classes[keys[i]];\n const node = svgDraw.drawClass(diagram, classDef, conf);\n idCache[node.id] = node;\n\n // Add nodes to the graph. The first argument is the node id. The second is\n // metadata about the node. In this case we're going to add labels to each of\n // our nodes.\n g.setNode(node.id, node);\n\n log.info('Org height: ' + node.height);\n }\n\n const relations = classDb.getRelations();\n relations.forEach(function (relation) {\n log.info(\n 'tjoho' + getGraphId(relation.id1) + getGraphId(relation.id2) + JSON.stringify(relation)\n );\n g.setEdge(\n getGraphId(relation.id1),\n getGraphId(relation.id2),\n {\n relation: relation,\n },\n relation.title || 'DEFAULT'\n );\n });\n\n dagre.layout(g);\n g.nodes().forEach(function (v) {\n if (typeof v !== 'undefined' && typeof g.node(v) !== 'undefined') {\n log.debug('Node ' + v + ': ' + JSON.stringify(g.node(v)));\n root\n .select('#' + lookUpDomId(v))\n .attr(\n 'transform',\n 'translate(' +\n (g.node(v).x - g.node(v).width / 2) +\n ',' +\n (g.node(v).y - g.node(v).height / 2) +\n ' )'\n );\n }\n });\n\n g.edges().forEach(function (e) {\n if (typeof e !== 'undefined' && typeof g.edge(e) !== 'undefined') {\n log.debug('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(g.edge(e)));\n svgDraw.drawEdge(diagram, g.edge(e), g.edge(e).relation, conf);\n }\n });\n\n const svgBounds = diagram.node().getBBox();\n const width = svgBounds.width + padding * 2;\n const height = svgBounds.height + padding * 2;\n\n configureSvgSize(diagram, height, width, conf.useMaxWidth);\n\n // Ensure the viewBox includes the whole svgBounds area with extra space for padding\n const vBox = `${svgBounds.x - padding} ${svgBounds.y - padding} ${width} ${height}`;\n log.debug(`viewBox ${vBox}`);\n diagram.attr('viewBox', vBox);\n addSVGAccessibilityFields(parser.yy, diagram, id);\n};\n\nexport default {\n setConf,\n draw,\n};\n","/** Setup arrow head and define the marker. The result is appended to the svg. */\n\nimport { log } from '../logger';\n\n// Only add the number of markers that the diagram needs\nconst insertMarkers = (elem, markerArray, type, id) => {\n markerArray.forEach((markerName) => {\n markers[markerName](elem, type, id);\n });\n};\n\nconst extension = (elem, type, id) => {\n log.trace('Making markers for ', id);\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-extensionStart')\n .attr('class', 'marker extension ' + type)\n .attr('refX', 0)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 1,7 L18,13 V 1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-extensionEnd')\n .attr('class', 'marker extension ' + type)\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 1,1 V 13 L18,7 Z'); // this is actual shape for arrowhead\n};\n\nconst composition = (elem, type) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-compositionStart')\n .attr('class', 'marker composition ' + type)\n .attr('refX', 0)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-compositionEnd')\n .attr('class', 'marker composition ' + type)\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n};\nconst aggregation = (elem, type) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-aggregationStart')\n .attr('class', 'marker aggregation ' + type)\n .attr('refX', 0)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-aggregationEnd')\n .attr('class', 'marker aggregation ' + type)\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n};\nconst dependency = (elem, type) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-dependencyStart')\n .attr('class', 'marker dependency ' + type)\n .attr('refX', 0)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 5,7 L9,13 L1,7 L9,1 Z');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-dependencyEnd')\n .attr('class', 'marker dependency ' + type)\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L14,7 L9,1 Z');\n};\nconst point = (elem, type) => {\n elem\n .append('marker')\n .attr('id', type + '-pointEnd')\n .attr('class', 'marker ' + type)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 9)\n .attr('refY', 5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 12)\n .attr('markerHeight', 12)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 0 0 L 10 5 L 0 10 z')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n elem\n .append('marker')\n .attr('id', type + '-pointStart')\n .attr('class', 'marker ' + type)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 0)\n .attr('refY', 5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 12)\n .attr('markerHeight', 12)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 0 5 L 10 10 L 10 0 z')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n};\nconst circle = (elem, type) => {\n elem\n .append('marker')\n .attr('id', type + '-circleEnd')\n .attr('class', 'marker ' + type)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 11)\n .attr('refY', 5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 11)\n .attr('markerHeight', 11)\n .attr('orient', 'auto')\n .append('circle')\n .attr('cx', '5')\n .attr('cy', '5')\n .attr('r', '5')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n\n elem\n .append('marker')\n .attr('id', type + '-circleStart')\n .attr('class', 'marker ' + type)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', -1)\n .attr('refY', 5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 11)\n .attr('markerHeight', 11)\n .attr('orient', 'auto')\n .append('circle')\n .attr('cx', '5')\n .attr('cy', '5')\n .attr('r', '5')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n};\nconst cross = (elem, type) => {\n elem\n .append('marker')\n .attr('id', type + '-crossEnd')\n .attr('class', 'marker cross ' + type)\n .attr('viewBox', '0 0 11 11')\n .attr('refX', 12)\n .attr('refY', 5.2)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 11)\n .attr('markerHeight', 11)\n .attr('orient', 'auto')\n .append('path')\n // .attr('stroke', 'black')\n .attr('d', 'M 1,1 l 9,9 M 10,1 l -9,9')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 2)\n .style('stroke-dasharray', '1,0');\n\n elem\n .append('marker')\n .attr('id', type + '-crossStart')\n .attr('class', 'marker cross ' + type)\n .attr('viewBox', '0 0 11 11')\n .attr('refX', -1)\n .attr('refY', 5.2)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 11)\n .attr('markerHeight', 11)\n .attr('orient', 'auto')\n .append('path')\n // .attr('stroke', 'black')\n .attr('d', 'M 1,1 l 9,9 M 10,1 l -9,9')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 2)\n .style('stroke-dasharray', '1,0');\n};\nconst barb = (elem, type) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-barbEnd')\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 14)\n .attr('markerUnits', 'strokeWidth')\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 19,7 L9,13 L14,7 L9,1 Z');\n};\n\n// TODO rename the class diagram markers to something shape descriptive and semanitc free\nconst markers = {\n extension,\n composition,\n aggregation,\n dependency,\n point,\n circle,\n cross,\n barb,\n};\nexport default insertMarkers;\n","import { select } from 'd3';\nimport { log } from '../logger'; // eslint-disable-line\nimport { getConfig } from '../config';\nimport { sanitizeText, evaluate } from '../diagrams/common/common';\n\nconst sanitizeTxt = (txt) => sanitizeText(txt, getConfig());\n\n/**\n * @param dom\n * @param styleFn\n */\nfunction applyStyle(dom, styleFn) {\n if (styleFn) {\n dom.attr('style', styleFn);\n }\n}\n\n/**\n * @param {any} node\n * @returns {SVGForeignObjectElement} Node\n */\nfunction addHtmlLabel(node) {\n const fo = select(document.createElementNS('http://www.w3.org/2000/svg', 'foreignObject'));\n const div = fo.append('xhtml:div');\n\n const label = node.label;\n const labelClass = node.isNode ? 'nodeLabel' : 'edgeLabel';\n div.html(\n '<span class=\"' +\n labelClass +\n '\" ' +\n (node.labelStyle ? 'style=\"' + node.labelStyle + '\"' : '') +\n '>' +\n label +\n '</span>'\n );\n\n applyStyle(div, node.labelStyle);\n div.style('display', 'inline-block');\n // Fix for firefox\n div.style('white-space', 'nowrap');\n div.attr('xmlns', 'http://www.w3.org/1999/xhtml');\n return fo.node();\n}\n\nconst createLabel = (_vertexText, style, isTitle, isNode) => {\n let vertexText = _vertexText || '';\n if (typeof vertexText === 'object') vertexText = vertexText[0];\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n // TODO: addHtmlLabel accepts a labelStyle. Do we possibly have that?\n vertexText = vertexText.replace(/\\\\n|\\n/g, '<br />');\n log.info('vertexText' + vertexText);\n const node = {\n isNode,\n label: vertexText.replace(\n /fa[lrsb]?:fa-[\\w-]+/g,\n (s) => `<i class='${s.replace(':', ' ')}'></i>`\n ),\n labelStyle: style.replace('fill:', 'color:'),\n };\n let vertexNode = addHtmlLabel(node);\n // vertexNode.parentNode.removeChild(vertexNode);\n return vertexNode;\n } else {\n const svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text');\n svgLabel.setAttribute('style', style.replace('color:', 'fill:'));\n let rows = [];\n if (typeof vertexText === 'string') {\n rows = vertexText.split(/\\\\n|\\n|<br\\s*\\/?>/gi);\n } else if (Array.isArray(vertexText)) {\n rows = vertexText;\n } else {\n rows = [];\n }\n\n for (let j = 0; j < rows.length; j++) {\n const tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');\n tspan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n tspan.setAttribute('dy', '1em');\n tspan.setAttribute('x', '0');\n if (isTitle) {\n tspan.setAttribute('class', 'title-row');\n } else {\n tspan.setAttribute('class', 'row');\n }\n tspan.textContent = rows[j].trim();\n svgLabel.appendChild(tspan);\n }\n return svgLabel;\n }\n};\n\nexport default createLabel;\n","import createLabel from '../createLabel';\nimport { getConfig } from '../../config';\nimport { decodeEntities } from '../../mermaidAPI';\nimport { select } from 'd3';\nimport { evaluate, sanitizeText } from '../../diagrams/common/common';\nexport const labelHelper = (parent, node, _classes, isNode) => {\n let classes;\n if (!_classes) {\n classes = 'node default';\n } else {\n classes = _classes;\n }\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', classes)\n .attr('id', node.domId || node.id);\n\n // Create the label and insert it after the rect\n const label = shapeSvg.insert('g').attr('class', 'label').attr('style', node.labelStyle);\n\n const labelText = typeof node.labelText === 'string' ? node.labelText : node.labelText[0];\n\n const text = label\n .node()\n .appendChild(\n createLabel(\n sanitizeText(decodeEntities(labelText), getConfig()),\n node.labelStyle,\n false,\n isNode\n )\n );\n\n // Get the size of the label\n let bbox = text.getBBox();\n\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = text.children[0];\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n\n const halfPadding = node.padding / 2;\n\n // Center the label\n label.attr('transform', 'translate(' + -bbox.width / 2 + ', ' + -bbox.height / 2 + ')');\n\n return { shapeSvg, bbox, halfPadding, label };\n};\n\nexport const updateNodeBounds = (node, element) => {\n const bbox = element.node().getBBox();\n node.width = bbox.width;\n node.height = bbox.height;\n};\n\n/**\n * @param parent\n * @param w\n * @param h\n * @param points\n */\nexport function insertPolygonShape(parent, w, h, points) {\n return parent\n .insert('polygon', ':first-child')\n .attr(\n 'points',\n points\n .map(function (d) {\n return d.x + ',' + d.y;\n })\n .join(' ')\n )\n .attr('class', 'label-container')\n .attr('transform', 'translate(' + -w / 2 + ',' + h / 2 + ')');\n}\n","/** Decorates with functions required by mermaids dagre-wrapper. */\nimport { log } from '../logger';\nimport graphlib from 'graphlib';\n\nexport let clusterDb = {};\nlet decendants = {};\nlet parents = {};\n\nexport const clear = () => {\n decendants = {};\n parents = {};\n clusterDb = {};\n};\n\nconst isDecendant = (id, ancenstorId) => {\n // if (id === ancenstorId) return true;\n\n log.trace(\n 'In isDecendant',\n ancenstorId,\n ' ',\n id,\n ' = ',\n decendants[ancenstorId].indexOf(id) >= 0\n );\n if (decendants[ancenstorId].indexOf(id) >= 0) return true;\n\n return false;\n};\n\nconst edgeInCluster = (edge, clusterId) => {\n log.info('Decendants of ', clusterId, ' is ', decendants[clusterId]);\n log.info('Edge is ', edge);\n // Edges to/from the cluster is not in the cluster, they are in the parent\n if (edge.v === clusterId) return false;\n if (edge.w === clusterId) return false;\n\n if (!decendants[clusterId]) {\n log.debug('Tilt, ', clusterId, ',not in decendants');\n return false;\n }\n log.info('Here ');\n\n if (decendants[clusterId].indexOf(edge.v) >= 0) return true;\n if (isDecendant(edge.v, clusterId)) return true;\n if (isDecendant(edge.w, clusterId)) return true;\n if (decendants[clusterId].indexOf(edge.w) >= 0) return true;\n\n return false;\n};\n\nconst copy = (clusterId, graph, newGraph, rootId) => {\n log.warn(\n 'Copying children of ',\n clusterId,\n 'root',\n rootId,\n 'data',\n graph.node(clusterId),\n rootId\n );\n const nodes = graph.children(clusterId) || [];\n\n // Include cluster node if it is not the root\n if (clusterId !== rootId) {\n nodes.push(clusterId);\n }\n\n log.warn('Copying (nodes) clusterId', clusterId, 'nodes', nodes);\n\n nodes.forEach((node) => {\n if (graph.children(node).length > 0) {\n copy(node, graph, newGraph, rootId);\n } else {\n const data = graph.node(node);\n log.info('cp ', node, ' to ', rootId, ' with parent ', clusterId); //,node, data, ' parent is ', clusterId);\n newGraph.setNode(node, data);\n if (rootId !== graph.parent(node)) {\n log.warn('Setting parent', node, graph.parent(node));\n newGraph.setParent(node, graph.parent(node));\n }\n\n if (clusterId !== rootId && node !== clusterId) {\n log.debug('Setting parent', node, clusterId);\n newGraph.setParent(node, clusterId);\n } else {\n log.info('In copy ', clusterId, 'root', rootId, 'data', graph.node(clusterId), rootId);\n log.debug(\n 'Not Setting parent for node=',\n node,\n 'cluster!==rootId',\n clusterId !== rootId,\n 'node!==clusterId',\n node !== clusterId\n );\n }\n const edges = graph.edges(node);\n log.debug('Copying Edges', edges);\n edges.forEach((edge) => {\n log.info('Edge', edge);\n const data = graph.edge(edge.v, edge.w, edge.name);\n log.info('Edge data', data, rootId);\n try {\n // Do not copy edges in and out of the root cluster, they belong to the parent graph\n if (edgeInCluster(edge, rootId)) {\n log.info('Copying as ', edge.v, edge.w, data, edge.name);\n newGraph.setEdge(edge.v, edge.w, data, edge.name);\n log.info('newGraph edges ', newGraph.edges(), newGraph.edge(newGraph.edges()[0]));\n } else {\n log.info(\n 'Skipping copy of edge ',\n edge.v,\n '-->',\n edge.w,\n ' rootId: ',\n rootId,\n ' clusterId:',\n clusterId\n );\n }\n } catch (e) {\n log.error(e);\n }\n });\n }\n log.debug('Removing node', node);\n graph.removeNode(node);\n });\n};\nexport const extractDecendants = (id, graph) => {\n // log.debug('Extracting ', id);\n const children = graph.children(id);\n let res = [].concat(children);\n\n for (let i = 0; i < children.length; i++) {\n parents[children[i]] = id;\n res = res.concat(extractDecendants(children[i], graph));\n }\n\n return res;\n};\n\n/**\n * Validates the graph, checking that all parent child relation points to existing nodes and that\n * edges between nodes also ia correct. When not correct the function logs the discrepancies.\n *\n * @param graph\n */\nexport const validate = (graph) => {\n const edges = graph.edges();\n log.trace('Edges: ', edges);\n for (let i = 0; i < edges.length; i++) {\n if (graph.children(edges[i].v).length > 0) {\n log.trace('The node ', edges[i].v, ' is part of and edge even though it has children');\n return false;\n }\n if (graph.children(edges[i].w).length > 0) {\n log.trace('The node ', edges[i].w, ' is part of and edge even though it has children');\n return false;\n }\n }\n return true;\n};\n\n/**\n * Finds a child that is not a cluster. When faking a edge between a node and a cluster.\n *\n * @param {Finds a} id\n * @param {any} graph\n */\nexport const findNonClusterChild = (id, graph) => {\n // const node = graph.node(id);\n log.trace('Searching', id);\n // const children = graph.children(id).reverse();\n const children = graph.children(id); //.reverse();\n log.trace('Searching children of id ', id, children);\n if (children.length < 1) {\n log.trace('This is a valid node', id);\n return id;\n }\n for (let i = 0; i < children.length; i++) {\n const _id = findNonClusterChild(children[i], graph);\n if (_id) {\n log.trace('Found replacement for', id, ' => ', _id);\n return _id;\n }\n }\n};\n\nconst getAnchorId = (id) => {\n if (!clusterDb[id]) {\n return id;\n }\n // If the cluster has no external connections\n if (!clusterDb[id].externalConnections) {\n return id;\n }\n\n // Return the replacement node\n if (clusterDb[id]) {\n return clusterDb[id].id;\n }\n return id;\n};\n\nexport const adjustClustersAndEdges = (graph, depth) => {\n if (!graph || depth > 10) {\n log.debug('Opting out, no graph ');\n return;\n } else {\n log.debug('Opting in, graph ');\n }\n // Go through the nodes and for each cluster found, save a replacment node, this can be used when\n // faking a link to a cluster\n graph.nodes().forEach(function (id) {\n const children = graph.children(id);\n if (children.length > 0) {\n log.warn(\n 'Cluster identified',\n id,\n ' Replacement id in edges: ',\n findNonClusterChild(id, graph)\n );\n decendants[id] = extractDecendants(id, graph);\n clusterDb[id] = { id: findNonClusterChild(id, graph), clusterData: graph.node(id) };\n }\n });\n\n // Check incoming and outgoing edges for each cluster\n graph.nodes().forEach(function (id) {\n const children = graph.children(id);\n const edges = graph.edges();\n if (children.length > 0) {\n log.debug('Cluster identified', id, decendants);\n edges.forEach((edge) => {\n // log.debug('Edge, decendants: ', edge, decendants[id]);\n\n // Check if any edge leaves the cluster (not the actual cluster, thats a link from the box)\n if (edge.v !== id && edge.w !== id) {\n // Any edge where either the one of the nodes is decending to the cluster but not the other\n // if (decendants[id].indexOf(edge.v) < 0 && decendants[id].indexOf(edge.w) < 0) {\n\n const d1 = isDecendant(edge.v, id);\n const d2 = isDecendant(edge.w, id);\n\n // d1 xor d2 - if either d1 is true and d2 is false or the other way around\n if (d1 ^ d2) {\n log.warn('Edge: ', edge, ' leaves cluster ', id);\n log.warn('Decendants of XXX ', id, ': ', decendants[id]);\n clusterDb[id].externalConnections = true;\n }\n }\n });\n } else {\n log.debug('Not a cluster ', id, decendants);\n }\n });\n\n // For clusters with incoming and/or outgoing edges translate those edges to a real node\n // in the cluster inorder to fake the edge\n graph.edges().forEach(function (e) {\n const edge = graph.edge(e);\n log.warn('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(e));\n log.warn('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(graph.edge(e)));\n\n let v = e.v;\n let w = e.w;\n // Check if link is either from or to a cluster\n log.warn(\n 'Fix XXX',\n clusterDb,\n 'ids:',\n e.v,\n e.w,\n 'Translateing: ',\n clusterDb[e.v],\n ' --- ',\n clusterDb[e.w]\n );\n if (clusterDb[e.v] || clusterDb[e.w]) {\n log.warn('Fixing and trixing - removing XXX', e.v, e.w, e.name);\n v = getAnchorId(e.v);\n w = getAnchorId(e.w);\n graph.removeEdge(e.v, e.w, e.name);\n if (v !== e.v) edge.fromCluster = e.v;\n if (w !== e.w) edge.toCluster = e.w;\n log.warn('Fix Replacing with XXX', v, w, e.name);\n graph.setEdge(v, w, edge, e.name);\n }\n });\n log.warn('Adjusted Graph', graphlib.json.write(graph));\n extractor(graph, 0);\n\n log.trace(clusterDb);\n\n // Remove references to extracted cluster\n // graph.edges().forEach(edge => {\n // if (isDecendant(edge.v, clusterId) || isDecendant(edge.w, clusterId)) {\n // graph.removeEdge(edge);\n // }\n // });\n};\n\nexport const extractor = (graph, depth) => {\n log.warn('extractor - ', depth, graphlib.json.write(graph), graph.children('D'));\n if (depth > 10) {\n log.error('Bailing out');\n return;\n }\n // For clusters without incoming and/or outgoing edges, create a new cluster-node\n // containing the nodes and edges in the custer in a new graph\n // for (let i = 0;)\n let nodes = graph.nodes();\n let hasChildren = false;\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n const children = graph.children(node);\n hasChildren = hasChildren || children.length > 0;\n }\n\n if (!hasChildren) {\n log.debug('Done, no node has children', graph.nodes());\n return;\n }\n // const clusters = Object.keys(clusterDb);\n // clusters.forEach(clusterId => {\n log.debug('Nodes = ', nodes, depth);\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n\n log.debug(\n 'Extracting node',\n node,\n clusterDb,\n clusterDb[node] && !clusterDb[node].externalConnections,\n !graph.parent(node),\n graph.node(node),\n graph.children('D'),\n ' Depth ',\n depth\n );\n // Note that the node might have been removed after the Object.keys call so better check\n // that it still is in the game\n if (!clusterDb[node]) {\n // Skip if the node is not a cluster\n log.debug('Not a cluster', node, depth);\n // break;\n } else if (\n !clusterDb[node].externalConnections &&\n // !graph.parent(node) &&\n graph.children(node) &&\n graph.children(node).length > 0\n ) {\n log.warn(\n 'Cluster without external connections, without a parent and with children',\n node,\n depth\n );\n\n const graphSettings = graph.graph();\n let dir = graphSettings.rankdir === 'TB' ? 'LR' : 'TB';\n if (clusterDb[node]) {\n if (clusterDb[node].clusterData && clusterDb[node].clusterData.dir) {\n dir = clusterDb[node].clusterData.dir;\n log.warn('Fixing dir', clusterDb[node].clusterData.dir, dir);\n }\n }\n\n const clusterGraph = new graphlib.Graph({\n multigraph: true,\n compound: true,\n })\n .setGraph({\n rankdir: dir, // Todo: set proper spacing\n nodesep: 50,\n ranksep: 50,\n marginx: 8,\n marginy: 8,\n })\n .setDefaultEdgeLabel(function () {\n return {};\n });\n\n log.warn('Old graph before copy', graphlib.json.write(graph));\n copy(node, graph, clusterGraph, node);\n graph.setNode(node, {\n clusterNode: true,\n id: node,\n clusterData: clusterDb[node].clusterData,\n labelText: clusterDb[node].labelText,\n graph: clusterGraph,\n });\n log.warn('New graph after copy node: (', node, ')', graphlib.json.write(clusterGraph));\n log.debug('Old graph after copy', graphlib.json.write(graph));\n } else {\n log.warn(\n 'Cluster ** ',\n node,\n ' **not meeting the criteria !externalConnections:',\n !clusterDb[node].externalConnections,\n ' no parent: ',\n !graph.parent(node),\n ' children ',\n graph.children(node) && graph.children(node).length > 0,\n graph.children('D'),\n depth\n );\n log.debug(clusterDb);\n }\n }\n\n nodes = graph.nodes();\n log.warn('New list of nodes', nodes);\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n const data = graph.node(node);\n log.warn(' Now next level', node, data);\n if (data.clusterNode) {\n extractor(data.graph, depth + 1);\n }\n }\n};\n\nconst sorter = (graph, nodes) => {\n if (nodes.length === 0) return [];\n let result = Object.assign(nodes);\n nodes.forEach((node) => {\n const children = graph.children(node);\n const sorted = sorter(graph, children);\n result = result.concat(sorted);\n });\n\n return result;\n};\n\nexport const sortNodesByHierarchy = (graph) => sorter(graph, graph.children());\n","/**\n * @param node\n * @param rx\n * @param ry\n * @param point\n */\nfunction intersectEllipse(node, rx, ry, point) {\n // Formulae from: http://mathworld.wolfram.com/Ellipse-LineIntersection.html\n\n var cx = node.x;\n var cy = node.y;\n\n var px = cx - point.x;\n var py = cy - point.y;\n\n var det = Math.sqrt(rx * rx * py * py + ry * ry * px * px);\n\n var dx = Math.abs((rx * ry * px) / det);\n if (point.x < cx) {\n dx = -dx;\n }\n var dy = Math.abs((rx * ry * py) / det);\n if (point.y < cy) {\n dy = -dy;\n }\n\n return { x: cx + dx, y: cy + dy };\n}\n\nexport default intersectEllipse;\n","/**\n * Returns the point at which two lines, p and q, intersect or returns undefined if they do not intersect.\n *\n * @param p1\n * @param p2\n * @param q1\n * @param q2\n */\nfunction intersectLine(p1, p2, q1, q2) {\n // Algorithm from J. Avro, (ed.) Graphics Gems, No 2, Morgan Kaufmann, 1994,\n // p7 and p473.\n\n var a1, a2, b1, b2, c1, c2;\n var r1, r2, r3, r4;\n var denom, offset, num;\n var x, y;\n\n // Compute a1, b1, c1, where line joining points 1 and 2 is F(x,y) = a1 x +\n // b1 y + c1 = 0.\n a1 = p2.y - p1.y;\n b1 = p1.x - p2.x;\n c1 = p2.x * p1.y - p1.x * p2.y;\n\n // Compute r3 and r4.\n r3 = a1 * q1.x + b1 * q1.y + c1;\n r4 = a1 * q2.x + b1 * q2.y + c1;\n\n // Check signs of r3 and r4. If both point 3 and point 4 lie on\n // same side of line 1, the line segments do not intersect.\n if (r3 !== 0 && r4 !== 0 && sameSign(r3, r4)) {\n return /*DONT_INTERSECT*/;\n }\n\n // Compute a2, b2, c2 where line joining points 3 and 4 is G(x,y) = a2 x + b2 y + c2 = 0\n a2 = q2.y - q1.y;\n b2 = q1.x - q2.x;\n c2 = q2.x * q1.y - q1.x * q2.y;\n\n // Compute r1 and r2\n r1 = a2 * p1.x + b2 * p1.y + c2;\n r2 = a2 * p2.x + b2 * p2.y + c2;\n\n // Check signs of r1 and r2. If both point 1 and point 2 lie\n // on same side of second line segment, the line segments do\n // not intersect.\n if (r1 !== 0 && r2 !== 0 && sameSign(r1, r2)) {\n return /*DONT_INTERSECT*/;\n }\n\n // Line segments intersect: compute intersection point.\n denom = a1 * b2 - a2 * b1;\n if (denom === 0) {\n return /*COLLINEAR*/;\n }\n\n offset = Math.abs(denom / 2);\n\n // The denom/2 is to get rounding instead of truncating. It\n // is added or subtracted to the numerator, depending upon the\n // sign of the numerator.\n num = b1 * c2 - b2 * c1;\n x = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n\n num = a2 * c1 - a1 * c2;\n y = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n\n return { x: x, y: y };\n}\n\n/**\n * @param r1\n * @param r2\n */\nfunction sameSign(r1, r2) {\n return r1 * r2 > 0;\n}\n\nexport default intersectLine;\n","const intersectRect = (node, point) => {\r\n var x = node.x;\r\n var y = node.y;\r\n\r\n // Rectangle intersection algorithm from:\r\n // http://math.stackexchange.com/questions/108113/find-edge-between-two-boxes\r\n var dx = point.x - x;\r\n var dy = point.y - y;\r\n var w = node.width / 2;\r\n var h = node.height / 2;\r\n\r\n var sx, sy;\r\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\r\n // Intersection is top or bottom of rect.\r\n if (dy < 0) {\r\n h = -h;\r\n }\r\n sx = dy === 0 ? 0 : (h * dx) / dy;\r\n sy = h;\r\n } else {\r\n // Intersection is left or right of rect.\r\n if (dx < 0) {\r\n w = -w;\r\n }\r\n sx = w;\r\n sy = dx === 0 ? 0 : (w * dy) / dx;\r\n }\r\n\r\n return { x: x + sx, y: y + sy };\r\n};\r\n\r\nexport default intersectRect;\r\n","/*\n * Borrowed with love from from dagrge-d3. Many thanks to cpettitt!\n */\n\nimport node from './intersect-node.js';\nimport circle from './intersect-circle.js';\nimport ellipse from './intersect-ellipse.js';\nimport polygon from './intersect-polygon.js';\nimport rect from './intersect-rect.js';\n\nexport default {\n node,\n circle,\n ellipse,\n polygon,\n rect,\n};\n","import intersectEllipse from './intersect-ellipse';\n\n/**\n * @param node\n * @param rx\n * @param point\n */\nfunction intersectCircle(node, rx, point) {\n return intersectEllipse(node, rx, rx, point);\n}\n\nexport default intersectCircle;\n","/* eslint \"no-console\": off */\n\nimport intersectLine from './intersect-line';\n\nexport default intersectPolygon;\n\n/**\n * Returns the point ({x, y}) at which the point argument intersects with the node argument assuming\n * that it has the shape specified by polygon.\n *\n * @param node\n * @param polyPoints\n * @param point\n */\nfunction intersectPolygon(node, polyPoints, point) {\n var x1 = node.x;\n var y1 = node.y;\n\n var intersections = [];\n\n var minX = Number.POSITIVE_INFINITY;\n var minY = Number.POSITIVE_INFINITY;\n if (typeof polyPoints.forEach === 'function') {\n polyPoints.forEach(function (entry) {\n minX = Math.min(minX, entry.x);\n minY = Math.min(minY, entry.y);\n });\n } else {\n minX = Math.min(minX, polyPoints.x);\n minY = Math.min(minY, polyPoints.y);\n }\n\n var left = x1 - node.width / 2 - minX;\n var top = y1 - node.height / 2 - minY;\n\n for (var i = 0; i < polyPoints.length; i++) {\n var p1 = polyPoints[i];\n var p2 = polyPoints[i < polyPoints.length - 1 ? i + 1 : 0];\n var intersect = intersectLine(\n node,\n point,\n { x: left + p1.x, y: top + p1.y },\n { x: left + p2.x, y: top + p2.y }\n );\n if (intersect) {\n intersections.push(intersect);\n }\n }\n\n if (!intersections.length) {\n // console.log('NO INTERSECTION FOUND, RETURN NODE CENTER', node);\n return node;\n }\n\n if (intersections.length > 1) {\n // More intersections, find the one nearest to edge end point\n intersections.sort(function (p, q) {\n var pdx = p.x - point.x;\n var pdy = p.y - point.y;\n var distp = Math.sqrt(pdx * pdx + pdy * pdy);\n\n var qdx = q.x - point.x;\n var qdy = q.y - point.y;\n var distq = Math.sqrt(qdx * qdx + qdy * qdy);\n\n return distp < distq ? -1 : distp === distq ? 0 : 1;\n });\n }\n return intersections[0];\n}\n","import { select } from 'd3';\nimport { log } from '../logger'; // eslint-disable-line\nimport { labelHelper, updateNodeBounds, insertPolygonShape } from './shapes/util';\nimport { getConfig } from '../config';\nimport intersect from './intersect/index.js';\nimport createLabel from './createLabel';\nimport note from './shapes/note';\nimport { parseMember } from '../diagrams/class/svgDraw';\nimport { evaluate, sanitizeText as sanitize } from '../diagrams/common/common';\n\nconst sanitizeText = (txt) => sanitize(txt, getConfig());\n\nconst question = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const s = w + h;\n const points = [\n { x: s / 2, y: 0 },\n { x: s, y: -s / 2 },\n { x: s / 2, y: -s },\n { x: 0, y: -s / 2 },\n ];\n\n log.info('Question main (Circle)');\n\n const questionElem = insertPolygonShape(shapeSvg, s, s, points);\n questionElem.attr('style', node.style);\n updateNodeBounds(node, questionElem);\n\n node.intersect = function (point) {\n log.warn('Intersect called');\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst choice = (parent, node) => {\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'node default')\n .attr('id', node.domId || node.id);\n\n const s = 28;\n const points = [\n { x: 0, y: s / 2 },\n { x: s / 2, y: 0 },\n { x: 0, y: -s / 2 },\n { x: -s / 2, y: 0 },\n ];\n\n const choice = shapeSvg.insert('polygon', ':first-child').attr(\n 'points',\n points\n .map(function (d) {\n return d.x + ',' + d.y;\n })\n .join(' ')\n );\n // center the circle around its coordinate\n choice.attr('class', 'state-start').attr('r', 7).attr('width', 28).attr('height', 28);\n node.width = 28;\n node.height = 28;\n\n node.intersect = function (point) {\n return intersect.circle(node, 14, point);\n };\n\n return shapeSvg;\n};\n\nconst hexagon = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const f = 4;\n const h = bbox.height + node.padding;\n const m = h / f;\n const w = bbox.width + 2 * m + node.padding;\n const points = [\n { x: m, y: 0 },\n { x: w - m, y: 0 },\n { x: w, y: -h / 2 },\n { x: w - m, y: -h },\n { x: m, y: -h },\n { x: 0, y: -h / 2 },\n ];\n\n const hex = insertPolygonShape(shapeSvg, w, h, points);\n hex.attr('style', node.style);\n updateNodeBounds(node, hex);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst rect_left_inv_arrow = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -h / 2, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: -h / 2, y: -h },\n { x: 0, y: -h / 2 },\n ];\n\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr('style', node.style);\n\n node.width = w + h;\n node.height = h;\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst lean_right = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: (-2 * h) / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + (2 * h) / 6, y: -h },\n { x: h / 6, y: -h },\n ];\n\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr('style', node.style);\n updateNodeBounds(node, el);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst lean_left = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: (2 * h) / 6, y: 0 },\n { x: w + h / 6, y: 0 },\n { x: w - (2 * h) / 6, y: -h },\n { x: -h / 6, y: -h },\n ];\n\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr('style', node.style);\n updateNodeBounds(node, el);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst trapezoid = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: (-2 * h) / 6, y: 0 },\n { x: w + (2 * h) / 6, y: 0 },\n { x: w - h / 6, y: -h },\n { x: h / 6, y: -h },\n ];\n\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr('style', node.style);\n updateNodeBounds(node, el);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst inv_trapezoid = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: h / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + (2 * h) / 6, y: -h },\n { x: (-2 * h) / 6, y: -h },\n ];\n\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr('style', node.style);\n updateNodeBounds(node, el);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst rect_right_inv_arrow = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 0, y: 0 },\n { x: w + h / 2, y: 0 },\n { x: w, y: -h / 2 },\n { x: w + h / 2, y: -h },\n { x: 0, y: -h },\n ];\n\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr('style', node.style);\n updateNodeBounds(node, el);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst cylinder = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n const h = bbox.height + ry + node.padding;\n\n const shape =\n 'M 0,' +\n ry +\n ' a ' +\n rx +\n ',' +\n ry +\n ' 0,0,0 ' +\n w +\n ' 0 a ' +\n rx +\n ',' +\n ry +\n ' 0,0,0 ' +\n -w +\n ' 0 l 0,' +\n h +\n ' a ' +\n rx +\n ',' +\n ry +\n ' 0,0,0 ' +\n w +\n ' 0 l 0,' +\n -h;\n\n const el = shapeSvg\n .attr('label-offset-y', ry)\n .insert('path', ':first-child')\n .attr('style', node.style)\n .attr('d', shape)\n .attr('transform', 'translate(' + -w / 2 + ',' + -(h / 2 + ry) + ')');\n\n updateNodeBounds(node, el);\n\n node.intersect = function (point) {\n const pos = intersect.rect(node, point);\n const x = pos.x - node.x;\n\n if (\n rx != 0 &&\n (Math.abs(x) < node.width / 2 ||\n (Math.abs(x) == node.width / 2 && Math.abs(pos.y - node.y) > node.height / 2 - ry))\n ) {\n // ellipsis equation: x*x / a*a + y*y / b*b = 1\n // solve for y to get adjustion value for pos.y\n let y = ry * ry * (1 - (x * x) / (rx * rx));\n if (y != 0) y = Math.sqrt(y);\n y = ry - y;\n if (point.y - node.y > 0) y = -y;\n\n pos.y += y;\n }\n\n return pos;\n };\n\n return shapeSvg;\n};\n\nconst rect = (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = labelHelper(parent, node, 'node ' + node.classes, true);\n\n log.trace('Classes = ', node.classes);\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n const totalWidth = bbox.width + node.padding;\n const totalHeight = bbox.height + node.padding;\n rect\n .attr('class', 'basic label-container')\n .attr('style', node.style)\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('x', -bbox.width / 2 - halfPadding)\n .attr('y', -bbox.height / 2 - halfPadding)\n .attr('width', totalWidth)\n .attr('height', totalHeight);\n\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n applyNodePropertyBorders(rect, node.props.borders, totalWidth, totalHeight);\n propKeys.delete('borders');\n }\n propKeys.forEach((propKey) => {\n log.warn(`Unknown node property ${propKey}`);\n });\n }\n\n updateNodeBounds(node, rect);\n\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n\n/**\n * @param rect\n * @param borders\n * @param totalWidth\n * @param totalHeight\n */\nfunction applyNodePropertyBorders(rect, borders, totalWidth, totalHeight) {\n const strokeDashArray = [];\n const addBorder = (length) => {\n strokeDashArray.push(length);\n strokeDashArray.push(0);\n };\n const skipBorder = (length) => {\n strokeDashArray.push(0);\n strokeDashArray.push(length);\n };\n if (borders.includes('t')) {\n log.debug('add top border');\n addBorder(totalWidth);\n } else {\n skipBorder(totalWidth);\n }\n if (borders.includes('r')) {\n log.debug('add right border');\n addBorder(totalHeight);\n } else {\n skipBorder(totalHeight);\n }\n if (borders.includes('b')) {\n log.debug('add bottom border');\n addBorder(totalWidth);\n } else {\n skipBorder(totalWidth);\n }\n if (borders.includes('l')) {\n log.debug('add left border');\n addBorder(totalHeight);\n } else {\n skipBorder(totalHeight);\n }\n rect.attr('stroke-dasharray', strokeDashArray.join(' '));\n}\n\nconst rectWithTitle = (parent, node) => {\n // const { shapeSvg, bbox, halfPadding } = labelHelper(parent, node, 'node ' + node.classes);\n\n let classes;\n if (!node.classes) {\n classes = 'node default';\n } else {\n classes = 'node ' + node.classes;\n }\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', classes)\n .attr('id', node.domId || node.id);\n\n // Create the title label and insert it after the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n // const innerRect = shapeSvg.insert('rect');\n const innerLine = shapeSvg.insert('line');\n\n const label = shapeSvg.insert('g').attr('class', 'label');\n\n const text2 = node.labelText.flat ? node.labelText.flat() : node.labelText;\n // const text2 = typeof text2prim === 'object' ? text2prim[0] : text2prim;\n\n let title = '';\n if (typeof text2 === 'object') {\n title = text2[0];\n } else {\n title = text2;\n }\n log.info('Label text abc79', title, text2, typeof text2 === 'object');\n\n const text = label.node().appendChild(createLabel(title, node.labelStyle, true, true));\n let bbox = { width: 0, height: 0 };\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = text.children[0];\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n log.info('Text 2', text2);\n const textRows = text2.slice(1, text2.length);\n let titleBox = text.getBBox();\n const descr = label\n .node()\n .appendChild(\n createLabel(textRows.join ? textRows.join('<br/>') : textRows, node.labelStyle, true, true)\n );\n\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = descr.children[0];\n const dv = select(descr);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n // bbox = label.getBBox();\n // log.info(descr);\n const halfPadding = node.padding / 2;\n select(descr).attr(\n 'transform',\n 'translate( ' +\n // (titleBox.width - bbox.width) / 2 +\n (bbox.width > titleBox.width ? 0 : (titleBox.width - bbox.width) / 2) +\n ', ' +\n (titleBox.height + halfPadding + 5) +\n ')'\n );\n select(text).attr(\n 'transform',\n 'translate( ' +\n // (titleBox.width - bbox.width) / 2 +\n (bbox.width < titleBox.width ? 0 : -(titleBox.width - bbox.width) / 2) +\n ', ' +\n 0 +\n ')'\n );\n // Get the size of the label\n\n // Bounding box for title and text\n bbox = label.node().getBBox();\n\n // Center the label\n label.attr(\n 'transform',\n 'translate(' + -bbox.width / 2 + ', ' + (-bbox.height / 2 - halfPadding + 3) + ')'\n );\n\n rect\n .attr('class', 'outer title-state')\n .attr('x', -bbox.width / 2 - halfPadding)\n .attr('y', -bbox.height / 2 - halfPadding)\n .attr('width', bbox.width + node.padding)\n .attr('height', bbox.height + node.padding);\n\n innerLine\n .attr('class', 'divider')\n .attr('x1', -bbox.width / 2 - halfPadding)\n .attr('x2', bbox.width / 2 + halfPadding)\n .attr('y1', -bbox.height / 2 - halfPadding + titleBox.height + halfPadding)\n .attr('y2', -bbox.height / 2 - halfPadding + titleBox.height + halfPadding);\n\n updateNodeBounds(node, rect);\n\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst stadium = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const h = bbox.height + node.padding;\n const w = bbox.width + h / 4 + node.padding;\n\n // add the rect\n const rect = shapeSvg\n .insert('rect', ':first-child')\n .attr('style', node.style)\n .attr('rx', h / 2)\n .attr('ry', h / 2)\n .attr('x', -w / 2)\n .attr('y', -h / 2)\n .attr('width', w)\n .attr('height', h);\n\n updateNodeBounds(node, rect);\n\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst circle = (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = labelHelper(parent, node, undefined, true);\n const circle = shapeSvg.insert('circle', ':first-child');\n\n // center the circle around its coordinate\n circle\n .attr('style', node.style)\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('r', bbox.width / 2 + halfPadding)\n .attr('width', bbox.width + node.padding)\n .attr('height', bbox.height + node.padding);\n\n log.info('Circle main');\n\n updateNodeBounds(node, circle);\n\n node.intersect = function (point) {\n log.info('Circle intersect', node, bbox.width / 2 + halfPadding, point);\n return intersect.circle(node, bbox.width / 2 + halfPadding, point);\n };\n\n return shapeSvg;\n};\n\nconst doublecircle = (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = labelHelper(parent, node, undefined, true);\n const gap = 5;\n const circleGroup = shapeSvg.insert('g', ':first-child');\n const outerCircle = circleGroup.insert('circle');\n const innerCircle = circleGroup.insert('circle');\n\n // center the circle around its coordinate\n outerCircle\n .attr('style', node.style)\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('r', bbox.width / 2 + halfPadding + gap)\n .attr('width', bbox.width + node.padding + gap * 2)\n .attr('height', bbox.height + node.padding + gap * 2);\n\n innerCircle\n .attr('style', node.style)\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('r', bbox.width / 2 + halfPadding)\n .attr('width', bbox.width + node.padding)\n .attr('height', bbox.height + node.padding);\n\n log.info('DoubleCircle main');\n\n updateNodeBounds(node, outerCircle);\n\n node.intersect = function (point) {\n log.info('DoubleCircle intersect', node, bbox.width / 2 + halfPadding + gap, point);\n return intersect.circle(node, bbox.width / 2 + halfPadding + gap, point);\n };\n\n return shapeSvg;\n};\n\nconst subroutine = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: 0, y: -h },\n { x: 0, y: 0 },\n { x: -8, y: 0 },\n { x: w + 8, y: 0 },\n { x: w + 8, y: -h },\n { x: -8, y: -h },\n { x: -8, y: 0 },\n ];\n\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr('style', node.style);\n updateNodeBounds(node, el);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst start = (parent, node) => {\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'node default')\n .attr('id', node.domId || node.id);\n const circle = shapeSvg.insert('circle', ':first-child');\n\n // center the circle around its coordinate\n circle.attr('class', 'state-start').attr('r', 7).attr('width', 14).attr('height', 14);\n\n updateNodeBounds(node, circle);\n\n node.intersect = function (point) {\n return intersect.circle(node, 7, point);\n };\n\n return shapeSvg;\n};\n\nconst forkJoin = (parent, node, dir) => {\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'node default')\n .attr('id', node.domId || node.id);\n\n let width = 70;\n let height = 10;\n\n if (dir === 'LR') {\n width = 10;\n height = 70;\n }\n\n const shape = shapeSvg\n .append('rect')\n .attr('x', (-1 * width) / 2)\n .attr('y', (-1 * height) / 2)\n .attr('width', width)\n .attr('height', height)\n .attr('class', 'fork-join');\n\n updateNodeBounds(node, shape);\n node.height = node.height + node.padding / 2;\n node.width = node.width + node.padding / 2;\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst end = (parent, node) => {\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'node default')\n .attr('id', node.domId || node.id);\n const innerCircle = shapeSvg.insert('circle', ':first-child');\n const circle = shapeSvg.insert('circle', ':first-child');\n\n circle.attr('class', 'state-start').attr('r', 7).attr('width', 14).attr('height', 14);\n\n innerCircle.attr('class', 'state-end').attr('r', 5).attr('width', 10).attr('height', 10);\n\n updateNodeBounds(node, circle);\n\n node.intersect = function (point) {\n return intersect.circle(node, 7, point);\n };\n\n return shapeSvg;\n};\n\nconst class_box = (parent, node) => {\n const halfPadding = node.padding / 2;\n const rowPadding = 4;\n const lineHeight = 8;\n\n let classes;\n if (!node.classes) {\n classes = 'node default';\n } else {\n classes = 'node ' + node.classes;\n }\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', classes)\n .attr('id', node.domId || node.id);\n\n // Create the title label and insert it after the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n const topLine = shapeSvg.insert('line');\n const bottomLine = shapeSvg.insert('line');\n let maxWidth = 0;\n let maxHeight = rowPadding;\n\n const labelContainer = shapeSvg.insert('g').attr('class', 'label');\n let verticalPos = 0;\n const hasInterface = node.classData.annotations && node.classData.annotations[0];\n\n // 1. Create the labels\n const interfaceLabelText = node.classData.annotations[0]\n ? '«' + node.classData.annotations[0] + '»'\n : '';\n const interfaceLabel = labelContainer\n .node()\n .appendChild(createLabel(interfaceLabelText, node.labelStyle, true, true));\n let interfaceBBox = interfaceLabel.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = interfaceLabel.children[0];\n const dv = select(interfaceLabel);\n interfaceBBox = div.getBoundingClientRect();\n dv.attr('width', interfaceBBox.width);\n dv.attr('height', interfaceBBox.height);\n }\n if (node.classData.annotations[0]) {\n maxHeight += interfaceBBox.height + rowPadding;\n maxWidth += interfaceBBox.width;\n }\n\n let classTitleString = node.classData.id;\n\n if (node.classData.type !== undefined && node.classData.type !== '') {\n if (getConfig().flowchart.htmlLabels) {\n classTitleString += '&lt;' + node.classData.type + '&gt;';\n } else {\n classTitleString += '<' + node.classData.type + '>';\n }\n }\n const classTitleLabel = labelContainer\n .node()\n .appendChild(createLabel(classTitleString, node.labelStyle, true, true));\n select(classTitleLabel).attr('class', 'classTitle');\n let classTitleBBox = classTitleLabel.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = classTitleLabel.children[0];\n const dv = select(classTitleLabel);\n classTitleBBox = div.getBoundingClientRect();\n dv.attr('width', classTitleBBox.width);\n dv.attr('height', classTitleBBox.height);\n }\n maxHeight += classTitleBBox.height + rowPadding;\n if (classTitleBBox.width > maxWidth) {\n maxWidth = classTitleBBox.width;\n }\n const classAttributes = [];\n node.classData.members.forEach((str) => {\n const parsedInfo = parseMember(str);\n let parsedText = parsedInfo.displayText;\n if (getConfig().flowchart.htmlLabels) {\n parsedText = parsedText.replace(/</g, '&lt;').replace(/>/g, '&gt;');\n }\n const lbl = labelContainer\n .node()\n .appendChild(\n createLabel(\n parsedText,\n parsedInfo.cssStyle ? parsedInfo.cssStyle : node.labelStyle,\n true,\n true\n )\n );\n let bbox = lbl.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = lbl.children[0];\n const dv = select(lbl);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n if (bbox.width > maxWidth) {\n maxWidth = bbox.width;\n }\n maxHeight += bbox.height + rowPadding;\n classAttributes.push(lbl);\n });\n\n maxHeight += lineHeight;\n\n const classMethods = [];\n node.classData.methods.forEach((str) => {\n const parsedInfo = parseMember(str);\n let displayText = parsedInfo.displayText;\n if (getConfig().flowchart.htmlLabels) {\n displayText = displayText.replace(/</g, '&lt;').replace(/>/g, '&gt;');\n }\n const lbl = labelContainer\n .node()\n .appendChild(\n createLabel(\n displayText,\n parsedInfo.cssStyle ? parsedInfo.cssStyle : node.labelStyle,\n true,\n true\n )\n );\n let bbox = lbl.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = lbl.children[0];\n const dv = select(lbl);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n if (bbox.width > maxWidth) {\n maxWidth = bbox.width;\n }\n maxHeight += bbox.height + rowPadding;\n\n classMethods.push(lbl);\n });\n\n maxHeight += lineHeight;\n\n // 2. Position the labels\n\n // position the interface label\n if (hasInterface) {\n let diffX = (maxWidth - interfaceBBox.width) / 2;\n select(interfaceLabel).attr(\n 'transform',\n 'translate( ' + ((-1 * maxWidth) / 2 + diffX) + ', ' + (-1 * maxHeight) / 2 + ')'\n );\n verticalPos = interfaceBBox.height + rowPadding;\n }\n // Positin the class title label\n let diffX = (maxWidth - classTitleBBox.width) / 2;\n select(classTitleLabel).attr(\n 'transform',\n 'translate( ' +\n ((-1 * maxWidth) / 2 + diffX) +\n ', ' +\n ((-1 * maxHeight) / 2 + verticalPos) +\n ')'\n );\n verticalPos += classTitleBBox.height + rowPadding;\n\n topLine\n .attr('class', 'divider')\n .attr('x1', -maxWidth / 2 - halfPadding)\n .attr('x2', maxWidth / 2 + halfPadding)\n .attr('y1', -maxHeight / 2 - halfPadding + lineHeight + verticalPos)\n .attr('y2', -maxHeight / 2 - halfPadding + lineHeight + verticalPos);\n\n verticalPos += lineHeight;\n\n classAttributes.forEach((lbl) => {\n select(lbl).attr(\n 'transform',\n 'translate( ' +\n -maxWidth / 2 +\n ', ' +\n ((-1 * maxHeight) / 2 + verticalPos + lineHeight / 2) +\n ')'\n );\n verticalPos += classTitleBBox.height + rowPadding;\n });\n\n verticalPos += lineHeight;\n bottomLine\n .attr('class', 'divider')\n .attr('x1', -maxWidth / 2 - halfPadding)\n .attr('x2', maxWidth / 2 + halfPadding)\n .attr('y1', -maxHeight / 2 - halfPadding + lineHeight + verticalPos)\n .attr('y2', -maxHeight / 2 - halfPadding + lineHeight + verticalPos);\n\n verticalPos += lineHeight;\n\n classMethods.forEach((lbl) => {\n select(lbl).attr(\n 'transform',\n 'translate( ' + -maxWidth / 2 + ', ' + ((-1 * maxHeight) / 2 + verticalPos) + ')'\n );\n verticalPos += classTitleBBox.height + rowPadding;\n });\n //\n // let bbox;\n // if (evaluate(getConfig().flowchart.htmlLabels)) {\n // const div = interfaceLabel.children[0];\n // const dv = select(interfaceLabel);\n // bbox = div.getBoundingClientRect();\n // dv.attr('width', bbox.width);\n // dv.attr('height', bbox.height);\n // }\n // bbox = labelContainer.getBBox();\n\n // log.info('Text 2', text2);\n // const textRows = text2.slice(1, text2.length);\n // let titleBox = text.getBBox();\n // const descr = label\n // .node()\n // .appendChild(createLabel(textRows.join('<br/>'), node.labelStyle, true, true));\n\n // if (evaluate(getConfig().flowchart.htmlLabels)) {\n // const div = descr.children[0];\n // const dv = select(descr);\n // bbox = div.getBoundingClientRect();\n // dv.attr('width', bbox.width);\n // dv.attr('height', bbox.height);\n // }\n // // bbox = label.getBBox();\n // // log.info(descr);\n // select(descr).attr(\n // 'transform',\n // 'translate( ' +\n // // (titleBox.width - bbox.width) / 2 +\n // (bbox.width > titleBox.width ? 0 : (titleBox.width - bbox.width) / 2) +\n // ', ' +\n // (titleBox.height + halfPadding + 5) +\n // ')'\n // );\n // select(text).attr(\n // 'transform',\n // 'translate( ' +\n // // (titleBox.width - bbox.width) / 2 +\n // (bbox.width < titleBox.width ? 0 : -(titleBox.width - bbox.width) / 2) +\n // ', ' +\n // 0 +\n // ')'\n // );\n // // Get the size of the label\n\n // // Bounding box for title and text\n // bbox = label.node().getBBox();\n\n // // Center the label\n // label.attr(\n // 'transform',\n // 'translate(' + -bbox.width / 2 + ', ' + (-bbox.height / 2 - halfPadding + 3) + ')'\n // );\n\n rect\n .attr('class', 'outer title-state')\n .attr('x', -maxWidth / 2 - halfPadding)\n .attr('y', -(maxHeight / 2) - halfPadding)\n .attr('width', maxWidth + node.padding)\n .attr('height', maxHeight + node.padding);\n\n // innerLine\n // .attr('class', 'divider')\n // .attr('x1', -bbox.width / 2 - halfPadding)\n // .attr('x2', bbox.width / 2 + halfPadding)\n // .attr('y1', -bbox.height / 2 - halfPadding + titleBox.height + halfPadding)\n // .attr('y2', -bbox.height / 2 - halfPadding + titleBox.height + halfPadding);\n\n updateNodeBounds(node, rect);\n\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst shapes = {\n question,\n rect,\n rectWithTitle,\n choice,\n circle,\n doublecircle,\n stadium,\n hexagon,\n rect_left_inv_arrow,\n lean_right,\n lean_left,\n trapezoid,\n inv_trapezoid,\n rect_right_inv_arrow,\n cylinder,\n start,\n end,\n note,\n subroutine,\n fork: forkJoin,\n join: forkJoin,\n class_box,\n};\n\nlet nodeElems = {};\n\nexport const insertNode = (elem, node, dir) => {\n let newEl;\n let el;\n\n // Add link when appropriate\n if (node.link) {\n let target;\n if (getConfig().securityLevel === 'sandbox') {\n target = '_top';\n } else if (node.linkTarget) {\n target = node.linkTarget || '_blank';\n }\n newEl = elem.insert('svg:a').attr('xlink:href', node.link).attr('target', target);\n el = shapes[node.shape](newEl, node, dir);\n } else {\n el = shapes[node.shape](elem, node, dir);\n newEl = el;\n }\n if (node.tooltip) {\n el.attr('title', node.tooltip);\n }\n if (node.class) {\n el.attr('class', 'node default ' + node.class);\n }\n\n nodeElems[node.id] = newEl;\n\n if (node.haveCallback) {\n nodeElems[node.id].attr('class', nodeElems[node.id].attr('class') + ' clickable');\n }\n};\nexport const setNodeElem = (elem, node) => {\n nodeElems[node.id] = elem;\n};\nexport const clear = () => {\n nodeElems = {};\n};\n\nexport const positionNode = (node) => {\n const el = nodeElems[node.id];\n log.trace(\n 'Transforming node',\n node.diff,\n node,\n 'translate(' + (node.x - node.width / 2 - 5) + ', ' + node.width / 2 + ')'\n );\n const padding = 8;\n const diff = node.diff || 0;\n if (node.clusterNode) {\n el.attr(\n 'transform',\n 'translate(' +\n (node.x + diff - node.width / 2) +\n ', ' +\n (node.y - node.height / 2 - padding) +\n ')'\n );\n } else {\n el.attr('transform', 'translate(' + node.x + ', ' + node.y + ')');\n }\n return diff;\n};\n","import { updateNodeBounds, labelHelper } from './util';\nimport { log } from '../../logger'; // eslint-disable-line\nimport intersect from '../intersect/index.js';\n\nconst note = (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = labelHelper(parent, node, 'node ' + node.classes, true);\n\n log.info('Classes = ', node.classes);\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n rect\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('x', -bbox.width / 2 - halfPadding)\n .attr('y', -bbox.height / 2 - halfPadding)\n .attr('width', bbox.width + node.padding)\n .attr('height', bbox.height + node.padding);\n\n updateNodeBounds(node, rect);\n\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n\nexport default note;\n","import intersectRect from './intersect/intersect-rect';\nimport { log } from '../logger';\nimport createLabel from './createLabel';\nimport { select } from 'd3';\nimport { getConfig } from '../config';\nimport { evaluate } from '../diagrams/common/common';\n\nconst rect = (parent, node) => {\n log.trace('Creating subgraph rect for ', node.id, node);\n\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'cluster' + (node.class ? ' ' + node.class : ''))\n .attr('id', node.id);\n\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n // Create the label and insert it after the rect\n const label = shapeSvg.insert('g').attr('class', 'cluster-label');\n\n const text = label\n .node()\n .appendChild(createLabel(node.labelText, node.labelStyle, undefined, true));\n\n // Get the size of the label\n let bbox = text.getBBox();\n\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = text.children[0];\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n\n const width = node.width <= bbox.width + padding ? bbox.width + padding : node.width;\n if (node.width <= bbox.width + padding) {\n node.diff = (bbox.width - node.width) / 2;\n } else {\n node.diff = -node.padding / 2;\n }\n\n log.trace('Data ', node, JSON.stringify(node));\n // center the rect around its coordinate\n rect\n .attr('style', node.style)\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('x', node.x - width / 2)\n .attr('y', node.y - node.height / 2 - halfPadding)\n .attr('width', width)\n .attr('height', node.height + padding);\n\n // Center the label\n label.attr(\n 'transform',\n 'translate(' +\n (node.x - bbox.width / 2) +\n ', ' +\n (node.y - node.height / 2 + node.padding / 3) +\n ')'\n );\n\n const rectBox = rect.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n\n node.intersect = function (point) {\n return intersectRect(node, point);\n };\n\n return shapeSvg;\n};\n\n/**\n * Non visiable cluster where the note is group with its\n *\n * @param {any} parent\n * @param {any} node\n * @returns {any} ShapeSvg\n */\nconst noteGroup = (parent, node) => {\n // Add outer g element\n const shapeSvg = parent.insert('g').attr('class', 'note-cluster').attr('id', node.id);\n\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n\n // center the rect around its coordinate\n rect\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('x', node.x - node.width / 2 - halfPadding)\n .attr('y', node.y - node.height / 2 - halfPadding)\n .attr('width', node.width + padding)\n .attr('height', node.height + padding)\n .attr('fill', 'none');\n\n const rectBox = rect.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n\n node.intersect = function (point) {\n return intersectRect(node, point);\n };\n\n return shapeSvg;\n};\nconst roundedWithTitle = (parent, node) => {\n // Add outer g element\n const shapeSvg = parent.insert('g').attr('class', node.classes).attr('id', node.id);\n\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n // Create the label and insert it after the rect\n const label = shapeSvg.insert('g').attr('class', 'cluster-label');\n const innerRect = shapeSvg.append('rect');\n\n const text = label\n .node()\n .appendChild(createLabel(node.labelText, node.labelStyle, undefined, true));\n\n // Get the size of the label\n let bbox = text.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = text.children[0];\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n bbox = text.getBBox();\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n\n const width = node.width <= bbox.width + node.padding ? bbox.width + node.padding : node.width;\n if (node.width <= bbox.width + node.padding) {\n node.diff = (bbox.width + node.padding * 0 - node.width) / 2;\n } else {\n node.diff = -node.padding / 2;\n }\n\n // center the rect around its coordinate\n rect\n .attr('class', 'outer')\n .attr('x', node.x - width / 2 - halfPadding)\n .attr('y', node.y - node.height / 2 - halfPadding)\n .attr('width', width + padding)\n .attr('height', node.height + padding);\n innerRect\n .attr('class', 'inner')\n .attr('x', node.x - width / 2 - halfPadding)\n .attr('y', node.y - node.height / 2 - halfPadding + bbox.height - 1)\n .attr('width', width + padding)\n .attr('height', node.height + padding - bbox.height - 3);\n\n // Center the label\n label.attr(\n 'transform',\n 'translate(' +\n (node.x - bbox.width / 2) +\n ', ' +\n (node.y -\n node.height / 2 -\n node.padding / 3 +\n (evaluate(getConfig().flowchart.htmlLabels) ? 5 : 3)) +\n ')'\n );\n\n const rectBox = rect.node().getBBox();\n node.height = rectBox.height;\n\n node.intersect = function (point) {\n return intersectRect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst divider = (parent, node) => {\n // Add outer g element\n const shapeSvg = parent.insert('g').attr('class', node.classes).attr('id', node.id);\n\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n\n // center the rect around its coordinate\n rect\n .attr('class', 'divider')\n .attr('x', node.x - node.width / 2 - halfPadding)\n .attr('y', node.y - node.height / 2)\n .attr('width', node.width + padding)\n .attr('height', node.height + padding);\n\n const rectBox = rect.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n node.diff = -node.padding / 2;\n node.intersect = function (point) {\n return intersectRect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst shapes = { rect, roundedWithTitle, noteGroup, divider };\n\nlet clusterElems = {};\n\nexport const insertCluster = (elem, node) => {\n log.trace('Inserting cluster');\n const shape = node.shape || 'rect';\n clusterElems[node.id] = shapes[shape](elem, node);\n};\nexport const getClusterTitleWidth = (elem, node) => {\n const label = createLabel(node.labelText, node.labelStyle, undefined, true);\n elem.node().appendChild(label);\n const width = label.getBBox().width;\n elem.node().removeChild(label);\n return width;\n};\n\nexport const clear = () => {\n clusterElems = {};\n};\n\nexport const positionCluster = (node) => {\n log.info('Position cluster (' + node.id + ', ' + node.x + ', ' + node.y + ')');\n const el = clusterElems[node.id];\n\n el.attr('transform', 'translate(' + node.x + ', ' + node.y + ')');\n};\n","import { log } from '../logger'; // eslint-disable-line\nimport createLabel from './createLabel';\nimport { line, curveBasis, select } from 'd3';\nimport { getConfig } from '../config';\nimport utils from '../utils';\nimport { evaluate } from '../diagrams/common/common';\n\nlet edgeLabels = {};\nlet terminalLabels = {};\n\nexport const clear = () => {\n edgeLabels = {};\n terminalLabels = {};\n};\n\nexport const insertEdgeLabel = (elem, edge) => {\n // Create the actual text element\n const labelElement = createLabel(edge.label, edge.labelStyle);\n\n // Create outer g, edgeLabel, this will be positioned after graph layout\n const edgeLabel = elem.insert('g').attr('class', 'edgeLabel');\n\n // Create inner g, label, this will be positioned now for centering the text\n const label = edgeLabel.insert('g').attr('class', 'label');\n label.node().appendChild(labelElement);\n\n // Center the label\n let bbox = labelElement.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = labelElement.children[0];\n const dv = select(labelElement);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n label.attr('transform', 'translate(' + -bbox.width / 2 + ', ' + -bbox.height / 2 + ')');\n\n // Make element accessible by id for positioning\n edgeLabels[edge.id] = edgeLabel;\n\n // Update the abstract data of the edge with the new information about its width and height\n edge.width = bbox.width;\n edge.height = bbox.height;\n\n let fo;\n if (edge.startLabelLeft) {\n // Create the actual text element\n const startLabelElement = createLabel(edge.startLabelLeft, edge.labelStyle);\n const startEdgeLabelLeft = elem.insert('g').attr('class', 'edgeTerminals');\n const inner = startEdgeLabelLeft.insert('g').attr('class', 'inner');\n fo = inner.node().appendChild(startLabelElement);\n const slBox = startLabelElement.getBBox();\n inner.attr('transform', 'translate(' + -slBox.width / 2 + ', ' + -slBox.height / 2 + ')');\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].startLeft = startEdgeLabelLeft;\n setTerminalWidth(fo, edge.startLabelLeft);\n }\n if (edge.startLabelRight) {\n // Create the actual text element\n const startLabelElement = createLabel(edge.startLabelRight, edge.labelStyle);\n const startEdgeLabelRight = elem.insert('g').attr('class', 'edgeTerminals');\n const inner = startEdgeLabelRight.insert('g').attr('class', 'inner');\n fo = startEdgeLabelRight.node().appendChild(startLabelElement);\n inner.node().appendChild(startLabelElement);\n const slBox = startLabelElement.getBBox();\n inner.attr('transform', 'translate(' + -slBox.width / 2 + ', ' + -slBox.height / 2 + ')');\n\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].startRight = startEdgeLabelRight;\n setTerminalWidth(fo, edge.startLabelRight);\n }\n if (edge.endLabelLeft) {\n // Create the actual text element\n const endLabelElement = createLabel(edge.endLabelLeft, edge.labelStyle);\n const endEdgeLabelLeft = elem.insert('g').attr('class', 'edgeTerminals');\n const inner = endEdgeLabelLeft.insert('g').attr('class', 'inner');\n fo = inner.node().appendChild(endLabelElement);\n const slBox = endLabelElement.getBBox();\n inner.attr('transform', 'translate(' + -slBox.width / 2 + ', ' + -slBox.height / 2 + ')');\n\n endEdgeLabelLeft.node().appendChild(endLabelElement);\n\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].endLeft = endEdgeLabelLeft;\n setTerminalWidth(fo, edge.endLabelLeft);\n }\n if (edge.endLabelRight) {\n // Create the actual text element\n const endLabelElement = createLabel(edge.endLabelRight, edge.labelStyle);\n const endEdgeLabelRight = elem.insert('g').attr('class', 'edgeTerminals');\n const inner = endEdgeLabelRight.insert('g').attr('class', 'inner');\n\n fo = inner.node().appendChild(endLabelElement);\n const slBox = endLabelElement.getBBox();\n inner.attr('transform', 'translate(' + -slBox.width / 2 + ', ' + -slBox.height / 2 + ')');\n\n endEdgeLabelRight.node().appendChild(endLabelElement);\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].endRight = endEdgeLabelRight;\n setTerminalWidth(fo, edge.endLabelRight);\n }\n};\n\n/**\n * @param {any} fo\n * @param {any} value\n */\nfunction setTerminalWidth(fo, value) {\n if (getConfig().flowchart.htmlLabels && fo) {\n fo.style.width = value.length * 9 + 'px';\n fo.style.height = '12px';\n }\n}\n\nexport const positionEdgeLabel = (edge, paths) => {\n log.info('Moving label abc78 ', edge.id, edge.label, edgeLabels[edge.id]);\n let path = paths.updatedPath ? paths.updatedPath : paths.originalPath;\n if (edge.label) {\n const el = edgeLabels[edge.id];\n let x = edge.x;\n let y = edge.y;\n if (path) {\n // // debugger;\n const pos = utils.calcLabelPosition(path);\n log.info('Moving label from (', x, ',', y, ') to (', pos.x, ',', pos.y, ') abc78');\n // x = pos.x;\n // y = pos.y;\n }\n el.attr('transform', 'translate(' + x + ', ' + y + ')');\n }\n\n //let path = paths.updatedPath ? paths.updatedPath : paths.originalPath;\n if (edge.startLabelLeft) {\n const el = terminalLabels[edge.id].startLeft;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n // debugger;\n const pos = utils.calcTerminalLabelPosition(edge.arrowTypeStart ? 10 : 0, 'start_left', path);\n x = pos.x;\n y = pos.y;\n }\n el.attr('transform', 'translate(' + x + ', ' + y + ')');\n }\n if (edge.startLabelRight) {\n const el = terminalLabels[edge.id].startRight;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n // debugger;\n const pos = utils.calcTerminalLabelPosition(\n edge.arrowTypeStart ? 10 : 0,\n 'start_right',\n path\n );\n x = pos.x;\n y = pos.y;\n }\n el.attr('transform', 'translate(' + x + ', ' + y + ')');\n }\n if (edge.endLabelLeft) {\n const el = terminalLabels[edge.id].endLeft;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n // debugger;\n const pos = utils.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, 'end_left', path);\n x = pos.x;\n y = pos.y;\n }\n el.attr('transform', 'translate(' + x + ', ' + y + ')');\n }\n if (edge.endLabelRight) {\n const el = terminalLabels[edge.id].endRight;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n // debugger;\n const pos = utils.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, 'end_right', path);\n x = pos.x;\n y = pos.y;\n }\n el.attr('transform', 'translate(' + x + ', ' + y + ')');\n }\n};\n\n// const getRelationType = function(type) {\n// switch (type) {\n// case stateDb.relationType.AGGREGATION:\n// return 'aggregation';\n// case stateDb.relationType.EXTENSION:\n// return 'extension';\n// case stateDb.relationType.COMPOSITION:\n// return 'composition';\n// case stateDb.relationType.DEPENDENCY:\n// return 'dependency';\n// }\n// };\n\nconst outsideNode = (node, point) => {\n // log.warn('Checking bounds ', node, point);\n const x = node.x;\n const y = node.y;\n const dx = Math.abs(point.x - x);\n const dy = Math.abs(point.y - y);\n const w = node.width / 2;\n const h = node.height / 2;\n if (dx >= w || dy >= h) {\n return true;\n }\n return false;\n};\n\nexport const intersection = (node, outsidePoint, insidePoint) => {\n log.warn(`intersection calc abc89:\n outsidePoint: ${JSON.stringify(outsidePoint)}\n insidePoint : ${JSON.stringify(insidePoint)}\n node : x:${node.x} y:${node.y} w:${node.width} h:${node.height}`);\n const x = node.x;\n const y = node.y;\n\n const dx = Math.abs(x - insidePoint.x);\n // const dy = Math.abs(y - insidePoint.y);\n const w = node.width / 2;\n let r = insidePoint.x < outsidePoint.x ? w - dx : w + dx;\n const h = node.height / 2;\n\n // const edges = {\n // x1: x - w,\n // x2: x + w,\n // y1: y - h,\n // y2: y + h\n // };\n\n // if (\n // outsidePoint.x === edges.x1 ||\n // outsidePoint.x === edges.x2 ||\n // outsidePoint.y === edges.y1 ||\n // outsidePoint.y === edges.y2\n // ) {\n // log.warn('abc89 calc equals on edge', outsidePoint, edges);\n // return outsidePoint;\n // }\n\n const Q = Math.abs(outsidePoint.y - insidePoint.y);\n const R = Math.abs(outsidePoint.x - insidePoint.x);\n // log.warn();\n if (Math.abs(y - outsidePoint.y) * w > Math.abs(x - outsidePoint.x) * h) { // eslint-disable-line\n // Intersection is top or bottom of rect.\n // let q = insidePoint.y < outsidePoint.y ? outsidePoint.y - h - y : y - h - outsidePoint.y;\n let q = insidePoint.y < outsidePoint.y ? outsidePoint.y - h - y : y - h - outsidePoint.y;\n r = (R * q) / Q;\n const res = {\n x: insidePoint.x < outsidePoint.x ? insidePoint.x + r : insidePoint.x - R + r,\n y: insidePoint.y < outsidePoint.y ? insidePoint.y + Q - q : insidePoint.y - Q + q,\n };\n\n if (r === 0) {\n res.x = outsidePoint.x;\n res.y = outsidePoint.y;\n }\n if (R === 0) {\n res.x = outsidePoint.x;\n }\n if (Q === 0) {\n res.y = outsidePoint.y;\n }\n\n log.warn(`abc89 topp/bott calc, Q ${Q}, q ${q}, R ${R}, r ${r}`, res);\n\n return res;\n } else {\n // Intersection onn sides of rect\n if (insidePoint.x < outsidePoint.x) {\n r = outsidePoint.x - w - x;\n } else {\n // r = outsidePoint.x - w - x;\n r = x - w - outsidePoint.x;\n }\n let q = (Q * r) / R;\n // OK let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : insidePoint.x + dx - w;\n // OK let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : outsidePoint.x + r;\n let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : insidePoint.x - R + r;\n // let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : outsidePoint.x + r;\n let _y = insidePoint.y < outsidePoint.y ? insidePoint.y + q : insidePoint.y - q;\n log.warn(`sides calc abc89, Q ${Q}, q ${q}, R ${R}, r ${r}`, { _x, _y });\n if (r === 0) {\n _x = outsidePoint.x;\n _y = outsidePoint.y;\n }\n if (R === 0) {\n _x = outsidePoint.x;\n }\n if (Q === 0) {\n _y = outsidePoint.y;\n }\n\n return { x: _x, y: _y };\n }\n};\n/**\n * This function will page a path and node where the last point(s) in the path is inside the node\n * and return an update path ending by the border of the node.\n *\n * @param {Array} _points\n * @param {any} boundryNode\n * @returns {Array} Points\n */\nconst cutPathAtIntersect = (_points, boundryNode) => {\n log.warn('abc88 cutPathAtIntersect', _points, boundryNode);\n let points = [];\n let lastPointOutside = _points[0];\n let isInside = false;\n _points.forEach((point) => {\n // const node = clusterDb[edge.toCluster].node;\n log.info('abc88 checking point', point, boundryNode);\n\n // check if point is inside the boundry rect\n if (!outsideNode(boundryNode, point) && !isInside) {\n // First point inside the rect found\n // Calc the intersection coord between the point anf the last opint ouside the rect\n const inter = intersection(boundryNode, lastPointOutside, point);\n log.warn('abc88 inside', point, lastPointOutside, inter);\n log.warn('abc88 intersection', inter);\n\n // // Check case where the intersection is the same as the last point\n let pointPresent = false;\n points.forEach((p) => {\n pointPresent = pointPresent || (p.x === inter.x && p.y === inter.y);\n });\n // // if (!pointPresent) {\n if (!points.find((e) => e.x === inter.x && e.y === inter.y)) {\n points.push(inter);\n } else {\n log.warn('abc88 no intersect', inter, points);\n }\n // points.push(inter);\n isInside = true;\n } else {\n // Outside\n log.warn('abc88 outside', point, lastPointOutside);\n lastPointOutside = point;\n // points.push(point);\n if (!isInside) points.push(point);\n }\n });\n log.warn('abc88 returning points', points);\n return points;\n};\n\n//(edgePaths, e, edge, clusterDb, diagramtype, graph)\nexport const insertEdge = function (elem, e, edge, clusterDb, diagramType, graph) {\n let points = edge.points;\n let pointsHasChanged = false;\n const tail = graph.node(e.v);\n var head = graph.node(e.w);\n\n log.info('abc88 InsertEdge: ', edge);\n if (head.intersect && tail.intersect) {\n points = points.slice(1, edge.points.length - 1);\n points.unshift(tail.intersect(points[0]));\n log.info(\n 'Last point',\n points[points.length - 1],\n head,\n head.intersect(points[points.length - 1])\n );\n points.push(head.intersect(points[points.length - 1]));\n }\n if (edge.toCluster) {\n log.info('to cluster abc88', clusterDb[edge.toCluster]);\n points = cutPathAtIntersect(edge.points, clusterDb[edge.toCluster].node);\n // log.trace('edge', edge);\n // points = [];\n // let lastPointOutside; // = edge.points[0];\n // let isInside = false;\n // edge.points.forEach(point => {\n // const node = clusterDb[edge.toCluster].node;\n // log.warn('checking from', edge.fromCluster, point, node);\n\n // if (!outsideNode(node, point) && !isInside) {\n // log.trace('inside', edge.toCluster, point, lastPointOutside);\n\n // // First point inside the rect\n // const inter = intersection(node, lastPointOutside, point);\n\n // let pointPresent = false;\n // points.forEach(p => {\n // pointPresent = pointPresent || (p.x === inter.x && p.y === inter.y);\n // });\n // // if (!pointPresent) {\n // if (!points.find(e => e.x === inter.x && e.y === inter.y)) {\n // points.push(inter);\n // } else {\n // log.warn('no intersect', inter, points);\n // }\n // isInside = true;\n // } else {\n // // outtside\n // lastPointOutside = point;\n // if (!isInside) points.push(point);\n // }\n // });\n pointsHasChanged = true;\n }\n\n if (edge.fromCluster) {\n log.info('from cluster abc88', clusterDb[edge.fromCluster]);\n points = cutPathAtIntersect(points.reverse(), clusterDb[edge.fromCluster].node).reverse();\n // log.warn('edge', edge);\n // log.warn('from cluster', clusterDb[edge.fromCluster], points);\n // const updatedPoints = [];\n // let lastPointOutside = edge.points[edge.points.length - 1];\n // let isInside = false;\n // for (let i = points.length - 1; i >= 0; i--) {\n // const point = points[i];\n // const node = clusterDb[edge.fromCluster].node;\n // log.warn('checking to', edge.fromCluster, point, node);\n\n // if (!outsideNode(node, point) && !isInside) {\n // log.warn('inside', edge.fromCluster, point, node);\n\n // // First point inside the rect\n // const inter = intersection(node, lastPointOutside, point);\n // log.warn('intersect', intersection(node, lastPointOutside, point));\n // let pointPresent = false;\n // points.forEach(p => {\n // pointPresent = pointPresent || (p.x === inter.x && p.y === inter.y);\n // });\n // // if (!pointPresent) {\n // if (!points.find(e => e.x === inter.x && e.y === inter.y)) {\n // updatedPoints.unshift(inter);\n // log.warn('Adding point -updated = ', updatedPoints);\n // } else {\n // log.warn('no intersect', inter, points);\n // }\n // // points.push(insterection);\n // isInside = true;\n // } else {\n // // at the outside\n // // if (!isInside) updatedPoints.unshift(point);\n // updatedPoints.unshift(point);\n // log.warn('Outside point', point, updatedPoints);\n // }\n // lastPointOutside = point;\n // }\n // points = updatedPoints;\n // points = edge.points;\n pointsHasChanged = true;\n }\n\n // The data for our line\n const lineData = points.filter((p) => !Number.isNaN(p.y));\n\n // This is the accessor function we talked about above\n let curve;\n // Currently only flowcharts get the curve from the settings, perhaps this should\n // be expanded to a common setting? Restricting it for now in order not to cause side-effects that\n // have not been thought through\n if (diagramType === 'graph' || diagramType === 'flowchart') {\n curve = edge.curve || curveBasis;\n } else {\n curve = curveBasis;\n }\n // curve = curveLinear;\n const lineFunction = line()\n .x(function (d) {\n return d.x;\n })\n .y(function (d) {\n return d.y;\n })\n .curve(curve);\n\n // Contruct stroke classes based on properties\n let strokeClasses;\n switch (edge.thickness) {\n case 'normal':\n strokeClasses = 'edge-thickness-normal';\n break;\n case 'thick':\n strokeClasses = 'edge-thickness-thick';\n break;\n default:\n strokeClasses = '';\n }\n switch (edge.pattern) {\n case 'solid':\n strokeClasses += ' edge-pattern-solid';\n break;\n case 'dotted':\n strokeClasses += ' edge-pattern-dotted';\n break;\n case 'dashed':\n strokeClasses += ' edge-pattern-dashed';\n break;\n }\n\n const svgPath = elem\n .append('path')\n .attr('d', lineFunction(lineData))\n .attr('id', edge.id)\n .attr('class', ' ' + strokeClasses + (edge.classes ? ' ' + edge.classes : ''))\n .attr('style', edge.style);\n\n // DEBUG code, adds a red circle at each edge coordinate\n // edge.points.forEach(point => {\n // elem\n // .append('circle')\n // .style('stroke', 'red')\n // .style('fill', 'red')\n // .attr('r', 1)\n // .attr('cx', point.x)\n // .attr('cy', point.y);\n // });\n\n let url = '';\n if (getConfig().state.arrowMarkerAbsolute) {\n url =\n window.location.protocol +\n '//' +\n window.location.host +\n window.location.pathname +\n window.location.search;\n url = url.replace(/\\(/g, '\\\\(');\n url = url.replace(/\\)/g, '\\\\)');\n }\n log.info('arrowTypeStart', edge.arrowTypeStart);\n log.info('arrowTypeEnd', edge.arrowTypeEnd);\n\n switch (edge.arrowTypeStart) {\n case 'arrow_cross':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-crossStart' + ')');\n break;\n case 'arrow_point':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-pointStart' + ')');\n break;\n case 'arrow_barb':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-barbStart' + ')');\n break;\n case 'arrow_circle':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-circleStart' + ')');\n break;\n case 'aggregation':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-aggregationStart' + ')');\n break;\n case 'extension':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-extensionStart' + ')');\n break;\n case 'composition':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-compositionStart' + ')');\n break;\n case 'dependency':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-dependencyStart' + ')');\n break;\n default:\n }\n switch (edge.arrowTypeEnd) {\n case 'arrow_cross':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-crossEnd' + ')');\n break;\n case 'arrow_point':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-pointEnd' + ')');\n break;\n case 'arrow_barb':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-barbEnd' + ')');\n break;\n case 'arrow_circle':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-circleEnd' + ')');\n break;\n case 'aggregation':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-aggregationEnd' + ')');\n break;\n case 'extension':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-extensionEnd' + ')');\n break;\n case 'composition':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-compositionEnd' + ')');\n break;\n case 'dependency':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-dependencyEnd' + ')');\n break;\n default:\n }\n let paths = {};\n if (pointsHasChanged) {\n paths.updatedPath = points;\n }\n paths.originalPath = edge.points;\n return paths;\n};\n","import dagre from 'dagre';\nimport graphlib from 'graphlib';\nimport insertMarkers from './markers';\nimport { updateNodeBounds } from './shapes/util';\nimport {\n clear as clearGraphlib,\n clusterDb,\n adjustClustersAndEdges,\n findNonClusterChild,\n sortNodesByHierarchy,\n} from './mermaid-graphlib';\nimport { insertNode, positionNode, clear as clearNodes, setNodeElem } from './nodes';\nimport { insertCluster, clear as clearClusters } from './clusters';\nimport { insertEdgeLabel, positionEdgeLabel, insertEdge, clear as clearEdges } from './edges';\nimport { log } from '../logger';\n\nconst recursiveRender = (_elem, graph, diagramtype, parentCluster) => {\n log.info('Graph in recursive render: XXX', graphlib.json.write(graph), parentCluster);\n const dir = graph.graph().rankdir;\n log.trace('Dir in recursive render - dir:', dir);\n\n const elem = _elem.insert('g').attr('class', 'root'); // eslint-disable-line\n if (!graph.nodes()) {\n log.info('No nodes found for', graph);\n } else {\n log.info('Recursive render XXX', graph.nodes());\n }\n if (graph.edges().length > 0) {\n log.trace('Recursive edges', graph.edge(graph.edges()[0]));\n }\n const clusters = elem.insert('g').attr('class', 'clusters'); // eslint-disable-line\n const edgePaths = elem.insert('g').attr('class', 'edgePaths');\n const edgeLabels = elem.insert('g').attr('class', 'edgeLabels');\n const nodes = elem.insert('g').attr('class', 'nodes');\n\n // Insert nodes, this will insert them into the dom and each node will get a size. The size is updated\n // to the abstract node and is later used by dagre for the layout\n graph.nodes().forEach(function (v) {\n const node = graph.node(v);\n if (typeof parentCluster !== 'undefined') {\n const data = JSON.parse(JSON.stringify(parentCluster.clusterData));\n // data.clusterPositioning = true;\n log.info('Setting data for cluster XXX (', v, ') ', data, parentCluster);\n graph.setNode(parentCluster.id, data);\n if (!graph.parent(v)) {\n log.trace('Setting parent', v, parentCluster.id);\n graph.setParent(v, parentCluster.id, data);\n }\n }\n log.info('(Insert) Node XXX' + v + ': ' + JSON.stringify(graph.node(v)));\n if (node && node.clusterNode) {\n // const children = graph.children(v);\n log.info('Cluster identified', v, node.width, graph.node(v));\n const o = recursiveRender(nodes, node.graph, diagramtype, graph.node(v));\n const newEl = o.elem;\n updateNodeBounds(node, newEl);\n node.diff = o.diff || 0;\n log.info('Node bounds (abc123)', v, node, node.width, node.x, node.y);\n setNodeElem(newEl, node);\n\n log.warn('Recursive render complete ', newEl, node);\n } else {\n if (graph.children(v).length > 0) {\n // This is a cluster but not to be rendered recusively\n // Render as before\n log.info('Cluster - the non recursive path XXX', v, node.id, node, graph);\n log.info(findNonClusterChild(node.id, graph));\n clusterDb[node.id] = { id: findNonClusterChild(node.id, graph), node };\n // insertCluster(clusters, graph.node(v));\n } else {\n log.info('Node - the non recursive path', v, node.id, node);\n insertNode(nodes, graph.node(v), dir);\n }\n }\n });\n\n // Insert labels, this will insert them into the dom so that the width can be calculated\n // Also figure out which edges point to/from clusters and adjust them accordingly\n // Edges from/to clusters really points to the first child in the cluster.\n // TODO: pick optimal child in the cluster to us as link anchor\n graph.edges().forEach(function (e) {\n const edge = graph.edge(e.v, e.w, e.name);\n log.info('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(e));\n log.info('Edge ' + e.v + ' -> ' + e.w + ': ', e, ' ', JSON.stringify(graph.edge(e)));\n\n // Check if link is either from or to a cluster\n log.info('Fix', clusterDb, 'ids:', e.v, e.w, 'Translateing: ', clusterDb[e.v], clusterDb[e.w]);\n insertEdgeLabel(edgeLabels, edge);\n });\n\n graph.edges().forEach(function (e) {\n log.info('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(e));\n });\n log.info('#############################################');\n log.info('### Layout ###');\n log.info('#############################################');\n log.info(graph);\n dagre.layout(graph);\n log.info('Graph after layout:', graphlib.json.write(graph));\n // Move the nodes to the correct place\n let diff = 0;\n sortNodesByHierarchy(graph).forEach(function (v) {\n const node = graph.node(v);\n log.info('Position ' + v + ': ' + JSON.stringify(graph.node(v)));\n log.info(\n 'Position ' + v + ': (' + node.x,\n ',' + node.y,\n ') width: ',\n node.width,\n ' height: ',\n node.height\n );\n if (node && node.clusterNode) {\n // clusterDb[node.id].node = node;\n\n positionNode(node);\n } else {\n // Non cluster node\n if (graph.children(v).length > 0) {\n // A cluster in the non-recurive way\n // positionCluster(node);\n insertCluster(clusters, node);\n clusterDb[node.id].node = node;\n } else {\n positionNode(node);\n }\n }\n });\n\n // Move the edge labels to the correct place after layout\n graph.edges().forEach(function (e) {\n const edge = graph.edge(e);\n log.info('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(edge), edge);\n\n const paths = insertEdge(edgePaths, e, edge, clusterDb, diagramtype, graph);\n positionEdgeLabel(edge, paths);\n });\n\n graph.nodes().forEach(function (v) {\n const n = graph.node(v);\n log.info(v, n.type, n.diff);\n if (n.type === 'group') {\n diff = n.diff;\n }\n });\n return { elem, diff };\n};\n\nexport const render = (elem, graph, markers, diagramtype, id) => {\n insertMarkers(elem, markers, diagramtype, id);\n clearNodes();\n clearEdges();\n clearClusters();\n clearGraphlib();\n\n log.warn('Graph at first:', graphlib.json.write(graph));\n adjustClustersAndEdges(graph);\n log.warn('Graph after:', graphlib.json.write(graph));\n // log.warn('Graph ever after:', graphlib.json.write(graph.node('A').graph));\n recursiveRender(elem, graph, diagramtype);\n};\n\n// const shapeDefinitions = {};\n// export const addShape = ({ shapeType: fun }) => {\n// shapeDefinitions[shapeType] = fun;\n// };\n\n// const arrowDefinitions = {};\n// export const addArrow = ({ arrowType: fun }) => {\n// arrowDefinitions[arrowType] = fun;\n// };\n","import { select } from 'd3';\nimport dagre from 'dagre';\nimport graphlib from 'graphlib';\nimport { log } from '../../logger';\nimport classDb, { lookUpDomId } from './classDb';\nimport { parser } from './parser/classDiagram';\nimport svgDraw from './svgDraw';\nimport { getConfig } from '../../config';\nimport { render } from '../../dagre-wrapper/index.js';\n// import addHtmlLabel from 'dagre-d3/lib/label/add-html-label.js';\nimport { curveLinear } from 'd3';\nimport { interpolateToCurve, getStylesFromArray, configureSvgSize } from '../../utils';\nimport common from '../common/common';\nimport addSVGAccessibilityFields from '../../accessibility';\n\nparser.yy = classDb;\n\nlet idCache = {};\nconst padding = 20;\n\nconst sanitizeText = (txt) => common.sanitizeText(txt, getConfig());\n\nconst conf = {\n dividerMargin: 10,\n padding: 5,\n textHeight: 10,\n};\n\n/**\n * Function that adds the vertices found during parsing to the graph to be rendered.\n *\n * @param {Object<\n * string,\n * { cssClasses: string[]; text: string; id: string; type: string; domId: string }\n * >} classes\n * Object containing the vertices.\n * @param {SVGGElement} g The graph that is to be drawn.\n */\nexport const addClasses = function (classes, g) {\n // const svg = select(`[id=\"${svgId}\"]`);\n const keys = Object.keys(classes);\n log.info('keys:', keys);\n log.info(classes);\n\n // Iterate through each item in the vertex object (containing all the vertices found) in the graph definition\n keys.forEach(function (id) {\n const vertex = classes[id];\n\n /**\n * Variable for storing the classes for the vertex\n *\n * @type {string}\n */\n let cssClassStr = '';\n if (vertex.cssClasses.length > 0) {\n cssClassStr = cssClassStr + ' ' + vertex.cssClasses.join(' ');\n }\n // if (vertex.classes.length > 0) {\n // classStr = vertex.classes.join(' ');\n // }\n\n const styles = { labelStyle: '' }; //getStylesFromArray(vertex.styles);\n\n // Use vertex id as text in the box if no text is provided by the graph definition\n let vertexText = vertex.text !== undefined ? vertex.text : vertex.id;\n\n // We create a SVG label, either by delegating to addHtmlLabel or manually\n // let vertexNode;\n // if (evaluate(getConfig().flowchart.htmlLabels)) {\n // const node = {\n // label: vertexText.replace(\n // /fa[lrsb]?:fa-[\\w-]+/g,\n // s => `<i class='${s.replace(':', ' ')}'></i>`\n // )\n // };\n // vertexNode = addHtmlLabel(svg, node).node();\n // vertexNode.parentNode.removeChild(vertexNode);\n // } else {\n // const svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text');\n // svgLabel.setAttribute('style', styles.labelStyle.replace('color:', 'fill:'));\n\n // const rows = vertexText.split(common.lineBreakRegex);\n\n // for (let j = 0; j < rows.length; j++) {\n // const tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');\n // tspan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n // tspan.setAttribute('dy', '1em');\n // tspan.setAttribute('x', '1');\n // tspan.textContent = rows[j];\n // svgLabel.appendChild(tspan);\n // }\n // vertexNode = svgLabel;\n // }\n\n let radious = 0;\n let _shape = '';\n // Set the shape based parameters\n switch (vertex.type) {\n case 'class':\n _shape = 'class_box';\n break;\n default:\n _shape = 'class_box';\n }\n // Add the node\n g.setNode(vertex.id, {\n labelStyle: styles.labelStyle,\n shape: _shape,\n labelText: sanitizeText(vertexText),\n classData: vertex,\n rx: radious,\n ry: radious,\n class: cssClassStr,\n style: styles.style,\n id: vertex.id,\n domId: vertex.domId,\n haveCallback: vertex.haveCallback,\n link: vertex.link,\n width: vertex.type === 'group' ? 500 : undefined,\n type: vertex.type,\n padding: getConfig().flowchart.padding,\n });\n\n log.info('setNode', {\n labelStyle: styles.labelStyle,\n shape: _shape,\n labelText: vertexText,\n rx: radious,\n ry: radious,\n class: cssClassStr,\n style: styles.style,\n id: vertex.id,\n width: vertex.type === 'group' ? 500 : undefined,\n type: vertex.type,\n padding: getConfig().flowchart.padding,\n });\n });\n};\n\n/**\n * Add edges to graph based on parsed graph defninition\n *\n * @param relations\n * @param {object} g The graph object\n */\nexport const addRelations = function (relations, g) {\n let cnt = 0;\n\n let defaultStyle;\n let defaultLabelStyle;\n\n // if (typeof relations.defaultStyle !== 'undefined') {\n // const defaultStyles = getStylesFromArray(relations.defaultStyle);\n // defaultStyle = defaultStyles.style;\n // defaultLabelStyle = defaultStyles.labelStyle;\n // }\n\n relations.forEach(function (edge) {\n cnt++;\n const edgeData = {};\n //Set relationship style and line type\n edgeData.classes = 'relation';\n edgeData.pattern = edge.relation.lineType == 1 ? 'dashed' : 'solid';\n\n edgeData.id = 'id' + cnt;\n // Set link type for rendering\n if (edge.type === 'arrow_open') {\n edgeData.arrowhead = 'none';\n } else {\n edgeData.arrowhead = 'normal';\n }\n\n log.info(edgeData, edge);\n //Set edge extra labels\n //edgeData.startLabelLeft = edge.relationTitle1;\n edgeData.startLabelRight = edge.relationTitle1 === 'none' ? '' : edge.relationTitle1;\n edgeData.endLabelLeft = edge.relationTitle2 === 'none' ? '' : edge.relationTitle2;\n //edgeData.endLabelRight = edge.relationTitle2;\n\n //Set relation arrow types\n edgeData.arrowTypeStart = getArrowMarker(edge.relation.type1);\n edgeData.arrowTypeEnd = getArrowMarker(edge.relation.type2);\n let style = '';\n let labelStyle = '';\n\n if (typeof edge.style !== 'undefined') {\n const styles = getStylesFromArray(edge.style);\n style = styles.style;\n labelStyle = styles.labelStyle;\n } else {\n style = 'fill:none';\n if (typeof defaultStyle !== 'undefined') {\n style = defaultStyle;\n }\n if (typeof defaultLabelStyle !== 'undefined') {\n labelStyle = defaultLabelStyle;\n }\n }\n\n edgeData.style = style;\n edgeData.labelStyle = labelStyle;\n\n if (typeof edge.interpolate !== 'undefined') {\n edgeData.curve = interpolateToCurve(edge.interpolate, curveLinear);\n } else if (typeof relations.defaultInterpolate !== 'undefined') {\n edgeData.curve = interpolateToCurve(relations.defaultInterpolate, curveLinear);\n } else {\n edgeData.curve = interpolateToCurve(conf.curve, curveLinear);\n }\n\n edge.text = edge.title;\n if (typeof edge.text === 'undefined') {\n if (typeof edge.style !== 'undefined') {\n edgeData.arrowheadStyle = 'fill: #333';\n }\n } else {\n edgeData.arrowheadStyle = 'fill: #333';\n edgeData.labelpos = 'c';\n\n if (getConfig().flowchart.htmlLabels) {\n // eslint-disable-line\n edgeData.labelType = 'html';\n edgeData.label = '<span class=\"edgeLabel\">' + edge.text + '</span>';\n } else {\n edgeData.labelType = 'text';\n edgeData.label = edge.text.replace(common.lineBreakRegex, '\\n');\n\n if (typeof edge.style === 'undefined') {\n edgeData.style = edgeData.style || 'stroke: #333; stroke-width: 1.5px;fill:none';\n }\n\n edgeData.labelStyle = edgeData.labelStyle.replace('color:', 'fill:');\n }\n }\n // Add the edge to the graph\n g.setEdge(edge.id1, edge.id2, edgeData, cnt);\n });\n};\n\n/**\n * Gets the ID with the same label as in the cache\n *\n * @param {string} label The label to look for\n * @returns {string} The resulting ID\n */\nconst getGraphId = function (label) {\n const foundEntry = Object.entries(idCache).find((entry) => entry[1].label === label);\n\n if (foundEntry) {\n return foundEntry[0];\n }\n};\n\n/**\n * Merges the value of `conf` with the passed `cnf`\n *\n * @param {object} cnf Config to merge\n */\nexport const setConf = function (cnf) {\n const keys = Object.keys(cnf);\n\n keys.forEach(function (key) {\n conf[key] = cnf[key];\n });\n};\n\n/**\n * Draws a flowchart in the tag with id: id based on the graph definition in text.\n *\n * @param {string} text\n * @param {string} id\n */\nexport const draw = function (text, id) {\n log.info('Drawing class - ', id);\n classDb.clear();\n // const parser = classDb.parser;\n // parser.yy = classDb;\n\n // Parse the graph definition\n // try {\n parser.parse(text);\n // } catch (err) {\n // log.debug('Parsing failed');\n // }\n\n // Fetch the default direction, use TD if none was found\n //let dir = 'TD';\n\n const conf = getConfig().flowchart;\n const securityLevel = getConfig().securityLevel;\n log.info('config:', conf);\n const nodeSpacing = conf.nodeSpacing || 50;\n const rankSpacing = conf.rankSpacing || 50;\n\n // Create the input mermaid.graph\n const g = new graphlib.Graph({\n multigraph: true,\n compound: true,\n })\n .setGraph({\n rankdir: classDb.getDirection(),\n nodesep: nodeSpacing,\n ranksep: rankSpacing,\n marginx: 8,\n marginy: 8,\n })\n .setDefaultEdgeLabel(function () {\n return {};\n });\n\n // let subG;\n // const subGraphs = flowDb.getSubGraphs();\n // log.info('Subgraphs - ', subGraphs);\n // for (let i = subGraphs.length - 1; i >= 0; i--) {\n // subG = subGraphs[i];\n // log.info('Subgraph - ', subG);\n // flowDb.addVertex(subG.id, subG.title, 'group', undefined, subG.classes);\n // }\n\n // Fetch the verices/nodes and edges/links from the parsed graph definition\n const classes = classDb.getClasses();\n const relations = classDb.getRelations();\n\n log.info(relations);\n // let i = 0;\n // for (i = subGraphs.length - 1; i >= 0; i--) {\n // subG = subGraphs[i];\n\n // selectAll('cluster').append('text');\n\n // for (let j = 0; j < subG.nodes.length; j++) {\n // g.setParent(subG.nodes[j], subG.id);\n // }\n // }\n addClasses(classes, g, id);\n addRelations(relations, g);\n\n // Add custom shapes\n // flowChartShapes.addToRenderV2(addShape);\n\n // Set up an SVG group so that we can translate the final graph.\n let sandboxElement;\n if (securityLevel === 'sandbox') {\n sandboxElement = select('#i' + id);\n }\n const root =\n securityLevel === 'sandbox'\n ? select(sandboxElement.nodes()[0].contentDocument.body)\n : select('body');\n const svg = root.select(`[id=\"${id}\"]`);\n svg.attr('xmlns:xlink', 'http://www.w3.org/1999/xlink');\n\n // Run the renderer. This is what draws the final graph.\n const element = root.select('#' + id + ' g');\n render(element, g, ['aggregation', 'extension', 'composition', 'dependency'], 'classDiagram', id);\n\n // element.selectAll('g.node').attr('title', function() {\n // return flowDb.getTooltip(this.id);\n // });\n\n const padding = 8;\n const svgBounds = svg.node().getBBox();\n const width = svgBounds.width + padding * 2;\n const height = svgBounds.height + padding * 2;\n log.debug(\n `new ViewBox 0 0 ${width} ${height}`,\n `translate(${padding - g._label.marginx}, ${padding - g._label.marginy})`\n );\n\n configureSvgSize(svg, height, width, conf.useMaxWidth);\n\n svg.attr('viewBox', `0 0 ${width} ${height}`);\n svg\n .select('g')\n .attr('transform', `translate(${padding - g._label.marginx}, ${padding - svgBounds.y})`);\n\n // Index nodes\n // flowDb.indexNodes('subGraph' + i);\n\n // Add label rects for non html labels\n if (!conf.htmlLabels) {\n const doc = securityLevel === 'sandbox' ? sandboxElement.nodes()[0].contentDocument : document;\n const labels = doc.querySelectorAll('[id=\"' + id + '\"] .edgeLabel .label');\n for (let k = 0; k < labels.length; k++) {\n const label = labels[k];\n\n // Get dimensions of label\n const dim = label.getBBox();\n\n const rect = doc.createElementNS('http://www.w3.org/2000/svg', 'rect');\n rect.setAttribute('rx', 0);\n rect.setAttribute('ry', 0);\n rect.setAttribute('width', dim.width);\n rect.setAttribute('height', dim.height);\n // rect.setAttribute('style', 'fill:#e8e8e8;');\n\n label.insertBefore(rect, label.firstChild);\n }\n }\n\n addSVGAccessibilityFields(parser.yy, svg, id);\n // If node has a link, wrap it in an anchor SVG object.\n // const keys = Object.keys(classes);\n // keys.forEach(function(key) {\n // const vertex = classes[key];\n\n // if (vertex.link) {\n // const node = select('#' + id + ' [id=\"' + key + '\"]');\n // if (node) {\n // const link = document.createElementNS('http://www.w3.org/2000/svg', 'a');\n // link.setAttributeNS('http://www.w3.org/2000/svg', 'class', vertex.classes.join(' '));\n // link.setAttributeNS('http://www.w3.org/2000/svg', 'href', vertex.link);\n // link.setAttributeNS('http://www.w3.org/2000/svg', 'rel', 'noopener');\n\n // const linkNode = node.insert(function() {\n // return link;\n // }, ':first-child');\n\n // const shape = node.select('.label-container');\n // if (shape) {\n // linkNode.append(function() {\n // return shape.node();\n // });\n // }\n\n // const label = node.select('.label');\n // if (label) {\n // linkNode.append(function() {\n // return label.node();\n // });\n // }\n // }\n // }\n // });\n};\n\n/**\n * Gets the arrow marker for a type index\n *\n * @param {number} type The type to look for\n * @returns {'aggregation' | 'extension' | 'composition' | 'dependency'} The arrow marker\n */\nfunction getArrowMarker(type) {\n let marker;\n switch (type) {\n case 0:\n marker = 'aggregation';\n break;\n case 1:\n marker = 'extension';\n break;\n case 2:\n marker = 'composition';\n break;\n case 3:\n marker = 'dependency';\n break;\n default:\n marker = 'none';\n }\n return marker;\n}\n\nexport default {\n setConf,\n draw,\n};\n","import { log } from '../../logger';\nimport mermaidAPI from '../../mermaidAPI';\nimport * as configApi from '../../config';\nimport common from '../common/common';\nimport {\n setTitle,\n getTitle,\n getAccDescription,\n setAccDescription,\n clear as commonClear,\n} from '../../commonDb';\n\nlet entities = {};\nlet relationships = [];\nlet title = '';\nlet description = '';\n\nconst Cardinality = {\n ZERO_OR_ONE: 'ZERO_OR_ONE',\n ZERO_OR_MORE: 'ZERO_OR_MORE',\n ONE_OR_MORE: 'ONE_OR_MORE',\n ONLY_ONE: 'ONLY_ONE',\n};\n\nconst Identification = {\n NON_IDENTIFYING: 'NON_IDENTIFYING',\n IDENTIFYING: 'IDENTIFYING',\n};\n\nexport const parseDirective = function (statement, context, type) {\n mermaidAPI.parseDirective(this, statement, context, type);\n};\n\nconst addEntity = function (name) {\n if (typeof entities[name] === 'undefined') {\n entities[name] = { attributes: [] };\n log.info('Added new entity :', name);\n }\n\n return entities[name];\n};\n\nconst getEntities = () => entities;\n\nconst addAttributes = function (entityName, attribs) {\n let entity = addEntity(entityName); // May do nothing (if entity has already been added)\n\n // Process attribs in reverse order due to effect of recursive construction (last attribute is first)\n let i;\n for (i = attribs.length - 1; i >= 0; i--) {\n entity.attributes.push(attribs[i]);\n log.debug('Added attribute ', attribs[i].attributeName);\n }\n};\n\n/**\n * Add a relationship\n *\n * @param entA The first entity in the relationship\n * @param rolA The role played by the first entity in relation to the second\n * @param entB The second entity in the relationship\n * @param rSpec The details of the relationship between the two entities\n */\nconst addRelationship = function (entA, rolA, entB, rSpec) {\n let rel = {\n entityA: entA,\n roleA: rolA,\n entityB: entB,\n relSpec: rSpec,\n };\n\n relationships.push(rel);\n log.debug('Added new relationship :', rel);\n};\n\nconst getRelationships = () => relationships;\n\nconst clear = function () {\n entities = {};\n relationships = [];\n title = '';\n commonClear();\n};\n\nexport default {\n Cardinality,\n Identification,\n parseDirective,\n getConfig: () => configApi.getConfig().er,\n addEntity,\n addAttributes,\n getEntities,\n addRelationship,\n getRelationships,\n clear,\n setTitle,\n getTitle,\n setAccDescription,\n getAccDescription,\n};\n","const ERMarkers = {\n ONLY_ONE_START: 'ONLY_ONE_START',\n ONLY_ONE_END: 'ONLY_ONE_END',\n ZERO_OR_ONE_START: 'ZERO_OR_ONE_START',\n ZERO_OR_ONE_END: 'ZERO_OR_ONE_END',\n ONE_OR_MORE_START: 'ONE_OR_MORE_START',\n ONE_OR_MORE_END: 'ONE_OR_MORE_END',\n ZERO_OR_MORE_START: 'ZERO_OR_MORE_START',\n ZERO_OR_MORE_END: 'ZERO_OR_MORE_END',\n};\n\n/**\n * Put the markers into the svg DOM for later use with edge paths\n *\n * @param elem\n * @param conf\n */\nconst insertMarkers = function (elem, conf) {\n let marker;\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', ERMarkers.ONLY_ONE_START)\n .attr('refX', 0)\n .attr('refY', 9)\n .attr('markerWidth', 18)\n .attr('markerHeight', 18)\n .attr('orient', 'auto')\n .append('path')\n .attr('stroke', conf.stroke)\n .attr('fill', 'none')\n .attr('d', 'M9,0 L9,18 M15,0 L15,18');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', ERMarkers.ONLY_ONE_END)\n .attr('refX', 18)\n .attr('refY', 9)\n .attr('markerWidth', 18)\n .attr('markerHeight', 18)\n .attr('orient', 'auto')\n .append('path')\n .attr('stroke', conf.stroke)\n .attr('fill', 'none')\n .attr('d', 'M3,0 L3,18 M9,0 L9,18');\n\n marker = elem\n .append('defs')\n .append('marker')\n .attr('id', ERMarkers.ZERO_OR_ONE_START)\n .attr('refX', 0)\n .attr('refY', 9)\n .attr('markerWidth', 30)\n .attr('markerHeight', 18)\n .attr('orient', 'auto');\n marker\n .append('circle')\n .attr('stroke', conf.stroke)\n .attr('fill', 'white')\n .attr('cx', 21)\n .attr('cy', 9)\n .attr('r', 6);\n marker.append('path').attr('stroke', conf.stroke).attr('fill', 'none').attr('d', 'M9,0 L9,18');\n\n marker = elem\n .append('defs')\n .append('marker')\n .attr('id', ERMarkers.ZERO_OR_ONE_END)\n .attr('refX', 30)\n .attr('refY', 9)\n .attr('markerWidth', 30)\n .attr('markerHeight', 18)\n .attr('orient', 'auto');\n marker\n .append('circle')\n .attr('stroke', conf.stroke)\n .attr('fill', 'white')\n .attr('cx', 9)\n .attr('cy', 9)\n .attr('r', 6);\n marker.append('path').attr('stroke', conf.stroke).attr('fill', 'none').attr('d', 'M21,0 L21,18');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', ERMarkers.ONE_OR_MORE_START)\n .attr('refX', 18)\n .attr('refY', 18)\n .attr('markerWidth', 45)\n .attr('markerHeight', 36)\n .attr('orient', 'auto')\n .append('path')\n .attr('stroke', conf.stroke)\n .attr('fill', 'none')\n .attr('d', 'M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27');\n\n elem\n .append('defs')\n .append('marker')\n .attr('id', ERMarkers.ONE_OR_MORE_END)\n .attr('refX', 27)\n .attr('refY', 18)\n .attr('markerWidth', 45)\n .attr('markerHeight', 36)\n .attr('orient', 'auto')\n .append('path')\n .attr('stroke', conf.stroke)\n .attr('fill', 'none')\n .attr('d', 'M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18');\n\n marker = elem\n .append('defs')\n .append('marker')\n .attr('id', ERMarkers.ZERO_OR_MORE_START)\n .attr('refX', 18)\n .attr('refY', 18)\n .attr('markerWidth', 57)\n .attr('markerHeight', 36)\n .attr('orient', 'auto');\n marker\n .append('circle')\n .attr('stroke', conf.stroke)\n .attr('fill', 'white')\n .attr('cx', 48)\n .attr('cy', 18)\n .attr('r', 6);\n marker\n .append('path')\n .attr('stroke', conf.stroke)\n .attr('fill', 'none')\n .attr('d', 'M0,18 Q18,0 36,18 Q18,36 0,18');\n\n marker = elem\n .append('defs')\n .append('marker')\n .attr('id', ERMarkers.ZERO_OR_MORE_END)\n .attr('refX', 39)\n .attr('refY', 18)\n .attr('markerWidth', 57)\n .attr('markerHeight', 36)\n .attr('orient', 'auto');\n marker\n .append('circle')\n .attr('stroke', conf.stroke)\n .attr('fill', 'white')\n .attr('cx', 9)\n .attr('cy', 18)\n .attr('r', 6);\n marker\n .append('path')\n .attr('stroke', conf.stroke)\n .attr('fill', 'none')\n .attr('d', 'M21,18 Q39,0 57,18 Q39,36 21,18');\n\n return;\n};\n\nexport default {\n ERMarkers,\n insertMarkers,\n};\n","import graphlib from 'graphlib';\nimport { line, curveBasis, select } from 'd3';\nimport erDb from './erDb';\nimport erParser from './parser/erDiagram';\nimport dagre from 'dagre';\nimport { getConfig } from '../../config';\nimport { log } from '../../logger';\nimport erMarkers from './erMarkers';\nimport { configureSvgSize } from '../../utils';\nimport addSVGAccessibilityFields from '../../accessibility';\n\nconst conf = {};\n\n/**\n * Allows the top-level API module to inject config specific to this renderer, storing it in the\n * local conf object. Note that generic config still needs to be retrieved using getConfig()\n * imported from the config module\n *\n * @param cnf\n */\nexport const setConf = function (cnf) {\n const keys = Object.keys(cnf);\n for (let i = 0; i < keys.length; i++) {\n conf[keys[i]] = cnf[keys[i]];\n }\n};\n\n/**\n * Draw attributes for an entity\n *\n * @param groupNode The svg group node for the entity\n * @param entityTextNode The svg node for the entity label text\n * @param attributes An array of attributes defined for the entity (each attribute has a type and a name)\n * @returns The bounding box of the entity, after attributes have been added\n */\nconst drawAttributes = (groupNode, entityTextNode, attributes) => {\n const heightPadding = conf.entityPadding / 3; // Padding internal to attribute boxes\n const widthPadding = conf.entityPadding / 3; // Ditto\n const attrFontSize = conf.fontSize * 0.85;\n const labelBBox = entityTextNode.node().getBBox();\n const attributeNodes = []; // Intermediate storage for attribute nodes created so that we can do a second pass\n let hasKeyType = false;\n let hasComment = false;\n let maxTypeWidth = 0;\n let maxNameWidth = 0;\n let maxKeyWidth = 0;\n let maxCommentWidth = 0;\n let cumulativeHeight = labelBBox.height + heightPadding * 2;\n let attrNum = 1;\n\n // Check to see if any of the attributes has a key or a comment\n attributes.forEach((item) => {\n if (item.attributeKeyType !== undefined) {\n hasKeyType = true;\n }\n\n if (item.attributeComment !== undefined) {\n hasComment = true;\n }\n });\n\n attributes.forEach((item) => {\n const attrPrefix = `${entityTextNode.node().id}-attr-${attrNum}`;\n let nodeHeight = 0;\n\n // Add a text node for the attribute type\n const typeNode = groupNode\n .append('text')\n .attr('class', 'er entityLabel')\n .attr('id', `${attrPrefix}-type`)\n .attr('x', 0)\n .attr('y', 0)\n .attr('dominant-baseline', 'middle')\n .attr('text-anchor', 'left')\n .attr(\n 'style',\n 'font-family: ' + getConfig().fontFamily + '; font-size: ' + attrFontSize + 'px'\n )\n .text(item.attributeType);\n\n // Add a text node for the attribute name\n const nameNode = groupNode\n .append('text')\n .attr('class', 'er entityLabel')\n .attr('id', `${attrPrefix}-name`)\n .attr('x', 0)\n .attr('y', 0)\n .attr('dominant-baseline', 'middle')\n .attr('text-anchor', 'left')\n .attr(\n 'style',\n 'font-family: ' + getConfig().fontFamily + '; font-size: ' + attrFontSize + 'px'\n )\n .text(item.attributeName);\n\n const attributeNode = {};\n attributeNode.tn = typeNode;\n attributeNode.nn = nameNode;\n\n const typeBBox = typeNode.node().getBBox();\n const nameBBox = nameNode.node().getBBox();\n maxTypeWidth = Math.max(maxTypeWidth, typeBBox.width);\n maxNameWidth = Math.max(maxNameWidth, nameBBox.width);\n\n nodeHeight = Math.max(typeBBox.height, nameBBox.height);\n\n if (hasKeyType) {\n const keyTypeNode = groupNode\n .append('text')\n .attr('class', 'er entityLabel')\n .attr('id', `${attrPrefix}-key`)\n .attr('x', 0)\n .attr('y', 0)\n .attr('dominant-baseline', 'middle')\n .attr('text-anchor', 'left')\n .attr(\n 'style',\n 'font-family: ' + getConfig().fontFamily + '; font-size: ' + attrFontSize + 'px'\n )\n .text(item.attributeKeyType || '');\n\n attributeNode.kn = keyTypeNode;\n const keyTypeBBox = keyTypeNode.node().getBBox();\n maxKeyWidth = Math.max(maxKeyWidth, keyTypeBBox.width);\n nodeHeight = Math.max(nodeHeight, keyTypeBBox.height);\n }\n\n if (hasComment) {\n const commentNode = groupNode\n .append('text')\n .attr('class', 'er entityLabel')\n .attr('id', `${attrPrefix}-comment`)\n .attr('x', 0)\n .attr('y', 0)\n .attr('dominant-baseline', 'middle')\n .attr('text-anchor', 'left')\n .attr(\n 'style',\n 'font-family: ' + getConfig().fontFamily + '; font-size: ' + attrFontSize + 'px'\n )\n .text(item.attributeComment || '');\n\n attributeNode.cn = commentNode;\n const commentNodeBBox = commentNode.node().getBBox();\n maxCommentWidth = Math.max(maxCommentWidth, commentNodeBBox.width);\n nodeHeight = Math.max(nodeHeight, commentNodeBBox.height);\n }\n\n attributeNode.height = nodeHeight;\n // Keep a reference to the nodes so that we can iterate through them later\n attributeNodes.push(attributeNode);\n cumulativeHeight += nodeHeight + heightPadding * 2;\n attrNum += 1;\n });\n\n let widthPaddingFactor = 4;\n if (hasKeyType) {\n widthPaddingFactor += 2;\n }\n if (hasComment) {\n widthPaddingFactor += 2;\n }\n\n const maxWidth = maxTypeWidth + maxNameWidth + maxKeyWidth + maxCommentWidth;\n\n // Calculate the new bounding box of the overall entity, now that attributes have been added\n const bBox = {\n width: Math.max(\n conf.minEntityWidth,\n Math.max(\n labelBBox.width + conf.entityPadding * 2,\n maxWidth + widthPadding * widthPaddingFactor\n )\n ),\n height:\n attributes.length > 0\n ? cumulativeHeight\n : Math.max(conf.minEntityHeight, labelBBox.height + conf.entityPadding * 2),\n };\n\n if (attributes.length > 0) {\n // There might be some spare width for padding out attributes if the entity name is very long\n const spareColumnWidth = Math.max(\n 0,\n (bBox.width - maxWidth - widthPadding * widthPaddingFactor) / (widthPaddingFactor / 2)\n );\n\n // Position the entity label near the top of the entity bounding box\n entityTextNode.attr(\n 'transform',\n 'translate(' + bBox.width / 2 + ',' + (heightPadding + labelBBox.height / 2) + ')'\n );\n\n // Add rectangular boxes for the attribute types/names\n let heightOffset = labelBBox.height + heightPadding * 2; // Start at the bottom of the entity label\n let attribStyle = 'attributeBoxOdd'; // We will flip the style on alternate rows to achieve a banded effect\n\n attributeNodes.forEach((attributeNode) => {\n // Calculate the alignment y co-ordinate for the type/name of the attribute\n const alignY = heightOffset + heightPadding + attributeNode.height / 2;\n\n // Position the type attribute\n attributeNode.tn.attr('transform', 'translate(' + widthPadding + ',' + alignY + ')');\n\n // TODO Handle spareWidth in attr('width')\n // Insert a rectangle for the type\n const typeRect = groupNode\n .insert('rect', '#' + attributeNode.tn.node().id)\n .attr('class', `er ${attribStyle}`)\n .attr('fill', conf.fill)\n .attr('fill-opacity', '100%')\n .attr('stroke', conf.stroke)\n .attr('x', 0)\n .attr('y', heightOffset)\n .attr('width', maxTypeWidth + widthPadding * 2 + spareColumnWidth)\n .attr('height', attributeNode.height + heightPadding * 2);\n\n const nameXOffset = parseFloat(typeRect.attr('x')) + parseFloat(typeRect.attr('width'));\n\n // Position the name attribute\n attributeNode.nn.attr(\n 'transform',\n 'translate(' + (nameXOffset + widthPadding) + ',' + alignY + ')'\n );\n\n // Insert a rectangle for the name\n const nameRect = groupNode\n .insert('rect', '#' + attributeNode.nn.node().id)\n .attr('class', `er ${attribStyle}`)\n .attr('fill', conf.fill)\n .attr('fill-opacity', '100%')\n .attr('stroke', conf.stroke)\n .attr('x', nameXOffset)\n .attr('y', heightOffset)\n .attr('width', maxNameWidth + widthPadding * 2 + spareColumnWidth)\n .attr('height', attributeNode.height + heightPadding * 2);\n\n let keyTypeAndCommentXOffset =\n parseFloat(nameRect.attr('x')) + parseFloat(nameRect.attr('width'));\n\n if (hasKeyType) {\n // Position the key type attribute\n attributeNode.kn.attr(\n 'transform',\n 'translate(' + (keyTypeAndCommentXOffset + widthPadding) + ',' + alignY + ')'\n );\n\n // Insert a rectangle for the key type\n const keyTypeRect = groupNode\n .insert('rect', '#' + attributeNode.kn.node().id)\n .attr('class', `er ${attribStyle}`)\n .attr('fill', conf.fill)\n .attr('fill-opacity', '100%')\n .attr('stroke', conf.stroke)\n .attr('x', keyTypeAndCommentXOffset)\n .attr('y', heightOffset)\n .attr('width', maxKeyWidth + widthPadding * 2 + spareColumnWidth)\n .attr('height', attributeNode.height + heightPadding * 2);\n\n keyTypeAndCommentXOffset =\n parseFloat(keyTypeRect.attr('x')) + parseFloat(keyTypeRect.attr('width'));\n }\n\n if (hasComment) {\n // Position the comment attribute\n attributeNode.cn.attr(\n 'transform',\n 'translate(' + (keyTypeAndCommentXOffset + widthPadding) + ',' + alignY + ')'\n );\n\n // Insert a rectangle for the comment\n groupNode\n .insert('rect', '#' + attributeNode.cn.node().id)\n .attr('class', `er ${attribStyle}`)\n .attr('fill', conf.fill)\n .attr('fill-opacity', '100%')\n .attr('stroke', conf.stroke)\n .attr('x', keyTypeAndCommentXOffset)\n .attr('y', heightOffset)\n .attr('width', maxCommentWidth + widthPadding * 2 + spareColumnWidth)\n .attr('height', attributeNode.height + heightPadding * 2);\n }\n\n // Increment the height offset to move to the next row\n heightOffset += attributeNode.height + heightPadding * 2;\n\n // Flip the attribute style for row banding\n attribStyle = attribStyle == 'attributeBoxOdd' ? 'attributeBoxEven' : 'attributeBoxOdd';\n });\n } else {\n // Ensure the entity box is a decent size without any attributes\n bBox.height = Math.max(conf.minEntityHeight, cumulativeHeight);\n\n // Position the entity label in the middle of the box\n entityTextNode.attr('transform', 'translate(' + bBox.width / 2 + ',' + bBox.height / 2 + ')');\n }\n\n return bBox;\n};\n\n/**\n * Use D3 to construct the svg elements for the entities\n *\n * @param svgNode The svg node that contains the diagram\n * @param entities The entities to be drawn\n * @param graph The graph that contains the vertex and edge definitions post-layout\n * @returns The first entity that was inserted\n */\nconst drawEntities = function (svgNode, entities, graph) {\n const keys = Object.keys(entities);\n let firstOne;\n\n keys.forEach(function (id) {\n // Create a group for each entity\n const groupNode = svgNode.append('g').attr('id', id);\n\n firstOne = firstOne === undefined ? id : firstOne;\n\n // Label the entity - this is done first so that we can get the bounding box\n // which then determines the size of the rectangle\n const textId = 'entity-' + id;\n const textNode = groupNode\n .append('text')\n .attr('class', 'er entityLabel')\n .attr('id', textId)\n .attr('x', 0)\n .attr('y', 0)\n .attr('dominant-baseline', 'middle')\n .attr('text-anchor', 'middle')\n .attr(\n 'style',\n 'font-family: ' + getConfig().fontFamily + '; font-size: ' + conf.fontSize + 'px'\n )\n .text(id);\n\n const { width: entityWidth, height: entityHeight } = drawAttributes(\n groupNode,\n textNode,\n entities[id].attributes\n );\n\n // Draw the rectangle - insert it before the text so that the text is not obscured\n const rectNode = groupNode\n .insert('rect', '#' + textId)\n .attr('class', 'er entityBox')\n .attr('fill', conf.fill)\n .attr('fill-opacity', '100%')\n .attr('stroke', conf.stroke)\n .attr('x', 0)\n .attr('y', 0)\n .attr('width', entityWidth)\n .attr('height', entityHeight);\n\n const rectBBox = rectNode.node().getBBox();\n\n // Add the entity to the graph\n graph.setNode(id, {\n width: rectBBox.width,\n height: rectBBox.height,\n shape: 'rect',\n id: id,\n });\n });\n return firstOne;\n}; // drawEntities\n\nconst adjustEntities = function (svgNode, graph) {\n graph.nodes().forEach(function (v) {\n if (typeof v !== 'undefined' && typeof graph.node(v) !== 'undefined') {\n svgNode\n .select('#' + v)\n .attr(\n 'transform',\n 'translate(' +\n (graph.node(v).x - graph.node(v).width / 2) +\n ',' +\n (graph.node(v).y - graph.node(v).height / 2) +\n ' )'\n );\n }\n });\n return;\n};\n\nconst getEdgeName = function (rel) {\n return (rel.entityA + rel.roleA + rel.entityB).replace(/\\s/g, '');\n};\n\n/**\n * Add each relationship to the graph\n *\n * @param relationships The relationships to be added\n * @param g The graph\n * @returns {Array} The array of relationships\n */\nconst addRelationships = function (relationships, g) {\n relationships.forEach(function (r) {\n g.setEdge(r.entityA, r.entityB, { relationship: r }, getEdgeName(r));\n });\n return relationships;\n}; // addRelationships\n\nlet relCnt = 0;\n/**\n * Draw a relationship using edge information from the graph\n *\n * @param svg The svg node\n * @param rel The relationship to draw in the svg\n * @param g The graph containing the edge information\n * @param insert The insertion point in the svg DOM (because relationships have markers that need to\n * sit 'behind' opaque entity boxes)\n */\nconst drawRelationshipFromLayout = function (svg, rel, g, insert) {\n relCnt++;\n\n // Find the edge relating to this relationship\n const edge = g.edge(rel.entityA, rel.entityB, getEdgeName(rel));\n\n // Get a function that will generate the line path\n const lineFunction = line()\n .x(function (d) {\n return d.x;\n })\n .y(function (d) {\n return d.y;\n })\n .curve(curveBasis);\n\n // Insert the line at the right place\n const svgPath = svg\n .insert('path', '#' + insert)\n .attr('class', 'er relationshipLine')\n .attr('d', lineFunction(edge.points))\n .attr('stroke', conf.stroke)\n .attr('fill', 'none');\n\n // ...and with dashes if necessary\n if (rel.relSpec.relType === erDb.Identification.NON_IDENTIFYING) {\n svgPath.attr('stroke-dasharray', '8,8');\n }\n\n // TODO: Understand this better\n let url = '';\n if (conf.arrowMarkerAbsolute) {\n url =\n window.location.protocol +\n '//' +\n window.location.host +\n window.location.pathname +\n window.location.search;\n url = url.replace(/\\(/g, '\\\\(');\n url = url.replace(/\\)/g, '\\\\)');\n }\n\n // Decide which start and end markers it needs. It may be possible to be more concise here\n // by reversing a start marker to make an end marker...but this will do for now\n\n // Note that the 'A' entity's marker is at the end of the relationship and the 'B' entity's marker is at the start\n switch (rel.relSpec.cardA) {\n case erDb.Cardinality.ZERO_OR_ONE:\n svgPath.attr('marker-end', 'url(' + url + '#' + erMarkers.ERMarkers.ZERO_OR_ONE_END + ')');\n break;\n case erDb.Cardinality.ZERO_OR_MORE:\n svgPath.attr('marker-end', 'url(' + url + '#' + erMarkers.ERMarkers.ZERO_OR_MORE_END + ')');\n break;\n case erDb.Cardinality.ONE_OR_MORE:\n svgPath.attr('marker-end', 'url(' + url + '#' + erMarkers.ERMarkers.ONE_OR_MORE_END + ')');\n break;\n case erDb.Cardinality.ONLY_ONE:\n svgPath.attr('marker-end', 'url(' + url + '#' + erMarkers.ERMarkers.ONLY_ONE_END + ')');\n break;\n }\n\n switch (rel.relSpec.cardB) {\n case erDb.Cardinality.ZERO_OR_ONE:\n svgPath.attr(\n 'marker-start',\n 'url(' + url + '#' + erMarkers.ERMarkers.ZERO_OR_ONE_START + ')'\n );\n break;\n case erDb.Cardinality.ZERO_OR_MORE:\n svgPath.attr(\n 'marker-start',\n 'url(' + url + '#' + erMarkers.ERMarkers.ZERO_OR_MORE_START + ')'\n );\n break;\n case erDb.Cardinality.ONE_OR_MORE:\n svgPath.attr(\n 'marker-start',\n 'url(' + url + '#' + erMarkers.ERMarkers.ONE_OR_MORE_START + ')'\n );\n break;\n case erDb.Cardinality.ONLY_ONE:\n svgPath.attr('marker-start', 'url(' + url + '#' + erMarkers.ERMarkers.ONLY_ONE_START + ')');\n break;\n }\n\n // Now label the relationship\n\n // Find the half-way point\n const len = svgPath.node().getTotalLength();\n const labelPoint = svgPath.node().getPointAtLength(len * 0.5);\n\n // Append a text node containing the label\n const labelId = 'rel' + relCnt;\n\n const labelNode = svg\n .append('text')\n .attr('class', 'er relationshipLabel')\n .attr('id', labelId)\n .attr('x', labelPoint.x)\n .attr('y', labelPoint.y)\n .attr('text-anchor', 'middle')\n .attr('dominant-baseline', 'middle')\n .attr(\n 'style',\n 'font-family: ' + getConfig().fontFamily + '; font-size: ' + conf.fontSize + 'px'\n )\n .text(rel.roleA);\n\n // Figure out how big the opaque 'container' rectangle needs to be\n const labelBBox = labelNode.node().getBBox();\n\n // Insert the opaque rectangle before the text label\n svg\n .insert('rect', '#' + labelId)\n .attr('class', 'er relationshipLabelBox')\n .attr('x', labelPoint.x - labelBBox.width / 2)\n .attr('y', labelPoint.y - labelBBox.height / 2)\n .attr('width', labelBBox.width)\n .attr('height', labelBBox.height)\n .attr('fill', 'white')\n .attr('fill-opacity', '85%');\n\n return;\n};\n\n/**\n * Draw en E-R diagram in the tag with id: id based on the text definition of the diagram\n *\n * @param text The text of the diagram\n * @param id The unique id of the DOM node that contains the diagram\n */\nexport const draw = function (text, id) {\n log.info('Drawing ER diagram');\n erDb.clear();\n const parser = erParser.parser;\n parser.yy = erDb;\n const securityLevel = getConfig().securityLevel;\n // Handle root and ocument for when rendering in sanbox mode\n let sandboxElement;\n if (securityLevel === 'sandbox') {\n sandboxElement = select('#i' + id);\n }\n const root =\n securityLevel === 'sandbox'\n ? select(sandboxElement.nodes()[0].contentDocument.body)\n : select('body');\n const doc = securityLevel === 'sandbox' ? sandboxElement.nodes()[0].contentDocument : document;\n\n // Parse the text to populate erDb\n try {\n parser.parse(text);\n } catch (err) {\n log.debug('Parsing failed');\n }\n\n // Get a reference to the svg node that contains the text\n const svg = root.select(`[id='${id}']`);\n\n // Add cardinality marker definitions to the svg\n erMarkers.insertMarkers(svg, conf);\n\n // Now we have to construct the diagram in a specific way:\n // ---\n // 1. Create all the entities in the svg node at 0,0, but with the correct dimensions (allowing for text content)\n // 2. Make sure they are all added to the graph\n // 3. Add all the edges (relationships) to the graph aswell\n // 4. Let dagre do its magic to layout the graph. This assigns:\n // - the centre co-ordinates for each node, bearing in mind the dimensions and edge relationships\n // - the path co-ordinates for each edge\n // But it has no impact on the svg child nodes - the diagram remains with every entity rooted at 0,0\n // 5. Now assign a transform to each entity in the svg node so that it gets drawn in the correct place, as determined by\n // its centre point, which is obtained from the graph, and it's width and height\n // 6. And finally, create all the edges in the svg node using information from the graph\n // ---\n\n // Create the graph\n let g;\n\n // TODO: Explore directed vs undirected graphs, and how the layout is affected\n // An E-R diagram could be said to be undirected, but there is merit in setting\n // the direction from parent to child in a one-to-many as this influences graphlib to\n // put the parent above the child (does it?), which is intuitive. Most relationships\n // in ER diagrams are one-to-many.\n g = new graphlib.Graph({\n multigraph: true,\n directed: true,\n compound: false,\n })\n .setGraph({\n rankdir: conf.layoutDirection,\n marginx: 20,\n marginy: 20,\n nodesep: 100,\n edgesep: 100,\n ranksep: 100,\n })\n .setDefaultEdgeLabel(function () {\n return {};\n });\n\n // Draw the entities (at 0,0), returning the first svg node that got\n // inserted - this represents the insertion point for relationship paths\n const firstEntity = drawEntities(svg, erDb.getEntities(), g);\n\n // TODO: externalise the addition of entities to the graph - it's a bit 'buried' in the above\n\n // Add all the relationships to the graph\n const relationships = addRelationships(erDb.getRelationships(), g);\n\n dagre.layout(g); // Node and edge positions will be updated\n\n // Adjust the positions of the entities so that they adhere to the layout\n adjustEntities(svg, g);\n\n // Draw the relationships\n relationships.forEach(function (rel) {\n drawRelationshipFromLayout(svg, rel, g, firstEntity);\n });\n\n const padding = conf.diagramPadding;\n\n const svgBounds = svg.node().getBBox();\n const width = svgBounds.width + padding * 2;\n const height = svgBounds.height + padding * 2;\n\n configureSvgSize(svg, height, width, conf.useMaxWidth);\n\n svg.attr('viewBox', `${svgBounds.x - padding} ${svgBounds.y - padding} ${width} ${height}`);\n\n addSVGAccessibilityFields(parser.yy, svg, id);\n}; // draw\n\nexport default {\n setConf,\n draw,\n};\n","import { select } from 'd3';\nimport utils from '../../utils';\nimport * as configApi from '../../config';\nimport common from '../common/common';\nimport mermaidAPI from '../../mermaidAPI';\nimport { log } from '../../logger';\nimport {\n setTitle,\n getTitle,\n getAccDescription,\n setAccDescription,\n clear as commonClear,\n} from '../../commonDb';\n\nconst MERMAID_DOM_ID_PREFIX = 'flowchart-';\nlet vertexCounter = 0;\nlet config = configApi.getConfig();\nlet vertices = {};\nlet edges = [];\nlet classes = [];\nlet subGraphs = [];\nlet subGraphLookup = {};\nlet tooltips = {};\nlet subCount = 0;\nlet firstGraphFlag = true;\nlet direction;\n\nlet version; // As in graph\n\n// Functions to be run after graph rendering\nlet funs = [];\n\nconst sanitizeText = (txt) => common.sanitizeText(txt, config);\n\nexport const parseDirective = function (statement, context, type) {\n mermaidAPI.parseDirective(this, statement, context, type);\n};\n\n/**\n * Function to lookup domId from id in the graph definition.\n *\n * @param id\n * @public\n */\nexport const lookUpDomId = function (id) {\n const veritceKeys = Object.keys(vertices);\n for (let i = 0; i < veritceKeys.length; i++) {\n if (vertices[veritceKeys[i]].id === id) {\n return vertices[veritceKeys[i]].domId;\n }\n }\n return id;\n};\n\n/**\n * Function called by parser when a node definition has been found\n *\n * @param _id\n * @param text\n * @param type\n * @param style\n * @param classes\n * @param dir\n * @param props\n */\nexport const addVertex = function (_id, text, type, style, classes, dir, props = {}) {\n let txt;\n let id = _id;\n if (typeof id === 'undefined') {\n return;\n }\n if (id.trim().length === 0) {\n return;\n }\n\n // if (id[0].match(/\\d/)) id = MERMAID_DOM_ID_PREFIX + id;\n\n if (typeof vertices[id] === 'undefined') {\n vertices[id] = {\n id: id,\n domId: MERMAID_DOM_ID_PREFIX + id + '-' + vertexCounter,\n styles: [],\n classes: [],\n };\n }\n vertexCounter++;\n if (typeof text !== 'undefined') {\n config = configApi.getConfig();\n txt = sanitizeText(text.trim());\n\n // strip quotes if string starts and ends with a quote\n if (txt[0] === '\"' && txt[txt.length - 1] === '\"') {\n txt = txt.substring(1, txt.length - 1);\n }\n\n vertices[id].text = txt;\n } else {\n if (typeof vertices[id].text === 'undefined') {\n vertices[id].text = _id;\n }\n }\n if (typeof type !== 'undefined') {\n vertices[id].type = type;\n }\n if (typeof style !== 'undefined') {\n if (style !== null) {\n style.forEach(function (s) {\n vertices[id].styles.push(s);\n });\n }\n }\n if (typeof classes !== 'undefined') {\n if (classes !== null) {\n classes.forEach(function (s) {\n vertices[id].classes.push(s);\n });\n }\n }\n if (typeof dir !== 'undefined') {\n vertices[id].dir = dir;\n }\n vertices[id].props = props;\n};\n\n/**\n * Function called by parser when a link/edge definition has been found\n *\n * @param _start\n * @param _end\n * @param type\n * @param linktext\n */\nexport const addSingleLink = function (_start, _end, type, linktext) {\n let start = _start;\n let end = _end;\n // if (start[0].match(/\\d/)) start = MERMAID_DOM_ID_PREFIX + start;\n // if (end[0].match(/\\d/)) end = MERMAID_DOM_ID_PREFIX + end;\n // log.info('Got edge...', start, end);\n\n const edge = { start: start, end: end, type: undefined, text: '' };\n linktext = type.text;\n\n if (typeof linktext !== 'undefined') {\n edge.text = sanitizeText(linktext.trim());\n\n // strip quotes if string starts and exnds with a quote\n if (edge.text[0] === '\"' && edge.text[edge.text.length - 1] === '\"') {\n edge.text = edge.text.substring(1, edge.text.length - 1);\n }\n }\n\n if (typeof type !== 'undefined') {\n edge.type = type.type;\n edge.stroke = type.stroke;\n edge.length = type.length;\n }\n edges.push(edge);\n};\nexport const addLink = function (_start, _end, type, linktext) {\n let i, j;\n for (i = 0; i < _start.length; i++) {\n for (j = 0; j < _end.length; j++) {\n addSingleLink(_start[i], _end[j], type, linktext);\n }\n }\n};\n\n/**\n * Updates a link's line interpolation algorithm\n *\n * @param positions\n * @param interp\n */\nexport const updateLinkInterpolate = function (positions, interp) {\n positions.forEach(function (pos) {\n if (pos === 'default') {\n edges.defaultInterpolate = interp;\n } else {\n edges[pos].interpolate = interp;\n }\n });\n};\n\n/**\n * Updates a link with a style\n *\n * @param positions\n * @param style\n */\nexport const updateLink = function (positions, style) {\n positions.forEach(function (pos) {\n if (pos === 'default') {\n edges.defaultStyle = style;\n } else {\n if (utils.isSubstringInArray('fill', style) === -1) {\n style.push('fill:none');\n }\n edges[pos].style = style;\n }\n });\n};\n\nexport const addClass = function (id, style) {\n if (typeof classes[id] === 'undefined') {\n classes[id] = { id: id, styles: [], textStyles: [] };\n }\n\n if (typeof style !== 'undefined') {\n if (style !== null) {\n style.forEach(function (s) {\n if (s.match('color')) {\n const newStyle1 = s.replace('fill', 'bgFill');\n const newStyle2 = newStyle1.replace('color', 'fill');\n classes[id].textStyles.push(newStyle2);\n }\n classes[id].styles.push(s);\n });\n }\n }\n};\n\n/**\n * Called by parser when a graph definition is found, stores the direction of the chart.\n *\n * @param dir\n */\nexport const setDirection = function (dir) {\n direction = dir;\n if (direction.match(/.*</)) {\n direction = 'RL';\n }\n if (direction.match(/.*\\^/)) {\n direction = 'BT';\n }\n if (direction.match(/.*>/)) {\n direction = 'LR';\n }\n if (direction.match(/.*v/)) {\n direction = 'TB';\n }\n};\n\n/**\n * Called by parser when a special node is found, e.g. a clickable element.\n *\n * @param ids Comma separated list of ids\n * @param className Class to add\n */\nexport const setClass = function (ids, className) {\n ids.split(',').forEach(function (_id) {\n // let id = version === 'gen-2' ? lookUpDomId(_id) : _id;\n let id = _id;\n // if (_id[0].match(/\\d/)) id = MERMAID_DOM_ID_PREFIX + id;\n if (typeof vertices[id] !== 'undefined') {\n vertices[id].classes.push(className);\n }\n\n if (typeof subGraphLookup[id] !== 'undefined') {\n subGraphLookup[id].classes.push(className);\n }\n });\n};\n\nconst setTooltip = function (ids, tooltip) {\n ids.split(',').forEach(function (id) {\n if (typeof tooltip !== 'undefined') {\n tooltips[version === 'gen-1' ? lookUpDomId(id) : id] = sanitizeText(tooltip);\n }\n });\n};\n\nconst setClickFun = function (id, functionName, functionArgs) {\n let domId = lookUpDomId(id);\n // if (_id[0].match(/\\d/)) id = MERMAID_DOM_ID_PREFIX + id;\n if (configApi.getConfig().securityLevel !== 'loose') {\n return;\n }\n if (typeof functionName === 'undefined') {\n return;\n }\n let argList = [];\n if (typeof functionArgs === 'string') {\n /* Splits functionArgs by ',', ignoring all ',' in double quoted strings */\n argList = functionArgs.split(/,(?=(?:(?:[^\"]*\"){2})*[^\"]*$)/);\n for (let i = 0; i < argList.length; i++) {\n let item = argList[i].trim();\n /* Removes all double quotes at the start and end of an argument */\n /* This preserves all starting and ending whitespace inside */\n if (item.charAt(0) === '\"' && item.charAt(item.length - 1) === '\"') {\n item = item.substr(1, item.length - 2);\n }\n argList[i] = item;\n }\n }\n\n /* if no arguments passed into callback, default to passing in id */\n if (argList.length === 0) {\n argList.push(id);\n }\n\n if (typeof vertices[id] !== 'undefined') {\n vertices[id].haveCallback = true;\n funs.push(function () {\n const elem = document.querySelector(`[id=\"${domId}\"]`);\n if (elem !== null) {\n elem.addEventListener(\n 'click',\n function () {\n utils.runFunc(functionName, ...argList);\n },\n false\n );\n }\n });\n }\n};\n\n/**\n * Called by parser when a link is found. Adds the URL to the vertex data.\n *\n * @param ids Comma separated list of ids\n * @param linkStr URL to create a link for\n * @param target\n */\nexport const setLink = function (ids, linkStr, target) {\n ids.split(',').forEach(function (id) {\n if (typeof vertices[id] !== 'undefined') {\n vertices[id].link = utils.formatUrl(linkStr, config);\n vertices[id].linkTarget = target;\n }\n });\n setClass(ids, 'clickable');\n};\nexport const getTooltip = function (id) {\n return tooltips[id];\n};\n\n/**\n * Called by parser when a click definition is found. Registers an event handler.\n *\n * @param ids Comma separated list of ids\n * @param functionName Function to be called on click\n * @param functionArgs\n */\nexport const setClickEvent = function (ids, functionName, functionArgs) {\n ids.split(',').forEach(function (id) {\n setClickFun(id, functionName, functionArgs);\n });\n setClass(ids, 'clickable');\n};\n\nexport const bindFunctions = function (element) {\n funs.forEach(function (fun) {\n fun(element);\n });\n};\nexport const getDirection = function () {\n return direction.trim();\n};\n/**\n * Retrieval function for fetching the found nodes after parsing has completed.\n *\n * @returns {{} | any | vertices}\n */\nexport const getVertices = function () {\n return vertices;\n};\n\n/**\n * Retrieval function for fetching the found links after parsing has completed.\n *\n * @returns {{} | any | edges}\n */\nexport const getEdges = function () {\n return edges;\n};\n\n/**\n * Retrieval function for fetching the found class definitions after parsing has completed.\n *\n * @returns {{} | any | classes}\n */\nexport const getClasses = function () {\n return classes;\n};\n\nconst setupToolTips = function (element) {\n let tooltipElem = select('.mermaidTooltip');\n if ((tooltipElem._groups || tooltipElem)[0][0] === null) {\n tooltipElem = select('body').append('div').attr('class', 'mermaidTooltip').style('opacity', 0);\n }\n\n const svg = select(element).select('svg');\n\n const nodes = svg.selectAll('g.node');\n nodes\n .on('mouseover', function () {\n const el = select(this);\n const title = el.attr('title');\n\n // Dont try to draw a tooltip if no data is provided\n if (title === null) {\n return;\n }\n const rect = this.getBoundingClientRect();\n\n tooltipElem.transition().duration(200).style('opacity', '.9');\n tooltipElem\n .text(el.attr('title'))\n .style('left', window.scrollX + rect.left + (rect.right - rect.left) / 2 + 'px')\n .style('top', window.scrollY + rect.top - 14 + document.body.scrollTop + 'px');\n el.classed('hover', true);\n })\n .on('mouseout', function () {\n tooltipElem.transition().duration(500).style('opacity', 0);\n const el = select(this);\n el.classed('hover', false);\n });\n};\nfuns.push(setupToolTips);\n\n/**\n * Clears the internal graph db so that a new graph can be parsed.\n *\n * @param ver\n */\nexport const clear = function (ver) {\n vertices = {};\n classes = {};\n edges = [];\n funs = [];\n funs.push(setupToolTips);\n subGraphs = [];\n subGraphLookup = {};\n subCount = 0;\n tooltips = [];\n firstGraphFlag = true;\n version = ver || 'gen-1';\n commonClear();\n};\nexport const setGen = (ver) => {\n version = ver || 'gen-1';\n};\n/** @returns {string} */\nexport const defaultStyle = function () {\n return 'fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;';\n};\n\n/**\n * Clears the internal graph db so that a new graph can be parsed.\n *\n * @param _id\n * @param list\n * @param _title\n */\nexport const addSubGraph = function (_id, list, _title) {\n // console.log('addSubGraph', _id, list, _title);\n let id = _id.trim();\n let title = _title;\n if (_id === _title && _title.match(/\\s/)) {\n id = undefined;\n }\n /** @param a */\n function uniq(a) {\n const prims = { boolean: {}, number: {}, string: {} };\n const objs = [];\n\n let dir; // = unbdefined; direction.trim();\n const nodeList = a.filter(function (item) {\n const type = typeof item;\n if (item.stmt && item.stmt === 'dir') {\n dir = item.value;\n return false;\n }\n if (item.trim() === '') {\n return false;\n }\n if (type in prims) {\n return prims[type].hasOwnProperty(item) ? false : (prims[type][item] = true); // eslint-disable-line\n } else {\n return objs.indexOf(item) >= 0 ? false : objs.push(item);\n }\n });\n return { nodeList, dir };\n }\n\n let nodeList = [];\n\n const { nodeList: nl, dir } = uniq(nodeList.concat.apply(nodeList, list));\n nodeList = nl;\n if (version === 'gen-1') {\n log.warn('LOOKING UP');\n for (let i = 0; i < nodeList.length; i++) {\n nodeList[i] = lookUpDomId(nodeList[i]);\n }\n }\n\n id = id || 'subGraph' + subCount;\n // if (id[0].match(/\\d/)) id = lookUpDomId(id);\n title = title || '';\n title = sanitizeText(title);\n subCount = subCount + 1;\n const subGraph = { id: id, nodes: nodeList, title: title.trim(), classes: [], dir };\n\n log.info('Adding', subGraph.id, subGraph.nodes, subGraph.dir);\n\n /** Deletes an id from all subgraphs */\n // const del = _id => {\n // subGraphs.forEach(sg => {\n // const pos = sg.nodes.indexOf(_id);\n // if (pos >= 0) {\n // sg.nodes.splice(pos, 1);\n // }\n // });\n // };\n\n // // Removes the members of this subgraph from any other subgraphs, a node only belong to one subgraph\n // subGraph.nodes.forEach(_id => del(_id));\n\n // Remove the members in the new subgraph if they already belong to another subgraph\n subGraph.nodes = makeUniq(subGraph, subGraphs).nodes;\n subGraphs.push(subGraph);\n subGraphLookup[id] = subGraph;\n return id;\n};\n\nconst getPosForId = function (id) {\n for (let i = 0; i < subGraphs.length; i++) {\n if (subGraphs[i].id === id) {\n return i;\n }\n }\n return -1;\n};\nlet secCount = -1;\nconst posCrossRef = [];\nconst indexNodes2 = function (id, pos) {\n const nodes = subGraphs[pos].nodes;\n secCount = secCount + 1;\n if (secCount > 2000) {\n return;\n }\n posCrossRef[secCount] = pos;\n // Check if match\n if (subGraphs[pos].id === id) {\n return {\n result: true,\n count: 0,\n };\n }\n\n let count = 0;\n let posCount = 1;\n while (count < nodes.length) {\n const childPos = getPosForId(nodes[count]);\n // Ignore regular nodes (pos will be -1)\n if (childPos >= 0) {\n const res = indexNodes2(id, childPos);\n if (res.result) {\n return {\n result: true,\n count: posCount + res.count,\n };\n } else {\n posCount = posCount + res.count;\n }\n }\n count = count + 1;\n }\n\n return {\n result: false,\n count: posCount,\n };\n};\n\nexport const getDepthFirstPos = function (pos) {\n return posCrossRef[pos];\n};\nexport const indexNodes = function () {\n secCount = -1;\n if (subGraphs.length > 0) {\n indexNodes2('none', subGraphs.length - 1, 0);\n }\n};\n\nexport const getSubGraphs = function () {\n return subGraphs;\n};\n\nexport const firstGraph = () => {\n if (firstGraphFlag) {\n firstGraphFlag = false;\n return true;\n }\n return false;\n};\n\nconst destructStartLink = (_str) => {\n let str = _str.trim();\n let type = 'arrow_open';\n\n switch (str[0]) {\n case '<':\n type = 'arrow_point';\n str = str.slice(1);\n break;\n case 'x':\n type = 'arrow_cross';\n str = str.slice(1);\n break;\n case 'o':\n type = 'arrow_circle';\n str = str.slice(1);\n break;\n }\n\n let stroke = 'normal';\n\n if (str.indexOf('=') !== -1) {\n stroke = 'thick';\n }\n\n if (str.indexOf('.') !== -1) {\n stroke = 'dotted';\n }\n\n return { type, stroke };\n};\n\nconst countChar = (char, str) => {\n const length = str.length;\n let count = 0;\n for (let i = 0; i < length; ++i) {\n if (str[i] === char) {\n ++count;\n }\n }\n return count;\n};\n\nconst destructEndLink = (_str) => {\n const str = _str.trim();\n let line = str.slice(0, -1);\n let type = 'arrow_open';\n\n switch (str.slice(-1)) {\n case 'x':\n type = 'arrow_cross';\n if (str[0] === 'x') {\n type = 'double_' + type;\n line = line.slice(1);\n }\n break;\n case '>':\n type = 'arrow_point';\n if (str[0] === '<') {\n type = 'double_' + type;\n line = line.slice(1);\n }\n break;\n case 'o':\n type = 'arrow_circle';\n if (str[0] === 'o') {\n type = 'double_' + type;\n line = line.slice(1);\n }\n break;\n }\n\n let stroke = 'normal';\n let length = line.length - 1;\n\n if (line[0] === '=') {\n stroke = 'thick';\n }\n\n let dots = countChar('.', line);\n\n if (dots) {\n stroke = 'dotted';\n length = dots;\n }\n\n return { type, stroke, length };\n};\n\nconst destructLink = (_str, _startStr) => {\n const info = destructEndLink(_str);\n let startInfo;\n if (_startStr) {\n startInfo = destructStartLink(_startStr);\n\n if (startInfo.stroke !== info.stroke) {\n return { type: 'INVALID', stroke: 'INVALID' };\n }\n\n if (startInfo.type === 'arrow_open') {\n // -- xyz --> - take arrow type from ending\n startInfo.type = info.type;\n } else {\n // x-- xyz --> - not supported\n if (startInfo.type !== info.type) return { type: 'INVALID', stroke: 'INVALID' };\n\n startInfo.type = 'double_' + startInfo.type;\n }\n\n if (startInfo.type === 'double_arrow') {\n startInfo.type = 'double_arrow_point';\n }\n\n startInfo.length = info.length;\n return startInfo;\n }\n\n return info;\n};\n\n// Todo optimizer this by caching existing nodes\nconst exists = (allSgs, _id) => {\n let res = false;\n allSgs.forEach((sg) => {\n const pos = sg.nodes.indexOf(_id);\n if (pos >= 0) {\n res = true;\n }\n });\n return res;\n};\n/**\n * Deletes an id from all subgraphs\n *\n * @param sg\n * @param allSubgraphs\n */\nconst makeUniq = (sg, allSubgraphs) => {\n const res = [];\n sg.nodes.forEach((_id, pos) => {\n if (!exists(allSubgraphs, _id)) {\n res.push(sg.nodes[pos]);\n }\n });\n return { nodes: res };\n};\n\nexport default {\n parseDirective,\n defaultConfig: () => configApi.defaultConfig.flowchart,\n setTitle,\n getTitle,\n getAccDescription,\n setAccDescription,\n addVertex,\n lookUpDomId,\n addLink,\n updateLinkInterpolate,\n updateLink,\n addClass,\n setDirection,\n setClass,\n setTooltip,\n getTooltip,\n setClickEvent,\n setLink,\n bindFunctions,\n getDirection,\n getVertices,\n getEdges,\n getClasses,\n clear,\n setGen,\n defaultStyle,\n addSubGraph,\n getDepthFirstPos,\n indexNodes,\n getSubGraphs,\n destructLink,\n lex: {\n firstGraph,\n },\n exists,\n makeUniq,\n};\n","import dagreD3 from 'dagre-d3';\n\n/**\n * @param parent\n * @param bbox\n * @param node\n */\nfunction question(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const s = (w + h) * 0.9;\n const points = [\n { x: s / 2, y: 0 },\n { x: s, y: -s / 2 },\n { x: s / 2, y: -s },\n { x: 0, y: -s / 2 },\n ];\n const shapeSvg = insertPolygonShape(parent, s, s, points);\n node.intersect = function (point) {\n return dagreD3.intersect.polygon(node, points, point);\n };\n return shapeSvg;\n}\n\n/**\n * @param parent\n * @param bbox\n * @param node\n */\nfunction hexagon(parent, bbox, node) {\n const f = 4;\n const h = bbox.height;\n const m = h / f;\n const w = bbox.width + 2 * m;\n const points = [\n { x: m, y: 0 },\n { x: w - m, y: 0 },\n { x: w, y: -h / 2 },\n { x: w - m, y: -h },\n { x: m, y: -h },\n { x: 0, y: -h / 2 },\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function (point) {\n return dagreD3.intersect.polygon(node, points, point);\n };\n return shapeSvg;\n}\n\n/**\n * @param parent\n * @param bbox\n * @param node\n */\nfunction rect_left_inv_arrow(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const points = [\n { x: -h / 2, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: -h / 2, y: -h },\n { x: 0, y: -h / 2 },\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function (point) {\n return dagreD3.intersect.polygon(node, points, point);\n };\n return shapeSvg;\n}\n\n/**\n * @param parent\n * @param bbox\n * @param node\n */\nfunction lean_right(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const points = [\n { x: (-2 * h) / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + (2 * h) / 6, y: -h },\n { x: h / 6, y: -h },\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function (point) {\n return dagreD3.intersect.polygon(node, points, point);\n };\n return shapeSvg;\n}\n\n/**\n * @param parent\n * @param bbox\n * @param node\n */\nfunction lean_left(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const points = [\n { x: (2 * h) / 6, y: 0 },\n { x: w + h / 6, y: 0 },\n { x: w - (2 * h) / 6, y: -h },\n { x: -h / 6, y: -h },\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function (point) {\n return dagreD3.intersect.polygon(node, points, point);\n };\n return shapeSvg;\n}\n\n/**\n * @param parent\n * @param bbox\n * @param node\n */\nfunction trapezoid(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const points = [\n { x: (-2 * h) / 6, y: 0 },\n { x: w + (2 * h) / 6, y: 0 },\n { x: w - h / 6, y: -h },\n { x: h / 6, y: -h },\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function (point) {\n return dagreD3.intersect.polygon(node, points, point);\n };\n return shapeSvg;\n}\n\n/**\n * @param parent\n * @param bbox\n * @param node\n */\nfunction inv_trapezoid(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const points = [\n { x: h / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + (2 * h) / 6, y: -h },\n { x: (-2 * h) / 6, y: -h },\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function (point) {\n return dagreD3.intersect.polygon(node, points, point);\n };\n return shapeSvg;\n}\n\n/**\n * @param parent\n * @param bbox\n * @param node\n */\nfunction rect_right_inv_arrow(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const points = [\n { x: 0, y: 0 },\n { x: w + h / 2, y: 0 },\n { x: w, y: -h / 2 },\n { x: w + h / 2, y: -h },\n { x: 0, y: -h },\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function (point) {\n return dagreD3.intersect.polygon(node, points, point);\n };\n return shapeSvg;\n}\n\n/**\n * @param parent\n * @param bbox\n * @param node\n */\nfunction stadium(parent, bbox, node) {\n const h = bbox.height;\n const w = bbox.width + h / 4;\n\n const shapeSvg = parent\n .insert('rect', ':first-child')\n .attr('rx', h / 2)\n .attr('ry', h / 2)\n .attr('x', -w / 2)\n .attr('y', -h / 2)\n .attr('width', w)\n .attr('height', h);\n\n node.intersect = function (point) {\n return dagreD3.intersect.rect(node, point);\n };\n return shapeSvg;\n}\n\n/**\n * @param parent\n * @param bbox\n * @param node\n */\nfunction subroutine(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: 0, y: -h },\n { x: 0, y: 0 },\n { x: -8, y: 0 },\n { x: w + 8, y: 0 },\n { x: w + 8, y: -h },\n { x: -8, y: -h },\n { x: -8, y: 0 },\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function (point) {\n return dagreD3.intersect.polygon(node, points, point);\n };\n return shapeSvg;\n}\n\n/**\n * @param parent\n * @param bbox\n * @param node\n */\nfunction cylinder(parent, bbox, node) {\n const w = bbox.width;\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n const h = bbox.height + ry;\n\n const shape =\n 'M 0,' +\n ry +\n ' a ' +\n rx +\n ',' +\n ry +\n ' 0,0,0 ' +\n w +\n ' 0 a ' +\n rx +\n ',' +\n ry +\n ' 0,0,0 ' +\n -w +\n ' 0 l 0,' +\n h +\n ' a ' +\n rx +\n ',' +\n ry +\n ' 0,0,0 ' +\n w +\n ' 0 l 0,' +\n -h;\n\n const shapeSvg = parent\n .attr('label-offset-y', ry)\n .insert('path', ':first-child')\n .attr('d', shape)\n .attr('transform', 'translate(' + -w / 2 + ',' + -(h / 2 + ry) + ')');\n\n node.intersect = function (point) {\n const pos = dagreD3.intersect.rect(node, point);\n const x = pos.x - node.x;\n\n if (\n rx != 0 &&\n (Math.abs(x) < node.width / 2 ||\n (Math.abs(x) == node.width / 2 && Math.abs(pos.y - node.y) > node.height / 2 - ry))\n ) {\n // ellipsis equation: x*x / a*a + y*y / b*b = 1\n // solve for y to get adjustion value for pos.y\n let y = ry * ry * (1 - (x * x) / (rx * rx));\n if (y != 0) y = Math.sqrt(y);\n y = ry - y;\n if (point.y - node.y > 0) y = -y;\n\n pos.y += y;\n }\n\n return pos;\n };\n\n return shapeSvg;\n}\n\n/** @param render */\nexport function addToRender(render) {\n render.shapes().question = question;\n render.shapes().hexagon = hexagon;\n render.shapes().stadium = stadium;\n render.shapes().subroutine = subroutine;\n render.shapes().cylinder = cylinder;\n\n // Add custom shape for box with inverted arrow on left side\n render.shapes().rect_left_inv_arrow = rect_left_inv_arrow;\n\n // Add custom shape for box with inverted arrow on left side\n render.shapes().lean_right = lean_right;\n\n // Add custom shape for box with inverted arrow on left side\n render.shapes().lean_left = lean_left;\n\n // Add custom shape for box with inverted arrow on left side\n render.shapes().trapezoid = trapezoid;\n\n // Add custom shape for box with inverted arrow on left side\n render.shapes().inv_trapezoid = inv_trapezoid;\n\n // Add custom shape for box with inverted arrow on right side\n render.shapes().rect_right_inv_arrow = rect_right_inv_arrow;\n}\n\n/** @param addShape */\nexport function addToRenderV2(addShape) {\n addShape({ question });\n addShape({ hexagon });\n addShape({ stadium });\n addShape({ subroutine });\n addShape({ cylinder });\n\n // Add custom shape for box with inverted arrow on left side\n addShape({ rect_left_inv_arrow });\n\n // Add custom shape for box with inverted arrow on left side\n addShape({ lean_right });\n\n // Add custom shape for box with inverted arrow on left side\n addShape({ lean_left });\n\n // Add custom shape for box with inverted arrow on left side\n addShape({ trapezoid });\n\n // Add custom shape for box with inverted arrow on left side\n addShape({ inv_trapezoid });\n\n // Add custom shape for box with inverted arrow on right side\n addShape({ rect_right_inv_arrow });\n}\n\n/**\n * @param parent\n * @param w\n * @param h\n * @param points\n */\nfunction insertPolygonShape(parent, w, h, points) {\n return parent\n .insert('polygon', ':first-child')\n .attr(\n 'points',\n points\n .map(function (d) {\n return d.x + ',' + d.y;\n })\n .join(' ')\n )\n .attr('transform', 'translate(' + -w / 2 + ',' + h / 2 + ')');\n}\n\nexport default {\n addToRender,\n addToRenderV2,\n};\n","import graphlib from 'graphlib';\nimport { select, curveLinear, selectAll } from 'd3';\n\nimport flowDb from './flowDb';\nimport flow from './parser/flow';\nimport { getConfig } from '../../config';\n\nimport dagreD3 from 'dagre-d3';\nimport addHtmlLabel from 'dagre-d3/lib/label/add-html-label.js';\nimport { log } from '../../logger';\nimport common, { evaluate } from '../common/common';\nimport { interpolateToCurve, getStylesFromArray, configureSvgSize } from '../../utils';\nimport flowChartShapes from './flowChartShapes';\nimport addSVGAccessibilityFields from '../../accessibility';\n\nconst conf = {};\nexport const setConf = function (cnf) {\n const keys = Object.keys(cnf);\n for (let i = 0; i < keys.length; i++) {\n conf[keys[i]] = cnf[keys[i]];\n }\n};\n\n/**\n * Function that adds the vertices found in the graph definition to the graph to be rendered.\n *\n * @param vert Object containing the vertices.\n * @param g The graph that is to be drawn.\n * @param svgId\n * @param root\n * @param doc\n * @param _doc\n */\nexport const addVertices = function (vert, g, svgId, root, _doc) {\n const securityLevel = getConfig().securityLevel;\n\n const svg = !root ? select(`[id=\"${svgId}\"]`) : root.select(`[id=\"${svgId}\"]`);\n const doc = !_doc ? document : _doc;\n const keys = Object.keys(vert);\n\n // Iterate through each item in the vertex object (containing all the vertices found) in the graph definition\n keys.forEach(function (id) {\n const vertex = vert[id];\n\n /**\n * Variable for storing the classes for the vertex\n *\n * @type {string}\n */\n let classStr = 'default';\n if (vertex.classes.length > 0) {\n classStr = vertex.classes.join(' ');\n }\n\n const styles = getStylesFromArray(vertex.styles);\n\n // Use vertex id as text in the box if no text is provided by the graph definition\n let vertexText = vertex.text !== undefined ? vertex.text : vertex.id;\n\n // We create a SVG label, either by delegating to addHtmlLabel or manually\n let vertexNode;\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n // TODO: addHtmlLabel accepts a labelStyle. Do we possibly have that?\n const node = {\n label: vertexText.replace(\n /fa[lrsb]?:fa-[\\w-]+/g,\n (s) => `<i class='${s.replace(':', ' ')}'></i>`\n ),\n };\n vertexNode = addHtmlLabel(svg, node).node();\n vertexNode.parentNode.removeChild(vertexNode);\n } else {\n const svgLabel = doc.createElementNS('http://www.w3.org/2000/svg', 'text');\n svgLabel.setAttribute('style', styles.labelStyle.replace('color:', 'fill:'));\n\n const rows = vertexText.split(common.lineBreakRegex);\n\n for (let j = 0; j < rows.length; j++) {\n const tspan = doc.createElementNS('http://www.w3.org/2000/svg', 'tspan');\n tspan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n tspan.setAttribute('dy', '1em');\n tspan.setAttribute('x', '1');\n tspan.textContent = rows[j];\n svgLabel.appendChild(tspan);\n }\n vertexNode = svgLabel;\n }\n\n let radious = 0;\n let _shape = '';\n // Set the shape based parameters\n switch (vertex.type) {\n case 'round':\n radious = 5;\n _shape = 'rect';\n break;\n case 'square':\n _shape = 'rect';\n break;\n case 'diamond':\n _shape = 'question';\n break;\n case 'hexagon':\n _shape = 'hexagon';\n break;\n case 'odd':\n _shape = 'rect_left_inv_arrow';\n break;\n case 'lean_right':\n _shape = 'lean_right';\n break;\n case 'lean_left':\n _shape = 'lean_left';\n break;\n case 'trapezoid':\n _shape = 'trapezoid';\n break;\n case 'inv_trapezoid':\n _shape = 'inv_trapezoid';\n break;\n case 'odd_right':\n _shape = 'rect_left_inv_arrow';\n break;\n case 'circle':\n _shape = 'circle';\n break;\n case 'ellipse':\n _shape = 'ellipse';\n break;\n case 'stadium':\n _shape = 'stadium';\n break;\n case 'subroutine':\n _shape = 'subroutine';\n break;\n case 'cylinder':\n _shape = 'cylinder';\n break;\n case 'group':\n _shape = 'rect';\n break;\n default:\n _shape = 'rect';\n }\n // Add the node\n log.warn('Adding node', vertex.id, vertex.domId);\n g.setNode(flowDb.lookUpDomId(vertex.id), {\n labelType: 'svg',\n labelStyle: styles.labelStyle,\n shape: _shape,\n label: vertexNode,\n rx: radious,\n ry: radious,\n class: classStr,\n style: styles.style,\n id: flowDb.lookUpDomId(vertex.id),\n });\n });\n};\n\n/**\n * Add edges to graph based on parsed graph definition\n *\n * @param {object} edges The edges to add to the graph\n * @param {object} g The graph object\n */\nexport const addEdges = function (edges, g) {\n let cnt = 0;\n\n let defaultStyle;\n let defaultLabelStyle;\n\n if (typeof edges.defaultStyle !== 'undefined') {\n const defaultStyles = getStylesFromArray(edges.defaultStyle);\n defaultStyle = defaultStyles.style;\n defaultLabelStyle = defaultStyles.labelStyle;\n }\n\n edges.forEach(function (edge) {\n cnt++;\n\n // Identify Link\n var linkId = 'L-' + edge.start + '-' + edge.end;\n var linkNameStart = 'LS-' + edge.start;\n var linkNameEnd = 'LE-' + edge.end;\n\n const edgeData = {};\n\n // Set link type for rendering\n if (edge.type === 'arrow_open') {\n edgeData.arrowhead = 'none';\n } else {\n edgeData.arrowhead = 'normal';\n }\n\n let style = '';\n let labelStyle = '';\n\n if (typeof edge.style !== 'undefined') {\n const styles = getStylesFromArray(edge.style);\n style = styles.style;\n labelStyle = styles.labelStyle;\n } else {\n switch (edge.stroke) {\n case 'normal':\n style = 'fill:none';\n if (typeof defaultStyle !== 'undefined') {\n style = defaultStyle;\n }\n if (typeof defaultLabelStyle !== 'undefined') {\n labelStyle = defaultLabelStyle;\n }\n break;\n case 'dotted':\n style = 'fill:none;stroke-width:2px;stroke-dasharray:3;';\n break;\n case 'thick':\n style = ' stroke-width: 3.5px;fill:none';\n break;\n }\n }\n\n edgeData.style = style;\n edgeData.labelStyle = labelStyle;\n\n if (typeof edge.interpolate !== 'undefined') {\n edgeData.curve = interpolateToCurve(edge.interpolate, curveLinear);\n } else if (typeof edges.defaultInterpolate !== 'undefined') {\n edgeData.curve = interpolateToCurve(edges.defaultInterpolate, curveLinear);\n } else {\n edgeData.curve = interpolateToCurve(conf.curve, curveLinear);\n }\n\n if (typeof edge.text === 'undefined') {\n if (typeof edge.style !== 'undefined') {\n edgeData.arrowheadStyle = 'fill: #333';\n }\n } else {\n edgeData.arrowheadStyle = 'fill: #333';\n edgeData.labelpos = 'c';\n\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n edgeData.labelType = 'html';\n edgeData.label = `<span id=\"L-${linkId}\" class=\"edgeLabel L-${linkNameStart}' L-${linkNameEnd}\" style=\"${\n edgeData.labelStyle\n }\">${edge.text.replace(\n /fa[lrsb]?:fa-[\\w-]+/g,\n (s) => `<i class='${s.replace(':', ' ')}'></i>`\n )}</span>`;\n } else {\n edgeData.labelType = 'text';\n edgeData.label = edge.text.replace(common.lineBreakRegex, '\\n');\n\n if (typeof edge.style === 'undefined') {\n edgeData.style = edgeData.style || 'stroke: #333; stroke-width: 1.5px;fill:none';\n }\n\n edgeData.labelStyle = edgeData.labelStyle.replace('color:', 'fill:');\n }\n }\n\n edgeData.id = linkId;\n edgeData.class = linkNameStart + ' ' + linkNameEnd;\n edgeData.minlen = edge.length || 1;\n\n // Add the edge to the graph\n g.setEdge(flowDb.lookUpDomId(edge.start), flowDb.lookUpDomId(edge.end), edgeData, cnt);\n });\n};\n\n/**\n * Returns the all the styles from classDef statements in the graph definition.\n *\n * @param text\n * @returns {object} ClassDef styles\n */\nexport const getClasses = function (text) {\n log.info('Extracting classes');\n flowDb.clear();\n try {\n const parser = flow.parser;\n parser.yy = flowDb;\n\n // Parse the graph definition\n parser.parse(text);\n return flowDb.getClasses();\n } catch (e) {\n return;\n }\n};\n\n/**\n * Draws a flowchart in the tag with id: id based on the graph definition in text.\n *\n * @param text\n * @param id\n */\nexport const draw = function (text, id) {\n log.info('Drawing flowchart');\n flowDb.clear();\n flowDb.setGen('gen-1');\n const parser = flow.parser;\n parser.yy = flowDb;\n\n const securityLevel = getConfig().securityLevel;\n let sandboxElement;\n if (securityLevel === 'sandbox') {\n sandboxElement = select('#i' + id);\n }\n const root =\n securityLevel === 'sandbox'\n ? select(sandboxElement.nodes()[0].contentDocument.body)\n : select('body');\n const doc = securityLevel === 'sandbox' ? sandboxElement.nodes()[0].contentDocument : document;\n\n // Parse the graph definition\n // try {\n parser.parse(text);\n // } catch (err) {\n // log.debug('Parsing failed');\n // }\n\n // Fetch the default direction, use TD if none was found\n let dir = flowDb.getDirection();\n if (typeof dir === 'undefined') {\n dir = 'TD';\n }\n\n const conf = getConfig().flowchart;\n const nodeSpacing = conf.nodeSpacing || 50;\n const rankSpacing = conf.rankSpacing || 50;\n\n // Create the input mermaid.graph\n const g = new graphlib.Graph({\n multigraph: true,\n compound: true,\n })\n .setGraph({\n rankdir: dir,\n nodesep: nodeSpacing,\n ranksep: rankSpacing,\n marginx: 8,\n marginy: 8,\n })\n .setDefaultEdgeLabel(function () {\n return {};\n });\n\n let subG;\n const subGraphs = flowDb.getSubGraphs();\n for (let i = subGraphs.length - 1; i >= 0; i--) {\n subG = subGraphs[i];\n flowDb.addVertex(subG.id, subG.title, 'group', undefined, subG.classes);\n }\n\n // Fetch the vertices/nodes and edges/links from the parsed graph definition\n const vert = flowDb.getVertices();\n log.warn('Get vertices', vert);\n\n const edges = flowDb.getEdges();\n\n let i = 0;\n for (i = subGraphs.length - 1; i >= 0; i--) {\n subG = subGraphs[i];\n\n selectAll('cluster').append('text');\n\n for (let j = 0; j < subG.nodes.length; j++) {\n log.warn(\n 'Setting subgraph',\n subG.nodes[j],\n flowDb.lookUpDomId(subG.nodes[j]),\n flowDb.lookUpDomId(subG.id)\n );\n g.setParent(flowDb.lookUpDomId(subG.nodes[j]), flowDb.lookUpDomId(subG.id));\n }\n }\n addVertices(vert, g, id, root, doc);\n addEdges(edges, g);\n\n // Create the renderer\n const Render = dagreD3.render;\n const render = new Render();\n\n // Add custom shapes\n flowChartShapes.addToRender(render);\n\n // Add our custom arrow - an empty arrowhead\n render.arrows().none = function normal(parent, id, edge, type) {\n const marker = parent\n .append('marker')\n .attr('id', id)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 9)\n .attr('refY', 5)\n .attr('markerUnits', 'strokeWidth')\n .attr('markerWidth', 8)\n .attr('markerHeight', 6)\n .attr('orient', 'auto');\n\n const path = marker.append('path').attr('d', 'M 0 0 L 0 0 L 0 0 z');\n dagreD3.util.applyStyle(path, edge[type + 'Style']);\n };\n\n // Override normal arrowhead defined in d3. Remove style & add class to allow css styling.\n render.arrows().normal = function normal(parent, id) {\n const marker = parent\n .append('marker')\n .attr('id', id)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 9)\n .attr('refY', 5)\n .attr('markerUnits', 'strokeWidth')\n .attr('markerWidth', 8)\n .attr('markerHeight', 6)\n .attr('orient', 'auto');\n\n marker\n .append('path')\n .attr('d', 'M 0 0 L 10 5 L 0 10 z')\n .attr('class', 'arrowheadPath')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n };\n\n // Set up an SVG group so that we can translate the final graph.\n const svg = root.select(`[id=\"${id}\"]`);\n svg.attr('xmlns:xlink', 'http://www.w3.org/1999/xlink');\n\n log.warn(g);\n\n // Adds title and description to the flow chart\n addSVGAccessibilityFields(parser.yy, svg, id);\n\n // Run the renderer. This is what draws the final graph.\n const element = root.select('#' + id + ' g');\n render(element, g);\n\n element.selectAll('g.node').attr('title', function () {\n return flowDb.getTooltip(this.id);\n });\n\n const padding = conf.diagramPadding;\n const svgBounds = svg.node().getBBox();\n const width = svgBounds.width + padding * 2;\n const height = svgBounds.height + padding * 2;\n\n configureSvgSize(svg, height, width, conf.useMaxWidth);\n\n // Ensure the viewBox includes the whole svgBounds area with extra space for padding\n const vBox = `${svgBounds.x - padding} ${svgBounds.y - padding} ${width} ${height}`;\n log.debug(`viewBox ${vBox}`);\n svg.attr('viewBox', vBox);\n\n // Index nodes\n flowDb.indexNodes('subGraph' + i);\n\n // reposition labels\n for (i = 0; i < subGraphs.length; i++) {\n subG = subGraphs[i];\n if (subG.title !== 'undefined') {\n const clusterRects = doc.querySelectorAll(\n '#' + id + ' [id=\"' + flowDb.lookUpDomId(subG.id) + '\"] rect'\n );\n const clusterEl = doc.querySelectorAll(\n '#' + id + ' [id=\"' + flowDb.lookUpDomId(subG.id) + '\"]'\n );\n\n const xPos = clusterRects[0].x.baseVal.value;\n const yPos = clusterRects[0].y.baseVal.value;\n const width = clusterRects[0].width.baseVal.value;\n const cluster = select(clusterEl[0]);\n const te = cluster.select('.label');\n te.attr('transform', `translate(${xPos + width / 2}, ${yPos + 14})`);\n te.attr('id', id + 'Text');\n\n for (let j = 0; j < subG.classes.length; j++) {\n clusterEl[0].classList.add(subG.classes[j]);\n }\n }\n }\n\n // Add label rects for non html labels\n if (!evaluate(conf.htmlLabels) || true) { // eslint-disable-line\n const labels = doc.querySelectorAll('[id=\"' + id + '\"] .edgeLabel .label');\n for (let k = 0; k < labels.length; k++) {\n const label = labels[k];\n\n // Get dimensions of label\n const dim = label.getBBox();\n\n const rect = doc.createElementNS('http://www.w3.org/2000/svg', 'rect');\n rect.setAttribute('rx', 0);\n rect.setAttribute('ry', 0);\n rect.setAttribute('width', dim.width);\n rect.setAttribute('height', dim.height);\n // rect.setAttribute('style', 'fill:#e8e8e8;');\n\n label.insertBefore(rect, label.firstChild);\n }\n }\n\n // If node has a link, wrap it in an anchor SVG object.\n const keys = Object.keys(vert);\n keys.forEach(function (key) {\n const vertex = vert[key];\n\n if (vertex.link) {\n const node = root.select('#' + id + ' [id=\"' + flowDb.lookUpDomId(key) + '\"]');\n if (node) {\n const link = doc.createElementNS('http://www.w3.org/2000/svg', 'a');\n link.setAttributeNS('http://www.w3.org/2000/svg', 'class', vertex.classes.join(' '));\n link.setAttributeNS('http://www.w3.org/2000/svg', 'href', vertex.link);\n link.setAttributeNS('http://www.w3.org/2000/svg', 'rel', 'noopener');\n if (securityLevel === 'sandbox') {\n link.setAttributeNS('http://www.w3.org/2000/svg', 'target', '_top');\n } else if (vertex.linkTarget) {\n link.setAttributeNS('http://www.w3.org/2000/svg', 'target', vertex.linkTarget);\n }\n\n const linkNode = node.insert(function () {\n return link;\n }, ':first-child');\n\n const shape = node.select('.label-container');\n if (shape) {\n linkNode.append(function () {\n return shape.node();\n });\n }\n\n const label = node.select('.label');\n if (label) {\n linkNode.append(function () {\n return label.node();\n });\n }\n }\n }\n });\n};\n\nexport default {\n setConf,\n addVertices,\n addEdges,\n getClasses,\n draw,\n};\n","import graphlib from 'graphlib';\nimport { select, curveLinear, selectAll } from 'd3';\n\nimport flowDb from './flowDb';\nimport flow from './parser/flow';\nimport { getConfig } from '../../config';\n\nimport { render } from '../../dagre-wrapper/index.js';\nimport addHtmlLabel from 'dagre-d3/lib/label/add-html-label.js';\nimport { log } from '../../logger';\nimport common, { evaluate } from '../common/common';\nimport { interpolateToCurve, getStylesFromArray, configureSvgSize } from '../../utils';\nimport addSVGAccessibilityFields from '../../accessibility';\n\nconst conf = {};\nexport const setConf = function (cnf) {\n const keys = Object.keys(cnf);\n for (let i = 0; i < keys.length; i++) {\n conf[keys[i]] = cnf[keys[i]];\n }\n};\n\n/**\n * Function that adds the vertices found during parsing to the graph to be rendered.\n *\n * @param vert Object containing the vertices.\n * @param g The graph that is to be drawn.\n * @param svgId\n * @param root\n * @param doc\n */\nexport const addVertices = function (vert, g, svgId, root, doc) {\n const svg = root.select(`[id=\"${svgId}\"]`);\n const keys = Object.keys(vert);\n\n // Iterate through each item in the vertex object (containing all the vertices found) in the graph definition\n keys.forEach(function (id) {\n const vertex = vert[id];\n\n /**\n * Variable for storing the classes for the vertex\n *\n * @type {string}\n */\n let classStr = 'default';\n if (vertex.classes.length > 0) {\n classStr = vertex.classes.join(' ');\n }\n\n const styles = getStylesFromArray(vertex.styles);\n\n // Use vertex id as text in the box if no text is provided by the graph definition\n let vertexText = vertex.text !== undefined ? vertex.text : vertex.id;\n\n // We create a SVG label, either by delegating to addHtmlLabel or manually\n let vertexNode;\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n // TODO: addHtmlLabel accepts a labelStyle. Do we possibly have that?\n const node = {\n label: vertexText.replace(\n /fa[lrsb]?:fa-[\\w-]+/g,\n (s) => `<i class='${s.replace(':', ' ')}'></i>`\n ),\n };\n vertexNode = addHtmlLabel(svg, node).node();\n vertexNode.parentNode.removeChild(vertexNode);\n } else {\n const svgLabel = doc.createElementNS('http://www.w3.org/2000/svg', 'text');\n svgLabel.setAttribute('style', styles.labelStyle.replace('color:', 'fill:'));\n\n const rows = vertexText.split(common.lineBreakRegex);\n\n for (let j = 0; j < rows.length; j++) {\n const tspan = doc.createElementNS('http://www.w3.org/2000/svg', 'tspan');\n tspan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n tspan.setAttribute('dy', '1em');\n tspan.setAttribute('x', '1');\n tspan.textContent = rows[j];\n svgLabel.appendChild(tspan);\n }\n vertexNode = svgLabel;\n }\n\n let radious = 0;\n let _shape = '';\n // Set the shape based parameters\n switch (vertex.type) {\n case 'round':\n radious = 5;\n _shape = 'rect';\n break;\n case 'square':\n _shape = 'rect';\n break;\n case 'diamond':\n _shape = 'question';\n break;\n case 'hexagon':\n _shape = 'hexagon';\n break;\n case 'odd':\n _shape = 'rect_left_inv_arrow';\n break;\n case 'lean_right':\n _shape = 'lean_right';\n break;\n case 'lean_left':\n _shape = 'lean_left';\n break;\n case 'trapezoid':\n _shape = 'trapezoid';\n break;\n case 'inv_trapezoid':\n _shape = 'inv_trapezoid';\n break;\n case 'odd_right':\n _shape = 'rect_left_inv_arrow';\n break;\n case 'circle':\n _shape = 'circle';\n break;\n case 'ellipse':\n _shape = 'ellipse';\n break;\n case 'stadium':\n _shape = 'stadium';\n break;\n case 'subroutine':\n _shape = 'subroutine';\n break;\n case 'cylinder':\n _shape = 'cylinder';\n break;\n case 'group':\n _shape = 'rect';\n break;\n case 'doublecircle':\n _shape = 'doublecircle';\n break;\n default:\n _shape = 'rect';\n }\n // Add the node\n g.setNode(vertex.id, {\n labelStyle: styles.labelStyle,\n shape: _shape,\n labelText: vertexText,\n rx: radious,\n ry: radious,\n class: classStr,\n style: styles.style,\n id: vertex.id,\n link: vertex.link,\n linkTarget: vertex.linkTarget,\n tooltip: flowDb.getTooltip(vertex.id) || '',\n domId: flowDb.lookUpDomId(vertex.id),\n haveCallback: vertex.haveCallback,\n width: vertex.type === 'group' ? 500 : undefined,\n dir: vertex.dir,\n type: vertex.type,\n props: vertex.props,\n padding: getConfig().flowchart.padding,\n });\n\n log.info('setNode', {\n labelStyle: styles.labelStyle,\n shape: _shape,\n labelText: vertexText,\n rx: radious,\n ry: radious,\n class: classStr,\n style: styles.style,\n id: vertex.id,\n domId: flowDb.lookUpDomId(vertex.id),\n width: vertex.type === 'group' ? 500 : undefined,\n type: vertex.type,\n dir: vertex.dir,\n props: vertex.props,\n padding: getConfig().flowchart.padding,\n });\n });\n};\n\n/**\n * Add edges to graph based on parsed graph definition\n *\n * @param {object} edges The edges to add to the graph\n * @param {object} g The graph object\n */\nexport const addEdges = function (edges, g) {\n log.info('abc78 edges = ', edges);\n let cnt = 0;\n let linkIdCnt = {};\n\n let defaultStyle;\n let defaultLabelStyle;\n\n if (typeof edges.defaultStyle !== 'undefined') {\n const defaultStyles = getStylesFromArray(edges.defaultStyle);\n defaultStyle = defaultStyles.style;\n defaultLabelStyle = defaultStyles.labelStyle;\n }\n\n edges.forEach(function (edge) {\n cnt++;\n\n // Identify Link\n var linkIdBase = 'L-' + edge.start + '-' + edge.end;\n // count the links from+to the same node to give unique id\n if (typeof linkIdCnt[linkIdBase] === 'undefined') {\n linkIdCnt[linkIdBase] = 0;\n log.info('abc78 new entry', linkIdBase, linkIdCnt[linkIdBase]);\n } else {\n linkIdCnt[linkIdBase]++;\n log.info('abc78 new entry', linkIdBase, linkIdCnt[linkIdBase]);\n }\n let linkId = linkIdBase + '-' + linkIdCnt[linkIdBase];\n log.info('abc78 new link id to be used is', linkIdBase, linkId, linkIdCnt[linkIdBase]);\n var linkNameStart = 'LS-' + edge.start;\n var linkNameEnd = 'LE-' + edge.end;\n\n const edgeData = { style: '', labelStyle: '' };\n edgeData.minlen = edge.length || 1;\n //edgeData.id = 'id' + cnt;\n\n // Set link type for rendering\n if (edge.type === 'arrow_open') {\n edgeData.arrowhead = 'none';\n } else {\n edgeData.arrowhead = 'normal';\n }\n\n // Check of arrow types, placed here in order not to break old rendering\n edgeData.arrowTypeStart = 'arrow_open';\n edgeData.arrowTypeEnd = 'arrow_open';\n\n /* eslint-disable no-fallthrough */\n switch (edge.type) {\n case 'double_arrow_cross':\n edgeData.arrowTypeStart = 'arrow_cross';\n case 'arrow_cross':\n edgeData.arrowTypeEnd = 'arrow_cross';\n break;\n case 'double_arrow_point':\n edgeData.arrowTypeStart = 'arrow_point';\n case 'arrow_point':\n edgeData.arrowTypeEnd = 'arrow_point';\n break;\n case 'double_arrow_circle':\n edgeData.arrowTypeStart = 'arrow_circle';\n case 'arrow_circle':\n edgeData.arrowTypeEnd = 'arrow_circle';\n break;\n }\n\n let style = '';\n let labelStyle = '';\n\n switch (edge.stroke) {\n case 'normal':\n style = 'fill:none;';\n if (typeof defaultStyle !== 'undefined') {\n style = defaultStyle;\n }\n if (typeof defaultLabelStyle !== 'undefined') {\n labelStyle = defaultLabelStyle;\n }\n edgeData.thickness = 'normal';\n edgeData.pattern = 'solid';\n break;\n case 'dotted':\n edgeData.thickness = 'normal';\n edgeData.pattern = 'dotted';\n edgeData.style = 'fill:none;stroke-width:2px;stroke-dasharray:3;';\n break;\n case 'thick':\n edgeData.thickness = 'thick';\n edgeData.pattern = 'solid';\n edgeData.style = 'stroke-width: 3.5px;fill:none;';\n break;\n }\n if (typeof edge.style !== 'undefined') {\n const styles = getStylesFromArray(edge.style);\n style = styles.style;\n labelStyle = styles.labelStyle;\n }\n\n edgeData.style = edgeData.style += style;\n edgeData.labelStyle = edgeData.labelStyle += labelStyle;\n\n if (typeof edge.interpolate !== 'undefined') {\n edgeData.curve = interpolateToCurve(edge.interpolate, curveLinear);\n } else if (typeof edges.defaultInterpolate !== 'undefined') {\n edgeData.curve = interpolateToCurve(edges.defaultInterpolate, curveLinear);\n } else {\n edgeData.curve = interpolateToCurve(conf.curve, curveLinear);\n }\n\n if (typeof edge.text === 'undefined') {\n if (typeof edge.style !== 'undefined') {\n edgeData.arrowheadStyle = 'fill: #333';\n }\n } else {\n edgeData.arrowheadStyle = 'fill: #333';\n edgeData.labelpos = 'c';\n }\n // if (evaluate(getConfig().flowchart.htmlLabels) && false) {\n // // eslint-disable-line\n // edgeData.labelType = 'html';\n // edgeData.label = `<span id=\"L-${linkId}\" class=\"edgeLabel L-${linkNameStart}' L-${linkNameEnd}\">${edge.text}</span>`;\n // } else {\n edgeData.labelType = 'text';\n edgeData.label = edge.text.replace(common.lineBreakRegex, '\\n');\n\n if (typeof edge.style === 'undefined') {\n edgeData.style = edgeData.style || 'stroke: #333; stroke-width: 1.5px;fill:none;';\n }\n\n edgeData.labelStyle = edgeData.labelStyle.replace('color:', 'fill:');\n // }\n\n edgeData.id = linkId;\n edgeData.classes = 'flowchart-link ' + linkNameStart + ' ' + linkNameEnd;\n\n // Add the edge to the graph\n g.setEdge(edge.start, edge.end, edgeData, cnt);\n });\n};\n\n/**\n * Returns the all the styles from classDef statements in the graph definition.\n *\n * @param text\n * @returns {object} ClassDef styles\n */\nexport const getClasses = function (text) {\n log.info('Extracting classes');\n flowDb.clear();\n const parser = flow.parser;\n parser.yy = flowDb;\n\n try {\n // Parse the graph definition\n parser.parse(text);\n } catch (e) {\n return;\n }\n\n return flowDb.getClasses();\n};\n\n/**\n * Draws a flowchart in the tag with id: id based on the graph definition in text.\n *\n * @param text\n * @param id\n */\n\nexport const draw = function (text, id) {\n log.info('Drawing flowchart');\n flowDb.clear();\n flowDb.setGen('gen-2');\n const parser = flow.parser;\n parser.yy = flowDb;\n\n // Parse the graph definition\n // try {\n parser.parse(text);\n // } catch (err) {\n // log.debug('Parsing failed');\n // }\n\n // Fetch the default direction, use TD if none was found\n let dir = flowDb.getDirection();\n if (typeof dir === 'undefined') {\n dir = 'TD';\n }\n\n const conf = getConfig().flowchart;\n const nodeSpacing = conf.nodeSpacing || 50;\n const rankSpacing = conf.rankSpacing || 50;\n\n const securityLevel = getConfig().securityLevel;\n // Handle root and document for when rendering in sandbox mode\n let sandboxElement;\n if (securityLevel === 'sandbox') {\n sandboxElement = select('#i' + id);\n }\n const root =\n securityLevel === 'sandbox'\n ? select(sandboxElement.nodes()[0].contentDocument.body)\n : select('body');\n const doc = securityLevel === 'sandbox' ? sandboxElement.nodes()[0].contentDocument : document;\n\n // Create the input mermaid.graph\n const g = new graphlib.Graph({\n multigraph: true,\n compound: true,\n })\n .setGraph({\n rankdir: dir,\n nodesep: nodeSpacing,\n ranksep: rankSpacing,\n marginx: 8,\n marginy: 8,\n })\n .setDefaultEdgeLabel(function () {\n return {};\n });\n\n let subG;\n const subGraphs = flowDb.getSubGraphs();\n log.info('Subgraphs - ', subGraphs);\n for (let i = subGraphs.length - 1; i >= 0; i--) {\n subG = subGraphs[i];\n log.info('Subgraph - ', subG);\n flowDb.addVertex(subG.id, subG.title, 'group', undefined, subG.classes, subG.dir);\n }\n\n // Fetch the vertices/nodes and edges/links from the parsed graph definition\n const vert = flowDb.getVertices();\n\n const edges = flowDb.getEdges();\n\n log.info(edges);\n let i = 0;\n for (i = subGraphs.length - 1; i >= 0; i--) {\n // for (let i = 0; i < subGraphs.length; i++) {\n subG = subGraphs[i];\n\n selectAll('cluster').append('text');\n\n for (let j = 0; j < subG.nodes.length; j++) {\n log.info('Setting up subgraphs', subG.nodes[j], subG.id);\n g.setParent(subG.nodes[j], subG.id);\n }\n }\n addVertices(vert, g, id, root, doc);\n addEdges(edges, g);\n\n // Add custom shapes\n // flowChartShapes.addToRenderV2(addShape);\n\n // Set up an SVG group so that we can translate the final graph.\n const svg = root.select(`[id=\"${id}\"]`);\n svg.attr('xmlns:xlink', 'http://www.w3.org/1999/xlink');\n\n // Adds title and description to the flow chart\n addSVGAccessibilityFields(parser.yy, svg, id);\n\n // Run the renderer. This is what draws the final graph.\n const element = root.select('#' + id + ' g');\n render(element, g, ['point', 'circle', 'cross'], 'flowchart', id);\n\n const padding = conf.diagramPadding;\n const svgBounds = svg.node().getBBox();\n const width = svgBounds.width + padding * 2;\n const height = svgBounds.height + padding * 2;\n log.debug(\n `new ViewBox 0 0 ${width} ${height}`,\n `translate(${padding - g._label.marginx}, ${padding - g._label.marginy})`\n );\n\n configureSvgSize(svg, height, width, conf.useMaxWidth);\n\n svg.attr('viewBox', `0 0 ${width} ${height}`);\n svg\n .select('g')\n .attr('transform', `translate(${padding - g._label.marginx}, ${padding - svgBounds.y})`);\n\n // Index nodes\n flowDb.indexNodes('subGraph' + i);\n\n // Add label rects for non html labels\n if (!conf.htmlLabels) {\n const labels = doc.querySelectorAll('[id=\"' + id + '\"] .edgeLabel .label');\n for (let k = 0; k < labels.length; k++) {\n const label = labels[k];\n\n // Get dimensions of label\n const dim = label.getBBox();\n\n const rect = doc.createElementNS('http://www.w3.org/2000/svg', 'rect');\n rect.setAttribute('rx', 0);\n rect.setAttribute('ry', 0);\n rect.setAttribute('width', dim.width);\n rect.setAttribute('height', dim.height);\n // rect.setAttribute('style', 'fill:#e8e8e8;');\n\n label.insertBefore(rect, label.firstChild);\n }\n }\n\n // If node has a link, wrap it in an anchor SVG object.\n const keys = Object.keys(vert);\n keys.forEach(function (key) {\n const vertex = vert[key];\n\n if (vertex.link) {\n const node = select('#' + id + ' [id=\"' + key + '\"]');\n if (node) {\n const link = doc.createElementNS('http://www.w3.org/2000/svg', 'a');\n link.setAttributeNS('http://www.w3.org/2000/svg', 'class', vertex.classes.join(' '));\n link.setAttributeNS('http://www.w3.org/2000/svg', 'href', vertex.link);\n link.setAttributeNS('http://www.w3.org/2000/svg', 'rel', 'noopener');\n if (securityLevel === 'sandbox') {\n link.setAttributeNS('http://www.w3.org/2000/svg', 'target', '_top');\n } else if (vertex.linkTarget) {\n link.setAttributeNS('http://www.w3.org/2000/svg', 'target', vertex.linkTarget);\n }\n\n const linkNode = node.insert(function () {\n return link;\n }, ':first-child');\n\n const shape = node.select('.label-container');\n if (shape) {\n linkNode.append(function () {\n return shape.node();\n });\n }\n\n const label = node.select('.label');\n if (label) {\n linkNode.append(function () {\n return label.node();\n });\n }\n }\n }\n });\n};\n\nexport default {\n setConf,\n addVertices,\n addEdges,\n getClasses,\n draw,\n};\n","import moment from 'moment-mini';\nimport { sanitizeUrl } from '@braintree/sanitize-url';\nimport { log } from '../../logger';\nimport * as configApi from '../../config';\nimport utils from '../../utils';\nimport mermaidAPI from '../../mermaidAPI';\nimport common from '../common/common';\nimport {\n setTitle,\n getTitle,\n getAccDescription,\n setAccDescription,\n clear as commonClear,\n} from '../../commonDb';\n\nlet dateFormat = '';\nlet axisFormat = '';\nlet todayMarker = '';\nlet includes = [];\nlet excludes = [];\nlet links = {};\nlet title = '';\nlet accDescription = '';\nlet sections = [];\nlet tasks = [];\nlet currentSection = '';\nconst tags = ['active', 'done', 'crit', 'milestone'];\nlet funs = [];\nlet inclusiveEndDates = false;\nlet topAxis = false;\n\n// The serial order of the task in the script\nlet lastOrder = 0;\n\nconst sanitizeText = function (txt) {\n return common.sanitizeText(txt, configApi.getConfig());\n};\n\nexport const parseDirective = function (statement, context, type) {\n mermaidAPI.parseDirective(this, statement, context, type);\n};\n\nexport const clear = function () {\n sections = [];\n tasks = [];\n currentSection = '';\n funs = [];\n title = '';\n taskCnt = 0;\n lastTask = undefined;\n lastTaskID = undefined;\n rawTasks = [];\n dateFormat = '';\n axisFormat = '';\n todayMarker = '';\n includes = [];\n excludes = [];\n inclusiveEndDates = false;\n topAxis = false;\n lastOrder = 0;\n links = {};\n commonClear();\n};\n\nexport const setAxisFormat = function (txt) {\n axisFormat = txt;\n};\n\nexport const getAxisFormat = function () {\n return axisFormat;\n};\n\nexport const setTodayMarker = function (txt) {\n todayMarker = txt;\n};\n\nexport const getTodayMarker = function () {\n return todayMarker;\n};\n\nexport const setDateFormat = function (txt) {\n dateFormat = txt;\n};\n\nexport const enableInclusiveEndDates = function () {\n inclusiveEndDates = true;\n};\n\nexport const endDatesAreInclusive = function () {\n return inclusiveEndDates;\n};\n\nexport const enableTopAxis = function () {\n topAxis = true;\n};\n\nexport const topAxisEnabled = function () {\n return topAxis;\n};\n\nexport const getDateFormat = function () {\n return dateFormat;\n};\n\nexport const setIncludes = function (txt) {\n includes = txt.toLowerCase().split(/[\\s,]+/);\n};\n\nexport const getIncludes = function () {\n return includes;\n};\nexport const setExcludes = function (txt) {\n excludes = txt.toLowerCase().split(/[\\s,]+/);\n};\n\nexport const getExcludes = function () {\n return excludes;\n};\n\nexport const getLinks = function () {\n return links;\n};\n\nexport const addSection = function (txt) {\n currentSection = txt;\n sections.push(txt);\n};\n\nexport const getSections = function () {\n return sections;\n};\n\nexport const getTasks = function () {\n let allItemsPricessed = compileTasks();\n const maxDepth = 10;\n let iterationCount = 0;\n while (!allItemsPricessed && iterationCount < maxDepth) {\n allItemsPricessed = compileTasks();\n iterationCount++;\n }\n\n tasks = rawTasks;\n\n return tasks;\n};\n\nexport const isInvalidDate = function (date, dateFormat, excludes, includes) {\n if (includes.indexOf(date.format(dateFormat.trim())) >= 0) {\n return false;\n }\n if (date.isoWeekday() >= 6 && excludes.indexOf('weekends') >= 0) {\n return true;\n }\n if (excludes.indexOf(date.format('dddd').toLowerCase()) >= 0) {\n return true;\n }\n return excludes.indexOf(date.format(dateFormat.trim())) >= 0;\n};\n\nconst checkTaskDates = function (task, dateFormat, excludes, includes) {\n if (!excludes.length || task.manualEndTime) return;\n let startTime = moment(task.startTime, dateFormat, true);\n startTime.add(1, 'd');\n let endTime = moment(task.endTime, dateFormat, true);\n let renderEndTime = fixTaskDates(startTime, endTime, dateFormat, excludes, includes);\n task.endTime = endTime.toDate();\n task.renderEndTime = renderEndTime;\n};\n\nconst fixTaskDates = function (startTime, endTime, dateFormat, excludes, includes) {\n let invalid = false;\n let renderEndTime = null;\n while (startTime <= endTime) {\n if (!invalid) {\n renderEndTime = endTime.toDate();\n }\n invalid = isInvalidDate(startTime, dateFormat, excludes, includes);\n if (invalid) {\n endTime.add(1, 'd');\n }\n startTime.add(1, 'd');\n }\n return renderEndTime;\n};\n\nconst getStartDate = function (prevTime, dateFormat, str) {\n str = str.trim();\n\n // Test for after\n const re = /^after\\s+([\\d\\w- ]+)/;\n const afterStatement = re.exec(str.trim());\n\n if (afterStatement !== null) {\n // check all after ids and take the latest\n let latestEndingTask = null;\n afterStatement[1].split(' ').forEach(function (id) {\n let task = findTaskById(id);\n if (typeof task !== 'undefined') {\n if (!latestEndingTask) {\n latestEndingTask = task;\n } else {\n if (task.endTime > latestEndingTask.endTime) {\n latestEndingTask = task;\n }\n }\n }\n });\n\n if (!latestEndingTask) {\n const dt = new Date();\n dt.setHours(0, 0, 0, 0);\n return dt;\n } else {\n return latestEndingTask.endTime;\n }\n }\n\n // Check for actual date set\n let mDate = moment(str, dateFormat.trim(), true);\n if (mDate.isValid()) {\n return mDate.toDate();\n } else {\n log.debug('Invalid date:' + str);\n log.debug('With date format:' + dateFormat.trim());\n }\n\n // Default date - now\n return new Date();\n};\n\nconst durationToDate = function (durationStatement, relativeTime) {\n if (durationStatement !== null) {\n switch (durationStatement[2]) {\n case 's':\n relativeTime.add(durationStatement[1], 'seconds');\n break;\n case 'm':\n relativeTime.add(durationStatement[1], 'minutes');\n break;\n case 'h':\n relativeTime.add(durationStatement[1], 'hours');\n break;\n case 'd':\n relativeTime.add(durationStatement[1], 'days');\n break;\n case 'w':\n relativeTime.add(durationStatement[1], 'weeks');\n break;\n }\n }\n // Default date - now\n return relativeTime.toDate();\n};\n\nconst getEndDate = function (prevTime, dateFormat, str, inclusive) {\n inclusive = inclusive || false;\n str = str.trim();\n\n // Check for actual date\n let mDate = moment(str, dateFormat.trim(), true);\n if (mDate.isValid()) {\n if (inclusive) {\n mDate.add(1, 'd');\n }\n return mDate.toDate();\n }\n\n return durationToDate(/^([\\d]+)([wdhms])/.exec(str.trim()), moment(prevTime));\n};\n\nlet taskCnt = 0;\nconst parseId = function (idStr) {\n if (typeof idStr === 'undefined') {\n taskCnt = taskCnt + 1;\n return 'task' + taskCnt;\n }\n return idStr;\n};\n// id, startDate, endDate\n// id, startDate, length\n// id, after x, endDate\n// id, after x, length\n// startDate, endDate\n// startDate, length\n// after x, endDate\n// after x, length\n// endDate\n// length\n\nconst compileData = function (prevTask, dataStr) {\n let ds;\n\n if (dataStr.substr(0, 1) === ':') {\n ds = dataStr.substr(1, dataStr.length);\n } else {\n ds = dataStr;\n }\n\n const data = ds.split(',');\n\n const task = {};\n\n // Get tags like active, done, crit and milestone\n getTaskTags(data, task, tags);\n\n for (let i = 0; i < data.length; i++) {\n data[i] = data[i].trim();\n }\n\n let endTimeData = '';\n switch (data.length) {\n case 1:\n task.id = parseId();\n task.startTime = prevTask.endTime;\n endTimeData = data[0];\n break;\n case 2:\n task.id = parseId();\n task.startTime = getStartDate(undefined, dateFormat, data[0]);\n endTimeData = data[1];\n break;\n case 3:\n task.id = parseId(data[0]);\n task.startTime = getStartDate(undefined, dateFormat, data[1]);\n endTimeData = data[2];\n break;\n default:\n }\n\n if (endTimeData) {\n task.endTime = getEndDate(task.startTime, dateFormat, endTimeData, inclusiveEndDates);\n task.manualEndTime = moment(endTimeData, 'YYYY-MM-DD', true).isValid();\n checkTaskDates(task, dateFormat, excludes, includes);\n }\n\n return task;\n};\n\nconst parseData = function (prevTaskId, dataStr) {\n let ds;\n if (dataStr.substr(0, 1) === ':') {\n ds = dataStr.substr(1, dataStr.length);\n } else {\n ds = dataStr;\n }\n\n const data = ds.split(',');\n\n const task = {};\n\n // Get tags like active, done, crit and milestone\n getTaskTags(data, task, tags);\n\n for (let i = 0; i < data.length; i++) {\n data[i] = data[i].trim();\n }\n\n switch (data.length) {\n case 1:\n task.id = parseId();\n task.startTime = {\n type: 'prevTaskEnd',\n id: prevTaskId,\n };\n task.endTime = {\n data: data[0],\n };\n break;\n case 2:\n task.id = parseId();\n task.startTime = {\n type: 'getStartDate',\n startData: data[0],\n };\n task.endTime = {\n data: data[1],\n };\n break;\n case 3:\n task.id = parseId(data[0]);\n task.startTime = {\n type: 'getStartDate',\n startData: data[1],\n };\n task.endTime = {\n data: data[2],\n };\n break;\n default:\n }\n\n return task;\n};\n\nlet lastTask;\nlet lastTaskID;\nlet rawTasks = [];\nconst taskDb = {};\nexport const addTask = function (descr, data) {\n const rawTask = {\n section: currentSection,\n type: currentSection,\n processed: false,\n manualEndTime: false,\n renderEndTime: null,\n raw: { data: data },\n task: descr,\n classes: [],\n };\n const taskInfo = parseData(lastTaskID, data);\n rawTask.raw.startTime = taskInfo.startTime;\n rawTask.raw.endTime = taskInfo.endTime;\n rawTask.id = taskInfo.id;\n rawTask.prevTaskId = lastTaskID;\n rawTask.active = taskInfo.active;\n rawTask.done = taskInfo.done;\n rawTask.crit = taskInfo.crit;\n rawTask.milestone = taskInfo.milestone;\n rawTask.order = lastOrder;\n\n lastOrder++;\n\n const pos = rawTasks.push(rawTask);\n\n lastTaskID = rawTask.id;\n // Store cross ref\n taskDb[rawTask.id] = pos - 1;\n};\n\nexport const findTaskById = function (id) {\n const pos = taskDb[id];\n return rawTasks[pos];\n};\n\nexport const addTaskOrg = function (descr, data) {\n const newTask = {\n section: currentSection,\n type: currentSection,\n description: descr,\n task: descr,\n classes: [],\n };\n const taskInfo = compileData(lastTask, data);\n newTask.startTime = taskInfo.startTime;\n newTask.endTime = taskInfo.endTime;\n newTask.id = taskInfo.id;\n newTask.active = taskInfo.active;\n newTask.done = taskInfo.done;\n newTask.crit = taskInfo.crit;\n newTask.milestone = taskInfo.milestone;\n lastTask = newTask;\n tasks.push(newTask);\n};\n\nconst compileTasks = function () {\n const compileTask = function (pos) {\n const task = rawTasks[pos];\n let startTime = '';\n switch (rawTasks[pos].raw.startTime.type) {\n case 'prevTaskEnd': {\n const prevTask = findTaskById(task.prevTaskId);\n task.startTime = prevTask.endTime;\n break;\n }\n case 'getStartDate':\n startTime = getStartDate(undefined, dateFormat, rawTasks[pos].raw.startTime.startData);\n if (startTime) {\n rawTasks[pos].startTime = startTime;\n }\n break;\n }\n\n if (rawTasks[pos].startTime) {\n rawTasks[pos].endTime = getEndDate(\n rawTasks[pos].startTime,\n dateFormat,\n rawTasks[pos].raw.endTime.data,\n inclusiveEndDates\n );\n if (rawTasks[pos].endTime) {\n rawTasks[pos].processed = true;\n rawTasks[pos].manualEndTime = moment(\n rawTasks[pos].raw.endTime.data,\n 'YYYY-MM-DD',\n true\n ).isValid();\n checkTaskDates(rawTasks[pos], dateFormat, excludes, includes);\n }\n }\n\n return rawTasks[pos].processed;\n };\n\n let allProcessed = true;\n for (let i = 0; i < rawTasks.length; i++) {\n compileTask(i);\n\n allProcessed = allProcessed && rawTasks[i].processed;\n }\n return allProcessed;\n};\n\n/**\n * Called by parser when a link is found. Adds the URL to the vertex data.\n *\n * @param ids Comma separated list of ids\n * @param _linkStr URL to create a link for\n */\nexport const setLink = function (ids, _linkStr) {\n let linkStr = _linkStr;\n if (configApi.getConfig().securityLevel !== 'loose') {\n linkStr = sanitizeUrl(_linkStr);\n }\n ids.split(',').forEach(function (id) {\n let rawTask = findTaskById(id);\n if (typeof rawTask !== 'undefined') {\n pushFun(id, () => {\n window.open(linkStr, '_self');\n });\n links[id] = linkStr;\n }\n });\n setClass(ids, 'clickable');\n};\n\n/**\n * Called by parser when a special node is found, e.g. a clickable element.\n *\n * @param ids Comma separated list of ids\n * @param className Class to add\n */\nexport const setClass = function (ids, className) {\n ids.split(',').forEach(function (id) {\n let rawTask = findTaskById(id);\n if (typeof rawTask !== 'undefined') {\n rawTask.classes.push(className);\n }\n });\n};\n\nconst setClickFun = function (id, functionName, functionArgs) {\n if (configApi.getConfig().securityLevel !== 'loose') {\n return;\n }\n if (typeof functionName === 'undefined') {\n return;\n }\n\n let argList = [];\n if (typeof functionArgs === 'string') {\n /* Splits functionArgs by ',', ignoring all ',' in double quoted strings */\n argList = functionArgs.split(/,(?=(?:(?:[^\"]*\"){2})*[^\"]*$)/);\n for (let i = 0; i < argList.length; i++) {\n let item = argList[i].trim();\n /* Removes all double quotes at the start and end of an argument */\n /* This preserves all starting and ending whitespace inside */\n if (item.charAt(0) === '\"' && item.charAt(item.length - 1) === '\"') {\n item = item.substr(1, item.length - 2);\n }\n argList[i] = item;\n }\n }\n\n /* if no arguments passed into callback, default to passing in id */\n if (argList.length === 0) {\n argList.push(id);\n }\n\n let rawTask = findTaskById(id);\n if (typeof rawTask !== 'undefined') {\n pushFun(id, () => {\n utils.runFunc(functionName, ...argList);\n });\n }\n};\n\n/**\n * The callbackFunction is executed in a click event bound to the task with the specified id or the\n * task's assigned text\n *\n * @param id The task's id\n * @param callbackFunction A function to be executed when clicked on the task or the task's text\n */\nconst pushFun = function (id, callbackFunction) {\n funs.push(function () {\n // const elem = d3.select(element).select(`[id=\"${id}\"]`)\n const elem = document.querySelector(`[id=\"${id}\"]`);\n if (elem !== null) {\n elem.addEventListener('click', function () {\n callbackFunction();\n });\n }\n });\n funs.push(function () {\n // const elem = d3.select(element).select(`[id=\"${id}-text\"]`)\n const elem = document.querySelector(`[id=\"${id}-text\"]`);\n if (elem !== null) {\n elem.addEventListener('click', function () {\n callbackFunction();\n });\n }\n });\n};\n\n/**\n * Called by parser when a click definition is found. Registers an event handler.\n *\n * @param ids Comma separated list of ids\n * @param functionName Function to be called on click\n * @param functionArgs Function args the function should be called with\n */\nexport const setClickEvent = function (ids, functionName, functionArgs) {\n ids.split(',').forEach(function (id) {\n setClickFun(id, functionName, functionArgs);\n });\n setClass(ids, 'clickable');\n};\n\n/**\n * Binds all functions previously added to fun (specified through click) to the element\n *\n * @param element\n */\nexport const bindFunctions = function (element) {\n funs.forEach(function (fun) {\n fun(element);\n });\n};\n\nexport default {\n parseDirective,\n getConfig: () => configApi.getConfig().gantt,\n clear,\n setDateFormat,\n getDateFormat,\n enableInclusiveEndDates,\n endDatesAreInclusive,\n enableTopAxis,\n topAxisEnabled,\n setAxisFormat,\n getAxisFormat,\n setTodayMarker,\n getTodayMarker,\n setTitle,\n getTitle,\n setAccDescription,\n getAccDescription,\n addSection,\n getSections,\n getTasks,\n addTask,\n findTaskById,\n addTaskOrg,\n setIncludes,\n getIncludes,\n setExcludes,\n getExcludes,\n setClickEvent,\n setLink,\n getLinks,\n bindFunctions,\n durationToDate,\n isInvalidDate,\n};\n\n/**\n * @param data\n * @param task\n * @param tags\n */\nfunction getTaskTags(data, task, tags) {\n let matchFound = true;\n while (matchFound) {\n matchFound = false;\n tags.forEach(function (t) {\n const pattern = '^\\\\s*' + t + '\\\\s*$';\n const regex = new RegExp(pattern);\n if (data[0].match(regex)) {\n task[t] = true;\n data.shift(1);\n matchFound = true;\n }\n });\n }\n}\n","import moment from 'moment-mini';\nimport {\n select,\n scaleTime,\n min,\n max,\n scaleLinear,\n interpolateHcl,\n axisBottom,\n axisTop,\n timeFormat,\n} from 'd3';\nimport { parser } from './parser/gantt';\nimport common from '../common/common';\nimport ganttDb from './ganttDb';\nimport { getConfig } from '../../config';\nimport { configureSvgSize } from '../../utils';\nimport addSVGAccessibilityFields from '../../accessibility';\n\nparser.yy = ganttDb;\nexport const setConf = function () {\n // const keys = Object.keys(cnf);\n // keys.forEach(function(key) {\n // conf[key] = cnf[key];\n // });\n};\nlet w;\nexport const draw = function (text, id) {\n const conf = getConfig().gantt;\n parser.yy.clear();\n parser.parse(text);\n\n const securityLevel = getConfig().securityLevel;\n // Handle root and ocument for when rendering in sanbox mode\n let sandboxElement;\n if (securityLevel === 'sandbox') {\n sandboxElement = select('#i' + id);\n }\n const root =\n securityLevel === 'sandbox'\n ? select(sandboxElement.nodes()[0].contentDocument.body)\n : select('body');\n const doc = securityLevel === 'sandbox' ? sandboxElement.nodes()[0].contentDocument : document;\n\n const elem = doc.getElementById(id);\n w = elem.parentElement.offsetWidth;\n\n if (typeof w === 'undefined') {\n w = 1200;\n }\n\n if (typeof conf.useWidth !== 'undefined') {\n w = conf.useWidth;\n }\n\n const taskArray = parser.yy.getTasks();\n\n // Set height based on number of tasks\n const h = taskArray.length * (conf.barHeight + conf.barGap) + 2 * conf.topPadding;\n\n // Set viewBox\n elem.setAttribute('viewBox', '0 0 ' + w + ' ' + h);\n const svg = root.select(`[id=\"${id}\"]`);\n\n // Set timescale\n const timeScale = scaleTime()\n .domain([\n min(taskArray, function (d) {\n return d.startTime;\n }),\n max(taskArray, function (d) {\n return d.endTime;\n }),\n ])\n .rangeRound([0, w - conf.leftPadding - conf.rightPadding]);\n\n let categories = [];\n\n for (let i = 0; i < taskArray.length; i++) {\n categories.push(taskArray[i].type);\n }\n\n const catsUnfiltered = categories; // for vert labels\n\n categories = checkUnique(categories);\n\n /**\n * @param a\n * @param b\n */\n function taskCompare(a, b) {\n const taskA = a.startTime;\n const taskB = b.startTime;\n let result = 0;\n if (taskA > taskB) {\n result = 1;\n } else if (taskA < taskB) {\n result = -1;\n }\n return result;\n }\n\n // Sort the task array using the above taskCompare() so that\n // tasks are created based on their order of startTime\n taskArray.sort(taskCompare);\n\n makeGant(taskArray, w, h);\n\n configureSvgSize(svg, h, w, conf.useMaxWidth);\n\n svg\n .append('text')\n .text(parser.yy.getTitle())\n .attr('x', w / 2)\n .attr('y', conf.titleTopMargin)\n .attr('class', 'titleText');\n\n addSVGAccessibilityFields(parser.yy, svg, id);\n\n /**\n * @param tasks\n * @param pageWidth\n * @param pageHeight\n */\n function makeGant(tasks, pageWidth, pageHeight) {\n const barHeight = conf.barHeight;\n const gap = barHeight + conf.barGap;\n const topPadding = conf.topPadding;\n const leftPadding = conf.leftPadding;\n\n const colorScale = scaleLinear()\n .domain([0, categories.length])\n .range(['#00B9FA', '#F95002'])\n .interpolate(interpolateHcl);\n\n drawExcludeDays(\n gap,\n topPadding,\n leftPadding,\n pageWidth,\n pageHeight,\n tasks,\n parser.yy.getExcludes(),\n parser.yy.getIncludes()\n );\n makeGrid(leftPadding, topPadding, pageWidth, pageHeight);\n drawRects(tasks, gap, topPadding, leftPadding, barHeight, colorScale, pageWidth, pageHeight);\n vertLabels(gap, topPadding, leftPadding, barHeight, colorScale);\n drawToday(leftPadding, topPadding, pageWidth, pageHeight);\n }\n\n /**\n * @param theArray\n * @param theGap\n * @param theTopPad\n * @param theSidePad\n * @param theBarHeight\n * @param theColorScale\n * @param w\n */\n function drawRects(theArray, theGap, theTopPad, theSidePad, theBarHeight, theColorScale, w) {\n // Draw background rects covering the entire width of the graph, these form the section rows.\n svg\n .append('g')\n .selectAll('rect')\n .data(theArray)\n .enter()\n .append('rect')\n .attr('x', 0)\n .attr('y', function (d, i) {\n // Ignore the incoming i value and use our order instead\n i = d.order;\n return i * theGap + theTopPad - 2;\n })\n .attr('width', function () {\n return w - conf.rightPadding / 2;\n })\n .attr('height', theGap)\n .attr('class', function (d) {\n for (let i = 0; i < categories.length; i++) {\n if (d.type === categories[i]) {\n return 'section section' + (i % conf.numberSectionStyles);\n }\n }\n return 'section section0';\n });\n\n // Draw the rects representing the tasks\n const rectangles = svg.append('g').selectAll('rect').data(theArray).enter();\n\n const links = ganttDb.getLinks();\n\n // Render the tasks with links\n // Render the other tasks\n rectangles\n .append('rect')\n .attr('id', function (d) {\n return d.id;\n })\n .attr('rx', 3)\n .attr('ry', 3)\n .attr('x', function (d) {\n if (d.milestone) {\n return (\n timeScale(d.startTime) +\n theSidePad +\n 0.5 * (timeScale(d.endTime) - timeScale(d.startTime)) -\n 0.5 * theBarHeight\n );\n }\n return timeScale(d.startTime) + theSidePad;\n })\n .attr('y', function (d, i) {\n // Ignore the incoming i value and use our order instead\n i = d.order;\n return i * theGap + theTopPad;\n })\n .attr('width', function (d) {\n if (d.milestone) {\n return theBarHeight;\n }\n return timeScale(d.renderEndTime || d.endTime) - timeScale(d.startTime);\n })\n .attr('height', theBarHeight)\n .attr('transform-origin', function (d, i) {\n // Ignore the incoming i value and use our order instead\n i = d.order;\n\n return (\n (\n timeScale(d.startTime) +\n theSidePad +\n 0.5 * (timeScale(d.endTime) - timeScale(d.startTime))\n ).toString() +\n 'px ' +\n (i * theGap + theTopPad + 0.5 * theBarHeight).toString() +\n 'px'\n );\n })\n .attr('class', function (d) {\n const res = 'task';\n\n let classStr = '';\n if (d.classes.length > 0) {\n classStr = d.classes.join(' ');\n }\n\n let secNum = 0;\n for (let i = 0; i < categories.length; i++) {\n if (d.type === categories[i]) {\n secNum = i % conf.numberSectionStyles;\n }\n }\n\n let taskClass = '';\n if (d.active) {\n if (d.crit) {\n taskClass += ' activeCrit';\n } else {\n taskClass = ' active';\n }\n } else if (d.done) {\n if (d.crit) {\n taskClass = ' doneCrit';\n } else {\n taskClass = ' done';\n }\n } else {\n if (d.crit) {\n taskClass += ' crit';\n }\n }\n\n if (taskClass.length === 0) {\n taskClass = ' task';\n }\n\n if (d.milestone) {\n taskClass = ' milestone ' + taskClass;\n }\n\n taskClass += secNum;\n\n taskClass += ' ' + classStr;\n\n return res + taskClass;\n });\n\n // Append task labels\n rectangles\n .append('text')\n .attr('id', function (d) {\n return d.id + '-text';\n })\n .text(function (d) {\n return d.task;\n })\n .attr('font-size', conf.fontSize)\n .attr('x', function (d) {\n let startX = timeScale(d.startTime);\n let endX = timeScale(d.renderEndTime || d.endTime);\n if (d.milestone) {\n startX += 0.5 * (timeScale(d.endTime) - timeScale(d.startTime)) - 0.5 * theBarHeight;\n }\n if (d.milestone) {\n endX = startX + theBarHeight;\n }\n const textWidth = this.getBBox().width;\n\n // Check id text width > width of rectangle\n if (textWidth > endX - startX) {\n if (endX + textWidth + 1.5 * conf.leftPadding > w) {\n return startX + theSidePad - 5;\n } else {\n return endX + theSidePad + 5;\n }\n } else {\n return (endX - startX) / 2 + startX + theSidePad;\n }\n })\n .attr('y', function (d, i) {\n // Ignore the incoming i value and use our order instead\n i = d.order;\n return i * theGap + conf.barHeight / 2 + (conf.fontSize / 2 - 2) + theTopPad;\n })\n .attr('text-height', theBarHeight)\n .attr('class', function (d) {\n const startX = timeScale(d.startTime);\n let endX = timeScale(d.endTime);\n if (d.milestone) {\n endX = startX + theBarHeight;\n }\n const textWidth = this.getBBox().width;\n\n let classStr = '';\n if (d.classes.length > 0) {\n classStr = d.classes.join(' ');\n }\n\n let secNum = 0;\n for (let i = 0; i < categories.length; i++) {\n if (d.type === categories[i]) {\n secNum = i % conf.numberSectionStyles;\n }\n }\n\n let taskType = '';\n if (d.active) {\n if (d.crit) {\n taskType = 'activeCritText' + secNum;\n } else {\n taskType = 'activeText' + secNum;\n }\n }\n\n if (d.done) {\n if (d.crit) {\n taskType = taskType + ' doneCritText' + secNum;\n } else {\n taskType = taskType + ' doneText' + secNum;\n }\n } else {\n if (d.crit) {\n taskType = taskType + ' critText' + secNum;\n }\n }\n\n if (d.milestone) {\n taskType += ' milestoneText';\n }\n\n // Check id text width > width of rectangle\n if (textWidth > endX - startX) {\n if (endX + textWidth + 1.5 * conf.leftPadding > w) {\n return classStr + ' taskTextOutsideLeft taskTextOutside' + secNum + ' ' + taskType;\n } else {\n return (\n classStr +\n ' taskTextOutsideRight taskTextOutside' +\n secNum +\n ' ' +\n taskType +\n ' width-' +\n textWidth\n );\n }\n } else {\n return classStr + ' taskText taskText' + secNum + ' ' + taskType + ' width-' + textWidth;\n }\n });\n\n const securityLevel = getConfig().securityLevel;\n\n // Wrap the tasks in an a tag for working links without javascript\n if (securityLevel === 'sandbox') {\n let sandboxElement;\n sandboxElement = select('#i' + id);\n const root = select(sandboxElement.nodes()[0].contentDocument.body);\n const doc = sandboxElement.nodes()[0].contentDocument;\n\n rectangles\n .filter(function (d) {\n return typeof links[d.id] !== 'undefined';\n })\n .each(function (o) {\n var taskRect = doc.querySelector('#' + o.id);\n var taskText = doc.querySelector('#' + o.id + '-text');\n const oldParent = taskRect.parentNode;\n var Link = doc.createElement('a');\n Link.setAttribute('xlink:href', links[o.id]);\n Link.setAttribute('target', '_top');\n oldParent.appendChild(Link);\n Link.appendChild(taskRect);\n Link.appendChild(taskText);\n });\n }\n }\n /**\n * @param theGap\n * @param theTopPad\n * @param theSidePad\n * @param w\n * @param h\n * @param tasks\n * @param excludes\n * @param includes\n */\n function drawExcludeDays(theGap, theTopPad, theSidePad, w, h, tasks, excludes, includes) {\n const minTime = tasks.reduce(\n (min, { startTime }) => (min ? Math.min(min, startTime) : startTime),\n 0\n );\n const maxTime = tasks.reduce((max, { endTime }) => (max ? Math.max(max, endTime) : endTime), 0);\n const dateFormat = parser.yy.getDateFormat();\n if (!minTime || !maxTime) return;\n\n const excludeRanges = [];\n let range = null;\n let d = moment(minTime);\n while (d.valueOf() <= maxTime) {\n if (parser.yy.isInvalidDate(d, dateFormat, excludes, includes)) {\n if (!range) {\n range = {\n start: d.clone(),\n end: d.clone(),\n };\n } else {\n range.end = d.clone();\n }\n } else {\n if (range) {\n excludeRanges.push(range);\n range = null;\n }\n }\n d.add(1, 'd');\n }\n\n const rectangles = svg.append('g').selectAll('rect').data(excludeRanges).enter();\n\n rectangles\n .append('rect')\n .attr('id', function (d) {\n return 'exclude-' + d.start.format('YYYY-MM-DD');\n })\n .attr('x', function (d) {\n return timeScale(d.start) + theSidePad;\n })\n .attr('y', conf.gridLineStartPadding)\n .attr('width', function (d) {\n const renderEnd = d.end.clone().add(1, 'day');\n return timeScale(renderEnd) - timeScale(d.start);\n })\n .attr('height', h - theTopPad - conf.gridLineStartPadding)\n .attr('transform-origin', function (d, i) {\n return (\n (\n timeScale(d.start) +\n theSidePad +\n 0.5 * (timeScale(d.end) - timeScale(d.start))\n ).toString() +\n 'px ' +\n (i * theGap + 0.5 * h).toString() +\n 'px'\n );\n })\n .attr('class', 'exclude-range');\n }\n\n /**\n * @param theSidePad\n * @param theTopPad\n * @param w\n * @param h\n */\n function makeGrid(theSidePad, theTopPad, w, h) {\n let bottomXAxis = axisBottom(timeScale)\n .tickSize(-h + theTopPad + conf.gridLineStartPadding)\n .tickFormat(timeFormat(parser.yy.getAxisFormat() || conf.axisFormat || '%Y-%m-%d'));\n\n svg\n .append('g')\n .attr('class', 'grid')\n .attr('transform', 'translate(' + theSidePad + ', ' + (h - 50) + ')')\n .call(bottomXAxis)\n .selectAll('text')\n .style('text-anchor', 'middle')\n .attr('fill', '#000')\n .attr('stroke', 'none')\n .attr('font-size', 10)\n .attr('dy', '1em');\n\n if (ganttDb.topAxisEnabled() || conf.topAxis) {\n let topXAxis = axisTop(timeScale)\n .tickSize(-h + theTopPad + conf.gridLineStartPadding)\n .tickFormat(timeFormat(parser.yy.getAxisFormat() || conf.axisFormat || '%Y-%m-%d'));\n\n svg\n .append('g')\n .attr('class', 'grid')\n .attr('transform', 'translate(' + theSidePad + ', ' + theTopPad + ')')\n .call(topXAxis)\n .selectAll('text')\n .style('text-anchor', 'middle')\n .attr('fill', '#000')\n .attr('stroke', 'none')\n .attr('font-size', 10);\n // .attr('dy', '1em');\n }\n }\n\n /**\n * @param theGap\n * @param theTopPad\n */\n function vertLabels(theGap, theTopPad) {\n const numOccurances = [];\n let prevGap = 0;\n\n for (let i = 0; i < categories.length; i++) {\n numOccurances[i] = [categories[i], getCount(categories[i], catsUnfiltered)];\n }\n\n svg\n .append('g') // without doing this, impossible to put grid lines behind text\n .selectAll('text')\n .data(numOccurances)\n .enter()\n .append(function (d) {\n const rows = d[0].split(common.lineBreakRegex);\n const dy = -(rows.length - 1) / 2;\n\n const svgLabel = doc.createElementNS('http://www.w3.org/2000/svg', 'text');\n svgLabel.setAttribute('dy', dy + 'em');\n\n for (let j = 0; j < rows.length; j++) {\n const tspan = doc.createElementNS('http://www.w3.org/2000/svg', 'tspan');\n tspan.setAttribute('alignment-baseline', 'central');\n tspan.setAttribute('x', '10');\n if (j > 0) tspan.setAttribute('dy', '1em');\n tspan.textContent = rows[j];\n svgLabel.appendChild(tspan);\n }\n return svgLabel;\n })\n .attr('x', 10)\n .attr('y', function (d, i) {\n if (i > 0) {\n for (let j = 0; j < i; j++) {\n prevGap += numOccurances[i - 1][1];\n return (d[1] * theGap) / 2 + prevGap * theGap + theTopPad;\n }\n } else {\n return (d[1] * theGap) / 2 + theTopPad;\n }\n })\n .attr('font-size', conf.sectionFontSize)\n .attr('font-size', conf.sectionFontSize)\n .attr('class', function (d) {\n for (let i = 0; i < categories.length; i++) {\n if (d[0] === categories[i]) {\n return 'sectionTitle sectionTitle' + (i % conf.numberSectionStyles);\n }\n }\n return 'sectionTitle';\n });\n }\n\n /**\n * @param theSidePad\n * @param theTopPad\n * @param w\n * @param h\n */\n function drawToday(theSidePad, theTopPad, w, h) {\n const todayMarker = ganttDb.getTodayMarker();\n if (todayMarker === 'off') {\n return;\n }\n\n const todayG = svg.append('g').attr('class', 'today');\n const today = new Date();\n const todayLine = todayG.append('line');\n\n todayLine\n .attr('x1', timeScale(today) + theSidePad)\n .attr('x2', timeScale(today) + theSidePad)\n .attr('y1', conf.titleTopMargin)\n .attr('y2', h - conf.titleTopMargin)\n .attr('class', 'today');\n\n if (todayMarker !== '') {\n todayLine.attr('style', todayMarker.replace(/,/g, ';'));\n }\n }\n\n /**\n * From this stackexchange question:\n * http://stackoverflow.com/questions/1890203/unique-for-arrays-in-javascript\n *\n * @param arr\n */\n function checkUnique(arr) {\n const hash = {};\n const result = [];\n for (let i = 0, l = arr.length; i < l; ++i) {\n if (!Object.prototype.hasOwnProperty.call(hash, arr[i])) {\n // eslint-disable-line\n // it works with objects! in FF, at least\n hash[arr[i]] = true;\n result.push(arr[i]);\n }\n }\n return result;\n }\n\n /**\n * From this stackexchange question:\n * http://stackoverflow.com/questions/14227981/count-how-many-strings-in-an-array-have-duplicates-in-the-same-array\n *\n * @param arr\n */\n function getCounts(arr) {\n let i = arr.length; // const to loop over\n const obj = {}; // obj to store results\n while (i) {\n obj[arr[--i]] = (obj[arr[i]] || 0) + 1; // count occurrences\n }\n return obj;\n }\n\n /**\n * Get specific from everything\n *\n * @param word\n * @param arr\n */\n function getCount(word, arr) {\n return getCounts(arr)[word] || 0;\n }\n};\n\nexport default {\n setConf,\n draw,\n};\n","import { log } from '../../logger';\nimport { random } from '../../utils';\nimport mermaidAPI from '../../mermaidAPI';\nimport * as configApi from '../../config';\nimport { getConfig } from '../../config';\nimport common from '../common/common';\nimport {\n setTitle,\n getTitle,\n getAccDescription,\n setAccDescription,\n clear as commonClear,\n} from '../../commonDb';\n\nlet mainBranchName = getConfig().gitGraph.mainBranchName;\nlet mainBranchOrder = getConfig().gitGraph.mainBranchOrder;\nlet commits = {};\nlet head = null;\nlet branchesConfig = {};\nbranchesConfig[mainBranchName] = { name: mainBranchName, order: mainBranchOrder };\nlet branches = {};\nbranches[mainBranchName] = head;\nlet curBranch = mainBranchName;\nlet direction = 'LR';\nlet seq = 0;\n\nfunction getId() {\n return random({ length: 7 });\n}\n\nexport const parseDirective = function (statement, context, type) {\n mermaidAPI.parseDirective(this, statement, context, type);\n};\n\n// /**\n// * @param currentCommit\n// * @param otherCommit\n// */\n// function isfastforwardable(currentCommit, otherCommit) {\n// log.debug('Entering isfastforwardable:', currentCommit.id, otherCommit.id);\n// let cnt = 0;\n// while (currentCommit.seq <= otherCommit.seq && currentCommit !== otherCommit && cnt < 1000) {\n// cnt++;\n// // only if other branch has more commits\n// if (otherCommit.parent == null) break;\n// if (Array.isArray(otherCommit.parent)) {\n// log.debug('In merge commit:', otherCommit.parent);\n// return (\n// isfastforwardable(currentCommit, commits[otherCommit.parent[0]]) ||\n// isfastforwardable(currentCommit, commits[otherCommit.parent[1]])\n// );\n// } else {\n// otherCommit = commits[otherCommit.parent];\n// }\n// }\n// log.debug(currentCommit.id, otherCommit.id);\n// return currentCommit.id === otherCommit.id;\n// }\n\n/**\n * @param currentCommit\n * @param otherCommit\n */\n// function isReachableFrom(currentCommit, otherCommit) {\n// const currentSeq = currentCommit.seq;\n// const otherSeq = otherCommit.seq;\n// if (currentSeq > otherSeq) return isfastforwardable(otherCommit, currentCommit);\n// return false;\n// }\n\n/**\n * @param list\n * @param fn\n */\nfunction uniqBy(list, fn) {\n const recordMap = Object.create(null);\n return list.reduce((out, item) => {\n const key = fn(item);\n if (!recordMap[key]) {\n recordMap[key] = true;\n out.push(item);\n }\n return out;\n }, []);\n}\n\nexport const setDirection = function (dir) {\n direction = dir;\n};\nlet options = {};\nexport const setOptions = function (rawOptString) {\n log.debug('options str', rawOptString);\n rawOptString = rawOptString && rawOptString.trim();\n rawOptString = rawOptString || '{}';\n try {\n options = JSON.parse(rawOptString);\n } catch (e) {\n log.error('error while parsing gitGraph options', e.message);\n }\n};\n\nexport const getOptions = function () {\n return options;\n};\n\nexport const commit = function (msg, id, type, tag) {\n log.debug('Entering commit:', msg, id, type, tag);\n id = common.sanitizeText(id, configApi.getConfig());\n msg = common.sanitizeText(msg, configApi.getConfig());\n tag = common.sanitizeText(tag, configApi.getConfig());\n const commit = {\n id: id ? id : seq + '-' + getId(),\n message: msg,\n seq: seq++,\n type: type ? type : commitType.NORMAL,\n tag: tag ? tag : '',\n parents: head == null ? [] : [head.id],\n branch: curBranch,\n };\n head = commit;\n commits[commit.id] = commit;\n branches[curBranch] = commit.id;\n log.debug('in pushCommit ' + commit.id);\n};\n\nexport const branch = function (name, order) {\n name = common.sanitizeText(name, configApi.getConfig());\n if (typeof branches[name] === 'undefined') {\n branches[name] = head != null ? head.id : null;\n branchesConfig[name] = { name, order: order ? parseInt(order, 10) : null };\n checkout(name);\n log.debug('in createBranch');\n } else {\n let error = new Error(\n 'Trying to create an existing branch. (Help: Either use a new name if you want create a new branch or try using \"checkout ' +\n name +\n '\")'\n );\n error.hash = {\n text: 'branch ' + name,\n token: 'branch ' + name,\n line: '1',\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: ['\"checkout ' + name + '\"'],\n };\n throw error;\n }\n};\n\nexport const merge = function (otherBranch, tag) {\n otherBranch = common.sanitizeText(otherBranch, configApi.getConfig());\n const currentCommit = commits[branches[curBranch]];\n const otherCommit = commits[branches[otherBranch]];\n if (curBranch === otherBranch) {\n let error = new Error('Incorrect usage of \"merge\". Cannot merge a branch to itself');\n error.hash = {\n text: 'merge ' + otherBranch,\n token: 'merge ' + otherBranch,\n line: '1',\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: ['branch abc'],\n };\n throw error;\n } else if (typeof currentCommit === 'undefined' || !currentCommit) {\n let error = new Error(\n 'Incorrect usage of \"merge\". Current branch (' + curBranch + ')has no commits'\n );\n error.hash = {\n text: 'merge ' + otherBranch,\n token: 'merge ' + otherBranch,\n line: '1',\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: ['commit'],\n };\n throw error;\n } else if (typeof branches[otherBranch] === 'undefined') {\n let error = new Error(\n 'Incorrect usage of \"merge\". Branch to be merged (' + otherBranch + ') does not exist'\n );\n error.hash = {\n text: 'merge ' + otherBranch,\n token: 'merge ' + otherBranch,\n line: '1',\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: ['branch ' + otherBranch],\n };\n throw error;\n } else if (typeof otherCommit === 'undefined' || !otherCommit) {\n let error = new Error(\n 'Incorrect usage of \"merge\". Branch to be merged (' + otherBranch + ') has no commits'\n );\n error.hash = {\n text: 'merge ' + otherBranch,\n token: 'merge ' + otherBranch,\n line: '1',\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: ['\"commit\"'],\n };\n throw error;\n } else if (currentCommit === otherCommit) {\n let error = new Error('Incorrect usage of \"merge\". Both branches have same head');\n error.hash = {\n text: 'merge ' + otherBranch,\n token: 'merge ' + otherBranch,\n line: '1',\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: ['branch abc'],\n };\n throw error;\n }\n // if (isReachableFrom(currentCommit, otherCommit)) {\n // log.debug('Already merged');\n // return;\n // }\n // if (isfastforwardable(currentCommit, otherCommit)) {\n // branches[curBranch] = branches[otherBranch];\n // head = commits[branches[curBranch]];\n // } else {\n // create merge commit\n const commit = {\n id: seq + '-' + getId(),\n message: 'merged branch ' + otherBranch + ' into ' + curBranch,\n seq: seq++,\n parents: [head == null ? null : head.id, branches[otherBranch]],\n branch: curBranch,\n type: commitType.MERGE,\n tag: tag ? tag : '',\n };\n head = commit;\n commits[commit.id] = commit;\n branches[curBranch] = commit.id;\n // }\n log.debug(branches);\n log.debug('in mergeBranch');\n};\n\nexport const checkout = function (branch) {\n branch = common.sanitizeText(branch, configApi.getConfig());\n if (typeof branches[branch] === 'undefined') {\n let error = new Error(\n 'Trying to checkout branch which is not yet created. (Help try using \"branch ' + branch + '\")'\n );\n error.hash = {\n text: 'checkout ' + branch,\n token: 'checkout ' + branch,\n line: '1',\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: ['\"branch ' + branch + '\"'],\n };\n throw error;\n //branches[branch] = head != null ? head.id : null;\n //log.debug('in createBranch');\n } else {\n curBranch = branch;\n const id = branches[curBranch];\n head = commits[id];\n }\n};\n\n// export const reset = function (commitRef) {\n// log.debug('in reset', commitRef);\n// const ref = commitRef.split(':')[0];\n// let parentCount = parseInt(commitRef.split(':')[1]);\n// let commit = ref === 'HEAD' ? head : commits[branches[ref]];\n// log.debug(commit, parentCount);\n// while (parentCount > 0) {\n// commit = commits[commit.parent];\n// parentCount--;\n// if (!commit) {\n// const err = 'Critical error - unique parent commit not found during reset';\n// log.error(err);\n// throw err;\n// }\n// }\n// head = commit;\n// branches[curBranch] = commit.id;\n// };\n\n/**\n * @param arr\n * @param key\n * @param newval\n */\nfunction upsert(arr, key, newval) {\n const index = arr.indexOf(key);\n if (index === -1) {\n arr.push(newval);\n } else {\n arr.splice(index, 1, newval);\n }\n}\n\n/** @param commitArr */\nfunction prettyPrintCommitHistory(commitArr) {\n const commit = commitArr.reduce((out, commit) => {\n if (out.seq > commit.seq) return out;\n return commit;\n }, commitArr[0]);\n let line = '';\n commitArr.forEach(function (c) {\n if (c === commit) {\n line += '\\t*';\n } else {\n line += '\\t|';\n }\n });\n const label = [line, commit.id, commit.seq];\n for (let branch in branches) {\n if (branches[branch] === commit.id) label.push(branch);\n }\n log.debug(label.join(' '));\n if (commit.parents && commit.parents.length == 2) {\n const newCommit = commits[commit.parents[0]];\n upsert(commitArr, commit, newCommit);\n commitArr.push(commits[commit.parents[1]]);\n } else if (commit.parents.length == 0) {\n return;\n } else {\n const nextCommit = commits[commit.parents];\n upsert(commitArr, commit, nextCommit);\n }\n commitArr = uniqBy(commitArr, (c) => c.id);\n prettyPrintCommitHistory(commitArr);\n}\n\nexport const prettyPrint = function () {\n log.debug(commits);\n const node = getCommitsArray()[0];\n prettyPrintCommitHistory([node]);\n};\n\nexport const clear = function () {\n commits = {};\n head = null;\n let mainBranch = getConfig().gitGraph.mainBranchName;\n let mainBranchOrder = getConfig().gitGraph.mainBranchOrder;\n branches = {};\n branches[mainBranch] = null;\n branchesConfig = {};\n branchesConfig[mainBranch] = { name: mainBranch, order: mainBranchOrder };\n curBranch = mainBranch;\n seq = 0;\n commonClear();\n};\n\nexport const getBranchesAsObjArray = function () {\n const branchesArray = Object.values(branchesConfig)\n .map((branchConfig, i) => {\n if (branchConfig.order !== null) return branchConfig;\n return {\n ...branchConfig,\n order: parseFloat(`0.${i}`, 10),\n };\n })\n .sort((a, b) => a.order - b.order)\n .map(({ name }) => ({ name }));\n\n return branchesArray;\n};\n\nexport const getBranches = function () {\n return branches;\n};\nexport const getCommits = function () {\n return commits;\n};\nexport const getCommitsArray = function () {\n const commitArr = Object.keys(commits).map(function (key) {\n return commits[key];\n });\n commitArr.forEach(function (o) {\n log.debug(o.id);\n });\n commitArr.sort((a, b) => a.seq - b.seq);\n return commitArr;\n};\nexport const getCurrentBranch = function () {\n return curBranch;\n};\nexport const getDirection = function () {\n return direction;\n};\nexport const getHead = function () {\n return head;\n};\n\nexport const commitType = {\n NORMAL: 0,\n REVERSE: 1,\n HIGHLIGHT: 2,\n MERGE: 3,\n};\n\nexport default {\n parseDirective,\n getConfig: () => configApi.getConfig().gitGraph,\n setDirection,\n setOptions,\n getOptions,\n commit,\n branch,\n merge,\n checkout,\n //reset,\n prettyPrint,\n clear,\n getBranchesAsObjArray,\n getBranches,\n getCommits,\n getCommitsArray,\n getCurrentBranch,\n getDirection,\n getHead,\n setTitle,\n getTitle,\n getAccDescription,\n setAccDescription,\n commitType,\n};\n","import { curveBasis, line, select } from 'd3';\nimport { interpolateToCurve, getStylesFromArray, configureSvgSize } from '../../utils';\nimport db from './gitGraphAst';\nimport gitGraphParser from './parser/gitGraph';\nimport { log } from '../../logger';\nimport { getConfig } from '../../config';\nimport addSVGAccessibilityFields from '../../accessibility';\n\nlet allCommitsDict = {};\nlet branchNum;\n\nconst commitType = {\n NORMAL: 0,\n REVERSE: 1,\n HIGHLIGHT: 2,\n MERGE: 3,\n};\n\nlet branchPos = {};\nlet commitPos = {};\nlet lanes = [];\nlet maxPos = 0;\nconst clear = () => {\n branchPos = {};\n commitPos = {};\n allCommitsDict = {};\n maxPos = 0;\n lanes = [];\n};\n\n/**\n * Draws a text, used for labels of the branches\n *\n * @param {string} txt The text\n * @returns {SVGElement}\n */\nconst drawText = (txt) => {\n const svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text');\n let rows = [];\n\n // Handling of new lines in the label\n if (typeof txt === 'string') {\n rows = txt.split(/\\\\n|\\n|<br\\s*\\/?>/gi);\n } else if (Array.isArray(txt)) {\n rows = txt;\n } else {\n rows = [];\n }\n\n for (let j = 0; j < rows.length; j++) {\n const tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');\n tspan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n tspan.setAttribute('dy', '1em');\n tspan.setAttribute('x', '0');\n tspan.setAttribute('class', 'row');\n tspan.textContent = rows[j].trim();\n svgLabel.appendChild(tspan);\n }\n /**\n * @param svg\n * @param selector\n */\n return svgLabel;\n};\n\n/**\n * Draws the commits with its symbol and labels. The function has tywo modes, one which only\n * calculates the positions and one that does the actual drawing. This for a simple way getting the\n * vertical leyering rcorrect in the graph.\n *\n * @param {any} svg\n * @param {any} commits\n * @param {any} modifyGraph\n */\nconst drawCommits = (svg, commits, modifyGraph) => {\n const gitGraphConfig = getConfig().gitGraph;\n const gBullets = svg.append('g').attr('class', 'commit-bullets');\n const gLabels = svg.append('g').attr('class', 'commit-labels');\n let pos = 0;\n\n const keys = Object.keys(commits);\n const sortedKeys = keys.sort((a, b) => {\n return commits[a].seq - commits[b].seq;\n });\n sortedKeys.forEach((key, index) => {\n const commit = commits[key];\n\n const y = branchPos[commit.branch].pos;\n const x = pos + 10;\n // Don't draw the commits now but calculate the positioning which is used by the branch lines etc.\n if (modifyGraph) {\n let typeClass;\n switch (commit.type) {\n case commitType.NORMAL:\n typeClass = 'commit-normal';\n break;\n case commitType.REVERSE:\n typeClass = 'commit-reverse';\n break;\n case commitType.HIGHLIGHT:\n typeClass = 'commit-highlight';\n break;\n case commitType.MERGE:\n typeClass = 'commit-merge';\n break;\n default:\n typeClass = 'commit-normal';\n }\n\n if (commit.type === commitType.HIGHLIGHT) {\n const circle = gBullets.append('rect');\n circle.attr('x', x - 10);\n circle.attr('y', y - 10);\n circle.attr('height', 20);\n circle.attr('width', 20);\n circle.attr(\n 'class',\n 'commit ' +\n commit.id +\n ' commit-highlight' +\n branchPos[commit.branch].index +\n ' ' +\n typeClass +\n '-outer'\n );\n gBullets\n .append('rect')\n .attr('x', x - 6)\n .attr('y', y - 6)\n .attr('height', 12)\n .attr('width', 12)\n .attr(\n 'class',\n 'commit ' +\n commit.id +\n ' commit' +\n branchPos[commit.branch].index +\n ' ' +\n typeClass +\n '-inner'\n );\n } else {\n const circle = gBullets.append('circle');\n circle.attr('cx', x);\n circle.attr('cy', y);\n circle.attr('r', commit.type === commitType.MERGE ? 9 : 10);\n circle.attr('class', 'commit ' + commit.id + ' commit' + branchPos[commit.branch].index);\n if (commit.type === commitType.MERGE) {\n const circle2 = gBullets.append('circle');\n circle2.attr('cx', x);\n circle2.attr('cy', y);\n circle2.attr('r', 6);\n circle2.attr(\n 'class',\n 'commit ' + typeClass + ' ' + commit.id + ' commit' + branchPos[commit.branch].index\n );\n }\n if (commit.type === commitType.REVERSE) {\n const cross = gBullets.append('path');\n cross\n .attr('d', `M ${x - 5},${y - 5}L${x + 5},${y + 5}M${x - 5},${y + 5}L${x + 5},${y - 5}`)\n .attr(\n 'class',\n 'commit ' + typeClass + ' ' + commit.id + ' commit' + branchPos[commit.branch].index\n );\n }\n }\n }\n commitPos[commit.id] = { x: pos + 10, y: y };\n\n // The first iteration over the commits are for positioning purposes, this\n // is required for drawing the lines. The circles and labels is drawn after the labels\n // placing them on top of the lines.\n if (modifyGraph) {\n const px = 4;\n const py = 2;\n // Draw the commit label\n if (commit.type !== commitType.MERGE && gitGraphConfig.showCommitLabel) {\n const labelBkg = gLabels.insert('rect').attr('class', 'commit-label-bkg');\n\n const text = gLabels\n .append('text')\n .attr('x', pos)\n .attr('y', y + 25)\n .attr('class', 'commit-label')\n .text(commit.id);\n let bbox = text.node().getBBox();\n\n // Now we have the label, lets position the background\n labelBkg\n .attr('x', pos + 10 - bbox.width / 2 - py)\n .attr('y', y + 13.5)\n .attr('width', bbox.width + 2 * py)\n .attr('height', bbox.height + 2 * py);\n text.attr('x', pos + 10 - bbox.width / 2);\n }\n if (commit.tag) {\n const rect = gLabels.insert('polygon');\n const hole = gLabels.append('circle');\n const tag = gLabels\n .append('text')\n // Note that we are delaying setting the x position until we know the width of the text\n .attr('y', y - 16)\n .attr('class', 'tag-label')\n .text(commit.tag);\n let tagBbox = tag.node().getBBox();\n tag.attr('x', pos + 10 - tagBbox.width / 2);\n\n const h2 = tagBbox.height / 2;\n const ly = y - 19.2;\n rect.attr('class', 'tag-label-bkg').attr(\n 'points',\n `\n ${pos - tagBbox.width / 2 - px / 2},${ly + py}\n ${pos - tagBbox.width / 2 - px / 2},${ly - py}\n ${pos + 10 - tagBbox.width / 2 - px},${ly - h2 - py}\n ${pos + 10 + tagBbox.width / 2 + px},${ly - h2 - py}\n ${pos + 10 + tagBbox.width / 2 + px},${ly + h2 + py}\n ${pos + 10 - tagBbox.width / 2 - px},${ly + h2 + py}`\n );\n\n hole\n .attr('cx', pos - tagBbox.width / 2 + px / 2)\n .attr('cy', ly)\n .attr('r', 1.5)\n .attr('class', 'tag-hole');\n }\n }\n pos += 50;\n if (pos > maxPos) {\n maxPos = pos;\n }\n });\n};\n\n/**\n * Detect if there are other commits between commit1s x-position and commit2s x-position on the same\n * branch as commit2.\n *\n * @param {any} commit1\n * @param {any} commit2\n * @param allCommits\n * @returns\n */\nconst hasOverlappingCommits = (commit1, commit2, allCommits) => {\n const commit1Pos = commitPos[commit2.id];\n const commit2Pos = commitPos[commit1.id];\n\n // Find commits on the same branch as commit2\n const keys = Object.keys(allCommits);\n const overlappingComits = keys.filter((key) => {\n return (\n allCommits[key].branch === commit2.branch &&\n allCommits[key].seq > commit1.seq &&\n allCommits[key].seq < commit2.seq\n );\n });\n\n return overlappingComits.length > 0;\n};\n\n/**\n * This function find a lane in the y-axis that is not overlapping with any other lanes. This is\n * used for drawing the lines between commits.\n *\n * @param {any} y1\n * @param {any} y2\n * @param {any} _depth\n * @returns\n */\nconst findLane = (y1, y2, _depth) => {\n const depth = _depth || 0;\n\n const candidate = y1 + Math.abs(y1 - y2) / 2;\n if (depth > 5) {\n return candidate;\n }\n\n let ok = true;\n for (let i = 0; i < lanes.length; i++) {\n if (Math.abs(lanes[i] - candidate) < 10) {\n ok = false;\n }\n }\n if (ok) {\n lanes.push(candidate);\n return candidate;\n }\n const diff = Math.abs(y1 - y2);\n return findLane(y1, y2 - diff / 5, depth);\n};\n\n/**\n * This function draw trhe lines between the commits. They were arrows initially.\n *\n * @param {any} svg\n * @param {any} commit1\n * @param {any} commit2\n * @param {any} allCommits\n */\nconst drawArrow = (svg, commit1, commit2, allCommits) => {\n const conf = getConfig();\n\n const p1 = commitPos[commit1.id];\n const p2 = commitPos[commit2.id];\n const overlappingCommits = hasOverlappingCommits(commit1, commit2, allCommits);\n // log.debug('drawArrow', p1, p2, overlappingCommits, commit1.id, commit2.id);\n\n let url = '';\n if (conf.arrowMarkerAbsolute) {\n url =\n window.location.protocol +\n '//' +\n window.location.host +\n window.location.pathname +\n window.location.search;\n url = url.replace(/\\(/g, '\\\\(');\n url = url.replace(/\\)/g, '\\\\)');\n }\n\n let arc = '';\n let arc2 = '';\n let radius = 0;\n let offset = 0;\n let colorClassNum = branchPos[commit2.branch].index;\n let lineDef;\n if (overlappingCommits) {\n arc = 'A 10 10, 0, 0, 0,';\n arc2 = 'A 10 10, 0, 0, 1,';\n radius = 10;\n offset = 10;\n // Figure out the color of the arrow,arrows going down take the color from the destination branch\n colorClassNum = branchPos[commit2.branch].index;\n\n const lineY = p1.y < p2.y ? findLane(p1.y, p2.y) : findLane(p2.y, p1.y);\n\n if (p1.y < p2.y) {\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${lineY - radius} ${arc} ${p1.x + offset} ${lineY} L ${\n p2.x - radius\n } ${lineY} ${arc2} ${p2.x} ${lineY + offset} L ${p2.x} ${p2.y}`;\n } else {\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${lineY + radius} ${arc2} ${\n p1.x + offset\n } ${lineY} L ${p2.x - radius} ${lineY} ${arc} ${p2.x} ${lineY - offset} L ${p2.x} ${p2.y}`;\n }\n } else {\n if (p1.y < p2.y) {\n arc = 'A 20 20, 0, 0, 0,';\n radius = 20;\n offset = 20;\n\n // Figure out the color of the arrow,arrows going down take the color from the destination branch\n colorClassNum = branchPos[commit2.branch].index;\n\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p2.y - radius} ${arc} ${p1.x + offset} ${p2.y} L ${\n p2.x\n } ${p2.y}`;\n }\n if (p1.y > p2.y) {\n arc = 'A 20 20, 0, 0, 0,';\n radius = 20;\n offset = 20;\n\n // Arrows going up take the color from the source branch\n colorClassNum = branchPos[commit1.branch].index;\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x - radius} ${p1.y} ${arc} ${p2.x} ${p1.y - offset} L ${\n p2.x\n } ${p2.y}`;\n }\n\n if (p1.y === p2.y) {\n colorClassNum = branchPos[commit1.branch].index;\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p2.y - radius} ${arc} ${p1.x + offset} ${p2.y} L ${\n p2.x\n } ${p2.y}`;\n }\n }\n const arrow = svg\n .append('path')\n .attr('d', lineDef)\n .attr('class', 'arrow arrow' + colorClassNum);\n};\n\nconst drawArrows = (svg, commits) => {\n const gArrows = svg.append('g').attr('class', 'commit-arrows');\n let pos = 0;\n\n const k = Object.keys(commits);\n k.forEach((key, index) => {\n const commit = commits[key];\n if (commit.parents && commit.parents.length > 0) {\n commit.parents.forEach((parent) => {\n drawArrow(gArrows, commits[parent], commit, commits);\n });\n }\n });\n};\n\n/**\n * This function adds the branches and the branches' labels to the svg.\n *\n * @param svg\n * @param commitid\n * @param branches\n * @param direction\n */\nconst drawBranches = (svg, branches) => {\n const gitGraphConfig = getConfig().gitGraph;\n const g = svg.append('g');\n branches.forEach((branch, index) => {\n const pos = branchPos[branch.name].pos;\n const line = g.append('line');\n line.attr('x1', 0);\n line.attr('y1', pos);\n line.attr('x2', maxPos);\n line.attr('y2', pos);\n line.attr('class', 'branch branch' + index);\n\n lanes.push(pos);\n\n let name = branch.name;\n\n // Create the actual text element\n const labelElement = drawText(name);\n // Create outer g, edgeLabel, this will be positioned after graph layout\n const bkg = g.insert('rect');\n const branchLabel = g.insert('g').attr('class', 'branchLabel');\n\n // Create inner g, label, this will be positioned now for centering the text\n const label = branchLabel.insert('g').attr('class', 'label branch-label' + index);\n label.node().appendChild(labelElement);\n let bbox = labelElement.getBBox();\n bkg\n .attr('class', 'branchLabelBkg label' + index)\n .attr('rx', 4)\n .attr('ry', 4)\n .attr('x', -bbox.width - 4)\n .attr('y', -bbox.height / 2 + 8)\n .attr('width', bbox.width + 18)\n .attr('height', bbox.height + 4);\n\n label.attr(\n 'transform',\n 'translate(' + (-bbox.width - 14) + ', ' + (pos - bbox.height / 2 - 1) + ')'\n );\n bkg.attr('transform', 'translate(' + -19 + ', ' + (pos - bbox.height / 2) + ')');\n });\n};\n\n/**\n * @param svg\n * @param commit\n * @param direction\n * @param branchColor\n * @param txt\n * @param id\n * @param ver\n */\nexport const draw = function (txt, id, ver) {\n clear();\n const conf = getConfig();\n const gitGraphConfig = getConfig().gitGraph;\n // try {\n const parser = gitGraphParser.parser;\n parser.yy = db;\n parser.yy.clear();\n\n log.debug('in gitgraph renderer', txt + '\\n', 'id:', id, ver);\n // // Parse the graph definition\n parser.parse(txt + '\\n');\n\n const direction = db.getDirection();\n allCommitsDict = db.getCommits();\n const branches = db.getBranchesAsObjArray();\n\n // Position branches vertically\n let pos = 0;\n branches.forEach((branch, index) => {\n branchPos[branch.name] = { pos, index };\n pos += 50;\n });\n\n const diagram = select(`[id=\"${id}\"]`);\n\n // Adds title and description to the flow chart\n addSVGAccessibilityFields(parser.yy, diagram, id);\n\n drawCommits(diagram, allCommitsDict, false);\n if (gitGraphConfig.showBranches) {\n drawBranches(diagram, branches);\n }\n drawArrows(diagram, allCommitsDict);\n drawCommits(diagram, allCommitsDict, true);\n\n const padding = gitGraphConfig.diagramPadding;\n const svgBounds = diagram.node().getBBox();\n const width = svgBounds.width + padding * 2;\n const height = svgBounds.height + padding * 2;\n\n configureSvgSize(diagram, height, width, conf.useMaxWidth);\n const vBox = `${svgBounds.x - padding} ${svgBounds.y - padding} ${width} ${height}`;\n diagram.attr('viewBox', vBox);\n};\n\nexport default {\n draw,\n};\n","/** Created by knut on 15-01-14. */\nimport { log } from '../../logger';\n\nvar message = '';\nvar info = false;\n\nexport const setMessage = (txt) => {\n log.debug('Setting message to: ' + txt);\n message = txt;\n};\n\nexport const getMessage = () => {\n return message;\n};\n\nexport const setInfo = (inf) => {\n info = inf;\n};\n\nexport const getInfo = () => {\n return info;\n};\n\n// export const parseError = (err, hash) => {\n// global.mermaidAPI.parseError(err, hash)\n// }\n\nexport default {\n setMessage,\n getMessage,\n setInfo,\n getInfo,\n // parseError\n};\n","/** Created by knut on 14-12-11. */\nimport { select } from 'd3';\nimport db from './infoDb';\nimport infoParser from './parser/info';\nimport { log } from '../../logger';\nimport { getConfig } from '../../config';\n\nconst conf = {};\nexport const setConf = function (cnf) {\n const keys = Object.keys(cnf);\n\n keys.forEach(function (key) {\n conf[key] = cnf[key];\n });\n};\n\n/**\n * Draws a an info picture in the tag with id: id based on the graph definition in text.\n *\n * @param {any} text\n * @param {any} id\n * @param {any} version\n */\nexport const draw = (text, id, version) => {\n try {\n const parser = infoParser.parser;\n parser.yy = db;\n log.debug('Renering info diagram\\n' + text);\n\n const securityLevel = getConfig().securityLevel;\n // Handle root and ocument for when rendering in sanbox mode\n let sandboxElement;\n if (securityLevel === 'sandbox') {\n sandboxElement = select('#i' + id);\n }\n const root =\n securityLevel === 'sandbox'\n ? select(sandboxElement.nodes()[0].contentDocument.body)\n : select('body');\n const doc = securityLevel === 'sandbox' ? sandboxElement.nodes()[0].contentDocument : document;\n\n // Parse the graph definition\n parser.parse(text);\n log.debug('Parsed info diagram');\n // Fetch the default direction, use TD if none was found\n const svg = root.select('#' + id);\n\n const g = svg.append('g');\n\n g.append('text') // text label for the x axis\n .attr('x', 100)\n .attr('y', 40)\n .attr('class', 'version')\n .attr('font-size', '32px')\n .style('text-anchor', 'middle')\n .text('v ' + version);\n\n svg.attr('height', 100);\n svg.attr('width', 400);\n // svg.attr('viewBox', '0 0 300 150');\n } catch (e) {\n log.error('Error while rendering info diagram');\n log.error(e.message);\n }\n};\n\nexport default {\n setConf,\n draw,\n};\n","import { log } from '../../logger';\nimport mermaidAPI from '../../mermaidAPI';\nimport * as configApi from '../../config';\nimport common from '../common/common';\nimport {\n setTitle,\n getTitle,\n getAccDescription,\n setAccDescription,\n clear as commonClear,\n} from '../../commonDb';\n\nlet sections = {};\nlet title = '';\nlet description = '';\nlet showData = false;\n\nexport const parseDirective = function (statement, context, type) {\n mermaidAPI.parseDirective(this, statement, context, type);\n};\n\nconst addSection = function (id, value) {\n id = common.sanitizeText(id, configApi.getConfig());\n if (typeof sections[id] === 'undefined') {\n sections[id] = value;\n log.debug('Added new section :', id);\n }\n};\nconst getSections = () => sections;\n\nconst setShowData = function (toggle) {\n showData = toggle;\n};\n\nconst getShowData = function () {\n return showData;\n};\n\nconst cleanupValue = function (value) {\n if (value.substring(0, 1) === ':') {\n value = value.substring(1).trim();\n return Number(value.trim());\n } else {\n return Number(value.trim());\n }\n};\n\nconst clear = function () {\n sections = {};\n title = '';\n showData = false;\n commonClear();\n};\n\nexport const setPieTitle = function (txt) {\n let sanitizedText = common.sanitizeText(txt, configApi.getConfig());\n title = sanitizedText;\n};\n\nexport const getPieTitle = function () {\n return title;\n};\n\nexport default {\n parseDirective,\n getConfig: () => configApi.getConfig().pie,\n addSection,\n getSections,\n cleanupValue,\n clear,\n setTitle,\n getTitle,\n setPieTitle,\n getPieTitle,\n setShowData,\n getShowData,\n getAccDescription,\n setAccDescription,\n};\n","/** Created by AshishJ on 11-09-2019. */\nimport { select, scaleOrdinal, pie as d3pie, arc } from 'd3';\nimport pieData from './pieDb';\nimport pieParser from './parser/pie';\nimport { log } from '../../logger';\nimport { configureSvgSize } from '../../utils';\nimport * as configApi from '../../config';\nimport addSVGAccessibilityFields from '../../accessibility';\n\nlet conf = configApi.getConfig();\n\n/**\n * Draws a Pie Chart with the data given in text.\n *\n * @param text\n * @param id\n */\nlet width;\nconst height = 450;\nexport const draw = (txt, id) => {\n try {\n conf = configApi.getConfig();\n const parser = pieParser.parser;\n parser.yy = pieData;\n log.debug('Rendering info diagram\\n' + txt);\n\n const securityLevel = configApi.getConfig().securityLevel;\n // Handle root and ocument for when rendering in sanbox mode\n let sandboxElement;\n if (securityLevel === 'sandbox') {\n sandboxElement = select('#i' + id);\n }\n const root =\n securityLevel === 'sandbox'\n ? select(sandboxElement.nodes()[0].contentDocument.body)\n : select('body');\n const doc = securityLevel === 'sandbox' ? sandboxElement.nodes()[0].contentDocument : document;\n\n // Parse the Pie Chart definition\n parser.yy.clear();\n parser.parse(txt);\n log.debug('Parsed info diagram');\n const elem = doc.getElementById(id);\n width = elem.parentElement.offsetWidth;\n\n if (typeof width === 'undefined') {\n width = 1200;\n }\n\n if (typeof conf.useWidth !== 'undefined') {\n width = conf.useWidth;\n }\n if (typeof conf.pie.useWidth !== 'undefined') {\n width = conf.pie.useWidth;\n }\n\n const diagram = root.select('#' + id);\n configureSvgSize(diagram, height, width, conf.pie.useMaxWidth);\n\n addSVGAccessibilityFields(parser.yy, diagram, id);\n // Set viewBox\n elem.setAttribute('viewBox', '0 0 ' + width + ' ' + height);\n\n // Fetch the default direction, use TD if none was found\n var margin = 40;\n var legendRectSize = 18;\n var legendSpacing = 4;\n\n var radius = Math.min(width, height) / 2 - margin;\n\n var svg = diagram\n .append('g')\n .attr('transform', 'translate(' + width / 2 + ',' + height / 2 + ')');\n\n var data = pieData.getSections();\n var sum = 0;\n Object.keys(data).forEach(function (key) {\n sum += data[key];\n });\n\n const themeVariables = conf.themeVariables;\n var myGeneratedColors = [\n themeVariables.pie1,\n themeVariables.pie2,\n themeVariables.pie3,\n themeVariables.pie4,\n themeVariables.pie5,\n themeVariables.pie6,\n themeVariables.pie7,\n themeVariables.pie8,\n themeVariables.pie9,\n themeVariables.pie10,\n themeVariables.pie11,\n themeVariables.pie12,\n ];\n\n // Set the color scale\n var color = scaleOrdinal().range(myGeneratedColors);\n\n // Compute the position of each group on the pie:\n var pie = d3pie().value(function (d) {\n return d[1];\n });\n var dataReady = pie(Object.entries(data));\n\n // Shape helper to build arcs:\n var arcGenerator = arc().innerRadius(0).outerRadius(radius);\n\n // Build the pie chart: each part of the pie is a path that we build using the arc function.\n svg\n .selectAll('mySlices')\n .data(dataReady)\n .enter()\n .append('path')\n .attr('d', arcGenerator)\n .attr('fill', function (d) {\n return color(d.data[0]);\n })\n .attr('class', 'pieCircle');\n\n // Now add the percentage.\n // Use the centroid method to get the best coordinates.\n svg\n .selectAll('mySlices')\n .data(dataReady)\n .enter()\n .append('text')\n .text(function (d) {\n return ((d.data[1] / sum) * 100).toFixed(0) + '%';\n })\n .attr('transform', function (d) {\n return 'translate(' + arcGenerator.centroid(d) + ')';\n })\n .style('text-anchor', 'middle')\n .attr('class', 'slice');\n\n svg\n .append('text')\n .text(parser.yy.getPieTitle())\n .attr('x', 0)\n .attr('y', -(height - 50) / 2)\n .attr('class', 'pieTitleText');\n\n // Add the legends/annotations for each section\n var legend = svg\n .selectAll('.legend')\n .data(color.domain())\n .enter()\n .append('g')\n .attr('class', 'legend')\n .attr('transform', function (d, i) {\n var height = legendRectSize + legendSpacing;\n var offset = (height * color.domain().length) / 2;\n var horz = 12 * legendRectSize;\n var vert = i * height - offset;\n return 'translate(' + horz + ',' + vert + ')';\n });\n\n legend\n .append('rect')\n .attr('width', legendRectSize)\n .attr('height', legendRectSize)\n .style('fill', color)\n .style('stroke', color);\n\n legend\n .data(dataReady)\n .append('text')\n .attr('x', legendRectSize + legendSpacing)\n .attr('y', legendRectSize - legendSpacing)\n .text(function (d) {\n if (parser.yy.getShowData() || conf.showData || conf.pie.showData) {\n return d.data[0] + ' [' + d.data[1] + ']';\n } else {\n return d.data[0];\n }\n });\n } catch (e) {\n log.error('Error while rendering info diagram');\n log.error(e);\n }\n};\n\nexport default {\n draw,\n};\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport descending from \"./descending.js\";\nimport identity from \"./identity.js\";\nimport {tau} from \"./math.js\";\n\nexport default function() {\n var value = identity,\n sortValues = descending,\n sort = null,\n startAngle = constant(0),\n endAngle = constant(tau),\n padAngle = constant(0);\n\n function pie(data) {\n var i,\n n = (data = array(data)).length,\n j,\n k,\n sum = 0,\n index = new Array(n),\n arcs = new Array(n),\n a0 = +startAngle.apply(this, arguments),\n da = Math.min(tau, Math.max(-tau, endAngle.apply(this, arguments) - a0)),\n a1,\n p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),\n pa = p * (da < 0 ? -1 : 1),\n v;\n\n for (i = 0; i < n; ++i) {\n if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {\n sum += v;\n }\n }\n\n // Optionally sort the arcs by previously-computed values or by data.\n if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); });\n else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); });\n\n // Compute the arcs! They are stored in the original data's order.\n for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {\n j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {\n data: data[j],\n index: i,\n value: v,\n startAngle: a0,\n endAngle: a1,\n padAngle: p\n };\n }\n\n return arcs;\n }\n\n pie.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), pie) : value;\n };\n\n pie.sortValues = function(_) {\n return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;\n };\n\n pie.sort = function(_) {\n return arguments.length ? (sort = _, sortValues = null, pie) : sort;\n };\n\n pie.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : startAngle;\n };\n\n pie.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : endAngle;\n };\n\n pie.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : padAngle;\n };\n\n return pie;\n}\n","import * as configApi from '../../config';\nimport { log } from '../../logger';\nimport mermaidAPI from '../../mermaidAPI';\nimport common from '../common/common';\nimport {\n setTitle,\n getTitle,\n getAccDescription,\n setAccDescription,\n clear as commonClear,\n} from '../../commonDb';\n\nlet relations = [];\nlet latestRequirement = {};\nlet requirements = {};\nlet latestElement = {};\nlet elements = {};\nlet title = '';\nlet accDescription = '';\n\nconst sanitizeText = (txt) => common.sanitizeText(txt, configApi.getConfig());\n\nconst RequirementType = {\n REQUIREMENT: 'Requirement',\n FUNCTIONAL_REQUIREMENT: 'Functional Requirement',\n INTERFACE_REQUIREMENT: 'Interface Requirement',\n PERFORMANCE_REQUIREMENT: 'Performance Requirement',\n PHYSICAL_REQUIREMENT: 'Physical Requirement',\n DESIGN_CONSTRAINT: 'Design Constraint',\n};\n\nconst RiskLevel = {\n LOW_RISK: 'Low',\n MED_RISK: 'Medium',\n HIGH_RISK: 'High',\n};\n\nconst VerifyType = {\n VERIFY_ANALYSIS: 'Analysis',\n VERIFY_DEMONSTRATION: 'Demonstration',\n VERIFY_INSPECTION: 'Inspection',\n VERIFY_TEST: 'Test',\n};\n\nconst Relationships = {\n CONTAINS: 'contains',\n COPIES: 'copies',\n DERIVES: 'derives',\n SATISFIES: 'satisfies',\n VERIFIES: 'verifies',\n REFINES: 'refines',\n TRACES: 'traces',\n};\n\nexport const parseDirective = function (statement, context, type) {\n mermaidAPI.parseDirective(this, statement, context, type);\n};\n\nconst addRequirement = (name, type) => {\n if (typeof requirements[name] === 'undefined') {\n requirements[name] = {\n name,\n type,\n\n id: latestRequirement.id,\n text: latestRequirement.text,\n risk: latestRequirement.risk,\n verifyMethod: latestRequirement.verifyMethod,\n };\n }\n latestRequirement = {};\n\n return requirements[name];\n};\n\nconst getRequirements = () => requirements;\n\nconst setNewReqId = (id) => {\n if (typeof latestRequirement != 'undefined') {\n latestRequirement.id = id;\n }\n};\n\nconst setNewReqText = (text) => {\n if (typeof latestRequirement != 'undefined') {\n latestRequirement.text = text;\n }\n};\n\nconst setNewReqRisk = (risk) => {\n if (typeof latestRequirement != 'undefined') {\n latestRequirement.risk = risk;\n }\n};\n\nconst setNewReqVerifyMethod = (verifyMethod) => {\n if (typeof latestRequirement != 'undefined') {\n latestRequirement.verifyMethod = verifyMethod;\n }\n};\n\nconst addElement = (name) => {\n if (typeof elements[name] === 'undefined') {\n elements[name] = {\n name,\n\n type: latestElement.type,\n docRef: latestElement.docRef,\n };\n log.info('Added new requirement: ', name);\n }\n latestElement = {};\n\n return elements[name];\n};\n\nconst getElements = () => elements;\n\nconst setNewElementType = (type) => {\n if (typeof latestElement != 'undefined') {\n latestElement.type = type;\n }\n};\n\nconst setNewElementDocRef = (docRef) => {\n if (typeof latestElement != 'undefined') {\n latestElement.docRef = docRef;\n }\n};\n\nconst addRelationship = (type, src, dst) => {\n relations.push({\n type,\n src,\n dst,\n });\n};\n\nconst getRelationships = () => relations;\n\nconst clear = () => {\n relations = [];\n latestRequirement = {};\n requirements = {};\n latestElement = {};\n elements = {};\n commonClear();\n};\n\nexport default {\n RequirementType,\n RiskLevel,\n VerifyType,\n Relationships,\n\n parseDirective,\n getConfig: () => configApi.getConfig().req,\n\n addRequirement,\n getRequirements,\n setNewReqId,\n setNewReqText,\n setNewReqRisk,\n setNewReqVerifyMethod,\n setTitle,\n getTitle,\n setAccDescription,\n getAccDescription,\n\n addElement,\n getElements,\n setNewElementType,\n setNewElementDocRef,\n\n addRelationship,\n getRelationships,\n\n clear,\n};\n","const ReqMarkers = {\n CONTAINS: 'contains',\n ARROW: 'arrow',\n};\n\nconst insertLineEndings = (parentNode, conf) => {\n let containsNode = parentNode\n .append('defs')\n .append('marker')\n .attr('id', ReqMarkers.CONTAINS + '_line_ending')\n .attr('refX', 0)\n .attr('refY', conf.line_height / 2)\n .attr('markerWidth', conf.line_height)\n .attr('markerHeight', conf.line_height)\n .attr('orient', 'auto')\n .append('g');\n\n containsNode\n .append('circle')\n .attr('cx', conf.line_height / 2)\n .attr('cy', conf.line_height / 2)\n .attr('r', conf.line_height / 2)\n // .attr('stroke', conf.rect_border_color)\n // .attr('stroke-width', 1)\n .attr('fill', 'none');\n\n containsNode\n .append('line')\n .attr('x1', 0)\n .attr('x2', conf.line_height)\n .attr('y1', conf.line_height / 2)\n .attr('y2', conf.line_height / 2)\n // .attr('stroke', conf.rect_border_color)\n .attr('stroke-width', 1);\n\n containsNode\n .append('line')\n .attr('y1', 0)\n .attr('y2', conf.line_height)\n .attr('x1', conf.line_height / 2)\n .attr('x2', conf.line_height / 2)\n // .attr('stroke', conf.rect_border_color)\n .attr('stroke-width', 1);\n\n parentNode\n .append('defs')\n .append('marker')\n .attr('id', ReqMarkers.ARROW + '_line_ending')\n .attr('refX', conf.line_height)\n .attr('refY', 0.5 * conf.line_height)\n .attr('markerWidth', conf.line_height)\n .attr('markerHeight', conf.line_height)\n .attr('orient', 'auto')\n .append('path')\n .attr(\n 'd',\n `M0,0\n L${conf.line_height},${conf.line_height / 2}\n M${conf.line_height},${conf.line_height / 2}\n L0,${conf.line_height}`\n )\n .attr('stroke-width', 1);\n // .attr('stroke', conf.rect_border_color);\n};\n\nexport default {\n ReqMarkers,\n insertLineEndings,\n};\n","import { line, select } from 'd3';\nimport dagre from 'dagre';\nimport graphlib from 'graphlib';\n// import * as configApi from '../../config';\nimport { log } from '../../logger';\nimport { configureSvgSize } from '../../utils';\nimport common from '../common/common';\nimport { parser } from './parser/requirementDiagram';\nimport requirementDb from './requirementDb';\nimport markers from './requirementMarkers';\nimport { getConfig } from '../../config';\nimport addSVGAccessibilityFields from '../../accessibility';\n\nconst conf = {};\nlet relCnt = 0;\n\nexport const setConf = function (cnf) {\n if (typeof cnf === 'undefined') {\n return;\n }\n const keys = Object.keys(cnf);\n for (let i = 0; i < keys.length; i++) {\n conf[keys[i]] = cnf[keys[i]];\n }\n};\n\nconst newRectNode = (parentNode, id) => {\n return parentNode\n .insert('rect', '#' + id)\n .attr('class', 'req reqBox')\n .attr('x', 0)\n .attr('y', 0)\n .attr('width', conf.rect_min_width + 'px')\n .attr('height', conf.rect_min_height + 'px');\n};\n\nconst newTitleNode = (parentNode, id, txts) => {\n let x = conf.rect_min_width / 2;\n\n let title = parentNode\n .append('text')\n .attr('class', 'req reqLabel reqTitle')\n .attr('id', id)\n .attr('x', x)\n .attr('y', conf.rect_padding)\n .attr('dominant-baseline', 'hanging');\n // .attr(\n // 'style',\n // 'font-family: ' + configApi.getConfig().fontFamily + '; font-size: ' + conf.fontSize + 'px'\n // )\n let i = 0;\n txts.forEach((textStr) => {\n if (i == 0) {\n title\n .append('tspan')\n .attr('text-anchor', 'middle')\n .attr('x', conf.rect_min_width / 2)\n .attr('dy', 0)\n .text(textStr);\n } else {\n title\n .append('tspan')\n .attr('text-anchor', 'middle')\n .attr('x', conf.rect_min_width / 2)\n .attr('dy', conf.line_height * 0.75)\n .text(textStr);\n }\n i++;\n });\n\n let yPadding = 1.5 * conf.rect_padding;\n let linePadding = i * conf.line_height * 0.75;\n let totalY = yPadding + linePadding;\n\n parentNode\n .append('line')\n .attr('class', 'req-title-line')\n .attr('x1', '0')\n .attr('x2', conf.rect_min_width)\n .attr('y1', totalY)\n .attr('y2', totalY);\n\n return {\n titleNode: title,\n y: totalY,\n };\n};\n\nconst newBodyNode = (parentNode, id, txts, yStart) => {\n let body = parentNode\n .append('text')\n .attr('class', 'req reqLabel')\n .attr('id', id)\n .attr('x', conf.rect_padding)\n .attr('y', yStart)\n .attr('dominant-baseline', 'hanging');\n // .attr(\n // 'style',\n // 'font-family: ' + configApi.getConfig().fontFamily + '; font-size: ' + conf.fontSize + 'px'\n // );\n\n let currentRow = 0;\n const charLimit = 30;\n let wrappedTxts = [];\n txts.forEach((textStr) => {\n let currentTextLen = textStr.length;\n while (currentTextLen > charLimit && currentRow < 3) {\n let firstPart = textStr.substring(0, charLimit);\n textStr = textStr.substring(charLimit, textStr.length);\n currentTextLen = textStr.length;\n wrappedTxts[wrappedTxts.length] = firstPart;\n currentRow++;\n }\n if (currentRow == 3) {\n let lastStr = wrappedTxts[wrappedTxts.length - 1];\n wrappedTxts[wrappedTxts.length - 1] = lastStr.substring(0, lastStr.length - 4) + '...';\n } else {\n wrappedTxts[wrappedTxts.length] = textStr;\n }\n currentRow = 0;\n });\n\n wrappedTxts.forEach((textStr) => {\n body.append('tspan').attr('x', conf.rect_padding).attr('dy', conf.line_height).text(textStr);\n });\n\n return body;\n};\n\nconst addEdgeLabel = (parentNode, svgPath, conf, txt) => {\n // Find the half-way point\n const len = svgPath.node().getTotalLength();\n const labelPoint = svgPath.node().getPointAtLength(len * 0.5);\n\n // Append a text node containing the label\n const labelId = 'rel' + relCnt;\n relCnt++;\n\n const labelNode = parentNode\n .append('text')\n .attr('class', 'req relationshipLabel')\n .attr('id', labelId)\n .attr('x', labelPoint.x)\n .attr('y', labelPoint.y)\n .attr('text-anchor', 'middle')\n .attr('dominant-baseline', 'middle')\n // .attr('style', 'font-family: ' + conf.fontFamily + '; font-size: ' + conf.fontSize + 'px')\n .text(txt);\n\n // Figure out how big the opaque 'container' rectangle needs to be\n const labelBBox = labelNode.node().getBBox();\n\n // Insert the opaque rectangle before the text label\n parentNode\n .insert('rect', '#' + labelId)\n .attr('class', 'req reqLabelBox')\n .attr('x', labelPoint.x - labelBBox.width / 2)\n .attr('y', labelPoint.y - labelBBox.height / 2)\n .attr('width', labelBBox.width)\n .attr('height', labelBBox.height)\n .attr('fill', 'white')\n .attr('fill-opacity', '85%');\n};\n\nconst drawRelationshipFromLayout = function (svg, rel, g, insert) {\n // Find the edge relating to this relationship\n const edge = g.edge(elementString(rel.src), elementString(rel.dst));\n\n // Get a function that will generate the line path\n const lineFunction = line()\n .x(function (d) {\n return d.x;\n })\n .y(function (d) {\n return d.y;\n });\n\n // Insert the line at the right place\n const svgPath = svg\n .insert('path', '#' + insert)\n .attr('class', 'er relationshipLine')\n .attr('d', lineFunction(edge.points))\n .attr('fill', 'none');\n\n if (rel.type == requirementDb.Relationships.CONTAINS) {\n svgPath.attr(\n 'marker-start',\n 'url(' + common.getUrl(conf.arrowMarkerAbsolute) + '#' + rel.type + '_line_ending' + ')'\n );\n } else {\n svgPath.attr('stroke-dasharray', '10,7');\n svgPath.attr(\n 'marker-end',\n 'url(' +\n common.getUrl(conf.arrowMarkerAbsolute) +\n '#' +\n markers.ReqMarkers.ARROW +\n '_line_ending' +\n ')'\n );\n }\n\n addEdgeLabel(svg, svgPath, conf, `<<${rel.type}>>`);\n\n return;\n};\n\nexport const drawReqs = (reqs, graph, svgNode) => {\n Object.keys(reqs).forEach((reqName) => {\n let req = reqs[reqName];\n reqName = elementString(reqName);\n log.info('Added new requirement: ', reqName);\n\n const groupNode = svgNode.append('g').attr('id', reqName);\n const textId = 'req-' + reqName;\n const rectNode = newRectNode(groupNode, textId);\n\n let nodes = [];\n\n let titleNodeInfo = newTitleNode(groupNode, reqName + '_title', [\n `<<${req.type}>>`,\n `${req.name}`,\n ]);\n\n nodes.push(titleNodeInfo.titleNode);\n\n let bodyNode = newBodyNode(\n groupNode,\n reqName + '_body',\n [\n `Id: ${req.id}`,\n `Text: ${req.text}`,\n `Risk: ${req.risk}`,\n `Verification: ${req.verifyMethod}`,\n ],\n titleNodeInfo.y\n );\n\n nodes.push(bodyNode);\n\n const rectBBox = rectNode.node().getBBox();\n\n // Add the entity to the graph\n graph.setNode(reqName, {\n width: rectBBox.width,\n height: rectBBox.height,\n shape: 'rect',\n id: reqName,\n });\n });\n};\n\nexport const drawElements = (els, graph, svgNode) => {\n Object.keys(els).forEach((elName) => {\n let el = els[elName];\n const id = elementString(elName);\n\n const groupNode = svgNode.append('g').attr('id', id);\n const textId = 'element-' + id;\n const rectNode = newRectNode(groupNode, textId);\n\n let nodes = [];\n\n let titleNodeInfo = newTitleNode(groupNode, textId + '_title', [`<<Element>>`, `${elName}`]);\n\n nodes.push(titleNodeInfo.titleNode);\n\n let bodyNode = newBodyNode(\n groupNode,\n textId + '_body',\n [`Type: ${el.type || 'Not Specified'}`, `Doc Ref: ${el.docRef || 'None'}`],\n titleNodeInfo.y\n );\n\n nodes.push(bodyNode);\n\n const rectBBox = rectNode.node().getBBox();\n\n // Add the entity to the graph\n graph.setNode(id, {\n width: rectBBox.width,\n height: rectBBox.height,\n shape: 'rect',\n id: id,\n });\n });\n};\n\nconst addRelationships = (relationships, g) => {\n relationships.forEach(function (r) {\n let src = elementString(r.src);\n let dst = elementString(r.dst);\n g.setEdge(src, dst, { relationship: r });\n });\n return relationships;\n};\n\nconst adjustEntities = function (svgNode, graph) {\n graph.nodes().forEach(function (v) {\n if (typeof v !== 'undefined' && typeof graph.node(v) !== 'undefined') {\n svgNode.select('#' + v);\n svgNode\n .select('#' + v)\n .attr(\n 'transform',\n 'translate(' +\n (graph.node(v).x - graph.node(v).width / 2) +\n ',' +\n (graph.node(v).y - graph.node(v).height / 2) +\n ' )'\n );\n }\n });\n return;\n};\n\nconst elementString = (str) => {\n return str.replace(/\\s/g, '').replace(/\\./g, '_');\n};\n\nexport const draw = (text, id) => {\n parser.yy = requirementDb;\n parser.yy.clear();\n parser.parse(text);\n\n const securityLevel = getConfig().securityLevel;\n // Handle root and ocument for when rendering in sanbox mode\n let sandboxElement;\n if (securityLevel === 'sandbox') {\n sandboxElement = select('#i' + id);\n }\n const root =\n securityLevel === 'sandbox'\n ? select(sandboxElement.nodes()[0].contentDocument.body)\n : select('body');\n const doc = securityLevel === 'sandbox' ? sandboxElement.nodes()[0].contentDocument : document;\n\n const svg = root.select(`[id='${id}']`);\n markers.insertLineEndings(svg, conf);\n\n const g = new graphlib.Graph({\n multigraph: false,\n compound: false,\n directed: true,\n })\n .setGraph({\n rankdir: conf.layoutDirection,\n marginx: 20,\n marginy: 20,\n nodesep: 100,\n edgesep: 100,\n ranksep: 100,\n })\n .setDefaultEdgeLabel(function () {\n return {};\n });\n\n let requirements = requirementDb.getRequirements();\n let elements = requirementDb.getElements();\n let relationships = requirementDb.getRelationships();\n\n drawReqs(requirements, g, svg);\n drawElements(elements, g, svg);\n addRelationships(relationships, g);\n dagre.layout(g);\n adjustEntities(svg, g);\n\n relationships.forEach(function (rel) {\n drawRelationshipFromLayout(svg, rel, g, id);\n });\n\n // svg.attr('height', '500px');\n const padding = conf.rect_padding;\n const svgBounds = svg.node().getBBox();\n const width = svgBounds.width + padding * 2;\n const height = svgBounds.height + padding * 2;\n\n configureSvgSize(svg, height, width, conf.useMaxWidth);\n\n svg.attr('viewBox', `${svgBounds.x - padding} ${svgBounds.y - padding} ${width} ${height}`);\n // Adds title and description to the requirements diagram\n addSVGAccessibilityFields(parser.yy, svg, id);\n};\n\nexport default {\n setConf,\n draw,\n};\n","import mermaidAPI from '../../mermaidAPI';\nimport * as configApi from '../../config';\nimport { log } from '../../logger';\nimport { sanitizeText } from '../common/common';\nimport {\n setTitle,\n getTitle,\n getAccDescription,\n setAccDescription,\n clear as commonClear,\n} from '../../commonDb';\n\nlet prevActor = undefined;\nlet actors = {};\nlet messages = [];\nconst notes = [];\nlet diagramTitle = '';\nlet description = '';\nlet sequenceNumbersEnabled = false;\nlet wrapEnabled = false;\n\nexport const parseDirective = function (statement, context, type) {\n mermaidAPI.parseDirective(this, statement, context, type);\n};\n\nexport const addActor = function (id, name, description, type) {\n // Don't allow description nulling\n const old = actors[id];\n if (old && name === old.name && description == null) return;\n\n // Don't allow null descriptions, either\n if (description == null || description.text == null) {\n description = { text: name, wrap: null, type };\n }\n if (type == null || description.text == null) {\n description = { text: name, wrap: null, type };\n }\n\n actors[id] = {\n name: name,\n description: description.text,\n wrap: (description.wrap === undefined && autoWrap()) || !!description.wrap,\n prevActor: prevActor,\n links: {},\n properties: {},\n actorCnt: null,\n rectData: null,\n type: type || 'participant',\n };\n if (prevActor && actors[prevActor]) {\n actors[prevActor].nextActor = id;\n }\n\n prevActor = id;\n};\n\nconst activationCount = (part) => {\n let i;\n let count = 0;\n for (i = 0; i < messages.length; i++) {\n if (messages[i].type === LINETYPE.ACTIVE_START) {\n if (messages[i].from.actor === part) {\n count++;\n }\n }\n if (messages[i].type === LINETYPE.ACTIVE_END) {\n if (messages[i].from.actor === part) {\n count--;\n }\n }\n }\n return count;\n};\n\nexport const addMessage = function (idFrom, idTo, message, answer) {\n messages.push({\n from: idFrom,\n to: idTo,\n message: message.text,\n wrap: (message.wrap === undefined && autoWrap()) || !!message.wrap,\n answer: answer,\n });\n};\n\nexport const addSignal = function (\n idFrom,\n idTo,\n message = { text: undefined, wrap: undefined },\n messageType\n) {\n if (messageType === LINETYPE.ACTIVE_END) {\n const cnt = activationCount(idFrom.actor);\n if (cnt < 1) {\n // Bail out as there is an activation signal from an inactive participant\n let error = new Error('Trying to inactivate an inactive participant (' + idFrom.actor + ')');\n error.hash = {\n text: '->>-',\n token: '->>-',\n line: '1',\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: [\"'ACTIVE_PARTICIPANT'\"],\n };\n throw error;\n }\n }\n messages.push({\n from: idFrom,\n to: idTo,\n message: message.text,\n wrap: (message.wrap === undefined && autoWrap()) || !!message.wrap,\n type: messageType,\n });\n return true;\n};\n\nexport const getMessages = function () {\n return messages;\n};\n\nexport const getActors = function () {\n return actors;\n};\nexport const getActor = function (id) {\n return actors[id];\n};\nexport const getActorKeys = function () {\n return Object.keys(actors);\n};\nexport const enableSequenceNumbers = function () {\n sequenceNumbersEnabled = true;\n};\nexport const disableSequenceNumbers = function () {\n sequenceNumbersEnabled = false;\n};\nexport const showSequenceNumbers = () => sequenceNumbersEnabled;\n\nexport const setWrap = function (wrapSetting) {\n wrapEnabled = wrapSetting;\n};\n\nexport const autoWrap = () => wrapEnabled;\n\nexport const clear = function () {\n actors = {};\n messages = [];\n sequenceNumbersEnabled = false;\n diagramTitle = '';\n commonClear();\n};\n\nexport const parseMessage = function (str) {\n const _str = str.trim();\n const message = {\n text: _str.replace(/^[:]?(?:no)?wrap:/, '').trim(),\n wrap:\n _str.match(/^[:]?wrap:/) !== null\n ? true\n : _str.match(/^[:]?nowrap:/) !== null\n ? false\n : undefined,\n };\n log.debug('parseMessage:', message);\n return message;\n};\n\nexport const LINETYPE = {\n SOLID: 0,\n DOTTED: 1,\n NOTE: 2,\n SOLID_CROSS: 3,\n DOTTED_CROSS: 4,\n SOLID_OPEN: 5,\n DOTTED_OPEN: 6,\n LOOP_START: 10,\n LOOP_END: 11,\n ALT_START: 12,\n ALT_ELSE: 13,\n ALT_END: 14,\n OPT_START: 15,\n OPT_END: 16,\n ACTIVE_START: 17,\n ACTIVE_END: 18,\n PAR_START: 19,\n PAR_AND: 20,\n PAR_END: 21,\n RECT_START: 22,\n RECT_END: 23,\n SOLID_POINT: 24,\n DOTTED_POINT: 25,\n AUTONUMBER: 26,\n};\n\nexport const ARROWTYPE = {\n FILLED: 0,\n OPEN: 1,\n};\n\nexport const PLACEMENT = {\n LEFTOF: 0,\n RIGHTOF: 1,\n OVER: 2,\n};\n\nexport const addNote = function (actor, placement, message) {\n const note = {\n actor: actor,\n placement: placement,\n message: message.text,\n wrap: (message.wrap === undefined && autoWrap()) || !!message.wrap,\n };\n\n // Coerce actor into a [to, from, ...] array\n const actors = [].concat(actor, actor);\n\n notes.push(note);\n messages.push({\n from: actors[0],\n to: actors[1],\n message: message.text,\n wrap: (message.wrap === undefined && autoWrap()) || !!message.wrap,\n type: LINETYPE.NOTE,\n placement: placement,\n });\n};\n\nexport const addLinks = function (actorId, text) {\n // find the actor\n const actor = getActor(actorId);\n // JSON.parse the text\n try {\n let sanitizedText = sanitizeText(text.text, configApi.getConfig());\n sanitizedText = sanitizedText.replace(/&amp;/g, '&');\n sanitizedText = sanitizedText.replace(/&equals;/g, '=');\n const links = JSON.parse(sanitizedText);\n // add the deserialized text to the actor's links field.\n insertLinks(actor, links);\n } catch (e) {\n log.error('error while parsing actor link text', e);\n }\n};\n\nexport const addALink = function (actorId, text) {\n // find the actor\n const actor = getActor(actorId);\n try {\n const links = {};\n let sanitizedText = sanitizeText(text.text, configApi.getConfig());\n var sep = sanitizedText.indexOf('@');\n sanitizedText = sanitizedText.replace(/&amp;/g, '&');\n sanitizedText = sanitizedText.replace(/&equals;/g, '=');\n var label = sanitizedText.slice(0, sep - 1).trim();\n var link = sanitizedText.slice(sep + 1).trim();\n\n links[label] = link;\n // add the deserialized text to the actor's links field.\n insertLinks(actor, links);\n } catch (e) {\n log.error('error while parsing actor link text', e);\n }\n};\n\n/**\n * @param {any} actor\n * @param {any} links\n */\nfunction insertLinks(actor, links) {\n if (actor.links == null) {\n actor.links = links;\n } else {\n for (let key in links) {\n actor.links[key] = links[key];\n }\n }\n}\n\nexport const addProperties = function (actorId, text) {\n // find the actor\n const actor = getActor(actorId);\n // JSON.parse the text\n try {\n let sanitizedText = sanitizeText(text.text, configApi.getConfig());\n const properties = JSON.parse(sanitizedText);\n // add the deserialized text to the actor's property field.\n insertProperties(actor, properties);\n } catch (e) {\n log.error('error while parsing actor properties text', e);\n }\n};\n\n/**\n * @param {any} actor\n * @param {any} properties\n */\nfunction insertProperties(actor, properties) {\n if (actor.properties == null) {\n actor.properties = properties;\n } else {\n for (let key in properties) {\n actor.properties[key] = properties[key];\n }\n }\n}\n\nexport const addDetails = function (actorId, text) {\n // find the actor\n const actor = getActor(actorId);\n const elem = document.getElementById(text.text);\n\n // JSON.parse the text\n try {\n const text = elem.innerHTML;\n const details = JSON.parse(text);\n // add the deserialized text to the actor's property field.\n if (details['properties']) {\n insertProperties(actor, details['properties']);\n }\n\n if (details['links']) {\n insertLinks(actor, details['links']);\n }\n } catch (e) {\n log.error('error while parsing actor details text', e);\n }\n};\n\nexport const getActorProperty = function (actor, key) {\n if (typeof actor !== 'undefined' && typeof actor.properties !== 'undefined') {\n return actor.properties[key];\n }\n\n return undefined;\n};\n\nexport const setDiagramTitle = function (txt) {\n let sanitizedText = sanitizeText(txt, configApi.getConfig());\n diagramTitle = sanitizedText;\n};\n\nexport const getDiagramTitle = function () {\n return diagramTitle;\n};\n\nexport const apply = function (param) {\n if (param instanceof Array) {\n param.forEach(function (item) {\n apply(item);\n });\n } else {\n switch (param.type) {\n case 'sequenceIndex':\n messages.push({\n from: undefined,\n to: undefined,\n message: {\n start: param.sequenceIndex,\n step: param.sequenceIndexStep,\n visible: param.sequenceVisible,\n },\n wrap: false,\n type: param.signalType,\n });\n break;\n case 'addParticipant':\n addActor(param.actor, param.actor, param.description, 'participant');\n break;\n case 'addActor':\n addActor(param.actor, param.actor, param.description, 'actor');\n break;\n case 'activeStart':\n addSignal(param.actor, undefined, undefined, param.signalType);\n break;\n case 'activeEnd':\n addSignal(param.actor, undefined, undefined, param.signalType);\n break;\n case 'addNote':\n addNote(param.actor, param.placement, param.text);\n break;\n case 'addLinks':\n addLinks(param.actor, param.text);\n break;\n case 'addALink':\n addALink(param.actor, param.text);\n break;\n case 'addProperties':\n addProperties(param.actor, param.text);\n break;\n case 'addDetails':\n addDetails(param.actor, param.text);\n break;\n case 'addMessage':\n addSignal(param.from, param.to, param.msg, param.signalType);\n break;\n case 'loopStart':\n addSignal(undefined, undefined, param.loopText, param.signalType);\n break;\n case 'loopEnd':\n addSignal(undefined, undefined, undefined, param.signalType);\n break;\n case 'rectStart':\n addSignal(undefined, undefined, param.color, param.signalType);\n break;\n case 'rectEnd':\n addSignal(undefined, undefined, undefined, param.signalType);\n break;\n case 'optStart':\n addSignal(undefined, undefined, param.optText, param.signalType);\n break;\n case 'optEnd':\n addSignal(undefined, undefined, undefined, param.signalType);\n break;\n case 'altStart':\n addSignal(undefined, undefined, param.altText, param.signalType);\n break;\n case 'else':\n addSignal(undefined, undefined, param.altText, param.signalType);\n break;\n case 'altEnd':\n addSignal(undefined, undefined, undefined, param.signalType);\n break;\n case 'setTitle':\n setTitle(param.text);\n break;\n case 'parStart':\n addSignal(undefined, undefined, param.parText, param.signalType);\n break;\n case 'and':\n addSignal(undefined, undefined, param.parText, param.signalType);\n break;\n case 'parEnd':\n addSignal(undefined, undefined, undefined, param.signalType);\n break;\n }\n }\n};\n\nexport default {\n addActor,\n addMessage,\n addSignal,\n addLinks,\n addDetails,\n addProperties,\n autoWrap,\n setWrap,\n enableSequenceNumbers,\n disableSequenceNumbers,\n showSequenceNumbers,\n getMessages,\n getActors,\n getActor,\n getActorKeys,\n getActorProperty,\n getTitle,\n getDiagramTitle,\n parseDirective,\n getConfig: () => configApi.getConfig().sequence,\n clear,\n parseMessage,\n LINETYPE,\n ARROWTYPE,\n PLACEMENT,\n addNote,\n setTitle,\n setDiagramTitle,\n apply,\n setAccDescription,\n getAccDescription,\n};\n","let interactionFunctions = [];\nexport const addFunction = (func) => {\n interactionFunctions.push(func);\n};\nexport const attachFunctions = () => {\n interactionFunctions.forEach((f) => {\n f();\n });\n interactionFunctions = [];\n};\n","import common from '../common/common';\nimport { addFunction } from '../../interactionDb';\nimport { sanitizeUrl } from '@braintree/sanitize-url';\n\nexport const drawRect = function (elem, rectData) {\n const rectElem = elem.append('rect');\n rectElem.attr('x', rectData.x);\n rectElem.attr('y', rectData.y);\n rectElem.attr('fill', rectData.fill);\n rectElem.attr('stroke', rectData.stroke);\n rectElem.attr('width', rectData.width);\n rectElem.attr('height', rectData.height);\n rectElem.attr('rx', rectData.rx);\n rectElem.attr('ry', rectData.ry);\n\n if (typeof rectData.class !== 'undefined') {\n rectElem.attr('class', rectData.class);\n }\n\n return rectElem;\n};\n\n// const sanitizeUrl = function (s) {\n// return s\n// .replace(/&/g, '&amp;')\n// .replace(/</g, '&lt;')\n// .replace(/javascript:/g, '');\n// };\n\nconst addPopupInteraction = (id, actorCnt) => {\n addFunction(() => {\n const arr = document.querySelectorAll(id);\n // This will be the case when running in sandboxed mode\n if (arr.length === 0) return;\n arr[0].addEventListener('mouseover', function () {\n popupMenuUpFunc('actor' + actorCnt + '_popup');\n });\n arr[0].addEventListener('mouseout', function () {\n popupMenuDownFunc('actor' + actorCnt + '_popup');\n });\n });\n};\nexport const drawPopup = function (elem, actor, minMenuWidth, textAttrs, forceMenus) {\n if (actor.links === undefined || actor.links === null || Object.keys(actor.links).length === 0) {\n return { height: 0, width: 0 };\n }\n\n const links = actor.links;\n const actorCnt = actor.actorCnt;\n const rectData = actor.rectData;\n\n var displayValue = 'none';\n if (forceMenus) {\n displayValue = 'block !important';\n }\n\n const g = elem.append('g');\n g.attr('id', 'actor' + actorCnt + '_popup');\n g.attr('class', 'actorPopupMenu');\n g.attr('display', displayValue);\n addPopupInteraction('#actor' + actorCnt + '_popup', actorCnt);\n var actorClass = '';\n if (typeof rectData.class !== 'undefined') {\n actorClass = ' ' + rectData.class;\n }\n\n let menuWidth = rectData.width > minMenuWidth ? rectData.width : minMenuWidth;\n\n const rectElem = g.append('rect');\n rectElem.attr('class', 'actorPopupMenuPanel' + actorClass);\n rectElem.attr('x', rectData.x);\n rectElem.attr('y', rectData.height);\n rectElem.attr('fill', rectData.fill);\n rectElem.attr('stroke', rectData.stroke);\n rectElem.attr('width', menuWidth);\n rectElem.attr('height', rectData.height);\n rectElem.attr('rx', rectData.rx);\n rectElem.attr('ry', rectData.ry);\n if (links != null) {\n var linkY = 20;\n for (let key in links) {\n var linkElem = g.append('a');\n var sanitizedLink = sanitizeUrl(links[key]);\n linkElem.attr('xlink:href', sanitizedLink);\n linkElem.attr('target', '_blank');\n\n _drawMenuItemTextCandidateFunc(textAttrs)(\n key,\n linkElem,\n rectData.x + 10,\n rectData.height + linkY,\n menuWidth,\n 20,\n { class: 'actor' },\n textAttrs\n );\n\n linkY += 30;\n }\n }\n\n rectElem.attr('height', linkY);\n\n return { height: rectData.height + linkY, width: menuWidth };\n};\n\nexport const drawImage = function (elem, x, y, link) {\n const imageElem = elem.append('image');\n imageElem.attr('x', x);\n imageElem.attr('y', y);\n var sanitizedLink = sanitizeUrl(link);\n imageElem.attr('xlink:href', sanitizedLink);\n};\n\nexport const drawEmbeddedImage = function (elem, x, y, link) {\n const imageElem = elem.append('use');\n imageElem.attr('x', x);\n imageElem.attr('y', y);\n var sanitizedLink = sanitizeUrl(link);\n imageElem.attr('xlink:href', '#' + sanitizedLink);\n};\n\nexport const popupMenu = function (popid) {\n return (\n \"var pu = document.getElementById('\" +\n popid +\n \"'); if (pu != null) { pu.style.display = 'block'; }\"\n );\n};\n\nexport const popdownMenu = function (popid) {\n return (\n \"var pu = document.getElementById('\" +\n popid +\n \"'); if (pu != null) { pu.style.display = 'none'; }\"\n );\n};\n\nconst popupMenuUpFunc = function (popupId) {\n var pu = document.getElementById(popupId);\n if (pu != null) {\n pu.style.display = 'block';\n }\n};\n\nconst popupMenuDownFunc = function (popupId) {\n var pu = document.getElementById(popupId);\n if (pu != null) {\n pu.style.display = 'none';\n }\n};\nexport const drawText = function (elem, textData) {\n let prevTextHeight = 0,\n textHeight = 0;\n const lines = textData.text.split(common.lineBreakRegex);\n\n let textElems = [];\n let dy = 0;\n let yfunc = () => textData.y;\n if (\n typeof textData.valign !== 'undefined' &&\n typeof textData.textMargin !== 'undefined' &&\n textData.textMargin > 0\n ) {\n switch (textData.valign) {\n case 'top':\n case 'start':\n yfunc = () => Math.round(textData.y + textData.textMargin);\n break;\n case 'middle':\n case 'center':\n yfunc = () =>\n Math.round(textData.y + (prevTextHeight + textHeight + textData.textMargin) / 2);\n break;\n case 'bottom':\n case 'end':\n yfunc = () =>\n Math.round(\n textData.y +\n (prevTextHeight + textHeight + 2 * textData.textMargin) -\n textData.textMargin\n );\n break;\n }\n }\n if (\n typeof textData.anchor !== 'undefined' &&\n typeof textData.textMargin !== 'undefined' &&\n typeof textData.width !== 'undefined'\n ) {\n switch (textData.anchor) {\n case 'left':\n case 'start':\n textData.x = Math.round(textData.x + textData.textMargin);\n textData.anchor = 'start';\n textData.dominantBaseline = 'text-after-edge';\n textData.alignmentBaseline = 'middle';\n break;\n case 'middle':\n case 'center':\n textData.x = Math.round(textData.x + textData.width / 2);\n textData.anchor = 'middle';\n textData.dominantBaseline = 'middle';\n textData.alignmentBaseline = 'middle';\n break;\n case 'right':\n case 'end':\n textData.x = Math.round(textData.x + textData.width - textData.textMargin);\n textData.anchor = 'end';\n textData.dominantBaseline = 'text-before-edge';\n textData.alignmentBaseline = 'middle';\n break;\n }\n }\n for (let i = 0; i < lines.length; i++) {\n let line = lines[i];\n if (\n typeof textData.textMargin !== 'undefined' &&\n textData.textMargin === 0 &&\n typeof textData.fontSize !== 'undefined'\n ) {\n dy = i * textData.fontSize;\n }\n\n const textElem = elem.append('text');\n textElem.attr('x', textData.x);\n textElem.attr('y', yfunc());\n if (typeof textData.anchor !== 'undefined') {\n textElem\n .attr('text-anchor', textData.anchor)\n .attr('dominant-baseline', textData.dominantBaseline)\n .attr('alignment-baseline', textData.alignmentBaseline);\n }\n if (typeof textData.fontFamily !== 'undefined') {\n textElem.style('font-family', textData.fontFamily);\n }\n if (typeof textData.fontSize !== 'undefined') {\n textElem.style('font-size', textData.fontSize);\n }\n if (typeof textData.fontWeight !== 'undefined') {\n textElem.style('font-weight', textData.fontWeight);\n }\n if (typeof textData.fill !== 'undefined') {\n textElem.attr('fill', textData.fill);\n }\n if (typeof textData.class !== 'undefined') {\n textElem.attr('class', textData.class);\n }\n if (typeof textData.dy !== 'undefined') {\n textElem.attr('dy', textData.dy);\n } else if (dy !== 0) {\n textElem.attr('dy', dy);\n }\n\n if (textData.tspan) {\n const span = textElem.append('tspan');\n span.attr('x', textData.x);\n if (typeof textData.fill !== 'undefined') {\n span.attr('fill', textData.fill);\n }\n span.text(line);\n } else {\n textElem.text(line);\n }\n if (\n typeof textData.valign !== 'undefined' &&\n typeof textData.textMargin !== 'undefined' &&\n textData.textMargin > 0\n ) {\n textHeight += (textElem._groups || textElem)[0][0].getBBox().height;\n prevTextHeight = textHeight;\n }\n\n textElems.push(textElem);\n }\n\n return textElems;\n};\n\nexport const drawLabel = function (elem, txtObject) {\n /**\n * @param {any} x\n * @param {any} y\n * @param {any} width\n * @param {any} height\n * @param {any} cut\n * @returns {any}\n */\n function genPoints(x, y, width, height, cut) {\n return (\n x +\n ',' +\n y +\n ' ' +\n (x + width) +\n ',' +\n y +\n ' ' +\n (x + width) +\n ',' +\n (y + height - cut) +\n ' ' +\n (x + width - cut * 1.2) +\n ',' +\n (y + height) +\n ' ' +\n x +\n ',' +\n (y + height)\n );\n }\n const polygon = elem.append('polygon');\n polygon.attr('points', genPoints(txtObject.x, txtObject.y, txtObject.width, txtObject.height, 7));\n polygon.attr('class', 'labelBox');\n\n txtObject.y = txtObject.y + txtObject.height / 2;\n\n drawText(elem, txtObject);\n return polygon;\n};\n\nlet actorCnt = -1;\n\nexport const fixLifeLineHeights = (diagram, bounds) => {\n if (!diagram.selectAll) return;\n diagram\n .selectAll('.actor-line')\n .attr('class', '200')\n .attr('y2', bounds - 55);\n};\n\n/**\n * Draws an actor in the diagram with the attached line\n *\n * @param {any} elem - The diagram we'll draw to.\n * @param {any} actor - The actor to draw.\n * @param {any} conf - DrawText implementation discriminator object\n */\nconst drawActorTypeParticipant = function (elem, actor, conf) {\n const center = actor.x + actor.width / 2;\n\n const boxpluslineGroup = elem.append('g');\n var g = boxpluslineGroup;\n\n if (actor.y === 0) {\n actorCnt++;\n g.append('line')\n .attr('id', 'actor' + actorCnt)\n .attr('x1', center)\n .attr('y1', 5)\n .attr('x2', center)\n .attr('y2', 2000)\n .attr('class', 'actor-line')\n .attr('stroke-width', '0.5px')\n .attr('stroke', '#999');\n\n g = boxpluslineGroup.append('g');\n actor.actorCnt = actorCnt;\n\n if (actor.links != null) {\n g.attr('id', 'root-' + actorCnt);\n addPopupInteraction('#root-' + actorCnt, actorCnt);\n }\n }\n\n const rect = getNoteRect();\n var cssclass = 'actor';\n if (actor.properties != null && actor.properties['class']) {\n cssclass = actor.properties['class'];\n } else {\n rect.fill = '#eaeaea';\n }\n rect.x = actor.x;\n rect.y = actor.y;\n rect.width = actor.width;\n rect.height = actor.height;\n rect.class = cssclass;\n rect.rx = 3;\n rect.ry = 3;\n const rectElem = drawRect(g, rect);\n actor.rectData = rect;\n\n if (actor.properties != null && actor.properties['icon']) {\n const iconSrc = actor.properties['icon'].trim();\n if (iconSrc.charAt(0) === '@') {\n drawEmbeddedImage(g, rect.x + rect.width - 20, rect.y + 10, iconSrc.substr(1));\n } else {\n drawImage(g, rect.x + rect.width - 20, rect.y + 10, iconSrc);\n }\n }\n\n _drawTextCandidateFunc(conf)(\n actor.description,\n g,\n rect.x,\n rect.y,\n rect.width,\n rect.height,\n { class: 'actor' },\n conf\n );\n\n let height = actor.height;\n if (rectElem.node) {\n const bounds = rectElem.node().getBBox();\n actor.height = bounds.height;\n height = bounds.height;\n }\n\n return height;\n};\n\nconst drawActorTypeActor = function (elem, actor, conf) {\n const center = actor.x + actor.width / 2;\n\n if (actor.y === 0) {\n actorCnt++;\n elem\n .append('line')\n .attr('id', 'actor' + actorCnt)\n .attr('x1', center)\n .attr('y1', 80)\n .attr('x2', center)\n .attr('y2', 2000)\n .attr('class', 'actor-line')\n .attr('stroke-width', '0.5px')\n .attr('stroke', '#999');\n }\n const actElem = elem.append('g');\n actElem.attr('class', 'actor-man');\n\n const rect = getNoteRect();\n rect.x = actor.x;\n rect.y = actor.y;\n rect.fill = '#eaeaea';\n rect.width = actor.width;\n rect.height = actor.height;\n rect.class = 'actor';\n rect.rx = 3;\n rect.ry = 3;\n // drawRect(actElem, rect);\n\n actElem\n .append('line')\n .attr('id', 'actor-man-torso' + actorCnt)\n .attr('x1', center)\n .attr('y1', actor.y + 25)\n .attr('x2', center)\n .attr('y2', actor.y + 45);\n\n actElem\n .append('line')\n .attr('id', 'actor-man-arms' + actorCnt)\n .attr('x1', center - 18)\n .attr('y1', actor.y + 33)\n .attr('x2', center + 18)\n .attr('y2', actor.y + 33);\n actElem\n .append('line')\n .attr('x1', center - 18)\n .attr('y1', actor.y + 60)\n .attr('x2', center)\n .attr('y2', actor.y + 45);\n actElem\n .append('line')\n .attr('x1', center)\n .attr('y1', actor.y + 45)\n .attr('x2', center + 16)\n .attr('y2', actor.y + 60);\n\n const circle = actElem.append('circle');\n circle.attr('cx', actor.x + actor.width / 2);\n circle.attr('cy', actor.y + 10);\n circle.attr('r', 15);\n circle.attr('width', actor.width);\n circle.attr('height', actor.height);\n\n const bounds = actElem.node().getBBox();\n actor.height = bounds.height;\n\n _drawTextCandidateFunc(conf)(\n actor.description,\n actElem,\n rect.x,\n rect.y + 35,\n rect.width,\n rect.height,\n { class: 'actor' },\n conf\n );\n\n return actor.height;\n};\n\nexport const drawActor = function (elem, actor, conf) {\n switch (actor.type) {\n case 'actor':\n return drawActorTypeActor(elem, actor, conf);\n case 'participant':\n return drawActorTypeParticipant(elem, actor, conf);\n }\n};\n\nexport const anchorElement = function (elem) {\n return elem.append('g');\n};\n/**\n * Draws an activation in the diagram\n *\n * @param {any} elem - Element to append activation rect.\n * @param {any} bounds - Activation box bounds.\n * @param {any} verticalPos - Precise y cooridnate of bottom activation box edge.\n * @param {any} conf - Sequence diagram config object.\n * @param {any} actorActivations - Number of activations on the actor.\n */\nexport const drawActivation = function (elem, bounds, verticalPos, conf, actorActivations) {\n const rect = getNoteRect();\n const g = bounds.anchored;\n rect.x = bounds.startx;\n rect.y = bounds.starty;\n rect.class = 'activation' + (actorActivations % 3); // Will evaluate to 0, 1 or 2\n rect.width = bounds.stopx - bounds.startx;\n rect.height = verticalPos - bounds.starty;\n drawRect(g, rect);\n};\n\n/**\n * Draws a loop in the diagram\n *\n * @param {any} elem - Elemenet to append the loop to.\n * @param {any} loopModel - LoopModel of the given loop.\n * @param {any} labelText - Text within the loop.\n * @param {any} conf - Diagrom configuration\n * @returns {any}\n */\nexport const drawLoop = function (elem, loopModel, labelText, conf) {\n const {\n boxMargin,\n boxTextMargin,\n labelBoxHeight,\n labelBoxWidth,\n messageFontFamily: fontFamily,\n messageFontSize: fontSize,\n messageFontWeight: fontWeight,\n } = conf;\n const g = elem.append('g');\n const drawLoopLine = function (startx, starty, stopx, stopy) {\n return g\n .append('line')\n .attr('x1', startx)\n .attr('y1', starty)\n .attr('x2', stopx)\n .attr('y2', stopy)\n .attr('class', 'loopLine');\n };\n drawLoopLine(loopModel.startx, loopModel.starty, loopModel.stopx, loopModel.starty);\n drawLoopLine(loopModel.stopx, loopModel.starty, loopModel.stopx, loopModel.stopy);\n drawLoopLine(loopModel.startx, loopModel.stopy, loopModel.stopx, loopModel.stopy);\n drawLoopLine(loopModel.startx, loopModel.starty, loopModel.startx, loopModel.stopy);\n if (typeof loopModel.sections !== 'undefined') {\n loopModel.sections.forEach(function (item) {\n drawLoopLine(loopModel.startx, item.y, loopModel.stopx, item.y).style(\n 'stroke-dasharray',\n '3, 3'\n );\n });\n }\n\n let txt = getTextObj();\n txt.text = labelText;\n txt.x = loopModel.startx;\n txt.y = loopModel.starty;\n txt.fontFamily = fontFamily;\n txt.fontSize = fontSize;\n txt.fontWeight = fontWeight;\n txt.anchor = 'middle';\n txt.valign = 'middle';\n txt.tspan = false;\n txt.width = labelBoxWidth || 50;\n txt.height = labelBoxHeight || 20;\n txt.textMargin = boxTextMargin;\n txt.class = 'labelText';\n\n drawLabel(g, txt);\n txt = getTextObj();\n txt.text = loopModel.title;\n txt.x = loopModel.startx + labelBoxWidth / 2 + (loopModel.stopx - loopModel.startx) / 2;\n txt.y = loopModel.starty + boxMargin + boxTextMargin;\n txt.anchor = 'middle';\n txt.valign = 'middle';\n txt.textMargin = boxTextMargin;\n txt.class = 'loopText';\n txt.fontFamily = fontFamily;\n txt.fontSize = fontSize;\n txt.fontWeight = fontWeight;\n txt.wrap = true;\n\n let textElem = drawText(g, txt);\n\n if (typeof loopModel.sectionTitles !== 'undefined') {\n loopModel.sectionTitles.forEach(function (item, idx) {\n if (item.message) {\n txt.text = item.message;\n txt.x = loopModel.startx + (loopModel.stopx - loopModel.startx) / 2;\n txt.y = loopModel.sections[idx].y + boxMargin + boxTextMargin;\n txt.class = 'loopText';\n txt.anchor = 'middle';\n txt.valign = 'middle';\n txt.tspan = false;\n txt.fontFamily = fontFamily;\n txt.fontSize = fontSize;\n txt.fontWeight = fontWeight;\n txt.wrap = loopModel.wrap;\n textElem = drawText(g, txt);\n let sectionHeight = Math.round(\n textElem\n .map((te) => (te._groups || te)[0][0].getBBox().height)\n .reduce((acc, curr) => acc + curr)\n );\n loopModel.sections[idx].height += sectionHeight - (boxMargin + boxTextMargin);\n }\n });\n }\n\n loopModel.height = Math.round(loopModel.stopy - loopModel.starty);\n return g;\n};\n\n/**\n * Draws a background rectangle\n *\n * @param {any} elem Diagram (reference for bounds)\n * @param {any} bounds Shape of the rectangle\n */\nexport const drawBackgroundRect = function (elem, bounds) {\n const rectElem = drawRect(elem, {\n x: bounds.startx,\n y: bounds.starty,\n width: bounds.stopx - bounds.startx,\n height: bounds.stopy - bounds.starty,\n fill: bounds.fill,\n class: 'rect',\n });\n rectElem.lower();\n};\n\nexport const insertDatabaseIcon = function (elem) {\n elem\n .append('defs')\n .append('symbol')\n .attr('id', 'database')\n .attr('fill-rule', 'evenodd')\n .attr('clip-rule', 'evenodd')\n .append('path')\n .attr('transform', 'scale(.5)')\n .attr(\n 'd',\n 'M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z'\n );\n};\n\nexport const insertComputerIcon = function (elem) {\n elem\n .append('defs')\n .append('symbol')\n .attr('id', 'computer')\n .attr('width', '24')\n .attr('height', '24')\n .append('path')\n .attr('transform', 'scale(.5)')\n .attr(\n 'd',\n 'M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z'\n );\n};\n\nexport const insertClockIcon = function (elem) {\n elem\n .append('defs')\n .append('symbol')\n .attr('id', 'clock')\n .attr('width', '24')\n .attr('height', '24')\n .append('path')\n .attr('transform', 'scale(.5)')\n .attr(\n 'd',\n 'M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z'\n );\n};\n\n/**\n * Setup arrow head and define the marker. The result is appended to the svg.\n *\n * @param elem\n */\nexport const insertArrowHead = function (elem) {\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'arrowhead')\n .attr('refX', 9)\n .attr('refY', 5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 12)\n .attr('markerHeight', 12)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 0 0 L 10 5 L 0 10 z'); // this is actual shape for arrowhead\n};\n/**\n * Setup arrow head and define the marker. The result is appended to the svg.\n *\n * @param {any} elem\n */\nexport const insertArrowFilledHead = function (elem) {\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'filled-head')\n .attr('refX', 18)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L14,7 L9,1 Z');\n};\n/**\n * Setup node number. The result is appended to the svg.\n *\n * @param {any} elem\n */\nexport const insertSequenceNumber = function (elem) {\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'sequencenumber')\n .attr('refX', 15)\n .attr('refY', 15)\n .attr('markerWidth', 60)\n .attr('markerHeight', 40)\n .attr('orient', 'auto')\n .append('circle')\n .attr('cx', 15)\n .attr('cy', 15)\n .attr('r', 6);\n // .style(\"fill\", '#f00');\n};\n/**\n * Setup arrow head and define the marker. The result is appended to the svg.\n *\n * @param {any} elem\n */\nexport const insertArrowCrossHead = function (elem) {\n const defs = elem.append('defs');\n const marker = defs\n .append('marker')\n .attr('id', 'crosshead')\n .attr('markerWidth', 15)\n .attr('markerHeight', 8)\n .attr('orient', 'auto')\n .attr('refX', 16)\n .attr('refY', 4);\n\n // The arrow\n marker\n .append('path')\n .attr('fill', 'black')\n .attr('stroke', '#000000')\n .style('stroke-dasharray', '0, 0')\n .attr('stroke-width', '1px')\n .attr('d', 'M 9,2 V 6 L16,4 Z');\n\n // The cross\n marker\n .append('path')\n .attr('fill', 'none')\n .attr('stroke', '#000000')\n .style('stroke-dasharray', '0, 0')\n .attr('stroke-width', '1px')\n .attr('d', 'M 0,1 L 6,7 M 6,1 L 0,7');\n // this is actual shape for arrowhead\n};\n\nexport const getTextObj = function () {\n return {\n x: 0,\n y: 0,\n fill: undefined,\n anchor: undefined,\n style: '#666',\n width: undefined,\n height: undefined,\n textMargin: 0,\n rx: 0,\n ry: 0,\n tspan: true,\n valign: undefined,\n };\n};\n\nexport const getNoteRect = function () {\n return {\n x: 0,\n y: 0,\n fill: '#EDF2AE',\n stroke: '#666',\n width: 100,\n anchor: 'start',\n height: 100,\n rx: 0,\n ry: 0,\n };\n};\n\nconst _drawTextCandidateFunc = (function () {\n /**\n * @param {any} content\n * @param {any} g\n * @param {any} x\n * @param {any} y\n * @param {any} width\n * @param {any} height\n * @param {any} textAttrs\n */\n function byText(content, g, x, y, width, height, textAttrs) {\n const text = g\n .append('text')\n .attr('x', x + width / 2)\n .attr('y', y + height / 2 + 5)\n .style('text-anchor', 'middle')\n .text(content);\n _setTextAttrs(text, textAttrs);\n }\n\n /**\n * @param {any} content\n * @param {any} g\n * @param {any} x\n * @param {any} y\n * @param {any} width\n * @param {any} height\n * @param {any} textAttrs\n * @param {any} conf\n */\n function byTspan(content, g, x, y, width, height, textAttrs, conf) {\n const { actorFontSize, actorFontFamily, actorFontWeight } = conf;\n\n const lines = content.split(common.lineBreakRegex);\n for (let i = 0; i < lines.length; i++) {\n const dy = i * actorFontSize - (actorFontSize * (lines.length - 1)) / 2;\n const text = g\n .append('text')\n .attr('x', x + width / 2)\n .attr('y', y)\n .style('text-anchor', 'middle')\n .style('font-size', actorFontSize)\n .style('font-weight', actorFontWeight)\n .style('font-family', actorFontFamily);\n text\n .append('tspan')\n .attr('x', x + width / 2)\n .attr('dy', dy)\n .text(lines[i]);\n\n text\n .attr('y', y + height / 2.0)\n .attr('dominant-baseline', 'central')\n .attr('alignment-baseline', 'central');\n\n _setTextAttrs(text, textAttrs);\n }\n }\n\n /**\n * @param {any} content\n * @param {any} g\n * @param {any} x\n * @param {any} y\n * @param {any} width\n * @param {any} height\n * @param {any} textAttrs\n * @param {any} conf\n */\n function byFo(content, g, x, y, width, height, textAttrs, conf) {\n const s = g.append('switch');\n const f = s\n .append('foreignObject')\n .attr('x', x)\n .attr('y', y)\n .attr('width', width)\n .attr('height', height);\n\n const text = f\n .append('xhtml:div')\n .style('display', 'table')\n .style('height', '100%')\n .style('width', '100%');\n\n text\n .append('div')\n .style('display', 'table-cell')\n .style('text-align', 'center')\n .style('vertical-align', 'middle')\n .text(content);\n\n byTspan(content, s, x, y, width, height, textAttrs, conf);\n _setTextAttrs(text, textAttrs);\n }\n\n /**\n * @param {any} toText\n * @param {any} fromTextAttrsDict\n */\n function _setTextAttrs(toText, fromTextAttrsDict) {\n for (const key in fromTextAttrsDict) {\n if (fromTextAttrsDict.hasOwnProperty(key)) { // eslint-disable-line\n toText.attr(key, fromTextAttrsDict[key]);\n }\n }\n }\n\n return function (conf) {\n return conf.textPlacement === 'fo' ? byFo : conf.textPlacement === 'old' ? byText : byTspan;\n };\n})();\n\nconst _drawMenuItemTextCandidateFunc = (function () {\n /**\n * @param {any} content\n * @param {any} g\n * @param {any} x\n * @param {any} y\n * @param {any} width\n * @param {any} height\n * @param {any} textAttrs\n */\n function byText(content, g, x, y, width, height, textAttrs) {\n const text = g\n .append('text')\n .attr('x', x)\n .attr('y', y)\n .style('text-anchor', 'start')\n .text(content);\n _setTextAttrs(text, textAttrs);\n }\n\n /**\n * @param {any} content\n * @param {any} g\n * @param {any} x\n * @param {any} y\n * @param {any} width\n * @param {any} height\n * @param {any} textAttrs\n * @param {any} conf\n */\n function byTspan(content, g, x, y, width, height, textAttrs, conf) {\n const { actorFontSize, actorFontFamily, actorFontWeight } = conf;\n\n const lines = content.split(common.lineBreakRegex);\n for (let i = 0; i < lines.length; i++) {\n const dy = i * actorFontSize - (actorFontSize * (lines.length - 1)) / 2;\n const text = g\n .append('text')\n .attr('x', x)\n .attr('y', y)\n .style('text-anchor', 'start')\n .style('font-size', actorFontSize)\n .style('font-weight', actorFontWeight)\n .style('font-family', actorFontFamily);\n text.append('tspan').attr('x', x).attr('dy', dy).text(lines[i]);\n\n text\n .attr('y', y + height / 2.0)\n .attr('dominant-baseline', 'central')\n .attr('alignment-baseline', 'central');\n\n _setTextAttrs(text, textAttrs);\n }\n }\n\n /**\n * @param {any} content\n * @param {any} g\n * @param {any} x\n * @param {any} y\n * @param {any} width\n * @param {any} height\n * @param {any} textAttrs\n * @param {any} conf\n */\n function byFo(content, g, x, y, width, height, textAttrs, conf) {\n const s = g.append('switch');\n const f = s\n .append('foreignObject')\n .attr('x', x)\n .attr('y', y)\n .attr('width', width)\n .attr('height', height);\n\n const text = f\n .append('xhtml:div')\n .style('display', 'table')\n .style('height', '100%')\n .style('width', '100%');\n\n text\n .append('div')\n .style('display', 'table-cell')\n .style('text-align', 'center')\n .style('vertical-align', 'middle')\n .text(content);\n\n byTspan(content, s, x, y, width, height, textAttrs, conf);\n _setTextAttrs(text, textAttrs);\n }\n\n /**\n * @param {any} toText\n * @param {any} fromTextAttrsDict\n */\n function _setTextAttrs(toText, fromTextAttrsDict) {\n for (const key in fromTextAttrsDict) {\n if (fromTextAttrsDict.hasOwnProperty(key)) { // eslint-disable-line\n toText.attr(key, fromTextAttrsDict[key]);\n }\n }\n }\n\n return function (conf) {\n return conf.textPlacement === 'fo' ? byFo : conf.textPlacement === 'old' ? byText : byTspan;\n };\n})();\n\nexport default {\n drawRect,\n drawText,\n drawLabel,\n drawActor,\n drawPopup,\n drawImage,\n drawEmbeddedImage,\n anchorElement,\n drawActivation,\n drawLoop,\n drawBackgroundRect,\n insertArrowHead,\n insertArrowFilledHead,\n insertSequenceNumber,\n insertArrowCrossHead,\n insertDatabaseIcon,\n insertComputerIcon,\n insertClockIcon,\n getTextObj,\n getNoteRect,\n popupMenu,\n popdownMenu,\n fixLifeLineHeights,\n sanitizeUrl,\n};\n","import { select, selectAll } from 'd3';\nimport svgDraw, { drawText, fixLifeLineHeights } from './svgDraw';\nimport { log } from '../../logger';\nimport { parser } from './parser/sequenceDiagram';\nimport common from '../common/common';\nimport sequenceDb from './sequenceDb';\nimport * as configApi from '../../config';\nimport utils, { assignWithDepth, configureSvgSize } from '../../utils';\nimport addSVGAccessibilityFields from '../../accessibility';\n\nparser.yy = sequenceDb;\n\nlet conf = {};\n\nexport const bounds = {\n data: {\n startx: undefined,\n stopx: undefined,\n starty: undefined,\n stopy: undefined,\n },\n verticalPos: 0,\n sequenceItems: [],\n activations: [],\n models: {\n getHeight: function () {\n return (\n Math.max.apply(\n null,\n this.actors.length === 0 ? [0] : this.actors.map((actor) => actor.height || 0)\n ) +\n (this.loops.length === 0\n ? 0\n : this.loops.map((it) => it.height || 0).reduce((acc, h) => acc + h)) +\n (this.messages.length === 0\n ? 0\n : this.messages.map((it) => it.height || 0).reduce((acc, h) => acc + h)) +\n (this.notes.length === 0\n ? 0\n : this.notes.map((it) => it.height || 0).reduce((acc, h) => acc + h))\n );\n },\n clear: function () {\n this.actors = [];\n this.loops = [];\n this.messages = [];\n this.notes = [];\n },\n addActor: function (actorModel) {\n this.actors.push(actorModel);\n },\n addLoop: function (loopModel) {\n this.loops.push(loopModel);\n },\n addMessage: function (msgModel) {\n this.messages.push(msgModel);\n },\n addNote: function (noteModel) {\n this.notes.push(noteModel);\n },\n lastActor: function () {\n return this.actors[this.actors.length - 1];\n },\n lastLoop: function () {\n return this.loops[this.loops.length - 1];\n },\n lastMessage: function () {\n return this.messages[this.messages.length - 1];\n },\n lastNote: function () {\n return this.notes[this.notes.length - 1];\n },\n actors: [],\n loops: [],\n messages: [],\n notes: [],\n },\n init: function () {\n this.sequenceItems = [];\n this.activations = [];\n this.models.clear();\n this.data = {\n startx: undefined,\n stopx: undefined,\n starty: undefined,\n stopy: undefined,\n };\n this.verticalPos = 0;\n setConf(parser.yy.getConfig());\n },\n updateVal: function (obj, key, val, fun) {\n if (typeof obj[key] === 'undefined') {\n obj[key] = val;\n } else {\n obj[key] = fun(val, obj[key]);\n }\n },\n updateBounds: function (startx, starty, stopx, stopy) {\n const _self = this;\n let cnt = 0;\n /** @param {any} type */\n function updateFn(type) {\n return function updateItemBounds(item) {\n cnt++;\n // The loop sequenceItems is a stack so the biggest margins in the beginning of the sequenceItems\n const n = _self.sequenceItems.length - cnt + 1;\n\n _self.updateVal(item, 'starty', starty - n * conf.boxMargin, Math.min);\n _self.updateVal(item, 'stopy', stopy + n * conf.boxMargin, Math.max);\n\n _self.updateVal(bounds.data, 'startx', startx - n * conf.boxMargin, Math.min);\n _self.updateVal(bounds.data, 'stopx', stopx + n * conf.boxMargin, Math.max);\n\n if (!(type === 'activation')) {\n _self.updateVal(item, 'startx', startx - n * conf.boxMargin, Math.min);\n _self.updateVal(item, 'stopx', stopx + n * conf.boxMargin, Math.max);\n\n _self.updateVal(bounds.data, 'starty', starty - n * conf.boxMargin, Math.min);\n _self.updateVal(bounds.data, 'stopy', stopy + n * conf.boxMargin, Math.max);\n }\n };\n }\n\n this.sequenceItems.forEach(updateFn());\n this.activations.forEach(updateFn('activation'));\n },\n insert: function (startx, starty, stopx, stopy) {\n const _startx = Math.min(startx, stopx);\n const _stopx = Math.max(startx, stopx);\n const _starty = Math.min(starty, stopy);\n const _stopy = Math.max(starty, stopy);\n\n this.updateVal(bounds.data, 'startx', _startx, Math.min);\n this.updateVal(bounds.data, 'starty', _starty, Math.min);\n this.updateVal(bounds.data, 'stopx', _stopx, Math.max);\n this.updateVal(bounds.data, 'stopy', _stopy, Math.max);\n\n this.updateBounds(_startx, _starty, _stopx, _stopy);\n },\n newActivation: function (message, diagram, actors) {\n const actorRect = actors[message.from.actor];\n const stackedSize = actorActivations(message.from.actor).length || 0;\n const x = actorRect.x + actorRect.width / 2 + ((stackedSize - 1) * conf.activationWidth) / 2;\n this.activations.push({\n startx: x,\n starty: this.verticalPos + 2,\n stopx: x + conf.activationWidth,\n stopy: undefined,\n actor: message.from.actor,\n anchored: svgDraw.anchorElement(diagram),\n });\n },\n endActivation: function (message) {\n // find most recent activation for given actor\n const lastActorActivationIdx = this.activations\n .map(function (activation) {\n return activation.actor;\n })\n .lastIndexOf(message.from.actor);\n return this.activations.splice(lastActorActivationIdx, 1)[0];\n },\n createLoop: function (title = { message: undefined, wrap: false, width: undefined }, fill) {\n return {\n startx: undefined,\n starty: this.verticalPos,\n stopx: undefined,\n stopy: undefined,\n title: title.message,\n wrap: title.wrap,\n width: title.width,\n height: 0,\n fill: fill,\n };\n },\n newLoop: function (title = { message: undefined, wrap: false, width: undefined }, fill) {\n this.sequenceItems.push(this.createLoop(title, fill));\n },\n endLoop: function () {\n return this.sequenceItems.pop();\n },\n addSectionToLoop: function (message) {\n const loop = this.sequenceItems.pop();\n loop.sections = loop.sections || [];\n loop.sectionTitles = loop.sectionTitles || [];\n loop.sections.push({ y: bounds.getVerticalPos(), height: 0 });\n loop.sectionTitles.push(message);\n this.sequenceItems.push(loop);\n },\n bumpVerticalPos: function (bump) {\n this.verticalPos = this.verticalPos + bump;\n this.data.stopy = this.verticalPos;\n },\n getVerticalPos: function () {\n return this.verticalPos;\n },\n getBounds: function () {\n return { bounds: this.data, models: this.models };\n },\n};\n\n/**\n * Draws an note in the diagram with the attached line\n *\n * @param {any} elem - The diagram to draw to.\n * @param {{ x: number; y: number; message: string; width: number }} noteModel - Startx: x axis\n * start position, verticalPos: y axis position, messsage: the message to be shown, width: Set\n * this with a custom width to override the default configured width.\n */\nconst drawNote = function (elem, noteModel) {\n bounds.bumpVerticalPos(conf.boxMargin);\n noteModel.height = conf.boxMargin;\n noteModel.starty = bounds.getVerticalPos();\n const rect = svgDraw.getNoteRect();\n rect.x = noteModel.startx;\n rect.y = noteModel.starty;\n rect.width = noteModel.width || conf.width;\n rect.class = 'note';\n\n let g = elem.append('g');\n const rectElem = svgDraw.drawRect(g, rect);\n const textObj = svgDraw.getTextObj();\n textObj.x = noteModel.startx;\n textObj.y = noteModel.starty;\n textObj.width = rect.width;\n textObj.dy = '1em';\n textObj.text = noteModel.message;\n textObj.class = 'noteText';\n textObj.fontFamily = conf.noteFontFamily;\n textObj.fontSize = conf.noteFontSize;\n textObj.fontWeight = conf.noteFontWeight;\n textObj.anchor = conf.noteAlign;\n textObj.textMargin = conf.noteMargin;\n textObj.valign = conf.noteAlign;\n\n let textElem = drawText(g, textObj);\n\n let textHeight = Math.round(\n textElem\n .map((te) => (te._groups || te)[0][0].getBBox().height)\n .reduce((acc, curr) => acc + curr)\n );\n\n rectElem.attr('height', textHeight + 2 * conf.noteMargin);\n noteModel.height += textHeight + 2 * conf.noteMargin;\n bounds.bumpVerticalPos(textHeight + 2 * conf.noteMargin);\n noteModel.stopy = noteModel.starty + textHeight + 2 * conf.noteMargin;\n noteModel.stopx = noteModel.startx + rect.width;\n bounds.insert(noteModel.startx, noteModel.starty, noteModel.stopx, noteModel.stopy);\n bounds.models.addNote(noteModel);\n};\n\nconst messageFont = (cnf) => {\n return {\n fontFamily: cnf.messageFontFamily,\n fontSize: cnf.messageFontSize,\n fontWeight: cnf.messageFontWeight,\n };\n};\nconst noteFont = (cnf) => {\n return {\n fontFamily: cnf.noteFontFamily,\n fontSize: cnf.noteFontSize,\n fontWeight: cnf.noteFontWeight,\n };\n};\nconst actorFont = (cnf) => {\n return {\n fontFamily: cnf.actorFontFamily,\n fontSize: cnf.actorFontSize,\n fontWeight: cnf.actorFontWeight,\n };\n};\n\n/**\n * Process a message by adding its dimensions to the bound. It returns the Y coordinate of the\n * message so it can be drawn later. We do not draw the message at this point so the arrowhead can\n * be on top of the activation box.\n *\n * @param {any} diagram - The parent of the message element\n * @param {any} msgModel - The model containing fields describing a message\n * @returns {number} LineStarty - The Y coordinate at which the message line starts\n */\nconst boundMessage = function (diagram, msgModel) {\n bounds.bumpVerticalPos(10);\n const { startx, stopx, message } = msgModel;\n const lines = common.splitBreaks(message).length;\n let textDims = utils.calculateTextDimensions(message, messageFont(conf));\n const lineHeight = textDims.height / lines;\n msgModel.height += lineHeight;\n\n bounds.bumpVerticalPos(lineHeight);\n\n let lineStarty;\n let totalOffset = textDims.height - 10;\n let textWidth = textDims.width;\n\n if (startx === stopx) {\n lineStarty = bounds.getVerticalPos() + totalOffset;\n if (!conf.rightAngles) {\n totalOffset += conf.boxMargin;\n lineStarty = bounds.getVerticalPos() + totalOffset;\n }\n totalOffset += 30;\n const dx = Math.max(textWidth / 2, conf.width / 2);\n bounds.insert(\n startx - dx,\n bounds.getVerticalPos() - 10 + totalOffset,\n stopx + dx,\n bounds.getVerticalPos() + 30 + totalOffset\n );\n } else {\n totalOffset += conf.boxMargin;\n lineStarty = bounds.getVerticalPos() + totalOffset;\n bounds.insert(startx, lineStarty - 10, stopx, lineStarty);\n }\n bounds.bumpVerticalPos(totalOffset);\n msgModel.height += totalOffset;\n msgModel.stopy = msgModel.starty + msgModel.height;\n bounds.insert(msgModel.fromBounds, msgModel.starty, msgModel.toBounds, msgModel.stopy);\n\n return lineStarty;\n};\n\n/**\n * Draws a message. Note that the bounds have previously been updated by boundMessage.\n *\n * @param {any} diagram - The parent of the message element\n * @param {any} msgModel - The model containing fields describing a message\n * @param {float} lineStarty - The Y coordinate at which the message line starts\n */\nconst drawMessage = function (diagram, msgModel, lineStarty) {\n const { startx, stopx, starty, message, type, sequenceIndex, sequenceVisible } = msgModel;\n let textDims = utils.calculateTextDimensions(message, messageFont(conf));\n const textObj = svgDraw.getTextObj();\n textObj.x = startx;\n textObj.y = starty + 10;\n textObj.width = stopx - startx;\n textObj.class = 'messageText';\n textObj.dy = '1em';\n textObj.text = message;\n textObj.fontFamily = conf.messageFontFamily;\n textObj.fontSize = conf.messageFontSize;\n textObj.fontWeight = conf.messageFontWeight;\n textObj.anchor = conf.messageAlign;\n textObj.valign = conf.messageAlign;\n textObj.textMargin = conf.wrapPadding;\n textObj.tspan = false;\n\n drawText(diagram, textObj);\n\n let textWidth = textDims.width;\n\n let line;\n if (startx === stopx) {\n if (conf.rightAngles) {\n line = diagram\n .append('path')\n .attr(\n 'd',\n `M ${startx},${lineStarty} H ${startx + Math.max(conf.width / 2, textWidth / 2)} V ${\n lineStarty + 25\n } H ${startx}`\n );\n } else {\n line = diagram\n .append('path')\n .attr(\n 'd',\n 'M ' +\n startx +\n ',' +\n lineStarty +\n ' C ' +\n (startx + 60) +\n ',' +\n (lineStarty - 10) +\n ' ' +\n (startx + 60) +\n ',' +\n (lineStarty + 30) +\n ' ' +\n startx +\n ',' +\n (lineStarty + 20)\n );\n }\n } else {\n line = diagram.append('line');\n line.attr('x1', startx);\n line.attr('y1', lineStarty);\n line.attr('x2', stopx);\n line.attr('y2', lineStarty);\n }\n // Make an SVG Container\n // Draw the line\n if (\n type === parser.yy.LINETYPE.DOTTED ||\n type === parser.yy.LINETYPE.DOTTED_CROSS ||\n type === parser.yy.LINETYPE.DOTTED_POINT ||\n type === parser.yy.LINETYPE.DOTTED_OPEN\n ) {\n line.style('stroke-dasharray', '3, 3');\n line.attr('class', 'messageLine1');\n } else {\n line.attr('class', 'messageLine0');\n }\n\n let url = '';\n if (conf.arrowMarkerAbsolute) {\n url =\n window.location.protocol +\n '//' +\n window.location.host +\n window.location.pathname +\n window.location.search;\n url = url.replace(/\\(/g, '\\\\(');\n url = url.replace(/\\)/g, '\\\\)');\n }\n\n line.attr('stroke-width', 2);\n line.attr('stroke', 'none'); // handled by theme/css anyway\n line.style('fill', 'none'); // remove any fill colour\n if (type === parser.yy.LINETYPE.SOLID || type === parser.yy.LINETYPE.DOTTED) {\n line.attr('marker-end', 'url(' + url + '#arrowhead)');\n }\n if (type === parser.yy.LINETYPE.SOLID_POINT || type === parser.yy.LINETYPE.DOTTED_POINT) {\n line.attr('marker-end', 'url(' + url + '#filled-head)');\n }\n\n if (type === parser.yy.LINETYPE.SOLID_CROSS || type === parser.yy.LINETYPE.DOTTED_CROSS) {\n line.attr('marker-end', 'url(' + url + '#crosshead)');\n }\n\n // add node number\n if (sequenceVisible || conf.showSequenceNumbers) {\n line.attr('marker-start', 'url(' + url + '#sequencenumber)');\n diagram\n .append('text')\n .attr('x', startx)\n .attr('y', lineStarty + 4)\n .attr('font-family', 'sans-serif')\n .attr('font-size', '12px')\n .attr('text-anchor', 'middle')\n .attr('textLength', '16px')\n .attr('class', 'sequenceNumber')\n .text(sequenceIndex);\n }\n};\n\nexport const drawActors = function (\n diagram,\n actors,\n actorKeys,\n verticalPos,\n configuration,\n messages\n) {\n if (configuration.hideUnusedParticipants === true) {\n const newActors = new Set();\n messages.forEach((message) => {\n newActors.add(message.from);\n newActors.add(message.to);\n });\n actorKeys = actorKeys.filter((actorKey) => newActors.has(actorKey));\n }\n\n // Draw the actors\n let prevWidth = 0;\n let prevMargin = 0;\n let maxHeight = 0;\n for (let i = 0; i < actorKeys.length; i++) {\n const actor = actors[actorKeys[i]];\n\n // Add some rendering data to the object\n actor.width = actor.width || conf.width;\n actor.height = Math.max(actor.height || conf.height, conf.height);\n actor.margin = actor.margin || conf.actorMargin;\n\n actor.x = prevWidth + prevMargin;\n actor.y = verticalPos;\n\n // Draw the box with the attached line\n const height = svgDraw.drawActor(diagram, actor, conf);\n maxHeight = Math.max(maxHeight, height);\n bounds.insert(actor.x, verticalPos, actor.x + actor.width, actor.height);\n\n prevWidth += actor.width;\n prevMargin += actor.margin;\n bounds.models.addActor(actor);\n }\n\n // Add a margin between the actor boxes and the first arrow\n bounds.bumpVerticalPos(maxHeight);\n};\n\nexport const drawActorsPopup = function (diagram, actors, actorKeys, doc) {\n var maxHeight = 0;\n var maxWidth = 0;\n for (let i = 0; i < actorKeys.length; i++) {\n const actor = actors[actorKeys[i]];\n const minMenuWidth = getRequiredPopupWidth(actor);\n var menuDimensions = svgDraw.drawPopup(\n diagram,\n actor,\n minMenuWidth,\n conf,\n conf.forceMenus,\n doc\n );\n if (menuDimensions.height > maxHeight) {\n maxHeight = menuDimensions.height;\n }\n if (menuDimensions.width + actor.x > maxWidth) {\n maxWidth = menuDimensions.width + actor.x;\n }\n }\n\n return { maxHeight: maxHeight, maxWidth: maxWidth };\n};\n\nexport const setConf = function (cnf) {\n assignWithDepth(conf, cnf);\n\n if (cnf.fontFamily) {\n conf.actorFontFamily = conf.noteFontFamily = conf.messageFontFamily = cnf.fontFamily;\n }\n if (cnf.fontSize) {\n conf.actorFontSize = conf.noteFontSize = conf.messageFontSize = cnf.fontSize;\n }\n if (cnf.fontWeight) {\n conf.actorFontWeight = conf.noteFontWeight = conf.messageFontWeight = cnf.fontWeight;\n }\n};\n\nconst actorActivations = function (actor) {\n return bounds.activations.filter(function (activation) {\n return activation.actor === actor;\n });\n};\n\nconst activationBounds = function (actor, actors) {\n // handle multiple stacked activations for same actor\n const actorObj = actors[actor];\n const activations = actorActivations(actor);\n\n const left = activations.reduce(function (acc, activation) {\n return Math.min(acc, activation.startx);\n }, actorObj.x + actorObj.width / 2);\n const right = activations.reduce(function (acc, activation) {\n return Math.max(acc, activation.stopx);\n }, actorObj.x + actorObj.width / 2);\n return [left, right];\n};\n\n/**\n * @param {any} loopWidths\n * @param {any} msg\n * @param {any} preMargin\n * @param {any} postMargin\n * @param {any} addLoopFn\n */\nfunction adjustLoopHeightForWrap(loopWidths, msg, preMargin, postMargin, addLoopFn) {\n bounds.bumpVerticalPos(preMargin);\n let heightAdjust = postMargin;\n if (msg.id && msg.message && loopWidths[msg.id]) {\n let loopWidth = loopWidths[msg.id].width;\n let textConf = messageFont(conf);\n msg.message = utils.wrapLabel(`[${msg.message}]`, loopWidth - 2 * conf.wrapPadding, textConf);\n msg.width = loopWidth;\n msg.wrap = true;\n\n // const lines = common.splitBreaks(msg.message).length;\n const textDims = utils.calculateTextDimensions(msg.message, textConf);\n const totalOffset = Math.max(textDims.height, conf.labelBoxHeight);\n heightAdjust = postMargin + totalOffset;\n log.debug(`${totalOffset} - ${msg.message}`);\n }\n addLoopFn(msg);\n bounds.bumpVerticalPos(heightAdjust);\n}\n\n/**\n * Draws a sequenceDiagram in the tag with id: id based on the graph definition in text.\n *\n * @param {any} text\n * @param {any} id\n */\nexport const draw = function (text, id) {\n conf = configApi.getConfig().sequence;\n const securityLevel = configApi.getConfig().securityLevel;\n // Handle root and ocument for when rendering in sanbox mode\n let sandboxElement;\n if (securityLevel === 'sandbox') {\n sandboxElement = select('#i' + id);\n }\n const root =\n securityLevel === 'sandbox'\n ? select(sandboxElement.nodes()[0].contentDocument.body)\n : select('body');\n const doc = securityLevel === 'sandbox' ? sandboxElement.nodes()[0].contentDocument : document;\n\n parser.yy.clear();\n parser.yy.setWrap(conf.wrap);\n parser.parse(text + '\\n');\n bounds.init();\n log.debug(`C:${JSON.stringify(conf, null, 2)}`);\n\n const diagram =\n securityLevel === 'sandbox' ? root.select(`[id=\"${id}\"]`) : select(`[id=\"${id}\"]`);\n\n // Fetch data from the parsing\n const actors = parser.yy.getActors();\n const actorKeys = parser.yy.getActorKeys();\n const messages = parser.yy.getMessages();\n const title = parser.yy.getDiagramTitle();\n\n const maxMessageWidthPerActor = getMaxMessageWidthPerActor(actors, messages);\n conf.height = calculateActorMargins(actors, maxMessageWidthPerActor);\n\n svgDraw.insertComputerIcon(diagram);\n svgDraw.insertDatabaseIcon(diagram);\n svgDraw.insertClockIcon(diagram);\n\n drawActors(diagram, actors, actorKeys, 0, conf, messages);\n const loopWidths = calculateLoopBounds(messages, actors, maxMessageWidthPerActor);\n\n // The arrow head definition is attached to the svg once\n svgDraw.insertArrowHead(diagram);\n svgDraw.insertArrowCrossHead(diagram);\n svgDraw.insertArrowFilledHead(diagram);\n svgDraw.insertSequenceNumber(diagram);\n\n /**\n * @param {any} msg\n * @param {any} verticalPos\n */\n function activeEnd(msg, verticalPos) {\n const activationData = bounds.endActivation(msg);\n if (activationData.starty + 18 > verticalPos) {\n activationData.starty = verticalPos - 6;\n verticalPos += 12;\n }\n svgDraw.drawActivation(\n diagram,\n activationData,\n verticalPos,\n conf,\n actorActivations(msg.from.actor).length\n );\n\n bounds.insert(activationData.startx, verticalPos - 10, activationData.stopx, verticalPos);\n }\n\n // Draw the messages/signals\n let sequenceIndex = 1;\n let sequenceIndexStep = 1;\n let messagesToDraw = Array();\n messages.forEach(function (msg) {\n let loopModel, noteModel, msgModel;\n\n switch (msg.type) {\n case parser.yy.LINETYPE.NOTE:\n noteModel = msg.noteModel;\n drawNote(diagram, noteModel);\n break;\n case parser.yy.LINETYPE.ACTIVE_START:\n bounds.newActivation(msg, diagram, actors);\n break;\n case parser.yy.LINETYPE.ACTIVE_END:\n activeEnd(msg, bounds.getVerticalPos());\n break;\n case parser.yy.LINETYPE.LOOP_START:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin,\n conf.boxMargin + conf.boxTextMargin,\n (message) => bounds.newLoop(message)\n );\n break;\n case parser.yy.LINETYPE.LOOP_END:\n loopModel = bounds.endLoop();\n svgDraw.drawLoop(diagram, loopModel, 'loop', conf);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n bounds.models.addLoop(loopModel);\n break;\n case parser.yy.LINETYPE.RECT_START:\n adjustLoopHeightForWrap(loopWidths, msg, conf.boxMargin, conf.boxMargin, (message) =>\n bounds.newLoop(undefined, message.message)\n );\n break;\n case parser.yy.LINETYPE.RECT_END:\n loopModel = bounds.endLoop();\n svgDraw.drawBackgroundRect(diagram, loopModel);\n bounds.models.addLoop(loopModel);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n break;\n case parser.yy.LINETYPE.OPT_START:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin,\n conf.boxMargin + conf.boxTextMargin,\n (message) => bounds.newLoop(message)\n );\n break;\n case parser.yy.LINETYPE.OPT_END:\n loopModel = bounds.endLoop();\n svgDraw.drawLoop(diagram, loopModel, 'opt', conf);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n bounds.models.addLoop(loopModel);\n break;\n case parser.yy.LINETYPE.ALT_START:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin,\n conf.boxMargin + conf.boxTextMargin,\n (message) => bounds.newLoop(message)\n );\n break;\n case parser.yy.LINETYPE.ALT_ELSE:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin + conf.boxTextMargin,\n conf.boxMargin,\n (message) => bounds.addSectionToLoop(message)\n );\n break;\n case parser.yy.LINETYPE.ALT_END:\n loopModel = bounds.endLoop();\n svgDraw.drawLoop(diagram, loopModel, 'alt', conf);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n bounds.models.addLoop(loopModel);\n break;\n case parser.yy.LINETYPE.PAR_START:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin,\n conf.boxMargin + conf.boxTextMargin,\n (message) => bounds.newLoop(message)\n );\n break;\n case parser.yy.LINETYPE.PAR_AND:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin + conf.boxTextMargin,\n conf.boxMargin,\n (message) => bounds.addSectionToLoop(message)\n );\n break;\n case parser.yy.LINETYPE.PAR_END:\n loopModel = bounds.endLoop();\n svgDraw.drawLoop(diagram, loopModel, 'par', conf);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n bounds.models.addLoop(loopModel);\n break;\n case parser.yy.LINETYPE.AUTONUMBER:\n sequenceIndex = msg.message.start || sequenceIndex;\n sequenceIndexStep = msg.message.step || sequenceIndexStep;\n if (msg.message.visible) parser.yy.enableSequenceNumbers();\n else parser.yy.disableSequenceNumbers();\n break;\n default:\n try {\n // lastMsg = msg\n msgModel = msg.msgModel;\n msgModel.starty = bounds.getVerticalPos();\n msgModel.sequenceIndex = sequenceIndex;\n msgModel.sequenceVisible = parser.yy.showSequenceNumbers();\n let lineStarty = boundMessage(diagram, msgModel);\n messagesToDraw.push({ messageModel: msgModel, lineStarty: lineStarty });\n bounds.models.addMessage(msgModel);\n } catch (e) {\n log.error('error while drawing message', e);\n }\n }\n\n // Increment sequence counter if msg.type is a line (and not another event like activation or note, etc)\n if (\n [\n parser.yy.LINETYPE.SOLID_OPEN,\n parser.yy.LINETYPE.DOTTED_OPEN,\n parser.yy.LINETYPE.SOLID,\n parser.yy.LINETYPE.DOTTED,\n parser.yy.LINETYPE.SOLID_CROSS,\n parser.yy.LINETYPE.DOTTED_CROSS,\n parser.yy.LINETYPE.SOLID_POINT,\n parser.yy.LINETYPE.DOTTED_POINT,\n ].includes(msg.type)\n ) {\n sequenceIndex = sequenceIndex + sequenceIndexStep;\n }\n });\n\n messagesToDraw.forEach((e) => drawMessage(diagram, e.messageModel, e.lineStarty));\n\n if (conf.mirrorActors) {\n // Draw actors below diagram\n bounds.bumpVerticalPos(conf.boxMargin * 2);\n drawActors(diagram, actors, actorKeys, bounds.getVerticalPos(), conf, messages);\n bounds.bumpVerticalPos(conf.boxMargin);\n fixLifeLineHeights(diagram, bounds.getVerticalPos());\n }\n\n // only draw popups for the top row of actors.\n var requiredBoxSize = drawActorsPopup(diagram, actors, actorKeys, doc);\n\n const { bounds: box } = bounds.getBounds();\n\n // Adjust line height of actor lines now that the height of the diagram is known\n log.debug('For line height fix Querying: #' + id + ' .actor-line');\n const actorLines = selectAll('#' + id + ' .actor-line');\n actorLines.attr('y2', box.stopy);\n\n // Make sure the height of the diagram supports long menus.\n let boxHeight = box.stopy - box.starty;\n if (boxHeight < requiredBoxSize.maxHeight) {\n boxHeight = requiredBoxSize.maxHeight;\n }\n\n let height = boxHeight + 2 * conf.diagramMarginY;\n if (conf.mirrorActors) {\n height = height - conf.boxMargin + conf.bottomMarginAdj;\n }\n\n // Make sure the width of the diagram supports wide menus.\n let boxWidth = box.stopx - box.startx;\n if (boxWidth < requiredBoxSize.maxWidth) {\n boxWidth = requiredBoxSize.maxWidth;\n }\n const width = boxWidth + 2 * conf.diagramMarginX;\n\n if (title) {\n diagram\n .append('text')\n .text(title)\n .attr('x', (box.stopx - box.startx) / 2 - 2 * conf.diagramMarginX)\n .attr('y', -25);\n }\n\n configureSvgSize(diagram, height, width, conf.useMaxWidth);\n\n const extraVertForTitle = title ? 40 : 0;\n diagram.attr(\n 'viewBox',\n box.startx -\n conf.diagramMarginX +\n ' -' +\n (conf.diagramMarginY + extraVertForTitle) +\n ' ' +\n width +\n ' ' +\n (height + extraVertForTitle)\n );\n\n addSVGAccessibilityFields(parser.yy, diagram, id);\n log.debug(`models:`, bounds.models);\n};\n\n/**\n * Retrieves the max message width of each actor, supports signals (messages, loops) and notes.\n *\n * It will enumerate each given message, and will determine its text width, in relation to the actor\n * it originates from, and destined to.\n *\n * @param {any} actors - The actors map\n * @param {Array} messages - A list of message objects to iterate\n * @returns {any}\n */\nconst getMaxMessageWidthPerActor = function (actors, messages) {\n const maxMessageWidthPerActor = {};\n\n messages.forEach(function (msg) {\n if (actors[msg.to] && actors[msg.from]) {\n const actor = actors[msg.to];\n\n // If this is the first actor, and the message is left of it, no need to calculate the margin\n if (msg.placement === parser.yy.PLACEMENT.LEFTOF && !actor.prevActor) {\n return;\n }\n\n // If this is the last actor, and the message is right of it, no need to calculate the margin\n if (msg.placement === parser.yy.PLACEMENT.RIGHTOF && !actor.nextActor) {\n return;\n }\n\n const isNote = msg.placement !== undefined;\n const isMessage = !isNote;\n\n const textFont = isNote ? noteFont(conf) : messageFont(conf);\n let wrappedMessage = msg.wrap\n ? utils.wrapLabel(msg.message, conf.width - 2 * conf.wrapPadding, textFont)\n : msg.message;\n const messageDimensions = utils.calculateTextDimensions(wrappedMessage, textFont);\n const messageWidth = messageDimensions.width + 2 * conf.wrapPadding;\n\n /*\n * The following scenarios should be supported:\n *\n * - There's a message (non-note) between fromActor and toActor\n * - If fromActor is on the right and toActor is on the left, we should\n * define the toActor's margin\n * - If fromActor is on the left and toActor is on the right, we should\n * define the fromActor's margin\n * - There's a note, in which case fromActor == toActor\n * - If the note is to the left of the actor, we should define the previous actor\n * margin\n * - If the note is on the actor, we should define both the previous and next actor\n * margins, each being the half of the note size\n * - If the note is on the right of the actor, we should define the current actor\n * margin\n */\n if (isMessage && msg.from === actor.nextActor) {\n maxMessageWidthPerActor[msg.to] = Math.max(\n maxMessageWidthPerActor[msg.to] || 0,\n messageWidth\n );\n } else if (isMessage && msg.from === actor.prevActor) {\n maxMessageWidthPerActor[msg.from] = Math.max(\n maxMessageWidthPerActor[msg.from] || 0,\n messageWidth\n );\n } else if (isMessage && msg.from === msg.to) {\n maxMessageWidthPerActor[msg.from] = Math.max(\n maxMessageWidthPerActor[msg.from] || 0,\n messageWidth / 2\n );\n\n maxMessageWidthPerActor[msg.to] = Math.max(\n maxMessageWidthPerActor[msg.to] || 0,\n messageWidth / 2\n );\n } else if (msg.placement === parser.yy.PLACEMENT.RIGHTOF) {\n maxMessageWidthPerActor[msg.from] = Math.max(\n maxMessageWidthPerActor[msg.from] || 0,\n messageWidth\n );\n } else if (msg.placement === parser.yy.PLACEMENT.LEFTOF) {\n maxMessageWidthPerActor[actor.prevActor] = Math.max(\n maxMessageWidthPerActor[actor.prevActor] || 0,\n messageWidth\n );\n } else if (msg.placement === parser.yy.PLACEMENT.OVER) {\n if (actor.prevActor) {\n maxMessageWidthPerActor[actor.prevActor] = Math.max(\n maxMessageWidthPerActor[actor.prevActor] || 0,\n messageWidth / 2\n );\n }\n\n if (actor.nextActor) {\n maxMessageWidthPerActor[msg.from] = Math.max(\n maxMessageWidthPerActor[msg.from] || 0,\n messageWidth / 2\n );\n }\n }\n }\n });\n\n log.debug('maxMessageWidthPerActor:', maxMessageWidthPerActor);\n return maxMessageWidthPerActor;\n};\n\nconst getRequiredPopupWidth = function (actor) {\n let requiredPopupWidth = 0;\n const textFont = actorFont(conf);\n for (let key in actor.links) {\n let labelDimensions = utils.calculateTextDimensions(key, textFont);\n let labelWidth = labelDimensions.width + 2 * conf.wrapPadding + 2 * conf.boxMargin;\n if (requiredPopupWidth < labelWidth) {\n requiredPopupWidth = labelWidth;\n }\n }\n\n return requiredPopupWidth;\n};\n\n/**\n * This will calculate the optimal margin for each given actor, for a given actor->messageWidth map.\n *\n * An actor's margin is determined by the width of the actor, the width of the largest message that\n * originates from it, and the configured conf.actorMargin.\n *\n * @param {any} actors - The actors map to calculate margins for\n * @param {any} actorToMessageWidth - A map of actor key -> max message width it holds\n */\nconst calculateActorMargins = function (actors, actorToMessageWidth) {\n let maxHeight = 0;\n Object.keys(actors).forEach((prop) => {\n const actor = actors[prop];\n if (actor.wrap) {\n actor.description = utils.wrapLabel(\n actor.description,\n conf.width - 2 * conf.wrapPadding,\n actorFont(conf)\n );\n }\n const actDims = utils.calculateTextDimensions(actor.description, actorFont(conf));\n actor.width = actor.wrap\n ? conf.width\n : Math.max(conf.width, actDims.width + 2 * conf.wrapPadding);\n\n actor.height = actor.wrap ? Math.max(actDims.height, conf.height) : conf.height;\n maxHeight = Math.max(maxHeight, actor.height);\n });\n\n for (let actorKey in actorToMessageWidth) {\n const actor = actors[actorKey];\n\n if (!actor) {\n continue;\n }\n\n const nextActor = actors[actor.nextActor];\n\n // No need to space out an actor that doesn't have a next link\n if (!nextActor) {\n continue;\n }\n\n const messageWidth = actorToMessageWidth[actorKey];\n const actorWidth = messageWidth + conf.actorMargin - actor.width / 2 - nextActor.width / 2;\n\n actor.margin = Math.max(actorWidth, conf.actorMargin);\n }\n\n return Math.max(maxHeight, conf.height);\n};\n\nconst buildNoteModel = function (msg, actors) {\n let startx = actors[msg.from].x;\n let stopx = actors[msg.to].x;\n let shouldWrap = msg.wrap && msg.message;\n\n let textDimensions = utils.calculateTextDimensions(\n shouldWrap ? utils.wrapLabel(msg.message, conf.width, noteFont(conf)) : msg.message,\n noteFont(conf)\n );\n let noteModel = {\n width: shouldWrap\n ? conf.width\n : Math.max(conf.width, textDimensions.width + 2 * conf.noteMargin),\n height: 0,\n startx: actors[msg.from].x,\n stopx: 0,\n starty: 0,\n stopy: 0,\n message: msg.message,\n };\n if (msg.placement === parser.yy.PLACEMENT.RIGHTOF) {\n noteModel.width = shouldWrap\n ? Math.max(conf.width, textDimensions.width)\n : Math.max(\n actors[msg.from].width / 2 + actors[msg.to].width / 2,\n textDimensions.width + 2 * conf.noteMargin\n );\n noteModel.startx = startx + (actors[msg.from].width + conf.actorMargin) / 2;\n } else if (msg.placement === parser.yy.PLACEMENT.LEFTOF) {\n noteModel.width = shouldWrap\n ? Math.max(conf.width, textDimensions.width + 2 * conf.noteMargin)\n : Math.max(\n actors[msg.from].width / 2 + actors[msg.to].width / 2,\n textDimensions.width + 2 * conf.noteMargin\n );\n noteModel.startx = startx - noteModel.width + (actors[msg.from].width - conf.actorMargin) / 2;\n } else if (msg.to === msg.from) {\n textDimensions = utils.calculateTextDimensions(\n shouldWrap\n ? utils.wrapLabel(msg.message, Math.max(conf.width, actors[msg.from].width), noteFont(conf))\n : msg.message,\n noteFont(conf)\n );\n noteModel.width = shouldWrap\n ? Math.max(conf.width, actors[msg.from].width)\n : Math.max(actors[msg.from].width, conf.width, textDimensions.width + 2 * conf.noteMargin);\n noteModel.startx = startx + (actors[msg.from].width - noteModel.width) / 2;\n } else {\n noteModel.width =\n Math.abs(startx + actors[msg.from].width / 2 - (stopx + actors[msg.to].width / 2)) +\n conf.actorMargin;\n noteModel.startx =\n startx < stopx\n ? startx + actors[msg.from].width / 2 - conf.actorMargin / 2\n : stopx + actors[msg.to].width / 2 - conf.actorMargin / 2;\n }\n if (shouldWrap) {\n noteModel.message = utils.wrapLabel(\n msg.message,\n noteModel.width - 2 * conf.wrapPadding,\n noteFont(conf)\n );\n }\n log.debug(\n `NM:[${noteModel.startx},${noteModel.stopx},${noteModel.starty},${noteModel.stopy}:${noteModel.width},${noteModel.height}=${msg.message}]`\n );\n return noteModel;\n};\n\nconst buildMessageModel = function (msg, actors) {\n let process = false;\n if (\n [\n parser.yy.LINETYPE.SOLID_OPEN,\n parser.yy.LINETYPE.DOTTED_OPEN,\n parser.yy.LINETYPE.SOLID,\n parser.yy.LINETYPE.DOTTED,\n parser.yy.LINETYPE.SOLID_CROSS,\n parser.yy.LINETYPE.DOTTED_CROSS,\n parser.yy.LINETYPE.SOLID_POINT,\n parser.yy.LINETYPE.DOTTED_POINT,\n ].includes(msg.type)\n ) {\n process = true;\n }\n if (!process) {\n return {};\n }\n const fromBounds = activationBounds(msg.from, actors);\n const toBounds = activationBounds(msg.to, actors);\n const fromIdx = fromBounds[0] <= toBounds[0] ? 1 : 0;\n const toIdx = fromBounds[0] < toBounds[0] ? 0 : 1;\n const allBounds = fromBounds.concat(toBounds);\n const boundedWidth = Math.abs(toBounds[toIdx] - fromBounds[fromIdx]);\n if (msg.wrap && msg.message) {\n msg.message = utils.wrapLabel(\n msg.message,\n Math.max(boundedWidth + 2 * conf.wrapPadding, conf.width),\n messageFont(conf)\n );\n }\n const msgDims = utils.calculateTextDimensions(msg.message, messageFont(conf));\n\n return {\n width: Math.max(\n msg.wrap ? 0 : msgDims.width + 2 * conf.wrapPadding,\n boundedWidth + 2 * conf.wrapPadding,\n conf.width\n ),\n height: 0,\n startx: fromBounds[fromIdx],\n stopx: toBounds[toIdx],\n starty: 0,\n stopy: 0,\n message: msg.message,\n type: msg.type,\n wrap: msg.wrap,\n fromBounds: Math.min.apply(null, allBounds),\n toBounds: Math.max.apply(null, allBounds),\n };\n};\n\nconst calculateLoopBounds = function (messages, actors) {\n const loops = {};\n const stack = [];\n let current, noteModel, msgModel;\n\n messages.forEach(function (msg) {\n msg.id = utils.random({ length: 10 });\n switch (msg.type) {\n case parser.yy.LINETYPE.LOOP_START:\n case parser.yy.LINETYPE.ALT_START:\n case parser.yy.LINETYPE.OPT_START:\n case parser.yy.LINETYPE.PAR_START:\n stack.push({\n id: msg.id,\n msg: msg.message,\n from: Number.MAX_SAFE_INTEGER,\n to: Number.MIN_SAFE_INTEGER,\n width: 0,\n });\n break;\n case parser.yy.LINETYPE.ALT_ELSE:\n case parser.yy.LINETYPE.PAR_AND:\n if (msg.message) {\n current = stack.pop();\n loops[current.id] = current;\n loops[msg.id] = current;\n stack.push(current);\n }\n break;\n case parser.yy.LINETYPE.LOOP_END:\n case parser.yy.LINETYPE.ALT_END:\n case parser.yy.LINETYPE.OPT_END:\n case parser.yy.LINETYPE.PAR_END:\n current = stack.pop();\n loops[current.id] = current;\n break;\n case parser.yy.LINETYPE.ACTIVE_START:\n {\n const actorRect = actors[msg.from ? msg.from.actor : msg.to.actor];\n const stackedSize = actorActivations(msg.from ? msg.from.actor : msg.to.actor).length;\n const x =\n actorRect.x + actorRect.width / 2 + ((stackedSize - 1) * conf.activationWidth) / 2;\n const toAdd = {\n startx: x,\n stopx: x + conf.activationWidth,\n actor: msg.from.actor,\n enabled: true,\n };\n bounds.activations.push(toAdd);\n }\n break;\n case parser.yy.LINETYPE.ACTIVE_END:\n {\n const lastActorActivationIdx = bounds.activations\n .map((a) => a.actor)\n .lastIndexOf(msg.from.actor);\n delete bounds.activations.splice(lastActorActivationIdx, 1)[0];\n }\n break;\n }\n const isNote = msg.placement !== undefined;\n if (isNote) {\n noteModel = buildNoteModel(msg, actors);\n msg.noteModel = noteModel;\n stack.forEach((stk) => {\n current = stk;\n current.from = Math.min(current.from, noteModel.startx);\n current.to = Math.max(current.to, noteModel.startx + noteModel.width);\n current.width =\n Math.max(current.width, Math.abs(current.from - current.to)) - conf.labelBoxWidth;\n });\n } else {\n msgModel = buildMessageModel(msg, actors);\n msg.msgModel = msgModel;\n if (msgModel.startx && msgModel.stopx && stack.length > 0) {\n stack.forEach((stk) => {\n current = stk;\n if (msgModel.startx === msgModel.stopx) {\n let from = actors[msg.from];\n let to = actors[msg.to];\n current.from = Math.min(\n from.x - msgModel.width / 2,\n from.x - from.width / 2,\n current.from\n );\n current.to = Math.max(to.x + msgModel.width / 2, to.x + from.width / 2, current.to);\n current.width =\n Math.max(current.width, Math.abs(current.to - current.from)) - conf.labelBoxWidth;\n } else {\n current.from = Math.min(msgModel.startx, current.from);\n current.to = Math.max(msgModel.stopx, current.to);\n current.width = Math.max(current.width, msgModel.width) - conf.labelBoxWidth;\n }\n });\n }\n }\n });\n bounds.activations = [];\n log.debug('Loop type widths:', loops);\n return loops;\n};\n\nexport default {\n bounds,\n drawActors,\n drawActorsPopup,\n setConf,\n draw,\n};\n","import { log } from '../../logger';\nimport { generateId } from '../../utils';\nimport mermaidAPI from '../../mermaidAPI';\nimport common from '../common/common';\nimport * as configApi from '../../config';\nimport {\n setTitle,\n getTitle,\n getAccDescription,\n setAccDescription,\n clear as commonClear,\n} from '../../commonDb';\n\nconst sanitizeText = (txt) => common.sanitizeText(txt, configApi.getConfig());\n\nconst clone = (o) => JSON.parse(JSON.stringify(o));\nlet rootDoc = [];\n\nexport const parseDirective = function (statement, context, type) {\n mermaidAPI.parseDirective(this, statement, context, type);\n};\n\nconst setRootDoc = (o) => {\n log.info('Setting root doc', o);\n // rootDoc = { id: 'root', doc: o };\n rootDoc = o;\n};\n\nconst getRootDoc = () => rootDoc;\n\nconst docTranslator = (parent, node, first) => {\n if (node.stmt === 'relation') {\n docTranslator(parent, node.state1, true);\n docTranslator(parent, node.state2, false);\n } else {\n if (node.stmt === 'state') {\n if (node.id === '[*]') {\n node.id = first ? parent.id + '_start' : parent.id + '_end';\n node.start = first;\n }\n }\n\n if (node.doc) {\n const doc = [];\n // Check for concurrency\n let i = 0;\n let currentDoc = [];\n for (i = 0; i < node.doc.length; i++) {\n if (node.doc[i].type === 'divider') {\n // debugger;\n const newNode = clone(node.doc[i]);\n newNode.doc = clone(currentDoc);\n doc.push(newNode);\n currentDoc = [];\n } else {\n currentDoc.push(node.doc[i]);\n }\n }\n\n // If any divider was encountered\n if (doc.length > 0 && currentDoc.length > 0) {\n const newNode = {\n stmt: 'state',\n id: generateId(),\n type: 'divider',\n doc: clone(currentDoc),\n };\n doc.push(clone(newNode));\n node.doc = doc;\n }\n\n node.doc.forEach((docNode) => docTranslator(node, docNode, true));\n }\n }\n};\nconst getRootDocV2 = () => {\n docTranslator({ id: 'root' }, { id: 'root', doc: rootDoc }, true);\n return { id: 'root', doc: rootDoc };\n // Here\n};\n\nconst extract = (_doc) => {\n // const res = { states: [], relations: [] };\n let doc;\n if (_doc.doc) {\n doc = _doc.doc;\n } else {\n doc = _doc;\n }\n // let doc = root.doc;\n // if (!doc) {\n // doc = root;\n // }\n log.info(doc);\n clear();\n\n log.info('Extract', doc);\n\n doc.forEach((item) => {\n if (item.stmt === 'state') {\n addState(item.id, item.type, item.doc, item.description, item.note);\n }\n if (item.stmt === 'relation') {\n addRelation(item.state1.id, item.state2.id, item.description);\n }\n });\n};\n\nconst newDoc = () => {\n return {\n relations: [],\n states: {},\n documents: {},\n };\n};\n\nlet documents = {\n root: newDoc(),\n};\n\nlet currentDocument = documents.root;\n\nlet startCnt = 0;\nlet endCnt = 0; // eslint-disable-line\n// let stateCnt = 0;\n\nlet title = 'State diagram';\nlet description = '';\n\n/**\n * Function called by parser when a node definition has been found.\n *\n * @param {any} id\n * @param {any} type\n * @param {any} doc\n * @param {any} descr\n * @param {any} note\n */\nexport const addState = function (id, type, doc, descr, note) {\n if (typeof currentDocument.states[id] === 'undefined') {\n currentDocument.states[id] = {\n id: id,\n descriptions: [],\n type,\n doc,\n note,\n };\n } else {\n if (!currentDocument.states[id].doc) {\n currentDocument.states[id].doc = doc;\n }\n if (!currentDocument.states[id].type) {\n currentDocument.states[id].type = type;\n }\n }\n if (descr) {\n log.info('Adding state ', id, descr);\n if (typeof descr === 'string') addDescription(id, descr.trim());\n\n if (typeof descr === 'object') {\n descr.forEach((des) => addDescription(id, des.trim()));\n }\n }\n\n if (note) {\n currentDocument.states[id].note = note;\n currentDocument.states[id].note.text = common.sanitizeText(\n currentDocument.states[id].note.text,\n configApi.getConfig()\n );\n }\n};\n\nexport const clear = function () {\n documents = {\n root: newDoc(),\n };\n currentDocument = documents.root;\n\n currentDocument = documents.root;\n\n startCnt = 0;\n endCnt = 0; // eslint-disable-line\n classes = [];\n commonClear();\n};\n\nexport const getState = function (id) {\n return currentDocument.states[id];\n};\n\nexport const getStates = function () {\n return currentDocument.states;\n};\nexport const logDocuments = function () {\n log.info('Documents = ', documents);\n};\nexport const getRelations = function () {\n return currentDocument.relations;\n};\n\nexport const addRelation = function (_id1, _id2, title) {\n let id1 = _id1;\n let id2 = _id2;\n let type1 = 'default';\n let type2 = 'default';\n if (_id1 === '[*]') {\n startCnt++;\n id1 = 'start' + startCnt;\n type1 = 'start';\n }\n if (_id2 === '[*]') {\n endCnt++;\n id2 = 'end' + startCnt;\n type2 = 'end';\n }\n addState(id1, type1);\n addState(id2, type2);\n currentDocument.relations.push({\n id1,\n id2,\n title: common.sanitizeText(title, configApi.getConfig()),\n });\n};\n\nconst addDescription = function (id, _descr) {\n const theState = currentDocument.states[id];\n let descr = _descr;\n if (descr[0] === ':') {\n descr = descr.substr(1).trim();\n }\n theState.descriptions.push(common.sanitizeText(descr, configApi.getConfig()));\n};\n\nexport const cleanupLabel = function (label) {\n if (label.substring(0, 1) === ':') {\n return label.substr(2).trim();\n } else {\n return label.trim();\n }\n};\n\nexport const lineType = {\n LINE: 0,\n DOTTED_LINE: 1,\n};\n\nlet dividerCnt = 0;\nconst getDividerId = () => {\n dividerCnt++;\n return 'divider-id-' + dividerCnt;\n};\n\nlet classes = [];\n\nconst getClasses = () => classes;\n\nlet direction = 'TB';\nconst getDirection = () => direction;\nconst setDirection = (dir) => {\n direction = dir;\n};\n\nexport const relationType = {\n AGGREGATION: 0,\n EXTENSION: 1,\n COMPOSITION: 2,\n DEPENDENCY: 3,\n};\n\nconst trimColon = (str) => (str && str[0] === ':' ? str.substr(1).trim() : str.trim());\n\nexport default {\n parseDirective,\n getConfig: () => configApi.getConfig().state,\n addState,\n clear,\n getState,\n getStates,\n getRelations,\n getClasses,\n getDirection,\n addRelation,\n getDividerId,\n setDirection,\n // addDescription,\n cleanupLabel,\n lineType,\n relationType,\n logDocuments,\n getRootDoc,\n setRootDoc,\n getRootDocV2,\n extract,\n trimColon,\n getTitle,\n setTitle,\n getAccDescription,\n setAccDescription,\n};\n","const idCache = {};\n\nexport const set = (key, val) => {\n idCache[key] = val;\n};\n\nexport const get = (k) => idCache[k];\nexport const keys = () => Object.keys(idCache);\nexport const size = () => keys().length;\n\nexport default {\n get,\n set,\n keys,\n size,\n};\n","import { line, curveBasis } from 'd3';\nimport idCache from './id-cache.js';\nimport stateDb from './stateDb';\nimport utils from '../../utils';\nimport common from '../common/common';\nimport { getConfig } from '../../config';\nimport { log } from '../../logger';\n\n/**\n * Draws a start state as a black circle\n *\n * @param {any} g\n */\nexport const drawStartState = (g) =>\n g\n .append('circle')\n // .style('stroke', 'black')\n // .style('fill', 'black')\n .attr('class', 'start-state')\n .attr('r', getConfig().state.sizeUnit)\n .attr('cx', getConfig().state.padding + getConfig().state.sizeUnit)\n .attr('cy', getConfig().state.padding + getConfig().state.sizeUnit);\n\n/**\n * Draws a start state as a black circle\n *\n * @param {any} g\n */\nexport const drawDivider = (g) =>\n g\n .append('line')\n .style('stroke', 'grey')\n .style('stroke-dasharray', '3')\n .attr('x1', getConfig().state.textHeight)\n .attr('class', 'divider')\n .attr('x2', getConfig().state.textHeight * 2)\n .attr('y1', 0)\n .attr('y2', 0);\n\n/**\n * Draws a an end state as a black circle\n *\n * @param {any} g\n * @param {any} stateDef\n */\nexport const drawSimpleState = (g, stateDef) => {\n const state = g\n .append('text')\n .attr('x', 2 * getConfig().state.padding)\n .attr('y', getConfig().state.textHeight + 2 * getConfig().state.padding)\n .attr('font-size', getConfig().state.fontSize)\n .attr('class', 'state-title')\n .text(stateDef.id);\n\n const classBox = state.node().getBBox();\n g.insert('rect', ':first-child')\n .attr('x', getConfig().state.padding)\n .attr('y', getConfig().state.padding)\n .attr('width', classBox.width + 2 * getConfig().state.padding)\n .attr('height', classBox.height + 2 * getConfig().state.padding)\n .attr('rx', getConfig().state.radius);\n\n return state;\n};\n\n/**\n * Draws a state with descriptions\n *\n * @param {any} g\n * @param {any} stateDef\n * @returns\n */\nexport const drawDescrState = (g, stateDef) => {\n const addTspan = function (textEl, txt, isFirst) {\n const tSpan = textEl\n .append('tspan')\n .attr('x', 2 * getConfig().state.padding)\n .text(txt);\n if (!isFirst) {\n tSpan.attr('dy', getConfig().state.textHeight);\n }\n };\n const title = g\n .append('text')\n .attr('x', 2 * getConfig().state.padding)\n .attr('y', getConfig().state.textHeight + 1.3 * getConfig().state.padding)\n .attr('font-size', getConfig().state.fontSize)\n .attr('class', 'state-title')\n .text(stateDef.descriptions[0]);\n\n const titleBox = title.node().getBBox();\n const titleHeight = titleBox.height;\n\n const description = g\n .append('text') // text label for the x axis\n .attr('x', getConfig().state.padding)\n .attr(\n 'y',\n titleHeight +\n getConfig().state.padding * 0.4 +\n getConfig().state.dividerMargin +\n getConfig().state.textHeight\n )\n .attr('class', 'state-description');\n\n let isFirst = true;\n let isSecond = true;\n stateDef.descriptions.forEach(function (descr) {\n if (!isFirst) {\n addTspan(description, descr, isSecond);\n isSecond = false;\n }\n isFirst = false;\n });\n\n const descrLine = g\n .append('line') // text label for the x axis\n .attr('x1', getConfig().state.padding)\n .attr('y1', getConfig().state.padding + titleHeight + getConfig().state.dividerMargin / 2)\n .attr('y2', getConfig().state.padding + titleHeight + getConfig().state.dividerMargin / 2)\n .attr('class', 'descr-divider');\n const descrBox = description.node().getBBox();\n const width = Math.max(descrBox.width, titleBox.width);\n\n descrLine.attr('x2', width + 3 * getConfig().state.padding);\n // const classBox = title.node().getBBox();\n\n g.insert('rect', ':first-child')\n .attr('x', getConfig().state.padding)\n .attr('y', getConfig().state.padding)\n .attr('width', width + 2 * getConfig().state.padding)\n .attr('height', descrBox.height + titleHeight + 2 * getConfig().state.padding)\n .attr('rx', getConfig().state.radius);\n\n return g;\n};\n\n/** Adds the creates a box around the existing content and adds a panel for the id on top of the content. */\n/**\n * Function that creates an title row and a frame around a substate for a composit state diagram.\n * The function returns a new d3 svg object with updated width and height properties;\n *\n * @param {any} g The d3 svg object for the substate to framed\n * @param {any} stateDef The info about the\n * @param {any} altBkg\n */\nexport const addTitleAndBox = (g, stateDef, altBkg) => {\n const pad = getConfig().state.padding;\n const dblPad = 2 * getConfig().state.padding;\n const orgBox = g.node().getBBox();\n const orgWidth = orgBox.width;\n const orgX = orgBox.x;\n\n const title = g\n .append('text')\n .attr('x', 0)\n .attr('y', getConfig().state.titleShift)\n .attr('font-size', getConfig().state.fontSize)\n .attr('class', 'state-title')\n .text(stateDef.id);\n\n const titleBox = title.node().getBBox();\n const titleWidth = titleBox.width + dblPad;\n let width = Math.max(titleWidth, orgWidth); // + dblPad;\n if (width === orgWidth) {\n width = width + dblPad;\n }\n let startX;\n // const lineY = 1 - getConfig().state.textHeight;\n // const descrLine = g\n // .append('line') // text label for the x axis\n // .attr('x1', 0)\n // .attr('y1', lineY)\n // .attr('y2', lineY)\n // .attr('class', 'descr-divider');\n\n const graphBox = g.node().getBBox();\n // descrLine.attr('x2', graphBox.width + getConfig().state.padding);\n\n if (stateDef.doc) {\n // cnsole.warn(\n // stateDef.id,\n // 'orgX: ',\n // orgX,\n // 'width: ',\n // width,\n // 'titleWidth: ',\n // titleWidth,\n // 'orgWidth: ',\n // orgWidth,\n // 'width',\n // width\n // );\n }\n\n startX = orgX - pad;\n if (titleWidth > orgWidth) {\n startX = (orgWidth - width) / 2 + pad;\n }\n if (Math.abs(orgX - graphBox.x) < pad) {\n if (titleWidth > orgWidth) {\n startX = orgX - (titleWidth - orgWidth) / 2;\n }\n }\n\n const lineY = 1 - getConfig().state.textHeight;\n // White color\n g.insert('rect', ':first-child')\n .attr('x', startX)\n .attr('y', lineY)\n .attr('class', altBkg ? 'alt-composit' : 'composit')\n .attr('width', width)\n .attr(\n 'height',\n graphBox.height + getConfig().state.textHeight + getConfig().state.titleShift + 1\n )\n .attr('rx', '0');\n\n title.attr('x', startX + pad);\n if (titleWidth <= orgWidth) title.attr('x', orgX + (width - dblPad) / 2 - titleWidth / 2 + pad);\n\n // Title background\n g.insert('rect', ':first-child')\n .attr('x', startX)\n .attr(\n 'y',\n getConfig().state.titleShift - getConfig().state.textHeight - getConfig().state.padding\n )\n .attr('width', width)\n // Just needs to be higher then the descr line, will be clipped by the white color box\n .attr('height', getConfig().state.textHeight * 3)\n .attr('rx', getConfig().state.radius);\n\n // Full background\n g.insert('rect', ':first-child')\n .attr('x', startX)\n .attr(\n 'y',\n getConfig().state.titleShift - getConfig().state.textHeight - getConfig().state.padding\n )\n .attr('width', width)\n .attr('height', graphBox.height + 3 + 2 * getConfig().state.textHeight)\n .attr('rx', getConfig().state.radius);\n\n return g;\n};\n\nconst drawEndState = (g) => {\n g.append('circle')\n // .style('stroke', 'black')\n // .style('fill', 'white')\n .attr('class', 'end-state-outer')\n .attr('r', getConfig().state.sizeUnit + getConfig().state.miniPadding)\n .attr(\n 'cx',\n getConfig().state.padding + getConfig().state.sizeUnit + getConfig().state.miniPadding\n )\n .attr(\n 'cy',\n getConfig().state.padding + getConfig().state.sizeUnit + getConfig().state.miniPadding\n );\n\n return (\n g\n .append('circle')\n // .style('stroke', 'black')\n // .style('fill', 'black')\n .attr('class', 'end-state-inner')\n .attr('r', getConfig().state.sizeUnit)\n .attr('cx', getConfig().state.padding + getConfig().state.sizeUnit + 2)\n .attr('cy', getConfig().state.padding + getConfig().state.sizeUnit + 2)\n );\n};\nconst drawForkJoinState = (g, stateDef) => {\n let width = getConfig().state.forkWidth;\n let height = getConfig().state.forkHeight;\n\n if (stateDef.parentId) {\n let tmp = width;\n width = height;\n height = tmp;\n }\n return g\n .append('rect')\n .style('stroke', 'black')\n .style('fill', 'black')\n .attr('width', width)\n .attr('height', height)\n .attr('x', getConfig().state.padding)\n .attr('y', getConfig().state.padding);\n};\n\nexport const drawText = function (elem, textData) {\n // Remove and ignore br:s\n const nText = textData.text.replace(common.lineBreakRegex, ' ');\n\n const textElem = elem.append('text');\n textElem.attr('x', textData.x);\n textElem.attr('y', textData.y);\n textElem.style('text-anchor', textData.anchor);\n textElem.attr('fill', textData.fill);\n if (typeof textData.class !== 'undefined') {\n textElem.attr('class', textData.class);\n }\n\n const span = textElem.append('tspan');\n span.attr('x', textData.x + textData.textMargin * 2);\n span.attr('fill', textData.fill);\n span.text(nText);\n\n return textElem;\n};\n\nconst _drawLongText = (_text, x, y, g) => {\n let textHeight = 0;\n\n const textElem = g.append('text');\n textElem.style('text-anchor', 'start');\n textElem.attr('class', 'noteText');\n\n let text = _text.replace(/\\r\\n/g, '<br/>');\n text = text.replace(/\\n/g, '<br/>');\n const lines = text.split(common.lineBreakRegex);\n\n let tHeight = 1.25 * getConfig().state.noteMargin;\n for (const line of lines) {\n const txt = line.trim();\n\n if (txt.length > 0) {\n const span = textElem.append('tspan');\n span.text(txt);\n if (tHeight === 0) {\n const textBounds = span.node().getBBox();\n tHeight += textBounds.height;\n }\n textHeight += tHeight;\n span.attr('x', x + getConfig().state.noteMargin);\n span.attr('y', y + textHeight + 1.25 * getConfig().state.noteMargin);\n }\n }\n return { textWidth: textElem.node().getBBox().width, textHeight };\n};\n\n/**\n * Draws a note to the diagram\n *\n * @param text - The text of the given note.\n * @param g - The element the note is attached to.\n */\n\nexport const drawNote = (text, g) => {\n g.attr('class', 'state-note');\n const note = g.append('rect').attr('x', 0).attr('y', getConfig().state.padding);\n const rectElem = g.append('g');\n\n const { textWidth, textHeight } = _drawLongText(text, 0, 0, rectElem);\n note.attr('height', textHeight + 2 * getConfig().state.noteMargin);\n note.attr('width', textWidth + getConfig().state.noteMargin * 2);\n\n return note;\n};\n\n/**\n * Starting point for drawing a state. The function finds out the specifics about the state and\n * renders with approprtiate function.\n *\n * @param {any} elem\n * @param {any} stateDef\n */\n\nexport const drawState = function (elem, stateDef) {\n const id = stateDef.id;\n const stateInfo = {\n id: id,\n label: stateDef.id,\n width: 0,\n height: 0,\n };\n\n const g = elem.append('g').attr('id', id).attr('class', 'stateGroup');\n\n if (stateDef.type === 'start') drawStartState(g);\n if (stateDef.type === 'end') drawEndState(g);\n if (stateDef.type === 'fork' || stateDef.type === 'join') drawForkJoinState(g, stateDef);\n if (stateDef.type === 'note') drawNote(stateDef.note.text, g);\n if (stateDef.type === 'divider') drawDivider(g);\n if (stateDef.type === 'default' && stateDef.descriptions.length === 0)\n drawSimpleState(g, stateDef);\n if (stateDef.type === 'default' && stateDef.descriptions.length > 0) drawDescrState(g, stateDef);\n\n const stateBox = g.node().getBBox();\n stateInfo.width = stateBox.width + 2 * getConfig().state.padding;\n stateInfo.height = stateBox.height + 2 * getConfig().state.padding;\n\n idCache.set(id, stateInfo);\n // stateCnt++;\n return stateInfo;\n};\n\nlet edgeCount = 0;\nexport const drawEdge = function (elem, path, relation) {\n const getRelationType = function (type) {\n switch (type) {\n case stateDb.relationType.AGGREGATION:\n return 'aggregation';\n case stateDb.relationType.EXTENSION:\n return 'extension';\n case stateDb.relationType.COMPOSITION:\n return 'composition';\n case stateDb.relationType.DEPENDENCY:\n return 'dependency';\n }\n };\n\n path.points = path.points.filter((p) => !Number.isNaN(p.y));\n\n // The data for our line\n const lineData = path.points;\n\n // This is the accessor function we talked about above\n const lineFunction = line()\n .x(function (d) {\n return d.x;\n })\n .y(function (d) {\n return d.y;\n })\n .curve(curveBasis);\n\n const svgPath = elem\n .append('path')\n .attr('d', lineFunction(lineData))\n .attr('id', 'edge' + edgeCount)\n .attr('class', 'transition');\n let url = '';\n if (getConfig().state.arrowMarkerAbsolute) {\n url =\n window.location.protocol +\n '//' +\n window.location.host +\n window.location.pathname +\n window.location.search;\n url = url.replace(/\\(/g, '\\\\(');\n url = url.replace(/\\)/g, '\\\\)');\n }\n\n svgPath.attr(\n 'marker-end',\n 'url(' + url + '#' + getRelationType(stateDb.relationType.DEPENDENCY) + 'End' + ')'\n );\n\n if (typeof relation.title !== 'undefined') {\n const label = elem.append('g').attr('class', 'stateLabel');\n\n const { x, y } = utils.calcLabelPosition(path.points);\n\n const rows = common.getRows(relation.title);\n\n let titleHeight = 0;\n const titleRows = [];\n let maxWidth = 0;\n let minX = 0;\n\n for (let i = 0; i <= rows.length; i++) {\n const title = label\n .append('text')\n .attr('text-anchor', 'middle')\n .text(rows[i])\n .attr('x', x)\n .attr('y', y + titleHeight);\n\n const boundstmp = title.node().getBBox();\n maxWidth = Math.max(maxWidth, boundstmp.width);\n minX = Math.min(minX, boundstmp.x);\n\n log.info(boundstmp.x, x, y + titleHeight);\n\n if (titleHeight === 0) {\n const titleBox = title.node().getBBox();\n titleHeight = titleBox.height;\n log.info('Title height', titleHeight, y);\n }\n titleRows.push(title);\n }\n\n let boxHeight = titleHeight * rows.length;\n if (rows.length > 1) {\n const heightAdj = (rows.length - 1) * titleHeight * 0.5;\n\n titleRows.forEach((title, i) => title.attr('y', y + i * titleHeight - heightAdj));\n boxHeight = titleHeight * rows.length;\n }\n\n const bounds = label.node().getBBox();\n\n label\n .insert('rect', ':first-child')\n .attr('class', 'box')\n .attr('x', x - maxWidth / 2 - getConfig().state.padding / 2)\n .attr('y', y - boxHeight / 2 - getConfig().state.padding / 2 - 3.5)\n .attr('width', maxWidth + getConfig().state.padding)\n .attr('height', boxHeight + getConfig().state.padding);\n\n log.info(bounds);\n\n //label.attr('transform', '0 -' + (bounds.y / 2));\n\n // Debug points\n // path.points.forEach(point => {\n // g.append('circle')\n // .style('stroke', 'red')\n // .style('fill', 'red')\n // .attr('r', 1)\n // .attr('cx', point.x)\n // .attr('cy', point.y);\n // });\n // g.append('circle')\n // .style('stroke', 'blue')\n // .style('fill', 'blue')\n // .attr('r', 1)\n // .attr('cx', x)\n // .attr('cy', y);\n }\n\n edgeCount++;\n};\n","import { select } from 'd3';\nimport dagre from 'dagre';\nimport graphlib from 'graphlib';\nimport { log } from '../../logger';\nimport stateDb from './stateDb';\nimport common from '../common/common';\nimport { parser } from './parser/stateDiagram';\n// import idCache from './id-cache';\nimport { drawState, addTitleAndBox, drawEdge } from './shapes';\nimport { getConfig } from '../../config';\nimport { configureSvgSize } from '../../utils';\nimport addSVGAccessibilityFields from '../../accessibility';\n\nparser.yy = stateDb;\n\n// TODO Move conf object to main conf in mermaidAPI\nlet conf;\n\nconst transformationLog = {};\n\nexport const setConf = function () {};\n\n/**\n * Setup arrow head and define the marker. The result is appended to the svg.\n *\n * @param {any} elem\n */\nconst insertMarkers = function (elem) {\n elem\n .append('defs')\n .append('marker')\n .attr('id', 'dependencyEnd')\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 19,7 L9,13 L14,7 L9,1 Z');\n};\n\n/**\n * Draws a flowchart in the tag with id: id based on the graph definition in text.\n *\n * @param {any} text\n * @param {any} id\n */\nexport const draw = function (text, id) {\n conf = getConfig().state;\n const securityLevel = getConfig().securityLevel;\n // Handle root and ocument for when rendering in sanbox mode\n let sandboxElement;\n if (securityLevel === 'sandbox') {\n sandboxElement = select('#i' + id);\n }\n const root =\n securityLevel === 'sandbox'\n ? select(sandboxElement.nodes()[0].contentDocument.body)\n : select('body');\n const doc = securityLevel === 'sandbox' ? sandboxElement.nodes()[0].contentDocument : document;\n\n parser.yy.clear();\n parser.parse(text);\n log.debug('Rendering diagram ' + text);\n\n // Fetch the default direction, use TD if none was found\n const diagram = root.select(`[id='${id}']`);\n insertMarkers(diagram);\n\n // Layout graph, Create a new directed graph\n const graph = new graphlib.Graph({\n multigraph: true,\n compound: true,\n // acyclicer: 'greedy',\n rankdir: 'RL',\n // ranksep: '20'\n });\n\n // Default to assigning a new object as a label for each new edge.\n graph.setDefaultEdgeLabel(function () {\n return {};\n });\n\n const rootDoc = stateDb.getRootDoc();\n renderDoc(rootDoc, diagram, undefined, false, root, doc);\n\n const padding = conf.padding;\n const bounds = diagram.node().getBBox();\n\n const width = bounds.width + padding * 2;\n const height = bounds.height + padding * 2;\n\n // zoom in a bit\n const svgWidth = width * 1.75;\n configureSvgSize(diagram, height, svgWidth, conf.useMaxWidth);\n\n diagram.attr(\n 'viewBox',\n `${bounds.x - conf.padding} ${bounds.y - conf.padding} ` + width + ' ' + height\n );\n addSVGAccessibilityFields(parser.yy, diagram, id);\n};\nconst getLabelWidth = (text) => {\n return text ? text.length * conf.fontSizeFactor : 1;\n};\n\nconst renderDoc = (doc, diagram, parentId, altBkg, root, domDocument) => {\n // Layout graph, Create a new directed graph\n const graph = new graphlib.Graph({\n compound: true,\n multigraph: true,\n });\n\n let i;\n let edgeFreeDoc = true;\n for (i = 0; i < doc.length; i++) {\n if (doc[i].stmt === 'relation') {\n edgeFreeDoc = false;\n break;\n }\n }\n\n // Set an object for the graph label\n if (parentId)\n graph.setGraph({\n rankdir: 'LR',\n multigraph: true,\n compound: true,\n // acyclicer: 'greedy',\n ranker: 'tight-tree',\n ranksep: edgeFreeDoc ? 1 : conf.edgeLengthFactor,\n nodeSep: edgeFreeDoc ? 1 : 50,\n isMultiGraph: true,\n // ranksep: 5,\n // nodesep: 1\n });\n else {\n graph.setGraph({\n rankdir: 'TB',\n multigraph: true,\n compound: true,\n // isCompound: true,\n // acyclicer: 'greedy',\n // ranker: 'longest-path'\n ranksep: edgeFreeDoc ? 1 : conf.edgeLengthFactor,\n nodeSep: edgeFreeDoc ? 1 : 50,\n ranker: 'tight-tree',\n // ranker: 'network-simplex'\n isMultiGraph: true,\n });\n }\n\n // Default to assigning a new object as a label for each new edge.\n graph.setDefaultEdgeLabel(function () {\n return {};\n });\n\n stateDb.extract(doc);\n const states = stateDb.getStates();\n const relations = stateDb.getRelations();\n\n const keys = Object.keys(states);\n\n let first = true;\n\n for (let i = 0; i < keys.length; i++) {\n const stateDef = states[keys[i]];\n\n if (parentId) {\n stateDef.parentId = parentId;\n }\n\n let node;\n if (stateDef.doc) {\n let sub = diagram.append('g').attr('id', stateDef.id).attr('class', 'stateGroup');\n node = renderDoc(stateDef.doc, sub, stateDef.id, !altBkg, root, domDocument);\n\n if (first) {\n // first = false;\n sub = addTitleAndBox(sub, stateDef, altBkg);\n let boxBounds = sub.node().getBBox();\n node.width = boxBounds.width;\n node.height = boxBounds.height + conf.padding / 2;\n transformationLog[stateDef.id] = { y: conf.compositTitleSize };\n } else {\n // sub = addIdAndBox(sub, stateDef);\n let boxBounds = sub.node().getBBox();\n node.width = boxBounds.width;\n node.height = boxBounds.height;\n // transformationLog[stateDef.id] = { y: conf.compositTitleSize };\n }\n } else {\n node = drawState(diagram, stateDef, graph);\n }\n\n if (stateDef.note) {\n // Draw note note\n const noteDef = {\n descriptions: [],\n id: stateDef.id + '-note',\n note: stateDef.note,\n type: 'note',\n };\n const note = drawState(diagram, noteDef, graph);\n\n // graph.setNode(node.id, node);\n if (stateDef.note.position === 'left of') {\n graph.setNode(node.id + '-note', note);\n graph.setNode(node.id, node);\n } else {\n graph.setNode(node.id, node);\n graph.setNode(node.id + '-note', note);\n }\n // graph.setNode(node.id);\n graph.setParent(node.id, node.id + '-group');\n graph.setParent(node.id + '-note', node.id + '-group');\n } else {\n // Add nodes to the graph. The first argument is the node id. The second is\n // metadata about the node. In this case we're going to add labels to each of\n // our nodes.\n graph.setNode(node.id, node);\n }\n }\n\n log.debug('Count=', graph.nodeCount(), graph);\n let cnt = 0;\n relations.forEach(function (relation) {\n cnt++;\n log.debug('Setting edge', relation);\n graph.setEdge(\n relation.id1,\n relation.id2,\n {\n relation: relation,\n width: getLabelWidth(relation.title),\n height: conf.labelHeight * common.getRows(relation.title).length,\n labelpos: 'c',\n },\n 'id' + cnt\n );\n });\n\n dagre.layout(graph);\n\n log.debug('Graph after layout', graph.nodes());\n const svgElem = diagram.node();\n\n graph.nodes().forEach(function (v) {\n if (typeof v !== 'undefined' && typeof graph.node(v) !== 'undefined') {\n log.warn('Node ' + v + ': ' + JSON.stringify(graph.node(v)));\n root\n .select('#' + svgElem.id + ' #' + v)\n .attr(\n 'transform',\n 'translate(' +\n (graph.node(v).x - graph.node(v).width / 2) +\n ',' +\n (graph.node(v).y +\n (transformationLog[v] ? transformationLog[v].y : 0) -\n graph.node(v).height / 2) +\n ' )'\n );\n root\n .select('#' + svgElem.id + ' #' + v)\n .attr('data-x-shift', graph.node(v).x - graph.node(v).width / 2);\n const dividers = domDocument.querySelectorAll('#' + svgElem.id + ' #' + v + ' .divider');\n dividers.forEach((divider) => {\n const parent = divider.parentElement;\n let pWidth = 0;\n let pShift = 0;\n if (parent) {\n if (parent.parentElement) pWidth = parent.parentElement.getBBox().width;\n pShift = parseInt(parent.getAttribute('data-x-shift'), 10);\n if (Number.isNaN(pShift)) {\n pShift = 0;\n }\n }\n divider.setAttribute('x1', 0 - pShift + 8);\n divider.setAttribute('x2', pWidth - pShift - 8);\n });\n } else {\n log.debug('No Node ' + v + ': ' + JSON.stringify(graph.node(v)));\n }\n });\n\n let stateBox = svgElem.getBBox();\n\n graph.edges().forEach(function (e) {\n if (typeof e !== 'undefined' && typeof graph.edge(e) !== 'undefined') {\n log.debug('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(graph.edge(e)));\n drawEdge(diagram, graph.edge(e), graph.edge(e).relation);\n }\n });\n\n stateBox = svgElem.getBBox();\n\n const stateInfo = {\n id: parentId ? parentId : 'root',\n label: parentId ? parentId : 'root',\n width: 0,\n height: 0,\n };\n\n stateInfo.width = stateBox.width + 2 * conf.padding;\n stateInfo.height = stateBox.height + 2 * conf.padding;\n\n log.debug('Doc rendered', stateInfo, graph);\n return stateInfo;\n};\n\nexport default {\n setConf,\n draw,\n};\n","import graphlib from 'graphlib';\nimport { select } from 'd3';\nimport stateDb from './stateDb';\nimport state from './parser/stateDiagram';\nimport { getConfig } from '../../config';\nimport { render } from '../../dagre-wrapper/index.js';\nimport { log } from '../../logger';\nimport { configureSvgSize } from '../../utils';\nimport common from '../common/common';\nimport addSVGAccessibilityFields from '../../accessibility';\n\nconst conf = {};\nexport const setConf = function (cnf) {\n const keys = Object.keys(cnf);\n for (let i = 0; i < keys.length; i++) {\n conf[keys[i]] = cnf[keys[i]];\n }\n};\n\nlet nodeDb = {};\n\n/**\n * Returns the all the styles from classDef statements in the graph definition.\n *\n * @param {any} text\n * @returns {object} ClassDef styles\n */\nexport const getClasses = function (text) {\n log.trace('Extracting classes');\n stateDb.clear();\n const parser = state.parser;\n parser.yy = stateDb;\n\n // Parse the graph definition\n parser.parse(text);\n return stateDb.getClasses();\n};\n\nconst setupNode = (g, parent, node, altFlag) => {\n // Add the node\n if (node.id !== 'root') {\n let shape = 'rect';\n if (node.start === true) {\n shape = 'start';\n }\n if (node.start === false) {\n shape = 'end';\n }\n if (node.type !== 'default') {\n shape = node.type;\n }\n\n if (!nodeDb[node.id]) {\n nodeDb[node.id] = {\n id: node.id,\n shape,\n description: common.sanitizeText(node.id, getConfig()),\n classes: 'statediagram-state',\n };\n }\n\n // Build of the array of description strings accordinging\n if (node.description) {\n if (Array.isArray(nodeDb[node.id].description)) {\n // There already is an array of strings,add to it\n nodeDb[node.id].shape = 'rectWithTitle';\n nodeDb[node.id].description.push(node.description);\n } else {\n if (nodeDb[node.id].description.length > 0) {\n // if there is a description already transformit to an array\n nodeDb[node.id].shape = 'rectWithTitle';\n if (nodeDb[node.id].description === node.id) {\n // If the previous description was the is, remove it\n nodeDb[node.id].description = [node.description];\n } else {\n nodeDb[node.id].description = [nodeDb[node.id].description, node.description];\n }\n } else {\n nodeDb[node.id].shape = 'rect';\n nodeDb[node.id].description = node.description;\n }\n }\n nodeDb[node.id].description = common.sanitizeTextOrArray(\n nodeDb[node.id].description,\n getConfig()\n );\n }\n\n //\n if (nodeDb[node.id].description.length === 1 && nodeDb[node.id].shape === 'rectWithTitle') {\n nodeDb[node.id].shape = 'rect';\n }\n\n // Save data for description and group so that for instance a statement without description overwrites\n // one with description\n\n // group\n if (!nodeDb[node.id].type && node.doc) {\n log.info('Setting cluster for ', node.id, getDir(node));\n nodeDb[node.id].type = 'group';\n nodeDb[node.id].dir = getDir(node);\n nodeDb[node.id].shape = node.type === 'divider' ? 'divider' : 'roundedWithTitle';\n nodeDb[node.id].classes =\n nodeDb[node.id].classes +\n ' ' +\n (altFlag ? 'statediagram-cluster statediagram-cluster-alt' : 'statediagram-cluster');\n }\n\n const nodeData = {\n labelStyle: '',\n shape: nodeDb[node.id].shape,\n labelText: nodeDb[node.id].description,\n // typeof nodeDb[node.id].description === 'object'\n // ? nodeDb[node.id].description[0]\n // : nodeDb[node.id].description,\n classes: nodeDb[node.id].classes, //classStr,\n style: '', //styles.style,\n id: node.id,\n dir: nodeDb[node.id].dir,\n domId: 'state-' + node.id + '-' + cnt,\n type: nodeDb[node.id].type,\n padding: 15, //getConfig().flowchart.padding\n };\n\n if (node.note) {\n // Todo: set random id\n const noteData = {\n labelStyle: '',\n shape: 'note',\n labelText: node.note.text,\n classes: 'statediagram-note', //classStr,\n style: '', //styles.style,\n id: node.id + '----note-' + cnt,\n domId: 'state-' + node.id + '----note-' + cnt,\n type: nodeDb[node.id].type,\n padding: 15, //getConfig().flowchart.padding\n };\n const groupData = {\n labelStyle: '',\n shape: 'noteGroup',\n labelText: node.note.text,\n classes: nodeDb[node.id].classes, //classStr,\n style: '', //styles.style,\n id: node.id + '----parent',\n domId: 'state-' + node.id + '----parent-' + cnt,\n type: 'group',\n padding: 0, //getConfig().flowchart.padding\n };\n cnt++;\n\n g.setNode(node.id + '----parent', groupData);\n\n g.setNode(noteData.id, noteData);\n g.setNode(node.id, nodeData);\n\n g.setParent(node.id, node.id + '----parent');\n g.setParent(noteData.id, node.id + '----parent');\n\n let from = node.id;\n let to = noteData.id;\n\n if (node.note.position === 'left of') {\n from = noteData.id;\n to = node.id;\n }\n g.setEdge(from, to, {\n arrowhead: 'none',\n arrowType: '',\n style: 'fill:none',\n labelStyle: '',\n classes: 'transition note-edge',\n arrowheadStyle: 'fill: #333',\n labelpos: 'c',\n labelType: 'text',\n thickness: 'normal',\n });\n } else {\n g.setNode(node.id, nodeData);\n }\n }\n\n if (parent) {\n if (parent.id !== 'root') {\n log.trace('Setting node ', node.id, ' to be child of its parent ', parent.id);\n g.setParent(node.id, parent.id);\n }\n }\n if (node.doc) {\n log.trace('Adding nodes children ');\n setupDoc(g, node, node.doc, !altFlag);\n }\n};\nlet cnt = 0;\nconst setupDoc = (g, parent, doc, altFlag) => {\n // cnt = 0;\n log.trace('items', doc);\n doc.forEach((item) => {\n if (item.stmt === 'state' || item.stmt === 'default') {\n setupNode(g, parent, item, altFlag);\n } else if (item.stmt === 'relation') {\n setupNode(g, parent, item.state1, altFlag);\n setupNode(g, parent, item.state2, altFlag);\n const edgeData = {\n id: 'edge' + cnt,\n arrowhead: 'normal',\n arrowTypeEnd: 'arrow_barb',\n style: 'fill:none',\n labelStyle: '',\n label: common.sanitizeText(item.description, getConfig()),\n arrowheadStyle: 'fill: #333',\n labelpos: 'c',\n labelType: 'text',\n thickness: 'normal',\n classes: 'transition',\n };\n let startId = item.state1.id;\n let endId = item.state2.id;\n\n g.setEdge(startId, endId, edgeData, cnt);\n cnt++;\n }\n });\n};\nconst getDir = (nodes, defaultDir) => {\n let dir = defaultDir || 'TB';\n if (nodes.doc) {\n for (let i = 0; i < nodes.doc.length; i++) {\n const node = nodes.doc[i];\n if (node.stmt === 'dir') {\n dir = node.value;\n }\n }\n }\n return dir;\n};\n/**\n * Draws a flowchart in the tag with id: id based on the graph definition in text.\n *\n * @param {any} text\n * @param {any} id\n */\nexport const draw = function (text, id) {\n log.info('Drawing state diagram (v2)', id);\n stateDb.clear();\n nodeDb = {};\n const parser = state.parser;\n parser.yy = stateDb;\n\n // Parse the graph definition\n parser.parse(text);\n\n // Fetch the default direction, use TD if none was found\n let dir = stateDb.getDirection();\n if (typeof dir === 'undefined') {\n dir = 'LR';\n }\n\n const conf = getConfig().state;\n const nodeSpacing = conf.nodeSpacing || 50;\n const rankSpacing = conf.rankSpacing || 50;\n\n const securityLevel = getConfig().securityLevel;\n\n log.info(stateDb.getRootDocV2());\n stateDb.extract(stateDb.getRootDocV2());\n log.info(stateDb.getRootDocV2());\n\n // Create the input mermaid.graph\n const g = new graphlib.Graph({\n multigraph: true,\n compound: true,\n })\n .setGraph({\n rankdir: getDir(stateDb.getRootDocV2()),\n nodesep: nodeSpacing,\n ranksep: rankSpacing,\n marginx: 8,\n marginy: 8,\n })\n .setDefaultEdgeLabel(function () {\n return {};\n });\n\n setupNode(g, undefined, stateDb.getRootDocV2(), true);\n\n // Set up an SVG group so that we can translate the final graph.\n let sandboxElement;\n if (securityLevel === 'sandbox') {\n sandboxElement = select('#i' + id);\n }\n const root =\n securityLevel === 'sandbox'\n ? select(sandboxElement.nodes()[0].contentDocument.body)\n : select('body');\n const doc = securityLevel === 'sandbox' ? sandboxElement.nodes()[0].contentDocument : document;\n const svg = root.select(`[id=\"${id}\"]`);\n\n // Run the renderer. This is what draws the final graph.\n\n const element = root.select('#' + id + ' g');\n render(element, g, ['barb'], 'statediagram', id);\n\n const padding = 8;\n\n const bounds = svg.node().getBBox();\n\n const width = bounds.width + padding * 2;\n const height = bounds.height + padding * 2;\n\n // Zoom in a bit\n svg.attr('class', 'statediagram');\n\n const svgBounds = svg.node().getBBox();\n\n configureSvgSize(svg, height, width * 1.75, conf.useMaxWidth);\n\n // Ensure the viewBox includes the whole svgBounds area with extra space for padding\n const vBox = `${svgBounds.x - padding} ${svgBounds.y - padding} ${width} ${height}`;\n log.debug(`viewBox ${vBox}`);\n svg.attr('viewBox', vBox);\n\n // Add label rects for non html labels\n // if (!evaluate(conf.htmlLabels) || true) {\n const labels = document.querySelectorAll('[id=\"' + id + '\"] .edgeLabel .label');\n for (let k = 0; k < labels.length; k++) {\n const label = labels[k];\n\n // Get dimensions of label\n const dim = label.getBBox();\n\n const rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\n rect.setAttribute('rx', 0);\n rect.setAttribute('ry', 0);\n rect.setAttribute('width', dim.width);\n rect.setAttribute('height', dim.height);\n\n label.insertBefore(rect, label.firstChild);\n // }\n }\n addSVGAccessibilityFields(parser.yy, svg, id);\n};\n\nexport default {\n setConf,\n getClasses,\n draw,\n};\n","import mermaidAPI from '../../mermaidAPI';\nimport * as configApi from '../../config';\nimport common from '../common/common';\nimport {\n setTitle,\n getTitle,\n getAccDescription,\n setAccDescription,\n clear as commonClear,\n} from '../../commonDb';\n\nconst sanitizeText = (txt) => common.sanitizeText(txt, configApi.getConfig());\n\nlet title = '';\nlet description = '';\nlet currentSection = '';\n\nconst sections = [];\nconst tasks = [];\nconst rawTasks = [];\n\nexport const parseDirective = function (statement, context, type) {\n mermaidAPI.parseDirective(this, statement, context, type);\n};\n\nexport const clear = function () {\n sections.length = 0;\n tasks.length = 0;\n currentSection = '';\n title = '';\n description = '';\n rawTasks.length = 0;\n commonClear();\n};\n\nexport const addSection = function (txt) {\n currentSection = txt;\n sections.push(txt);\n};\n\nexport const getSections = function () {\n return sections;\n};\n\nexport const getTasks = function () {\n let allItemsProcessed = compileTasks();\n const maxDepth = 100;\n let iterationCount = 0;\n while (!allItemsProcessed && iterationCount < maxDepth) {\n allItemsProcessed = compileTasks();\n iterationCount++;\n }\n\n tasks.push(...rawTasks);\n\n return tasks;\n};\n\nconst updateActors = function () {\n const tempActors = [];\n tasks.forEach((task) => {\n if (task.people) {\n tempActors.push(...task.people);\n }\n });\n\n const unique = new Set(tempActors);\n return [...unique].sort();\n};\n\nexport const addTask = function (descr, taskData) {\n const pieces = taskData.substr(1).split(':');\n\n let score = 0;\n let peeps = [];\n if (pieces.length === 1) {\n score = Number(pieces[0]);\n peeps = [];\n } else {\n score = Number(pieces[0]);\n peeps = pieces[1].split(',');\n }\n const peopleList = peeps.map((s) => s.trim());\n\n const rawTask = {\n section: currentSection,\n type: currentSection,\n people: peopleList,\n task: descr,\n score,\n };\n\n rawTasks.push(rawTask);\n};\n\nexport const addTaskOrg = function (descr) {\n const newTask = {\n section: currentSection,\n type: currentSection,\n description: descr,\n task: descr,\n classes: [],\n };\n tasks.push(newTask);\n};\n\nconst compileTasks = function () {\n const compileTask = function (pos) {\n return rawTasks[pos].processed;\n };\n\n let allProcessed = true;\n for (let i = 0; i < rawTasks.length; i++) {\n compileTask(i);\n\n allProcessed = allProcessed && rawTasks[i].processed;\n }\n return allProcessed;\n};\n\nconst getActors = function () {\n return updateActors();\n};\n\nexport default {\n parseDirective,\n getConfig: () => configApi.getConfig().journey,\n clear,\n setTitle,\n getTitle,\n setAccDescription,\n getAccDescription,\n addSection,\n getSections,\n getTasks,\n addTask,\n addTaskOrg,\n getActors,\n};\n","import { arc as d3arc } from 'd3';\n\nexport const drawRect = function (elem, rectData) {\n const rectElem = elem.append('rect');\n rectElem.attr('x', rectData.x);\n rectElem.attr('y', rectData.y);\n rectElem.attr('fill', rectData.fill);\n rectElem.attr('stroke', rectData.stroke);\n rectElem.attr('width', rectData.width);\n rectElem.attr('height', rectData.height);\n rectElem.attr('rx', rectData.rx);\n rectElem.attr('ry', rectData.ry);\n\n if (typeof rectData.class !== 'undefined') {\n rectElem.attr('class', rectData.class);\n }\n\n return rectElem;\n};\n\nexport const drawFace = function (element, faceData) {\n const radius = 15;\n const circleElement = element\n .append('circle')\n .attr('cx', faceData.cx)\n .attr('cy', faceData.cy)\n .attr('class', 'face')\n .attr('r', radius)\n .attr('stroke-width', 2)\n .attr('overflow', 'visible');\n\n const face = element.append('g');\n\n //left eye\n face\n .append('circle')\n .attr('cx', faceData.cx - radius / 3)\n .attr('cy', faceData.cy - radius / 3)\n .attr('r', 1.5)\n .attr('stroke-width', 2)\n .attr('fill', '#666')\n .attr('stroke', '#666');\n\n //right eye\n face\n .append('circle')\n .attr('cx', faceData.cx + radius / 3)\n .attr('cy', faceData.cy - radius / 3)\n .attr('r', 1.5)\n .attr('stroke-width', 2)\n .attr('fill', '#666')\n .attr('stroke', '#666');\n\n /** @param {any} face */\n function smile(face) {\n const arc = d3arc()\n .startAngle(Math.PI / 2)\n .endAngle(3 * (Math.PI / 2))\n .innerRadius(radius / 2)\n .outerRadius(radius / 2.2);\n //mouth\n face\n .append('path')\n .attr('class', 'mouth')\n .attr('d', arc)\n .attr('transform', 'translate(' + faceData.cx + ',' + (faceData.cy + 2) + ')');\n }\n\n /** @param {any} face */\n function sad(face) {\n const arc = d3arc()\n .startAngle((3 * Math.PI) / 2)\n .endAngle(5 * (Math.PI / 2))\n .innerRadius(radius / 2)\n .outerRadius(radius / 2.2);\n //mouth\n face\n .append('path')\n .attr('class', 'mouth')\n .attr('d', arc)\n .attr('transform', 'translate(' + faceData.cx + ',' + (faceData.cy + 7) + ')');\n }\n\n /** @param {any} face */\n function ambivalent(face) {\n face\n .append('line')\n .attr('class', 'mouth')\n .attr('stroke', 2)\n .attr('x1', faceData.cx - 5)\n .attr('y1', faceData.cy + 7)\n .attr('x2', faceData.cx + 5)\n .attr('y2', faceData.cy + 7)\n .attr('class', 'mouth')\n .attr('stroke-width', '1px')\n .attr('stroke', '#666');\n }\n\n if (faceData.score > 3) {\n smile(face);\n } else if (faceData.score < 3) {\n sad(face);\n } else {\n ambivalent(face);\n }\n\n return circleElement;\n};\n\nexport const drawCircle = function (element, circleData) {\n const circleElement = element.append('circle');\n circleElement.attr('cx', circleData.cx);\n circleElement.attr('cy', circleData.cy);\n circleElement.attr('class', 'actor-' + circleData.pos);\n circleElement.attr('fill', circleData.fill);\n circleElement.attr('stroke', circleData.stroke);\n circleElement.attr('r', circleData.r);\n\n if (typeof circleElement.class !== 'undefined') {\n circleElement.attr('class', circleElement.class);\n }\n\n if (typeof circleData.title !== 'undefined') {\n circleElement.append('title').text(circleData.title);\n }\n\n return circleElement;\n};\n\nexport const drawText = function (elem, textData) {\n // Remove and ignore br:s\n const nText = textData.text.replace(/<br\\s*\\/?>/gi, ' ');\n\n const textElem = elem.append('text');\n textElem.attr('x', textData.x);\n textElem.attr('y', textData.y);\n textElem.attr('class', 'legend');\n\n textElem.style('text-anchor', textData.anchor);\n\n if (typeof textData.class !== 'undefined') {\n textElem.attr('class', textData.class);\n }\n\n const span = textElem.append('tspan');\n span.attr('x', textData.x + textData.textMargin * 2);\n span.text(nText);\n\n return textElem;\n};\n\nexport const drawLabel = function (elem, txtObject) {\n /**\n * @param {any} x\n * @param {any} y\n * @param {any} width\n * @param {any} height\n * @param {any} cut\n */\n function genPoints(x, y, width, height, cut) {\n return (\n x +\n ',' +\n y +\n ' ' +\n (x + width) +\n ',' +\n y +\n ' ' +\n (x + width) +\n ',' +\n (y + height - cut) +\n ' ' +\n (x + width - cut * 1.2) +\n ',' +\n (y + height) +\n ' ' +\n x +\n ',' +\n (y + height)\n );\n }\n const polygon = elem.append('polygon');\n polygon.attr('points', genPoints(txtObject.x, txtObject.y, 50, 20, 7));\n polygon.attr('class', 'labelBox');\n\n txtObject.y = txtObject.y + txtObject.labelMargin;\n txtObject.x = txtObject.x + 0.5 * txtObject.labelMargin;\n drawText(elem, txtObject);\n};\n\nexport const drawSection = function (elem, section, conf) {\n const g = elem.append('g');\n\n const rect = getNoteRect();\n rect.x = section.x;\n rect.y = section.y;\n rect.fill = section.fill;\n rect.width = conf.width;\n rect.height = conf.height;\n rect.class = 'journey-section section-type-' + section.num;\n rect.rx = 3;\n rect.ry = 3;\n drawRect(g, rect);\n\n _drawTextCandidateFunc(conf)(\n section.text,\n g,\n rect.x,\n rect.y,\n rect.width,\n rect.height,\n { class: 'journey-section section-type-' + section.num },\n conf,\n section.colour\n );\n};\n\nlet taskCount = -1;\n/**\n * Draws an actor in the diagram with the attaced line\n *\n * @param {any} elem The HTML element\n * @param {any} task The task to render\n * @param {any} conf The global configuration\n */\nexport const drawTask = function (elem, task, conf) {\n const center = task.x + conf.width / 2;\n const g = elem.append('g');\n taskCount++;\n const maxHeight = 300 + 5 * 30;\n g.append('line')\n .attr('id', 'task' + taskCount)\n .attr('x1', center)\n .attr('y1', task.y)\n .attr('x2', center)\n .attr('y2', maxHeight)\n .attr('class', 'task-line')\n .attr('stroke-width', '1px')\n .attr('stroke-dasharray', '4 2')\n .attr('stroke', '#666');\n\n drawFace(g, {\n cx: center,\n cy: 300 + (5 - task.score) * 30,\n score: task.score,\n });\n\n const rect = getNoteRect();\n rect.x = task.x;\n rect.y = task.y;\n rect.fill = task.fill;\n rect.width = conf.width;\n rect.height = conf.height;\n rect.class = 'task task-type-' + task.num;\n rect.rx = 3;\n rect.ry = 3;\n drawRect(g, rect);\n\n let xPos = task.x + 14;\n task.people.forEach((person) => {\n const colour = task.actors[person].color;\n\n const circle = {\n cx: xPos,\n cy: task.y,\n r: 7,\n fill: colour,\n stroke: '#000',\n title: person,\n pos: task.actors[person].position,\n };\n\n drawCircle(g, circle);\n xPos += 10;\n });\n\n _drawTextCandidateFunc(conf)(\n task.task,\n g,\n rect.x,\n rect.y,\n rect.width,\n rect.height,\n { class: 'task' },\n conf,\n task.colour\n );\n};\n\n/**\n * Draws a background rectangle\n *\n * @param {any} elem The html element\n * @param {any} bounds The bounds of the drawing\n */\nexport const drawBackgroundRect = function (elem, bounds) {\n const rectElem = drawRect(elem, {\n x: bounds.startx,\n y: bounds.starty,\n width: bounds.stopx - bounds.startx,\n height: bounds.stopy - bounds.starty,\n fill: bounds.fill,\n class: 'rect',\n });\n rectElem.lower();\n};\n\nexport const getTextObj = function () {\n return {\n x: 0,\n y: 0,\n fill: undefined,\n 'text-anchor': 'start',\n width: 100,\n height: 100,\n textMargin: 0,\n rx: 0,\n ry: 0,\n };\n};\n\nexport const getNoteRect = function () {\n return {\n x: 0,\n y: 0,\n width: 100,\n anchor: 'start',\n height: 100,\n rx: 0,\n ry: 0,\n };\n};\n\nconst _drawTextCandidateFunc = (function () {\n /**\n * @param {any} content\n * @param {any} g\n * @param {any} x\n * @param {any} y\n * @param {any} width\n * @param {any} height\n * @param {any} textAttrs\n * @param {any} colour\n */\n function byText(content, g, x, y, width, height, textAttrs, colour) {\n const text = g\n .append('text')\n .attr('x', x + width / 2)\n .attr('y', y + height / 2 + 5)\n .style('font-color', colour)\n .style('text-anchor', 'middle')\n .text(content);\n _setTextAttrs(text, textAttrs);\n }\n\n /**\n * @param {any} content\n * @param {any} g\n * @param {any} x\n * @param {any} y\n * @param {any} width\n * @param {any} height\n * @param {any} textAttrs\n * @param {any} conf\n * @param {any} colour\n */\n function byTspan(content, g, x, y, width, height, textAttrs, conf, colour) {\n const { taskFontSize, taskFontFamily } = conf;\n\n const lines = content.split(/<br\\s*\\/?>/gi);\n for (let i = 0; i < lines.length; i++) {\n const dy = i * taskFontSize - (taskFontSize * (lines.length - 1)) / 2;\n const text = g\n .append('text')\n .attr('x', x + width / 2)\n .attr('y', y)\n .attr('fill', colour)\n .style('text-anchor', 'middle')\n .style('font-size', taskFontSize)\n .style('font-family', taskFontFamily);\n text\n .append('tspan')\n .attr('x', x + width / 2)\n .attr('dy', dy)\n .text(lines[i]);\n\n text\n .attr('y', y + height / 2.0)\n .attr('dominant-baseline', 'central')\n .attr('alignment-baseline', 'central');\n\n _setTextAttrs(text, textAttrs);\n }\n }\n\n /**\n * @param {any} content\n * @param {any} g\n * @param {any} x\n * @param {any} y\n * @param {any} width\n * @param {any} height\n * @param {any} textAttrs\n * @param {any} conf\n */\n function byFo(content, g, x, y, width, height, textAttrs, conf) {\n const body = g.append('switch');\n const f = body\n .append('foreignObject')\n .attr('x', x)\n .attr('y', y)\n .attr('width', width)\n .attr('height', height)\n .attr('position', 'fixed');\n\n const text = f\n .append('xhtml:div')\n .style('display', 'table')\n .style('height', '100%')\n .style('width', '100%');\n\n text\n .append('div')\n .attr('class', 'label')\n .style('display', 'table-cell')\n .style('text-align', 'center')\n .style('vertical-align', 'middle')\n .text(content);\n\n byTspan(content, body, x, y, width, height, textAttrs, conf);\n _setTextAttrs(text, textAttrs);\n }\n\n /**\n * @param {any} toText\n * @param {any} fromTextAttrsDict\n */\n function _setTextAttrs(toText, fromTextAttrsDict) {\n for (const key in fromTextAttrsDict) {\n if (key in fromTextAttrsDict) {\n // eslint-disable-line\n // noinspection JSUnfilteredForInLoop\n toText.attr(key, fromTextAttrsDict[key]);\n }\n }\n }\n\n return function (conf) {\n return conf.textPlacement === 'fo' ? byFo : conf.textPlacement === 'old' ? byText : byTspan;\n };\n})();\n\nconst initGraphics = function (graphics) {\n graphics\n .append('defs')\n .append('marker')\n .attr('id', 'arrowhead')\n .attr('refX', 5)\n .attr('refY', 2)\n .attr('markerWidth', 6)\n .attr('markerHeight', 4)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 0,0 V 4 L6,2 Z'); // this is actual shape for arrowhead\n};\n\nexport default {\n drawRect,\n drawCircle,\n drawSection,\n drawText,\n drawLabel,\n drawTask,\n drawBackgroundRect,\n getTextObj,\n getNoteRect,\n initGraphics,\n};\n","import { select } from 'd3';\nimport { parser } from './parser/journey';\nimport journeyDb from './journeyDb';\nimport svgDraw from './svgDraw';\nimport { getConfig } from '../../config';\nimport { configureSvgSize } from '../../utils';\nimport addSVGAccessibilityFields from '../../accessibility';\n\nparser.yy = journeyDb;\n\nexport const setConf = function (cnf) {\n const keys = Object.keys(cnf);\n\n keys.forEach(function (key) {\n conf[key] = cnf[key];\n });\n};\n\nconst actors = {};\n\n/** @param {any} diagram */\nfunction drawActorLegend(diagram) {\n const conf = getConfig().journey;\n // Draw the actors\n let yPos = 60;\n Object.keys(actors).forEach((person) => {\n const colour = actors[person].color;\n\n const circleData = {\n cx: 20,\n cy: yPos,\n r: 7,\n fill: colour,\n stroke: '#000',\n pos: actors[person].position,\n };\n svgDraw.drawCircle(diagram, circleData);\n\n const labelData = {\n x: 40,\n y: yPos + 7,\n fill: '#666',\n text: person,\n textMargin: conf.boxTextMargin | 5,\n };\n svgDraw.drawText(diagram, labelData);\n\n yPos += 20;\n });\n}\nconst conf = getConfig().journey;\nconst LEFT_MARGIN = getConfig().journey.leftMargin;\nexport const draw = function (text, id) {\n const conf = getConfig().journey;\n parser.yy.clear();\n parser.parse(text + '\\n');\n\n const securityLevel = getConfig().securityLevel;\n // Handle root and ocument for when rendering in sanbox mode\n let sandboxElement;\n if (securityLevel === 'sandbox') {\n sandboxElement = select('#i' + id);\n }\n const root =\n securityLevel === 'sandbox'\n ? select(sandboxElement.nodes()[0].contentDocument.body)\n : select('body');\n const doc = securityLevel === 'sandbox' ? sandboxElement.nodes()[0].contentDocument : document;\n\n bounds.init();\n const diagram = root.select('#' + id);\n diagram.attr('xmlns:xlink', 'http://www.w3.org/1999/xlink');\n\n svgDraw.initGraphics(diagram);\n\n const tasks = parser.yy.getTasks();\n const title = parser.yy.getTitle();\n\n const actorNames = parser.yy.getActors();\n for (let member in actors) delete actors[member];\n let actorPos = 0;\n actorNames.forEach((actorName) => {\n actors[actorName] = {\n color: conf.actorColours[actorPos % conf.actorColours.length],\n position: actorPos,\n };\n actorPos++;\n });\n\n drawActorLegend(diagram);\n bounds.insert(0, 0, LEFT_MARGIN, Object.keys(actors).length * 50);\n drawTasks(diagram, tasks, 0);\n\n const box = bounds.getBounds();\n if (title) {\n diagram\n .append('text')\n .text(title)\n .attr('x', LEFT_MARGIN)\n .attr('font-size', '4ex')\n .attr('font-weight', 'bold')\n .attr('y', 25);\n }\n\n const height = box.stopy - box.starty + 2 * conf.diagramMarginY;\n const width = LEFT_MARGIN + box.stopx + 2 * conf.diagramMarginX;\n\n configureSvgSize(diagram, height, width, conf.useMaxWidth);\n\n // Draw activity line\n diagram\n .append('line')\n .attr('x1', LEFT_MARGIN)\n .attr('y1', conf.height * 4) // One section head + one task + margins\n .attr('x2', width - LEFT_MARGIN - 4) // Subtract stroke width so arrow point is retained\n .attr('y2', conf.height * 4)\n .attr('stroke-width', 4)\n .attr('stroke', 'black')\n .attr('marker-end', 'url(#arrowhead)');\n\n const extraVertForTitle = title ? 70 : 0;\n diagram.attr('viewBox', `${box.startx} -25 ${width} ${height + extraVertForTitle}`);\n diagram.attr('preserveAspectRatio', 'xMinYMin meet');\n diagram.attr('height', height + extraVertForTitle + 25);\n\n addSVGAccessibilityFields(parser.yy, diagram, id);\n};\n\nexport const bounds = {\n data: {\n startx: undefined,\n stopx: undefined,\n starty: undefined,\n stopy: undefined,\n },\n verticalPos: 0,\n\n sequenceItems: [],\n init: function () {\n this.sequenceItems = [];\n this.data = {\n startx: undefined,\n stopx: undefined,\n starty: undefined,\n stopy: undefined,\n };\n this.verticalPos = 0;\n },\n updateVal: function (obj, key, val, fun) {\n if (typeof obj[key] === 'undefined') {\n obj[key] = val;\n } else {\n obj[key] = fun(val, obj[key]);\n }\n },\n updateBounds: function (startx, starty, stopx, stopy) {\n const conf = getConfig().journey;\n const _self = this;\n let cnt = 0;\n /** @param {any} type */\n function updateFn(type) {\n return function updateItemBounds(item) {\n cnt++;\n // The loop sequenceItems is a stack so the biggest margins in the beginning of the sequenceItems\n const n = _self.sequenceItems.length - cnt + 1;\n _self.updateVal(item, 'starty', starty - n * conf.boxMargin, Math.min);\n _self.updateVal(item, 'stopy', stopy + n * conf.boxMargin, Math.max);\n\n _self.updateVal(bounds.data, 'startx', startx - n * conf.boxMargin, Math.min);\n _self.updateVal(bounds.data, 'stopx', stopx + n * conf.boxMargin, Math.max);\n\n if (!(type === 'activation')) {\n _self.updateVal(item, 'startx', startx - n * conf.boxMargin, Math.min);\n _self.updateVal(item, 'stopx', stopx + n * conf.boxMargin, Math.max);\n\n _self.updateVal(bounds.data, 'starty', starty - n * conf.boxMargin, Math.min);\n _self.updateVal(bounds.data, 'stopy', stopy + n * conf.boxMargin, Math.max);\n }\n };\n }\n\n this.sequenceItems.forEach(updateFn());\n },\n insert: function (startx, starty, stopx, stopy) {\n const _startx = Math.min(startx, stopx);\n const _stopx = Math.max(startx, stopx);\n const _starty = Math.min(starty, stopy);\n const _stopy = Math.max(starty, stopy);\n\n this.updateVal(bounds.data, 'startx', _startx, Math.min);\n this.updateVal(bounds.data, 'starty', _starty, Math.min);\n this.updateVal(bounds.data, 'stopx', _stopx, Math.max);\n this.updateVal(bounds.data, 'stopy', _stopy, Math.max);\n\n this.updateBounds(_startx, _starty, _stopx, _stopy);\n },\n bumpVerticalPos: function (bump) {\n this.verticalPos = this.verticalPos + bump;\n this.data.stopy = this.verticalPos;\n },\n getVerticalPos: function () {\n return this.verticalPos;\n },\n getBounds: function () {\n return this.data;\n },\n};\n\nconst fills = conf.sectionFills;\nconst textColours = conf.sectionColours;\n\nexport const drawTasks = function (diagram, tasks, verticalPos) {\n const conf = getConfig().journey;\n let lastSection = '';\n const sectionVHeight = conf.height * 2 + conf.diagramMarginY;\n const taskPos = verticalPos + sectionVHeight;\n\n let sectionNumber = 0;\n let fill = '#CCC';\n let colour = 'black';\n let num = 0;\n\n // Draw the tasks\n for (let i = 0; i < tasks.length; i++) {\n let task = tasks[i];\n if (lastSection !== task.section) {\n fill = fills[sectionNumber % fills.length];\n num = sectionNumber % fills.length;\n colour = textColours[sectionNumber % textColours.length];\n\n const section = {\n x: i * conf.taskMargin + i * conf.width + LEFT_MARGIN,\n y: 50,\n text: task.section,\n fill,\n num,\n colour,\n };\n\n svgDraw.drawSection(diagram, section, conf);\n lastSection = task.section;\n sectionNumber++;\n }\n\n // Collect the actors involved in the task\n const taskActors = task.people.reduce((acc, actorName) => {\n if (actors[actorName]) {\n acc[actorName] = actors[actorName];\n }\n\n return acc;\n }, {});\n\n // Add some rendering data to the object\n task.x = i * conf.taskMargin + i * conf.width + LEFT_MARGIN;\n task.y = taskPos;\n task.width = conf.diagramMarginX;\n task.height = conf.diagramMarginY;\n task.colour = colour;\n task.fill = fill;\n task.num = num;\n task.actors = taskActors;\n\n // Draw the box with the attached line\n svgDraw.drawTask(diagram, task, conf);\n bounds.insert(task.x, task.y, task.x + task.width + conf.taskMargin, 300 + 5 * 30); // stopy is the length of the descenders.\n }\n};\n\nexport default {\n setConf,\n draw,\n};\n","/** Created by knut on 14-12-11. */\nimport { select } from 'd3';\nimport { log } from './logger';\n\nconst conf = {};\n\n/**\n * Merges the value of `conf` with the passed `cnf`\n *\n * @param {object} cnf Config to merge\n */\nexport const setConf = function (cnf) {\n const keys = Object.keys(cnf);\n\n keys.forEach(function (key) {\n conf[key] = cnf[key];\n });\n};\n\n/**\n * Draws a an info picture in the tag with id: id based on the graph definition in text.\n *\n * @param {string} id The text for the error\n * @param {string} ver The version\n */\nexport const draw = (id, ver) => {\n try {\n log.debug('Renering svg for syntax error\\n');\n\n const svg = select('#' + id);\n\n const g = svg.append('g');\n\n g.append('path')\n .attr('class', 'error-icon')\n .attr(\n 'd',\n 'm411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z'\n );\n\n g.append('path')\n .attr('class', 'error-icon')\n .attr(\n 'd',\n 'm459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z'\n );\n\n g.append('path')\n .attr('class', 'error-icon')\n .attr(\n 'd',\n 'm340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z'\n );\n\n g.append('path')\n .attr('class', 'error-icon')\n .attr(\n 'd',\n 'm400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z'\n );\n\n g.append('path')\n .attr('class', 'error-icon')\n .attr(\n 'd',\n 'm496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z'\n );\n\n g.append('path')\n .attr('class', 'error-icon')\n .attr(\n 'd',\n 'm436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z'\n );\n\n g.append('text') // text label for the x axis\n .attr('class', 'error-text')\n .attr('x', 1240)\n .attr('y', 250)\n .attr('font-size', '150px')\n .style('text-anchor', 'middle')\n .text('Syntax error in graph');\n g.append('text') // text label for the x axis\n .attr('class', 'error-text')\n .attr('x', 1050)\n .attr('y', 400)\n .attr('font-size', '100px')\n .style('text-anchor', 'middle')\n .text('mermaid version ' + ver);\n\n svg.attr('height', 100);\n svg.attr('width', 400);\n svg.attr('viewBox', '768 0 512 512');\n } catch (e) {\n log.error('Error while rendering info diagram');\n log.error(e.message);\n }\n};\n\nexport default {\n setConf,\n draw,\n};\n","const getStyles = (options) =>\n `g.classGroup text {\n fill: ${options.nodeBorder};\n fill: ${options.classText};\n stroke: none;\n font-family: ${options.fontFamily};\n font-size: 10px;\n\n .title {\n font-weight: bolder;\n }\n\n}\n\n.nodeLabel, .edgeLabel {\n color: ${options.classText};\n}\n.edgeLabel .label rect {\n fill: ${options.mainBkg};\n}\n.label text {\n fill: ${options.classText};\n}\n.edgeLabel .label span {\n background: ${options.mainBkg};\n}\n\n.classTitle {\n font-weight: bolder;\n}\n.node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n stroke-width: 1px;\n }\n\n\n.divider {\n stroke: ${options.nodeBorder};\n stroke: 1;\n}\n\ng.clickable {\n cursor: pointer;\n}\n\ng.classGroup rect {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n}\n\ng.classGroup line {\n stroke: ${options.nodeBorder};\n stroke-width: 1;\n}\n\n.classLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: ${options.mainBkg};\n opacity: 0.5;\n}\n\n.classLabel .label {\n fill: ${options.nodeBorder};\n font-size: 10px;\n}\n\n.relation {\n stroke: ${options.lineColor};\n stroke-width: 1;\n fill: none;\n}\n\n.dashed-line{\n stroke-dasharray: 3;\n}\n\n#compositionStart, .composition {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#compositionEnd, .composition {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#dependencyStart, .dependency {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#dependencyStart, .dependency {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#extensionStart, .extension {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#extensionEnd, .extension {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#aggregationStart, .aggregation {\n fill: ${options.mainBkg} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#aggregationEnd, .aggregation {\n fill: ${options.mainBkg} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n.edgeTerminals {\n font-size: 11px;\n}\n\n`;\n\nexport default getStyles;\n","/**\n * Returns the styles given options\n *\n * @param {{\n * fontFamily: string;\n * nodeTextColor: string;\n * textColor: string;\n * titleColor: string;\n * mainBkg: string;\n * nodeBorder: string;\n * arrowheadColor: string;\n * lineColor: string;\n * edgeLabelBackground: string;\n * clusterBkg: string;\n * clusterBorder: string;\n * tertiaryColor: string;\n * border2: string;\n * }} options\n * The options for the styles\n * @returns {string} The resulting styles\n */\nconst getStyles = (options) =>\n `.label {\n font-family: ${options.fontFamily};\n color: ${options.nodeTextColor || options.textColor};\n }\n .cluster-label text {\n fill: ${options.titleColor};\n }\n .cluster-label span {\n color: ${options.titleColor};\n }\n\n .label text,span {\n fill: ${options.nodeTextColor || options.textColor};\n color: ${options.nodeTextColor || options.textColor};\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n stroke-width: 1px;\n }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ${options.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${options.lineColor};\n stroke-width: 2.0px;\n }\n\n .flowchart-link {\n stroke: ${options.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${options.edgeLabelBackground};\n rect {\n opacity: 0.5;\n background-color: ${options.edgeLabelBackground};\n fill: ${options.edgeLabelBackground};\n }\n text-align: center;\n }\n\n .cluster rect {\n fill: ${options.clusterBkg};\n stroke: ${options.clusterBorder};\n stroke-width: 1px;\n }\n\n .cluster text {\n fill: ${options.titleColor};\n }\n\n .cluster span {\n color: ${options.titleColor};\n }\n /* .cluster div {\n color: ${options.titleColor};\n } */\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: ${options.fontFamily};\n font-size: 12px;\n background: ${options.tertiaryColor};\n border: 1px solid ${options.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n`;\n\nexport default getStyles;\n","const getStyles = (options) =>\n `\ndefs #statediagram-barbEnd {\n fill: ${options.transitionColor};\n stroke: ${options.transitionColor};\n }\ng.stateGroup text {\n fill: ${options.nodeBorder};\n stroke: none;\n font-size: 10px;\n}\ng.stateGroup text {\n fill: ${options.textColor};\n stroke: none;\n font-size: 10px;\n\n}\ng.stateGroup .state-title {\n font-weight: bolder;\n fill: ${options.stateLabelColor};\n}\n\ng.stateGroup rect {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n}\n\ng.stateGroup line {\n stroke: ${options.lineColor};\n stroke-width: 1;\n}\n\n.transition {\n stroke: ${options.transitionColor};\n stroke-width: 1;\n fill: none;\n}\n\n.stateGroup .composit {\n fill: ${options.background};\n border-bottom: 1px\n}\n\n.stateGroup .alt-composit {\n fill: #e0e0e0;\n border-bottom: 1px\n}\n\n.state-note {\n stroke: ${options.noteBorderColor};\n fill: ${options.noteBkgColor};\n\n text {\n fill: ${options.noteTextColor};\n stroke: none;\n font-size: 10px;\n }\n}\n\n.stateLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: ${options.mainBkg};\n opacity: 0.5;\n}\n\n.edgeLabel .label rect {\n fill: ${options.labelBackgroundColor};\n opacity: 0.5;\n}\n.edgeLabel .label text {\n fill: ${options.transitionLabelColor || options.tertiaryTextColor};\n}\n.label div .edgeLabel {\n color: ${options.transitionLabelColor || options.tertiaryTextColor};\n}\n\n.stateLabel text {\n fill: ${options.stateLabelColor};\n font-size: 10px;\n font-weight: bold;\n}\n\n.node circle.state-start {\n fill: ${options.specialStateColor};\n stroke: ${options.specialStateColor};\n}\n\n.node .fork-join {\n fill: ${options.specialStateColor};\n stroke: ${options.specialStateColor};\n}\n\n.node circle.state-end {\n fill: ${options.innerEndBackground};\n stroke: ${options.background};\n stroke-width: 1.5\n}\n.end-state-inner {\n fill: ${options.compositeBackground || options.background};\n // stroke: ${options.background};\n stroke-width: 1.5\n}\n\n.node rect {\n fill: ${options.stateBkg || options.mainBkg};\n stroke: ${options.stateBorder || options.nodeBorder};\n stroke-width: 1px;\n}\n.node polygon {\n fill: ${options.mainBkg};\n stroke: ${options.stateBorder || options.nodeBorder};;\n stroke-width: 1px;\n}\n#statediagram-barbEnd {\n fill: ${options.lineColor};\n}\n\n.statediagram-cluster rect {\n fill: ${options.compositeTitleBackground};\n stroke: ${options.stateBorder || options.nodeBorder};\n stroke-width: 1px;\n}\n\n.cluster-label, .nodeLabel {\n color: ${options.stateLabelColor};\n}\n\n.statediagram-cluster rect.outer {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-state .divider {\n stroke: ${options.stateBorder || options.nodeBorder};\n}\n\n.statediagram-state .title-state {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-cluster.statediagram-cluster .inner {\n fill: ${options.compositeBackground || options.background};\n}\n.statediagram-cluster.statediagram-cluster-alt .inner {\n fill: ${options.altBackground ? options.altBackground : '#efefef'};\n}\n\n.statediagram-cluster .inner {\n rx:0;\n ry:0;\n}\n\n.statediagram-state rect.basic {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-state rect.divider {\n stroke-dasharray: 10,10;\n fill: ${options.altBackground ? options.altBackground : '#efefef'};\n}\n\n.note-edge {\n stroke-dasharray: 5;\n}\n\n.statediagram-note rect {\n fill: ${options.noteBkgColor};\n stroke: ${options.noteBorderColor};\n stroke-width: 1px;\n rx: 0;\n ry: 0;\n}\n.statediagram-note rect {\n fill: ${options.noteBkgColor};\n stroke: ${options.noteBorderColor};\n stroke-width: 1px;\n rx: 0;\n ry: 0;\n}\n\n.statediagram-note text {\n fill: ${options.noteTextColor};\n}\n\n.statediagram-note .nodeLabel {\n color: ${options.noteTextColor};\n}\n.statediagram .edgeLabel {\n color: red; // ${options.noteTextColor};\n}\n\n#dependencyStart, #dependencyEnd {\n fill: ${options.lineColor};\n stroke: ${options.lineColor};\n stroke-width: 1;\n}\n`;\n\nexport default getStyles;\n","import classDiagram from './diagrams/class/styles';\nimport er from './diagrams/er/styles';\nimport flowchart from './diagrams/flowchart/styles';\nimport gantt from './diagrams/gantt/styles';\nimport gitGraph from './diagrams/git/styles';\nimport info from './diagrams/info/styles';\nimport pie from './diagrams/pie/styles';\nimport requirement from './diagrams/requirement/styles';\nimport sequence from './diagrams/sequence/styles';\nimport stateDiagram from './diagrams/state/styles';\nimport journey from './diagrams/user-journey/styles';\n\nconst themes = {\n flowchart,\n 'flowchart-v2': flowchart,\n sequence,\n gantt,\n classDiagram,\n 'classDiagram-v2': classDiagram,\n class: classDiagram,\n stateDiagram,\n state: stateDiagram,\n gitGraph,\n info,\n pie,\n er,\n journey,\n requirement,\n};\n\nexport const calcThemeVariables = (theme, userOverRides) => theme.calcColors(userOverRides);\n\nconst getStyles = (type, userStyles, options) => {\n //console.warn('options in styles: ', options);\n return ` {\n font-family: ${options.fontFamily};\n font-size: ${options.fontSize};\n fill: ${options.textColor}\n }\n\n /* Classes common for multiple diagrams */\n\n .error-icon {\n fill: ${options.errorBkgColor};\n }\n .error-text {\n fill: ${options.errorTextColor};\n stroke: ${options.errorTextColor};\n }\n\n .edge-thickness-normal {\n stroke-width: 2px;\n }\n .edge-thickness-thick {\n stroke-width: 3.5px\n }\n .edge-pattern-solid {\n stroke-dasharray: 0;\n }\n\n .edge-pattern-dashed{\n stroke-dasharray: 3;\n }\n .edge-pattern-dotted {\n stroke-dasharray: 2;\n }\n\n .marker {\n fill: ${options.lineColor};\n stroke: ${options.lineColor};\n }\n .marker.cross {\n stroke: ${options.lineColor};\n }\n\n svg {\n font-family: ${options.fontFamily};\n font-size: ${options.fontSize};\n }\n\n ${themes[type](options)}\n\n ${userStyles}\n`;\n};\n\nexport default getStyles;\n","const getStyles = (options) =>\n `.actor {\n stroke: ${options.actorBorder};\n fill: ${options.actorBkg};\n }\n\n text.actor > tspan {\n fill: ${options.actorTextColor};\n stroke: none;\n }\n\n .actor-line {\n stroke: ${options.actorLineColor};\n }\n\n .messageLine0 {\n stroke-width: 1.5;\n stroke-dasharray: none;\n stroke: ${options.signalColor};\n }\n\n .messageLine1 {\n stroke-width: 1.5;\n stroke-dasharray: 2, 2;\n stroke: ${options.signalColor};\n }\n\n #arrowhead path {\n fill: ${options.signalColor};\n stroke: ${options.signalColor};\n }\n\n .sequenceNumber {\n fill: ${options.sequenceNumberColor};\n }\n\n #sequencenumber {\n fill: ${options.signalColor};\n }\n\n #crosshead path {\n fill: ${options.signalColor};\n stroke: ${options.signalColor};\n }\n\n .messageText {\n fill: ${options.signalTextColor};\n stroke: ${options.signalTextColor};\n }\n\n .labelBox {\n stroke: ${options.labelBoxBorderColor};\n fill: ${options.labelBoxBkgColor};\n }\n\n .labelText, .labelText > tspan {\n fill: ${options.labelTextColor};\n stroke: none;\n }\n\n .loopText, .loopText > tspan {\n fill: ${options.loopTextColor};\n stroke: none;\n }\n\n .loopLine {\n stroke-width: 2px;\n stroke-dasharray: 2, 2;\n stroke: ${options.labelBoxBorderColor};\n fill: ${options.labelBoxBorderColor};\n }\n\n .note {\n //stroke: #decc93;\n stroke: ${options.noteBorderColor};\n fill: ${options.noteBkgColor};\n }\n\n .noteText, .noteText > tspan {\n fill: ${options.noteTextColor};\n stroke: none;\n }\n\n .activation0 {\n fill: ${options.activationBkgColor};\n stroke: ${options.activationBorderColor};\n }\n\n .activation1 {\n fill: ${options.activationBkgColor};\n stroke: ${options.activationBorderColor};\n }\n\n .activation2 {\n fill: ${options.activationBkgColor};\n stroke: ${options.activationBorderColor};\n }\n\n .actorPopupMenu {\n position: absolute;\n }\n\n .actorPopupMenuPanel {\n position: absolute;\n fill: ${options.actorBkg};\n box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);\n filter: drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));\n}\n .actor-man line {\n stroke: ${options.actorBorder};\n fill: ${options.actorBkg};\n }\n .actor-man circle, line {\n stroke: ${options.actorBorder};\n fill: ${options.actorBkg};\n stroke-width: 2px;\n }\n`;\n\nexport default getStyles;\n","const getStyles = (options) =>\n `\n .mermaid-main-font {\n font-family: \"trebuchet ms\", verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n .exclude-range {\n fill: ${options.excludeBkgColor};\n }\n\n .section {\n stroke: none;\n opacity: 0.2;\n }\n\n .section0 {\n fill: ${options.sectionBkgColor};\n }\n\n .section2 {\n fill: ${options.sectionBkgColor2};\n }\n\n .section1,\n .section3 {\n fill: ${options.altSectionBkgColor};\n opacity: 0.2;\n }\n\n .sectionTitle0 {\n fill: ${options.titleColor};\n }\n\n .sectionTitle1 {\n fill: ${options.titleColor};\n }\n\n .sectionTitle2 {\n fill: ${options.titleColor};\n }\n\n .sectionTitle3 {\n fill: ${options.titleColor};\n }\n\n .sectionTitle {\n text-anchor: start;\n // font-size: ${options.ganttFontSize};\n // text-height: 14px;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n\n }\n\n\n /* Grid and axis */\n\n .grid .tick {\n stroke: ${options.gridColor};\n opacity: 0.8;\n shape-rendering: crispEdges;\n text {\n font-family: ${options.fontFamily};\n fill: ${options.textColor};\n }\n }\n\n .grid path {\n stroke-width: 0;\n }\n\n\n /* Today line */\n\n .today {\n fill: none;\n stroke: ${options.todayLineColor};\n stroke-width: 2px;\n }\n\n\n /* Task styling */\n\n /* Default task */\n\n .task {\n stroke-width: 2;\n }\n\n .taskText {\n text-anchor: middle;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n\n // .taskText:not([font-size]) {\n // font-size: ${options.ganttFontSize};\n // }\n\n .taskTextOutsideRight {\n fill: ${options.taskTextDarkColor};\n text-anchor: start;\n // font-size: ${options.ganttFontSize};\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n\n }\n\n .taskTextOutsideLeft {\n fill: ${options.taskTextDarkColor};\n text-anchor: end;\n // font-size: ${options.ganttFontSize};\n }\n\n /* Special case clickable */\n .task.clickable {\n cursor: pointer;\n }\n .taskText.clickable {\n cursor: pointer;\n fill: ${options.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n .taskTextOutsideLeft.clickable {\n cursor: pointer;\n fill: ${options.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n .taskTextOutsideRight.clickable {\n cursor: pointer;\n fill: ${options.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n /* Specific task settings for the sections*/\n\n .taskText0,\n .taskText1,\n .taskText2,\n .taskText3 {\n fill: ${options.taskTextColor};\n }\n\n .task0,\n .task1,\n .task2,\n .task3 {\n fill: ${options.taskBkgColor};\n stroke: ${options.taskBorderColor};\n }\n\n .taskTextOutside0,\n .taskTextOutside2\n {\n fill: ${options.taskTextOutsideColor};\n }\n\n .taskTextOutside1,\n .taskTextOutside3 {\n fill: ${options.taskTextOutsideColor};\n }\n\n\n /* Active task */\n\n .active0,\n .active1,\n .active2,\n .active3 {\n fill: ${options.activeTaskBkgColor};\n stroke: ${options.activeTaskBorderColor};\n }\n\n .activeText0,\n .activeText1,\n .activeText2,\n .activeText3 {\n fill: ${options.taskTextDarkColor} !important;\n }\n\n\n /* Completed task */\n\n .done0,\n .done1,\n .done2,\n .done3 {\n stroke: ${options.doneTaskBorderColor};\n fill: ${options.doneTaskBkgColor};\n stroke-width: 2;\n }\n\n .doneText0,\n .doneText1,\n .doneText2,\n .doneText3 {\n fill: ${options.taskTextDarkColor} !important;\n }\n\n\n /* Tasks on the critical line */\n\n .crit0,\n .crit1,\n .crit2,\n .crit3 {\n stroke: ${options.critBorderColor};\n fill: ${options.critBkgColor};\n stroke-width: 2;\n }\n\n .activeCrit0,\n .activeCrit1,\n .activeCrit2,\n .activeCrit3 {\n stroke: ${options.critBorderColor};\n fill: ${options.activeTaskBkgColor};\n stroke-width: 2;\n }\n\n .doneCrit0,\n .doneCrit1,\n .doneCrit2,\n .doneCrit3 {\n stroke: ${options.critBorderColor};\n fill: ${options.doneTaskBkgColor};\n stroke-width: 2;\n cursor: pointer;\n shape-rendering: crispEdges;\n }\n\n .milestone {\n transform: rotate(45deg) scale(0.8,0.8);\n }\n\n .milestoneText {\n font-style: italic;\n }\n .doneCritText0,\n .doneCritText1,\n .doneCritText2,\n .doneCritText3 {\n fill: ${options.taskTextDarkColor} !important;\n }\n\n .activeCritText0,\n .activeCritText1,\n .activeCritText2,\n .activeCritText3 {\n fill: ${options.taskTextDarkColor} !important;\n }\n\n .titleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.textColor} ;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n`;\n\nexport default getStyles;\n","const getStyles = (options) =>\n `\n .commit-id,\n .commit-msg,\n .branch-label {\n fill: lightgrey;\n color: lightgrey;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n ${[0, 1, 2, 3, 4, 5, 6, 7]\n .map(\n (i) =>\n `\n .branch-label${i} { fill: ${options['gitBranchLabel' + i]}; }\n .commit${i} { stroke: ${options['git' + i]}; fill: ${options['git' + i]}; }\n .commit-highlight${i} { stroke: ${options['gitInv' + i]}; fill: ${options['gitInv' + i]}; }\n .label${i} { fill: ${options['git' + i]}; }\n .arrow${i} { stroke: ${options['git' + i]}; }\n `\n )\n .join('\\n')}\n\n .branch {\n stroke-width: 1;\n stroke: ${options.lineColor};\n stroke-dasharray: 2;\n }\n .commit-label { font-size: 10px; fill: ${options.commitLabelColor};}\n .commit-label-bkg { font-size: 10px; fill: ${options.commitLabelBackground}; opacity: 0.5; }\n .tag-label { font-size: 10px; fill: ${options.tagLabelColor};}\n .tag-label-bkg { fill: ${options.tagLabelBackground}; stroke: ${options.tagLabelBorder}; }\n .tag-hole { fill: ${options.textColor}; }\n\n .commit-merge {\n stroke: ${options.primaryColor};\n fill: ${options.primaryColor};\n }\n .commit-reverse {\n stroke: ${options.primaryColor};\n fill: ${options.primaryColor};\n stroke-width: 3;\n }\n .commit-highlight-outer {\n }\n .commit-highlight-inner {\n stroke: ${options.primaryColor};\n fill: ${options.primaryColor};\n }\n\n .arrow { stroke-width: 8; stroke-linecap: round; fill: none}\n }\n`;\n\nexport default getStyles;\n","const getStyles = () => ``;\r\n\r\nexport default getStyles;\r\n","const getStyles = (options) =>\n `\n .pieCircle{\n stroke: ${options.pieStrokeColor};\n stroke-width : ${options.pieStrokeWidth};\n opacity : ${options.pieOpacity};\n }\n .pieTitleText {\n text-anchor: middle;\n font-size: ${options.pieTitleTextSize};\n fill: ${options.pieTitleTextColor};\n font-family: ${options.fontFamily};\n }\n .slice {\n font-family: ${options.fontFamily};\n fill: ${options.pieSectionTextColor};\n font-size:${options.pieSectionTextSize};\n // fill: white;\n }\n .legend text {\n fill: ${options.pieLegendTextColor};\n font-family: ${options.fontFamily};\n font-size: ${options.pieLegendTextSize};\n }\n`;\n\nexport default getStyles;\n","const getStyles = (options) =>\n `\n .entityBox {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n }\n\n .attributeBoxOdd {\n fill: #ffffff;\n stroke: ${options.nodeBorder};\n }\n\n .attributeBoxEven {\n fill: #f2f2f2;\n stroke: ${options.nodeBorder};\n }\n\n .relationshipLabelBox {\n fill: ${options.tertiaryColor};\n opacity: 0.7;\n background-color: ${options.tertiaryColor};\n rect {\n opacity: 0.5;\n }\n }\n\n .relationshipLine {\n stroke: ${options.lineColor};\n }\n`;\n\nexport default getStyles;\n","const getStyles = (options) =>\n `.label {\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n color: ${options.textColor};\n }\n .mouth {\n stroke: #666;\n }\n\n line {\n stroke: ${options.textColor}\n }\n\n .legend {\n fill: ${options.textColor};\n }\n\n .label text {\n fill: #333;\n }\n .label {\n color: ${options.textColor}\n }\n\n .face {\n ${options.faceColor ? `fill: ${options.faceColor}` : 'fill: #FFF8DC'};\n stroke: #999;\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n stroke-width: 1px;\n }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ${options.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${options.lineColor};\n stroke-width: 1.5px;\n }\n\n .flowchart-link {\n stroke: ${options.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${options.edgeLabelBackground};\n rect {\n opacity: 0.5;\n }\n text-align: center;\n }\n\n .cluster rect {\n }\n\n .cluster text {\n fill: ${options.titleColor};\n }\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n font-size: 12px;\n background: ${options.tertiaryColor};\n border: 1px solid ${options.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .task-type-0, .section-type-0 {\n ${options.fillType0 ? `fill: ${options.fillType0}` : ''};\n }\n .task-type-1, .section-type-1 {\n ${options.fillType0 ? `fill: ${options.fillType1}` : ''};\n }\n .task-type-2, .section-type-2 {\n ${options.fillType0 ? `fill: ${options.fillType2}` : ''};\n }\n .task-type-3, .section-type-3 {\n ${options.fillType0 ? `fill: ${options.fillType3}` : ''};\n }\n .task-type-4, .section-type-4 {\n ${options.fillType0 ? `fill: ${options.fillType4}` : ''};\n }\n .task-type-5, .section-type-5 {\n ${options.fillType0 ? `fill: ${options.fillType5}` : ''};\n }\n .task-type-6, .section-type-6 {\n ${options.fillType0 ? `fill: ${options.fillType6}` : ''};\n }\n .task-type-7, .section-type-7 {\n ${options.fillType0 ? `fill: ${options.fillType7}` : ''};\n }\n\n .actor-0 {\n ${options.actor0 ? `fill: ${options.actor0}` : ''};\n }\n .actor-1 {\n ${options.actor1 ? `fill: ${options.actor1}` : ''};\n }\n .actor-2 {\n ${options.actor2 ? `fill: ${options.actor2}` : ''};\n }\n .actor-3 {\n ${options.actor3 ? `fill: ${options.actor3}` : ''};\n }\n .actor-4 {\n ${options.actor4 ? `fill: ${options.actor4}` : ''};\n }\n .actor-5 {\n ${options.actor5 ? `fill: ${options.actor5}` : ''};\n }\n\n }\n`;\n\nexport default getStyles;\n","const getStyles = (options) => `\n\n marker {\n fill: ${options.relationColor};\n stroke: ${options.relationColor};\n }\n\n marker.cross {\n stroke: ${options.lineColor};\n }\n\n svg {\n font-family: ${options.fontFamily};\n font-size: ${options.fontSize};\n }\n\n .reqBox {\n fill: ${options.requirementBackground};\n fill-opacity: 100%;\n stroke: ${options.requirementBorderColor};\n stroke-width: ${options.requirementBorderSize};\n }\n \n .reqTitle, .reqLabel{\n fill: ${options.requirementTextColor};\n }\n .reqLabelBox {\n fill: ${options.relationLabelBackground};\n fill-opacity: 100%;\n }\n\n .req-title-line {\n stroke: ${options.requirementBorderColor};\n stroke-width: ${options.requirementBorderSize};\n }\n .relationshipLine {\n stroke: ${options.relationColor};\n stroke-width: 1;\n }\n .relationshipLabel {\n fill: ${options.relationLabelColor};\n }\n\n`;\n// fill', conf.rect_fill)\nexport default getStyles;\n","/**\n * Edit this\n * Page[[N|Solid](img/GitHub-Mark-32px.png)](https://github.com/mermaid-js/mermaid/blob/develop/src/mermaidAPI.js)\n *\n * This is the API to be used when optionally handling the integration with the web page, instead of\n * using the default integration provided by mermaid.js.\n *\n * The core of this api is the [**render**](Setup.md?id=render) function which, given a graph\n * definition as text, renders the graph/diagram and returns an svg element for the graph.\n *\n * It is is then up to the user of the API to make use of the svg, either insert it somewhere in the\n * page or do something completely different.\n *\n * In addition to the render function, a number of behavioral configuration options are available.\n *\n * @name mermaidAPI\n */\nimport { select } from 'd3';\nimport { compile, serialize, stringify } from 'stylis';\nimport pkg from '../package.json';\nimport * as configApi from './config';\nimport classDb from './diagrams/class/classDb';\nimport classRenderer from './diagrams/class/classRenderer';\nimport classRendererV2 from './diagrams/class/classRenderer-v2';\nimport classParser from './diagrams/class/parser/classDiagram';\nimport erDb from './diagrams/er/erDb';\nimport erRenderer from './diagrams/er/erRenderer';\nimport erParser from './diagrams/er/parser/erDiagram';\nimport flowDb from './diagrams/flowchart/flowDb';\nimport flowRenderer from './diagrams/flowchart/flowRenderer';\nimport flowRendererV2 from './diagrams/flowchart/flowRenderer-v2';\nimport flowParser from './diagrams/flowchart/parser/flow';\nimport ganttDb from './diagrams/gantt/ganttDb';\nimport ganttRenderer from './diagrams/gantt/ganttRenderer';\nimport ganttParser from './diagrams/gantt/parser/gantt';\nimport gitGraphAst from './diagrams/git/gitGraphAst';\nimport gitGraphRenderer from './diagrams/git/gitGraphRenderer';\nimport gitGraphParser from './diagrams/git/parser/gitGraph';\nimport infoDb from './diagrams/info/infoDb';\nimport infoRenderer from './diagrams/info/infoRenderer';\nimport infoParser from './diagrams/info/parser/info';\nimport pieParser from './diagrams/pie/parser/pie';\nimport pieDb from './diagrams/pie/pieDb';\nimport pieRenderer from './diagrams/pie/pieRenderer';\nimport addSVGAccessibilityFields from './diagrams/pie/pieRenderer';\nimport requirementParser from './diagrams/requirement/parser/requirementDiagram';\nimport requirementDb from './diagrams/requirement/requirementDb';\nimport requirementRenderer from './diagrams/requirement/requirementRenderer';\nimport sequenceParser from './diagrams/sequence/parser/sequenceDiagram';\nimport sequenceDb from './diagrams/sequence/sequenceDb';\nimport sequenceRenderer from './diagrams/sequence/sequenceRenderer';\nimport stateParser from './diagrams/state/parser/stateDiagram';\nimport stateDb from './diagrams/state/stateDb';\nimport stateRenderer from './diagrams/state/stateRenderer';\nimport stateRendererV2 from './diagrams/state/stateRenderer-v2';\nimport journeyDb from './diagrams/user-journey/journeyDb';\nimport journeyRenderer from './diagrams/user-journey/journeyRenderer';\nimport journeyParser from './diagrams/user-journey/parser/journey';\nimport errorRenderer from './errorRenderer';\nimport { attachFunctions } from './interactionDb';\nimport { log, setLogLevel } from './logger';\nimport getStyles from './styles';\nimport theme from './themes';\nimport utils, { directiveSanitizer, assignWithDepth, sanitizeCss } from './utils';\nimport DOMPurify from 'dompurify';\n\n/**\n * @param text\n * @returns {any}\n */\nfunction parse(text) {\n text = text + '\\n';\n const cnf = configApi.getConfig();\n const graphInit = utils.detectInit(text, cnf);\n if (graphInit) {\n reinitialize(graphInit);\n log.info('reinit ', graphInit);\n }\n const graphType = utils.detectType(text, cnf);\n let parser;\n\n log.debug('Type ' + graphType);\n switch (graphType) {\n case 'gitGraph':\n gitGraphAst.clear();\n parser = gitGraphParser;\n parser.parser.yy = gitGraphAst;\n break;\n case 'flowchart':\n flowDb.clear();\n parser = flowParser;\n parser.parser.yy = flowDb;\n break;\n case 'flowchart-v2':\n flowDb.clear();\n parser = flowParser;\n parser.parser.yy = flowDb;\n break;\n case 'sequence':\n sequenceDb.clear();\n parser = sequenceParser;\n parser.parser.yy = sequenceDb;\n break;\n case 'gantt':\n parser = ganttParser;\n parser.parser.yy = ganttDb;\n break;\n case 'class':\n parser = classParser;\n parser.parser.yy = classDb;\n break;\n case 'classDiagram':\n parser = classParser;\n parser.parser.yy = classDb;\n break;\n case 'state':\n parser = stateParser;\n parser.parser.yy = stateDb;\n break;\n case 'stateDiagram':\n parser = stateParser;\n parser.parser.yy = stateDb;\n break;\n case 'info':\n log.debug('info info info');\n parser = infoParser;\n parser.parser.yy = infoDb;\n break;\n case 'pie':\n log.debug('pie');\n parser = pieParser;\n parser.parser.yy = pieDb;\n break;\n case 'er':\n log.debug('er');\n parser = erParser;\n parser.parser.yy = erDb;\n break;\n case 'journey':\n log.debug('Journey');\n parser = journeyParser;\n parser.parser.yy = journeyDb;\n break;\n case 'requirement':\n case 'requirementDiagram':\n log.debug('RequirementDiagram');\n parser = requirementParser;\n parser.parser.yy = requirementDb;\n break;\n }\n parser.parser.yy.graphType = graphType;\n parser.parser.yy.parseError = (str, hash) => {\n const error = { str, hash };\n throw error;\n };\n\n parser.parse(text);\n return parser;\n}\n\nexport const encodeEntities = function (text) {\n let txt = text;\n\n txt = txt.replace(/style.*:\\S*#.*;/g, function (s) {\n const innerTxt = s.substring(0, s.length - 1);\n return innerTxt;\n });\n txt = txt.replace(/classDef.*:\\S*#.*;/g, function (s) {\n const innerTxt = s.substring(0, s.length - 1);\n return innerTxt;\n });\n\n txt = txt.replace(/#\\w+;/g, function (s) {\n const innerTxt = s.substring(1, s.length - 1);\n\n const isInt = /^\\+?\\d+$/.test(innerTxt);\n if (isInt) {\n return 'fl°°' + innerTxt + '¶ß';\n } else {\n return 'fl°' + innerTxt + '¶ß';\n }\n });\n\n return txt;\n};\n\nexport const decodeEntities = function (text) {\n let txt = text;\n\n txt = txt.replace(/fl°°/g, function () {\n return '&#';\n });\n txt = txt.replace(/fl°/g, function () {\n return '&';\n });\n txt = txt.replace(/¶ß/g, function () {\n return ';';\n });\n\n return txt;\n};\n/**\n * Function that renders an svg with a graph from a chart definition. Usage example below.\n *\n * ```javascript\n * mermaidAPI.initialize({\n * startOnLoad: true,\n * });\n * $(function () {\n * const graphDefinition = 'graph TB\\na-->b';\n * const cb = function (svgGraph) {\n * console.log(svgGraph);\n * };\n * mermaidAPI.render('id1', graphDefinition, cb);\n * });\n * ```\n *\n * @param {any} id The id of the element to be rendered\n * @param {any} _txt The graph definition\n * @param {any} cb Callback which is called after rendering is finished with the svg code as inparam.\n * @param {any} container Selector to element in which a div with the graph temporarily will be\n * inserted. In one is provided a hidden div will be inserted in the body of the page instead. The\n * element will be removed when rendering is completed.\n * @returns {any}\n */\nconst render = function (id, _txt, cb, container) {\n configApi.reset();\n let txt = _txt.replace(/\\r\\n?/g, '\\n'); // parser problems on CRLF ignore all CR and leave LF;;\n const graphInit = utils.detectInit(txt);\n if (graphInit) {\n directiveSanitizer(graphInit);\n configApi.addDirective(graphInit);\n }\n let cnf = configApi.getConfig();\n\n log.debug(cnf);\n\n // Check the maximum allowed text size\n if (_txt.length > cnf.maxTextSize) {\n txt = 'graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa';\n }\n\n // let d3Iframe;\n let root = select('body');\n\n // In regular execurtion the container will be the div with a mermaid class\n if (typeof container !== 'undefined') {\n if (cnf.securityLevel === 'sandbox') {\n // IF we are in sandboxed mode, we do everyting mermaid related\n // in a sandboxed div\n const iframe = select('body')\n .append('iframe')\n .attr('id', 'i' + id)\n .attr('style', 'width: 100%; height: 100%;')\n .attr('sandbox', '');\n // const iframeBody = ;\n root = select(iframe.nodes()[0].contentDocument.body);\n root.node().style.margin = 0;\n }\n\n // A container was provided by the caller\n container.innerHTML = '';\n\n if (cnf.securityLevel === 'sandbox') {\n // IF we are in sandboxed mode, we do everyting mermaid related\n // in a sandboxed div\n const iframe = select(container)\n .append('iframe')\n .attr('id', 'i' + id)\n .attr('style', 'width: 100%; height: 100%;')\n .attr('sandbox', '');\n // const iframeBody = ;\n root = select(iframe.nodes()[0].contentDocument.body);\n root.node().style.margin = 0;\n } else {\n root = select(container);\n }\n\n root\n .append('div')\n .attr('id', 'd' + id)\n .attr('style', 'font-family: ' + cnf.fontFamily)\n .append('svg')\n .attr('id', id)\n .attr('width', '100%')\n .attr('xmlns', 'http://www.w3.org/2000/svg')\n .append('g');\n } else {\n // No container was provided\n // If there is an existsing element with the id, we remove it\n // this likley a previously rendered diagram\n const existingSvg = document.getElementById(id);\n if (existingSvg) {\n existingSvg.remove();\n }\n\n // Remove previous tpm element if it exists\n let element;\n if (cnf.securityLevel !== 'sandbox') {\n element = document.querySelector('#' + 'd' + id);\n } else {\n element = document.querySelector('#' + 'i' + id);\n }\n if (element) {\n element.remove();\n }\n\n // if (cnf.securityLevel === 'sandbox') {\n // const iframe = select('body')\n // .append('iframe')\n // .attr('id', 'i' + id)\n // .attr('sandbox', '');\n // // const iframeBody = ;\n // root = select(iframe.nodes()[0].contentDocument.body);\n // }\n\n // Add the tmp div used for rendering with the id `d${id}`\n // d+id it will contain a svg with the id \"id\"\n\n if (cnf.securityLevel === 'sandbox') {\n // IF we are in sandboxed mode, we do everyting mermaid related\n // in a sandboxed div\n const iframe = select('body')\n .append('iframe')\n .attr('id', 'i' + id)\n .attr('style', 'width: 100%; height: 100%;')\n .attr('sandbox', '');\n // const iframeBody = ;\n root = select(iframe.nodes()[0].contentDocument.body);\n root.node().style.margin = 0;\n } else {\n root = select('body');\n }\n\n // This is the temporary div\n root\n .append('div')\n .attr('id', 'd' + id)\n // this is the seed of the svg to be rendered\n .append('svg')\n .attr('id', id)\n .attr('width', '100%')\n .attr('xmlns', 'http://www.w3.org/2000/svg')\n .append('g');\n }\n\n txt = encodeEntities(txt);\n\n // Get the tmp element containing the the svg\n const element = root.select('#d' + id).node();\n const graphType = utils.detectType(txt, cnf);\n\n // insert inline style into svg\n const svg = element.firstChild;\n const firstChild = svg.firstChild;\n\n let userStyles = '';\n // user provided theme CSS\n if (cnf.themeCSS !== undefined) {\n userStyles += `\\n${cnf.themeCSS}`;\n }\n // user provided theme CSS\n if (cnf.fontFamily !== undefined) {\n userStyles += `\\n:root { --mermaid-font-family: ${cnf.fontFamily}}`;\n }\n // user provided theme CSS\n if (cnf.altFontFamily !== undefined) {\n userStyles += `\\n:root { --mermaid-alt-font-family: ${cnf.altFontFamily}}`;\n }\n\n // classDef\n if (graphType === 'flowchart' || graphType === 'flowchart-v2' || graphType === 'graph') {\n const classes = flowRenderer.getClasses(txt);\n const htmlLabels = cnf.htmlLabels || cnf.flowchart.htmlLabels;\n for (const className in classes) {\n if (htmlLabels) {\n userStyles += `\\n.${className} > * { ${classes[className].styles.join(\n ' !important; '\n )} !important; }`;\n userStyles += `\\n.${className} span { ${classes[className].styles.join(\n ' !important; '\n )} !important; }`;\n } else {\n userStyles += `\\n.${className} path { ${classes[className].styles.join(\n ' !important; '\n )} !important; }`;\n userStyles += `\\n.${className} rect { ${classes[className].styles.join(\n ' !important; '\n )} !important; }`;\n userStyles += `\\n.${className} polygon { ${classes[className].styles.join(\n ' !important; '\n )} !important; }`;\n userStyles += `\\n.${className} ellipse { ${classes[className].styles.join(\n ' !important; '\n )} !important; }`;\n userStyles += `\\n.${className} circle { ${classes[className].styles.join(\n ' !important; '\n )} !important; }`;\n if (classes[className].textStyles) {\n userStyles += `\\n.${className} tspan { ${classes[className].textStyles.join(\n ' !important; '\n )} !important; }`;\n }\n }\n }\n }\n\n // log.warn(cnf.themeVariables);\n\n const stylis = (selector, styles) => serialize(compile(`${selector}{${styles}}`), stringify);\n const rules = stylis(`#${id}`, getStyles(graphType, userStyles, cnf.themeVariables));\n\n const style1 = document.createElement('style');\n style1.innerHTML = `#${id} ` + rules;\n svg.insertBefore(style1, firstChild);\n\n // Verify that the generated svgs are ok before removing this\n\n // const style2 = document.createElement('style');\n // const cs = window.getComputedStyle(svg);\n // style2.innerHTML = `#d${id} * {\n // color: ${cs.color};\n // // font: ${cs.font};\n // // font-family: Arial;\n // // font-size: 24px;\n // }`;\n // svg.insertBefore(style2, firstChild);\n\n try {\n switch (graphType) {\n case 'gitGraph':\n // cnf.flowchart.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n //gitGraphRenderer.setConf(cnf.git);\n gitGraphRenderer.draw(txt, id, false);\n break;\n case 'flowchart':\n cnf.flowchart.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n flowRenderer.setConf(cnf.flowchart);\n flowRenderer.draw(txt, id, false);\n break;\n case 'flowchart-v2':\n cnf.flowchart.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n flowRendererV2.setConf(cnf.flowchart);\n flowRendererV2.draw(txt, id, false);\n break;\n case 'sequence':\n cnf.sequence.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n if (cnf.sequenceDiagram) {\n // backwards compatibility\n sequenceRenderer.setConf(Object.assign(cnf.sequence, cnf.sequenceDiagram));\n console.error(\n '`mermaid config.sequenceDiagram` has been renamed to `config.sequence`. Please update your mermaid config.'\n );\n } else {\n sequenceRenderer.setConf(cnf.sequence);\n }\n sequenceRenderer.draw(txt, id);\n break;\n case 'gantt':\n cnf.gantt.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n ganttRenderer.setConf(cnf.gantt);\n ganttRenderer.draw(txt, id);\n break;\n case 'class':\n cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n classRenderer.setConf(cnf.class);\n classRenderer.draw(txt, id);\n break;\n case 'classDiagram':\n cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n classRendererV2.setConf(cnf.class);\n classRendererV2.draw(txt, id);\n break;\n case 'state':\n cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n stateRenderer.setConf(cnf.state);\n stateRenderer.draw(txt, id);\n break;\n case 'stateDiagram':\n cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n stateRendererV2.setConf(cnf.state);\n stateRendererV2.draw(txt, id);\n break;\n case 'info':\n cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n infoRenderer.setConf(cnf.class);\n infoRenderer.draw(txt, id, pkg.version);\n break;\n case 'pie':\n //cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n //pieRenderer.setConf(cnf.pie);\n pieRenderer.draw(txt, id, pkg.version);\n break;\n case 'er':\n erRenderer.setConf(cnf.er);\n erRenderer.draw(txt, id, pkg.version);\n break;\n case 'journey':\n journeyRenderer.setConf(cnf.journey);\n journeyRenderer.draw(txt, id, pkg.version);\n break;\n case 'requirement':\n requirementRenderer.setConf(cnf.requirement);\n requirementRenderer.draw(txt, id, pkg.version);\n break;\n }\n } catch (e) {\n // errorRenderer.setConf(cnf.class);\n errorRenderer.draw(id, pkg.version);\n throw e;\n }\n\n root\n .select(`[id=\"${id}\"]`)\n .selectAll('foreignobject > *')\n .attr('xmlns', 'http://www.w3.org/1999/xhtml');\n\n // Fix for when the base tag is used\n let svgCode = root.select('#d' + id).node().innerHTML;\n\n log.debug('cnf.arrowMarkerAbsolute', cnf.arrowMarkerAbsolute);\n if (\n (!cnf.arrowMarkerAbsolute || cnf.arrowMarkerAbsolute === 'false') &&\n cnf.arrowMarkerAbsolute !== 'sandbox'\n ) {\n svgCode = svgCode.replace(/marker-end=\"url\\(.*?#/g, 'marker-end=\"url(#', 'g');\n }\n\n svgCode = decodeEntities(svgCode);\n\n // Fix for when the br tag is used\n svgCode = svgCode.replace(/<br>/g, '<br/>');\n\n if (cnf.securityLevel === 'sandbox') {\n let svgEl = root.select('#d' + id + ' svg').node();\n let width = '100%';\n let height = '100%';\n if (svgEl) {\n // width = svgEl.viewBox.baseVal.width + 'px';\n height = svgEl.viewBox.baseVal.height + 'px';\n }\n svgCode = `<iframe style=\"width:${width};height:${height};border:0;margin:0;\" src=\"data:text/html;base64,${btoa(\n '<body style=\"margin:0\">' + svgCode + '</body>'\n )}\" sandbox=\"allow-top-navigation-by-user-activation allow-popups\">\n The “iframe” tag is not supported by your browser.\n</iframe>`;\n } else {\n if (cnf.securityLevel !== 'loose') {\n svgCode = DOMPurify.sanitize(svgCode, {\n ADD_TAGS: ['foreignobject'],\n ADD_ATTR: ['dominant-baseline'],\n });\n }\n }\n\n if (typeof cb !== 'undefined') {\n switch (graphType) {\n case 'flowchart':\n case 'flowchart-v2':\n cb(svgCode, flowDb.bindFunctions);\n break;\n case 'gantt':\n cb(svgCode, ganttDb.bindFunctions);\n break;\n case 'class':\n case 'classDiagram':\n cb(svgCode, classDb.bindFunctions);\n break;\n default:\n cb(svgCode);\n }\n } else {\n log.debug('CB = undefined!');\n }\n attachFunctions();\n\n const tmpElementSelector = cnf.securityLevel === 'sandbox' ? '#i' + id : '#d' + id;\n const node = select(tmpElementSelector).node();\n if (node !== null && typeof node.remove === 'function') {\n select(tmpElementSelector).node().remove();\n }\n\n return svgCode;\n};\n\nlet currentDirective = {};\n\nconst parseDirective = function (p, statement, context, type) {\n try {\n if (statement !== undefined) {\n statement = statement.trim();\n switch (context) {\n case 'open_directive':\n currentDirective = {};\n break;\n case 'type_directive':\n currentDirective.type = statement.toLowerCase();\n break;\n case 'arg_directive':\n currentDirective.args = JSON.parse(statement);\n break;\n case 'close_directive':\n handleDirective(p, currentDirective, type);\n currentDirective = null;\n break;\n }\n }\n } catch (error) {\n log.error(\n `Error while rendering sequenceDiagram directive: ${statement} jison context: ${context}`\n );\n log.error(error.message);\n }\n};\n\nconst handleDirective = function (p, directive, type) {\n log.debug(`Directive type=${directive.type} with args:`, directive.args);\n switch (directive.type) {\n case 'init':\n case 'initialize': {\n ['config'].forEach((prop) => {\n if (typeof directive.args[prop] !== 'undefined') {\n if (type === 'flowchart-v2') {\n type = 'flowchart';\n }\n directive.args[type] = directive.args[prop];\n delete directive.args[prop];\n }\n });\n log.debug('sanitize in handleDirective', directive.args);\n directiveSanitizer(directive.args);\n log.debug('sanitize in handleDirective (done)', directive.args);\n reinitialize(directive.args);\n configApi.addDirective(directive.args);\n break;\n }\n case 'wrap':\n case 'nowrap':\n if (p && p['setWrap']) {\n p.setWrap(directive.type === 'wrap');\n }\n break;\n case 'themeCss':\n log.warn('themeCss encountered');\n break;\n default:\n log.warn(\n `Unhandled directive: source: '%%{${directive.type}: ${JSON.stringify(\n directive.args ? directive.args : {}\n )}}%%`,\n directive\n );\n break;\n }\n};\n\n/** @param {any} conf */\nfunction updateRendererConfigs(conf) {\n // Todo remove, all diagrams should get config on demoand from the config object, no need for this\n\n // gitGraphRenderer.setConf(conf.git); // Todo Remove all of these\n flowRenderer.setConf(conf.flowchart);\n flowRendererV2.setConf(conf.flowchart);\n if (typeof conf['sequenceDiagram'] !== 'undefined') {\n sequenceRenderer.setConf(assignWithDepth(conf.sequence, conf['sequenceDiagram']));\n }\n sequenceRenderer.setConf(conf.sequence);\n ganttRenderer.setConf(conf.gantt);\n classRenderer.setConf(conf.class);\n stateRenderer.setConf(conf.state);\n stateRendererV2.setConf(conf.state);\n infoRenderer.setConf(conf.class);\n // pieRenderer.setConf(conf.class);\n erRenderer.setConf(conf.er);\n journeyRenderer.setConf(conf.journey);\n requirementRenderer.setConf(conf.requirement);\n errorRenderer.setConf(conf.class);\n}\n\n/** To be removed */\nfunction reinitialize() {\n // `mermaidAPI.reinitialize: v${pkg.version}`,\n // JSON.stringify(options),\n // options.themeVariables.primaryColor;\n // // if (options.theme && theme[options.theme]) {\n // // options.themeVariables = theme[options.theme].getThemeVariables(options.themeVariables);\n // // }\n // // Set default options\n // const config =\n // typeof options === 'object' ? configApi.setConfig(options) : configApi.getSiteConfig();\n // updateRendererConfigs(config);\n // setLogLevel(config.logLevel);\n // log.debug('mermaidAPI.reinitialize: ', config);\n}\n\n/** @param {any} options */\nfunction initialize(options) {\n // console.warn(`mermaidAPI.initialize: v${pkg.version} `, options);\n\n // Handle legacy location of font-family configuration\n if (options && options.fontFamily) {\n if (!options.themeVariables) {\n options.themeVariables = { fontFamily: options.fontFamily };\n } else {\n if (!options.themeVariables.fontFamily) {\n options.themeVariables = { fontFamily: options.fontFamily };\n }\n }\n }\n // Set default options\n configApi.saveConfigFromInitilize(options);\n\n if (options && options.theme && theme[options.theme]) {\n // Todo merge with user options\n options.themeVariables = theme[options.theme].getThemeVariables(options.themeVariables);\n } else {\n if (options) options.themeVariables = theme.default.getThemeVariables(options.themeVariables);\n }\n\n const config =\n typeof options === 'object' ? configApi.setSiteConfig(options) : configApi.getSiteConfig();\n\n updateRendererConfigs(config);\n setLogLevel(config.logLevel);\n // log.debug('mermaidAPI.initialize: ', config);\n}\n\nconst mermaidAPI = Object.freeze({\n render,\n parse,\n parseDirective,\n initialize,\n reinitialize,\n getConfig: configApi.getConfig,\n setConfig: configApi.setConfig,\n getSiteConfig: configApi.getSiteConfig,\n updateSiteConfig: configApi.updateSiteConfig,\n reset: () => {\n // console.warn('reset');\n configApi.reset();\n // const siteConfig = configApi.getSiteConfig();\n // updateRendererConfigs(siteConfig);\n },\n globalReset: () => {\n configApi.reset(configApi.defaultConfig);\n updateRendererConfigs(configApi.getConfig());\n },\n defaultConfig: configApi.defaultConfig,\n});\n\nsetLogLevel(configApi.getConfig().logLevel);\nconfigApi.reset(configApi.getConfig());\n\nexport default mermaidAPI;\n/**\n * ## mermaidAPI configuration defaults\n *\n * ```html\n * <script>\n * var config = {\n * theme: 'default',\n * logLevel: 'fatal',\n * securityLevel: 'strict',\n * startOnLoad: true,\n * arrowMarkerAbsolute: false,\n *\n * er: {\n * diagramPadding: 20,\n * layoutDirection: 'TB',\n * minEntityWidth: 100,\n * minEntityHeight: 75,\n * entityPadding: 15,\n * stroke: 'gray',\n * fill: 'honeydew',\n * fontSize: 12,\n * useMaxWidth: true,\n * },\n * flowchart: {\n * diagramPadding: 8,\n * htmlLabels: true,\n * curve: 'basis',\n * },\n * sequence: {\n * diagramMarginX: 50,\n * diagramMarginY: 10,\n * actorMargin: 50,\n * width: 150,\n * height: 65,\n * boxMargin: 10,\n * boxTextMargin: 5,\n * noteMargin: 10,\n * messageMargin: 35,\n * messageAlign: 'center',\n * mirrorActors: true,\n * bottomMarginAdj: 1,\n * useMaxWidth: true,\n * rightAngles: false,\n * showSequenceNumbers: false,\n * },\n * gantt: {\n * titleTopMargin: 25,\n * barHeight: 20,\n * barGap: 4,\n * topPadding: 50,\n * leftPadding: 75,\n * gridLineStartPadding: 35,\n * fontSize: 11,\n * fontFamily: '\"Open Sans\", sans-serif',\n * numberSectionStyles: 4,\n * axisFormat: '%Y-%m-%d',\n * topAxis: false,\n * },\n * };\n * mermaid.initialize(config);\n * </script>\n * ```\n */\n","/**\n * Web page integration module for the mermaid framework. It uses the mermaidAPI for mermaid\n * functionality and to render the diagrams to svg code.\n */\nimport { log } from './logger';\nimport mermaidAPI from './mermaidAPI';\nimport utils from './utils';\n\n/**\n * ## init\n *\n * Function that goes through the document to find the chart definitions in there and render them.\n *\n * The function tags the processed attributes with the attribute data-processed and ignores found\n * elements with the attribute already set. This way the init function can be triggered several times.\n *\n * Optionally, `init` can accept in the second argument one of the following:\n *\n * - A DOM Node\n * - An array of DOM nodes (as would come from a jQuery selector)\n * - A W3C selector, a la `.mermaid`\n *\n * ```mermaid\n * graph LR;\n * a(Find elements)-->b{Processed}\n * b-->|Yes|c(Leave element)\n * b-->|No |d(Transform)\n * ```\n *\n * Renders the mermaid diagrams\n */\nconst init = function () {\n try {\n initThrowsErrors();\n } catch (e) {\n log.warn('Syntax Error rendering');\n log.warn(e);\n if (this.parseError) {\n this.parseError(e);\n }\n }\n};\n\nconst initThrowsErrors = function () {\n const conf = mermaidAPI.getConfig();\n // console.log('Starting rendering diagrams (init) - mermaid.init', conf);\n let nodes;\n if (arguments.length >= 2) {\n /*! sequence config was passed as #1 */\n if (typeof arguments[0] !== 'undefined') {\n mermaid.sequenceConfig = arguments[0];\n }\n\n nodes = arguments[1];\n } else {\n nodes = arguments[0];\n }\n\n // if last argument is a function this is the callback function\n let callback;\n if (typeof arguments[arguments.length - 1] === 'function') {\n callback = arguments[arguments.length - 1];\n log.debug('Callback function found');\n } else {\n if (typeof conf.mermaid !== 'undefined') {\n if (typeof conf.mermaid.callback === 'function') {\n callback = conf.mermaid.callback;\n log.debug('Callback function found');\n } else {\n log.debug('No Callback function found');\n }\n }\n }\n nodes =\n nodes === undefined\n ? document.querySelectorAll('.mermaid')\n : typeof nodes === 'string'\n ? document.querySelectorAll(nodes)\n : nodes instanceof window.Node\n ? [nodes]\n : nodes; // Last case - sequence config was passed pick next\n\n log.debug('Start On Load before: ' + mermaid.startOnLoad);\n if (typeof mermaid.startOnLoad !== 'undefined') {\n log.debug('Start On Load inner: ' + mermaid.startOnLoad);\n mermaidAPI.updateSiteConfig({ startOnLoad: mermaid.startOnLoad });\n }\n\n if (typeof mermaid.ganttConfig !== 'undefined') {\n mermaidAPI.updateSiteConfig({ gantt: mermaid.ganttConfig });\n }\n\n const idGeneratior = new utils.initIdGeneratior(conf.deterministicIds, conf.deterministicIDSeed);\n\n let txt;\n\n for (let i = 0; i < nodes.length; i++) {\n // element is the current div with mermaid class\n const element = nodes[i];\n\n /*! Check if previously processed */\n if (!element.getAttribute('data-processed')) {\n element.setAttribute('data-processed', true);\n } else {\n continue;\n }\n\n const id = `mermaid-${idGeneratior.next()}`;\n\n // Fetch the graph definition including tags\n txt = element.innerHTML;\n\n // transforms the html to pure text\n txt = utils\n .entityDecode(txt)\n .trim()\n .replace(/<br\\s*\\/?>/gi, '<br/>');\n\n const init = utils.detectInit(txt);\n if (init) {\n log.debug('Detected early reinit: ', init);\n }\n\n mermaidAPI.render(\n id,\n txt,\n (svgCode, bindFunctions) => {\n element.innerHTML = svgCode;\n if (typeof callback !== 'undefined') {\n callback(id);\n }\n if (bindFunctions) bindFunctions(element);\n },\n element\n );\n }\n};\n\nconst initialize = function (config) {\n // mermaidAPI.reset();\n if (typeof config.mermaid !== 'undefined') {\n if (typeof config.mermaid.startOnLoad !== 'undefined') {\n mermaid.startOnLoad = config.mermaid.startOnLoad;\n }\n if (typeof config.mermaid.htmlLabels !== 'undefined') {\n mermaid.htmlLabels =\n config.mermaid.htmlLabels === 'false' || config.mermaid.htmlLabels === false ? false : true;\n }\n }\n mermaidAPI.initialize(config);\n // mermaidAPI.reset();\n};\n\n/**\n * ##contentLoaded Callback function that is called when page is loaded. This functions fetches\n * configuration for mermaid rendering and calls init for rendering the mermaid diagrams on the page.\n */\nconst contentLoaded = function () {\n let config;\n\n if (mermaid.startOnLoad) {\n // No config found, do check API config\n config = mermaidAPI.getConfig();\n if (config.startOnLoad) {\n mermaid.init();\n }\n } else {\n if (typeof mermaid.startOnLoad === 'undefined') {\n log.debug('In start, no config');\n config = mermaidAPI.getConfig();\n if (config.startOnLoad) {\n mermaid.init();\n }\n }\n }\n};\n\nif (typeof document !== 'undefined') {\n /*!\n * Wait for document loaded before starting the execution\n */\n window.addEventListener(\n 'load',\n function () {\n contentLoaded();\n },\n false\n );\n}\n\nconst mermaid = {\n startOnLoad: true,\n htmlLabels: true,\n\n mermaidAPI,\n parse: mermaidAPI.parse,\n render: mermaidAPI.render,\n\n init,\n initialize,\n\n contentLoaded,\n};\n\nexport default mermaid;\n","/**\n * @license\n * Copyright (c) 2012-2013 Chris Pettitt\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nmodule.exports = {\n graphlib: require(\"./lib/graphlib\"),\n dagre: require(\"./lib/dagre\"),\n intersect: require(\"./lib/intersect\"),\n render: require(\"./lib/render\"),\n util: require(\"./lib/util\"),\n version: require(\"./lib/version\")\n};\n","var util = require(\"./util\");\n\nmodule.exports = {\n \"default\": normal,\n \"normal\": normal,\n \"vee\": vee,\n \"undirected\": undirected\n};\n\nfunction normal(parent, id, edge, type) {\n var marker = parent.append(\"marker\")\n .attr(\"id\", id)\n .attr(\"viewBox\", \"0 0 10 10\")\n .attr(\"refX\", 9)\n .attr(\"refY\", 5)\n .attr(\"markerUnits\", \"strokeWidth\")\n .attr(\"markerWidth\", 8)\n .attr(\"markerHeight\", 6)\n .attr(\"orient\", \"auto\");\n\n var path = marker.append(\"path\")\n .attr(\"d\", \"M 0 0 L 10 5 L 0 10 z\")\n .style(\"stroke-width\", 1)\n .style(\"stroke-dasharray\", \"1,0\");\n util.applyStyle(path, edge[type + \"Style\"]);\n if (edge[type + \"Class\"]) {\n path.attr(\"class\", edge[type + \"Class\"]);\n }\n}\n\nfunction vee(parent, id, edge, type) {\n var marker = parent.append(\"marker\")\n .attr(\"id\", id)\n .attr(\"viewBox\", \"0 0 10 10\")\n .attr(\"refX\", 9)\n .attr(\"refY\", 5)\n .attr(\"markerUnits\", \"strokeWidth\")\n .attr(\"markerWidth\", 8)\n .attr(\"markerHeight\", 6)\n .attr(\"orient\", \"auto\");\n\n var path = marker.append(\"path\")\n .attr(\"d\", \"M 0 0 L 10 5 L 0 10 L 4 5 z\")\n .style(\"stroke-width\", 1)\n .style(\"stroke-dasharray\", \"1,0\");\n util.applyStyle(path, edge[type + \"Style\"]);\n if (edge[type + \"Class\"]) {\n path.attr(\"class\", edge[type + \"Class\"]);\n }\n}\n\nfunction undirected(parent, id, edge, type) {\n var marker = parent.append(\"marker\")\n .attr(\"id\", id)\n .attr(\"viewBox\", \"0 0 10 10\")\n .attr(\"refX\", 9)\n .attr(\"refY\", 5)\n .attr(\"markerUnits\", \"strokeWidth\")\n .attr(\"markerWidth\", 8)\n .attr(\"markerHeight\", 6)\n .attr(\"orient\", \"auto\");\n\n var path = marker.append(\"path\")\n .attr(\"d\", \"M 0 5 L 10 5\")\n .style(\"stroke-width\", 1)\n .style(\"stroke-dasharray\", \"1,0\");\n util.applyStyle(path, edge[type + \"Style\"]);\n if (edge[type + \"Class\"]) {\n path.attr(\"class\", edge[type + \"Class\"]);\n }\n}\n","var util = require(\"./util\");\nvar d3 = require(\"./d3\");\nvar addLabel = require(\"./label/add-label\");\n\nmodule.exports = createClusters;\n\nfunction createClusters(selection, g) {\n var clusters = g.nodes().filter(function(v) { return util.isSubgraph(g, v); });\n var svgClusters = selection.selectAll(\"g.cluster\")\n .data(clusters, function(v) { return v; });\n\n svgClusters.selectAll(\"*\").remove();\n svgClusters.enter().append(\"g\")\n .attr(\"class\", \"cluster\")\n .attr(\"id\",function(v){\n var node = g.node(v);\n return node.id;\n })\n .style(\"opacity\", 0);\n \n svgClusters = selection.selectAll(\"g.cluster\");\n\n util.applyTransition(svgClusters, g)\n .style(\"opacity\", 1);\n\n svgClusters.each(function(v) {\n var node = g.node(v);\n var thisGroup = d3.select(this);\n d3.select(this).append(\"rect\");\n var labelGroup = thisGroup.append(\"g\").attr(\"class\", \"label\");\n addLabel(labelGroup, node, node.clusterLabelPos);\n });\n\n svgClusters.selectAll(\"rect\").each(function(c) {\n var node = g.node(c);\n var domCluster = d3.select(this);\n util.applyStyle(domCluster, node.style);\n });\n\n var exitSelection;\n\n if (svgClusters.exit) {\n exitSelection = svgClusters.exit();\n } else {\n exitSelection = svgClusters.selectAll(null); // empty selection\n }\n\n util.applyTransition(exitSelection, g)\n .style(\"opacity\", 0)\n .remove();\n\n return svgClusters;\n}\n","\"use strict\";\n\nvar _ = require(\"./lodash\");\nvar addLabel = require(\"./label/add-label\");\nvar util = require(\"./util\");\nvar d3 = require(\"./d3\");\n\nmodule.exports = createEdgeLabels;\n\nfunction createEdgeLabels(selection, g) {\n var svgEdgeLabels = selection.selectAll(\"g.edgeLabel\")\n .data(g.edges(), function(e) { return util.edgeToId(e); })\n .classed(\"update\", true);\n\n svgEdgeLabels.exit().remove();\n svgEdgeLabels.enter().append(\"g\")\n .classed(\"edgeLabel\", true)\n .style(\"opacity\", 0);\n\n svgEdgeLabels = selection.selectAll(\"g.edgeLabel\");\n\n svgEdgeLabels.each(function(e) {\n var root = d3.select(this);\n root.select(\".label\").remove();\n var edge = g.edge(e);\n var label = addLabel(root, g.edge(e), 0, 0).classed(\"label\", true);\n var bbox = label.node().getBBox();\n\n if (edge.labelId) { label.attr(\"id\", edge.labelId); }\n if (!_.has(edge, \"width\")) { edge.width = bbox.width; }\n if (!_.has(edge, \"height\")) { edge.height = bbox.height; }\n });\n\n var exitSelection;\n\n if (svgEdgeLabels.exit) {\n exitSelection = svgEdgeLabels.exit();\n } else {\n exitSelection = svgEdgeLabels.selectAll(null); // empty selection\n }\n\n util.applyTransition(exitSelection, g)\n .style(\"opacity\", 0)\n .remove();\n\n return svgEdgeLabels;\n}\n","\"use strict\";\n\nvar _ = require(\"./lodash\");\nvar intersectNode = require(\"./intersect/intersect-node\");\nvar util = require(\"./util\");\nvar d3 = require(\"./d3\");\nmodule.exports = createEdgePaths;\n\nfunction createEdgePaths(selection, g, arrows) {\n var previousPaths = selection.selectAll(\"g.edgePath\")\n .data(g.edges(), function(e) { return util.edgeToId(e); })\n .classed(\"update\", true);\n\n var newPaths = enter(previousPaths, g);\n exit(previousPaths, g);\n\n var svgPaths = previousPaths.merge !== undefined ? previousPaths.merge(newPaths) : previousPaths;\n util.applyTransition(svgPaths, g)\n .style(\"opacity\", 1);\n\n // Save DOM element in the path group, and set ID and class\n svgPaths.each(function(e) {\n var domEdge = d3.select(this);\n var edge = g.edge(e);\n edge.elem = this;\n\n if (edge.id) {\n domEdge.attr(\"id\", edge.id);\n }\n\n util.applyClass(domEdge, edge[\"class\"],\n (domEdge.classed(\"update\") ? \"update \" : \"\") + \"edgePath\");\n });\n\n svgPaths.selectAll(\"path.path\")\n .each(function(e) {\n var edge = g.edge(e);\n edge.arrowheadId = _.uniqueId(\"arrowhead\");\n\n var domEdge = d3.select(this)\n .attr(\"marker-end\", function() {\n return \"url(\" + makeFragmentRef(location.href, edge.arrowheadId) + \")\";\n })\n .style(\"fill\", \"none\");\n\n util.applyTransition(domEdge, g)\n .attr(\"d\", function(e) { return calcPoints(g, e); });\n\n util.applyStyle(domEdge, edge.style);\n });\n\n svgPaths.selectAll(\"defs *\").remove();\n svgPaths.selectAll(\"defs\")\n .each(function(e) {\n var edge = g.edge(e);\n var arrowhead = arrows[edge.arrowhead];\n arrowhead(d3.select(this), edge.arrowheadId, edge, \"arrowhead\");\n });\n\n return svgPaths;\n}\n\nfunction makeFragmentRef(url, fragmentId) {\n var baseUrl = url.split(\"#\")[0];\n return baseUrl + \"#\" + fragmentId;\n}\n\nfunction calcPoints(g, e) {\n var edge = g.edge(e);\n var tail = g.node(e.v);\n var head = g.node(e.w);\n var points = edge.points.slice(1, edge.points.length - 1);\n points.unshift(intersectNode(tail, points[0]));\n points.push(intersectNode(head, points[points.length - 1]));\n\n return createLine(edge, points);\n}\n\nfunction createLine(edge, points) {\n var line = (d3.line || d3.svg.line)()\n .x(function(d) { return d.x; })\n .y(function(d) { return d.y; });\n \n (line.curve || line.interpolate)(edge.curve);\n\n return line(points);\n}\n\nfunction getCoords(elem) {\n var bbox = elem.getBBox();\n var matrix = elem.ownerSVGElement.getScreenCTM()\n .inverse()\n .multiply(elem.getScreenCTM())\n .translate(bbox.width / 2, bbox.height / 2);\n return { x: matrix.e, y: matrix.f };\n}\n\nfunction enter(svgPaths, g) {\n var svgPathsEnter = svgPaths.enter().append(\"g\")\n .attr(\"class\", \"edgePath\")\n .style(\"opacity\", 0);\n svgPathsEnter.append(\"path\")\n .attr(\"class\", \"path\")\n .attr(\"d\", function(e) {\n var edge = g.edge(e);\n var sourceElem = g.node(e.v).elem;\n var points = _.range(edge.points.length).map(function() { return getCoords(sourceElem); });\n return createLine(edge, points);\n });\n svgPathsEnter.append(\"defs\");\n return svgPathsEnter;\n}\n\nfunction exit(svgPaths, g) {\n var svgPathExit = svgPaths.exit();\n util.applyTransition(svgPathExit, g)\n .style(\"opacity\", 0)\n .remove();\n}\n","\"use strict\";\n\nvar _ = require(\"./lodash\");\nvar addLabel = require(\"./label/add-label\");\nvar util = require(\"./util\");\nvar d3 = require(\"./d3\");\n\nmodule.exports = createNodes;\n\nfunction createNodes(selection, g, shapes) {\n var simpleNodes = g.nodes().filter(function(v) { return !util.isSubgraph(g, v); });\n var svgNodes = selection.selectAll(\"g.node\")\n .data(simpleNodes, function(v) { return v; })\n .classed(\"update\", true);\n\n svgNodes.exit().remove();\n\n svgNodes.enter().append(\"g\")\n .attr(\"class\", \"node\")\n .style(\"opacity\", 0);\n\n svgNodes = selection.selectAll(\"g.node\"); \n\n svgNodes.each(function(v) {\n var node = g.node(v);\n var thisGroup = d3.select(this);\n util.applyClass(thisGroup, node[\"class\"],\n (thisGroup.classed(\"update\") ? \"update \" : \"\") + \"node\");\n\n thisGroup.select(\"g.label\").remove();\n var labelGroup = thisGroup.append(\"g\").attr(\"class\", \"label\");\n var labelDom = addLabel(labelGroup, node);\n var shape = shapes[node.shape];\n var bbox = _.pick(labelDom.node().getBBox(), \"width\", \"height\");\n\n node.elem = this;\n\n if (node.id) { thisGroup.attr(\"id\", node.id); }\n if (node.labelId) { labelGroup.attr(\"id\", node.labelId); }\n\n if (_.has(node, \"width\")) { bbox.width = node.width; }\n if (_.has(node, \"height\")) { bbox.height = node.height; }\n\n bbox.width += node.paddingLeft + node.paddingRight;\n bbox.height += node.paddingTop + node.paddingBottom;\n labelGroup.attr(\"transform\", \"translate(\" +\n ((node.paddingLeft - node.paddingRight) / 2) + \",\" +\n ((node.paddingTop - node.paddingBottom) / 2) + \")\");\n\n var root = d3.select(this);\n root.select(\".label-container\").remove();\n var shapeSvg = shape(root, bbox, node).classed(\"label-container\", true);\n util.applyStyle(shapeSvg, node.style);\n\n var shapeBBox = shapeSvg.node().getBBox();\n node.width = shapeBBox.width;\n node.height = shapeBBox.height;\n });\n\n var exitSelection;\n\n if (svgNodes.exit) {\n exitSelection = svgNodes.exit();\n } else {\n exitSelection = svgNodes.selectAll(null); // empty selection\n }\n\n util.applyTransition(exitSelection, g)\n .style(\"opacity\", 0)\n .remove();\n\n return svgNodes;\n}\n","// Stub to get D3 either via NPM or from the global object\nvar d3;\n\nif (!d3) {\n if (typeof require === \"function\") {\n try {\n d3 = require(\"d3\");\n }\n catch (e) {\n // continue regardless of error\n }\n }\n}\n\nif (!d3) {\n d3 = window.d3;\n}\n\nmodule.exports = d3;\n","/* global window */\n\nvar dagre;\n\nif (typeof require === \"function\") {\n try {\n dagre = require(\"dagre\");\n } catch (e) {\n // continue regardless of error\n }\n}\n\nif (!dagre) {\n dagre = window.dagre;\n}\n\nmodule.exports = dagre;\n","/* global window */\n\nvar graphlib;\n\nif (typeof require === \"function\") {\n try {\n graphlib = require(\"graphlib\");\n }\n catch (e) {\n // continue regardless of error\n }\n}\n\nif (!graphlib) {\n graphlib = window.graphlib;\n}\n\nmodule.exports = graphlib;\n","module.exports = {\n node: require(\"./intersect-node\"),\n circle: require(\"./intersect-circle\"),\n ellipse: require(\"./intersect-ellipse\"),\n polygon: require(\"./intersect-polygon\"),\n rect: require(\"./intersect-rect\")\n};\n","var intersectEllipse = require(\"./intersect-ellipse\");\n\nmodule.exports = intersectCircle;\n\nfunction intersectCircle(node, rx, point) {\n return intersectEllipse(node, rx, rx, point);\n}\n","module.exports = intersectEllipse;\n\nfunction intersectEllipse(node, rx, ry, point) {\n // Formulae from: http://mathworld.wolfram.com/Ellipse-LineIntersection.html\n\n var cx = node.x;\n var cy = node.y;\n\n var px = cx - point.x;\n var py = cy - point.y;\n\n var det = Math.sqrt(rx * rx * py * py + ry * ry * px * px);\n\n var dx = Math.abs(rx * ry * px / det);\n if (point.x < cx) {\n dx = -dx;\n }\n var dy = Math.abs(rx * ry * py / det);\n if (point.y < cy) {\n dy = -dy;\n }\n\n return {x: cx + dx, y: cy + dy};\n}\n\n","module.exports = intersectLine;\n\n/*\n * Returns the point at which two lines, p and q, intersect or returns\n * undefined if they do not intersect.\n */\nfunction intersectLine(p1, p2, q1, q2) {\n // Algorithm from J. Avro, (ed.) Graphics Gems, No 2, Morgan Kaufmann, 1994,\n // p7 and p473.\n\n var a1, a2, b1, b2, c1, c2;\n var r1, r2 , r3, r4;\n var denom, offset, num;\n var x, y;\n\n // Compute a1, b1, c1, where line joining points 1 and 2 is F(x,y) = a1 x +\n // b1 y + c1 = 0.\n a1 = p2.y - p1.y;\n b1 = p1.x - p2.x;\n c1 = (p2.x * p1.y) - (p1.x * p2.y);\n\n // Compute r3 and r4.\n r3 = ((a1 * q1.x) + (b1 * q1.y) + c1);\n r4 = ((a1 * q2.x) + (b1 * q2.y) + c1);\n\n // Check signs of r3 and r4. If both point 3 and point 4 lie on\n // same side of line 1, the line segments do not intersect.\n if ((r3 !== 0) && (r4 !== 0) && sameSign(r3, r4)) {\n return /*DONT_INTERSECT*/;\n }\n\n // Compute a2, b2, c2 where line joining points 3 and 4 is G(x,y) = a2 x + b2 y + c2 = 0\n a2 = q2.y - q1.y;\n b2 = q1.x - q2.x;\n c2 = (q2.x * q1.y) - (q1.x * q2.y);\n\n // Compute r1 and r2\n r1 = (a2 * p1.x) + (b2 * p1.y) + c2;\n r2 = (a2 * p2.x) + (b2 * p2.y) + c2;\n\n // Check signs of r1 and r2. If both point 1 and point 2 lie\n // on same side of second line segment, the line segments do\n // not intersect.\n if ((r1 !== 0) && (r2 !== 0) && (sameSign(r1, r2))) {\n return /*DONT_INTERSECT*/;\n }\n\n // Line segments intersect: compute intersection point.\n denom = (a1 * b2) - (a2 * b1);\n if (denom === 0) {\n return /*COLLINEAR*/;\n }\n\n offset = Math.abs(denom / 2);\n\n // The denom/2 is to get rounding instead of truncating. It\n // is added or subtracted to the numerator, depending upon the\n // sign of the numerator.\n num = (b1 * c2) - (b2 * c1);\n x = (num < 0) ? ((num - offset) / denom) : ((num + offset) / denom);\n\n num = (a2 * c1) - (a1 * c2);\n y = (num < 0) ? ((num - offset) / denom) : ((num + offset) / denom);\n\n return { x: x, y: y };\n}\n\nfunction sameSign(r1, r2) {\n return r1 * r2 > 0;\n}\n","module.exports = intersectNode;\n\nfunction intersectNode(node, point) {\n return node.intersect(point);\n}\n","/* eslint \"no-console\": off */\n\nvar intersectLine = require(\"./intersect-line\");\n\nmodule.exports = intersectPolygon;\n\n/*\n * Returns the point ({x, y}) at which the point argument intersects with the\n * node argument assuming that it has the shape specified by polygon.\n */\nfunction intersectPolygon(node, polyPoints, point) {\n var x1 = node.x;\n var y1 = node.y;\n\n var intersections = [];\n\n var minX = Number.POSITIVE_INFINITY;\n var minY = Number.POSITIVE_INFINITY;\n polyPoints.forEach(function(entry) {\n minX = Math.min(minX, entry.x);\n minY = Math.min(minY, entry.y);\n });\n\n var left = x1 - node.width / 2 - minX;\n var top = y1 - node.height / 2 - minY;\n\n for (var i = 0; i < polyPoints.length; i++) {\n var p1 = polyPoints[i];\n var p2 = polyPoints[i < polyPoints.length - 1 ? i + 1 : 0];\n var intersect = intersectLine(node, point,\n {x: left + p1.x, y: top + p1.y}, {x: left + p2.x, y: top + p2.y});\n if (intersect) {\n intersections.push(intersect);\n }\n }\n\n if (!intersections.length) {\n console.log(\"NO INTERSECTION FOUND, RETURN NODE CENTER\", node);\n return node;\n }\n\n if (intersections.length > 1) {\n // More intersections, find the one nearest to edge end point\n intersections.sort(function(p, q) {\n var pdx = p.x - point.x;\n var pdy = p.y - point.y;\n var distp = Math.sqrt(pdx * pdx + pdy * pdy);\n\n var qdx = q.x - point.x;\n var qdy = q.y - point.y;\n var distq = Math.sqrt(qdx * qdx + qdy * qdy);\n\n return (distp < distq) ? -1 : (distp === distq ? 0 : 1);\n });\n }\n return intersections[0];\n}\n","module.exports = intersectRect;\n\nfunction intersectRect(node, point) {\n var x = node.x;\n var y = node.y;\n\n // Rectangle intersection algorithm from:\n // http://math.stackexchange.com/questions/108113/find-edge-between-two-boxes\n var dx = point.x - x;\n var dy = point.y - y;\n var w = node.width / 2;\n var h = node.height / 2;\n\n var sx, sy;\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\n // Intersection is top or bottom of rect.\n if (dy < 0) {\n h = -h;\n }\n sx = dy === 0 ? 0 : h * dx / dy;\n sy = h;\n } else {\n // Intersection is left or right of rect.\n if (dx < 0) {\n w = -w;\n }\n sx = w;\n sy = dx === 0 ? 0 : w * dy / dx;\n }\n\n return {x: x + sx, y: y + sy};\n}\n","var util = require(\"../util\");\n\nmodule.exports = addHtmlLabel;\n\nfunction addHtmlLabel(root, node) {\n var fo = root\n .append(\"foreignObject\")\n .attr(\"width\", \"100000\");\n\n var div = fo\n .append(\"xhtml:div\");\n div.attr(\"xmlns\", \"http://www.w3.org/1999/xhtml\");\n\n var label = node.label;\n switch(typeof label) {\n case \"function\":\n div.insert(label);\n break;\n case \"object\":\n // Currently we assume this is a DOM object.\n div.insert(function() { return label; });\n break;\n default: div.html(label);\n }\n\n util.applyStyle(div, node.labelStyle);\n div.style(\"display\", \"inline-block\");\n // Fix for firefox\n div.style(\"white-space\", \"nowrap\");\n\n var client = div.node().getBoundingClientRect();\n fo\n .attr(\"width\", client.width)\n .attr(\"height\", client.height); \n\n return fo;\n}\n","var addTextLabel = require(\"./add-text-label\");\nvar addHtmlLabel = require(\"./add-html-label\");\nvar addSVGLabel = require(\"./add-svg-label\");\n\nmodule.exports = addLabel;\n\nfunction addLabel(root, node, location) {\n var label = node.label;\n var labelSvg = root.append(\"g\");\n\n // Allow the label to be a string, a function that returns a DOM element, or\n // a DOM element itself.\n if (node.labelType === \"svg\") {\n addSVGLabel(labelSvg, node);\n } else if (typeof label !== \"string\" || node.labelType === \"html\") {\n addHtmlLabel(labelSvg, node);\n } else {\n addTextLabel(labelSvg, node);\n }\n\n var labelBBox = labelSvg.node().getBBox();\n var y;\n switch(location) {\n case \"top\":\n y = (-node.height / 2);\n break;\n case \"bottom\":\n y = (node.height / 2) - labelBBox.height;\n break;\n default:\n y = (-labelBBox.height / 2);\n }\n labelSvg.attr(\n \"transform\",\n \"translate(\" + (-labelBBox.width / 2) + \",\" + y + \")\");\n\n return labelSvg;\n}\n","var util = require(\"../util\");\n\nmodule.exports = addSVGLabel;\n\nfunction addSVGLabel(root, node) {\n var domNode = root;\n\n domNode.node().appendChild(node.label);\n\n util.applyStyle(domNode, node.labelStyle);\n\n return domNode;\n}\n","var util = require(\"../util\");\n\nmodule.exports = addTextLabel;\n\n/*\n * Attaches a text label to the specified root. Handles escape sequences.\n */\nfunction addTextLabel(root, node) {\n var domNode = root.append(\"text\");\n\n var lines = processEscapeSequences(node.label).split(\"\\n\");\n for (var i = 0; i < lines.length; i++) {\n domNode.append(\"tspan\")\n .attr(\"xml:space\", \"preserve\")\n .attr(\"dy\", \"1em\")\n .attr(\"x\", \"1\")\n .text(lines[i]);\n }\n\n util.applyStyle(domNode, node.labelStyle);\n\n return domNode;\n}\n\nfunction processEscapeSequences(text) {\n var newText = \"\";\n var escaped = false;\n var ch;\n for (var i = 0; i < text.length; ++i) {\n ch = text[i];\n if (escaped) {\n switch(ch) {\n case \"n\": newText += \"\\n\"; break;\n default: newText += ch;\n }\n escaped = false;\n } else if (ch === \"\\\\\") {\n escaped = true;\n } else {\n newText += ch;\n }\n }\n return newText;\n}\n","/* global window */\n\nvar lodash;\n\nif (typeof require === \"function\") {\n try {\n lodash = {\n defaults: require(\"lodash/defaults\"),\n each: require(\"lodash/each\"),\n isFunction: require(\"lodash/isFunction\"),\n isPlainObject: require(\"lodash/isPlainObject\"),\n pick: require(\"lodash/pick\"),\n has: require(\"lodash/has\"),\n range: require(\"lodash/range\"),\n uniqueId: require(\"lodash/uniqueId\")\n };\n }\n catch (e) {\n // continue regardless of error\n }\n}\n\nif (!lodash) {\n lodash = window._;\n}\n\nmodule.exports = lodash;\n","\"use strict\";\n\nvar util = require(\"./util\");\nvar d3 = require(\"./d3\");\n\nmodule.exports = positionClusters;\n\nfunction positionClusters(selection, g) {\n var created = selection.filter(function() { return !d3.select(this).classed(\"update\"); });\n\n function translate(v) {\n var node = g.node(v);\n return \"translate(\" + node.x + \",\" + node.y + \")\";\n }\n\n created.attr(\"transform\", translate);\n\n util.applyTransition(selection, g)\n .style(\"opacity\", 1)\n .attr(\"transform\", translate);\n\n util.applyTransition(created.selectAll(\"rect\"), g)\n .attr(\"width\", function(v) { return g.node(v).width; })\n .attr(\"height\", function(v) { return g.node(v).height; })\n .attr(\"x\", function(v) {\n var node = g.node(v);\n return -node.width / 2;\n })\n .attr(\"y\", function(v) {\n var node = g.node(v);\n return -node.height / 2;\n });\n}\n","\"use strict\";\n\nvar util = require(\"./util\");\nvar d3 = require(\"./d3\");\nvar _ = require(\"./lodash\");\n\nmodule.exports = positionEdgeLabels;\n\nfunction positionEdgeLabels(selection, g) {\n var created = selection.filter(function() { return !d3.select(this).classed(\"update\"); });\n\n function translate(e) {\n var edge = g.edge(e);\n return _.has(edge, \"x\") ? \"translate(\" + edge.x + \",\" + edge.y + \")\" : \"\";\n }\n\n created.attr(\"transform\", translate);\n\n util.applyTransition(selection, g)\n .style(\"opacity\", 1)\n .attr(\"transform\", translate);\n}\n","\"use strict\";\n\nvar util = require(\"./util\");\nvar d3 = require(\"./d3\");\n\nmodule.exports = positionNodes;\n\nfunction positionNodes(selection, g) {\n var created = selection.filter(function() { return !d3.select(this).classed(\"update\"); });\n\n function translate(v) {\n var node = g.node(v);\n return \"translate(\" + node.x + \",\" + node.y + \")\";\n }\n\n created.attr(\"transform\", translate);\n\n util.applyTransition(selection, g)\n .style(\"opacity\", 1)\n .attr(\"transform\", translate);\n}\n","var _ = require(\"./lodash\");\nvar d3 = require(\"./d3\");\nvar layout = require(\"./dagre\").layout;\n\nmodule.exports = render;\n\n// This design is based on http://bost.ocks.org/mike/chart/.\nfunction render() {\n var createNodes = require(\"./create-nodes\");\n var createClusters = require(\"./create-clusters\");\n var createEdgeLabels = require(\"./create-edge-labels\");\n var createEdgePaths = require(\"./create-edge-paths\");\n var positionNodes = require(\"./position-nodes\");\n var positionEdgeLabels = require(\"./position-edge-labels\");\n var positionClusters = require(\"./position-clusters\");\n var shapes = require(\"./shapes\");\n var arrows = require(\"./arrows\");\n\n var fn = function(svg, g) {\n preProcessGraph(g);\n\n var outputGroup = createOrSelectGroup(svg, \"output\");\n var clustersGroup = createOrSelectGroup(outputGroup, \"clusters\");\n var edgePathsGroup = createOrSelectGroup(outputGroup, \"edgePaths\");\n var edgeLabels = createEdgeLabels(createOrSelectGroup(outputGroup, \"edgeLabels\"), g);\n var nodes = createNodes(createOrSelectGroup(outputGroup, \"nodes\"), g, shapes);\n\n layout(g);\n\n positionNodes(nodes, g);\n positionEdgeLabels(edgeLabels, g);\n createEdgePaths(edgePathsGroup, g, arrows);\n\n var clusters = createClusters(clustersGroup, g);\n positionClusters(clusters, g);\n\n postProcessGraph(g);\n };\n\n fn.createNodes = function(value) {\n if (!arguments.length) return createNodes;\n createNodes = value;\n return fn;\n };\n\n fn.createClusters = function(value) {\n if (!arguments.length) return createClusters;\n createClusters = value;\n return fn;\n };\n\n fn.createEdgeLabels = function(value) {\n if (!arguments.length) return createEdgeLabels;\n createEdgeLabels = value;\n return fn;\n };\n\n fn.createEdgePaths = function(value) {\n if (!arguments.length) return createEdgePaths;\n createEdgePaths = value;\n return fn;\n };\n\n fn.shapes = function(value) {\n if (!arguments.length) return shapes;\n shapes = value;\n return fn;\n };\n\n fn.arrows = function(value) {\n if (!arguments.length) return arrows;\n arrows = value;\n return fn;\n };\n\n return fn;\n}\n\nvar NODE_DEFAULT_ATTRS = {\n paddingLeft: 10,\n paddingRight: 10,\n paddingTop: 10,\n paddingBottom: 10,\n rx: 0,\n ry: 0,\n shape: \"rect\"\n};\n\nvar EDGE_DEFAULT_ATTRS = {\n arrowhead: \"normal\",\n curve: d3.curveLinear\n};\n\nfunction preProcessGraph(g) {\n g.nodes().forEach(function(v) {\n var node = g.node(v);\n if (!_.has(node, \"label\") && !g.children(v).length) { node.label = v; }\n\n if (_.has(node, \"paddingX\")) {\n _.defaults(node, {\n paddingLeft: node.paddingX,\n paddingRight: node.paddingX\n });\n }\n\n if (_.has(node, \"paddingY\")) {\n _.defaults(node, {\n paddingTop: node.paddingY,\n paddingBottom: node.paddingY\n });\n }\n\n if (_.has(node, \"padding\")) {\n _.defaults(node, {\n paddingLeft: node.padding,\n paddingRight: node.padding,\n paddingTop: node.padding,\n paddingBottom: node.padding\n });\n }\n\n _.defaults(node, NODE_DEFAULT_ATTRS);\n\n _.each([\"paddingLeft\", \"paddingRight\", \"paddingTop\", \"paddingBottom\"], function(k) {\n node[k] = Number(node[k]);\n });\n\n // Save dimensions for restore during post-processing\n if (_.has(node, \"width\")) { node._prevWidth = node.width; }\n if (_.has(node, \"height\")) { node._prevHeight = node.height; }\n });\n\n g.edges().forEach(function(e) {\n var edge = g.edge(e);\n if (!_.has(edge, \"label\")) { edge.label = \"\"; }\n _.defaults(edge, EDGE_DEFAULT_ATTRS);\n });\n}\n\nfunction postProcessGraph(g) {\n _.each(g.nodes(), function(v) {\n var node = g.node(v);\n\n // Restore original dimensions\n if (_.has(node, \"_prevWidth\")) {\n node.width = node._prevWidth;\n } else {\n delete node.width;\n }\n\n if (_.has(node, \"_prevHeight\")) {\n node.height = node._prevHeight;\n } else {\n delete node.height;\n }\n\n delete node._prevWidth;\n delete node._prevHeight;\n });\n}\n\nfunction createOrSelectGroup(root, name) {\n var selection = root.select(\"g.\" + name);\n if (selection.empty()) {\n selection = root.append(\"g\").attr(\"class\", name);\n }\n return selection;\n}\n","\"use strict\";\n\nvar intersectRect = require(\"./intersect/intersect-rect\");\nvar intersectEllipse = require(\"./intersect/intersect-ellipse\");\nvar intersectCircle = require(\"./intersect/intersect-circle\");\nvar intersectPolygon = require(\"./intersect/intersect-polygon\");\n\nmodule.exports = {\n rect: rect,\n ellipse: ellipse,\n circle: circle,\n diamond: diamond\n};\n\nfunction rect(parent, bbox, node) {\n var shapeSvg = parent.insert(\"rect\", \":first-child\")\n .attr(\"rx\", node.rx)\n .attr(\"ry\", node.ry)\n .attr(\"x\", -bbox.width / 2)\n .attr(\"y\", -bbox.height / 2)\n .attr(\"width\", bbox.width)\n .attr(\"height\", bbox.height);\n\n node.intersect = function(point) {\n return intersectRect(node, point);\n };\n\n return shapeSvg;\n}\n\nfunction ellipse(parent, bbox, node) {\n var rx = bbox.width / 2;\n var ry = bbox.height / 2;\n var shapeSvg = parent.insert(\"ellipse\", \":first-child\")\n .attr(\"x\", -bbox.width / 2)\n .attr(\"y\", -bbox.height / 2)\n .attr(\"rx\", rx)\n .attr(\"ry\", ry);\n\n node.intersect = function(point) {\n return intersectEllipse(node, rx, ry, point);\n };\n\n return shapeSvg;\n}\n\nfunction circle(parent, bbox, node) {\n var r = Math.max(bbox.width, bbox.height) / 2;\n var shapeSvg = parent.insert(\"circle\", \":first-child\")\n .attr(\"x\", -bbox.width / 2)\n .attr(\"y\", -bbox.height / 2)\n .attr(\"r\", r);\n\n node.intersect = function(point) {\n return intersectCircle(node, r, point);\n };\n\n return shapeSvg;\n}\n\n// Circumscribe an ellipse for the bounding box with a diamond shape. I derived\n// the function to calculate the diamond shape from:\n// http://mathforum.org/kb/message.jspa?messageID=3750236\nfunction diamond(parent, bbox, node) {\n var w = (bbox.width * Math.SQRT2) / 2;\n var h = (bbox.height * Math.SQRT2) / 2;\n var points = [\n { x: 0, y: -h },\n { x: -w, y: 0 },\n { x: 0, y: h },\n { x: w, y: 0 }\n ];\n var shapeSvg = parent.insert(\"polygon\", \":first-child\")\n .attr(\"points\", points.map(function(p) { return p.x + \",\" + p.y; }).join(\" \"));\n\n node.intersect = function(p) {\n return intersectPolygon(node, points, p);\n };\n\n return shapeSvg;\n}\n","var _ = require(\"./lodash\");\n\n// Public utility functions\nmodule.exports = {\n isSubgraph: isSubgraph,\n edgeToId: edgeToId,\n applyStyle: applyStyle,\n applyClass: applyClass,\n applyTransition: applyTransition\n};\n\n/*\n * Returns true if the specified node in the graph is a subgraph node. A\n * subgraph node is one that contains other nodes.\n */\nfunction isSubgraph(g, v) {\n return !!g.children(v).length;\n}\n\nfunction edgeToId(e) {\n return escapeId(e.v) + \":\" + escapeId(e.w) + \":\" + escapeId(e.name);\n}\n\nvar ID_DELIM = /:/g;\nfunction escapeId(str) {\n return str ? String(str).replace(ID_DELIM, \"\\\\:\") : \"\";\n}\n\nfunction applyStyle(dom, styleFn) {\n if (styleFn) {\n dom.attr(\"style\", styleFn);\n }\n}\n\nfunction applyClass(dom, classFn, otherClasses) {\n if (classFn) {\n dom\n .attr(\"class\", classFn)\n .attr(\"class\", otherClasses + \" \" + dom.attr(\"class\"));\n }\n}\n\nfunction applyTransition(selection, g) {\n var graph = g.graph();\n\n if (_.isPlainObject(graph)) {\n var transition = graph.transition;\n if (_.isFunction(transition)) {\n return transition(selection);\n }\n }\n\n return selection;\n}\n","module.exports = \"0.6.4\";\n","export var name = \"d3\";\nexport var version = \"5.16.0\";\nexport var description = \"Data-Driven Documents\";\nexport var keywords = [\"dom\",\"visualization\",\"svg\",\"animation\",\"canvas\"];\nexport var homepage = \"https://d3js.org\";\nexport var license = \"BSD-3-Clause\";\nexport var author = {\"name\":\"Mike Bostock\",\"url\":\"https://bost.ocks.org/mike\"};\nexport var main = \"dist/d3.node.js\";\nexport var unpkg = \"dist/d3.min.js\";\nexport var jsdelivr = \"dist/d3.min.js\";\nexport var module = \"index.js\";\nexport var repository = {\"type\":\"git\",\"url\":\"https://github.com/d3/d3.git\"};\nexport var files = [\"dist/**/*.js\",\"index.js\"];\nexport var scripts = {\"pretest\":\"rimraf dist && mkdir dist && json2module package.json > dist/package.js && rollup -c\",\"test\":\"tape 'test/**/*-test.js'\",\"prepublishOnly\":\"yarn test\",\"postpublish\":\"git push && git push --tags && cd ../d3.github.com && git pull && cp ../d3/dist/d3.js d3.v5.js && cp ../d3/dist/d3.min.js d3.v5.min.js && git add d3.v5.js d3.v5.min.js && git commit -m \\\"d3 ${npm_package_version}\\\" && git push && cd - && cd ../d3-bower && git pull && cp ../d3/LICENSE ../d3/README.md ../d3/dist/d3.js ../d3/dist/d3.min.js . && git add -- LICENSE README.md d3.js d3.min.js && git commit -m \\\"${npm_package_version}\\\" && git tag -am \\\"${npm_package_version}\\\" v${npm_package_version} && git push && git push --tags && cd - && zip -j dist/d3.zip -- LICENSE README.md API.md CHANGES.md dist/d3.js dist/d3.min.js\"};\nexport var devDependencies = {\"json2module\":\"0.0\",\"rimraf\":\"2\",\"rollup\":\"1\",\"rollup-plugin-ascii\":\"0.0\",\"rollup-plugin-node-resolve\":\"3\",\"rollup-plugin-terser\":\"5\",\"tape\":\"4\"};\nexport var dependencies = {\"d3-array\":\"1\",\"d3-axis\":\"1\",\"d3-brush\":\"1\",\"d3-chord\":\"1\",\"d3-collection\":\"1\",\"d3-color\":\"1\",\"d3-contour\":\"1\",\"d3-dispatch\":\"1\",\"d3-drag\":\"1\",\"d3-dsv\":\"1\",\"d3-ease\":\"1\",\"d3-fetch\":\"1\",\"d3-force\":\"1\",\"d3-format\":\"1\",\"d3-geo\":\"1\",\"d3-hierarchy\":\"1\",\"d3-interpolate\":\"1\",\"d3-path\":\"1\",\"d3-polygon\":\"1\",\"d3-quadtree\":\"1\",\"d3-random\":\"1\",\"d3-scale\":\"2\",\"d3-scale-chromatic\":\"1\",\"d3-selection\":\"1\",\"d3-shape\":\"1\",\"d3-time\":\"1\",\"d3-time-format\":\"2\",\"d3-timer\":\"1\",\"d3-transition\":\"1\",\"d3-voronoi\":\"1\",\"d3-zoom\":\"1\"};\n","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending\";\n\nexport default function(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n}\n\nfunction ascendingComparator(f) {\n return function(d, x) {\n return ascending(f(d), x);\n };\n}\n","import ascending from \"./ascending\";\nimport bisector from \"./bisector\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","export default function(array, f) {\n if (f == null) f = pair;\n var i = 0, n = array.length - 1, p = array[0], pairs = new Array(n < 0 ? 0 : n);\n while (i < n) pairs[i] = f(p, p = array[++i]);\n return pairs;\n}\n\nexport function pair(a, b) {\n return [a, b];\n}\n","import {pair} from \"./pairs\";\n\nexport default function(values0, values1, reduce) {\n var n0 = values0.length,\n n1 = values1.length,\n values = new Array(n0 * n1),\n i0,\n i1,\n i,\n value0;\n\n if (reduce == null) reduce = pair;\n\n for (i0 = i = 0; i0 < n0; ++i0) {\n for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) {\n values[i] = reduce(value0, values1[i1]);\n }\n }\n\n return values;\n}\n","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","export default function(x) {\n return x === null ? NaN : +x;\n}\n","import number from \"./number\";\n\nexport default function(values, valueof) {\n var n = values.length,\n m = 0,\n i = -1,\n mean = 0,\n value,\n delta,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) {\n delta = value - mean;\n mean += delta / ++m;\n sum += delta * (value - mean);\n }\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) {\n delta = value - mean;\n mean += delta / ++m;\n sum += delta * (value - mean);\n }\n }\n }\n\n if (m > 1) return sum / (m - 1);\n}\n","import variance from \"./variance\";\n\nexport default function(array, f) {\n var v = variance(array, f);\n return v ? Math.sqrt(v) : v;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n min,\n max;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n min = max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n min = max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n }\n\n return [min, max];\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(x) {\n return x;\n}\n","export default function(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) * step;\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while (++i < n) ticks[i] = (start - i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","export default function(values) {\n return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n}\n","import {slice} from \"./array\";\nimport bisect from \"./bisect\";\nimport constant from \"./constant\";\nimport extent from \"./extent\";\nimport identity from \"./identity\";\nimport range from \"./range\";\nimport {tickStep} from \"./ticks\";\nimport sturges from \"./threshold/sturges\";\n\nexport default function() {\n var value = identity,\n domain = extent,\n threshold = sturges;\n\n function histogram(data) {\n var i,\n n = data.length,\n x,\n values = new Array(n);\n\n for (i = 0; i < n; ++i) {\n values[i] = value(data[i], i, data);\n }\n\n var xz = domain(values),\n x0 = xz[0],\n x1 = xz[1],\n tz = threshold(values, x0, x1);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n tz = tickStep(x0, x1, tz);\n tz = range(Math.ceil(x0 / tz) * tz, x1, tz); // exclusive\n }\n\n // Remove any thresholds outside the domain.\n var m = tz.length;\n while (tz[0] <= x0) tz.shift(), --m;\n while (tz[m - 1] > x1) tz.pop(), --m;\n\n var bins = new Array(m + 1),\n bin;\n\n // Initialize bins.\n for (i = 0; i <= m; ++i) {\n bin = bins[i] = [];\n bin.x0 = i > 0 ? tz[i - 1] : x0;\n bin.x1 = i < m ? tz[i] : x1;\n }\n\n // Assign data to bins by value, ignoring any outside the domain.\n for (i = 0; i < n; ++i) {\n x = values[i];\n if (x0 <= x && x <= x1) {\n bins[bisect(tz, x, 0, m)].push(data[i]);\n }\n }\n\n return bins;\n }\n\n histogram.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(_), histogram) : value;\n };\n\n histogram.domain = function(_) {\n return arguments.length ? (domain = typeof _ === \"function\" ? _ : constant([_[0], _[1]]), histogram) : domain;\n };\n\n histogram.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), histogram) : threshold;\n };\n\n return histogram;\n}\n","import number from \"./number\";\n\nexport default function(values, p, valueof) {\n if (valueof == null) valueof = number;\n if (!(n = values.length)) return;\n if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}\n","import {map} from \"../array\";\nimport ascending from \"../ascending\";\nimport number from \"../number\";\nimport quantile from \"../quantile\";\n\nexport default function(values, min, max) {\n values = map.call(values, number).sort(ascending);\n return Math.ceil((max - min) / (2 * (quantile(values, 0.75) - quantile(values, 0.25)) * Math.pow(values.length, -1 / 3)));\n}\n","import deviation from \"../deviation\";\n\nexport default function(values, min, max) {\n return Math.ceil((max - min) / (3.5 * deviation(values) * Math.pow(values.length, -1 / 3)));\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n max;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n return max;\n}\n","import number from \"./number\";\n\nexport default function(values, valueof) {\n var n = values.length,\n m = n,\n i = -1,\n value,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) sum += value;\n else --m;\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) sum += value;\n else --m;\n }\n }\n\n if (m) return sum / m;\n}\n","import ascending from \"./ascending\";\nimport number from \"./number\";\nimport quantile from \"./quantile\";\n\nexport default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n numbers = [];\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) {\n numbers.push(value);\n }\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) {\n numbers.push(value);\n }\n }\n }\n\n return quantile(numbers.sort(ascending), 0.5);\n}\n","export default function(arrays) {\n var n = arrays.length,\n m,\n i = -1,\n j = 0,\n merged,\n array;\n\n while (++i < n) j += arrays[i].length;\n merged = new Array(j);\n\n while (--n >= 0) {\n array = arrays[n];\n m = array.length;\n while (--m >= 0) {\n merged[--j] = array[m];\n }\n }\n\n return merged;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n min;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n min = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null && min > value) {\n min = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n min = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null && min > value) {\n min = value;\n }\n }\n }\n }\n }\n\n return min;\n}\n","export default function(array, indexes) {\n var i = indexes.length, permutes = new Array(i);\n while (i--) permutes[i] = array[indexes[i]];\n return permutes;\n}\n","import ascending from \"./ascending\";\n\nexport default function(values, compare) {\n if (!(n = values.length)) return;\n var n,\n i = 0,\n j = 0,\n xi,\n xj = values[j];\n\n if (compare == null) compare = ascending;\n\n while (++i < n) {\n if (compare(xi = values[i], xj) < 0 || compare(xj, xj) !== 0) {\n xj = xi, j = i;\n }\n }\n\n if (compare(xj, xj) === 0) return j;\n}\n","export default function(array, i0, i1) {\n var m = (i1 == null ? array.length : i1) - (i0 = i0 == null ? 0 : +i0),\n t,\n i;\n\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m + i0];\n array[m + i0] = array[i + i0];\n array[i + i0] = t;\n }\n\n return array;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (value = +values[i]) sum += value; // Note: zero and null are equivalent.\n }\n }\n\n else {\n while (++i < n) {\n if (value = +valueof(values[i], i, values)) sum += value;\n }\n }\n\n return sum;\n}\n","import min from \"./min\";\n\nexport default function(matrix) {\n if (!(n = matrix.length)) return [];\n for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) {\n for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {\n row[j] = matrix[j][i];\n }\n }\n return transpose;\n}\n\nfunction length(d) {\n return d.length;\n}\n","import transpose from \"./transpose\";\n\nexport default function() {\n return transpose(arguments);\n}\n","export var slice = Array.prototype.slice;\n","export default function(x) {\n return x;\n}\n","import {slice} from \"./array\";\nimport identity from \"./identity\";\n\nvar top = 1,\n right = 2,\n bottom = 3,\n left = 4,\n epsilon = 1e-6;\n\nfunction translateX(x) {\n return \"translate(\" + (x + 0.5) + \",0)\";\n}\n\nfunction translateY(y) {\n return \"translate(0,\" + (y + 0.5) + \")\";\n}\n\nfunction number(scale) {\n return function(d) {\n return +scale(d);\n };\n}\n\nfunction center(scale) {\n var offset = Math.max(0, scale.bandwidth() - 1) / 2; // Adjust for 0.5px offset.\n if (scale.round()) offset = Math.round(offset);\n return function(d) {\n return +scale(d) + offset;\n };\n}\n\nfunction entering() {\n return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n var tickArguments = [],\n tickValues = null,\n tickFormat = null,\n tickSizeInner = 6,\n tickSizeOuter = 6,\n tickPadding = 3,\n k = orient === top || orient === left ? -1 : 1,\n x = orient === left || orient === right ? \"x\" : \"y\",\n transform = orient === top || orient === bottom ? translateX : translateY;\n\n function axis(context) {\n var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n spacing = Math.max(tickSizeInner, 0) + tickPadding,\n range = scale.range(),\n range0 = +range[0] + 0.5,\n range1 = +range[range.length - 1] + 0.5,\n position = (scale.bandwidth ? center : number)(scale.copy()),\n selection = context.selection ? context.selection() : context,\n path = selection.selectAll(\".domain\").data([null]),\n tick = selection.selectAll(\".tick\").data(values, scale).order(),\n tickExit = tick.exit(),\n tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n line = tick.select(\"line\"),\n text = tick.select(\"text\");\n\n path = path.merge(path.enter().insert(\"path\", \".tick\")\n .attr(\"class\", \"domain\")\n .attr(\"stroke\", \"currentColor\"));\n\n tick = tick.merge(tickEnter);\n\n line = line.merge(tickEnter.append(\"line\")\n .attr(\"stroke\", \"currentColor\")\n .attr(x + \"2\", k * tickSizeInner));\n\n text = text.merge(tickEnter.append(\"text\")\n .attr(\"fill\", \"currentColor\")\n .attr(x, k * spacing)\n .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n if (context !== selection) {\n path = path.transition(context);\n tick = tick.transition(context);\n line = line.transition(context);\n text = text.transition(context);\n\n tickExit = tickExit.transition(context)\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d) : this.getAttribute(\"transform\"); });\n\n tickEnter\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform(p && isFinite(p = p(d)) ? p : position(d)); });\n }\n\n tickExit.remove();\n\n path\n .attr(\"d\", orient === left || orient == right\n ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H0.5V\" + range1 + \"H\" + k * tickSizeOuter : \"M0.5,\" + range0 + \"V\" + range1)\n : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V0.5H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",0.5H\" + range1));\n\n tick\n .attr(\"opacity\", 1)\n .attr(\"transform\", function(d) { return transform(position(d)); });\n\n line\n .attr(x + \"2\", k * tickSizeInner);\n\n text\n .attr(x, k * spacing)\n .text(format);\n\n selection.filter(entering)\n .attr(\"fill\", \"none\")\n .attr(\"font-size\", 10)\n .attr(\"font-family\", \"sans-serif\")\n .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n selection\n .each(function() { this.__axis = position; });\n }\n\n axis.scale = function(_) {\n return arguments.length ? (scale = _, axis) : scale;\n };\n\n axis.ticks = function() {\n return tickArguments = slice.call(arguments), axis;\n };\n\n axis.tickArguments = function(_) {\n return arguments.length ? (tickArguments = _ == null ? [] : slice.call(_), axis) : tickArguments.slice();\n };\n\n axis.tickValues = function(_) {\n return arguments.length ? (tickValues = _ == null ? null : slice.call(_), axis) : tickValues && tickValues.slice();\n };\n\n axis.tickFormat = function(_) {\n return arguments.length ? (tickFormat = _, axis) : tickFormat;\n };\n\n axis.tickSize = function(_) {\n return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeInner = function(_) {\n return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeOuter = function(_) {\n return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n };\n\n axis.tickPadding = function(_) {\n return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n };\n\n return axis;\n}\n\nexport function axisTop(scale) {\n return axis(top, scale);\n}\n\nexport function axisRight(scale) {\n return axis(right, scale);\n}\n\nexport function axisBottom(scale) {\n return axis(bottom, scale);\n}\n\nexport function axisLeft(scale) {\n return axis(left, scale);\n}\n","var noop = {value: function() {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","import {Selection} from \"./index\";\nimport {EnterNode} from \"./enter\";\nimport constant from \"../constant\";\n\nvar keyPrefix = \"$\"; // Protect against keys like “__proto__”.\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = {},\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);\n if (keyValue in nodeByKeyValue) {\n exit[i] = node;\n } else {\n nodeByKeyValue[keyValue] = node;\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = keyPrefix + key.call(parent, data[i], i, data);\n if (node = nodeByKeyValue[keyValue]) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue[keyValue] = null;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {\n exit[i] = node;\n }\n }\n}\n\nexport default function(value, key) {\n if (!value) {\n data = new Array(this.size()), j = -1;\n this.each(function(d) { data[++j] = d; });\n return data;\n }\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = value.call(parent, parent && parent.__data__, j, parents),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name;\n}\n","import namespace from \"../namespace\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import namespace from \"./namespace\";\nimport {xhtml} from \"./namespaces\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","import creator from \"../creator\";\nimport selector from \"../selector\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","var filterEvents = {};\n\nexport var event = null;\n\nif (typeof document !== \"undefined\") {\n var element = document.documentElement;\n if (!(\"onmouseenter\" in element)) {\n filterEvents = {mouseenter: \"mouseover\", mouseleave: \"mouseout\"};\n }\n}\n\nfunction filterContextListener(listener, index, group) {\n listener = contextListener(listener, index, group);\n return function(event) {\n var related = event.relatedTarget;\n if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {\n listener.call(this, event);\n }\n };\n}\n\nfunction contextListener(listener, index, group) {\n return function(event1) {\n var event0 = event; // Events can be reentrant (e.g., focus).\n event = event1;\n try {\n listener.call(this, this.__data__, index, group);\n } finally {\n event = event0;\n }\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, capture) {\n var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;\n return function(d, i, group) {\n var on = this.__on, o, listener = wrap(value, i, group);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n this.addEventListener(o.type, o.listener = listener, o.capture = capture);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, capture);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, capture) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n if (capture == null) capture = false;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));\n return this;\n}\n\nexport function customEvent(event1, listener, that, args) {\n var event0 = event;\n event1.sourceEvent = event;\n event = event1;\n try {\n return listener.apply(that, args);\n } finally {\n event = event0;\n }\n}\n","import defaultView from \"../window\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","import selection_select from \"./select\";\nimport selection_selectAll from \"./selectAll\";\nimport selection_filter from \"./filter\";\nimport selection_data from \"./data\";\nimport selection_enter from \"./enter\";\nimport selection_exit from \"./exit\";\nimport selection_join from \"./join\";\nimport selection_merge from \"./merge\";\nimport selection_order from \"./order\";\nimport selection_sort from \"./sort\";\nimport selection_call from \"./call\";\nimport selection_nodes from \"./nodes\";\nimport selection_node from \"./node\";\nimport selection_size from \"./size\";\nimport selection_empty from \"./empty\";\nimport selection_each from \"./each\";\nimport selection_attr from \"./attr\";\nimport selection_style from \"./style\";\nimport selection_property from \"./property\";\nimport selection_classed from \"./classed\";\nimport selection_text from \"./text\";\nimport selection_html from \"./html\";\nimport selection_raise from \"./raise\";\nimport selection_lower from \"./lower\";\nimport selection_append from \"./append\";\nimport selection_insert from \"./insert\";\nimport selection_remove from \"./remove\";\nimport selection_clone from \"./clone\";\nimport selection_datum from \"./datum\";\nimport selection_on from \"./on\";\nimport selection_dispatch from \"./dispatch\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch\n};\n\nexport default selection;\n","import {Selection} from \"./index\";\nimport selector from \"../selector\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import {Selection} from \"./index\";\nimport selectorAll from \"../selectorAll\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","import {Selection} from \"./index\";\nimport matcher from \"../matcher\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n enter = typeof onenter === \"function\" ? onenter(enter) : enter.append(onenter + \"\");\n if (onupdate != null) update = onupdate(update);\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(selection) {\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n var nodes = new Array(this.size()), i = -1;\n this.each(function() { nodes[++i] = this; });\n return nodes;\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n var size = 0;\n this.each(function() { ++size; });\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import creator from \"../creator\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {select} from \"d3-selection\";\nimport noevent from \"./noevent.js\";\n\nexport default function(view) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", noevent, true);\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", noevent, true);\n } else {\n root.__noselect = root.style.MozUserSelect;\n root.style.MozUserSelect = \"none\";\n }\n}\n\nexport function yesdrag(view, noclick) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", null);\n if (noclick) {\n selection.on(\"click.drag\", noevent, true);\n setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n }\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", null);\n } else {\n root.style.MozUserSelect = root.__noselect;\n delete root.__noselect;\n }\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","import {event} from \"./selection/on\";\n\nexport default function() {\n var current = event, source;\n while (source = current.sourceEvent) current = source;\n return current;\n}\n","export default function(node, event) {\n var svg = node.ownerSVGElement || node;\n\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node, touches, identifier) {\n if (arguments.length < 3) identifier = touches, touches = sourceEvent().changedTouches;\n\n for (var i = 0, n = touches ? touches.length : 0, touch; i < n; ++i) {\n if ((touch = touches[i]).identifier === identifier) {\n return point(node, touch);\n }\n }\n\n return null;\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node) {\n var event = sourceEvent();\n if (event.changedTouches) event = event.changedTouches[0];\n return point(node, event);\n}\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(function(elapsed) {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar cssNode,\n cssRoot,\n cssView,\n svgNode;\n\nexport function parseCss(value) {\n if (value === \"none\") return identity;\n if (!cssNode) cssNode = document.createElement(\"DIV\"), cssRoot = document.documentElement, cssView = document.defaultView;\n cssNode.style.transform = value;\n value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue(\"transform\");\n cssRoot.removeChild(cssNode);\n value = value.slice(7, -1).split(\",\");\n return decompose(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n end: transition_end\n};\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n });\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n return defaultTiming.time = now(), defaultTiming;\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","import {Transition} from \"./transition/index.js\";\nimport {SCHEDULED} from \"./transition/schedule.js\";\n\nvar root = [null];\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n i;\n\n if (schedules) {\n name = name == null ? null : name + \"\";\n for (i in schedules) {\n if ((schedule = schedules[i]).state > SCHEDULED && schedule.name === name) {\n return new Transition([[node]], root, name, +i);\n }\n }\n }\n\n return null;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(target, type, selection) {\n this.target = target;\n this.type = type;\n this.selection = selection;\n}\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {customEvent, event, touch, mouse, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport BrushEvent from \"./event.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\nvar MODE_DRAG = {name: \"drag\"},\n MODE_SPACE = {name: \"space\"},\n MODE_HANDLE = {name: \"handle\"},\n MODE_CENTER = {name: \"center\"};\n\nfunction number1(e) {\n return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n return [number1(e[0]), number1(e[1])];\n}\n\nfunction toucher(identifier) {\n return function(target) {\n return touch(target, event.touches, identifier);\n };\n}\n\nvar X = {\n name: \"x\",\n handles: [\"w\", \"e\"].map(type),\n input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },\n output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n name: \"y\",\n handles: [\"n\", \"s\"].map(type),\n input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },\n output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n name: \"xy\",\n handles: [\"n\", \"w\", \"e\", \"s\", \"nw\", \"ne\", \"sw\", \"se\"].map(type),\n input: function(xy) { return xy == null ? null : number2(xy); },\n output: function(xy) { return xy; }\n};\n\nvar cursors = {\n overlay: \"crosshair\",\n selection: \"move\",\n n: \"ns-resize\",\n e: \"ew-resize\",\n s: \"ns-resize\",\n w: \"ew-resize\",\n nw: \"nwse-resize\",\n ne: \"nesw-resize\",\n se: \"nwse-resize\",\n sw: \"nesw-resize\"\n};\n\nvar flipX = {\n e: \"w\",\n w: \"e\",\n nw: \"ne\",\n ne: \"nw\",\n se: \"sw\",\n sw: \"se\"\n};\n\nvar flipY = {\n n: \"s\",\n s: \"n\",\n nw: \"sw\",\n ne: \"se\",\n se: \"ne\",\n sw: \"nw\"\n};\n\nvar signsX = {\n overlay: +1,\n selection: +1,\n n: null,\n e: +1,\n s: null,\n w: -1,\n nw: -1,\n ne: +1,\n se: +1,\n sw: -1\n};\n\nvar signsY = {\n overlay: +1,\n selection: +1,\n n: -1,\n e: null,\n s: +1,\n w: null,\n nw: -1,\n ne: -1,\n se: +1,\n sw: +1\n};\n\nfunction type(t) {\n return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var svg = this.ownerSVGElement || this;\n if (svg.hasAttribute(\"viewBox\")) {\n svg = svg.viewBox.baseVal;\n return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];\n }\n return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n// Like d3.local, but with the name “__brush” rather than auto-generated.\nfunction local(node) {\n while (!node.__brush) if (!(node = node.parentNode)) return;\n return node.__brush;\n}\n\nfunction empty(extent) {\n return extent[0][0] === extent[1][0]\n || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n var state = node.__brush;\n return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n return brush(X);\n}\n\nexport function brushY() {\n return brush(Y);\n}\n\nexport default function() {\n return brush(XY);\n}\n\nfunction brush(dim) {\n var extent = defaultExtent,\n filter = defaultFilter,\n touchable = defaultTouchable,\n keys = true,\n listeners = dispatch(\"start\", \"brush\", \"end\"),\n handleSize = 6,\n touchending;\n\n function brush(group) {\n var overlay = group\n .property(\"__brush\", initialize)\n .selectAll(\".overlay\")\n .data([type(\"overlay\")]);\n\n overlay.enter().append(\"rect\")\n .attr(\"class\", \"overlay\")\n .attr(\"pointer-events\", \"all\")\n .attr(\"cursor\", cursors.overlay)\n .merge(overlay)\n .each(function() {\n var extent = local(this).extent;\n select(this)\n .attr(\"x\", extent[0][0])\n .attr(\"y\", extent[0][1])\n .attr(\"width\", extent[1][0] - extent[0][0])\n .attr(\"height\", extent[1][1] - extent[0][1]);\n });\n\n group.selectAll(\".selection\")\n .data([type(\"selection\")])\n .enter().append(\"rect\")\n .attr(\"class\", \"selection\")\n .attr(\"cursor\", cursors.selection)\n .attr(\"fill\", \"#777\")\n .attr(\"fill-opacity\", 0.3)\n .attr(\"stroke\", \"#fff\")\n .attr(\"shape-rendering\", \"crispEdges\");\n\n var handle = group.selectAll(\".handle\")\n .data(dim.handles, function(d) { return d.type; });\n\n handle.exit().remove();\n\n handle.enter().append(\"rect\")\n .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n group\n .each(redraw)\n .attr(\"fill\", \"none\")\n .attr(\"pointer-events\", \"all\")\n .on(\"mousedown.brush\", started)\n .filter(touchable)\n .on(\"touchstart.brush\", started)\n .on(\"touchmove.brush\", touchmoved)\n .on(\"touchend.brush touchcancel.brush\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n brush.move = function(group, selection) {\n if (group.selection) {\n group\n .on(\"start.brush\", function() { emitter(this, arguments).beforestart().start(); })\n .on(\"interrupt.brush end.brush\", function() { emitter(this, arguments).end(); })\n .tween(\"brush\", function() {\n var that = this,\n state = that.__brush,\n emit = emitter(that, arguments),\n selection0 = state.selection,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n i = interpolate(selection0, selection1);\n\n function tween(t) {\n state.selection = t === 1 && selection1 === null ? null : i(t);\n redraw.call(that);\n emit.brush();\n }\n\n return selection0 !== null && selection1 !== null ? tween : tween(1);\n });\n } else {\n group\n .each(function() {\n var that = this,\n args = arguments,\n state = that.__brush,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n emit = emitter(that, args).beforestart();\n\n interrupt(that);\n state.selection = selection1 === null ? null : selection1;\n redraw.call(that);\n emit.start().brush().end();\n });\n }\n };\n\n brush.clear = function(group) {\n brush.move(group, null);\n };\n\n function redraw() {\n var group = select(this),\n selection = local(this).selection;\n\n if (selection) {\n group.selectAll(\".selection\")\n .style(\"display\", null)\n .attr(\"x\", selection[0][0])\n .attr(\"y\", selection[0][1])\n .attr(\"width\", selection[1][0] - selection[0][0])\n .attr(\"height\", selection[1][1] - selection[0][1]);\n\n group.selectAll(\".handle\")\n .style(\"display\", null)\n .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n }\n\n else {\n group.selectAll(\".selection,.handle\")\n .style(\"display\", \"none\")\n .attr(\"x\", null)\n .attr(\"y\", null)\n .attr(\"width\", null)\n .attr(\"height\", null);\n }\n }\n\n function emitter(that, args, clean) {\n var emit = that.__brush.emitter;\n return emit && (!clean || !emit.clean) ? emit : new Emitter(that, args, clean);\n }\n\n function Emitter(that, args, clean) {\n this.that = that;\n this.args = args;\n this.state = that.__brush;\n this.active = 0;\n this.clean = clean;\n }\n\n Emitter.prototype = {\n beforestart: function() {\n if (++this.active === 1) this.state.emitter = this, this.starting = true;\n return this;\n },\n start: function() {\n if (this.starting) this.starting = false, this.emit(\"start\");\n else this.emit(\"brush\");\n return this;\n },\n brush: function() {\n this.emit(\"brush\");\n return this;\n },\n end: function() {\n if (--this.active === 0) delete this.state.emitter, this.emit(\"end\");\n return this;\n },\n emit: function(type) {\n customEvent(new BrushEvent(brush, type, dim.output(this.state.selection)), listeners.apply, listeners, [type, this.that, this.args]);\n }\n };\n\n function started() {\n if (touchending && !event.touches) return;\n if (!filter.apply(this, arguments)) return;\n\n var that = this,\n type = event.target.__data__.type,\n mode = (keys && event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE),\n signX = dim === Y ? null : signsX[type],\n signY = dim === X ? null : signsY[type],\n state = local(that),\n extent = state.extent,\n selection = state.selection,\n W = extent[0][0], w0, w1,\n N = extent[0][1], n0, n1,\n E = extent[1][0], e0, e1,\n S = extent[1][1], s0, s1,\n dx = 0,\n dy = 0,\n moving,\n shifting = signX && signY && keys && event.shiftKey,\n lockX,\n lockY,\n pointer = event.touches ? toucher(event.changedTouches[0].identifier) : mouse,\n point0 = pointer(that),\n point = point0,\n emit = emitter(that, arguments, true).beforestart();\n\n if (type === \"overlay\") {\n if (selection) moving = true;\n state.selection = selection = [\n [w0 = dim === Y ? W : point0[0], n0 = dim === X ? N : point0[1]],\n [e0 = dim === Y ? E : w0, s0 = dim === X ? S : n0]\n ];\n } else {\n w0 = selection[0][0];\n n0 = selection[0][1];\n e0 = selection[1][0];\n s0 = selection[1][1];\n }\n\n w1 = w0;\n n1 = n0;\n e1 = e0;\n s1 = s0;\n\n var group = select(that)\n .attr(\"pointer-events\", \"none\");\n\n var overlay = group.selectAll(\".overlay\")\n .attr(\"cursor\", cursors[type]);\n\n if (event.touches) {\n emit.moved = moved;\n emit.ended = ended;\n } else {\n var view = select(event.view)\n .on(\"mousemove.brush\", moved, true)\n .on(\"mouseup.brush\", ended, true);\n if (keys) view\n .on(\"keydown.brush\", keydowned, true)\n .on(\"keyup.brush\", keyupped, true)\n\n dragDisable(event.view);\n }\n\n nopropagation();\n interrupt(that);\n redraw.call(that);\n emit.start();\n\n function moved() {\n var point1 = pointer(that);\n if (shifting && !lockX && !lockY) {\n if (Math.abs(point1[0] - point[0]) > Math.abs(point1[1] - point[1])) lockY = true;\n else lockX = true;\n }\n point = point1;\n moving = true;\n noevent();\n move();\n }\n\n function move() {\n var t;\n\n dx = point[0] - point0[0];\n dy = point[1] - point0[1];\n\n switch (mode) {\n case MODE_SPACE:\n case MODE_DRAG: {\n if (signX) dx = Math.max(W - w0, Math.min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n if (signY) dy = Math.max(N - n0, Math.min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n break;\n }\n case MODE_HANDLE: {\n if (signX < 0) dx = Math.max(W - w0, Math.min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n else if (signX > 0) dx = Math.max(W - e0, Math.min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n if (signY < 0) dy = Math.max(N - n0, Math.min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n else if (signY > 0) dy = Math.max(N - s0, Math.min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n break;\n }\n case MODE_CENTER: {\n if (signX) w1 = Math.max(W, Math.min(E, w0 - dx * signX)), e1 = Math.max(W, Math.min(E, e0 + dx * signX));\n if (signY) n1 = Math.max(N, Math.min(S, n0 - dy * signY)), s1 = Math.max(N, Math.min(S, s0 + dy * signY));\n break;\n }\n }\n\n if (e1 < w1) {\n signX *= -1;\n t = w0, w0 = e0, e0 = t;\n t = w1, w1 = e1, e1 = t;\n if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n }\n\n if (s1 < n1) {\n signY *= -1;\n t = n0, n0 = s0, s0 = t;\n t = n1, n1 = s1, s1 = t;\n if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n }\n\n if (state.selection) selection = state.selection; // May be set by brush.move!\n if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n if (selection[0][0] !== w1\n || selection[0][1] !== n1\n || selection[1][0] !== e1\n || selection[1][1] !== s1) {\n state.selection = [[w1, n1], [e1, s1]];\n redraw.call(that);\n emit.brush();\n }\n }\n\n function ended() {\n nopropagation();\n if (event.touches) {\n if (event.touches.length) return;\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n } else {\n dragEnable(event.view, moving);\n view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n }\n group.attr(\"pointer-events\", \"all\");\n overlay.attr(\"cursor\", cursors.overlay);\n if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n if (empty(selection)) state.selection = null, redraw.call(that);\n emit.end();\n }\n\n function keydowned() {\n switch (event.keyCode) {\n case 16: { // SHIFT\n shifting = signX && signY;\n break;\n }\n case 18: { // ALT\n if (mode === MODE_HANDLE) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n move();\n }\n break;\n }\n case 32: { // SPACE; takes priority over ALT\n if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n mode = MODE_SPACE;\n overlay.attr(\"cursor\", cursors.selection);\n move();\n }\n break;\n }\n default: return;\n }\n noevent();\n }\n\n function keyupped() {\n switch (event.keyCode) {\n case 16: { // SHIFT\n if (shifting) {\n lockX = lockY = shifting = false;\n move();\n }\n break;\n }\n case 18: { // ALT\n if (mode === MODE_CENTER) {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n move();\n }\n break;\n }\n case 32: { // SPACE\n if (mode === MODE_SPACE) {\n if (event.altKey) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n } else {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n }\n overlay.attr(\"cursor\", cursors[type]);\n move();\n }\n break;\n }\n default: return;\n }\n noevent();\n }\n }\n\n function touchmoved() {\n emitter(this, arguments).moved();\n }\n\n function touchended() {\n emitter(this, arguments).ended();\n }\n\n function initialize() {\n var state = this.__brush || {selection: null};\n state.extent = number2(extent.apply(this, arguments));\n state.dim = dim;\n return state;\n }\n\n brush.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant(number2(_)), brush) : extent;\n };\n\n brush.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n };\n\n brush.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), brush) : touchable;\n };\n\n brush.handleSize = function(_) {\n return arguments.length ? (handleSize = +_, brush) : handleSize;\n };\n\n brush.keyModifiers = function(_) {\n return arguments.length ? (keys = !!_, brush) : keys;\n };\n\n brush.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? brush : value;\n };\n\n return brush;\n}\n","export var cos = Math.cos;\nexport var sin = Math.sin;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = pi * 2;\nexport var max = Math.max;\n","import {range} from \"d3-array\";\nimport {max, tau} from \"./math\";\n\nfunction compareValue(compare) {\n return function(a, b) {\n return compare(\n a.source.value + a.target.value,\n b.source.value + b.target.value\n );\n };\n}\n\nexport default function() {\n var padAngle = 0,\n sortGroups = null,\n sortSubgroups = null,\n sortChords = null;\n\n function chord(matrix) {\n var n = matrix.length,\n groupSums = [],\n groupIndex = range(n),\n subgroupIndex = [],\n chords = [],\n groups = chords.groups = new Array(n),\n subgroups = new Array(n * n),\n k,\n x,\n x0,\n dx,\n i,\n j;\n\n // Compute the sum.\n k = 0, i = -1; while (++i < n) {\n x = 0, j = -1; while (++j < n) {\n x += matrix[i][j];\n }\n groupSums.push(x);\n subgroupIndex.push(range(n));\n k += x;\n }\n\n // Sort groups…\n if (sortGroups) groupIndex.sort(function(a, b) {\n return sortGroups(groupSums[a], groupSums[b]);\n });\n\n // Sort subgroups…\n if (sortSubgroups) subgroupIndex.forEach(function(d, i) {\n d.sort(function(a, b) {\n return sortSubgroups(matrix[i][a], matrix[i][b]);\n });\n });\n\n // Convert the sum to scaling factor for [0, 2pi].\n // TODO Allow start and end angle to be specified?\n // TODO Allow padding to be specified as percentage?\n k = max(0, tau - padAngle * n) / k;\n dx = k ? padAngle : tau / n;\n\n // Compute the start and end angle for each group and subgroup.\n // Note: Opera has a bug reordering object literal properties!\n x = 0, i = -1; while (++i < n) {\n x0 = x, j = -1; while (++j < n) {\n var di = groupIndex[i],\n dj = subgroupIndex[di][j],\n v = matrix[di][dj],\n a0 = x,\n a1 = x += v * k;\n subgroups[dj * n + di] = {\n index: di,\n subindex: dj,\n startAngle: a0,\n endAngle: a1,\n value: v\n };\n }\n groups[di] = {\n index: di,\n startAngle: x0,\n endAngle: x,\n value: groupSums[di]\n };\n x += dx;\n }\n\n // Generate chords for each (non-empty) subgroup-subgroup link.\n i = -1; while (++i < n) {\n j = i - 1; while (++j < n) {\n var source = subgroups[j * n + i],\n target = subgroups[i * n + j];\n if (source.value || target.value) {\n chords.push(source.value < target.value\n ? {source: target, target: source}\n : {source: source, target: target});\n }\n }\n }\n\n return sortChords ? chords.sort(sortChords) : chords;\n }\n\n chord.padAngle = function(_) {\n return arguments.length ? (padAngle = max(0, _), chord) : padAngle;\n };\n\n chord.sortGroups = function(_) {\n return arguments.length ? (sortGroups = _, chord) : sortGroups;\n };\n\n chord.sortSubgroups = function(_) {\n return arguments.length ? (sortSubgroups = _, chord) : sortSubgroups;\n };\n\n chord.sortChords = function(_) {\n return arguments.length ? (_ == null ? sortChords = null : (sortChords = compareValue(_))._ = _, chord) : sortChords && sortChords._;\n };\n\n return chord;\n}\n","export var slice = Array.prototype.slice;\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","var pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n","import {slice} from \"./array\";\nimport constant from \"./constant\";\nimport {cos, halfPi, sin} from \"./math\";\nimport {path} from \"d3-path\";\n\nfunction defaultSource(d) {\n return d.source;\n}\n\nfunction defaultTarget(d) {\n return d.target;\n}\n\nfunction defaultRadius(d) {\n return d.radius;\n}\n\nfunction defaultStartAngle(d) {\n return d.startAngle;\n}\n\nfunction defaultEndAngle(d) {\n return d.endAngle;\n}\n\nexport default function() {\n var source = defaultSource,\n target = defaultTarget,\n radius = defaultRadius,\n startAngle = defaultStartAngle,\n endAngle = defaultEndAngle,\n context = null;\n\n function ribbon() {\n var buffer,\n argv = slice.call(arguments),\n s = source.apply(this, argv),\n t = target.apply(this, argv),\n sr = +radius.apply(this, (argv[0] = s, argv)),\n sa0 = startAngle.apply(this, argv) - halfPi,\n sa1 = endAngle.apply(this, argv) - halfPi,\n sx0 = sr * cos(sa0),\n sy0 = sr * sin(sa0),\n tr = +radius.apply(this, (argv[0] = t, argv)),\n ta0 = startAngle.apply(this, argv) - halfPi,\n ta1 = endAngle.apply(this, argv) - halfPi;\n\n if (!context) context = buffer = path();\n\n context.moveTo(sx0, sy0);\n context.arc(0, 0, sr, sa0, sa1);\n if (sa0 !== ta0 || sa1 !== ta1) { // TODO sr !== tr?\n context.quadraticCurveTo(0, 0, tr * cos(ta0), tr * sin(ta0));\n context.arc(0, 0, tr, ta0, ta1);\n }\n context.quadraticCurveTo(0, 0, sx0, sy0);\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n ribbon.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), ribbon) : radius;\n };\n\n ribbon.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : startAngle;\n };\n\n ribbon.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : endAngle;\n };\n\n ribbon.source = function(_) {\n return arguments.length ? (source = _, ribbon) : source;\n };\n\n ribbon.target = function(_) {\n return arguments.length ? (target = _, ribbon) : target;\n };\n\n ribbon.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), ribbon) : context;\n };\n\n return ribbon;\n}\n","export var prefix = \"$\";\n\nfunction Map() {}\n\nMap.prototype = map.prototype = {\n constructor: Map,\n has: function(key) {\n return (prefix + key) in this;\n },\n get: function(key) {\n return this[prefix + key];\n },\n set: function(key, value) {\n this[prefix + key] = value;\n return this;\n },\n remove: function(key) {\n var property = prefix + key;\n return property in this && delete this[property];\n },\n clear: function() {\n for (var property in this) if (property[0] === prefix) delete this[property];\n },\n keys: function() {\n var keys = [];\n for (var property in this) if (property[0] === prefix) keys.push(property.slice(1));\n return keys;\n },\n values: function() {\n var values = [];\n for (var property in this) if (property[0] === prefix) values.push(this[property]);\n return values;\n },\n entries: function() {\n var entries = [];\n for (var property in this) if (property[0] === prefix) entries.push({key: property.slice(1), value: this[property]});\n return entries;\n },\n size: function() {\n var size = 0;\n for (var property in this) if (property[0] === prefix) ++size;\n return size;\n },\n empty: function() {\n for (var property in this) if (property[0] === prefix) return false;\n return true;\n },\n each: function(f) {\n for (var property in this) if (property[0] === prefix) f(this[property], property.slice(1), this);\n }\n};\n\nfunction map(object, f) {\n var map = new Map;\n\n // Copy constructor.\n if (object instanceof Map) object.each(function(value, key) { map.set(key, value); });\n\n // Index array by numeric index or specified key function.\n else if (Array.isArray(object)) {\n var i = -1,\n n = object.length,\n o;\n\n if (f == null) while (++i < n) map.set(i, object[i]);\n else while (++i < n) map.set(f(o = object[i], i, object), o);\n }\n\n // Convert object to map.\n else if (object) for (var key in object) map.set(key, object[key]);\n\n return map;\n}\n\nexport default map;\n","import map from \"./map\";\n\nexport default function() {\n var keys = [],\n sortKeys = [],\n sortValues,\n rollup,\n nest;\n\n function apply(array, depth, createResult, setResult) {\n if (depth >= keys.length) {\n if (sortValues != null) array.sort(sortValues);\n return rollup != null ? rollup(array) : array;\n }\n\n var i = -1,\n n = array.length,\n key = keys[depth++],\n keyValue,\n value,\n valuesByKey = map(),\n values,\n result = createResult();\n\n while (++i < n) {\n if (values = valuesByKey.get(keyValue = key(value = array[i]) + \"\")) {\n values.push(value);\n } else {\n valuesByKey.set(keyValue, [value]);\n }\n }\n\n valuesByKey.each(function(values, key) {\n setResult(result, key, apply(values, depth, createResult, setResult));\n });\n\n return result;\n }\n\n function entries(map, depth) {\n if (++depth > keys.length) return map;\n var array, sortKey = sortKeys[depth - 1];\n if (rollup != null && depth >= keys.length) array = map.entries();\n else array = [], map.each(function(v, k) { array.push({key: k, values: entries(v, depth)}); });\n return sortKey != null ? array.sort(function(a, b) { return sortKey(a.key, b.key); }) : array;\n }\n\n return nest = {\n object: function(array) { return apply(array, 0, createObject, setObject); },\n map: function(array) { return apply(array, 0, createMap, setMap); },\n entries: function(array) { return entries(apply(array, 0, createMap, setMap), 0); },\n key: function(d) { keys.push(d); return nest; },\n sortKeys: function(order) { sortKeys[keys.length - 1] = order; return nest; },\n sortValues: function(order) { sortValues = order; return nest; },\n rollup: function(f) { rollup = f; return nest; }\n };\n}\n\nfunction createObject() {\n return {};\n}\n\nfunction setObject(object, key, value) {\n object[key] = value;\n}\n\nfunction createMap() {\n return map();\n}\n\nfunction setMap(map, key, value) {\n map.set(key, value);\n}\n","import {default as map, prefix} from \"./map\";\n\nfunction Set() {}\n\nvar proto = map.prototype;\n\nSet.prototype = set.prototype = {\n constructor: Set,\n has: proto.has,\n add: function(value) {\n value += \"\";\n this[prefix + value] = value;\n return this;\n },\n remove: proto.remove,\n clear: proto.clear,\n values: proto.keys,\n size: proto.size,\n empty: proto.empty,\n each: proto.each\n};\n\nfunction set(object, f) {\n var set = new Set;\n\n // Copy constructor.\n if (object instanceof Set) object.each(function(value) { set.add(value); });\n\n // Otherwise, assume it’s an array.\n else if (object) {\n var i = -1, n = object.length;\n if (f == null) while (++i < n) set.add(object[i]);\n else while (++i < n) set.add(f(object[i], i, object));\n }\n\n return set;\n}\n\nexport default set;\n","export default function(map) {\n var keys = [];\n for (var key in map) keys.push(key);\n return keys;\n}\n","export default function(map) {\n var values = [];\n for (var key in map) values.push(map[key]);\n return values;\n}\n","export default function(map) {\n var entries = [];\n for (var key in map) entries.push({key: key, value: map[key]});\n return entries;\n}\n","export var deg2rad = Math.PI / 180;\nexport var rad2deg = 180 / Math.PI;\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb} from \"./color.js\";\nimport {deg2rad, rad2deg} from \"./math.js\";\n\n// https://observablehq.com/@mbostock/lab-and-rgb\nvar K = 18,\n Xn = 0.96422,\n Yn = 1,\n Zn = 0.82521,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) return hcl2lab(o);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = rgb2lrgb(o.r),\n g = rgb2lrgb(o.g),\n b = rgb2lrgb(o.b),\n y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n if (r === g && g === b) x = z = y; else {\n x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n }\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nexport function gray(l, opacity) {\n return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nexport default function lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nexport function Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n brighter: function(k) {\n return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker: function(k) {\n return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb: function() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n x = Xn * lab2xyz(x);\n y = Yn * lab2xyz(y);\n z = Zn * lab2xyz(z);\n return new Rgb(\n lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n this.opacity\n );\n }\n}));\n\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);\n var h = Math.atan2(o.b, o.a) * rad2deg;\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nexport function lch(l, c, h, opacity) {\n return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n}\n\nfunction hcl2lab(o) {\n if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n var h = o.h * deg2rad;\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n}\n\ndefine(Hcl, hcl, extend(Color, {\n brighter: function(k) {\n return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n },\n darker: function(k) {\n return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n },\n rgb: function() {\n return hcl2lab(this).rgb();\n }\n}));\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb, darker, brighter} from \"./color.js\";\nimport {deg2rad, rad2deg} from \"./math.js\";\n\nvar A = -0.14861,\n B = +1.78277,\n C = -0.29227,\n D = -0.90649,\n E = +1.97294,\n ED = E * D,\n EB = E * B,\n BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n bl = b - l,\n k = (E * (g - l) - C * bl) / D,\n s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n h = s ? Math.atan2(k, bl) * rad2deg - 120 : NaN;\n return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nexport default function cubehelix(h, s, l, opacity) {\n return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nexport function Cubehelix(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Cubehelix, cubehelix, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = isNaN(this.h) ? 0 : (this.h + 120) * deg2rad,\n l = +this.l,\n a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n cosh = Math.cos(h),\n sinh = Math.sin(h);\n return new Rgb(\n 255 * (l + a * (A * cosh + B * sinh)),\n 255 * (l + a * (C * cosh + D * sinh)),\n 255 * (l + a * (E * cosh)),\n this.opacity\n );\n }\n}));\n","var array = Array.prototype;\n\nexport var slice = array.slice;\n","export default function(a, b) {\n return a - b;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(ring, hole) {\n var i = -1, n = hole.length, c;\n while (++i < n) if (c = ringContains(ring, hole[i])) return c;\n return 0;\n}\n\nfunction ringContains(ring, point) {\n var x = point[0], y = point[1], contains = -1;\n for (var i = 0, n = ring.length, j = n - 1; i < n; j = i++) {\n var pi = ring[i], xi = pi[0], yi = pi[1], pj = ring[j], xj = pj[0], yj = pj[1];\n if (segmentContains(pi, pj, point)) return 0;\n if (((yi > y) !== (yj > y)) && ((x < (xj - xi) * (y - yi) / (yj - yi) + xi))) contains = -contains;\n }\n return contains;\n}\n\nfunction segmentContains(a, b, c) {\n var i; return collinear(a, b, c) && within(a[i = +(a[0] === b[0])], c[i], b[i]);\n}\n\nfunction collinear(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) === (c[0] - a[0]) * (b[1] - a[1]);\n}\n\nfunction within(p, q, r) {\n return p <= q && q <= r || r <= q && q <= p;\n}\n","export default function() {}\n","import {extent, thresholdSturges, tickStep, range} from \"d3-array\";\nimport {slice} from \"./array\";\nimport ascending from \"./ascending\";\nimport area from \"./area\";\nimport constant from \"./constant\";\nimport contains from \"./contains\";\nimport noop from \"./noop\";\n\nvar cases = [\n [],\n [[[1.0, 1.5], [0.5, 1.0]]],\n [[[1.5, 1.0], [1.0, 1.5]]],\n [[[1.5, 1.0], [0.5, 1.0]]],\n [[[1.0, 0.5], [1.5, 1.0]]],\n [[[1.0, 1.5], [0.5, 1.0]], [[1.0, 0.5], [1.5, 1.0]]],\n [[[1.0, 0.5], [1.0, 1.5]]],\n [[[1.0, 0.5], [0.5, 1.0]]],\n [[[0.5, 1.0], [1.0, 0.5]]],\n [[[1.0, 1.5], [1.0, 0.5]]],\n [[[0.5, 1.0], [1.0, 0.5]], [[1.5, 1.0], [1.0, 1.5]]],\n [[[1.5, 1.0], [1.0, 0.5]]],\n [[[0.5, 1.0], [1.5, 1.0]]],\n [[[1.0, 1.5], [1.5, 1.0]]],\n [[[0.5, 1.0], [1.0, 1.5]]],\n []\n];\n\nexport default function() {\n var dx = 1,\n dy = 1,\n threshold = thresholdSturges,\n smooth = smoothLinear;\n\n function contours(values) {\n var tz = threshold(values);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n var domain = extent(values), start = domain[0], stop = domain[1];\n tz = tickStep(start, stop, tz);\n tz = range(Math.floor(start / tz) * tz, Math.floor(stop / tz) * tz, tz);\n } else {\n tz = tz.slice().sort(ascending);\n }\n\n return tz.map(function(value) {\n return contour(values, value);\n });\n }\n\n // Accumulate, smooth contour rings, assign holes to exterior rings.\n // Based on https://github.com/mbostock/shapefile/blob/v0.6.2/shp/polygon.js\n function contour(values, value) {\n var polygons = [],\n holes = [];\n\n isorings(values, value, function(ring) {\n smooth(ring, values, value);\n if (area(ring) > 0) polygons.push([ring]);\n else holes.push(ring);\n });\n\n holes.forEach(function(hole) {\n for (var i = 0, n = polygons.length, polygon; i < n; ++i) {\n if (contains((polygon = polygons[i])[0], hole) !== -1) {\n polygon.push(hole);\n return;\n }\n }\n });\n\n return {\n type: \"MultiPolygon\",\n value: value,\n coordinates: polygons\n };\n }\n\n // Marching squares with isolines stitched into rings.\n // Based on https://github.com/topojson/topojson-client/blob/v3.0.0/src/stitch.js\n function isorings(values, value, callback) {\n var fragmentByStart = new Array,\n fragmentByEnd = new Array,\n x, y, t0, t1, t2, t3;\n\n // Special case for the first row (y = -1, t2 = t3 = 0).\n x = y = -1;\n t1 = values[0] >= value;\n cases[t1 << 1].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = values[x + 1] >= value;\n cases[t0 | t1 << 1].forEach(stitch);\n }\n cases[t1 << 0].forEach(stitch);\n\n // General case for the intermediate rows.\n while (++y < dy - 1) {\n x = -1;\n t1 = values[y * dx + dx] >= value;\n t2 = values[y * dx] >= value;\n cases[t1 << 1 | t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = values[y * dx + dx + x + 1] >= value;\n t3 = t2, t2 = values[y * dx + x + 1] >= value;\n cases[t0 | t1 << 1 | t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t1 | t2 << 3].forEach(stitch);\n }\n\n // Special case for the last row (y = dy - 1, t0 = t1 = 0).\n x = -1;\n t2 = values[y * dx] >= value;\n cases[t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t3 = t2, t2 = values[y * dx + x + 1] >= value;\n cases[t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t2 << 3].forEach(stitch);\n\n function stitch(line) {\n var start = [line[0][0] + x, line[0][1] + y],\n end = [line[1][0] + x, line[1][1] + y],\n startIndex = index(start),\n endIndex = index(end),\n f, g;\n if (f = fragmentByEnd[startIndex]) {\n if (g = fragmentByStart[endIndex]) {\n delete fragmentByEnd[f.end];\n delete fragmentByStart[g.start];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[f.start] = fragmentByEnd[g.end] = {start: f.start, end: g.end, ring: f.ring.concat(g.ring)};\n }\n } else {\n delete fragmentByEnd[f.end];\n f.ring.push(end);\n fragmentByEnd[f.end = endIndex] = f;\n }\n } else if (f = fragmentByStart[endIndex]) {\n if (g = fragmentByEnd[startIndex]) {\n delete fragmentByStart[f.start];\n delete fragmentByEnd[g.end];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[g.start] = fragmentByEnd[f.end] = {start: g.start, end: f.end, ring: g.ring.concat(f.ring)};\n }\n } else {\n delete fragmentByStart[f.start];\n f.ring.unshift(start);\n fragmentByStart[f.start = startIndex] = f;\n }\n } else {\n fragmentByStart[startIndex] = fragmentByEnd[endIndex] = {start: startIndex, end: endIndex, ring: [start, end]};\n }\n }\n }\n\n function index(point) {\n return point[0] * 2 + point[1] * (dx + 1) * 4;\n }\n\n function smoothLinear(ring, values, value) {\n ring.forEach(function(point) {\n var x = point[0],\n y = point[1],\n xt = x | 0,\n yt = y | 0,\n v0,\n v1 = values[yt * dx + xt];\n if (x > 0 && x < dx && xt === x) {\n v0 = values[yt * dx + xt - 1];\n point[0] = x + (value - v0) / (v1 - v0) - 0.5;\n }\n if (y > 0 && y < dy && yt === y) {\n v0 = values[(yt - 1) * dx + xt];\n point[1] = y + (value - v0) / (v1 - v0) - 0.5;\n }\n });\n }\n\n contours.contour = contour;\n\n contours.size = function(_) {\n if (!arguments.length) return [dx, dy];\n var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]);\n if (!(_0 > 0) || !(_1 > 0)) throw new Error(\"invalid size\");\n return dx = _0, dy = _1, contours;\n };\n\n contours.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), contours) : threshold;\n };\n\n contours.smooth = function(_) {\n return arguments.length ? (smooth = _ ? smoothLinear : noop, contours) : smooth === smoothLinear;\n };\n\n return contours;\n}\n","export default function(ring) {\n var i = 0, n = ring.length, area = ring[n - 1][1] * ring[0][0] - ring[n - 1][0] * ring[0][1];\n while (++i < n) area += ring[i - 1][1] * ring[i][0] - ring[i - 1][0] * ring[i][1];\n return area;\n}\n","// TODO Optimize edge cases.\n// TODO Optimize index calculation.\n// TODO Optimize arguments.\nexport function blurX(source, target, r) {\n var n = source.width,\n m = source.height,\n w = (r << 1) + 1;\n for (var j = 0; j < m; ++j) {\n for (var i = 0, sr = 0; i < n + r; ++i) {\n if (i < n) {\n sr += source.data[i + j * n];\n }\n if (i >= r) {\n if (i >= w) {\n sr -= source.data[i - w + j * n];\n }\n target.data[i - r + j * n] = sr / Math.min(i + 1, n - 1 + w - i, w);\n }\n }\n }\n}\n\n// TODO Optimize edge cases.\n// TODO Optimize index calculation.\n// TODO Optimize arguments.\nexport function blurY(source, target, r) {\n var n = source.width,\n m = source.height,\n w = (r << 1) + 1;\n for (var i = 0; i < n; ++i) {\n for (var j = 0, sr = 0; j < m + r; ++j) {\n if (j < m) {\n sr += source.data[i + j * n];\n }\n if (j >= r) {\n if (j >= w) {\n sr -= source.data[i + (j - w) * n];\n }\n target.data[i + (j - r) * n] = sr / Math.min(j + 1, m - 1 + w - j, w);\n }\n }\n }\n}\n","import {max, range, tickStep} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {blurX, blurY} from \"./blur\";\nimport constant from \"./constant\";\nimport contours from \"./contours\";\n\nfunction defaultX(d) {\n return d[0];\n}\n\nfunction defaultY(d) {\n return d[1];\n}\n\nfunction defaultWeight() {\n return 1;\n}\n\nexport default function() {\n var x = defaultX,\n y = defaultY,\n weight = defaultWeight,\n dx = 960,\n dy = 500,\n r = 20, // blur radius\n k = 2, // log2(grid cell size)\n o = r * 3, // grid offset, to pad for blur\n n = (dx + o * 2) >> k, // grid width\n m = (dy + o * 2) >> k, // grid height\n threshold = constant(20);\n\n function density(data) {\n var values0 = new Float32Array(n * m),\n values1 = new Float32Array(n * m);\n\n data.forEach(function(d, i, data) {\n var xi = (+x(d, i, data) + o) >> k,\n yi = (+y(d, i, data) + o) >> k,\n wi = +weight(d, i, data);\n if (xi >= 0 && xi < n && yi >= 0 && yi < m) {\n values0[xi + yi * n] += wi;\n }\n });\n\n // TODO Optimize.\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n\n var tz = threshold(values0);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n var stop = max(values0);\n tz = tickStep(0, stop, tz);\n tz = range(0, Math.floor(stop / tz) * tz, tz);\n tz.shift();\n }\n\n return contours()\n .thresholds(tz)\n .size([n, m])\n (values0)\n .map(transform);\n }\n\n function transform(geometry) {\n geometry.value *= Math.pow(2, -2 * k); // Density in points per square pixel.\n geometry.coordinates.forEach(transformPolygon);\n return geometry;\n }\n\n function transformPolygon(coordinates) {\n coordinates.forEach(transformRing);\n }\n\n function transformRing(coordinates) {\n coordinates.forEach(transformPoint);\n }\n\n // TODO Optimize.\n function transformPoint(coordinates) {\n coordinates[0] = coordinates[0] * Math.pow(2, k) - o;\n coordinates[1] = coordinates[1] * Math.pow(2, k) - o;\n }\n\n function resize() {\n o = r * 3;\n n = (dx + o * 2) >> k;\n m = (dy + o * 2) >> k;\n return density;\n }\n\n density.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), density) : x;\n };\n\n density.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), density) : y;\n };\n\n density.weight = function(_) {\n return arguments.length ? (weight = typeof _ === \"function\" ? _ : constant(+_), density) : weight;\n };\n\n density.size = function(_) {\n if (!arguments.length) return [dx, dy];\n var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]);\n if (!(_0 >= 0) && !(_0 >= 0)) throw new Error(\"invalid size\");\n return dx = _0, dy = _1, resize();\n };\n\n density.cellSize = function(_) {\n if (!arguments.length) return 1 << k;\n if (!((_ = +_) >= 1)) throw new Error(\"invalid cell size\");\n return k = Math.floor(Math.log(_) / Math.LN2), resize();\n };\n\n density.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), density) : threshold;\n };\n\n density.bandwidth = function(_) {\n if (!arguments.length) return Math.sqrt(r * (r + 1));\n if (!((_ = +_) >= 0)) throw new Error(\"invalid bandwidth\");\n return r = Math.round((Math.sqrt(4 * _ * _ + 1) - 1) / 2), resize();\n };\n\n return density;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function DragEvent(target, type, subject, id, active, x, y, dx, dy, dispatch) {\n this.target = target;\n this.type = type;\n this.subject = subject;\n this.identifier = id;\n this.active = active;\n this.x = x;\n this.y = y;\n this.dx = dx;\n this.dy = dy;\n this._ = dispatch;\n}\n\nDragEvent.prototype.on = function() {\n var value = this._.on.apply(this._, arguments);\n return value === this._ ? this : value;\n};\n","import {dispatch} from \"d3-dispatch\";\nimport {event, customEvent, select, mouse, touch} from \"d3-selection\";\nimport nodrag, {yesdrag} from \"./nodrag.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\nimport constant from \"./constant.js\";\nimport DragEvent from \"./event.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultContainer() {\n return this.parentNode;\n}\n\nfunction defaultSubject(d) {\n return d == null ? {x: event.x, y: event.y} : d;\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nexport default function() {\n var filter = defaultFilter,\n container = defaultContainer,\n subject = defaultSubject,\n touchable = defaultTouchable,\n gestures = {},\n listeners = dispatch(\"start\", \"drag\", \"end\"),\n active = 0,\n mousedownx,\n mousedowny,\n mousemoving,\n touchending,\n clickDistance2 = 0;\n\n function drag(selection) {\n selection\n .on(\"mousedown.drag\", mousedowned)\n .filter(touchable)\n .on(\"touchstart.drag\", touchstarted)\n .on(\"touchmove.drag\", touchmoved)\n .on(\"touchend.drag touchcancel.drag\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n function mousedowned() {\n if (touchending || !filter.apply(this, arguments)) return;\n var gesture = beforestart(\"mouse\", container.apply(this, arguments), mouse, this, arguments);\n if (!gesture) return;\n select(event.view).on(\"mousemove.drag\", mousemoved, true).on(\"mouseup.drag\", mouseupped, true);\n nodrag(event.view);\n nopropagation();\n mousemoving = false;\n mousedownx = event.clientX;\n mousedowny = event.clientY;\n gesture(\"start\");\n }\n\n function mousemoved() {\n noevent();\n if (!mousemoving) {\n var dx = event.clientX - mousedownx, dy = event.clientY - mousedowny;\n mousemoving = dx * dx + dy * dy > clickDistance2;\n }\n gestures.mouse(\"drag\");\n }\n\n function mouseupped() {\n select(event.view).on(\"mousemove.drag mouseup.drag\", null);\n yesdrag(event.view, mousemoving);\n noevent();\n gestures.mouse(\"end\");\n }\n\n function touchstarted() {\n if (!filter.apply(this, arguments)) return;\n var touches = event.changedTouches,\n c = container.apply(this, arguments),\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = beforestart(touches[i].identifier, c, touch, this, arguments)) {\n nopropagation();\n gesture(\"start\");\n }\n }\n }\n\n function touchmoved() {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n noevent();\n gesture(\"drag\");\n }\n }\n }\n\n function touchended() {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n nopropagation();\n gesture(\"end\");\n }\n }\n }\n\n function beforestart(id, container, point, that, args) {\n var p = point(container, id), s, dx, dy,\n sublisteners = listeners.copy();\n\n if (!customEvent(new DragEvent(drag, \"beforestart\", s, id, active, p[0], p[1], 0, 0, sublisteners), function() {\n if ((event.subject = s = subject.apply(that, args)) == null) return false;\n dx = s.x - p[0] || 0;\n dy = s.y - p[1] || 0;\n return true;\n })) return;\n\n return function gesture(type) {\n var p0 = p, n;\n switch (type) {\n case \"start\": gestures[id] = gesture, n = active++; break;\n case \"end\": delete gestures[id], --active; // nobreak\n case \"drag\": p = point(container, id), n = active; break;\n }\n customEvent(new DragEvent(drag, type, s, id, n, p[0] + dx, p[1] + dy, p[0] - p0[0], p[1] - p0[1], sublisteners), sublisteners.apply, sublisteners, [type, that, args]);\n };\n }\n\n drag.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), drag) : filter;\n };\n\n drag.container = function(_) {\n return arguments.length ? (container = typeof _ === \"function\" ? _ : constant(_), drag) : container;\n };\n\n drag.subject = function(_) {\n return arguments.length ? (subject = typeof _ === \"function\" ? _ : constant(_), drag) : subject;\n };\n\n drag.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), drag) : touchable;\n };\n\n drag.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? drag : value;\n };\n\n drag.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2);\n };\n\n return drag;\n}\n","var EOL = {},\n EOF = {},\n QUOTE = 34,\n NEWLINE = 10,\n RETURN = 13;\n\nfunction objectConverter(columns) {\n return new Function(\"d\", \"return {\" + columns.map(function(name, i) {\n return JSON.stringify(name) + \": d[\" + i + \"] || \\\"\\\"\";\n }).join(\",\") + \"}\");\n}\n\nfunction customConverter(columns, f) {\n var object = objectConverter(columns);\n return function(row, i) {\n return f(object(row), i, columns);\n };\n}\n\n// Compute unique columns in order of discovery.\nfunction inferColumns(rows) {\n var columnSet = Object.create(null),\n columns = [];\n\n rows.forEach(function(row) {\n for (var column in row) {\n if (!(column in columnSet)) {\n columns.push(columnSet[column] = column);\n }\n }\n });\n\n return columns;\n}\n\nfunction pad(value, width) {\n var s = value + \"\", length = s.length;\n return length < width ? new Array(width - length + 1).join(0) + s : s;\n}\n\nfunction formatYear(year) {\n return year < 0 ? \"-\" + pad(-year, 6)\n : year > 9999 ? \"+\" + pad(year, 6)\n : pad(year, 4);\n}\n\nfunction formatDate(date) {\n var hours = date.getUTCHours(),\n minutes = date.getUTCMinutes(),\n seconds = date.getUTCSeconds(),\n milliseconds = date.getUTCMilliseconds();\n return isNaN(date) ? \"Invalid Date\"\n : formatYear(date.getUTCFullYear(), 4) + \"-\" + pad(date.getUTCMonth() + 1, 2) + \"-\" + pad(date.getUTCDate(), 2)\n + (milliseconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \".\" + pad(milliseconds, 3) + \"Z\"\n : seconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \"Z\"\n : minutes || hours ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \"Z\"\n : \"\");\n}\n\nexport default function(delimiter) {\n var reFormat = new RegExp(\"[\\\"\" + delimiter + \"\\n\\r]\"),\n DELIMITER = delimiter.charCodeAt(0);\n\n function parse(text, f) {\n var convert, columns, rows = parseRows(text, function(row, i) {\n if (convert) return convert(row, i - 1);\n columns = row, convert = f ? customConverter(row, f) : objectConverter(row);\n });\n rows.columns = columns || [];\n return rows;\n }\n\n function parseRows(text, f) {\n var rows = [], // output rows\n N = text.length,\n I = 0, // current character index\n n = 0, // current line number\n t, // current token\n eof = N <= 0, // current token followed by EOF?\n eol = false; // current token followed by EOL?\n\n // Strip the trailing newline.\n if (text.charCodeAt(N - 1) === NEWLINE) --N;\n if (text.charCodeAt(N - 1) === RETURN) --N;\n\n function token() {\n if (eof) return EOF;\n if (eol) return eol = false, EOL;\n\n // Unescape quotes.\n var i, j = I, c;\n if (text.charCodeAt(j) === QUOTE) {\n while (I++ < N && text.charCodeAt(I) !== QUOTE || text.charCodeAt(++I) === QUOTE);\n if ((i = I) >= N) eof = true;\n else if ((c = text.charCodeAt(I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n return text.slice(j + 1, i - 1).replace(/\"\"/g, \"\\\"\");\n }\n\n // Find next delimiter or newline.\n while (I < N) {\n if ((c = text.charCodeAt(i = I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n else if (c !== DELIMITER) continue;\n return text.slice(j, i);\n }\n\n // Return last token before EOF.\n return eof = true, text.slice(j, N);\n }\n\n while ((t = token()) !== EOF) {\n var row = [];\n while (t !== EOL && t !== EOF) row.push(t), t = token();\n if (f && (row = f(row, n++)) == null) continue;\n rows.push(row);\n }\n\n return rows;\n }\n\n function preformatBody(rows, columns) {\n return rows.map(function(row) {\n return columns.map(function(column) {\n return formatValue(row[column]);\n }).join(delimiter);\n });\n }\n\n function format(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return [columns.map(formatValue).join(delimiter)].concat(preformatBody(rows, columns)).join(\"\\n\");\n }\n\n function formatBody(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return preformatBody(rows, columns).join(\"\\n\");\n }\n\n function formatRows(rows) {\n return rows.map(formatRow).join(\"\\n\");\n }\n\n function formatRow(row) {\n return row.map(formatValue).join(delimiter);\n }\n\n function formatValue(value) {\n return value == null ? \"\"\n : value instanceof Date ? formatDate(value)\n : reFormat.test(value += \"\") ? \"\\\"\" + value.replace(/\"/g, \"\\\"\\\"\") + \"\\\"\"\n : value;\n }\n\n return {\n parse: parse,\n parseRows: parseRows,\n format: format,\n formatBody: formatBody,\n formatRows: formatRows,\n formatRow: formatRow,\n formatValue: formatValue\n };\n}\n","import dsv from \"./dsv.js\";\n\nvar csv = dsv(\",\");\n\nexport var csvParse = csv.parse;\nexport var csvParseRows = csv.parseRows;\nexport var csvFormat = csv.format;\nexport var csvFormatBody = csv.formatBody;\nexport var csvFormatRows = csv.formatRows;\nexport var csvFormatRow = csv.formatRow;\nexport var csvFormatValue = csv.formatValue;\n","import dsv from \"./dsv.js\";\n\nvar tsv = dsv(\"\\t\");\n\nexport var tsvParse = tsv.parse;\nexport var tsvParseRows = tsv.parseRows;\nexport var tsvFormat = tsv.format;\nexport var tsvFormatBody = tsv.formatBody;\nexport var tsvFormatRows = tsv.formatRows;\nexport var tsvFormatRow = tsv.formatRow;\nexport var tsvFormatValue = tsv.formatValue;\n","export default function autoType(object) {\n for (var key in object) {\n var value = object[key].trim(), number, m;\n if (!value) value = null;\n else if (value === \"true\") value = true;\n else if (value === \"false\") value = false;\n else if (value === \"NaN\") value = NaN;\n else if (!isNaN(number = +value)) value = number;\n else if (m = value.match(/^([-+]\\d{2})?\\d{4}(-\\d{2}(-\\d{2})?)?(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{3})?)?(Z|[-+]\\d{2}:\\d{2})?)?$/)) {\n if (fixtz && !!m[4] && !m[7]) value = value.replace(/-/g, \"/\").replace(/T/, \" \");\n value = new Date(value);\n }\n else continue;\n object[key] = value;\n }\n return object;\n}\n\n// https://github.com/d3/d3-dsv/issues/45\nvar fixtz = new Date(\"2019-01-01T00:00\").getHours() || new Date(\"2019-07-01T00:00\").getHours();","export function linear(t) {\n return +t;\n}\n","export function quadIn(t) {\n return t * t;\n}\n\nexport function quadOut(t) {\n return t * (2 - t);\n}\n\nexport function quadInOut(t) {\n return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2;\n}\n","var exponent = 3;\n\nexport var polyIn = (function custom(e) {\n e = +e;\n\n function polyIn(t) {\n return Math.pow(t, e);\n }\n\n polyIn.exponent = custom;\n\n return polyIn;\n})(exponent);\n\nexport var polyOut = (function custom(e) {\n e = +e;\n\n function polyOut(t) {\n return 1 - Math.pow(1 - t, e);\n }\n\n polyOut.exponent = custom;\n\n return polyOut;\n})(exponent);\n\nexport var polyInOut = (function custom(e) {\n e = +e;\n\n function polyInOut(t) {\n return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;\n }\n\n polyInOut.exponent = custom;\n\n return polyInOut;\n})(exponent);\n","var pi = Math.PI,\n halfPi = pi / 2;\n\nexport function sinIn(t) {\n return (+t === 1) ? 1 : 1 - Math.cos(t * halfPi);\n}\n\nexport function sinOut(t) {\n return Math.sin(t * halfPi);\n}\n\nexport function sinInOut(t) {\n return (1 - Math.cos(pi * t)) / 2;\n}\n","// tpmt is two power minus ten times t scaled to [0,1]\nexport function tpmt(x) {\n return (Math.pow(2, -10 * x) - 0.0009765625) * 1.0009775171065494;\n}\n","import {tpmt} from \"./math.js\";\n\nexport function expIn(t) {\n return tpmt(1 - +t);\n}\n\nexport function expOut(t) {\n return 1 - tpmt(t);\n}\n\nexport function expInOut(t) {\n return ((t *= 2) <= 1 ? tpmt(1 - t) : 2 - tpmt(t - 1)) / 2;\n}\n","export function circleIn(t) {\n return 1 - Math.sqrt(1 - t * t);\n}\n\nexport function circleOut(t) {\n return Math.sqrt(1 - --t * t);\n}\n\nexport function circleInOut(t) {\n return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;\n}\n","var b1 = 4 / 11,\n b2 = 6 / 11,\n b3 = 8 / 11,\n b4 = 3 / 4,\n b5 = 9 / 11,\n b6 = 10 / 11,\n b7 = 15 / 16,\n b8 = 21 / 22,\n b9 = 63 / 64,\n b0 = 1 / b1 / b1;\n\nexport function bounceIn(t) {\n return 1 - bounceOut(1 - t);\n}\n\nexport function bounceOut(t) {\n return (t = +t) < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9;\n}\n\nexport function bounceInOut(t) {\n return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2;\n}\n","var overshoot = 1.70158;\n\nexport var backIn = (function custom(s) {\n s = +s;\n\n function backIn(t) {\n return (t = +t) * t * (s * (t - 1) + t);\n }\n\n backIn.overshoot = custom;\n\n return backIn;\n})(overshoot);\n\nexport var backOut = (function custom(s) {\n s = +s;\n\n function backOut(t) {\n return --t * t * ((t + 1) * s + t) + 1;\n }\n\n backOut.overshoot = custom;\n\n return backOut;\n})(overshoot);\n\nexport var backInOut = (function custom(s) {\n s = +s;\n\n function backInOut(t) {\n return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2;\n }\n\n backInOut.overshoot = custom;\n\n return backInOut;\n})(overshoot);\n","import {tpmt} from \"./math.js\";\n\nvar tau = 2 * Math.PI,\n amplitude = 1,\n period = 0.3;\n\nexport var elasticIn = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticIn(t) {\n return a * tpmt(-(--t)) * Math.sin((s - t) / p);\n }\n\n elasticIn.amplitude = function(a) { return custom(a, p * tau); };\n elasticIn.period = function(p) { return custom(a, p); };\n\n return elasticIn;\n})(amplitude, period);\n\nexport var elasticOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticOut(t) {\n return 1 - a * tpmt(t = +t) * Math.sin((t + s) / p);\n }\n\n elasticOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticOut.period = function(p) { return custom(a, p); };\n\n return elasticOut;\n})(amplitude, period);\n\nexport var elasticInOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticInOut(t) {\n return ((t = t * 2 - 1) < 0\n ? a * tpmt(-t) * Math.sin((s - t) / p)\n : 2 - a * tpmt(t) * Math.sin((s + t) / p)) / 2;\n }\n\n elasticInOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticInOut.period = function(p) { return custom(a, p); };\n\n return elasticInOut;\n})(amplitude, period);\n","function responseBlob(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.blob();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseBlob);\n}\n","function responseArrayBuffer(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.arrayBuffer();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseArrayBuffer);\n}\n","function responseText(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.text();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseText);\n}\n","import {csvParse, dsvFormat, tsvParse} from \"d3-dsv\";\nimport text from \"./text.js\";\n\nfunction dsvParse(parse) {\n return function(input, init, row) {\n if (arguments.length === 2 && typeof init === \"function\") row = init, init = undefined;\n return text(input, init).then(function(response) {\n return parse(response, row);\n });\n };\n}\n\nexport default function dsv(delimiter, input, init, row) {\n if (arguments.length === 3 && typeof init === \"function\") row = init, init = undefined;\n var format = dsvFormat(delimiter);\n return text(input, init).then(function(response) {\n return format.parse(response, row);\n });\n}\n\nexport var csv = dsvParse(csvParse);\nexport var tsv = dsvParse(tsvParse);\n","export default function(input, init) {\n return new Promise(function(resolve, reject) {\n var image = new Image;\n for (var key in init) image[key] = init[key];\n image.onerror = reject;\n image.onload = function() { resolve(image); };\n image.src = input;\n });\n}\n","function responseJson(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n if (response.status === 204 || response.status === 205) return;\n return response.json();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseJson);\n}\n","import text from \"./text.js\";\n\nfunction parser(type) {\n return function(input, init) {\n return text(input, init).then(function(text) {\n return (new DOMParser).parseFromString(text, type);\n });\n };\n}\n\nexport default parser(\"application/xml\");\n\nexport var html = parser(\"text/html\");\n\nexport var svg = parser(\"image/svg+xml\");\n","export default function(x, y) {\n var nodes;\n\n if (x == null) x = 0;\n if (y == null) y = 0;\n\n function force() {\n var i,\n n = nodes.length,\n node,\n sx = 0,\n sy = 0;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], sx += node.x, sy += node.y;\n }\n\n for (sx = sx / n - x, sy = sy / n - y, i = 0; i < n; ++i) {\n node = nodes[i], node.x -= sx, node.y -= sy;\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n return force;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function() {\n return (Math.random() - 0.5) * 1e-6;\n}\n","export default function(d) {\n var x = +this._x.call(null, d),\n y = +this._y.call(null, d);\n return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {data: d},\n x0 = tree._x0,\n y0 = tree._y0,\n x1 = tree._x1,\n y1 = tree._y1,\n xm,\n ym,\n xp,\n yp,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n yp = +tree._y.call(null, node.data);\n if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n var d, i, n = data.length,\n x,\n y,\n xz = new Array(n),\n yz = new Array(n),\n x0 = Infinity,\n y0 = Infinity,\n x1 = -Infinity,\n y1 = -Infinity;\n\n // Compute the points and their extent.\n for (i = 0; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n xz[i] = x;\n yz[i] = y;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n }\n\n // If there were no (valid) points, abort.\n if (x0 > x1 || y0 > y1) return this;\n\n // Expand the tree to cover the new points.\n this.cover(x0, y0).cover(x1, y1);\n\n // Add the new points.\n for (i = 0; i < n; ++i) {\n add(this, xz[i], yz[i], data[i]);\n }\n\n return this;\n}\n","export default function(node, x0, y0, x1, y1) {\n this.node = node;\n this.x0 = x0;\n this.y0 = y0;\n this.x1 = x1;\n this.y1 = y1;\n}\n","export function defaultX(d) {\n return d[0];\n}\n\nexport default function(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}\n","export function defaultY(d) {\n return d[1];\n}\n\nexport default function(_) {\n return arguments.length ? (this._y = _, this) : this._y;\n}\n","import tree_add, {addAll as tree_addAll} from \"./add.js\";\nimport tree_cover from \"./cover.js\";\nimport tree_data from \"./data.js\";\nimport tree_extent from \"./extent.js\";\nimport tree_find from \"./find.js\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove.js\";\nimport tree_root from \"./root.js\";\nimport tree_size from \"./size.js\";\nimport tree_visit from \"./visit.js\";\nimport tree_visitAfter from \"./visitAfter.js\";\nimport tree_x, {defaultX} from \"./x.js\";\nimport tree_y, {defaultY} from \"./y.js\";\n\nexport default function quadtree(nodes, x, y) {\n var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n this._x = x;\n this._y = y;\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n var copy = {data: leaf.data}, next = copy;\n while (leaf = leaf.next) next = next.next = {data: leaf.data};\n return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n node = this._root,\n nodes,\n child;\n\n if (!node) return copy;\n\n if (!node.length) return copy._root = leaf_copy(node), copy;\n\n nodes = [{source: node, target: copy._root = new Array(4)}];\n while (node = nodes.pop()) {\n for (var i = 0; i < 4; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n else node.target[i] = leaf_copy(child);\n }\n }\n }\n\n return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\n","import constant from \"./constant\";\nimport jiggle from \"./jiggle\";\nimport {quadtree} from \"d3-quadtree\";\n\nfunction x(d) {\n return d.x + d.vx;\n}\n\nfunction y(d) {\n return d.y + d.vy;\n}\n\nexport default function(radius) {\n var nodes,\n radii,\n strength = 1,\n iterations = 1;\n\n if (typeof radius !== \"function\") radius = constant(radius == null ? 1 : +radius);\n\n function force() {\n var i, n = nodes.length,\n tree,\n node,\n xi,\n yi,\n ri,\n ri2;\n\n for (var k = 0; k < iterations; ++k) {\n tree = quadtree(nodes, x, y).visitAfter(prepare);\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n ri = radii[node.index], ri2 = ri * ri;\n xi = node.x + node.vx;\n yi = node.y + node.vy;\n tree.visit(apply);\n }\n }\n\n function apply(quad, x0, y0, x1, y1) {\n var data = quad.data, rj = quad.r, r = ri + rj;\n if (data) {\n if (data.index > node.index) {\n var x = xi - data.x - data.vx,\n y = yi - data.y - data.vy,\n l = x * x + y * y;\n if (l < r * r) {\n if (x === 0) x = jiggle(), l += x * x;\n if (y === 0) y = jiggle(), l += y * y;\n l = (r - (l = Math.sqrt(l))) / l * strength;\n node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj));\n node.vy += (y *= l) * r;\n data.vx -= x * (r = 1 - r);\n data.vy -= y * r;\n }\n }\n return;\n }\n return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r;\n }\n }\n\n function prepare(quad) {\n if (quad.data) return quad.r = radii[quad.data.index];\n for (var i = quad.r = 0; i < 4; ++i) {\n if (quad[i] && quad[i].r > quad.r) {\n quad.r = quad[i].r;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n radii = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes);\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n };\n\n return force;\n}\n","import constant from \"./constant\";\nimport jiggle from \"./jiggle\";\nimport {map} from \"d3-collection\";\n\nfunction index(d) {\n return d.index;\n}\n\nfunction find(nodeById, nodeId) {\n var node = nodeById.get(nodeId);\n if (!node) throw new Error(\"missing: \" + nodeId);\n return node;\n}\n\nexport default function(links) {\n var id = index,\n strength = defaultStrength,\n strengths,\n distance = constant(30),\n distances,\n nodes,\n count,\n bias,\n iterations = 1;\n\n if (links == null) links = [];\n\n function defaultStrength(link) {\n return 1 / Math.min(count[link.source.index], count[link.target.index]);\n }\n\n function force(alpha) {\n for (var k = 0, n = links.length; k < iterations; ++k) {\n for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) {\n link = links[i], source = link.source, target = link.target;\n x = target.x + target.vx - source.x - source.vx || jiggle();\n y = target.y + target.vy - source.y - source.vy || jiggle();\n l = Math.sqrt(x * x + y * y);\n l = (l - distances[i]) / l * alpha * strengths[i];\n x *= l, y *= l;\n target.vx -= x * (b = bias[i]);\n target.vy -= y * b;\n source.vx += x * (b = 1 - b);\n source.vy += y * b;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n\n var i,\n n = nodes.length,\n m = links.length,\n nodeById = map(nodes, id),\n link;\n\n for (i = 0, count = new Array(n); i < m; ++i) {\n link = links[i], link.index = i;\n if (typeof link.source !== \"object\") link.source = find(nodeById, link.source);\n if (typeof link.target !== \"object\") link.target = find(nodeById, link.target);\n count[link.source.index] = (count[link.source.index] || 0) + 1;\n count[link.target.index] = (count[link.target.index] || 0) + 1;\n }\n\n for (i = 0, bias = new Array(m); i < m; ++i) {\n link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);\n }\n\n strengths = new Array(m), initializeStrength();\n distances = new Array(m), initializeDistance();\n }\n\n function initializeStrength() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n strengths[i] = +strength(links[i], i, links);\n }\n }\n\n function initializeDistance() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n distances[i] = +distance(links[i], i, links);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.links = function(_) {\n return arguments.length ? (links = _, initialize(), force) : links;\n };\n\n force.id = function(_) {\n return arguments.length ? (id = _, force) : id;\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initializeStrength(), force) : strength;\n };\n\n force.distance = function(_) {\n return arguments.length ? (distance = typeof _ === \"function\" ? _ : constant(+_), initializeDistance(), force) : distance;\n };\n\n return force;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {map} from \"d3-collection\";\nimport {timer} from \"d3-timer\";\n\nexport function x(d) {\n return d.x;\n}\n\nexport function y(d) {\n return d.y;\n}\n\nvar initialRadius = 10,\n initialAngle = Math.PI * (3 - Math.sqrt(5));\n\nexport default function(nodes) {\n var simulation,\n alpha = 1,\n alphaMin = 0.001,\n alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n alphaTarget = 0,\n velocityDecay = 0.6,\n forces = map(),\n stepper = timer(step),\n event = dispatch(\"tick\", \"end\");\n\n if (nodes == null) nodes = [];\n\n function step() {\n tick();\n event.call(\"tick\", simulation);\n if (alpha < alphaMin) {\n stepper.stop();\n event.call(\"end\", simulation);\n }\n }\n\n function tick(iterations) {\n var i, n = nodes.length, node;\n\n if (iterations === undefined) iterations = 1;\n\n for (var k = 0; k < iterations; ++k) {\n alpha += (alphaTarget - alpha) * alphaDecay;\n\n forces.each(function (force) {\n force(alpha);\n });\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (node.fx == null) node.x += node.vx *= velocityDecay;\n else node.x = node.fx, node.vx = 0;\n if (node.fy == null) node.y += node.vy *= velocityDecay;\n else node.y = node.fy, node.vy = 0;\n }\n }\n\n return simulation;\n }\n\n function initializeNodes() {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.index = i;\n if (node.fx != null) node.x = node.fx;\n if (node.fy != null) node.y = node.fy;\n if (isNaN(node.x) || isNaN(node.y)) {\n var radius = initialRadius * Math.sqrt(i), angle = i * initialAngle;\n node.x = radius * Math.cos(angle);\n node.y = radius * Math.sin(angle);\n }\n if (isNaN(node.vx) || isNaN(node.vy)) {\n node.vx = node.vy = 0;\n }\n }\n }\n\n function initializeForce(force) {\n if (force.initialize) force.initialize(nodes);\n return force;\n }\n\n initializeNodes();\n\n return simulation = {\n tick: tick,\n\n restart: function() {\n return stepper.restart(step), simulation;\n },\n\n stop: function() {\n return stepper.stop(), simulation;\n },\n\n nodes: function(_) {\n return arguments.length ? (nodes = _, initializeNodes(), forces.each(initializeForce), simulation) : nodes;\n },\n\n alpha: function(_) {\n return arguments.length ? (alpha = +_, simulation) : alpha;\n },\n\n alphaMin: function(_) {\n return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n },\n\n alphaDecay: function(_) {\n return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n },\n\n alphaTarget: function(_) {\n return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n },\n\n velocityDecay: function(_) {\n return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n },\n\n force: function(name, _) {\n return arguments.length > 1 ? ((_ == null ? forces.remove(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n },\n\n find: function(x, y, radius) {\n var i = 0,\n n = nodes.length,\n dx,\n dy,\n d2,\n node,\n closest;\n\n if (radius == null) radius = Infinity;\n else radius *= radius;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n dx = x - node.x;\n dy = y - node.y;\n d2 = dx * dx + dy * dy;\n if (d2 < radius) closest = node, radius = d2;\n }\n\n return closest;\n },\n\n on: function(name, _) {\n return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n }\n };\n}\n","export default function(x, y) {\n if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n var x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1;\n\n // If the quadtree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing quadrant boundaries don’t change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n y1 = (y0 = Math.floor(y)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else {\n var z = x1 - x0,\n node = this._root,\n parent,\n i;\n\n while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n i = (y < y0) << 1 | (x < x0);\n parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n switch (i) {\n case 0: x1 = x0 + z, y1 = y0 + z; break;\n case 1: x0 = x1 - z, y1 = y0 + z; break;\n case 2: x1 = x0 + z, y0 = y1 - z; break;\n case 3: x0 = x1 - z, y0 = y1 - z; break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n return this;\n}\n","export default function() {\n var data = [];\n this.visit(function(node) {\n if (!node.length) do data.push(node.data); while (node = node.next)\n });\n return data;\n}\n","export default function(_) {\n return arguments.length\n ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n","import Quad from \"./quad.js\";\n\nexport default function(x, y, radius) {\n var data,\n x0 = this._x0,\n y0 = this._y0,\n x1,\n y1,\n x2,\n y2,\n x3 = this._x1,\n y3 = this._y1,\n quads = [],\n node = this._root,\n q,\n i;\n\n if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n if (radius == null) radius = Infinity;\n else {\n x0 = x - radius, y0 = y - radius;\n x3 = x + radius, y3 = y + radius;\n radius *= radius;\n }\n\n while (q = quads.pop()) {\n\n // Stop searching if this quadrant can’t contain a closer node.\n if (!(node = q.node)\n || (x1 = q.x0) > x3\n || (y1 = q.y0) > y3\n || (x2 = q.x1) < x0\n || (y2 = q.y1) < y0) continue;\n\n // Bisect the current quadrant.\n if (node.length) {\n var xm = (x1 + x2) / 2,\n ym = (y1 + y2) / 2;\n\n quads.push(\n new Quad(node[3], xm, ym, x2, y2),\n new Quad(node[2], x1, ym, xm, y2),\n new Quad(node[1], xm, y1, x2, ym),\n new Quad(node[0], x1, y1, xm, ym)\n );\n\n // Visit the closest quadrant first.\n if (i = (y >= ym) << 1 | (x >= xm)) {\n q = quads[quads.length - 1];\n quads[quads.length - 1] = quads[quads.length - 1 - i];\n quads[quads.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isn’t necessary!)\n else {\n var dx = x - +this._x.call(null, node.data),\n dy = y - +this._y.call(null, node.data),\n d2 = dx * dx + dy * dy;\n if (d2 < radius) {\n var d = Math.sqrt(radius = d2);\n x0 = x - d, y0 = y - d;\n x3 = x + d, y3 = y + d;\n data = node.data;\n }\n }\n }\n\n return data;\n}\n","export default function(d) {\n if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1,\n x,\n y,\n xm,\n ym,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n if (!node.length) break;\n if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n && node === (parent[3] || parent[2] || parent[1] || parent[0])\n && !node.length) {\n if (retainer) retainer[j] = node;\n else this._root = node;\n }\n\n return this;\n}\n\nexport function removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\n","export default function() {\n return this._root;\n}\n","export default function() {\n var size = 0;\n this.visit(function(node) {\n if (!node.length) do ++size; while (node = node.next)\n });\n return size;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n }\n }\n return this;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], next = [], q;\n if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n var node = q.node;\n if (node.length) {\n var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.y0, q.x1, q.y1);\n }\n return this;\n}\n","import constant from \"./constant\";\nimport jiggle from \"./jiggle\";\nimport {quadtree} from \"d3-quadtree\";\nimport {x, y} from \"./simulation\";\n\nexport default function() {\n var nodes,\n node,\n alpha,\n strength = constant(-30),\n strengths,\n distanceMin2 = 1,\n distanceMax2 = Infinity,\n theta2 = 0.81;\n\n function force(_) {\n var i, n = nodes.length, tree = quadtree(nodes, x, y).visitAfter(accumulate);\n for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply);\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n strengths = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes);\n }\n\n function accumulate(quad) {\n var strength = 0, q, c, weight = 0, x, y, i;\n\n // For internal nodes, accumulate forces from child quadrants.\n if (quad.length) {\n for (x = y = i = 0; i < 4; ++i) {\n if ((q = quad[i]) && (c = Math.abs(q.value))) {\n strength += q.value, weight += c, x += c * q.x, y += c * q.y;\n }\n }\n quad.x = x / weight;\n quad.y = y / weight;\n }\n\n // For leaf nodes, accumulate forces from coincident quadrants.\n else {\n q = quad;\n q.x = q.data.x;\n q.y = q.data.y;\n do strength += strengths[q.data.index];\n while (q = q.next);\n }\n\n quad.value = strength;\n }\n\n function apply(quad, x1, _, x2) {\n if (!quad.value) return true;\n\n var x = quad.x - node.x,\n y = quad.y - node.y,\n w = x2 - x1,\n l = x * x + y * y;\n\n // Apply the Barnes-Hut approximation if possible.\n // Limit forces for very close nodes; randomize direction if coincident.\n if (w * w / theta2 < l) {\n if (l < distanceMax2) {\n if (x === 0) x = jiggle(), l += x * x;\n if (y === 0) y = jiggle(), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n node.vx += x * quad.value * alpha / l;\n node.vy += y * quad.value * alpha / l;\n }\n return true;\n }\n\n // Otherwise, process points directly.\n else if (quad.length || l >= distanceMax2) return;\n\n // Limit forces for very close nodes; randomize direction if coincident.\n if (quad.data !== node || quad.next) {\n if (x === 0) x = jiggle(), l += x * x;\n if (y === 0) y = jiggle(), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n }\n\n do if (quad.data !== node) {\n w = strengths[quad.data.index] * alpha / l;\n node.vx += x * w;\n node.vy += y * w;\n } while (quad = quad.next);\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.distanceMin = function(_) {\n return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);\n };\n\n force.distanceMax = function(_) {\n return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);\n };\n\n force.theta = function(_) {\n return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);\n };\n\n return force;\n}\n","import constant from \"./constant\";\n\nexport default function(radius, x, y) {\n var nodes,\n strength = constant(0.1),\n strengths,\n radiuses;\n\n if (typeof radius !== \"function\") radius = constant(+radius);\n if (x == null) x = 0;\n if (y == null) y = 0;\n\n function force(alpha) {\n for (var i = 0, n = nodes.length; i < n; ++i) {\n var node = nodes[i],\n dx = node.x - x || 1e-6,\n dy = node.y - y || 1e-6,\n r = Math.sqrt(dx * dx + dy * dy),\n k = (radiuses[i] - r) * strengths[i] * alpha / r;\n node.vx += dx * k;\n node.vy += dy * k;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n radiuses = new Array(n);\n for (i = 0; i < n; ++i) {\n radiuses[i] = +radius(nodes[i], i, nodes);\n strengths[i] = isNaN(radiuses[i]) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _, initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n return force;\n}\n","import constant from \"./constant\";\n\nexport default function(x) {\n var strength = constant(0.1),\n nodes,\n strengths,\n xz;\n\n if (typeof x !== \"function\") x = constant(x == null ? 0 : +x);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vx += (xz[i] - node.x) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n xz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(xz[i] = +x(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : x;\n };\n\n return force;\n}\n","import constant from \"./constant\";\n\nexport default function(y) {\n var strength = constant(0.1),\n nodes,\n strengths,\n yz;\n\n if (typeof y !== \"function\") y = constant(y == null ? 0 : +y);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n yz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : y;\n };\n\n return force;\n}\n","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": function(x, p) { return (x * 100).toFixed(p); },\n \"b\": function(x) { return Math.round(x).toString(2); },\n \"c\": function(x) { return x + \"\"; },\n \"d\": formatDecimal,\n \"e\": function(x, p) { return x.toExponential(p); },\n \"f\": function(x, p) { return x.toFixed(p); },\n \"g\": function(x, p) { return x.toPrecision(p); },\n \"o\": function(x) { return Math.round(x).toString(8); },\n \"p\": function(x, p) { return formatRounded(x * 100, p); },\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n \"x\": function(x) { return Math.round(x).toString(16); }\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"-\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"],\n minus: \"-\"\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","// Adds floating point numbers with twice the normal precision.\n// Reference: J. R. Shewchuk, Adaptive Precision Floating-Point Arithmetic and\n// Fast Robust Geometric Predicates, Discrete & Computational Geometry 18(3)\n// 305–363 (1997).\n// Code adapted from GeographicLib by Charles F. F. Karney,\n// http://geographiclib.sourceforge.net/\n\nexport default function() {\n return new Adder;\n}\n\nfunction Adder() {\n this.reset();\n}\n\nAdder.prototype = {\n constructor: Adder,\n reset: function() {\n this.s = // rounded value\n this.t = 0; // exact error\n },\n add: function(y) {\n add(temp, y, this.t);\n add(this, temp.s, this.s);\n if (this.s) this.t += temp.t;\n else this.s = temp.t;\n },\n valueOf: function() {\n return this.s;\n }\n};\n\nvar temp = new Adder;\n\nfunction add(adder, a, b) {\n var x = adder.s = a + b,\n bv = x - a,\n av = x - bv;\n adder.t = (a - av) + (b - bv);\n}\n","export var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var tau = pi * 2;\n\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var ceil = Math.ceil;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var log = Math.log;\nexport var pow = Math.pow;\nexport var sin = Math.sin;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sqrt = Math.sqrt;\nexport var tan = Math.tan;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nexport function haversin(x) {\n return (x = sin(x / 2)) * x;\n}\n","export default function noop() {}\n","function streamGeometry(geometry, stream) {\n if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n streamGeometryType[geometry.type](geometry, stream);\n }\n}\n\nvar streamObjectType = {\n Feature: function(object, stream) {\n streamGeometry(object.geometry, stream);\n },\n FeatureCollection: function(object, stream) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) streamGeometry(features[i].geometry, stream);\n }\n};\n\nvar streamGeometryType = {\n Sphere: function(object, stream) {\n stream.sphere();\n },\n Point: function(object, stream) {\n object = object.coordinates;\n stream.point(object[0], object[1], object[2]);\n },\n MultiPoint: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n },\n LineString: function(object, stream) {\n streamLine(object.coordinates, stream, 0);\n },\n MultiLineString: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamLine(coordinates[i], stream, 0);\n },\n Polygon: function(object, stream) {\n streamPolygon(object.coordinates, stream);\n },\n MultiPolygon: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamPolygon(coordinates[i], stream);\n },\n GeometryCollection: function(object, stream) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) streamGeometry(geometries[i], stream);\n }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n var i = -1, n = coordinates.length - closed, coordinate;\n stream.lineStart();\n while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n var i = -1, n = coordinates.length;\n stream.polygonStart();\n while (++i < n) streamLine(coordinates[i], stream, 1);\n stream.polygonEnd();\n}\n\nexport default function(object, stream) {\n if (object && streamObjectType.hasOwnProperty(object.type)) {\n streamObjectType[object.type](object, stream);\n } else {\n streamGeometry(object, stream);\n }\n}\n","import adder from \"./adder.js\";\nimport {atan2, cos, quarterPi, radians, sin, tau} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nexport var areaRingSum = adder();\n\nvar areaSum = adder(),\n lambda00,\n phi00,\n lambda0,\n cosPhi0,\n sinPhi0;\n\nexport var areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaRingSum.reset();\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n var areaRing = +areaRingSum;\n areaSum.add(areaRing < 0 ? tau + areaRing : areaRing);\n this.lineStart = this.lineEnd = this.point = noop;\n },\n sphere: function() {\n areaSum.add(tau);\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaRingEnd() {\n areaPoint(lambda00, phi00);\n}\n\nfunction areaPointFirst(lambda, phi) {\n areaStream.point = areaPoint;\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n lambda0 = lambda, cosPhi0 = cos(phi = phi / 2 + quarterPi), sinPhi0 = sin(phi);\n}\n\nfunction areaPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n phi = phi / 2 + quarterPi; // half the angular distance from south pole\n\n // Spherical excess E for a spherical triangle with vertices: south pole,\n // previous point, current point. Uses a formula derived from Cagnoli’s\n // theorem. See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).\n var dLambda = lambda - lambda0,\n sdLambda = dLambda >= 0 ? 1 : -1,\n adLambda = sdLambda * dLambda,\n cosPhi = cos(phi),\n sinPhi = sin(phi),\n k = sinPhi0 * sinPhi,\n u = cosPhi0 * cosPhi + k * cos(adLambda),\n v = k * sdLambda * sin(adLambda);\n areaRingSum.add(atan2(v, u));\n\n // Advance the previous points.\n lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;\n}\n\nexport default function(object) {\n areaSum.reset();\n stream(object, areaStream);\n return areaSum * 2;\n}\n","import {asin, atan2, cos, sin, sqrt} from \"./math.js\";\n\nexport function spherical(cartesian) {\n return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])];\n}\n\nexport function cartesian(spherical) {\n var lambda = spherical[0], phi = spherical[1], cosPhi = cos(phi);\n return [cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)];\n}\n\nexport function cartesianDot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\nexport function cartesianCross(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n}\n\n// TODO return a\nexport function cartesianAddInPlace(a, b) {\n a[0] += b[0], a[1] += b[1], a[2] += b[2];\n}\n\nexport function cartesianScale(vector, k) {\n return [vector[0] * k, vector[1] * k, vector[2] * k];\n}\n\n// TODO return d\nexport function cartesianNormalizeInPlace(d) {\n var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n d[0] /= l, d[1] /= l, d[2] /= l;\n}\n","import adder from \"./adder.js\";\nimport {areaStream, areaRingSum} from \"./area.js\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace, spherical} from \"./cartesian.js\";\nimport {abs, degrees, epsilon, radians} from \"./math.js\";\nimport stream from \"./stream.js\";\n\nvar lambda0, phi0, lambda1, phi1, // bounds\n lambda2, // previous lambda-coordinate\n lambda00, phi00, // first point\n p0, // previous 3D point\n deltaSum = adder(),\n ranges,\n range;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: boundsLineStart,\n lineEnd: boundsLineEnd,\n polygonStart: function() {\n boundsStream.point = boundsRingPoint;\n boundsStream.lineStart = boundsRingStart;\n boundsStream.lineEnd = boundsRingEnd;\n deltaSum.reset();\n areaStream.polygonStart();\n },\n polygonEnd: function() {\n areaStream.polygonEnd();\n boundsStream.point = boundsPoint;\n boundsStream.lineStart = boundsLineStart;\n boundsStream.lineEnd = boundsLineEnd;\n if (areaRingSum < 0) lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n else if (deltaSum > epsilon) phi1 = 90;\n else if (deltaSum < -epsilon) phi0 = -90;\n range[0] = lambda0, range[1] = lambda1;\n },\n sphere: function() {\n lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n }\n};\n\nfunction boundsPoint(lambda, phi) {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n}\n\nfunction linePoint(lambda, phi) {\n var p = cartesian([lambda * radians, phi * radians]);\n if (p0) {\n var normal = cartesianCross(p0, p),\n equatorial = [normal[1], -normal[0], 0],\n inflection = cartesianCross(equatorial, normal);\n cartesianNormalizeInPlace(inflection);\n inflection = spherical(inflection);\n var delta = lambda - lambda2,\n sign = delta > 0 ? 1 : -1,\n lambdai = inflection[0] * degrees * sign,\n phii,\n antimeridian = abs(delta) > 180;\n if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = inflection[1] * degrees;\n if (phii > phi1) phi1 = phii;\n } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = -inflection[1] * degrees;\n if (phii < phi0) phi0 = phii;\n } else {\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n }\n if (antimeridian) {\n if (lambda < lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n } else {\n if (lambda1 >= lambda0) {\n if (lambda < lambda0) lambda0 = lambda;\n if (lambda > lambda1) lambda1 = lambda;\n } else {\n if (lambda > lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n }\n }\n } else {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n }\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n p0 = p, lambda2 = lambda;\n}\n\nfunction boundsLineStart() {\n boundsStream.point = linePoint;\n}\n\nfunction boundsLineEnd() {\n range[0] = lambda0, range[1] = lambda1;\n boundsStream.point = boundsPoint;\n p0 = null;\n}\n\nfunction boundsRingPoint(lambda, phi) {\n if (p0) {\n var delta = lambda - lambda2;\n deltaSum.add(abs(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta);\n } else {\n lambda00 = lambda, phi00 = phi;\n }\n areaStream.point(lambda, phi);\n linePoint(lambda, phi);\n}\n\nfunction boundsRingStart() {\n areaStream.lineStart();\n}\n\nfunction boundsRingEnd() {\n boundsRingPoint(lambda00, phi00);\n areaStream.lineEnd();\n if (abs(deltaSum) > epsilon) lambda0 = -(lambda1 = 180);\n range[0] = lambda0, range[1] = lambda1;\n p0 = null;\n}\n\n// Finds the left-right distance between two longitudes.\n// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want\n// the distance between ±180° to be 360°.\nfunction angle(lambda0, lambda1) {\n return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1;\n}\n\nfunction rangeCompare(a, b) {\n return a[0] - b[0];\n}\n\nfunction rangeContains(range, x) {\n return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n}\n\nexport default function(feature) {\n var i, n, a, b, merged, deltaMax, delta;\n\n phi1 = lambda1 = -(lambda0 = phi0 = Infinity);\n ranges = [];\n stream(feature, boundsStream);\n\n // First, sort ranges by their minimum longitudes.\n if (n = ranges.length) {\n ranges.sort(rangeCompare);\n\n // Then, merge any ranges that overlap.\n for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) {\n b = ranges[i];\n if (rangeContains(a, b[0]) || rangeContains(a, b[1])) {\n if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n } else {\n merged.push(a = b);\n }\n }\n\n // Finally, find the largest gap between the merged ranges.\n // The final bounding box will be the inverse of this gap.\n for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) {\n b = merged[i];\n if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0 = b[0], lambda1 = a[1];\n }\n }\n\n ranges = range = null;\n\n return lambda0 === Infinity || phi0 === Infinity\n ? [[NaN, NaN], [NaN, NaN]]\n : [[lambda0, phi0], [lambda1, phi1]];\n}\n","import {asin, atan2, cos, degrees, epsilon, epsilon2, radians, sin, sqrt} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nvar W0, W1,\n X0, Y0, Z0,\n X1, Y1, Z1,\n X2, Y2, Z2,\n lambda00, phi00, // first point\n x0, y0, z0; // previous point\n\nvar centroidStream = {\n sphere: noop,\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n }\n};\n\n// Arithmetic mean of Cartesian vectors.\nfunction centroidPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi);\n centroidPointCartesian(cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi));\n}\n\nfunction centroidPointCartesian(x, y, z) {\n ++W0;\n X0 += (x - X0) / W0;\n Y0 += (y - Y0) / W0;\n Z0 += (z - Z0) / W0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidLinePointFirst;\n}\n\nfunction centroidLinePointFirst(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi);\n x0 = cosPhi * cos(lambda);\n y0 = cosPhi * sin(lambda);\n z0 = sin(phi);\n centroidStream.point = centroidLinePoint;\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLinePoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi),\n x = cosPhi * cos(lambda),\n y = cosPhi * sin(lambda),\n z = sin(phi),\n w = atan2(sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n W1 += w;\n X1 += w * (x0 + (x0 = x));\n Y1 += w * (y0 + (y0 = y));\n Z1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\n// See J. E. Brock, The Inertia Tensor for a Spherical Triangle,\n// J. Applied Mechanics 42, 239 (1975).\nfunction centroidRingStart() {\n centroidStream.point = centroidRingPointFirst;\n}\n\nfunction centroidRingEnd() {\n centroidRingPoint(lambda00, phi00);\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingPointFirst(lambda, phi) {\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n centroidStream.point = centroidRingPoint;\n var cosPhi = cos(phi);\n x0 = cosPhi * cos(lambda);\n y0 = cosPhi * sin(lambda);\n z0 = sin(phi);\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidRingPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi),\n x = cosPhi * cos(lambda),\n y = cosPhi * sin(lambda),\n z = sin(phi),\n cx = y0 * z - z0 * y,\n cy = z0 * x - x0 * z,\n cz = x0 * y - y0 * x,\n m = sqrt(cx * cx + cy * cy + cz * cz),\n w = asin(m), // line weight = angle\n v = m && -w / m; // area weight multiplier\n X2 += v * cx;\n Y2 += v * cy;\n Z2 += v * cz;\n W1 += w;\n X1 += w * (x0 + (x0 = x));\n Y1 += w * (y0 + (y0 = y));\n Z1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0, y0, z0);\n}\n\nexport default function(object) {\n W0 = W1 =\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 =\n X2 = Y2 = Z2 = 0;\n stream(object, centroidStream);\n\n var x = X2,\n y = Y2,\n z = Z2,\n m = x * x + y * y + z * z;\n\n // If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid.\n if (m < epsilon2) {\n x = X1, y = Y1, z = Z1;\n // If the feature has zero length, fall back to arithmetic mean of point vectors.\n if (W1 < epsilon) x = X0, y = Y0, z = Z0;\n m = x * x + y * y + z * z;\n // If the feature still has an undefined ccentroid, then return.\n if (m < epsilon2) return [NaN, NaN];\n }\n\n return [atan2(y, x) * degrees, asin(z / sqrt(m)) * degrees];\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(a, b) {\n\n function compose(x, y) {\n return x = a(x, y), b(x[0], x[1]);\n }\n\n if (a.invert && b.invert) compose.invert = function(x, y) {\n return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n };\n\n return compose;\n}\n","import compose from \"./compose.js\";\nimport {abs, asin, atan2, cos, degrees, pi, radians, sin, tau} from \"./math.js\";\n\nfunction rotationIdentity(lambda, phi) {\n return [abs(lambda) > pi ? lambda + Math.round(-lambda / tau) * tau : lambda, phi];\n}\n\nrotationIdentity.invert = rotationIdentity;\n\nexport function rotateRadians(deltaLambda, deltaPhi, deltaGamma) {\n return (deltaLambda %= tau) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma))\n : rotationLambda(deltaLambda))\n : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma)\n : rotationIdentity);\n}\n\nfunction forwardRotationLambda(deltaLambda) {\n return function(lambda, phi) {\n return lambda += deltaLambda, [lambda > pi ? lambda - tau : lambda < -pi ? lambda + tau : lambda, phi];\n };\n}\n\nfunction rotationLambda(deltaLambda) {\n var rotation = forwardRotationLambda(deltaLambda);\n rotation.invert = forwardRotationLambda(-deltaLambda);\n return rotation;\n}\n\nfunction rotationPhiGamma(deltaPhi, deltaGamma) {\n var cosDeltaPhi = cos(deltaPhi),\n sinDeltaPhi = sin(deltaPhi),\n cosDeltaGamma = cos(deltaGamma),\n sinDeltaGamma = sin(deltaGamma);\n\n function rotation(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaPhi + x * sinDeltaPhi;\n return [\n atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),\n asin(k * cosDeltaGamma + y * sinDeltaGamma)\n ];\n }\n\n rotation.invert = function(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaGamma - y * sinDeltaGamma;\n return [\n atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),\n asin(k * cosDeltaPhi - x * sinDeltaPhi)\n ];\n };\n\n return rotation;\n}\n\nexport default function(rotate) {\n rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0);\n\n function forward(coordinates) {\n coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n }\n\n forward.invert = function(coordinates) {\n coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n };\n\n return forward;\n}\n","import {cartesian, cartesianNormalizeInPlace, spherical} from \"./cartesian.js\";\nimport constant from \"./constant.js\";\nimport {acos, cos, degrees, epsilon, radians, sin, tau} from \"./math.js\";\nimport {rotateRadians} from \"./rotation.js\";\n\n// Generates a circle centered at [0°, 0°], with a given radius and precision.\nexport function circleStream(stream, radius, delta, direction, t0, t1) {\n if (!delta) return;\n var cosRadius = cos(radius),\n sinRadius = sin(radius),\n step = direction * delta;\n if (t0 == null) {\n t0 = radius + direction * tau;\n t1 = radius - step / 2;\n } else {\n t0 = circleRadius(cosRadius, t0);\n t1 = circleRadius(cosRadius, t1);\n if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau;\n }\n for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {\n point = spherical([cosRadius, -sinRadius * cos(t), -sinRadius * sin(t)]);\n stream.point(point[0], point[1]);\n }\n}\n\n// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].\nfunction circleRadius(cosRadius, point) {\n point = cartesian(point), point[0] -= cosRadius;\n cartesianNormalizeInPlace(point);\n var radius = acos(-point[1]);\n return ((-point[2] < 0 ? -radius : radius) + tau - epsilon) % tau;\n}\n\nexport default function() {\n var center = constant([0, 0]),\n radius = constant(90),\n precision = constant(6),\n ring,\n rotate,\n stream = {point: point};\n\n function point(x, y) {\n ring.push(x = rotate(x, y));\n x[0] *= degrees, x[1] *= degrees;\n }\n\n function circle() {\n var c = center.apply(this, arguments),\n r = radius.apply(this, arguments) * radians,\n p = precision.apply(this, arguments) * radians;\n ring = [];\n rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert;\n circleStream(stream, r, p, 1);\n c = {type: \"Polygon\", coordinates: [ring]};\n ring = rotate = null;\n return c;\n }\n\n circle.center = function(_) {\n return arguments.length ? (center = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), circle) : center;\n };\n\n circle.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), circle) : radius;\n };\n\n circle.precision = function(_) {\n return arguments.length ? (precision = typeof _ === \"function\" ? _ : constant(+_), circle) : precision;\n };\n\n return circle;\n}\n","import noop from \"../noop.js\";\n\nexport default function() {\n var lines = [],\n line;\n return {\n point: function(x, y, m) {\n line.push([x, y, m]);\n },\n lineStart: function() {\n lines.push(line = []);\n },\n lineEnd: noop,\n rejoin: function() {\n if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n },\n result: function() {\n var result = lines;\n lines = [];\n line = null;\n return result;\n }\n };\n}\n","import {abs, epsilon} from \"./math.js\";\n\nexport default function(a, b) {\n return abs(a[0] - b[0]) < epsilon && abs(a[1] - b[1]) < epsilon;\n}\n","import pointEqual from \"../pointEqual.js\";\nimport {epsilon} from \"../math.js\";\n\nfunction Intersection(point, points, other, entry) {\n this.x = point;\n this.z = points;\n this.o = other; // another intersection\n this.e = entry; // is an entry?\n this.v = false; // visited\n this.n = this.p = null; // next & previous\n}\n\n// A generalized polygon clipping algorithm: given a polygon that has been cut\n// into its visible line segments, and rejoins the segments by interpolating\n// along the clip edge.\nexport default function(segments, compareIntersection, startInside, interpolate, stream) {\n var subject = [],\n clip = [],\n i,\n n;\n\n segments.forEach(function(segment) {\n if ((n = segment.length - 1) <= 0) return;\n var n, p0 = segment[0], p1 = segment[n], x;\n\n if (pointEqual(p0, p1)) {\n if (!p0[2] && !p1[2]) {\n stream.lineStart();\n for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);\n stream.lineEnd();\n return;\n }\n // handle degenerate cases by moving the point\n p1[0] += 2 * epsilon;\n }\n\n subject.push(x = new Intersection(p0, segment, null, true));\n clip.push(x.o = new Intersection(p0, null, x, false));\n subject.push(x = new Intersection(p1, segment, null, false));\n clip.push(x.o = new Intersection(p1, null, x, true));\n });\n\n if (!subject.length) return;\n\n clip.sort(compareIntersection);\n link(subject);\n link(clip);\n\n for (i = 0, n = clip.length; i < n; ++i) {\n clip[i].e = startInside = !startInside;\n }\n\n var start = subject[0],\n points,\n point;\n\n while (1) {\n // Find first unvisited intersection.\n var current = start,\n isSubject = true;\n while (current.v) if ((current = current.n) === start) return;\n points = current.z;\n stream.lineStart();\n do {\n current.v = current.o.v = true;\n if (current.e) {\n if (isSubject) {\n for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.n.x, 1, stream);\n }\n current = current.n;\n } else {\n if (isSubject) {\n points = current.p.z;\n for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.p.x, -1, stream);\n }\n current = current.p;\n }\n current = current.o;\n points = current.z;\n isSubject = !isSubject;\n } while (!current.v);\n stream.lineEnd();\n }\n}\n\nfunction link(array) {\n if (!(n = array.length)) return;\n var n,\n i = 0,\n a = array[0],\n b;\n while (++i < n) {\n a.n = b = array[i];\n b.p = a;\n a = b;\n }\n a.n = b = array[0];\n b.p = a;\n}\n","import adder from \"./adder.js\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace} from \"./cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, halfPi, pi, quarterPi, sign, sin, tau} from \"./math.js\";\n\nvar sum = adder();\n\nfunction longitude(point) {\n if (abs(point[0]) <= pi)\n return point[0];\n else\n return sign(point[0]) * ((abs(point[0]) + pi) % tau - pi);\n}\n\nexport default function(polygon, point) {\n var lambda = longitude(point),\n phi = point[1],\n sinPhi = sin(phi),\n normal = [sin(lambda), -cos(lambda), 0],\n angle = 0,\n winding = 0;\n\n sum.reset();\n\n if (sinPhi === 1) phi = halfPi + epsilon;\n else if (sinPhi === -1) phi = -halfPi - epsilon;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n if (!(m = (ring = polygon[i]).length)) continue;\n var ring,\n m,\n point0 = ring[m - 1],\n lambda0 = longitude(point0),\n phi0 = point0[1] / 2 + quarterPi,\n sinPhi0 = sin(phi0),\n cosPhi0 = cos(phi0);\n\n for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {\n var point1 = ring[j],\n lambda1 = longitude(point1),\n phi1 = point1[1] / 2 + quarterPi,\n sinPhi1 = sin(phi1),\n cosPhi1 = cos(phi1),\n delta = lambda1 - lambda0,\n sign = delta >= 0 ? 1 : -1,\n absDelta = sign * delta,\n antimeridian = absDelta > pi,\n k = sinPhi0 * sinPhi1;\n\n sum.add(atan2(k * sign * sin(absDelta), cosPhi0 * cosPhi1 + k * cos(absDelta)));\n angle += antimeridian ? delta + sign * tau : delta;\n\n // Are the longitudes either side of the point’s meridian (lambda),\n // and are the latitudes smaller than the parallel (phi)?\n if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {\n var arc = cartesianCross(cartesian(point0), cartesian(point1));\n cartesianNormalizeInPlace(arc);\n var intersection = cartesianCross(normal, arc);\n cartesianNormalizeInPlace(intersection);\n var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]);\n if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {\n winding += antimeridian ^ delta >= 0 ? 1 : -1;\n }\n }\n }\n }\n\n // First, determine whether the South pole is inside or outside:\n //\n // It is inside if:\n // * the polygon winds around it in a clockwise direction.\n // * the polygon does not (cumulatively) wind around it, but has a negative\n // (counter-clockwise) area.\n //\n // Second, count the (signed) number of times a segment crosses a lambda\n // from the point to the South pole. If it is zero, then the point is the\n // same side as the South pole.\n\n return (angle < -epsilon || angle < epsilon && sum < -epsilon) ^ (winding & 1);\n}\n","import clipBuffer from \"./buffer.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport {epsilon, halfPi} from \"../math.js\";\nimport polygonContains from \"../polygonContains.js\";\nimport {merge} from \"d3-array\";\n\nexport default function(pointVisible, clipLine, interpolate, start) {\n return function(sink) {\n var line = clipLine(sink),\n ringBuffer = clipBuffer(),\n ringSink = clipLine(ringBuffer),\n polygonStarted = false,\n polygon,\n segments,\n ring;\n\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n clip.point = pointRing;\n clip.lineStart = ringStart;\n clip.lineEnd = ringEnd;\n segments = [];\n polygon = [];\n },\n polygonEnd: function() {\n clip.point = point;\n clip.lineStart = lineStart;\n clip.lineEnd = lineEnd;\n segments = merge(segments);\n var startInside = polygonContains(polygon, start);\n if (segments.length) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n clipRejoin(segments, compareIntersection, startInside, interpolate, sink);\n } else if (startInside) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n }\n if (polygonStarted) sink.polygonEnd(), polygonStarted = false;\n segments = polygon = null;\n },\n sphere: function() {\n sink.polygonStart();\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n sink.polygonEnd();\n }\n };\n\n function point(lambda, phi) {\n if (pointVisible(lambda, phi)) sink.point(lambda, phi);\n }\n\n function pointLine(lambda, phi) {\n line.point(lambda, phi);\n }\n\n function lineStart() {\n clip.point = pointLine;\n line.lineStart();\n }\n\n function lineEnd() {\n clip.point = point;\n line.lineEnd();\n }\n\n function pointRing(lambda, phi) {\n ring.push([lambda, phi]);\n ringSink.point(lambda, phi);\n }\n\n function ringStart() {\n ringSink.lineStart();\n ring = [];\n }\n\n function ringEnd() {\n pointRing(ring[0][0], ring[0][1]);\n ringSink.lineEnd();\n\n var clean = ringSink.clean(),\n ringSegments = ringBuffer.result(),\n i, n = ringSegments.length, m,\n segment,\n point;\n\n ring.pop();\n polygon.push(ring);\n ring = null;\n\n if (!n) return;\n\n // No intersections.\n if (clean & 1) {\n segment = ringSegments[0];\n if ((m = segment.length - 1) > 0) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);\n sink.lineEnd();\n }\n return;\n }\n\n // Rejoin connected segments.\n // TODO reuse ringBuffer.rejoin()?\n if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n\n segments.push(ringSegments.filter(validSegment));\n }\n\n return clip;\n };\n}\n\nfunction validSegment(segment) {\n return segment.length > 1;\n}\n\n// Intersections are sorted along the clip edge. For both antimeridian cutting\n// and circle clipping, the same comparison is used.\nfunction compareIntersection(a, b) {\n return ((a = a.x)[0] < 0 ? a[1] - halfPi - epsilon : halfPi - a[1])\n - ((b = b.x)[0] < 0 ? b[1] - halfPi - epsilon : halfPi - b[1]);\n}\n","import clip from \"./index.js\";\nimport {abs, atan, cos, epsilon, halfPi, pi, sin} from \"../math.js\";\n\nexport default clip(\n function() { return true; },\n clipAntimeridianLine,\n clipAntimeridianInterpolate,\n [-pi, -halfPi]\n);\n\n// Takes a line and cuts into visible segments. Return values: 0 - there were\n// intersections or the line was empty; 1 - no intersections; 2 - there were\n// intersections, and the first and last segments should be rejoined.\nfunction clipAntimeridianLine(stream) {\n var lambda0 = NaN,\n phi0 = NaN,\n sign0 = NaN,\n clean; // no intersections\n\n return {\n lineStart: function() {\n stream.lineStart();\n clean = 1;\n },\n point: function(lambda1, phi1) {\n var sign1 = lambda1 > 0 ? pi : -pi,\n delta = abs(lambda1 - lambda0);\n if (abs(delta - pi) < epsilon) { // line crosses a pole\n stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi : -halfPi);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n stream.point(lambda1, phi0);\n clean = 0;\n } else if (sign0 !== sign1 && delta >= pi) { // line crosses antimeridian\n if (abs(lambda0 - sign0) < epsilon) lambda0 -= sign0 * epsilon; // handle degeneracies\n if (abs(lambda1 - sign1) < epsilon) lambda1 -= sign1 * epsilon;\n phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n clean = 0;\n }\n stream.point(lambda0 = lambda1, phi0 = phi1);\n sign0 = sign1;\n },\n lineEnd: function() {\n stream.lineEnd();\n lambda0 = phi0 = NaN;\n },\n clean: function() {\n return 2 - clean; // if intersections, rejoin first and last segments\n }\n };\n}\n\nfunction clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {\n var cosPhi0,\n cosPhi1,\n sinLambda0Lambda1 = sin(lambda0 - lambda1);\n return abs(sinLambda0Lambda1) > epsilon\n ? atan((sin(phi0) * (cosPhi1 = cos(phi1)) * sin(lambda1)\n - sin(phi1) * (cosPhi0 = cos(phi0)) * sin(lambda0))\n / (cosPhi0 * cosPhi1 * sinLambda0Lambda1))\n : (phi0 + phi1) / 2;\n}\n\nfunction clipAntimeridianInterpolate(from, to, direction, stream) {\n var phi;\n if (from == null) {\n phi = direction * halfPi;\n stream.point(-pi, phi);\n stream.point(0, phi);\n stream.point(pi, phi);\n stream.point(pi, 0);\n stream.point(pi, -phi);\n stream.point(0, -phi);\n stream.point(-pi, -phi);\n stream.point(-pi, 0);\n stream.point(-pi, phi);\n } else if (abs(from[0] - to[0]) > epsilon) {\n var lambda = from[0] < to[0] ? pi : -pi;\n phi = direction * lambda / 2;\n stream.point(-lambda, phi);\n stream.point(0, phi);\n stream.point(lambda, phi);\n } else {\n stream.point(to[0], to[1]);\n }\n}\n","import {cartesian, cartesianAddInPlace, cartesianCross, cartesianDot, cartesianScale, spherical} from \"../cartesian.js\";\nimport {circleStream} from \"../circle.js\";\nimport {abs, cos, epsilon, pi, radians, sqrt} from \"../math.js\";\nimport pointEqual from \"../pointEqual.js\";\nimport clip from \"./index.js\";\n\nexport default function(radius) {\n var cr = cos(radius),\n delta = 6 * radians,\n smallRadius = cr > 0,\n notHemisphere = abs(cr) > epsilon; // TODO optimise for this common case\n\n function interpolate(from, to, direction, stream) {\n circleStream(stream, radius, delta, direction, from, to);\n }\n\n function visible(lambda, phi) {\n return cos(lambda) * cos(phi) > cr;\n }\n\n // Takes a line and cuts into visible segments. Return values used for polygon\n // clipping: 0 - there were intersections or the line was empty; 1 - no\n // intersections 2 - there were intersections, and the first and last segments\n // should be rejoined.\n function clipLine(stream) {\n var point0, // previous point\n c0, // code for previous point\n v0, // visibility of previous point\n v00, // visibility of first point\n clean; // no intersections\n return {\n lineStart: function() {\n v00 = v0 = false;\n clean = 1;\n },\n point: function(lambda, phi) {\n var point1 = [lambda, phi],\n point2,\n v = visible(lambda, phi),\n c = smallRadius\n ? v ? 0 : code(lambda, phi)\n : v ? code(lambda + (lambda < 0 ? pi : -pi), phi) : 0;\n if (!point0 && (v00 = v0 = v)) stream.lineStart();\n if (v !== v0) {\n point2 = intersect(point0, point1);\n if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2))\n point1[2] = 1;\n }\n if (v !== v0) {\n clean = 0;\n if (v) {\n // outside going in\n stream.lineStart();\n point2 = intersect(point1, point0);\n stream.point(point2[0], point2[1]);\n } else {\n // inside going out\n point2 = intersect(point0, point1);\n stream.point(point2[0], point2[1], 2);\n stream.lineEnd();\n }\n point0 = point2;\n } else if (notHemisphere && point0 && smallRadius ^ v) {\n var t;\n // If the codes for two points are different, or are both zero,\n // and there this segment intersects with the small circle.\n if (!(c & c0) && (t = intersect(point1, point0, true))) {\n clean = 0;\n if (smallRadius) {\n stream.lineStart();\n stream.point(t[0][0], t[0][1]);\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n } else {\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n stream.lineStart();\n stream.point(t[0][0], t[0][1], 3);\n }\n }\n }\n if (v && (!point0 || !pointEqual(point0, point1))) {\n stream.point(point1[0], point1[1]);\n }\n point0 = point1, v0 = v, c0 = c;\n },\n lineEnd: function() {\n if (v0) stream.lineEnd();\n point0 = null;\n },\n // Rejoin first and last segments if there were intersections and the first\n // and last points were visible.\n clean: function() {\n return clean | ((v00 && v0) << 1);\n }\n };\n }\n\n // Intersects the great circle between a and b with the clip circle.\n function intersect(a, b, two) {\n var pa = cartesian(a),\n pb = cartesian(b);\n\n // We have two planes, n1.p = d1 and n2.p = d2.\n // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2).\n var n1 = [1, 0, 0], // normal\n n2 = cartesianCross(pa, pb),\n n2n2 = cartesianDot(n2, n2),\n n1n2 = n2[0], // cartesianDot(n1, n2),\n determinant = n2n2 - n1n2 * n1n2;\n\n // Two polar points.\n if (!determinant) return !two && a;\n\n var c1 = cr * n2n2 / determinant,\n c2 = -cr * n1n2 / determinant,\n n1xn2 = cartesianCross(n1, n2),\n A = cartesianScale(n1, c1),\n B = cartesianScale(n2, c2);\n cartesianAddInPlace(A, B);\n\n // Solve |p(t)|^2 = 1.\n var u = n1xn2,\n w = cartesianDot(A, u),\n uu = cartesianDot(u, u),\n t2 = w * w - uu * (cartesianDot(A, A) - 1);\n\n if (t2 < 0) return;\n\n var t = sqrt(t2),\n q = cartesianScale(u, (-w - t) / uu);\n cartesianAddInPlace(q, A);\n q = spherical(q);\n\n if (!two) return q;\n\n // Two intersection points.\n var lambda0 = a[0],\n lambda1 = b[0],\n phi0 = a[1],\n phi1 = b[1],\n z;\n\n if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z;\n\n var delta = lambda1 - lambda0,\n polar = abs(delta - pi) < epsilon,\n meridian = polar || delta < epsilon;\n\n if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z;\n\n // Check that the first point is between a and b.\n if (meridian\n ? polar\n ? phi0 + phi1 > 0 ^ q[1] < (abs(q[0] - lambda0) < epsilon ? phi0 : phi1)\n : phi0 <= q[1] && q[1] <= phi1\n : delta > pi ^ (lambda0 <= q[0] && q[0] <= lambda1)) {\n var q1 = cartesianScale(u, (-w + t) / uu);\n cartesianAddInPlace(q1, A);\n return [q, spherical(q1)];\n }\n }\n\n // Generates a 4-bit vector representing the location of a point relative to\n // the small circle's bounding box.\n function code(lambda, phi) {\n var r = smallRadius ? radius : pi - radius,\n code = 0;\n if (lambda < -r) code |= 1; // left\n else if (lambda > r) code |= 2; // right\n if (phi < -r) code |= 4; // below\n else if (phi > r) code |= 8; // above\n return code;\n }\n\n return clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi, radius - pi]);\n}\n","import {abs, epsilon} from \"../math.js\";\nimport clipBuffer from \"./buffer.js\";\nimport clipLine from \"./line.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport {merge} from \"d3-array\";\n\nvar clipMax = 1e9, clipMin = -clipMax;\n\n// TODO Use d3-polygon’s polygonContains here for the ring check?\n// TODO Eliminate duplicate buffering in clipBuffer and polygon.push?\n\nexport default function clipRectangle(x0, y0, x1, y1) {\n\n function visible(x, y) {\n return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n }\n\n function interpolate(from, to, direction, stream) {\n var a = 0, a1 = 0;\n if (from == null\n || (a = corner(from, direction)) !== (a1 = corner(to, direction))\n || comparePoint(from, to) < 0 ^ direction > 0) {\n do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n while ((a = (a + direction + 4) % 4) !== a1);\n } else {\n stream.point(to[0], to[1]);\n }\n }\n\n function corner(p, direction) {\n return abs(p[0] - x0) < epsilon ? direction > 0 ? 0 : 3\n : abs(p[0] - x1) < epsilon ? direction > 0 ? 2 : 1\n : abs(p[1] - y0) < epsilon ? direction > 0 ? 1 : 0\n : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon\n }\n\n function compareIntersection(a, b) {\n return comparePoint(a.x, b.x);\n }\n\n function comparePoint(a, b) {\n var ca = corner(a, 1),\n cb = corner(b, 1);\n return ca !== cb ? ca - cb\n : ca === 0 ? b[1] - a[1]\n : ca === 1 ? a[0] - b[0]\n : ca === 2 ? a[1] - b[1]\n : b[0] - a[0];\n }\n\n return function(stream) {\n var activeStream = stream,\n bufferStream = clipBuffer(),\n segments,\n polygon,\n ring,\n x__, y__, v__, // first point\n x_, y_, v_, // previous point\n first,\n clean;\n\n var clipStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: polygonStart,\n polygonEnd: polygonEnd\n };\n\n function point(x, y) {\n if (visible(x, y)) activeStream.point(x, y);\n }\n\n function polygonInside() {\n var winding = 0;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) {\n a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];\n if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; }\n else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; }\n }\n }\n\n return winding;\n }\n\n // Buffer geometry within a polygon and then clip it en masse.\n function polygonStart() {\n activeStream = bufferStream, segments = [], polygon = [], clean = true;\n }\n\n function polygonEnd() {\n var startInside = polygonInside(),\n cleanInside = clean && startInside,\n visible = (segments = merge(segments)).length;\n if (cleanInside || visible) {\n stream.polygonStart();\n if (cleanInside) {\n stream.lineStart();\n interpolate(null, null, 1, stream);\n stream.lineEnd();\n }\n if (visible) {\n clipRejoin(segments, compareIntersection, startInside, interpolate, stream);\n }\n stream.polygonEnd();\n }\n activeStream = stream, segments = polygon = ring = null;\n }\n\n function lineStart() {\n clipStream.point = linePoint;\n if (polygon) polygon.push(ring = []);\n first = true;\n v_ = false;\n x_ = y_ = NaN;\n }\n\n // TODO rather than special-case polygons, simply handle them separately.\n // Ideally, coincident intersection points should be jittered to avoid\n // clipping issues.\n function lineEnd() {\n if (segments) {\n linePoint(x__, y__);\n if (v__ && v_) bufferStream.rejoin();\n segments.push(bufferStream.result());\n }\n clipStream.point = point;\n if (v_) activeStream.lineEnd();\n }\n\n function linePoint(x, y) {\n var v = visible(x, y);\n if (polygon) ring.push([x, y]);\n if (first) {\n x__ = x, y__ = y, v__ = v;\n first = false;\n if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n }\n } else {\n if (v && v_) activeStream.point(x, y);\n else {\n var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))],\n b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];\n if (clipLine(a, b, x0, y0, x1, y1)) {\n if (!v_) {\n activeStream.lineStart();\n activeStream.point(a[0], a[1]);\n }\n activeStream.point(b[0], b[1]);\n if (!v) activeStream.lineEnd();\n clean = false;\n } else if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n clean = false;\n }\n }\n }\n x_ = x, y_ = y, v_ = v;\n }\n\n return clipStream;\n };\n}\n","export default function(a, b, x0, y0, x1, y1) {\n var ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;\n if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;\n return true;\n}\n","import clipRectangle from \"./rectangle.js\";\n\nexport default function() {\n var x0 = 0,\n y0 = 0,\n x1 = 960,\n y1 = 500,\n cache,\n cacheStream,\n clip;\n\n return clip = {\n stream: function(stream) {\n return cache && cacheStream === stream ? cache : cache = clipRectangle(x0, y0, x1, y1)(cacheStream = stream);\n },\n extent: function(_) {\n return arguments.length ? (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1], cache = cacheStream = null, clip) : [[x0, y0], [x1, y1]];\n }\n };\n}\n","import adder from \"./adder.js\";\nimport {abs, atan2, cos, radians, sin, sqrt} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nvar lengthSum = adder(),\n lambda0,\n sinPhi0,\n cosPhi0;\n\nvar lengthStream = {\n sphere: noop,\n point: noop,\n lineStart: lengthLineStart,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop\n};\n\nfunction lengthLineStart() {\n lengthStream.point = lengthPointFirst;\n lengthStream.lineEnd = lengthLineEnd;\n}\n\nfunction lengthLineEnd() {\n lengthStream.point = lengthStream.lineEnd = noop;\n}\n\nfunction lengthPointFirst(lambda, phi) {\n lambda *= radians, phi *= radians;\n lambda0 = lambda, sinPhi0 = sin(phi), cosPhi0 = cos(phi);\n lengthStream.point = lengthPoint;\n}\n\nfunction lengthPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var sinPhi = sin(phi),\n cosPhi = cos(phi),\n delta = abs(lambda - lambda0),\n cosDelta = cos(delta),\n sinDelta = sin(delta),\n x = cosPhi * sinDelta,\n y = cosPhi0 * sinPhi - sinPhi0 * cosPhi * cosDelta,\n z = sinPhi0 * sinPhi + cosPhi0 * cosPhi * cosDelta;\n lengthSum.add(atan2(sqrt(x * x + y * y), z));\n lambda0 = lambda, sinPhi0 = sinPhi, cosPhi0 = cosPhi;\n}\n\nexport default function(object) {\n lengthSum.reset();\n stream(object, lengthStream);\n return +lengthSum;\n}\n","import length from \"./length.js\";\n\nvar coordinates = [null, null],\n object = {type: \"LineString\", coordinates: coordinates};\n\nexport default function(a, b) {\n coordinates[0] = a;\n coordinates[1] = b;\n return length(object);\n}\n","import {default as polygonContains} from \"./polygonContains.js\";\nimport {default as distance} from \"./distance.js\";\nimport {epsilon2, radians} from \"./math.js\";\n\nvar containsObjectType = {\n Feature: function(object, point) {\n return containsGeometry(object.geometry, point);\n },\n FeatureCollection: function(object, point) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) if (containsGeometry(features[i].geometry, point)) return true;\n return false;\n }\n};\n\nvar containsGeometryType = {\n Sphere: function() {\n return true;\n },\n Point: function(object, point) {\n return containsPoint(object.coordinates, point);\n },\n MultiPoint: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsPoint(coordinates[i], point)) return true;\n return false;\n },\n LineString: function(object, point) {\n return containsLine(object.coordinates, point);\n },\n MultiLineString: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsLine(coordinates[i], point)) return true;\n return false;\n },\n Polygon: function(object, point) {\n return containsPolygon(object.coordinates, point);\n },\n MultiPolygon: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsPolygon(coordinates[i], point)) return true;\n return false;\n },\n GeometryCollection: function(object, point) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) if (containsGeometry(geometries[i], point)) return true;\n return false;\n }\n};\n\nfunction containsGeometry(geometry, point) {\n return geometry && containsGeometryType.hasOwnProperty(geometry.type)\n ? containsGeometryType[geometry.type](geometry, point)\n : false;\n}\n\nfunction containsPoint(coordinates, point) {\n return distance(coordinates, point) === 0;\n}\n\nfunction containsLine(coordinates, point) {\n var ao, bo, ab;\n for (var i = 0, n = coordinates.length; i < n; i++) {\n bo = distance(coordinates[i], point);\n if (bo === 0) return true;\n if (i > 0) {\n ab = distance(coordinates[i], coordinates[i - 1]);\n if (\n ab > 0 &&\n ao <= ab &&\n bo <= ab &&\n (ao + bo - ab) * (1 - Math.pow((ao - bo) / ab, 2)) < epsilon2 * ab\n )\n return true;\n }\n ao = bo;\n }\n return false;\n}\n\nfunction containsPolygon(coordinates, point) {\n return !!polygonContains(coordinates.map(ringRadians), pointRadians(point));\n}\n\nfunction ringRadians(ring) {\n return ring = ring.map(pointRadians), ring.pop(), ring;\n}\n\nfunction pointRadians(point) {\n return [point[0] * radians, point[1] * radians];\n}\n\nexport default function(object, point) {\n return (object && containsObjectType.hasOwnProperty(object.type)\n ? containsObjectType[object.type]\n : containsGeometry)(object, point);\n}\n","import {range} from \"d3-array\";\nimport {abs, ceil, epsilon} from \"./math.js\";\n\nfunction graticuleX(y0, y1, dy) {\n var y = range(y0, y1 - epsilon, dy).concat(y1);\n return function(x) { return y.map(function(y) { return [x, y]; }); };\n}\n\nfunction graticuleY(x0, x1, dx) {\n var x = range(x0, x1 - epsilon, dx).concat(x1);\n return function(y) { return x.map(function(x) { return [x, y]; }); };\n}\n\nexport default function graticule() {\n var x1, x0, X1, X0,\n y1, y0, Y1, Y0,\n dx = 10, dy = dx, DX = 90, DY = 360,\n x, y, X, Y,\n precision = 2.5;\n\n function graticule() {\n return {type: \"MultiLineString\", coordinates: lines()};\n }\n\n function lines() {\n return range(ceil(X0 / DX) * DX, X1, DX).map(X)\n .concat(range(ceil(Y0 / DY) * DY, Y1, DY).map(Y))\n .concat(range(ceil(x0 / dx) * dx, x1, dx).filter(function(x) { return abs(x % DX) > epsilon; }).map(x))\n .concat(range(ceil(y0 / dy) * dy, y1, dy).filter(function(y) { return abs(y % DY) > epsilon; }).map(y));\n }\n\n graticule.lines = function() {\n return lines().map(function(coordinates) { return {type: \"LineString\", coordinates: coordinates}; });\n };\n\n graticule.outline = function() {\n return {\n type: \"Polygon\",\n coordinates: [\n X(X0).concat(\n Y(Y1).slice(1),\n X(X1).reverse().slice(1),\n Y(Y0).reverse().slice(1))\n ]\n };\n };\n\n graticule.extent = function(_) {\n if (!arguments.length) return graticule.extentMinor();\n return graticule.extentMajor(_).extentMinor(_);\n };\n\n graticule.extentMajor = function(_) {\n if (!arguments.length) return [[X0, Y0], [X1, Y1]];\n X0 = +_[0][0], X1 = +_[1][0];\n Y0 = +_[0][1], Y1 = +_[1][1];\n if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n return graticule.precision(precision);\n };\n\n graticule.extentMinor = function(_) {\n if (!arguments.length) return [[x0, y0], [x1, y1]];\n x0 = +_[0][0], x1 = +_[1][0];\n y0 = +_[0][1], y1 = +_[1][1];\n if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n return graticule.precision(precision);\n };\n\n graticule.step = function(_) {\n if (!arguments.length) return graticule.stepMinor();\n return graticule.stepMajor(_).stepMinor(_);\n };\n\n graticule.stepMajor = function(_) {\n if (!arguments.length) return [DX, DY];\n DX = +_[0], DY = +_[1];\n return graticule;\n };\n\n graticule.stepMinor = function(_) {\n if (!arguments.length) return [dx, dy];\n dx = +_[0], dy = +_[1];\n return graticule;\n };\n\n graticule.precision = function(_) {\n if (!arguments.length) return precision;\n precision = +_;\n x = graticuleX(y0, y1, 90);\n y = graticuleY(x0, x1, precision);\n X = graticuleX(Y0, Y1, 90);\n Y = graticuleY(X0, X1, precision);\n return graticule;\n };\n\n return graticule\n .extentMajor([[-180, -90 + epsilon], [180, 90 - epsilon]])\n .extentMinor([[-180, -80 - epsilon], [180, 80 + epsilon]]);\n}\n\nexport function graticule10() {\n return graticule()();\n}\n","import {asin, atan2, cos, degrees, haversin, radians, sin, sqrt} from \"./math.js\";\n\nexport default function(a, b) {\n var x0 = a[0] * radians,\n y0 = a[1] * radians,\n x1 = b[0] * radians,\n y1 = b[1] * radians,\n cy0 = cos(y0),\n sy0 = sin(y0),\n cy1 = cos(y1),\n sy1 = sin(y1),\n kx0 = cy0 * cos(x0),\n ky0 = cy0 * sin(x0),\n kx1 = cy1 * cos(x1),\n ky1 = cy1 * sin(x1),\n d = 2 * asin(sqrt(haversin(y1 - y0) + cy0 * cy1 * haversin(x1 - x0))),\n k = sin(d);\n\n var interpolate = d ? function(t) {\n var B = sin(t *= d) / k,\n A = sin(d - t) / k,\n x = A * kx0 + B * kx1,\n y = A * ky0 + B * ky1,\n z = A * sy0 + B * sy1;\n return [\n atan2(y, x) * degrees,\n atan2(z, sqrt(x * x + y * y)) * degrees\n ];\n } : function() {\n return [x0 * degrees, y0 * degrees];\n };\n\n interpolate.distance = d;\n\n return interpolate;\n}\n","export default function(x) {\n return x;\n}\n","import adder from \"../adder.js\";\nimport {abs} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar areaSum = adder(),\n areaRingSum = adder(),\n x00,\n y00,\n x0,\n y0;\n\nvar areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop;\n areaSum.add(abs(areaRingSum));\n areaRingSum.reset();\n },\n result: function() {\n var area = areaSum / 2;\n areaSum.reset();\n return area;\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaPointFirst(x, y) {\n areaStream.point = areaPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction areaPoint(x, y) {\n areaRingSum.add(y0 * x - x0 * y);\n x0 = x, y0 = y;\n}\n\nfunction areaRingEnd() {\n areaPoint(x00, y00);\n}\n\nexport default areaStream;\n","import noop from \"../noop.js\";\n\nvar x0 = Infinity,\n y0 = x0,\n x1 = -x0,\n y1 = x1;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop,\n result: function() {\n var bounds = [[x0, y0], [x1, y1]];\n x1 = y1 = -(y0 = x0 = Infinity);\n return bounds;\n }\n};\n\nfunction boundsPoint(x, y) {\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n}\n\nexport default boundsStream;\n","import {sqrt} from \"../math.js\";\n\n// TODO Enforce positive area for exterior, negative area for interior?\n\nvar X0 = 0,\n Y0 = 0,\n Z0 = 0,\n X1 = 0,\n Y1 = 0,\n Z1 = 0,\n X2 = 0,\n Y2 = 0,\n Z2 = 0,\n x00,\n y00,\n x0,\n y0;\n\nvar centroidStream = {\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.point = centroidPoint;\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n },\n result: function() {\n var centroid = Z2 ? [X2 / Z2, Y2 / Z2]\n : Z1 ? [X1 / Z1, Y1 / Z1]\n : Z0 ? [X0 / Z0, Y0 / Z0]\n : [NaN, NaN];\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 =\n X2 = Y2 = Z2 = 0;\n return centroid;\n }\n};\n\nfunction centroidPoint(x, y) {\n X0 += x;\n Y0 += y;\n ++Z0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidPointFirstLine;\n}\n\nfunction centroidPointFirstLine(x, y) {\n centroidStream.point = centroidPointLine;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidPointLine(x, y) {\n var dx = x - x0, dy = y - y0, z = sqrt(dx * dx + dy * dy);\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingStart() {\n centroidStream.point = centroidPointFirstRing;\n}\n\nfunction centroidRingEnd() {\n centroidPointRing(x00, y00);\n}\n\nfunction centroidPointFirstRing(x, y) {\n centroidStream.point = centroidPointRing;\n centroidPoint(x00 = x0 = x, y00 = y0 = y);\n}\n\nfunction centroidPointRing(x, y) {\n var dx = x - x0,\n dy = y - y0,\n z = sqrt(dx * dx + dy * dy);\n\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n\n z = y0 * x - x0 * y;\n X2 += z * (x0 + x);\n Y2 += z * (y0 + y);\n Z2 += z * 3;\n centroidPoint(x0 = x, y0 = y);\n}\n\nexport default centroidStream;\n","import {tau} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nexport default function PathContext(context) {\n this._context = context;\n}\n\nPathContext.prototype = {\n _radius: 4.5,\n pointRadius: function(_) {\n return this._radius = _, this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._context.closePath();\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._context.moveTo(x, y);\n this._point = 1;\n break;\n }\n case 1: {\n this._context.lineTo(x, y);\n break;\n }\n default: {\n this._context.moveTo(x + this._radius, y);\n this._context.arc(x, y, this._radius, 0, tau);\n break;\n }\n }\n },\n result: noop\n};\n","import adder from \"../adder.js\";\nimport {sqrt} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar lengthSum = adder(),\n lengthRing,\n x00,\n y00,\n x0,\n y0;\n\nvar lengthStream = {\n point: noop,\n lineStart: function() {\n lengthStream.point = lengthPointFirst;\n },\n lineEnd: function() {\n if (lengthRing) lengthPoint(x00, y00);\n lengthStream.point = noop;\n },\n polygonStart: function() {\n lengthRing = true;\n },\n polygonEnd: function() {\n lengthRing = null;\n },\n result: function() {\n var length = +lengthSum;\n lengthSum.reset();\n return length;\n }\n};\n\nfunction lengthPointFirst(x, y) {\n lengthStream.point = lengthPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction lengthPoint(x, y) {\n x0 -= x, y0 -= y;\n lengthSum.add(sqrt(x0 * x0 + y0 * y0));\n x0 = x, y0 = y;\n}\n\nexport default lengthStream;\n","export default function PathString() {\n this._string = [];\n}\n\nPathString.prototype = {\n _radius: 4.5,\n _circle: circle(4.5),\n pointRadius: function(_) {\n if ((_ = +_) !== this._radius) this._radius = _, this._circle = null;\n return this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._string.push(\"Z\");\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._string.push(\"M\", x, \",\", y);\n this._point = 1;\n break;\n }\n case 1: {\n this._string.push(\"L\", x, \",\", y);\n break;\n }\n default: {\n if (this._circle == null) this._circle = circle(this._radius);\n this._string.push(\"M\", x, \",\", y, this._circle);\n break;\n }\n }\n },\n result: function() {\n if (this._string.length) {\n var result = this._string.join(\"\");\n this._string = [];\n return result;\n } else {\n return null;\n }\n }\n};\n\nfunction circle(radius) {\n return \"m0,\" + radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius\n + \"z\";\n}\n","import identity from \"../identity.js\";\nimport stream from \"../stream.js\";\nimport pathArea from \"./area.js\";\nimport pathBounds from \"./bounds.js\";\nimport pathCentroid from \"./centroid.js\";\nimport PathContext from \"./context.js\";\nimport pathMeasure from \"./measure.js\";\nimport PathString from \"./string.js\";\n\nexport default function(projection, context) {\n var pointRadius = 4.5,\n projectionStream,\n contextStream;\n\n function path(object) {\n if (object) {\n if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n stream(object, projectionStream(contextStream));\n }\n return contextStream.result();\n }\n\n path.area = function(object) {\n stream(object, projectionStream(pathArea));\n return pathArea.result();\n };\n\n path.measure = function(object) {\n stream(object, projectionStream(pathMeasure));\n return pathMeasure.result();\n };\n\n path.bounds = function(object) {\n stream(object, projectionStream(pathBounds));\n return pathBounds.result();\n };\n\n path.centroid = function(object) {\n stream(object, projectionStream(pathCentroid));\n return pathCentroid.result();\n };\n\n path.projection = function(_) {\n return arguments.length ? (projectionStream = _ == null ? (projection = null, identity) : (projection = _).stream, path) : projection;\n };\n\n path.context = function(_) {\n if (!arguments.length) return context;\n contextStream = _ == null ? (context = null, new PathString) : new PathContext(context = _);\n if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n return path;\n };\n\n path.pointRadius = function(_) {\n if (!arguments.length) return pointRadius;\n pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n return path;\n };\n\n return path.projection(projection).context(context);\n}\n","export default function(methods) {\n return {\n stream: transformer(methods)\n };\n}\n\nexport function transformer(methods) {\n return function(stream) {\n var s = new TransformStream;\n for (var key in methods) s[key] = methods[key];\n s.stream = stream;\n return s;\n };\n}\n\nfunction TransformStream() {}\n\nTransformStream.prototype = {\n constructor: TransformStream,\n point: function(x, y) { this.stream.point(x, y); },\n sphere: function() { this.stream.sphere(); },\n lineStart: function() { this.stream.lineStart(); },\n lineEnd: function() { this.stream.lineEnd(); },\n polygonStart: function() { this.stream.polygonStart(); },\n polygonEnd: function() { this.stream.polygonEnd(); }\n};\n","import {default as geoStream} from \"../stream.js\";\nimport boundsStream from \"../path/bounds.js\";\n\nfunction fit(projection, fitBounds, object) {\n var clip = projection.clipExtent && projection.clipExtent();\n projection.scale(150).translate([0, 0]);\n if (clip != null) projection.clipExtent(null);\n geoStream(object, projection.stream(boundsStream));\n fitBounds(boundsStream.result());\n if (clip != null) projection.clipExtent(clip);\n return projection;\n}\n\nexport function fitExtent(projection, extent, object) {\n return fit(projection, function(b) {\n var w = extent[1][0] - extent[0][0],\n h = extent[1][1] - extent[0][1],\n k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),\n x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,\n y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n\nexport function fitSize(projection, size, object) {\n return fitExtent(projection, [[0, 0], size], object);\n}\n\nexport function fitWidth(projection, width, object) {\n return fit(projection, function(b) {\n var w = +width,\n k = w / (b[1][0] - b[0][0]),\n x = (w - k * (b[1][0] + b[0][0])) / 2,\n y = -k * b[0][1];\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n\nexport function fitHeight(projection, height, object) {\n return fit(projection, function(b) {\n var h = +height,\n k = h / (b[1][1] - b[0][1]),\n x = -k * b[0][0],\n y = (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n","import {cartesian} from \"../cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, radians, sqrt} from \"../math.js\";\nimport {transformer} from \"../transform.js\";\n\nvar maxDepth = 16, // maximum depth of subdivision\n cosMinDistance = cos(30 * radians); // cos(minimum angular distance)\n\nexport default function(project, delta2) {\n return +delta2 ? resample(project, delta2) : resampleNone(project);\n}\n\nfunction resampleNone(project) {\n return transformer({\n point: function(x, y) {\n x = project(x, y);\n this.stream.point(x[0], x[1]);\n }\n });\n}\n\nfunction resample(project, delta2) {\n\n function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {\n var dx = x1 - x0,\n dy = y1 - y0,\n d2 = dx * dx + dy * dy;\n if (d2 > 4 * delta2 && depth--) {\n var a = a0 + a1,\n b = b0 + b1,\n c = c0 + c1,\n m = sqrt(a * a + b * b + c * c),\n phi2 = asin(c /= m),\n lambda2 = abs(abs(c) - 1) < epsilon || abs(lambda0 - lambda1) < epsilon ? (lambda0 + lambda1) / 2 : atan2(b, a),\n p = project(lambda2, phi2),\n x2 = p[0],\n y2 = p[1],\n dx2 = x2 - x0,\n dy2 = y2 - y0,\n dz = dy * dx2 - dx * dy2;\n if (dz * dz / d2 > delta2 // perpendicular projected distance\n || abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end\n || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);\n stream.point(x2, y2);\n resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);\n }\n }\n }\n return function(stream) {\n var lambda00, x00, y00, a00, b00, c00, // first point\n lambda0, x0, y0, a0, b0, c0; // previous point\n\n var resampleStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; },\n polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; }\n };\n\n function point(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n }\n\n function lineStart() {\n x0 = NaN;\n resampleStream.point = linePoint;\n stream.lineStart();\n }\n\n function linePoint(lambda, phi) {\n var c = cartesian([lambda, phi]), p = project(lambda, phi);\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n stream.point(x0, y0);\n }\n\n function lineEnd() {\n resampleStream.point = point;\n stream.lineEnd();\n }\n\n function ringStart() {\n lineStart();\n resampleStream.point = ringPoint;\n resampleStream.lineEnd = ringEnd;\n }\n\n function ringPoint(lambda, phi) {\n linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n resampleStream.point = linePoint;\n }\n\n function ringEnd() {\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);\n resampleStream.lineEnd = lineEnd;\n lineEnd();\n }\n\n return resampleStream;\n };\n}\n","import clipAntimeridian from \"../clip/antimeridian.js\";\nimport clipCircle from \"../clip/circle.js\";\nimport clipRectangle from \"../clip/rectangle.js\";\nimport compose from \"../compose.js\";\nimport identity from \"../identity.js\";\nimport {cos, degrees, radians, sin, sqrt} from \"../math.js\";\nimport {rotateRadians} from \"../rotation.js\";\nimport {transformer} from \"../transform.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\nimport resample from \"./resample.js\";\n\nvar transformRadians = transformer({\n point: function(x, y) {\n this.stream.point(x * radians, y * radians);\n }\n});\n\nfunction transformRotate(rotate) {\n return transformer({\n point: function(x, y) {\n var r = rotate(x, y);\n return this.stream.point(r[0], r[1]);\n }\n });\n}\n\nfunction scaleTranslate(k, dx, dy, sx, sy) {\n function transform(x, y) {\n x *= sx; y *= sy;\n return [dx + k * x, dy - k * y];\n }\n transform.invert = function(x, y) {\n return [(x - dx) / k * sx, (dy - y) / k * sy];\n };\n return transform;\n}\n\nfunction scaleTranslateRotate(k, dx, dy, sx, sy, alpha) {\n var cosAlpha = cos(alpha),\n sinAlpha = sin(alpha),\n a = cosAlpha * k,\n b = sinAlpha * k,\n ai = cosAlpha / k,\n bi = sinAlpha / k,\n ci = (sinAlpha * dy - cosAlpha * dx) / k,\n fi = (sinAlpha * dx + cosAlpha * dy) / k;\n function transform(x, y) {\n x *= sx; y *= sy;\n return [a * x - b * y + dx, dy - b * x - a * y];\n }\n transform.invert = function(x, y) {\n return [sx * (ai * x - bi * y + ci), sy * (fi - bi * x - ai * y)];\n };\n return transform;\n}\n\nexport default function projection(project) {\n return projectionMutator(function() { return project; })();\n}\n\nexport function projectionMutator(projectAt) {\n var project,\n k = 150, // scale\n x = 480, y = 250, // translate\n lambda = 0, phi = 0, // center\n deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, // pre-rotate\n alpha = 0, // post-rotate angle\n sx = 1, // reflectX\n sy = 1, // reflectX\n theta = null, preclip = clipAntimeridian, // pre-clip angle\n x0 = null, y0, x1, y1, postclip = identity, // post-clip extent\n delta2 = 0.5, // precision\n projectResample,\n projectTransform,\n projectRotateTransform,\n cache,\n cacheStream;\n\n function projection(point) {\n return projectRotateTransform(point[0] * radians, point[1] * radians);\n }\n\n function invert(point) {\n point = projectRotateTransform.invert(point[0], point[1]);\n return point && [point[0] * degrees, point[1] * degrees];\n }\n\n projection.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = transformRadians(transformRotate(rotate)(preclip(projectResample(postclip(cacheStream = stream)))));\n };\n\n projection.preclip = function(_) {\n return arguments.length ? (preclip = _, theta = undefined, reset()) : preclip;\n };\n\n projection.postclip = function(_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n };\n\n projection.clipAngle = function(_) {\n return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees;\n };\n\n projection.clipExtent = function(_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n projection.scale = function(_) {\n return arguments.length ? (k = +_, recenter()) : k;\n };\n\n projection.translate = function(_) {\n return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];\n };\n\n projection.center = function(_) {\n return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees, phi * degrees];\n };\n\n projection.rotate = function(_) {\n return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees, deltaPhi * degrees, deltaGamma * degrees];\n };\n\n projection.angle = function(_) {\n return arguments.length ? (alpha = _ % 360 * radians, recenter()) : alpha * degrees;\n };\n\n projection.reflectX = function(_) {\n return arguments.length ? (sx = _ ? -1 : 1, recenter()) : sx < 0;\n };\n\n projection.reflectY = function(_) {\n return arguments.length ? (sy = _ ? -1 : 1, recenter()) : sy < 0;\n };\n\n projection.precision = function(_) {\n return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2);\n };\n\n projection.fitExtent = function(extent, object) {\n return fitExtent(projection, extent, object);\n };\n\n projection.fitSize = function(size, object) {\n return fitSize(projection, size, object);\n };\n\n projection.fitWidth = function(width, object) {\n return fitWidth(projection, width, object);\n };\n\n projection.fitHeight = function(height, object) {\n return fitHeight(projection, height, object);\n };\n\n function recenter() {\n var center = scaleTranslateRotate(k, 0, 0, sx, sy, alpha).apply(null, project(lambda, phi)),\n transform = (alpha ? scaleTranslateRotate : scaleTranslate)(k, x - center[0], y - center[1], sx, sy, alpha);\n rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma);\n projectTransform = compose(project, transform);\n projectRotateTransform = compose(rotate, projectTransform);\n projectResample = resample(projectTransform, delta2);\n return reset();\n }\n\n function reset() {\n cache = cacheStream = null;\n return projection;\n }\n\n return function() {\n project = projectAt.apply(this, arguments);\n projection.invert = project.invert && invert;\n return recenter();\n };\n}\n","import {degrees, pi, radians} from \"../math.js\";\nimport {projectionMutator} from \"./index.js\";\n\nexport function conicProjection(projectAt) {\n var phi0 = 0,\n phi1 = pi / 3,\n m = projectionMutator(projectAt),\n p = m(phi0, phi1);\n\n p.parallels = function(_) {\n return arguments.length ? m(phi0 = _[0] * radians, phi1 = _[1] * radians) : [phi0 * degrees, phi1 * degrees];\n };\n\n return p;\n}\n","import {abs, asin, atan2, cos, epsilon, pi, sign, sin, sqrt} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {cylindricalEqualAreaRaw} from \"./cylindricalEqualArea.js\";\n\nexport function conicEqualAreaRaw(y0, y1) {\n var sy0 = sin(y0), n = (sy0 + sin(y1)) / 2;\n\n // Are the parallels symmetrical around the Equator?\n if (abs(n) < epsilon) return cylindricalEqualAreaRaw(y0);\n\n var c = 1 + sy0 * (2 * n - sy0), r0 = sqrt(c) / n;\n\n function project(x, y) {\n var r = sqrt(c - 2 * n * sin(y)) / n;\n return [r * sin(x *= n), r0 - r * cos(x)];\n }\n\n project.invert = function(x, y) {\n var r0y = r0 - y,\n l = atan2(x, abs(r0y)) * sign(r0y);\n if (r0y * n < 0)\n l -= pi * sign(x) * sign(r0y);\n return [l / n, asin((c - (x * x + r0y * r0y) * n * n) / (2 * n))];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicEqualAreaRaw)\n .scale(155.424)\n .center([0, 33.6442]);\n}\n","import {asin, cos, sin} from \"../math.js\";\n\nexport function cylindricalEqualAreaRaw(phi0) {\n var cosPhi0 = cos(phi0);\n\n function forward(lambda, phi) {\n return [lambda * cosPhi0, sin(phi) / cosPhi0];\n }\n\n forward.invert = function(x, y) {\n return [x / cosPhi0, asin(y * cosPhi0)];\n };\n\n return forward;\n}\n","import conicEqualArea from \"./conicEqualArea.js\";\n\nexport default function() {\n return conicEqualArea()\n .parallels([29.5, 45.5])\n .scale(1070)\n .translate([480, 250])\n .rotate([96, 0])\n .center([-0.6, 38.7]);\n}\n","import {epsilon} from \"../math.js\";\nimport albers from \"./albers.js\";\nimport conicEqualArea from \"./conicEqualArea.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\n\n// The projections must have mutually exclusive clip regions on the sphere,\n// as this will avoid emitting interleaving lines and polygons.\nfunction multiplex(streams) {\n var n = streams.length;\n return {\n point: function(x, y) { var i = -1; while (++i < n) streams[i].point(x, y); },\n sphere: function() { var i = -1; while (++i < n) streams[i].sphere(); },\n lineStart: function() { var i = -1; while (++i < n) streams[i].lineStart(); },\n lineEnd: function() { var i = -1; while (++i < n) streams[i].lineEnd(); },\n polygonStart: function() { var i = -1; while (++i < n) streams[i].polygonStart(); },\n polygonEnd: function() { var i = -1; while (++i < n) streams[i].polygonEnd(); }\n };\n}\n\n// A composite projection for the United States, configured by default for\n// 960×500. The projection also works quite well at 960×600 if you change the\n// scale to 1285 and adjust the translate accordingly. The set of standard\n// parallels for each region comes from USGS, which is published here:\n// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers\nexport default function() {\n var cache,\n cacheStream,\n lower48 = albers(), lower48Point,\n alaska = conicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), alaskaPoint, // EPSG:3338\n hawaii = conicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), hawaiiPoint, // ESRI:102007\n point, pointStream = {point: function(x, y) { point = [x, y]; }};\n\n function albersUsa(coordinates) {\n var x = coordinates[0], y = coordinates[1];\n return point = null,\n (lower48Point.point(x, y), point)\n || (alaskaPoint.point(x, y), point)\n || (hawaiiPoint.point(x, y), point);\n }\n\n albersUsa.invert = function(coordinates) {\n var k = lower48.scale(),\n t = lower48.translate(),\n x = (coordinates[0] - t[0]) / k,\n y = (coordinates[1] - t[1]) / k;\n return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska\n : y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii\n : lower48).invert(coordinates);\n };\n\n albersUsa.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]);\n };\n\n albersUsa.precision = function(_) {\n if (!arguments.length) return lower48.precision();\n lower48.precision(_), alaska.precision(_), hawaii.precision(_);\n return reset();\n };\n\n albersUsa.scale = function(_) {\n if (!arguments.length) return lower48.scale();\n lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_);\n return albersUsa.translate(lower48.translate());\n };\n\n albersUsa.translate = function(_) {\n if (!arguments.length) return lower48.translate();\n var k = lower48.scale(), x = +_[0], y = +_[1];\n\n lower48Point = lower48\n .translate(_)\n .clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]])\n .stream(pointStream);\n\n alaskaPoint = alaska\n .translate([x - 0.307 * k, y + 0.201 * k])\n .clipExtent([[x - 0.425 * k + epsilon, y + 0.120 * k + epsilon], [x - 0.214 * k - epsilon, y + 0.234 * k - epsilon]])\n .stream(pointStream);\n\n hawaiiPoint = hawaii\n .translate([x - 0.205 * k, y + 0.212 * k])\n .clipExtent([[x - 0.214 * k + epsilon, y + 0.166 * k + epsilon], [x - 0.115 * k - epsilon, y + 0.234 * k - epsilon]])\n .stream(pointStream);\n\n return reset();\n };\n\n albersUsa.fitExtent = function(extent, object) {\n return fitExtent(albersUsa, extent, object);\n };\n\n albersUsa.fitSize = function(size, object) {\n return fitSize(albersUsa, size, object);\n };\n\n albersUsa.fitWidth = function(width, object) {\n return fitWidth(albersUsa, width, object);\n };\n\n albersUsa.fitHeight = function(height, object) {\n return fitHeight(albersUsa, height, object);\n };\n\n function reset() {\n cache = cacheStream = null;\n return albersUsa;\n }\n\n return albersUsa.scale(1070);\n}\n","import {asin, atan2, cos, sin, sqrt} from \"../math.js\";\n\nexport function azimuthalRaw(scale) {\n return function(x, y) {\n var cx = cos(x),\n cy = cos(y),\n k = scale(cx * cy);\n return [\n k * cy * sin(x),\n k * sin(y)\n ];\n }\n}\n\nexport function azimuthalInvert(angle) {\n return function(x, y) {\n var z = sqrt(x * x + y * y),\n c = angle(z),\n sc = sin(c),\n cc = cos(c);\n return [\n atan2(x * sc, z * cc),\n asin(z && y * sc / z)\n ];\n }\n}\n","import {asin, sqrt} from \"../math.js\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport var azimuthalEqualAreaRaw = azimuthalRaw(function(cxcy) {\n return sqrt(2 / (1 + cxcy));\n});\n\nazimuthalEqualAreaRaw.invert = azimuthalInvert(function(z) {\n return 2 * asin(z / 2);\n});\n\nexport default function() {\n return projection(azimuthalEqualAreaRaw)\n .scale(124.75)\n .clipAngle(180 - 1e-3);\n}\n","import {acos, sin} from \"../math.js\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport var azimuthalEquidistantRaw = azimuthalRaw(function(c) {\n return (c = acos(c)) && c / sin(c);\n});\n\nazimuthalEquidistantRaw.invert = azimuthalInvert(function(z) {\n return z;\n});\n\nexport default function() {\n return projection(azimuthalEquidistantRaw)\n .scale(79.4188)\n .clipAngle(180 - 1e-3);\n}\n","import {atan, exp, halfPi, log, pi, tan, tau} from \"../math.js\";\nimport rotation from \"../rotation.js\";\nimport projection from \"./index.js\";\n\nexport function mercatorRaw(lambda, phi) {\n return [lambda, log(tan((halfPi + phi) / 2))];\n}\n\nmercatorRaw.invert = function(x, y) {\n return [x, 2 * atan(exp(y)) - halfPi];\n};\n\nexport default function() {\n return mercatorProjection(mercatorRaw)\n .scale(961 / tau);\n}\n\nexport function mercatorProjection(project) {\n var m = projection(project),\n center = m.center,\n scale = m.scale,\n translate = m.translate,\n clipExtent = m.clipExtent,\n x0 = null, y0, x1, y1; // clip extent\n\n m.scale = function(_) {\n return arguments.length ? (scale(_), reclip()) : scale();\n };\n\n m.translate = function(_) {\n return arguments.length ? (translate(_), reclip()) : translate();\n };\n\n m.center = function(_) {\n return arguments.length ? (center(_), reclip()) : center();\n };\n\n m.clipExtent = function(_) {\n return arguments.length ? ((_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1])), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n function reclip() {\n var k = pi * scale(),\n t = m(rotation(m.rotate()).invert([0, 0]));\n return clipExtent(x0 == null\n ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw\n ? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]]\n : [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]);\n }\n\n return reclip();\n}\n","import {abs, atan, atan2, cos, epsilon, halfPi, log, pi, pow, sign, sin, sqrt, tan} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {mercatorRaw} from \"./mercator.js\";\n\nfunction tany(y) {\n return tan((halfPi + y) / 2);\n}\n\nexport function conicConformalRaw(y0, y1) {\n var cy0 = cos(y0),\n n = y0 === y1 ? sin(y0) : log(cy0 / cos(y1)) / log(tany(y1) / tany(y0)),\n f = cy0 * pow(tany(y0), n) / n;\n\n if (!n) return mercatorRaw;\n\n function project(x, y) {\n if (f > 0) { if (y < -halfPi + epsilon) y = -halfPi + epsilon; }\n else { if (y > halfPi - epsilon) y = halfPi - epsilon; }\n var r = f / pow(tany(y), n);\n return [r * sin(n * x), f - r * cos(n * x)];\n }\n\n project.invert = function(x, y) {\n var fy = f - y, r = sign(n) * sqrt(x * x + fy * fy),\n l = atan2(x, abs(fy)) * sign(fy);\n if (fy * n < 0)\n l -= pi * sign(x) * sign(fy);\n return [l / n, 2 * atan(pow(f / r, 1 / n)) - halfPi];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicConformalRaw)\n .scale(109.5)\n .parallels([30, 30]);\n}\n","import projection from \"./index.js\";\n\nexport function equirectangularRaw(lambda, phi) {\n return [lambda, phi];\n}\n\nequirectangularRaw.invert = equirectangularRaw;\n\nexport default function() {\n return projection(equirectangularRaw)\n .scale(152.63);\n}\n","import {abs, atan2, cos, epsilon, pi, sign, sin, sqrt} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {equirectangularRaw} from \"./equirectangular.js\";\n\nexport function conicEquidistantRaw(y0, y1) {\n var cy0 = cos(y0),\n n = y0 === y1 ? sin(y0) : (cy0 - cos(y1)) / (y1 - y0),\n g = cy0 / n + y0;\n\n if (abs(n) < epsilon) return equirectangularRaw;\n\n function project(x, y) {\n var gy = g - y, nx = n * x;\n return [gy * sin(nx), g - gy * cos(nx)];\n }\n\n project.invert = function(x, y) {\n var gy = g - y,\n l = atan2(x, abs(gy)) * sign(gy);\n if (gy * n < 0)\n l -= pi * sign(x) * sign(gy);\n return [l / n, g - sign(n) * sqrt(x * x + gy * gy)];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicEquidistantRaw)\n .scale(131.154)\n .center([0, 13.9389]);\n}\n","import projection from \"./index.js\";\nimport {abs, asin, cos, epsilon2, sin, sqrt} from \"../math.js\";\n\nvar A1 = 1.340264,\n A2 = -0.081106,\n A3 = 0.000893,\n A4 = 0.003796,\n M = sqrt(3) / 2,\n iterations = 12;\n\nexport function equalEarthRaw(lambda, phi) {\n var l = asin(M * sin(phi)), l2 = l * l, l6 = l2 * l2 * l2;\n return [\n lambda * cos(l) / (M * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2))),\n l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2))\n ];\n}\n\nequalEarthRaw.invert = function(x, y) {\n var l = y, l2 = l * l, l6 = l2 * l2 * l2;\n for (var i = 0, delta, fy, fpy; i < iterations; ++i) {\n fy = l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - y;\n fpy = A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2);\n l -= delta = fy / fpy, l2 = l * l, l6 = l2 * l2 * l2;\n if (abs(delta) < epsilon2) break;\n }\n return [\n M * x * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2)) / cos(l),\n asin(sin(l) / M)\n ];\n};\n\nexport default function() {\n return projection(equalEarthRaw)\n .scale(177.158);\n}\n","import {atan, cos, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function gnomonicRaw(x, y) {\n var cy = cos(y), k = cos(x) * cy;\n return [cy * sin(x) / k, sin(y) / k];\n}\n\ngnomonicRaw.invert = azimuthalInvert(atan);\n\nexport default function() {\n return projection(gnomonicRaw)\n .scale(144.049)\n .clipAngle(60);\n}\n","import clipRectangle from \"../clip/rectangle.js\";\nimport identity from \"../identity.js\";\nimport {transformer} from \"../transform.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\nimport {cos, degrees, radians, sin} from \"../math.js\";\n\nexport default function() {\n var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, // scale, translate and reflect\n alpha = 0, ca, sa, // angle\n x0 = null, y0, x1, y1, // clip extent\n kx = 1, ky = 1,\n transform = transformer({\n point: function(x, y) {\n var p = projection([x, y])\n this.stream.point(p[0], p[1]);\n }\n }),\n postclip = identity,\n cache,\n cacheStream;\n\n function reset() {\n kx = k * sx;\n ky = k * sy;\n cache = cacheStream = null;\n return projection;\n }\n\n function projection (p) {\n var x = p[0] * kx, y = p[1] * ky;\n if (alpha) {\n var t = y * ca - x * sa;\n x = x * ca + y * sa;\n y = t;\n } \n return [x + tx, y + ty];\n }\n projection.invert = function(p) {\n var x = p[0] - tx, y = p[1] - ty;\n if (alpha) {\n var t = y * ca + x * sa;\n x = x * ca - y * sa;\n y = t;\n }\n return [x / kx, y / ky];\n };\n projection.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = transform(postclip(cacheStream = stream));\n };\n projection.postclip = function(_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n };\n projection.clipExtent = function(_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n projection.scale = function(_) {\n return arguments.length ? (k = +_, reset()) : k;\n };\n projection.translate = function(_) {\n return arguments.length ? (tx = +_[0], ty = +_[1], reset()) : [tx, ty];\n }\n projection.angle = function(_) {\n return arguments.length ? (alpha = _ % 360 * radians, sa = sin(alpha), ca = cos(alpha), reset()) : alpha * degrees;\n };\n projection.reflectX = function(_) {\n return arguments.length ? (sx = _ ? -1 : 1, reset()) : sx < 0;\n };\n projection.reflectY = function(_) {\n return arguments.length ? (sy = _ ? -1 : 1, reset()) : sy < 0;\n };\n projection.fitExtent = function(extent, object) {\n return fitExtent(projection, extent, object);\n };\n projection.fitSize = function(size, object) {\n return fitSize(projection, size, object);\n };\n projection.fitWidth = function(width, object) {\n return fitWidth(projection, width, object);\n };\n projection.fitHeight = function(height, object) {\n return fitHeight(projection, height, object);\n };\n\n return projection;\n}\n","import projection from \"./index.js\";\nimport {abs, epsilon} from \"../math.js\";\n\nexport function naturalEarth1Raw(lambda, phi) {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n return [\n lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))),\n phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4)))\n ];\n}\n\nnaturalEarth1Raw.invert = function(x, y) {\n var phi = y, i = 25, delta;\n do {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) /\n (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4)));\n } while (abs(delta) > epsilon && --i > 0);\n return [\n x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))),\n phi\n ];\n};\n\nexport default function() {\n return projection(naturalEarth1Raw)\n .scale(175.295);\n}\n","import {asin, cos, epsilon, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function orthographicRaw(x, y) {\n return [cos(y) * sin(x), sin(y)];\n}\n\northographicRaw.invert = azimuthalInvert(asin);\n\nexport default function() {\n return projection(orthographicRaw)\n .scale(249.5)\n .clipAngle(90 + epsilon);\n}\n","import {atan, cos, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function stereographicRaw(x, y) {\n var cy = cos(y), k = 1 + cos(x) * cy;\n return [cy * sin(x) / k, sin(y) / k];\n}\n\nstereographicRaw.invert = azimuthalInvert(function(z) {\n return 2 * atan(z);\n});\n\nexport default function() {\n return projection(stereographicRaw)\n .scale(250)\n .clipAngle(142);\n}\n","import {atan, exp, halfPi, log, tan} from \"../math.js\";\nimport {mercatorProjection} from \"./mercator.js\";\n\nexport function transverseMercatorRaw(lambda, phi) {\n return [log(tan((halfPi + phi) / 2)), -lambda];\n}\n\ntransverseMercatorRaw.invert = function(x, y) {\n return [-y, 2 * atan(exp(x)) - halfPi];\n};\n\nexport default function() {\n var m = mercatorProjection(transverseMercatorRaw),\n center = m.center,\n rotate = m.rotate;\n\n m.center = function(_) {\n return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]);\n };\n\n m.rotate = function(_) {\n return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]);\n };\n\n return rotate([0, 0, 90])\n .scale(159.155);\n}\n","function defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\nfunction meanX(children) {\n return children.reduce(meanXReduce, 0) / children.length;\n}\n\nfunction meanXReduce(x, c) {\n return x + c.x;\n}\n\nfunction maxY(children) {\n return 1 + children.reduce(maxYReduce, 0);\n}\n\nfunction maxYReduce(y, c) {\n return Math.max(y, c.y);\n}\n\nfunction leafLeft(node) {\n var children;\n while (children = node.children) node = children[0];\n return node;\n}\n\nfunction leafRight(node) {\n var children;\n while (children = node.children) node = children[children.length - 1];\n return node;\n}\n\nexport default function() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = false;\n\n function cluster(root) {\n var previousNode,\n x = 0;\n\n // First walk, computing the initial x & y values.\n root.eachAfter(function(node) {\n var children = node.children;\n if (children) {\n node.x = meanX(children);\n node.y = maxY(children);\n } else {\n node.x = previousNode ? x += separation(node, previousNode) : 0;\n node.y = 0;\n previousNode = node;\n }\n });\n\n var left = leafLeft(root),\n right = leafRight(root),\n x0 = left.x - separation(left, right) / 2,\n x1 = right.x + separation(right, left) / 2;\n\n // Second walk, normalizing x & y to the desired size.\n return root.eachAfter(nodeSize ? function(node) {\n node.x = (node.x - root.x) * dx;\n node.y = (root.y - node.y) * dy;\n } : function(node) {\n node.x = (node.x - x0) / (x1 - x0) * dx;\n node.y = (1 - (root.y ? node.y / root.y : 1)) * dy;\n });\n }\n\n cluster.separation = function(x) {\n return arguments.length ? (separation = x, cluster) : separation;\n };\n\n cluster.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? null : [dx, dy]);\n };\n\n cluster.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? [dx, dy] : null);\n };\n\n return cluster;\n}\n","function count(node) {\n var sum = 0,\n children = node.children,\n i = children && children.length;\n if (!i) sum = 1;\n else while (--i >= 0) sum += children[i].value;\n node.value = sum;\n}\n\nexport default function() {\n return this.eachAfter(count);\n}\n","import node_count from \"./count.js\";\nimport node_each from \"./each.js\";\nimport node_eachBefore from \"./eachBefore.js\";\nimport node_eachAfter from \"./eachAfter.js\";\nimport node_sum from \"./sum.js\";\nimport node_sort from \"./sort.js\";\nimport node_path from \"./path.js\";\nimport node_ancestors from \"./ancestors.js\";\nimport node_descendants from \"./descendants.js\";\nimport node_leaves from \"./leaves.js\";\nimport node_links from \"./links.js\";\n\nexport default function hierarchy(data, children) {\n var root = new Node(data),\n valued = +data.value && (root.value = data.value),\n node,\n nodes = [root],\n child,\n childs,\n i,\n n;\n\n if (children == null) children = defaultChildren;\n\n while (node = nodes.pop()) {\n if (valued) node.value = +node.data.value;\n if ((childs = children(node.data)) && (n = childs.length)) {\n node.children = new Array(n);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new Node(childs[i]));\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n\n return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n return hierarchy(this).eachBefore(copyData);\n}\n\nfunction defaultChildren(d) {\n return d.children;\n}\n\nfunction copyData(node) {\n node.data = node.data.data;\n}\n\nexport function computeHeight(node) {\n var height = 0;\n do node.height = height;\n while ((node = node.parent) && (node.height < ++height));\n}\n\nexport function Node(data) {\n this.data = data;\n this.depth =\n this.height = 0;\n this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n constructor: Node,\n count: node_count,\n each: node_each,\n eachAfter: node_eachAfter,\n eachBefore: node_eachBefore,\n sum: node_sum,\n sort: node_sort,\n path: node_path,\n ancestors: node_ancestors,\n descendants: node_descendants,\n leaves: node_leaves,\n links: node_links,\n copy: node_copy\n};\n","export default function(callback) {\n var node = this, current, next = [node], children, i, n;\n do {\n current = next.reverse(), next = [];\n while (node = current.pop()) {\n callback(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n } while (next.length);\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], next = [], children, i, n;\n while (node = nodes.pop()) {\n next.push(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n while (node = next.pop()) {\n callback(node);\n }\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], children, i;\n while (node = nodes.pop()) {\n callback(node), children = node.children;\n if (children) for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n return this;\n}\n","export default function(value) {\n return this.eachAfter(function(node) {\n var sum = +value(node.data) || 0,\n children = node.children,\n i = children && children.length;\n while (--i >= 0) sum += children[i].value;\n node.value = sum;\n });\n}\n","export default function(compare) {\n return this.eachBefore(function(node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n}\n","export default function(end) {\n var start = this,\n ancestor = leastCommonAncestor(start, end),\n nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = a.ancestors(),\n bNodes = b.ancestors(),\n c = null;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}\n","export default function() {\n var node = this, nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n}\n","export default function() {\n var nodes = [];\n this.each(function(node) {\n nodes.push(node);\n });\n return nodes;\n}\n","export default function() {\n var leaves = [];\n this.eachBefore(function(node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n}\n","export default function() {\n var root = this, links = [];\n root.each(function(node) {\n if (node !== root) { // Don’t include the root’s parent, if any.\n links.push({source: node.parent, target: node});\n }\n });\n return links;\n}\n","export var slice = Array.prototype.slice;\n\nexport function shuffle(array) {\n var m = array.length,\n t,\n i;\n\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m];\n array[m] = array[i];\n array[i] = t;\n }\n\n return array;\n}\n","import {shuffle, slice} from \"../array.js\";\n\nexport default function(circles) {\n var i = 0, n = (circles = shuffle(slice.call(circles))).length, B = [], p, e;\n\n while (i < n) {\n p = circles[i];\n if (e && enclosesWeak(e, p)) ++i;\n else e = encloseBasis(B = extendBasis(B, p)), i = 0;\n }\n\n return e;\n}\n\nfunction extendBasis(B, p) {\n var i, j;\n\n if (enclosesWeakAll(p, B)) return [p];\n\n // If we get here then B must have at least one element.\n for (i = 0; i < B.length; ++i) {\n if (enclosesNot(p, B[i])\n && enclosesWeakAll(encloseBasis2(B[i], p), B)) {\n return [B[i], p];\n }\n }\n\n // If we get here then B must have at least two elements.\n for (i = 0; i < B.length - 1; ++i) {\n for (j = i + 1; j < B.length; ++j) {\n if (enclosesNot(encloseBasis2(B[i], B[j]), p)\n && enclosesNot(encloseBasis2(B[i], p), B[j])\n && enclosesNot(encloseBasis2(B[j], p), B[i])\n && enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) {\n return [B[i], B[j], p];\n }\n }\n }\n\n // If we get here then something is very wrong.\n throw new Error;\n}\n\nfunction enclosesNot(a, b) {\n var dr = a.r - b.r, dx = b.x - a.x, dy = b.y - a.y;\n return dr < 0 || dr * dr < dx * dx + dy * dy;\n}\n\nfunction enclosesWeak(a, b) {\n var dr = a.r - b.r + 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction enclosesWeakAll(a, B) {\n for (var i = 0; i < B.length; ++i) {\n if (!enclosesWeak(a, B[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction encloseBasis(B) {\n switch (B.length) {\n case 1: return encloseBasis1(B[0]);\n case 2: return encloseBasis2(B[0], B[1]);\n case 3: return encloseBasis3(B[0], B[1], B[2]);\n }\n}\n\nfunction encloseBasis1(a) {\n return {\n x: a.x,\n y: a.y,\n r: a.r\n };\n}\n\nfunction encloseBasis2(a, b) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x21 = x2 - x1, y21 = y2 - y1, r21 = r2 - r1,\n l = Math.sqrt(x21 * x21 + y21 * y21);\n return {\n x: (x1 + x2 + x21 / l * r21) / 2,\n y: (y1 + y2 + y21 / l * r21) / 2,\n r: (l + r1 + r2) / 2\n };\n}\n\nfunction encloseBasis3(a, b, c) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x3 = c.x, y3 = c.y, r3 = c.r,\n a2 = x1 - x2,\n a3 = x1 - x3,\n b2 = y1 - y2,\n b3 = y1 - y3,\n c2 = r2 - r1,\n c3 = r3 - r1,\n d1 = x1 * x1 + y1 * y1 - r1 * r1,\n d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2,\n d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3,\n ab = a3 * b2 - a2 * b3,\n xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1,\n xb = (b3 * c2 - b2 * c3) / ab,\n ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1,\n yb = (a2 * c3 - a3 * c2) / ab,\n A = xb * xb + yb * yb - 1,\n B = 2 * (r1 + xa * xb + ya * yb),\n C = xa * xa + ya * ya - r1 * r1,\n r = -(A ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B);\n return {\n x: x1 + xa + xb * r,\n y: y1 + ya + yb * r,\n r: r\n };\n}\n","import enclose from \"./enclose.js\";\n\nfunction place(b, a, c) {\n var dx = b.x - a.x, x, a2,\n dy = b.y - a.y, y, b2,\n d2 = dx * dx + dy * dy;\n if (d2) {\n a2 = a.r + c.r, a2 *= a2;\n b2 = b.r + c.r, b2 *= b2;\n if (a2 > b2) {\n x = (d2 + b2 - a2) / (2 * d2);\n y = Math.sqrt(Math.max(0, b2 / d2 - x * x));\n c.x = b.x - x * dx - y * dy;\n c.y = b.y - x * dy + y * dx;\n } else {\n x = (d2 + a2 - b2) / (2 * d2);\n y = Math.sqrt(Math.max(0, a2 / d2 - x * x));\n c.x = a.x + x * dx - y * dy;\n c.y = a.y + x * dy + y * dx;\n }\n } else {\n c.x = a.x + c.r;\n c.y = a.y;\n }\n}\n\nfunction intersects(a, b) {\n var dr = a.r + b.r - 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction score(node) {\n var a = node._,\n b = node.next._,\n ab = a.r + b.r,\n dx = (a.x * b.r + b.x * a.r) / ab,\n dy = (a.y * b.r + b.y * a.r) / ab;\n return dx * dx + dy * dy;\n}\n\nfunction Node(circle) {\n this._ = circle;\n this.next = null;\n this.previous = null;\n}\n\nexport function packEnclose(circles) {\n if (!(n = circles.length)) return 0;\n\n var a, b, c, n, aa, ca, i, j, k, sj, sk;\n\n // Place the first circle.\n a = circles[0], a.x = 0, a.y = 0;\n if (!(n > 1)) return a.r;\n\n // Place the second circle.\n b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0;\n if (!(n > 2)) return a.r + b.r;\n\n // Place the third circle.\n place(b, a, c = circles[2]);\n\n // Initialize the front-chain using the first three circles a, b and c.\n a = new Node(a), b = new Node(b), c = new Node(c);\n a.next = c.previous = b;\n b.next = a.previous = c;\n c.next = b.previous = a;\n\n // Attempt to place each remaining circle…\n pack: for (i = 3; i < n; ++i) {\n place(a._, b._, c = circles[i]), c = new Node(c);\n\n // Find the closest intersecting circle on the front-chain, if any.\n // “Closeness” is determined by linear distance along the front-chain.\n // “Ahead” or “behind” is likewise determined by linear distance.\n j = b.next, k = a.previous, sj = b._.r, sk = a._.r;\n do {\n if (sj <= sk) {\n if (intersects(j._, c._)) {\n b = j, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sj += j._.r, j = j.next;\n } else {\n if (intersects(k._, c._)) {\n a = k, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sk += k._.r, k = k.previous;\n }\n } while (j !== k.next);\n\n // Success! Insert the new circle c between a and b.\n c.previous = a, c.next = b, a.next = b.previous = b = c;\n\n // Compute the new closest circle pair to the centroid.\n aa = score(a);\n while ((c = c.next) !== b) {\n if ((ca = score(c)) < aa) {\n a = c, aa = ca;\n }\n }\n b = a.next;\n }\n\n // Compute the enclosing circle of the front chain.\n a = [b._], c = b; while ((c = c.next) !== b) a.push(c._); c = enclose(a);\n\n // Translate the circles to put the enclosing circle around the origin.\n for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y;\n\n return c.r;\n}\n\nexport default function(circles) {\n packEnclose(circles);\n return circles;\n}\n","export function optional(f) {\n return f == null ? null : required(f);\n}\n\nexport function required(f) {\n if (typeof f !== \"function\") throw new Error;\n return f;\n}\n","export function constantZero() {\n return 0;\n}\n\nexport default function(x) {\n return function() {\n return x;\n };\n}\n","import {packEnclose} from \"./siblings.js\";\nimport {optional} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\n\nfunction defaultRadius(d) {\n return Math.sqrt(d.value);\n}\n\nexport default function() {\n var radius = null,\n dx = 1,\n dy = 1,\n padding = constantZero;\n\n function pack(root) {\n root.x = dx / 2, root.y = dy / 2;\n if (radius) {\n root.eachBefore(radiusLeaf(radius))\n .eachAfter(packChildren(padding, 0.5))\n .eachBefore(translateChild(1));\n } else {\n root.eachBefore(radiusLeaf(defaultRadius))\n .eachAfter(packChildren(constantZero, 1))\n .eachAfter(packChildren(padding, root.r / Math.min(dx, dy)))\n .eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r)));\n }\n return root;\n }\n\n pack.radius = function(x) {\n return arguments.length ? (radius = optional(x), pack) : radius;\n };\n\n pack.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy];\n };\n\n pack.padding = function(x) {\n return arguments.length ? (padding = typeof x === \"function\" ? x : constant(+x), pack) : padding;\n };\n\n return pack;\n}\n\nfunction radiusLeaf(radius) {\n return function(node) {\n if (!node.children) {\n node.r = Math.max(0, +radius(node) || 0);\n }\n };\n}\n\nfunction packChildren(padding, k) {\n return function(node) {\n if (children = node.children) {\n var children,\n i,\n n = children.length,\n r = padding(node) * k || 0,\n e;\n\n if (r) for (i = 0; i < n; ++i) children[i].r += r;\n e = packEnclose(children);\n if (r) for (i = 0; i < n; ++i) children[i].r -= r;\n node.r = e + r;\n }\n };\n}\n\nfunction translateChild(k) {\n return function(node) {\n var parent = node.parent;\n node.r *= k;\n if (parent) {\n node.x = parent.x + k * node.x;\n node.y = parent.y + k * node.y;\n }\n };\n}\n","export default function(node) {\n node.x0 = Math.round(node.x0);\n node.y0 = Math.round(node.y0);\n node.x1 = Math.round(node.x1);\n node.y1 = Math.round(node.y1);\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (x1 - x0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.y0 = y0, node.y1 = y1;\n node.x0 = x0, node.x1 = x0 += node.value * k;\n }\n}\n","import roundNode from \"./treemap/round.js\";\nimport treemapDice from \"./treemap/dice.js\";\n\nexport default function() {\n var dx = 1,\n dy = 1,\n padding = 0,\n round = false;\n\n function partition(root) {\n var n = root.height + 1;\n root.x0 =\n root.y0 = padding;\n root.x1 = dx;\n root.y1 = dy / n;\n root.eachBefore(positionNode(dy, n));\n if (round) root.eachBefore(roundNode);\n return root;\n }\n\n function positionNode(dy, n) {\n return function(node) {\n if (node.children) {\n treemapDice(node, node.x0, dy * (node.depth + 1) / n, node.x1, dy * (node.depth + 2) / n);\n }\n var x0 = node.x0,\n y0 = node.y0,\n x1 = node.x1 - padding,\n y1 = node.y1 - padding;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n };\n }\n\n partition.round = function(x) {\n return arguments.length ? (round = !!x, partition) : round;\n };\n\n partition.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], partition) : [dx, dy];\n };\n\n partition.padding = function(x) {\n return arguments.length ? (padding = +x, partition) : padding;\n };\n\n return partition;\n}\n","import {required} from \"./accessors.js\";\nimport {Node, computeHeight} from \"./hierarchy/index.js\";\n\nvar keyPrefix = \"$\", // Protect against keys like “__proto__”.\n preroot = {depth: -1},\n ambiguous = {};\n\nfunction defaultId(d) {\n return d.id;\n}\n\nfunction defaultParentId(d) {\n return d.parentId;\n}\n\nexport default function() {\n var id = defaultId,\n parentId = defaultParentId;\n\n function stratify(data) {\n var d,\n i,\n n = data.length,\n root,\n parent,\n node,\n nodes = new Array(n),\n nodeId,\n nodeKey,\n nodeByKey = {};\n\n for (i = 0; i < n; ++i) {\n d = data[i], node = nodes[i] = new Node(d);\n if ((nodeId = id(d, i, data)) != null && (nodeId += \"\")) {\n nodeKey = keyPrefix + (node.id = nodeId);\n nodeByKey[nodeKey] = nodeKey in nodeByKey ? ambiguous : node;\n }\n }\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], nodeId = parentId(data[i], i, data);\n if (nodeId == null || !(nodeId += \"\")) {\n if (root) throw new Error(\"multiple roots\");\n root = node;\n } else {\n parent = nodeByKey[keyPrefix + nodeId];\n if (!parent) throw new Error(\"missing: \" + nodeId);\n if (parent === ambiguous) throw new Error(\"ambiguous: \" + nodeId);\n if (parent.children) parent.children.push(node);\n else parent.children = [node];\n node.parent = parent;\n }\n }\n\n if (!root) throw new Error(\"no root\");\n root.parent = preroot;\n root.eachBefore(function(node) { node.depth = node.parent.depth + 1; --n; }).eachBefore(computeHeight);\n root.parent = null;\n if (n > 0) throw new Error(\"cycle\");\n\n return root;\n }\n\n stratify.id = function(x) {\n return arguments.length ? (id = required(x), stratify) : id;\n };\n\n stratify.parentId = function(x) {\n return arguments.length ? (parentId = required(x), stratify) : parentId;\n };\n\n return stratify;\n}\n","import {Node} from \"./hierarchy/index.js\";\n\nfunction defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\n// function radialSeparation(a, b) {\n// return (a.parent === b.parent ? 1 : 2) / a.depth;\n// }\n\n// This function is used to traverse the left contour of a subtree (or\n// subforest). It returns the successor of v on this contour. This successor is\n// either given by the leftmost child of v or by the thread of v. The function\n// returns null if and only if v is on the highest level of its subtree.\nfunction nextLeft(v) {\n var children = v.children;\n return children ? children[0] : v.t;\n}\n\n// This function works analogously to nextLeft.\nfunction nextRight(v) {\n var children = v.children;\n return children ? children[children.length - 1] : v.t;\n}\n\n// Shifts the current subtree rooted at w+. This is done by increasing\n// prelim(w+) and mod(w+) by shift.\nfunction moveSubtree(wm, wp, shift) {\n var change = shift / (wp.i - wm.i);\n wp.c -= change;\n wp.s += shift;\n wm.c += change;\n wp.z += shift;\n wp.m += shift;\n}\n\n// All other shifts, applied to the smaller subtrees between w- and w+, are\n// performed by this function. To prepare the shifts, we have to adjust\n// change(w+), shift(w+), and change(w-).\nfunction executeShifts(v) {\n var shift = 0,\n change = 0,\n children = v.children,\n i = children.length,\n w;\n while (--i >= 0) {\n w = children[i];\n w.z += shift;\n w.m += shift;\n shift += w.s + (change += w.c);\n }\n}\n\n// If vi-’s ancestor is a sibling of v, returns vi-’s ancestor. Otherwise,\n// returns the specified (default) ancestor.\nfunction nextAncestor(vim, v, ancestor) {\n return vim.a.parent === v.parent ? vim.a : ancestor;\n}\n\nfunction TreeNode(node, i) {\n this._ = node;\n this.parent = null;\n this.children = null;\n this.A = null; // default ancestor\n this.a = this; // ancestor\n this.z = 0; // prelim\n this.m = 0; // mod\n this.c = 0; // change\n this.s = 0; // shift\n this.t = null; // thread\n this.i = i; // number\n}\n\nTreeNode.prototype = Object.create(Node.prototype);\n\nfunction treeRoot(root) {\n var tree = new TreeNode(root, 0),\n node,\n nodes = [tree],\n child,\n children,\n i,\n n;\n\n while (node = nodes.pop()) {\n if (children = node._.children) {\n node.children = new Array(n = children.length);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new TreeNode(children[i], i));\n child.parent = node;\n }\n }\n }\n\n (tree.parent = new TreeNode(null, 0)).children = [tree];\n return tree;\n}\n\n// Node-link tree diagram using the Reingold-Tilford \"tidy\" algorithm\nexport default function() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = null;\n\n function tree(root) {\n var t = treeRoot(root);\n\n // Compute the layout using Buchheim et al.’s algorithm.\n t.eachAfter(firstWalk), t.parent.m = -t.z;\n t.eachBefore(secondWalk);\n\n // If a fixed node size is specified, scale x and y.\n if (nodeSize) root.eachBefore(sizeNode);\n\n // If a fixed tree size is specified, scale x and y based on the extent.\n // Compute the left-most, right-most, and depth-most nodes for extents.\n else {\n var left = root,\n right = root,\n bottom = root;\n root.eachBefore(function(node) {\n if (node.x < left.x) left = node;\n if (node.x > right.x) right = node;\n if (node.depth > bottom.depth) bottom = node;\n });\n var s = left === right ? 1 : separation(left, right) / 2,\n tx = s - left.x,\n kx = dx / (right.x + s + tx),\n ky = dy / (bottom.depth || 1);\n root.eachBefore(function(node) {\n node.x = (node.x + tx) * kx;\n node.y = node.depth * ky;\n });\n }\n\n return root;\n }\n\n // Computes a preliminary x-coordinate for v. Before that, FIRST WALK is\n // applied recursively to the children of v, as well as the function\n // APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the\n // node v is placed to the midpoint of its outermost children.\n function firstWalk(v) {\n var children = v.children,\n siblings = v.parent.children,\n w = v.i ? siblings[v.i - 1] : null;\n if (children) {\n executeShifts(v);\n var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n if (w) {\n v.z = w.z + separation(v._, w._);\n v.m = v.z - midpoint;\n } else {\n v.z = midpoint;\n }\n } else if (w) {\n v.z = w.z + separation(v._, w._);\n }\n v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n }\n\n // Computes all real x-coordinates by summing up the modifiers recursively.\n function secondWalk(v) {\n v._.x = v.z + v.parent.m;\n v.m += v.parent.m;\n }\n\n // The core of the algorithm. Here, a new subtree is combined with the\n // previous subtrees. Threads are used to traverse the inside and outside\n // contours of the left and right subtree up to the highest common level. The\n // vertices used for the traversals are vi+, vi-, vo-, and vo+, where the\n // superscript o means outside and i means inside, the subscript - means left\n // subtree and + means right subtree. For summing up the modifiers along the\n // contour, we use respective variables si+, si-, so-, and so+. Whenever two\n // nodes of the inside contours conflict, we compute the left one of the\n // greatest uncommon ancestors using the function ANCESTOR and call MOVE\n // SUBTREE to shift the subtree and prepare the shifts of smaller subtrees.\n // Finally, we add a new thread (if necessary).\n function apportion(v, w, ancestor) {\n if (w) {\n var vip = v,\n vop = v,\n vim = w,\n vom = vip.parent.children[0],\n sip = vip.m,\n sop = vop.m,\n sim = vim.m,\n som = vom.m,\n shift;\n while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) {\n vom = nextLeft(vom);\n vop = nextRight(vop);\n vop.a = v;\n shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n if (shift > 0) {\n moveSubtree(nextAncestor(vim, v, ancestor), v, shift);\n sip += shift;\n sop += shift;\n }\n sim += vim.m;\n sip += vip.m;\n som += vom.m;\n sop += vop.m;\n }\n if (vim && !nextRight(vop)) {\n vop.t = vim;\n vop.m += sim - sop;\n }\n if (vip && !nextLeft(vom)) {\n vom.t = vip;\n vom.m += sip - som;\n ancestor = v;\n }\n }\n return ancestor;\n }\n\n function sizeNode(node) {\n node.x *= dx;\n node.y = node.depth * dy;\n }\n\n tree.separation = function(x) {\n return arguments.length ? (separation = x, tree) : separation;\n };\n\n tree.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : (nodeSize ? null : [dx, dy]);\n };\n\n tree.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : (nodeSize ? [dx, dy] : null);\n };\n\n return tree;\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (y1 - y0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.x0 = x0, node.x1 = x1;\n node.y0 = y0, node.y1 = y0 += node.value * k;\n }\n}\n","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\n\nexport var phi = (1 + Math.sqrt(5)) / 2;\n\nexport function squarifyRatio(ratio, parent, x0, y0, x1, y1) {\n var rows = [],\n nodes = parent.children,\n row,\n nodeValue,\n i0 = 0,\n i1 = 0,\n n = nodes.length,\n dx, dy,\n value = parent.value,\n sumValue,\n minValue,\n maxValue,\n newRatio,\n minRatio,\n alpha,\n beta;\n\n while (i0 < n) {\n dx = x1 - x0, dy = y1 - y0;\n\n // Find the next non-empty node.\n do sumValue = nodes[i1++].value; while (!sumValue && i1 < n);\n minValue = maxValue = sumValue;\n alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\n beta = sumValue * sumValue * alpha;\n minRatio = Math.max(maxValue / beta, beta / minValue);\n\n // Keep adding nodes while the aspect ratio maintains or improves.\n for (; i1 < n; ++i1) {\n sumValue += nodeValue = nodes[i1].value;\n if (nodeValue < minValue) minValue = nodeValue;\n if (nodeValue > maxValue) maxValue = nodeValue;\n beta = sumValue * sumValue * alpha;\n newRatio = Math.max(maxValue / beta, beta / minValue);\n if (newRatio > minRatio) { sumValue -= nodeValue; break; }\n minRatio = newRatio;\n }\n\n // Position and record the row orientation.\n rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)});\n if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);\n else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);\n value -= sumValue, i0 = i1;\n }\n\n return rows;\n}\n\nexport default (function custom(ratio) {\n\n function squarify(parent, x0, y0, x1, y1) {\n squarifyRatio(ratio, parent, x0, y0, x1, y1);\n }\n\n squarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return squarify;\n})(phi);\n","import roundNode from \"./round.js\";\nimport squarify from \"./squarify.js\";\nimport {required} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\n\nexport default function() {\n var tile = squarify,\n round = false,\n dx = 1,\n dy = 1,\n paddingStack = [0],\n paddingInner = constantZero,\n paddingTop = constantZero,\n paddingRight = constantZero,\n paddingBottom = constantZero,\n paddingLeft = constantZero;\n\n function treemap(root) {\n root.x0 =\n root.y0 = 0;\n root.x1 = dx;\n root.y1 = dy;\n root.eachBefore(positionNode);\n paddingStack = [0];\n if (round) root.eachBefore(roundNode);\n return root;\n }\n\n function positionNode(node) {\n var p = paddingStack[node.depth],\n x0 = node.x0 + p,\n y0 = node.y0 + p,\n x1 = node.x1 - p,\n y1 = node.y1 - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n if (node.children) {\n p = paddingStack[node.depth + 1] = paddingInner(node) / 2;\n x0 += paddingLeft(node) - p;\n y0 += paddingTop(node) - p;\n x1 -= paddingRight(node) - p;\n y1 -= paddingBottom(node) - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n tile(node, x0, y0, x1, y1);\n }\n }\n\n treemap.round = function(x) {\n return arguments.length ? (round = !!x, treemap) : round;\n };\n\n treemap.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy];\n };\n\n treemap.tile = function(x) {\n return arguments.length ? (tile = required(x), treemap) : tile;\n };\n\n treemap.padding = function(x) {\n return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner();\n };\n\n treemap.paddingInner = function(x) {\n return arguments.length ? (paddingInner = typeof x === \"function\" ? x : constant(+x), treemap) : paddingInner;\n };\n\n treemap.paddingOuter = function(x) {\n return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop();\n };\n\n treemap.paddingTop = function(x) {\n return arguments.length ? (paddingTop = typeof x === \"function\" ? x : constant(+x), treemap) : paddingTop;\n };\n\n treemap.paddingRight = function(x) {\n return arguments.length ? (paddingRight = typeof x === \"function\" ? x : constant(+x), treemap) : paddingRight;\n };\n\n treemap.paddingBottom = function(x) {\n return arguments.length ? (paddingBottom = typeof x === \"function\" ? x : constant(+x), treemap) : paddingBottom;\n };\n\n treemap.paddingLeft = function(x) {\n return arguments.length ? (paddingLeft = typeof x === \"function\" ? x : constant(+x), treemap) : paddingLeft;\n };\n\n return treemap;\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n i, n = nodes.length,\n sum, sums = new Array(n + 1);\n\n for (sums[0] = sum = i = 0; i < n; ++i) {\n sums[i + 1] = sum += nodes[i].value;\n }\n\n partition(0, n, parent.value, x0, y0, x1, y1);\n\n function partition(i, j, value, x0, y0, x1, y1) {\n if (i >= j - 1) {\n var node = nodes[i];\n node.x0 = x0, node.y0 = y0;\n node.x1 = x1, node.y1 = y1;\n return;\n }\n\n var valueOffset = sums[i],\n valueTarget = (value / 2) + valueOffset,\n k = i + 1,\n hi = j - 1;\n\n while (k < hi) {\n var mid = k + hi >>> 1;\n if (sums[mid] < valueTarget) k = mid + 1;\n else hi = mid;\n }\n\n if ((valueTarget - sums[k - 1]) < (sums[k] - valueTarget) && i + 1 < k) --k;\n\n var valueLeft = sums[k] - valueOffset,\n valueRight = value - valueLeft;\n\n if ((x1 - x0) > (y1 - y0)) {\n var xk = (x0 * valueRight + x1 * valueLeft) / value;\n partition(i, k, valueLeft, x0, y0, xk, y1);\n partition(k, j, valueRight, xk, y0, x1, y1);\n } else {\n var yk = (y0 * valueRight + y1 * valueLeft) / value;\n partition(i, k, valueLeft, x0, y0, x1, yk);\n partition(k, j, valueRight, x0, yk, x1, y1);\n }\n }\n}\n","import dice from \"./dice.js\";\nimport slice from \"./slice.js\";\n\nexport default function(parent, x0, y0, x1, y1) {\n (parent.depth & 1 ? slice : dice)(parent, x0, y0, x1, y1);\n}\n","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\nimport {phi, squarifyRatio} from \"./squarify.js\";\n\nexport default (function custom(ratio) {\n\n function resquarify(parent, x0, y0, x1, y1) {\n if ((rows = parent._squarify) && (rows.ratio === ratio)) {\n var rows,\n row,\n nodes,\n i,\n j = -1,\n n,\n m = rows.length,\n value = parent.value;\n\n while (++j < m) {\n row = rows[j], nodes = row.children;\n for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value;\n if (row.dice) treemapDice(row, x0, y0, x1, y0 += (y1 - y0) * row.value / value);\n else treemapSlice(row, x0, y0, x0 += (x1 - x0) * row.value / value, y1);\n value -= row.value;\n }\n } else {\n parent._squarify = rows = squarifyRatio(ratio, parent, x0, y0, x1, y1);\n rows.ratio = ratio;\n }\n }\n\n resquarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return resquarify;\n})(phi);\n","export default function(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}\n","import {hue} from \"./color.js\";\n\nexport default function(a, b) {\n var i = hue(+a, +b);\n return function(t) {\n var x = i(t);\n return x - 360 * Math.floor(x / 360);\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","var rho = Math.SQRT2,\n rho2 = 2,\n rho4 = 4,\n epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\n// p0 = [ux0, uy0, w0]\n// p1 = [ux1, uy1, w1]\nexport default function(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000;\n\n return i;\n}\n","import {hsl as colorHsl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hsl(hue) {\n return function(start, end) {\n var h = hue((start = colorHsl(start)).h, (end = colorHsl(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hsl(hue);\nexport var hslLong = hsl(color);\n","import {lab as colorLab} from \"d3-color\";\nimport color from \"./color.js\";\n\nexport default function lab(start, end) {\n var l = color((start = colorLab(start)).l, (end = colorLab(end)).l),\n a = color(start.a, end.a),\n b = color(start.b, end.b),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.l = l(t);\n start.a = a(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n}\n","import {hcl as colorHcl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hcl(hue) {\n return function(start, end) {\n var h = hue((start = colorHcl(start)).h, (end = colorHcl(end)).h),\n c = color(start.c, end.c),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.c = c(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hcl(hue);\nexport var hclLong = hcl(color);\n","import {cubehelix as colorCubehelix} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction cubehelix(hue) {\n return (function cubehelixGamma(y) {\n y = +y;\n\n function cubehelix(start, end) {\n var h = hue((start = colorCubehelix(start)).h, (end = colorCubehelix(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(Math.pow(t, y));\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n cubehelix.gamma = cubehelixGamma;\n\n return cubehelix;\n })(1);\n}\n\nexport default cubehelix(hue);\nexport var cubehelixLong = cubehelix(color);\n","export default function piecewise(interpolate, values) {\n var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n);\n while (i < n) I[i] = interpolate(v, v = values[++i]);\n return function(t) {\n var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));\n return I[i](t - i);\n };\n}\n","export default function(interpolator, n) {\n var samples = new Array(n);\n for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));\n return samples;\n}\n","export default function(polygon) {\n var i = -1,\n n = polygon.length,\n a,\n b = polygon[n - 1],\n area = 0;\n\n while (++i < n) {\n a = b;\n b = polygon[i];\n area += a[1] * b[0] - a[0] * b[1];\n }\n\n return area / 2;\n}\n","export default function(polygon) {\n var i = -1,\n n = polygon.length,\n x = 0,\n y = 0,\n a,\n b = polygon[n - 1],\n c,\n k = 0;\n\n while (++i < n) {\n a = b;\n b = polygon[i];\n k += c = a[0] * b[1] - b[0] * a[1];\n x += (a[0] + b[0]) * c;\n y += (a[1] + b[1]) * c;\n }\n\n return k *= 3, [x / k, y / k];\n}\n","// Returns the 2D cross product of AB and AC vectors, i.e., the z-component of\n// the 3D cross product in a quadrant I Cartesian coordinate system (+x is\n// right, +y is up). Returns a positive value if ABC is counter-clockwise,\n// negative if clockwise, and zero if the points are collinear.\nexport default function(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);\n}\n","import cross from \"./cross.js\";\n\nfunction lexicographicOrder(a, b) {\n return a[0] - b[0] || a[1] - b[1];\n}\n\n// Computes the upper convex hull per the monotone chain algorithm.\n// Assumes points.length >= 3, is sorted by x, unique in y.\n// Returns an array of indices into points in left-to-right order.\nfunction computeUpperHullIndexes(points) {\n var n = points.length,\n indexes = [0, 1],\n size = 2;\n\n for (var i = 2; i < n; ++i) {\n while (size > 1 && cross(points[indexes[size - 2]], points[indexes[size - 1]], points[i]) <= 0) --size;\n indexes[size++] = i;\n }\n\n return indexes.slice(0, size); // remove popped points\n}\n\nexport default function(points) {\n if ((n = points.length) < 3) return null;\n\n var i,\n n,\n sortedPoints = new Array(n),\n flippedPoints = new Array(n);\n\n for (i = 0; i < n; ++i) sortedPoints[i] = [+points[i][0], +points[i][1], i];\n sortedPoints.sort(lexicographicOrder);\n for (i = 0; i < n; ++i) flippedPoints[i] = [sortedPoints[i][0], -sortedPoints[i][1]];\n\n var upperIndexes = computeUpperHullIndexes(sortedPoints),\n lowerIndexes = computeUpperHullIndexes(flippedPoints);\n\n // Construct the hull polygon, removing possible duplicate endpoints.\n var skipLeft = lowerIndexes[0] === upperIndexes[0],\n skipRight = lowerIndexes[lowerIndexes.length - 1] === upperIndexes[upperIndexes.length - 1],\n hull = [];\n\n // Add upper hull in right-to-l order.\n // Then add lower hull in left-to-right order.\n for (i = upperIndexes.length - 1; i >= 0; --i) hull.push(points[sortedPoints[upperIndexes[i]][2]]);\n for (i = +skipLeft; i < lowerIndexes.length - skipRight; ++i) hull.push(points[sortedPoints[lowerIndexes[i]][2]]);\n\n return hull;\n}\n","export default function(polygon, point) {\n var n = polygon.length,\n p = polygon[n - 1],\n x = point[0], y = point[1],\n x0 = p[0], y0 = p[1],\n x1, y1,\n inside = false;\n\n for (var i = 0; i < n; ++i) {\n p = polygon[i], x1 = p[0], y1 = p[1];\n if (((y1 > y) !== (y0 > y)) && (x < (x0 - x1) * (y - y1) / (y0 - y1) + x1)) inside = !inside;\n x0 = x1, y0 = y1;\n }\n\n return inside;\n}\n","export default function(polygon) {\n var i = -1,\n n = polygon.length,\n b = polygon[n - 1],\n xa,\n ya,\n xb = b[0],\n yb = b[1],\n perimeter = 0;\n\n while (++i < n) {\n xa = xb;\n ya = yb;\n b = polygon[i];\n xb = b[0];\n yb = b[1];\n xa -= xb;\n ya -= yb;\n perimeter += Math.sqrt(xa * xa + ya * ya);\n }\n\n return perimeter;\n}\n","export default function() {\n return Math.random();\n}\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomUniform(source) {\n function randomUniform(min, max) {\n min = min == null ? 0 : +min;\n max = max == null ? 1 : +max;\n if (arguments.length === 1) max = min, min = 0;\n else max -= min;\n return function() {\n return source() * max + min;\n };\n }\n\n randomUniform.source = sourceRandomUniform;\n\n return randomUniform;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomNormal(source) {\n function randomNormal(mu, sigma) {\n var x, r;\n mu = mu == null ? 0 : +mu;\n sigma = sigma == null ? 1 : +sigma;\n return function() {\n var y;\n\n // If available, use the second previously-generated uniform random.\n if (x != null) y = x, x = null;\n\n // Otherwise, generate a new x and y.\n else do {\n x = source() * 2 - 1;\n y = source() * 2 - 1;\n r = x * x + y * y;\n } while (!r || r > 1);\n\n return mu + sigma * y * Math.sqrt(-2 * Math.log(r) / r);\n };\n }\n\n randomNormal.source = sourceRandomNormal;\n\n return randomNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\nimport normal from \"./normal\";\n\nexport default (function sourceRandomLogNormal(source) {\n function randomLogNormal() {\n var randomNormal = normal.source(source).apply(this, arguments);\n return function() {\n return Math.exp(randomNormal());\n };\n }\n\n randomLogNormal.source = sourceRandomLogNormal;\n\n return randomLogNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomIrwinHall(source) {\n function randomIrwinHall(n) {\n return function() {\n for (var sum = 0, i = 0; i < n; ++i) sum += source();\n return sum;\n };\n }\n\n randomIrwinHall.source = sourceRandomIrwinHall;\n\n return randomIrwinHall;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\nimport irwinHall from \"./irwinHall\";\n\nexport default (function sourceRandomBates(source) {\n function randomBates(n) {\n var randomIrwinHall = irwinHall.source(source)(n);\n return function() {\n return randomIrwinHall() / n;\n };\n }\n\n randomBates.source = sourceRandomBates;\n\n return randomBates;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomExponential(source) {\n function randomExponential(lambda) {\n return function() {\n return -Math.log(1 - source()) / lambda;\n };\n }\n\n randomExponential.source = sourceRandomExponential;\n\n return randomExponential;\n})(defaultSource);\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.interpolator(domain); break;\n default: this.interpolator(interpolator).domain(domain); break;\n }\n return this;\n}\n","var array = Array.prototype;\n\nexport var map = array.map;\nexport var slice = array.slice;\n","import {map} from \"d3-collection\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\n\nexport var implicit = {name: \"implicit\"};\n\nexport default function ordinal() {\n var index = map(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n var key = d + \"\", i = index.get(key);\n if (!i) {\n if (unknown !== implicit) return unknown;\n index.set(key, i = domain.push(d));\n }\n return range[(i - 1) % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = map();\n var i = -1, n = _.length, d, key;\n while (++i < n) if (!index.has(key = (d = _[i]) + \"\")) index.set(key, domain.push(d));\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {range as sequence} from \"d3-array\";\nimport {initRange} from \"./init\";\nimport ordinal from \"./ordinal\";\n\nexport default function band() {\n var scale = ordinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n range = [0, 1],\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = range[1] < range[0],\n start = range[reverse - 0],\n stop = range[1 - reverse];\n step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n if (round) step = Math.floor(step);\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n var values = sequence(n).map(function(i) { return start + step * i; });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = [+_[0], +_[1]], rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = [+_[0], +_[1]], round = true, rescale();\n };\n\n scale.bandwidth = function() {\n return bandwidth;\n };\n\n scale.step = function() {\n return step;\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, rescale()) : round;\n };\n\n scale.padding = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n };\n\n scale.paddingInner = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n };\n\n scale.paddingOuter = function(_) {\n return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n };\n\n scale.align = function(_) {\n return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n };\n\n scale.copy = function() {\n return band(domain(), range)\n .round(round)\n .paddingInner(paddingInner)\n .paddingOuter(paddingOuter)\n .align(align);\n };\n\n return initRange.apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n\n scale.copy = function() {\n return pointish(copy());\n };\n\n return scale;\n}\n\nexport function point() {\n return pointish(band.apply(null, arguments).paddingInner(1));\n}\n","export default function(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport {map, slice} from \"./array\";\nimport constant from \"./constant\";\nimport number from \"./number\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(domain) {\n var a = domain[0], b = domain[domain.length - 1], t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n piecewise = Math.min(domain.length, range.length) > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = map.call(_, number), clamp === identity || (clamp = clamper(domain)), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = slice.call(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? clamper(domain) : identity, scale) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous(transform, untransform) {\n return transformer()(transform, untransform);\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport tickFormat from \"./tickFormat\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain(),\n i0 = 0,\n i1 = d.length - 1,\n start = d[i0],\n stop = d[i1],\n step;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n\n step = tickIncrement(start, stop, count);\n\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = tickIncrement(start, stop, count);\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = tickIncrement(start, stop, count);\n }\n\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n domain(d);\n } else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n domain(d);\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous(identity, identity);\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","import {map} from \"./array\";\nimport {linearish} from \"./linear\";\nimport number from \"./number\";\n\nexport default function identity(domain) {\n var unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : x;\n }\n\n scale.invert = scale;\n\n scale.domain = scale.range = function(_) {\n return arguments.length ? (domain = map.call(_, number), scale) : domain.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return identity(domain).unknown(unknown);\n };\n\n domain = arguments.length ? map.call(domain, number) : [0, 1];\n\n return linearish(scale);\n}\n","export default function(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n","import {ticks} from \"d3-array\";\nimport {format} from \"d3-format\";\nimport nice from \"./nice\";\nimport {copy, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformLog(x) {\n return Math.log(x);\n}\n\nfunction transformExp(x) {\n return Math.exp(x);\n}\n\nfunction transformLogn(x) {\n return -Math.log(-x);\n}\n\nfunction transformExpn(x) {\n return -Math.exp(-x);\n}\n\nfunction pow10(x) {\n return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n return base === 10 ? pow10\n : base === Math.E ? Math.exp\n : function(x) { return Math.pow(base, x); };\n}\n\nfunction logp(base) {\n return base === Math.E ? Math.log\n : base === 10 && Math.log10\n || base === 2 && Math.log2\n || (base = Math.log(base), function(x) { return Math.log(x) / base; });\n}\n\nfunction reflect(f) {\n return function(x) {\n return -f(-x);\n };\n}\n\nexport function loggish(transform) {\n var scale = transform(transformLog, transformExp),\n domain = scale.domain,\n base = 10,\n logs,\n pows;\n\n function rescale() {\n logs = logp(base), pows = powp(base);\n if (domain()[0] < 0) {\n logs = reflect(logs), pows = reflect(pows);\n transform(transformLogn, transformExpn);\n } else {\n transform(transformLog, transformExp);\n }\n return scale;\n }\n\n scale.base = function(_) {\n return arguments.length ? (base = +_, rescale()) : base;\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.ticks = function(count) {\n var d = domain(),\n u = d[0],\n v = d[d.length - 1],\n r;\n\n if (r = v < u) i = u, u = v, v = i;\n\n var i = logs(u),\n j = logs(v),\n p,\n k,\n t,\n n = count == null ? 10 : +count,\n z = [];\n\n if (!(base % 1) && j - i < n) {\n i = Math.round(i) - 1, j = Math.round(j) + 1;\n if (u > 0) for (; i < j; ++i) {\n for (k = 1, p = pows(i); k < base; ++k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n } else for (; i < j; ++i) {\n for (k = base - 1, p = pows(i); k >= 1; --k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n }\n } else {\n z = ticks(i, j, Math.min(j - i, n)).map(pows);\n }\n\n return r ? z.reverse() : z;\n };\n\n scale.tickFormat = function(count, specifier) {\n if (specifier == null) specifier = base === 10 ? \".0e\" : \",\";\n if (typeof specifier !== \"function\") specifier = format(specifier);\n if (count === Infinity) return specifier;\n if (count == null) count = 10;\n var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n return function(d) {\n var i = d / pows(Math.round(logs(d)));\n if (i * base < base - 0.5) i *= base;\n return i <= k ? specifier(d) : \"\";\n };\n };\n\n scale.nice = function() {\n return domain(nice(domain(), {\n floor: function(x) { return pows(Math.floor(logs(x))); },\n ceil: function(x) { return pows(Math.ceil(logs(x))); }\n }));\n };\n\n return scale;\n}\n\nexport default function log() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, log()).base(scale.base());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {linearish} from \"./linear\";\nimport {copy, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformSymlog(c) {\n return function(x) {\n return Math.sign(x) * Math.log1p(Math.abs(x / c));\n };\n}\n\nfunction transformSymexp(c) {\n return function(x) {\n return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n };\n}\n\nexport function symlogish(transform) {\n var c = 1, scale = transform(transformSymlog(c), transformSymexp(c));\n\n scale.constant = function(_) {\n return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;\n };\n\n return linearish(scale);\n}\n\nexport default function symlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, symlog()).constant(scale.constant());\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {linearish} from \"./linear\";\nimport {copy, identity, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformPow(exponent) {\n return function(x) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n };\n}\n\nfunction transformSqrt(x) {\n return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n return x < 0 ? -x * x : x * x;\n}\n\nexport function powish(transform) {\n var scale = transform(identity, identity),\n exponent = 1;\n\n function rescale() {\n return exponent === 1 ? transform(identity, identity)\n : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n : transform(transformPow(exponent), transformPow(1 / exponent));\n }\n\n scale.exponent = function(_) {\n return arguments.length ? (exponent = +_, rescale()) : exponent;\n };\n\n return linearish(scale);\n}\n\nexport default function pow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, pow()).exponent(scale.exponent());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n\nexport function sqrt() {\n return pow.apply(null, arguments).exponent(0.5);\n}\n","import {ascending, bisect, quantile as threshold} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\n\nexport default function quantile() {\n var domain = [],\n range = [],\n thresholds = [],\n unknown;\n\n function rescale() {\n var i = 0, n = Math.max(1, range.length);\n thresholds = new Array(n - 1);\n while (++i < n) thresholds[i - 1] = threshold(domain, i / n);\n return scale;\n }\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : range[bisect(thresholds, x)];\n }\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN] : [\n i > 0 ? thresholds[i - 1] : domain[0],\n i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n ];\n };\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return rescale();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), rescale()) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.quantiles = function() {\n return thresholds.slice();\n };\n\n scale.copy = function() {\n return quantile()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {linearish} from \"./linear\";\nimport {initRange} from \"./init\";\n\nexport default function quantize() {\n var x0 = 0,\n x1 = 1,\n n = 1,\n domain = [0.5],\n range = [0, 1],\n unknown;\n\n function scale(x) {\n return x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n function rescale() {\n var i = -1;\n domain = new Array(n);\n while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n return scale;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (x0 = +_[0], x1 = +_[1], rescale()) : [x0, x1];\n };\n\n scale.range = function(_) {\n return arguments.length ? (n = (range = slice.call(_)).length - 1, rescale()) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN]\n : i < 1 ? [x0, domain[0]]\n : i >= n ? [domain[n - 1], x1]\n : [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : scale;\n };\n\n scale.thresholds = function() {\n return domain.slice();\n };\n\n scale.copy = function() {\n return quantize()\n .domain([x0, x1])\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(linearish(scale), arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\n\nexport default function threshold() {\n var domain = [0.5],\n range = [0, 1],\n unknown,\n n = 1;\n\n function scale(x) {\n return x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain = slice.call(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return threshold()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = function(date) {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval.js\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nvar hour = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nvar minute = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nvar second = interval(function(date) {\n date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval.js\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","import interval from \"./interval.js\";\nimport {durationWeek} from \"./duration.js\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval.js\";\nimport {durationDay} from \"./duration.js\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval.js\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {bisector, tickStep} from \"d3-array\";\nimport {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport {map} from \"./array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport nice from \"./nice\";\n\nvar durationSecond = 1000,\n durationMinute = durationSecond * 60,\n durationHour = durationMinute * 60,\n durationDay = durationHour * 24,\n durationWeek = durationDay * 7,\n durationMonth = durationDay * 30,\n durationYear = durationDay * 365;\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(year, month, week, day, hour, minute, second, millisecond, format) {\n var scale = continuous(identity, identity),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n var tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n function tickInterval(interval, start, stop, step) {\n if (interval == null) interval = 10;\n\n // If a desired tick count is specified, pick a reasonable tick interval\n // based on the extent of the domain and a rough estimate of tick size.\n // Otherwise, assume interval is already a time interval and use it.\n if (typeof interval === \"number\") {\n var target = Math.abs(stop - start) / interval,\n i = bisector(function(i) { return i[2]; }).right(tickIntervals, target);\n if (i === tickIntervals.length) {\n step = tickStep(start / durationYear, stop / durationYear, interval);\n interval = year;\n } else if (i) {\n i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n step = i[1];\n interval = i[0];\n } else {\n step = Math.max(tickStep(start, stop, interval), 1);\n interval = millisecond;\n }\n }\n\n return step == null ? interval : interval.every(step);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(map.call(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval, step) {\n var d = domain(),\n t0 = d[0],\n t1 = d[d.length - 1],\n r = t1 < t0,\n t;\n if (r) t = t0, t0 = t1, t1 = t;\n t = tickInterval(interval, t0, t1, step);\n t = t ? t.range(t0, t1 + 1) : []; // inclusive stop\n return r ? t.reverse() : t;\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval, step) {\n var d = domain();\n return (interval = tickInterval(interval, d[0], d[d.length - 1], step))\n ? domain(nice(d, interval))\n : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format));\n };\n\n return scale;\n}\n\nexport default function() {\n return initRange.apply(calendar(timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","import interval from \"./interval.js\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval.js\";\nimport {durationHour} from \"./duration.js\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval.js\";\nimport {durationMinute} from \"./duration.js\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import {calendar} from \"./time\";\nimport {utcFormat} from \"d3-time-format\";\nimport {utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond} from \"d3-time\";\nimport {initRange} from \"./init\";\n\nexport default function() {\n return initRange.apply(calendar(utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}\n","import {identity} from \"./continuous\";\nimport {initInterpolator} from \"./init\";\nimport {linearish} from \"./linear\";\nimport {loggish} from \"./log\";\nimport {symlogish} from \"./symlog\";\nimport {powish} from \"./pow\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 1,\n t0,\n t1,\n k10,\n transform,\n interpolator = identity,\n clamp = false,\n unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? (t0 = transform(x0 = +_[0]), t1 = transform(x1 = +_[1]), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n return scale;\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .interpolator(source.interpolator())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport default function sequential() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, sequential());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialLog() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, sequentialLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSqrt() {\n return sequentialPow.apply(null, arguments).exponent(0.5);\n}\n","import {ascending, bisect} from \"d3-array\";\nimport {identity} from \"./continuous\";\nimport {initInterpolator} from \"./init\";\n\nexport default function sequentialQuantile() {\n var domain = [],\n interpolator = identity;\n\n function scale(x) {\n if (!isNaN(x = +x)) return interpolator((bisect(domain, x) - 1) / (domain.length - 1));\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return scale;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.copy = function() {\n return sequentialQuantile(interpolator).domain(domain);\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n","import {identity} from \"./continuous\";\nimport {initInterpolator} from \"./init\";\nimport {linearish} from \"./linear\";\nimport {loggish} from \"./log\";\nimport {copy} from \"./sequential\";\nimport {symlogish} from \"./symlog\";\nimport {powish} from \"./pow\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 0.5,\n x2 = 1,\n t0,\n t1,\n t2,\n k10,\n k21,\n interpolator = identity,\n transform,\n clamp = false,\n unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (x < t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? (t0 = transform(x0 = +_[0]), t1 = transform(x1 = +_[1]), t2 = transform(x2 = +_[2]), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), scale) : [x0, x1, x2];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1);\n return scale;\n };\n}\n\nexport default function diverging() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, diverging());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingLog() {\n var scale = loggish(transformer()).domain([0.1, 1, 10]);\n\n scale.copy = function() {\n return copy(scale, divergingLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSqrt() {\n return divergingPow.apply(null, arguments).exponent(0.5);\n}\n","export default function(specifier) {\n var n = specifier.length / 6 | 0, colors = new Array(n), i = 0;\n while (i < n) colors[i] = \"#\" + specifier.slice(i * 6, ++i * 6);\n return colors;\n}\n","import colors from \"../colors.js\";\n\nexport default colors(\"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab\");\n","import {interpolateRgbBasis} from \"d3-interpolate\";\n\nexport default function(scheme) {\n return interpolateRgbBasis(scheme[scheme.length - 1]);\n}\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"d8b365f5f5f55ab4ac\",\n \"a6611adfc27d80cdc1018571\",\n \"a6611adfc27df5f5f580cdc1018571\",\n \"8c510ad8b365f6e8c3c7eae55ab4ac01665e\",\n \"8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e\",\n \"8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e\",\n \"8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e\",\n \"5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30\",\n \"5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"af8dc3f7f7f77fbf7b\",\n \"7b3294c2a5cfa6dba0008837\",\n \"7b3294c2a5cff7f7f7a6dba0008837\",\n \"762a83af8dc3e7d4e8d9f0d37fbf7b1b7837\",\n \"762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837\",\n \"762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837\",\n \"762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837\",\n \"40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b\",\n \"40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e9a3c9f7f7f7a1d76a\",\n \"d01c8bf1b6dab8e1864dac26\",\n \"d01c8bf1b6daf7f7f7b8e1864dac26\",\n \"c51b7de9a3c9fde0efe6f5d0a1d76a4d9221\",\n \"c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221\",\n \"c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221\",\n \"c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221\",\n \"8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419\",\n \"8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"998ec3f7f7f7f1a340\",\n \"5e3c99b2abd2fdb863e66101\",\n \"5e3c99b2abd2f7f7f7fdb863e66101\",\n \"542788998ec3d8daebfee0b6f1a340b35806\",\n \"542788998ec3d8daebf7f7f7fee0b6f1a340b35806\",\n \"5427888073acb2abd2d8daebfee0b6fdb863e08214b35806\",\n \"5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806\",\n \"2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08\",\n \"2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ef8a62f7f7f767a9cf\",\n \"ca0020f4a58292c5de0571b0\",\n \"ca0020f4a582f7f7f792c5de0571b0\",\n \"b2182bef8a62fddbc7d1e5f067a9cf2166ac\",\n \"b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac\",\n \"b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac\",\n \"b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac\",\n \"67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061\",\n \"67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ef8a62ffffff999999\",\n \"ca0020f4a582bababa404040\",\n \"ca0020f4a582ffffffbababa404040\",\n \"b2182bef8a62fddbc7e0e0e09999994d4d4d\",\n \"b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d\",\n \"b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d\",\n \"b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d\",\n \"67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a\",\n \"67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf91bfdb\",\n \"d7191cfdae61abd9e92c7bb6\",\n \"d7191cfdae61ffffbfabd9e92c7bb6\",\n \"d73027fc8d59fee090e0f3f891bfdb4575b4\",\n \"d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4\",\n \"d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4\",\n \"d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4\",\n \"a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695\",\n \"a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf91cf60\",\n \"d7191cfdae61a6d96a1a9641\",\n \"d7191cfdae61ffffbfa6d96a1a9641\",\n \"d73027fc8d59fee08bd9ef8b91cf601a9850\",\n \"d73027fc8d59fee08bffffbfd9ef8b91cf601a9850\",\n \"d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850\",\n \"d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850\",\n \"a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837\",\n \"a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf99d594\",\n \"d7191cfdae61abdda42b83ba\",\n \"d7191cfdae61ffffbfabdda42b83ba\",\n \"d53e4ffc8d59fee08be6f59899d5943288bd\",\n \"d53e4ffc8d59fee08bffffbfe6f59899d5943288bd\",\n \"d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd\",\n \"d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd\",\n \"9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2\",\n \"9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e5f5f999d8c92ca25f\",\n \"edf8fbb2e2e266c2a4238b45\",\n \"edf8fbb2e2e266c2a42ca25f006d2c\",\n \"edf8fbccece699d8c966c2a42ca25f006d2c\",\n \"edf8fbccece699d8c966c2a441ae76238b45005824\",\n \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824\",\n \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e0ecf49ebcda8856a7\",\n \"edf8fbb3cde38c96c688419d\",\n \"edf8fbb3cde38c96c68856a7810f7c\",\n \"edf8fbbfd3e69ebcda8c96c68856a7810f7c\",\n \"edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b\",\n \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b\",\n \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e0f3dba8ddb543a2ca\",\n \"f0f9e8bae4bc7bccc42b8cbe\",\n \"f0f9e8bae4bc7bccc443a2ca0868ac\",\n \"f0f9e8ccebc5a8ddb57bccc443a2ca0868ac\",\n \"f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee8c8fdbb84e34a33\",\n \"fef0d9fdcc8afc8d59d7301f\",\n \"fef0d9fdcc8afc8d59e34a33b30000\",\n \"fef0d9fdd49efdbb84fc8d59e34a33b30000\",\n \"fef0d9fdd49efdbb84fc8d59ef6548d7301f990000\",\n \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000\",\n \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ece2f0a6bddb1c9099\",\n \"f6eff7bdc9e167a9cf02818a\",\n \"f6eff7bdc9e167a9cf1c9099016c59\",\n \"f6eff7d0d1e6a6bddb67a9cf1c9099016c59\",\n \"f6eff7d0d1e6a6bddb67a9cf3690c002818a016450\",\n \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450\",\n \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ece7f2a6bddb2b8cbe\",\n \"f1eef6bdc9e174a9cf0570b0\",\n \"f1eef6bdc9e174a9cf2b8cbe045a8d\",\n \"f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d\",\n \"f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e7e1efc994c7dd1c77\",\n \"f1eef6d7b5d8df65b0ce1256\",\n \"f1eef6d7b5d8df65b0dd1c77980043\",\n \"f1eef6d4b9dac994c7df65b0dd1c77980043\",\n \"f1eef6d4b9dac994c7df65b0e7298ace125691003f\",\n \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f\",\n \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fde0ddfa9fb5c51b8a\",\n \"feebe2fbb4b9f768a1ae017e\",\n \"feebe2fbb4b9f768a1c51b8a7a0177\",\n \"feebe2fcc5c0fa9fb5f768a1c51b8a7a0177\",\n \"feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"edf8b17fcdbb2c7fb8\",\n \"ffffcca1dab441b6c4225ea8\",\n \"ffffcca1dab441b6c42c7fb8253494\",\n \"ffffccc7e9b47fcdbb41b6c42c7fb8253494\",\n \"ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"f7fcb9addd8e31a354\",\n \"ffffccc2e69978c679238443\",\n \"ffffccc2e69978c67931a354006837\",\n \"ffffccd9f0a3addd8e78c67931a354006837\",\n \"ffffccd9f0a3addd8e78c67941ab5d238443005a32\",\n \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32\",\n \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fff7bcfec44fd95f0e\",\n \"ffffd4fed98efe9929cc4c02\",\n \"ffffd4fed98efe9929d95f0e993404\",\n \"ffffd4fee391fec44ffe9929d95f0e993404\",\n \"ffffd4fee391fec44ffe9929ec7014cc4c028c2d04\",\n \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04\",\n \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ffeda0feb24cf03b20\",\n \"ffffb2fecc5cfd8d3ce31a1c\",\n \"ffffb2fecc5cfd8d3cf03b20bd0026\",\n \"ffffb2fed976feb24cfd8d3cf03b20bd0026\",\n \"ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"deebf79ecae13182bd\",\n \"eff3ffbdd7e76baed62171b5\",\n \"eff3ffbdd7e76baed63182bd08519c\",\n \"eff3ffc6dbef9ecae16baed63182bd08519c\",\n \"eff3ffc6dbef9ecae16baed64292c62171b5084594\",\n \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594\",\n \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e5f5e0a1d99b31a354\",\n \"edf8e9bae4b374c476238b45\",\n \"edf8e9bae4b374c47631a354006d2c\",\n \"edf8e9c7e9c0a1d99b74c47631a354006d2c\",\n \"edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32\",\n \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32\",\n \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"f0f0f0bdbdbd636363\",\n \"f7f7f7cccccc969696525252\",\n \"f7f7f7cccccc969696636363252525\",\n \"f7f7f7d9d9d9bdbdbd969696636363252525\",\n \"f7f7f7d9d9d9bdbdbd969696737373525252252525\",\n \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525\",\n \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"efedf5bcbddc756bb1\",\n \"f2f0f7cbc9e29e9ac86a51a3\",\n \"f2f0f7cbc9e29e9ac8756bb154278f\",\n \"f2f0f7dadaebbcbddc9e9ac8756bb154278f\",\n \"f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee0d2fc9272de2d26\",\n \"fee5d9fcae91fb6a4acb181d\",\n \"fee5d9fcae91fb6a4ade2d26a50f15\",\n \"fee5d9fcbba1fc9272fb6a4ade2d26a50f15\",\n \"fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee6cefdae6be6550d\",\n \"feeddefdbe85fd8d3cd94701\",\n \"feeddefdbe85fd8d3ce6550da63603\",\n \"feeddefdd0a2fdae6bfd8d3ce6550da63603\",\n \"feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704\"\n).map(colors);\n\nexport default ramp(scheme);\n","export default function(t) {\n t = Math.max(0, Math.min(1, t));\n return \"rgb(\"\n + Math.max(0, Math.min(255, Math.round(-4.54 - t * (35.34 - t * (2381.73 - t * (6402.7 - t * (7024.72 - t * 2710.57))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(32.49 + t * (170.73 + t * (52.82 - t * (131.46 - t * (176.58 - t * 67.37))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(81.24 + t * (442.36 - t * (2482.43 - t * (6167.24 - t * (6614.94 - t * 2475.67)))))))\n + \")\";\n}\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport default interpolateCubehelixLong(cubehelix(300, 0.5, 0.0), cubehelix(-240, 0.5, 1.0));\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport var warm = interpolateCubehelixLong(cubehelix(-100, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nexport var cool = interpolateCubehelixLong(cubehelix(260, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nvar c = cubehelix();\n\nexport default function(t) {\n if (t < 0 || t > 1) t -= Math.floor(t);\n var ts = Math.abs(t - 0.5);\n c.h = 360 * t - 100;\n c.s = 1.5 - 1.5 * ts;\n c.l = 0.8 - 0.9 * ts;\n return c + \"\";\n}\n","import {rgb} from \"d3-color\";\n\nvar c = rgb(),\n pi_1_3 = Math.PI / 3,\n pi_2_3 = Math.PI * 2 / 3;\n\nexport default function(t) {\n var x;\n t = (0.5 - t) * Math.PI;\n c.r = 255 * (x = Math.sin(t)) * x;\n c.g = 255 * (x = Math.sin(t + pi_1_3)) * x;\n c.b = 255 * (x = Math.sin(t + pi_2_3)) * x;\n return c + \"\";\n}\n","export default function(t) {\n t = Math.max(0, Math.min(1, t));\n return \"rgb(\"\n + Math.max(0, Math.min(255, Math.round(34.61 + t * (1172.33 - t * (10793.56 - t * (33300.12 - t * (38394.49 - t * 14825.05))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(23.31 + t * (557.33 + t * (1225.33 - t * (3574.96 - t * (1073.77 + t * 707.56))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(27.2 + t * (3211.1 - t * (15327.97 - t * (27814 - t * (22569.18 - t * 6838.66)))))))\n + \")\";\n}\n","import colors from \"../colors.js\";\n\nfunction ramp(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}\n\nexport default ramp(colors(\"44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725\"));\n\nexport var magma = ramp(colors(\"00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf\"));\n\nexport var inferno = ramp(colors(\"00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4\"));\n\nexport var plasma = ramp(colors(\"0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921\"));\n","import creator from \"./creator\";\nimport select from \"./select\";\n\nexport default function(name) {\n return select(creator(name).call(document.documentElement));\n}\n","var nextId = 0;\n\nexport default function local() {\n return new Local;\n}\n\nfunction Local() {\n this._ = \"@\" + (++nextId).toString(36);\n}\n\nLocal.prototype = local.prototype = {\n constructor: Local,\n get: function(node) {\n var id = this._;\n while (!(id in node)) if (!(node = node.parentNode)) return;\n return node[id];\n },\n set: function(node, value) {\n return node[this._] = value;\n },\n remove: function(node) {\n return this._ in node && delete node[this._];\n },\n toString: function() {\n return this._;\n }\n};\n","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([document.querySelectorAll(selector)], [document.documentElement])\n : new Selection([selector == null ? [] : selector], root);\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node, touches) {\n if (touches == null) touches = sourceEvent().touches;\n\n for (var i = 0, n = touches ? touches.length : 0, points = new Array(n); i < n; ++i) {\n points[i] = point(node, touches[i]);\n }\n\n return points;\n}\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null;\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle.\n if (da < pi && (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10))) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector’s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector’s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function line(data) {\n var i,\n n = data.length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function() {\n var x0 = pointX,\n x1 = null,\n y0 = constant(0),\n y1 = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function area(data) {\n var i,\n j,\n k,\n n = data.length,\n d,\n defined0 = false,\n buffer,\n x0z = new Array(n),\n y0z = new Array(n);\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) {\n j = i;\n output.areaStart();\n output.lineStart();\n } else {\n output.lineEnd();\n output.lineStart();\n for (k = i - 1; k >= j; --k) {\n output.point(x0z[k], y0z[k]);\n }\n output.lineEnd();\n output.areaEnd();\n }\n }\n if (defined0) {\n x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n }\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n function arealine() {\n return line().defined(defined).curve(curve).context(context);\n }\n\n area.x = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n };\n\n area.x0 = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n };\n\n area.x1 = function(_) {\n return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n };\n\n area.y = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n };\n\n area.y0 = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n };\n\n area.y1 = function(_) {\n return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n };\n\n area.lineX0 =\n area.lineY0 = function() {\n return arealine().x(x0).y(y0);\n };\n\n area.lineY1 = function() {\n return arealine().x(x0).y(y1);\n };\n\n area.lineX1 = function() {\n return arealine().x(x1).y(y0);\n };\n\n area.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n };\n\n area.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n };\n\n area.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n };\n\n return area;\n}\n","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","export default function(d) {\n return d;\n}\n","import constant from \"./constant.js\";\nimport descending from \"./descending.js\";\nimport identity from \"./identity.js\";\nimport {tau} from \"./math.js\";\n\nexport default function() {\n var value = identity,\n sortValues = descending,\n sort = null,\n startAngle = constant(0),\n endAngle = constant(tau),\n padAngle = constant(0);\n\n function pie(data) {\n var i,\n n = data.length,\n j,\n k,\n sum = 0,\n index = new Array(n),\n arcs = new Array(n),\n a0 = +startAngle.apply(this, arguments),\n da = Math.min(tau, Math.max(-tau, endAngle.apply(this, arguments) - a0)),\n a1,\n p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),\n pa = p * (da < 0 ? -1 : 1),\n v;\n\n for (i = 0; i < n; ++i) {\n if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {\n sum += v;\n }\n }\n\n // Optionally sort the arcs by previously-computed values or by data.\n if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); });\n else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); });\n\n // Compute the arcs! They are stored in the original data's order.\n for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {\n j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {\n data: data[j],\n index: i,\n value: v,\n startAngle: a0,\n endAngle: a1,\n padAngle: p\n };\n }\n\n return arcs;\n }\n\n pie.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), pie) : value;\n };\n\n pie.sortValues = function(_) {\n return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;\n };\n\n pie.sort = function(_) {\n return arguments.length ? (sort = _, sortValues = null, pie) : sort;\n };\n\n pie.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : startAngle;\n };\n\n pie.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : endAngle;\n };\n\n pie.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : padAngle;\n };\n\n return pie;\n}\n","import curveLinear from \"./linear.js\";\n\nexport var curveRadialLinear = curveRadial(curveLinear);\n\nfunction Radial(curve) {\n this._curve = curve;\n}\n\nRadial.prototype = {\n areaStart: function() {\n this._curve.areaStart();\n },\n areaEnd: function() {\n this._curve.areaEnd();\n },\n lineStart: function() {\n this._curve.lineStart();\n },\n lineEnd: function() {\n this._curve.lineEnd();\n },\n point: function(a, r) {\n this._curve.point(r * Math.sin(a), r * -Math.cos(a));\n }\n};\n\nexport default function curveRadial(curve) {\n\n function radial(context) {\n return new Radial(curve(context));\n }\n\n radial._curve = curve;\n\n return radial;\n}\n","import curveRadial, {curveRadialLinear} from \"./curve/radial.js\";\nimport line from \"./line.js\";\n\nexport function lineRadial(l) {\n var c = l.curve;\n\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n\n l.curve = function(_) {\n return arguments.length ? c(curveRadial(_)) : c()._curve;\n };\n\n return l;\n}\n\nexport default function() {\n return lineRadial(line().curve(curveRadialLinear));\n}\n","import curveRadial, {curveRadialLinear} from \"./curve/radial.js\";\nimport area from \"./area.js\";\nimport {lineRadial} from \"./lineRadial.js\";\n\nexport default function() {\n var a = area().curve(curveRadialLinear),\n c = a.curve,\n x0 = a.lineX0,\n x1 = a.lineX1,\n y0 = a.lineY0,\n y1 = a.lineY1;\n\n a.angle = a.x, delete a.x;\n a.startAngle = a.x0, delete a.x0;\n a.endAngle = a.x1, delete a.x1;\n a.radius = a.y, delete a.y;\n a.innerRadius = a.y0, delete a.y0;\n a.outerRadius = a.y1, delete a.y1;\n a.lineStartAngle = function() { return lineRadial(x0()); }, delete a.lineX0;\n a.lineEndAngle = function() { return lineRadial(x1()); }, delete a.lineX1;\n a.lineInnerRadius = function() { return lineRadial(y0()); }, delete a.lineY0;\n a.lineOuterRadius = function() { return lineRadial(y1()); }, delete a.lineY1;\n\n a.curve = function(_) {\n return arguments.length ? c(curveRadial(_)) : c()._curve;\n };\n\n return a;\n}\n","export default function(x, y) {\n return [(y = +y) * Math.cos(x -= Math.PI / 2), y * Math.sin(x)];\n}\n","export var slice = Array.prototype.slice;\n","import {path} from \"d3-path\";\nimport {slice} from \"../array.js\";\nimport constant from \"../constant.js\";\nimport {x as pointX, y as pointY} from \"../point.js\";\nimport pointRadial from \"../pointRadial.js\";\n\nfunction linkSource(d) {\n return d.source;\n}\n\nfunction linkTarget(d) {\n return d.target;\n}\n\nfunction link(curve) {\n var source = linkSource,\n target = linkTarget,\n x = pointX,\n y = pointY,\n context = null;\n\n function link() {\n var buffer, argv = slice.call(arguments), s = source.apply(this, argv), t = target.apply(this, argv);\n if (!context) context = buffer = path();\n curve(context, +x.apply(this, (argv[0] = s, argv)), +y.apply(this, argv), +x.apply(this, (argv[0] = t, argv)), +y.apply(this, argv));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n link.source = function(_) {\n return arguments.length ? (source = _, link) : source;\n };\n\n link.target = function(_) {\n return arguments.length ? (target = _, link) : target;\n };\n\n link.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), link) : x;\n };\n\n link.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), link) : y;\n };\n\n link.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), link) : context;\n };\n\n return link;\n}\n\nfunction curveHorizontal(context, x0, y0, x1, y1) {\n context.moveTo(x0, y0);\n context.bezierCurveTo(x0 = (x0 + x1) / 2, y0, x0, y1, x1, y1);\n}\n\nfunction curveVertical(context, x0, y0, x1, y1) {\n context.moveTo(x0, y0);\n context.bezierCurveTo(x0, y0 = (y0 + y1) / 2, x1, y0, x1, y1);\n}\n\nfunction curveRadial(context, x0, y0, x1, y1) {\n var p0 = pointRadial(x0, y0),\n p1 = pointRadial(x0, y0 = (y0 + y1) / 2),\n p2 = pointRadial(x1, y0),\n p3 = pointRadial(x1, y1);\n context.moveTo(p0[0], p0[1]);\n context.bezierCurveTo(p1[0], p1[1], p2[0], p2[1], p3[0], p3[1]);\n}\n\nexport function linkHorizontal() {\n return link(curveHorizontal);\n}\n\nexport function linkVertical() {\n return link(curveVertical);\n}\n\nexport function linkRadial() {\n var l = link(curveRadial);\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n return l;\n}\n","import {pi, tau} from \"../math.js\";\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size / pi);\n context.moveTo(r, 0);\n context.arc(0, 0, r, 0, tau);\n }\n};\n","export default {\n draw: function(context, size) {\n var r = Math.sqrt(size / 5) / 2;\n context.moveTo(-3 * r, -r);\n context.lineTo(-r, -r);\n context.lineTo(-r, -3 * r);\n context.lineTo(r, -3 * r);\n context.lineTo(r, -r);\n context.lineTo(3 * r, -r);\n context.lineTo(3 * r, r);\n context.lineTo(r, r);\n context.lineTo(r, 3 * r);\n context.lineTo(-r, 3 * r);\n context.lineTo(-r, r);\n context.lineTo(-3 * r, r);\n context.closePath();\n }\n};\n","var tan30 = Math.sqrt(1 / 3),\n tan30_2 = tan30 * 2;\n\nexport default {\n draw: function(context, size) {\n var y = Math.sqrt(size / tan30_2),\n x = y * tan30;\n context.moveTo(0, -y);\n context.lineTo(x, 0);\n context.lineTo(0, y);\n context.lineTo(-x, 0);\n context.closePath();\n }\n};\n","import {pi, tau} from \"../math.js\";\n\nvar ka = 0.89081309152928522810,\n kr = Math.sin(pi / 10) / Math.sin(7 * pi / 10),\n kx = Math.sin(tau / 10) * kr,\n ky = -Math.cos(tau / 10) * kr;\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size * ka),\n x = kx * r,\n y = ky * r;\n context.moveTo(0, -r);\n context.lineTo(x, y);\n for (var i = 1; i < 5; ++i) {\n var a = tau * i / 5,\n c = Math.cos(a),\n s = Math.sin(a);\n context.lineTo(s * r, -c * r);\n context.lineTo(c * x - s * y, s * x + c * y);\n }\n context.closePath();\n }\n};\n","export default {\n draw: function(context, size) {\n var w = Math.sqrt(size),\n x = -w / 2;\n context.rect(x, x, w, w);\n }\n};\n","var sqrt3 = Math.sqrt(3);\n\nexport default {\n draw: function(context, size) {\n var y = -Math.sqrt(size / (sqrt3 * 3));\n context.moveTo(0, y * 2);\n context.lineTo(-sqrt3 * y, -y);\n context.lineTo(sqrt3 * y, -y);\n context.closePath();\n }\n};\n","var c = -0.5,\n s = Math.sqrt(3) / 2,\n k = 1 / Math.sqrt(12),\n a = (k / 2 + 1) * 3;\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size / a),\n x0 = r / 2,\n y0 = r * k,\n x1 = x0,\n y1 = r * k + r,\n x2 = -x1,\n y2 = y1;\n context.moveTo(x0, y0);\n context.lineTo(x1, y1);\n context.lineTo(x2, y2);\n context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n context.closePath();\n }\n};\n","import {path} from \"d3-path\";\nimport circle from \"./symbol/circle.js\";\nimport cross from \"./symbol/cross.js\";\nimport diamond from \"./symbol/diamond.js\";\nimport star from \"./symbol/star.js\";\nimport square from \"./symbol/square.js\";\nimport triangle from \"./symbol/triangle.js\";\nimport wye from \"./symbol/wye.js\";\nimport constant from \"./constant.js\";\n\nexport var symbols = [\n circle,\n cross,\n diamond,\n square,\n star,\n triangle,\n wye\n];\n\nexport default function() {\n var type = constant(circle),\n size = constant(64),\n context = null;\n\n function symbol() {\n var buffer;\n if (!context) context = buffer = path();\n type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n symbol.type = function(_) {\n return arguments.length ? (type = typeof _ === \"function\" ? _ : constant(_), symbol) : type;\n };\n\n symbol.size = function(_) {\n return arguments.length ? (size = typeof _ === \"function\" ? _ : constant(+_), symbol) : size;\n };\n\n symbol.context = function(_) {\n return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n };\n\n return symbol;\n}\n","export default function() {}\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n (2 * that._x0 + that._x1) / 3,\n (2 * that._y0 + that._y1) / 3,\n (that._x0 + 2 * that._x1) / 3,\n (that._y0 + 2 * that._y1) / 3,\n (that._x0 + 4 * that._x1 + x) / 6,\n (that._y0 + 4 * that._y1 + y) / 6\n );\n}\n\nexport function Basis(context) {\n this._context = context;\n}\n\nBasis.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 3: point(this, this._x1, this._y1); // proceed\n case 2: this._context.lineTo(this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new Basis(context);\n}\n","import noop from \"../noop.js\";\nimport {point} from \"./basis.js\";\n\nfunction BasisClosed(context) {\n this._context = context;\n}\n\nBasisClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x2, this._y2);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x2, this._y2);\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisClosed(context);\n}\n","import {point} from \"./basis.js\";\n\nfunction BasisOpen(context) {\n this._context = context;\n}\n\nBasisOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisOpen(context);\n}\n","import {Basis} from \"./basis.js\";\n\nfunction Bundle(context, beta) {\n this._basis = new Basis(context);\n this._beta = beta;\n}\n\nBundle.prototype = {\n lineStart: function() {\n this._x = [];\n this._y = [];\n this._basis.lineStart();\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n j = x.length - 1;\n\n if (j > 0) {\n var x0 = x[0],\n y0 = y[0],\n dx = x[j] - x0,\n dy = y[j] - y0,\n i = -1,\n t;\n\n while (++i <= j) {\n t = i / j;\n this._basis.point(\n this._beta * x[i] + (1 - this._beta) * (x0 + t * dx),\n this._beta * y[i] + (1 - this._beta) * (y0 + t * dy)\n );\n }\n }\n\n this._x = this._y = null;\n this._basis.lineEnd();\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\nexport default (function custom(beta) {\n\n function bundle(context) {\n return beta === 1 ? new Basis(context) : new Bundle(context, beta);\n }\n\n bundle.beta = function(beta) {\n return custom(+beta);\n };\n\n return bundle;\n})(0.85);\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n that._x1 + that._k * (that._x2 - that._x0),\n that._y1 + that._k * (that._y2 - that._y0),\n that._x2 + that._k * (that._x1 - x),\n that._y2 + that._k * (that._y1 - y),\n that._x2,\n that._y2\n );\n}\n\nexport function Cardinal(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinal.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: point(this, this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new Cardinal(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import noop from \"../noop.js\";\nimport {point} from \"./cardinal.js\";\n\nexport function CardinalClosed(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalClosed(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {point} from \"./cardinal.js\";\n\nexport function CardinalOpen(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalOpen(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {epsilon} from \"../math.js\";\nimport {Cardinal} from \"./cardinal.js\";\n\nexport function point(that, x, y) {\n var x1 = that._x1,\n y1 = that._y1,\n x2 = that._x2,\n y2 = that._y2;\n\n if (that._l01_a > epsilon) {\n var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n }\n\n if (that._l23_a > epsilon) {\n var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n }\n\n that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n}\n\nfunction CatmullRom(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRom.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: this.point(this._x2, this._y2); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalClosed} from \"./cardinalClosed.js\";\nimport noop from \"../noop.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomClosed(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalOpen} from \"./cardinalOpen.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomOpen(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import noop from \"../noop.js\";\n\nfunction LinearClosed(context) {\n this._context = context;\n}\n\nLinearClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._point) this._context.closePath();\n },\n point: function(x, y) {\n x = +x, y = +y;\n if (this._point) this._context.lineTo(x, y);\n else this._point = 1, this._context.moveTo(x, y);\n }\n};\n\nexport default function(context) {\n return new LinearClosed(context);\n}\n","function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n","function Natural(context) {\n this._context = context;\n}\n\nNatural.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = [];\n this._y = [];\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n n = x.length;\n\n if (n) {\n this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n if (n === 2) {\n this._context.lineTo(x[1], y[1]);\n } else {\n var px = controlPoints(x),\n py = controlPoints(y);\n for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n }\n }\n }\n\n if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n this._line = 1 - this._line;\n this._x = this._y = null;\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n var i,\n n = x.length - 1,\n m,\n a = new Array(n),\n b = new Array(n),\n r = new Array(n);\n a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n a[n - 1] = r[n - 1] / b[n - 1];\n for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n b[n - 1] = (x[n] + a[n - 1]) / 2;\n for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n return [a, b];\n}\n\nexport default function(context) {\n return new Natural(context);\n}\n","function Step(context, t) {\n this._context = context;\n this._t = t;\n}\n\nStep.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\n\nexport default function(context) {\n return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n return new Step(context, 1);\n}\n","export default function(series, order) {\n if (!((n = series.length) > 1)) return;\n for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) {\n s0 = s1, s1 = series[order[i]];\n for (j = 0; j < m; ++j) {\n s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1];\n }\n }\n}\n","export default function(series) {\n var n = series.length, o = new Array(n);\n while (--n >= 0) o[n] = n;\n return o;\n}\n","import {slice} from \"./array.js\";\nimport constant from \"./constant.js\";\nimport offsetNone from \"./offset/none.js\";\nimport orderNone from \"./order/none.js\";\n\nfunction stackValue(d, key) {\n return d[key];\n}\n\nexport default function() {\n var keys = constant([]),\n order = orderNone,\n offset = offsetNone,\n value = stackValue;\n\n function stack(data) {\n var kz = keys.apply(this, arguments),\n i,\n m = data.length,\n n = kz.length,\n sz = new Array(n),\n oz;\n\n for (i = 0; i < n; ++i) {\n for (var ki = kz[i], si = sz[i] = new Array(m), j = 0, sij; j < m; ++j) {\n si[j] = sij = [0, +value(data[j], ki, j, data)];\n sij.data = data[j];\n }\n si.key = ki;\n }\n\n for (i = 0, oz = order(sz); i < n; ++i) {\n sz[oz[i]].index = i;\n }\n\n offset(sz, oz);\n return sz;\n }\n\n stack.keys = function(_) {\n return arguments.length ? (keys = typeof _ === \"function\" ? _ : constant(slice.call(_)), stack) : keys;\n };\n\n stack.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), stack) : value;\n };\n\n stack.order = function(_) {\n return arguments.length ? (order = _ == null ? orderNone : typeof _ === \"function\" ? _ : constant(slice.call(_)), stack) : order;\n };\n\n stack.offset = function(_) {\n return arguments.length ? (offset = _ == null ? offsetNone : _, stack) : offset;\n };\n\n return stack;\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) {\n for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0;\n if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y;\n }\n none(series, order);\n}\n","export default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var i, j = 0, d, dy, yp, yn, n, m = series[order[0]].length; j < m; ++j) {\n for (yp = yn = 0, i = 0; i < n; ++i) {\n if ((dy = (d = series[order[i]][j])[1] - d[0]) > 0) {\n d[0] = yp, d[1] = yp += dy;\n } else if (dy < 0) {\n d[1] = yn, d[0] = yn += dy;\n } else {\n d[0] = 0, d[1] = dy;\n }\n }\n }\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) {\n for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0;\n s0[j][1] += s0[j][0] = -y / 2;\n }\n none(series, order);\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return;\n for (var y = 0, j = 1, s0, m, n; j < m; ++j) {\n for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) {\n var si = series[order[i]],\n sij0 = si[j][1] || 0,\n sij1 = si[j - 1][1] || 0,\n s3 = (sij0 - sij1) / 2;\n for (var k = 0; k < i; ++k) {\n var sk = series[order[k]],\n skj0 = sk[j][1] || 0,\n skj1 = sk[j - 1][1] || 0;\n s3 += skj0 - skj1;\n }\n s1 += sij0, s2 += s3 * sij0;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n if (s1) y -= s2 / s1;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n none(series, order);\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n var peaks = series.map(peak);\n return none(series).sort(function(a, b) { return peaks[a] - peaks[b]; });\n}\n\nfunction peak(series) {\n var i = -1, j = 0, n = series.length, vi, vj = -Infinity;\n while (++i < n) if ((vi = +series[i][1]) > vj) vj = vi, j = i;\n return j;\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n var sums = series.map(sum);\n return none(series).sort(function(a, b) { return sums[a] - sums[b]; });\n}\n\nexport function sum(series) {\n var s = 0, i = -1, n = series.length, v;\n while (++i < n) if (v = +series[i][1]) s += v;\n return s;\n}\n","import ascending from \"./ascending.js\";\n\nexport default function(series) {\n return ascending(series).reverse();\n}\n","import appearance from \"./appearance.js\";\nimport {sum} from \"./ascending.js\";\n\nexport default function(series) {\n var n = series.length,\n i,\n j,\n sums = series.map(sum),\n order = appearance(series),\n top = 0,\n bottom = 0,\n tops = [],\n bottoms = [];\n\n for (i = 0; i < n; ++i) {\n j = order[i];\n if (top < bottom) {\n top += sums[j];\n tops.push(j);\n } else {\n bottom += sums[j];\n bottoms.push(j);\n }\n }\n\n return bottoms.reverse().concat(tops);\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n return none(series).reverse();\n}\n","import {utcFormat} from \"./defaultLocale.js\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat.js\";\nimport {utcParse} from \"./defaultLocale.js\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","import {Timer, now} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer, total = delay;\n if (delay == null) return t.restart(callback, delay, time), t;\n delay = +delay, time = time == null ? now() : +time;\n t.restart(function tick(elapsed) {\n elapsed += total;\n t.restart(tick, total += delay, time);\n callback(elapsed);\n }, delay, time);\n return t;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export function x(d) {\n return d[0];\n}\n\nexport function y(d) {\n return d[1];\n}\n","function RedBlackTree() {\n this._ = null; // root node\n}\n\nexport function RedBlackNode(node) {\n node.U = // parent node\n node.C = // color - true for red, false for black\n node.L = // left node\n node.R = // right node\n node.P = // previous node\n node.N = null; // next node\n}\n\nRedBlackTree.prototype = {\n constructor: RedBlackTree,\n\n insert: function(after, node) {\n var parent, grandpa, uncle;\n\n if (after) {\n node.P = after;\n node.N = after.N;\n if (after.N) after.N.P = node;\n after.N = node;\n if (after.R) {\n after = after.R;\n while (after.L) after = after.L;\n after.L = node;\n } else {\n after.R = node;\n }\n parent = after;\n } else if (this._) {\n after = RedBlackFirst(this._);\n node.P = null;\n node.N = after;\n after.P = after.L = node;\n parent = after;\n } else {\n node.P = node.N = null;\n this._ = node;\n parent = null;\n }\n node.L = node.R = null;\n node.U = parent;\n node.C = true;\n\n after = node;\n while (parent && parent.C) {\n grandpa = parent.U;\n if (parent === grandpa.L) {\n uncle = grandpa.R;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.R) {\n RedBlackRotateLeft(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n RedBlackRotateRight(this, grandpa);\n }\n } else {\n uncle = grandpa.L;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.L) {\n RedBlackRotateRight(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n RedBlackRotateLeft(this, grandpa);\n }\n }\n parent = after.U;\n }\n this._.C = false;\n },\n\n remove: function(node) {\n if (node.N) node.N.P = node.P;\n if (node.P) node.P.N = node.N;\n node.N = node.P = null;\n\n var parent = node.U,\n sibling,\n left = node.L,\n right = node.R,\n next,\n red;\n\n if (!left) next = right;\n else if (!right) next = left;\n else next = RedBlackFirst(right);\n\n if (parent) {\n if (parent.L === node) parent.L = next;\n else parent.R = next;\n } else {\n this._ = next;\n }\n\n if (left && right) {\n red = next.C;\n next.C = node.C;\n next.L = left;\n left.U = next;\n if (next !== right) {\n parent = next.U;\n next.U = node.U;\n node = next.R;\n parent.L = node;\n next.R = right;\n right.U = next;\n } else {\n next.U = parent;\n parent = next;\n node = next.R;\n }\n } else {\n red = node.C;\n node = next;\n }\n\n if (node) node.U = parent;\n if (red) return;\n if (node && node.C) { node.C = false; return; }\n\n do {\n if (node === this._) break;\n if (node === parent.L) {\n sibling = parent.R;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n RedBlackRotateLeft(this, parent);\n sibling = parent.R;\n }\n if ((sibling.L && sibling.L.C)\n || (sibling.R && sibling.R.C)) {\n if (!sibling.R || !sibling.R.C) {\n sibling.L.C = false;\n sibling.C = true;\n RedBlackRotateRight(this, sibling);\n sibling = parent.R;\n }\n sibling.C = parent.C;\n parent.C = sibling.R.C = false;\n RedBlackRotateLeft(this, parent);\n node = this._;\n break;\n }\n } else {\n sibling = parent.L;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n RedBlackRotateRight(this, parent);\n sibling = parent.L;\n }\n if ((sibling.L && sibling.L.C)\n || (sibling.R && sibling.R.C)) {\n if (!sibling.L || !sibling.L.C) {\n sibling.R.C = false;\n sibling.C = true;\n RedBlackRotateLeft(this, sibling);\n sibling = parent.L;\n }\n sibling.C = parent.C;\n parent.C = sibling.L.C = false;\n RedBlackRotateRight(this, parent);\n node = this._;\n break;\n }\n }\n sibling.C = true;\n node = parent;\n parent = parent.U;\n } while (!node.C);\n\n if (node) node.C = false;\n }\n};\n\nfunction RedBlackRotateLeft(tree, node) {\n var p = node,\n q = node.R,\n parent = p.U;\n\n if (parent) {\n if (parent.L === p) parent.L = q;\n else parent.R = q;\n } else {\n tree._ = q;\n }\n\n q.U = parent;\n p.U = q;\n p.R = q.L;\n if (p.R) p.R.U = p;\n q.L = p;\n}\n\nfunction RedBlackRotateRight(tree, node) {\n var p = node,\n q = node.L,\n parent = p.U;\n\n if (parent) {\n if (parent.L === p) parent.L = q;\n else parent.R = q;\n } else {\n tree._ = q;\n }\n\n q.U = parent;\n p.U = q;\n p.L = q.R;\n if (p.L) p.L.U = p;\n q.R = p;\n}\n\nfunction RedBlackFirst(node) {\n while (node.L) node = node.L;\n return node;\n}\n\nexport default RedBlackTree;\n","import {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createEdge(left, right, v0, v1) {\n var edge = [null, null],\n index = edges.push(edge) - 1;\n edge.left = left;\n edge.right = right;\n if (v0) setEdgeEnd(edge, left, right, v0);\n if (v1) setEdgeEnd(edge, right, left, v1);\n cells[left.index].halfedges.push(index);\n cells[right.index].halfedges.push(index);\n return edge;\n}\n\nexport function createBorderEdge(left, v0, v1) {\n var edge = [v0, v1];\n edge.left = left;\n return edge;\n}\n\nexport function setEdgeEnd(edge, left, right, vertex) {\n if (!edge[0] && !edge[1]) {\n edge[0] = vertex;\n edge.left = left;\n edge.right = right;\n } else if (edge.left === right) {\n edge[1] = vertex;\n } else {\n edge[0] = vertex;\n }\n}\n\n// Liang–Barsky line clipping.\nfunction clipEdge(edge, x0, y0, x1, y1) {\n var a = edge[0],\n b = edge[1],\n ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (!(t0 > 0) && !(t1 < 1)) return true; // TODO Better check?\n\n if (t0 > 0) edge[0] = [ax + t0 * dx, ay + t0 * dy];\n if (t1 < 1) edge[1] = [ax + t1 * dx, ay + t1 * dy];\n return true;\n}\n\nfunction connectEdge(edge, x0, y0, x1, y1) {\n var v1 = edge[1];\n if (v1) return true;\n\n var v0 = edge[0],\n left = edge.left,\n right = edge.right,\n lx = left[0],\n ly = left[1],\n rx = right[0],\n ry = right[1],\n fx = (lx + rx) / 2,\n fy = (ly + ry) / 2,\n fm,\n fb;\n\n if (ry === ly) {\n if (fx < x0 || fx >= x1) return;\n if (lx > rx) {\n if (!v0) v0 = [fx, y0];\n else if (v0[1] >= y1) return;\n v1 = [fx, y1];\n } else {\n if (!v0) v0 = [fx, y1];\n else if (v0[1] < y0) return;\n v1 = [fx, y0];\n }\n } else {\n fm = (lx - rx) / (ry - ly);\n fb = fy - fm * fx;\n if (fm < -1 || fm > 1) {\n if (lx > rx) {\n if (!v0) v0 = [(y0 - fb) / fm, y0];\n else if (v0[1] >= y1) return;\n v1 = [(y1 - fb) / fm, y1];\n } else {\n if (!v0) v0 = [(y1 - fb) / fm, y1];\n else if (v0[1] < y0) return;\n v1 = [(y0 - fb) / fm, y0];\n }\n } else {\n if (ly < ry) {\n if (!v0) v0 = [x0, fm * x0 + fb];\n else if (v0[0] >= x1) return;\n v1 = [x1, fm * x1 + fb];\n } else {\n if (!v0) v0 = [x1, fm * x1 + fb];\n else if (v0[0] < x0) return;\n v1 = [x0, fm * x0 + fb];\n }\n }\n }\n\n edge[0] = v0;\n edge[1] = v1;\n return true;\n}\n\nexport function clipEdges(x0, y0, x1, y1) {\n var i = edges.length,\n edge;\n\n while (i--) {\n if (!connectEdge(edge = edges[i], x0, y0, x1, y1)\n || !clipEdge(edge, x0, y0, x1, y1)\n || !(Math.abs(edge[0][0] - edge[1][0]) > epsilon\n || Math.abs(edge[0][1] - edge[1][1]) > epsilon)) {\n delete edges[i];\n }\n }\n}\n","import {createBorderEdge} from \"./Edge\";\nimport {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createCell(site) {\n return cells[site.index] = {\n site: site,\n halfedges: []\n };\n}\n\nfunction cellHalfedgeAngle(cell, edge) {\n var site = cell.site,\n va = edge.left,\n vb = edge.right;\n if (site === vb) vb = va, va = site;\n if (vb) return Math.atan2(vb[1] - va[1], vb[0] - va[0]);\n if (site === va) va = edge[1], vb = edge[0];\n else va = edge[0], vb = edge[1];\n return Math.atan2(va[0] - vb[0], vb[1] - va[1]);\n}\n\nexport function cellHalfedgeStart(cell, edge) {\n return edge[+(edge.left !== cell.site)];\n}\n\nexport function cellHalfedgeEnd(cell, edge) {\n return edge[+(edge.left === cell.site)];\n}\n\nexport function sortCellHalfedges() {\n for (var i = 0, n = cells.length, cell, halfedges, j, m; i < n; ++i) {\n if ((cell = cells[i]) && (m = (halfedges = cell.halfedges).length)) {\n var index = new Array(m),\n array = new Array(m);\n for (j = 0; j < m; ++j) index[j] = j, array[j] = cellHalfedgeAngle(cell, edges[halfedges[j]]);\n index.sort(function(i, j) { return array[j] - array[i]; });\n for (j = 0; j < m; ++j) array[j] = halfedges[index[j]];\n for (j = 0; j < m; ++j) halfedges[j] = array[j];\n }\n }\n}\n\nexport function clipCells(x0, y0, x1, y1) {\n var nCells = cells.length,\n iCell,\n cell,\n site,\n iHalfedge,\n halfedges,\n nHalfedges,\n start,\n startX,\n startY,\n end,\n endX,\n endY,\n cover = true;\n\n for (iCell = 0; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n site = cell.site;\n halfedges = cell.halfedges;\n iHalfedge = halfedges.length;\n\n // Remove any dangling clipped edges.\n while (iHalfedge--) {\n if (!edges[halfedges[iHalfedge]]) {\n halfedges.splice(iHalfedge, 1);\n }\n }\n\n // Insert any border edges as necessary.\n iHalfedge = 0, nHalfedges = halfedges.length;\n while (iHalfedge < nHalfedges) {\n end = cellHalfedgeEnd(cell, edges[halfedges[iHalfedge]]), endX = end[0], endY = end[1];\n start = cellHalfedgeStart(cell, edges[halfedges[++iHalfedge % nHalfedges]]), startX = start[0], startY = start[1];\n if (Math.abs(endX - startX) > epsilon || Math.abs(endY - startY) > epsilon) {\n halfedges.splice(iHalfedge, 0, edges.push(createBorderEdge(site, end,\n Math.abs(endX - x0) < epsilon && y1 - endY > epsilon ? [x0, Math.abs(startX - x0) < epsilon ? startY : y1]\n : Math.abs(endY - y1) < epsilon && x1 - endX > epsilon ? [Math.abs(startY - y1) < epsilon ? startX : x1, y1]\n : Math.abs(endX - x1) < epsilon && endY - y0 > epsilon ? [x1, Math.abs(startX - x1) < epsilon ? startY : y0]\n : Math.abs(endY - y0) < epsilon && endX - x0 > epsilon ? [Math.abs(startY - y0) < epsilon ? startX : x0, y0]\n : null)) - 1);\n ++nHalfedges;\n }\n }\n\n if (nHalfedges) cover = false;\n }\n }\n\n // If there weren’t any edges, have the closest site cover the extent.\n // It doesn’t matter which corner of the extent we measure!\n if (cover) {\n var dx, dy, d2, dc = Infinity;\n\n for (iCell = 0, cover = null; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n site = cell.site;\n dx = site[0] - x0;\n dy = site[1] - y0;\n d2 = dx * dx + dy * dy;\n if (d2 < dc) dc = d2, cover = cell;\n }\n }\n\n if (cover) {\n var v00 = [x0, y0], v01 = [x0, y1], v11 = [x1, y1], v10 = [x1, y0];\n cover.halfedges.push(\n edges.push(createBorderEdge(site = cover.site, v00, v01)) - 1,\n edges.push(createBorderEdge(site, v01, v11)) - 1,\n edges.push(createBorderEdge(site, v11, v10)) - 1,\n edges.push(createBorderEdge(site, v10, v00)) - 1\n );\n }\n }\n\n // Lastly delete any cells with no edges; these were entirely clipped.\n for (iCell = 0; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n if (!cell.halfedges.length) {\n delete cells[iCell];\n }\n }\n }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {circles, epsilon2} from \"./Diagram\";\n\nvar circlePool = [];\n\nexport var firstCircle;\n\nfunction Circle() {\n RedBlackNode(this);\n this.x =\n this.y =\n this.arc =\n this.site =\n this.cy = null;\n}\n\nexport function attachCircle(arc) {\n var lArc = arc.P,\n rArc = arc.N;\n\n if (!lArc || !rArc) return;\n\n var lSite = lArc.site,\n cSite = arc.site,\n rSite = rArc.site;\n\n if (lSite === rSite) return;\n\n var bx = cSite[0],\n by = cSite[1],\n ax = lSite[0] - bx,\n ay = lSite[1] - by,\n cx = rSite[0] - bx,\n cy = rSite[1] - by;\n\n var d = 2 * (ax * cy - ay * cx);\n if (d >= -epsilon2) return;\n\n var ha = ax * ax + ay * ay,\n hc = cx * cx + cy * cy,\n x = (cy * ha - ay * hc) / d,\n y = (ax * hc - cx * ha) / d;\n\n var circle = circlePool.pop() || new Circle;\n circle.arc = arc;\n circle.site = cSite;\n circle.x = x + bx;\n circle.y = (circle.cy = y + by) + Math.sqrt(x * x + y * y); // y bottom\n\n arc.circle = circle;\n\n var before = null,\n node = circles._;\n\n while (node) {\n if (circle.y < node.y || (circle.y === node.y && circle.x <= node.x)) {\n if (node.L) node = node.L;\n else { before = node.P; break; }\n } else {\n if (node.R) node = node.R;\n else { before = node; break; }\n }\n }\n\n circles.insert(before, circle);\n if (!before) firstCircle = circle;\n}\n\nexport function detachCircle(arc) {\n var circle = arc.circle;\n if (circle) {\n if (!circle.P) firstCircle = circle.N;\n circles.remove(circle);\n circlePool.push(circle);\n RedBlackNode(circle);\n arc.circle = null;\n }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {createCell} from \"./Cell\";\nimport {attachCircle, detachCircle} from \"./Circle\";\nimport {createEdge, setEdgeEnd} from \"./Edge\";\nimport {beaches, epsilon} from \"./Diagram\";\n\nvar beachPool = [];\n\nfunction Beach() {\n RedBlackNode(this);\n this.edge =\n this.site =\n this.circle = null;\n}\n\nfunction createBeach(site) {\n var beach = beachPool.pop() || new Beach;\n beach.site = site;\n return beach;\n}\n\nfunction detachBeach(beach) {\n detachCircle(beach);\n beaches.remove(beach);\n beachPool.push(beach);\n RedBlackNode(beach);\n}\n\nexport function removeBeach(beach) {\n var circle = beach.circle,\n x = circle.x,\n y = circle.cy,\n vertex = [x, y],\n previous = beach.P,\n next = beach.N,\n disappearing = [beach];\n\n detachBeach(beach);\n\n var lArc = previous;\n while (lArc.circle\n && Math.abs(x - lArc.circle.x) < epsilon\n && Math.abs(y - lArc.circle.cy) < epsilon) {\n previous = lArc.P;\n disappearing.unshift(lArc);\n detachBeach(lArc);\n lArc = previous;\n }\n\n disappearing.unshift(lArc);\n detachCircle(lArc);\n\n var rArc = next;\n while (rArc.circle\n && Math.abs(x - rArc.circle.x) < epsilon\n && Math.abs(y - rArc.circle.cy) < epsilon) {\n next = rArc.N;\n disappearing.push(rArc);\n detachBeach(rArc);\n rArc = next;\n }\n\n disappearing.push(rArc);\n detachCircle(rArc);\n\n var nArcs = disappearing.length,\n iArc;\n for (iArc = 1; iArc < nArcs; ++iArc) {\n rArc = disappearing[iArc];\n lArc = disappearing[iArc - 1];\n setEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\n }\n\n lArc = disappearing[0];\n rArc = disappearing[nArcs - 1];\n rArc.edge = createEdge(lArc.site, rArc.site, null, vertex);\n\n attachCircle(lArc);\n attachCircle(rArc);\n}\n\nexport function addBeach(site) {\n var x = site[0],\n directrix = site[1],\n lArc,\n rArc,\n dxl,\n dxr,\n node = beaches._;\n\n while (node) {\n dxl = leftBreakPoint(node, directrix) - x;\n if (dxl > epsilon) node = node.L; else {\n dxr = x - rightBreakPoint(node, directrix);\n if (dxr > epsilon) {\n if (!node.R) {\n lArc = node;\n break;\n }\n node = node.R;\n } else {\n if (dxl > -epsilon) {\n lArc = node.P;\n rArc = node;\n } else if (dxr > -epsilon) {\n lArc = node;\n rArc = node.N;\n } else {\n lArc = rArc = node;\n }\n break;\n }\n }\n }\n\n createCell(site);\n var newArc = createBeach(site);\n beaches.insert(lArc, newArc);\n\n if (!lArc && !rArc) return;\n\n if (lArc === rArc) {\n detachCircle(lArc);\n rArc = createBeach(lArc.site);\n beaches.insert(newArc, rArc);\n newArc.edge = rArc.edge = createEdge(lArc.site, newArc.site);\n attachCircle(lArc);\n attachCircle(rArc);\n return;\n }\n\n if (!rArc) { // && lArc\n newArc.edge = createEdge(lArc.site, newArc.site);\n return;\n }\n\n // else lArc !== rArc\n detachCircle(lArc);\n detachCircle(rArc);\n\n var lSite = lArc.site,\n ax = lSite[0],\n ay = lSite[1],\n bx = site[0] - ax,\n by = site[1] - ay,\n rSite = rArc.site,\n cx = rSite[0] - ax,\n cy = rSite[1] - ay,\n d = 2 * (bx * cy - by * cx),\n hb = bx * bx + by * by,\n hc = cx * cx + cy * cy,\n vertex = [(cy * hb - by * hc) / d + ax, (bx * hc - cx * hb) / d + ay];\n\n setEdgeEnd(rArc.edge, lSite, rSite, vertex);\n newArc.edge = createEdge(lSite, site, null, vertex);\n rArc.edge = createEdge(site, rSite, null, vertex);\n attachCircle(lArc);\n attachCircle(rArc);\n}\n\nfunction leftBreakPoint(arc, directrix) {\n var site = arc.site,\n rfocx = site[0],\n rfocy = site[1],\n pby2 = rfocy - directrix;\n\n if (!pby2) return rfocx;\n\n var lArc = arc.P;\n if (!lArc) return -Infinity;\n\n site = lArc.site;\n var lfocx = site[0],\n lfocy = site[1],\n plby2 = lfocy - directrix;\n\n if (!plby2) return lfocx;\n\n var hl = lfocx - rfocx,\n aby2 = 1 / pby2 - 1 / plby2,\n b = hl / plby2;\n\n if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\n\n return (rfocx + lfocx) / 2;\n}\n\nfunction rightBreakPoint(arc, directrix) {\n var rArc = arc.N;\n if (rArc) return leftBreakPoint(rArc, directrix);\n var site = arc.site;\n return site[1] === directrix ? site[0] : Infinity;\n}\n","import {addBeach, removeBeach} from \"./Beach\";\nimport {sortCellHalfedges, cellHalfedgeStart, clipCells} from \"./Cell\";\nimport {firstCircle} from \"./Circle\";\nimport {clipEdges} from \"./Edge\";\nimport RedBlackTree from \"./RedBlackTree\";\n\nexport var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var beaches;\nexport var cells;\nexport var circles;\nexport var edges;\n\nfunction triangleArea(a, b, c) {\n return (a[0] - c[0]) * (b[1] - a[1]) - (a[0] - b[0]) * (c[1] - a[1]);\n}\n\nfunction lexicographic(a, b) {\n return b[1] - a[1]\n || b[0] - a[0];\n}\n\nexport default function Diagram(sites, extent) {\n var site = sites.sort(lexicographic).pop(),\n x,\n y,\n circle;\n\n edges = [];\n cells = new Array(sites.length);\n beaches = new RedBlackTree;\n circles = new RedBlackTree;\n\n while (true) {\n circle = firstCircle;\n if (site && (!circle || site[1] < circle.y || (site[1] === circle.y && site[0] < circle.x))) {\n if (site[0] !== x || site[1] !== y) {\n addBeach(site);\n x = site[0], y = site[1];\n }\n site = sites.pop();\n } else if (circle) {\n removeBeach(circle.arc);\n } else {\n break;\n }\n }\n\n sortCellHalfedges();\n\n if (extent) {\n var x0 = +extent[0][0],\n y0 = +extent[0][1],\n x1 = +extent[1][0],\n y1 = +extent[1][1];\n clipEdges(x0, y0, x1, y1);\n clipCells(x0, y0, x1, y1);\n }\n\n this.edges = edges;\n this.cells = cells;\n\n beaches =\n circles =\n edges =\n cells = null;\n}\n\nDiagram.prototype = {\n constructor: Diagram,\n\n polygons: function() {\n var edges = this.edges;\n\n return this.cells.map(function(cell) {\n var polygon = cell.halfedges.map(function(i) { return cellHalfedgeStart(cell, edges[i]); });\n polygon.data = cell.site.data;\n return polygon;\n });\n },\n\n triangles: function() {\n var triangles = [],\n edges = this.edges;\n\n this.cells.forEach(function(cell, i) {\n if (!(m = (halfedges = cell.halfedges).length)) return;\n var site = cell.site,\n halfedges,\n j = -1,\n m,\n s0,\n e1 = edges[halfedges[m - 1]],\n s1 = e1.left === site ? e1.right : e1.left;\n\n while (++j < m) {\n s0 = s1;\n e1 = edges[halfedges[j]];\n s1 = e1.left === site ? e1.right : e1.left;\n if (s0 && s1 && i < s0.index && i < s1.index && triangleArea(site, s0, s1) < 0) {\n triangles.push([site.data, s0.data, s1.data]);\n }\n }\n });\n\n return triangles;\n },\n\n links: function() {\n return this.edges.filter(function(edge) {\n return edge.right;\n }).map(function(edge) {\n return {\n source: edge.left.data,\n target: edge.right.data\n };\n });\n },\n\n find: function(x, y, radius) {\n var that = this, i0, i1 = that._found || 0, n = that.cells.length, cell;\n\n // Use the previously-found cell, or start with an arbitrary one.\n while (!(cell = that.cells[i1])) if (++i1 >= n) return null;\n var dx = x - cell.site[0], dy = y - cell.site[1], d2 = dx * dx + dy * dy;\n\n // Traverse the half-edges to find a closer cell, if any.\n do {\n cell = that.cells[i0 = i1], i1 = null;\n cell.halfedges.forEach(function(e) {\n var edge = that.edges[e], v = edge.left;\n if ((v === cell.site || !v) && !(v = edge.right)) return;\n var vx = x - v[0], vy = y - v[1], v2 = vx * vx + vy * vy;\n if (v2 < d2) d2 = v2, i1 = v.index;\n });\n } while (i1 !== null);\n\n that._found = i0;\n\n return radius == null || d2 <= radius * radius ? cell.site : null;\n }\n}\n","import constant from \"./constant\";\nimport {x as pointX, y as pointY} from \"./point\";\nimport Diagram, {epsilon} from \"./Diagram\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n extent = null;\n\n function voronoi(data) {\n return new Diagram(data.map(function(d, i) {\n var s = [Math.round(x(d, i, data) / epsilon) * epsilon, Math.round(y(d, i, data) / epsilon) * epsilon];\n s.index = i;\n s.data = d;\n return s;\n }), extent);\n }\n\n voronoi.polygons = function(data) {\n return voronoi(data).polygons();\n };\n\n voronoi.links = function(data) {\n return voronoi(data).links();\n };\n\n voronoi.triangles = function(data) {\n return voronoi(data).triangles();\n };\n\n voronoi.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), voronoi) : x;\n };\n\n voronoi.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), voronoi) : y;\n };\n\n voronoi.extent = function(_) {\n return arguments.length ? (extent = _ == null ? null : [[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]], voronoi) : extent && [[extent[0][0], extent[0][1]], [extent[1][0], extent[1][1]]];\n };\n\n voronoi.size = function(_) {\n return arguments.length ? (extent = _ == null ? null : [[0, 0], [+_[0], +_[1]]], voronoi) : extent && [extent[1][0] - extent[0][0], extent[1][1] - extent[0][1]];\n };\n\n return voronoi;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function ZoomEvent(target, type, transform) {\n this.target = target;\n this.type = type;\n this.transform = transform;\n}\n","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolateZoom} from \"d3-interpolate\";\nimport {event, customEvent, select, mouse, touch} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport ZoomEvent from \"./event.js\";\nimport {Transform, identity} from \"./transform.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var e = this;\n if (e instanceof SVGElement) {\n e = e.ownerSVGElement || e;\n if (e.hasAttribute(\"viewBox\")) {\n e = e.viewBox.baseVal;\n return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n }\n return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n }\n return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\n\nfunction defaultTransform() {\n return this.__zoom || identity;\n}\n\nfunction defaultWheelDelta() {\n return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002);\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nfunction defaultConstrain(transform, extent, translateExtent) {\n var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],\n dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],\n dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],\n dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n return transform.translate(\n dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n );\n}\n\nexport default function() {\n var filter = defaultFilter,\n extent = defaultExtent,\n constrain = defaultConstrain,\n wheelDelta = defaultWheelDelta,\n touchable = defaultTouchable,\n scaleExtent = [0, Infinity],\n translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],\n duration = 250,\n interpolate = interpolateZoom,\n listeners = dispatch(\"start\", \"zoom\", \"end\"),\n touchstarting,\n touchending,\n touchDelay = 500,\n wheelDelay = 150,\n clickDistance2 = 0;\n\n function zoom(selection) {\n selection\n .property(\"__zoom\", defaultTransform)\n .on(\"wheel.zoom\", wheeled)\n .on(\"mousedown.zoom\", mousedowned)\n .on(\"dblclick.zoom\", dblclicked)\n .filter(touchable)\n .on(\"touchstart.zoom\", touchstarted)\n .on(\"touchmove.zoom\", touchmoved)\n .on(\"touchend.zoom touchcancel.zoom\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n zoom.transform = function(collection, transform, point) {\n var selection = collection.selection ? collection.selection() : collection;\n selection.property(\"__zoom\", defaultTransform);\n if (collection !== selection) {\n schedule(collection, transform, point);\n } else {\n selection.interrupt().each(function() {\n gesture(this, arguments)\n .start()\n .zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform)\n .end();\n });\n }\n };\n\n zoom.scaleBy = function(selection, k, p) {\n zoom.scaleTo(selection, function() {\n var k0 = this.__zoom.k,\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return k0 * k1;\n }, p);\n };\n\n zoom.scaleTo = function(selection, k, p) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t0 = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p,\n p1 = t0.invert(p0),\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n }, p);\n };\n\n zoom.translateBy = function(selection, x, y) {\n zoom.transform(selection, function() {\n return constrain(this.__zoom.translate(\n typeof x === \"function\" ? x.apply(this, arguments) : x,\n typeof y === \"function\" ? y.apply(this, arguments) : y\n ), extent.apply(this, arguments), translateExtent);\n });\n };\n\n zoom.translateTo = function(selection, x, y, p) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate(\n typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n typeof y === \"function\" ? -y.apply(this, arguments) : -y\n ), e, translateExtent);\n }, p);\n };\n\n function scale(transform, k) {\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n }\n\n function translate(transform, p0, p1) {\n var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n }\n\n function centroid(extent) {\n return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n }\n\n function schedule(transition, transform, point) {\n transition\n .on(\"start.zoom\", function() { gesture(this, arguments).start(); })\n .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).end(); })\n .tween(\"zoom\", function() {\n var that = this,\n args = arguments,\n g = gesture(that, args),\n e = extent.apply(that, args),\n p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point,\n w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n a = that.__zoom,\n b = typeof transform === \"function\" ? transform.apply(that, args) : transform,\n i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n return function(t) {\n if (t === 1) t = b; // Avoid rounding error on end.\n else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }\n g.zoom(null, t);\n };\n });\n }\n\n function gesture(that, args, clean) {\n return (!clean && that.__zooming) || new Gesture(that, args);\n }\n\n function Gesture(that, args) {\n this.that = that;\n this.args = args;\n this.active = 0;\n this.extent = extent.apply(that, args);\n this.taps = 0;\n }\n\n Gesture.prototype = {\n start: function() {\n if (++this.active === 1) {\n this.that.__zooming = this;\n this.emit(\"start\");\n }\n return this;\n },\n zoom: function(key, transform) {\n if (this.mouse && key !== \"mouse\") this.mouse[1] = transform.invert(this.mouse[0]);\n if (this.touch0 && key !== \"touch\") this.touch0[1] = transform.invert(this.touch0[0]);\n if (this.touch1 && key !== \"touch\") this.touch1[1] = transform.invert(this.touch1[0]);\n this.that.__zoom = transform;\n this.emit(\"zoom\");\n return this;\n },\n end: function() {\n if (--this.active === 0) {\n delete this.that.__zooming;\n this.emit(\"end\");\n }\n return this;\n },\n emit: function(type) {\n customEvent(new ZoomEvent(zoom, type, this.that.__zoom), listeners.apply, listeners, [type, this.that, this.args]);\n }\n };\n\n function wheeled() {\n if (!filter.apply(this, arguments)) return;\n var g = gesture(this, arguments),\n t = this.__zoom,\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),\n p = mouse(this);\n\n // If the mouse is in the same location as before, reuse it.\n // If there were recent wheel events, reset the wheel idle timeout.\n if (g.wheel) {\n if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n g.mouse[1] = t.invert(g.mouse[0] = p);\n }\n clearTimeout(g.wheel);\n }\n\n // If this wheel event won’t trigger a transform change, ignore it.\n else if (t.k === k) return;\n\n // Otherwise, capture the mouse point and location at the start.\n else {\n g.mouse = [p, t.invert(p)];\n interrupt(this);\n g.start();\n }\n\n noevent();\n g.wheel = setTimeout(wheelidled, wheelDelay);\n g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n\n function wheelidled() {\n g.wheel = null;\n g.end();\n }\n }\n\n function mousedowned() {\n if (touchending || !filter.apply(this, arguments)) return;\n var g = gesture(this, arguments, true),\n v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n p = mouse(this),\n x0 = event.clientX,\n y0 = event.clientY;\n\n dragDisable(event.view);\n nopropagation();\n g.mouse = [p, this.__zoom.invert(p)];\n interrupt(this);\n g.start();\n\n function mousemoved() {\n noevent();\n if (!g.moved) {\n var dx = event.clientX - x0, dy = event.clientY - y0;\n g.moved = dx * dx + dy * dy > clickDistance2;\n }\n g.zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = mouse(g.that), g.mouse[1]), g.extent, translateExtent));\n }\n\n function mouseupped() {\n v.on(\"mousemove.zoom mouseup.zoom\", null);\n dragEnable(event.view, g.moved);\n noevent();\n g.end();\n }\n }\n\n function dblclicked() {\n if (!filter.apply(this, arguments)) return;\n var t0 = this.__zoom,\n p0 = mouse(this),\n p1 = t0.invert(p0),\n k1 = t0.k * (event.shiftKey ? 0.5 : 2),\n t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, arguments), translateExtent);\n\n noevent();\n if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0);\n else select(this).call(zoom.transform, t1);\n }\n\n function touchstarted() {\n if (!filter.apply(this, arguments)) return;\n var touches = event.touches,\n n = touches.length,\n g = gesture(this, arguments, event.changedTouches.length === n),\n started, i, t, p;\n\n nopropagation();\n for (i = 0; i < n; ++i) {\n t = touches[i], p = touch(this, touches, t.identifier);\n p = [p, this.__zoom.invert(p), t.identifier];\n if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0;\n }\n\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n\n if (started) {\n if (g.taps < 2) touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n interrupt(this);\n g.start();\n }\n }\n\n function touchmoved() {\n if (!this.__zooming) return;\n var g = gesture(this, arguments),\n touches = event.changedTouches,\n n = touches.length, i, t, p, l;\n\n noevent();\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n g.taps = 0;\n for (i = 0; i < n; ++i) {\n t = touches[i], p = touch(this, touches, t.identifier);\n if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;\n else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;\n }\n t = g.that.__zoom;\n if (g.touch1) {\n var p0 = g.touch0[0], l0 = g.touch0[1],\n p1 = g.touch1[0], l1 = g.touch1[1],\n dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n t = scale(t, Math.sqrt(dp / dl));\n p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n }\n else if (g.touch0) p = g.touch0[0], l = g.touch0[1];\n else return;\n g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n }\n\n function touchended() {\n if (!this.__zooming) return;\n var g = gesture(this, arguments),\n touches = event.changedTouches,\n n = touches.length, i, t;\n\n nopropagation();\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, touchDelay);\n for (i = 0; i < n; ++i) {\n t = touches[i];\n if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;\n else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;\n }\n if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n else {\n g.end();\n // If this was a dbltap, reroute to the (optional) dblclick.zoom handler.\n if (g.taps === 2) {\n var p = select(this).on(\"dblclick.zoom\");\n if (p) p.apply(this, arguments);\n }\n }\n }\n\n zoom.wheelDelta = function(_) {\n return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom) : wheelDelta;\n };\n\n zoom.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), zoom) : filter;\n };\n\n zoom.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom) : touchable;\n };\n\n zoom.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n };\n\n zoom.scaleExtent = function(_) {\n return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];\n };\n\n zoom.translateExtent = function(_) {\n return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n };\n\n zoom.constrain = function(_) {\n return arguments.length ? (constrain = _, zoom) : constrain;\n };\n\n zoom.duration = function(_) {\n return arguments.length ? (duration = +_, zoom) : duration;\n };\n\n zoom.interpolate = function(_) {\n return arguments.length ? (interpolate = _, zoom) : interpolate;\n };\n\n zoom.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? zoom : value;\n };\n\n zoom.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);\n };\n\n return zoom;\n}\n","/*\nCopyright (c) 2012-2014 Chris Pettitt\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n*/\n\nmodule.exports = {\n graphlib: require(\"./lib/graphlib\"),\n\n layout: require(\"./lib/layout\"),\n debug: require(\"./lib/debug\"),\n util: {\n time: require(\"./lib/util\").time,\n notime: require(\"./lib/util\").notime\n },\n version: require(\"./lib/version\")\n};\n","\"use strict\";\n\nvar _ = require(\"./lodash\");\nvar greedyFAS = require(\"./greedy-fas\");\n\nmodule.exports = {\n run: run,\n undo: undo\n};\n\nfunction run(g) {\n var fas = (g.graph().acyclicer === \"greedy\"\n ? greedyFAS(g, weightFn(g))\n : dfsFAS(g));\n _.forEach(fas, function(e) {\n var label = g.edge(e);\n g.removeEdge(e);\n label.forwardName = e.name;\n label.reversed = true;\n g.setEdge(e.w, e.v, label, _.uniqueId(\"rev\"));\n });\n\n function weightFn(g) {\n return function(e) {\n return g.edge(e).weight;\n };\n }\n}\n\nfunction dfsFAS(g) {\n var fas = [];\n var stack = {};\n var visited = {};\n\n function dfs(v) {\n if (_.has(visited, v)) {\n return;\n }\n visited[v] = true;\n stack[v] = true;\n _.forEach(g.outEdges(v), function(e) {\n if (_.has(stack, e.w)) {\n fas.push(e);\n } else {\n dfs(e.w);\n }\n });\n delete stack[v];\n }\n\n _.forEach(g.nodes(), dfs);\n return fas;\n}\n\nfunction undo(g) {\n _.forEach(g.edges(), function(e) {\n var label = g.edge(e);\n if (label.reversed) {\n g.removeEdge(e);\n\n var forwardName = label.forwardName;\n delete label.reversed;\n delete label.forwardName;\n g.setEdge(e.w, e.v, label, forwardName);\n }\n });\n}\n","var _ = require(\"./lodash\");\nvar util = require(\"./util\");\n\nmodule.exports = addBorderSegments;\n\nfunction addBorderSegments(g) {\n function dfs(v) {\n var children = g.children(v);\n var node = g.node(v);\n if (children.length) {\n _.forEach(children, dfs);\n }\n\n if (_.has(node, \"minRank\")) {\n node.borderLeft = [];\n node.borderRight = [];\n for (var rank = node.minRank, maxRank = node.maxRank + 1;\n rank < maxRank;\n ++rank) {\n addBorderNode(g, \"borderLeft\", \"_bl\", v, node, rank);\n addBorderNode(g, \"borderRight\", \"_br\", v, node, rank);\n }\n }\n }\n\n _.forEach(g.children(), dfs);\n}\n\nfunction addBorderNode(g, prop, prefix, sg, sgNode, rank) {\n var label = { width: 0, height: 0, rank: rank, borderType: prop };\n var prev = sgNode[prop][rank - 1];\n var curr = util.addDummyNode(g, \"border\", label, prefix);\n sgNode[prop][rank] = curr;\n g.setParent(curr, sg);\n if (prev) {\n g.setEdge(prev, curr, { weight: 1 });\n }\n}\n","\"use strict\";\n\nvar _ = require(\"./lodash\");\n\nmodule.exports = {\n adjust: adjust,\n undo: undo\n};\n\nfunction adjust(g) {\n var rankDir = g.graph().rankdir.toLowerCase();\n if (rankDir === \"lr\" || rankDir === \"rl\") {\n swapWidthHeight(g);\n }\n}\n\nfunction undo(g) {\n var rankDir = g.graph().rankdir.toLowerCase();\n if (rankDir === \"bt\" || rankDir === \"rl\") {\n reverseY(g);\n }\n\n if (rankDir === \"lr\" || rankDir === \"rl\") {\n swapXY(g);\n swapWidthHeight(g);\n }\n}\n\nfunction swapWidthHeight(g) {\n _.forEach(g.nodes(), function(v) { swapWidthHeightOne(g.node(v)); });\n _.forEach(g.edges(), function(e) { swapWidthHeightOne(g.edge(e)); });\n}\n\nfunction swapWidthHeightOne(attrs) {\n var w = attrs.width;\n attrs.width = attrs.height;\n attrs.height = w;\n}\n\nfunction reverseY(g) {\n _.forEach(g.nodes(), function(v) { reverseYOne(g.node(v)); });\n\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n _.forEach(edge.points, reverseYOne);\n if (_.has(edge, \"y\")) {\n reverseYOne(edge);\n }\n });\n}\n\nfunction reverseYOne(attrs) {\n attrs.y = -attrs.y;\n}\n\nfunction swapXY(g) {\n _.forEach(g.nodes(), function(v) { swapXYOne(g.node(v)); });\n\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n _.forEach(edge.points, swapXYOne);\n if (_.has(edge, \"x\")) {\n swapXYOne(edge);\n }\n });\n}\n\nfunction swapXYOne(attrs) {\n var x = attrs.x;\n attrs.x = attrs.y;\n attrs.y = x;\n}\n","/*\n * Simple doubly linked list implementation derived from Cormen, et al.,\n * \"Introduction to Algorithms\".\n */\n\nmodule.exports = List;\n\nfunction List() {\n var sentinel = {};\n sentinel._next = sentinel._prev = sentinel;\n this._sentinel = sentinel;\n}\n\nList.prototype.dequeue = function() {\n var sentinel = this._sentinel;\n var entry = sentinel._prev;\n if (entry !== sentinel) {\n unlink(entry);\n return entry;\n }\n};\n\nList.prototype.enqueue = function(entry) {\n var sentinel = this._sentinel;\n if (entry._prev && entry._next) {\n unlink(entry);\n }\n entry._next = sentinel._next;\n sentinel._next._prev = entry;\n sentinel._next = entry;\n entry._prev = sentinel;\n};\n\nList.prototype.toString = function() {\n var strs = [];\n var sentinel = this._sentinel;\n var curr = sentinel._prev;\n while (curr !== sentinel) {\n strs.push(JSON.stringify(curr, filterOutLinks));\n curr = curr._prev;\n }\n return \"[\" + strs.join(\", \") + \"]\";\n};\n\nfunction unlink(entry) {\n entry._prev._next = entry._next;\n entry._next._prev = entry._prev;\n delete entry._next;\n delete entry._prev;\n}\n\nfunction filterOutLinks(k, v) {\n if (k !== \"_next\" && k !== \"_prev\") {\n return v;\n }\n}\n","var _ = require(\"./lodash\");\nvar util = require(\"./util\");\nvar Graph = require(\"./graphlib\").Graph;\n\nmodule.exports = {\n debugOrdering: debugOrdering\n};\n\n/* istanbul ignore next */\nfunction debugOrdering(g) {\n var layerMatrix = util.buildLayerMatrix(g);\n\n var h = new Graph({ compound: true, multigraph: true }).setGraph({});\n\n _.forEach(g.nodes(), function(v) {\n h.setNode(v, { label: v });\n h.setParent(v, \"layer\" + g.node(v).rank);\n });\n\n _.forEach(g.edges(), function(e) {\n h.setEdge(e.v, e.w, {}, e.name);\n });\n\n _.forEach(layerMatrix, function(layer, i) {\n var layerV = \"layer\" + i;\n h.setNode(layerV, { rank: \"same\" });\n _.reduce(layer, function(u, v) {\n h.setEdge(u, v, { style: \"invis\" });\n return v;\n });\n });\n\n return h;\n}\n","/* global window */\n\nvar graphlib;\n\nif (typeof require === \"function\") {\n try {\n graphlib = require(\"graphlib\");\n } catch (e) {\n // continue regardless of error\n }\n}\n\nif (!graphlib) {\n graphlib = window.graphlib;\n}\n\nmodule.exports = graphlib;\n","var _ = require(\"./lodash\");\nvar Graph = require(\"./graphlib\").Graph;\nvar List = require(\"./data/list\");\n\n/*\n * A greedy heuristic for finding a feedback arc set for a graph. A feedback\n * arc set is a set of edges that can be removed to make a graph acyclic.\n * The algorithm comes from: P. Eades, X. Lin, and W. F. Smyth, \"A fast and\n * effective heuristic for the feedback arc set problem.\" This implementation\n * adjusts that from the paper to allow for weighted edges.\n */\nmodule.exports = greedyFAS;\n\nvar DEFAULT_WEIGHT_FN = _.constant(1);\n\nfunction greedyFAS(g, weightFn) {\n if (g.nodeCount() <= 1) {\n return [];\n }\n var state = buildState(g, weightFn || DEFAULT_WEIGHT_FN);\n var results = doGreedyFAS(state.graph, state.buckets, state.zeroIdx);\n\n // Expand multi-edges\n return _.flatten(_.map(results, function(e) {\n return g.outEdges(e.v, e.w);\n }), true);\n}\n\nfunction doGreedyFAS(g, buckets, zeroIdx) {\n var results = [];\n var sources = buckets[buckets.length - 1];\n var sinks = buckets[0];\n\n var entry;\n while (g.nodeCount()) {\n while ((entry = sinks.dequeue())) { removeNode(g, buckets, zeroIdx, entry); }\n while ((entry = sources.dequeue())) { removeNode(g, buckets, zeroIdx, entry); }\n if (g.nodeCount()) {\n for (var i = buckets.length - 2; i > 0; --i) {\n entry = buckets[i].dequeue();\n if (entry) {\n results = results.concat(removeNode(g, buckets, zeroIdx, entry, true));\n break;\n }\n }\n }\n }\n\n return results;\n}\n\nfunction removeNode(g, buckets, zeroIdx, entry, collectPredecessors) {\n var results = collectPredecessors ? [] : undefined;\n\n _.forEach(g.inEdges(entry.v), function(edge) {\n var weight = g.edge(edge);\n var uEntry = g.node(edge.v);\n\n if (collectPredecessors) {\n results.push({ v: edge.v, w: edge.w });\n }\n\n uEntry.out -= weight;\n assignBucket(buckets, zeroIdx, uEntry);\n });\n\n _.forEach(g.outEdges(entry.v), function(edge) {\n var weight = g.edge(edge);\n var w = edge.w;\n var wEntry = g.node(w);\n wEntry[\"in\"] -= weight;\n assignBucket(buckets, zeroIdx, wEntry);\n });\n\n g.removeNode(entry.v);\n\n return results;\n}\n\nfunction buildState(g, weightFn) {\n var fasGraph = new Graph();\n var maxIn = 0;\n var maxOut = 0;\n\n _.forEach(g.nodes(), function(v) {\n fasGraph.setNode(v, { v: v, \"in\": 0, out: 0 });\n });\n\n // Aggregate weights on nodes, but also sum the weights across multi-edges\n // into a single edge for the fasGraph.\n _.forEach(g.edges(), function(e) {\n var prevWeight = fasGraph.edge(e.v, e.w) || 0;\n var weight = weightFn(e);\n var edgeWeight = prevWeight + weight;\n fasGraph.setEdge(e.v, e.w, edgeWeight);\n maxOut = Math.max(maxOut, fasGraph.node(e.v).out += weight);\n maxIn = Math.max(maxIn, fasGraph.node(e.w)[\"in\"] += weight);\n });\n\n var buckets = _.range(maxOut + maxIn + 3).map(function() { return new List(); });\n var zeroIdx = maxIn + 1;\n\n _.forEach(fasGraph.nodes(), function(v) {\n assignBucket(buckets, zeroIdx, fasGraph.node(v));\n });\n\n return { graph: fasGraph, buckets: buckets, zeroIdx: zeroIdx };\n}\n\nfunction assignBucket(buckets, zeroIdx, entry) {\n if (!entry.out) {\n buckets[0].enqueue(entry);\n } else if (!entry[\"in\"]) {\n buckets[buckets.length - 1].enqueue(entry);\n } else {\n buckets[entry.out - entry[\"in\"] + zeroIdx].enqueue(entry);\n }\n}\n","\"use strict\";\n\nvar _ = require(\"./lodash\");\nvar acyclic = require(\"./acyclic\");\nvar normalize = require(\"./normalize\");\nvar rank = require(\"./rank\");\nvar normalizeRanks = require(\"./util\").normalizeRanks;\nvar parentDummyChains = require(\"./parent-dummy-chains\");\nvar removeEmptyRanks = require(\"./util\").removeEmptyRanks;\nvar nestingGraph = require(\"./nesting-graph\");\nvar addBorderSegments = require(\"./add-border-segments\");\nvar coordinateSystem = require(\"./coordinate-system\");\nvar order = require(\"./order\");\nvar position = require(\"./position\");\nvar util = require(\"./util\");\nvar Graph = require(\"./graphlib\").Graph;\n\nmodule.exports = layout;\n\nfunction layout(g, opts) {\n var time = opts && opts.debugTiming ? util.time : util.notime;\n time(\"layout\", function() {\n var layoutGraph = \n time(\" buildLayoutGraph\", function() { return buildLayoutGraph(g); });\n time(\" runLayout\", function() { runLayout(layoutGraph, time); });\n time(\" updateInputGraph\", function() { updateInputGraph(g, layoutGraph); });\n });\n}\n\nfunction runLayout(g, time) {\n time(\" makeSpaceForEdgeLabels\", function() { makeSpaceForEdgeLabels(g); });\n time(\" removeSelfEdges\", function() { removeSelfEdges(g); });\n time(\" acyclic\", function() { acyclic.run(g); });\n time(\" nestingGraph.run\", function() { nestingGraph.run(g); });\n time(\" rank\", function() { rank(util.asNonCompoundGraph(g)); });\n time(\" injectEdgeLabelProxies\", function() { injectEdgeLabelProxies(g); });\n time(\" removeEmptyRanks\", function() { removeEmptyRanks(g); });\n time(\" nestingGraph.cleanup\", function() { nestingGraph.cleanup(g); });\n time(\" normalizeRanks\", function() { normalizeRanks(g); });\n time(\" assignRankMinMax\", function() { assignRankMinMax(g); });\n time(\" removeEdgeLabelProxies\", function() { removeEdgeLabelProxies(g); });\n time(\" normalize.run\", function() { normalize.run(g); });\n time(\" parentDummyChains\", function() { parentDummyChains(g); });\n time(\" addBorderSegments\", function() { addBorderSegments(g); });\n time(\" order\", function() { order(g); });\n time(\" insertSelfEdges\", function() { insertSelfEdges(g); });\n time(\" adjustCoordinateSystem\", function() { coordinateSystem.adjust(g); });\n time(\" position\", function() { position(g); });\n time(\" positionSelfEdges\", function() { positionSelfEdges(g); });\n time(\" removeBorderNodes\", function() { removeBorderNodes(g); });\n time(\" normalize.undo\", function() { normalize.undo(g); });\n time(\" fixupEdgeLabelCoords\", function() { fixupEdgeLabelCoords(g); });\n time(\" undoCoordinateSystem\", function() { coordinateSystem.undo(g); });\n time(\" translateGraph\", function() { translateGraph(g); });\n time(\" assignNodeIntersects\", function() { assignNodeIntersects(g); });\n time(\" reversePoints\", function() { reversePointsForReversedEdges(g); });\n time(\" acyclic.undo\", function() { acyclic.undo(g); });\n}\n\n/*\n * Copies final layout information from the layout graph back to the input\n * graph. This process only copies whitelisted attributes from the layout graph\n * to the input graph, so it serves as a good place to determine what\n * attributes can influence layout.\n */\nfunction updateInputGraph(inputGraph, layoutGraph) {\n _.forEach(inputGraph.nodes(), function(v) {\n var inputLabel = inputGraph.node(v);\n var layoutLabel = layoutGraph.node(v);\n\n if (inputLabel) {\n inputLabel.x = layoutLabel.x;\n inputLabel.y = layoutLabel.y;\n\n if (layoutGraph.children(v).length) {\n inputLabel.width = layoutLabel.width;\n inputLabel.height = layoutLabel.height;\n }\n }\n });\n\n _.forEach(inputGraph.edges(), function(e) {\n var inputLabel = inputGraph.edge(e);\n var layoutLabel = layoutGraph.edge(e);\n\n inputLabel.points = layoutLabel.points;\n if (_.has(layoutLabel, \"x\")) {\n inputLabel.x = layoutLabel.x;\n inputLabel.y = layoutLabel.y;\n }\n });\n\n inputGraph.graph().width = layoutGraph.graph().width;\n inputGraph.graph().height = layoutGraph.graph().height;\n}\n\nvar graphNumAttrs = [\"nodesep\", \"edgesep\", \"ranksep\", \"marginx\", \"marginy\"];\nvar graphDefaults = { ranksep: 50, edgesep: 20, nodesep: 50, rankdir: \"tb\" };\nvar graphAttrs = [\"acyclicer\", \"ranker\", \"rankdir\", \"align\"];\nvar nodeNumAttrs = [\"width\", \"height\"];\nvar nodeDefaults = { width: 0, height: 0 };\nvar edgeNumAttrs = [\"minlen\", \"weight\", \"width\", \"height\", \"labeloffset\"];\nvar edgeDefaults = {\n minlen: 1, weight: 1, width: 0, height: 0,\n labeloffset: 10, labelpos: \"r\"\n};\nvar edgeAttrs = [\"labelpos\"];\n\n/*\n * Constructs a new graph from the input graph, which can be used for layout.\n * This process copies only whitelisted attributes from the input graph to the\n * layout graph. Thus this function serves as a good place to determine what\n * attributes can influence layout.\n */\nfunction buildLayoutGraph(inputGraph) {\n var g = new Graph({ multigraph: true, compound: true });\n var graph = canonicalize(inputGraph.graph());\n\n g.setGraph(_.merge({},\n graphDefaults,\n selectNumberAttrs(graph, graphNumAttrs),\n _.pick(graph, graphAttrs)));\n\n _.forEach(inputGraph.nodes(), function(v) {\n var node = canonicalize(inputGraph.node(v));\n g.setNode(v, _.defaults(selectNumberAttrs(node, nodeNumAttrs), nodeDefaults));\n g.setParent(v, inputGraph.parent(v));\n });\n\n _.forEach(inputGraph.edges(), function(e) {\n var edge = canonicalize(inputGraph.edge(e));\n g.setEdge(e, _.merge({},\n edgeDefaults,\n selectNumberAttrs(edge, edgeNumAttrs),\n _.pick(edge, edgeAttrs)));\n });\n\n return g;\n}\n\n/*\n * This idea comes from the Gansner paper: to account for edge labels in our\n * layout we split each rank in half by doubling minlen and halving ranksep.\n * Then we can place labels at these mid-points between nodes.\n *\n * We also add some minimal padding to the width to push the label for the edge\n * away from the edge itself a bit.\n */\nfunction makeSpaceForEdgeLabels(g) {\n var graph = g.graph();\n graph.ranksep /= 2;\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n edge.minlen *= 2;\n if (edge.labelpos.toLowerCase() !== \"c\") {\n if (graph.rankdir === \"TB\" || graph.rankdir === \"BT\") {\n edge.width += edge.labeloffset;\n } else {\n edge.height += edge.labeloffset;\n }\n }\n });\n}\n\n/*\n * Creates temporary dummy nodes that capture the rank in which each edge's\n * label is going to, if it has one of non-zero width and height. We do this\n * so that we can safely remove empty ranks while preserving balance for the\n * label's position.\n */\nfunction injectEdgeLabelProxies(g) {\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n if (edge.width && edge.height) {\n var v = g.node(e.v);\n var w = g.node(e.w);\n var label = { rank: (w.rank - v.rank) / 2 + v.rank, e: e };\n util.addDummyNode(g, \"edge-proxy\", label, \"_ep\");\n }\n });\n}\n\nfunction assignRankMinMax(g) {\n var maxRank = 0;\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n if (node.borderTop) {\n node.minRank = g.node(node.borderTop).rank;\n node.maxRank = g.node(node.borderBottom).rank;\n maxRank = _.max(maxRank, node.maxRank);\n }\n });\n g.graph().maxRank = maxRank;\n}\n\nfunction removeEdgeLabelProxies(g) {\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n if (node.dummy === \"edge-proxy\") {\n g.edge(node.e).labelRank = node.rank;\n g.removeNode(v);\n }\n });\n}\n\nfunction translateGraph(g) {\n var minX = Number.POSITIVE_INFINITY;\n var maxX = 0;\n var minY = Number.POSITIVE_INFINITY;\n var maxY = 0;\n var graphLabel = g.graph();\n var marginX = graphLabel.marginx || 0;\n var marginY = graphLabel.marginy || 0;\n\n function getExtremes(attrs) {\n var x = attrs.x;\n var y = attrs.y;\n var w = attrs.width;\n var h = attrs.height;\n minX = Math.min(minX, x - w / 2);\n maxX = Math.max(maxX, x + w / 2);\n minY = Math.min(minY, y - h / 2);\n maxY = Math.max(maxY, y + h / 2);\n }\n\n _.forEach(g.nodes(), function(v) { getExtremes(g.node(v)); });\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n if (_.has(edge, \"x\")) {\n getExtremes(edge);\n }\n });\n\n minX -= marginX;\n minY -= marginY;\n\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n node.x -= minX;\n node.y -= minY;\n });\n\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n _.forEach(edge.points, function(p) {\n p.x -= minX;\n p.y -= minY;\n });\n if (_.has(edge, \"x\")) { edge.x -= minX; }\n if (_.has(edge, \"y\")) { edge.y -= minY; }\n });\n\n graphLabel.width = maxX - minX + marginX;\n graphLabel.height = maxY - minY + marginY;\n}\n\nfunction assignNodeIntersects(g) {\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n var nodeV = g.node(e.v);\n var nodeW = g.node(e.w);\n var p1, p2;\n if (!edge.points) {\n edge.points = [];\n p1 = nodeW;\n p2 = nodeV;\n } else {\n p1 = edge.points[0];\n p2 = edge.points[edge.points.length - 1];\n }\n edge.points.unshift(util.intersectRect(nodeV, p1));\n edge.points.push(util.intersectRect(nodeW, p2));\n });\n}\n\nfunction fixupEdgeLabelCoords(g) {\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n if (_.has(edge, \"x\")) {\n if (edge.labelpos === \"l\" || edge.labelpos === \"r\") {\n edge.width -= edge.labeloffset;\n }\n switch (edge.labelpos) {\n case \"l\": edge.x -= edge.width / 2 + edge.labeloffset; break;\n case \"r\": edge.x += edge.width / 2 + edge.labeloffset; break;\n }\n }\n });\n}\n\nfunction reversePointsForReversedEdges(g) {\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n if (edge.reversed) {\n edge.points.reverse();\n }\n });\n}\n\nfunction removeBorderNodes(g) {\n _.forEach(g.nodes(), function(v) {\n if (g.children(v).length) {\n var node = g.node(v);\n var t = g.node(node.borderTop);\n var b = g.node(node.borderBottom);\n var l = g.node(_.last(node.borderLeft));\n var r = g.node(_.last(node.borderRight));\n\n node.width = Math.abs(r.x - l.x);\n node.height = Math.abs(b.y - t.y);\n node.x = l.x + node.width / 2;\n node.y = t.y + node.height / 2;\n }\n });\n\n _.forEach(g.nodes(), function(v) {\n if (g.node(v).dummy === \"border\") {\n g.removeNode(v);\n }\n });\n}\n\nfunction removeSelfEdges(g) {\n _.forEach(g.edges(), function(e) {\n if (e.v === e.w) {\n var node = g.node(e.v);\n if (!node.selfEdges) {\n node.selfEdges = [];\n }\n node.selfEdges.push({ e: e, label: g.edge(e) });\n g.removeEdge(e);\n }\n });\n}\n\nfunction insertSelfEdges(g) {\n var layers = util.buildLayerMatrix(g);\n _.forEach(layers, function(layer) {\n var orderShift = 0;\n _.forEach(layer, function(v, i) {\n var node = g.node(v);\n node.order = i + orderShift;\n _.forEach(node.selfEdges, function(selfEdge) {\n util.addDummyNode(g, \"selfedge\", {\n width: selfEdge.label.width,\n height: selfEdge.label.height,\n rank: node.rank,\n order: i + (++orderShift),\n e: selfEdge.e,\n label: selfEdge.label\n }, \"_se\");\n });\n delete node.selfEdges;\n });\n });\n}\n\nfunction positionSelfEdges(g) {\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n if (node.dummy === \"selfedge\") {\n var selfNode = g.node(node.e.v);\n var x = selfNode.x + selfNode.width / 2;\n var y = selfNode.y;\n var dx = node.x - x;\n var dy = selfNode.height / 2;\n g.setEdge(node.e, node.label);\n g.removeNode(v);\n node.label.points = [\n { x: x + 2 * dx / 3, y: y - dy },\n { x: x + 5 * dx / 6, y: y - dy },\n { x: x + dx , y: y },\n { x: x + 5 * dx / 6, y: y + dy },\n { x: x + 2 * dx / 3, y: y + dy }\n ];\n node.label.x = node.x;\n node.label.y = node.y;\n }\n });\n}\n\nfunction selectNumberAttrs(obj, attrs) {\n return _.mapValues(_.pick(obj, attrs), Number);\n}\n\nfunction canonicalize(attrs) {\n var newAttrs = {};\n _.forEach(attrs, function(v, k) {\n newAttrs[k.toLowerCase()] = v;\n });\n return newAttrs;\n}\n","/* global window */\n\nvar lodash;\n\nif (typeof require === \"function\") {\n try {\n lodash = {\n cloneDeep: require(\"lodash/cloneDeep\"),\n constant: require(\"lodash/constant\"),\n defaults: require(\"lodash/defaults\"),\n each: require(\"lodash/each\"),\n filter: require(\"lodash/filter\"),\n find: require(\"lodash/find\"),\n flatten: require(\"lodash/flatten\"),\n forEach: require(\"lodash/forEach\"),\n forIn: require(\"lodash/forIn\"),\n has: require(\"lodash/has\"),\n isUndefined: require(\"lodash/isUndefined\"),\n last: require(\"lodash/last\"),\n map: require(\"lodash/map\"),\n mapValues: require(\"lodash/mapValues\"),\n max: require(\"lodash/max\"),\n merge: require(\"lodash/merge\"),\n min: require(\"lodash/min\"),\n minBy: require(\"lodash/minBy\"),\n now: require(\"lodash/now\"),\n pick: require(\"lodash/pick\"),\n range: require(\"lodash/range\"),\n reduce: require(\"lodash/reduce\"),\n sortBy: require(\"lodash/sortBy\"),\n uniqueId: require(\"lodash/uniqueId\"),\n values: require(\"lodash/values\"),\n zipObject: require(\"lodash/zipObject\"),\n };\n } catch (e) {\n // continue regardless of error\n }\n}\n\nif (!lodash) {\n lodash = window._;\n}\n\nmodule.exports = lodash;\n","var _ = require(\"./lodash\");\nvar util = require(\"./util\");\n\nmodule.exports = {\n run: run,\n cleanup: cleanup\n};\n\n/*\n * A nesting graph creates dummy nodes for the tops and bottoms of subgraphs,\n * adds appropriate edges to ensure that all cluster nodes are placed between\n * these boundries, and ensures that the graph is connected.\n *\n * In addition we ensure, through the use of the minlen property, that nodes\n * and subgraph border nodes to not end up on the same rank.\n *\n * Preconditions:\n *\n * 1. Input graph is a DAG\n * 2. Nodes in the input graph has a minlen attribute\n *\n * Postconditions:\n *\n * 1. Input graph is connected.\n * 2. Dummy nodes are added for the tops and bottoms of subgraphs.\n * 3. The minlen attribute for nodes is adjusted to ensure nodes do not\n * get placed on the same rank as subgraph border nodes.\n *\n * The nesting graph idea comes from Sander, \"Layout of Compound Directed\n * Graphs.\"\n */\nfunction run(g) {\n var root = util.addDummyNode(g, \"root\", {}, \"_root\");\n var depths = treeDepths(g);\n var height = _.max(_.values(depths)) - 1; // Note: depths is an Object not an array\n var nodeSep = 2 * height + 1;\n\n g.graph().nestingRoot = root;\n\n // Multiply minlen by nodeSep to align nodes on non-border ranks.\n _.forEach(g.edges(), function(e) { g.edge(e).minlen *= nodeSep; });\n\n // Calculate a weight that is sufficient to keep subgraphs vertically compact\n var weight = sumWeights(g) + 1;\n\n // Create border nodes and link them up\n _.forEach(g.children(), function(child) {\n dfs(g, root, nodeSep, weight, height, depths, child);\n });\n\n // Save the multiplier for node layers for later removal of empty border\n // layers.\n g.graph().nodeRankFactor = nodeSep;\n}\n\nfunction dfs(g, root, nodeSep, weight, height, depths, v) {\n var children = g.children(v);\n if (!children.length) {\n if (v !== root) {\n g.setEdge(root, v, { weight: 0, minlen: nodeSep });\n }\n return;\n }\n\n var top = util.addBorderNode(g, \"_bt\");\n var bottom = util.addBorderNode(g, \"_bb\");\n var label = g.node(v);\n\n g.setParent(top, v);\n label.borderTop = top;\n g.setParent(bottom, v);\n label.borderBottom = bottom;\n\n _.forEach(children, function(child) {\n dfs(g, root, nodeSep, weight, height, depths, child);\n\n var childNode = g.node(child);\n var childTop = childNode.borderTop ? childNode.borderTop : child;\n var childBottom = childNode.borderBottom ? childNode.borderBottom : child;\n var thisWeight = childNode.borderTop ? weight : 2 * weight;\n var minlen = childTop !== childBottom ? 1 : height - depths[v] + 1;\n\n g.setEdge(top, childTop, {\n weight: thisWeight,\n minlen: minlen,\n nestingEdge: true\n });\n\n g.setEdge(childBottom, bottom, {\n weight: thisWeight,\n minlen: minlen,\n nestingEdge: true\n });\n });\n\n if (!g.parent(v)) {\n g.setEdge(root, top, { weight: 0, minlen: height + depths[v] });\n }\n}\n\nfunction treeDepths(g) {\n var depths = {};\n function dfs(v, depth) {\n var children = g.children(v);\n if (children && children.length) {\n _.forEach(children, function(child) {\n dfs(child, depth + 1);\n });\n }\n depths[v] = depth;\n }\n _.forEach(g.children(), function(v) { dfs(v, 1); });\n return depths;\n}\n\nfunction sumWeights(g) {\n return _.reduce(g.edges(), function(acc, e) {\n return acc + g.edge(e).weight;\n }, 0);\n}\n\nfunction cleanup(g) {\n var graphLabel = g.graph();\n g.removeNode(graphLabel.nestingRoot);\n delete graphLabel.nestingRoot;\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n if (edge.nestingEdge) {\n g.removeEdge(e);\n }\n });\n}\n","\"use strict\";\n\nvar _ = require(\"./lodash\");\nvar util = require(\"./util\");\n\nmodule.exports = {\n run: run,\n undo: undo\n};\n\n/*\n * Breaks any long edges in the graph into short segments that span 1 layer\n * each. This operation is undoable with the denormalize function.\n *\n * Pre-conditions:\n *\n * 1. The input graph is a DAG.\n * 2. Each node in the graph has a \"rank\" property.\n *\n * Post-condition:\n *\n * 1. All edges in the graph have a length of 1.\n * 2. Dummy nodes are added where edges have been split into segments.\n * 3. The graph is augmented with a \"dummyChains\" attribute which contains\n * the first dummy in each chain of dummy nodes produced.\n */\nfunction run(g) {\n g.graph().dummyChains = [];\n _.forEach(g.edges(), function(edge) { normalizeEdge(g, edge); });\n}\n\nfunction normalizeEdge(g, e) {\n var v = e.v;\n var vRank = g.node(v).rank;\n var w = e.w;\n var wRank = g.node(w).rank;\n var name = e.name;\n var edgeLabel = g.edge(e);\n var labelRank = edgeLabel.labelRank;\n\n if (wRank === vRank + 1) return;\n\n g.removeEdge(e);\n\n var dummy, attrs, i;\n for (i = 0, ++vRank; vRank < wRank; ++i, ++vRank) {\n edgeLabel.points = [];\n attrs = {\n width: 0, height: 0,\n edgeLabel: edgeLabel, edgeObj: e,\n rank: vRank\n };\n dummy = util.addDummyNode(g, \"edge\", attrs, \"_d\");\n if (vRank === labelRank) {\n attrs.width = edgeLabel.width;\n attrs.height = edgeLabel.height;\n attrs.dummy = \"edge-label\";\n attrs.labelpos = edgeLabel.labelpos;\n }\n g.setEdge(v, dummy, { weight: edgeLabel.weight }, name);\n if (i === 0) {\n g.graph().dummyChains.push(dummy);\n }\n v = dummy;\n }\n\n g.setEdge(v, w, { weight: edgeLabel.weight }, name);\n}\n\nfunction undo(g) {\n _.forEach(g.graph().dummyChains, function(v) {\n var node = g.node(v);\n var origLabel = node.edgeLabel;\n var w;\n g.setEdge(node.edgeObj, origLabel);\n while (node.dummy) {\n w = g.successors(v)[0];\n g.removeNode(v);\n origLabel.points.push({ x: node.x, y: node.y });\n if (node.dummy === \"edge-label\") {\n origLabel.x = node.x;\n origLabel.y = node.y;\n origLabel.width = node.width;\n origLabel.height = node.height;\n }\n v = w;\n node = g.node(v);\n }\n });\n}\n","var _ = require(\"../lodash\");\n\nmodule.exports = addSubgraphConstraints;\n\nfunction addSubgraphConstraints(g, cg, vs) {\n var prev = {},\n rootPrev;\n\n _.forEach(vs, function(v) {\n var child = g.parent(v),\n parent,\n prevChild;\n while (child) {\n parent = g.parent(child);\n if (parent) {\n prevChild = prev[parent];\n prev[parent] = child;\n } else {\n prevChild = rootPrev;\n rootPrev = child;\n }\n if (prevChild && prevChild !== child) {\n cg.setEdge(prevChild, child);\n return;\n }\n child = parent;\n }\n });\n\n /*\n function dfs(v) {\n var children = v ? g.children(v) : g.children();\n if (children.length) {\n var min = Number.POSITIVE_INFINITY,\n subgraphs = [];\n _.each(children, function(child) {\n var childMin = dfs(child);\n if (g.children(child).length) {\n subgraphs.push({ v: child, order: childMin });\n }\n min = Math.min(min, childMin);\n });\n _.reduce(_.sortBy(subgraphs, \"order\"), function(prev, curr) {\n cg.setEdge(prev.v, curr.v);\n return curr;\n });\n return min;\n }\n return g.node(v).order;\n }\n dfs(undefined);\n */\n}\n","var _ = require(\"../lodash\");\n\nmodule.exports = barycenter;\n\nfunction barycenter(g, movable) {\n return _.map(movable, function(v) {\n var inV = g.inEdges(v);\n if (!inV.length) {\n return { v: v };\n } else {\n var result = _.reduce(inV, function(acc, e) {\n var edge = g.edge(e),\n nodeU = g.node(e.v);\n return {\n sum: acc.sum + (edge.weight * nodeU.order),\n weight: acc.weight + edge.weight\n };\n }, { sum: 0, weight: 0 });\n\n return {\n v: v,\n barycenter: result.sum / result.weight,\n weight: result.weight\n };\n }\n });\n}\n\n","var _ = require(\"../lodash\");\nvar Graph = require(\"../graphlib\").Graph;\n\nmodule.exports = buildLayerGraph;\n\n/*\n * Constructs a graph that can be used to sort a layer of nodes. The graph will\n * contain all base and subgraph nodes from the request layer in their original\n * hierarchy and any edges that are incident on these nodes and are of the type\n * requested by the \"relationship\" parameter.\n *\n * Nodes from the requested rank that do not have parents are assigned a root\n * node in the output graph, which is set in the root graph attribute. This\n * makes it easy to walk the hierarchy of movable nodes during ordering.\n *\n * Pre-conditions:\n *\n * 1. Input graph is a DAG\n * 2. Base nodes in the input graph have a rank attribute\n * 3. Subgraph nodes in the input graph has minRank and maxRank attributes\n * 4. Edges have an assigned weight\n *\n * Post-conditions:\n *\n * 1. Output graph has all nodes in the movable rank with preserved\n * hierarchy.\n * 2. Root nodes in the movable layer are made children of the node\n * indicated by the root attribute of the graph.\n * 3. Non-movable nodes incident on movable nodes, selected by the\n * relationship parameter, are included in the graph (without hierarchy).\n * 4. Edges incident on movable nodes, selected by the relationship\n * parameter, are added to the output graph.\n * 5. The weights for copied edges are aggregated as need, since the output\n * graph is not a multi-graph.\n */\nfunction buildLayerGraph(g, rank, relationship) {\n var root = createRootNode(g),\n result = new Graph({ compound: true }).setGraph({ root: root })\n .setDefaultNodeLabel(function(v) { return g.node(v); });\n\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v),\n parent = g.parent(v);\n\n if (node.rank === rank || node.minRank <= rank && rank <= node.maxRank) {\n result.setNode(v);\n result.setParent(v, parent || root);\n\n // This assumes we have only short edges!\n _.forEach(g[relationship](v), function(e) {\n var u = e.v === v ? e.w : e.v,\n edge = result.edge(u, v),\n weight = !_.isUndefined(edge) ? edge.weight : 0;\n result.setEdge(u, v, { weight: g.edge(e).weight + weight });\n });\n\n if (_.has(node, \"minRank\")) {\n result.setNode(v, {\n borderLeft: node.borderLeft[rank],\n borderRight: node.borderRight[rank]\n });\n }\n }\n });\n\n return result;\n}\n\nfunction createRootNode(g) {\n var v;\n while (g.hasNode((v = _.uniqueId(\"_root\"))));\n return v;\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\n\nmodule.exports = crossCount;\n\n/*\n * A function that takes a layering (an array of layers, each with an array of\n * ordererd nodes) and a graph and returns a weighted crossing count.\n *\n * Pre-conditions:\n *\n * 1. Input graph must be simple (not a multigraph), directed, and include\n * only simple edges.\n * 2. Edges in the input graph must have assigned weights.\n *\n * Post-conditions:\n *\n * 1. The graph and layering matrix are left unchanged.\n *\n * This algorithm is derived from Barth, et al., \"Bilayer Cross Counting.\"\n */\nfunction crossCount(g, layering) {\n var cc = 0;\n for (var i = 1; i < layering.length; ++i) {\n cc += twoLayerCrossCount(g, layering[i-1], layering[i]);\n }\n return cc;\n}\n\nfunction twoLayerCrossCount(g, northLayer, southLayer) {\n // Sort all of the edges between the north and south layers by their position\n // in the north layer and then the south. Map these edges to the position of\n // their head in the south layer.\n var southPos = _.zipObject(southLayer,\n _.map(southLayer, function (v, i) { return i; }));\n var southEntries = _.flatten(_.map(northLayer, function(v) {\n return _.sortBy(_.map(g.outEdges(v), function(e) {\n return { pos: southPos[e.w], weight: g.edge(e).weight };\n }), \"pos\");\n }), true);\n\n // Build the accumulator tree\n var firstIndex = 1;\n while (firstIndex < southLayer.length) firstIndex <<= 1;\n var treeSize = 2 * firstIndex - 1;\n firstIndex -= 1;\n var tree = _.map(new Array(treeSize), function() { return 0; });\n\n // Calculate the weighted crossings\n var cc = 0;\n _.forEach(southEntries.forEach(function(entry) {\n var index = entry.pos + firstIndex;\n tree[index] += entry.weight;\n var weightSum = 0;\n while (index > 0) {\n if (index % 2) {\n weightSum += tree[index + 1];\n }\n index = (index - 1) >> 1;\n tree[index] += entry.weight;\n }\n cc += entry.weight * weightSum;\n }));\n\n return cc;\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\nvar initOrder = require(\"./init-order\");\nvar crossCount = require(\"./cross-count\");\nvar sortSubgraph = require(\"./sort-subgraph\");\nvar buildLayerGraph = require(\"./build-layer-graph\");\nvar addSubgraphConstraints = require(\"./add-subgraph-constraints\");\nvar Graph = require(\"../graphlib\").Graph;\nvar util = require(\"../util\");\n\nmodule.exports = order;\n\n/*\n * Applies heuristics to minimize edge crossings in the graph and sets the best\n * order solution as an order attribute on each node.\n *\n * Pre-conditions:\n *\n * 1. Graph must be DAG\n * 2. Graph nodes must be objects with a \"rank\" attribute\n * 3. Graph edges must have the \"weight\" attribute\n *\n * Post-conditions:\n *\n * 1. Graph nodes will have an \"order\" attribute based on the results of the\n * algorithm.\n */\nfunction order(g) {\n var maxRank = util.maxRank(g),\n downLayerGraphs = buildLayerGraphs(g, _.range(1, maxRank + 1), \"inEdges\"),\n upLayerGraphs = buildLayerGraphs(g, _.range(maxRank - 1, -1, -1), \"outEdges\");\n\n var layering = initOrder(g);\n assignOrder(g, layering);\n\n var bestCC = Number.POSITIVE_INFINITY,\n best;\n\n for (var i = 0, lastBest = 0; lastBest < 4; ++i, ++lastBest) {\n sweepLayerGraphs(i % 2 ? downLayerGraphs : upLayerGraphs, i % 4 >= 2);\n\n layering = util.buildLayerMatrix(g);\n var cc = crossCount(g, layering);\n if (cc < bestCC) {\n lastBest = 0;\n best = _.cloneDeep(layering);\n bestCC = cc;\n }\n }\n\n assignOrder(g, best);\n}\n\nfunction buildLayerGraphs(g, ranks, relationship) {\n return _.map(ranks, function(rank) {\n return buildLayerGraph(g, rank, relationship);\n });\n}\n\nfunction sweepLayerGraphs(layerGraphs, biasRight) {\n var cg = new Graph();\n _.forEach(layerGraphs, function(lg) {\n var root = lg.graph().root;\n var sorted = sortSubgraph(lg, root, cg, biasRight);\n _.forEach(sorted.vs, function(v, i) {\n lg.node(v).order = i;\n });\n addSubgraphConstraints(lg, cg, sorted.vs);\n });\n}\n\nfunction assignOrder(g, layering) {\n _.forEach(layering, function(layer) {\n _.forEach(layer, function(v, i) {\n g.node(v).order = i;\n });\n });\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\n\nmodule.exports = initOrder;\n\n/*\n * Assigns an initial order value for each node by performing a DFS search\n * starting from nodes in the first rank. Nodes are assigned an order in their\n * rank as they are first visited.\n *\n * This approach comes from Gansner, et al., \"A Technique for Drawing Directed\n * Graphs.\"\n *\n * Returns a layering matrix with an array per layer and each layer sorted by\n * the order of its nodes.\n */\nfunction initOrder(g) {\n var visited = {};\n var simpleNodes = _.filter(g.nodes(), function(v) {\n return !g.children(v).length;\n });\n var maxRank = _.max(_.map(simpleNodes, function(v) { return g.node(v).rank; }));\n var layers = _.map(_.range(maxRank + 1), function() { return []; });\n\n function dfs(v) {\n if (_.has(visited, v)) return;\n visited[v] = true;\n var node = g.node(v);\n layers[node.rank].push(v);\n _.forEach(g.successors(v), dfs);\n }\n\n var orderedVs = _.sortBy(simpleNodes, function(v) { return g.node(v).rank; });\n _.forEach(orderedVs, dfs);\n\n return layers;\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\n\nmodule.exports = resolveConflicts;\n\n/*\n * Given a list of entries of the form {v, barycenter, weight} and a\n * constraint graph this function will resolve any conflicts between the\n * constraint graph and the barycenters for the entries. If the barycenters for\n * an entry would violate a constraint in the constraint graph then we coalesce\n * the nodes in the conflict into a new node that respects the contraint and\n * aggregates barycenter and weight information.\n *\n * This implementation is based on the description in Forster, \"A Fast and\n * Simple Hueristic for Constrained Two-Level Crossing Reduction,\" thought it\n * differs in some specific details.\n *\n * Pre-conditions:\n *\n * 1. Each entry has the form {v, barycenter, weight}, or if the node has\n * no barycenter, then {v}.\n *\n * Returns:\n *\n * A new list of entries of the form {vs, i, barycenter, weight}. The list\n * `vs` may either be a singleton or it may be an aggregation of nodes\n * ordered such that they do not violate constraints from the constraint\n * graph. The property `i` is the lowest original index of any of the\n * elements in `vs`.\n */\nfunction resolveConflicts(entries, cg) {\n var mappedEntries = {};\n _.forEach(entries, function(entry, i) {\n var tmp = mappedEntries[entry.v] = {\n indegree: 0,\n \"in\": [],\n out: [],\n vs: [entry.v],\n i: i\n };\n if (!_.isUndefined(entry.barycenter)) {\n tmp.barycenter = entry.barycenter;\n tmp.weight = entry.weight;\n }\n });\n\n _.forEach(cg.edges(), function(e) {\n var entryV = mappedEntries[e.v];\n var entryW = mappedEntries[e.w];\n if (!_.isUndefined(entryV) && !_.isUndefined(entryW)) {\n entryW.indegree++;\n entryV.out.push(mappedEntries[e.w]);\n }\n });\n\n var sourceSet = _.filter(mappedEntries, function(entry) {\n return !entry.indegree;\n });\n\n return doResolveConflicts(sourceSet);\n}\n\nfunction doResolveConflicts(sourceSet) {\n var entries = [];\n\n function handleIn(vEntry) {\n return function(uEntry) {\n if (uEntry.merged) {\n return;\n }\n if (_.isUndefined(uEntry.barycenter) ||\n _.isUndefined(vEntry.barycenter) ||\n uEntry.barycenter >= vEntry.barycenter) {\n mergeEntries(vEntry, uEntry);\n }\n };\n }\n\n function handleOut(vEntry) {\n return function(wEntry) {\n wEntry[\"in\"].push(vEntry);\n if (--wEntry.indegree === 0) {\n sourceSet.push(wEntry);\n }\n };\n }\n\n while (sourceSet.length) {\n var entry = sourceSet.pop();\n entries.push(entry);\n _.forEach(entry[\"in\"].reverse(), handleIn(entry));\n _.forEach(entry.out, handleOut(entry));\n }\n\n return _.map(_.filter(entries, function(entry) { return !entry.merged; }),\n function(entry) {\n return _.pick(entry, [\"vs\", \"i\", \"barycenter\", \"weight\"]);\n });\n\n}\n\nfunction mergeEntries(target, source) {\n var sum = 0;\n var weight = 0;\n\n if (target.weight) {\n sum += target.barycenter * target.weight;\n weight += target.weight;\n }\n\n if (source.weight) {\n sum += source.barycenter * source.weight;\n weight += source.weight;\n }\n\n target.vs = source.vs.concat(target.vs);\n target.barycenter = sum / weight;\n target.weight = weight;\n target.i = Math.min(source.i, target.i);\n source.merged = true;\n}\n","var _ = require(\"../lodash\");\nvar barycenter = require(\"./barycenter\");\nvar resolveConflicts = require(\"./resolve-conflicts\");\nvar sort = require(\"./sort\");\n\nmodule.exports = sortSubgraph;\n\nfunction sortSubgraph(g, v, cg, biasRight) {\n var movable = g.children(v);\n var node = g.node(v);\n var bl = node ? node.borderLeft : undefined;\n var br = node ? node.borderRight: undefined;\n var subgraphs = {};\n\n if (bl) {\n movable = _.filter(movable, function(w) {\n return w !== bl && w !== br;\n });\n }\n\n var barycenters = barycenter(g, movable);\n _.forEach(barycenters, function(entry) {\n if (g.children(entry.v).length) {\n var subgraphResult = sortSubgraph(g, entry.v, cg, biasRight);\n subgraphs[entry.v] = subgraphResult;\n if (_.has(subgraphResult, \"barycenter\")) {\n mergeBarycenters(entry, subgraphResult);\n }\n }\n });\n\n var entries = resolveConflicts(barycenters, cg);\n expandSubgraphs(entries, subgraphs);\n\n var result = sort(entries, biasRight);\n\n if (bl) {\n result.vs = _.flatten([bl, result.vs, br], true);\n if (g.predecessors(bl).length) {\n var blPred = g.node(g.predecessors(bl)[0]),\n brPred = g.node(g.predecessors(br)[0]);\n if (!_.has(result, \"barycenter\")) {\n result.barycenter = 0;\n result.weight = 0;\n }\n result.barycenter = (result.barycenter * result.weight +\n blPred.order + brPred.order) / (result.weight + 2);\n result.weight += 2;\n }\n }\n\n return result;\n}\n\nfunction expandSubgraphs(entries, subgraphs) {\n _.forEach(entries, function(entry) {\n entry.vs = _.flatten(entry.vs.map(function(v) {\n if (subgraphs[v]) {\n return subgraphs[v].vs;\n }\n return v;\n }), true);\n });\n}\n\nfunction mergeBarycenters(target, other) {\n if (!_.isUndefined(target.barycenter)) {\n target.barycenter = (target.barycenter * target.weight +\n other.barycenter * other.weight) /\n (target.weight + other.weight);\n target.weight += other.weight;\n } else {\n target.barycenter = other.barycenter;\n target.weight = other.weight;\n }\n}\n","var _ = require(\"../lodash\");\nvar util = require(\"../util\");\n\nmodule.exports = sort;\n\nfunction sort(entries, biasRight) {\n var parts = util.partition(entries, function(entry) {\n return _.has(entry, \"barycenter\");\n });\n var sortable = parts.lhs,\n unsortable = _.sortBy(parts.rhs, function(entry) { return -entry.i; }),\n vs = [],\n sum = 0,\n weight = 0,\n vsIndex = 0;\n\n sortable.sort(compareWithBias(!!biasRight));\n\n vsIndex = consumeUnsortable(vs, unsortable, vsIndex);\n\n _.forEach(sortable, function (entry) {\n vsIndex += entry.vs.length;\n vs.push(entry.vs);\n sum += entry.barycenter * entry.weight;\n weight += entry.weight;\n vsIndex = consumeUnsortable(vs, unsortable, vsIndex);\n });\n\n var result = { vs: _.flatten(vs, true) };\n if (weight) {\n result.barycenter = sum / weight;\n result.weight = weight;\n }\n return result;\n}\n\nfunction consumeUnsortable(vs, unsortable, index) {\n var last;\n while (unsortable.length && (last = _.last(unsortable)).i <= index) {\n unsortable.pop();\n vs.push(last.vs);\n index++;\n }\n return index;\n}\n\nfunction compareWithBias(bias) {\n return function(entryV, entryW) {\n if (entryV.barycenter < entryW.barycenter) {\n return -1;\n } else if (entryV.barycenter > entryW.barycenter) {\n return 1;\n }\n\n return !bias ? entryV.i - entryW.i : entryW.i - entryV.i;\n };\n}\n","var _ = require(\"./lodash\");\n\nmodule.exports = parentDummyChains;\n\nfunction parentDummyChains(g) {\n var postorderNums = postorder(g);\n\n _.forEach(g.graph().dummyChains, function(v) {\n var node = g.node(v);\n var edgeObj = node.edgeObj;\n var pathData = findPath(g, postorderNums, edgeObj.v, edgeObj.w);\n var path = pathData.path;\n var lca = pathData.lca;\n var pathIdx = 0;\n var pathV = path[pathIdx];\n var ascending = true;\n\n while (v !== edgeObj.w) {\n node = g.node(v);\n\n if (ascending) {\n while ((pathV = path[pathIdx]) !== lca &&\n g.node(pathV).maxRank < node.rank) {\n pathIdx++;\n }\n\n if (pathV === lca) {\n ascending = false;\n }\n }\n\n if (!ascending) {\n while (pathIdx < path.length - 1 &&\n g.node(pathV = path[pathIdx + 1]).minRank <= node.rank) {\n pathIdx++;\n }\n pathV = path[pathIdx];\n }\n\n g.setParent(v, pathV);\n v = g.successors(v)[0];\n }\n });\n}\n\n// Find a path from v to w through the lowest common ancestor (LCA). Return the\n// full path and the LCA.\nfunction findPath(g, postorderNums, v, w) {\n var vPath = [];\n var wPath = [];\n var low = Math.min(postorderNums[v].low, postorderNums[w].low);\n var lim = Math.max(postorderNums[v].lim, postorderNums[w].lim);\n var parent;\n var lca;\n\n // Traverse up from v to find the LCA\n parent = v;\n do {\n parent = g.parent(parent);\n vPath.push(parent);\n } while (parent &&\n (postorderNums[parent].low > low || lim > postorderNums[parent].lim));\n lca = parent;\n\n // Traverse from w to LCA\n parent = w;\n while ((parent = g.parent(parent)) !== lca) {\n wPath.push(parent);\n }\n\n return { path: vPath.concat(wPath.reverse()), lca: lca };\n}\n\nfunction postorder(g) {\n var result = {};\n var lim = 0;\n\n function dfs(v) {\n var low = lim;\n _.forEach(g.children(v), dfs);\n result[v] = { low: low, lim: lim++ };\n }\n _.forEach(g.children(), dfs);\n\n return result;\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\nvar Graph = require(\"../graphlib\").Graph;\nvar util = require(\"../util\");\n\n/*\n * This module provides coordinate assignment based on Brandes and Köpf, \"Fast\n * and Simple Horizontal Coordinate Assignment.\"\n */\n\nmodule.exports = {\n positionX: positionX,\n findType1Conflicts: findType1Conflicts,\n findType2Conflicts: findType2Conflicts,\n addConflict: addConflict,\n hasConflict: hasConflict,\n verticalAlignment: verticalAlignment,\n horizontalCompaction: horizontalCompaction,\n alignCoordinates: alignCoordinates,\n findSmallestWidthAlignment: findSmallestWidthAlignment,\n balance: balance\n};\n\n/*\n * Marks all edges in the graph with a type-1 conflict with the \"type1Conflict\"\n * property. A type-1 conflict is one where a non-inner segment crosses an\n * inner segment. An inner segment is an edge with both incident nodes marked\n * with the \"dummy\" property.\n *\n * This algorithm scans layer by layer, starting with the second, for type-1\n * conflicts between the current layer and the previous layer. For each layer\n * it scans the nodes from left to right until it reaches one that is incident\n * on an inner segment. It then scans predecessors to determine if they have\n * edges that cross that inner segment. At the end a final scan is done for all\n * nodes on the current rank to see if they cross the last visited inner\n * segment.\n *\n * This algorithm (safely) assumes that a dummy node will only be incident on a\n * single node in the layers being scanned.\n */\nfunction findType1Conflicts(g, layering) {\n var conflicts = {};\n\n function visitLayer(prevLayer, layer) {\n var\n // last visited node in the previous layer that is incident on an inner\n // segment.\n k0 = 0,\n // Tracks the last node in this layer scanned for crossings with a type-1\n // segment.\n scanPos = 0,\n prevLayerLength = prevLayer.length,\n lastNode = _.last(layer);\n\n _.forEach(layer, function(v, i) {\n var w = findOtherInnerSegmentNode(g, v),\n k1 = w ? g.node(w).order : prevLayerLength;\n\n if (w || v === lastNode) {\n _.forEach(layer.slice(scanPos, i +1), function(scanNode) {\n _.forEach(g.predecessors(scanNode), function(u) {\n var uLabel = g.node(u),\n uPos = uLabel.order;\n if ((uPos < k0 || k1 < uPos) &&\n !(uLabel.dummy && g.node(scanNode).dummy)) {\n addConflict(conflicts, u, scanNode);\n }\n });\n });\n scanPos = i + 1;\n k0 = k1;\n }\n });\n\n return layer;\n }\n\n _.reduce(layering, visitLayer);\n return conflicts;\n}\n\nfunction findType2Conflicts(g, layering) {\n var conflicts = {};\n\n function scan(south, southPos, southEnd, prevNorthBorder, nextNorthBorder) {\n var v;\n _.forEach(_.range(southPos, southEnd), function(i) {\n v = south[i];\n if (g.node(v).dummy) {\n _.forEach(g.predecessors(v), function(u) {\n var uNode = g.node(u);\n if (uNode.dummy &&\n (uNode.order < prevNorthBorder || uNode.order > nextNorthBorder)) {\n addConflict(conflicts, u, v);\n }\n });\n }\n });\n }\n\n\n function visitLayer(north, south) {\n var prevNorthPos = -1,\n nextNorthPos,\n southPos = 0;\n\n _.forEach(south, function(v, southLookahead) {\n if (g.node(v).dummy === \"border\") {\n var predecessors = g.predecessors(v);\n if (predecessors.length) {\n nextNorthPos = g.node(predecessors[0]).order;\n scan(south, southPos, southLookahead, prevNorthPos, nextNorthPos);\n southPos = southLookahead;\n prevNorthPos = nextNorthPos;\n }\n }\n scan(south, southPos, south.length, nextNorthPos, north.length);\n });\n\n return south;\n }\n\n _.reduce(layering, visitLayer);\n return conflicts;\n}\n\nfunction findOtherInnerSegmentNode(g, v) {\n if (g.node(v).dummy) {\n return _.find(g.predecessors(v), function(u) {\n return g.node(u).dummy;\n });\n }\n}\n\nfunction addConflict(conflicts, v, w) {\n if (v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n\n var conflictsV = conflicts[v];\n if (!conflictsV) {\n conflicts[v] = conflictsV = {};\n }\n conflictsV[w] = true;\n}\n\nfunction hasConflict(conflicts, v, w) {\n if (v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n return _.has(conflicts[v], w);\n}\n\n/*\n * Try to align nodes into vertical \"blocks\" where possible. This algorithm\n * attempts to align a node with one of its median neighbors. If the edge\n * connecting a neighbor is a type-1 conflict then we ignore that possibility.\n * If a previous node has already formed a block with a node after the node\n * we're trying to form a block with, we also ignore that possibility - our\n * blocks would be split in that scenario.\n */\nfunction verticalAlignment(g, layering, conflicts, neighborFn) {\n var root = {},\n align = {},\n pos = {};\n\n // We cache the position here based on the layering because the graph and\n // layering may be out of sync. The layering matrix is manipulated to\n // generate different extreme alignments.\n _.forEach(layering, function(layer) {\n _.forEach(layer, function(v, order) {\n root[v] = v;\n align[v] = v;\n pos[v] = order;\n });\n });\n\n _.forEach(layering, function(layer) {\n var prevIdx = -1;\n _.forEach(layer, function(v) {\n var ws = neighborFn(v);\n if (ws.length) {\n ws = _.sortBy(ws, function(w) { return pos[w]; });\n var mp = (ws.length - 1) / 2;\n for (var i = Math.floor(mp), il = Math.ceil(mp); i <= il; ++i) {\n var w = ws[i];\n if (align[v] === v &&\n prevIdx < pos[w] &&\n !hasConflict(conflicts, v, w)) {\n align[w] = v;\n align[v] = root[v] = root[w];\n prevIdx = pos[w];\n }\n }\n }\n });\n });\n\n return { root: root, align: align };\n}\n\nfunction horizontalCompaction(g, layering, root, align, reverseSep) {\n // This portion of the algorithm differs from BK due to a number of problems.\n // Instead of their algorithm we construct a new block graph and do two\n // sweeps. The first sweep places blocks with the smallest possible\n // coordinates. The second sweep removes unused space by moving blocks to the\n // greatest coordinates without violating separation.\n var xs = {},\n blockG = buildBlockGraph(g, layering, root, reverseSep),\n borderType = reverseSep ? \"borderLeft\" : \"borderRight\";\n\n function iterate(setXsFunc, nextNodesFunc) {\n var stack = blockG.nodes();\n var elem = stack.pop();\n var visited = {};\n while (elem) {\n if (visited[elem]) {\n setXsFunc(elem);\n } else {\n visited[elem] = true;\n stack.push(elem);\n stack = stack.concat(nextNodesFunc(elem));\n }\n\n elem = stack.pop();\n }\n }\n\n // First pass, assign smallest coordinates\n function pass1(elem) {\n xs[elem] = blockG.inEdges(elem).reduce(function(acc, e) {\n return Math.max(acc, xs[e.v] + blockG.edge(e));\n }, 0);\n }\n\n // Second pass, assign greatest coordinates\n function pass2(elem) {\n var min = blockG.outEdges(elem).reduce(function(acc, e) {\n return Math.min(acc, xs[e.w] - blockG.edge(e));\n }, Number.POSITIVE_INFINITY);\n\n var node = g.node(elem);\n if (min !== Number.POSITIVE_INFINITY && node.borderType !== borderType) {\n xs[elem] = Math.max(xs[elem], min);\n }\n }\n\n iterate(pass1, blockG.predecessors.bind(blockG));\n iterate(pass2, blockG.successors.bind(blockG));\n\n // Assign x coordinates to all nodes\n _.forEach(align, function(v) {\n xs[v] = xs[root[v]];\n });\n\n return xs;\n}\n\n\nfunction buildBlockGraph(g, layering, root, reverseSep) {\n var blockGraph = new Graph(),\n graphLabel = g.graph(),\n sepFn = sep(graphLabel.nodesep, graphLabel.edgesep, reverseSep);\n\n _.forEach(layering, function(layer) {\n var u;\n _.forEach(layer, function(v) {\n var vRoot = root[v];\n blockGraph.setNode(vRoot);\n if (u) {\n var uRoot = root[u],\n prevMax = blockGraph.edge(uRoot, vRoot);\n blockGraph.setEdge(uRoot, vRoot, Math.max(sepFn(g, v, u), prevMax || 0));\n }\n u = v;\n });\n });\n\n return blockGraph;\n}\n\n/*\n * Returns the alignment that has the smallest width of the given alignments.\n */\nfunction findSmallestWidthAlignment(g, xss) {\n return _.minBy(_.values(xss), function (xs) {\n var max = Number.NEGATIVE_INFINITY;\n var min = Number.POSITIVE_INFINITY;\n\n _.forIn(xs, function (x, v) {\n var halfWidth = width(g, v) / 2;\n\n max = Math.max(x + halfWidth, max);\n min = Math.min(x - halfWidth, min);\n });\n\n return max - min;\n });\n}\n\n/*\n * Align the coordinates of each of the layout alignments such that\n * left-biased alignments have their minimum coordinate at the same point as\n * the minimum coordinate of the smallest width alignment and right-biased\n * alignments have their maximum coordinate at the same point as the maximum\n * coordinate of the smallest width alignment.\n */\nfunction alignCoordinates(xss, alignTo) {\n var alignToVals = _.values(alignTo),\n alignToMin = _.min(alignToVals),\n alignToMax = _.max(alignToVals);\n\n _.forEach([\"u\", \"d\"], function(vert) {\n _.forEach([\"l\", \"r\"], function(horiz) {\n var alignment = vert + horiz,\n xs = xss[alignment],\n delta;\n if (xs === alignTo) return;\n\n var xsVals = _.values(xs);\n delta = horiz === \"l\" ? alignToMin - _.min(xsVals) : alignToMax - _.max(xsVals);\n\n if (delta) {\n xss[alignment] = _.mapValues(xs, function(x) { return x + delta; });\n }\n });\n });\n}\n\nfunction balance(xss, align) {\n return _.mapValues(xss.ul, function(ignore, v) {\n if (align) {\n return xss[align.toLowerCase()][v];\n } else {\n var xs = _.sortBy(_.map(xss, v));\n return (xs[1] + xs[2]) / 2;\n }\n });\n}\n\nfunction positionX(g) {\n var layering = util.buildLayerMatrix(g);\n var conflicts = _.merge(\n findType1Conflicts(g, layering),\n findType2Conflicts(g, layering));\n\n var xss = {};\n var adjustedLayering;\n _.forEach([\"u\", \"d\"], function(vert) {\n adjustedLayering = vert === \"u\" ? layering : _.values(layering).reverse();\n _.forEach([\"l\", \"r\"], function(horiz) {\n if (horiz === \"r\") {\n adjustedLayering = _.map(adjustedLayering, function(inner) {\n return _.values(inner).reverse();\n });\n }\n\n var neighborFn = (vert === \"u\" ? g.predecessors : g.successors).bind(g);\n var align = verticalAlignment(g, adjustedLayering, conflicts, neighborFn);\n var xs = horizontalCompaction(g, adjustedLayering,\n align.root, align.align, horiz === \"r\");\n if (horiz === \"r\") {\n xs = _.mapValues(xs, function(x) { return -x; });\n }\n xss[vert + horiz] = xs;\n });\n });\n\n var smallestWidth = findSmallestWidthAlignment(g, xss);\n alignCoordinates(xss, smallestWidth);\n return balance(xss, g.graph().align);\n}\n\nfunction sep(nodeSep, edgeSep, reverseSep) {\n return function(g, v, w) {\n var vLabel = g.node(v);\n var wLabel = g.node(w);\n var sum = 0;\n var delta;\n\n sum += vLabel.width / 2;\n if (_.has(vLabel, \"labelpos\")) {\n switch (vLabel.labelpos.toLowerCase()) {\n case \"l\": delta = -vLabel.width / 2; break;\n case \"r\": delta = vLabel.width / 2; break;\n }\n }\n if (delta) {\n sum += reverseSep ? delta : -delta;\n }\n delta = 0;\n\n sum += (vLabel.dummy ? edgeSep : nodeSep) / 2;\n sum += (wLabel.dummy ? edgeSep : nodeSep) / 2;\n\n sum += wLabel.width / 2;\n if (_.has(wLabel, \"labelpos\")) {\n switch (wLabel.labelpos.toLowerCase()) {\n case \"l\": delta = wLabel.width / 2; break;\n case \"r\": delta = -wLabel.width / 2; break;\n }\n }\n if (delta) {\n sum += reverseSep ? delta : -delta;\n }\n delta = 0;\n\n return sum;\n };\n}\n\nfunction width(g, v) {\n return g.node(v).width;\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\nvar util = require(\"../util\");\nvar positionX = require(\"./bk\").positionX;\n\nmodule.exports = position;\n\nfunction position(g) {\n g = util.asNonCompoundGraph(g);\n\n positionY(g);\n _.forEach(positionX(g), function(x, v) {\n g.node(v).x = x;\n });\n}\n\nfunction positionY(g) {\n var layering = util.buildLayerMatrix(g);\n var rankSep = g.graph().ranksep;\n var prevY = 0;\n _.forEach(layering, function(layer) {\n var maxHeight = _.max(_.map(layer, function(v) { return g.node(v).height; }));\n _.forEach(layer, function(v) {\n g.node(v).y = prevY + maxHeight / 2;\n });\n prevY += maxHeight + rankSep;\n });\n}\n\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\nvar Graph = require(\"../graphlib\").Graph;\nvar slack = require(\"./util\").slack;\n\nmodule.exports = feasibleTree;\n\n/*\n * Constructs a spanning tree with tight edges and adjusted the input node's\n * ranks to achieve this. A tight edge is one that is has a length that matches\n * its \"minlen\" attribute.\n *\n * The basic structure for this function is derived from Gansner, et al., \"A\n * Technique for Drawing Directed Graphs.\"\n *\n * Pre-conditions:\n *\n * 1. Graph must be a DAG.\n * 2. Graph must be connected.\n * 3. Graph must have at least one node.\n * 5. Graph nodes must have been previously assigned a \"rank\" property that\n * respects the \"minlen\" property of incident edges.\n * 6. Graph edges must have a \"minlen\" property.\n *\n * Post-conditions:\n *\n * - Graph nodes will have their rank adjusted to ensure that all edges are\n * tight.\n *\n * Returns a tree (undirected graph) that is constructed using only \"tight\"\n * edges.\n */\nfunction feasibleTree(g) {\n var t = new Graph({ directed: false });\n\n // Choose arbitrary node from which to start our tree\n var start = g.nodes()[0];\n var size = g.nodeCount();\n t.setNode(start, {});\n\n var edge, delta;\n while (tightTree(t, g) < size) {\n edge = findMinSlackEdge(t, g);\n delta = t.hasNode(edge.v) ? slack(g, edge) : -slack(g, edge);\n shiftRanks(t, g, delta);\n }\n\n return t;\n}\n\n/*\n * Finds a maximal tree of tight edges and returns the number of nodes in the\n * tree.\n */\nfunction tightTree(t, g) {\n function dfs(v) {\n _.forEach(g.nodeEdges(v), function(e) {\n var edgeV = e.v,\n w = (v === edgeV) ? e.w : edgeV;\n if (!t.hasNode(w) && !slack(g, e)) {\n t.setNode(w, {});\n t.setEdge(v, w, {});\n dfs(w);\n }\n });\n }\n\n _.forEach(t.nodes(), dfs);\n return t.nodeCount();\n}\n\n/*\n * Finds the edge with the smallest slack that is incident on tree and returns\n * it.\n */\nfunction findMinSlackEdge(t, g) {\n return _.minBy(g.edges(), function(e) {\n if (t.hasNode(e.v) !== t.hasNode(e.w)) {\n return slack(g, e);\n }\n });\n}\n\nfunction shiftRanks(t, g, delta) {\n _.forEach(t.nodes(), function(v) {\n g.node(v).rank += delta;\n });\n}\n","\"use strict\";\n\nvar rankUtil = require(\"./util\");\nvar longestPath = rankUtil.longestPath;\nvar feasibleTree = require(\"./feasible-tree\");\nvar networkSimplex = require(\"./network-simplex\");\n\nmodule.exports = rank;\n\n/*\n * Assigns a rank to each node in the input graph that respects the \"minlen\"\n * constraint specified on edges between nodes.\n *\n * This basic structure is derived from Gansner, et al., \"A Technique for\n * Drawing Directed Graphs.\"\n *\n * Pre-conditions:\n *\n * 1. Graph must be a connected DAG\n * 2. Graph nodes must be objects\n * 3. Graph edges must have \"weight\" and \"minlen\" attributes\n *\n * Post-conditions:\n *\n * 1. Graph nodes will have a \"rank\" attribute based on the results of the\n * algorithm. Ranks can start at any index (including negative), we'll\n * fix them up later.\n */\nfunction rank(g) {\n switch(g.graph().ranker) {\n case \"network-simplex\": networkSimplexRanker(g); break;\n case \"tight-tree\": tightTreeRanker(g); break;\n case \"longest-path\": longestPathRanker(g); break;\n default: networkSimplexRanker(g);\n }\n}\n\n// A fast and simple ranker, but results are far from optimal.\nvar longestPathRanker = longestPath;\n\nfunction tightTreeRanker(g) {\n longestPath(g);\n feasibleTree(g);\n}\n\nfunction networkSimplexRanker(g) {\n networkSimplex(g);\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\nvar feasibleTree = require(\"./feasible-tree\");\nvar slack = require(\"./util\").slack;\nvar initRank = require(\"./util\").longestPath;\nvar preorder = require(\"../graphlib\").alg.preorder;\nvar postorder = require(\"../graphlib\").alg.postorder;\nvar simplify = require(\"../util\").simplify;\n\nmodule.exports = networkSimplex;\n\n// Expose some internals for testing purposes\nnetworkSimplex.initLowLimValues = initLowLimValues;\nnetworkSimplex.initCutValues = initCutValues;\nnetworkSimplex.calcCutValue = calcCutValue;\nnetworkSimplex.leaveEdge = leaveEdge;\nnetworkSimplex.enterEdge = enterEdge;\nnetworkSimplex.exchangeEdges = exchangeEdges;\n\n/*\n * The network simplex algorithm assigns ranks to each node in the input graph\n * and iteratively improves the ranking to reduce the length of edges.\n *\n * Preconditions:\n *\n * 1. The input graph must be a DAG.\n * 2. All nodes in the graph must have an object value.\n * 3. All edges in the graph must have \"minlen\" and \"weight\" attributes.\n *\n * Postconditions:\n *\n * 1. All nodes in the graph will have an assigned \"rank\" attribute that has\n * been optimized by the network simplex algorithm. Ranks start at 0.\n *\n *\n * A rough sketch of the algorithm is as follows:\n *\n * 1. Assign initial ranks to each node. We use the longest path algorithm,\n * which assigns ranks to the lowest position possible. In general this\n * leads to very wide bottom ranks and unnecessarily long edges.\n * 2. Construct a feasible tight tree. A tight tree is one such that all\n * edges in the tree have no slack (difference between length of edge\n * and minlen for the edge). This by itself greatly improves the assigned\n * rankings by shorting edges.\n * 3. Iteratively find edges that have negative cut values. Generally a\n * negative cut value indicates that the edge could be removed and a new\n * tree edge could be added to produce a more compact graph.\n *\n * Much of the algorithms here are derived from Gansner, et al., \"A Technique\n * for Drawing Directed Graphs.\" The structure of the file roughly follows the\n * structure of the overall algorithm.\n */\nfunction networkSimplex(g) {\n g = simplify(g);\n initRank(g);\n var t = feasibleTree(g);\n initLowLimValues(t);\n initCutValues(t, g);\n\n var e, f;\n while ((e = leaveEdge(t))) {\n f = enterEdge(t, g, e);\n exchangeEdges(t, g, e, f);\n }\n}\n\n/*\n * Initializes cut values for all edges in the tree.\n */\nfunction initCutValues(t, g) {\n var vs = postorder(t, t.nodes());\n vs = vs.slice(0, vs.length - 1);\n _.forEach(vs, function(v) {\n assignCutValue(t, g, v);\n });\n}\n\nfunction assignCutValue(t, g, child) {\n var childLab = t.node(child);\n var parent = childLab.parent;\n t.edge(child, parent).cutvalue = calcCutValue(t, g, child);\n}\n\n/*\n * Given the tight tree, its graph, and a child in the graph calculate and\n * return the cut value for the edge between the child and its parent.\n */\nfunction calcCutValue(t, g, child) {\n var childLab = t.node(child);\n var parent = childLab.parent;\n // True if the child is on the tail end of the edge in the directed graph\n var childIsTail = true;\n // The graph's view of the tree edge we're inspecting\n var graphEdge = g.edge(child, parent);\n // The accumulated cut value for the edge between this node and its parent\n var cutValue = 0;\n\n if (!graphEdge) {\n childIsTail = false;\n graphEdge = g.edge(parent, child);\n }\n\n cutValue = graphEdge.weight;\n\n _.forEach(g.nodeEdges(child), function(e) {\n var isOutEdge = e.v === child,\n other = isOutEdge ? e.w : e.v;\n\n if (other !== parent) {\n var pointsToHead = isOutEdge === childIsTail,\n otherWeight = g.edge(e).weight;\n\n cutValue += pointsToHead ? otherWeight : -otherWeight;\n if (isTreeEdge(t, child, other)) {\n var otherCutValue = t.edge(child, other).cutvalue;\n cutValue += pointsToHead ? -otherCutValue : otherCutValue;\n }\n }\n });\n\n return cutValue;\n}\n\nfunction initLowLimValues(tree, root) {\n if (arguments.length < 2) {\n root = tree.nodes()[0];\n }\n dfsAssignLowLim(tree, {}, 1, root);\n}\n\nfunction dfsAssignLowLim(tree, visited, nextLim, v, parent) {\n var low = nextLim;\n var label = tree.node(v);\n\n visited[v] = true;\n _.forEach(tree.neighbors(v), function(w) {\n if (!_.has(visited, w)) {\n nextLim = dfsAssignLowLim(tree, visited, nextLim, w, v);\n }\n });\n\n label.low = low;\n label.lim = nextLim++;\n if (parent) {\n label.parent = parent;\n } else {\n // TODO should be able to remove this when we incrementally update low lim\n delete label.parent;\n }\n\n return nextLim;\n}\n\nfunction leaveEdge(tree) {\n return _.find(tree.edges(), function(e) {\n return tree.edge(e).cutvalue < 0;\n });\n}\n\nfunction enterEdge(t, g, edge) {\n var v = edge.v;\n var w = edge.w;\n\n // For the rest of this function we assume that v is the tail and w is the\n // head, so if we don't have this edge in the graph we should flip it to\n // match the correct orientation.\n if (!g.hasEdge(v, w)) {\n v = edge.w;\n w = edge.v;\n }\n\n var vLabel = t.node(v);\n var wLabel = t.node(w);\n var tailLabel = vLabel;\n var flip = false;\n\n // If the root is in the tail of the edge then we need to flip the logic that\n // checks for the head and tail nodes in the candidates function below.\n if (vLabel.lim > wLabel.lim) {\n tailLabel = wLabel;\n flip = true;\n }\n\n var candidates = _.filter(g.edges(), function(edge) {\n return flip === isDescendant(t, t.node(edge.v), tailLabel) &&\n flip !== isDescendant(t, t.node(edge.w), tailLabel);\n });\n\n return _.minBy(candidates, function(edge) { return slack(g, edge); });\n}\n\nfunction exchangeEdges(t, g, e, f) {\n var v = e.v;\n var w = e.w;\n t.removeEdge(v, w);\n t.setEdge(f.v, f.w, {});\n initLowLimValues(t);\n initCutValues(t, g);\n updateRanks(t, g);\n}\n\nfunction updateRanks(t, g) {\n var root = _.find(t.nodes(), function(v) { return !g.node(v).parent; });\n var vs = preorder(t, root);\n vs = vs.slice(1);\n _.forEach(vs, function(v) {\n var parent = t.node(v).parent,\n edge = g.edge(v, parent),\n flipped = false;\n\n if (!edge) {\n edge = g.edge(parent, v);\n flipped = true;\n }\n\n g.node(v).rank = g.node(parent).rank + (flipped ? edge.minlen : -edge.minlen);\n });\n}\n\n/*\n * Returns true if the edge is in the tree.\n */\nfunction isTreeEdge(tree, u, v) {\n return tree.hasEdge(u, v);\n}\n\n/*\n * Returns true if the specified node is descendant of the root node per the\n * assigned low and lim attributes in the tree.\n */\nfunction isDescendant(tree, vLabel, rootLabel) {\n return rootLabel.low <= vLabel.lim && vLabel.lim <= rootLabel.lim;\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\n\nmodule.exports = {\n longestPath: longestPath,\n slack: slack\n};\n\n/*\n * Initializes ranks for the input graph using the longest path algorithm. This\n * algorithm scales well and is fast in practice, it yields rather poor\n * solutions. Nodes are pushed to the lowest layer possible, leaving the bottom\n * ranks wide and leaving edges longer than necessary. However, due to its\n * speed, this algorithm is good for getting an initial ranking that can be fed\n * into other algorithms.\n *\n * This algorithm does not normalize layers because it will be used by other\n * algorithms in most cases. If using this algorithm directly, be sure to\n * run normalize at the end.\n *\n * Pre-conditions:\n *\n * 1. Input graph is a DAG.\n * 2. Input graph node labels can be assigned properties.\n *\n * Post-conditions:\n *\n * 1. Each node will be assign an (unnormalized) \"rank\" property.\n */\nfunction longestPath(g) {\n var visited = {};\n\n function dfs(v) {\n var label = g.node(v);\n if (_.has(visited, v)) {\n return label.rank;\n }\n visited[v] = true;\n\n var rank = _.min(_.map(g.outEdges(v), function(e) {\n return dfs(e.w) - g.edge(e).minlen;\n }));\n\n if (rank === Number.POSITIVE_INFINITY || // return value of _.map([]) for Lodash 3\n rank === undefined || // return value of _.map([]) for Lodash 4\n rank === null) { // return value of _.map([null])\n rank = 0;\n }\n\n return (label.rank = rank);\n }\n\n _.forEach(g.sources(), dfs);\n}\n\n/*\n * Returns the amount of slack for the given edge. The slack is defined as the\n * difference between the length of the edge and its minimum length.\n */\nfunction slack(g, e) {\n return g.node(e.w).rank - g.node(e.v).rank - g.edge(e).minlen;\n}\n","/* eslint \"no-console\": off */\n\n\"use strict\";\n\nvar _ = require(\"./lodash\");\nvar Graph = require(\"./graphlib\").Graph;\n\nmodule.exports = {\n addDummyNode: addDummyNode,\n simplify: simplify,\n asNonCompoundGraph: asNonCompoundGraph,\n successorWeights: successorWeights,\n predecessorWeights: predecessorWeights,\n intersectRect: intersectRect,\n buildLayerMatrix: buildLayerMatrix,\n normalizeRanks: normalizeRanks,\n removeEmptyRanks: removeEmptyRanks,\n addBorderNode: addBorderNode,\n maxRank: maxRank,\n partition: partition,\n time: time,\n notime: notime\n};\n\n/*\n * Adds a dummy node to the graph and return v.\n */\nfunction addDummyNode(g, type, attrs, name) {\n var v;\n do {\n v = _.uniqueId(name);\n } while (g.hasNode(v));\n\n attrs.dummy = type;\n g.setNode(v, attrs);\n return v;\n}\n\n/*\n * Returns a new graph with only simple edges. Handles aggregation of data\n * associated with multi-edges.\n */\nfunction simplify(g) {\n var simplified = new Graph().setGraph(g.graph());\n _.forEach(g.nodes(), function(v) { simplified.setNode(v, g.node(v)); });\n _.forEach(g.edges(), function(e) {\n var simpleLabel = simplified.edge(e.v, e.w) || { weight: 0, minlen: 1 };\n var label = g.edge(e);\n simplified.setEdge(e.v, e.w, {\n weight: simpleLabel.weight + label.weight,\n minlen: Math.max(simpleLabel.minlen, label.minlen)\n });\n });\n return simplified;\n}\n\nfunction asNonCompoundGraph(g) {\n var simplified = new Graph({ multigraph: g.isMultigraph() }).setGraph(g.graph());\n _.forEach(g.nodes(), function(v) {\n if (!g.children(v).length) {\n simplified.setNode(v, g.node(v));\n }\n });\n _.forEach(g.edges(), function(e) {\n simplified.setEdge(e, g.edge(e));\n });\n return simplified;\n}\n\nfunction successorWeights(g) {\n var weightMap = _.map(g.nodes(), function(v) {\n var sucs = {};\n _.forEach(g.outEdges(v), function(e) {\n sucs[e.w] = (sucs[e.w] || 0) + g.edge(e).weight;\n });\n return sucs;\n });\n return _.zipObject(g.nodes(), weightMap);\n}\n\nfunction predecessorWeights(g) {\n var weightMap = _.map(g.nodes(), function(v) {\n var preds = {};\n _.forEach(g.inEdges(v), function(e) {\n preds[e.v] = (preds[e.v] || 0) + g.edge(e).weight;\n });\n return preds;\n });\n return _.zipObject(g.nodes(), weightMap);\n}\n\n/*\n * Finds where a line starting at point ({x, y}) would intersect a rectangle\n * ({x, y, width, height}) if it were pointing at the rectangle's center.\n */\nfunction intersectRect(rect, point) {\n var x = rect.x;\n var y = rect.y;\n\n // Rectangle intersection algorithm from:\n // http://math.stackexchange.com/questions/108113/find-edge-between-two-boxes\n var dx = point.x - x;\n var dy = point.y - y;\n var w = rect.width / 2;\n var h = rect.height / 2;\n\n if (!dx && !dy) {\n throw new Error(\"Not possible to find intersection inside of the rectangle\");\n }\n\n var sx, sy;\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\n // Intersection is top or bottom of rect.\n if (dy < 0) {\n h = -h;\n }\n sx = h * dx / dy;\n sy = h;\n } else {\n // Intersection is left or right of rect.\n if (dx < 0) {\n w = -w;\n }\n sx = w;\n sy = w * dy / dx;\n }\n\n return { x: x + sx, y: y + sy };\n}\n\n/*\n * Given a DAG with each node assigned \"rank\" and \"order\" properties, this\n * function will produce a matrix with the ids of each node.\n */\nfunction buildLayerMatrix(g) {\n var layering = _.map(_.range(maxRank(g) + 1), function() { return []; });\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n var rank = node.rank;\n if (!_.isUndefined(rank)) {\n layering[rank][node.order] = v;\n }\n });\n return layering;\n}\n\n/*\n * Adjusts the ranks for all nodes in the graph such that all nodes v have\n * rank(v) >= 0 and at least one node w has rank(w) = 0.\n */\nfunction normalizeRanks(g) {\n var min = _.min(_.map(g.nodes(), function(v) { return g.node(v).rank; }));\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n if (_.has(node, \"rank\")) {\n node.rank -= min;\n }\n });\n}\n\nfunction removeEmptyRanks(g) {\n // Ranks may not start at 0, so we need to offset them\n var offset = _.min(_.map(g.nodes(), function(v) { return g.node(v).rank; }));\n\n var layers = [];\n _.forEach(g.nodes(), function(v) {\n var rank = g.node(v).rank - offset;\n if (!layers[rank]) {\n layers[rank] = [];\n }\n layers[rank].push(v);\n });\n\n var delta = 0;\n var nodeRankFactor = g.graph().nodeRankFactor;\n _.forEach(layers, function(vs, i) {\n if (_.isUndefined(vs) && i % nodeRankFactor !== 0) {\n --delta;\n } else if (delta) {\n _.forEach(vs, function(v) { g.node(v).rank += delta; });\n }\n });\n}\n\nfunction addBorderNode(g, prefix, rank, order) {\n var node = {\n width: 0,\n height: 0\n };\n if (arguments.length >= 4) {\n node.rank = rank;\n node.order = order;\n }\n return addDummyNode(g, \"border\", node, prefix);\n}\n\nfunction maxRank(g) {\n return _.max(_.map(g.nodes(), function(v) {\n var rank = g.node(v).rank;\n if (!_.isUndefined(rank)) {\n return rank;\n }\n }));\n}\n\n/*\n * Partition a collection into two groups: `lhs` and `rhs`. If the supplied\n * function returns true for an entry it goes into `lhs`. Otherwise it goes\n * into `rhs.\n */\nfunction partition(collection, fn) {\n var result = { lhs: [], rhs: [] };\n _.forEach(collection, function(value) {\n if (fn(value)) {\n result.lhs.push(value);\n } else {\n result.rhs.push(value);\n }\n });\n return result;\n}\n\n/*\n * Returns a new function that wraps `fn` with a timer. The wrapper logs the\n * time it takes to execute the function.\n */\nfunction time(name, fn) {\n var start = _.now();\n try {\n return fn();\n } finally {\n console.log(name + \" time: \" + (_.now() - start) + \"ms\");\n }\n}\n\nfunction notime(name, fn) {\n return fn();\n}\n","module.exports = \"0.8.5\";\n","/*! @license DOMPurify 2.3.6 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/2.3.6/LICENSE */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.DOMPurify = factory());\n}(this, function () { 'use strict';\n\n function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n var hasOwnProperty = Object.hasOwnProperty,\n setPrototypeOf = Object.setPrototypeOf,\n isFrozen = Object.isFrozen,\n getPrototypeOf = Object.getPrototypeOf,\n getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n var freeze = Object.freeze,\n seal = Object.seal,\n create = Object.create; // eslint-disable-line import/no-mutable-exports\n\n var _ref = typeof Reflect !== 'undefined' && Reflect,\n apply = _ref.apply,\n construct = _ref.construct;\n\n if (!apply) {\n apply = function apply(fun, thisValue, args) {\n return fun.apply(thisValue, args);\n };\n }\n\n if (!freeze) {\n freeze = function freeze(x) {\n return x;\n };\n }\n\n if (!seal) {\n seal = function seal(x) {\n return x;\n };\n }\n\n if (!construct) {\n construct = function construct(Func, args) {\n return new (Function.prototype.bind.apply(Func, [null].concat(_toConsumableArray(args))))();\n };\n }\n\n var arrayForEach = unapply(Array.prototype.forEach);\n var arrayPop = unapply(Array.prototype.pop);\n var arrayPush = unapply(Array.prototype.push);\n\n var stringToLowerCase = unapply(String.prototype.toLowerCase);\n var stringMatch = unapply(String.prototype.match);\n var stringReplace = unapply(String.prototype.replace);\n var stringIndexOf = unapply(String.prototype.indexOf);\n var stringTrim = unapply(String.prototype.trim);\n\n var regExpTest = unapply(RegExp.prototype.test);\n\n var typeErrorCreate = unconstruct(TypeError);\n\n function unapply(func) {\n return function (thisArg) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return apply(func, thisArg, args);\n };\n }\n\n function unconstruct(func) {\n return function () {\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return construct(func, args);\n };\n }\n\n /* Add properties to a lookup table */\n function addToSet(set, array) {\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n\n var l = array.length;\n while (l--) {\n var element = array[l];\n if (typeof element === 'string') {\n var lcElement = stringToLowerCase(element);\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n array[l] = lcElement;\n }\n\n element = lcElement;\n }\n }\n\n set[element] = true;\n }\n\n return set;\n }\n\n /* Shallow clone an object */\n function clone(object) {\n var newObject = create(null);\n\n var property = void 0;\n for (property in object) {\n if (apply(hasOwnProperty, object, [property])) {\n newObject[property] = object[property];\n }\n }\n\n return newObject;\n }\n\n /* IE10 doesn't support __lookupGetter__ so lets'\n * simulate it. It also automatically checks\n * if the prop is function or getter and behaves\n * accordingly. */\n function lookupGetter(object, prop) {\n while (object !== null) {\n var desc = getOwnPropertyDescriptor(object, prop);\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n\n if (typeof desc.value === 'function') {\n return unapply(desc.value);\n }\n }\n\n object = getPrototypeOf(object);\n }\n\n function fallbackValue(element) {\n console.warn('fallback value for', element);\n return null;\n }\n\n return fallbackValue;\n }\n\n var html = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'section', 'select', 'shadow', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);\n\n // SVG\n var svg = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);\n\n var svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);\n\n // List of SVG elements that are disallowed by default.\n // We still need to know them so that we can do namespace\n // checks properly in case one wants to add them to\n // allow-list.\n var svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'fedropshadow', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);\n\n var mathMl = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover']);\n\n // Similarly to SVG, we want to know all MathML elements,\n // even those that we disallow by default.\n var mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\n\n var text = freeze(['#text']);\n\n var html$1 = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'pattern', 'placeholder', 'playsinline', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'xmlns', 'slot']);\n\n var svg$1 = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\n\n var mathMl$1 = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\n\n var xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\n // eslint-disable-next-line unicorn/better-regex\n var MUSTACHE_EXPR = seal(/\\{\\{[\\s\\S]*|[\\s\\S]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\n var ERB_EXPR = seal(/<%[\\s\\S]*|[\\s\\S]*%>/gm);\n var DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]/); // eslint-disable-line no-useless-escape\n var ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\n var IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n );\n var IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\n var ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n );\n var DOCTYPE_NAME = seal(/^html$/i);\n\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n function _toConsumableArray$1(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n var getGlobal = function getGlobal() {\n return typeof window === 'undefined' ? null : window;\n };\n\n /**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param {?TrustedTypePolicyFactory} trustedTypes The policy factory.\n * @param {Document} document The document object (to determine policy name suffix)\n * @return {?TrustedTypePolicy} The policy created (or null, if Trusted Types\n * are not supported).\n */\n var _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, document) {\n if ((typeof trustedTypes === 'undefined' ? 'undefined' : _typeof(trustedTypes)) !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n return null;\n }\n\n // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n var suffix = null;\n var ATTR_NAME = 'data-tt-policy-suffix';\n if (document.currentScript && document.currentScript.hasAttribute(ATTR_NAME)) {\n suffix = document.currentScript.getAttribute(ATTR_NAME);\n }\n\n var policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML: function createHTML(html$$1) {\n return html$$1;\n }\n });\n } catch (_) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n return null;\n }\n };\n\n function createDOMPurify() {\n var window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n\n var DOMPurify = function DOMPurify(root) {\n return createDOMPurify(root);\n };\n\n /**\n * Version label, exposed for easier checks\n * if DOMPurify is up to date or not\n */\n DOMPurify.version = '2.3.6';\n\n /**\n * Array of elements that DOMPurify removed during sanitation.\n * Empty if nothing was removed.\n */\n DOMPurify.removed = [];\n\n if (!window || !window.document || window.document.nodeType !== 9) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n\n return DOMPurify;\n }\n\n var originalDocument = window.document;\n\n var document = window.document;\n var DocumentFragment = window.DocumentFragment,\n HTMLTemplateElement = window.HTMLTemplateElement,\n Node = window.Node,\n Element = window.Element,\n NodeFilter = window.NodeFilter,\n _window$NamedNodeMap = window.NamedNodeMap,\n NamedNodeMap = _window$NamedNodeMap === undefined ? window.NamedNodeMap || window.MozNamedAttrMap : _window$NamedNodeMap,\n HTMLFormElement = window.HTMLFormElement,\n DOMParser = window.DOMParser,\n trustedTypes = window.trustedTypes;\n\n\n var ElementPrototype = Element.prototype;\n\n var cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n var getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n var getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n var getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n\n // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n if (typeof HTMLTemplateElement === 'function') {\n var template = document.createElement('template');\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n\n var trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, originalDocument);\n var emptyHTML = trustedTypesPolicy ? trustedTypesPolicy.createHTML('') : '';\n\n var _document = document,\n implementation = _document.implementation,\n createNodeIterator = _document.createNodeIterator,\n createDocumentFragment = _document.createDocumentFragment,\n getElementsByTagName = _document.getElementsByTagName;\n var importNode = originalDocument.importNode;\n\n\n var documentMode = {};\n try {\n documentMode = clone(document).documentMode ? document.documentMode : {};\n } catch (_) {}\n\n var hooks = {};\n\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n DOMPurify.isSupported = typeof getParentNode === 'function' && implementation && typeof implementation.createHTMLDocument !== 'undefined' && documentMode !== 9;\n\n var MUSTACHE_EXPR$$1 = MUSTACHE_EXPR,\n ERB_EXPR$$1 = ERB_EXPR,\n DATA_ATTR$$1 = DATA_ATTR,\n ARIA_ATTR$$1 = ARIA_ATTR,\n IS_SCRIPT_OR_DATA$$1 = IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE$$1 = ATTR_WHITESPACE;\n var IS_ALLOWED_URI$$1 = IS_ALLOWED_URI;\n\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n\n /* allowed element names */\n\n var ALLOWED_TAGS = null;\n var DEFAULT_ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray$1(html), _toConsumableArray$1(svg), _toConsumableArray$1(svgFilters), _toConsumableArray$1(mathMl), _toConsumableArray$1(text)));\n\n /* Allowed attribute names */\n var ALLOWED_ATTR = null;\n var DEFAULT_ALLOWED_ATTR = addToSet({}, [].concat(_toConsumableArray$1(html$1), _toConsumableArray$1(svg$1), _toConsumableArray$1(mathMl$1), _toConsumableArray$1(xml)));\n\n /*\n * Configure how DOMPUrify should handle custom elements and their attributes as well as customized built-in elements.\n * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n */\n var CUSTOM_ELEMENT_HANDLING = Object.seal(Object.create(null, {\n tagNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n attributeNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n allowCustomizedBuiltInElements: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: false\n }\n }));\n\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n var FORBID_TAGS = null;\n\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n var FORBID_ATTR = null;\n\n /* Decide if ARIA attributes are okay */\n var ALLOW_ARIA_ATTR = true;\n\n /* Decide if custom data attributes are okay */\n var ALLOW_DATA_ATTR = true;\n\n /* Decide if unknown protocols are okay */\n var ALLOW_UNKNOWN_PROTOCOLS = false;\n\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n var SAFE_FOR_TEMPLATES = false;\n\n /* Decide if document with <html>... should be returned */\n var WHOLE_DOCUMENT = false;\n\n /* Track whether config is already set on this instance of DOMPurify. */\n var SET_CONFIG = false;\n\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n var FORCE_BODY = false;\n\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n var RETURN_DOM = false;\n\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n var RETURN_DOM_FRAGMENT = false;\n\n /* Try to return a Trusted Type object instead of a string, return a string in\n * case Trusted Types are not supported */\n var RETURN_TRUSTED_TYPE = false;\n\n /* Output should be free from DOM clobbering attacks? */\n var SANITIZE_DOM = true;\n\n /* Keep element content when removing element? */\n var KEEP_CONTENT = true;\n\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n var IN_PLACE = false;\n\n /* Allow usage of profiles like html, svg and mathMl */\n var USE_PROFILES = {};\n\n /* Tags to ignore content of when KEEP_CONTENT is true */\n var FORBID_CONTENTS = null;\n var DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);\n\n /* Tags that are safe for data: URIs */\n var DATA_URI_TAGS = null;\n var DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n\n /* Attributes safe for values like \"javascript:\" */\n var URI_SAFE_ATTRIBUTES = null;\n var DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);\n\n var MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n var SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n var HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n /* Document namespace */\n var NAMESPACE = HTML_NAMESPACE;\n var IS_EMPTY_INPUT = false;\n\n /* Parsing of strict XHTML documents */\n var PARSER_MEDIA_TYPE = void 0;\n var SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n var DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n var transformCaseFunc = void 0;\n\n /* Keep a reference to config to pass to hooks */\n var CONFIG = null;\n\n /* Ideally, do not touch anything below this line */\n /* ______________________________________________ */\n\n var formElement = document.createElement('form');\n\n var isRegexOrFunction = function isRegexOrFunction(testValue) {\n return testValue instanceof RegExp || testValue instanceof Function;\n };\n\n /**\n * _parseConfig\n *\n * @param {Object} cfg optional config literal\n */\n // eslint-disable-next-line complexity\n var _parseConfig = function _parseConfig(cfg) {\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n\n /* Shield configuration object from tampering */\n if (!cfg || (typeof cfg === 'undefined' ? 'undefined' : _typeof(cfg)) !== 'object') {\n cfg = {};\n }\n\n /* Shield configuration object from prototype pollution */\n cfg = clone(cfg);\n\n /* Set configuration parameters */\n ALLOWED_TAGS = 'ALLOWED_TAGS' in cfg ? addToSet({}, cfg.ALLOWED_TAGS) : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR = 'ALLOWED_ATTR' in cfg ? addToSet({}, cfg.ALLOWED_ATTR) : DEFAULT_ALLOWED_ATTR;\n URI_SAFE_ATTRIBUTES = 'ADD_URI_SAFE_ATTR' in cfg ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR) : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS = 'ADD_DATA_URI_TAGS' in cfg ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS) : DEFAULT_DATA_URI_TAGS;\n FORBID_CONTENTS = 'FORBID_CONTENTS' in cfg ? addToSet({}, cfg.FORBID_CONTENTS) : DEFAULT_FORBID_CONTENTS;\n FORBID_TAGS = 'FORBID_TAGS' in cfg ? addToSet({}, cfg.FORBID_TAGS) : {};\n FORBID_ATTR = 'FORBID_ATTR' in cfg ? addToSet({}, cfg.FORBID_ATTR) : {};\n USE_PROFILES = 'USE_PROFILES' in cfg ? cfg.USE_PROFILES : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n IS_ALLOWED_URI$$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI$$1;\n NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n }\n\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n }\n\n if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') {\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n }\n\n PARSER_MEDIA_TYPE =\n // eslint-disable-next-line unicorn/prefer-includes\n SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? PARSER_MEDIA_TYPE = DEFAULT_PARSER_MEDIA_TYPE : PARSER_MEDIA_TYPE = cfg.PARSER_MEDIA_TYPE;\n\n // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? function (x) {\n return x;\n } : stringToLowerCase;\n\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n\n /* Parse profile info */\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray$1(text)));\n ALLOWED_ATTR = [];\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, html);\n addToSet(ALLOWED_ATTR, html$1);\n }\n\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, svg);\n addToSet(ALLOWED_ATTR, svg$1);\n addToSet(ALLOWED_ATTR, xml);\n }\n\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, svgFilters);\n addToSet(ALLOWED_ATTR, svg$1);\n addToSet(ALLOWED_ATTR, xml);\n }\n\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, mathMl);\n addToSet(ALLOWED_ATTR, mathMl$1);\n addToSet(ALLOWED_ATTR, xml);\n }\n }\n\n /* Merge configuration parameters */\n if (cfg.ADD_TAGS) {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS);\n }\n\n if (cfg.ADD_ATTR) {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR);\n }\n\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR);\n }\n\n if (cfg.FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n\n addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS);\n }\n\n /* Add #text in case KEEP_CONTENT is set to true */\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n delete FORBID_TAGS.tbody;\n }\n\n // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n if (freeze) {\n freeze(cfg);\n }\n\n CONFIG = cfg;\n };\n\n var MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);\n\n var HTML_INTEGRATION_POINTS = addToSet({}, ['foreignobject', 'desc', 'title', 'annotation-xml']);\n\n /* Keep track of all possible SVG and MathML tags\n * so that we can perform the namespace checks\n * correctly. */\n var ALL_SVG_TAGS = addToSet({}, svg);\n addToSet(ALL_SVG_TAGS, svgFilters);\n addToSet(ALL_SVG_TAGS, svgDisallowed);\n\n var ALL_MATHML_TAGS = addToSet({}, mathMl);\n addToSet(ALL_MATHML_TAGS, mathMlDisallowed);\n\n /**\n *\n *\n * @param {Element} element a DOM element whose namespace is being checked\n * @returns {boolean} Return false if the element has a\n * namespace that a spec-compliant parser would never\n * return. Return true otherwise.\n */\n var _checkValidNamespace = function _checkValidNamespace(element) {\n var parent = getParentNode(element);\n\n // In JSDOM, if we're inside shadow DOM, then parentNode\n // can be null. We just simulate parent in this case.\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: HTML_NAMESPACE,\n tagName: 'template'\n };\n }\n\n var tagName = stringToLowerCase(element.tagName);\n var parentTagName = stringToLowerCase(parent.tagName);\n\n if (element.namespaceURI === SVG_NAMESPACE) {\n // The only way to switch from HTML namespace to SVG\n // is via <svg>. If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'svg';\n }\n\n // The only way to switch from MathML to SVG is via\n // svg if parent is either <annotation-xml> or MathML\n // text integration points.\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n }\n\n // We only allow elements that are defined in SVG\n // spec. All others are disallowed in SVG namespace.\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n\n if (element.namespaceURI === MATHML_NAMESPACE) {\n // The only way to switch from HTML namespace to MathML\n // is via <math>. If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'math';\n }\n\n // The only way to switch from SVG to MathML is via\n // <math> and HTML integration points\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n }\n\n // We only allow elements that are defined in MathML\n // spec. All others are disallowed in MathML namespace.\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n\n if (element.namespaceURI === HTML_NAMESPACE) {\n // The only way to switch from SVG to HTML is via\n // HTML integration points, and from MathML to HTML\n // is via MathML text integration points\n if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n\n if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n\n // Certain elements are allowed in both SVG and HTML\n // namespace. We need to specify them explicitly\n // so that they don't get erronously deleted from\n // HTML namespace.\n var commonSvgAndHTMLElements = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\n\n // We disallow tags that are specific for MathML\n // or SVG and should never appear in HTML namespace\n return !ALL_MATHML_TAGS[tagName] && (commonSvgAndHTMLElements[tagName] || !ALL_SVG_TAGS[tagName]);\n }\n\n // The code should never reach this place (this means\n // that the element somehow got namespace that is not\n // HTML, SVG or MathML). Return false just in case.\n return false;\n };\n\n /**\n * _forceRemove\n *\n * @param {Node} node a DOM node\n */\n var _forceRemove = function _forceRemove(node) {\n arrayPush(DOMPurify.removed, { element: node });\n try {\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\n node.parentNode.removeChild(node);\n } catch (_) {\n try {\n node.outerHTML = emptyHTML;\n } catch (_) {\n node.remove();\n }\n }\n };\n\n /**\n * _removeAttribute\n *\n * @param {String} name an Attribute name\n * @param {Node} node a DOM node\n */\n var _removeAttribute = function _removeAttribute(name, node) {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: node.getAttributeNode(name),\n from: node\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: node\n });\n }\n\n node.removeAttribute(name);\n\n // We void attribute values for unremovable \"is\"\" attributes\n if (name === 'is' && !ALLOWED_ATTR[name]) {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(node);\n } catch (_) {}\n } else {\n try {\n node.setAttribute(name, '');\n } catch (_) {}\n }\n }\n };\n\n /**\n * _initDocument\n *\n * @param {String} dirty a string of dirty markup\n * @return {Document} a DOM, filled with the dirty markup\n */\n var _initDocument = function _initDocument(dirty) {\n /* Create a HTML document */\n var doc = void 0;\n var leadingWhitespace = void 0;\n\n if (FORCE_BODY) {\n dirty = '<remove></remove>' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n var matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml') {\n // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n dirty = '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' + dirty + '</body></html>';\n }\n\n var dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n /*\n * Use the DOMParser API by default, fallback later if needs be\n * DOMParser not work for svg when has multiple root element.\n */\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n } catch (_) {}\n }\n\n /* Use createHTMLDocument in case DOMParser is not available */\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, 'template', null);\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT ? '' : dirtyPayload;\n } catch (_) {\n // Syntax error if dirtyPayload is invalid xml\n }\n }\n\n var body = doc.body || doc.documentElement;\n\n if (dirty && leadingWhitespace) {\n body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n }\n\n /* Work on whole document or just its body */\n if (NAMESPACE === HTML_NAMESPACE) {\n return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n }\n\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n\n /**\n * _createIterator\n *\n * @param {Document} root document/fragment to create iterator for\n * @return {Iterator} iterator instance\n */\n var _createIterator = function _createIterator(root) {\n return createNodeIterator.call(root.ownerDocument || root, root,\n // eslint-disable-next-line no-bitwise\n NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT, null, false);\n };\n\n /**\n * _isClobbered\n *\n * @param {Node} elm element to check for clobbering attacks\n * @return {Boolean} true if clobbered, false if safe\n */\n var _isClobbered = function _isClobbered(elm) {\n return elm instanceof HTMLFormElement && (typeof elm.nodeName !== 'string' || typeof elm.textContent !== 'string' || typeof elm.removeChild !== 'function' || !(elm.attributes instanceof NamedNodeMap) || typeof elm.removeAttribute !== 'function' || typeof elm.setAttribute !== 'function' || typeof elm.namespaceURI !== 'string' || typeof elm.insertBefore !== 'function');\n };\n\n /**\n * _isNode\n *\n * @param {Node} obj object to check whether it's a DOM node\n * @return {Boolean} true is object is a DOM node\n */\n var _isNode = function _isNode(object) {\n return (typeof Node === 'undefined' ? 'undefined' : _typeof(Node)) === 'object' ? object instanceof Node : object && (typeof object === 'undefined' ? 'undefined' : _typeof(object)) === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string';\n };\n\n /**\n * _executeHook\n * Execute user configurable hooks\n *\n * @param {String} entryPoint Name of the hook's entry point\n * @param {Node} currentNode node to work on with the hook\n * @param {Object} data additional hook parameters\n */\n var _executeHook = function _executeHook(entryPoint, currentNode, data) {\n if (!hooks[entryPoint]) {\n return;\n }\n\n arrayForEach(hooks[entryPoint], function (hook) {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n };\n\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n *\n * @param {Node} currentNode to check for permission to exist\n * @return {Boolean} true if node was killed, false if left alive\n */\n var _sanitizeElements = function _sanitizeElements(currentNode) {\n var content = void 0;\n\n /* Execute a hook if present */\n _executeHook('beforeSanitizeElements', currentNode, null);\n\n /* Check if element is clobbered or can clobber */\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Check if tagname contains Unicode */\n if (stringMatch(currentNode.nodeName, /[\\u0080-\\uFFFF]/)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Now let's check the element's type and name */\n var tagName = transformCaseFunc(currentNode.nodeName);\n\n /* Execute a hook if present */\n _executeHook('uponSanitizeElement', currentNode, {\n tagName: tagName,\n allowedTags: ALLOWED_TAGS\n });\n\n /* Detect mXSS attempts abusing namespace confusion */\n if (!_isNode(currentNode.firstElementChild) && (!_isNode(currentNode.content) || !_isNode(currentNode.content.firstElementChild)) && regExpTest(/<[/\\w]/g, currentNode.innerHTML) && regExpTest(/<[/\\w]/g, currentNode.textContent)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Mitigate a problem with templates inside select */\n if (tagName === 'select' && regExpTest(/<template/i, currentNode.innerHTML)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Remove element if anything forbids its presence */\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n /* Check if we have a custom element to handle */\n if (!FORBID_TAGS[tagName] && _basicCustomElementTest(tagName)) {\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) return false;\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) return false;\n }\n\n /* Keep content except for bad-listed elements */\n if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n var parentNode = getParentNode(currentNode) || currentNode.parentNode;\n var childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n\n if (childNodes && parentNode) {\n var childCount = childNodes.length;\n\n for (var i = childCount - 1; i >= 0; --i) {\n parentNode.insertBefore(cloneNode(childNodes[i], true), getNextSibling(currentNode));\n }\n }\n }\n\n _forceRemove(currentNode);\n return true;\n }\n\n /* Check whether element has a valid namespace */\n if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n\n if ((tagName === 'noscript' || tagName === 'noembed') && regExpTest(/<\\/no(script|embed)/i, currentNode.innerHTML)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Sanitize element content to be template-safe */\n if (SAFE_FOR_TEMPLATES && currentNode.nodeType === 3) {\n /* Get the element's text content */\n content = currentNode.textContent;\n content = stringReplace(content, MUSTACHE_EXPR$$1, ' ');\n content = stringReplace(content, ERB_EXPR$$1, ' ');\n if (currentNode.textContent !== content) {\n arrayPush(DOMPurify.removed, { element: currentNode.cloneNode() });\n currentNode.textContent = content;\n }\n }\n\n /* Execute a hook if present */\n _executeHook('afterSanitizeElements', currentNode, null);\n\n return false;\n };\n\n /**\n * _isValidAttribute\n *\n * @param {string} lcTag Lowercase tag name of containing element.\n * @param {string} lcName Lowercase attribute name.\n * @param {string} value Attribute value.\n * @return {Boolean} Returns true if `value` is valid, otherwise false.\n */\n // eslint-disable-next-line complexity\n var _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {\n /* Make sure attribute cannot clobber */\n if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {\n return false;\n }\n\n /* Allow valid data-* attributes: At least one character after \"-\"\n (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n We don't need to check the value; it's always URI safe. */\n if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR$$1, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR$$1, lcName)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n if (\n // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n _basicCustomElementTest(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)) ||\n // Alternative, second condition checks if it's an `is`-attribute, AND\n // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n lcName === 'is' && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))) ; else {\n return false;\n }\n /* Check value is safe. First, is attr inert? If so, is safe */\n } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$$1, stringReplace(value, ATTR_WHITESPACE$$1, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA$$1, stringReplace(value, ATTR_WHITESPACE$$1, ''))) ; else if (!value) ; else {\n return false;\n }\n\n return true;\n };\n\n /**\n * _basicCustomElementCheck\n * checks if at least one dash is included in tagName, and it's not the first char\n * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n * @param {string} tagName name of the tag of the node to sanitize\n */\n var _basicCustomElementTest = function _basicCustomElementTest(tagName) {\n return tagName.indexOf('-') > 0;\n };\n\n /**\n * _sanitizeAttributes\n *\n * @protect attributes\n * @protect nodeName\n * @protect removeAttribute\n * @protect setAttribute\n *\n * @param {Node} currentNode to sanitize\n */\n var _sanitizeAttributes = function _sanitizeAttributes(currentNode) {\n var attr = void 0;\n var value = void 0;\n var lcName = void 0;\n var l = void 0;\n /* Execute a hook if present */\n _executeHook('beforeSanitizeAttributes', currentNode, null);\n\n var attributes = currentNode.attributes;\n\n /* Check if we have attributes; if not we might have a text node */\n\n if (!attributes) {\n return;\n }\n\n var hookEvent = {\n attrName: '',\n attrValue: '',\n keepAttr: true,\n allowedAttributes: ALLOWED_ATTR\n };\n l = attributes.length;\n\n /* Go backwards over all attributes; safely remove bad ones */\n while (l--) {\n attr = attributes[l];\n var _attr = attr,\n name = _attr.name,\n namespaceURI = _attr.namespaceURI;\n\n value = stringTrim(attr.value);\n lcName = transformCaseFunc(name);\n\n /* Execute a hook if present */\n hookEvent.attrName = lcName;\n hookEvent.attrValue = value;\n hookEvent.keepAttr = true;\n hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n _executeHook('uponSanitizeAttribute', currentNode, hookEvent);\n value = hookEvent.attrValue;\n /* Did the hooks approve of the attribute? */\n if (hookEvent.forceKeepAttr) {\n continue;\n }\n\n /* Remove attribute */\n _removeAttribute(name, currentNode);\n\n /* Did the hooks approve of the attribute? */\n if (!hookEvent.keepAttr) {\n continue;\n }\n\n /* Work around a security issue in jQuery 3.0 */\n if (regExpTest(/\\/>/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n\n /* Sanitize attribute content to be template-safe */\n if (SAFE_FOR_TEMPLATES) {\n value = stringReplace(value, MUSTACHE_EXPR$$1, ' ');\n value = stringReplace(value, ERB_EXPR$$1, ' ');\n }\n\n /* Is `value` valid for this attribute? */\n var lcTag = transformCaseFunc(currentNode.nodeName);\n if (!_isValidAttribute(lcTag, lcName, value)) {\n continue;\n }\n\n /* Handle invalid data-* attribute set by try-catching it */\n try {\n if (namespaceURI) {\n currentNode.setAttributeNS(namespaceURI, name, value);\n } else {\n /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n currentNode.setAttribute(name, value);\n }\n\n arrayPop(DOMPurify.removed);\n } catch (_) {}\n }\n\n /* Execute a hook if present */\n _executeHook('afterSanitizeAttributes', currentNode, null);\n };\n\n /**\n * _sanitizeShadowDOM\n *\n * @param {DocumentFragment} fragment to iterate over recursively\n */\n var _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {\n var shadowNode = void 0;\n var shadowIterator = _createIterator(fragment);\n\n /* Execute a hook if present */\n _executeHook('beforeSanitizeShadowDOM', fragment, null);\n\n while (shadowNode = shadowIterator.nextNode()) {\n /* Execute a hook if present */\n _executeHook('uponSanitizeShadowNode', shadowNode, null);\n\n /* Sanitize tags and elements */\n if (_sanitizeElements(shadowNode)) {\n continue;\n }\n\n /* Deep shadow DOM detected */\n if (shadowNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(shadowNode.content);\n }\n\n /* Check attributes, sanitize if necessary */\n _sanitizeAttributes(shadowNode);\n }\n\n /* Execute a hook if present */\n _executeHook('afterSanitizeShadowDOM', fragment, null);\n };\n\n /**\n * Sanitize\n * Public method providing core sanitation functionality\n *\n * @param {String|Node} dirty string or DOM node\n * @param {Object} configuration object\n */\n // eslint-disable-next-line complexity\n DOMPurify.sanitize = function (dirty, cfg) {\n var body = void 0;\n var importedNode = void 0;\n var currentNode = void 0;\n var oldNode = void 0;\n var returnNode = void 0;\n /* Make sure we have a string to sanitize.\n DO NOT return early, as this will return the wrong type if\n the user has requested a DOM object rather than a string */\n IS_EMPTY_INPUT = !dirty;\n if (IS_EMPTY_INPUT) {\n dirty = '<!-->';\n }\n\n /* Stringify, in case dirty is an object */\n if (typeof dirty !== 'string' && !_isNode(dirty)) {\n // eslint-disable-next-line no-negated-condition\n if (typeof dirty.toString !== 'function') {\n throw typeErrorCreate('toString is not a function');\n } else {\n dirty = dirty.toString();\n if (typeof dirty !== 'string') {\n throw typeErrorCreate('dirty is not a string, aborting');\n }\n }\n }\n\n /* Check we can run. Otherwise fall back or ignore */\n if (!DOMPurify.isSupported) {\n if (_typeof(window.toStaticHTML) === 'object' || typeof window.toStaticHTML === 'function') {\n if (typeof dirty === 'string') {\n return window.toStaticHTML(dirty);\n }\n\n if (_isNode(dirty)) {\n return window.toStaticHTML(dirty.outerHTML);\n }\n }\n\n return dirty;\n }\n\n /* Assign config vars */\n if (!SET_CONFIG) {\n _parseConfig(cfg);\n }\n\n /* Clean up removed elements */\n DOMPurify.removed = [];\n\n /* Check if dirty is correctly typed for IN_PLACE */\n if (typeof dirty === 'string') {\n IN_PLACE = false;\n }\n\n if (IN_PLACE) {\n /* Do some early pre-sanitization to avoid unsafe root nodes */\n if (dirty.nodeName) {\n var tagName = transformCaseFunc(dirty.nodeName);\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place');\n }\n }\n } else if (dirty instanceof Node) {\n /* If dirty is a DOM element, append to an empty document to avoid\n elements being stripped by the parser */\n body = _initDocument('<!---->');\n importedNode = body.ownerDocument.importNode(dirty, true);\n if (importedNode.nodeType === 1 && importedNode.nodeName === 'BODY') {\n /* Node is already a body, use as is */\n body = importedNode;\n } else if (importedNode.nodeName === 'HTML') {\n body = importedNode;\n } else {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n body.appendChild(importedNode);\n }\n } else {\n /* Exit directly if we have nothing to do */\n if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT &&\n // eslint-disable-next-line unicorn/prefer-includes\n dirty.indexOf('<') === -1) {\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;\n }\n\n /* Initialize the document to work on */\n body = _initDocument(dirty);\n\n /* Check we have a DOM node from the data */\n if (!body) {\n return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n }\n }\n\n /* Remove first element node (ours) if FORCE_BODY is set */\n if (body && FORCE_BODY) {\n _forceRemove(body.firstChild);\n }\n\n /* Get node iterator */\n var nodeIterator = _createIterator(IN_PLACE ? dirty : body);\n\n /* Now start iterating over the created document */\n while (currentNode = nodeIterator.nextNode()) {\n /* Fix IE's strange behavior with manipulated textNodes #89 */\n if (currentNode.nodeType === 3 && currentNode === oldNode) {\n continue;\n }\n\n /* Sanitize tags and elements */\n if (_sanitizeElements(currentNode)) {\n continue;\n }\n\n /* Shadow DOM detected, sanitize it */\n if (currentNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(currentNode.content);\n }\n\n /* Check attributes, sanitize if necessary */\n _sanitizeAttributes(currentNode);\n\n oldNode = currentNode;\n }\n\n oldNode = null;\n\n /* If we sanitized `dirty` in-place, return it. */\n if (IN_PLACE) {\n return dirty;\n }\n\n /* Return sanitized string or DOM */\n if (RETURN_DOM) {\n if (RETURN_DOM_FRAGMENT) {\n returnNode = createDocumentFragment.call(body.ownerDocument);\n\n while (body.firstChild) {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n returnNode.appendChild(body.firstChild);\n }\n } else {\n returnNode = body;\n }\n\n if (ALLOWED_ATTR.shadowroot) {\n /*\n AdoptNode() is not used because internal state is not reset\n (e.g. the past names map of a HTMLFormElement), this is safe\n in theory but we would rather not risk another attack vector.\n The state that is cloned by importNode() is explicitly defined\n by the specs.\n */\n returnNode = importNode.call(originalDocument, returnNode, true);\n }\n\n return returnNode;\n }\n\n var serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n\n /* Serialize doctype if allowed */\n if (WHOLE_DOCUMENT && ALLOWED_TAGS['!doctype'] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {\n serializedHTML = '<!DOCTYPE ' + body.ownerDocument.doctype.name + '>\\n' + serializedHTML;\n }\n\n /* Sanitize final string template-safe */\n if (SAFE_FOR_TEMPLATES) {\n serializedHTML = stringReplace(serializedHTML, MUSTACHE_EXPR$$1, ' ');\n serializedHTML = stringReplace(serializedHTML, ERB_EXPR$$1, ' ');\n }\n\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;\n };\n\n /**\n * Public method to set the configuration once\n * setConfig\n *\n * @param {Object} cfg configuration object\n */\n DOMPurify.setConfig = function (cfg) {\n _parseConfig(cfg);\n SET_CONFIG = true;\n };\n\n /**\n * Public method to remove the configuration\n * clearConfig\n *\n */\n DOMPurify.clearConfig = function () {\n CONFIG = null;\n SET_CONFIG = false;\n };\n\n /**\n * Public method to check if an attribute value is valid.\n * Uses last set config, if any. Otherwise, uses config defaults.\n * isValidAttribute\n *\n * @param {string} tag Tag name of containing element.\n * @param {string} attr Attribute name.\n * @param {string} value Attribute value.\n * @return {Boolean} Returns true if `value` is valid. Otherwise, returns false.\n */\n DOMPurify.isValidAttribute = function (tag, attr, value) {\n /* Initialize shared config vars if necessary. */\n if (!CONFIG) {\n _parseConfig({});\n }\n\n var lcTag = transformCaseFunc(tag);\n var lcName = transformCaseFunc(attr);\n return _isValidAttribute(lcTag, lcName, value);\n };\n\n /**\n * AddHook\n * Public method to add DOMPurify hooks\n *\n * @param {String} entryPoint entry point for the hook to add\n * @param {Function} hookFunction function to execute\n */\n DOMPurify.addHook = function (entryPoint, hookFunction) {\n if (typeof hookFunction !== 'function') {\n return;\n }\n\n hooks[entryPoint] = hooks[entryPoint] || [];\n arrayPush(hooks[entryPoint], hookFunction);\n };\n\n /**\n * RemoveHook\n * Public method to remove a DOMPurify hook at a given entryPoint\n * (pops it from the stack of hooks if more are present)\n *\n * @param {String} entryPoint entry point for the hook to remove\n */\n DOMPurify.removeHook = function (entryPoint) {\n if (hooks[entryPoint]) {\n arrayPop(hooks[entryPoint]);\n }\n };\n\n /**\n * RemoveHooks\n * Public method to remove all DOMPurify hooks at a given entryPoint\n *\n * @param {String} entryPoint entry point for the hooks to remove\n */\n DOMPurify.removeHooks = function (entryPoint) {\n if (hooks[entryPoint]) {\n hooks[entryPoint] = [];\n }\n };\n\n /**\n * RemoveAllHooks\n * Public method to remove all DOMPurify hooks\n *\n */\n DOMPurify.removeAllHooks = function () {\n hooks = {};\n };\n\n return DOMPurify;\n }\n\n var purify = createDOMPurify();\n\n return purify;\n\n}));\n//# sourceMappingURL=purify.js.map\n","/**\n * Copyright (c) 2014, Chris Pettitt\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * 3. Neither the name of the copyright holder nor the names of its contributors\n * may be used to endorse or promote products derived from this software without\n * specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nvar lib = require(\"./lib\");\n\nmodule.exports = {\n Graph: lib.Graph,\n json: require(\"./lib/json\"),\n alg: require(\"./lib/alg\"),\n version: lib.version\n};\n","var _ = require(\"../lodash\");\n\nmodule.exports = components;\n\nfunction components(g) {\n var visited = {};\n var cmpts = [];\n var cmpt;\n\n function dfs(v) {\n if (_.has(visited, v)) return;\n visited[v] = true;\n cmpt.push(v);\n _.each(g.successors(v), dfs);\n _.each(g.predecessors(v), dfs);\n }\n\n _.each(g.nodes(), function(v) {\n cmpt = [];\n dfs(v);\n if (cmpt.length) {\n cmpts.push(cmpt);\n }\n });\n\n return cmpts;\n}\n","var _ = require(\"../lodash\");\n\nmodule.exports = dfs;\n\n/*\n * A helper that preforms a pre- or post-order traversal on the input graph\n * and returns the nodes in the order they were visited. If the graph is\n * undirected then this algorithm will navigate using neighbors. If the graph\n * is directed then this algorithm will navigate using successors.\n *\n * Order must be one of \"pre\" or \"post\".\n */\nfunction dfs(g, vs, order) {\n if (!_.isArray(vs)) {\n vs = [vs];\n }\n\n var navigation = (g.isDirected() ? g.successors : g.neighbors).bind(g);\n\n var acc = [];\n var visited = {};\n _.each(vs, function(v) {\n if (!g.hasNode(v)) {\n throw new Error(\"Graph does not have node: \" + v);\n }\n\n doDfs(g, v, order === \"post\", visited, navigation, acc);\n });\n return acc;\n}\n\nfunction doDfs(g, v, postorder, visited, navigation, acc) {\n if (!_.has(visited, v)) {\n visited[v] = true;\n\n if (!postorder) { acc.push(v); }\n _.each(navigation(v), function(w) {\n doDfs(g, w, postorder, visited, navigation, acc);\n });\n if (postorder) { acc.push(v); }\n }\n}\n","var dijkstra = require(\"./dijkstra\");\nvar _ = require(\"../lodash\");\n\nmodule.exports = dijkstraAll;\n\nfunction dijkstraAll(g, weightFunc, edgeFunc) {\n return _.transform(g.nodes(), function(acc, v) {\n acc[v] = dijkstra(g, v, weightFunc, edgeFunc);\n }, {});\n}\n","var _ = require(\"../lodash\");\nvar PriorityQueue = require(\"../data/priority-queue\");\n\nmodule.exports = dijkstra;\n\nvar DEFAULT_WEIGHT_FUNC = _.constant(1);\n\nfunction dijkstra(g, source, weightFn, edgeFn) {\n return runDijkstra(g, String(source),\n weightFn || DEFAULT_WEIGHT_FUNC,\n edgeFn || function(v) { return g.outEdges(v); });\n}\n\nfunction runDijkstra(g, source, weightFn, edgeFn) {\n var results = {};\n var pq = new PriorityQueue();\n var v, vEntry;\n\n var updateNeighbors = function(edge) {\n var w = edge.v !== v ? edge.v : edge.w;\n var wEntry = results[w];\n var weight = weightFn(edge);\n var distance = vEntry.distance + weight;\n\n if (weight < 0) {\n throw new Error(\"dijkstra does not allow negative edge weights. \" +\n \"Bad edge: \" + edge + \" Weight: \" + weight);\n }\n\n if (distance < wEntry.distance) {\n wEntry.distance = distance;\n wEntry.predecessor = v;\n pq.decrease(w, distance);\n }\n };\n\n g.nodes().forEach(function(v) {\n var distance = v === source ? 0 : Number.POSITIVE_INFINITY;\n results[v] = { distance: distance };\n pq.add(v, distance);\n });\n\n while (pq.size() > 0) {\n v = pq.removeMin();\n vEntry = results[v];\n if (vEntry.distance === Number.POSITIVE_INFINITY) {\n break;\n }\n\n edgeFn(v).forEach(updateNeighbors);\n }\n\n return results;\n}\n","var _ = require(\"../lodash\");\nvar tarjan = require(\"./tarjan\");\n\nmodule.exports = findCycles;\n\nfunction findCycles(g) {\n return _.filter(tarjan(g), function(cmpt) {\n return cmpt.length > 1 || (cmpt.length === 1 && g.hasEdge(cmpt[0], cmpt[0]));\n });\n}\n","var _ = require(\"../lodash\");\n\nmodule.exports = floydWarshall;\n\nvar DEFAULT_WEIGHT_FUNC = _.constant(1);\n\nfunction floydWarshall(g, weightFn, edgeFn) {\n return runFloydWarshall(g,\n weightFn || DEFAULT_WEIGHT_FUNC,\n edgeFn || function(v) { return g.outEdges(v); });\n}\n\nfunction runFloydWarshall(g, weightFn, edgeFn) {\n var results = {};\n var nodes = g.nodes();\n\n nodes.forEach(function(v) {\n results[v] = {};\n results[v][v] = { distance: 0 };\n nodes.forEach(function(w) {\n if (v !== w) {\n results[v][w] = { distance: Number.POSITIVE_INFINITY };\n }\n });\n edgeFn(v).forEach(function(edge) {\n var w = edge.v === v ? edge.w : edge.v;\n var d = weightFn(edge);\n results[v][w] = { distance: d, predecessor: v };\n });\n });\n\n nodes.forEach(function(k) {\n var rowK = results[k];\n nodes.forEach(function(i) {\n var rowI = results[i];\n nodes.forEach(function(j) {\n var ik = rowI[k];\n var kj = rowK[j];\n var ij = rowI[j];\n var altDistance = ik.distance + kj.distance;\n if (altDistance < ij.distance) {\n ij.distance = altDistance;\n ij.predecessor = kj.predecessor;\n }\n });\n });\n });\n\n return results;\n}\n","module.exports = {\n components: require(\"./components\"),\n dijkstra: require(\"./dijkstra\"),\n dijkstraAll: require(\"./dijkstra-all\"),\n findCycles: require(\"./find-cycles\"),\n floydWarshall: require(\"./floyd-warshall\"),\n isAcyclic: require(\"./is-acyclic\"),\n postorder: require(\"./postorder\"),\n preorder: require(\"./preorder\"),\n prim: require(\"./prim\"),\n tarjan: require(\"./tarjan\"),\n topsort: require(\"./topsort\")\n};\n","var topsort = require(\"./topsort\");\n\nmodule.exports = isAcyclic;\n\nfunction isAcyclic(g) {\n try {\n topsort(g);\n } catch (e) {\n if (e instanceof topsort.CycleException) {\n return false;\n }\n throw e;\n }\n return true;\n}\n","var dfs = require(\"./dfs\");\n\nmodule.exports = postorder;\n\nfunction postorder(g, vs) {\n return dfs(g, vs, \"post\");\n}\n","var dfs = require(\"./dfs\");\n\nmodule.exports = preorder;\n\nfunction preorder(g, vs) {\n return dfs(g, vs, \"pre\");\n}\n","var _ = require(\"../lodash\");\nvar Graph = require(\"../graph\");\nvar PriorityQueue = require(\"../data/priority-queue\");\n\nmodule.exports = prim;\n\nfunction prim(g, weightFunc) {\n var result = new Graph();\n var parents = {};\n var pq = new PriorityQueue();\n var v;\n\n function updateNeighbors(edge) {\n var w = edge.v === v ? edge.w : edge.v;\n var pri = pq.priority(w);\n if (pri !== undefined) {\n var edgeWeight = weightFunc(edge);\n if (edgeWeight < pri) {\n parents[w] = v;\n pq.decrease(w, edgeWeight);\n }\n }\n }\n\n if (g.nodeCount() === 0) {\n return result;\n }\n\n _.each(g.nodes(), function(v) {\n pq.add(v, Number.POSITIVE_INFINITY);\n result.setNode(v);\n });\n\n // Start from an arbitrary node\n pq.decrease(g.nodes()[0], 0);\n\n var init = false;\n while (pq.size() > 0) {\n v = pq.removeMin();\n if (_.has(parents, v)) {\n result.setEdge(v, parents[v]);\n } else if (init) {\n throw new Error(\"Input graph is not connected: \" + g);\n } else {\n init = true;\n }\n\n g.nodeEdges(v).forEach(updateNeighbors);\n }\n\n return result;\n}\n","var _ = require(\"../lodash\");\n\nmodule.exports = tarjan;\n\nfunction tarjan(g) {\n var index = 0;\n var stack = [];\n var visited = {}; // node id -> { onStack, lowlink, index }\n var results = [];\n\n function dfs(v) {\n var entry = visited[v] = {\n onStack: true,\n lowlink: index,\n index: index++\n };\n stack.push(v);\n\n g.successors(v).forEach(function(w) {\n if (!_.has(visited, w)) {\n dfs(w);\n entry.lowlink = Math.min(entry.lowlink, visited[w].lowlink);\n } else if (visited[w].onStack) {\n entry.lowlink = Math.min(entry.lowlink, visited[w].index);\n }\n });\n\n if (entry.lowlink === entry.index) {\n var cmpt = [];\n var w;\n do {\n w = stack.pop();\n visited[w].onStack = false;\n cmpt.push(w);\n } while (v !== w);\n results.push(cmpt);\n }\n }\n\n g.nodes().forEach(function(v) {\n if (!_.has(visited, v)) {\n dfs(v);\n }\n });\n\n return results;\n}\n","var _ = require(\"../lodash\");\n\nmodule.exports = topsort;\ntopsort.CycleException = CycleException;\n\nfunction topsort(g) {\n var visited = {};\n var stack = {};\n var results = [];\n\n function visit(node) {\n if (_.has(stack, node)) {\n throw new CycleException();\n }\n\n if (!_.has(visited, node)) {\n stack[node] = true;\n visited[node] = true;\n _.each(g.predecessors(node), visit);\n delete stack[node];\n results.push(node);\n }\n }\n\n _.each(g.sinks(), visit);\n\n if (_.size(visited) !== g.nodeCount()) {\n throw new CycleException();\n }\n\n return results;\n}\n\nfunction CycleException() {}\nCycleException.prototype = new Error(); // must be an instance of Error to pass testing","var _ = require(\"../lodash\");\n\nmodule.exports = PriorityQueue;\n\n/**\n * A min-priority queue data structure. This algorithm is derived from Cormen,\n * et al., \"Introduction to Algorithms\". The basic idea of a min-priority\n * queue is that you can efficiently (in O(1) time) get the smallest key in\n * the queue. Adding and removing elements takes O(log n) time. A key can\n * have its priority decreased in O(log n) time.\n */\nfunction PriorityQueue() {\n this._arr = [];\n this._keyIndices = {};\n}\n\n/**\n * Returns the number of elements in the queue. Takes `O(1)` time.\n */\nPriorityQueue.prototype.size = function() {\n return this._arr.length;\n};\n\n/**\n * Returns the keys that are in the queue. Takes `O(n)` time.\n */\nPriorityQueue.prototype.keys = function() {\n return this._arr.map(function(x) { return x.key; });\n};\n\n/**\n * Returns `true` if **key** is in the queue and `false` if not.\n */\nPriorityQueue.prototype.has = function(key) {\n return _.has(this._keyIndices, key);\n};\n\n/**\n * Returns the priority for **key**. If **key** is not present in the queue\n * then this function returns `undefined`. Takes `O(1)` time.\n *\n * @param {Object} key\n */\nPriorityQueue.prototype.priority = function(key) {\n var index = this._keyIndices[key];\n if (index !== undefined) {\n return this._arr[index].priority;\n }\n};\n\n/**\n * Returns the key for the minimum element in this queue. If the queue is\n * empty this function throws an Error. Takes `O(1)` time.\n */\nPriorityQueue.prototype.min = function() {\n if (this.size() === 0) {\n throw new Error(\"Queue underflow\");\n }\n return this._arr[0].key;\n};\n\n/**\n * Inserts a new key into the priority queue. If the key already exists in\n * the queue this function returns `false`; otherwise it will return `true`.\n * Takes `O(n)` time.\n *\n * @param {Object} key the key to add\n * @param {Number} priority the initial priority for the key\n */\nPriorityQueue.prototype.add = function(key, priority) {\n var keyIndices = this._keyIndices;\n key = String(key);\n if (!_.has(keyIndices, key)) {\n var arr = this._arr;\n var index = arr.length;\n keyIndices[key] = index;\n arr.push({key: key, priority: priority});\n this._decrease(index);\n return true;\n }\n return false;\n};\n\n/**\n * Removes and returns the smallest key in the queue. Takes `O(log n)` time.\n */\nPriorityQueue.prototype.removeMin = function() {\n this._swap(0, this._arr.length - 1);\n var min = this._arr.pop();\n delete this._keyIndices[min.key];\n this._heapify(0);\n return min.key;\n};\n\n/**\n * Decreases the priority for **key** to **priority**. If the new priority is\n * greater than the previous priority, this function will throw an Error.\n *\n * @param {Object} key the key for which to raise priority\n * @param {Number} priority the new priority for the key\n */\nPriorityQueue.prototype.decrease = function(key, priority) {\n var index = this._keyIndices[key];\n if (priority > this._arr[index].priority) {\n throw new Error(\"New priority is greater than current priority. \" +\n \"Key: \" + key + \" Old: \" + this._arr[index].priority + \" New: \" + priority);\n }\n this._arr[index].priority = priority;\n this._decrease(index);\n};\n\nPriorityQueue.prototype._heapify = function(i) {\n var arr = this._arr;\n var l = 2 * i;\n var r = l + 1;\n var largest = i;\n if (l < arr.length) {\n largest = arr[l].priority < arr[largest].priority ? l : largest;\n if (r < arr.length) {\n largest = arr[r].priority < arr[largest].priority ? r : largest;\n }\n if (largest !== i) {\n this._swap(i, largest);\n this._heapify(largest);\n }\n }\n};\n\nPriorityQueue.prototype._decrease = function(index) {\n var arr = this._arr;\n var priority = arr[index].priority;\n var parent;\n while (index !== 0) {\n parent = index >> 1;\n if (arr[parent].priority < priority) {\n break;\n }\n this._swap(index, parent);\n index = parent;\n }\n};\n\nPriorityQueue.prototype._swap = function(i, j) {\n var arr = this._arr;\n var keyIndices = this._keyIndices;\n var origArrI = arr[i];\n var origArrJ = arr[j];\n arr[i] = origArrJ;\n arr[j] = origArrI;\n keyIndices[origArrJ.key] = i;\n keyIndices[origArrI.key] = j;\n};\n","\"use strict\";\n\nvar _ = require(\"./lodash\");\n\nmodule.exports = Graph;\n\nvar DEFAULT_EDGE_NAME = \"\\x00\";\nvar GRAPH_NODE = \"\\x00\";\nvar EDGE_KEY_DELIM = \"\\x01\";\n\n// Implementation notes:\n//\n// * Node id query functions should return string ids for the nodes\n// * Edge id query functions should return an \"edgeObj\", edge object, that is\n// composed of enough information to uniquely identify an edge: {v, w, name}.\n// * Internally we use an \"edgeId\", a stringified form of the edgeObj, to\n// reference edges. This is because we need a performant way to look these\n// edges up and, object properties, which have string keys, are the closest\n// we're going to get to a performant hashtable in JavaScript.\n\nfunction Graph(opts) {\n this._isDirected = _.has(opts, \"directed\") ? opts.directed : true;\n this._isMultigraph = _.has(opts, \"multigraph\") ? opts.multigraph : false;\n this._isCompound = _.has(opts, \"compound\") ? opts.compound : false;\n\n // Label for the graph itself\n this._label = undefined;\n\n // Defaults to be set when creating a new node\n this._defaultNodeLabelFn = _.constant(undefined);\n\n // Defaults to be set when creating a new edge\n this._defaultEdgeLabelFn = _.constant(undefined);\n\n // v -> label\n this._nodes = {};\n\n if (this._isCompound) {\n // v -> parent\n this._parent = {};\n\n // v -> children\n this._children = {};\n this._children[GRAPH_NODE] = {};\n }\n\n // v -> edgeObj\n this._in = {};\n\n // u -> v -> Number\n this._preds = {};\n\n // v -> edgeObj\n this._out = {};\n\n // v -> w -> Number\n this._sucs = {};\n\n // e -> edgeObj\n this._edgeObjs = {};\n\n // e -> label\n this._edgeLabels = {};\n}\n\n/* Number of nodes in the graph. Should only be changed by the implementation. */\nGraph.prototype._nodeCount = 0;\n\n/* Number of edges in the graph. Should only be changed by the implementation. */\nGraph.prototype._edgeCount = 0;\n\n\n/* === Graph functions ========= */\n\nGraph.prototype.isDirected = function() {\n return this._isDirected;\n};\n\nGraph.prototype.isMultigraph = function() {\n return this._isMultigraph;\n};\n\nGraph.prototype.isCompound = function() {\n return this._isCompound;\n};\n\nGraph.prototype.setGraph = function(label) {\n this._label = label;\n return this;\n};\n\nGraph.prototype.graph = function() {\n return this._label;\n};\n\n\n/* === Node functions ========== */\n\nGraph.prototype.setDefaultNodeLabel = function(newDefault) {\n if (!_.isFunction(newDefault)) {\n newDefault = _.constant(newDefault);\n }\n this._defaultNodeLabelFn = newDefault;\n return this;\n};\n\nGraph.prototype.nodeCount = function() {\n return this._nodeCount;\n};\n\nGraph.prototype.nodes = function() {\n return _.keys(this._nodes);\n};\n\nGraph.prototype.sources = function() {\n var self = this;\n return _.filter(this.nodes(), function(v) {\n return _.isEmpty(self._in[v]);\n });\n};\n\nGraph.prototype.sinks = function() {\n var self = this;\n return _.filter(this.nodes(), function(v) {\n return _.isEmpty(self._out[v]);\n });\n};\n\nGraph.prototype.setNodes = function(vs, value) {\n var args = arguments;\n var self = this;\n _.each(vs, function(v) {\n if (args.length > 1) {\n self.setNode(v, value);\n } else {\n self.setNode(v);\n }\n });\n return this;\n};\n\nGraph.prototype.setNode = function(v, value) {\n if (_.has(this._nodes, v)) {\n if (arguments.length > 1) {\n this._nodes[v] = value;\n }\n return this;\n }\n\n this._nodes[v] = arguments.length > 1 ? value : this._defaultNodeLabelFn(v);\n if (this._isCompound) {\n this._parent[v] = GRAPH_NODE;\n this._children[v] = {};\n this._children[GRAPH_NODE][v] = true;\n }\n this._in[v] = {};\n this._preds[v] = {};\n this._out[v] = {};\n this._sucs[v] = {};\n ++this._nodeCount;\n return this;\n};\n\nGraph.prototype.node = function(v) {\n return this._nodes[v];\n};\n\nGraph.prototype.hasNode = function(v) {\n return _.has(this._nodes, v);\n};\n\nGraph.prototype.removeNode = function(v) {\n var self = this;\n if (_.has(this._nodes, v)) {\n var removeEdge = function(e) { self.removeEdge(self._edgeObjs[e]); };\n delete this._nodes[v];\n if (this._isCompound) {\n this._removeFromParentsChildList(v);\n delete this._parent[v];\n _.each(this.children(v), function(child) {\n self.setParent(child);\n });\n delete this._children[v];\n }\n _.each(_.keys(this._in[v]), removeEdge);\n delete this._in[v];\n delete this._preds[v];\n _.each(_.keys(this._out[v]), removeEdge);\n delete this._out[v];\n delete this._sucs[v];\n --this._nodeCount;\n }\n return this;\n};\n\nGraph.prototype.setParent = function(v, parent) {\n if (!this._isCompound) {\n throw new Error(\"Cannot set parent in a non-compound graph\");\n }\n\n if (_.isUndefined(parent)) {\n parent = GRAPH_NODE;\n } else {\n // Coerce parent to string\n parent += \"\";\n for (var ancestor = parent;\n !_.isUndefined(ancestor);\n ancestor = this.parent(ancestor)) {\n if (ancestor === v) {\n throw new Error(\"Setting \" + parent+ \" as parent of \" + v +\n \" would create a cycle\");\n }\n }\n\n this.setNode(parent);\n }\n\n this.setNode(v);\n this._removeFromParentsChildList(v);\n this._parent[v] = parent;\n this._children[parent][v] = true;\n return this;\n};\n\nGraph.prototype._removeFromParentsChildList = function(v) {\n delete this._children[this._parent[v]][v];\n};\n\nGraph.prototype.parent = function(v) {\n if (this._isCompound) {\n var parent = this._parent[v];\n if (parent !== GRAPH_NODE) {\n return parent;\n }\n }\n};\n\nGraph.prototype.children = function(v) {\n if (_.isUndefined(v)) {\n v = GRAPH_NODE;\n }\n\n if (this._isCompound) {\n var children = this._children[v];\n if (children) {\n return _.keys(children);\n }\n } else if (v === GRAPH_NODE) {\n return this.nodes();\n } else if (this.hasNode(v)) {\n return [];\n }\n};\n\nGraph.prototype.predecessors = function(v) {\n var predsV = this._preds[v];\n if (predsV) {\n return _.keys(predsV);\n }\n};\n\nGraph.prototype.successors = function(v) {\n var sucsV = this._sucs[v];\n if (sucsV) {\n return _.keys(sucsV);\n }\n};\n\nGraph.prototype.neighbors = function(v) {\n var preds = this.predecessors(v);\n if (preds) {\n return _.union(preds, this.successors(v));\n }\n};\n\nGraph.prototype.isLeaf = function (v) {\n var neighbors;\n if (this.isDirected()) {\n neighbors = this.successors(v);\n } else {\n neighbors = this.neighbors(v);\n }\n return neighbors.length === 0;\n};\n\nGraph.prototype.filterNodes = function(filter) {\n var copy = new this.constructor({\n directed: this._isDirected,\n multigraph: this._isMultigraph,\n compound: this._isCompound\n });\n\n copy.setGraph(this.graph());\n\n var self = this;\n _.each(this._nodes, function(value, v) {\n if (filter(v)) {\n copy.setNode(v, value);\n }\n });\n\n _.each(this._edgeObjs, function(e) {\n if (copy.hasNode(e.v) && copy.hasNode(e.w)) {\n copy.setEdge(e, self.edge(e));\n }\n });\n\n var parents = {};\n function findParent(v) {\n var parent = self.parent(v);\n if (parent === undefined || copy.hasNode(parent)) {\n parents[v] = parent;\n return parent;\n } else if (parent in parents) {\n return parents[parent];\n } else {\n return findParent(parent);\n }\n }\n\n if (this._isCompound) {\n _.each(copy.nodes(), function(v) {\n copy.setParent(v, findParent(v));\n });\n }\n\n return copy;\n};\n\n/* === Edge functions ========== */\n\nGraph.prototype.setDefaultEdgeLabel = function(newDefault) {\n if (!_.isFunction(newDefault)) {\n newDefault = _.constant(newDefault);\n }\n this._defaultEdgeLabelFn = newDefault;\n return this;\n};\n\nGraph.prototype.edgeCount = function() {\n return this._edgeCount;\n};\n\nGraph.prototype.edges = function() {\n return _.values(this._edgeObjs);\n};\n\nGraph.prototype.setPath = function(vs, value) {\n var self = this;\n var args = arguments;\n _.reduce(vs, function(v, w) {\n if (args.length > 1) {\n self.setEdge(v, w, value);\n } else {\n self.setEdge(v, w);\n }\n return w;\n });\n return this;\n};\n\n/*\n * setEdge(v, w, [value, [name]])\n * setEdge({ v, w, [name] }, [value])\n */\nGraph.prototype.setEdge = function() {\n var v, w, name, value;\n var valueSpecified = false;\n var arg0 = arguments[0];\n\n if (typeof arg0 === \"object\" && arg0 !== null && \"v\" in arg0) {\n v = arg0.v;\n w = arg0.w;\n name = arg0.name;\n if (arguments.length === 2) {\n value = arguments[1];\n valueSpecified = true;\n }\n } else {\n v = arg0;\n w = arguments[1];\n name = arguments[3];\n if (arguments.length > 2) {\n value = arguments[2];\n valueSpecified = true;\n }\n }\n\n v = \"\" + v;\n w = \"\" + w;\n if (!_.isUndefined(name)) {\n name = \"\" + name;\n }\n\n var e = edgeArgsToId(this._isDirected, v, w, name);\n if (_.has(this._edgeLabels, e)) {\n if (valueSpecified) {\n this._edgeLabels[e] = value;\n }\n return this;\n }\n\n if (!_.isUndefined(name) && !this._isMultigraph) {\n throw new Error(\"Cannot set a named edge when isMultigraph = false\");\n }\n\n // It didn't exist, so we need to create it.\n // First ensure the nodes exist.\n this.setNode(v);\n this.setNode(w);\n\n this._edgeLabels[e] = valueSpecified ? value : this._defaultEdgeLabelFn(v, w, name);\n\n var edgeObj = edgeArgsToObj(this._isDirected, v, w, name);\n // Ensure we add undirected edges in a consistent way.\n v = edgeObj.v;\n w = edgeObj.w;\n\n Object.freeze(edgeObj);\n this._edgeObjs[e] = edgeObj;\n incrementOrInitEntry(this._preds[w], v);\n incrementOrInitEntry(this._sucs[v], w);\n this._in[w][e] = edgeObj;\n this._out[v][e] = edgeObj;\n this._edgeCount++;\n return this;\n};\n\nGraph.prototype.edge = function(v, w, name) {\n var e = (arguments.length === 1\n ? edgeObjToId(this._isDirected, arguments[0])\n : edgeArgsToId(this._isDirected, v, w, name));\n return this._edgeLabels[e];\n};\n\nGraph.prototype.hasEdge = function(v, w, name) {\n var e = (arguments.length === 1\n ? edgeObjToId(this._isDirected, arguments[0])\n : edgeArgsToId(this._isDirected, v, w, name));\n return _.has(this._edgeLabels, e);\n};\n\nGraph.prototype.removeEdge = function(v, w, name) {\n var e = (arguments.length === 1\n ? edgeObjToId(this._isDirected, arguments[0])\n : edgeArgsToId(this._isDirected, v, w, name));\n var edge = this._edgeObjs[e];\n if (edge) {\n v = edge.v;\n w = edge.w;\n delete this._edgeLabels[e];\n delete this._edgeObjs[e];\n decrementOrRemoveEntry(this._preds[w], v);\n decrementOrRemoveEntry(this._sucs[v], w);\n delete this._in[w][e];\n delete this._out[v][e];\n this._edgeCount--;\n }\n return this;\n};\n\nGraph.prototype.inEdges = function(v, u) {\n var inV = this._in[v];\n if (inV) {\n var edges = _.values(inV);\n if (!u) {\n return edges;\n }\n return _.filter(edges, function(edge) { return edge.v === u; });\n }\n};\n\nGraph.prototype.outEdges = function(v, w) {\n var outV = this._out[v];\n if (outV) {\n var edges = _.values(outV);\n if (!w) {\n return edges;\n }\n return _.filter(edges, function(edge) { return edge.w === w; });\n }\n};\n\nGraph.prototype.nodeEdges = function(v, w) {\n var inEdges = this.inEdges(v, w);\n if (inEdges) {\n return inEdges.concat(this.outEdges(v, w));\n }\n};\n\nfunction incrementOrInitEntry(map, k) {\n if (map[k]) {\n map[k]++;\n } else {\n map[k] = 1;\n }\n}\n\nfunction decrementOrRemoveEntry(map, k) {\n if (!--map[k]) { delete map[k]; }\n}\n\nfunction edgeArgsToId(isDirected, v_, w_, name) {\n var v = \"\" + v_;\n var w = \"\" + w_;\n if (!isDirected && v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n return v + EDGE_KEY_DELIM + w + EDGE_KEY_DELIM +\n (_.isUndefined(name) ? DEFAULT_EDGE_NAME : name);\n}\n\nfunction edgeArgsToObj(isDirected, v_, w_, name) {\n var v = \"\" + v_;\n var w = \"\" + w_;\n if (!isDirected && v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n var edgeObj = { v: v, w: w };\n if (name) {\n edgeObj.name = name;\n }\n return edgeObj;\n}\n\nfunction edgeObjToId(isDirected, edgeObj) {\n return edgeArgsToId(isDirected, edgeObj.v, edgeObj.w, edgeObj.name);\n}\n","// Includes only the \"core\" of graphlib\nmodule.exports = {\n Graph: require(\"./graph\"),\n version: require(\"./version\")\n};\n","var _ = require(\"./lodash\");\nvar Graph = require(\"./graph\");\n\nmodule.exports = {\n write: write,\n read: read\n};\n\nfunction write(g) {\n var json = {\n options: {\n directed: g.isDirected(),\n multigraph: g.isMultigraph(),\n compound: g.isCompound()\n },\n nodes: writeNodes(g),\n edges: writeEdges(g)\n };\n if (!_.isUndefined(g.graph())) {\n json.value = _.clone(g.graph());\n }\n return json;\n}\n\nfunction writeNodes(g) {\n return _.map(g.nodes(), function(v) {\n var nodeValue = g.node(v);\n var parent = g.parent(v);\n var node = { v: v };\n if (!_.isUndefined(nodeValue)) {\n node.value = nodeValue;\n }\n if (!_.isUndefined(parent)) {\n node.parent = parent;\n }\n return node;\n });\n}\n\nfunction writeEdges(g) {\n return _.map(g.edges(), function(e) {\n var edgeValue = g.edge(e);\n var edge = { v: e.v, w: e.w };\n if (!_.isUndefined(e.name)) {\n edge.name = e.name;\n }\n if (!_.isUndefined(edgeValue)) {\n edge.value = edgeValue;\n }\n return edge;\n });\n}\n\nfunction read(json) {\n var g = new Graph(json.options).setGraph(json.value);\n _.each(json.nodes, function(entry) {\n g.setNode(entry.v, entry.value);\n if (entry.parent) {\n g.setParent(entry.v, entry.parent);\n }\n });\n _.each(json.edges, function(entry) {\n g.setEdge({ v: entry.v, w: entry.w, name: entry.name }, entry.value);\n });\n return g;\n}\n","/* global window */\n\nvar lodash;\n\nif (typeof require === \"function\") {\n try {\n lodash = {\n clone: require(\"lodash/clone\"),\n constant: require(\"lodash/constant\"),\n each: require(\"lodash/each\"),\n filter: require(\"lodash/filter\"),\n has: require(\"lodash/has\"),\n isArray: require(\"lodash/isArray\"),\n isEmpty: require(\"lodash/isEmpty\"),\n isFunction: require(\"lodash/isFunction\"),\n isUndefined: require(\"lodash/isUndefined\"),\n keys: require(\"lodash/keys\"),\n map: require(\"lodash/map\"),\n reduce: require(\"lodash/reduce\"),\n size: require(\"lodash/size\"),\n transform: require(\"lodash/transform\"),\n union: require(\"lodash/union\"),\n values: require(\"lodash/values\")\n };\n } catch (e) {\n // continue regardless of error\n }\n}\n\nif (!lodash) {\n lodash = window._;\n}\n\nmodule.exports = lodash;\n","module.exports = '2.1.8';\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\nmodule.exports = arrayReduce;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","var baseProperty = require('./_baseProperty');\n\n/**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nvar asciiSize = baseProperty('length');\n\nmodule.exports = asciiSize;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignMergeValue;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var copyObject = require('./_copyObject'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","var Stack = require('./_Stack'),\n arrayEach = require('./_arrayEach'),\n assignValue = require('./_assignValue'),\n baseAssign = require('./_baseAssign'),\n baseAssignIn = require('./_baseAssignIn'),\n cloneBuffer = require('./_cloneBuffer'),\n copyArray = require('./_copyArray'),\n copySymbols = require('./_copySymbols'),\n copySymbolsIn = require('./_copySymbolsIn'),\n getAllKeys = require('./_getAllKeys'),\n getAllKeysIn = require('./_getAllKeysIn'),\n getTag = require('./_getTag'),\n initCloneArray = require('./_initCloneArray'),\n initCloneByTag = require('./_initCloneByTag'),\n initCloneObject = require('./_initCloneObject'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isMap = require('./isMap'),\n isObject = require('./isObject'),\n isSet = require('./isSet'),\n keys = require('./keys'),\n keysIn = require('./keysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nmodule.exports = baseClone;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nmodule.exports = baseCreate;\n","var baseForOwn = require('./_baseForOwn'),\n createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n","var isSymbol = require('./isSymbol');\n\n/**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\nfunction baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseExtremum;\n","var baseEach = require('./_baseEach');\n\n/**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n}\n\nmodule.exports = baseFilter;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","var arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\nfunction baseGt(value, other) {\n return value > other;\n}\n\nmodule.exports = baseGt;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n}\n\nmodule.exports = baseHas;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","var isObject = require('./isObject'),\n isPrototype = require('./_isPrototype'),\n nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n","/**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\nfunction baseLt(value, other) {\n return value < other;\n}\n\nmodule.exports = baseLt;\n","var baseEach = require('./_baseEach'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nmodule.exports = baseMap;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","var Stack = require('./_Stack'),\n assignMergeValue = require('./_assignMergeValue'),\n baseFor = require('./_baseFor'),\n baseMergeDeep = require('./_baseMergeDeep'),\n isObject = require('./isObject'),\n keysIn = require('./keysIn'),\n safeGet = require('./_safeGet');\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nmodule.exports = baseMerge;\n","var assignMergeValue = require('./_assignMergeValue'),\n cloneBuffer = require('./_cloneBuffer'),\n cloneTypedArray = require('./_cloneTypedArray'),\n copyArray = require('./_copyArray'),\n initCloneObject = require('./_initCloneObject'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLikeObject = require('./isArrayLikeObject'),\n isBuffer = require('./isBuffer'),\n isFunction = require('./isFunction'),\n isObject = require('./isObject'),\n isPlainObject = require('./isPlainObject'),\n isTypedArray = require('./isTypedArray'),\n safeGet = require('./_safeGet'),\n toPlainObject = require('./toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nmodule.exports = baseMergeDeep;\n","var arrayMap = require('./_arrayMap'),\n baseGet = require('./_baseGet'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n baseSortBy = require('./_baseSortBy'),\n baseUnary = require('./_baseUnary'),\n compareMultiple = require('./_compareMultiple'),\n identity = require('./identity'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(baseIteratee));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n}\n\nmodule.exports = baseOrderBy;\n","var basePickBy = require('./_basePickBy'),\n hasIn = require('./hasIn');\n\n/**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\nfunction basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n}\n\nmodule.exports = basePick;\n","var baseGet = require('./_baseGet'),\n baseSet = require('./_baseSet'),\n castPath = require('./_castPath');\n\n/**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n}\n\nmodule.exports = basePickBy;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n nativeMax = Math.max;\n\n/**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\nfunction baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n}\n\nmodule.exports = baseRange;\n","/**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\nfunction baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n}\n\nmodule.exports = baseReduce;\n","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","var assignValue = require('./_assignValue'),\n castPath = require('./_castPath'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nmodule.exports = baseSet;\n","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n","/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n}\n\nmodule.exports = baseSortBy;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n","var arrayMap = require('./_arrayMap');\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n}\n\nmodule.exports = baseValues;\n","/**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\nfunction baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n}\n\nmodule.exports = baseZipObject;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var identity = require('./identity');\n\n/**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\nfunction castFunction(value) {\n return typeof value == 'function' ? value : identity;\n}\n\nmodule.exports = castFunction;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nmodule.exports = cloneRegExp;\n","var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n","var isSymbol = require('./isSymbol');\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n}\n\nmodule.exports = compareAscending;\n","var compareAscending = require('./_compareAscending');\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n}\n\nmodule.exports = compareMultiple;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n","var assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n","var copyObject = require('./_copyObject'),\n getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n","var copyObject = require('./_copyObject'),\n getSymbolsIn = require('./_getSymbolsIn');\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nmodule.exports = createBaseEach;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var baseIteratee = require('./_baseIteratee'),\n isArrayLike = require('./isArrayLike'),\n keys = require('./keys');\n\n/**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\nfunction createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = baseIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n}\n\nmodule.exports = createFind;\n","var baseRange = require('./_baseRange'),\n isIterateeCall = require('./_isIterateeCall'),\n toFinite = require('./toFinite');\n\n/**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\nfunction createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n}\n\nmodule.exports = createRange;\n","var Set = require('./_Set'),\n noop = require('./noop'),\n setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","var flatten = require('./flatten'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nmodule.exports = flatRest;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbolsIn = require('./_getSymbolsIn'),\n keysIn = require('./keysIn');\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var arrayPush = require('./_arrayPush'),\n getPrototype = require('./_getPrototype'),\n getSymbols = require('./_getSymbols'),\n stubArray = require('./stubArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nmodule.exports = getSymbolsIn;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nmodule.exports = hasUnicode;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nmodule.exports = initCloneArray;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n cloneDataView = require('./_cloneDataView'),\n cloneRegExp = require('./_cloneRegExp'),\n cloneSymbol = require('./_cloneSymbol'),\n cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nmodule.exports = initCloneByTag;\n","var baseCreate = require('./_baseCreate'),\n getPrototype = require('./_getPrototype'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n","var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nmodule.exports = safeGet;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","var asciiSize = require('./_asciiSize'),\n hasUnicode = require('./_hasUnicode'),\n unicodeSize = require('./_unicodeSize');\n\n/**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\nfunction stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n}\n\nmodule.exports = stringSize;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nfunction unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n}\n\nmodule.exports = unicodeSize;\n","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = clone;\n","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = cloneDeep;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","var baseRest = require('./_baseRest'),\n eq = require('./eq'),\n isIterateeCall = require('./_isIterateeCall'),\n keysIn = require('./keysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\nvar defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n});\n\nmodule.exports = defaults;\n","module.exports = require('./forEach');\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var arrayFilter = require('./_arrayFilter'),\n baseFilter = require('./_baseFilter'),\n baseIteratee = require('./_baseIteratee'),\n isArray = require('./isArray');\n\n/**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\nfunction filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, baseIteratee(predicate, 3));\n}\n\nmodule.exports = filter;\n","var createFind = require('./_createFind'),\n findIndex = require('./findIndex');\n\n/**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\nvar find = createFind(findIndex);\n\nmodule.exports = find;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIteratee = require('./_baseIteratee'),\n toInteger = require('./toInteger');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\nmodule.exports = findIndex;\n","var baseFlatten = require('./_baseFlatten');\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nmodule.exports = flatten;\n","var arrayEach = require('./_arrayEach'),\n baseEach = require('./_baseEach'),\n castFunction = require('./_castFunction'),\n isArray = require('./isArray');\n\n/**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, castFunction(iteratee));\n}\n\nmodule.exports = forEach;\n","var baseFor = require('./_baseFor'),\n castFunction = require('./_castFunction'),\n keysIn = require('./keysIn');\n\n/**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\nfunction forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, castFunction(iteratee), keysIn);\n}\n\nmodule.exports = forIn;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var baseHas = require('./_baseHas'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\nfunction has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n}\n\nmodule.exports = has;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var isArrayLike = require('./isArrayLike'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseKeys = require('./_baseKeys'),\n getTag = require('./_getTag'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLike = require('./isArrayLike'),\n isBuffer = require('./isBuffer'),\n isPrototype = require('./_isPrototype'),\n isTypedArray = require('./isTypedArray');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\nfunction isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\n\nmodule.exports = isEmpty;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","var baseIsMap = require('./_baseIsMap'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","var baseIsSet = require('./_baseIsSet'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\n","var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","/**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\nfunction isUndefined(value) {\n return value === undefined;\n}\n\nmodule.exports = isUndefined;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n","var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n isArray = require('./isArray');\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, baseIteratee(iteratee, 3));\n}\n\nmodule.exports = map;\n","var baseAssignValue = require('./_baseAssignValue'),\n baseForOwn = require('./_baseForOwn'),\n baseIteratee = require('./_baseIteratee');\n\n/**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\nfunction mapValues(object, iteratee) {\n var result = {};\n iteratee = baseIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n}\n\nmodule.exports = mapValues;\n","var baseExtremum = require('./_baseExtremum'),\n baseGt = require('./_baseGt'),\n identity = require('./identity');\n\n/**\n * Computes the maximum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * _.max([4, 2, 8, 6]);\n * // => 8\n *\n * _.max([]);\n * // => undefined\n */\nfunction max(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseGt)\n : undefined;\n}\n\nmodule.exports = max;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var baseMerge = require('./_baseMerge'),\n createAssigner = require('./_createAssigner');\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nmodule.exports = merge;\n","var baseExtremum = require('./_baseExtremum'),\n baseLt = require('./_baseLt'),\n identity = require('./identity');\n\n/**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\nfunction min(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseLt)\n : undefined;\n}\n\nmodule.exports = min;\n","var baseExtremum = require('./_baseExtremum'),\n baseIteratee = require('./_baseIteratee'),\n baseLt = require('./_baseLt');\n\n/**\n * This method is like `_.min` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * // The `_.property` iteratee shorthand.\n * _.minBy(objects, 'n');\n * // => { 'n': 1 }\n */\nfunction minBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, baseIteratee(iteratee, 2), baseLt)\n : undefined;\n}\n\nmodule.exports = minBy;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","var basePick = require('./_basePick'),\n flatRest = require('./_flatRest');\n\n/**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\nvar pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n});\n\nmodule.exports = pick;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","var createRange = require('./_createRange');\n\n/**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\nvar range = createRange();\n\nmodule.exports = range;\n","var arrayReduce = require('./_arrayReduce'),\n baseEach = require('./_baseEach'),\n baseIteratee = require('./_baseIteratee'),\n baseReduce = require('./_baseReduce'),\n isArray = require('./isArray');\n\n/**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\nfunction reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, baseIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n}\n\nmodule.exports = reduce;\n","var baseKeys = require('./_baseKeys'),\n getTag = require('./_getTag'),\n isArrayLike = require('./isArrayLike'),\n isString = require('./isString'),\n stringSize = require('./_stringSize');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\nfunction size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n}\n\nmodule.exports = size;\n","var baseFlatten = require('./_baseFlatten'),\n baseOrderBy = require('./_baseOrderBy'),\n baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\nvar sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n});\n\nmodule.exports = sortBy;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n","var toFinite = require('./toFinite');\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var arrayEach = require('./_arrayEach'),\n baseCreate = require('./_baseCreate'),\n baseForOwn = require('./_baseForOwn'),\n baseIteratee = require('./_baseIteratee'),\n getPrototype = require('./_getPrototype'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isFunction = require('./isFunction'),\n isObject = require('./isObject'),\n isTypedArray = require('./isTypedArray');\n\n/**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\nfunction transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = baseIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n}\n\nmodule.exports = transform;\n","var baseFlatten = require('./_baseFlatten'),\n baseRest = require('./_baseRest'),\n baseUniq = require('./_baseUniq'),\n isArrayLikeObject = require('./isArrayLikeObject');\n\n/**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\nvar union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n});\n\nmodule.exports = union;\n","var toString = require('./toString');\n\n/** Used to generate unique IDs. */\nvar idCounter = 0;\n\n/**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\nfunction uniqueId(prefix) {\n var id = ++idCounter;\n return toString(prefix) + id;\n}\n\nmodule.exports = uniqueId;\n","var baseValues = require('./_baseValues'),\n keys = require('./keys');\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n}\n\nmodule.exports = values;\n","var assignValue = require('./_assignValue'),\n baseZipObject = require('./_baseZipObject');\n\n/**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\nfunction zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n}\n\nmodule.exports = zipObject;\n","var map = {\n\t\"./locale\": 9234,\n\t\"./locale.js\": 9234\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 1748;","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):e.moment=t()}(this,function(){\"use strict\";var e,i;function c(){return e.apply(null,arguments)}function o(e){return e instanceof Array||\"[object Array]\"===Object.prototype.toString.call(e)}function u(e){return null!=e&&\"[object Object]\"===Object.prototype.toString.call(e)}function l(e){return void 0===e}function h(e){return\"number\"==typeof e||\"[object Number]\"===Object.prototype.toString.call(e)}function d(e){return e instanceof Date||\"[object Date]\"===Object.prototype.toString.call(e)}function f(e,t){var n,s=[];for(n=0;n<e.length;++n)s.push(t(e[n],n));return s}function m(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function _(e,t){for(var n in t)m(t,n)&&(e[n]=t[n]);return m(t,\"toString\")&&(e.toString=t.toString),m(t,\"valueOf\")&&(e.valueOf=t.valueOf),e}function y(e,t,n,s){return Tt(e,t,n,s,!0).utc()}function g(e){return null==e._pf&&(e._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null,rfc2822:!1,weekdayMismatch:!1}),e._pf}function v(e){if(null==e._isValid){var t=g(e),n=i.call(t.parsedDateParts,function(e){return null!=e}),s=!isNaN(e._d.getTime())&&t.overflow<0&&!t.empty&&!t.invalidMonth&&!t.invalidWeekday&&!t.weekdayMismatch&&!t.nullInput&&!t.invalidFormat&&!t.userInvalidated&&(!t.meridiem||t.meridiem&&n);if(e._strict&&(s=s&&0===t.charsLeftOver&&0===t.unusedTokens.length&&void 0===t.bigHour),null!=Object.isFrozen&&Object.isFrozen(e))return s;e._isValid=s}return e._isValid}function p(e){var t=y(NaN);return null!=e?_(g(t),e):g(t).userInvalidated=!0,t}i=Array.prototype.some?Array.prototype.some:function(e){for(var t=Object(this),n=t.length>>>0,s=0;s<n;s++)if(s in t&&e.call(this,t[s],s,t))return!0;return!1};var r=c.momentProperties=[];function w(e,t){var n,s,i;if(l(t._isAMomentObject)||(e._isAMomentObject=t._isAMomentObject),l(t._i)||(e._i=t._i),l(t._f)||(e._f=t._f),l(t._l)||(e._l=t._l),l(t._strict)||(e._strict=t._strict),l(t._tzm)||(e._tzm=t._tzm),l(t._isUTC)||(e._isUTC=t._isUTC),l(t._offset)||(e._offset=t._offset),l(t._pf)||(e._pf=g(t)),l(t._locale)||(e._locale=t._locale),0<r.length)for(n=0;n<r.length;n++)l(i=t[s=r[n]])||(e[s]=i);return e}var t=!1;function M(e){w(this,e),this._d=new Date(null!=e._d?e._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===t&&(t=!0,c.updateOffset(this),t=!1)}function k(e){return e instanceof M||null!=e&&null!=e._isAMomentObject}function S(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function D(e){var t=+e,n=0;return 0!==t&&isFinite(t)&&(n=S(t)),n}function a(e,t,n){var s,i=Math.min(e.length,t.length),r=Math.abs(e.length-t.length),a=0;for(s=0;s<i;s++)(n&&e[s]!==t[s]||!n&&D(e[s])!==D(t[s]))&&a++;return a+r}function Y(e){!1===c.suppressDeprecationWarnings&&\"undefined\"!=typeof console&&console.warn&&console.warn(\"Deprecation warning: \"+e)}function n(i,r){var a=!0;return _(function(){if(null!=c.deprecationHandler&&c.deprecationHandler(null,i),a){for(var e,t=[],n=0;n<arguments.length;n++){if(e=\"\",\"object\"==typeof arguments[n]){for(var s in e+=\"\\n[\"+n+\"] \",arguments[0])e+=s+\": \"+arguments[0][s]+\", \";e=e.slice(0,-2)}else e=arguments[n];t.push(e)}Y(i+\"\\nArguments: \"+Array.prototype.slice.call(t).join(\"\")+\"\\n\"+(new Error).stack),a=!1}return r.apply(this,arguments)},r)}var s,O={};function T(e,t){null!=c.deprecationHandler&&c.deprecationHandler(e,t),O[e]||(Y(t),O[e]=!0)}function b(e){return e instanceof Function||\"[object Function]\"===Object.prototype.toString.call(e)}function x(e,t){var n,s=_({},e);for(n in t)m(t,n)&&(u(e[n])&&u(t[n])?(s[n]={},_(s[n],e[n]),_(s[n],t[n])):null!=t[n]?s[n]=t[n]:delete s[n]);for(n in e)m(e,n)&&!m(t,n)&&u(e[n])&&(s[n]=_({},s[n]));return s}function P(e){null!=e&&this.set(e)}c.suppressDeprecationWarnings=!1,c.deprecationHandler=null,s=Object.keys?Object.keys:function(e){var t,n=[];for(t in e)m(e,t)&&n.push(t);return n};var W={};function C(e,t){var n=e.toLowerCase();W[n]=W[n+\"s\"]=W[t]=e}function H(e){return\"string\"==typeof e?W[e]||W[e.toLowerCase()]:void 0}function R(e){var t,n,s={};for(n in e)m(e,n)&&(t=H(n))&&(s[t]=e[n]);return s}var U={};function F(e,t){U[e]=t}function L(e,t,n){var s=\"\"+Math.abs(e),i=t-s.length;return(0<=e?n?\"+\":\"\":\"-\")+Math.pow(10,Math.max(0,i)).toString().substr(1)+s}var N=/(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,G=/(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,V={},E={};function I(e,t,n,s){var i=s;\"string\"==typeof s&&(i=function(){return this[s]()}),e&&(E[e]=i),t&&(E[t[0]]=function(){return L(i.apply(this,arguments),t[1],t[2])}),n&&(E[n]=function(){return this.localeData().ordinal(i.apply(this,arguments),e)})}function A(e,t){return e.isValid()?(t=j(t,e.localeData()),V[t]=V[t]||function(s){var e,i,t,r=s.match(N);for(e=0,i=r.length;e<i;e++)E[r[e]]?r[e]=E[r[e]]:r[e]=(t=r[e]).match(/\\[[\\s\\S]/)?t.replace(/^\\[|\\]$/g,\"\"):t.replace(/\\\\/g,\"\");return function(e){var t,n=\"\";for(t=0;t<i;t++)n+=b(r[t])?r[t].call(e,s):r[t];return n}}(t),V[t](e)):e.localeData().invalidDate()}function j(e,t){var n=5;function s(e){return t.longDateFormat(e)||e}for(G.lastIndex=0;0<=n&&G.test(e);)e=e.replace(G,s),G.lastIndex=0,n-=1;return e}var Z=/\\d/,z=/\\d\\d/,$=/\\d{3}/,q=/\\d{4}/,J=/[+-]?\\d{6}/,B=/\\d\\d?/,Q=/\\d\\d\\d\\d?/,X=/\\d\\d\\d\\d\\d\\d?/,K=/\\d{1,3}/,ee=/\\d{1,4}/,te=/[+-]?\\d{1,6}/,ne=/\\d+/,se=/[+-]?\\d+/,ie=/Z|[+-]\\d\\d:?\\d\\d/gi,re=/Z|[+-]\\d\\d(?::?\\d\\d)?/gi,ae=/[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,oe={};function ue(e,n,s){oe[e]=b(n)?n:function(e,t){return e&&s?s:n}}function le(e,t){return m(oe,e)?oe[e](t._strict,t._locale):new RegExp(he(e.replace(\"\\\\\",\"\").replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,function(e,t,n,s,i){return t||n||s||i})))}function he(e){return e.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g,\"\\\\$&\")}var de={};function ce(e,n){var t,s=n;for(\"string\"==typeof e&&(e=[e]),h(n)&&(s=function(e,t){t[n]=D(e)}),t=0;t<e.length;t++)de[e[t]]=s}function fe(e,i){ce(e,function(e,t,n,s){n._w=n._w||{},i(e,n._w,n,s)})}var me=0,_e=1,ye=2,ge=3,ve=4,pe=5,we=6,Me=7,ke=8;function Se(e){return De(e)?366:365}function De(e){return e%4==0&&e%100!=0||e%400==0}I(\"Y\",0,0,function(){var e=this.year();return e<=9999?\"\"+e:\"+\"+e}),I(0,[\"YY\",2],0,function(){return this.year()%100}),I(0,[\"YYYY\",4],0,\"year\"),I(0,[\"YYYYY\",5],0,\"year\"),I(0,[\"YYYYYY\",6,!0],0,\"year\"),C(\"year\",\"y\"),F(\"year\",1),ue(\"Y\",se),ue(\"YY\",B,z),ue(\"YYYY\",ee,q),ue(\"YYYYY\",te,J),ue(\"YYYYYY\",te,J),ce([\"YYYYY\",\"YYYYYY\"],me),ce(\"YYYY\",function(e,t){t[me]=2===e.length?c.parseTwoDigitYear(e):D(e)}),ce(\"YY\",function(e,t){t[me]=c.parseTwoDigitYear(e)}),ce(\"Y\",function(e,t){t[me]=parseInt(e,10)}),c.parseTwoDigitYear=function(e){return D(e)+(68<D(e)?1900:2e3)};var Ye,Oe=Te(\"FullYear\",!0);function Te(t,n){return function(e){return null!=e?(xe(this,t,e),c.updateOffset(this,n),this):be(this,t)}}function be(e,t){return e.isValid()?e._d[\"get\"+(e._isUTC?\"UTC\":\"\")+t]():NaN}function xe(e,t,n){e.isValid()&&!isNaN(n)&&(\"FullYear\"===t&&De(e.year())&&1===e.month()&&29===e.date()?e._d[\"set\"+(e._isUTC?\"UTC\":\"\")+t](n,e.month(),Pe(n,e.month())):e._d[\"set\"+(e._isUTC?\"UTC\":\"\")+t](n))}function Pe(e,t){if(isNaN(e)||isNaN(t))return NaN;var n,s=(t%(n=12)+n)%n;return e+=(t-s)/12,1===s?De(e)?29:28:31-s%7%2}Ye=Array.prototype.indexOf?Array.prototype.indexOf:function(e){var t;for(t=0;t<this.length;++t)if(this[t]===e)return t;return-1},I(\"M\",[\"MM\",2],\"Mo\",function(){return this.month()+1}),I(\"MMM\",0,0,function(e){return this.localeData().monthsShort(this,e)}),I(\"MMMM\",0,0,function(e){return this.localeData().months(this,e)}),C(\"month\",\"M\"),F(\"month\",8),ue(\"M\",B),ue(\"MM\",B,z),ue(\"MMM\",function(e,t){return t.monthsShortRegex(e)}),ue(\"MMMM\",function(e,t){return t.monthsRegex(e)}),ce([\"M\",\"MM\"],function(e,t){t[_e]=D(e)-1}),ce([\"MMM\",\"MMMM\"],function(e,t,n,s){var i=n._locale.monthsParse(e,s,n._strict);null!=i?t[_e]=i:g(n).invalidMonth=e});var We=/D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,Ce=\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\");var He=\"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec\".split(\"_\");function Re(e,t){var n;if(!e.isValid())return e;if(\"string\"==typeof t)if(/^\\d+$/.test(t))t=D(t);else if(!h(t=e.localeData().monthsParse(t)))return e;return n=Math.min(e.date(),Pe(e.year(),t)),e._d[\"set\"+(e._isUTC?\"UTC\":\"\")+\"Month\"](t,n),e}function Ue(e){return null!=e?(Re(this,e),c.updateOffset(this,!0),this):be(this,\"Month\")}var Fe=ae;var Le=ae;function Ne(){function e(e,t){return t.length-e.length}var t,n,s=[],i=[],r=[];for(t=0;t<12;t++)n=y([2e3,t]),s.push(this.monthsShort(n,\"\")),i.push(this.months(n,\"\")),r.push(this.months(n,\"\")),r.push(this.monthsShort(n,\"\"));for(s.sort(e),i.sort(e),r.sort(e),t=0;t<12;t++)s[t]=he(s[t]),i[t]=he(i[t]);for(t=0;t<24;t++)r[t]=he(r[t]);this._monthsRegex=new RegExp(\"^(\"+r.join(\"|\")+\")\",\"i\"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp(\"^(\"+i.join(\"|\")+\")\",\"i\"),this._monthsShortStrictRegex=new RegExp(\"^(\"+s.join(\"|\")+\")\",\"i\")}function Ge(e){var t;if(e<100&&0<=e){var n=Array.prototype.slice.call(arguments);n[0]=e+400,t=new Date(Date.UTC.apply(null,n)),isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e)}else t=new Date(Date.UTC.apply(null,arguments));return t}function Ve(e,t,n){var s=7+t-n;return-((7+Ge(e,0,s).getUTCDay()-t)%7)+s-1}function Ee(e,t,n,s,i){var r,a,o=1+7*(t-1)+(7+n-s)%7+Ve(e,s,i);return a=o<=0?Se(r=e-1)+o:o>Se(e)?(r=e+1,o-Se(e)):(r=e,o),{year:r,dayOfYear:a}}function Ie(e,t,n){var s,i,r=Ve(e.year(),t,n),a=Math.floor((e.dayOfYear()-r-1)/7)+1;return a<1?s=a+Ae(i=e.year()-1,t,n):a>Ae(e.year(),t,n)?(s=a-Ae(e.year(),t,n),i=e.year()+1):(i=e.year(),s=a),{week:s,year:i}}function Ae(e,t,n){var s=Ve(e,t,n),i=Ve(e+1,t,n);return(Se(e)-s+i)/7}I(\"w\",[\"ww\",2],\"wo\",\"week\"),I(\"W\",[\"WW\",2],\"Wo\",\"isoWeek\"),C(\"week\",\"w\"),C(\"isoWeek\",\"W\"),F(\"week\",5),F(\"isoWeek\",5),ue(\"w\",B),ue(\"ww\",B,z),ue(\"W\",B),ue(\"WW\",B,z),fe([\"w\",\"ww\",\"W\",\"WW\"],function(e,t,n,s){t[s.substr(0,1)]=D(e)});function je(e,t){return e.slice(t,7).concat(e.slice(0,t))}I(\"d\",0,\"do\",\"day\"),I(\"dd\",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),I(\"ddd\",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),I(\"dddd\",0,0,function(e){return this.localeData().weekdays(this,e)}),I(\"e\",0,0,\"weekday\"),I(\"E\",0,0,\"isoWeekday\"),C(\"day\",\"d\"),C(\"weekday\",\"e\"),C(\"isoWeekday\",\"E\"),F(\"day\",11),F(\"weekday\",11),F(\"isoWeekday\",11),ue(\"d\",B),ue(\"e\",B),ue(\"E\",B),ue(\"dd\",function(e,t){return t.weekdaysMinRegex(e)}),ue(\"ddd\",function(e,t){return t.weekdaysShortRegex(e)}),ue(\"dddd\",function(e,t){return t.weekdaysRegex(e)}),fe([\"dd\",\"ddd\",\"dddd\"],function(e,t,n,s){var i=n._locale.weekdaysParse(e,s,n._strict);null!=i?t.d=i:g(n).invalidWeekday=e}),fe([\"d\",\"e\",\"E\"],function(e,t,n,s){t[s]=D(e)});var Ze=\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\");var ze=\"Sun_Mon_Tue_Wed_Thu_Fri_Sat\".split(\"_\");var $e=\"Su_Mo_Tu_We_Th_Fr_Sa\".split(\"_\");var qe=ae;var Je=ae;var Be=ae;function Qe(){function e(e,t){return t.length-e.length}var t,n,s,i,r,a=[],o=[],u=[],l=[];for(t=0;t<7;t++)n=y([2e3,1]).day(t),s=this.weekdaysMin(n,\"\"),i=this.weekdaysShort(n,\"\"),r=this.weekdays(n,\"\"),a.push(s),o.push(i),u.push(r),l.push(s),l.push(i),l.push(r);for(a.sort(e),o.sort(e),u.sort(e),l.sort(e),t=0;t<7;t++)o[t]=he(o[t]),u[t]=he(u[t]),l[t]=he(l[t]);this._weekdaysRegex=new RegExp(\"^(\"+l.join(\"|\")+\")\",\"i\"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp(\"^(\"+u.join(\"|\")+\")\",\"i\"),this._weekdaysShortStrictRegex=new RegExp(\"^(\"+o.join(\"|\")+\")\",\"i\"),this._weekdaysMinStrictRegex=new RegExp(\"^(\"+a.join(\"|\")+\")\",\"i\")}function Xe(){return this.hours()%12||12}function Ke(e,t){I(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}function et(e,t){return t._meridiemParse}I(\"H\",[\"HH\",2],0,\"hour\"),I(\"h\",[\"hh\",2],0,Xe),I(\"k\",[\"kk\",2],0,function(){return this.hours()||24}),I(\"hmm\",0,0,function(){return\"\"+Xe.apply(this)+L(this.minutes(),2)}),I(\"hmmss\",0,0,function(){return\"\"+Xe.apply(this)+L(this.minutes(),2)+L(this.seconds(),2)}),I(\"Hmm\",0,0,function(){return\"\"+this.hours()+L(this.minutes(),2)}),I(\"Hmmss\",0,0,function(){return\"\"+this.hours()+L(this.minutes(),2)+L(this.seconds(),2)}),Ke(\"a\",!0),Ke(\"A\",!1),C(\"hour\",\"h\"),F(\"hour\",13),ue(\"a\",et),ue(\"A\",et),ue(\"H\",B),ue(\"h\",B),ue(\"k\",B),ue(\"HH\",B,z),ue(\"hh\",B,z),ue(\"kk\",B,z),ue(\"hmm\",Q),ue(\"hmmss\",X),ue(\"Hmm\",Q),ue(\"Hmmss\",X),ce([\"H\",\"HH\"],ge),ce([\"k\",\"kk\"],function(e,t,n){var s=D(e);t[ge]=24===s?0:s}),ce([\"a\",\"A\"],function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e}),ce([\"h\",\"hh\"],function(e,t,n){t[ge]=D(e),g(n).bigHour=!0}),ce(\"hmm\",function(e,t,n){var s=e.length-2;t[ge]=D(e.substr(0,s)),t[ve]=D(e.substr(s)),g(n).bigHour=!0}),ce(\"hmmss\",function(e,t,n){var s=e.length-4,i=e.length-2;t[ge]=D(e.substr(0,s)),t[ve]=D(e.substr(s,2)),t[pe]=D(e.substr(i)),g(n).bigHour=!0}),ce(\"Hmm\",function(e,t,n){var s=e.length-2;t[ge]=D(e.substr(0,s)),t[ve]=D(e.substr(s))}),ce(\"Hmmss\",function(e,t,n){var s=e.length-4,i=e.length-2;t[ge]=D(e.substr(0,s)),t[ve]=D(e.substr(s,2)),t[pe]=D(e.substr(i))});var tt,nt=Te(\"Hours\",!0),st={calendar:{sameDay:\"[Today at] LT\",nextDay:\"[Tomorrow at] LT\",nextWeek:\"dddd [at] LT\",lastDay:\"[Yesterday at] LT\",lastWeek:\"[Last] dddd [at] LT\",sameElse:\"L\"},longDateFormat:{LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"},invalidDate:\"Invalid date\",ordinal:\"%d\",dayOfMonthOrdinalParse:/\\d{1,2}/,relativeTime:{future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",ss:\"%d seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"},months:Ce,monthsShort:He,week:{dow:0,doy:6},weekdays:Ze,weekdaysMin:$e,weekdaysShort:ze,meridiemParse:/[ap]\\.?m?\\.?/i},it={},rt={};function at(e){return e?e.toLowerCase().replace(\"_\",\"-\"):e}function ot(e){var t=null;if(!it[e]&&\"undefined\"!=typeof module&&module&&module.exports)try{t=tt._abbr,require(\"./locale/\"+e),ut(t)}catch(e){}return it[e]}function ut(e,t){var n;return e&&((n=l(t)?ht(e):lt(e,t))?tt=n:\"undefined\"!=typeof console&&console.warn&&console.warn(\"Locale \"+e+\" not found. Did you forget to load it?\")),tt._abbr}function lt(e,t){if(null===t)return delete it[e],null;var n,s=st;if(t.abbr=e,null!=it[e])T(\"defineLocaleOverride\",\"use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info.\"),s=it[e]._config;else if(null!=t.parentLocale)if(null!=it[t.parentLocale])s=it[t.parentLocale]._config;else{if(null==(n=ot(t.parentLocale)))return rt[t.parentLocale]||(rt[t.parentLocale]=[]),rt[t.parentLocale].push({name:e,config:t}),null;s=n._config}return it[e]=new P(x(s,t)),rt[e]&&rt[e].forEach(function(e){lt(e.name,e.config)}),ut(e),it[e]}function ht(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return tt;if(!o(e)){if(t=ot(e))return t;e=[e]}return function(e){for(var t,n,s,i,r=0;r<e.length;){for(t=(i=at(e[r]).split(\"-\")).length,n=(n=at(e[r+1]))?n.split(\"-\"):null;0<t;){if(s=ot(i.slice(0,t).join(\"-\")))return s;if(n&&n.length>=t&&a(i,n,!0)>=t-1)break;t--}r++}return tt}(e)}function dt(e){var t,n=e._a;return n&&-2===g(e).overflow&&(t=n[_e]<0||11<n[_e]?_e:n[ye]<1||n[ye]>Pe(n[me],n[_e])?ye:n[ge]<0||24<n[ge]||24===n[ge]&&(0!==n[ve]||0!==n[pe]||0!==n[we])?ge:n[ve]<0||59<n[ve]?ve:n[pe]<0||59<n[pe]?pe:n[we]<0||999<n[we]?we:-1,g(e)._overflowDayOfYear&&(t<me||ye<t)&&(t=ye),g(e)._overflowWeeks&&-1===t&&(t=Me),g(e)._overflowWeekday&&-1===t&&(t=ke),g(e).overflow=t),e}function ct(e,t,n){return null!=e?e:null!=t?t:n}function ft(e){var t,n,s,i,r,a=[];if(!e._d){var o,u;for(o=e,u=new Date(c.now()),s=o._useUTC?[u.getUTCFullYear(),u.getUTCMonth(),u.getUTCDate()]:[u.getFullYear(),u.getMonth(),u.getDate()],e._w&&null==e._a[ye]&&null==e._a[_e]&&function(e){var t,n,s,i,r,a,o,u;if(null!=(t=e._w).GG||null!=t.W||null!=t.E)r=1,a=4,n=ct(t.GG,e._a[me],Ie(bt(),1,4).year),s=ct(t.W,1),((i=ct(t.E,1))<1||7<i)&&(u=!0);else{r=e._locale._week.dow,a=e._locale._week.doy;var l=Ie(bt(),r,a);n=ct(t.gg,e._a[me],l.year),s=ct(t.w,l.week),null!=t.d?((i=t.d)<0||6<i)&&(u=!0):null!=t.e?(i=t.e+r,(t.e<0||6<t.e)&&(u=!0)):i=r}s<1||s>Ae(n,r,a)?g(e)._overflowWeeks=!0:null!=u?g(e)._overflowWeekday=!0:(o=Ee(n,s,i,r,a),e._a[me]=o.year,e._dayOfYear=o.dayOfYear)}(e),null!=e._dayOfYear&&(r=ct(e._a[me],s[me]),(e._dayOfYear>Se(r)||0===e._dayOfYear)&&(g(e)._overflowDayOfYear=!0),n=Ge(r,0,e._dayOfYear),e._a[_e]=n.getUTCMonth(),e._a[ye]=n.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=a[t]=s[t];for(;t<7;t++)e._a[t]=a[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[ge]&&0===e._a[ve]&&0===e._a[pe]&&0===e._a[we]&&(e._nextDay=!0,e._a[ge]=0),e._d=(e._useUTC?Ge:function(e,t,n,s,i,r,a){var o;return e<100&&0<=e?(o=new Date(e+400,t,n,s,i,r,a),isFinite(o.getFullYear())&&o.setFullYear(e)):o=new Date(e,t,n,s,i,r,a),o}).apply(null,a),i=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[ge]=24),e._w&&void 0!==e._w.d&&e._w.d!==i&&(g(e).weekdayMismatch=!0)}}var mt=/^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,_t=/^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,yt=/Z|[+-]\\d\\d(?::?\\d\\d)?/,gt=[[\"YYYYYY-MM-DD\",/[+-]\\d{6}-\\d\\d-\\d\\d/],[\"YYYY-MM-DD\",/\\d{4}-\\d\\d-\\d\\d/],[\"GGGG-[W]WW-E\",/\\d{4}-W\\d\\d-\\d/],[\"GGGG-[W]WW\",/\\d{4}-W\\d\\d/,!1],[\"YYYY-DDD\",/\\d{4}-\\d{3}/],[\"YYYY-MM\",/\\d{4}-\\d\\d/,!1],[\"YYYYYYMMDD\",/[+-]\\d{10}/],[\"YYYYMMDD\",/\\d{8}/],[\"GGGG[W]WWE\",/\\d{4}W\\d{3}/],[\"GGGG[W]WW\",/\\d{4}W\\d{2}/,!1],[\"YYYYDDD\",/\\d{7}/]],vt=[[\"HH:mm:ss.SSSS\",/\\d\\d:\\d\\d:\\d\\d\\.\\d+/],[\"HH:mm:ss,SSSS\",/\\d\\d:\\d\\d:\\d\\d,\\d+/],[\"HH:mm:ss\",/\\d\\d:\\d\\d:\\d\\d/],[\"HH:mm\",/\\d\\d:\\d\\d/],[\"HHmmss.SSSS\",/\\d\\d\\d\\d\\d\\d\\.\\d+/],[\"HHmmss,SSSS\",/\\d\\d\\d\\d\\d\\d,\\d+/],[\"HHmmss\",/\\d\\d\\d\\d\\d\\d/],[\"HHmm\",/\\d\\d\\d\\d/],[\"HH\",/\\d\\d/]],pt=/^\\/?Date\\((\\-?\\d+)/i;function wt(e){var t,n,s,i,r,a,o=e._i,u=mt.exec(o)||_t.exec(o);if(u){for(g(e).iso=!0,t=0,n=gt.length;t<n;t++)if(gt[t][1].exec(u[1])){i=gt[t][0],s=!1!==gt[t][2];break}if(null==i)return void(e._isValid=!1);if(u[3]){for(t=0,n=vt.length;t<n;t++)if(vt[t][1].exec(u[3])){r=(u[2]||\" \")+vt[t][0];break}if(null==r)return void(e._isValid=!1)}if(!s&&null!=r)return void(e._isValid=!1);if(u[4]){if(!yt.exec(u[4]))return void(e._isValid=!1);a=\"Z\"}e._f=i+(r||\"\")+(a||\"\"),Yt(e)}else e._isValid=!1}var Mt=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/;function kt(e,t,n,s,i,r){var a=[function(e){var t=parseInt(e,10);{if(t<=49)return 2e3+t;if(t<=999)return 1900+t}return t}(e),He.indexOf(t),parseInt(n,10),parseInt(s,10),parseInt(i,10)];return r&&a.push(parseInt(r,10)),a}var St={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function Dt(e){var t,n,s,i=Mt.exec(e._i.replace(/\\([^)]*\\)|[\\n\\t]/g,\" \").replace(/(\\s\\s+)/g,\" \").replace(/^\\s\\s*/,\"\").replace(/\\s\\s*$/,\"\"));if(i){var r=kt(i[4],i[3],i[2],i[5],i[6],i[7]);if(t=i[1],n=r,s=e,t&&ze.indexOf(t)!==new Date(n[0],n[1],n[2]).getDay()&&(g(s).weekdayMismatch=!0,!(s._isValid=!1)))return;e._a=r,e._tzm=function(e,t,n){if(e)return St[e];if(t)return 0;var s=parseInt(n,10),i=s%100;return(s-i)/100*60+i}(i[8],i[9],i[10]),e._d=Ge.apply(null,e._a),e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),g(e).rfc2822=!0}else e._isValid=!1}function Yt(e){if(e._f!==c.ISO_8601)if(e._f!==c.RFC_2822){e._a=[],g(e).empty=!0;var t,n,s,i,r,a,o,u,l=\"\"+e._i,h=l.length,d=0;for(s=j(e._f,e._locale).match(N)||[],t=0;t<s.length;t++)i=s[t],(n=(l.match(le(i,e))||[])[0])&&(0<(r=l.substr(0,l.indexOf(n))).length&&g(e).unusedInput.push(r),l=l.slice(l.indexOf(n)+n.length),d+=n.length),E[i]?(n?g(e).empty=!1:g(e).unusedTokens.push(i),a=i,u=e,null!=(o=n)&&m(de,a)&&de[a](o,u._a,u,a)):e._strict&&!n&&g(e).unusedTokens.push(i);g(e).charsLeftOver=h-d,0<l.length&&g(e).unusedInput.push(l),e._a[ge]<=12&&!0===g(e).bigHour&&0<e._a[ge]&&(g(e).bigHour=void 0),g(e).parsedDateParts=e._a.slice(0),g(e).meridiem=e._meridiem,e._a[ge]=function(e,t,n){var s;if(null==n)return t;return null!=e.meridiemHour?e.meridiemHour(t,n):(null!=e.isPM&&((s=e.isPM(n))&&t<12&&(t+=12),s||12!==t||(t=0)),t)}(e._locale,e._a[ge],e._meridiem),ft(e),dt(e)}else Dt(e);else wt(e)}function Ot(e){var t,n,s,i,r=e._i,a=e._f;return e._locale=e._locale||ht(e._l),null===r||void 0===a&&\"\"===r?p({nullInput:!0}):(\"string\"==typeof r&&(e._i=r=e._locale.preparse(r)),k(r)?new M(dt(r)):(d(r)?e._d=r:o(a)?function(e){var t,n,s,i,r;if(0===e._f.length)return g(e).invalidFormat=!0,e._d=new Date(NaN);for(i=0;i<e._f.length;i++)r=0,t=w({},e),null!=e._useUTC&&(t._useUTC=e._useUTC),t._f=e._f[i],Yt(t),v(t)&&(r+=g(t).charsLeftOver,r+=10*g(t).unusedTokens.length,g(t).score=r,(null==s||r<s)&&(s=r,n=t));_(e,n||t)}(e):a?Yt(e):l(n=(t=e)._i)?t._d=new Date(c.now()):d(n)?t._d=new Date(n.valueOf()):\"string\"==typeof n?(s=t,null===(i=pt.exec(s._i))?(wt(s),!1===s._isValid&&(delete s._isValid,Dt(s),!1===s._isValid&&(delete s._isValid,c.createFromInputFallback(s)))):s._d=new Date(+i[1])):o(n)?(t._a=f(n.slice(0),function(e){return parseInt(e,10)}),ft(t)):u(n)?function(e){if(!e._d){var t=R(e._i);e._a=f([t.year,t.month,t.day||t.date,t.hour,t.minute,t.second,t.millisecond],function(e){return e&&parseInt(e,10)}),ft(e)}}(t):h(n)?t._d=new Date(n):c.createFromInputFallback(t),v(e)||(e._d=null),e))}function Tt(e,t,n,s,i){var r,a={};return!0!==n&&!1!==n||(s=n,n=void 0),(u(e)&&function(e){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(e).length;var t;for(t in e)if(e.hasOwnProperty(t))return!1;return!0}(e)||o(e)&&0===e.length)&&(e=void 0),a._isAMomentObject=!0,a._useUTC=a._isUTC=i,a._l=n,a._i=e,a._f=t,a._strict=s,(r=new M(dt(Ot(a))))._nextDay&&(r.add(1,\"d\"),r._nextDay=void 0),r}function bt(e,t,n,s){return Tt(e,t,n,s,!1)}c.createFromInputFallback=n(\"value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.\",function(e){e._d=new Date(e._i+(e._useUTC?\" UTC\":\"\"))}),c.ISO_8601=function(){},c.RFC_2822=function(){};var xt=n(\"moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/\",function(){var e=bt.apply(null,arguments);return this.isValid()&&e.isValid()?e<this?this:e:p()}),Pt=n(\"moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/\",function(){var e=bt.apply(null,arguments);return this.isValid()&&e.isValid()?this<e?this:e:p()});function Wt(e,t){var n,s;if(1===t.length&&o(t[0])&&(t=t[0]),!t.length)return bt();for(n=t[0],s=1;s<t.length;++s)t[s].isValid()&&!t[s][e](n)||(n=t[s]);return n}var Ct=[\"year\",\"quarter\",\"month\",\"week\",\"day\",\"hour\",\"minute\",\"second\",\"millisecond\"];function Ht(e){var t=R(e),n=t.year||0,s=t.quarter||0,i=t.month||0,r=t.week||t.isoWeek||0,a=t.day||0,o=t.hour||0,u=t.minute||0,l=t.second||0,h=t.millisecond||0;this._isValid=function(e){for(var t in e)if(-1===Ye.call(Ct,t)||null!=e[t]&&isNaN(e[t]))return!1;for(var n=!1,s=0;s<Ct.length;++s)if(e[Ct[s]]){if(n)return!1;parseFloat(e[Ct[s]])!==D(e[Ct[s]])&&(n=!0)}return!0}(t),this._milliseconds=+h+1e3*l+6e4*u+1e3*o*60*60,this._days=+a+7*r,this._months=+i+3*s+12*n,this._data={},this._locale=ht(),this._bubble()}function Rt(e){return e instanceof Ht}function Ut(e){return e<0?-1*Math.round(-1*e):Math.round(e)}function Ft(e,n){I(e,0,0,function(){var e=this.utcOffset(),t=\"+\";return e<0&&(e=-e,t=\"-\"),t+L(~~(e/60),2)+n+L(~~e%60,2)})}Ft(\"Z\",\":\"),Ft(\"ZZ\",\"\"),ue(\"Z\",re),ue(\"ZZ\",re),ce([\"Z\",\"ZZ\"],function(e,t,n){n._useUTC=!0,n._tzm=Nt(re,e)});var Lt=/([\\+\\-]|\\d\\d)/gi;function Nt(e,t){var n=(t||\"\").match(e);if(null===n)return null;var s=((n[n.length-1]||[])+\"\").match(Lt)||[\"-\",0,0],i=60*s[1]+D(s[2]);return 0===i?0:\"+\"===s[0]?i:-i}function Gt(e,t){var n,s;return t._isUTC?(n=t.clone(),s=(k(e)||d(e)?e.valueOf():bt(e).valueOf())-n.valueOf(),n._d.setTime(n._d.valueOf()+s),c.updateOffset(n,!1),n):bt(e).local()}function Vt(e){return 15*-Math.round(e._d.getTimezoneOffset()/15)}function Et(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}c.updateOffset=function(){};var It=/^(\\-|\\+)?(?:(\\d*)[. ])?(\\d+)\\:(\\d+)(?:\\:(\\d+)(\\.\\d*)?)?$/,At=/^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function jt(e,t){var n,s,i,r=e,a=null;return Rt(e)?r={ms:e._milliseconds,d:e._days,M:e._months}:h(e)?(r={},t?r[t]=e:r.milliseconds=e):(a=It.exec(e))?(n=\"-\"===a[1]?-1:1,r={y:0,d:D(a[ye])*n,h:D(a[ge])*n,m:D(a[ve])*n,s:D(a[pe])*n,ms:D(Ut(1e3*a[we]))*n}):(a=At.exec(e))?(n=\"-\"===a[1]?-1:1,r={y:Zt(a[2],n),M:Zt(a[3],n),w:Zt(a[4],n),d:Zt(a[5],n),h:Zt(a[6],n),m:Zt(a[7],n),s:Zt(a[8],n)}):null==r?r={}:\"object\"==typeof r&&(\"from\"in r||\"to\"in r)&&(i=function(e,t){var n;if(!e.isValid()||!t.isValid())return{milliseconds:0,months:0};t=Gt(t,e),e.isBefore(t)?n=zt(e,t):((n=zt(t,e)).milliseconds=-n.milliseconds,n.months=-n.months);return n}(bt(r.from),bt(r.to)),(r={}).ms=i.milliseconds,r.M=i.months),s=new Ht(r),Rt(e)&&m(e,\"_locale\")&&(s._locale=e._locale),s}function Zt(e,t){var n=e&&parseFloat(e.replace(\",\",\".\"));return(isNaN(n)?0:n)*t}function zt(e,t){var n={};return n.months=t.month()-e.month()+12*(t.year()-e.year()),e.clone().add(n.months,\"M\").isAfter(t)&&--n.months,n.milliseconds=+t-+e.clone().add(n.months,\"M\"),n}function $t(s,i){return function(e,t){var n;return null===t||isNaN(+t)||(T(i,\"moment().\"+i+\"(period, number) is deprecated. Please use moment().\"+i+\"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.\"),n=e,e=t,t=n),qt(this,jt(e=\"string\"==typeof e?+e:e,t),s),this}}function qt(e,t,n,s){var i=t._milliseconds,r=Ut(t._days),a=Ut(t._months);e.isValid()&&(s=null==s||s,a&&Re(e,be(e,\"Month\")+a*n),r&&xe(e,\"Date\",be(e,\"Date\")+r*n),i&&e._d.setTime(e._d.valueOf()+i*n),s&&c.updateOffset(e,r||a))}jt.fn=Ht.prototype,jt.invalid=function(){return jt(NaN)};var Jt=$t(1,\"add\"),Bt=$t(-1,\"subtract\");function Qt(e,t){var n=12*(t.year()-e.year())+(t.month()-e.month()),s=e.clone().add(n,\"months\");return-(n+(t-s<0?(t-s)/(s-e.clone().add(n-1,\"months\")):(t-s)/(e.clone().add(n+1,\"months\")-s)))||0}function Xt(e){var t;return void 0===e?this._locale._abbr:(null!=(t=ht(e))&&(this._locale=t),this)}c.defaultFormat=\"YYYY-MM-DDTHH:mm:ssZ\",c.defaultFormatUtc=\"YYYY-MM-DDTHH:mm:ss[Z]\";var Kt=n(\"moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.\",function(e){return void 0===e?this.localeData():this.locale(e)});function en(){return this._locale}var tn=126227808e5;function nn(e,t){return(e%t+t)%t}function sn(e,t,n){return e<100&&0<=e?new Date(e+400,t,n)-tn:new Date(e,t,n).valueOf()}function rn(e,t,n){return e<100&&0<=e?Date.UTC(e+400,t,n)-tn:Date.UTC(e,t,n)}function an(e,t){I(0,[e,e.length],0,t)}function on(e,t,n,s,i){var r;return null==e?Ie(this,s,i).year:((r=Ae(e,s,i))<t&&(t=r),function(e,t,n,s,i){var r=Ee(e,t,n,s,i),a=Ge(r.year,0,r.dayOfYear);return this.year(a.getUTCFullYear()),this.month(a.getUTCMonth()),this.date(a.getUTCDate()),this}.call(this,e,t,n,s,i))}I(0,[\"gg\",2],0,function(){return this.weekYear()%100}),I(0,[\"GG\",2],0,function(){return this.isoWeekYear()%100}),an(\"gggg\",\"weekYear\"),an(\"ggggg\",\"weekYear\"),an(\"GGGG\",\"isoWeekYear\"),an(\"GGGGG\",\"isoWeekYear\"),C(\"weekYear\",\"gg\"),C(\"isoWeekYear\",\"GG\"),F(\"weekYear\",1),F(\"isoWeekYear\",1),ue(\"G\",se),ue(\"g\",se),ue(\"GG\",B,z),ue(\"gg\",B,z),ue(\"GGGG\",ee,q),ue(\"gggg\",ee,q),ue(\"GGGGG\",te,J),ue(\"ggggg\",te,J),fe([\"gggg\",\"ggggg\",\"GGGG\",\"GGGGG\"],function(e,t,n,s){t[s.substr(0,2)]=D(e)}),fe([\"gg\",\"GG\"],function(e,t,n,s){t[s]=c.parseTwoDigitYear(e)}),I(\"Q\",0,\"Qo\",\"quarter\"),C(\"quarter\",\"Q\"),F(\"quarter\",7),ue(\"Q\",Z),ce(\"Q\",function(e,t){t[_e]=3*(D(e)-1)}),I(\"D\",[\"DD\",2],\"Do\",\"date\"),C(\"date\",\"D\"),F(\"date\",9),ue(\"D\",B),ue(\"DD\",B,z),ue(\"Do\",function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient}),ce([\"D\",\"DD\"],ye),ce(\"Do\",function(e,t){t[ye]=D(e.match(B)[0])});var un=Te(\"Date\",!0);I(\"DDD\",[\"DDDD\",3],\"DDDo\",\"dayOfYear\"),C(\"dayOfYear\",\"DDD\"),F(\"dayOfYear\",4),ue(\"DDD\",K),ue(\"DDDD\",$),ce([\"DDD\",\"DDDD\"],function(e,t,n){n._dayOfYear=D(e)}),I(\"m\",[\"mm\",2],0,\"minute\"),C(\"minute\",\"m\"),F(\"minute\",14),ue(\"m\",B),ue(\"mm\",B,z),ce([\"m\",\"mm\"],ve);var ln=Te(\"Minutes\",!1);I(\"s\",[\"ss\",2],0,\"second\"),C(\"second\",\"s\"),F(\"second\",15),ue(\"s\",B),ue(\"ss\",B,z),ce([\"s\",\"ss\"],pe);var hn,dn=Te(\"Seconds\",!1);for(I(\"S\",0,0,function(){return~~(this.millisecond()/100)}),I(0,[\"SS\",2],0,function(){return~~(this.millisecond()/10)}),I(0,[\"SSS\",3],0,\"millisecond\"),I(0,[\"SSSS\",4],0,function(){return 10*this.millisecond()}),I(0,[\"SSSSS\",5],0,function(){return 100*this.millisecond()}),I(0,[\"SSSSSS\",6],0,function(){return 1e3*this.millisecond()}),I(0,[\"SSSSSSS\",7],0,function(){return 1e4*this.millisecond()}),I(0,[\"SSSSSSSS\",8],0,function(){return 1e5*this.millisecond()}),I(0,[\"SSSSSSSSS\",9],0,function(){return 1e6*this.millisecond()}),C(\"millisecond\",\"ms\"),F(\"millisecond\",16),ue(\"S\",K,Z),ue(\"SS\",K,z),ue(\"SSS\",K,$),hn=\"SSSS\";hn.length<=9;hn+=\"S\")ue(hn,ne);function cn(e,t){t[we]=D(1e3*(\"0.\"+e))}for(hn=\"S\";hn.length<=9;hn+=\"S\")ce(hn,cn);var fn=Te(\"Milliseconds\",!1);I(\"z\",0,0,\"zoneAbbr\"),I(\"zz\",0,0,\"zoneName\");var mn=M.prototype;function _n(e){return e}mn.add=Jt,mn.calendar=function(e,t){var n=e||bt(),s=Gt(n,this).startOf(\"day\"),i=c.calendarFormat(this,s)||\"sameElse\",r=t&&(b(t[i])?t[i].call(this,n):t[i]);return this.format(r||this.localeData().calendar(i,this,bt(n)))},mn.clone=function(){return new M(this)},mn.diff=function(e,t,n){var s,i,r;if(!this.isValid())return NaN;if(!(s=Gt(e,this)).isValid())return NaN;switch(i=6e4*(s.utcOffset()-this.utcOffset()),t=H(t)){case\"year\":r=Qt(this,s)/12;break;case\"month\":r=Qt(this,s);break;case\"quarter\":r=Qt(this,s)/3;break;case\"second\":r=(this-s)/1e3;break;case\"minute\":r=(this-s)/6e4;break;case\"hour\":r=(this-s)/36e5;break;case\"day\":r=(this-s-i)/864e5;break;case\"week\":r=(this-s-i)/6048e5;break;default:r=this-s}return n?r:S(r)},mn.endOf=function(e){var t;if(void 0===(e=H(e))||\"millisecond\"===e||!this.isValid())return this;var n=this._isUTC?rn:sn;switch(e){case\"year\":t=n(this.year()+1,0,1)-1;break;case\"quarter\":t=n(this.year(),this.month()-this.month()%3+3,1)-1;break;case\"month\":t=n(this.year(),this.month()+1,1)-1;break;case\"week\":t=n(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case\"isoWeek\":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case\"day\":case\"date\":t=n(this.year(),this.month(),this.date()+1)-1;break;case\"hour\":t=this._d.valueOf(),t+=36e5-nn(t+(this._isUTC?0:6e4*this.utcOffset()),36e5)-1;break;case\"minute\":t=this._d.valueOf(),t+=6e4-nn(t,6e4)-1;break;case\"second\":t=this._d.valueOf(),t+=1e3-nn(t,1e3)-1;break}return this._d.setTime(t),c.updateOffset(this,!0),this},mn.format=function(e){e||(e=this.isUtc()?c.defaultFormatUtc:c.defaultFormat);var t=A(this,e);return this.localeData().postformat(t)},mn.from=function(e,t){return this.isValid()&&(k(e)&&e.isValid()||bt(e).isValid())?jt({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},mn.fromNow=function(e){return this.from(bt(),e)},mn.to=function(e,t){return this.isValid()&&(k(e)&&e.isValid()||bt(e).isValid())?jt({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},mn.toNow=function(e){return this.to(bt(),e)},mn.get=function(e){return b(this[e=H(e)])?this[e]():this},mn.invalidAt=function(){return g(this).overflow},mn.isAfter=function(e,t){var n=k(e)?e:bt(e);return!(!this.isValid()||!n.isValid())&&(\"millisecond\"===(t=H(t)||\"millisecond\")?this.valueOf()>n.valueOf():n.valueOf()<this.clone().startOf(t).valueOf())},mn.isBefore=function(e,t){var n=k(e)?e:bt(e);return!(!this.isValid()||!n.isValid())&&(\"millisecond\"===(t=H(t)||\"millisecond\")?this.valueOf()<n.valueOf():this.clone().endOf(t).valueOf()<n.valueOf())},mn.isBetween=function(e,t,n,s){var i=k(e)?e:bt(e),r=k(t)?t:bt(t);return!!(this.isValid()&&i.isValid()&&r.isValid())&&(\"(\"===(s=s||\"()\")[0]?this.isAfter(i,n):!this.isBefore(i,n))&&(\")\"===s[1]?this.isBefore(r,n):!this.isAfter(r,n))},mn.isSame=function(e,t){var n,s=k(e)?e:bt(e);return!(!this.isValid()||!s.isValid())&&(\"millisecond\"===(t=H(t)||\"millisecond\")?this.valueOf()===s.valueOf():(n=s.valueOf(),this.clone().startOf(t).valueOf()<=n&&n<=this.clone().endOf(t).valueOf()))},mn.isSameOrAfter=function(e,t){return this.isSame(e,t)||this.isAfter(e,t)},mn.isSameOrBefore=function(e,t){return this.isSame(e,t)||this.isBefore(e,t)},mn.isValid=function(){return v(this)},mn.lang=Kt,mn.locale=Xt,mn.localeData=en,mn.max=Pt,mn.min=xt,mn.parsingFlags=function(){return _({},g(this))},mn.set=function(e,t){if(\"object\"==typeof e)for(var n=function(e){var t=[];for(var n in e)t.push({unit:n,priority:U[n]});return t.sort(function(e,t){return e.priority-t.priority}),t}(e=R(e)),s=0;s<n.length;s++)this[n[s].unit](e[n[s].unit]);else if(b(this[e=H(e)]))return this[e](t);return this},mn.startOf=function(e){var t;if(void 0===(e=H(e))||\"millisecond\"===e||!this.isValid())return this;var n=this._isUTC?rn:sn;switch(e){case\"year\":t=n(this.year(),0,1);break;case\"quarter\":t=n(this.year(),this.month()-this.month()%3,1);break;case\"month\":t=n(this.year(),this.month(),1);break;case\"week\":t=n(this.year(),this.month(),this.date()-this.weekday());break;case\"isoWeek\":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case\"day\":case\"date\":t=n(this.year(),this.month(),this.date());break;case\"hour\":t=this._d.valueOf(),t-=nn(t+(this._isUTC?0:6e4*this.utcOffset()),36e5);break;case\"minute\":t=this._d.valueOf(),t-=nn(t,6e4);break;case\"second\":t=this._d.valueOf(),t-=nn(t,1e3);break}return this._d.setTime(t),c.updateOffset(this,!0),this},mn.subtract=Bt,mn.toArray=function(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]},mn.toObject=function(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}},mn.toDate=function(){return new Date(this.valueOf())},mn.toISOString=function(e){if(!this.isValid())return null;var t=!0!==e,n=t?this.clone().utc():this;return n.year()<0||9999<n.year()?A(n,t?\"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]\":\"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ\"):b(Date.prototype.toISOString)?t?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace(\"Z\",A(n,\"Z\")):A(n,t?\"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]\":\"YYYY-MM-DD[T]HH:mm:ss.SSSZ\")},mn.inspect=function(){if(!this.isValid())return\"moment.invalid(/* \"+this._i+\" */)\";var e=\"moment\",t=\"\";this.isLocal()||(e=0===this.utcOffset()?\"moment.utc\":\"moment.parseZone\",t=\"Z\");var n=\"[\"+e+'(\"]',s=0<=this.year()&&this.year()<=9999?\"YYYY\":\"YYYYYY\",i=t+'[\")]';return this.format(n+s+\"-MM-DD[T]HH:mm:ss.SSS\"+i)},mn.toJSON=function(){return this.isValid()?this.toISOString():null},mn.toString=function(){return this.clone().locale(\"en\").format(\"ddd MMM DD YYYY HH:mm:ss [GMT]ZZ\")},mn.unix=function(){return Math.floor(this.valueOf()/1e3)},mn.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},mn.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},mn.year=Oe,mn.isLeapYear=function(){return De(this.year())},mn.weekYear=function(e){return on.call(this,e,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},mn.isoWeekYear=function(e){return on.call(this,e,this.isoWeek(),this.isoWeekday(),1,4)},mn.quarter=mn.quarters=function(e){return null==e?Math.ceil((this.month()+1)/3):this.month(3*(e-1)+this.month()%3)},mn.month=Ue,mn.daysInMonth=function(){return Pe(this.year(),this.month())},mn.week=mn.weeks=function(e){var t=this.localeData().week(this);return null==e?t:this.add(7*(e-t),\"d\")},mn.isoWeek=mn.isoWeeks=function(e){var t=Ie(this,1,4).week;return null==e?t:this.add(7*(e-t),\"d\")},mn.weeksInYear=function(){var e=this.localeData()._week;return Ae(this.year(),e.dow,e.doy)},mn.isoWeeksInYear=function(){return Ae(this.year(),1,4)},mn.date=un,mn.day=mn.days=function(e){if(!this.isValid())return null!=e?this:NaN;var t,n,s=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=e?(t=e,n=this.localeData(),e=\"string\"!=typeof t?t:isNaN(t)?\"number\"==typeof(t=n.weekdaysParse(t))?t:null:parseInt(t,10),this.add(e-s,\"d\")):s},mn.weekday=function(e){if(!this.isValid())return null!=e?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return null==e?t:this.add(e-t,\"d\")},mn.isoWeekday=function(e){if(!this.isValid())return null!=e?this:NaN;if(null==e)return this.day()||7;var t,n,s=(t=e,n=this.localeData(),\"string\"==typeof t?n.weekdaysParse(t)%7||7:isNaN(t)?null:t);return this.day(this.day()%7?s:s-7)},mn.dayOfYear=function(e){var t=Math.round((this.clone().startOf(\"day\")-this.clone().startOf(\"year\"))/864e5)+1;return null==e?t:this.add(e-t,\"d\")},mn.hour=mn.hours=nt,mn.minute=mn.minutes=ln,mn.second=mn.seconds=dn,mn.millisecond=mn.milliseconds=fn,mn.utcOffset=function(e,t,n){var s,i=this._offset||0;if(!this.isValid())return null!=e?this:NaN;if(null==e)return this._isUTC?i:Vt(this);if(\"string\"==typeof e){if(null===(e=Nt(re,e)))return this}else Math.abs(e)<16&&!n&&(e*=60);return!this._isUTC&&t&&(s=Vt(this)),this._offset=e,this._isUTC=!0,null!=s&&this.add(s,\"m\"),i!==e&&(!t||this._changeInProgress?qt(this,jt(e-i,\"m\"),1,!1):this._changeInProgress||(this._changeInProgress=!0,c.updateOffset(this,!0),this._changeInProgress=null)),this},mn.utc=function(e){return this.utcOffset(0,e)},mn.local=function(e){return this._isUTC&&(this.utcOffset(0,e),this._isUTC=!1,e&&this.subtract(Vt(this),\"m\")),this},mn.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if(\"string\"==typeof this._i){var e=Nt(ie,this._i);null!=e?this.utcOffset(e):this.utcOffset(0,!0)}return this},mn.hasAlignedHourOffset=function(e){return!!this.isValid()&&(e=e?bt(e).utcOffset():0,(this.utcOffset()-e)%60==0)},mn.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},mn.isLocal=function(){return!!this.isValid()&&!this._isUTC},mn.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},mn.isUtc=Et,mn.isUTC=Et,mn.zoneAbbr=function(){return this._isUTC?\"UTC\":\"\"},mn.zoneName=function(){return this._isUTC?\"Coordinated Universal Time\":\"\"},mn.dates=n(\"dates accessor is deprecated. Use date instead.\",un),mn.months=n(\"months accessor is deprecated. Use month instead\",Ue),mn.years=n(\"years accessor is deprecated. Use year instead\",Oe),mn.zone=n(\"moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/\",function(e,t){return null!=e?(\"string\"!=typeof e&&(e=-e),this.utcOffset(e,t),this):-this.utcOffset()}),mn.isDSTShifted=n(\"isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information\",function(){if(!l(this._isDSTShifted))return this._isDSTShifted;var e={};if(w(e,this),(e=Ot(e))._a){var t=e._isUTC?y(e._a):bt(e._a);this._isDSTShifted=this.isValid()&&0<a(e._a,t.toArray())}else this._isDSTShifted=!1;return this._isDSTShifted});var yn=P.prototype;function gn(e,t,n,s){var i=ht(),r=y().set(s,t);return i[n](r,e)}function vn(e,t,n){if(h(e)&&(t=e,e=void 0),e=e||\"\",null!=t)return gn(e,t,n,\"month\");var s,i=[];for(s=0;s<12;s++)i[s]=gn(e,s,n,\"month\");return i}function pn(e,t,n,s){t=(\"boolean\"==typeof e?h(t)&&(n=t,t=void 0):(t=e,e=!1,h(n=t)&&(n=t,t=void 0)),t||\"\");var i,r=ht(),a=e?r._week.dow:0;if(null!=n)return gn(t,(n+a)%7,s,\"day\");var o=[];for(i=0;i<7;i++)o[i]=gn(t,(i+a)%7,s,\"day\");return o}yn.calendar=function(e,t,n){var s=this._calendar[e]||this._calendar.sameElse;return b(s)?s.call(t,n):s},yn.longDateFormat=function(e){var t=this._longDateFormat[e],n=this._longDateFormat[e.toUpperCase()];return t||!n?t:(this._longDateFormat[e]=n.replace(/MMMM|MM|DD|dddd/g,function(e){return e.slice(1)}),this._longDateFormat[e])},yn.invalidDate=function(){return this._invalidDate},yn.ordinal=function(e){return this._ordinal.replace(\"%d\",e)},yn.preparse=_n,yn.postformat=_n,yn.relativeTime=function(e,t,n,s){var i=this._relativeTime[n];return b(i)?i(e,t,n,s):i.replace(/%d/i,e)},yn.pastFuture=function(e,t){var n=this._relativeTime[0<e?\"future\":\"past\"];return b(n)?n(t):n.replace(/%s/i,t)},yn.set=function(e){var t,n;for(n in e)b(t=e[n])?this[n]=t:this[\"_\"+n]=t;this._config=e,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+\"|\"+/\\d{1,2}/.source)},yn.months=function(e,t){return e?o(this._months)?this._months[e.month()]:this._months[(this._months.isFormat||We).test(t)?\"format\":\"standalone\"][e.month()]:o(this._months)?this._months:this._months.standalone},yn.monthsShort=function(e,t){return e?o(this._monthsShort)?this._monthsShort[e.month()]:this._monthsShort[We.test(t)?\"format\":\"standalone\"][e.month()]:o(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},yn.monthsParse=function(e,t,n){var s,i,r;if(this._monthsParseExact)return function(e,t,n){var s,i,r,a=e.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],s=0;s<12;++s)r=y([2e3,s]),this._shortMonthsParse[s]=this.monthsShort(r,\"\").toLocaleLowerCase(),this._longMonthsParse[s]=this.months(r,\"\").toLocaleLowerCase();return n?\"MMM\"===t?-1!==(i=Ye.call(this._shortMonthsParse,a))?i:null:-1!==(i=Ye.call(this._longMonthsParse,a))?i:null:\"MMM\"===t?-1!==(i=Ye.call(this._shortMonthsParse,a))?i:-1!==(i=Ye.call(this._longMonthsParse,a))?i:null:-1!==(i=Ye.call(this._longMonthsParse,a))?i:-1!==(i=Ye.call(this._shortMonthsParse,a))?i:null}.call(this,e,t,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;s<12;s++){if(i=y([2e3,s]),n&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp(\"^\"+this.months(i,\"\").replace(\".\",\"\")+\"$\",\"i\"),this._shortMonthsParse[s]=new RegExp(\"^\"+this.monthsShort(i,\"\").replace(\".\",\"\")+\"$\",\"i\")),n||this._monthsParse[s]||(r=\"^\"+this.months(i,\"\")+\"|^\"+this.monthsShort(i,\"\"),this._monthsParse[s]=new RegExp(r.replace(\".\",\"\"),\"i\")),n&&\"MMMM\"===t&&this._longMonthsParse[s].test(e))return s;if(n&&\"MMM\"===t&&this._shortMonthsParse[s].test(e))return s;if(!n&&this._monthsParse[s].test(e))return s}},yn.monthsRegex=function(e){return this._monthsParseExact?(m(this,\"_monthsRegex\")||Ne.call(this),e?this._monthsStrictRegex:this._monthsRegex):(m(this,\"_monthsRegex\")||(this._monthsRegex=Le),this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex)},yn.monthsShortRegex=function(e){return this._monthsParseExact?(m(this,\"_monthsRegex\")||Ne.call(this),e?this._monthsShortStrictRegex:this._monthsShortRegex):(m(this,\"_monthsShortRegex\")||(this._monthsShortRegex=Fe),this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex)},yn.week=function(e){return Ie(e,this._week.dow,this._week.doy).week},yn.firstDayOfYear=function(){return this._week.doy},yn.firstDayOfWeek=function(){return this._week.dow},yn.weekdays=function(e,t){var n=o(this._weekdays)?this._weekdays:this._weekdays[e&&!0!==e&&this._weekdays.isFormat.test(t)?\"format\":\"standalone\"];return!0===e?je(n,this._week.dow):e?n[e.day()]:n},yn.weekdaysMin=function(e){return!0===e?je(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin},yn.weekdaysShort=function(e){return!0===e?je(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort},yn.weekdaysParse=function(e,t,n){var s,i,r;if(this._weekdaysParseExact)return function(e,t,n){var s,i,r,a=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],s=0;s<7;++s)r=y([2e3,1]).day(s),this._minWeekdaysParse[s]=this.weekdaysMin(r,\"\").toLocaleLowerCase(),this._shortWeekdaysParse[s]=this.weekdaysShort(r,\"\").toLocaleLowerCase(),this._weekdaysParse[s]=this.weekdays(r,\"\").toLocaleLowerCase();return n?\"dddd\"===t?-1!==(i=Ye.call(this._weekdaysParse,a))?i:null:\"ddd\"===t?-1!==(i=Ye.call(this._shortWeekdaysParse,a))?i:null:-1!==(i=Ye.call(this._minWeekdaysParse,a))?i:null:\"dddd\"===t?-1!==(i=Ye.call(this._weekdaysParse,a))?i:-1!==(i=Ye.call(this._shortWeekdaysParse,a))?i:-1!==(i=Ye.call(this._minWeekdaysParse,a))?i:null:\"ddd\"===t?-1!==(i=Ye.call(this._shortWeekdaysParse,a))?i:-1!==(i=Ye.call(this._weekdaysParse,a))?i:-1!==(i=Ye.call(this._minWeekdaysParse,a))?i:null:-1!==(i=Ye.call(this._minWeekdaysParse,a))?i:-1!==(i=Ye.call(this._weekdaysParse,a))?i:-1!==(i=Ye.call(this._shortWeekdaysParse,a))?i:null}.call(this,e,t,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),s=0;s<7;s++){if(i=y([2e3,1]).day(s),n&&!this._fullWeekdaysParse[s]&&(this._fullWeekdaysParse[s]=new RegExp(\"^\"+this.weekdays(i,\"\").replace(\".\",\"\\\\.?\")+\"$\",\"i\"),this._shortWeekdaysParse[s]=new RegExp(\"^\"+this.weekdaysShort(i,\"\").replace(\".\",\"\\\\.?\")+\"$\",\"i\"),this._minWeekdaysParse[s]=new RegExp(\"^\"+this.weekdaysMin(i,\"\").replace(\".\",\"\\\\.?\")+\"$\",\"i\")),this._weekdaysParse[s]||(r=\"^\"+this.weekdays(i,\"\")+\"|^\"+this.weekdaysShort(i,\"\")+\"|^\"+this.weekdaysMin(i,\"\"),this._weekdaysParse[s]=new RegExp(r.replace(\".\",\"\"),\"i\")),n&&\"dddd\"===t&&this._fullWeekdaysParse[s].test(e))return s;if(n&&\"ddd\"===t&&this._shortWeekdaysParse[s].test(e))return s;if(n&&\"dd\"===t&&this._minWeekdaysParse[s].test(e))return s;if(!n&&this._weekdaysParse[s].test(e))return s}},yn.weekdaysRegex=function(e){return this._weekdaysParseExact?(m(this,\"_weekdaysRegex\")||Qe.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(m(this,\"_weekdaysRegex\")||(this._weekdaysRegex=qe),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)},yn.weekdaysShortRegex=function(e){return this._weekdaysParseExact?(m(this,\"_weekdaysRegex\")||Qe.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(m(this,\"_weekdaysShortRegex\")||(this._weekdaysShortRegex=Je),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},yn.weekdaysMinRegex=function(e){return this._weekdaysParseExact?(m(this,\"_weekdaysRegex\")||Qe.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(m(this,\"_weekdaysMinRegex\")||(this._weekdaysMinRegex=Be),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},yn.isPM=function(e){return\"p\"===(e+\"\").toLowerCase().charAt(0)},yn.meridiem=function(e,t,n){return 11<e?n?\"pm\":\"PM\":n?\"am\":\"AM\"},ut(\"en\",{dayOfMonthOrdinalParse:/\\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1===D(e%100/10)?\"th\":1===t?\"st\":2===t?\"nd\":3===t?\"rd\":\"th\")}}),c.lang=n(\"moment.lang is deprecated. Use moment.locale instead.\",ut),c.langData=n(\"moment.langData is deprecated. Use moment.localeData instead.\",ht);var wn=Math.abs;function Mn(e,t,n,s){var i=jt(t,n);return e._milliseconds+=s*i._milliseconds,e._days+=s*i._days,e._months+=s*i._months,e._bubble()}function kn(e){return e<0?Math.floor(e):Math.ceil(e)}function Sn(e){return 4800*e/146097}function Dn(e){return 146097*e/4800}function Yn(e){return function(){return this.as(e)}}var On=Yn(\"ms\"),Tn=Yn(\"s\"),bn=Yn(\"m\"),xn=Yn(\"h\"),Pn=Yn(\"d\"),Wn=Yn(\"w\"),Cn=Yn(\"M\"),Hn=Yn(\"Q\"),Rn=Yn(\"y\");function Un(e){return function(){return this.isValid()?this._data[e]:NaN}}var Fn=Un(\"milliseconds\"),Ln=Un(\"seconds\"),Nn=Un(\"minutes\"),Gn=Un(\"hours\"),Vn=Un(\"days\"),En=Un(\"months\"),In=Un(\"years\");var An=Math.round,jn={ss:44,s:45,m:45,h:22,d:26,M:11};var Zn=Math.abs;function zn(e){return(0<e)-(e<0)||+e}function $n(){if(!this.isValid())return this.localeData().invalidDate();var e,t,n=Zn(this._milliseconds)/1e3,s=Zn(this._days),i=Zn(this._months);t=S((e=S(n/60))/60),n%=60,e%=60;var r=S(i/12),a=i%=12,o=s,u=t,l=e,h=n?n.toFixed(3).replace(/\\.?0+$/,\"\"):\"\",d=this.asSeconds();if(!d)return\"P0D\";var c=d<0?\"-\":\"\",f=zn(this._months)!==zn(d)?\"-\":\"\",m=zn(this._days)!==zn(d)?\"-\":\"\",_=zn(this._milliseconds)!==zn(d)?\"-\":\"\";return c+\"P\"+(r?f+r+\"Y\":\"\")+(a?f+a+\"M\":\"\")+(o?m+o+\"D\":\"\")+(u||l||h?\"T\":\"\")+(u?_+u+\"H\":\"\")+(l?_+l+\"M\":\"\")+(h?_+h+\"S\":\"\")}var qn=Ht.prototype;return qn.isValid=function(){return this._isValid},qn.abs=function(){var e=this._data;return this._milliseconds=wn(this._milliseconds),this._days=wn(this._days),this._months=wn(this._months),e.milliseconds=wn(e.milliseconds),e.seconds=wn(e.seconds),e.minutes=wn(e.minutes),e.hours=wn(e.hours),e.months=wn(e.months),e.years=wn(e.years),this},qn.add=function(e,t){return Mn(this,e,t,1)},qn.subtract=function(e,t){return Mn(this,e,t,-1)},qn.as=function(e){if(!this.isValid())return NaN;var t,n,s=this._milliseconds;if(\"month\"===(e=H(e))||\"quarter\"===e||\"year\"===e)switch(t=this._days+s/864e5,n=this._months+Sn(t),e){case\"month\":return n;case\"quarter\":return n/3;case\"year\":return n/12}else switch(t=this._days+Math.round(Dn(this._months)),e){case\"week\":return t/7+s/6048e5;case\"day\":return t+s/864e5;case\"hour\":return 24*t+s/36e5;case\"minute\":return 1440*t+s/6e4;case\"second\":return 86400*t+s/1e3;case\"millisecond\":return Math.floor(864e5*t)+s;default:throw new Error(\"Unknown unit \"+e)}},qn.asMilliseconds=On,qn.asSeconds=Tn,qn.asMinutes=bn,qn.asHours=xn,qn.asDays=Pn,qn.asWeeks=Wn,qn.asMonths=Cn,qn.asQuarters=Hn,qn.asYears=Rn,qn.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*D(this._months/12):NaN},qn._bubble=function(){var e,t,n,s,i,r=this._milliseconds,a=this._days,o=this._months,u=this._data;return 0<=r&&0<=a&&0<=o||r<=0&&a<=0&&o<=0||(r+=864e5*kn(Dn(o)+a),o=a=0),u.milliseconds=r%1e3,e=S(r/1e3),u.seconds=e%60,t=S(e/60),u.minutes=t%60,n=S(t/60),u.hours=n%24,o+=i=S(Sn(a+=S(n/24))),a-=kn(Dn(i)),s=S(o/12),o%=12,u.days=a,u.months=o,u.years=s,this},qn.clone=function(){return jt(this)},qn.get=function(e){return e=H(e),this.isValid()?this[e+\"s\"]():NaN},qn.milliseconds=Fn,qn.seconds=Ln,qn.minutes=Nn,qn.hours=Gn,qn.days=Vn,qn.weeks=function(){return S(this.days()/7)},qn.months=En,qn.years=In,qn.humanize=function(e){if(!this.isValid())return this.localeData().invalidDate();var t,n,s,i,r,a,o,u,l,h,d,c=this.localeData(),f=(n=!e,s=c,i=jt(t=this).abs(),r=An(i.as(\"s\")),a=An(i.as(\"m\")),o=An(i.as(\"h\")),u=An(i.as(\"d\")),l=An(i.as(\"M\")),h=An(i.as(\"y\")),(d=r<=jn.ss&&[\"s\",r]||r<jn.s&&[\"ss\",r]||a<=1&&[\"m\"]||a<jn.m&&[\"mm\",a]||o<=1&&[\"h\"]||o<jn.h&&[\"hh\",o]||u<=1&&[\"d\"]||u<jn.d&&[\"dd\",u]||l<=1&&[\"M\"]||l<jn.M&&[\"MM\",l]||h<=1&&[\"y\"]||[\"yy\",h])[2]=n,d[3]=0<+t,d[4]=s,function(e,t,n,s,i){return i.relativeTime(t||1,!!n,e,s)}.apply(null,d));return e&&(f=c.pastFuture(+this,f)),c.postformat(f)},qn.toISOString=$n,qn.toString=$n,qn.toJSON=$n,qn.locale=Xt,qn.localeData=en,qn.toIsoString=n(\"toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)\",$n),qn.lang=Kt,I(\"X\",0,0,\"unix\"),I(\"x\",0,0,\"valueOf\"),ue(\"x\",se),ue(\"X\",/[+-]?\\d+(\\.\\d{1,3})?/),ce(\"X\",function(e,t,n){n._d=new Date(1e3*parseFloat(e,10))}),ce(\"x\",function(e,t,n){n._d=new Date(D(e))}),c.version=\"2.24.0\",e=bt,c.fn=mn,c.min=function(){return Wt(\"isBefore\",[].slice.call(arguments,0))},c.max=function(){return Wt(\"isAfter\",[].slice.call(arguments,0))},c.now=function(){return Date.now?Date.now():+new Date},c.utc=y,c.unix=function(e){return bt(1e3*e)},c.months=function(e,t){return vn(e,t,\"months\")},c.isDate=d,c.locale=ut,c.invalid=p,c.duration=jt,c.isMoment=k,c.weekdays=function(e,t,n){return pn(e,t,n,\"weekdays\")},c.parseZone=function(){return bt.apply(null,arguments).parseZone()},c.localeData=ht,c.isDuration=Rt,c.monthsShort=function(e,t){return vn(e,t,\"monthsShort\")},c.weekdaysMin=function(e,t,n){return pn(e,t,n,\"weekdaysMin\")},c.defineLocale=lt,c.updateLocale=function(e,t){if(null!=t){var n,s,i=st;null!=(s=ot(e))&&(i=s._config),(n=new P(t=x(i,t))).parentLocale=it[e],it[e]=n,ut(e)}else null!=it[e]&&(null!=it[e].parentLocale?it[e]=it[e].parentLocale:null!=it[e]&&delete it[e]);return it[e]},c.locales=function(){return s(it)},c.weekdaysShort=function(e,t,n){return pn(e,t,n,\"weekdaysShort\")},c.normalizeUnits=H,c.relativeTimeRounding=function(e){return void 0===e?An:\"function\"==typeof e&&(An=e,!0)},c.relativeTimeThreshold=function(e,t){return void 0!==jn[e]&&(void 0===t?jn[e]:(jn[e]=t,\"s\"===e&&(jn.ss=t-1),!0))},c.calendarFormat=function(e,t){var n=e.diff(t,\"days\",!0);return n<-6?\"sameElse\":n<-1?\"lastWeek\":n<0?\"lastDay\":n<1?\"sameDay\":n<2?\"nextDay\":n<7?\"nextWeek\":\"sameElse\"},c.prototype=mn,c.HTML5_FMT={DATETIME_LOCAL:\"YYYY-MM-DDTHH:mm\",DATETIME_LOCAL_SECONDS:\"YYYY-MM-DDTHH:mm:ss\",DATETIME_LOCAL_MS:\"YYYY-MM-DDTHH:mm:ss.SSS\",DATE:\"YYYY-MM-DD\",TIME:\"HH:mm\",TIME_SECONDS:\"HH:mm:ss\",TIME_MS:\"HH:mm:ss.SSS\",WEEK:\"GGGG-[W]WW\",MONTH:\"YYYY-MM\"},c});","// 'path' module extracted from Node.js v8.11.1 (only the posix part)\n// transplited with Babel\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError('Path must be a string. Received ' + JSON.stringify(path));\n }\n}\n\n// Resolves . and .. elements in a path with directory names\nfunction normalizeStringPosix(path, allowAboveRoot) {\n var res = '';\n var lastSegmentLength = 0;\n var lastSlash = -1;\n var dots = 0;\n var code;\n for (var i = 0; i <= path.length; ++i) {\n if (i < path.length)\n code = path.charCodeAt(i);\n else if (code === 47 /*/*/)\n break;\n else\n code = 47 /*/*/;\n if (code === 47 /*/*/) {\n if (lastSlash === i - 1 || dots === 1) {\n // NOOP\n } else if (lastSlash !== i - 1 && dots === 2) {\n if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 /*.*/ || res.charCodeAt(res.length - 2) !== 46 /*.*/) {\n if (res.length > 2) {\n var lastSlashIndex = res.lastIndexOf('/');\n if (lastSlashIndex !== res.length - 1) {\n if (lastSlashIndex === -1) {\n res = '';\n lastSegmentLength = 0;\n } else {\n res = res.slice(0, lastSlashIndex);\n lastSegmentLength = res.length - 1 - res.lastIndexOf('/');\n }\n lastSlash = i;\n dots = 0;\n continue;\n }\n } else if (res.length === 2 || res.length === 1) {\n res = '';\n lastSegmentLength = 0;\n lastSlash = i;\n dots = 0;\n continue;\n }\n }\n if (allowAboveRoot) {\n if (res.length > 0)\n res += '/..';\n else\n res = '..';\n lastSegmentLength = 2;\n }\n } else {\n if (res.length > 0)\n res += '/' + path.slice(lastSlash + 1, i);\n else\n res = path.slice(lastSlash + 1, i);\n lastSegmentLength = i - lastSlash - 1;\n }\n lastSlash = i;\n dots = 0;\n } else if (code === 46 /*.*/ && dots !== -1) {\n ++dots;\n } else {\n dots = -1;\n }\n }\n return res;\n}\n\nfunction _format(sep, pathObject) {\n var dir = pathObject.dir || pathObject.root;\n var base = pathObject.base || (pathObject.name || '') + (pathObject.ext || '');\n if (!dir) {\n return base;\n }\n if (dir === pathObject.root) {\n return dir + base;\n }\n return dir + sep + base;\n}\n\nvar posix = {\n // path.resolve([from ...], to)\n resolve: function resolve() {\n var resolvedPath = '';\n var resolvedAbsolute = false;\n var cwd;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path;\n if (i >= 0)\n path = arguments[i];\n else {\n if (cwd === undefined)\n cwd = process.cwd();\n path = cwd;\n }\n\n assertPath(path);\n\n // Skip empty entries\n if (path.length === 0) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charCodeAt(0) === 47 /*/*/;\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute);\n\n if (resolvedAbsolute) {\n if (resolvedPath.length > 0)\n return '/' + resolvedPath;\n else\n return '/';\n } else if (resolvedPath.length > 0) {\n return resolvedPath;\n } else {\n return '.';\n }\n },\n\n normalize: function normalize(path) {\n assertPath(path);\n\n if (path.length === 0) return '.';\n\n var isAbsolute = path.charCodeAt(0) === 47 /*/*/;\n var trailingSeparator = path.charCodeAt(path.length - 1) === 47 /*/*/;\n\n // Normalize the path\n path = normalizeStringPosix(path, !isAbsolute);\n\n if (path.length === 0 && !isAbsolute) path = '.';\n if (path.length > 0 && trailingSeparator) path += '/';\n\n if (isAbsolute) return '/' + path;\n return path;\n },\n\n isAbsolute: function isAbsolute(path) {\n assertPath(path);\n return path.length > 0 && path.charCodeAt(0) === 47 /*/*/;\n },\n\n join: function join() {\n if (arguments.length === 0)\n return '.';\n var joined;\n for (var i = 0; i < arguments.length; ++i) {\n var arg = arguments[i];\n assertPath(arg);\n if (arg.length > 0) {\n if (joined === undefined)\n joined = arg;\n else\n joined += '/' + arg;\n }\n }\n if (joined === undefined)\n return '.';\n return posix.normalize(joined);\n },\n\n relative: function relative(from, to) {\n assertPath(from);\n assertPath(to);\n\n if (from === to) return '';\n\n from = posix.resolve(from);\n to = posix.resolve(to);\n\n if (from === to) return '';\n\n // Trim any leading backslashes\n var fromStart = 1;\n for (; fromStart < from.length; ++fromStart) {\n if (from.charCodeAt(fromStart) !== 47 /*/*/)\n break;\n }\n var fromEnd = from.length;\n var fromLen = fromEnd - fromStart;\n\n // Trim any leading backslashes\n var toStart = 1;\n for (; toStart < to.length; ++toStart) {\n if (to.charCodeAt(toStart) !== 47 /*/*/)\n break;\n }\n var toEnd = to.length;\n var toLen = toEnd - toStart;\n\n // Compare paths to find the longest common path from root\n var length = fromLen < toLen ? fromLen : toLen;\n var lastCommonSep = -1;\n var i = 0;\n for (; i <= length; ++i) {\n if (i === length) {\n if (toLen > length) {\n if (to.charCodeAt(toStart + i) === 47 /*/*/) {\n // We get here if `from` is the exact base path for `to`.\n // For example: from='/foo/bar'; to='/foo/bar/baz'\n return to.slice(toStart + i + 1);\n } else if (i === 0) {\n // We get here if `from` is the root\n // For example: from='/'; to='/foo'\n return to.slice(toStart + i);\n }\n } else if (fromLen > length) {\n if (from.charCodeAt(fromStart + i) === 47 /*/*/) {\n // We get here if `to` is the exact base path for `from`.\n // For example: from='/foo/bar/baz'; to='/foo/bar'\n lastCommonSep = i;\n } else if (i === 0) {\n // We get here if `to` is the root.\n // For example: from='/foo'; to='/'\n lastCommonSep = 0;\n }\n }\n break;\n }\n var fromCode = from.charCodeAt(fromStart + i);\n var toCode = to.charCodeAt(toStart + i);\n if (fromCode !== toCode)\n break;\n else if (fromCode === 47 /*/*/)\n lastCommonSep = i;\n }\n\n var out = '';\n // Generate the relative path based on the path difference between `to`\n // and `from`\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\n if (i === fromEnd || from.charCodeAt(i) === 47 /*/*/) {\n if (out.length === 0)\n out += '..';\n else\n out += '/..';\n }\n }\n\n // Lastly, append the rest of the destination (`to`) path that comes after\n // the common path parts\n if (out.length > 0)\n return out + to.slice(toStart + lastCommonSep);\n else {\n toStart += lastCommonSep;\n if (to.charCodeAt(toStart) === 47 /*/*/)\n ++toStart;\n return to.slice(toStart);\n }\n },\n\n _makeLong: function _makeLong(path) {\n return path;\n },\n\n dirname: function dirname(path) {\n assertPath(path);\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) return '//';\n return path.slice(0, end);\n },\n\n basename: function basename(path, ext) {\n if (ext !== undefined && typeof ext !== 'string') throw new TypeError('\"ext\" argument must be a string');\n assertPath(path);\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n if (ext !== undefined && ext.length > 0 && ext.length <= path.length) {\n if (ext.length === path.length && ext === path) return '';\n var extIdx = ext.length - 1;\n var firstNonSlashEnd = -1;\n for (i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else {\n if (firstNonSlashEnd === -1) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching\n matchedSlash = false;\n firstNonSlashEnd = i + 1;\n }\n if (extIdx >= 0) {\n // Try to match the explicit extension\n if (code === ext.charCodeAt(extIdx)) {\n if (--extIdx === -1) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = i;\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extIdx = -1;\n end = firstNonSlashEnd;\n }\n }\n }\n }\n\n if (start === end) end = firstNonSlashEnd;else if (end === -1) end = path.length;\n return path.slice(start, end);\n } else {\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n }\n },\n\n extname: function extname(path) {\n assertPath(path);\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n },\n\n format: function format(pathObject) {\n if (pathObject === null || typeof pathObject !== 'object') {\n throw new TypeError('The \"pathObject\" argument must be of type Object. Received type ' + typeof pathObject);\n }\n return _format('/', pathObject);\n },\n\n parse: function parse(path) {\n assertPath(path);\n\n var ret = { root: '', dir: '', base: '', ext: '', name: '' };\n if (path.length === 0) return ret;\n var code = path.charCodeAt(0);\n var isAbsolute = code === 47 /*/*/;\n var start;\n if (isAbsolute) {\n ret.root = '/';\n start = 1;\n } else {\n start = 0;\n }\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n var i = path.length - 1;\n\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n\n // Get non-dir info\n for (; i >= start; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1) startDot = i;else if (preDotState !== 1) preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n if (end !== -1) {\n if (startPart === 0 && isAbsolute) ret.base = ret.name = path.slice(1, end);else ret.base = ret.name = path.slice(startPart, end);\n }\n } else {\n if (startPart === 0 && isAbsolute) {\n ret.name = path.slice(1, startDot);\n ret.base = path.slice(1, end);\n } else {\n ret.name = path.slice(startPart, startDot);\n ret.base = path.slice(startPart, end);\n }\n ret.ext = path.slice(startDot, end);\n }\n\n if (startPart > 0) ret.dir = path.slice(0, startPart - 1);else if (isAbsolute) ret.dir = '/';\n\n return ret;\n },\n\n sep: '/',\n delimiter: ':',\n win32: null,\n posix: null\n};\n\nposix.posix = posix;\n\nmodule.exports = posix;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the module cache\n__webpack_require__.c = __webpack_module_cache__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","// module cache are used so entry inlining is disabled\n// startup\n// Load entry module and return exports\nvar __webpack_exports__ = __webpack_require__(__webpack_require__.s = 8968);\n"],"names":["root","factory","exports","module","define","amd","self","this","parser","o","k","v","l","length","$V0","$V1","$V2","$V3","$V4","$V5","$V6","$V7","$V8","$V9","$Va","$Vb","$Vc","$Vd","$Ve","$Vf","$Vg","$Vh","$Vi","$Vj","$Vk","$Vl","$Vm","$Vn","$Vo","$Vp","$Vq","$Vr","$Vs","$Vt","$Vu","$Vv","$Vw","$Vx","$Vy","$Vz","$VA","$VB","$VC","trace","yy","symbols_","terminals_","productions_","performAction","yytext","yyleng","yylineno","yystate","$$","_$","$0","setDirection","parseDirective","trim","replace","$","addRelation","title","cleanupLabel","setTitle","setAccDescription","addClass","setCssClass","addMembers","addAnnotation","push","addMember","relation","relationTitle1","relationTitle2","id1","id2","type1","type2","lineType","relationType","AGGREGATION","EXTENSION","COMPOSITION","DEPENDENCY","LINE","DOTTED_LINE","setClickEvent","setTooltip","setLink","table","defaultActions","parseError","str","hash","recoverable","error","Error","parse","input","stack","tstack","vstack","lstack","recovering","TERROR","EOF","args","slice","call","arguments","lexer","Object","create","sharedState","prototype","hasOwnProperty","setInput","yylloc","yyloc","ranges","options","lex","token","pop","Array","getPrototypeOf","symbol","preErrorSymbol","state","action","r","p","len","newState","expected","yyval","errStr","showPosition","join","text","match","line","loc","first_line","last_line","first_column","last_column","range","apply","concat","_input","_more","_backtrack","done","matched","conditionStack","offset","ch","unput","lines","split","substr","oldLines","more","reject","backtrack_lexer","less","n","pastInput","past","upcomingInput","next","pre","c","test_match","indexed_rule","backup","matches","tempMatch","index","rules","_currentRules","i","flex","begin","condition","popState","conditions","topState","Math","abs","pushState","stateStackSize","yy_","$avoiding_name_collisions","YY_START","Parser","main","console","log","process","exit","source","argv","addEntity","addRelationship","addAttributes","attributeType","attributeName","attributeKeyType","attributeComment","cardA","relType","cardB","Cardinality","ZERO_OR_ONE","ZERO_OR_MORE","ONE_OR_MORE","ONLY_ONE","Identification","NON_IDENTIFYING","IDENTIFYING","$VD","$VE","$VF","$VG","$VH","$VI","$VJ","$VK","$VL","$VM","$VN","$VO","$VP","$VQ","$VR","$VS","$VT","$VU","$VV","$VW","$VX","$VY","$VZ","$V_","$V$","$V01","$V11","$V21","$V31","$V41","$V51","$V61","$V71","$V81","$V91","$Va1","$Vb1","$Vc1","$Vd1","$Ve1","$Vf1","$Vg1","$Vh1","$Vi1","$Vj1","$Vk1","$Vl1","$Vm1","$Vn1","$Vo1","$Vp1","$Vq1","$Vr1","$Vs1","$Vt1","$Vu1","$Vv1","$Vw1","$Vx1","$Vy1","$Vz1","$VA1","$VB1","$VC1","$VD1","$VE1","$VF1","$VG1","$VH1","nodes","addSubGraph","undefined","addLink","stmt","setClass","addVertex","fromEntries","inf","destructLink","type","stroke","updateLink","updateLinkInterpolate","value","firstGraph","setDateFormat","enableInclusiveEndDates","TopAxis","setAxisFormat","setExcludes","setIncludes","setTodayMarker","addSection","addTask","setOptions","checkout","branch","merge","commit","commitType","NORMAL","REVERSE","HIGHLIGHT","setInfo","setShowData","cleanupValue","setPieTitle","addRequirement","setNewReqId","setNewReqText","setNewReqRisk","setNewReqVerifyMethod","RequirementType","REQUIREMENT","FUNCTIONAL_REQUIREMENT","INTERFACE_REQUIREMENT","PERFORMANCE_REQUIREMENT","PHYSICAL_REQUIREMENT","DESIGN_CONSTRAINT","RiskLevel","LOW_RISK","MED_RISK","HIGH_RISK","VerifyType","VERIFY_ANALYSIS","VERIFY_DEMONSTRATION","VERIFY_INSPECTION","VERIFY_TEST","addElement","setNewElementType","setNewElementDocRef","Relationships","CONTAINS","COPIES","DERIVES","SATISFIES","VERIFIES","REFINES","TRACES","description","parseMessage","sequenceIndex","Number","sequenceIndexStep","sequenceVisible","signalType","LINETYPE","AUTONUMBER","ACTIVE_START","actor","ACTIVE_END","setDiagramTitle","substring","unshift","loopText","LOOP_START","LOOP_END","color","RECT_START","RECT_END","optText","OPT_START","OPT_END","altText","ALT_START","ALT_END","parText","PAR_START","PAR_END","PAR_AND","ALT_ELSE","placement","PLACEMENT","OVER","LEFTOF","RIGHTOF","from","to","msg","SOLID_OPEN","DOTTED_OPEN","SOLID","DOTTED","SOLID_CROSS","DOTTED_CROSS","SOLID_POINT","DOTTED_POINT","setRootDoc","id","trimColon","state1","state2","doc","parts","getDividerId","note","position","invalidProtocolRegex","htmlEntitiesRegex","ctrlCharactersRegex","urlSchemeRegex","relativeFirstCharacters","url","sanitizedUrl","dec","String","fromCharCode","indexOf","isRelativeUrlWithoutProtocol","urlSchemeParseResults","urlScheme","test","node","point","intersect","LEVELS","debug","info","warn","fatal","setLogLevel","level","isNaN","toLowerCase","bind","format","time","moment","max","values","valueof","min","x","epsilon","translateX","translateY","y","number","scale","d","center","bandwidth","round","entering","__axis","axis","orient","tickArguments","tickValues","tickFormat","tickSizeInner","tickSizeOuter","tickPadding","window","devicePixelRatio","transform","context","ticks","domain","spacing","range0","range1","copy","selection","path","selectAll","data","tick","order","tickExit","tickEnter","enter","append","attr","select","insert","transition","isFinite","getAttribute","parentNode","remove","filter","each","_","tickSize","none","selector","querySelector","array","isArray","empty","querySelectorAll","childMatcher","find","childFirst","firstElementChild","children","update","EnterNode","parent","datum","ownerDocument","namespaceURI","_next","_parent","__data__","bindIndex","group","groupLength","dataLength","bindKey","key","keyValue","nodeByKeyValue","Map","keyValues","has","set","get","delete","arraylike","ascending","a","b","NaN","constructor","appendChild","child","insertBefore","xhtml","svg","xlink","xml","xmlns","name","prefix","namespaces","space","local","attrRemove","removeAttribute","attrRemoveNS","fullname","removeAttributeNS","attrConstant","setAttribute","attrConstantNS","setAttributeNS","attrFunction","attrFunctionNS","defaultView","document","styleRemove","style","removeProperty","styleConstant","priority","setProperty","styleFunction","styleValue","getPropertyValue","getComputedStyle","propertyRemove","propertyConstant","propertyFunction","classArray","string","classList","ClassList","_node","_names","classedAdd","names","list","add","classedRemove","classedTrue","classedFalse","classedFunction","textRemove","textContent","textConstant","textFunction","htmlRemove","innerHTML","htmlConstant","htmlFunction","raise","nextSibling","lower","previousSibling","firstChild","creatorInherit","uri","documentElement","createElement","createElementNS","creatorFixed","namespace","constantNull","removeChild","selection_cloneShallow","clone","cloneNode","selection_cloneDeep","parseTypenames","typenames","map","t","onRemove","typename","on","__on","j","m","removeEventListener","listener","onAdd","event","contextListener","addEventListener","dispatchEvent","params","CustomEvent","createEvent","initEvent","bubbles","cancelable","detail","dispatchConstant","dispatchFunction","splice","contains","Selection","groups","parents","_groups","_parents","subgroups","subnode","subgroup","arrayAll","selectorAll","selectChild","childFind","selectChildren","childrenFilter","matcher","enterGroup","updateGroup","exitGroup","previous","i0","i1","_enter","_exit","sparse","onenter","onupdate","onexit","groups0","groups1","m0","m1","merges","group0","group1","compareDocumentPosition","sort","compare","compareNode","sortgroups","sortgroup","callback","size","getAttributeNS","property","classed","html","creator","before","deep","dispatch","Symbol","iterator","noop","Dispatch","types","T","that","taskHead","taskTail","timeout","interval","clockLast","clockNow","clockSkew","clock","performance","now","Date","setFrame","requestAnimationFrame","f","setTimeout","clearNow","Timer","_call","_time","timer","delay","restart","wake","e","timerFlush","t0","t2","t1","Infinity","sleep","nap","poke","clearTimeout","clearInterval","setInterval","elapsed","stop","TypeError","emptyOn","emptyTween","timing","schedules","__transition","tween","start","duration","ease","init","schedule","svgNode","degrees","PI","rotate","skewX","scaleX","scaleY","sqrt","atan2","atan","interpolateTransform","pxComma","pxParen","degParen","s","q","xa","ya","xb","yb","translate","interpolateTransformCss","DOMMatrix","WebKitCSSMatrix","isIdentity","decompose","interpolateTransformSvg","baseVal","consolidate","matrix","tweenRemove","tween0","tween1","tweenFunction","tweenValue","_id","extend","definition","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","RegExp","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatRgb","formatRgb","exec","parseInt","rgbn","Rgb","rgba","hsla","g","rgbConvert","opacity","rgb_formatHex","hex","rgb_formatRgb","toString","h","Hsl","hslConvert","hsl2rgb","m2","basis","v0","v1","v2","v3","t3","channels","assign","displayable","formatHsl","pow","nogamma","linear","rgbGamma","exponential","gamma","end","rgbSpline","spline","colors","floor","reA","reB","am","bm","bs","bi","lastIndex","one","zero","interpolate","value1","string00","interpolate0","string1","string0","string10","attrInterpolate","attrInterpolateNS","attrTweenNS","_value","attrTween","delayFunction","delayConstant","durationFunction","durationConstant","easeConstant","onFunction","on0","on1","sit","every","styleInterpolate","styleTween","textInterpolate","textTween","Transition","_name","newId","selection_prototype","inherit","id0","styleNull","listener0","styleMaybeRemove","removeFunction","easeVarying","Promise","resolve","cancel","interrupt","defaultTiming","active","radians","Xn","Zn","labConvert","Lab","Hcl","hcl2lab","z","rgb2lrgb","xyz2lab","lab2xyz","lrgb2rgb","hclConvert","hcl","cos","sin","hue","e10","e5","e2","tickIncrement","count","step","power","LN10","tickStep","step0","step1","bisector","delta","compare1","compare2","left","lo","hi","mid","right","ascendingBisect","bisectRight","genericArray","nb","na","setTime","date","ArrayBuffer","isView","DataView","valueOf","object","unit","normalize","bimap","d0","d1","r0","r1","polymap","reverse","bisect","target","clamp","unknown","continuous","untransform","piecewise","output","rescale","invert","rangeRound","u","transformer","initRange","prefixExponent","re","formatSpecifier","specifier","FormatSpecifier","fill","align","sign","width","comma","precision","formatDecimalParts","toExponential","coefficient","exponent","toFixed","toLocaleString","toPrecision","formatRounded","toUpperCase","formatPrefix","prefixes","linearish","precisionPrefix","precisionRound","precisionFixed","nice","prestep","maxIter","ceil","locale","grouping","thousands","currencyPrefix","currency","currencySuffix","decimal","numerals","formatNumerals","percent","minus","nan","newFormat","formatTypes","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","out","formatTrim","charCodeAt","padding","InternMap","entries","keyof","super","defineProperties","_intern","_key","intern_get","intern_set","intern_delete","Set","implicit","ordinal","durationSecond","durationMinute","durationHour","durationDay","durationWeek","durationYear","newInterval","floori","offseti","field","millisecond","second","getMilliseconds","getUTCSeconds","minute","getSeconds","getMinutes","hour","getHours","day","setHours","setDate","getDate","getTimezoneOffset","weekday","getDay","sunday","monday","tuesday","wednesday","thursday","friday","saturday","month","setMonth","getMonth","getFullYear","year","setFullYear","utcMinute","setUTCSeconds","getUTCMinutes","utcHour","setUTCMinutes","getUTCHours","utcDay","setUTCHours","setUTCDate","getUTCDate","utcWeekday","getUTCDay","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","utcMonth","setUTCMonth","getUTCMonth","getUTCFullYear","utcYear","setUTCFullYear","ticker","week","tickIntervals","tickInterval","utcTicks","utcTickInterval","timeTicks","timeTickInterval","localDate","H","M","S","L","utcDate","UTC","newDate","timeFormat","pads","numberRe","percentRe","requoteRe","pad","requote","formatRe","formatLookup","parseWeekdayNumberSunday","w","parseWeekdayNumberMonday","parseWeekNumberSunday","U","parseWeekNumberISO","V","parseWeekNumberMonday","W","parseFullYear","parseYear","parseZone","Z","parseQuarter","parseMonthNumber","parseDayOfMonth","parseDayOfYear","parseHour24","parseMinutes","parseSeconds","parseMilliseconds","parseMicroseconds","parseLiteralPercent","parseUnixTimestamp","Q","parseUnixTimestampSeconds","formatDayOfMonth","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMicroseconds","formatMonthNumber","formatMinutes","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","dISO","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatYear","formatYearISO","formatFullYear","formatFullYearISO","formatZone","formatUTCDayOfMonth","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","getUTCMilliseconds","formatUTCMicroseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCSeconds","formatUTCWeekdayNumberMonday","dow","formatUTCWeekNumberSunday","UTCdISO","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCYearISO","formatUTCFullYear","formatUTCFullYearISO","formatUTCZone","formatLiteralPercent","formatUnixTimestamp","formatUnixTimestampSeconds","calendar","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","x0","x1","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_weekdays","days","locale_shortWeekdays","shortDays","locale_months","months","locale_shortMonths","shortMonths","periodRe","periodLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","utcFormats","parses","parseSpecifier","charAt","newParse","X","utcFormat","utcParse","formatLocale","pi","tau","tauEpsilon","Path","_x0","_y0","_x1","_y1","moveTo","closePath","lineTo","quadraticCurveTo","y1","bezierCurveTo","x2","y2","arcTo","y0","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","acos","t01","t21","arc","a0","a1","ccw","dx","dy","cw","da","rect","halfPi","asin","arcInnerRadius","innerRadius","arcOuterRadius","outerRadius","arcStartAngle","startAngle","arcEndAngle","endAngle","arcPadAngle","padAngle","x3","y3","x10","y10","x32","y32","cornerTangents","rc","ox","oy","x11","y11","x00","y00","d2","D","cx0","cy0","cx1","cy1","dx0","dy0","dx1","dy1","cx","cy","cornerRadius","padRadius","buffer","a01","a11","a00","a10","da0","da1","ap","rp","rc0","rc1","p0","p1","oc","ax","ay","bx","by","kc","lc","centroid","Linear","_context","defined","curve","defined0","lineStart","lineEnd","Basis","BasisClosed","BasisOpen","LinearClosed","slope3","h0","h1","s0","s1","slope2","MonotoneX","MonotoneY","ReflectContext","Natural","controlPoints","Step","_t","areaStart","_line","areaEnd","_point","_x2","_x3","_x4","_y2","_y3","_y4","_t0","_x","_y","px","py","applyX","applyY","location","invertX","invertY","rescaleX","rescaleY","COMMENT","RULESET","DECLARATION","pattern","replacement","indexof","search","charat","strlen","sizeof","serialize","stringify","element","return","props","column","character","characters","prev","peek","caret","delimit","delimiter","whitespace","escaping","commenter","identifier","compile","dealloc","alloc","rule","rulesets","pseudo","points","declarations","atrule","variable","scanning","ampersand","reference","comment","declaration","ruleset","post","removeEscapes","newStr","removeScript","txt","rs","idx","decodedText","replaceAll","sanitizeMore","config","htmlLabels","flowchart","securityLevel","breakToPlaceholder","placeholderToBreak","sanitizeText","DOMPurify","lineBreakRegex","evaluate","val","getRows","sanitizeTextOrArray","flat","hasBreaks","splitBreaks","getUrl","useAbsolute","protocol","host","pathname","Channel","toLinear","hue2rgb","channel","rgb2hsl","Lang","upper","Unit","dec2hex","lang","DEC2HEX","changed","reset","is","_ensureHSL","_ensureRGB","Hex","hasAlpha","isFullLength","multiplier","bits","bitsOffset","mask","HSL","hueRe","_hue2deg","parseFloat","charCode","isAlphaPercentage","Keyword","cyanaqua","transparent","RGB","isRedPercentage","isGreenPercentage","isBluePercentage","keyword","hsl","isInteger","changes","weight","inverse","color1","color2","g1","b1","r2","g2","b2","a2","weightScale","weightNormalized","alphaDelta","weight1","weight2","amount","amountCurrent","amountNext","mkBorder","col","darkMode","adjust","Theme","background","primaryColor","noteBkgColor","noteTextColor","fontFamily","fontSize","primaryTextColor","secondaryColor","tertiaryColor","primaryBorderColor","secondaryBorderColor","tertiaryBorderColor","noteBorderColor","secondaryTextColor","tertiaryTextColor","lineColor","textColor","nodeBkg","mainBkg","nodeBorder","clusterBkg","clusterBorder","defaultLinkColor","titleColor","edgeLabelBackground","darken","nodeTextColor","actorBorder","actorBkg","actorTextColor","actorLineColor","labelBoxBkgColor","signalColor","signalTextColor","labelBoxBorderColor","labelTextColor","loopTextColor","activationBorderColor","activationBkgColor","sequenceNumberColor","sectionBkgColor","altSectionBkgColor","sectionBkgColor2","excludeBkgColor","taskBorderColor","taskBkgColor","activeTaskBorderColor","activeTaskBkgColor","lighten","gridColor","doneTaskBkgColor","doneTaskBorderColor","critBorderColor","critBkgColor","todayLineColor","taskTextColor","taskTextOutsideColor","taskTextLightColor","taskTextDarkColor","taskTextClickableColor","transitionColor","transitionLabelColor","stateLabelColor","stateBkg","labelBackgroundColor","compositeBackground","altBackground","compositeTitleBackground","compositeBorder","innerEndBackground","errorBkgColor","errorTextColor","specialStateColor","classText","fillType0","fillType1","fillType2","fillType3","fillType4","fillType5","fillType6","fillType7","pie1","pie2","pie3","pie4","pie5","pie6","pie7","pie8","pie9","pie10","pie11","pie12","pieTitleTextSize","pieTitleTextColor","pieSectionTextSize","pieSectionTextColor","pieLegendTextSize","pieLegendTextColor","pieStrokeColor","pieStrokeWidth","pieOpacity","requirementBackground","requirementBorderColor","requirementBorderSize","requirementTextColor","relationColor","relationLabelBackground","relationLabelColor","git0","git1","git2","git3","git4","git5","git6","git7","gitInv0","gitInv1","gitInv2","gitInv3","gitInv4","gitInv5","gitInv6","gitInv7","branchLabelColor","gitBranchLabel0","gitBranchLabel1","gitBranchLabel2","gitBranchLabel3","gitBranchLabel4","gitBranchLabel5","gitBranchLabel6","gitBranchLabel7","tagLabelColor","tagLabelBackground","tagLabelBorder","tagBorder","commitLabelColor","commitLabelBackground","overrides","keys","forEach","updateColors","secondBkg","mainContrastColor","darkTextColor","border1","border2","arrowheadColor","labelBackground","labelColor","contrast","critical","stateBorder","base","getThemeVariables","userOverrides","theme","calculate","dark","default","forest","neutral","themeVariables","themeCSS","maxTextSize","logLevel","startOnLoad","arrowMarkerAbsolute","secure","deterministicIds","deterministicIDSeed","diagramPadding","nodeSpacing","rankSpacing","useMaxWidth","defaultRenderer","sequence","hideUnusedParticipants","activationWidth","diagramMarginX","diagramMarginY","actorMargin","height","boxMargin","boxTextMargin","noteMargin","messageMargin","messageAlign","mirrorActors","forceMenus","bottomMarginAdj","rightAngles","showSequenceNumbers","actorFontSize","actorFontFamily","actorFontWeight","noteFontSize","noteFontFamily","noteFontWeight","noteAlign","messageFontSize","messageFontFamily","messageFontWeight","wrap","wrapPadding","labelBoxWidth","labelBoxHeight","messageFont","fontWeight","noteFont","actorFont","gantt","titleTopMargin","barHeight","barGap","topPadding","rightPadding","leftPadding","gridLineStartPadding","sectionFontSize","numberSectionStyles","axisFormat","topAxis","useWidth","journey","leftMargin","taskFontSize","taskFontFamily","taskMargin","textPlacement","actorColours","sectionFills","sectionColours","class","dividerMargin","sizeUnit","textHeight","titleShift","forkWidth","forkHeight","miniPadding","fontSizeFactor","labelHeight","edgeLengthFactor","compositTitleSize","radius","er","layoutDirection","minEntityWidth","minEntityHeight","entityPadding","pie","requirement","rect_fill","text_color","rect_border_size","rect_border_color","rect_min_width","rect_min_height","rect_padding","line_height","gitGraph","nodeLabel","mainBranchName","mainBranchOrder","showCommitLabel","showBranches","configKeys","keyify","obj","reduce","res","el","decoder","d3CurveTypes","curveBasis","curveBasisClosed","curveBasisOpen","curveLinear","curveLinearClosed","curveMonotoneX","curveMonotoneY","curveNatural","curveStep","curveStepAfter","curveStepBefore","directive","directiveWithoutOpen","anyComment","detectDirective","commentWithoutDirectives","result","JSON","message","detectType","cnf","memoize","fn","resolver","cache","interpolateToCurve","defaultCurve","curveName","distance","p2","getStylesFromArray","arr","labelStyle","startsWith","cnt","generateId","random","charactersLength","makeid","assignWithDepth","dst","src","depth","clobber","drawSimpleText","elem","textData","nText","common","textElem","anchor","span","textMargin","wrapLabel","label","maxWidth","joinWith","words","completedLines","nextLine","word","wordLength","calculateTextWidth","nextLineLength","breakString","hyphenatedStrings","remainingWord","Boolean","hyphenCharacter","margin","currentLine","currentCharacter","isLastLine","hyphenatedNextLine","calculateTextDimensions","fontFamilies","dims","body","lineHeight","cheight","dim","textObj","rx","ry","valign","bBox","getBBox","calculateSvgSizeAttrs","attrs","configureSvgSize","svgElem","d3Elem","d3Attrs","directiveSanitizer","arg","sanitizeCss","calculateTextHeight","detectInit","inits","results","prop","isSubstringInArray","calcLabelPosition","prevPoint","totalDistance","remainingDistance","vectorDistance","distanceRatio","traverseEdge","calcCardinalityPosition","isRelationTypePresent","initialPosition","angle","cardinalityPosition","calcTerminalLabelPosition","terminalMarkerSize","_points","formatUrl","linkStr","sanitizeUrl","runFunc","functionName","arrPaths","fnName","entityDecode","escape","unescape","initIdGeneratior","deterministic","seed","configFromInitialize","defaultConfig","freeze","siteConfig","directives","currentConfig","updateCurrentConfig","siteCfg","_directives","cfg","sumOfDirectives","sanitize","tmpConfigFromInitialize","getSiteConfig","getConfig","addDirective","_sanitizeText","clear","getTitle","getAccDescription","MERMAID_DOM_ID_PREFIX","relations","classes","classCounter","funs","configApi","splitClassNameAndType","genericType","className","classId","cssClasses","methods","members","annotations","domId","lookUpDomId","classKeys","member","validatedClassName","theClass","memberString","endsWith","ids","setClickFunc","functionArgs","elemId","argList","item","utils","setupToolTips","tooltipElem","getBoundingClientRect","scrollX","scrollY","top","scrollTop","direction","statement","mermaidAPI","bindFunctions","fun","commonClear","getClass","getClasses","annotation","getRelations","getDirection","dir","haveCallback","link","linkTarget","tooltip","edgeCount","parseMember","fieldMatch","methodMatch","buildFieldDisplay","buildMethodDisplay","buildLegacyDisplay","parsedText","cssStyle","displayText","visibility","fieldType","parseGenericTypes","fieldName","classifier","parseClassifier","err","methodName","parameters","returnType","methodStart","methodEnd","firstChar","addTspan","textEl","isFirst","conf","tSpan","cleanedText","classDef","classInfo","titleText2","classTitleString","classTitle","titleHeight","membersLine","membersBox","methodsLine","method","classBox","cssClassStr","rectWidth","childNodes","addSVGAccessibilityFields","yy_parser","title_string","classDb","idCache","getGraphId","foundEntry","entry","sandboxElement","contentDocument","diagram","graphlib","multigraph","setGraph","isMultiGraph","setDefaultEdgeLabel","svgDraw","setNode","setEdge","dagre","edges","edge","getRelationType","lineData","lineFunction","svgPath","p1_card_x","p1_card_y","p2_card_x","p2_card_y","labelPosition","cardinality_1_point","cardinality_2_point","bounds","svgBounds","vBox","markers","extension","composition","aggregation","dependency","circle","cross","barb","markerArray","markerName","_vertexText","isTitle","isNode","styleFn","fo","div","labelClass","vertexText","svgLabel","rows","tspan","labelHelper","_classes","shapeSvg","labelText","createLabel","decodeEntities","bbox","dv","halfPadding","updateNodeBounds","insertPolygonShape","clusterDb","decendants","isDecendant","ancenstorId","clusterId","graph","newGraph","rootId","setParent","edgeInCluster","removeNode","extractDecendants","findNonClusterChild","getAnchorId","externalConnections","adjustClustersAndEdges","clusterData","removeEdge","fromCluster","toCluster","extractor","hasChildren","rankdir","clusterGraph","compound","nodesep","ranksep","marginx","marginy","clusterNode","sorter","sorted","sortNodesByHierarchy","det","sameSign","q1","q2","c1","c2","r3","r4","denom","num","sx","sy","intersectEllipse","polyPoints","intersections","minX","POSITIVE_INFINITY","minY","intersectLine","pdx","pdy","distp","qdx","qdy","distq","forkJoin","shape","shapes","question","questionElem","totalWidth","totalHeight","propKeys","borders","strokeDashArray","addBorder","skipBorder","includes","applyNodePropertyBorders","propKey","rectWithTitle","innerLine","text2","textRows","titleBox","descr","choice","doublecircle","circleGroup","outerCircle","innerCircle","gap","stadium","hexagon","rect_left_inv_arrow","lean_right","lean_left","trapezoid","inv_trapezoid","rect_right_inv_arrow","cylinder","pos","subroutine","fork","class_box","topLine","bottomLine","maxHeight","labelContainer","verticalPos","hasInterface","classData","interfaceLabelText","interfaceLabel","interfaceBBox","classTitleLabel","classTitleBBox","classAttributes","parsedInfo","lbl","classMethods","diffX","nodeElems","positionNode","diff","rectBox","intersectRect","roundedWithTitle","innerRect","noteGroup","divider","clusterElems","edgeLabels","terminalLabels","insertEdgeLabel","labelElement","edgeLabel","startLabelLeft","startLabelElement","startEdgeLabelLeft","inner","slBox","startLeft","setTerminalWidth","startLabelRight","startEdgeLabelRight","startRight","endLabelLeft","endLabelElement","endEdgeLabelLeft","endLeft","endLabelRight","endEdgeLabelRight","endRight","positionEdgeLabel","paths","updatedPath","originalPath","arrowTypeStart","arrowTypeEnd","cutPathAtIntersect","boundryNode","lastPointOutside","isInside","outsideNode","inter","outsidePoint","insidePoint","R","intersection","pointPresent","recursiveRender","_elem","diagramtype","parentCluster","clusters","edgePaths","newEl","setNodeElem","insertNode","insertCluster","diagramType","pointsHasChanged","tail","head","strokeClasses","thickness","insertEdge","render","insertMarkers","getArrowMarker","marker","entities","relationships","attributes","entityName","attribs","entity","getEntities","entA","rolA","entB","rSpec","rel","entityA","roleA","entityB","relSpec","getRelationships","ERMarkers","ONLY_ONE_START","ONLY_ONE_END","ZERO_OR_ONE_START","ZERO_OR_ONE_END","ONE_OR_MORE_START","ONE_OR_MORE_END","ZERO_OR_MORE_START","ZERO_OR_MORE_END","getEdgeName","relCnt","erDb","erParser","erMarkers","directed","edgesep","firstEntity","firstOne","groupNode","textId","textNode","entityTextNode","heightPadding","widthPadding","attrFontSize","labelBBox","attributeNodes","hasKeyType","hasComment","maxTypeWidth","maxNameWidth","maxKeyWidth","maxCommentWidth","cumulativeHeight","attrNum","attrPrefix","nodeHeight","typeNode","nameNode","attributeNode","tn","nn","typeBBox","nameBBox","keyTypeNode","kn","keyTypeBBox","commentNode","cn","commentNodeBBox","widthPaddingFactor","spareColumnWidth","heightOffset","attribStyle","alignY","typeRect","nameXOffset","nameRect","keyTypeAndCommentXOffset","keyTypeRect","drawAttributes","entityWidth","entityHeight","rectBBox","drawEntities","relationship","addRelationships","adjustEntities","getTotalLength","labelPoint","getPointAtLength","labelId","drawRelationshipFromLayout","version","vertexCounter","vertices","subGraphs","subGraphLookup","tooltips","subCount","firstGraphFlag","veritceKeys","addSingleLink","_start","_end","linktext","getPosForId","secCount","posCrossRef","indexNodes2","posCount","childPos","exists","allSgs","sg","makeUniq","allSubgraphs","styles","positions","interp","defaultInterpolate","defaultStyle","textStyles","newStyle2","getTooltip","setClickFun","getVertices","getEdges","ver","setGen","_title","nodeList","prims","boolean","objs","uniq","nl","subGraph","getDepthFirstPos","indexNodes","getSubGraphs","_str","_startStr","startInfo","dots","char","countChar","destructEndLink","destructStartLink","dagreD3","flowDb","flow","subG","vert","svgId","_doc","vertex","classStr","vertexNode","addHtmlLabel","radious","_shape","labelType","addVertices","defaultLabelStyle","defaultStyles","linkId","linkNameStart","linkNameEnd","edgeData","arrowhead","arrowheadStyle","labelpos","minlen","addEdges","Render","flowChartShapes","arrows","normal","clusterRects","clusterEl","xPos","yPos","te","labels","linkNode","linkIdCnt","linkIdBase","_label","lastTask","lastTaskID","dateFormat","todayMarker","excludes","links","sections","tasks","currentSection","tags","inclusiveEndDates","lastOrder","isInvalidDate","isoWeekday","checkTaskDates","task","manualEndTime","startTime","endTime","renderEndTime","fixTaskDates","toDate","invalid","getStartDate","prevTime","afterStatement","latestEndingTask","findTaskById","dt","mDate","isValid","durationToDate","durationStatement","relativeTime","getEndDate","inclusive","taskCnt","parseId","idStr","rawTasks","taskDb","compileTasks","compileTask","raw","prevTask","prevTaskId","startData","processed","allProcessed","rawTask","pushFun","callbackFunction","getDateFormat","endDatesAreInclusive","enableTopAxis","topAxisEnabled","getAxisFormat","getTodayMarker","getSections","getTasks","allItemsPricessed","iterationCount","section","taskInfo","dataStr","getTaskTags","parseData","crit","milestone","addTaskOrg","newTask","endTimeData","compileData","getIncludes","getExcludes","_linkStr","open","getLinks","matchFound","regex","shift","ganttDb","getElementById","parentElement","offsetWidth","taskArray","timeScale","scaleTime","categories","catsUnfiltered","checkUnique","taskA","taskB","pageWidth","pageHeight","scaleLinear","interpolateHcl","theGap","theTopPad","theSidePad","minTime","maxTime","excludeRanges","renderEnd","drawExcludeDays","bottomXAxis","topXAxis","axisTop","makeGrid","theArray","theBarHeight","theColorScale","rectangles","secNum","taskClass","startX","endX","textWidth","taskType","taskRect","taskText","oldParent","Link","drawRects","colorScale","numOccurances","prevGap","getCounts","vertLabels","todayG","today","todayLine","drawToday","makeGant","commits","branchesConfig","branches","curBranch","seq","getId","upsert","newval","prettyPrintCommitHistory","commitArr","recordMap","newCommit","nextCommit","getCommitsArray","MERGE","rawOptString","getOptions","tag","otherBranch","currentCommit","otherCommit","prettyPrint","mainBranch","getBranchesAsObjArray","branchConfig","getBranches","getCommits","getCurrentBranch","getHead","allCommitsDict","branchPos","commitPos","lanes","maxPos","drawCommits","modifyGraph","gitGraphConfig","gBullets","gLabels","typeClass","circle2","labelBkg","hole","tagBbox","h2","ly","findLane","_depth","candidate","ok","gitGraphParser","db","drawText","bkg","drawBranches","gArrows","commit1","commit2","allCommits","overlappingCommits","hasOverlappingCommits","lineDef","arc2","colorClassNum","lineY","drawArrow","drawArrows","setMessage","getMessage","getInfo","showData","sanitizedText","getPieTitle","toggle","getShowData","pieParser","pieData","sum","myGeneratedColors","scaleOrdinal","sortValues","descending","arcs","pa","d3pie","dataReady","arcGenerator","legend","legendRectSize","latestRequirement","requirements","latestElement","elements","req","risk","verifyMethod","getRequirements","docRef","getElements","ReqMarkers","ARROW","newRectNode","newTitleNode","txts","textStr","totalY","titleNode","newBodyNode","yStart","currentRow","wrappedTxts","currentTextLen","firstPart","lastStr","elementString","requirementDb","containsNode","reqs","reqName","rectNode","titleNodeInfo","bodyNode","drawReqs","els","elName","drawElements","addEdgeLabel","prevActor","actors","messages","notes","diagramTitle","sequenceNumbersEnabled","wrapEnabled","addActor","old","autoWrap","properties","actorCnt","rectData","nextActor","activationCount","part","addSignal","idFrom","idTo","messageType","getActor","NOTE","addNote","addLinks","actorId","insertLinks","addProperties","insertProperties","addDetails","details","addMessage","answer","setWrap","wrapSetting","enableSequenceNumbers","disableSequenceNumbers","getMessages","getActors","getActorKeys","getActorProperty","getDiagramTitle","ARROWTYPE","FILLED","OPEN","param","visible","sep","addALink","interactionFunctions","drawRect","rectElem","addPopupInteraction","func","popupMenuUpFunc","popupMenuDownFunc","drawImage","imageElem","sanitizedLink","drawEmbeddedImage","popupId","pu","display","prevTextHeight","textElems","yfunc","dominantBaseline","alignmentBaseline","drawLabel","txtObject","polygon","cut","genPoints","fixLifeLineHeights","getTextObj","getNoteRect","_drawTextCandidateFunc","byText","content","textAttrs","_setTextAttrs","byTspan","byFo","toText","fromTextAttrsDict","_drawMenuItemTextCandidateFunc","actElem","drawActorTypeActor","boxpluslineGroup","cssclass","iconSrc","drawActorTypeParticipant","minMenuWidth","displayValue","actorClass","menuWidth","linkY","linkElem","actorActivations","anchored","startx","starty","stopx","loopModel","drawLoopLine","stopy","sectionTitles","sectionHeight","acc","curr","sequenceDb","sequenceItems","activations","models","getHeight","loops","it","actorModel","addLoop","msgModel","noteModel","lastActor","lastLoop","lastMessage","lastNote","setConf","updateVal","updateBounds","_self","updateFn","_startx","_stopx","_starty","_stopy","newActivation","actorRect","stackedSize","endActivation","lastActorActivationIdx","activation","lastIndexOf","createLoop","newLoop","endLoop","addSectionToLoop","loop","getVerticalPos","bumpVerticalPos","bump","getBounds","drawActors","actorKeys","configuration","newActors","actorKey","prevWidth","prevMargin","drawActorsPopup","getRequiredPopupWidth","menuDimensions","activationBounds","actorObj","adjustLoopHeightForWrap","loopWidths","preMargin","postMargin","addLoopFn","heightAdjust","loopWidth","textConf","textDims","totalOffset","requiredPopupWidth","textFont","labelWidth","draw","maxMessageWidthPerActor","isNote","isMessage","wrappedMessage","messageWidth","getMaxMessageWidthPerActor","actorToMessageWidth","actDims","actorWidth","calculateActorMargins","current","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","toAdd","enabled","shouldWrap","textDimensions","buildNoteModel","stk","fromBounds","toBounds","fromIdx","toIdx","allBounds","boundedWidth","msgDims","buildMessageModel","calculateLoopBounds","messagesToDraw","drawNote","activationData","activeEnd","lineStarty","boundMessage","messageModel","drawMessage","requiredBoxSize","box","boxHeight","boxWidth","extraVertForTitle","rootDoc","docTranslator","first","currentDoc","newNode","docNode","documents","states","currentDocument","startCnt","addState","descriptions","addDescription","des","_id1","_id2","_descr","theState","dividerCnt","getState","getStates","logDocuments","getRootDoc","getRootDocV2","extract","addTitleAndBox","stateDef","altBkg","dblPad","orgBox","orgWidth","orgX","titleWidth","graphBox","_text","tHeight","_drawLongText","drawState","stateInfo","drawStartState","drawEndState","parentId","tmp","drawForkJoinState","drawDivider","drawSimpleState","isSecond","descrLine","descrBox","drawDescrState","stateBox","stateDb","transformationLog","renderDoc","domDocument","edgeFreeDoc","ranker","nodeSep","sub","boxBounds","noteDef","nodeCount","pWidth","pShift","titleRows","boundstmp","heightAdj","drawEdge","nodeDb","setupNode","altFlag","getDir","nodeData","noteData","groupData","arrowType","setupDoc","startId","endId","defaultDir","allItemsProcessed","taskData","pieces","score","peeps","peopleList","people","tempActors","drawCircle","circleData","circleElement","taskCount","colour","faceData","face","d3arc","smile","sad","ambivalent","person","journeyDb","LEFT_MARGIN","fills","textColours","actorNames","actorPos","actorName","labelData","drawActorLegend","lastSection","taskPos","sectionNumber","taskActors","drawTasks","themes","ganttFontSize","classDiagram","stateDiagram","faceColor","actor0","actor1","actor2","actor3","actor4","actor5","currentDirective","updateRendererConfigs","flowRenderer","flowRendererV2","sequenceRenderer","classRenderer","stateRendererV2","infoRenderer","erRenderer","journeyRenderer","requirementRenderer","_txt","cb","container","graphInit","iframe","existingSvg","innerTxt","graphType","userStyles","altFontFamily","stylis","getStyles","style1","gitGraphRenderer","sequenceDiagram","ganttRenderer","classRendererV2","addClasses","addRelations","stateRenderer","infoParser","pkg","pieRenderer","errorRenderer","svgCode","svgEl","viewBox","btoa","ADD_TAGS","ADD_ATTR","tmpElementSelector","gitGraphAst","flowParser","sequenceParser","ganttParser","classParser","stateParser","infoDb","pieDb","journeyParser","requirementParser","handleDirective","initialize","reinitialize","setConfig","updateSiteConfig","globalReset","contentLoaded","mermaid","sequenceConfig","Node","ganttConfig","idGeneratior","initThrowsErrors","util","applyStyle","d3","addLabel","exitSelection","isSubgraph","svgClusters","applyTransition","thisGroup","labelGroup","clusterLabelPos","domCluster","svgEdgeLabels","edgeToId","intersectNode","createLine","previousPaths","newPaths","svgPaths","svgPathsEnter","sourceElem","ownerSVGElement","getScreenCTM","multiply","svgPathExit","domEdge","applyClass","arrowheadId","uniqueId","href","fragmentId","calcPoints","simpleNodes","svgNodes","labelDom","pick","paddingLeft","paddingRight","paddingTop","paddingBottom","shapeBBox","ellipse","client","addTextLabel","addSVGLabel","labelSvg","domNode","newText","escaped","processEscapeSequences","lodash","defaults","isFunction","isPlainObject","created","layout","createNodes","createClusters","createEdgeLabels","createEdgePaths","positionNodes","positionEdgeLabels","positionClusters","paddingX","paddingY","NODE_DEFAULT_ATTRS","_prevWidth","_prevHeight","EDGE_DEFAULT_ATTRS","preProcessGraph","outputGroup","createOrSelectGroup","clustersGroup","edgePathsGroup","postProcessGraph","intersectCircle","intersectPolygon","diamond","SQRT2","escapeId","dom","classFn","otherClasses","ID_DELIM","bisectLeft","pair","pairs","values0","values1","value0","n0","n1","mean","variance","LN2","identity","extent","threshold","sturges","histogram","xz","tz","bin","bins","constant","thresholds","quantile","deviation","numbers","arrays","merged","indexes","permutes","xi","xj","transpose","row","axisRight","axisBottom","axisLeft","filterEvents","filterContextListener","related","relatedTarget","event1","event0","capture","customEvent","sourceEvent","mouseenter","mouseleave","nopropagation","view","noevent","__noselect","MozUserSelect","yesdrag","noclick","rgbBasis","rgbBasisClosed","basisClosed","isNumberArray","numberArray","createSVGPoint","clientX","clientY","matrixTransform","clientLeft","clientTop","touches","changedTouches","touch","cssNode","cssRoot","cssView","cubicIn","cubicOut","cubicInOut","MODE_DRAG","MODE_SPACE","MODE_HANDLE","MODE_CENTER","number1","number2","toucher","handles","xy","Y","XY","cursors","overlay","nw","ne","se","sw","flipX","flipY","signsX","signsY","defaultFilter","defaultExtent","hasAttribute","defaultTouchable","navigator","maxTouchPoints","__brush","brushSelection","brushX","brushY","touchending","touchable","listeners","handleSize","brush","handle","redraw","started","touchmoved","touchended","emitter","clean","emit","Emitter","w0","w1","e0","e1","moving","lockX","lockY","mode","signX","signY","N","E","shifting","pointer","mouse","point0","beforestart","moved","ended","keydowned","keyupped","point1","move","selection0","selection1","starting","keyModifiers","compareValue","sortGroups","sortSubgroups","sortChords","chord","groupSums","groupIndex","subgroupIndex","chords","di","dj","subindex","defaultSource","defaultTarget","defaultRadius","defaultStartAngle","defaultEndAngle","ribbon","sr","sa0","sa1","sx0","sy0","tr","ta0","ta1","rollup","nest","sortKeys","createResult","setResult","valuesByKey","sortKey","createObject","setObject","createMap","setMap","proto","deg2rad","rad2deg","lab","lch","A","B","C","ED","EB","BC_DA","cubehelixConvert","Cubehelix","bl","cosh","sinh","ring","ringContains","yi","pj","yj","segmentContains","collinear","cases","smooth","smoothLinear","contours","contour","polygons","holes","fragmentByStart","fragmentByEnd","stitch","startIndex","endIndex","isorings","area","coordinates","xt","yt","_0","_1","blurX","blurY","defaultX","defaultY","defaultWeight","density","Float32Array","wi","geometry","transformPolygon","transformRing","transformPoint","resize","cellSize","DragEvent","subject","defaultContainer","defaultSubject","mousedownx","mousedowny","mousemoving","gestures","clickDistance2","drag","mousedowned","touchstarted","gesture","mousemoved","mouseupped","nodrag","sublisteners","clickDistance","EOL","objectConverter","columns","Function","inferColumns","columnSet","reFormat","DELIMITER","parseRows","I","eof","eol","preformatBody","formatValue","formatRow","hours","minutes","seconds","milliseconds","formatDate","convert","customConverter","formatBody","formatRows","csv","dsv","csvParse","csvParseRows","csvFormat","csvFormatBody","csvFormatRows","csvFormatRow","csvFormatValue","tsv","tsvParse","tsvParseRows","tsvFormat","tsvFormatBody","tsvFormatRows","tsvFormatRow","tsvFormatValue","autoType","fixtz","quadIn","quadOut","quadInOut","polyIn","custom","polyOut","polyInOut","sinIn","sinOut","sinInOut","tpmt","expIn","expOut","expInOut","circleIn","circleOut","circleInOut","b0","bounceIn","bounceOut","bounceInOut","overshoot","backIn","backOut","backInOut","elasticIn","amplitude","period","elasticOut","elasticInOut","responseBlob","response","status","statusText","blob","fetch","then","responseArrayBuffer","arrayBuffer","responseText","dsvParse","image","Image","onerror","onload","responseJson","json","DOMParser","parseFromString","force","tree","xm","ym","xp","yp","bottom","_root","leaf","quadtree","Quadtree","addAll","leaf_copy","treeProto","vx","vy","radii","strength","iterations","ri","ri2","visitAfter","prepare","visit","quad","rj","jiggle","nodeById","nodeId","strengths","distances","bias","alpha","initializeStrength","initializeDistance","cover","yz","quads","retainer","removeAll","initialAngle","simulation","alphaMin","alphaDecay","alphaTarget","velocityDecay","forces","stepper","fx","fy","initializeNodes","initializeForce","closest","distanceMin2","distanceMax2","theta2","accumulate","distanceMin","distanceMax","theta","radiuses","defaultLocale","Adder","temp","adder","bv","av","epsilon2","quarterPi","exp","haversin","streamGeometry","stream","streamGeometryType","streamObjectType","Feature","FeatureCollection","features","Sphere","sphere","Point","MultiPoint","LineString","streamLine","MultiLineString","Polygon","streamPolygon","MultiPolygon","GeometryCollection","geometries","closed","coordinate","polygonStart","polygonEnd","lambda00","phi00","lambda0","cosPhi0","sinPhi0","areaRingSum","areaSum","areaStream","areaRingStart","areaRingEnd","areaRing","areaPointFirst","areaPoint","lambda","phi","dLambda","sdLambda","adLambda","cosPhi","sinPhi","spherical","cartesian","cartesianDot","cartesianCross","cartesianAddInPlace","cartesianScale","vector","cartesianNormalizeInPlace","phi0","lambda1","phi1","lambda2","W0","W1","X0","Y0","Z0","X1","Y1","Z1","X2","Y2","Z2","z0","deltaSum","boundsStream","boundsPoint","boundsLineStart","boundsLineEnd","boundsRingPoint","boundsRingStart","boundsRingEnd","linePoint","inflection","phii","lambdai","antimeridian","rangeCompare","rangeContains","feature","deltaMax","centroidStream","centroidPoint","centroidLineStart","centroidLineEnd","centroidRingStart","centroidRingEnd","centroidPointCartesian","centroidLinePointFirst","centroidLinePoint","centroidRingPointFirst","centroidRingPoint","cz","compose","rotationIdentity","rotateRadians","deltaLambda","deltaPhi","deltaGamma","rotationLambda","rotationPhiGamma","forwardRotationLambda","rotation","cosDeltaPhi","sinDeltaPhi","cosDeltaGamma","sinDeltaGamma","forward","circleStream","cosRadius","sinRadius","circleRadius","rejoin","Intersection","other","segments","compareIntersection","startInside","clip","segment","pointEqual","isSubject","longitude","winding","sinPhi1","cosPhi1","absDelta","phiArc","pointVisible","clipLine","sink","ringBuffer","ringSink","polygonStarted","pointRing","ringStart","ringEnd","polygonContains","pointLine","ringSegments","validSegment","sign0","sign1","sinLambda0Lambda1","clipAntimeridianIntersect","cr","smallRadius","notHemisphere","two","n2","n2n2","n1n2","determinant","n1xn2","uu","polar","code","c0","v00","point2","clipMax","clipMin","clipRectangle","corner","comparePoint","ca","x__","y__","v__","x_","y_","v_","activeStream","bufferStream","clipStream","polygonInside","cleanInside","cacheStream","lengthSum","lengthStream","lengthPointFirst","lengthLineEnd","lengthPoint","cosDelta","containsObjectType","containsGeometry","containsGeometryType","containsPoint","containsLine","containsPolygon","ao","bo","ab","ringRadians","pointRadians","graticuleX","graticuleY","graticule","DX","DY","outline","extentMajor","extentMinor","stepMajor","stepMinor","graticule10","sy1","kx0","ky0","kx1","ky1","centroidPointFirstLine","centroidPointLine","centroidPointFirstRing","centroidPointRing","PathContext","_radius","pointRadius","lengthRing","PathString","_string","projection","projectionStream","contextStream","measure","TransformStream","fit","fitBounds","clipExtent","fitExtent","fitSize","fitWidth","fitHeight","_circle","cosMinDistance","project","delta2","resampleLineTo","phi2","dx2","dy2","dz","b00","c00","resampleStream","ringPoint","resampleNone","transformRadians","scaleTranslate","scaleTranslateRotate","cosAlpha","sinAlpha","ai","ci","fi","projectionMutator","projectAt","projectResample","projectTransform","projectRotateTransform","preclip","postclip","recenter","resample","transformRotate","clipAngle","reflectX","reflectY","conicProjection","parallels","conicEqualAreaRaw","cylindricalEqualAreaRaw","r0y","conicEqualArea","lower48Point","alaskaPoint","hawaiiPoint","lower48","albers","alaska","hawaii","pointStream","albersUsa","streams","azimuthalRaw","azimuthalInvert","sc","cc","azimuthalEqualAreaRaw","cxcy","azimuthalEquidistantRaw","mercatorRaw","mercatorProjection","reclip","tany","conicConformalRaw","equirectangularRaw","conicEquidistantRaw","gy","nx","A1","A2","A3","A4","equalEarthRaw","l2","l6","gnomonicRaw","sa","tx","ty","kx","ky","naturalEarth1Raw","phi4","orthographicRaw","stereographicRaw","transverseMercatorRaw","defaultSeparation","meanXReduce","maxYReduce","separation","nodeSize","cluster","previousNode","eachAfter","meanX","maxY","leafLeft","leafRight","hierarchy","childs","valued","defaultChildren","eachBefore","computeHeight","copyData","ancestor","aNodes","ancestors","bNodes","leastCommonAncestor","descendants","leaves","circles","enclosesWeak","encloseBasis","extendBasis","enclosesWeakAll","enclosesNot","encloseBasis2","encloseBasis3","dr","encloseBasis1","r21","a3","b3","c3","place","intersects","packEnclose","aa","sj","sk","pack","enclose","optional","required","constantZero","radiusLeaf","packChildren","translateChild","partition","preroot","ambiguous","defaultId","defaultParentId","stratify","nodeKey","nodeByKey","nextLeft","nextRight","moveSubtree","wm","wp","change","nextAncestor","vim","TreeNode","treeRoot","firstWalk","secondWalk","sizeNode","siblings","executeShifts","midpoint","vip","vop","vom","sip","sop","sim","som","apportion","squarifyRatio","ratio","nodeValue","sumValue","minValue","maxValue","newRatio","minRatio","beta","dice","squarify","tile","paddingStack","paddingInner","treemap","paddingOuter","sums","valueOffset","valueTarget","valueLeft","valueRight","xk","yk","resquarify","_squarify","rho","ux0","uy0","ux1","uy1","coshr0","hslLong","hclLong","cubehelix","cubehelixGamma","cubehelixLong","interpolator","samples","lexicographicOrder","computeUpperHullIndexes","sortedPoints","flippedPoints","upperIndexes","lowerIndexes","skipLeft","skipRight","hull","inside","perimeter","sourceRandomUniform","randomUniform","sourceRandomNormal","randomNormal","mu","sigma","sourceRandomLogNormal","randomLogNormal","sourceRandomIrwinHall","randomIrwinHall","sourceRandomBates","randomBates","irwinHall","sourceRandomExponential","randomExponential","initInterpolator","band","ordinalRange","pointish","clamper","transformLog","transformExp","transformLogn","transformExpn","pow10","reflect","loggish","logs","pows","log10","log2","logp","powp","transformSymlog","log1p","transformSymexp","expm1","symlogish","symlog","transformPow","transformSqrt","transformSquare","powish","invertExtent","quantiles","years","sundays","mondays","tuesdays","wednesdays","thursdays","fridays","saturdays","utcSundays","utcMondays","utcTuesdays","utcWednesdays","utcThursdays","utcFridays","utcSaturdays","utcDays","utcYears","timeParse","utcMonths","utcHours","utcMinutes","k10","sequential","sequentialLog","sequentialSymlog","sequentialPow","sequentialSqrt","sequentialQuantile","k21","diverging","divergingLog","divergingSymlog","divergingPow","divergingSqrt","scheme","ramp","warm","cool","ts","pi_1_3","pi_2_3","magma","inferno","plasma","nextId","Local","x0z","y0z","arealine","lineX0","lineY0","lineY1","lineX1","curveRadialLinear","curveRadial","Radial","_curve","radial","lineRadial","lineStartAngle","lineEndAngle","lineInnerRadius","lineOuterRadius","linkSource","curveHorizontal","curveVertical","pointRadial","p3","linkHorizontal","linkVertical","linkRadial","tan30","tan30_2","kr","sqrt3","symbols","square","star","triangle","wye","Bundle","_basis","_beta","bundle","_k","Cardinal","tension","cardinal","CardinalClosed","_x5","_y5","CardinalOpen","_l01_a","_l01_2a","_l12_a","_l12_2a","_l23_a","_l23_2a","CatmullRom","_alpha","x23","y23","catmullRom","CatmullRomClosed","CatmullRomOpen","monotoneX","monotoneY","stepBefore","stepAfter","series","stackValue","oz","kz","sz","sij","ki","si","yn","s2","sij0","s3","peaks","peak","vi","vj","appearance","tops","bottoms","isoSpecifier","formatIso","toISOString","parseIso","total","RedBlackTree","RedBlackNode","P","RedBlackRotateLeft","RedBlackRotateRight","RedBlackFirst","after","grandpa","uncle","sibling","createEdge","setEdgeEnd","cells","halfedges","createBorderEdge","clipEdge","connectEdge","fm","fb","lx","cellHalfedgeAngle","cell","site","va","vb","cellHalfedgeStart","cellHalfedgeEnd","firstCircle","circlePool","Circle","attachCircle","lArc","rArc","lSite","cSite","rSite","ha","hc","detachCircle","beachPool","Beach","createBeach","beach","detachBeach","beaches","removeBeach","disappearing","iArc","nArcs","addBeach","dxl","dxr","directrix","leftBreakPoint","rightBreakPoint","createCell","newArc","hb","rfocx","rfocy","pby2","lfocx","lfocy","plby2","hl","aby2","triangleArea","lexicographic","Diagram","sites","sortCellHalfedges","clipEdges","iCell","iHalfedge","nHalfedges","startY","endY","nCells","dc","v01","v11","v10","clipCells","voronoi","triangles","ZoomEvent","Transform","_found","__zoom","SVGElement","clientWidth","clientHeight","defaultTransform","defaultWheelDelta","defaultConstrain","translateExtent","touchstarting","constrain","wheelDelta","scaleExtent","touchDelay","zoom","wheeled","dblclicked","__zooming","Gesture","taps","wheel","wheelidled","k1","touch0","touch1","l0","l1","dp","dl","collection","scaleBy","scaleTo","k0","translateBy","translateTo","notime","greedyFAS","run","fas","acyclicer","weightFn","visited","dfs","outEdges","dfsFAS","forwardName","reversed","undo","addBorderNode","sgNode","rank","borderType","addDummyNode","borderLeft","borderRight","minRank","maxRank","swapWidthHeight","swapWidthHeightOne","reverseYOne","swapXYOne","rankDir","reverseY","swapXY","List","sentinel","_prev","_sentinel","unlink","filterOutLinks","dequeue","enqueue","strs","Graph","debugOrdering","layerMatrix","buildLayerMatrix","layer","layerV","fasGraph","maxIn","maxOut","prevWeight","edgeWeight","buckets","zeroIdx","assignBucket","buildState","DEFAULT_WEIGHT_FN","sources","sinks","doGreedyFAS","flatten","collectPredecessors","inEdges","uEntry","wEntry","acyclic","normalizeRanks","parentDummyChains","removeEmptyRanks","nestingGraph","addBorderSegments","coordinateSystem","opts","debugTiming","layoutGraph","inputGraph","canonicalize","graphDefaults","selectNumberAttrs","graphNumAttrs","graphAttrs","nodeNumAttrs","nodeDefaults","edgeDefaults","edgeNumAttrs","edgeAttrs","buildLayoutGraph","labeloffset","makeSpaceForEdgeLabels","selfEdges","removeSelfEdges","asNonCompoundGraph","injectEdgeLabelProxies","cleanup","borderTop","borderBottom","assignRankMinMax","dummy","labelRank","removeEdgeLabelProxies","layers","orderShift","selfEdge","insertSelfEdges","selfNode","positionSelfEdges","last","removeBorderNodes","fixupEdgeLabelCoords","maxX","graphLabel","marginX","marginY","getExtremes","translateGraph","nodeV","nodeW","assignNodeIntersects","reversePointsForReversedEdges","runLayout","inputLabel","layoutLabel","updateInputGraph","mapValues","newAttrs","cloneDeep","forIn","isUndefined","minBy","sortBy","zipObject","depths","childNode","childTop","childBottom","thisWeight","nestingEdge","treeDepths","nestingRoot","sumWeights","nodeRankFactor","dummyChains","vRank","wRank","edgeObj","normalizeEdge","origLabel","successors","cg","vs","rootPrev","prevChild","movable","inV","nodeU","barycenter","hasNode","createRootNode","setDefaultNodeLabel","twoLayerCrossCount","northLayer","southLayer","southPos","southEntries","firstIndex","treeSize","weightSum","layering","initOrder","crossCount","sortSubgraph","buildLayerGraph","addSubgraphConstraints","buildLayerGraphs","ranks","sweepLayerGraphs","layerGraphs","biasRight","lg","assignOrder","downLayerGraphs","upLayerGraphs","best","bestCC","lastBest","orderedVs","mappedEntries","indegree","entryV","entryW","sourceSet","handleIn","vEntry","handleOut","doResolveConflicts","resolveConflicts","br","subgraphs","barycenters","subgraphResult","expandSubgraphs","predecessors","blPred","brPred","consumeUnsortable","unsortable","sortable","lhs","rhs","vsIndex","postorderNums","lim","low","postorder","pathData","lca","vPath","wPath","findPath","pathIdx","pathV","findType1Conflicts","conflicts","prevLayer","scanPos","prevLayerLength","lastNode","findOtherInnerSegmentNode","scanNode","uLabel","uPos","addConflict","findType2Conflicts","scan","south","southEnd","prevNorthBorder","nextNorthBorder","uNode","north","nextNorthPos","prevNorthPos","southLookahead","conflictsV","hasConflict","verticalAlignment","neighborFn","prevIdx","ws","mp","il","horizontalCompaction","reverseSep","xs","blockG","blockGraph","sepFn","edgeSep","vLabel","wLabel","vRoot","uRoot","prevMax","buildBlockGraph","iterate","setXsFunc","nextNodesFunc","findSmallestWidthAlignment","xss","NEGATIVE_INFINITY","halfWidth","alignCoordinates","alignTo","alignToVals","alignToMin","alignToMax","horiz","alignment","xsVals","balance","ul","ignore","positionX","adjustedLayering","smallestWidth","rankSep","prevY","positionY","slack","tightTree","nodeEdges","edgeV","findMinSlackEdge","shiftRanks","longestPath","feasibleTree","networkSimplex","networkSimplexRanker","tightTreeRanker","longestPathRanker","initRank","preorder","simplify","initLowLimValues","initCutValues","leaveEdge","exchangeEdges","enterEdge","cutvalue","calcCutValue","assignCutValue","childIsTail","graphEdge","cutValue","isOutEdge","pointsToHead","otherWeight","hasEdge","otherCutValue","dfsAssignLowLim","nextLim","neighbors","tailLabel","flip","candidates","isDescendant","flipped","updateRanks","rootLabel","simplified","simpleLabel","isMultigraph","successorWeights","weightMap","sucs","predecessorWeights","preds","setPrototypeOf","isFrozen","getOwnPropertyDescriptor","seal","_ref","Reflect","construct","thisValue","Func","arr2","_toConsumableArray","arrayForEach","unapply","arrayPop","arrayPush","stringToLowerCase","stringMatch","stringReplace","stringIndexOf","stringTrim","regExpTest","typeErrorCreate","_len2","_key2","thisArg","_len","addToSet","lcElement","newObject","lookupGetter","desc","svgFilters","svgDisallowed","mathMl","mathMlDisallowed","html$1","svg$1","mathMl$1","MUSTACHE_EXPR","ERB_EXPR","DATA_ATTR","ARIA_ATTR","IS_ALLOWED_URI","IS_SCRIPT_OR_DATA","ATTR_WHITESPACE","DOCTYPE_NAME","_typeof","_toConsumableArray$1","getGlobal","_createTrustedTypesPolicy","trustedTypes","createPolicy","ATTR_NAME","currentScript","policyName","createHTML","html$$1","createDOMPurify","removed","nodeType","isSupported","originalDocument","DocumentFragment","HTMLTemplateElement","Element","NodeFilter","_window$NamedNodeMap","NamedNodeMap","MozNamedAttrMap","HTMLFormElement","ElementPrototype","getNextSibling","getChildNodes","getParentNode","template","trustedTypesPolicy","emptyHTML","_document","implementation","createNodeIterator","createDocumentFragment","getElementsByTagName","importNode","documentMode","hooks","createHTMLDocument","MUSTACHE_EXPR$$1","ERB_EXPR$$1","DATA_ATTR$$1","ARIA_ATTR$$1","IS_SCRIPT_OR_DATA$$1","ATTR_WHITESPACE$$1","IS_ALLOWED_URI$$1","ALLOWED_TAGS","DEFAULT_ALLOWED_TAGS","ALLOWED_ATTR","DEFAULT_ALLOWED_ATTR","CUSTOM_ELEMENT_HANDLING","tagNameCheck","writable","configurable","enumerable","attributeNameCheck","allowCustomizedBuiltInElements","FORBID_TAGS","FORBID_ATTR","ALLOW_ARIA_ATTR","ALLOW_DATA_ATTR","ALLOW_UNKNOWN_PROTOCOLS","SAFE_FOR_TEMPLATES","WHOLE_DOCUMENT","SET_CONFIG","FORCE_BODY","RETURN_DOM","RETURN_DOM_FRAGMENT","RETURN_TRUSTED_TYPE","SANITIZE_DOM","KEEP_CONTENT","IN_PLACE","USE_PROFILES","FORBID_CONTENTS","DEFAULT_FORBID_CONTENTS","DATA_URI_TAGS","DEFAULT_DATA_URI_TAGS","URI_SAFE_ATTRIBUTES","DEFAULT_URI_SAFE_ATTRIBUTES","MATHML_NAMESPACE","SVG_NAMESPACE","HTML_NAMESPACE","NAMESPACE","IS_EMPTY_INPUT","PARSER_MEDIA_TYPE","SUPPORTED_PARSER_MEDIA_TYPES","DEFAULT_PARSER_MEDIA_TYPE","transformCaseFunc","CONFIG","formElement","isRegexOrFunction","testValue","_parseConfig","ADD_URI_SAFE_ATTR","ADD_DATA_URI_TAGS","ALLOWED_URI_REGEXP","tbody","MATHML_TEXT_INTEGRATION_POINTS","HTML_INTEGRATION_POINTS","ALL_SVG_TAGS","ALL_MATHML_TAGS","_checkValidNamespace","tagName","parentTagName","commonSvgAndHTMLElements","_forceRemove","outerHTML","_removeAttribute","attribute","getAttributeNode","_initDocument","dirty","leadingWhitespace","dirtyPayload","createDocument","createTextNode","_createIterator","SHOW_ELEMENT","SHOW_COMMENT","SHOW_TEXT","_isClobbered","elm","nodeName","_isNode","_executeHook","entryPoint","currentNode","hook","_sanitizeElements","allowedTags","_basicCustomElementTest","_isValidAttribute","lcTag","lcName","_sanitizeAttributes","hookEvent","attrName","attrValue","keepAttr","allowedAttributes","_attr","forceKeepAttr","_sanitizeShadowDOM","fragment","shadowNode","shadowIterator","nextNode","importedNode","oldNode","returnNode","toStaticHTML","nodeIterator","shadowroot","serializedHTML","doctype","clearConfig","isValidAttribute","addHook","hookFunction","removeHook","removeHooks","removeAllHooks","lib","alg","cmpt","cmpts","doDfs","navigation","isDirected","dijkstra","weightFunc","edgeFunc","PriorityQueue","edgeFn","pq","updateNeighbors","predecessor","decrease","removeMin","runDijkstra","DEFAULT_WEIGHT_FUNC","tarjan","rowK","rowI","ik","kj","ij","altDistance","runFloydWarshall","components","dijkstraAll","findCycles","floydWarshall","isAcyclic","prim","topsort","CycleException","pri","onStack","lowlink","_arr","_keyIndices","keyIndices","_decrease","_swap","_heapify","largest","origArrI","origArrJ","GRAPH_NODE","_isDirected","_isMultigraph","_isCompound","_defaultNodeLabelFn","_defaultEdgeLabelFn","_nodes","_children","_in","_preds","_out","_sucs","_edgeObjs","_edgeLabels","incrementOrInitEntry","decrementOrRemoveEntry","edgeArgsToId","w_","edgeArgsToObj","edgeObjToId","_nodeCount","_edgeCount","isCompound","newDefault","isEmpty","setNodes","_removeFromParentsChildList","predsV","sucsV","union","isLeaf","filterNodes","findParent","setPath","valueSpecified","arg0","outV","writeNodes","writeEdges","edgeValue","write","read","getNative","hashClear","hashDelete","hashGet","hashHas","hashSet","Hash","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","setCacheAdd","setCacheHas","SetCache","stackClear","stackDelete","stackGet","stackHas","stackSet","Stack","Uint8Array","WeakMap","iteratee","predicate","resIndex","baseIndexOf","comparator","baseTimes","isArguments","isBuffer","isIndex","isTypedArray","inherited","isArr","isArg","isBuff","isType","skipIndexes","accumulator","initAccum","asciiSize","baseProperty","baseAssignValue","eq","objValue","copyObject","keysIn","defineProperty","arrayEach","assignValue","baseAssign","baseAssignIn","cloneBuffer","copyArray","copySymbols","copySymbolsIn","getAllKeys","getAllKeysIn","getTag","initCloneArray","initCloneByTag","initCloneObject","isMap","isObject","isSet","argsTag","funcTag","objectTag","cloneableTags","baseClone","bitmask","customizer","isDeep","isFlat","isFull","isFunc","stacked","subValue","objectCreate","baseCreate","baseForOwn","baseEach","createBaseEach","isSymbol","computed","fromIndex","fromRight","isFlattenable","baseFlatten","isStrict","baseFor","createBaseFor","castPath","toKey","keysFunc","symbolsFunc","getRawTag","objectToString","symToStringTag","toStringTag","baseFindIndex","baseIsNaN","strictIndexOf","baseGetTag","isObjectLike","baseIsEqualDeep","baseIsEqual","equalArrays","equalByTag","equalObjects","arrayTag","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","matchData","noCustomizer","srcValue","COMPARE_PARTIAL_FLAG","isMasked","toSource","reIsHostCtor","funcProto","objectProto","funcToString","reIsNative","isLength","typedArrayTags","baseMatches","baseMatchesProperty","isPrototype","nativeKeys","nativeKeysIn","isProto","isArrayLike","baseIsMatch","getMatchData","matchesStrictComparable","hasIn","isKey","isStrictComparable","assignMergeValue","baseMergeDeep","safeGet","baseMerge","srcIndex","newValue","cloneTypedArray","isArrayLikeObject","toPlainObject","mergeFunc","isCommon","isTyped","arrayMap","baseGet","baseIteratee","baseMap","baseSortBy","baseUnary","compareMultiple","iteratees","orders","basePickBy","baseSet","nativeCeil","nativeMax","eachFunc","overRest","setToString","nested","baseSetToString","comparer","symbolProto","symbolToString","baseToString","trimmedEndIndex","reTrimStart","arrayIncludes","arrayIncludesWith","cacheHas","createSet","setToArray","seen","outer","seenIndex","assignFunc","valsLength","stringToPath","byteLength","freeExports","freeModule","Buffer","allocUnsafe","cloneArrayBuffer","dataView","byteOffset","reFlags","regexp","symbolValueOf","typedArray","valIsDefined","valIsNull","valIsReflexive","valIsSymbol","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","compareAscending","objCriteria","criteria","othCriteria","ordersLength","isNew","getSymbols","getSymbolsIn","coreJsData","baseRest","isIterateeCall","assigner","guard","iterable","findIndexFunc","baseRange","toFinite","arraySome","isPartial","arrLength","othLength","arrStacked","othStacked","arrValue","othValue","compared","othIndex","mapToArray","objProps","objLength","objStacked","skipCtor","objCtor","othCtor","freeGlobal","baseGetAllKeys","isKeyable","baseIsNative","getValue","getPrototype","overArg","nativeObjectToString","isOwn","unmasked","arrayFilter","stubArray","propertyIsEnumerable","nativeGetSymbols","getOwnPropertySymbols","mapTag","promiseTag","setTag","weakMapTag","dataViewTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","Ctor","ctorString","hasFunc","reHasUnicode","nativeCreate","cloneDataView","cloneRegExp","cloneSymbol","spreadableSymbol","isConcatSpreadable","reIsUint","reIsDeepProp","reIsPlainProp","uid","maskSrcKey","IE_PROTO","assocIndexOf","getMapData","freeProcess","nodeUtil","require","binding","otherArgs","freeSelf","shortOut","nativeNow","lastCalled","stamp","remaining","LARGE_ARRAY_SIZE","hasUnicode","unicodeSize","memoizeCapped","rePropName","reEscapeChar","quote","subString","reWhitespace","rsCombo","rsFitz","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsModifier","rsOptVar","rsSeq","rsSymbol","reUnicode","CLONE_DEEP_FLAG","propsIndex","propsLength","baseFilter","createFind","toInteger","castFunction","defaultValue","baseHas","hasPath","baseHasIn","baseIsArguments","stubFalse","baseKeys","baseIsMap","nodeIsMap","objectCtorString","baseIsSet","nodeIsSet","baseIsTypedArray","nodeIsTypedArray","arrayLikeKeys","baseKeysIn","baseExtremum","baseGt","memoized","Cache","createAssigner","baseLt","basePick","flatRest","basePropertyDeep","createRange","arrayReduce","baseReduce","isString","stringSize","baseOrderBy","toNumber","remainder","baseTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","isBinary","isArrLike","baseUniq","idCounter","baseValues","baseZipObject","webpackContext","webpackContextResolve","__webpack_require__","Tt","utc","_pf","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","meridiem","rfc2822","weekdayMismatch","_isValid","_d","getTime","invalidWeekday","_strict","bigHour","some","momentProperties","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","updateOffset","suppressDeprecationWarnings","deprecationHandler","O","F","G","localeData","invalidDate","longDateFormat","J","K","ee","ie","ae","oe","ue","le","he","de","ce","fe","_w","Se","De","parseTwoDigitYear","Ye","Oe","Te","xe","be","Pe","monthsShort","monthsShortRegex","monthsRegex","monthsParse","We","Ce","He","Re","Ue","Fe","Le","Ne","_monthsRegex","_monthsShortRegex","_monthsStrictRegex","_monthsShortStrictRegex","Ge","Ve","Ee","dayOfYear","Ie","Ae","je","weekdaysMin","weekdaysShort","weekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","weekdaysParse","Ze","ze","$e","qe","Je","Be","Qe","_weekdaysRegex","_weekdaysShortRegex","_weekdaysMinRegex","_weekdaysStrictRegex","_weekdaysShortStrictRegex","_weekdaysMinStrictRegex","Xe","Ke","et","_meridiemParse","_isPm","isPM","_meridiem","tt","nt","st","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","LTS","LT","LL","LLL","LLLL","dayOfMonthOrdinalParse","future","ss","mm","hh","dd","MM","doy","meridiemParse","rt","at","ot","_abbr","ut","ht","lt","abbr","_config","parentLocale","_a","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","ct","ft","_useUTC","GG","bt","_week","gg","_dayOfYear","_nextDay","mt","gt","vt","pt","wt","Yt","Mt","St","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","Dt","kt","ISO_8601","RFC_2822","meridiemHour","Ot","preparse","createFromInputFallback","getOwnPropertyNames","Pt","Wt","Ct","Ht","quarter","isoWeek","_milliseconds","_days","_months","_data","_bubble","Rt","Ut","Ft","utcOffset","Nt","Lt","Gt","Vt","Et","It","At","jt","ms","Zt","isBefore","zt","isAfter","$t","qt","Jt","Bt","Qt","Xt","defaultFormat","defaultFormatUtc","Kt","en","sn","rn","an","weekYear","isoWeekYear","_dayOfMonthOrdinalParse","_ordinalParse","_dayOfMonthOrdinalParseLenient","un","ln","hn","dn","mn","_n","startOf","calendarFormat","endOf","isUtc","postformat","humanize","fromNow","toNow","invalidAt","isBetween","isSame","isSameOrAfter","isSameOrBefore","parsingFlags","subtract","toArray","toObject","inspect","isLocal","toJSON","unix","creationData","isUTC","strict","isLeapYear","quarters","daysInMonth","weeks","isoWeeks","weeksInYear","isoWeeksInYear","_changeInProgress","hasAlignedHourOffset","isDST","isUtcOffset","zoneAbbr","zoneName","dates","zone","isDSTShifted","_isDSTShifted","gn","vn","pn","_calendar","_longDateFormat","_invalidDate","_ordinal","_relativeTime","pastFuture","isFormat","standalone","_monthsShort","_monthsParseExact","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","firstDayOfYear","firstDayOfWeek","_weekdays","_weekdaysMin","_weekdaysShort","_weekdaysParseExact","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","_fullWeekdaysParse","langData","wn","Mn","Sn","Dn","Yn","as","On","Tn","bn","xn","Pn","Wn","Cn","Hn","Rn","Un","Fn","Ln","Nn","Gn","Vn","En","In","An","jn","zn","$n","asSeconds","qn","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","toIsoString","isDate","isMoment","isDuration","defineLocale","updateLocale","locales","normalizeUnits","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","DATE","TIME","TIME_SECONDS","TIME_MS","WEEK","MONTH","assertPath","normalizeStringPosix","allowAboveRoot","lastSegmentLength","lastSlash","lastSlashIndex","posix","cwd","resolvedPath","resolvedAbsolute","isAbsolute","trailingSeparator","joined","relative","fromStart","fromEnd","fromLen","toStart","toLen","lastCommonSep","fromCode","_makeLong","dirname","hasRoot","matchedSlash","basename","ext","extIdx","firstNonSlashEnd","extname","startDot","startPart","preDotState","pathObject","_format","ret","win32","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","getter","__esModule","globalThis","nmd","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/assets/lib/mermaid/mermaid.scss b/assets/lib/mermaid/mermaid.scss
deleted file mode 100644
index 773fac40..00000000
--- a/assets/lib/mermaid/mermaid.scss
+++ /dev/null
@@ -1,19 +0,0 @@
-.page .mermaid {
- width: 100%;
- margin: 3% auto;
- text-align: center;
-
- & > svg {
- max-width: 100%;
- }
-
- @import "themes/neutral/index";
-
- [theme=dark] & {
- @import "themes/dark/index";
- }
-
- div.mermaidTooltip {
- z-index: 50;
- }
-}
diff --git a/assets/lib/mermaid/themes/class.scss b/assets/lib/mermaid/themes/class.scss
deleted file mode 100644
index db9a3606..00000000
--- a/assets/lib/mermaid/themes/class.scss
+++ /dev/null
@@ -1,91 +0,0 @@
-g.classGroup text {
- fill: $nodeBorder;
- stroke: none;
- font-family: 'trebuchet ms', verdana, arial;
- font-family: var(--mermaid-font-family);
- font-size: 10px;
-
- .title {
- font-weight: bolder;
- }
-}
-
-g.clickable {
- cursor: pointer;
-}
-
-g.classGroup rect {
- fill: $nodeBkg;
- stroke: $nodeBorder;
-}
-
-g.classGroup line {
- stroke: $nodeBorder;
- stroke-width: 1;
-}
-
-.classLabel .box {
- stroke: none;
- stroke-width: 0;
- fill: $nodeBkg;
- opacity: 0.5;
-}
-
-.classLabel .label {
- fill: $nodeBorder;
- font-size: 10px;
-}
-
-.relation {
- stroke: $nodeBorder;
- stroke-width: 1;
- fill: none;
-}
-
-.dashed-line{
- stroke-dasharray: 3;
-}
-
-@mixin composition {
- fill: $nodeBorder;
- stroke: $nodeBorder;
- stroke-width: 1;
-}
-
-#compositionStart {
- @include composition;
-}
-
-#compositionEnd {
- @include composition;
-}
-
-@mixin aggregation {
- fill: $nodeBkg;
- stroke: $nodeBorder;
- stroke-width: 1;
-}
-
-#aggregationStart {
- @include aggregation;
-}
-
-#aggregationEnd {
- @include aggregation;
-}
-
-#dependencyStart {
- @include composition;
-}
-
-#dependencyEnd {
- @include composition;
-}
-
-#extensionStart {
- @include composition;
-}
-
-#extensionEnd {
- @include composition;
-}
diff --git a/assets/lib/mermaid/themes/dark/index.scss b/assets/lib/mermaid/themes/dark/index.scss
deleted file mode 100644
index c1043f02..00000000
--- a/assets/lib/mermaid/themes/dark/index.scss
+++ /dev/null
@@ -1,62 +0,0 @@
-$mainBkg: #BDD5EA;
-$secondBkg: #6D6D65;
-$mainContrastColor: lightgrey;
-$darkTextColor: #323D47;
-$lineColor: $mainContrastColor;
-$border1: #81B1DB;
-$border2: rgba(255, 255, 255, 0.25);
-$arrowheadColor: $mainContrastColor;
-
-/* Flowchart variables */
-
-$nodeBkg: $mainBkg;
-$nodeBorder: purple;
-$clusterBkg: $secondBkg;
-$clusterBorder: $border2;
-$defaultLinkColor: $lineColor;
-$titleColor: #F9FFFE;
-$edgeLabelBackground: #e8e8e8;
-
-/* Sequence Diagram variables */
-
-$actorBorder: $border1;
-$actorBkg: $mainBkg;
-$actorTextColor: black;
-$actorLineColor: $mainContrastColor;
-$signalColor: $mainContrastColor;
-$signalTextColor: $mainContrastColor;
-$labelBoxBkgColor: $actorBkg;
-$labelBoxBorderColor: $actorBorder;
-$labelTextColor: $darkTextColor;
-$loopTextColor: $mainContrastColor;
-$noteBorderColor: $border2;
-$noteBkgColor: #fff5ad;
-$activationBorderColor: #666;
-$activationBkgColor: #f4f4f4;
-$sequenceNumberColor: white;
-
-/* Gantt chart variables */
-
-$sectionBkgColor: rgba(255, 255, 255, 0.3);
-$altSectionBkgColor: white;
-$sectionBkgColor2: #EAE8B9;
-$taskBorderColor: rgba(255, 255, 255, 0.5);
-$taskBkgColor: $mainBkg;
-$taskTextColor: $darkTextColor;
-$taskTextLightColor: $mainContrastColor;
-$taskTextOutsideColor: $taskTextLightColor;
-$taskTextClickableColor: #003163;
-$activeTaskBorderColor: rgba(255, 255, 255, 0.5);
-$activeTaskBkgColor: #81B1DB;
-$gridColor: $mainContrastColor;
-$doneTaskBkgColor: $mainContrastColor;
-$doneTaskBorderColor: grey;
-$critBorderColor: #E83737;
-$critBkgColor: #E83737;
-$taskTextDarkColor: $darkTextColor;
-$todayLineColor: #DB5757;
-
-/* state colors */
-$labelColor: black;
-
-@import '../mermaid';
diff --git a/assets/lib/mermaid/themes/default/index.scss b/assets/lib/mermaid/themes/default/index.scss
deleted file mode 100644
index 3ef641b5..00000000
--- a/assets/lib/mermaid/themes/default/index.scss
+++ /dev/null
@@ -1,60 +0,0 @@
-$mainBkg: #ECECFF;
-$secondBkg: #ffffde;
-$lineColor: #333333;
-$border1: #CCCCFF;
-$border2: #aaaa33;
-$arrowheadColor: #333333;
-
-/* Flowchart variables */
-
-$nodeBkg: $mainBkg;
-$nodeBorder: #9370DB;
-$clusterBkg: $secondBkg;
-$clusterBorder: $border2;
-$defaultLinkColor: $lineColor;
-$titleColor: #333;
-$edgeLabelBackground: #e8e8e8;
-
-/* Sequence Diagram variables */
-
-$actorBorder: $border1;
-$actorBkg: $mainBkg;
-$actorTextColor: black;
-$actorLineColor: grey;
-$signalColor: #333;
-$signalTextColor: #333;
-$labelBoxBkgColor: $actorBkg;
-$labelBoxBorderColor: $actorBorder;
-$labelTextColor: $actorTextColor;
-$loopTextColor: $actorTextColor;
-$noteBorderColor: $border2;
-$noteBkgColor: #fff5ad;
-$activationBorderColor: #666;
-$activationBkgColor: #f4f4f4;
-$sequenceNumberColor: white;
-
-/* Gantt chart variables */
-
-$sectionBkgColor: rgba(102, 102, 255, 0.49);
-$altSectionBkgColor: white;
-$sectionBkgColor2: #fff400;
-$taskBorderColor: #534fbc;
-$taskBkgColor: #8a90dd;
-$taskTextLightColor: white;
-$taskTextColor: $taskTextLightColor;
-$taskTextDarkColor: black;
-$taskTextOutsideColor: $taskTextDarkColor;
-$taskTextClickableColor: #003163;
-$activeTaskBorderColor: #534fbc;
-$activeTaskBkgColor: #bfc7ff;
-$gridColor: lightgrey;
-$doneTaskBkgColor: lightgrey;
-$doneTaskBorderColor: grey;
-$critBorderColor: #ff8888;
-$critBkgColor: red;
-$todayLineColor: red;
-
-/* state colors */
-$labelColor: black;
-
-@import '../mermaid';
diff --git a/assets/lib/mermaid/themes/flowchart.scss b/assets/lib/mermaid/themes/flowchart.scss
deleted file mode 100644
index 495826cf..00000000
--- a/assets/lib/mermaid/themes/flowchart.scss
+++ /dev/null
@@ -1,68 +0,0 @@
-.label {
- font-family: 'trebuchet ms', verdana, arial;
- font-family: var(--mermaid-font-family);
- color: #333;
-}
-
-.label text {
- fill: #333;
-}
-
-.node rect,
-.node circle,
-.node ellipse,
-.node polygon,
-.node path {
- fill: $mainBkg;
- stroke: $nodeBorder;
- stroke-width: 1px;
-}
-
-.node .label {
- text-align: center;
-}
-.node.clickable {
- cursor: pointer;
-}
-
-.arrowheadPath {
- fill: $arrowheadColor;
-}
-
-.edgePath .path {
- stroke: $lineColor;
- stroke-width: 1.5px;
-}
-
-.edgeLabel {
- background-color: $edgeLabelBackground;
- rect {
- opacity: 0.5;
- }
- text-align: center;
-}
-
-.cluster rect {
- fill: $secondBkg;
- stroke: $clusterBorder;
- stroke-width: 1px;
-}
-
-.cluster text {
- fill: $titleColor;
-}
-
-div.mermaidTooltip {
- position: absolute;
- text-align: center;
- max-width: 200px;
- padding: 2px;
- font-family: 'trebuchet ms', verdana, arial;
- font-family: var(--mermaid-font-family);
- font-size: 12px;
- background: $secondBkg;
- border: 1px solid $border2;
- border-radius: 2px;
- pointer-events: none;
- z-index: 100;
-}
diff --git a/assets/lib/mermaid/themes/forest/index.scss b/assets/lib/mermaid/themes/forest/index.scss
deleted file mode 100644
index d8d96c92..00000000
--- a/assets/lib/mermaid/themes/forest/index.scss
+++ /dev/null
@@ -1,61 +0,0 @@
-$mainBkg: #cde498;
-$secondBkg: #cdffb2;
-$lineColor: #1a3318;
-$lineColor: green;
-$border1: #13540c;
-$border2: #6eaa49;
-$arrowheadColor: green;
-
-/* Flowchart variables */
-
-$nodeBkg: $mainBkg;
-$nodeBorder: $border1;
-$clusterBkg: $secondBkg;
-$clusterBorder: $border2;
-$defaultLinkColor: $lineColor;
-$titleColor: #333;
-$edgeLabelBackground: #e8e8e8;
-
-/* Sequence Diagram variables */
-
-$actorBorder: $border1;
-$actorBkg: $mainBkg;
-$actorTextColor: black;
-$actorLineColor: grey;
-$signalColor: #333;
-$signalTextColor: #333;
-$labelBoxBkgColor: $actorBkg;
-$labelBoxBorderColor: #326932;
-$labelTextColor: $actorTextColor;
-$loopTextColor: $actorTextColor;
-$noteBorderColor: $border2;
-$noteBkgColor: #fff5ad;
-$activationBorderColor: #666;
-$activationBkgColor: #f4f4f4;
-$sequenceNumberColor: white;
-
-/* Gantt chart variables */
-
-$sectionBkgColor: #6eaa49;
-$altSectionBkgColor: white;
-$sectionBkgColor2: #6eaa49;
-$taskBorderColor: $border1;
-$taskBkgColor: #487e3a;
-$taskTextLightColor: white;
-$taskTextColor: $taskTextLightColor;
-$taskTextDarkColor: black;
-$taskTextOutsideColor: $taskTextDarkColor;
-$taskTextClickableColor: #003163;
-$activeTaskBorderColor: $taskBorderColor;
-$activeTaskBkgColor: $mainBkg;
-$gridColor: lightgrey;
-$doneTaskBkgColor: lightgrey;
-$doneTaskBorderColor: grey;
-$critBorderColor: #ff8888;
-$critBkgColor: red;
-$todayLineColor: red;
-
-/* state colors */
-$labelColor: black;
-
-@import '../mermaid';
diff --git a/assets/lib/mermaid/themes/gantt.scss b/assets/lib/mermaid/themes/gantt.scss
deleted file mode 100644
index a08f54aa..00000000
--- a/assets/lib/mermaid/themes/gantt.scss
+++ /dev/null
@@ -1,259 +0,0 @@
-/** Section styling */
-
-.mermaid-main-font {
- font-family: "trebuchet ms", verdana, arial;
- font-family: var(--mermaid-font-family);
-}
-
-.section {
- stroke: none;
- opacity: 0.2;
-}
-
-.section0 {
- fill: $sectionBkgColor;
-}
-
-.section2 {
- fill: $sectionBkgColor2;
-}
-
-.section1,
-.section3 {
- fill: $altSectionBkgColor;
- opacity: 0.2;
-}
-
-.sectionTitle0 {
- fill: $titleColor;
-}
-
-.sectionTitle1 {
- fill: $titleColor;
-}
-
-.sectionTitle2 {
- fill: $titleColor;
-}
-
-.sectionTitle3 {
- fill: $titleColor;
-}
-
-.sectionTitle {
- text-anchor: start;
- font-size: 11px;
- text-height: 14px;
- font-family: 'trebuchet ms', verdana, arial;
- font-family: var(--mermaid-font-family);
-
-}
-
-
-/* Grid and axis */
-
-.grid .tick {
- stroke: $gridColor;
- opacity: 0.8;
- shape-rendering: crispEdges;
- text {
- font-family: 'trebuchet ms', verdana, arial;
- font-family: var(--mermaid-font-family);
- fill: $taskTextOutsideColor;
- }
-}
-
-.grid path {
- stroke-width: 0;
-}
-
-
-/* Today line */
-
-.today {
- fill: none;
- stroke: $todayLineColor;
- stroke-width: 2px;
-}
-
-
-/* Task styling */
-
-/* Default task */
-
-.task {
- stroke-width: 2;
-}
-
-.taskText {
- text-anchor: middle;
- font-family: 'trebuchet ms', verdana, arial;
- font-family: var(--mermaid-font-family);
-}
-
-.taskText:not([font-size]) {
- font-size: 11px;
-}
-
-.taskTextOutsideRight {
- fill: $taskTextDarkColor;
- text-anchor: start;
- font-size: 11px;
- font-family: 'trebuchet ms', verdana, arial;
- font-family: var(--mermaid-font-family);
-
-}
-
-.taskTextOutsideLeft {
- fill: $taskTextDarkColor;
- text-anchor: end;
- font-size: 11px;
-}
-
-/* Special case clickable */
-.task.clickable {
- cursor: pointer;
-}
-.taskText.clickable {
- cursor: pointer;
- fill: $taskTextClickableColor !important;
- font-weight: bold;
-}
-
-.taskTextOutsideLeft.clickable {
- cursor: pointer;
- fill: $taskTextClickableColor !important;
- font-weight: bold;
-}
-
-.taskTextOutsideRight.clickable {
- cursor: pointer;
- fill: $taskTextClickableColor !important;
- font-weight: bold;
-}
-
-/* Specific task settings for the sections*/
-
-.taskText0,
-.taskText1,
-.taskText2,
-.taskText3 {
- fill: $taskTextColor;
-}
-
-.task0,
-.task1,
-.task2,
-.task3 {
- fill: $taskBkgColor;
- stroke: $taskBorderColor;
-}
-
-.taskTextOutside0,
-.taskTextOutside2
-{
- fill: $taskTextOutsideColor !important;
-}
-
-.taskTextOutside1,
-.taskTextOutside3 {
- fill: $taskTextOutsideColor !important;
-}
-
-
-/* Active task */
-
-.active0,
-.active1,
-.active2,
-.active3 {
- fill: $activeTaskBkgColor;
- stroke: $activeTaskBorderColor;
-}
-
-.activeText0,
-.activeText1,
-.activeText2,
-.activeText3 {
- fill: $taskTextDarkColor;
-}
-
-
-/* Completed task */
-
-.done0,
-.done1,
-.done2,
-.done3 {
- stroke: $doneTaskBorderColor;
- fill: $doneTaskBkgColor;
- stroke-width: 2;
-}
-
-.doneText0,
-.doneText1,
-.doneText2,
-.doneText3 {
- fill: $taskTextDarkColor;
-}
-
-
-/* Tasks on the critical line */
-
-.crit0,
-.crit1,
-.crit2,
-.crit3 {
- stroke: $critBorderColor;
- fill: $critBkgColor;
- stroke-width: 2;
-}
-
-.activeCrit0,
-.activeCrit1,
-.activeCrit2,
-.activeCrit3 {
- stroke: $critBorderColor;
- fill: $activeTaskBkgColor;
- stroke-width: 2;
-}
-
-.doneCrit0,
-.doneCrit1,
-.doneCrit2,
-.doneCrit3 {
- stroke: $critBorderColor;
- fill: $doneTaskBkgColor;
- stroke-width: 2;
- cursor: pointer;
- shape-rendering: crispEdges;
-}
-
-.milestone {
- transform: rotate(45deg) scale(0.8,0.8);
-}
-
-.milestoneText {
- font-style: italic;
-}
-.doneCritText0,
-.doneCritText1,
-.doneCritText2,
-.doneCritText3 {
- fill: $taskTextDarkColor;
-}
-
-.activeCritText0,
-.activeCritText1,
-.activeCritText2,
-.activeCritText3 {
- fill: $taskTextDarkColor;
-}
-
-.titleText {
- text-anchor: middle;
- font-size: 18px;
- fill: $taskTextOutsideColor;
- font-family: 'trebuchet ms', verdana, arial;
- font-family: var(--mermaid-font-family);
-}
diff --git a/assets/lib/mermaid/themes/git.scss b/assets/lib/mermaid/themes/git.scss
deleted file mode 100644
index 5fa820f6..00000000
--- a/assets/lib/mermaid/themes/git.scss
+++ /dev/null
@@ -1,8 +0,0 @@
-.commit-id,
-.commit-msg,
-.branch-label {
- fill: lightgrey;
- color: lightgrey;
- font-family: 'trebuchet ms', verdana, arial;
- font-family: var(--mermaid-font-family);
-}
diff --git a/assets/lib/mermaid/themes/mermaid.scss b/assets/lib/mermaid/themes/mermaid.scss
deleted file mode 100644
index 10e14d3d..00000000
--- a/assets/lib/mermaid/themes/mermaid.scss
+++ /dev/null
@@ -1,19 +0,0 @@
-@import 'flowchart';
-@import 'sequence';
-@import 'gantt';
-@import 'class';
-@import 'git';
-@import 'pie';
-@import 'state';
-
-// .composit {
-// fill: white;
-// border-bottom: 1px
-// }
-
-:root {
- --mermaid-font-family: '"trebuchet ms", verdana, arial';
- --mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive;
- // --mermaid-alt-font-family: '"Lucida Console", Monaco, monospace';
-}
-
diff --git a/assets/lib/mermaid/themes/neutral/index.scss b/assets/lib/mermaid/themes/neutral/index.scss
deleted file mode 100644
index a0faed70..00000000
--- a/assets/lib/mermaid/themes/neutral/index.scss
+++ /dev/null
@@ -1,65 +0,0 @@
-$mainBkg: #eee;
-$contrast: #26a;
-$secondBkg: lighten($contrast, 55%);
-$lineColor: #666;
-$border1: #999;
-$border2: $contrast;
-$note: #ffa;
-$text: #333;
-$critical: #d42;
-$done: #bbb;
-$arrowheadColor: #333333;
-
-/* Flowchart variables */
-
-$nodeBkg: $mainBkg;
-$nodeBorder: $border1;
-$clusterBkg: $secondBkg;
-$clusterBorder: $border2;
-$defaultLinkColor: $lineColor;
-$titleColor: $text;
-$edgeLabelBackground: white;
-
-/* Sequence Diagram variables */
-
-$actorBorder: $border1;
-$actorBkg: $mainBkg;
-$actorTextColor: $text;
-$actorLineColor: $lineColor;
-$signalColor: $text;
-$signalTextColor: $text;
-$labelBoxBkgColor: $actorBkg;
-$labelBoxBorderColor: $actorBorder;
-$labelTextColor: $text;
-$loopTextColor: $text;
-$noteBorderColor: darken($note, 60%);
-$noteBkgColor: $note;
-$activationBorderColor: #666;
-$activationBkgColor: #f4f4f4;
-$sequenceNumberColor: white;
-
-/* Gantt chart variables */
-
-$sectionBkgColor: lighten($contrast, 30%);
-$altSectionBkgColor: white;
-$sectionBkgColor2: lighten($contrast, 30%);
-$taskBorderColor: darken($contrast, 10%);
-$taskBkgColor: $contrast;
-$taskTextLightColor: white;
-$taskTextColor: $taskTextLightColor;
-$taskTextDarkColor: $text;
-$taskTextOutsideColor: $taskTextDarkColor;
-$taskTextClickableColor: #003163;
-$activeTaskBorderColor: $taskBorderColor;
-$activeTaskBkgColor: $mainBkg;
-$gridColor: lighten($border1, 30%);
-$doneTaskBkgColor: $done;
-$doneTaskBorderColor: $lineColor;
-$critBkgColor: $critical;
-$critBorderColor: darken($critBkgColor, 10%);
-$todayLineColor: $critBkgColor;
-
-/* state colors */
-$labelColor: black;
-
-@import '../mermaid';
diff --git a/assets/lib/mermaid/themes/pie.scss b/assets/lib/mermaid/themes/pie.scss
deleted file mode 100644
index 48d11509..00000000
--- a/assets/lib/mermaid/themes/pie.scss
+++ /dev/null
@@ -1,11 +0,0 @@
-.pieTitleText {
- text-anchor: middle;
- font-size: 25px;
- fill: $taskTextDarkColor;
- font-family: 'trebuchet ms', verdana, arial;
- font-family: var(--mermaid-font-family);
-}
-.slice {
- font-family: 'trebuchet ms', verdana, arial;
- font-family: var(--mermaid-font-family);
-}
diff --git a/assets/lib/mermaid/themes/sequence.scss b/assets/lib/mermaid/themes/sequence.scss
deleted file mode 100644
index 9d084de4..00000000
--- a/assets/lib/mermaid/themes/sequence.scss
+++ /dev/null
@@ -1,97 +0,0 @@
-.actor {
- stroke: $actorBorder;
- fill: $actorBkg;
-}
-
-text.actor {
- fill: $actorTextColor;
- stroke: none;
-}
-
-.actor-line {
- stroke: $actorLineColor;
-}
-
-.messageLine0 {
- stroke-width: 1.5;
- stroke-dasharray: '2 2';
- stroke: $signalColor;
-}
-
-.messageLine1 {
- stroke-width: 1.5;
- stroke-dasharray: '2 2';
- stroke: $signalColor;
-}
-
-#arrowhead {
- fill: $signalColor;
-}
-
-.sequenceNumber {
- fill: $sequenceNumberColor;
-}
-
-#sequencenumber {
- fill: $signalColor;
-}
-
-#crosshead path {
- fill: $signalColor !important;
- stroke: $signalColor !important;
-}
-
-.messageText {
- fill: $signalTextColor;
- stroke: none;
-}
-
-.labelBox {
- stroke: $labelBoxBorderColor;
- fill: $labelBoxBkgColor;
-}
-
-.labelText {
- fill: $labelTextColor;
- stroke: none;
-}
-
-.loopText {
- fill: $loopTextColor;
- stroke: none;
-}
-
-.loopLine {
- stroke-width: 2;
- stroke-dasharray: '2 2';
- stroke: $labelBoxBorderColor;
-}
-
-.note {
- //stroke: #decc93;
- stroke: $noteBorderColor;
- fill: $noteBkgColor;
-}
-
-.noteText {
- fill: black;
- stroke: none;
- font-family: 'trebuchet ms', verdana, arial;
- font-family: var(--mermaid-font-family);
- font-size: 14px;
-}
-
-.activation0 {
- fill: $activationBkgColor;
- stroke: $activationBorderColor;
-}
-
-.activation1 {
- fill: $activationBkgColor;
- stroke: $activationBorderColor;
-}
-
-.activation2 {
- fill: $activationBkgColor;
- stroke: $activationBorderColor;
-}
diff --git a/assets/lib/mermaid/themes/state.scss b/assets/lib/mermaid/themes/state.scss
deleted file mode 100644
index 0fb7c0f8..00000000
--- a/assets/lib/mermaid/themes/state.scss
+++ /dev/null
@@ -1,132 +0,0 @@
-g.stateGroup text {
- fill: $nodeBorder;
- stroke: none;
- font-size: 10px;
- font-family: 'trebuchet ms', verdana, arial;
- font-family: var(--mermaid-font-family);
-}
-g.stateGroup text {
- fill: $nodeBorder;
- stroke: none;
- font-size: 10px;
-
-}
-g.stateGroup .state-title {
- font-weight: bolder;
- fill: $labelColor;
-}
-
-g.stateGroup rect {
- fill: $nodeBkg;
- stroke: $nodeBorder;
-}
-
-g.stateGroup line {
- stroke: $nodeBorder;
- stroke-width: 1;
-}
-
-.transition {
- stroke: $nodeBorder;
- stroke-width: 1;
- fill: none;
-}
-
-.stateGroup .composit {
- fill: white;
- border-bottom: 1px
-}
-
-.stateGroup .alt-composit {
- fill: #e0e0e0;
- border-bottom: 1px
-}
-
-.state-note {
- stroke: $noteBorderColor;
- fill: $noteBkgColor;
-
- text {
- fill: black;
- stroke: none;
- font-size: 10px;
- }
-}
-
-.stateLabel .box {
- stroke: none;
- stroke-width: 0;
- fill: $nodeBkg;
- opacity: 0.5;
-}
-
-.stateLabel text {
- fill: $labelColor;
- font-size: 10px;
- font-weight: bold;
- font-family: 'trebuchet ms', verdana, arial;
- font-family: var(--mermaid-font-family);
-}
-
-.node circle.state-start {
- fill: black;
- stroke: black;
-}
-.node circle.state-end {
- fill: black;
- stroke: white;
- stroke-width: 1.5
-}
-#statediagram-barbEnd {
- fill: $nodeBorder
-}
-
-.statediagram-cluster rect {
- fill: $nodeBkg;
- stroke: $nodeBorder;
- stroke-width: 1px;
-}
-.statediagram-cluster rect.outer {
- rx: 5px;
- ry: 5px;
-}
-.statediagram-state .divider {
- stroke: $nodeBorder;
-}
-
-.statediagram-state .title-state {
- rx: 5px;
- ry: 5px;
-}
-.statediagram-cluster.statediagram-cluster .inner {
- fill: white;
-}
-.statediagram-cluster.statediagram-cluster-alt .inner {
- fill: #e0e0e0;
-}
-
-.statediagram-cluster .inner {
- rx:0;
- ry:0;
-}
-
-.statediagram-state rect.basic {
- rx: 5px;
- ry: 5px;
-}
-.statediagram-state rect.divider {
- stroke-dasharray: 10,10;
- fill: #efefef;
-}
-
-.note-edge {
- stroke-dasharray: 5;
-}
-
-.statediagram-note rect {
- fill: $noteBkgColor;
- stroke: $noteBorderColor;
- stroke-width: 1px;
- rx: 0;
- ry: 0;
-}
diff --git a/assets/lib/normalize/normalize.css b/assets/lib/normalize/normalize.css
new file mode 100644
index 00000000..76bdf6f1
--- /dev/null
+++ b/assets/lib/normalize/normalize.css
@@ -0,0 +1,349 @@
+/* normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */
+
+/* Document
+ ========================================================================== */
+
+/**
+ * 1. Correct the line height in all browsers.
+ * 2. Prevent adjustments of font size after orientation changes in iOS.
+ */
+
+ html {
+ line-height: 1.15; /* 1 */
+ -webkit-text-size-adjust: 100%; /* 2 */
+}
+
+/* Sections
+ ========================================================================== */
+
+/**
+ * Remove the margin in all browsers.
+ */
+
+body {
+ margin: 0;
+}
+
+/**
+ * Render the `main` element consistently in IE.
+ */
+
+main {
+ display: block;
+}
+
+/**
+ * Correct the font size and margin on `h1` elements within `section` and
+ * `article` contexts in Chrome, Firefox, and Safari.
+ */
+
+h1 {
+ font-size: 2em;
+ margin: 0.67em 0;
+}
+
+/* Grouping content
+ ========================================================================== */
+
+/**
+ * 1. Add the correct box sizing in Firefox.
+ * 2. Show the overflow in Edge and IE.
+ */
+
+hr {
+ box-sizing: content-box; /* 1 */
+ height: 0; /* 1 */
+ overflow: visible; /* 2 */
+}
+
+/**
+ * 1. Correct the inheritance and scaling of font size in all browsers.
+ * 2. Correct the odd `em` font sizing in all browsers.
+ */
+
+pre {
+ font-family: monospace, monospace; /* 1 */
+ font-size: 1em; /* 2 */
+}
+
+/* Text-level semantics
+ ========================================================================== */
+
+/**
+ * Remove the gray background on active links in IE 10.
+ */
+
+a {
+ background-color: transparent;
+}
+
+/**
+ * 1. Remove the bottom border in Chrome 57-
+ * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
+ */
+
+abbr[title] {
+ border-bottom: none; /* 1 */
+ text-decoration: underline; /* 2 */
+ text-decoration: underline dotted; /* 2 */
+}
+
+/**
+ * Add the correct font weight in Chrome, Edge, and Safari.
+ */
+
+b,
+strong {
+ font-weight: bolder;
+}
+
+/**
+ * 1. Correct the inheritance and scaling of font size in all browsers.
+ * 2. Correct the odd `em` font sizing in all browsers.
+ */
+
+code,
+kbd,
+samp {
+ font-family: monospace, monospace; /* 1 */
+ font-size: 1em; /* 2 */
+}
+
+/**
+ * Add the correct font size in all browsers.
+ */
+
+small {
+ font-size: 80%;
+}
+
+/**
+ * Prevent `sub` and `sup` elements from affecting the line height in
+ * all browsers.
+ */
+
+sub,
+sup {
+ font-size: 75%;
+ line-height: 0;
+ position: relative;
+ vertical-align: baseline;
+}
+
+sub {
+ bottom: -0.25em;
+}
+
+sup {
+ top: -0.5em;
+}
+
+/* Embedded content
+ ========================================================================== */
+
+/**
+ * Remove the border on images inside links in IE 10.
+ */
+
+img {
+ border-style: none;
+}
+
+/* Forms
+ ========================================================================== */
+
+/**
+ * 1. Change the font styles in all browsers.
+ * 2. Remove the margin in Firefox and Safari.
+ */
+
+button,
+input,
+optgroup,
+select,
+textarea {
+ font-family: inherit; /* 1 */
+ font-size: 100%; /* 1 */
+ line-height: 1.15; /* 1 */
+ margin: 0; /* 2 */
+}
+
+/**
+ * Show the overflow in IE.
+ * 1. Show the overflow in Edge.
+ */
+
+button,
+input { /* 1 */
+ overflow: visible;
+}
+
+/**
+ * Remove the inheritance of text transform in Edge, Firefox, and IE.
+ * 1. Remove the inheritance of text transform in Firefox.
+ */
+
+button,
+select { /* 1 */
+ text-transform: none;
+}
+
+/**
+ * Correct the inability to style clickable types in iOS and Safari.
+ */
+
+button,
+[type="button"],
+[type="reset"],
+[type="submit"] {
+ -webkit-appearance: button;
+}
+
+/**
+ * Remove the inner border and padding in Firefox.
+ */
+
+button::-moz-focus-inner,
+[type="button"]::-moz-focus-inner,
+[type="reset"]::-moz-focus-inner,
+[type="submit"]::-moz-focus-inner {
+ border-style: none;
+ padding: 0;
+}
+
+/**
+ * Restore the focus styles unset by the previous rule.
+ */
+
+button:-moz-focusring,
+[type="button"]:-moz-focusring,
+[type="reset"]:-moz-focusring,
+[type="submit"]:-moz-focusring {
+ outline: 1px dotted ButtonText;
+}
+
+/**
+ * Correct the padding in Firefox.
+ */
+
+fieldset {
+ padding: 0.35em 0.75em 0.625em;
+}
+
+/**
+ * 1. Correct the text wrapping in Edge and IE.
+ * 2. Correct the color inheritance from `fieldset` elements in IE.
+ * 3. Remove the padding so developers are not caught out when they zero out
+ * `fieldset` elements in all browsers.
+ */
+
+legend {
+ box-sizing: border-box; /* 1 */
+ color: inherit; /* 2 */
+ display: table; /* 1 */
+ max-width: 100%; /* 1 */
+ padding: 0; /* 3 */
+ white-space: normal; /* 1 */
+}
+
+/**
+ * Add the correct vertical alignment in Chrome, Firefox, and Opera.
+ */
+
+progress {
+ vertical-align: baseline;
+}
+
+/**
+ * Remove the default vertical scrollbar in IE 10+.
+ */
+
+textarea {
+ overflow: auto;
+}
+
+/**
+ * 1. Add the correct box sizing in IE 10.
+ * 2. Remove the padding in IE 10.
+ */
+
+[type="checkbox"],
+[type="radio"] {
+ box-sizing: border-box; /* 1 */
+ padding: 0; /* 2 */
+}
+
+/**
+ * Correct the cursor style of increment and decrement buttons in Chrome.
+ */
+
+[type="number"]::-webkit-inner-spin-button,
+[type="number"]::-webkit-outer-spin-button {
+ height: auto;
+}
+
+/**
+ * 1. Correct the odd appearance in Chrome and Safari.
+ * 2. Correct the outline style in Safari.
+ */
+
+[type="search"] {
+ -webkit-appearance: textfield; /* 1 */
+ outline-offset: -2px; /* 2 */
+}
+
+/**
+ * Remove the inner padding in Chrome and Safari on macOS.
+ */
+
+[type="search"]::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+
+/**
+ * 1. Correct the inability to style clickable types in iOS and Safari.
+ * 2. Change font properties to `inherit` in Safari.
+ */
+
+::-webkit-file-upload-button {
+ -webkit-appearance: button; /* 1 */
+ font: inherit; /* 2 */
+}
+
+/* Interactive
+ ========================================================================== */
+
+/*
+ * Add the correct display in Edge, IE 10+, and Firefox.
+ */
+
+details {
+ display: block;
+}
+
+/*
+ * Add the correct display in all browsers.
+ */
+
+summary {
+ display: list-item;
+}
+
+/* Misc
+ ========================================================================== */
+
+/**
+ * Add the correct display in IE 10+.
+ */
+
+template {
+ display: none;
+}
+
+/**
+ * Add the correct display in IE 10.
+ */
+
+[hidden] {
+ display: none;
+} \ No newline at end of file
diff --git a/assets/lib/normalize/normalize.min.css b/assets/lib/normalize/normalize.min.css
deleted file mode 100644
index 3aa6bcb0..00000000
--- a/assets/lib/normalize/normalize.min.css
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Minified by jsDelivr using clean-css v4.2.1.
- * Original file: /npm/normalize.css@8.0.1/normalize.css
- *
- * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
- */
-/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */
-html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}
-/*# sourceMappingURL=/sm/5d8a97cdb40a6c49031b52d63494a6eca084416b5b035e5698fdc5fa0969b2c3.map */ \ No newline at end of file
diff --git a/assets/lib/sharer/sharer.min.js b/assets/lib/sharer/sharer.min.js
index 5152d5e5..6c10e588 100644
--- a/assets/lib/sharer/sharer.min.js
+++ b/assets/lib/sharer/sharer.min.js
@@ -1 +1 @@
-(function(g,r){"use strict";var s=function(t){this.elem=t};s.init=function(){var t=r.querySelectorAll("[data-sharer]"),e,a=t.length;for(e=0;e<a;e++){t[e].addEventListener("click",s.add)}};s.add=function(t){var e=t.currentTarget||t.srcElement;var a=new s(e);a.share()};s.prototype={constructor:s,getValue:function(t){var e=this.elem.getAttribute("data-"+t);if(e&&t==="hashtag"){if(!e.startsWith("#")){e="#"+e}}return e},share:function(){var t=this.getValue("sharer").toLowerCase(),e={facebook:{shareUrl:"https://www.facebook.com/sharer/sharer.php",params:{u:this.getValue("url"),hashtag:this.getValue("hashtag")}},linkedin:{shareUrl:"https://www.linkedin.com/shareArticle",params:{url:this.getValue("url"),mini:true}},twitter:{shareUrl:"https://twitter.com/intent/tweet/",params:{text:this.getValue("title"),url:this.getValue("url"),hashtags:this.getValue("hashtags"),via:this.getValue("via")}},email:{shareUrl:"mailto:"+this.getValue("to")||"",params:{subject:this.getValue("subject"),body:this.getValue("title")+"\n"+this.getValue("url")},isLink:true},whatsapp:{shareUrl:this.getValue("web")!==null?"https://api.whatsapp.com/send":"whatsapp://send",params:{text:this.getValue("title")+" "+this.getValue("url")},isLink:true},telegram:{shareUrl:this.getValue("web")!==null?"https://telegram.me/share":"tg://msg_url",params:{text:this.getValue("title"),url:this.getValue("url"),to:this.getValue("to")},isLink:true},viber:{shareUrl:"viber://forward",params:{text:this.getValue("title")+" "+this.getValue("url")},isLink:true},line:{shareUrl:"http://line.me/R/msg/text/?"+encodeURIComponent(this.getValue("title")+" "+this.getValue("url")),isLink:true},pinterest:{shareUrl:"https://www.pinterest.com/pin/create/button/",params:{url:this.getValue("url"),media:this.getValue("image"),description:this.getValue("description")}},tumblr:{shareUrl:"http://tumblr.com/widgets/share/tool",params:{canonicalUrl:this.getValue("url"),content:this.getValue("url"),posttype:"link",title:this.getValue("title"),caption:this.getValue("caption"),tags:this.getValue("tags")}},hackernews:{shareUrl:"https://news.ycombinator.com/submitlink",params:{u:this.getValue("url"),t:this.getValue("title")}},reddit:{shareUrl:"https://www.reddit.com/submit",params:{url:this.getValue("url")}},vk:{shareUrl:"http://vk.com/share.php",params:{url:this.getValue("url"),title:this.getValue("title"),description:this.getValue("caption"),image:this.getValue("image")}},xing:{shareUrl:"https://www.xing.com/app/user",params:{op:"share",url:this.getValue("url"),title:this.getValue("title")}},buffer:{shareUrl:"https://buffer.com/add",params:{url:this.getValue("url"),title:this.getValue("title"),via:this.getValue("via"),picture:this.getValue("picture")}},instapaper:{shareUrl:"http://www.instapaper.com/edit",params:{url:this.getValue("url"),title:this.getValue("title"),description:this.getValue("description")}},pocket:{shareUrl:"https://getpocket.com/save",params:{url:this.getValue("url")}},digg:{shareUrl:"http://www.digg.com/submit",params:{url:this.getValue("url")}},stumbleupon:{shareUrl:"http://www.stumbleupon.com/submit",params:{url:this.getValue("url"),title:this.getValue("title")}},mashable:{shareUrl:"https://mashable.com/submit",params:{url:this.getValue("url"),title:this.getValue("title")}},mix:{shareUrl:"https://mix.com/add",params:{url:this.getValue("url")}},flipboard:{shareUrl:"https://share.flipboard.com/bookmarklet/popout",params:{v:2,title:this.getValue("title"),url:this.getValue("url"),t:Date.now()}},weibo:{shareUrl:"http://service.weibo.com/share/share.php",params:{url:this.getValue("url"),title:this.getValue("title"),pic:this.getValue("image"),appkey:this.getValue("appkey"),ralateUid:this.getValue("ralateuid"),language:"zh_cn"}},renren:{shareUrl:"http://share.renren.com/share/buttonshare",params:{link:this.getValue("url")}},myspace:{shareUrl:"https://myspace.com/post",params:{u:this.getValue("url"),t:this.getValue("title"),c:this.getValue("description")}},blogger:{shareUrl:"https://www.blogger.com/blog-this.g",params:{u:this.getValue("url"),n:this.getValue("title"),t:this.getValue("description")}},baidu:{shareUrl:"http://cang.baidu.com/do/add",params:{it:this.getValue("title"),iu:this.getValue("url")}},douban:{shareUrl:"https://www.douban.com/share/service",params:{name:this.getValue("title"),href:this.getValue("url"),image:this.getValue("image")}},okru:{shareUrl:"https://connect.ok.ru/dk",params:{"st.cmd":"WidgetSharePreview","st.shareUrl":this.getValue("url"),title:this.getValue("title")}},mailru:{shareUrl:"http://connect.mail.ru/share",params:{share_url:this.getValue("url"),linkname:this.getValue("title"),linknote:this.getValue("description"),type:"page"}},evernote:{shareUrl:"http://www.evernote.com/clip.action",params:{url:this.getValue("url"),title:this.getValue("title")}},skype:{shareUrl:"https://web.skype.com/share",params:{url:this.getValue("url"),title:this.getValue("title")}},quora:{shareUrl:"https://www.quora.com/share",params:{url:this.getValue("url"),title:this.getValue("title")}},delicious:{shareUrl:"https://del.icio.us/post",params:{url:this.getValue("url"),title:this.getValue("title")}},sms:{shareUrl:"sms://",params:{body:this.getValue("body")}},trello:{shareUrl:"https://trello.com/add-card",params:{url:this.getValue("url"),name:this.getValue("title"),desc:this.getValue("description"),mode:"popup"}},messenger:{shareUrl:"fb-messenger://share",params:{link:this.getValue("url")}},odnoklassniki:{shareUrl:"https://connect.ok.ru/dk",params:{st:{cmd:"WidgetSharePreview",deprecated:1,shareUrl:this.getValue("url")}}},meneame:{shareUrl:"https://www.meneame.net/submit",params:{url:this.getValue("url")}},diaspora:{shareUrl:"https://share.diasporafoundation.org",params:{title:this.getValue("title"),url:this.getValue("url")}},googlebookmarks:{shareUrl:"https://www.google.com/bookmarks/mark",params:{op:"edit",bkmk:this.getValue("url"),title:this.getValue("title")}},qzone:{shareUrl:"https://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey",params:{url:this.getValue("url")}},refind:{shareUrl:"https://refind.com",params:{url:this.getValue("url")}},surfingbird:{shareUrl:"https://surfingbird.ru/share",params:{url:this.getValue("url"),title:this.getValue("title"),description:this.getValue("description")}},yahoomail:{shareUrl:"http://compose.mail.yahoo.com",params:{to:this.getValue("to"),subject:this.getValue("subject"),body:this.getValue("body")}},wordpress:{shareUrl:"https://wordpress.com/wp-admin/press-this.php",params:{u:this.getValue("url"),t:this.getValue("title"),s:this.getValue("title")}},amazon:{shareUrl:"https://www.amazon.com/gp/wishlist/static-add",params:{u:this.getValue("url"),t:this.getValue("title")}},pinboard:{shareUrl:"https://pinboard.in/add",params:{url:this.getValue("url"),title:this.getValue("title"),description:this.getValue("description")}},threema:{shareUrl:"threema://compose",params:{text:this.getValue("text"),id:this.getValue("id")}}},a=e[t];if(a){a.width=this.getValue("width");a.height=this.getValue("height")}return a!==undefined?this.urlSharer(a):false},urlSharer:function(t){var e=t.params||{},a=Object.keys(e),r,s=a.length>0?"?":"";for(r=0;r<a.length;r++){if(s!=="?"){s+="&"}if(e[a[r]]){s+=a[r]+"="+encodeURIComponent(e[a[r]])}}t.shareUrl+=s;if(!t.isLink){var l=t.width||600,i=t.height||480,h=g.innerWidth/2-l/2+g.screenX,u=g.innerHeight/2-i/2+g.screenY,o="scrollbars=no, width="+l+", height="+i+", top="+u+", left="+h,p=g.open(t.shareUrl,"",o);if(g.focus){p.focus()}}else{g.location.href=t.shareUrl}}};if(r.readyState==="complete"||r.readyState!=="loading"){s.init()}else{r.addEventListener("DOMContentLoaded",s.init)}g.addEventListener("page:load",s.init);g.addEventListener("turbolinks:load",s.init);g.Sharer=s})(window,document);
+(function(m,r){"use strict";var s=function(t){this.elem=t};s.init=function(){var t=r.querySelectorAll("[data-sharer]"),e,a=t.length;for(e=0;e<a;e++){t[e].addEventListener("click",s.add)}};s.add=function(t){var e=t.currentTarget||t.srcElement;var a=new s(e);a.share()};s.prototype={constructor:s,getValue:function(t){var e=this.elem.getAttribute("data-"+t);if(e&&t==="hashtag"){if(!e.startsWith("#")){e="#"+e}}return e===null?"":e},share:function(){var t=this.getValue("sharer").toLowerCase(),e={facebook:{shareUrl:"https://www.facebook.com/sharer/sharer.php",params:{u:this.getValue("url"),hashtag:this.getValue("hashtag"),quote:this.getValue("quote")}},linkedin:{shareUrl:"https://www.linkedin.com/shareArticle",params:{url:this.getValue("url"),mini:true}},twitter:{shareUrl:"https://twitter.com/intent/tweet/",params:{text:this.getValue("title"),url:this.getValue("url"),hashtags:this.getValue("hashtags"),via:this.getValue("via")}},email:{shareUrl:"mailto:"+this.getValue("to"),params:{subject:this.getValue("subject"),body:this.getValue("title")+"\n"+this.getValue("url")}},whatsapp:{shareUrl:this.getValue("web")==="true"?"https://web.whatsapp.com/send":"https://wa.me/",params:{phone:this.getValue("to"),text:this.getValue("title")+" "+this.getValue("url")}},telegram:{shareUrl:"https://t.me/share",params:{text:this.getValue("title"),url:this.getValue("url")}},viber:{shareUrl:"viber://forward",params:{text:this.getValue("title")+" "+this.getValue("url")}},line:{shareUrl:"http://line.me/R/msg/text/?"+encodeURIComponent(this.getValue("title")+" "+this.getValue("url"))},pinterest:{shareUrl:"https://www.pinterest.com/pin/create/button/",params:{url:this.getValue("url"),media:this.getValue("image"),description:this.getValue("description")}},tumblr:{shareUrl:"http://tumblr.com/widgets/share/tool",params:{canonicalUrl:this.getValue("url"),content:this.getValue("url"),posttype:"link",title:this.getValue("title"),caption:this.getValue("caption"),tags:this.getValue("tags")}},hackernews:{shareUrl:"https://news.ycombinator.com/submitlink",params:{u:this.getValue("url"),t:this.getValue("title")}},reddit:{shareUrl:"https://www.reddit.com/submit",params:{url:this.getValue("url"),title:this.getValue("title")}},vk:{shareUrl:"http://vk.com/share.php",params:{url:this.getValue("url"),title:this.getValue("title"),description:this.getValue("caption"),image:this.getValue("image")}},xing:{shareUrl:"https://www.xing.com/social/share/spi",params:{url:this.getValue("url")}},buffer:{shareUrl:"https://buffer.com/add",params:{url:this.getValue("url"),title:this.getValue("title"),via:this.getValue("via"),picture:this.getValue("picture")}},instapaper:{shareUrl:"http://www.instapaper.com/edit",params:{url:this.getValue("url"),title:this.getValue("title"),description:this.getValue("description")}},pocket:{shareUrl:"https://getpocket.com/save",params:{url:this.getValue("url")}},mashable:{shareUrl:"https://mashable.com/submit",params:{url:this.getValue("url"),title:this.getValue("title")}},mix:{shareUrl:"https://mix.com/add",params:{url:this.getValue("url")}},flipboard:{shareUrl:"https://share.flipboard.com/bookmarklet/popout",params:{v:2,title:this.getValue("title"),url:this.getValue("url"),t:Date.now()}},weibo:{shareUrl:"http://service.weibo.com/share/share.php",params:{url:this.getValue("url"),title:this.getValue("title"),pic:this.getValue("image"),appkey:this.getValue("appkey"),ralateUid:this.getValue("ralateuid"),language:"zh_cn"}},blogger:{shareUrl:"https://www.blogger.com/blog-this.g",params:{u:this.getValue("url"),n:this.getValue("title"),t:this.getValue("description")}},baidu:{shareUrl:"http://cang.baidu.com/do/add",params:{it:this.getValue("title"),iu:this.getValue("url")}},douban:{shareUrl:"https://www.douban.com/share/service",params:{name:this.getValue("name"),href:this.getValue("url"),image:this.getValue("image"),comment:this.getValue("description")}},okru:{shareUrl:"https://connect.ok.ru/dk",params:{"st.cmd":"WidgetSharePreview","st.shareUrl":this.getValue("url"),title:this.getValue("title")}},mailru:{shareUrl:"http://connect.mail.ru/share",params:{share_url:this.getValue("url"),linkname:this.getValue("title"),linknote:this.getValue("description"),type:"page"}},evernote:{shareUrl:"https://www.evernote.com/clip.action",params:{url:this.getValue("url"),title:this.getValue("title")}},skype:{shareUrl:"https://web.skype.com/share",params:{url:this.getValue("url"),title:this.getValue("title")}},delicious:{shareUrl:"https://del.icio.us/post",params:{url:this.getValue("url"),title:this.getValue("title")}},sms:{shareUrl:"sms://",params:{body:this.getValue("body")}},trello:{shareUrl:"https://trello.com/add-card",params:{url:this.getValue("url"),name:this.getValue("title"),desc:this.getValue("description"),mode:"popup"}},messenger:{shareUrl:"fb-messenger://share",params:{link:this.getValue("url")}},odnoklassniki:{shareUrl:"https://connect.ok.ru/dk",params:{st:{cmd:"WidgetSharePreview",deprecated:1,shareUrl:this.getValue("url")}}},meneame:{shareUrl:"https://www.meneame.net/submit",params:{url:this.getValue("url")}},diaspora:{shareUrl:"https://share.diasporafoundation.org",params:{title:this.getValue("title"),url:this.getValue("url")}},googlebookmarks:{shareUrl:"https://www.google.com/bookmarks/mark",params:{op:"edit",bkmk:this.getValue("url"),title:this.getValue("title")}},qzone:{shareUrl:"https://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey",params:{url:this.getValue("url")}},refind:{shareUrl:"https://refind.com",params:{url:this.getValue("url")}},surfingbird:{shareUrl:"https://surfingbird.ru/share",params:{url:this.getValue("url"),title:this.getValue("title"),description:this.getValue("description")}},yahoomail:{shareUrl:"http://compose.mail.yahoo.com",params:{to:this.getValue("to"),subject:this.getValue("subject"),body:this.getValue("body")}},wordpress:{shareUrl:"https://wordpress.com/wp-admin/press-this.php",params:{u:this.getValue("url"),t:this.getValue("title"),s:this.getValue("title")}},amazon:{shareUrl:"https://www.amazon.com/gp/wishlist/static-add",params:{u:this.getValue("url"),t:this.getValue("title")}},pinboard:{shareUrl:"https://pinboard.in/add",params:{url:this.getValue("url"),title:this.getValue("title"),description:this.getValue("description")}},threema:{shareUrl:"threema://compose",params:{text:this.getValue("text"),id:this.getValue("id")}},kakaostory:{shareUrl:"https://story.kakao.com/share",params:{url:this.getValue("url")}},yummly:{shareUrl:"http://www.yummly.com/urb/verify",params:{url:this.getValue("url"),title:this.getValue("title"),yumtype:"button"}}},a=e[t];if(a){a.width=this.getValue("width");a.height=this.getValue("height")}return a!==undefined?this.urlSharer(a):false},urlSharer:function(t){var e=t.params||{},a=Object.keys(e),r,s=a.length>0?"?":"";for(r=0;r<a.length;r++){if(s!=="?"){s+="&"}if(e[a[r]]){s+=a[r]+"="+encodeURIComponent(e[a[r]])}}t.shareUrl+=s;var l=this.getValue("link")==="true";var i=this.getValue("blank")==="true";if(l){if(i){m.open(t.shareUrl,"_blank")}else{m.location.href=t.shareUrl}}else{console.log(t.shareUrl);var h=t.width||600,u=t.height||480,o=m.innerWidth/2-h/2+m.screenX,p=m.innerHeight/2-u/2+m.screenY,g="scrollbars=no, width="+h+", height="+u+", top="+p+", left="+o,n=m.open(t.shareUrl,"",g);if(m.focus){n.focus()}}}};if(r.readyState==="complete"||r.readyState!=="loading"){s.init()}else{r.addEventListener("DOMContentLoaded",s.init)}m.Sharer=s})(window,document); \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/1001tracklists.svg b/assets/lib/simple-icons/icons/1001tracklists.svg
index 415de12c..3a937f53 100644
--- a/assets/lib/simple-icons/icons/1001tracklists.svg
+++ b/assets/lib/simple-icons/icons/1001tracklists.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>1001Tracklists icon</title><path d="M9.422 10.723h-1.35v3.807h2.458v-4.048h2.94v4.337h-1.35v1.35h-1.349v2.458h2.458v-2.7h2.699v-5.204h-1.35v-1.35H9.422zm1.35 11.952h2.457v-2.458H10.77v2.458zm-2.676-20H6.747v1.35h-1.35v1.348H4.049v1.35h-1.35v6.699H1.35v1.35H0v2.457h1.35v1.35h1.349v1.349h2.458v-7.856h-1.35v-4.24h1.35v-1.35h1.349v-1.35h1.35V3.784h8.289v1.35h1.349v1.349h1.35v1.35h1.349v4.24h-1.35v7.856h2.458v-1.35h1.35v-1.35H24v-2.457h-1.35v-1.35h-1.349V6.724h-1.35v-1.35h-1.349V4.024h-1.349v-1.35h-1.35V1.326H8.097v1.35Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>1001Tracklists</title><path d="M9.422 10.723h-1.35v3.807h2.458v-4.048h2.94v4.337h-1.35v1.35h-1.349v2.458h2.458v-2.7h2.699v-5.204h-1.35v-1.35H9.422zm1.35 11.952h2.457v-2.458H10.77v2.458zm-2.676-20H6.747v1.35h-1.35v1.348H4.049v1.35h-1.35v6.699H1.35v1.35H0v2.457h1.35v1.35h1.349v1.349h2.458v-7.856h-1.35v-4.24h1.35v-1.35h1.349v-1.35h1.35V3.784h8.289v1.35h1.349v1.349h1.35v1.35h1.349v4.24h-1.35v7.856h2.458v-1.35h1.35v-1.35H24v-2.457h-1.35v-1.35h-1.349V6.724h-1.35v-1.35h-1.349V4.024h-1.349v-1.35h-1.35V1.326H8.097v1.35Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/1password.svg b/assets/lib/simple-icons/icons/1password.svg
index f5f53a43..2021fc9d 100644
--- a/assets/lib/simple-icons/icons/1password.svg
+++ b/assets/lib/simple-icons/icons/1password.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>1Password icon</title><path d="M10.51,10.013V7.299c0-0.306,0.248-0.554,0.554-0.554h1.911c0.306,0,0.554,0.248,0.554,0.554v4.968 c0,0.076-0.038,0.134-0.076,0.191l-0.478,0.478c-0.115,0.115-0.115,0.287,0,0.382l0.478,0.478c0.057,0.057,0.076,0.115,0.076,0.191 v2.713c0,0.306-0.248,0.554-0.554,0.554h-1.911c-0.306,0-0.554-0.248-0.554-0.554v-4.968c0-0.076,0.038-0.134,0.076-0.191 l0.478-0.478c0.115-0.115,0.115-0.287,0-0.382l-0.478-0.478C10.529,10.146,10.51,10.089,10.51,10.013z M19.127,12 c0-3.936-3.191-7.127-7.127-7.127S4.873,8.064,4.873,12S8.064,19.127,12,19.127S19.127,15.936,19.127,12z M21.382,12 c0,5.178-4.204,9.363-9.363,9.363c-5.178,0-9.363-4.204-9.363-9.363c0-5.178,4.204-9.363,9.363-9.363 C17.178,2.637,21.382,6.822,21.382,12z M0.764,12c0,6.21,5.025,11.236,11.236,11.236S23.236,18.21,23.236,12S18.21,0.764,12,0.764 S0.764,5.79,0.764,12z M0,12C0,5.369,5.369,0,12,0c6.631,0,12,5.369,12,12s-5.369,12-12,12S0,18.631,0,12z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>1Password</title><path d="M10.51,10.013V7.299c0-0.306,0.248-0.554,0.554-0.554h1.911c0.306,0,0.554,0.248,0.554,0.554v4.968 c0,0.076-0.038,0.134-0.076,0.191l-0.478,0.478c-0.115,0.115-0.115,0.287,0,0.382l0.478,0.478c0.057,0.057,0.076,0.115,0.076,0.191 v2.713c0,0.306-0.248,0.554-0.554,0.554h-1.911c-0.306,0-0.554-0.248-0.554-0.554v-4.968c0-0.076,0.038-0.134,0.076-0.191 l0.478-0.478c0.115-0.115,0.115-0.287,0-0.382l-0.478-0.478C10.529,10.146,10.51,10.089,10.51,10.013z M19.127,12 c0-3.936-3.191-7.127-7.127-7.127S4.873,8.064,4.873,12S8.064,19.127,12,19.127S19.127,15.936,19.127,12z M21.382,12 c0,5.178-4.204,9.363-9.363,9.363c-5.178,0-9.363-4.204-9.363-9.363c0-5.178,4.204-9.363,9.363-9.363 C17.178,2.637,21.382,6.822,21.382,12z M0.764,12c0,6.21,5.025,11.236,11.236,11.236S23.236,18.21,23.236,12S18.21,0.764,12,0.764 S0.764,5.79,0.764,12z M0,12C0,5.369,5.369,0,12,0c6.631,0,12,5.369,12,12s-5.369,12-12,12S0,18.631,0,12z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/3m.svg b/assets/lib/simple-icons/icons/3m.svg
new file mode 100644
index 00000000..c064f956
--- /dev/null
+++ b/assets/lib/simple-icons/icons/3m.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>3M</title><path d="M18.903 5.954L17.17 13.03l-1.739-7.076h-5.099v2.613C9.72 6.28 7.56 5.706 5.558 5.674 3.12 5.641.563 6.701.469 9.936h3.373c0-.977.747-1.536 1.588-1.523 1.032-.008 1.508.434 1.533 1.124-.036.597-.387 1.014-1.525 1.014H4.303V12.9h1.03c.584 0 1.399.319 1.431 1.155.04.995-.652 1.435-1.501 1.443-1.517-.053-1.763-1.225-1.763-2.23H0c.015.677-.151 5.091 5.337 5.059 2.629.025 4.464-1.085 5.003-2.613v2.342h3.455v-7.632l1.867 7.634h3.018l1.875-7.626v7.634H24V5.954h-5.097zm-8.561 7.06c-.429-.893-1.034-1.284-1.376-1.407.714-.319 1.09-.751 1.376-1.614v3.021z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/42.svg b/assets/lib/simple-icons/icons/42.svg
new file mode 100644
index 00000000..6a096681
--- /dev/null
+++ b/assets/lib/simple-icons/icons/42.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>42</title><path d="M24 12.42l-4.428 4.415H24zm-4.428-4.417l-4.414 4.418v4.414h4.414V12.42L24 8.003V3.575h-4.428zm-4.414 0l4.414-4.428h-4.414zM0 15.996h8.842v4.43h4.412V12.42H4.428l8.826-8.846H8.842L0 12.421z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/4chan.svg b/assets/lib/simple-icons/icons/4chan.svg
new file mode 100644
index 00000000..c5c2e7f1
--- /dev/null
+++ b/assets/lib/simple-icons/icons/4chan.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>4chan</title><path d="M11.07 8.82S9.803 1.079 5.145 1.097C2.006 1.109.78 4.124 3.055 4.802c0 0-2.698.973-2.698 2.697 0 1.725 4.274 3.54 10.713 1.32zm1.931 5.924s.904 7.791 5.558 7.991c3.136.135 4.503-2.82 2.262-3.604 0 0 2.74-.845 2.82-2.567.08-1.723-4.105-3.737-10.64-1.82zm-3.672-1.55s-7.532 2.19-6.952 6.813c.39 3.114 3.53 3.969 3.93 1.63 0 0 1.29 2.559 3.002 2.351 1.712-.208 3-4.67.02-10.794zm5.623-2.467s7.727-1.35 7.66-6.008c-.046-3.138-3.074-4.333-3.728-2.051 0 0-1-2.686-2.726-2.668-1.724.018-3.494 4.312-1.206 10.727z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/4d.svg b/assets/lib/simple-icons/icons/4d.svg
new file mode 100644
index 00000000..e581dabb
--- /dev/null
+++ b/assets/lib/simple-icons/icons/4d.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>4D</title><path d="M20.64 0v24H3.36V0h17.28zM10.49 11.827c-.115.138-5.882 6.789-5.983 6.9-.058.07-.187.194-.187.36 0 .153.187.208.36.208h4.4v-1.067H5.83c.49-.61 3.38-3.824 3.696-4.226v5.34c0 .194-.005.965-.043 1.602-.029.43-.13.637-.661.693-.23.027-.533.041-.662.041-.072 0-.115.083-.115.18 0 .097.072.167.23.167.777 0 1.539-.042 1.942-.042 1.236 0 2.646.097 3.178.097 2.618 0 4.099-.97 4.746-1.607.791-.776 1.539-2.093 1.539-3.81 0-1.622-.662-2.758-1.38-3.465-1.54-1.565-3.913-1.565-5.682-1.565-.56 0-1.035.027-1.064.027-.388.042-.345-.124-.59-.138-.158-.014-.258.055-.474.305zm1.898.443c1.108 0 2.719.166 4.027 1.372.604.554 1.367 1.676 1.367 3.408 0 1.414-.288 2.66-1.194 3.409-.849.706-1.812.984-3.265.984-1.122 0-1.683-.291-1.87-.54-.115-.153-.172-.694-.186-1.04 0-.097-.015-.29-.015-.568h1.021c.245 0 .317-.055.389-.18.1-.18.244-.735.244-.86 0-.11-.057-.166-.13-.166-.086 0-.273.139-.647.139h-.877v-5.584c0-.152.058-.222.173-.277.115-.056.676-.097.963-.097z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/500px.svg b/assets/lib/simple-icons/icons/500px.svg
index d16cbda8..2d901139 100644
--- a/assets/lib/simple-icons/icons/500px.svg
+++ b/assets/lib/simple-icons/icons/500px.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>500px icon</title><path d="M7.439 9.01A2.994 2.994 0 0 0 4.449 12a2.993 2.993 0 0 0 2.99 2.99 2.994 2.994 0 0 0 2.99-2.99 2.993 2.993 0 0 0-2.99-2.99m0 5.343c-1.297 0-2.354-1.056-2.354-2.353s1.057-2.353 2.354-2.353S9.792 10.703 9.792 12s-1.056 2.353-2.353 2.353m6.472-5.343a2.994 2.994 0 0 0-2.99 2.99 2.993 2.993 0 0 0 2.99 2.99 2.994 2.994 0 0 0 2.99-2.99 2.994 2.994 0 0 0-2.99-2.99m0 5.343c-1.298 0-2.353-1.056-2.353-2.353s1.055-2.353 2.353-2.353c1.297 0 2.353 1.056 2.353 2.353s-1.056 2.353-2.353 2.353m-11.612-3.55a2.1 2.1 0 0 0-1.596.423V9.641H3.39c.093 0 .16-.017.16-.292 0-.269-.108-.28-.18-.28H.396c-.174 0-.265.14-.265.294v2.602c0 .136.087.183.247.214.141.028.223.012.285-.057l.006-.01c.283-.408.9-.804 1.486-.732.699.086 1.262.644 1.34 1.327a1.512 1.512 0 0 1-1.501 1.685c-.635 0-1.19-.408-1.421-1.001-.035-.088-.092-.152-.343-.062-.229.083-.243.181-.212.268a2.11 2.11 0 0 0 1.976 1.386 2.102 2.102 0 0 0 .305-4.18m16.646-1.764c-.805.062-1.434.769-1.434 1.61v2.661c0 .154.117.186.293.186s.293-.031.293-.186v-2.668c0-.524.382-.974.868-1.024a.972.972 0 0 1 .758.247.984.984 0 0 1 .322.729c0 .08-.039.34-.217.581-.135.182-.391.399-.844.399h-.009c-.115 0-.215.005-.234.28-.013.186-.012.269.148.29.286.04.576-.016.865-.166.492-.256.822-.741.861-1.267a1.562 1.562 0 0 0-.452-1.222 1.56 1.56 0 0 0-1.218-.45m3.919 1.559l1.085-1.085c.04-.039.132-.132-.055-.324-.08-.083-.153-.125-.217-.125h-.001a.163.163 0 0 0-.121.058l-1.088 1.088-1.086-1.093c-.088-.088-.19-.067-.322.065-.135.136-.157.24-.069.328l1.086 1.092-1.064 1.064-.007.007c-.026.025-.065.063-.065.125-.001.063.042.139.126.223.07.071.138.107.2.107.069 0 .114-.045.139-.07l1.068-1.067 1.091 1.092a.162.162 0 0 0 .114.045h.002c.069 0 .142-.04.217-.118.122-.129.143-.236.061-.319l-1.094-1.093z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>500px</title><path d="M7.433 9.01A2.994 2.994 0 0 0 4.443 12a2.993 2.993 0 0 0 2.99 2.99 2.994 2.994 0 0 0 2.99-2.99 2.993 2.993 0 0 0-2.99-2.99m0 5.343A2.357 2.357 0 0 1 5.079 12a2.357 2.357 0 0 1 2.354-2.353A2.356 2.356 0 0 1 9.786 12a2.356 2.356 0 0 1-2.353 2.353m6.471-5.343a2.994 2.994 0 0 0-2.99 2.99 2.993 2.993 0 0 0 2.99 2.99 2.994 2.994 0 0 0 2.99-2.99 2.994 2.994 0 0 0-2.99-2.99m0 5.343A2.355 2.355 0 0 1 11.552 12a2.355 2.355 0 0 1 2.352-2.353A2.356 2.356 0 0 1 16.257 12a2.356 2.356 0 0 1-2.353 2.353m-11.61-3.55a2.1 2.1 0 0 0-1.597.423V9.641h2.687c.093 0 .16-.017.16-.292 0-.269-.108-.28-.18-.28H.39c-.174 0-.265.14-.265.294v2.602c0 .136.087.183.247.214.141.028.223.012.285-.057l.006-.01c.283-.408.9-.804 1.486-.732.699.086 1.262.644 1.34 1.327a1.512 1.512 0 0 1-1.5 1.685c-.636 0-1.19-.408-1.422-1.001-.035-.088-.092-.152-.343-.062-.229.083-.243.18-.212.268a2.11 2.11 0 0 0 1.976 1.386 2.102 2.102 0 0 0 .305-4.18M18.938 9.04c-.805.062-1.434.77-1.434 1.61v2.66c0 .155.117.187.293.187s.293-.031.293-.186v-2.668c0-.524.382-.974.868-1.024a.972.972 0 0 1 .758.247.984.984 0 0 1 .322.73c0 .08-.039.34-.217.58-.135.182-.39.399-.844.399h-.009c-.115 0-.215.005-.234.28-.013.186-.012.269.148.29.286.04.576-.016.865-.166.492-.256.822-.741.861-1.267a1.562 1.562 0 0 0-.452-1.222 1.56 1.56 0 0 0-1.218-.45m3.919 1.56l1.085-1.086c.04-.039.132-.132-.055-.324-.08-.083-.153-.125-.217-.125h-.001a.163.163 0 0 0-.121.058L22.46 10.21l-1.086-1.093c-.088-.088-.19-.067-.322.065-.135.136-.157.24-.069.328l1.086 1.092-1.064 1.064-.007.007c-.026.025-.065.063-.065.125-.001.063.042.139.126.223.07.071.138.107.2.107.069 0 .114-.045.139-.07l1.068-1.067 1.09 1.092a.162.162 0 0 0 .115.045h.002c.069 0 .142-.04.217-.118.122-.129.143-.236.06-.319z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/a-frame.svg b/assets/lib/simple-icons/icons/a-frame.svg
deleted file mode 100644
index 3d980992..00000000
--- a/assets/lib/simple-icons/icons/a-frame.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>A-Frame icon</title><path d="M17.37 17.07H6.57L4.24 24H3.01l8.23-24h1.52l8.23 24h-1.3zm-.39-1.13l-5-14.96-5.03 14.98h10.03Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/abbott.svg b/assets/lib/simple-icons/icons/abbott.svg
new file mode 100644
index 00000000..511b8a56
--- /dev/null
+++ b/assets/lib/simple-icons/icons/abbott.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Abbott</title><path d="M20.812 2.4H0v3.197h19.773V5.6a1.03 1.03 0 0 1 1.032 1.031v10.742l-.004.007a1.034 1.034 0 0 1-1.034 1.025H4.23c-.569 0-1.033-.46-1.033-1.033v-4.34c0-.57.464-1.032 1.033-1.032H17.6V8.803H3.188A3.185 3.185 0 0 0 0 11.99v6.423A3.188 3.188 0 0 0 3.188 21.6h17.624A3.187 3.187 0 0 0 24 18.412V5.587A3.186 3.186 0 0 0 20.812 2.4"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/abbrobotstudio.svg b/assets/lib/simple-icons/icons/abbrobotstudio.svg
index 72bde14c..36b94a44 100644
--- a/assets/lib/simple-icons/icons/abbrobotstudio.svg
+++ b/assets/lib/simple-icons/icons/abbrobotstudio.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ABB RobotStudio icon</title><path d="M24 12.46a9.6 9.6 0 01-19.2 0h1.07a8.53 8.53 0 108.53-8.53V2.86a9.6 9.6 0 019.6 9.6zm-9.6-3.2a3.2 3.2 0 103.2 3.2 3.2 3.2 0 00-3.2-3.2zm-2 0l-.6-6.67-2.46 1.92-1.46-1.44a4.67 4.67 0 00-5.62-.37L.24 4a.54.54 0 00-.15.74.54.54 0 00.74.15l2-1.31a3.64 3.64 0 014.29.22l1.37 1.38L6.2 7z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ABB RobotStudio</title><path d="M23.999 12.465a9.601 9.601 0 01-19.203 0h1.07a8.53 8.53 0 108.533-8.53v-1.07A9.6 9.6 0 0124 12.463zm-9.6-3.2a3.2 3.2 0 103.2 3.2 3.2 3.2 0 00-3.2-3.2zm-2 0l-.6-6.672-2.462 1.92-1.46-1.44a4.67 4.67 0 00-5.62-.37l-2.02 1.3a.54.54 0 00-.15.74.54.54 0 00.74.15l2-1.31a3.64 3.64 0 014.29.22l1.37 1.38-2.29 1.821z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/abbvie.svg b/assets/lib/simple-icons/icons/abbvie.svg
new file mode 100644
index 00000000..8292ff30
--- /dev/null
+++ b/assets/lib/simple-icons/icons/abbvie.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Abbvie</title><path d="M23.903 13.932c0-.25-.154-.347-.386-.347h-1.778c-.87 0-1.082-.522-1.12-.85h2.415c.734 0 .966-.542.966-.89 0-.367-.232-.888-.966-.888H21.7c-1.256 0-1.661.85-1.661 1.545 0 .754.463 1.546 1.661 1.546h2.203v-.116zM21.74 11.42h1.16c.425 0 .521.251.521.425 0 .155-.096.426-.521.426h-2.32c.04-.271.29-.85 1.16-.85zm-5.16 2.454c-.135.174-.193.252-.328.252-.174 0-.212-.078-.328-.252-.27-.386-1.894-2.898-1.894-2.898h.232c.386 0 .502.174.618.367.097.155 1.41 2.164 1.41 2.164s1.238-1.913 1.411-2.183c.116-.174.271-.348.638-.348h.174s-1.7 2.59-1.932 2.898zm-12.193.194c-.29 0-.405-.116-.444-.348l-.077-.329c-.078.136-.464.677-1.314.677h-.87C.367 14.068 0 13.178 0 12.522c0-.735.444-1.546 1.681-1.546h.928c.947 0 1.468.54 1.584 1.217.097.56.348 1.875.348 1.875h-.155zm-1.913-2.61H1.74c-.889 0-1.179.561-1.179 1.064 0 .502.29 1.063 1.18 1.063h.733c.928 0 1.18-.58 1.18-1.063 0-.425-.233-1.063-1.18-1.063zm16.638-.985c.135 0 .27-.077.27-.25v-.097c0-.155-.135-.252-.27-.252s-.27.078-.27.252v.096c0 .174.135.251.27.251zm-.251.503h.116c.251 0 .406.135.406.406v2.686h-.116c-.252 0-.406-.155-.406-.425v-2.667zm-13.45.444c.117-.116.464-.444 1.14-.444h.87c1.314 0 1.7.889 1.7 1.546 0 .734-.463 1.546-1.7 1.546h-.927c-.947 0-1.623-.6-1.623-1.546v-2.59h.154c.27 0 .387.136.387.368v1.12zm1.218 2.165h.734c.87 0 1.18-.56 1.18-1.063 0-.503-.29-1.063-1.18-1.063h-.734c-.928 0-1.179.58-1.179 1.063-.019.425.232 1.063 1.179 1.063zm3.633-2.165c.116-.116.464-.444 1.14-.444h.87c1.314 0 1.68.889 1.68 1.546 0 .734-.444 1.546-1.68 1.546h-.928c-.947 0-1.623-.6-1.623-1.546v-2.59h.154c.27 0 .387.136.387.368v1.12zm1.217 2.165h.735c.888 0 1.178-.56 1.178-1.063 0-.503-.29-1.063-1.178-1.063h-.735c-.927 0-1.178.58-1.178 1.063-.02.425.231 1.063 1.178 1.063z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/abletonlive.svg b/assets/lib/simple-icons/icons/abletonlive.svg
new file mode 100644
index 00000000..a5bad8cd
--- /dev/null
+++ b/assets/lib/simple-icons/icons/abletonlive.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Ableton Live</title><path d="M0 6.4v11.2h1.6V6.4zm3.2 0v11.2h1.6V6.4zm3.2 0v11.2H8V6.4zm3.2 0v11.2h1.6V6.4zm3.2 0V8H24V6.4zm0 3.2v1.6H24V9.6zm0 3.2v1.6H24v-1.6zm0 3.2v1.6H24V16z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/about-dot-me.svg b/assets/lib/simple-icons/icons/about-dot-me.svg
deleted file mode 100644
index 83f4aa7d..00000000
--- a/assets/lib/simple-icons/icons/about-dot-me.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>About.me icon</title><path d="M19.536 9.15c-1.373 0-2.133 1.014-2.294 2.116h4.608c-.125-1.05-.867-2.115-2.314-2.115m-2.26 3.617c.235 1.156 1.193 1.97 2.532 1.97.725 0 1.77-.27 2.384-.914l1.175 1.35c-1.064 1.11-2.653 1.426-3.74 1.426-2.64 0-4.697-1.906-4.697-4.606 0-2.535 1.894-4.62 4.57-4.62 2.585 0 4.5 1.98 4.5 4.604v.766h-6.723v.023zm-6.487 3.83v-5.69c0-.976-.435-1.536-1.338-1.536-.814 0-1.355.585-1.717 1.007v6.24h-2.35v-5.7c0-.976-.415-1.532-1.318-1.532-.813 0-1.375.586-1.717 1.006v6.24H0V7.508h2.35v1.15c.4-.464 1.302-1.26 2.71-1.26 1.247 0 2.096.525 2.477 1.59.524-.762 1.5-1.59 2.91-1.59 1.7 0 2.69 1.01 2.69 2.962v6.24h-2.353l.005-.006z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/aboutdotme.svg b/assets/lib/simple-icons/icons/aboutdotme.svg
new file mode 100644
index 00000000..78b50279
--- /dev/null
+++ b/assets/lib/simple-icons/icons/aboutdotme.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>About.me</title><path d="M19.536 9.146c-1.373 0-2.133 1.014-2.294 2.116h4.608c-.125-1.05-.867-2.115-2.314-2.115m-2.26 3.617c.235 1.156 1.193 1.97 2.532 1.97.725 0 1.77-.27 2.384-.914l1.175 1.35c-1.064 1.11-2.653 1.426-3.74 1.426-2.64 0-4.697-1.906-4.697-4.606 0-2.535 1.894-4.62 4.57-4.62 2.585 0 4.5 1.98 4.5 4.604v.766h-6.723v.023zm-6.487 3.83v-5.69c0-.976-.435-1.536-1.338-1.536-.814 0-1.355.585-1.717 1.007v6.24h-2.35v-5.7c0-.976-.415-1.532-1.318-1.532-.813 0-1.375.586-1.717 1.006v6.24H0V7.505h2.35v1.15c.4-.463 1.302-1.26 2.71-1.26 1.247 0 2.096.526 2.477 1.59.524-.761 1.5-1.59 2.91-1.59 1.7 0 2.69 1.01 2.69 2.963v6.24h-2.353l.005-.007z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/abstract.svg b/assets/lib/simple-icons/icons/abstract.svg
index 210530d6..c425e6b6 100644
--- a/assets/lib/simple-icons/icons/abstract.svg
+++ b/assets/lib/simple-icons/icons/abstract.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Abstract icon</title><path d="M12 0c9.601 0 12 2.399 12 12 0 9.601-2.399 12-12 12-9.601 0-12-2.399-12-12C0 2.399 2.399 0 12 0zm-1.969 18.564c2.524.003 4.604-2.07 4.609-4.595 0-2.521-2.074-4.595-4.595-4.595S5.45 11.449 5.45 13.969c0 2.516 2.065 4.588 4.581 4.595zm8.344-.189V5.625H5.625v2.247h10.498v10.503h2.252zm-8.344-6.748a2.343 2.343 0 11-.002 4.686 2.343 2.343 0 01.002-4.686z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Abstract</title><path d="M12 0c9.601 0 12 2.399 12 12 0 9.601-2.399 12-12 12-9.601 0-12-2.399-12-12C0 2.399 2.399 0 12 0zm-1.969 18.564c2.524.003 4.604-2.07 4.609-4.595 0-2.521-2.074-4.595-4.595-4.595S5.45 11.449 5.45 13.969c0 2.516 2.065 4.588 4.581 4.595zm8.344-.189V5.625H5.625v2.247h10.498v10.503h2.252zm-8.344-6.748a2.343 2.343 0 11-.002 4.686 2.343 2.343 0 01.002-4.686z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/academia.svg b/assets/lib/simple-icons/icons/academia.svg
index 148005c8..456bf069 100644
--- a/assets/lib/simple-icons/icons/academia.svg
+++ b/assets/lib/simple-icons/icons/academia.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Academia icon</title><path d="M22.033,21.18L13.77,0.459H7.869l1.049,2.623L1.836,21.18C1.574,22.098,0.787,22.23,0,22.361v1.18 h6.82v-1.18l0,0l0,0l0,0l0,0C4.984,22.23,3.934,21.967,4.721,20c0.131-0.131,0.656-1.574,1.311-3.41h8.393l1.18,3.016 c0.131,0.525,0.262,0.918,0.262,1.311c0,1.049-0.918,1.443-2.623,1.443v1.18H24v-1.18C23.082,22.23,22.295,21.967,22.033,21.18z M6.82,14.361c1.311-3.279,2.754-7.082,3.279-8.525l3.41,8.525H6.82z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Academia</title><path d="M22.033 21.18L13.77.459H7.869l1.049 2.623L1.836 21.18C1.574 22.098.787 22.23 0 22.361v1.18h6.82v-1.18C4.984 22.23 3.934 21.967 4.721 20c.131-.131.656-1.574 1.311-3.41h8.393l1.18 3.016c.131.525.262.918.262 1.311 0 1.049-.918 1.443-2.623 1.443v1.18H24v-1.18c-.918-.13-1.705-.393-1.967-1.18zM6.82 14.361a363.303 363.303 0 0 0 3.279-8.525l3.41 8.525H6.82z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/accenture.svg b/assets/lib/simple-icons/icons/accenture.svg
new file mode 100644
index 00000000..2ac6434e
--- /dev/null
+++ b/assets/lib/simple-icons/icons/accenture.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Accenture</title><path d="M23.297 14.74L.434 24v-5.263L16.8 12.11l6.497 2.631zm.27-5.371L.433 0v5.263l23.132 9.368V9.37z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/acclaim.svg b/assets/lib/simple-icons/icons/acclaim.svg
new file mode 100644
index 00000000..e536c595
--- /dev/null
+++ b/assets/lib/simple-icons/icons/acclaim.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Acclaim</title><path d="M12.468.186a.7.7 0 0 0-.95 0L1.924 9.193a1.705 1.705 0 0 0-.475 1.095v3.59c0 .358.214.452.475.207l9.601-9.01a.705.705 0 0 1 .95 0l9.603 9.01c.262.245.475.151.475-.207v-3.59a1.71 1.71 0 0 0-.475-1.095zm0 9.783a.705.705 0 0 0-.95 0l-9.595 9.002a1.705 1.705 0 0 0-.475 1.094v3.59c0 .358.214.453.475.208l9.601-9.007a.701.701 0 0 1 .95 0l9.603 9.008c.262.244.475.15.475-.208v-3.59a1.71 1.71 0 0 0-.475-1.094Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/accusoft.svg b/assets/lib/simple-icons/icons/accusoft.svg
index 5f0809a3..88662c65 100644
--- a/assets/lib/simple-icons/icons/accusoft.svg
+++ b/assets/lib/simple-icons/icons/accusoft.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Accusoft icon</title><path d="M18.078,16.345c-0.209-0.261-8.709-11.13-9.005-11.496 c-0.279-0.366-0.209-0.47-0.157-0.523c0.105-0.122,0.261-0.105,0.871-0.105c0.366,0,3.989-0.017,4.372-0.017 c0.784,0,0.906,0.07,0.993,0.087c0.087,0.035,0.296,0.209,0.453,0.383c0.087,0.105,7.699,9.214,7.768,9.301 c0.087,0.105,0.209,0.279,0.314,0.435c0.087,0.157,0.105,0.366-0.035,0.453c-0.087,0.052-4.302,1.794-4.424,1.829 c-0.122,0.052-0.348,0.139-0.523,0.105C18.618,16.798,18.357,16.676,18.078,16.345 M22.38,16.136l0.314,0.052 c0,0,1.01,0.192,1.115,0.226C23.913,16.432,24,16.519,24,16.554c0,0.087-0.052,0.122-0.139,0.174 c-0.07,0.052-4.633,2.856-4.72,2.909c-0.087,0.052-0.192,0.105-0.435,0.139c-0.453,0.087-1.306-0.157-1.585-0.209 c-0.261-0.052-11.461-2.543-11.548-2.578c-0.105-0.035-0.174-0.035-0.174-0.139c-0.017-0.157,0.226-0.209,0.418-0.279 c0.192-0.07,5.452-1.968,5.643-2.055c0.192-0.087,0.418-0.105,0.54-0.105s0.853,0.105,1.184,0.157s1.271,0.192,1.271,0.192 l2.142,2.769c0.366,0.435,0.61,0.61,0.923,0.627c0.157,0.017,0.331-0.035,0.453-0.087C18.061,18.035,22.38,16.136,22.38,16.136 M10.153,9.343c0,0,1.846,2.369,1.864,2.386c0.017,0.035,0.035,0.07,0.07,0.087v0.035c-0.07,0.052-3.362,3.1-3.379,3.118 l-3.466,1.271c0,0-0.105,0.035-0.157,0.07c-0.052,0.035-0.122,0.105-0.105,0.261c0,0.052,0.017,0.853,0.035,1.045 c-0.017,0.017,0,0-0.017,0.017c0,0-4.267,1.359-4.302,1.359c-0.209,0.07-0.61,0.209-0.662,0.174 c-0.087-0.07,0.017-0.174,0.07-0.244c0.052-0.07,8.796-8.674,9.127-9.022C9.7,9.395,10.153,9.343,10.153,9.343"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Accusoft</title><path d="M14.1774 4.2143c-.3824.0022-4.0063.02-4.3665.0222-.618.0044-.776-.0044-.8738.109-.0511.06-.1334.1645.1535.5246.2868.358 8.7775 11.221 8.9931 11.481.2735.3313.527.4447.638.4625.178.0267.4003-.0667.5203-.1134.1179-.0467 4.3243-1.7853 4.4155-1.8342.14-.0756.1312-.289.0378-.4469-.0934-.16-.229-.3335-.3069-.429-.08-.0957-7.6903-9.1956-7.7703-9.2956-.1467-.1845-.3602-.3602-.4447-.389-.0845-.029-.2045-.0935-.996-.0912zm-4.0152 5.1313s-.4492.06-.9427.5625c-.338.349-9.0776 8.9487-9.1243 9.0154-.0423.06-.1468.1756-.0645.2401.0422.0333.4513-.1.6559-.1734.0289 0 4.2931-1.3607 4.2931-1.3607.02-.0222-.0022-.0022.0222-.02-.0133-.189-.0289-.9804-.0355-1.036-.02-.1579.0556-.2223.109-.258.0533-.0355.1533-.0755.1533-.0755l3.4706-1.265c.0222-.029 3.3193-3.0638 3.3838-3.1216v-.0422c-.029-.0222-.04-.06-.0645-.0867-.0156-.0067-1.8564-2.3856-1.8564-2.3789zm1.8497 5.0624c-.1156.0089-.3601.029-.5424.109-.1823.08-5.4426 1.9787-5.6316 2.052-.189.0734-.4269.1334-.4135.2846.0066.0934.0733.1.1734.1312.1.0333 11.2786 2.5212 11.5477 2.5768.269.0556 1.1294.2934 1.5763.2045.24-.0334.3535-.0934.4313-.14.0778-.0467 4.6422-2.8503 4.7156-2.9037.0711-.0533.1223-.0889.1312-.1756.0044-.0333-.0912-.109-.1957-.1312a321.6128 321.6128 0 0 0-1.1139-.2179l-.309-.0555s-4.311 1.8897-4.4065 1.9342c-.12.0556-.2935.1-.4447.0867-.3157-.0289-.558-.2067-.9293-.6336l-2.1388-2.7724s-.936-.1512-1.2673-.1957c-.3313-.0445-1.0671-.16-1.1828-.1534z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/acer.svg b/assets/lib/simple-icons/icons/acer.svg
new file mode 100644
index 00000000..ca9b2bbf
--- /dev/null
+++ b/assets/lib/simple-icons/icons/acer.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Acer</title><path d="M23.943 9.364c-.085-.113-.17-.198-.595-.226-.113 0-.453-.029-1.048-.029-1.56 0-2.636.482-3.175 1.417.142-.935-.765-1.417-2.749-1.417-2.324 0-3.798.935-4.393 2.834-.226.709-.226 1.276-.056 1.73h-.567c-.425.027-.992.056-1.36.056-.85 0-1.39-.142-1.588-.425-.17-.255-.17-.737.057-1.446.368-1.162 1.247-1.672 2.664-1.672.737 0 1.445.085 1.445.085.085 0 .142-.113.142-.198l-.028-.085-.057-.397c-.028-.255-.227-.397-.567-.453-.311-.029-.567-.029-.907-.029h-.028c-1.842 0-3.146.624-3.854 1.814.255-1.219-.596-1.814-2.551-1.814-1.105 0-1.9.029-2.353.085-.368.057-.595.199-.68.454l-.17.51c-.028.085.029.142.142.142.085 0 .425-.057.992-.086a24.816 24.816 0 0 1 1.672-.085c1.077 0 1.559.284 1.389.822-.029.114-.114.199-.255.227-1.02.17-1.842.284-2.438.369-1.7.226-2.692.736-2.947 1.587-.369 1.162.538 1.728 2.72 1.728 1.078 0 2.013-.056 2.75-.198.425-.085.652-.17.737-.453l.396-1.304c-.028 1.304.85 1.955 2.721 1.955.794 0 1.559-.028 1.927-.085.369-.056.567-.141.652-.425l.085-.396c.397.623 1.276.935 2.608.935 1.417 0 2.239-.029 2.465-.114a.523.523 0 0 0 .369-.311l.028-.085.17-.539c.029-.085-.028-.142-.142-.142l-.906.057c-.596.029-1.077.057-1.418.057-.651 0-1.076-.057-1.332-.142-.368-.142-.538-.397-.51-.822l2.863-.368c1.275-.17 2.154-.567 2.579-1.19l-.992 3.315c-.028.057 0 .114.028.142.029.028.085.057.199.057h1.19c.198 0 .283-.114.312-.199l1.048-3.656c.142-.481.567-.708 1.36-.708.71 0 1.22 0 1.56.028h.028c.057 0 .17-.028.255-.17l.17-.51c0-.085 0-.17-.057-.227zM4.841 13.73c-.368.057-.907.085-1.587.085-1.219 0-1.729-.255-1.587-.737.113-.34.425-.567.935-.624l2.75-.368zm12.669-2.95c-.114.369-.652.624-1.616.766l-2.295.311.056-.198c.199-.624.454-1.02.794-1.247.34-.227.907-.34 1.7-.34 1.05.028 1.503.255 1.36.708Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/acm.svg b/assets/lib/simple-icons/icons/acm.svg
index 1fecb3b5..5e7990a8 100644
--- a/assets/lib/simple-icons/icons/acm.svg
+++ b/assets/lib/simple-icons/icons/acm.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ACM icon</title><path d="M7.435 12.25c-.08.025-.15.072-.202.135-.048.072-.073.158-.07.245 0 .15.038.252.12.308.077.056.194.082.352.082.087 0 .174-.02.264-.06.09-.038.174-.095.245-.165v-.66c-.168.015-.303.03-.405.045-.105.01-.207.034-.305.07zM12 0L0 12l12 12 12-12L12 0zm0 19.357C7.938 19.355 4.645 16.063 4.643 12 4.645 7.938 7.938 4.644 12 4.642c4.063.002 7.355 3.295 7.357 7.358-.002 4.063-3.294 7.355-7.357 7.357zM12 5.377v.002c-3.654 0-6.62 2.966-6.62 6.62s2.966 6.62 6.62 6.62 6.62-2.966 6.62-6.62c0-3.656-2.964-6.62-6.62-6.623zm-2.862 8.246h-.995v-.336l-.182.154c-.142.108-.304.188-.477.233-.082.02-.202.035-.352.035-.262.007-.515-.097-.698-.285-.187-.19-.277-.426-.277-.716 0-.238.046-.427.14-.574.1-.15.24-.27.405-.348.205-.09.423-.152.646-.18.25-.033.516-.06.803-.078v-.017c0-.176-.066-.297-.196-.363-.13-.07-.322-.102-.58-.102-.117 0-.254.02-.41.063-.158.044-.308.1-.458.164H6.42v-.77c.097-.03.256-.062.48-.1.217-.04.438-.06.663-.06.55 0 .95.092 1.2.276.25.183.375.462.375.837v2.168zm3.22-.167c-.07.028-.134.056-.2.086-.074.03-.15.058-.23.08-.094.024-.186.044-.27.06-.084.014-.196.022-.336.022-.263 0-.506-.033-.723-.1-.21-.062-.406-.165-.57-.307-.163-.142-.292-.32-.373-.52-.09-.21-.135-.457-.135-.738-.008-.27.042-.535.146-.78.09-.204.224-.384.392-.53.165-.134.355-.233.56-.29.22-.066.447-.096.675-.096.37 0 .732.087 1.06.255v.854h-.127c-.048-.043-.096-.085-.147-.124-.06-.048-.122-.09-.188-.126-.167-.095-.357-.144-.55-.14-.254 0-.45.086-.59.263-.138.177-.21.414-.21.714 0 .32.075.56.225.715.15.157.347.235.592.235.11 0 .222-.013.33-.042.153-.043.295-.12.415-.225.048-.04.088-.082.123-.11h.13v.843zm4.333.173v-1.597c0-.157 0-.29-.007-.397-.002-.09-.02-.18-.052-.263-.023-.066-.07-.12-.13-.15-.153-.064-.325-.063-.478.002-.086.04-.168.087-.244.14v2.263h-.993v-1.595c0-.156-.003-.286-.01-.396-.003-.09-.02-.18-.05-.264-.027-.066-.076-.12-.136-.15-.06-.033-.145-.048-.25-.048-.083 0-.165.02-.24.056-.078.04-.152.086-.228.136v2.262h-.995V10.44h.993v.356c.144-.125.296-.233.46-.323.148-.08.314-.12.484-.12.182-.004.36.045.514.14.153.1.27.244.34.414.19-.177.37-.314.54-.41.17-.096.34-.145.515-.145.136-.002.27.023.396.075.115.044.22.116.3.21.09.106.16.23.2.364.045.142.066.328.066.553v2.076h-.995z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ACM</title><path d="M7.435 12.25c-.08.025-.15.072-.202.135-.048.072-.073.158-.07.245 0 .15.038.252.12.308.077.056.194.082.352.082.087 0 .174-.02.264-.06.09-.038.174-.095.245-.165v-.66c-.168.015-.303.03-.405.045-.105.01-.207.034-.305.07zM12 0L0 12l12 12 12-12L12 0zm0 19.357C7.938 19.355 4.645 16.063 4.643 12 4.645 7.938 7.938 4.644 12 4.642c4.063.002 7.355 3.295 7.357 7.358-.002 4.063-3.294 7.355-7.357 7.357zM12 5.377v.002c-3.654 0-6.62 2.966-6.62 6.62s2.966 6.62 6.62 6.62 6.62-2.966 6.62-6.62c0-3.656-2.964-6.62-6.62-6.623zm-2.862 8.246h-.995v-.336l-.182.154c-.142.108-.304.188-.477.233-.082.02-.202.035-.352.035-.262.007-.515-.097-.698-.285-.187-.19-.277-.426-.277-.716 0-.238.046-.427.14-.574.1-.15.24-.27.405-.348.205-.09.423-.152.646-.18.25-.033.516-.06.803-.078v-.017c0-.176-.066-.297-.196-.363-.13-.07-.322-.102-.58-.102-.117 0-.254.02-.41.063-.158.044-.308.1-.458.164H6.42v-.77c.097-.03.256-.062.48-.1.217-.04.438-.06.663-.06.55 0 .95.092 1.2.276.25.183.375.462.375.837v2.168zm3.22-.167c-.07.028-.134.056-.2.086-.074.03-.15.058-.23.08-.094.024-.186.044-.27.06-.084.014-.196.022-.336.022-.263 0-.506-.033-.723-.1-.21-.062-.406-.165-.57-.307-.163-.142-.292-.32-.373-.52-.09-.21-.135-.457-.135-.738-.008-.27.042-.535.146-.78.09-.204.224-.384.392-.53.165-.134.355-.233.56-.29.22-.066.447-.096.675-.096.37 0 .732.087 1.06.255v.854h-.127c-.048-.043-.096-.085-.147-.124-.06-.048-.122-.09-.188-.126-.167-.095-.357-.144-.55-.14-.254 0-.45.086-.59.263-.138.177-.21.414-.21.714 0 .32.075.56.225.715.15.157.347.235.592.235.11 0 .222-.013.33-.042.153-.043.295-.12.415-.225.048-.04.088-.082.123-.11h.13v.843zm4.333.173v-1.597c0-.157 0-.29-.007-.397-.002-.09-.02-.18-.052-.263-.023-.066-.07-.12-.13-.15-.153-.064-.325-.063-.478.002-.086.04-.168.087-.244.14v2.263h-.993v-1.595c0-.156-.003-.286-.01-.396-.003-.09-.02-.18-.05-.264-.027-.066-.076-.12-.136-.15-.06-.033-.145-.048-.25-.048-.083 0-.165.02-.24.056-.078.04-.152.086-.228.136v2.262h-.995V10.44h.993v.356c.144-.125.296-.233.46-.323.148-.08.314-.12.484-.12.182-.004.36.045.514.14.153.1.27.244.34.414.19-.177.37-.314.54-.41.17-.096.34-.145.515-.145.136-.002.27.023.396.075.115.044.22.116.3.21.09.106.16.23.2.364.045.142.066.328.066.553v2.076h-.995z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/actigraph.svg b/assets/lib/simple-icons/icons/actigraph.svg
index e3e3b5c9..35aa0923 100644
--- a/assets/lib/simple-icons/icons/actigraph.svg
+++ b/assets/lib/simple-icons/icons/actigraph.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ActiGraph icon</title><path d="M12.043 0c.413 0 .83.266 1.054.546.224.28.191.342.21.529.018.187.16.265.16.62s-.16.494-.272.644c-.112.15-.047.2-.14.406-.094.206-.118.168-.193.336-.075.168.123.462.319.61.196.147.378.262.938.318.56.056.683.03.963.05.28.018.453.174.882.23.43.056.449 0 .803 0 .355 0 .462.053.78.053.317 0 .75-.14 1.141-.122.393.018 1.43.115 1.86.115.43 0 .931-.442 1.38-.423.448.018.832.119.85.455.019.336-.165.762-.37.837-.206.074-.609-.067-.852-.067-.242 0-.496.03-.606.025-.133-.007-.232-.09-.381-.053-.15.038-.76.297-.984.315-.224.02-.689-.034-.875.003-.187.038-.822.15-1.083.168-.262.02-.786-.02-1.029.018-.243.037-.615.113-.839.113-.224 0-.702-.172-.866-.054-.397.288-.336.683-.532 1.247-.187.538-.488.88-.525 1.29-.038.412.224 1.738.355 2.205.13.467.504 1.083.747 1.848.242.766.58 2.31.711 2.945.131.635.004.62.11.977.108.362.616.934.878 1.83.261.896.547 2.744.64 3.23.094.485.135.558.172.707.037.15-.045.214.039.35.378.613.848.849.792 1.222-.056.374-.652.513-1.083.448-.326-.048-.523-.672-.597-.859-.075-.186.003-.239-.072-.37-.075-.13-.089-.199-.126-.535-.037-.336.016-.36-.039-.582-.294-1.197-1.144-2.367-1.35-3.07-.117-.393-.049-.444-.124-.799-.074-.355-2.402-5.42-2.883-5.42-.496 0-2.783 5.006-2.877 5.323-.093.318-.04.638-.133.899s-1.208 2.388-1.36 3.042c-.1.428-.012.556-.068.8-.056.242-.266 1.303-.659 1.509-.392.205-1.086.046-1.178-.292-.142-.52.678-.906.765-1.382.076-.41.804-4.165 1.102-4.893.299-.728.486-.654.616-1.064.042-.13.043-.514.113-.945.153-.934.433-2.294.765-3.201.486-1.326 1.157-2.611 1.032-3.893-.053-.539-.23-.606-.417-1.222-.187-.616-.428-1.347-.67-1.384-.244-.037-.449.093-.748.093s-.896-.13-1.12-.13c-.224 0-.992-.05-1.31-.05-.318 0-.54-.081-.726-.063-.187.02-.36.007-.584.007-.28 0-1.017-.34-1.204-.34-.187 0-.245.036-.413.036-.168 0-.325-.063-.512-.063-.186 0-.532.108-.71.108-.186 0-.54-.419-.484-.886.056-.466.805-.42.991-.42.263 0 .889.355 1.131.392.243.038 1.538-.101 1.818-.101s1.08.126 1.509.126c.43 0 1.014.01 1.369-.046s.68-.244.903-.262c.224-.019 1.238.091 1.807-.306.375-.261.411-.486.392-.654-.018-.168-.14-.192-.234-.36-.094-.168-.053-.305-.109-.417-.056-.112-.269-.212-.273-.623-.004-.322.035-.278.147-.596.112-.317.116-.451.378-.707.19-.184.575-.371.988-.371"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ActiGraph</title><path d="M12.043 0c.413 0 .83.266 1.054.546.224.28.191.342.21.529.018.187.16.265.16.62s-.16.494-.272.644c-.112.15-.047.2-.14.406-.094.206-.118.168-.193.336-.075.168.123.462.319.61.196.147.378.262.938.318.56.056.683.03.963.05.28.018.453.174.882.23.43.056.449 0 .803 0 .355 0 .462.053.78.053.317 0 .75-.14 1.141-.122.393.018 1.43.115 1.86.115.43 0 .931-.442 1.38-.423.448.018.832.119.85.455.019.336-.165.762-.37.837-.206.074-.609-.067-.852-.067-.242 0-.496.03-.606.025-.133-.007-.232-.09-.381-.053-.15.038-.76.297-.984.315-.224.02-.689-.034-.875.003-.187.038-.822.15-1.083.168-.262.02-.786-.02-1.029.018-.243.037-.615.113-.839.113-.224 0-.702-.172-.866-.054-.397.288-.336.683-.532 1.247-.187.538-.488.88-.525 1.29-.038.412.224 1.738.355 2.205.13.467.504 1.083.747 1.848.242.766.58 2.31.711 2.945.131.635.004.62.11.977.108.362.616.934.878 1.83.261.896.547 2.744.64 3.23.094.485.135.558.172.707.037.15-.045.214.039.35.378.613.848.849.792 1.222-.056.374-.652.513-1.083.448-.326-.048-.523-.672-.597-.859-.075-.186.003-.239-.072-.37-.075-.13-.089-.199-.126-.535-.037-.336.016-.36-.039-.582-.294-1.197-1.144-2.367-1.35-3.07-.117-.393-.049-.444-.124-.799-.074-.355-2.402-5.42-2.883-5.42-.496 0-2.783 5.006-2.877 5.323-.093.318-.04.638-.133.899s-1.208 2.388-1.36 3.042c-.1.428-.012.556-.068.8-.056.242-.266 1.303-.659 1.509-.392.205-1.086.046-1.178-.292-.142-.52.678-.906.765-1.382.076-.41.804-4.165 1.102-4.893.299-.728.486-.654.616-1.064.042-.13.043-.514.113-.945.153-.934.433-2.294.765-3.201.486-1.326 1.157-2.611 1.032-3.893-.053-.539-.23-.606-.417-1.222-.187-.616-.428-1.347-.67-1.384-.244-.037-.449.093-.748.093s-.896-.13-1.12-.13c-.224 0-.992-.05-1.31-.05-.318 0-.54-.081-.726-.063-.187.02-.36.007-.584.007-.28 0-1.017-.34-1.204-.34-.187 0-.245.036-.413.036-.168 0-.325-.063-.512-.063-.186 0-.532.108-.71.108-.186 0-.54-.419-.484-.886.056-.466.805-.42.991-.42.263 0 .889.355 1.131.392.243.038 1.538-.101 1.818-.101s1.08.126 1.509.126c.43 0 1.014.01 1.369-.046s.68-.244.903-.262c.224-.019 1.238.091 1.807-.306.375-.261.411-.486.392-.654-.018-.168-.14-.192-.234-.36-.094-.168-.053-.305-.109-.417-.056-.112-.269-.212-.273-.623-.004-.322.035-.278.147-.596.112-.317.116-.451.378-.707.19-.184.575-.371.988-.371"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/activision.svg b/assets/lib/simple-icons/icons/activision.svg
index 851c0928..8059cf7d 100644
--- a/assets/lib/simple-icons/icons/activision.svg
+++ b/assets/lib/simple-icons/icons/activision.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Activision icon</title><path d="M1.88 8.91L0 14.284h.985l.27-.718h1.252l.269.718h.985zm3.224.359l-.537.984h2.15v4.03H7.7v-4.03h1.522l1.882 4.837 1.791-4.837h4.567l-.537-.984H12.18l-1.074 2.865L9.94 9.269zm16.21 1.163v3.762h.986v-1.523l1.7 1.702v-3.76h-.896v1.342zm-15.94.09c-1.075 0-1.881.807-1.881 1.881 0 1.075.806 1.88 1.88 1.88.448 0 .895-.179 1.164-.447L6 12.94c-.18.18-.358.27-.627.27a.897.897 0 0 1-.895-.896c0-.448.358-.896.895-.896.18 0 .448.089.537.268l.627-.715c-.27-.269-.716-.448-1.164-.448zm7.522 0v3.672h.985v-3.671zm2.148 0c-.358 0-.804.18-.804.896 0 .896 1.074 1.433.985 1.792-.09.179-.27.178-.359.178h-.626v.806h1.074c.448 0 .895-.269.895-.806 0-.985-1.253-1.611-.984-1.97 0-.09.178-.09.178-.09h.628v-.805zm1.255 0v3.672h.984v-3.671zm3.045 0c-1.075 0-1.88.807-1.88 1.881 0 .985.805 1.88 1.88 1.88 1.074 0 1.88-.805 1.88-1.88 0-1.074-.806-1.88-1.88-1.88zm-11.016.09v3.672h.986v-3.672zm11.016.896c.448 0 .895.358.895.895a.897.897 0 0 1-.895.896c-.538 0-.985-.358-.896-.896 0-.448.358-.895.896-.895zm-17.464.178l.27.896h-.54z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Activision</title><path d="M1.88 8.91L0 14.284h.985l.27-.718h1.252l.269.718h.985zm3.224.359l-.537.984h2.15v4.03H7.7v-4.03h1.522l1.882 4.837 1.791-4.837h4.567l-.537-.984H12.18l-1.074 2.865L9.94 9.269zm16.21 1.163v3.762h.986v-1.523l1.7 1.702v-3.76h-.896v1.342zm-15.94.09c-1.075 0-1.881.807-1.881 1.881 0 1.075.806 1.88 1.88 1.88.448 0 .895-.179 1.164-.447L6 12.94c-.18.18-.358.27-.627.27a.897.897 0 0 1-.895-.896c0-.448.358-.896.895-.896.18 0 .448.089.537.268l.627-.715c-.27-.269-.716-.448-1.164-.448zm7.522 0v3.672h.985v-3.671zm2.148 0c-.358 0-.804.18-.804.896 0 .896 1.074 1.433.985 1.792-.09.179-.27.178-.359.178h-.626v.806h1.074c.448 0 .895-.269.895-.806 0-.985-1.253-1.611-.984-1.97 0-.09.178-.09.178-.09h.628v-.805zm1.255 0v3.672h.984v-3.671zm3.045 0c-1.075 0-1.88.807-1.88 1.881 0 .985.805 1.88 1.88 1.88 1.074 0 1.88-.805 1.88-1.88 0-1.074-.806-1.88-1.88-1.88zm-11.016.09v3.672h.986v-3.672zm11.016.896c.448 0 .895.358.895.895a.897.897 0 0 1-.895.896c-.538 0-.985-.358-.896-.896 0-.448.358-.895.896-.895zm-17.464.178l.27.896h-.54z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/adafruit.svg b/assets/lib/simple-icons/icons/adafruit.svg
new file mode 100644
index 00000000..7e922955
--- /dev/null
+++ b/assets/lib/simple-icons/icons/adafruit.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Adafruit</title><path d="M14.399 12.794c-.924.148-1.722-.037-1.781-.412-.06-.375.64-.798 1.565-.945.924-.147 1.721.038 1.78.412.06.374-.64.798-1.564.945m-.878 3.86c-.338.172-.957-.363-1.382-1.196-.426-.834-.497-1.65-.158-1.822.338-.172.956.363 1.382 1.196.425.833.497 1.65.158 1.822m-3.64-1.552c-.662.662-1.415.981-1.683.713-.27-.268.05-1.022.71-1.684.66-.663 1.414-.982 1.683-.714.269.268-.05 1.023-.71 1.685m-2.531-4.61c.171-.339.987-.268 1.82.156.834.424 1.372 1.042 1.2 1.38-.173.338-.988.269-1.822-.155-.834-.424-1.37-1.043-1.198-1.381m4.8-2.45c.375.058.56.856.414 1.78-.145.925-.566 1.625-.942 1.567-.374-.06-.56-.857-.415-1.78.145-.925.567-1.626.943-1.568m11.835 2.53c-.078-.491-.345-.632-.989-.837l-3.762-1.2s-2.283-.863-3.974.357c-.228.164-.464.351-.7.55.198-.236.385-.472.55-.7 1.215-1.694.349-3.975.349-3.975l-1.207-3.761c-.207-.643-.347-.91-.84-.986-.492-.078-.707.132-1.101.68l-2.305 3.209s-1.524 1.903-.888 3.89c.086.266.191.549.308.836a12.215 12.215 0 0 0-.497-.74C7.693 6.215 5.258 6.332 5.258 6.332S1.82 6.32 1.308 6.32c-.676-.003-.972.05-1.198.493-.226.443-.093.714.307 1.258.303.415 2.34 3.183 2.34 3.183S4.095 13.292 6.18 13.3c.28.001.58-.012.889-.034a12.317 12.317 0 0 0-.855.244c-1.98.656-2.619 3.01-2.619 3.01L2.36 20.273c-.21.64-.252.939.1 1.29.352.353.65.31 1.291.098.489-.16 3.75-1.242 3.75-1.242s2.352-.644 3.004-2.624c.088-.266.169-.556.243-.854a11.1 11.1 0 0 0-.03.887c.01 2.085 2.051 3.421 2.051 3.421l3.186 2.333c.546.398.816.531 1.26.305.443-.226.495-.523.491-1.199l-.022-3.95s.114-2.435-1.567-3.668a11.93 11.93 0 0 0-.739-.495c.287.115.568.22.836.304 1.986.633 3.888-.894 3.888-.894l3.204-2.31c.547-.395.756-.612.679-1.104"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/adblock.svg b/assets/lib/simple-icons/icons/adblock.svg
index 7e8ffcd2..73a924d3 100644
--- a/assets/lib/simple-icons/icons/adblock.svg
+++ b/assets/lib/simple-icons/icons/adblock.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>AdBlock icon</title><path d="M7.775 0a1.8 1.8 0 0 0-1.273.527L.528 6.503A1.8 1.8 0 0 0 0 7.775v8.45c0 .478.19.936.528 1.274l5.974 5.974A1.8 1.8 0 0 0 7.775 24h8.45a1.8 1.8 0 0 0 1.273-.527l5.975-5.974A1.8 1.8 0 0 0 24 16.225v-8.45a1.8 1.8 0 0 0-.527-1.272L17.498.527A1.8 1.8 0 0 0 16.225 0zm4.427 3c1.02 0 .958 1.108.958 1.108v6.784s-.009.218.16.218c.188 0 .175-.226.175-.226l-.002-5.63s-.05-.986.959-.986c1.01 0 .97.983.97.983v7.621s.014.158.141.158c.127 0 .944-2.122.944-2.122s.451-1.497 2.576-1.1c.038.008-.167.688-.167.688l-2.283 6.556S15.69 20.7 11.714 20.7c-5.044 0-4.808-5.407-4.814-5.405V7.562s-.016-.99.897-.99c.858 0 .849.99.849.99l.007 3.583s-.004.172.167.172c.16 0 .141-.172.141-.172l.01-5.926s-.055-1.162.966-1.162c1.04 0 .983 1.142.983 1.142v5.611s-.005.204.152.204c.168 0 .154-.206.154-.206l.01-6.693S11.18 3 12.202 3Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>AdBlock</title><path d="M7.775 0a1.8 1.8 0 0 0-1.273.527L.528 6.503A1.8 1.8 0 0 0 0 7.775v8.45c0 .478.19.936.528 1.274l5.974 5.974A1.8 1.8 0 0 0 7.775 24h8.45a1.8 1.8 0 0 0 1.273-.527l5.975-5.974A1.8 1.8 0 0 0 24 16.225v-8.45a1.8 1.8 0 0 0-.527-1.272L17.498.527A1.8 1.8 0 0 0 16.225 0zm4.427 3c1.02 0 .958 1.108.958 1.108v6.784s-.009.218.16.218c.188 0 .175-.226.175-.226l-.002-5.63s-.05-.986.959-.986c1.01 0 .97.983.97.983v7.621s.014.158.141.158c.127 0 .944-2.122.944-2.122s.451-1.497 2.576-1.1c.038.008-.167.688-.167.688l-2.283 6.556S15.69 20.7 11.714 20.7c-5.044 0-4.808-5.407-4.814-5.405V7.562s-.016-.99.897-.99c.858 0 .849.99.849.99l.007 3.583s-.004.172.167.172c.16 0 .141-.172.141-.172l.01-5.926s-.055-1.162.966-1.162c1.04 0 .983 1.142.983 1.142v5.611s-.005.204.152.204c.168 0 .154-.206.154-.206l.01-6.693S11.18 3 12.202 3Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/adblockplus.svg b/assets/lib/simple-icons/icons/adblockplus.svg
index 9ad96072..c0c0e65b 100644
--- a/assets/lib/simple-icons/icons/adblockplus.svg
+++ b/assets/lib/simple-icons/icons/adblockplus.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Adblock Plus icon</title><path d="M7.027 0L0 7.027v9.941L7.027 24h9.941L24 16.968v-9.94L16.973 0zm.202.48h9.542l6.749 6.749v9.542l-6.749 6.749H7.23L.48 16.771V7.23zm.557 1.344L1.824 7.786v8.428l5.962 5.962h8.428l5.962-5.962V7.786l-5.962-5.962zM4.396 7.68H6.38l2.285 8.41H6.917l-.447-2.002H4.238l-.446 1.997h-1.68zm5.3 0h2.491c.355-.005.71.029 1.061.096.302.058.595.173.85.34.24.164.436.385.57.644.14.269.207.605.207 1.008 0 .192-.024.384-.072.566-.048.188-.12.365-.216.528-.1.168-.23.317-.379.437-.163.13-.35.226-.547.283v.053c.523.11.917.327 1.18.643.265.317.399.759.399 1.33 0 .432-.072.802-.216 1.109-.14.302-.346.561-.605.768-.269.206-.576.36-.902.451-.36.1-.735.154-1.109.149H9.696zm6.667 0h2.669c.374-.005.749.043 1.114.134.33.082.643.236.907.452.269.225.48.513.61.84.148.345.225.772.225 1.281 0 .49-.077.917-.23 1.277-.14.34-.35.643-.624.888a2.553 2.553 0 0 1-.908.518 3.551 3.551 0 0 1-1.099.168H18.01v2.852h-1.647zM5.328 9.125c-.091.446-.182.907-.274 1.373-.09.465-.192.912-.297 1.334l-.178.773h1.555l-.168-.773a31.5 31.5 0 0 1-.302-1.34 55.623 55.623 0 0 0-.293-1.367zm6.005.029v1.92h.773c.403 0 .696-.092.878-.279.182-.187.274-.437.274-.753 0-.317-.092-.548-.279-.682-.187-.134-.475-.206-.864-.206zm6.681.038v2.54h.917c.898 0 1.344-.447 1.344-1.34 0-.437-.115-.749-.34-.931-.226-.183-.562-.269-1.004-.269zm-6.681 3.22v2.204h.931c.902 0 1.354-.384 1.354-1.147 0-.37-.11-.639-.336-.807-.226-.168-.562-.25-1.018-.25z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Adblock Plus</title><path d="M7.027 0L0 7.027v9.941L7.027 24h9.941L24 16.968v-9.94L16.973 0zm.202.48h9.542l6.749 6.749v9.542l-6.749 6.749H7.23L.48 16.771V7.23zm.557 1.344L1.824 7.786v8.428l5.962 5.962h8.428l5.962-5.962V7.786l-5.962-5.962zM4.396 7.68H6.38l2.285 8.41H6.917l-.447-2.002H4.238l-.446 1.997h-1.68zm5.3 0h2.491c.355-.005.71.029 1.061.096.302.058.595.173.85.34.24.164.436.385.57.644.14.269.207.605.207 1.008 0 .192-.024.384-.072.566-.048.188-.12.365-.216.528-.1.168-.23.317-.379.437-.163.13-.35.226-.547.283v.053c.523.11.917.327 1.18.643.265.317.399.759.399 1.33 0 .432-.072.802-.216 1.109-.14.302-.346.561-.605.768-.269.206-.576.36-.902.451-.36.1-.735.154-1.109.149H9.696zm6.667 0h2.669c.374-.005.749.043 1.114.134.33.082.643.236.907.452.269.225.48.513.61.84.148.345.225.772.225 1.281 0 .49-.077.917-.23 1.277-.14.34-.35.643-.624.888a2.553 2.553 0 0 1-.908.518 3.551 3.551 0 0 1-1.099.168H18.01v2.852h-1.647zM5.328 9.125c-.091.446-.182.907-.274 1.373-.09.465-.192.912-.297 1.334l-.178.773h1.555l-.168-.773a31.5 31.5 0 0 1-.302-1.34 55.623 55.623 0 0 0-.293-1.367zm6.005.029v1.92h.773c.403 0 .696-.092.878-.279.182-.187.274-.437.274-.753 0-.317-.092-.548-.279-.682-.187-.134-.475-.206-.864-.206zm6.681.038v2.54h.917c.898 0 1.344-.447 1.344-1.34 0-.437-.115-.749-.34-.931-.226-.183-.562-.269-1.004-.269zm-6.681 3.22v2.204h.931c.902 0 1.354-.384 1.354-1.147 0-.37-.11-.639-.336-.807-.226-.168-.562-.25-1.018-.25z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/addthis.svg b/assets/lib/simple-icons/icons/addthis.svg
index ff1c92b2..bc7ff3c0 100644
--- a/assets/lib/simple-icons/icons/addthis.svg
+++ b/assets/lib/simple-icons/icons/addthis.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>AddThis icon</title><path d="M18 13.496h-4.501v4.484h-3v-4.484H6v-2.99h4.5V6.021h3.001v4.485H18v2.99zM21 .041H3C1.348.043.008 1.379 0 3.031v17.94c.008 1.65 1.348 2.986 3 2.988h18c1.651-.002 2.991-1.338 3-2.988V3.031c-.009-1.652-1.348-2.987-3-2.99z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>AddThis</title><path d="M18 13.496h-4.501v4.484h-3v-4.484H6v-2.99h4.5V6.021h3.001v4.485H18v2.99zM21 .041H3C1.348.043.008 1.379 0 3.031v17.94c.008 1.65 1.348 2.986 3 2.988h18c1.651-.002 2.991-1.338 3-2.988V3.031c-.009-1.652-1.348-2.987-3-2.99z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/adguard.svg b/assets/lib/simple-icons/icons/adguard.svg
index 35663b1b..0c4d811b 100644
--- a/assets/lib/simple-icons/icons/adguard.svg
+++ b/assets/lib/simple-icons/icons/adguard.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>AdGuard icon</title><path d="M12 0C8.519 0 4.426.828.931 2.628l-.545.279v.616c0 3.711.071 13.613 11.101 20.169L12 24l.513-.308c11.03-6.556 11.1-16.458 11.1-20.17v-.608l-.538-.282C19.622.825 15.481 0 12 0zm0 2.012c2.978 0 6.584.763 9.576 2.197-.008 3.888-.418 11.543-9.576 17.33-9.158-5.787-9.569-13.442-9.576-17.33C5.46 2.77 9.022 2.012 12 2.012zm5.035 5.565c-.26.008-.484.173-.61.299l-5.38 5.58-2.012-2.413c-.955-1.106-2.262-.251-2.564-.05l4.677 5.43 6.385-8.648a.7.7 0 00-.496-.198z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>AdGuard</title><path d="M12 0C8.249 0 3.725.861 0 2.755 0 6.845-.051 17.037 12 24 24.051 17.037 24 6.845 24 2.755 20.275.861 15.751 0 12 0zm-.106 15.429L6.857 9.612c.331-.239 1.75-1.143 2.794.042l2.187 2.588c.009-.001 5.801-5.948 5.815-5.938.246-.22.694-.503 1.204-.101l-6.963 9.226z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/adidas.svg b/assets/lib/simple-icons/icons/adidas.svg
new file mode 100644
index 00000000..c4250a1f
--- /dev/null
+++ b/assets/lib/simple-icons/icons/adidas.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Adidas</title><path d="M11.936 17.952c0-.644.517-1.16 1.162-1.16.644 0 1.16.516 1.16 1.16a1.157 1.157 0 01-1.16 1.161 1.157 1.157 0 01-1.162-1.16m4.724 0c0-.645.517-1.162 1.161-1.162s1.161.517 1.161 1.161-.517 1.161-1.16 1.161a1.157 1.157 0 01-1.162-1.16m-10.95 0c0-.645.517-1.162 1.161-1.162s1.16.517 1.16 1.161-.516 1.161-1.16 1.161a1.157 1.157 0 01-1.161-1.16m-4.724 0c0-.645.517-1.162 1.161-1.162s1.161.517 1.161 1.161a1.157 1.157 0 01-1.161 1.161 1.157 1.157 0 01-1.16-1.16m9.55-2.052h-1.01v4.063h1.01v-4.063zM3.3 19.964h1.01v-4.063H3.3v.326a2.087 2.087 0 00-1.2-.374c-1.162 0-2.1.938-2.1 2.1 0 1.168.938 2.099 2.1 2.099.445 0 .858-.135 1.2-.374v.286zm15.674 0h1.01v-4.063h-1.01v.326a2.087 2.087 0 00-1.2-.374c-1.162 0-2.1.938-2.1 2.1a2.092 2.092 0 002.1 2.099c.445 0 .858-.135 1.2-.374v.286zm1.384-1.32c.032.82.732 1.4 1.9 1.4.955 0 1.742-.414 1.742-1.328 0-.636-.358-1.01-1.185-1.17l-.644-.126c-.414-.08-.7-.16-.7-.406 0-.27.278-.39.628-.39.51 0 .716.255.732.557h1.018c-.056-.795-.692-1.328-1.718-1.328-1.057 0-1.686.58-1.686 1.336 0 .922.748 1.073 1.392 1.193l.533.095c.382.072.549.183.549.406 0 .199-.191.397-.645.397-.66 0-.874-.342-.882-.636h-1.034zM8.024 14.517v1.71a2.087 2.087 0 00-1.2-.374c-1.162 0-2.1.938-2.1 2.1 0 1.168.938 2.099 2.1 2.099.444 0 .858-.135 1.2-.374v.286h1.01v-5.447h-1.01zm6.226 0v1.71a2.087 2.087 0 00-1.2-.374c-1.161 0-2.1.938-2.1 2.1a2.092 2.092 0 002.1 2.099c.445 0 .858-.135 1.2-.374v.286h1.01v-5.447h-1.01zm-11.626-1.2l.684 1.2h4.716l-1.869-3.229-3.53 2.028zm7.913 2.21v-1.01h3.713l-3.96-6.855L6.751 9.69l2.776 4.827v1.01h1.01zm5.217-1.01h4.723L14.37 3.948l-3.531 2.036 4.915 8.533z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/adobe.svg b/assets/lib/simple-icons/icons/adobe.svg
index fe233b5a..c2fc4355 100644
--- a/assets/lib/simple-icons/icons/adobe.svg
+++ b/assets/lib/simple-icons/icons/adobe.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Adobe icon</title><path d="M13.966 22.624l-1.69-4.281H8.122l3.892-9.144 5.662 13.425zM8.884 1.376H0v21.248zm15.116 0h-8.884L24 22.624Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Adobe</title><path d="M13.966 22.624l-1.69-4.281H8.122l3.892-9.144 5.662 13.425zM8.884 1.376H0v21.248zm15.116 0h-8.884L24 22.624Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/adobeacrobatreader.svg b/assets/lib/simple-icons/icons/adobeacrobatreader.svg
index 86dfb50a..2b0b1138 100644
--- a/assets/lib/simple-icons/icons/adobeacrobatreader.svg
+++ b/assets/lib/simple-icons/icons/adobeacrobatreader.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Adobe Acrobat Reader icon</title><path d="M23.63 15.3c-.71-.745-2.166-1.17-4.224-1.17-1.1 0-2.377.106-3.761.354a19.443 19.443 0 0 1-2.307-2.661c-.532-.71-.994-1.49-1.42-2.236.817-2.484 1.207-4.507 1.207-5.962 0-1.632-.603-3.336-2.342-3.336-.532 0-1.065.32-1.349.781-.78 1.384-.425 4.4.923 7.381a60.277 60.277 0 0 1-1.703 4.507c-.568 1.349-1.207 2.733-1.917 4.01C2.834 18.53.314 20.34.03 21.758c-.106.533.071 1.03.462 1.42.142.107.639.533 1.49.533 2.59 0 5.323-4.188 6.707-6.707 1.065-.355 2.13-.71 3.194-.994a34.963 34.963 0 0 1 3.407-.745c2.732 2.448 5.145 2.839 6.352 2.839 1.49 0 2.023-.604 2.2-1.1.32-.64.106-1.349-.213-1.704zm-1.42 1.03c-.107.532-.64.887-1.384.887-.213 0-.39-.036-.604-.071-1.348-.32-2.626-.994-3.903-2.059a17.717 17.717 0 0 1 2.98-.248c.746 0 1.385.035 1.81.142.497.106 1.278.426 1.1 1.348zm-7.524-1.668a38.01 38.01 0 0 0-2.945.674 39.68 39.68 0 0 0-2.52.745 40.05 40.05 0 0 0 1.207-2.555c.426-.994.78-2.023 1.136-2.981.354.603.745 1.207 1.135 1.739a50.127 50.127 0 0 0 1.987 2.378zM10.038 1.46a.768.768 0 0 1 .674-.425c.745 0 .887.851.887 1.526 0 1.135-.355 2.874-.958 4.861-1.03-2.768-1.1-5.074-.603-5.962zM6.134 17.997c-1.81 2.981-3.549 4.826-4.613 4.826a.872.872 0 0 1-.532-.177c-.213-.213-.32-.461-.249-.745.213-1.065 2.271-2.555 5.394-3.904Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Adobe Acrobat Reader</title><path d="M23.63 15.3c-.71-.745-2.166-1.17-4.224-1.17-1.1 0-2.377.106-3.761.354a19.443 19.443 0 0 1-2.307-2.661c-.532-.71-.994-1.49-1.42-2.236.817-2.484 1.207-4.507 1.207-5.962 0-1.632-.603-3.336-2.342-3.336-.532 0-1.065.32-1.349.781-.78 1.384-.425 4.4.923 7.381a60.277 60.277 0 0 1-1.703 4.507c-.568 1.349-1.207 2.733-1.917 4.01C2.834 18.53.314 20.34.03 21.758c-.106.533.071 1.03.462 1.42.142.107.639.533 1.49.533 2.59 0 5.323-4.188 6.707-6.707 1.065-.355 2.13-.71 3.194-.994a34.963 34.963 0 0 1 3.407-.745c2.732 2.448 5.145 2.839 6.352 2.839 1.49 0 2.023-.604 2.2-1.1.32-.64.106-1.349-.213-1.704zm-1.42 1.03c-.107.532-.64.887-1.384.887-.213 0-.39-.036-.604-.071-1.348-.32-2.626-.994-3.903-2.059a17.717 17.717 0 0 1 2.98-.248c.746 0 1.385.035 1.81.142.497.106 1.278.426 1.1 1.348zm-7.524-1.668a38.01 38.01 0 0 0-2.945.674 39.68 39.68 0 0 0-2.52.745 40.05 40.05 0 0 0 1.207-2.555c.426-.994.78-2.023 1.136-2.981.354.603.745 1.207 1.135 1.739a50.127 50.127 0 0 0 1.987 2.378zM10.038 1.46a.768.768 0 0 1 .674-.425c.745 0 .887.851.887 1.526 0 1.135-.355 2.874-.958 4.861-1.03-2.768-1.1-5.074-.603-5.962zM6.134 17.997c-1.81 2.981-3.549 4.826-4.613 4.826a.872.872 0 0 1-.532-.177c-.213-.213-.32-.461-.249-.745.213-1.065 2.271-2.555 5.394-3.904Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/adobeaftereffects.svg b/assets/lib/simple-icons/icons/adobeaftereffects.svg
index 50499626..381da211 100644
--- a/assets/lib/simple-icons/icons/adobeaftereffects.svg
+++ b/assets/lib/simple-icons/icons/adobeaftereffects.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Adobe After Effects icon</title><path d="M0 .3v23.4h24V.3H0zm1 1h22v21.4H1V1.3zm5.784 12.25l-.792 2.986c-.017.083-.05.113-.148.113H4.376c-.1 0-.116-.035-.1-.15l2.84-9.933c.05-.18.082-.325.098-.82 0-.066.033-.1.083-.1h2.096c.066 0 .1.018.116.1l3.183 10.77c.016.082 0 .13-.083.13h-1.65c-.082 0-.13-.03-.147-.096l-.825-3.002h-3.2zm2.806-1.624c-.28-1.106-.96-3.53-1.206-4.7h-.016c-.214 1.17-.756 3.148-1.17 4.7H9.59zm5.36 1.024c.017 1.353.66 2.26 2.178 2.26.594 0 1.103-.078 1.63-.31.067-.032.117-.015.117.067v1.254c0 .1-.033.15-.1.2-.527.264-1.184.38-2.01.38-2.64 0-3.63-1.947-3.63-4.125 0-2.36 1.222-4.29 3.367-4.29 2.178 0 2.937 1.833 2.937 3.317 0 .48-.035.876-.085 1.057-.017.082-.05.11-.132.127-.198.033-.792.066-1.667.066H14.95zm2.03-1.375c.512 0 .693 0 .742-.016 0-.068.017-.125.017-.174 0-.545-.266-1.544-1.306-1.544-.957 0-1.37.842-1.468 1.732h2.013z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Adobe After Effects</title><path d="M8.54 10.73c-.1-.31-.19-.61-.29-.92s-.19-.6-.27-.89c-.08-.28-.15-.54-.22-.78h-.02c-.09.43-.2.86-.34 1.29-.15.48-.3.98-.46 1.48-.13.51-.29.98-.44 1.4h2.54c-.06-.21-.14-.46-.23-.72-.09-.27-.18-.56-.27-.86zm8.58-.29c-.55-.03-1.07.26-1.33.76-.12.23-.19.47-.22.72h2.109c.26 0 .45 0 .57-.01.08-.01.16-.03.23-.08v-.1c0-.13-.021-.25-.061-.37-.178-.56-.708-.94-1.298-.92zM19.75.3H4.25C1.9.3 0 2.2 0 4.55v14.9c0 2.35 1.9 4.25 4.25 4.25h15.5c2.35 0 4.25-1.9 4.25-4.25V4.55C24 2.2 22.1.3 19.75.3zm-7.04 16.511h-2.09c-.07.01-.14-.041-.16-.11l-.82-2.4H5.92l-.76 2.36c-.02.09-.1.15-.19.14H3.09c-.11 0-.14-.06-.11-.18L6.2 7.39c.03-.1.06-.19.1-.31.04-.21.06-.43.06-.65-.01-.05.03-.1.08-.11h2.59c.07 0 .12.03.13.08l3.65 10.25c.03.11.001.161-.1.161zm7.851-3.991c-.021.189-.031.33-.041.42-.01.07-.069.13-.14.13-.06 0-.17.01-.33.021-.159.02-.35.029-.579.029-.23 0-.471-.04-.73-.04h-3.17c.039.31.14.62.31.89.181.271.431.48.729.601.4.17.841.26 1.281.25.35-.011.699-.04 1.039-.11.311-.039.61-.119.891-.23.05-.039.08-.02.08.08v1.531c0 .039-.01.08-.021.119-.021.03-.04.051-.069.07-.32.14-.65.24-1 .3-.471.09-.94.13-1.42.12-.761 0-1.4-.12-1.92-.35-.49-.211-.921-.541-1.261-.95-.319-.39-.55-.83-.69-1.31-.14-.471-.209-.961-.209-1.461 0-.539.08-1.07.25-1.59.16-.5.41-.96.75-1.37.33-.4.739-.72 1.209-.95.471-.23 1.03-.31 1.67-.31.531-.01 1.06.09 1.55.31.41.18.77.45 1.05.8.26.34.47.72.601 1.14.129.4.189.81.189 1.22 0 .24-.01.45-.019.64z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/adobeaudition.svg b/assets/lib/simple-icons/icons/adobeaudition.svg
index ffb71627..a6daf2df 100644
--- a/assets/lib/simple-icons/icons/adobeaudition.svg
+++ b/assets/lib/simple-icons/icons/adobeaudition.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Adobe Audition icon</title><path d="M6.786 13.55l-.792 3c-.017.083-.05.1-.149.1H4.377c-.1 0-.116-.033-.1-.148l2.839-9.943c.049-.181.082-.315.1-.81 0-.066.033-.1.082-.1h2.1c.066 0 .1.017.115.1l3.185 10.769c.016.083 0 .132-.083.132H10.96c-.082 0-.132-.021-.148-.087l-.825-3.013zm2.788-1.625c-.28-1.1-.94-3.529-1.188-4.7H8.37c-.215 1.171-.743 3.149-1.155 4.7zm9.876 3.049c0 .115.017.462.05 1.023a.1.1 0 0 1-.092.116c-.874.33-1.825.676-3.046.676-1.5 0-2.937-.577-2.937-2.887v-5.27c0-.082.033-.132.116-.132h1.569c.082 0 .115.05.115.132v5.055c0 .974.387 1.5 1.41 1.5a2.794 2.794 0 0 0 1.015-.182V8.632c0-.082.033-.132.116-.132h1.569c.1 0 .115.05.115.132zM0 .3v23.4h24V.3zm1 1h22v21.4H1Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Adobe Audition</title><path d="M19.75.3H4.25C1.9.3 0 2.2 0 4.55v14.9c0 2.35 1.9 4.25 4.25 4.25h15.5c2.35 0 4.25-1.9 4.25-4.25V4.55C24 2.2 22.1.3 19.75.3zM12.5 16.8h-2.09c-.07.011-.14-.04-.16-.11l-.82-2.39H5.71l-.76 2.36c-.02.09-.1.15-.19.14H2.88c-.11 0-.14-.06-.11-.18l3.22-9.24c.03-.1.06-.21.1-.33.05-.21.08-.42.08-.64-.01-.05.03-.1.08-.11h2.59c.07 0 .12.03.13.08l3.63 10.261c.03.109 0 .159-.1.159zm7.75.011h-1.721c-.079.01-.159-.041-.189-.11-.02-.08-.04-.171-.061-.25-.02-.07-.02-.14-.02-.21-.32.289-.71.5-1.13.619-.36.101-.739.15-1.11.15-.369 0-.74-.05-1.09-.17-.32-.109-.619-.3-.85-.55-.26-.28-.45-.61-.561-.97-.14-.461-.209-.94-.199-1.42V8.94c-.01-.06.029-.12.1-.13h1.939c.061-.01.121.03.131.1v4.731c0 .439.1.789.289 1.039.191.25.58.381 1.031.381.229 0 .459-.041.68-.121.23-.08.439-.189.63-.33V8.92c0-.07.05-.11.14-.11h1.91c.051-.01.109.03.109.08v6.16c0 .271 0 .511.011.72.01.211.021.391.03.551.02.16.029.25.039.359.012.09-.028.131-.108.131zM8.33 10.73c-.1-.31-.19-.61-.29-.92s-.19-.6-.27-.89c-.08-.28-.15-.54-.22-.78h-.02c-.09.43-.2.86-.34 1.29-.15.48-.3.98-.46 1.48-.13.51-.29.98-.44 1.4h2.54c-.06-.21-.14-.46-.23-.72-.09-.27-.18-.56-.27-.86z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/adobecreativecloud.svg b/assets/lib/simple-icons/icons/adobecreativecloud.svg
index cbeebe42..99b17bdc 100644
--- a/assets/lib/simple-icons/icons/adobecreativecloud.svg
+++ b/assets/lib/simple-icons/icons/adobecreativecloud.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Adobe Creative Cloud icon</title><path d="M14.782 3.153c-.231.02-.472.04-.703.07a8.453 8.453 0 0 0-2.832.834 8.951 8.951 0 0 0-2.46 1.777c-.03.04-.09.06-.141.05a7.44 7.44 0 0 0-1.496-.07 7.424 7.424 0 0 0-2.932.763c-1.768.884-3.013 2.26-3.736 4.108a7.089 7.089 0 0 0-.462 2.139c0 .05-.01.09-.02.13v.773c.02.201.05.392.07.593.1.813.332 1.596.703 2.33.824 1.646 2.089 2.851 3.786 3.594a7.127 7.127 0 0 0 2.45.593c.032 0 .06.004.086.01h8.576c.183-.017.362-.035.547-.06a8.344 8.344 0 0 0 2.811-.834 8.836 8.836 0 0 0 3.646-3.304 8.187 8.187 0 0 0 1.184-3.093c.05-.34.08-.692.121-1.034 0-.05.01-.09.02-.13v-.794c-.02-.23-.05-.452-.05-.662a8.345 8.345 0 0 0-.834-2.812 8.952 8.952 0 0 0-3.324-3.645 8.245 8.245 0 0 0-3.072-1.175c-.362-.06-.713-.09-1.075-.13-.05 0-.09-.01-.14-.02zm.369 1.693c2.126.005 3.93.826 5.395 2.455a6.93 6.93 0 0 1 1.616 3.323c.15.764.181 1.547.07 2.32-.19 1.346-.702 2.55-1.576 3.605a7.082 7.082 0 0 1-3.997 2.45 7.297 7.297 0 0 1-2.56.1c-1.095-.14-2.099-.501-3.003-1.154a5.2 5.2 0 0 1-.672-.573c-1.226-1.205-2.44-2.42-3.666-3.625-.301-.3-.321-.632-.18-.934a.822.822 0 0 1 .863-.472c.21.02.372.141.522.292 1.105 1.114 2.2 2.209 3.304 3.324a5.263 5.263 0 0 0 3.093 1.536c1.948.261 3.605-.341 4.92-1.798.713-.793 1.145-1.747 1.326-2.811.26-1.587-.11-3.013-1.095-4.268-.873-1.115-2.018-1.808-3.404-2.059-1.416-.25-2.751.02-3.966.794-.03.02-.1.03-.131.01a9.04 9.04 0 0 0-1.406-.854s-.01-.01-.02-.03a6.603 6.603 0 0 1 1.255-.823 6.646 6.646 0 0 1 2.641-.784 8.45 8.45 0 0 1 .67-.024zM7.546 7.509c1.455-.024 2.791.525 3.982 1.63.854.802 1.637 1.636 2.46 2.47.231.23.281.522.171.833-.11.311-.362.462-.683.512a.722.722 0 0 1-.632-.23c-.784-.784-1.567-1.557-2.34-2.35-.633-.653-1.386-1.025-2.27-1.186-1.958-.351-3.936.784-4.639 2.641-.904 2.36.522 5.031 2.982 5.594.482.11.995.11 1.497.1.14-.01.22.04.32.13.483.473.995.945 1.497 1.416.03.03.07.06.1.09-.06 0-.1.01-.14.01h-2.3a5.833 5.833 0 0 1-5.693-4.568c-.653-2.942 1.034-5.925 3.926-6.798a6.33 6.33 0 0 1 1.762-.294Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Adobe Creative Cloud</title><path d="M14.782 3.153c-.231.02-.472.04-.703.07a8.453 8.453 0 0 0-2.832.834 8.951 8.951 0 0 0-2.46 1.777c-.03.04-.09.06-.141.05a7.44 7.44 0 0 0-1.496-.07 7.424 7.424 0 0 0-2.932.763c-1.768.884-3.013 2.26-3.736 4.108a7.089 7.089 0 0 0-.462 2.139c0 .05-.01.09-.02.13v.773c.02.201.05.392.07.593.1.813.332 1.596.703 2.33.824 1.646 2.089 2.851 3.786 3.594a7.127 7.127 0 0 0 2.45.593c.032 0 .06.004.086.01h8.576c.183-.017.362-.035.547-.06a8.344 8.344 0 0 0 2.811-.834 8.836 8.836 0 0 0 3.646-3.304 8.187 8.187 0 0 0 1.184-3.093c.05-.34.08-.692.121-1.034 0-.05.01-.09.02-.13v-.794c-.02-.23-.05-.452-.05-.662a8.345 8.345 0 0 0-.834-2.812 8.952 8.952 0 0 0-3.324-3.645 8.245 8.245 0 0 0-3.072-1.175c-.362-.06-.713-.09-1.075-.13-.05 0-.09-.01-.14-.02zm.369 1.693c2.126.005 3.93.826 5.395 2.455a6.93 6.93 0 0 1 1.616 3.323c.15.764.181 1.547.07 2.32-.19 1.346-.702 2.55-1.576 3.605a7.082 7.082 0 0 1-3.997 2.45 7.297 7.297 0 0 1-2.56.1c-1.095-.14-2.099-.501-3.003-1.154a5.2 5.2 0 0 1-.672-.573c-1.226-1.205-2.44-2.42-3.666-3.625-.301-.3-.321-.632-.18-.934a.822.822 0 0 1 .863-.472c.21.02.372.141.522.292 1.105 1.114 2.2 2.209 3.304 3.324a5.263 5.263 0 0 0 3.093 1.536c1.948.261 3.605-.341 4.92-1.798.713-.793 1.145-1.747 1.326-2.811.26-1.587-.11-3.013-1.095-4.268-.873-1.115-2.018-1.808-3.404-2.059-1.416-.25-2.751.02-3.966.794-.03.02-.1.03-.131.01a9.04 9.04 0 0 0-1.406-.854s-.01-.01-.02-.03a6.603 6.603 0 0 1 1.255-.823 6.646 6.646 0 0 1 2.641-.784 8.45 8.45 0 0 1 .67-.024zM7.546 7.509c1.455-.024 2.791.525 3.982 1.63.854.802 1.637 1.636 2.46 2.47.231.23.281.522.171.833-.11.311-.362.462-.683.512a.722.722 0 0 1-.632-.23c-.784-.784-1.567-1.557-2.34-2.35-.633-.653-1.386-1.025-2.27-1.186-1.958-.351-3.936.784-4.639 2.641-.904 2.36.522 5.031 2.982 5.594.482.11.995.11 1.497.1.14-.01.22.04.32.13.483.473.995.945 1.497 1.416.03.03.07.06.1.09-.06 0-.1.01-.14.01h-2.3a5.833 5.833 0 0 1-5.693-4.568c-.653-2.942 1.034-5.925 3.926-6.798a6.33 6.33 0 0 1 1.762-.294Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/adobedreamweaver.svg b/assets/lib/simple-icons/icons/adobedreamweaver.svg
index fb4ac431..3d329a92 100644
--- a/assets/lib/simple-icons/icons/adobedreamweaver.svg
+++ b/assets/lib/simple-icons/icons/adobedreamweaver.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Adobe Dreamweaver icon</title><path d="M0 .3v23.4h24V.3H0zm1 1h22v21.4H1V1.3zm2.125 4.51c0-.084.017-.117.116-.133.38-.017 1.47-.05 2.597-.05 3.35 0 5.016 2.162 5.016 5.33 0 4.405-2.89 5.74-5.115 5.74-.842 0-2.064-.016-2.51-.032-.065 0-.098-.05-.098-.132V5.808zm1.8 9.27c.28.018.528.034.842.034 1.848 0 3.217-1.304 3.234-4.108.02-2.74-1.4-3.795-3.163-3.795-.347 0-.627.02-.907.038v7.837zm12.688 1.57c-.116 0-.148-.045-.165-.143-.495-2.755-.907-4.703-1.09-6.056h-.016c-.214 1.226-.61 3.257-1.27 6.078-.033.1-.066.127-.148.127h-1.617c-.116 0-.148-.016-.18-.115L11.36 8.66c-.016-.067.018-.133.117-.133h1.617c.066 0 .116.023.132.09.627 3.546.89 5.384.99 6.11h.066c.116-.858.462-2.646 1.204-6.078.033-.1.033-.124.132-.124h1.7c.082 0 .098.04.115.123.578 3.25.957 5.3 1.056 6.126h.05c.16-1.056.38-2.48 1.084-6.144.017-.066.033-.106.116-.106h1.52c.066 0 .116.033.083.116l-1.963 7.894c-.015.083-.03.116-.146.116h-1.617z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Adobe Dreamweaver</title><path d="M6.69 8.4c-.43-.13-.87-.2-1.32-.19-.2 0-.37 0-.51.01-.14 0-.3.01-.47.02v6.67c.11 0 .21 0 .31.01.09.01.19.01.28.02.1.011.21.011.33.011.46.01.92-.07 1.36-.229.4-.141.75-.371 1.05-.681.3-.319.53-.7.67-1.11.16-.479.24-.99.24-1.5.01-.48-.07-.96-.23-1.41C8.12 9.24 7.49 8.64 6.69 8.4zM19.75.3H4.25C1.9.3 0 2.2 0 4.55v14.9c0 2.35 1.9 4.25 4.25 4.25h15.5c2.35 0 4.25-1.9 4.25-4.25V4.55C24 2.2 22.1.3 19.75.3zm-9.24 13.13c-.19.561-.48 1.08-.86 1.541-.35.42-.77.779-1.23 1.069-.45.28-.95.489-1.47.63-.5.13-1.02.2-1.54.2H4.28c-.4 0-.78 0-1.12-.011-.35-.01-.61-.01-.78-.02-.07 0-.1-.061-.1-.16V6.44c-.01-.06.04-.12.1-.13h.01c.15-.01.38-.02.67-.02.3-.01.64-.01 1.04-.02s.82-.01 1.27-.01c1.22 0 2.24.22 3.04.66.77.41 1.4 1.04 1.81 1.81.4.77.6 1.65.6 2.65.01.7-.09 1.39-.31 2.05zm9.42 3.24c-.01.04-.029.08-.06.109 0 .051-.04.07-.091.061H17.91c-.04.01-.09-.01-.12-.04-.03-.04-.05-.079-.06-.12-.19-.8-.351-1.52-.48-2.13-.13-.62-.24-1.14-.32-1.569-.08-.431-.15-.791-.209-1.09-.051-.3-.101-.55-.131-.76h-.01c-.1.44-.189.87-.28 1.28-.079.41-.18.83-.28 1.25-.1.42-.209.88-.34 1.38-.119.5-.26 1.05-.41 1.64-.02.11-.069.16-.16.16h-1.87c-.051.01-.1-.01-.141-.029-.029-.031-.05-.07-.07-.11L11.08 8.97c-.03-.09.01-.13.12-.13h1.89c.09 0 .141.03.15.1.199.88.369 1.64.5 2.28.13.64.24 1.18.31 1.629.07.45.14.82.19 1.101.05.28.09.521.119.7h.031c.02-.16.039-.311.069-.471.04-.189.09-.439.149-.75.061-.31.131-.67.221-1.09s.189-.9.311-1.46c.109-.55.27-1.18.459-1.89 0-.04.021-.09.041-.13.01-.02.049-.03.109-.03h1.96c.06 0 .09.04.101.11.17.73.31 1.37.43 1.92.109.55.21 1.04.3 1.47.08.42.149.79.19 1.09.039.311.09.561.129.77.031.17.061.34.07.511h.03c.05-.2.09-.44.13-.71.04-.271.09-.57.16-.91.061-.34.13-.71.21-1.12.069-.41.17-.86.28-1.37.109-.5.23-1.05.369-1.64.021-.09.061-.13.131-.13h1.75c.09 0 .119.05.1.14l-2.159 7.71z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/adobefonts.svg b/assets/lib/simple-icons/icons/adobefonts.svg
index ce0b9070..bbd1da89 100644
--- a/assets/lib/simple-icons/icons/adobefonts.svg
+++ b/assets/lib/simple-icons/icons/adobefonts.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Adobe Fonts icon</title><path d="M13.272 10.083c-.531 1.828-.977 3.588-1.508 5.31a9.623 9.623 0 0 1-1.052 2.488 2.952 2.952 0 0 1-2.351 1.294c-.73 0-1.45-.35-1.45-1.138a1.007 1.007 0 0 1 .872-.943.44.44 0 0 1 .398.233c.36.662.701 1.05.863 1.05.16 0 .285-.224.55-1.177l1.887-7.117h-1.347a.699.699 0 0 1 .218-.768h1.346a12.251 12.251 0 0 1 .996-2.49c.644-1.195 1.677-2.139 3.1-2.139 1.08 0 1.526.535 1.526 1.206a1.109 1.109 0 0 1-.92 1.089c-.227 0-.34-.175-.417-.429-.246-.943-.56-1.225-.749-1.225-.19 0-.476.35-.787 1.09a18.332 18.332 0 0 0-.948 2.888h1.64a.66.66 0 0 1-.227.768h-1.64zM0 .553v22.893h24V.554H0zm1.12.953h21.928v20.988H1.12Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Adobe Fonts</title><path d="M19.764.375H4.236A4.236 4.236 0 0 0 0 4.611V19.39a4.236 4.236 0 0 0 4.236 4.236h15.528A4.236 4.236 0 0 0 24 19.389V4.61A4.236 4.236 0 0 0 19.764.375zm-3.25 6.536c-.242 0-.364-.181-.44-.439-.257-.97-.59-1.257-.787-1.257s-.5.364-.833 1.12c-.417.97-.754 1.97-1.007 2.994l1.732-.002c.11.28.01.6-.238.772H13.23c-.56 1.878-1.031 3.688-1.592 5.46a9.676 9.676 0 0 1-1.105 2.56 3.144 3.144 0 0 1-2.484 1.332c-.773 0-1.53-.363-1.53-1.166.036-.503.424-.91.924-.97a.46.46 0 0 1 .424.243c.379.682.742 1.075.909 1.075.166 0 .303-.227.575-1.211l1.988-7.322-1.43-.002a.685.685 0 0 1 .227-.774h1.423c.257-.895.609-1.76 1.048-2.58a3.786 3.786 0 0 1 3.272-2.195c1.136 0 1.605.545 1.605 1.242a1.144 1.144 0 0 1-.97 1.12z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/adobeillustrator.svg b/assets/lib/simple-icons/icons/adobeillustrator.svg
index 5a6b2eb6..ff824630 100644
--- a/assets/lib/simple-icons/icons/adobeillustrator.svg
+++ b/assets/lib/simple-icons/icons/adobeillustrator.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Adobe Illustrator icon</title><path d="M0 .3v23.4h24V.3H0zm1 1h22v21.4H1V1.3zm7.325 12.25l-.792 2.998c-.017.083-.05.102-.148.102H5.917c-.1 0-.115-.033-.1-.148l2.84-9.945c.05-.18.082-.338.098-.833 0-.066.033-.1.083-.1h2.096c.066 0 .1.018.116.1l3.185 10.794c.017.083 0 .132-.083.132h-1.65c-.083 0-.132-.02-.148-.086l-.825-3.015H8.322zm2.788-1.625c-.28-1.106-.94-3.528-1.188-4.7h-.017c-.214 1.17-.742 3.15-1.155 4.7h2.36zm4.5-5.558c0-.643.445-1.023 1.023-1.023.61 0 1.023.412 1.023 1.023 0 .66-.43 1.023-1.04 1.023-.6 0-1.01-.363-1.01-1.023zm.112 2.274c0-.08.033-.11.116-.11h1.57c.088 0 .12.033.12.116v7.895c0 .083-.016.116-.115.116h-1.55c-.1 0-.133-.05-.133-.13V8.64z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Adobe Illustrator</title><path d="M10.53 10.73c-.1-.31-.19-.61-.29-.92-.1-.31-.19-.6-.27-.89-.08-.28-.15-.54-.22-.78h-.02c-.09.43-.2.86-.34 1.29-.15.48-.3.98-.46 1.48-.14.51-.29.98-.44 1.4h2.54c-.06-.211-.14-.46-.23-.721-.09-.269-.18-.559-.27-.859zM19.75.3H4.25C1.9.3 0 2.2 0 4.55v14.9c0 2.35 1.9 4.25 4.25 4.25h15.5c2.35 0 4.25-1.9 4.25-4.25V4.55C24 2.2 22.1.3 19.75.3zM14.7 16.83h-2.091c-.069.01-.139-.04-.159-.11l-.82-2.38H7.91l-.76 2.35c-.02.09-.1.15-.19.141H5.08c-.11 0-.14-.061-.11-.18L8.19 7.38c.03-.1.06-.21.1-.33.04-.21.06-.43.06-.65-.01-.05.03-.1.08-.11h2.59c.08 0 .12.03.13.08l3.65 10.3c.03.109 0 .16-.1.16zm3.4-.15c0 .11-.039.16-.129.16H16.01c-.1 0-.15-.061-.15-.16v-7.7c0-.1.041-.14.131-.14h1.98c.09 0 .129.05.129.14v7.7zm-.209-9.03c-.231.24-.571.37-.911.35-.33.01-.65-.12-.891-.35-.23-.25-.35-.58-.34-.92-.01-.34.12-.66.359-.89.242-.23.562-.35.892-.35.391 0 .689.12.91.35.22.24.34.56.33.89.01.34-.11.67-.349.92z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/adobeindesign.svg b/assets/lib/simple-icons/icons/adobeindesign.svg
index 6fda44be..848571f6 100644
--- a/assets/lib/simple-icons/icons/adobeindesign.svg
+++ b/assets/lib/simple-icons/icons/adobeindesign.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Adobe InDesign icon</title><path d="M0 .3v23.4h24V.3H0zm1 1h22v21.4H1V1.3zm7.775 15.218c0 .1-.017.132-.132.132H7.107c-.1 0-.132-.05-.132-.132V5.782c0-.1.05-.132.132-.132H8.66c.082 0 .115.033.115.116v10.752zm1.77-3.872c0-2.393 1.578-4.257 4.102-4.257.214 0 .33 0 .528.015V5.75c0-.066.05-.1.1-.1H16.9c.084 0 .1.034.1.084v9.355c0 .28 0 .625.05 1.004 0 .066-.02.083-.087.116-.858.413-1.766.595-2.624.595-2.213 0-3.797-1.37-3.797-4.158zm4.63-2.624c-.148-.066-.347-.1-.594-.1-1.285 0-2.187.99-2.187 2.64 0 1.882.918 2.64 2.073 2.64.247 0 .512-.032.71-.115v-5.065z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Adobe InDesign</title><path d="M4.25.3C1.9.3 0 2.2 0 4.55v14.9c0 2.35 1.9 4.25 4.25 4.25h15.5c2.35 0 4.25-1.9 4.25-4.25V4.55C24 2.2 22.1.3 19.75.3zm11.31 5.13h2.03c.05-.01.09.03.1.07v9.54c0 .18.01.38.02.6.02.21.03.41.04.58 0 .07-.03.13-.1.16-.52.22-1.07.38-1.63.48-.5.09-1.02.14-1.54.14-.74.01-1.48-.14-2.15-.45-.63-.29-1.15-.77-1.51-1.36-.37-.61-.55-1.37-.55-2.28-.01-.74.18-1.47.55-2.11.38-.65.93-1.19 1.59-1.55.7-.39 1.54-.58 2.53-.58.05 0 .12 0 .21.01s.19.01.31.02V5.54c0-.07.03-.11.1-.11zm-8.93.86h1.95c.06-.01.12.03.13.1.01.01.01.02.01.03v10.26c0 .11-.05.16-.14.16H6.62c-.09 0-.13-.05-.13-.16V6.42c0-.09.05-.13.14-.13zm8.23 4.24c-.39 0-.78.08-1.13.26-.34.17-.63.42-.85.74-.22.32-.33.75-.33 1.27-.01.35.05.7.17 1.03.1.27.25.51.45.71.19.18.42.32.68.4.27.09.55.13.83.13.15 0 .29-.01.42-.02.13.01.25-.01.36-.05v-4.4c-.09-.02-.18-.04-.27-.05-.11-.01-.22-.02-.33-.02z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/adobelightroom.svg b/assets/lib/simple-icons/icons/adobelightroom.svg
new file mode 100644
index 00000000..ecc79272
--- /dev/null
+++ b/assets/lib/simple-icons/icons/adobelightroom.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Adobe Lightroom</title><path d="M19.75.3H4.25C1.9.3 0 2.2 0 4.55v14.9c0 2.35 1.9 4.25 4.25 4.25h15.5c2.35 0 4.25-1.9 4.25-4.25V4.55C24 2.2 22.1.3 19.75.3zm-6.99 16.389c0 .051-.029.09-.06.121-.03.02-.06.029-.101.029H6.26c-.11 0-.16-.061-.16-.18V6.44c-.01-.07.04-.13.11-.14h2c.05-.01.11.03.11.08v8.43h4.62c.101 0 .131.049.11.14l-.29 1.739zm6.25-7.859v1.95c0 .08-.05.11-.16.11-.649-.04-1.3.08-1.89.34-.2.09-.39.21-.54.37v5.1c0 .1-.04.14-.13.14h-1.95c-.08.01-.15-.04-.16-.119V11.14c0-.24 0-.49-.01-.75s-.01-.52-.02-.78c-.01-.22-.03-.44-.061-.66-.01-.05.02-.1.07-.11.01-.01.02-.01.04 0h1.75c.1 0 .18.07.21.16.04.07.07.15.08.23.02.1.039.21.05.31.01.11.021.23.021.36.299-.35.66-.64 1.069-.86.46-.25.97-.37 1.49-.36.069-.01.13.04.14.11.001.01.001.02.001.04z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/adobelightroomcc.svg b/assets/lib/simple-icons/icons/adobelightroomcc.svg
deleted file mode 100644
index 7a07ffa6..00000000
--- a/assets/lib/simple-icons/icons/adobelightroomcc.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Adobe Lightroom CC icon</title><path d="M19.75.3H4.25C1.9.3 0 2.2 0 4.55v14.9c0 2.35 1.9 4.25 4.25 4.25h15.5c2.35 0 4.25-1.9 4.25-4.25V4.55C24 2.2 22.1.3 19.75.3zm3.24 18.76a3.623 3.623 0 0 1-3.62 3.64H4.63c-2 0-3.63-1.63-3.63-3.64V4.94C1 2.93 2.63 1.3 4.63 1.3h14.73a3.63 3.63 0 0 1 3.63 3.63v14.13zM6.65 16.63c-.12 0-.15-.05-.15-.15V5.73c0-.08.03-.13.12-.13H8.2c.08 0 .1.03.1.12v9.26h4.12c.08 0 .11.03.09.12l-.25 1.42c-.02.08-.07.12-.15.12H6.65v-.01zm7.5-6.48c0-.12 0-.41-.05-.97 0-.08.02-.1.08-.13.61-.25 2.06-.69 3.68-.69.08 0 .12.02.12.1V9.9c0 .08-.03.1-.12.1-.63-.03-1.56.05-1.91.2v6.31c0 .08-.03.12-.12.12h-1.57c-.08 0-.12-.03-.12-.12v-6.36h.01z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/adobelightroomclassic.svg b/assets/lib/simple-icons/icons/adobelightroomclassic.svg
index bb5a7b49..66765c5d 100644
--- a/assets/lib/simple-icons/icons/adobelightroomclassic.svg
+++ b/assets/lib/simple-icons/icons/adobelightroomclassic.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Adobe Lightroom Classic icon</title><path d="M6.649 16.625c-.116 0-.149-.05-.149-.148V5.732c0-.082.033-.132.116-.132H8.2c.083 0 .1.033.1.115v9.26h4.125c.083 0 .106.033.09.115l-.248 1.419a.131.131 0 0 1-.148.116zm7.4-6.476c0-.116 0-.413-.049-.974 0-.082.018-.1.084-.132a10.556 10.556 0 0 1 3.676-.693c.082 0 .115.017.115.1V9.9c0 .083-.033.1-.115.1-.627-.033-1.563.05-1.91.2v6.311c0 .083-.033.116-.115.116h-1.569c-.083 0-.116-.033-.116-.116zM0 .3v23.4h24V.3zm1 1h22v21.4H1Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Adobe Lightroom Classic</title><path d="M19.75.3H4.25C1.9.3 0 2.2 0 4.55v14.9c0 2.35 1.9 4.25 4.25 4.25h15.5c2.35 0 4.25-1.9 4.25-4.25V4.55C24 2.2 22.1.3 19.75.3zM8.57 16.689c-.01.061-.03.101-.06.121-.03.02-.06.029-.09.029H2.71c-.1 0-.14-.061-.14-.18V6.44c0-.1.04-.14.13-.14h1.77c.07 0 .1.04.1.11v8.4h4.16c.09 0 .12.049.1.14l-.26 1.739zm5.6-5.919c0 .08-.05.11-.141.11-.319-.02-.639 0-.949.07-.26.06-.51.15-.75.27-.18.09-.35.22-.49.37v5.1c0 .101-.04.141-.12.141H9.98c-.1 0-.14-.051-.14-.16v-5.54c0-.24 0-.49-.01-.75 0-.26-.01-.52-.02-.78-.01-.221-.03-.441-.06-.661 0-.03 0-.06.02-.09.03-.01.05-.02.08-.01h1.58c.09 0 .15.05.19.16.03.07.06.15.07.23.02.1.03.21.04.31.01.11.01.23.01.36.26-.34.59-.64.96-.86.399-.24.87-.37 1.34-.36.09 0 .13.05.13.14v1.95zm7.2-1.61c.01.06-.021.11-.06.15-.041.02-.09.02-.131 0-.229-.12-.47-.2-.72-.24-.31-.06-.63-.08-.94-.08-.51-.01-1.02.12-1.459.38-.41.25-.73.62-.94 1.05-.229.5-.341 1.05-.33 1.6-.011.4.05.791.16 1.169.1.311.25.601.44.86.17.229.379.431.629.58.24.14.49.25.76.32.25.069.521.11.781.11.289 0 .58-.011.869-.041.24-.029.48-.09.7-.17.08-.06.13-.029.16-.01.04.04.06.1.05.15v1.49c.01.119-.05.22-.15.27-.26.1-.529.17-.81.2-.339.052-.679.072-1.029.072-.49 0-.99-.069-1.459-.199-.461-.12-.891-.33-1.271-.6-.38-.271-.71-.601-.979-.99-.291-.42-.5-.881-.641-1.371-.15-.58-.23-1.17-.221-1.759 0-.98.191-1.86.58-2.6.381-.73.951-1.34 1.66-1.75.711-.41 1.57-.62 2.551-.62.34 0 .68.02 1.02.06.23.03.46.08.67.17.08.05.12.14.11.24V9.16z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/adobephonegap.svg b/assets/lib/simple-icons/icons/adobephonegap.svg
deleted file mode 100644
index e2de7932..00000000
--- a/assets/lib/simple-icons/icons/adobephonegap.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Adobe PhoneGap icon</title><path d="M7.463 15.549l-.856.061c0 .17.008.309.008.41.023 1.063.624 1.287 1.126 1.287.069 0 .115-.008.115-.008h.016l1.426-.139c.054-.17.062-.293.062-.293s-.193-8.983-.24-10.116a1.215 1.215 0 0 0-.184-.617 92.108 92.108 0 0 1-1.35-.108l-.162-.008c-.347 0-.609.093-.778.27-.255.27-.232.687-.232.687v.015c0 .015.008.254.016.64.694.039 1.203.07 1.203.07s.794.169.832.986c.039.887.031 5.876.031 5.876s.093.81-1.033.987zm-2.737.193l-1.434.107s-1.18.162-1.211-1.133c-.015-.956-.139-6.361-.139-6.361s-.085-1.003 1.134-.918c.362.023.91.054 1.495.093-.015-.895-.03-1.673-.038-2.275a60.468 60.468 0 0 1-2.005-.17C.924 4.909 1.025 6.259 1.025 6.259s.192 9.923.231 11.134c.046 1.45 1.604 1.21 1.604 1.21l1.927-.208c-.023-.717-.038-1.627-.061-2.652zM21.889 3.443c-.069-1.858-1.704-2.251-1.704-2.251S14.525.336 12.051.027c-2.483-.308-2.329 2.09-2.329 2.09s.563 17.518.625 19.685c.07 2.583 2.475 2.174 2.475 2.174l8.528-1.472c1.55-.309 1.627-2.244 1.627-2.244S21.974 5.463 21.889 3.443zm-1.904 14.874l-6.338.655s-1.843.278-1.89-1.958c-.03-1.65-.393-11.119-.393-11.119S11.241 4.16 13.138 4.3c1.935.147 6.585.494 6.585.494s1.241.293 1.295 1.711c.062 1.542.594 10.101.594 10.101s.139 1.411-1.627 1.712zm-6.377.324l2.445-.255c-.116-2.49-.548-12.16-.61-13.563V4.8c-.894-.07-1.742-.13-2.336-.177-.062-.008-.131-.008-.193-.008-.408 0-.717.108-.917.324-.34.355-.3.91-.3.918v.007c0 .008 0 .062.007.147.994.085 1.742.154 1.742.154s1.072.239 1.118 1.403c.047 1.265.355 8.112.355 8.112s.123 1.156-1.403 1.403l-1.419.139c.1 1.164.779 1.419 1.35 1.419.084 0 .138-.008.138-.008.016.008.023.008.023.008zm-3.732-1.195l-1.974.185s-1.596.23-1.626-1.604c-.024-1.357-.186-9.03-.186-9.03S5.983 5.58 7.617 5.696c.478.03 1.164.092 1.89.146-.047-1.457-.086-2.621-.101-3.23-.956-.093-1.874-.186-2.537-.263-2.159-.246-2.028 1.666-2.028 1.666s.255 14.08.309 15.806c.061 2.06 2.159 1.728 2.159 1.728l2.683-.34a691.29 691.29 0 0 0-.116-3.762Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/adobephotoshop.svg b/assets/lib/simple-icons/icons/adobephotoshop.svg
index 72dc56d0..25874237 100644
--- a/assets/lib/simple-icons/icons/adobephotoshop.svg
+++ b/assets/lib/simple-icons/icons/adobephotoshop.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Adobe Photoshop icon</title><path d="M5.9 6.16c0-.06.02-.11.1-.11C6.63 6.02 7.53 6 8.5 6c2.7 0 3.88 1.48 3.88 3.38 0 2.48-1.82 3.54-4.02 3.54-.37 0-.5-.02-.76-.02v3.8c0 .08-.03.11-.11.11H6.01c-.08 0-.11-.03-.11-.11zm1.7 5.18c.22.02.4.02.79.02 1.14 0 2.23-.4 2.23-1.95 0-1.24-.78-1.87-2.09-1.87-.39 0-.76.02-.93.03zm8.72-1.16c-.77 0-1.03.39-1.03.71 0 .35.18.6 1.21 1.13 1.53.74 2.01 1.45 2.01 2.5 0 1.56-1.19 2.4-2.8 2.4-.85 0-1.61-.18-2.03-.42-.06-.03-.08-.08-.08-.16V14.9c0-.1.05-.13.11-.08.61.4 1.36.58 2 .58.77 0 1.09-.32 1.09-.76 0-.35-.22-.66-1.21-1.18-1.39-.66-1.96-1.34-1.96-2.46 0-1.26.98-2.3 2.69-2.3.84 0 1.46.13 1.78.27.08.05.1.13.1.19v1.34c0 .08-.05.13-.14.1-.44-.26-1.11-.42-1.74-.42zM4.25.3C1.9.3 0 2.2 0 4.55v14.9c0 2.35 1.9 4.25 4.25 4.25h15.5c2.35 0 4.25-1.9 4.25-4.25V4.55C24 2.2 22.1.3 19.75.3zm.38 1h14.73a3.63 3.63 0 0 1 3.63 3.63v14.13a3.624 3.624 0 0 1-3.62 3.64H4.63c-2 0-3.63-1.63-3.63-3.63V4.93c0-2 1.63-3.63 3.63-3.63Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Adobe Photoshop</title><path d="M9.85 8.42c-.37-.15-.77-.21-1.18-.2-.26 0-.49 0-.68.01-.2-.01-.34 0-.41.01v3.36c.14.01.27.02.39.02h.53c.39 0 .78-.06 1.15-.18.32-.09.6-.28.82-.53.21-.25.31-.59.31-1.03.01-.31-.07-.62-.23-.89-.17-.26-.41-.46-.7-.57zM19.75.3H4.25C1.9.3 0 2.2 0 4.55v14.899c0 2.35 1.9 4.25 4.25 4.25h15.5c2.35 0 4.25-1.9 4.25-4.25V4.55C24 2.2 22.1.3 19.75.3zm-7.391 11.65c-.399.56-.959.98-1.609 1.22-.68.25-1.43.34-2.25.34-.24 0-.4 0-.5-.01s-.24-.01-.43-.01v3.209c.01.07-.04.131-.11.141H5.52c-.08 0-.12-.041-.12-.131V6.42c0-.07.03-.11.1-.11.17 0 .33 0 .56-.01.24-.01.49-.01.76-.02s.56-.01.87-.02c.31-.01.61-.01.91-.01.82 0 1.5.1 2.06.31.5.17.96.45 1.34.82.32.32.57.71.73 1.14.149.42.229.85.229 1.3.001.86-.199 1.57-.6 2.13zm7.091 3.89c-.28.4-.671.709-1.12.891-.49.209-1.09.318-1.811.318-.459 0-.91-.039-1.359-.129-.35-.061-.7-.17-1.02-.32-.07-.039-.121-.109-.111-.189v-1.74c0-.029.011-.07.041-.09.029-.02.06-.01.09.01.39.23.8.391 1.24.49.379.1.779.15 1.18.15.38 0 .65-.051.83-.141.16-.07.27-.24.27-.42 0-.141-.08-.27-.24-.4-.16-.129-.489-.279-.979-.471-.51-.18-.979-.42-1.42-.719-.31-.221-.569-.51-.761-.85-.159-.32-.239-.67-.229-1.021 0-.43.12-.84.341-1.21.25-.4.619-.72 1.049-.92.469-.239 1.059-.349 1.769-.349.41 0 .83.03 1.24.09.3.04.59.12.86.23.039.01.08.05.1.09.01.04.02.08.02.12v1.63c0 .04-.02.08-.05.1-.09.02-.14.02-.18 0-.3-.16-.62-.27-.96-.34-.37-.08-.74-.13-1.12-.13-.2-.01-.41.02-.601.07-.129.03-.24.1-.31.2-.05.08-.08.18-.08.27s.04.18.101.26c.09.11.209.2.34.27.229.12.47.23.709.33.541.18 1.061.43 1.541.73.33.209.6.49.789.83.16.318.24.67.23 1.029.011.471-.129.94-.389 1.331z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/adobepremiere.svg b/assets/lib/simple-icons/icons/adobepremiere.svg
deleted file mode 100644
index 091e06bb..00000000
--- a/assets/lib/simple-icons/icons/adobepremiere.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Adobe Premiere icon</title><path d="M6.297 5.778c0-.066.016-.116.099-.116.643-.033 1.584-.05 2.574-.05 2.772 0 3.976 1.519 3.976 3.466 0 2.54-1.838 3.63-4.099 3.63-.379 0-.511-.017-.775-.017v3.843c0 .083-.033.116-.116.116H6.412c-.082 0-.115-.033-.115-.116zm1.775 5.313c.231.016.412.016.808.016 1.172 0 2.268-.412 2.268-1.996 0-1.27-.783-1.914-2.119-1.914-.396 0-.776.016-.957.033zm6.4-.908c0-.115 0-.412-.05-.973 0-.083.012-.1.078-.132a10.42 10.42 0 0 1 3.656-.693c.083 0 .116.016.116.099v1.452c0 .082-.027.099-.11.099-.626-.033-1.544.05-1.89.198v6.301c0 .083-.033.116-.116.116h-1.569c-.082 0-.115-.033-.115-.116zM0 .3v23.4h24V.3zm1 1h22v21.4H1Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/adobepremierepro.svg b/assets/lib/simple-icons/icons/adobepremierepro.svg
new file mode 100644
index 00000000..c3440c12
--- /dev/null
+++ b/assets/lib/simple-icons/icons/adobepremierepro.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Adobe Premiere Pro</title><path d="M10.15 8.42a2.93 2.93 0 00-1.18-.2 13.9 13.9 0 00-1.09.02v3.36l.39.02h.53c.39 0 .78-.06 1.15-.18.32-.09.6-.28.82-.53.21-.25.31-.59.31-1.03a1.45 1.45 0 00-.93-1.46zM19.75.3H4.25A4.25 4.25 0 000 4.55v14.9c0 2.35 1.9 4.25 4.25 4.25h15.5c2.35 0 4.25-1.9 4.25-4.25V4.55C24 2.2 22.1.3 19.75.3zm-7.09 11.65c-.4.56-.96.98-1.61 1.22-.68.25-1.43.34-2.25.34l-.5-.01-.43-.01v3.21a.12.12 0 01-.11.14H5.82c-.08 0-.12-.04-.12-.13V6.42c0-.07.03-.11.1-.11l.56-.01.76-.02.87-.02.91-.01c.82 0 1.5.1 2.06.31.5.17.96.45 1.34.82.32.32.57.71.73 1.14.15.42.23.85.23 1.3 0 .86-.2 1.57-.6 2.13zm6.82-3.15v1.95c0 .08-.05.11-.16.11a4.35 4.35 0 00-1.92.37c-.19.09-.37.21-.51.37v5.1c0 .1-.04.14-.13.14h-1.97a.14.14 0 01-.16-.12v-5.58l-.01-.75-.02-.78c0-.23-.02-.45-.04-.68a.1.1 0 01.07-.11h1.78c.1 0 .18.07.2.16a3.03 3.03 0 01.13.92c.3-.35.67-.64 1.08-.86a3.1 3.1 0 011.52-.39c.07-.01.13.04.14.11v.04z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/adobetypekit.svg b/assets/lib/simple-icons/icons/adobetypekit.svg
deleted file mode 100644
index 08f41dba..00000000
--- a/assets/lib/simple-icons/icons/adobetypekit.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Adobe Typekit icon</title><path d="M0 0v24h24V0H0zm1 1.026h22v21.948H1V1.026zM7.165 7.983H4.394c-.082 0-.115-.033-.099-.132l.198-1.385c.016-.083.049-.116.132-.116h6.926c.099 0 .132.033.149.132l.132 1.369c.016.099-.033.132-.116.132H8.962v9.235c0 .083-.033.132-.132.132H7.296c-.098 0-.131-.033-.131-.132V7.983zM14.718 12.749l2.523-3.414c.066-.082.082-.115.165-.115h1.682c.099 0 .132.066.066.148-.396.511-2.21 2.754-2.804 3.48a.108.108 0 0 0 0 .099l3.2 4.271c.033.066.016.132-.083.132h-1.946c-.099 0-.132-.033-.165-.099a158.661 158.661 0 0 1-2.638-3.678v3.662c0 .082-.017.115-.116.115h-1.55c-.116 0-.132-.033-.132-.132V6.449c0-.049.016-.099.115-.099h1.567c.066 0 .116.033.116.116v6.283z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/adobexd.svg b/assets/lib/simple-icons/icons/adobexd.svg
index 13e70257..70d39b85 100644
--- a/assets/lib/simple-icons/icons/adobexd.svg
+++ b/assets/lib/simple-icons/icons/adobexd.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Adobe XD icon</title><path d="M19.75.3H4.25C1.9.3 0 2.2 0 4.55v14.9c0 2.35 1.9 4.25 4.25 4.25h15.5c2.35 0 4.25-1.9 4.25-4.25V4.55C24 2.2 22.1.3 19.75.3zm3.24 18.76a3.623 3.623 0 0 1-3.62 3.64H4.63c-2 0-3.63-1.63-3.63-3.63V4.93c0-2 1.63-3.63 3.63-3.63h14.73a3.63 3.63 0 0 1 3.63 3.63v14.13zm-13.5-7.81l2.8 5.38c.05.08.02.16-.06.16h-1.74c-.11 0-.16-.03-.21-.13-.64-1.32-1.29-2.64-1.96-4.06H8.3c-.6 1.34-1.26 2.75-1.9 4.07-.05.08-.1.11-.18.11H4.57c-.1 0-.11-.08-.06-.14l2.74-5.22L4.6 6.14c-.06-.08 0-.14.06-.14h1.72c.1 0 .14.02.18.11.63 1.32 1.27 2.68 1.87 4.01h.02c.58-1.32 1.22-2.69 1.84-4 .05-.08.08-.13.18-.13h1.61c.08 0 .11.06.06.14l-2.65 5.12zm3.29 1.63c0-2.33 1.55-4.15 4.01-4.15.21 0 .32 0 .52.02V6.1c0-.06.05-.1.1-.1h1.58c.08 0 .1.03.1.08v9.18c0 .27 0 .61.05.98 0 .06-.02.08-.08.11-.84.4-1.72.58-2.56.58-2.17.01-3.72-1.33-3.72-4.05zm4.53-2.56c-.14-.06-.34-.1-.58-.1-1.26 0-2.14.97-2.14 2.58 0 1.84.9 2.58 2.03 2.58.24 0 .5-.03.69-.11v-4.95z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Adobe XD</title><path d="M18.835.3H5.165A5.165 5.165 0 0 0 0 5.465v13.07A5.165 5.165 0 0 0 5.165 23.7h13.67A5.165 5.165 0 0 0 24 18.535V5.465A5.165 5.165 0 0 0 18.835.3zm-6.106 16.491h-2.287c-.16 0-.274-.006-.338-.113-.215-.419-.43-.835-.644-1.248a45.137 45.137 0 0 0-.684-1.264 66.961 66.961 0 0 1-.717-1.305h-.016a52.7 52.7 0 0 1-.668 1.288c-.23.429-.459.856-.684 1.28A54.85 54.85 0 0 1 6 16.693c-.044.097-.119.107-.227.107H3.568c-.043 0-.067.017-.072-.026a.166.166 0 0 1 .024-.113l3.107-5.105L3.6 6.438c-.033-.043-.038-.078-.016-.107a.115.115 0 0 1 .097-.04h2.27a.36.36 0 0 1 .145.024.292.292 0 0 1 .096.089c.193.43.408.859.644 1.288.236.429.475.853.716 1.272.241.419.464.843.668 1.272h.016c.213-.44.43-.869.652-1.288.222-.419.447-.84.676-1.264.231-.425.453-.847.668-1.264a.246.246 0 0 1 .064-.106.239.239 0 0 1 .129-.024h2.109a.093.093 0 0 1 .112.067.093.093 0 0 1-.031.094l.001.004-2.995 4.943 3.204 5.249c.021.037.026.08.016.121-.01.036-.047.012-.112.023zm7.681-.42a8.02 8.02 0 0 1-1.626.483 8.63 8.63 0 0 1-1.547.145 5.006 5.006 0 0 1-2.149-.45 3.421 3.421 0 0 1-1.506-1.361 4.348 4.348 0 0 1-.548-2.278 4.202 4.202 0 0 1 .548-2.109 4.018 4.018 0 0 1 1.595-1.545 5.139 5.139 0 0 1 2.737-.572c.086.005.188.013.306.024V5.536c0-.075.032-.113.097-.113h2.028a.086.086 0 0 1 .097.073.096.096 0 0 1 0 .024v9.517c0 .183.008.381.024.596.016.214.03.407.04.579a.163.163 0 0 1-.096.159zm-2.457-5.812c.09.009.179.025.266.048v4.395a1.634 1.634 0 0 1-.354.064 4.965 4.965 0 0 1-.419.016 2.656 2.656 0 0 1-.83-.129 1.714 1.714 0 0 1-.676-.402 1.973 1.973 0 0 1-.451-.708 2.83 2.83 0 0 1-.169-1.031 2.217 2.217 0 0 1 .33-1.272c.213-.316.504-.571.845-.741.35-.173.736-.262 1.127-.258.111.002.221.007.331.018z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/adonisjs.svg b/assets/lib/simple-icons/icons/adonisjs.svg
index be9858a5..e019c1a6 100644
--- a/assets/lib/simple-icons/icons/adonisjs.svg
+++ b/assets/lib/simple-icons/icons/adonisjs.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>AdonisJS icon</title><path d="M13.333 1.333l-.596 1.193-2.404 4.807L8 2.667l-8 16h4.667l-2 4H24zm0 2.982l8.51 17.018H4.823l1.334-2.666H16l-4.922-9.843Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>AdonisJS</title><path d="M13.333 1.333l-.596 1.193-2.404 4.807L8 2.667l-8 16h4.667l-2 4H24zm0 2.982l8.51 17.018H4.823l1.334-2.666H16l-4.922-9.843Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/adyen.svg b/assets/lib/simple-icons/icons/adyen.svg
new file mode 100644
index 00000000..b95739c5
--- /dev/null
+++ b/assets/lib/simple-icons/icons/adyen.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Adyen</title><path d="M11.64703 9.88245v2.93377c0 .13405.10867.24271.24272.24271h.46316V9.88245h1.76474v5.1503c0 .46916-.38033.8495-.8495.8495H9.94303v-1.23507h2.40991v-.52942h-1.62108c-.46917 0-.8495-.38033-.8495-.8495V9.88245h1.76467Zm-8.26124.00001c.46917 0 .8495.38034.8495.8495v3.3858H.8495c-.46916 0-.8495-.38033-.8495-.8495v-.94805c0-.46917.38034-.8495.8495-.8495h.91521v1.3455c0 .13406.10867.24272.24272.24272h.46316V11.184c0-.13405-.10867-.24271-.24272-.24271l-2.16719-.00002V9.88246Zm5.79068-1.76471v6.00001H5.79068c-.46917 0-.8495-.38033-.8495-.8495v-2.53631c0-.46917.38033-.8495.8495-.8495h.91515v2.93377c0 .13405.10867.24271.24272.24271h.46316l.00005-4.94118h1.76471Zm9.03286 1.76471a.8495.8495 0 0 1 .8495.8495v.94805c0 .46917-.38033.8495-.8495.8495h-.9152v-1.3455c0-.13404-.10868-.2427-.24272-.2427h-.46317v1.8749c0 .13406.10867.24272.24272.24272h2.16719v1.05883h-3.32511c-.46917 0-.8495-.38033-.8495-.8495v-3.3858Zm4.94117 0c.46916 0 .8495.38034.8495.8495v3.3858h-1.7647V11.184c-.0004-.13388-.10884-.24232-.24272-.24272h-.46316v3.1765H19.7647V9.88245Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/aerlingus.svg b/assets/lib/simple-icons/icons/aerlingus.svg
index 8eb5c3f4..6c937c56 100644
--- a/assets/lib/simple-icons/icons/aerlingus.svg
+++ b/assets/lib/simple-icons/icons/aerlingus.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Aer Lingus icon</title><path d="M23.857 13.511c-.48 1.545-2.081 2.995-4.002 3.296.31.48.452 1.074.377 1.733-.208 1.789-1.921 3.23-3.758 3.249-1.243.009-2.928-.528-4.115-2.402-1.064-1.666-1.215-4.313-1.14-5.113-1.299 1.328-2.109 2.618-2.495 3.512-.866 2.025-1.196 4.492-1.177 5.65 0 0-.16.151-.31.18-.48-.085-.895-.264-1.206-.537-.376-.34-.461-.66-.461-.66.574-2.872 1.488-4.66 2.853-6.704 1.836-2.76 4.67-4.464 8.032-5.49 2.43-.744 4.954-.904 6.686.565.933.772.989 1.883.716 2.721zM9.544 11.986c-.575.96-2.147 2.505-3.39 3.305-2.59 1.657-4.454 1.77-5.387 1.177a1.451 1.451 0 0 1-.292-.235c-.725-.763-.602-2.119.245-3.23.415-.546.951-.932 1.47-1.111-.406-.189-.679-.584-.735-1.14-.113-1.11.725-2.57 1.883-3.164 1.017-.518 3.211-1.036 4.821 1.366.631.932 1.196 2.26 1.385 3.032zM20.184 1.89c-.14-1.384-1.62-1.893-3.248-1.196-.772.33-1.45.885-1.93 1.516.075-.63-.104-1.186-.556-1.516-.895-.65-2.524-.17-3.635 1.036-.386.424-1.648 1.95-1.714 4.19-.028 1.083.452 3.485 2.034 5.142 4.219-1.591 6.488-4.03 7.354-5.038.999-1.168 1.422-2.194 1.601-2.947.132-.594.113-1.017.094-1.187z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Aer Lingus</title><path d="M23.857 13.511c-.48 1.545-2.081 2.995-4.002 3.296.31.48.452 1.074.377 1.733-.208 1.789-1.921 3.23-3.758 3.249-1.243.009-2.928-.528-4.115-2.402-1.064-1.666-1.215-4.313-1.14-5.113-1.299 1.328-2.109 2.618-2.495 3.512-.866 2.025-1.196 4.492-1.177 5.65 0 0-.16.151-.31.18-.48-.085-.895-.264-1.206-.537-.376-.34-.461-.66-.461-.66.574-2.872 1.488-4.66 2.853-6.704 1.836-2.76 4.67-4.464 8.032-5.49 2.43-.744 4.954-.904 6.686.565.933.772.989 1.883.716 2.721zM9.544 11.986c-.575.96-2.147 2.505-3.39 3.305-2.59 1.657-4.454 1.77-5.387 1.177a1.451 1.451 0 0 1-.292-.235c-.725-.763-.602-2.119.245-3.23.415-.546.951-.932 1.47-1.111-.406-.189-.679-.584-.735-1.14-.113-1.11.725-2.57 1.883-3.164 1.017-.518 3.211-1.036 4.821 1.366.631.932 1.196 2.26 1.385 3.032zM20.184 1.89c-.14-1.384-1.62-1.893-3.248-1.196-.772.33-1.45.885-1.93 1.516.075-.63-.104-1.186-.556-1.516-.895-.65-2.524-.17-3.635 1.036-.386.424-1.648 1.95-1.714 4.19-.028 1.083.452 3.485 2.034 5.142 4.219-1.591 6.488-4.03 7.354-5.038.999-1.168 1.422-2.194 1.601-2.947.132-.594.113-1.017.094-1.187z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/aeroflot.svg b/assets/lib/simple-icons/icons/aeroflot.svg
new file mode 100644
index 00000000..817da18a
--- /dev/null
+++ b/assets/lib/simple-icons/icons/aeroflot.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Aeroflot</title><path d="M9.066 12.725c-.056-.135-.097-.272-.143-.406l-6.675.406 1.35.693zm.909 1.247c-.057-.042-.115-.1-.17-.15a1.822 1.822 0 0 1-.287-.318l-3.333.67 1.419.509zm2.64-.286c.16-.025.4-.122.588-.268l-.968-2.032 1.005-.51-.848-.782c-.602.292-1.206.58-1.809.868l.43 1.025.694-.33zm1.65-4.241c.387.5.655 1.081.782 1.7h-.61a3.884 3.884 0 0 0-.172-.57c-.41-1.142-1.25-1.956-2.216-2.633-.127-.078-.241-.164-.37-.238.129.044.243.086.37.136.88.372 1.662.885 2.216 1.605m.185 6.517c-.225.114-.455.22-.682.33l-.565-1.193c-.37.139-.76.215-1.154.226-.424.02-.847-.04-1.249-.176l-.483 1.143c-.157.014-.374 0-.512-.106a.378.378 0 0 1-.169-.224c.204-.356.389-.723.579-1.087-.127-.088-.24-.152-.355-.27l.344-.437c.582.38 1.22.585 1.845.585.627.022 1.25-.192 1.832-.628.19.055.385.119.541.18-.058.046-.1.087-.157.136-.114.12-.213.242-.398.346.188.395.387.784.583 1.175zm7.785-3.431L24 11.343h-9.55c0 .422-.06.784-.185 1.1-.369 1.005-1.291 1.487-2.216 1.469-.908-.027-1.834-.524-2.244-1.441a2.745 2.745 0 0 1-.229-1.128H0l1.75 1.188 7.316-.404c.138.553.397 1.037.74 1.395a3.065 3.065 0 0 0 2.243 1.01 2.79 2.79 0 0 0 2.216-.992c.312-.362.554-.826.694-1.385zm-.48.194l-1.352.663L15 12.725a9.5 9.5 0 0 0 .129-.406zm-3.907 1.462l-1.48.52a357.77 357.77 0 0 1-2.286-.735c.069-.06.125-.117.183-.196.085-.074.157-.176.242-.254zm.711-.09l1.177-.575-4.86-.614c-.043.164-.171.298-.256.432zm-13.116 0l-1.179-.542 4.885-.635c.09.152.171.286.27.42Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/aeromexico.svg b/assets/lib/simple-icons/icons/aeromexico.svg
new file mode 100644
index 00000000..a27f7199
--- /dev/null
+++ b/assets/lib/simple-icons/icons/aeromexico.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Aerom&#233;xico</title><path d="M22.354 12.222c.044.156 0 .422-.267.489a3.74 3.74 0 0 1-.666.11c-.377.045-.355.356-.355.534v2.264c0 .31-.244 1.354-1.443 1.354H16.87c-1.043 0-1.864-.866-1.864-1.798V9.803c-.022-.932.821-1.554 1.576-1.532.377 0 .644.111.843.222.444.2.933.444 1.577.755 0 0 1.02-.733 1.087-.777.355-.244.688-.067.8.155.377.733 1.087 2.22 1.465 3.596zm1.642-4.018a3.283 3.283 0 0 0-3.219-3.33c-1.709-.044-2.663.578-3.019.755-.022.023-.066 0-.11-.044-.311-.31-1-.777-1.754-.999-.111-.022-.133-.2 0-.2a13.3 13.3 0 0 1 3.64.111c.134.023.245-.066.178-.177-.044-.089-.067-.133-.133-.289-.156-.31-.533-.644-1.021-.777-1.266-.355-3.441-.666-5.394-.666-2.176-.022-4.484.422-5.062.555-.133.023-.333.09-.377.09-.111 0-.155.155-.089.221l.222.222c.067.089.111.222-.022.355L3.796 7.65H6.57c.177 0 .355.155.355.355 0 .177-.156.355-.333.355H2.997l-1.088.999h4.706c.178 0 .333.2.333.355 0 .155-.133.355-.333.355H1.11L0 11.09h9.501c.177 0 .333.2.333.355 0 .2-.133.378-.333.378H0v.999h9.479c.222 0 .333.2.333.377 0 .156-.156.333-.356.333H0v1h12.386c.2 0 .334.177.334.377 0 .177-.156.355-.334.355H3.33v.999h9.079c.177 0 .31.2.31.377s-.155.355-.31.355l-.178-.022H3.33v.999h10.455s.377-.866.377-1.843V9.403c0-.532.222-1.42 1.31-1.664.022 0 .067-.023.089-.023 3.085-.732 6.26-.066 8.058.71.333.156.4-.11.377-.222zM6.66 21.413h2.11c1.886-.022 3.107-1.02 3.107-1.02H6.659v1.02zm0-1.731h6.06c.29-.289.644-.8.733-.999H6.659v.999Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/aerospike.svg b/assets/lib/simple-icons/icons/aerospike.svg
new file mode 100644
index 00000000..34cad226
--- /dev/null
+++ b/assets/lib/simple-icons/icons/aerospike.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Aerospike</title><path d="M0 0v24h24V0zm19.295 5.386v1.64l-3.576 1.586v7.363l3.576 1.602v1.565L5.672 12.98l-1.607-.688 1.607-.743zm-4.948 3.825L7.45 12.283l6.897 3.092Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/aew.svg b/assets/lib/simple-icons/icons/aew.svg
new file mode 100644
index 00000000..2a70ea28
--- /dev/null
+++ b/assets/lib/simple-icons/icons/aew.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>AEW</title><path d="M0 6.925v10.086h3.674v-.51H.53V7.435h4.526v-.51zm18.944 0v.511h4.526V16.5h-3.144v.511H24V6.925zm-7.727-.891v1.453h1.537v-.383H11.71V6.91h.86v-.336h-.86v-.157h1.044v-.383H11.71zm1.765 0v1.453h1.39V7.06h-.897V6.034zm1.551 0v1.453h.493V6.034zm.648 0v.427h.557v1.026h.493V6.461h.558v-.427h-1.051zm1.765 0v1.453h1.537v-.383H17.44V6.91h.86v-.336h-.86v-.157h1.044v-.383H17.44zM11.45 8.225l-3.785.006.015 3.466 1.57 4.01h5.144l-.707-1.77H9.84V10h2.32zm-1.288 2.862v1.77h3.107l-.712-1.77zM6.265 6.034l-.748 1.453h.538l.122-.278h.699l.135.278h.536l-.753-1.453zm1.363 0v1.453h1.39V7.06h-.897V6.034zm1.55 0v1.453h1.39V7.06h-.896V6.034zm-2.65.444l.187.391h-.377zm16.29 1.73l-2.148.003-1.368 3.47-.938-3.467-2.142.003-.92 3.443-1.355-3.44-2.177.004 2.966 7.483h1.633l.938-3.462.934 3.462h1.653zm-16.844.025l-1.845.003-2.946 7.472H3.37l.342-.9h2.333l-.686-1.747h-.955l.635-1.673 1.706 4.32h2.17zm13.091 8.195c-.398.002-.663.14-.805.316a.76.76 0 00.005.91c.603.625 1.574.134 1.632.008v-.622h-.892v.344h.405v.086c-.114.152-.598.143-.722-.053-.124-.225-.038-.374.008-.444.277-.3.753-.062.784.004l.365-.293a1.332 1.332 0 00-.78-.256zm-7.877.01a2.177 2.177 0 00-.269.02c-.293.06-.476.207-.517.346-.128.491.571.567.571.567.623.03.571.098.572.123-.065.136-.42.087-.529.07-.221-.042-.43-.186-.43-.186l-.271.3c.76.482 1.38.226 1.48.17.3-.171.29-.484.192-.621-.076-.093-.307-.207-.535-.232-.204-.048-.604-.011-.558-.141.06-.12.682-.04.845.095l.24-.295c-.233-.168-.517-.22-.791-.216zm-7.085.047l.504 1.397h.505l.278-.854.266.854h.506l.502-1.397h-.497l-.258.866-.297-.866h-.444l-.294.874-.265-.874zm2.693 0v1.397h.502v-.392h.31l.324.392h.591l-.384-.448c.6-.234.334-.927-.234-.95h-.06zm1.89 0v1.397h1.537v-.328H9.18v-.195h.86v-.335h-.86v-.158h1.044v-.381zm3.427 0v.413h.557v.984h.494v-.984h.557v-.413zm1.758 0v1.397h1.39V17.5h-.897v-1.016zm1.562 0v1.397h.493V16.485zm.766 0v1.397h.493v-.804l.772.804h.466v-1.396h-.493v.761l-.716-.761zm-8.904.372h.531c.19-.003.189.286 0 .292h-.53z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/affinity.svg b/assets/lib/simple-icons/icons/affinity.svg
index fd038b82..21a2c6bb 100644
--- a/assets/lib/simple-icons/icons/affinity.svg
+++ b/assets/lib/simple-icons/icons/affinity.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Affinity icon</title><path d="M9.368 1.08h3.778l.318.55h1.082L24 18.004v.001l-2.036 3.47H13.69l.84 1.445h-.365l-.84-1.446H3.057l-.526-.923h-.652L0 17.298l.002-.001 2.41-4.176 2.23-1.288 3.69-6.39-.742-1.285L9.368 1.08zm2.224 5.652L5.066 18.008h6.25l-.723-1.246 6.808.006-5.809-10.036Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Affinity</title><path d="M9.368 1.08h3.778l.318.55h1.082L24 18.004v.001l-2.036 3.47H13.69l.84 1.445h-.365l-.84-1.446H3.057l-.526-.923h-.652L0 17.298l.002-.001 2.41-4.176 2.23-1.288 3.69-6.39-.742-1.285L9.368 1.08zm2.224 5.652L5.066 18.008h6.25l-.723-1.246 6.808.006-5.809-10.036Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/affinitydesigner.svg b/assets/lib/simple-icons/icons/affinitydesigner.svg
index 79426dd2..d4db5bae 100644
--- a/assets/lib/simple-icons/icons/affinitydesigner.svg
+++ b/assets/lib/simple-icons/icons/affinitydesigner.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Affinity Designer icon</title><path d="M10.44 0L0 18.083v5.197a.72.72 0 00.713.72h10.023L5.7 15.277 14.52 0zm5.16 0l-4.86 8.418 3.718 6.439H24V.718A.72.72 0 0023.28 0zm-5.4 9.353l-2.064 3.575a1.289 1.289 0 000 1.288c.23.4.656.64 1.117.64h4.125zm-3.122 6.44L11.816 24h11.471a.72.72 0 00.713-.718v-7.49Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Affinity Designer</title><path d="M10.44 0L0 18.083v5.197a.72.72 0 00.713.72h10.023L5.7 15.277 14.52 0zm5.16 0l-4.86 8.418 3.718 6.439H24V.718A.72.72 0 0023.28 0zm-5.4 9.353l-2.064 3.575a1.289 1.289 0 000 1.288c.23.4.656.64 1.117.64h4.125zm-3.122 6.44L11.816 24h11.471a.72.72 0 00.713-.718v-7.49Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/affinityphoto.svg b/assets/lib/simple-icons/icons/affinityphoto.svg
index 3ee0276b..fa17bf2b 100644
--- a/assets/lib/simple-icons/icons/affinityphoto.svg
+++ b/assets/lib/simple-icons/icons/affinityphoto.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Affinity Photo icon</title><path d="M10.44 0l-.48.831 5.88 10.185L22.2 0zm12.84 0l-8.577 14.856H24V.711A.72.72 0 0023.28 0zM9.42 1.767L5.76 8.106h7.32zm1.563 7.257h-.018c-.36.005-.7.216-.879.523l-1.083 1.88-.008.014a1.052 1.052 0 000 1.02 16710.388 16710.388 0 001.093 1.894c.184.31.53.5.885.501.002 0 1.38.002 2.067-.001.36-.005.699-.205.878-.512.364-.631.731-1.261 1.093-1.894.176-.314.17-.703-.007-1.011l-.01-.015-1.078-1.87-.006-.009a1.053 1.053 0 00-.879-.52h-.012zM5.22 9.04L0 18.082v.39l.003 4.871a.72.72 0 00.662.655L9.3 9.04zm2.94 3.845L1.736 24h12.84zm2.757 2.906L15.657 24h7.623a.72.72 0 00.72-.72v-7.488Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Affinity Photo</title><path d="M10.44 0l-.48.831 5.88 10.185L22.2 0zm12.84 0l-8.577 14.856H24V.711A.72.72 0 0023.28 0zM9.42 1.767L5.76 8.106h7.32zm1.563 7.257h-.018c-.36.005-.7.216-.879.523l-1.083 1.88-.008.014a1.052 1.052 0 000 1.02 16710.388 16710.388 0 001.093 1.894c.184.31.53.5.885.501.002 0 1.38.002 2.067-.001.36-.005.699-.205.878-.512.364-.631.731-1.261 1.093-1.894.176-.314.17-.703-.007-1.011l-.01-.015-1.078-1.87-.006-.009a1.053 1.053 0 00-.879-.52h-.012zM5.22 9.04L0 18.082v.39l.003 4.871a.72.72 0 00.662.655L9.3 9.04zm2.94 3.845L1.736 24h12.84zm2.757 2.906L15.657 24h7.623a.72.72 0 00.72-.72v-7.488Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/affinitypublisher.svg b/assets/lib/simple-icons/icons/affinitypublisher.svg
index f8250579..84b15ad5 100644
--- a/assets/lib/simple-icons/icons/affinitypublisher.svg
+++ b/assets/lib/simple-icons/icons/affinitypublisher.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Affinity Publisher icon</title><path d="M10.44 0L9.36 1.87 22.136 24h1.144a.72.72 0 00.72-.72v-3.119L12.36 0zm3 0L24 18.29V.72a.72.72 0 00-.72-.72zM8.82 2.806l-1.98 3.43L16.976 24h4.08zM6.24 7.274L4.76 9.837a1.941 1.941 0 000 1.942C6.531 14.842 11.816 24 11.816 24h4.08zm-2.58 4.47L0 18.082v5.197c0 .397.323.72.72.72h10.016Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Affinity Publisher</title><path d="M10.44 0L9.36 1.87 22.136 24h1.144a.72.72 0 00.72-.72v-3.119L12.36 0zm3 0L24 18.29V.72a.72.72 0 00-.72-.72zM8.82 2.806l-1.98 3.43L16.976 24h4.08zM6.24 7.274L4.76 9.837a1.941 1.941 0 000 1.942C6.531 14.842 11.816 24 11.816 24h4.08zm-2.58 4.47L0 18.082v5.197c0 .397.323.72.72.72h10.016Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/aframe.svg b/assets/lib/simple-icons/icons/aframe.svg
new file mode 100644
index 00000000..803aa1e7
--- /dev/null
+++ b/assets/lib/simple-icons/icons/aframe.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>A-Frame</title><path d="M17.37 17.07H6.57L4.24 24H3.01l8.23-24h1.52l8.23 24h-1.3zm-.39-1.13l-5-14.96-5.03 14.98h10.03Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/aib.svg b/assets/lib/simple-icons/icons/aib.svg
new file mode 100644
index 00000000..2e3f2185
--- /dev/null
+++ b/assets/lib/simple-icons/icons/aib.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>AIB</title><path d="M4.8125.004c-.045.0116-.0796.0506-.0977.1073-.1266.4015-.6012 3.0184.7286 3.129 4.032.3342 3.338 3.6082 6.2832 4.2148v1.0703H9.6328l-.9453.9297h3.039v1.8183H9.1642c-2.0105 0-2.8492-1.3788-2.5196-2.4277.2838-.9032 2.2103-2.6043-.1308-3.334.7429 2.0266-2.4297 1.7762-2.4297 4.8945 0 2.4346 2.8034 3.3262 5.08 3.3262h6.3712c2.2766 0 5.08-.8916 5.08-3.3262 0-3.1183-3.1726-2.868-2.4297-4.8945-2.341.7297-.4126 2.4308-.1289 3.334.3296 1.0489-.511 2.4277-2.5214 2.4277h-2.5625V9.4551h3.039l-.9453-.9297h-2.0937V7.459c2.39-.49 2.6793-2.8833 4.3183-4.0488.7411-.5268 2.0625-.5293 2.0625-.5293s-1.8286-1.3563-2.0254-1.502c-.1964-.1456-.6423-.455-1.168-.455-.6355 0-1.5042.9231-2.1015 1.3046-1.279.818-4.0935 2.129-9.086-2.17-.059-.0509-.1151-.0663-.1601-.0546zm11.4766 1.7577c.3063 0 .5546.248.5546.5547a.5545.5545 0 01-.5546.5547.5543.5543 0 01-.5547-.5547c0-.3067.248-.5547.5547-.5547zM5.8945 15.9551L2.713 24H4.375l.7363-1.8867h3.127L8.9843 24h1.6876l-3.0137-7.625c-.0984-.2494-.3452-.42-.6133-.42zm5.17 0v.3672c.0472.0203.0956.043.1386.0625.2022.1428.3457.4904.3457.8984l.002 6.4297c0 .1582.127.2871.2851.2871h1.8243v-.3672c-.0476-.021-.0969-.043-.1407-.0625-.2022-.1428-.3457-.4925-.3457-.9004V16.242c0-.1578-.127-.287-.2851-.287zm3.832 0V24h3.8047c1.6017 0 2.586-1.0737 2.586-2.1816 0-.8782-.5965-1.6329-1.4532-1.9746.579-.3973.9531-1.0128.9531-1.707 0-1.1076-.9842-2.1817-2.586-2.1817zm1.5156 1.3887h1.8496c.534 0 .9668.4332.9668.9667 0 .5179-.4078.9386-.92.963h-1.8964zm-9.7266.8945l1 2.4765H5.6797zm9.7266 2.4433h2.3828c.534 0 .9356.4294.9356.963 0 .5335-.4349.9667-.9688.9667h-2.3496Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/aidungeon.svg b/assets/lib/simple-icons/icons/aidungeon.svg
new file mode 100644
index 00000000..ec42733e
--- /dev/null
+++ b/assets/lib/simple-icons/icons/aidungeon.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>AI Dungeon</title><path d="M0 0v24h24V0zm5.646 13.002H7.21c.117 0 .213.095.213.213v.123c0 .117-.096.21-.213.21h-.457v1.68h.457c.117 0 .213.096.213.213v.123c0 .118-.096.211-.213.211H5.646a.21.21 0 01-.21-.21v-.124c0-.117.093-.212.21-.212h.46v-1.68h-.46a.21.21 0 01-.21-.211v-.123c0-.118.093-.213.21-.213zm-2.833.023h.958c.13 0 .19.093.235.235l.756 1.974h.06c.13 0 .235.105.235.235v.09c0 .13-.105.234-.235.234h-.816a.234.234 0 01-.235-.234v-.09c0-.13.105-.235.235-.235h.101l-.074-.224h-.969l-.078.224h.178a.2.2 0 01.201.202v.132a.2.2 0 01-.2.202H2.35a.2.2 0 01-.202-.202v-.132a.2.2 0 01.202-.202h.113l.625-1.707h-.276a.234.234 0 01-.234-.234v-.033c0-.13.105-.235.235-.235zm.748.557l-.317.908h.617zm14.109 3.885h.002c.736 0 1.333.649 1.332 1.449 0 .8-.597 1.448-1.332 1.447-.736 0-1.332-.647-1.332-1.447-.001-.8.595-1.448 1.33-1.45zm-4.71.002c.118 0 .212.097.212.219 0 .226-.004.447 0 .671 0 0 .036.268-.223.264-.285-.004-.198-.263-.408-.514-.085-.1-.14-.124-.377-.127-.387-.003-.736.16-.734.9 0 .391.143.931.68.956.156.007.452-.072.452-.072v-.348h-.289a.218.218 0 01-.218-.219v-.082c0-.121.097-.219.218-.219h.977c.121 0 .219.098.219.22v.081a.218.218 0 01-.219.219h-.068l.004.686s-.3.26-1.088.253c-.995-.007-1.356-.78-1.354-1.437.003-.855.61-1.433 1.244-1.441.332-.005.583.078.778.17.02-.1.093-.18.195-.18zm.868.062h1.985c.12 0 .218.098.218.219v.64a.218.218 0 01-.218.22h-.086a.218.218 0 01-.22-.22v-.312h-1.044c0 .006.006.01.006.016v.508h.375v-.055c0-.121.097-.219.219-.219h.054c.121 0 .219.098.219.219v.633a.218.218 0 01-.219.218h-.055a.218.218 0 01-.218-.218v-.055h-.375v.617c0 .003-.004.005-.004.008h1.043v-.313c0-.12.097-.218.219-.218h.086c.12 0 .218.097.218.218v.641a.218.218 0 01-.218.219h-1.985a.218.218 0 01-.219-.219v-.11c0-.12.098-.218.22-.218l.054-.008v-1.648c0-.006.005-.01.006-.016h-.06a.218.218 0 01-.22-.219v-.109c0-.121.098-.219.22-.219zm-10.264.002c.426.02 1.278.202 1.295 1.35.025 1.576-1.502 1.398-1.502 1.398h-.81a.218.218 0 01-.219-.218v-.07c0-.122.098-.22.219-.22h.062l.014-1.726h-.068a.218.218 0 01-.22-.219v-.07c0-.121.099-.219.22-.219.34 0 .673.007 1.01-.006zm1.725 0h.746c.121 0 .219.098.219.219v.088a.218.218 0 01-.219.219h-.08l.004 1.414c-.002.211.176.343.47.347.253.005.468-.132.471-.353v-1.404h-.074a.218.218 0 01-.219-.22v-.087c0-.121.098-.219.22-.219h.743c.122 0 .22.098.22.219v.088a.218.218 0 01-.22.218h-.08l-.004 1.29c0 .494-.24 1.015-1.062 1.015-.765 0-1.09-.457-1.076-1.021l-.006-1.287h-.053a.218.218 0 01-.219-.22v-.087c0-.121.098-.219.22-.219zm4.266.006h.816c.121 0 .219.098.219.219v.076a.218.218 0 01-.219.219h-.074l.017 2.16c-.014.053-.04.086-.123.105a.928.928 0 01-.308.006c-.09-.03-.14-.089-.194-.15l-.96-1.617.01 1.22h.212c.121 0 .219.098.219.22v.075a.218.218 0 01-.219.22h-.816a.218.218 0 01-.219-.22v-.076c0-.12.098-.218.219-.218h.043l.01-1.74h-.036a.218.218 0 01-.218-.22v-.054c0-.122.097-.22.218-.22h.5c.122 0 .158.054.246.22l.852 1.515.012-1.226h-.207a.218.218 0 01-.22-.219v-.076c0-.121.098-.219.22-.219zm11.25 0h.816c.121 0 .219.098.219.219v.076a.218.218 0 01-.219.219h-.074l.017 2.16c-.014.053-.04.086-.123.105a.928.928 0 01-.308.006c-.09-.03-.14-.089-.194-.15l-.96-1.617.01 1.22h.212c.121 0 .219.098.219.22v.075a.218.218 0 01-.219.22h-.816a.218.218 0 01-.219-.22v-.076c0-.12.098-.218.219-.218h.043l.01-1.74h-.036a.218.218 0 01-.218-.22v-.054c0-.121.097-.219.218-.219h.5c.122 0 .158.053.247.219L21 19.279l.012-1.226h-.207a.218.218 0 01-.22-.219v-.076c0-.121.098-.219.22-.219zm-3.768 1.377c0 .5.285.904.635.904.35 0 .634-.404.635-.904 0-.5-.284-.906-.635-.906-.39 0-.632.503-.635.906zm-13.783-.869l.006 1.707c.347-.026.924.007.922-.861-.003-.84-.673-.856-.928-.846z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/aiohttp.svg b/assets/lib/simple-icons/icons/aiohttp.svg
new file mode 100644
index 00000000..9ffb644b
--- /dev/null
+++ b/assets/lib/simple-icons/icons/aiohttp.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>AIOHTTP</title><path d="M0 12C.01 5.377 5.377.01 12 0c6.623.01 11.99 5.377 12 12-.01 6.623-5.377 11.99-12 12C5.377 23.99.01 18.623 0 12zm12 11.004a10.948 10.948 0 0 0 6.81-2.367l-.303-.656a.746.746 0 0 1-.621-1.347l-.722-1.563a1.244 1.244 0 0 1-1.543-.734l-2.474.633v.012a.747.747 0 1 1-1.475-.178L8.2 15.31a1.244 1.244 0 0 1-1.278.607l-.748 2.59a.747.747 0 0 1-.17 1.388l.052 1.36A10.935 10.935 0 0 0 12 23.003zM5.75 21.05l-.044-1.142a.747.747 0 0 1 .18-1.482l.749-2.59a1.245 1.245 0 0 1-.759-1.147l-4.674-.566A11.035 11.035 0 0 0 5.75 21.05zm13.3-.608a11.083 11.083 0 0 0 2.74-3.421l-3.826-.751a1.245 1.245 0 0 1-.528.672l.732 1.588a.747.747 0 0 1 .598 1.3l.285.612zm2.878-3.698A10.934 10.934 0 0 0 23.004 12a10.95 10.95 0 0 0-2.492-6.965L19 5.551a.749.749 0 0 1-.726.922.747.747 0 0 1-.682-.442L14.449 7.1a2.492 2.492 0 0 1-1.015 2.737l2.857 4.901a1.245 1.245 0 0 1 1.732 1.236l3.904.77zm-8.846-.068l2.465-.63a1.242 1.242 0 0 1 .486-1.157l-2.856-4.9a2.478 2.478 0 0 1-2.444-.11l-2.77 3.892a1.242 1.242 0 0 1 .354 1.263l3.483 1.497a.746.746 0 0 1 1.282.143v.002zm-7.17-2.284a1.246 1.246 0 0 1 1.81-.794l2.77-3.89a2.484 2.484 0 0 1-.93-1.94c0-.603.219-1.186.617-1.64L6.476 2.487a11.013 11.013 0 0 0-5.33 11.328l4.765.578zm8.44-7.572l3.174-1.083v-.01a.747.747 0 0 1 1.345-.448l1.433-.489A10.982 10.982 0 0 0 6.745 2.333l3.64 3.581a2.49 2.49 0 0 1 3.967.904l-.002.003z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/aiqfome.svg b/assets/lib/simple-icons/icons/aiqfome.svg
index 0659b7e2..af056372 100644
--- a/assets/lib/simple-icons/icons/aiqfome.svg
+++ b/assets/lib/simple-icons/icons/aiqfome.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Aiqfome icon</title><path d="M5.748 9.195c.607.277.992 1.139 1.04 2.342.033.797-.06 1.399-.303 1.925-.564 1.209-1.578 1.252-2.163.092-.25-.488-.358-1.025-.358-1.778.006-.803.092-1.274.347-1.795.363-.742.895-1.035 1.437-.786zm9.768.076c.591.39.998 1.627.916 2.776-.092 1.371-.699 2.358-1.436 2.358-.407 0-.824-.358-1.095-.943-.45-.976-.423-2.613.065-3.567.363-.716 1.024-.981 1.55-.624zM12.388.029c.223.032.255.06.38.292.184.336.298.456.64.678.314.2.314.211.206.726-.093.434-.039.862.162 1.247.293.58 1.111 1.187 1.86 1.377.281.076.395.081.737.022.222-.033.439-.049.482-.033.049.022.163.2.26.401.217.467.76 1.025 1.193 1.226.705.33 1.47.314 2.206-.05.206-.102.412-.167.461-.151.043.016.168.14.276.271.109.136.326.309.478.385.249.13.341.146.753.14.325-.005.488.012.526.06.157.19.59 2.201.775 3.584.163 1.241.179 4.017.027 5.23-.2 1.644-.498 3.053-.91 4.321-.293.9-.553 1.491-1.09 2.456C20.997 23.675 20.682 24 20.086 24a2.01 2.01 0 0 1-.493-.06c-.353-.119-.895-.536-1.73-1.328-.986-.932-1.404-1.257-1.924-1.512-.634-.315-1.258-.342-1.8-.076-.13.065-.498.358-.807.656-.65.618-.9.753-1.47.791-.704.044-1.1-.135-2.206-.992-.471-.363-.818-.526-1.203-.558-.466-.038-.808.081-1.561.537-.743.45-1.139.59-1.654.59-1.073 0-2.006-.66-2.965-2.097C1.205 18.34.424 16.09.17 13.863c-.098-.84-.114-2.537-.033-3.367.428-4.266 2.494-7.53 5.828-9.193C7.005.783 8.149.419 9.455.197c.976-.163 2.413-.244 2.933-.168zm-2.239 1.48C7.64 1.758 5.2 3.113 3.731 5.065c-1.529 2.033-2.38 5.399-2.07 8.19.2 1.85.964 3.947 1.989 5.487.52.78.72.997 1.084 1.176.553.271 1.122.174 1.827-.309.629-.434 1.28-.623 1.978-.585.71.043.982.184 2.055 1.1.634.542 1.182.602 1.794.195.136-.092.44-.325.678-.52.764-.634 1.35-.857 2.277-.862 1.16-.006 1.913.428 2.981 1.73.868 1.05 1.204 1.268 1.68 1.089.781-.298 1.567-2.082 2.082-4.716.683-3.48.553-6.522-.352-8.37-.293-.608-.645-.998-.976-1.095-.206-.06-.27-.055-.704.086-.418.136-.564.158-1.106.158-.51 0-.689-.028-.992-.13-.58-.196-.84-.434-1.486-1.356-.298-.428-.558-.569-1.263-.71-1.3-.25-1.832-.477-2.293-.976-.434-.466-.71-1.09-.91-2.054-.055-.282-.152-.591-.212-.689-.222-.357-.759-.488-1.643-.395z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Aiqfome</title><path d="M5.748 9.195c.607.277.992 1.139 1.04 2.342.033.797-.06 1.399-.303 1.925-.564 1.209-1.578 1.252-2.163.092-.25-.488-.358-1.025-.358-1.778.006-.803.092-1.274.347-1.795.363-.742.895-1.035 1.437-.786zm9.768.076c.591.39.998 1.627.916 2.776-.092 1.371-.699 2.358-1.436 2.358-.407 0-.824-.358-1.095-.943-.45-.976-.423-2.613.065-3.567.363-.716 1.024-.981 1.55-.624zM12.388.029c.223.032.255.06.38.292.184.336.298.456.64.678.314.2.314.211.206.726-.093.434-.039.862.162 1.247.293.58 1.111 1.187 1.86 1.377.281.076.395.081.737.022.222-.033.439-.049.482-.033.049.022.163.2.26.401.217.467.76 1.025 1.193 1.226.705.33 1.47.314 2.206-.05.206-.102.412-.167.461-.151.043.016.168.14.276.271.109.136.326.309.478.385.249.13.341.146.753.14.325-.005.488.012.526.06.157.19.59 2.201.775 3.584.163 1.241.179 4.017.027 5.23-.2 1.644-.498 3.053-.91 4.321-.293.9-.553 1.491-1.09 2.456C20.997 23.675 20.682 24 20.086 24a2.01 2.01 0 0 1-.493-.06c-.353-.119-.895-.536-1.73-1.328-.986-.932-1.404-1.257-1.924-1.512-.634-.315-1.258-.342-1.8-.076-.13.065-.498.358-.807.656-.65.618-.9.753-1.47.791-.704.044-1.1-.135-2.206-.992-.471-.363-.818-.526-1.203-.558-.466-.038-.808.081-1.561.537-.743.45-1.139.59-1.654.59-1.073 0-2.006-.66-2.965-2.097C1.205 18.34.424 16.09.17 13.863c-.098-.84-.114-2.537-.033-3.367.428-4.266 2.494-7.53 5.828-9.193C7.005.783 8.149.419 9.455.197c.976-.163 2.413-.244 2.933-.168zm-2.239 1.48C7.64 1.758 5.2 3.113 3.731 5.065c-1.529 2.033-2.38 5.399-2.07 8.19.2 1.85.964 3.947 1.989 5.487.52.78.72.997 1.084 1.176.553.271 1.122.174 1.827-.309.629-.434 1.28-.623 1.978-.585.71.043.982.184 2.055 1.1.634.542 1.182.602 1.794.195.136-.092.44-.325.678-.52.764-.634 1.35-.857 2.277-.862 1.16-.006 1.913.428 2.981 1.73.868 1.05 1.204 1.268 1.68 1.089.781-.298 1.567-2.082 2.082-4.716.683-3.48.553-6.522-.352-8.37-.293-.608-.645-.998-.976-1.095-.206-.06-.27-.055-.704.086-.418.136-.564.158-1.106.158-.51 0-.689-.028-.992-.13-.58-.196-.84-.434-1.486-1.356-.298-.428-.558-.569-1.263-.71-1.3-.25-1.832-.477-2.293-.976-.434-.466-.71-1.09-.91-2.054-.055-.282-.152-.591-.212-.689-.222-.357-.759-.488-1.643-.395z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/airasia.svg b/assets/lib/simple-icons/icons/airasia.svg
new file mode 100644
index 00000000..b9791ccc
--- /dev/null
+++ b/assets/lib/simple-icons/icons/airasia.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>AirAsia</title><path d="M11.54 14.49c-1.278 0-2.264-.998-2.264-2.276 0-1.252.98-2.27 2.264-2.27 1.232 0 2.238 1.018 2.238 2.27 0 1.278-1.005 2.277-2.239 2.277zm3.074-7.854l-.214.998c-.59-1.18-2.348-1.297-3.295-1.297-2.952 0-5.527 2.841-5.527 6.746 0 3.14 1.875 5.111 4.23 5.111 1.316 0 2.432-.304 3.353-1.4l-.24 1.102h3.711l1.692-11.26c-1.238-.001-2.482.01-3.71 0zM12 0c6.63 0 12 5.37 12 12s-5.37 12-12 12S0 18.63 0 12 5.37 0 12 0Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/airbnb.svg b/assets/lib/simple-icons/icons/airbnb.svg
index 53333b00..4677c707 100644
--- a/assets/lib/simple-icons/icons/airbnb.svg
+++ b/assets/lib/simple-icons/icons/airbnb.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Airbnb icon</title><path d="M11.998 18.267c-1.352-1.696-2.147-3.182-2.412-4.455-.263-1.026-.159-1.847.291-2.464.477-.71 1.187-1.055 2.12-1.055s1.642.345 2.119 1.062c.446.61.558 1.432.286 2.464-.291 1.298-1.085 2.784-2.411 4.456zm9.597 1.14c-.185 1.245-1.034 2.278-2.2 2.782-2.251.98-4.48-.583-6.388-2.703 3.155-3.95 3.738-7.025 2.384-9.014-.795-1.14-1.933-1.695-3.393-1.695-2.943 0-4.561 2.49-3.925 5.38.37 1.564 1.351 3.342 2.915 5.33-.98 1.084-1.909 1.855-2.73 2.332-.636.344-1.245.557-1.828.608-2.677.399-4.776-2.198-3.823-4.877.132-.345.395-.98.845-1.961l.025-.053C4.94 12.36 6.717 8.75 8.759 4.746l.053-.132.58-1.115c.45-.822.635-1.19 1.351-1.643.345-.209.769-.314 1.245-.314.954 0 1.697.557 2.015 1.006.158.239.345.557.582.953l.558 1.088.08.159c2.04 4.002 3.819 7.605 5.276 10.789l.026.025.533 1.22.318.764c.243.612.294 1.221.213 1.857zm1.219-2.389c-.186-.583-.504-1.271-.9-2.093v-.03c-1.887-4.005-3.64-7.605-5.304-10.84l-.111-.162C15.313 1.461 14.464 0 11.998 0 9.56 0 8.524 1.694 7.465 3.897l-.081.16c-1.668 3.234-3.42 6.839-5.301 10.842v.053l-.558 1.219c-.21.504-.317.768-.345.847-1.35 3.712 1.432 6.972 4.8 6.972.027 0 .132 0 .264-.027h.372c1.75-.213 3.553-1.325 5.382-3.316 1.828 1.988 3.633 3.103 5.38 3.316h.372c.132.027.238.027.264.027 3.368.003 6.15-3.26 4.8-6.972z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Airbnb</title><path d="M12.001 18.275c-1.353-1.697-2.148-3.184-2.413-4.457-.263-1.027-.16-1.848.291-2.465.477-.71 1.188-1.056 2.121-1.056s1.643.345 2.12 1.063c.446.61.558 1.432.286 2.465-.291 1.298-1.085 2.785-2.412 4.458zm9.601 1.14c-.185 1.246-1.034 2.28-2.2 2.783-2.253.98-4.483-.583-6.392-2.704 3.157-3.951 3.74-7.028 2.385-9.018-.795-1.14-1.933-1.695-3.394-1.695-2.944 0-4.563 2.49-3.927 5.382.37 1.565 1.352 3.343 2.917 5.332-.98 1.085-1.91 1.856-2.732 2.333-.636.344-1.245.558-1.828.609-2.679.399-4.778-2.2-3.825-4.88.132-.345.395-.98.845-1.961l.025-.053c1.464-3.178 3.242-6.79 5.285-10.795l.053-.132.58-1.116c.45-.822.635-1.19 1.351-1.643.346-.21.77-.315 1.246-.315.954 0 1.698.558 2.016 1.007.158.239.345.557.582.953l.558 1.089.08.159c2.041 4.004 3.821 7.608 5.279 10.794l.026.025.533 1.22.318.764c.243.613.294 1.222.213 1.858zm1.22-2.39c-.186-.583-.505-1.271-.9-2.094v-.03c-1.889-4.006-3.642-7.608-5.307-10.844l-.111-.163C15.317 1.461 14.468 0 12.001 0c-2.44 0-3.476 1.695-4.535 3.898l-.081.16c-1.669 3.236-3.421 6.843-5.303 10.847v.053l-.559 1.22c-.21.504-.317.768-.345.847C-.172 20.74 2.611 24 5.98 24c.027 0 .132 0 .265-.027h.372c1.75-.213 3.554-1.325 5.384-3.317 1.829 1.989 3.635 3.104 5.382 3.317h.372c.133.027.239.027.265.027 3.37.003 6.152-3.261 4.802-6.975z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/airbus.svg b/assets/lib/simple-icons/icons/airbus.svg
index 2ed31c9a..e39bfd2b 100644
--- a/assets/lib/simple-icons/icons/airbus.svg
+++ b/assets/lib/simple-icons/icons/airbus.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Airbus icon</title><path d="M11.062 11.296c0 .74-.389 1.161-.993 1.304-.007 0 .967 1.531.967 1.531h-1.18l-1.427-2.277h1.006c.435 0 .597-.24.597-.532 0-.285-.156-.532-.59-.532H8.266v3.341H7.228V9.869h2.206c1.096 0 1.628.616 1.628 1.427m-5.573 2.835h1.038V9.869H5.489v4.262zM2.174 9.869L0 14.131h1.168l.352-.714h1.75l-.435-.895h-.873l.646-1.311h.013l1.453 2.92h1.194L3.095 9.869h-.921zm12.678 2.05c.409.143.688.519.688 1.019 0 .72-.577 1.194-1.46 1.194h-2.524V9.869h2.427c.863 0 1.376.461 1.376 1.148-.001.428-.176.72-.507.902m-2.258-.396h1.382a.368.368 0 0 0 .376-.376.367.367 0 0 0-.37-.376h-1.388v.752zm1.414 1.713a.435.435 0 0 0 .448-.441c0-.247-.195-.428-.448-.428h-1.414v.869h1.414m4.808-.986c0 .647-.298 1.006-.889 1.006-.584 0-.882-.359-.882-1.006V9.869h-1.064v2.303c0 1.317.694 2.05 1.946 2.05s1.953-.733 1.953-2.05V9.869h-1.064v2.381zm3.834-.688c-.985-.24-1.2-.263-1.2-.545 0-.218.246-.324.662-.324.551 0 1.139.138 1.473.344l.331-.869c-.428-.227-1.058-.389-1.791-.389-1.097 0-1.713.545-1.713 1.278 0 .789.46 1.109 1.518 1.337.824.182.999.295.999.526 0 .251-.227.363-.675.363a3.565 3.565 0 0 1-1.706-.415l-.318.908c.513.273 1.278.448 2.05.448 1.077 0 1.719-.5 1.719-1.337.001-.673-.433-1.104-1.349-1.325"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Airbus</title><path d="M11.062 11.294c0 .74-.389 1.162-.993 1.305-.007 0 .967 1.53.967 1.53h-1.18L8.43 11.853h1.006c.435 0 .597-.24.597-.532 0-.285-.156-.532-.59-.532H8.266v3.342H7.228V9.867h2.206c1.096 0 1.628.616 1.628 1.427M5.49 14.13h1.038V9.867H5.49zM2.174 9.867L0 14.13h1.168l.352-.714h1.75l-.435-.895h-.873l.646-1.312h.013l1.453 2.92h1.194L3.095 9.868zm12.679 2.05c.409.144.688.52.688 1.02 0 .72-.577 1.194-1.46 1.194h-2.525V9.867h2.428c.863 0 1.376.461 1.376 1.148-.001.428-.176.72-.507.902m-2.258-.396h1.382a.368.368 0 00.376-.376.367.367 0 00-.37-.376h-1.388zm1.414 1.714a.435.435 0 00.448-.441c0-.247-.195-.428-.448-.428h-1.414v.869h1.414m4.808-.986c0 .647-.298 1.006-.89 1.006-.583 0-.881-.36-.881-1.006V9.867h-1.064v2.304c0 1.317.694 2.05 1.946 2.05s1.953-.733 1.953-2.05V9.867h-1.064zm3.834-.689c-.985-.24-1.2-.263-1.2-.545 0-.218.246-.324.662-.324.55 0 1.139.138 1.473.344l.331-.869c-.428-.227-1.058-.389-1.791-.389-1.097 0-1.713.545-1.713 1.278 0 .79.46 1.11 1.518 1.338.824.182.999.295.999.526 0 .25-.227.363-.675.363a3.565 3.565 0 01-1.706-.415l-.318.908c.513.273 1.278.448 2.05.448 1.077 0 1.719-.5 1.719-1.337.001-.673-.433-1.105-1.35-1.326"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/aircall.svg b/assets/lib/simple-icons/icons/aircall.svg
index a6ad30bd..f5911dbe 100644
--- a/assets/lib/simple-icons/icons/aircall.svg
+++ b/assets/lib/simple-icons/icons/aircall.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Aircall icon</title><path d="M23.451 5.906a6.978 6.978 0 0 0-5.375-5.39C16.727.204 14.508 0 12 0S7.273.204 5.924.516a6.978 6.978 0 0 0-5.375 5.39C.237 7.26.034 9.485.034 12s.203 4.74.515 6.094a6.978 6.978 0 0 0 5.375 5.39C7.273 23.796 9.492 24 12 24s4.727-.204 6.076-.516a6.978 6.978 0 0 0 5.375-5.39c.311-1.354.515-3.578.515-6.094 0-2.515-.203-4.74-.515-6.094zm-5.873 12.396l-.003.001c-.428.152-1.165.283-2.102.377l-.147.014a.444.444 0 0 1-.45-.271 1.816 1.816 0 0 0-1.296-1.074c-.351-.081-.928-.134-1.58-.134s-1.229.053-1.58.134a1.817 1.817 0 0 0-1.291 1.062.466.466 0 0 1-.471.281 8 8 0 0 0-.129-.012c-.938-.094-1.676-.224-2.105-.377l-.003-.001a.76.76 0 0 1-.492-.713c0-.032.003-.066.005-.098.073-.979.666-3.272 1.552-5.89C8.5 8.609 9.559 6.187 10.037 5.714a1.029 1.029 0 0 1 .404-.26l.004-.002c.314-.106.892-.178 1.554-.178.663 0 1.241.071 1.554.178l.005.002a1.025 1.025 0 0 1 .405.26c.478.472 1.537 2.895 2.549 5.887.886 2.617 1.479 4.91 1.552 5.89.002.032.005.066.005.098a.76.76 0 0 1-.491.713z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Aircall</title><path d="M23.451 5.906a6.978 6.978 0 0 0-5.375-5.39C16.727.204 14.508 0 12 0S7.273.204 5.924.516a6.978 6.978 0 0 0-5.375 5.39C.237 7.26.034 9.485.034 12s.203 4.74.515 6.094a6.978 6.978 0 0 0 5.375 5.39C7.273 23.796 9.492 24 12 24s4.727-.204 6.076-.516a6.978 6.978 0 0 0 5.375-5.39c.311-1.354.515-3.578.515-6.094 0-2.515-.203-4.74-.515-6.094zm-5.873 12.396l-.003.001c-.428.152-1.165.283-2.102.377l-.147.014a.444.444 0 0 1-.45-.271 1.816 1.816 0 0 0-1.296-1.074c-.351-.081-.928-.134-1.58-.134s-1.229.053-1.58.134a1.817 1.817 0 0 0-1.291 1.062.466.466 0 0 1-.471.281 8 8 0 0 0-.129-.012c-.938-.094-1.676-.224-2.105-.377l-.003-.001a.76.76 0 0 1-.492-.713c0-.032.003-.066.005-.098.073-.979.666-3.272 1.552-5.89C8.5 8.609 9.559 6.187 10.037 5.714a1.029 1.029 0 0 1 .404-.26l.004-.002c.314-.106.892-.178 1.554-.178.663 0 1.241.071 1.554.178l.005.002a1.025 1.025 0 0 1 .405.26c.478.472 1.537 2.895 2.549 5.887.886 2.617 1.479 4.91 1.552 5.89.002.032.005.066.005.098a.76.76 0 0 1-.491.713z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/aircanada.svg b/assets/lib/simple-icons/icons/aircanada.svg
index 6a546934..a4f3ba2a 100644
--- a/assets/lib/simple-icons/icons/aircanada.svg
+++ b/assets/lib/simple-icons/icons/aircanada.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Air Canada icon</title><path d="M12.394 16.958c0-.789.338-.902 1.127-.451a54.235 54.235 0 0 0 2.704 1.465c0-.45.451-.789 1.24-.564.789.226 1.577.338 1.577.338s-.45-1.014-.676-1.464c-.338-.789 0-1.24.338-1.352 0 0-.45-.338-.789-.564-.676-.45-.563-1.014.113-1.24.902-.45 2.141-.9 2.141-.9-.338-.226-.789-.79-.338-1.578.45-.676 1.24-1.69 1.24-1.69H18.93c-.79 0-1.015-.676-1.015-1.127 0 0-1.239.901-2.14 1.465-.79.563-1.465 0-1.352-.902a37 37 0 0 0 .338-2.93c-.451.451-1.24.339-1.69-.337-.564-1.127-1.127-2.48-1.127-2.48S11.38 4 10.817 5.128c-.338.676-1.127.788-1.578.45a37 37 0 0 0 .338 2.93c.113.789-.563 1.352-1.352.789-.901-.564-2.253-1.465-2.253-1.465 0 .45-.226 1.014-1.014 1.127H2.817s.789 1.014 1.24 1.69c.45.676 0 1.352-.339 1.577 0 0 1.127.564 2.141.902.676.338.902.788.113 1.24-.226.225-.789.563-.789.563.45.112.789.563.45 1.352-.225.45-.675 1.464-.675 1.464s.788-.225 1.577-.338c.789-.225 1.127.226 1.24.564 0 0 1.352-.789 2.704-1.465.676-.45 1.127-.225 1.127.45v1.916c0 1.127-.226 2.254-.564 2.93-5.07-.564-9.352-4.62-9.352-10.028 0-5.521 4.62-10.029 10.366-10.029 5.747 0 10.367 4.508 10.367 10.029 0 5.183-4.057 9.464-9.24 10.028v1.352C19.268 22.592 24 17.746 24 11.775 24 5.352 18.592.282 11.944.282 5.408.282 0 5.352 0 11.662c0 5.521 4.169 10.14 9.69 11.155.902.225 1.465.338 2.028.901.564-1.126.676-3.38.676-4.62Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Air Canada</title><path d="M12.394 16.958c0-.789.338-.902 1.127-.451a54.235 54.235 0 0 0 2.704 1.465c0-.45.451-.789 1.24-.564.789.226 1.577.338 1.577.338s-.45-1.014-.676-1.464c-.338-.789 0-1.24.338-1.352 0 0-.45-.338-.789-.564-.676-.45-.563-1.014.113-1.24.902-.45 2.141-.9 2.141-.9-.338-.226-.789-.79-.338-1.578.45-.676 1.24-1.69 1.24-1.69H18.93c-.79 0-1.015-.676-1.015-1.127 0 0-1.239.901-2.14 1.465-.79.563-1.465 0-1.352-.902a37 37 0 0 0 .338-2.93c-.451.451-1.24.339-1.69-.337-.564-1.127-1.127-2.48-1.127-2.48S11.38 4 10.817 5.128c-.338.676-1.127.788-1.578.45a37 37 0 0 0 .338 2.93c.113.789-.563 1.352-1.352.789-.901-.564-2.253-1.465-2.253-1.465 0 .45-.226 1.014-1.014 1.127H2.817s.789 1.014 1.24 1.69c.45.676 0 1.352-.339 1.577 0 0 1.127.564 2.141.902.676.338.902.788.113 1.24-.226.225-.789.563-.789.563.45.112.789.563.45 1.352-.225.45-.675 1.464-.675 1.464s.788-.225 1.577-.338c.789-.225 1.127.226 1.24.564 0 0 1.352-.789 2.704-1.465.676-.45 1.127-.225 1.127.45v1.916c0 1.127-.226 2.254-.564 2.93-5.07-.564-9.352-4.62-9.352-10.028 0-5.521 4.62-10.029 10.366-10.029 5.747 0 10.367 4.508 10.367 10.029 0 5.183-4.057 9.464-9.24 10.028v1.352C19.268 22.592 24 17.746 24 11.775 24 5.352 18.592.282 11.944.282 5.408.282 0 5.352 0 11.662c0 5.521 4.169 10.14 9.69 11.155.902.225 1.465.338 2.028.901.564-1.126.676-3.38.676-4.62Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/airchina.svg b/assets/lib/simple-icons/icons/airchina.svg
new file mode 100644
index 00000000..b96b1954
--- /dev/null
+++ b/assets/lib/simple-icons/icons/airchina.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Air China</title><path d="M6.75 23.377c3.431.96 7.361-1.449 7.361-5.442v-4.713c0-1.377 1.147-3.19 3.212-3.19 2.17 0 3.201 1.949 3.201 3.19 0 .792-.313 2.377-1.804 2.377-1.188 0-1.95-1.21-1.574-2.2-.083.333.093.657.449.657.343 0 .532-.324.468-.73 0-.083-.104-.834-.939-.834-.698 0-.927.636-.927.948v4.193c0 4.483-4.88 7.798-9.447 5.744M3.508 19.99s2.303 2.336 5.338.573c2.012-1.167 2.075-3.598 2.075-3.598v-5.431s-.084-2.722 2.366-4.672c1.711-1.345 3.296-1.252 4.39-1.387 2.806-.344 4.057-2.116 4.057-2.116.031.302-.272 3.555-3.785 4.483-.72.188-4.578-.187-4.578 4.275v5.38c0 1.126-.27 3.118-2.377 4.526-2.169 1.439-5.683 1.21-7.486-2.033M1.047 8.759H3.85c0-.5.428-1.471 1.523-1.471.427 0 .5.095 1.052-.02.72-.24 1.043-.657 1.19-.99 0 0 .28 1.187-.845 1.813-.637.345-1.616.074-1.616.074s-.792-.115-.897.593c.449 0 1.147.449 1.147 1.22v6.528c0 .469.375.96.949.96a.95.95 0 0 0 .949-.96v-4.578c0-6.757 5.255-9.56 8.31-9.79 2.533-.188 4.244.04 7.34-2.138 0 0-.97 3.796-5.358 4.703-.804.166-3.224-.115-5.497 2.252-1.803 1.877-1.99 3.608-1.99 5.891v4.035c0 1.762-1.419 3.545-3.587 3.545-2.096 0-3.566-1.668-3.566-3.545v-6.85c0-.563-.406-1.074-1.054-1.074h-.854Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/airfrance.svg b/assets/lib/simple-icons/icons/airfrance.svg
index 392e6e05..7d39a649 100644
--- a/assets/lib/simple-icons/icons/airfrance.svg
+++ b/assets/lib/simple-icons/icons/airfrance.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Air France icon</title><path d="M13.776 3.9L5.184 16.332C4.051 17.969 2.208 19.548 0 19.721v.379h9.552c2.544 0 4.397-1.656 5.616-3.48L24 3.9Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Air France</title><path d="M13.776 3.9L5.184 16.332C4.051 17.969 2.208 19.548 0 19.721v.379h9.552c2.544 0 4.397-1.656 5.616-3.48L24 3.9Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/airplayaudio.svg b/assets/lib/simple-icons/icons/airplayaudio.svg
index c494e5a7..fb6350c4 100644
--- a/assets/lib/simple-icons/icons/airplayaudio.svg
+++ b/assets/lib/simple-icons/icons/airplayaudio.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>AirPlay Audio icon</title><path d="M11.9082.1836c-2.8774.0227-5.7566 1.0743-8.045 3.1719-4.8816 4.4748-5.1662 12.0812-.6913 16.9629.2034.244.4473.4473.6914.6914.122.0813.2861.083.4082-.0391l.5293-.6113c.122-.122.122-.3252 0-.4473C.5293 15.9661.2438 9.254 4.2305 4.9824 8.2172.711 14.8887.4274 19.1602 4.4141c4.2714 3.9867 4.555 10.6562.5683 14.9277-.2034.2034-.365.4076-.5683.5703-.122.122-.122.3252 0 .4473l.5293.6113c.122.122.3252.1204.4472.039 4.8817-4.5155 5.1663-12.0811.6914-16.9628-2.3989-2.5934-5.6588-3.889-8.9199-3.8633zm.3867 3.5176C10.0982 3.63 7.8715 4.3932 6.1426 6c-3.4579 3.2138-3.661 8.6242-.4473 12.082.122.122.2435.2842.4063.4063.122.122.3252.122.4472 0l.5293-.6094c.122-.122.122-.3252 0-.4473-1.4238-1.3424-2.2773-3.2547-2.2773-5.248 0-3.946 3.2122-7.1602 7.1582-7.1602 3.946 0 7.1601 3.2532 7.1601 7.1993 0 1.9526-.8144 3.8665-2.2382 5.209-.122.122-.122.3252 0 .4472l.5293.6094c.122.122.3252.163.4472.041 3.4579-3.2545 3.622-8.6652.4082-12.123-1.6069-1.729-3.774-2.634-5.9707-2.7051zm-.2656 3.3164c-1.3221-.0204-2.654.4662-3.6914 1.4629-2.0747 1.9933-2.1145 5.2475-.1211 7.3222l.121.123c.1221.1221.3253.1221.4474 0l.5293-.6112c.122-.122.122-.3253 0-.4473-.6916-.6916-1.0977-1.6666-1.0977-2.6836a3.732 3.732 0 013.7422-3.7422 3.732 3.732 0 013.7422 3.7422c0 1.017-.4064 1.9513-1.1387 2.6836-.122.122-.122.3252 0 .4473l.5293.6113c.122.122.3252.122.4473 0 2.034-1.9934 2.1164-5.2476.123-7.3223-.9967-1.0373-2.3107-1.5656-3.6328-1.586zm.0059 7.7441c-.1373-.005-.2803.0448-.4024.1465l-.039.041-7.1602 8.0547c-.1627.2034-.1624.488.041.6914.0814.0814.2019.123.2832.123h14.3613c.2441 0 .4883-.2035.4883-.4882 0-.122-.0397-.2448-.121-.3262l-7.0801-8.0547c-.1018-.122-.2338-.1824-.3711-.1875Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>AirPlay Audio</title><path d="M11.908.183a12.012 12.012 0 00-8.044 3.172c-4.882 4.475-5.166 12.08-.692 16.962.204.244.448.447.692.692a.315.315 0 00.408-.04l.53-.61a.32.32 0 000-.448C.53 15.965.243 9.253 4.23 4.982 8.217.711 14.889.427 19.16 4.414c4.271 3.986 4.555 10.655.568 14.927-.203.203-.365.407-.568.57a.32.32 0 000 .447l.53.611a.37.37 0 00.446.04c4.882-4.516 5.166-12.081.692-16.962a11.98 11.98 0 00-8.92-3.864zm.387 3.518A8.607 8.607 0 006.143 6c-3.458 3.213-3.66 8.623-.447 12.08.122.123.243.285.406.407a.319.319 0 00.447 0l.53-.61a.32.32 0 000-.446A7.263 7.263 0 014.8 12.183c0-3.946 3.212-7.16 7.158-7.16s7.16 3.253 7.16 7.199a7.207 7.207 0 01-2.238 5.209.319.319 0 000 .447l.529.61c.122.121.325.162.447.04a8.599 8.599 0 00.408-12.122 8.494 8.494 0 00-5.97-2.705zm-.266 3.316A5.198 5.198 0 008.34 8.48c-2.075 1.993-2.115 5.247-.122 7.322l.121.123a.319.319 0 00.447 0l.53-.611a.32.32 0 000-.448 3.814 3.814 0 01-1.098-2.683 3.732 3.732 0 013.742-3.742 3.732 3.732 0 013.742 3.742c0 1.017-.406 1.951-1.139 2.683a.32.32 0 000 .448l.53.61a.32.32 0 00.447 0c2.034-1.992 2.116-5.246.123-7.321a5.128 5.128 0 00-3.633-1.586zm.006 7.744a.599.599 0 00-.402.146l-.04.041-7.159 8.055a.506.506 0 00.041.69.437.437 0 00.283.124h14.36a.495.495 0 00.489-.488.463.463 0 00-.121-.326l-7.08-8.055a.5.5 0 00-.37-.187z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/airplayvideo.svg b/assets/lib/simple-icons/icons/airplayvideo.svg
index 89da5b98..1bd4b787 100644
--- a/assets/lib/simple-icons/icons/airplayvideo.svg
+++ b/assets/lib/simple-icons/icons/airplayvideo.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>AirPlay Video icon</title><path d="M3.412 1.32c-1.178 0-1.584.122-2.031.366A2.449 2.449 0 00.365 2.7C.122 3.148 0 3.553 0 4.771v9.137c0 1.178.122 1.585.365 2.031.244.447.57.772 1.016 1.016.406.244.813.365 2.031.365h2.72l1.138-1.34H3.006c-.325.041-.69-.001-1.016-.164-.203-.08-.366-.283-.488-.486-.122-.325-.203-.65-.162-1.016V4.406c-.04-.325 0-.69.162-1.015.081-.203.285-.365.488-.487.325-.122.65-.204 1.016-.164h17.867c.325-.04.69.002 1.016.164.203.082.364.284.486.487.122.324.203.65.162 1.015v9.95c.04.324 0 .69-.162 1.015-.081.203-.283.365-.486.486-.325.122-.65.203-1.016.163h-4.264l1.137 1.341 2.803-.04c1.218 0 1.623-.122 2.07-.366a2.449 2.449 0 001.016-1.016c.243-.406.365-.813.365-2.03V4.77c0-1.218-.122-1.623-.365-2.07a2.449 2.449 0 00-1.016-1.015c-.447-.244-.852-.366-2.07-.366H3.412zm8.451 12.198a.501.501 0 00-.37.187l-7.106 8.162a.465.465 0 00-.123.326.47.47 0 00.488.487h14.293c.122 0 .245-.04.326-.121.203-.163.204-.489.041-.692l-7.107-8.162-.041-.04a.594.594 0 00-.4-.147z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>AirPlay Video</title><path d="M3.412 1.32c-1.178 0-1.584.122-2.031.366A2.449 2.449 0 00.365 2.7C.122 3.148 0 3.553 0 4.771v9.137c0 1.178.122 1.585.365 2.031.244.447.57.772 1.016 1.016.406.244.813.365 2.031.365h2.72l1.138-1.34H3.006c-.325.041-.69-.001-1.016-.164-.203-.08-.366-.283-.488-.486-.122-.325-.203-.65-.162-1.016V4.406c-.04-.325 0-.69.162-1.015.081-.203.285-.365.488-.487.325-.122.65-.204 1.016-.164h17.867c.325-.04.69.002 1.016.164.203.082.364.284.486.487.122.324.203.65.162 1.015v9.95c.04.324 0 .69-.162 1.015-.081.203-.283.365-.486.486-.325.122-.65.203-1.016.163h-4.264l1.137 1.341 2.803-.04c1.218 0 1.623-.122 2.07-.366a2.449 2.449 0 001.016-1.016c.243-.406.365-.813.365-2.03V4.77c0-1.218-.122-1.623-.365-2.07a2.449 2.449 0 00-1.016-1.015c-.447-.244-.852-.366-2.07-.366H3.412zm8.451 12.198a.501.501 0 00-.37.187l-7.106 8.162a.465.465 0 00-.123.326.47.47 0 00.488.487h14.293c.122 0 .245-.04.326-.121.203-.163.204-.489.041-.692l-7.107-8.162-.041-.04a.594.594 0 00-.4-.147z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/airtable.svg b/assets/lib/simple-icons/icons/airtable.svg
index 3461a7ea..df8575e5 100644
--- a/assets/lib/simple-icons/icons/airtable.svg
+++ b/assets/lib/simple-icons/icons/airtable.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Airtable icon</title><path d="M11.992 1.966c-.434 0-.87.086-1.28.257L1.779 5.917c-.503.208-.49.908.012 1.116l8.982 3.558a3.266 3.266 0 0 0 2.454 0l8.982-3.558c.503-.196.503-.908.012-1.116l-8.957-3.694a3.255 3.255 0 0 0-1.272-.257zM23.4 8.056a.589.589 0 0 0-.222.045l-10.012 3.877a.612.612 0 0 0-.38.564v8.896a.6.6 0 0 0 .821.552L23.62 18.1a.583.583 0 0 0 .38-.551V8.653a.6.6 0 0 0-.6-.596zM.676 8.095a.644.644 0 0 0-.48.19C.086 8.396 0 8.53 0 8.69v8.355c0 .442.515.737.908.54l6.27-3.006.307-.147 2.969-1.436c.466-.22.43-.908-.061-1.092L.883 8.138a.57.57 0 0 0-.207-.044z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Airtable</title><path d="M11.992 1.966c-.434 0-.87.086-1.28.257L1.779 5.917c-.503.208-.49.908.012 1.116l8.982 3.558a3.266 3.266 0 0 0 2.454 0l8.982-3.558c.503-.196.503-.908.012-1.116l-8.957-3.694a3.255 3.255 0 0 0-1.272-.257zM23.4 8.056a.589.589 0 0 0-.222.045l-10.012 3.877a.612.612 0 0 0-.38.564v8.896a.6.6 0 0 0 .821.552L23.62 18.1a.583.583 0 0 0 .38-.551V8.653a.6.6 0 0 0-.6-.596zM.676 8.095a.644.644 0 0 0-.48.19C.086 8.396 0 8.53 0 8.69v8.355c0 .442.515.737.908.54l6.27-3.006.307-.147 2.969-1.436c.466-.22.43-.908-.061-1.092L.883 8.138a.57.57 0 0 0-.207-.044z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ajv.svg b/assets/lib/simple-icons/icons/ajv.svg
new file mode 100644
index 00000000..10463ade
--- /dev/null
+++ b/assets/lib/simple-icons/icons/ajv.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Ajv</title><path d="M8.705 4.718a980.02 980.02 0 0 1 1.211 3.19l2.962 7.886c.198.526-.054 1.17-.583 1.366-.311.116-.655.06-.926-.11l-1.454 1.418c.81.775 1.985 1.034 3.116.614 1.602-.593 2.387-2.416 1.79-4.008L10.984 4.718zm4.153.013 4.57 11.72 1.924.008L24 4.783l-2.404-.011-3.193 8.832-3.141-8.861zm-8.309.013L0 16.421l2.354.01 1.092-2.91 4.112.019 1.08 2.92 2.355.012L6.572 4.754zm.999 2.592L7.15 11.94l-3.316-.016z"/></svg>
diff --git a/assets/lib/simple-icons/icons/alacritty.svg b/assets/lib/simple-icons/icons/alacritty.svg
new file mode 100644
index 00000000..95d82251
--- /dev/null
+++ b/assets/lib/simple-icons/icons/alacritty.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Alacritty</title><path d="m10.065 0-8.57 21.269h3.595l6.91-16.244 6.91 16.244h3.594l-8.57-21.269zm1.935 9.935c-0.76666 1.8547-1.5334 3.7094-2.298 5.565 1.475 4.54 1.475 4.54 2.298 8.5 0.823-3.96 0.823-3.96 2.297-8.5-0.76637-1.8547-1.5315-3.7099-2.297-5.565z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/albertheijn.svg b/assets/lib/simple-icons/icons/albertheijn.svg
new file mode 100644
index 00000000..99d10e78
--- /dev/null
+++ b/assets/lib/simple-icons/icons/albertheijn.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Albert Heijn</title><path d="M15.652 0c-.354.002-.714.09-1.047.276L4.475 5.924c-.456.26-.881.716-1.075 1.362l-2.718 9.44c-.326 1.13.311 2.314 1.423 2.646l15.968 4.542c1.111.33 2.277-.318 2.603-1.448l2.641-9.258c.172-.543.076-1.213-.192-1.737L17.59 1.162A2.19 2.19 0 0 0 15.652 0zM12.97 6.373s-.008 4.23 0 4.225c.899-1.295 1.712-2.577 3.234-2.577 1.684-.001 2.597 1.409 2.602 2.595l-.007 7.596h-1.891l-.009-7.19c0-.988-.793-.986-.804-.986-.64 0-1.816 1.605-3.125 3.386v4.793l-1.913.002-.002-2.219S9.79 18.217 7.897 18.22c-2.148 0-2.877-1.476-2.882-5.015-.004-3.37.474-5.175 2.777-5.177 1.751-.001 3.256 2.55 3.256 2.55V8.963zm-5.15 3.658c-.88 0-.957.93-.954 3.17.003 2.242.124 3.115.95 3.115 1.124-.001 2.895-2.86 2.895-2.86S8.955 10.03 7.82 10.03z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/aldinord.svg b/assets/lib/simple-icons/icons/aldinord.svg
new file mode 100644
index 00000000..975a24dc
--- /dev/null
+++ b/assets/lib/simple-icons/icons/aldinord.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Aldi Nord</title><path d="M13.812 2.057 6.086 13.73c-.349.523-.581.89-.592 1.461-.01.541.128 1.027.395 1.495h1.46a2.11 2.11 0 0 1-.546-1.531c.007-.125.03-.28.067-.405h9.833a1.933 1.933 0 0 0-.297-.583H7.145a11.3 11.3 0 0 1 .379-.604l.507-.76h7.47l-.408-.614H8.44l6.702-10.132zm-3.502 0L3.092 12.963c-.549.823-.806 1.304-.806 2.068 0 .871.232 1.255.409 1.655h1.153a4.007 4.007 0 0 1-.096-.232 3.327 3.327 0 0 1-.233-1.23c.02-.811.302-1.356.772-2.058l7.381-11.109zm6.34 14.629c.338-.352.58-.927.547-1.532-.028-.517-.343-1.026-.72-1.591l-4.234-6.35.648-.974 4.993 7.491c.348.523.58.89.592 1.461a2.833 2.833 0 0 1-.395 1.495h-1.43zm3.508 0c.041-.09.062-.144.094-.23.123-.324.27-.768.26-1.231-.02-.812-.302-1.357-.773-2.059l-5.745-8.58.665-.996 6.25 9.373c.548.824.805 1.303.805 2.068 0 .871-.232 1.255-.409 1.655zm-17.53.457v4.8h18.743v-4.8zm3.588.571h1.672l1.873 3.658H8.104l-.176-.385H6.177L6 21.372H4.343zm3.761 0h1.67v2.601h1.435v1.057H9.977zm3.422 0h2.43c1.002 0 1.814.82 1.814 1.83a1.822 1.822 0 0 1-1.815 1.828h-2.43zm4.614 0h1.644v3.658h-1.644zm-2.974 1.034v1.59h.352c.41 0 .743-.356.743-.795 0-.44-.332-.795-.743-.795zm-7.996.465-.374.811h.767zm.84-6.189h7.767l.614.922H7.276c.088-.145.607-.922.607-.922m4.035-10.967L4.488 13.24c-.465.695-.731 1.214-.75 1.99-.01.452.128 1.013.337 1.457h1.576a2.942 2.942 0 0 1-.376-1.497c.012-.615.266-1.01.614-1.531l7.678-11.6zm6.431 14.629a2.94 2.94 0 0 0 .376-1.497c-.012-.615-.266-1.01-.613-1.532l-5.079-7.625.827-1.247 5.652 8.454c.465.695.732 1.214.75 1.99.011.452-.128 1.013-.338 1.457H18.35zM23.429 0H.57v24h22.86zm-.915 23.086H1.486V.914h21.028z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/aldisud.svg b/assets/lib/simple-icons/icons/aldisud.svg
new file mode 100644
index 00000000..c4268511
--- /dev/null
+++ b/assets/lib/simple-icons/icons/aldisud.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Aldi S&#252;d</title><path d="M18.164 10.92c-.243-.558-.558-.655-1.044-.655h-4.368l-.412 1.189a.727.727 0 0 1-.097.243h5.533c.315 0 .582.048.8.315h.049c0 .024-.437-1.02-.461-1.092zm-.898-2.135c-.243-.51-.534-.583-1.02-.583h-2.79l-.485 1.432h3.955c.364 0 .631.049.825.315h.049s-.486-1.043-.534-1.164zm-.874-2.063c-.267-.534-.534-.582-1.019-.582h-1.238l-.485 1.43h2.403c.34 0 .63.049.825.316h.048c0-.025-.485-1.02-.534-1.165zM9.355 3.519c-.68 0-.97.485-1.238 1.237L5.424 12.74h.68c.679 0 .97-.485 1.237-1.237l2.354-6.94c.194-.607.485-.947.922-.996V3.52zm4.416-.025c-.679 0-.97.486-1.237 1.238l-2.354 6.916c-.194.607-.461.947-.898.995v.049h1.213c.68 0 .971-.486 1.238-1.238l2.354-6.916c.194-.607.485-.946.922-.995v-.049zm-2.208 0c-.68 0-.97.486-1.237 1.238l-2.33 6.94c-.194.607-.461.947-.898.995v.049h1.213c.68 0 .971-.485 1.238-1.238l2.354-6.916c.194-.606.485-.946.922-.995V3.52c-.218-.025-1.213-.025-1.262-.025zm.364 16.842c-.558 0-.655-.243-.655-.825v-.923h.461v1.044c0 .267.024.388.218.388.17 0 .219-.097.219-.388v-1.044h.437v.923c0 .63-.17.825-.68.825zm.316-1.917a.217.217 0 0 1-.219-.219c0-.121.097-.242.219-.242.121 0 .218.12.218.242a.217.217 0 0 1-.218.219zm-.631 0a.217.217 0 0 1-.219-.219c0-.121.097-.242.219-.242.121 0 .218.12.218.242a.217.217 0 0 1-.218.219zm1.31 1.868v-1.699h.485c.607 0 .874.122.874.85s-.267.85-.874.85zm.558-.291c.243 0 .34-.146.34-.558 0-.388-.097-.558-.34-.558h-.097v1.116zm-3.154.34c-.267 0-.461-.049-.559-.073l.073-.316c.17.049.291.073.389.073.12 0 .266-.024.266-.17 0-.097-.12-.17-.242-.242h-.024c-.195-.122-.413-.243-.413-.51 0-.315.218-.485.63-.485.22 0 .34.024.51.073l-.072.29a.924.924 0 0 0-.364-.072c-.146 0-.243.048-.243.17 0 .097.121.17.267.242h.024c.194.122.437.243.437.51 0 .316-.218.51-.68.51zM8.36 17.569c-.049-.194-.121-.534-.17-.68H6.855c-.048.146-.12.486-.17.68H5.497c.51-1.601.728-2.257 1.31-3.688h1.457c.558 1.407.8 2.087 1.31 3.688zm-1.335-1.456h.995c-.145-.485-.412-1.31-.485-1.553-.097.219-.364 1.044-.51 1.553zm3.834 1.456c-.63 0-.97-.364-.97-.995v-2.693h1.116v2.475c0 .315.097.388.413.388h1.092l.17.825zm6.334-3.688h1.116v3.688h-1.116zm-4.077 3.688v-3.688h1.53c1.14 0 1.916.46 1.916 1.82 0 1.31-.63 1.868-1.868 1.868zm1.117-.8h.315c.68 0 .946-.316.946-1.068 0-.728-.34-1.02-.995-1.02h-.266zm5.532 4.732c0 .17-.145.29-.29.29H4.55a.295.295 0 0 1-.291-.29V2.475c0-.17.145-.291.291-.291h14.924c.17 0 .291.146.291.291zM4.065 1.626a.383.383 0 0 0-.389.388v19.948c0 .218.17.388.389.388h15.87c.219 0 .389-.17.389-.388V2.014a.383.383 0 0 0-.389-.388zM2.803 0a.808.808 0 0 0-.801.8v22.4c0 .436.364.8.8.8h18.395a.808.808 0 0 0 .801-.8V.8c0-.436-.364-.8-.8-.8zm.704.946h17.01a.54.54 0 0 1 .535.534l-.025 21.04a.539.539 0 0 1-.534.534H3.507a.539.539 0 0 1-.534-.534V1.48a.54.54 0 0 1 .534-.534z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/alfaromeo.svg b/assets/lib/simple-icons/icons/alfaromeo.svg
index 9bd6d72e..365b4715 100644
--- a/assets/lib/simple-icons/icons/alfaromeo.svg
+++ b/assets/lib/simple-icons/icons/alfaromeo.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Alfa Romeo icon</title><path d="M13.539 5.4052a.2158.2158 0 1 0 0-.4318.2158.2158 0 1 0 0 .4318zm-9.3055 1.576l-.6533 1.2987-1.3365-.7-.276.5514a.4317.4317 0 0 1 .0917-.0097c.0556 0 .1107.0105.1536.0301l1.4923.7814.8869-1.764zm15.7221.4324l.3109-.1689.509.9792.3498-.1894-.5095-.9791.2969-.1608.7336 1.4093.3494-.1896-1.0138-1.9486c-.0371.0863-.1084.1592-.1651.1888l-1.451.787 1.0071 1.9358.3497-.1897zm-7.2864-2.0084a.2158.2158 0 1 0 0-.4318.2158.2158 0 1 0 0 .4318zm5.0574 1.5187l.0027.0031c1.1982 1.3498 1.9262 3.1265 1.9262 5.0732 0 3.1035-1.8496 5.7747-4.5065 6.9728-.009.0044-.0178.0093-.0271.0134l.0021-.0018.025-.0116c.4345-.2065.7352-.6488.7352-1.1619 0-.7107-.576-1.2865-1.2867-1.2865l-1.3545-.0012a.1656.1656 0 1 1 0-.3312h2.2875c1.0767 0 1.9496-.8729 1.9496-1.9497 0-1.0767-.8729-1.9497-1.9496-1.9497l-.2906.0003h-1.9184a.1656.1656 0 1 1 0-.3311l1.6868-.0019c1.7798 0 3.2227-1.4428 3.2227-3.2226a3.207 3.207 0 0 0-.5307-1.772l-.0085-.012a.023.023 0 0 1-.0046-.0135c0-.013.0106-.0235.0236-.0235.008 0 .0114.0012.0158.0074zm-3.258 12.3178a7.6339 7.6339 0 0 1-2.459.4041c-1.148 0-2.2368-.2534-3.214-.707v-6.0254h2.1652a2.4299 2.4299 0 0 1-.1227-.765c0-.4029.0986-.783.2719-1.1181H8.7957v-5.969c.9771-.4535 2.0658-.707 3.214-.707 1.3347 0 2.5898.3422 3.6818.9435h.0007c.1562.0988.26.273.26.4717a.5572.5572 0 0 1-.5573.5572l-.0122-.0004h-.1792l-.76.0009c-.2677 0-.4145.079-.5066.159-.2655.2302-.1745.5029-.7192.5029h-1.5022c.2032.4685.6696.8067.7856.8855h1.845a.1784.1784 0 0 1 .1655.112.1561.1561 0 0 1 .0102.0971.1786.1786 0 0 1-.1757.1483H12.468c-.1443.0754-.5827.3489-.785.9661h3.39a.4006.4006 0 1 1 0 .8012l-1.7171-.0002c-1.1836 0-2.1431.9595-2.1431 2.143 0 1.1837.9595 2.1432 2.143 2.1432h2.1414c.0915 0 .1656.0765.1656.168a.1638.1638 0 0 1-.1656.1634h-2.193c-.8671 0-1.5701.7028-1.5701 1.5697 0 .8671.703 1.57 1.57 1.57l.8284.0028c.4185 0 .7632.3512.7632.7667 0 .3396-.2049.5791-.427.7158zm-7.5559-8.2114H4.425c.2368-1.8715 1.1506-3.532 2.4878-4.7287zm0 6.6683c-1.3505-1.209-2.2688-2.8907-2.4943-4.7852h2.4943zm5.097-13.7579c-4.451 0-8.0594 3.6083-8.0594 8.0595 0 4.4508 3.6084 8.0594 8.0593 8.0594 4.4512 0 8.0595-3.6086 8.0595-8.0594 0-4.4512-3.6083-8.0595-8.0595-8.0595zm-.301 2.009h1.9023a.1443.1443 0 0 0 .144-.144.1445.1445 0 0 0-.144-.1442h-1.9023a.1445.1445 0 0 0-.144.1442c0 .0793.0649.144.144.144zm.072-.5445a.2159.2159 0 1 0 0-.4318.2158.2158 0 1 0 0 .4318zm.2988 2.6522l.027-.0257v-.0002l-.027-.0259c-.421-.3057-.6075-.6844-.7201-.9775-.0777-.202-.1652-.3679-.2925-.4893-.1322-.1258-.2285-.1927-.4192-.1927a.9713.9713 0 0 0-.2302.0292l-.0456.011.0283.0525c.0422.0783.1205.2238.2576.2656a.1193.1193 0 0 0 .0356.0046.386.386 0 0 0 .0332-.0019c.009-.0008.0178-.0017.0261-.0017.0093 0 .0123.0013.0124.0013.148.0856.2255.7166.2255 1.031 0 .0537-.0222.078-.0718.078-.0493 0-.1136-.027-.153-.0641-.0867-.0935-.2107-.146-.347-.146-.2223 0-.458.1499-.4673.4005v.0509c.0094.2506.245.4005.4674.4005.1362 0 .2602-.0525.3469-.146.0394-.037.1037-.0639.153-.0639.0496 0 .0718.024.0718.0778 0 .3144-.0776.9454-.2255 1.031 0 0-.003.0012-.0124.0012a.2845.2845 0 0 1-.026-.0016.386.386 0 0 0-.0333-.0019.1194.1194 0 0 0-.0356.0046c-.1371.0418-.2154.1873-.2576.2656l-.0283.0525.0456.0112a.9836.9836 0 0 0 .2302.029c.1907 0 .287-.0667.4192-.1927.1273-.1214.2148-.2873.2925-.4893.1126-.2931.299-.6718.7201-.9776zm-9.4412 2.1223l-.1222.8035-.6999-.5284zm-1.2738.6372a.2464.2464 0 0 1 .097-.0193.2522.2522 0 0 1 .1233.0318l.0028.0016 1.5266 1.1735.0775-.5098-.3103-.2336.1861-1.2242.3638-.1216.0773-.5089-2.0309.683zM12 23.52C5.6378 23.52.48 18.3622.48 12S5.6379.4803 12 .4803C18.3622.4803 23.5198 5.6378 23.5198 12c0 6.3622-5.1575 11.52-11.5198 11.52zM12 .0003C5.3727.0003 0 5.3728 0 12c0 6.6272 5.3727 11.9997 12 11.9997 6.6274 0 12-5.3725 12-11.9997C24 5.3728 18.6274.0003 12 .0003zm2.6675 2.643c.0793-.23.2747-.3568.5505-.3568.1153 0 .2378.023.364.0684.4398.1581.6498.4752.5349.8078-.0796.2313-.2755.3589-.5513.3589-.116 0-.2393-.0232-.3665-.0689-.4384-.1575-.6471-.4752-.5316-.8095zm.3924 1.2166c.195.0701.389.1057.5764.1057h.0001c.4753 0 .8395-.2332.9743-.624.0951-.276.052-.57-.1214-.828-.1655-.2464-.4383-.4475-.7682-.566-.1902-.0683-.3816-.103-.5682-.103-.4793 0-.8453.2316-.9795.6199-.1917.5552.181 1.1422.8865 1.3954zm3.0944.1594l-.1837 1.4554.023.0215 1.3938-.3266-.766 1.037.3757.3504 1.1621-1.5327-.4317-.4023-1.2158.2723.1485-1.2671-.452-.4215h-.0004l-.0554-.0512c-.0045.0915-.0427.184-.0945.234l-1.2044 1.1699.3777.3522zm3.6243 7.4815a.5396.5396 0 0 1-.0919.008c-.3011 0-.5317-.2627-.602-.6852-.0776-.4672.0937-.8074.437-.8671a.5656.5656 0 0 1 .0904-.0076c.2959 0 .5317.2678.6006.6827.078.4686-.0923.8099-.4341.8692zm.8493-.9418c-.1124-.6738-.5424-1.1443-1.0459-1.1443a.8997.8997 0 0 0-.1481.0128c-.568.0989-.8894.7165-.7643 1.4687.1143.6858.5346 1.1466 1.0457 1.1466a.883.883 0 0 0 .1512-.0132c.5663-.0983.8867-.7167.7614-1.4706zM12.4323 1.7271h.0001c.1613 0 .2707.1156.2722.288.0014.174-.104.2832-.2751.2846l-.9892.0087-.005-.5726zm-1.495 1.5232l.5109-.0045-.0045-.532.8572-.0077.3746.5292.5696-.005-.4303-.5697.053-.0254c.2187-.1048.3427-.3229.3402-.5984-.0037-.4345-.29-.7154-.7288-.7154l-1.5587.0134v.0006l-.09.0005c.0533.0645.0872.1498.0923.2213zm-3.3844.3238l-.7046.4047-.0227-.8766zm-1.1647-.4215l.0006.0034.0334 1.927.4472-.2571-.0108-.3882 1.0735-.6173.3217.209.4463-.2565-1.7995-1.1634-.64.3654a.2541.2541 0 0 1 .1276.1777zM3.748 5.5746L4.9572 6.735l.3507-.3805-.4455-.4277.744-.8074-.2887-.2772-.7443.8074-.344-.3301 1.0713-1.1627-.2887-.277-1.4859 1.6131c.0782.0052.1643.036.22.0802l.0018.0014Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Alfa Romeo</title><path d="M13.539 5.4052a.2158.2158 0 1 0 0-.4318.2158.2158 0 1 0 0 .4318zm-9.3055 1.576l-.6533 1.2987-1.3365-.7-.276.5514a.4317.4317 0 0 1 .0917-.0097c.0556 0 .1107.0105.1536.0301l1.4923.7814.8869-1.764zm15.7221.4324l.3109-.1689.509.9792.3498-.1894-.5095-.9791.2969-.1608.7336 1.4093.3494-.1896-1.0138-1.9486c-.0371.0863-.1084.1592-.1651.1888l-1.451.787 1.0071 1.9358.3497-.1897zm-7.2864-2.0084a.2158.2158 0 1 0 0-.4318.2158.2158 0 1 0 0 .4318zm5.0574 1.5187l.0027.0031c1.1982 1.3498 1.9262 3.1265 1.9262 5.0732 0 3.1035-1.8496 5.7747-4.5065 6.9728-.009.0044-.0178.0093-.0271.0134l.0021-.0018.025-.0116c.4345-.2065.7352-.6488.7352-1.1619 0-.7107-.576-1.2865-1.2867-1.2865l-1.3545-.0012a.1656.1656 0 1 1 0-.3312h2.2875c1.0767 0 1.9496-.8729 1.9496-1.9497 0-1.0767-.8729-1.9497-1.9496-1.9497l-.2906.0003h-1.9184a.1656.1656 0 1 1 0-.3311l1.6868-.0019c1.7798 0 3.2227-1.4428 3.2227-3.2226a3.207 3.207 0 0 0-.5307-1.772l-.0085-.012a.023.023 0 0 1-.0046-.0135c0-.013.0106-.0235.0236-.0235.008 0 .0114.0012.0158.0074zm-3.258 12.3178a7.6339 7.6339 0 0 1-2.459.4041c-1.148 0-2.2368-.2534-3.214-.707v-6.0254h2.1652a2.4299 2.4299 0 0 1-.1227-.765c0-.4029.0986-.783.2719-1.1181H8.7957v-5.969c.9771-.4535 2.0658-.707 3.214-.707 1.3347 0 2.5898.3422 3.6818.9435h.0007c.1562.0988.26.273.26.4717a.5572.5572 0 0 1-.5573.5572l-.0122-.0004h-.1792l-.76.0009c-.2677 0-.4145.079-.5066.159-.2655.2302-.1745.5029-.7192.5029h-1.5022c.2032.4685.6696.8067.7856.8855h1.845a.1784.1784 0 0 1 .1655.112.1561.1561 0 0 1 .0102.0971.1786.1786 0 0 1-.1757.1483H12.468c-.1443.0754-.5827.3489-.785.9661h3.39a.4006.4006 0 1 1 0 .8012l-1.7171-.0002c-1.1836 0-2.1431.9595-2.1431 2.143 0 1.1837.9595 2.1432 2.143 2.1432h2.1414c.0915 0 .1656.0765.1656.168a.1638.1638 0 0 1-.1656.1634h-2.193c-.8671 0-1.5701.7028-1.5701 1.5697 0 .8671.703 1.57 1.57 1.57l.8284.0028c.4185 0 .7632.3512.7632.7667 0 .3396-.2049.5791-.427.7158zm-7.5559-8.2114H4.425c.2368-1.8715 1.1506-3.532 2.4878-4.7287zm0 6.6683c-1.3505-1.209-2.2688-2.8907-2.4943-4.7852h2.4943zm5.097-13.7579c-4.451 0-8.0594 3.6083-8.0594 8.0595 0 4.4508 3.6084 8.0594 8.0593 8.0594 4.4512 0 8.0595-3.6086 8.0595-8.0594 0-4.4512-3.6083-8.0595-8.0595-8.0595zm-.301 2.009h1.9023a.1443.1443 0 0 0 .144-.144.1445.1445 0 0 0-.144-.1442h-1.9023a.1445.1445 0 0 0-.144.1442c0 .0793.0649.144.144.144zm.072-.5445a.2159.2159 0 1 0 0-.4318.2158.2158 0 1 0 0 .4318zm.2988 2.6522l.027-.0257v-.0002l-.027-.0259c-.421-.3057-.6075-.6844-.7201-.9775-.0777-.202-.1652-.3679-.2925-.4893-.1322-.1258-.2285-.1927-.4192-.1927a.9713.9713 0 0 0-.2302.0292l-.0456.011.0283.0525c.0422.0783.1205.2238.2576.2656a.1193.1193 0 0 0 .0356.0046.386.386 0 0 0 .0332-.0019c.009-.0008.0178-.0017.0261-.0017.0093 0 .0123.0013.0124.0013.148.0856.2255.7166.2255 1.031 0 .0537-.0222.078-.0718.078-.0493 0-.1136-.027-.153-.0641-.0867-.0935-.2107-.146-.347-.146-.2223 0-.458.1499-.4673.4005v.0509c.0094.2506.245.4005.4674.4005.1362 0 .2602-.0525.3469-.146.0394-.037.1037-.0639.153-.0639.0496 0 .0718.024.0718.0778 0 .3144-.0776.9454-.2255 1.031 0 0-.003.0012-.0124.0012a.2845.2845 0 0 1-.026-.0016.386.386 0 0 0-.0333-.0019.1194.1194 0 0 0-.0356.0046c-.1371.0418-.2154.1873-.2576.2656l-.0283.0525.0456.0112a.9836.9836 0 0 0 .2302.029c.1907 0 .287-.0667.4192-.1927.1273-.1214.2148-.2873.2925-.4893.1126-.2931.299-.6718.7201-.9776zm-9.4412 2.1223l-.1222.8035-.6999-.5284zm-1.2738.6372a.2464.2464 0 0 1 .097-.0193.2522.2522 0 0 1 .1233.0318l.0028.0016 1.5266 1.1735.0775-.5098-.3103-.2336.1861-1.2242.3638-.1216.0773-.5089-2.0309.683zM12 23.52C5.6378 23.52.48 18.3622.48 12S5.6379.4803 12 .4803C18.3622.4803 23.5198 5.6378 23.5198 12c0 6.3622-5.1575 11.52-11.5198 11.52zM12 .0003C5.3727.0003 0 5.3728 0 12c0 6.6272 5.3727 11.9997 12 11.9997 6.6274 0 12-5.3725 12-11.9997C24 5.3728 18.6274.0003 12 .0003zm2.6675 2.643c.0793-.23.2747-.3568.5505-.3568.1153 0 .2378.023.364.0684.4398.1581.6498.4752.5349.8078-.0796.2313-.2755.3589-.5513.3589-.116 0-.2393-.0232-.3665-.0689-.4384-.1575-.6471-.4752-.5316-.8095zm.3924 1.2166c.195.0701.389.1057.5764.1057h.0001c.4753 0 .8395-.2332.9743-.624.0951-.276.052-.57-.1214-.828-.1655-.2464-.4383-.4475-.7682-.566-.1902-.0683-.3816-.103-.5682-.103-.4793 0-.8453.2316-.9795.6199-.1917.5552.181 1.1422.8865 1.3954zm3.0944.1594l-.1837 1.4554.023.0215 1.3938-.3266-.766 1.037.3757.3504 1.1621-1.5327-.4317-.4023-1.2158.2723.1485-1.2671-.452-.4215h-.0004l-.0554-.0512c-.0045.0915-.0427.184-.0945.234l-1.2044 1.1699.3777.3522zm3.6243 7.4815a.5396.5396 0 0 1-.0919.008c-.3011 0-.5317-.2627-.602-.6852-.0776-.4672.0937-.8074.437-.8671a.5656.5656 0 0 1 .0904-.0076c.2959 0 .5317.2678.6006.6827.078.4686-.0923.8099-.4341.8692zm.8493-.9418c-.1124-.6738-.5424-1.1443-1.0459-1.1443a.8997.8997 0 0 0-.1481.0128c-.568.0989-.8894.7165-.7643 1.4687.1143.6858.5346 1.1466 1.0457 1.1466a.883.883 0 0 0 .1512-.0132c.5663-.0983.8867-.7167.7614-1.4706zM12.4323 1.7271h.0001c.1613 0 .2707.1156.2722.288.0014.174-.104.2832-.2751.2846l-.9892.0087-.005-.5726zm-1.495 1.5232l.5109-.0045-.0045-.532.8572-.0077.3746.5292.5696-.005-.4303-.5697.053-.0254c.2187-.1048.3427-.3229.3402-.5984-.0037-.4345-.29-.7154-.7288-.7154l-1.5587.0134v.0006l-.09.0005c.0533.0645.0872.1498.0923.2213zm-3.3844.3238l-.7046.4047-.0227-.8766zm-1.1647-.4215l.0006.0034.0334 1.927.4472-.2571-.0108-.3882 1.0735-.6173.3217.209.4463-.2565-1.7995-1.1634-.64.3654a.2541.2541 0 0 1 .1276.1777zM3.748 5.5746L4.9572 6.735l.3507-.3805-.4455-.4277.744-.8074-.2887-.2772-.7443.8074-.344-.3301 1.0713-1.1627-.2887-.277-1.4859 1.6131c.0782.0052.1643.036.22.0802l.0018.0014Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/alfred.svg b/assets/lib/simple-icons/icons/alfred.svg
new file mode 100644
index 00000000..67ec41e7
--- /dev/null
+++ b/assets/lib/simple-icons/icons/alfred.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Alfred</title><path d="m0 15.902c0-1.142 1.133-2.184 3-2.977v-1.827c0-4.142 4.029-7.5 9-7.5s9 3.358 9 7.5v1.827c1.867.793 3 1.835 3 2.977 0 2.485-5.373 4.5-12 4.5s-12-2.015-12-4.5z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/algolia.svg b/assets/lib/simple-icons/icons/algolia.svg
index 3fb52ebc..20f11ef9 100644
--- a/assets/lib/simple-icons/icons/algolia.svg
+++ b/assets/lib/simple-icons/icons/algolia.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Algolia icon</title><path d="M3.16 0A3.156 3.156 0 000 3.152v17.69A3.161 3.161 0 003.16 24h17.68c1.747 0 3.16-1.42 3.16-3.16V3.16C24 1.413 22.58 0 20.84 0H3.16zm7.87 3.494h2.429A1.04 1.04 0 0114.5 4.535v.822a.14.14 0 01-.174.14 7.679 7.647 0 00-2.043-.276 7.564 7.533 0 00-2.113.297c-.095.021-.182-.045-.182-.14v-.843a1.044 1.04 0 011.041-1.04zm-4.35 2.22a1.04 1.035 0 01.75.306l.414.416c.058.065.051.167-.022.21a7.544 7.513 0 00-.941.801 8 7.967 0 00-.793.932c-.058.065-.153.08-.219.016l-.408-.409a1.043 1.04 0 010-1.472l.496-.494a1.04 1.035 0 01.723-.305zm5.597.35a6.774 6.774 0 016.787 6.778 6.784 6.784 0 01-6.787 6.783c-3.748 0-6.789-3.028-6.789-6.777a6.786 6.786 0 016.79-6.784zm0 2.008a4.783 4.783 0 00-4.783 4.776 4.783 4.783 0 004.783 4.775 4.777 4.777 0 004.784-4.775 4.782 4.782 0 00-4.784-4.776zm.145.838a3.935 3.919 0 013.281 1.988c.036.073.015.16-.057.196l-3.166 1.638c-.093.052-.205-.023-.205-.125V9.05h.002c0-.08.072-.139.145-.139Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Algolia</title><path d="M3.16 0A3.156 3.156 0 000 3.152v17.69A3.161 3.161 0 003.16 24h17.68c1.747 0 3.16-1.42 3.16-3.16V3.16C24 1.413 22.58 0 20.84 0H3.16zm7.87 3.494h2.429A1.04 1.04 0 0114.5 4.535v.822a.14.14 0 01-.174.14 7.679 7.647 0 00-2.043-.276 7.564 7.533 0 00-2.113.297c-.095.021-.182-.045-.182-.14v-.843a1.044 1.04 0 011.041-1.04zm-4.35 2.22a1.04 1.035 0 01.75.306l.414.416c.058.065.051.167-.022.21a7.544 7.513 0 00-.941.801 8 7.967 0 00-.793.932c-.058.065-.153.08-.219.016l-.408-.409a1.043 1.04 0 010-1.472l.496-.494a1.04 1.035 0 01.723-.305zm5.597.35a6.774 6.774 0 016.787 6.778 6.784 6.784 0 01-6.787 6.783c-3.748 0-6.789-3.028-6.789-6.777a6.786 6.786 0 016.79-6.784zm0 2.008a4.783 4.783 0 00-4.783 4.776 4.783 4.783 0 004.783 4.775 4.777 4.777 0 004.784-4.775 4.782 4.782 0 00-4.784-4.776zm.145.838a3.935 3.919 0 013.281 1.988c.036.073.015.16-.057.196l-3.166 1.638c-.093.052-.205-.023-.205-.125V9.05h.002c0-.08.072-.139.145-.139Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/alibabacloud.svg b/assets/lib/simple-icons/icons/alibabacloud.svg
new file mode 100644
index 00000000..e0a1e9d1
--- /dev/null
+++ b/assets/lib/simple-icons/icons/alibabacloud.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Alibaba Cloud</title><path d="M3.996 4.517h5.291L8.01 6.324 4.153 7.506a1.668 1.668 0 0 0-1.165 1.601v5.786a1.668 1.668 0 0 0 1.165 1.6l3.857 1.183 1.277 1.807H3.996A3.996 3.996 0 0 1 0 15.487V8.513a3.996 3.996 0 0 1 3.996-3.996m16.008 0h-5.291l1.277 1.807 3.857 1.182c.715.227 1.17.889 1.165 1.601v5.786a1.668 1.668 0 0 1-1.165 1.6l-3.857 1.183-1.277 1.807h5.291A3.996 3.996 0 0 0 24 15.487V8.513a3.996 3.996 0 0 0-3.996-3.996m-4.007 8.345H8.002v-1.804h7.995Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/alibabadotcom.svg b/assets/lib/simple-icons/icons/alibabadotcom.svg
new file mode 100644
index 00000000..47d96503
--- /dev/null
+++ b/assets/lib/simple-icons/icons/alibabadotcom.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Alibaba.com</title><path d="M14.391 16.22c-.963.044-.865-.459-.302-1.234 1.32-1.768 3.82-4.236 3.906-5.982.151-2.283-2.143-3.026-4.501-3.004-1.645.022-3.344.492-4.501.906C5 8.315 2.489 10.576.909 13.076-.768 15.554-.216 17.923 3.322 18c2.716-.109 4.48-.862 6.32-1.802.01 0-5.086 1.453-6.958.383l-.008-.002c-.193-.11-.404-.264-.457-.683-.012-.885 1.46-1.802 2.283-2.097v-1.533a5.374 5.374 0 0 0 1.955.366 5.378 5.378 0 0 0 3.472-1.265c.037.13.056.278.044.447h.371c.048-.394-.172-.706-.172-.706-.333-.529-.915-.52-.915-.52s.315.137.529.466a4.953 4.953 0 0 1-4.665.932l1.21-1.2-.336-.874c2.435-.852 4.48-1.507 7.812-2.085l-.746-.624.389-.24c2.01.568 3.325.985 3.253 2.051a2.672 2.672 0 0 1-.202.611c-.584 1.158-2.326 3.09-3.029 3.898-.465.535-.92 1.06-1.245 1.562-.335.503-.54.971-.551 1.42.043 3.504 10.334-1.64 12.324-3.003-2.943 1.266-6.113 2.489-9.609 2.718Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/aliexpress.svg b/assets/lib/simple-icons/icons/aliexpress.svg
new file mode 100644
index 00000000..4b65608e
--- /dev/null
+++ b/assets/lib/simple-icons/icons/aliexpress.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>AliExpress</title><path d="M5.166 9.096a.022.022 0 0 0-.022.021c0 .396-.32.717-.713.717a.021.021 0 0 0-.021.022c0 .012.01.021.021.021.394 0 .713.322.713.718 0 .012.01.021.022.021.011 0 .021-.01.021-.021A.717.717 0 0 1 5.9 9.88a.021.021 0 0 0 0-.043.716.716 0 0 1-.713-.718v-.002a.021.021 0 0 0-.006-.015.022.022 0 0 0-.015-.006zm-3.693.526L0 13.462h.48l.355-.922h1.782l.354.922h.481L1.98 9.622zm2.264.002v3.838h.491V9.624zm2.375 0v3.838h2.413v-.502H6.613v-1.19H8.19v-.477H6.613v-1.166h1.773v-.502zm-4.386.592l.698 1.82H1.028zm14.689.402a1.466 1.466 0 0 0-.966.366V10.7h-.491v2.763h.49c.002-.477 0-.955.002-1.433a.969.969 0 0 1 .965-.918zm4.18.007c-.053 0-.105.003-.158.01-.315.031-.606.175-.753.377a.689.689 0 0 0-.14.465c.007.2.066.357.233.496.184.147.42.2.657.259.311.067.426.095.546.186.08.07.133.127.136.27 0 .25-.221.372-.42.41a.89.89 0 0 1-.894-.344l-.371.288c.33.382.777.505 1.09.5.54-.01.891-.217 1.029-.534.066-.153.063-.309.063-.38a.677.677 0 0 0-.267-.545c-.228-.177-.583-.228-.636-.242-.437-.078-.658-.196-.697-.341-.043-.192.102-.35.297-.411a.76.76 0 0 1 .857.277l.367-.247a1.166 1.166 0 0 0-.939-.494zm2.387 0c-.052 0-.105.003-.157.01-.316.031-.607.175-.753.377a.689.689 0 0 0-.14.465c.006.2.065.357.233.496.183.147.42.2.657.259.31.067.426.095.545.186.081.07.134.127.136.27.001.25-.221.372-.42.41a.89.89 0 0 1-.894-.344l-.371.288c.33.382.777.505 1.09.5.541-.01.891-.217 1.03-.534.065-.153.062-.309.062-.38a.677.677 0 0 0-.267-.545c-.227-.177-.583-.228-.636-.242-.437-.078-.658-.196-.696-.341-.043-.192.101-.35.297-.411a.76.76 0 0 1 .857.277l.367-.247a1.167 1.167 0 0 0-.94-.494zm-9.84.002a1.461 1.461 0 0 0-1.42 1.117 1.305 1.305 0 0 0-.041.327v2.833h.491v-1.813c.17.18.487.42.96.454a1.447 1.447 0 0 0 1.208-.627 1.457 1.457 0 0 0-1.199-2.292zm4.804 0a1.448 1.448 0 0 0-1.288 2.08c.255.53.811.87 1.412.833a1.452 1.452 0 0 0 1.012-.51l-.363-.291a.968.968 0 0 1-1.106.273 1.01 1.01 0 0 1-.602-.69h2.239l.002-.427a1.295 1.295 0 0 0-1.306-1.268zm-9.2.08l1.062 1.377-1.062 1.378h.581l.779-1.01.778 1.01h.581l-1.062-1.378 1.062-1.378h-.581l-.778 1.01-.779-1.01zm-3.825.015v2.74h.49v-2.74zm8.233.37a.96.96 0 0 1 .95.993.963.963 0 0 1-.863.998.962.962 0 0 1-1.034-.739c-.074-.382 0-.746.307-1.019a.959.959 0 0 1 .64-.233zm4.79.015a.823.823 0 0 1 .819.755h-1.76a.964.964 0 0 1 .94-.755z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/alipay.svg b/assets/lib/simple-icons/icons/alipay.svg
index 8672e45b..ba363d8a 100644
--- a/assets/lib/simple-icons/icons/alipay.svg
+++ b/assets/lib/simple-icons/icons/alipay.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Alipay icon</title><path d="M16.076,13.732c0.862-1.494,1.55-3.196,2.003-5.045h-4.731V6.988h5.795V6.04h-5.795V3.207h-2.365 c-0.415,0-0.415,0.408-0.415,0.408V6.04H4.707v0.948h5.861v1.699H5.729v0.948h9.386c-0.343,1.18-0.805,2.288-1.352,3.294 c-3.045-1.002-6.295-1.814-8.337-1.314c-1.305,0.321-2.146,0.893-2.641,1.493c-2.267,2.751-0.641,6.929,4.147,6.929 c2.831,0,5.559-1.574,7.673-4.168C17.758,17.381,24,19.976,24,19.976v0.157c0,2.117-1.719,3.833-3.843,3.833H3.845 C1.72,23.966,0,22.249,0,20.132V3.868C0,1.75,1.72,0.034,3.845,0.034h16.312C22.281,0.034,24,1.75,24,3.868v12.409 c0,0-0.784-0.062-4.24-1.216C18.8,14.74,17.511,14.25,16.076,13.732z M5.834,13.034c-0.6,0.059-1.725,0.324-2.341,0.866 c-1.845,1.604-0.741,4.537,2.993,4.537c2.17,0,4.339-1.384,6.042-3.599C10.104,13.659,8.052,12.816,5.834,13.034z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Alipay</title><path d="M16.076,13.732c0.862-1.494,1.55-3.196,2.003-5.045h-4.731V6.988h5.795V6.04h-5.795V3.207h-2.365 c-0.415,0-0.415,0.408-0.415,0.408V6.04H4.707v0.948h5.861v1.699H5.729v0.948h9.386c-0.343,1.18-0.805,2.288-1.352,3.294 c-3.045-1.002-6.295-1.814-8.337-1.314c-1.305,0.321-2.146,0.893-2.641,1.493c-2.267,2.751-0.641,6.929,4.147,6.929 c2.831,0,5.559-1.574,7.673-4.168C17.758,17.381,24,19.976,24,19.976v0.157c0,2.117-1.719,3.833-3.843,3.833H3.845 C1.72,23.966,0,22.249,0,20.132V3.868C0,1.75,1.72,0.034,3.845,0.034h16.312C22.281,0.034,24,1.75,24,3.868v12.409 c0,0-0.784-0.062-4.24-1.216C18.8,14.74,17.511,14.25,16.076,13.732z M5.834,13.034c-0.6,0.059-1.725,0.324-2.341,0.866 c-1.845,1.604-0.741,4.537,2.993,4.537c2.17,0,4.339-1.384,6.042-3.599C10.104,13.659,8.052,12.816,5.834,13.034z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/alitalia.svg b/assets/lib/simple-icons/icons/alitalia.svg
new file mode 100644
index 00000000..2c226636
--- /dev/null
+++ b/assets/lib/simple-icons/icons/alitalia.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Alitalia</title><path d="M5.429 20.551H0l14.257-14.87c1.622-1.765 2.878-2.232 4.686-2.232H24L21.602 20.55h-4.17L19.49 5.907M15.7 20.551l1.384-9.842-9.457 9.842Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/allegro.svg b/assets/lib/simple-icons/icons/allegro.svg
new file mode 100644
index 00000000..7c0f27ca
--- /dev/null
+++ b/assets/lib/simple-icons/icons/allegro.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Allegro</title><path d="M4.59 7.981a.124.124 0 0 0-.122.124v5.917a.124.124 0 0 0 .124.124h.72a.124.124 0 0 0 .124-.124h-.002V8.105a.124.124 0 0 0-.124-.124Zm1.691 0a.124.124 0 0 0-.124.124v5.917a.124.124 0 0 0 .124.124h.72a.124.124 0 0 0 .123-.124V8.105a.124.124 0 0 0-.122-.124Zm12.667 1.776a1.868 1.868 0 0 0-1.317.532 1.674 1.674 0 0 0-.531 1.254v2.48a.124.124 0 0 0 .123.123h.72a.124.124 0 0 0 .124-.124v-2.427c0-.752.5-1.113 1.314-.946a.13.13 0 0 0 .168-.142v-.495c0-.13-.014-.18-.1-.208a2.794 2.794 0 0 0-.501-.047Zm-4.626 0a2.193 2.193 0 0 0-1.732.849 2.355 2.355 0 0 0 0 2.678 2.13 2.131 0 0 0 1.732.849 2.21 2.21 0 0 0 1.234-.372v.53c0 .717-.627.848-1.03.873a4.73 4.73 0 0 1-.826-.045c-.11-.017-.188 0-.188.119v.636a.109.109 0 0 0 .114.103c.933.08 1.56.064 2.032-.206a1.537 1.537 0 0 0 .69-.875 2.928 2.928 0 0 0 .117-.874v-2.077h.002a2.245 2.245 0 0 0-.412-1.34 2.193 2.193 0 0 0-1.733-.848Zm-12.255.002a2.903 2.903 0 0 0-1.465.39.092.092 0 0 0-.045.08l.038.63a.112.112 0 0 0 .185.065c.627-.387 1.38-.459 1.764-.265a.67.67 0 0 1 .335.605v.092H1.832c-.45 0-1.83.167-1.83 1.434v.014a1.229 1.229 0 0 0 .45 1.017 1.768 1.768 0 0 0 1.118.32h2.118a.124.124 0 0 0 .124-.125v-2.51l-.002.004c0-.57-.127-1.004-.402-1.303-.274-.3-.827-.45-1.34-.45zm7.707 0c-1.28 0-1.84.858-2.02 1.585a2.44 2.44 0 0 0-.074.6 2.277 2.277 0 0 0 .412 1.338 2.198 2.198 0 0 0 1.733.85c.691.024 1.153-.093 1.506-.294a.196.196 0 0 0 .084-.212v-.558c0-.114-.069-.167-.167-.098a2.185 2.185 0 0 1-1.393.334 1.14 1.14 0 0 1-1.118-1.016h2.845a.117.117 0 0 0 .117-.116c.05-.778-.175-2.413-1.925-2.413Zm12.08 0a2.193 2.193 0 0 0-1.731.848 2.275 2.275 0 0 0-.412 1.34 2.275 2.275 0 0 0 .412 1.339 2.193 2.193 0 0 0 3.465 0 2.277 2.277 0 0 0 .412-1.34 2.277 2.277 0 0 0-.412-1.339 2.193 2.193 0 0 0-1.733-.848Zm-7.532.833c1.157 0 1.196 1.18 1.196 1.351 0 .171-.039 1.351-1.196 1.351-.517 0-.89-.378-1.047-.849a1.552 1.552 0 0 1 0-1.004c.157-.47.53-.849 1.047-.849zm-4.546.004a.86.86 0 0 1 .91.922H8.754a.968.968 0 0 1 1.024-.922zm12.078 0c.515-.012.89.378 1.048.848a1.553 1.553 0 0 1 0 1.003v.002c-.158.47-.531.837-1.048.848-.518.012-.89-.378-1.047-.848a1.552 1.552 0 0 1 0-1.005c.158-.47.53-.837 1.047-.848zM1.89 12.121h.99v1.246H1.63a.773.773 0 0 1-.444-.156.492.492 0 0 1-.21-.412c0-.226.153-.678.914-.678z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/alliedmodders.svg b/assets/lib/simple-icons/icons/alliedmodders.svg
index fc8884e6..0c6ed86b 100644
--- a/assets/lib/simple-icons/icons/alliedmodders.svg
+++ b/assets/lib/simple-icons/icons/alliedmodders.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>AlliedModders icon</title><path d="M.602 1.077A.615.615 0 000 1.692v20.615a.615.615 0 00.615.615h8.309a.615.615 0 00.615-.615v-1.744l.647 1.94a.615.615 0 00.584.42h6.77a.615.615 0 00.585-.427l.035-.107a.615.615 0 00.61.533h4.615a.615.615 0 00.615-.615V8.155a.615.615 0 00-.447-.592L19.246 6.33a.615.615 0 00-.744.372l-1.887 4.906V6.059a.615.615 0 00-.443-.592l-3.385-.98a.615.615 0 00-.787.59v6.15l-2.809-7.48a.615.615 0 00-.408-.377l-8-2.27a.615.615 0 00-.181-.023zm.628 1.43l6.918 1.962 3.891 10.363a.615.615 0 001.191-.216v-8.72l2.155.624v8.402a.615.615 0 001.19.223l2.874-7.475 3.32.948v13.074h-3.384v-1.23h1.23a.615.615 0 00.615-.616V12.77a.615.615 0 00-1.2-.19l-2.94 9.112h-5.877L6.738 8.266a.615.615 0 00-1.199.195v11.076a.615.615 0 00.615.618H8.31v1.537H1.23zm5.54 9.747l2.224 6.674a.615.615 0 00-.07-.006H6.77zM20 16.682v2.549h-.822z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>AlliedModders</title><path d="M.588 1.077A.615.615 0 0 0 0 1.69v20.617c0 .34.275.615.615.615h8.309c.34 0 .615-.275.615-.615v-1.746l.647 1.94a.615.615 0 0 0 .584.421h6.77a.615.615 0 0 0 .585-.427l.035-.11c.04.307.3.537.61.537h4.615c.34 0 .615-.275.615-.615V8.153a.615.615 0 0 0-.447-.592l-4.307-1.23a.615.615 0 0 0-.744.37l-1.887 4.907v-5.55a.615.615 0 0 0-.443-.593l-3.385-.98a.615.615 0 0 0-.787.59v6.15l-2.809-7.48a.615.615 0 0 0-.408-.375l-8-2.272a.615.615 0 0 0-.195-.021zm.027.613l8 2.272 4 10.652v-9.54L16 6.058v8.865l3.076-8 4.309 1.231v14.154H18.77v-2.463h1.845v-7.076l-3.076 9.54h-6.77L6.155 8.46v11.078h2.77v2.77H.615zm.615.816V21.69h7.08v-1.537H6.154a.615.615 0 0 1-.615-.615V8.46c.002-.698.979-.855 1.2-.194l4.474 13.424h5.877l2.94-9.111c.215-.668 1.201-.513 1.2.19v7.075c0 .34-.275.615-.615.616h-1.23v1.23h3.385V8.616l-3.32-.947-2.876 7.474c-.245.635-1.188.46-1.19-.22V6.52l-2.154-.625v8.719c0 .685-.95.857-1.19.217L8.147 4.467zm5.54 9.747l2.224 6.67c-.734-.01-1.485 0-2.224 0zM20 16.683v2.546h-.822Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/allocine.svg b/assets/lib/simple-icons/icons/allocine.svg
index 30ad1a78..f55e4355 100644
--- a/assets/lib/simple-icons/icons/allocine.svg
+++ b/assets/lib/simple-icons/icons/allocine.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>AlloCiné icon</title><path d="M20.447 21.162L17.207.695a.815.815 0 0 0-.926-.686h-.004l-3.42.551a2.632 2.632 0 0 1-5.199.824l-3.42.542a.815.815 0 0 0-.687.926v.003l3.244 20.458c.069.443.484.746.928.677h.001l3.421-.542a2.636 2.636 0 1 1 5.208-.815l3.42-.541a.81.81 0 0 0 .675-.925v-.005zM14.77 8.21l-1.23 1.805a.854.854 0 0 1-.433.3c-.509.12-1.249-.962-1.772 1.505-.524 2.467.592 1.784 1.004 2.106a.875.875 0 0 1 .283.436l.394 2.142h-.012a.602.602 0 0 1-.343.644c-.454.183-1.167.427-1.588.337-.903-.193-2.338-2.428-1.562-6.072.777-3.643 2.994-5.078 3.896-4.885.413.09.972.601 1.315.953a.602.602 0 0 1 .048.729z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>AlloCin&#233;</title><path d="M16.434.001a.826.826 0 00-.164.008l-3.423.543a2.635 2.635 0 01-2.189 3.01 2.629 2.629 0 01-3.01-2.185l-3.417.538a.818.818 0 00-.677.931l3.24 20.467a.818.818 0 00.931.677l3.423-.543a2.635 2.635 0 012.189-3.01 2.629 2.629 0 013.01 2.185l3.422-.543a.818.818 0 00.677-.93L17.2.685a.816.816 0 00-.767-.685zm-3.22 6.534c.066 0 .128.005.185.017.423.09.975.6 1.315.955.178.187.192.519.048.73l-1.228 1.795a.89.89 0 01-.437.283c-.504.125-1.248-.95-1.771 1.507-.524 2.458.59 1.776 1.003 2.098a.828.828 0 01.283.437l.394 2.14a.613.613 0 01-.341.649c-.456.182-1.167.427-1.589.336-.907-.192-2.342-2.4-1.57-6.044.725-3.415 2.71-4.89 3.708-4.903Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/alltrails.svg b/assets/lib/simple-icons/icons/alltrails.svg
new file mode 100644
index 00000000..f95aefd5
--- /dev/null
+++ b/assets/lib/simple-icons/icons/alltrails.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>AllTrails</title><path d="M23.694 18.72c-3.845-4.058-12.083-5.754-17.345-3.216l5.504-7.623 2.63 4.163c.148.246.47.32.71.164l1.993-1.333c1.684 1.806 3.358 3.618 4.796 5.158a.19.19 0 00.322-.139.185.185 0 00-.023-.088h.001c-1.41-2.458-2.826-4.913-4.25-7.364-.254-.434-.552-.503-.986-.219l-1.34.921-3.382-5.226a.587.587 0 00-.494-.275.574.574 0 00-.487.265A5684.859 5684.859 0 01.08 18.973v.002c-.2.28-.001.67.343.671.175-.002.331-.124.488-.2 3.142-1.626 10.197-3.996 15.073-.26 2.141 1.817 9.61 1.408 7.71-.465"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/alpinedotjs.svg b/assets/lib/simple-icons/icons/alpinedotjs.svg
new file mode 100644
index 00000000..06cb42e9
--- /dev/null
+++ b/assets/lib/simple-icons/icons/alpinedotjs.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Alpine.js</title><path d="m24 12-5.72 5.746-5.724-5.741 5.724-5.75L24 12zM5.72 6.254 0 12l5.72 5.746h11.44L5.72 6.254z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/alpinelinux.svg b/assets/lib/simple-icons/icons/alpinelinux.svg
index 349dd6e7..c554fb8a 100644
--- a/assets/lib/simple-icons/icons/alpinelinux.svg
+++ b/assets/lib/simple-icons/icons/alpinelinux.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Alpine Linux icon</title><path d="M5.998 1.607L0 12l5.998 10.393h12.004L24 12 18.002 1.607H5.998zM9.965 7.12L12.66 9.9l1.598 1.595.002-.002 2.41 2.363c-.2.14-.386.252-.563.344a3.756 3.756 0 01-.496.217 2.702 2.702 0 01-.425.111c-.131.023-.25.034-.358.034-.13 0-.242-.014-.338-.034a1.317 1.317 0 01-.24-.072.95.95 0 01-.2-.113l-1.062-1.092-3.039-3.041-1.1 1.053-3.07 3.072a.974.974 0 01-.2.111 1.274 1.274 0 01-.237.073c-.096.02-.209.033-.338.033-.108 0-.227-.009-.358-.031a2.7 2.7 0 01-.425-.114 3.748 3.748 0 01-.496-.217 5.228 5.228 0 01-.563-.343l6.803-6.727zm4.72.785l4.579 4.598 1.382 1.353a5.24 5.24 0 01-.564.344 3.73 3.73 0 01-.494.217 2.697 2.697 0 01-.426.111c-.13.023-.251.034-.36.034-.129 0-.241-.014-.337-.034a1.285 1.285 0 01-.385-.146c-.033-.02-.05-.036-.053-.04l-1.232-1.218-2.111-2.111-.334.334L12.79 9.8l1.896-1.897zm-5.966 4.12v2.529a2.128 2.128 0 01-.356-.035 2.765 2.765 0 01-.422-.116 3.708 3.708 0 01-.488-.214 5.217 5.217 0 01-.555-.34l1.82-1.825Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Alpine Linux</title><path d="M5.998 1.607L0 12l5.998 10.393h12.004L24 12 18.002 1.607H5.998zM9.965 7.12L12.66 9.9l1.598 1.595.002-.002 2.41 2.363c-.2.14-.386.252-.563.344a3.756 3.756 0 01-.496.217 2.702 2.702 0 01-.425.111c-.131.023-.25.034-.358.034-.13 0-.242-.014-.338-.034a1.317 1.317 0 01-.24-.072.95.95 0 01-.2-.113l-1.062-1.092-3.039-3.041-1.1 1.053-3.07 3.072a.974.974 0 01-.2.111 1.274 1.274 0 01-.237.073c-.096.02-.209.033-.338.033-.108 0-.227-.009-.358-.031a2.7 2.7 0 01-.425-.114 3.748 3.748 0 01-.496-.217 5.228 5.228 0 01-.563-.343l6.803-6.727zm4.72.785l4.579 4.598 1.382 1.353a5.24 5.24 0 01-.564.344 3.73 3.73 0 01-.494.217 2.697 2.697 0 01-.426.111c-.13.023-.251.034-.36.034-.129 0-.241-.014-.337-.034a1.285 1.285 0 01-.385-.146c-.033-.02-.05-.036-.053-.04l-1.232-1.218-2.111-2.111-.334.334L12.79 9.8l1.896-1.897zm-5.966 4.12v2.529a2.128 2.128 0 01-.356-.035 2.765 2.765 0 01-.422-.116 3.708 3.708 0 01-.488-.214 5.217 5.217 0 01-.555-.34l1.82-1.825Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/altiumdesigner.svg b/assets/lib/simple-icons/icons/altiumdesigner.svg
new file mode 100644
index 00000000..6cd23579
--- /dev/null
+++ b/assets/lib/simple-icons/icons/altiumdesigner.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Altium Designer</title><path d="M19.14 5.876a1.012 1.012 0 00-.442-.442L9.744.171c-.329-.226-.843-.226-1.203-.01L5.148 2.145c-.051.041-.102.082-.144.123a1.086 1.086 0 00-.288.72l.01 6.569-.02.215.062.123a.478.478 0 00.195.206.516.516 0 00.555.01L8.859 8.2a.573.573 0 00.175-.175l.082-.165V4.643l2.251 1.326 3.536 2.077a.413.413 0 01.164.185.442.442 0 01.062.226v7.052a.52.52 0 01-.072.257c-.041.072-.082.123-.154.154l-4.225 2.488-1.573.925v-3.228l1.953-1.172 1.049-.627.185-.175.021-.051a.542.542 0 00.062-.247V9.999a.51.51 0 00-.092-.288l-.062-.123-.144-.072c-.093-.041-.175-.041-.247-.041l-.175.01-6.363 3.865a1.129 1.129 0 00-.442.463 1.281 1.281 0 00-.144.607v6.559c0 .257.103.514.329.75.082.062.154.113.236.164l3.341 1.943c.186.113.381.164.597.164.216 0 .422-.051.596-.164l8.882-5.212c.195-.103.36-.267.442-.432.113-.185.164-.401.164-.617V6.483a1.236 1.236 0 00-.153-.607zM8.387 7.624L5.447 9.32V2.988c0-.072.031-.154.092-.216l.216-.123 2.632 1.563v3.412zm-2.951 6.795c0-.093.021-.185.062-.278a.409.409 0 01.175-.175l5.973-3.629v3.392l-.956.576-2.313 1.388-2.94 1.778v-3.052zm0 6.559v-2.663l2.94-1.768v3.218l-2.632 1.552-.103-.062c-.051-.031-.093-.051-.103-.062-.061-.071-.102-.143-.102-.215zm13.128-3.403a.518.518 0 01-.072.257.342.342 0 01-.165.154l-8.892 5.222a.405.405 0 01-.452 0l-2.508-1.47 4.575-2.693v-.01l4.215-2.478a.998.998 0 00.432-.442 1.13 1.13 0 00.175-.606V8.457c0-.216-.062-.421-.165-.596a1.189 1.189 0 00-.432-.442l-3.536-2.077-3.352-1.974-1.923-1.141L8.911.788a.446.446 0 01.452 0l8.985 5.294a.319.319 0 01.154.154.517.517 0 01.062.247v11.092z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/amazon.svg b/assets/lib/simple-icons/icons/amazon.svg
index 9b59222d..70316bab 100644
--- a/assets/lib/simple-icons/icons/amazon.svg
+++ b/assets/lib/simple-icons/icons/amazon.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Amazon icon</title><path d="M.045 18.02c.072-.116.187-.124.348-.022 3.636 2.11 7.594 3.166 11.87 3.166 2.852 0 5.668-.533 8.447-1.595l.315-.14c.138-.06.234-.1.293-.13.226-.088.39-.046.525.13.12.174.09.336-.12.48-.256.19-.6.41-1.006.654-1.244.743-2.64 1.316-4.185 1.726-1.53.406-3.045.61-4.516.61-2.265 0-4.41-.396-6.435-1.187-2.02-.794-3.82-1.91-5.43-3.35-.1-.074-.15-.15-.15-.22 0-.047.02-.09.05-.13zm6.565-6.218c0-1.005.247-1.863.743-2.577.495-.71 1.17-1.25 2.04-1.615.796-.335 1.756-.575 2.912-.72.39-.046 1.033-.103 1.92-.174v-.37c0-.93-.105-1.558-.3-1.875-.302-.43-.78-.65-1.44-.65h-.182c-.48.046-.896.196-1.246.46-.35.27-.575.63-.675 1.096-.06.3-.206.465-.435.51l-2.52-.315c-.248-.06-.372-.18-.372-.39 0-.046.007-.09.022-.15.247-1.29.855-2.25 1.82-2.88.976-.616 2.1-.975 3.39-1.05h.54c1.65 0 2.957.434 3.888 1.29.135.15.27.3.405.48.12.165.224.314.283.45.075.134.15.33.195.57.06.254.105.42.135.51.03.104.062.3.076.615.01.313.02.493.02.553v5.28c0 .376.06.72.165 1.036.105.313.21.54.315.674l.51.674c.09.136.136.256.136.36 0 .12-.06.226-.18.314-1.2 1.05-1.86 1.62-1.963 1.71-.165.135-.375.15-.63.045-.195-.166-.375-.332-.526-.496l-.31-.347c-.06-.074-.166-.21-.317-.42l-.3-.435c-.81.886-1.603 1.44-2.4 1.665-.494.15-1.093.227-1.83.227-1.11 0-2.04-.343-2.76-1.034-.72-.69-1.08-1.665-1.08-2.94l-.05-.076zm3.753-.438c0 .566.14 1.02.425 1.364.285.34.675.512 1.155.512.045 0 .106-.007.195-.02.09-.016.134-.023.166-.023.614-.16 1.08-.553 1.424-1.178.165-.28.285-.58.36-.91.09-.32.12-.59.135-.8.015-.195.015-.54.015-1.005v-.54c-.84 0-1.484.06-1.92.18-1.275.36-1.92 1.17-1.92 2.43l-.035-.02zm9.162 7.027c.03-.06.075-.11.132-.17.362-.243.714-.41 1.05-.5.55-.133 1.09-.222 1.612-.24.14-.012.28 0 .41.03.65.06 1.05.168 1.172.33.063.09.09.228.09.39v.15c0 .51-.14 1.11-.415 1.8-.278.69-.664 1.248-1.156 1.68-.073.06-.14.09-.197.09-.03 0-.06 0-.09-.012-.09-.044-.107-.12-.064-.24.54-1.26.806-2.143.806-2.64 0-.15-.03-.27-.087-.344-.145-.166-.55-.257-1.224-.257-.243 0-.533.016-.87.046-.363.045-.7.09-1 .135-.09 0-.148-.014-.18-.044-.03-.03-.036-.047-.02-.077 0-.017.006-.03.02-.063v-.06z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Amazon</title><path d="M.045 18.02c.072-.116.187-.124.348-.022 3.636 2.11 7.594 3.166 11.87 3.166 2.852 0 5.668-.533 8.447-1.595l.315-.14c.138-.06.234-.1.293-.13.226-.088.39-.046.525.13.12.174.09.336-.12.48-.256.19-.6.41-1.006.654-1.244.743-2.64 1.316-4.185 1.726a17.617 17.617 0 01-10.951-.577 17.88 17.88 0 01-5.43-3.35c-.1-.074-.151-.15-.151-.22 0-.047.021-.09.051-.13zm6.565-6.218c0-1.005.247-1.863.743-2.577.495-.71 1.17-1.25 2.04-1.615.796-.335 1.756-.575 2.912-.72.39-.046 1.033-.103 1.92-.174v-.37c0-.93-.105-1.558-.3-1.875-.302-.43-.78-.65-1.44-.65h-.182c-.48.046-.896.196-1.246.46-.35.27-.575.63-.675 1.096-.06.3-.206.465-.435.51l-2.52-.315c-.248-.06-.372-.18-.372-.39 0-.046.007-.09.022-.15.247-1.29.855-2.25 1.82-2.88.976-.616 2.1-.975 3.39-1.05h.54c1.65 0 2.957.434 3.888 1.29.135.15.27.3.405.48.12.165.224.314.283.45.075.134.15.33.195.57.06.254.105.42.135.51.03.104.062.3.076.615.01.313.02.493.02.553v5.28c0 .376.06.72.165 1.036.105.313.21.54.315.674l.51.674c.09.136.136.256.136.36 0 .12-.06.226-.18.314-1.2 1.05-1.86 1.62-1.963 1.71-.165.135-.375.15-.63.045a6.062 6.062 0 01-.526-.496l-.31-.347a9.391 9.391 0 01-.317-.42l-.3-.435c-.81.886-1.603 1.44-2.4 1.665-.494.15-1.093.227-1.83.227-1.11 0-2.04-.343-2.76-1.034-.72-.69-1.08-1.665-1.08-2.94l-.05-.076zm3.753-.438c0 .566.14 1.02.425 1.364.285.34.675.512 1.155.512.045 0 .106-.007.195-.02.09-.016.134-.023.166-.023.614-.16 1.08-.553 1.424-1.178.165-.28.285-.58.36-.91.09-.32.12-.59.135-.8.015-.195.015-.54.015-1.005v-.54c-.84 0-1.484.06-1.92.18-1.275.36-1.92 1.17-1.92 2.43l-.035-.02zm9.162 7.027c.03-.06.075-.11.132-.17.362-.243.714-.41 1.05-.5a8.094 8.094 0 011.612-.24c.14-.012.28 0 .41.03.65.06 1.05.168 1.172.33.063.09.099.228.099.39v.15c0 .51-.149 1.11-.424 1.8-.278.69-.664 1.248-1.156 1.68-.073.06-.14.09-.197.09-.03 0-.06 0-.09-.012-.09-.044-.107-.12-.064-.24.54-1.26.806-2.143.806-2.64 0-.15-.03-.27-.087-.344-.145-.166-.55-.257-1.224-.257-.243 0-.533.016-.87.046-.363.045-.7.09-1 .135-.09 0-.148-.014-.18-.044-.03-.03-.036-.047-.02-.077 0-.017.006-.03.02-.063v-.06z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/amazonalexa.svg b/assets/lib/simple-icons/icons/amazonalexa.svg
index 550eda03..60fd6dfc 100644
--- a/assets/lib/simple-icons/icons/amazonalexa.svg
+++ b/assets/lib/simple-icons/icons/amazonalexa.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Amazon Alexa icon</title><path d="M12 0C5.37 0 0 5.37 0 12C0 18.09 4.53 23.11 10.4 23.9V21.5A1.59 1.59 0 0 0 9.32 19.97A8.41 8.41 0 0 1 3.6 11.8A8.37 8.37 0 0 1 12.09 3.6A8.4 8.4 0 0 1 20.4 12.31L20.39 12.38A8.68 8.68 0 0 1 20.36 12.76C20.36 12.83 20.35 12.9 20.34 12.96C20.34 13.04 20.33 13.12 20.32 13.19L20.3 13.29C19.27 20.07 10.45 23.87 10.4 23.9C10.92 23.97 11.46 24 12 24C18.63 24 24 18.63 24 12S18.63 0 12 0Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Amazon Alexa</title><path d="M12 0C5.37 0 0 5.37 0 12C0 18.09 4.53 23.11 10.4 23.9V21.5A1.59 1.59 0 0 0 9.32 19.97A8.41 8.41 0 0 1 3.6 11.8A8.37 8.37 0 0 1 12.09 3.6A8.4 8.4 0 0 1 20.4 12.31L20.39 12.38A8.68 8.68 0 0 1 20.36 12.76C20.36 12.83 20.35 12.9 20.34 12.96C20.34 13.04 20.33 13.12 20.32 13.19L20.3 13.29C19.27 20.07 10.45 23.87 10.4 23.9C10.92 23.97 11.46 24 12 24C18.63 24 24 18.63 24 12S18.63 0 12 0Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/amazonaws.svg b/assets/lib/simple-icons/icons/amazonaws.svg
index a4357c77..9fd688c4 100644
--- a/assets/lib/simple-icons/icons/amazonaws.svg
+++ b/assets/lib/simple-icons/icons/amazonaws.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 24 24"><title>Amazon AWS icon</title><path d="M6.763 10.036c0 .296.032.535.088.71.064.176.144.368.256.576.04.063.056.127.056.183 0 .08-.048.16-.152.24l-.503.335a.383.383 0 0 1-.208.072c-.08 0-.16-.04-.239-.112a2.47 2.47 0 0 1-.287-.375 6.18 6.18 0 0 1-.248-.471c-.622.734-1.405 1.101-2.347 1.101-.67 0-1.205-.191-1.596-.574-.391-.384-.59-.894-.59-1.533 0-.678.239-1.23.726-1.644.487-.415 1.133-.623 1.955-.623.272 0 .551.024.846.064.296.04.6.104.918.176v-.583c0-.607-.127-1.03-.375-1.277-.255-.248-.686-.367-1.3-.367-.28 0-.568.031-.863.103-.295.072-.583.16-.862.272a2.287 2.287 0 0 1-.28.104.488.488 0 0 1-.127.023c-.112 0-.168-.08-.168-.247v-.391c0-.128.016-.224.056-.28a.597.597 0 0 1 .224-.167c.279-.144.614-.264 1.005-.36a4.84 4.84 0 0 1 1.246-.151c.95 0 1.644.216 2.091.647.439.43.662 1.085.662 1.963v2.586zm-3.24 1.214c.263 0 .534-.048.822-.144.287-.096.543-.271.758-.51.128-.152.224-.32.272-.512.047-.191.08-.423.08-.694v-.335a6.66 6.66 0 0 0-.735-.136 6.02 6.02 0 0 0-.75-.048c-.535 0-.926.104-1.19.32-.263.215-.39.518-.39.917 0 .375.095.655.295.846.191.2.47.296.838.296zm6.41.862c-.144 0-.24-.024-.304-.08-.064-.048-.12-.16-.168-.311L7.586 5.55a1.398 1.398 0 0 1-.072-.32c0-.128.064-.2.191-.2h.783c.151 0 .255.025.31.08.065.048.113.16.16.312l1.342 5.284 1.245-5.284c.04-.16.088-.264.151-.312a.549.549 0 0 1 .32-.08h.638c.152 0 .256.025.32.08.063.048.12.16.151.312l1.261 5.348 1.381-5.348c.048-.16.104-.264.16-.312a.52.52 0 0 1 .311-.08h.743c.127 0 .2.065.2.2 0 .04-.009.08-.017.128a1.137 1.137 0 0 1-.056.2l-1.923 6.17c-.048.16-.104.263-.168.311a.51.51 0 0 1-.303.08h-.687c-.151 0-.255-.024-.32-.08-.063-.056-.119-.16-.15-.32l-1.238-5.148-1.23 5.14c-.04.16-.087.264-.15.32-.065.056-.177.08-.32.08zm10.256.215c-.415 0-.83-.048-1.229-.143-.399-.096-.71-.2-.918-.32-.128-.071-.215-.151-.247-.223a.563.563 0 0 1-.048-.224v-.407c0-.167.064-.247.183-.247.048 0 .096.008.144.024.048.016.12.048.2.08.271.12.566.215.878.279.319.064.63.096.95.096.502 0 .894-.088 1.165-.264a.86.86 0 0 0 .415-.758.777.777 0 0 0-.215-.559c-.144-.151-.416-.287-.807-.415l-1.157-.36c-.583-.183-1.014-.454-1.277-.813a1.902 1.902 0 0 1-.4-1.158c0-.335.073-.63.216-.886.144-.255.335-.479.575-.654.24-.184.51-.32.83-.415.32-.096.655-.136 1.006-.136.175 0 .359.008.535.032.183.024.35.056.518.088.16.04.312.08.455.127.144.048.256.096.336.144a.69.69 0 0 1 .24.2.43.43 0 0 1 .071.263v.375c0 .168-.064.256-.184.256a.83.83 0 0 1-.303-.096 3.652 3.652 0 0 0-1.532-.311c-.455 0-.815.071-1.062.223-.248.152-.375.383-.375.71 0 .224.08.416.24.567.159.152.454.304.877.44l1.134.358c.574.184.99.44 1.237.767.247.327.367.702.367 1.117 0 .343-.072.655-.207.926-.144.272-.336.511-.583.703-.248.2-.543.343-.886.447-.36.111-.734.167-1.142.167zM21.698 16.207c-2.626 1.94-6.442 2.969-9.722 2.969-4.598 0-8.74-1.7-11.87-4.526-.247-.223-.024-.527.272-.351 3.384 1.963 7.559 3.153 11.877 3.153 2.914 0 6.114-.607 9.06-1.852.439-.2.814.287.383.607zM22.792 14.961c-.336-.43-2.22-.207-3.074-.103-.255.032-.295-.192-.063-.36 1.5-1.053 3.967-.75 4.254-.399.287.36-.08 2.826-1.485 4.007-.215.184-.423.088-.327-.151.32-.79 1.03-2.57.695-2.994z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Amazon AWS</title><path d="M6.763 10.036c0 .296.032.535.088.71.064.176.144.368.256.576.04.063.056.127.056.183 0 .08-.048.16-.152.24l-.503.335a.383.383 0 0 1-.208.072c-.08 0-.16-.04-.239-.112a2.47 2.47 0 0 1-.287-.375 6.18 6.18 0 0 1-.248-.471c-.622.734-1.405 1.101-2.347 1.101-.67 0-1.205-.191-1.596-.574-.391-.384-.59-.894-.59-1.533 0-.678.239-1.23.726-1.644.487-.415 1.133-.623 1.955-.623.272 0 .551.024.846.064.296.04.6.104.918.176v-.583c0-.607-.127-1.03-.375-1.277-.255-.248-.686-.367-1.3-.367-.28 0-.568.031-.863.103-.295.072-.583.16-.862.272a2.287 2.287 0 0 1-.28.104.488.488 0 0 1-.127.023c-.112 0-.168-.08-.168-.247v-.391c0-.128.016-.224.056-.28a.597.597 0 0 1 .224-.167c.279-.144.614-.264 1.005-.36a4.84 4.84 0 0 1 1.246-.151c.95 0 1.644.216 2.091.647.439.43.662 1.085.662 1.963v2.586zm-3.24 1.214c.263 0 .534-.048.822-.144.287-.096.543-.271.758-.51.128-.152.224-.32.272-.512.047-.191.08-.423.08-.694v-.335a6.66 6.66 0 0 0-.735-.136 6.02 6.02 0 0 0-.75-.048c-.535 0-.926.104-1.19.32-.263.215-.39.518-.39.917 0 .375.095.655.295.846.191.2.47.296.838.296zm6.41.862c-.144 0-.24-.024-.304-.08-.064-.048-.12-.16-.168-.311L7.586 5.55a1.398 1.398 0 0 1-.072-.32c0-.128.064-.2.191-.2h.783c.151 0 .255.025.31.08.065.048.113.16.16.312l1.342 5.284 1.245-5.284c.04-.16.088-.264.151-.312a.549.549 0 0 1 .32-.08h.638c.152 0 .256.025.32.08.063.048.12.16.151.312l1.261 5.348 1.381-5.348c.048-.16.104-.264.16-.312a.52.52 0 0 1 .311-.08h.743c.127 0 .2.065.2.2 0 .04-.009.08-.017.128a1.137 1.137 0 0 1-.056.2l-1.923 6.17c-.048.16-.104.263-.168.311a.51.51 0 0 1-.303.08h-.687c-.151 0-.255-.024-.32-.08-.063-.056-.119-.16-.15-.32l-1.238-5.148-1.23 5.14c-.04.16-.087.264-.15.32-.065.056-.177.08-.32.08zm10.256.215c-.415 0-.83-.048-1.229-.143-.399-.096-.71-.2-.918-.32-.128-.071-.215-.151-.247-.223a.563.563 0 0 1-.048-.224v-.407c0-.167.064-.247.183-.247.048 0 .096.008.144.024.048.016.12.048.2.08.271.12.566.215.878.279.319.064.63.096.95.096.502 0 .894-.088 1.165-.264a.86.86 0 0 0 .415-.758.777.777 0 0 0-.215-.559c-.144-.151-.416-.287-.807-.415l-1.157-.36c-.583-.183-1.014-.454-1.277-.813a1.902 1.902 0 0 1-.4-1.158c0-.335.073-.63.216-.886.144-.255.335-.479.575-.654.24-.184.51-.32.83-.415.32-.096.655-.136 1.006-.136.175 0 .359.008.535.032.183.024.35.056.518.088.16.04.312.08.455.127.144.048.256.096.336.144a.69.69 0 0 1 .24.2.43.43 0 0 1 .071.263v.375c0 .168-.064.256-.184.256a.83.83 0 0 1-.303-.096 3.652 3.652 0 0 0-1.532-.311c-.455 0-.815.071-1.062.223-.248.152-.375.383-.375.71 0 .224.08.416.24.567.159.152.454.304.877.44l1.134.358c.574.184.99.44 1.237.767.247.327.367.702.367 1.117 0 .343-.072.655-.207.926-.144.272-.336.511-.583.703-.248.2-.543.343-.886.447-.36.111-.734.167-1.142.167zM21.698 16.207c-2.626 1.94-6.442 2.969-9.722 2.969-4.598 0-8.74-1.7-11.87-4.526-.247-.223-.024-.527.272-.351 3.384 1.963 7.559 3.153 11.877 3.153 2.914 0 6.114-.607 9.06-1.852.439-.2.814.287.383.607zM22.792 14.961c-.336-.43-2.22-.207-3.074-.103-.255.032-.295-.192-.063-.36 1.5-1.053 3.967-.75 4.254-.399.287.36-.08 2.826-1.485 4.007-.215.184-.423.088-.327-.151.32-.79 1.03-2.57.695-2.994z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/amazondynamodb.svg b/assets/lib/simple-icons/icons/amazondynamodb.svg
new file mode 100644
index 00000000..3d010ed1
--- /dev/null
+++ b/assets/lib/simple-icons/icons/amazondynamodb.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Amazon DynamoDB</title><path d="M16.606 20.705v-2.371c-1.263 1.082-3.884 1.795-7.066 1.795-3.184 0-5.805-.714-7.068-1.797v2.369c0 1.168 2.903 2.47 7.068 2.47 4.16 0 7.06-1.3 7.066-2.466zm.001-6.765l.817-.005v.005c0 .517-.258.998-.75 1.441.601.54.75 1.071.75 1.449a1661.7 1661.7 0 0 0 0 3.87c0 1.881-3.389 3.3-7.884 3.3-4.471 0-7.846-1.404-7.88-3.27a583.119 583.119 0 0 1-.003-3.909c.001-.375.15-.9.745-1.437-.592-.538-.743-1.062-.746-1.435v-3.892c.002-.377.153-.903.747-1.438-.593-.54-.744-1.062-.747-1.435 0-1.357-.002-2.735.002-3.897C1.674 1.412 5.056 0 9.54 0c2.159 0 4.233.356 5.689.974l-.315.766c-1.36-.58-3.319-.91-5.374-.91-4.165 0-7.067 1.3-7.067 2.47 0 1.168 2.902 2.47 7.067 2.47.115 0 .222 0 .334-.005l.033.828c-.122.006-.245.006-.367.006-3.184 0-5.805-.714-7.068-1.798v2.38c.005.45.45.843.821 1.093 1.116.736 3.114 1.239 5.34 1.342l-.037.829c-2.254-.105-4.23-.59-5.5-1.332-.318.245-.623.573-.623.952 0 1.168 2.902 2.47 7.067 2.47.411 0 .812-.014 1.203-.042l.06.826c-.41.03-.833.045-1.263.045-3.184 0-5.805-.713-7.068-1.797v2.368c.005.462.449.855.821 1.104 1.275.842 3.67 1.366 6.247 1.366h.182v.83H9.54c-2.62 0-4.99-.507-6.444-1.359-.317.245-.623.574-.623.954 0 1.168 2.902 2.47 7.067 2.47 4.159 0 7.058-1.298 7.066-2.465v-.007c0-.377-.303-.705-.62-.948a5.732 5.732 0 0 1-.662.336l-.316-.764c.3-.128.56-.266.776-.412.376-.254.823-.651.823-1.1zm4.377-6.915h-2.717a.406.406 0 0 1-.332-.173.42.42 0 0 1-.055-.375l1.204-3.597h-5.403l-2.583 4.974h2.623c.128 0 .248.06.325.164a.418.418 0 0 1 .069.36l-2.249 8.365zm1.249-.128l-10.89 11.608a.408.408 0 0 1-.498.075.418.418 0 0 1-.192-.471l2.534-9.426h-2.766a.407.407 0 0 1-.349-.2.418.418 0 0 1-.012-.407l3.014-5.804a.408.408 0 0 1 .36-.222h6.22c.132 0 .256.065.332.174a.422.422 0 0 1 .055.374l-1.204 3.598h3.1c.164 0 .31.099.375.251a.422.422 0 0 1-.08.45zM3.085 20.723a8.107 8.107 0 0 0 1.72.72l.233-.794a7.32 7.32 0 0 1-1.546-.645zm1.72-5.984l.233-.795a7.262 7.262 0 0 1-1.546-.646l-.407.72a8.051 8.051 0 0 0 1.72.72zm-1.72-7.427l.407-.719c.418.244.939.462 1.546.646l-.232.794a8.046 8.046 0 0 1-1.72-.72Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/amazonfiretv.svg b/assets/lib/simple-icons/icons/amazonfiretv.svg
index a93bee76..31b54ad3 100644
--- a/assets/lib/simple-icons/icons/amazonfiretv.svg
+++ b/assets/lib/simple-icons/icons/amazonfiretv.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Amazon Fire TV icon</title><path d="M20.196 15.12c.265.337-.294 1.73-.542 2.353-.077.19.085.266.257.123 1.106-.926 1.39-2.867 1.166-3.149-.226-.277-2.16-.516-3.341.314-.183.127-.151.304.05.279.665-.08 2.147-.257 2.41.08m-.858.981c-2.064 1.523-5.056 2.333-7.632 2.333-3.611 0-6.862-1.334-9.322-3.555-.194-.176-.02-.414.21-.28 2.655 1.545 5.939 2.477 9.328 2.477 2.287 0 4.803-.476 7.115-1.458.348-.147.642.231.3.483m2.034-3.155a.388.388 0 0 1-.201-.04c-.041-.026-.087-.1-.133-.225l-1.734-4.355a1.79 1.79 0 0 0-.046-.117.266.266 0 0 1-.023-.108c0-.084.049-.128.146-.128h.58c.098 0 .165.014.205.04.04.026.082.102.127.226l1.344 3.823 1.343-3.823c.046-.124.089-.2.128-.226a.402.402 0 0 1 .205-.04h.54c.1 0 .148.044.148.128a.3.3 0 0 1-.025.108c-.016.04-.032.078-.044.117l-1.727 4.355c-.045.124-.09.199-.132.225a.388.388 0 0 1-.201.04zm-3.644.068c-.929 0-1.392-.463-1.392-1.392V8.739h-.706c-.13 0-.197-.066-.197-.196v-.246a.22.22 0 0 1 .045-.147c.03-.031.086-.055.171-.067l.717-.09.127-1.215c.013-.13.082-.196.207-.196h.41c.13 0 .196.066.196.196v1.196h1.276c.13 0 .195.065.195.197v.372c0 .13-.064.196-.195.196h-1.276v2.834c0 .243.055.411.162.51.108.098.293.147.555.147.124 0 .277-.016.46-.049.099-.02.164-.03.197-.03.052 0 .088.014.108.044.02.03.029.077.029.142v.266a.366.366 0 0 1-.04.19c-.026.043-.078.078-.157.103a3.018 3.018 0 0 1-.892.118m-4.665-2.976c.006-.052.011-.137.011-.255 0-.399-.094-.698-.28-.901-.186-.204-.46-.306-.818-.306-.412 0-.732.123-.962.369-.228.245-.36.61-.392 1.093zm-.942 3.07c-.803 0-1.411-.222-1.824-.667-.412-.444-.616-1.102-.616-1.972 0-.83.204-1.475.616-1.937.413-.46.988-.691 1.728-.691.62 0 1.098.176 1.432.524.332.351.5.846.5 1.487 0 .21-.017.422-.05.638-.014.077-.034.13-.064.156-.029.027-.077.04-.142.04h-3.08c.013.563.154.977.418 1.245.265.268.674.403 1.23.403.196 0 .385-.014.564-.04a5.04 5.04 0 0 0 .682-.166l.117-.035a.284.284 0 0 1 .09-.016c.085 0 .125.06.125.177v.276c0 .085-.012.144-.037.18a.441.441 0 0 1-.167.114 3.38 3.38 0 0 1-.701.205 4.236 4.236 0 0 1-.82.079m-5.424-.147c-.13 0-.195-.066-.195-.197v-4.58c0-.13.064-.195.195-.195h.432c.064 0 .116.012.153.039.036.025.06.076.072.146l.07.55c.176-.19.343-.34.499-.452a1.725 1.725 0 0 1 1.02-.323c.079 0 .158.003.235.01.112.014.168.072.168.176v.53c0 .117-.058.177-.178.177-.058 0-.114-.004-.17-.01a1.638 1.638 0 0 0-.18-.01c-.524 0-.973.157-1.346.47v3.472c0 .131-.066.197-.195.197zm-2.249 0c-.13 0-.196-.066-.196-.197v-4.58c0-.13.066-.195.196-.195h.579c.13 0 .195.064.195.195v4.58c0 .131-.065.197-.195.197zm.295-5.856c-.19 0-.339-.054-.447-.16a.581.581 0 0 1-.161-.428c0-.176.054-.318.16-.426.11-.109.257-.163.448-.163.189 0 .337.054.446.163.107.108.16.25.16.426a.581.581 0 0 1-.16.427.608.608 0 0 1-.446.161m-3.625 5.856c-.132 0-.197-.066-.197-.197v-4.01H.195c-.13 0-.195-.066-.195-.197v-.245c0-.065.014-.114.043-.147.03-.033.088-.055.173-.07l.705-.087v-.804c0-1.091.523-1.638 1.57-1.638.248 0 .51.036.784.109.072.019.122.047.152.088.029.038.044.107.044.205v.255c0 .124-.048.186-.148.186-.058 0-.14-.01-.248-.029-.11-.02-.23-.03-.369-.03-.3 0-.51.057-.633.172-.121.115-.181.303-.181.564v.903h1.324c.131 0 .197.064.197.195v.373c0 .13-.066.197-.197.197H1.892v4.01c0 .131-.065.197-.196.197Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Amazon Fire TV</title><path d="M20.196 15.12c.265.337-.294 1.73-.542 2.353-.077.19.085.266.257.123 1.106-.926 1.39-2.867 1.166-3.149-.226-.277-2.16-.516-3.341.314-.183.127-.151.304.05.279.665-.08 2.147-.257 2.41.08m-.858.981c-2.064 1.523-5.056 2.333-7.632 2.333-3.611 0-6.862-1.334-9.322-3.555-.194-.176-.02-.414.21-.28 2.655 1.545 5.939 2.477 9.328 2.477 2.287 0 4.803-.476 7.115-1.458.348-.147.642.231.3.483m2.034-3.155a.388.388 0 0 1-.201-.04c-.041-.026-.087-.1-.133-.225l-1.734-4.355a1.79 1.79 0 0 0-.046-.117.266.266 0 0 1-.023-.108c0-.084.049-.128.146-.128h.58c.098 0 .165.014.205.04.04.026.082.102.127.226l1.344 3.823 1.343-3.823c.046-.124.089-.2.128-.226a.402.402 0 0 1 .205-.04h.54c.1 0 .148.044.148.128a.3.3 0 0 1-.025.108c-.016.04-.032.078-.044.117l-1.727 4.355c-.045.124-.09.199-.132.225a.388.388 0 0 1-.201.04zm-3.644.068c-.929 0-1.392-.463-1.392-1.392V8.739h-.706c-.13 0-.197-.066-.197-.196v-.246a.22.22 0 0 1 .045-.147c.03-.031.086-.055.171-.067l.717-.09.127-1.215c.013-.13.082-.196.207-.196h.41c.13 0 .196.066.196.196v1.196h1.276c.13 0 .195.065.195.197v.372c0 .13-.064.196-.195.196h-1.276v2.834c0 .243.055.411.162.51.108.098.293.147.555.147.124 0 .277-.016.46-.049.099-.02.164-.03.197-.03.052 0 .088.014.108.044.02.03.029.077.029.142v.266a.366.366 0 0 1-.04.19c-.026.043-.078.078-.157.103a3.018 3.018 0 0 1-.892.118m-4.665-2.976c.006-.052.011-.137.011-.255 0-.399-.094-.698-.28-.901-.186-.204-.46-.306-.818-.306-.412 0-.732.123-.962.369-.228.245-.36.61-.392 1.093zm-.942 3.07c-.803 0-1.411-.222-1.824-.667-.412-.444-.616-1.102-.616-1.972 0-.83.204-1.475.616-1.937.413-.46.988-.691 1.728-.691.62 0 1.098.176 1.432.524.332.351.5.846.5 1.487 0 .21-.017.422-.05.638-.014.077-.034.13-.064.156-.029.027-.077.04-.142.04h-3.08c.013.563.154.977.418 1.245.265.268.674.403 1.23.403.196 0 .385-.014.564-.04a5.04 5.04 0 0 0 .682-.166l.117-.035a.284.284 0 0 1 .09-.016c.085 0 .125.06.125.177v.276c0 .085-.012.144-.037.18a.441.441 0 0 1-.167.114 3.38 3.38 0 0 1-.701.205 4.236 4.236 0 0 1-.82.079m-5.424-.147c-.13 0-.195-.066-.195-.197v-4.58c0-.13.064-.195.195-.195h.432c.064 0 .116.012.153.039.036.025.06.076.072.146l.07.55c.176-.19.343-.34.499-.452a1.725 1.725 0 0 1 1.02-.323c.079 0 .158.003.235.01.112.014.168.072.168.176v.53c0 .117-.058.177-.178.177-.058 0-.114-.004-.17-.01a1.638 1.638 0 0 0-.18-.01c-.524 0-.973.157-1.346.47v3.472c0 .131-.066.197-.195.197zm-2.249 0c-.13 0-.196-.066-.196-.197v-4.58c0-.13.066-.195.196-.195h.579c.13 0 .195.064.195.195v4.58c0 .131-.065.197-.195.197zm.295-5.856c-.19 0-.339-.054-.447-.16a.581.581 0 0 1-.161-.428c0-.176.054-.318.16-.426.11-.109.257-.163.448-.163.189 0 .337.054.446.163.107.108.16.25.16.426a.581.581 0 0 1-.16.427.608.608 0 0 1-.446.161m-3.625 5.856c-.132 0-.197-.066-.197-.197v-4.01H.195c-.13 0-.195-.066-.195-.197v-.245c0-.065.014-.114.043-.147.03-.033.088-.055.173-.07l.705-.087v-.804c0-1.091.523-1.638 1.57-1.638.248 0 .51.036.784.109.072.019.122.047.152.088.029.038.044.107.044.205v.255c0 .124-.048.186-.148.186-.058 0-.14-.01-.248-.029-.11-.02-.23-.03-.369-.03-.3 0-.51.057-.633.172-.121.115-.181.303-.181.564v.903h1.324c.131 0 .197.064.197.195v.373c0 .13-.066.197-.197.197H1.892v4.01c0 .131-.065.197-.196.197Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/amazonlumberyard.svg b/assets/lib/simple-icons/icons/amazonlumberyard.svg
index 4881f054..4020e567 100644
--- a/assets/lib/simple-icons/icons/amazonlumberyard.svg
+++ b/assets/lib/simple-icons/icons/amazonlumberyard.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Amazon Lumberyard icon</title><path d="M23.927,12.153c-0.051-0.011-0.102-0.022-0.153-0.034c-0.077-0.017-0.091-0.011-0.119,0.061 c-0.036,0.093-0.082,0.178-0.158,0.244c-0.166,0.144-0.374,0.079-0.472-0.063c-0.047-0.068-0.073-0.145-0.088-0.226 c-0.013-0.075-0.014-0.091,0.016-0.146c0.069-0.127,0.127-0.277,0.161-0.424c0.067-0.287,0.107-0.563,0.137-0.868 c0.017-0.179,0.032-0.361,0.036-0.542c0.006-0.256,0.017-0.513-0.026-0.768c-0.019-0.111-0.045-0.221-0.103-0.319 c-0.072-0.123-0.178-0.193-0.322-0.202c-0.187-0.012-0.328,0.068-0.432,0.221c-0.069,0.101-0.108,0.215-0.138,0.333 c-0.047,0.183-0.06,0.37-0.066,0.557c-0.005,0.166,0.001,0.333,0.01,0.5c0.007,0.138,0.022,0.276,0.037,0.414 c0.012,0.113,0.026,0.227,0.044,0.339c0.018,0.113-0.013,0.132-0.121,0.116c-0.125-0.018-0.251-0.013-0.376,0.007 c-0.189,0.031-0.357,0.115-0.508,0.229c-0.168,0.126-0.294,0.284-0.341,0.494c-0.007,0.032-0.005,0.072-0.019,0.1 c-0.044,0.09-0.097,0.169-0.172,0.237c-0.084,0.077-0.179,0.1-0.286,0.091c-0.103-0.009-0.153-0.073-0.189-0.157 c-0.039-0.093-0.058-0.191-0.059-0.291c-0.001-0.111,0.008-0.222,0.009-0.333c0.001-0.112-0.045-0.202-0.132-0.272 c-0.078-0.062-0.17-0.089-0.266-0.103c-0.151-0.022-0.319-0.011-0.456,0.004c-0.028,0.003-0.036,0-0.059-0.023 c-0.094-0.096-0.208-0.122-0.337-0.099c-0.091,0.016-0.159,0.087-0.181,0.185c-0.019,0.086,0.008,0.178,0.083,0.227 c0.054,0.035,0.09,0.053,0.146,0.063c0.046,0.008,0.05,0.014,0.05,0.056c-0.002,0.06-0.003,0.121-0.01,0.181 c-0.013,0.116-0.039,0.228-0.096,0.332c-0.074,0.136-0.186,0.224-0.341,0.231c-0.228,0.011-0.394-0.131-0.423-0.372 c-0.008-0.066-0.007-0.134-0.008-0.2c-0.001-0.159-0.001-0.317-0.001-0.476c0-0.06-0.013-0.078-0.078-0.078 c-0.057,0-0.117-0.002-0.172-0.003c-0.061-0.001-0.086,0.002-0.091,0.071c-0.047-0.019-0.091-0.044-0.136-0.059 c-0.184-0.062-0.372-0.066-0.561-0.029c-0.238,0.047-0.449,0.149-0.62,0.323c-0.045,0.045-0.085,0.098-0.126,0.144 c-0.118,0.133-0.249,0.264-0.378,0.385c-0.018,0.017-0.047,0.026-0.072,0.016c-0.028-0.012-0.043-0.031-0.043-0.064 c0-0.212,0-0.435-0.001-0.653c0-0.057-0.017-0.074-0.072-0.075c-0.074-0.001-0.147-0.001-0.221,0c-0.042,0-0.051,0.001-0.051,0.044 c0.001,0.129-0.011,0.214-0.025,0.301c-0.03,0.177-0.067,0.288-0.143,0.427c-0.049,0.089-0.108,0.172-0.192,0.232 c-0.121,0.087-0.237,0.085-0.355-0.006c-0.074-0.057-0.13-0.129-0.175-0.21c-0.123-0.222-0.175-0.462-0.179-0.714 c-0.001-0.053-0.02-0.074-0.072-0.075c-0.077-0.001-0.154-0.001-0.231,0c-0.05,0.001-0.07,0.021-0.072,0.072 c-0.003,0.057-0.006,0.114-0.01,0.171c-0.011,0.15-0.041,0.297-0.093,0.439c-0.037,0.104-0.087,0.2-0.167,0.28 c-0.105,0.104-0.253,0.109-0.369,0.015c-0.054-0.044-0.095-0.099-0.127-0.161c-0.093-0.18-0.136-0.384-0.144-0.575 c-0.008-0.206-0.151-0.331-0.324-0.367c-0.106-0.022-0.203-0.022-0.316-0.002c-0.036,0.007-0.064,0.007-0.092-0.03 c-0.047-0.06-0.099-0.09-0.174-0.097c-0.04-0.004-0.091-0.003-0.131,0.002c-0.191,0.022-0.303,0.225-0.224,0.399 c0.03,0.065,0.08,0.115,0.146,0.146c0.064,0.031,0.072,0.044,0.041,0.116c-0.051,0.111-0.114,0.214-0.199,0.301 c-0.248,0.261-0.578,0.401-0.962,0.365c-0.105-0.01-0.201-0.047-0.286-0.11c-0.062-0.046-0.112-0.098-0.127-0.179 c-0.004-0.021-0.001-0.048,0.015-0.057c0.012-0.007,0.039,0,0.052,0.008c0.189,0.1,0.388,0.126,0.596,0.1 c0.152-0.019,0.285-0.09,0.394-0.199c0.204-0.205,0.151-0.502-0.051-0.654c-0.169-0.127-0.36-0.168-0.561-0.125 c-0.354,0.074-0.611,0.286-0.743,0.629c-0.054,0.139-0.069,0.288-0.018,0.434c0.067,0.19,0.202,0.32,0.38,0.406 c0.218,0.106,0.455,0.119,0.689,0.082c0.35-0.056,0.65-0.213,0.887-0.479c0.152-0.17,0.256-0.36,0.326-0.579 c0.011-0.033,0.019-0.064,0.02-0.106c0.001-0.023,0.009-0.026,0.034-0.029c0.075-0.009,0.137-0.012,0.213-0.01 c0.042,0.001,0.072,0.022,0.076,0.062c0.012,0.139,0.029,0.261,0.057,0.383c0.043,0.188,0.117,0.355,0.242,0.506 c0.2,0.242,0.545,0.299,0.79,0.151c0.121-0.073,0.219-0.184,0.283-0.308c0.042-0.082,0.105-0.092,0.155-0.002 c0.061,0.108,0.142,0.2,0.242,0.275c0.169,0.127,0.364,0.174,0.568,0.107c0.121-0.04,0.218-0.103,0.306-0.195 c0.014-0.014,0.038-0.036,0.05-0.051c0.004,0.109,0.004,0.118-0.04,0.166c-0.185,0.197-0.362,0.4-0.511,0.626 c-0.139,0.211-0.263,0.429-0.34,0.671c-0.061,0.19-0.091,0.383-0.054,0.583c0.042,0.226,0.152,0.396,0.347,0.511 c0.117,0.069,0.277,0.092,0.4,0.048c0.137-0.049,0.248-0.115,0.329-0.262c0.034-0.063,0.067-0.137,0.09-0.205 c0.054-0.158,0.077-0.326,0.095-0.496c0.014-0.126,0.021-0.273,0.026-0.41c0.005-0.134,0.002-0.268,0.002-0.402 c0-0.175,0.002-0.351,0.003-0.526c0-0.037-0.003-0.045,0.027-0.077c0.106-0.109,0.201-0.204,0.3-0.311 c0.045-0.046,0.09-0.047,0.121,0.011c0.073,0.135,0.175,0.224,0.303,0.288c0.189,0.095,0.395,0.11,0.601,0.083 c0.245-0.032,0.456-0.131,0.642-0.294c0.052-0.046,0.079-0.042,0.126,0.013c0.194,0.221,0.44,0.302,0.725,0.244 c0.218-0.044,0.378-0.178,0.49-0.366c0.105-0.177,0.141-0.375,0.156-0.577c0.003-0.042,0.004-0.087,0.004-0.127 c0-0.041,0.027-0.07,0.069-0.072c0.073-0.004,0.156-0.004,0.229-0.003c0.047,0.001,0.086,0.003,0.132,0.013 c0.039,0.009,0.046,0.026,0.041,0.064c-0.006,0.052-0.014,0.104-0.014,0.156c-0.002,0.146,0.01,0.29,0.048,0.432 c0.028,0.105,0.069,0.208,0.137,0.294c0.105,0.132,0.244,0.197,0.412,0.203c0.204,0.007,0.383-0.051,0.531-0.195 c0.042-0.041,0.075-0.04,0.12,0.005c0.14,0.136,0.311,0.199,0.5,0.218c0.22,0.022,0.433-0.017,0.635-0.111 c0.127-0.059,0.243-0.135,0.34-0.237c0.048-0.05,0.098-0.048,0.141,0.019c0.181,0.284,0.537,0.401,0.859,0.223 c0.204-0.112,0.327-0.284,0.394-0.507C24.012,12.195,23.995,12.167,23.927,12.153z M10.849,11.723 c0.085-0.063,0.181-0.094,0.287-0.102c0.089-0.007,0.173,0.012,0.243,0.071c0.055,0.046,0.058,0.091,0.007,0.141 c-0.082,0.079-0.164,0.107-0.288,0.104c-0.081-0.002-0.156-0.01-0.233-0.04c-0.018-0.007-0.037-0.014-0.053-0.024 c-0.026-0.015-0.037-0.033-0.037-0.053C10.774,11.783,10.806,11.754,10.849,11.723z M15.573,13.971 c-0.013,0.198-0.028,0.397-0.089,0.588c-0.025,0.078-0.062,0.184-0.125,0.238c-0.079,0.068-0.163,0.079-0.252,0.003 c-0.101-0.081-0.14-0.182-0.149-0.315c-0.013-0.197,0.05-0.377,0.132-0.552c0.096-0.207,0.218-0.392,0.357-0.572 c0.021-0.027,0.043-0.053,0.08-0.042c0.032,0.01,0.055,0.034,0.056,0.072c0.001,0.072,0,0.144,0,0.216 C15.583,13.673,15.581,13.85,15.573,13.971z M17.828,12.137c-0.051,0.112-0.138,0.194-0.24,0.259 c-0.145,0.092-0.304,0.14-0.456,0.141c-0.134,0-0.242-0.02-0.34-0.08c-0.085-0.052-0.143-0.123-0.15-0.227 c-0.005-0.08,0.02-0.154,0.068-0.215c0.091-0.117,0.205-0.218,0.339-0.271c0.189-0.075,0.392-0.102,0.577-0.029 c0.107,0.042,0.198,0.11,0.227,0.224C17.869,12.01,17.857,12.074,17.828,12.137z M22.444,12.166 c-0.064,0.117-0.163,0.199-0.279,0.261c-0.133,0.072-0.275,0.109-0.402,0.109c-0.131,0-0.235-0.017-0.326-0.072 c-0.069-0.042-0.116-0.081-0.148-0.161c-0.009-0.022-0.01-0.054,0.003-0.078c0.054-0.101,0.11-0.203,0.174-0.298 c0.076-0.114,0.184-0.186,0.319-0.221c0.162-0.042,0.322-0.051,0.481,0.009c0.113,0.043,0.197,0.114,0.223,0.24 C22.503,12.032,22.48,12.101,22.444,12.166z M22.875,11.009c-0.016,0.126-0.043,0.25-0.066,0.375 c-0.008,0.044-0.036,0.069-0.071,0.069c-0.032,0.001-0.061-0.022-0.069-0.065c-0.023-0.118-0.047-0.237-0.063-0.356 c-0.014-0.111-0.025-0.213-0.037-0.32c-0.013-0.117-0.018-0.234-0.023-0.352c-0.003-0.101-0.01-0.203-0.007-0.304 c0.006-0.197,0.011-0.395,0.067-0.586c0.019-0.065,0.04-0.121,0.074-0.18c0.02-0.035,0.05-0.072,0.091-0.079 c0.039-0.007,0.089,0.003,0.104,0.04c0.024,0.06,0.036,0.114,0.048,0.177c0.029,0.156,0.034,0.324,0.031,0.483 c-0.003,0.175-0.009,0.34-0.022,0.514C22.919,10.62,22.9,10.815,22.875,11.009z M9.912,11.638c-0.146-0.185-0.343-0.278-0.571-0.298 c-0.169-0.015-0.339,0.006-0.501,0.059c-0.058,0.019-0.122-0.004-0.123-0.065c0-0.038,0.021-0.154,0.033-0.235 c0.013-0.08,0.026-0.208,0.042-0.39c0.016-0.182,0.023-0.365,0.034-0.548c0.003-0.047,0.005-0.093,0.003-0.14 C8.827,9.927,8.819,9.834,8.812,9.741C8.803,9.617,8.779,9.496,8.732,9.38C8.6,9.038,8.262,9.054,8.072,9.169 C7.967,9.232,7.898,9.33,7.848,9.439c-0.087,0.19-0.107,0.402-0.121,0.607c-0.007,0.101-0.004,0.228-0.005,0.329 c-0.001,0.183,0.021,0.39,0.038,0.573c0.018,0.185,0.039,0.3,0.07,0.466c0.047,0.253,0.123,0.482,0.241,0.711 c0.017,0.033,0.016,0.064,0.005,0.097c-0.01,0.031-0.032,0.08-0.048,0.107c-0.097,0.162-0.338,0.276-0.538,0.04 c-0.074-0.091-0.111-0.187-0.141-0.303c-0.016-0.061-0.034-0.122-0.056-0.181c-0.06-0.16-0.144-0.314-0.286-0.416 c-0.149-0.107-0.316-0.155-0.494-0.089c-0.103,0.038-0.193,0.11-0.26,0.194c-0.033,0.041-0.056,0.081-0.086,0.127 c-0.038,0.058-0.106,0.062-0.144,0.005c-0.074-0.111-0.138-0.198-0.243-0.267c-0.083-0.055-0.176-0.088-0.274-0.084 c-0.099,0.004-0.198,0.029-0.277,0.093c-0.036,0.028-0.074,0.062-0.107,0.1c-0.013-0.051-0.033-0.087-0.082-0.088 c-0.057-0.001-0.115-0.001-0.174-0.001c-0.054,0-0.098,0.022-0.099,0.094c-0.001,0.029-0.003,0.104-0.003,0.133 c-0.007,0.176-0.029,0.311-0.078,0.485c-0.027,0.096-0.063,0.177-0.121,0.261c-0.067,0.097-0.145,0.091-0.208,0.027 c-0.038-0.039-0.071-0.087-0.096-0.135c-0.124-0.234-0.167-0.459-0.179-0.75c-0.003-0.07-0.027-0.113-0.109-0.115 c-0.046-0.001-0.091-0.001-0.137,0c-0.059,0.001-0.106,0.05-0.108,0.109c-0.007,0.185-0.05,0.373-0.123,0.548 c-0.049,0.119-0.097,0.209-0.212,0.305c-0.07,0.058-0.113,0.084-0.203,0.084c-0.069,0-0.133-0.035-0.183-0.075 c-0.081-0.065-0.135-0.138-0.181-0.227c-0.101-0.204-0.159-0.417-0.161-0.641c-0.001-0.06-0.041-0.102-0.096-0.103 c-0.062-0.001-0.124,0-0.187,0c-0.057,0-0.07-0.001-0.071,0.065c-0.003,0.108-0.008,0.234-0.023,0.344 c-0.018,0.128-0.045,0.24-0.102,0.356c-0.061,0.123-0.141,0.218-0.259,0.268c-0.042,0.018-0.084,0.028-0.147,0.028 c-0.07,0-0.134-0.019-0.198-0.054c-0.102-0.055-0.199-0.142-0.282-0.238c-0.026-0.033-0.03-0.082-0.007-0.116 c0.1-0.144,0.176-0.29,0.245-0.468c0.043-0.109,0.083-0.234,0.112-0.376c0.022-0.108,0.037-0.265,0.049-0.398 c0.013-0.156,0.022-0.314,0.023-0.47c0.001-0.09-0.004-0.205-0.014-0.326c-0.012-0.136-0.04-0.275-0.098-0.402 C1.535,9.514,1.423,9.383,1.247,9.35C1.096,9.321,0.925,9.353,0.806,9.454C0.729,9.519,0.677,9.606,0.638,9.697 c-0.083,0.189-0.106,0.395-0.114,0.597c-0.008,0.196-0.003,0.422,0.02,0.617c0.02,0.167,0.039,0.326,0.063,0.492 c0.035,0.238,0.092,0.436,0.192,0.655c0.025,0.055,0.033,0.094-0.009,0.136c-0.062,0.063-0.125,0.132-0.188,0.193 c-0.172,0.166-0.358,0.311-0.562,0.436c-0.035,0.021-0.048,0.065-0.032,0.102c0.023,0.054,0.06,0.115,0.089,0.168 c0.027,0.049,0.073,0.053,0.122,0.028c0.045-0.023,0.118-0.077,0.166-0.109c0.218-0.146,0.406-0.314,0.498-0.406 c0.04-0.04,0.073-0.07,0.097-0.093c0.033-0.033,0.088-0.027,0.129,0.019c0.079,0.088,0.192,0.173,0.297,0.232 c0.184,0.103,0.377,0.139,0.585,0.075c0.186-0.057,0.324-0.172,0.432-0.331c0.064-0.094,0.125-0.091,0.189,0.008 c0.042,0.066,0.106,0.132,0.167,0.181c0.101,0.081,0.237,0.148,0.385,0.152c0.182,0.005,0.317-0.046,0.45-0.158 c0.072-0.06,0.127-0.126,0.18-0.203c0.029-0.043,0.076-0.061,0.115-0.043c0.025,0.012,0.047,0.046,0.062,0.069 c0.051,0.082,0.11,0.152,0.184,0.217c0.179,0.157,0.404,0.153,0.555,0.043c0.015-0.011,0.041-0.031,0.061-0.044 c0.009,0.073,0.043,0.08,0.115,0.081c0.057,0.001,0.134,0,0.19,0c0.043,0,0.043,0,0.043-0.036c0-0.071,0.001-0.143,0.006-0.218 c0.012-0.171,0.05-0.36,0.107-0.527c0.037-0.108,0.093-0.203,0.178-0.282c0.03-0.029,0.07-0.047,0.103-0.047 c0.056,0,0.087,0.028,0.12,0.061c0.038,0.039,0.082,0.089,0.105,0.139c0.094,0.203,0.132,0.359,0.162,0.572 c0.009,0.078,0.011,0.163,0.009,0.241c-0.001,0.03,0.007,0.029,0.042,0.03c0.093,0.001,0.208-0.002,0.301-0.002 c0.027,0,0.026-0.001,0.026-0.028c0-0.079,0.004-0.181,0.015-0.259c0.023-0.157,0.05-0.291,0.107-0.434 c0.04-0.102,0.094-0.208,0.178-0.284c0.055-0.049,0.12-0.05,0.184-0.019c0.036,0.017,0.068,0.048,0.095,0.077 c0.098,0.112,0.138,0.254,0.171,0.397c0.049,0.21,0.142,0.386,0.337,0.53c0.103,0.076,0.224,0.121,0.352,0.128 c0.179,0.01,0.321-0.044,0.462-0.158c0.037-0.03,0.061-0.049,0.084-0.049c0.009,0,0.019,0,0.026,0.001 c0.015,0.002,0.042,0.02,0.075,0.047c0.138,0.122,0.299,0.172,0.477,0.189c0.169,0.016,0.334-0.005,0.496-0.061 c0.25-0.086,0.457-0.223,0.598-0.453C10.077,12.132,10.081,11.851,9.912,11.638z M1.099,11.664c-0.049,0-0.082-0.007-0.098-0.058 c-0.025-0.084-0.05-0.201-0.064-0.302C0.914,11.13,0.9,11.011,0.886,10.839c-0.012-0.143-0.017-0.281-0.016-0.425 c0.001-0.17,0.011-0.348,0.064-0.511c0.02-0.061,0.048-0.122,0.092-0.17c0.061-0.067,0.176-0.068,0.24,0.038 c0.052,0.083,0.072,0.17,0.082,0.266c0.014,0.126,0.019,0.246,0.019,0.379c0,0.181-0.011,0.365-0.027,0.55 c-0.02,0.211-0.069,0.408-0.156,0.61C1.167,11.615,1.146,11.664,1.099,11.664z M8.453,10.618c-0.027,0.275-0.053,0.487-0.098,0.726 c-0.013,0.071-0.033,0.108-0.078,0.108c-0.039,0-0.078-0.002-0.095-0.053c-0.028-0.084-0.04-0.171-0.052-0.26 c-0.019-0.147-0.036-0.3-0.044-0.448c-0.01-0.201-0.016-0.381-0.013-0.582c0.002-0.13,0.016-0.285,0.056-0.41 C8.15,9.634,8.175,9.573,8.208,9.513c0.024-0.043,0.069-0.071,0.123-0.069C8.365,9.446,8.384,9.45,8.405,9.51 c0.023,0.065,0.039,0.127,0.049,0.195c0.021,0.155,0.018,0.253,0.019,0.374C8.475,10.267,8.469,10.45,8.453,10.618z M9.675,12.102 c-0.035,0.097-0.097,0.173-0.179,0.24c-0.126,0.098-0.254,0.159-0.413,0.181c-0.138,0.019-0.279,0.021-0.406-0.039 c-0.101-0.048-0.18-0.114-0.194-0.231c-0.009-0.073,0.012-0.149,0.049-0.211c0.1-0.167,0.255-0.263,0.436-0.321 c0.084-0.027,0.171-0.035,0.26-0.033c0.126,0.002,0.247,0.024,0.352,0.1C9.69,11.866,9.713,11.982,9.675,12.102z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Amazon Lumberyard</title><path d="M13.136 4.01a2.25 2.25 0 0 0-.441.042 2.133 2.133 0 0 0-1.74 2.195c-.07.056-.139.115-.2.178l-.21.219c-.137.14-.276.278-.417.416-.282.274-.574.541-.867.812-.584.54-1.186 1.088-1.725 1.715a7.3 7.3 0 0 0-.73 1.014 4.9 4.9 0 0 0-.65 1.791 3.73 3.73 0 0 0-.04.324l-.008.08-.004.074-.005.15-.002.038-.002.049v.078l.002.16.006.152c-.884-.293-2.123-.481-3.184-.468-1.235.013-2.132.273-2.588.75a1.14 1.14 0 0 0-.33.842c.034.95 1.117 1.511 2.912 1.511h.1c1.257-.015 2.762-.348 3.613-.767a2.055 2.055 0 0 1 .07 1.09 1.662 1.662 0 0 1-.175.465 1.436 1.436 0 0 1-.31.373 1.45 1.45 0 0 1-.419.24 1.82 1.82 0 0 1-.5.1l.047.634h.012c1.306.771 1.579 1.622 1.74 1.702.215.105 1.023-.188.877-.854-.086-.392-.545-.675-.975-.861.08-.008.16-.02.238-.032a.532.532 0 0 0 .051-.002l.05-.01.05-.011a5.4 5.4 0 0 0 .234-.043l.004-.002c1.225-.252 2.32-.713 3.202-1.317.906.575 1.89 1.398 2.22 2.15-.03.129-.138.261-.261.274l.334.618c1.054-.532 1.809-.238 2.326.002l.178.091c.027.015.003 0 .027.016l.088-.031c.15-.095.535-.454.44-.82-.12-.453-.415-.626-.7-.575-.286.052-1.01.506-.955.07l-.004-.003c.042-.33.088-.922.004-1.592-.16-1.247-.709-2.214-1.594-2.817a3.51 3.51 0 0 0 .139-.62c.614.216 1.207.389 1.973.458.276.025.902.03 1.373.025l.064.237a.01.01 0 0 0 .014.006l.256-.092a.514.514 0 0 1 .07-.024c.022-.006.034-.006.035.012-.004.05-.017.12-.023.147l-.057.287-.031.166c-.006.062.031.096.107.066.066-.03.153-.071.157-.074.438-.182.913-.443 1.351-.629.21-.088.31-.3.352-.504a1.25 1.25 0 0 0-.008-.404l.691.058.004-.006.207-.552.588.058.207-.552.586.058.207-.553.586.06.207-.552.588.059.205-.553.588.059.205-.553.346.035.086-.506.002-.02-.299-1.414-8.383 3.315a.03.03 0 0 0-.01.047l.381.383c.007.008.017.01.03.008l.17-.057a.104.104 0 0 1 .13.057l.096.234s.01.03-.041.03l-.051-.003a7.035 7.035 0 0 1-.205-.011 3.435 3.435 0 0 1-.375-.053c-.062-.01-.123-.03-.184-.043-.06-.015-.122-.034-.183-.051l-.18-.064-.176-.075a4.493 4.493 0 0 1-.346-.173c-.057-.032-.113-.063-.17-.1a11.316 11.316 0 0 1-.503-.332c-.111-.078-.224-.16-.336-.24l-.022-.018c.126-1.483.522-2.098.834-2.352a.812.812 0 0 1 .356-.175 1.832 1.832 0 0 0-.022.38l.434.034.031-.11c.008-.036.021-.07.031-.105.01-.036.025-.07.037-.104.011-.034.03-.066.041-.1.013-.033.032-.064.047-.099.015-.03.035-.065.051-.098.037-.065.075-.134.117-.2l.13-.216c.042-.075.086-.15.126-.232.02-.042.04-.083.059-.127.019-.044.037-.085.054-.135l.024-.07.014-.035.01-.031.015-.06.01-.03.002-.006.008-.026.005-.03.004-.028v-.04c0-.015 0-.02-.006-.05a.234.234 0 0 0-.007-.03l-.01-.027a1.465 1.465 0 0 0-.4-.607 2.21 2.21 0 0 0-.214-.174l.15.006c.146.005.267.008.352.008.085.002.133 0 .133 0l.053-.528s-.05-.01-.135-.023a7.918 7.918 0 0 0-.353-.053l-.06-.008.048-.01a2.26 2.26 0 0 0-2.174-1.753zm.102.643a1.62 1.62 0 0 1 1.394 1.059l-.385-.027a20.737 20.737 0 0 0-.578-.03 19.922 19.922 0 0 0-.508-.01l-.207.002c-.062 0-.108.003-.152.004l-.135.006v.002c-.026 0-.052 0-.078.002a3.112 3.112 0 0 0-.974.217 1.48 1.48 0 0 1 .607-.95c.014-.002.029-.003.047-.01.025-.003.054-.005.086-.01.03 0 .063-.007.1-.005h.113c.039.006.079.009.119.014.04.01.084.012.125.023.04.012.082.022.121.04a1 1 0 0 1 .115.046c.038.016.07.038.104.055.03.02.064.039.09.059a1.14 1.14 0 0 1 .15.125.034.034 0 0 1 .01.011l.256-.177-.01-.022a1.49 1.49 0 0 0-.164-.207c-.03-.033-.063-.063-.098-.098-.037-.03-.073-.066-.117-.097zm-.483 1.645h.067l.074.002c.176.008.365.03.545.064.363.07.721.186 1.037.354.156.084.303.182.42.293a.92.92 0 0 1 .209.28l-.002.013-.01.031-.008.022-.015.046c-.01.03-.027.066-.041.1-.012.033-.028.067-.043.102-.014.034-.034.068-.051.103l-.05.106a6.728 6.728 0 0 0-.114.224l-.026.051c-.103-.012-.506-.038-.94.297-.554.43-.91 1.25-1.06 2.447-.025-.017-.046-.036-.07-.05a10.35 10.35 0 0 0-.363-.231l-.186-.111-.191-.104a6.063 6.063 0 0 0-.795-.35 2.93 2.93 0 0 0-.207-.064 3.504 3.504 0 0 0-.211-.06c-.07-.018-.142-.04-.21-.051l-.206-.041-.086.318c.133.047.268.09.389.14.06.023.123.05.185.077a5.567 5.567 0 0 1 .541.268 6.7 6.7 0 0 1 .348.203l.17.111.166.113.164.12.164.122c.109.082.216.166.324.252l.324.26c.22.174.445.35.686.516.059.04.12.08.182.119a4.624 4.624 0 0 0 .586.326c.068.032.139.06.209.09.07.027.142.05.214.076.074.022.147.046.221.065.075.017.148.035.223.049.15.026.303.045.455.056.075.003.15.008.227.008l.093-.002a.573.573 0 0 0 .248-.063l.055-.027s.052-.03.1-.07a.931.931 0 0 1 .13-.112.499.499 0 0 1 .178-.08.29.29 0 0 1 .155.008c.013.006.025.007.039.014a.374.374 0 0 1 .039.021l.006.002a.9.9 0 0 1 .007.073.91.91 0 0 1-.005.181.72.72 0 0 1-.295.5l-.002.002a1.575 1.575 0 0 1-.075.051c-.026.018-.054.029-.082.045-.028.016-.06.028-.09.041l-.078.031a3.68 3.68 0 0 1-.037-.228 17.834 17.834 0 0 1-1.29-.024c-.887-.08-1.516-.31-2.31-.6a22.853 22.853 0 0 0-1.806-.595.897.897 0 0 0-1.116.588c-.085.276-.086.628-.005 1.049.248 1.282.255 2.291.017 2.771a8.57 8.57 0 0 1-2.398.86h-.004l-.092.02-.131.023a4.35 4.35 0 0 1-.438.052 2.11 2.11 0 0 0 .26-.35c.116-.202.2-.423.25-.648a2.697 2.697 0 0 0-.11-1.502c-.016-.053-.04-.105-.06-.156-.02-.052-.048-.102-.072-.152l-.062-.135a2.802 2.802 0 0 1-.172-.502 3.593 3.593 0 0 1-.088-.54 4.33 4.33 0 0 1-.018-.278l-.002-.14v-.097l.004-.037.01-.15.004-.075.006-.066c.009-.09.018-.18.035-.271a4.253 4.253 0 0 1 .562-1.563c.191-.323.417-.63.666-.922.501-.585 1.084-1.12 1.67-1.66.293-.272.586-.546.877-.828.144-.14.291-.283.432-.43l.031-.035.034.04c.052.059.106.131.19.2.073.073.168.144.274.211a2.118 2.118 0 0 0 .563.248 3.54 3.54 0 0 0 .65.117 4.714 4.714 0 0 0 .723 0l-.004-.277a4.425 4.425 0 0 1-.67-.09 3.146 3.146 0 0 1-.55-.18 1.47 1.47 0 0 1-.151-.076 1.583 1.583 0 0 1-.252-.17 1.201 1.201 0 0 1-.172-.174c-.049-.052-.077-.107-.107-.148-.026-.043-.04-.08-.055-.104 0-.003-.003-.004-.004-.007l.05-.032.058-.029a2.491 2.491 0 0 1 .748-.254 2.54 2.54 0 0 1 .394-.031zm.52.484c-.217.009-.388.13-.38.27.009.14.193.248.411.24.22-.008.389-.13.379-.27-.007-.139-.19-.246-.408-.24zM23.26 9.24l.052.286a.09.09 0 0 1-.105.113c-.032-.006-.063.005-.074.035l-.192.512-.588-.059-.205.553-.588-.06-.205.554-.588-.06-.205.554-.588-.06-.207.553-.586-.06-.183.49a.092.092 0 0 1-.096.058l-.047-.004c-.036-.004-.254-.024-.265-.059l-.542-1.265zm-6.018 2.495c.184-.013.305.077.388.24.013.01.487 1.213.479 1.195a.37.37 0 0 1-.05.436c-.083.095-.28.16-.401.21-.065.029-.066-.013-.09-.081l-.053-.153.024-.042a1.43 1.43 0 0 0 .138-.45 1.525 1.525 0 0 0-.007-.457l-.016-.076-.01-.039-.012-.049v-.002a.301.301 0 0 0-.101-.148 1.29 1.29 0 0 0-.276-.172.716.716 0 0 0-.109-.041c-.039-.011-.077-.024-.117-.03a.869.869 0 0 0-.117-.011l-.02-.002c-.016-.007-.046-.061-.033-.086a.45.45 0 0 1 .383-.242zm-6.544 1.097a.254.254 0 0 1 .002 0 .304.304 0 0 1 .108.01c.635.176 1.15.359 1.604.524-.075 1.032-.725 2.01-1.756 2.773.089-.747-.028-1.661-.17-2.392-.076-.397-.047-.624-.01-.745a.254.254 0 0 1 .222-.17zm-7.771.87c1.119-.014 2.494.224 3.283.556l.01.045a3.542 3.542 0 0 0 .138.446c-.679.348-2.09.697-3.353.71-1.147.012-2.31-.25-2.332-.86a.47.47 0 0 1 .146-.354c.318-.334 1.089-.532 2.108-.543zm9.75 1.123c1.514 1.142 1.263 3.371 1.188 3.855l-.215.045c-.43-.977-1.59-1.862-2.266-2.314.558-.474 1-1.01 1.293-1.586z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/amazonpay.svg b/assets/lib/simple-icons/icons/amazonpay.svg
new file mode 100644
index 00000000..3524fb17
--- /dev/null
+++ b/assets/lib/simple-icons/icons/amazonpay.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Amazon Pay</title><path d="M14.3781 4.9945c-.3732-.3227-.953-.4843-1.7401-.4843-.3895 0-.779.0355-1.1684.1054-.3901.0706-.7172.1636-.9824.2797-.0993.0418-.166.0849-.1991.1304-.0331.0456-.05.1267-.05.2422v.3352c0 .1491.0537.224.1617.224a.337.337 0 0 0 .1061-.0187c.0374-.0125.0687-.0225.093-.0312.6385-.1904 1.247-.2859 1.8275-.2859.4968 0 .8451.0912 1.0442.274.1991.1823.2984.4969.2984.9444v.8201c-.5799-.141-1.1023-.211-1.5667-.211-.729 0-1.3088.1804-1.74.5406-.4308.3601-.6467.8432-.6467 1.448 0 .5642.1741 1.013.5224 1.3488.3477.3358.8201.503 1.4168.503.3564 0 .7147-.0705 1.0754-.2109.3608-.1404.6897-.3402.988-.5967l.0625.41c.025.1574.116.236.274.236h.5343c.1654 0 .249-.083.249-.2484V6.4987c-.0006-.6797-.1872-1.1809-.5599-1.5042zm-.6091 4.6c-.2734.2072-.5593.3645-.8576.4725-.2984.108-.5842.1617-.8576.1617-.3233 0-.5717-.085-.7459-.2547-.1741-.1698-.2609-.412-.2609-.7271 0-.721.4682-1.0817 1.4044-1.0817.2153 0 .4369.015.6647.0437.2278.0293.4456.0687.6529.118zM8.7726 6.402c-.1204-.402-.292-.744-.5161-1.0255-.2235-.2815-.4969-.4975-.8202-.6466-.3227-.1492-.6834-.2235-1.0816-.2235-.3727 0-.7378.07-1.0936.211-.3563.141-.6921.3483-1.0073.6216l-.0618-.3982c-.025-.1654-.1205-.2484-.2865-.2484h-.5468c-.1654 0-.2484.083-.2484.2484v8.3662c0 .166.083.2484.2484.2484h.7334c.166 0 .2484-.083.2484-.2484v-2.9086c.5387.4887 1.181.7334 1.9268.7334.4057 0 .7746-.0811 1.106-.2422.3314-.1616.6129-.3876.845-.6778.2323-.2896.4126-.6416.5406-1.0567.1286-.4144.1929-.8788.1929-1.3925.0012-.505-.0593-.9587-.1792-1.3606zM5.982 10.1369c-.5642 0-1.111-.1985-1.6409-.5967V6.0724c.5218-.3813 1.0773-.5717 1.666-.5717 1.1271 0 1.6907.7752 1.6907 2.3243-.0006 1.5417-.5723 2.3119-1.7158 2.3119zm13.0005 1.963l2.735-6.9612c.0575-.141.0868-.2403.0868-.2984 0-.0992-.058-.1491-.1741-.1491h-.696c-.1329 0-.2234.0212-.274.0624-.0499.0418-.0992.133-.1491.274l-1.6784 4.8228-1.7401-4.8228c-.05-.141-.0993-.2322-.1492-.274-.05-.0412-.141-.0624-.274-.0624h-.7459c-.116 0-.1741.0499-.1741.1491 0 .058.0287.1573.0868.2984l2.3992 5.917-.236.6341c-.141.3982-.2983.6716-.4724.8208-.1741.1491-.4188.2234-.7334.2234-.141 0-.2528-.0087-.3352-.025-.083-.0162-.1454-.025-.1866-.025-.1242 0-.1866.0787-.1866.236v.3233c0 .1161.0206.201.0624.2547.0412.0536.1074.0936.1991.118.2066.0574.4432.0873.7084.0873.4725 0 .8557-.1242 1.1497-.3732.2952-.2478.5543-.6585.7777-1.2302m2.7113 4.4233c-2.6276 1.9393-6.4369 2.9704-9.7174 2.9704-4.5975 0-8.7375-1.6996-11.8701-4.5283-.246-.2221-.0269-.5255.269-.3532 3.3798 1.9667 7.5597 3.1513 11.877 3.1513 2.9123 0 6.1136-.6042 9.0596-1.8537.4437-.1891.8163.2921.382.6135m1.0928-1.2483c.3364.4307-.3738 2.204-.691 2.996-.096.2396.11.3364.3271.1548 1.4094-1.179 1.7739-3.65 1.4855-4.0071-.2865-.3539-2.7506-.6585-4.2548.3976-.2316.1623-.1916.387.0649.3557.847-.101 2.7325-.3276 3.0683.103Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/amazonprime.svg b/assets/lib/simple-icons/icons/amazonprime.svg
new file mode 100644
index 00000000..5b3fac16
--- /dev/null
+++ b/assets/lib/simple-icons/icons/amazonprime.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Amazon Prime</title><path d="M1.8054 12.403c-.0699-.096-.144-.1746-.144-.3538v-.5945c0-.2523.0179-.484-.168-.6576-.1466-.1408-.3892-.1903-.5752-.1903-.3635 0-.7688.136-.8542.5849-.0087.0476.0258.0728.0573.08l.3703.0398c.0345-.0014.0597-.0358.066-.0703.032-.1544.1616-.2292.3073-.2292.0786 0 .1679.0292.214.099.0538.0787.0466.1864.0466.2772v.0495c-.2214.0248-.511.0413-.7183.1325-.2393.1034-.4072.314-.4072.6242 0 .3965.2504.595.5717.595.2718 0 .4198-.064.6295-.2776.0694.1005.0922.1495.219.2548.0285.015.0649.0136.0902-.0092l.294-.2524c.0312-.0257.0253-.067.001-.102m-.68-.5765c0 .149.0035.2728-.0713.4053-.0606.1072-.1572.1732-.2645.1732-.1465 0-.232-.1116-.232-.2766 0-.3257.2917-.3844.5679-.3844zm5.6864.5766c-.0694-.0961-.1441-.1747-.1441-.3539v-.5945c0-.2523.018-.484-.168-.6576-.1465-.1408-.3892-.1903-.5751-.1903-.3636 0-.7688.136-.8537.5849-.0093.0476.0257.0728.0568.08l.3703.0398c.0344-.0014.0596-.0358.066-.0703.032-.1544.1616-.2292.3072-.2292.0786 0 .168.0292.214.099.0539.0787.0466.1864.0466.2772v.0495c-.2213.0248-.511.0413-.7178.1325-.2397.1034-.4076.314-.4076.6242 0 .3965.2504.595.5717.595.2717 0 .4202-.064.63-.2776.0689.1005.0916.1495.2188.2548a.0788.0788 0 0 0 .0898-.0092l.001.001c.0767-.068.215-.1883.293-.2534.0312-.0257.0259-.067.0011-.102m-.7513-.1712c-.0607.1072-.1572.1732-.2646.1732-.1465 0-.232-.1116-.232-.2766 0-.3257.2918-.3844.568-.3844v.0825c0 .149.0038.2728-.0714.4053m5.16.5307h-.3806a.0717.0717 0 0 1-.0684-.0704l-.0007-1.9608c.0032-.0359.0349-.064.0734-.064h.3542a.0725.0725 0 0 1 .0678.0547v.2999h.0073c.107-.2682.2566-.396.5204-.396.1711 0 .3387.0618.4457.231.0998.1567.0998.4206.0998.6104v1.2335c-.0043.0347-.0355.0617-.0732.0617h-.3829a.072.072 0 0 1-.068-.0617v-1.0643c0-.2145.025-.528-.2388-.528-.0927 0-.1782.0619-.221.1567-.0535.1197-.0607.2393-.0607.3713v1.0554a.073.073 0 0 1-.0743.0706M9.612 10.6259c.5668 0 .8733.4868.8733 1.1055 0 .598-.3385 1.0724-.8733 1.0724-.5561 0-.8592-.4868-.8592-1.0931 0-.6104.3066-1.0848.8592-1.0848m.0035.4002c-.2817 0-.2994.3835-.2994.6227 0 .2392-.0036.7507.296.7507.2958 0 .31-.4125.31-.664 0-.1649-.0071-.363-.057-.5197-.0428-.1362-.1285-.1897-.2496-.1897m-7.062 1.7364h-.3819a.0719.0719 0 0 1-.0683-.0646l.0003-1.96c0-.0393.033-.0706.0738-.0706h.3556c.0372.0017.067.03.0694.0657v.256h.0071c.0927-.2476.2674-.363.5027-.363.2388 0 .3886.1154.4954.363.0928-.2476.3031-.363.5277-.363.1605 0 .3351.066.4421.2144.1212.165.0963.4042.0963.6146l-.0004 1.237c0 .039-.033.0705-.0737.0705h-.3813a.0715.0715 0 0 1-.0686-.0704v-1.0392c0-.0824.007-.2886-.0109-.367-.0284-.132-.114-.1692-.2244-.1692-.0928 0-.189.062-.2283.1608-.0392.0991-.0356.264-.0356.3754v1.039c0 .0392-.033.0706-.0737.0706h-.3815a.0716.0716 0 0 1-.0685-.0704l-.0004-1.0392c0-.2185.0356-.5402-.2352-.5402-.2745 0-.2638.3134-.2638.5402l-.0002 1.039c0 .0392-.033.0706-.0737.0706m4.5791-1.7494v-.28a.0692.0692 0 0 1 .071-.071h1.2553c.0402 0 .0724.0291.0724.0706v.2402c-.0003.0403-.0343.0929-.0945.1763l-.6502.9284c.2413-.0056.4967.0306.716.1538.0494.0278.0627.069.0666.1093v.2989c0 .0411-.0451.0888-.0925.064-.3863-.2024-.8991-.2245-1.3263.0025-.0437.0232-.0894-.0238-.0894-.065v-.284c0-.0455.0009-.1233.0467-.1926l.7534-1.0808h-.656c-.04 0-.0722-.0286-.0725-.0706m.8171 2.1613c-.0917-.1174-.606-.0556-.8372-.028-.07.0084-.0809-.0527-.0179-.097.4105-.2882 1.0829-.205 1.1611-.1085.0787.0973-.0207.7715-.4052 1.0933-.0592.0494-.1155.023-.0892-.0423.0865-.2161.2802-.7.1884-.8175m-.2983.3406c-.717.529-1.7563.8105-2.6514.8105-1.2543 0-2.384-.4638-3.2388-1.2355-.067-.0607-.0072-.1434.0735-.0965.9222.5366 2.0628.8598 3.2406.8598.7947 0 1.6681-.1649 2.4719-.5058.1211-.0514.2228.0799.1042.1675m15.5297-.693c-.342 0-.6045-.0938-.7879-.2813-.1835-.1875-.275-.4563-.275-.8065 0-.3584.0935-.6397.2811-.8437.1875-.204.4481-.3061.7817-.3061.2565 0 .4571.062.6019.1861.1447.1241.2171.2895.2171.4963 0 .2068-.078.3634-.2337.4694-.1558.1063-.3853.1593-.6887.1593-.157 0-.2936-.0151-.4094-.0455.0165.1847.0724.3171.1675.397.0952.08.2392.12.4323.12.0771 0 .1522-.0048.2253-.0145.073-.0096.1744-.031.304-.064a.163.163 0 0 1 .0455-.0084c.0468 0 .0703.0318.0703.0952v.1902c0 .0441-.0062.0752-.0185.093-.0125.018-.0366.0339-.0725.0476-.2013.0772-.415.1158-.641.1158m-.1365-1.2986c.1406 0 .2426-.0214.306-.0641.0634-.0428.0952-.1083.0952-.1965 0-.1738-.1034-.2606-.3102-.2606-.2647 0-.4177.1628-.4591.488.1103.0221.233.0332.3681.0332M18.6275 12.76c-.0359 0-.0622-.0082-.0786-.0248-.0166-.0165-.0248-.0427-.0248-.0786V10.75c0-.0387.0082-.0655.0248-.0807.0164-.0151.0427-.0227.0786-.0227h.2977c.0634 0 .102.0303.1159.091l.033.1116c.1461-.0965.2778-.1647.395-.2047.1171-.04.2378-.06.362-.06.248 0 .4231.0882.5251.2647.1407-.0937.273-.1613.3972-.2026.124-.0414.2522-.062.3846-.062.193 0 .3425.0536.4487.1612.1061.1076.1593.258.1593.4508v1.46c0 .0359-.0077.062-.0228.0786-.0152.0166-.042.0248-.0807.0248h-.397c-.0359 0-.062-.0082-.0785-.0248-.0166-.0165-.025-.0427-.025-.0786V11.329c0-.1875-.084-.2813-.2522-.2813-.1489 0-.2992.0359-.4508.1075v1.5014c0 .0359-.0076.062-.0228.0786-.0152.0166-.042.0248-.0806.0248h-.397c-.036 0-.0621-.0082-.0787-.0248-.0165-.0165-.0248-.0427-.0248-.0786V11.329c0-.1875-.0842-.2813-.2523-.2813-.1544 0-.306.0373-.4549.1116v1.4973c0 .0359-.0077.062-.0227.0786-.0153.0166-.0422.0248-.0807.0248zm-.9174-2.4402c-.1048 0-.1888-.029-.2522-.0869-.0635-.0578-.0952-.1364-.0952-.2357s.0317-.1778.0952-.2357c.0634-.058.1474-.0869.2523-.0869.1046 0 .1888.029.2522.0869.0634.0579.0952.1364.0952.2357s-.0318.1779-.0952.2357c-.0634.058-.1476.087-.2523.087m-.1985 2.4401c-.0358 0-.062-.0083-.0786-.0249-.0166-.0164-.0248-.0426-.0248-.0785V10.75c0-.0386.0082-.0655.0248-.0807.0165-.0151.0428-.0227.0786-.0227h.397c.0386 0 .0655.0076.0807.0227.0151.0152.0228.042.0228.0807v1.9066c0 .036-.0077.062-.0228.0785-.0152.0166-.042.025-.0807.025zm-1.6527 0c-.0359 0-.0622-.0082-.0786-.0248-.0166-.0165-.0248-.0427-.0248-.0786V10.75c0-.0387.0082-.0655.0248-.0807.0164-.0151.0427-.0227.0786-.0227h.2977c.0634 0 .102.0303.1158.091l.0538.2233c.1103-.1214.2144-.2075.3123-.2585a.6664.6664 0 0 1 .3123-.0765h.0578c.0386 0 .0662.0076.0827.0227.0166.0152.0248.042.0248.0807v.3474c0 .0358-.0076.062-.0227.0785-.0151.0166-.042.025-.0807.025a.8293.8293 0 0 1-.0744-.0043 1.3657 1.3657 0 0 0-.1158-.0041c-.0634 0-.1406.009-.2316.0269-.091.018-.1682.0407-.2316.0683v1.3896c0 .0359-.0077.062-.0227.0786-.0153.0166-.0422.0248-.0807.0248zm-2.477.852c-.0358 0-.062-.0077-.0786-.0227-.0165-.0153-.0248-.042-.0248-.0807V10.75c0-.0386.0083-.0655.0248-.0807.0166-.0151.0428-.0227.0786-.0227h.2978c.0634 0 .102.0304.1157.091l.029.1075c.0828-.08.1827-.1433.2999-.1903a.9562.9562 0 0 1 .3578-.0703c.2673 0 .479.098.6348.2937.1558.1958.2337.4605.2337.794 0 .229-.0386.4288-.1157.5997-.0772.171-.1821.3027-.3144.395-.1324.0925-.284.1386-.4549.1386a.965.965 0 0 1-.3226-.0538c-.1021-.0358-.189-.0854-.2606-.1489v.9058c0 .0386-.0076.0654-.0227.0807-.0153.015-.0421.0227-.0807.0227zm.9057-1.2615c.1545 0 .2682-.0523.3413-.157.073-.1048.1097-.2703.1097-.4964 0-.2288-.036-.3956-.1076-.5005-.0718-.1048-.1862-.1571-.3434-.1571a.7883.7883 0 0 0-.4052.1116v1.0878c.1212.0744.2564.1116.4052.1116Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/amazons3.svg b/assets/lib/simple-icons/icons/amazons3.svg
new file mode 100644
index 00000000..e43f9ebe
--- /dev/null
+++ b/assets/lib/simple-icons/icons/amazons3.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Amazon S3</title><path d="M20.913 13.147l.12-.895c.947.576 1.258.922 1.354 1.071-.16.031-.562.046-1.474-.176zm-2.174 7.988a.547.547 0 0 0-.005.073c0 .084-.207.405-1.124.768a10.28 10.28 0 0 1-1.438.432c-1.405.325-3.128.504-4.853.504-4.612 0-7.412-1.184-7.412-1.704a.547.547 0 0 0-.005-.073L1.81 5.602c.135.078.28.154.432.227.042.02.086.038.128.057.134.062.272.122.417.18l.179.069c.154.058.314.114.478.168.043.013.084.029.13.043.207.065.423.127.646.187l.176.044c.175.044.353.087.534.127a23.414 23.414 0 0 0 .843.17l.121.023c.252.045.508.085.768.122.071.011.144.02.216.03.2.027.4.053.604.077l.24.027c.245.026.49.05.74.07l.081.009c.275.022.552.04.83.056l.233.012c.21.01.422.018.633.025a33.088 33.088 0 0 0 2.795-.026l.232-.011c.278-.016.555-.034.83-.056l.08-.008c.25-.02.497-.045.742-.072l.238-.026c.205-.024.408-.05.609-.077.07-.01.141-.019.211-.03.261-.037.519-.078.772-.122l.111-.02c.215-.04.427-.082.634-.125l.212-.047c.186-.041.368-.085.546-.13l.166-.042c.225-.06.444-.122.654-.189.04-.012.077-.026.115-.038a10.6 10.6 0 0 0 .493-.173c.058-.021.114-.044.17-.066.15-.06.293-.12.43-.185.038-.017.079-.034.116-.052.153-.073.3-.15.436-.228l-.976 7.245c-2.488-.78-5.805-2.292-7.311-3a1.09 1.09 0 0 0-1.088-1.085c-.6 0-1.088.489-1.088 1.088 0 .6.488 1.089 1.088 1.089.196 0 .378-.056.537-.148 1.72.812 5.144 2.367 7.715 3.15zm-7.42-20.047c5.677 0 9.676 1.759 9.75 2.736l-.014.113c-.01.033-.031.067-.048.101-.015.028-.026.057-.047.087-.024.033-.058.068-.09.102-.028.03-.051.06-.084.09-.038.035-.087.07-.133.105-.04.03-.074.06-.119.091-.053.036-.116.071-.177.107-.05.03-.095.06-.15.09-.068.036-.147.073-.222.11-.059.028-.114.057-.177.085-.084.038-.177.074-.268.111-.068.027-.13.054-.203.082-.097.036-.205.072-.31.107-.075.026-.148.053-.228.079-.111.035-.233.069-.35.103-.085.024-.165.05-.253.073-.124.034-.258.065-.389.098-.093.022-.181.046-.278.068-.139.032-.287.061-.433.091-.098.02-.191.041-.293.06-.155.03-.32.057-.482.084-.1.018-.198.036-.302.052-.166.026-.342.048-.515.072-.11.014-.213.03-.325.044-.181.023-.372.041-.56.06-.11.012-.218.025-.332.036-.188.016-.386.029-.58.043-.122.009-.24.02-.364.028-.207.012-.422.02-.635.028-.12.005-.234.012-.354.016a35.605 35.605 0 0 1-2.069 0c-.12-.004-.234-.011-.352-.016-.214-.008-.43-.016-.637-.028-.122-.008-.238-.02-.36-.027-.195-.015-.394-.028-.584-.044-.11-.01-.215-.024-.324-.035-.19-.02-.384-.038-.568-.06l-.315-.044c-.176-.024-.355-.046-.525-.073-.1-.015-.192-.033-.29-.05-.167-.028-.335-.055-.494-.086-.096-.018-.183-.038-.276-.056-.151-.032-.305-.062-.45-.095-.09-.02-.173-.043-.26-.064-.138-.034-.277-.067-.407-.102-.082-.022-.157-.046-.235-.069a11.75 11.75 0 0 1-.368-.108c-.075-.024-.141-.049-.213-.073-.11-.037-.223-.075-.325-.113-.067-.025-.125-.051-.188-.077-.096-.038-.195-.076-.282-.115-.06-.027-.11-.054-.166-.08-.08-.039-.162-.077-.233-.116-.052-.028-.094-.055-.142-.084-.063-.038-.13-.075-.185-.113-.043-.029-.075-.058-.113-.086-.048-.037-.098-.073-.139-.11-.032-.029-.054-.057-.08-.087-.033-.035-.069-.07-.093-.104-.02-.03-.031-.058-.046-.086-.018-.035-.039-.068-.049-.102l-.015-.113c.076-.977 4.074-2.736 9.748-2.736zm12.182 12.124c-.118-.628-.84-1.291-2.31-2.128l.963-7.16a.531.531 0 0 0 .005-.073C22.16 1.581 16.447 0 11.32 0 6.194 0 .482 1.581.482 3.851a.58.58 0 0 0 .005.072L2.819 21.25c.071 2.002 5.236 2.75 8.5 2.75 1.805 0 3.615-.188 5.098-.531.598-.138 1.133-.3 1.592-.48 1.18-.467 1.789-1.053 1.813-1.739l.945-7.018c.557.131 1.016.197 1.389.197.54 0 .902-.137 1.134-.413a.956.956 0 0 0 .21-.804Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/amd.svg b/assets/lib/simple-icons/icons/amd.svg
index 1fd97db2..df7ec3f9 100644
--- a/assets/lib/simple-icons/icons/amd.svg
+++ b/assets/lib/simple-icons/icons/amd.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 24 24"><title>AMD icon</title><path d="M18.324 9.137l1.559 1.56h2.556v2.557L24 14.814V9.137zM2 9.52l-2 4.96h1.309l.37-.982H3.9l.408.982h1.338L3.432 9.52zm4.209 0v4.955h1.238v-3.092l1.338 1.562h.188l1.338-1.556v3.091h1.238V9.52H10.47l-1.592 1.845L7.287 9.52zm6.283 0v4.96h2.057c1.979 0 2.88-1.046 2.88-2.472 0-1.36-.937-2.488-2.747-2.488zm1.237.91h.792c1.17 0 1.63.711 1.63 1.57 0 .728-.372 1.572-1.616 1.572h-.806zm-10.985.273l.791 1.932H2.008zm17.137.307l-1.604 1.603v2.25h2.246l1.604-1.607h-2.246z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>AMD</title><path d="M18.324 9.137l1.559 1.56h2.556v2.557L24 14.814V9.137zM2 9.52l-2 4.96h1.309l.37-.982H3.9l.408.982h1.338L3.432 9.52zm4.209 0v4.955h1.238v-3.092l1.338 1.562h.188l1.338-1.556v3.091h1.238V9.52H10.47l-1.592 1.845L7.287 9.52zm6.283 0v4.96h2.057c1.979 0 2.88-1.046 2.88-2.472 0-1.36-.937-2.488-2.747-2.488zm1.237.91h.792c1.17 0 1.63.711 1.63 1.57 0 .728-.372 1.572-1.616 1.572h-.806zm-10.985.273l.791 1.932H2.008zm17.137.307l-1.604 1.603v2.25h2.246l1.604-1.607h-2.246z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/americanairlines.svg b/assets/lib/simple-icons/icons/americanairlines.svg
index 079b389e..bbbe22d1 100644
--- a/assets/lib/simple-icons/icons/americanairlines.svg
+++ b/assets/lib/simple-icons/icons/americanairlines.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>American Airlines icon</title><path d="M0 .244h3.264c1.377 0 1.942.563 2.499 1.116.637.58 2.57 3.196 6.657 8.303H7.997c-1.809 0-2.38-.308-3.08-1.375zm10.424 17.072l-2.427-4.013c-.292-.455-.372-.854-.372-1.318 0-.51.217-.79 1.053-1.233.973-.466 2.933-.67 4.954-.67 3.283 0 4.07 1.055 4.405 2.192 0 0-.464-.185-1.554-.185-3.459 0-6.223 1.68-6.223 4.221 0 .534.164 1.006.164 1.006zm4.936-3.417c-2.547.089-5.032 1.869-4.936 3.416l2.7 4.486c.836 1.344 2.215 1.955 3.932 1.955H24l-8.13-9.852a5.55 5.55 0 0 0-.51-.005Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>American Airlines</title><path d="M0 .244h3.264c1.377 0 1.942.563 2.499 1.116.637.58 2.57 3.196 6.657 8.303H7.997c-1.809 0-2.38-.308-3.08-1.375zm10.424 17.072l-2.427-4.013c-.292-.455-.372-.854-.372-1.318 0-.51.217-.79 1.053-1.233.973-.466 2.933-.67 4.954-.67 3.283 0 4.07 1.055 4.405 2.192 0 0-.464-.185-1.554-.185-3.459 0-6.223 1.68-6.223 4.221 0 .534.164 1.006.164 1.006zm4.936-3.417c-2.547.089-5.032 1.869-4.936 3.416l2.7 4.486c.836 1.344 2.215 1.955 3.932 1.955H24l-8.13-9.852a5.55 5.55 0 0 0-.51-.005Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/americanexpress.svg b/assets/lib/simple-icons/icons/americanexpress.svg
index e4453a41..1caba4e9 100644
--- a/assets/lib/simple-icons/icons/americanexpress.svg
+++ b/assets/lib/simple-icons/icons/americanexpress.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>American Express icon</title><path d="M16.015 14.378c0-.32-.135-.496-.344-.622-.21-.12-.464-.135-.81-.135h-1.543v2.82h.675v-1.027h.72c.24 0 .39.024.478.125.12.13.104.38.104.55v.35h.66v-.555c-.002-.25-.017-.376-.108-.516-.06-.08-.18-.18-.33-.234l.02-.008c.18-.072.48-.297.48-.747zm-.87.407l-.028-.002c-.09.053-.195.058-.33.058h-.81v-.63h.824c.12 0 .24 0 .33.05.098.048.156.147.15.255 0 .12-.045.215-.134.27zM20.297 15.837H19v.6h1.304c.676 0 1.05-.278 1.05-.884 0-.28-.066-.448-.187-.582-.153-.133-.392-.193-.73-.207l-.376-.015c-.104 0-.18 0-.255-.03-.09-.03-.15-.105-.15-.21 0-.09.017-.166.09-.21.083-.046.177-.066.272-.06h1.23v-.602h-1.35c-.704 0-.958.437-.958.84 0 .9.776.855 1.407.87.104 0 .18.015.225.06.046.03.082.106.082.18 0 .077-.035.15-.08.18-.06.053-.15.07-.277.07zM0 0v10.096L.81 8.22h1.75l.225.464V8.22h2.043l.45 1.02.437-1.013h6.502c.295 0 .56.057.756.236v-.23h1.787v.23c.307-.17.686-.23 1.12-.23h2.606l.24.466v-.466h1.918l.254.465v-.466h1.858v3.948H20.87l-.36-.6v.585h-2.353l-.256-.63h-.583l-.27.614h-1.213c-.48 0-.84-.104-1.08-.24v.24h-2.89v-.884c0-.12-.03-.12-.105-.135h-.105v1.036H6.067v-.48l-.21.48H4.69l-.202-.48v.465H2.235l-.256-.624H1.4l-.256.624H0V24h23.786v-7.108c-.27.135-.613.18-.973.18H21.09v-.255c-.21.165-.57.255-.914.255H14.71v-.9c0-.12-.018-.12-.12-.12h-.075v1.022h-1.8v-1.066c-.298.136-.643.15-.928.136h-.214v.915h-2.18l-.54-.617-.57.6H4.742v-3.93h3.61l.518.602.554-.6h2.412c.28 0 .74.03.942.225v-.24h2.177c.202 0 .644.045.903.225v-.24h3.265v.24c.163-.164.508-.24.803-.24h1.89v.24c.194-.15.464-.24.84-.24h1.176V0H0zM21.156 14.955c.004.005.006.012.01.016.01.01.024.01.032.02l-.042-.035zM23.828 13.082h.065v.555h-.065zM23.865 15.03v-.005c-.03-.025-.046-.048-.075-.07-.15-.153-.39-.215-.764-.225l-.36-.012c-.12 0-.194-.007-.27-.03-.09-.03-.15-.105-.15-.21 0-.09.03-.16.09-.204.076-.045.15-.05.27-.05h1.223v-.588h-1.283c-.69 0-.96.437-.96.84 0 .9.78.855 1.41.87.104 0 .18.015.224.06.046.03.076.106.076.18 0 .07-.034.138-.09.18-.045.056-.136.07-.27.07h-1.288v.605h1.287c.42 0 .734-.118.9-.36h.03c.09-.134.135-.3.135-.523 0-.24-.045-.39-.135-.526zM18.597 14.208v-.583h-2.235V16.458h2.235v-.585h-1.57v-.57h1.533v-.584h-1.532v-.51M13.51 8.787h.685V11.6h-.684zM13.126 9.543l-.007.006c0-.314-.13-.5-.34-.624-.217-.125-.47-.135-.81-.135H10.43v2.82h.674v-1.034h.72c.24 0 .39.03.487.12.122.136.107.378.107.548v.354h.677v-.553c0-.25-.016-.375-.11-.516-.09-.107-.202-.19-.33-.237.172-.07.472-.3.472-.75zm-.855.396h-.015c-.09.054-.195.056-.33.056H11.1v-.623h.825c.12 0 .24.004.33.05.09.04.15.128.15.25s-.047.22-.134.266zM15.92 9.373h.632v-.6h-.644c-.464 0-.804.105-1.02.33-.286.3-.362.69-.362 1.11 0 .512.123.833.36 1.074.232.238.645.31.97.31h.78l.255-.627h1.39l.262.627h1.36v-2.11l1.272 2.11h.95l.002.002V8.786h-.684v1.963l-1.18-1.96h-1.02V11.4L18.11 8.744h-1.004l-.943 2.22h-.3c-.177 0-.362-.03-.468-.134-.125-.15-.186-.36-.186-.662 0-.285.08-.51.194-.63.133-.135.272-.165.516-.165zm1.668-.108l.464 1.118v.002h-.93l.466-1.12zM2.38 10.97l.254.628H4V9.393l.972 2.205h.584l.973-2.202.015 2.202h.69v-2.81H6.118l-.807 1.904-.876-1.905H3.343v2.663L2.205 8.787h-.997L.01 11.597h.72l.26-.626h1.39zm-.688-1.705l.46 1.118-.003.002h-.915l.457-1.12zM11.856 13.62H9.714l-.85.923-.825-.922H5.346v2.82H8l.855-.932.824.93h1.302v-.94h.838c.6 0 1.17-.164 1.17-.945l-.006-.003c0-.78-.598-.93-1.128-.93zM7.67 15.853l-.014-.002H6.02v-.557h1.47v-.574H6.02v-.51H7.7l.733.82-.764.824zm2.642.33l-1.03-1.147 1.03-1.108v2.253zm1.553-1.258h-.885v-.717h.885c.24 0 .42.098.42.344 0 .243-.15.372-.42.372zM9.967 9.373v-.586H7.73V11.6h2.237v-.58H8.4v-.564h1.527V9.88H8.4v-.507"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>American Express</title><path d="M16.015 14.378c0-.32-.135-.496-.344-.622-.21-.12-.464-.135-.81-.135h-1.543v2.82h.675v-1.027h.72c.24 0 .39.024.478.125.12.13.104.38.104.55v.35h.66v-.555c-.002-.25-.017-.376-.108-.516-.06-.08-.18-.18-.33-.234l.02-.008c.18-.072.48-.297.48-.747zm-.87.407l-.028-.002c-.09.053-.195.058-.33.058h-.81v-.63h.824c.12 0 .24 0 .33.05.098.048.156.147.15.255 0 .12-.045.215-.134.27zM20.297 15.837H19v.6h1.304c.676 0 1.05-.278 1.05-.884 0-.28-.066-.448-.187-.582-.153-.133-.392-.193-.73-.207l-.376-.015c-.104 0-.18 0-.255-.03-.09-.03-.15-.105-.15-.21 0-.09.017-.166.09-.21.083-.046.177-.066.272-.06h1.23v-.602h-1.35c-.704 0-.958.437-.958.84 0 .9.776.855 1.407.87.104 0 .18.015.225.06.046.03.082.106.082.18 0 .077-.035.15-.08.18-.06.053-.15.07-.277.07zM0 0v10.096L.81 8.22h1.75l.225.464V8.22h2.043l.45 1.02.437-1.013h6.502c.295 0 .56.057.756.236v-.23h1.787v.23c.307-.17.686-.23 1.12-.23h2.606l.24.466v-.466h1.918l.254.465v-.466h1.858v3.948H20.87l-.36-.6v.585h-2.353l-.256-.63h-.583l-.27.614h-1.213c-.48 0-.84-.104-1.08-.24v.24h-2.89v-.884c0-.12-.03-.12-.105-.135h-.105v1.036H6.067v-.48l-.21.48H4.69l-.202-.48v.465H2.235l-.256-.624H1.4l-.256.624H0V24h23.786v-7.108c-.27.135-.613.18-.973.18H21.09v-.255c-.21.165-.57.255-.914.255H14.71v-.9c0-.12-.018-.12-.12-.12h-.075v1.022h-1.8v-1.066c-.298.136-.643.15-.928.136h-.214v.915h-2.18l-.54-.617-.57.6H4.742v-3.93h3.61l.518.602.554-.6h2.412c.28 0 .74.03.942.225v-.24h2.177c.202 0 .644.045.903.225v-.24h3.265v.24c.163-.164.508-.24.803-.24h1.89v.24c.194-.15.464-.24.84-.24h1.176V0H0zM21.156 14.955c.004.005.006.012.01.016.01.01.024.01.032.02l-.042-.035zM23.828 13.082h.065v.555h-.065zM23.865 15.03v-.005c-.03-.025-.046-.048-.075-.07-.15-.153-.39-.215-.764-.225l-.36-.012c-.12 0-.194-.007-.27-.03-.09-.03-.15-.105-.15-.21 0-.09.03-.16.09-.204.076-.045.15-.05.27-.05h1.223v-.588h-1.283c-.69 0-.96.437-.96.84 0 .9.78.855 1.41.87.104 0 .18.015.224.06.046.03.076.106.076.18 0 .07-.034.138-.09.18-.045.056-.136.07-.27.07h-1.288v.605h1.287c.42 0 .734-.118.9-.36h.03c.09-.134.135-.3.135-.523 0-.24-.045-.39-.135-.526zM18.597 14.208v-.583h-2.235V16.458h2.235v-.585h-1.57v-.57h1.533v-.584h-1.532v-.51M13.51 8.787h.685V11.6h-.684zM13.126 9.543l-.007.006c0-.314-.13-.5-.34-.624-.217-.125-.47-.135-.81-.135H10.43v2.82h.674v-1.034h.72c.24 0 .39.03.487.12.122.136.107.378.107.548v.354h.677v-.553c0-.25-.016-.375-.11-.516-.09-.107-.202-.19-.33-.237.172-.07.472-.3.472-.75zm-.855.396h-.015c-.09.054-.195.056-.33.056H11.1v-.623h.825c.12 0 .24.004.33.05.09.04.15.128.15.25s-.047.22-.134.266zM15.92 9.373h.632v-.6h-.644c-.464 0-.804.105-1.02.33-.286.3-.362.69-.362 1.11 0 .512.123.833.36 1.074.232.238.645.31.97.31h.78l.255-.627h1.39l.262.627h1.36v-2.11l1.272 2.11h.95l.002.002V8.786h-.684v1.963l-1.18-1.96h-1.02V11.4L18.11 8.744h-1.004l-.943 2.22h-.3c-.177 0-.362-.03-.468-.134-.125-.15-.186-.36-.186-.662 0-.285.08-.51.194-.63.133-.135.272-.165.516-.165zm1.668-.108l.464 1.118v.002h-.93l.466-1.12zM2.38 10.97l.254.628H4V9.393l.972 2.205h.584l.973-2.202.015 2.202h.69v-2.81H6.118l-.807 1.904-.876-1.905H3.343v2.663L2.205 8.787h-.997L.01 11.597h.72l.26-.626h1.39zm-.688-1.705l.46 1.118-.003.002h-.915l.457-1.12zM11.856 13.62H9.714l-.85.923-.825-.922H5.346v2.82H8l.855-.932.824.93h1.302v-.94h.838c.6 0 1.17-.164 1.17-.945l-.006-.003c0-.78-.598-.93-1.128-.93zM7.67 15.853l-.014-.002H6.02v-.557h1.47v-.574H6.02v-.51H7.7l.733.82-.764.824zm2.642.33l-1.03-1.147 1.03-1.108v2.253zm1.553-1.258h-.885v-.717h.885c.24 0 .42.098.42.344 0 .243-.15.372-.42.372zM9.967 9.373v-.586H7.73V11.6h2.237v-.58H8.4v-.564h1.527V9.88H8.4v-.507"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/amg.svg b/assets/lib/simple-icons/icons/amg.svg
new file mode 100644
index 00000000..975ac4d0
--- /dev/null
+++ b/assets/lib/simple-icons/icons/amg.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>AMG</title><path d="M23.9998 11.8942a.1216.1216 0 0 0-.127-.1271H21.607a.1216.1216 0 0 0-.1271.127v.1906a.1419.1419 0 0 0 .127.1482h1.419c.0847 0 .0847.0424.0847.1482v.0202c0 .1058 0 .1271-.0847.1271h-2.901a.1216.1216 0 0 1-.1271-.127v-.8248a.1216.1216 0 0 1 .127-.1271h3.7267a.1216.1216 0 0 0 .127-.1271v-.3177a.1216.1216 0 0 0-.127-.127h-4.616a.1216.1216 0 0 0-.127.127v2.054a.1216.1216 0 0 0 .127.127h4.616a.1216.1216 0 0 0 .127-.127v-1.1645m-7.3686.5505a.316.316 0 0 1-.1906.0847h-.5929a.316.316 0 0 1-.1907-.0847l-1.1221-.72c-.0635-.0423-.1271-.0212-.1271.0635v1.207a.1216.1216 0 0 1-.1271.1271h-.593a.1419.1419 0 0 1-.148-.127v-2.054c0-.0847.0633-.127.148-.127h.6353a.5067.5067 0 0 1 .1906.0633l1.5247.9953a.1587.1587 0 0 0 .1905 0l1.5245-.9953a.2961.2961 0 0 1 .1907-.0634h.6353a.1216.1216 0 0 1 .1269.1271v2.054a.1216.1216 0 0 1-.1269.127h-.5929a.1419.1419 0 0 1-.1484-.127v-1.2071q0-.1271-.127-.0635zm-6.6066-1.0165c-.0424 0-.0634.0203-.1058.0636l-.36.4662c-.0213.0424 0 .0635.0203.0635h2.6045c.0847 0 .0847-.0424.0847-.1058v-.318c0-.1059 0-.1482-.0847-.1482h-2.159zm-1.5245 1.7152h-.7631a.0713.0713 0 0 1-.0635-.1058L9.2825 10.92a.2145.2145 0 0 1 .1483-.0847h3.515a.1638.1638 0 0 1 .1482.1694v2.0116a.1216.1216 0 0 1-.127.1271h-.593a.1216.1216 0 0 1-.127-.127V12.72c0-.0847 0-.106-.0848-.106H9.0717a.1419.1419 0 0 0-.1271.0847v.0203l-.2329.2963a.3677.3677 0 0 1-.2329.1271zm-1.5458 0a.3217.3217 0 0 0 .2117-.127l1.5881-2.054c.0636-.0847.0203-.1482-.0424-.1482h-.3176a.2145.2145 0 0 0-.1482.0847l-1.6305 2.1174a.0716.0716 0 0 0 .0636.106h.2753zm-1.101 0a.322.322 0 0 0 .2116-.127l1.5881-2.054c.0634-.0847.0213-.1482-.0424-.1482h-.4447a.2145.2145 0 0 0-.1482.0847L5.366 13.0163a.0716.0716 0 0 0 .0636.106h.4024zm-1.8 0a.0713.0713 0 0 1-.0635-.1058L5.599 10.92a.214.214 0 0 1 .1482-.0847h.6563c.0847 0 .106.0636.0424.1484l-1.5883 2.054a.2888.2888 0 0 1-.2116.127h-.6142zm-1.5034 0a.0713.0713 0 0 1-.0634-.1058L4.0957 10.92a.2145.2145 0 0 1 .1482-.0847h.8681c.0847 0 .1058.0636.0424.1484l-1.5881 2.054a.2888.2888 0 0 1-.2118.127h-.8258zm-2.4563 0a.0713.0713 0 0 1-.0634-.1058L1.6394 10.92a.2145.2145 0 0 1 .1482-.0847h1.9268c.0847 0 .106.0636.0424.1484l-1.5881 2.054a.2888.2888 0 0 1-.2116.127H.072Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/amp.svg b/assets/lib/simple-icons/icons/amp.svg
new file mode 100644
index 00000000..a9ed842c
--- /dev/null
+++ b/assets/lib/simple-icons/icons/amp.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>AMP</title><path d="M12 0c6.628 0 12 5.373 12 12s-5.372 12-12 12C5.373 24 0 18.627 0 12S5.373 0 12 0zm-.92 19.278l5.034-8.377a.444.444 0 00.097-.268.455.455 0 00-.455-.455l-2.851.004.924-5.468-.927-.003-5.018 8.367s-.1.183-.1.291c0 .251.204.455.455.455l2.831-.004-.901 5.458z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/amul.svg b/assets/lib/simple-icons/icons/amul.svg
new file mode 100644
index 00000000..bc7c4024
--- /dev/null
+++ b/assets/lib/simple-icons/icons/amul.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Amul</title><path d="M4.794 11.772c-.104-.443-.546-1.492-.786-1.796-.04-.031-.062-.046-.078-.068l-.718 1.748s.375.091.796.148c.271.03.558.03.786-.032zm17-1.593v3.536c0 .7-.282.59-.385.613l1.209 1.018L24 14.236c-.014-.086-.063-.171-.124-.195-.475.294-.443-.302-.443-.302V9.527c0-.528-.933-1.097-1.285-.986l-1.304 1.297c.015.054.06.162.203.186.61-.56.747 0 .747.155zm-5.576 2.184v1.5c0 .528-.2.428-.348.488.412.218.972.668 1.454 1.011l1.446-.916 1.073.94 1.266-1.236s-.016-.18-.17-.171c-.444.436-.575-.288-.575-.288v-1.833c0-.801-1.028-.98-1.244-.972l-1.035 1.01a.4.4 0 00.194.165c.484-.382.567.17.567.17v1.5c-.014.62-1.14.847-1.14.008v-2.09c-.095-.576-.912-.895-1.028-.794l-1.181.972c.055.093.06.204.207.187.523-.367.514.349.514.349zm-7.805-.287v1.632c0 .45-.334.442-.44.465l1.274 1.104 1.227-1.08a.487.487 0 00-.115-.178c-.203.107-.357.046-.357-.22v-1.654c.108-.512.838-.397.838-.047v1.696c-.018.34-.156.488-.31.535l1.156.956 1.243-1.043c-.02-.085-.02-.16-.129-.2-.124.008-.357.25-.357-.288v-1.617c.256-.653.885-.31.91.055v1.516c-.009.357-.074.583-.366.683l1.204.94 1.276-1.15c0-.077-.11-.157-.15-.178-.419.364-.396-.095-.402-.165v-2.09c-.017-.365-.7-1.125-1.61-.783l-.91.668c-.484-.824-1.19-.847-1.378-.8-.308.044-.962.838-1.038.713-.288-.713-1.053-.728-1.209-.706l-1.07.924c.054.117.141.132.2.155.289-.17.485-.132.513.157zm-5.571.491l-.334.906.79.506c.112.071.253.024.476-.18l.157.157c-.357.41-.73.8-1.096 1.212-.482-.442-1.05-.877-1.594-.877-.628.013-1.213.62-.606 1.717.017.022-.094.138-.156.09-.465-.395-.652-1.482-.286-2.095.256-.397.72-.785 1.513-.693l.313-.85c-.287-.113-.598 0-.988.308.132-.67.551-1.136 1.412-1.252l.882-2.114c-.467-.187-.903.04-1.12.436-.132-.017-.225-.063-.25-.147l.903-1.68c.44-.153.817-.153 1.151-.048 1.376.436 2.067 2.76 3.098 5.325.095.248.221.271.516-.046l.21.186-1.86 1.85-.856-2.558c0 .022-.417.125-1.107.063a5.65 5.65 0 01-1.168-.216z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ana.svg b/assets/lib/simple-icons/icons/ana.svg
new file mode 100644
index 00000000..22f2c414
--- /dev/null
+++ b/assets/lib/simple-icons/icons/ana.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ANA</title><path d="M19.11 8.975l-3.454 6.05h3.432l3.455-6.05zm3.933 0l-3.455 6.05h.959L24 8.975zm-10.01.781H14.8l.403 5.27h-1.31l-.025-.58a.206.206 0 0 0-.202-.227h-1.867l.429-.757h1.21c.151 0 .328.026.328-.202l-.202-2.37c0-.15-.126-.226-.227-.075L11.193 15h-.882zm-9.983 0h1.74l.353 5.27h-1.31l-.026-.58a.226.226 0 0 0-.227-.227H1.563l.429-.757h1.386c.151 0 .328.026.328-.202l-.151-2.37c0-.15-.126-.226-.227-.075L.882 15H0zm3.278 0h1.79l1.16 4.084c.05.126.15.101.176 0l.756-4.084h.782l-.933 5.27H8.244l-1.135-4.034c-.025-.101-.151-.127-.176 0l-.706 4.033h-.832Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/anaconda.svg b/assets/lib/simple-icons/icons/anaconda.svg
index b75181f1..b916d1b9 100644
--- a/assets/lib/simple-icons/icons/anaconda.svg
+++ b/assets/lib/simple-icons/icons/anaconda.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Anaconda icon</title><path d="M4.37 18.34c-.9-.09-1.8-.26-2.68-.5l-.08-.02.02-.08c.26-.85.59-1.68.98-2.47l.04-.08.07.04c.59.33 1.22.63 1.85.89l.06.02-.01.06c-.1.67-.15 1.36-.17 2.05v.09h-.08zM6.31 6.23v-.02c-.52.01-1.04.04-1.55.1.06.53.16 1.05.27 1.56.36-.6.79-1.15 1.28-1.64zM4.46 18.95v-.07l-.07-.01c-.76-.07-1.53-.2-2.29-.38l-.2-.05.11.18c.69 1.04 1.53 1.96 2.5 2.74l.16.13-.03-.2c-.11-.8-.17-1.59-.18-2.34zM8.17.7c-.93.32-1.81.75-2.62 1.28.61.11 1.22.25 1.81.43.24-.59.51-1.15.81-1.71zm3.87-.64c-.46 0-.91.03-1.36.08.63.44 1.24.92 1.81 1.45l.48.44-.47.45c-.39.37-.76.77-1.12 1.2l-.02.02s-.07.08-.18.21c.28-.03.57-.05.86-.05 4.49 0 8.14 3.64 8.14 8.14 0 4.49-3.64 8.14-8.14 8.14-1.56 0-3.02-.44-4.25-1.2-.61.07-1.22.1-1.84.1-.29 0-.57-.01-.86-.02.02.93.11 1.88.26 2.88 1.91 1.29 4.21 2.05 6.69 2.05 6.6 0 11.94-5.35 11.94-11.94 0-6.6-5.34-11.95-11.94-11.95zm-1.58 2.82c.24-.28.48-.55.73-.82-.56-.48-1.15-.91-1.77-1.3-.38.64-.71 1.31-.99 1.99.54.2 1.06.43 1.58.68.23-.31.4-.49.45-.55zM2.35 9.7l.05.07.07-.05c.55-.4 1.13-.77 1.73-1.1l.06-.02-.02-.07c-.18-.67-.32-1.37-.41-2.08l-.01-.08-.08.02c-.88.16-1.76.4-2.6.7l-.08.03.03.08c.35.86.77 1.7 1.26 2.5zm-.14 1.15l-.07.05C1.5 11.42.89 12 .33 12.62l-.06.06.06.05c.62.54 1.29 1.04 1.99 1.48l.07.05.04-.07c.31-.56.67-1.11 1.05-1.64l.04-.05-.04-.05c-.44-.49-.85-1-1.23-1.54l-.04-.06zm4.69 7.53l.21-.01-.16-.13c-.64-.52-1.19-1.13-1.64-1.83v-.02l-.13-.06-.02.11c-.08.6-.13 1.22-.14 1.86v.08h.08c.28.02.57.02.85.02.31.01.63 0 .95-.02zM6.5 5.19c.13-.59.29-1.17.48-1.74-.75-.21-1.52-.37-2.29-.48-.07.78-.08 1.56-.03 2.33.61-.07 1.23-.1 1.84-.11zm1.15-.04c.52-.33 1.08-.61 1.67-.82-.42-.19-.84-.37-1.28-.53-.15.44-.28.9-.39 1.35zm-5.55 9.7l-.06-.04c-.62-.39-1.21-.82-1.77-1.28l-.16-.13.03.21c.15 1.15.47 2.26.94 3.32l.08.19.07-.19c.23-.68.52-1.35.84-1.99l.03-.09zM3.63 3.52c-.71.71-1.34 1.5-1.85 2.37.62-.18 1.24-.33 1.87-.44-.04-.64-.05-1.28-.02-1.93zm.36 8.38l.01-.21c.03-.73.15-1.44.37-2.13l.06-.2-.18.1c-.47.27-.93.57-1.37.89l-.07.05.05.07c.31.44.64.87.99 1.28l.14.15zm.08 1.22l-.03-.2-.12.18c-.33.47-.64.95-.92 1.45l-.04.07.07.04c.5.28 1.03.54 1.56.77l.19.08-.09-.19c-.31-.7-.52-1.44-.62-2.2zm-2.33-2.85l.06-.05-.04-.06c-.37-.6-.71-1.23-1.01-1.87l-.09-.18-.06.2C.25 9.39.06 10.52.03 11.66l-.01.21.15-.15c.49-.52 1.02-1.02 1.57-1.45z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Anaconda</title><path d="M12.045.033a12.181 12.182 0 00-1.361.078 17.512 17.513 0 011.813 1.433l.48.438-.465.45a15.047 15.048 0 00-1.126 1.205l-.178.215a8.527 8.527 0 01.86-.05 8.154 8.155 0 11-4.286 15.149 15.764 15.765 0 01-1.841.106h-.86a21.847 21.848 0 00.264 2.866 11.966 11.967 0 106.7-21.89zM8.17.678a12.181 12.182 0 00-2.624 1.275 15.506 15.507 0 011.813.43A18.551 18.552 0 018.17.678zM9.423.75a16.237 16.238 0 00-.995 1.998 16.15 16.152 0 011.605.66 6.98 6.98 0 01.43-.509c.234-.286.472-.559.716-.817A15.047 15.048 0 009.423.75zM4.68 2.949a14.969 14.97 0 000 2.336c.587-.065 1.196-.1 1.812-.107a16.617 16.617 0 01.48-1.748 16.48 16.481 0 00-2.292-.481zM3.62 3.5A11.938 11.938 0 001.762 5.88a17.004 17.004 0 011.877-.444A17.39 17.391 0 013.62 3.5zm4.406.287c-.143.437-.265.888-.38 1.347a8.255 8.255 0 011.67-.803c-.423-.2-.845-.38-1.29-.544zM6.3 6.216a14.051 14.052 0 00-1.555.108c.064.523.157 1.038.272 1.554a8.39 8.391 0 011.283-1.662zm-2.55.137a15.313 15.313 0 00-2.602.716h-.078v.079a17.104 17.105 0 001.267 2.544l.043.071.072-.049a16.309 16.31 0 011.734-1.083l.057-.035V8.54a16.867 16.868 0 01-.408-2.094v-.092zM.644 8.095l-.063.2A11.844 11.845 0 000 11.655v.209l.143-.152a17.706 17.707 0 011.584-1.447l.057-.043-.043-.064a16.18 16.18 0 01-1.025-1.87zm3.77 1.253l-.18.1c-.465.273-.93.573-1.375.889l-.065.05.05.064c.309.437.645.867.996 1.276l.137.165v-.208a8.176 8.176 0 01.364-2.15zM2.2 10.853l-.072.05a16.574 16.574 0 00-1.813 1.734l-.058.058.066.057a15.449 15.45 0 001.991 1.483l.072.05.043-.08a16.738 16.74 0 011.053-1.64v-.05l-.043-.05a16.99 16.99 0 01-1.19-1.54zm1.855 2.071l-.121.172a15.363 15.363 0 00-.917 1.433l-.043.072.071.043a16.61 16.61 0 001.562.766l.193.086-.086-.193a8.04 8.04 0 01-.66-2.172zm-3.976.48v.2a11.758 11.759 0 00.946 3.326l.078.186.072-.194a16.215 16.216 0 01.845-2l.057-.063-.064-.043a17.197 17.198 0 01-1.776-1.284zm2.543 1.805l-.035.08a15.764 15.765 0 00-.983 2.479v.08h.086a16.15 16.152 0 002.688.5l.072.007v-.086a17.562 17.563 0 01.164-2.056v-.065H4.55a16.266 16.266 0 01-1.849-.896zm2.544 1.169v.114a17.254 17.255 0 00-.151 1.828v.078h.931c.287 0 .624.014.946 0h.209l-.166-.129a8.011 8.011 0 01-1.64-1.834zm-3.29 2.1l.115.172a11.988 11.988 0 002.502 2.737l.157.129v-.201a22.578 22.58 0 01-.2-2.336v-.071h-.072a16.23 16.23 0 01-2.3-.387z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/analogue.svg b/assets/lib/simple-icons/icons/analogue.svg
index b3e56dcb..d7c89448 100644
--- a/assets/lib/simple-icons/icons/analogue.svg
+++ b/assets/lib/simple-icons/icons/analogue.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Analogue icon</title><path d="M5.468 12.804a5.145 5.145 0 10-.644 10.27 5.145 5.145 0 00.644-10.27zm17.841 2.562L16.45 3.484a5.146 5.146 0 00-8.912 5.15l6.86 11.878a5.148 5.148 0 007.031 1.885 5.146 5.146 0 001.881-7.031z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Analogue</title><path d="M5.468 12.804a5.145 5.145 0 10-.644 10.27 5.145 5.145 0 00.644-10.27zm17.841 2.562L16.45 3.484a5.146 5.146 0 00-8.912 5.15l6.86 11.878a5.148 5.148 0 007.031 1.885 5.146 5.146 0 001.881-7.031z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/anchor.svg b/assets/lib/simple-icons/icons/anchor.svg
index 51e28278..ac75cb00 100644
--- a/assets/lib/simple-icons/icons/anchor.svg
+++ b/assets/lib/simple-icons/icons/anchor.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Anchor icon</title><path d="M12.335 12.606c-.171.682-.586 1.261-1.139 1.564l-.428.234.78 1.32.41-.226a3.743 3.743 0 001.435-1.44 4.404 4.404 0 00.565-2.1v-.016a4.403 4.403 0 00-.565-2.1 3.744 3.744 0 00-1.434-1.44l-.41-.225-.78 1.32.427.234c.571.312.995.92 1.155 1.632H7.244a1.4 1.4 0 00-1.24-.743c-.77 0-1.396.617-1.396 1.377 0 .759.626 1.377 1.396 1.377a1.4 1.4 0 001.252-.768zM12 24C6.392 24 1.846 18.627 1.846 12S6.392 0 12 0s10.154 5.373 10.154 12S17.608 24 12 24zm5.591-11.164c-.29 2.825-1.867 5.206-4.06 6.377l.829 1.368c2.846-1.526 4.83-4.767 4.896-8.538-.066-3.771-2.05-7.012-4.896-8.539l-.83 1.37c2.194 1.17 3.771 3.55 4.061 6.375l.023.794zm-4.652 5.336l.194-.107c.995-.547 1.841-1.398 2.446-2.46a7.645 7.645 0 00.98-3.648v-.008a7.645 7.645 0 00-.98-3.647c-.605-1.063-1.451-1.914-2.446-2.46l-.194-.108-.79 1.336.203.11a4.892 4.892 0 011.772 1.702c.467.744.763 1.62.856 2.535l.015.536-.015.535a5.905 5.905 0 01-.856 2.536 4.89 4.89 0 01-1.772 1.701l-.203.111z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Anchor</title><path d="M23.214 8.166S22.209 7.69 21.164 8c-.782.23-1.638.824-2.125 2.055-.939 2.363-.126 6.484-.444 6.484s-1.319-3.797-2.658-7.752c-1.34-3.954-2.497-8.061-4.588-7.73-1.854.293-1.279 4.976-.553 9.362.658 3.976 1.419 7.698.984 7.698-.777.001-3.326-10.988-5.939-10.57-2.613.416.753 12.525.046 12.548-.581.019-2.006-7.37-4.121-7.031-1.602.257-.175 6.006-.109 7.61.016.402.141 1.157-.461 1.157H0v1.118h1.958c.402-.02.72-.174.881-.57.544-1.342-.884-7.042-.55-7.084.23-.028.725 1.707 1.416 3.67.69 1.963 1.383 3.995 2.696 3.995 2.83 0-.057-11.121.504-11.121.297 0 1.106 2.26 1.995 4.738 1.089 3.028 2.416 6.387 4.018 6.387 1.912 0 1.29-4.338.698-8.495-.513-3.598-1.114-6.978-.793-6.978.721 0 3.447 15.467 6.72 15.467 1.64 0 1.658-3.233 1.658-6.72 0-2.448-.204-4.68 1.331-5.217.73-.254 1.468.198 1.468.198Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/andela.svg b/assets/lib/simple-icons/icons/andela.svg
index 9b0cdef9..c34c9893 100644
--- a/assets/lib/simple-icons/icons/andela.svg
+++ b/assets/lib/simple-icons/icons/andela.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Andela icon</title><path d="M18.166 7.911l.24-2.315-2.316.238-.64-2.16c0-.001 3.664-.308 4.04-.341.37-.03.727-.071.992.18v-.001a.106.106 0 01.003.003l.003.003c.25.266.208.623.178.991l-.339 4.042zM5.834 16.09l-.238 2.315 2.315-.238.64 2.16-4.04.34c-.37.03-.728.072-.993-.179l-.003-.002-.004-.003h.001c-.25-.265-.208-.623-.177-.993.03-.376.338-4.04.338-4.04zm13.418-2.62L21.058 12l-1.806-1.468 1.075-1.981s2.808 2.374 3.098 2.616c.281.241.564.464.574.829H24V12a.01.01 0 000 .004c-.01.365-.294.588-.576.827l-3.097 2.618zM4.749 10.532L2.943 12l1.806 1.468-1.076 1.981-3.096-2.617c-.283-.24-.566-.464-.576-.829V12L0 11.995h.001c.01-.364.293-.587.576-.827L3.673 8.55zm11.34 7.634l2.316.24-.239-2.316 2.161-.64.34 4.04c.03.37.071.727-.18.992h.001a.012.012 0 00-.003.003l-.003.003c-.265.25-.623.208-.991.178l-4.042-.34zM7.911 5.834l-2.315-.238.239 2.315-2.162.64-.338-4.04c-.031-.37-.073-.728.178-.993 0-.002.002-.003.002-.003l.003-.004.001.001c.265-.25.622-.208.993-.178l4.04.339zm2.62 13.418L12 21.058l1.468-1.806 1.981 1.075-2.616 3.098c-.241.281-.464.564-.829.574V24H12h-.004c-.365-.01-.588-.294-.827-.575L8.55 20.327zm2.937-14.503L12 2.943 10.532 4.75l-1.98-1.076L11.167.577c.24-.284.464-.566.829-.576h.008c.364.01.587.292.827.576l2.617 3.096zm-1.466 7.785H10.58L12 9.09v.003-.003l.002.003v-.003l1.42 3.445zm3.967 3.04l-3.302-8.17c-.073-.213-.263-.575-.668-.575-.404 0-.593.362-.667.575l-3.3 8.17c0 .005-.127.277-.102.312.025.035.067.053.121.053h1.013c.1 0 .169-.052.218-.167l.81-1.986h3.811l.816 1.986c.048.115.117.167.218.167h1.013c.053 0 .096-.018.12-.053.026-.035-.101-.307-.101-.311Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Andela</title><path d="M11.996.002c-.365.01-.588.29-.828.574L8.553 3.674 10.53 4.75 12 2.943l1.469 1.805 1.978-1.074L12.83.576c-.24-.284-.462-.564-.826-.574zM8.553 3.674l-4.041-.34c-.371-.03-.727-.072-.992.178h-.002l-.002.004-.002.002c-.251.265-.21.624-.178.994l.338 4.039 2.162-.64-.24-2.315 2.314.238zM3.673 8.55L.577 11.168c-.283.24-.564.462-.574.826H0L.002 12v.004c.01.365.291.588.574.828l3.098 2.617 1.074-1.98L2.943 12l1.805-1.469zm0 6.898s-.307 3.665-.337 4.041c-.031.37-.074.727.176.992l.004.004.002.002c.265.251.624.21.994.18l4.039-.342-.64-2.158-2.315.236.238-2.314zm4.878 4.877l2.619 3.1c.239.28.461.564.826.574h.008v-.002c.365-.01.587-.291.828-.572l2.617-3.1-1.98-1.074L12 21.059l-1.469-1.807zm6.898 0l4.041.34c.368.03.727.072.992-.178l.002-.004.002-.002c.251-.265.212-.622.182-.992l-.342-4.04-2.16.64.238 2.316-2.314-.24zm4.877-4.877l3.098-2.619c.282-.239.566-.461.576-.826A.01.01 0 0 1 24 12v-.004h-.002c-.01-.365-.291-.587-.572-.828-.29-.242-3.1-2.617-3.1-2.617l-1.074 1.98L21.059 12l-1.807 1.47zm0-6.898l.34-4.041c.03-.368.072-.726-.178-.992l-.004-.002c0-.001 0-.002-.002-.002-.265-.251-.622-.212-.992-.182-.376.033-4.04.34-4.04.342l.64 2.16 2.316-.238-.24 2.314zm-8.328-1.723c-.404 0-.592.363-.666.576l-3.3 8.17c0 .005-.127.278-.102.313.025.035.067.052.12.052h1.014c.1 0 .168-.053.217-.168l.81-1.986h3.811l.817 1.986c.048.115.118.168.219.168h1.011c.053 0 .097-.017.121-.052.026-.035-.101-.309-.101-.313l-3.301-8.17c-.073-.213-.265-.576-.67-.576zM12 9.09l.002.004V9.09l1.42 3.445c-.947-.002-1.895-.002-2.842-.002z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/android.svg b/assets/lib/simple-icons/icons/android.svg
index 287f7f5b..a7702d38 100644
--- a/assets/lib/simple-icons/icons/android.svg
+++ b/assets/lib/simple-icons/icons/android.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Android icon</title><path d="M24 19H0a13.6 13.6 0 0 1 2.21-6.07A11.2 11.2 0 0 1 5.87 9.4l.41-.23-2.02-3.41a.51.51 0 0 1 .17-.7.5.5 0 0 1 .69.18l2.08 3.5a12.62 12.62 0 0 1 4.84-.9 12.2 12.2 0 0 1 4.75.9l2.07-3.5a.5.5 0 0 1 .7-.17.51.51 0 0 1 .16.7L17.7 9.19l.5.28a11.38 11.38 0 0 1 3.63 3.62A14.48 14.48 0 0 1 24 19zm-7.5-4.48a1 1 0 0 0 1 1 1 1 0 0 0 1-1 1 1 0 0 0-1-1 1 1 0 0 0-1 1zm-11 0a1 1 0 0 0 1 1 1 1 0 0 0 1-1 1 1 0 0 0-1-1 1 1 0 0 0-1 1z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Android</title><path d="M17.523 15.3414c-.5511 0-.9993-.4486-.9993-.9997s.4483-.9993.9993-.9993c.5511 0 .9993.4483.9993.9993.0001.5511-.4482.9997-.9993.9997m-11.046 0c-.5511 0-.9993-.4486-.9993-.9997s.4482-.9993.9993-.9993c.5511 0 .9993.4483.9993.9993 0 .5511-.4483.9997-.9993.9997m11.4045-6.02l1.9973-3.4592a.416.416 0 00-.1521-.5676.416.416 0 00-.5676.1521l-2.0223 3.503C15.5902 8.2439 13.8533 7.8508 12 7.8508s-3.5902.3931-5.1367 1.0989L4.841 5.4467a.4161.4161 0 00-.5677-.1521.4157.4157 0 00-.1521.5676l1.9973 3.4592C2.6889 11.1867.3432 14.6589 0 18.761h24c-.3435-4.1021-2.6892-7.5743-6.1185-9.4396"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/androidauto.svg b/assets/lib/simple-icons/icons/androidauto.svg
index 9ce0e5f9..8c253827 100644
--- a/assets/lib/simple-icons/icons/androidauto.svg
+++ b/assets/lib/simple-icons/icons/androidauto.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Android Auto icon</title><path d="M12 0c-.6 0-1.11.32-1.39.8L.48 18.4a1.6 1.6 0 0 0 1.39 2.4h2l7.7-13.58.43-.77 8.13 14.35h2a1.6 1.6 0 0 0 1.39-2.4L13.39.8A1.6 1.6 0 0 0 12 0zm0 7.47l-9.07 16 .54.53L12 20.8l8.53 3.2.54-.53z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Android Auto</title><path d="M12 0c-.6 0-1.11.32-1.39.8L.48 18.4a1.6 1.6 0 0 0 1.39 2.4h2l7.7-13.58.43-.77 8.13 14.35h2a1.6 1.6 0 0 0 1.39-2.4L13.39.8A1.6 1.6 0 0 0 12 0zm0 7.47l-9.07 16 .54.53L12 20.8l8.53 3.2.54-.53z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/androidstudio.svg b/assets/lib/simple-icons/icons/androidstudio.svg
index 3ee70714..7ef146e5 100644
--- a/assets/lib/simple-icons/icons/androidstudio.svg
+++ b/assets/lib/simple-icons/icons/androidstudio.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Android Studio icon</title><path d="M12 0C6.0697 0 1.254 4.8158 1.254 10.746c0 3.29 1.4819 6.237 3.8144 8.209l4.5097-7.7987-.3926-.3907c-.115-.1151-.173-.2124-.1757-.3027a.2386.2386 0 010-.0293H9V7.875c0-.6155.5095-1.123 1.125-1.123h.6348V4.7383H13.25V6.752h.625c.6253 0 1.125.5075 1.1348 1.1328v2.539H15v.0098h-.002c-.0032.0868-.0511.1996-.1738.3223l-.0097.0097-.3907.3907 1.9336 3.3417c.8695-1.016 1.3965-2.3255 1.3965-3.752h2.004c0 2.1788-.9096 4.1538-2.3556 5.5606l1.5293 2.6504c2.333-1.9721 3.8145-4.9207 3.8145-8.211C22.7559 4.806 17.94 0 12 0zm6.9316 18.957a10.7911 10.7911 0 01-1.6523 1.1504l1.5195 2.627a.5687.5687 0 00.1973.205L20.5 23.9649c.0586.0391.127.0391.1855.0098.0587-.039.088-.0976.088-.166l-.1563-1.8066c-.0098-.0977-.039-.1856-.0879-.2735l-1.5977-2.7715zm-1.6523 1.1504l-1.498-2.5898a7.6932 7.6932 0 01-3.7715.9863 7.6932 7.6932 0 01-3.7715-.9863l-1.5 2.5976c1.556.8767 3.3504 1.379 5.2617 1.379 1.9182 0 3.7195-.5042 5.2793-1.3868zm-10.541.0078a10.788 10.788 0 01-1.67-1.1601l-1.5976 2.7636c-.0488.088-.0781.1758-.0879.2735l-.1367 1.8164c-.0098.0684.0293.127.0879.166.0586.039.127.0293.1855-.0098l1.504-1.0156c.0781-.0586.1464-.1269.1952-.205l1.5196-2.629zM12 7.7285v.0195c-.8288 0-1.4915.6622-1.4941 1.5.0026.8283.675 1.498 1.4941 1.498h.0098c.819-.0097 1.4914-.6699 1.4941-1.498-.0026-.8281-.675-1.4902-1.4941-1.5L12 7.7285zm-.9473 4.9043l-1.8183 3.1465A5.7067 5.7067 0 0012 16.4922c1.0063 0 1.9547-.2537 2.7559-.7031l-1.8145-3.1504-.375.375c-.1465.1563-.3515.2343-.5566.2343h-.0196c-.1954 0-.4003-.078-.5566-.2343l-.3809-.3809Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Android Studio</title><path d="M19.2693 10.3368c-.3321 0-.6026.2705-.6026.6031v9.8324h-1.7379l-3.3355-6.9396c.476-.5387.6797-1.286.5243-2.0009a2.2862 2.2862 0 0 0-1.2893-1.6248v-.8124c.0121-.2871-.1426-.5787-.4043-.7407-.1391-.0825-.2884-.1234-.4402-.1234a.8478.8478 0 0 0-.4318.1182c-.2701.1671-.4248.4587-.4123.7662l-.0003.721c-1.0149.3668-1.6619 1.4153-1.4867 2.5197a2.282 2.282 0 0 0 .5916 1.2103l-3.2096 6.9064H4.0928c-1.0949-.007-1.9797-.8948-1.9832-1.9896V5.016c-.0055 1.1024.8836 2.0006 1.9859 2.0062a2.024 2.024 0 0 0 .1326-.0037h14.7453s2.5343-.2189 2.8619 1.5392c-.2491.0287-.4449.2321-.4449.4889 0 .7115-.5791 1.2901-1.3028 1.2901h-.8183zM17.222 22.5366c.2347.4837.0329 1.066-.4507 1.3007-.1296.0629-.2666.0895-.4018.0927a.9738.9738 0 0 1-.3194-.0455c-.024-.0078-.046-.0209-.0694-.0305a.9701.9701 0 0 1-.2277-.1321c-.0247-.0192-.0495-.038-.0724-.0598-.0825-.0783-.1574-.1672-.21-.2757l-1.2554-2.6143-1.5585-3.2452a.7725.7725 0 0 0-.6995-.4443h-.0024a.792.792 0 0 0-.7083.4443l-1.5109 3.2452-1.2321 2.6464a.9722.9722 0 0 1-.7985.5795c-.0626.0053-.1238-.0024-.185-.0087-.0344-.0036-.069-.0053-.1025-.0124-.0489-.0103-.0954-.0278-.142-.0452-.0301-.0113-.0613-.0197-.0901-.0339-.0496-.0244-.0948-.0565-.1397-.0889-.0217-.0156-.0457-.0275-.0662-.045a.9862.9862 0 0 1-.1695-.1844.9788.9788 0 0 1-.0708-.9852l.8469-1.8223 3.2676-7.0314a1.7964 1.7964 0 0 1-.7072-1.1637c-.1555-.9799.5129-1.9003 1.4928-2.0559V9.3946a.3542.3542 0 0 1 .1674-.3155.3468.3468 0 0 1 .3541 0 .354.354 0 0 1 .1674.3155v1.159l.0129.0064a1.8028 1.8028 0 0 1 1.2878 1.378 1.7835 1.7835 0 0 1-.6439 1.7836l3.3889 7.0507.8481 1.7643zM12.9841 12.306c.0042-.6081-.4854-1.1044-1.0935-1.1085a1.1204 1.1204 0 0 0-.7856.3219 1.101 1.101 0 0 0-.323.7716c-.0042.6081.4854 1.1044 1.0935 1.1085h.0077c.6046 0 1.0967-.488 1.1009-1.0935zm-1.027 5.2768c-.1119.0005-.2121.0632-.2571.1553l-1.4127 3.0342h3.3733l-1.4564-3.0328a.274.274 0 0 0-.2471-.1567zm8.1432-6.7459l-.0129-.0001h-.8177a.103.103 0 0 0-.103.103v12.9103a.103.103 0 0 0 .0966.103h.8435c.9861-.0035 1.7836-.804 1.7836-1.79V9.0468c0 .9887-.8014 1.7901-1.7901 1.7901zM2.6098 5.0161v.019c.0039.816.6719 1.483 1.4874 1.4869a12.061 12.061 0 0 1 .1309-.0034h1.1286c.1972-1.315.7607-2.525 1.638-3.4859H4.0993c-.9266.0031-1.6971.6401-1.9191 1.4975.2417.0355.4296.235.4296.4859zm6.3381-2.8977L7.9112.3284a.219.219 0 0 1 0-.2189A.2384.2384 0 0 1 8.098 0a.219.219 0 0 1 .1867.1094l1.0496 1.8158a6.4907 6.4907 0 0 1 5.3186 0L15.696.1094a.2189.2189 0 0 1 .3734.2189l-1.0302 1.79c1.6671.9125 2.7974 2.5439 3.0975 4.4018l-12.286-.0014c.3004-1.8572 1.4305-3.488 3.0972-4.4003zm5.3774 2.6202a.515.515 0 0 0 .5271.5028.515.515 0 0 0 .5151-.5151.5213.5213 0 0 0-.8885-.367.5151.5151 0 0 0-.1537.3793zm-5.7178-.0067a.5151.5151 0 0 0 .5207.5095.5086.5086 0 0 0 .367-.1481.5215.5215 0 1 0-.734-.7341.515.515 0 0 0-.1537.3727z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/angellist.svg b/assets/lib/simple-icons/icons/angellist.svg
index a591fd37..7cce2596 100644
--- a/assets/lib/simple-icons/icons/angellist.svg
+++ b/assets/lib/simple-icons/icons/angellist.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>AngelList icon</title><path d="M16.465 9.954c.735-2 1.31-3.65 1.723-4.954.41-1.3.618-2.1.618-2.4 0-.315-.07-.564-.21-.738-.135-.174-.324-.264-.567-.264-.31 0-.63.255-.94.765-.32.51-.67 1.334-1.06 2.467l-1.65 4.76 2.08.362h-.01v.002zm-2.193 4.435c-.474-.03-.923-.08-1.344-.15-.42-.08-.83-.19-1.216-.33.177.35.335.7.472 1.05.138.35.25.69.34 1.04.26-.33.54-.63.83-.9.292-.27.6-.51.915-.72zm-1.862-5l-1.78-5.14c-.464-1.31-.82-2.16-1.075-2.57-.25-.4-.525-.6-.822-.6-.23 0-.417.08-.56.26-.144.18-.214.41-.214.7 0 .5.19 1.38.57 2.64.38 1.25.96 2.89 1.73 4.93.06-.12.16-.21.28-.26.12-.05.28-.08.49-.08.06 0 .19.01.39.01.19.02.52.04.97.09zm-1.618 7.96c.188 0 .36-.09.51-.26.15-.18.234-.36.234-.55 0-.21-.15-.7-.452-1.46-.3-.76-.68-1.51-1.13-2.25-.33-.55-.655-.97-.97-1.25-.324-.28-.625-.42-.91-.42-.23 0-.484.14-.767.44-.28.29-.42.56-.42.81 0 .26.14.66.413 1.18.275.53.645 1.09 1.104 1.68.485.65.94 1.15 1.37 1.51.428.36.77.54 1.02.54h-.002zm-4.945-.4c.156.19.37.46.646.82.723 1 1.395 1.5 2.01 1.5.21 0 .397-.07.563-.2.164-.14.247-.27.247-.42 0-.17-.11-.44-.33-.83-.222-.39-.524-.82-.907-1.3-.44-.56-.805-.97-1.098-1.23-.288-.26-.525-.39-.697-.39-.38 0-.74.21-1.06.62-.32.4-.48.9-.48 1.46 0 .45.12.95.35 1.51.23.55.55 1.11.98 1.67.65.87 1.46 1.53 2.42 2 .96.46 2.03.69 3.19.69 2.14 0 3.94-.8 5.38-2.4 1.45-1.6 2.17-3.6 2.17-6.01 0-.74-.05-1.33-.16-1.76-.11-.43-.29-.75-.54-.95-.45-.38-1.33-.71-2.63-1.01-1.3-.3-2.66-.45-4.08-.45-.39 0-.68.07-.84.2-.16.13-.24.36-.24.673 0 .75.42 1.29 1.26 1.626.84.34 2.19.51 4.06.51h.676c.15 0 .28.06.37.174.09.11.15.28.18.52-.19.17-.57.37-1.154.6-.59.22-1.03.45-1.34.665-.66.484-1.19 1.06-1.59 1.724-.4.66-.6 1.29-.6 1.883 0 .36.086.8.258 1.31.17.51.26.823.26.95v.11l-.03.15c-.48-.03-.86-.313-1.14-.85-.287-.53-.42-1.24-.42-2.13v-.15c-.09.075-.176.135-.26.165-.086.034-.178.05-.27.05-.1 0-.198-.006-.29-.02-.09-.016-.18-.04-.29-.075.03.12.057.24.076.353.01.12.02.21.02.27 0 .406-.16.76-.48 1.05-.32.287-.7.43-1.14.43-.69 0-1.397-.34-2.11-1.01-.715-.674-1.07-1.34-1.07-1.985 0-.12.015-.23.04-.323s.075-.17.14-.24zm11.807-6.73c.985.18 1.685.6 2.09 1.25.41.64.61 1.66.61 3.06 0 2.77-.828 5.03-2.492 6.79-1.667 1.76-3.797 2.65-6.387 2.65-1.023 0-2.016-.19-2.976-.56-.97-.37-1.79-.89-2.49-1.54-.79-.73-1.39-1.49-1.78-2.3-.4-.81-.6-1.64-.6-2.48 0-.95.2-1.68.6-2.19.4-.52 1.05-.87 1.93-1.06-.17-.39-.29-.71-.36-.98-.08-.27-.12-.47-.12-.61 0-.5.26-1.01.78-1.52.52-.52 1.01-.78 1.47-.78.19 0 .4.03.62.11.22.07.47.19.75.35-.81-2.35-1.43-4.2-1.81-5.5-.39-1.31-.58-2.2-.58-2.7 0-.68.17-1.23.52-1.63.36-.4.84-.6 1.44-.6 1.03 0 2.34 2.31 3.93 6.923.28.79.48 1.4.63 1.83l.51-1.453c1.59-4.55 2.95-6.83 4.1-6.83.56 0 1.01.19 1.34.57.33.383.5.887.5 1.523 0 .48-.19 1.36-.56 2.65-.367 1.28-.92 2.96-1.67 5.04"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>AngelList</title><path d="M16.467 9.956c.736-2 1.31-3.651 1.723-4.953.412-1.302.618-2.102.618-2.399 0-.318-.069-.565-.206-.741a.683.683 0 0 0-.569-.264c-.308 0-.62.255-.94.766-.318.511-.67 1.333-1.055 2.465L14.39 9.593zm-2.192 4.434c-.473-.022-.92-.071-1.344-.148a7.126 7.126 0 0 1-1.211-.33c.175.352.332.703.47 1.055.137.352.25.698.337 1.039.264-.33.542-.63.833-.899a6.93 6.93 0 0 1 .915-.717zm-1.863-4.994l-1.78-5.143C10.17 2.945 9.813 2.09 9.56 1.69c-.253-.402-.527-.602-.824-.602a.688.688 0 0 0-.56.264c-.143.175-.215.412-.215.708 0 .506.193 1.385.577 2.638.385 1.253.962 2.895 1.731 4.928a.55.55 0 0 1 .28-.255 1.33 1.33 0 0 1 .495-.074c.066 0 .198.005.396.016.197.011.521.039.972.083zm-1.615 7.961c.186 0 .357-.085.51-.255a.81.81 0 0 0 .231-.552c0-.209-.15-.695-.453-1.46a14.623 14.623 0 0 0-1.129-2.25c-.33-.549-.654-.963-.973-1.244-.318-.28-.62-.42-.906-.42-.23 0-.486.146-.767.437-.28.291-.42.563-.42.816 0 .263.137.66.412 1.187.275.527.643 1.087 1.105 1.68.483.65.94 1.155 1.368 1.517.428.363.769.544 1.022.544zm-4.945-.395c.153.187.368.461.642.824.726 1 1.396 1.5 2.011 1.5a.874.874 0 0 0 .56-.198c.166-.132.248-.27.248-.412 0-.165-.11-.44-.33-.824-.22-.385-.522-.819-.906-1.302-.44-.56-.805-.97-1.096-1.228-.291-.258-.525-.388-.7-.388-.386 0-.74.206-1.064.618-.324.412-.486.899-.486 1.46 0 .45.112.953.338 1.507.225.555.552 1.113.98 1.673a6.543 6.543 0 0 0 2.415 2.003c.962.467 2.025.7 3.19.7 2.143 0 3.937-.799 5.382-2.398 1.445-1.599 2.167-3.601 2.167-6.008 0-.736-.055-1.321-.165-1.755-.11-.434-.29-.75-.544-.948-.45-.374-1.326-.709-2.629-1.006a18.315 18.315 0 0 0-4.08-.445c-.395 0-.675.066-.84.198-.165.132-.247.357-.247.676 0 .747.417 1.288 1.253 1.623.834.336 2.186.503 4.055.503h.675c.154 0 .278.058.371.173.093.116.157.289.19.52-.187.175-.572.376-1.154.601-.583.225-1.028.448-1.335.668a5.92 5.92 0 0 0-1.59 1.722c-.402.665-.603 1.294-.603 1.888 0 .362.085.8.256 1.31.17.511.255.827.255.948v.115l-.033.149c-.483-.033-.865-.316-1.145-.85-.28-.532-.42-1.244-.42-2.134v-.148a.912.912 0 0 1-.256.165.726.726 0 0 1-.272.05c-.099 0-.192-.009-.28-.026a2.869 2.869 0 0 1-.297-.074 2.917 2.917 0 0 1 .099.627c0 .406-.16.755-.478 1.046a1.63 1.63 0 0 1-1.137.437c-.693 0-1.396-.338-2.11-1.014-.715-.675-1.072-1.337-1.072-1.986 0-.12.014-.228.041-.321a.552.552 0 0 1 .14-.24zm11.802-6.726c.989.187 1.687.605 2.093 1.253.407.649.61 1.67.61 3.066 0 2.77-.832 5.036-2.497 6.8C16.195 23.118 14.066 24 11.473 24a8.254 8.254 0 0 1-2.976-.552 7.368 7.368 0 0 1-2.48-1.541c-.792-.726-1.385-1.492-1.78-2.3a5.58 5.58 0 0 1-.594-2.48c0-.946.203-1.676.61-2.193.406-.516 1.049-.868 1.928-1.055a8.824 8.824 0 0 1-.362-.972c-.077-.264-.116-.467-.116-.61 0-.495.261-1 .783-1.517.522-.516 1.014-.774 1.475-.774.198 0 .407.035.627.107.22.071.472.19.758.354C8.5 8.071 7.885 6.223 7.5 4.92c-.385-1.302-.577-2.2-.577-2.695 0-.681.176-1.222.528-1.623C7.802.2 8.28 0 8.885 0c1.032 0 2.34 2.308 3.923 6.923.274.791.483 1.401.626 1.83l.511-1.45C15.527 2.73 16.89.444 18.033.444c.56 0 1.008.19 1.343.569.336.379.503.887.503 1.524 0 .484-.184 1.369-.552 2.654-.368 1.286-.926 2.967-1.673 5.044"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/angular.svg b/assets/lib/simple-icons/icons/angular.svg
index 3f981544..6189bd2b 100644
--- a/assets/lib/simple-icons/icons/angular.svg
+++ b/assets/lib/simple-icons/icons/angular.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Angular icon</title><path d="M9.93 12.645h4.134L11.996 7.74M11.996.009L.686 3.988l1.725 14.76 9.585 5.243 9.588-5.238L23.308 3.99 11.996.01zm7.058 18.297h-2.636l-1.42-3.501H8.995l-1.42 3.501H4.937l7.06-15.648 7.057 15.648z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Angular</title><path d="M9.931 12.645h4.138l-2.07-4.908m0-7.737L.68 3.982l1.726 14.771L12 24l9.596-5.242L23.32 3.984 11.999.001zm7.064 18.31h-2.638l-1.422-3.503H8.996l-1.422 3.504h-2.64L12 2.65z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/angularjs.svg b/assets/lib/simple-icons/icons/angularjs.svg
index cfefd759..c995b354 100644
--- a/assets/lib/simple-icons/icons/angularjs.svg
+++ b/assets/lib/simple-icons/icons/angularjs.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>AngularJS icon</title><path d="M11.964 0L.672 3.974l1.784 14.794L11.976 24l9.568-5.303 1.784-14.794zm-.027 1.258l10.265 3.5-1.663 13.232-8.602 4.76-8.469-4.697L1.939 4.822zm0 .78L4.957 17.57l2.604-.048 1.4-3.501h6.257l1.532 3.55 2.492.046zm.02 4.98l2.355 4.93H9.878Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>AngularJS</title><path d="M11.964 0L.672 3.974l1.784 14.794L11.976 24l9.568-5.303 1.784-14.794zm-.027 1.258l10.265 3.5-1.663 13.232-8.602 4.76-8.469-4.697L1.939 4.822zm0 .78L4.957 17.57l2.604-.048 1.4-3.501h6.257l1.532 3.55 2.492.046zm.02 4.98l2.355 4.93H9.878Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/angularuniversal.svg b/assets/lib/simple-icons/icons/angularuniversal.svg
index 55bce85a..dd6630fe 100644
--- a/assets/lib/simple-icons/icons/angularuniversal.svg
+++ b/assets/lib/simple-icons/icons/angularuniversal.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Angular Universal icon</title><path d="M15.6 11.28v1.44a.48.48 0 0 1-.48.48H8.88a.48.48 0 0 1-.48-.48v-1.44a.48.48 0 0 1 .48-.48h6.24a.48.48 0 0 1 .48.48zM12 15.6a1.2 1.2 0 1 0 0 2.4 1.2 1.2 0 0 0 0-2.4zm3.12-8.4H8.88a.48.48 0 0 0-.48.48v1.44c0 .265.215.48.48.48h6.24a.48.48 0 0 0 .48-.48V7.68a.48.48 0 0 0-.48-.48zm8.04-3.204l-1.716 14.736L11.976 24 2.52 18.732.84 3.996 11.976 0 23.16 3.996zM16.8 6.24a1.44 1.44 0 0 0-1.44-1.44H8.64A1.44 1.44 0 0 0 7.2 6.24v11.52c0 .795.645 1.44 1.44 1.44h6.72a1.44 1.44 0 0 0 1.44-1.44V6.24z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Angular Universal</title><path d="M15.6 11.28v1.44a.48.48 0 0 1-.48.48H8.88a.48.48 0 0 1-.48-.48v-1.44a.48.48 0 0 1 .48-.48h6.24a.48.48 0 0 1 .48.48zM12 15.6a1.2 1.2 0 1 0 0 2.4 1.2 1.2 0 0 0 0-2.4zm3.12-8.4H8.88a.48.48 0 0 0-.48.48v1.44c0 .265.215.48.48.48h6.24a.48.48 0 0 0 .48-.48V7.68a.48.48 0 0 0-.48-.48zm8.04-3.204l-1.716 14.736L11.976 24 2.52 18.732.84 3.996 11.976 0 23.16 3.996zM16.8 6.24a1.44 1.44 0 0 0-1.44-1.44H8.64A1.44 1.44 0 0 0 7.2 6.24v11.52c0 .795.645 1.44 1.44 1.44h6.72a1.44 1.44 0 0 0 1.44-1.44V6.24z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/anilist.svg b/assets/lib/simple-icons/icons/anilist.svg
new file mode 100644
index 00000000..bb191166
--- /dev/null
+++ b/assets/lib/simple-icons/icons/anilist.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>AniList</title><path d="M6.361 2.943L0 21.056h4.942l1.077-3.133H11.4l1.052 3.133H22.9c.71 0 1.1-.392 1.1-1.101V17.53c0-.71-.39-1.101-1.1-1.101h-6.483V4.045c0-.71-.392-1.102-1.101-1.102h-2.422c-.71 0-1.101.392-1.101 1.102v1.064l-.758-2.166zm2.324 5.948l1.688 5.018H7.144z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ansible.svg b/assets/lib/simple-icons/icons/ansible.svg
index 21847331..e7367ce6 100644
--- a/assets/lib/simple-icons/icons/ansible.svg
+++ b/assets/lib/simple-icons/icons/ansible.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Ansible icon</title><path d="M10.617 11.473l4.686 3.695-3.102-7.662zM12 0C5.371 0 0 5.371 0 12s5.371 12 12 12 12-5.371 12-12S18.629 0 12 0zm5.797 17.305c-.011.471-.403.842-.875.83-.236 0-.416-.09-.664-.293l-6.19-5-2.079 5.203H6.191L11.438 5.44c.124-.314.427-.52.764-.506.326-.014.63.189.742.506l4.774 11.494c.045.111.08.234.08.348-.001.009-.001.009-.001.023z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Ansible</title><path d="M10.617 11.473l4.686 3.695-3.102-7.662zM12 0C5.371 0 0 5.371 0 12s5.371 12 12 12 12-5.371 12-12S18.629 0 12 0zm5.797 17.305c-.011.471-.403.842-.875.83-.236 0-.416-.09-.664-.293l-6.19-5-2.079 5.203H6.191L11.438 5.44c.124-.314.427-.52.764-.506.326-.014.63.189.742.506l4.774 11.494c.045.111.08.234.08.348-.001.009-.001.009-.001.023z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ansys.svg b/assets/lib/simple-icons/icons/ansys.svg
new file mode 100644
index 00000000..b4b14fc6
--- /dev/null
+++ b/assets/lib/simple-icons/icons/ansys.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Ansys</title><path d="M19.0424 10.089l-.993 2.4233-.9932-2.4233h-1.227l1.6066 3.921-.7039 1.7179h1.227l2.3104-5.639zm4.667 2.1272c-.1936-.1936-.5004-.3377-.9209-.4332l-.6984-.1599c-.1678-.0447-.2858-.0923-.3531-.143-.0673-.0506-.101-.1207-.101-.2101 0-.1232.0562-.2186.1683-.2859.112-.0673.2664-.101.4628-.101.426 0 .858.1513 1.2954.4542l.3362-.841c-.2241-.1627-.4767-.2886-.757-.3784a2.8304 2.8304 0 0 0-.8663-.1347c-.3476 0-.6576.0562-.9292.1683-.2724.112-.4826.2665-.631.4624-.1485.1964-.223.4237-.223.6814 0 .3254.0939.582.282.7696.1876.188.4806.3267.8789.4165l.673.1517c.2075.0447.3492.0954.4248.1512.076.0562.1136.1346.1136.2356 0 .1124-.0546.2007-.1639.2648-.1092.0645-.262.0966-.4584.0966-.2748 0-.5468-.042-.816-.1259-.2692-.0843-.5163-.2019-.7403-.3531l-.3366.8745c.23.1628.5032.2875.8204.3746.3167.0867.6655.1302 1.0471.1302.555 0 .991-.1136 1.3081-.3408.3167-.2273.4751-.5397.4751-.938-.0008-.331-.0974-.593-.2906-.7866zm-9.3815-.4332l-.698-.1599c-.1682-.0447-.2862-.0923-.3535-.143-.0669-.0506-.1006-.1207-.1006-.2101 0-.1232.0558-.2186.168-.2859.112-.0673.2664-.101.4627-.101.426 0 .858.1513 1.2955.4542l.3365-.841c-.2245-.1627-.4767-.2886-.757-.3784a2.8323 2.8323 0 0 0-.8663-.1347c-.348 0-.6576.0562-.9296.1683-.272.112-.4822.2665-.6306.4624-.1489.1964-.223.4237-.223.6814 0 .3254.0943.582.282.7696.1876.188.481.3267.8793.4165l.673.1517c.2075.0447.3488.0954.4248.1512.0756.0562.1137.1346.1137.2356 0 .1124-.0546.2007-.164.2648-.1092.0645-.2624.0966-.4584.0966-.2748 0-.5468-.042-.816-.1259-.2688-.0843-.5159-.2019-.7403-.3531l-.3362.8745c.2297.1628.5032.2875.82.3746.3167.0867.6659.1302 1.0471.1302.5551 0 .991-.1136 1.3081-.3408.3168-.2273.4751-.5397.4751-.938 0-.3305-.0966-.593-.2902-.7862-.1944-.194-.5012-.3381-.922-.4336zM9.823 9.9828c-.2918 0-.5539.059-.7863.1766-.2328.1176-.422.2886-.5677.5131v-.5887H7.2325v4.1301h1.27v-2.3133c0-.2803.08-.5048.24-.673.1595-.1683.3713-.2526.635-.2526.219 0 .3797.0645.4838.1936.1037.129.1556.3337.1556.614v2.431h1.27v-2.49c0-.5831-.1207-1.019-.3618-1.308-.2415-.2882-.6089-.4328-1.1022-.4328zM4.4334 8.4594l-.8176 1.9954 1.5381 3.7544h1.7262zm-.3726-.1873H2.4325L0 14.2091h1.6284z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/anta.svg b/assets/lib/simple-icons/icons/anta.svg
new file mode 100644
index 00000000..ba33997e
--- /dev/null
+++ b/assets/lib/simple-icons/icons/anta.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Anta</title><path d="M24 15.2372a20.744 20.744 0 0 0-9.86-7.5087 31.2657 31.2657 0 0 1 6.9097 1.0135l-1.5536-1.3192A29.1614 29.1614 0 0 0 9.0497 5.509a29.0797 29.0797 0 0 0-6.4051.7036L0 8.032c.335 0 .8376-.021 1.1747-.021a25.1537 25.1537 0 0 1 20.4571 10.48ZM9.1963 12.9758h3.3334l-.3329 1.183h-1.0532L9.9333 18.491H8.7692l1.206-4.3322H8.8655zm-3.771 0H6.468l.4376 2.9544.8229-2.9544h1.1977l-1.537 5.5152H6.221l-.4041-2.743-.7643 2.743H3.8841ZM0 18.491l2.8225-5.5131h1.181L3.769 18.491H2.5838l.0545-.7391H1.5264l-.3601.7391zm2.0206-1.8844h.6889l.2094-1.9474zm8.2122 1.8844 2.8288-5.5131h1.1768l-.2346 5.5131h-1.181l.0524-.7391h-1.1076l-.3644.7391zm2.0247-1.8844h.689l.2093-1.9474z"/></svg>
diff --git a/assets/lib/simple-icons/icons/antdesign.svg b/assets/lib/simple-icons/icons/antdesign.svg
new file mode 100644
index 00000000..db507a65
--- /dev/null
+++ b/assets/lib/simple-icons/icons/antdesign.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Ant Design</title><path d="M17.4511 6.6808c.5091-.5064.5091-1.3316 0-1.838l-1.8729-1.873.0027.0027c-.4957-.4957-1.3478-1.3478-2.5535-2.5508-.568-.5547-1.487-.5493-2.0498.0134L.426 10.9787a1.4426 1.4426 0 0 0 0 2.047l10.549 10.541a1.4506 1.4506 0 0 0 2.0497 0l4.4238-4.4211c.509-.5064.509-1.3317 0-1.8381a1.3049 1.3049 0 0 0-1.8408 0l-3.3493 3.3546c-.1393.1394-.3564.1394-.4957 0l-8.4268-8.4188c-.1394-.1393-.1394-.3563 0-.4956L11.76 3.3289c.0107-.0108.0241-.0188.0349-.0295.1393-.1099.3322-.0992.4608.0295l3.3547 3.352c.509.509 1.3343.509 1.8407 0zm-8.2446 5.375a2.8482 2.8456 0 1 0 5.6965 0 2.8482 2.8456 0 1 0-5.6965 0zm14.3672-1.0343l-3.293-3.277c-.5092-.5063-1.3344-.5063-1.8408.0028a1.2968 1.2968 0 0 0 0 1.838l2.2239 2.2213c.1393.1393.1393.3564 0 .4957l-2.1918 2.189a1.2968 1.2968 0 0 0 0 1.8382 1.3049 1.3049 0 0 0 1.8408 0l3.2635-3.2609a1.445 1.445 0 0 0-.0026-2.047Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/antena3.svg b/assets/lib/simple-icons/icons/antena3.svg
index 8d94a560..fca23a40 100644
--- a/assets/lib/simple-icons/icons/antena3.svg
+++ b/assets/lib/simple-icons/icons/antena3.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Antena 3 icon</title><path d="M12.997 10.755a7.222 7.222 0 00-.997-.083c-.111 0-.497.008-.998.083-2.919.438-4.948 2.08-6.201 4.695-.641 1.336-.357 2.255.8 3.166.068.054.137.106.205.158.213.143.423.28.627.414 3.026 1.975 4.133 2.676 4.58 2.881.186.085.512.244.962.255h.048c.45-.011.777-.17.963-.255.446-.205 1.553-.907 4.579-2.882.205-.134.415-.272.629-.415a22.7 22.7 0 00.203-.156c1.157-.911 1.441-1.83.8-3.166-1.251-2.614-3.281-4.257-6.2-4.695zm7.252 4.36c.637.774 1.205.834 1.843.387.85-.597 1.894-2.857 1.908-4.724-.05-5.112-5.337-8.666-10.648-9.093-.212-.02-.534-.026-.777.153-.247.182-.292.457-.113.812.305.603.708 1.147 1.092 1.7 1.928 2.77 3.56 5.72 5.298 8.607.442.734.85 1.492 1.397 2.157zM5.148 12.956c1.738-2.886 3.37-5.837 5.297-8.607.385-.553.787-1.097 1.092-1.7.18-.355.135-.63-.113-.812-.243-.18-.565-.173-.777-.153C5.337 2.112.05 5.665 0 10.778c.013 1.867 1.057 4.128 1.908 4.724.638.447 1.206.387 1.843-.388.546-.665.954-1.423 1.397-2.157Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Antena 3</title><path d="M12.997 10.755a7.222 7.222 0 00-.997-.083c-.111 0-.497.008-.998.083-2.919.438-4.948 2.08-6.201 4.695-.641 1.336-.357 2.255.8 3.166.068.054.137.106.205.158.213.143.423.28.627.414 3.026 1.975 4.133 2.676 4.58 2.881.186.085.512.244.962.255h.048c.45-.011.777-.17.963-.255.446-.205 1.553-.907 4.579-2.882.205-.134.415-.272.629-.415a22.7 22.7 0 00.203-.156c1.157-.911 1.441-1.83.8-3.166-1.251-2.614-3.281-4.257-6.2-4.695zm7.252 4.36c.637.774 1.205.834 1.843.387.85-.597 1.894-2.857 1.908-4.724-.05-5.112-5.337-8.666-10.648-9.093-.212-.02-.534-.026-.777.153-.247.182-.292.457-.113.812.305.603.708 1.147 1.092 1.7 1.928 2.77 3.56 5.72 5.298 8.607.442.734.85 1.492 1.397 2.157zM5.148 12.956c1.738-2.886 3.37-5.837 5.297-8.607.385-.553.787-1.097 1.092-1.7.18-.355.135-.63-.113-.812-.243-.18-.565-.173-.777-.153C5.337 2.112.05 5.665 0 10.778c.013 1.867 1.057 4.128 1.908 4.724.638.447 1.206.387 1.843-.388.546-.665.954-1.423 1.397-2.157Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/anydesk.svg b/assets/lib/simple-icons/icons/anydesk.svg
new file mode 100644
index 00000000..5fbdea8b
--- /dev/null
+++ b/assets/lib/simple-icons/icons/anydesk.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>AnyDesk</title><path d="M8.322 3.677L0 12l8.322 8.323L16.645 12zm7.371.01l-1.849 1.85 6.49 6.456-6.49 6.49 1.85 1.817L24 11.993Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/aol.svg b/assets/lib/simple-icons/icons/aol.svg
new file mode 100644
index 00000000..76f3180a
--- /dev/null
+++ b/assets/lib/simple-icons/icons/aol.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>AOL</title><path d="M13.07 9.334c2.526 0 3.74 1.997 3.74 3.706 0 1.709-1.214 3.706-3.74 3.706-2.527 0-3.74-1.997-3.74-3.706 0-1.709 1.213-3.706 3.74-3.706m0 5.465c.9 0 1.663-.741 1.663-1.759 0-1.018-.763-1.759-1.663-1.759s-1.664.741-1.664 1.759c0 1.018.764 1.76 1.664 1.76m4.913-7.546h2.104v9.298h-2.104zm4.618 6.567a1.398 1.398 0 1 0 .002 2.796 1.398 1.398 0 0 0-.002-2.796M5.536 7.254H3.662L0 16.55h2.482l.49-1.343h3.23l.452 1.343H9.16zm-1.91 6.068L4.6 10.08l.974 3.242H3.626z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/apache.svg b/assets/lib/simple-icons/icons/apache.svg
index cebe6056..1b3f05fa 100644
--- a/assets/lib/simple-icons/icons/apache.svg
+++ b/assets/lib/simple-icons/icons/apache.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Apache icon</title><path d="M15.826 0a.776.776 0 0 0-.404.114c-.376.222-1.002.851-1.748 1.763l-.156.192c-.198.246-.403.512-.614.793a38.775 38.775 0 0 0-2.016 2.971l-.022.036-.044.072a40.932 40.932 0 0 0-1.709 3.081 25.602 25.602 0 0 0-1.1 2.557c-.091.251-.174.493-.25.726-.062.199-.122.398-.178.596-.133.467-.248.934-.342 1.398l.001.002-.013.061a14 14 0 0 0-.233 1.692l-.005.059c-.28-.449-1.029-.886-1.028-.882.537.778.944 1.55 1.004 2.308-.287.059-.681-.026-1.136-.194.474.436.83.556.969.588-.436.027-.889.327-1.346.671.668-.273 1.208-.38 1.595-.293a131.873 131.873 0 0 0-1.843 5.688.535.535 0 0 0 .364-.354c.11-.369.837-2.786 1.977-5.964l.098-.273.028-.076c.12-.333.245-.673.374-1.02l.089-.237.002-.005-.604-1.193.604 1.192c.119-.317.24-.638.365-.963l.052-.136.053-.137.041-.104-.041.105-.053.136-.052.136c-.125.325-.246.646-.365.963l.106.208.094-.01.01-.028c.153-.417.304-.824.454-1.22l.005-.014a103.604 103.604 0 0 0-.458 1.234l-.01.028-.067.183c-.118.325-.237.655-.356.993l-.005.015-.051.143c-.08.228-.15.433-.309.899.263.12.474.436.674.794a1.44 1.44 0 0 0-.466-.989c1.296.058 2.413-.269 2.991-1.217.052-.085.099-.173.141-.268-.262.333-.588.474-1.2.439.902-.404 1.354-.791 1.754-1.433a6.71 6.71 0 0 0 .281-.503c-.789.81-1.702 1.04-2.665.865h-.002l-.041-.007c.863-.107 2.01-.752 2.752-1.548.342-.367.652-.8.939-1.306.214-.377.414-.795.605-1.258.167-.404.327-.842.482-1.317a2.65 2.65 0 0 1-.81.261 4.998 4.998 0 0 1-.138.022l.002-.001.003-.001c.045-.007.089-.013.133-.021.045-.008.09-.016.134-.026l-.133.024-.132.023c.802-.31 1.308-.907 1.676-1.637a2.877 2.877 0 0 1-.968.424 3.217 3.217 0 0 1-.171.031l-.043.006.001-.001.009-.001.032-.005a2.887 2.887 0 0 0 .157-.029l.014-.003-.016.003-.194.033c.278-.117.513-.247.717-.401a2.858 2.858 0 0 0 .411-.391c.08-.095.155-.198.225-.31l.064-.104.077-.152a9.024 9.024 0 0 0 .368-.851l.031-.088c.028-.085.052-.161.07-.227.027-.099.044-.178.053-.236a.731.731 0 0 1-.094.064c-.243.145-.66.277-.996.339l-.099.011-.001.001-2.267.249-.012.024-.077.158-.235.488-.044.093.044-.093c.079-.166.157-.329.235-.488l.077-.158c.004-.009.009-.017.012-.026l-.084.009-.067-.132a54.24 54.24 0 0 0-.378.763l-.204.424a72.02 72.02 0 0 0-1.092 2.406 102.271 102.271 0 0 0-1.081 2.603l.086-.216a99.75 99.75 0 0 1 .995-2.387 73.112 73.112 0 0 1 1.092-2.407l.204-.424c.118-.244.237-.485.358-.724l.02-.038c.191-.378.384-.75.579-1.116.208-.39.42-.771.633-1.141a33.1 33.1 0 0 1 .672-1.119l.04-.064c.224-.354.45-.695.677-1.021a16.736 16.736 0 0 1 1.522-1.899l-.058.062c-.16.176-.644.741-1.375 1.863.704-.035 1.785-.179 2.667-.33.262-1.47-.257-2.142-.257-2.142S16.418.007 15.83.001zm-1.648 7.507c.66-.304.956-.579 1.242-.976.076-.11.153-.224.229-.343.233-.363.461-.764.665-1.162.197-.384.371-.765.504-1.109a5.76 5.76 0 0 0 .2-.6c.041-.157.074-.307.099-.449-.883.15-1.964.295-2.668.329a29.873 29.873 0 0 0-.696 1.122c-.204.345-.422.723-.65 1.137a50.238 50.238 0 0 0-1.193 2.299l2.267-.249zm3.628-5.309v.066h.156v.439h.072v-.439h.157v-.066h-.384zm.463 0v.506h.066v-.401l.172.348h.046l.172-.348v.401h.066v-.506h-.087l-.174.353-.175-.353h-.087zm-4.008 5.301l-.102.016.001-.001.1-.016zm-.09.012l-.005.002.005-.002zm-2.74 1.242l-.106.227-.133.287a77.678 77.678 0 0 0-.921 2.085 93.883 93.883 0 0 0-.999 2.446c-.148.378-.298.765-.449 1.163l-.005.014a77.678 77.678 0 0 1 2.374-5.709l.133-.287.106-.226z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Apache</title><path d="M17.805 2.197v.066h.156v.44h.072v-.44h.156v-.066zm.9 0l-.175.353-.172-.353h-.087v.506h.067V2.3l.172.35h.045l.172-.35v.404h.066v-.506zm-4.257 1c-.204.31-.424.66-.66 1.06l-.04.062a44.457 44.457 0 00-1.265 2.29c-.187.36-.38.742-.577 1.146l2.267-.25c.66-.302.955-.578 1.242-.976a15.5 15.5 0 00.23-.342c.23-.363.46-.763.663-1.16.197-.386.37-.767.505-1.11.083-.22.15-.422.198-.6.042-.158.074-.307.1-.45-.884.15-1.965.295-2.668.33zM11.894 7.78l-.077.16c-.078.16-.157.32-.236.488-.086.18-.172.364-.26.552l-.132.287a75.265 75.265 0 00-1.427 3.3c-.163.397-.327.807-.493 1.23-.15.38-.297.765-.45 1.164l-.02.06c-.15.396-.3.802-.453 1.22l-.01.027.72-.08a.213.213 0 01-.042-.006c.863-.106 2.01-.75 2.75-1.547.342-.367.652-.8.94-1.306.213-.377.413-.795.604-1.258.168-.405.328-.843.48-1.318-.196.105-.423.18-.673.235a2.184 2.184 0 01-.273.046c.806-.31 1.314-.905 1.683-1.64a2.816 2.816 0 01-.968.428c-.06.012-.116.022-.174.03l-.043.006h.002c.278-.118.514-.248.718-.403a2.571 2.571 0 00.637-.698l.063-.104.077-.154a8.107 8.107 0 00.367-.85l.03-.088a3.04 3.04 0 00.123-.463.733.733 0 01-.094.065c-.243.145-.66.277-.996.34l.663-.074-.664.073h-.017l-.1.017c.006-.003.01-.006.017-.008l-2.265.25-.013.022zM8.27 16.45c-.117.323-.236.654-.355.992l-.005.015c-.016.046-.032.094-.05.142-.08.227-.15.432-.31.9.264.12.475.435.675.793a1.44 1.44 0 00-.466-.99c1.293.06 2.41-.27 2.99-1.217.05-.084.096-.173.14-.268-.26.333-.59.474-1.2.44 0 0-.004 0-.005.002l.004-.002c.9-.404 1.354-.79 1.754-1.433.094-.153.186-.32.28-.503-.788.81-1.702 1.04-2.664.865l-.72.078a6.43 6.43 0 00-.067.183zM15.42.112c-.376.222-1 .85-1.748 1.763l.686 1.294c.48-.687.97-1.307 1.462-1.836l.058-.062c-.02.02-.04.04-.057.062-.16.176-.644.74-1.375 1.863.703-.035 1.784-.18 2.666-.33.262-1.47-.258-2.142-.258-2.142s-.66-1.07-1.436-.61zm-3.084 6.402a40.253 40.253 0 011.306-2.26l.04-.064c.224-.352.45-.693.677-1.02l-.685-1.293-.157.192c-.197.245-.403.51-.613.79a39.853 39.853 0 00-2.016 2.97l-.022.038.893 1.763c.19-.378.38-.752.575-1.118zm-3.73 8.32c.158-.406.319-.81.483-1.225.156-.394.32-.79.484-1.19a91.133 91.133 0 011.6-3.604l.205-.424c.12-.243.237-.485.36-.724a.125.125 0 01.02-.04l-.895-1.763-.044.07c-.207.34-.414.687-.617 1.042a38.056 38.056 0 00-1.092 2.04l-.094.193a24.573 24.573 0 00-1.258 3.087 18.492 18.492 0 00-.52 1.997l.896 1.77c.117-.317.24-.638.364-.963zm-1.376-.476a13.38 13.38 0 00-.234 1.692c0 .02-.004.04-.005.06-.28-.45-1.03-.888-1.026-.884.537.778.944 1.55 1.005 2.31-.29.058-.684-.027-1.14-.195.475.436.83.556.97.588-.434.03-.89.328-1.346.67.668-.27 1.21-.38 1.596-.29-.61 1.74-1.23 3.655-1.843 5.69a.538.538 0 00.364-.354c.11-.368.84-2.786 1.978-5.965l.097-.27.028-.078c.12-.332.246-.672.374-1.02l.09-.237v-.004L7.24 14.3c-.003.02-.01.04-.012.06z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/apacheairflow.svg b/assets/lib/simple-icons/icons/apacheairflow.svg
index b9198779..8cc4ad0c 100644
--- a/assets/lib/simple-icons/icons/apacheairflow.svg
+++ b/assets/lib/simple-icons/icons/apacheairflow.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Apache Airflow icon</title><path d="M12.033 10.713c-.691 0-1.263.564-1.263 1.255 0 .69.572 1.262 1.263 1.262a1.258 1.258 0 000-2.517zm0 .797c.258 0 .457.2.457.458s-.2.458-.457.458c-.259 0-.458-.2-.458-.458s.199-.458.458-.458zM.65.001C.577.001.544.013.3.041.053.07-.027.364.03.673c.055.31.072.205.196.384.124.18 4.228 4.144 6.352 6.216l-3.625 3.72-.133.133-.007.008c-1.25 1.282-1.91 3.251-2.296 5.433C.13 18.748.03 21.161 0 23.35a.63.63 0 00.554.62.757.757 0 00.118 0 .608.608 0 00.384-.184h.007l6.209-6.37c4.021 3.721 4.12 5.08 9.294 6.067 2.182.386 4.595.487 6.784.517a.626.626 0 00.62-.546l.008-.008a.746.746 0 00-.008-.133.621.621 0 00-.177-.37v-.008l-6.378-6.208L21.047 13c.046-.043.089-.088.133-.133l.007-.008c1.25-1.281 1.918-3.244 2.304-5.426.385-2.182.479-4.595.509-6.783a.627.627 0 00-.546-.62L23.446.02a.668.668 0 00-.133.008.608.608 0 00-.369.178h-.007l-6.209 6.37-3.72-3.624-.133-.133-.008-.008C11.586 1.562 9.617.894 7.434.509 5.18.26 2.917.034.65 0zm.48.835c2.039.038 4.213.12 6.164.465 2.105.372 3.927 1.03 5.012 2.089h.008l.103.11c.023.023.049.053.074.082.002.003.005.004.007.008l.008.008.015.015c0 .002-.002.008 0 .008.002.003.005.004.007.008.128.176.354.52.42.664.049.101.093.208.134.325.179.519.268 1.166.206 1.985v.008c-.014.181-.038.37-.066.569-.014.095-.033.2-.052.31a10.753 10.753 0 01-.14.642c-.028.115-.056.232-.089.347v.008c-.13.468-.3.976-.51 1.52-.052.138-.103.272-.161.414-.046.111-.099.225-.148.34l-.258.051c-.875-1.655-1.831-2.8-2.688-3.455-.432-.33-.837-.54-1.225-.627h-.007c-.387-.084-.8-.027-1.07.251l.038.075.32-.239zm22.036.288c-.038 2.04-.12 4.218-.465 6.17-.372 2.105-1.031 3.928-2.09 5.013l-.11.103c-.03.026-.062.059-.096.088l-.015.016h-.007c-.174.126-.527.36-.672.428-.101.047-.21.1-.325.14h-.007c-.516.177-1.166.26-1.979.2-.183-.016-.375-.031-.576-.06l-.302-.052h-.008a10.905 10.905 0 01-.642-.14h-.007c-.117-.03-.234-.065-.347-.096a16.097 16.097 0 01-1.521-.502c-.136-.052-.279-.111-.421-.17a20.905 20.905 0 01-.317-.132c.009-.063-.079.096 0 0a.666.666 0 00-.052-.288c1.638-.87 2.78-1.814 3.433-2.665.331-.433.548-.844.635-1.233.087-.386.027-.806-.251-1.077l.007.008.11.351zM13.9 4.947l2.532 2.466.015.015.015.015c.038.038.078.11.03.332-.022.095-.146.264-.207.391-.082.166-.116.3-.274.502-.546.7-1.616 1.566-3.137 2.377.046-.107.09-.213.133-.317.06-.147.115-.294.17-.436.218-.568.4-1.103.538-1.602a11.804 11.804 0 00.244-1.063V7.62c.019-.107.043-.212.059-.324a8.97 8.97 0 00.067-.628c.05-.677-.07-1.196-.185-1.72zM7.774 7.51c1.592.72 2.634 2.424 3.277 3.617-.108-.047-.217-.089-.324-.133-.147-.06-.294-.115-.436-.17a17.265 17.265 0 00-1.595-.539H8.69c-.125-.034-.244-.067-.362-.096-.24-.059-.476-.106-.701-.148-.108-.018-.22-.034-.332-.051V9.98a10.394 10.394 0 00-.628-.067c-.68-.051-1.202.069-1.727.185l2.473-2.532.03-.03c.036-.039.11-.08.332-.03zm-1.167 3.203c.18.012.368.038.569.067h.007c.096.015.194.034.303.052.205.038.418.085.642.14l.177.044c.057.015.113.027.17.044h.007c.47.13.974.299 1.521.51.137.053.28.104.42.162.12.049.24.103.363.155l.014.266c-1.64.87-2.787 1.82-3.44 2.672-.332.433-.548.837-.635 1.225v.008c-.087.387-.027.8.251 1.07H6.97l-.188-.335-5.94 6.071c.04-2.037.114-4.208.458-6.156.372-2.105 1.031-3.928 2.09-5.012v-.008c.024-.027.053-.048.08-.074l.03-.03a1.788 1.788 0 01.089-.081h.007c.006-.004.01-.012.015-.016.171-.125.533-.367.68-.435a3.658 3.658 0 01.331-.133c.519-.18 1.166-.269 1.986-.207zm5.153.2c-.415.132-.698.42-.834.834l.44-.49zm.546.03l.18.323.146.095.405.313c-.148-.348-.372-.603-.73-.73zm-.288.517c.312 0 .554.242.554.553a.547.547 0 01-.554.554.547.547 0 01-.553-.554c0-.31.242-.554.554-.554zm-1.048.863c.14.363.381.61.746.746l-.241-.276-.203-.234zm2.06.038l-.282.116-.062.178-.284.327c.29-.142.498-.324.628-.62zm-.074.51c.106.045.213.096.318.14.147.06.292.115.435.17.566.217 1.098.394 1.595.53.128.039.253.067.369.097.24.059.476.114.701.155.107.019.22.034.332.051.216.03.426.058.628.074.68.052 1.202-.068 1.727-.184l-2.473 2.532-.015.015-.014.015c-.037.038-.115.074-.325.03h-.008c-.216-.05-.531-.204-.893-.487-.7-.547-1.567-1.618-2.377-3.137zm-1.83.088l-.134.317c-.06.147-.115.294-.17.436a17.065 17.065 0 00-.531 1.594c-.036.128-.067.251-.096.37-.06.24-.114.475-.155.7a12.379 12.379 0 00-.052.333 9.86 9.86 0 00-.073.628c-.052.68.068 1.202.184 1.727L7.567 16.59l-.015-.023-.015-.008v-.008c-.04-.04-.078-.101-.03-.317.002-.004 0-.002 0-.008.05-.216.206-.532.488-.893.546-.7 1.613-1.567 3.13-2.377zm1.04.258c.866 1.626 1.81 2.776 2.658 3.426.433.332.836.548 1.225.634h.008c.387.085.799.027 1.07-.25l-.035-.071-.304.27 6.09 5.942c-2.04-.04-4.22-.122-6.172-.467-2.105-.372-3.928-1.03-5.012-2.089h-.008l-.022-.023-.03-.03c-.008-.008-.013-.019-.022-.03l-.03-.03c-.023-.027-.053-.057-.08-.089v-.008c-.003-.004-.012-.01-.015-.015a6.316 6.316 0 01-.436-.679 3.49 3.49 0 01-.133-.332c-.18-.519-.269-1.166-.206-1.986.013-.18.037-.368.066-.568v-.008c.014-.094.033-.196.052-.303.037-.205.085-.419.14-.642v-.008l.044-.17.045-.17v-.008c.13-.47.298-.973.51-1.52.052-.137.111-.28.169-.42.047-.115.097-.231.148-.348l.28-.015z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Apache Airflow</title><path d="M17.195 16.822l4.002-4.102C23.55 10.308 23.934 5.154 24 .43a.396.396 0 0 0-.246-.373.392.392 0 0 0-.437.09l-6.495 6.658-4.102-4.003C10.309.45 5.154.066.43 0H.423a.397.397 0 0 0-.277.683l6.658 6.494-4.003 4.103C.45 13.692.065 18.846 0 23.57a.398.398 0 0 0 .683.282l6.494-6.657 3.934 3.837.17.165c2.41 2.353 7.565 2.737 12.288 2.803h.006a.397.397 0 0 0 .277-.683l-6.657-6.495zm-.409-9.476c.04.115.05.24.031.344-.17.96-1.593 2.538-4.304 3.87a.597.597 0 0 0-.08-.079c1.432-3.155 1.828-5.61 1.175-7.322l3.058 2.984.12.203zm-.131 9.44a.73.73 0 0 1-.347.031c-.96-.171-2.537-1.594-3.87-4.307a.656.656 0 0 0 .08-.078l-.001.001c3.155 1.432 5.61 1.83 7.324 1.174l-2.969 3.043M23.568.392a.05.05 0 0 1 .052-.011c.018.006.03.024.029.043-.065 4.655-.437 9.726-2.703 12.05-1.53 1.565-4.326 1.419-8.283-.377.006-.037.021-.07.02-.108 0-.044-.017-.082-.026-.123 2.83-1.39 4.315-3.037 4.506-4.115.057-.322-.009-.542-.102-.688l6.507-6.67V.392zM.393.43A.045.045 0 0 1 .382.38C.39.36.403.343.425.35c4.655.065 9.727.438 12.05 2.703l.002.002c1.56 1.527 1.415 4.323-.379 8.28-.033-.005-.062-.02-.097-.02h-.008c-.045.001-.084.019-.126.027-1.39-2.83-3.037-4.314-4.115-4.506-.323-.057-.542.01-.688.103L.393.43zm11.94 11.563a.331.331 0 0 1-.327.335H12a.332.332 0 0 1-.004-.661c.172.016.333.144.335.326h.002zm-5.12 4.661a.722.722 0 0 1-.03-.345c.17-.96 1.595-2.54 4.309-3.873.013.016.019.035.033.05.013.012.03.017.044.028-1.434 3.158-1.83 5.613-1.177 7.326l-3.041-2.967m-.006-9.659a.735.735 0 0 1 .345-.031c.961.17 2.54 1.594 3.871 4.306a.597.597 0 0 0-.079.08c-2.167-.983-4.007-1.484-5.498-1.484-.68 0-1.289.103-1.825.308L7.128 7.35M.43 23.607c-.018.018-.038.015-.052.01-.019-.007-.028-.021-.028-.043.065-4.654.437-9.725 2.703-12.049 1.527-1.565 4.325-1.419 8.286.378-.006.035-.02.067-.02.104 0 .043.018.083.026.124-2.831 1.391-4.317 3.04-4.51 4.117-.057.322.01.542.103.688L.43 23.607zm23.144.042c-4.655-.065-9.726-.437-12.05-2.703l-.005-.006c-1.56-1.526-1.412-4.322.383-8.279.033.005.064.02.098.02h.009c.043 0 .08-.018.122-.027 1.39 2.832 3.036 4.317 4.115 4.51.083.014.16.021.23.021a.776.776 0 0 0 .45-.133l6.68 6.516c.02.02.016.04.01.052a.042.042 0 0 1-.042.029z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/apacheant.svg b/assets/lib/simple-icons/icons/apacheant.svg
index c74ebcb9..e7ecb5f0 100644
--- a/assets/lib/simple-icons/icons/apacheant.svg
+++ b/assets/lib/simple-icons/icons/apacheant.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Apache Ant icon</title><path d="M6.802,11.885l-0.031,0.039c-0.063-0.008-0.127-0.014-0.19-0.02l0.764-0.64 C7.231,11.43,6.802,11.885,6.802,11.885z M8.543,10.385c0.388-0.228,0.696-0.402,0.696-0.402s0.057-0.01,0.127-0.01 c0.07,0,0.154,0.01,0.207,0.05c0.107,0.08,0.161,0.616,0.214,1.125c0.053,0.508-0.188,1.406-0.188,1.406l0.134,0.053 c0.134,0.054,0.134,0.576,0,0.656c-0.11,0.066-0.102,0.204-0.074,0.326c0.052,0.054,0.12,0.108,0.177,0.163 c0.018-0.012,0.034-0.023,0.044-0.034c0.08-0.081,0.067-0.187,0.161-0.469c0.047-0.141,0.209-0.262,0.386-0.36 c-0.046-0.388-0.069-1.381-0.091-1.448c-0.027-0.081-0.107-0.188-0.107-0.388c0-0.201,0.12-0.389,0.254-0.455 c0.134-0.067,0.214,0.054,0.255,0.214c0.033,0.13,0.1,1.395,0.125,1.877c0.013-0.005,0.025-0.011,0.036-0.015 c0.178-0.078,0.338-0.008,0.417,0.072c0.053-0.039,0.094-0.111,0.119-0.22c0.04-0.174,1.031-0.87,1.205-1.018 c0.051-0.043,0.144-0.071,0.26-0.073c0.139-0.159,0.344-0.379,0.49-0.476c0.241-0.161,0.482-0.161,0.482-0.161 s0.067,0.08,0.295,0.348c0.081,0.094,0.165,0.228,0.24,0.361c0.092-0.228,0.26-0.461,0.618-0.495 c0.381-0.037,1.299,0.254,1.526,0.442c0.227,0.188,0.589,0.576,0.804,0.763c0,0,0.429,0.415,0.495,0.455 c0.005,0.003,0.01,0.007,0.015,0.01c0.04-0.051,0.146-0.051,0.146-0.051c0.038-0.032,0.161-0.106,0.302-0.188l-3.24-7.59h-0.086 l-7.134,5.981C8.086,10.671,8.352,10.497,8.543,10.385z M3.817,17.421h10.291c-0.051-0.064-0.109-0.141-0.154-0.193 c-0.201-0.228-0.764-1.179-0.871-1.406c-0.107-0.228-0.348-0.495-0.469-0.388c-0.121,0.107-0.629,0.348-0.817,0.294 c-0.188-0.054-0.174-0.308-0.174-0.308s-0.094-0.147-0.228-0.147c-0.134,0-0.362-0.214-0.402-0.549 c-0.014-0.12-0.014-0.21-0.003-0.281c-0.159,0.051-0.319,0.04-0.319,0.04s-0.007,0.006-0.018,0.017 c0.068,0.054,0.112,0.132,0.112,0.224c0,0.214-0.08,0.375-0.268,0.496c-0.187,0.121-0.241-0.081-0.375,0.04 c-0.134,0.12-0.417,0.242-0.482,0.08c-0.027-0.067-0.147-0.027-0.281-0.04c-0.134-0.013-0.121-0.134-0.121-0.134 s-0.268-0.241-0.469-0.536c-0.201-0.295-0.428-0.79-0.428-1.018c0-0.227-0.214-0.161-0.348-0.134 c-0.043,0.009-0.162,0.093-0.312,0.211c-0.078,0.206-0.222,0.455-0.384,0.687c-0.281,0.402-0.857,0.857-1.218,1.004 c-0.055,0.023-0.115,0.035-0.18,0.04c-0.059,0.067-0.132,0.118-0.214,0.157c-0.122,0.225-1.241,1.344-1.307,1.436 C4.34,17.068,4.069,17.249,3.817,17.421z M4.298,16.813c0.153-0.153,0.555-0.683,0.884-1.111c-0.132,0.014-0.252,0.017-0.334,0.026 c-0.375,0.04-0.616-0.107-0.616-0.107c-0.31-0.665-0.325-1.18-0.24-1.546L0,17.421h3.621C3.936,17.148,4.21,16.901,4.298,16.813z M18.078,12.916c-0.026,0.022-0.06,0.019-0.093,0.003c0.002,0.077,0.013,0.171,0.013,0.171c0.107,0.148,0.227,0.737,0.201,1.004 c-0.023,0.229-0.085,0.399-0.102,0.443c0.012,0.048,0.024,0.092,0.036,0.133c0.067,0.228,0.053,0.268,0.094,0.268 c0.041,0,0.147,0.107,0.228,0.147c0.08,0.041,0.737,0.362,0.991,0.563c0.254,0.201,0.415,0.562,0.522,1.018 c0.107,0.455-0.013,0.469-0.12,0.455c-0.107-0.014-0.321-0.375-0.348-0.71c-0.027-0.335-0.308-0.696-0.509-0.884 c-0.201-0.188-0.75-0.268-0.83-0.308c-0.08-0.04-0.054-0.094-0.054-0.094s-0.08-0.067-0.134-0.161 c-0.011-0.019-0.027-0.056-0.045-0.103c-0.027,0.044-0.094,0.103-0.264,0.103c-0.268,0-0.911-0.201-1.286-0.321 c-0.258-0.083-0.679-0.248-0.953-0.365c0.208,0.51,0.747,1.465,0.771,1.517c0.028,0.061,0.258,0.138,0.409,0.199 c0.151,0.06,0.187,0.589,0.33,0.688c0.143,0.1,0.786,0.103,1.061,0.162c0.275,0.06,0.27,0.209,0.161,0.268 c-0.108,0.058-1.055-0.188-1.294-0.226c-0.238-0.038-0.339-0.266-0.436-0.451c-0.097-0.185-0.127-0.302-0.292-0.296 c-0.166,0.005-0.162-0.199-0.342-0.129c-0.18,0.07-0.134-0.139-0.41-0.637c-0.275-0.498-0.437-1.082-0.515-1.099 c-0.079-0.017-0.308,0.029-0.432,0.098c-0.124,0.069-0.824,0.451-0.982,0.609c-0.158,0.157-0.909-0.17-1.086-0.236 s-0.297-0.339-0.292-0.488c0.001-0.026,0.017-0.066,0.044-0.114c-0.052-0.001-0.093-0.004-0.121-0.008 c-0.188-0.027-0.174,0.04-0.227,0.188c-0.026,0.071-0.08,0.108-0.142,0.116c0.057,0.119,0.096,0.245,0.115,0.326 c0.054,0.227-0.054,0.388,0.04,0.455c0.094,0.067,0.174,0.121,0.361-0.04c0.187-0.161,0.522-0.241,0.79-0.174 c0.268,0.067,0.884,1.285,1.071,1.701c0.127,0.282,0.246,0.559,0.312,0.715h6.117l-2.048-4.797 C18.236,12.749,18.128,12.874,18.078,12.916z M9.264,10.178c-0.031,0-0.068,0.012-0.105,0.033c-0.12,0.067-0.991,0.938-1.218,1.098 c-0.228,0.161-0.549,0.187-0.549,0.187l-0.426,0.458c0.27,0.047,0.502,0.109,0.6,0.158c0.107,0.054,0.161,0.155,0.188,0.251 c0.074-0.012,0.279-0.049,0.387-0.103c0.134-0.067,0.509-0.214,0.71-0.08c0.201,0.134,0.04,0.67,0.094,0.683 c0.018,0.005,0.057,0.01,0.106,0.019c-0.019-0.131,0.148-0.247,0.148-0.247s-0.027-0.629-0.013-0.937 c0.013-0.308,0.147-1.125,0.174-1.326C9.378,10.234,9.333,10.178,9.264,10.178L9.264,10.178z M13.804,11.069 c-0.057,0-0.128,0.046-0.199,0.146c-0.087,0.122-0.14,0.255-0.188,0.362c0.13,0.075,0.257,0.183,0.368,0.333 c0.058-0.029,0.152-0.05,0.279-0.075c-0.054-0.246-0.126-0.572-0.151-0.66C13.894,11.106,13.855,11.07,13.804,11.069L13.804,11.069z M13.931,12.819c-0.116,0.25-0.343,0.483-0.541,0.78c-0.018,0.027-0.038,0.053-0.058,0.078c-0.016,0.118-0.103,0.252-0.219,0.34 c-0.295,0.223-0.636,0.341-0.509,0.383c0.128,0.041,0.296-0.1,0.497-0.207c0.201-0.107,1.291-0.327,1.291-0.327 c0.068-0.019,0.155-0.039,0.249-0.053c-0.159-0.119-0.306-0.249-0.368-0.361c-0.088-0.161-0.205-0.359-0.216-0.611 C14.017,12.838,13.973,12.83,13.931,12.819L13.931,12.819z M16.045,13.068c-0.173-0.001-0.413,0.203-0.142,0.571 c0.285,0.385,0.402,0.351,0.502,0.251c0.1-0.101,0.067-0.368-0.067-0.569c-0.134-0.201-0.134-0.234-0.268-0.251 C16.062,13.068,16.054,13.068,16.045,13.068L16.045,13.068z M7.703,13.082c-0.006,0.1-0.002,0.191,0.023,0.25 c0.015,0.035,0.019,0.079,0.015,0.13c0.099-0.074,0.189-0.147,0.284-0.193C7.904,13.206,7.769,13.123,7.703,13.082L7.703,13.082z M8.985,13.907c0.134,0.496,0.455,1.031,0.455,1.031s0.094,0.054,0.174-0.053c0.049-0.065,0.206-0.174,0.372-0.271 c-0.04-0.035-0.064-0.064-0.064-0.064s-0.174,0.094-0.375,0.027c-0.165-0.055-0.149-0.138-0.093-0.315 c-0.077-0.108-0.152-0.332-0.242-0.422c-0.076-0.076-0.174-0.077-0.28-0.099C8.951,13.791,8.968,13.846,8.985,13.907z M6.581,11.904 c-0.281-0.026-0.556-0.025-0.73,0.035c-0.429,0.147-1.352,0.696-1.5,1.031C4.23,13.245,4.1,13.484,4.088,13.784 c-0.039,0.082-0.071,0.182-0.097,0.291L6.581,11.904z M7.852,10.838c-0.24,0.172-0.446,0.336-0.501,0.417 c-0.001,0.002-0.005,0.006-0.006,0.008L7.852,10.838z M15.763,18.894c-0.268-0.094-0.616-0.321-0.656-0.388 c-0.04-0.067-0.161-0.12-0.161-0.12s-0.359-0.421-0.573-0.836c0,0-0.023-0.055-0.054-0.128h-0.211 c0.176,0.22,0.372,0.482,0.569,0.731c0.255,0.321,0.109,0.354,0.189,0.354c0.08,0,0.027,0.054,0.094,0.121 c0.067,0.067,0.429,0.281,0.522,0.348c0.094,0.067,0.482,0.201,0.535,0.161c0.054-0.04,0.08-0.174,0.08-0.174 S16.031,18.988,15.763,18.894z M23.85,13.603c0,0-0.308-0.312-0.576-0.433c-0.268-0.121-0.255-0.241-0.415-0.254 c-0.161-0.013-0.455-0.067-0.696-0.174c-0.241-0.107-0.924-0.388-1.218-0.549c-0.295-0.161-0.482-0.281-0.563-0.348 c-0.08-0.067-0.214-0.058-0.469-0.018c0,0-0.723,0.165-0.978,0.285c-0.152,0.072-0.412,0.213-0.623,0.335l0.076,0.177 c0.091-0.075,0.194-0.149,0.319-0.204c0.335-0.148,0.656-0.281,1.031-0.308c0.375-0.027,0.429-0.053,0.429-0.053 s0.174-0.027,0.375,0.08c0.201,0.107,1.393,0.71,1.567,0.777c0.174,0.067,0.442,0.188,0.63,0.335 c0.187,0.147,0.334,0.134,0.334,0.134s0.134,0.148,0.335,0.281c0.201,0.134,0.268,0.201,0.388,0.228 C23.916,13.92,24.158,14.045,23.85,13.603z M3.621,17.421c-0.499,0.432-1.104,0.931-1.252,0.972 c-0.241,0.067-0.321,0.04-0.121,0.147c0.201,0.107,0.558,0.027,0.687-0.161c0.129-0.187,0.304-0.495,0.451-0.642 c0.063-0.063,0.241-0.187,0.429-0.316H3.621z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Apache Ant</title><path d="M4.006 17.292c-.245.167-.534.36-.618.445-.148.147-.322.455-.452.643-.129.187-.486.268-.687.16-.2-.107-.12-.08.12-.147.163-.045.882-.646 1.401-1.101h.236zm2.434-5.4c-.23-.013-.444-.003-.589.047-.428.147-1.352.696-1.5 1.03-.12.276-.25.515-.263.815a1.386 1.386 0 0 0-.05.122l2.402-2.014zm17.41 1.711s-.309-.312-.576-.432c-.268-.121-.255-.242-.415-.255a2.398 2.398 0 0 1-.697-.174c-.24-.107-.923-.388-1.218-.549a4.102 4.102 0 0 1-.563-.348c-.08-.067-.214-.058-.468-.018 0 0-.724.165-.978.285-.14.067-.378.194-.579.309l.072.167c.08-.062.174-.121.28-.167.334-.148.655-.282 1.03-.309.375-.026.429-.053.429-.053s.174-.027.375.08c.2.107 1.393.71 1.567.777.174.067.442.188.63.335.186.147.334.134.334.134s.134.147.335.281c.2.134.267.2.388.228.12.026.362.151.054-.29zm-8.087 5.291c-.268-.093-.616-.32-.657-.388-.04-.067-.16-.12-.16-.12s-.359-.421-.573-.836c0 0-.043-.104-.11-.258h-.255c.193.23.436.567.668.86.255.322.11.354.19.354s.026.054.093.12c.067.068.429.282.523.349.093.067.482.2.535.16.054-.04.08-.173.08-.173s-.067.026-.334-.068zm-2.43-5.217a1.1 1.1 0 0 0 .058-.078c.197-.296.425-.53.54-.78.042.011.086.02.128.022.01.251.127.45.216.61.06.113.208.243.367.362a2.133 2.133 0 0 0-.249.053s-1.089.22-1.29.327c-.202.107-.37.248-.498.207-.128-.042.213-.16.509-.383a.562.562 0 0 0 .219-.34m.73-1.842a1.235 1.235 0 0 0-.279.075 1.198 1.198 0 0 0-.367-.333c.048-.107.101-.24.188-.362.134-.187.268-.187.308-.04.025.089.097.415.15.66m2.007 1.235c.134.016.134.05.268.25.134.201.167.469.067.57-.1.1-.218.133-.502-.252-.285-.385-.006-.59.167-.568m-7.527-2.685a9.952 9.952 0 0 0-.688.452l7.131-5.98h.086l3.24 7.59a2.985 2.985 0 0 0-.301.188s-.106 0-.146.05l-.015-.01c-.067-.04-.495-.455-.495-.455-.215-.188-.577-.576-.804-.764-.228-.187-1.145-.478-1.526-.441-.358.034-.526.267-.618.495a2.4 2.4 0 0 0-.24-.361l-.294-.349s-.241 0-.482.161c-.146.097-.351.318-.49.476a.432.432 0 0 0-.26.073c-.174.147-1.165.844-1.205 1.018-.025.108-.066.18-.119.22a.374.374 0 0 0-.417-.073l-.036.016c-.025-.483-.092-1.748-.125-1.877-.04-.16-.12-.281-.254-.214-.134.066-.255.254-.255.455 0 .2.08.308.108.388.022.067.044 1.06.09 1.448-.176.098-.338.219-.385.36-.094.281-.08.388-.16.469a.288.288 0 0 1-.045.033c-.058-.055-.125-.11-.177-.163-.028-.122-.036-.26.074-.325.134-.081.134-.603 0-.657l-.134-.053s.241-.898.188-1.406c-.054-.51-.108-1.045-.215-1.126-.107-.08-.335-.04-.335-.04s-.307.174-.696.402m2.852 4.888c.135 0 .228.147.228.147s-.013.255.175.308c.187.054.696-.187.816-.294.12-.107.362.16.469.388.107.228.67 1.179.87 1.406.05.057.104.122.16.193H3.817c.253-.172.524-.353.562-.407.066-.092 1.185-1.211 1.307-1.436a.673.673 0 0 0 .214-.158.594.594 0 0 0 .18-.04c.362-.147.937-.602 1.219-1.004a3.38 3.38 0 0 0 .384-.687c.15-.118.27-.202.312-.21.134-.027.348-.094.348.133 0 .228.228.723.429 1.018.2.295.468.536.468.536s-.013.12.121.134c.134.013.254-.027.281.04.065.161.348.04.482-.08.134-.121.188.08.375-.04a.543.543 0 0 0 .268-.496.283.283 0 0 0-.112-.224l.018-.017s.16.011.32-.04a.934.934 0 0 0 .002.28c.04.336.268.55.401.55m-7.097 1.54c-.088.088-.362.335-.677.608H0l3.988-3.343c-.083.366-.066.882.243 1.543 0 0 .241.147.616.107.083-.008.202-.012.335-.026-.329.428-.73.958-.884 1.11m13.78-3.896c.05-.042.155-.17.308-.295l2.05 4.8h-6.117a33.173 33.173 0 0 0-.312-.715c-.187-.415-.804-1.634-1.072-1.7a.953.953 0 0 0-.79.173c-.187.161-.267.107-.361.04-.094-.066.014-.227-.04-.455a1.699 1.699 0 0 0-.116-.326.17.17 0 0 0 .143-.116c.053-.147.04-.214.227-.187.028.004.07.007.12.008a.301.301 0 0 0-.043.114c-.006.15.114.422.291.488s.929.394 1.086.236c.158-.157.858-.54.982-.609.125-.068.354-.115.432-.098.079.017.24.6.515 1.099.276.498.23.707.41.637.18-.07.177.134.342.13.166-.006.196.11.292.295.097.186.198.414.437.452.238.038 1.185.284 1.293.226.11-.059.114-.208-.16-.268-.275-.06-.919-.063-1.062-.162-.143-.1-.179-.628-.33-.689-.15-.06-.38-.137-.409-.198-.024-.052-.563-1.007-.77-1.517.273.117.695.282.953.365.375.12 1.018.321 1.286.321.17 0 .237-.06.263-.103a.9.9 0 0 0 .045.103c.053.094.133.16.133.16s-.026.054.054.094.63.121.83.309c.201.187.483.549.51.883.026.335.24.697.347.71.108.013.228 0 .12-.455-.106-.456-.267-.817-.521-1.018-.255-.201-.911-.522-.991-.563-.08-.04-.187-.147-.228-.147-.04 0-.027-.04-.094-.268a4.004 4.004 0 0 1-.035-.132c.017-.045.08-.215.102-.444.027-.267-.094-.856-.2-1.004 0 0-.011-.094-.013-.171.033.016.066.019.093-.003M6.77 11.924a4.581 4.581 0 0 0-.189-.02l.764-.642c-.114.167-.544.623-.544.623l-.03.04m2.44 1.915c.09.09.165.314.242.422-.056.177-.072.26.093.315.201.067.375-.027.375-.027s.025.029.065.064c-.167.097-.324.206-.373.27-.08.108-.174.054-.174.054s-.321-.535-.455-1.031a1.886 1.886 0 0 0-.053-.166c.106.022.204.023.28.099m-.051-3.63c.12-.067.228-.04.201.16-.027.202-.16 1.019-.174 1.327-.013.307.013.937.013.937s-.167.116-.148.247c-.05-.01-.088-.015-.106-.02-.054-.013.107-.548-.094-.682-.2-.134-.576.013-.71.08-.108.054-.313.09-.387.103a.384.384 0 0 0-.188-.25c-.099-.05-.331-.112-.6-.159l.425-.457s.322-.027.55-.188c.227-.16 1.098-1.031 1.218-1.098m-1.134 3.057c-.095.047-.185.12-.284.194a.267.267 0 0 0-.015-.13.612.612 0 0 1-.023-.25c.066.04.2.124.322.186"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/apachecassandra.svg b/assets/lib/simple-icons/icons/apachecassandra.svg
new file mode 100644
index 00000000..221b7e4d
--- /dev/null
+++ b/assets/lib/simple-icons/icons/apachecassandra.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Apache Cassandra</title><path d="M17.514 5.766c-.002.003-.247.256-.387.408-.366.397-.92.975-1.312 1.12h-.004a2.28 2.28 0 00-.16-.05l.705-1.425-.008.012c-.022.043-.72 1.415-1.666 1.218l-.002.002c-.014-.003-.026.002-.04-.002.455-.58.63-1.113.63-1.113s-.756 1.213-1.69.885a.075.075 0 01-.05-.047.153.153 0 010-.08c.01-.04.04-.092.067-.14.095-.176.256-.368.256-.368s-.156.152-.366.295l-.002.002c-.157.107-.345.208-.52.236a.512.512 0 01-.167 0c-.214-.037-.208-.25-.149-.455v-.002c.06-.204.174-.4.174-.4s-.19.298-.398.588c-.16.223-.311.396-.416.474l-.12.004c-.063-.176.1-.756.1-.76a4.984 4.984 0 01-.314.446 1.73 1.73 0 01-.34.336h-.027c-.082.007-.16.02-.24.031a.208.208 0 01-.063-.125c-.042-.268.123-.756.125-.762-.002.006-.09.26-.21.502V6.6c-.032.067-.07.12-.107.178-.086.136-.176.244-.261.22-.127-.039-.202-.203-.246-.357-.044-.154-.057-.299-.057-.299s-.031.251-.117.485a.8.8 0 01-.146.265c-.024.027-.057.036-.086.055a12.553 12.553 0 00-2.617.764c-.223.082-.446.159-.674.257-.75.32-1.53.726-2.344 1.248a21.335 21.335 0 00-2.56 1.945c-.449.393-.907.82-1.377 1.29C3.887 10.735 5.3 7.908 11.964 7.656c5.045-.19 7.402 2.138 8.18 2.171 1.957.083 3.258-1.4 3.673-1.947.112-.142.179-.237.183-.244-.01.011-.328.374-.781.722l-.006.004c-.46.35-1.05.68-1.577.6h-.002c-.068-.01-.138-.007-.203-.032.744-.434 1.237-1.19 1.483-1.596.076-.125.233-.36.233-.36S21.4 8.762 20.099 8.642l-.002.002c-.051-.005-.105.007-.155-.004.567-.446.985-1.045 1.278-1.55v-.004h.002c.317-.548.482-.985.484-.992-.005.008-.326.498-.766 1.037l-.01.01c-.44.54-.998 1.122-1.464 1.3-.07.026-.14.066-.205.072 1.085-.96 1.54-2.323 1.54-2.323s-1.098 1.595-2.027 1.89c-.056.017-.114.047-.17.054.568-.513.869-.92 1.057-1.24V6.89c.238-.404.281-.65.281-.65l-.004.004a9.381 9.381 0 01-.271.334l-.016.017c-.255.3-.645.733-1.045 1.078l-.005.004a4.148 4.148 0 01-.32.248c-.03.021-.06.046-.09.065a1.7 1.7 0 01-.273.139c-.022.01-.044.022-.065.03-.068-.045-.132-.092-.205-.135-.046.06-.096.117-.142.176h-.002c-.02-.006-.044-.006-.063-.016.859-.935 1.44-2.12 1.44-2.12l-.003.004c-.008.01-1.194 1.61-1.73 1.71-.07-.035-.14-.07-.216-.103a.5.5 0 01.044-.162c.122-.284.465-.717.465-.717s-.093.07-.123.096a4.251 4.251 0 01-.304.238c-.056.04-.114.072-.172.108a1.9 1.9 0 01-.188.105.71.71 0 01-.263.086c-.043 0-.082-.005-.11-.027.453-.277 1.228-1.628 1.233-1.637zm-4.79 2.166a15.085 15.085 0 00-.914.006c-.286.01-.55.033-.817.053l-.002.002a3.41 3.41 0 00-.783.46.427.427 0 01.035.168.431.431 0 01-.047.19l.885.642.022-.014-.36-1.264.623 1.114c.02-.008.042-.014.063-.02l-.02-1.236.397 1.162.476-1.15.018 1.269c.004.002.007.006.012.008l.712-1.006-.363 1.219.008.01 1.041-.692-.758 1.05v.007l.95-.34c.013-.017.03-.03.042-.047a.394.394 0 01.396-.63c.119-.245.209-.504.268-.77a13.153 13.153 0 00-1.884-.19zm-2.508.134l-.02.002c-.309.036-.607.078-.893.125-.287.047-.562.1-.824.16l-.014.002c.115.388.294.756.531 1.08.108-.24.244-.461.402-.662a.436.436 0 01.57-.557c.077-.058.166-.1.248-.15zm4.46.092a3.184 3.184 0 01-.162.826.394.394 0 01-.328.68 3.172 3.172 0 01-.55.63l.66.034-.994.236c-.026.018-.046.042-.072.06a3.195 3.195 0 011.538.69c.32-.574.504-1.235.504-1.94 0-.535-.237-.928-.594-1.216zm-6.319.226c-.296.07-.58.147-.85.23a1.462 1.462 0 00-.212.76 3.99 3.99 0 002.357 3.64l.002-.011a3.198 3.198 0 01-.58-.79.572.572 0 01-.336-1.079 3.18 3.18 0 01.14-1.39 3.16 3.16 0 01-.52-1.36zm7.633.026c.14.41.225.842.225 1.293 0 2.44-2.203 4.419-4.921 4.419-2.718 0-4.921-1.98-4.921-4.42 0-.235.023-.467.063-.693A13.08 13.08 0 004.36 10.12c-.214.388-.318.793-.283 1.2.085.986.951 1.808 2.275 2.365l-.256-.068c-2.291-.646-4.109.503-6.096-.494.46.364.984.717 2.499.722.513.002 2.158-.08 2.461.186.303.265-1.021 1.514-1.021 1.514s2.24-1.897 2.459-1.25c.137.402-.643 1.476-.643 1.476s.784-1.06 1.364-1.287c.4-.156.735-.136 1.022.266.19.265-.91 1.553-.91 1.553s1.477-1.44 1.741-1.364c.266.076 0 1.364 0 1.364s.545-1.307.835-1.403c.398-.133-.909 3.031-.909 3.031s1.596-2.926 1.894-2.992c.51-.114.852 2.044.852 2.044s-.25-1.886.02-2.007c1.694-.767.718 3.257.718 3.257s1.11-2.73.428-3.337c1.799 1.193 1.579 3.337 1.579 3.337s.472-1.02-.855-3.53c.72-.038 1.8 1.864 1.8 1.864s-1.172-2.082-.377-2.12c1.58-.075 1.74 2.765 1.74 2.765s.474-.398-.795-3.181c.808-.518 2.765 2.575 2.765 2.575s-1.805-3.018-1.515-3.22c.29-.202 1.35.96 1.35.96s-.808-1.11-.594-1.223c.216-.114 2.363 2.207 2.363 2.207s-1.895-2.271-1.567-2.55c.328-.277 1.717.784 1.717.784s-2.134-1.4-1.717-1.618c.58-.3 2.235.72 2.235.72s-.996-.82-.832-1.02c.164-.203 2.12 1.287 2.12 1.287s-1.729-1.365-1.818-1.706c-.088-.34 1.362.115 1.362.115s-1.602-.744-1.627-.959c-.026-.214 1.06.24 1.06.24s-1.49-1.225-1.855-.228c-.084.16-.187.3-.283.45.093-.27.135-.543.11-.82a1.87 1.87 0 00-.052-.28c-.683-.367-1.702-.933-3.134-1.336zm-5.831.455a.427.427 0 01-.509.164c-.054.073-.1.152-.148.23l1.278.47c.01-.013.02-.03.032-.042zM9.5 9.26c-.094.155-.18.316-.244.489.12.128.26.235.396.343l.923-.029.002-.004zm4.187.541l-.606.463.053.002c.201-.132.383-.29.553-.465zm-4.535.291c-.002.012-.007.023-.01.035a2.88 2.88 0 00-.048.958.567.567 0 01.451.474l.938-.6c-.085-.03-.17-.06-.251-.097l-1.052-.076.638-.139a3.199 3.199 0 01-.666-.555zm.793.211c.139.086.28.16.43.223l.116-.024c0-.019.005-.037.006-.056zm3.121.68l.916.9-1.198-.466.703 1.079-1.072-.833-.012.006.346 1.28-.596-1.136-.097 1.33-.403-1.326-.47 1.263.113-1.36-.016-.008-.812 1.153.297-1.11a3.299 3.299 0 00-.793 1.19c.095.102.196.198.302.289a3.985 3.985 0 004.353-1.689 3.399 3.399 0 00-1.26-.539zm-2.436.223l-1.079.39c.001.018.01.033.01.051a.57.57 0 01-.184.42c.102.218.228.424.375.616a3.2 3.2 0 01.32-.635l-.295.239zm3.634 2.791c-.186.049-.37.097-.56.137.191-.04.374-.09.56-.136zm-1.089.235c-.114.02-.225.046-.34.063-.202.03-.39.042-.586.062.315-.033.624-.074.926-.125zm-1.35.17c-.11.008-.215.007-.324.012.11-.007.214-.003.324-.012z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/apachecloudstack.svg b/assets/lib/simple-icons/icons/apachecloudstack.svg
index a3cac0ee..3d6cb78a 100644
--- a/assets/lib/simple-icons/icons/apachecloudstack.svg
+++ b/assets/lib/simple-icons/icons/apachecloudstack.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Apache CloudStack icon</title><path d="M12.446 11.386c.326-.116 1.077-.462 1.228-1.23l-1.692-.114s-.458-.161-.705-.94c0 0-1.022-.55-.951-1.342 0 0 .158-.987 1.004-1.128 0 0 .882-.218 1.062 1.192 0 0 .415 1.194-.394 1.278 0 0-.175.385.46.402 0 0 .773.23 1.32-.229 0 0 .371-.341.812-.276 0 0 .095-.169-.09-.274 0 0-1.097-.939-1.289-2.267 0 0-.905-.126-1.018-.766 0 0-.211-.992.608-1.19 0 0 .522-.119.787 0 0 0 .667-1.817 2.57-2.128 0 0 1.573-.37 2.134.82 0 0 .232.647.106 1.19 0 0-.132.594.007.746 0 0 .509-.12.72.211.211.33.304 1.038-.119 1.203 0 0 .126.562-.297.945 0 0-1.342.78-1.725 1.44 0 0-.118.151-.178.204a1.354 1.354 0 01-.516.283s-.159.07-.337-.018c0 0-.053.265.245.311 0 0 .565-.078 1.18-.266l4.443-1.59s-.206-.555-.041-.826c0 0 .091-.144.174-.175.154-.059.338-.352.346-.581 0 0-.043-.58.373-.606 0 0 .4-.024.366.465l-.029.321s.61-.23.814.185c0 0 .412.836-.025 1.51 0 0-.643.633-1.489.235l-.29-.179s-5.168 2.14-5.228 2.28c0 0-.405.205-.707.753 0 0-1.037 1.85-1.572 2.34 0 0-.35.423-.601.528l.054.146c.347.037.601-.047.601-.047.965-.462 1.105-.106 1.105-.106.352.252.204.978.204.978 2.696 2.59-.204 5.128-.204 5.128-.455.198-.669 0-.669 0-.079-.119.67-.766.67-.766 1.368-1.64.156-3.412.156-3.412-2.023-2.18-4.05-.553-4.05-.553-.912 1.018-.78 2.128-.78 2.128-.159.317-.423.185-.423.185-.357-.423 0-1.533 0-1.533.529-1.23 1.652-1.732 1.652-1.732l.169-.136c.204-.935-.134-2.062-.134-2.062-.925-2.206-2.488-2.578-3.03-2.64.008.057.006.046-.001 0-.12-.013-.189-.012-.189-.012-2.317-.22-3.379 1.789-3.379 1.789-.62.55-.581 1.815-.581 1.815 1.524.343 1.898 1.295 1.898 1.295.106.396-.348.269-.348.269C5.22 13.69 4.51 13.635 4.51 13.635c-1.44-.26-2.414.664-2.414.664-.584.405-1.102 1.281-1.102 1.281C.157 17.06.68 18.472.68 18.472c.287 1.433 1.997 2.385 1.997 2.385.814.422 1.684.297 1.684.297.708-.162.544.211.544.211-.2.3-.469.304-.469.304-1.528.101-2.216-.414-2.216-.414C-1.195 19.11.347 15.59.347 15.59c1.6-3.119 4.19-2.458 4.19-2.458.052-.939.819-2.247.819-2.247 1.14-1.42 2.416-1.726 3.181-1.764l.004-.004s-.018-1.007.29-1.862c0 0 .16-.435.723-1.286.089-.134.37-.493.458-.82 0 0 .476-1.497-1.229-1.735 0 0-.543-.096-.898.19-.225.18-.437.286-.6.33 0 0-.806.277-.78-.238 0 0-.145-.767 1.68-.978 0 0 2.23-.383 2.49 1.388 0 0 .364 1.083-.958 2.709 0 0-.722 1.118-.557 2.334.045.007.068.013.068.013 2.326.404 3.211 2.212 3.211 2.212l.007.012zm.322.648l.797 1.602c1.387-.564 1.98-2.434 1.98-2.434.38-.942-.211-1.083-.211-1.083-.406-.106-.696.3-.696.3-.91 1.104-1.671 1.519-1.87 1.615zm4.284-8.153c-1.295-1.242-2.538.343-2.538.343-.766.978.08 2.353.08 2.353-.344.08-.503.317-.503.317-.237 1.19 1.11 2.009 1.11 2.009 1.031.687 1.666-.212 1.666-.212.264-.608 1.691-1.612 1.691-1.612.476-.476 0-1.004 0-1.004-.502-.357-.581-.978-.581-.978-.04-.529.04-1.176.04-1.176-.265-.476-.965-.04-.965-.04zm-3.714 1.19c-.08-.212-.35-.146-.35-.146-.535.099-.423.7-.423.7.04.417.476.483.476.483.013-.621.297-1.038.297-1.038zm4.943.468c-.06.126.066.212.066.212.177.117.343.324.343.324.08.072.205 0 .205 0 .17-.247-.125-.536-.125-.536-.198-.198-.49 0-.49 0zm-6.159 2.333s-.132-.674-.572-.86c0 0-.318-.083-.555.19 0 0-.437.445-.291.987 0 0 .251.595.916.718 0 0 .375.115.59-.454 0 0 .055-.176-.088-.581zm9.829-.328c.099.114.158.304.158.304.013.445.627.42.627.42.688.03.933-.4.933-.4.206-.357.127-1.049-.1-1.178-.228-.13-.732 0-.732 0 .122-.238.048-.615.048-.615-.044-.406-.386-.172-.386-.172-.206.154-.106.595-.106.595-.01.28-.372.405-.372.405-.276.283-.07.64-.07.64zm-5.92-1.962c-.01.12-.149.066-.149.066-.036-.26-.377-.323-.377-.323-.357.015-.356.28-.356.28-.199.123-.242-.056-.242-.056.116-.452.589-.36.589-.36.498.03.535.393.535.393zm.758.055s.027-.37.334-.44c0 0 .446-.143.64.256 0 0 .07.162.007.207 0 0-.14.051-.181-.192 0 0-.113-.22-.336-.173 0 0-.198.021-.248.23 0 0-.01.22-.216.112zm-1.676 1.235c.102-.062.247-.009.34.047.1.062.21.12.316.17.209.099.425.162.661.162.123 0 .254.012.374-.005.1-.014.203-.025.304-.035a.991.991 0 00.359-.096c.055-.029.11-.052.164-.084.05-.031.096-.072.144-.102.023-.014.082-.058.11-.053.035.006.069.103.06.136-.068.02-.133.074-.198.105-.09.044-.173.103-.255.16-.116.08-.252.192-.326.313-.173.283-.37.572-.656.749a.917.917 0 01-.495.119c-.166 0-.376-.03-.519-.12a.61.61 0 01-.29-.356c-.044-.158 0-.317 0-.478 0-.125.033-.31-.026-.42-.02-.038-.028-.027-.062-.057-.026-.022-.04-.065-.027-.113.002-.008.014-.043.022-.042zm1.291-.515a.137.137 0 01-.14.134.137.137 0 01-.14-.134c0-.074.062-.134.14-.134.077 0 .14.06.14.134zm.575-.023a.137.137 0 01-.14.134.137.137 0 01-.14-.134c0-.074.062-.134.14-.134.077 0 .14.06.14.134z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Apache CloudStack</title><path d="M12.446 11.386c.326-.116 1.077-.462 1.228-1.23l-1.692-.114s-.458-.161-.705-.94c0 0-1.022-.55-.951-1.342 0 0 .158-.987 1.004-1.128 0 0 .882-.218 1.062 1.192 0 0 .415 1.194-.394 1.278 0 0-.175.385.46.402 0 0 .773.23 1.32-.229 0 0 .371-.341.812-.276 0 0 .095-.169-.09-.274 0 0-1.097-.939-1.289-2.267 0 0-.905-.126-1.018-.766 0 0-.211-.992.608-1.19 0 0 .522-.119.787 0 0 0 .667-1.817 2.57-2.128 0 0 1.573-.37 2.134.82 0 0 .232.647.106 1.19 0 0-.132.594.007.746 0 0 .509-.12.72.211.211.33.304 1.038-.119 1.203 0 0 .126.562-.297.945 0 0-1.342.78-1.725 1.44 0 0-.118.151-.178.204a1.354 1.354 0 01-.516.283s-.159.07-.337-.018c0 0-.053.265.245.311 0 0 .565-.078 1.18-.266l4.443-1.59s-.206-.555-.041-.826c0 0 .091-.144.174-.175.154-.059.338-.352.346-.581 0 0-.043-.58.373-.606 0 0 .4-.024.366.465l-.029.321s.61-.23.814.185c0 0 .412.836-.025 1.51 0 0-.643.633-1.489.235l-.29-.179s-5.168 2.14-5.228 2.28c0 0-.405.205-.707.753 0 0-1.037 1.85-1.572 2.34 0 0-.35.423-.601.528l.054.146c.347.037.601-.047.601-.047.965-.462 1.105-.106 1.105-.106.352.252.204.978.204.978 2.696 2.59-.204 5.128-.204 5.128-.455.198-.669 0-.669 0-.079-.119.67-.766.67-.766 1.368-1.64.156-3.412.156-3.412-2.023-2.18-4.05-.553-4.05-.553-.912 1.018-.78 2.128-.78 2.128-.159.317-.423.185-.423.185-.357-.423 0-1.533 0-1.533.529-1.23 1.652-1.732 1.652-1.732l.169-.136c.204-.935-.134-2.062-.134-2.062-.925-2.206-2.488-2.578-3.03-2.64.008.057.006.046-.001 0-.12-.013-.189-.012-.189-.012-2.317-.22-3.379 1.789-3.379 1.789-.62.55-.581 1.815-.581 1.815 1.524.343 1.898 1.295 1.898 1.295.106.396-.348.269-.348.269C5.22 13.69 4.51 13.635 4.51 13.635c-1.44-.26-2.414.664-2.414.664-.584.405-1.102 1.281-1.102 1.281C.157 17.06.68 18.472.68 18.472c.287 1.433 1.997 2.385 1.997 2.385.814.422 1.684.297 1.684.297.708-.162.544.211.544.211-.2.3-.469.304-.469.304-1.528.101-2.216-.414-2.216-.414C-1.195 19.11.347 15.59.347 15.59c1.6-3.119 4.19-2.458 4.19-2.458.052-.939.819-2.247.819-2.247 1.14-1.42 2.416-1.726 3.181-1.764l.004-.004s-.018-1.007.29-1.862c0 0 .16-.435.723-1.286.089-.134.37-.493.458-.82 0 0 .476-1.497-1.229-1.735 0 0-.543-.096-.898.19-.225.18-.437.286-.6.33 0 0-.806.277-.78-.238 0 0-.145-.767 1.68-.978 0 0 2.23-.383 2.49 1.388 0 0 .364 1.083-.958 2.709 0 0-.722 1.118-.557 2.334.045.007.068.013.068.013 2.326.404 3.211 2.212 3.211 2.212l.007.012zm.322.648l.797 1.602c1.387-.564 1.98-2.434 1.98-2.434.38-.942-.211-1.083-.211-1.083-.406-.106-.696.3-.696.3-.91 1.104-1.671 1.519-1.87 1.615zm4.284-8.153c-1.295-1.242-2.538.343-2.538.343-.766.978.08 2.353.08 2.353-.344.08-.503.317-.503.317-.237 1.19 1.11 2.009 1.11 2.009 1.031.687 1.666-.212 1.666-.212.264-.608 1.691-1.612 1.691-1.612.476-.476 0-1.004 0-1.004-.502-.357-.581-.978-.581-.978-.04-.529.04-1.176.04-1.176-.265-.476-.965-.04-.965-.04zm-3.714 1.19c-.08-.212-.35-.146-.35-.146-.535.099-.423.7-.423.7.04.417.476.483.476.483.013-.621.297-1.038.297-1.038zm4.943.468c-.06.126.066.212.066.212.177.117.343.324.343.324.08.072.205 0 .205 0 .17-.247-.125-.536-.125-.536-.198-.198-.49 0-.49 0zm-6.159 2.333s-.132-.674-.572-.86c0 0-.318-.083-.555.19 0 0-.437.445-.291.987 0 0 .251.595.916.718 0 0 .375.115.59-.454 0 0 .055-.176-.088-.581zm9.829-.328c.099.114.158.304.158.304.013.445.627.42.627.42.688.03.933-.4.933-.4.206-.357.127-1.049-.1-1.178-.228-.13-.732 0-.732 0 .122-.238.048-.615.048-.615-.044-.406-.386-.172-.386-.172-.206.154-.106.595-.106.595-.01.28-.372.405-.372.405-.276.283-.07.64-.07.64zm-5.92-1.962c-.01.12-.149.066-.149.066-.036-.26-.377-.323-.377-.323-.357.015-.356.28-.356.28-.199.123-.242-.056-.242-.056.116-.452.589-.36.589-.36.498.03.535.393.535.393zm.758.055s.027-.37.334-.44c0 0 .446-.143.64.256 0 0 .07.162.007.207 0 0-.14.051-.181-.192 0 0-.113-.22-.336-.173 0 0-.198.021-.248.23 0 0-.01.22-.216.112zm-1.676 1.235c.102-.062.247-.009.34.047.1.062.21.12.316.17.209.099.425.162.661.162.123 0 .254.012.374-.005.1-.014.203-.025.304-.035a.991.991 0 00.359-.096c.055-.029.11-.052.164-.084.05-.031.096-.072.144-.102.023-.014.082-.058.11-.053.035.006.069.103.06.136-.068.02-.133.074-.198.105-.09.044-.173.103-.255.16-.116.08-.252.192-.326.313-.173.283-.37.572-.656.749a.917.917 0 01-.495.119c-.166 0-.376-.03-.519-.12a.61.61 0 01-.29-.356c-.044-.158 0-.317 0-.478 0-.125.033-.31-.026-.42-.02-.038-.028-.027-.062-.057-.026-.022-.04-.065-.027-.113.002-.008.014-.043.022-.042zm1.291-.515a.137.137 0 01-.14.134.137.137 0 01-.14-.134c0-.074.062-.134.14-.134.077 0 .14.06.14.134zm.575-.023a.137.137 0 01-.14.134.137.137 0 01-.14-.134c0-.074.062-.134.14-.134.077 0 .14.06.14.134z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/apachecordova.svg b/assets/lib/simple-icons/icons/apachecordova.svg
index 5f64a591..6cd2b8c6 100644
--- a/assets/lib/simple-icons/icons/apachecordova.svg
+++ b/assets/lib/simple-icons/icons/apachecordova.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Apache Cordova icon</title><path d="M18.545,0.545H5.455L0,9.273l2.182,14.182h3.886l-0.273-3.273h1.909l0.273,3.273 h8.045l0.273-3.273h1.909l-0.273,3.273h3.886L24,9.273L18.545,0.545z M18.545,18H5.455L4.364,9.273l2.182-4.364h3.506L9.818,6.545 h4.364l-0.234-1.636h3.506l2.182,4.364L18.545,18z M15.545,11.045c0.301,0,0.545,0.908,0.545,2.029 c0,1.121-0.244,2.029-0.545,2.029c-0.301,0-0.545-0.908-0.545-2.029C15,11.954,15.244,11.045,15.545,11.045z M8.659,11.215 c0.301,0,0.545,0.908,0.545,2.029c0,1.121-0.244,2.029-0.545,2.029c-0.301,0-0.545-0.908-0.545-2.029 C8.114,12.123,8.358,11.215,8.659,11.215z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Apache Cordova</title><path d="M18.545,0.545H5.455L0,9.273l2.182,14.182h3.886l-0.273-3.273h1.909l0.273,3.273 h8.045l0.273-3.273h1.909l-0.273,3.273h3.886L24,9.273L18.545,0.545z M18.545,18H5.455L4.364,9.273l2.182-4.364h3.506L9.818,6.545 h4.364l-0.234-1.636h3.506l2.182,4.364L18.545,18z M15.545,11.045c0.301,0,0.545,0.908,0.545,2.029 c0,1.121-0.244,2.029-0.545,2.029c-0.301,0-0.545-0.908-0.545-2.029C15,11.954,15.244,11.045,15.545,11.045z M8.659,11.215 c0.301,0,0.545,0.908,0.545,2.029c0,1.121-0.244,2.029-0.545,2.029c-0.301,0-0.545-0.908-0.545-2.029 C8.114,12.123,8.358,11.215,8.659,11.215z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/apachecouchdb.svg b/assets/lib/simple-icons/icons/apachecouchdb.svg
new file mode 100644
index 00000000..9527a924
--- /dev/null
+++ b/assets/lib/simple-icons/icons/apachecouchdb.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Apache CouchDB</title><path d="M19.5 14.625c0 .995-.524 1.482-1.5 1.5H6c-.976-.018-1.5-.505-1.5-1.5s.524-1.482 1.5-1.5h12c.976.018 1.5.505 1.5 1.5m-1.5 2.25H6c-.976.018-1.5.505-1.5 1.5s.524 1.482 1.5 1.5h12c.976-.018 1.5-.505 1.5-1.5s-.524-1.482-1.5-1.5m3.75-8.248v-.001c-.976.017-1.5.504-1.5 1.499v8.25c0 .995.524 1.482 1.5 1.5v-.002c1.464-.052 2.25-1.514 2.25-4.498v-3.75c0-1.99-.786-2.964-2.25-2.998m-19.5-.001C.786 8.662 0 9.637 0 11.626v3.75c0 2.984.786 4.446 2.25 4.498v.001c.976-.017 1.5-.504 1.5-1.499v-8.25c0-.995-.524-1.482-1.5-1.5m19.5-.75c0-2.486-1.31-3.705-3.75-3.748v-.002H6v.002c-2.44.043-3.75 1.262-3.75 3.748v.001c1.464.026 2.25.757 2.25 2.249s.786 2.223 2.25 2.249v.001h10.5v-.001c1.464-.026 2.25-.757 2.25-2.249s.786-2.223 2.25-2.249z"/></svg>
diff --git a/assets/lib/simple-icons/icons/apachedruid.svg b/assets/lib/simple-icons/icons/apachedruid.svg
index 54e41eae..7b016ec6 100644
--- a/assets/lib/simple-icons/icons/apachedruid.svg
+++ b/assets/lib/simple-icons/icons/apachedruid.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Apache Druid icon</title><path d="M8.932 20.806c-.369 0-.738.007-1.109 0-.35-.007-.587-.206-.623-.5a.587.587 0 0 1 .53-.636c.79-.062 1.582-.063 2.372-.003a.548.548 0 0 1 .522.602c-.024.326-.253.526-.616.54zM1.792 8.345c-.392 0-.782.008-1.173.002-.327-.006-.577-.22-.614-.512-.037-.293.146-.544.499-.615.192-.032.388-.045.583-.039a81.515 81.515 0 0 1 1.597 0c.163 0 .325.019.483.056.288.073.445.318.411.617-.034.298-.214.477-.515.487-.424.014-.848.004-1.272.004zm7.588 8.417H4.292a2.464 2.464 0 0 1-.326-.007c-.294-.04-.48-.209-.508-.506-.029-.298.11-.501.391-.606.179-.065.365-.051.549-.051 3.347 0 6.695.005 10.042-.006 1.174-.004 2.187-.439 2.993-1.3.69-.738 1.053-1.63 1.16-2.635.085-.788-.027-1.513-.516-2.156-.544-.718-1.28-1.078-2.163-1.082-3.163-.013-6.328-.005-9.487-.01-.336 0-.673-.027-1.007-.058-.29-.027-.45-.201-.469-.492-.021-.317.141-.545.429-.6a1.55 1.55 0 0 1 .29-.015h10.177c1.71.004 3.187 1.038 3.726 2.654.383 1.147.246 2.304-.182 3.416-.824 2.135-2.762 3.448-5.055 3.454-1.652.005-3.304 0-4.956 0zm2.906-13.568c1.533 0 3.066-.008 4.598 0 2.935.018 5.629 1.892 6.653 4.626.442 1.181.538 2.403.412 3.657-.185 1.842-.735 3.552-1.776 5.084-1.608 2.365-3.873 3.68-6.679 4.118-.95.148-1.905.13-2.86.13-.397 0-.61-.181-.633-.51-.025-.351.196-.621.587-.645.434-.026.87-.004 1.305-.016 2.641-.072 4.928-.982 6.74-2.935 1.269-1.37 1.912-3.039 2.13-4.878.151-1.275.135-2.544-.37-3.752-.773-1.85-2.159-2.983-4.068-3.509-.74-.204-1.5-.243-2.26-.247-2.837-.017-5.675-.007-8.511-.007-.12 0-.24.004-.359-.006a.57.57 0 0 1-.517-.536.557.557 0 0 1 .456-.557c.13-.018.261-.024.392-.019h4.762Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Apache Druid</title><path d="M8.932 20.806c-.369 0-.738.007-1.109 0-.35-.007-.587-.206-.623-.5a.587.587 0 0 1 .53-.636c.79-.062 1.582-.063 2.372-.003a.548.548 0 0 1 .522.602c-.024.326-.253.526-.616.54zM1.792 8.345c-.392 0-.782.008-1.173.002-.327-.006-.577-.22-.614-.512-.037-.293.146-.544.499-.615.192-.032.388-.045.583-.039a81.515 81.515 0 0 1 1.597 0c.163 0 .325.019.483.056.288.073.445.318.411.617-.034.298-.214.477-.515.487-.424.014-.848.004-1.272.004zm7.588 8.417H4.292a2.464 2.464 0 0 1-.326-.007c-.294-.04-.48-.209-.508-.506-.029-.298.11-.501.391-.606.179-.065.365-.051.549-.051 3.347 0 6.695.005 10.042-.006 1.174-.004 2.187-.439 2.993-1.3.69-.738 1.053-1.63 1.16-2.635.085-.788-.027-1.513-.516-2.156-.544-.718-1.28-1.078-2.163-1.082-3.163-.013-6.328-.005-9.487-.01-.336 0-.673-.027-1.007-.058-.29-.027-.45-.201-.469-.492-.021-.317.141-.545.429-.6a1.55 1.55 0 0 1 .29-.015h10.177c1.71.004 3.187 1.038 3.726 2.654.383 1.147.246 2.304-.182 3.416-.824 2.135-2.762 3.448-5.055 3.454-1.652.005-3.304 0-4.956 0zm2.906-13.568c1.533 0 3.066-.008 4.598 0 2.935.018 5.629 1.892 6.653 4.626.442 1.181.538 2.403.412 3.657-.185 1.842-.735 3.552-1.776 5.084-1.608 2.365-3.873 3.68-6.679 4.118-.95.148-1.905.13-2.86.13-.397 0-.61-.181-.633-.51-.025-.351.196-.621.587-.645.434-.026.87-.004 1.305-.016 2.641-.072 4.928-.982 6.74-2.935 1.269-1.37 1.912-3.039 2.13-4.878.151-1.275.135-2.544-.37-3.752-.773-1.85-2.159-2.983-4.068-3.509-.74-.204-1.5-.243-2.26-.247-2.837-.017-5.675-.007-8.511-.007-.12 0-.24.004-.359-.006a.57.57 0 0 1-.517-.536.557.557 0 0 1 .456-.557c.13-.018.261-.024.392-.019h4.762Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/apacheecharts.svg b/assets/lib/simple-icons/icons/apacheecharts.svg
index 9f7d0f87..a2621739 100644
--- a/assets/lib/simple-icons/icons/apacheecharts.svg
+++ b/assets/lib/simple-icons/icons/apacheecharts.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Apache ECharts icon</title><path d="M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0zm8.354 17.813a1.319 1.319 0 0 0-1.284-1.616c-.383 0-.718.172-.967.424-1.358 1.371-3.304 2.134-5.386 2.134-4.329 0-7.825-3.327-7.797-7.656.021-3.286 2.72-5.937 6.016-5.937a6.016 6.016 0 0 1 5.068 9.258 1.343 1.343 0 0 0-.209.721 1.319 1.319 0 1 0 1.319-1.319c-.019 0-.037.002-.056.003a1.467 1.467 0 0 1 2.486 1.286l.024-.001c.81 0 1.467.657 1.467 1.467a1.47 1.47 0 0 1-.681 1.236z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Apache ECharts</title><path d="M12 0A12 12 0 0 0 0 12a12 12 0 0 0 12 12 12 12 0 0 0 12-12A12 12 0 0 0 12 0zm-.792 5.307c2.192-.025 4.366 1.134 5.43 3.304.909 1.852.878 3.61-.098 5.645-.477.995-.487 1.06-.241 1.578.214.452.727.779 1.221.779.454 0 1.15-.586 1.252-1.054.1-.454-.193-1.118-.607-1.377a10.11 10.11 0 0 1-.393-.255c-.129-.1.42-.38.741-.38.687 0 1.247.526 1.375 1.29.055.333.134.422.44.502.859.222 1.297 1.451.755 2.116-.22.27-.23.271-.305.042-.267-.801-.666-1.12-1.403-1.12-.319 0-.572.128-1.098.556-1.006.82-1.866 1.303-2.907 1.632-1.276.384-2.752.478-4.086.156-2.162-.431-4.232-2.11-5.252-4.257C4.758 11.782 5.135 9 7.033 7.077a5.924 5.924 0 0 1 4.175-1.77Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/apacheflink.svg b/assets/lib/simple-icons/icons/apacheflink.svg
index 1371ea99..17b35fb6 100644
--- a/assets/lib/simple-icons/icons/apacheflink.svg
+++ b/assets/lib/simple-icons/icons/apacheflink.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Apache Flink icon</title><path d="M8.302 23.976c-.58-.044-1.34-.187-1.979-.372a9.06 9.06 0 0 1-2.944-1.511c-.368-.285-1.153-1.07-1.473-1.473C.716 19.121.11 17.49.05 15.622a8.333 8.333 0 0 1 .328-2.602c.068-.229.071-.255.057-.53a4.173 4.173 0 0 1 .1-1.116c.061-.244.23-.61.34-.742l.068-.08-.01.434c-.012.622-.011.623.187.275A8.388 8.388 0 0 1 2.84 9.11c.194-.176.369-.338.388-.359.019-.021.09-.178.159-.349.207-.514.392-.796.593-.898.175-.09.334-.044.371.104a.856.856 0 0 1-.007.217.727.727 0 0 0-.013.16c.005 0 .157-.079.339-.175.65-.347 1.115-.546 2.094-.892.323-.115.628-.225.676-.246.276-.116.425-.506.398-1.039a1.446 1.446 0 0 0-.102-.505 4.148 4.148 0 0 0-.122-.317c-.05-.098-.043-.115.038-.092.233.067.512.292.687.555.102.154.273.522.274.592 0 .056.036.03.113-.084.307-.454.309-.97.004-1.488-.111-.19-.429-.503-.645-.637-.277-.17-.444-.22-.74-.217-.229.002-.25-.002-.317-.057-.083-.07-.13-.219-.109-.343.025-.142.266-.6.431-.82.195-.26.636-.684.917-.884.912-.648 2.056-1.04 3.386-1.16.32-.03.332-.032.398-.103.062-.066.082-.073.22-.073.133 0 .17.012.319.097.157.091.173.096.239.066.05-.022.132-.027.28-.017.169.01.22.007.264-.024.077-.054.171-.047.31.024.067.033.264.093.438.13.819.182 1.477.436 2.103.815.111.067.206.122.211.122.009 0-.003-.088-.032-.246L16.39.9l.152.09c.2.12.38.307.479.496.069.133.085.15.121.127.029-.017.064-.019.11-.003.054.019.093.075.2.293.074.149.142.277.15.286.01.01.084-.058.167-.148.176-.192.337-.3.55-.373.2-.067.32-.053.41.048.09.1.09.23-.004.427-.18.38-.26.728-.23.994l.017.137.108-.076c.1-.07.122-.076.305-.076.192 0 .4.058.4.112 0 .012-.051.083-.113.159-.184.226-.23.353-.227.626.003.251.014.308.177.868.059.205.128.473.152.595a.87.87 0 0 0 .06.222c.04 0 .313-.226.478-.394.099-.1.187-.182.195-.182.033 0 .091.19.117.376.03.22.007.432-.073.692-.048.156-.049.17-.012.247.061.128.07.266.028.444-.07.302-.199.51-.533.858l-.172.18-.028.24c-.016.133-.05.332-.076.442a.9.9 0 0 0-.035.214c.007.007.029-.002.049-.019.053-.044.216-.019.378.058.333.158.972.741 1.222 1.116l.135.201.215.054c.884.224 1.572.866 1.952 1.823.12.3.204.683.264 1.186.019.154.06.29.18.589.085.213.168.447.183.519.042.193.018.442-.06.626-.037.086-.087.23-.113.32-.091.323-.239.533-.487.693-.08.051-.204.11-.277.13-.137.037-.599.25-.6.277-.001.008.032.022.073.03.22.044.509.252.582.42.015.035.073.123.129.197.213.28.265.537.188.943l-.04.213.062.076c.22.271.409.622.478.892.098.379.096.747-.005 1.303l-.044.235.08.116c.154.223.184.436.106.737-.194.752-.766 1.31-1.563 1.522l-.156.041v.208c0 .16-.012.234-.05.317a.66.66 0 0 1-.32.319c-.224.099-.558-.007-.722-.23-.082-.11-.089-.113-.208-.113a.817.817 0 0 1-.226-.037c-.248-.087-.362-.257-.368-.547l-.004-.168-.156-.094a2.384 2.384 0 0 1-.563-.457l-.15-.165.078.155c.336.667-.045 1.39-.846 1.604-.164.045-.289.053-.992.07-1.085.026-9.019.022-9.366-.005zm13.506-.401c.101-.088.143-.312.08-.433-.058-.115-.14-.15-.384-.17-.277-.02-.354-.06-.354-.178 0-.153.025-.16.64-.168.597-.008.777-.037 1.038-.17.23-.116.522-.478.549-.682l.013-.095-.165.047c-.625.175-1.467.207-2.083.079-.665-.14-1.28-.52-1.497-.926l-.054-.101-.03.07a1.26 1.26 0 0 0-.03.334c-.002.247.003.275.073.42.145.305.46.601.842.793.2.101.205.105.192.178l-.042.242c-.037.212-.016.326.081.437a.516.516 0 0 0 .404.175c.094 0 .152.014.192.045.206.16.421.202.535.103zm-5.004-.184c.464-.067.614-.069.863-.014.51.113 1.036.023 1.267-.218.152-.158.198-.41.104-.565-.116-.19-.42-.32-.756-.32-.234 0-.355.034-.764.208a3.774 3.774 0 0 1-.377.144c-.174.035-.265-.062-.265-.279 0-.232.065-.308.56-.66.427-.3.681-.647.744-1.01.028-.169-.003-.402-.061-.458a1.582 1.582 0 0 0-.295-.107c-.83-.244-1.212-.561-1.573-1.308a5.485 5.485 0 0 1-.35-.909 4.378 4.378 0 0 0-.152-.435c-.27-.595-.927-1.133-1.683-1.377-.32-.104-.523-.14-1.033-.184a14.72 14.72 0 0 1-.564-.057l-.12-.018.168-.086c.206-.104.356-.153.576-.185.314-.047.528-.055.757-.03.922.104 1.617.578 2.108 1.438.182.32.313.647.44 1.102.147.526.28.792.534 1.06.41.435.959.63 1.769.63.178 0 .4-.012.492-.025.378-.053.77-.188 1.06-.363.318-.191.614-.542.71-.84.029-.09.064-.165.078-.165.014 0 .104.018.2.04.164.039.188.039.386 0 .318-.06.403-.054.484.032.122.13.275.154.45.07a.555.555 0 0 0 .178-.15c.058-.08.07-.118.064-.207-.007-.107-.01-.11-.193-.23a1.342 1.342 0 0 1-.186-.132c0-.007.045-.043.101-.08.077-.05.125-.064.192-.058.103.009.104-.004.005-.197a.832.832 0 0 0-.402-.396c-.337-.164-.719-.164-1.145 0-.256.1-.295.101-.47.024-.231-.102-.466-.138-.785-.12-.392.024-.651-.017-.75-.118l-.073-.073.315-.029c.49-.045.632-.088 1.066-.327.268-.148.428-.188.83-.211.58-.033.855-.132 1.01-.363.055-.082.083-.106.108-.09a.636.636 0 0 0 .778-.486c.016-.084.012-.089-.238-.31a2.533 2.533 0 0 1-.255-.241c0-.01.039-.05.085-.092.143-.125.245-.104.534.108.05.037.054.037.054-.005 0-.095-.059-.25-.228-.61-.199-.42-.215-.47-.253-.804-.12-1.03-.675-1.892-1.542-2.395a2.065 2.065 0 0 0-.212-.115c-.009 0-.05.071-.093.158a1.23 1.23 0 0 1-.168.252c-.075.078-.107.095-.182.095-.106 0-.18-.055-.18-.133 0-.03.032-.123.072-.207.12-.259.155-.44.12-.645-.08-.478-.53-1.016-1.092-1.31-.22-.114-.245-.11-.259.031-.015.162.02.49.077.71.026.102.117.346.202.541.218.5.284.72.285.94a.732.732 0 0 1-.039.271.83.83 0 0 1-.282.32c-.083.043-.175.045-.157.004.127-.29.169-.431.179-.609.014-.25-.02-.365-.234-.804-.214-.439-.274-.68-.261-1.042l.01-.254-.058.115a6.699 6.699 0 0 1-.249.409c-.305.472-.403.726-.403 1.044 0 .294.114.704.278 1 .032.058.054.11.048.117a.57.57 0 0 1-.145-.116c-.134-.126-.325-.452-.325-.554 0-.068-.044-.055-.24.07-.365.235-.628.473-.975.885-.506.602-1.196 1.05-2.04 1.328-.198.065-.845.238-1.437.386-1.62.402-2.188.602-2.937 1.034-1.484.854-2.26 2-2.413 3.565-.054.56.023 1.409.184 2.017.025.091-.13-.112-.227-.3-.174-.333-.285-.744-.34-1.26-.05-.461.005-1.38.112-1.872l.015-.07-.357.015c-.886.037-1.618.288-2.217.76a2.451 2.451 0 0 0-.255.225l-.06.072.015-.07c.028-.127.17-.404.285-.555.24-.317.723-.62 1.227-.771.132-.04.537-.139.9-.22.364-.08.678-.152.7-.158.02-.006.09-.108.154-.226.064-.118.18-.303.257-.41.077-.109.136-.201.131-.206a3.854 3.854 0 0 0-.391.05c-.21.033-.674.098-1.03.145-.719.095-1.124.17-1.5.278-1.16.335-1.83.983-2.179 2.11l-.09.292.047.137c.075.223.33.72.5.972.663.99 1.704 1.793 2.981 2.299.29.114.324.135.474.283.089.087.158.162.154.166-.018.019-.754-.174-1.072-.28a6.756 6.756 0 0 1-2.114-1.146 2.898 2.898 0 0 0-.443-.284 5.35 5.35 0 0 1-1.402-1.033 2.975 2.975 0 0 1-.487-.672l-.103-.192.147.135c.32.294.783.595 1.012.659.052.014.05.005-.044-.161a5.613 5.613 0 0 1-.364-.787 1.602 1.602 0 0 0-.282-.492c-.747-.971-1.293-1.946-1.674-2.99l-.117-.323-.02.106a5.454 5.454 0 0 0-.025.539l-.004.432.14.385c.145.396.665 1.798.71 1.915.014.036.02.066.015.066-.005 0-.091-.104-.19-.23-.229-.288-.484-.67-.53-.793l-.037-.094.014.084c.074.448.273 1.12.466 1.573.586 1.376 1.55 2.583 2.722 3.407 1.142.803 2.692 1.367 4.063 1.478.132.01 2.083.021 4.335.023 3.518.002 4.13-.002 4.347-.034zm1.685-6.667a2.756 2.756 0 0 1-.76-.276c-.461-.27-.788-.742-.82-1.184-.01-.155-.01-.156.023-.073.208.529.61.955 1.163 1.233.254.128.394.18.69.257l.264.068-.216-.002c-.119-.001-.274-.011-.344-.023zm2.631-2.4c-.241-.058-.51-.273-.584-.47a.743.743 0 0 1 .02-.479l.038-.07.017.096c.044.24.214.446.457.554.072.032.256.08.41.107.229.04.376.083.465.136.007.004.014-.104.017-.239.005-.237.004-.244-.035-.186-.083.122-.2.216-.271.216-.095 0-.513-.152-.628-.228-.143-.094-.188-.186-.188-.383 0-.14-.009-.176-.054-.224l-.054-.058.114-.104c.19-.172.305-.216.57-.216.257 0 .367.04.547.193.256.22.342.757.193 1.204l-.055.164-.444.004a4.386 4.386 0 0 1-.535-.017zm.29-.85c.085-.043.135-.137.132-.248-.002-.069-.022-.105-.089-.167-.14-.129-.328-.092-.41.08-.108.228.139.454.368.336zm-2.035 8.588a2.086 2.086 0 0 1-.256-.599c-.08-.356-.008-.927.152-1.203l.06-.106-.2.015a5.06 5.06 0 0 1-.316.016H18.7v.177c0 .354-.164.786-.422 1.108l-.134.168.245.017c.134.009.316.038.405.065.18.055.404.192.529.323.1.105.118.112.051.019zm3.292-.84a.807.807 0 0 0 .417-.375c.086-.175.179-.638.196-.976.011-.215.005-.32-.027-.468-.04-.187-.184-.519-.273-.631l-.045-.057-.118.084c-.26.186-.467.215-.73.1-.128-.055-.2-.07-.398-.078l-.243-.01-.08.14a2.15 2.15 0 0 1-1.013.922l-.184.084-.017.128c-.068.525.283.887 1.052 1.084.402.103.536.118.955.111.318-.005.392-.013.508-.059zm-19.311-3.72c.22-1.066 1.028-1.779 2.4-2.12.343-.085.907-.196 1.933-.382 1.346-.243 1.761-.372 2.257-.703l.3-.2-1.266-.007c-1.552-.009-1.755.01-2.36.21-.383.128-.759.296-1.798.808-.494.244-.903.439-.908.434-.009-.01.374-.345.57-.498.642-.506 1.693-1.09 2.365-1.315 1.148-.384 2.03-.458 3.891-.325l.89.063.347-.086c.34-.085.688-.151 1.344-.257a4.31 4.31 0 0 0 .334-.061c.005-.005-.011-.016-.036-.025a1.502 1.502 0 0 1-.364-.181.996.996 0 0 1-.15-.11c0-.005.31-.006.69-.002.69.008.692.008.934-.058 1.502-.406 2.734-1.512 3.392-3.045.137-.32.376-1.003.358-1.022-.007-.007-.087.033-.178.088-.23.142-.72.384-1.005.498a7.14 7.14 0 0 1-2.207.498l-.214.016-.17.16c-.6.565-1.503 1.102-2.328 1.386-.46.158-.746.223-2.226.504-.733.139-1.565.302-1.85.361-2.068.435-3.391.979-4.106 1.689-.243.24-.374.427-.516.73-.072.154-.15.274-.263.4a2.032 2.032 0 0 0-.422.802c-.093.372-.051.916.108 1.381.056.166.203.507.218.507a.79.79 0 0 0 .036-.138zm-.82-.868l-.025-.366-.26-.39a21.757 21.757 0 0 1-.468-.737c-.19-.319-.63-1.166-.753-1.452l-.051-.12.013.096c.026.182.15.674.237.943.193.6.513 1.261.86 1.783.157.235.453.628.464.617a3.887 3.887 0 0 0-.016-.374zm-.01-1.4c-.076-.396-.04-.932.086-1.249.053-.135.163-.356.176-.356.005 0 .044.095.086.21.076.212.18.415.211.414.01 0 .059-.071.11-.158.05-.086.16-.248.244-.36l.154-.203-.095-.06c-.306-.193-.585-.636-.705-1.117-.117-.475-.153-1.2-.088-1.794.018-.162.028-.3.022-.306-.017-.016-.35.399-.558.692a7.86 7.86 0 0 0-.865 1.589l-.106.264.104.294a9.417 9.417 0 0 0 1.255 2.35 1.269 1.269 0 0 0-.03-.21zm1.469-1.875c-.07-.29-.1-.672-.1-1.351 0-.653.005-.75.056-1.033.067-.368.191-.793.304-1.038.083-.178.323-.592.337-.578.004.004-.023.237-.06.517-.108.806-.13 1.103-.113 1.568.019.533.114 1.2.172 1.2.023 0 .03-.113.028-.498a5.641 5.641 0 0 1 .24-1.76c.2-.698.622-1.618 1.01-2.196a.872.872 0 0 0 .08-.135c0-.008-.063-.005-.139.006-.922.141-1.671.76-2.045 1.69l-.093.23.01-.163c.032-.469.125-1.128.19-1.345.008-.024-.015.01-.05.074-.277.512-.54 1.976-.539 3.004 0 .753.134 1.297.406 1.658.128.17.336.271.306.15zm1.274-.919c.212-.104.503-.187 1.772-.507.555-.14 1.138-.296 1.297-.349a4.045 4.045 0 0 0 1.568-.944c.462-.444.617-.68.763-1.162.067-.223.067-.224.11-.168.185.245.182.832-.005 1.2-.026.05-.038.093-.027.093.05 0 .315-.196.426-.315.291-.311.426-.595.66-1.39a3.77 3.77 0 0 1 .12-.368c.021-.024.108.176.16.373.028.104.04.24.04.44-.003.329-.063.58-.214.879l-.086.17.128-.069c.31-.166.875-.858 1.116-1.367a1.83 1.83 0 0 0 .21-.887c.002-.425-.087-.704-.344-1.075-.336-.485-1.093-1.05-1.755-1.311-.102-.04-.168-.091-.284-.22-.083-.092-.14-.167-.126-.167.03 0 .472.12.77.209.705.21 1.258.52 1.684.942.493.488.727 1.001.724 1.586-.003.518-.185.988-.586 1.519-.078.102-.14.19-.14.197 0 .02.384-.152.624-.278.303-.16.792-.49.98-.658.261-.237.61-.82.76-1.272.145-.441.169-.936.063-1.345-.093-.361-.33-.777-.625-1.099l-.127-.138h.122c.066 0 .127-.01.134-.022.03-.048-.04-.15-.148-.219-.186-.118-.263-.128-.606-.085-.385.049-.999.05-1.296.001-.257-.042-.543-.132-.681-.214l-.094-.056.873-.012c.665-.01.921-.022 1.075-.052.223-.043.38-.103.432-.167.03-.036.023-.051-.06-.138-.268-.277-.767-.62-1.27-.875a6.067 6.067 0 0 0-2.787-.659c-.387 0-.86.04-1.068.089l-.06.014.072-.077c.094-.1.408-.254.64-.312.41-.104.979-.14 1.533-.1.774.058 1.33.2 2.077.532.158.07.308.127.333.125.06-.005.134-.074.171-.162l.031-.072.075.161c.041.09.075.173.075.188 0 .059.044-.007.072-.11a.347.347 0 0 1 .052-.121c.024-.016.087.125.166.37l.056.173.124-.123c.147-.145.151-.14.172.174l.013.208.11-.069c.062-.038.118-.06.126-.052.008.01.038.093.068.185.087.27.205.494.342.652.07.081.166.219.212.306.046.087.094.155.105.152.038-.012.204-.307.284-.502a.733.733 0 0 1 .094-.187c.033 0 .052.267.04.567a2.001 2.001 0 0 0 0 .297.97.97 0 0 0 .125-.084.692.692 0 0 1 .133-.084c.051 0-.061.75-.145.967-.032.08.035.04.191-.116.087-.086.158-.143.158-.126 0 .061-.141.586-.192.716a3.69 3.69 0 0 1-.156.324 2.98 2.98 0 0 0-.237.547l-.017.067.117-.08c.128-.088.19-.115.893-.391.621-.244.971-.413 1.112-.539.15-.134.233-.297.233-.46v-.124l-.069.094c-.132.181-.446.44-.736.61l-.096.056.075-.082c.318-.35.536-.836.537-1.202 0-.132-.034-.324-.076-.427-.031-.075-.032-.073-.21.363-.205.504-.4.908-.531 1.102-.194.286-.483.544-.658.588-.06.015-.064.012-.042-.03.041-.076.097-.321.122-.536.014-.112.03-.669.038-1.237.013-1.012.03-1.281.093-1.551.031-.133.031-.136-.072-.408a5.899 5.899 0 0 0-.168-.402c-.067-.134-.215-.34-.244-.34-.01 0-.07.12-.137.267l-.12.267-.012-.225c-.01-.18-.022-.24-.064-.298a1.697 1.697 0 0 0-.437-.385 5.05 5.05 0 0 0-.721-.36c-.057-.017-.057-.016-.04.112.009.07.023.155.03.186.014.055.01.057-.077.04a.728.728 0 0 1-.407-.234c-.061-.066-.117-.115-.124-.108a.939.939 0 0 0 .06.224c.038.117.066.218.06.224-.016.016-.182-.048-.254-.1a1.152 1.152 0 0 1-.187-.247 1.473 1.473 0 0 0-.22-.287c-.156-.133-.228-.15-.97-.227a1.392 1.392 0 0 1-.449-.11c-.036-.015-.034 0 .016.114.032.072.066.17.074.216l.016.084-.104-.02c-.16-.03-.355-.108-.534-.216-.158-.096-.169-.098-.451-.116a3.625 3.625 0 0 0-.98.065l-.18.044.18.02c.24.025.45.092.577.185.103.074.189.16.19.191 0 .008-.19.02-.425.027-.676.018-1.102.125-1.701.425-.3.15-1.124.682-1.328.856-.12.103-.339.392-.34.447 0 .03.046.054.175.09.97.279 1.577.984 1.697 1.97.087.709.074 1.148-.045 1.62-.183.725-.656 1.424-1.186 1.753-.195.121-.6.277-.721.278h-.068l.124-.136c.29-.317.5-.72.642-1.233.079-.285.087-.586.02-.812-.048-.163-.063-.165-.11-.017a2.59 2.59 0 0 1-.255.536c-.05.077-.387.432-.766.81-.862.856-1.223 1.301-1.56 1.919a5.181 5.181 0 0 0-.54 1.635c-.05.396-.037 1.068.021 1.068.01 0 .094-.037.188-.084zm11.427-3.6c.621-.209 1.103-.434 1.51-.703.294-.194.681-.575.9-.884.214-.304.525-.963.477-1.012-.027-.026-.45.134-.592.224-.153.098-.245.172-.698.561-.446.383-.535.448-.763.557-.238.115-.38.126-.532.04a.33.33 0 0 1-.098-.068c0-.007.044-.04.096-.072.104-.065.304-.258.285-.277a2.006 2.006 0 0 0-.31.158c-.812.463-1.238.85-1.308 1.192-.02.098.005.1.263.016.628-.205 1.372-.596 2.308-1.213.272-.179.406-.252.528-.287a.664.664 0 0 1 .174-.036c.03.03-.27.375-.513.592-.608.542-1.16.908-1.798 1.189-.16.07-.279.128-.265.128.014 0 .165-.046.336-.104zm.89-3.788c.256-.385.336-.674.37-1.33.032-.619.098-.988.265-1.47.04-.114.067-.21.062-.216-.025-.025-.266.291-.35.46-.24.487-.428 1.344-.517 2.36-.02.222-.036.413-.036.425 0 .042.1-.07.206-.23z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Apache Flink</title><path d="M3.192 13.236c.028.035.064.069.098.101l.024.022.008.004a.736.736 0 0 0 .179.065 8.117 8.117 0 0 1-.138-1.758c.027-.797.178-1.47.462-2.059a8.02 8.02 0 0 1 .315-.519s-.176 1.202-.202 1.673a7.104 7.104 0 0 0 .16 1.868l.072-.05c-.043-.389-.042-.8.004-1.22a6.987 6.987 0 0 1 .419-1.721 9.266 9.266 0 0 1 .973-1.892c-1.985.209-2.418 2.1-2.418 2.1s.017-.347.024-.434c.057-.649.123-.961.205-1.287-.13.238-.212.488-.271.688-.139.47-.216.949-.273 1.356a9.022 9.022 0 0 0-.096 1.289c.002.38.024.828.176 1.263.073.205.164.373.279.511zm1.44-.737c.179-.113.385-.2.626-.268.425-.119.889-.239 1.461-.379l.19-.046c.478-.116.974-.237 1.439-.415.283-.108.552-.25.824-.436.38-.26.721-.579 1.012-.951.154-.196.232-.349.309-.605l.114-.378s.464.519-.004 1.436c.297-.107.582-.413.798-.788.181-.315.491-1.451.491-1.451s.569.875-.105 2.011a1.59 1.59 0 0 0 .356-.227c2.507-2.49.349-3.899-.103-4.236a4.141 4.141 0 0 0-.982-.525L11 5.218c-.03-.013-.047-.033-.055-.042l-.321-.35.563.155c.079.021.154.042.228.064.614.182 1.082.4 1.472.686.445.325 2.142 1.751.348 3.837.556-.191 1.606-.772 1.962-1.272 1.713-2.405-.254-3.808-.17-3.808.019 0 .044.002.099.01a.44.44 0 0 0 .069.006c.036 0 .097-.006.109-.041.015-.042-.014-.122-.073-.168-.154-.117-.321-.202-.533-.169C12.926 4.4 12.3 3.85 12.3 3.85s2.482.129 2.562-.28a4.92 4.92 0 0 0-1.225-.912 6.697 6.697 0 0 0-2.228-.743c-1.207-.179-2.13.053-2.13.053.096-.121.574-.667 2.556-.511.802.063 1.564.316 2.27.669.182.091.29-.125.293-.223.004-.114.201.379.203.405.019-.049.096-.308.112-.308.047 0 .24.603.24.603.002-.024.257-.286.257-.286.076.343.066.514.047.562.002-.009.267-.172.267-.172s.152.638.412.891c.084.082.238.296.328.527.19-.133.421-.799.421-.799s.119.353.019.988c.007-.008.301-.219.301-.219s.042.449-.15 1.008a.572.572 0 0 0-.022.095c.162-.091.404-.388.404-.388l-.042.188c-.048.214-.137.629-.327.953a2.549 2.549 0 0 0-.29.686c.049-.045.099-.085.152-.12.1-.065.199-.117.293-.151l.232-.085c.392-.142.788-.309 1.173-.479.812-.359.631-.86.631-.86-.209.408-.966.816-.966.816s.98-.878.562-1.905c-.115.27-.224.538-.327.792-.144.353-.314.726-.59 1.055-.141.168-.286.29-.446.373a.686.686 0 0 1-.115.048l-.043.016s.172-.283.184-1.063c.004-.282.012-.571.012-.826v-.054c0-.132-.003-.263-.002-.395.005-.558.015-.982.132-1.373-.012-.022-.005-.045-.018-.068-.027-.046-.047-.099-.071-.157-.036-.089-.066-.178-.101-.275-.127-.36-.308-.538-.365-.588-.038.115-.271.591-.271.591s.001-.365-.001-.393c-.067-.511-1.33-.972-1.356-.988l.067.401s-.382-.028-.545-.284c-.034-.052-.084-.09-.13-.125l.09.306.093.214s-.296-.024-.435-.269c-.033-.057-.075-.121-.112-.189a.746.746 0 0 0-.574-.396 8.393 8.393 0 0 0-.601-.062 1.301 1.301 0 0 1-.479-.11L12.573 0l.046.087c.015.029.025.058.04.095l.008.022.032.078.048.172s-.353-.014-.765-.299c-.089-.062-.201-.062-.325-.072L11.622.08a4.192 4.192 0 0 0-.332-.014 3.097 3.097 0 0 0-.974.149c.035-.002.071-.003.106-.003l.067.001c.677.012.887.413.887.413s-.606 0-.785.023c-.209.027-.42.052-.616.106a5.102 5.102 0 0 0-1.622.796c-.124.088-.253.17-.389.256-.23.147-.424.341-.576.577a.357.357 0 0 0-.034.068c-.014.036-.008.039.015.051a.78.78 0 0 0 .168.061 2.353 2.353 0 0 1 1.786 2.005l.015.123c.035.307.072.623.056.944a3.413 3.413 0 0 1-.901 2.191c-.59.646-1.323.69-1.316.685.435-.406.722-.95.876-1.66a1.395 1.395 0 0 0-.084-.828.868.868 0 0 0-.016.047c-.097.276-.22.594-.447.857-.132.15-.312.322-.521.521-.911.867-2.435 2.317-2.409 4.623 0 .135.027.3.056.427zm13.967-5.836c-.113.098-.226.196-.341.292-.205.171-.351.28-.666.394-.276.099-.488-.124-.488-.124a1.3 1.3 0 0 0 .447-.389 7.968 7.968 0 0 0-1.154.71 2.41 2.41 0 0 0-.389.353c-.124.156-.205.318-.205.484v.002c0-.003.044-.005.053-.007a6.122 6.122 0 0 0 1.226-.49 16.006 16.006 0 0 0 1.757-1.074.334.334 0 0 1 .095-.048l.371-.106-.228.314a.288.288 0 0 1-.027.034c-.745.741-1.517 1.272-2.36 1.622a4.734 4.734 0 0 1-.492.174 9.201 9.201 0 0 0 1.513-.525c.537-.244.913-.483 1.22-.772.475-.45.814-.981 1.009-1.576a.732.732 0 0 0 .024-.1l-.111.033c-.127.037-.258.074-.373.13a2.367 2.367 0 0 0-.427.286c-.158.127-.321.269-.454.383zM1.578 14.987c.128.205.268.407.403.602l.021.031c-.351-1.236.223-1.982.223-1.982l.142.391c.036.101.091.199.167.302.147-.275.326-.538.534-.784a1.438 1.438 0 0 1-.472-.415c-.2-.264-.332-.581-.415-.996a5.507 5.507 0 0 1-.069-1.562c.015-.174.036-.348.059-.525a8.377 8.377 0 0 0-1.626 2.716.046.046 0 0 0 .003.021 9.438 9.438 0 0 0 1.03 2.201zM18.221 3.353a5.045 5.045 0 0 1 .366-1.933l.018-.041a.94.94 0 0 0-.246.252c-.168.242-.291.53-.397.932-.182.687-.29 1.427-.337 2.308.192-.205.507-.657.572-1.215.011-.094.024-.199.024-.303zm3.368 19.012c-.396-.065-1.234-.36-1.468-.945-.288.707.306 1.221.75 1.451.077.04.1.05.181.082.084.037-.165.494.045.704.21.21.409.148.487.148 0 0 .361.335.567.111.053-.058.098-.262.029-.385-.086-.152-.295-.124-.315-.124-.41.005-.373-.188-.311-.27.045-.059.132-.055.205-.055.017 0 .034.001.053.004.094.011.184.016.268.016.335 0 .726-.035.985-.179.186-.104.491-.456.475-.692-.017.006-.825.319-1.951.134zm2.324-7.785c-.038-.097-.085-.196-.126-.283l-.06-.126c-.021-.047-.044-.093-.066-.139-.055-.111-.112-.226-.151-.35-.034-.106-.043-.216-.052-.32a3.312 3.312 0 0 0-1.886-2.716 1.25 1.25 0 0 1-.215.417c-.09.12-.144.138-.262.138-.157 0-.18-.18-.133-.265a1.45 1.45 0 0 0 .196-.543c.033-.377-.177-.786-.435-1.068-.239-.261-.649-.564-.979-.663-.079.307.017.812.124 1.109.132.36.544 1.069.445 1.499 0 0-.029.275-.304.448-.153.096-.215.053-.215.053.294-.627.297-.891-.028-1.485-.245-.447-.358-.899-.27-1.398.003-.02.01-.04.014-.06a2.222 2.222 0 0 1-.088.199c-.25.439-.486.667-.628 1.121-.149.508.01 1.059.325 1.598a1.237 1.237 0 0 1-.553-.804 4.323 4.323 0 0 0-1.334 1.166c-.08.104-.175.191-.259.268a4.92 4.92 0 0 1-1.978 1.099c-.493.145-1.001.267-1.502.388l-.131.031c-.683.165-1.409.351-2.097.657-.792.352-1.42.757-1.918 1.239a4.412 4.412 0 0 0-1.326 2.593c-.114.781-.055 1.595.18 2.49.008.032-1.03-.941-.494-3.741a6.322 6.322 0 0 0-.236-.007l-.067.001c-1.933.058-2.737 1.123-2.737 1.123s.126-1.182 1.987-1.579c.14-.03 1.312-.293 1.352-.306.154-.314.341-.612.557-.889l-.166.026c-.319.05-.648.1-.975.143l-.252.03c-.577.074-1.174.149-1.74.316-.594.174-1.059.426-1.422.768-.389.366-.668.839-.852 1.442l-.023.086c-.013.05-.026.101-.045.151-.02.052-.024.11.018.22.348.923.945 1.723 1.774 2.376a7.587 7.587 0 0 0 2.146 1.18c.026.009.07.024.109.064l.348.337-.544-.13c-.064-.015-.127-.029-.191-.047-1.114-.306-2.085-.821-2.885-1.532-.273-.099-1.668-.794-2.26-1.936l-.099-.19s.757.746 1.288.855a5.59 5.59 0 0 1-.564-1.22.283.283 0 0 0-.049-.087C1.273 17.196.624 16.054.196 14.834a4.708 4.708 0 0 1-.085-.262c-.043.355-.064.71-.064 1.057 0 .11.955 2.647.955 2.647s-.42-.467-.768-1.059c0 0-.061-.199-.069-.212.149.897.439 1.74.863 2.521 1.167 2.147 2.956 3.554 5.47 4.212a7.73 7.73 0 0 0 1.955.255l7.855.007c.369 0 .652-.022.915-.07l.041-.007a1.47 1.47 0 0 1 .281-.034c.106.001.219.014.345.044l.062.015c.116.026.224.052.331.052 1.32.01 1.137-.785 1.137-.785-.055-.207-.295-.351-.557-.413a1.204 1.204 0 0 0-.28-.033c-.179 0-.367.041-.559.12l-.288.123-.172.075a1.317 1.317 0 0 1-.098.038.54.54 0 0 1-.17.036c-.199 0-.208-.195-.213-.312a.46.46 0 0 1 .169-.373c.093-.079.194-.156.302-.228.195-.132.396-.268.551-.446a1.49 1.49 0 0 0 .361-.699.825.825 0 0 0-.044-.469c-.014-.035-.027-.042-.04-.046a9.037 9.037 0 0 0-.368-.112c-.488-.137-.847-.342-1.127-.643a2.803 2.803 0 0 1-.439-.671 5.783 5.783 0 0 1-.416-1.096c-.159-.601-.536-1.083-1.15-1.472a3.536 3.536 0 0 0-1.557-.524c-.137-.015-.276-.021-.423-.028-.037-.002-.122-.013-.208-.024-.077-.01-.153-.021-.188-.022l-.21-.013s.054-.076.489-.242c.082-.031.167-.039.25-.054.201-.035.4-.053.59-.053.458 0 .891.106 1.288.314.494.26.888.656 1.206 1.211.173.302.309.626.416.992.021.07.038.14.058.216.035.134.071.271.122.396.307.756.876 1.198 1.69 1.315.216.031.426.046.626.046a3.48 3.48 0 0 0 1.077-.165c.455-.149.803-.382 1.062-.712a1.42 1.42 0 0 0 .255-.494l.035-.121.203.048c.043.011.086.021.13.03a.483.483 0 0 0 .094.009c.092 0 .186-.022.288-.044l.017-.004c.076-.017.15-.02.222-.023l.061-.003c.072 0 .132.048.159.093.031.053.081.083.175.104a.367.367 0 0 0 .075.007c.229 0 .47-.21.476-.416.003-.079-.018-.127-.07-.163-.041-.028-.083-.054-.131-.084l-.228-.143.152-.116a.245.245 0 0 1 .147-.051c.045 0 .085.013.12.028 0 0-.191-1.01-1.527-.716 0 0-.217.089-.328.131l-.052.02a.27.27 0 0 1-.101.019.358.358 0 0 1-.166-.047c-.468-.235-.926-.131-1.002-.131a2.28 2.28 0 0 1-.538-.059.222.222 0 0 1-.116-.067l-.086-.097a2.634 2.634 0 0 1-1.183-.197c-.436-.186-.784-.47-.995-.903a1.487 1.487 0 0 1-.15-.685l.026.067c.084.248.208.474.374.678.306.379.701.634 1.15.813.243.097.495.165.764.21 0 0 .955.036 1.38-.317.323-.18.614-.264.917-.264h.063c1.027-.001 1.118-.498 1.118-.498s.117.076.281.051a.666.666 0 0 0 .604-.63l-.34-.306-.072-.063-.134-.106.092-.105a.274.274 0 0 1 .207-.099c.046 0 .091.012.134.035.061.034.115.077.164.117l.051.04.064.05a.559.559 0 0 0-.036-.265zm-1.267-.273c-.038.106-.088.123-.199.099a.688.688 0 0 0-.181-.014c-.111.005-.221.024-.332.026-.277.005-.543-.045-.763-.225-.312-.256-.372-.559-.177-.943l.004.037a.745.745 0 0 0 .345.611c.18.121.385.17.595.196.17.021.338.05.487.142l.041.021a.043.043 0 0 1 .006-.007c-.029-.041-.039-.183-.024-.242a.565.565 0 0 0 .002-.297.622.622 0 0 1-.25.304.076.076 0 0 1-.053.02 2.53 2.53 0 0 1-.654-.233c-.186-.102-.283-.261-.234-.484a.198.198 0 0 0-.056-.189c-.023-.023-.043-.05-.067-.078.055-.051.102-.1.155-.143.05-.04.102-.078.158-.109.432-.245 1.016-.061 1.208.389.049.114.075.24.089.363.028.259-.013.511-.1.756zm-20.67 2.926c-.02-.237-.033-.474-.046-.756a.102.102 0 0 0-.021-.064c-.63-.909-1.089-1.696-1.446-2.476a7.292 7.292 0 0 1-.169-.394 7.748 7.748 0 0 0 1.682 3.694v-.004zm18.991 4.103c.176.117.395.203.732.287.34.085.653.125.966.125.185 0 .334-.019.47-.059a.81.81 0 0 0 .59-.639 6.03 6.03 0 0 0 .128-.713 1.798 1.798 0 0 0-.372-1.323c-.035.031-.07.061-.106.089a1.104 1.104 0 0 1-.198.121.658.658 0 0 1-.291.072.593.593 0 0 1-.281-.072.96.96 0 0 0-.461-.104c-.063 0-.131.005-.208.013-.027.003-.039.009-.054.04-.258.531-.683.908-1.298 1.154l-.017.007-.003.013a1.15 1.15 0 0 0-.001.454c.054.216.185.391.404.535zM14.99 9.512c-.516.525-1.141.958-1.964 1.364-.52.256-1.1.441-1.826.582-.415.081-.829.159-1.243.237l-.086.015-1.056.2c-.929.178-1.92.389-2.872.71-.691.234-1.224.481-1.677.779-.444.291-.75.591-.965.943a2.637 2.637 0 0 0-.146.291 5.696 5.696 0 0 1-.075.159.42.42 0 0 1-.076.114c-.484.473-.69 1.064-.613 1.756.046.416.176.821.395 1.236.127-.846.574-1.492 1.328-1.92.41-.233.863-.403 1.383-.517.526-.117 1.06-.214 1.561-.304l.307-.054c.516-.091 1.051-.184 1.558-.345.12-.038.238-.08.348-.121.147-.055.275-.12.391-.206.141-.105.289-.2.444-.291-.653-.015-1.76-.017-2.104-.019-.77-.004-1.3.06-1.964.312-.694.264-2.676 1.271-2.676 1.271s.985-1.054 2.837-1.844a7.858 7.858 0 0 1 2.928-.53c.275 0 .561.011.872.033.512.038 1.024.075 1.535.11l.014.001c.024 0 .05-.004.075-.011a10.63 10.63 0 0 1 1.572-.325c.175-.025.353-.061.528-.097-.034-.011-.069-.02-.103-.03a1.13 1.13 0 0 1-.118-.044l-.088-.035-.345-.233 1.296.028c.279 0 3.032-.443 4.21-3.723.078-.219.16-.437.223-.676a7.611 7.611 0 0 1-2.669 1.063 7.155 7.155 0 0 1-1.139.121zm4.784-1.871zm1.701 5.622a.27.27 0 1 0 .54 0 .27.27 0 0 0-.54 0z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/apachegroovy.svg b/assets/lib/simple-icons/icons/apachegroovy.svg
new file mode 100644
index 00000000..651e36e0
--- /dev/null
+++ b/assets/lib/simple-icons/icons/apachegroovy.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Apache Groovy</title><path d="M11.997 6.012S10.315 8.8 9.516 10.155c-.155.058-.172.041-.341.207-.41-.47-.897-.041-1.028.22-.057-.566-.151-.567-.279-.694.074-.496.316-1.305-.241-1.884-1.078-.727-2.326 1.05-3.021 1.982l-.375.622c-1.546-.032-2.763.008-4.231-.021 1.79.67 1.864.686 4.026 1.506 0 .066.161.372.34.552.147.15.308.234.389.284-.106.054-.32.138-.385.258-.292.546.139.672.418 1.107.315.568.382.944 1.126.625.254-.11.562-.148.758-.21-.693 1.094-.87 1.392-2.083 3.274l.012.004c4.85-1.893 4.974-1.942 7.373-2.89 3.448 1.338 3.646 1.448 7.432 2.891-.529-.826-.89-1.343-1.274-1.995.151-.013.483-.046.777-.233.213-.135.463-.288.688-.574.443-.565.551-1.277.39-2.166-.078-.423-.235-.834-.213-.85 2.061-.778 2.304-.862 4.226-1.587-2.31.034-2.422.01-4.591.016-.036-.414-.244-.627-.882-.606-.238.039-.389.12-.5.445-.357-.657-.85-.464-1.06-.14-.275-.282-.917-.377-1.24-.17-.238-.112-.514-.112-.757.177-.175-.146-.23-.188-.614-.342-.886-1.497-1.622-2.692-2.36-3.951zm.012.802c.35.535 1.552 2.61 1.849 3.074-.337.023-.668.202-.918.562-.217-.224-.47-.445-.917-.463-.544-.093-.834.148-1.2.568-.108-.365-.53-.45-.896-.28.327-.519 1.872-3.122 2.082-3.46zM7.45 9.128c-.05 1.434-1.068 2.712-1.798 2.245-.551-.449.149-1.584.59-1.985-.033.307.246.498.023.77-.446.543-.27.936-.078.996.513.162 1.004-1.227 1.004-2.201 0-.625-.366-.613-1.086.136-.983 1.022-1.513 2.012-1.16 2.69.197.38.485.651.959.594.925-.11 1.483-1.254 1.543-1.988.148-.003.109.01.148-.02 0 .129.177.755.317 1.166.183.702.964 2.11-1.369 2.658-.44.11-.614.148-1.05.32-.213-.443-.263-.585-.697-1.013.588-.205.593-.185.972-.317 1.467-.51 1.908-.947 1.857-1.57 0 0 .018-.32-.185-.588a2.613 2.613 0 0 1-.293.645c-.437.68-1.296 1.101-2.06.833-.417-.146-.596-.466-.596-1.015 0-.703 1.601-2.735 2.387-3.08.555-.165.579.293.571.724zm6.502 1.3c.26.006.543.133.735.34.594.64.529 1.417.163 1.905-.435.581-1.532.324-1.791-.488-.12-.378.095-1.312.475-1.624a.628.628 0 0 1 .418-.132zm-2.113.066a.502.502 0 0 1 .117.017c.503.03.61.313.701.56.231.626.173 1.212-.301 1.691-.711.719-1.54.401-1.536-.567.014-.69.443-1.715 1.02-1.7zm1.868.038c-.383.287-.432 1.023-.08 1.296.138.13.215.22.613.256.273.024.704-.253.725-.527.01-.125-.013-.333-.312-.67-.252-.283-.579-.349-.661-.3-.265.156.021.28.125.383.162.163.2.234.125.282a.447.447 0 0 1-.372.057c-.105-.049-.456-.246-.163-.777zm3.759.003c.167.26.215.316.402.965.24.838.546 1.163.816 1.01.74-.418.148-1.476-.113-1.974.167-.002.134.007.286.005.12.471.086.387.407 1.813.385 1.706.442 2.16-.528 2.926-.446.352-1.103.37-1.667.34l-.636-.095c.438-.287.545-.557.542-1.116 1.278.535 1.959.132 2.23-.526.132-.317.086-.735-.04-1.471.008.6-.005.71-.084 1.007-.158.595-.547.76-.812.34-.102-.163-.345-.702-.42-1.282-.075-.58-.132-1.395-.5-1.736.04-.08.082-.17.117-.206zm-1.247.01c.258.068.572.204.74.52.234.436.388.668.376 1.447-.014.832-.34 1.055-.557 1.086-.278.04-.762.034-1.049-1.598-.095-.541-.268-1.056-.45-1.224.09-.11.097-.096.165-.204.091.1.17.27.298.777.202.808.387.975.745 1.02.558.072.778-.78.318-1.391-.1-.134-.365-.307-.503-.236.008.236.113.162.114.318-.026.185-.053.219-.113.32-.142-.056-.21-.078-.334-.291-.157-.31-.055-.6.25-.544zm-4.597.076c-.263.185-.594.8-.304 1.35.143.205.297.372.638.3.245-.051.671-.34.73-.749.052-.35-.456-1.028-.738-.87-.327.183-.128.314.074.511.185.18.052.289-.077.342-.258.106-.403.003-.467-.203-.065-.205-.01-.38.144-.68zm-2.867.064c.056.172.1.402.218.624.028.023.132 0 .269-.157.086-.1.185-.238.357-.463.104.095.113.166.142.219.073.13.225.12.273.106.168-.167.195-.275.306-.29.01.216.021.35-.257.677a.535.535 0 0 1-.501.172c-.12-.034-.199-.108-.389-.205-.258.04-.19.315-.143.546.12.611.5.855.832.675.116-.062.09-.062.312-.153-.038.388-.06.463.01.896-.541.301-.982.25-1.102-.506-.091-.632-.261-1.4-.415-1.556-.145-.147-.205-.195-.205-.195l.293-.39zm-7.114.082c.753.01 1.602.01 2.506.017-.13.318-.175.54-.193.854-.422-.163-1.877-.684-2.313-.871zm20.723.01c-.997.359-1.715.637-2.677 1.004-.105-.45-.124-.588-.219-.994 1.601-.005 1.628-.002 2.896-.01zm-6.978 2.04c.105.43.253.641.253.641.202.348.454.545.84.645.085.136.115.163.148.236.037.457.01.514-.344.774-.209.204-.218.497-.003.769.231.22.474.298 1.375.064.174.3.418.653.776 1.217-1.206-.455-2.868-1.103-6.43-2.49 0 0-4.169 1.62-6.404 2.491.935-1.474 1.012-1.599 1.677-2.63.225-.089.149-.053.349-.155.459-.245.827-.61 1.028-1.145.368.83.779.925 1.636.655.177-.082.38-.2.424-.518.46.413 1.432.49 2.142-.382.612.717 2.001.785 2.533-.171zm2.157.865s.04.129.064.169c-.101.003-.213 0-.213 0a.905.905 0 0 0 .149-.17z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/apachehadoop.svg b/assets/lib/simple-icons/icons/apachehadoop.svg
new file mode 100644
index 00000000..6794587f
--- /dev/null
+++ b/assets/lib/simple-icons/icons/apachehadoop.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Apache Hadoop</title><path d="M12.098 3.01c-1.133.277-1.466.474-1.842 1.787.478-.962.84-1.315 1.842-1.787zm3.228.076c-.834-.053-1.715.177-2.756.615a3.97 3.97 0 00-1.199.76c-.31.287-.576.62-.866 1.006a1.312 1.312 0 00-.468.095 1.868 1.868 0 00-.539.356c-.141.124-.28.252-.416.383v.002c-.123.12-.244.241-.363.365-.945.152-1.72.32-2.41.588a6.314 6.314 0 00-1.97 1.217c-.252.222-.482.469-.687.736a5.435 5.435 0 00-.503.803c-.13.142-.26.288-.399.414a1.45 1.45 0 01-.441.285c-.093.035-.133.058-.137.056-.004-.001-.008-.033-.012-.047.235-.21.267-.55.289-.86.03.034.053.068.082.113.031.047.062.095.1.142l.158.2.055-.249c.046-.208.081-.484.027-.724-.034-.153-.117-.315-.235-.393l.036-.09c.04-.1.08-.204.115-.303l.069-.193-.204.035c-.27.047-.852.366-1.261.791-.152.158-.284.33-.37.514a.984.984 0 00-.093.59.91.91 0 00.272.498c.03.12.058.223.087.316.033.104.068.198.112.29.119.247.31.398.529.468.182.059.369.066.566.02a3.83 3.83 0 00-.072.69 8.911 8.911 0 00.07 1.394c.013.093.028.184.045.275l-.107.291-.166.455-.37.365-.343.34a9.22 9.22 0 01-.082.08c-.232.224-.279.27-.213.662.04.241.119.484.242.72.114.216.267.427.463.624.245.245.647.55 1.066.71.245.092.488.138.723.097l-.039.11a4.046 4.046 0 01-.123.3c-.285.624.008.95.463 1.158.227.104.497.173.748.238l.168.045c.298.08.812.228 1.281.258.513.033.974-.073 1.098-.533.049-.182.078-.322.09-.459a2.33 2.33 0 00-.01-.406c.144-.32.21-.423.316-.578l.053-.08c.115-.17.168-.29.188-.426.018-.131.004-.262-.02-.461l-.011-.084a6.822 6.822 0 001.338.05l-.118.061-.055.03c-.395.203-.413.587-.289.984.112.357.343.723.487.945.303.467.592.861.943 1.076.368.226.786.253 1.328-.04.276-.15.363-.302.48-.507.038-.066.08-.133.126-.204.101-.05.382-.296.67-.534l.296-.242c.073.053.164.09.27.115.14.034.305.05.504.065.149.01.635.01.949.01h.227c.324.001.585-.016.783-.128.21-.119.334-.331.361-.71a1.28 1.28 0 00-.008-.378.946.946 0 00-.136-.312l-.014-.502-.016-.521a2.372 2.372 0 00-.068-.536 3.558 3.558 0 00-.18-.505c-.053-.127-.096-.245-.138-.36a5.756 5.756 0 00-.229-.547l.018-.123.181.174.266.258c.203.196.39.373.607.502.226.133.479.21.807.195a1.925 1.925 0 001.016-.385c.293-.216.528-.509.627-.832l.084-.279.07-.225c.482.082.998.11 1.498.057a3.7 3.7 0 001.351-.389 3.406 3.406 0 001.35-1.33h.002v-.002c.355-.616.555-1.34.63-2.088.062-.599.028-1.415-.097-2.2-.11-.701-.295-1.38-.55-1.87a.736.736 0 00-.137-.178 1.413 1.413 0 00-.51-.31c-.206-.07-.422-.084-.594.006a.485.485 0 00-.123.09 2.793 2.793 0 00-.3.388c-.106.153-.21.307-.337.414-.149.128-.327.202-.502.272a3.454 3.454 0 00-.261-.508 4.81 4.81 0 00-.399-.54 2.21 2.21 0 00-.365-.349 5.357 5.357 0 00-.41-.275c-.407-.255-.754-.559-1.108-.87-.16-.14-.323-.282-.482-.413-.842-.695-1.628-1.031-2.469-1.084zm-4.129.004c-.57.137-.68.245-.851.804.273-.41.43-.545.851-.804zm3.952.465c.829-.001 1.587.303 2.431 1.013.412.347.774.684 1.192.983-.152.013-.283.04-.455.107.21-.04.451 0 .67.04.06.039.124.078.189.116.295.174.463.27.662.547.21.294.386.589.541.912-.101-.036-.186-.067-.262-.09a.566.566 0 00-.533.034l-.012.006c-.163.079-.416.17-.586.197a.7.7 0 00.405-.006.565.565 0 00-.018.539.269.269 0 01-.02-.12.228.228 0 01.249-.208.233.233 0 01.187.33c-.117.02-.233.055-.353.1a4.41 4.41 0 00-.237.095 3.722 3.722 0 011.084-.02c.025.117.05.24.073.366l-.137.01-.012.002c-.174-.14-.367-.117-.633-.057-.806.184-.617.637-.988 1.318.385-.47.357-.962.984-1.11.147-.036.247-.078.346-.063-.178.09-.333.237-.394.41-.173.486-.065.895-.254 1.35.234-.407.249-.802.459-1.23.075-.153.354-.4.525-.403l.14-.002c.042.27.068.539.052.761a8.535 8.535 0 01-.198 1.24c.213-.272.31-.85.403-1.257.097-.424.07-.934-.014-1.389-.117-.625.527-.522.9-.816.275-.217.463-.564.715-.809.25-.243.644.114.742.352.426 1.03.62 2.65.508 3.69-.126 1.164-.69 2.437-1.719 3.01-1.31.732-2.854.285-4.156-.154-.278-.093-.47-.229-.715-.382.067.3.097.615.008.914-.14.474-.367 1.251.277 1.394.246.055.357.048.704-.13a1.3 1.3 0 01-.616.011.397.397 0 01-.314-.273c.06.044.16.066.33.107.478.115.932-.114 1.021-.445.052-.194.043-.295.153-.559.099.03.202.059.306.084l-.177.578c-.154.501-.752.904-1.28.895-.488-.009-.797-.314-1.134-.613l-.678-.6a5.228 5.228 0 01-1.658-.834c.4.472.673.732 1.232.967-.081.83-.37 1.436-.615 2.23-.111.36-.991 1.8-1.234 1.94-.174.1-1.26 1.016-1.465 1.136-.153.203-.287.483-.516.604-.698.37-1.148-.339-1.523-.936-.171-.272-.645-1.054-.23-1.273.39-.208.61-.357 1.009-.62.059.108.159.212.225.32l-.043-.352a2.752 2.752 0 01-.008-.596c.016-.206.03-.413.047-.62-.06.21-.179.42-.239.63-.024.084-.045.152-.056.214a7.05 7.05 0 01-2.682.034 16.76 16.76 0 00-.185-.926c-.018.278-.007 1.047-.008 1.476-.001.333-.016.448-.188.731-.16.265-.228.325-.453.773.019.283.019.47-.057.739-.125.446-1.386.098-1.718.007-.41-.112-1.256-.278-1.043-.824.187-.48.307-.986.398-1.658-.75-1.08-1.448-2.56-1.582-3.873-.104-1.019-.04-1.646.18-2.27.35-.987.837-1.843 1.62-2.53C5.778 7.89 6.767 7.516 8.316 7.28c-.373.417-.741.858-1.143 1.33-.406.479-.648.963-.906 1.487-.357.722-.348.996.125 1.63.407.547.627.794.804 1.328-.146.303-.2.56-.25.973.5.545.87.918 1.354 1.033.475.113.872.093 1.297-.125.944-.482 1.816-1.107 2.88-1.132.493-1.211.444-2.222.208-3.393-.162-.8-.227-1.557-.278-2.373-.2.84-.236 1.577-.088 2.414.18 1.008.318 2.124-.18 3.01-.962.073-1.788.658-2.655 1.107-.35.18-.712.198-1.098.092-.358-.098-.6-.334-.986-.78-.006-.446.095-.653.3-1.058.33-.65.695-1.255 1.094-1.894-.49.59-.953 1.084-1.338 1.677-.147-.419-.358-.633-.707-1.105-.34-.461-.375-.662-.12-1.196.255-.536.472-1.008.907-1.478.753-.813 1.443-1.717 2.266-2.518.447-.434.628-.42 1.22-.51a20.768 20.768 0 001.606-.31 22.5 22.5 0 01-1.553.08h-.015c.506-.646.799-1.006 1.62-1.363.95-.412 1.738-.652 2.47-.652zm.556 2.79c-1.101.276-1.307.739-1.166 1.45.121-.535.335-1.05 1.166-1.45zm-3.263.061c-.446.05-.89.096-1.336.139-.375.035-.436.03-.702.293-.403.399-.794 1.768-.92 2.316.198-.455.69-1.729 1.069-2.053.105-.09.18-.143.258-.183-.271.455-.252.566-.157 1.176.081-.62.295-.859.647-1.32a9.287 9.287 0 001.14-.368zm10.226.053c-.255.517-.65.95-1.185 1.215-.288.142-.47.093-.791.062.326.094.533.21.853.096.652-.233.967-.756 1.123-1.373zm-2.28.834c.023.047.046.096.067.144a.602.602 0 00-.05.041.572.572 0 00-.126-.181l.11-.004zm-3.26.4c-.36.166-.779.126-1.087.334-.271.184-.646.764-.922 1.01.2-.078.394-.212.57-.354.002.22.101.426.27.565a.31.31 0 01.092-.492.312.312 0 01.432.191c-.148.11-.284.238-.397.387a1.666 1.666 0 00-.24.44 4.222 4.222 0 012.002-1.294c-.2-.003-.437.034-.678.114a.732.732 0 00-.482-.614c.16-.085.316-.175.44-.287zm-1.042 1.64a.735.735 0 01-.125-.083.35.35 0 00.125.084zM1.32 8.34c-.953.672-1.19.978-1.062 2.338C.352 9.608.56 9.145 1.32 8.34zm-.808.404c-.482.336-.545.475-.5 1.059.105-.482.203-.664.5-1.059zm1.779.195c-.07.15-.118.264-.152.381-.147.508.066.962-.395 1.33.217.438.207.612.711.41.195-.078.355-.187.498-.316-.07.18-.133.361-.191.545l-.03.094c-.36.153-.834.25-1.015-.13a3.458 3.458 0 01-.203-.595c-.594-.615.294-1.427.777-1.719zm.123.276c.123.071.156.2.17.375-.073-.074-.132-.122-.227-.112.008-.06.019-.119.034-.177.007-.03.014-.058.023-.086zm14.87 3.267c-.131.022-.365.07-.495.092-.348.059-.387.142-.441.484l-.086.524a9.16 9.16 0 01.228-.568c.084-.184.132-.202.31-.3.127-.068.357-.163.483-.232zm-14.47 2.4c.274.946.738 1.876 1.255 2.657v.014a.993.993 0 01-.149.369c-.369.493-1.306-.23-1.578-.508-.297-.303-.496-.662-.543-.998-.034-.246-.001-.252.17-.426l.693-.701.153-.406zm12.405.62c.056.183.101.364.183.558.138.326.205.526.215.875l.032 1.106c.117.206.136.249.115.484-.043.481-.203.513-.625.506-.192-.003-.957-.007-1.15-.023-.274-.024-.429-.05-.512-.112.43-.316 1.162-1.619 1.304-2.068.151-.474.315-.888.438-1.326z"/></svg>
diff --git a/assets/lib/simple-icons/icons/apachehive.svg b/assets/lib/simple-icons/icons/apachehive.svg
new file mode 100644
index 00000000..ae828a29
--- /dev/null
+++ b/assets/lib/simple-icons/icons/apachehive.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Apache Hive</title><path d="M5.902.258c-.331.216-.65.525-.994.877-.569.589-.947 1.164-1.526 1.59-.116.1-.441.26-.85.284-.192.01-.318.042-.672-.003-.312-.169-.608-.059-.897.287-.317.456-.72 1.322-.886 1.868-.345 1.39.533 2.536 1.375 3.42.749.73 1.18 1.188 1.488 1.859.233.435.405 1.032.592 1.45.067.133.053.132.235.172.39.084.934.084 1.417.126.209.003.496-.005.768-.033.375-.071.815-.14 1.185-.268.36-.09.682-.212.971-.325-.037.126-.313.249-.416.41-.962 1.376-1.24 2.605-1.09 4.51l-.008-.007.011.05.006.077c.097.874.298 1.6.6 2.43a6.8 6.8 0 0 0 .717 1.38c.072.101.152.205.238.31h-.002l.005.004c.93 1.13 2.706 2.45 5.098 2.986.457.062.975.029 1.463-.1 1.292-.392 3.925-1.319 3.925-1.319s-2.337.194-3.408.088c-.248-.039-.52-.052-.693-.221-.03-.037-.135-.25-.067-.251.093-.003.36-.113.77-.15-.877-.094-.865-.093-.929-.253a9.968 9.968 0 0 0-.409-.884c.386.033 1.24.08 1.529-.218 0 0-.505.058-.951.006a2.76 2.76 0 0 1-.484-.137c-.2-.079-.365-.103-.404-.154-.07-.177-.116-.236-.2-.473-.114-.315-.123-.665-.145-.986.292.36.664.663 1.157.818.006-.013.638.275 1.098.127l.088-.029c-.045.009-.307.02-.409-.03-.934-.398-1.075-.745-1.226-.918l-.403-.604c.123-.245.192-.254.355-.256.491.054.705.096 1.004.024.203.416.257.835.718 1.137 1.533.456 1.866-.135 2.237-.656 1.104.81 2.9 1.059 4.147.014 1.586-1.835 2.088-4.728 1.947-4.893-.198-.336-.457-.683-.68-.635-.796.217-1.09.62-1.877.529.094-.006.252-.008.253-.017.06-.667-.005-.99-.034-1.046-.24-.527-.554-1.082-.772-1.498-.057-.086-.223-.742-.5-1-.12-.102-.41-.37-.41-.37l-.026.285s.114.017.158.193c.079.322.313.854.542 1.33h-.37l.424.11c.228.465.437.852.467.888.193.312.148.673.155.98l-.11.055c-.017-.361-.405-.335-.732-.338l-.268-.066c.082.076.334.07.232.233-.086.046-.125.242-.174.407l-.145.007c.256.1.494.188.776.306l.142.021-.142.357-.193-.078-.007-.135c-.34-.136-.995-.193-1.019-.165-.242.237-.418.524-.609.8.262-.204.46-.512.813-.597.028-.003.378.065.568.098-.122.025-.32.034-.35.077-.269.332-.466.736-.697 1.105.319-.329.416-.666.957-.985.045-.03.375-.023.536.058-.051.183-.167.401-.26.607-.133.313-.386.601-.58.902.608-.74.435-.469.841-.946.17-.404.34-.84.497-1.271l.03-.016c.054.033.47-.008.795.012.559-.12.535-.367 1.018-.404.325-.025.358.586.353.634a7.248 7.248 0 0 1-.58 2.174c-.652 1.258-1.383 2.388-2.42 2.545-1.265.221-1.922-.332-2.608-.684l-.262.224c-.891.887-1.949.808-2.382-.351l-.003-.006a2.839 2.839 0 0 0-.092-.175c-.127-.246-.25-.495-.402-.724-1.338-1.058-.72-2.022-.364-2.632-.744-.188-1.73-.588-1.866-1.113-.219-1.7-.108-2.24.11-3.113-.996.21-2.006.419-3.077.776l-.001-.008c-.286.064-1.246.416-1.518.563-.617.179-1.13.366-1.917.563a2.934 2.934 0 0 1-.753-.002c-.566-.077-1.531-.008-1.593-.065-.383-.535-.488-1.493-.838-2.006l-.004-.005-.005-.004c-.203-.275-.441-.498-.675-.73C1.49 8.213.773 7.407.572 6.554c-.05-.252-.18-.513-.112-1.258l.002-.004.001-.003c.202-.697.53-1.265 1.087-1.834.58.01 1.153.022 1.6.108.205.034.631.09 1.071.254 1.115.415 2.587 1.097 2.587 1.097-1.105-.607-2.34-1.395-3.121-1.554-.117-.017-.188-.07-.222-.162 1.173-.69 1.388-1.502 2.16-2.23.353-.154.49-.232.79-.265 2.774.439 4.52 1.543 5.9 2.282.56.304 1.07.535 1.557.812.426.14 1.713 1.113 2.09 1.637.383.807.662 1.68.917 2.522.183.857.343 1.204.343 1.204s-.155-.716-.13-.845c.162.06.542.18.7.16 0 0-.705-.364-.797-.686-.296-1.033-.594-2.641-.674-2.725-.226-.284-1.168-1.005-1.746-1.339-.218-.126-.336-.204-.345-.26.184-.186.412-.433.617-.59.195-.15.374-.32.647-.42 1.2-.541 1.886.207 2.05.056 0 0-.259-.296-.144-.247.117.063.5.138.542.177.437.342 1.581 1.593 2.27 2.913.166.323.233.536.156.925-.077.39-.136.604-.22.864-.076.174-.505 1.365-.503 1.525-.087.653.28 1.471.28 1.471.003-.222-.014-.34.006-.499l.025-.284s-.016-.075-.013-.105c.019-.196.067-.361.081-.474.138-.853.377-1.467.65-2.216.08-.189.185-.294.18-.438.005-.255-.224-.598-.389-.933a10.141 10.141 0 0 0-.627-1.112c-.596-.857-1.103-1.527-2.033-1.947-.26-.114-1.284-.226-1.638-.16-.429.09-.797.178-1.092.367-.462.296-.826.755-1.252 1.025-.944-.472-1.4-.825-1.484-.874-.561-.3-1.234-.649-1.958-.98-.348-.321-2.504-1.096-4.479-1.25zm9.705 19.318c.004 0 .007-.001.007-.002zm1.957-16.262c.05.26.091.517.287.844.42.463.571.79.63.935.205.526.369 1.052.519 1.578-.05-.548-.237-1.136-.313-1.66-.043-.24-.954-1.68-1.123-1.697zm-7.078 2.51c1.051.267 2.609.274 3.368.743.011.041-.02.068-.066.09-.187-.026-.372-.077-.57-.03-.29.093-.548.269-.822.406.754-.154.965.027 1.538.075.62.236.985 1.375 1.394 1.696-.378-.827-.617-2.06-1.355-2.714-.917-.294-2.267-.226-3.487-.267zm6.987 4.916a3.036 3.036 0 0 0-.668.066c-.16.215-.17.433-.24.635.476-.525.665-.557 1.427-.666a4.429 4.429 0 0 0-.52-.035zm-7.787.365c.496 1.86 1.516 3.733 2.53 5.44.39.496.497.718 1.087 1.018-.049.103-.103.23-.162.376-1.132-.559-2.067-1.232-3.008-1.91-1.512-1.104-1.89-2.418-2.155-4.136a.363.363 0 0 1 .12-.108 4.556 4.556 0 0 1 1.588-.68zm8.185 1.135c-.466-.002-.851.16-1.351.482 0 0 .554-.08.544-.03-.037.175.048.575.073.602l.006-.005c0 .006-.003.008-.006.005l-.306.25c.654-.329 1.341-.263 2.039-.313 0 0-.588-.162-.552-.167.131-.019-.035-.613-.08-.626a4.2 4.2 0 0 1 .334-.094 2.81 2.81 0 0 0-.701-.104zm-1.351.482zm.904.081c.094.001.189.028.22.09a.484.484 0 0 1 .018.265.538.538 0 0 0-.395.12c-.071.07-.123-.347-.068-.412.034-.04.13-.064.225-.063zm3.017.298c.084-.001.256.009.287.12.02.062-.042.27-.072.292-.046.023-.356.003-.369-.061-.026-.076.037-.306.108-.348l.046-.003zm2.897.384l-.553.27c-.9.284-.954.03-1.29-.066.222.253.487.442.958.33.645-.196.667-.36.885-.534zm-16.499.699c.5 1.36 2.887 3.894 6.09 4.278l-.008.018c-.11.266-.202.724-.196 1.104l-.006.01c-4.155-.885-4.67-1.994-5.951-2.987-.093-.768-.105-1.602.071-2.423zm9.442 1.904c-.021 0-.033 0-.033.003-.296.21-.34.412-.334.586.491-.483.473-.485 1.19-.48a7.261 7.261 0 0 0-.823-.109zm.296.363c-.105.567-.487.97-.783 1.368-.059.093-.101.22.189.624.078.108.36.126.55.116-.193-.146-.488-.301-.536-.436.341.233.657.3.943.262.065-.007.146-.077.209-.183.127-.274.227-.34.328-.413l.232.29.262-.223c-.581-.455-1.07-.923-1.394-1.405zm-9.281 2.42c1.46.878 3.814 1.839 5.812 1.791.2.347.439.711.633 1.001-2.544.387-4.308-.391-5.387-.92l-.117-.118c-.345-.391-.676-1.134-.941-1.755zm6.884 3.456c.1.207.262.379.273.402.856 1.116-1.079.859-1.478.791-.71-.113-1.405-.391-2.065-.767 1.074-.021 2.208.06 3.27-.426Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/apachejmeter.svg b/assets/lib/simple-icons/icons/apachejmeter.svg
new file mode 100644
index 00000000..814dbea5
--- /dev/null
+++ b/assets/lib/simple-icons/icons/apachejmeter.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Apache JMeter</title><path d="M4.35 7.79s-.247-.4-.537-.228c-.14.084-.374.318-.653.658l.257.484a6.28 6.28 0 0 1 .517-.653c-.079.09-.246.298-.484.662.334-.023.666-.064.996-.123.099-.549-.096-.8-.096-.8zm-.386.228.022-.024zM.91 14.02a45.295 45.295 0 0 0-.774 2.33.198.198 0 0 1-.136.132c.23-.76.458-1.476.687-2.124-.143-.033-.346.007-.594.11.17-.13.339-.242.5-.252-.051-.011-.183-.057-.36-.22.169.063.316.094.422.072-.022-.282-.174-.57-.374-.86-.001-.002.28.161.383.33l.002-.023c.017-.22.048-.438.093-.654v-.002c.034-.174.076-.348.127-.522l.066-.223c.028-.087.06-.176.093-.27.11-.301.235-.596.375-.884l.036-.072c.128-.257.264-.511.408-.76.076-.133.154-.262.231-.39.007-.007.011-.017.017-.026L2.11 9.71l.008-.013c.236-.38.488-.75.754-1.108a8.36 8.36 0 0 1 .229-.296l.058-.072.256.482a10.46 10.46 0 0 0-.268.404c-.172.276-.335.559-.487.846l-.217.414-.222-.439.22.44-.007.015c-.044.09-.09.18-.133.27a6.9 6.9 0 0 0-.077.16l-.206.444a42.824 42.824 0 0 0-.57 1.344l-.18.457a6.523 6.523 0 0 1-.04.103c-.044.121-.091.239-.134.357v.004l-.033.088-.141.381-.01.029zm3.235-4.623a4.98 4.98 0 0 1-.334.562c-.106.149-.216.25-.457.363l.022-.004c.002-.002.003-.002.006-.002.125-.023.28-.074.37-.127a.184.184 0 0 0 .036-.024.846.846 0 0 1-.02.089c-.006.025-.016.054-.026.085l-.012.033-.036.092a2.985 2.985 0 0 1-.102.226c-.008.019-.018.038-.028.057l-.024.039a.85.85 0 0 1-.084.116l-.04.044a1.2 1.2 0 0 1-.113.101 1.231 1.231 0 0 1-.27.151l.017-.002.064-.011c.129-.031.251-.085.361-.16-.138.275-.326.497-.628.612l.052-.007.05-.011a.998.998 0 0 0 .254-.087 6.74 6.74 0 0 1-.18.492c-.071.174-.145.33-.225.47a2.577 2.577 0 0 1-.35.487c-.276.298-.705.54-1.027.58l.016.003c.366.076.745-.047.996-.324a2.685 2.685 0 0 1-.106.187c-.148.24-.318.386-.654.537.23.013.35-.041.448-.165a1.414 1.414 0 0 1-.052.1c-.215.356-.634.478-1.117.456a.54.54 0 0 1 .174.37c-.074-.134-.152-.251-.251-.297l.116-.334a.523.523 0 0 1 .02-.054v-.006l.132-.37a.837.837 0 0 0 .026-.07l.003-.01.17-.454.007-.022.168-.435c.061-.159.124-.312.184-.46.123-.301.25-.6.382-.897.052-.116.101-.228.152-.336l.05-.108.097-.205c.028-.063.059-.122.088-.183l.027-.058c.002-.002.003-.006.002-.011l.006-.001c.074-.15.143-.291.213-.423.15-.29.309-.576.474-.857l.013-.023c.088-.148.171-.28.246-.396.333-.023.665-.064.995-.12-.011.052-.022.107-.038.165a2.966 2.966 0 0 1-.075.225 4.142 4.142 0 0 1-.187.413h-.001zm2.351.674v4.596c0 .28-.041.527-.125.732a1.337 1.337 0 0 1-.35.512 1.37 1.37 0 0 1-.531.3c-.203.063-.43.095-.674.095a2.728 2.728 0 0 1-.659-.074.063.063 0 0 1-.046-.06v-.842a.063.063 0 0 1 .076-.062c.077.018.162.033.25.045.162.024.376.03.54-.01a.48.48 0 0 0 .332-.29.826.826 0 0 0 .052-.313v-4.63c0-.035.027-.063.062-.063h1.01c.036 0 .063.028.063.063zm8.588 1.44a1.352 1.352 0 0 0-.518-.334 1.887 1.887 0 0 0-.675-.114c-.254 0-.49.041-.702.125-.208.082-.395.21-.545.377a1.75 1.75 0 0 0-.35.619 2.704 2.704 0 0 0-.123.859c0 .32.044.606.135.848.092.24.222.443.386.603.164.157.364.276.59.355a2.3 2.3 0 0 0 .742.118c.143 0 .267-.005.377-.015a2.33 2.33 0 0 0 .61-.13c.095-.033.187-.074.273-.12a.06.06 0 0 0 .033-.055v-.77a.063.063 0 0 0-.09-.055 2.505 2.505 0 0 1-.827.265c-.102.01-.204.015-.307.014a.907.907 0 0 1-.332-.055.703.703 0 0 1-.243-.162.797.797 0 0 1-.155-.263 1.168 1.168 0 0 1-.058-.295h2.157a.063.063 0 0 0 .063-.062v-.483a2.126 2.126 0 0 0-.114-.725 1.462 1.462 0 0 0-.327-.544zm-1.758 1.029c.022-.216.081-.377.176-.478a.518.518 0 0 1 .395-.167.55.55 0 0 1 .246.052c.07.033.13.083.176.144a.647.647 0 0 1 .105.22c.02.071.033.148.038.229h-1.136zm10.673-1.387v.934a.062.062 0 0 1-.077.06.727.727 0 0 0-.254-.027l-.08-.004c-.121 0-.233.016-.337.047a.636.636 0 0 0-.253.145.672.672 0 0 0-.163.264c-.039.11-.059.248-.059.411v1.856a.063.063 0 0 1-.063.063h-.994a.063.063 0 0 1-.063-.063v-3.645c0-.035.028-.063.063-.063h.753c.028 0 .053.02.06.046l.124.462c.04-.067.085-.13.133-.191a.932.932 0 0 1 .487-.338 1.14 1.14 0 0 1 .434-.044c.033 0 .065 0 .096.006a.76.76 0 0 1 .084.011.279.279 0 0 1 .066.011.061.061 0 0 1 .044.059h-.001zm-5.956 2.794a.06.06 0 0 1 .027.05v.741a.06.06 0 0 1-.033.055 1.524 1.524 0 0 1-.364.125c-.304.068-.62.066-.924-.008a.91.91 0 0 1-.381-.207 1.036 1.036 0 0 1-.256-.397 1.819 1.819 0 0 1-.088-.608V12h-.414a.063.063 0 0 1-.062-.062v-.42a.06.06 0 0 1 .03-.053l.529-.323.28-.75a.062.062 0 0 1 .058-.04h.636c.035 0 .062.028.062.063v.714h.825c.034 0 .063.028.063.062v.747a.063.063 0 0 1-.063.063h-.825v1.695c0 .124.029.214.085.268a.315.315 0 0 0 .231.084c.094 0 .181-.011.263-.03.089-.022.177-.05.264-.08a.062.062 0 0 1 .057.007v.001zm-6.105-3.876v4.77a.063.063 0 0 1-.062.061h-.943a.063.063 0 0 1-.063-.063v-2.45l.014-.473.01-.242.008-.187-1.018 3.37a.062.062 0 0 1-.06.044h-.93a.063.063 0 0 1-.06-.044l-.929-3.32a24.947 24.947 0 0 1 .033.88c.003.074.005.142.005.204v2.218a.063.063 0 0 1-.063.063h-.903a.063.063 0 0 1-.063-.063V10.07c0-.034.027-.063.062-.063h1.376c.03 0 .053.02.061.047l.981 3.473 1.046-3.474a.063.063 0 0 1 .06-.044h1.376c.034 0 .062.027.062.061zm9.135 1.44a1.351 1.351 0 0 0-.517-.334 1.886 1.886 0 0 0-.676-.114c-.253 0-.49.041-.701.125-.208.082-.395.21-.545.377a1.75 1.75 0 0 0-.35.619c-.087.278-.13.568-.124.859 0 .32.046.606.135.848.093.24.223.443.387.603.164.157.364.276.59.355a2.3 2.3 0 0 0 .742.118c.143 0 .266-.005.376-.015a2.306 2.306 0 0 0 .884-.25.06.06 0 0 0 .033-.055v-.77a.063.063 0 0 0-.09-.055 2.5 2.5 0 0 1-.828.265c-.101.01-.204.015-.306.014a.905.905 0 0 1-.332-.055.7.7 0 0 1-.242-.162.799.799 0 0 1-.157-.263 1.165 1.165 0 0 1-.057-.295h2.157a.063.063 0 0 0 .063-.062v-.483a2.126 2.126 0 0 0-.114-.725 1.464 1.464 0 0 0-.328-.544zm-.765.58a.65.65 0 0 1 .106.22c.02.071.033.148.038.229h-1.137c.022-.216.082-.377.177-.478a.518.518 0 0 1 .395-.167.55.55 0 0 1 .246.052.48.48 0 0 1 .175.144zM6.26 7.63h-.137L5.41 9.336h.179l.218-.534h.769l.22.534h.18l-.714-1.708H6.26zm-.419 1.04.352-.844.341.844h-.693zm1.483.035h.555c.292 0 .489-.262.489-.54 0-.265-.211-.536-.503-.536h-.708v1.708h.166v-.632zm0-.926h.532c.187 0 .346.172.346.386 0 .207-.13.392-.332.392h-.546v-.778zm1.129 1.558.218-.534h.767l.22.534h.184l-.714-1.708H8.99l-.715 1.708h.177zm.606-1.51.342.843H8.71l.352-.844H9.06zm.778.643c0-.41.297-.85.81-.85a.672.672 0 0 1 .631.372l-.135.081a.538.538 0 0 0-.504-.303c-.408 0-.632.365-.632.709 0 .376.276.718.639.718a.58.58 0 0 0 .526-.318l.14.073c-.111.256-.414.397-.676.397-.468 0-.799-.447-.799-.88zm1.875.867h-.165V7.629h.165v.76h1.011v-.76h.169v1.708h-.169v-.799h-1.01v.799zm2.71 0h-1.145V7.629h1.124v.15h-.959v.616h.836v.142h-.837v.65h.982v.15z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/apachekafka.svg b/assets/lib/simple-icons/icons/apachekafka.svg
index 63b3f2bb..a4445579 100644
--- a/assets/lib/simple-icons/icons/apachekafka.svg
+++ b/assets/lib/simple-icons/icons/apachekafka.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Apache Kafka icon</title><path d="M16.262,13.293c-0.935,0-1.772,0.414-2.346,1.066l-1.47-1.041c0.156-0.43,0.246-0.891,0.246-1.374 c0-0.475-0.086-0.928-0.237-1.352l1.467-1.03c0.574,0.649,1.409,1.06,2.341,1.06c1.725,0,3.129-1.403,3.129-3.129 s-1.404-3.129-3.129-3.129s-3.129,1.403-3.129,3.129c0,0.309,0.047,0.607,0.13,0.889l-1.468,1.03 C11.183,8.653,10.3,8.121,9.294,7.959V6.19c1.417-0.298,2.485-1.557,2.485-3.061C11.779,1.403,10.375,0,8.65,0 S5.522,1.403,5.522,3.129c0,1.484,1.04,2.728,2.429,3.047v1.792c-1.895,0.333-3.341,1.987-3.341,3.976 c0,1.999,1.46,3.659,3.37,3.981v1.892c-1.403,0.308-2.457,1.56-2.457,3.054C5.522,22.597,6.925,24,8.65,24s3.129-1.403,3.129-3.129 c0-1.495-1.054-2.746-2.457-3.054v-1.892c0.966-0.163,1.84-0.671,2.46-1.431l1.48,1.048c-0.082,0.279-0.128,0.574-0.128,0.88 c0,1.725,1.404,3.129,3.129,3.129s3.129-1.403,3.129-3.129S17.987,13.293,16.262,13.293z M16.262,5.977 c0.837,0,1.517,0.681,1.517,1.517s-0.68,1.517-1.517,1.517c-0.836,0-1.517-0.681-1.517-1.517S15.426,5.977,16.262,5.977z M7.133,3.129c0-0.836,0.68-1.517,1.517-1.517s1.517,0.681,1.517,1.517S9.487,4.646,8.65,4.646S7.133,3.965,7.133,3.129z M10.167,20.871c0,0.836-0.68,1.517-1.517,1.517s-1.517-0.681-1.517-1.517s0.68-1.517,1.517-1.517S10.167,20.035,10.167,20.871z M8.65,14.06c-1.167,0-2.116-0.949-2.116-2.116c0-1.167,0.949-2.116,2.116-2.116c1.167,0,2.116,0.949,2.116,2.116 C10.766,13.111,9.817,14.06,8.65,14.06z M16.262,17.939c-0.837,0-1.517-0.681-1.517-1.517c0-0.836,0.68-1.517,1.517-1.517 s1.517,0.681,1.517,1.517C17.779,17.258,17.099,17.939,16.262,17.939z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Apache Kafka</title><path d="M9.71 2.136a1.43 1.43 0 0 0-2.047 0h-.007a1.48 1.48 0 0 0-.421 1.042c0 .41.161.777.422 1.039l.007.007c.257.264.616.426 1.019.426.404 0 .766-.162 1.027-.426l.003-.007c.261-.262.421-.629.421-1.039 0-.408-.159-.777-.421-1.042H9.71zM8.683 22.295c.404 0 .766-.167 1.027-.429l.003-.008c.261-.261.421-.631.421-1.036 0-.41-.159-.778-.421-1.044H9.71a1.42 1.42 0 0 0-1.027-.432 1.4 1.4 0 0 0-1.02.432h-.007c-.26.266-.422.634-.422 1.044 0 .406.161.775.422 1.036l.007.008c.258.262.617.429 1.02.429zm7.89-4.462c.359-.096.683-.33.882-.684l.027-.052a1.47 1.47 0 0 0 .114-1.067 1.454 1.454 0 0 0-.675-.896l-.021-.014a1.425 1.425 0 0 0-1.078-.132c-.36.091-.684.335-.881.686-.2.349-.241.75-.146 1.119.099.363.33.691.675.896h.002c.346.203.737.239 1.101.144zm-6.405-7.342a2.083 2.083 0 0 0-1.485-.627c-.58 0-1.103.242-1.482.627-.378.385-.612.916-.612 1.507s.233 1.124.612 1.514a2.08 2.08 0 0 0 2.967 0c.379-.39.612-.923.612-1.514s-.233-1.122-.612-1.507zm-.835-2.51c.843.141 1.6.552 2.178 1.144h.004c.092.093.182.196.265.299l1.446-.851a3.176 3.176 0 0 1-.047-1.808 3.149 3.149 0 0 1 1.456-1.926l.025-.016a3.062 3.062 0 0 1 2.345-.306c.77.21 1.465.721 1.898 1.482v.002c.431.757.518 1.626.313 2.408a3.145 3.145 0 0 1-1.456 1.928l-.198.118h-.02a3.095 3.095 0 0 1-2.154.201 3.127 3.127 0 0 1-1.514-.944l-1.444.848a4.162 4.162 0 0 1 0 2.879l1.444.846c.413-.47.939-.789 1.514-.944a3.041 3.041 0 0 1 2.371.319l.048.023v.002a3.17 3.17 0 0 1 1.408 1.906 3.215 3.215 0 0 1-.313 2.405l-.026.053-.003-.005a3.147 3.147 0 0 1-1.867 1.436 3.096 3.096 0 0 1-2.371-.318v-.006a3.156 3.156 0 0 1-1.456-1.927 3.175 3.175 0 0 1 .047-1.805l-1.446-.848a3.905 3.905 0 0 1-.265.294l-.004.005a3.938 3.938 0 0 1-2.178 1.138v1.699a3.09 3.09 0 0 1 1.56.862l.002.004c.565.572.914 1.368.914 2.243 0 .873-.35 1.664-.914 2.239l-.002.009a3.1 3.1 0 0 1-2.21.931 3.1 3.1 0 0 1-2.206-.93h-.002v-.009a3.186 3.186 0 0 1-.916-2.239c0-.875.35-1.672.916-2.243v-.004h.002a3.1 3.1 0 0 1 1.558-.862v-1.699a3.926 3.926 0 0 1-2.176-1.138l-.006-.005a4.098 4.098 0 0 1-1.173-2.874c0-1.122.452-2.136 1.173-2.872h.006a3.947 3.947 0 0 1 2.176-1.144V6.289a3.137 3.137 0 0 1-1.558-.864h-.002v-.004a3.192 3.192 0 0 1-.916-2.243c0-.871.35-1.669.916-2.243l.002-.002A3.084 3.084 0 0 1 8.683 0c.861 0 1.641.355 2.21.932v.002h.002c.565.574.914 1.372.914 2.243 0 .876-.35 1.667-.914 2.243l-.002.005a3.142 3.142 0 0 1-1.56.864v1.692zm8.121-1.129l-.012-.019a1.452 1.452 0 0 0-.87-.668 1.43 1.43 0 0 0-1.103.146h.002c-.347.2-.58.529-.677.896-.095.365-.054.768.146 1.119l.007.009c.2.347.519.579.874.673.357.103.755.059 1.098-.144l.019-.009a1.47 1.47 0 0 0 .657-.885 1.493 1.493 0 0 0-.141-1.118"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/apachekylin.svg b/assets/lib/simple-icons/icons/apachekylin.svg
new file mode 100644
index 00000000..4aa03eed
--- /dev/null
+++ b/assets/lib/simple-icons/icons/apachekylin.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Apache Kylin</title><path d="M8.033 16.459l-.59 1.29h.142l.155-.344h.72l.154.345h.144l-.59-1.291h-.135zm-.243.835l.31-.694.31.694h-.62zm1.154-.515v1.328h.131v-.54a.424.424 0 0 0 .369.192c.277 0 .483-.2.483-.494a.47.47 0 0 0-.483-.493.42.42 0 0 0-.374.2v-.192h-.126zm.49.107c.205 0 .362.153.362.378 0 .227-.157.379-.361.379-.207 0-.362-.152-.362-.379 0-.224.155-.378.362-.378zm1.487.864v-.602c0-.25-.142-.376-.392-.376a.616.616 0 0 0-.395.13l.059.099a.494.494 0 0 1 .323-.115c.18 0 .274.09.274.257v.059h-.308c-.278 0-.374.125-.374.275 0 .167.135.282.354.282.16 0 .275-.061.334-.16v.15h.125zm-.13-.292c-.052.128-.161.198-.309.198-.154 0-.245-.07-.245-.183 0-.1.06-.173.25-.173h.303v.158zm.525-.193c0 .228.155.378.367.378a.328.328 0 0 0 .282-.142l.098.066c-.077.125-.216.192-.38.192-.29 0-.5-.205-.5-.494 0-.29.21-.493.5-.493.164 0 .303.065.38.192l-.098.066a.33.33 0 0 0-.282-.144c-.212 0-.367.152-.367.379zm1.12-.884v.568c.072-.112.199-.177.363-.177.236 0 .398.137.398.415v.563h-.13v-.55c0-.205-.108-.31-.292-.31-.208 0-.34.13-.34.35v.51h-.13v-1.37h.13zm1.968.884c0-.292-.198-.493-.47-.493-.274 0-.475.205-.475.493 0 .287.207.494.51.494a.477.477 0 0 0 .374-.159l-.074-.085a.382.382 0 0 1-.297.128c-.212 0-.367-.135-.382-.338h.812l.002-.04zm-.814-.058a.337.337 0 0 1 .343-.322c.19 0 .329.132.345.322h-.688zm1.728-.748v.78l.758-.78h.157l-.559.584.598.707h-.162l-.528-.607-.264.267v.34h-.136v-1.291h.136zm1.292 1.383l.042-.094-.433-.969h.136l.365.825.365-.825h.13l-.486 1.087c-.08.19-.184.25-.322.25a.332.332 0 0 1-.236-.088l.06-.098a.243.243 0 0 0 .178.074c.086 0 .145-.04.2-.162zm.92-1.461v1.369h-.131v-1.37h.13zm.365.398h.13v.97h-.13v-.97zm.066-.212a.095.095 0 0 1-.095-.094c0-.05.042-.092.095-.092a.093.093 0 1 1 0 .186zm.556.212v.18c.07-.119.2-.187.369-.187.236 0 .398.137.398.415v.562h-.131v-.55c0-.204-.107-.309-.291-.309-.209 0-.34.13-.34.35v.51h-.13v-.97h.125zM2.086 15.41C.264 15.4.124 15.395.063 15.356c-.084-.055-.084-.137-.002-.302.223-.448.78-.76 1.676-.943.575-.116.917-.252 1.23-.487.374-.281.418-.538.12-.69a2.52 2.52 0 0 1-.868-.786c-.294-.447-.492-1.162-.492-1.778 0-.321.168-.938.36-1.323.282-.565.68-.963 1.236-1.235a3.043 3.043 0 0 1 1.25-.298c.085 0 .142-.014.178-.044.05-.04.052-.051.026-.13-.04-.119-.206-.266-.373-.328-.156-.058-.332-.085-.807-.122-.18-.013-.38-.04-.444-.06a.788.788 0 0 1-.411-.28c-.057-.085-.067-.126-.067-.259 0-.14.011-.179.098-.338.092-.168.13-.267.2-.522.023-.086.037-.102.09-.102.033 0 .1.031.148.07.292.23 1.183.53 1.571.53.246 0 .361-.035.453-.14.064-.073.071-.095.058-.181a1.036 1.036 0 0 0-.268-.502c-.14-.14-.426-.285-.694-.355a1.921 1.921 0 0 0-.504-.054c-.345-.004-.373.004-.563.163-.158.132-.21.12-.386-.089-.441-.522-.646-1.065-.518-1.37.041-.1.095-.121.467-.184.163-.027.498-.091.744-.143.965-.202 1.498-.268 2.164-.267.56.001.585-.006.736-.231.199-.297.271-.585.272-1.088 0-.406.018-.455.162-.455.113 0 .276.08.357.176.16.189.221.439.249 1.012.017.351.035.509.08.686.094.364.146.445.543.837.493.488.64.722.731 1.16.073.352.032.768-.107 1.085-.171.393-.579.845-1.033 1.147-.351.234-.757.427-2.302 1.097-.297.128-.61.27-.696.312-.559.282-1.082.816-1.283 1.31-.058.14-.07.21-.08.443-.016.43.076.72.34 1.07.181.242.53.508.791.606.323.121.776.127 1.154.016.37-.108.797-.361.747-.442-.026-.042-.08-.031-.245.048-.627.299-1.316.344-1.71.112a2.043 2.043 0 0 1-.55-.551c-.228-.386-.3-.932-.173-1.303a1.14 1.14 0 0 1 .313-.468c.24-.233.993-.618 2.46-1.258.868-.38 1.04-.464 1.342-.666a3.719 3.719 0 0 0 1.67-3.135c0-.148.01-.27.021-.27.028 0 .19.216.313.416.627 1.026.843 2.398.54 3.443-.284.978-.948 1.741-1.77 2.034a2.307 2.307 0 0 1-.88.14 2.57 2.57 0 0 1-.852-.13c-.467-.135-.814-.148-1.19-.044-.346.096-.52.235-.588.47a.682.682 0 0 0 .08.518c.086.16.165.215.323.228.234.019.547-.145.547-.287 0-.031-.07-.178-.156-.326-.086-.148-.156-.295-.156-.328 0-.089.084-.133.251-.133.22 0 .36.076.528.284.158.196.301.3.47.34.206.05.235.158.13.476-.175.522-.62 1.133-1.429 1.96a8.642 8.642 0 0 0-.596.66c-.224.319-.44.787-.565 1.224-.087.306-.164.384-.41.412-.039.005-.952.003-2.028-.004zM9.741 2.668a10.68 10.68 0 0 1 5.137-.638c2.634.336 4.891 1.67 6.295 3.72.499.728.699 1.143.7 1.451 0 .346-.242.533-.618.477a.98.98 0 0 1-.508-.271 24.729 24.729 0 0 1-.672-.781c-1.308-1.565-1.733-2.01-2.404-2.516a8.626 8.626 0 0 0-1.856-1.044c-1.82-.713-3.944-.805-6.106-.266-.494.123-.48.067.032-.132zM23.807 12.89c-.359.932-1.224 1.631-2.401 1.942-.939.247-1.7.244-2.46-.01a4.319 4.319 0 0 1-1.42-.84c-.22-.205-.294-.23-.294-.097 0 .067.034.124.18.306.231.285.336.488.316.613-.02.123-.104.19-.261.21-.185.022-2.544.004-2.593-.02-.104-.051.012-.31.203-.45.143-.104.275-.158.492-.199.184-.035.247-.075.247-.157 0-.02-.054-.146-.12-.278a2.606 2.606 0 0 1-.23-.723c-.024-.13-.177-.073-.319.117-.247.331-.419.856-.53 1.623-.056.377-.085.46-.18.502-.048.022-.56.028-2.072.026a104.858 104.858 0 0 1-2.07-.014c-.213-.04-.178-.254.08-.48.21-.184.703-.417 1.303-.616.406-.135.454-.173.452-.36-.002-.29-.235-.573-.873-1.06-.671-.511-.864-1.516-.43-2.235.261-.431.73-.782 1.2-.897.803-.196 1.43.033 1.722.628.11.225.182.477.16.563-.022.089-.093.071-.272-.066-.258-.198-.434-.27-.682-.28-.255-.01-.416.036-.552.16-.158.141-.198.244-.199.508 0 .208.007.242.077.392.377.796 1.599.95 2.453.308.278-.21.623-.788.724-1.216.043-.181.05-.267.04-.528-.009-.267-.02-.342-.082-.519-.155-.445-.343-.685-.672-.855-.503-.26-1.133-.33-1.989-.22-.728.092-1.493.059-1.95-.086-.2-.063-.27-.114-.27-.194 0-.067.023-.074.3-.094.428-.031.896-.147 1.651-.408.248-.086.556-.183.684-.215.783-.198 1.609-.252 2.218-.146.26.045.572.2.811.402.695.588 1.368 1.78 1.913 3.39.168.497.323.839.506 1.117.41.627.958 1.01 1.65 1.155.08.017.28.03.444.029a2.19 2.19 0 0 0 1.002-.235c.608-.289.977-.74 1.163-1.423.068-.25.075-.85.013-1.086-.144-.54-.492-.896-1.038-1.059-.239-.071-.773-.091-.942-.035a.877.877 0 0 0-.537.514c-.044.11-.054.186-.055.4-.002.237.005.278.062.4.174.371.505.547 1.031.548.26 0 .3.02.274.14-.03.136-.178.225-.437.265a1.667 1.667 0 0 1-.986-.13c-.308-.143-.595-.477-.72-.835a1.452 1.452 0 0 1-.021-.76 2.4 2.4 0 0 1 .368-.732c.399-.492 1.06-.746 1.775-.68 1.002.092 1.779.639 2.121 1.494.278.693.288 1.796.022 2.486zm-12.888.57c-.265.18-1.02.268-1.913.22-.547-.028-.6-.019-.639.113-.041.145.034.318.234.535.27.295.291.447.077.562-.098.052-.107.052-1.539.058-1.2.004-1.453 0-1.517-.029-.139-.06-.129-.264.021-.434.133-.15.178-.163.652-.178.387-.012.431-.017.462-.06a.189.189 0 0 0 .033-.095c0-.081-.102-.304-.212-.466-.175-.258-.205-.345-.206-.608-.001-.257.024-.317.175-.42.253-.172.937-.1 1.626.173.67.265 1.328.371 2.309.371.509 0 .585.005.597.038.019.047-.055.15-.16.22zm10.194 5.002c.047.04.038.178-.02.29-.123.242-.518.705-1.008 1.183-.842.821-1.599 1.354-2.673 1.884-1.593.786-3.18 1.16-4.87 1.148a19.02 19.02 0 0 1-.675-.012 10.35 10.35 0 0 1-2.395-.479c-2.186-.718-4.043-2.16-5.4-4.19-.375-.563-.517-.895-.538-1.256-.015-.254.011-.37.12-.531a.539.539 0 0 1 .242-.2c.156-.08.178-.084.396-.083.503.004.899.247 1.353.83.086.11.326.449.535.752.43.628.756 1.068 1.046 1.416.255.306.72.77.976.975.419.334 1.405.863 2.117 1.134 2.32.883 4.7.8 7.069-.247 1.22-.54 2.408-1.364 3.27-2.27.295-.31.4-.39.455-.344z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/apachemaven.svg b/assets/lib/simple-icons/icons/apachemaven.svg
index 1bf7caf9..80f09ad7 100644
--- a/assets/lib/simple-icons/icons/apachemaven.svg
+++ b/assets/lib/simple-icons/icons/apachemaven.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Apache Maven icon</title><path d="M4.2355.0012c-.3117-.0129-.6643.0706-.8275.4559-.1585.3741-.2832 1.1874-.3402 2.2758l1.2238.5928c-.0202-.7792.0086-1.5128.087-2.1787-.0248.2192-.0766.9074-.0055 2.1493.0189.3418.0488.7267.0876 1.152.0022.024.002.0453.0075.067.0353.3711.0812.7704.139 1.2074.0493.3763.1046.7743.1725 1.204.0554.3678.1225.7529.1923 1.1608l-.0096.009c.0132.0109.0153.0201.0144.026.0094.0549.0193.1044.0287.1594.0316.1624.0598.327.0938.4928.0347.1808.0719.3645.1082.5544.018.095.0362.1906.0568.2889.0593.2916.1237.5899.1896.8973.0817.3783.1706.7663.2662 1.1705.09.3825.1868.781.2882 1.1861.0982.3868.1977.7824.3073 1.1917.096.3626.1996.7352.3046 1.117.0031.0184.012.0379.015.0562.1059.376.2159.7642.3306 1.1595a.0606.0606 0 00.0083.0253c.0176.0592.033.1146.0506.1738.0772.2619.158.5328.2416.805a4.1973 4.1973 0 01-.295-.1349 166.5148 166.5148 0 01-.1875-.653c-.0208-.0775-.0422-.1497-.063-.2272l-.0027-.0027-.0048-.002c-.087-.3006-.1674-.6056-.256-.9152-.0224-.0867-.0443-.1735-.0691-.2635-.1041-.3877-.2072-.7812-.3128-1.178a77.1318 77.1318 0 01-.2903-1.154c-.0949-.3892-.1863-.7808-.2778-1.1725a54.4975 54.4975 0 01-.2643-1.2026c-.0848-.3966-.1632-.7987-.2423-1.1944a17.1806 17.1806 0 01-.0794-.4312c-.0456-.2449-.0877-.4919-.13-.7392-.004-.0126-.0049-.028-.0089-.0404l-1.0465-.534 1.05.532c-.0568-.3864-.117-.7708-.1746-1.1513a60.6963 60.6963 0 01-.1547-1.2006 27.4722 27.4722 0 01-.1123-1.2067.711.711 0 01-.004-.0691 24.9895 24.9895 0 01-.0548-1.1356l-1.2211-.5886c-.0024.074-.0083.1502-.0116.23a27.5407 27.5407 0 00-.0233.9302c-.003.3682.0002.7522.0068 1.1546.0087.37.0238.756.0438 1.1486.0198.336.042.6758.0692 1.0219.0006.015.0027.024.0034.039l.0055.0027c.0023.0237.0072.0501.0061.076.0328.3678.0647.7417.1082 1.117.0426.3813.0904.763.1471 1.1493.0482.3255.1.649.154.9754.011.064.0247.1316.0356.1957.0748.404.1548.794.2416 1.1581.0972.4134.2008.8012.306 1.1623.0707.2368.1399.4643.2108.6803.0613.1819.1284.3648.193.5442.1553.4222.3273.8319.5127 1.232l.0055.0027a.3195.3195 0 00.0191.0514c.2261.4836.4753.9506.755 1.395.0098.0133.019.0324.0288.0458-.4537-.1826-1.2577-.0981-1.252-.0972.83.2879 1.558.641 2.0172 1.1752-.1825.201-.524.3534-.9535.4778.5938.0643.9248-.0397 1.0459-.0924-.3103.2586-.4835.7314-.6359 1.2402.3493-.5708.6955-.9486 1.0329-1.093.0776.2572.1619.5238.2443.7877-.727 1.4194-1.4698 2.9455-2.2245 4.5538.2036-.0272.3395-.145.4306-.3121.129-.2809.8344-1.7797 1.9076-3.8734.413 1.3029.8798 2.678 1.3853 4.1068.1112-.1435.1239-.3023.0774-.464-.098-.2699-.6338-1.7978-1.3046-3.946.1525-.2959.318-.6111.4839-.9275a3.504 3.504 0 01.4031.1588c.1949.1875.3368.4938.4634.833.0334-.3895-.0712-.7758-.3326-1.0992 1.3353.2577 2.548.089 3.2881-.8098a3.9744 3.9744 0 00.1896-.2573c-.3249.3039-.6817.4038-1.3134.273.9963-.2814 1.5254-.6173 2.037-1.2217a7.5242 7.5242 0 00.3695-.4778c-.9421.7218-1.926.8196-2.8994.4915-.0132-.0067-.0272-.0084-.0451-.0158.914.0201 2.2034-.4756 3.0924-1.191.4094-.3295.7956-.7288 1.1704-1.2107.2806-.358.549-.7606.82-1.215.2335-.3933.4677-.8245.6982-1.2943-.2204.077-.4692.1214-.7379.139l-.1437.0075c-.048.0025-.0947.0002-.1472.002.8843-.198 1.5005-.7394 1.9939-1.4462-.2405.1167-.6276.2594-1.0699.2943-.0578.0057-.1195.0064-.1813.0068-.014-.002-.0287 0-.0473-.0027.3062-.0786.5726-.1773.8104-.3087.0513-.0257.0985-.0566.1458-.0876.0733-.0463.1429-.0976.2122-.1492.0434-.0364.086-.0684.1294-.1048a2.3833 2.3833 0 00.2792-.2868c.0288-.0338.0574-.0634.0815-.0978.036-.0518.0712-.0988.102-.1465a8.3873 8.3873 0 00.3758-.586 6.8254 6.8254 0 00.1355-.2415c.014-.0312.0318-.0571.0458-.0883.041-.0843.0807-.1595.1095-.2266.043-.0982.0736-.179.0918-.2382a.5171.5171 0 01-.1075.0507c-.273.112-.7258.1886-1.0842.2026-.0046-.0007-.009-.002-.0144.002-.02 0-.0438.0015-.0664.002.718-.2145 1.0662-.4526 1.4217-.82.0954-.1.192-.209.2895-.323.2972-.3412.5951-.7208.8652-1.104.2633-.37.5032-.7382.69-1.0719.1217-.215.222-.4142.3004-.5927a7.1872 7.1872 0 00.1704-.4504 36.4173 36.4173 0 01-1.4798.0007c.4951.0097 1.0156.007 1.4853-.0048.4983-1.4854.061-2.2622.061-2.2622S20.2693.4027 19.3943.7637c-.4248.1753-1.1722.731-2.0828 1.562l.5147 1.4483c.6028-.6433 1.2086-1.21 1.8008-1.6838-.194.1569-.7824.6693-1.7118 1.7256-.2564.2902-.5381.624-.8447.9972-.0173.0212-.0345.0377-.0472.0596-.2665.3267-.5467.685-.8474 1.0828-.2592.342-.5312.7063-.818 1.1061-.2475.3402-.4987.7038-.7665 1.0876l-.0158-.0007c.002.0193-.0042.0282-.0095.0322-.0361.0517-.0666.0996-.1027.1513-.1036.1558-.212.311-.3162.4716-.1157.173-.2322.3508-.3539.5325-.0608.0908-.122.1817-.1834.2772-.184.2819-.3686.573-.56.8727a69.9708 69.9708 0 00-.7159 1.154 97.513 97.513 0 00-.7105 1.1834c-.2281.3894-.4625.7874-.6995 1.204-.2108.3682-.4238.7503-.6427 1.141-.012.0173-.0201.0396-.0322.0568-.2135.3868-.4334.7871-.655 1.1965-.006.0086-.0123.0174-.0137.0267-.0328.0617-.065.119-.0979.1807-.17.3171-.346.6423-.5188.978-.0007.0047-.0062.0091-.0068.0138-.0262.0484-.0511.0919-.0726.141-.116.22-.2214.4298-.449.8686a1.3507 1.3507 0 00-.23-.1787c.1183-.2248.2165-.4202.3409-.6536.0462-.0883.0968-.1761.1437-.269.0134-.0266.0263-.0481.0397-.0747.1761-.3257.3581-.6604.5462-1.0034.0449-.079.0845-.1538.1294-.2327l.0007-.0048-.002-.0055c.1685-.3109.3463-.6203.5208-.9397.0509-.0876.1018-.1754.1533-.2677.2242-.3947.4536-.793.6838-1.1964a87.081 87.081 0 01.6838-1.1595c.2328-.3887.4702-.7762.7077-1.1643.2435-.3966.4905-.788.7427-1.1786.2468-.3867.5028-.772.7536-1.1534.0916-.1386.183-.2727.2792-.4106.1578-.2335.3201-.4661.4826-.6989.0067-.0132.018-.0257.0246-.039l-.4333-1.3066.4381 1.3073c.2613-.356.5182-.713.7741-1.065.278-.3726.5544-.7357.8296-1.0897.2866-.3666.5761-.7183.8686-1.0602.0174-.0213.0346-.043.0513-.0596.2865-.3333.5706-.6521.8577-.9569l-.5147-1.4442c-.0608.0576-.1263.1143-.1924.176a31.0491 31.0491 0 00-.7584.7296c-.295.294-.5973.6064-.9117.9356-.287.3048-.581.6277-.8768.9596-.251.2863-.5032.5766-.7563.8768-.0114.0126-.0174.0217-.0288.0343l.0028.0075c-.017.0209-.0347.045-.0562.065-.2658.3221-.5369.6482-.8001.985a38.087 38.087 0 00-.7947 1.043 65.572 65.572 0 00-.6509.907c-.0421.0603-.0845.1252-.1266.1855-.2608.3846-.5061.7624-.7255 1.1246-.2503.4099-.4748.8044-.677 1.1786a30.076 30.076 0 00-.371.7153c-.0951.1951-.186.3956-.2765.5914-.2105.4632-.398.9296-.5667 1.399l.002.0062a.3593.3593 0 00-.0253.0568c-.1077.303-.2044.6079-.2923.9138a2.5679 2.5679 0 01-.4832.4606c-.0423-.0526-.0874-.0978-.1321-.1472.4144-.5983.7383-1.4386.8275-2.2156.053-.4616.0477-.9527-.0157-1.4887-.0458-.3995-.1265-.8196-.2382-1.2738a16.3456 16.3456 0 00-.3648-1.2478c-.091.1853-.2197.3676-.3779.5456-.0286.0313-.0576.0624-.0862.0937-.0286.0313-.0591.0594-.091.0931.4334-.6739.4844-1.3973.3559-2.1485-.0788.2228-.2335.5528-.4901.8494a1.78 1.78 0 01-.1102.117c-.01.0074-.0174.0176-.0308.0274.1438-.2396.2502-.467.3183-.6975.0163-.048.0265-.0968.037-.1457a2.9911 2.9911 0 00.041-.226c.0047-.0497.0118-.0959.0164-.1457a2.107 2.107 0 00-.0027-.3539c-.003-.039-.0033-.0749-.0096-.1115-.0094-.055-.0164-.107-.0267-.1561a7.4225 7.4225 0 00-.1273-.6023 6.0144 6.0144 0 00-.065-.2362c-.0105-.0283-.0148-.0558-.0253-.0842-.0267-.0784-.0484-.15-.072-.21a2.0823 2.0823 0 00-.0903-.2068.4575.4575 0 01-.0362.0986c-.1023.24-.3396.5687-.5565.8001-.0034.0025-.0066.0051-.0075.011-.0126.0122-.0267.0275-.0404.0417.3183-.5806.3897-.9466.3853-1.3984a7.1255 7.1255 0 00-.0184-.3833 12.2819 12.2819 0 00-.141-1.232c-.0641-.3964-.143-.7767-.2328-1.1027-.0568-.2109-.1171-.3988-.1786-.5599a6.3763 6.3763 0 00-.1718-.3894c-.4317.4444-.95.9495-1.3956 1.3484.4456-.3991.964-.9051 1.3963-1.354C5.5759.341 4.8179.1239 4.8179.1239S4.5473.014 4.2356.0012zM7.6161 15.783c.011.0278.021.0558.0315.0835-.059.0335-.1166.0683-.1787.0985-.0125.004-.0224.0114-.0383.0178.0631-.0596.1247-.1282.1855-.1998zm-.6058 1.6167c.1304.137.2527.252.3573.3306.0175.0573.0513.1652.0705.2265-.0799.0115-.1625.0363-.245.0596-.011-.037-.0204-.0662-.0315-.1034-.0257-.0842-.0485-.1711-.0767-.2587-.008-.025-.0138-.0462-.0219-.0712-.0172-.0594-.0353-.1233-.0527-.1834zm.2656.885c.0944-.0015.1835.002.2676.0103.0275.0877.0346.1101.0712.2286.0763-.0158.159-.0134.245-.0034-.1065.2025-.2137.413-.321.6208-.087-.2818-.1723-.5557-.2628-.8563Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Apache Maven</title><path d="M4.237.001c-.312-.013-.665.072-.828.457-.158.374-.283 1.188-.34 2.276l1.223.591c-.02-.737.007-1.43.076-2.066-.026.299-.056.96.006 2.039.019.342.049.725.088 1.15.002.024.002.047.007.069a45.485 45.485 0 0 0 .309 2.412c.057.368.126.752.195 1.16l-.01.01c.014.01.015.018.014.023l.03.16c.03.162.06.328.093.494l.108.553.056.289a61.72 61.72 0 0 0 .457 2.068c.09.382.186.78.287 1.186.098.386.199.783.309 1.193.096.362.199.735.303 1.117.003.018.012.036.015.055a145.826 145.826 0 0 0 .34 1.185l.049.174c.078.261.158.533.242.805a4.2 4.2 0 0 1-.293-.135l-.19-.654c-.02-.077-.042-.148-.062-.225l-.002-.004-.004-.002c-.087-.3-.17-.607-.257-.916-.023-.087-.044-.173-.069-.263l-.314-1.178c-.1-.381-.194-.765-.29-1.154-.094-.39-.185-.78-.277-1.172-.093-.401-.181-.8-.265-1.203-.085-.396-.161-.798-.24-1.193a50.315 50.315 0 0 1-.211-1.17c-.004-.013-.006-.03-.01-.041l.004-.002c-.057-.386-.116-.77-.174-1.15a60.905 60.905 0 0 1-.154-1.204 27.447 27.447 0 0 1-.172-2.41l-1.22-.59c-.004.074-.01.15-.013.23-.012.294-.02.605-.023.93a45.3 45.3 0 0 0 .006 1.157c.009.37.025.755.045 1.148.02.336.042.675.07 1.022l.002.039.006.004c.003.023.007.05.006.076.033.368.064.739.107 1.115a34.493 34.493 0 0 0 .303 2.125c.01.064.024.131.035.195a23.418 23.418 0 0 0 .547 2.32c.07.237.14.464.21.68.063.182.13.365.194.545.155.422.327.832.512 1.232l.006.004a.318.318 0 0 0 .02.05c.225.485.475.95.755 1.395.01.013.02.033.03.047-.455-.183-1.259-.098-1.253-.097.83.288 1.557.64 2.016 1.175-.183.2-.523.352-.953.477.594.064.924-.039 1.045-.092-.31.26-.483.732-.635 1.24.35-.57.696-.949 1.033-1.094.078.258.162.524.244.788A147.532 147.532 0 0 0 5.157 24a.56.56 0 0 0 .43-.312c.13-.282.83-1.775 1.908-3.875.413 1.303.88 2.679 1.386 4.109a.494.494 0 0 0 .076-.465 103.735 103.735 0 0 1-1.308-3.945c.154-.299.316-.612.484-.932.125.04.255.094.389.155.203.186.352.491.482.84a1.515 1.515 0 0 0-.334-1.098c1.335.258 2.547.09 3.287-.81a3.97 3.97 0 0 0 .192-.258c-.325.304-.682.404-1.313.273.996-.281 1.523-.617 2.035-1.22.12-.145.244-.303.371-.48-.943.722-1.927.822-2.9.493l-.045-.018c.914.02 2.203-.474 3.092-1.189.41-.33.796-.73 1.17-1.21.28-.359.55-.76.82-1.216.234-.393.468-.824.7-1.293a2.83 2.83 0 0 1-.74.137l-.144.008c-.048.002-.093 0-.146.002.885-.198 1.5-.74 1.994-1.447-.24.117-.628.262-1.07.297-.058.006-.12.006-.182.006-.013-.002-.028 0-.047-.002.306-.078.574-.178.81-.309a3.363 3.363 0 0 0 .358-.236c.044-.037.088-.07.13-.106.099-.086.193-.18.28-.287.028-.034.056-.063.08-.098.036-.05.073-.098.104-.146a8.388 8.388 0 0 0 .51-.828c.015-.031.032-.057.046-.088.04-.084.08-.16.11-.227.042-.099.074-.179.092-.238a.515.515 0 0 1-.108.051c-.273.112-.727.187-1.086.201-.004 0-.008 0-.013.004h-.067c.72-.214 1.067-.45 1.422-.818a13.883 13.883 0 0 0 1.154-1.428c.264-.37.505-.738.692-1.072a6.5 6.5 0 0 0 .298-.592c.066-.157.122-.305.172-.45-.466.01-.986.011-1.48 0 .495.01 1.015.007 1.484-.005.5-1.485.063-2.262.063-2.262s-.526-1.212-1.4-.851c-.426.175-1.172.73-2.083 1.56l.514 1.45a17.561 17.561 0 0 1 1.703-1.602c-.257.22-.807.726-1.615 1.644-.256.29-.537.624-.844.997-.017.02-.035.038-.047.06a51.435 51.435 0 0 0-1.666 2.187c-.248.34-.498.704-.765 1.088h-.016c.002.02-.004.028-.01.032l-.101.152c-.104.155-.213.31-.318.47l-.352.534c-.061.09-.124.181-.186.277-.184.282-.367.573-.558.873a97.351 97.351 0 0 0-1.428 2.338 96.866 96.866 0 0 0-1.341 2.343c-.012.017-.02.04-.034.057a197.256 197.256 0 0 0-.668 1.223l-.097.181c-.17.318-.346.642-.52.979 0 .004-.005.008-.006.013-.026.048-.05.093-.072.141-.117.222-.218.424-.45.87a1.352 1.352 0 0 0-.233-.182l.345-.65c.047-.089.096-.177.143-.27l.04-.077.546-1.001.13-.233v-.006l-.001-.006c.169-.31.345-.62.52-.94.051-.087.102-.173.153-.265.224-.395.454-.794.684-1.197a91.685 91.685 0 0 1 2.135-3.504c.247-.386.503-.77.754-1.152.092-.138.182-.272.279-.41a72.9 72.9 0 0 1 .48-.701c.007-.012.019-.024.026-.037h.006c.26-.356.517-.713.773-1.065.278-.373.554-.735.83-1.09a31.075 31.075 0 0 1 1.777-2.075l-.515-1.446c-.06.057-.126.116-.192.178a32.37 32.37 0 0 0-.758.729c-.295.294-.597.606-.912.935a46.032 46.032 0 0 0-1.632 1.838l-.03.033.002.008c-.017.02-.033.044-.054.064-.266.323-.538.649-.801.985a39.105 39.105 0 0 0-1.445 1.95c-.043.06-.085.126-.127.186a26.458 26.458 0 0 0-1.403 2.303c-.13.247-.256.485-.37.715-.096.195-.187.395-.278.591-.21.463-.398.93-.566 1.399l.002.006a.36.36 0 0 0-.026.058c-.108.303-.203.608-.29.914-.14.174-.302.325-.483.46a3.505 3.505 0 0 0-.131-.153 5.148 5.148 0 0 0 .824-2.211 6.4 6.4 0 0 0-.016-1.488c-.046-.4-.126-.82-.238-1.274-.097-.393-.217-.81-.363-1.248-.091.185-.22.367-.379.545l-.086.094c-.029.032-.06.06-.092.094.434-.674.486-1.397.358-2.148a2.722 2.722 0 0 1-.49.85c-.033.038-.072.077-.11.116-.01.007-.019.018-.033.028.144-.24.25-.467.318-.698a1.29 1.29 0 0 0 .04-.146 2.85 2.85 0 0 0 .038-.225l.018-.146a2.11 2.11 0 0 0-.002-.354c-.003-.04-.004-.076-.01-.113-.01-.055-.016-.105-.027-.154a7.416 7.416 0 0 0-.193-.84c-.01-.028-.015-.056-.026-.084-.027-.079-.048-.149-.072-.209a2.1 2.1 0 0 0-.09-.209.455.455 0 0 1-.035.1c-.102.24-.34.57-.557.8-.003.003-.007.005-.007.01l-.04.043c.318-.58.39-.946.385-1.398a12.274 12.274 0 0 0-.16-1.615 10.68 10.68 0 0 0-.232-1.104 5.853 5.853 0 0 0-.18-.558 6.337 6.337 0 0 0-.172-.391 26.18 26.18 0 0 0 .002-.004C5.576.341 4.82.124 4.82.124s-.27-.11-.582-.123zm3.38 15.783l.032.082v.002c-.06.033-.116.067-.178.097-.012.004-.024.012-.039.018a2.41 2.41 0 0 0 .186-.2zm-.603 1.626c.13.136.25.242.354.32l.07.227a1.866 1.866 0 0 0-.246.053l-.03-.098c-.024-.084-.048-.17-.076-.257l-.021-.073zm.26.875a2.34 2.34 0 0 1 .271.01l.07.229a.778.778 0 0 1 .247-.004l-.326.627a127.643 127.643 0 0 1-.262-.862z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/apachenetbeanside.svg b/assets/lib/simple-icons/icons/apachenetbeanside.svg
index 39e34763..59fdf12e 100644
--- a/assets/lib/simple-icons/icons/apachenetbeanside.svg
+++ b/assets/lib/simple-icons/icons/apachenetbeanside.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Apache NetBeans IDE icon</title><path d="M11.988 0a.093.093 0 00-.004.002.093.093 0 00-.023.006.093.093 0 00-.004.002.093.093 0 00-.004.002L11.94.02 1.643 5.958a.093.093 0 00-.008.004l-.004.002a.093.093 0 00-.002.002.093.093 0 00-.004.002.093.093 0 00-.002.002.093.093 0 00-.004.002.093.093 0 00-.004.004.093.093 0 00-.003.004.093.093 0 00-.004.002.093.093 0 00-.002.004.093.093 0 00-.004.004.093.093 0 00-.002.004.093.093 0 00-.002.004.093.093 0 00-.004.004.093.093 0 00-.002.004.093.093 0 00-.002.004.093.093 0 000 .004.093.093 0 00-.002.006.093.093 0 00-.002.004.093.093 0 000 .004.093.093 0 00-.002.006.093.093 0 000 .004.093.093 0 000 .004.093.093 0 000 .006.093.093 0 000 .014v11.876a.093.093 0 000 .01v.004a.093.093 0 000 .006.093.093 0 000 .004.093.093 0 000 .004.093.093 0 00.002.004.093.093 0 000 .006.093.093 0 00.002.004.093.093 0 00.002.006.093.093 0 00.004.008.093.093 0 00.002.004.093.093 0 00.002.004.093.093 0 00.002.004.093.093 0 00.004.004.093.093 0 00.002.004.093.093 0 00.004.004.093.093 0 00.002.002.093.093 0 00.003.004.093.093 0 00.004.002.093.093 0 00.004.004.093.093 0 00.004.002.093.093 0 00.004.002.093.093 0 00.012.006l10.298 5.938.006.004a.093.093 0 00.002.002l.004.002a.093.093 0 00.014.008.093.093 0 00.003 0 .093.093 0 00.004.002.093.093 0 00.004.002.093.093 0 00.006 0 .093.093 0 00.004 0 .093.093 0 00.006.002.093.093 0 00.004 0 .093.093 0 00.017-.002.093.093 0 00.01-.002.093.093 0 00.014-.006.093.093 0 00.008-.004l.006-.004a.093.093 0 00.006-.004l10.29-5.934a.093.093 0 00.016-.008l.004-.002a.093.093 0 00.005-.002.093.093 0 00.002-.002.093.093 0 00.004-.004.093.093 0 00.004-.002.093.093 0 00.004-.004.093.093 0 00.004-.004.093.093 0 00.002-.002.093.093 0 00.004-.004.093.093 0 00.002-.004.093.093 0 00.002-.004.093.093 0 00.004-.004.093.093 0 00.002-.004.093.093 0 00.002-.006.093.093 0 000-.004.093.093 0 00.002-.004.093.093 0 00.002-.004.093.093 0 000-.006.093.093 0 00.002-.004.093.093 0 000-.004.093.093 0 000-.006.093.093 0 000-.004v-.006a.093.093 0 000-.008V6.06a.093.093 0 000-.012.093.093 0 000-.006.093.093 0 000-.004.093.093 0 000-.006.093.093 0 00-.002-.004.093.093 0 000-.004.093.093 0 00-.002-.004.093.093 0 000-.002.093.093 0 00-.002-.004.093.093 0 00-.004-.008.093.093 0 00-.002-.002.093.093 0 00-.002-.008.093.093 0 00-.002-.002.093.093 0 00-.004-.004.093.093 0 00-.002-.004.093.093 0 00-.004-.004.093.093 0 00-.002-.004.093.093 0 00-.004-.002.093.093 0 00-.004-.004.093.093 0 00-.004-.002.093.093 0 00-.003-.002.093.093 0 00-.016-.01L12.059.02a.093.093 0 00-.006-.004L12.05.014a.093.093 0 00-.008-.004.093.093 0 00-.004-.002.093.093 0 00-.01-.004.093.093 0 00-.004 0 .093.093 0 00-.004-.002.093.093 0 00-.005-.002.093.093 0 00-.004 0 .093.093 0 00-.006 0 .093.093 0 00-.004 0 .093.093 0 00-.004 0 .093.093 0 00-.01 0zm-.082.256v4.388L8.79 6.454 5.675 8.262 1.863 6.046zm.187 0l10.043 5.79-3.812 2.216-6.23-3.618zM12 4.804l6.139 3.565-6.14 3.519-6.138-3.519zM1.77 6.208l3.813 2.216V15.57L1.77 17.787zm20.46 0v11.579l-3.814-2.216V8.424zM5.769 8.53l6.137 3.519v7.084l-6.137-3.563zm12.462 0v7.04l-6.138 3.563V12.05zm-12.556 7.2l6.23 3.62v4.388l-10.044-5.79zm12.65 0l3.813 2.218-10.045 5.79V19.35l3.117-1.81z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Apache NetBeans IDE</title><path d="M22.8575 6.1211c-.0092-.0866-.0486-.1598-.121-.2104C22.7381 5.9098 12.1194.032 12.1185.03a.2487.2487 0 00-.2372 0c-.003 0-10.6129 5.8784-10.6145 5.8797-.0744.0497-.1156.1241-.1243.2124v11.8365c.0149.0565.0178.1253.071.161.0183.0788 10.6175 5.7985 10.6694 5.8507a.2456.2456 0 00.2343 0c.0025-.0017 10.6135-5.7957 10.6147-5.7984.0748-.0489.115-.1262.1256-.2133V6.1211zm-17.633 9.3292L1.6323 17.534V6.5401l3.5922 2.011zm13.551-6.8993l3.5922-2.0109v10.9938l-3.5922-2.0836zm-.7407-.1455c-2.0115 1.1316-4.0232 2.263-6.0348 3.3943a125706.698 125706.698 0 01-6.0349-3.3943L12 4.9349zM5.7143 15.4473V8.8265l6.0408 3.398v6.5444l-6.0408-3.3216zm6.5305 3.3216v-6.5444l6.0409-3.398v6.6208c-2.0135 1.1074-4.0272 2.2145-6.0408 3.3216zM12 .5247l10.1094 5.5984-3.5771 2.003-6.4104-3.6858a.2418.2418 0 00-.2439 0L5.4676 8.126l-3.577-2.003L12 .5248zM5.4728 15.8731l6.2823 3.4547v4.014L1.8868 17.952zm6.772 7.4686v-4.014l6.2824-3.4546 3.586 2.0789z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/apacheopenoffice.svg b/assets/lib/simple-icons/icons/apacheopenoffice.svg
index 82fdfb9c..14097016 100644
--- a/assets/lib/simple-icons/icons/apacheopenoffice.svg
+++ b/assets/lib/simple-icons/icons/apacheopenoffice.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Apache OpenOffice icon</title><path d="M12 0A12 12 0 000 12a12.44 12.44 0 00.25 2.46A13 13 0 013.56 14a12.45 12.45 0 015.15 1.1l.76-.5a12.64 12.64 0 0111.36-.88.19.19 0 01.11.17.16.16 0 01-.06.13.19.19 0 01-.13 0h-.25a8.7 8.7 0 00-.89 0 12.9 12.9 0 00-9.11 3.34 10.7 10.7 0 00-1.17 1.34l-.11.15a.16.16 0 01-.12 0 .17.17 0 01-.12 0A12 12 0 00.68 16 12 12 0 1012 0zm9.39 7.18h-.56a7.08 7.08 0 00-6.21 2.17c-.06.06-.12.07-.18 0a7 7 0 00-4.79-2.19 7.44 7.44 0 00-2 .09.13.13 0 01-.13-.13.14.14 0 010-.1 7.27 7.27 0 016.94.12 7.33 7.33 0 016.8-.26l.14.08a.11.11 0 01.07.11.16.16 0 010 .09.11.11 0 01-.08.02z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Apache OpenOffice</title><path d="M12 0C5.372 0 0 5.371 0 12c0 .843.088 1.667.254 2.462a12.594 12.594 0 013.309-.44c1.836 0 3.579.392 5.152 1.099a12.536 12.536 0 017.303-2.332c1.704 0 3.33.339 4.811.953l.023.01a.186.186 0 01-.083.353l-.267-.02a12.525 12.525 0 00-.895-.032c-4.208 0-7.988 1.546-10.281 4.681l-.11.151a.183.183 0 01-.28.008C6.76 16.847 3.894 16.037.677 15.981 2.32 20.65 6.768 24 11.998 24 18.628 24 24 18.627 24 12c0-6.628-5.373-12-12.001-12zm9.395 7.181c-.042-.004-.114-.016-.16-.022a6.703 6.703 0 00-.405-.051c-2.447-.23-4.725.449-6.21 2.171-.063.064-.118.067-.179.003-1.181-1.34-2.864-1.935-4.795-2.118a7.24 7.24 0 00-2.01.09l-.01.001-.02.002a.125.125 0 01-.075-.223l.035-.02a7.23 7.23 0 014.05-.795c1.054.1 2.035.42 2.9.91a7.279 7.279 0 016.797-.255c.045.025.093.047.14.073a.116.116 0 01.067.11c0 .069-.044.134-.125.124z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/apachepulsar.svg b/assets/lib/simple-icons/icons/apachepulsar.svg
index 420afe4f..ac4c9418 100644
--- a/assets/lib/simple-icons/icons/apachepulsar.svg
+++ b/assets/lib/simple-icons/icons/apachepulsar.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Apache Pulsar icon</title><path d="M24 8.925h-5.866c-1.586-3.041-3.262-5.402-5.544-5.402-2.97 0-4.367 2.593-5.717 5.115l-.118.22H0v1.5h3.934c1.39 0 1.673.468 1.673.468-1.09 1.691-2.4 3.364-4.584 3.364H0v1.573h1.03c4.234 0 6.083-3.434 7.567-6.193 1.361-2.541 2.31-4.08 3.993-4.08 1.747 0 3.584 3.801 5.201 7.157.237.488.477.988.72 1.483-6.2.197-9.155 1.649-11.559 2.833-1.759.866-3.147 1.94-5.433 1.94H0v1.574h1.507c2.754 0 4.47-.85 6.295-1.751 2.53-1.243 5.398-2.652 12.157-2.652h3.907V14.5H21.66a1.18 1.18 0 01-.972-.393 70.83 70.83 0 01-1.133-2.321l-.511-1.047s.366-.393 1.38-.393H24Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Apache Pulsar</title><path d="M24 8.925h-5.866c-1.586-3.041-3.262-5.402-5.544-5.402-2.97 0-4.367 2.593-5.717 5.115l-.118.22H0v1.5h3.934c1.39 0 1.673.468 1.673.468-1.09 1.691-2.4 3.363-4.584 3.363H0v1.574h1.03c4.234 0 6.083-3.434 7.567-6.193 1.361-2.541 2.31-4.08 3.993-4.08 1.747 0 3.584 3.801 5.201 7.157.237.488.477.988.72 1.483-6.2.197-9.155 1.649-11.559 2.833-1.759.866-3.147 1.94-5.433 1.94H0v1.574h1.507c2.754 0 4.47-.85 6.295-1.751 2.53-1.243 5.398-2.652 12.157-2.652h3.907V14.5H21.66a1.18 1.18 0 01-.972-.393 70.83 70.83 0 01-1.133-2.321l-.511-1.047s.366-.393 1.38-.393H24Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/apacherocketmq.svg b/assets/lib/simple-icons/icons/apacherocketmq.svg
index 4a2514e8..d25ef238 100644
--- a/assets/lib/simple-icons/icons/apacherocketmq.svg
+++ b/assets/lib/simple-icons/icons/apacherocketmq.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Apache RocketMQ icon</title><path d="M12,24c-1.89-1.755-1.813-3.743-1.813-3.743h3.626C13.813,20.257,13.89,22.245,12,24z M12,1.988 c-1.595,2.106-4.693,6.893-4.693,12.291c0,1.562,0.293,2.87,0.589,3.793h8.208c0.296-0.923,0.589-2.231,0.589-3.793 C16.693,8.881,13.595,4.094,12,1.988z M17.95,14.279c0,3.556-1.363,5.903-1.363,5.903l-1.458-0.853H8.871l-1.458,0.853 c0,0-1.363-2.347-1.363-5.903C6.05,6.446,11.998,0.002,12,0C12.002,0.002,17.95,6.446,17.95,14.279z M18.773,16.614 c0,1.363-0.605,2.845-1.022,3.47h2.889l-0.32-1.965L18.773,16.614z M3.68,18.12l-0.32,1.965h2.889 c-0.418-0.625-1.022-2.107-1.022-3.47L3.68,18.12z M10.867,12.448c-0.154,0-0.279,0.125-0.279,0.279s0.125,0.279,0.279,0.279 s0.279-0.125,0.279-0.279S11.021,12.448,10.867,12.448z M11.762,12.448c-0.154,0-0.279,0.125-0.279,0.279s0.125,0.279,0.279,0.279 s0.279-0.125,0.279-0.279S11.916,12.448,11.762,12.448z M12.657,12.448c-0.154,0-0.279,0.125-0.279,0.279s0.125,0.279,0.279,0.279 s0.279-0.125,0.279-0.279S12.811,12.448,12.657,12.448z M15.715,15.98c0,0.799-0.647,1.446-1.446,1.446 c-0.799,0-1.446-0.647-1.446-1.446c0-0.262,0.071-0.507,0.192-0.719l-0.361-0.493c-0.273,0.12-0.575,0.187-0.892,0.187 c-0.551,0-1.054-0.201-1.443-0.532l-0.403,0.35c0.013,0.059,0.02,0.119,0.02,0.181c0,0.478-0.387,0.865-0.865,0.865 c-0.478,0-0.865-0.387-0.865-0.865s0.387-0.865,0.865-0.865c0.104,0,0.202,0.021,0.294,0.055l0.429-0.373 c-0.166-0.312-0.261-0.667-0.261-1.045c0-0.506,0.171-0.971,0.455-1.345l-0.451-0.49c-0.033,0.004-0.065,0.01-0.098,0.01 c-0.406,0-0.735-0.329-0.735-0.735c0-0.406,0.329-0.735,0.735-0.735c0.406,0,0.735,0.329,0.735,0.735 c0,0.055-0.007,0.109-0.019,0.161l0.455,0.495c0.337-0.204,0.73-0.324,1.153-0.324c0.398,0,0.771,0.106,1.094,0.288l0.385-0.385 c-0.04-0.116-0.063-0.241-0.063-0.371c0-0.632,0.512-1.144,1.144-1.144c0.632,0,1.144,0.512,1.144,1.144 c0,0.632-0.512,1.144-1.144,1.144c-0.13,0-0.255-0.023-0.371-0.063l-0.353,0.353c0.247,0.359,0.393,0.793,0.393,1.262 c0,0.551-0.201,1.054-0.531,1.442l0.329,0.449c0.151-0.053,0.312-0.084,0.481-0.084C15.068,14.534,15.715,15.182,15.715,15.98z M11.762,14.481c0.969,0,1.754-0.785,1.754-1.754c0-0.969-0.785-1.754-1.754-1.754c-0.969,0-1.754,0.785-1.754,1.754 C10.008,13.695,10.793,14.481,11.762,14.481z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Apache RocketMQ</title><path d="M11.438 23.467c-.517-.638-1.106-1.89-1.217-2.587l-.082-.511h1.835c1.435 0 1.835.036 1.835.165 0 .352-.412 1.553-.709 2.066-.333.577-1.021 1.41-1.155 1.4-.043-.004-.272-.244-.507-.533zm-4.532-4.193c-1.251-3.005-1.231-6.784.056-10.63.786-2.35 2.652-5.689 4.413-7.9L11.967 0l.422.493c.763.893 2.612 3.731 3.28 5.036 1.32 2.578 2.055 4.993 2.264 7.438.197 2.302-.176 4.837-.962 6.533l-.338.731-.727-.433-.727-.433H11.95c-2.466 0-3.287.039-3.476.166-.136.091-.453.29-.705.441l-.458.276-.405-.974zm9.338-1.79c.779-2.623.532-6.253-.635-9.344-.683-1.81-2.085-4.319-3.211-5.747-.357-.452-.387-.466-.609-.265-.441.398-1.854 2.622-2.544 4.002-1.927 3.856-2.484 7.995-1.521 11.308l.196.672h8.138l.186-.626zM3.311 19.835c.037-.155.108-.565.157-.909.079-.549.189-.729.885-1.443l.795-.815.002.507c.003.641.302 1.799.631 2.445l.254.498H4.64c-1.384-.001-1.396-.003-1.329-.283zm14.944-.376c.271-.613.529-1.616.606-2.352.031-.299.066-.282.762.379s.738.735.908 1.631c.098.516.179.952.179.97 0 .017-.618.031-1.373.031h-1.373l.291-.659zm-6.477-4.504a2.173 2.173 0 0 1-2.17-2.17c0-1.196.973-2.17 2.17-2.17s2.17.973 2.17 2.17-.973 2.17-2.17 2.17zm0-3.865c-.935 0-1.696.761-1.696 1.695s.761 1.696 1.696 1.696c.935 0 1.696-.761 1.696-1.696s-.761-1.695-1.696-1.695zM9.455 9.457a.657.657 0 1 1 0 1.314.657.657 0 0 1 0-1.314zm-.357 4.665a.8.8 0 1 1 0 1.6.8.8 0 0 1 0-1.6zm5.212-5.18a1.069 1.069 0 1 1 0 2.138 1.069 1.069 0 0 1 0-2.138zm0 5.75a1.418 1.418 0 1 1 0 2.836 1.418 1.418 0 0 1 0-2.836zM9.447 10.68l.491-.491.729.729-.491.491-.729-.729zm4.066-.336l.539.539-.729.729-.539-.539.729-.729zm-3.572 3.362l.491.491-.729.729-.491-.491.729-.729zm2.721 1.064l.61-.59.779.754-.61.59-.779-.754zm-1.717-2.167a.277.277 0 1 1 0 .554.277.277 0 0 1 0-.554zm.794 0a.277.277 0 1 1 0 .554.277.277 0 0 1 0-.554zm.794 0a.277.277 0 1 1 0 .554.277.277 0 0 1 0-.554z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/apachesolr.svg b/assets/lib/simple-icons/icons/apachesolr.svg
index fe5b1c37..4c45c5c9 100644
--- a/assets/lib/simple-icons/icons/apachesolr.svg
+++ b/assets/lib/simple-icons/icons/apachesolr.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Apache Solr icon</title><path d="M20.74 3.797L8.919 16.585l14.866-6.842a11.695 11.695 0 0 0-3.045-5.946zM11.964 0a11.7 11.7 0 0 0-4.621.931L5.767 14.293 13.683.144C13.146.036 12.573 0 11.964 0zm11.929 10.46L9.815 18.34l13.218-1.576c.609-1.468.967-3.045.967-4.728 0-.537-.036-1.075-.107-1.576zm-5.194 11.534a12.403 12.403 0 0 0 3.797-4.155l-12.358 2.436 8.561 1.719zM14.436.251L7.558 15.188 20.346 3.367c-1.647-1.54-3.653-2.651-5.91-3.116zM13.003 24a11.838 11.838 0 0 0 3.761-.931l-6.949-.824L13.003 24zm-12-16.907A11.626 11.626 0 0 0 0 10.961l1.863 3.331-.86-7.199zm5.301-5.696a11.957 11.957 0 0 0-4.226 3.797l1.755 8.776L6.304 1.397z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Apache Solr</title><path d="M20.741 3.8L8.926 16.573l14.849-6.851A11.979 11.979 0 0 0 20.741 3.8M11.975 0c-1.637 0-3.197.328-4.619.921l-1.585 13.36L13.693.124A12.168 12.168 0 0 0 11.975 0m11.918 10.459l-14.07 7.874 13.201-1.566a11.976 11.976 0 0 0 .869-6.308m-5.188 11.527a12.084 12.084 0 0 0 3.8-4.16l-12.374 2.457 8.574 1.703zM14.417.249L7.53 15.177 20.306 3.36A11.978 11.978 0 0 0 14.417.249M12.98 24a11.938 11.938 0 0 0 3.774-.945l-6.931-.822L12.98 24zM1.016 7.08a11.944 11.944 0 0 0-1.013 3.864l1.867 3.337-.854-7.201zm5.298-5.665a12.076 12.076 0 0 0-4.236 3.784l1.743 8.773L6.314 1.415z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/apachespark.svg b/assets/lib/simple-icons/icons/apachespark.svg
index 5c438b1b..d7c62df8 100644
--- a/assets/lib/simple-icons/icons/apachespark.svg
+++ b/assets/lib/simple-icons/icons/apachespark.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Apache Spark icon</title><path d="M10.812 0c-.425.013-.845.215-1.196.605a3.593 3.593 0 00-.493.722c-.355.667-.425 1.415-.556 2.143a551.9 551.9 0 00-.726 4.087c-.027.16-.096.227-.244.273C5.83 8.386 4.06 8.94 2.3 9.514c-.387.125-.773.289-1.114.506-1.042.665-1.196 1.753-.415 2.71.346.422.79.715 1.284.936 1.1.49 2.202.976 3.3 1.47.019.01.036.013.053.019h-.004l1.306.535c0 .023.002.045 0 .073-.2 2.03-.39 4.063-.58 6.095-.04.419-.012.831.134 1.23.317.87 1.065 1.148 1.881.701.372-.204.666-.497.937-.818 1.372-1.623 2.746-3.244 4.113-4.872.111-.133.205-.15.363-.098.349.117.697.231 1.045.347h.001c.02.012.045.02.073.03l.142.042c1.248.416 2.68.775 3.929 1.19.4.132.622.164 1.045.098.311-.048.592-.062.828-.236.602-.33.995-.957.988-1.682-.005-.427-.154-.813-.35-1.186-.82-1.556-1.637-3.113-2.461-4.666-.078-.148-.076-.243.037-.375 1.381-1.615 2.756-3.236 4.133-4.855.272-.32.513-.658.653-1.058.308-.878-.09-1.57-1-1.741a2.783 2.783 0 00-1.235.069c-1.974.521-3.947 1.041-5.918 1.57-.175.047-.26.015-.355-.144a353.08 353.08 0 00-2.421-4.018 4.61 4.61 0 00-.652-.849c-.371-.37-.802-.549-1.227-.536zm.172 3.703a.592.592 0 01.189.211c.87 1.446 1.742 2.89 2.609 4.338.07.118.135.16.277.121 1.525-.41 3.052-.813 4.579-1.217.367-.098.735-.193 1.103-.289a.399.399 0 01-.1.2c-1.259 1.48-2.516 2.962-3.779 4.438-.11.13-.12.22-.04.37.937 1.803 1.768 3.309 2.498 4.76l-3.696-1.019c-.538-.18-1.077-.358-1.615-.539-.163-.055-.25-.03-.36.1-1.248 1.488-2.504 2.97-3.759 4.454a.398.398 0 01-.18.132c.035-.378.068-.757.104-1.136.149-1.572.297-3.144.451-4.716-.03-.318.117-.405-.322-.545-1.493-.593-3.346-1.321-4.816-1.905a.595.595 0 01.24-.134c1.797-.57 3.595-1.14 5.394-1.705.127-.04.199-.092.211-.233.013-.148.05-.294.076-.441.241-1.363.483-2.726.726-4.088.068-.386.14-.771.21-1.157z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Apache Spark</title><path d="M10.812 0c-.425.013-.845.215-1.196.605a3.593 3.593 0 00-.493.722c-.355.667-.425 1.415-.556 2.143a551.9 551.9 0 00-.726 4.087c-.027.16-.096.227-.244.273C5.83 8.386 4.06 8.94 2.3 9.514c-.387.125-.773.289-1.114.506-1.042.665-1.196 1.753-.415 2.71.346.422.79.715 1.284.936 1.1.49 2.202.976 3.3 1.47.019.01.036.013.053.019h-.004l1.306.535c0 .023.002.045 0 .073-.2 2.03-.39 4.063-.58 6.095-.04.419-.012.831.134 1.23.317.87 1.065 1.148 1.881.701.372-.204.666-.497.937-.818 1.372-1.623 2.746-3.244 4.113-4.872.111-.133.205-.15.363-.098.349.117.697.231 1.045.347h.001c.02.012.045.02.073.03l.142.042c1.248.416 2.68.775 3.929 1.19.4.132.622.164 1.045.098.311-.048.592-.062.828-.236.602-.33.995-.957.988-1.682-.005-.427-.154-.813-.35-1.186-.82-1.556-1.637-3.113-2.461-4.666-.078-.148-.076-.243.037-.375 1.381-1.615 2.756-3.236 4.133-4.855.272-.32.513-.658.653-1.058.308-.878-.09-1.57-1-1.741a2.783 2.783 0 00-1.235.069c-1.974.521-3.947 1.041-5.918 1.57-.175.047-.26.015-.355-.144a353.08 353.08 0 00-2.421-4.018 4.61 4.61 0 00-.652-.849c-.371-.37-.802-.549-1.227-.536zm.172 3.703a.592.592 0 01.189.211c.87 1.446 1.742 2.89 2.609 4.338.07.118.135.16.277.121 1.525-.41 3.052-.813 4.579-1.217.367-.098.735-.193 1.103-.289a.399.399 0 01-.1.2c-1.259 1.48-2.516 2.962-3.779 4.438-.11.13-.12.22-.04.37.937 1.803 1.768 3.309 2.498 4.76l-3.696-1.019c-.538-.18-1.077-.358-1.615-.539-.163-.055-.25-.03-.36.1-1.248 1.488-2.504 2.97-3.759 4.454a.398.398 0 01-.18.132c.035-.378.068-.757.104-1.136.149-1.572.297-3.144.451-4.716-.03-.318.117-.405-.322-.545-1.493-.593-3.346-1.321-4.816-1.905a.595.595 0 01.24-.134c1.797-.57 3.595-1.14 5.394-1.705.127-.04.199-.092.211-.233.013-.148.05-.294.076-.441.241-1.363.483-2.726.726-4.088.068-.386.14-.771.21-1.157z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/apachetomcat.svg b/assets/lib/simple-icons/icons/apachetomcat.svg
new file mode 100644
index 00000000..9739f07d
--- /dev/null
+++ b/assets/lib/simple-icons/icons/apachetomcat.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Apache Tomcat</title><path d="M12.66 3.494c-.377.637-.544 2.114-.502 3.162l-.005.004c.036.946.165 1.816.372 2.615-3.096.767-6.466 2.795-8.352 4.754-.882-1.19-1.232-2.168-1.336-2.908-.131-.936.092-1.794.646-2.482.867-1.077 2.098-1.153 3.365-.94-.025.2.001.391.081.51.335.494 2.135.668 3.21.189-.793-1.112-2.4-1.654-2.844-1.437a.762.762 0 00-.335.359c-.438-.078-.873-.137-1.19-.134-1.117.008-1.971.398-2.61 1.193-.628.78-.882 1.747-.734 2.8.14.996.633 2.055 1.46 3.154-.138.147-.27.293-.398.436C1.473 17.023 0 19.44 0 19.842v.207h2.658l-.046-.246c-.15-.793.15-1.785.763-2.526.386-.465 1.024-.996 2.027-1.241.891.87 2.027 1.794 3.291 2.685h1.976v-.208a.678.678 0 00-.327-.577c-.312-.204-.794-.232-1.237-.081-.421-.47-.658-1.098-.709-1.877 4.287.38 8.388 2.11 13.015 4.528h2.546l.033-.167c.048-.237-.082-.556-.346-.851-.456-.51-1.349-.752-2.095-.734-.514-.612-3.342-3.591-3.507-3.765a9.626 9.626 0 002.673-2.847h1.388v-.298H20.89a9.81 9.81 0 00.223-.419h.989v-.299h-.845c.628-1.359.975-2.918.942-4.625l.003.002c-.002-.468-.147-2.445-.415-2.989-.726.276-2.047 1.17-2.346 2.084a14.557 14.557 0 00-4.463.056c-.237-.984-1.423-1.736-2.318-2.16zm.164.577c.211 1.148.593 1.869 1.42 2.223.734-.21 1.58-.34 2.448-.388l.717 1.571.46-1.585c.876.029 1.736.142 2.485.349.762-.554 1.057-1.4 1.218-2.138.202.86.178 2.717.18 2.717a9.883 9.883 0 01-.158 1.988l-.824.35.726.11a9.19 9.19 0 01-.198.714l-.703.205.56.201c-.094.253-.2.5-.314.738h-1.16v.299h1.008a8.788 8.788 0 01-.238.419h-.77v.298h.583a8.634 8.634 0 01-2.921 2.748c-1.334-.664-2.341-1.634-3.079-2.748h.446v-.298h-.636a9.195 9.195 0 01-.236-.419h.872v-.299h-1.026a10.12 10.12 0 01-.46-1.094l.522-.147-.659-.263c-.066-.215-.127-.43-.18-.646l1.015-.069-1.16-.615c-.282-1.563-.225-3.08.062-4.221zm2.946 2.97c-.89 0-1.24.909-1.255.948l.252.094c.012-.033.302-.773 1.003-.773.154 0 .262.062.34.195.182.314.152.933 0 1.58h-1.227v.269h1.159a5.679 5.679 0 01-.496 1.225l-.064.112 1.537.967-.865.57.148.224.967-.637 1.043.681.143-.228-.967-.598 1.518-.986v-.001c-.318-.47-.42-.872-.286-1.329h.108l1.167-.001.002-.268h-1.175c.216-.51.52-.968 1.602-.968v-.27c-.999 0-1.596.397-1.883 1.238h-2.154c.15-.672.177-1.333-.046-1.715a.63.63 0 00-.57-.33zm.55 2.313h2.126c-.095.304-.057.763.178 1.157h-2.737c.166-.334.32-.74.433-1.157zm-3.683.321c.155.515.344.997.562 1.451h-.91v.299h1.06c.075.142.153.282.233.419H12.29v.298h1.478c.91 1.416 2.14 2.499 3.534 3.318a9.45 9.45 0 00.456-.28l.362.39-.61.938 1.04-.474.606.652-1.019.776 1.403-.363 1.905 2.05.16-.014c1.007-.086 1.58.46 1.73.63.112.124.179.237.215.326h-2.036c-4.67-2.437-8.771-4.155-13.127-4.53.01-.607.117-1.293.324-2.058l-.4-.108c-.213.786-.325 1.497-.338 2.134-.454-.03-.91-.046-1.371-.046-.391 0-.747.036-1.072.1a14.771 14.771 0 01-1.09-1.21c.546-.57 1.19-1.123 1.893-1.643l.967.668-.316-1.128c.297-.2.603-.394.914-.58l1.434.73-.673-1.162c.198-.106.398-.21.598-.31l2.007 1.346-.66-1.952a15.32 15.32 0 012.034-.667zm3.492 1.105h2.22l-1.084.715zM4.153 14.675c.273.337.577.678.91 1.021a4.104 4.104 0 00-2.007 1.316c-.629.76-.962 1.762-.886 2.622H.495c.337-.728 1.677-2.833 3.658-4.959z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/aparat.svg b/assets/lib/simple-icons/icons/aparat.svg
new file mode 100644
index 00000000..0bd15581
--- /dev/null
+++ b/assets/lib/simple-icons/icons/aparat.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Aparat</title><path d="M12.0014 1.5938C2.7317 1.5906-1.9119 12.7965 4.641 19.3515c2.975 2.976 7.4496 3.8669 11.3374 2.257 3.8877-1.61 6.4228-5.4036 6.4228-9.6116 0-5.7441-4.6555-10.4012-10.3997-10.4031zM6.11 6.783c.5011-2.5982 3.8927-3.2936 5.376-1.1028 1.4834 2.1907-.4216 5.0816-3.02 4.5822-1.6118-.3098-2.6668-1.868-2.356-3.4794zm4.322 8.9882c-.5045 2.5971-3.8965 3.288-5.377 1.0959-1.4807-2.1922.427-5.0807 3.0247-4.5789 1.612.3114 2.6655 1.8714 2.3524 3.483zm1.2605-2.405c-1.1528-.2231-1.4625-1.7273-.4917-2.3877.9708-.6604 2.256.18 2.0401 1.3343-.1347.7198-.8294 1.1924-1.5484 1.0533zm6.197 3.8375c-.501 2.5981-3.8927 3.2935-5.376 1.1028-1.4834-2.1908.4217-5.0817 3.0201-4.5822 1.6117.3097 2.6667 1.8679 2.356 3.4794zm-1.9662-5.5018c-2.5981-.501-3.2935-3.8962-1.1027-5.3795 2.1907-1.4834 5.0816.4216 4.5822 3.02-.3082 1.6132-1.8668 2.6701-3.4795 2.3595zm-2.3348 11.5618l2.2646.611c1.9827.5263 4.0167-.6542 4.5433-2.6368l.639-2.4016a11.3828 11.3828 0 0 1-7.4469 4.4274zM21.232 3.5985l-2.363-.6284a11.3757 11.3757 0 0 1 4.3538 7.619l.6495-2.4578c.5194-1.9804-.6615-4.0076-2.6403-4.5328zM.6713 13.8086l-.5407 2.04c-.5263 1.9826.6542 4.0166 2.6368 4.5432l2.1066.5618a11.3792 11.3792 0 0 1-4.2027-7.145zM10.3583.702L8.1498.1261C6.166-.4024 4.1296.7785 3.603 2.763l-.5512 2.082A11.3757 11.3757 0 0 1 10.3583.702Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/apollographql.svg b/assets/lib/simple-icons/icons/apollographql.svg
index f441720d..fb6c1f34 100644
--- a/assets/lib/simple-icons/icons/apollographql.svg
+++ b/assets/lib/simple-icons/icons/apollographql.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Apollo GraphQL icon</title><path d="M12,0C5.372,0 0,5.373 0,12 0,18.628 5.372,24 12,24 18.627,24 24,18.628 24,12A12.014,12.014 0 0 0 23.527,8.657 0.6,0.6 0 0 0 22.4,9.066H22.398C22.663,10.009 22.8,10.994 22.8,12A10.73,10.73 0 0 1 19.637,19.637 10.729,10.729 0 0 1 12,22.8 10.73,10.73 0 0 1 4.363,19.637 10.728,10.728 0 0 1 1.2,12 10.73,10.73 0 0 1 4.363,4.363 10.728,10.728 0 0 1 12,1.2C14.576,1.2 17.013,2.096 18.958,3.74A1.466,1.466 0 1 0 19.82,2.9 11.953,11.953 0 0 0 12,0ZM10.56,5.88 6.36,16.782H8.99L9.677,14.934H13.646L12.927,12.892H10.314L12.014,8.201 15.038,16.781H17.669L13.47,5.88Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Apollo GraphQL</title><path d="M12,0C5.372,0 0,5.373 0,12 0,18.628 5.372,24 12,24 18.627,24 24,18.628 24,12A12.014,12.014 0 0 0 23.527,8.657 0.6,0.6 0 0 0 22.4,9.066H22.398C22.663,10.009 22.8,10.994 22.8,12A10.73,10.73 0 0 1 19.637,19.637 10.729,10.729 0 0 1 12,22.8 10.73,10.73 0 0 1 4.363,19.637 10.728,10.728 0 0 1 1.2,12 10.73,10.73 0 0 1 4.363,4.363 10.728,10.728 0 0 1 12,1.2C14.576,1.2 17.013,2.096 18.958,3.74A1.466,1.466 0 1 0 19.82,2.9 11.953,11.953 0 0 0 12,0ZM10.56,5.88 6.36,16.782H8.99L9.677,14.934H13.646L12.927,12.892H10.314L12.014,8.201 15.038,16.781H17.669L13.47,5.88Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/apostrophe.svg b/assets/lib/simple-icons/icons/apostrophe.svg
new file mode 100644
index 00000000..8db7001d
--- /dev/null
+++ b/assets/lib/simple-icons/icons/apostrophe.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Apostrophe</title><path d="M15.674 0c-.795.001-1.794.095-3.167.313l-4.6.729c-3.138.497-4.224 1.003-5.274 1.798a6.485 6.485 0 00-2.24 3.082c-.43 1.245-.577 2.434-.08 5.571l.729 4.6c.497 3.138 1.003 4.22 1.798 5.273a6.485 6.485 0 003.082 2.24c1.245.431 2.434.578 5.571.081l4.6-.729c3.138-.497 4.22-1.003 5.273-1.799a6.477 6.477 0 002.24-3.081c.431-1.245.578-2.434.082-5.571l-.73-4.6c-.497-3.138-1.003-4.224-1.799-5.274a6.477 6.477 0 00-3.081-2.24C17.378.152 16.695 0 15.674 0zm-5.319 4.566a.52.52 0 01.003 0 .52.52 0 01.52.444l.77 4.865a.52.52 0 01-.435.6l-4.859.77a.52.52 0 01-.602-.436l-.77-4.866a.52.52 0 01.435-.6l4.86-.77a.52.52 0 01.078-.007zM9.92 5.692l-3.823.605.612 3.83 3.813-.605zm6.504 2.91a3.274 3.274 0 01.497 6.513 3.258 3.258 0 01-3.713-2.726 3.274 3.274 0 013.216-3.787zm-.054 1.058a2.226 2.226 0 10.388 4.42 2.208 2.208 0 001.818-2.541 2.226 2.226 0 00-2.206-1.879zm-6.45 3a.52.52 0 01.424.208l3.824 4.964a.52.52 0 01-.333.839l-5.932.937a.52.52 0 01-.576-.695l2.108-5.901a.52.52 0 01.486-.352zm.18 1.611L8.61 18.438l4.186-.664z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/appannie.svg b/assets/lib/simple-icons/icons/appannie.svg
new file mode 100644
index 00000000..3db685f5
--- /dev/null
+++ b/assets/lib/simple-icons/icons/appannie.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>App Annie</title><path d="M7.834 10.525l2.958 8.975-8.873-8.975zm8.325 0h5.862l-8.793 8.974zm-1.02-.401l-3.169 9.691-3.17-9.691 3.17-3.231zM9.328 2.796h5.326L11.99 5.43zm6.7 6.712L12.75 6.213l3.027-3.043 6.305 6.338zM11.25 6.232L7.999 9.508h-6.08L8.211 3.17zm4.634-4.447l-.006-.006H8.121C5.414 4.529 2.706 7.279 0 10.03l12 12.192c4-4.064 8.001-8.127 12-12.192l-8.115-8.244"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/appian.svg b/assets/lib/simple-icons/icons/appian.svg
new file mode 100644
index 00000000..8d211528
--- /dev/null
+++ b/assets/lib/simple-icons/icons/appian.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Appian</title><path d="M19.646 6.117C19.538 1.763 17.883 0 13.636 0H7.34v4.066h4.57c1.799 0 2.807 0 2.807 1.655v2.375c-.828 0-2.88-.036-4.426-.036-4.246 0-5.83 1.727-5.937 6.117v3.742c.108 4.102 1.51 5.865 5.253 6.081l3.85-4.066c-.397.036-.864.036-1.44.036-1.798 0-2.806 0-2.806-1.655v-4.57c0-1.655 1.007-1.655 2.806-1.655 1.908 0 2.807 0 2.807 1.655v10.22h4.821z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/apple.svg b/assets/lib/simple-icons/icons/apple.svg
index 796443d4..de4b0d17 100644
--- a/assets/lib/simple-icons/icons/apple.svg
+++ b/assets/lib/simple-icons/icons/apple.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Apple icon</title><path d="M7.078 23.55c-.473-.316-.893-.703-1.244-1.15-.383-.463-.738-.95-1.064-1.454-.766-1.12-1.365-2.345-1.78-3.636-.5-1.502-.743-2.94-.743-4.347 0-1.57.34-2.94 1.002-4.09.49-.9 1.22-1.653 2.1-2.182.85-.53 1.84-.82 2.84-.84.35 0 .73.05 1.13.15.29.08.64.21 1.07.37.55.21.85.34.95.37.32.12.59.17.8.17.16 0 .39-.05.645-.13.145-.05.42-.14.81-.31.386-.14.692-.26.935-.35.37-.11.728-.21 1.05-.26.39-.06.777-.08 1.148-.05.71.05 1.36.2 1.94.42 1.02.41 1.843 1.05 2.457 1.96-.26.16-.5.346-.725.55-.487.43-.9.94-1.23 1.505-.43.77-.65 1.64-.644 2.52.015 1.083.29 2.035.84 2.86.387.6.904 1.114 1.534 1.536.31.21.582.355.84.45-.12.375-.252.74-.405 1.1-.347.807-.76 1.58-1.25 2.31-.432.63-.772 1.1-1.03 1.41-.402.48-.79.84-1.18 1.097-.43.285-.935.436-1.452.436-.35.015-.7-.03-1.034-.127-.29-.095-.576-.202-.856-.323-.293-.134-.596-.248-.905-.34-.38-.1-.77-.148-1.164-.147-.4 0-.79.05-1.16.145-.31.088-.61.196-.907.325-.42.175-.695.29-.855.34-.324.096-.656.154-.99.175-.52 0-1.004-.15-1.486-.45zm6.854-18.46c-.68.34-1.326.484-1.973.436-.1-.646 0-1.31.27-2.037.24-.62.56-1.18 1-1.68.46-.52 1.01-.95 1.63-1.26.66-.34 1.29-.52 1.89-.55.08.68 0 1.35-.25 2.07-.228.64-.568 1.23-1 1.76-.435.52-.975.95-1.586 1.26z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Apple</title><path d="M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/applearcade.svg b/assets/lib/simple-icons/icons/applearcade.svg
new file mode 100644
index 00000000..ee091db6
--- /dev/null
+++ b/assets/lib/simple-icons/icons/applearcade.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Apple Arcade</title><path d="M.198 18.24a.966.966 0 0 1-.194-.571v-.955s0-.571.563-.313c0 0 6.919 3.135 8.033 3.626a7.832 7.832 0 0 0 3.408.729 8.216 8.216 0 0 0 3.396-.729l8.037-3.626c.559-.258.559.313.559.313v.955a1.038 1.038 0 0 1-.198.575c-.19.258-.515.539-1.411.959-.713.337-6.23 2.818-6.995 3.17a8.008 8.008 0 0 1-3.4.729 8.336 8.336 0 0 1-3.82-.927c-1.435-.65-5.849-2.631-6.567-2.972-.9-.428-1.153-.654-1.411-.963zm1.411-5.973l6.987-3.17a7.975 7.975 0 0 1 2.164-.634v5.707c0 .396.571.697 1.236.697s1.141-.313 1.141-.697V8.479c.778.105 1.54.313 2.263.618l6.987 3.17c.579.273 1.609.761 1.609 1.538s-1.011 1.236-1.609 1.53l-6.987 3.17a8.2 8.2 0 0 1-3.396.729 7.832 7.832 0 0 1-3.408-.729l-6.987-3.17C1.011 15.042 0 14.574 0 13.801s1.03-1.264 1.609-1.534zm1.807 2.247c.77.396 1.683.396 2.453 0 .682-.396.686-1.026 0-1.419a2.705 2.705 0 0 0-2.453 0c-.68.392-.666 1.02 0 1.419zM12 7.595a3.35 3.35 0 1 1 3.349-3.351v.003c0 1.849-1.5 3.348-3.349 3.348z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/applemusic.svg b/assets/lib/simple-icons/icons/applemusic.svg
index 4afbe2da..186414ba 100644
--- a/assets/lib/simple-icons/icons/applemusic.svg
+++ b/assets/lib/simple-icons/icons/applemusic.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Apple Music icon</title><path d="M23.997 6.124c0-.738-.065-1.47-.24-2.19-.317-1.31-1.062-2.31-2.18-3.043C21.003.517 20.373.285 19.7.164c-.517-.093-1.038-.135-1.564-.15-.04-.003-.083-.01-.124-.013H5.988c-.152.01-.303.017-.455.026C4.786.07 4.043.15 3.34.428 2.004.958 1.04 1.88.475 3.208c-.192.448-.292.925-.363 1.408-.056.392-.088.785-.1 1.18 0 .032-.007.062-.01.093v12.223c.01.14.017.283.027.424.05.815.154 1.624.497 2.373.65 1.42 1.738 2.353 3.234 2.802.42.127.856.187 1.293.228.555.053 1.11.06 1.667.06h11.03c.525 0 1.048-.034 1.57-.1.823-.106 1.597-.35 2.296-.81.84-.553 1.472-1.287 1.88-2.208.186-.42.293-.87.37-1.324.113-.675.138-1.358.137-2.04-.002-3.8 0-7.595-.003-11.393zm-6.423 3.99v5.712c0 .417-.058.827-.244 1.206-.29.59-.76.962-1.388 1.14-.35.1-.706.157-1.07.173-.95.045-1.773-.6-1.943-1.536-.142-.773.227-1.624 1.038-2.022.323-.16.67-.25 1.018-.324.378-.082.758-.153 1.134-.24.274-.063.457-.23.51-.516.014-.063.02-.13.02-.193 0-1.815 0-3.63-.002-5.443 0-.062-.01-.125-.026-.185-.04-.15-.15-.243-.304-.234-.16.01-.318.035-.475.066-.76.15-1.52.303-2.28.456l-2.326.47-1.374.278c-.016.003-.032.01-.048.013-.277.077-.377.203-.39.49-.002.042 0 .086 0 .13-.002 2.602 0 5.204-.003 7.805 0 .42-.047.836-.215 1.227-.278.64-.77 1.04-1.434 1.233-.35.1-.71.16-1.075.172-.96.036-1.755-.6-1.92-1.544-.14-.812.23-1.685 1.154-2.075.357-.15.73-.232 1.108-.31.287-.06.575-.116.86-.177.383-.083.583-.323.6-.714v-.15c0-2.96 0-5.922.002-8.882 0-.123.013-.25.042-.37.07-.285.273-.448.546-.518.255-.066.515-.112.774-.165.733-.15 1.466-.296 2.2-.444l2.27-.46c.67-.134 1.34-.27 2.01-.403.22-.043.443-.088.664-.106.31-.025.523.17.554.482.008.073.012.148.012.223.002 1.91.002 3.822 0 5.732z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Apple Music</title><path d="M23.994 6.124a9.23 9.23 0 00-.24-2.19c-.317-1.31-1.062-2.31-2.18-3.043a5.022 5.022 0 00-1.877-.726 10.496 10.496 0 00-1.564-.15c-.04-.003-.083-.01-.124-.013H5.986c-.152.01-.303.017-.455.026-.747.043-1.49.123-2.193.4-1.336.53-2.3 1.452-2.865 2.78-.192.448-.292.925-.363 1.408-.056.392-.088.785-.1 1.18 0 .032-.007.062-.01.093v12.223c.01.14.017.283.027.424.05.815.154 1.624.497 2.373.65 1.42 1.738 2.353 3.234 2.801.42.127.856.187 1.293.228.555.053 1.11.06 1.667.06h11.03a12.5 12.5 0 001.57-.1c.822-.106 1.596-.35 2.295-.81a5.046 5.046 0 001.88-2.207c.186-.42.293-.87.37-1.324.113-.675.138-1.358.137-2.04-.002-3.8 0-7.595-.003-11.393zm-6.423 3.99v5.712c0 .417-.058.827-.244 1.206-.29.59-.76.962-1.388 1.14-.35.1-.706.157-1.07.173-.95.045-1.773-.6-1.943-1.536a1.88 1.88 0 011.038-2.022c.323-.16.67-.25 1.018-.324.378-.082.758-.153 1.134-.24.274-.063.457-.23.51-.516a.904.904 0 00.02-.193c0-1.815 0-3.63-.002-5.443a.725.725 0 00-.026-.185c-.04-.15-.15-.243-.304-.234-.16.01-.318.035-.475.066-.76.15-1.52.303-2.28.456l-2.325.47-1.374.278c-.016.003-.032.01-.048.013-.277.077-.377.203-.39.49-.002.042 0 .086 0 .13-.002 2.602 0 5.204-.003 7.805 0 .42-.047.836-.215 1.227-.278.64-.77 1.04-1.434 1.233-.35.1-.71.16-1.075.172-.96.036-1.755-.6-1.92-1.544-.14-.812.23-1.685 1.154-2.075.357-.15.73-.232 1.108-.31.287-.06.575-.116.86-.177.383-.083.583-.323.6-.714v-.15c0-2.96 0-5.922.002-8.882 0-.123.013-.25.042-.37.07-.285.273-.448.546-.518.255-.066.515-.112.774-.165.733-.15 1.466-.296 2.2-.444l2.27-.46c.67-.134 1.34-.27 2.01-.403.22-.043.442-.088.663-.106.31-.025.523.17.554.482.008.073.012.148.012.223.002 1.91.002 3.822 0 5.732z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/applepay.svg b/assets/lib/simple-icons/icons/applepay.svg
index a9586044..908afdc7 100644
--- a/assets/lib/simple-icons/icons/applepay.svg
+++ b/assets/lib/simple-icons/icons/applepay.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Apple Pay icon</title><path d="M4.388 8.284c-.282.337-.732.602-1.182.564-.056-.455.164-.938.422-1.237C3.91 7.265 4.402 7.02 4.8 7c.047.474-.136.938-.412 1.284zm.407.654c-.651-.038-1.21.375-1.518.375-.315 0-.788-.356-1.304-.346-.67.01-1.293.393-1.635 1.005C-.366 11.194.155 13.005.834 14c.333.493.732 1.033 1.257 1.014.496-.019.693-.327 1.293-.327.605 0 .778.327 1.304.318.543-.01.885-.493 1.218-.986.38-.56.535-1.104.544-1.133-.01-.01-1.05-.412-1.06-1.625-.009-1.015.82-1.498.858-1.526-.468-.702-1.2-.778-1.453-.797zM8.56 7.564v7.389h1.135v-2.526h1.57c1.434 0 2.442-.996 2.442-2.436 0-1.441-.989-2.427-2.404-2.427H8.559zm1.135.967h1.308c.984 0 1.546.53 1.546 1.464 0 .934-.562 1.47-1.551 1.47H9.694V8.53zm6.084 6.478c.713 0 1.374-.364 1.674-.943h.023v.887h1.05v-3.678c0-1.066-.844-1.754-2.142-1.754-1.205 0-2.095.697-2.128 1.654h1.022c.084-.455.501-.753 1.073-.753.694 0 1.083.327 1.083.929v.407l-1.416.086c-1.317.08-2.03.625-2.03 1.573 0 .957.736 1.592 1.791 1.592zm.305-.876c-.605 0-.99-.294-.99-.744 0-.465.371-.735 1.079-.778l1.26-.08v.417c0 .692-.58 1.185-1.35 1.185zm3.844 2.83c1.106 0 1.626-.427 2.08-1.721L24 9.592h-1.153l-1.336 4.365h-.023l-1.336-4.365h-1.186l1.921 5.38-.103.327c-.173.554-.454.767-.956.767-.089 0-.262-.01-.333-.019v.887c.066.019.347.028.432.028z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Apple Pay</title><path d="M2.15 4.318a42.16 42.16 0 0 0-.454.003c-.15.005-.303.013-.452.04a1.44 1.44 0 0 0-1.06.772c-.07.138-.114.278-.14.43-.028.148-.037.3-.04.45A10.2 10.2 0 0 0 0 6.222v11.557c0 .07.002.138.003.207.004.15.013.303.04.452.027.15.072.291.142.429a1.436 1.436 0 0 0 .63.63c.138.07.278.115.43.142.148.027.3.036.45.04l.208.003h20.194l.207-.003c.15-.004.303-.013.452-.04.15-.027.291-.071.428-.141a1.432 1.432 0 0 0 .631-.631c.07-.138.115-.278.141-.43.027-.148.036-.3.04-.45.002-.07.003-.138.003-.208l.001-.246V6.221c0-.07-.002-.138-.004-.207a2.995 2.995 0 0 0-.04-.452 1.446 1.446 0 0 0-1.2-1.201 3.022 3.022 0 0 0-.452-.04 10.448 10.448 0 0 0-.453-.003zm0 .512h19.942c.066 0 .131.002.197.003.115.004.25.01.375.032.109.02.2.05.287.094a.927.927 0 0 1 .407.407.997.997 0 0 1 .094.288c.022.123.028.258.031.374.002.065.003.13.003.197v11.552c0 .065 0 .13-.003.196-.003.115-.009.25-.032.375a.927.927 0 0 1-.5.693 1.002 1.002 0 0 1-.286.094 2.598 2.598 0 0 1-.373.032l-.2.003H1.906c-.066 0-.133-.002-.196-.003a2.61 2.61 0 0 1-.375-.032c-.109-.02-.2-.05-.288-.094a.918.918 0 0 1-.406-.407 1.006 1.006 0 0 1-.094-.288 2.531 2.531 0 0 1-.032-.373 9.588 9.588 0 0 1-.002-.197V6.224c0-.065 0-.131.002-.197.004-.114.01-.248.032-.375.02-.108.05-.199.094-.287a.925.925 0 0 1 .407-.406 1.03 1.03 0 0 1 .287-.094c.125-.022.26-.029.375-.032.065-.002.131-.002.196-.003zm4.71 3.7c-.3.016-.668.199-.88.456-.191.22-.36.58-.316.918.338.03.675-.169.888-.418.205-.258.345-.603.308-.955zm2.207.42v5.493h.852v-1.877h1.18c1.078 0 1.835-.739 1.835-1.812 0-1.07-.742-1.805-1.808-1.805zm.852.719h.982c.739 0 1.161.396 1.161 1.089 0 .692-.422 1.092-1.164 1.092h-.979zm-3.154.3c-.45.01-.83.28-1.05.28-.235 0-.593-.264-.981-.257a1.446 1.446 0 0 0-1.23.747c-.527.908-.139 2.255.374 2.995.249.366.549.769.944.754.373-.014.52-.242.973-.242.454 0 .586.242.98.235.41-.007.667-.366.915-.733.286-.417.403-.82.41-.841-.007-.008-.79-.308-.797-1.209-.008-.754.615-1.113.644-1.135-.352-.52-.9-.578-1.09-.593a1.123 1.123 0 0 0-.092-.002zm8.204.397c-.99 0-1.606.533-1.652 1.256h.777c.072-.358.369-.586.845-.586.502 0 .803.266.803.711v.309l-1.097.064c-.951.054-1.488.484-1.488 1.184 0 .72.548 1.207 1.332 1.207.526 0 1.032-.281 1.264-.727h.019v.659h.788v-2.76c0-.803-.62-1.317-1.591-1.317zm1.94.072l1.446 4.009c0 .003-.073.24-.073.247-.125.41-.33.571-.711.571-.069 0-.206 0-.267-.015v.666c.06.011.267.019.335.019.83 0 1.226-.312 1.568-1.283l1.5-4.214h-.868l-1.012 3.259h-.015l-1.013-3.26zm-1.167 2.189v.316c0 .521-.45.917-1.024.917-.442 0-.731-.228-.731-.579 0-.342.278-.56.769-.593z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/applepodcasts.svg b/assets/lib/simple-icons/icons/applepodcasts.svg
index d52fe035..a5586f1b 100644
--- a/assets/lib/simple-icons/icons/applepodcasts.svg
+++ b/assets/lib/simple-icons/icons/applepodcasts.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Apple Podcasts icon</title><path d="M5.34 0A5.328 5.328 0 000 5.34v13.32A5.328 5.328 0 005.34 24h13.32A5.328 5.328 0 0024 18.66V5.34A5.328 5.328 0 0018.66 0zm6.525 2.568c2.336 0 4.448.902 6.056 2.587 1.224 1.272 1.912 2.619 2.264 4.392.12.59.12 2.2.007 2.864a8.506 8.506 0 01-3.24 5.296c-.608.46-2.096 1.261-2.336 1.261-.088 0-.096-.091-.056-.46.072-.592.144-.715.48-.856.536-.224 1.448-.874 2.008-1.435a7.644 7.644 0 002.008-3.536c.208-.824.184-2.656-.048-3.504-.728-2.696-2.928-4.792-5.624-5.352-.784-.16-2.208-.16-3 0-2.728.56-4.984 2.76-5.672 5.528-.184.752-.184 2.584 0 3.336.456 1.832 1.64 3.512 3.192 4.512.304.2.672.408.824.472.336.144.408.264.472.856.04.36.03.464-.056.464-.056 0-.464-.176-.896-.384l-.04-.03c-2.472-1.216-4.056-3.274-4.632-6.012-.144-.706-.168-2.392-.03-3.04.36-1.74 1.048-3.1 2.192-4.304 1.648-1.737 3.768-2.656 6.128-2.656zm.134 2.81c.409.004.803.04 1.106.106 2.784.62 4.76 3.408 4.376 6.174-.152 1.114-.536 2.03-1.216 2.88-.336.43-1.152 1.15-1.296 1.15-.023 0-.048-.272-.048-.603v-.605l.416-.496c1.568-1.878 1.456-4.502-.256-6.224-.664-.67-1.432-1.064-2.424-1.246-.64-.118-.776-.118-1.448-.008-1.02.167-1.81.562-2.512 1.256-1.72 1.704-1.832 4.342-.264 6.222l.413.496v.608c0 .336-.027.608-.06.608-.03 0-.264-.16-.512-.36l-.034-.011c-.832-.664-1.568-1.842-1.872-2.997-.184-.698-.184-2.024.008-2.72.504-1.878 1.888-3.335 3.808-4.019.41-.145 1.133-.22 1.814-.211zm-.13 2.99c.31 0 .62.06.844.178.488.253.888.745 1.04 1.259.464 1.578-1.208 2.96-2.72 2.254h-.015c-.712-.331-1.096-.956-1.104-1.77 0-.733.408-1.371 1.112-1.745.224-.117.534-.176.844-.176zm-.011 4.728c.988-.004 1.706.349 1.97.97.198.464.124 1.932-.218 4.302-.232 1.656-.36 2.074-.68 2.356-.44.39-1.064.498-1.656.288h-.003c-.716-.257-.87-.605-1.164-2.644-.341-2.37-.416-3.838-.218-4.302.262-.616.974-.966 1.97-.97z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Apple Podcasts</title><path d="M5.34 0A5.328 5.328 0 000 5.34v13.32A5.328 5.328 0 005.34 24h13.32A5.328 5.328 0 0024 18.66V5.34A5.328 5.328 0 0018.66 0zm6.525 2.568c2.336 0 4.448.902 6.056 2.587 1.224 1.272 1.912 2.619 2.264 4.392.12.59.12 2.2.007 2.864a8.506 8.506 0 01-3.24 5.296c-.608.46-2.096 1.261-2.336 1.261-.088 0-.096-.091-.056-.46.072-.592.144-.715.48-.856.536-.224 1.448-.874 2.008-1.435a7.644 7.644 0 002.008-3.536c.208-.824.184-2.656-.048-3.504-.728-2.696-2.928-4.792-5.624-5.352-.784-.16-2.208-.16-3 0-2.728.56-4.984 2.76-5.672 5.528-.184.752-.184 2.584 0 3.336.456 1.832 1.64 3.512 3.192 4.512.304.2.672.408.824.472.336.144.408.264.472.856.04.36.03.464-.056.464-.056 0-.464-.176-.896-.384l-.04-.03c-2.472-1.216-4.056-3.274-4.632-6.012-.144-.706-.168-2.392-.03-3.04.36-1.74 1.048-3.1 2.192-4.304 1.648-1.737 3.768-2.656 6.128-2.656zm.134 2.81c.409.004.803.04 1.106.106 2.784.62 4.76 3.408 4.376 6.174-.152 1.114-.536 2.03-1.216 2.88-.336.43-1.152 1.15-1.296 1.15-.023 0-.048-.272-.048-.603v-.605l.416-.496c1.568-1.878 1.456-4.502-.256-6.224-.664-.67-1.432-1.064-2.424-1.246-.64-.118-.776-.118-1.448-.008-1.02.167-1.81.562-2.512 1.256-1.72 1.704-1.832 4.342-.264 6.222l.413.496v.608c0 .336-.027.608-.06.608-.03 0-.264-.16-.512-.36l-.034-.011c-.832-.664-1.568-1.842-1.872-2.997-.184-.698-.184-2.024.008-2.72.504-1.878 1.888-3.335 3.808-4.019.41-.145 1.133-.22 1.814-.211zm-.13 2.99c.31 0 .62.06.844.178.488.253.888.745 1.04 1.259.464 1.578-1.208 2.96-2.72 2.254h-.015c-.712-.331-1.096-.956-1.104-1.77 0-.733.408-1.371 1.112-1.745.224-.117.534-.176.844-.176zm-.011 4.728c.988-.004 1.706.349 1.97.97.198.464.124 1.932-.218 4.302-.232 1.656-.36 2.074-.68 2.356-.44.39-1.064.498-1.656.288h-.003c-.716-.257-.87-.605-1.164-2.644-.341-2.37-.416-3.838-.218-4.302.262-.616.974-.966 1.97-.97z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/appletv.svg b/assets/lib/simple-icons/icons/appletv.svg
index 5c9c3e0e..216184d0 100644
--- a/assets/lib/simple-icons/icons/appletv.svg
+++ b/assets/lib/simple-icons/icons/appletv.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Apple TV icon</title><path d="M20.57 17.735h-1.815l-3.34-9.203h1.633l2.02 5.987c.075.231.273.9.586 2.012l.297-.997.33-1.006 2.094-6.004H24zm-5.344-.066a5.76 5.76 0 0 1-1.55.207c-1.23 0-1.84-.693-1.84-2.087V9.646h-1.063V8.532h1.121V7.081l1.476-.602v2.062h1.707v1.113H13.38v5.805c0 .446.074.75.214.932.14.182.396.264.75.264.207 0 .495-.041.883-.115zm-7.29-5.343c.017 1.764 1.55 2.358 1.567 2.366-.017.042-.248.842-.808 1.658-.487.71-.99 1.418-1.79 1.435-.783.016-1.03-.462-1.93-.462-.89 0-1.17.445-1.913.478-.758.025-1.344-.775-1.838-1.484-.998-1.451-1.765-4.098-.734-5.88.51-.89 1.426-1.451 2.416-1.46.75-.016 1.468.512 1.93.512.461 0 1.327-.627 2.234-.536.38.016 1.452.157 2.136 1.154-.058.033-1.278.743-1.27 2.219M6.468 7.988c.404-.495.685-1.18.61-1.864-.585.025-1.294.388-1.723.883-.38.437-.71 1.138-.619 1.806.652.05 1.328-.338 1.732-.825Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Apple TV</title><path d="M20.57 17.735h-1.815l-3.34-9.203h1.633l2.02 5.987c.075.231.273.9.586 2.012l.297-.997.33-1.006 2.094-6.004H24zm-5.344-.066a5.76 5.76 0 0 1-1.55.207c-1.23 0-1.84-.693-1.84-2.087V9.646h-1.063V8.532h1.121V7.081l1.476-.602v2.062h1.707v1.113H13.38v5.805c0 .446.074.75.214.932.14.182.396.264.75.264.207 0 .495-.041.883-.115zm-7.29-5.343c.017 1.764 1.55 2.358 1.567 2.366-.017.042-.248.842-.808 1.658-.487.71-.99 1.418-1.79 1.435-.783.016-1.03-.462-1.93-.462-.89 0-1.17.445-1.913.478-.758.025-1.344-.775-1.838-1.484-.998-1.451-1.765-4.098-.734-5.88.51-.89 1.426-1.451 2.416-1.46.75-.016 1.468.512 1.93.512.461 0 1.327-.627 2.234-.536.38.016 1.452.157 2.136 1.154-.058.033-1.278.743-1.27 2.219M6.468 7.988c.404-.495.685-1.18.61-1.864-.585.025-1.294.388-1.723.883-.38.437-.71 1.138-.619 1.806.652.05 1.328-.338 1.732-.825Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/appsignal.svg b/assets/lib/simple-icons/icons/appsignal.svg
index b3c0f462..0da260ae 100644
--- a/assets/lib/simple-icons/icons/appsignal.svg
+++ b/assets/lib/simple-icons/icons/appsignal.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>AppSignal icon</title><path d="M21.005 7.326c-1.781 0-3.055 1.57-4.368 3.318-.815-3.714-1.72-7.424-4.601-7.424s-3.789 3.71-4.617 7.427c-1.31-1.752-2.584-3.32-4.365-3.32-1.134 0-3.052.769-3.052 3.657v5.24c0 2.832 1.512 3.527 2.42 3.766 1.565.406 5.334.786 9.578.786s8.013-.38 9.579-.786c.907-.24 2.423-.934 2.423-3.766v-5.24c0-2.888-1.92-3.658-3.052-3.658m-8.914-2.469c1.726 0 2.384 3.406 3.3 7.493-1.004 1.238-2.072 2.236-3.3 2.236s-2.292-.998-3.3-2.236c.857-3.822 1.519-7.493 3.3-7.493M1.666 16.24V11c0-1.823.981-2.02 1.414-2.02 1.257 0 2.62 2.096 3.893 3.78-.91 3.818-1.873 6.143-4.145 5.664-.593-.16-1.15-.537-1.15-2.167m4.46 2.655c1.006-1.093 1.638-2.8 2.139-4.607 1.05 1.103 2.266 1.935 3.772 1.935s2.718-.832 3.773-1.935c.488 1.807 1.13 3.514 2.135 4.607a67.507 67.507 0 01-11.806 0m16.282-2.655c0 1.637-.556 2.007-1.15 2.167-2.275.482-3.235-1.846-4.145-5.665 1.287-1.683 2.62-3.779 3.894-3.779.425 0 1.414.197 1.414 2.02z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>AppSignal</title><path d="M21.003 7.328c-1.781 0-3.055 1.57-4.368 3.318-.815-3.714-1.72-7.424-4.601-7.424-2.881 0-3.789 3.71-4.617 7.427-1.31-1.752-2.584-3.32-4.365-3.32C1.918 7.329 0 8.098 0 10.986v5.24c0 2.832 1.512 3.527 2.42 3.766 1.565.406 5.334.786 9.578.786s8.013-.38 9.579-.786c.907-.24 2.423-.934 2.423-3.766v-5.24c0-2.888-1.92-3.658-3.052-3.658m-8.914-2.469c1.726 0 2.384 3.406 3.3 7.493-1.004 1.238-2.072 2.236-3.3 2.236-1.228 0-2.292-.998-3.3-2.236.857-3.822 1.519-7.493 3.3-7.493M1.664 16.242v-5.24c0-1.823.981-2.02 1.414-2.02 1.257 0 2.62 2.096 3.893 3.78-.91 3.818-1.873 6.143-4.145 5.664-.593-.16-1.15-.537-1.15-2.167m4.46 2.655c1.006-1.093 1.638-2.8 2.139-4.607 1.05 1.103 2.266 1.935 3.772 1.935 1.506 0 2.718-.832 3.773-1.935.488 1.807 1.13 3.514 2.135 4.607a67.507 67.507 0 0 1-11.806 0m16.282-2.655c0 1.637-.556 2.007-1.15 2.167-2.275.482-3.235-1.846-4.145-5.665 1.287-1.683 2.62-3.779 3.894-3.779.425 0 1.414.197 1.414 2.02z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/appstore.svg b/assets/lib/simple-icons/icons/appstore.svg
index 06290752..d70f33dd 100644
--- a/assets/lib/simple-icons/icons/appstore.svg
+++ b/assets/lib/simple-icons/icons/appstore.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>App Store icon</title><path d="M8.8086 14.9194l6.1107-11.0368c.0837-.1513.1682-.302.2437-.4584.0685-.142.1267-.2854.1646-.4403.0803-.3259.0588-.6656-.066-.9767-.1238-.3095-.3417-.5678-.6201-.7355a1.4175 1.4175 0 0 0-.921-.1924c-.3207.043-.6135.1935-.8443.4288-.1094.1118-.1996.2361-.2832.369-.092.1463-.175.2979-.259.4492l-.3864.6979-.3865-.6979c-.0837-.1515-.1667-.303-.2587-.4492-.0837-.1329-.1739-.2572-.2835-.369-.2305-.2353-.5233-.3857-.844-.429a1.4181 1.4181 0 0 0-.921.1926c-.2784.1677-.4964.426-.6203.7355-.1246.311-.1461.6508-.066.9767.038.155.0962.2984.1648.4403.0753.1564.1598.307.2437.4584l1.248 2.2543-4.8625 8.7825H2.0295c-.1676 0-.3351-.0007-.5026.0092-.1522.009-.3004.0284-.448.0714-.3108.0906-.5822.2798-.7783.548-.195.2665-.3006.5929-.3006.9279 0 .3352.1057.6612.3006.9277.196.2683.4675.4575.7782.548.1477.043.296.0623.4481.0715.1675.01.335.009.5026.009h13.0974c.0171-.0357.059-.1294.1-.2697.415-1.4151-.6156-2.843-2.0347-2.843zM3.113 18.5418l-.7922 1.5008c-.0818.1553-.1644.31-.2384.4705-.067.1458-.124.293-.1611.452-.0785.3346-.0576.6834.0645 1.0029.1212.3175.3346.583.607.7549.2727.172.5891.2416.9013.1975.3139-.044.6005-.1986.8263-.4402.1072-.1148.1954-.2424.2772-.3787.0902-.1503.1714-.3059.2535-.4612L6 19.4636c-.0896-.149-.9473-1.4704-2.887-.9218m20.5861-3.0056a1.4707 1.4707 0 0 0-.779-.5407c-.1476-.0425-.2961-.0616-.4483-.0705-.1678-.0099-.3352-.0091-.503-.0091H18.648l-4.3891-7.817c-.6655.7005-.9632 1.485-1.0773 2.1976-.1655 1.0333.0367 2.0934.546 3.0004l5.2741 9.3933c.084.1494.167.299.2591.4435.0837.131.1739.2537.2836.364.231.2323.5238.3809.8449.4232.3192.0424.643-.0244.9217-.1899.2784-.1653.4968-.4204.621-.7257.1246-.3072.146-.6425.0658-.9641-.0381-.1529-.0962-.2945-.165-.4346-.0753-.1543-.1598-.303-.2438-.4524l-1.216-2.1662h1.596c.1677 0 .3351.0009.5029-.009.1522-.009.3007-.028.4483-.0705a1.4707 1.4707 0 0 0 .779-.5407A1.5386 1.5386 0 0 0 24 16.452a1.539 1.539 0 0 0-.3009-.9158Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>App Store</title><path d="M8.8086 14.9194l6.1107-11.0368c.0837-.1513.1682-.302.2437-.4584.0685-.142.1267-.2854.1646-.4403.0803-.3259.0588-.6656-.066-.9767-.1238-.3095-.3417-.5678-.6201-.7355a1.4175 1.4175 0 0 0-.921-.1924c-.3207.043-.6135.1935-.8443.4288-.1094.1118-.1996.2361-.2832.369-.092.1463-.175.2979-.259.4492l-.3864.6979-.3865-.6979c-.0837-.1515-.1667-.303-.2587-.4492-.0837-.1329-.1739-.2572-.2835-.369-.2305-.2353-.5233-.3857-.844-.429a1.4181 1.4181 0 0 0-.921.1926c-.2784.1677-.4964.426-.6203.7355-.1246.311-.1461.6508-.066.9767.038.155.0962.2984.1648.4403.0753.1564.1598.307.2437.4584l1.248 2.2543-4.8625 8.7825H2.0295c-.1676 0-.3351-.0007-.5026.0092-.1522.009-.3004.0284-.448.0714-.3108.0906-.5822.2798-.7783.548-.195.2665-.3006.5929-.3006.9279 0 .3352.1057.6612.3006.9277.196.2683.4675.4575.7782.548.1477.043.296.0623.4481.0715.1675.01.335.009.5026.009h13.0974c.0171-.0357.059-.1294.1-.2697.415-1.4151-.6156-2.843-2.0347-2.843zM3.113 18.5418l-.7922 1.5008c-.0818.1553-.1644.31-.2384.4705-.067.1458-.124.293-.1611.452-.0785.3346-.0576.6834.0645 1.0029.1212.3175.3346.583.607.7549.2727.172.5891.2416.9013.1975.3139-.044.6005-.1986.8263-.4402.1072-.1148.1954-.2424.2772-.3787.0902-.1503.1714-.3059.2535-.4612L6 19.4636c-.0896-.149-.9473-1.4704-2.887-.9218m20.5861-3.0056a1.4707 1.4707 0 0 0-.779-.5407c-.1476-.0425-.2961-.0616-.4483-.0705-.1678-.0099-.3352-.0091-.503-.0091H18.648l-4.3891-7.817c-.6655.7005-.9632 1.485-1.0773 2.1976-.1655 1.0333.0367 2.0934.546 3.0004l5.2741 9.3933c.084.1494.167.299.2591.4435.0837.131.1739.2537.2836.364.231.2323.5238.3809.8449.4232.3192.0424.643-.0244.9217-.1899.2784-.1653.4968-.4204.621-.7257.1246-.3072.146-.6425.0658-.9641-.0381-.1529-.0962-.2945-.165-.4346-.0753-.1543-.1598-.303-.2438-.4524l-1.216-2.1662h1.596c.1677 0 .3351.0009.5029-.009.1522-.009.3007-.028.4483-.0705a1.4707 1.4707 0 0 0 .779-.5407A1.5386 1.5386 0 0 0 24 16.452a1.539 1.539 0 0 0-.3009-.9158Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/appveyor.svg b/assets/lib/simple-icons/icons/appveyor.svg
index f8acfe34..1bbf8cdb 100644
--- a/assets/lib/simple-icons/icons/appveyor.svg
+++ b/assets/lib/simple-icons/icons/appveyor.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>AppVeyor icon</title><path d="M 12,0 C 18.6,0 24,5.4 24,12 24,18.6 18.6,24 12,24 5.4,24 0,18.6 0,12 0,5.4 5.4,0 12,0 Z m 2.94,14.34 C 16.26,12.66 16.08,10.26 14.4,9 12.78,7.74 10.38,8.04 9,9.72 7.68,11.4 7.86,13.8 9.54,15.06 c 1.68,1.26 4.08,0.96 5.4,-0.72 z m -6.42,7.8 c 0.72,0.3 2.28,0.6 3.06,0.6 l 5.22,-7.56 c 1.68,-2.52 1.26,-5.94 -1.08,-7.8 -2.1,-1.68 -5.04,-1.62 -7.14,0 l -7.26,5.58 c 0.18,1.92 0.72,2.88 0.72,2.94 l 4.14,-4.5 c -0.3,1.98 0.42,4.02 2.1,5.28 1.44,1.14 3.18,1.44 4.86,1.08 z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>AppVeyor</title><path d="M 12,0 C 18.6,0 24,5.4 24,12 24,18.6 18.6,24 12,24 5.4,24 0,18.6 0,12 0,5.4 5.4,0 12,0 Z m 2.94,14.34 C 16.26,12.66 16.08,10.26 14.4,9 12.78,7.74 10.38,8.04 9,9.72 7.68,11.4 7.86,13.8 9.54,15.06 c 1.68,1.26 4.08,0.96 5.4,-0.72 z m -6.42,7.8 c 0.72,0.3 2.28,0.6 3.06,0.6 l 5.22,-7.56 c 1.68,-2.52 1.26,-5.94 -1.08,-7.8 -2.1,-1.68 -5.04,-1.62 -7.14,0 l -7.26,5.58 c 0.18,1.92 0.72,2.88 0.72,2.94 l 4.14,-4.5 c -0.3,1.98 0.42,4.02 2.1,5.28 1.44,1.14 3.18,1.44 4.86,1.08 z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/appwrite.svg b/assets/lib/simple-icons/icons/appwrite.svg
new file mode 100644
index 00000000..350d784f
--- /dev/null
+++ b/assets/lib/simple-icons/icons/appwrite.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Appwrite</title><path d="M7.834 4C4.094 4.09.584 6.816.06 11.014a7.993 7.994 0 0 0 3.122 7.368c2.757 2.08 6.198 2.047 8.82.538a7.993 7.994 0 1 0-.005-13.834A7.84 7.84 0 0 0 7.831 4zm.122 1.485a6.525 6.526 0 0 1 6.484 5.537c0 .007.002.013.003.02.02.143.037.287.048.433l.006.054c.01.15.016.303.017.456 0 .084-.005.168-.008.252-.002.058-.003.117-.007.175a6.68 6.68 0 0 1-.03.335l-.01.08c-.015.12-.033.24-.055.358l-.01.048c-.022.124-.05.248-.08.37l-.006.025a6.578 6.58 0 0 1-.41 1.15c-.007.016-.017.033-.024.05a6.538 6.54 0 0 1-1.62 2.115l-.054.046c-.08.067-.162.13-.245.194-.055.042-.11.084-.168.125-.04.03-.08.056-.122.084a6.68 6.68 0 0 1-1.123.612 6.517 6.518 0 0 1-6.468-.8C.069 14.184.838 7.96 5.457 6.004a6.512 6.513 0 0 1 2.499-.518zm.61 3.72c-.183 0-.343.013-.352.032-.01.024-.132.504-.264 1.074-.136.57-.353 1.468-.475 2-.235.974-.377 1.613-.377 1.698 0 .023.146.042.325.042h.325l.146-.65.423-1.796c.15-.635.334-1.408.405-1.72.07-.31.14-.591.155-.624.014-.043-.066-.057-.31-.057zm-2.441 1.6-.438.47-.433.47.127.15c.07.086.264.298.428.472l.302.32h.856l-.405-.438c-.221-.235-.405-.46-.405-.49 0-.032.17-.243.377-.47.207-.23.376-.428.376-.45 0-.02-.178-.034-.395-.034zm3.27 0c-.231 0-.415.014-.415.028s.08.103.18.202c.366.367.624.678.61.74-.009.032-.188.253-.405.484l-.39.428h.437l.438-.005.4-.438c.22-.244.4-.46.4-.49 0-.023-.188-.244-.424-.493l-.423-.457z"/></svg>
diff --git a/assets/lib/simple-icons/icons/aqua.svg b/assets/lib/simple-icons/icons/aqua.svg
new file mode 100644
index 00000000..8207737e
--- /dev/null
+++ b/assets/lib/simple-icons/icons/aqua.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Aqua</title><path d="M17.7875 18.6811c.7687 0 .7695.7105.7695.7517.0003.2888-.1047.4303-.2229.5535l-3.6066 3.6127c-.2547.2557-.5963.4006-.9567.401H.879c-.1444.0002-.2889-.0409-.4238-.1226-.2628-.1525-.46-.4826-.4551-.8042v-4.3921h17.7874zM23.0632.0001c.3202-.0053.6491.1893.8014.4518.0814.1348.1354.279.1354.4234V13.757c0 .3601-.1402.7054-.3946.9602l-3.5466 3.5524c-.137.1371-.274.2744-.6027.2744-.0411 0-.8225 0-.8225-.7681V.0001h4.4296zM4.5539 5.482s.824 0 .824.7699v12.0934H.0001v-8.0648c0-.361.1397-.7072.3945-.9625L3.95 5.757c.1372-.1376.2744-.275.6039-.275zM18.2983.0002v5.377H6.255c-.7669 0-.7669-.8233-.7669-.8233 0-.3292.137-.4663.2739-.6035L9.3087.398a1.3545 1.3545 0 01.9585-.3977h8.0311z"/></svg>
diff --git a/assets/lib/simple-icons/icons/aral.svg b/assets/lib/simple-icons/icons/aral.svg
index 9b8c400a..7673f660 100644
--- a/assets/lib/simple-icons/icons/aral.svg
+++ b/assets/lib/simple-icons/icons/aral.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ARAL icon</title><path d="M5.393 10.02l-.48 1.959.99.001-.51-1.96zm3.892.082v1.187c.549-.002.958.03 1.229-.033.27-.062.404-.217.404-.592 0-.334-.12-.469-.385-.523-.264-.055-.672-.028-1.248-.04zm5.326-.079l-.48 1.96h.99l-.51-1.96zM11.996 0L0 11.998 12.004 24 24 12.004 11.996 0zM5.393 8.896c.366 0 .606.117.775.295.169.18.267.421.35.67l1.07 3.211s.134.276.144.567c.01.29-.104.599-.6.666-.355-.054-.536-.156-.657-.35-.122-.194-.184-.482-.305-.91H4.645c-.147.468-.195.757-.295.941-.1.184-.254.263-.616.317-.508-.054-.636-.369-.636-.67 0-.301.129-.588.129-.588l1.015-3.152c.08-.246.176-.495.348-.682.172-.187.42-.315.803-.315zm9.191.002c.366 0 .607.117.775.295.17.18.267.421.35.67l1.072 3.211s.135.276.145.567c.01.29-.104.599-.6.666-.356-.054-.536-.156-.658-.35-.122-.194-.186-.482-.307-.91h-1.525c-.147.468-.193.757-.293.941-.1.184-.256.263-.617.317-.509-.054-.635-.367-.635-.668 0-.301.127-.59.127-.59l1.016-3.152c.075-.233.17-.484.343-.674.174-.19.424-.323.807-.323zm3.346.002c.308 0 .483.114.58.291.097.178.117.418.117.672v3.207c.215.005 1.23 0 1.23 0 .29 0 .53.02.694.106.164.086.252.239.244.504-.01.361-.18.517-.406.582-.226.065-.509.039-.744.039h-1.766c-.375 0-.536-.165-.604-.436-.067-.27-.04-.645-.04-1.062v-2.94c-.014-.254.02-.496.126-.674.107-.177.288-.289.569-.289zm-8.645.104h1.098c.254 0 .51-.002.767.084.259.086.52.26.786.613.28.378.35.933.222 1.414-.128.481-.456.889-.972.969.187.348.804 1.283.804 1.283s.066.11.078.266c.012.155-.03.357-.25.539-.388.147-.633.106-.78.03-.149-.078-.2-.192-.2-.192s-.562-.964-.91-1.633h-.643v1.338s.01.154-.064.305c-.075.15-.236.298-.578.285-.327 0-.488-.155-.567-.309C7.997 13.842 8 13.69 8 13.69V9.861c0-.334.006-.549.17-.68.164-.13.486-.177 1.115-.177z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ARAL</title><path d="M5.393 10.02l-.48 1.959.99.001-.51-1.96zm3.892.082v1.187c.549-.002.958.03 1.229-.033.27-.062.404-.217.404-.592 0-.334-.12-.469-.385-.523-.264-.055-.672-.028-1.248-.04zm5.326-.079l-.48 1.96h.99l-.51-1.96zM11.996 0L0 11.998 12.004 24 24 12.004 11.996 0zM5.393 8.896c.366 0 .606.117.775.295.169.18.267.421.35.67l1.07 3.211s.134.276.144.567c.01.29-.104.599-.6.666-.355-.054-.536-.156-.657-.35-.122-.194-.184-.482-.305-.91H4.645c-.147.468-.195.757-.295.941-.1.184-.254.263-.616.317-.508-.054-.636-.369-.636-.67 0-.301.129-.588.129-.588l1.015-3.152c.08-.246.176-.495.348-.682.172-.187.42-.315.803-.315zm9.191.002c.366 0 .607.117.775.295.17.18.267.421.35.67l1.072 3.211s.135.276.145.567c.01.29-.104.599-.6.666-.356-.054-.536-.156-.658-.35-.122-.194-.186-.482-.307-.91h-1.525c-.147.468-.193.757-.293.941-.1.184-.256.263-.617.317-.509-.054-.635-.367-.635-.668 0-.301.127-.59.127-.59l1.016-3.152c.075-.233.17-.484.343-.674.174-.19.424-.323.807-.323zm3.346.002c.308 0 .483.114.58.291.097.178.117.418.117.672v3.207c.215.005 1.23 0 1.23 0 .29 0 .53.02.694.106.164.086.252.239.244.504-.01.361-.18.517-.406.582-.226.065-.509.039-.744.039h-1.766c-.375 0-.536-.165-.604-.436-.067-.27-.04-.645-.04-1.062v-2.94c-.014-.254.02-.496.126-.674.107-.177.288-.289.569-.289zm-8.645.104h1.098c.254 0 .51-.002.767.084.259.086.52.26.786.613.28.378.35.933.222 1.414-.128.481-.456.889-.972.969.187.348.804 1.283.804 1.283s.066.11.078.266c.012.155-.03.357-.25.539-.388.147-.633.106-.78.03-.149-.078-.2-.192-.2-.192s-.562-.964-.91-1.633h-.643v1.338s.01.154-.064.305c-.075.15-.236.298-.578.285-.327 0-.488-.155-.567-.309C7.997 13.842 8 13.69 8 13.69V9.861c0-.334.006-.549.17-.68.164-.13.486-.177 1.115-.177z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/arangodb.svg b/assets/lib/simple-icons/icons/arangodb.svg
new file mode 100644
index 00000000..9c8de9ae
--- /dev/null
+++ b/assets/lib/simple-icons/icons/arangodb.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ArangoDB</title><path d="M13.885 3.75c-.32.007-.536.032-.61.041-.878.106-2.81.49-4.466 2.088-.921.89-1.501 2.153-1.783 2.826.251-.072.502-.13.75-.164.94-.131 1.8-.013 2.431.219.89-.158 1.474-.228 1.782-.227.953.004 2.003-.008 2.775.65.208.178.82.542.725 1.515-.084.867-.474 1.933-1.428 2.982-.574.632-1.686 1.444-3.059 2.15-.995.511-2.412 1.313-4.469 1.426-.331.019-.708.041-1.105.04-1.012-.004-2.48-.138-3.545-1.249-.221-.231-1.31-1.458-1.002-2.93.248-1.185 1.229-1.798 2.016-2.292.447-.281 1.05-.512 1.861-.754.585-.63 1.274-1.017 1.975-1.262-1.394.312-2.784.652-3.788 1.15-1.15.557-2.236 1.082-2.707 2.237-.287.707-.263 1.42-.191 1.892 0 0 .31 3.096 2.441 4.674 1.784 1.323 4.413 1.812 6.374 1.276 1.543-.294 3.015-1.738 4.24-3.004l.006.004c.392.186 1.295.584 2.027.963 1.692.873 2.864 1.054 3.47 1.16 1.317.23 3.368-.292 4.341-1.383.932-1.045 1.203-2.454.98-3.711-.067-.386-.066-1.073-.349-2.016-.222-.737-.333-1.104-.494-1.496-.31-.758-.705-1.373-1.295-2.137-1.382-1.784-2.072-2.679-3.2-3.39-1.834-1.16-3.74-1.297-4.703-1.278zm.713 1.135c.814.033 2.014.046 3.051.725.603.397 1.182.68 2.338 2.21 1.56 2.069 1.711 2.301 2.293 3.405.443.84.822 2.55.65 3.885-.05.387-.09 1.209-.95 2.021-1.157 1.093-3.13.97-3.337.946-.629-.077-1.113-.371-2.582-.934l-1.816-.744c-.121-.048-.245-.115-.37-.18.417-.499 1.182-1.488 1.497-2.111.231-.466.385-.985.488-1.37.078-.308.195-.765.244-1.204.025-.229.045-.463.049-.663.004-.207-.001-.244-.01-.402a4.156 4.156 0 0 0-.201-.926 2.408 2.408 0 0 0-.457-.748 2.623 2.623 0 0 0-.51-.367c-.208-.113-.474-.216-.646-.283-.32-.125-.585-.196-1.067-.256a5.006 5.006 0 0 0-.451-.016c-.547.005-1.274.08-2.338.237-.68.095-1.357.208-2.024.334l.002-.006c.69-1.402 1.67-2.392 3.35-2.983 1.075-.377 2.198-.595 2.797-.57zm.272 2.566a2.08 2.08 0 0 0-.721.112c.378.093.743.284 1.064.426.255.138.49.313.633.462.249.261.46.616.569.93.099.29.206.71.226 1.06.009.15.016.22.012.438a8.02 8.02 0 0 1-.053.711c-.054.488-.178.965-.256 1.272a7.829 7.829 0 0 1-.383 1.144c.239.004.47-.002.602-.025.937-.164 1.561-1.126 1.752-1.904.268-1.102-.285-2.02-.654-2.633-.349-.577-.963-1.384-2.073-1.834a2.09 2.09 0 0 0-.718-.159zM7.844 9.035a4.64 4.64 0 0 0-1.511.457c-.53.254-.99.648-1.573 1.335-.65.815-1.112 2.387-.76 2.81.18.218.275.24.34.283.901.436 1.724 1.035 3.068 1.114h1.118c.234.002.545-.05.632-.059 1.547-.254 3.605-1.349 3.526-2.88-.03-.573-.683-1.512-1.127-1.935-.431-.41-1.147-.788-1.454-.917-.266-.131-.576-.167-.888-.213-.47-.078-.972-.048-1.371.005z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/archicad.svg b/assets/lib/simple-icons/icons/archicad.svg
index aa469a5c..17f839c9 100644
--- a/assets/lib/simple-icons/icons/archicad.svg
+++ b/assets/lib/simple-icons/icons/archicad.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ARCHICAD icon</title><path d="M11.553.005a25.99 25.99 0 0 0-1.171 1.368l-.013.013a45.296 45.296 0 0 0-2.827 3.989c-.201.31-.376.59-.52.83A64.25 64.25 0 0 0 5.21 9.373c-.253.467-.48.9-.634 1.219-1.274 2.535-3.45 7.252-4.574 9.709v2.845c1.56-4.153 4.289-10.754 4.723-11.598.607-1.175 3.622-7.956 6.676-9.293l.083-.034c2.193-.848 3.381 3.15 3.381 3.15s.87 2.027 1.897 6.702c.548 2.494 1.227 5.494 2.172 11.927H24V.005H11.553zM.15 24c1.462-3.979 4.503-11.359 4.962-12.251.068-.13.162-.324.28-.568.489-1.002 1.398-2.867 2.521-4.63 1.344-2.108 2.575-3.418 3.66-3.894l.073-.031c.15-.057.298-.087.44-.087.72 0 1.312.763 1.68 1.402.27.468.463.942.573 1.242-.415.244-.99.625-1.608 1.17-1.025.904-1.684 1.784-2.55 3.424-1.04 1.969-1.577 3.578-2.137 5.31a53.474 53.474 0 0 0-1.655 6.597c-.178.95-.3 1.748-.382 2.316H.15z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Archicad</title><path d="M22.5896 16.3222c-.779 0-1.4104-.6315-1.4104-1.4105 0-.779.6314-1.4104 1.4104-1.4104S24 14.1328 24 14.9117c0 .779-.6315 1.4105-1.4104 1.4105zM.1507 19.8272c-.35.6959-.0696 1.5438.6263 1.8938.6959.35 1.5438.0695 1.8938-.6263 0 0 7.8494-16.0114 14.2545-16.1487 4.2299-.0907 4.2313 5.642 4.2313 5.642 0 .779.6314 1.4104 1.4104 1.4104s1.4104-.6314 1.4104-1.4104c0 0 .0566-8.3813-7.0196-8.4569C8.7634 1.8711.1507 19.8272.1507 19.8272z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/archiveofourown.svg b/assets/lib/simple-icons/icons/archiveofourown.svg
index 768e5ca0..0b1e2e47 100644
--- a/assets/lib/simple-icons/icons/archiveofourown.svg
+++ b/assets/lib/simple-icons/icons/archiveofourown.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Archive of Our Own icon</title><path d="M18.417 9.883c-.687 1.116-1.823 1.722-2.99 1.855-4.227.484-6.047-4.149-3.469-6.728 2.31-2.31 7.082-.9 7.005 2.899-.011.611-.166 1.357-.546 1.974zm-6.459-2.029c.142 3.596 4.764 3.682 5.687 1.054.815-2.324-1.12-4.199-3.19-3.897-1.523.221-2.553 1.411-2.497 2.843zM23.123 6.003c.284-.131.697-.412.837-.246.211.251-.459.475-.748.664-.918.6-1.731 1.227-2.477 2.049-.959 1.059-1.944 2.376-2.55 3.818.618.032 3.021.157 3.6 1.481.464 1.062-.387 2.156-1.32 2.627.663.414 1.81.945 1.745 1.898-.158 2.343-3.696 2.241-5.178.695-.244-.289-.358-.482-.25-.578.151-.134.326.186.676.476.225.187.377.251.572.354 1.301.683 3.339.403 3.478-.792.064-.554-.664-.955-1.217-1.204-.498-.224-1.514-.386-1.494-.952.02-.554.524-.45 1.03-.65.55-.217 1.004-.901 1.003-1.116-.005-.905-2.062-.888-3.221-.92-.275.606-.471 1.226-.692 2.158-.139.583-.151 1.897-.748 2.029-.737.164-1.014-.477-1.455-.991-.594-.69-1.436-1.637-1.942-2.223-3.033 1.002-5.392 2.091-8.256 3.712-1.311.742-2.063 1.59-2.545 1.354-.396-.194-.339-.633-.147-.887.393-.521.927-1.225 1.396-1.888.6-.849 1.054-1.667 1.373-2.445.692-1.688 1.23-4.72 1.475-5.859.088-.412.309-.348.322-.148.027.419-.237 2.047-.29 2.383-.436 2.781-.772 4.41-2.009 6.349 2.196-1.358 4.805-3.019 7.592-3.955C8.846 9.936 5.847 6.85 1.676 4.905 1.037 4.542 0 4.464 0 4.22c0-.271.781-.06 1.043.007 2.383.596 4.817 2.141 6.601 3.444 2.145 1.567 4.714 3.967 5.679 5.081.657-.226 2.286-.457 3.696-.496.752-1.58 2.55-4.018 4.788-5.442.413-.263.842-.594 1.316-.811zm-8.594 8.071c.423.428.742.934 1.11 1.398.174-.59.405-1.216.643-1.758-.619.082-1.281.203-1.753.36z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Archive of Our Own</title><path d="M18.417 9.883c-.687 1.116-1.823 1.722-2.99 1.855-4.227.484-6.047-4.149-3.469-6.728 2.31-2.31 7.082-.9 7.005 2.899-.011.611-.166 1.357-.546 1.974zm-6.459-2.029c.142 3.596 4.764 3.682 5.687 1.054.815-2.324-1.12-4.199-3.19-3.897-1.523.221-2.553 1.411-2.497 2.843zM23.123 6.003c.284-.131.697-.412.837-.246.211.251-.459.475-.748.664-.918.6-1.731 1.227-2.477 2.049-.959 1.059-1.944 2.376-2.55 3.818.618.032 3.021.157 3.6 1.481.464 1.062-.387 2.156-1.32 2.627.663.414 1.81.945 1.745 1.898-.158 2.343-3.696 2.241-5.178.695-.244-.289-.358-.482-.25-.578.151-.134.326.186.676.476.225.187.377.251.572.354 1.301.683 3.339.403 3.478-.792.064-.554-.664-.955-1.217-1.204-.498-.224-1.514-.386-1.494-.952.02-.554.524-.45 1.03-.65.55-.217 1.004-.901 1.003-1.116-.005-.905-2.062-.888-3.221-.92-.275.606-.471 1.226-.692 2.158-.139.583-.151 1.897-.748 2.029-.737.164-1.014-.477-1.455-.991-.594-.69-1.436-1.637-1.942-2.223-3.033 1.002-5.392 2.091-8.256 3.712-1.311.742-2.063 1.59-2.545 1.354-.396-.194-.339-.633-.147-.887.393-.521.927-1.225 1.396-1.888.6-.849 1.054-1.667 1.373-2.445.692-1.688 1.23-4.72 1.475-5.859.088-.412.309-.348.322-.148.027.419-.237 2.047-.29 2.383-.436 2.781-.772 4.41-2.009 6.349 2.196-1.358 4.805-3.019 7.592-3.955C8.846 9.936 5.847 6.85 1.676 4.905 1.037 4.542 0 4.464 0 4.22c0-.271.781-.06 1.043.007 2.383.596 4.817 2.141 6.601 3.444 2.145 1.567 4.714 3.967 5.679 5.081.657-.226 2.286-.457 3.696-.496.752-1.58 2.55-4.018 4.788-5.442.413-.263.842-.594 1.316-.811zm-8.594 8.071c.423.428.742.934 1.11 1.398.174-.59.405-1.216.643-1.758-.619.082-1.281.203-1.753.36z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/archlinux.svg b/assets/lib/simple-icons/icons/archlinux.svg
index ca74a55b..ec9b3853 100644
--- a/assets/lib/simple-icons/icons/archlinux.svg
+++ b/assets/lib/simple-icons/icons/archlinux.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Arch Linux icon</title><path d="M11.390232.60509C10.375655 3.09168 9.764285 4.7185 8.63513 7.13162c.692712.734695 1.542857 1.589214 2.923032 2.553937-1.484256-.610496-2.49621-1.223615-3.25277-1.859475-1.444897 3.015743-3.710204 7.311953-8.30554 15.568513 3.612246-2.08513 6.411955-3.36997 9.020993-3.861516-.111954-.48105-.175802-1.003208-.17143-1.54723l.0035-.115453c.057725-2.314286 1.261224-4.09417 2.68688-3.972595 1.425656.119825 2.53382 2.095627 2.477843 4.409038-.010496.43557-.06035.85452-.146064 1.242857 2.58105.504665 5.351895 1.78688 8.914286 3.844024-.702333-1.29271-1.329447-2.4586-1.928572-3.569387-.943732-.731196-1.926822-1.6828-3.933236-2.71312 1.3793.3586 2.366764.77143 3.136443 1.23411C13.970407 7.010922 13.478862 5.503924 11.390232.60509zM22.897813 21.360193v-.623615h-.233528v-.083965h.561516v.083965h-.2344v.623615h-.093587M23.322886 21.360193v-.70758h.14169l.167056.501166c.015744.04723.027114.082215.03411.10583.007873-.025365.020118-.06385.038485-.113703l.168805-.493294h.126822v.70758h-.090962v-.593003l-.206414.593003h-.083965l-.204665-.602624v.602623h-.090962"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Arch Linux</title><path d="M11.39.605C10.376 3.092 9.764 4.72 8.635 7.132c.693.734 1.543 1.589 2.923 2.554-1.484-.61-2.496-1.224-3.252-1.86C6.86 10.842 4.596 15.138 0 23.395c3.612-2.085 6.412-3.37 9.021-3.862a6.61 6.61 0 01-.171-1.547l.003-.115c.058-2.315 1.261-4.095 2.687-3.973 1.426.12 2.534 2.096 2.478 4.409a6.52 6.52 0 01-.146 1.243c2.58.505 5.352 1.787 8.914 3.844-.702-1.293-1.33-2.459-1.929-3.57-.943-.73-1.926-1.682-3.933-2.713 1.38.359 2.367.772 3.137 1.234-6.09-11.334-6.582-12.84-8.67-17.74zM22.898 21.36v-.623h-.234v-.084h.562v.084h-.234v.623h.331v-.707h.142l.167.5.034.107a2.26 2.26 0 01.038-.114l.17-.493H24v.707h-.091v-.593l-.206.593h-.084l-.205-.602v.602h-.091"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ardour.svg b/assets/lib/simple-icons/icons/ardour.svg
index d6af113d..0cd3ec62 100644
--- a/assets/lib/simple-icons/icons/ardour.svg
+++ b/assets/lib/simple-icons/icons/ardour.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" ><title>Ardour icon</title><path d="M12 1.606L0 22.394c1.45 0 .832-.885 1.565-.93.703 0 .559.44 1.044.44.846 0 .273-2.82 1.043-2.82.665 0 .48 2.038 1.044 2.038.288 0 .521-.811.521-1.81v-.945c0-1.304.234-2.364.522-2.364.288 0 .522 1.066.522 2.005 0 1.178.233 2.43.522 2.43.288 0 .521-1.263.521-2.805v-.44c0-1.69.234-3.065.522-3.065.288 0 .522 1.369.522 2.967 0 1.661.233 3.098.522 3.098.288 0 .521-1.437.521-3.18 0-1.737.234-3.146.522-3.146.288 0 .522 1.424.522 3.277 0 1.786.233 3.147.522 3.147.288 0 .521-1.367.521-2.87 0-1.386.234-2.657.522-2.657.288 0 .522 1.271.522 2.837v.472c0 1.415.233 2.56.521 2.56.289 0 .522-1.152.522-2.299 0-.973.234-1.989.522-1.989.288 0 .522 1.01.522 2.25v.57c0 1.058.233 1.908.521 1.908.289 0 .522-.84.522-1.614 0-.589.234-1.304.522-1.304.288 0 .522.709.522 1.581v.538c0 .696.233 1.272.521 1.272.595 0 .45-1.728 1.044-1.728.288 0 .522.43.522.962v.456c0 .385.233.685.521.685.59 0 .462-.782 1.044-.782.76 0 .197 1.076 1.043 1.076.512 0 .426-.18 1.044-.18.563 0 .493.359 1.565.359z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Ardour</title><path d="M12 1.606L0 22.394c1.45 0 .832-.885 1.565-.93.703 0 .559.44 1.044.44.846 0 .273-2.82 1.043-2.82.665 0 .48 2.038 1.044 2.038.288 0 .521-.811.521-1.81v-.945c0-1.304.234-2.364.522-2.364.288 0 .522 1.066.522 2.005 0 1.178.233 2.43.522 2.43.288 0 .521-1.263.521-2.805v-.44c0-1.69.234-3.065.522-3.065.288 0 .522 1.369.522 2.967 0 1.661.233 3.098.522 3.098.288 0 .521-1.437.521-3.18 0-1.737.234-3.146.522-3.146.288 0 .522 1.424.522 3.277 0 1.786.233 3.147.522 3.147.288 0 .521-1.367.521-2.87 0-1.386.234-2.657.522-2.657.288 0 .522 1.271.522 2.837v.472c0 1.415.233 2.56.521 2.56.289 0 .522-1.152.522-2.299 0-.973.234-1.989.522-1.989.288 0 .522 1.01.522 2.25v.57c0 1.058.233 1.908.521 1.908.289 0 .522-.84.522-1.614 0-.589.234-1.304.522-1.304.288 0 .522.709.522 1.581v.538c0 .696.233 1.272.521 1.272.595 0 .45-1.728 1.044-1.728.288 0 .522.43.522.962v.456c0 .385.233.685.521.685.59 0 .462-.782 1.044-.782.76 0 .197 1.076 1.043 1.076.512 0 .426-.18 1.044-.18.563 0 .493.359 1.565.359z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/arduino.svg b/assets/lib/simple-icons/icons/arduino.svg
index f277633d..2d4d2ac4 100644
--- a/assets/lib/simple-icons/icons/arduino.svg
+++ b/assets/lib/simple-icons/icons/arduino.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Arduino icon</title><path d="M23.82 12a5.78 5.78 0 0 0-5.88-5.67c-.29 0-.6.02-.9.05-2.52.37-4.2 2.18-5.13 3.57-.95-1.39-2.64-3.2-5.14-3.57-.3-.03-.6-.05-.9-.05A5.78 5.78 0 0 0 0 12a5.78 5.78 0 0 0 5.87 5.67c.3 0 .6-.02.92-.06 2.52-.36 4.2-2.17 5.14-3.56.95 1.39 2.63 3.2 5.14 3.57.31.03.6.05.91.05A5.78 5.78 0 0 0 23.82 12zM6.48 15.6c-.2.04-.43.04-.63.04A3.77 3.77 0 0 1 2 11.98a3.78 3.78 0 0 1 3.86-3.66c.2 0 .42.02.63.04 2.37.35 3.82 2.67 4.31 3.62-.5.95-1.95 3.3-4.31 3.62zM13 12c.49-.93 1.94-3.27 4.31-3.62.2-.04.42-.04.62-.04A3.76 3.76 0 0 1 21.8 12a3.78 3.78 0 0 1-3.86 3.66c-.2 0-.42-.02-.62-.04-2.36-.35-3.82-2.69-4.31-3.62zm-8.79.59h3.54v-1.16H4.22v1.16zm14.13 0h1.19v-1.16h-1.2v-1.19H17.2v1.2H16v1.15h1.2v1.18h1.15V12.6zM24 7.06c0 .3-.22.51-.53.51a.51.51 0 0 1-.53-.5c0-.28.24-.52.53-.52.31 0 .53.22.53.51zm-.91 0c0 .22.16.4.4.4.22 0 .38-.18.38-.4s-.16-.4-.38-.4c-.24-.02-.4.16-.4.4zm.3.26h-.1V6.8l.2-.01c.09 0 .14.01.18.03.04.02.06.06.06.11 0 .06-.04.1-.11.11.05.02.07.06.09.13l.03.13h-.12c-.02-.02-.02-.07-.04-.13-.02-.05-.04-.07-.11-.07h-.05l-.02.22zm.02-.3h.06c.07 0 .1-.01.1-.07 0-.05-.03-.07-.1-.07h-.07v.14h.01z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Arduino</title><path d="M23.82 12a5.78 5.78 0 0 0-5.88-5.67c-.29 0-.6.02-.9.05-2.52.37-4.2 2.18-5.13 3.57-.95-1.39-2.64-3.2-5.14-3.57-.3-.03-.6-.05-.9-.05A5.78 5.78 0 0 0 0 12a5.78 5.78 0 0 0 5.87 5.67c.3 0 .6-.02.92-.06 2.52-.36 4.2-2.17 5.14-3.56.95 1.39 2.63 3.2 5.14 3.57.31.03.6.05.91.05A5.78 5.78 0 0 0 23.82 12zM6.48 15.6c-.2.04-.43.04-.63.04A3.77 3.77 0 0 1 2 11.98a3.78 3.78 0 0 1 3.86-3.66c.2 0 .42.02.63.04 2.37.35 3.82 2.67 4.31 3.62-.5.95-1.95 3.3-4.31 3.62zM13 12c.49-.93 1.94-3.27 4.31-3.62.2-.04.42-.04.62-.04A3.76 3.76 0 0 1 21.8 12a3.78 3.78 0 0 1-3.86 3.66c-.2 0-.42-.02-.62-.04-2.36-.35-3.82-2.69-4.31-3.62zm-8.79.59h3.54v-1.16H4.22v1.16zm14.13 0h1.19v-1.16h-1.2v-1.19H17.2v1.2H16v1.15h1.2v1.18h1.15V12.6zM24 7.06c0 .3-.22.51-.53.51a.51.51 0 0 1-.53-.5c0-.28.24-.52.53-.52.31 0 .53.22.53.51zm-.91 0c0 .22.16.4.4.4.22 0 .38-.18.38-.4s-.16-.4-.38-.4c-.24-.02-.4.16-.4.4zm.3.26h-.1V6.8l.2-.01c.09 0 .14.01.18.03.04.02.06.06.06.11 0 .06-.04.1-.11.11.05.02.07.06.09.13l.03.13h-.12c-.02-.02-.02-.07-.04-.13-.02-.05-.04-.07-.11-.07h-.05l-.02.22zm.02-.3h.06c.07 0 .1-.01.1-.07 0-.05-.03-.07-.1-.07h-.07v.14h.01z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/argos.svg b/assets/lib/simple-icons/icons/argos.svg
new file mode 100644
index 00000000..2c298a2d
--- /dev/null
+++ b/assets/lib/simple-icons/icons/argos.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Argos</title><path d="M0 1.738v20.524h24V1.738zm5.93 5.546c.178 0 .434 0 .638.026.23 0 .307.077.333.281.051.792.23 4.217.256 4.907 0 .18-.103.23-.23.23H6.21c-.179 0-.256-.102-.256-.23 0-.255-.026-.92-.026-.92H3.987c-.204.358-.434.767-.537.946-.076.153-.178.179-.306.179h-.818c-.18 0-.23-.128-.153-.281C3.272 10.428 4.677 8.255 5.29 7.54c.178-.23.383-.23.638-.256zM5.831 8.48a.095.095 0 0 0-.03.032c-.46.562-1.048 1.483-1.38 2.122h1.507S5.88 9.15 5.853 8.51c0 0 0-.043-.021-.032zm14.666.237c.614 0 1.125.28 1.355.664.102.154.076.255-.077.332a3.512 3.512 0 0 1-.434.205c-.128.025-.23.025-.333-.102-.434-.512-1.047-.333-1.073-.051-.026.255.256.357.639.46.588.178 1.252.485 1.048 1.277-.205.818-.997 1.227-1.917 1.227-.588 0-1.253-.178-1.508-.792-.051-.128-.026-.23.077-.28.153-.103.307-.18.46-.231.128-.026.23 0 .306.102.18.256.384.384.716.384.307 0 .639-.129.613-.41-.025-.255-.408-.357-.613-.409-.383-.102-1.176-.28-1.176-.92 0-.792.741-1.38 1.917-1.456zm-3.834.076c1.227 0 1.79.818 1.534 1.994-.23 1.176-1.15 1.993-2.377 1.993-1.227 0-1.789-.817-1.533-1.993.255-1.176 1.15-1.994 2.376-1.994zm-4.421.026c.562 0 .869.332.945.46 0 .025.026.025.026 0 .025-.077.051-.128.051-.153.026-.128.128-.23.307-.23h.51c.154 0 .282.102.231.306a96.306 96.306 0 0 1-.741 3.067c-.384 1.482-1.15 2.224-2.3 2.224-.46 0-1.227-.128-1.56-.664-.076-.103-.102-.205.077-.333.154-.102.332-.153.486-.205.153-.05.204-.05.357.052a.906.906 0 0 0 .563.179c.409 0 .946-.23 1.201-1.1.026-.05 0-.05-.025-.025-.18.23-.563.383-.997.383-.537-.025-.869-.204-1.074-.536-.23-.358-.204-.997-.025-1.56.28-.894.971-1.865 1.968-1.865zm-3.86.026h.614c.127 0 .179.101.153.204-.025.102-.051.179-.051.204 0 .026.025.026.025.026.46-.41 1.049-.409 1.688-.409.102 0 .153.102.076.179-.23.23-.358.409-.511.639-.102.153-.18.204-.358.204-.409.026-.613.102-.767.205-.153.102-.307.434-.383.818a48.306 48.306 0 0 1-.332 1.61.224.224 0 0 1-.23.179h-.742c-.102 0-.178-.077-.153-.18.128-.715.64-3.117.716-3.475.026-.154.128-.204.256-.204zm8.205.792c-.69 0-.971.562-1.15 1.15-.154.588-.23 1.15.46 1.15.69 0 .97-.562 1.15-1.15.179-.588.23-1.15-.46-1.15zm-4.217.025c-.512-.025-.87.384-1.1 1.15-.127.41-.153 1.023.384 1.1.537.025.895-.358 1.099-1.1.128-.485.256-1.124-.383-1.15zM2.338 13.958a.32.32 0 0 1 .09.023c3.68 1.508 6.058 2.07 9.406 2.07 3.348 0 5.725-.562 9.43-2.07.256-.102.41.153.155.306-1.457.92-4.805 2.812-9.585 2.812-4.78 0-8.153-1.892-9.56-2.812-.223-.134-.133-.346.064-.329z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/arkecosystem.svg b/assets/lib/simple-icons/icons/arkecosystem.svg
new file mode 100644
index 00000000..0e61050a
--- /dev/null
+++ b/assets/lib/simple-icons/icons/arkecosystem.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ARK Ecosystem</title><path d="M1.8 0C.806 0 0 .805 0 1.8v20.4c0 .995.805 1.8 1.8 1.8h20.4c.995 0 1.8-.805 1.8-1.8V1.8c0-.995-.805-1.8-1.8-1.8H1.8zm10.223 4.39l9.29 15.098-9.29-9.82-9.351 9.82 9.351-15.097zm0 7.583l1.633 1.691h-3.285l1.652-1.691zM9.31 14.762h5.41l1.496 1.574H7.813l1.496-1.574z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/arlo.svg b/assets/lib/simple-icons/icons/arlo.svg
new file mode 100644
index 00000000..ae2e066b
--- /dev/null
+++ b/assets/lib/simple-icons/icons/arlo.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Arlo</title><path d="m16.21 11.172 4.963-5.792c.943-1.293 1.494-1.828 1.07-3.94l-7.367 8.6a7.907 7.907 0 0 0-1.896 5.487L9.763 11.87a5.775 5.775 0 0 0-.947-.829A9.979 9.979 0 0 0 7 10.051c.213-.076.43-.14.649-.194.385-.094.78-.144 1.176-.147.444 0 .881.07 1.3.237.416.168.82.432 1.212.858l.216.252 1.336-1.129c-.01-.011-.241-.283-.251-.292a5.09 5.09 0 0 0-1.86-1.308 5.233 5.233 0 0 0-1.953-.364c-.151 0-.299.007-.446.017-1.461.24-2.364 1.104-3.714 1.244.001.006-4.58 0-4.581.002-.101 0-.115.144-.017.163 1.202.24 3.341.699 4.844 1.214 1.142.529 2.24 1.205 3.106 2.022.17.135.317.271.439.405l4.283 4.87c.61.501 1.395.755 3.066.767a6.197 6.197 0 0 1-.695-1.337 6.173 6.173 0 0 1-.014-4.256 6.139 6.139 0 0 1 1.114-1.903zM24 22.56c-1.734-.022-2.489-.317-3.11-.888l-.962-1.093c-.065-.079-.13-.157-.197-.234l.011.023-1.704-1.937a4.794 4.794 0 0 1-.905-4.806 4.755 4.755 0 0 1 .871-1.482l4.208-4.892c.43 2.179-.192 2.666-1.21 4.09l-1.668 1.937a3.038 3.038 0 0 0-.739 1.989c.001.741.272 1.458.761 2.014L24 22.56z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/arm.svg b/assets/lib/simple-icons/icons/arm.svg
new file mode 100644
index 00000000..3f276676
--- /dev/null
+++ b/assets/lib/simple-icons/icons/arm.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Arm</title><path d="M5.419 8.534h1.614v6.911H5.419v-.72c-.71.822-1.573.933-2.07.933C1.218 15.658 0 13.882 0 11.985c0-2.253 1.542-3.633 3.37-3.633.507 0 1.4.132 2.049.984zm-3.765 3.491c0 1.198.751 2.202 1.918 2.202 1.015 0 1.959-.74 1.959-2.181 0-1.512-.934-2.233-1.959-2.233-1.167-.01-1.918.974-1.918 2.212zm7.297-3.49h1.613v.618a3 3 0 0 1 .67-.578c.314-.183.619-.233.984-.233.396 0 .822.06 1.269.324l-.66 1.462a1.432 1.432 0 0 0-.822-.244c-.345 0-.69.05-1.005.376-.446.477-.446 1.136-.446 1.593v3.582H8.94zm5.56 0h1.614v.639c.538-.66 1.177-.822 1.705-.822.72 0 1.4.345 1.786 1.015.579-.822 1.441-1.015 2.05-1.015.842 0 1.573.396 1.969 1.086.132.233.365.74.365 1.745v4.272h-1.614V11.65c0-.771-.08-1.086-.152-1.228-.101-.264-.345-.609-.923-.609-.396 0-.741.213-.954.508-.284.395-.315.984-.315 1.572v3.562H18.43V11.65c0-.771-.081-1.086-.152-1.228-.102-.264-.345-.609-.924-.609-.396 0-.74.213-.954.508-.284.395-.314.984-.314 1.572v3.562h-1.573z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/artifacthub.svg b/assets/lib/simple-icons/icons/artifacthub.svg
new file mode 100644
index 00000000..12649c23
--- /dev/null
+++ b/assets/lib/simple-icons/icons/artifacthub.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Artifact Hub</title><path d="M11.9999 24.00044c-.617.0012-1.24209-.17217-1.78008-.50002l-7.50975-4.29263c-1.01763-.61684-1.64001-1.71772-1.64066-2.9077V7.72971c0-1.25305.63694-2.36948 1.76008-3.01013L10.25041.47895c1.08003-.63867 2.41512-.63767 3.49515.001l7.41975 4.23763c1.08007.59613 1.7714 1.7341 1.76266 3.01013v8.58195c0 .96773-.44338 2.16388-1.63666 2.89856l-7.51074 4.2922c-.56347.34395-1.19861.50002-1.78167.50002zm-.50002-21.34695L3.95513 6.96224c-.2006.1567-.37906.36914-.37902.76747l.001 8.67039c.03753.22045.11891.42808.37302.63459l7.55975 4.31663c.26601.172.66403.21.98504 0l7.51792-4.29663c.23173-.14844.37102-.38858.41002-.65359V7.72971c.0095-.29884-.13595-.5886-.37702-.76547L12.49993 2.6525c-.39058-.23932-.7592-.15575-1.00004.001z"/></svg>
diff --git a/assets/lib/simple-icons/icons/artixlinux.svg b/assets/lib/simple-icons/icons/artixlinux.svg
new file mode 100644
index 00000000..4b653ddf
--- /dev/null
+++ b/assets/lib/simple-icons/icons/artixlinux.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Artix Linux</title><path d="M12 0L7.873 8.462l11.358 6.363zM6.626 11.018L.295 24l18.788-7.762zm13.846 6.352l-5.926 3.402L23.706 24Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/artstation.svg b/assets/lib/simple-icons/icons/artstation.svg
index a1bebf9c..0d3ccee2 100644
--- a/assets/lib/simple-icons/icons/artstation.svg
+++ b/assets/lib/simple-icons/icons/artstation.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ArtStation icon</title><path d="M0 17.723l2.027 3.505h.001a2.424 2.424 0 0 0 2.164 1.333h13.457l-2.792-4.838H0zm24 .025c0-.484-.143-.935-.388-1.314L15.728 2.728a2.424 2.424 0 0 0-2.142-1.289H9.419L21.598 22.54l1.92-3.325c.378-.637.482-.919.482-1.467zm-11.129-3.462L7.428 4.858l-5.444 9.428h10.887z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ArtStation</title><path d="M0 17.723l2.027 3.505h.001a2.424 2.424 0 0 0 2.164 1.333h13.457l-2.792-4.838H0zm24 .025c0-.484-.143-.935-.388-1.314L15.728 2.728a2.424 2.424 0 0 0-2.142-1.289H9.419L21.598 22.54l1.92-3.325c.378-.637.482-.919.482-1.467zm-11.129-3.462L7.428 4.858l-5.444 9.428h10.887z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/arxiv.svg b/assets/lib/simple-icons/icons/arxiv.svg
index 45bdf4d7..4d09be69 100644
--- a/assets/lib/simple-icons/icons/arxiv.svg
+++ b/assets/lib/simple-icons/icons/arxiv.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>arXiv icon</title><path d="M20.7 15.404l-1.894-4.967h1.411l1.39 3.582 1.379-3.582h.96l-1.92 4.967zM16.298 9.6V8.48h1.34V9.6zm0 5.808v-4.971h1.34v4.967zm-6.965-.003l2.146-3.3L9.43 8.707h1.627l1.364 2.254L13.9 8.707h1.12l-2.046 3.156 2.126 3.537h-1.622l-1.45-2.4-1.557 2.4H9.333zm-3.346 0v-4.968h1.338v.937c.344-.7.875-1.051 1.585-1.051a1.401 1.401 0 01.248.026v1.194a1.6 1.6 0 00-.53-.102c-.537 0-.968.267-1.303.8v3.164zm-3.028-.536q-.664.65-1.437.65a1.473 1.473 0 01-1.06-.398 1.376 1.376 0 01-.406-1.03 1.45 1.45 0 01.659-1.271q.657-.447 1.884-.448h.355v-.453q0-.772-.88-.772a3.305 3.305 0 00-1.587.443v-.922a5.016 5.016 0 011.808-.345q1.953 0 1.951 1.55v2.206c0 .39.123.58.376.58a.8.8 0 00.174-.02l.032.751a2.745 2.745 0 01-.751.13c-.552 0-.902-.216-1.06-.65h-.054zm0-.72v-1.01h-.32c-.866 0-1.297.274-1.297.815a.64.64 0 00.64.648c.329.004.647-.15.977-.453z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>arXiv</title><path d="M16.318 8.465V9.59h1.344V8.465zm-6.9.228l2.059 3.412-2.155 3.311h1.14l1.563-2.41 1.46 2.41h1.628l-2.136-3.553 2.056-3.17h-1.125l-1.484 2.264-1.371-2.264zm-.096 6.723H9.32v.004zM2.25 10.314a5.039 5.039 0 00-1.814.348v.926a3.32 3.32 0 011.593-.445c.59 0 .883.258.883.775v.455h-.355c-.822.001-1.453.152-1.893.451a1.456 1.456 0 00-.663 1.278 1.382 1.382 0 00.408 1.033 1.48 1.48 0 001.065.398c.517 0 .998-.217 1.443-.652l.004.002h.053c.159.435.512.652 1.066.652a2.757 2.757 0 00.754-.129l-.031-.756a.803.803 0 01-.176.022c-.254 0-.377-.192-.377-.584v-2.215c.001-1.038-.653-1.559-1.961-1.559zm6.646 0c-.713 0-1.246.353-1.591 1.057v-.941H5.959v4.99h1.346v-3.178c.336-.535.768-.805 1.306-.805a1.607 1.607 0 01.534.104v-1.2a1.408 1.408 0 00-.249-.027zm7.422.116v4.994l1.344-.004v-4.99zm2.52 0l1.902 4.99h1.332L24 10.43h-.965l-1.385 3.6-1.396-3.6zM2.596 13.145h.322v1.013c-.331.305-.651.46-.982.455a.643.643 0 01-.643-.65c0-.543.433-.818 1.303-.818z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/asana.svg b/assets/lib/simple-icons/icons/asana.svg
index 012aacc9..eebccc8c 100644
--- a/assets/lib/simple-icons/icons/asana.svg
+++ b/assets/lib/simple-icons/icons/asana.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Asana icon</title><path d="M18.78 12.653c-2.882 0-5.22 2.336-5.22 5.22s2.338 5.22 5.22 5.22 5.22-2.34 5.22-5.22-2.336-5.22-5.22-5.22zm-13.56 0c-2.88 0-5.22 2.337-5.22 5.22s2.338 5.22 5.22 5.22 5.22-2.338 5.22-5.22-2.336-5.22-5.22-5.22zm12-6.525c0 2.883-2.337 5.22-5.22 5.22-2.882 0-5.22-2.337-5.22-5.22 0-2.88 2.338-5.22 5.22-5.22 2.883 0 5.22 2.34 5.22 5.22z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Asana</title><path d="M18.78 12.653c-2.882 0-5.22 2.336-5.22 5.22s2.338 5.22 5.22 5.22 5.22-2.34 5.22-5.22-2.336-5.22-5.22-5.22zm-13.56 0c-2.88 0-5.22 2.337-5.22 5.22s2.338 5.22 5.22 5.22 5.22-2.338 5.22-5.22-2.336-5.22-5.22-5.22zm12-6.525c0 2.883-2.337 5.22-5.22 5.22-2.882 0-5.22-2.337-5.22-5.22 0-2.88 2.338-5.22 5.22-5.22 2.883 0 5.22 2.34 5.22 5.22z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/asciidoctor.svg b/assets/lib/simple-icons/icons/asciidoctor.svg
index 63d8d4c2..67500292 100644
--- a/assets/lib/simple-icons/icons/asciidoctor.svg
+++ b/assets/lib/simple-icons/icons/asciidoctor.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Asciidoctor icon</title><path d="M18.07,0H5.93A5.94,5.94,0,0,0,0,5.93V18.07A5.94,5.94,0,0,0,5.93,24H18.07A5.94,5.94,0,0,0,24,18.07V5.93A5.94,5.94,0,0,0,18.07,0ZM10.71,15.4H8.81v0L7.2,19.28h0a.5.5,0,0,1-.66.27.51.51,0,0,1-.27-.67L7.72,15.4H4.85a.5.5,0,0,1-.5-.51.52.52,0,0,1,.52-.5h5.86a.5.5,0,0,1,.49.52A.49.49,0,0,1,10.71,15.4Zm7.92,4.17a.51.51,0,0,1-.66-.29l-5.35-13L10.23,12H11.8a.5.5,0,0,1,.49.52.49.49,0,0,1-.51.49H5.92a.5.5,0,0,1-.5-.51.52.52,0,0,1,.52-.5h3.2l3-7.27a.49.49,0,0,1,.45-.31.52.52,0,0,1,.48.31L18.91,18.9h0A.51.51,0,0,1,18.63,19.57Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Asciidoctor</title><path d="M18.0685 0H5.9318C2.6579 0 0 2.6578 0 5.9316v12.1367C0 21.3421 2.658 24 5.9318 24h12.1367C21.3423 24 24 21.3421 24 18.0683V5.9316C24 2.6578 21.3423 0 18.0685 0zM10.708 15.4038H8.8102c-.0018.0045-.0031.009-.005.0135L7.1986 19.282a.5058.5058 0 11-.934-.3883l1.4507-3.49H4.8677a.5058.5058 0 110-1.0113h5.8403a.5058.5058 0 110 1.0113zm7.9189 4.1647a.5058.5058 0 01-.6545-.2886L12.6206 6.2306l-2.395 5.761h1.551a.5058.5058 0 110 1.0113H5.9369a.5058.5058 0 110-1.0113h3.194c.0015-.0038.0026-.0075.0042-.0112l3.0223-7.2693a.5058.5058 0 01.457-.3112.5058.5058 0 01.4774.3137L18.908 18.896a.5058.5058 0 01-.2812.6725z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/asciinema.svg b/assets/lib/simple-icons/icons/asciinema.svg
index 3adc56b2..c426ef70 100644
--- a/assets/lib/simple-icons/icons/asciinema.svg
+++ b/assets/lib/simple-icons/icons/asciinema.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>asciinema icon</title><path d="M1.61 0V24L22.39 12L1.61 0M5.76 7.2L10.06 9.68L5.76 12.16V7.2M12.55 11.12L14.08 12L5.76 16.8V15.04L12.55 11.12Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>asciinema</title><path d="M1.61 0V24L22.39 12L1.61 0M5.76 7.2L10.06 9.68L5.76 12.16V7.2M12.55 11.12L14.08 12L5.76 16.8V15.04L12.55 11.12Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/asda.svg b/assets/lib/simple-icons/icons/asda.svg
new file mode 100644
index 00000000..0bdb51d6
--- /dev/null
+++ b/assets/lib/simple-icons/icons/asda.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ASDA</title><path d="M21.7596 8.673h-2.475l-1.4114 4.0851c.0632-.3392.0743-.6104.0743-.7283 0-1.7114-.9805-3.3568-3.2843-3.3568h-2.6458l.0078 4.0635c-.2287-1.1546-1.2835-1.4639-2.5952-1.8626-.4902-.151-.7594-.3908-.6612-.6143.0839-.1952.3845-.2564.7494-.206.5564.0796 1.0008.2657 1.4287.4986l.5847-1.449c-.1318-.065-1.0792-.6337-2.2665-.6337-1.6557 0-2.7131.8078-2.7131 1.9999 0 1.0622.6542 1.6798 1.8572 2.026 1.2938.3753 1.6218.5263 1.5828.8984-.0335.3207-.8354.7113-2.7974-.4958l-.5829 1.2062-1.7994-5.431H2.3382L0 15.4244h1.9502l.3777-1.09h2.2875l.3886 1.0902h2.0473l-.2322-.6603c.6921.4 1.5504.7662 2.5772.7662 1.5728 0 2.4231-.859 2.626-1.6823v1.5764h2.638c1.5727 0 2.3953-.7498 2.8251-1.5524l-.5396 1.5524h1.9487l.39-1.0901h2.323l.3425 1.09H24L21.7594 8.673Zm-18.996 4.1365.7272-2.3196.6889 2.3196Zm11.2193.874v-3.2703h.465c.663 0 1.3867.2684 1.3867 1.6352 0 1.2105-.6392 1.6351-1.381 1.6351zm5.773-.874.6936-2.292.7224 2.292z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/aseprite.svg b/assets/lib/simple-icons/icons/aseprite.svg
new file mode 100644
index 00000000..944dcbcf
--- /dev/null
+++ b/assets/lib/simple-icons/icons/aseprite.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Aseprite</title><path d="M4.006 0v1.6h15.988V0zm15.988 1.6v1.6h1.6V1.6zm1.6 1.6v14.4h-1.6v1.6H4.006v-1.6h-1.6V3.2H.809v17.6h1.599v1.6h1.599V24h15.988v-1.6h1.6v-1.6h1.598V3.2zm-19.187 0h1.599V1.6h-1.6zm4.796 3.2v6.4h1.6V6.4zm7.995 0v6.4h1.599V6.4z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/askfm.svg b/assets/lib/simple-icons/icons/askfm.svg
index bb44605e..feeef75d 100644
--- a/assets/lib/simple-icons/icons/askfm.svg
+++ b/assets/lib/simple-icons/icons/askfm.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ASKfm icon</title><path d="M12 24c-2.172 0-4.195-.547-6.07-1.64a12.003 12.003 0 01-4.29-4.29A11.842 11.842 0 010 12c0-2.172.547-4.195 1.64-6.07a12.003 12.003 0 014.29-4.29A11.842 11.842 0 0112 0c2.172 0 4.195.547 6.07 1.64a12.003 12.003 0 014.29 4.29A11.842 11.842 0 0124 12c0 2.172-.547 4.195-1.64 6.07a12.003 12.003 0 01-4.29 4.29A11.842 11.842 0 0112 24zm2.133-14.227c-.39.282-.664.688-.82 1.22-.157.53-.188 1.109-.094 1.734s.312 1.222.656 1.793c.344.57.754 1.027 1.23 1.37.477.344.961.54 1.454.587.492.046.933-.07 1.324-.352.39-.281.664-.688.82-1.219.156-.531.188-1.11.094-1.734a4.839 4.839 0 00-.656-1.793 4.564 4.564 0 00-1.23-1.371c-.477-.344-.962-.54-1.454-.586a1.887 1.887 0 00-1.324.351zm2.484 5.18c-.469.188-.937.152-1.406-.105-.469-.258-.813-.66-1.031-1.207a3.082 3.082 0 01-.164-.797h.023c.063 0 .14-.016.234-.047h-.023c.188-.063.316-.211.387-.445a.92.92 0 00-.012-.633.842.842 0 00-.164-.305v.024c.187-.235.406-.399.656-.493.469-.203.938-.175 1.406.082.47.258.809.668 1.02 1.23.21.563.227 1.106.047 1.63-.18.523-.504.879-.973 1.066zm-3.586.235a.825.825 0 00-.515-.106.768.768 0 00-.47.27l-.187.234a.348.348 0 00-.093.258c0 .062.015.125.046.187.391.735.711 1.242.961 1.524a.124.124 0 00.13.058.18.18 0 00.128-.082c.094-.234.219-.734.375-1.5l.047-.258v-.07a.38.38 0 00-.164-.328zm-4.804-4.641c-.47.062-.891.289-1.266.68-.375.39-.664.882-.867 1.476a5.391 5.391 0 00-.282 1.887c.016.664.149 1.262.399 1.793.25.531.574.93.973 1.195.398.266.832.367 1.3.305.47-.063.891-.285 1.266-.668.375-.383.664-.871.867-1.465a5.391 5.391 0 00.281-1.887c-.015-.664-.148-1.261-.398-1.793-.25-.53-.574-.933-.973-1.207a1.806 1.806 0 00-1.3-.316zm1.828 3.633c.03.593-.102 1.113-.399 1.558-.297.446-.68.692-1.148.739-.469.046-.883-.118-1.242-.493-.36-.375-.563-.851-.61-1.43v-.187c0-.219.024-.43.07-.633v.024a.822.822 0 00.235.023.703.703 0 00.469-.316.81.81 0 00.14-.598.725.725 0 00-.07-.328c.203-.156.445-.258.727-.305.468-.047.882.121 1.242.504s.554.864.586 1.442zM5.602 7.547a1.17 1.17 0 00-.329-.305c-.156-.094-.304-.125-.445-.094a.489.489 0 00-.328.258.961.961 0 00-.117.375l-.281 2.766.304-.516c.25-.39.516-.726.797-1.008.406-.406.797-.671 1.172-.796a1.54 1.54 0 01-.445-.329c-.12-.104-.227-.243-.328-.351zM17.25 5.016a.55.55 0 00-.48-.141c-.18.031-.34.164-.48.398-.08.157-.142.32-.188.493-.027.058-.032.125-.047.187l-.024.07c-.11.25-.21.43-.304.54.453.015.89.101 1.312.257a4.83 4.83 0 011.594.961l.21.211-1.265-2.578a.925.925 0 00-.328-.398Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ASKfm</title><path d="M12 24c-2.172 0-4.195-.547-6.07-1.64a12.003 12.003 0 01-4.29-4.29A11.842 11.842 0 010 12c0-2.172.547-4.195 1.64-6.07a12.003 12.003 0 014.29-4.29A11.842 11.842 0 0112 0c2.172 0 4.195.547 6.07 1.64a12.003 12.003 0 014.29 4.29A11.842 11.842 0 0124 12c0 2.172-.547 4.195-1.64 6.07a12.003 12.003 0 01-4.29 4.29A11.842 11.842 0 0112 24zm2.133-14.227c-.39.282-.664.688-.82 1.22-.157.53-.188 1.109-.094 1.734s.312 1.222.656 1.793c.344.57.754 1.027 1.23 1.37.477.344.961.54 1.454.587.492.046.933-.07 1.324-.352.39-.281.664-.688.82-1.219.156-.531.188-1.11.094-1.734a4.839 4.839 0 00-.656-1.793 4.564 4.564 0 00-1.23-1.371c-.477-.344-.962-.54-1.454-.586a1.887 1.887 0 00-1.324.351zm2.484 5.18c-.469.188-.937.152-1.406-.105-.469-.258-.813-.66-1.031-1.207a3.082 3.082 0 01-.164-.797h.023c.063 0 .14-.016.234-.047h-.023c.188-.063.316-.211.387-.445a.92.92 0 00-.012-.633.842.842 0 00-.164-.305v.024c.187-.235.406-.399.656-.493.469-.203.938-.175 1.406.082.47.258.809.668 1.02 1.23.21.563.227 1.106.047 1.63-.18.523-.504.879-.973 1.066zm-3.586.235a.825.825 0 00-.515-.106.768.768 0 00-.47.27l-.187.234a.348.348 0 00-.093.258c0 .062.015.125.046.187.391.735.711 1.242.961 1.524a.124.124 0 00.13.058.18.18 0 00.128-.082c.094-.234.219-.734.375-1.5l.047-.258v-.07a.38.38 0 00-.164-.328zm-4.804-4.641c-.47.062-.891.289-1.266.68-.375.39-.664.882-.867 1.476a5.391 5.391 0 00-.282 1.887c.016.664.149 1.262.399 1.793.25.531.574.93.973 1.195.398.266.832.367 1.3.305.47-.063.891-.285 1.266-.668.375-.383.664-.871.867-1.465a5.391 5.391 0 00.281-1.887c-.015-.664-.148-1.261-.398-1.793-.25-.53-.574-.933-.973-1.207a1.806 1.806 0 00-1.3-.316zm1.828 3.633c.03.593-.102 1.113-.399 1.558-.297.446-.68.692-1.148.739-.469.046-.883-.118-1.242-.493-.36-.375-.563-.851-.61-1.43v-.187c0-.219.024-.43.07-.633v.024a.822.822 0 00.235.023.703.703 0 00.469-.316.81.81 0 00.14-.598.725.725 0 00-.07-.328c.203-.156.445-.258.727-.305.468-.047.882.121 1.242.504s.554.864.586 1.442zM5.602 7.547a1.17 1.17 0 00-.329-.305c-.156-.094-.304-.125-.445-.094a.489.489 0 00-.328.258.961.961 0 00-.117.375l-.281 2.766.304-.516c.25-.39.516-.726.797-1.008.406-.406.797-.671 1.172-.796a1.54 1.54 0 01-.445-.329c-.12-.104-.227-.243-.328-.351zM17.25 5.016a.55.55 0 00-.48-.141c-.18.031-.34.164-.48.398-.08.157-.142.32-.188.493-.027.058-.032.125-.047.187l-.024.07c-.11.25-.21.43-.304.54.453.015.89.101 1.312.257a4.83 4.83 0 011.594.961l.21.211-1.265-2.578a.925.925 0 00-.328-.398Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/askubuntu.svg b/assets/lib/simple-icons/icons/askubuntu.svg
new file mode 100644
index 00000000..3b0e516a
--- /dev/null
+++ b/assets/lib/simple-icons/icons/askubuntu.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Ask Ubuntu</title><path d="M6.511 13a3.95 3.95 0 0 0-.505.035c-.178.023-.341.07-.489.143a1.07 1.07 0 0 0-.37.299c-.098.126-.147.294-.147.5 0 .383.121.65.364.8.242.148.571.223.988.223.25 0 .472-.006.665-.017.193-.012.354-.032.483-.063v-1.782a1.33 1.33 0 0 0-.37-.098 4.04 4.04 0 0 0-.619-.04zm12.774 2.77c-.171-.284-.37-.574-.593-.87a13.212 13.212 0 0 0-.703-.854 10.048 10.048 0 0 0-.746-.75 6.636 6.636 0 0 0-.722-.573v3.048h-1.137V6.506l1.137-.195v5.778l.649-.646c.236-.236.468-.475.696-.719.229-.244.445-.478.648-.701.204-.223.38-.42.526-.591h1.334c-.188.203-.392.426-.612.67-.22.244-.448.49-.685.737-.237.249-.475.497-.715.744l-.679.701c.244.188.503.419.777.695.273.276.541.575.807.896.265.321.515.646.752.976.236.329.436.635.6.92zm-5.754-.304c-.436.3-1.057.451-1.864.451-.563 0-1.003-.046-1.321-.14a6.652 6.652 0 0 1-.648-.214l.208-.974c.13.049.338.121.623.22.286.096.665.145 1.138.145.464 0 .809-.06 1.033-.183.224-.122.336-.317.336-.585a.775.775 0 0 0-.33-.658c-.22-.163-.583-.345-1.088-.549a15.22 15.22 0 0 1-.704-.299 2.464 2.464 0 0 1-.58-.359 1.582 1.582 0 0 1-.392-.5 1.597 1.597 0 0 1-.147-.719c0-.56.208-1.006.624-1.335.416-.33.983-.494 1.7-.494.179 0 .359.01.538.031.18.02.347.044.502.073a4.802 4.802 0 0 1 .684.177l-.208.975a2.941 2.941 0 0 0-.574-.201 3.75 3.75 0 0 0-.942-.104c-.318 0-.595.063-.832.189a.626.626 0 0 0-.355.591c0 .139.027.26.08.366a.848.848 0 0 0 .245.287c.11.085.246.164.41.237.162.074.358.15.587.232.3.114.57.226.807.335.236.11.438.238.605.384.167.146.296.323.385.53.09.208.135.462.135.763 0 .585-.218 1.028-.655 1.328zm-4.97.195l-.41.068c-.175.028-.373.055-.594.079-.22.024-.458.046-.715.067-.256.02-.511.03-.764.03a4.19 4.19 0 0 1-.99-.11 2.221 2.221 0 0 1-.784-.347 1.595 1.595 0 0 1-.513-.628c-.122-.26-.184-.573-.184-.938 0-.35.071-.65.214-.903.143-.251.337-.455.582-.61a2.71 2.71 0 0 1 .856-.34 4.68 4.68 0 0 1 1.027-.11 4.132 4.132 0 0 1 .703.067 15.222 15.222 0 0 1 .458.091v-.317c0-.187-.02-.372-.06-.554a1.275 1.275 0 0 0-.22-.488 1.118 1.118 0 0 0-.435-.341c-.184-.086-.422-.129-.715-.129-.375 0-.704.027-.985.08a3.48 3.48 0 0 0-.63.164l-.134-.938c.147-.065.391-.128.734-.19.342-.06.713-.091 1.113-.091.456 0 .841.06 1.155.177.314.118.567.285.758.5.192.215.328.471.41.768.082.297.122.624.122.981zM24 11.961C24 5.356 18.627 0 12 0S0 5.356 0 11.961c0 6.607 5.373 11.963 12 11.963 2.177 0 4.217-.58 5.978-1.591L24 24l-1.512-6.226A11.878 11.878 0 0 0 24 11.961z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/assemblyscript.svg b/assets/lib/simple-icons/icons/assemblyscript.svg
new file mode 100644
index 00000000..4d34c007
--- /dev/null
+++ b/assets/lib/simple-icons/icons/assemblyscript.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>AssemblyScript</title><path d="M0 0v24h24V0h-9.225c0 1.406-1.04 2.813-2.756 2.813A2.766 2.766 0 019.234 0zm18.204 10.947c.707 0 1.314.137 1.82.412.517.264.96.717 1.33 1.361l-1.726 1.108c-.19-.338-.395-.58-.617-.728a1.422 1.422 0 00-.807-.222c-.327 0-.586.09-.776.27a.896.896 0 00-.285.68c0 .337.106.596.317.775.222.17.57.36 1.045.57l.554.238c.474.2.891.411 1.25.633.37.21.675.453.918.728.253.264.443.57.57.918.137.337.206.738.206 1.203a3 3 0 01-.285 1.33c-.18.38-.433.701-.76.965a3.419 3.419 0 01-1.171.601c-.443.127-.929.19-1.456.19a5.31 5.31 0 01-1.41-.174 4.624 4.624 0 01-1.139-.475 3.922 3.922 0 01-.886-.712 4.48 4.48 0 01-.602-.902L16.1 18.67c.242.39.527.712.855.966.337.253.78.38 1.33.38.463 0 .827-.1 1.091-.301.275-.211.412-.475.412-.792 0-.38-.143-.664-.428-.854-.285-.19-.68-.396-1.187-.618l-.554-.237a8.12 8.12 0 01-1.092-.554 3.64 3.64 0 01-.839-.696 2.887 2.887 0 01-.538-.903 3.375 3.375 0 01-.19-1.187c0-.411.074-.796.222-1.155a2.91 2.91 0 01.649-.934c.285-.264.628-.47 1.029-.617.4-.148.849-.222 1.345-.222zm-8.796.032h.19l4.922 10.858h-2.327l-.506-1.219H7.318l-.506 1.219H4.675zm.063 3.988a22.21 22.21 0 01-.206.697l-.205.649a6.979 6.979 0 01-.222.585l-.776 1.868h2.834l-.776-1.868a15.492 15.492 0 01-.237-.633 23.741 23.741 0 01-.412-1.298z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/astonmartin.svg b/assets/lib/simple-icons/icons/astonmartin.svg
new file mode 100644
index 00000000..5af9e60c
--- /dev/null
+++ b/assets/lib/simple-icons/icons/astonmartin.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Aston Martin</title><path d="M.3281 9.3008c-.0675 0-.2142.01-.293.1562-.0337.0675-.0665.181.0235.3496l.1797.291c.0674.1125.156.1587.336.17 0 0 .079.0101.1464.1113l.1797.3145c.0337.0674.1246.248.4394.293.0113 0 .0903.012.1465.1132l.2246.3926c.0675.1237.1575.1684.3262.2246l4.0586 1.1934c.135.045.2031.2011.2031.2011.1012.2474.2239.4612.8535.6524l3.3184.9004c.045.0112.426.1234.707-.1465l.7774-.7422s.0327-.0332.0664-.0332c.045 0 .0683.0332.0683.0332l.7754.7422c.2924.281.664.1577.709.1465l3.3164-.9004c.6296-.1912.7542-.3938.8555-.6524 0 0 .0549-.1562.2012-.2011l4.0605-1.1934c.1575-.0562.2456-.101.3242-.2246l.2266-.3926c.045-.09.1334-.1133.1445-.1133.3036-.045.3946-.2142.4395-.293l.1797-.3144c.0562-.1012.1351-.1113.1465-.1113.1685-.0113.259-.0575.3378-.17l.1797-.291c.0338-.1574.0006-.2821-.0332-.3496-.0788-.1461-.2479-.1562-.293-.1562h-9.705c-.2699 0-.4935.0774-.6621.246-.1125.1125-.2031.2694-.248.4493 0 0-.0117.045-.1016.045h-1.9102c-.0787 0-.0903-.0338-.1016-.045-.045-.18-.1243-.3368-.248-.4492-.1574-.1574-.3942-.2461-.664-.2461H.328zm13.6172.1797h4.4629c-.1574.1124-.2363.2583-.2363.2695-.0562.1012-.1108.203-.1895.3379H13.213c.0112-.0113.0117-.0352.0117-.0352.0337-.1574.1015-.2699.1914-.371.1237-.1237.3044-.2012.5293-.2012zM.3281 9.4902h4.834c.3261 0 .5293.338.5293.338.045.0786.0888.1683.1563.2695H.5645c-.1237-.0113-.1577-.0224-.1915-.0899 0 0-.1586-.2685-.1699-.291C.1806 9.6718.17 9.626.17 9.6035c0-.0675.0458-.1133.1582-.1133zm9.7032 0c.2248 0 .4056.0682.5292.2032.09.09.1577.2136.1915.371l.0214.045H6.006c-.0675-.1125-.1914-.338-.1914-.338-.0113-.0112-.0902-.157-.2364-.2694 2.2939-.0113 4.4531-.0118 4.4531-.0118zm8.793 0h4.8359c.0561 0 .1113.0122.1562.0684 0 .0112.0234.0229.0234.0566-.0335.0113-.034.0454-.0566.1016l-.168.291c-.0337.0562-.0564.0786-.1914.0899h-5.2851c.0675-.1012.1133-.1909.1582-.2696 0 0 .19-.3379.5273-.3379zm-11.6368.7422h9.6133v1.3496H7.1875v-1.3496zm10.8613 0h5.1055c0 .0113-.0121.0342-.0234.0567l-.1797.3261c-.0225.045-.0677.1133-.1914.1582-.1011.0225-.3023.0113-.3809 0l-4.4883-.293c.0564-.0899.1133-.1693.1582-.248zm-17.2383.0117h5.1172c.045.0788.1.1581.1563.248l-4.4961.2911c-.0562.0112-.2601.0112-.3613 0-.1237-.045-.1577-.1113-.1914-.1562-.0675-.1237-.1684-.3154-.2247-.3829zm5.2852 0h.9453v.1797l-.787.0567c-.0563-.0787-.1133-.1576-.1583-.2364zm10.8398 0h.9454c-.0451.0675-.102.1577-.1582.2364l-.7872-.0567v-.1797zm-9.1425.2032l-.416.9218h.1132v-.0117a3.7474 3.7474 0 0 1 .1133-.3262l.0098-.0214h.3144c.045.1012.0918.2015.1368.3476v.0117h.1562l-.3926-.9218H7.793zm2.205 0c-.2923 0-.4843.1915-.4843.4726s.2032.4707.4843.4707c.2924 0 .506-.2013.506-.4824 0-.3148-.2586-.461-.506-.461zm3.4415 0l-.418.9218h.1133v-.0117a3.7474 3.7474 0 0 1 .1132-.3262s.0098-.0102.0098-.0214h.3164c.045.1012.0898.2127.1348.3476v.0117h.1562l-.3925-.9218h-.0332zM8.58 10.457c-.18 0-.291.1019-.291.248 0 .1575.1121.2031.2246.2481.09.0338.1797.0673.1797.1797 0 .1012-.0668.1797-.168.1797-.09 0-.147-.033-.2031-.123h-.045l-.0234.123c.045.0562.1586.0781.2149.0781.1911 0 .3261-.1228.3261-.3027.0225-.1574-.102-.203-.2031-.248-.1012-.0338-.1914-.0673-.1914-.1797 0-.0788.0682-.1465.1582-.1465.0675 0 .1225.0345.1562.1133v.0117h.0235l.0332-.1133c-.0562-.045-.1352-.0684-.1914-.0684zm.2812 0v.0918h.0117c.0788-.0112.1571-.0234.2696-.0234v.8203h.125v-.8203c.09 0 .179.0122.2578.0234l.0234.0098v-.1016h-.6875zm3.1836 0v.0117c-.0112.135-.0912.675-.125.8887v.0117h.1133v-.0117c0-.1237.0224-.3152.045-.5176 0 0 .0102-.0893.0214-.123.0225.0225.1806.3475.248.4824l.0684.1582h.0215v-.0117c.0675-.1687.18-.3703.3262-.6289.0225.1574.0458.4607.0683.6406v.0117h.1348v-.0117c-.0225-.2136-.0683-.5063-.1133-.8887l-.0332-.0117-.2148.3946s-.1338.247-.1563.2695c-.135-.2249-.247-.4617-.3594-.664h-.0449zm-1.4062.0117v.9004h.0898v-.6972c.0113.0112.5625.6191.5625.6191l.0664.0781h.045l-.0098-.9003h-.0801v.664a471.423 471.423 0 0 1-.6172-.664h-.0566zm3.957 0v.0899h.0117c.0787-.0112.1571-.0215.2696-.0215v.8203h.125v-.8203c.09 0 .179.0103.2578.0215h.0117v-.0899h-.6758zm.7871 0v.9004h.125v-.9003h-.125zm.3164 0v.9004h.0899v-.6972c.011.0112.5625.6191.5625.6191l.0664.0781h.0566v-.9003h-.0898v.664c-.0112-.0112-.6192-.664-.6192-.664h-.0664zm-1.7441.0118v.9004h.125v-.4395h.0332c0 .0112.1015.1133.1015.1133l.1563.2012.08.1132h.1563c.0113 0-.336-.4282-.336-.4394.1575-.0337.2579-.1224.2579-.2461 0-.135-.1018-.2031-.293-.2031h-.2812zm-3.9356.0234c.1125 0 .2036.0443.2598.123.0675.0788.0781.1689.0781.2813v.0215c0 .09-.0346.203-.1133.293-.0674.0674-.1444.1015-.2343.1015-.2024 0-.3496-.1584-.3496-.3945 0-.2586.1344-.4258.3593-.4258zm4.0606.0215c.0562 0 .1347-.0113.1797 0 .09.0225.1347.0682.1347.1582 0 .09-.0682.1572-.1582.1797-.0562.0112-.1337.0117-.1562.0117v-.3496zm2.8554.0332l.6973.045a2.6065 2.6065 0 0 0-.1582.2148l-.539-.0684v-.1914zm-9.8945.0117v.1797l-.5293.0781a2.5667 2.5667 0 0 1-.1562-.2129l.6855-.0449zm-.8555.0567c.0563.0674.1133.157.1582.2246l-4.2851.5742c-.1574.0225-.2134-.0337-.2246-.045l-.213-.3828c-.0224-.0224-.034-.057-.0565-.0683.0224 0 4.621-.3027 4.621-.3027zm11.6055 0l4.5645.3027c.0111 0 .0229.0005.0566.0117-.0113.0113-.0336.0342-.045.0566 0 0-.181.3154-.2148.3829-.011.0112-.0671.0674-.2246.0449l-4.3066-.5742c.0675-.0787.1137-.1572.17-.2246zm-10.0312.0214c.0112.0225.1235.2822.1347.3047h-.2578c.0113-.0225.1118-.271.123-.3047zm5.6562 0c.0113.0225.1235.2822.1348.3047h-.2578a8.5805 8.5805 0 0 0 .123-.3047zm3.5195.2364l.4278.0566c-.0564.0675-.1122.1454-.1797.2129-.1124-.0112-.1917-.0224-.248-.045v-.2245zm-9.8828.0117v.2246l-.248.045c-.0675-.0675-.1235-.1455-.1797-.213l.4277-.0566zm-.5976.0781c.0675.0675.1127.1571.1914.2246l-2.957.6074c-.1237.0225-.4383.0802-.5957.0352-.4386-.135-.8094-.2363-.9668-.2813l4.328-.5859zm11.0879.0117l4.328.5742-.9765.2813c-.1574.045-.4847-.0122-.586-.0234 0 0-2.0236-.4163-2.957-.6075.0676-.0674.124-.1571.1915-.2246zm-10.502.2696v.1796c-.045-.045-.0898-.0995-.1348-.1445a1.1219 1.1219 0 0 0 .1348-.0351zm9.8945.0117l.1348.0234c-.0449.0562-.0897.1-.1348.1563v-.1797zm.3047.0566l3.0352.6172c.0113 0 .0683.0234.1582.0234l-1.0137.3028c-.2025.0562-.4824-.0332-.4824-.0332l-1.9785-.6192c.101-.1012.1913-.201.2812-.291zm-10.4804.0117c.09.1012.18.201.2812.291l-1.9805.6192c-.0224-.0112-.2917.0777-.494.0215-.3374-.1012-.674-.201-1-.291.0899-.0113.1562-.0235.1562-.0235s2.1375-.4373 3.037-.6172zm.5722.3809h1.1582l-.752.3496c-.0112-.0113-.2937-.2484-.4062-.3496zm1.4844 0h.877l-1.213.8672c-.2023-.1237-.4167-.2699-.619-.416.4497-.2137.8763-.4062.955-.4512zm2.3399 0h.3378l-.4843 1.7539c-.2699-.0337-.529-.0888-.7989-.1562.3486-.596.8217-1.384.9453-1.5977zm1.3378 0h.338l.9433 1.5977c-.2586.0674-.527.1112-.7969.1562l-.4844-1.7539zm.5059 0h.3945l1.2578 1.3047c-.236.1012-.483.1806-.7304.248L13 11.7168zm.584 0h.4726l1.3164.9453c-.1911.1125-.3933.203-.5957.293-.4272-.4385-.9572-.9797-1.1933-1.2383zm.709 0h.8652l.957.4512c-.2023.1574-.4055.2908-.6191.4258-.4498-.3374-.9445-.6858-1.2031-.877zm1.203 0h1.1583c-.1126.1124-.3932.3496-.4043.3496-.2811-.1237-.5514-.2484-.754-.3496zm-4.9023.0117h.3946l-.9238 1.5527c-.2474-.0674-.4832-.158-.7305-.248.506-.5285 1.1136-1.1585 1.2598-1.3047zm1.0235 0h.293l.0097 1.8106c-.2586 0-.5285-.0225-.787-.045l.4843-1.7656zm.4492 0h.293l.4824 1.7656c-.2586.0338-.5168.045-.7754.045v-1.8106zm4.7793 0l2.0469.629s.0453.0234.1015.0234l-1.1132.3378c-.1462.0338-.3486-.0463-.416-.08 0 0-.5292-.2473-1.0801-.5059.1574-.135.3148-.2694.4609-.4043zm-9.7148.0117c.1461.135.2922.2694.4609.4043l-1.08.5059c-.0563.0225-.2582.1133-.4044.0684-.045-.0113-.5178-.1576-1.125-.3262.0562-.0113.1016-.0235.1016-.0235s1.6645-.5164 2.0469-.6289zm2.789 0h.4707l-1.1914 1.2364c-.2024-.09-.3933-.1918-.5957-.293.5735-.416 1.1702-.8422 1.3164-.9434zm-2.2168.4942c.2024.1574.4173.3045.6309.4394l-1.002.707c.0113.0226-.1911.1696-.371.1133-.4161-.1574-.4829-.3152-.5391-.4726-.0113-.0225-.0327-.1005-.1114-.168.1462-.0225.2583-.0786.2696-.0898 0 0 .572-.2595 1.123-.5293zm8.5684.0117l1.1367.5273c.0113 0 .1228.0693.2578.0918-.0675.0787-.1015.1568-.1015.168-.0675.1574-.1232.304-.5391.4727-.1688.0562-.3828-.1016-.3828-.1016s-.4715-.3384-1-.7207c.2136-.135.4266-.28.6289-.4375zm-7.791.5059c.2024.1124.4035.2244.6172.3144l-.5723.6191c-.0562.0563-.2264.1788-.3613.1563l-.8868-.2461c.09-.0337.1563-.0786.1563-.0898 0 0 .4959-.3491 1.0469-.754zm7.0156.0117l1.0469.752s.0663.0467.1562.0917c-.225.0562-.7305.1895-.7305.1895l-.1582.0449c-.135.0337-.2914-.1-.3476-.1563 0 0-.2467-.2588-.584-.6074.2024-.1012.4148-.202.6172-.3144zm-6.2637.3808c.2474.1125.4953.204.754.2715l-.3145.5274c-.0338.0674-.1571.2475-.2696.2363l-.957-.2578c.1012-.0563.17-.1235.17-.1348 0 0 .2686-.294.6171-.6426zm5.5098 0l.6191.6426c.0113.0113.0668.0673.168.1348l-.9434.2578c-.1124.0225-.2475-.1576-.2812-.2363l-.3145-.5274c.2587-.0674.5159-.159.752-.2715zm-4.6211.293c.2699.0675.551.1245.832.1582l-.1562.5957s-.0345.1693-.1582.248c-.0562.0338-.1127.0328-.1914.0215l-.8438-.2246c.1012-.0787.1704-.2021.1817-.2246 0 0 .1447-.2481.3359-.5742zm3.7441.0117l.338.5742c.0112.0225.0784.1347.1796.2246l-.8437.213a.2228.2228 0 0 1-.1895-.0215c-.1124-.0675-.1582-.2369-.1582-.248l-.1582-.584c.2811-.0338.5622-.0908.832-.1583zm-2.7773.1797c.2024.0225.4172.0337.6309.045-.1462.1686-.709.6855-.709.6855-.0675.0675-.1357.102-.2032.1133.09-.1125.125-.2368.125-.248l.1563-.5958zm1.789 0l.1563.5957c.0113.0225.035.1581.125.248-.1124-.0224-.1473-.0671-.3047-.2246 0 0-.45-.4392-.6074-.5742.2136-.0112.4285-.0224.6309-.0449Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/astro.svg b/assets/lib/simple-icons/icons/astro.svg
new file mode 100644
index 00000000..781213c6
--- /dev/null
+++ b/assets/lib/simple-icons/icons/astro.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Astro</title><path d="M16.074 16.86c-.72.616-2.157 1.035-3.812 1.035-2.032 0-3.735-.632-4.187-1.483-.161.488-.198 1.046-.198 1.402 0 0-.106 1.75 1.111 2.968 0-.632.513-1.145 1.145-1.145 1.083 0 1.082.945 1.081 1.712v.069c0 1.164.711 2.161 1.723 2.582a2.347 2.347 0 0 1-.236-1.029c0-1.11.652-1.523 1.41-2.003.602-.383 1.272-.807 1.733-1.66a3.129 3.129 0 0 0 .378-1.494 3.14 3.14 0 0 0-.148-.954zM15.551.6c.196.244.296.572.496 1.229l4.368 14.347a18.18 18.18 0 0 0-5.222-1.768L12.35 4.8a.37.37 0 0 0-.71.002l-2.81 9.603a18.175 18.175 0 0 0-5.245 1.771L7.974 1.827c.2-.656.3-.984.497-1.227a1.613 1.613 0 0 1 .654-.484C9.415 0 9.757 0 10.443 0h3.135c.686 0 1.03 0 1.32.117A1.614 1.614 0 0 1 15.55.6z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/asus.svg b/assets/lib/simple-icons/icons/asus.svg
index 7227c2dd..18ef199d 100644
--- a/assets/lib/simple-icons/icons/asus.svg
+++ b/assets/lib/simple-icons/icons/asus.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ASUS icon</title><path d="M23.904 10.788V9.522h-4.656c-.972 0-1.41.6-1.482 1.182v.018-1.2h-1.368v1.266h1.362zm-6.144.456l-1.368-.078v1.458c0 .456-.228.594-1.02.594H14.28c-.654 0-.93-.186-.93-.594v-1.596l-1.386-.102v1.812h-.03c-.078-.528-.276-1.14-1.596-1.23L6 11.22c0 .666.474 1.062 1.218 1.14l3.024.306c.24.018.414.09.414.288 0 .216-.18.24-.456.24H5.946V11.22l-1.386-.09v3.348h5.646c1.26 0 1.662-.654 1.722-1.2h.03c.156.864.912 1.2 2.19 1.2h1.41c1.494 0 2.202-.456 2.202-1.524zm4.398.258l-4.338-.258c0 .666.438 1.11 1.182 1.17l3.09.24c.24.018.384.078.384.276 0 .186-.168.258-.516.258h-4.212v1.29h4.302c1.356 0 1.95-.474 1.95-1.554 0-.972-.534-1.338-1.842-1.422zm-10.194-1.98h1.386v1.266h-1.386zM3.798 11.07l-1.506-.15L0 14.478h1.686zm7.914-1.548h-4.23c-.984 0-1.416.612-1.518 1.2v-1.2H3.618c-.33 0-.486.102-.642.33l-.648.936h9.384Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ASUS</title><path d="M23.904 10.788V9.522h-4.656c-.972 0-1.41.6-1.482 1.182v.018-1.2h-1.368v1.266h1.362zm-6.144.456l-1.368-.078v1.458c0 .456-.228.594-1.02.594H14.28c-.654 0-.93-.186-.93-.594v-1.596l-1.386-.102v1.812h-.03c-.078-.528-.276-1.14-1.596-1.23L6 11.22c0 .666.474 1.062 1.218 1.14l3.024.306c.24.018.414.09.414.288 0 .216-.18.24-.456.24H5.946V11.22l-1.386-.09v3.348h5.646c1.26 0 1.662-.654 1.722-1.2h.03c.156.864.912 1.2 2.19 1.2h1.41c1.494 0 2.202-.456 2.202-1.524zm4.398.258l-4.338-.258c0 .666.438 1.11 1.182 1.17l3.09.24c.24.018.384.078.384.276 0 .186-.168.258-.516.258h-4.212v1.29h4.302c1.356 0 1.95-.474 1.95-1.554 0-.972-.534-1.338-1.842-1.422zm-10.194-1.98h1.386v1.266h-1.386zM3.798 11.07l-1.506-.15L0 14.478h1.686zm7.914-1.548h-4.23c-.984 0-1.416.612-1.518 1.2v-1.2H3.618c-.33 0-.486.102-.642.33l-.648.936h9.384Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/at-and-t.svg b/assets/lib/simple-icons/icons/at-and-t.svg
deleted file mode 100644
index 9616ac69..00000000
--- a/assets/lib/simple-icons/icons/at-and-t.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 24 24"><title>AT&amp;T icon</title><path d="M4.633 21.429a11.967 11.967 0 0 0 7.344 2.516c3.026 0 5.785-1.123 7.89-2.968.026-.022.014-.037-.011-.022-.945.63-3.638 2.008-7.879 2.008-3.685 0-6.014-.822-7.329-1.556-.025-.013-.034.006-.015.022m8.157.612c2.948 0 6.187-.804 8.124-2.394.53-.434 1.035-1.01 1.487-1.785.26-.446.515-.976.722-1.497.01-.025-.006-.038-.025-.01-1.802 2.652-7.018 4.305-12.404 4.305-3.807 0-7.904-1.217-9.508-3.542-.016-.021-.031-.012-.022.012 1.494 3.176 6.027 4.91 11.626 4.91m-3.22-5.267c-6.13 0-9.02-2.855-9.545-4.804-.006-.028-.025-.022-.025.004 0 .655.066 1.502.179 2.064.053.273.276.702.602 1.045 1.485 1.547 5.186 3.715 11.595 3.715 8.732 0 10.729-2.909 11.136-3.866.292-.684.443-1.92.443-2.958 0-.252-.006-.452-.016-.65 0-.032-.018-.034-.025-.003-.436 2.34-7.897 5.453-14.344 5.453M1.155 6.836C.803 7.533.415 8.71.298 9.318c-.05.26-.029.386.063.58.734 1.56 4.45 4.054 13.12 4.054 5.289 0 9.397-1.3 10.063-3.67.122-.437.129-.898-.029-1.519-.176-.694-.505-1.503-.784-2.071-.01-.019-.025-.016-.022.006.103 3.11-8.569 5.114-12.945 5.114-4.74 0-8.694-1.888-8.694-4.273 0-.229.048-.458.107-.696.006-.022-.013-.026-.022-.007m18.732-3.818c.05.079.076.163.076.276 0 1.33-4.072 3.684-10.553 3.684-4.762 0-5.653-1.767-5.653-2.89 0-.402.154-.813.493-1.23.018-.025.003-.034-.019-.016a12.001 12.001 0 0 0-1.685 1.751c-.239.301-.387.568-.387.728 0 2.328 5.838 4.016 11.297 4.016 5.816 0 8.412-1.899 8.412-3.567 0-.596-.232-.945-.826-1.62-.386-.439-.75-.796-1.136-1.148-.019-.015-.032-.003-.019.016m-1.783-1.33A11.845 11.845 0 0 0 11.977 0c-2.262 0-4.41.633-6.211 1.738-.54.332-.845.599-.845.942 0 1.01 2.36 2.095 6.548 2.095 4.143 0 7.357-1.19 7.357-2.334 0-.273-.239-.464-.722-.753"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/atandt.svg b/assets/lib/simple-icons/icons/atandt.svg
new file mode 100644
index 00000000..166ca392
--- /dev/null
+++ b/assets/lib/simple-icons/icons/atandt.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>AT&amp;T</title><path d="M4.584 21.438a12.077 12.077 0 0 0 7.349 2.495 12 12 0 0 0 7.887-2.967c-.944.607-3.64 2.023-7.887 2.023-3.708 0-6.068-.81-7.349-1.55m8.158.606c2.966 0 6.202-.809 8.09-2.427.539-.405 1.01-1.011 1.483-1.753.27-.472.539-1.011.741-1.483-1.82 2.63-7.011 4.315-12.404 4.315-3.776 0-7.888-1.214-9.506-3.573 1.483 3.236 6 4.92 11.596 4.92m-3.236-5.257C3.37 16.787.472 13.955 0 12c0 .674.067 1.483.202 2.09.068.27.27.674.607 1.079 1.483 1.55 5.191 3.707 11.595 3.707 8.697 0 10.72-2.898 11.124-3.842.27-.674.472-1.888.472-2.967v-.674c-.607 2.292-8.022 5.394-14.494 5.394m-8.427-9.91C.742 7.55.337 8.763.202 9.37c-.067.27 0 .404.068.607.741 1.55 4.45 4.044 13.078 4.044 5.259 0 9.371-1.28 10.045-3.64.135-.404.135-.876 0-1.483-.202-.674-.472-1.483-.809-2.09.068 3.101-8.562 5.124-12.944 5.124-4.719 0-8.696-1.888-8.696-4.248.067-.337.135-.606.135-.809M19.82 3.034c.068.067.068.135.068.27 0 1.348-4.045 3.64-10.517 3.64-4.787 0-5.663-1.753-5.663-2.9 0-.404.135-.808.472-1.213-.607.607-1.146 1.147-1.686 1.82-.202.27-.337.54-.337.675 0 2.36 5.865 3.977 11.259 3.977 5.797 0 8.427-1.887 8.427-3.573 0-.606-.203-.943-.81-1.618a17.301 17.301 0 0 0-1.213-1.078m-1.753-1.281A11.794 11.794 0 0 0 11.933.067C9.64.067 7.55.674 5.73 1.82c-.539.27-.876.54-.876.877 0 1.01 2.36 2.09 6.54 2.09 4.112 0 7.348-1.214 7.348-2.36.067-.202-.203-.405-.675-.674"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/atari.svg b/assets/lib/simple-icons/icons/atari.svg
index 8f83f91f..9be7227d 100644
--- a/assets/lib/simple-icons/icons/atari.svg
+++ b/assets/lib/simple-icons/icons/atari.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Atari icon</title><path d="M0 21.653s3.154-.355 5.612-2.384c2.339-1.93 3.185-3.592 3.77-5.476.584-1.885.671-6.419.671-7.764V2.346H8.598v1.365c-.024 2.041-.2 5.918-1.135 8.444C5.203 18.242 0 18.775 0 18.775zm24 0s-3.154-.355-5.61-2.384c-2.342-1.93-3.187-3.592-3.772-5.476-.583-1.885-.671-6.419-.671-7.764V2.346H15.4l.001 1.365c.024 2.041.202 5.918 1.138 8.444 2.258 6.087 7.46 6.62 7.46 6.62zM10.659 2.348h2.685v19.306H10.66Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Atari</title><path d="M0 21.653s3.154-.355 5.612-2.384c2.339-1.93 3.185-3.592 3.77-5.476.584-1.885.671-6.419.671-7.764V2.346H8.598v1.365c-.024 2.041-.2 5.918-1.135 8.444C5.203 18.242 0 18.775 0 18.775zm24 0s-3.154-.355-5.61-2.384c-2.342-1.93-3.187-3.592-3.772-5.476-.583-1.885-.671-6.419-.671-7.764V2.346H15.4l.001 1.365c.024 2.041.202 5.918 1.138 8.444 2.258 6.087 7.46 6.62 7.46 6.62zM10.659 2.348h2.685v19.306H10.66Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/atlassian.svg b/assets/lib/simple-icons/icons/atlassian.svg
index 6e46f575..87521386 100644
--- a/assets/lib/simple-icons/icons/atlassian.svg
+++ b/assets/lib/simple-icons/icons/atlassian.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Atlassian icon</title><path d="M19.31 23.957H15.71a1.26 1.26 0 0 1-1.312-.792c-1.332-2.665-2.78-5.288-3.987-8.046a15.25 15.25 0 0 1 .885-14.47c.166-.281.52-.625.791-.625s.593.375.74.666q5.444 10.89 10.898 21.788c.542 1.041.292 1.468-.905 1.479zm-14.573 0H1.04c-1.041 0-1.27-.417-.812-1.333q2.8-5.538 5.549-11.055c.5-1.041.895-1.041 1.592-.177a12.221 12.221 0 0 1 2.51 11.17c-.344 1.322-.532 1.405-1.864 1.405z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Atlassian</title><path d="M7.12 11.084a.683.683 0 00-1.16.126L.075 22.974a.703.703 0 00.63 1.018h8.19a.678.678 0 00.63-.39c1.767-3.65.696-9.203-2.406-12.52zM11.434.386a15.515 15.515 0 00-.906 15.317l3.95 7.9a.703.703 0 00.628.388h8.19a.703.703 0 00.63-1.017L12.63.38a.664.664 0 00-1.196.006z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/atom.svg b/assets/lib/simple-icons/icons/atom.svg
index c684ad3e..5ba7e82f 100644
--- a/assets/lib/simple-icons/icons/atom.svg
+++ b/assets/lib/simple-icons/icons/atom.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Atom icon</title><path d="M20.496 9.026c-2.183-.93-5.116-1.53-8.25-1.695-.5-.03-.987-.04-1.45-.04 2.318-2.83 4.802-4.73 6.437-4.79.322-.013.595.055.813.196.706.458.905 1.768.545 3.59-.04.25.12.493.36.54.25.05.49-.11.54-.36.45-2.28.12-3.846-.94-4.538-.38-.248-.84-.365-1.35-.346-2.05.077-4.94 2.3-7.59 5.72-1.154.035-2.24.13-3.232.287-.646-2.897-.39-4.977.594-5.477.138-.073.285-.11.457-.124.697-.054 1.66.395 2.71 1.27.194.16.486.14.646-.06.163-.195.134-.48-.06-.645C9.466 1.51 8.304 1 7.354 1.07c-.286.025-.556.098-.803.22-1.19.607-1.67 2.327-1.37 4.838.07.52.16 1.062.29 1.62C2.19 8.404.1 9.718.01 11.372c-.06 1.17.865 2.284 2.68 3.222.224.115.502.03.62-.2.114-.224.03-.5-.2-.616C1.66 13.032.88 12.19.927 11.42c.05-1.08 1.772-2.19 4.76-2.78.27.994.62 2.032 1.05 3.09-1.018 1.888-1.756 3.747-2.137 5.4-.56 2.465-.26 4.22.86 4.948.36.234.78.35 1.247.35.935 0 2.067-.46 3.347-1.372.21-.15.256-.435.11-.64-.147-.206-.433-.256-.64-.106-1.544 1.103-2.844 1.472-3.562 1.003-.76-.495-.926-1.943-.46-3.976.32-1.386.907-2.93 1.708-4.52.2.438.41.876.63 1.313 1.425 2.796 3.17 5.227 4.91 6.845 1.386 1.29 2.674 1.963 3.735 1.963.35 0 .68-.075.976-.223 1.145-.585 1.64-2.21 1.398-4.575-.224-2.213-1.06-4.91-2.354-7.6-.11-.227-.384-.323-.61-.216-.23.11-.33.385-.22.612 2.69 5.602 2.88 10.19 1.37 10.96-1.59.813-5.424-2.355-8.39-8.18-.34-.655-.637-1.3-.9-1.93.34-.608.7-1.22 1.095-1.83.395-.604.806-1.188 1.224-1.745h.394c.54 0 1.126.01 1.734.048 6.53.343 10.975 2.56 10.884 4.334-.04.765-.924 1.538-2.425 2.12-.234.096-.352.36-.26.596.07.18.24.292.426.292.058 0 .114-.01.167-.03 1.905-.74 2.95-1.756 3.01-2.93.07-1.33-1.17-2.61-3.5-3.6v-.01zM8.08 9.45c-.27.415-.52.827-.764 1.244-.292-.768-.532-1.51-.723-2.215.713-.11 1.485-.19 2.31-.24-.28.39-.554.794-.82 1.21v-.01zM12.005 10.625A1.375 1.375 0 1 0 12.005 13.375 1.375 1.375 0 1 0 12.005 10.625z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Atom</title><path d="M20.489 9.025c-2.183-.93-5.116-1.53-8.25-1.695-.5-.03-.987-.04-1.45-.04 2.318-2.83 4.802-4.73 6.437-4.79.322-.013.595.055.813.196.706.458.905 1.768.545 3.59-.04.25.12.493.36.54.25.05.49-.11.54-.36.45-2.28.12-3.846-.94-4.538-.38-.248-.84-.365-1.35-.346-2.05.077-4.94 2.3-7.59 5.72-1.154.035-2.24.13-3.232.287-.646-2.897-.39-4.977.594-5.477.138-.073.285-.11.457-.124.697-.054 1.66.395 2.71 1.27.194.16.486.14.646-.06a.458.458 0 00-.06-.645C9.459 1.51 8.297 1 7.347 1.07a2.244 2.244 0 00-.803.22c-1.19.607-1.67 2.327-1.37 4.838.07.52.16 1.062.29 1.62-3.281.656-5.371 1.97-5.461 3.624-.06 1.17.865 2.284 2.68 3.222a.46.46 0 10.42-.816C1.653 13.031.873 12.19.92 11.42c.05-1.08 1.772-2.19 4.76-2.78.27.994.62 2.032 1.05 3.09-1.018 1.888-1.756 3.747-2.137 5.4-.56 2.465-.26 4.22.86 4.948.36.234.78.35 1.247.35.935 0 2.067-.46 3.347-1.372a.458.458 0 10-.53-.746c-1.544 1.103-2.844 1.472-3.562 1.003-.76-.495-.926-1.943-.46-3.976.32-1.386.907-2.93 1.708-4.52.2.438.41.876.63 1.313 1.425 2.796 3.17 5.227 4.91 6.845 1.386 1.29 2.674 1.963 3.735 1.963.35 0 .68-.075.976-.223 1.145-.585 1.64-2.21 1.398-4.575-.224-2.213-1.06-4.91-2.354-7.6a.46.46 0 00-.83.396c2.69 5.602 2.88 10.19 1.37 10.96-1.59.813-5.424-2.355-8.39-8.18-.34-.655-.637-1.3-.9-1.93.34-.608.7-1.22 1.095-1.83.395-.604.806-1.188 1.224-1.745h.394c.54 0 1.126.01 1.734.048 6.53.343 10.975 2.56 10.884 4.334-.04.765-.924 1.538-2.425 2.12a.464.464 0 00-.26.596.455.455 0 00.593.262c1.905-.74 2.95-1.756 3.01-2.93.07-1.33-1.17-2.61-3.5-3.6v-.01zM8.073 9.45c-.27.415-.52.827-.764 1.244a23.66 23.66 0 01-.723-2.215c.713-.11 1.485-.19 2.31-.24-.28.39-.554.794-.82 1.21v-.01zm3.925 1.175a1.375 1.375 0 100 2.75 1.375 1.375 0 100-2.75z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/auchan.svg b/assets/lib/simple-icons/icons/auchan.svg
new file mode 100644
index 00000000..b2eb6112
--- /dev/null
+++ b/assets/lib/simple-icons/icons/auchan.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Auchan</title><path d="m14.467 18.7529 1.6518 4.6358h1.2185l-1.7447-4.8583a7.9586 7.9586 0 0 1-1.1256.2217M0 23.3888h5.5057l1.7822-5.6112H1.9158A107.284 107.284 0 0 0 0 23.3879m7.2547-12.6334L10.4337 8.1c.5205-1.4086 1.0642-2.8197 1.6295-4.0216.2822.6408.5495 1.2816.83 1.9639 1.2268-1.0077 2.0328-1.5555 2.0735-1.582l.0164-.0117a5.6618 5.6618 0 0 1 1.632-.7064 112.7775 112.7775 0 0 0-1.4817-3.131h-6.169c-.5146.9903-2.4329 4.9521-4.6765 10.399h2.2694c.3693 0 .5544-.1362.6972-.2557m12.9073 4.4076a7.4539 7.4539 0 0 1-3.473 2.9658l1.8702 5.2609H24c-1.0874-3.3012-2.2536-6.2786-3.3484-9.0684-.1527.303-.3155.5603-.4898.8409M18.549 6.2946c.157 0 .303.0365.4358.1005-.0264-.0042-.054-.0092-.0813-.0092a.5844.5844 0 0 0-.5844.581.581.581 0 0 0 .5844.5803.581.581 0 0 0 .5827-.5794c0-.02-.0025-.0374-.004-.0548a.9987.9987 0 0 1 .0772.3843c0 .5528-.4524 1.0027-1.0102 1.0027-.5556.0014-1.0074-.4471-1.0102-1.0027 0-.5561.4532-1.0027 1.0102-1.0027zm-5.6393 11.3178c1.3297 0 4.503-.3378 6.2204-3.096 1.7198-2.76 2.3191-7.1386 2.3191-7.1386l1.8826-.8923c.1179-.0589.0872-.2623-.0565-.2623H21.246c-.318-.4955-1.4194-1.5497-3.0422-1.5497-.9628 0-1.8062.2715-2.5615.7637 0 0-1.1015.7503-2.7035 2.1282l-4.904 4.0797c-.3776.3155-.84.5205-1.4791.5205H.3858c-.1743 0-.1162.146-.088.2307.435 1.3256 1.5962 2.5085 3.6232 2.5085l-1.4476 1.4916c-.0573.0564-.0573.2258.0863.2258h5.5049c3.9784 0 6.4246-1.7415 8.0324-4.1545.1378-.2067.2673-.4266.3901-.6391.0606.0282.0664.0863.0381.1428-.4059.9794-1.4194 2.965-3.2737 4.1452-.6392.3736-.8417.489-1.7398.8334-.0614.0266-.0863.1245-.0581.2092l2.2279 6.2295h1.216l-2.042-5.7771h.0557z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/audacity.svg b/assets/lib/simple-icons/icons/audacity.svg
index 641ed5a4..c8d99573 100644
--- a/assets/lib/simple-icons/icons/audacity.svg
+++ b/assets/lib/simple-icons/icons/audacity.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Audacity icon</title><path d="M12 2.145c-2.487 0-4.755.776-6.428 2.08-1.673 1.303-2.76 3.169-2.76 5.244v.75C1.153 11.06 0 13.268 0 15.856c0 3.312 1.884 6 4.312 6V9.468c0-1.554.805-2.984 2.186-4.06C7.879 4.331 9.829 3.643 12 3.643c2.17 0 4.12.688 5.502 1.764 1.38 1.077 2.186 2.507 2.186 4.06v12.387c2.428 0 4.312-2.687 4.312-6 0-2.587-1.152-4.795-2.813-5.636v-.75c0-2.075-1.086-3.94-2.76-5.244-1.672-1.304-3.94-2.08-6.427-2.08zm0 6.153l-1.125 8.683L9.75 9.105l-.562 6.75-.376-.75-.375-4.5-.187 4.5-.563 1.313-.374-4.5-.376 3.562-.562-.937v2.625l-.563-2.11v-4.64a1.432 1.432 0 0 0-.937-.375v11.812c.375 0 .75-.187.937-.562v-3.375l.188.187.563 1.875.187-2.25.563 2.813v-3.562l.374.937.563 2.625v-3.562l.375.374.563 3.188.562-4.313 1.24 4.86.072-2.985.375-1.124.376 4.687 1.124-4.687.375 3.937.938-4.125.938 4.5.187-3.375.562-1.125.188 4.313.938-4.125.562 1.875.188-1.688.374.75v3.375c.188.375.563.562.938.562V10.043c-.375 0-.75.188-.938.375v4.813l-.374 1-.188-3.188-.375 2.437-.375-.75-.188-2.625-.937 3.563-.188-.75L15 9.293l-.562 4.875-.376 1.5-.75-5.062-.75 4.312-.375 1.125Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Audacity</title><path d="M12 2.145c-2.487 0-4.755.776-6.428 2.08-1.673 1.303-2.76 3.169-2.76 5.244v.75C1.153 11.06 0 13.268 0 15.856c0 3.312 1.884 6 4.312 6V9.468c0-1.554.805-2.984 2.186-4.06C7.879 4.331 9.829 3.643 12 3.643c2.17 0 4.12.688 5.502 1.764 1.38 1.077 2.186 2.507 2.186 4.06v12.387c2.428 0 4.312-2.687 4.312-6 0-2.587-1.152-4.795-2.813-5.636v-.75c0-2.075-1.086-3.94-2.76-5.244-1.672-1.304-3.94-2.08-6.427-2.08zm0 6.153l-1.125 8.683L9.75 9.105l-.562 6.75-.376-.75-.375-4.5-.187 4.5-.563 1.313-.374-4.5-.376 3.562-.562-.937v2.625l-.563-2.11v-4.64a1.432 1.432 0 0 0-.937-.375v11.812c.375 0 .75-.187.937-.562v-3.375l.188.187.563 1.875.187-2.25.563 2.813v-3.562l.374.937.563 2.625v-3.562l.375.374.563 3.188.562-4.313 1.24 4.86.072-2.985.375-1.124.376 4.687 1.124-4.687.375 3.937.938-4.125.938 4.5.187-3.375.562-1.125.188 4.313.938-4.125.562 1.875.188-1.688.374.75v3.375c.188.375.563.562.938.562V10.043c-.375 0-.75.188-.938.375v4.813l-.374 1-.188-3.188-.375 2.437-.375-.75-.188-2.625-.937 3.563-.188-.75L15 9.293l-.562 4.875-.376 1.5-.75-5.062-.75 4.312-.375 1.125Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/audi.svg b/assets/lib/simple-icons/icons/audi.svg
index 3c37409f..36252b4e 100644
--- a/assets/lib/simple-icons/icons/audi.svg
+++ b/assets/lib/simple-icons/icons/audi.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Audi icon</title><path d="M19.848,7.848c-0.992,0-1.902,0.348-2.616,0.928c-0.714-0.58-1.624-0.928-2.616-0.928 c-0.992,0-1.902,0.348-2.616,0.928c-0.714-0.58-1.624-0.928-2.616-0.928c-0.992,0-1.902,0.348-2.616,0.928 c-0.714-0.58-1.624-0.928-2.616-0.928C1.859,7.848,0,9.707,0,12s1.859,4.152,4.152,4.152c0.992,0,1.902-0.348,2.616-0.928 c0.714,0.58,1.624,0.928,2.616,0.928c0.992,0,1.902-0.348,2.616-0.928c0.714,0.58,1.624,0.928,2.616,0.928 c0.992,0,1.902-0.348,2.616-0.928c0.714,0.58,1.624,0.928,2.616,0.928C22.141,16.152,24,14.293,24,12S22.141,7.848,19.848,7.848z M17.232,13.866c-0.376-0.526-0.598-1.17-0.598-1.866c0-0.696,0.222-1.34,0.598-1.866c0.376,0.526,0.598,1.17,0.598,1.866 C17.83,12.696,17.608,13.34,17.232,13.866z M12,13.866c-0.376-0.526-0.598-1.17-0.598-1.866c0-0.696,0.222-1.34,0.598-1.866 c0.376,0.526,0.598,1.17,0.598,1.866C12.598,12.696,12.376,13.34,12,13.866z M6.768,13.866C6.392,13.34,6.17,12.696,6.17,12 c0-0.696,0.222-1.34,0.598-1.866C7.144,10.66,7.366,11.304,7.366,12C7.366,12.696,7.144,13.34,6.768,13.866z M0.938,12 c0-1.775,1.439-3.214,3.214-3.214c0.736,0,1.414,0.248,1.956,0.665C5.56,10.154,5.232,11.039,5.232,12 c0,0.961,0.328,1.846,0.876,2.549c-0.542,0.416-1.22,0.665-1.956,0.665C2.377,15.214,0.938,13.775,0.938,12z M7.428,14.549 C7.976,13.846,8.304,12.961,8.304,12c0-0.961-0.328-1.846-0.876-2.549c0.542-0.416,1.22-0.665,1.956-0.665 c0.736,0,1.414,0.248,1.956,0.665c-0.549,0.704-0.876,1.588-0.876,2.549c0,0.961,0.328,1.846,0.876,2.549 c-0.542,0.416-1.22,0.665-1.956,0.665C8.648,15.214,7.97,14.966,7.428,14.549z M12.66,14.549c0.549-0.704,0.876-1.588,0.876-2.549 c0-0.961-0.328-1.846-0.876-2.55c0.542-0.416,1.22-0.665,1.956-0.665s1.414,0.248,1.956,0.665 c-0.549,0.704-0.876,1.588-0.876,2.549c0,0.961,0.328,1.846,0.876,2.549c-0.542,0.416-1.22,0.665-1.956,0.665 C13.88,15.214,13.202,14.966,12.66,14.549z M19.848,15.214c-0.736,0-1.414-0.248-1.956-0.665c0.548-0.704,0.876-1.588,0.876-2.549 c0-0.961-0.328-1.846-0.876-2.549c0.542-0.416,1.22-0.665,1.956-0.665c1.775,0,3.214,1.439,3.214,3.214 S21.623,15.214,19.848,15.214z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Audi</title><path d="M19.848,7.848c-0.992,0-1.902,0.348-2.616,0.928c-0.714-0.58-1.624-0.928-2.616-0.928 c-0.992,0-1.902,0.348-2.616,0.928c-0.714-0.58-1.624-0.928-2.616-0.928c-0.992,0-1.902,0.348-2.616,0.928 c-0.714-0.58-1.624-0.928-2.616-0.928C1.859,7.848,0,9.707,0,12s1.859,4.152,4.152,4.152c0.992,0,1.902-0.348,2.616-0.928 c0.714,0.58,1.624,0.928,2.616,0.928c0.992,0,1.902-0.348,2.616-0.928c0.714,0.58,1.624,0.928,2.616,0.928 c0.992,0,1.902-0.348,2.616-0.928c0.714,0.58,1.624,0.928,2.616,0.928C22.141,16.152,24,14.293,24,12S22.141,7.848,19.848,7.848z M17.232,13.866c-0.376-0.526-0.598-1.17-0.598-1.866c0-0.696,0.222-1.34,0.598-1.866c0.376,0.526,0.598,1.17,0.598,1.866 C17.83,12.696,17.608,13.34,17.232,13.866z M12,13.866c-0.376-0.526-0.598-1.17-0.598-1.866c0-0.696,0.222-1.34,0.598-1.866 c0.376,0.526,0.598,1.17,0.598,1.866C12.598,12.696,12.376,13.34,12,13.866z M6.768,13.866C6.392,13.34,6.17,12.696,6.17,12 c0-0.696,0.222-1.34,0.598-1.866C7.144,10.66,7.366,11.304,7.366,12C7.366,12.696,7.144,13.34,6.768,13.866z M0.938,12 c0-1.775,1.439-3.214,3.214-3.214c0.736,0,1.414,0.248,1.956,0.665C5.56,10.154,5.232,11.039,5.232,12 c0,0.961,0.328,1.846,0.876,2.549c-0.542,0.416-1.22,0.665-1.956,0.665C2.377,15.214,0.938,13.775,0.938,12z M7.428,14.549 C7.976,13.846,8.304,12.961,8.304,12c0-0.961-0.328-1.846-0.876-2.549c0.542-0.416,1.22-0.665,1.956-0.665 c0.736,0,1.414,0.248,1.956,0.665c-0.549,0.704-0.876,1.588-0.876,2.549c0,0.961,0.328,1.846,0.876,2.549 c-0.542,0.416-1.22,0.665-1.956,0.665C8.648,15.214,7.97,14.966,7.428,14.549z M12.66,14.549c0.549-0.704,0.876-1.588,0.876-2.549 c0-0.961-0.328-1.846-0.876-2.55c0.542-0.416,1.22-0.665,1.956-0.665s1.414,0.248,1.956,0.665 c-0.549,0.704-0.876,1.588-0.876,2.549c0,0.961,0.328,1.846,0.876,2.549c-0.542,0.416-1.22,0.665-1.956,0.665 C13.88,15.214,13.202,14.966,12.66,14.549z M19.848,15.214c-0.736,0-1.414-0.248-1.956-0.665c0.548-0.704,0.876-1.588,0.876-2.549 c0-0.961-0.328-1.846-0.876-2.549c0.542-0.416,1.22-0.665,1.956-0.665c1.775,0,3.214,1.439,3.214,3.214 S21.623,15.214,19.848,15.214z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/audible.svg b/assets/lib/simple-icons/icons/audible.svg
index 0c59b03c..c80a10f3 100644
--- a/assets/lib/simple-icons/icons/audible.svg
+++ b/assets/lib/simple-icons/icons/audible.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Audible icon</title><path d="M12.008 17.362L24 9.885v2.028l-11.992 7.509L0 11.912V9.886l12.008 7.477zm0-9.378c-2.709 0-5.085 1.363-6.448 3.47.111-.111.175-.175.286-.254 3.374-2.804 8.237-2.17 10.883 1.362l1.758-1.124c-1.394-2.044-3.786-3.454-6.48-3.454m0 3.47a4.392 4.392 0 0 0-3.548 1.821 3.597 3.597 0 0 1 2.139-.697c1.299 0 2.455.666 3.232 1.79l1.679-1.045c-.729-1.157-2.028-1.87-3.501-1.87M3.897 8.412c4.943-3.897 11.929-2.836 15.652 2.344l.031.032 1.822-1.125a11.214 11.214 0 0 0-9.394-5.085c-3.897 0-7.366 1.996-9.394 5.085.364-.412.824-.903 1.283-1.251"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Audible</title><path d="M12.008 17.362L24 9.885v2.028l-11.992 7.509L0 11.912V9.886l12.008 7.477zm0-9.378c-2.709 0-5.085 1.363-6.448 3.47.111-.111.175-.175.286-.254 3.374-2.804 8.237-2.17 10.883 1.362l1.758-1.124c-1.394-2.044-3.786-3.454-6.48-3.454m0 3.47a4.392 4.392 0 0 0-3.548 1.821 3.597 3.597 0 0 1 2.139-.697c1.299 0 2.455.666 3.232 1.79l1.679-1.045c-.729-1.157-2.028-1.87-3.501-1.87M3.897 8.412c4.943-3.897 11.929-2.836 15.652 2.344l.031.032 1.822-1.125a11.214 11.214 0 0 0-9.394-5.085c-3.897 0-7.366 1.996-9.394 5.085.364-.412.824-.903 1.283-1.251"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/audio-technica.svg b/assets/lib/simple-icons/icons/audio-technica.svg
deleted file mode 100644
index f70a155a..00000000
--- a/assets/lib/simple-icons/icons/audio-technica.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Audio-Technica icon</title><path d="M 12,0 A 12.007568,12.007568 0 0 0 0,12 12.034059,12.034059 0 0 0 12,24.030275 12.034059,12.034059 0 0 0 24,12 12.007568,12.007568 0 0 0 12.003784,0 Z m 0,0.90444656 A 11.09177,11.09177 0 0 1 23.099338,11.996216 c 0,6.130558 -4.964995,11.125828 -11.099338,11.125828 A 11.118259,11.118259 0 0 1 0.90823086,12 11.09177,11.09177 0 0 1 11.996216,0.90823086 Z M 12.08704,2.0662252 11.65563,3.3188269 5.9754032,19.402081 5.7710512,20.007569 H 18.440871 L 18.210029,19.402081 12.526017,3.3150427 Z m 0,2.8003785 2.009461,5.6499533 -3.027437,8.563859 H 7.050142 Z m 2.505204,7.0463573 2.535478,7.163671 h -5.097446 z"/></svg>
diff --git a/assets/lib/simple-icons/icons/audioboom.svg b/assets/lib/simple-icons/icons/audioboom.svg
index 1d3da499..559d82a8 100644
--- a/assets/lib/simple-icons/icons/audioboom.svg
+++ b/assets/lib/simple-icons/icons/audioboom.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Audioboom icon</title><path d="M12 24C5.373 24 0 18.627 0 12S5.373 0 12 0s12 5.373 12 12-5.373 12-12 12zM7.425 3.214c-.621 0-1.125.503-1.125 1.124v6a1.124 1.124 0 0 0 2.25 0v-6c0-.62-.504-1.124-1.125-1.124zm0 9.314c-.621 0-1.125.503-1.125 1.125v6a1.124 1.124 0 0 0 2.25 0v-6c0-.622-.504-1.125-1.125-1.125zm4.152-6.856c-.621 0-1.125.504-1.125 1.125v10.388a1.124 1.124 0 0 0 2.25 0V6.797c0-.621-.504-1.125-1.125-1.125zm4.151 6.856c-.62 0-1.124.503-1.124 1.125v1.056a1.124 1.124 0 1 0 2.249 0v-1.056c0-.622-.504-1.125-1.125-1.125zm0-4.37c-.62 0-1.124.503-1.124 1.124v1.056a1.124 1.124 0 0 0 2.249 0V9.282c0-.62-.504-1.124-1.125-1.124zm4.152 2.422c-.62 0-1.124.503-1.124 1.124v.574a1.124 1.124 0 1 0 2.249 0v-.574c0-.62-.504-1.124-1.125-1.124Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Audioboom</title><path d="M12 24C5.373 24 0 18.627 0 12S5.373 0 12 0s12 5.373 12 12-5.373 12-12 12zM7.425 3.214c-.621 0-1.125.503-1.125 1.124v6a1.124 1.124 0 0 0 2.25 0v-6c0-.62-.504-1.124-1.125-1.124zm0 9.314c-.621 0-1.125.503-1.125 1.125v6a1.124 1.124 0 0 0 2.25 0v-6c0-.622-.504-1.125-1.125-1.125zm4.152-6.856c-.621 0-1.125.504-1.125 1.125v10.388a1.124 1.124 0 0 0 2.25 0V6.797c0-.621-.504-1.125-1.125-1.125zm4.151 6.856c-.62 0-1.124.503-1.124 1.125v1.056a1.124 1.124 0 1 0 2.249 0v-1.056c0-.622-.504-1.125-1.125-1.125zm0-4.37c-.62 0-1.124.503-1.124 1.124v1.056a1.124 1.124 0 0 0 2.249 0V9.282c0-.62-.504-1.124-1.125-1.124zm4.152 2.422c-.62 0-1.124.503-1.124 1.124v.574a1.124 1.124 0 1 0 2.249 0v-.574c0-.62-.504-1.124-1.125-1.124Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/audiomack.svg b/assets/lib/simple-icons/icons/audiomack.svg
index 33f4093a..807cfb3a 100644
--- a/assets/lib/simple-icons/icons/audiomack.svg
+++ b/assets/lib/simple-icons/icons/audiomack.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Audiomack icon</title><path d="M.33 11.39s.54-.09.77.14c.22.23.07.71-.22.72-.3.01-.57.06-.77-.14a.443.443 0 01.22-.72zm5.88 3.26c-.05.01-.11-.02-.16-.06-.39-.53-.53-2.37-.71-2.48-.18-.11-.85 1.02-2.19.9-.55-.05-1.12-.41-1.45-.66.03-.41.03-1.39.86-1.07.51.19 1.37.72 2.13-.23.84-1.05 1.3-.74 1.57-.51.28.22.1 1.41.51 1.08.41-.33 2.08-2.39 2.08-2.39s1.29-1.29 1.49.06c.2 1.36 1.04 2.87 1.27 2.82.22-.04 2.82-5.27 3.19-5.61.37-.34 1.63-.29 1.57.57-.06.87-.19 6.25-.19 6.25s-.15 1.52.09.71c.1-.34.21-.64.34-1 .64-2.03 1.73-5.51 2.28-7.3.12-.42.23-.79.32-1.07v-.01c.03-.13.06-.23.09-.32.05-.15.08-.26.09-.28.02-.07.09-.12.19-.16.09-.06.2-.06.31-.06.31-.03.69.01 1.04.11.11 0 .22.03.32.11 0 0 .01 0 .02.01.03.02.06.05.1.1h.01c.01.02.03.05.05.07.19.29.31.81.19 1.74-.3 2.31-.53 7.07-.53 7.07s-.05.23.44-.77c.01-.04.03-.07.05-.1.03-.02.06-.04.1-.08.29-.36 1.09-.56 1.65-.56.23.03.43.09.54.16.22.33.09 1.55.09 1.55-.46.04-1.34.29-1.65.33-.31.05-.78 2.05-1.44 1.85-.66-.21-2.13-1.12-2.13-1.24 0-.11.12-1.44.15-1.79v-.07-.01c.03-.27.01-.39-.12-.12-.11.23-.58 1.72-1.11 3.34-.05.14-1.05 3.13-1.18 3.49-.15.42-.29.75-.38.91-.13.19-.32.3-.58.23-.65-.2-1.46-1.08-1.47-1.3-.02-1.24.06-7.9-.24-7.35-.32.57-2.73 4.52-2.73 4.52-.04.01-.07.01-.11.01-.17-.02-.44-.07-.51-.23 0-.01-.01-.02-.01-.03-.01-.01-.01-.02-.02-.04-.03-.11-.04-.23-.07-.33-.11-.36-.28-.88-.47-1.4-.27-.9-.56-1.82-.61-1.92-.09-.2-.22-.12-.35 0-.54.45-1.68 2.45-2.72 2.56z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Audiomack</title><path d="M.331 11.378s.5418-.089.765.1439c.2234.2332.077.7156-.2195.7237-.2965.01-.5705.063-.765-.1439-.1946-.2066-.1424-.6218.2195-.7237m5.881 3.2925c-.0522.01-.1075-.018-.164-.059-.3884-.5413-.5287-2.3923-.707-2.5025-.185-.1144-.8545 1.0255-2.1862.903-.5569-.051-1.1236-.4121-1.4573-.662.031-.4206.0364-1.4027.8659-1.0833.5038.1939 1.3667.7266 2.1245-.23.8378-1.0579 1.2999-.7506 1.577-.5206.2771.23.0925 1.4259.5058 1.0916.4133-.3343 2.082-2.4103 2.082-2.4103s1.292-1.303 1.4898.067c.1979 1.3698 1.0403 2.8877 1.2635 2.8445.2234-.043 2.8223-5.3253 3.1945-5.666.3722-.3409 1.6252-.2961 1.5657.5781-.0596.8742-.1871 6.308-.1871 6.308s-.147 1.5311.0924.7128c.0992-.3392.206-.6453.3392-1.0024.6414-2.0534 1.734-5.5613 2.2784-7.3688.1252-.4325.233-.8037.3166-1.0891l.0001-.0008a3.5925 3.5925 0 0 1 .0973-.3305c.0455-.1532.0763-.2546.0858-.2813.0243-.068.0925-.1192.1884-.157.0962-.061.1995-.064.3165-.067.3021-.027.6907.012 1.0401.1119.1018 0 .2125.037.3172.1118v.0001s.0063 0 .0151.01c.0023 0 .0048 0 .0073.01.0219.015.0573.045.0983.095.0012 0 .0025 0 .004.01.017.021.0341.045.0515.073.1952.2863.315.814.1948 1.7498-.2996 2.3354-.5316 7.1397-.5316 7.1397s-.0461.2298.4353-.782c.0167-.035.0383-.066.058-.098.026-.017.0552-.042.0913-.085.2974-.3546 1.0968-.5629 1.6512-.5586.2336.028.4293.087.5462.1609.2188.333.0897 1.562.0897 1.562-.4612.043-1.3403.2908-1.6519.3366-.3118.046-.7852 2.0699-1.4433 1.8629-.6581-.2069-2.1246-1.1268-2.1246-1.2533 0-.1102.1152-1.4546.1453-1.8016.0022-.024.004-.046.0058-.068a.152.152 0 0 1 .0014-.014l-.0002.0003c.0213-.2733.0023-.3927-.1239-.1199-.1086.2346-.581 1.7359-1.1078 3.3709-.0556.1429-1.0511 3.1558-1.1818 3.5231-.156.4261-.287.7523-.3776.921-.1378.1867-.3234.3036-.5826.2252-.6465-.1954-1.4654-1.0889-1.473-1.3106-.0155-1.2503.0608-7.973-.2423-7.4127-.311.5744-2.73 4.5608-2.73 4.5608-.0405.01-.0705.01-.1062.01-.1712-.019-.4366-.074-.51-.2384-.004-.01-.0094-.018-.0129-.028-.0035-.01-.0075-.022-.0135-.04-.0329-.1097-.0463-.2289-.0753-.3265-.1082-.3652-.2813-.8886-.463-1.421-.2784-.9079-.5654-1.8366-.6127-1.9391-.0923-.2007-.2268-.116-.3475-.0002-.54.458-1.6868 2.4793-2.7225 2.5898"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/audiotechnica.svg b/assets/lib/simple-icons/icons/audiotechnica.svg
new file mode 100644
index 00000000..63364119
--- /dev/null
+++ b/assets/lib/simple-icons/icons/audiotechnica.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Audio-Technica</title><path d="M12 0A11.992 11.992 0 00.015 11.985 12.019 12.019 0 0012 24a12.019 12.019 0 0011.985-12.015A11.992 11.992 0 0012.004 0zm0 .903a11.078 11.078 0 0111.085 11.078c0 6.123-4.958 11.112-11.085 11.112A11.104 11.104 0 01.922 11.985 11.078 11.078 0 0111.996.907zm.087 1.16l-.43 1.252-5.674 16.063-.204.604h12.654l-.23-.604L12.524 3.31zm0 2.797l2.007 5.643-3.024 8.553H7.056zm2.502 7.038l2.532 7.155h-5.09z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/aurelia.svg b/assets/lib/simple-icons/icons/aurelia.svg
index eb092a43..242c7e8e 100644
--- a/assets/lib/simple-icons/icons/aurelia.svg
+++ b/assets/lib/simple-icons/icons/aurelia.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Aurelia icon</title><path d="M15.716 4.636L13.49 6.122l-2.295-3.439 2.228-1.486zM17.527 14.967l3.806 5.703-4.533 3.025-3.806-5.703-.664-.995 4.533-3.025zM11.817 18.777l.838 1.256-3.45 2.303-1.503-2.25.754-.504 2.697-1.8zM19.413 12.27l.968-.645 1.501 2.25-2.227 1.487-.838-1.256 1.26-.84zm-.596 1.836l-.664-.995 1.26-.84.664.994zM3.792 12.593l-.753.503L.744 9.657l3.45-2.302 1.61 2.41-2.698 1.8 2.697-1.8.686 1.029zM11.513 5.954l.687 1.029-4.534 3.025L6.98 8.98 3.21 3.33 7.742.305zM14.749 5.282l-1.26.84-.686-1.028-1.609-2.41 2.228-1.487 2.295 3.439zM9.12 20.577l-.664-.995 2.697-1.8.664.995zM18.817 14.106l-.664-.995 1.26-.84.664.994zM3.792 12.593l-.686-1.028 2.697-1.8.686 1.029zM13.489 6.122l-.686-1.028 1.26-.84.686 1.028zM17.527 14.967l-4.533 3.025-.664-.995 4.533-3.025zM11.513 5.954l.687 1.029-4.534 3.025L6.98 8.98zM2.507 5.132l.855 1.283-1.282.855-.856-1.282zM7.127 20.505l.856 1.283-1.282.855-.856-1.282zM3.754 21.797L0 16.125 20.063 2.706 24 8.287z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Aurelia</title><path d="M15.716 4.636L13.49 6.122l-2.295-3.439 2.228-1.486zM17.527 14.967l3.806 5.703-4.533 3.025-3.806-5.703-.664-.995 4.533-3.025zM11.817 18.777l.838 1.256-3.45 2.303-1.503-2.25.754-.504 2.697-1.8zM19.413 12.27l.968-.645 1.501 2.25-2.227 1.487-.838-1.256 1.26-.84zm-.596 1.836l-.664-.995 1.26-.84.664.994zM3.792 12.593l-.753.503L.744 9.657l3.45-2.302 1.61 2.41-2.698 1.8 2.697-1.8.686 1.029zM11.513 5.954l.687 1.029-4.534 3.025L6.98 8.98 3.21 3.33 7.742.305zM14.749 5.282l-1.26.84-.686-1.028-1.609-2.41 2.228-1.487 2.295 3.439zM9.12 20.577l-.664-.995 2.697-1.8.664.995zM18.817 14.106l-.664-.995 1.26-.84.664.994zM3.792 12.593l-.686-1.028 2.697-1.8.686 1.029zM13.489 6.122l-.686-1.028 1.26-.84.686 1.028zM17.527 14.967l-4.533 3.025-.664-.995 4.533-3.025zM11.513 5.954l.687 1.029-4.534 3.025L6.98 8.98zM2.507 5.132l.855 1.283-1.282.855-.856-1.282zM7.127 20.505l.856 1.283-1.282.855-.856-1.282zM3.754 21.797L0 16.125 20.063 2.706 24 8.287z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/auth0.svg b/assets/lib/simple-icons/icons/auth0.svg
index 82576cbf..6b7b2705 100644
--- a/assets/lib/simple-icons/icons/auth0.svg
+++ b/assets/lib/simple-icons/icons/auth0.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Auth0 icon</title><path d="M21.98 7.448L19.62 0H4.347L2.02 7.448c-1.352 4.312.03 9.206 3.815 12.015L12.007 24l6.157-4.552c3.755-2.81 5.182-7.688 3.815-12.015l-6.16 4.58 2.343 7.45-6.157-4.597-6.158 4.58 2.358-7.433-6.188-4.55 7.63-.045L12.008 0l2.356 7.404 7.615.044z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Auth0</title><path d="M21.98 7.448L19.62 0H4.347L2.02 7.448c-1.352 4.312.03 9.206 3.815 12.015L12.007 24l6.157-4.552c3.755-2.81 5.182-7.688 3.815-12.015l-6.16 4.58 2.343 7.45-6.157-4.597-6.158 4.58 2.358-7.433-6.188-4.55 7.63-.045L12.008 0l2.356 7.404 7.615.044z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/authy.svg b/assets/lib/simple-icons/icons/authy.svg
index e5381463..07ba6e35 100644
--- a/assets/lib/simple-icons/icons/authy.svg
+++ b/assets/lib/simple-icons/icons/authy.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Authy icon</title><path d="M12 0A12 12 0 0 0 0 12a12 12 0 0 0 12 12 12 12 0 0 0 12-12A12 12 0 0 0 12 0zm3.42 5.338c.274 0 .551.105.769.315l2.862 2.862c2.054 2.039 2.084 5.35.105 7.449a.21.21 0 0 1-.045.06l-.03.03-.03.03c-.015.015-.045.03-.06.045-2.098 1.978-5.41 1.948-7.463-.105l-2.863-2.863a1.05 1.05 0 0 1 0-1.499 1.05 1.05 0 0 1 1.5 0l2.861 2.863a3.23 3.23 0 0 0 4.542.03 3.244 3.244 0 0 0-.03-4.541l-2.863-2.862a1.05 1.05 0 0 1 0-1.5c.203-.209.472-.314.746-.314zM8.758 6.397a5.33 5.33 0 0 1 3.715 1.564l2.863 2.862c.42.42.42 1.08 0 1.5-.42.419-1.08.419-1.5 0L10.975 9.46a3.249 3.249 0 0 0-4.558-.015 3.243 3.243 0 0 0 .03 4.54l2.863 2.863c.42.42.42 1.08 0 1.499a1.05 1.05 0 0 1-1.499 0L4.95 15.484c-2.054-2.053-2.084-5.365-.105-7.463.015-.03.03-.045.045-.06l.03-.03.03-.03c.015-.015.045-.03.06-.045a5.355 5.355 0 0 1 3.748-1.46z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Authy</title><path d="M12 0A12 12 0 0 0 0 12a12 12 0 0 0 12 12 12 12 0 0 0 12-12A12 12 0 0 0 12 0zm3.42 5.338c.274 0 .551.105.769.315l2.862 2.862c2.054 2.039 2.084 5.35.105 7.449a.21.21 0 0 1-.045.06l-.03.03-.03.03c-.015.015-.045.03-.06.045-2.098 1.978-5.41 1.948-7.463-.105l-2.863-2.863a1.05 1.05 0 0 1 0-1.499 1.05 1.05 0 0 1 1.5 0l2.861 2.863a3.23 3.23 0 0 0 4.542.03 3.244 3.244 0 0 0-.03-4.541l-2.863-2.862a1.05 1.05 0 0 1 0-1.5c.203-.209.472-.314.746-.314zM8.758 6.397a5.33 5.33 0 0 1 3.715 1.564l2.863 2.862c.42.42.42 1.08 0 1.5-.42.419-1.08.419-1.5 0L10.975 9.46a3.249 3.249 0 0 0-4.558-.015 3.243 3.243 0 0 0 .03 4.54l2.863 2.863c.42.42.42 1.08 0 1.499a1.05 1.05 0 0 1-1.499 0L4.95 15.484c-2.054-2.053-2.084-5.365-.105-7.463.015-.03.03-.045.045-.06l.03-.03.03-.03c.015-.015.045-.03.06-.045a5.355 5.355 0 0 1 3.748-1.46z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/autodesk.svg b/assets/lib/simple-icons/icons/autodesk.svg
index b8d19658..db43f09d 100644
--- a/assets/lib/simple-icons/icons/autodesk.svg
+++ b/assets/lib/simple-icons/icons/autodesk.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Autodesk icon</title><path d="m14.574 1.0203c-0.097-0.096997-0.29099-0.58198-0.97097-0.58198h-6.7038s0.97097 0.096997 1.36 1.068c0 0 1.069 2.5269 2.0399 4.9558 2.8179 6.6068 7.1898 17.099 7.1898 17.099h6.5108c0.097-0.097-9.3267-22.443-9.4247-22.54zm-8.8407 0.87497-5.3438 12.631c-0.29199 0.87497-0.097997 1.9439 1.457 1.9439h4.1779l3.6919-8.8417c-1.166-2.9149-2.1359-5.2478-2.1359-5.2478-0.096997-0.29199-0.38899-1.069-0.97197-1.069-0.58298 0-0.77698 0.48598-0.87397 0.58298zm-0.097997 15.643h-4.4689c-0.77698 0-1.166-0.48598-1.166-0.48598 0.77698 1.36 3.0119 5.6358 3.0119 5.6358 0.38899 0.48598 0.77698 0.77698 1.36 0.77698 1.263 0 3.2069-1.263 3.2069-1.263l7.4808-4.6639z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Autodesk</title><path d="M6.898.437S7.87.534 8.26 1.505c0 0 1.069 2.526 2.04 4.955 1.42 3.33 3.22 7.615 4.67 11.078H1.167c-.778 0-1.166-.486-1.166-.486.777 1.36 3.012 5.636 3.012 5.636.388.486.777.776 1.36.776 1.264 0 3.208-1.262 3.208-1.262l7.409-4.619c1.412 3.372 2.5 5.98 2.5 5.98H24c.097-.097-9.327-22.446-9.424-22.544-.097-.097-.292-.582-.972-.582zm-.29.875c-.583 0-.778.485-.875.582L.39 14.526c-.291.874-.097 1.943 1.458 1.943h4.177l3.693-8.841A453.32 453.32 0 0 0 7.58 2.38c-.097-.291-.389-1.068-.972-1.068z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/autohotkey.svg b/assets/lib/simple-icons/icons/autohotkey.svg
new file mode 100644
index 00000000..669855aa
--- /dev/null
+++ b/assets/lib/simple-icons/icons/autohotkey.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>AutoHotkey</title><path d="M20.514.508V.51H1.803C1.053.51.079 1.135 0 2.27v17.133h.002v2.325c.08 1.136 1.05 1.763 1.8 1.763h1.505l.002-.002h18.869c1.256-.053 1.766-1.066 1.822-1.699v-3.023h-.002V2.209c-.056-.633-.567-1.648-1.824-1.701h-1.66zM3.412 1.623h17.154c.898 0 1.618.72 1.618 1.617v16.64c0 .898-.72 1.62-1.618 1.62H3.412a1.616 1.616 0 01-1.619-1.62V3.24c0-.897.722-1.617 1.62-1.617zm3.315 12.412l-1.895 5.037h.703l.526-1.467h2.02l.497 1.467h.744l-1.824-5.037h-.771zm8.43.008v5.037h.679v-1.767l.793-.758 1.76 2.525h.884l-2.154-3.002 2.098-2.035h-.94l-2.441 2.441v-2.441h-.68zm-5.153.027v5.037h.682v-2.351h2.628v2.351h.682V14.07h-.682v2.084h-2.628V14.07h-.682zm-2.926.717h.014l.742 2.217H6.271l.807-2.217z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/automatic.svg b/assets/lib/simple-icons/icons/automatic.svg
deleted file mode 100644
index 66ac2c68..00000000
--- a/assets/lib/simple-icons/icons/automatic.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Automatic icon</title><path d="M12 6.768v.002-1.237c-.485.033-.754.293-.99.71L5.87 16.72h2.464l-.753-.96.654-1.363.005.007L12 6.774v-.006zM10.526 13.123h2.946L12 10.076M8.233 14.416h.017l-.01-.013M13.473 13.123v.002M21.496 5.066L13.26.308c-.693-.4-1.827-.4-2.52 0L2.504 5.066c-.693.398-1.26 1.38-1.26 2.182v9.507c0 .802.567 1.782 1.26 2.18l8.236 4.757c.693.4 1.826.4 2.52 0l8.235-4.768c.692-.39 1.26-1.38 1.26-2.174V7.246c0-.8-.567-1.78-1.26-2.18zm-6.066 12.05l-.687-1.384h-5.5l-.673 1.384H5.287l5.396-11.033c.305-.607.777-.9 1.317-.9s1.034.328 1.316.89l5.396 11.043H15.43zM12 6.77V9.244l2.518 5.173H8.25l.758.94h5.972l.674 1.35h2.474l-1.708-.99v.04L12 6.77"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/automattic.svg b/assets/lib/simple-icons/icons/automattic.svg
new file mode 100644
index 00000000..32bd0853
--- /dev/null
+++ b/assets/lib/simple-icons/icons/automattic.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Automattic</title><path d="M14.521 8.11a1.497 1.497 0 01.433 2.102l-3.511 5.441a1.496 1.496 0 01-2.068.457 1.507 1.507 0 01-.44-2.08l3.513-5.44c.215-.335.554-.57.943-.655.39-.085.796-.04 1.13.175z M11.98 23.03C4.713 23.03 0 17.79 0 12.338v-.676C0 6.117 4.713.97 11.98.97 19.246.97 24 6.117 24 11.662v.676c0 5.453-4.713 10.692-12.02 10.692zm8.133-11.31c0-3.974-2.888-7.51-8.133-7.51-5.245 0-8.087 3.542-8.087 7.51v.497c0 3.974 2.888 7.578 8.087 7.578 5.198 0 8.133-3.604 8.133-7.578v-.497z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/autoprefixer.svg b/assets/lib/simple-icons/icons/autoprefixer.svg
new file mode 100644
index 00000000..b88cb175
--- /dev/null
+++ b/assets/lib/simple-icons/icons/autoprefixer.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Autoprefixer</title><path d="M5.87 21.045h2.923l.959-3.068h4.503l.949 3.068h2.922L11.94 2.955l-6.07 18.09zm6.162-10.12 1.543 4.917h-3.153l1.553-4.916h.057zM24 17.617l-.378-1.182-6.266-.59.733 2.127 5.91-.354zM6.644 15.843l-6.266.591L0 17.616l5.911.355.733-2.128z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/autotask.svg b/assets/lib/simple-icons/icons/autotask.svg
deleted file mode 100644
index a104fc5a..00000000
--- a/assets/lib/simple-icons/icons/autotask.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Autotask icon</title><path d="M17.93 11.626l2.782 6.988h-4.298l-1.825-4.736-9.885 6.667L1 12.6h.815l4.39 3.418 7.61-4.148-1.085-2.82-1.168 2.481-4.938 2.716 3.553-9.342h5.077l2.022 5.08L24 6.32V0H0v24h24V7.532z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/avast.svg b/assets/lib/simple-icons/icons/avast.svg
new file mode 100644
index 00000000..e5f8e066
--- /dev/null
+++ b/assets/lib/simple-icons/icons/avast.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Avast</title><path d="M10.2941 2.991a3.0286 3.0286 0 0 1 4.4499 1.2039l7.0018 14.8042a11.937 11.937 0 0 0 2.2539-6.9131C24.0464 5.4569 18.7112.047 12.0834.0004 5.4556-.0463.047 5.2889.0004 11.9167a11.9356 11.9356 0 0 0 2.2213 7.0344l.2813-.0613 4.5692-1.008c.1287-.0286.1967.1454.084.2127L3.3736 20.337a11.9563 11.9563 0 0 0 8.5431 3.6625c3.76.0267 7.1258-1.68 9.3444-4.3705L9.8095 7.5735a3.0272 3.0272 0 0 1 .4846-4.5826zm2.1493 13.6089-7.3731.64a1.302 1.302 0 1 1 .1866-2.5666l7.2031 1.6972c.1287.0314.114.2174-.0166.2294zM9.03 10.116l8.9404 7.2324c.102.0827.01.2447-.1133.198L7.1035 13.4713a1.9593 1.9593 0 1 1 1.9266-3.3552z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/aventrix.svg b/assets/lib/simple-icons/icons/aventrix.svg
deleted file mode 100644
index 4f36d68c..00000000
--- a/assets/lib/simple-icons/icons/aventrix.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Aventrix icon</title><path d="M12 24C5.372 24 0 18.628 0 12S5.372 0 12 0s12 5.372 12 12-5.372 12-12 12zm5.371-8.138c-.23.161-.644.322-1.081.322-.46 0-.805-.184-.805-.851v-5.011c0-3.149-1.403-4.321-4.139-4.321-1.517 0-2.875.367-3.656.827-.322.529-.391 1.425-.23 2a6.782 6.782 0 0 1 3.518-1.012c1.793 0 2.53.805 2.53 2.713v.598c-.667-.275-1.541-.367-2.299-.367-2.599 0-4.599 1.103-4.599 3.793 0 2.506 1.724 3.448 3.702 3.448 1.518 0 2.575-.483 3.242-1.357h.092c.184.851.782 1.357 1.816 1.357h.009c.557 0 1.077-.154 1.522-.421l-.013.007c.299-.414.437-1.126.391-1.724zm-6.554.321c-1.241 0-2.207-.529-2.207-1.724 0-1.219.989-2.069 2.897-2.069a5.76 5.76 0 0 1 2 .345v2.253c-.598.874-1.702 1.195-2.69 1.195z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/awesomelists.svg b/assets/lib/simple-icons/icons/awesomelists.svg
index 86372189..7b81a703 100644
--- a/assets/lib/simple-icons/icons/awesomelists.svg
+++ b/assets/lib/simple-icons/icons/awesomelists.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Awesome Lists icon</title><path d="M23.996 10.648l-6.153-5.644-.865.944 5.127 4.7H1.895l5.127-4.705L6.157 5 .004 10.648H0v3.72c0 1.682 1.62 3.052 3.61 3.052h3.794c1.99 0 3.61-1.37 3.61-3.051v-2.445h1.968v2.445c0 1.681 1.62 3.051 3.61 3.051h3.794c1.99 0 3.61-1.37 3.61-3.051v-3.72z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Awesome Lists</title><path d="M24 11.438l-6.154-5.645-.865.944 5.128 4.7H1.895l5.128-4.705-.865-.943-6.154 5.649H0v3.72c0 1.683 1.62 3.053 3.61 3.053h3.795c1.99 0 3.61-1.37 3.61-3.051v-2.446h1.97v2.446c0 1.68 1.62 3.051 3.61 3.051h3.794c1.99 0 3.61-1.37 3.61-3.051v-3.721z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/awesomewm.svg b/assets/lib/simple-icons/icons/awesomewm.svg
index 9a922ec6..992b6b61 100644
--- a/assets/lib/simple-icons/icons/awesomewm.svg
+++ b/assets/lib/simple-icons/icons/awesomewm.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>awesomeWM icon</title><path d="M0 24V8.25h16.5V7.5H0V0h24v24h-7.5v-8.25h-9v.75h8.25V24z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>awesomeWM</title><path d="M0 24V8.25h16.5V7.5H0V0h24v24h-7.5v-8.25h-9v.75h8.25V24z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/awsamplify.svg b/assets/lib/simple-icons/icons/awsamplify.svg
new file mode 100644
index 00000000..7c57ae46
--- /dev/null
+++ b/assets/lib/simple-icons/icons/awsamplify.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>AWS Amplify</title><path d="M5.223 17.905h6.76l1.731 3.047H0l4.815-8.344 2.018-3.494 1.733 3.002zm2.52-10.371L9.408 4.65l9.415 16.301h-3.334zm2.59-4.486h3.33L24 20.952h-3.334z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/awslambda.svg b/assets/lib/simple-icons/icons/awslambda.svg
new file mode 100644
index 00000000..e02e27ee
--- /dev/null
+++ b/assets/lib/simple-icons/icons/awslambda.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>AWS Lambda</title><path d="M4.9855 0c-.2941.0031-.5335.2466-.534.5482L4.446 5.456c0 .1451.06.2835.159.3891a.5322.5322 0 0 0 .3806.1562h3.4282l8.197 17.6805a.5365.5365 0 0 0 .4885.3181h5.811c.2969 0 .5426-.2448.5426-.5482V18.544c0-.3035-.2392-.5482-.5425-.5482h-2.0138L12.7394.3153C12.647.124 12.4564 0 12.2452 0h-7.254Zm.5397 1.0907h6.3678l8.16 17.6804a.5365.5365 0 0 0 .4885.3181h1.8178v3.8173H17.437L9.2402 5.226a.536.536 0 0 0-.4885-.318H5.5223Zm2.0137 8.2366c-.2098.0011-.3937.1193-.4857.3096L.6002 23.2133a.5506.5506 0 0 0 .0313.5282.5334.5334 0 0 0 .4544.25h6.169a.5468.5468 0 0 0 .497-.3096l3.38-7.166a.5405.5405 0 0 0-.0029-.4686L8.036 9.637a.5468.5468 0 0 0-.4942-.3096Zm.0057 1.8036 2.488 5.1522-3.1214 6.6206H1.9465Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/azureartifacts.svg b/assets/lib/simple-icons/icons/azureartifacts.svg
index 5a50ec20..c8a16259 100644
--- a/assets/lib/simple-icons/icons/azureartifacts.svg
+++ b/assets/lib/simple-icons/icons/azureartifacts.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Azure Artifacts icon</title><path d="M5.2 0c-.552 0-1 .43-1 .958V11.5h15.6V.958c0-.529-.448-.958-1-.958H5.2zm3.2 2.3h2.4c.331 0 .6.257.6.575a.588.588 0 0 1-.6.575H8.4a.588.588 0 0 1-.6-.575c0-.318.269-.575.6-.575zM1.064 12C.476 12 0 12.448 0 13v10c0 .552.476 1 1.064 1H8.8a1 1 0 0 1-1-1v-8h-3a.6.6 0 1 1 0-1.201h3V12H1.064z M23 12H8.299v11c0 .552.477 1 1.064 1H23a1 1 0 0 0 1-1V13a1 1 0 0 0-1-1zm-9.8 10.2H9.6V21h3.6v1.2zm2.4-1.8h-6v-1.2h6v1.2zM15 15h-2.4a.6.6 0 0 1 0-1.201H15A.602.602 0 0 1 15 15z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Azure Artifacts</title><path d="M5.2 0c-.552 0-1 .43-1 .958V11.5h15.6V.958c0-.529-.448-.958-1-.958H5.2zm3.2 2.3h2.4c.331 0 .6.257.6.575a.588.588 0 0 1-.6.575H8.4a.588.588 0 0 1-.6-.575c0-.318.269-.575.6-.575zM1.064 12C.476 12 0 12.448 0 13v10c0 .552.476 1 1.064 1H8.8a1 1 0 0 1-1-1v-8h-3a.6.6 0 1 1 0-1.201h3V12H1.064z M23 12H8.299v11c0 .552.477 1 1.064 1H23a1 1 0 0 0 1-1V13a1 1 0 0 0-1-1zm-9.8 10.2H9.6V21h3.6v1.2zm2.4-1.8h-6v-1.2h6v1.2zM15 15h-2.4a.6.6 0 0 1 0-1.201H15A.602.602 0 0 1 15 15z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/azuredataexplorer.svg b/assets/lib/simple-icons/icons/azuredataexplorer.svg
new file mode 100644
index 00000000..c8409d0b
--- /dev/null
+++ b/assets/lib/simple-icons/icons/azuredataexplorer.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Azure Data Explorer</title><path d="M23.1765.0176a.8032.8032 0 00-.0235.002h-8.0679L7.5426 7.562l8.8666 8.8667 7.5895-7.5894V.8222a.8032.8032 0 00-.8222-.8046zm-21.245.002a.8032.8032 0 00-.5644 1.365l5.4685 5.4705L13.671.0195zm14.8937 2.326c.137 0 .2721.0533.377.1582l.9374.9355a.535.535 0 010 .7577l-.9374.9355a.5326.5326 0 01-.7558 0l-.9375-.9355a.535.535 0 010-.7577l.9375-.9355a.5353.5353 0 01.3788-.1582zM13.4426 5.734c.1369 0 .274.0513.3789.1562l.9355.9374a.5326.5326 0 010 .7559l-.9355.9374a.535.535 0 01-.7578 0l-.9355-.9374a.5326.5326 0 010-.7559l.9355-.9374a.5332.5332 0 01.379-.1562zm6.773.002a.5355.5355 0 01.3731.1581l.9296.9296a.5355.5355 0 010 .7617l-.9296.9297a.5355.5355 0 01-.7617 0l-.9296-.9297a.5355.5355 0 010-.7617l.9296-.9296a.5355.5355 0 01.3887-.1582zm-3.3845 3.3786c.1369 0 .272.0533.377.1582l.9374.9355a.535.535 0 010 .7578l-.9375.9374a.5326.5326 0 01-.7558 0l-.9374-.9374a.535.535 0 010-.7578l.9374-.9355a.5353.5353 0 01.3789-.1582zm-11.015.7226a.3799.3799 0 00-.2695.1114L.1172 15.378a.3808.3808 0 000 .539l1.1562 1.1562c.149.149.388.149.537 0l5.4314-5.4314a.3785.3785 0 000-.537L6.0856 9.9487a.3799.3799 0 00-.2695-.1114zm18.1826.416l-6.8825 6.8825 5.4724 5.4704a.8032.8032 0 001.41-.5625zM9.1792 13.265a.382.382 0 00-.2695.1133L.1113 22.1746a.3808.3808 0 000 .539l1.1562 1.1562c.149.149.39.149.539 0l8.7964-8.7984a.3808.3808 0 000-.539l-1.1542-1.1542a.382.382 0 00-.2695-.1133zm3.365 3.3475a.3799.3799 0 00-.2695.1113L6.8434 22.155a.3785.3785 0 000 .5371l1.1562 1.1562c.149.149.39.149.539 0l5.4294-5.4313a.3785.3785 0 000-.5371l-1.1562-1.1562a.3755.3755 0 00-.2676-.1113Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/azuredevops.svg b/assets/lib/simple-icons/icons/azuredevops.svg
index 1ac6c8ec..de40f7c3 100644
--- a/assets/lib/simple-icons/icons/azuredevops.svg
+++ b/assets/lib/simple-icons/icons/azuredevops.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Azure DevOps icon</title><path d="M0 8.899l2.247-2.966 8.405-3.416V.045l7.37 5.393L2.966 8.36v8.224L0 15.73zm24-4.45v14.652L18.247 24l-9.303-3.056V24l-5.978-7.416 15.057 1.798V5.438z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Azure DevOps</title><path d="M0 8.877L2.247 5.91l8.405-3.416V.022l7.37 5.393L2.966 8.338v8.225L0 15.707zm24-4.45v14.651l-5.753 4.9-9.303-3.057v3.056l-5.978-7.416 15.057 1.798V5.415z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/azurefunctions.svg b/assets/lib/simple-icons/icons/azurefunctions.svg
index 89409d33..89fbffe7 100644
--- a/assets/lib/simple-icons/icons/azurefunctions.svg
+++ b/assets/lib/simple-icons/icons/azurefunctions.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Azure Functions icon</title><path d="M17.515 5.106c-.205-.204-.612-.204-.817 0-.102.103-.204.256-.204.409 0 .153.05.306.204.408l5.412 5.362a.69.69 0 0 1 0 .868l-5.566 5.515a.693.693 0 0 0 0 .868c.255.204.614.204.817 0l6.485-6.383a.69.69 0 0 0 0-.868l-6.331-6.179zM1.992 12.153a.69.69 0 0 1 0-.868l5.31-5.362c.102-.102.204-.255.204-.408a.463.463 0 0 0-.204-.409c-.205-.204-.612-.204-.817 0L.154 11.285a.69.69 0 0 0 0 .868l6.433 6.383c.255.204.614.204.817 0a.69.69 0 0 0 0-.868l-5.412-5.515zm5.923 10.264L17.617 8.63h-4.699l4.597-7.047H10.67L6.997 12.051l4.493.051-3.574 10.315z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Azure Functions</title><path d="M10.537.904L6.602 12.04l4.798.037-3.748 11.018v.002L17.996 8.39h-5.022L17.847.903h-3.824zM6.903 4.91a.585.585 0 0 0-.412.17L.155 11.285a.682.682 0 0 0 0 .865l6.448 6.396a.625.625 0 0 0 .824 0 .638.638 0 0 0 0-.865l-5.436-5.53a.641.641 0 0 1 0-.865l5.324-5.344a.574.574 0 0 0 0-.865.586.586 0 0 0-.412-.169zm10.193 0a.585.585 0 0 0-.412.17.572.572 0 0 0 0 .864l5.435 5.343a.64.64 0 0 1 0 .866l-5.548 5.53a.64.64 0 0 0 0 .865.625.625 0 0 0 .824 0l6.45-6.396a.68.68 0 0 0 0-.865l-6.337-6.208a.585.585 0 0 0-.412-.169z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/azurepipelines.svg b/assets/lib/simple-icons/icons/azurepipelines.svg
index 83454b23..d4e81af2 100644
--- a/assets/lib/simple-icons/icons/azurepipelines.svg
+++ b/assets/lib/simple-icons/icons/azurepipelines.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Azure Pipelines icon</title><path d="M1.8 18H0v6h6v-1.8H1.8zM23 0h-8.93a2 2 0 0 0-1.67.89L9 5.99H1a1 1 0 0 0-1 1v5.5l3.5 3.61 1.2-1.29 1.5 1.5L5 17.53l1.48 1.48 1.22-1.22 1.5 1.51L8 20.5l3.5 3.5H17a1 1 0 0 0 1-1v-8l5.11-3.4A2 2 0 0 0 24 9.92V1a1 1 0 0 0-1-1zm-5 9a3 3 0 1 1 0-6 3 3 0 0 1 0 6z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Azure Pipelines</title><path d="M1.7997 22.1998h4.2001V24H.0004v-6.0002h1.7993v4.2zM12.6229 9.8975l-7.6353 7.6353 1.4792 1.4792 7.6345-7.6362-1.4784-1.4783zM4.365 15.1793l-.391-.3908c-.5042-.5042-.5828-1.3004-.1869-1.8934l4.6036-6.8958H.9979c-.5513.0014-.9975.4487-.9975 1v5.5002l3.5021 3.6036.8625-.9238zM23.9996.9999v8.9306a2 2 0 0 1-.8893 1.6632l-12.2834 8.2005a.9999.9999 0 0 1-1.2622-.1246L8.04 18.1457c.3313-.3313 6.4656-6.4672 6.7684-6.7698l-2.1855-2.1855L5.8533 15.96l-1.5258-1.525a1.0001 1.0001 0 0 1-.1246-1.2623L12.4034.8893A2 2 0 0 1 14.0666 0h8.9331c.5522 0 .9999.4477.9999.9999zm-2.9997 5.0003c0-1.6567-1.343-2.9997-2.9997-2.9997s-2.9997 1.343-2.9997 2.9997 1.343 2.9997 2.9997 2.9997 2.9997-1.343 2.9997-2.9997zM10.272 20.4625c-.4008 0-.7776-.156-1.0609-.4392l-.368-.3679-.8435.8417 3.4996 3.4996h5.5003c.5522 0 .9999-.4477.9999-.9999v-7.3899L11.1045 20.21a1.4944 1.4944 0 0 1-.8325.2525z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/babel.svg b/assets/lib/simple-icons/icons/babel.svg
index dcf133a9..796c2bb0 100644
--- a/assets/lib/simple-icons/icons/babel.svg
+++ b/assets/lib/simple-icons/icons/babel.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Babel icon</title><path d="M15.76 0c-1.603.147-3.719.713-6.317 1.719a22.366 22.366 0 01-2.44 1.539l.01.158c.064 0 .136-.043.24-.096.106-.01.169.032.169.137l.168-.094.084-.011.01.074c.01.073-.566.523-1.707 1.33l.093.146-.084.012-.177-.064c0 .052-.073.085-.24.095l.01.084.189.21a.673.673 0 01-.252-.053c-.367.031-.734.303-1.09.806l.094.147c.314-.283.492-.43.544-.43l.022.23c-.052 0-.136.042-.24.094l.199.295A5.86 5.86 0 016.29 5.291c.23.063.346.125.346.209l.168-.01c1.225-.911 2.44-1.562 3.644-1.97l.012.158c-.22.335-.377.501-.461.511.01.116.052.21.115.305.021.21-.524 1.583-1.635 4.139-2.535 5.93-4.651 10.307-6.359 13.156 0 .052.041.136.094.23.419-.104.691-.197.806-.302l.096-.012.01.158.158-.011.166-.094c0 .052.063.073.168.062l.012.159c.01.157-.075.397-.274.722-.178.2-.355.607-.554 1.225l.01.074.158-.01c.68-.764 1.204-1.52 1.56-2.254 2.001-.586 3.52-1.162 4.578-1.728 1.058-.094 1.876-.365 2.42-.826l-.011-.084-.399.115-.094.01-.01-.084c.776-.116 1.32-.293 1.614-.524 1.519-1.173 2.66-2 3.435-2.492 2.4-1.76 3.531-3.457 3.395-5.07-.01-.168-.545-.828-1.582-1.98-.021-.22.345-.535 1.078-.954l2.086-1.834c.46-.597.744-1.56.838-2.89l-.031-.315c-.084-.932-.756-1.687-2.034-2.264C19.06.303 17.708.031 15.76 0zm2.525 1.037c1.55.063 2.347.335 2.389.817l-.063.158-2.326-.975zm-1.482 1.317c1.063-.016 1.617.267 1.672.863l.156-.012-.031-.398.168-.01c.408.22.627.492.648.816.021.22-.094.494-.355.819-.105.01-.168-.064-.178-.221l-.168.012-.041.47c-.702 1.048-1.205 1.582-1.52 1.614-.283.387-.462.587-.535.597-.22.262-.816.712-1.8 1.34-.325.032-1.531.493-3.616 1.404a.595.595 0 00-.334-.052l-.012-.147c-.02-.304.107-.681.41-1.142.158-.86.335-1.352.534-1.467l1.738-3.906c-.02-.241.347-.43 1.111-.555l.252-.022.02.221a50.387 50.387 0 011.394-.2c.173-.014.335-.022.487-.024zm3.619.39h.027c.139.012.288.263.446.744l.01.147c-.085.01-.24-.242-.471-.744l-.012-.147zm-9.836 2.483h.072l.022.23c-.074.01-.177.116-.303.336l-.012-.156c.147-.178.22-.316.22-.41zM5.6 5.354l.01.072c-.053 0-.136.043-.24.095l-.085.01-.01-.146.325-.031zM9.885 6.86l.031.315-.084.01-.031-.313.084-.012zm-.2.567c-.02.262-.084.397-.22.408l-.084.01c.094-.178.147-.303.137-.397l.168-.021zm-.345.816l.01.074-.147.25-.158.012-.01-.074c.157-.01.231-.093.22-.25l.085-.012zm-.358.735l-.04.386-.085.01-.03-.387.155-.01zm8.497.28l.345.212c.01.104-.042.167-.146.177-.147-.094-.262-.136-.346-.136l-.021-.23.168-.022zm-6.653.891l.012.147-.326.033-.01-.148.324-.032zm5.363.545c.23.105.347.21.358.293l.01.075c-.22.02-.42-.095-.608-.346l.24-.022zm2.6.252c.178.074.261.148.272.221l.052.617c-.073.168-.146.252-.23.252l-.094-1.09zm-4.195.065c.84-.014 1.482.184 1.922.605l.03.315c-.376 1.09-.795 1.719-1.245 1.918l-2.096 1.666c-1.56 1.026-2.4 1.538-2.525 1.548-2.483 1.373-4.032 2.075-4.63 2.127l-.095.01c.084-.293 1.185-2.555 3.322-6.808.943-.084 2.43-.525 4.452-1.32l.492-.042c.128-.01.253-.017.373-.02zm-3.055.49l.01.074-.334.031-.012-.074.336-.031zm-5.226 5.07c-.105.535-.221.808-.336.819l-.01-.075c-.021-.272.094-.513.346-.744zm7.101.336l.01.147c.01.063-.23.261-.701.607-1.394.681-2.21 1.152-2.452 1.393-1.508.523-2.252.849-2.242.974-1.34.535-2.22.923-2.638 1.164-.095.01-.241-.031-.43-.115-.021-.272.093-.494.365-.672.23-.02.463.011.672.106.251-.126.68-.274 1.299-.42l-.012-.156-.492.04c.063-.083.535-.303 1.436-.67l.251-.02.01.073c-.419.032-.66.167-.713.387.01.094.064.147.168.137.304-.21.461-.324.461-.356.608-.115 2.274-.995 5.008-2.619zm-7.584.723l.01.072c.01.105-.042.17-.147.18l-.01-.074c-.01-.095.042-.157.147-.178zm3.77.937c.089-.002.139.049.148.131-.199.021-.566.178-1.121.492l-.084.01-.01-.156a1.586 1.586 0 001.026-.47c.014-.003.028-.006.04-.007zm-3.664 1.243l.01.082c-.064 0-.138.043-.243.095l-.156.01c-.01-.073.032-.136.137-.168l.252-.02zm-1.918.953l.177.072c-.063.471-.198.713-.44.734a1.076 1.076 0 00-.513-.105l-.021-.23c-.01-.095.043-.147.158-.178.105-.01.167.061.178.218.282-.345.44-.511.46-.511Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Babel</title><path d="M15.76 0c-1.603.147-3.719.713-6.317 1.719a22.366 22.366 0 01-2.44 1.539l.01.158c.064 0 .136-.043.24-.096.106-.01.169.032.169.137l.168-.094.084-.011.01.074c.01.073-.566.523-1.707 1.33l.093.146-.084.012-.177-.064c0 .052-.073.085-.24.095l.01.084.189.21a.673.673 0 01-.252-.053c-.367.031-.734.303-1.09.806l.094.147c.314-.283.492-.43.544-.43l.022.23c-.052 0-.136.042-.24.094l.199.295A5.86 5.86 0 016.29 5.291c.23.063.346.125.346.209l.168-.01c1.225-.911 2.44-1.562 3.644-1.97l.012.158c-.22.335-.377.501-.461.511.01.116.052.21.115.305.021.21-.524 1.583-1.635 4.139-2.535 5.93-4.651 10.307-6.359 13.156 0 .052.041.136.094.23.419-.104.691-.197.806-.302l.096-.012.01.158.158-.011.166-.094c0 .052.063.073.168.062l.012.159c.01.157-.075.397-.274.722-.178.2-.355.607-.554 1.225l.01.074.158-.01c.68-.764 1.204-1.52 1.56-2.254 2.001-.586 3.52-1.162 4.578-1.728 1.058-.094 1.876-.365 2.42-.826l-.011-.084-.399.115-.094.01-.01-.084c.776-.116 1.32-.293 1.614-.524 1.519-1.173 2.66-2 3.435-2.492 2.4-1.76 3.531-3.457 3.395-5.07-.01-.168-.545-.828-1.582-1.98-.021-.22.345-.535 1.078-.954l2.086-1.834c.46-.597.744-1.56.838-2.89l-.031-.315c-.084-.932-.756-1.687-2.034-2.264C19.06.303 17.708.031 15.76 0zm2.525 1.037c1.55.063 2.347.335 2.389.817l-.063.158-2.326-.975zm-1.482 1.317c1.063-.016 1.617.267 1.672.863l.156-.012-.031-.398.168-.01c.408.22.627.492.648.816.021.22-.094.494-.355.819-.105.01-.168-.064-.178-.221l-.168.012-.041.47c-.702 1.048-1.205 1.582-1.52 1.614-.283.387-.462.587-.535.597-.22.262-.816.712-1.8 1.34-.325.032-1.531.493-3.616 1.404a.595.595 0 00-.334-.052l-.012-.147c-.02-.304.107-.681.41-1.142.158-.86.335-1.352.534-1.467l1.738-3.906c-.02-.241.347-.43 1.111-.555l.252-.022.02.221a50.387 50.387 0 011.394-.2c.173-.014.335-.022.487-.024zm3.619.39h.027c.139.012.288.263.446.744l.01.147c-.085.01-.24-.242-.471-.744l-.012-.147zm-9.836 2.483h.072l.022.23c-.074.01-.177.116-.303.336l-.012-.156c.147-.178.22-.316.22-.41zM5.6 5.354l.01.072c-.053 0-.136.043-.24.095l-.085.01-.01-.146.325-.031zM9.885 6.86l.031.315-.084.01-.031-.313.084-.012zm-.2.567c-.02.262-.084.397-.22.408l-.084.01c.094-.178.147-.303.137-.397l.168-.021zm-.345.816l.01.074-.147.25-.158.012-.01-.074c.157-.01.231-.093.22-.25l.085-.012zm-.358.735l-.04.386-.085.01-.03-.387.155-.01zm8.497.28l.345.212c.01.104-.042.167-.146.177-.147-.094-.262-.136-.346-.136l-.021-.23.168-.022zm-6.653.891l.012.147-.326.033-.01-.148.324-.032zm5.363.545c.23.105.347.21.358.293l.01.075c-.22.02-.42-.095-.608-.346l.24-.022zm2.6.252c.178.074.261.148.272.221l.052.617c-.073.168-.146.252-.23.252l-.094-1.09zm-4.195.065c.84-.014 1.482.184 1.922.605l.03.315c-.376 1.09-.795 1.719-1.245 1.918l-2.096 1.666c-1.56 1.026-2.4 1.538-2.525 1.548-2.483 1.373-4.032 2.075-4.63 2.127l-.095.01c.084-.293 1.185-2.555 3.322-6.808.943-.084 2.43-.525 4.452-1.32l.492-.042c.128-.01.253-.017.373-.02zm-3.055.49l.01.074-.334.031-.012-.074.336-.031zm-5.226 5.07c-.105.535-.221.808-.336.819l-.01-.075c-.021-.272.094-.513.346-.744zm7.101.336l.01.147c.01.063-.23.261-.701.607-1.394.681-2.21 1.152-2.452 1.393-1.508.523-2.252.849-2.242.974-1.34.535-2.22.923-2.638 1.164-.095.01-.241-.031-.43-.115-.021-.272.093-.494.365-.672.23-.02.463.011.672.106.251-.126.68-.274 1.299-.42l-.012-.156-.492.04c.063-.083.535-.303 1.436-.67l.251-.02.01.073c-.419.032-.66.167-.713.387.01.094.064.147.168.137.304-.21.461-.324.461-.356.608-.115 2.274-.995 5.008-2.619zm-7.584.723l.01.072c.01.105-.042.17-.147.18l-.01-.074c-.01-.095.042-.157.147-.178zm3.77.937c.089-.002.139.049.148.131-.199.021-.566.178-1.121.492l-.084.01-.01-.156a1.586 1.586 0 001.026-.47c.014-.003.028-.006.04-.007zm-3.664 1.243l.01.082c-.064 0-.138.043-.243.095l-.156.01c-.01-.073.032-.136.137-.168l.252-.02zm-1.918.953l.177.072c-.063.471-.198.713-.44.734a1.076 1.076 0 00-.513-.105l-.021-.23c-.01-.095.043-.147.158-.178.105-.01.167.061.178.218.282-.345.44-.511.46-.511Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/backbonedotjs.svg b/assets/lib/simple-icons/icons/backbonedotjs.svg
new file mode 100644
index 00000000..dfe8da72
--- /dev/null
+++ b/assets/lib/simple-icons/icons/backbonedotjs.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Backbone.js</title><path d="M2.34 0v10.45l3.2-1.83V5.27l2.93 1.67 3.01-1.72L2.34 0zm19.31 0L12.5 5.22l3.02 1.73 2.94-1.68v3.35l3.2 1.83V0h-.01zm-9.9 5.64-9.4 5.38V24l9.4-5.36v-3.76l-6.21 3.56v-5.5l6.21-3.54V5.64zm.5 0V9.4l6.22 3.54v5.5l-6.22-3.56v3.76L21.66 24V11.02l-9.41-5.38zM7.7 12.3l-1.65.94v1.86l2.17 1.24 3.28-1.87-3.8-2.17zm8.61 0-3.8 2.16 3.28 1.88 2.17-1.24v-1.86l-1.65-.94z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/badgr.svg b/assets/lib/simple-icons/icons/badgr.svg
index 7fb69d42..35b9ee03 100644
--- a/assets/lib/simple-icons/icons/badgr.svg
+++ b/assets/lib/simple-icons/icons/badgr.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Badgr icon</title><path d="M22.84 11.134c-1.75-1.71-3.617-2.982-5.552-3.784a.287.287 0 0 0-.041-.024c-.662-.369-1.282-.893-1.51-1.15-.396-.443-1.229-1.056-1.67-1.154a.69.69 0 0 0-.154-.017c-.406 0-.86.324-1.433.734l-.346.245c-.198.136-.33.22-.421.272a1.487 1.487 0 0 1-.112.059 13.948 13.948 0 0 0-1.443.122c-1.59.217-3.463 1.34-4.83 2.16-.607.364-1.18.708-1.412.769l-.704.184V6.324L13.025.648l9.815 5.676v4.81zM12.195 6.436l.035-.024.035-.025a16.252 16.252 0 0 0 .274-.194l.176-.123a15.142 15.142 0 0 1 .523-.364c.27-.176.502-.295.675-.295a.32.32 0 0 1 .067.006c.182.04.494.228.795.451l.128.097a.708.708 0 0 0-.013.064 2.124 2.124 0 0 0-.01.097l-.002.05a.409.409 0 0 1-.027.138c-.012.032-.03.047-.045.047a.074.074 0 0 1-.031-.01c-.065-.035-.094-.154-.1-.193l-.016-.112-.1.05a2.424 2.424 0 0 0-.132.075l-.08.046a.61.61 0 0 1-.076.037.357.357 0 0 0-.027-.148.484.484 0 0 0-.032-.065.724.724 0 0 0-.163-.188l-.071-.057-.014-.01-.042.099c-.137.332-1.093.553-1.667.553l-.06-.002zM8.15 10.594a.35.35 0 0 0-.075-.11.202.202 0 0 0-.048-.006c-.008 0-.015 0-.023.002l.039-.025a.348.348 0 0 0-.212-.073c-.012 0-.024.003-.037.004a.625.625 0 0 1 .164-.086.463.463 0 0 1 .324.009.946.946 0 0 1 .075.028l.066.029c.165.066.46.23.46.23a.417.417 0 0 0-.083.021.742.742 0 0 0-.157.083c-.105.067-.212.153-.345.216a.616.616 0 0 1-.237.068.34.34 0 0 0 .089-.39zm7.581-.536a.736.736 0 0 1-.3-.09 1.325 1.325 0 0 1-.158-.089.44.44 0 0 0 .074-.06.622.622 0 0 0 .06-.069l.026-.037a.778.778 0 0 0 .097-.25l.005-.03a.324.324 0 0 1-.338.124l-.005-.002a.333.333 0 0 0 .013-.195.337.337 0 0 0-.034-.088.382.382 0 0 1-.118.122.387.387 0 0 1-.212.058.495.495 0 0 1-.097-.01c-.024-.004-.038-.009-.038-.009a.956.956 0 0 0 .02-.403 1.557 1.557 0 0 0-.038-.175l-.002-.01a.207.207 0 0 1-.014.026c-.073.114-.383.34-.723.52a2.696 2.696 0 0 1-.6.245.96.96 0 0 1-.212.032c-.053 0-.082-.01-.097-.027a.043.043 0 0 1-.01-.028.091.091 0 0 1 .01-.048.234.234 0 0 1 .016-.03l.017-.025.013-.016s.02-.034.06-.089a1.406 1.406 0 0 1 .123-.15 1.788 1.788 0 0 1 .83-.511 3.81 3.81 0 0 1 .712-.132 2.552 2.552 0 0 1 .183-.006c.224 0 .436.032.612.115.044.02.086.044.126.07a.741.741 0 0 1 .27.338 7.546 7.546 0 0 1 .229.66 4.921 4.921 0 0 1 .102.408c.028.139.045.269.046.378a.572.572 0 0 1-.018.172c-.025.097-.079.155-.17.155a.315.315 0 0 1-.068-.009c-.324-.08-.688-.507-.688-.507a.654.654 0 0 0 .219-.144.98.98 0 0 0 .101-.113c.041-.05.064-.088.064-.088a.21.21 0 0 1-.088.017zm.871.277c-.058-.463-.26-1.01-.376-1.297-.125-.308-.44-.676-1.232-.676-.367 0-.726.081-.962.148a2.138 2.138 0 0 0-.182.063 6.337 6.337 0 0 0-.764-.154c-.687-.1-1.78-.263-4.109.447-2.327.71-4.897 2.027-5.302 2.453-.405.425.04 1.033.405 1.297.364.264.749.71.89.345.142-.365.08-.446.608-.406.526.041 3.46.366 4.837.041 1.376-.324 2.753-.71 3.016-.993 0 0-.02.344-.122.527 0 0 .587-.081.79-.223 0 0-.02.243-.162.344 0 0 .344.122.607-.04 0 0-.223.202-.162.385.06.182.627.243 1.822.385 1.082.129 3.662 1.907 5.687 5.243l-.314.18.29-.167-.583.338c-.893-.539-2.133-1.284-3.197-1.924-1.924-1.156-5.061-2.393-7.814-2.494a103.93 103.93 0 0 1-4.309-.246c-.12-.02-.241-.04-.366-.058a34.442 34.442 0 0 1-1.635-.275c.584.05 1.262.091 1.781.072.21-.008.41-.017.604-.027.832-.04 1.488-.072 1.94.101a.126.126 0 0 0 .043.008.121.121 0 0 0 .043-.236c-.5-.19-1.178-.157-2.037-.116-.193.01-.393.02-.602.027-.792.029-1.891-.058-2.524-.123a8.86 8.86 0 0 1-.474-.058l-.062-.011-.101-.018-.01-.005a2.898 2.898 0 0 1-.398-.195c.07-.203.273-.793.398-1.263.07-.268.117-.496.099-.594a.628.628 0 0 0-.099-.214c-.152-.235-.433-.514-.561-.637l.561-.149.647-.17.808-.212c.84-.22 3.904-2.607 6.194-2.92.298-.04.625-.075.975-.099a.786.786 0 0 0 .193-.006c.202.002.517.013.913.044.623.058 1.257.153 1.57.202.267.043.712.14 1.2.254 1.061.28 2.176.714 3.123 1.39 2.458 1.752 3.866 3.04 3.947 3.223.078.176-4.053-.214-5.532-1.512zM13.026 23.35l-9.814-5.676v-3.852c.586.151 1.336.284 2.327.43l.02.004.02.003c2.744.413 3.976 1.07 4.064 1.117a14.603 14.603 0 0 1 4.944 5.167c.271.479.513.971.719 1.465l.008.019-2.287 1.323zM23.164 5.762L13.35.087a.648.648 0 0 0-.648 0L2.888 5.763a.648.648 0 0 0-.324.561v3.397l-.953.252c-.553.145-.89.387-1.031.74-.207.523.097 1.129.424 1.653.378.606.778.976 1.56 1.262v4.048a.65.65 0 0 0 .324.562l9.814 5.675a.646.646 0 0 0 .648 0l9.814-5.675a.648.648 0 0 0 .324-.562V6.324a.648.648 0 0 0-.324-.562Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Badgr</title><path d="M22.84 11.134c-1.75-1.71-3.617-2.982-5.552-3.784a.287.287 0 0 0-.041-.024c-.662-.369-1.282-.893-1.51-1.15-.396-.443-1.229-1.056-1.67-1.154a.69.69 0 0 0-.154-.017c-.406 0-.86.324-1.433.734l-.346.245c-.198.136-.33.22-.421.272a1.487 1.487 0 0 1-.112.059 13.948 13.948 0 0 0-1.443.122c-1.59.217-3.463 1.34-4.83 2.16-.607.364-1.18.708-1.412.769l-.704.184V6.324L13.025.648l9.815 5.676v4.81zM12.195 6.436l.035-.024.035-.025a16.252 16.252 0 0 0 .274-.194l.176-.123a15.142 15.142 0 0 1 .523-.364c.27-.176.502-.295.675-.295a.32.32 0 0 1 .067.006c.182.04.494.228.795.451l.128.097a.708.708 0 0 0-.013.064 2.124 2.124 0 0 0-.01.097l-.002.05a.409.409 0 0 1-.027.138c-.012.032-.03.047-.045.047a.074.074 0 0 1-.031-.01c-.065-.035-.094-.154-.1-.193l-.016-.112-.1.05a2.424 2.424 0 0 0-.132.075l-.08.046a.61.61 0 0 1-.076.037.357.357 0 0 0-.027-.148.484.484 0 0 0-.032-.065.724.724 0 0 0-.163-.188l-.071-.057-.014-.01-.042.099c-.137.332-1.093.553-1.667.553l-.06-.002zM8.15 10.594a.35.35 0 0 0-.075-.11.202.202 0 0 0-.048-.006c-.008 0-.015 0-.023.002l.039-.025a.348.348 0 0 0-.212-.073c-.012 0-.024.003-.037.004a.625.625 0 0 1 .164-.086.463.463 0 0 1 .324.009.946.946 0 0 1 .075.028l.066.029c.165.066.46.23.46.23a.417.417 0 0 0-.083.021.742.742 0 0 0-.157.083c-.105.067-.212.153-.345.216a.616.616 0 0 1-.237.068.34.34 0 0 0 .089-.39zm7.581-.536a.736.736 0 0 1-.3-.09 1.325 1.325 0 0 1-.158-.089.44.44 0 0 0 .074-.06.622.622 0 0 0 .06-.069l.026-.037a.778.778 0 0 0 .097-.25l.005-.03a.324.324 0 0 1-.338.124l-.005-.002a.333.333 0 0 0 .013-.195.337.337 0 0 0-.034-.088.382.382 0 0 1-.118.122.387.387 0 0 1-.212.058.495.495 0 0 1-.097-.01c-.024-.004-.038-.009-.038-.009a.956.956 0 0 0 .02-.403 1.557 1.557 0 0 0-.038-.175l-.002-.01a.207.207 0 0 1-.014.026c-.073.114-.383.34-.723.52a2.696 2.696 0 0 1-.6.245.96.96 0 0 1-.212.032c-.053 0-.082-.01-.097-.027a.043.043 0 0 1-.01-.028.091.091 0 0 1 .01-.048.234.234 0 0 1 .016-.03l.017-.025.013-.016s.02-.034.06-.089a1.406 1.406 0 0 1 .123-.15 1.788 1.788 0 0 1 .83-.511 3.81 3.81 0 0 1 .712-.132 2.552 2.552 0 0 1 .183-.006c.224 0 .436.032.612.115.044.02.086.044.126.07a.741.741 0 0 1 .27.338 7.546 7.546 0 0 1 .229.66 4.921 4.921 0 0 1 .102.408c.028.139.045.269.046.378a.572.572 0 0 1-.018.172c-.025.097-.079.155-.17.155a.315.315 0 0 1-.068-.009c-.324-.08-.688-.507-.688-.507a.654.654 0 0 0 .219-.144.98.98 0 0 0 .101-.113c.041-.05.064-.088.064-.088a.21.21 0 0 1-.088.017zm.871.277c-.058-.463-.26-1.01-.376-1.297-.125-.308-.44-.676-1.232-.676-.367 0-.726.081-.962.148a2.138 2.138 0 0 0-.182.063 6.337 6.337 0 0 0-.764-.154c-.687-.1-1.78-.263-4.109.447-2.327.71-4.897 2.027-5.302 2.453-.405.425.04 1.033.405 1.297.364.264.749.71.89.345.142-.365.08-.446.608-.406.526.041 3.46.366 4.837.041 1.376-.324 2.753-.71 3.016-.993 0 0-.02.344-.122.527 0 0 .587-.081.79-.223 0 0-.02.243-.162.344 0 0 .344.122.607-.04 0 0-.223.202-.162.385.06.182.627.243 1.822.385 1.082.129 3.662 1.907 5.687 5.243l-.314.18.29-.167-.583.338c-.893-.539-2.133-1.284-3.197-1.924-1.924-1.156-5.061-2.393-7.814-2.494a103.93 103.93 0 0 1-4.309-.246c-.12-.02-.241-.04-.366-.058a34.442 34.442 0 0 1-1.635-.275c.584.05 1.262.091 1.781.072.21-.008.41-.017.604-.027.832-.04 1.488-.072 1.94.101a.126.126 0 0 0 .043.008.121.121 0 0 0 .043-.236c-.5-.19-1.178-.157-2.037-.116-.193.01-.393.02-.602.027-.792.029-1.891-.058-2.524-.123a8.86 8.86 0 0 1-.474-.058l-.062-.011-.101-.018-.01-.005a2.898 2.898 0 0 1-.398-.195c.07-.203.273-.793.398-1.263.07-.268.117-.496.099-.594a.628.628 0 0 0-.099-.214c-.152-.235-.433-.514-.561-.637l.561-.149.647-.17.808-.212c.84-.22 3.904-2.607 6.194-2.92.298-.04.625-.075.975-.099a.786.786 0 0 0 .193-.006c.202.002.517.013.913.044.623.058 1.257.153 1.57.202.267.043.712.14 1.2.254 1.061.28 2.176.714 3.123 1.39 2.458 1.752 3.866 3.04 3.947 3.223.078.176-4.053-.214-5.532-1.512zM13.026 23.35l-9.814-5.676v-3.852c.586.151 1.336.284 2.327.43l.02.004.02.003c2.744.413 3.976 1.07 4.064 1.117a14.603 14.603 0 0 1 4.944 5.167c.271.479.513.971.719 1.465l.008.019-2.287 1.323zM23.164 5.762L13.35.087a.648.648 0 0 0-.648 0L2.888 5.763a.648.648 0 0 0-.324.561v3.397l-.953.252c-.553.145-.89.387-1.031.74-.207.523.097 1.129.424 1.653.378.606.778.976 1.56 1.262v4.048a.65.65 0 0 0 .324.562l9.814 5.675a.646.646 0 0 0 .648 0l9.814-5.675a.648.648 0 0 0 .324-.562V6.324a.648.648 0 0 0-.324-.562Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/badoo.svg b/assets/lib/simple-icons/icons/badoo.svg
index 8be30ce9..840d6f00 100644
--- a/assets/lib/simple-icons/icons/badoo.svg
+++ b/assets/lib/simple-icons/icons/badoo.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Badoo icon</title><path d="M17.68 2.809c3.392 0 6.32 2.788 6.32 6.228 0 6.71-6.6 12.158-12 12.158S0 15.748 0 9.037c0-3.44 2.928-6.228 6.32-6.228 4.128 0 5.578 3.179 5.68 3.411a6.079 6.079 0 0 1 5.67-3.411zm1.078 6.488V9.11h-2.38v.186c0 2.352-1.97 4.276-4.378 4.276-2.417 0-4.369-1.924-4.369-4.276V9.11H5.233v.186c0 1.766.697 3.42 1.98 4.666a6.795 6.795 0 0 0 4.778 1.933 6.797 6.797 0 0 0 4.777-1.933 6.488 6.488 0 0 0 1.98-4.666Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Badoo</title><path d="M17.68 2.809c3.392 0 6.32 2.788 6.32 6.228 0 6.71-6.6 12.158-12 12.158S0 15.748 0 9.037c0-3.44 2.928-6.228 6.32-6.228 4.128 0 5.578 3.179 5.68 3.411a6.079 6.079 0 0 1 5.67-3.411zm1.078 6.488V9.11h-2.38v.186c0 2.352-1.97 4.276-4.378 4.276-2.417 0-4.369-1.924-4.369-4.276V9.11H5.233v.186c0 1.766.697 3.42 1.98 4.666a6.795 6.795 0 0 0 4.778 1.933 6.797 6.797 0 0 0 4.777-1.933 6.488 6.488 0 0 0 1.98-4.666Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/baidu.svg b/assets/lib/simple-icons/icons/baidu.svg
index ac5684ab..d3e65969 100644
--- a/assets/lib/simple-icons/icons/baidu.svg
+++ b/assets/lib/simple-icons/icons/baidu.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Baidu icon</title><path d="M4.312 12.65c2.61-.562 2.25-3.684 2.176-4.366-.128-1.05-1.366-2.888-3.044-2.74-2.11.186-2.418 3.24-2.418 3.24-.287 1.41.682 4.426 3.286 3.865m4.845-5.24c1.44 0 2.604-1.66 2.604-3.71 0-2.04-1.16-3.7-2.6-3.7S6.55 1.65 6.55 3.7c0 2.05 1.17 3.71 2.61 3.71m6.207.245c1.93.26 3.162-1.8 3.412-3.36.25-1.55-1-3.36-2.36-3.67-1.37-.316-3.06 1.874-3.23 3.3-.18 1.75.25 3.49 2.17 3.737M23 10.284c0-.746-.613-2.993-2.91-2.993-2.295 0-2.61 2.12-2.61 3.62 0 1.43.118 3.42 2.985 3.36 2.855-.07 2.543-3.24 2.543-3.99M20.1 16.82s-2.985-2.31-4.726-4.8c-2.36-3.677-5.715-2.18-6.834-.316-1.12 1.883-2.86 3.062-3.105 3.377-.25.31-3.6 2.12-2.854 5.42.75 3.3 3.36 3.24 3.36 3.24s1.92.19 4.16-.31 4.16.12 4.16.12 5.207 1.75 6.648-1.61c1.424-3.37-.81-5.11-.81-5.11"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Baidu</title><path d="M9.154 0C7.71 0 6.54 1.658 6.54 3.707c0 2.051 1.171 3.71 2.615 3.71 1.446 0 2.614-1.659 2.614-3.71C11.768 1.658 10.6 0 9.154 0zm7.025.594C14.86.58 13.347 2.589 13.2 3.927c-.187 1.745.25 3.487 2.179 3.735 1.933.25 3.175-1.806 3.422-3.364.252-1.555-.995-3.364-2.362-3.674a1.218 1.218 0 0 0-.261-.03zM3.582 5.535a2.811 2.811 0 0 0-.156.008c-2.118.19-2.428 3.24-2.428 3.24-.287 1.41.686 4.425 3.297 3.864 2.617-.561 2.262-3.68 2.183-4.362-.125-1.018-1.292-2.773-2.896-2.75zm16.534 1.753c-2.308 0-2.617 2.119-2.617 3.616 0 1.43.121 3.425 2.988 3.362 2.867-.063 2.553-3.238 2.553-3.988 0-.745-.62-2.99-2.924-2.99zm-8.264 2.478c-1.424.014-2.708.925-3.323 1.947-1.118 1.868-2.863 3.05-3.112 3.363-.25.309-3.61 2.116-2.864 5.42.746 3.301 3.365 3.237 3.365 3.237s1.93.19 4.171-.31c2.24-.495 4.17.123 4.17.123s5.233 1.748 6.665-1.616c1.43-3.364-.808-5.109-.808-5.109s-2.99-2.306-4.736-4.798c-1.072-1.665-2.348-2.268-3.528-2.257zm-2.234 3.84l1.542.024v8.197H7.758c-1.47-.291-2.055-1.292-2.13-1.462-.072-.173-.488-.976-.268-2.343.635-2.049 2.447-2.196 2.447-2.196h1.81zm3.964 2.39v3.881c.096.413.612.488.612.488h1.614v-4.343h1.689v5.782h-3.915c-1.517-.39-1.59-1.465-1.59-1.465v-4.317zm-5.458 1.147c-.66.197-.978.708-1.05.928-.076.22-.247.78-.1 1.269.294 1.095 1.248 1.144 1.248 1.144h1.37v-3.34z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/bamboo.svg b/assets/lib/simple-icons/icons/bamboo.svg
index a6bfd6d6..43508c97 100644
--- a/assets/lib/simple-icons/icons/bamboo.svg
+++ b/assets/lib/simple-icons/icons/bamboo.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Bamboo icon</title><path d="M21.715 13.643h-4.989a.651.651 0 0 0-.655.555 4.114 4.114 0 0 1-4.062 3.531l1.35 6.172a10.374 10.374 0 0 0 9.007-9.545.651.651 0 0 0-.651-.713zm-8.633-.158l7.2-6.171a.645.645 0 0 0 0-.984L13.081.16a.648.648 0 0 0-1.073.483v12.343a.651.651 0 0 0 1.073.5zM1.727 14.99A10.385 10.385 0 0 0 12.012 24v-6.27a4.093 4.093 0 0 1-4.1-4.087L1.727 14.99zm-.096-1.447v.1h6.28a4.093 4.093 0 0 1 4.098-4.087l-1.348-6.17a10.37 10.37 0 0 0-9.03 10.157"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Bamboo</title><path d="M21.7142 13.6433h-4.9888a.651.651 0 00-.655.555 4.1139 4.1139 0 01-4.0619 3.5299l1.35 6.1728a10.3737 10.3737 0 009.0077-9.5447.651.651 0 00-.652-.713zm-8.6327-.158l7.1998-6.1718a.645.645 0 000-.984L13.0815.1597a.648.648 0 00-1.074.483v12.3426a.651.651 0 001.073.5zm-11.3547 1.505A10.3847 10.3847 0 0012.0115 24v-6.2698a4.0929 4.0929 0 01-4.0999-4.0869zm-.096-1.447v.1h6.2798a4.0929 4.0929 0 014.098-4.0879l-1.348-6.1698a10.3697 10.3697 0 00-9.0298 10.1577"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/bancontact.svg b/assets/lib/simple-icons/icons/bancontact.svg
deleted file mode 100644
index f38db889..00000000
--- a/assets/lib/simple-icons/icons/bancontact.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Bancontact icon</title><path d="M21.385 9.768h-7.074l-4.293 5.022H1.557L3.84 12.1H1.122C.505 12.1 0 12.616 0 13.25v2.428c0 .633.505 1.15 1.122 1.15h12.933c.617 0 1.46-.384 1.874-.854l1.956-2.225 3.469-3.946.031-.035zm-1.123 1.279l-.751.855.75-.855zm2.616-3.875H9.982c-.617 0-1.462.384-1.876.853l-5.49 6.208h7.047l4.368-5.02h8.424l-2.263 2.689h2.686c.617 0 1.122-.518 1.122-1.151V8.323c0-.633-.505-1.15-1.122-1.15zm-1.87 3.024l-.374.427-.1.114.474-.54z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/bandcamp.svg b/assets/lib/simple-icons/icons/bandcamp.svg
index 74312662..3ccf0cf5 100644
--- a/assets/lib/simple-icons/icons/bandcamp.svg
+++ b/assets/lib/simple-icons/icons/bandcamp.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Bandcamp icon</title><path d="M0 18.75l7.437-13.5H24l-7.438 13.5H0z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Bandcamp</title><path d="M0 18.75l7.437-13.5H24l-7.438 13.5H0z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/bandlab.svg b/assets/lib/simple-icons/icons/bandlab.svg
index aae4f9a7..e0de169c 100644
--- a/assets/lib/simple-icons/icons/bandlab.svg
+++ b/assets/lib/simple-icons/icons/bandlab.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>BandLab icon</title><path d="M12,0C5.373,0,0,5.373,0,12s5.373,12,12,12c6.627,0,12-5.373,12-12S18.627,0,12,0z M12.375,2.625 c0.5,0,0.5,0.75,0,0.75S11.875,2.625,12.375,2.625z M11.25,4.125c0,1-1.5,1-1.5,0S11.25,3.125,11.25,4.125z M17.742,17.555 c-0.391,0.551-0.822,0.82-1.707,0.82h-8.07c-0.881,0-1.316-0.27-1.707-0.818c-0.531-0.756-0.082-1.574-0.082-1.574l3.559-6.918 c0,0,0.154-0.459-0.074-0.705C9.435,8.123,8.715,7.328,8.658,7.267C8.58,7.17,8.555,7.095,8.547,7.02 C8.535,6.953,8.479,6.172,8.479,6.082S8.461,5.906,8.617,5.744c0.125-0.119,0.398-0.119,0.398-0.119h5.98 c0,0,0.273-0.004,0.398,0.119c0.156,0.162,0.138,0.248,0.138,0.338c-0.017,0.315-0.039,0.629-0.068,0.941 c-0.008,0.072-0.03,0.151-0.116,0.244l-1.013,1.092c-0.026,0.026-0.045,0.059-0.063,0.09h-3.654c-0.086,0-0.135,0.008-0.197,0.074 c-0.094,0.109-0.031,0.233-0.031,0.233l2.566,5.002c0.137,0.287-0.07,0.617-0.387,0.619c-1.227,0-1.935,0.638-1.935,1.414 c0,0.779,0.876,1.414,1.957,1.414c1.076,0,1.947-0.627,1.959-1.402c0,0,0.022-0.259-0.109-0.582l-2.588-5.031 c0,0-0.049-0.133,0.033-0.248c0.084-0.117,0.219-0.123,0.219-0.123h2.52l3.199,6.164C17.824,15.983,18.273,16.801,17.742,17.555z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>BandLab</title><path d="M10.87714 17.58857C12.84 17.58857 15.3 15.78 15.3 13.32c0-.72-.15429-1.43143-.45429-2.09143l-3.41142-8.34H17.16L15.65143 0H7.48286l4.68 11.56286C10.1657 12 8.34 13.56 8.34 15.36c0 1.30286.94286 2.22857 2.53714 2.22857.02737 0 0 0 5.1-11.50286H19.32L22.88571 12.24A8.82857 8.82857 0 0 1 24 16.26c0 4.5-3.54857 7.74-8.57143 7.74H8.57143C3.54 24 0 20.76 0 16.26c.04286-1.41429.42857-2.78571 1.11429-4.02857L4.67143 6.0857h3.34286l-4.17429 7.26a6.05143 6.05143 0 0 0-.82286 2.86286c0 2.86286 1.95429 4.90286 5.65715 4.90286h6.65142c3.68572 0 5.65715-2.04 5.65715-4.90286a6.05143 6.05143 0 0 0-.83143-2.86286l-4.17429-7.26H19.32h-3.34286"/></svg>
diff --git a/assets/lib/simple-icons/icons/bandrautomation.svg b/assets/lib/simple-icons/icons/bandrautomation.svg
new file mode 100644
index 00000000..74296d14
--- /dev/null
+++ b/assets/lib/simple-icons/icons/bandrautomation.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>B&amp;R Automation</title><path d="M22.637 5.186H1.363C.613 5.186 0 5.799 0 6.548v10.903c0 .75.614 1.363 1.363 1.363h21.274c.75 0 1.363-.613 1.363-1.363V6.548c0-.75-.614-1.362-1.363-1.362zm1.039 12.265a1.04 1.04 0 0 1-1.039 1.04H1.363a1.04 1.04 0 0 1-1.039-1.04V6.548A1.04 1.04 0 0 1 1.363 5.51h21.274a1.04 1.04 0 0 1 1.039 1.038v10.903zm-.685-5.491c-.116-.267-.418-.332-.682-.307A1.51 1.51 0 0 0 23 10.644c.052-.285.044-.577.039-.865-.011-1.021.004-2.116.004-3.07a.576.576 0 0 0-.568-.568c-2.257-.017-4.51.04-6.767-.02-.351-.022-.747.153-.77.55-.008 3.418.009 7.184-.004 10.557-.099.744.966.797.917.055v-4.11a1.56 1.56 0 0 1 .693-1.005c.963-.638 2.305.011 2.305 1.188 0 1.273.006 3.934.006 4.028 0 .223.169.425.39.452.31.003 2.496 0 3.257 0 .309 0 .541-.273.541-.568v-2.062l-.001-2.635c0-.199.033-.424-.052-.611zm-.873-2.041c0 .845-.733 1.484-1.579 1.49-.843.006-1.577-.547-1.577-1.49V8.57c0-.939.678-1.577 1.577-1.577.901 0 1.579.71 1.579 1.577v1.35zM8.939 15.403V13.13c.003-.59-.334-1.172-.821-1.485.495-.31.85-.859.821-1.457-.006-1.166.011-2.33-.006-3.496a.566.566 0 0 0-.57-.55c-2.283.012-4.566 0-6.851 0a.556.556 0 0 0-.55.53C.943 10.206.95 13.75.958 17.286c.002.288.249.559.554.552 2.175 0 4.675-.014 6.84-.002a.573.573 0 0 0 .585-.581c.01-.616-.003-1.236.002-1.853zm-.893.124c0 .832-.66 1.463-1.48 1.468-.82.006-1.59-.52-1.59-1.45v-1.98c0-1.053.717-1.573 1.59-1.573.876 0 1.48.698 1.48 1.554v1.981zm.028-5.74c-.028.853-.728 1.428-1.511 1.473-.856.05-1.583-.586-1.583-1.478V8.511c0-.929.707-1.554 1.583-1.554s1.511.701 1.511 1.56v1.27zm6.154 4.312c-.103-.052-.228-.036-.342-.035.002-.174-.004-.345.001-.518.007-.158.027-.355-.127-.454a.315.315 0 0 0-.159-.048c-.133-.004-.266.082-.293.22v.828a81.76 81.76 0 0 0-1.043-.007c-.319-.004-.414-.256-.419-.533.013-.341-.049-.702.044-1.036.064-.198.237-.266.433-.266h1.073c.16 0 .29-.132.29-.292a.295.295 0 0 0-.303-.289h-3.137c-.157 0-.321-.02-.443.1-.078.08-.097.18-.103.286-.004.688 0 1.38.005 2.067.02.135.136.238.275.238a.284.284 0 0 0-.27.211c-.023.918.003 1.844-.006 2.763 0 .142-.009.296.099.404.104.102.246.101.38.101 1.062.002 2.12-.019 3.181.013.231 0 .522-.067.522-.354v-2.853h.204c.294.003.397-.411.138-.546zm-.896 2.722c0 .18-.147.326-.326.326h-.74c-.256 0-.42-.232-.42-.416v-1.407c0-.292.097-.668.464-.668h1.022v2.165z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/bandsintown.svg b/assets/lib/simple-icons/icons/bandsintown.svg
index 25f5deef..6b57a48d 100644
--- a/assets/lib/simple-icons/icons/bandsintown.svg
+++ b/assets/lib/simple-icons/icons/bandsintown.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Bandsintown icon</title><path d="M18.783 0H24v12h-5.217V0zm-6.261 5h5.217v7h-5.217V5zM6.26 5h5.217v7H6.261V5zM24 24H0V0h5.217v19h13.566v-1H6.26v-5H24v11Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Bandsintown</title><path d="M18.783 0H24v12h-5.217V0zm-6.261 5h5.217v7h-5.217V5zM6.26 5h5.217v7H6.261V5zM24 24H0V0h5.217v19h13.566v-1H6.26v-5H24v11Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/bankofamerica.svg b/assets/lib/simple-icons/icons/bankofamerica.svg
new file mode 100644
index 00000000..5cf143d8
--- /dev/null
+++ b/assets/lib/simple-icons/icons/bankofamerica.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Bank of America</title><path d="M15.194 7.57c.487-.163 1.047-.307 1.534-.451-1.408-.596-3.176-1.227-4.764-1.625-.253.073-1.01.271-1.534.434.541.162 2.328.577 4.764 1.642zm-8.896 6.785c.577.343 1.19.812 1.786 1.209 3.952-3.068 7.85-5.432 12.127-6.767-.596-.307-1.119-.578-1.787-.902-2.562.65-6.947 2.4-12.126 6.46zm-.758-6.46c-2.112.974-4.331 2.31-5.54 3.085.433.199.866.361 1.461.65 2.671-1.805 4.764-2.905 5.594-3.266-.595-.217-1.154-.361-1.515-.47zm8.066.234c-.686-.379-3.068-1.263-4.71-1.642-.487.18-1.173.451-1.642.65.595.162 2.815.758 4.71 1.714.487-.235 1.173-.523 1.642-.722zm-3.374 1.552c-.56-.27-1.173-.523-1.643-.74-1.425.704-3.284 1.769-5.63 3.447.505.27 1.047.595 1.624.92 1.805-1.335 3.627-2.598 5.649-3.627zm1.732 8.825c3.79-3.249 9.113-6.407 12.036-7.544a48.018 48.018 0 00-1.949-1.155c-3.771 1.246-8.174 4.007-12.108 7.129.667.505 1.371 1.028 2.02 1.57zm2.851-.235h-.108l-.18-.27h-.109v.27h-.072v-.596h.27c.055 0 .109 0 .145.036.054.019.072.073.072.127 0 .108-.09.162-.198.162zm-.289-.343c.09 0 .199.018.199-.09 0-.072-.072-.09-.144-.09h-.163v.18zm-.523.036c0-.289.235-.523.541-.523.307 0 .542.234.542.523a.543.543 0 01-.542.542.532.532 0 01-.54-.542m.107 0c0 .235.199.433.451.433a.424.424 0 100-.848c-.27 0-.45.199-.45.415"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/barclays.svg b/assets/lib/simple-icons/icons/barclays.svg
new file mode 100644
index 00000000..643f3603
--- /dev/null
+++ b/assets/lib/simple-icons/icons/barclays.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Barclays</title><path d="M21.043 3.629a3.235 3.235 0 0 0-1.048-.54 3.076 3.076 0 0 0-.937-.144h-.046c-.413.006-1.184.105-1.701.71a1.138 1.138 0 0 0-.226 1.023.9.9 0 0 0 .555.63s.088.032.228.058c-.04.078-.136.214-.136.214-.179.265-.576.612-1.668.612h-.063c-.578-.038-1.056-.189-1.616-.915-.347-.45-.523-1.207-.549-2.452-.022-.624-.107-1.165-.256-1.6-.1-.29-.333-.596-.557-.742a2.55 2.55 0 0 0-.694-.336c-.373-.12-.848-.14-1.204-.146-.462-.01-.717.096-.878.292-.027.033-.032.05-.068.046-.084-.006-.272-.006-.328-.006-.264 0-.498.043-.721.09-.47.1-.761.295-1.019.503-.12.095-.347.365-.399.653a.76.76 0 0 0 .097.578c.14-.148.374-.264.816-.266.493-.002 1.169.224 1.406.608.336.547.27.99.199 1.517-.183 1.347-.68 2.048-1.783 2.203-.191.026-.38.04-.56.04-.776 0-1.34-.248-1.63-.716a.71.71 0 0 1-.088-.168s.087-.021.163-.056c.294-.14.514-.344.594-.661.09-.353.004-.728-.23-1.007-.415-.47-.991-.708-1.713-.708-.4 0-.755.076-.982.14-.908.256-1.633.947-2.214 2.112-.412.824-.7 1.912-.81 3.067-.11 1.13-.056 2.085.019 2.949.124 1.437.363 2.298.708 3.22a15.68 15.68 0 0 0 1.609 3.19c.09-.094.15-.161.308-.318.188-.19.724-.893.876-1.11.19-.27.51-.779.664-1.147l.15.119c.16.127.252.348.249.592-.003.215-.053.464-.184.922a8.703 8.703 0 0 1-.784 1.818c-.189.341-.27.508-.199.584.015.015.038.03.06.026.116 0 .34-.117.585-.304.222-.17.813-.672 1.527-1.675a15.449 15.449 0 0 0 1.452-2.521c.12.046.255.101.317.226a.92.92 0 0 1 .08.563c-.065.539-.379 1.353-.63 1.94-.425.998-1.208 2.115-1.788 2.877-.022.03-.163.197-.186.227.9.792 1.944 1.555 3.007 2.136.725.408 2.203 1.162 3.183 1.424.98-.262 2.458-1.016 3.184-1.424a17.063 17.063 0 0 0 3.003-2.134c-.05-.076-.13-.158-.183-.23-.582-.763-1.365-1.881-1.79-2.875-.25-.59-.563-1.405-.628-1.94-.028-.221-.002-.417.08-.565.033-.098.274-.218.317-.226.405.884.887 1.73 1.452 2.522.715 1.003 1.306 1.506 1.527 1.674.248.191.467.304.586.304a.07.07 0 0 0 .044-.012c.094-.069.017-.234-.183-.594a9.003 9.003 0 0 1-.786-1.822c-.13-.456-.18-.706-.182-.92-.004-.246.088-.466.248-.594l.15-.118c.155.373.5.919.665 1.147.15.216.685.919.876 1.11.156.158.22.222.308.32a15.672 15.672 0 0 0 1.609-3.19c.343-.923.583-1.784.707-3.222.075-.86.128-1.81.02-2.948-.101-1.116-.404-2.264-.81-3.068-.249-.49-.605-1.112-1.171-1.566z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/baremetrics.svg b/assets/lib/simple-icons/icons/baremetrics.svg
new file mode 100644
index 00000000..3096f145
--- /dev/null
+++ b/assets/lib/simple-icons/icons/baremetrics.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Baremetrics</title><path d="M22.109 7.951l1.485 2.464a3.507 3.507 0 010 3.275l-4.505 7.717a3.333 3.333 0 01-2.94 1.793H7.83a3.335 3.335 0 01-2.94-1.793l-1.555-2.632 6.139-5.695 4.447 2.578a1.093 1.093 0 001.456-.198zm-13.39.628L1.99 16.15.406 13.725a3.495 3.495 0 010-3.27L5.158 2.59A3.338 3.338 0 018.1.8h8.008c1.228 0 2.357.687 2.942 1.79l1.616 2.722-6.017 5.592-4.432-2.574a1.098 1.098 0 00-1.499.248z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/basecamp.svg b/assets/lib/simple-icons/icons/basecamp.svg
index 46d42718..c47222e4 100644
--- a/assets/lib/simple-icons/icons/basecamp.svg
+++ b/assets/lib/simple-icons/icons/basecamp.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Basecamp icon</title><path d="M12 2C5.54 2 .48 10.22 0 17.16 2.028 20.68 6.915 22 12 22s9.975-1.32 12-4.84C23.52 10.218 18.46 2 12 2zm.15 18.4c-9.54 0-10.456-4.034-10.456-4.034l.18-.976S4.5 9.72 6.15 9.72s2.34 2.34 3.69 2.34 4.274-5.19 5.324-5.19c1.047 0 2.82 1.95 4.27 3.75 1.45 1.802 2.878 4.887 2.878 4.887l-.008.034.15.886S21.688 20.4 12.148 20.4z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Basecamp</title><path d="M12.6516 22.453c-4.0328 0-7.575-1.5542-10.244-4.4946a1.11 1.11 0 0 1-.219-1.1338c.7008-1.8884 2.5935-6.2808 5.0205-6.2948h.0125c1.219 0 2.1312.9655 2.8648 1.7412.2192.2324.555.5875.7818.7611.5656-.5587 1.6775-2.4158 2.5422-4.2779.259-.5567.9203-.7985 1.4765-.5402.557.2584.7988.919.5404 1.4762-2.6217 5.6503-4.019 5.6503-4.478 5.6503-1.022 0-1.7628-.7843-2.4791-1.5422-.3208-.339-.9878-1.045-1.2482-1.045h-.0004c-.5665.095-1.8085 2.0531-2.6966 4.2034 2.1925 2.1722 4.9232 3.2726 8.1266 3.2726 4.3955 0 7.683-1.1964 9.0996-3.2953-.4888-5.585-3.5642-13.1634-9.0996-13.1634-4.6855 0-8.2152 3.264-10.4915 9.7007-.205.579-.8416.8828-1.4187.6776-.5789-.2047-.882-.8398-.6776-1.4185 2.624-7.421 6.859-11.1833 12.5878-11.1833 7.4826 0 10.9304 9.5613 11.3458 15.588a1.1154 1.1154 0 0 1-.1456.6314c-1.7407 3.0221-5.7182 4.6864-11.2002 4.6864Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/bata.svg b/assets/lib/simple-icons/icons/bata.svg
new file mode 100644
index 00000000..f5171768
--- /dev/null
+++ b/assets/lib/simple-icons/icons/bata.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Bata</title><path d="M17.397 13.003c.244-1.308 1.795-1.974 2.936-1.91.436.025.82.154 1.039.41.09-.09.18-.192.269-.282.051-.051.205-.038.346-.013.154.026.32.09.423.09.103 0 .36-.077.603-.115.243-.039.461-.026.423.064l-.218.538-.705 1.73c-.141.347.41.257 1.166-.55.129.09.193.102.321.423-.654.564-1.27.961-2.128 1.256-.77.27-1.346-.115-1.526-.756-1.102 1.025-2.628 1.013-3.064-.141-.718.359-1.564.73-1.923.833-.282.077-.526.141-.77.141-.384 0-.794-.346-.666-.872-.628.282-1.128.462-1.846.705-.77.27-1.218-.025-1.398-.666-1.102 1.025-2.628 1.013-3.064-.141-.436.205-1.025.513-1.577.73-.884.398-1.923.321-2.692-.487l.257-.397c.359.384.807.372 1.153.051.372-.333.603-.974.436-1.513-.077-.23-.333-.41-.833-.384l.154-.41c.5-.013.897-.09 1.115-.398.308-.449.308-1.128-.346-1.115a1.34 1.34 0 0 0-.41.077c-.116.333-.308.73-.475 1.14-.371.95-.782 2-1.256 2.68-.564.808-1.18.962-1.667.936-.512-.039-.91-.192-1.474-.692 0-.218.013-.308.064-.577.218.269.898.564 1.115.243.488-.718 1.026-2.102 1.436-3-.359.116-.705.346-1.18.68 0-.051-.153-.18-.153-.334.77-.884 2.115-1.423 3.026-1.615 1.397-.295 2.884.128 3.115 1.013.154.59-.538 1.14-1.192 1.218.372.218.769.602.872 1.077.05.23.038.487-.039.73.218-.102.487-.23.654-.307.27-1.885 3.192-2.487 3.987-1.59l.27-.282c.05-.051.204-.038.346-.013.153.026.32.09.423.09.102 0 .359-.077.602-.115.244-.039.462-.026.423.064l-.91 2.269c-.205.513 1.308-.398 1.397-.449l.654-1.384-.666.012.115-.564h.744c.128-.166.153-.359.32-.474.218-.167.718-.077.949-.23.205-.129.359-.321.538-.629.154-.256.744-.192.628.051l-.512 1.295h.653c.308.013.039.539-.307.539l-.539.012-.628 1.629c-.205.5.59.025 1.192-.32zm-6.012-1.115c-.077-.244-.282-.308-.475-.295-.436.051-.859.538-1.077.872-.346.538-.269 1.346.295 1.192.577-.154 1.36-1.41 1.257-1.77zm9.666 0c-.077-.244-.282-.308-.474-.295-.436.051-.86.538-1.077.872-.346.538-.27 1.346.295 1.192.577-.154 1.359-1.41 1.256-1.77Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/bathasu.svg b/assets/lib/simple-icons/icons/bathasu.svg
index 087fe1aa..c77475a1 100644
--- a/assets/lib/simple-icons/icons/bathasu.svg
+++ b/assets/lib/simple-icons/icons/bathasu.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Bath ASU icon</title><path d="M20.984 22.265c-.33 0-.654-.088-.943-.256-.9-.52-1.21-1.67-.69-2.57 1.91-3.3.77-7.54-2.54-9.448-1.05-.604-2.23-.92-3.45-.92-.33 0-.66-.09-.942-.258-.9-.517-1.217-1.668-.69-2.566.33-.575.947-.93 1.622-.935 1.864 0 3.713.49 5.336 1.427 2.46 1.426 4.22 3.728 4.957 6.48.735 2.75.36 5.62-1.066 8.1-.33.57-.96.93-1.622.93l.04.006zm-11.478 1.31c-3.81 0-7.355-2.046-9.256-5.338-.518-.894-.207-2.044.69-2.56.873-.504 2.068-.176 2.565.686C4.737 18.498 7.033 19.82 9.5 19.82c1.202 0 2.397-.32 3.448-.926 1.037-.616 1.908-1.487 2.524-2.54.166-.285.392-.525.69-.69.857-.51 2.06-.18 2.555.676.332.57.332 1.293-.015 1.878-.932 1.622-2.284 2.96-3.906 3.907-1.623.932-3.47 1.428-5.335 1.428l.05.023zm.746-16.637C9.135 7.972 8.436 9.45 8.436 11.093c0 1.03.278 1.993.76 2.827.272.466.422.99.422 1.563 0 1.247-.736 2.33-1.79 2.825 1.46.45 3.08.315 4.51-.512.9-.525 1.593-1.247 2.073-2.072.27-.467.67-.872 1.16-1.144 1.08-.63 2.39-.524 3.35.136-.33-1.487-1.26-2.84-2.69-3.65-.88-.51-1.86-.752-2.82-.752-.54 0-1.08-.15-1.56-.42-1.08-.63-1.652-1.803-1.547-2.975l-.043.01zm-3.77 10.428c-.664 0-1.286-.36-1.623-.94-.94-1.62-1.43-3.465-1.43-5.334C3.43 5.21 8.21.424 14.1.424c1.03 0 1.872.842 1.872 1.88 0 1.035-.842 1.876-1.88 1.876-3.812 0-6.91 3.102-6.91 6.912 0 1.21.318 2.404.926 3.455.165.28.25.606.25.938 0 1.036-.84 1.878-1.88 1.878v.003z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Bath ASU</title><path d="M20.9734 22.2604c-.33 0-.653-.088-.942-.256a1.88 1.88 0 01-.69-2.5691c1.91-3.2981.77-7.5363-2.5391-9.4434a6.8883 6.8883 0 00-3.4481-.92c-.33 0-.66-.09-.941-.257a1.87 1.87 0 01-.6901-2.5651c.33-.575.946-.93 1.621-.935 1.8631 0 3.7112.49 5.3333 1.427a10.6074 10.6074 0 014.9551 6.4762 10.6204 10.6204 0 01-1.065 8.0964c-.33.57-.96.93-1.622.93l.04.006zm-11.4724 1.31a10.7094 10.7094 0 01-9.2513-5.3362 1.874 1.874 0 01.69-2.559c.872-.504 2.066-.176 2.563.686a6.9313 6.9313 0 005.9923 3.4551c1.201 0 2.3961-.32 3.4461-.925a7.1553 7.1553 0 002.5231-2.5401c.166-.284.392-.524.69-.689.8561-.51 2.0591-.18 2.5532.676.332.57.332 1.292-.015 1.877a10.7164 10.7164 0 01-3.9042 3.9052 10.7344 10.7344 0 01-5.3322 1.427l.05.023zm.746-16.6306a5.6412 5.6412 0 00-1.815 4.1532c0 1.03.277 1.992.76 2.826.271.466.421.9901.421 1.5621a3.1241 3.1241 0 01-1.79 2.8241c1.46.45 3.08.315 4.5091-.512a5.7152 5.7152 0 002.0721-2.07 3.0701 3.0701 0 011.159-1.1441 3.1371 3.1371 0 013.3482.136 5.5612 5.5612 0 00-2.6881-3.6491 5.6232 5.6232 0 00-2.8191-.751c-.54 0-1.08-.15-1.5601-.42a3.1221 3.1221 0 01-1.545-2.9732l-.043.01zM6.479 17.3642c-.664 0-1.286-.36-1.623-.94a10.6304 10.6304 0 01-1.4291-5.3302C3.4278 5.2117 8.206.4296 14.0932.4296a1.878 1.878 0 01-.008 3.7541c-3.8102 0-6.9073 3.1001-6.9073 6.9083a6.9003 6.9003 0 00.926 3.4541 1.878 1.878 0 01-1.63 2.8151v.002z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/battle-dot-net.svg b/assets/lib/simple-icons/icons/battle-dot-net.svg
deleted file mode 100644
index a89d414d..00000000
--- a/assets/lib/simple-icons/icons/battle-dot-net.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Battle.net icon</title><path d="M10.457 0c-.516.02-.859.314-1.053.523-.807.87-1.136 2.298-1.168 3.952-.304-.522-.72-1.061-1.199-1.198a.905.905 0 00-.172-.03c-.958-.138-1.768 1.393-1.66 3.812-1.8.064-3.33.268-4.363.525-.182.045-.312.1-.42.154-.075.035-.128.07-.18.104-.162.106-.234.199-.234.199.47-.177 2.358-.495 5.234-.387l-.004-.045h.006c.126 1.29.502 2.789 1.235 4.409v.003l-.024-.044c-.456.721-1.792 2.923-2.217 4.58-.277 1.081-.202 1.772.014 2.218.262.59.764.776 1.08.848 1.173.268 2.6-.176 4.068-.998-.316.537-.603 1.204-.476 1.709a.881.881 0 00.058.162c.363.897 2.091.832 4.131-.47.948 1.51 1.882 2.72 2.616 3.48.13.136.243.223.345.289.277.195.467.205.467.205-.387-.316-1.598-1.78-2.934-4.303l-.035.028c0-.002-.003-.005-.004-.006 1.064-.76 2.186-1.847 3.23-3.31h.003l-.028.038-.002.004c.896.034 3.41.08 5.03-.373 1.07-.299 1.63-.706 1.91-1.115.383-.523.293-1.054.197-1.365-.354-1.15-1.448-2.16-2.892-3.022.622.005 1.342-.08 1.714-.441a.884.884 0 00.116-.139c.587-.764-.335-2.227-2.479-3.34.834-1.576 1.417-2.989 1.71-4.004.05-.179.067-.319.073-.44.032-.339-.054-.509-.054-.509-.08.493-.743 2.271-2.26 4.69l.041.02-.002.003c-1.19-.54-2.693-.968-4.482-1.14l-.002-.003.05.004c-.418-.793-1.633-2.992-2.834-4.168-.792-.775-1.426-1.058-1.92-1.097a1.532 1.532 0 00-.23-.012zm1.172 2.643c.461.008.936.364 1.328.738.491.47 1.111 1.374 1.412 1.83-.083-.003-.161-.014-.246-.016-1.863-.047-3.216.366-4.195.98.06-1.543.419-2.8 1.238-3.374a.847.847 0 01.463-.158zM7.514 4.71c.03 0 .06.007.09.012.256.07.471.338.642.642.023.563.075 1.144.15 1.733a34.71 34.71 0 00-1.988-.06c.041-1.377.428-2.31 1.106-2.327zm5.478 1.21c.244-.007.494-.003.752.013 2.092.125 4.045.717 5.45 1.443-.33.486-.696.993-1.09 1.514-.601-1.09-1.467-1.74-1.868-1.91-.349-.15-.422-.14-.422-.14s.033-.01.57.413c.579.455 1.046 1.106 1.376 1.805a33.723 33.723 0 00-5.405-1.489 30.386 30.386 0 00-1.847-.283c-.002.011-.002.033-.004.045l-.025-.004c-.016.111-.036.277-.05.46-.014.2-.02.358-.023.452.157.03.316.058.475.09 2.275.45 5.224 1.381 7.363 2.596.034 1.103-.325 2.417-1.19 3.726-1.154 1.75-2.644 3.147-3.976 4a35.941 35.941 0 01-.767-1.705c1.266.037 2.282-.395 2.634-.66.3-.224.33-.294.33-.297-.001.004-.03.044-.64.287-.696.278-1.51.356-2.293.285a33.748 33.748 0 003.988-3.931c.408-.478.797-.967 1.168-1.46l-.035-.025.016-.019a7.198 7.198 0 00-.754-.518l-.315.366c-1.522 1.74-3.794 3.819-5.91 5.066-.964-.525-1.913-1.49-2.61-2.88-.936-1.874-1.4-3.863-1.474-5.442.573.042 1.183.106 1.816.185-.644 1.066-.775 2.144-.722 2.576.045.372.09.43.092.432-.002-.002-.022-.046.072-.697.105-.728.432-1.46.873-2.094a33.707 33.707 0 001.414 5.422c.21.593.437 1.173.678 1.74l.039-.015.011.023c.105-.042.258-.107.422-.187.181-.088.32-.162.403-.208-.054-.15-.108-.303-.16-.457-.748-2.194-1.414-5.212-1.432-7.671.784-.486 1.833-.808 3.07-.846zm6.793 1.788c1.172.724 1.788 1.526 1.465 2.121-.182.264-.605.323-1.025.307a20.285 20.285 0 00-1.504-.7c.383-.582.738-1.162 1.064-1.728zm-1.033 3.518c1.307.823 2.215 1.76 2.303 2.757a.85.85 0 01-.096.485.987.987 0 01-.11.154c-.273.303-.743.49-1.19.621-.653.19-1.746.277-2.292.31.045-.07.09-.132.135-.204.973-1.59 1.293-2.968 1.25-4.123zM6.93 12.936c.046.088.084.173.133.261.883 1.626 1.907 2.59 2.921 3.133-1.374.727-2.647 1.051-3.558.627a.852.852 0 01-.453-.5c-.123-.388-.052-.888.058-1.34.166-.68.662-1.71.899-2.181zm4.6 4.273c.313.625.637 1.223.964 1.789-1.212.652-2.212.785-2.566.207-.017-.027-.026-.059-.037-.088-.075-.28.08-.633.283-.955.453-.29.907-.611 1.355-.953Z"/></svg>
diff --git a/assets/lib/simple-icons/icons/battledotnet.svg b/assets/lib/simple-icons/icons/battledotnet.svg
new file mode 100644
index 00000000..9e86b463
--- /dev/null
+++ b/assets/lib/simple-icons/icons/battledotnet.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Battle.net</title><path d="M20.001 3.106c0-.059 0-.187.063-.187.09 0 .167.19.196.27.486 1.548.35 3.449-.345 5.588 2.756 1.473 4.338 3.382 4.052 5.168-.38 2.347-3.824 3.727-8.462 3.565a27.12 27.12 0 001.55-1.825c1.786-.347 3.066-1.053 3.4-2.184.246-.823-.32-1.736-1.396-2.594-1.768 3.723-4.722 7.058-7.451 8.985 1.323 1.687 2.556 2.858 3.964 3.516.052.025.164.09.126.148-.044.078-.252.05-.33.034-1.585-.352-3.158-1.42-4.673-3.093-2.652 1.65-5.099 2.066-6.502.925-1.842-1.5-1.316-5.178 1.137-9.106.193.631.505 1.526.806 2.253-.594 1.721-.622 3.183.19 4.041.59.623 1.664.59 2.945.088-2.325-3.395-3.738-7.62-4.04-10.954-2.124.303-3.754.785-5.027 1.675-.048.033-.16.098-.195.04-.044-.078.082-.24.137-.304 1.098-1.196 2.812-2.028 5.012-2.496-.102-3.124.758-5.45 2.45-6.093 2.22-.846 5.14 1.448 7.316 5.542a26.617 26.617 0 00-2.354-.429c-1.193-1.372-2.446-2.13-3.594-1.854-.834.2-1.341 1.146-1.547 2.502 4.108-.332 8.473.56 11.51 1.964.8-1.984 1.197-3.637 1.062-5.185zm-9.598 15.057c3.252-1.859 5.889-4.696 7.638-7.965-3.24-1.88-7.013-2.75-10.716-2.627-.008 3.745 1.124 7.451 3.082 10.594Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/bbc.svg b/assets/lib/simple-icons/icons/bbc.svg
new file mode 100644
index 00000000..f8255e09
--- /dev/null
+++ b/assets/lib/simple-icons/icons/bbc.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>BBC</title><path d="M13.004 13c0 .744-.925.7-.925.7h-.925v-1.343h.925c.952-.007.925.644.925.644m-1.85-2.693h.704c.732.04.705.584.705.584 0 .677-.81.688-.81.688h-.6zm1.679 1.536s.633-.27.627-.985c0 0 .096-1.173-1.458-1.316h-1.724v4.917h1.977s1.65.004 1.65-1.388c0 0 .04-.947-1.072-1.228M8.37 8.58h7.258v6.84H8.371zM4.633 13c0 .744-.925.7-.925.7h-.925v-1.343h.925c.952-.007.925.644.925.644m-1.85-2.693h.705c.732.04.704.584.704.584 0 .677-.81.688-.81.688h-.599zm1.679 1.536s.633-.27.627-.985c0 0 .097-1.173-1.457-1.316H1.908v4.917h1.976s1.651.004 1.651-1.388c0 0 .04-.947-1.073-1.228M0 8.58h7.259v6.84H0zm22.52 1.316v.908s-.887-.545-1.867-.556c0 0-1.828-.036-1.91 1.752 0 0-.066 1.645 1.888 1.738 0 0 .82.099 1.932-.61v.94s-1.492.887-3.22.204c0 0-1.454-.53-1.509-2.272 0 0-.06-1.79 1.878-2.385 0 0 .517-.198 1.447-.11 0 0 .556.055 1.36.39m-5.778 5.525H24V8.58h-7.259Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/bbciplayer.svg b/assets/lib/simple-icons/icons/bbciplayer.svg
index 738fc790..85609335 100644
--- a/assets/lib/simple-icons/icons/bbciplayer.svg
+++ b/assets/lib/simple-icons/icons/bbciplayer.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>BBC iPlayer icon</title><path d="M8.315 0H2.382v6.022h5.933V3.506l9.618 8.45-9.618 8.538V8.99H2.382V24h5.933l13.303-12.045Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>BBC iPlayer</title><path d="M8.315 0H2.382v6.022h5.933V3.506l9.618 8.45-9.618 8.538V8.99H2.382V24h5.933l13.303-12.045Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/beatport.svg b/assets/lib/simple-icons/icons/beatport.svg
index 711725e6..70338531 100644
--- a/assets/lib/simple-icons/icons/beatport.svg
+++ b/assets/lib/simple-icons/icons/beatport.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Beatport icon</title><path d="M3.681 17.97a9.293 9.293 0 01-.888-7.527v-.001a.54.54 0 00-.354-.675l-1.232-.383a.54.54 0 00-.673.35l-.002-.001a11.66 11.66 0 001.115 9.453h.002a.54.54 0 00.738.182l1.105-.663a.54.54 0 00.189-.735zM24 13.22c0-1.187-.178-2.357-.53-3.48h.001l-.001-.003-.001-.004a.54.54 0 00-.674-.349l-1.23.383a.54.54 0 00-.356.674l-.001.001c.279.896.422 1.83.422 2.778a9.25 9.25 0 01-1.31 4.75.54.54 0 00.188.738l1.106.663a.54.54 0 00.74-.185A11.624 11.624 0 0024 13.22m-3.29.042c0-4.803-3.907-8.71-8.71-8.71-4.802 0-8.71 3.907-8.71 8.71 0 2.222.839 4.338 2.362 5.96a.54.54 0 00.763.022l.938-.884a.54.54 0 00.025-.76l.001-.001a6.317 6.317 0 01-1.718-4.337 6.346 6.346 0 016.34-6.34 6.347 6.347 0 016.339 6.34c0 1.616-.61 3.157-1.719 4.337l.002.002a.54.54 0 00.026.76l.94.883a.54.54 0 00.762-.023h-.001a8.676 8.676 0 002.36-5.96Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Beatport</title><path d="M14.668 24c-3.857 0-6.935-3.039-6.935-6.974a6.98 6.98 0 011.812-4.714l-4.714 4.714-2.474-2.474 5.319-5.26c.72-.72 1.09-1.656 1.09-2.688V0h3.487v6.604c0 2.026-.72 3.74-2.123 5.143l-.156.156a6.945 6.945 0 014.694-1.812c3.955 0 6.975 3.136 6.975 6.935A6.943 6.943 0 0114.668 24zm0-10.714c-2.123 0-3.779 1.753-3.779 3.74 0 2.045 1.675 3.78 3.78 3.78a3.804 3.804 0 003.818-3.78c0-2.065-1.715-3.74-3.819-3.74Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/beats.svg b/assets/lib/simple-icons/icons/beats.svg
index d0248bcc..b6e2d8f8 100644
--- a/assets/lib/simple-icons/icons/beats.svg
+++ b/assets/lib/simple-icons/icons/beats.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Beats icon</title><path d="M21.55 16.77a7.14 7.14 0 0 1-7.16 7.16H2.45v-7.16h8.36a9.61 9.61 0 0 0 8.5-5.19 7.09 7.09 0 0 1 2.24 5.2zm-4.24-6.53a7.29 7.29 0 0 0 .66-3.01A7.14 7.14 0 0 0 10.8.07H2.46v14.32h8.35c2.9 0 5.37-1.7 6.5-4.15z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Beats</title><path d="M2.625 0v15h8.25a7.5 7.5 0 0 0 0-15zm17.016 11.705c-1.571 3.261-4.91 5.517-8.766 5.517h-8.25V24h11.25a7.5 7.5 0 0 0 5.766-12.295z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/beatsbydre.svg b/assets/lib/simple-icons/icons/beatsbydre.svg
index 0223d48f..9d5584cc 100644
--- a/assets/lib/simple-icons/icons/beatsbydre.svg
+++ b/assets/lib/simple-icons/icons/beatsbydre.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Beats by Dre icon</title><path d="M12.0098 0a12 12 0 00-3.5996.5527v6.6465A6 6 0 116.0098 12V1.6016a12 12 0 106-1.6016zm.1504 8.4023A3.6 3.6 0 008.4102 12a3.6 3.6 0 003.5996 3.5996 3.6 3.6 0 00.1504-7.1973Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Beats by Dre</title><path d="M12.0099 15.5996A3.5995 3.5995 0 1 0 8.4103 12a3.5995 3.5995 0 0 0 3.5996 3.5996zm0-15.5981a11.9985 11.9985 0 0 0-3.5996.552v6.6471A5.9992 5.9992 0 1 1 6.0106 12V1.6033A11.9985 11.9985 0 1 0 12.01.0015z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/behance.svg b/assets/lib/simple-icons/icons/behance.svg
index 7483fdb3..458e8d01 100644
--- a/assets/lib/simple-icons/icons/behance.svg
+++ b/assets/lib/simple-icons/icons/behance.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Behance icon</title><path d="M6.938 4.503c.702 0 1.34.06 1.92.188.577.13 1.07.33 1.485.61.41.28.733.65.96 1.12.225.47.34 1.05.34 1.73 0 .74-.17 1.36-.507 1.86-.338.5-.837.9-1.502 1.22.906.26 1.576.72 2.022 1.37.448.66.665 1.45.665 2.36 0 .75-.13 1.39-.41 1.93-.28.55-.67 1-1.16 1.35-.48.348-1.05.6-1.67.767-.61.165-1.252.254-1.91.254H0V4.51h6.938v-.007zM16.94 16.665c.44.428 1.073.643 1.894.643.59 0 1.1-.148 1.53-.447.424-.29.68-.61.78-.94h2.588c-.403 1.28-1.048 2.2-1.9 2.75-.85.56-1.884.83-3.08.83-.837 0-1.584-.13-2.272-.4-.673-.27-1.24-.65-1.72-1.14-.464-.49-.823-1.08-1.077-1.77-.253-.69-.373-1.45-.373-2.27 0-.803.135-1.54.403-2.23.27-.7.644-1.28 1.12-1.79.495-.51 1.063-.895 1.736-1.194s1.4-.433 2.22-.433c.91 0 1.69.164 2.38.523.67.34 1.22.82 1.66 1.4.44.586.75 1.26.94 2.02.19.75.25 1.54.21 2.38h-7.69c0 .84.28 1.632.71 2.065l-.08.03zm-10.24.05c.317 0 .62-.03.906-.093.29-.06.548-.165.763-.3.21-.135.39-.328.52-.583.13-.24.19-.57.19-.96 0-.75-.22-1.29-.64-1.62-.43-.32-.99-.48-1.69-.48H3.24v4.05H6.7v-.03zm13.607-5.65c-.352-.385-.94-.592-1.657-.592-.468 0-.855.074-1.166.238-.302.15-.55.35-.74.59-.19.24-.317.48-.392.75-.075.26-.12.5-.135.71h4.762c-.07-.75-.33-1.3-.68-1.69v.01zM6.52 10.45c.574 0 1.05-.134 1.425-.412.374-.27.554-.72.554-1.338 0-.344-.07-.625-.18-.846-.13-.22-.3-.39-.5-.512-.21-.124-.45-.21-.72-.257-.27-.053-.56-.074-.84-.074H3.23v3.44h3.29zm9.098-4.958h5.968v1.454h-5.968V5.48v.01z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Behance</title><path d="M0 4.4804V19.243h7.1554c.6613 0 1.3078-.0832 1.9297-.248.6288-.1654 1.1905-.4203 1.6792-.7661.485-.3431.8784-.788 1.1677-1.3369.2862-.542.4294-1.187.4294-1.9354 0-.9232-.219-1.7109-.6675-2.369-.446-.6542-1.1187-1.1139-2.0274-1.3746.6674-.3161 1.1658-.7227 1.506-1.2177.3371-.4967.5058-1.1174.5058-1.8607 0-.6873-.1127-1.2677-.3375-1.7318-.2306-.4709-.552-.8452-.9632-1.1266-.4176-.2808-.912-.4857-1.4912-.6085-.5827-.1261-1.22-.1872-1.9264-.1872zm15.6674.9903v1.4567h5.9844V5.4707zM3.2509 6.9947h3.0407c.2873 0 .5683.0204.8359.0731.2728.0466.508.134.716.2595.2096.1205.3754.293.501.5132.1208.2203.1806.5038.1806.8474 0 .6189-.1811 1.0702-.5551 1.3426-.3778.2775-.8543.4147-1.4304.4147H3.2509zm15.545 1.2564c-.819 0-1.5587.1462-2.2294.436-.6705.2904-1.2463.6875-1.7318 1.1915-.4846.5011-.8535 1.0986-1.12 1.7909-.2612.69-.3942 1.4366-.3942 2.236 0 .8268.1284 1.5891.3835 2.2786.258.6923.6198 1.2822 1.0856 1.781.478.4967 1.046.8784 1.726 1.1497.6806.269 1.4382.4048 2.2803.4048 1.208 0 2.2446-.2771 3.0949-.8326.8599-.5528 1.4902-1.471 1.9058-2.7574h-2.585c-.1.3307-.359.649-.784.9467-.4295.2988-.9417.4492-1.534.4492-.8233 0-1.4588-.2168-1.8985-.6462-.4412-.4294-.7267-1.2289-.7267-2.0742h7.713c.0552-.8291-.0122-1.6218-.2045-2.3797-.1938-.7601-.5033-1.4365-.9393-2.029-.4355-.5931-.9904-1.0667-1.667-1.4165-.6788-.3543-1.4703-.5288-2.3747-.5288zm-.0887 2.217c.7209 0 1.3126.2092 1.6612.5954.3503.389.6065.9432.6766 1.6915h-4.7766c.0136-.2085.058-.4444.1339-.7045.0749-.2668.2039-.5164.3933-.753.1905-.2326.4402-.431.744-.5896.3109-.1608.6986-.2397 1.1676-.2397zM3.251 12.664h3.5334c.6996 0 1.2682.1602 1.6948.4836.4259.328.6405.8685.6405 1.6292 0 .3885-.0632.7094-.1946.9566-.131.2495-.3106.4466-.528.5896-.2172.1491-.4753.2498-.7661.3137-.2862.0639-.5905.092-.9115.092H3.2509z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/beijingsubway.svg b/assets/lib/simple-icons/icons/beijingsubway.svg
index 02cdb87b..1a2b30ab 100644
--- a/assets/lib/simple-icons/icons/beijingsubway.svg
+++ b/assets/lib/simple-icons/icons/beijingsubway.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Beijing Subway icon</title><path d="M7.8857.7537C11.2092-.5 15.09-.1816 18.1547 1.6493c2.826 1.6916 5.055 4.7166 5.5526 7.5028-1.2538 0-1.5523.0398-2.7862.0398-.796-2.5872-3.7216-5.4729-6.1097-6.07-3.1246-.6567-5.6321-.199-7.8014 1.3335C5.418 5.55 3.9253 7.4604 3.368 9.3312c-.8159 2.408-.1592 5.8112 1.234 7.9208 1.0945 1.5722 3.005 3.0648 4.836 3.642 1.7911.5572 4.7166.0397 6.4878-.5971 2.4877-.9155 4.3186-3.1842 5.1147-5.6918l-3.4628.0398c-.1593 1.1543-.3384 1.5523-1.035 2.8857l-9.4929-.0199V6.4257h9.473c1.1345 1.4328 1.3136 3.6817 1.3335 5.5723 0 0 3.8011.02 6.1296 0-.0398 3.6022-1.5523 7.1645-4.4181 9.3935-2.0897 1.6518-4.7166 2.607-7.3834 2.607-3.7216.0598-7.4232-1.7314-9.6522-4.7166C1.0992 17.451.343 15.2021.0445 12.9334c-.0796-1.3931.02-2.0897.0398-2.1693C.343 9.1521.761 7.56 1.577 6.167 2.9501 3.6792 5.219 1.7289 7.8857.7537m1.811 8.1795v6.2291l4.5972.02c1.0349-1.1942.995-1.9703-.0398-3.0649 1.0349-1.0946 1.0946-2.2488.02-3.1842H9.6966Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Beijing Subway</title><path d="M7.8857.7537C11.2092-.5 15.09-.1816 18.1547 1.6493c2.826 1.6916 5.055 4.7166 5.5526 7.5028-1.2538 0-1.5523.0398-2.7862.0398-.796-2.5872-3.7216-5.4729-6.1097-6.07-3.1246-.6567-5.6321-.199-7.8014 1.3335C5.418 5.55 3.9253 7.4604 3.368 9.3312c-.8159 2.408-.1592 5.8112 1.234 7.9208 1.0945 1.5722 3.005 3.0648 4.836 3.642 1.7911.5572 4.7166.0397 6.4878-.5971 2.4877-.9155 4.3186-3.1842 5.1147-5.6918l-3.4628.0398c-.1593 1.1543-.3384 1.5523-1.035 2.8857l-9.4929-.0199V6.4257h9.473c1.1345 1.4328 1.3136 3.6817 1.3335 5.5723 0 0 3.8011.02 6.1296 0-.0398 3.6022-1.5523 7.1645-4.4181 9.3935-2.0897 1.6518-4.7166 2.607-7.3834 2.607-3.7216.0598-7.4232-1.7314-9.6522-4.7166C1.0992 17.451.343 15.2021.0445 12.9334c-.0796-1.3931.02-2.0897.0398-2.1693C.343 9.1521.761 7.56 1.577 6.167 2.9501 3.6792 5.219 1.7289 7.8857.7537m1.811 8.1795v6.2291l4.5972.02c1.0349-1.1942.995-1.9703-.0398-3.0649 1.0349-1.0946 1.0946-2.2488.02-3.1842H9.6966Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/bem.svg b/assets/lib/simple-icons/icons/bem.svg
new file mode 100644
index 00000000..ddb699ad
--- /dev/null
+++ b/assets/lib/simple-icons/icons/bem.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>BEM</title><path d="M0 5.163h5.61v1.65H0Zm0-3.065h5.61v1.65H0Zm10.067 6.106H0v1.65h9.69c1.06 0 3.536.024 4.455 1.51v-.92c-.448-1.462-1.768-2.24-4.078-2.24Zm.023 3.065H0v1.65h9.69c2.357 0 3.842.095 4.455.425v-.731c-.471-1.155-2.451-1.344-4.055-1.344Zm-.023 7.78H0V17.4h9.69c1.06 0 3.536-.024 4.455-1.509v.92c-.448 1.461-1.768 2.24-4.078 2.24zm.023-3.065H0v-1.65h9.69c2.357 0 3.842-.094 4.455-.424v.73c-.471 1.156-2.451 1.344-4.055 1.344zm6.507 5.918H24v-1.014h-7.19c-.637 0-2.146-.023-2.688-.896v.566c.26.872 1.06 1.344 2.475 1.344zm-.023-1.863h7.403v-1.013H16.81c-1.439 0-2.334-.047-2.688-.26v.448c.283.708 1.485.825 2.452.825z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/bentley.svg b/assets/lib/simple-icons/icons/bentley.svg
index cbbe29b1..713da37b 100644
--- a/assets/lib/simple-icons/icons/bentley.svg
+++ b/assets/lib/simple-icons/icons/bentley.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Bentley icon</title><path d="M11.535 8.114a5.407 5.407 0 0 0-1.49.34c-.131.05-.269.135-.414.079-.654-.153-1.331-.096-1.992-.025-.859.09-1.72-.003-2.579-.045a21.543 21.543 0 0 0-2.349.05c-.713.044-1.429-.01-2.138-.086-.088-.002-.178-.02-.265-.002-.135.088-.22.232-.308.363v.068c.185.158.404.262.625.358-.062.151-.101.31-.13.47.264.124.54.227.796.368-.029.095-.072.186-.083.285-.006.059.024.121.083.142.21.11.448.142.665.23.021.01.05.02.05.048.017.128.02.258.047.385a.173.173 0 0 0 .057.035c.287.095.588.131.881.196.034.11.022.249.106.336.375.196.82.1 1.213.228.098.096.075.29.223.344.296.09.614.01.918.05.069.079.077.193.144.273a.249.249 0 0 0 .169.076c.287.008.562-.087.846-.12.059.099.087.247.213.277.229.045.452-.042.665-.116.08.26.166.521.303.758.473.858 1.288 1.499 2.198 1.841.128.036.172.175.238.276.127-.048.252-.102.384-.134l.2.297c.119-.06.237-.122.356-.184.08.094.16.187.242.28l.31-.22c.09.078.173.164.254.251h.035c.096-.085.187-.177.282-.263.106.077.21.156.316.235.081-.095.163-.19.246-.284.12.06.238.123.357.184.063-.098.124-.196.185-.295.14.031.27.089.404.136.033-.068.065-.138.102-.204.053-.142.22-.164.336-.232.972-.447 1.78-1.286 2.099-2.318.162.06.345.134.517.064.09-.046.125-.144.168-.228.24.053.48.154.73.102.13-.039.194-.161.253-.271.23.03.456.095.69.075.104-.013.247 0 .318-.096.059-.096.067-.215.124-.312.315-.042.648.042.954-.072.096-.108.097-.27.184-.383.247-.018.495 0 .742-.018a.286.286 0 0 0 .215-.123c.056-.107.064-.23.1-.344.007-.024.02-.05.044-.061.241-.1.534-.022.755-.177.108-.12.021-.31.088-.443.207-.118.477-.088.669-.241.129-.11.032-.282.014-.42.225-.077.472-.119.657-.279-.052-.14-.113-.275-.17-.412A4.67 4.67 0 0 0 24 8.871v-.087a1.176 1.176 0 0 0-.272-.34c-.071-.053-.17-.01-.25-.018-.696.062-1.396.13-2.095.092-.417-.022-.833-.062-1.25-.062-.522 0-1.044-.015-1.564.027-.77.046-1.544.103-2.313.017-.657-.077-1.335-.115-1.981.053-.103.043-.211.009-.305-.037-.516-.234-1.077-.348-1.638-.402zm.521.155c.327.014.654.049.974.122.31.072.622.149.91.287-.103.065-.227.164-.354.11a5.088 5.088 0 0 0-1.716-.29c-.326.02-.652.046-.97.125-.204.04-.4.116-.606.149-.096-.026-.184-.073-.272-.119a5.653 5.653 0 0 1 2.034-.384zm11.467.278c.17-.01.308.126.395.26a2.31 2.31 0 0 1-1.093.252c-1.65.027-3.298.095-4.947.137 0 .027.002.054.004.081a2.744 2.744 0 0 1-.048-.154c.361-.05.72-.12 1.085-.142.668-.05 1.34-.068 2.01-.075a.394.394 0 0 0 .245-.072c-.533-.057-1.07-.026-1.604-.013-.371.027-.744.033-1.114.08-.495.06-.989.154-1.489.16-.312.005-.625.032-.937.01-.39-.007-.786-.042-1.17.045-.108.035-.239.073-.282.192-.093.188.01.398.095.569.103.217.279.425.247.682-.015.091-.092.151-.162.203a2.4 2.4 0 0 1-.198-.251c.04-.08.106-.155.088-.252-.033-.2-.178-.358-.314-.498-.196-.19-.414-.367-.547-.61-.039-.07-.066-.17.009-.227.22-.156.491-.209.752-.252.715-.1 1.436-.015 2.153.015.353.035.709.03 1.063 0 .838-.054 1.68-.138 2.52-.082.378.021.757.038 1.135.047.692.028 1.38-.062 2.07-.101a.308.308 0 0 1 .034-.004zM.55 8.55c.196-.002.392.027.587.04.542.048 1.086.079 1.63.056.674-.008 1.345-.088 2.019-.052.687.022 1.37.098 2.058.119.525-.018 1.049-.06 1.574-.084.533-.017 1.087-.011 1.59.187.097.04.217.093.24.207-.02.158-.14.28-.238.399-.175.216-.429.36-.57.605-.11.14-.126.35-.005.488a1.808 1.808 0 0 1-.219.243c-.083-.076-.16-.17-.15-.292.038-.346.347-.593.383-.94.031-.121-.031-.239-.108-.327a1.155 1.155 0 0 0-.468-.124c-.562-.048-1.126.027-1.689-.007-.557.004-1.107-.093-1.657-.167a26.874 26.874 0 0 0-2.115-.106c-.195-.003-.39.015-.585.032.063.052.14.087.225.078.733.01 1.466.022 2.197.085.307.029.61.084.916.131l-.023.084c-.536-.033-1.074-.028-1.611-.05-.965-.035-1.93-.065-2.895-.081-.411-.027-.841.017-1.234-.134-.11-.037-.213-.088-.317-.136.076-.093.153-.199.27-.24.065-.01.13-.014.195-.014zm11.455.114a4.324 4.324 0 0 1 1.597.296c.004.104-.029.218.024.313a1.245 1.245 0 0 0 .16.229c.18.212.41.383.588.597a.716.716 0 0 1 .157.272 3.76 3.76 0 0 0-1.267-.755 3.848 3.848 0 0 0-3.158.28c-.174.098-.332.22-.486.348l-.152.128a.502.502 0 0 1 .06-.147c.223-.315.556-.533.781-.846.11-.133.1-.31.083-.47a5.558 5.558 0 0 1 1.613-.245zm5.762.455c.016.044.03.088.044.132-.313.18-.688.135-1.032.09-.078-.007-.124-.074-.155-.139.38-.041.763-.038 1.143-.083zm-11.55.016c.386.006.771.025 1.154.064-.03.051-.054.124-.122.132-.203.035-.41.041-.614.049-.158.01-.303-.062-.44-.129l.023-.116zm1.207.055c.154.003.309.005.463.014.41.017.831-.016 1.23.105.099.034.208.08.259.178.039.172-.06.325-.144.464-.083.151-.197.293-.235.464-.048.16.05.294.124.423-.112.004-.25.051-.338-.04-.041-.082.007-.179.024-.263l-.16.143-.195-.012c-.015-.203.141-.35.221-.521-.138.123-.278.297-.483.281-.081.003-.143-.104-.093-.169.111-.141.255-.254.359-.402-.124.096-.25.195-.397.251a.464.464 0 0 1-.326-.038c.018-.204.234-.276.35-.417-.127.053-.24.154-.387.145-.058.002-.115-.016-.17-.029-.01-.173.171-.234.273-.337-.09.02-.177.062-.27.06-.062-.022-.11-.072-.164-.108.015-.066.035-.13.06-.192zm9.156 0c.018.078.087.178-.005.237-.1.125-.268.022-.39-.002.112.096.285.167.284.343-.096.017-.2.05-.295.01-.088-.036-.173-.081-.259-.122.027.027.055.053.084.078l.087.076c.057.051.113.104.16.164.016.068-.033.14-.106.139-.233.059-.415-.127-.584-.254.089.121.195.226.297.335.051.054.046.135.064.203-.084.011-.174.044-.256.008-.128-.052-.225-.155-.33-.243.091.16.23.305.216.502l-.208.008a10.001 10.001 0 0 1-.137-.132c.008.082.06.176.007.25-.062.07-.158.065-.246.063-.03 0-.059 0-.086.003.047-.119.14-.222.137-.356-.036-.35-.358-.587-.406-.932-.01-.149.154-.218.273-.261.554-.145 1.133-.073 1.7-.117zM.698 9.192c.77 0 1.54.04 2.31.047.963.021 1.926.028 2.888.053.2-.014.365.116.53.207l-.018.19a5.46 5.46 0 0 1-.089.043l.026-.073c-.899.024-1.796.085-2.695.112-.566.012-1.13.06-1.697.05A3.707 3.707 0 0 1 .89 9.705c-.115-.034-.247-.052-.338-.137-.001-.135.073-.264.145-.376zm22.62.022c.064.111.132.222.179.342-.43.14-.89.133-1.336.116-.828-.002-1.656-.055-2.484-.083-.699-.032-1.398-.06-2.097-.1.143-.102.305-.202.486-.196 1.751-.007 3.501-.078 5.252-.08zm-16.073.214c.077.005.136.074.194.12a.138.138 0 0 1 .05.116c-.078.06-.181.068-.273.092-.186.034-.37.09-.56.097-.067-.026-.14-.055-.185-.116-.016-.084.01-.2.104-.222.21-.042.425-.054.636-.085a.139.139 0 0 1 .034-.002zm9.465.008c.235 0 .47.03.7.073.109.021.106.15.134.234-.09.05-.177.13-.29.107-.163-.025-.323-.066-.485-.096-.087-.022-.187-.029-.258-.09.005-.108.116-.177.2-.228zm-4.785.138c.908-.02 1.842.29 2.495.935.358.365.62.856.612 1.377.01.47-.199.926-.507 1.274-.566.642-1.415.983-2.256 1.046a3.577 3.577 0 0 1-2.17-.514c-.345-.22-.66-.5-.867-.858a1.853 1.853 0 0 1-.227-1.365c.099-.415.356-.774.668-1.057.565-.51 1.318-.775 2.07-.83.06-.004.121-.006.182-.008zm5.64.023c.218-.005.435.025.653.035 1.44.088 2.882.14 4.322.224.093.014.198-.004.283.043.057.083.072.185.087.283-.302.185-.678.14-1.015.149-.425-.028-.85-.08-1.274-.121a15.638 15.638 0 0 0-.425-.036c-.872-.087-1.747-.139-2.615-.258a1.474 1.474 0 0 0-.016-.32zm-5.553.01c-.116 0-.23.005-.345.016-.805.077-1.627.39-2.161 1.02-.308.348-.518.809-.484 1.282.018.674.448 1.273.985 1.65.884.618 2.057.75 3.079.44.46-.149.903-.38 1.245-.727.428-.414.714-1.017.635-1.622-.065-.495-.35-.941-.723-1.265-.61-.536-1.425-.795-2.231-.794zm-5.915.175c.059 0 .118 0 .178.002.148.042.249.167.359.266-.027.077-.05.155-.072.234.072.057.149.108.23.15-.517.084-1.03.193-1.544.292l-.464.102-.465.098c-.31.063-.621.123-.934.174-.405.072-.828.05-1.222-.069-.113-.032-.141-.162-.095-.262.017-.1.141-.09.215-.105 1.276-.13 2.548-.295 3.82-.447.178-.019.38-.023.51-.163-.701.064-1.402.142-2.102.22l-1.051.113c-.35.036-.701.07-1.052.1-.394.04-.802.002-1.17-.153a1.65 1.65 0 0 1 .144-.328c1.393-.063 2.789-.092 4.18-.195.178-.008.356-.025.535-.029zm1.256.064a.56.56 0 0 1 .122.008c.084.025.162.067.24.105-.009.132-.138.166-.238.212-.125.051-.247.11-.375.153-.162.052-.325-.028-.474-.087.02-.068.028-.144.07-.203a.916.916 0 0 1 .297-.12c.117-.03.237-.064.358-.068zm9.248 0c.177-.004.35.054.517.106.064.026.144.036.192.092.032.06.04.13.064.192-.146.053-.302.145-.462.093a6.866 6.866 0 0 1-.632-.271c.018-.123.137-.18.245-.206a.718.718 0 0 1 .076-.006zm.887.172c.239-.004.474.041.711.066.758.085 1.517.168 2.276.246.543.068 1.09.108 1.632.19.013.107.126.312-.033.35a4.135 4.135 0 0 1-1.12.025c-1.182-.184-2.36-.394-3.544-.566a4.356 4.356 0 0 0-.024-.307c.034-.002.068-.004.102-.004zm-5.377.111c.253.001.504.032.748.103.282.084.568.226.73.482.111.16.124.368.087.554-.056.226-.263.365-.442.492l.004.042c.265.181.554.434.545.785.025.254-.11.492-.293.657-.129.098-.27.183-.422.241-.43.149-.892.168-1.342.138-.552-.069-1.13-.224-1.537-.627.07-.094.16-.17.224-.268a23.17 23.17 0 0 0 .006-1.615c-.066-.099-.157-.177-.231-.27.274-.375.732-.545 1.17-.64.247-.047.5-.075.753-.074zm4.163.063c.029 0 .058.001.086.008.169.065.332.144.494.225.036.024.09.036.106.082.004.08-.034.168-.113.197-.115.048-.253.078-.37.024-.191-.084-.365-.202-.544-.307.017-.042.025-.095.054-.13a.1.1 0 0 1 .038-.027.606.606 0 0 1 .249-.072zm-8.563 0a.555.555 0 0 1 .276.078c.065.031.079.14.017.18-.162.11-.332.21-.514.281-.143.047-.287-.007-.42-.053l-.04-.194c.168-.088.34-.173.514-.25a.36.36 0 0 1 .167-.042zm4.37.172a2.535 2.535 0 0 0-.282.015.623.623 0 0 0-.361.168c-.163.169-.176.422-.145.641a.563.563 0 0 0 .367.487c.233.079.49.075.725.01.254-.085.382-.362.376-.614.013-.213-.04-.462-.231-.586a.807.807 0 0 0-.449-.12zm5.287.085c.27.006.54.052.806.099.833.15 1.666.301 2.498.458.21.043.423.079.63.138-.028.125-.043.32-.202.344-.513.065-1.028-.05-1.52-.187-.814-.22-1.637-.414-2.45-.64a.435.435 0 0 0-.149-.007c.013-.052.017-.107.042-.154.064-.048.153-.045.229-.05h.116zm-10.387.055c.028.114.052.229.097.337-.634.195-1.267.39-1.904.572-.338.097-.67.223-1.02.27-.316.028-.64.013-.948-.066-.126-.034-.16-.17-.163-.284.89-.193 1.777-.399 2.67-.577.422-.085.839-.203 1.268-.252zm8.897.051a.266.266 0 0 1 .177.063c.15.099.297.2.448.296a.196.196 0 0 0-.014.043l-.01.047c-.009.032-.021.061-.05.077-.13.014-.269.043-.396-.006a2.215 2.215 0 0 1-.396-.324c-.046-.039-.041-.116-.002-.158a.093.093 0 0 1 .05-.027c.061-.003.128-.013.193-.01zm-7.713 0c.051 0 .102.004.152.01.069.017.116.122.047.169-.156.156-.318.354-.557.365-.08-.001-.16.002-.238-.015-.057-.038-.052-.12-.071-.176.173-.11.338-.231.516-.333a.63.63 0 0 1 .15-.02zm8.857.204c.162.017.316.07.473.108.766.225 1.533.447 2.298.674.143.043.289.079.426.138-.038.095-.074.203-.163.262a2.07 2.07 0 0 1-1.1-.072c-.27-.103-.527-.233-.792-.346-.48-.205-.958-.419-1.445-.61.103-.047.195-.121.303-.154zm-1.563.04c.105 0 .19.084.266.148.072.072.167.131.212.225.015.085-.055.159-.079.235-.104-.02-.234.02-.318-.066a1.57 1.57 0 0 1-.322-.397c-.016-.086.083-.138.163-.141l.032.001a.202.202 0 0 1 .046-.005zm-6.891.004a.423.423 0 0 1 .23.082 1.5 1.5 0 0 1-.34.455c-.074.09-.2.075-.3.045-.063-.047-.086-.13-.124-.196.123-.127.24-.262.389-.359a.32.32 0 0 1 .145-.027zm-1.326.12a.848.848 0 0 1 .108.002c.102.015.115.135.153.212-.178.06-.341.153-.508.236-.434.208-.857.435-1.29.645-.295.156-.643.13-.966.133-.09-.009-.191 0-.27-.052-.052-.067-.074-.152-.1-.232.245-.124.516-.18.77-.283.456-.172.924-.31 1.384-.47.238-.067.471-.179.72-.19zm7.692.011c.093.022.207.015.277.091.098.133.197.272.253.428-.018.12-.154.2-.272.195-.04-.253-.148-.485-.258-.714zm-5.888.003a2.99 2.99 0 0 0-.242.718c-.095-.022-.214-.046-.256-.147-.03-.05-.001-.105.022-.15a2.1 2.1 0 0 1 .225-.346c.071-.054.167-.054.251-.075zm7.515.028c.182.033.342.134.508.212.661.309 1.32.623 1.977.942-.013.07-.011.154-.059.214-.163.063-.344.037-.513.02-.206-.023-.42-.047-.601-.16-.507-.315-.98-.687-1.509-.966.115-.042.154-.159.197-.262zm-8.832.254c.09 0 .18.014.267.042-.194.232-.456.392-.695.571-.28.19-.538.417-.85.553a2.027 2.027 0 0 1-.761.104c-.112-.014-.161-.118-.166-.22.587-.32 1.187-.615 1.774-.933a.83.83 0 0 1 .43-.117zm8.426.018a.6.6 0 0 1 .321.134c.449.335.896.674 1.346 1.007.06.031.091.091.116.152-.126.054-.263.12-.403.078-.041-.01-.084-.018-.126-.027a.946.946 0 0 1-.364-.13c-.427-.27-.773-.65-1.206-.912.092-.082.12-.21.206-.293a.399.399 0 0 1 .11-.009zm-8.156.176c.114.178.334.117.508.165-.38.273-.666.652-1.042.93-.228.169-.583.234-.814.037.113-.175.29-.29.447-.423.3-.236.593-.483.901-.709zm7.554.125c.11.023.233.032.319.116.284.24.551.498.836.738.097.09.227.167.238.315-.095.035-.202.075-.302.033a.672.672 0 0 1-.071-.023c-.162-.063-.295-.183-.424-.297a9.813 9.813 0 0 0-.769-.679c.056-.069.114-.137.173-.203zm-7.068.176c.102.027.201.065.303.091.013.1.02.2.026.3-.174.175-.307.406-.541.51-.156.06-.327.081-.493.06-.057-.012-.097-.057-.138-.095.278-.292.54-.6.843-.866zm6.729.073c.151-.002.25.118.344.218.196.228.42.428.622.649-.043.057-.09.136-.18.106a.738.738 0 0 1-.311-.05c-.208-.1-.345-.293-.522-.433l.047-.49zm-3.103.132a1.564 1.564 0 0 0-.255.014c-.274.032-.537.235-.584.515-.03.271-.019.602.204.796.147.12.34.16.525.176.258.008.56-.033.72-.264.175-.264.176-.623.054-.908-.132-.24-.401-.322-.664-.33zm-3.303.33c.066.17.114.346.16.522-.12-.023-.302-.01-.37-.138-.033-.161.117-.274.21-.383zm6.349.15c.087.077.204.181.17.31-.067.117-.218.118-.335.13a33.1 33.1 0 0 0 .165-.44zm-6.69.321c.093.077.195.157.319.176.08.024.173.018.245.063.156.191.294.399.488.555.299.277.658.469.995.692-.058.24-.213.437-.339.644-.92-.353-1.719-1.07-2.085-1.995.126-.042.252-.087.376-.135zm6.993.063c.093.037.186.075.28.11-.185.51-.532.95-.94 1.301a3.133 3.133 0 0 1-1.012.6c-.08-.14-.166-.278-.236-.424-.02-.05-.052-.118-.01-.165.098-.098.227-.156.346-.224.248-.148.476-.327.686-.526.14-.134.228-.312.357-.456.11-.043.238-.024.347-.074.07-.036.124-.092.182-.142zm-7.67.07l.204.003c.174.43.422.837.76 1.157.207.187.408.384.649.527.23.152.482.262.73.38a1.417 1.417 0 0 1-.089.2 4.51 4.51 0 0 1-.699-.352c-.3-.177-.55-.421-.8-.66-.26-.253-.43-.58-.604-.894-.065-.114-.106-.239-.15-.361zm8.027.058l.22.02a3.174 3.174 0 0 1-.847 1.33c-.372.34-.785.665-1.272.82-.034-.07-.068-.14-.1-.212.305-.137.61-.289.87-.504.48-.388.91-.868 1.129-1.454zm-1.348.433c-.19.266-.485.42-.746.605-.12.093-.29.15-.339.31.011.094.087.164.13.245.108.186.215.374.302.57.048.124-.001.252-.048.367-.158-.043-.334-.115-.403-.275-.133-.241-.13-.544-.315-.76-.017.322.216.582.255.893-.016.109-.084.202-.136.297-.139-.078-.31-.156-.343-.329-.095-.256-.037-.563-.192-.797-.063.223.046.44.088.656.023.134.082.303-.023.417a2.76 2.76 0 0 1-.106.133c-.105-.075-.24-.145-.275-.28-.059-.26-.016-.53-.064-.79-.014-.033-.037-.059-.058-.086-.07.31.085.616.047.928-.042.112-.135.229-.26.25-.115-.08-.222-.2-.221-.35-.015-.271.087-.535.073-.807l-.073-.002c-.037.23-.018.465-.033.697a.487.487 0 0 1-.104.294c-.06.054-.127.1-.197.142-.063-.066-.135-.13-.173-.216-.034-.13.013-.26.04-.388.047-.192.115-.384.106-.584h-.066c-.083.259-.081.533-.154.794a.468.468 0 0 1-.273.295c-.054.024-.119-.014-.14-.066-.097-.123-.048-.289-.005-.423.086-.222.192-.439.24-.674l-.066-.027c-.14.26-.174.564-.32.821a.478.478 0 0 1-.311.24c-.045.015-.08-.022-.1-.057a.386.386 0 0 1-.005-.334c.112-.241.27-.46.38-.702.02-.066.056-.155.001-.213-.22-.226-.546-.3-.77-.522.233.138.459.296.716.386.923.372 1.99.383 2.915.011.39-.136.729-.387 1.026-.669Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Bentley</title><path d="M11.535 8.114a5.407 5.407 0 0 0-1.49.34c-.131.05-.269.135-.414.079-.654-.153-1.331-.096-1.992-.025-.859.09-1.72-.003-2.579-.045a21.543 21.543 0 0 0-2.349.05c-.713.044-1.429-.01-2.138-.086-.088-.002-.178-.02-.265-.002-.135.088-.22.232-.308.363v.068c.185.158.404.262.625.358-.062.151-.101.31-.13.47.264.124.54.227.796.368-.029.095-.072.186-.083.285-.006.059.024.121.083.142.21.11.448.142.665.23.021.01.05.02.05.048.017.128.02.258.047.385a.173.173 0 0 0 .057.035c.287.095.588.131.881.196.034.11.022.249.106.336.375.196.82.1 1.213.228.098.096.075.29.223.344.296.09.614.01.918.05.069.079.077.193.144.273a.249.249 0 0 0 .169.076c.287.008.562-.087.846-.12.059.099.087.247.213.277.229.045.452-.042.665-.116.08.26.166.521.303.758.473.858 1.288 1.499 2.198 1.841.128.036.172.175.238.276.127-.048.252-.102.384-.134l.2.297c.119-.06.237-.122.356-.184.08.094.16.187.242.28l.31-.22c.09.078.173.164.254.251h.035c.096-.085.187-.177.282-.263.106.077.21.156.316.235.081-.095.163-.19.246-.284.12.06.238.123.357.184.063-.098.124-.196.185-.295.14.031.27.089.404.136.033-.068.065-.138.102-.204.053-.142.22-.164.336-.232.972-.447 1.78-1.286 2.099-2.318.162.06.345.134.517.064.09-.046.125-.144.168-.228.24.053.48.154.73.102.13-.039.194-.161.253-.271.23.03.456.095.69.075.104-.013.247 0 .318-.096.059-.096.067-.215.124-.312.315-.042.648.042.954-.072.096-.108.097-.27.184-.383.247-.018.495 0 .742-.018a.286.286 0 0 0 .215-.123c.056-.107.064-.23.1-.344.007-.024.02-.05.044-.061.241-.1.534-.022.755-.177.108-.12.021-.31.088-.443.207-.118.477-.088.669-.241.129-.11.032-.282.014-.42.225-.077.472-.119.657-.279-.052-.14-.113-.275-.17-.412A4.67 4.67 0 0 0 24 8.871v-.087a1.176 1.176 0 0 0-.272-.34c-.071-.053-.17-.01-.25-.018-.696.062-1.396.13-2.095.092-.417-.022-.833-.062-1.25-.062-.522 0-1.044-.015-1.564.027-.77.046-1.544.103-2.313.017-.657-.077-1.335-.115-1.981.053-.103.043-.211.009-.305-.037-.516-.234-1.077-.348-1.638-.402zm.521.155c.327.014.654.049.974.122.31.072.622.149.91.287-.103.065-.227.164-.354.11a5.088 5.088 0 0 0-1.716-.29c-.326.02-.652.046-.97.125-.204.04-.4.116-.606.149-.096-.026-.184-.073-.272-.119a5.653 5.653 0 0 1 2.034-.384zm11.467.278c.17-.01.308.126.395.26a2.31 2.31 0 0 1-1.093.252c-1.65.027-3.298.095-4.947.137 0 .027.002.054.004.081a2.744 2.744 0 0 1-.048-.154c.361-.05.72-.12 1.085-.142.668-.05 1.34-.068 2.01-.075a.394.394 0 0 0 .245-.072c-.533-.057-1.07-.026-1.604-.013-.371.027-.744.033-1.114.08-.495.06-.989.154-1.489.16-.312.005-.625.032-.937.01-.39-.007-.786-.042-1.17.045-.108.035-.239.073-.282.192-.093.188.01.398.095.569.103.217.279.425.247.682-.015.091-.092.151-.162.203a2.4 2.4 0 0 1-.198-.251c.04-.08.106-.155.088-.252-.033-.2-.178-.358-.314-.498-.196-.19-.414-.367-.547-.61-.039-.07-.066-.17.009-.227.22-.156.491-.209.752-.252.715-.1 1.436-.015 2.153.015.353.035.709.03 1.063 0 .838-.054 1.68-.138 2.52-.082.378.021.757.038 1.135.047.692.028 1.38-.062 2.07-.101a.308.308 0 0 1 .034-.004zM.55 8.55c.196-.002.392.027.587.04.542.048 1.086.079 1.63.056.674-.008 1.345-.088 2.019-.052.687.022 1.37.098 2.058.119.525-.018 1.049-.06 1.574-.084.533-.017 1.087-.011 1.59.187.097.04.217.093.24.207-.02.158-.14.28-.238.399-.175.216-.429.36-.57.605-.11.14-.126.35-.005.488a1.808 1.808 0 0 1-.219.243c-.083-.076-.16-.17-.15-.292.038-.346.347-.593.383-.94.031-.121-.031-.239-.108-.327a1.155 1.155 0 0 0-.468-.124c-.562-.048-1.126.027-1.689-.007-.557.004-1.107-.093-1.657-.167a26.874 26.874 0 0 0-2.115-.106c-.195-.003-.39.015-.585.032.063.052.14.087.225.078.733.01 1.466.022 2.197.085.307.029.61.084.916.131l-.023.084c-.536-.033-1.074-.028-1.611-.05-.965-.035-1.93-.065-2.895-.081-.411-.027-.841.017-1.234-.134-.11-.037-.213-.088-.317-.136.076-.093.153-.199.27-.24.065-.01.13-.014.195-.014zm11.455.114a4.324 4.324 0 0 1 1.597.296c.004.104-.029.218.024.313a1.245 1.245 0 0 0 .16.229c.18.212.41.383.588.597a.716.716 0 0 1 .157.272 3.76 3.76 0 0 0-1.267-.755 3.848 3.848 0 0 0-3.158.28c-.174.098-.332.22-.486.348l-.152.128a.502.502 0 0 1 .06-.147c.223-.315.556-.533.781-.846.11-.133.1-.31.083-.47a5.558 5.558 0 0 1 1.613-.245zm5.762.455c.016.044.03.088.044.132-.313.18-.688.135-1.032.09-.078-.007-.124-.074-.155-.139.38-.041.763-.038 1.143-.083zm-11.55.016c.386.006.771.025 1.154.064-.03.051-.054.124-.122.132-.203.035-.41.041-.614.049-.158.01-.303-.062-.44-.129l.023-.116zm1.207.055c.154.003.309.005.463.014.41.017.831-.016 1.23.105.099.034.208.08.259.178.039.172-.06.325-.144.464-.083.151-.197.293-.235.464-.048.16.05.294.124.423-.112.004-.25.051-.338-.04-.041-.082.007-.179.024-.263l-.16.143-.195-.012c-.015-.203.141-.35.221-.521-.138.123-.278.297-.483.281-.081.003-.143-.104-.093-.169.111-.141.255-.254.359-.402-.124.096-.25.195-.397.251a.464.464 0 0 1-.326-.038c.018-.204.234-.276.35-.417-.127.053-.24.154-.387.145-.058.002-.115-.016-.17-.029-.01-.173.171-.234.273-.337-.09.02-.177.062-.27.06-.062-.022-.11-.072-.164-.108.015-.066.035-.13.06-.192zm9.156 0c.018.078.087.178-.005.237-.1.125-.268.022-.39-.002.112.096.285.167.284.343-.096.017-.2.05-.295.01-.088-.036-.173-.081-.259-.122.027.027.055.053.084.078l.087.076c.057.051.113.104.16.164.016.068-.033.14-.106.139-.233.059-.415-.127-.584-.254.089.121.195.226.297.335.051.054.046.135.064.203-.084.011-.174.044-.256.008-.128-.052-.225-.155-.33-.243.091.16.23.305.216.502l-.208.008a10.001 10.001 0 0 1-.137-.132c.008.082.06.176.007.25-.062.07-.158.065-.246.063-.03 0-.059 0-.086.003.047-.119.14-.222.137-.356-.036-.35-.358-.587-.406-.932-.01-.149.154-.218.273-.261.554-.145 1.133-.073 1.7-.117zM.698 9.192c.77 0 1.54.04 2.31.047.963.021 1.926.028 2.888.053.2-.014.365.116.53.207l-.018.19a5.46 5.46 0 0 1-.089.043l.026-.073c-.899.024-1.796.085-2.695.112-.566.012-1.13.06-1.697.05A3.707 3.707 0 0 1 .89 9.705c-.115-.034-.247-.052-.338-.137-.001-.135.073-.264.145-.376zm22.62.022c.064.111.132.222.179.342-.43.14-.89.133-1.336.116-.828-.002-1.656-.055-2.484-.083-.699-.032-1.398-.06-2.097-.1.143-.102.305-.202.486-.196 1.751-.007 3.501-.078 5.252-.08zm-16.073.214c.077.005.136.074.194.12a.138.138 0 0 1 .05.116c-.078.06-.181.068-.273.092-.186.034-.37.09-.56.097-.067-.026-.14-.055-.185-.116-.016-.084.01-.2.104-.222.21-.042.425-.054.636-.085a.139.139 0 0 1 .034-.002zm9.465.008c.235 0 .47.03.7.073.109.021.106.15.134.234-.09.05-.177.13-.29.107-.163-.025-.323-.066-.485-.096-.087-.022-.187-.029-.258-.09.005-.108.116-.177.2-.228zm-4.785.138c.908-.02 1.842.29 2.495.935.358.365.62.856.612 1.377.01.47-.199.926-.507 1.274-.566.642-1.415.983-2.256 1.046a3.577 3.577 0 0 1-2.17-.514c-.345-.22-.66-.5-.867-.858a1.853 1.853 0 0 1-.227-1.365c.099-.415.356-.774.668-1.057.565-.51 1.318-.775 2.07-.83.06-.004.121-.006.182-.008zm5.64.023c.218-.005.435.025.653.035 1.44.088 2.882.14 4.322.224.093.014.198-.004.283.043.057.083.072.185.087.283-.302.185-.678.14-1.015.149-.425-.028-.85-.08-1.274-.121a15.638 15.638 0 0 0-.425-.036c-.872-.087-1.747-.139-2.615-.258a1.474 1.474 0 0 0-.016-.32zm-5.553.01c-.116 0-.23.005-.345.016-.805.077-1.627.39-2.161 1.02-.308.348-.518.809-.484 1.282.018.674.448 1.273.985 1.65.884.618 2.057.75 3.079.44.46-.149.903-.38 1.245-.727.428-.414.714-1.017.635-1.622-.065-.495-.35-.941-.723-1.265-.61-.536-1.425-.795-2.231-.794zm-5.915.175c.059 0 .118 0 .178.002.148.042.249.167.359.266-.027.077-.05.155-.072.234.072.057.149.108.23.15-.517.084-1.03.193-1.544.292l-.464.102-.465.098c-.31.063-.621.123-.934.174-.405.072-.828.05-1.222-.069-.113-.032-.141-.162-.095-.262.017-.1.141-.09.215-.105 1.276-.13 2.548-.295 3.82-.447.178-.019.38-.023.51-.163-.701.064-1.402.142-2.102.22l-1.051.113c-.35.036-.701.07-1.052.1-.394.04-.802.002-1.17-.153a1.65 1.65 0 0 1 .144-.328c1.393-.063 2.789-.092 4.18-.195.178-.008.356-.025.535-.029zm1.256.064a.56.56 0 0 1 .122.008c.084.025.162.067.24.105-.009.132-.138.166-.238.212-.125.051-.247.11-.375.153-.162.052-.325-.028-.474-.087.02-.068.028-.144.07-.203a.916.916 0 0 1 .297-.12c.117-.03.237-.064.358-.068zm9.248 0c.177-.004.35.054.517.106.064.026.144.036.192.092.032.06.04.13.064.192-.146.053-.302.145-.462.093a6.866 6.866 0 0 1-.632-.271c.018-.123.137-.18.245-.206a.718.718 0 0 1 .076-.006zm.887.172c.239-.004.474.041.711.066.758.085 1.517.168 2.276.246.543.068 1.09.108 1.632.19.013.107.126.312-.033.35a4.135 4.135 0 0 1-1.12.025c-1.182-.184-2.36-.394-3.544-.566a4.356 4.356 0 0 0-.024-.307c.034-.002.068-.004.102-.004zm-5.377.111c.253.001.504.032.748.103.282.084.568.226.73.482.111.16.124.368.087.554-.056.226-.263.365-.442.492l.004.042c.265.181.554.434.545.785.025.254-.11.492-.293.657-.129.098-.27.183-.422.241-.43.149-.892.168-1.342.138-.552-.069-1.13-.224-1.537-.627.07-.094.16-.17.224-.268a23.17 23.17 0 0 0 .006-1.615c-.066-.099-.157-.177-.231-.27.274-.375.732-.545 1.17-.64.247-.047.5-.075.753-.074zm4.163.063c.029 0 .058.001.086.008.169.065.332.144.494.225.036.024.09.036.106.082.004.08-.034.168-.113.197-.115.048-.253.078-.37.024-.191-.084-.365-.202-.544-.307.017-.042.025-.095.054-.13a.1.1 0 0 1 .038-.027.606.606 0 0 1 .249-.072zm-8.563 0a.555.555 0 0 1 .276.078c.065.031.079.14.017.18-.162.11-.332.21-.514.281-.143.047-.287-.007-.42-.053l-.04-.194c.168-.088.34-.173.514-.25a.36.36 0 0 1 .167-.042zm4.37.172a2.535 2.535 0 0 0-.282.015.623.623 0 0 0-.361.168c-.163.169-.176.422-.145.641a.563.563 0 0 0 .367.487c.233.079.49.075.725.01.254-.085.382-.362.376-.614.013-.213-.04-.462-.231-.586a.807.807 0 0 0-.449-.12zm5.287.085c.27.006.54.052.806.099.833.15 1.666.301 2.498.458.21.043.423.079.63.138-.028.125-.043.32-.202.344-.513.065-1.028-.05-1.52-.187-.814-.22-1.637-.414-2.45-.64a.435.435 0 0 0-.149-.007c.013-.052.017-.107.042-.154.064-.048.153-.045.229-.05h.116zm-10.387.055c.028.114.052.229.097.337-.634.195-1.267.39-1.904.572-.338.097-.67.223-1.02.27-.316.028-.64.013-.948-.066-.126-.034-.16-.17-.163-.284.89-.193 1.777-.399 2.67-.577.422-.085.839-.203 1.268-.252zm8.897.051a.266.266 0 0 1 .177.063c.15.099.297.2.448.296a.196.196 0 0 0-.014.043l-.01.047c-.009.032-.021.061-.05.077-.13.014-.269.043-.396-.006a2.215 2.215 0 0 1-.396-.324c-.046-.039-.041-.116-.002-.158a.093.093 0 0 1 .05-.027c.061-.003.128-.013.193-.01zm-7.713 0c.051 0 .102.004.152.01.069.017.116.122.047.169-.156.156-.318.354-.557.365-.08-.001-.16.002-.238-.015-.057-.038-.052-.12-.071-.176.173-.11.338-.231.516-.333a.63.63 0 0 1 .15-.02zm8.857.204c.162.017.316.07.473.108.766.225 1.533.447 2.298.674.143.043.289.079.426.138-.038.095-.074.203-.163.262a2.07 2.07 0 0 1-1.1-.072c-.27-.103-.527-.233-.792-.346-.48-.205-.958-.419-1.445-.61.103-.047.195-.121.303-.154zm-1.563.04c.105 0 .19.084.266.148.072.072.167.131.212.225.015.085-.055.159-.079.235-.104-.02-.234.02-.318-.066a1.57 1.57 0 0 1-.322-.397c-.016-.086.083-.138.163-.141l.032.001a.202.202 0 0 1 .046-.005zm-6.891.004a.423.423 0 0 1 .23.082 1.5 1.5 0 0 1-.34.455c-.074.09-.2.075-.3.045-.063-.047-.086-.13-.124-.196.123-.127.24-.262.389-.359a.32.32 0 0 1 .145-.027zm-1.326.12a.848.848 0 0 1 .108.002c.102.015.115.135.153.212-.178.06-.341.153-.508.236-.434.208-.857.435-1.29.645-.295.156-.643.13-.966.133-.09-.009-.191 0-.27-.052-.052-.067-.074-.152-.1-.232.245-.124.516-.18.77-.283.456-.172.924-.31 1.384-.47.238-.067.471-.179.72-.19zm7.692.011c.093.022.207.015.277.091.098.133.197.272.253.428-.018.12-.154.2-.272.195-.04-.253-.148-.485-.258-.714zm-5.888.003a2.99 2.99 0 0 0-.242.718c-.095-.022-.214-.046-.256-.147-.03-.05-.001-.105.022-.15a2.1 2.1 0 0 1 .225-.346c.071-.054.167-.054.251-.075zm7.515.028c.182.033.342.134.508.212.661.309 1.32.623 1.977.942-.013.07-.011.154-.059.214-.163.063-.344.037-.513.02-.206-.023-.42-.047-.601-.16-.507-.315-.98-.687-1.509-.966.115-.042.154-.159.197-.262zm-8.832.254c.09 0 .18.014.267.042-.194.232-.456.392-.695.571-.28.19-.538.417-.85.553a2.027 2.027 0 0 1-.761.104c-.112-.014-.161-.118-.166-.22.587-.32 1.187-.615 1.774-.933a.83.83 0 0 1 .43-.117zm8.426.018a.6.6 0 0 1 .321.134c.449.335.896.674 1.346 1.007.06.031.091.091.116.152-.126.054-.263.12-.403.078-.041-.01-.084-.018-.126-.027a.946.946 0 0 1-.364-.13c-.427-.27-.773-.65-1.206-.912.092-.082.12-.21.206-.293a.399.399 0 0 1 .11-.009zm-8.156.176c.114.178.334.117.508.165-.38.273-.666.652-1.042.93-.228.169-.583.234-.814.037.113-.175.29-.29.447-.423.3-.236.593-.483.901-.709zm7.554.125c.11.023.233.032.319.116.284.24.551.498.836.738.097.09.227.167.238.315-.095.035-.202.075-.302.033a.672.672 0 0 1-.071-.023c-.162-.063-.295-.183-.424-.297a9.813 9.813 0 0 0-.769-.679c.056-.069.114-.137.173-.203zm-7.068.176c.102.027.201.065.303.091.013.1.02.2.026.3-.174.175-.307.406-.541.51-.156.06-.327.081-.493.06-.057-.012-.097-.057-.138-.095.278-.292.54-.6.843-.866zm6.729.073c.151-.002.25.118.344.218.196.228.42.428.622.649-.043.057-.09.136-.18.106a.738.738 0 0 1-.311-.05c-.208-.1-.345-.293-.522-.433l.047-.49zm-3.103.132a1.564 1.564 0 0 0-.255.014c-.274.032-.537.235-.584.515-.03.271-.019.602.204.796.147.12.34.16.525.176.258.008.56-.033.72-.264.175-.264.176-.623.054-.908-.132-.24-.401-.322-.664-.33zm-3.303.33c.066.17.114.346.16.522-.12-.023-.302-.01-.37-.138-.033-.161.117-.274.21-.383zm6.349.15c.087.077.204.181.17.31-.067.117-.218.118-.335.13a33.1 33.1 0 0 0 .165-.44zm-6.69.321c.093.077.195.157.319.176.08.024.173.018.245.063.156.191.294.399.488.555.299.277.658.469.995.692-.058.24-.213.437-.339.644-.92-.353-1.719-1.07-2.085-1.995.126-.042.252-.087.376-.135zm6.993.063c.093.037.186.075.28.11-.185.51-.532.95-.94 1.301a3.133 3.133 0 0 1-1.012.6c-.08-.14-.166-.278-.236-.424-.02-.05-.052-.118-.01-.165.098-.098.227-.156.346-.224.248-.148.476-.327.686-.526.14-.134.228-.312.357-.456.11-.043.238-.024.347-.074.07-.036.124-.092.182-.142zm-7.67.07l.204.003c.174.43.422.837.76 1.157.207.187.408.384.649.527.23.152.482.262.73.38a1.417 1.417 0 0 1-.089.2 4.51 4.51 0 0 1-.699-.352c-.3-.177-.55-.421-.8-.66-.26-.253-.43-.58-.604-.894-.065-.114-.106-.239-.15-.361zm8.027.058l.22.02a3.174 3.174 0 0 1-.847 1.33c-.372.34-.785.665-1.272.82-.034-.07-.068-.14-.1-.212.305-.137.61-.289.87-.504.48-.388.91-.868 1.129-1.454zm-1.348.433c-.19.266-.485.42-.746.605-.12.093-.29.15-.339.31.011.094.087.164.13.245.108.186.215.374.302.57.048.124-.001.252-.048.367-.158-.043-.334-.115-.403-.275-.133-.241-.13-.544-.315-.76-.017.322.216.582.255.893-.016.109-.084.202-.136.297-.139-.078-.31-.156-.343-.329-.095-.256-.037-.563-.192-.797-.063.223.046.44.088.656.023.134.082.303-.023.417a2.76 2.76 0 0 1-.106.133c-.105-.075-.24-.145-.275-.28-.059-.26-.016-.53-.064-.79-.014-.033-.037-.059-.058-.086-.07.31.085.616.047.928-.042.112-.135.229-.26.25-.115-.08-.222-.2-.221-.35-.015-.271.087-.535.073-.807l-.073-.002c-.037.23-.018.465-.033.697a.487.487 0 0 1-.104.294c-.06.054-.127.1-.197.142-.063-.066-.135-.13-.173-.216-.034-.13.013-.26.04-.388.047-.192.115-.384.106-.584h-.066c-.083.259-.081.533-.154.794a.468.468 0 0 1-.273.295c-.054.024-.119-.014-.14-.066-.097-.123-.048-.289-.005-.423.086-.222.192-.439.24-.674l-.066-.027c-.14.26-.174.564-.32.821a.478.478 0 0 1-.311.24c-.045.015-.08-.022-.1-.057a.386.386 0 0 1-.005-.334c.112-.241.27-.46.38-.702.02-.066.056-.155.001-.213-.22-.226-.546-.3-.77-.522.233.138.459.296.716.386.923.372 1.99.383 2.915.011.39-.136.729-.387 1.026-.669Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/betfair.svg b/assets/lib/simple-icons/icons/betfair.svg
new file mode 100644
index 00000000..87b4d9bb
--- /dev/null
+++ b/assets/lib/simple-icons/icons/betfair.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Betfair</title><path d="M20.218 3.14h-7.083v3.6H9.352l7.359 8.582L24 6.67h-3.782zM0 17.26h3.782v3.6h7.083v-3.6h3.783l-7.29-8.583z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/bigbasket.svg b/assets/lib/simple-icons/icons/bigbasket.svg
new file mode 100644
index 00000000..28ce65f3
--- /dev/null
+++ b/assets/lib/simple-icons/icons/bigbasket.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>bigbasket</title><path d="M11.543 12.989a3.352 3.352 0 0 0-.871-1.375 2.251 2.251 0 0 0-1.474-.503 2.276 2.276 0 0 0-1.541.536 2.953 2.953 0 0 0-.973 1.375 5.609 5.609 0 0 0-.335 1.845 5.42 5.42 0 0 0 .335 1.809c.192.548.528 1.034.973 1.407.441.339.985.516 1.541.503a2.08 2.08 0 0 0 1.945-1.072h-.002a4.92 4.92 0 0 0 .67-2.649 6.477 6.477 0 0 0-.268-1.876zM20.381.033H3.587A3.584 3.584 0 0 0 0 3.585V20.38a3.59 3.59 0 0 0 3.587 3.586h16.794c1.986 0 3.601-1.6 3.619-3.586V3.585A3.614 3.614 0 0 0 20.381.033zM10.64 3.034h1.911v5.744a3.47 3.47 0 0 0-1.911-.584v-5.16zm-.438 17.93a5.586 5.586 0 0 1-2.278-.369 3.522 3.522 0 0 1-1.174-.804 4.18 4.18 0 0 1-.335-.536l-.033-.134v.302C6.281 21.266 3.4 20.931 3.4 20.931V3.034h3.15v7.442h.034a3.675 3.675 0 0 1 1.541-1.309 4.825 4.825 0 0 1 2.079-.435 4.197 4.197 0 0 1 2.649.871 5.263 5.263 0 0 1 1.675 2.278v-.001c.372.951.565 1.963.569 2.984a8.418 8.418 0 0 1-.571 2.984 5.47 5.47 0 0 1-1.675 2.278 4.161 4.161 0 0 1-2.649.838zm9.828-3.111a5.47 5.47 0 0 1-1.675 2.278 4.173 4.173 0 0 1-2.649.838 5.587 5.587 0 0 1-2.278-.37 4.85 4.85 0 0 1-.362-.186c.444-.36.837-.778 1.168-1.245.353.127.726.189 1.101.185 2.38 0 3.15-2.502 3.15-4.484 0-1.96-.721-4.523-3.15-4.523a3.058 3.058 0 0 0-1.021.163 6.349 6.349 0 0 0-1.017-1.166c.107-.063.218-.121.331-.176a4.72 4.72 0 0 1 6.403 2.715l-.001.004c.373.951.566 1.963.571 2.984a8.409 8.409 0 0 1-.571 2.983z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/bigbluebutton.svg b/assets/lib/simple-icons/icons/bigbluebutton.svg
new file mode 100644
index 00000000..3dfac732
--- /dev/null
+++ b/assets/lib/simple-icons/icons/bigbluebutton.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>BigBlueButton</title><path d="M12 0A12 12 0 0 0 0 12a12 12 0 0 0 12 12 12 12 0 0 0 12-12A12 12 0 0 0 12 0zM6.838 4.516c.743 0 1.378.364 1.904 1.091.526.728.787 1.602.787 2.625v6.76c0 .539.27.809.809.809h4.174c.538 0 .808-.27.808-.809v-3.205c0-.52-.27-.788-.808-.807h-.807c-1.041-.036-1.923-.308-2.64-.816-.719-.507-1.077-1.133-1.077-1.877h4.524c.97 0 1.796.342 2.478 1.024a3.374 3.374 0 0 1 1.024 2.476v3.205c0 .97-.342 1.797-1.024 2.479-.682.682-1.509 1.021-2.478 1.021h-4.174c-.97 0-1.795-.339-2.477-1.021a3.376 3.376 0 0 1-1.023-2.479V4.516Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/bigcartel.svg b/assets/lib/simple-icons/icons/bigcartel.svg
index 12abeb97..41ac68b5 100644
--- a/assets/lib/simple-icons/icons/bigcartel.svg
+++ b/assets/lib/simple-icons/icons/bigcartel.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Big Cartel icon</title><path d="M12 13.068v-1.006c0-.63.252-1.256.88-1.508l7.79-4.9c.503-.252.755-.88.755-1.51V0L12 6.03 2.575 0v12.69c0 3.394 1.51 6.284 4.02 7.917L11.875 24l5.28-3.393c2.513-1.51 4.02-4.398 4.02-7.916V7.036L12 13.068z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Big Cartel</title><path d="M12 13.068v-1.006c0-.63.252-1.256.88-1.508l7.79-4.9c.503-.252.755-.88.755-1.51V0L12 6.03 2.575 0v12.69c0 3.394 1.51 6.284 4.02 7.917L11.875 24l5.28-3.393c2.513-1.51 4.02-4.398 4.02-7.916V7.036L12 13.068z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/bigcommerce.svg b/assets/lib/simple-icons/icons/bigcommerce.svg
new file mode 100644
index 00000000..204d908f
--- /dev/null
+++ b/assets/lib/simple-icons/icons/bigcommerce.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>BigCommerce</title><path d="M12.645 13.663h3.027c.861 0 1.406-.474 1.406-1.235 0-.717-.545-1.234-1.406-1.234h-3.027c-.1 0-.187.086-.187.172v2.125c.015.1.086.172.187.172zm0 4.896h3.128c.961 0 1.535-.488 1.535-1.35 0-.746-.545-1.35-1.535-1.35h-3.128c-.1 0-.187.087-.187.173v2.34c.015.115.086.187.187.187zM23.72.053l-8.953 8.93h1.464c2.281 0 3.63 1.435 3.63 3 0 1.235-.832 2.14-1.722 2.541-.143.058-.143.259.014.316 1.033.402 1.765 1.48 1.765 2.742 0 1.78-1.19 3.202-3.5 3.202h-6.342c-.1 0-.187-.086-.187-.172V13.85L.062 23.64c-.13.13-.043.359.143.359h23.631a.16.16 0 0 0 .158-.158V.182c.043-.158-.158-.244-.273-.13z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/bilibili.svg b/assets/lib/simple-icons/icons/bilibili.svg
new file mode 100644
index 00000000..6c114c71
--- /dev/null
+++ b/assets/lib/simple-icons/icons/bilibili.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Bilibili</title><path d="M17.813 4.653h.854c1.51.054 2.769.578 3.773 1.574 1.004.995 1.524 2.249 1.56 3.76v7.36c-.036 1.51-.556 2.769-1.56 3.773s-2.262 1.524-3.773 1.56H5.333c-1.51-.036-2.769-.556-3.773-1.56S.036 18.858 0 17.347v-7.36c.036-1.511.556-2.765 1.56-3.76 1.004-.996 2.262-1.52 3.773-1.574h.774l-1.174-1.12a1.234 1.234 0 0 1-.373-.906c0-.356.124-.658.373-.907l.027-.027c.267-.249.573-.373.92-.373.347 0 .653.124.92.373L9.653 4.44c.071.071.134.142.187.213h4.267a.836.836 0 0 1 .16-.213l2.853-2.747c.267-.249.573-.373.92-.373.347 0 .662.151.929.4.267.249.391.551.391.907 0 .355-.124.657-.373.906zM5.333 7.24c-.746.018-1.373.276-1.88.773-.506.498-.769 1.13-.786 1.894v7.52c.017.764.28 1.395.786 1.893.507.498 1.134.756 1.88.773h13.334c.746-.017 1.373-.275 1.88-.773.506-.498.769-1.129.786-1.893v-7.52c-.017-.765-.28-1.396-.786-1.894-.507-.497-1.134-.755-1.88-.773zM8 11.107c.373 0 .684.124.933.373.25.249.383.569.4.96v1.173c-.017.391-.15.711-.4.96-.249.25-.56.374-.933.374s-.684-.125-.933-.374c-.25-.249-.383-.569-.4-.96V12.44c0-.373.129-.689.386-.947.258-.257.574-.386.947-.386zm8 0c.373 0 .684.124.933.373.25.249.383.569.4.96v1.173c-.017.391-.15.711-.4.96-.249.25-.56.374-.933.374s-.684-.125-.933-.374c-.25-.249-.383-.569-.4-.96V12.44c.017-.391.15-.711.4-.96.249-.249.56-.373.933-.373Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/binance.svg b/assets/lib/simple-icons/icons/binance.svg
new file mode 100644
index 00000000..ecaa7fb4
--- /dev/null
+++ b/assets/lib/simple-icons/icons/binance.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Binance</title><path d="M16.624 13.9202l2.7175 2.7154-7.353 7.353-7.353-7.352 2.7175-2.7164 4.6355 4.6595 4.6356-4.6595zm4.6366-4.6366L24 12l-2.7154 2.7164L18.5682 12l2.6924-2.7164zm-9.272.001l2.7163 2.6914-2.7164 2.7174v-.001L9.2721 12l2.7164-2.7154zm-9.2722-.001L5.4088 12l-2.6914 2.6924L0 12l2.7164-2.7164zM11.9885.0115l7.353 7.329-2.7174 2.7154-4.6356-4.6356-4.6355 4.6595-2.7174-2.7154 7.353-7.353z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/bing.svg b/assets/lib/simple-icons/icons/bing.svg
deleted file mode 100644
index 472bd0b3..00000000
--- a/assets/lib/simple-icons/icons/bing.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Bing icon</title><path d="M3.605 0L8.4 1.686V18.56l6.753-3.895-3.31-1.555-2.09-5.2 10.64 3.738v5.435L8.403 24l-4.797-2.67V0z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/biolink.svg b/assets/lib/simple-icons/icons/biolink.svg
new file mode 100644
index 00000000..625e5aaa
--- /dev/null
+++ b/assets/lib/simple-icons/icons/biolink.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Bio Link</title><path d="M3.95192 4.6371V2.75605c0-.26354-.14223-.39521-.42679-.39521H2.2289V5.0323h1.29624c.28456 0 .4268-.13168.4268-.3952zm0 4.2839V6.96087c0-.13696-.03158-.23187-.09482-.28456-.06324-.06324-.1739-.09482-.33197-.09482H2.2289V9.3162h1.29624c.28456 0 .4268-.13168.4268-.39521zM0 .81166h4.17323c1.33842 0 2.00763.57962 2.00763 1.73882v1.77049c0 .77986-.23714 1.2699-.71143 1.4701.47429.17917.71143.63235.71143 1.35953v1.96013c0 1.1698-.6692 1.75466-2.00763 1.75466H0Zm7.56538 0h2.24468v10.05373H7.56538zm5.66357 0h2.11829c1.32777 0 1.9917.57962 1.9917 1.73882v6.56025c0 1.1698-.66393 1.75466-1.9917 1.75466h-2.1183c-1.33832 0-2.00753-.58486-2.00753-1.75466V2.55048c0-1.1592.6692-1.73882 2.00754-1.73882zm1.84948 7.99868V2.8667c0-.26353-.13696-.3952-.41096-.3952h-.75876c-.28455 0-.42678.13167-.42678.3952v5.94364c0 .26354.14223.39521.42678.39521h.75876c.274 0 .41096-.13167.41096-.3952zm5.03262 2.02892c-.75304 0-1.3634-.61045-1.3634-1.3634V9.3879c0-.75304.61036-1.3634 1.3634-1.3634.75295 0 1.3634.61036 1.3634 1.3634v.08796c0 .75295-.61045 1.3634-1.3634 1.3634zM2.25329 21.52851h2.8928v1.65983H.00859V13.13461h2.2447zm3.66888-8.3939h2.24469v10.05373h-2.2447zm7.9241 0h2.07078v10.05373h-2.02338l-2.19727-6.02272v6.02272H9.64144V13.13461h2.03921l2.16561 6.00698zm10.15373 0-2.02338 4.96367L24 23.18834h-2.43433l-1.94439-5.09006 1.94439-4.96367zm-6.67082 10.05373V13.13461h2.24469v10.05373Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/bit.svg b/assets/lib/simple-icons/icons/bit.svg
index c06dfc65..70b09cf7 100644
--- a/assets/lib/simple-icons/icons/bit.svg
+++ b/assets/lib/simple-icons/icons/bit.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Bit icon</title><path d="M12 24C5.373 24 0 18.627 0 12S5.373 0 12 0s12 5.373 12 12-5.373 12-12 12zm-1.144-10.93c0-1.292-.763-2.019-1.858-2.019-.341 0-.637.072-.862.224V9.552c0-.323-.197-.485-.601-.485s-.601.162-.601.485v4.533c0 .305 0 .601.413.835.359.206.826.305 1.328.305 1.4 0 2.181-.844 2.181-2.154zm-2.72 1.05v-1.921a.923.923 0 0 1 .565-.18c.556 0 .924.413.924 1.131 0 .709-.359 1.104-.942 1.104-.206 0-.395-.045-.548-.135zm4.968-4.254c0-.413-.296-.691-.709-.691s-.709.278-.709.691c0 .413.296.7.709.7s.709-.287.709-.7zm-.108 1.669c0-.323-.197-.485-.601-.485s-.601.162-.601.485v3.186c0 .323.197.485.601.485s.601-.162.601-.485v-3.186zm3.64 2.594c-.072 0-.135.018-.206.036-.081.018-.18.045-.278.045-.153 0-.269-.054-.332-.18-.081-.153-.081-.386-.081-.548v-1.346h.754c.323 0 .485-.162.485-.503s-.162-.503-.485-.503h-.754v-.79c0-.323-.197-.485-.601-.485s-.601.162-.601.485v.79h-.314c-.323 0-.485.162-.485.503s.162.503.485.503h.314v1.346c0 .413.018.799.197 1.122.197.359.583.619 1.23.619.35 0 .691-.081.889-.197.171-.099.215-.224.215-.35 0-.197-.099-.548-.431-.548z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Bit</title><path d="M12 24C5.373 24 0 18.627 0 12S5.373 0 12 0s12 5.373 12 12-5.373 12-12 12zm-1.144-10.93c0-1.292-.763-2.019-1.858-2.019-.341 0-.637.072-.862.224V9.552c0-.323-.197-.485-.601-.485s-.601.162-.601.485v4.533c0 .305 0 .601.413.835.359.206.826.305 1.328.305 1.4 0 2.181-.844 2.181-2.154zm-2.72 1.05v-1.921a.923.923 0 0 1 .565-.18c.556 0 .924.413.924 1.131 0 .709-.359 1.104-.942 1.104-.206 0-.395-.045-.548-.135zm4.968-4.254c0-.413-.296-.691-.709-.691s-.709.278-.709.691c0 .413.296.7.709.7s.709-.287.709-.7zm-.108 1.669c0-.323-.197-.485-.601-.485s-.601.162-.601.485v3.186c0 .323.197.485.601.485s.601-.162.601-.485v-3.186zm3.64 2.594c-.072 0-.135.018-.206.036-.081.018-.18.045-.278.045-.153 0-.269-.054-.332-.18-.081-.153-.081-.386-.081-.548v-1.346h.754c.323 0 .485-.162.485-.503s-.162-.503-.485-.503h-.754v-.79c0-.323-.197-.485-.601-.485s-.601.162-.601.485v.79h-.314c-.323 0-.485.162-.485.503s.162.503.485.503h.314v1.346c0 .413.018.799.197 1.122.197.359.583.619 1.23.619.35 0 .691-.081.889-.197.171-.099.215-.224.215-.35 0-.197-.099-.548-.431-.548z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/bitbucket.svg b/assets/lib/simple-icons/icons/bitbucket.svg
index df3b42f2..6a977907 100644
--- a/assets/lib/simple-icons/icons/bitbucket.svg
+++ b/assets/lib/simple-icons/icons/bitbucket.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Bitbucket icon</title><path d="M.778 1.211c-.424-.006-.772.334-.778.758 0 .045.002.09.01.134l3.263 19.811c.084.499.515.867 1.022.872H19.95c.382.004.708-.271.77-.646l3.27-20.03c.068-.418-.216-.813-.635-.881-.045-.008-.089-.011-.133-.01L.778 1.211zM14.52 15.528H9.522L8.17 8.464h7.561l-1.211 7.064z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Bitbucket</title><path d="M.778 1.213a.768.768 0 00-.768.892l3.263 19.81c.084.5.515.868 1.022.873H19.95a.772.772 0 00.77-.646l3.27-20.03a.768.768 0 00-.768-.891zM14.52 15.53H9.522L8.17 8.466h7.561z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/bitcoin.svg b/assets/lib/simple-icons/icons/bitcoin.svg
index 91e76a97..c44ddcc9 100644
--- a/assets/lib/simple-icons/icons/bitcoin.svg
+++ b/assets/lib/simple-icons/icons/bitcoin.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Bitcoin icon</title><path d="M23.638 14.904c-1.602 6.43-8.113 10.34-14.542 8.736C2.67 22.05-1.244 15.525.362 9.105 1.962 2.67 8.475-1.243 14.9.358c6.43 1.605 10.342 8.115 8.738 14.548v-.002zm-6.35-4.613c.24-1.59-.974-2.45-2.64-3.03l.54-2.153-1.315-.33-.525 2.107c-.345-.087-.705-.167-1.064-.25l.526-2.127-1.32-.33-.54 2.165c-.285-.067-.565-.132-.84-.2l-1.815-.45-.35 1.407s.975.225.955.236c.535.136.63.486.615.766l-1.477 5.92c-.075.166-.24.406-.614.314.015.02-.96-.24-.96-.24l-.66 1.51 1.71.426.93.242-.54 2.19 1.32.327.54-2.17c.36.1.705.19 1.05.273l-.51 2.154 1.32.33.545-2.19c2.24.427 3.93.257 4.64-1.774.57-1.637-.03-2.58-1.217-3.196.854-.193 1.5-.76 1.68-1.93h.01zm-3.01 4.22c-.404 1.64-3.157.75-4.05.53l.72-2.9c.896.23 3.757.67 3.33 2.37zm.41-4.24c-.37 1.49-2.662.735-3.405.55l.654-2.64c.744.18 3.137.524 2.75 2.084v.006z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Bitcoin</title><path d="M23.638 14.904c-1.602 6.43-8.113 10.34-14.542 8.736C2.67 22.05-1.244 15.525.362 9.105 1.962 2.67 8.475-1.243 14.9.358c6.43 1.605 10.342 8.115 8.738 14.548v-.002zm-6.35-4.613c.24-1.59-.974-2.45-2.64-3.03l.54-2.153-1.315-.33-.525 2.107c-.345-.087-.705-.167-1.064-.25l.526-2.127-1.32-.33-.54 2.165c-.285-.067-.565-.132-.84-.2l-1.815-.45-.35 1.407s.975.225.955.236c.535.136.63.486.615.766l-1.477 5.92c-.075.166-.24.406-.614.314.015.02-.96-.24-.96-.24l-.66 1.51 1.71.426.93.242-.54 2.19 1.32.327.54-2.17c.36.1.705.19 1.05.273l-.51 2.154 1.32.33.545-2.19c2.24.427 3.93.257 4.64-1.774.57-1.637-.03-2.58-1.217-3.196.854-.193 1.5-.76 1.68-1.93h.01zm-3.01 4.22c-.404 1.64-3.157.75-4.05.53l.72-2.9c.896.23 3.757.67 3.33 2.37zm.41-4.24c-.37 1.49-2.662.735-3.405.55l.654-2.64c.744.18 3.137.524 2.75 2.084v.006z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/bitcoincash.svg b/assets/lib/simple-icons/icons/bitcoincash.svg
new file mode 100644
index 00000000..709560a9
--- /dev/null
+++ b/assets/lib/simple-icons/icons/bitcoincash.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Bitcoin Cash</title><path d="m10.84 11.22-.688-2.568c.728-.18 2.839-1.051 3.39.506.27 1.682-1.978 1.877-2.702 2.062zm.289 1.313.755 2.829c.868-.228 3.496-.46 3.241-2.351-.433-1.666-3.125-.706-3.996-.478zM24 12c0 6.627-5.373 12-12 12S0 18.627 0 12 5.373 0 12 0s12 5.373 12 12zm-6.341.661c-.183-1.151-1.441-2.095-2.485-2.202.643-.57.969-1.401.57-2.488-.603-1.368-1.989-1.66-3.685-1.377l-.546-2.114-1.285.332.536 2.108c-.338.085-.685.158-1.029.256L9.198 5.08l-1.285.332.545 2.114c-.277.079-2.595.673-2.595.673l.353 1.377s.944-.265.935-.244c.524-.137.771.125.886.372l1.498 5.793c.018.168-.012.454-.372.551.021.012-.935.241-.935.241l.14 1.605s2.296-.588 2.598-.664l.551 2.138 1.285-.332-.551-2.153c.353-.082.697-.168 1.032-.256l.548 2.141 1.285-.332-.551-2.135c1.982-.482 3.38-1.73 3.094-3.64z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/bitcoinsv.svg b/assets/lib/simple-icons/icons/bitcoinsv.svg
new file mode 100644
index 00000000..41d2c742
--- /dev/null
+++ b/assets/lib/simple-icons/icons/bitcoinsv.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Bitcoin SV</title><path d="M14.648 14.423l.003-.004a1.34 1.34 0 0 1-.498.659c-.269.189-.647.338-1.188.364l-1.99.004v-2.93c.288.008 1.565-.013 2.119.015.722.035 1.171.321 1.41.668.262.351.293.82.144 1.224zm-2.129-3.261c.503-.024.852-.162 1.101-.336.214-.146.375-.367.46-.611.134-.375.107-.81-.136-1.135-.223-.319-.638-.584-1.306-.616-.495-.026-1.413-.003-1.664-.01v2.709c.025.004 1.539-.001 1.545-.001zM24 12c0 6.627-5.373 12-12 12S0 18.627 0 12 5.373 0 12 0s12 5.373 12 12zm-6.65 2.142c.022-1.477-1.24-2.332-1.908-2.572.715-.491 1.206-1.043 1.206-2.085 0-1.655-1.646-2.43-2.647-2.529-.082-.009-.31-.013-.31-.013V5.361h-1.633l.004 1.583H10.97V5.367H9.31v1.569c-.292.007-2.049.006-2.049.006v1.401h.571c.601.016.822.362.798.677v6.041a.408.408 0 0 1-.371.391c-.249.011-.621 0-.621 0l-.32 1.588h1.996v1.6h1.661v-1.591h1.091v1.594h1.624v-1.588c1.899.05 3.643-1.071 3.66-2.913z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/bitdefender.svg b/assets/lib/simple-icons/icons/bitdefender.svg
index b0b42007..bfae48cb 100644
--- a/assets/lib/simple-icons/icons/bitdefender.svg
+++ b/assets/lib/simple-icons/icons/bitdefender.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Bitdefender icon</title><path d="M1.685 0v.357l1.232 1.046c1.477 1.204 1.67 1.439 1.67 2.526V24h8.646c4.537 0 9.083-1.629 9.083-6.849 0-3.082-2.174-5.458-5.186-5.797v-.067c2.475-.745 4.169-2.54 4.169-5.253 0-4.372-3.73-6.032-7.349-6.032L1.686 0zm7.176 3.664h3.524c2.383 0 3.121.327 3.844 1.013.548.521.799 1.237.801 2.07 0 .775-.267 1.466-.831 2.004-.705.676-1.674 1.011-3.443 1.011H8.862V3.664zm0 9.758h4.099c3.456 0 5.085.881 5.085 3.39 0 3.153-3.055 3.526-5.256 3.526H8.86v-6.916z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Bitdefender</title><path d="M1.685 0v.357l1.232 1.046c1.477 1.204 1.67 1.439 1.67 2.526V24h8.646c4.537 0 9.083-1.629 9.083-6.849 0-3.082-2.174-5.458-5.186-5.797v-.067c2.475-.745 4.169-2.54 4.169-5.253 0-4.372-3.73-6.032-7.349-6.032L1.686 0zm7.176 3.664h3.524c2.383 0 3.121.327 3.844 1.013.548.521.799 1.237.801 2.07 0 .775-.267 1.466-.831 2.004-.705.676-1.674 1.011-3.443 1.011H8.862V3.664zm0 9.758h4.099c3.456 0 5.085.881 5.085 3.39 0 3.153-3.055 3.526-5.256 3.526H8.86v-6.916z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/bitly.svg b/assets/lib/simple-icons/icons/bitly.svg
index 3f5c8550..021041e7 100644
--- a/assets/lib/simple-icons/icons/bitly.svg
+++ b/assets/lib/simple-icons/icons/bitly.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Bitly icon</title><path d="M13.055 21.26c-1.345.022-2.325-.41-2.386-1.585-.025-.44-.018-.91.002-1.192.137-1.716 1.333-2.95 2.53-3.19 1.482-.294 2.455.38 2.455 2.31 0 1.303-.36 3.618-2.59 3.657h-.016zM11.923 0C5.32 0 0 5.297 0 12.224c0 3.594 1.92 7.062 4.623 9.147.52.4 1.138.367 1.497.02.297-.285.272-.984-.285-1.475-2.16-1.886-3.652-4.76-3.652-7.635 0-5.15 4.58-9.49 9.74-9.49 6.28 0 9.636 5.102 9.636 9.43 0 2.65-1.29 5.84-3.626 7.874.015 0 .493-.942.493-2.784 0-3.13-1.976-4.836-4.28-4.836-1.663 0-2.667.598-3.34 1.152 0-1.272.045-3.652.045-3.652 0-1.572-.54-2.83-2.47-2.86-1.11-.015-1.932.493-2.44 1.647-.18.436-.12.916.254 1.125.3.18.81.046 1.046-.284.165-.21.254-.254.404-.24.24.03.257.405.257.66.014.193.193 2.903.088 9.865C7.98 21.798 9.493 24 13.1 24c1.56 0 2.756-.435 4.493-1.422C20.243 21.08 24 17.758 24 12.128 23.953 5.045 18.265 0 11.933 0"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Bitly</title><path d="M13.055 21.26c-1.345.022-2.325-.41-2.386-1.585-.025-.44-.018-.91.002-1.192.137-1.716 1.333-2.95 2.53-3.19 1.482-.294 2.455.38 2.455 2.31 0 1.303-.36 3.618-2.59 3.657h-.016zM11.923 0C5.32 0 0 5.297 0 12.224c0 3.594 1.92 7.062 4.623 9.147.52.4 1.138.367 1.497.02.297-.285.272-.984-.285-1.475-2.16-1.886-3.652-4.76-3.652-7.635 0-5.15 4.58-9.49 9.74-9.49 6.28 0 9.636 5.102 9.636 9.43 0 2.65-1.29 5.84-3.626 7.874.015 0 .493-.942.493-2.784 0-3.13-1.976-4.836-4.28-4.836-1.663 0-2.667.598-3.34 1.152 0-1.272.045-3.652.045-3.652 0-1.572-.54-2.83-2.47-2.86-1.11-.015-1.932.493-2.44 1.647-.18.436-.12.916.254 1.125.3.18.81.046 1.046-.284.165-.21.254-.254.404-.24.24.03.257.405.257.66.014.193.193 2.903.088 9.865C7.98 21.798 9.493 24 13.1 24c1.56 0 2.756-.435 4.493-1.422C20.243 21.08 24 17.758 24 12.128 23.953 5.045 18.265 0 11.933 0"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/bitrise.svg b/assets/lib/simple-icons/icons/bitrise.svg
index e50652dc..0a2abd78 100644
--- a/assets/lib/simple-icons/icons/bitrise.svg
+++ b/assets/lib/simple-icons/icons/bitrise.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 24 24"><title>Bitrise icon</title><path d="M12 17.9c1.5 0 2.7-1.2 2.7-2.7H9.3C9.3 16.7 10.5 17.9 12 17.9zM6 12c-0.9 0-1.6 0.7-1.6 1.6h3.3C7.7 12.7 6.9 12 6 12zM12 4.1c0.6 0 1-0.5 1-1 0-0.6-0.5-1-1-1 -0.6 0-1 0.5-1 1C11 3.7 11.4 4.1 12 4.1zM23.5 13.4c-0.3-1.9-0.7-3.8-1-5 -0.4-1.5-1.6-2.6-3.2-2.7 -1.5-0.1-4-0.2-7.4-0.2 -3.3 0-5.8 0.1-7.4 0.2 -1.4 0.1-2.7 1.2-3 2.7 -0.3 1.3-0.7 3.2-1 5 -0.2 1.3-0.3 2.8-0.5 4.5 -0.1 0.9 0.2 1.9 0.9 2.6 0.6 0.7 1.5 1.1 2.4 1.2 2.1 0.1 5.3 0.2 8.7 0.2s6.6-0.1 8.7-0.2c0.9 0 1.8-0.5 2.4-1.2s0.9-1.6 0.9-2.6C23.9 16.2 23.7 14.7 23.5 13.4zM21.9 19.3c-0.3 0.4-0.8 0.6-1.3 0.6 -2.1 0.1-5.2 0.2-8.6 0.2S5.5 20 3.4 19.9c-0.5 0-1-0.2-1.3-0.6 -0.3-0.4-0.5-0.8-0.5-1.3 0.1-1.6 0.2-3.1 0.4-4.3 0.3-1.8 0.7-3.7 1-4.9C3.2 8 3.9 7.4 4.7 7.4c1.5-0.2 4-0.3 7.3-0.3s5.8 0.1 7.3 0.2c0.8 0 1.5 0.6 1.7 1.4 0.3 1.2 0.7 3.1 1 4.9 0.2 1.2 0.3 2.7 0.4 4.3C22.4 18.5 22.2 18.9 21.9 19.3zM18 12c-0.9 0-1.6 0.7-1.6 1.6h3.3C19.6 12.7 18.9 12 18 12z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Bitrise</title><path d="M23.5154 13.4558c-.2744-1.8854-.692-3.7828-.9904-5.0477-.358-1.5035-1.6349-2.5775-3.1742-2.673-1.5155-.0955-4.0215-.2028-7.3627-.2028-3.3413 0-5.8472.1074-7.3627.2028-1.5394.0955-2.8163 1.1695-3.1743 2.673-.2983 1.265-.716 3.1623-.9904 5.0477-.191 1.2769-.3341 2.7685-.4535 4.463-.0596.9427.2506 1.8496.8831 2.5537.6324.704 1.4916 1.1217 2.4463 1.1575 2.0763.0955 5.2625.2148 8.6634.2148 3.401 0 6.587-.1193 8.6634-.2148.9427-.0477 1.8139-.4535 2.4463-1.1575.6325-.704.9427-1.611.883-2.5537-.1312-1.6945-.2863-3.198-.4773-4.463zm-1.6467 5.9188c-.3342.37-.7876.5848-1.2888.6086-2.0644.0955-5.2148.2148-8.5918.2148-3.3771 0-6.5274-.1193-8.5919-.2148-.5011-.0239-.9546-.2386-1.2887-.6086-.3342-.3699-.5012-.8472-.4654-1.3484.1074-1.6468.2506-3.1026.4415-4.3317.2625-1.8258.6683-3.6754.9666-4.9045.191-.7995.8592-1.3604 1.6826-1.42C6.2244 7.2745 8.6945 7.167 12 7.167c3.2935 0 5.7756.1074 7.2673.2029.8114.0477 1.4916.6205 1.6825 1.42.2864 1.2291.6921 3.0787.9666 4.9045.179 1.2291.3222 2.685.4415 4.3317 0 .5012-.167.9785-.4892 1.3484zM11.988 4.1958c.5608 0 1.0262-.4535 1.0262-1.0143 0-.561-.4534-1.0263-1.0262-1.0263-.5609 0-1.0263.4535-1.0263 1.0263 0 .5489.4654 1.0143 1.0263 1.0143zm5.9665 7.84c-.9069 0-1.6468.7399-1.6468 1.6468h3.2936c0-.907-.728-1.6468-1.6468-1.6468zm-11.933 0c-.907 0-1.6468.7399-1.6468 1.6468h3.2935c0-.907-.728-1.6468-1.6468-1.6468zm5.9665 5.9665c1.4677 0 2.661-1.1933 2.661-2.661h-5.334c0 1.4558 1.1933 2.661 2.673 2.661z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/bitwarden.svg b/assets/lib/simple-icons/icons/bitwarden.svg
index 9e26f262..fbf154e5 100644
--- a/assets/lib/simple-icons/icons/bitwarden.svg
+++ b/assets/lib/simple-icons/icons/bitwarden.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Bitwarden icon</title><path d="M3.75 0A3.75 3.75 0 000 3.75v16.5A3.75 3.75 0 003.75 24h16.5A3.75 3.75 0 0024 20.25V3.75A3.75 3.75 0 0020.25 0zm1.36 2.92h13.8c.208 0 .388.076.54.228a.737.737 0 01.227.539v9.2c0 .687-.134 1.367-.401 2.042a7.618 7.618 0 01-.995 1.797 11.097 11.097 0 01-1.413 1.528c-.547.495-1.052.906-1.515 1.234-.464.327-.947.636-1.45.928-.503.291-.86.489-1.072.593-.212.104-.381.184-.51.24a.687.687 0 01-.31.071.688.688 0 01-.312-.072 13.784 13.784 0 01-.51-.24 20.61 20.61 0 01-1.071-.592 19.133 19.133 0 01-1.45-.928 16.457 16.457 0 01-1.515-1.234 11.11 11.11 0 01-1.414-1.528 7.617 7.617 0 01-.994-1.797 5.502 5.502 0 01-.401-2.042v-9.2c0-.208.076-.387.227-.54a.737.737 0 01.54-.227zm6.9 2.3v13.62c.95-.502 1.801-1.05 2.552-1.64 1.877-1.47 2.815-2.907 2.815-4.313V5.22Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Bitwarden</title><path d="M3.75 0A3.75 3.75 0 000 3.75v16.5A3.75 3.75 0 003.75 24h16.5A3.75 3.75 0 0024 20.25V3.75A3.75 3.75 0 0020.25 0zm1.36 2.92h13.8c.208 0 .388.076.54.228a.737.737 0 01.227.539v9.2c0 .687-.134 1.367-.401 2.042a7.618 7.618 0 01-.995 1.797 11.097 11.097 0 01-1.413 1.528c-.547.495-1.052.906-1.515 1.234-.464.327-.947.636-1.45.928-.503.291-.86.489-1.072.593-.212.104-.381.184-.51.24a.687.687 0 01-.31.071.688.688 0 01-.312-.072 13.784 13.784 0 01-.51-.24 20.61 20.61 0 01-1.071-.592 19.133 19.133 0 01-1.45-.928 16.457 16.457 0 01-1.515-1.234 11.11 11.11 0 01-1.414-1.528 7.617 7.617 0 01-.994-1.797 5.502 5.502 0 01-.401-2.042v-9.2c0-.208.076-.387.227-.54a.737.737 0 01.54-.227zm6.9 2.3v13.62c.95-.502 1.801-1.05 2.552-1.64 1.877-1.47 2.815-2.907 2.815-4.313V5.22Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/bitwig.svg b/assets/lib/simple-icons/icons/bitwig.svg
new file mode 100644
index 00000000..775ad1d4
--- /dev/null
+++ b/assets/lib/simple-icons/icons/bitwig.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Bitwig</title><path d="M4.15 7.782a1.59 1.59 0 1 1 3.181 0 1.59 1.59 0 0 1-3.181 0zm5.741 1.591a1.59 1.59 0 1 0 0-3.181 1.59 1.59 0 0 0 0 3.181zm4.218 0a1.59 1.59 0 1 0 0-3.181 1.59 1.59 0 0 0 0 3.181zm4.15 0a1.59 1.59 0 1 0 0-3.181 1.59 1.59 0 0 0 0 3.181zM5.741 10.409a1.59 1.59 0 1 0 0 3.181 1.59 1.59 0 0 0 0-3.181zm8.368 0a1.59 1.59 0 1 0 0 3.181 1.59 1.59 0 0 0 0-3.181zm4.15 0a1.59 1.59 0 1 0 0 3.181 1.59 1.59 0 0 0 0-3.181zm4.15 3.182a1.59 1.59 0 1 0 0-3.181 1.59 1.59 0 0 0 0 3.181zM1.591 10.409a1.591 1.591 0 1 0 0 3.182 1.591 1.591 0 0 0 0-3.182zm4.15 4.218a1.59 1.59 0 1 0 0 3.181 1.59 1.59 0 0 0 0-3.181zm12.518 0a1.59 1.59 0 1 0 0 3.181 1.59 1.59 0 0 0 0-3.181zm4.15 0a1.59 1.59 0 1 0 0 3.181 1.59 1.59 0 0 0 0-3.181zm-20.818 0a1.59 1.59 0 1 0 0 3.181 1.59 1.59 0 0 0 0-3.181m8.3-4.218a1.591 1.591 0 1 0 0 3.182 1.591 1.591 0 0 0 0-3.182Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/blackberry.svg b/assets/lib/simple-icons/icons/blackberry.svg
index 0106e431..b0c55837 100644
--- a/assets/lib/simple-icons/icons/blackberry.svg
+++ b/assets/lib/simple-icons/icons/blackberry.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Blackberry icon</title><path d="M2.05 3.54L1.17 7.7H4.45C6.97 7.7 7.73 6.47 7.73 5.36C7.73 4.54 7.26 3.54 5.21 3.54H2.05M10.54 3.54L9.66 7.7H12.94C15.5 7.7 16.22 6.47 16.22 5.36C16.22 4.54 15.75 3.54 13.7 3.54H10.54M18.32 7.23L17.39 11.39H20.67C23.24 11.39 24 10.22 24 9.05C24 8.23 23.53 7.23 21.5 7.23H18.32M.88 9.8L0 13.96H3.28C5.85 13.96 6.56 12.73 6.56 11.62C6.56 10.8 6.09 9.8 4.04 9.8H.88M9.43 9.8L8.5 13.96H11.77C14.34 13.96 15.11 12.73 15.11 11.62C15.11 10.8 14.64 9.8 12.59 9.8H9.42M17.09 13.73L16.22 17.88H19.5C22 17.88 22.77 16.71 22.77 15.54C22.77 14.72 22.3 13.73 20.26 13.73H17.09M8.2 16.3L7.32 20.46H10.6C13.11 20.46 13.87 19.23 13.87 18.12C13.87 17.3 13.41 16.3 11.36 16.3H8.2Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Blackberry</title><path d="M2.05 3.54L1.17 7.7H4.45C6.97 7.7 7.73 6.47 7.73 5.36C7.73 4.54 7.26 3.54 5.21 3.54H2.05M10.54 3.54L9.66 7.7H12.94C15.5 7.7 16.22 6.47 16.22 5.36C16.22 4.54 15.75 3.54 13.7 3.54H10.54M18.32 7.23L17.39 11.39H20.67C23.24 11.39 24 10.22 24 9.05C24 8.23 23.53 7.23 21.5 7.23H18.32M.88 9.8L0 13.96H3.28C5.85 13.96 6.56 12.73 6.56 11.62C6.56 10.8 6.09 9.8 4.04 9.8H.88M9.43 9.8L8.5 13.96H11.77C14.34 13.96 15.11 12.73 15.11 11.62C15.11 10.8 14.64 9.8 12.59 9.8H9.42M17.09 13.73L16.22 17.88H19.5C22 17.88 22.77 16.71 22.77 15.54C22.77 14.72 22.3 13.73 20.26 13.73H17.09M8.2 16.3L7.32 20.46H10.6C13.11 20.46 13.87 19.23 13.87 18.12C13.87 17.3 13.41 16.3 11.36 16.3H8.2Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/blazemeter.svg b/assets/lib/simple-icons/icons/blazemeter.svg
new file mode 100644
index 00000000..9aaca593
--- /dev/null
+++ b/assets/lib/simple-icons/icons/blazemeter.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Blazemeter</title><path d="M15.04 17.135c-.256 0-.352-.128-.32-.352l1.696-9.566c.032-.224.16-.352.416-.352h3.584c2.4 0 3.584.736 3.584 2.24 0 .607-.16 1.151-.48 1.6-.32.48-.768.8-1.344.991.384.096.736.32.96.672.256.32.384.768.384 1.28 0 1.215-.416 2.08-1.248 2.655-.832.544-1.952.832-3.328.832H15.04zm3.968-1.664c1.664 0 2.496-.608 2.496-1.823 0-.384-.16-.64-.448-.832-.288-.192-.8-.256-1.472-.256h-2.08l-.512 2.88h2.016v.031zm.768-4.383c1.472 0 2.176-.544 2.176-1.663 0-.352-.128-.576-.416-.736-.288-.16-.736-.224-1.344-.224h-1.984l-.48 2.623h2.048zm-6.88-.256a.608.608 0 0 0-.608-.608H.608a.608.608 0 1 0 0 1.216h11.648c.352 0 .64-.256.64-.608zm1.344-2.175a.608.608 0 0 0-.608-.608H6.464a.608.608 0 1 0 0 1.216h7.168c.32 0 .608-.256.608-.608zm-2.464 6.654a.608.608 0 0 0-.608-.608H8.256a.608.608 0 1 0 0 1.216h2.912c.32 0 .608-.256.608-.608zm-.864-2.271a.608.608 0 0 0-.608-.608H3.2a.608.608 0 1 0 0 1.216h7.104a.63.63 0 0 0 .608-.608z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/blazor.svg b/assets/lib/simple-icons/icons/blazor.svg
new file mode 100644
index 00000000..507d893c
--- /dev/null
+++ b/assets/lib/simple-icons/icons/blazor.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Blazor</title><path d="M23.8337 8.1013a13.9123 13.9123 0 0 1-13.6424 11.72 10.1053 10.1053 0 0 1-1.994-.121 6.111 6.111 0 0 1-5.0824-5.7607 5.9344 5.9344 0 0 1 11.867-.0838c.025.9835-.4011 1.8464-1.277 1.8713-.9356 0-1.3742-.6677-1.3742-1.5674v-2.5001a1.5313 1.5313 0 0 0-1.5196-1.5328H8.7152a3.6481 3.6481 0 1 0 2.6948 6.0794l.0733-.1093.0734.1213a2.5807 2.5807 0 0 0 2.2007 1.0479 2.9088 2.9088 0 0 0 2.6947-3.0406 7.912 7.912 0 0 0-.217-1.9324 7.4043 7.4043 0 0 0-14.6395 1.6033 7.4971 7.4971 0 0 0 7.307 7.4043s.549.05 1.1677.0357a15.8029 15.8029 0 0 0 8.4747-2.5283c.036-.025.0719.025.048.0614a12.4392 12.4392 0 0 1-9.6901 3.9625A8.7442 8.7442 0 0 1 .003 13.8603a9.049 9.049 0 0 1 3.6349-7.2471 8.8634 8.8634 0 0 1 5.229-1.7262h2.813a7.9145 7.9145 0 0 0 5.8386-2.5777.1093.1093 0 0 1 .0594-.034.1115.1115 0 0 1 .1195.0522.113.113 0 0 1 .0155.0672 7.9345 7.9345 0 0 1-1.2274 3.5493.1075.1075 0 0 0-.0132.0609.1098.1098 0 0 0 .0724.0945.109.109 0 0 0 .0619.0033 8.5054 8.5054 0 0 0 5.9134-4.876.1554.1554 0 0 1 .0546-.0527.1497.1497 0 0 1 .147 0 .1535.1535 0 0 1 .0546.0527 10.779 10.779 0 0 1 1.0575 6.8746zm-14.9383 3.527a2.188 2.188 0 1 0 2.1877 2.1878v-2.0425a.1577.1577 0 0 0-.1497-.1497Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/blender.svg b/assets/lib/simple-icons/icons/blender.svg
index 09c2ffe6..511377f4 100644
--- a/assets/lib/simple-icons/icons/blender.svg
+++ b/assets/lib/simple-icons/icons/blender.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Blender icon</title><path d="M12.51 13.214c.046-.8.438-1.506 1.03-2.006a3.424 3.424 0 0 1 2.212-.79c.85 0 1.631.3 2.211.79.592.5.983 1.206 1.028 2.005.045.823-.285 1.586-.865 2.153a3.389 3.389 0 0 1-2.374.938 3.393 3.393 0 0 1-2.376-.938c-.58-.567-.91-1.33-.865-2.152M7.35 14.831c.006.314.106.922.256 1.398a7.372 7.372 0 0 0 1.593 2.757 8.227 8.227 0 0 0 2.787 2.001 8.947 8.947 0 0 0 3.66.76 8.964 8.964 0 0 0 3.657-.772 8.285 8.285 0 0 0 2.785-2.01 7.428 7.428 0 0 0 1.592-2.762 6.964 6.964 0 0 0 .25-3.074 7.123 7.123 0 0 0-1.016-2.779 7.764 7.764 0 0 0-1.852-2.043h.002L13.566 2.55l-.02-.015c-.492-.378-1.319-.376-1.86.002-.547.382-.609 1.015-.123 1.415l-.001.001 3.126 2.543-9.53.01h-.013c-.788.001-1.545.518-1.695 1.172-.154.665.38 1.217 1.2 1.22V8.9l4.83-.01-8.62 6.617-.034.025c-.813.622-1.075 1.658-.563 2.313.52.667 1.625.668 2.447.004L7.414 14s-.069.52-.063.831zm12.09 1.741c-.97.988-2.326 1.548-3.795 1.55-1.47.004-2.827-.552-3.797-1.538a4.51 4.51 0 0 1-1.036-1.622 4.282 4.282 0 0 1 .282-3.519 4.702 4.702 0 0 1 1.153-1.371c.942-.768 2.141-1.183 3.396-1.185 1.256-.002 2.455.41 3.398 1.175.48.391.87.854 1.152 1.367a4.28 4.28 0 0 1 .522 1.706 4.236 4.236 0 0 1-.239 1.811 4.54 4.54 0 0 1-1.035 1.626"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Blender</title><path d="M12.51 13.214c.046-.8.438-1.506 1.03-2.006a3.424 3.424 0 0 1 2.212-.79c.85 0 1.631.3 2.211.79.592.5.983 1.206 1.028 2.005.045.823-.285 1.586-.865 2.153a3.389 3.389 0 0 1-2.374.938 3.393 3.393 0 0 1-2.376-.938c-.58-.567-.91-1.33-.865-2.152M7.35 14.831c.006.314.106.922.256 1.398a7.372 7.372 0 0 0 1.593 2.757 8.227 8.227 0 0 0 2.787 2.001 8.947 8.947 0 0 0 3.66.76 8.964 8.964 0 0 0 3.657-.772 8.285 8.285 0 0 0 2.785-2.01 7.428 7.428 0 0 0 1.592-2.762 6.964 6.964 0 0 0 .25-3.074 7.123 7.123 0 0 0-1.016-2.779 7.764 7.764 0 0 0-1.852-2.043h.002L13.566 2.55l-.02-.015c-.492-.378-1.319-.376-1.86.002-.547.382-.609 1.015-.123 1.415l-.001.001 3.126 2.543-9.53.01h-.013c-.788.001-1.545.518-1.695 1.172-.154.665.38 1.217 1.2 1.22V8.9l4.83-.01-8.62 6.617-.034.025c-.813.622-1.075 1.658-.563 2.313.52.667 1.625.668 2.447.004L7.414 14s-.069.52-.063.831zm12.09 1.741c-.97.988-2.326 1.548-3.795 1.55-1.47.004-2.827-.552-3.797-1.538a4.51 4.51 0 0 1-1.036-1.622 4.282 4.282 0 0 1 .282-3.519 4.702 4.702 0 0 1 1.153-1.371c.942-.768 2.141-1.183 3.396-1.185 1.256-.002 2.455.41 3.398 1.175.48.391.87.854 1.152 1.367a4.28 4.28 0 0 1 .522 1.706 4.236 4.236 0 0 1-.239 1.811 4.54 4.54 0 0 1-1.035 1.626"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/blockchaindotcom.svg b/assets/lib/simple-icons/icons/blockchaindotcom.svg
new file mode 100644
index 00000000..221a2633
--- /dev/null
+++ b/assets/lib/simple-icons/icons/blockchaindotcom.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Blockchain.com</title><path d="M19.8285 6.6117l-5.52-5.535a3.1352 3.1352 0 00-4.5 0l-5.535 5.535 7.755 3.87zm2.118 2.235l1.095 1.095a3.12 3.12 0 010 4.5L14.22 23.3502a2.6846 2.6846 0 01-.72.525V13.0767zm-19.893 0l-1.095 1.095a3.1198 3.1198 0 000 4.5L9.78 23.3502c.2091.214.4525.3914.72.525V13.0767z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/blogger.svg b/assets/lib/simple-icons/icons/blogger.svg
index 12d7a7d8..1215fec0 100644
--- a/assets/lib/simple-icons/icons/blogger.svg
+++ b/assets/lib/simple-icons/icons/blogger.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Blogger icon</title><path d="M21.976 24H2.026C.9 24 0 23.1 0 21.976V2.026C0 .9.9 0 2.025 0H22.05C23.1 0 24 .9 24 2.025v19.95C24 23.1 23.1 24 21.976 24zM12 3.975H9c-2.775 0-5.025 2.25-5.025 5.025v6c0 2.774 2.25 5.024 5.025 5.024h6c2.774 0 5.024-2.25 5.024-5.024v-3.975c0-.6-.45-1.05-1.05-1.05H18c-.524 0-.976-.45-.976-.976 0-2.776-2.25-5.026-5.024-5.026zm3.074 12H9c-.525 0-.975-.45-.975-.975s.45-.976.975-.976h6.074c.526 0 .977.45.977.976s-.45.976-.975.976zm-2.55-7.95c.527 0 .976.45.976.975s-.45.975-.975.975h-3.6c-.525 0-.976-.45-.976-.975s.45-.975.975-.975h3.6z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Blogger</title><path d="M21.976 24H2.026C.9 24 0 23.1 0 21.976V2.026C0 .9.9 0 2.025 0H22.05C23.1 0 24 .9 24 2.025v19.95C24 23.1 23.1 24 21.976 24zM12 3.975H9c-2.775 0-5.025 2.25-5.025 5.025v6c0 2.774 2.25 5.024 5.025 5.024h6c2.774 0 5.024-2.25 5.024-5.024v-3.975c0-.6-.45-1.05-1.05-1.05H18c-.524 0-.976-.45-.976-.976 0-2.776-2.25-5.026-5.024-5.026zm3.074 12H9c-.525 0-.975-.45-.975-.975s.45-.976.975-.976h6.074c.526 0 .977.45.977.976s-.45.976-.975.976zm-2.55-7.95c.527 0 .976.45.976.975s-.45.975-.975.975h-3.6c-.525 0-.976-.45-.976-.975s.45-.975.975-.975h3.6z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/bloglovin.svg b/assets/lib/simple-icons/icons/bloglovin.svg
index c99d05db..abe53d86 100644
--- a/assets/lib/simple-icons/icons/bloglovin.svg
+++ b/assets/lib/simple-icons/icons/bloglovin.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Bloglovin icon</title><path d="M12.526 11.695c1.84-.382 3.367-2.044 3.367-4.478 0-2.604-1.9-4.97-5.615-4.97H0v19.506h10.6c3.75 0 5.683-2.341 5.683-5.292-.009-2.426-1.646-4.444-3.757-4.766zm-8.37-5.793h5.207c1.407 0 2.28.849 2.28 2.044 0 1.255-.881 2.044-2.28 2.044H4.155zM9.54 18.098H4.155v-4.444h5.386c1.61 0 2.484.992 2.484 2.222.009 1.399-.932 2.222-2.484 2.222zM21.396 2.28c-1.255 0-2.315 1.052-2.315 2.307s.882 2.103 1.993 2.103c.238 0 .467-.025.56-.085-.238 1.052-1.315 2.282-2.256 2.782l1.611 1.314C22.796 9.422 24 7.462 24 5.266c0-1.9-1.23-2.985-2.604-2.985Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Bloglovin</title><path d="M12.526 11.695c1.84-.382 3.367-2.044 3.367-4.478 0-2.604-1.9-4.97-5.615-4.97H0v19.506h10.6c3.75 0 5.683-2.341 5.683-5.292-.009-2.426-1.646-4.444-3.757-4.766zm-8.37-5.793h5.207c1.407 0 2.28.849 2.28 2.044 0 1.255-.881 2.044-2.28 2.044H4.155zM9.54 18.098H4.155v-4.444h5.386c1.61 0 2.484.992 2.484 2.222.009 1.399-.932 2.222-2.484 2.222zM21.396 2.28c-1.255 0-2.315 1.052-2.315 2.307s.882 2.103 1.993 2.103c.238 0 .467-.025.56-.085-.238 1.052-1.315 2.282-2.256 2.782l1.611 1.314C22.796 9.422 24 7.462 24 5.266c0-1.9-1.23-2.985-2.604-2.985Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/blueprint.svg b/assets/lib/simple-icons/icons/blueprint.svg
new file mode 100644
index 00000000..70de72ff
--- /dev/null
+++ b/assets/lib/simple-icons/icons/blueprint.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Blueprint</title><path d="M21.809 5.524L12.806.179l-.013-.007.078-.045h-.166a1.282 1.282 0 0 0-1.196.043l-.699.403-8.604 4.954a1.285 1.285 0 0 0-.644 1.113v10.718c0 .46.245.884.644 1.113l9.304 5.357c.402.232.898.228 1.297-.009l9.002-5.345c.39-.231.629-.651.629-1.105V6.628c0-.453-.239-.873-.629-1.104zm-19.282.559L11.843.719a.642.642 0 0 1 .636.012l9.002 5.345a.638.638 0 0 1 .207.203l-4.543 2.555-4.498-2.7a.963.963 0 0 0-.968-.014L6.83 8.848 2.287 6.329a.644.644 0 0 1 .24-.246zm14.13 8.293l-4.496-2.492V6.641a.32.32 0 0 1 .155.045l4.341 2.605v5.085zm-4.763-1.906l4.692 2.601-4.431 2.659-4.648-2.615a.317.317 0 0 1-.115-.112l4.502-2.533zm-.064 10.802l-9.304-5.357a.643.643 0 0 1-.322-.557V7.018L6.7 9.51v5.324c0 .348.188.669.491.84l4.811 2.706.157.088v4.887a.637.637 0 0 1-.329-.083z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/bluetooth.svg b/assets/lib/simple-icons/icons/bluetooth.svg
index 3978e9a8..96c61933 100644
--- a/assets/lib/simple-icons/icons/bluetooth.svg
+++ b/assets/lib/simple-icons/icons/bluetooth.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Bluetooth icon</title><path d="M12 0C6.76 0 3.1484 2.4895 3.1484 12S6.76 24 12 24c5.24 0 8.8516-2.4895 8.8516-12S17.24 0 12 0zm-.7773 1.6816l6.2148 6.2149L13.334 12l4.1035 4.1035-6.2148 6.2149V14.125l-3.418 3.42-1.2422-1.2442L10.8515 12l-4.289-4.3008 1.2422-1.2441 3.418 3.4199V1.6816zm1.748 4.2442v3.9687l1.9844-1.9843-1.9844-1.9844zm0 8.1816v3.9668l1.9844-1.9844-1.9844-1.9824Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Bluetooth</title><path d="M12 0C6.76 0 3.1484 2.4895 3.1484 12S6.76 24 12 24c5.24 0 8.8516-2.4895 8.8516-12S17.24 0 12 0zm-.7773 1.6816l6.2148 6.2149L13.334 12l4.1035 4.1035-6.2148 6.2149V14.125l-3.418 3.42-1.2422-1.2442L10.8515 12l-4.289-4.3008 1.2422-1.2441 3.418 3.4199V1.6816zm1.748 4.2442v3.9687l1.9844-1.9843-1.9844-1.9844zm0 8.1816v3.9668l1.9844-1.9844-1.9844-1.9824Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/bmcsoftware.svg b/assets/lib/simple-icons/icons/bmcsoftware.svg
index e5425e14..e99a73d7 100644
--- a/assets/lib/simple-icons/icons/bmcsoftware.svg
+++ b/assets/lib/simple-icons/icons/bmcsoftware.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>BMC Software icon</title><path d="M6.389 23.97c-.948 0-1.946-.747-1.946-2.194v-3.392c0-1.346.848-2.892 2.045-3.54l4.739-2.794-4.739-2.793c-1.147-.749-2.045-2.245-2.045-3.592V2.224C4.443.777 5.441.029 6.44.029c.399 0 .847.1 1.246.35L18.36 6.712c.748.449 1.147 1.147 1.147 1.845 0 .749-.45 1.447-1.147 1.846L15.816 11.9l2.544 1.497c.748.449 1.197 1.147 1.197 1.845 0 .748-.45 1.447-1.197 1.846L7.685 23.622c-.448.25-.847.349-1.296.349zm7.132-10.573l-5.836 3.441c-.448.25-.897 1.048-.897 1.546v3.043l10.125-5.985zM6.788 2.623v3.042c0 .5.449 1.297.897 1.547l5.836 3.441 3.442-2.045z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>BMC Software</title><path d="M6.375 23.999c-.95 0-1.95-.749-1.95-2.2v-3.4c0-1.349.85-2.899 2.05-3.548l4.75-2.8-4.75-2.8C5.325 8.5 4.425 7 4.425 5.65V2.2c0-1.45 1-2.2 2.002-2.2.4 0 .849.1 1.249.35l10.7 6.35c.75.45 1.15 1.149 1.15 1.849 0 .75-.452 1.45-1.15 1.85l-2.55 1.5 2.55 1.501c.75.45 1.2 1.15 1.2 1.85 0 .75-.452 1.45-1.2 1.85L7.674 23.65c-.45.25-.85.35-1.3.35zm7.15-10.599l-5.85 3.45c-.45.25-.9 1.05-.9 1.55v3.05l10.15-6zM6.775 2.6v3.05c0 .5.45 1.3.9 1.55l5.85 3.45 3.45-2.05z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/bmw.svg b/assets/lib/simple-icons/icons/bmw.svg
index 9c4deae3..d5795256 100644
--- a/assets/lib/simple-icons/icons/bmw.svg
+++ b/assets/lib/simple-icons/icons/bmw.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>BMW icon</title><path d="M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0zm0 .78C18.196.78 23.219 5.803 23.219 12c0 6.196-5.022 11.219-11.219 11.219C5.803 23.219.781 18.196.781 12S5.804.78 12 .78zm-.678.63c-.33.014-.66.042-.992.078l-.107 2.944a9.95 9.95 0 0 1 .71-.094l.07-1.988-.013-.137.043.13.664 1.489h.606l.664-1.488.04-.131-.01.137.07 1.988c.232.022.473.054.71.094l-.109-2.944a14.746 14.746 0 0 0-.992-.078l-.653 1.625-.023.12-.023-.12-.655-1.625zm6.696 1.824l-1.543 2.428c.195.15.452.371.617.522l1.453-.754.092-.069-.069.094-.752 1.453c.163.175.398.458.53.63l2.43-1.544a16.135 16.135 0 0 0-.46-.568L18.777 6.44l-.105.092.078-.115.68-1.356-.48-.48-1.356.68-.115.078.091-.106 1.018-1.539c-.18-.152-.351-.291-.57-.46zM5.5 3.785c-.36.037-.638.283-1.393 1.125a18.97 18.97 0 0 0-.757.914l2.074 1.967c.687-.76.966-1.042 1.508-1.613.383-.405.6-.87.216-1.317-.208-.242-.558-.295-.85-.175l-.028.01.01-.026a.7.7 0 0 0-.243-.734.724.724 0 0 0-.537-.15zm.006.615c.136-.037.277.06.308.2.032.14-.056.272-.154.382-.22.25-1.031 1.098-1.031 1.098l-.402-.383c.417-.51.861-.974 1.062-1.158a.55.55 0 0 1 .217-.139zM12 4.883a7.114 7.114 0 0 0-7.08 6.388v.002a7.122 7.122 0 0 0 8.516 7.697 7.112 7.112 0 0 0 5.68-6.97A7.122 7.122 0 0 0 12 4.885v-.002zm-5.537.242c.047 0 .096.013.14.043.088.059.128.16.106.26-.026.119-.125.231-.205.318l-1.045 1.12-.42-.4s.787-.832 1.045-1.099c.102-.106.168-.17.238-.205a.331.331 0 0 1 .14-.037zM12 5.818A6.175 6.175 0 0 1 18.182 12H12v6.182A6.175 6.175 0 0 1 5.818 12H12V5.818Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>BMW</title><path d="M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0zm0 .78C18.196.78 23.219 5.803 23.219 12c0 6.196-5.022 11.219-11.219 11.219C5.803 23.219.781 18.196.781 12S5.804.78 12 .78zm-.678.63c-.33.014-.66.042-.992.078l-.107 2.944a9.95 9.95 0 0 1 .71-.094l.07-1.988-.013-.137.043.13.664 1.489h.606l.664-1.488.04-.131-.01.137.07 1.988c.232.022.473.054.71.094l-.109-2.944a14.746 14.746 0 0 0-.992-.078l-.653 1.625-.023.12-.023-.12-.655-1.625zm6.696 1.824l-1.543 2.428c.195.15.452.371.617.522l1.453-.754.092-.069-.069.094-.752 1.453c.163.175.398.458.53.63l2.43-1.544a16.135 16.135 0 0 0-.46-.568L18.777 6.44l-.105.092.078-.115.68-1.356-.48-.48-1.356.68-.115.078.091-.106 1.018-1.539c-.18-.152-.351-.291-.57-.46zM5.5 3.785c-.36.037-.638.283-1.393 1.125a18.97 18.97 0 0 0-.757.914l2.074 1.967c.687-.76.966-1.042 1.508-1.613.383-.405.6-.87.216-1.317-.208-.242-.558-.295-.85-.175l-.028.01.01-.026a.7.7 0 0 0-.243-.734.724.724 0 0 0-.537-.15zm.006.615c.136-.037.277.06.308.2.032.14-.056.272-.154.382-.22.25-1.031 1.098-1.031 1.098l-.402-.383c.417-.51.861-.974 1.062-1.158a.55.55 0 0 1 .217-.139zM12 4.883a7.114 7.114 0 0 0-7.08 6.388v.002a7.122 7.122 0 0 0 8.516 7.697 7.112 7.112 0 0 0 5.68-6.97A7.122 7.122 0 0 0 12 4.885v-.002zm-5.537.242c.047 0 .096.013.14.043.088.059.128.16.106.26-.026.119-.125.231-.205.318l-1.045 1.12-.42-.4s.787-.832 1.045-1.099c.102-.106.168-.17.238-.205a.331.331 0 0 1 .14-.037zM12 5.818A6.175 6.175 0 0 1 18.182 12H12v6.182A6.175 6.175 0 0 1 5.818 12H12V5.818Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/boehringeringelheim.svg b/assets/lib/simple-icons/icons/boehringeringelheim.svg
new file mode 100644
index 00000000..0381fecd
--- /dev/null
+++ b/assets/lib/simple-icons/icons/boehringeringelheim.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Boehringer Ingelheim</title><path d="M12.53029 7.32626v16.64847C12.32849 24 12.22723 24 12.00009 24c-.22738 0-.3539 0-.55609-.02527V7.32626h1.08629zm-2.39964.00006v16.57275c-.42958-.076-.85921-.2022-1.08628-.27786V7.32632h1.08628zm4.79978-.00006v16.26937c-.55577.17692-.78316.25265-1.08628.30344V7.32626h1.08628zm-7.1998 7.73063v8.15995c-.22739-.07574-.32864-.1262-.55577-.2274-.17693-.07572-.30312-.12619-.53051-.25264v-7.67991h1.08628zm9.62502 0v7.67984c-.42932.20219-.73237.3539-1.11155.48004V15.0569h1.11155zM12.00015 0c6.64404 0 11.99985 5.38108 11.99985 12.05063 0 2.65267-.8589 5.22935-2.42528 7.225-.7075.93488-1.3894 1.54112-2.9306 2.70314v-6.92188h1.08629v4.90097c2.27388-2.6022 3.25891-4.9767 3.25891-7.9325C22.98932 5.86112 18.08835.8841 12.0001.8841 5.91152.8841.98529 5.88632.98529 12.07583c0 2.82934.90936 5.02717 3.25891 7.88203v-4.90097h1.11155v6.92188c-1.23794-.73238-2.39996-1.91998-3.41057-3.41032C.6567 16.62328 0 14.45066 0 12.1263 0 5.38108 5.33061 0 12.00016 0zm.00001 2.65267l3.63777 2.85454-.63151.73276-3.00626-2.34955-3.00658 2.34955-.63144-.7075 3.63802-2.8798z"/></svg>
diff --git a/assets/lib/simple-icons/icons/boeing.svg b/assets/lib/simple-icons/icons/boeing.svg
index 126d0c3c..d8d8e280 100644
--- a/assets/lib/simple-icons/icons/boeing.svg
+++ b/assets/lib/simple-icons/icons/boeing.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Boeing icon</title><path d="M6.905 17.353a6.051 6.051 0 0 1-3.759-1.301C4.35 13.337 6.8 9.694 10.143 6.136a6.07 6.07 0 0 1 2.262 7.728c-1.06-.49-2.05-1.105-2.888-1.88l1.831 3.438a6.058 6.058 0 0 1-4.443 1.931M.83 11.278a6.075 6.075 0 0 1 6.076-6.077c.9 0 1.752.196 2.522.546-3.293 2.91-5.843 6.293-7.352 9.217A6.051 6.051 0 0 1 .83 11.278m12.34 2.912a6.862 6.862 0 0 0 .642-2.912c0-2.4-1.225-4.515-3.085-5.753a49.606 49.606 0 0 1 3.583-3.342 31.172 31.172 0 0 0-4.2 2.975 6.907 6.907 0 0 0-8.436 10.625C.35 18.646.12 20.944 1.286 21.72c1.248.832 3.962-.677 5.59-3.134 0 0-2.518 2.273-3.902 1.751-.851-.322-.854-1.624-.152-3.492a6.871 6.871 0 0 0 4.084 1.338c1.893 0 3.606-.76 4.853-1.992l.245.462C15.013 16.408 24 16.17 24 16.17c0-.431-5.95-.04-10.832-1.98"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Boeing</title><path d="M6.9044 17.2866a6.0512 6.0512 0 01-3.7595-1.3008c1.2048-2.7146 3.6545-6.3581 6.998-9.9166a6.0702 6.0702 0 012.2617 7.729c-1.0599-.49-2.0497-1.106-2.8876-1.8798l1.8307 3.4375a6.0582 6.0582 0 01-4.4433 1.9307M.8292 11.2115a6.0752 6.0752 0 016.0762-6.0772c.8998 0 1.7527.196 2.5226.546-3.2935 2.9095-5.8432 6.293-7.353 9.2177a6.0512 6.0512 0 01-1.2458-3.6875m12.3403 2.9126a6.862 6.862 0 00.6419-2.9126c0-2.3997-1.2248-4.5144-3.0846-5.7532a49.6072 49.6072 0 013.5825-3.3416A31.1727 31.1727 0 0010.11 5.0903a6.907 6.907 0 00-8.4368 10.6265C.3493 18.5795.1193 20.8781 1.285 21.654c1.2489.832 3.9625-.6769 5.5903-3.1345 0 0-2.5177 2.2736-3.9015 1.7517-.8519-.322-.8549-1.6248-.152-3.4925a6.871 6.871 0 004.0835 1.3378c1.8937 0 3.6065-.7599 4.8533-1.9917l.245.462c3.0095-.245 11.9963-.483 11.9963-.483 0-.431-5.9502-.04-10.8325-1.9797"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/bookbub.svg b/assets/lib/simple-icons/icons/bookbub.svg
new file mode 100644
index 00000000..53d012fd
--- /dev/null
+++ b/assets/lib/simple-icons/icons/bookbub.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>BookBub</title><path d="M0 20V4h5.4c1.6 0 2.8.3 3.8 1 .9.7 1.4 1.6 1.4 2.7 0 .8-.3 1.6-.8 2.3-.6.7-1.3 1.2-2.2 1.4 1.1.1 2 .6 2.7 1.3.7.7 1 1.6 1 2.6 0 1.4-.5 2.6-1.5 3.4-1 .9-2.4 1.3-4.1 1.3H0zM3 6.4v4.2h1.7c.8 0 1.5-.2 1.9-.6.4-.4.7-1 .7-1.7 0-1.3-.9-1.9-2.7-1.9H3zM3 13v4.7h2.1c.9 0 1.6-.2 2.1-.6.5-.5.8-1.1.8-1.9C8 13.7 7 13 5 13H3zm9.7 7V4h5.4c1.6 0 2.8.3 3.8 1 .9.7 1.4 1.6 1.4 2.7 0 .8-.3 1.6-.8 2.3-.6.7-1.3 1.2-2.2 1.4 1.1.1 2 .6 2.7 1.3.7.7 1 1.6 1 2.6 0 1.4-.5 2.6-1.5 3.4-1 .9-2.4 1.3-4.1 1.3h-5.7zm3-13.6v4.2h1.7c.8 0 1.5-.2 1.9-.6s.7-1 .7-1.7c0-1.3-.9-1.9-2.7-1.9h-1.6zm0 6.6v4.7h2.1c.9 0 1.6-.2 2.1-.6.5-.4.7-1 .7-1.8 0-1.5-1-2.3-3-2.3h-1.9z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/bookmeter.svg b/assets/lib/simple-icons/icons/bookmeter.svg
new file mode 100644
index 00000000..3751818f
--- /dev/null
+++ b/assets/lib/simple-icons/icons/bookmeter.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Bookmeter</title><path d="M.678 14.262h6.089V24H.678v-9.738zm8.215 9.717h6.089V7.11H8.893v16.869zM17.234 0v24h6.089V0h-6.089z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/bookstack.svg b/assets/lib/simple-icons/icons/bookstack.svg
new file mode 100644
index 00000000..8b782905
--- /dev/null
+++ b/assets/lib/simple-icons/icons/bookstack.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>BookStack</title><path d="M.3013 17.6146c-.1299-.3387-.5228-1.5119-.1337-2.4314l9.8273 5.6738a.329.329 0 0 0 .3299 0L24 12.9616v2.3542l-13.8401 7.9906-9.8586-5.6918zM.1911 8.9628c-.2882.8769.0149 2.0581.1236 2.4261l9.8452 5.6841L24 9.0823V6.7275L10.3248 14.623a.329.329 0 0 1-.3299 0L.1911 8.9628zm13.1698-1.9361c-.1819.1113-.4394.0015-.4852-.2064l-.2805-1.1336-2.1254-.1752a.33.33 0 0 1-.1378-.6145l5.5782-3.2207-1.7021-.9826L.6979 8.4935l9.462 5.463 13.5104-7.8004-4.401-2.5407-5.9084 3.4113zm-.1821-1.7286.2321.938 5.1984-3.0014-2.0395-1.1775-4.994 2.8834 1.3099.108a.3302.3302 0 0 1 .2931.2495zM24 9.845l-13.6752 7.8954a.329.329 0 0 1-.3299 0L.1678 12.0667c-.3891.919.003 2.0914.1332 2.4311l9.8589 5.692L24 12.1993V9.845z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/boost.svg b/assets/lib/simple-icons/icons/boost.svg
index 4ecb0dea..11e51eb0 100644
--- a/assets/lib/simple-icons/icons/boost.svg
+++ b/assets/lib/simple-icons/icons/boost.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Boost icon</title><path d="M15.818 18.157c.058-.045.112-.099.163-.15a2.28 2.28 0 0 0 0-3.169l-7.802-8c-.054.05-.109.099-.16.152a2.278 2.278 0 0 0 0 3.17l7.799 7.997zm5.727-11.399a2.957 2.957 0 0 1 1.573.873c1.176 1.24 1.176 3.25 0 4.49l-5.557 5.847a2.145 2.145 0 0 1-1.298.637L19.567 22l-17.11-3.758a2.998 2.998 0 0 1-1.572-.878c-1.18-1.237-1.18-3.248 0-4.494l5.552-5.838a2.129 2.129 0 0 1 1.303-.643L4.434 3l17.11 3.758z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Boost</title><path d="M4.428 2.727l3.335 3.335c-.486.07-.903.276-1.32.624L.886 12.383c-1.181 1.18-1.181 3.194 0 4.375a2.41 2.41 0 0 0 1.598.834l17.088 3.681-3.335-3.333c.486-.07.903-.278 1.32-.626l5.557-5.695c1.181-1.181 1.181-3.196 0-4.377a2.411 2.411 0 0 0-1.598-.833zM11.653 6.2c.694 0 1.25.486 1.25 1.18 0 .695-.486 1.251-1.181 1.251-.695 0-1.25-.485-1.25-1.18s.555-1.251 1.18-1.251zm1.51 3.792c.049-.006.088.046.088.098-.139.694-.695 1.181-1.39 1.181-.694 0-1.32-.487-1.46-1.112 0 0 .002-.07.071 0 .487.278.972.348 1.32.278.346 0 .833-.07 1.32-.416a.092.092 0 0 1 .05-.029zm.723 2.511c.058.013.06.106.06.158-.209.903-.973 1.666-1.946 1.666a2.167 2.167 0 0 1-2.084-1.528c-.07-.07 0-.138.138-.138.695.347 1.39.416 1.877.416.486 0 1.18-.14 1.875-.556.035-.017.06-.022.08-.018zm.597 3.018c.049-.013.087.09.087.195-.278 1.181-1.25 2.085-2.5 2.155-1.251 0-2.293-.835-2.57-1.946 0-.139.068-.278.207-.209.834.486 1.737.556 2.362.556s1.529-.208 2.362-.694c.018-.035.036-.053.052-.057z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/boots.svg b/assets/lib/simple-icons/icons/boots.svg
new file mode 100644
index 00000000..676eb028
--- /dev/null
+++ b/assets/lib/simple-icons/icons/boots.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Boots</title><path d="M22.979 8.337c.201-.23.326-.516.326-.73 0-.143-.083-.234-.218-.234-.224 0-.493.276-.493.691a.848.848 0 0 0 .018.175c-.257.4-.524.807-.793 1.198a1.491 1.491 0 0 0-.292-.029c-.649 0-1.319.487-1.319 1.367a1.697 1.697 0 0 0 .114.632c-.555.633-1.044 1.044-1.375 1.044-.13 0-.208-.071-.208-.219 0-.158.076-.409.229-.758l1.91-4.228 2.062-.242.234-.489-1.993.067.346-.763-.776.092-.35.695-2.79.09-.501.995 2.917-.344-.587 1.165a2.636 2.636 0 0 0-1.086-.212 3.927 3.927 0 0 0-1.766.425 1.81 1.81 0 0 0-.792-.175c-.673 0-1.436.324-2.056.893-.126-.388-.39-.62-.778-.62-.454 0-.935.238-1.396.623-.276-.225-.673-.29-1.095-.132a2.802 2.802 0 0 0 .35-1.317c0-.781-.365-1.354-1.032-1.7a5.165 5.165 0 0 1 .723-.493 1.72 1.72 0 0 0-.233-.164 6.642 6.642 0 0 0-.942.473c-.42-.134-.922-.202-1.496-.202C5.18 5.911 2.66 7.45 2.66 9.35c0 .837.473 1.137.942 1.137.438 0 .866-.246 1.002-.544-.381-.078-.607-.408-.607-.827 0-1.481 1.792-2.774 3.63-2.774.412 0 .769.077 1.062.218-1.117.86-1.975 2.03-2.682 3.282a1.937 1.937 0 0 0-.298-.024c-.528 0-.91.224-.91.666 0 .298.194.554.494.739-.44.911-.822 1.822-1.19 2.652-.128-.252-.419-.416-.755-.416-.807 0-1.418.712-1.418 1.594 0 .575.233 1.125.636 1.566-.38.425-.796.676-1.28.69a.858.858 0 0 1-.452-.114c.38-.042.692-.325.683-.692-.008-.367-.314-.628-.734-.617a.793.793 0 0 0-.783.817c.017.695.608 1.062 1.38 1.044.667-.015 1.24-.253 1.75-.654a3.266 3.266 0 0 0 1.769.5c2.049 0 3.787-1.745 3.787-4.087 0-.93-.24-1.668-.599-2.231a4.598 4.598 0 0 0 1.705-1.06c.637-.63 1.11-.572 1.381-.403-1.057 1.097-1.916 2.867-1.916 4.056 0 .737.295 1.217.862 1.217 1.7 0 3.73-3.278 3.705-5.08.546-.605 1.276-.965 1.869-.965a1.186 1.186 0 0 1 .307.037c-1.329.94-2.157 2.547-2.157 3.782 0 .655.322 1.152.95 1.152 1.17 0 2.692-1.823 2.692-3.64 0-.559-.159-.978-.41-1.273a2.599 2.599 0 0 1 1.34-.392 2.11 2.11 0 0 1 .834.18l-1.172 2.323c-.272.568-.378.988-.378 1.293 0 .469.275.71.711.71.636 0 1.385-.59 2.132-1.436.323.4.826.579 1.242.579a2.215 2.215 0 0 0 .404-.039c-.314.397-.838.696-1.607.889l-10.17 2.548c-1.545.386-2.49 1.148-2.034 2.608.353-.29.987-.573 2.63-1.073l9.232-2.816c1.35-.411 2.207-1.38 2.572-2.356.628-.306 1.189-.89 1.189-1.7.001-.894-.749-1.429-1.021-2.078zm-16.16 2.322a2.241 2.241 0 0 1 .321.33 3.023 3.023 0 0 1-.503.062q.09-.197.182-.392zm-1.592-.214c0-.231.279-.27.577-.236q-.162.3-.314.604c-.167-.105-.263-.235-.263-.368zm-2.271 5.663c-.34-.317-.507-.727-.502-1.068a1 1 0 0 1 .12-.462.756.756 0 0 0 .693.418.903.903 0 0 0 .35-.071 10.415 10.415 0 0 1-.661 1.183zm1.403.511a2.317 2.317 0 0 1-.641-.086c1.053-1.185 1.84-3.085 2.697-4.993a4.882 4.882 0 0 0 1.013-.087c.172.363.277.805.277 1.331 0 1.723-1.266 3.835-3.346 3.835zm3.366-5.816a3.254 3.254 0 0 0-.7-.577c.608-1.251 1.284-2.432 2.13-3.335.287.297.443.702.443 1.186-.001 1.204-.796 2.262-1.872 2.726zm2.597 3.579c-.164 0-.246-.142-.246-.382 0-1.047 1.778-4.474 2.673-4.474.17 0 .246.142.246.388-.002 1.058-1.77 4.468-2.673 4.468zm4.588-.996c-.17 0-.245-.135-.245-.388 0-.81.72-2.513 1.877-3.511.128.213.186.482.187.763.005 1.34-1.224 3.136-1.82 3.136zm5.744-2.368a1.326 1.326 0 0 1-.032-.295c0-.523.373-.946.865-.946q.05 0 .096.004c-.317.446-.63.866-.931 1.237zm1.867.593a1.275 1.275 0 0 1-.763.252c-.385 0-.713-.159-.917-.432.387-.47.77-.997 1.13-1.533.42.236.592.782.592 1.276a2.15 2.15 0 0 1-.044.437zm.494-.6c-.015-.6-.315-1.175-.825-1.444.202-.308.396-.617.579-.917.191.39.477.813.477 1.368a2.214 2.214 0 0 1-.232.994z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/bootstrap.svg b/assets/lib/simple-icons/icons/bootstrap.svg
index f4b0492d..984e1f2d 100644
--- a/assets/lib/simple-icons/icons/bootstrap.svg
+++ b/assets/lib/simple-icons/icons/bootstrap.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Bootstrap icon</title><path d="M20 0H4C1.793.006.006 1.793 0 4v16c0 2.2 1.8 4 4 4h16c2.2 0 4-1.8 4-4V4c0-2.2-1.8-4-4-4zm-2.187 16.855c-.2.482-.517.907-.923 1.234-.42.34-.952.62-1.607.82-.654.203-1.432.305-2.333.305H6.518v-14h6.802c1.258 0 2.266.283 3.02.86.76.58 1.138 1.444 1.138 2.61 0 .705-.172 1.31-.518 1.81-.344.497-.84.886-1.48 1.156v.046c.854.18 1.515.585 1.95 1.215s.658 1.426.658 2.387c0 .538-.104 1.05-.3 1.528l.025.027zm-2.776-3.45c-.41-.375-.986-.558-1.73-.558H8.985v4.368h4.334c.74 0 1.32-.192 1.73-.58.41-.385.62-.934.62-1.64-.007-.69-.21-1.224-.62-1.59h-.017zm-.6-2.823c.396-.336.59-.817.59-1.444 0-.704-.175-1.204-.53-1.49-.352-.285-.86-.433-1.528-.433h-4v3.863h4c.583 0 1.08-.17 1.464-.496z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Bootstrap</title><path d="M11.77 11.24H9.956V8.202h2.152c1.17 0 1.834.522 1.834 1.466 0 1.008-.773 1.572-2.174 1.572zm.324 1.206H9.957v3.348h2.231c1.459 0 2.232-.585 2.232-1.685s-.795-1.663-2.326-1.663zM24 11.39v1.218c-1.128.108-1.817.944-2.226 2.268-.407 1.319-.463 2.937-.42 4.186.045 1.3-.968 2.5-2.337 2.5H4.985c-1.37 0-2.383-1.2-2.337-2.5.043-1.249-.013-2.867-.42-4.186-.41-1.324-1.1-2.16-2.228-2.268V11.39c1.128-.108 1.819-.944 2.227-2.268.408-1.319.464-2.937.42-4.186-.045-1.3.968-2.5 2.338-2.5h14.032c1.37 0 2.382 1.2 2.337 2.5-.043 1.249.013 2.867.42 4.186.409 1.324 1.098 2.16 2.226 2.268zm-7.927 2.817c0-1.354-.953-2.333-2.368-2.488v-.057c1.04-.169 1.856-1.135 1.856-2.213 0-1.537-1.213-2.538-3.062-2.538h-4.16v10.172h4.181c2.218 0 3.553-1.086 3.553-2.876z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/bosch.svg b/assets/lib/simple-icons/icons/bosch.svg
index 23cc122c..4642efd7 100644
--- a/assets/lib/simple-icons/icons/bosch.svg
+++ b/assets/lib/simple-icons/icons/bosch.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Bosch icon</title><path d="M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12C23.996 5.374 18.626.004 12 0zm0 22.88C5.991 22.88 1.12 18.009 1.12 12S5.991 1.12 12 1.12 22.88 5.991 22.88 12c-.006 6.006-4.874 10.874-10.88 10.88zm4.954-18.374h-.821v4.108h-8.24V4.506h-.847a8.978 8.978 0 0 0 0 14.988h.846v-4.108h8.24v4.108h.822a8.978 8.978 0 0 0 0-14.988zM6.747 17.876a7.86 7.86 0 0 1 0-11.752v11.752zm9.386-3.635h-8.24V9.734h8.24v4.507zm1.12 3.61V6.124a7.882 7.882 0 0 1 0 11.727z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Bosch</title><path d="M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12C23.996 5.374 18.626.004 12 0zm0 22.88C5.991 22.88 1.12 18.009 1.12 12S5.991 1.12 12 1.12 22.88 5.991 22.88 12c-.006 6.006-4.874 10.874-10.88 10.88zm4.954-18.374h-.821v4.108h-8.24V4.506h-.847a8.978 8.978 0 0 0 0 14.988h.846v-4.108h8.24v4.108h.822a8.978 8.978 0 0 0 0-14.988zM6.747 17.876a7.86 7.86 0 0 1 0-11.752v11.752zm9.386-3.635h-8.24V9.734h8.24v4.507zm1.12 3.61V6.124a7.882 7.882 0 0 1 0 11.727z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/bose.svg b/assets/lib/simple-icons/icons/bose.svg
index 6e6a23d7..b4ac891b 100644
--- a/assets/lib/simple-icons/icons/bose.svg
+++ b/assets/lib/simple-icons/icons/bose.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Bose icon</title><path d="M14.051 10.555a.686.686 0 00-.588.34c-.11.194-.426.742-.54.936a.27.27 0 00.236.409h1.873l-.336.582a.271.271 0 01-.24.142h-.29c-.097 0-.137-.105-.103-.168.035-.063.112-.194.112-.194h-1.698l-.246.426c-.115.2.038.416.233.416h3.173a.69.69 0 00.598-.349c.121-.21.405-.706.528-.916a.27.27 0 00-.228-.42h-1.873l.346-.6a.274.274 0 01.231-.125h.292c.096 0 .136.104.106.159a14.05 14.05 0 01-.118.204h1.696l.255-.44a.273.273 0 00-.24-.402h-3.179m-2.94.65a1307.162 1307.217 0 00-.936 1.622.275.275 0 01-.236.137h-.295c-.095 0-.138-.104-.102-.168l.94-1.629a.275.275 0 01.236-.133h.295a.113.113 0 01.098.171m1.597-.65h-3.17a.695.695 0 00-.593.337l-1.238 2.145c-.11.19.04.407.236.407h3.176c.256 0 .48-.145.593-.338l1.236-2.143a.272.272 0 00-.24-.408m-5.723.65l-.243.42a.266.266 0 01-.233.134h-.9l.419-.725h.858c.089 0 .14.096.099.17M6.29 12.41l-.243.42a.266.266 0 01-.233.134h-.9l.42-.724h.857c.089 0 .14.095.099.17m1.902-1.855H4.61l-1.392 2.41H0v.48l6.599-.001c.24 0 .468-.125.595-.344l.41-.713c.086-.148-.005-.338-.163-.387a.698.698 0 00.583-.337l.402-.698a.272.272 0 00-.234-.41m9.986 0l-1.667 2.889h4.042l.277-.48h-2.346l.418-.724h2.346l.277-.48H19.18l.418-.726H24v-.479h-5.82z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Bose</title><path d="M14.051 10.555a.686.686 0 00-.588.34c-.11.194-.426.742-.54.936a.27.27 0 00.236.409h1.873l-.336.582a.271.271 0 01-.24.142h-.29c-.097 0-.137-.105-.103-.168.035-.063.112-.194.112-.194h-1.698l-.246.426c-.115.2.038.416.233.416h3.173a.69.69 0 00.598-.349c.121-.21.405-.706.528-.916a.27.27 0 00-.228-.42h-1.873l.346-.6a.274.274 0 01.231-.125h.292c.096 0 .136.104.106.159a14.05 14.05 0 01-.118.204h1.696l.255-.44a.273.273 0 00-.24-.402h-3.179m-2.94.65a1307.162 1307.217 0 00-.936 1.622.275.275 0 01-.236.137h-.295c-.095 0-.138-.104-.102-.168l.94-1.629a.275.275 0 01.236-.133h.295a.113.113 0 01.098.171m1.597-.65h-3.17a.695.695 0 00-.593.337l-1.238 2.145c-.11.19.04.407.236.407h3.176c.256 0 .48-.145.593-.338l1.236-2.143a.272.272 0 00-.24-.408m-5.723.65l-.243.42a.266.266 0 01-.233.134h-.9l.419-.725h.858c.089 0 .14.096.099.17M6.29 12.41l-.243.42a.266.266 0 01-.233.134h-.9l.42-.724h.857c.089 0 .14.095.099.17m1.902-1.855H4.61l-1.392 2.41H0v.48l6.599-.001c.24 0 .468-.125.595-.344l.41-.713c.086-.148-.005-.338-.163-.387a.698.698 0 00.583-.337l.402-.698a.272.272 0 00-.234-.41m9.986 0l-1.667 2.889h4.042l.277-.48h-2.346l.418-.724h2.346l.277-.48H19.18l.418-.726H24v-.479h-5.82z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/boulanger.svg b/assets/lib/simple-icons/icons/boulanger.svg
new file mode 100644
index 00000000..61095786
--- /dev/null
+++ b/assets/lib/simple-icons/icons/boulanger.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>boulanger</title><path d="M8.405 3.612v3.5777h5.6616c2.987.0347 5.3836 2.4311 5.3836 5.4181-.0347 2.987-2.4313 5.3834-5.3836 5.4181h-3.1259c-2.987 0-5.4181-2.431-5.4181-5.418V8.4052c0-2.084 1.1458-3.8903 2.8824-4.7933zC3.7856 3.612 0 7.3975 0 12.017c0 4.6194 3.7162 8.371 8.3704 8.371h7.2592C20.249 20.388 24 16.6711 24 12.017c0-4.6542-3.6815-8.405-8.3704-8.405zm.0353 6.4255v2.5357c0 1.3893 1.1457 2.535 2.535 2.535h3.0222c1.3893 0 2.535-1.1457 2.535-2.535 0-1.3893-1.111-2.5357-2.535-2.5357z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/bower.svg b/assets/lib/simple-icons/icons/bower.svg
index e6d0d5c2..5a18151d 100644
--- a/assets/lib/simple-icons/icons/bower.svg
+++ b/assets/lib/simple-icons/icons/bower.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Bower icon</title><path d="M23.54157 11.3053c-1.2341-1.18676-7.40717-1.92715-9.35444-2.14222.0943-.22248.1748-.45344.24155-.69076.26593-.11654.55198-.2246.84863-.31466.03603.107.2066.5149.303.70878 3.9168.10806 4.1181-2.91032 4.27702-3.73775.15574-.80837.14832-1.59025 1.4917-3.0184-2.0013-.58375-4.87983.90372-5.84393 3.11798-.36234-.1356-.72574-.23626-1.0849-.2977C14.16277 3.8923 12.82257 1 9.30624 1c-2.27782 0-4.5747.9408-6.30162 2.58083-.9302.88358-1.6612 1.93244-2.17293 3.11903C.2797 7.98073 0 9.39086 0 10.8921c0 5.22735 3.56824 9.80736 5.58437 9.80736.8804 0 1.63792-.65898 1.8159-1.25015.1494.40578.606 1.66547.75645 1.98542.2225.47464 1.2491.88465 1.6983.392.5774.32102 1.63792.51384 2.21532-.3422 1.11243.2352 2.09666-.42802 2.11785-1.2205.5456-.0286.81365-.79564.695-1.40588-.08794-.4492-1.02662-2.06276-1.3932-2.61897.72468.5901 2.56177.75645 2.78425 0 1.16858.91748 2.99084.4365 3.13492-.31042 1.42073.3687 3.0491-.4418 2.78213-1.42285 2.28206-.15785 1.99026-2.58515 1.35027-3.2006zM17.5991 7.2815c-.6007-.23626-1.363-.38565-1.89696-.38565-.7575 0-1.21943.42908-1.93244.42908-.14938 0-.50642.00106-.79353-.1017.1886.1981.42273.30512.87723.30512.27122 0 .80942-.1388 1.24486-.2691.00635.09217.0159.18222.0286.27334-.81578.19493-1.6718.71406-1.91973.8486-.5509-1.2173-.07734-2.36787.36022-2.89865 1.9621.00423 3.54757 1.35186 4.03174 1.79895zm.84915-.09112l-.29983-.28075c-.3083-.28923-.6293-.54986-.95986-.78188.4916-.9747 1.10925-2.03945 1.889-2.69842-.85815.34644-1.70678 1.38046-2.2079 2.48547-.25532-.1621-.5149-.30724-.77658-.43332.69924-1.49276 2.32338-2.73868 4.11386-2.83615-1.1993 1.08806-.74903 3.25782-1.75975 4.544l.00105.00105zM15.9845 8.20693c-.13244-.2871-.2654-.76228-.2495-1.04197.22247-.0053.6505.0784.7183.0943-.0265.13136-.04026.41953-.04026.4566.04238-.0731.15997-.32418.20765-.42377.428.08157.99058.21824 1.32007.37186-.38776.2511-1.04515.5239-1.95628.54297zm-7.07214-1.9516c-.48483-.1739-.48483-.61095 0-.78484.48484-.1739 1.09417.04464 1.09417.3924 0 .34777-.60933.5663-1.09417.39242zm1.61647.1622c0-.96003-1.04643-1.5633-1.87905-1.0833-.83262.48002-.83262 1.68657 0 2.16658.83262.48003 1.87905-.12325 1.87905-1.08328zm2.7832-1.5749c-1.56482 1.586-.94716 3.5926-.37718 4.49844-.81048 1.3487-2.4039 2.2704-4.25476 2.68995 2.07758 0 3.3002-.53502 4.01108-1.0584.45345-.33478.69924-.66427.8253-.84755 3.0809.19917 7.95862 1.19188 8.43432 1.5129.1907.12925.38776.41424.41742.68758-2.3149-.3242-6.4881-.66534-7.58038-.72255.77552.1102 6.433 1.1813 7.41405 1.43238-.29878.4863-.97895.8306-2.00344.59118.5541.75433-.52125 1.6591-2.01932 1.16116.3295.74056-1.0033 1.40695-2.51938.63567.01907.74055-1.88052.82636-2.63062.0074.01484.09748.10383.28394.14197.36658-.24155 2.1634-2.014 3.50573-3.82885 3.50573-4.44335 0-8.3146-3.60955-8.3146-8.411 0-5.07582 3.75154-8.86443 8.27858-8.86443 2.59354 0 3.7653 2.04157 4.0058 2.81497z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Bower</title><path d="M23.542 11.756c-1.235-1.187-7.408-1.927-9.355-2.142.094-.223.175-.454.242-.691.266-.117.552-.225.848-.315.036.107.207.515.303.709 3.917.108 4.118-2.91 4.277-3.738.156-.808.149-1.59 1.492-3.018-2.001-.584-4.88.904-5.844 3.118a5.981 5.981 0 00-1.085-.298c-.257-1.038-1.597-3.93-5.114-3.93-2.278 0-4.574.94-6.301 2.58a9.421 9.421 0 00-2.173 3.12C.28 8.43 0 9.84 0 11.342c0 5.227 3.568 9.807 5.584 9.807.88 0 1.638-.659 1.816-1.25.15.406.606 1.665.757 1.985.222.475 1.249.885 1.698.392.577.321 1.638.514 2.215-.342 1.113.235 2.097-.428 2.118-1.22.546-.029.814-.796.695-1.406-.088-.45-1.026-2.063-1.393-2.62.725.59 2.562.757 2.784 0 1.169.918 2.991.437 3.135-.31 1.42.369 3.05-.441 2.782-1.423 2.282-.157 1.99-2.585 1.35-3.2zm-5.943-4.024c-.6-.236-1.363-.386-1.897-.386-.757 0-1.22.43-1.932.43-.15 0-.507 0-.794-.102.189.198.423.305.877.305.272 0 .81-.139 1.245-.27.007.093.016.183.029.274-.816.195-1.672.714-1.92.849-.55-1.218-.077-2.368.36-2.899 1.962.004 3.548 1.352 4.032 1.8zm.85-.091l-.3-.28c-.309-.29-.63-.55-.96-.783.491-.974 1.109-2.04 1.889-2.698-.859.346-1.707 1.38-2.208 2.485a7.635 7.635 0 00-.777-.433c.7-1.493 2.323-2.739 4.114-2.836-1.2 1.088-.75 3.258-1.76 4.544l.001.001zm-2.464 1.017c-.133-.288-.266-.763-.25-1.042.222-.006.65.078.718.094-.026.131-.04.42-.04.456.042-.073.16-.324.208-.423.428.081.99.218 1.32.372-.388.25-1.045.523-1.957.543zM8.912 6.706c-.484-.174-.484-.611 0-.785.485-.174 1.095.045 1.095.392 0 .348-.61.567-1.095.393zm1.617.162A1.252 1.252 0 108.65 7.951c.832.48 1.879-.123 1.879-1.083zm2.783-1.575c-1.565 1.586-.947 3.593-.377 4.499-.81 1.348-2.404 2.27-4.255 2.69 2.078 0 3.3-.535 4.011-1.059.454-.335.7-.664.825-.847 3.081.199 7.96 1.192 8.435 1.513.19.129.388.414.417.687-2.315-.324-6.488-.665-7.58-.722.775.11 6.433 1.18 7.414 1.432-.299.486-.98.83-2.004.591.555.754-.52 1.66-2.019 1.161.33.74-1.003 1.407-2.52.636.02.74-1.88.826-2.63.007.015.098.104.284.142.367-.241 2.163-2.014 3.506-3.829 3.506-4.443 0-8.314-3.61-8.314-8.411 0-5.076 3.751-8.865 8.278-8.865 2.594 0 3.766 2.042 4.006 2.815z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/box.svg b/assets/lib/simple-icons/icons/box.svg
index a0bba61d..aa885e67 100644
--- a/assets/lib/simple-icons/icons/box.svg
+++ b/assets/lib/simple-icons/icons/box.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Box icon</title><path d="M.959 5.523c-.54 0-.959.42-.959.899v7.549a4.59 4.59 0 004.613 4.494 4.717 4.717 0 004.135-2.457c.779 1.438 2.337 2.457 4.074 2.457 2.577 0 4.674-2.037 4.674-4.613.06-2.457-2.037-4.495-4.613-4.495-1.738 0-3.295.959-4.074 2.397-.78-1.438-2.338-2.397-4.135-2.397-1.079 0-2.038.36-2.817.899V6.422a.92.92 0 00-.898-.899zM17.602 9.26a.95.95 0 00-.704.158c-.36.3-.479.899-.18 1.318l2.397 3.116-2.396 3.115c-.3.42-.24.96.18 1.26.419.3 1.016.298 1.316-.122l2.039-2.636 2.096 2.697c.3.36.899.419 1.318.12.36-.3.42-.84.121-1.259l-2.338-3.115 2.338-3.057c.3-.419.298-1.018-.121-1.318-.48-.3-1.019-.24-1.318.18l-2.096 2.576-2.04-2.695c-.149-.18-.373-.3-.612-.338zM4.613 11.154c1.558 0 2.817 1.26 2.817 2.758 0 1.558-1.259 2.756-2.817 2.756-1.558 0-2.816-1.198-2.816-2.756 0-1.498 1.258-2.758 2.816-2.758zm8.27 0c1.558 0 2.816 1.26 2.816 2.758-.06 1.558-1.318 2.756-2.816 2.756-1.558 0-2.817-1.198-2.817-2.756 0-1.498 1.259-2.758 2.817-2.758Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Box</title><path d="M.959 5.523c-.54 0-.959.42-.959.899v7.549a4.59 4.59 0 004.613 4.494 4.717 4.717 0 004.135-2.457c.779 1.438 2.337 2.457 4.074 2.457 2.577 0 4.674-2.037 4.674-4.613.06-2.457-2.037-4.495-4.613-4.495-1.738 0-3.295.959-4.074 2.397-.78-1.438-2.338-2.397-4.135-2.397-1.079 0-2.038.36-2.817.899V6.422a.92.92 0 00-.898-.899zM17.602 9.26a.95.95 0 00-.704.158c-.36.3-.479.899-.18 1.318l2.397 3.116-2.396 3.115c-.3.42-.24.96.18 1.26.419.3 1.016.298 1.316-.122l2.039-2.636 2.096 2.697c.3.36.899.419 1.318.12.36-.3.42-.84.121-1.259l-2.338-3.115 2.338-3.057c.3-.419.298-1.018-.121-1.318-.48-.3-1.019-.24-1.318.18l-2.096 2.576-2.04-2.695c-.149-.18-.373-.3-.612-.338zM4.613 11.154c1.558 0 2.817 1.26 2.817 2.758 0 1.558-1.259 2.756-2.817 2.756-1.558 0-2.816-1.198-2.816-2.756 0-1.498 1.258-2.758 2.816-2.758zm8.27 0c1.558 0 2.816 1.26 2.816 2.758-.06 1.558-1.318 2.756-2.816 2.756-1.558 0-2.817-1.198-2.817-2.756 0-1.498 1.259-2.758 2.817-2.758Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/brand-dot-ai.svg b/assets/lib/simple-icons/icons/brand-dot-ai.svg
deleted file mode 100644
index 257038e2..00000000
--- a/assets/lib/simple-icons/icons/brand-dot-ai.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Brand.ai icon</title><path d="M23.958 11.26C23.58 5.004 18.404.045 12.062.006h-.142C9.68.022 7.584.646 5.795 1.73c-1.652.998-3.043 2.384-4.048 4.033C.76 7.378.15 9.25.023 11.253.008 11.5 0 11.747 0 12c0 .25.01.5.025.746.123 2.003.734 3.873 1.723 5.49 1 1.648 2.384 3.03 4.024 4.033 1.798 1.074 3.897 1.705 6.13 1.72h.18c6.343-.043 11.498-4.99 11.89-11.24.014-.24.03-.496.03-.735s0-.495-.016-.734l-.027-.022zm-11.956 4.38v3.83c.096 2.34-.57 2.73-1.37 2.766-.034 0-.066.003-.1.004-4.556-.645-8.158-4.257-8.784-8.823-.066-.464-.1-.938-.1-1.42 0-.48.034-.953.1-1.418.625-4.56 4.218-8.17 8.77-8.82l.115.01c.8.043 1.465.43 1.37 2.764v3.828c-.01 1.573.895 3.072 1.857 3.64-.962.56-1.868 1.875-1.858 3.634z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/brandfolder.svg b/assets/lib/simple-icons/icons/brandfolder.svg
index 2a115ac2..84218919 100644
--- a/assets/lib/simple-icons/icons/brandfolder.svg
+++ b/assets/lib/simple-icons/icons/brandfolder.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Brandfolder icon</title><path d="M0,23.291h19.601v-2.978H2.98V3.689h16.626v10.911h-1.422l2.908,2.909L24,14.599 h-1.417V0.709H0V23.291z M16.148,13.356c-0.191-0.406-0.432-0.739-0.72-0.997c-0.287-0.258-0.599-0.454-0.933-0.583 c-0.337-0.132-0.641-0.217-0.916-0.254c0.251-0.034,0.496-0.134,0.735-0.296c0.241-0.161,0.455-0.364,0.647-0.609 c0.192-0.247,0.345-0.535,0.458-0.863c0.115-0.33,0.171-0.686,0.171-1.069c0-0.648-0.126-1.186-0.377-1.617 c-0.252-0.432-0.597-0.775-1.033-1.033c-0.436-0.258-0.948-0.44-1.536-0.547c-0.586-0.108-1.21-0.162-1.868-0.162 c-0.754,0-1.382,0.018-1.887,0.054C8.387,5.417,7.944,5.463,7.56,5.525v12.933c0.684,0.083,1.293,0.141,1.834,0.171 c0.539,0.03,1.082,0.044,1.634,0.044c0.718,0,1.404-0.054,2.057-0.162c0.652-0.107,1.227-0.304,1.723-0.592 c0.499-0.288,0.893-0.68,1.187-1.177c0.294-0.498,0.441-1.135,0.441-1.914C16.436,14.253,16.34,13.763,16.148,13.356z M10.165,7.321c0.91-0.111,1.873-0.054,2.301,0.304c0.38,0.317,0.607,0.599,0.607,1.42c0,0.751-0.357,1.195-0.608,1.356 c-0.251,0.161-0.59,0.368-1.403,0.368s-0.897,0-0.897,0V7.321z M13.194,16.001c-0.449,0.39-1.114,0.552-1.816,0.552 c-0.79,0-1.213-0.072-1.213-0.072v-3.737h1.132c0.711,0,1.438,0.126,1.832,0.464c0.509,0.437,0.611,0.895,0.611,1.505 C13.741,15.322,13.528,15.711,13.194,16.001z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Brandfolder</title><path d="M0,23.291h19.601v-2.978H2.98V3.689h16.626v10.911h-1.422l2.908,2.909L24,14.599 h-1.417V0.709H0V23.291z M16.148,13.356c-0.191-0.406-0.432-0.739-0.72-0.997c-0.287-0.258-0.599-0.454-0.933-0.583 c-0.337-0.132-0.641-0.217-0.916-0.254c0.251-0.034,0.496-0.134,0.735-0.296c0.241-0.161,0.455-0.364,0.647-0.609 c0.192-0.247,0.345-0.535,0.458-0.863c0.115-0.33,0.171-0.686,0.171-1.069c0-0.648-0.126-1.186-0.377-1.617 c-0.252-0.432-0.597-0.775-1.033-1.033c-0.436-0.258-0.948-0.44-1.536-0.547c-0.586-0.108-1.21-0.162-1.868-0.162 c-0.754,0-1.382,0.018-1.887,0.054C8.387,5.417,7.944,5.463,7.56,5.525v12.933c0.684,0.083,1.293,0.141,1.834,0.171 c0.539,0.03,1.082,0.044,1.634,0.044c0.718,0,1.404-0.054,2.057-0.162c0.652-0.107,1.227-0.304,1.723-0.592 c0.499-0.288,0.893-0.68,1.187-1.177c0.294-0.498,0.441-1.135,0.441-1.914C16.436,14.253,16.34,13.763,16.148,13.356z M10.165,7.321c0.91-0.111,1.873-0.054,2.301,0.304c0.38,0.317,0.607,0.599,0.607,1.42c0,0.751-0.357,1.195-0.608,1.356 c-0.251,0.161-0.59,0.368-1.403,0.368s-0.897,0-0.897,0V7.321z M13.194,16.001c-0.449,0.39-1.114,0.552-1.816,0.552 c-0.79,0-1.213-0.072-1.213-0.072v-3.737h1.132c0.711,0,1.438,0.126,1.832,0.464c0.509,0.437,0.611,0.895,0.611,1.505 C13.741,15.322,13.528,15.711,13.194,16.001z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/brave.svg b/assets/lib/simple-icons/icons/brave.svg
index f65e4c3d..fa798a45 100644
--- a/assets/lib/simple-icons/icons/brave.svg
+++ b/assets/lib/simple-icons/icons/brave.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Brave icon</title><path d="M15.68 0l2.096 2.38s1.84-.512 2.709.358c.868.87 1.584 1.638 1.584 1.638l-.562 1.381.715 2.047s-2.104 7.98-2.35 8.955c-.486 1.919-.818 2.66-2.198 3.633-1.38.972-3.884 2.66-4.293 2.916-.409.256-.92.692-1.38.692-.46 0-.97-.436-1.38-.692a185.796 185.796 0 01-4.293-2.916c-1.38-.973-1.712-1.714-2.197-3.633-.247-.975-2.351-8.955-2.351-8.955l.715-2.047-.562-1.381s.716-.768 1.585-1.638c.868-.87 2.708-.358 2.708-.358L8.321 0h7.36zm-3.679 14.936c-.14 0-1.038.317-1.758.69-.72.373-1.242.637-1.409.742-.167.104-.065.301.087.409.152.107 2.194 1.69 2.393 1.866.198.175.489.464.687.464.198 0 .49-.29.688-.464.198-.175 2.24-1.759 2.392-1.866.152-.108.254-.305.087-.41-.167-.104-.689-.368-1.41-.741-.72-.373-1.617-.69-1.757-.69zm0-11.278s-.409.001-1.022.206-1.278.46-1.584.46c-.307 0-2.581-.434-2.581-.434S4.119 7.152 4.119 7.849c0 .697.339.881.68 1.243l2.02 2.149c.192.203.59.511.356 1.066-.235.555-.58 1.26-.196 1.977.384.716 1.042 1.194 1.464 1.115.421-.08 1.412-.598 1.776-.834.364-.237 1.518-1.19 1.518-1.554 0-.365-1.193-1.02-1.413-1.168-.22-.15-1.226-.725-1.247-.95-.02-.227-.012-.293.284-.851.297-.559.831-1.304.742-1.8-.089-.495-.95-.753-1.565-.986-.615-.232-1.799-.671-1.947-.74-.148-.068-.11-.133.339-.175.448-.043 1.719-.212 2.292-.052.573.16 1.552.403 1.632.532.079.13.149.134.067.579-.081.445-.5 2.581-.541 2.96-.04.38-.12.63.288.724.409.094 1.097.256 1.333.256s.924-.162 1.333-.256c.408-.093.329-.344.288-.723-.04-.38-.46-2.516-.541-2.961-.082-.445-.012-.45.067-.579.08-.129 1.059-.372 1.632-.532.573-.16 1.845.009 2.292.052.449.042.487.107.339.175-.148.069-1.332.508-1.947.74-.615.233-1.476.49-1.565.986-.09.496.445 1.241.742 1.8.297.558.304.624.284.85-.02.226-1.026.802-1.247.95-.22.15-1.413.804-1.413 1.169 0 .364 1.154 1.317 1.518 1.554.364.236 1.355.755 1.776.834.422.079 1.08-.4 1.464-1.115.384-.716.039-1.422-.195-1.977-.235-.555.163-.863.355-1.066l2.02-2.149c.341-.362.68-.546.68-1.243 0-.697-2.695-3.96-2.695-3.96s-2.274.436-2.58.436c-.307 0-.972-.256-1.585-.461-.613-.205-1.022-.206-1.022-.206z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Brave</title><path d="M15.68 0l2.096 2.38s1.84-.512 2.709.358c.868.87 1.584 1.638 1.584 1.638l-.562 1.381.715 2.047s-2.104 7.98-2.35 8.955c-.486 1.919-.818 2.66-2.198 3.633-1.38.972-3.884 2.66-4.293 2.916-.409.256-.92.692-1.38.692-.46 0-.97-.436-1.38-.692a185.796 185.796 0 01-4.293-2.916c-1.38-.973-1.712-1.714-2.197-3.633-.247-.975-2.351-8.955-2.351-8.955l.715-2.047-.562-1.381s.716-.768 1.585-1.638c.868-.87 2.708-.358 2.708-.358L8.321 0h7.36zm-3.679 14.936c-.14 0-1.038.317-1.758.69-.72.373-1.242.637-1.409.742-.167.104-.065.301.087.409.152.107 2.194 1.69 2.393 1.866.198.175.489.464.687.464.198 0 .49-.29.688-.464.198-.175 2.24-1.759 2.392-1.866.152-.108.254-.305.087-.41-.167-.104-.689-.368-1.41-.741-.72-.373-1.617-.69-1.757-.69zm0-11.278s-.409.001-1.022.206-1.278.46-1.584.46c-.307 0-2.581-.434-2.581-.434S4.119 7.152 4.119 7.849c0 .697.339.881.68 1.243l2.02 2.149c.192.203.59.511.356 1.066-.235.555-.58 1.26-.196 1.977.384.716 1.042 1.194 1.464 1.115.421-.08 1.412-.598 1.776-.834.364-.237 1.518-1.19 1.518-1.554 0-.365-1.193-1.02-1.413-1.168-.22-.15-1.226-.725-1.247-.95-.02-.227-.012-.293.284-.851.297-.559.831-1.304.742-1.8-.089-.495-.95-.753-1.565-.986-.615-.232-1.799-.671-1.947-.74-.148-.068-.11-.133.339-.175.448-.043 1.719-.212 2.292-.052.573.16 1.552.403 1.632.532.079.13.149.134.067.579-.081.445-.5 2.581-.541 2.96-.04.38-.12.63.288.724.409.094 1.097.256 1.333.256s.924-.162 1.333-.256c.408-.093.329-.344.288-.723-.04-.38-.46-2.516-.541-2.961-.082-.445-.012-.45.067-.579.08-.129 1.059-.372 1.632-.532.573-.16 1.845.009 2.292.052.449.042.487.107.339.175-.148.069-1.332.508-1.947.74-.615.233-1.476.49-1.565.986-.09.496.445 1.241.742 1.8.297.558.304.624.284.85-.02.226-1.026.802-1.247.95-.22.15-1.413.804-1.413 1.169 0 .364 1.154 1.317 1.518 1.554.364.236 1.355.755 1.776.834.422.079 1.08-.4 1.464-1.115.384-.716.039-1.422-.195-1.977-.235-.555.163-.863.355-1.066l2.02-2.149c.341-.362.68-.546.68-1.243 0-.697-2.695-3.96-2.695-3.96s-2.274.436-2.58.436c-.307 0-.972-.256-1.585-.461-.613-.205-1.022-.206-1.022-.206z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/breaker.svg b/assets/lib/simple-icons/icons/breaker.svg
index 15892995..a205a6bc 100644
--- a/assets/lib/simple-icons/icons/breaker.svg
+++ b/assets/lib/simple-icons/icons/breaker.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Breaker icon</title><path d="M13.556,12.924c0.21,0,0.386,0.017,0.585,0.056c1.043,0.206,1.898,0.964,2.246,1.956 c0.101,0.319,0.234,0.797,0.319,1.125l0.111,0.433l0.446-0.009c3.552-0.075,6.456-2.965,6.456-6.546C23.72,4.513,19.195,0,12.281,0 C9.429,0.009,6.725,1.046,4.678,2.715c-2.683,2.2-4.397,5.543-4.397,9.286c0.002,0.96,0.118,1.926,0.334,2.818 c0.788,3.268,2.91,6.015,5.759,7.628c1.723,0.971,3.784,1.547,5.909,1.553c0.521,0,1.052-0.036,1.554-0.099 c3.126-0.405,5.873-2.012,7.765-4.339l0.124-0.152l-0.24-0.868l-0.463,0.122c-1.436,0.381-2.908,0.578-4.463,0.576 c-1.243,0-2.428-0.128-3.598-0.375c-1.054-0.212-1.911-0.979-2.248-1.98c-0.109-0.315-0.158-0.608-0.156-0.958 c-0.011-0.782,0.257-1.425,0.741-1.975C11.848,13.321,12.656,12.924,13.556,12.924z M12.281,1.125 c6.398,0,10.313,4.11,10.313,8.813c0,2.811-2.168,5.119-4.919,5.397c-0.073-0.261-0.152-0.536-0.219-0.746 C15.715,9.132,11.567,4.907,6.23,2.957C7.965,1.78,10.01,1.118,12.281,1.125z M1.405,12.001c0-3.283,1.455-6.227,3.756-8.223 c4.377,1.403,7.964,4.397,10.058,8.371c-0.272-0.12-0.559-0.212-0.859-0.272c-1.219-0.253-2.511-0.394-3.807-0.394 c-3.24,0.006-6.345,0.859-9.001,2.325C1.454,13.222,1.405,12.625,1.405,12.001z M12.729,19.967 c1.224,0.257,2.526,0.398,3.829,0.398c0.996,0,1.986-0.083,2.948-0.234c-1.519,1.352-3.418,2.282-5.519,2.614 c-0.799-0.938-1.493-1.95-2.072-3.032C12.174,19.822,12.446,19.908,12.729,19.967z M12.645,22.871 c-0.12,0.004-0.242,0.006-0.364,0.006c-1.825,0.006-3.486-0.424-4.994-1.209c0.433-1.907,1.172-3.675,2.171-5.277 c0.034,0.294,0.099,0.587,0.186,0.848C10.314,19.28,11.347,21.202,12.645,22.871z M10.453,13.207 c-1.954,2.19-3.43,4.913-4.176,7.864c-2.143-1.421-3.752-3.582-4.467-6.117c2.586-1.508,5.532-2.351,8.744-2.346 c0.18,0,0.358,0.002,0.536,0.008C10.858,12.79,10.644,12.987,10.453,13.207z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Breaker</title><path d="M13.556,12.924c0.21,0,0.386,0.017,0.585,0.056c1.043,0.206,1.898,0.964,2.246,1.956 c0.101,0.319,0.234,0.797,0.319,1.125l0.111,0.433l0.446-0.009c3.552-0.075,6.456-2.965,6.456-6.546C23.72,4.513,19.195,0,12.281,0 C9.429,0.009,6.725,1.046,4.678,2.715c-2.683,2.2-4.397,5.543-4.397,9.286c0.002,0.96,0.118,1.926,0.334,2.818 c0.788,3.268,2.91,6.015,5.759,7.628c1.723,0.971,3.784,1.547,5.909,1.553c0.521,0,1.052-0.036,1.554-0.099 c3.126-0.405,5.873-2.012,7.765-4.339l0.124-0.152l-0.24-0.868l-0.463,0.122c-1.436,0.381-2.908,0.578-4.463,0.576 c-1.243,0-2.428-0.128-3.598-0.375c-1.054-0.212-1.911-0.979-2.248-1.98c-0.109-0.315-0.158-0.608-0.156-0.958 c-0.011-0.782,0.257-1.425,0.741-1.975C11.848,13.321,12.656,12.924,13.556,12.924z M12.281,1.125 c6.398,0,10.313,4.11,10.313,8.813c0,2.811-2.168,5.119-4.919,5.397c-0.073-0.261-0.152-0.536-0.219-0.746 C15.715,9.132,11.567,4.907,6.23,2.957C7.965,1.78,10.01,1.118,12.281,1.125z M1.405,12.001c0-3.283,1.455-6.227,3.756-8.223 c4.377,1.403,7.964,4.397,10.058,8.371c-0.272-0.12-0.559-0.212-0.859-0.272c-1.219-0.253-2.511-0.394-3.807-0.394 c-3.24,0.006-6.345,0.859-9.001,2.325C1.454,13.222,1.405,12.625,1.405,12.001z M12.729,19.967 c1.224,0.257,2.526,0.398,3.829,0.398c0.996,0,1.986-0.083,2.948-0.234c-1.519,1.352-3.418,2.282-5.519,2.614 c-0.799-0.938-1.493-1.95-2.072-3.032C12.174,19.822,12.446,19.908,12.729,19.967z M12.645,22.871 c-0.12,0.004-0.242,0.006-0.364,0.006c-1.825,0.006-3.486-0.424-4.994-1.209c0.433-1.907,1.172-3.675,2.171-5.277 c0.034,0.294,0.099,0.587,0.186,0.848C10.314,19.28,11.347,21.202,12.645,22.871z M10.453,13.207 c-1.954,2.19-3.43,4.913-4.176,7.864c-2.143-1.421-3.752-3.582-4.467-6.117c2.586-1.508,5.532-2.351,8.744-2.346 c0.18,0,0.358,0.002,0.536,0.008C10.858,12.79,10.644,12.987,10.453,13.207z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/britishairways.svg b/assets/lib/simple-icons/icons/britishairways.svg
new file mode 100644
index 00000000..ad710c50
--- /dev/null
+++ b/assets/lib/simple-icons/icons/britishairways.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>British Airways</title><path d="M23.489 13.252c-.25.212-.605.444-1.241.767-1.347.72-2.198.983-2.198.983s-1.617-.234-4.207-1.007c0 0 1.306-.378 1.93-.581a40.11 40.11 0 0 0 1.958-.681c1.055-.396 1.73-.761 2.18-1.088.03-.022.058-.046.085-.068 0 0 .32.036.593.113.294.083.604.245.786.386.191.147.28.308.308.358a.681.681 0 0 1 .071.226s.014.085-.003.177a.579.579 0 0 1-.147.313zM24 12.196a.662.662 0 0 0-.08-.157 1.348 1.348 0 0 0-.197-.23 1.685 1.685 0 0 0-.227-.178c-.354-.232-.81-.362-1.215-.416-.627-.083-1.342-.07-1.411-.07-.23-.005-1.722.007-2.105.015-1.702.034-3.787.039-4.333.038-5.636.027-8.089-.094-10.82-.642C1.289 10.094 0 9.658 0 9.658c2.05-.073 14.004-.568 16.186-.627 1.427-.04 2.44-.048 3.253 0 .413.023.802.058 1.287.14a6.2 6.2 0 0 1 1.064.286c.486.18.893.442 1.096.707 0 0 .06.06.14.17.093.126.197.282.234.34.294.447.434.73.484.828.052.102.1.209.145.315.044.104.063.166.076.21.02.064.03.125.035.17Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/broadcom.svg b/assets/lib/simple-icons/icons/broadcom.svg
index 4ef2a6b5..3877dcb6 100644
--- a/assets/lib/simple-icons/icons/broadcom.svg
+++ b/assets/lib/simple-icons/icons/broadcom.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Broadcom icon</title><path d="M12 0C5.37 0 0 5.37 0 12A12 12 0 0 0 .574 15.62C.848 15.5 1.14 15.36 1.43 15.24C2.8 14.7 4.06 14.88 5.31 15.64C5.31 15.64 5.77 15.92 5.91 16C6.5 16.38 7.05 16.73 7.58 16.73C8.09 16.73 8.59 16.59 8.8 15.61C9.13 14.08 9.94 10.31 10.29 8.45C10.5 7.35 10.61 6.76 10.73 6.36C10.93 5.65 11.31 5.27 11.84 5.21C11.84 5.21 11.93 5.2 12 5.2C12.07 5.2 12.15 5.21 12.15 5.21C12.69 5.27 13.07 5.65 13.28 6.36C13.39 6.76 13.5 7.35 13.71 8.45C14.06 10.31 14.87 14.08 15.2 15.61C15.41 16.59 15.91 16.73 16.42 16.73C16.95 16.73 17.5 16.38 18.09 16C18.23 15.92 18.69 15.64 18.69 15.64C19.95 14.88 21.2 14.7 22.57 15.24C22.87 15.36 23.16 15.5 23.44 15.63A12 12 0 0 0 24 12C24 5.37 18.63 0 12 0M12 9.79C11.6 11.8 11 14.71 10.7 16C10.34 17.7 9.2 18.66 7.58 18.66C6.5 18.66 5.64 18.12 4.88 17.65C4.5 17.4 4.08 17.13 3.63 17A2.32 2.32 0 0 0 2.21 16.97A6.11 6.11 0 0 0 1.27 17.36A12 12 0 0 0 12 24A12 12 0 0 0 22.73 17.35A6.08 6.08 0 0 0 21.79 16.96A2.32 2.32 0 0 0 20.38 16.97C19.92 17.13 19.5 17.4 19.12 17.65C18.36 18.12 17.5 18.66 16.42 18.66C14.8 18.66 13.67 17.7 13.3 16C13 14.71 12 9.79 12 9.79Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Broadcom</title><path d="M12 0C5.37 0 0 5.37 0 12A12 12 0 0 0 .574 15.62C.848 15.5 1.14 15.36 1.43 15.24C2.8 14.7 4.06 14.88 5.31 15.64C5.31 15.64 5.77 15.92 5.91 16C6.5 16.38 7.05 16.73 7.58 16.73C8.09 16.73 8.59 16.59 8.8 15.61C9.13 14.08 9.94 10.31 10.29 8.45C10.5 7.35 10.61 6.76 10.73 6.36C10.93 5.65 11.31 5.27 11.84 5.21C11.84 5.21 11.93 5.2 12 5.2C12.07 5.2 12.15 5.21 12.15 5.21C12.69 5.27 13.07 5.65 13.28 6.36C13.39 6.76 13.5 7.35 13.71 8.45C14.06 10.31 14.87 14.08 15.2 15.61C15.41 16.59 15.91 16.73 16.42 16.73C16.95 16.73 17.5 16.38 18.09 16C18.23 15.92 18.69 15.64 18.69 15.64C19.95 14.88 21.2 14.7 22.57 15.24C22.87 15.36 23.16 15.5 23.44 15.63A12 12 0 0 0 24 12C24 5.37 18.63 0 12 0M12 9.79C11.6 11.8 11 14.71 10.7 16C10.34 17.7 9.2 18.66 7.58 18.66C6.5 18.66 5.64 18.12 4.88 17.65C4.5 17.4 4.08 17.13 3.63 17A2.32 2.32 0 0 0 2.21 16.97A6.11 6.11 0 0 0 1.27 17.36A12 12 0 0 0 12 24A12 12 0 0 0 22.73 17.35A6.08 6.08 0 0 0 21.79 16.96A2.32 2.32 0 0 0 20.38 16.97C19.92 17.13 19.5 17.4 19.12 17.65C18.36 18.12 17.5 18.66 16.42 18.66C14.8 18.66 13.67 17.7 13.3 16C13 14.71 12 9.79 12 9.79Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/bt.svg b/assets/lib/simple-icons/icons/bt.svg
index c94a6e46..f2cce7ae 100644
--- a/assets/lib/simple-icons/icons/bt.svg
+++ b/assets/lib/simple-icons/icons/bt.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>BT icon</title><path d="M12.589 7.91h5.977v1.753H16.56v6.41h-1.97v-6.41h-2zM12 22.523C6.193 22.523 1.477 17.807 1.477 12 1.477 6.193 6.193 1.477 12 1.477c5.807 0 10.523 4.716 10.523 10.523 0 5.807-4.716 10.523-10.523 10.523M12 24c6.626 0 12-5.374 12-12S18.626 0 12 0C5.379 0 0 5.374 0 12s5.379 12 12 12M9.97 13.574c0-.516-.321-.865-.873-.865h-1.32v1.702h1.32c.552 0 .874-.345.874-.837m-.24-3.276c0-.433-.275-.732-.745-.732h-1.21v1.486h1.21c.47 0 .746-.299.746-.754m2.231 3.372c0 1.546-1.09 2.402-2.65 2.402H5.834V7.91h3.249c1.573 0 2.64.805 2.64 2.277 0 .672-.298 1.27-.781 1.634.552.326 1.021.947 1.021 1.85Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>BT</title><path d="M12.589 7.91h5.977v1.753H16.56v6.41h-1.97v-6.41h-2zM12 22.523C6.193 22.523 1.477 17.807 1.477 12 1.477 6.193 6.193 1.477 12 1.477c5.807 0 10.523 4.716 10.523 10.523 0 5.807-4.716 10.523-10.523 10.523M12 24c6.626 0 12-5.374 12-12S18.626 0 12 0C5.379 0 0 5.374 0 12s5.379 12 12 12M9.97 13.574c0-.516-.321-.865-.873-.865h-1.32v1.702h1.32c.552 0 .874-.345.874-.837m-.24-3.276c0-.433-.275-.732-.745-.732h-1.21v1.486h1.21c.47 0 .746-.299.746-.754m2.231 3.372c0 1.546-1.09 2.402-2.65 2.402H5.834V7.91h3.249c1.573 0 2.64.805 2.64 2.277 0 .672-.298 1.27-.781 1.634.552.326 1.021.947 1.021 1.85Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/buddy.svg b/assets/lib/simple-icons/icons/buddy.svg
index a6fedbd2..f489c51d 100644
--- a/assets/lib/simple-icons/icons/buddy.svg
+++ b/assets/lib/simple-icons/icons/buddy.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Buddy icon</title><path d="M21.7 5.307L12.947.253a1.892 1.892 0 0 0-1.891 0L2.3 5.306a1.892 1.892 0 0 0-.945 1.638v10.109c0 .675.36 1.3.945 1.637l8.756 5.056a1.892 1.892 0 0 0 1.89 0l8.756-5.055c.585-.338.945-.962.945-1.638V6.945c0-.675-.36-1.3-.945-1.638zm-7.45 7.752l-3.804 3.804-1.351-1.351 3.804-3.805-3.804-3.805 1.351-1.35 3.804 3.804 1.351 1.351-1.35 1.352z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Buddy</title><path d="M21.7 5.307L12.945.253a1.892 1.892 0 00-1.891 0L2.299 5.306a1.892 1.892 0 00-.945 1.638v10.11c0 .675.36 1.3.945 1.637l8.756 5.056a1.892 1.892 0 001.89 0l8.756-5.055c.585-.338.945-.962.945-1.638V6.945c0-.675-.36-1.3-.945-1.638zm-7.45 7.753l-3.805 3.804-1.351-1.351 3.804-3.805-3.804-3.806 1.35-1.35 3.805 3.805 1.351 1.35-1.35 1.353z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/budibase.svg b/assets/lib/simple-icons/icons/budibase.svg
new file mode 100644
index 00000000..f137933d
--- /dev/null
+++ b/assets/lib/simple-icons/icons/budibase.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Budibase</title><path d="M2 0a2 2 0 0 0-2 2v20a2 2 0 0 0 2 2h20a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2Zm2 6h2.5v5.22c.59-.634 1.326-.95 2.21-.95a3.372 3.372 0 0 1 2.565 1.13c.178.199.327.422.46.66V6h2.505v5.22c.59-.634 1.324-.95 2.21-.95a3.372 3.372 0 0 1 2.566 1.13c.31.345.55.75.724 1.22.175.47.26.965.26 1.495 0 .54-.09 1.045-.27 1.52a3.73 3.73 0 0 1-.755 1.234c-.32.35-.7.625-1.14.83-.434.2-.905.301-1.415.301-.92 0-1.65-.345-2.186-1.035v.81h-2.5v-1.601a3.595 3.595 0 0 1-1.638 1.525c-.435.2-.905.301-1.41.301-.92 0-1.651-.345-2.186-1.035v.81H4Zm4.035 6.484a1.566 1.566 0 0 0-1.125.487 1.733 1.733 0 0 0-.474 1.174 1.623 1.623 0 0 0 .468 1.16c.145.145.322.265.522.355.2.09.409.135.629.135a1.566 1.566 0 0 0 1.125-.484c.145-.15.26-.326.345-.526.08-.205.125-.41.125-.63a1.675 1.675 0 0 0-.47-1.175c-.15-.15-.32-.27-.51-.36a1.491 1.491 0 0 0-.635-.136Zm7.74 0a1.566 1.566 0 0 0-1.125.487 1.733 1.733 0 0 0-.474 1.174 1.623 1.623 0 0 0 .469 1.16c.145.145.32.265.52.355.2.09.41.135.63.135a1.566 1.566 0 0 0 1.125-.484c.145-.15.26-.326.346-.526.08-.205.125-.41.125-.63a1.675 1.675 0 0 0-.471-1.175c-.15-.15-.32-.27-.51-.36a1.491 1.491 0 0 0-.635-.136Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/buefy.svg b/assets/lib/simple-icons/icons/buefy.svg
new file mode 100644
index 00000000..6a850b8f
--- /dev/null
+++ b/assets/lib/simple-icons/icons/buefy.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Buefy</title><path d="M13.358.004c-.008 0-.175.02-.375.031-.64.05-1.275.142-1.902.278-.402.09-1.496.402-1.54.433-.738.259-1.472.606-2.17.957-.606.332-1.544.938-1.689 1.094a6.04 6.04 0 01-.304.242c-.387.309-1.172 1.102-1.528 1.543-1.203 1.512-1.87 3.145-2.074 5.063-.066.66 0 2.507.086 2.507.02 0 .32-.132.684-.304.191-.086.418-.192.511-.235.094-.043.602-.273 1.122-.515.527-.243 1.046-.48 1.16-.532l.488-.226c.156-.07.297-.13.316-.13.02 0-.007-.081-.058-.183a4.262 4.262 0 01-.48-1.996c0-1.152.402-2.246 1.23-3.344.388-.49.831-.932 1.32-1.32.07-.054.172-.129.227-.176.34-.261 1.437-.851 1.59-.851.035 0 .046.023.035.066-.012.04-.09.422-.18.844-.082.434-.16.816-.172.86-.008.038-.043.21-.074.378-.035.168-.066.34-.074.38-.012.042-.094.464-.192.948-.093.48-.19.95-.21 1.047-.02.094-.044.203-.047.246l-.157.801c-.01.043-.113.555-.23 1.14-.117.587-.219 1.098-.23 1.141l-.153.766a8.49 8.49 0 01-.074.375c-.043.198-.081.398-.114.598a1.384 1.384 0 00-.035.148c-.01.05-.062.3-.113.563-.055.261-.105.539-.117.609-.012.07-.047.234-.074.363-.027.113-.05.226-.07.34-.178.9-.36 1.8-.544 2.7l-.07.378c-.012.043-.094.469-.195.95l-.207 1.046a3.51 3.51 0 00-.047.25l-.156.797c-.012.043-.118.559-.235 1.14-.113.587-.215 1.099-.222 1.134-.05.23-.286 1.437-.3 1.53l-.02.122 3.546-.012c3.137 0 4.184-.02 4.723-.07l.457-.043c.168-.012.328-.031.363-.035.035-.008.152-.024.266-.035.113-.012.351-.051.527-.086.18-.032.367-.063.414-.07.047-.012.203-.044.344-.079.137-.03.273-.062.308-.07.094-.02.73-.207.817-.242.043-.02.238-.098.433-.18 1.258-.5 2.297-1.312 3.032-2.371.136-.195.511-.824.511-.855 0-.012.07-.16.15-.332a7.814 7.814 0 00.64-2.258c.05-.383.02-1.817-.05-1.926a1.215 1.215 0 01-.036-.191 6.046 6.046 0 00-3.172-4.23 6.71 6.71 0 00-1.23-.497l-.188-.043.308-.203c.133-.088.263-.18.39-.274.252-.2.497-.408.734-.625.525-.535.845-.949 1.17-1.503.265-.45.546-1.157.624-1.56a.641.641 0 01.032-.14c.093-.265.093-1.61 0-1.761-.008-.012-.02-.075-.032-.137a4.155 4.155 0 00-.1-.344c-.415-1.27-1.368-2.328-2.68-2.976C17.55.632 16.78.344 16.525.3a2.157 2.157 0 01-.265-.059 8.852 8.852 0 00-.93-.168 10.58 10.58 0 00-1.3-.073c-.368.004-.669-.001-.673.003zm1.645 1.812c.972.254 1.742.891 2.082 1.723.207.504.254.79.254 1.543 0 .613-.02.89-.114 1.277a4.284 4.284 0 01-2.28 2.918c-.22.114-.41.2-.512.235-.012 0-.047.02-.079.031-.273.113-1.418.371-1.46.328-.012-.012.042-.297.11-.644.07-.344.14-.688.147-.762a1.93 1.93 0 01.04-.192 1.05 1.05 0 00.034-.191c.012-.078.032-.16.04-.191.011-.032.027-.114.035-.188.011-.07.074-.39.136-.703.067-.316.13-.613.137-.664.008-.055.09-.48.192-.95.093-.472.18-.91.19-.972.013-.062.044-.234.075-.379.031-.148.06-.308.07-.36.172-.91.375-1.894.383-1.933.024-.054.055-.047.52.074zM13.84 11.824c.191.028.508.086.82.16.172.036.664.235.926.371 1.465.758 2.273 2.356 2.098 4.133a7.38 7.38 0 01-.11.664c-.012.024-.023.09-.039.153a8.4 8.4 0 01-.352.949c-1.082 2.172-3.394 3.5-6.199 3.55l-.476.012.023-.105.043-.203c.012-.055.031-.184.055-.285l.058-.305c.012-.066.024-.148.036-.191.007-.043.085-.446.168-.895.09-.445.183-.926.214-1.062l.08-.399c.01-.086.022-.18.034-.21.011-.032.023-.099.035-.15.012-.054.04-.198.058-.323.024-.125.106-.528.176-.895.05-.26.102-.518.153-.777.007-.067.043-.235.07-.38.055-.261.078-.386.113-.609l.094-.472.285-1.465c.117-.61.223-1.14.23-1.188.012-.054.055-.086.126-.093.187-.024 1.05-.008 1.28.015z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/buffer.svg b/assets/lib/simple-icons/icons/buffer.svg
index f8182be4..1d32104d 100644
--- a/assets/lib/simple-icons/icons/buffer.svg
+++ b/assets/lib/simple-icons/icons/buffer.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Buffer icon</title><path d="M23.784 18.24c.287.142.287.267 0 .374l-11.357 5.223c-.287.145-.57.145-.854 0L.213 18.614c-.284-.107-.284-.232 0-.375l2.722-1.23c.284-.14.57-.14.852 0l7.787 3.573c.285.14.57.14.854 0l7.787-3.574c.283-.14.568-.14.852 0l2.717 1.23zm0-6.454c.287.143.287.285 0 .426L12.427 17.44c-.287.104-.57.104-.854 0L.213 12.21c-.284-.143-.284-.284 0-.426l2.722-1.227c.284-.144.57-.144.852 0l7.787 3.57c.285.144.57.144.854 0l7.787-3.57c.283-.144.568-.144.852 0l2.717 1.226zM.214 5.76c-.285-.143-.285-.267 0-.375L11.574.16c.283-.14.57-.14.852 0l11.358 5.23c.287.107.287.232 0 .375l-11.357 5.223c-.287.143-.57.143-.854 0L.213 5.76z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Buffer</title><path d="M1.371 5.476L11.943 0l10.686 5.476-10.686 5.495zm3.36 4.81l7.212 3.547 7.288-3.547 3.398 1.655-10.686 5.202L1.371 11.94zm0 6.171l7.212 3.911 7.288-3.91 3.398 1.815L11.943 24 1.371 18.273z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/bugatti.svg b/assets/lib/simple-icons/icons/bugatti.svg
index 84727bef..dff5e40c 100644
--- a/assets/lib/simple-icons/icons/bugatti.svg
+++ b/assets/lib/simple-icons/icons/bugatti.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Bugatti icon</title><path d="M0 5.168v2.194h2.92l.004-.73.006-.73 3.498-.005 3.496-.004v4.103H7.157V8.851l-1.464.004-1.466.006v5.744l1.466.006 1.464.004V13.47h2.767v4.618H2.92v-1.45H0v4.39h9.31c6.06 0 9.405-.008 9.584-.02a5.482 5.482 0 0 0 3.73-1.842 5.567 5.567 0 0 0 1.341-2.904c.048-.325.046-1.184-.002-1.504a5.537 5.537 0 0 0-1.36-2.922 1.478 1.478 0 0 1-.14-.17c0-.008.054-.08.12-.16a5.255 5.255 0 0 0 1.13-2.693 6.9 6.9 0 0 0 .01-1.122 5.297 5.297 0 0 0-1.172-2.81 5.328 5.328 0 0 0-1.884-1.443 5.297 5.297 0 0 0-1.2-.38c-.515-.09-.038-.085-10.052-.085H0zm18.656.744c.557.044.958.214 1.305.555.536.529.73 1.414.475 2.193a1.933 1.933 0 0 1-.494.794 1.884 1.884 0 0 1-1.055.513c-.147.025-.561.03-2.63.03h-2.458v-2.04c0-1.121.005-2.045.013-2.05.02-.022 4.569-.016 4.844.005zm.267 7.586c1.078.174 1.807.977 1.876 2.065.057.888-.246 1.613-.87 2.088-.159.12-.5.288-.691.342-.35.095-.342.095-2.977.095h-2.462V13.47h2.477c2.082 0 2.502.003 2.647.028Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Bugatti</title><path d="M0 5.168v2.194h2.92l.004-.73.006-.73 3.498-.005 3.496-.004v4.103H7.157V8.851l-1.464.004-1.466.006v5.744l1.466.006 1.464.004V13.47h2.767v4.618H2.92v-1.45H0v4.39h9.31c6.06 0 9.405-.008 9.584-.02a5.482 5.482 0 0 0 3.73-1.842 5.567 5.567 0 0 0 1.341-2.904c.048-.325.046-1.184-.002-1.504a5.537 5.537 0 0 0-1.36-2.922 1.478 1.478 0 0 1-.14-.17c0-.008.054-.08.12-.16a5.255 5.255 0 0 0 1.13-2.693 6.9 6.9 0 0 0 .01-1.122 5.297 5.297 0 0 0-1.172-2.81 5.328 5.328 0 0 0-1.884-1.443 5.297 5.297 0 0 0-1.2-.38c-.515-.09-.038-.085-10.052-.085H0zm18.656.744c.557.044.958.214 1.305.555.536.529.73 1.414.475 2.193a1.933 1.933 0 0 1-.494.794 1.884 1.884 0 0 1-1.055.513c-.147.025-.561.03-2.63.03h-2.458v-2.04c0-1.121.005-2.045.013-2.05.02-.022 4.569-.016 4.844.005zm.267 7.586c1.078.174 1.807.977 1.876 2.065.057.888-.246 1.613-.87 2.088-.159.12-.5.288-.691.342-.35.095-.342.095-2.977.095h-2.462V13.47h2.477c2.082 0 2.502.003 2.647.028Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/bugcrowd.svg b/assets/lib/simple-icons/icons/bugcrowd.svg
new file mode 100644
index 00000000..2f6e6206
--- /dev/null
+++ b/assets/lib/simple-icons/icons/bugcrowd.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Bugcrowd</title><path d="M24 12L18 1.387H6L0 12l6 10.613h12zm-5.782 1.658c-.003.825-.122 1.569-.354 2.231a5.05 5.05 0 0 1-.99 1.708 4.316 4.316 0 0 1-1.503 1.093 4.69 4.69 0 0 1-1.896.385 4.158 4.158 0 0 1-1.145-.152 3.754 3.754 0 0 1-.868-.36 3.792 3.792 0 0 1-.601-.435 3.023 3.023 0 0 1-.466-.514h-.04l.02.193c.011.166.018.331.02.497v.528H7.961V7.062c0-.151-.04-.263-.114-.337-.077-.074-.19-.109-.33-.109h-.811V4.425h2.452c.473-.003.824.108 1.048.331.222.223.333.576.33 1.049v3.003c-.003.258-.01.467-.02.626l-.02.247h.04a2.898 2.898 0 0 1 .463-.507c.156-.143.354-.284.6-.426.245-.142.538-.261.876-.36.38-.1.77-.15 1.162-.148.702.003 1.334.135 1.894.395a4.118 4.118 0 0 1 1.446 1.11c.4.48.707 1.052.92 1.715.212.658.317 1.392.32 2.198m-2.803 1.406c.138-.399.206-.852.209-1.366-.003-.659-.112-1.231-.328-1.718-.216-.484-.517-.859-.902-1.125a2.347 2.347 0 0 0-1.344-.404 2.57 2.57 0 0 0-.969.186 2.372 2.372 0 0 0-.83.589 2.839 2.839 0 0 0-.579 1.015c-.141.413-.212.906-.216 1.477 0 .397.053.792.159 1.174.101.366.265.712.483 1.02.211.3.486.548.805.722.32.176.698.267 1.127.27.343.002.683-.07.997-.213a2.43 2.43 0 0 0 .824-.623c.24-.273.428-.607.564-1.004Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/bugsnag.svg b/assets/lib/simple-icons/icons/bugsnag.svg
index 3f2242b5..a95c55c3 100644
--- a/assets/lib/simple-icons/icons/bugsnag.svg
+++ b/assets/lib/simple-icons/icons/bugsnag.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Bugsnag icon</title><path d="M12 24c-4.596 0-8.336-3.74-8.336-8.336v-4.135a.62.62 0 01.62-.62h2.957L7.23 1.337 4.903 2.77v5.45a.62.62 0 01-1.24 0V2.7c0-.384.204-.749.53-.95L6.773.166a1.114 1.114 0 011.699.949l.01 9.796h3.52a4.759 4.759 0 014.753 4.754 4.759 4.759 0 01-4.753 4.753 4.759 4.759 0 01-4.754-4.753l-.003-3.515H4.903v3.515c0 3.912 3.183 7.097 7.097 7.097a7.104 7.104 0 007.097-7.097c0-3.915-3.184-7.098-7.097-7.098h-1.076a.62.62 0 010-1.24H12c4.596 0 8.336 3.74 8.336 8.336S16.596 24 12 24zM8.482 12.15l.004 3.514A3.518 3.518 0 0012 19.178a3.518 3.518 0 003.514-3.514A3.518 3.518 0 0012 12.149zm4.513 3.514a.995.995 0 01-.995.994.995.995 0 01-.995-.994.995.995 0 01.995-.995.995.995 0 01.995.995Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Bugsnag</title><path d="M12 24c-4.596 0-8.336-3.74-8.336-8.336v-4.135a.62.62 0 01.62-.62h2.957L7.23 1.337 4.903 2.77v5.45a.62.62 0 01-1.24 0V2.7c0-.384.204-.749.53-.95L6.773.166a1.114 1.114 0 011.699.949l.01 9.796h3.52a4.759 4.759 0 014.753 4.754 4.759 4.759 0 01-4.753 4.753 4.759 4.759 0 01-4.754-4.753l-.003-3.515H4.903v3.515c0 3.912 3.183 7.097 7.097 7.097a7.104 7.104 0 007.097-7.097c0-3.915-3.184-7.098-7.097-7.098h-1.076a.62.62 0 010-1.24H12c4.596 0 8.336 3.74 8.336 8.336S16.596 24 12 24zM8.482 12.15l.004 3.514A3.518 3.518 0 0012 19.178a3.518 3.518 0 003.514-3.514A3.518 3.518 0 0012 12.149zm4.513 3.514a.995.995 0 01-.995.994.995.995 0 01-.995-.994.995.995 0 01.995-.995.995.995 0 01.995.995Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/buildkite.svg b/assets/lib/simple-icons/icons/buildkite.svg
new file mode 100644
index 00000000..3330f4a8
--- /dev/null
+++ b/assets/lib/simple-icons/icons/buildkite.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Buildkite</title><path d="M23.613 8.143l-7.668-3.856v7.712l7.668-3.855zM8.166 15.857V8.143L.387 4.287V12l7.78 3.857zM.183 3.958a.382.382 0 01.377-.017l7.606 3.771 7.607-3.771a.386.386 0 01.346 0l7.668 3.857a.386.386 0 01.213.345v7.71a.388.388 0 01-.213.346l-7.668 3.86a.389.389 0 01-.562-.345v-7.09l-7.219 3.58a.392.392 0 01-.344 0L.215 12.346A.387.387 0 010 12V4.287a.385.385 0 01.183-.329z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/bukalapak.svg b/assets/lib/simple-icons/icons/bukalapak.svg
new file mode 100644
index 00000000..4b9f653f
--- /dev/null
+++ b/assets/lib/simple-icons/icons/bukalapak.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Bukalapak</title><path d="M10.976 23.845a3.158 3.158 0 1 1-1.95-6.008 3.158 3.158 0 0 1 1.95 6.008Zm6.554-2.883c4.047-1.315 7.315-5.981 5.689-10.984-1.626-5.003-7.012-6.856-11.058-5.541a1.89 1.89 0 0 0-1.252 2.249l.414 1.682a1.892 1.892 0 0 0 2.42 1.348l.162-.053c1.861-.606 3.592.504 4.071 2.019.505 1.507-.244 3.422-2.106 4.027l-.162.054a1.891 1.891 0 0 0-1.166 2.512l.653 1.604a1.89 1.89 0 0 0 2.335 1.083Zm-6.962-7.982L7.841 1.752A2.3 2.3 0 0 0 4.897.113l-2.952.959A2.3 2.3 0 0 0 .526 4.128L4.92 14.815a2.3 2.3 0 0 0 2.841 1.318l1.285-.417a2.298 2.298 0 0 0 1.522-2.736Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/bulma.svg b/assets/lib/simple-icons/icons/bulma.svg
index 66f0ebe6..2ba99cfa 100644
--- a/assets/lib/simple-icons/icons/bulma.svg
+++ b/assets/lib/simple-icons/icons/bulma.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Bulma icon</title><path d="M11.25 0l-6 6 -1.5 10.5 7.5 7.5 9 -6 -6 -6 4.5 -4.5 -7.5 -7.5Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Bulma</title><path d="M11.25 0l-6 6 -1.5 10.5 7.5 7.5 9 -6 -6 -6 4.5 -4.5 -7.5 -7.5Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/bunq.svg b/assets/lib/simple-icons/icons/bunq.svg
new file mode 100644
index 00000000..b62a839b
--- /dev/null
+++ b/assets/lib/simple-icons/icons/bunq.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>bunq</title><path d="M16.414 14.62h1.103v-2.896a2.484 2.484 0 0 0-2.483-2.483 2.484 2.484 0 0 0-2.482 2.483v2.897h1.103v-2.897c0-.837.618-1.517 1.38-1.517.76 0 1.379.68 1.379 1.517zm-6.07-5.24h1.104v2.896a2.484 2.484 0 0 1-2.482 2.483 2.484 2.484 0 0 1-2.483-2.483V9.379h1.103v2.897c0 .837.618 1.517 1.38 1.517.76 0 1.379-.68 1.379-1.517zM0 7.034V12c0 .046.001.093.004.139H0v2.482h.965l.055-.48A2.76 2.76 0 0 0 5.518 12a2.76 2.76 0 0 0-4.414-2.208V7.035zm2.69 3.172c.951 0 1.724.803 1.724 1.793 0 .99-.773 1.793-1.725 1.793-.951 0-1.724-.803-1.724-1.793 0-.99.773-1.793 1.724-1.793zm18.552-.965A2.76 2.76 0 0 0 18.482 12a2.76 2.76 0 0 0 4.414 2.207v2.758H24V12a2.15 2.15 0 0 0-.004-.139H24V9.38h-.965l-.055.48a2.741 2.741 0 0 0-1.738-.617zm.069.965c.951 0 1.724.803 1.724 1.793 0 .99-.773 1.793-1.724 1.793-.952 0-1.725-.803-1.725-1.793 0-.99.773-1.793 1.725-1.793Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/burgerking.svg b/assets/lib/simple-icons/icons/burgerking.svg
new file mode 100644
index 00000000..31e9ed66
--- /dev/null
+++ b/assets/lib/simple-icons/icons/burgerking.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Burger King</title><path d="M15.39 12.614c-.72 0-1.11.538-1.11 1.215v1.508c0 .125-.043.182-.12.182-.056 0-.098-.035-.147-.133l-.971-1.885c-.37-.72-.755-.887-1.196-.887-.734 0-1.14.552-1.14 1.243v4.314c0 .678.392 1.215 1.112 1.215.72 0 1.112-.537 1.112-1.215v-1.507c0-.126.042-.182.119-.182.055 0 .097.035.146.133l.972 1.885c.37.719.769.886 1.195.886.735 0 1.14-.551 1.14-1.242v-4.315c0-.677-.391-1.215-1.111-1.215zm-4.02-.405c.364 0 .68-.286.68-.642 0-.238-.099-.412-.224-.572-.203-.266-.385-.496-.476-.74-.02-.056-.007-.105.056-.154.217-.167.469-.537.469-1.124 0-.886-.734-1.389-1.622-1.389h-.79c-.553 0-.819.321-.819.754v3.114c0 .419.245.754.692.754.448 0 .693-.335.693-.754v-.74c0-.09.042-.133.111-.133.084 0 .112.049.126.133.063.356.23.837.42 1.082.237.314.46.411.685.411zm-1.146-2.666h-.098c-.119 0-.175-.07-.175-.161v-.474c0-.09.056-.16.175-.16h.098c.294 0 .385.208.385.39 0 .174-.091.405-.385.405zm-3.761 2.666c1.132 0 1.734-.677 1.734-1.528V8.328c0-.419-.245-.754-.692-.754-.448 0-.693.335-.693.754v2.276c0 .167-.097.363-.35.363-.251 0-.335-.196-.335-.363V8.328c0-.419-.252-.754-.7-.754-.447 0-.691.335-.691.754v2.353c0 .852.594 1.528 1.727 1.528zm12.011-.034c.392 0 .7-.23.7-.65 0-.412-.308-.642-.7-.642h-.63c-.118 0-.174-.07-.174-.16v-.133c0-.091.056-.161.175-.161h.482c.336 0 .602-.202.602-.559 0-.355-.266-.558-.602-.558h-.482c-.12 0-.175-.07-.175-.16V9.04c0-.091.056-.161.175-.161h.629c.392 0 .7-.23.7-.65 0-.411-.308-.642-.7-.642h-1.321c-.553 0-.818.321-.818.754v3.079c0 .432.265.754.818.754h1.321zm2.642 3.127h-.342c-.615 0-1.09.286-1.09.914 0 .573.517.845.901.845.189 0 .322.056.322.202 0 .182-.224.3-.462.3-.79 0-1.328-.537-1.328-1.535 0-1.11.734-1.515 1.3-1.515.692 0 .804.349 1.287.349a.927.927 0 0 0 .936-.915.95.95 0 0 0-.398-.788c-.427-.315-1.07-.545-1.979-.545-1.629 0-3.216 1.026-3.216 3.414 0 2.282 1.587 3.35 3.153 3.35 1.643 0 2.685-1.012 2.685-2.492 0-.935-.587-1.584-1.769-1.584zm-12.43-2.688c-.783 0-1.21.587-1.21 1.32v4.132c0 .734.427 1.32 1.21 1.32.783 0 1.21-.586 1.21-1.32v-4.132c0-.733-.427-1.32-1.21-1.32zm11.494-.405c.447 0 .692-.335.692-.754v-.74c0-.09.042-.132.112-.132.084 0 .111.049.125.133.063.355.231.837.42 1.082.238.314.461.412.685.412.363 0 .678-.286.678-.643 0-.237-.098-.412-.224-.572-.237-.3-.384-.496-.475-.74-.02-.056-.007-.105.056-.153.217-.168.469-.538.469-1.124 0-.887-.735-1.39-1.623-1.39h-.79c-.552 0-.817.321-.817.754v3.114c0 .419.244.753.692.753zm.615-3.301c0-.09.056-.161.175-.161h.098c.293 0 .384.21.384.391 0 .175-.09.405-.384.405h-.098c-.12 0-.175-.07-.175-.16zm-18.87 3.267h.986c.93 0 1.496-.622 1.496-1.397 0-.621-.37-.907-.454-.977-.035-.028-.07-.056-.07-.084 0-.035.021-.048.056-.09.133-.154.266-.398.266-.754 0-.838-.567-1.285-1.448-1.285h-.832c-.552 0-.817.321-.817.754v3.079c0 .433.265.754.817.754zm.413-3.386c0-.09.056-.16.175-.16h.09c.301 0 .392.209.392.39 0 .168-.09.405-.391.405h-.091c-.12 0-.175-.07-.175-.16zm0 1.634c0-.091.056-.161.175-.161h.126c.335 0 .433.223.433.426 0 .181-.098.44-.433.44h-.126c-.12 0-.175-.07-.175-.161zm11.878 1.794c1.098 0 1.79-.699 1.79-1.718 0-.649-.391-1.096-1.174-1.096h-.224c-.413 0-.734.196-.734.636 0 .39.342.58.601.58.133 0 .217.041.217.139 0 .125-.147.21-.315.21-.524 0-.88-.37-.88-1.062 0-.768.489-1.047.866-1.047.462 0 .539.238.86.238.37 0 .623-.308.623-.629a.669.669 0 0 0-.266-.544c-.294-.217-.706-.377-1.321-.377-1.084 0-2.14.712-2.14 2.36 0 1.576 1.056 2.31 2.097 2.31zm-8.718 3.762a.354.354 0 0 1-.07-.188c0-.077.042-.133.126-.21.196-.181.678-.635.944-1.047.202-.314.286-.6.286-.837 0-.607-.552-1.082-1.153-1.082-.385 0-.748.216-.993.614-.329.53-.72 1.145-.972 1.39-.063.062-.098.076-.146.076-.084 0-.12-.056-.12-.146v-.699c0-.684-.405-1.235-1.139-1.235-.74 0-1.14.551-1.14 1.235v4.3c0 .685.399 1.237 1.14 1.237.734 0 1.14-.552 1.14-1.236v-.991c0-.084.035-.147.119-.147.111 0 .14.112.167.168.161.384.63 1.2 1.063 1.682.294.32.657.524 1.042.524.65 0 1.196-.566 1.196-1.173 0-.377-.161-.657-.469-.991-.392-.427-.853-.986-1.021-1.244zm15.751 6.702C19.432 23.707 16.313 24 12 24c-4.313 0-7.432-.293-9.25-1.32-1.09-.614-1.642-1.451-1.642-2.052 0-.342.181-.537.587-.537h20.61c.406 0 .587.195.587.537 0 .6-.552 1.438-1.643 2.053zm1.056-15.917H1.695c-.406 0-.587-.209-.587-.586C1.108 3.944 4.47 0 12 0c7.46 0 10.892 3.944 10.892 6.178 0 .377-.181.586-.587.586Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/buymeacoffee.svg b/assets/lib/simple-icons/icons/buymeacoffee.svg
index 5826a3e6..51878868 100644
--- a/assets/lib/simple-icons/icons/buymeacoffee.svg
+++ b/assets/lib/simple-icons/icons/buymeacoffee.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 24 24"><title>Buy Me A Coffee icon</title><path d="M6.898 0L5.682 2.799H3.877v2.523h.695L5.277 9.8H4.172l1.46 8.23.938-.01L7.512 24h8.918l.062-.4.88-5.58.888.01 1.46-8.231h-1.056l.705-4.477h.756V2.8h-1.918L16.99 0H6.898zm.528.805h9.043l.771 1.78H6.652l.774-1.78zm-2.75 2.797H19.32v.92H4.676v-.92zm.453 6.998h13.635l-1.176 6.62-5.649-.06-5.636.06-1.174-6.62z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Buy Me A Coffee</title><path d="M20.216 6.415l-.132-.666c-.119-.598-.388-1.163-1.001-1.379-.197-.069-.42-.098-.57-.241-.152-.143-.196-.366-.231-.572-.065-.378-.125-.756-.192-1.133-.057-.325-.102-.69-.25-.987-.195-.4-.597-.634-.996-.788a5.723 5.723 0 00-.626-.194c-1-.263-2.05-.36-3.077-.416a25.834 25.834 0 00-3.7.062c-.915.083-1.88.184-2.75.5-.318.116-.646.256-.888.501-.297.302-.393.77-.177 1.146.154.267.415.456.692.58.36.162.737.284 1.123.366 1.075.238 2.189.331 3.287.37 1.218.05 2.437.01 3.65-.118.299-.033.598-.073.896-.119.352-.054.578-.513.474-.834-.124-.383-.457-.531-.834-.473-.466.074-.96.108-1.382.146-1.177.08-2.358.082-3.536.006a22.228 22.228 0 01-1.157-.107c-.086-.01-.18-.025-.258-.036-.243-.036-.484-.08-.724-.13-.111-.027-.111-.185 0-.212h.005c.277-.06.557-.108.838-.147h.002c.131-.009.263-.032.394-.048a25.076 25.076 0 013.426-.12c.674.019 1.347.067 2.017.144l.228.031c.267.04.533.088.798.145.392.085.895.113 1.07.542.055.137.08.288.111.431l.319 1.484a.237.237 0 01-.199.284h-.003c-.037.006-.075.01-.112.015a36.704 36.704 0 01-4.743.295 37.059 37.059 0 01-4.699-.304c-.14-.017-.293-.042-.417-.06-.326-.048-.649-.108-.973-.161-.393-.065-.768-.032-1.123.161-.29.16-.527.404-.675.701-.154.316-.199.66-.267 1-.069.34-.176.707-.135 1.056.087.753.613 1.365 1.37 1.502a39.69 39.69 0 0011.343.376.483.483 0 01.535.53l-.071.697-1.018 9.907c-.041.41-.047.832-.125 1.237-.122.637-.553 1.028-1.182 1.171-.577.131-1.165.2-1.756.205-.656.004-1.31-.025-1.966-.022-.699.004-1.556-.06-2.095-.58-.475-.458-.54-1.174-.605-1.793l-.731-7.013-.322-3.094c-.037-.351-.286-.695-.678-.678-.336.015-.718.3-.678.679l.228 2.185.949 9.112c.147 1.344 1.174 2.068 2.446 2.272.742.12 1.503.144 2.257.156.966.016 1.942.053 2.892-.122 1.408-.258 2.465-1.198 2.616-2.657.34-3.332.683-6.663 1.024-9.995l.215-2.087a.484.484 0 01.39-.426c.402-.078.787-.212 1.074-.518.455-.488.546-1.124.385-1.766zm-1.478.772c-.145.137-.363.201-.578.233-2.416.359-4.866.54-7.308.46-1.748-.06-3.477-.254-5.207-.498-.17-.024-.353-.055-.47-.18-.22-.236-.111-.71-.054-.995.052-.26.152-.609.463-.646.484-.057 1.046.148 1.526.22.577.088 1.156.159 1.737.212 2.48.226 5.002.19 7.472-.14.45-.06.899-.13 1.345-.21.399-.072.84-.206 1.08.206.166.281.188.657.162.974a.544.544 0 01-.169.364zm-6.159 3.9c-.862.37-1.84.788-3.109.788a5.884 5.884 0 01-1.569-.217l.877 9.004c.065.78.717 1.38 1.5 1.38 0 0 1.243.065 1.658.065.447 0 1.786-.065 1.786-.065.783 0 1.434-.6 1.499-1.38l.94-9.95a3.996 3.996 0 00-1.322-.238c-.826 0-1.491.284-2.26.613z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/buzzfeed.svg b/assets/lib/simple-icons/icons/buzzfeed.svg
index d9364c3f..2dddb4d6 100644
--- a/assets/lib/simple-icons/icons/buzzfeed.svg
+++ b/assets/lib/simple-icons/icons/buzzfeed.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>BuzzFeed icon</title><path d="M24 12c0 6.627-5.373 12-12 12S0 18.627 0 12 5.373 0 12 0s12 5.373 12 12zm-4.148-.273l-.977-6.94-6.5 2.624 2.575 1.487-2.435 4.215L8.3 10.68l-4.153 7.19 2.327 1.346 2.812-4.868L13.5 16.78l3.777-6.54 2.575 1.487z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>BuzzFeed</title><path d="M24 12c0 6.627-5.373 12-12 12S0 18.627 0 12 5.373 0 12 0s12 5.373 12 12zm-4.148-.273l-.977-6.94-6.5 2.624 2.575 1.487-2.435 4.215L8.3 10.68l-4.153 7.19 2.327 1.346 2.812-4.868L13.5 16.78l3.777-6.54 2.575 1.487z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/byjus.svg b/assets/lib/simple-icons/icons/byjus.svg
new file mode 100644
index 00000000..c65f64a9
--- /dev/null
+++ b/assets/lib/simple-icons/icons/byjus.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Byju's</title><path d="M2.327.016A2.325 2.325 0 0 0 0 2.34v19.32a2.325 2.325 0 0 0 2.327 2.323h19.346A2.325 2.325 0 0 0 24 21.66V2.34A2.325 2.325 0 0 0 21.673.016zm10.054 3.496a3.443 3.443 0 0 1 .07 0 4.317 4.317 0 0 1 3.267 1.462 4.447 4.447 0 0 1 .961 2.365 4.157 4.157 0 0 1-.456 2.27 5.024 5.024 0 0 1 2.424 2.008 5.237 5.237 0 0 1 .73 3.374 4.68 4.68 0 0 1-1.15 2.466 4.84 4.84 0 0 1-2.26 1.535l-4.987 1.439a1.494 1.494 0 0 1-.41.058 1.497 1.497 0 0 1-1.432-1.075L5.524 6.909a1.487 1.487 0 0 1 1.018-1.841l4.956-1.429a3.443 3.443 0 0 1 .883-.127zm.248.861a3.091 3.091 0 0 0-.855.122L6.94 5.888a.744.744 0 0 0-.51.922l3.53 12.206a.745.745 0 0 0 .921.509l4.664-1.345a4.085 4.085 0 0 0-.896-8.003 3.297 3.297 0 0 0 1.138-2.272 3.479 3.479 0 0 0-.928-2.549 2.989 2.989 0 0 0-2.23-.983Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/byte.svg b/assets/lib/simple-icons/icons/byte.svg
index c8905195..d705d77f 100644
--- a/assets/lib/simple-icons/icons/byte.svg
+++ b/assets/lib/simple-icons/icons/byte.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>byte icon</title><path d="M0 0v16.114h16.14V9.838c-.025-.633-.579-1.082-1.317-1.082-.739 0-1.294.449-1.32 1.108v3.614c-1.712-.002-3.435.003-5.142-.002a6.536 6.536 0 0 1 6.435-5.248c3.64.027 6.567 2.955 6.567 6.568a6.552 6.552 0 0 1-12.369 3.032l-.053-.104c-.396-.818-.739-1.188-1.583-1.24-.844-.027-1.503.447-1.292 1.133A9.175 9.175 0 0 0 14.796 24 9.195 9.195 0 0 0 24 14.796c0-4.537-3.428-8.466-7.886-9.1V0zm2.638 2.638h10.84v3.059a9.175 9.175 0 0 0-7.781 7.78c-1.013.002-2.04 0-3.06 0Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>byte</title><path d="M0 0v16.114h16.14V9.838c-.025-.633-.579-1.082-1.317-1.082-.739 0-1.294.449-1.32 1.108v3.614c-1.712-.002-3.435.003-5.142-.002a6.536 6.536 0 0 1 6.435-5.248c3.64.027 6.567 2.955 6.567 6.568a6.552 6.552 0 0 1-12.369 3.032l-.053-.104c-.396-.818-.739-1.188-1.583-1.24-.844-.027-1.503.447-1.292 1.133A9.175 9.175 0 0 0 14.796 24 9.195 9.195 0 0 0 24 14.796c0-4.537-3.428-8.466-7.886-9.1V0zm2.638 2.638h10.84v3.059a9.175 9.175 0 0 0-7.781 7.78c-1.013.002-2.04 0-3.06 0Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/bytedance.svg b/assets/lib/simple-icons/icons/bytedance.svg
new file mode 100644
index 00000000..e899733e
--- /dev/null
+++ b/assets/lib/simple-icons/icons/bytedance.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ByteDance</title><path d="M19.8772 1.4685L24 2.5326v18.9426l-4.1228 1.0563V1.4685zm-13.3481 9.428l4.115 1.0641v8.9786l-4.115 1.0642v-11.107zM0 2.572l4.115 1.0642v16.7354L0 21.428V2.572zm17.4553 5.6205v11.107l-4.1228-1.0642V9.2568l4.1228-1.0642z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/c.svg b/assets/lib/simple-icons/icons/c.svg
index f885ab27..fc75a625 100644
--- a/assets/lib/simple-icons/icons/c.svg
+++ b/assets/lib/simple-icons/icons/c.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>C icon</title><path d="M17.023 9.216s-.386-3.293-3.955-3.385c-3.57-.091-5.402 2.47-5.402 6.13 0 3.66 2.026 6.588 5.498 6.588 3.473 0 3.86-3.66 3.86-3.66l6.656.366s.391 3.306-2.394 5.828C18.5 23.605 15.082 24.017 12.694 24c-2.388-.018-5.698.034-8.9-2.969C.595 18.03.05 15.113.05 12.248c0-2.866.607-6.661 4.414-9.54C7.05.754 9.673.033 12.296.033 23.246.032 23.98 9.28 23.98 9.28z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>C</title><path d="M16.5921 9.1962s-.354-3.298-3.627-3.39c-3.2741-.09-4.9552 2.474-4.9552 6.14 0 3.6651 1.858 6.5972 5.0451 6.5972 3.184 0 3.5381-3.665 3.5381-3.665l6.1041.365s.36 3.31-2.196 5.836c-2.552 2.5241-5.6901 2.9371-7.8762 2.9201-2.19-.017-5.2261.034-8.1602-2.97-2.938-3.0101-3.436-5.9302-3.436-8.8002 0-2.8701.556-6.6702 4.047-9.5502C7.444.72 9.849 0 12.254 0c10.0422 0 10.7172 9.2602 10.7172 9.2602z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/cachet.svg b/assets/lib/simple-icons/icons/cachet.svg
new file mode 100644
index 00000000..b863df93
--- /dev/null
+++ b/assets/lib/simple-icons/icons/cachet.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Cachet</title><path d="M11.746.254C5.265.254 0 5.519 0 12c0 6.481 5.265 11.746 11.746 11.746 6.482 0 11.746-5.265 11.746-11.746 0-1.44-.26-2.82-.734-4.097l-.264-.709-1.118 1.118.1.288c.373 1.064.575 2.207.575 3.4a10.297 10.297 0 01-10.305 10.305A10.297 10.297 0 011.441 12 10.297 10.297 0 0111.746 1.695c1.817 0 3.52.47 5.002 1.293l.32.178 1.054-1.053-.553-.316A11.699 11.699 0 0011.746.254zM22.97.841l-13.92 13.92-3.722-3.721-1.031 1.03 4.752 4.753L24 1.872z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/caffeine.svg b/assets/lib/simple-icons/icons/caffeine.svg
new file mode 100644
index 00000000..803f1bde
--- /dev/null
+++ b/assets/lib/simple-icons/icons/caffeine.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Caffeine</title><path d="M6.162 1.557c-.18.006-.263.137-.293.18L.05 11.82c-.07.142-.06.27-.004.356 1.942 3.36 3.882 6.723 5.822 10.085a.337.337 0 00.305.182h11.65c.138.003.26-.09.31-.182 1.94-3.36 3.878-6.721 5.82-10.08a.361.361 0 000-.358l-5.82-10.085c-.112-.193-.308-.181-.308-.181zm.804.719h9.513L10.136 5.94zm-.427.603l2.964 3.426L6.54 8.018zm10.3.018l-3.86 6.685L7.19 8.469zm1.341.357l4.756 8.246-4.756-.916zm-12.36.002v5.176l-4.48 2.587zm11.64 0v11.142l-3.857-4.457zM7.127 9.186l5.847 1.126 3.898 4.502-5.842-1.125zM5.82 9.26v3.425l-4.45-.855zm.72.341l3.856 4.457-3.857 6.685zm11.64 1.713l4.447.856-4.447 2.57zM1.062 12.5l4.76.916v7.33zm21.597.48l-4.479 7.763v-5.175zm-11.64 1.437l5.79 1.114-9.649 5.572zm6.44 1.565v5.138l-2.964-3.425zm-3.597 2.078l3.172 3.664H7.52z"/></svg>
diff --git a/assets/lib/simple-icons/icons/cairometro.svg b/assets/lib/simple-icons/icons/cairometro.svg
index bc8edcb5..e72dc786 100644
--- a/assets/lib/simple-icons/icons/cairometro.svg
+++ b/assets/lib/simple-icons/icons/cairometro.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Cairo Metro icon</title><path d="M12.397 4.14h.882v.881h-.882zm-1.628 0h.883v.881h-.883zm4.915 1.055v3.402h-1.386V5.195h-.84v1.763h-2.983V5.196h-.84v3.402H8.543v.84h1.911V7.82h2.983v1.617h5.44V5.195zm2.352 3.395h-1.512V6.028h1.512zM5.173 5.195v2.604h2.353v.805H5.173v.833h3.193V5.195zm2.339 1.757H5.999v-.924h1.513zm-2.64 12.177V9.726h4.175L12 12.68l2.954-2.953h4.176v9.403h-4.176v-3.442L12 18.754l-2.952-3.048v3.424zM12 0L8.485 3.515h-4.97v4.97L0 12l3.515 3.515v4.97h4.97L12 24l3.515-3.515h4.97v-4.97L24 12l-3.515-3.515v-4.97h-4.97zm0 1.708l3.014 3.015h4.263v4.263L22.292 12l-3.015 3.014v4.263h-4.263L12 22.292l-3.014-3.015H4.723v-4.263L1.708 12l3.015-3.014V4.723h4.263Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Cairo Metro</title><path d="M12.397 4.14h.882v.881h-.882zm-1.628 0h.883v.881h-.883zm4.915 1.055v3.402h-1.386V5.195h-.84v1.763h-2.983V5.196h-.84v3.402H8.543v.84h1.911V7.82h2.983v1.617h5.44V5.195zm2.352 3.395h-1.512V6.028h1.512zM5.173 5.195v2.604h2.353v.805H5.173v.833h3.193V5.195zm2.339 1.757H5.999v-.924h1.513zm-2.64 12.177V9.726h4.175L12 12.68l2.954-2.953h4.176v9.403h-4.176v-3.442L12 18.754l-2.952-3.048v3.424zM12 0L8.485 3.515h-4.97v4.97L0 12l3.515 3.515v4.97h4.97L12 24l3.515-3.515h4.97v-4.97L24 12l-3.515-3.515v-4.97h-4.97zm0 1.708l3.014 3.015h4.263v4.263L22.292 12l-3.015 3.014v4.263h-4.263L12 22.292l-3.014-3.015H4.723v-4.263L1.708 12l3.015-3.014V4.723h4.263Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/cakephp.svg b/assets/lib/simple-icons/icons/cakephp.svg
index 388f1381..34b3a13f 100644
--- a/assets/lib/simple-icons/icons/cakephp.svg
+++ b/assets/lib/simple-icons/icons/cakephp.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>CakePHP icon</title><path d="M0 13.875v3.745c0 2.067 5.37 3.743 12 3.743V17.62c-6.63 0-12-1.68-12-3.743v-.002zm21.384 2.333L12 13.875v3.745l9.384 2.333C23.02 19.313 24 18.503 24 17.62v-3.745c0 .882-.98 1.692-2.616 2.333zM12 10.133v3.742c-6.627 0-12-1.677-12-3.744V6.38c0-2.064 5.37-3.743 12-3.743 6.625 0 12 1.68 12 3.744v3.75c0 .883-.98 1.69-2.616 2.334L12 10.13v.003z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>CakePHP</title><path d="M0 13.875v3.745c0 2.067 5.37 3.743 12 3.743V17.62c-6.63 0-12-1.68-12-3.743v-.002zm21.384 2.333L12 13.875v3.745l9.384 2.333C23.02 19.313 24 18.503 24 17.62v-3.745c0 .882-.98 1.692-2.616 2.333zM12 10.133v3.742c-6.627 0-12-1.677-12-3.744V6.38c0-2.064 5.37-3.743 12-3.743 6.625 0 12 1.68 12 3.744v3.75c0 .883-.98 1.69-2.616 2.334L12 10.13v.003z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/campaignmonitor.svg b/assets/lib/simple-icons/icons/campaignmonitor.svg
index 1d2d8af6..5907816d 100644
--- a/assets/lib/simple-icons/icons/campaignmonitor.svg
+++ b/assets/lib/simple-icons/icons/campaignmonitor.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Campaign Monitor icon</title><path d="M23.836 4.27c-.29-.413-.86-.515-1.273-.226L.163 19.73c.167.235.437.39.747.39h22.18c.503 0 .91-.41.91-.914V4.78c-.004-.176-.058-.352-.164-.51zm-22.4-.226c-.413-.29-.982-.19-1.272.226-.107.154-.162.332-.164.51v14.45l10.664-8.736-9.227-6.45v-.002z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Campaign Monitor</title><path d="M23.836 4.27c-.29-.413-.86-.515-1.273-.226L.163 19.73c.167.235.437.39.747.39h22.18c.503 0 .91-.41.91-.914V4.78c-.004-.176-.058-.352-.164-.51zm-22.4-.226c-.413-.29-.982-.19-1.272.226-.107.154-.162.332-.164.51v14.45l10.664-8.736-9.227-6.45v-.002z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/canonical.svg b/assets/lib/simple-icons/icons/canonical.svg
new file mode 100644
index 00000000..ea77c7e0
--- /dev/null
+++ b/assets/lib/simple-icons/icons/canonical.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Canonical</title><path d="M24 12c0 6.627-5.373 12-12 12-6.628 0-12-5.373-12-12C0 5.372 5.372 0 12 0c6.627 0 12 5.372 12 12zM12 2.92A9.08 9.08 0 002.92 12 9.08 9.08 0 0012 21.08 9.08 9.08 0 0021.081 12 9.08 9.08 0 0012 2.92zm0 16.722A7.64 7.64 0 014.36 12 7.64 7.64 0 0112 4.36 7.64 7.64 0 0119.641 12a7.64 7.64 0 01-7.64 7.641z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/canva.svg b/assets/lib/simple-icons/icons/canva.svg
index 4972a5cb..f3d793d0 100644
--- a/assets/lib/simple-icons/icons/canva.svg
+++ b/assets/lib/simple-icons/icons/canva.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Canva icon</title><path d="M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0zM6.962 7.68c.754 0 1.337.549 1.405 1.2.069.583-.171 1.097-.822 1.406-.343.171-.48.172-.549.069-.034-.069 0-.137.069-.206.617-.514.617-.926.548-1.508-.034-.378-.308-.618-.583-.618-1.2 0-2.914 2.674-2.674 4.629.103.754.549 1.646 1.509 1.646.308 0 .65-.103.96-.24.5-.264.799-.47 1.097-.8-.073-.885.704-2.046 1.851-2.046.515 0 .926.205.96.583.068.514-.377.582-.514.582s-.378-.034-.378-.17c-.034-.138.309-.07.275-.378-.035-.206-.24-.274-.446-.274-.72 0-1.131.994-1.029 1.611.035.275.172.549.447.549.205 0 .514-.31.617-.755.068-.308.343-.514.583-.514.102 0 .17.034.205.171v.138c-.034.137-.137.548-.102.651 0 .069.034.171.17.171.092 0 .436-.18.777-.459.117-.59.253-1.298.253-1.357.034-.24.137-.48.617-.48.103 0 .171.034.205.171v.138l-.136.617c.445-.583 1.097-.994 1.508-.994.172 0 .309.102.309.274 0 .103 0 .274-.069.446-.137.377-.309.96-.412 1.474 0 .137.035.274.207.274.171 0 .685-.206 1.096-.754l.007-.004c-.002-.068-.007-.134-.007-.202 0-.411.035-.754.104-.994.068-.274.411-.514.617-.514.103 0 .205.069.205.171 0 .035 0 .103-.034.137-.137.446-.24.857-.24 1.269 0 .24.034.582.102.788 0 .034.035.069.07.069.068 0 .548-.445.89-1.028-.308-.206-.48-.549-.48-.96 0-.72.446-1.097.858-1.097.343 0 .617.24.617.72 0 .308-.103.65-.274.96h.102a.77.77 0 0 0 .584-.24.293.293 0 0 1 .134-.117c.335-.425.83-.74 1.41-.74.48 0 .924.205.959.582.068.515-.378.618-.515.618l-.002-.002c-.138 0-.377-.035-.377-.172 0-.137.309-.068.274-.376-.034-.206-.24-.275-.446-.275-.686 0-1.13.891-1.028 1.611.034.275.171.583.445.583.206 0 .515-.308.652-.754.068-.274.343-.514.583-.514.103 0 .17.034.205.171 0 .069 0 .206-.137.652-.17.308-.171.48-.137.617.034.274.171.48.309.583.034.034.068.102.068.102 0 .069-.034.138-.137.138-.034 0-.068 0-.103-.035-.514-.205-.72-.548-.789-.891-.205.24-.445.377-.72.377-.445 0-.89-.411-.96-.926a1.609 1.609 0 0 1 .075-.649c-.203.13-.422.203-.623.203h-.17c-.447.652-.927 1.098-1.27 1.303a.896.896 0 0 1-.377.104c-.068 0-.171-.035-.205-.104-.095-.152-.156-.392-.193-.667-.481.527-1.145.805-1.453.805-.343 0-.548-.206-.582-.55v-.376c.102-.754.377-1.2.377-1.337a.074.074 0 0 0-.069-.07c-.24 0-1.028.824-1.166 1.373l-.103.445c-.068.309-.377.515-.582.515-.103 0-.172-.035-.206-.172v-.137l.046-.233c-.435.31-.87.508-1.075.508-.308 0-.48-.172-.514-.412-.206.274-.445.412-.754.412-.352 0-.696-.24-.862-.593-.244.275-.523.553-.852.764-.48.309-1.028.549-1.68.549-.582 0-1.097-.309-1.371-.583-.412-.377-.651-.96-.686-1.509-.205-1.68.823-3.84 2.4-4.8.378-.205.755-.343 1.132-.343zm9.77 3.291c-.104 0-.172.172-.172.343 0 .274.137.583.309.755a1.74 1.74 0 0 0 .102-.583c0-.343-.137-.515-.24-.515z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Canva</title><path d="M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0zM6.962 7.68c.754 0 1.337.549 1.405 1.2.069.583-.171 1.097-.822 1.406-.343.171-.48.172-.549.069-.034-.069 0-.137.069-.206.617-.514.617-.926.548-1.508-.034-.378-.308-.618-.583-.618-1.2 0-2.914 2.674-2.674 4.629.103.754.549 1.646 1.509 1.646.308 0 .65-.103.96-.24.5-.264.799-.47 1.097-.8-.073-.885.704-2.046 1.851-2.046.515 0 .926.205.96.583.068.514-.377.582-.514.582s-.378-.034-.378-.17c-.034-.138.309-.07.275-.378-.035-.206-.24-.274-.446-.274-.72 0-1.131.994-1.029 1.611.035.275.172.549.447.549.205 0 .514-.31.617-.755.068-.308.343-.514.583-.514.102 0 .17.034.205.171v.138c-.034.137-.137.548-.102.651 0 .069.034.171.17.171.092 0 .436-.18.777-.459.117-.59.253-1.298.253-1.357.034-.24.137-.48.617-.48.103 0 .171.034.205.171v.138l-.136.617c.445-.583 1.097-.994 1.508-.994.172 0 .309.102.309.274 0 .103 0 .274-.069.446-.137.377-.309.96-.412 1.474 0 .137.035.274.207.274.171 0 .685-.206 1.096-.754l.007-.004c-.002-.068-.007-.134-.007-.202 0-.411.035-.754.104-.994.068-.274.411-.514.617-.514.103 0 .205.069.205.171 0 .035 0 .103-.034.137-.137.446-.24.857-.24 1.269 0 .24.034.582.102.788 0 .034.035.069.07.069.068 0 .548-.445.89-1.028-.308-.206-.48-.549-.48-.96 0-.72.446-1.097.858-1.097.343 0 .617.24.617.72 0 .308-.103.65-.274.96h.102a.77.77 0 0 0 .584-.24.293.293 0 0 1 .134-.117c.335-.425.83-.74 1.41-.74.48 0 .924.205.959.582.068.515-.378.618-.515.618l-.002-.002c-.138 0-.377-.035-.377-.172 0-.137.309-.068.274-.376-.034-.206-.24-.275-.446-.275-.686 0-1.13.891-1.028 1.611.034.275.171.583.445.583.206 0 .515-.308.652-.754.068-.274.343-.514.583-.514.103 0 .17.034.205.171 0 .069 0 .206-.137.652-.17.308-.171.48-.137.617.034.274.171.48.309.583.034.034.068.102.068.102 0 .069-.034.138-.137.138-.034 0-.068 0-.103-.035-.514-.205-.72-.548-.789-.891-.205.24-.445.377-.72.377-.445 0-.89-.411-.96-.926a1.609 1.609 0 0 1 .075-.649c-.203.13-.422.203-.623.203h-.17c-.447.652-.927 1.098-1.27 1.303a.896.896 0 0 1-.377.104c-.068 0-.171-.035-.205-.104-.095-.152-.156-.392-.193-.667-.481.527-1.145.805-1.453.805-.343 0-.548-.206-.582-.55v-.376c.102-.754.377-1.2.377-1.337a.074.074 0 0 0-.069-.07c-.24 0-1.028.824-1.166 1.373l-.103.445c-.068.309-.377.515-.582.515-.103 0-.172-.035-.206-.172v-.137l.046-.233c-.435.31-.87.508-1.075.508-.308 0-.48-.172-.514-.412-.206.274-.445.412-.754.412-.352 0-.696-.24-.862-.593-.244.275-.523.553-.852.764-.48.309-1.028.549-1.68.549-.582 0-1.097-.309-1.371-.583-.412-.377-.651-.96-.686-1.509-.205-1.68.823-3.84 2.4-4.8.378-.205.755-.343 1.132-.343zm9.77 3.291c-.104 0-.172.172-.172.343 0 .274.137.583.309.755a1.74 1.74 0 0 0 .102-.583c0-.343-.137-.515-.24-.515z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/capacitor.svg b/assets/lib/simple-icons/icons/capacitor.svg
new file mode 100644
index 00000000..33ea9bea
--- /dev/null
+++ b/assets/lib/simple-icons/icons/capacitor.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Capacitor</title><path d="M24 3.7l-5.766 5.766 5.725 5.736-3.713 3.712L5.073 3.742 8.786.03l5.736 5.726L20.284 0 24 3.7zM.029 8.785l3.713-3.713 15.173 15.173-3.713 3.714-5.732-5.726L3.7 24 0 20.285l5.754-5.764L.029 8.785z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/carrefour.svg b/assets/lib/simple-icons/icons/carrefour.svg
new file mode 100644
index 00000000..e47c4b22
--- /dev/null
+++ b/assets/lib/simple-icons/icons/carrefour.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Carrefour</title><path d="M12.14 4.045c-2.569 0-3.572 3.64-3.572 7.979 0 4.34 1.003 7.931 3.572 7.931 1.541 0 2.855-.903 2.86-1.645a.625.625 0 0 0-.199-.453c-.73-.706-1.016-1.412-1.018-2.034-.005-1.189 1.026-2.074 1.977-2.074 1.306 0 2.077 1.027 2.077 2.357 0 1.26-.537 2.31-1.121 3.15a.193.193 0 0 0-.034.107c0 .065.04.12.098.12.035 0 .076-.02.122-.065l6.561-6.344c.328-.28.537-.608.537-1.073 0-.468-.21-.794-.537-1.073l-6.561-6.346c-.045-.045-.087-.064-.122-.064-.059 0-.097.055-.098.12 0 .035.01.073.034.107.584.84 1.12 1.89 1.12 3.15 0 1.329-.77 2.356-2.076 2.356-.95 0-1.982-.884-1.977-2.073.002-.622.288-1.328 1.018-2.033A.624.624 0 0 0 15 5.69c-.004-.743-1.319-1.646-2.86-1.646m-5.043.537L.537 10.93C.209 11.207 0 11.534 0 12c0 .465.21.793.537 1.073l6.56 6.345c.042.043.083.06.117.06.062 0 .105-.057.103-.123a.188.188 0 0 0-.057-.123C5.72 17.32 4.6 15.126 4.6 12.024c0-3.104 1.12-5.341 2.66-7.255a.185.185 0 0 0 .057-.123c.002-.068-.04-.123-.103-.123-.034 0-.075.017-.117.06"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/carthrottle.svg b/assets/lib/simple-icons/icons/carthrottle.svg
index 1f0b3ffa..c101e051 100644
--- a/assets/lib/simple-icons/icons/carthrottle.svg
+++ b/assets/lib/simple-icons/icons/carthrottle.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Car Throttle icon</title><path d="M0 19.99h5.31l1-5.76h2.673L7.97 19.99h5.272l1.037-5.76h2.824l-1 5.76h7.584L21.9 17.029 24 4.01h-5.16l-.987 5.647h-2.86l.936-5.647H8.483l1.724 2.749-.487 2.898H6.996l.9-5.647H.35l1.76 2.774Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Car Throttle</title><path d="M0 19.99h5.31l1-5.76h2.673L7.97 19.99h5.272l1.037-5.76h2.824l-1 5.76h7.584L21.9 17.029 24 4.01h-5.16l-.987 5.647h-2.86l.936-5.647H8.483l1.724 2.749-.487 2.898H6.996l.9-5.647H.35l1.76 2.774Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/carto.svg b/assets/lib/simple-icons/icons/carto.svg
new file mode 100644
index 00000000..ba5111b9
--- /dev/null
+++ b/assets/lib/simple-icons/icons/carto.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Carto</title><path d="M19.138 7.138C21.823 7.138 24 9.3147 24 12s-2.1769 4.862-4.862 4.862c-1.9046 0-3.5532-1.0949-4.351-2.6896h.4683c.7615 1.358 2.215 2.2759 3.8826 2.2759 2.4567 0 4.4483-1.9916 4.4483-4.4483 0-2.4567-1.9916-4.4483-4.4483-4.4483-1.6677 0-3.1211.9178-3.8826 2.2759h-.4683c.7978-1.5947 2.4464-2.6897 4.351-2.6897zm0 3.3103c.8569 0 1.5517.6947 1.5517 1.5517 0 .857-.6948 1.5517-1.5518 1.5517-.857 0-1.5517-.6947-1.5517-1.5517 0-.857.6948-1.5517 1.5517-1.5517zm-17.5772.0109c.6066 0 .9968.2545 1.2597.615l-.6192.4793c-.1697-.2079-.3648-.3478-.649-.3478-.4156 0-.7083.3562-.7083.7889v.008c0 .4453.2927.793.7083.793.3096 0 .492-.144.6702-.3604l.6192.4411c-.2799.386-.6574.6701-1.3105.6701C.6829 13.547 0 12.898 0 12.0116v-.008c0-.8652.6617-1.5439 1.5608-1.5439zm4.7346.0382l1.264 2.9902h-.8822l-.212-.5344H5.3156l-.212.5344h-.861l1.2596-2.9902zm4.27.0212c.454 0 .7678.1187.9671.318.174.174.263.3988.263.6914v.008c0 .458-.2418.7592-.6108.9162l.7083 1.0349h-.9458l-.598-.8992h-.3648v.8992h-.8228v-2.969zm5.3983 0v.721h-.8907v2.248h-.8228v-2.248h-.8864v-.721zm-10.0712.9543l-.335.8398h.6658zm4.6348-.246h-.5429v.7168h.5472c.2756 0 .441-.1357.441-.352v-.008c0-.2375-.1738-.3563-.4453-.3563z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/cashapp.svg b/assets/lib/simple-icons/icons/cashapp.svg
index ce7a4314..59afc91b 100644
--- a/assets/lib/simple-icons/icons/cashapp.svg
+++ b/assets/lib/simple-icons/icons/cashapp.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Cash App icon</title><path d="M23.59 3.47A5.1 5.1 0 0 0 20.54.42C19.23 0 18.04 0 15.62 0H8.36c-2.4 0-3.61 0-4.9.4A5.1 5.1 0 0 0 .41 3.46C0 4.76 0 5.96 0 8.36v7.27c0 2.41 0 3.6.4 4.9a5.1 5.1 0 0 0 3.05 3.05c1.3.41 2.5.41 4.9.41h7.28c2.41 0 3.61 0 4.9-.4a5.1 5.1 0 0 0 3.06-3.06c.41-1.3.41-2.5.41-4.9V8.38c0-2.41 0-3.61-.41-4.91zM17.42 8.1l-.93.93a.5.5 0 0 1-.67.01 5 5 0 0 0-3.22-1.18c-.97 0-1.94.32-1.94 1.21 0 .9 1.04 1.2 2.24 1.65 2.1.7 3.84 1.58 3.84 3.64 0 2.24-1.74 3.78-4.58 3.95l-.26 1.2a.49.49 0 0 1-.48.39H9.63l-.09-.01a.5.5 0 0 1-.38-.59l.28-1.27a6.54 6.54 0 0 1-2.88-1.57v-.01a.48.48 0 0 1 0-.68l1-.97a.49.49 0 0 1 .67 0c.91.86 2.13 1.34 3.39 1.32 1.3 0 2.17-.55 2.17-1.42 0-.87-.88-1.1-2.54-1.72-1.76-.63-3.43-1.52-3.43-3.6 0-2.42 2.01-3.6 4.39-3.71l.25-1.23a.48.48 0 0 1 .48-.38h1.78l.1.01c.26.06.43.31.37.57l-.27 1.37c.9.3 1.75.77 2.48 1.39l.02.02c.19.2.19.5 0 .68z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Cash App</title><path d="M23.59 3.475a5.1 5.1 0 00-3.05-3.05c-1.31-.42-2.5-.42-4.92-.42H8.36c-2.4 0-3.61 0-4.9.4a5.1 5.1 0 00-3.05 3.06C0 4.765 0 5.965 0 8.365v7.27c0 2.41 0 3.6.4 4.9a5.1 5.1 0 003.05 3.05c1.3.41 2.5.41 4.9.41h7.28c2.41 0 3.61 0 4.9-.4a5.1 5.1 0 003.06-3.06c.41-1.3.41-2.5.41-4.9v-7.25c0-2.41 0-3.61-.41-4.91zm-6.17 4.63l-.93.93a.5.5 0 01-.67.01 5 5 0 00-3.22-1.18c-.97 0-1.94.32-1.94 1.21 0 .9 1.04 1.2 2.24 1.65 2.1.7 3.84 1.58 3.84 3.64 0 2.24-1.74 3.78-4.58 3.95l-.26 1.2a.49.49 0 01-.48.39H9.63l-.09-.01a.5.5 0 01-.38-.59l.28-1.27a6.54 6.54 0 01-2.88-1.57v-.01a.48.48 0 010-.68l1-.97a.49.49 0 01.67 0c.91.86 2.13 1.34 3.39 1.32 1.3 0 2.17-.55 2.17-1.42 0-.87-.88-1.1-2.54-1.72-1.76-.63-3.43-1.52-3.43-3.6 0-2.42 2.01-3.6 4.39-3.71l.25-1.23a.48.48 0 01.48-.38h1.78l.1.01c.26.06.43.31.37.57l-.27 1.37c.9.3 1.75.77 2.48 1.39l.02.02c.19.2.19.5 0 .68z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/cassandra.svg b/assets/lib/simple-icons/icons/cassandra.svg
deleted file mode 100644
index ae79760a..00000000
--- a/assets/lib/simple-icons/icons/cassandra.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Cassandra icon</title><path d="M17.51 6.535c-.002.003-.247.256-.387.408-.366.397-.92.975-1.312 1.12h-.004c-.052-.018-.103-.035-.159-.05l.704-1.425-.008.012c-.022.043-.719 1.415-1.666 1.218l-.002.002c-.014-.003-.026.002-.04-.002.455-.58.63-1.113.63-1.113s-.756 1.213-1.69.885a.075.075 0 0 1-.049-.047.153.153 0 0 1 0-.08c.01-.041.04-.092.067-.14.095-.176.256-.368.256-.368s-.156.152-.366.295l-.002.002c-.157.107-.345.208-.52.236a.512.512 0 0 1-.167 0c-.214-.037-.208-.25-.149-.455v-.002c.06-.204.174-.4.174-.4s-.19.298-.398.588c-.16.223-.311.396-.416.474l-.12.004c-.063-.176.1-.756.1-.76a4.983 4.983 0 0 1-.314.446 1.73 1.73 0 0 1-.34.336h-.027c-.082.007-.16.02-.239.031a.208.208 0 0 1-.064-.125c-.042-.268.123-.756.125-.762-.002.006-.09.26-.21.502v.004c-.032.067-.07.12-.107.178-.086.136-.176.244-.261.219-.127-.038-.202-.202-.246-.356-.044-.154-.057-.299-.057-.299s-.031.251-.117.485a.799.799 0 0 1-.145.265c-.024.027-.057.036-.086.055a12.55 12.55 0 0 0-2.617.764c-.223.082-.446.158-.674.256-.75.32-1.529.726-2.343 1.248a21.33 21.33 0 0 0-2.56 1.945c-.448.393-.906.82-1.376 1.29 3.558-1.917 4.97-4.743 11.633-4.995 5.044-.191 7.4 2.137 8.178 2.17 1.956.083 3.257-1.4 3.672-1.946.112-.142.179-.237.183-.244-.01.011-.328.373-.781.721l-.006.004c-.46.351-1.05.68-1.576.6h-.002c-.068-.01-.138-.007-.203-.032.743-.434 1.236-1.19 1.482-1.595.076-.125.233-.36.233-.36S21.395 9.53 20.094 9.41l-.002.002c-.051-.005-.105.007-.155-.004.567-.446.985-1.044 1.278-1.55v-.003h.002c.317-.548.482-.985.484-.992-.005.008-.326.498-.766 1.037l-.01.01c-.44.54-.998 1.121-1.464 1.299-.07.026-.14.066-.205.072 1.085-.959 1.539-2.322 1.539-2.322s-1.097 1.595-2.026 1.889c-.056.017-.114.047-.17.054.568-.512.869-.92 1.057-1.24V7.66c.238-.404.281-.65.281-.65l-.004.004a9.379 9.379 0 0 1-.271.334l-.016.017c-.255.3-.645.733-1.045 1.078l-.005.004a4.147 4.147 0 0 1-.32.248c-.03.021-.06.046-.089.065a1.7 1.7 0 0 1-.273.138c-.022.01-.044.022-.065.03-.068-.045-.132-.092-.205-.135-.046.06-.096.117-.142.176H17.5c-.02-.006-.044-.006-.063-.016.858-.934 1.44-2.119 1.44-2.119l-.004.004c-.008.01-1.193 1.61-1.73 1.71-.07-.035-.14-.07-.215-.103a.5.5 0 0 1 .044-.162c.122-.284.465-.717.465-.717s-.093.07-.123.096a4.25 4.25 0 0 1-.304.238c-.056.04-.114.072-.172.108-.064.04-.127.076-.188.105a.71.71 0 0 1-.263.086c-.043 0-.082-.005-.11-.027.453-.277 1.228-1.628 1.233-1.637zm-4.79 2.166a15.081 15.081 0 0 0-.913.006c-.286.01-.55.033-.817.053l-.002.002c-.28.123-.547.268-.783.459a.427.427 0 0 1 .035.168.431.431 0 0 1-.047.19l.885.642.022-.014-.36-1.264.623 1.114c.02-.008.042-.014.063-.02l-.02-1.236.397 1.162.476-1.149.018 1.268c.004.002.007.006.012.008l.712-1.006-.363 1.219.008.01 1.041-.692-.758 1.05v.007l.95-.34c.013-.017.03-.03.042-.047a.394.394 0 0 1 .395-.63c.119-.245.209-.504.268-.77a13.15 13.15 0 0 0-1.883-.19zm-2.507.133l-.02.002c-.308.036-.606.078-.892.125-.287.047-.562.1-.824.16l-.014.002c.115.388.294.756.531 1.08.108-.239.244-.461.402-.662a.436.436 0 0 1 .569-.557c.077-.058.166-.099.248-.15zm4.46.092a3.183 3.183 0 0 1-.163.826.394.394 0 0 1-.328.68 3.171 3.171 0 0 1-.55.63l.661.034-.994.236c-.026.018-.046.042-.072.059a3.194 3.194 0 0 1 1.537.691c.32-.574.504-1.235.504-1.94 0-.535-.237-.928-.594-1.216zm-6.318.226c-.296.07-.58.147-.85.23a1.462 1.462 0 0 0-.212.76c0 1.622.968 3.016 2.357 3.64l.002-.012a3.197 3.197 0 0 1-.58-.79.572.572 0 0 1-.336-1.078 3.18 3.18 0 0 1 .139-1.39 3.16 3.16 0 0 1-.52-1.36zm7.631.026c.14.41.225.842.225 1.293 0 2.44-2.203 4.418-4.92 4.418s-4.92-1.979-4.92-4.418c0-.236.023-.468.063-.694-.777.327-1.45.706-2.075 1.112-.214.388-.318.793-.283 1.2.085.985.951 1.807 2.274 2.364l-.256-.068c-2.29-.646-4.107.503-6.094-.494.46.364.984.717 2.498.722.513.002 2.158-.08 2.461.186.303.265-1.021 1.514-1.021 1.514s2.24-1.897 2.458-1.25c.137.402-.642 1.476-.642 1.476s.783-1.06 1.363-1.287c.4-.156.735-.136 1.022.266.19.265-.909 1.552-.909 1.552s1.476-1.439 1.74-1.363c.266.076 0 1.363 0 1.363s.545-1.306.835-1.402c.397-.133-.909 3.03-.909 3.03s1.595-2.925 1.893-2.991c.51-.114.852 2.043.852 2.043s-.249-1.885.02-2.006c1.694-.767.718 3.256.718 3.256s1.109-2.73.428-3.336C14.605 16.856 14.385 19 14.385 19s.472-1.02-.854-3.53c.72-.037 1.8 1.864 1.8 1.864s-1.173-2.081-.378-2.12c1.58-.074 1.74 2.765 1.74 2.765s.474-.398-.795-3.18c.808-.518 2.764 2.574 2.764 2.574s-1.804-3.017-1.514-3.219c.29-.202 1.35.96 1.35.96s-.808-1.11-.594-1.223c.215-.114 2.362 2.207 2.362 2.207s-1.895-2.271-1.567-2.55c.328-.277 1.717.784 1.717.784s-2.134-1.4-1.717-1.617c.58-.301 2.235.72 2.235.72s-.996-.82-.832-1.02c.164-.203 2.119 1.286 2.119 1.286s-1.728-1.364-1.817-1.705c-.088-.34 1.362.115 1.362.115s-1.602-.744-1.627-.959c-.026-.214 1.06.239 1.06.239s-1.49-1.224-1.855-.227c-.084.159-.187.3-.283.45.093-.27.135-.543.11-.82a1.87 1.87 0 0 0-.052-.28c-.683-.367-1.701-.933-3.133-1.336zm-5.83.455a.427.427 0 0 1-.508.164c-.054.073-.1.152-.148.23l1.277.471c.011-.014.02-.03.032-.043zm-.658.396c-.094.155-.18.316-.244.489.12.128.26.235.396.343l.922-.029.002-.004zm4.186.541l-.606.463.053.002c.201-.132.383-.29.553-.465zm-4.534.291c-.002.012-.007.023-.01.035a2.88 2.88 0 0 0-.048.958.567.567 0 0 1 .451.474l.937-.601c-.085-.03-.17-.06-.251-.096l-1.051-.076.638-.139a3.198 3.198 0 0 1-.666-.555zm.793.211c.138.086.28.16.43.223l.115-.024c0-.019.005-.037.006-.056zm3.12.68l.916.9-1.198-.466.703 1.078-1.072-.832-.012.006.346 1.279-.596-1.135-.097 1.33-.403-1.326-.47 1.262.113-1.36-.016-.007-.812 1.152.297-1.11a3.298 3.298 0 0 0-.793 1.19c.095.102.196.198.302.289a3.984 3.984 0 0 0 4.352-1.688 3.398 3.398 0 0 0-1.26-.539zm-2.436.223l-1.078.39c.001.018.01.033.01.051a.57.57 0 0 1-.184.42c.102.217.228.423.375.615a3.2 3.2 0 0 1 .32-.635l-.295.239zm3.633 2.79c-.186.049-.37.097-.56.137.192-.04.374-.09.56-.136zM13.172 15c-.114.02-.225.046-.34.063-.202.029-.391.042-.586.062.315-.033.624-.074.926-.125zm-1.35.17c-.11.008-.215.007-.324.012.11-.007.214-.003.324-.012z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/castbox.svg b/assets/lib/simple-icons/icons/castbox.svg
index 878b10ac..134fffd9 100644
--- a/assets/lib/simple-icons/icons/castbox.svg
+++ b/assets/lib/simple-icons/icons/castbox.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Castbox icon</title><path d="M12 0c-.29 0-.58.068-.812.206L2.417 5.392c-.46.272-.804.875-.804 1.408v10.4c0 .533.344 1.135.804 1.407l8.77 5.187c.465.275 1.162.275 1.626 0l8.77-5.187c.46-.272.804-.874.804-1.407V6.8c0-.533-.344-1.136-.804-1.408L12.813.206A1.618 1.618 0 0012 0zm-.85 8.304c.394 0 .714.303.714.676v2.224c0 .207.191.375.427.375s.428-.168.428-.375V9.57c0-.373.32-.675.713-.675.394 0 .712.302.712.675v4.713c0 .374-.318.676-.712.676-.394 0-.713-.302-.713-.676v-1.31c0-.206-.192-.374-.428-.374s-.427.168-.427.374v1.226c0 .374-.32.676-.713.676-.394 0-.713-.302-.713-.676v-1.667c0-.207-.192-.375-.428-.375-.235 0-.427.168-.427.375v3.31c0 .373-.319.676-.712.676-.394 0-.713-.303-.713-.676v-2.427c0-.206-.191-.374-.428-.374-.235 0-.427.168-.427.374v.178a.71.71 0 01-.712.708.71.71 0 01-.713-.708v-2.123a.71.71 0 01.713-.708.71.71 0 01.712.708v.178c0 .206.192.373.427.373.237 0 .428-.167.428-.373v-1.53c0-.374.32-.676.713-.676.393 0 .712.303.712.676v.646c0 .206.192.374.427.374.236 0 .428-.168.428-.374V8.98c0-.373.319-.676.713-.676zm4.562 2.416c.393 0 .713.302.713.676v2.691c0 .374-.32.676-.713.676-.394 0-.712-.303-.712-.676v-2.691c0-.374.319-.676.712-.676zm2.28 1.368c.395 0 .713.303.713.676v.67c0 .374-.318.676-.712.676-.394 0-.713-.302-.713-.675v-.67c0-.374.32-.677.713-.677Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Castbox</title><path d="M12 0c-.29 0-.58.068-.812.206L2.417 5.392c-.46.272-.804.875-.804 1.408v10.4c0 .533.344 1.135.804 1.407l8.77 5.187c.465.275 1.162.275 1.626 0l8.77-5.187c.46-.272.804-.874.804-1.407V6.8c0-.533-.344-1.136-.804-1.408L12.813.206A1.618 1.618 0 0012 0zm-.85 8.304c.394 0 .714.303.714.676v2.224c0 .207.191.375.427.375s.428-.168.428-.375V9.57c0-.373.32-.675.713-.675.394 0 .712.302.712.675v4.713c0 .374-.318.676-.712.676-.394 0-.713-.302-.713-.676v-1.31c0-.206-.192-.374-.428-.374s-.427.168-.427.374v1.226c0 .374-.32.676-.713.676-.394 0-.713-.302-.713-.676v-1.667c0-.207-.192-.375-.428-.375-.235 0-.427.168-.427.375v3.31c0 .373-.319.676-.712.676-.394 0-.713-.303-.713-.676v-2.427c0-.206-.191-.374-.428-.374-.235 0-.427.168-.427.374v.178a.71.71 0 01-.712.708.71.71 0 01-.713-.708v-2.123a.71.71 0 01.713-.708.71.71 0 01.712.708v.178c0 .206.192.373.427.373.237 0 .428-.167.428-.373v-1.53c0-.374.32-.676.713-.676.393 0 .712.303.712.676v.646c0 .206.192.374.427.374.236 0 .428-.168.428-.374V8.98c0-.373.319-.676.713-.676zm4.562 2.416c.393 0 .713.302.713.676v2.691c0 .374-.32.676-.713.676-.394 0-.712-.303-.712-.676v-2.691c0-.374.319-.676.712-.676zm2.28 1.368c.395 0 .713.303.713.676v.67c0 .374-.318.676-.712.676-.394 0-.713-.302-.713-.675v-.67c0-.374.32-.677.713-.677Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/castorama.svg b/assets/lib/simple-icons/icons/castorama.svg
index 39d3c6d2..fa0d6c73 100644
--- a/assets/lib/simple-icons/icons/castorama.svg
+++ b/assets/lib/simple-icons/icons/castorama.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Castorama icon</title><path d="M8.91 16.106c-2.129 0-3.659-1.794-3.659-4.266 0-2.148 1.468-4.095 3.488-4.095 2.275 0 3.545 1.857 3.545 1.857l2.939-3.298c-.91-1.062-2.598-2.882-6.503-2.882-4.388 0-8.209 3.489-8.209 8.456 0 4.766 3.475 8.532 8.266 8.532 3.855 0 5.572-2.017 6.54-3.129l-2.831-2.969c0 .001-1.415 1.794-3.576 1.794zM18.283 0v9.988h-2.064a1.92 1.92 0 1 0 0 3.84h2.064V24h5.205V0h-5.205z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Castorama</title><path d="M8.91 16.106c-2.129 0-3.659-1.794-3.659-4.266 0-2.148 1.468-4.095 3.488-4.095 2.275 0 3.545 1.857 3.545 1.857l2.939-3.298c-.91-1.062-2.598-2.882-6.503-2.882-4.388 0-8.209 3.489-8.209 8.456 0 4.766 3.475 8.532 8.266 8.532 3.855 0 5.572-2.017 6.54-3.129l-2.831-2.969c0 .001-1.415 1.794-3.576 1.794zM18.283 0v9.988h-2.064a1.92 1.92 0 1 0 0 3.84h2.064V24h5.205V0h-5.205z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/castro.svg b/assets/lib/simple-icons/icons/castro.svg
index 5a921184..6bd03d13 100644
--- a/assets/lib/simple-icons/icons/castro.svg
+++ b/assets/lib/simple-icons/icons/castro.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Castro icon</title><path d="M12 0C5.372 0 0 5.373 0 12s5.372 12 12 12c6.627 0 12-5.373 12-12S18.627 0 12 0zm-.002 13.991a2.052 2.052 0 1 1 0-4.105 2.052 2.052 0 0 1 0 4.105zm4.995 4.853l-2.012-2.791a5.084 5.084 0 1 0-5.982.012l-2.014 2.793A8.526 8.526 0 0 1 11.979 3.42a8.526 8.526 0 0 1 8.526 8.526 8.511 8.511 0 0 1-3.512 6.898z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Castro</title><path d="M12 0C5.372 0 0 5.373 0 12s5.372 12 12 12c6.627 0 12-5.373 12-12S18.627 0 12 0zm-.002 13.991a2.052 2.052 0 1 1 0-4.105 2.052 2.052 0 0 1 0 4.105zm4.995 4.853l-2.012-2.791a5.084 5.084 0 1 0-5.982.012l-2.014 2.793A8.526 8.526 0 0 1 11.979 3.42a8.526 8.526 0 0 1 8.526 8.526 8.511 8.511 0 0 1-3.512 6.898z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/caterpillar.svg b/assets/lib/simple-icons/icons/caterpillar.svg
index 9c60539d..40e838d7 100644
--- a/assets/lib/simple-icons/icons/caterpillar.svg
+++ b/assets/lib/simple-icons/icons/caterpillar.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Caterpillar icon</title><path d="M11.901 11.554l.802-4.1.798 4.1zm2.869-6.52h-4.15L8.2 15.884l4.503-3.635 4.695 3.934zm-2.067 8.156l-7.509 6.072H19.95zM24 5.02v2.77h-2.066v11.45h-.882l-2.436-2.04V7.79h-2.057V5.02zM6.872 16.864c.548-.458.642-1.024.642-1.532V13.2h-2.98v2.894a.75.75 0 0 1-.748.751c-.414 0-.722-.336-.722-.75V7.893c0-.414.308-.75.722-.75a.75.75 0 0 1 .749.75v2.913H7.51V7.785c0-1.67-1.092-3.044-3.75-3.047-2.728 0-3.76 1.38-3.76 3.05v8.563c0 1.655 1.314 2.907 2.995 2.907h.922Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Caterpillar</title><path d="M11.901 11.554l.802-4.1.798 4.1zm2.869-6.52h-4.15L8.2 15.884l4.503-3.635 4.695 3.934zm-2.067 8.156l-7.509 6.072H19.95zM24 5.02v2.77h-2.066v11.45h-.882l-2.436-2.04V7.79h-2.057V5.02zM6.872 16.864c.548-.458.642-1.024.642-1.532V13.2h-2.98v2.894a.75.75 0 0 1-.748.751c-.414 0-.722-.336-.722-.75V7.893c0-.414.308-.75.722-.75a.75.75 0 0 1 .749.75v2.913H7.51V7.785c0-1.67-1.092-3.044-3.75-3.047-2.728 0-3.76 1.38-3.76 3.05v8.563c0 1.655 1.314 2.907 2.995 2.907h.922Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/cbs.svg b/assets/lib/simple-icons/icons/cbs.svg
new file mode 100644
index 00000000..bcc04b2b
--- /dev/null
+++ b/assets/lib/simple-icons/icons/cbs.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>CBS</title><path d="M12 24C5.314 24 .068 18.587.068 11.949.068 5.413 5.314 0 12 0s11.932 5.413 11.932 11.949C23.932 18.587 18.686 24 12 24zm0-5.106c5.452 0 9.36-3.473 11.109-6.945C21.875 9.294 18.172 5.106 12 5.106c-5.452 0-9.36 3.37-11.109 6.843C2.537 15.42 6.548 18.894 12 18.894zm0-.613c-3.497 0-6.377-2.86-6.377-6.332S8.503 5.617 12 5.617s6.377 2.86 6.377 6.332c0 3.574-2.88 6.332-6.377 6.332Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/cdprojekt.svg b/assets/lib/simple-icons/icons/cdprojekt.svg
index dd45c399..a37e6fd8 100644
--- a/assets/lib/simple-icons/icons/cdprojekt.svg
+++ b/assets/lib/simple-icons/icons/cdprojekt.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>CD Projekt icon</title><path d="M18.942,20.154c-0.687,0.323-1.719,0.302-2.986-0.072l0.213,0.547l-0.389-0.226l-1.537-0.907h0.001 l-0.033-0.158C14.783,19.509,17.746,20.507,18.942,20.154z M7.929,22.045c-0.127,0.229,0.179,0.645,0.179,0.645 c-0.687-0.534-1.276,0.346-1.276,0.346c-0.039-0.385,0.397-0.669,0.397-0.669c-0.715,0.113-1.549,0.78-1.549,0.78 c-0.097-0.333,0.319-0.556,0.319-0.556c0-0.263,0.361-0.236,0.763-0.347c0.272-0.074,0.679-0.186,0.919-0.252 c0.005-0.004,0.007-0.01,0.011-0.013c0-0.002,0.303-0.348,0.671-0.745c0.291-0.31,0.614-0.648,0.868-0.88 c0.118,0.018,0.226,0.031,0.294,0.037c-0.243,0.199-0.651,0.62-0.999,0.994C8.266,21.665,8.039,21.921,7.929,22.045z M10.168,14.083 l8.822,6.05c-0.013,0.007-0.029,0.011-0.042,0.018c-0.008-0.004-0.163-0.064-0.328-0.129c-0.081-0.033-0.178-0.072-0.29-0.118 h-0.001c-0.005-0.002-0.012-0.005-0.019-0.009c-0.772-0.317-2.27-0.951-4.634-2.041c-2.4-1.112-3.815-1.798-5.028-2.388l0.001,0.002 c0,0-0.001-0.002-0.002-0.002l4.363,3.974l0.006,0.004l0.011,0.011h0.002l0.256,0.211l-1.153,0.348 c-0.001-0.006-0.005-0.013-0.006-0.018c-0.006-0.016-0.011-0.033-0.017-0.051c-0.003-0.008-0.006-0.017-0.009-0.025 c-0.006-0.017-0.012-0.033-0.018-0.05c-0.003-0.007-0.006-0.015-0.009-0.023c-0.011-0.023-0.021-0.047-0.032-0.073l-0.202,0.094 c0.09,0.197,0.121,0.356,0.121,0.482c-0.001,0.16-0.064,0.282-0.109,0.353c-0.025,0.037-0.07,0.086-0.071,0.086l0.064,0.088 c-0.004,0.011-0.008,0.023-0.014,0.035c-0.341,0.545-0.652,1.308-0.786,1.653c-0.044,0.114-0.069,0.183-0.069,0.183 c0,0,0,0.002-0.001,0.005c0.227,0.009,0.767,0.073,0.627,0.504l-0.122,0.444c-0.268-0.478-0.154-0.606-0.154-0.606 C10.544,22.894,8.968,24,8.968,24c0.052-0.411,0.506-0.697,0.768-0.847c-0.221-0.026-0.494,0.165-0.64,0.283 c0.137-0.27,0.335-0.433,0.539-0.522c-0.002-0.002-0.002-0.002-0.003-0.004c0.359-0.135,0.712-0.069,0.753-0.029l-0.002,0.001 c0.122-0.038,0.131-0.043,0.241-0.068c0.036-0.026,0.071-0.112,0.088-0.158c0.001-0.005,0.363-1.014,0.81-1.774 c-0.217-0.021-0.388-0.274-0.388-0.581c0-0.018,0.001-0.037,0.002-0.055c-0.475,0.069-0.973,0.088-1.484,0.043 c-0.016,0-0.032-0.003-0.049-0.005c0,0.001,0,0.001,0,0.001c-0.024-0.002-0.131-0.012-0.262-0.029 c-0.945-0.128-1.803-0.45-2.507-0.911l0.002,0.01c0,0-1.279-0.682-1.551-2.233l-0.309,0.195c0-1.39,0.238-2.365,0.563-3.111 l-0.38,0.037l0.38-0.534c-0.05,0.103-0.096,0.212-0.143,0.332l0.233-0.039c0,0,0,0,0-0.002c0.047-0.096,0.092-0.184,0.138-0.27 c0.092-0.169,0.188-0.328,0.295-0.484c0.024-0.035,0.069-0.098,0.111-0.152c0.062-0.08,0.147-0.179,0.204-0.245 c0.051-0.06,0.166-0.172,0.22-0.221c0.041-0.037,0.114-0.096,0.147-0.12l-0.229,1.072c0.669-0.832,1.912-2.075,2.535-2.665 c-0.118-0.222-0.248-0.418-0.386-0.581L8.08,10.763l-0.025,0.019c0,0-0.416,0.314-0.565,0.412c-0.409,0.267-0.706-0.07-0.722-0.09 c0.088,0.074,0.201,0.12,0.328,0.12c0.14,0,0.267-0.055,0.357-0.144c0.092-0.088,0.147-0.209,0.147-0.343 c0-0.068-0.014-0.132-0.038-0.191c-0.044-0.097-0.12-0.178-0.214-0.23H7.35c0,0-0.104-0.06-0.082-0.158 c0.022-0.099,0.206-0.291,0.206-0.291l0.225-0.229l0.36-0.367l0.777-0.79c0.047-0.052,0.077-0.087,0.077-0.087L8.231,8.686 L8.229,8.68c0-0.009,0.006-0.037,0.053-0.123c0.065-0.119,0.22-0.335,0.224-0.343l0.001-0.001L7.242,9.117c0-0.001,0-0.001,0-0.002 c0.074-0.35,0.824-1.365,0.858-1.412L7.27,8.464c0-0.002-0.001-0.004-0.003-0.006C7.224,8.2,7.638,7.317,7.695,7.197 C7.697,7.193,7.698,7.19,7.7,7.187C7.398,7.488,7.18,7.815,7.173,7.823c0-0.291,0.223-0.709,0.223-0.709 C7.332,7.176,7.272,7.242,7.214,7.307C6.346,8.285,6.095,9.429,6.027,9.873c0,0,0,0.001-0.001,0.001 C5.881,9.963,5.97,9.854,5.9,10.022c-0.256,0.073-0.47,0.202-0.642,0.346c-0.287,0.237-0.459,0.511-0.513,0.605 c0.034-0.043,0.07-0.083,0.105-0.119C5.38,10.3,5.992,10.36,5.992,10.36s0.682,1.26,0.542,1.405 c-0.015,0.015-0.039,0.017-0.072,0.006c-0.09-0.031-0.149-0.017-0.182,0.024c-0.105,0.117-0.009,0.454-0.008,0.462l-1.809-0.778 c0.858-0.318,1.47-0.1,1.47-0.1c0,0.212,0.48,0.184,0.48,0.184s0,0,0-0.001h0.001c0-0.196-0.365-0.43-0.365-0.43 s-0.327,0.136-0.716,0c-0.077-0.027-0.161-0.038-0.242-0.034C5.02,11.1,4.946,11.115,4.874,11.136 c-0.206,0.059-0.357,0.174-0.357,0.174v-0.001L4.515,11.31l1.131-4.139l0.119,1.591L8.06,3.367l0.039,4.037L14.354,0l-3.847,8.316 l0.023,0.041l2.713-1.954l-0.573,1.149l3.793-1.481l-3.539,2.585l6.612-0.81l-8.021,3.471l4.105-1.001L10.168,14.083z M11.512,11.319l0.001,0l-0.001-0.004C11.512,11.316,11.512,11.317,11.512,11.319z M9.515,12.181 c-0.095-0.395-0.223-0.757-0.371-1.076L8.2,13.182L9.515,12.181z M7.215,11.087c0.208-0.071,0.314-0.308,0.239-0.529l-0.208,0.071 c0.013,0.031,0.022,0.064,0.022,0.099c0,0.031-0.005,0.06-0.017,0.086l0.095,0.057c-0.032,0.051-0.081,0.095-0.141,0.12 c-0.036,0.016-0.074,0.022-0.112,0.022c-0.122,0-0.236-0.074-0.286-0.195c-0.004-0.01-0.01-0.022-0.012-0.034l-0.092,0.03 C6.778,11.038,7.008,11.158,7.215,11.087z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>CD Projekt</title><path d="M18.942,20.154c-0.687,0.323-1.719,0.302-2.986-0.072l0.213,0.547l-0.389-0.226l-1.537-0.907h0.001 l-0.033-0.158C14.783,19.509,17.746,20.507,18.942,20.154z M7.929,22.045c-0.127,0.229,0.179,0.645,0.179,0.645 c-0.687-0.534-1.276,0.346-1.276,0.346c-0.039-0.385,0.397-0.669,0.397-0.669c-0.715,0.113-1.549,0.78-1.549,0.78 c-0.097-0.333,0.319-0.556,0.319-0.556c0-0.263,0.361-0.236,0.763-0.347c0.272-0.074,0.679-0.186,0.919-0.252 c0.005-0.004,0.007-0.01,0.011-0.013c0-0.002,0.303-0.348,0.671-0.745c0.291-0.31,0.614-0.648,0.868-0.88 c0.118,0.018,0.226,0.031,0.294,0.037c-0.243,0.199-0.651,0.62-0.999,0.994C8.266,21.665,8.039,21.921,7.929,22.045z M10.168,14.083 l8.822,6.05c-0.013,0.007-0.029,0.011-0.042,0.018c-0.008-0.004-0.163-0.064-0.328-0.129c-0.081-0.033-0.178-0.072-0.29-0.118 h-0.001c-0.005-0.002-0.012-0.005-0.019-0.009c-0.772-0.317-2.27-0.951-4.634-2.041c-2.4-1.112-3.815-1.798-5.028-2.388l0.001,0.002 c0,0-0.001-0.002-0.002-0.002l4.363,3.974l0.006,0.004l0.011,0.011h0.002l0.256,0.211l-1.153,0.348 c-0.001-0.006-0.005-0.013-0.006-0.018c-0.006-0.016-0.011-0.033-0.017-0.051c-0.003-0.008-0.006-0.017-0.009-0.025 c-0.006-0.017-0.012-0.033-0.018-0.05c-0.003-0.007-0.006-0.015-0.009-0.023c-0.011-0.023-0.021-0.047-0.032-0.073l-0.202,0.094 c0.09,0.197,0.121,0.356,0.121,0.482c-0.001,0.16-0.064,0.282-0.109,0.353c-0.025,0.037-0.07,0.086-0.071,0.086l0.064,0.088 c-0.004,0.011-0.008,0.023-0.014,0.035c-0.341,0.545-0.652,1.308-0.786,1.653c-0.044,0.114-0.069,0.183-0.069,0.183 c0,0,0,0.002-0.001,0.005c0.227,0.009,0.767,0.073,0.627,0.504l-0.122,0.444c-0.268-0.478-0.154-0.606-0.154-0.606 C10.544,22.894,8.968,24,8.968,24c0.052-0.411,0.506-0.697,0.768-0.847c-0.221-0.026-0.494,0.165-0.64,0.283 c0.137-0.27,0.335-0.433,0.539-0.522c-0.002-0.002-0.002-0.002-0.003-0.004c0.359-0.135,0.712-0.069,0.753-0.029l-0.002,0.001 c0.122-0.038,0.131-0.043,0.241-0.068c0.036-0.026,0.071-0.112,0.088-0.158c0.001-0.005,0.363-1.014,0.81-1.774 c-0.217-0.021-0.388-0.274-0.388-0.581c0-0.018,0.001-0.037,0.002-0.055c-0.475,0.069-0.973,0.088-1.484,0.043 c-0.016,0-0.032-0.003-0.049-0.005c0,0.001,0,0.001,0,0.001c-0.024-0.002-0.131-0.012-0.262-0.029 c-0.945-0.128-1.803-0.45-2.507-0.911l0.002,0.01c0,0-1.279-0.682-1.551-2.233l-0.309,0.195c0-1.39,0.238-2.365,0.563-3.111 l-0.38,0.037l0.38-0.534c-0.05,0.103-0.096,0.212-0.143,0.332l0.233-0.039l0-.002c0.047-0.096,0.092-0.184,0.138-0.27 c0.092-0.169,0.188-0.328,0.295-0.484c0.024-0.035,0.069-0.098,0.111-0.152c0.062-0.08,0.147-0.179,0.204-0.245 c0.051-0.06,0.166-0.172,0.22-0.221c0.041-0.037,0.114-0.096,0.147-0.12l-0.229,1.072c0.669-0.832,1.912-2.075,2.535-2.665 c-0.118-0.222-0.248-0.418-0.386-0.581L8.08,10.763l-0.025,0.019c0,0-0.416,0.314-0.565,0.412c-0.409,0.267-0.706-0.07-0.722-0.09 c0.088,0.074,0.201,0.12,0.328,0.12c0.14,0,0.267-0.055,0.357-0.144c0.092-0.088,0.147-0.209,0.147-0.343 c0-0.068-0.014-0.132-0.038-0.191c-0.044-0.097-0.12-0.178-0.214-0.23H7.35c0,0-0.104-0.06-0.082-0.158 c0.022-0.099,0.206-0.291,0.206-0.291l0.225-0.229l0.36-0.367l0.777-0.79c0.047-0.052,0.077-0.087,0.077-0.087L8.231,8.686 L8.229,8.68c0-0.009,0.006-0.037,0.053-0.123c0.065-0.119,0.22-0.335,0.224-0.343l0.001-0.001L7.242,9.117c0-0.001,0-0.001,0-0.002 c0.074-0.35,0.824-1.365,0.858-1.412L7.27,8.464c0-0.002-0.001-0.004-0.003-0.006C7.224,8.2,7.638,7.317,7.695,7.197 C7.697,7.193,7.698,7.19,7.7,7.187C7.398,7.488,7.18,7.815,7.173,7.823c0-0.291,0.223-0.709,0.223-0.709 C7.332,7.176,7.272,7.242,7.214,7.307C6.346,8.285,6.095,9.429,6.027,9.873c0,0,0,0.001-0.001,0.001 C5.881,9.963,5.97,9.854,5.9,10.022c-0.256,0.073-0.47,0.202-0.642,0.346c-0.287,0.237-0.459,0.511-0.513,0.605 c0.034-0.043,0.07-0.083,0.105-0.119C5.38,10.3,5.992,10.36,5.992,10.36s0.682,1.26,0.542,1.405 c-0.015,0.015-0.039,0.017-0.072,0.006c-0.09-0.031-0.149-0.017-0.182,0.024c-0.105,0.117-0.009,0.454-0.008,0.462l-1.809-0.778 c0.858-0.318,1.47-0.1,1.47-0.1c0,0.212,0.48,0.184,0.48,0.184l0-.001h0.001c0-0.196-0.365-0.43-0.365-0.43 s-0.327,0.136-0.716,0c-0.077-0.027-0.161-0.038-0.242-0.034C5.02,11.1,4.946,11.115,4.874,11.136 c-0.206,0.059-0.357,0.174-0.357,0.174v-0.001L4.515,11.31l1.131-4.139l0.119,1.591L8.06,3.367l0.039,4.037L14.354,0l-3.847,8.316 l0.023,0.041l2.713-1.954l-0.573,1.149l3.793-1.481l-3.539,2.585l6.612-0.81l-8.021,3.471l4.105-1.001L10.168,14.083z M11.512,11.319l0.001,0l-0.001-0.004C11.512,11.316,11.512,11.317,11.512,11.319z M9.515,12.181 c-0.095-0.395-0.223-0.757-0.371-1.076L8.2,13.182L9.515,12.181z M7.215,11.087c0.208-0.071,0.314-0.308,0.239-0.529l-0.208,0.071 c0.013,0.031,0.022,0.064,0.022,0.099c0,0.031-0.005,0.06-0.017,0.086l0.095,0.057c-0.032,0.051-0.081,0.095-0.141,0.12 c-0.036,0.016-0.074,0.022-0.112,0.022c-0.122,0-0.236-0.074-0.286-0.195c-0.004-0.01-0.01-0.022-0.012-0.034l-0.092,0.03 C6.778,11.038,7.008,11.158,7.215,11.087z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/celery.svg b/assets/lib/simple-icons/icons/celery.svg
index 91e3af81..172d031e 100644
--- a/assets/lib/simple-icons/icons/celery.svg
+++ b/assets/lib/simple-icons/icons/celery.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Celery icon</title><path d="M2.303 0A2.298 2.298 0 0 0 0 2.303v19.394A2.298 2.298 0 0 0 2.303 24h19.394A2.298 2.298 0 0 0 24 21.697V2.303A2.298 2.298 0 0 0 21.697 0zm8.177 3.072c4.098 0 7.028 1.438 7.68 1.764l-1.194 2.55c-2.442-1.057-4.993-1.41-5.672-1.41-1.574 0-2.17.922-2.17 1.763v8.494c0 .869.596 1.791 2.17 1.791.679 0 3.23-.38 5.672-1.41l1.194 2.496c-.435.271-3.637 1.818-7.68 1.818-1.112 0-4.64-.244-4.64-4.64V7.713c0-4.397 3.528-4.64 4.64-4.64z" /></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Celery</title><path d="M2.303 0A2.298 2.298 0 0 0 0 2.303v19.394A2.298 2.298 0 0 0 2.303 24h19.394A2.298 2.298 0 0 0 24 21.697V2.303A2.298 2.298 0 0 0 21.697 0zm8.177 3.072c4.098 0 7.028 1.438 7.68 1.764l-1.194 2.55c-2.442-1.057-4.993-1.41-5.672-1.41-1.574 0-2.17.922-2.17 1.763v8.494c0 .869.596 1.791 2.17 1.791.679 0 3.23-.38 5.672-1.41l1.194 2.496c-.435.271-3.637 1.818-7.68 1.818-1.112 0-4.64-.244-4.64-4.64V7.713c0-4.397 3.528-4.64 4.64-4.64z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/centos.svg b/assets/lib/simple-icons/icons/centos.svg
index 9253069e..3f16a9e0 100644
--- a/assets/lib/simple-icons/icons/centos.svg
+++ b/assets/lib/simple-icons/icons/centos.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" ><title>CentOS icon</title><path d="M12.076.066L8.883 3.28H3.348v5.434L0 12.01l3.349 3.298v5.39h5.374l3.285 3.236 3.285-3.236h5.43v-5.374L24 12.026l-3.232-3.252V3.321H15.31zm0 .749l2.49 2.506h-1.69v6.441l-.8.805-.81-.815V3.28H9.627zm-8.2 2.991h4.483L6.485 5.692l4.253 4.279v.654H9.94L5.674 6.423l-1.798 1.77zm5.227 0h1.635v5.415l-3.509-3.53zm4.302.043h1.687l1.83 1.842-3.517 3.539zm2.431 0h4.404v4.394l-1.83-1.842-4.241 4.267h-.764v-.69l4.261-4.287zm2.574 3.3l1.83 1.843v1.676h-5.327zm-12.735.013l3.515 3.462H3.876v-1.69zM3.348 9.454v1.697h6.377l.871.858-.782.77H3.35v1.786L.753 12.01zm17.42.068l2.488 2.503-2.533 2.55v-1.796h-6.41l-.75-.754.825-.83h6.38zm-9.502.978l.81.815.186-.188.614-.618v.686h.768l-.825.83.75.754h-.719v.808l-.842-.83-.741.73v-.707h-.7l.781-.77-.188-.186-.682-.672h.788zm-7.39 2.807h5.402l-3.603 3.55-1.798-1.772zm6.154 0h.708v.7l-4.404 4.338 1.852 1.824h-4.31v-4.342l1.798 1.77zm3.348 0h.715l4.317 4.343.186-.187 1.599-1.61v4.316h-4.366l1.853-1.825-.188-.185-4.116-4.054zm1.46 0h5.357v1.798l-1.785 1.796zm-2.83.191l.842.829v6.37h1.691l-2.532 2.495-2.533-2.495h1.79V14.23zm-1.27 1.251v5.42H8.939l-1.852-1.823zm2.64.097l3.552 3.499-1.853 1.825h-1.7z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>CentOS</title><path d="M12.076.066L8.883 3.28H3.348v5.434L0 12.01l3.349 3.298v5.39h5.374l3.285 3.236 3.285-3.236h5.43v-5.374L24 12.026l-3.232-3.252V3.321H15.31zm0 .749l2.49 2.506h-1.69v6.441l-.8.805-.81-.815V3.28H9.627zm-8.2 2.991h4.483L6.485 5.692l4.253 4.279v.654H9.94L5.674 6.423l-1.798 1.77zm5.227 0h1.635v5.415l-3.509-3.53zm4.302.043h1.687l1.83 1.842-3.517 3.539zm2.431 0h4.404v4.394l-1.83-1.842-4.241 4.267h-.764v-.69l4.261-4.287zm2.574 3.3l1.83 1.843v1.676h-5.327zm-12.735.013l3.515 3.462H3.876v-1.69zM3.348 9.454v1.697h6.377l.871.858-.782.77H3.35v1.786L.753 12.01zm17.42.068l2.488 2.503-2.533 2.55v-1.796h-6.41l-.75-.754.825-.83h6.38zm-9.502.978l.81.815.186-.188.614-.618v.686h.768l-.825.83.75.754h-.719v.808l-.842-.83-.741.73v-.707h-.7l.781-.77-.188-.186-.682-.672h.788zm-7.39 2.807h5.402l-3.603 3.55-1.798-1.772zm6.154 0h.708v.7l-4.404 4.338 1.852 1.824h-4.31v-4.342l1.798 1.77zm3.348 0h.715l4.317 4.343.186-.187 1.599-1.61v4.316h-4.366l1.853-1.825-.188-.185-4.116-4.054zm1.46 0h5.357v1.798l-1.785 1.796zm-2.83.191l.842.829v6.37h1.691l-2.532 2.495-2.533-2.495h1.79V14.23zm-1.27 1.251v5.42H8.939l-1.852-1.823zm2.64.097l3.552 3.499-1.853 1.825h-1.7z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ceph.svg b/assets/lib/simple-icons/icons/ceph.svg
new file mode 100644
index 00000000..f7956664
--- /dev/null
+++ b/assets/lib/simple-icons/icons/ceph.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Ceph</title><path d="M11.959.257A11.912 11.912 0 003.503 3.76 11.92 11.92 0 000 12.217a11.934 11.934 0 001.207 5.243c.72 1.474 1.888 2.944 3.208 4.044.86-.47 1.35-.99 1.453-1.545.1-.533-.134-1.107-.737-1.805a9.031 9.031 0 01-2.219-5.937c0-4.988 4.058-9.047 9.047-9.047h.08c4.99 0 9.048 4.059 9.048 9.047a9.03 9.03 0 01-2.218 5.936c-.599.693-.84 1.292-.735 1.83.108.556.595 1.068 1.449 1.522 1.322-1.1 2.489-2.57 3.209-4.046A11.898 11.898 0 0024 12.217a11.929 11.929 0 00-3.503-8.457A11.923 11.923 0 0012.04.257h-.041zm-.005 4.837a7.072 7.072 0 00-3.76 1.075A7.202 7.202 0 006.15 8.093a7.164 7.164 0 00-1.161 2.65 7.188 7.188 0 00.04 3.125 7.14 7.14 0 001.22 2.607c.154.207.326.396.509.597l.185.202.005.006c.007.007.017.016.026.027.635.738.957 1.533.957 2.36a3.4 3.4 0 01-1.788 2.989 11.924 11.924 0 002.685 1.087c.14-.088.614-.441 1.077-1.083a4.899 4.899 0 00.94-2.99 6.595 6.595 0 00-.49-2.37 6.717 6.717 0 00-1.302-2.033l-.002-.004-.124-.142c-.21-.245-.428-.497-.602-.792a4.104 4.104 0 01-.462-1.135 4.258 4.258 0 01-.024-1.85 4.25 4.25 0 01.686-1.564 4.216 4.216 0 013.432-1.773H12.042a4.202 4.202 0 013.432 1.773c.33.466.568 1.007.686 1.565a4.27 4.27 0 01-.023 1.849c-.093.39-.249.772-.463 1.135-.173.295-.391.547-.602.792l-.123.142-.004.004a6.736 6.736 0 00-1.301 2.033 6.607 6.607 0 00-.49 2.37 4.897 4.897 0 00.94 2.99c.463.642.937.995 1.076 1.083a11.776 11.776 0 002.687-1.087 3.399 3.399 0 01-1.789-2.988c0-.817.313-1.59.956-2.359.009-.012.02-.022.027-.03l.006-.004.184-.204c.183-.2.355-.39.51-.596a7.14 7.14 0 001.22-2.608 7.21 7.21 0 00.04-3.124 7.185 7.185 0 00-1.16-2.65 7.203 7.203 0 00-2.044-1.924 7.074 7.074 0 00-3.762-1.075h-.09zM12 9.97a2.365 2.365 0 00-2.362 2.361A2.364 2.364 0 0012 14.691c1.301 0 2.36-1.059 2.36-2.36A2.364 2.364 0 0012 9.968z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/cesium.svg b/assets/lib/simple-icons/icons/cesium.svg
index 42746c48..32d3ced7 100644
--- a/assets/lib/simple-icons/icons/cesium.svg
+++ b/assets/lib/simple-icons/icons/cesium.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Cesium icon</title><path d="M23.0283 10.216c-.3959 0-.7785.22-1.0792.6168l-3.7755 4.994c-.625.8275-1.5128 1.3012-2.4355 1.3012h-.0143c-.9236 0-1.8115-.4737-2.4355-1.3012l-3.7754-4.994c-.2998-.3969-.6823-.6168-1.0802-.6168-.3949 0-.7795.22-1.0781.6168l-3.7765 4.994c-.621.8204-1.4996 1.294-2.414 1.3012C3.088 21.186 7.2113 24 12.0004 24 18.6268 24 24 18.6276 24 12.001c0-.4705-.0338-.9308-.086-1.382-.2638-.2598-.5697-.403-.8857-.403m-7.019-2.5972c-.6936 0-1.2542-.5616-1.2542-1.2541s.5606-1.2541 1.2541-1.2541c.6925 0 1.254.5616 1.254 1.254s-.5615 1.2542-1.254 1.2542M12.0005 0C5.3732 0 0 5.3714 0 12.001c0 1.0536.1504 2.0704.406 3.0463.2272.175.4788.2762.7366.2762.3979 0 .7804-.2189 1.0812-.6138l3.7754-4.996c.623-.8285 1.5129-1.3021 2.4335-1.3021.9226 0 1.8095.4736 2.4355 1.3021l3.6323 4.8037.1565.1923c.2997.3939.6812.6107 1.074.6138.3918-.003.7743-.22 1.072-.6138l.1595-.1923 3.6323-4.8037c.624-.8285 1.5118-1.3021 2.4335-1.3021.1462 0 .2935.0163.4367.0388C21.9522 3.5557 17.3922 0 12.0005 0"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Cesium</title><path d="M23.0283 10.216c-.3959 0-.7785.22-1.0792.6168l-3.7755 4.994c-.625.8275-1.5128 1.3012-2.4355 1.3012h-.0143c-.9236 0-1.8115-.4737-2.4355-1.3012l-3.7754-4.994c-.2998-.3969-.6823-.6168-1.0802-.6168-.3949 0-.7795.22-1.0781.6168l-3.7765 4.994c-.621.8204-1.4996 1.294-2.414 1.3012C3.088 21.186 7.2113 24 12.0004 24 18.6268 24 24 18.6276 24 12.001c0-.4705-.0338-.9308-.086-1.382-.2638-.2598-.5697-.403-.8857-.403m-7.019-2.5972c-.6936 0-1.2542-.5616-1.2542-1.2541s.5606-1.2541 1.2541-1.2541c.6925 0 1.254.5616 1.254 1.254s-.5615 1.2542-1.254 1.2542M12.0005 0C5.3732 0 0 5.3714 0 12.001c0 1.0536.1504 2.0704.406 3.0463.2272.175.4788.2762.7366.2762.3979 0 .7804-.2189 1.0812-.6138l3.7754-4.996c.623-.8285 1.5129-1.3021 2.4335-1.3021.9226 0 1.8095.4736 2.4355 1.3021l3.6323 4.8037.1565.1923c.2997.3939.6812.6107 1.074.6138.3918-.003.7743-.22 1.072-.6138l.1595-.1923 3.6323-4.8037c.624-.8285 1.5118-1.3021 2.4335-1.3021.1462 0 .2935.0163.4367.0388C21.9522 3.5557 17.3922 0 12.0005 0"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/cevo.svg b/assets/lib/simple-icons/icons/cevo.svg
deleted file mode 100644
index 4be66f0f..00000000
--- a/assets/lib/simple-icons/icons/cevo.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 24 24"><title>CEVO icon</title><path d="M3.5 6h12l6 10.3L24 12 18 1.6H6L3.5 6zm-.9 1.5L0 12l6 10.4h12l2.6-4.5-2.5-4.3-2.6 4.5h-7L5 12l2.6-4.5h-5z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/chai.svg b/assets/lib/simple-icons/icons/chai.svg
new file mode 100644
index 00000000..4a5a310d
--- /dev/null
+++ b/assets/lib/simple-icons/icons/chai.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Chai</title><path d="M22.2235 5.8311 12.2307.0619a.4617.4617 0 0 0-.4615 0L1.7765 5.8311a.4615.4615 0 0 0-.2308.3997v11.5385c0 .1649.088.3173.2308.3997l9.9928 5.7692a.4617.4617 0 0 0 .4615 0l9.9928-5.7692a.4615.4615 0 0 0 .2308-.3997V6.2308a.4618.4618 0 0 0-.2309-.3997zm-.6304 11.7074L12 23.0769l-9.5931-5.5385V6.4615L12 .9231l9.5931 5.5385v11.0769zM11.2957 8.1858c.3873-.2769.7918-.4965 1.2137-.6588s.8427-.2434 1.2624-.2434c.2596 0 .5019.0379.7269.1136.225.0757.4197.185.5841.3278s.2942.3202.3894.5322c.0952.212.1428.4543.1428.7269 0 .3288-.0649.6555-.1947.98-.1298.3245-.304.6252-.5225.9022s-.4706.5192-.7561.7269-.582.357-.8892.4478l-.1363-.2272a2.0872 2.0872 0 0 0 .4998-.3505 2.2747 2.2747 0 0 0 .3894-.4835c.1082-.1796.1915-.37.2499-.5712a2.1893 2.1893 0 0 0 .0876-.6133c0-.238-.0346-.463-.1038-.675-.0692-.212-.1709-.397-.305-.5549-.1341-.1579-.2996-.2823-.4965-.3732-.1969-.0909-.423-.1363-.6782-.1363-.3115 0-.5971.0606-.8567.1817-.2596.1212-.4933.2845-.701.49s-.3883.4413-.5419.7075a4.874 4.874 0 0 0-.3829.8373 5.6168 5.6168 0 0 0-.2304.8859c-.0519.2986-.0779.5798-.0779.8438 0 .2683.0281.5452.0844.8308s.1385.5668.2466.8438c.1082.2769.2423.5387.4024.7853.1601.2466.3451.463.5549.649a2.583 2.583 0 0 0 .701.4446c.2575.1103.5376.1655.8405.1655.2077 0 .41-.0281.6069-.0844a2.9874 2.9874 0 0 0 .5679-.2272 3.2094 3.2094 0 0 0 .516-.3375 3.9668 3.9668 0 0 0 .4511-.4219l.2142.2077c-.1904.251-.4165.4922-.6782.7237a5.5434 5.5434 0 0 1-.847.6166 4.6241 4.6241 0 0 1-.9508.4284c-.331.106-.6588.159-.9833.159-.3159 0-.6133-.0552-.8924-.1655-.2791-.1103-.5355-.2596-.7691-.4478s-.4424-.4089-.6263-.662c-.1839-.2531-.3397-.5225-.4673-.8081s-.225-.5798-.2921-.8827-.101-.5992-.101-.8891c0-.4197.0703-.8513.2109-1.2948s.3343-.874.5809-1.2916.5376-.8124.873-1.1845c.3353-.3721.6966-.6967 1.0839-.9736z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/chainlink.svg b/assets/lib/simple-icons/icons/chainlink.svg
new file mode 100644
index 00000000..547a2258
--- /dev/null
+++ b/assets/lib/simple-icons/icons/chainlink.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Chainlink</title><path d="M12 0L9.798 1.266l-6 3.468L1.596 6v12l2.202 1.266 6.055 3.468L12.055 24l2.202-1.266 5.945-3.468L22.404 18V6l-2.202-1.266-6-3.468zM6 15.468V8.532l6-3.468 6 3.468v6.936l-6 3.468z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/chakraui.svg b/assets/lib/simple-icons/icons/chakraui.svg
new file mode 100644
index 00000000..ec6e7982
--- /dev/null
+++ b/assets/lib/simple-icons/icons/chakraui.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Chakra UI</title><path d="M12 0C5.352 0 0 5.352 0 12s5.352 12 12 12 12-5.352 12-12S18.648 0 12 0zm2.8 4.333c.13-.004.248.136.171.278l-3.044 5.58a.187.187 0 00.164.276h5.26c.17 0 .252.207.128.323l-9.22 8.605c-.165.154-.41-.063-.278-.246l4.364-6.021a.187.187 0 00-.151-.296H6.627a.187.187 0 01-.131-.32l8.18-8.123a.182.182 0 01.125-.056z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/chartdotjs.svg b/assets/lib/simple-icons/icons/chartdotjs.svg
new file mode 100644
index 00000000..ff83e7f4
--- /dev/null
+++ b/assets/lib/simple-icons/icons/chartdotjs.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Chart.js</title><path d="M12 0L1.605 6v12L12 24l10.395-6V6zm0 1.41l9.172 5.295v10.59L12 22.59l-9.172-5.295V6.705zM5.902 8.334c-1.306 0-1.983.956-2.574 2.41v6.262L12 22.014l8.672-5.008v-5.971c-.447-.264-.894-.412-1.336-.412-4.275 0-3.97 4.885-6.717 5.8-2.748.917-3.511-8.089-6.717-8.089zm12.364.457c-2.9 0-2.137 4.732-5.342 4.732-1.63 0-2.52-1.317-3.477-1.981.148.326.3.655.442.98.467 1.068.922 2.09 1.379 2.734.228.322.455.541.644.644a.595.595 0 0 0 .549.05c.558-.187.968-.571 1.36-1.112.39-.541.74-1.228 1.154-1.916.413-.688.894-1.385 1.59-1.918.695-.534 1.607-.881 2.77-.881.465 0 .908.136 1.337.352v-.121c-.633-.849-1.348-1.563-2.406-1.563zm-6.68.152c-.868 0-1.491.82-2.076 2.06.094.055.192.106.277.167 1.06.761 1.798 1.853 3.137 1.853.678 0 1.067-.218 1.418-.585-.722-1.546-1.432-3.492-2.756-3.495Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/chartmogul.svg b/assets/lib/simple-icons/icons/chartmogul.svg
index a270b9ae..744dc66f 100644
--- a/assets/lib/simple-icons/icons/chartmogul.svg
+++ b/assets/lib/simple-icons/icons/chartmogul.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>ChartMogul icon</title><path d="M10.621 19.89V8.75L2.867 19.89H0V4.11h2.758v11.112l7.754-11.113h2.867v11.14L21.16 4.11H24v15.782h-2.73V8.75l-7.755 11.14Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ChartMogul</title><path d="M10.621 19.89V8.75L2.867 19.89H0V4.11h2.758v11.112l7.754-11.113h2.867v11.14L21.16 4.11H24v15.782h-2.73V8.75l-7.755 11.14Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/chase.svg b/assets/lib/simple-icons/icons/chase.svg
index 0ba212fa..57538afc 100644
--- a/assets/lib/simple-icons/icons/chase.svg
+++ b/assets/lib/simple-icons/icons/chase.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Chase icon</title><path d="M0 15.415c0 .468.38.85.848.85h5.937V.575L0 7.72v7.695m15.416 8.582c.467 0 .846-.38.846-.849v-5.937H.573l7.146 6.785h7.697M24 8.587a.844.844 0 0 0-.847-.846h-5.938V23.43l6.782-7.148L24 8.586M8.585.003a.847.847 0 0 0-.847.847v5.94h15.688L16.282.003H8.585Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Chase</title><path d="M0 15.415c0 .468.38.85.848.85h5.937V.575L0 7.72v7.695m15.416 8.582c.467 0 .846-.38.846-.849v-5.937H.573l7.146 6.785h7.697M24 8.587a.844.844 0 0 0-.847-.846h-5.938V23.43l6.782-7.148L24 8.586M8.585.003a.847.847 0 0 0-.847.847v5.94h15.688L16.282.003H8.585Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/chatbot.svg b/assets/lib/simple-icons/icons/chatbot.svg
new file mode 100644
index 00000000..03a3f11b
--- /dev/null
+++ b/assets/lib/simple-icons/icons/chatbot.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ChatBot</title><path d="M11.999 0c-2.25 0-4.5.06-6.6.21a5.57 5.57 0 00-5.19 5.1c-.24 3.21-.27 6.39-.06 9.6a5.644 5.644 0 005.7 5.19h3.15v-3.9h-3.15c-.93.03-1.74-.63-1.83-1.56-.18-3-.15-6 .06-9 .06-.84.72-1.47 1.56-1.53 2.04-.15 4.2-.21 6.36-.21s4.32.09 6.36.18c.81.06 1.5.69 1.56 1.53.24 3 .24 6 .06 9-.12.93-.9 1.62-1.83 1.59h-3.15l-6 3.9V24l6-3.9h3.15c2.97.03 5.46-2.25 5.7-5.19.21-3.18.18-6.39-.03-9.57a5.57 5.57 0 00-5.19-5.1c-2.13-.18-4.38-.24-6.63-.24zm-5.04 8.76c-.36 0-.66.3-.66.66v2.34c0 .33.18.63.48.78 1.62.78 3.42 1.2 5.22 1.26 1.8-.06 3.6-.48 5.22-1.26.3-.15.48-.45.48-.78V9.42c0-.09-.03-.15-.09-.21a.648.648 0 00-.87-.36c-1.5.66-3.12 1.02-4.77 1.05-1.65-.03-3.27-.42-4.77-1.08a.566.566 0 00-.24-.06z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/checkio.svg b/assets/lib/simple-icons/icons/checkio.svg
new file mode 100644
index 00000000..e290150b
--- /dev/null
+++ b/assets/lib/simple-icons/icons/checkio.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>CheckiO</title><path d="M10.846 8.886L24 2.932v13.82L9.621 21.068 0 14.09l3.35-9.956 7.496 4.751v.001zm-4.582 2.067l3.923-1.768-6.065-3.85 2.142 5.618zm-5.393 2.44l4.842-2.187-2.179-5.717-2.662 7.904H.871zm22.526 2.54V4.256l-5.96 7.37 5.96 4.307zm-12.865 4.233l12.497-3.758-5.973-4.316-6.524 8.074zM.94 14.029l8.092 5.867-3.106-8.124L.94 14.029zm21.722-9.826c-5.085 2.296-10.163 4.6-15.25 6.895l9.445.284 5.805-7.178v-.001zM9.775 20.143l6.608-8.173-9.844-.29 3.236 8.462v.001z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/checkmarx.svg b/assets/lib/simple-icons/icons/checkmarx.svg
index 48df0fdd..d1185622 100644
--- a/assets/lib/simple-icons/icons/checkmarx.svg
+++ b/assets/lib/simple-icons/icons/checkmarx.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Checkmarx icon</title><path d="M6.544.12A6.553 6.553 0 0 0 0 6.664v10.674a6.551 6.551 0 0 0 6.544 6.542h10.912A6.551 6.551 0 0 0 24 17.338v-.831a2.193 2.193 0 0 0-4.388 0v.83c0 1.19-.967 2.157-2.156 2.157H6.544a2.16 2.16 0 0 1-2.158-2.156V6.748c0-1.19.969-2.16 2.158-2.16 3.843.004 7.814-.009 11.612.001.556.138.892.445 1.058.848.193.47.343 1.118-.404 1.748l-6.26 4.596-1.892-2.441a2.191 2.191 0 0 0-3.075-.391 2.191 2.191 0 0 0-.391 3.076l3.198 4.133a2.197 2.197 0 0 0 3.035.424l7.252-5.301a56.68 56.68 0 0 0 1.22-.977c2.106-1.926 2.517-4.393 1.627-6.553C22.603 1.51 20.268.12 17.435.12Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Checkmarx</title><path d="M6.544.12A6.553 6.553 0 0 0 0 6.664v10.674a6.551 6.551 0 0 0 6.544 6.542h10.912A6.551 6.551 0 0 0 24 17.338v-.831a2.193 2.193 0 0 0-4.388 0v.83c0 1.19-.967 2.157-2.156 2.157H6.544a2.16 2.16 0 0 1-2.158-2.156V6.748c0-1.19.969-2.16 2.158-2.16 3.843.004 7.814-.009 11.612.001.556.138.892.445 1.058.848.193.47.343 1.118-.404 1.748l-6.26 4.596-1.892-2.441a2.191 2.191 0 0 0-3.075-.391 2.191 2.191 0 0 0-.391 3.076l3.198 4.133a2.197 2.197 0 0 0 3.035.424l7.252-5.301a56.68 56.68 0 0 0 1.22-.977c2.106-1.926 2.517-4.393 1.627-6.553C22.603 1.51 20.268.12 17.435.12Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/chef.svg b/assets/lib/simple-icons/icons/chef.svg
index e94c9cbc..87080f09 100644
--- a/assets/lib/simple-icons/icons/chef.svg
+++ b/assets/lib/simple-icons/icons/chef.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Chef icon</title><path d="M12.03 0C6.94 0 2.57 3.17.82 7.65l1.91.77a10 10 0 0 1 9.3-6.4c2.24 0 4.32.77 5.96 1.97l1.2-1.64A11.96 11.96 0 0 0 12.03 0zm0 2.3a9.76 9.76 0 0 0-9.08 6.23l1.91.7a7.62 7.62 0 0 1 7.17-4.91zm3.55.7l-.76 1.92a7.47 7.47 0 0 1 4.75 5.63h2.08a9.7 9.7 0 0 0-6.07-7.54zm-3.55 1.6a7.44 7.44 0 1 0 7.32 8.9h-2.08a5.5 5.5 0 0 1-5.24 3.94 5.39 5.39 0 0 1-5.42-5.41 5.39 5.39 0 0 1 5.42-5.41 5.4 5.4 0 0 1 5.2 3.93h2.07a7.35 7.35 0 0 0-7.27-5.96zm10.22 1.09L20.5 6.78a9.5 9.5 0 0 1 1.42 3.77H24a11.56 11.56 0 0 0-1.75-4.86zM11.97 6.83a5.22 5.22 0 0 0-4.7 7.27l1.97-.87a2.97 2.97 0 0 1-.27-1.2c0-1.64 1.36-3.01 3-3.01zm1.92.39l-.77 2.02c.66.27 1.15.7 1.53 1.31h2.3a5.04 5.04 0 0 0-3.06-3.33zM0 12.02c0 1.65.33 3.29 1.04 4.87l1.8-.82a10.49 10.49 0 0 1-.82-4.04zm2.3 0c0 4.1 2.51 7.6 6.12 9.03l.76-1.92a7.63 7.63 0 0 1-4.86-7.1zm12.3 1.48c-.33.6-.82 1.1-1.48 1.31l.77 2.03a5.04 5.04 0 0 0 3.06-3.34zm4.97 0a7.73 7.73 0 0 1-7.54 6.24v2.02a9.71 9.71 0 0 0 9.62-8.26zm2.35 0a10.1 10.1 0 0 1-9.9 8.53c-2.73 0-5.24-1.15-7.04-2.95L3.55 20.5c2.19 2.19 5.2 3.5 8.53 3.5A12 12 0 0 0 24 13.5zm-12.02.66l-1.53 1.53a5.21 5.21 0 0 0 3.66 1.53v-2.19a3.02 3.02 0 0 1-2.13-.87z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Chef</title><path d="M12.03 0C6.94 0 2.57 3.17.82 7.65l1.91.77a10 10 0 0 1 9.3-6.4c2.24 0 4.32.77 5.96 1.97l1.2-1.64A11.96 11.96 0 0 0 12.03 0zm0 2.3a9.76 9.76 0 0 0-9.08 6.23l1.91.7a7.62 7.62 0 0 1 7.17-4.91zm3.55.7l-.76 1.92a7.47 7.47 0 0 1 4.75 5.63h2.08a9.7 9.7 0 0 0-6.07-7.54zm-3.55 1.6a7.44 7.44 0 1 0 7.32 8.9h-2.08a5.5 5.5 0 0 1-5.24 3.94 5.39 5.39 0 0 1-5.42-5.41 5.39 5.39 0 0 1 5.42-5.41 5.4 5.4 0 0 1 5.2 3.93h2.07a7.35 7.35 0 0 0-7.27-5.96zm10.22 1.09L20.5 6.78a9.5 9.5 0 0 1 1.42 3.77H24a11.56 11.56 0 0 0-1.75-4.86zM11.97 6.83a5.22 5.22 0 0 0-4.7 7.27l1.97-.87a2.97 2.97 0 0 1-.27-1.2c0-1.64 1.36-3.01 3-3.01zm1.92.39l-.77 2.02c.66.27 1.15.7 1.53 1.31h2.3a5.04 5.04 0 0 0-3.06-3.33zM0 12.02c0 1.65.33 3.29 1.04 4.87l1.8-.82a10.49 10.49 0 0 1-.82-4.04zm2.3 0c0 4.1 2.51 7.6 6.12 9.03l.76-1.92a7.63 7.63 0 0 1-4.86-7.1zm12.3 1.48c-.33.6-.82 1.1-1.48 1.31l.77 2.03a5.04 5.04 0 0 0 3.06-3.34zm4.97 0a7.73 7.73 0 0 1-7.54 6.24v2.02a9.71 9.71 0 0 0 9.62-8.26zm2.35 0a10.1 10.1 0 0 1-9.9 8.53c-2.73 0-5.24-1.15-7.04-2.95L3.55 20.5c2.19 2.19 5.2 3.5 8.53 3.5A12 12 0 0 0 24 13.5zm-12.02.66l-1.53 1.53a5.21 5.21 0 0 0 3.66 1.53v-2.19a3.02 3.02 0 0 1-2.13-.87z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/chemex.svg b/assets/lib/simple-icons/icons/chemex.svg
new file mode 100644
index 00000000..4a1dfcfb
--- /dev/null
+++ b/assets/lib/simple-icons/icons/chemex.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Chemex</title><path d="M22.665.124c-.741 0-1.36.593-1.36 1.334 0 .742.619 1.335 1.36 1.335A1.33 1.33 0 0 0 24 1.458 1.33 1.33 0 0 0 22.665.124zM1.112.148s5.314 6.748 5.982 7.91c.89 1.557.84 2.076-.124 3.954C6.352 13.2 0 23.876 0 23.876h2.694S8.7 13.668 9.516 12.284c.89-1.508.89-3.164.148-4.474C9.071 6.772 3.831.148 3.831.148zm16.956 0s-5.24 6.624-5.833 7.662c-.717 1.286-.766 2.917.148 4.474.816 1.384 6.822 11.592 6.822 11.592h2.67c0-.024-6.328-10.677-6.946-11.888-.964-1.854-1.013-2.373-.123-3.93.667-1.162 5.98-7.91 5.98-7.91zm4.597.223c.593 0 1.088.494 1.088 1.087 0 .594-.495 1.088-1.088 1.088a1.097 1.097 0 0 1-1.087-1.088A1.08 1.08 0 0 1 22.665.371zm-.593.296V2.15h.272v-.519h.37l.273.52h.321l-.297-.544a.453.453 0 0 0 .297-.446c0-.296-.198-.494-.52-.494zm.321.272h.445c.149 0 .223.05.223.222 0 .173-.124.223-.223.223h-.445z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/chevrolet.svg b/assets/lib/simple-icons/icons/chevrolet.svg
new file mode 100644
index 00000000..ce88b6cf
--- /dev/null
+++ b/assets/lib/simple-icons/icons/chevrolet.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Chevrolet</title><path d="M23.905 9.784H15.92V8.246a.157.157 0 00-.157-.158H8.238a.157.157 0 00-.157.158v1.538H2.358c-.087 0-.193.07-.237.158L.02 14.058c-.045.088-.011.157.077.157H8.08v1.54c0 .086.07.157.157.157h7.525c.087 0 .157-.07.157-.157v-1.54h5.723c.087 0 .193-.07.238-.157l2.1-4.116c.045-.087.011-.158-.076-.158m-2.494.996l-1.244 2.437h-5.232v1.708H9.07v-1.708H2.595L3.84 10.78h5.232V9.073h5.864v1.707z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/chinaeasternairlines.svg b/assets/lib/simple-icons/icons/chinaeasternairlines.svg
new file mode 100644
index 00000000..18d3938b
--- /dev/null
+++ b/assets/lib/simple-icons/icons/chinaeasternairlines.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>China Eastern Airlines</title><path d="M11.572 2.383c-1.846 0-2.245.238-2.962 1.205-.38.516-3.568 4.915-5.009 6.898-.18.236-.446.486-1.03.486H0v.004c3.05 8.61 6.324 10.64 9.602 10.64h5.178c.07 0 .146-.08-.041-.124-3.805-.953-7.57-3.984-7.589-6.962.066 2.464 5.255 3.315 10.876 4.016.098.011.093-.065.063-.12l-.17-.293c-.02-.039-.043-.068-.124-.088-3.094-.787-6.242-1.938-6.242-3.01 0-2.032 5.272-4.042 11.27-4.96.195-.04.29-.076.42-.18.17-.136.536-.433.695-.554.096-.085.061-.11.025-.11-.16 0-.326.004-.485.01-7.898.219-15.544 2.008-16.253 4.55-.002.014-.01.027-.014.04.937-4.652 7.198-9.162 15.008-11.28.18-.052.239-.168.014-.168Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/chinasouthernairlines.svg b/assets/lib/simple-icons/icons/chinasouthernairlines.svg
new file mode 100644
index 00000000..c3ef3b15
--- /dev/null
+++ b/assets/lib/simple-icons/icons/chinasouthernairlines.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>China Southern Airlines</title><path d="M16.4269 9.8628v.6196c.3071-.003.5555.1004.5555.1004-.7588.2595-1.1804 1.0664-1.1804 1.8426v2.6228c-.0417.0354-.0665.0665-.0941.0985-.1116-.344-.4517-.7569-.8049-.9524v-2.029c0-.7272.5308-1.5219 1.2808-1.6708v-.6351c-.2426-.0558-.426-.275-.426-.5342a.549.549 0 0 1 .5493-.5516.5506.5506 0 0 1 .5526.5516c0 .2591-.1868.4847-.4328.5376m-3.0299-.0035v.6355c.7491.149 1.2828.9432 1.2828 1.6704v2.0295c-.3556.195-.6943.6079-.8049.9519-.03-.0316-.0548-.0631-.0946-.0985v-2.6228c0-.7913-.4216-1.583-1.1794-1.8422 0 0 .247-.1038.5516-.1004v-.6234a.55.55 0 0 1-.425-.5342c0-.3057.243-.5511.5497-.5511a.5506.5506 0 0 1 .5516.5511c0 .2596-.1848.4789-.4318.5342m1.5162-.4217l-.003.5948c.293.0393.555.244.6448.4861-.3478.2261-.6297.5691-.7656.9946-.1334-.4255-.4157-.7685-.7636-.9946.1096-.242.3532-.4468.6433-.486v-.5968a.5497.5497 0 0 1-.4264-.5357.5496.5496 0 0 1 .5497-.5516c.3046 0 .553.246.553.5516 0 .262-.1848.4828-.4322.5376m-.1209 7.5837c1.7156 0 2.1013-1.4385 2.1542-1.8053v-.4846c-.5313.132-1.0053.4133-1.327.8354-.114-.493-.426-.914-.8272-1.1867-.4036.2727-.716.6938-.832 1.1867-.3188-.422-.7952-.7035-1.3245-.8354v.4846c.0514.3668.439 1.8053 2.1565 1.8053m-4.2333-5.006c-.0068-.7307.4949-1.326 1.5195-1.326.6783 0 1.488.5682 1.488 2.0266v2.1628c-.294-.193-.7034-.3702-.9266-.3736v-2.0163c0-.7724-.5546-.998-.815-.998.1474.1349.2362.3018.2362.5245 0 .41-.3416.7496-.753.7496-.411 0-.7306-.3028-.749-.7496m8.4666 0c.0043-.7307-.4978-1.326-1.52-1.326-.6793 0-1.4905.5682-1.4905 2.0266v2.1628c.295-.193.704-.3702.9252-.3736v-2.0163c0-.7724.5575-.998.8151-.998-.146.1349-.2343.3018-.2343.5245 0 .41.3406.7496.7525.7496.4128 0 .7326-.3028.752-.7496M15.9702 10.03c-.263-.1286-.4473-.3973-.4473-.705 0-.4332.3517-.7864.784-.7864.4347 0 .7855.3532.7855.7865a.7812.7812 0 0 1-.4469.7068v.2203c.2431.0252.5357.1266.7147.2183a4.0304 4.0304 0 0 1 .292-.0126c.9898 0 1.685.654 1.685 1.5574 0 .5565-.4987 1.065-1.0581 1.065-.5628 0-1.0722-.5517-.9708-1.1067 0 0-.0568.1916-.0568.4255V15.23c-.0247.323-.458 2.1056-2.4593 2.1056-2.0023 0-2.4374-1.7825-2.4617-2.1056v-2.831c0-.2338-.0572-.4254-.0572-.4254.1077.5336-.4086 1.1066-.9675 1.1066-.5637 0-1.0605-.5084-1.0605-1.065 0-.9033.6933-1.5573 1.6874-1.5573.1043 0 .2086.0068.2867.0126.182-.0917.489-.2003.7166-.2183v-.2232c-.2605-.1276-.4454-.3963-.4454-.704 0-.4332.3537-.7864.7865-.7864.4347 0 .7864.3532.7864.7865a.784.784 0 0 1-.4497.7093v.295c.066.0213.1353.0465.2003.0766.1218-.262.3668-.4667.6438-.5584V9.609c-.2663-.1271-.4487-.3954-.4487-.7093 0-.4352.3503-.785.783-.785a.7836.7836 0 0 1 .7855.785c0 .3139-.1815.5822-.4478.7093v.2387c.275.0902.5167.2964.638.5584.062-.03.1363-.0553.2023-.0767zM24 3.434h-6.8636L0 20.566h17.1364Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/chocolatey.svg b/assets/lib/simple-icons/icons/chocolatey.svg
index d143ebe1..3cc55e06 100644
--- a/assets/lib/simple-icons/icons/chocolatey.svg
+++ b/assets/lib/simple-icons/icons/chocolatey.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Chocolatey icon</title><path d="M0 1.249l1.439 3.18L0 6.926l1.439 2.5L0 11.923l1.439 2.424L0 16.845l1.439 2.5L0 22.75l2.8-.91c6.3.01 12.696.006 18.096 0l3.104.91-2.044-3.635 1.136-1.892-2.196-2.272-.004-.017V2.005c-6.551-.001-12.243 0-18.091 0zm19.688 1.968v7.03l-.23-.898-1.438-4.39-3.56.605-1.89-2.343zm-11.695.004h4.563L9.539 4.428zm2.86 3.68a3.903 3.903 0 0 1 1.64.254c1.968.757 1.286 2.8.15 4.012-.378.378-1.21.227-.605-.908.228-.454.454-1.363-.227-1.59-1.515-.53-3.255.682-3.634 2.271-.378 1.363.606 2.801 2.347 2.423 1.439-.303 2.802-1.288 3.332-1.742.53-.455.907.38.301 1.288-.68.908-1.74 1.968-2.65 2.574-3.558 2.423-6.662-.758-5.375-4.392.677-1.845 2.454-4.041 4.72-4.19zm6.527 2.031a.66.66 0 0 1 .454.182c.324.326.204.972-.268 1.445-.473.474-1.121.593-1.446.268-.325-.326-.205-.972.267-1.445.292-.292.666-.461.993-.45zm-.42 3.233a.66.66 0 0 1 .454.182c.325.325.206.973-.268 1.446-.473.473-1.12.592-1.445.268-.324-.326-.205-.972.268-1.445.291-.292.664-.462.99-.451Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Chocolatey</title><path d="M0 1.249l1.439 3.18L0 6.926l1.439 2.5L0 11.923l1.439 2.424L0 16.845l1.439 2.5L0 22.75l2.8-.91c6.3.01 12.696.006 18.096 0l3.104.91-2.044-3.635 1.136-1.892-2.196-2.272-.004-.017V2.005c-6.551-.001-12.243 0-18.091 0zm19.688 1.968v7.03l-.23-.898-1.438-4.39-3.56.605-1.89-2.343zm-11.695.004h4.563L9.539 4.428zm2.86 3.68a3.903 3.903 0 0 1 1.64.254c1.968.757 1.286 2.8.15 4.012-.378.378-1.21.227-.605-.908.228-.454.454-1.363-.227-1.59-1.515-.53-3.255.682-3.634 2.271-.378 1.363.606 2.801 2.347 2.423 1.439-.303 2.802-1.288 3.332-1.742.53-.455.907.38.301 1.288-.68.908-1.74 1.968-2.65 2.574-3.558 2.423-6.662-.758-5.375-4.392.677-1.845 2.454-4.041 4.72-4.19zm6.527 2.031a.66.66 0 0 1 .454.182c.324.326.204.972-.268 1.445-.473.474-1.121.593-1.446.268-.325-.326-.205-.972.267-1.445.292-.292.666-.461.993-.45zm-.42 3.233a.66.66 0 0 1 .454.182c.325.325.206.973-.268 1.446-.473.473-1.12.592-1.445.268-.324-.326-.205-.972.268-1.445.291-.292.664-.462.99-.451Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/chromecast.svg b/assets/lib/simple-icons/icons/chromecast.svg
new file mode 100644
index 00000000..6b251ed8
--- /dev/null
+++ b/assets/lib/simple-icons/icons/chromecast.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Chromecast</title><path d="M0 18.5455v3.2727h3.2727c0-1.811-1.4618-3.2727-3.2727-3.2727zm0-4.3637v2.1818c3.011 0 5.4545 2.4437 5.4545 5.4546h2.1819c0-4.2218-3.4146-7.6364-7.6364-7.6364zm0-4.3636V12c5.4218 0 9.8182 4.3964 9.8182 9.8182H12c0-6.6327-5.3782-12-12-12zm21.8182-7.6364H2.1818C.9818 2.1818 0 3.1636 0 4.3636v3.2728h2.1818V4.3636h19.6364v15.2728h-7.6364v2.1818h7.6364c1.2 0 2.1818-.9818 2.1818-2.1818V4.3636c0-1.2-.9818-2.1818-2.1818-2.1818Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/chrysler.svg b/assets/lib/simple-icons/icons/chrysler.svg
new file mode 100644
index 00000000..658b2574
--- /dev/null
+++ b/assets/lib/simple-icons/icons/chrysler.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Chrysler</title><path d="M23.9996 12.1455c0-.0003.0004-.0007.0004-.001l-.0007.0003c-.0039-.0173-.0638-.0248-.172-.0258l-1.595-.0216c-2.4391-.0216-6.9786-.0638-7.1847-.0638h-.0501a1.8954 1.8954 0 0 0-.7028.0982l-.0913.0275a3.2546 3.2546 0 0 1-.795.1718c-.2837.0108-1.3633.0088-1.4085.0088s-1.1258 0-1.4085-.0078a3.2434 3.2434 0 0 1-.795-.1718l-.0913-.0275a1.9045 1.9045 0 0 0-.7037-.0982h-.0441c-.2071 0-4.7466.0206-7.1847.0432l-1.6008.0196c-.1089 0-.1727.0088-.1718.0265l.0913.0226c.336.069.6771.1107 1.0198.1247.6527.0128 5.4346.1325 5.5495.1345.2584-.0067.5155.039.7557.1343h1.4968s-.6046.0353-.6134.0726h-.0373c-.1512 0-.6066 0-.8647-.0118 0 0-.0186.0726.2444.0726.0923.0618.1884.1207.2758.1698h1.2868s-.5055.0304-.5153.0677c-.0599 0-.2797-.0059-.4908-.0118l-.2945-.0088s-.0147.0638.2267.0648l.0412.0255c.4833.217.9953.3632 1.5204.4338.1992.0382.4004.0648.6027.0795 0 0 .2444.0216.2022.0206a9.6487 9.6487 0 0 1-1.701-.2218 4.3198 4.3198 0 0 1-1.276-.5398 1.3917 1.3917 0 0 0-.7381-.2316c-.1698-.0118-5.6486-.2277-5.6604-.2277a5.3434 5.3434 0 0 1-1.0434-.1404L0 12.1258c0 .0147.0383.055.0707.0844.1688.1502.8097.4613 1.1837.5526.6488.157 4.6445.6655 5.3542.745l.3926.0442c1.0728.1158 2.4214.264 3.1085.3337a.8442.8442 0 0 0 .3926-.0216A4.1449 4.1449 0 0 1 12 13.606a4.3124 4.3124 0 0 1 1.5027.2581.8354.8354 0 0 0 .3877.0216c.6871-.0687 2.0396-.2189 3.1035-.3367l.3975-.0442c.7096-.0785 4.7044-.5673 5.3532-.7244.3749-.0903 1.0149-.4024 1.1847-.5526.0303-.0274.067-.0653.0697-.0812l.001-.0001c0-.0004-.0004-.0007-.0004-.001zm-12.2646.9952c-.795 0-1.5812-.0108-1.8099-.0677-.5447-.1354-.7989-.3838-.8421-.4593-.0432-.0756-.0324-.0746.0353-.0746h5.7595c.0677 0 .0726.0069.0344.0746-.0383.0677-.2945.3239-.8412.4593-.2287.0569-1.0149.0658-1.8099.0677h-.5261zm12.1884-.9707a5.345 5.345 0 0 1-1.0443.1413c-.0118 0-5.4965.1963-5.6614.21a1.3917 1.3917 0 0 0-.7381.2316 4.3198 4.3198 0 0 1-1.276.5398 9.6487 9.6487 0 0 1-1.701.2218c-.0422 0 .2022-.0206.2022-.0206a5.1874 5.1874 0 0 0 .6017-.0795 5.5189 5.5189 0 0 0 1.5213-.4338l.0471-.0255c.2415 0 .2277-.0648.2277-.0648l-.2945.0088c-.2179.0059-.4417.0118-.4976.0118-.0098-.0373-.5114-.0677-.5114-.0677h1.2858a5.3585 5.3585 0 0 0 .2709-.1678c.263 0 .2454-.0726.2454-.0726-.2827.0069-.8088.0137-.902.0108-.0088-.0373-.5693-.0726-.5693-.0726h1.4458a1.9327 1.9327 0 0 1 .7597-.1335l5.5534-.1139a6.3607 6.3607 0 0 0 1.0198-.1247l.0684-.0169-.0536.018zm-11.9627.532h.0903l-.1747.1247v.0991h-.1325v-.0972l-.1884-.1266h.1541l.1286.0805.1226-.0805zm.8088.1826h.3023v.0412h-.4338v-.2248h.1315v.1836zm.5408 0h.3131v.0412h-.4427v-.2248h.4378v.0412h-.3082v.051h.3023v.0412h-.3023v.0502zm-2.5225-.1826h.1325v.2238h-.1354v-.0913h-.2778v.0913h-.1325v-.2238h.1325v.0903h.2778l.0029-.0903zm.5978.1256l.1698.0982h-.1492s-.1364-.0972-.1678-.1217c.1345.0049.157-.0098.157-.0324s-.106-.0353-.2267-.0285v.1826h-.1404v-.2228h.3053c.1502 0 .1963.0314.1963.0628 0 .0285-.055.054-.1443.0618zm2.7148-.0559c0-.0226-.106-.0353-.2267-.0285v.1845h-.1394v-.2228h.3013c.1502 0 .1963.0344.1963.0628 0 .0285-.055.054-.1443.0599l.1698.0982h-.1492s-.1364-.0972-.1678-.1217c.1335.0049.16-.0098.16-.0324zm-1.5576.0873c0 .0569-.1227.0756-.2513.0756a1.6114 1.6114 0 0 1-.2071-.0137l.0137-.0481a.9392.9392 0 0 0 .1894.0137c.108 0 .1148-.0128.1148-.0265 0-.0137-.0304-.0226-.0785-.0226l-.0982-.0118c-.0952-.0118-.1345-.0157-.1345-.0726s.1237-.0667.2032-.0667a1.814 1.814 0 0 1 .2081.0177l-.0108.0432a1.1384 1.1384 0 0 0-.1639-.0137c-.0844 0-.1031.0049-.1031.0196s.0275.0236.0697.0236l.1139.0079c.0894.0136.1326.0352.1346.0744zM9.875 12.81c0 .052.1266.0736.211.0736s.1639-.0088.1826-.0088l-.0137.0461c-.0236.002-.106.0108-.1963.0108-.1678 0-.318-.0402-.318-.1217s.1502-.1217.318-.1217c.0982 0 .1757.0098.1963.0098l.0137.0471a1.9641 1.9641 0 0 0-.1826-.0098c-.0883 0-.211.0225-.211.0746zm.9972-2.1996l-.5497-.4976h.3651l.2091.1767.2287.1963.0412.0373.0412-.0363.422-.371h.1423c-.1777.1698-.5094.4908-.5094.4908l-.0196.0186v.4319h-.3494v-.4281l-.0215-.0186zm5.3768.4466h-1.4732v-.9452h.3259v.8284h1.1474v.1168zm2.1858-.0059H16.938v-.9374h1.4782v.1168h-1.1631v.2915h1.1435v.1207h-1.1435v.2925h1.1817v.1159zm-12.4142.002h-.3327v-.9432h.3327v.4172h.9148V10.11h.3308v.9432h-.3308V10.64h-.9148v.4131zm2.5441-.003H8.229v-.9452h.8834c.168-.0107.3362.0186.4908.0854a.1964.1964 0 0 1 .1188.1678c-.001.108-.0805.214-.3612.2444l-.0805.0088.0618.0491c.0893.0726.3121.2945.4162.3926l.0097.003h-.3847c-.0569-.0628-.373-.3494-.5104-.4908a2.1988 2.1988 0 0 0 .3926-.0481.1433.1433 0 0 0 .0982-.1315.1152.1152 0 0 0-.052-.0913c-.0805-.0677-.265-.0677-.4809-.0677h-.266v.8235zm4.9056-.2424c0-.0569-.0491-.0834-.0982-.0982a1.2952 1.2952 0 0 0-.2032-.0363c-.1845-.0236-.2787-.0373-.3435-.0481a.9384.9384 0 0 1-.3406-.0982.1872.1872 0 0 1-.0932-.1727c-.001-.0991.0844-.162.2228-.2032.146-.0362.2962-.053.4466-.0501.2342.0027.468.0208.6998.054l-.0226.1139a3.124 3.124 0 0 0-.5408-.0501 1.2286 1.2286 0 0 0-.2945.0236c-.0609.0167-.0982.054-.0982.0982a.1091.1091 0 0 0 .0883.0982c.06.017.1214.0282.1835.0334.1031.0098.2483.0304.3867.0491a.8507.8507 0 0 1 .3308.0982.1906.1906 0 0 1 .0982.1698c.001.0962-.0864.1698-.2444.2208a2.0935 2.0935 0 0 1-.5889.0707l.001-.0069a4.8331 4.8331 0 0 1-.6743-.053l.0294-.1345c.2054.0451.415.0678.6252.0677a.8745.8745 0 0 0 .3514-.0481.112.112 0 0 0 .0787-.0982zm-10.2872-.2209c0-.158.1031-.2709.2778-.3543a1.622 1.622 0 0 1 .6782-.1276c.1911.0011.3819.0146.5712.0402l.0265.1286a5.1308 5.1308 0 0 0-.5212-.0353 1.2396 1.2396 0 0 0-.4397.0766c-.1325.052-.2434.1374-.2434.2689.001.1315.1109.2169.2434.2689.1407.0519.2897.0778.4397.0766a5.1308 5.1308 0 0 0 .5212-.0353l-.0344.1315a4.4382 4.4382 0 0 1-.5712.0402 1.6324 1.6324 0 0 1-.6704-.1247c-.1796-.0834-.2777-.2002-.2777-.3543zm16.4207.4731h-.3318v-.9462h.8834a1.0791 1.0791 0 0 1 .4908.0864.1964.1964 0 0 1 .1188.1669c-.001.1089-.0805.215-.3612.2454l-.0805.0079.0618.0491c.0893.0726.3121.2895.4162.3926v.001h-.3789c-.0569-.0628-.374-.3494-.5104-.4908a2.1177 2.1177 0 0 0 .3926-.0491.1424.1424 0 0 0 .0982-.1305.1152.1152 0 0 0-.052-.0913c-.0815-.0687-.265-.0687-.4809-.0687h-.266v.8273z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/chupachups.svg b/assets/lib/simple-icons/icons/chupachups.svg
index ba6e3468..e27a82e9 100644
--- a/assets/lib/simple-icons/icons/chupachups.svg
+++ b/assets/lib/simple-icons/icons/chupachups.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Chupa Chups icon</title><path d="M15.2056.0007c-1.1953-.0181-2.3567.4498-3.206 1.2882C10.7647.0694 8.8692-.366 7.1692.338c-1.7001.7042-2.7325 2.3525-2.7435 4.088-1.7358.0114-3.3842 1.0438-4.0883 2.7435-.7042 1.6998-.2684 3.5954.9512 4.831C.069 13.2354-.3665 15.131.3373 16.831c.7041 1.6998 2.3525 2.7319 4.0886 2.743.0107 1.736 1.043 3.3846 2.7432 4.0886 1.7.7042 3.5958.2684 4.8309-.9513 1.2349 1.2197 3.1304 1.6551 4.8306.951 1.6997-.704 2.7318-2.3523 2.7428-4.0882 1.736-.011 3.3848-1.0433 4.0888-2.7431.7041-1.7002.2683-3.5955-.9513-4.8314 1.2196-1.2352 1.6554-3.1306.9513-4.8304-.704-1.6997-2.3528-2.7322-4.0888-2.7432-.0107-1.7356-1.0431-3.384-2.7428-4.0884a4.416 4.416 0 0 0-1.625-.3369zM8.8546.623C10.09.6207 11.2772 1.222 12 2.2524 13.0059.8188 14.9096.2157 16.5923.913c1.683.6967 2.6026 2.4695 2.3 4.1948 1.725-.3027 3.498.6174 4.1947 2.2998.6968 1.6826.0938 3.5866-1.3395 4.5924 1.4333 1.0063 2.0363 2.91 1.3395 4.5928-.697 1.6822-2.4694 2.6023-4.1943 2.2998.3022 1.725-.6177 3.4982-2.3001 4.1949-1.683.6967-3.587.0937-4.593-1.3396-1.0057 1.4333-2.9097 2.0363-4.5922 1.3396-1.6826-.6967-2.6023-2.4695-2.3-4.1944-1.7254.3024-3.498-.6178-4.1949-2.3-.697-1.683-.0944-3.587 1.3396-4.5931C.8184 10.9942.2155 9.0905.9125 7.4078c.6968-1.6826 2.4698-2.6027 4.1948-2.3-.3028-1.7253.6175-3.498 2.3-4.1948a3.7897 3.7897 0 0 1 1.4475-.29zm.2617.4925a3.793 3.793 0 0 0-1.5049.29c-1.5743.6522-2.4823 2.246-2.3451 3.8613-1.6153-.1372-3.209.771-3.8614 2.3448C.753 9.1861 1.2377 10.9553 2.4772 12 1.238 13.0453.753 14.8143 1.405 16.3889c.6525 1.5738 2.2464 2.4821 3.8614 2.345-.1372 1.6154.7708 3.209 2.3451 3.8612 1.5743.652 3.3433.1672 4.3883-1.0722 1.045 1.2391 2.814 1.7242 4.3885 1.0722 1.574-.6524 2.4824-2.2462 2.345-3.8612 1.6154.1369 3.209-.7715 3.861-2.3455.6522-1.5742.1677-3.3431-1.0718-4.3884 1.2392-1.0453 1.724-2.8142 1.0719-4.3885-.6521-1.5742-2.246-2.4824-3.8613-2.3452.1374-1.6151-.7708-3.2087-2.345-3.8608-1.5743-.652-3.3433-.1671-4.3883 1.072-.7186-.852-1.7792-1.3476-2.8834-1.362zm.1288.575a3.8514 3.8514 0 0 1 2.7546 1.1035C13.062 1.7483 14.69 1.3756 16.15 1.9804c1.4597.6047 2.3476 2.0192 2.3592 3.5096 1.491.0116 2.9055.8994 3.5102 2.3593.6049 1.46.232 3.0882-.8135 4.1507 1.0456 1.0624 1.4184 2.6906.8135 4.1505-.605 1.46-2.0192 2.3475-3.51 2.3593-.0115 1.4908-.8993 2.9055-2.3594 3.5104-1.46.6045-3.0879.2318-4.15-.8138-1.0624 1.0458-2.6905 1.4183-4.1503.8138-1.46-.6049-2.348-2.0196-2.3596-3.51-1.4906-.0119-2.9053-.8998-3.5103-2.3597-.6045-1.4596-.2319-3.0878.8137-4.1502-1.0458-1.0624-1.4182-2.6906-.8134-4.151.6046-1.4599 2.0191-2.3474 3.5098-2.359.0113-1.4906.8989-2.905 2.3595-3.5099a3.7971 3.7971 0 0 1 1.3957-.29zM6.821 5.9463c-.4963.0028-1.0034.2088-1.3915.4873-.9826.7051-1.552 1.765-1.5075 2.9352.0236.6227.3794 1.2746.9944 1.5076.7724.2935 1.396-.0028 2.0429-.4427l-.1765.43 1.0606.0006 1.0627-2.3575c.1-.2227.5938-.1762.481.0881l-.6535 1.532c-.1047.245-.0169.5406.2162.6934.4885.32 1.0588.004 1.48-.2484.052.1283.1102.2726.2443.3409.3872.1963.9427.0092 1.2606-.2028.023-.0153.1375.128.2673.2028.4295.2472.9943.0295 1.351-.219-.2173.4977-.4285 1.2961-.9464 1.5181-.0888.0381-.2882-.0427-.2645.096.1926.225.5255.2585.826.2048.9148-.1628 1.0627-1.179 1.4556-1.8244.1085.116.2114.2512.381.2806.9732.1672 1.5356-.83 2.2055-1.3632-.1075.3432-.2886.8839.1043 1.2508.3803.3553 1.0707.1246 1.4394-.1523l.1442.2286c.115.182.3993.1592.6054.1123.2356-.0535.6068-.2073.6056-.4052-.287.0463-.4815-.1071-.3609-.3968.3755-.9027 1.1694-2.7194 1.1694-2.7194h-1.044l-.1254.3013c-.068-.1485-.2174-.2837-.369-.3127-1.2422-.2401-1.6844 1.1902-2.3773 1.6315.1205-.437.3887-1.1607-.0443-1.5154-.3217-.263-.7507-.0466-1.0827.0845l.0673-.1892h-.9904l-1.0941 2.479c-.0798.1809-.2666.2795-.4449.3046-.0793.011-.1597-.0274-.2085-.0965-.0595-.0833-.058-.1944-.0198-.2805l1.0612-2.4066h-1.0673l-.9406 2.15c-.006.0144-.1833.5038-.3687.5694-.0925.0327-.213.0081-.2644-.0883-.0405-.076-.0235-.1815.0078-.2526l1.0517-2.3785H11.62l-1.086 2.4626c-.0859.1942-.526.4166-.6536.1204-.0454-.1052-.022-.2245.0202-.3206l.4811-1.099c.1483-.338.5155-.8832.068-1.1466-.463-.2726-.921.068-1.2174.2594l.7523-1.7509H8.9478L7.3899 9.48c-.204.449-.7536.6712-1.2146.751-.3688.064-.7448-.0152-.9382-.3209-.4688-.7416-.0705-1.658.2965-2.3135.2716-.4855.7437-1.1352 1.3715-1.0868.1079.0083.234.0567.2766.1805.143.4128-.3268.6998-.6254.8702.0564.3558.6835.3803.9384.2443.3277-.1743.539-.5163.5653-.87.0217-.2922-.1296-.5774-.385-.7458-.262-.173-.556-.2444-.8538-.2427zm12.4299 2.294c.1901.0033.2381.185.1688.3427l-.702 1.5919c-.0606.1378-.248.2035-.409.1324-.0478-.021-.104-.076-.1043-.1324-.0033-.4853.2456-.923.4573-1.3431.1142-.2276.2587-.5599.5493-.5897a.3343.3343 0 0 1 .0399-.0017zm-3.335.0072c.0899.003.1665.0445.1795.127.0711.4493-.5303 1.6964-.9302 1.9126-.1004.0543-.2483.0044-.2728-.1041-.022-.0974.0306-.2071.0722-.3008l.6457-1.4596c.0525-.1189.19-.1789.3056-.175zm-6.303 3.1817l-1.124.0045-1.7048 3.8193c-.5372.5693-1.2974 1.1229-2.0564.8124-.3688-.1509-.5473-.5486-.5574-.9263-.0177-.6733.1488-1.289.5014-1.8086.342-.504.7937-1.1283 1.4474-1.1951.1721-.0175.3326.075.3969.2289.0803.192-.0153.3892-.1402.5211-.144.153-.337.246-.5133.2806.0906.4412.734.4207 1.0544.2772.2442-.11.4806-.35.5495-.6057.0836-.3098.0383-.6695-.1642-.9186-.3791-.465-1.0279-.5176-1.588-.3887-1.2165.28-2.3287 1.3853-2.6427 2.5743-.2395.9087-.1822 2.0852.682 2.6142.9996.6125 1.9043-.0058 2.6045-.5139l-.2575.5786 1.1494.003 1.239-2.802c.1231-.2785.6937-.234.5376.1201l-.6818 1.5438c-.087.1972-.1522.3845-.1522.5976 0 .229.0833.471.3123.5694.5578.2385 1.11-.1131 1.527-.47.0537.273.205.4565.494.5179.4516.0959.8182-.1604 1.1711-.3686.068.128.109.2812.2566.3567.4342.2218.9632-.0281 1.3402-.2363l-.3943.863c-.9815-.2082-2.0948-.2582-3.0592.0747-.532.184-1.0934.691-1.1347 1.3075-.031.4587.1895.8673.5693 1.099.7596.462 1.8348.4653 2.6425.0958.4793-.2194.8899-.577 1.2388-1.0065 1.5761.333 3.4885.589 4.6032-.8216.0211-.0271.173-.2487.2006-.4454-.2086.1366-.44.2202-.6818.2646-.5984.111-1.2287.0944-1.847.0425-.4098-.034-1.1304-.1828-1.4892-.3505l.5978-1.3038c.0921.2085.2696.3657.4853.409.6628.133 1.1861-.2979 1.6075-.758l1.9608-2.1407c.0653-.0715.1707-.203.2925-.1808.0367.0068.0548.05.0407.0883-.1106.295-.2242.5895-.3133.8984-.1354.4696-.0843 1.0261-.3685 1.431-.0669.0952-.1804.1427-.2927.1486-.1164.006-.2264-.0519-.277-.1606-.0903-.1956.0397-.4238.1805-.557-.0705-.0591-.17-.0683-.2351-.0637-.1672.0122-.3155.1068-.4185.244-.0992.1324-.1362.3117-.1121.4928.0362.272.2962.4922.5496.5577.5403.1392 1.0957-.0172 1.5154-.377.7315-.6272.5-1.6633.425-2.494-.037-.4122.1765-.802.5495-.9744-.1026-.1256-.2454-.168-.3344-.1795-1.1026-.139-1.8218 1.2796-2.489 1.6753.0314-.1304.3402-1.281-.2078-1.6083-.387-.2303-.8384-.004-1.1552.2165.011-.0568.036-.2084.036-.2084h-1.0338l-1.332 3.0032c-.072.163-.2684.2052-.4286.2088-.0804.002-.1598-.0265-.1966-.1042-.0352-.0748-.0461-.1518-.0122-.2287l1.2861-2.8884h-1.137l-1.2755 2.8884c-.0517.1164-.1728.1762-.2928.1885-.0763.0076-.1602-.0484-.2086-.12-.0435-.0647-.0383-.1777-.008-.2488l1.1626-2.708h-1.1167l-1.2489 2.8523c-.0704.161-.241.2864-.4092.3288-.1044.0263-.2131.0007-.2725-.0845-.0609-.0873-.0417-.1994 0-.3044.29-.7285.682-1.4192.9264-2.1652.0646-.1982.035-.4453-.1405-.5693-.4426-.314-.966-.0667-1.3553.1882zm6.3363 2.3177c.0784.0056.1475.0595.1823.1211.0481.086.037.2212.0079.3127-.1865.5829-.4699 1.1878-.7859 1.6762-.1007.155-.529.2388-.529 0v-.1322l.8056-1.8085c.0496-.1115.1692-.155.285-.1685a.1868.1868 0 0 1 .034-.0008zm-5.3643 4.849c.1608.002.3222.0152.4782.0275.346.0275.6818.1045 1.0064.2007-.4502.7776-1.4392 1.2001-2.2655.7178-.3268-.1911-.3654-.6248.0082-.8061.238-.1154.5046-.1432.7727-.1399zm3.1186.7396a.8233.8233 0 0 0-.3883.0973c-.1232.0648-.2269.1618-.3094.2916-.0822.1294-.1239.2739-.1239.4323 0 .2272.0803.421.2409.5813.1603.1597.3539.24.5807.24.2253 0 .4186-.0806.5797-.2413.1606-.1608.241-.354.241-.58 0-.159-.0416-.3043-.1247-.4347-.0836-.1301-.1868-.2272-.311-.2906-.1238-.064-.2525-.096-.385-.096zm.0008.1611c.177 0 .3314.063.4632.1893.1314.1258.1972.2833.1972.4708 0 .1815-.0648.3374-.1945.4665-.129.1303-.2846.195-.4659.195-.1816 0-.337-.0644-.4658-.1936-.1292-.1287-.1935-.2852-.1935-.468 0-.1874.0658-.3449.1972-.4707.1315-.1263.2853-.1893.4621-.1893zm-.372.2284v.871h.177v-.3577h.0461c.0555 0 .0993.0152.1313.0445.0317.0296.0697.0867.1132.1721l.0727.1412h.219l-.1033-.1759c-.05-.0848-.0859-.1378-.1067-.1585a.2044.2044 0 0 0-.0777-.0467c.0702-.0104.1267-.0372.1703-.0805.043-.0429.0645-.097.0645-.1622 0-.0671-.0199-.1224-.0596-.1655-.04-.0431-.0837-.0674-.1315-.0736-.0473-.0057-.1607-.0082-.3383-.0082zm.177.1383h.0718c.0785 0 .1328.0015.1623.0052a.1292.1292 0 0 1 .076.0357.1032.1032 0 0 1 .0316.077.1088.1088 0 0 1-.0294.0771.1197.1197 0 0 1-.072.0367c-.0281.004-.0848.0062-.1685.0062h-.0718Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Chupa Chups</title><path d="M15.2056.0007c-1.1953-.0181-2.3567.4498-3.206 1.2882C10.7647.0694 8.8692-.366 7.1692.338c-1.7001.7042-2.7325 2.3525-2.7435 4.088-1.7358.0114-3.3842 1.0438-4.0883 2.7435-.7042 1.6998-.2684 3.5954.9512 4.831C.069 13.2354-.3665 15.131.3373 16.831c.7041 1.6998 2.3525 2.7319 4.0886 2.743.0107 1.736 1.043 3.3846 2.7432 4.0886 1.7.7042 3.5958.2684 4.8309-.9513 1.2349 1.2197 3.1304 1.6551 4.8306.951 1.6997-.704 2.7318-2.3523 2.7428-4.0882 1.736-.011 3.3848-1.0433 4.0888-2.7431.7041-1.7002.2683-3.5955-.9513-4.8314 1.2196-1.2352 1.6554-3.1306.9513-4.8304-.704-1.6997-2.3528-2.7322-4.0888-2.7432-.0107-1.7356-1.0431-3.384-2.7428-4.0884a4.416 4.416 0 0 0-1.625-.3369zM8.8546.623C10.09.6207 11.2772 1.222 12 2.2524 13.0059.8188 14.9096.2157 16.5923.913c1.683.6967 2.6026 2.4695 2.3 4.1948 1.725-.3027 3.498.6174 4.1947 2.2998.6968 1.6826.0938 3.5866-1.3395 4.5924 1.4333 1.0063 2.0363 2.91 1.3395 4.5928-.697 1.6822-2.4694 2.6023-4.1943 2.2998.3022 1.725-.6177 3.4982-2.3001 4.1949-1.683.6967-3.587.0937-4.593-1.3396-1.0057 1.4333-2.9097 2.0363-4.5922 1.3396-1.6826-.6967-2.6023-2.4695-2.3-4.1944-1.7254.3024-3.498-.6178-4.1949-2.3-.697-1.683-.0944-3.587 1.3396-4.5931C.8184 10.9942.2155 9.0905.9125 7.4078c.6968-1.6826 2.4698-2.6027 4.1948-2.3-.3028-1.7253.6175-3.498 2.3-4.1948a3.7897 3.7897 0 0 1 1.4475-.29zm.2617.4925a3.793 3.793 0 0 0-1.5049.29c-1.5743.6522-2.4823 2.246-2.3451 3.8613-1.6153-.1372-3.209.771-3.8614 2.3448C.753 9.1861 1.2377 10.9553 2.4772 12 1.238 13.0453.753 14.8143 1.405 16.3889c.6525 1.5738 2.2464 2.4821 3.8614 2.345-.1372 1.6154.7708 3.209 2.3451 3.8612 1.5743.652 3.3433.1672 4.3883-1.0722 1.045 1.2391 2.814 1.7242 4.3885 1.0722 1.574-.6524 2.4824-2.2462 2.345-3.8612 1.6154.1369 3.209-.7715 3.861-2.3455.6522-1.5742.1677-3.3431-1.0718-4.3884 1.2392-1.0453 1.724-2.8142 1.0719-4.3885-.6521-1.5742-2.246-2.4824-3.8613-2.3452.1374-1.6151-.7708-3.2087-2.345-3.8608-1.5743-.652-3.3433-.1671-4.3883 1.072-.7186-.852-1.7792-1.3476-2.8834-1.362zm.1288.575a3.8514 3.8514 0 0 1 2.7546 1.1035C13.062 1.7483 14.69 1.3756 16.15 1.9804c1.4597.6047 2.3476 2.0192 2.3592 3.5096 1.491.0116 2.9055.8994 3.5102 2.3593.6049 1.46.232 3.0882-.8135 4.1507 1.0456 1.0624 1.4184 2.6906.8135 4.1505-.605 1.46-2.0192 2.3475-3.51 2.3593-.0115 1.4908-.8993 2.9055-2.3594 3.5104-1.46.6045-3.0879.2318-4.15-.8138-1.0624 1.0458-2.6905 1.4183-4.1503.8138-1.46-.6049-2.348-2.0196-2.3596-3.51-1.4906-.0119-2.9053-.8998-3.5103-2.3597-.6045-1.4596-.2319-3.0878.8137-4.1502-1.0458-1.0624-1.4182-2.6906-.8134-4.151.6046-1.4599 2.0191-2.3474 3.5098-2.359.0113-1.4906.8989-2.905 2.3595-3.5099a3.7971 3.7971 0 0 1 1.3957-.29zM6.821 5.9463c-.4963.0028-1.0034.2088-1.3915.4873-.9826.7051-1.552 1.765-1.5075 2.9352.0236.6227.3794 1.2746.9944 1.5076.7724.2935 1.396-.0028 2.0429-.4427l-.1765.43 1.0606.0006 1.0627-2.3575c.1-.2227.5938-.1762.481.0881l-.6535 1.532c-.1047.245-.0169.5406.2162.6934.4885.32 1.0588.004 1.48-.2484.052.1283.1102.2726.2443.3409.3872.1963.9427.0092 1.2606-.2028.023-.0153.1375.128.2673.2028.4295.2472.9943.0295 1.351-.219-.2173.4977-.4285 1.2961-.9464 1.5181-.0888.0381-.2882-.0427-.2645.096.1926.225.5255.2585.826.2048.9148-.1628 1.0627-1.179 1.4556-1.8244.1085.116.2114.2512.381.2806.9732.1672 1.5356-.83 2.2055-1.3632-.1075.3432-.2886.8839.1043 1.2508.3803.3553 1.0707.1246 1.4394-.1523l.1442.2286c.115.182.3993.1592.6054.1123.2356-.0535.6068-.2073.6056-.4052-.287.0463-.4815-.1071-.3609-.3968.3755-.9027 1.1694-2.7194 1.1694-2.7194h-1.044l-.1254.3013c-.068-.1485-.2174-.2837-.369-.3127-1.2422-.2401-1.6844 1.1902-2.3773 1.6315.1205-.437.3887-1.1607-.0443-1.5154-.3217-.263-.7507-.0466-1.0827.0845l.0673-.1892h-.9904l-1.0941 2.479c-.0798.1809-.2666.2795-.4449.3046-.0793.011-.1597-.0274-.2085-.0965-.0595-.0833-.058-.1944-.0198-.2805l1.0612-2.4066h-1.0673l-.9406 2.15c-.006.0144-.1833.5038-.3687.5694-.0925.0327-.213.0081-.2644-.0883-.0405-.076-.0235-.1815.0078-.2526l1.0517-2.3785H11.62l-1.086 2.4626c-.0859.1942-.526.4166-.6536.1204-.0454-.1052-.022-.2245.0202-.3206l.4811-1.099c.1483-.338.5155-.8832.068-1.1466-.463-.2726-.921.068-1.2174.2594l.7523-1.7509H8.9478L7.3899 9.48c-.204.449-.7536.6712-1.2146.751-.3688.064-.7448-.0152-.9382-.3209-.4688-.7416-.0705-1.658.2965-2.3135.2716-.4855.7437-1.1352 1.3715-1.0868.1079.0083.234.0567.2766.1805.143.4128-.3268.6998-.6254.8702.0564.3558.6835.3803.9384.2443.3277-.1743.539-.5163.5653-.87.0217-.2922-.1296-.5774-.385-.7458-.262-.173-.556-.2444-.8538-.2427zm12.4299 2.294c.1901.0033.2381.185.1688.3427l-.702 1.5919c-.0606.1378-.248.2035-.409.1324-.0478-.021-.104-.076-.1043-.1324-.0033-.4853.2456-.923.4573-1.3431.1142-.2276.2587-.5599.5493-.5897a.3343.3343 0 0 1 .0399-.0017zm-3.335.0072c.0899.003.1665.0445.1795.127.0711.4493-.5303 1.6964-.9302 1.9126-.1004.0543-.2483.0044-.2728-.1041-.022-.0974.0306-.2071.0722-.3008l.6457-1.4596c.0525-.1189.19-.1789.3056-.175zm-6.303 3.1817l-1.124.0045-1.7048 3.8193c-.5372.5693-1.2974 1.1229-2.0564.8124-.3688-.1509-.5473-.5486-.5574-.9263-.0177-.6733.1488-1.289.5014-1.8086.342-.504.7937-1.1283 1.4474-1.1951.1721-.0175.3326.075.3969.2289.0803.192-.0153.3892-.1402.5211-.144.153-.337.246-.5133.2806.0906.4412.734.4207 1.0544.2772.2442-.11.4806-.35.5495-.6057.0836-.3098.0383-.6695-.1642-.9186-.3791-.465-1.0279-.5176-1.588-.3887-1.2165.28-2.3287 1.3853-2.6427 2.5743-.2395.9087-.1822 2.0852.682 2.6142.9996.6125 1.9043-.0058 2.6045-.5139l-.2575.5786 1.1494.003 1.239-2.802c.1231-.2785.6937-.234.5376.1201l-.6818 1.5438c-.087.1972-.1522.3845-.1522.5976 0 .229.0833.471.3123.5694.5578.2385 1.11-.1131 1.527-.47.0537.273.205.4565.494.5179.4516.0959.8182-.1604 1.1711-.3686.068.128.109.2812.2566.3567.4342.2218.9632-.0281 1.3402-.2363l-.3943.863c-.9815-.2082-2.0948-.2582-3.0592.0747-.532.184-1.0934.691-1.1347 1.3075-.031.4587.1895.8673.5693 1.099.7596.462 1.8348.4653 2.6425.0958.4793-.2194.8899-.577 1.2388-1.0065 1.5761.333 3.4885.589 4.6032-.8216.0211-.0271.173-.2487.2006-.4454-.2086.1366-.44.2202-.6818.2646-.5984.111-1.2287.0944-1.847.0425-.4098-.034-1.1304-.1828-1.4892-.3505l.5978-1.3038c.0921.2085.2696.3657.4853.409.6628.133 1.1861-.2979 1.6075-.758l1.9608-2.1407c.0653-.0715.1707-.203.2925-.1808.0367.0068.0548.05.0407.0883-.1106.295-.2242.5895-.3133.8984-.1354.4696-.0843 1.0261-.3685 1.431-.0669.0952-.1804.1427-.2927.1486-.1164.006-.2264-.0519-.277-.1606-.0903-.1956.0397-.4238.1805-.557-.0705-.0591-.17-.0683-.2351-.0637-.1672.0122-.3155.1068-.4185.244-.0992.1324-.1362.3117-.1121.4928.0362.272.2962.4922.5496.5577.5403.1392 1.0957-.0172 1.5154-.377.7315-.6272.5-1.6633.425-2.494-.037-.4122.1765-.802.5495-.9744-.1026-.1256-.2454-.168-.3344-.1795-1.1026-.139-1.8218 1.2796-2.489 1.6753.0314-.1304.3402-1.281-.2078-1.6083-.387-.2303-.8384-.004-1.1552.2165.011-.0568.036-.2084.036-.2084h-1.0338l-1.332 3.0032c-.072.163-.2684.2052-.4286.2088-.0804.002-.1598-.0265-.1966-.1042-.0352-.0748-.0461-.1518-.0122-.2287l1.2861-2.8884h-1.137l-1.2755 2.8884c-.0517.1164-.1728.1762-.2928.1885-.0763.0076-.1602-.0484-.2086-.12-.0435-.0647-.0383-.1777-.008-.2488l1.1626-2.708h-1.1167l-1.2489 2.8523c-.0704.161-.241.2864-.4092.3288-.1044.0263-.2131.0007-.2725-.0845-.0609-.0873-.0417-.1994 0-.3044.29-.7285.682-1.4192.9264-2.1652.0646-.1982.035-.4453-.1405-.5693-.4426-.314-.966-.0667-1.3553.1882zm6.3363 2.3177c.0784.0056.1475.0595.1823.1211.0481.086.037.2212.0079.3127-.1865.5829-.4699 1.1878-.7859 1.6762-.1007.155-.529.2388-.529 0v-.1322l.8056-1.8085c.0496-.1115.1692-.155.285-.1685a.1868.1868 0 0 1 .034-.0008zm-5.3643 4.849c.1608.002.3222.0152.4782.0275.346.0275.6818.1045 1.0064.2007-.4502.7776-1.4392 1.2001-2.2655.7178-.3268-.1911-.3654-.6248.0082-.8061.238-.1154.5046-.1432.7727-.1399zm3.1186.7396a.8233.8233 0 0 0-.3883.0973c-.1232.0648-.2269.1618-.3094.2916-.0822.1294-.1239.2739-.1239.4323 0 .2272.0803.421.2409.5813.1603.1597.3539.24.5807.24.2253 0 .4186-.0806.5797-.2413.1606-.1608.241-.354.241-.58 0-.159-.0416-.3043-.1247-.4347-.0836-.1301-.1868-.2272-.311-.2906-.1238-.064-.2525-.096-.385-.096zm.0008.1611c.177 0 .3314.063.4632.1893.1314.1258.1972.2833.1972.4708 0 .1815-.0648.3374-.1945.4665-.129.1303-.2846.195-.4659.195-.1816 0-.337-.0644-.4658-.1936-.1292-.1287-.1935-.2852-.1935-.468 0-.1874.0658-.3449.1972-.4707.1315-.1263.2853-.1893.4621-.1893zm-.372.2284v.871h.177v-.3577h.0461c.0555 0 .0993.0152.1313.0445.0317.0296.0697.0867.1132.1721l.0727.1412h.219l-.1033-.1759c-.05-.0848-.0859-.1378-.1067-.1585a.2044.2044 0 0 0-.0777-.0467c.0702-.0104.1267-.0372.1703-.0805.043-.0429.0645-.097.0645-.1622 0-.0671-.0199-.1224-.0596-.1655-.04-.0431-.0837-.0674-.1315-.0736-.0473-.0057-.1607-.0082-.3383-.0082zm.177.1383h.0718c.0785 0 .1328.0015.1623.0052a.1292.1292 0 0 1 .076.0357.1032.1032 0 0 1 .0316.077.1088.1088 0 0 1-.0294.0771.1197.1197 0 0 1-.072.0367c-.0281.004-.0848.0062-.1685.0062h-.0718Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/cilium.svg b/assets/lib/simple-icons/icons/cilium.svg
new file mode 100644
index 00000000..689760e9
--- /dev/null
+++ b/assets/lib/simple-icons/icons/cilium.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Cilium</title><path d="M13.607 14.583h-3.215l-1.626-2.764 1.626-2.802h3.215l1.626 2.802-1.626 2.764ZM14.186 8H9.799l-2.2 3.813 2.2 3.787h4.387l2.213-3.787L14.186 8Zm-4.387 8.4-2.2 3.813L9.799 24h4.387l2.213-3.787-2.213-3.813H9.799Zm-1.034 3.819 1.627-2.802h3.215l1.626 2.802-1.626 2.765h-3.215l-1.627-2.765ZM9.799 0l-2.2 3.813 2.2 3.787h4.387l2.213-3.787L14.186 0H9.799ZM8.765 3.819l1.627-2.802h3.215l1.626 2.802-1.626 2.764h-3.215L8.765 3.819Zm8.234 8.581-2.2 3.813 2.2 3.787h4.388l2.213-3.787-2.213-3.813h-4.388Zm-1.034 3.819 1.627-2.802h3.215l1.626 2.802-1.626 2.765h-3.215l-1.627-2.765ZM16.999 4l-2.2 3.813 2.2 3.787h4.388L23.6 7.813 21.387 4h-4.388Zm-1.034 3.819 1.627-2.802h3.215l1.626 2.802-1.626 2.764h-3.215l-1.627-2.764ZM2.599 12.4l-2.2 3.813L2.599 20h4.387l2.213-3.787L6.986 12.4H2.599Zm-1.034 3.819 1.627-2.802h3.214l1.627 2.802-1.627 2.765H3.192l-1.627-2.765ZM2.599 4l-2.2 3.813 2.2 3.787h4.387l2.213-3.787L6.986 4H2.599ZM1.565 7.819l1.627-2.802h3.214l1.627 2.802-1.627 2.764H3.192L1.565 7.819Z"/></svg>
diff --git a/assets/lib/simple-icons/icons/cinema4d.svg b/assets/lib/simple-icons/icons/cinema4d.svg
index 06da8bad..6eae510c 100644
--- a/assets/lib/simple-icons/icons/cinema4d.svg
+++ b/assets/lib/simple-icons/icons/cinema4d.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Cinema 4D icon</title><path d="M12.022,5.127C8.786,5.713,6.677,6.917,5.3,8.047c-0.172,0.665-0.273,1.356-0.273,2.072 c0,4.794,4.093,8.68,9.141,8.68c0.753,0,1.467-0.098,2.146-0.264c1.458-1.848,2.651-5.065,2.955-7.728 c0.319-2.786,0.953-3.63,1.742-4.18c0.28-0.195,0.574-0.344,0.885-0.415c-0.887-1.897-2.439-3.388-4.444-4.168 c0.005,0.022,0.014,0.04,0.019,0.062C17.852,3.735,16.115,4.386,12.022,5.127z M23.179,7.898 c-0.032-0.063-0.064-0.134-0.097-0.214c-0.594-1.455-2.022-0.512-2.399,0.344c-0.742,1.686-0.633,2.422-0.934,4.131 s-1.337,4.999-2.828,6.688c-2.13,2.412-4.46,3.484-7.727,3.172s-5.785-3.082-6.717-5.09c-0.782-1.685-0.9-3.596,0.025-6.073 s3.7-4.491,6.237-5.459c2.537-0.968,4.545-1.063,5.96-1.475c1.415-0.413,2.249-1.093,2.197-1.672 c-0.065-0.718-0.757-1.1-1.148-1.26c-1.18-0.379-2.441-0.584-3.751-0.584c-6.611,0-11.97,5.218-11.97,11.655 c0,6.437,5.359,11.655,11.97,11.655s11.97-5.218,11.97-11.655C23.966,10.594,23.687,9.191,23.179,7.898z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Cinema 4D</title><path d="M12.052 0C5.394-.007-.003 5.412 0 11.976.003 18.654 5.475 23.981 11.978 24c6.535.02 12.057-5.306 12.022-11.998-.009-1.665-.53-5.371-1.84-5.276-1.98.145-2.159 4.12-2.377 5.407-.417 2.46-1.346 5.08-2.953 6.99-1.88 2.359-4.697 3.634-7.662 3.158-3.55-.564-5.893-3.278-6.68-5.201-.753-1.723-1.035-4.162-.07-6.324 1.16-2.766 3.734-4.632 6.28-5.584 2.006-.827 4.103-1.151 5.357-1.375 2.516-.5 2.855-1.463 2.814-2.149-.015-.252-.256-.724-.785-.943C15.03.269 13.268.001 12.052 0zm5.098 1.342c.139.398.088.85-.148 1.256-.325.56-.972 1.05-1.897 1.29-1.636.428-2.976.554-4.34.96-1.312.39-3.397 1.018-5.316 2.552-.268.842-.341 1.892-.369 2.662.15 5.014 4.557 8.884 9.17 8.682.853-.037 1.921-.261 2.912-.68a13.56 13.56 0 0 0 1.387-2.683l.002-.002v-.002c.424-1.03.606-1.836.8-2.793.32-1.565.202-2.88 1.012-4.758.251-.582.71-1.113 1.258-1.346.25-.105.522-.133.79-.072-.89-2.471-3.115-4.326-5.26-5.066z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/circle.svg b/assets/lib/simple-icons/icons/circle.svg
index b9586b08..d3f2f25c 100644
--- a/assets/lib/simple-icons/icons/circle.svg
+++ b/assets/lib/simple-icons/icons/circle.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Circle icon</title><path d="M20.788 3.832c-.101-.105-.197-.213-.301-.317-.103-.103-.211-.202-.32-.302A11.903 11.903 0 0 0 12 0a11.926 11.926 0 0 0-8.486 3.514C-1.062 8.09-1.16 15.47 3.213 20.168c.099.108.197.214.3.32.104.103.21.2.317.3A11.92 11.92 0 0 0 12 24c3.206 0 6.22-1.247 8.487-3.512 4.576-4.576 4.673-11.956.301-16.656zm-16.655.301A11.057 11.057 0 0 1 12 .874c2.825 0 5.49 1.048 7.55 2.958l-1.001 1.002A9.646 9.646 0 0 0 12 2.292a9.644 9.644 0 0 0-6.865 2.844A9.644 9.644 0 0 0 2.292 12c0 2.448.9 4.753 2.542 6.549L3.831 19.55C-.201 15.191-.101 8.367 4.133 4.133zm13.798 1.318v.002l-1.015 1.014A7.346 7.346 0 0 0 12 4.589 7.357 7.357 0 0 0 6.761 6.76 7.362 7.362 0 0 0 4.589 12a7.34 7.34 0 0 0 1.877 4.913l-1.014 1.016A8.77 8.77 0 0 1 3.167 12a8.77 8.77 0 0 1 2.588-6.245A8.771 8.771 0 0 1 12 3.167c2.213 0 4.301.809 5.931 2.284zM18.537 12c0 1.745-.681 3.387-1.916 4.622S13.746 18.538 12 18.538a6.491 6.491 0 0 1-4.296-1.621l-.001-.004c-.11-.094-.22-.188-.324-.291a6.027 6.027 0 0 1-.293-.326A6.47 6.47 0 0 1 5.466 12c0-1.746.679-3.387 1.914-4.621A6.488 6.488 0 0 1 12 5.465c1.599 0 3.105.576 4.295 1.62.111.096.224.19.326.295.104.104.2.214.295.324A6.482 6.482 0 0 1 18.537 12zM7.084 17.534h.001A7.349 7.349 0 0 0 12 19.413a7.35 7.35 0 0 0 5.239-2.174A7.354 7.354 0 0 0 19.412 12a7.364 7.364 0 0 0-1.876-4.916l1.013-1.012A8.777 8.777 0 0 1 20.834 12a8.765 8.765 0 0 1-2.589 6.246A8.764 8.764 0 0 1 12 20.834a8.782 8.782 0 0 1-5.93-2.285l1.014-1.015zm12.783 2.333A11.046 11.046 0 0 1 12 23.125a11.042 11.042 0 0 1-7.551-2.957l1.004-1.001a9.64 9.64 0 0 0 6.549 2.542 9.639 9.639 0 0 0 6.865-2.846A9.642 9.642 0 0 0 21.71 12a9.64 9.64 0 0 0-2.543-6.548l1.001-1.002c4.031 4.359 3.935 11.182-.301 15.417z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Circle</title><path d="M20.788 3.832c-.101-.105-.197-.213-.301-.317-.103-.103-.211-.202-.32-.302A11.903 11.903 0 0 0 12 0a11.926 11.926 0 0 0-8.486 3.514C-1.062 8.09-1.16 15.47 3.213 20.168c.099.108.197.214.3.32.104.103.21.2.317.3A11.92 11.92 0 0 0 12 24c3.206 0 6.22-1.247 8.487-3.512 4.576-4.576 4.673-11.956.301-16.656zm-16.655.301A11.057 11.057 0 0 1 12 .874c2.825 0 5.49 1.048 7.55 2.958l-1.001 1.002A9.646 9.646 0 0 0 12 2.292a9.644 9.644 0 0 0-6.865 2.844A9.644 9.644 0 0 0 2.292 12c0 2.448.9 4.753 2.542 6.549L3.831 19.55C-.201 15.191-.101 8.367 4.133 4.133zm13.798 1.318v.002l-1.015 1.014A7.346 7.346 0 0 0 12 4.589 7.357 7.357 0 0 0 6.761 6.76 7.362 7.362 0 0 0 4.589 12a7.34 7.34 0 0 0 1.877 4.913l-1.014 1.016A8.77 8.77 0 0 1 3.167 12a8.77 8.77 0 0 1 2.588-6.245A8.771 8.771 0 0 1 12 3.167c2.213 0 4.301.809 5.931 2.284zM18.537 12c0 1.745-.681 3.387-1.916 4.622S13.746 18.538 12 18.538a6.491 6.491 0 0 1-4.296-1.621l-.001-.004c-.11-.094-.22-.188-.324-.291a6.027 6.027 0 0 1-.293-.326A6.47 6.47 0 0 1 5.466 12c0-1.746.679-3.387 1.914-4.621A6.488 6.488 0 0 1 12 5.465c1.599 0 3.105.576 4.295 1.62.111.096.224.19.326.295.104.104.2.214.295.324A6.482 6.482 0 0 1 18.537 12zM7.084 17.534h.001A7.349 7.349 0 0 0 12 19.413a7.35 7.35 0 0 0 5.239-2.174A7.354 7.354 0 0 0 19.412 12a7.364 7.364 0 0 0-1.876-4.916l1.013-1.012A8.777 8.777 0 0 1 20.834 12a8.765 8.765 0 0 1-2.589 6.246A8.764 8.764 0 0 1 12 20.834a8.782 8.782 0 0 1-5.93-2.285l1.014-1.015zm12.783 2.333A11.046 11.046 0 0 1 12 23.125a11.042 11.042 0 0 1-7.551-2.957l1.004-1.001a9.64 9.64 0 0 0 6.549 2.542 9.639 9.639 0 0 0 6.865-2.846A9.642 9.642 0 0 0 21.71 12a9.64 9.64 0 0 0-2.543-6.548l1.001-1.002c4.031 4.359 3.935 11.182-.301 15.417z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/circleci.svg b/assets/lib/simple-icons/icons/circleci.svg
index 6e894e8f..9be9cab8 100644
--- a/assets/lib/simple-icons/icons/circleci.svg
+++ b/assets/lib/simple-icons/icons/circleci.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>CircleCI icon</title><path d="M8.963 12c0-1.584 1.284-2.855 2.855-2.855 1.572 0 2.856 1.284 2.856 2.855 0 1.572-1.284 2.856-2.856 2.856-1.57 0-2.855-1.284-2.855-2.856zm2.855-12C6.215 0 1.522 3.84.19 9.025c-.01.036-.01.07-.01.12 0 .313.252.576.575.576H5.59c.23 0 .433-.13.517-.333.997-2.16 3.18-3.672 5.712-3.672 3.466 0 6.286 2.82 6.286 6.287 0 3.47-2.82 6.29-6.29 6.29-2.53 0-4.714-1.5-5.71-3.673-.097-.19-.29-.336-.517-.336H.755c-.312 0-.575.253-.575.576 0 .037.014.072.014.12C1.514 20.16 6.214 24 11.818 24c6.624 0 12-5.375 12-12 0-6.623-5.376-12-12-12z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>CircleCI</title><path d="M8.963 12c0-1.584 1.284-2.855 2.855-2.855 1.572 0 2.856 1.284 2.856 2.855 0 1.572-1.284 2.856-2.856 2.856-1.57 0-2.855-1.284-2.855-2.856zm2.855-12C6.215 0 1.522 3.84.19 9.025c-.01.036-.01.07-.01.12 0 .313.252.576.575.576H5.59c.23 0 .433-.13.517-.333.997-2.16 3.18-3.672 5.712-3.672 3.466 0 6.286 2.82 6.286 6.287 0 3.47-2.82 6.29-6.29 6.29-2.53 0-4.714-1.5-5.71-3.673-.097-.19-.29-.336-.517-.336H.755c-.312 0-.575.253-.575.576 0 .037.014.072.014.12C1.514 20.16 6.214 24 11.818 24c6.624 0 12-5.375 12-12 0-6.623-5.376-12-12-12z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/cirrusci.svg b/assets/lib/simple-icons/icons/cirrusci.svg
index a17e8a13..8f0e4e14 100644
--- a/assets/lib/simple-icons/icons/cirrusci.svg
+++ b/assets/lib/simple-icons/icons/cirrusci.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Cirrus CI icon</title><path d="M22.406 15.477A4.587 4.587 0 0 1 24 18.955c0 2.531-2.053 4.59-4.577 4.59H1.113a1.113 1.113 0 0 1 0-2.226h18.31a2.36 2.36 0 0 0 2.35-2.364 2.36 2.36 0 0 0-2.35-2.364H1.113a1.113 1.113 0 0 1 0-2.227h18.31A2.36 2.36 0 0 0 21.773 12a2.36 2.36 0 0 0-2.35-2.364H1.113a1.113 1.113 0 1 1 0-2.227h18.31c1.296 0 2.35-1.06 2.35-2.364s-1.054-2.364-2.35-2.364a1.113 1.113 0 0 1 0-2.227C21.947.454 24 2.514 24 5.045c0 1.389-.62 2.635-1.594 3.477A4.587 4.587 0 0 1 24 12c0 1.389-.62 2.635-1.594 3.477z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Cirrus CI</title><path d="M19.422.453a1.113 1.113 0 0 0-1.113 1.115 1.113 1.113 0 0 0 1.112 1.114c1.31 0 2.35 1.042 2.35 2.363 0 1.32-1.04 2.363-2.35 2.363H1.112A1.113 1.113 0 0 0 0 8.52a1.113 1.113 0 0 0 1.113 1.117h18.31c1.308 0 2.35 1.042 2.35 2.363 0 1.32-1.042 2.363-2.35 2.363H1.112A1.113 1.113 0 0 0 0 15.48a1.113 1.113 0 0 0 1.113 1.112h18.31c1.308 0 2.35 1.042 2.35 2.363 0 1.32-1.042 2.363-2.35 2.363H1.112A1.113 1.113 0 0 0 0 22.432a1.113 1.113 0 0 0 1.113 1.115h18.31a1.113 1.113 0 0 0 .206-.022c2.42-.112 4.37-2.12 4.37-4.57 0-1.393-.642-2.634-1.63-3.478C23.356 14.632 24 13.393 24 12c0-1.393-.643-2.632-1.63-3.477C23.357 7.68 24 6.438 24 5.045c0-2.52-2.06-4.592-4.578-4.592z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/cisco.svg b/assets/lib/simple-icons/icons/cisco.svg
index 17358f1e..bb41aaf5 100644
--- a/assets/lib/simple-icons/icons/cisco.svg
+++ b/assets/lib/simple-icons/icons/cisco.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" role="img"><title>Cisco icon</title><path d="M16.331 18.171V17.06l-.022.01c-.25.121-.522.19-.801.203a1.186 1.186 0 01-.806-.237 1.038 1.038 0 01-.352-.498 1.21 1.21 0 01-.023-.667c.052-.225.178-.426.357-.569.16-.134.355-.218.562-.242a1.85 1.85 0 011.061.198l.024.013v-1.117l-.051-.014a2.862 2.862 0 00-1.011-.132 2.34 2.34 0 00-.903.206c-.287.132-.54.327-.739.571a2.221 2.221 0 00-.04 2.705c.295.378.709.645 1.175.756.491.12 1.006.102 1.487-.052l.082-.023M5.336 18.171V17.06l-.022.01c-.25.121-.522.19-.801.203a1.183 1.183 0 01-.806-.237 1.03 1.03 0 01-.351-.498 1.202 1.202 0 01-.024-.667c.052-.225.177-.426.357-.569.16-.134.355-.218.562-.242a1.85 1.85 0 011.061.198l.024.013v-1.117l-.051-.014a2.862 2.862 0 00-1.011-.132 2.344 2.344 0 00-.903.206 2.08 2.08 0 00-.74.571 2.224 2.224 0 00-.041 2.705 2.11 2.11 0 001.176.756c.491.12 1.005.102 1.487-.052l.083-.023M9.26 17.249l-.004.957.07.012c.22.041.441.069.664.085.195.019.391.022.587.012.187-.014.372-.049.551-.104.21-.06.405-.163.571-.305a1.16 1.16 0 00.333-.478 1.31 1.31 0 00-.007-.96 1.068 1.068 0 00-.298-.414 1.261 1.261 0 00-.438-.255l-.722-.268a.388.388 0 01-.197-.188.245.245 0 01.008-.219.382.382 0 01.154-.142.798.798 0 01.257-.074c.153-.022.308-.021.46.005.18.02.358.051.533.096l.038.008v-.883l-.069-.015a4.749 4.749 0 00-.543-.097 2.844 2.844 0 00-.714-.003c-.3.027-.585.143-.821.33-.16.126-.281.293-.351.484-.104.29-.105.608 0 .899.054.145.14.274.252.381.097.093.207.173.327.236.157.084.324.149.497.195.057.017.114.035.17.054l.085.031.024.01c.084.03.162.078.226.14.045.042.08.094.101.151a.325.325 0 01.001.161.339.339 0 01-.166.198.856.856 0 01-.275.086 2.032 2.032 0 01-.427.021 5.208 5.208 0 01-.557-.074 9.195 9.195 0 01-.287-.067l-.033-.006zm-2.475.995h1.05v-4.167h-1.05v4.167zm12.162-2.936a1.095 1.095 0 011.541.158 1.094 1.094 0 01-.157 1.541l-.017.014a1.096 1.096 0 01-1.367-1.713m-1.525.854a2.193 2.193 0 002.666 2.107 2.139 2.139 0 00.701-3.937 2.207 2.207 0 00-3.367 1.83M22.961 10.728a.52.52 0 001.039 0V9.573a.52.52 0 00-1.039 0v1.155M20.117 10.728a.522.522 0 001.041 0V8.139a.521.521 0 00-1.04 0v2.589M17.231 11.771a.521.521 0 001.039 0V6.17a.52.52 0 00-1.039 0v5.601M14.393 10.728a.521.521 0 001.04 0V8.139a.52.52 0 00-1.039 0v2.589M11.494 10.728a.522.522 0 001.039 0V9.573a.52.52 0 00-1.039 0v1.155M8.624 10.728a.52.52 0 001.039 0V8.139a.52.52 0 00-1.039 0v2.589M5.737 11.771a.52.52 0 001.039 0V6.17a.52.52 0 00-1.039 0v5.601M2.876 10.728a.522.522 0 001.04 0V8.139a.52.52 0 00-1.039 0v2.589M0 10.728a.521.521 0 001.039 0V9.573a.52.52 0 00-1.039 0v1.155"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Cisco</title><path d="M16.331 18.171V17.06l-.022.01c-.25.121-.522.19-.801.203a1.186 1.186 0 01-.806-.237 1.038 1.038 0 01-.352-.498 1.21 1.21 0 01-.023-.667c.052-.225.178-.426.357-.569.16-.134.355-.218.562-.242a1.85 1.85 0 011.061.198l.024.013v-1.117l-.051-.014a2.862 2.862 0 00-1.011-.132 2.34 2.34 0 00-.903.206c-.287.132-.54.327-.739.571a2.221 2.221 0 00-.04 2.705c.295.378.709.645 1.175.756.491.12 1.006.102 1.487-.052l.082-.023M5.336 18.171V17.06l-.022.01c-.25.121-.522.19-.801.203a1.183 1.183 0 01-.806-.237 1.03 1.03 0 01-.351-.498 1.202 1.202 0 01-.024-.667c.052-.225.177-.426.357-.569.16-.134.355-.218.562-.242a1.85 1.85 0 011.061.198l.024.013v-1.117l-.051-.014a2.862 2.862 0 00-1.011-.132 2.344 2.344 0 00-.903.206 2.08 2.08 0 00-.74.571 2.224 2.224 0 00-.041 2.705 2.11 2.11 0 001.176.756c.491.12 1.005.102 1.487-.052l.083-.023M9.26 17.249l-.004.957.07.012c.22.041.441.069.664.085.195.019.391.022.587.012.187-.014.372-.049.551-.104.21-.06.405-.163.571-.305a1.16 1.16 0 00.333-.478 1.31 1.31 0 00-.007-.96 1.068 1.068 0 00-.298-.414 1.261 1.261 0 00-.438-.255l-.722-.268a.388.388 0 01-.197-.188.245.245 0 01.008-.219.382.382 0 01.154-.142.798.798 0 01.257-.074c.153-.022.308-.021.46.005.18.02.358.051.533.096l.038.008v-.883l-.069-.015a4.749 4.749 0 00-.543-.097 2.844 2.844 0 00-.714-.003c-.3.027-.585.143-.821.33-.16.126-.281.293-.351.484-.104.29-.105.608 0 .899.054.145.14.274.252.381.097.093.207.173.327.236.157.084.324.149.497.195.057.017.114.035.17.054l.085.031.024.01c.084.03.162.078.226.14.045.042.08.094.101.151a.325.325 0 01.001.161.339.339 0 01-.166.198.856.856 0 01-.275.086 2.032 2.032 0 01-.427.021 5.208 5.208 0 01-.557-.074 9.195 9.195 0 01-.287-.067l-.033-.006zm-2.475.995h1.05v-4.167h-1.05v4.167zm12.162-2.936a1.095 1.095 0 011.541.158 1.094 1.094 0 01-.157 1.541l-.017.014a1.096 1.096 0 01-1.367-1.713m-1.525.854a2.193 2.193 0 002.666 2.107 2.139 2.139 0 00.701-3.937 2.207 2.207 0 00-3.367 1.83M22.961 10.728a.52.52 0 001.039 0V9.573a.52.52 0 00-1.039 0v1.155M20.117 10.728a.522.522 0 001.041 0V8.139a.521.521 0 00-1.04 0v2.589M17.231 11.771a.521.521 0 001.039 0V6.17a.52.52 0 00-1.039 0v5.601M14.393 10.728a.521.521 0 001.04 0V8.139a.52.52 0 00-1.039 0v2.589M11.494 10.728a.522.522 0 001.039 0V9.573a.52.52 0 00-1.039 0v1.155M8.624 10.728a.52.52 0 001.039 0V8.139a.52.52 0 00-1.039 0v2.589M5.737 11.771a.52.52 0 001.039 0V6.17a.52.52 0 00-1.039 0v5.601M2.876 10.728a.522.522 0 001.04 0V8.139a.52.52 0 00-1.039 0v2.589M0 10.728a.521.521 0 001.039 0V9.573a.52.52 0 00-1.039 0v1.155"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/citrix.svg b/assets/lib/simple-icons/icons/citrix.svg
index e69627de..c7d3dda7 100644
--- a/assets/lib/simple-icons/icons/citrix.svg
+++ b/assets/lib/simple-icons/icons/citrix.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Citrix icon</title><path d="M21.295 12.954l1.0616 1.6337H24l-1.8279-2.73 1.6518-2.4358h-1.6473l-.88 1.3548-.8832-1.3548H18.766l1.6518 2.4357-1.8278 2.7301h1.6434l1.0616-1.6338m-6.7216-1.7087c0 .204-.0604.3492-.1845.4437-.1269.0967-.3315.1457-.608.1457h-.1835v-1.2312h.2065c.2838 0 .4858.05.6005.1486.1122.0965.169.2625.169.4932zm.386 1.3058c.3396-.087.6051-.2508.7903-.4875.199-.2545.3-.586.3-.9852 0-.57-.1748-.9938-.5193-1.2601-.34-.263-.9332-.3963-1.7626-.3963h-1.5975v5.1658h1.4271v-1.8165l1.0717 1.8165h1.6856l-1.3953-2.0367M7.4346 9.4219v1.27h1.3542v3.8958h1.4271v-3.8959h1.3478v-1.27H7.4346m-3.4557 3.2634l-.045.0577c-.154.1975-.3362.3463-.5271.4307-.2066.0912-.4188.1375-.6306.1375-.3804 0-.6956-.1202-.9367-.3572-.241-.2368-.3632-.5452-.3632-.9164 0-.4.1208-.7268.359-.9713.238-.244.5545-.3679.9409-.3679.218 0 .4313.0458.6338.1361.225.1002.386.2327.522.4297l.0469.0679.779-1.1874-.0352-.0319c-.4074-.3691-.8488-.611-1.3119-.719-.2281-.053-.489-.08-.7754-.08-.752 0-1.386.2591-1.8847.7698C.2526 10.5939 0 11.2426 0 12.0114c0 .7688.252 1.4152.7493 1.9214.4975.5062 1.132.763 1.886.763.3069 0 .5593-.0269.7719-.082.2349-.0611.8357-.2619 1.3414-.8084l.0312-.0338-.8009-1.0864m14.33-3.2633h-1.4226v5.1658h1.4226V9.422m-.706 5.5365c-.4866 0-.8825.396-.8825.8825 0 .4866.3959.8826.8825.8826s.8826-.396.8826-.8826c0-.4866-.396-.8825-.8826-.8825m-12.1867-.3707h1.4226V9.422H5.4162v5.1658m.706-5.546c.4867 0 .8826-.396.8826-.8825 0-.4868-.396-.8827-.8826-.8827-.4866 0-.8825.396-.8825.8827 0 .4866.3959.8825.8825.8825Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Citrix</title><path d="M11.983 0a1.78 1.78 0 0 0-1.78 1.78 1.78 1.78 0 0 0 1.78 1.78 1.78 1.78 0 0 0 1.78-1.78A1.78 1.78 0 0 0 11.983 0zM5.17 5.991a1.026 1.026 0 0 0-1.095 1.027c0 .308.136.616.376.822l6.162 7.086-6.401 7.258a1.084 1.084 0 0 0-.309.787c0 .582.48 1.027 1.062 1.027.342 0 .684-.17.89-.444l6.128-7.19 6.162 7.19c.205.274.547.444.89.444.582.035 1.062-.445 1.062-1.027a1.14 1.14 0 0 0-.309-.787l-6.402-7.258 6.162-7.086c.24-.206.377-.514.377-.822v-.034c0-.582-.513-1.027-1.095-.993-.343 0-.65.171-.856.445l-5.957 7.018L6.06 6.436a1.07 1.07 0 0 0-.855-.445z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/citroen.svg b/assets/lib/simple-icons/icons/citroen.svg
index dcfd99d1..128db177 100644
--- a/assets/lib/simple-icons/icons/citroen.svg
+++ b/assets/lib/simple-icons/icons/citroen.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Citroën icon</title><path d="M18.585 10.538C17.36 9.489 13.725 6.504 12 6.504c-1.726 0-5.36 2.983-6.583 4.033-.008-.248-.015-.399-.015-.62 0 0-.03-.364.293-.729 2.654-2.405 5.437-3.582 5.523-3.618.83-.35.783-.284.782-1.692 0 0 .037-.002.06 0 1.17.106 4.311 3.155 6.17 5.217.004.003.368.424.368.868 0 .208-.007.413-.013.575m-.05-1.72c-.198-.22-4.85-5.356-6.535-5.356-1.684 0-6.337 5.136-6.534 5.355-.02.022-.474.54-.474 1.146 0 .471.031.946.032.95 0 .022.011.222.123.277a.13.13 0 00.057.013.24.24 0 00.138-.055c.05-.044 4.79-4.231 6.658-4.231 1.868 0 6.608 4.187 6.656 4.23a.244.244 0 00.14.056c.02 0 .04-.004.058-.013.11-.055.122-.255.123-.278 0-.003.031-.478.031-.949 0-.605-.454-1.124-.473-1.146m.056 6.61c-1.225-1.05-4.864-4.038-6.591-4.038-1.728 0-5.365 2.987-6.59 4.038-.007-.248-.014-.4-.014-.62 0 0-.03-.365.293-.73 2.657-2.408 5.442-3.586 5.528-3.622.83-.35.784-.285.783-1.694 0 0 .037-.002.06 0 1.17.106 4.315 3.159 6.177 5.222.003.004.367.425.367.87 0 .207-.006.413-.013.575m-.05-1.723c-.197-.219-4.855-5.36-6.541-5.36s-6.344 5.141-6.541 5.36c-.02.022-.474.542-.474 1.147 0 .472.031.947.032.951 0 .022.011.223.123.277a.128.128 0 00.058.014.242.242 0 00.137-.055c.05-.045 4.795-4.236 6.665-4.236s6.615 4.191 6.663 4.233a.246.246 0 00.14.058c.02 0 .04-.005.058-.014.11-.054.122-.255.123-.278 0-.003.031-.478.031-.95 0-.605-.454-1.125-.474-1.147m-3.35 6.492h-.001a6.466 6.466 0 01-.376 0c-.415 0-.863-.315-.863-.824 0-.504.439-.806.86-.806.006 0 .211-.01.38 0 .425 0 .864.302.864.806 0 .509-.448.824-.863.824m.404-1.948c-.59-.013-1.19 0-1.194 0-.72 0-1.307.503-1.307 1.12 0 .628.586 1.138 1.307 1.138.005 0 .604.012 1.195 0 .722 0 1.309-.51 1.309-1.137 0-.612-.575-1.104-1.31-1.12m7.67 2.228H24v-1.076c0-.628-.56-1.121-1.274-1.121h-1.858c-.03 0-.102.007-.102.082v2.032c0 .054.04.083.079.083h.777v-1.7a.11.11 0 01.11-.114h.857c.236 0 .587.217.587.683v1.046s.002.085.09.085M7.757 18.717h1.147v-.35c0-.049-.035-.086-.082-.086H5.627a.083.083 0 00-.083.085v.35l.764.001c.286 0 .479.247.479.478v1.2c0 .04.035.083.084.083h.775V18.83c0-.062.05-.112.112-.112m-3.532 1.678c0 .049.044.083.084.083h.044l-.006.006c.022-.006.097-.006.357-.006h.38v-2.114a.084.084 0 00-.083-.084H4.31a.085.085 0 00-.084.084zm5.994-1.085v-.44c0-.12.085-.203.206-.203h1.14c.173 0 .32.146.32.32a.323.323 0 01-.323.323zm1.668 1.169h.852c-.013-.528-.56-.747-.623-.77l-.01-.005v-.03l.011-.002c.366-.082.62-.363.62-.684 0-.34-.33-.708-.866-.708H9.811a.443.443 0 00-.446.45v1.664a.08.08 0 00.082.083l.774.001-.001-.78h.73c.65 0 .918.473.938.78zm-8.965-1.46h.835c-.181-.46-.682-.776-1.257-.787l-.256-.005a10.959 10.959 0 00-.938.005c-.41.021-.67.115-.923.338a1.07 1.07 0 00-.384.807c0 .628.556 1.122 1.292 1.147.505.018.56.019 1.222 0 .613-.02 1.053-.3 1.243-.786h-.834a.078.078 0 00-.072.041.868.868 0 01-.754.425c-.171.007-.378 0-.378 0-.424 0-.863-.308-.863-.823v-.005c.003-.512.44-.818.865-.819.048-.002.219-.007.376 0 .309 0 .606.165.756.42.005.01.026.041.07.041m17.384 1.065h-2.02c-.068 0-.116-.045-.116-.11v-.419h1.75v-.385h-1.75l-.001-.383c0-.002-.001-.043.03-.075.023-.024.057-.036.1-.036h2.006v-.308a.081.081 0 00-.022-.061c-.028-.027-.073-.025-.076-.025h-2.81c-.009 0-.085.002-.085.086v1.664c0 .22.168.447.45.447h2.46c.02 0 .041-.009.058-.024a.08.08 0 00.026-.058v-.313m-.628-2.597a.55.55 0 00-.298-.077.558.558 0 00-.297.077c-.079.049-.141.115-.234.115-.093 0-.149-.066-.232-.115a.57.57 0 00-.297-.077.553.553 0 00-.298.077c-.082.05-.123.111-.123.182 0 .072.041.133.123.183.083.051.182.076.298.076a.563.563 0 00.29-.07c.075-.045.155-.12.239-.12.084 0 .16.067.234.114a.57.57 0 00.297.076c.12 0 .22-.025.3-.076.08-.05.12-.111.12-.183 0-.07-.04-.132-.122-.182Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Citro&#235;n</title><path d="M18.591 15.407c-1.225-1.044-4.864-4.014-6.59-4.014-1.73 0-5.366 2.968-6.591 4.013-.007-.247-.014-.397-.014-.617 0 0-.03-.363.293-.725 2.657-2.393 5.442-3.563 5.528-3.6.83-.348.784-.283.783-1.683 0 0 .037-.002.06 0 1.17.106 4.316 3.14 6.177 5.19.003.003.367.422.367.864 0 .206-.006.41-.013.572m-.05-1.712c-.198-.218-4.855-5.328-6.541-5.328s-6.343 5.11-6.54 5.327h-.001c-.02.022-.474.539-.474 1.14 0 .47.031.941.031.946.002.022.012.22.124.275a.128.128 0 0 0 .058.013.242.242 0 0 0 .137-.055c.05-.044 4.795-4.209 6.665-4.209s6.615 4.165 6.663 4.207a.247.247 0 0 0 .14.057.13.13 0 0 0 .058-.013c.11-.054.122-.253.123-.276 0-.004.031-.476.031-.944 0-.602-.454-1.119-.474-1.14m-3.35 6.45h-.001a6.569 6.569 0 0 1-.376 0c-.415 0-.863-.312-.863-.818 0-.501.438-.8.86-.8a4.14 4.14 0 0 1 .38 0c.425 0 .863.299.863.8 0 .506-.447.819-.862.819m.404-1.936c-.59-.013-1.19 0-1.194 0-.72 0-1.307.5-1.307 1.114 0 .623.586 1.13 1.307 1.13.005 0 .604.012 1.195 0 .722 0 1.309-.507 1.309-1.13 0-.608-.575-1.097-1.31-1.114m7.67 2.216H24v-1.07c0-.624-.56-1.114-1.274-1.114h-1.858c-.03 0-.102.007-.102.081v2.02c0 .054.04.082.079.082h.777v-1.689c0-.074.055-.113.11-.113h.857c.236 0 .587.215.587.678v1.04s.002.085.09.085m-15.507-1.75h1.146v-.348c0-.05-.035-.086-.082-.086H5.627a.083.083 0 0 0-.083.084v.349h.764c.286 0 .479.246.479.475v1.193c0 .039.035.083.084.083h.775v-1.639c0-.062.05-.112.112-.112m-3.532 1.668c0 .049.044.083.084.083h.044l-.006.005c.022-.005.097-.005.357-.005h.38v-2.101a.084.084 0 0 0-.083-.084H4.31a.085.085 0 0 0-.084.084v2.018zm5.994-1.079v-.436c0-.119.085-.202.206-.202h1.14c.173 0 .32.145.32.317a.322.322 0 0 1-.323.321H10.22zm1.668 1.162h.852c-.013-.525-.56-.742-.623-.765l-.01-.004v-.03l.011-.003c.366-.081.62-.36.62-.68 0-.337-.33-.703-.866-.703H9.811a.441.441 0 0 0-.446.446v1.655a.08.08 0 0 0 .082.083h.774l-.001-.774h.73c.65 0 .918.47.938.775m-8.965-1.451h.835c-.181-.457-.682-.77-1.257-.781l-.256-.006a11.048 11.048 0 0 0-.938.006c-.41.02-.67.114-.923.335a1.06 1.06 0 0 0-.384.802c0 .625.556 1.115 1.292 1.14.505.018.56.019 1.222 0 .613-.02 1.053-.297 1.243-.781h-.834a.078.078 0 0 0-.072.041.869.869 0 0 1-.754.422c-.171.007-.378 0-.378 0-.424 0-.863-.306-.863-.818v-.005c.003-.509.44-.813.865-.813.048-.002.219-.008.376 0 .309 0 .606.164.756.418a.08.08 0 0 0 .07.04m17.384 1.058h-2.02c-.069 0-.116-.045-.116-.11v-.416h1.75v-.383h-1.75l-.001-.38c0-.001-.001-.042.03-.074.022-.024.056-.036.1-.036h2.006v-.307c0-.026-.007-.046-.022-.06-.028-.027-.074-.025-.076-.025h-2.81c-.009 0-.086.002-.086.085v1.654c0 .219.169.445.45.445h2.46c.021 0 .042-.01.058-.025a.08.08 0 0 0 .027-.057v-.31m-.628-2.582a.553.553 0 0 0-.298-.076.56.56 0 0 0-.297.076c-.079.049-.141.114-.234.114-.093 0-.149-.065-.232-.114a.572.572 0 0 0-.297-.076.555.555 0 0 0-.298.076c-.082.05-.123.11-.123.181s.041.132.123.182c.083.05.181.075.298.075a.566.566 0 0 0 .29-.07c.075-.044.155-.118.239-.118.084 0 .16.066.234.113a.572.572 0 0 0 .297.075c.12 0 .22-.025.3-.075.08-.05.12-.11.12-.182 0-.07-.04-.131-.122-.181m-1.094-6.905c-1.224-1.042-4.86-4.01-6.585-4.01-1.726 0-5.36 2.966-6.583 4.01-.008-.247-.014-.397-.014-.616 0 0-.03-.363.292-.725 2.654-2.39 5.437-3.56 5.523-3.596.83-.348.783-.283.782-1.682 0 0 .037-.002.06 0 1.17.106 4.311 3.136 6.17 5.185.004.004.368.422.368.863 0 .206-.006.41-.013.571m-.05-1.71c-.198-.218-4.85-5.322-6.535-5.322-1.684 0-6.337 5.104-6.534 5.322-.02.021-.474.537-.474 1.139 0 .468.031.94.031.944.002.022.012.22.124.275a.13.13 0 0 0 .057.013.242.242 0 0 0 .138-.055c.05-.044 4.79-4.205 6.658-4.205 1.868 0 6.608 4.161 6.656 4.203a.245.245 0 0 0 .14.057.13.13 0 0 0 .058-.013c.11-.054.122-.253.123-.276 0-.004.031-.475.031-.943 0-.602-.454-1.118-.473-1.14"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/civicrm.svg b/assets/lib/simple-icons/icons/civicrm.svg
index f6fdc477..737c3a1b 100644
--- a/assets/lib/simple-icons/icons/civicrm.svg
+++ b/assets/lib/simple-icons/icons/civicrm.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" role="img"><title>CiviCRM icon</title><path d="M22.565 9.054c.248-.477.45-1.125.235-1.786-.25-.766-.939-1.275-2.051-1.511l-7.052-1.5L6.496.405C6.418.363 5.717 0 4.951 0 4.38 0 3.888.198 3.527.571c-.337.349-.539.834-.603 1.444a3.184 3.184 0 0 0-.199-.006c-1.089 0-1.648.456-1.926.839C.369 3.44.315 4.241.638 5.23l2.649 8.118.251 7.033c.044 1.222.719 2.536 2.098 2.537.264 0 .537-.051.82-.15.328.556.92 1.232 1.864 1.232.666 0 1.324-.357 1.956-1.063l5.11-5.697 6.783-4.283c.147-.094 1.444-.95 1.398-2.229-.022-.642-.362-1.202-1.002-1.674zM7.396 20.166l-2.328-7.134-.316-8.847 8.326 1.771 6.771 3.622-5.63 6.279-6.823 4.309zM20.377 7.51c.545.116.709.279.72.313.021.063-.017.196-.087.344l-1.623-.868.99.211zM4.951 1.792c.269 0 .607.145.7.193l1.738.929-2.693-.573c.013-.323.08-.484.12-.526.012-.011.062-.023.135-.023zm-2.61 2.882c-.195-.595-.093-.773-.092-.774.019-.026.167-.099.476-.099.083 0 .159.005.221.011l.109 3.05-.714-2.188zm2.988 15.642l-.029-.798.514 1.574a.68.68 0 0 1-.178.034c-.146 0-.293-.5-.307-.81zm3.614 1.424c-.414.463-.62.468-.622.468-.058 0-.185-.132-.301-.317l1.818-1.148-.895.997zm12.27-10.299l-1.445.913 1.695-1.89c.249.174.313.298.314.329.006.133-.287.468-.564.648z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>CiviCRM</title><path d="M22.565 9.054c.248-.477.45-1.125.235-1.786-.25-.766-.939-1.275-2.051-1.511l-7.052-1.5L6.496.405C6.418.363 5.717 0 4.951 0 4.38 0 3.888.198 3.527.571c-.337.349-.539.834-.603 1.444a3.184 3.184 0 0 0-.199-.006c-1.089 0-1.648.456-1.926.839C.369 3.44.315 4.241.638 5.23l2.649 8.118.251 7.033c.044 1.222.719 2.536 2.098 2.537.264 0 .537-.051.82-.15.328.556.92 1.232 1.864 1.232.666 0 1.324-.357 1.956-1.063l5.11-5.697 6.783-4.283c.147-.094 1.444-.95 1.398-2.229-.022-.642-.362-1.202-1.002-1.674zM7.396 20.166l-2.328-7.134-.316-8.847 8.326 1.771 6.771 3.622-5.63 6.279-6.823 4.309zM20.377 7.51c.545.116.709.279.72.313.021.063-.017.196-.087.344l-1.623-.868.99.211zM4.951 1.792c.269 0 .607.145.7.193l1.738.929-2.693-.573c.013-.323.08-.484.12-.526.012-.011.062-.023.135-.023zm-2.61 2.882c-.195-.595-.093-.773-.092-.774.019-.026.167-.099.476-.099.083 0 .159.005.221.011l.109 3.05-.714-2.188zm2.988 15.642l-.029-.798.514 1.574a.68.68 0 0 1-.178.034c-.146 0-.293-.5-.307-.81zm3.614 1.424c-.414.463-.62.468-.622.468-.058 0-.185-.132-.301-.317l1.818-1.148-.895.997zm12.27-10.299l-1.445.913 1.695-1.89c.249.174.313.298.314.329.006.133-.287.468-.564.648z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/civo.svg b/assets/lib/simple-icons/icons/civo.svg
new file mode 100644
index 00000000..28b33a65
--- /dev/null
+++ b/assets/lib/simple-icons/icons/civo.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Civo</title><path d="M9.229 7.985h-.993c-.183 0-.303.14-.303.318v7.393c0 .177.12.318.303.318h.993a.318.318 0 0 0 .323-.318V8.303a.317.317 0 0 0-.323-.318m-3.1 5.838a.32.32 0 0 0-.507-.104 2.34 2.34 0 0 1-1.604.635c-1.627 0-2.868-1.65-2.141-3.368a2.128 2.128 0 0 1 1.13-1.128c.992-.42 1.958-.18 2.599.408a.32.32 0 0 0 .507-.103l.43-.943a.353.353 0 0 0-.111-.428C5.425 8.03 4.05 7.732 2.617 8.22a3.838 3.838 0 0 0-2.412 2.478c-.874 2.772 1.172 5.32 3.813 5.32.92 0 1.764-.31 2.44-.831a.348.348 0 0 0 .101-.42zm17.666-3.125a3.838 3.838 0 0 0-2.412-2.478 4.176 4.176 0 0 0-2.329-.13c-1.2.269-2.07.838-2.834 2.479l-1.534 3.326-2.603-5.722a.32.32 0 0 0-.29-.187l-1.138-.002a.32.32 0 0 0-.292.453l3.376 7.382a.324.324 0 0 0 .291.19l.056.005h1.276a.236.236 0 0 0 .076-.013.335.335 0 0 0 .2-.18l1.71-3.893c.515-1.213.827-1.718 1.643-2.065a2.527 2.527 0 0 1 2.054.026c.492.222.878.629 1.084 1.128a2.701 2.701 0 0 1 .206.95 2.354 2.354 0 0 1-2.353 2.387 2.34 2.34 0 0 1-1.604-.635.32.32 0 0 0-.507.104l-.43.944a.348.348 0 0 0 .1.42c.677.52 1.522.831 2.44.831 2.642 0 4.688-2.548 3.814-5.32"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ckeditor4.svg b/assets/lib/simple-icons/icons/ckeditor4.svg
new file mode 100644
index 00000000..94659482
--- /dev/null
+++ b/assets/lib/simple-icons/icons/ckeditor4.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>CKEditor 4</title><path d="M16.1237 3.7468a4.5092 4.5092 0 0 0-.469 2.009c0 2.5006 2.0271 4.5278 4.5278 4.5278a4.447 4.447 0 0 0 .0967-.001v6.3413a2.1307 2.1307 0 0 1-1.0654 1.8453l-8.0089 4.6239a2.1307 2.1307 0 0 1-2.1307 0l-8.0088-4.624A2.1307 2.1307 0 0 1 0 16.624V7.3761c0-.7613.4061-1.4647 1.0654-1.8453L9.0742.907a2.1307 2.1307 0 0 1 2.1307 0zM5.733 7.9753a.5327.5327 0 0 0-.5327.5327v.2542c0 .2942.2385.5327.5327.5327h8.9963a.5327.5327 0 0 0 .5327-.5327V8.508a.5327.5327 0 0 0-.5327-.5327zm0 3.281a.5327.5327 0 0 0-.5327.5326v.2542c0 .2942.2385.5327.5327.5327h6.5221a.5327.5327 0 0 0 .5327-.5327v-.2542a.5327.5327 0 0 0-.5327-.5327zm0 3.2809a.5327.5327 0 0 0-.5327.5327v.2542c0 .2942.2385.5326.5327.5326h8.9963a.5327.5327 0 0 0 .5327-.5326v-.2542a.5327.5327 0 0 0-.5327-.5327zm14.5383-5.1414c-2.0593 0-3.7287-1.6694-3.7287-3.7288 0-2.0593 1.6694-3.7287 3.7287-3.7287S24 3.6077 24 5.667c0 2.0594-1.6694 3.7288-3.7288 3.7288zm.6347-2.7825h.393v-.5904h-.397V4.139h-.8144l-1.1668 1.8623v.612H20.27v.5991h.636zm-.632-1.7277v1.1373h-.6928l.6807-1.1373Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/claris.svg b/assets/lib/simple-icons/icons/claris.svg
index b7311244..c151f1be 100644
--- a/assets/lib/simple-icons/icons/claris.svg
+++ b/assets/lib/simple-icons/icons/claris.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Claris icon</title><path d="M11.56 0a3.34 3.34 0 00-.57.043L22.947 12 10.99 23.957c.132.022.307.043.57.043 6.626 0 12-5.375 12-12s-5.374-12-12-12zm-1.535 2.414C4.738 2.414.44 6.713.44 12s4.3 9.588 9.586 9.588c.264 0 .44-.023.57-.045L1.054 12l9.543-9.543a3.337 3.337 0 00-.57-.043zm.746 2.457c-.263 0-.438.021-.57.043L17.287 12l-7.086 7.086c.132.022.307.045.57.045 3.927 0 7.13-3.204 7.13-7.131s-3.203-7.129-7.13-7.129zm-.416 2.434A4.701 4.701 0 005.66 12a4.701 4.701 0 004.695 4.695c.264 0 .44-.023.57-.045L6.274 12l4.653-4.65a3.296 3.296 0 00-.57-.045Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Claris</title><path d="M11.56 0a3.34 3.34 0 00-.57.043L22.947 12 10.99 23.957c.132.022.307.043.57.043 6.626 0 12-5.375 12-12s-5.374-12-12-12zm-1.535 2.414C4.738 2.414.44 6.713.44 12s4.3 9.588 9.586 9.588c.264 0 .44-.023.57-.045L1.054 12l9.543-9.543a3.337 3.337 0 00-.57-.043zm.746 2.457c-.263 0-.438.021-.57.043L17.287 12l-7.086 7.086c.132.022.307.045.57.045 3.927 0 7.13-3.204 7.13-7.131s-3.203-7.129-7.13-7.129zm-.416 2.434A4.701 4.701 0 005.66 12a4.701 4.701 0 004.695 4.695c.264 0 .44-.023.57-.045L6.274 12l4.653-4.65a3.296 3.296 0 00-.57-.045Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/clickhouse.svg b/assets/lib/simple-icons/icons/clickhouse.svg
new file mode 100644
index 00000000..689aca37
--- /dev/null
+++ b/assets/lib/simple-icons/icons/clickhouse.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ClickHouse</title><path d="M21.333 10H24v4h-2.667ZM16 1.335h2.667v21.33H16Zm-5.333 0h2.666v21.33h-2.666ZM0 22.665V1.335h2.667v21.33zm5.333-21.33H8v21.33H5.333Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/clickup.svg b/assets/lib/simple-icons/icons/clickup.svg
new file mode 100644
index 00000000..4bf99cfd
--- /dev/null
+++ b/assets/lib/simple-icons/icons/clickup.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ClickUp</title><path d="M2 18.439l3.69-2.828c1.961 2.56 4.044 3.739 6.363 3.739 2.307 0 4.33-1.166 6.203-3.704L22 18.405C19.298 22.065 15.941 24 12.053 24 8.178 24 4.788 22.078 2 18.439zM12.04 6.15l-6.568 5.66-3.036-3.52L12.055 0l9.543 8.296-3.05 3.509z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/clion.svg b/assets/lib/simple-icons/icons/clion.svg
new file mode 100644
index 00000000..2194f93e
--- /dev/null
+++ b/assets/lib/simple-icons/icons/clion.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>CLion</title><path d="M0 0v24h24V0H0zm7.041 3a5.049 5.049 0 0 1 .219 0c1.86 0 3 .6 3.9 1.56L9.78 6.18C9 5.46 8.22 5.04 7.26 5.04c-1.68 0-2.88 1.38-2.88 3.12 0 1.68 1.2 3.12 2.88 3.12 1.14 0 1.86-.48 2.64-1.14l1.38 1.38c-1.02 1.08-2.16 1.8-4.08 1.8a5.1 5.1 0 0 1-5.1-5.16A5.049 5.049 0 0 1 7.04 3zm5.738.12H15v8.1h4.32v1.86h-6.54V3.12zM2.28 19.5h9V21h-9v-1.5Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/cliqz.svg b/assets/lib/simple-icons/icons/cliqz.svg
index f219b2c6..7ed25af1 100644
--- a/assets/lib/simple-icons/icons/cliqz.svg
+++ b/assets/lib/simple-icons/icons/cliqz.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Cliqz icon</title><path d="M19.387 18.146l4.19-1.402L12 12.027l4.716 11.578 1.403-4.19 3.917 3.917 1.268-1.268zm-7.387 1c.035 0 .07-.004.105-.004l1.908 4.686c-.654.11-1.326.172-2.013.172-6.617 0-12-5.383-12-12S5.383 0 12 0s12 5.383 12 12c0 .695-.063 1.376-.177 2.04l-4.683-1.908c0-.044.006-.087.006-.133A7.153 7.153 0 0 0 12 4.854a7.155 7.154 0 0 0-7.147 7.145A7.155 7.154 0 0 0 12 19.146z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Cliqz</title><path d="M19.387 18.146l4.19-1.402L12 12.027l4.716 11.578 1.403-4.19 3.917 3.917 1.268-1.268zm-7.387 1c.035 0 .07-.004.105-.004l1.908 4.686c-.654.11-1.326.172-2.013.172-6.617 0-12-5.383-12-12S5.383 0 12 0s12 5.383 12 12c0 .695-.063 1.376-.177 2.04l-4.683-1.908c0-.044.006-.087.006-.133A7.153 7.153 0 0 0 12 4.854a7.155 7.154 0 0 0-7.147 7.145A7.155 7.154 0 0 0 12 19.146z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/clockify.svg b/assets/lib/simple-icons/icons/clockify.svg
index b7c4d546..3a0162e7 100644
--- a/assets/lib/simple-icons/icons/clockify.svg
+++ b/assets/lib/simple-icons/icons/clockify.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Clockify icon</title><path d="M14.979 8.248l5.438-5.514 1.557 1.577-5.438 5.514-1.558-1.577zm-2.203 5.635a1.911 1.911 0 0 1-1.364-.577 1.987 1.987 0 0 1-.562-1.385c0-1.082.862-1.96 1.925-1.96 1.064 0 1.928.878 1.928 1.96 0 .516-.201 1.012-.563 1.385a1.913 1.913 0 0 1-1.364.577zm9.222 5.695l-1.556 1.579-5.438-5.515 1.558-1.577 5.436 5.513zM12.834 20.403a8.12 8.12 0 0 0 3.097-.615l2.656 2.695A11.643 11.643 0 0 1 12.834 24C6.298 24 1 18.627 1 12S6.299 0 12.834 0c2.068 0 4.012.54 5.703 1.486l-2.611 2.65a8.127 8.127 0 0 0-3.092-.613c-4.577 0-8.287 3.78-8.287 8.44 0 4.661 3.71 8.44 8.287 8.44z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Clockify</title><path d="M13.3512 20.4035c1.1108 0 2.169-.2217 3.139-.6157l2.6913 2.6944C17.4555 23.4458 15.4688 24 13.3512 24 6.729 24 1.3594 18.627 1.3594 12.0006 1.3594 5.3729 6.7289 0 13.3512 0c2.0964 0 4.0652.5406 5.7789 1.4865L16.4834 4.136c-.9687-.3918-2.0236-.6134-3.1322-.6134-4.6379 0-8.3976 3.779-8.3976 8.441 0 4.6609 3.7597 8.4399 8.3976 8.4399zm2.176-12.1544l5.5104-5.5139 1.5773 1.5772-5.5104 5.514zm-2.2328 5.6348c-1.0784 0-1.952-.8775-1.952-1.961 0-1.0825.8736-1.9611 1.952-1.9611 1.0784 0 1.952.8786 1.952 1.961 0 1.0836-.8736 1.9611-1.952 1.9611zm9.3462 5.6953l-1.5772 1.5783-5.5105-5.514 1.5774-1.5783z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/clojure.svg b/assets/lib/simple-icons/icons/clojure.svg
index 3c077364..4513b0a5 100644
--- a/assets/lib/simple-icons/icons/clojure.svg
+++ b/assets/lib/simple-icons/icons/clojure.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Clojure icon</title><path d="M11.503 12.216c-.119.259-.251.549-.387.858-.482 1.092-1.016 2.42-1.21 3.271a4.91 4.91 0 0 0-.112 1.096c0 .164.009.337.022.514.682.25 1.417.388 2.186.39a6.39 6.39 0 0 0 2.001-.326 3.808 3.808 0 0 1-.418-.441c-.854-1.089-1.329-2.682-2.082-5.362M8.355 6.813A6.347 6.347 0 0 0 5.657 12a6.347 6.347 0 0 0 2.625 5.134c.39-1.622 1.366-3.107 2.83-6.084-.087-.239-.186-.5-.297-.775-.406-1.018-.991-2.198-1.513-2.733a4.272 4.272 0 0 0-.947-.729M17.527 19.277c-.84-.105-1.533-.232-2.141-.446A7.625 7.625 0 0 1 4.376 12a7.6 7.6 0 0 1 2.6-5.73 5.582 5.582 0 0 0-1.324-.162c-2.236.02-4.597 1.258-5.58 4.602-.092.486-.07.854-.07 1.29 0 6.627 5.373 12 12 12 4.059 0 7.643-2.017 9.815-5.101-1.174.293-2.305.433-3.271.436-.362 0-.702-.02-1.019-.058M15.273 16.952c.074.036.242.097.475.163a6.354 6.354 0 0 0 2.6-5.115h-.002a6.354 6.354 0 0 0-6.345-6.345 6.338 6.338 0 0 0-1.992.324c1.289 1.468 1.908 3.566 2.507 5.862l.001.003c.001.002.192.637.518 1.48.326.842.789 1.885 1.293 2.645.332.51.697.876.945.983M12.001 0a11.98 11.98 0 0 0-9.752 5.013c1.134-.71 2.291-.967 3.301-.957 1.394.004 2.491.436 3.017.732.127.073.248.152.366.233A7.625 7.625 0 0 1 19.625 12a7.605 7.605 0 0 1-2.268 5.425c.344.038.709.063 1.084.061 1.328 0 2.766-.293 3.842-1.198.703-.592 1.291-1.458 1.617-2.757.065-.502.1-1.012.1-1.531 0-6.627-5.371-12-11.999-12"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Clojure</title><path d="M11.503 12.216c-.119.259-.251.549-.387.858-.482 1.092-1.016 2.42-1.21 3.271a4.91 4.91 0 0 0-.112 1.096c0 .164.009.337.022.514.682.25 1.417.388 2.186.39a6.39 6.39 0 0 0 2.001-.326 3.808 3.808 0 0 1-.418-.441c-.854-1.089-1.329-2.682-2.082-5.362M8.355 6.813A6.347 6.347 0 0 0 5.657 12a6.347 6.347 0 0 0 2.625 5.134c.39-1.622 1.366-3.107 2.83-6.084-.087-.239-.186-.5-.297-.775-.406-1.018-.991-2.198-1.513-2.733a4.272 4.272 0 0 0-.947-.729M17.527 19.277c-.84-.105-1.533-.232-2.141-.446A7.625 7.625 0 0 1 4.376 12a7.6 7.6 0 0 1 2.6-5.73 5.582 5.582 0 0 0-1.324-.162c-2.236.02-4.597 1.258-5.58 4.602-.092.486-.07.854-.07 1.29 0 6.627 5.373 12 12 12 4.059 0 7.643-2.017 9.815-5.101-1.174.293-2.305.433-3.271.436-.362 0-.702-.02-1.019-.058M15.273 16.952c.074.036.242.097.475.163a6.354 6.354 0 0 0 2.6-5.115h-.002a6.354 6.354 0 0 0-6.345-6.345 6.338 6.338 0 0 0-1.992.324c1.289 1.468 1.908 3.566 2.507 5.862l.001.003c.001.002.192.637.518 1.48.326.842.789 1.885 1.293 2.645.332.51.697.876.945.983M12.001 0a11.98 11.98 0 0 0-9.752 5.013c1.134-.71 2.291-.967 3.301-.957 1.394.004 2.491.436 3.017.732.127.073.248.152.366.233A7.625 7.625 0 0 1 19.625 12a7.605 7.605 0 0 1-2.268 5.425c.344.038.709.063 1.084.061 1.328 0 2.766-.293 3.842-1.198.703-.592 1.291-1.458 1.617-2.757.065-.502.1-1.012.1-1.531 0-6.627-5.371-12-11.999-12"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/cloud66.svg b/assets/lib/simple-icons/icons/cloud66.svg
new file mode 100644
index 00000000..23a86a32
--- /dev/null
+++ b/assets/lib/simple-icons/icons/cloud66.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Cloud 66</title><path d="M11.985.317C7.0865 2.716 2.9666.4233 2.9666.4233 1.1064 3.486.216 6.1747 0 8.5272h23.9992c-.2165-2.3514-1.1074-5.0365-2.9665-8.0966 0 0-4.119 2.2905-9.0185-.1073zM5.2196 3.5273c.424 0 .7456.0853.8906.1594l-.1666.6417a1.7877 1.7877 0 0 0-.6865-.1334c-.6485 0-1.152.3871-1.152 1.1823 0 .7157.4282 1.1666 1.1572 1.1666.2464 0 .5202-.0537.6813-.1166l.124.6312c-.1505.0747-.4882.1594-.9282.1594-1.248 0-1.8916-.7751-1.8916-1.7927 0-1.2197.879-1.8979 1.9718-1.8979zm6.3144 0c1.1093 0 1.7145.8217 1.7145 1.8083 0 1.1717-.7179 1.8823-1.7739 1.8823-1.072 0-1.6989-.8006-1.6989-1.8187 0-1.071.6917-1.8719 1.7583-1.8719zm7.8091.0323c.6859 0 1.131.1226 1.4792.3823.3754.2757.6114.7149.6114 1.3458 0 .6837-.2517 1.1562-.6 1.4479-.3808.3125-.9594.4604-1.6666.4604-.424 0-.7244-.026-.928-.0521V3.6336c.2996-.048.6913-.074 1.104-.074zM7.003 3.5867h.8198v2.8947H9.258v.6781H7.003zm7.1779 0h.8208V5.643c0 .615.235.9281.6531.9281.4293 0 .6646-.2972.6646-.928V3.5866h.8156v2.003c0 1.103-.5638 1.6282-1.5073 1.6282-.9109 0-1.4468-.4988-1.4468-1.6385zm-2.6718.5823c-.5504 0-.8708.5212-.8708 1.2166 0 .7013.332 1.1958.877 1.1958.55 0 .8646-.5212.8646-1.2166 0-.6432-.3097-1.1958-.8708-1.1958zm7.9206.0104c-.1824 0-.301.0163-.3708.0323v2.3437c.0698.016.1825.0156.2843.0156.7398.0053 1.2219-.3987 1.2219-1.2541.0053-.744-.4336-1.1375-1.1354-1.1375zM.0052 9.7886c-.281 10.276 11.9798 13.8881 11.9798 13.8881l.0292.0063S24.281 20.0688 23.9951 9.7886h-.001zm10.7684 1.2802a5.5849 5.5849 0 0 1 .326.0083v1.4125c-.2117 0-.4367 0-.7364.024-1.6853.1333-2.434.967-2.6457 1.8842h.0375c.3989-.3983.9613-.628 1.7228-.628 1.36 0 2.5083.93 2.5083 2.5603 0 1.5583-1.2358 2.8384-2.9958 2.8384-2.1588 0-3.2196-1.557-3.2196-3.429 0-1.4736.5618-2.706 1.4353-3.4916.8112-.7125 1.8592-1.099 3.1322-1.1593a5.5849 5.5849 0 0 1 .4354-.0198zm6.9269 0a5.5849 5.5849 0 0 1 .327.0083v1.4125c-.2117 0-.4367 0-.7364.024-1.6853.1333-2.434.967-2.6457 1.8842h.0375c.3989-.3983.9613-.628 1.7228-.628 1.36 0 2.5072.93 2.5072 2.5603 0 1.5583-1.2352 2.8384-2.9947 2.8384-2.1593 0-3.2196-1.557-3.2196-3.429 0-1.4736.5618-2.706 1.4353-3.4916.8112-.7125 1.8592-1.099 3.1322-1.1593a5.5849 5.5849 0 0 1 .4344-.0198zm-8.8477 4.0061c-.512 0-.9356.301-1.1228.7-.0496.096-.075.2423-.075.4593.0373.8336.449 1.5823 1.3103 1.5823h.0125c.6614 0 1.0854-.5928 1.0854-1.3896 0-.7253-.3992-1.352-1.2104-1.352zm6.928 0c-.512 0-.9357.301-1.123.7-.0495.096-.075.2423-.075.4593.0374.8336.4491 1.5823 1.3105 1.5823h.0125c.6613 0 1.0853-.5928 1.0853-1.3896 0-.7253-.3992-1.352-1.2103-1.352Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/cloudbees.svg b/assets/lib/simple-icons/icons/cloudbees.svg
index 52ca703c..2bd0a4ca 100644
--- a/assets/lib/simple-icons/icons/cloudbees.svg
+++ b/assets/lib/simple-icons/icons/cloudbees.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>CloudBees icon</title><path d="M3.55 6.41c0-1.2.73-2.28 1.88-2.8A3.51 3.51 0 0 1 8.94 4l2.52-2.35A7.25 7.25 0 0 0 3.22.98a6.22 6.22 0 0 0-2.95 7.2 6.82 6.82 0 0 0 6.6 4.64h2.58v-3.3H6.87C5.04 9.5 3.55 8.11 3.55 6.4zm13.51 4.73h-2.58v3.3h2.58c1.83 0 3.32 1.4 3.32 3.1 0 1.72-1.49 3.1-3.32 3.1s-3.32-1.37-3.32-3.08V6.4c0-1.58-.63-3.11-1.76-4.29L9.46 4.48c.47.53.73 1.22.73 1.93v11.14c0 3.54 3.08 6.41 6.87 6.41 3.8 0 6.87-2.87 6.87-6.41s-3.07-6.41-6.87-6.41z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>CloudBees</title><path d="M6.87.283C3.081.283 0 3.32 0 7.05c0 3.732 3.082 6.767 6.87 6.767h2.429v-3.495h-2.43c-1.83 0-3.319-1.468-3.319-3.272 0-1.804 1.488-3.27 3.32-3.27.734 0 1.377.19 1.928.567l2.51-2.473C10.06.814 8.58.284 6.87.284zm5.152 2.231c-.066-.005-.141.08-.35.252a.457.457 0 0 0-.028.026L9.722 4.674c-.323.315-.29.203-.066.556a3.204 3.204 0 0 1 .532 1.749v9.991c0 3.73 3.096 6.747 6.908 6.747C20.907 23.717 24 20.7 24 16.97c0-3.728-3.093-6.75-6.904-6.75H13.76V6.979c0-1.495-.512-3.002-1.436-4.158-.175-.203-.234-.3-.3-.307zm5.246 11.209c1.762.088 3.168 1.502 3.168 3.247 0 1.802-1.5 3.264-3.342 3.264s-3.335-1.477-3.335-3.28v-3.219h3.509z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/cloudcannon.svg b/assets/lib/simple-icons/icons/cloudcannon.svg
index d5c033d6..823abccd 100644
--- a/assets/lib/simple-icons/icons/cloudcannon.svg
+++ b/assets/lib/simple-icons/icons/cloudcannon.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>CloudCannon icon</title><path d="M20.686 7.602c.321-1.964-1.203-3.778-3.21-3.778-.91 0-1.733.376-2.325.977a1.132 1.132 0 0 0-1.061-.744c-.63 0-1.141.51-1.141 1.14s.429.909 1.34 1.335a5.884 5.884 0 0 1 .813.46c.275.184.534.388.776.612A6.02 6.02 0 0 1 17.796 12a6.02 6.02 0 0 1-2.694 5.008 6.16 6.16 0 0 1-.813.46c-.911.427-1.34.704-1.34 1.335 0 .63.51 1.141 1.14 1.141.492 0 .9-.312 1.062-.744.592.6 1.414.976 2.325.976 2.025 0 3.527-1.81 3.21-3.778C22.61 15.842 24 14.026 24 12.001c0-2.038-1.382-3.837-3.314-4.399zM9.711 17.468a6.193 6.193 0 0 1-1.589-1.073A6.02 6.02 0 0 1 6.204 12a6.02 6.02 0 0 1 1.918-4.395 6.22 6.22 0 0 1 1.589-1.072c.91-.427 1.34-.704 1.34-1.335s-.51-1.141-1.14-1.141c-.492 0-.9.312-1.062.744a3.257 3.257 0 0 0-2.325-.976c-2.003 0-3.536 1.807-3.21 3.778C1.381 8.164 0 9.962 0 12c0 2.028 1.38 3.836 3.314 4.397-.323 1.954 1.198 3.778 3.21 3.778.91 0 1.733-.375 2.325-.976.162.432.57.744 1.061.744.63 0 1.141-.51 1.141-1.14 0-.631-.429-.909-1.34-1.335zM12 8.443a3.557 3.557 0 1 1 0 7.114 3.557 3.557 0 0 1 0-7.114z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>CloudCannon</title><path d="M20.686 7.602c.321-1.964-1.203-3.778-3.21-3.778-.91 0-1.733.376-2.325.977a1.132 1.132 0 0 0-1.061-.744c-.63 0-1.141.51-1.141 1.14s.429.909 1.34 1.335a5.884 5.884 0 0 1 .813.46c.275.184.534.388.776.612A6.02 6.02 0 0 1 17.796 12a6.02 6.02 0 0 1-2.694 5.008 6.16 6.16 0 0 1-.813.46c-.911.427-1.34.704-1.34 1.335 0 .63.51 1.141 1.14 1.141.492 0 .9-.312 1.062-.744.592.6 1.414.976 2.325.976 2.025 0 3.527-1.81 3.21-3.778C22.61 15.842 24 14.026 24 12.001c0-2.038-1.382-3.837-3.314-4.399zM9.711 17.468a6.193 6.193 0 0 1-1.589-1.073A6.02 6.02 0 0 1 6.204 12a6.02 6.02 0 0 1 1.918-4.395 6.22 6.22 0 0 1 1.589-1.072c.91-.427 1.34-.704 1.34-1.335s-.51-1.141-1.14-1.141c-.492 0-.9.312-1.062.744a3.257 3.257 0 0 0-2.325-.976c-2.003 0-3.536 1.807-3.21 3.778C1.381 8.164 0 9.962 0 12c0 2.028 1.38 3.836 3.314 4.397-.323 1.954 1.198 3.778 3.21 3.778.91 0 1.733-.375 2.325-.976.162.432.57.744 1.061.744.63 0 1.141-.51 1.141-1.14 0-.631-.429-.909-1.34-1.335zM12 8.443a3.557 3.557 0 1 1 0 7.114 3.557 3.557 0 0 1 0-7.114z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/cloudera.svg b/assets/lib/simple-icons/icons/cloudera.svg
new file mode 100644
index 00000000..d561a713
--- /dev/null
+++ b/assets/lib/simple-icons/icons/cloudera.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Cloudera</title><path d="M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0zm.344 20.251a8.25 8.25 0 1 1 0-16.502 8.21 8.21 0 0 1 5.633 2.234L15.519 8.53a4.686 4.686 0 0 0-3.175-1.239 4.709 4.709 0 1 0 3.284 8.081l2.657 2.346a8.224 8.224 0 0 1-5.941 2.533z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/cloudflare.svg b/assets/lib/simple-icons/icons/cloudflare.svg
index 49011800..a1cf2d6d 100644
--- a/assets/lib/simple-icons/icons/cloudflare.svg
+++ b/assets/lib/simple-icons/icons/cloudflare.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Cloudflare icon</title><path d="M16.5088 16.8447c.1475-.5068.0908-.9707-.1553-1.3154-.2246-.3164-.6045-.499-1.0615-.5205l-8.6592-.1123a.1559.1559 0 0 1-.1333-.0713c-.0283-.042-.0351-.0986-.021-.1553.0278-.084.1123-.1484.2036-.1562l8.7359-.1123c1.0351-.0489 2.1601-.8868 2.5537-1.9136l.499-1.3013c.0215-.0561.0293-.1128.0147-.168-.5625-2.5463-2.835-4.4453-5.5499-4.4453-2.5039 0-4.6284 1.6177-5.3876 3.8614-.4927-.3658-1.1187-.5625-1.794-.499-1.2026.119-2.1665 1.083-2.2861 2.2856-.0283.31-.0069.6128.0635.894C1.5683 13.171 0 14.7754 0 16.752c0 .1748.0142.3515.0352.5273.0141.083.0844.1475.1689.1475h15.9814c.0909 0 .1758-.0645.2032-.1553l.12-.4268zm2.7568-5.5634c-.0771 0-.1611 0-.2383.0112-.0566 0-.1054.0415-.127.0976l-.3378 1.1744c-.1475.5068-.0918.9707.1543 1.3164.2256.3164.6055.498 1.0625.5195l1.8437.1133c.0557 0 .1055.0263.1329.0703.0283.043.0351.1074.0214.1562-.0283.084-.1132.1485-.204.1553l-1.921.1123c-1.041.0488-2.1582.8867-2.5527 1.914l-.1406.3585c-.0283.0713.0215.1416.0986.1416h6.5977c.0771 0 .1474-.0489.169-.126.1122-.4082.1757-.837.1757-1.2803 0-2.6025-2.125-4.727-4.7344-4.727"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Cloudflare</title><path d="M16.5088 16.8447c.1475-.5068.0908-.9707-.1553-1.3154-.2246-.3164-.6045-.499-1.0615-.5205l-8.6592-.1123a.1559.1559 0 0 1-.1333-.0713c-.0283-.042-.0351-.0986-.021-.1553.0278-.084.1123-.1484.2036-.1562l8.7359-.1123c1.0351-.0489 2.1601-.8868 2.5537-1.9136l.499-1.3013c.0215-.0561.0293-.1128.0147-.168-.5625-2.5463-2.835-4.4453-5.5499-4.4453-2.5039 0-4.6284 1.6177-5.3876 3.8614-.4927-.3658-1.1187-.5625-1.794-.499-1.2026.119-2.1665 1.083-2.2861 2.2856-.0283.31-.0069.6128.0635.894C1.5683 13.171 0 14.7754 0 16.752c0 .1748.0142.3515.0352.5273.0141.083.0844.1475.1689.1475h15.9814c.0909 0 .1758-.0645.2032-.1553l.12-.4268zm2.7568-5.5634c-.0771 0-.1611 0-.2383.0112-.0566 0-.1054.0415-.127.0976l-.3378 1.1744c-.1475.5068-.0918.9707.1543 1.3164.2256.3164.6055.498 1.0625.5195l1.8437.1133c.0557 0 .1055.0263.1329.0703.0283.043.0351.1074.0214.1562-.0283.084-.1132.1485-.204.1553l-1.921.1123c-1.041.0488-2.1582.8867-2.5527 1.914l-.1406.3585c-.0283.0713.0215.1416.0986.1416h6.5977c.0771 0 .1474-.0489.169-.126.1122-.4082.1757-.837.1757-1.2803 0-2.6025-2.125-4.727-4.7344-4.727"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/cloudfoundry.svg b/assets/lib/simple-icons/icons/cloudfoundry.svg
new file mode 100644
index 00000000..c74ed5dc
--- /dev/null
+++ b/assets/lib/simple-icons/icons/cloudfoundry.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Cloud Foundry</title><path d="M12.854 13.537c-.048 1.79.074 3.862.149 4.917.96.136 1.633.456 1.633.83 0 .497-1.193 1.07-2.665 1.07s-2.665-.573-2.665-1.07c0-.374.673-.694 1.633-.83.075-1.055.197-3.127.15-4.917-.044-1.613-.779-3.091-1.676-3.821-.725-.59-1.174-1.427-1.166-2.354.016-1.765 1.683-3.186 3.724-3.186s3.708 1.42 3.723 3.186c.008.927-.44 1.763-1.165 2.354-.897.73-1.632 2.208-1.675 3.821zm6.214 6.596c.287-.115.612-.177.951-.19-.007-.24-.166-.672-.303-.877-.56-.1-1.276-.313-1.658-.682a.48.48 0 0 1-.186-.41c.026-.146.133-.253.278-.329a8.115 8.115 0 0 0-1.08-.515 4.6 4.6 0 0 1-1.697-.124c-.303-.09-.764-.24-.82-.549-.16-.03-.54-.083-.766-.112a4.048 4.048 0 0 0-.07.31.815.815 0 0 0 .56.956c1 .291 1.756.77 1.974 1.359.44 1.19-1.413 2.353-4.231 2.353-2.82 0-4.673-1.163-4.233-2.353.213-.574.94-1.044 1.903-1.337a.863.863 0 0 0 .589-1.005l-.06-.283c-.291.03-.779.101-1.031.148-.019.313-.476.466-.76.564a4.65 4.65 0 0 1-1.708.147 7.82 7.82 0 0 0-1.052.535c.544.23.316.736-.09.97-.407.253-.842.409-1.38.51-.051.088-.111.298-.163.438-.016.136-.063.367-.053.459.645.02 1.268.152 1.62.605.281.508-.024.976-.51 1.364.392.316.986.673 1.45.868a4.82 4.82 0 0 1 2.715-.269c.718.16 1.506.581 1.742 1.289.635.042 1.895.04 2.528-.041.182-.731.907-1.147 1.606-1.326a4.803 4.803 0 0 1 2.712.193c.356-.18 1.03-.602 1.306-.9-.474-.358-.873-.794-.63-1.325.085-.19.301-.33.547-.44zm-9.54-5.848s.418-1.586-1.4-3.632A4.99 4.99 0 0 1 6.88 7.346a5.05 5.05 0 0 1 5.047-5.04c2.822-.065 5.168 2.218 5.164 5.04a4.984 4.984 0 0 1-1.248 3.306c-1.614 1.616-1.4 3.633-1.4 3.633a7.352 7.352 0 0 0 4.956-6.898c.035-4.021-3.39-7.47-7.414-7.385-4.027-.083-7.447 3.364-7.413 7.385a7.352 7.352 0 0 0 4.956 6.898z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/cloudsmith.svg b/assets/lib/simple-icons/icons/cloudsmith.svg
index 683caade..220591c5 100644
--- a/assets/lib/simple-icons/icons/cloudsmith.svg
+++ b/assets/lib/simple-icons/icons/cloudsmith.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" ><title>Cloudsmith icon</title><path d="M16.15 0a4.146 4.146 0 0 0-2.94 1.225c-.981.98-1.34 2.288-1.177 3.53-.458 2.548-2.843 2.908-3.889 2.94-1.176-.098-2.352.327-3.235 1.21a4.142 4.142 0 0 0 0 5.88 4.142 4.142 0 0 0 5.882 0A4.136 4.136 0 0 0 12 12.108v-.23c.097-3.104 2.777-3.529 3.92-3.561h.523c.98-.066 1.928-.458 2.647-1.21a4.142 4.142 0 0 0 0-5.88A4.146 4.146 0 0 0 16.15 0zm-.327 15.7a4.15 4.15 0 0 0-4.15 4.15 4.15 4.15 0 0 0 4.15 4.15 4.15 4.15 0 0 0 4.15-4.15 4.15 4.15 0 0 0-4.15-4.15z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Cloudsmith</title><path d="M16.15 0a4.146 4.146 0 0 0-2.94 1.225c-.981.98-1.34 2.288-1.177 3.53-.458 2.548-2.843 2.908-3.889 2.94-1.176-.098-2.352.327-3.235 1.21a4.142 4.142 0 0 0 0 5.88 4.142 4.142 0 0 0 5.882 0A4.136 4.136 0 0 0 12 12.108v-.23c.097-3.104 2.777-3.529 3.92-3.561h.523c.98-.066 1.928-.458 2.647-1.21a4.142 4.142 0 0 0 0-5.88A4.146 4.146 0 0 0 16.15 0zm-.327 15.7a4.15 4.15 0 0 0-4.15 4.15 4.15 4.15 0 0 0 4.15 4.15 4.15 4.15 0 0 0 4.15-4.15 4.15 4.15 0 0 0-4.15-4.15z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/cloudways.svg b/assets/lib/simple-icons/icons/cloudways.svg
new file mode 100644
index 00000000..af0d75fa
--- /dev/null
+++ b/assets/lib/simple-icons/icons/cloudways.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Cloudways</title><path d="M15.795 5.522a4.938 4.938 0 0 0-2.485.717.434.434 0 0 1-.236.066c-2.717-.002-5.434-.002-8.151-.002a.594.594 0 0 0-.594.45.573.573 0 0 0 .284.66c.112.056.25.082.377.082 2.25.005 4.499.003 6.749.004.044 0 .09.003.152.006l-.09.13a4.942 4.942 0 0 0-.674 1.302c-.03.09-.075.113-.166.113-2.545-.003-4.844-.003-7.193-.002a.602.602 0 0 0-.581.456.584.584 0 0 0 .312.668.875.875 0 0 0 .35.069c1.924.004 3.848.003 5.771.003h.123a.22.22 0 0 1-.074.085c-.5.367-.908.819-1.218 1.356-.046.08-.095.109-.188.109a5042.02 5042.02 0 0 0-7.687-.002.598.598 0 0 0-.566.706c.06.3.3.49.624.49h7.304a5.091 5.091 0 0 0-.074 1.567H7.27c-.233 0-.357.117-.364.349a7.604 7.604 0 0 0 0 .474c.006.236.132.354.37.355.269.001.538.003.807-.001.075-.002.112.023.142.092.186.428.439.816.75 1.165.082.092.168.18.274.292h-5.01a.602.602 0 0 0-.574.48.585.585 0 0 0 .35.664.841.841 0 0 0 .305.051c5.458.004 10.345.01 15.371-.018a4.032 4.032 0 0 0 1.121-.172c2.333-.688 3.704-3.159 3.006-5.566-.434-1.496-1.413-2.504-2.888-3.02-.067-.024-.095-.054-.108-.124a4.072 4.072 0 0 0-.098-.39c-.645-2.184-2.653-3.712-4.929-3.664zM.758 14.556a.31.31 0 0 0-.323.315c-.004.158-.002.316-.002.474.001.274.119.388.396.388h4.163c.203 0 .351-.125.357-.306a9.126 9.126 0 0 0 0-.544c-.006-.192-.14-.327-.327-.327H.758z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/clubhouse.svg b/assets/lib/simple-icons/icons/clubhouse.svg
new file mode 100644
index 00000000..430a9693
--- /dev/null
+++ b/assets/lib/simple-icons/icons/clubhouse.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Clubhouse</title><path d="M23.184 2.654l-10.967 3.5V2.696L.39 6.47v10.025l10.2-3.258v3.441l13.41-4.275-3.634-3.55zM10.592 4.929v6.592l-8.567 2.733V7.662zm9.683.367l-1.85 3.9 2.542 2.467-8.75 2.791V7.871zM1.741 17.863c-.958 0-1.741.783-1.741 1.741 0 .959.783 1.742 1.741 1.742a1.74 1.74 0 100-3.483z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/clyp.svg b/assets/lib/simple-icons/icons/clyp.svg
index d4a6ae4a..c5a5cd3a 100644
--- a/assets/lib/simple-icons/icons/clyp.svg
+++ b/assets/lib/simple-icons/icons/clyp.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Clyp icon</title><path d="M12 17.958a1.137 1.137 0 01-1.138-1.136V7.233a1.137 1.137 0 012.276 0v9.59c0 .627-.51 1.135-1.138 1.135m7.439 2.44A1.137 1.137 0 0118.3 19.26V4.794a1.137 1.137 0 012.276 0v14.467c0 .627-.51 1.136-1.138 1.136M15.719 24a1.137 1.137 0 01-1.138-1.136V1.136a1.137 1.137 0 012.276 0v21.728c0 .627-.509 1.136-1.138 1.136m-7.438-3.16a1.137 1.137 0 01-1.138-1.136V4.296a1.137 1.137 0 012.276 0v15.408c0 .628-.51 1.137-1.138 1.137m-3.72-4.989a1.137 1.137 0 01-1.138-1.136V9.284a1.137 1.137 0 012.276 0v5.432c0 .627-.51 1.136-1.138 1.136Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Clyp</title><path d="M11.9995 17.9583a1.137 1.137 0 01-1.137-1.136V7.2347a1.138 1.138 0 012.275 0v9.5896c0 .626-.51 1.134-1.138 1.134m7.4397 2.4398a1.137 1.137 0 01-1.14-1.1379V4.7958a1.138 1.138 0 012.276 0v14.4654c0 .627-.51 1.136-1.138 1.136M15.7193 24a1.137 1.137 0 01-1.138-1.136V1.138a1.138 1.138 0 012.276 0v21.726c0 .627-.509 1.136-1.138 1.136m-7.4366-3.1599a1.137 1.137 0 01-1.138-1.136V4.2979a1.138 1.138 0 012.276 0v15.4064c0 .628-.51 1.137-1.138 1.137m-3.7199-4.9889a1.137 1.137 0 01-1.138-1.135V9.2857a1.138 1.138 0 012.276 0v5.4318c0 .626-.51 1.135-1.138 1.135z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/cmake.svg b/assets/lib/simple-icons/icons/cmake.svg
index f55f1c70..3ccdced2 100644
--- a/assets/lib/simple-icons/icons/cmake.svg
+++ b/assets/lib/simple-icons/icons/cmake.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 24 24"><title>CMake icon</title><path d="M11.769.066L.067 23.206l12.76-10.843zM23.207 23.934L7.471 17.587 0 23.934zM24 23.736L12.298.463l1.719 19.24zM12.893 12.959l-5.025 4.298 5.62 2.248z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>CMake</title><path d="M11.769.066L.067 23.206l12.76-10.843zM23.207 23.934L7.471 17.587 0 23.934zM24 23.736L12.298.463l1.719 19.24zM12.893 12.959l-5.025 4.298 5.62 2.248z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/cncf.svg b/assets/lib/simple-icons/icons/cncf.svg
new file mode 100644
index 00000000..67c2ec17
--- /dev/null
+++ b/assets/lib/simple-icons/icons/cncf.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>CNCF</title><path d="M0 0v24h24V0H8.004Zm3.431 3.431h4.544l.029.023 4.544 4.544h3.03l-4.572-4.567h9.569v9.563l-.789-.782-3.784-3.79v3.03l2.271 2.272 2.272 2.272.029.03v4.543h-4.55l-.023-.023-2.272-2.278-2.272-2.272H8.427l3.785 3.79.782.783H3.43v-9.563l4.573 4.567v-3.031l-4.55-4.544-.023-.023Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/cnn.svg b/assets/lib/simple-icons/icons/cnn.svg
index 5eccff4b..dda05aa0 100644
--- a/assets/lib/simple-icons/icons/cnn.svg
+++ b/assets/lib/simple-icons/icons/cnn.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>CNN icon</title><path d="M23.9962 15.514c0 2.0638-2.6676 3.0547-4.0789.6576-.1012-.173-2.3252-4.0032-2.3252-4.0032v3.3457c0 2.0637-2.6663 3.0546-4.0776.6575-.1025-.173-2.3253-4.0032-2.3253-4.0032v3.1547c0 1.4318-.8498 2.2073-2.1791 2.2073H5.5299a5.5299 5.5299 0 010-11.0598h1.7946v1.328H5.5299a4.2019 4.2019 0 100 8.4038h3.4494a.8973.8973 0 00.8794-.878V8.524a.2692.2692 0 01.1935-.273c.141-.0384.2897.0487.3987.2333l2.1522 3.7084c1.251 2.1573 2.0728 3.5738 2.083 3.5892.2807.4742.6986.5576.9973.4755a.7973.7973 0 00.582-.787v-6.945a.2705.2705 0 01.191-.2744c.1397-.0384.287.0487.3947.2333l1.9946 3.4366 2.242 3.8648c.2191.3717.5242.5038.7896.5038a.7691.7691 0 00.2063-.0282.7986.7986 0 00.591-.791V6.4707H24zM8.0026 13.9695V8.4857c0-2.0638 2.6675-3.0546 4.0788-.6563.1025.173 2.3253 4.002 2.3253 4.002V8.4856c0-2.0638 2.6662-3.0546 4.0775-.6563.1026.173 2.3253 4.002 2.3253 4.002V6.4705H22.14v8.9999a.2705.2705 0 01-.1935.2743c-.141.0384-.2897-.0487-.3987-.2333a1360.4277 1360.4277 0 01-2.2406-3.8622l-1.9946-3.434c-.2794-.4744-.696-.5577-.9921-.477a.7986.7986 0 00-.5833.7858v6.9464a.2718.2718 0 01-.1935.2743c-.1423.0384-.291-.0487-.3987-.2333-.0192-.032-1.069-1.8407-2.083-3.5892a6211.7971 6211.7971 0 00-2.1535-3.711c-.2794-.4755-.6973-.5575-.996-.4768a.7999.7999 0 00-.5845.7858v6.8002a.3717.3717 0 01-.3487.3474h-3.452a3.6712 3.6712 0 010-7.3424H7.322v1.328H5.5427a2.3432 2.3432 0 100 4.6864H7.636a.364.364 0 00.3666-.3705Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>CNN</title><path d="M23.9962 15.514c0 2.0638-2.6676 3.0547-4.0789.6576-.1012-.173-2.3252-4.0032-2.3252-4.0032v3.3457c0 2.0637-2.6663 3.0546-4.0776.6575-.1025-.173-2.3253-4.0032-2.3253-4.0032v3.1547c0 1.4318-.8498 2.2073-2.1791 2.2073H5.5299a5.5299 5.5299 0 010-11.0598h1.7946v1.328H5.5299a4.2019 4.2019 0 100 8.4038h3.4494a.8973.8973 0 00.8794-.878V8.524a.2692.2692 0 01.1935-.273c.141-.0384.2897.0487.3987.2333l2.1522 3.7084c1.251 2.1573 2.0728 3.5738 2.083 3.5892.2807.4742.6986.5576.9973.4755a.7973.7973 0 00.582-.787v-6.945a.2705.2705 0 01.191-.2744c.1397-.0384.287.0487.3947.2333l1.9946 3.4366 2.242 3.8648c.2191.3717.5242.5038.7896.5038a.7691.7691 0 00.2063-.0282.7986.7986 0 00.591-.791V6.4707H24zM8.0026 13.9695V8.4857c0-2.0638 2.6675-3.0546 4.0788-.6563.1025.173 2.3253 4.002 2.3253 4.002V8.4856c0-2.0638 2.6662-3.0546 4.0775-.6563.1026.173 2.3253 4.002 2.3253 4.002V6.4705H22.14v8.9999a.2705.2705 0 01-.1935.2743c-.141.0384-.2897-.0487-.3987-.2333a1360.4277 1360.4277 0 01-2.2406-3.8622l-1.9946-3.434c-.2794-.4744-.696-.5577-.9921-.477a.7986.7986 0 00-.5833.7858v6.9464a.2718.2718 0 01-.1935.2743c-.1423.0384-.291-.0487-.3987-.2333-.0192-.032-1.069-1.8407-2.083-3.5892a6211.7971 6211.7971 0 00-2.1535-3.711c-.2794-.4755-.6973-.5575-.996-.4768a.7999.7999 0 00-.5845.7858v6.8002a.3717.3717 0 01-.3487.3474h-3.452a3.6712 3.6712 0 010-7.3424H7.322v1.328H5.5427a2.3432 2.3432 0 100 4.6864H7.636a.364.364 0 00.3666-.3705Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/co-op.svg b/assets/lib/simple-icons/icons/co-op.svg
deleted file mode 100644
index 3e32d71f..00000000
--- a/assets/lib/simple-icons/icons/co-op.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Co-op icon</title><path d="M23.275 5.265c0-.852-.132-1.703-.36-2.555-.328-1.016-1.081-1.834-2.031-2.194a9.248 9.248 0 0 0-6.092 0 3.168 3.168 0 0 0-2.03 2.194 9.532 9.532 0 0 0 0 5.077c.326 1.015 1.08 1.834 2.03 2.194a8.04 8.04 0 0 0 3.046.491c1.049 0 2.063-.196 3.046-.491a3.172 3.172 0 0 0 2.031-2.194c.229-.819.36-1.67.36-2.522zm-3.308 0c0 .393-.065.852-.196 1.212-.164.524-.623.95-1.18 1.081a4.233 4.233 0 0 1-1.571 0 1.473 1.473 0 0 1-1.18-1.081 4.025 4.025 0 0 1 0-2.489c.163-.524.622-.95 1.18-1.081a4.233 4.233 0 0 1 1.571 0 1.476 1.476 0 0 1 1.18 1.081c.13.458.196.884.196 1.277m-8.745 13.79a9.552 9.552 0 0 0 0-5.077c-.327-1.016-1.081-1.834-2.03-2.195a9.248 9.248 0 0 0-6.092 0 3.173 3.173 0 0 0-2.031 2.195 9.552 9.552 0 0 0 0 5.077c.328 1.015 1.081 1.834 2.031 2.193a9.248 9.248 0 0 0 6.092 0 3.392 3.392 0 0 0 2.03-2.193m-2.948-2.523c0 .393-.066.852-.197 1.212a1.644 1.644 0 0 1-1.179 1.081 4.238 4.238 0 0 1-1.572 0 1.477 1.477 0 0 1-1.179-1.081 4.04 4.04 0 0 1 0-2.489 1.64 1.64 0 0 1 1.179-1.081 4.196 4.196 0 0 1 1.572 0 1.476 1.476 0 0 1 1.179 1.081c.131.426.197.851.197 1.277m0-11.3h3.308c0-.851-.131-1.703-.36-2.521-.327-1.016-1.081-1.834-2.03-2.194a9.248 9.248 0 0 0-6.092 0C2.084.909 1.331 1.728 1.068 2.743a9.552 9.552 0 0 0 0 5.077c.328 1.015 1.081 1.834 2.031 2.194.982.36 1.998.492 3.046.492 1.048 0 2.063-.197 3.046-.492a3.17 3.17 0 0 0 2.03-2.194c.033-.131.065-.295.131-.426L8.241 5.953c-.033.196-.065.36-.131.557-.163.524-.622.95-1.179 1.081a4.238 4.238 0 0 1-1.572 0A1.478 1.478 0 0 1 4.18 6.51a4.04 4.04 0 0 1 0-2.489c.164-.524.622-.95 1.179-1.082a4.238 4.238 0 0 1 1.572 0A1.476 1.476 0 0 1 8.11 4.021c.098.425.164.818.164 1.211m4.421 8.779a9.442 9.442 0 0 0-.36 2.555V24h3.308v-7.468c0-.393.065-.852.196-1.212.163-.524.622-.95 1.18-1.081a4.191 4.191 0 0 1 1.571 0 1.478 1.478 0 0 1 1.18 1.081 4.04 4.04 0 0 1 0 2.489c-.164.523-.623.95-1.146 1.08a4.196 4.196 0 0 1-1.572 0c-.099-.031-.229-.064-.327-.098l1.113 3.079c1.049 0 2.063-.197 3.046-.491a3.175 3.175 0 0 0 2.031-2.194 9.552 9.552 0 0 0 0-5.077c-.328-1.016-1.081-1.834-2.031-2.195a9.248 9.248 0 0 0-6.092 0c-1.016.263-1.769 1.082-2.097 2.098"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/cockpit.svg b/assets/lib/simple-icons/icons/cockpit.svg
new file mode 100644
index 00000000..4bcff12b
--- /dev/null
+++ b/assets/lib/simple-icons/icons/cockpit.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Cockpit</title><path d="M12 0C5.383 0 0 5.382 0 12s5.383 12 12 12 12-5.383 12-12S18.617 0 12 0zm0 1.799A10.19 10.19 0 0 1 22.207 12 10.19 10.19 0 0 1 12 22.201 10.186 10.186 0 0 1 1.799 12 10.186 10.186 0 0 1 12 1.799zm4.016 5.285c-.49-.018-1.232.368-1.899 1.031l-1.44 1.43-4.31-1.447-.842.867 3.252 2.47-.728.723a4.747 4.747 0 0 0-.639.787L7.451 12.8l-.476.484 1.947 1.444 1.424 1.943.48-.48-.144-1.98c.246-.16.497-.361.74-.603l.765-.76 2.495 3.274.869-.84-1.455-4.332 1.394-1.385c.89-.885 1.298-1.92.918-2.322a.547.547 0 0 0-.392-.158z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/cockroachlabs.svg b/assets/lib/simple-icons/icons/cockroachlabs.svg
new file mode 100644
index 00000000..df09a0f9
--- /dev/null
+++ b/assets/lib/simple-icons/icons/cockroachlabs.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Cockroach Labs</title><path d="M17.645 16.155a13.013 13.013 0 0 0-4.479-13.287 11.617 11.617 0 0 1 5.815-1.546c.774 0 1.545.075 2.304.226l.32-1.282A13.092 13.092 0 0 0 18.98 0 12.93 12.93 0 0 0 12 2.03 12.933 12.933 0 0 0 5.021 0C4.139 0 3.26.089 2.396.266l.319 1.282a11.83 11.83 0 0 1 2.306-.226 11.64 11.64 0 0 1 5.817 1.544 13.01 13.01 0 0 0 .792 20.877l.375.257.373-.257c2.624-1.801 4.5-4.5 5.27-7.588zm-6.305 5.7A11.687 11.687 0 0 1 7.825 9.519a13.08 13.08 0 0 0 2.457 2.977 3.202 3.202 0 0 1 1.058 2.383zm.661-9.657a11.717 11.717 0 0 1-2.343-2.315 3.23 3.23 0 0 1 0-3.912 11.67 11.67 0 0 1 2.347-2.333c.9.671 1.697 1.468 2.37 2.366a3.197 3.197 0 0 1 0 3.832 11.816 11.816 0 0 1-2.374 2.362zm.659 9.657v-6.976a3.202 3.202 0 0 1 1.06-2.383 13.026 13.026 0 0 0 2.455-2.977 11.694 11.694 0 0 1-3.515 12.336Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/cocoapods.svg b/assets/lib/simple-icons/icons/cocoapods.svg
index 56f0a0cd..48ff39db 100644
--- a/assets/lib/simple-icons/icons/cocoapods.svg
+++ b/assets/lib/simple-icons/icons/cocoapods.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>CocoaPods icon</title><path d="M8.812 17.176c-2.968 0-4.956-2.308-4.956-5.176 0-2.705 1.776-5.176 4.91-5.176 2.407 0 3.856 1.445 4.207 3.357h3.95C16.479 6.427 13.51 3.42 8.718 3.42 3.131 3.42 0 7.523 0 12c0 4.57 3.295 8.58 8.766 8.58 4.58 0 7.549-2.822 8.18-6.272h-4.02c-.467 1.609-1.916 2.868-4.114 2.868zM24 12.068l-3.466 8.055-2.38-1.022 2.992-7.055-3.01-7.096 2.433-1.042Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>CocoaPods</title><path d="M8.812 17.176c-2.968 0-4.956-2.308-4.956-5.176 0-2.705 1.776-5.176 4.91-5.176 2.407 0 3.856 1.445 4.207 3.357h3.95C16.479 6.427 13.51 3.42 8.718 3.42 3.131 3.42 0 7.523 0 12c0 4.57 3.295 8.58 8.766 8.58 4.58 0 7.549-2.822 8.18-6.272h-4.02c-.467 1.609-1.916 2.868-4.114 2.868zM24 12.068l-3.466 8.055-2.38-1.022 2.992-7.055-3.01-7.096 2.433-1.042Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/cocos.svg b/assets/lib/simple-icons/icons/cocos.svg
new file mode 100644
index 00000000..233e347e
--- /dev/null
+++ b/assets/lib/simple-icons/icons/cocos.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Cocos</title><path d="M10.365 0h.002zc-.007.004-.002.066.018.143.19.787.395 1.67.395 1.7 0 .023-.242.247-.538.5-.296.253-.628.552-.735.663l-.175.182h-.247c-1.53-.004-3.06.014-4.588-.01-.578-.01-.855.407-.855.85.007 6.384.007 12.766.007 19.15 0 .542.283.822.828.822h15.06c.542 0 .825-.28.825-.825V4.025c0-.56-.276-.838-.83-.838-1.632 0-3.264.002-4.896-.006h-.208l-.546-.532c-.94-.915-1.62-1.455-2.762-2.18A17.17 17.17 0 0 0 10.366 0zm.955 1.35c.03-.004.232.125.47.3a16.989 16.989 0 0 1 2.497 2.31h.002c.465.52.903 1.057 1.268 1.6.357.53.935 1.546.935 1.64 0 .03.017.052.037.052.02 0 .083-.168.14-.374.127-.45.126-.448.388.403.38 1.238.51 2.106.51 3.38 0 .992-.047 1.402-.23 2.12-.053.205-.066.318-.035.318.026 0 .184-.038.352-.086.167-.048.31-.08.318-.073.028.027-.394.753-.692 1.19-1.246 1.828-2.718 2.91-4.358 3.206-.917.165-1.763.1-2.61-.198-.45-.158-.813-.348-1.398-.733-1.25-.82-2.206-2.292-2.68-4.12-.214-.82-.378-2.076-.378-2.895V9l.277.415c.403.603.89 1.217.93 1.172.006-.01-.104-.224-.247-.478-.302-.536-.303-.53-.08-1.39.362-1.406 1.112-2.862 2.108-4.098.143-.178.395-.43.614-.663.603-.644 1.29-1.32 1.342-1.27.01.01-.01.126-.045.257-.134.492-.33 1.332-.313 1.348.004.004.126-.216.197-.336.072-.124.096-.15.203-.344.21-.38.39-.7.395-.706.006-.007.132.112.28.264.222.225.27.256.25.167-.014-.06-.123-.522-.245-1.028-.12-.506-.215-.938-.207-.96 0-.002.002-.003.004-.003zm4.08 2.59h3.71c.372 0 .49.114.49.482v13.9c0 .36-.12.457-.558.457H6.42c-.52 0-1.04.002-1.56 0-.33-.003-.453-.126-.453-.448V4.41c0-.343.12-.467.46-.467 1.17-.002 2.342 0 3.513 0 .048 0 .097.005.116.006h.1l-.007.006-.138.165c-.948 1.143-1.77 2.63-2.157 3.912-.053.176-.102.32-.11.32-.006 0-.207-.29-.443-.64-.237-.352-.448-.652-.47-.665-.074-.046-.01 3.277.075 3.897.305 2.222 1.053 3.926 2.292 5.214.62.646 1.705 1.31 2.633 1.612 1.36.444 2.87.33 4.27-.32 1.37-.638 2.723-1.993 3.706-3.713.366-.642.934-1.742.91-1.766-.01-.01-.255.05-.542.132a5.99 5.99 0 0 1-.533.14 1.427 1.427 0 0 1 .033-.292c.09-.534.103-1.682.027-2.396-.134-1.262-.344-2.09-.93-3.663-.467-1.258-.473-1.274-.5-1.274-.014 0-.092.238-.173.528-.082.29-.154.526-.16.526a.831.831 0 0 1-.114-.165 21.09 21.09 0 0 0-.972-1.34l-.174-.21c.083-.005.158-.013.234-.013zm-3.6.71-.032.234c-.027.2-.205.86-.31 1.157-.048.132.26-.17.433-.426.08-.115.152-.21.165-.21.014 0 .17.147.35.327.18.18.333.32.34.313.03-.03-.21-.515-.377-.76a3.624 3.624 0 0 0-.37-.445zM9.32 6.584l-.132.125c-.178.17-.485.64-.63.96-.15.332-.33.85-.328.94 0 .04.072-.06.158-.222.155-.29.603-.872.67-.872.02 0 .06.053.09.12.06.132.36.552.378.53a1.875 1.875 0 0 0-.045-.32c-.03-.17-.07-.465-.085-.66a6.93 6.93 0 0 0-.053-.476zm5.453.008c-.02 0-.038.113-.04.252 0 .24-.097 1.002-.157 1.242-.026.107-.023.107.088-.02.063-.074.166-.22.23-.33.065-.11.123-.207.132-.217.054-.063.71.816.786 1.052.017.052.04.083.053.07.03-.03-.188-.687-.323-.975-.197-.42-.664-1.074-.768-1.074zm-2.63 1.1h.002zc-.04.006-.274.505-.348.746-.083.27-.182.978-.18 1.296v.307l.108-.41c.095-.368.25-.758.365-.926.035-.05.087-.023.274.145.127.114.267.227.31.25.085.045.11 0 .042-.072-.057-.06-.392-.855-.47-1.117-.035-.12-.08-.217-.1-.22zM9.56 10.917c-.725.02-1.372.593-1.573 1.445-.088.374-.082.66.022 1.062.2.792.655 1.322 1.36 1.59.098.038.3.058.55.05.34-.007.433-.027.65-.138.51-.258.868-.8.965-1.463.043-.298.04-.41-.022-.72-.187-.95-.812-1.636-1.64-1.8-.104-.02-.21-.03-.313-.026zm5.087 0c-.03 0-.06.002-.09.004-.847.058-1.65.858-1.808 1.882-.143.93.33 1.89 1.073 2.183.344.135.928.112 1.277-.05.814-.38 1.355-1.432 1.222-2.373-.12-.854-.656-1.474-1.402-1.62a1.393 1.393 0 0 0-.273-.024zm-.515 2.06c.38.012.612.473.366.792-.096.12-.338.2-.51.16-.51-.11-.456-.88.066-.948a.51.51 0 0 1 .078-.004zm-3.968.01c.2 0 .24.02.354.146.192.215.165.6-.05.714-.19.1-.332.12-.467.065-.33-.14-.424-.52-.192-.78.113-.126.155-.144.356-.144zM8.65 19.543c.25 0 .498.002.746.008.49.01.683.22.683.712v1.162h-.003v1.14c-.003.416-.192.633-.608.646a25.8 25.8 0 0 1-1.622 0c-.416-.015-.603-.228-.608-.648-.005-.775-.006-1.55 0-2.324.004-.466.206-.676.666-.687.25-.005.497-.008.745-.008zm6.23 0c.29.002.577.01.865.026.348.02.53.23.534.58.013.817.016 1.636.004 2.454-.005.39-.21.59-.608.604-.54.02-1.08.02-1.62 0-.428-.015-.606-.23-.61-.666v-1.16h-.003c0-.39-.004-.775 0-1.164.004-.418.166-.636.573-.656.288-.013.576-.02.865-.017zm-2.744.002c.29 0 .583.003.88.003v.632h-1.452c-.31 0-.333.023-.333.34 0 .6.006 1.2-.003 1.8-.003.2.075.275.27.272.424-.007.847 0 1.272 0h.267l.003.603c-.05.007-.098.02-.146.02-.527.002-1.054.005-1.58 0-.516-.005-.716-.21-.716-.722v-2.24c0-.476.197-.692.67-.703.29-.006.577-.007.868-.006zm6.29.006c.358 0 .72.005 1.086.005v.622h-1.794c-.26 0-.286.027-.286.292.006.727-.102.634.64.64.298.003.6-.003.898.003.433.01.632.206.64.633.004.278.005.557-.004.834-.013.383-.193.607-.572.62-.736.023-1.474.006-2.226.006v-.616h.244c.557 0 1.113-.003 1.668.002.186.002.272-.072.264-.26a5.38 5.38 0 0 1 0-.44c.007-.188-.078-.258-.266-.254-.4.01-.804.006-1.206.002-.533-.006-.722-.203-.722-.737 0-.242-.003-.483.004-.724.012-.387.19-.608.568-.62.353-.01.707-.01 1.065-.01zm-12.84.02c.41-.003.82.006 1.237.006v.586c-.08.005-.156.014-.232.014-.438.002-.877.005-1.315 0-.175-.002-.25.072-.25.25.006.638.008 1.274 0 1.91 0 .196.083.257.265.256.438-.005.877-.002 1.316-.002h.223v.608c-.65 0-1.284.02-1.917-.008-.342-.014-.51-.227-.514-.568-.01-.826-.01-1.653 0-2.48.003-.318.157-.544.448-.557.25-.014.51-.01.737-.016zm9.806.607c-.357.007-.715.005-1.072 0-.177 0-.248.08-.246.255.004.643.004 1.285 0 1.927 0 .16.07.23.22.23.38.003.76 0 1.138 0 .17 0 .228-.083.224-.248-.008-.32 0-.642-.005-.963 0-.316-.007-.63 0-.944h.004c.005-.19-.077-.26-.262-.258zm-7.282.003c-.168-.002-.237.076-.235.24.005.322 0 .644 0 .965 0 .32.006.64-.004.962h.002c-.004.17.067.245.23.245H9.22c.158 0 .235-.068.234-.24-.006-.642-.004-1.283 0-1.926 0-.16-.056-.248-.228-.246-.373.005-.745.003-1.117 0z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/coda.svg b/assets/lib/simple-icons/icons/coda.svg
index ff916e60..5d061565 100644
--- a/assets/lib/simple-icons/icons/coda.svg
+++ b/assets/lib/simple-icons/icons/coda.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Coda icon</title><path d="M21.194 0H2.806A2.01 2.01 0 0 0 .8 2v20c0 1.1.903 2 2.006 2h18.388a2.01 2.01 0 0 0 2.006-2v-.933c-.033-1.2-.067-3.7-.067-4.834 0-.633-.468-1.166-1.07-1.166-.668 0-1.103.4-1.437.733-1.003.9-2.508 1.067-3.812.833-.601-.133-1.17-.3-1.638-.6-1.438-.833-2.374-2.4-2.374-4.066 0-1.667.936-3.2 2.374-4.067.502-.3 1.07-.467 1.638-.6 1.27-.233 2.809-.067 3.812.833.367.334.802.734 1.437.734.602 0 1.07-.534 1.07-1.167 0-1.1.034-3.633.067-4.833V2c0-1.1-.903-2-2.006-2Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Coda</title><path d="M21.194 0H2.806A2.01 2.01 0 0 0 .8 2v20c0 1.1.903 2 2.006 2h18.388a2.01 2.01 0 0 0 2.006-2v-.933c-.033-1.2-.067-3.7-.067-4.834 0-.633-.468-1.166-1.07-1.166-.668 0-1.103.4-1.437.733-1.003.9-2.508 1.067-3.812.833-.601-.133-1.17-.3-1.638-.6-1.438-.833-2.374-2.4-2.374-4.066 0-1.667.936-3.2 2.374-4.067.502-.3 1.07-.467 1.638-.6 1.27-.233 2.809-.067 3.812.833.367.334.802.734 1.437.734.602 0 1.07-.534 1.07-1.167 0-1.1.034-3.633.067-4.833V2c0-1.1-.903-2-2.006-2Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/codacy.svg b/assets/lib/simple-icons/icons/codacy.svg
index 6791c456..f2a939b2 100644
--- a/assets/lib/simple-icons/icons/codacy.svg
+++ b/assets/lib/simple-icons/icons/codacy.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Codacy icon</title><path d="M3.883 9.825a8.46 8.46 0 0 1 3.875-5.07l.04-.021-1.803-3.113C3.276 3.212 1.268 5.769.427 8.81l-.02.084zM9.824 3.894a8.246 8.246 0 0 1 2.164-.283h.005V.016h-.019a12.05 12.05 0 0 0-3.165.421l.084-.02zM14.178 3.897a8.449 8.449 0 0 1 5.063 3.875l.021.04 3.117-1.799c-1.591-2.718-4.146-4.726-7.186-5.568l-.084-.02zM0 12v.006c0 1.1.148 2.165.425 3.177l-.02-.084 3.476-.929a8.14 8.14 0 0 1-.284-2.161v-.008zM1.605 17.995c.55.941 1.18 1.754 1.901 2.475l2.553-2.54a8.56 8.56 0 0 1-1.313-1.695l-.022-.04zM5.995 22.38a11.77 11.77 0 0 0 5.967 1.604h.021-.001v-3.595h-.004a8.308 8.308 0 0 1-4.223-1.145l.039.021zM19.259 16.205a8.44 8.44 0 0 1-5.034 3.884l-.059.014.931 3.476c3.124-.86 5.681-2.863 7.246-5.52l.031-.056zM23.577 15.221c.268-.947.423-2.035.423-3.159 0-1.087-.144-2.14-.415-3.142l.019.084-3.486.931c.175.64.275 1.374.275 2.132 0 .79-.109 1.555-.313 2.28l.014-.059z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Codacy</title><path d="M3.883 9.825a8.46 8.46 0 0 1 3.875-5.07l.04-.021-1.803-3.113C3.276 3.212 1.268 5.769.427 8.81l-.02.084zM9.824 3.894a8.246 8.246 0 0 1 2.164-.283h.005V.016h-.019a12.05 12.05 0 0 0-3.165.421l.084-.02zM14.178 3.897a8.449 8.449 0 0 1 5.063 3.875l.021.04 3.117-1.799c-1.591-2.718-4.146-4.726-7.186-5.568l-.084-.02zM0 12v.006c0 1.1.148 2.165.425 3.177l-.02-.084 3.476-.929a8.14 8.14 0 0 1-.284-2.161v-.008zM1.605 17.995c.55.941 1.18 1.754 1.901 2.475l2.553-2.54a8.56 8.56 0 0 1-1.313-1.695l-.022-.04zM5.995 22.38a11.77 11.77 0 0 0 5.967 1.604h.021-.001v-3.595h-.004a8.308 8.308 0 0 1-4.223-1.145l.039.021zM19.259 16.205a8.44 8.44 0 0 1-5.034 3.884l-.059.014.931 3.476c3.124-.86 5.681-2.863 7.246-5.52l.031-.056zM23.577 15.221c.268-.947.423-2.035.423-3.159 0-1.087-.144-2.14-.415-3.142l.019.084-3.486.931c.175.64.275 1.374.275 2.132 0 .79-.109 1.555-.313 2.28l.014-.059z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/codeberg.svg b/assets/lib/simple-icons/icons/codeberg.svg
new file mode 100644
index 00000000..c5605798
--- /dev/null
+++ b/assets/lib/simple-icons/icons/codeberg.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Codeberg</title><path d="M11.955.49A12 12 0 0 0 0 12.49a12 12 0 0 0 1.832 6.373L11.838 5.928a.187.14 0 0 1 .324 0l10.006 12.935A12 12 0 0 0 24 12.49a12 12 0 0 0-12-12 12 12 0 0 0-.045 0zm.375 6.467l4.416 16.553a12 12 0 0 0 5.137-4.213z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/codecademy.svg b/assets/lib/simple-icons/icons/codecademy.svg
index 3c7a96dd..3d845b77 100644
--- a/assets/lib/simple-icons/icons/codecademy.svg
+++ b/assets/lib/simple-icons/icons/codecademy.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Codecademy icon</title><path d="M23.827 19.73h-5.595c-.094 0-.17.058-.17.172v1.515c0 .094.058.17.172.17h5.594c.096 0 .172-.044.172-.164v-1.515c0-.105-.057-.166-.173-.166v-.014.002zM16.463 2.465c.016.035.03.068.047.12v18.79c0 .061-.02.096-.037.114a.168.168 0 0 1-.135.06H.153c-.038 0-.075 0-.097-.02A.181.181 0 0 1 0 21.395V2.566c0-.076.04-.134.096-.15h16.242c.04 0 .096.017.115.034v.016l.01-.001zM1.818 19.575c0 .073.038.136.096.153h12.643c.058-.019.096-.076.096-.154V4.404c0-.073-.039-.134-.098-.15H1.915c-.056.02-.096.073-.096.15l-.003 15.17.002.001zm5.174-8.374c.65 0 1.014.177 1.396.619.058.075.153.094.23.035l1.034-.92c.075-.044.058-.164.02-.224-.635-.764-1.554-1.244-2.74-1.244-1.59 0-2.79.795-3.255 2.206-.165.495-.24 1.126-.24 1.979 0 .855.075 1.484.255 1.98.465 1.426 1.665 2.205 3.255 2.205 1.2 0 2.115-.48 2.745-1.216.045-.074.06-.165-.015-.226L8.64 15.48c-.073-.047-.163-.047-.224.027-.39.45-.795.69-1.454.69-.706 0-1.245-.345-1.47-1.035-.136-.39-.166-.87-.166-1.483 0-.615.045-1.068.18-1.471.24-.659.766-1.007 1.486-1.007z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Codecademy</title><path d="M23.827 19.729h-5.595c-.094 0-.17.058-.17.172v1.515c0 .094.058.17.172.17h5.594c.096 0 .172-.044.172-.164v-1.515c0-.105-.057-.166-.173-.166v-.014zM16.463 2.463c.016.034.03.067.047.12v18.79c0 .06-.02.096-.037.114a.168.168 0 01-.135.06H.153c-.038 0-.075 0-.097-.02A.181.181 0 010 21.393V2.564c0-.076.04-.134.096-.15h16.242c.04 0 .096.017.115.034v.016zM1.818 19.573c0 .072.038.135.096.152h12.643c.058-.019.096-.076.096-.154V4.402c0-.073-.039-.134-.098-.15H1.915c-.056.02-.096.073-.096.15l-.003 15.17zm5.174-8.375c.65 0 1.014.177 1.396.62.058.074.153.093.23.034l1.034-.92c.075-.044.058-.164.02-.224-.635-.764-1.554-1.244-2.74-1.244-1.59 0-2.79.795-3.255 2.206-.165.495-.24 1.126-.24 1.98 0 .854.075 1.483.255 1.98.465 1.425 1.665 2.204 3.255 2.204 1.2 0 2.115-.48 2.745-1.216.045-.074.06-.165-.015-.226l-1.037-.915c-.073-.047-.163-.047-.224.027-.39.45-.795.69-1.454.69-.706 0-1.245-.345-1.47-1.035-.136-.39-.166-.87-.166-1.483 0-.615.045-1.068.18-1.47.24-.66.766-1.008 1.486-1.008z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/codeceptjs.svg b/assets/lib/simple-icons/icons/codeceptjs.svg
new file mode 100644
index 00000000..b4832329
--- /dev/null
+++ b/assets/lib/simple-icons/icons/codeceptjs.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>CodeceptJS</title><path d="M15.3986.597c-1.424 0-1.5473.0048-1.59.0807-.0238.0475-1.0206 2.6485-2.212 5.7811-1.196 3.1326-2.1737 5.7005-2.1832 5.71-.0048.0047-1.0348-1.1534-2.2831-2.5726C5.1937 7.394 4.852 7.0236 4.8283 7.1138c-.0424.1883-.0657.3492-.095.5412l2.7815 3.6262c1.5283 1.9935 2.7956 3.631 2.8146 3.6358.0285.0095 6.474-13.9308 6.588-14.2393.0285-.076-.0664-.0807-1.5188-.0807zM7.6828 2.1692a8.7326 8.7326 0 0 0-.88.0463c-1.2483.1282-2.4871.5696-3.5218 1.2579-.5554.3654-1.5142 1.329-1.9034 1.9033-2.1311 3.161-1.7561 7.3758.8924 9.9816.6028.5933 1.2008 1.0158 2.041 1.4382 1.03.5221 2.0694.8259 3.4174 1.0157 1.0062.1377 2.9238.1092 4.1199-.0616l.1993-.0285v-.6692l-.1756.0284c-1.0727.1709-3.0994.1614-4.0962-.0143-2.601-.4604-4.5091-1.7609-5.577-3.8066-.9256-1.7704-1.049-4.0486-.3228-5.9947.375-1.0157.8781-1.7989 1.647-2.563.7974-.7974 1.5664-1.2769 2.5631-1.6091 1.3148-.4367 2.9475-.4699 4.4901-.095.2658.0618.489.114.4937.114.0284 0 .185-.3797.166-.3987-.0427-.038-1.0015-.2658-1.4903-.356a11.0808 11.0808 0 0 0-2.0628-.1887zm10.6834.792c-.0283-.0042.0274.0476.184.1846 2.1074 1.8321 3.3605 4.0108 3.8019 6.6118.1424.8449.1566 2.3922.0284 3.2275-.3654 2.3495-1.3859 4.3857-3.0471 6.0565-1.8559 1.87-4.101 2.9665-6.8112 3.3225-.8306.1091-2.5345.0712-3.37-.0712-.9777-.1662-1.9697-.4747-3.0139-.9256-.5743-.2515.432.3892 1.2863.8164 2.5298 1.2673 5.4679 1.5568 8.2588.8211.731-.1946 1.3527-.432 2.1311-.8116 3.4602-1.6993 5.7574-4.979 6.1513-8.7762.0665-.655.0333-1.9175-.0759-2.5915-.4746-3.0282-2.2213-5.7337-4.8176-7.4471-.2468-.1661-.5268-.337-.617-.3797-.046-.0223-.0762-.0357-.089-.0376zM16.271 8.1145c-.2641-.0026-.5068.0126-.6967.0482-.8544.1661-1.4382.674-1.609 1.4002-.1804.75.0427 1.4192.5837 1.7657.318.1993.6028.2942 1.462.4888.9018.2041 1.2103.3418 1.3907.6123.1044.1567.128.2421.1233.4794 0 .1709-.0332.3512-.0806.4367-.1092.2135-.413.4556-.6883.5553-.5363.1946-1.5473.185-2.3162-.019-.6598-.1756-.5886-.1993-.5886.1899 0 .2943.0143.3417.1092.4034.3845.2563 1.8986.3893 2.7387.2469.522-.0902 1.03-.3134 1.3242-.5744.1044-.0997.2611-.318.3465-.4889.1472-.2942.1567-.3464.1567-.8163 0-.451-.0143-.5221-.133-.769-.2658-.5458-.7309-.7879-2.0029-1.0584-.8686-.1804-1.234-.375-1.405-.7547-.223-.4936.0048-1.03.5364-1.2625.4841-.2089 1.533-.171 2.4017.0901l.2942.0902V8.438l-.2278-.076c-.4535-.15-1.1382-.2418-1.7192-.2475z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/codechef.svg b/assets/lib/simple-icons/icons/codechef.svg
index 2edc49b2..80b79122 100644
--- a/assets/lib/simple-icons/icons/codechef.svg
+++ b/assets/lib/simple-icons/icons/codechef.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>CodeChef icon</title><path d="M11.007 0c-.787.031-1.515.37-2.222.685a12.27 12.27 0 01-1.864.703c-.635.176-1.3.354-1.814.788-.222.18-.356.439-.529.662-.309.486-.448 1.067-.457 1.638.036.61.216 1.2.376 1.786.368 1.262.807 2.503 1.197 3.759.366 1.161.703 2.344 1.294 3.416.197.394.35.808.535 1.206.027.067.052.158.142.149.136-.012.243-.115.368-.164.828-.414 1.74-.642 2.655-.749.708-.074 1.43-.078 2.131.054.72.163 1.417.426 2.092.724.36.172.719.348 1.088.498.048.04.135.058.16-.016.219-.327.469-.635.667-.976.495-1.061.522-2.279 1.038-3.331.358-.721.892-1.337 1.266-2.048.175-.266.431-.467.588-.747.437-.669.78-1.398 1.05-2.15.102-.293.172-.612.09-.919-.06-.299-.202-.57-.318-.848a2.481 2.481 0 00-.278-.66c-.407-.676-1.07-1.149-1.743-1.536-1.045-.59-2.196-.969-3.351-1.28A20.733 20.733 0 0011.426.01a5.005 5.005 0 00-.42-.01zm-.889.606c-.261.223-.363.569-.468.883-.168.568-.263 1.163-.207 1.756.064 1.062.197 2.12.33 3.175.18 1.352.387 2.7.677 4.034.026.165.064.347.05.51-.115-.175-.182-.383-.258-.58-.25-.765-.432-1.549-.604-2.334a26.008 26.008 0 01-.562-4.317c-.025-.843-.004-1.726.37-2.501.118-.226.259-.46.48-.597a.411.411 0 01.218-.049l-.026.02zM6.516 1.77c.128 0 .139.159.168.252.266.798.422 1.628.679 2.428.174.649.238 1.323.308 1.991.097 1.039.108 2.085.246 3.12.026.199.082.393.119.59.01.067-.059.049-.083.014-.148-.161-.183-.391-.246-.592-.16-.645-.242-1.305-.334-1.962-.174-1.316-.287-2.64-.529-3.945-.158-.612-.356-1.215-.46-1.838.006-.051.093-.048.132-.058zM4.589 3.607c.229.056.365.268.512.434.4.535.54 1.204.695 1.843.283 1.265.446 2.553.725 3.82.131.666.293 1.326.507 1.971.014.051.035.133.038.17-.233-.43-.393-.896-.565-1.353-.598-1.698-.823-3.496-1.3-5.228-.133-.478-.308-.95-.596-1.358-.047-.088-.08-.204-.037-.297.006-.004.014-.003.02-.002zm12.646 13.196c-.136.007-.31.11-.276.267.094.218.334.308.526.416.441.216.938.29 1.358.546.092.06.149.197.064.287-.18.266-.47.44-.723.634-.372.266-.777.51-1.057.879-.066.107-.041.267.082.32.109.079.243.018.338-.051.518-.294.995-.654 1.478-1.002.32-.239.644-.477.926-.76.085-.135-.03-.274-.118-.371-.273-.285-.62-.487-.965-.67a4.959 4.959 0 00-1.458-.495 1.251 1.251 0 00-.175 0zM5.96 16.83c-.527.134-.997.42-1.474.673-.425.243-.854.496-1.205.841a.699.699 0 00-.172.488c.065.108.2.14.301.206.852.442 1.735.822 2.63 1.168.132.042.265.113.406.107.158-.02.309-.204.213-.356-.146-.243-.42-.361-.65-.506-.547-.303-1.154-.512-1.636-.918-.046-.091.094-.128.142-.18.549-.395 1.229-.593 1.713-1.077.089-.09.164-.259.048-.358-.086-.073-.206-.087-.316-.088zm8.115.793c-.43.027-.835.431-.774.876.032.259.089.525.228.749.12.18.33.286.546.287.273.031.59-.059.726-.318.137-.237.212-.514.205-.787-.038-.46-.466-.845-.93-.807zm-4.49.01c-.464.028-.807.505-.77.953.011.444.315.902.765.994.352.06.71-.19.803-.53.125-.35.132-.761-.044-1.095-.157-.25-.478-.327-.754-.322zm.112.653c.241.064.294.47.045.558-.141.034-.239-.12-.234-.244-.008-.127.05-.287.189-.314zm4.437.143c.097 0 .226.071.19.187-.013.171-.215.333-.377.226-.132-.07-.172-.296-.02-.368a.418.418 0 01.207-.045zm-3.518 2.977c-.553.051-1.044.335-1.542.559-.304.156-.662.312-1.005.187-.377-.12-.707-.35-1.059-.52-.075-.013-.061.077-.047.122.081.53.129 1.102.454 1.55.338.437.902.618 1.433.667.797.072 1.642-.118 2.271-.629.309-.262.571-.631.585-1.049-.006-.324-.244-.596-.524-.734a1.085 1.085 0 00-.566-.153zm2.58.008c-.396.052-.815.262-.972.65-.129.358.034.748.272 1.02.426.509 1.07.793 1.718.884.577.078 1.186.014 1.714-.24.438-.225.767-.655.85-1.142.064-.291.081-.59.124-.884-.066-.078-.148.038-.218.052-.337.142-.647.367-1.01.435-.363.024-.687-.172-1.015-.293-.43-.178-.851-.403-1.315-.478a1.21 1.21 0 00-.147-.004zm-2.881-5.091c-.07 0-.143.014-.216.03a2.93 2.93 0 00-.454.152c-.15.061-.292.127-.407.18a4.07 4.07 0 01-.218.092.277.277 0 01-.182-.034c-.062-.037-.12-.101-.141-.255l-.27.038c.031.218.14.37.27.45.13.079.268.09.378.067.085-.018.16-.058.276-.111.116-.053.255-.118.397-.176.143-.058.288-.11.41-.138a.52.52 0 01.252-.009c.14.06.19.13.215.179.025.05.03.067.03.067l.263-.06s.002-.024-.05-.128a.678.678 0 00-.35-.307.482.482 0 00-.204-.037zm2.744 3.937a.136.136 0 00-.102.05s-.122.148-.286.295c-.165.148-.38.28-.493.283-.112.003-.314-.118-.47-.26-.155-.14-.267-.284-.267-.284a.136.136 0 10-.214.167s.124.16.299.319c.175.16.397.337.66.33.259-.008.484-.19.666-.352.182-.163.315-.325.315-.325a.136.136 0 00-.108-.223zM11.007.001c-.787.03-1.515.368-2.222.684a12.27 12.27 0 01-1.864.703c-.635.176-1.3.354-1.814.788-.222.18-.356.44-.529.663-.309.485-.448 1.066-.457 1.637.036.61.216 1.2.376 1.786.368 1.263.807 2.503 1.197 3.759.366 1.161.703 2.344 1.294 3.417.197.393.35.807.535 1.205.027.067.052.158.142.15.136-.013.243-.116.368-.165.828-.414 1.74-.641 2.655-.749.708-.074 1.43-.078 2.131.055.72.163 1.417.425 2.092.723.36.172.719.348 1.088.498.048.04.135.058.16-.016.219-.327.469-.635.667-.975.495-1.062.522-2.28 1.038-3.332.358-.721.892-1.336 1.266-2.047.175-.266.431-.468.588-.747.437-.67.78-1.4 1.05-2.151.102-.293.172-.612.09-.919-.06-.298-.202-.57-.318-.848a2.481 2.481 0 00-.278-.659c-.407-.676-1.07-1.15-1.743-1.536-1.045-.591-2.196-.97-3.351-1.281A20.733 20.733 0 0011.426.01a5.005 5.005 0 00-.42-.01zm-.889.606c-.261.222-.363.568-.468.883-.168.567-.263 1.163-.207 1.755.064 1.062.197 2.12.33 3.175.18 1.352.387 2.701.677 4.034.026.165.064.347.05.51-.115-.175-.182-.383-.258-.58-.25-.765-.432-1.549-.604-2.334a26.008 26.008 0 01-.562-4.316c-.025-.844-.004-1.727.37-2.502.118-.225.259-.46.48-.597a.411.411 0 01.218-.049l-.026.02zM6.516 1.77c.128 0 .139.16.168.252.266.798.422 1.628.679 2.429.174.648.238 1.322.308 1.99.097 1.04.108 2.086.246 3.12.026.199.082.394.119.59.01.068-.059.05-.083.014-.148-.16-.183-.39-.246-.592-.16-.645-.242-1.304-.334-1.962-.174-1.315-.287-2.64-.529-3.945-.158-.612-.356-1.215-.46-1.838.006-.051.093-.048.132-.058zM4.589 3.608c.229.055.365.267.512.433.4.535.54 1.204.695 1.843.283 1.265.446 2.554.725 3.82.131.666.293 1.327.507 1.971.014.051.035.133.038.17-.233-.43-.393-.896-.565-1.352-.598-1.7-.823-3.497-1.3-5.23-.133-.477-.308-.95-.596-1.357-.047-.087-.08-.204-.037-.296.006-.004.014-.003.02-.002zm12.646 13.195c-.136.007-.31.11-.276.268.094.217.334.307.526.416.441.215.938.289 1.358.545.092.06.149.197.064.287-.18.267-.47.44-.723.634-.372.266-.777.51-1.057.879-.066.107-.041.267.082.32.109.079.243.019.338-.05.518-.295.995-.655 1.478-1.002.32-.24.644-.478.926-.761.085-.135-.03-.274-.118-.37-.273-.286-.62-.488-.965-.672a4.959 4.959 0 00-1.458-.493 1.251 1.251 0 00-.175-.001zm-11.276.029c-.527.133-.997.42-1.474.672-.425.243-.854.497-1.205.842a.699.699 0 00-.172.487c.065.109.2.14.301.206.852.442 1.735.823 2.63 1.168.132.042.265.113.406.108.158-.02.309-.205.213-.357-.146-.243-.42-.361-.65-.506-.547-.303-1.154-.512-1.636-.918-.046-.09.094-.128.142-.18.549-.394 1.229-.592 1.713-1.077.089-.09.164-.258.048-.357-.086-.074-.206-.088-.316-.088zm8.115.792c-.43.028-.835.432-.774.876.032.26.089.526.228.75.12.179.33.285.546.287.273.03.59-.06.726-.319.137-.236.212-.514.205-.787-.038-.46-.466-.844-.93-.807zm-4.49.01c-.464.028-.807.505-.77.953.011.444.315.902.765.995.352.059.71-.19.803-.53.125-.35.132-.762-.044-1.096-.157-.249-.478-.327-.754-.322zm.112.654c.241.063.294.47.045.557-.141.034-.239-.12-.234-.244-.008-.127.05-.287.189-.313zm4.437.142c.097 0 .226.072.19.187-.013.172-.215.333-.377.227-.132-.071-.172-.297-.02-.369a.418.418 0 01.207-.045zm-3.518 2.977c-.553.052-1.044.336-1.542.56-.304.155-.662.311-1.005.186-.377-.119-.707-.35-1.059-.52-.075-.012-.061.078-.047.122.081.53.129 1.102.454 1.55.338.438.902.619 1.433.667.797.072 1.642-.118 2.271-.629.309-.262.571-.63.585-1.049-.006-.324-.244-.596-.524-.734a1.085 1.085 0 00-.566-.153zm2.58.008c-.396.052-.815.262-.972.65-.129.359.034.748.272 1.021.426.508 1.07.792 1.718.883.577.078 1.186.015 1.714-.24.438-.225.767-.655.85-1.142.064-.29.081-.59.124-.884-.066-.077-.148.039-.218.052-.337.143-.647.367-1.01.436-.363.024-.687-.172-1.015-.294-.43-.178-.851-.402-1.315-.477a1.21 1.21 0 00-.147-.004z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>CodeChef</title><path d="M11.2574.0039c-.37.0101-.7353.041-1.1003.095C9.6164.153 9.0766.4236 8.482.694c-.757.3244-1.5147.6486-2.2176.7027-1.1896.3785-1.568.919-1.8925 1.3516 0 .054-.054.1079-.054.1079-.4325.865-.4873 1.73-.325 2.5952.1621.5407.3786 1.0282.5408 1.5148.3785 1.0274.7578 2.0007.92 3.1362.1622.3244.3235.7571.4316 1.1897.2704.8651.542 1.8383 1.353 2.5952l.0057-.0028c.0175.0183.0301.0387.0482.0568.0072-.0036.0141-.0063.0213-.0099l-.0213-.5849c.6489-.9733 1.5673-1.6221 2.865-1.8925.5195-.1093 1.081-.1497 1.6625-.1278a8.7733 8.7733 0 0 1 1.7988.2357c1.4599.3785 2.595 1.1358 2.6492 1.7846.0273.3549.0398.6952.0326 1.0364-.001.064-.0046.1285-.007.193l.1362.0682c.075-.0375.1424-.107.2059-.1902.0008-.001.002-.002.0028-.0028.0018-.0023.0039-.0061.0057-.0085.0396-.0536.0747-.1236.1107-.1931.0188-.0377.0372-.0866.0554-.1292.2048-.4622.362-1.1536.538-1.9635.0541-.2703.1092-.4864.1633-.7027.4326-.9733 1.0266-1.8382 1.6213-2.6492.9733-1.3518 1.8928-2.5962 1.7846-4.0561-1.784-3.4608-4.2718-4.0017-5.5695-4.272-.2163-.0541-.3233-.0539-.4856-.108-1.3382-.2433-2.4945-.3953-3.6046-.3648zm5.0428 14.3788a9.8602 9.8602 0 0 0-.0326-.9824c-.0541-.703-1.1892-1.46-2.7032-1.8386-.588-.1336-1.1764-.2142-1.7448-.2356-.539-.0137-1.0657.0248-1.5546.1277-1.2436.2704-2.2162.9193-2.811 1.8925l.0511 1.431c.6672-.3558 1.7326-.8747 3.139-.9994.0662-.0059.1368-.0059.2044-.0099.1177-.013.2667-.044.4444-.044 1.6075 0 3.2682.5336 4.8767 1.6483.039-.2744.0611-.549.071-.8234l.044.0227c.0028-.0622.0143-.1268.0156-.1888zM11.256.0578c.1239-.0034.2538.01.379.0114-.23-.0022-.4588.0026-.6871.0156.103-.0061.2046-.0242.308-.027zm.4983.0156c.6552.014 1.3255.0711 2.0387.1803-.6834-.0987-1.3646-.1671-2.0387-.1803zm-1.3147.0554c-.076.0087-.1527.0133-.2285.0241-.8168.1167-1.7742.7015-2.75 1.045.3545-.1323.7143-.2957 1.0747-.4501C9.0765.4774 9.6705.207 10.1571.1529c.0939-.0139.1886-.0133.2825-.0241zm-.2285.24c.1622 0 .3787-.0002.5409.0539-.1425-.0357-.2595-.026-.3706-.0142a1.174 1.174 0 0 1 .3166.0681c.5796 1.0012-.4264 5.2791-.6786 8.1492.1559 1.0276.3138 1.9963.4628 2.7201-.7029-1.7843-1.4067-4.921-1.5148-7.354-.054-.9733.001-1.8386.2172-2.4874C9.401.8557 9.7244.4228 10.2111.3687zm3.1361.271c-.811 2.1088-.9184 6.1092-.9725 7.3528-.054.5407-.0001 1.73.054 2.5952 0 .2163.054.4325.054.6488 0-.2163-.054-.3786-.054-.5948-.4326-3.2442-.974-7.1362.9185-10.002zm3.352.3777c-.2704 2.1628-1.4047 3.191-1.7832 5.2998-.1081 1.6762-.325 3.6222-.379 5.2984-.0541-1.6762-.0007-3.4601.2697-5.2444.2703-1.8384.8651-3.6776 1.8925-5.3538zm-10.381.433c-.3581.1194-.632.248-.8575.3805.2317-.1358.4996-.2666.8575-.3805zm.2101.1974c.2155.0025.4384.0734.6006.2357-.0067-.004-.0078-.0033-.0142-.0071.1331.0929.2666.2093.3932.3847-.2036.9673.2553 3.0317.0398 4.6694.0763 1.5485.0717 3.1804.849 4.4594-.9796-1.5107-1.176-3.4375-1.3218-5.236-.1128-1.0907-.2035-2.0969-.4642-2.9033-.144-.3047-.2684-.5745-.3833-.822-.0247-.0369-.0447-.0784-.071-.1135-.1082-.1082-.1619-.2696-.1619-.3777 0-.054.0539-.1618.108-.1618.054-.0541.1616-.0553.2157-.1094a1.013 1.013 0 0 1 .2101-.0184zm-1.3459.6133c-.0604.0201-.0923.041-.1405.061.1768-.034.3617.0339.5196.318-.1877.8916.4364 3.3685.4288 5.104.3124 1.8478.5496 3.8498 1.5716 5.1152C6.3723 11.5076 5.886 9.1286 5.5076 7.128 5.183 5.56 4.9125 4.2086 4.3718 3.776c-.054-.1081-.1079-.163-.1079-.2711 0-.1622-.0002-.3786.1079-.5949-.2772.6337-.4047 1.2673-.3706 1.901-.0445-.6487.0857-1.2905.3706-1.901 0-.054.054-.0538.054-.1079.012-.016.0314-.0349.044-.0511.0618-.0983.1308-.189.2257-.257.0557-.0615.0965-.1191.159-.1817-.0526.0555-.0872.1092-.1335.1647.0273-.018.0523-.0368.0838-.0525.1081-.1082.2154-.1633.3776-.1633zm-.3776.1633c-.0038.0075-.0076.0111-.0114.0184.0125-.0099.0242-.0208.037-.0298-.0074.0037-.0182.0077-.0256.0114zm14.7608 1.1343c-.0017.0052-.004.0104-.0057.0156.0378-.005.0751-.0173.1135-.0156-.0378-.0022-.0763.0103-.115.0199-.8634 2.6418-1.8874 5.2844-2.9118 7.9262a.0184.0184 0 0 1-.0015.0028c-.0874.4652-.234.8842-.5395 1.1898.4326-.4867.4854-1.1907.5395-2.0558.054-.811.0544-1.6761.487-2.5413 0-.0531.0012-.1058.0525-.159.0003-.0009.0012-.0019.0015-.0028.0973-.3524.202-.6885.3166-1.018.4183-1.2896 1.1396-3.1653 2.0131-3.3405.0163-.0052.034-.018.0497-.0213zM8.3726 16.2113l-.3238.1079c.1623.2163.2696.379.3777.433.1081.054.2168.108.379.108.0541 0 .1618 0 .2159-.054l.812-.2698c.0541 0 .1078-.054.1619-.054.1081 0 .1616 0 .2697.054l.2712.2698.2697-.054c-.1081-.1622-.2695-.3236-.3776-.3776-.1082-.0541-.2169-.1094-.379-.1094h-.108l-.866.3252h-.1618c-.1082 0-.2157 0-.2698-.054-.054-.054-.163-.1629-.2712-.3251zm-2.5953.541c-.2703.1621-.649.4324-1.1897.6487-.5407.2163-.9734.4325-1.1897.6488-.2163.2163-.3237.4326-.3237.6488 0 .1082.0537.1632.1618.2172.054.0541.1632.0539.2172.108.757.3244 1.5133.7019 2.2162 1.0803.1082.0541.2171.1632.2712.2173.054.054.1078.054.1618.054.1082 0 .2695-.0538.3777-.162.1081-.108.1632-.217.1632-.325 0-.1082-.055-.1618-.1632-.2158 0 0-.4328-.2165-1.1898-.541-.4866-.2162-.9179-.4326-1.1883-.5948.1623-.2704.486-.4865.9726-.7028.5407-.2163.9196-.4326 1.0818-.5948.054-.0541.054-.1078.054-.1619 0-.054-.0539-.1631-.108-.2172-.054-.054-.163-.1079-.2711-.1079zm11.247 0c-.054 0-.1618.0537-.2158.1078-.0541.1081-.1093.1632-.1093.2172v.054c.1622.1622.3797.2695.7041.3776.2704.054.5403.1632.8107.2172.3244.1082.5407.2693.6488.4856v.0553c0 .0541-.1088.1616-.3251.2698-.1082.054-.3245.2167-.5949.433-.2703.1622-.4326.3236-.5948.3776-.2163.1082-.3776.217-.4316.3252-.0541.054-.054.1077-.054.1618 0 .1081.0539.1077.108.2158.054.1081.1616.1093.2157.1093.054 0 .1078-.0554.1619-.0554.2703-.1622.6492-.3782 1.0818-.7567.4866-.3784.8655-.6484 1.0818-.8106.2163-.1082.3237-.2169.3237-.379 0-.0541.0002-.1618-.1079-.2159-.3785-.4325-.9185-.7022-1.5674-.9185-.1081-.0541-.2704-.1092-.5948-.1633-.1622-.054-.3249-.1079-.433-.1079zm-2.9743.8106c-.2704 0-.4866.055-.6488.2172-.2163.1622-.2699.4323-.2158.7567 0 .2703.1075.4865.2697.7027.1622.2163.3786.3252.5949.3252.1622 0 .2708-.0553.433-.1094.2703-.1622.379-.4319.379-.9185 0-.3785-.109-.6485-.2711-.8107-.1622-.1081-.3246-.1632-.541-.1632zm-4.4877.054c-.2704 0-.4866.055-.6488.2171-.2163.1622-.27.4323-.2158.7567 0 .2704.1075.4865.2697.7028s.3786.3251.5949.3251c.1622 0 .2708-.0552.433-.1093.2703-.1622.3776-.432.3776-.9186 0-.4325-.1075-.7025-.2697-.8106-.1622-.1082-.3247-.1633-.541-.1633zm0 .6501c.1622 0 .2711.1076.2711.2698 0 .1622-.163.2697-.2711.2697-.1622 0-.2698-.1075-.2698-.2697s.1076-.2698.2698-.2698zm4.3798.054c.1622 0 .2711.1075.2711.2697 0 .1082-.109.2698-.2711.2698-.1622 0-.2698-.1076-.2698-.2698 0-.1622.1076-.2697.2698-.2697zm-2.7032 2.1083l.1619.3237c.054.1081.1076.163.2158.2711.054.054.163.1619.2712.1619h.1078c.1082 0 .1618 0 .2158-.054.0541-.054.1632-.0538.2173-.1079l.1618-.1618c.054-.054.108-.1092.108-.1633.054-.054.0537-.1078.1078-.1618 0-.0541.054-.108.054-.108-.0541.1082-.1618.2156-.2158.3238-.1082.054-.1616.1632-.2698.1632-.1081.0541-.217.054-.3251.054s-.2157.0001-.2697-.054c-.1082 0-.1632-.0538-.2173-.1079l-.1618-.1632c-.054-.0541-.1078-.1618-.1619-.2158zm-.866 1.0278c-1.1355 0-1.8377 1.5136-3.4598.1619-.4326 2.6494 2.7583 2.866 4.11 1.7306.9192-.811.6475-1.9465-.6502-1.8925zm2.8664 0c-1.2977-.054-1.568 1.0815-.6488 1.8925 1.3518 1.1355 4.5412.9188 4.1087-1.7306-1.6221 1.3517-2.2703-.1619-3.4599-.1619z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/codeclimate.svg b/assets/lib/simple-icons/icons/codeclimate.svg
index 1450c0f1..9a38cd69 100644
--- a/assets/lib/simple-icons/icons/codeclimate.svg
+++ b/assets/lib/simple-icons/icons/codeclimate.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Code Climate icon</title><path d="M 16.046875 5.039062 L 24 12.992188 L 21.292969 15.703125 L 16.046875 10.457031 L 14.203125 12.308594 L 11.488281 9.597656 Z M 10.652344 10.4375 L 13.359375 13.152344 L 15.90625 15.691406 L 13.191406 18.398438 L 7.953125 13.160156 L 3.777344 17.335938 L 2.707031 18.398438 L 0 15.691406 L 7.953125 7.738281 Z M 10.652344 10.4375"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Code Climate</title><path d="M16.125 5.272l-4.511 4.475 2.684 2.659 1.827-1.813 5.19 5.145L24 13.079zM8.13 8.265L0 16.066l2.772 2.662 5.357-5.145 5.357 5.145 2.772-2.662z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/codecov.svg b/assets/lib/simple-icons/icons/codecov.svg
index 9d36a21a..bbf7b7ee 100644
--- a/assets/lib/simple-icons/icons/codecov.svg
+++ b/assets/lib/simple-icons/icons/codecov.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Codecov icon</title><path d="M12.007.48C5.391.485.005 5.831 0 12.399v.03l2.042 1.191.028-.019a5.821 5.821 0 0 1 3.308-1.02c.371 0 .734.034 1.086.1l-.036-.006a5.69 5.69 0 0 1 2.874 1.431l-.004-.003.35.326.198-.434c.192-.42.414-.814.66-1.173.099-.144.208-.29.332-.446l.205-.257-.252-.211a8.33 8.33 0 0 0-3.836-1.807l-.052-.008a8.566 8.566 0 0 0-4.081.251l.061-.016c.971-4.257 4.714-7.224 9.133-7.227a9.31 9.31 0 0 1 6.601 2.713 9.197 9.197 0 0 1 2.508 4.499 8.386 8.386 0 0 0-2.498-.379h-.154c-.356.006-.7.033-1.037.078l.045-.005-.042.006a8.104 8.104 0 0 0-.39.06c-.057.01-.114.022-.17.033a8.103 8.103 0 0 0-.392.089l-.138.035a9.21 9.21 0 0 0-.483.144l-.029.01c-.355.12-.709.268-1.051.439l-.027.014c-.152.076-.305.16-.469.256l-.036.022a8.217 8.217 0 0 0-2.108 1.801l-.011.013-.075.092a8.346 8.346 0 0 0-.378.503c-.088.13-.177.269-.288.452l-.06.104a8.986 8.986 0 0 0-.234.432l-.016.029c-.17.341-.317.698-.44 1.063l-.017.053a8.053 8.053 0 0 0-.411 2.717v-.007l.001.112c.006.158.013.295.023.431l-.002-.037a11.677 11.677 0 0 0 .042.412l.005.042.013.103c.018.127.038.252.062.378.241 1.266.845 2.532 1.745 3.66l.041.051.042-.05c.359-.424 1.249-1.77 1.325-2.577l.001-.015-.007-.013a5.56 5.56 0 0 1-.64-2.595v-.001c0-3.016 2.371-5.521 5.397-5.702l.199-.007a5.93 5.93 0 0 1 3.47 1.025l.028.019 2.041-1.187v-.03a11.771 11.771 0 0 0-3.511-8.424A11.963 11.963 0 0 0 12.008.48z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Codecov</title><path d="M12.006.481C5.391.486.005 5.831 0 12.399v.03l2.042 1.19.028-.018a5.82 5.82 0 013.308-1.02c.37 0 .733.034 1.085.1l-.036-.006a5.69 5.69 0 012.874 1.43l-.004-.002.35.326.198-.434c.192-.42.414-.814.66-1.173.1-.144.208-.29.332-.446l.205-.257-.252-.211a8.33 8.33 0 00-3.836-1.807l-.052-.008a8.565 8.565 0 00-4.08.251l.06-.016c.972-4.256 4.714-7.223 9.133-7.226a9.31 9.31 0 016.6 2.713 9.196 9.196 0 012.508 4.498 8.385 8.385 0 00-2.498-.379h-.154c-.356.006-.7.033-1.036.078l.045-.005-.042.006a8.103 8.103 0 00-.39.06c-.057.01-.114.022-.17.033a8.102 8.102 0 00-.392.09l-.138.034a9.21 9.21 0 00-.483.144l-.03.01c-.354.12-.708.268-1.05.44l-.027.013c-.152.076-.305.16-.47.256l-.035.022a8.216 8.216 0 00-2.108 1.8l-.011.014-.075.092a8.345 8.345 0 00-.378.503c-.088.13-.177.269-.288.452l-.06.104a8.985 8.985 0 00-.234.432l-.016.029c-.17.34-.317.698-.44 1.063l-.017.053a8.052 8.052 0 00-.41 2.716v-.007.112a12 12 0 00.023.431l-.002-.037a11.676 11.676 0 00.042.412l.005.042.013.103c.018.127.038.252.062.378.241 1.266.845 2.532 1.745 3.66l.041.051.042-.05c.359-.424 1.249-1.77 1.325-2.577v-.015l-.006-.013a5.56 5.56 0 01-.64-2.595c0-3.016 2.37-5.521 5.396-5.702l.2-.007a5.93 5.93 0 013.47 1.025l.027.019L24 12.416v-.03a11.77 11.77 0 00-3.51-8.423A11.962 11.962 0 0012.007.48z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/codefactor.svg b/assets/lib/simple-icons/icons/codefactor.svg
index 35da0e2b..c221566c 100644
--- a/assets/lib/simple-icons/icons/codefactor.svg
+++ b/assets/lib/simple-icons/icons/codefactor.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>CodeFactor icon</title><path d="M5.37 2.65A2.64 2.64 0 0 1 2.75 5.3 2.64 2.64 0 0 1 .12 2.65 2.64 2.64 0 0 1 2.75 0a2.64 2.64 0 0 1 2.62 2.65zm0 9.35a2.64 2.64 0 0 1-2.62 2.65A2.64 2.64 0 0 1 .12 12a2.64 2.64 0 0 1 2.63-2.65A2.64 2.64 0 0 1 5.37 12zm0 9.35A2.64 2.64 0 0 1 2.75 24a2.64 2.64 0 0 1-2.63-2.65 2.64 2.64 0 0 1 2.63-2.65 2.64 2.64 0 0 1 2.62 2.65zM11.31 0A2.64 2.64 0 0 0 8.7 2.65 2.64 2.64 0 0 0 11.3 5.3h9.94a2.64 2.64 0 0 0 2.63-2.65A2.64 2.64 0 0 0 21.25 0h-9.94zM8.7 12a2.64 2.64 0 0 1 2.62-2.65H17A2.64 2.64 0 0 1 19.6 12 2.64 2.64 0 0 1 17 14.65H11.3A2.64 2.64 0 0 1 8.7 12z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>CodeFactor</title><path d="M5.375 2.65a2.64 2.64 0 01-2.62 2.65 2.64 2.64 0 01-2.63-2.65A2.64 2.64 0 012.755 0a2.64 2.64 0 012.62 2.65zm0 9.35a2.64 2.64 0 01-2.62 2.65A2.64 2.64 0 01.125 12a2.64 2.64 0 012.63-2.65A2.64 2.64 0 015.375 12zm0 9.35A2.64 2.64 0 012.755 24a2.64 2.64 0 01-2.63-2.65 2.64 2.64 0 012.63-2.65 2.64 2.64 0 012.62 2.65zM11.315 0a2.64 2.64 0 00-2.61 2.65 2.64 2.64 0 002.6 2.65h9.94a2.64 2.64 0 002.63-2.65A2.64 2.64 0 0021.255 0zm-2.61 12a2.64 2.64 0 012.62-2.65h5.68a2.64 2.64 0 012.6 2.65 2.64 2.64 0 01-2.6 2.65h-5.7a2.64 2.64 0 01-2.6-2.65z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/codeforces.svg b/assets/lib/simple-icons/icons/codeforces.svg
index 08038bf4..8e66761c 100644
--- a/assets/lib/simple-icons/icons/codeforces.svg
+++ b/assets/lib/simple-icons/icons/codeforces.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Codeforces icon</title><path d="M4.5 7.5C5.328 7.5 6 8.172 6 9v10.5c0 .828-.672 1.5-1.5 1.5h-3C.673 21 0 20.328 0 19.5V9c0-.828.673-1.5 1.5-1.5h3zm9-4.5c.828 0 1.5.672 1.5 1.5v15c0 .828-.672 1.5-1.5 1.5h-3c-.827 0-1.5-.672-1.5-1.5v-15c0-.828.673-1.5 1.5-1.5h3zm9 7.5c.828 0 1.5.672 1.5 1.5v7.5c0 .828-.672 1.5-1.5 1.5h-3c-.828 0-1.5-.672-1.5-1.5V12c0-.828.672-1.5 1.5-1.5h3z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Codeforces</title><path d="M4.5 7.5C5.328 7.5 6 8.172 6 9v10.5c0 .828-.672 1.5-1.5 1.5h-3C.673 21 0 20.328 0 19.5V9c0-.828.673-1.5 1.5-1.5h3zm9-4.5c.828 0 1.5.672 1.5 1.5v15c0 .828-.672 1.5-1.5 1.5h-3c-.827 0-1.5-.672-1.5-1.5v-15c0-.828.673-1.5 1.5-1.5h3zm9 7.5c.828 0 1.5.672 1.5 1.5v7.5c0 .828-.672 1.5-1.5 1.5h-3c-.828 0-1.5-.672-1.5-1.5V12c0-.828.672-1.5 1.5-1.5h3z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/codeigniter.svg b/assets/lib/simple-icons/icons/codeigniter.svg
index a36f1f44..8ab9c67e 100644
--- a/assets/lib/simple-icons/icons/codeigniter.svg
+++ b/assets/lib/simple-icons/icons/codeigniter.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>CodeIgniter icon</title><path d="M8.49 24c-1.54-.68-2.586-2.146-2.723-3.824.09-1.727 1.002-3.305 2.45-4.246-.238.58-.18 1.24.15 1.77.376.525 1.022.777 1.655.646.902-.254 1.43-1.19 1.176-2.092-.09-.316-.27-.602-.516-.818-1.02-.83-1.532-2.133-1.35-3.436.175-.69.557-1.314 1.096-1.785-.405 1.08.737 2.146 1.504 2.67 1.36.816 2.67 1.713 3.924 2.686 1.37 1.08 2.117 2.77 2 4.5-.308 1.84-1.61 3.36-3.385 3.93 3.55-.79 7.21-3.61 7.28-7.61-.07-3.2-1.98-6.072-4.9-7.38h-.13c.065.157.096.326.09.496.01-.11.01-.22 0-.33.016.13.016.26 0 .39-.222.91-1.14 1.47-2.052 1.248-.364-.09-.69-.295-.924-.59-1.17-1.5 0-3.207.196-4.857.12-2.11-.844-4.127-2.554-5.36.856 1.427-.284 3.3-1.113 4.366-.83 1.066-2.03 1.86-3.008 2.79-1.054.98-2.02 2.058-2.887 3.21-1.874 2.29-2.61 5.31-2 8.205.836 2.79 3.155 4.886 6.015 5.43H8.5z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>CodeIgniter</title><path d="M11.466 0c.88 1.423-.28 3.306-1.207 4.358-.899 1.02-1.992 1.873-2.985 2.8-1.066.996-2.091 2.044-2.967 3.213-1.753 2.339-2.827 5.28-2.038 8.199.788 2.916 3.314 4.772 6.167 5.429-1.44-.622-2.786-2.203-2.79-3.82-.003-1.765 1.115-3.262 2.505-4.246-.167.632-.258 1.21.155 1.774a1.68 1.68 0 0 0 1.696.642c1.487-.326 1.556-1.96.674-2.914-.872-.943-1.715-2.009-1.384-3.377.167-.685.588-1.328 1.121-1.787-.41 1.078.755 2.14 1.523 2.67 1.332.918 2.793 1.612 4.017 2.688 1.288 1.132 2.24 2.661 2.047 4.435-.208 1.923-1.736 3.26-3.45 3.936 3.622-.8 7.365-3.61 7.44-7.627.093-3.032-1.903-5.717-5.158-7.384.19.48.074.697-.058.924-.55.944-2.082 1.152-2.835.184-1.205-1.548.025-3.216.197-4.855.215-2.055-1.073-4.049-2.67-5.242z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/codemagic.svg b/assets/lib/simple-icons/icons/codemagic.svg
new file mode 100644
index 00000000..ecd2edd4
--- /dev/null
+++ b/assets/lib/simple-icons/icons/codemagic.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Codemagic</title><path d="M22.833 10.117L16.937 7.24c-.07-.035-.106-.106-.142-.177l-2.912-5.896c-.498-1.03-1.776-1.457-2.807-.96a2.09 2.09 0 0 0-.959.96L7.205 7.063a.81.81 0 0 1-.142.177l-5.896 2.913c-1.03.497-1.457 1.776-.96 2.806a2.1 2.1 0 0 0 .96.96l5.896 2.876c.07.036.106.107.142.142l2.948 5.896c.497 1.03 1.776 1.457 2.806.96a2.09 2.09 0 0 0 .959-.96l2.877-5.896c.036-.07.107-.142.142-.142l5.896-2.912c1.03-.498 1.457-1.776.96-2.806-.178-.427-.533-.746-.96-.96zm-4.368.427l-2.735 2.38c-.533.497-.924 1.136-1.066 1.847l-.71 3.551c-.036.143-.178.25-.32.214-.071 0-.107-.036-.142-.107l-2.38-2.735c-.497-.533-1.137-.923-1.847-1.066l-3.552-.71c-.142-.035-.249-.178-.213-.32 0-.07.035-.106.106-.142l2.735-2.38c.533-.497.924-1.136 1.066-1.847l.71-3.551c.036-.143.178-.25.32-.214a.27.27 0 0 1 .142.071l2.38 2.735c.497.533 1.137.924 1.847 1.066l3.552.71c.142.036.249.178.213.32a.38.38 0 0 1-.106.178z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/codemirror.svg b/assets/lib/simple-icons/icons/codemirror.svg
new file mode 100644
index 00000000..0b71c8f4
--- /dev/null
+++ b/assets/lib/simple-icons/icons/codemirror.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>CodeMirror</title><path d="M12.313.858c1.044-.002 2.016.364 2.966 1.178.799.685 1.167 1.52 1.453 2.159.455 1.018.321 1.112-.18 1.398a1.27 1.27 0 0 1-.26.108c.12 1.502.962 1.637 1.232 2.165.176.34.262.752-.553.881-.819.13-.552.76-1.763.815-.864.041-1.372-.257-1.665-.568a4.639 4.639 0 0 1-.623 2.478c.21.104.67.306 1.305.422.881.16 2.155-.522 2.644-.522.153 0 .313-.022.49-.025.374-.007.827.072 1.47.622l.034-.075c-.376-.515-.212-1.885.49-3.535.811-1.904 1.803-3.534 2.606-3.099v-.004c.725.392.36 1.916-.45 3.82-.697 1.636-1.377 2.939-2.083 3.043l-.079.241c.834.662.667.978.441 1.52-.262.619.114 1.175-1.222 1.403a.969.969 0 0 1-.434-.025c-.098.232-.177.412-.177.412s-.13.357-.478.232c-.357-.13-.263-.388-.263-.388l.344-.625c-.214-.231-.327-.492-.297-.586.133-.294.455-.031.423-.356-.619.066-1.206-.294-1.336-.326-.13-.031-.066-.325-1.109.326-.414.258-.794.517-1.18.762.153.784 1.057 2.016 1.74 2.106 2.152-.098 2.152 1.34 1.991 1.37-.325-.618-.846-.489-1.532-.097s.13.325.423.552c-1.437.608-2.848-.537-3.247-.901-.568.903-1.673 1.543-2.438 1.885-.944.423-1.65.983-.944 1.336.588.294.913-.455 1.763-.588.846-.13 1.599.196 1.665.686-.356-.196-.619-.196-.619-.196s.294.196.325.52c.032.326-.03.162-.227.162-.49 0-.552-.424-.98-.357-1.077.098-1.14.552-1.727.62-.588.062-1.567-.26-1.434-1.012.13-.748 1.14-1.273 2.088-1.665.944-.392 2.382-1.63 2.186-2.743-.096-.546-.351-.768-.585-.852-.683.27-1.4.45-2.13.531-2.1.257-2.804-.742-2.983-1.09-1.302.933-3.153 1.275-3.842 2.422.294-1.63 1.175-2.155 3.232-3.099 2.052-.942 2.478-2.891 2.48-2.901v-.006.006c-.002.03-.101 1.773-1.247 3.03.39.746.984 1.125 2.36.984 1.567-.16 3.828-1.52 5.419-2.316 1.109-.556 1.598.49 2.382.553 1.09.09.196 1.238.196 1.238s.819-.13.98-.423c.16-.294-.099-.49.16-.749.262-.262.227-.556-.145-.83-.33-.243-.537-.568-1.614-1.058-1.078-.49-1.994.454-3.233.748-.932.22-1.77-.183-2.129-.399-.956 1.024-2.141 1.222-2.141 1.222v-.004c1.175-.686 1.908-1.931 2.225-3.009.234-.795.07-1.655-.033-2.052-1.51-.03-2.627-1.478-2.627-1.478h.004s1.924 1.238 3.49.717c1.564-.521 1.305-3.554 1.337-3.393.015.078.262.692.3 1.436.367-.044 1.705-.25 1.424-.887-.884-1.99-2.486-3.235-5.312-3.374.518 2.805-1.864 2.038-5.616 3.961C1.687 7.243.653 10.448 1.107 14.17c.277 2.245 1.718 4.716 4.387 6.323a2.58 2.58 0 0 0 1.647-.834c.815-.913.356-2.35 1.696-2.872a4.109 4.109 0 0 1 1.472-.296c.491-.003.781.1.781.1s-2.382.325-2.578 1.697c-.196 1.371-.52 1.99-1.042 2.413-.238.186-.51.324-.802.405 1.564.7 3.462 1.127 5.703 1.127 7.15 0 10-5.673 10.305-7.193.34-1.681 1.324-2.08 1.324-.286 0 3.428-5.136 8.388-11.601 8.388-6.465 0-10.054-3.495-11.523-6.3C-.594 14.032-.2 9.758 1.954 7.18c2.154-2.582 5.081-3.166 7.2-3.851 2.017-.653 1.91-1.86 1.895-1.975-.33-.015-.662-.017-.993-.004.796-.318 1.543-.491 2.257-.492zm9.299 4.492c-.358.006-1.19 1.31-1.863 2.994-.705 1.77-.909 3.314-.69 3.436.122.067 1.168-1.203 1.873-2.97.706-1.77 1.054-3.326.729-3.452a.126.126 0 0 0-.05-.008zm-6.66.502c-.01.779-.283 1.647-1.284 2.178-.08.043-.158.08-.236.112a3.9 3.9 0 0 1 .076.42c.27.151.672.34 1.112.413.784.129 1.34-.396 1.568-.588.227-.192.572-.047.732-.016.16.036.486-.062.259-.16-.231-.098-.49-.44-.686-.862-.208-.833-.5-1.19-.653-1.33-.248.122-.579.029-.8-.12-.03-.015-.06-.03-.088-.047zm6.396.166h.014l-.036.014c-.006.004-.01.01-.015.016.016.07.007.146.007.225a.806.806 0 0 1-.03.24c.006.015 0 .04 0 .059-.019.024-.004.044-.009.064.03.029.074.063.054.102-.01.025-.04.035-.069.044-.014.07-.034.147-.049.226 0 .02 0 .049-.004.068-.015.05-.03.093-.045.147-.01.044 0 .128-.048.137-.02.05-.03.089-.054.138-.01.004-.02-.005-.03 0v.001a1.04 1.04 0 0 1-.03.18c0 .02-.004.054-.004.078-.025.034-.01.059-.02.088.035.04.079.079.054.137-.014.04-.054.05-.088.069-.03.093-.059.206-.088.308-.005.03-.01.064-.02.094-.024.063-.054.127-.073.2-.02.06-.015.167-.078.177-.03.063-.045.112-.079.176-.015.01-.024-.005-.039 0-.015.02-.02.049-.034.069-.01.01-.025.01-.035.024-.02.03-.014.073-.034.118a.318.318 0 0 0-.054.063l-.005.01c-.023.062-.034.136-.062.196.023-.197.045-.426.063-.662.009-.17.022-.382.037-.599a6.43 6.43 0 0 0-.01-.89l.031-.063.064-.123c.014-.151.026-.256.03-.24a.95.95 0 0 1 .023.14c.035-.061.071-.124.113-.193.04-.069.074-.142.118-.196.03-.04.078-.117.113-.19.01-.025.01-.05.048-.055.035-.044.064-.098.103-.137.01-.01.025-.015.035-.02.01-.01.014-.024.029-.034.024-.02.069-.039.098-.078.005-.01.01-.02.02-.03.012-.015.03-.045.05-.068l-.001-.01.017-.006a.062.062 0 0 1 .022-.014zm-.993 1.453c-.057.724-.1 1.45-.128 2.175a1.87 1.87 0 0 0-.045.095c-.049.117-.122.254-.171.391l-.015.079c-.02.054-.049.107-.064.161-.03.084-.068.23-.147.309-.004.01-.024.02-.034.03-.01.014-.005.034-.02.053l-.017.011.117-1.412c.006-.26.033-.515.07-.746l-.003-.032c.015-.083.025-.147.049-.24l.01-.03c.078-.384.164-.645.164-.645l-.032.308c.012-.028.025-.056.04-.084.014-.03.038-.054.053-.088.005-.015.01-.04.015-.059.046-.095.102-.184.158-.276zm-.599 1.579c-.073.505-.127 1.15-.06 1.744-.006.011-.01.023-.018.034-.025.024-.06.039-.084.068-.014.02-.024.05-.044.074a.98.98 0 0 1-.068.078l-.088.128a.212.212 0 0 1-.098.088c-.02.01-.05.005-.074.01-.014-.02 0-.05 0-.074 0-.01-.01-.024-.01-.034 0-.03-.004-.084 0-.113 0-.03.025-.054.035-.098.005-.034 0-.073 0-.112 0-.015.005-.035.005-.06 0-.029 0-.043.004-.083a.598.598 0 0 0-.004-.132c.02-.103.029-.186.058-.308.01-.054.035-.152.06-.216.019-.063.043-.127.063-.196.02-.068.044-.137.068-.205.015-.044.04-.084.06-.133.009-.024.009-.053.019-.083.02-.059.044-.122.073-.176l.083-.162zm-6.268 6.006c-.13.074-.263.146-.4.215.283.203.905.778.65 1.775a2.183 2.183 0 0 1-.038.132c.525.729 1.273 1.112 1.657 1.168.42.063.239-.164.176-.391-.066-.228.392-.294.65-.455.26-.164.13-.423-.716-.294-.762.12-1.833-1.545-1.979-2.15Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/codenewbie.svg b/assets/lib/simple-icons/icons/codenewbie.svg
new file mode 100644
index 00000000..65db2b07
--- /dev/null
+++ b/assets/lib/simple-icons/icons/codenewbie.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>CodeNewbie</title><path d="M12.071 0A12.023 12.023 0 0 0 2.31 5.011c-2.913 4.075-2.879 9.774.068 13.821.094.13.196.254.292.367.27.306.543.59.782.82.18.165.386.345.615.517.416.337.866.63 1.343.873-.429-.2-.834-.401-1.177-.58-.075-.036-.139-.077-.207-.112-.22-.11-.422-.228-.616-.339a5.47 5.47 0 0 1-.747-.527c-.153 1.044-.754 1.895-1.792 2-.975.096-.954 1.383 0 1.5 2.647.33 5.45.648 8.22.648 1.68.014 3.359-.128 5.013-.426.38-.098.758-.182 1.079-.27 5.512-1.53 9.055-6.856 8.64-12.487a.683.683 0 0 0 0-.11c-.61-4.85-3.896-9-8.697-10.301A11.676 11.676 0 0 0 12.07 0zm-.108 3.025a.677.677 0 0 1 .396.14 11.07 11.07 0 0 1 1.86 1.677 16.66 16.66 0 0 1 2.874-.246h.432c.95.027.962 1.5.027 1.5h-.443c-.618 0-1.235.039-1.847.117a16.68 16.68 0 0 1 1.765 3.486c.947-.194 1.91-.303 2.877-.326h.02c.95 0 .935 1.482-.02 1.501-.802.023-1.6.11-2.387.264a26.43 26.43 0 0 1 .893 4.221c.057.479-.285.715-.66.715a.83.83 0 0 1-.846-.715 29.483 29.483 0 0 0-.23-1.411 23.662 23.662 0 0 0-.635-2.463 19.676 19.676 0 0 0-.505-1.418 15.706 15.706 0 0 0-1.93-3.577c-.263.069-.519.125-.782.2a15.29 15.29 0 0 0-1.805.616 20.446 20.446 0 0 1 1.798 3.791c.626-.3 1.27-.562 1.93-.782l.713 1.35a15.46 15.46 0 0 0-2.18.872 20.74 20.74 0 0 1 .782 5.25.7.7 0 0 1-.74.726.723.723 0 0 1-.76-.727v-.228a18.878 18.878 0 0 0-.638-4.303 15.612 15.612 0 0 0-.449-1.473A18.893 18.893 0 0 0 9.674 7.95a7.71 7.71 0 0 0-.616.36c-.92.548-1.762 1.22-2.502 1.995a.685.685 0 0 1-.503.232c-.563 0-1.073-.754-.563-1.29A13.44 13.44 0 0 1 8.514 6.88c.096-.062.2-.117.304-.173-.221-.312-.46-.612-.712-.899a.832.832 0 0 0-.07-.09c-.485-.554.023-1.306.57-1.306a.652.652 0 0 1 .496.248c.38.442.74.899 1.079 1.376l.013.007a14.556 14.556 0 0 1 1.923-.7c.13-.043.262-.08.396-.109a6.949 6.949 0 0 0-.85-.727.402.402 0 0 0-.063-.048c-.646-.463-.243-1.434.363-1.434zm-1.386 9.299l.55 1.44a16.386 16.386 0 0 0-2.656 2.157c-.159.13-.338.218-.5.215-.575 0-1.088-.752-.56-1.28a18.44 18.44 0 0 1 3.166-2.532Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/codepen.svg b/assets/lib/simple-icons/icons/codepen.svg
index 4822430e..fe0a22e6 100644
--- a/assets/lib/simple-icons/icons/codepen.svg
+++ b/assets/lib/simple-icons/icons/codepen.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>CodePen icon</title><path d="M18.144 13.067v-2.134L16.55 12zm1.276 1.194a.628.628 0 01-.006.083l-.005.028-.011.053-.01.031c-.005.016-.01.031-.017.047l-.014.03a.78.78 0 01-.021.043l-.019.03a.57.57 0 01-.08.1l-.026.025a.602.602 0 01-.036.03l-.029.022-.01.008-6.782 4.522a.637.637 0 01-.708 0L4.864 14.79l-.01-.008a.599.599 0 01-.065-.052l-.026-.025-.032-.034-.021-.028a.588.588 0 01-.067-.11l-.014-.031a.644.644 0 01-.017-.047l-.01-.03c-.004-.018-.008-.036-.01-.054l-.006-.028a.628.628 0 01-.006-.083V9.739c0-.028.002-.055.006-.083l.005-.027.011-.054.01-.03a.574.574 0 01.12-.217l.031-.034.026-.025a.62.62 0 01.065-.052l.01-.008 6.782-4.521a.638.638 0 01.708 0l6.782 4.521.01.008.03.022.035.03c.01.008.017.016.026.025a.545.545 0 01.08.1l.019.03a.633.633 0 01.021.043l.014.03c.007.016.012.032.017.047l.01.031c.004.018.008.036.01.054l.006.027a.619.619 0 01.006.083zM12 0C5.373 0 0 5.372 0 12 0 18.627 5.373 24 12 24c6.628 0 12-5.372 12-12 0-6.627-5.372-12-12-12m0 10.492L9.745 12 12 13.51 14.255 12zm.638 4.124v2.975l4.996-3.33-2.232-1.493zm-6.272-.356l4.996 3.33v-2.974l-2.764-1.849zm11.268-4.52l-4.996-3.33v2.974l2.764 1.85zm-6.272-.356V6.41L6.366 9.74l2.232 1.493zm-5.506 1.549v2.134L7.45 12Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>CodePen</title><path d="M18.144 13.067v-2.134L16.55 12zm1.276 1.194a.628.628 0 01-.006.083l-.005.028-.011.053-.01.031c-.005.016-.01.031-.017.047l-.014.03a.78.78 0 01-.021.043l-.019.03a.57.57 0 01-.08.1l-.026.025a.602.602 0 01-.036.03l-.029.022-.01.008-6.782 4.522a.637.637 0 01-.708 0L4.864 14.79l-.01-.008a.599.599 0 01-.065-.052l-.026-.025-.032-.034-.021-.028a.588.588 0 01-.067-.11l-.014-.031a.644.644 0 01-.017-.047l-.01-.03c-.004-.018-.008-.036-.01-.054l-.006-.028a.628.628 0 01-.006-.083V9.739c0-.028.002-.055.006-.083l.005-.027.011-.054.01-.03a.574.574 0 01.12-.217l.031-.034.026-.025a.62.62 0 01.065-.052l.01-.008 6.782-4.521a.638.638 0 01.708 0l6.782 4.521.01.008.03.022.035.03c.01.008.017.016.026.025a.545.545 0 01.08.1l.019.03a.633.633 0 01.021.043l.014.03c.007.016.012.032.017.047l.01.031c.004.018.008.036.01.054l.006.027a.619.619 0 01.006.083zM12 0C5.373 0 0 5.372 0 12 0 18.627 5.373 24 12 24c6.628 0 12-5.372 12-12 0-6.627-5.372-12-12-12m0 10.492L9.745 12 12 13.51 14.255 12zm.638 4.124v2.975l4.996-3.33-2.232-1.493zm-6.272-.356l4.996 3.33v-2.974l-2.764-1.849zm11.268-4.52l-4.996-3.33v2.974l2.764 1.85zm-6.272-.356V6.41L6.366 9.74l2.232 1.493zm-5.506 1.549v2.134L7.45 12Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/codeproject.svg b/assets/lib/simple-icons/icons/codeproject.svg
new file mode 100644
index 00000000..463c98ea
--- /dev/null
+++ b/assets/lib/simple-icons/icons/codeproject.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>CodeProject</title><path d="M15.644 21.576c-.837-.038-2.143.467-2.43.209-.378-.34.28-1.882.531-2.19.172-.204.452-.523.605-.663.594-.552.967-1.32.964-2.177-.004-.941-.281-1.278.659-.532.324.258.768.59 1.335.854 1.14.524-1.32-1.68-1.788-2.102-.788-.698-1.045-1.08-.609-1.353.346-.217.672-.46.977-.723 1.195-1.036 2.047-2.607 1.878-4.897-.15-2.091-4.09-7.979-5.14-8.002-.851-.018-2.58 2.107-3.527 3.256-1.028 1.247-2.637 3.408-2.958 4.677a4.726 4.726 0 0 0-.135 1.181c0 1.44.75 2.784 1.898 3.744.703.586 1.48 1.038.237 2.31-.74.76-2.433 2.363-1.452 1.91.572-.265 1-.614 1.34-.855.71-.504.99-.669.833-.03-.034.133-.028.274-.028.41 0 .893.37 1.69.95 2.278.15.154.586.486.833.7.586.506 1.196 1.864.816 2.202-.287.259-1.593-.246-2.426-.208-.837.037-2.276.566-2.239 1.563.037.998 3.17.851 3.9.858 1.645.012 1.089-.643 1.645-.631.555.016 0 .611 1.85.621.73.004 3.678.15 3.715-.847.042-.998-1.4-1.525-2.234-1.563zm-5.502 1.789c-.665.281-1.536.244-1.764-.15-.226-.398 1.138-.717 1.498-.772.359-.057 1.138-.132 1.422.396.332.613-.495.241-1.156.526zM8.257 9.099c0-.348.028-.685.103-1.007.254-1.088 1.467-2.977 2.272-4.042.744-.984 1.761-2.88 2.43-2.863.82.02 4.274 5.173 4.395 6.96.127 1.961-.535 3.305-1.47 4.193-.807.764-1.783 1.367-2.939 1.367-2.31 0-4.791-2.098-4.791-4.608zm2.129 7.714c0-1.216.994-2.204 2.221-2.204a2.21 2.21 0 0 1 2.219 2.204c0 1.218-.99 2.201-2.219 2.201a2.208 2.208 0 0 1-2.221-2.201zm1.927 4.986c-.237 0-.46-.905-.463-1.145-.007-.356.038-.755.474-.755s.47.398.473.755c.005.33-.248 1.145-.484 1.145zm3.954 1.415c-.226.395-1.1.432-1.765.15-.66-.284-1.487.087-1.155-.526.284-.527 1.063-.452 1.423-.396.358.055 1.727.375 1.497.772zM15.081 5.857c-.456 0-.85.31-1.172.775-.158.23-.45.41-.826-.23-.35-.593-.92-.922-1.508-.922-1.178 0-2.135 1.413-2.135 3.156 0 1.74.957 3.153 2.135 3.153.737 0 1.37-.557 1.769-1.39.154-.324.386-.263.566-.02.336.457.716.776 1.172.776.92 0 1.663-1.187 1.663-2.646-.001-1.466-.744-2.652-1.664-2.652zm-3.506 4.987c-.826 0-1.498-.99-1.498-2.21 0-1.226.672-2.216 1.498-2.216s1.498.99 1.498 2.217c0 1.218-.672 2.21-1.498 2.21zm3.506-.483c-.641 0-1.162-.83-1.162-1.856 0-1.028.52-1.857 1.162-1.857.644 0 1.167.829 1.167 1.857 0 1.026-.522 1.856-1.167 1.856zm.471-1.905c0 .481-.189.876-.419.876-.23 0-.418-.395-.418-.876 0-.488.188-.882.418-.882.23 0 .42.393.42.882zm-2.414 8.978a.418.418 0 0 1-.836 0c0-.229.189-.413.418-.413.228 0 .418.185.418.413zM5.57 17.36c-.165 0-1.688.02-2.163.227-.474.21.284.508.928.544.322.02.22.26.076.453-1.155 1.58-.265 1.263.513.565.192-.17.265.057.285.265.018.206.51 1.75.665-.208.063-.81.113-1.241.077-1.526-.038-.282-.193-.32-.381-.32zm12.858 0c.161 0 1.687.02 2.163.227.474.21-.284.508-.932.544-.32.02-.217.26-.076.453 1.158 1.58.268 1.263-.51.565-.192-.17-.265.057-.285.265-.021.206-.516 1.75-.665-.208-.064-.81-.113-1.241-.076-1.526.04-.282.19-.32.381-.32zm-6.254-8.812c0 .607-.235 1.101-.524 1.101-.288 0-.521-.494-.521-1.1 0-.608.233-1.101.52-1.101.289 0 .525.493.525 1.1zm3.377-.091c0 .481-.189.876-.419.876-.23 0-.418-.395-.418-.876 0-.488.188-.882.418-.882.23 0 .42.393.42.882Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/codereview.svg b/assets/lib/simple-icons/icons/codereview.svg
new file mode 100644
index 00000000..87079abd
--- /dev/null
+++ b/assets/lib/simple-icons/icons/codereview.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Code Review</title><path d="M11.986 23.972C5.411 23.972 0 18.561 0 11.986 0 5.411 5.411 0 11.986 0c6.575 0 11.986 5.411 11.986 11.986a11.9 11.9 0 0 1-2.492 7.281l2.062 2.062c.293.293.458.691.458 1.106 0 .859-.706 1.565-1.565 1.565-.415 0-.813-.165-1.106-.458l-2.062-2.062a11.9 11.9 0 0 1-7.281 2.492Zm6.664-6.001a8.936 8.936 0 0 0 2.31-5.985c0-4.923-4.051-8.974-8.974-8.974-2.702 0-5.141 1.22-6.792 3.135h5.255v2.458H3.681a8.851 8.851 0 0 0-.536 1.844H9.22v2.459H3.06c.087.845.297 1.673.621 2.459h4.31v2.458H5.194c1.651 1.915 4.09 3.135 6.792 3.135 2.29 0 4.392-.877 5.985-2.31a1.59 1.59 0 0 1 .679-.679Zm-9.43-.146h7.376v-2.458H9.22v2.458Zm6.147-4.917h4.917v-2.459h-4.917v2.459Zm-4.918 0h3.074v-2.459h-3.074v2.459Zm1.844-4.303h4.918V6.147h-4.918v2.458Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/codersrank.svg b/assets/lib/simple-icons/icons/codersrank.svg
index 6eb493ad..8824f37d 100644
--- a/assets/lib/simple-icons/icons/codersrank.svg
+++ b/assets/lib/simple-icons/icons/codersrank.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>CodersRank icon</title><path d="M23.134 8.64l-5.973-3.62a.286.286 0 0 0-.412.125l-1.4 3.286 2.842 1.696a.53.53 0 0 1 0 .921l-5.335 3.14-2.267 5.274a.127.127 0 0 0 .052.203.122.122 0 0 0 .134-.035l3.914-2.365 1.545 2.219a.373.373 0 0 0 .309.167h3.708a.367.367 0 0 0 .327-.2.382.382 0 0 0-.018-.386l-2.513-3.852 5.088-3.077c.577-.349.865-.74.865-1.172V9.813c0-.433-.288-.823-.866-1.172zM13.082 4.35L.845 12.052c-.577.348-.858.739-.845 1.171v1.173c.014.432.303.816.866 1.15l6.056 3.496a.286.286 0 0 0 .412-.146l1.36-3.286-2.884-1.633a.518.518 0 0 1-.275-.384.529.529 0 0 1 .254-.537l5.295-3.245 2.183-5.316a.128.128 0 0 0-.04-.142.122.122 0 0 0-.146-.005z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>CodersRank</title><path d="M23.134 8.64l-5.973-3.62a.286.286 0 0 0-.412.125l-1.4 3.286 2.842 1.696a.53.53 0 0 1 0 .921l-5.335 3.14-2.267 5.274a.127.127 0 0 0 .052.203.122.122 0 0 0 .134-.035l3.914-2.365 1.545 2.219a.373.373 0 0 0 .309.167h3.708a.367.367 0 0 0 .327-.2.382.382 0 0 0-.018-.386l-2.513-3.852 5.088-3.077c.577-.349.865-.74.865-1.172V9.813c0-.433-.288-.823-.866-1.172zM13.082 4.35L.845 12.052c-.577.348-.858.739-.845 1.171v1.173c.014.432.303.816.866 1.15l6.056 3.496a.286.286 0 0 0 .412-.146l1.36-3.286-2.884-1.633a.518.518 0 0 1-.275-.384.529.529 0 0 1 .254-.537l5.295-3.245 2.183-5.316a.128.128 0 0 0-.04-.142.122.122 0 0 0-.146-.005z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/coderwall.svg b/assets/lib/simple-icons/icons/coderwall.svg
index 1976a818..5cb88445 100644
--- a/assets/lib/simple-icons/icons/coderwall.svg
+++ b/assets/lib/simple-icons/icons/coderwall.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Coderwall icon</title><path d="M21.354 18.708c1.46 0 2.646 1.185 2.646 2.646C24 22.814 22.814 24 21.354 24s-2.646-1.186-2.646-2.646c0-1.458 1.185-2.646 2.646-2.646zM12 9.354c1.46 0 2.646 1.186 2.646 2.646S13.46 14.646 12 14.646 9.354 13.46 9.354 12 10.54 9.354 12 9.354zm9.354 0C22.814 9.354 24 10.54 24 12s-1.186 2.646-2.646 2.646S18.708 13.46 18.708 12s1.185-2.646 2.646-2.646zM12 0c1.46 0 2.646 1.185 2.646 2.646 0 1.46-1.186 2.646-2.646 2.646S9.354 4.106 9.354 2.646 10.54 0 12 0zM2.646 0c1.46 0 2.646 1.185 2.646 2.646 0 1.46-1.186 2.646-2.646 2.646S0 4.106 0 2.646 1.186 0 2.646 0zm18.708 0C22.814 0 24 1.185 24 2.646c0 1.46-1.186 2.646-2.646 2.646s-2.646-1.186-2.646-2.646S19.893 0 21.354 0z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Coderwall</title><path d="M21.354 18.708c1.46 0 2.646 1.185 2.646 2.646C24 22.814 22.814 24 21.354 24s-2.646-1.186-2.646-2.646c0-1.458 1.185-2.646 2.646-2.646zM12 9.354c1.46 0 2.646 1.186 2.646 2.646S13.46 14.646 12 14.646 9.354 13.46 9.354 12 10.54 9.354 12 9.354zm9.354 0C22.814 9.354 24 10.54 24 12s-1.186 2.646-2.646 2.646S18.708 13.46 18.708 12s1.185-2.646 2.646-2.646zM12 0c1.46 0 2.646 1.185 2.646 2.646 0 1.46-1.186 2.646-2.646 2.646S9.354 4.106 9.354 2.646 10.54 0 12 0zM2.646 0c1.46 0 2.646 1.185 2.646 2.646 0 1.46-1.186 2.646-2.646 2.646S0 4.106 0 2.646 1.186 0 2.646 0zm18.708 0C22.814 0 24 1.185 24 2.646c0 1.46-1.186 2.646-2.646 2.646s-2.646-1.186-2.646-2.646S19.893 0 21.354 0z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/codesandbox.svg b/assets/lib/simple-icons/icons/codesandbox.svg
index e99071d7..97040881 100644
--- a/assets/lib/simple-icons/icons/codesandbox.svg
+++ b/assets/lib/simple-icons/icons/codesandbox.svg
@@ -1 +1 @@
-<svg viewBox="0 0 24 24" role="img" xmlns="http://www.w3.org/2000/svg"><title>CodeSandbox icon</title><path d="M2 6l10.455-6L22.91 6 23 17.95 12.455 24 2 18V6zm2.088 2.481v4.757l3.345 1.86v3.516l3.972 2.296v-8.272L4.088 8.481zm16.739 0l-7.317 4.157v8.272l3.972-2.296V15.1l3.345-1.861V8.48zM5.134 6.601l7.303 4.144 7.32-4.18-3.871-2.197-3.41 1.945-3.43-1.968L5.133 6.6z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>CodeSandbox</title><path d="M1.5 6l10.455-6L22.41 6l.09 11.95L11.955 24 1.5 18zm2.088 2.481v4.757l3.345 1.86v3.516l3.972 2.296v-8.272zm16.739 0l-7.317 4.157v8.272l3.972-2.296V15.1l3.345-1.861V8.48zM4.634 6.601l7.303 4.144 7.32-4.18-3.871-2.197-3.41 1.945-3.43-1.968L4.633 6.6z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/codeship.svg b/assets/lib/simple-icons/icons/codeship.svg
index 75867ffb..30df1e00 100644
--- a/assets/lib/simple-icons/icons/codeship.svg
+++ b/assets/lib/simple-icons/icons/codeship.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Codeship icon</title><path d="M12.053 0c-.972 0-2.398.405-2.398.762v2.117a13.032 13.032 0 0 1 2.42-.272 14.387 14.387 0 0 1 2.423.26V.773c0-.367-1.475-.774-2.445-.774zm.022 3.787c-2.042 0-5.068.837-5.068 1.193v2.595a18.793 18.793 0 0 1 5.02-2.473c.012-.013 2.803.749 5.212 2.495l.003.003V4.98c0-.37-3.126-1.193-5.167-1.193zM12.1 6.37c-.763.197-1.514.555-2.214.887a17.585 17.585 0 0 0-4.19 2.767c1.352 1.378 2.161 3.11 2.654 4.72l.037.113.04.037-.052-.037c-.013-.013-1.623-1.661-3.972-1.661-1.242 0-2.68.456-4.193 1.833.147.516.32 1.006.528 1.498v.016l.025.047c2.004 4.575 6.7 7.553 11.693 7.406 4.895-.147 9.348-3.311 11.13-7.859.098-.246.184-.506.272-.752-1.686-1.254-4.332-2.814-5.351-2.617v-.003c-.776.149-1.686 1.266-2.854 2.385.468-1.66 1.307-3.515 2.832-5.114a15.58 15.58 0 0 0-1.243-1.021v-.012C15.717 7.87 13.944 6.899 12.1 6.369zm-.01.897l.612 3.05-.147 2.67-.443 3.959v.018l-.05-.006c-.006-.001-.015-.008-.022-.01v-.027l-.493-3.947-.122-2.654zm.9 9.825l.021.004a7.135 7.135 0 0 1-.143.056c.04-.023.08-.036.121-.06z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Codeship</title><path d="M12 0C5.372 0 0 5.372 0 12s5.372 12 12 12 12-5.372 12-12S18.628 0 12 0zm0 1.334c.824 0 1.636.191 2.373.56a.53.53 0 0 1 .294.474v1.519a15.985 15.985 0 0 0-5.334 0V2.368c0-.2.114-.384.294-.474A5.304 5.304 0 0 1 12 1.334zm5.143 4.595c.114.043.19.152.19.274v2.122A20.956 20.956 0 0 0 12 6.648c-1.951.344-3.794.943-5.333 1.677V6.203c0-.122.076-.231.19-.274a14.648 14.648 0 0 1 5.038-.933c1.926-.024 3.725.37 5.248.933zM12 8s3.752.625 6.411 2.482c.145.101.18.299.084.448-1.104 1.74-1.97 3.922-2.596 5.838 1.252-1.28 2.24-2.085 4.1-2.101.9 0 1.598.202 2.185.516C20.42 20.618 15.503 22.72 12 22.667c-4.337.02-8.32-2.702-9.914-6.723.8-.709 1.74-1.277 3.247-1.277.92 0 1.626.212 2.22.537-.554-1.475-1.236-2.994-2.048-4.274a.33.33 0 0 1 .084-.448C8.248 8.625 12 8 12 8zm0 1.333c-1.333 2 0 8 0 8s1.333-6 0-8z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/codewars.svg b/assets/lib/simple-icons/icons/codewars.svg
index ff4ae98f..26133027 100644
--- a/assets/lib/simple-icons/icons/codewars.svg
+++ b/assets/lib/simple-icons/icons/codewars.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Codewars icon</title><path d="M.76 12.2l-.08-.04c-.18-.1-.32-.25-.42-.44-.14-.26-.2-.5-.2-.75l.02-.13c0-.2.05-.38.14-.55l.08-.15c.04-.08.1-.15.15-.22.06-.07.07-.16.05-.24l-.05-.16c-.06-.2-.1-.4-.1-.6L.32 8.8c0-.22.06-.44.2-.6l.1-.13c.07-.1.18-.16.3-.2.1-.03.17-.13.18-.25l.02-.34c0-.27.13-.52.33-.7l.24-.18c.05-.05.1-.1.14-.18.05-.06.06-.14.05-.2-.02-.1 0-.13.05-.14.16.06.26.04.33-.04l.13-.17.36-.4c.1-.1.14-.28.08-.42l-.12-.26c-.02-.06 0-.13.05-.15.13 0 .22.05.26.13l.04.07c.06.12.2.18.3.13.22-.08.4-.1.57-.1h.32c.22 0 .4-.15.44-.38.04-.28.14-.5.28-.65.15-.17.32-.3.52-.4.26-.14.42-.34.47-.6.07-.32.24-.55.47-.7l.76-.43.22-.13c.13-.08.25-.18.35-.3l.2-.24c.1-.1.2-.17.32-.2.1-.03.24-.05.36-.04l.4.03c.2 0 .36.05.52.12l.1.05c.1.04.2.02.25-.05L10 .7l.43-.45c.1-.1.22-.14.35-.12.13.02.26.07.38.13.18.1.33.14.5.14h.1c.22 0 .44.03.66.08l.15.04c.15.04.3-.02.4-.14.03-.05.1-.06.14-.02.03.02.04.04.05.07.02.2.14.35.3.4l.16.05c.17.05.32.16.42.3.1.15.22.3.36.4l.1.1c.1.1.24.14.38.13h.59c.24 0 .47.04.7.14.22.1.45.12.66.04.22-.07.45-.1.68-.07l.43.07c.2.02.4.12.52.27l.05.05c.1.1.2.23.3.37.06.13.2.2.34.2h.62c.15 0 .3.03.42.1.13.1.24.2.34.3l.1.13c.12.14.18.33.17.53 0 .16.12.3.28.3l.2.02c.14 0 .26.1.33.23l.1.2.26.58c.04.1.05.2.04.28 0 .1.03.18.1.22l.1.07c.13.1.2.25.18.42l-.07.47-.02.2c-.02.1.03.23.12.3.15.1.22.23.23.38v.2c0 .1-.02.22-.1.3-.06.08-.1.18-.1.3l.03.23c0 .16.1.3.2.4.14.1.22.26.24.42.04.25.05.45.05.65v.23c0 .08 0 .16.03.24.02.07.07.14.13.18l.2.15c.2.13.34.3.42.53.1.22.13.45.13.68v.08c0 .18-.02.37-.08.54-.05.18-.04.35.03.5.08.14.13.3.15.47.04.2.02.4-.05.56l-.02.07c-.05.12-.13.23-.23.32-.1.1-.2.16-.26.23-.06.06-.1.16-.07.25l.03.14c.05.2.05.4 0 .58v.08c-.04.15-.1.28-.16.4-.07.13-.17.23-.3.3l-.15.1c-.07.04-.12.13-.12.22 0 .1-.04.2-.1.26l-.15.2c-.1.13-.23.24-.37.3-.14.1-.26.2-.35.3-.1.12-.18.26-.22.4-.04.18-.18.28-.33.28h-.54c-.14 0-.27.1-.33.22-.07.16-.14.27-.23.37-.1.1-.16.22-.2.36-.02.12-.12.2-.22.16-.13-.06-.26 0-.32.1-.12.2-.24.35-.37.48l-.07.06c-.13.1-.3.18-.45.18-.18 0-.27.08-.3.2-.03.1-.05.23-.06.34-.02.12-.06.23-.1.33l-.05.06c-.1.15-.18.3-.28.43l-.04.06c-.13.17-.3.3-.5.35-.24.08-.45.1-.66.1h-.14c-.1 0-.2.06-.27.16l-.06.1-.06.12-.13.22c-.1.18-.25.3-.45.36-.2.05-.43.07-.64.06l-.16-.02c-.14 0-.27-.04-.4-.1-.1-.04-.24 0-.3.1-.1.14-.22.22-.35.26l-.3.1c-.2.05-.42.05-.63 0l-.16-.05c-.1 0-.2-.05-.28-.1-.1-.05-.2-.07-.3-.06l-.13.02c-.2.02-.38 0-.56-.05l-.27-.06c-.12-.04-.23-.12-.3-.23-.05-.1-.16-.18-.3-.2H9.9c-.2-.03-.38-.1-.5-.25L9 22.5l-.14-.12-.22-.16-.13-.1c-.15-.1-.33-.18-.52-.2l-.6-.1c-.06 0-.1-.02-.16-.03L7 21.74c-.1-.02-.2-.1-.27-.2-.06-.1-.17-.14-.27-.1-.2.08-.36.1-.52.13H5.8c-.26.02-.5-.02-.74-.13-.24-.1-.4-.25-.55-.44-.12-.17-.3-.3-.52-.34l-.28-.06c-.2-.04-.4-.12-.58-.24-.2-.14-.3-.27-.38-.43-.08-.15-.13-.32-.14-.5v-.08c-.02-.2-.16-.38-.35-.43-.23-.07-.4-.17-.55-.3-.14-.13-.22-.32-.22-.52l.02-.44c0-.17-.05-.32-.17-.43-.12-.12-.2-.27-.2-.43l-.03-.36c-.02-.26-.07-.52-.13-.78-.06-.23.03-.46.22-.57l.07-.05c.1-.07.14-.2.08-.32l-.08-.1c-.1-.1-.2-.17-.3-.2-.08-.02-.1-.1-.1-.15l.1-.12c.06-.07.05-.18 0-.24-.08-.08-.12-.18-.13-.28l-.02-.7c0-.14.02-.28.06-.42.04-.12 0-.26-.12-.32zm9.9-1.32c.07-.07.06-.2 0-.25-.1-.08-.17-.17-.23-.27l-.1-.16c-.07-.13-.16-.24-.26-.34l-.02-.02c-.1-.08-.17-.18-.23-.3-.05-.1-.05-.2 0-.3l.06-.1c.06-.1.1-.24.1-.36v-.04c0-.1-.04-.2-.1-.3-.04-.08-.08-.18-.1-.28V8.1c-.03-.12 0-.25.08-.35.08-.13.14-.25.17-.4v-.02c.04-.1.02-.23-.04-.33s-.08-.2-.04-.32l.07-.2c.06-.18.15-.34.27-.48l.14-.15.1-.12.06-.06c.06-.06.07-.16.02-.24-.05-.1-.08-.2-.06-.3l.02-.14c.03-.2.1-.4.23-.56l.04-.04c.15-.2.34-.33.56-.4l.27-.1c.12-.04.2-.17.2-.3 0-.16.05-.3.14-.43l.05-.05c.1-.17.22-.34.3-.52l.07-.13c.02-.03.03-.07.03-.1 0-.17-.1-.32-.26-.33L11.76 2c-.25-.02-.5 0-.74 0l-.85.1c-.13 0-.23.1-.24.24 0 .14-.1.26-.22.3l-.36.1-.1.03-.3.1c-.22.07-.4.23-.5.45l-.08.13c-.1.22-.27.4-.48.53-.2.13-.3.34-.32.58v.1c-.02.2-.08.4-.2.54l-.05.08c-.08.1-.1.23-.05.34.05.12.08.25.07.38v.53c0 .14-.1.26-.2.3-.14.05-.23.16-.27.3l-.05.2c-.04.2.03.4.2.52.16.12.26.3.3.52v.18c.03.2.14.4.32.5.18.12.32.3.4.5l.05.16c.08.22.26.35.46.37h.06c.18 0 .34.1.44.26.1.16.26.27.44.3l.28.08c.17.05.33.14.46.27l.02.02c.1.08.26.07.35-.04l.07-.08zm1.14-.92c.1.06.2.03.24-.06l.03-.05c.07-.14.16-.28.26-.4l.2-.3c.03 0 .04-.02.05-.04l.24-.32c.1-.1.22-.17.36-.17.13 0 .24-.07.3-.2.04-.14.1-.27.22-.38l.05-.06c.1-.1.2-.15.3-.2.13-.02.25-.04.37-.04h.3c.12 0 .22-.05.28-.15.06-.1.15-.17.25-.22l.1-.04c.16-.07.34-.12.52-.14l.2-.02c.12 0 .25 0 .37.07.1.07.23.06.33-.02l.07-.04c.15-.1.32-.18.5-.2h.02c.2-.04.38-.04.58-.03h.1c.2.03.37.1.5.25l.03.04c.1.1.26.18.4.18h.17c.05 0 .1-.02.13-.07.03-.03.08-.06.13-.06h.1c.14 0 .27.04.4.08l.17.07c.16.05.33.1.5.12h.12c.08 0 .13-.05.13-.12 0-.1-.02-.2-.07-.28L20.68 7c-.08-.13-.14-.27-.2-.4l-.02-.05c-.05-.1-.05-.2 0-.3V6.2c.02-.08-.02-.17-.1-.2L20.28 6c-.16-.05-.3-.14-.4-.27l-.1-.1c-.1-.1-.16-.25-.2-.4-.05-.13-.16-.23-.3-.23h-.42c-.15-.02-.28-.1-.37-.22l-.04-.05c-.07-.1-.13-.22-.17-.34-.05-.1-.16-.16-.26-.13l-.12.04c-.2.07-.4.1-.6.08l-.16-.02c-.17 0-.33-.07-.46-.17l-.1-.07c-.08-.06-.16-.1-.25-.14-.1-.04-.18-.02-.24.05l-.05.06c-.1.1-.24.18-.38.2l-.54.03c-.1 0-.2.05-.27.12-.08.07-.17.12-.27.14h-.02c-.1 0-.2.07-.3.14v.02c-.1.1-.23.15-.36.15l-.04.02c-.12 0-.24 0-.36.03h-.12c-.17.03-.3.17-.34.35l-.04.23c-.03.16-.1.3-.2.43-.1.12-.22.2-.37.2h-.15-.02c-.1.02-.2.13-.18.25.02.17 0 .32-.03.47l-.04.17c-.04.15-.14.27-.27.32l-.06.03h-.02c-.06.04-.1.13-.05.2.06.1.08.2.07.3l-.03.32c0 .12-.05.23-.1.33-.06.1-.06.2-.02.3l.1.22c.05.1.06.2.03.32-.03.1-.05.2-.04.3 0 .1.06.2.14.24l.02.02zm7.9 7.23c.1.1.25.14.37.06l.2-.13c.1-.07.18-.17.22-.3v-.02l.1-.3.06-.1.04-.1.04-.07c.04-.08.1-.14.2-.17l.04-.02c.08-.02.13-.1.13-.18 0-.1.05-.18.1-.25l.08-.07.2-.26v-.02c.06-.08.1-.17.12-.27.02-.1 0-.2-.04-.3l-.02-.04c-.04-.1-.06-.17-.07-.26l-.03-.28-.03-.3c0-.1.04-.2.1-.3.07-.08.12-.18.16-.28v-.04l.02-.02c.02-.1-.03-.2-.12-.2-.1-.05-.2-.13-.23-.25l-.03-.06c-.05-.18-.08-.36-.08-.54l.02-.5v-.03c0-.17-.14-.3-.3-.3h-.02c-.2 0-.36-.06-.5-.2l-.08-.1-.2-.23-.26-.3c-.1-.14-.2-.26-.33-.38-.1-.1-.25-.2-.4-.22l-.2-.03c-.1-.02-.23-.07-.34-.14-.08-.06-.2-.04-.28.04l-.13.14-.06.04c-.07.02-.14-.02-.17-.1-.04-.12-.04-.26.02-.38v-.06c0-.07-.06-.12-.12-.1h-.16c-.18 0-.36-.02-.53-.1l-.1-.04c-.1-.05-.22-.08-.33-.08-.1 0-.2.02-.3.08l-.04.03c-.12.08-.26.12-.4.13h-.33c-.15 0-.3.05-.4.13-.13.08-.27.13-.42.16l-.27.04c-.12.03-.25.08-.36.17-.1.1-.24.16-.37.2l-.05.02c-.16.05-.3.15-.4.3l-.12.12c-.07.1-.07.22 0 .32.06.1.18.13.3.1l.15-.06c.08-.03.17 0 .24.04.06.05.15.08.24.07l.25-.03c.14 0 .28 0 .42.04.15.05.28.1.4.2s.25.14.4.16c.15.02.3.05.44.1l.1.02c.1.03.18.1.24.2.05.08.1.2.1.3v.03c0 .12.1.2.2.2h.06c.16 0 .33.02.5.07l.07.03c.1.04.2.1.27.2.08.1.13.2.16.3l.03.14c.03.15.04.3.04.46v.05c0 .1.07.2.18.24.1.02.22.06.33.12l.05.02c.13.08.26.18.36.3l.05.07c.13.15.2.34.2.53v.07c0 .15-.03.3-.08.44-.04.12 0 .26.13.3l.07.05c.15.06.28.17.38.3.1.15.14.32.14.5v.3c-.02.1-.05.18-.1.25s-.05.17 0 .24l.06.1zm-6.4-5.12h-.02c-.04 0-.06.05-.05.1l.04.2c.04.16.06.32.08.48.02.16.1.3.22.4h.04c.15.12.24.3.25.48v.5c-.02.1 0 .2.06.28l.05.05c.1.12.14.26.15.4l.03.55c0 .13-.08.24-.2.26l-.1.02c-.07 0-.1.08-.1.15 0 .08.03.17.06.25v.02c.03.1.04.2.03.3l-.04.27c-.04.2-.1.38-.2.56l-.07.12c-.05.1-.12.16-.2.2-.1.04-.17.12-.2.22l-.08.36c-.05.2-.14.4-.26.6h-.02c-.12.16-.27.3-.45.4l-.12.08-.3.15c-.1.04-.16.13-.18.24l-.05.33c-.03.2-.1.37-.24.5l-.13.15-.15.15L11 21c-.12.14-.3.2-.5.17l-.36-.07-.33-.04h-.09c-.04.04-.05.1-.02.16.07.12.18.2.3.2l.22.04c.1 0 .22.05.32.1.1.07.2.12.32.15h.02c.13.05.27.06.4.05l.15-.02c.17-.02.33 0 .47.06l.12.04c.05.02.13 0 .18-.05.06-.06.12-.1.2-.13l.08-.02c.13-.04.26-.06.4-.06h.08c.12 0 .23.02.33.08l.04.02c.07.03.15 0 .2-.06.03-.07.1-.14.17-.2l.25-.17.16-.1.08-.05c.1-.07.24-.1.36-.1l.36-.03c.14-.02.26-.12.3-.26.04-.15.1-.3.2-.43s.2-.24.3-.34c.13-.1.26-.15.4-.16h.08c.16-.03.28-.18.27-.34v-.02V18.77c.02-.1.06-.23.12-.33l.2-.3.08-.1c.06-.05.1-.12.17-.2l.1-.13c.06-.1.06-.23-.02-.32-.1-.1-.15-.24-.17-.38v-.04c-.02-.16-.02-.33.03-.5v-.05c.05-.13.12-.26.2-.38.08-.1.07-.24-.03-.32l-.17-.15c-.14-.12-.22-.3-.24-.48l-.02-.2c0-.06 0-.13-.02-.2l-.02-.15c-.02-.17-.12-.3-.26-.4l-.07-.02c-.1-.06-.2-.15-.28-.27-.08-.1-.12-.24-.15-.38l-.03-.17c0-.06-.04-.1-.1-.13l-.16-.05-.32-.1c-.1-.02-.2-.1-.27-.17h-.02c-.06-.08-.16-.08-.22-.02l-.1.1c-.02.03-.04.04-.07.03-.06 0-.1-.05-.08-.1.02-.16-.04-.32-.17-.42l-.13-.1-.3-.2c-.08-.03-.2 0-.24.1l-.04.06c0 .02-.03.03-.04.04-.04 0-.1 0-.1-.05l-.03-.05c-.03-.06-.1-.1-.16-.12zm-1.2 1l-.05-.05c-.05-.04-.1-.03-.15.02-.07.12-.13.25-.16.38v.02c-.03.13-.15.22-.27.2h-.1-.02c-.14 0-.25.12-.25.26 0 .18-.06.36-.17.5l-.06.06c-.1.13-.25.22-.4.27l-.08.02c-.1.03-.18.1-.2.22 0 .1-.06.2-.14.28l-.1.08c-.12.13-.3.2-.48.22l-.5.05c-.16 0-.3.1-.4.25-.1.15-.25.25-.4.27l-.22.02c-.16.02-.33.02-.5-.02l-.1-.02-.27-.07c-.1-.03-.18 0-.24.07l-.1.13c-.13.15-.32.22-.5.2l-.65-.08c-.1 0-.18-.05-.27-.1-.1-.06-.17-.13-.24-.2l-.25-.3c-.03-.02-.08-.03-.13-.02l-.14.06-.56.14c-.1.03-.23 0-.33-.06-.1-.08-.22-.1-.34-.1H3.2c-.12.03-.2.16-.16.28l.04.2c.03.1.02.22-.03.32s-.04.2.03.3l.06.08c.08.12.2.22.3.32.1.1.2.2.28.33l.15.27c.08.14.2.22.36.22.15 0 .3.05.42.15l.3.28c.08.07.2.08.28.02l.05-.02c.06 0 .1.04.1.1v.05c0 .13.1.25.23.3l.45.1c.16.05.32.1.47.2h.08c.08 0 .15-.07.14-.16v-.35c0-.1.04-.2.12-.24l.05-.02c.05.02.1.06.08.1v.17c0 .13.04.25.13.34.1.1.23.12.34.08.12-.05.24-.06.37-.05l.37.02c.18.02.35 0 .5-.07.18-.06.33-.14.47-.25l.06-.04.3-.27c.1-.1.23-.15.35-.15h.4c.2-.02.38-.2.4-.4l.04-.2c0-.13.06-.25.15-.35.1-.1.2-.16.3-.2l.12-.05c.17-.07.3-.22.36-.4l.06-.24c.05-.2.15-.4.3-.53l.02-.02c.12-.1.14-.3.06-.44l-.03-.07c-.07-.1-.08-.25-.03-.38.05-.14.1-.26.18-.38l.1-.14c.04-.08.04-.2-.02-.27-.06-.08-.1-.18-.1-.28l-.02-.14v-.34c.02-.1 0-.23-.03-.33l-.04-.12zm-1.43-.76v-.03c0-.1-.06-.16-.14-.16h-.26c-.1.02-.2.02-.28 0h-.45c-.23 0-.45-.04-.67-.1l-.24-.06-.2-.06-.45-.15c-.24-.07-.42-.23-.53-.45l-.05-.1c-.07-.15-.22-.23-.37-.2-.17 0-.34 0-.5-.08l-.12-.05c-.23-.1-.4-.3-.4-.57l-.04-.27c-.03-.14-.12-.27-.24-.32-.14-.06-.27-.14-.4-.23l-.05-.03c-.15-.12-.28-.28-.35-.47l-.02-.06c-.05-.16-.06-.33-.02-.5l.02-.06c.04-.13.05-.26.05-.4 0-.12-.05-.24-.14-.33l-.14-.13c-.16-.13-.26-.32-.27-.53-.02-.22-.02-.43.02-.64V6.3v-.03c0-.12-.1-.2-.2-.2H4.2c-.13 0-.24.08-.3.2-.05.14-.13.25-.22.36l-.04.05-.2.2-.1.1c-.1.1-.16.25-.18.4-.02.15-.06.3-.12.44l-.02.05c-.05.12-.13.23-.23.3-.1.08-.17.2-.17.32l-.02.46c0 .2-.03.4-.1.6l-.02.08c-.05.13 0 .27.12.33l.42.18.04.02c.03 0 .04.02.05.05.03.04 0 .1-.03.1l-.1.05c-.06.02-.1.08-.12.15l-.02.1v.02l-.1.56c-.02.08-.02.17-.02.26 0 .08.05.15.12.18l.22.1c.1.06.22.13.3.2l.1.08c.03.04.08.08.12.1l.04.04c.07.06.12.14.14.23l.1.45c0 .12.1.22.2.25l.16.05s.03 0 .05.02l.2.06c.16.05.3.14.42.26.12.1.24.23.34.37l.04.04c.08.1.2.15.32.12s.25-.04.38-.04h.15c.1 0 .23.03.34.1.1.06.23.1.35.15h.03c.12.05.25.03.35-.04.1-.08.23-.12.36-.12l.47.03c.1 0 .2-.02.25-.1h.02l.17-.16.05-.05c.08-.1.2-.14.32-.15h.45c.12 0 .23-.1.28-.2.05-.1.15-.18.27-.2l.2-.04c.08 0 .15-.07.18-.16.03-.1.08-.18.15-.24l.16-.16c.1-.1.15-.2.17-.32z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Codewars</title><path d="M1.072.142A1.072 1.072 0 0 0 0 1.214v21.572a1.072 1.072 0 0 0 1.072 1.072h21.856A1.072 1.072 0 0 0 24 22.786V1.214A1.072 1.072 0 0 0 22.928.142zm9.736 1.818a.904.904 0 0 1 .828.539.784.784 0 0 1 1.274.493.639.639 0 0 1 .29-.06c.33.008.59.262.625.575a1.322 1.322 0 0 1 .624-.515 1.325 1.325 0 0 1 1.718.71 1.098 1.098 0 0 1 .306-.236 1.102 1.102 0 0 1 1.483.479 1.094 1.094 0 0 1 .12.47.994.994 0 0 1 1.322 1.214.904.904 0 0 1 .874 1.438.784.784 0 0 1 .176 1.356.639.639 0 0 1 .19.224.642.642 0 0 1-.011.613 1.326 1.326 0 0 1 .482.235 1.334 1.334 0 0 1 .258 1.842 1.098 1.098 0 0 1 .35.15 1.102 1.102 0 0 1 .337 1.516 1.094 1.094 0 0 1-.344.344.994.994 0 0 1 .228 1.318 1.006 1.006 0 0 1-.605.434.904.904 0 0 1-.803 1.482.814.814 0 0 0-.008-.04.784.784 0 0 1-1.075.873.639.639 0 0 1-.098.28.625.625 0 0 1-.43.288 1.33 1.33 0 0 1 .023.456 1.334 1.334 0 0 1-1.44 1.173 1.098 1.098 0 0 1 .054.377 1.102 1.102 0 0 1-1.128 1.072 1.098 1.098 0 0 1-.47-.12.994.994 0 0 1-1.696.583.904.904 0 0 1-1.685.075.784.784 0 0 1-1.274-.493.639.639 0 0 1-.29.064.64.64 0 0 1-.621-.58l.004-.007a1.326 1.326 0 0 1-.632.523 1.334 1.334 0 0 1-1.718-.706 1.098 1.098 0 0 1-.306.232 1.102 1.102 0 0 1-1.48-.478 1.094 1.094 0 0 1-.123-.471.994.994 0 0 1-1.318-1.21.904.904 0 0 1-.874-1.442.784.784 0 0 1-.176-1.356.639.639 0 0 1-.194-.224.642.642 0 0 1 .011-.61l.019.004a1.326 1.326 0 0 1-.497-.239 1.334 1.334 0 0 1-.262-1.845 1.098 1.098 0 0 1-.35-.146 1.102 1.102 0 0 1-.337-1.52 1.094 1.094 0 0 1 .347-.34A.994.994 0 0 1 2.88 9a.904.904 0 0 1 .803-1.48.784.784 0 0 1 1.083-.836.639.639 0 0 1 .098-.28.649.649 0 0 1 .433-.288 1.33 1.33 0 0 1-.026-.452A1.334 1.334 0 0 1 6.716 4.49a1.098 1.098 0 0 1-.06-.377 1.101 1.101 0 0 1 1.13-1.073 1.094 1.094 0 0 1 .47.115.994.994 0 0 1 1.696-.579.904.904 0 0 1 .857-.617zM3.683 7.519a.784.784 0 0 0 .008.041l-.004-.04a.904.904 0 0 0-.004-.001zM17.502 19.61a1.098 1.098 0 0 0-.002-.004h-.037a1.334 1.334 0 0 0 .039.004zM13.825 3.507a1.322 1.322 0 0 0-.008.012l.008-.011zm-2.369-.014l-.003.003a.9.9 0 0 1-.665.27.896.896 0 0 1-.583-.232.994.994 0 0 1-.986.732.99.99 0 0 1-.362-.075 1.098 1.098 0 0 1-1.061 1.046 1.326 1.326 0 0 1 .123.736 1.334 1.334 0 0 1-.725 1.035 1.1 1.1 0 0 1 .307.795 1.106 1.106 0 0 1-.232.65c.321.18.53.523.523.915a1.016 1.016 0 0 1-.07.337.915.915 0 0 1 .82.937.923.923 0 0 1-.01.138.74.74 0 0 1 .157-.01c.343.007.627.25.702.57a.661.661 0 0 1 .38-.111c.31.007.561.224.632.511a.418.418 0 0 1 .381-.015 1.352 1.352 0 0 1 .303-.63.418.418 0 0 1-.12-.143.422.422 0 0 1 .004-.392.665.665 0 0 1-.325-1.117.736.736 0 0 1-.359-.336.74.74 0 0 1 .385-1.023.747.747 0 0 0-.06.026.915.915 0 0 1-.201-.262.915.915 0 0 1 .623-1.315V6.53a1.02 1.02 0 0 1 .437-1.371 1.012 1.012 0 0 1 .553-.112 1.11 1.11 0 0 1 .598-1.054 1.12 1.12 0 0 1 .06-.026.642.642 0 0 1-.109-.21.784.784 0 0 1-.455.132.784.784 0 0 1-.662-.396zm4.573 1.512a1.326 1.326 0 0 1-.587.46 1.334 1.334 0 0 1-1.255-.142v-.011a1.11 1.11 0 0 1-.553.66 1.106 1.106 0 0 1-.683.113 1.02 1.02 0 0 1-.553.889 1.016 1.016 0 0 1-.329.105.918.918 0 0 1-.43 1.169.923.923 0 0 1-.127.056.74.74 0 0 1 .086.13.738.738 0 0 1-.168.89.661.661 0 0 1 .28.283.655.655 0 0 1-.149.796.418.418 0 0 1 .153.164c.019.034.03.068.038.101a1.356 1.356 0 0 1 .672-.015.422.422 0 0 1 .056-.142.422.422 0 0 1 .34-.194.665.665 0 0 1 .796-.848.736.736 0 0 1 .112-.478.733.733 0 0 1 1.016-.224.915.915 0 0 1 .127-.306.915.915 0 0 1 1.27-.28.915.915 0 0 1 .179.153 1.02 1.02 0 0 1 1.408-.314 1.012 1.012 0 0 1 .374.422c.355-.24.833-.261 1.214-.015a1.11 1.11 0 0 1 .209.172.642.642 0 0 1 .082-.108.784.784 0 0 1-.332-.337.784.784 0 0 1 .03-.77.9.9 0 0 1-.553-.455.896.896 0 0 1-.075-.624.994.994 0 0 1-1.117-.511.994.994 0 0 1-.104-.359 1.098 1.098 0 0 1-1.427-.43zM5.249 7.37a.784.784 0 0 1-.124.46.784.784 0 0 1-.68.362c.06.235.026.49-.112.71a.896.896 0 0 1-.5.377c.31.325.373.829.12 1.225a.99.99 0 0 1-.255.269 1.098 1.098 0 0 1 .351 1.45 1.326 1.326 0 0 1 .691.276 1.334 1.334 0 0 1 .512 1.154c.28-.064.579-.019.84.15a1.106 1.106 0 0 1 .438.53 1.02 1.02 0 0 1 1.05.03 1.016 1.016 0 0 1 .257.231.914.914 0 0 1 1.225-.224.919.919 0 0 1 .112.086.74.74 0 0 1 .071-.142.74.74 0 0 1 .852-.306.661.661 0 0 1 .1-.381.664.664 0 0 1 .763-.273.418.418 0 0 1 .246-.373 1.36 1.36 0 0 1-.358-.523v-.008a.418.418 0 0 1-.25.075.422.422 0 0 1-.344-.19.665.665 0 0 1-1.132-.243.736.736 0 0 1-.47.149.733.733 0 0 1-.718-.755.915.915 0 0 1-.329.049.915.915 0 0 1-.855-1.177h-.004a1.016 1.016 0 0 1-.993-1.042 1.012 1.012 0 0 1 .168-.534 1.11 1.11 0 0 1-.64-1.035 1.11 1.11 0 0 1 .068-.358.65.65 0 0 1-.1-.019zm11.127 2.133a.913.913 0 0 1-1.225.224.926.926 0 0 1-.112-.082.74.74 0 0 1-.067.142.74.74 0 0 1-.852.302.661.661 0 0 1-.105.385.662.662 0 0 1-.762.277.418.418 0 0 1-.063.212.426.426 0 0 1-.075.086 1.356 1.356 0 0 1 .314.564.418.418 0 0 1 .187-.04.422.422 0 0 1 .343.194.665.665 0 0 1 1.136.242.736.736 0 0 1 .467-.153c.41.008.728.348.72.755a.74.74 0 0 1 0 .008v-.005a.915.915 0 0 1 .326-.052.915.915 0 0 1 .896.941.919.919 0 0 1-.037.236c.564.015 1.008.482.993 1.046a1.012 1.012 0 0 1-.168.534 1.11 1.11 0 0 1 .647 1.035 1.11 1.11 0 0 1-.075.362l.004-.007.1.018a.784.784 0 0 1 .124-.46.784.784 0 0 1 .68-.362.9.9 0 0 1 .112-.71.896.896 0 0 1 .504-.373.994.994 0 0 1-.123-1.225.99.99 0 0 1 .257-.269 1.098 1.098 0 0 1-.35-1.453 1.326 1.326 0 0 1-.696-.273h-.003a1.334 1.334 0 0 1-.512-1.158 1.082 1.082 0 0 1-.837-.145 1.106 1.106 0 0 1-.44-.535 1.02 1.02 0 0 1-1.05-.026 1.016 1.016 0 0 1-.258-.235zm-.094 3.116l-.007.066a.74.74 0 0 0 .007-.066zm-2.864-.259a1.36 1.36 0 0 1-.363.598.418.418 0 0 1 .194.187.422.422 0 0 1-.007.396.665.665 0 0 1 .329 1.113.736.736 0 0 1 .358.336.739.739 0 0 1-.32.994.915.915 0 0 1 .197.261.91.91 0 0 1-.396 1.233.919.919 0 0 1-.224.082v.004a1.02 1.02 0 0 1-.44 1.374 1.012 1.012 0 0 1-.55.109 1.11 1.11 0 0 1-.661 1.083.642.642 0 0 1 .112.21.026.026 0 0 1-.004 0v.003a.784.784 0 0 1 .456-.134.784.784 0 0 1 .661.392.9.9 0 0 1 .665-.27.896.896 0 0 1 .587.236.994.994 0 0 1 .982-.736.99.99 0 0 1 .362.079v.022a1.1 1.1 0 0 1 1.061-1.072 1.326 1.326 0 0 1-.123-.736c.056-.46.34-.837.725-1.035l.003.004a1.102 1.102 0 0 1-.31-.795 1.106 1.106 0 0 1 .232-.654 1.02 1.02 0 0 1-.452-1.251.915.915 0 0 1-.822-.934.923.923 0 0 1 .011-.142.74.74 0 0 1-.157.015.74.74 0 0 1-.698-.572.661.661 0 0 1-.385.112.667.667 0 0 1-.627-.512.418.418 0 0 1-.217.053.418.418 0 0 1-.18-.045zm-.964.93a1.36 1.36 0 0 1-.336.042c-.112 0-.22-.012-.322-.038a.418.418 0 0 1-.06.295.422.422 0 0 1-.343.195.665.665 0 0 1-.792.844.736.736 0 0 1-.112.478.74.74 0 0 1-1.02.224.915.915 0 0 1-.127.306.915.915 0 0 1-1.266.28.919.919 0 0 1-.183-.153v.004a1.02 1.02 0 0 1-1.408.31 1.012 1.012 0 0 1-.374-.418c-.355.239-.83.261-1.214.015a1.113 1.113 0 0 1-.21-.172.65.65 0 0 1-.081.105.784.784 0 0 1 .336.336.784.784 0 0 1-.034.77.89.89 0 0 1 .553.455.896.896 0 0 1 .075.624.994.994 0 0 1 1.12.515.99.99 0 0 1 .101.355 1.098 1.098 0 0 1 1.431.43 1.326 1.326 0 0 1 .587-.46c.43-.172.896-.104 1.255.142a1.106 1.106 0 0 1 .549-.65 1.106 1.106 0 0 1 .683-.108 1.02 1.02 0 0 1 .553-.893 1.02 1.02 0 0 1 .333-.104.916.916 0 0 1 .425-1.17.919.919 0 0 1 .131-.052.736.736 0 0 1-.09-.134.738.738 0 0 1 .169-.886.661.661 0 0 1-.28-.284.67.67 0 0 1 .149-.799.418.418 0 0 1-.15-.164.418.418 0 0 1-.048-.24z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/codingame.svg b/assets/lib/simple-icons/icons/codingame.svg
new file mode 100644
index 00000000..4ec557cc
--- /dev/null
+++ b/assets/lib/simple-icons/icons/codingame.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>CodinGame</title><path d="M1.025 11.893c-.1.293-.07.561.009.67.078.11.223.26.55.272.327.012.697-.167.697-.167l-.136.78c-.008.008-.4.138-.88.134-.661-.004-1.321-.317-1.261-1.252.006-.081.053-.398.128-.573a1.8 1.8 0 0 1 1.105-1.073c.67-.236 1.39-.016 1.39-.016l-.141.817s-.247-.203-.755-.154a1.055 1.055 0 0 0-.323.106.853.853 0 0 0-.383.456zm3.98.594c-.08.479-.446 1.097-1.397 1.097-.951 0-1.102-.618-1.016-1.097.217-1.134 1.394-1.077 1.394-1.077s1.195-.057 1.02 1.077zm-.887-.277c-.043-.175-.241-.169-.241-.169v.001s-.213-.017-.33.21c-.136.314-.075.514-.07.532.043.175.24.169.24.169v-.001s.214.017.33-.21c.136-.314.075-.514.07-.532zm3.827-1.747l-.534 3.07h-.868l.043-.245a.84.84 0 0 1-.66.3c-.527 0-.813-.395-.707-1.003.132-.76.65-1.2 1.138-1.2.234 0 .411.099.512.275v-.002l.208-1.195zm-1.43 1.577c-.205-.004-.36.242-.402.48-.04.238-.005.427.244.43.15 0 .326-.088.394-.43.028-.163.05-.48-.236-.48zm3.554-.556s-.259-.174-.698 0c-.189.073-.374.308-.374.308l.058-.335h-.867l-.26 1.493h.87l.1-.573.002-.019c.014-.071.078-.318.305-.318.265 0 .18.334.18.334l-.198 1.159h.866l.237-1.363c.09-.525-.22-.686-.22-.686zm-1.367-.338c.22 0 .398-.156.398-.349 0-.193-.178-.349-.398-.349-.22 0-.398.156-.398.35 0 .191.178.348.398.348zm3.723.146c.605 0 .818.158.818.158l.134-.768c-.405-.102-2.343-.479-2.782 1.463-.264 1.52 1.343 1.438 1.343 1.438s.634 0 1.176-.244l.189-1.09-.885-.003-.1.6s-.55.147-.753-.265c-.077-.152-.025-.449-.025-.449s.117-.84.885-.84zm3.21 1.032l-.21 1.209h-.788l.055-.315s-.26.366-.706.366c-.65 0-.52-.655-.52-.655s.053-.561.752-.679l.646-.071s.079-.241-.303-.241-.763.207-.763.207l.1-.577s.516-.187.995-.163c1.01.005.742.919.742.919zm-.84.258s-.158.033-.3.045c-.225.034-.253.182-.257.203-.038.22.196.19.196.19s.248.009.338-.31zm4.29-1.178c-.512 0-.766.364-.766.364s-.098-.364-.57-.364c-.471 0-.756.376-.756.376l.056-.321h-.87l-.361 2.074h.87l.209-1.201s.07-.293.303-.293c.232 0 .176.297.176.297l-.208 1.197h.872l.207-1.193s.058-.301.301-.301c.244 0 .174.309.174.309l-.21 1.184h.878l.241-1.388c0 .001.133-.74-.546-.74zm4.414-.417c0 .02.01.297-.483.382-.858.11-.96.575-.97.63-.012.055.005.163-.032.35a50.196 50.196 0 0 0-.06.394H20.62s.041.293.412.293.63-.116.63-.116l-.087.536s-.26.134-.828.134c-.09 0-1.115-.002-.926-1.091.091-.524.557-1.095 1.368-1.095.38-.002.4.133.767.133.31-.008.57-.305.57-.305s.094-.15.17-.32c.06-.082.168-.258.514-.222.29.053.29.277.29.297zm-2.47.946c-.27 0-.333.357-.333.357h.53s.074-.357-.197-.357zm2.792-1.523a.179.179 0 1 0 0 .358.179.179 0 0 0 0-.358z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/codingninjas.svg b/assets/lib/simple-icons/icons/codingninjas.svg
new file mode 100644
index 00000000..e795c95c
--- /dev/null
+++ b/assets/lib/simple-icons/icons/codingninjas.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Coding Ninjas</title><path d="M23.198 0c-.499.264-1.209.675-1.79.984a542.82 542.82 0 000 6.242c.995-.526 1.761-.834 1.79-2.066V0zM8.743.181C7.298.144 5.613.65 4.47 1.414c-1.17.8-1.987 1.869-2.572 3.179A16.787 16.787 0 00.9 8.87c-.15 1.483-.128 3.079.025 4.677.27 1.855.601 3.724 1.616 5.456 1.57 2.62 4.313 4.109 7.262 4.19 3.41.246 7.233.53 11.411.807.022-2.005.01-5.418 0-6.25-3.206-.21-7.398-.524-11.047-.782-.443-.043-.896-.056-1.324-.172-1.086-.295-1.806-.802-2.374-1.757-.643-1.107-.875-2.832-.797-4.294.11-1.27.287-2.41 1.244-3.44.669-.56 1.307-.758 2.161-.84 5.17.345 7.609.53 12.137.858.032-1.133.01-3.46 0-6.229C16.561.752 12.776.474 8.743.181zm-.281 9.7c.174.675.338 1.305.729 1.903.537.832 1.375 1.127 2.388.877.76-.196 1.581-.645 2.35-1.282zm12.974 1.04l-5.447.689c.799.739 1.552 1.368 2.548 1.703.988.319 1.78.01 2.308-.777.209-.329.56-1.148.591-1.614zm.842 6.461c-.388.01-.665.198-.87.355.002 1.798 0 4.127 0 6.223.586-.297 1.135-.644 1.793-.998-.005-1.454.002-3.137-.005-4.707a.904.904 0 00-.917-.873z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/codio.svg b/assets/lib/simple-icons/icons/codio.svg
index 76102f9d..6d86eefc 100644
--- a/assets/lib/simple-icons/icons/codio.svg
+++ b/assets/lib/simple-icons/icons/codio.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Codio icon</title><path d="M11.997 24L1.605 17.997v-12L12 0l10.396 5.997L16.5 9.402 12 6.8 7.496 9.4v5.2l4.502 2.6 4.5-2.6 5.895 3.397L12.003 24h-.006z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Codio</title><path d="M11.997 24L1.605 17.997v-12L12 0l10.396 5.997L16.5 9.402 12 6.8 7.496 9.4v5.2l4.502 2.6 4.5-2.6 5.895 3.397L12.003 24h-.006z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/coffeescript.svg b/assets/lib/simple-icons/icons/coffeescript.svg
index d02d45cf..3ed39af0 100644
--- a/assets/lib/simple-icons/icons/coffeescript.svg
+++ b/assets/lib/simple-icons/icons/coffeescript.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>CoffeeScript icon</title><path d="M4.64 7.47c2.1.53 4.78.8 8.01.8 3.3 0 5.92-.27 8.01-.8 2.23-.52 3.3-1.22 3.3-1.88 0-.47-.48-.93-1.35-1.28.2.13.35.35.35.59 0 .67-1.01 1.22-3.04 1.68-1.88.41-4.28.7-7.2.7-2.82 0-5.33-.29-7.14-.68-1.95-.48-2.97-1-2.97-1.68 0-.28.13-.52.52-.8-1.22.47-1.88.87-1.88 1.47.07.68 1.16 1.36 3.39 1.88zM9.33 5.31c2.27-.2 2.93-1.66 5.59-1.9 1.31-.1 2.14.16 2.23.62.08.43-.57.72-1.36.78-1.09.11-1.54-.28-1.63-.65-.81.09-.94.43-.9.67.09.46 1.07.92 2.75.76 1.9-.15 2.54-.9 2.38-1.65-.2-.98-1.66-1.8-4.28-1.55-3.36.3-3.34 1.86-5.63 2.05-.94.09-1.46-.13-1.55-.5-.06-.37.4-.55.94-.59.5-.05 1.11.04 1.4.2.21-.11.28-.22.26-.35-.1-.35-.79-.5-1.66-.44-1.7.15-1.7.91-1.64 1.25.17.87 1.48 1.45 3.1 1.3zM20.75 9.15c-2.1.49-4.78.81-8.01.81-3.3 0-5.99-.34-8.08-.8-1.88-.48-2.88-1.01-3.23-1.56.18 1.23.49 2.42.89 3.55-.48.3-.91.67-1.3 1.17A4.52 4.52 0 0 0 0 15.42a3.6 3.6 0 0 0 1.42 2.62c.87.68 1.81.88 2.88.68.41-.07.87-.28 1.29-.42-.88 0-1.62-.28-2.36-.87a3.55 3.55 0 0 1-1.49-2.42c-.2-.94 0-1.81.53-2.58.12-.15.25-.28.39-.4.3.73.62 1.45.98 2.12.81 1.23 1.62 2.3 2.43 3.46.35.68.58 1.35.74 2.02a3.9 3.9 0 0 0 2.23 1.5c1.15.4 2.35.58 3.58.51h.13a10.2 10.2 0 0 0 3.69-.52 4.18 4.18 0 0 0 2.16-1.49h.07c.13-.67.35-1.34.67-2.02.8-1.17 1.62-2.23 2.42-3.46A21 21 0 0 0 24 7.61c-.43.6-1.44 1.13-3.25 1.54z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>CoffeeScript</title><path d="M4.645 7.472c2.1.53 4.779.8 8.008.8 3.299 0 5.918-.27 8.008-.8 2.23-.52 3.299-1.22 3.299-1.88 0-.47-.48-.93-1.35-1.28.2.13.35.35.35.59 0 .67-1.01 1.22-3.039 1.68-1.88.41-4.279.7-7.198.7-2.82 0-5.329-.29-7.138-.68-1.95-.48-2.97-1-2.97-1.68 0-.28.13-.52.52-.8-1.22.47-1.88.87-1.88 1.47.07.68 1.16 1.36 3.39 1.88zm4.689-2.16c2.27-.2 2.929-1.659 5.588-1.899 1.31-.1 2.14.16 2.23.62.08.43-.57.72-1.36.78-1.09.11-1.54-.28-1.63-.65-.81.09-.94.43-.9.67.09.46 1.07.92 2.75.76 1.9-.15 2.54-.9 2.38-1.65-.2-.98-1.66-1.8-4.28-1.55-3.359.3-3.339 1.86-5.628 2.05-.94.09-1.46-.13-1.55-.5-.06-.37.4-.55.94-.59.5-.05 1.11.04 1.4.2.21-.11.28-.22.26-.35-.1-.35-.79-.5-1.66-.44-1.7.15-1.7.91-1.64 1.25.17.87 1.48 1.45 3.1 1.3zm11.417 3.84c-2.1.49-4.779.809-8.008.809-3.3 0-5.989-.34-8.078-.8-1.88-.48-2.88-1.01-3.23-1.56.18 1.23.49 2.42.89 3.55-.48.3-.91.67-1.3 1.17a4.519 4.519 0 00-1.019 3.098 3.6 3.599 0 001.42 2.62c.87.68 1.81.88 2.879.68.41-.07.87-.28 1.29-.42-.88 0-1.62-.28-2.36-.87a3.55 3.549 0 01-1.49-2.42c-.2-.94 0-1.81.53-2.579.12-.15.25-.28.39-.4.3.73.62 1.45.98 2.12.81 1.23 1.62 2.299 2.43 3.459.35.68.58 1.35.74 2.019a3.899 3.899 0 002.229 1.5c1.15.4 2.35.58 3.579.51h.13a10.197 10.197 0 003.689-.52 4.179 4.179 0 002.16-1.49h.07c.13-.67.35-1.34.67-2.02.799-1.17 1.619-2.229 2.419-3.458A20.995 20.993 0 0024 7.612c-.43.6-1.44 1.13-3.25 1.54z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/cognizant.svg b/assets/lib/simple-icons/icons/cognizant.svg
new file mode 100644
index 00000000..466e5689
--- /dev/null
+++ b/assets/lib/simple-icons/icons/cognizant.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Cognizant</title><path d="M1.955 9.425C.842 9.425 0 10.265 0 11.38c0 1.132.821 1.953 1.953 1.953.73 0 1.374-.405 1.725-1.084l.01-.02-.695-.368-.009.023c-.206.437-.588.686-1.046.686-.663 0-1.18-.523-1.18-1.192 0-.686.515-1.202 1.197-1.202.442 0 .778.208 1 .617l.01.022.668-.427-.012-.019a1.906 1.906 0 0 0-1.666-.944zm20.78.189v.903h-.467v.673h.465v.876c0 .892.285 1.188 1.155 1.188h.108v-.701c-.459 0-.515-.066-.515-.493v-.87H24v-.673h-.515v-.903zm-9.858.002v.68h.75v-.68zm-4.727.845c-.619 0-1.33.456-1.33 1.425 0 .963.738 1.422 1.315 1.424.356 0 .647-.148.827-.362v.257c0 .356-.257.673-.662.673a.802.802 0 0 1-.761-.465l-.662.373c.22.428.73.79 1.425.79.926 0 1.413-.625 1.413-1.397v-2.662h-.75v.295a1.07 1.07 0 0 0-.815-.35zm9.599 0c-.619 0-1.331.456-1.331 1.425 0 .963.739 1.422 1.32 1.424.356 0 .646-.148.826-.362v.308h.75v-2.739h-.75v.266c-.18-.19-.459-.322-.815-.322zm-6.234.002a.941.941 0 0 0-.756.362v-.308h-.744v2.739h.75V11.76c0-.46.236-.656.52-.656.334 0 .505.214.505.581v1.57h.76v-1.67c0-.706-.389-1.122-1.035-1.122zm9.602 0a.941.941 0 0 0-.755.362v-.308h-.744l-.002 2.739h.75V11.76c0-.46.236-.656.52-.656.336 0 .505.214.505.581v1.57h.76v-1.67c0-.706-.387-1.122-1.034-1.122zm-15.9.01a1.42 1.42 0 0 0-1.423 1.413l-.002.01a1.42 1.42 0 1 0 1.425-1.423zm8.704.044v.662h1.42l-1.44 1.408v.669h2.474v-.664h-1.468l1.44-1.402v-.673zm-1.055.008v2.738h.75v-2.738zm-4.58.622c.406 0 .702.328.702.733 0 .405-.296.739-.701.739a.72.72 0 0 1-.733-.739c0-.422.317-.733.733-.733zm9.598 0c.405 0 .7.328.7.733.003.405-.293.739-.7.739a.72.72 0 0 1-.733-.739c0-.422.319-.735.733-.733zm-12.671.026c.382 0 .69.325.69.713a.704.704 0 0 1-.69.712c-.388 0-.684-.322-.684-.712 0-.39.296-.713.684-.713z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/coil.svg b/assets/lib/simple-icons/icons/coil.svg
new file mode 100644
index 00000000..37cc81b7
--- /dev/null
+++ b/assets/lib/simple-icons/icons/coil.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Coil</title><path d="M12 0A12 12 0 000 12a12 12 0 0012 12 12 12 0 0012-12A12 12 0 0012 0zm.465 5.814a4.56 4.56 0 012.756.83c1.215.886 1.465 1.856 1.465 2.5a1.845 1.845 0 01-.086.6 2.77 2.77 0 01-2.305 1.906 5.675 5.675 0 01-.654.055c-1 0-1.33-.41-1.33-.87 0-.624.6-1.364 1.035-1.364a.28.28 0 01.154.045.76.76 0 00.375.093.265.265 0 00.11 0 .55.55 0 00.515-.558c0-.55-.625-1.25-2-1.25a5.285 5.285 0 00-1.55.244A4.12 4.12 0 008.685 9.8 4 4 0 008 12.05 3.945 3.945 0 008.5 14a4.235 4.235 0 003.69 2.06h.24c2-.11 2.46-1.09 2.906-1.28a1.53 1.53 0 01.299-.065c.325 0 .745.164 1.035.86a.73.73 0 01.07.3c0 1.145-2.67 2.18-4.22 2.26h-.35A6.38 6.38 0 016.62 15a5.9 5.9 0 01-.77-2.94 6.085 6.085 0 011.035-3.39 6.195 6.195 0 013.385-2.5 7.295 7.295 0 012.195-.356z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/coinbase.svg b/assets/lib/simple-icons/icons/coinbase.svg
index 5047c436..c3ed947a 100644
--- a/assets/lib/simple-icons/icons/coinbase.svg
+++ b/assets/lib/simple-icons/icons/coinbase.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Coinbase icon</title><path d="M2.391 13.861c.089.195.204.37.341.524a1.975 1.975 0 0 1-.963.235C.744 14.62 0 13.944 0 12.866c0-1.086.782-1.762 1.769-1.762.351 0 .628.076.908.225-.131.16-.238.342-.32.541a1.388 1.388 0 0 0-.52-.098c-.607 0-1.078.388-1.078 1.094 0 .668.456 1.094 1.109 1.094.187 0 .36-.034.523-.099zm2.062-2.757c1.01 0 1.739.714 1.739 1.762 0 1.04-.729 1.754-1.739 1.754-1.002 0-1.731-.714-1.731-1.754 0-1.048.729-1.762 1.731-1.762zm0 .645c-.562 0-.972.433-.972 1.117 0 .676.41 1.109.972 1.109.577 0 .98-.433.98-1.109 0-.684-.403-1.117-.98-1.117zm2.217 2.795V11.18h.751v3.364H6.67zm-.099-4.397a.472.472 0 0 1 .942 0 .48.48 0 0 1-.471.478.48.48 0 0 1-.471-.478zm1.506 1.246a4.49 4.49 0 0 1 1.541-.289c.858 0 1.405.326 1.405 1.276v2.164h-.744v-2.096c0-.486-.304-.661-.721-.661a2.59 2.59 0 0 0-.729.099v2.658h-.752v-3.151zm3.575-2.013h.752v1.891c.159-.084.471-.167.766-.167.972 0 1.701.623 1.701 1.701 0 1.086-.721 1.815-1.966 1.815-.486 0-.911-.098-1.253-.22V9.38zm.752 4.527c.144.045.334.068.524.068.69 0 1.184-.38 1.184-1.155 0-.653-.463-1.04-1.032-1.04a1.41 1.41 0 0 0-.676.159v1.968zm4.638-1.618c0-.365-.273-.532-.645-.532a1.9 1.9 0 0 0-.972.273v-.653a2.241 2.241 0 0 1 1.093-.273c.737 0 1.26.304 1.26 1.147v2.225a5.026 5.026 0 0 1-1.153.137c-.873 0-1.511-.266-1.511-1.026 0-.683.584-1.017 1.556-1.017h.372v-.281zm0 .782h-.319c-.524 0-.865.152-.865.494 0 .349.319.486.774.486.114 0 .274-.016.41-.038v-.942zm1.283.562c.311.235.683.38 1.025.38.334 0 .554-.114.554-.38 0-.274-.197-.372-.63-.486-.698-.16-.995-.441-.995-1.025 0-.684.517-1.018 1.2-1.018.38 0 .683.083.964.258v.691c-.296-.212-.584-.342-.941-.342-.327 0-.501.16-.501.38s.144.334.531.441c.767.167 1.101.455 1.101 1.063 0 .706-.539 1.025-1.268 1.025-.395 0-.789-.106-1.04-.273v-.714zm3.337-.6v.015c.045.6.562.927 1.085.927.463 0 .798-.107 1.131-.327v.661c-.303.213-.751.311-1.184.311-1.047 0-1.761-.668-1.761-1.731 0-1.071.698-1.785 1.625-1.785.979 0 1.442.63 1.442 1.549v.38h-2.338zm1.632-.486c-.015-.524-.273-.813-.759-.813-.433 0-.752.304-.85.813h1.609z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Coinbase</title><path d="M4.844 11.053c-.872 0-1.553.662-1.553 1.548s.664 1.542 1.553 1.542c.889 0 1.564-.667 1.564-1.547 0-.875-.664-1.543-1.564-1.543zm.006 2.452c-.497 0-.86-.386-.86-.904 0-.523.357-.909.854-.909.502 0 .866.392.866.91 0 .517-.364.903-.86.903zm1.749-1.778h.433v2.36h.693V11.11H6.599zm-5.052-.035c.364 0 .653.224.762.558h.734c-.133-.713-.722-1.197-1.49-1.197-.872 0-1.553.662-1.553 1.548 0 .887.664 1.543 1.553 1.543.75 0 1.351-.484 1.484-1.203h-.728a.78.78 0 01-.756.564c-.502 0-.855-.386-.855-.904 0-.523.347-.909.85-.909zm18.215.622l-.508-.075c-.242-.035-.415-.115-.415-.305 0-.207.225-.31.53-.31.336 0 .55.143.595.379h.67c-.075-.599-.537-.95-1.247-.95-.733 0-1.218.375-1.218.904 0 .506.317.8.958.892l.508.075c.249.034.387.132.387.316 0 .236-.242.334-.577.334-.41 0-.641-.167-.676-.42h-.681c.064.581.52.99 1.35.99.757 0 1.26-.346 1.26-.938 0-.53-.364-.806-.936-.892zM7.378 9.885a.429.429 0 00-.444.437c0 .254.19.438.444.438a.429.429 0 00.445-.438.429.429 0 00-.445-.437zm10.167 2.245c0-.645-.392-1.076-1.224-1.076-.785 0-1.224.397-1.31 1.007h.687c.035-.236.22-.432.612-.432.352 0 .525.155.525.345 0 .248-.317.311-.71.351-.531.058-1.19.242-1.19.933 0 .535.4.88 1.034.88.497 0 .809-.207.965-.535.023.293.242.483.548.483h.404v-.616h-.34v-1.34zm-.68.748c0 .397-.347.69-.769.69-.26 0-.48-.11-.48-.34 0-.293.353-.373.676-.408.312-.028.485-.097.572-.23zm-3.679-1.825c-.386 0-.71.162-.94.432V9.856h-.693v4.23h.68v-.391c.232.282.56.449.953.449.832 0 1.461-.656 1.461-1.543 0-.886-.64-1.548-1.46-1.548zm-.103 2.452c-.497 0-.86-.386-.86-.904 0-.517.369-.909.865-.909.503 0 .855.386.855.91 0 .517-.364.903-.86.903zm-3.187-2.452c-.45 0-.745.184-.919.443v-.385H8.29v2.975h.693v-1.617c0-.455.289-.777.716-.777.398 0 .647.282.647.69v1.704h.692v-1.755c0-.748-.386-1.278-1.142-1.278zM24 12.503c0-.851-.624-1.45-1.46-1.45-.89 0-1.542.668-1.542 1.548 0 .927.698 1.543 1.553 1.543.722 0 1.287-.426 1.432-1.03h-.722c-.104.264-.358.414-.699.414-.445 0-.78-.276-.854-.76H24v-.264zm-2.252-.23c.11-.414.422-.615.78-.615.392 0 .693.224.762.615Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/coinmarketcap.svg b/assets/lib/simple-icons/icons/coinmarketcap.svg
new file mode 100644
index 00000000..7dd4943b
--- /dev/null
+++ b/assets/lib/simple-icons/icons/coinmarketcap.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>CoinMarketCap</title><path d="M20.738 14.341c-.419.265-.912.298-1.286.087-.476-.27-.738-.898-.738-1.774v-2.618c0-1.264-.5-2.164-1.336-2.407-1.416-.413-2.482 1.32-2.882 1.972l-2.498 4.05v-4.95c-.028-1.14-.398-1.821-1.1-2.027-.466-.135-1.161-.081-1.837.953l-5.597 8.987A9.875 9.875 0 0 1 2.326 12c0-5.414 4.339-9.818 9.672-9.818 5.332 0 9.67 4.404 9.67 9.818.004.018.002.034.003.053.05 1.049-.29 1.883-.933 2.29zm3.08-2.34-.001-.055C23.787 5.353 18.497 0 11.997 0 5.48 0 .177 5.383.177 12c0 6.616 5.303 12 11.82 12 2.991 0 5.846-1.137 8.037-3.2.435-.41.46-1.1.057-1.541a1.064 1.064 0 0 0-1.519-.059 9.56 9.56 0 0 1-6.574 2.618c-2.856 0-5.425-1.263-7.197-3.268l5.048-8.105v3.737c0 1.794.696 2.374 1.28 2.544.584.17 1.476.054 2.413-1.468.998-1.614 2.025-3.297 3.023-4.88v2.276c0 1.678.672 3.02 1.843 3.68 1.056.597 2.384.543 3.465-.14 1.312-.828 2.018-2.354 1.944-4.193z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/commerzbank.svg b/assets/lib/simple-icons/icons/commerzbank.svg
new file mode 100644
index 00000000..e4737753
--- /dev/null
+++ b/assets/lib/simple-icons/icons/commerzbank.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Commerzbank</title><path d="M6.277 1.538a.018.018 0 0 0-.012.007l-4.74 8.21-1.398 2.418c.446.774.794 1.353 1.22 2.09.671 1.164 1.548 1.597 3.13 1.889a12.9 12.9 0 0 1 .697-1.392l2.783-4.824 2.786-4.826c.404-.702 1.296-2.143 2.57-2.965-.04.025-.07.059-.109.085.07-.047.137-.094.209-.136.46-.278.98-.467 1.413-.515.339-.038 1.465-.041 2.74-.041zm11.59.505c-1.048-.008-1.462.007-2.545.008-1.39 0-2.381.887-3.083 1.773.372.493.68.971.863 1.288a13357.605 13357.605 0 0 0 5.571 9.648c.404.7 1.209 2.196 1.284 3.71.029.574-.079 1.165-.265 1.592-.131.3-.652 1.207-1.256 2.253L24 12.678v-.008a.013.013 0 0 0-.002-.005zM.001 8.163l.095 4.946L0 8.163zm.093 4.946 1.132 1.964 4.264 7.384a.015.015 0 0 0 .012.005h12.265c.446-.779.664-1.147 1.311-2.282.709-1.242.278-2.681-.037-3.472-.618.076-1.18.093-1.547.093H6.35c-.809 0-2.505-.05-3.853-.741-.513-.263-.972-.65-1.248-1.027-.176-.238-.625-1.003-1.156-1.924z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/commonworkflowlanguage.svg b/assets/lib/simple-icons/icons/commonworkflowlanguage.svg
index b806b3e5..3a672c1c 100644
--- a/assets/lib/simple-icons/icons/commonworkflowlanguage.svg
+++ b/assets/lib/simple-icons/icons/commonworkflowlanguage.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Common Workflow Language icon</title><path d="M12.063 9.205l-3.565 3.568 3.518 3.512 1.545-1.545-1.975-1.967 2.023-2.023-1.546-1.545zM13.606 22.423L11.6 20.375l3.786-3.815-1.559-1.573-5.33 5.403.115.114-.015.008 3.456 3.484zm1.896-13.565l-3.685-3.541 3.685-3.722L13.936 0 8.598 5.352l.108.101v.007l5.252 4.943z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Common Workflow Language</title><path d="M13.905 0L8.571 5.4l.037.037.096.096 3.586 3.395-2.24 2.252h-.01l-1.576 1.586 3.737 3.766-3.735 3.803.126.139v.012L12.052 24l1.608-1.64-1.98-2.034 3.737-3.79-1.608-1.642-.01.012-2.13-2.129 3.867-3.866-.017-.015.016-.016-3.641-3.524 3.64-3.694z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/composer.svg b/assets/lib/simple-icons/icons/composer.svg
index b11849e8..37d98a70 100644
--- a/assets/lib/simple-icons/icons/composer.svg
+++ b/assets/lib/simple-icons/icons/composer.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Composer icon</title><path d="M16.661 0c-.07 0-.115.034-.165.095a.416.416 0 0 0-.07.43c.19.41.363.83.528 1.25.01.02.022.04.039.068-.039-.002-.05-.022-.063-.043-.297-.31-.648-.557-.998-.804-.473-.337-.99-.603-1.503-.872a.578.578 0 0 0-.214-.065l-.384-.04c-.202-.025-.355.09-.355.292 0 .108-.046.132-.135.14-.079.004-.187.115-.196.192a.694.694 0 0 0 .228.619c.444.415.873.845 1.303 1.275l.015.007a.1.1 0 0 1 .028.038c-.007.003-.014.003-.019.003a.057.057 0 0 1-.036-.022c-.002-.002-.005-.005-.005-.007-.062-.036-.127-.07-.187-.11-.3-.2-.595-.404-.895-.598a.943.943 0 0 0-.461-.17.453.453 0 0 0-.392.143.28.28 0 0 0-.088.253c.016.146.115.237.223.312.502.338.95.734 1.366 1.174.036.038.074.079.115.112.118.096.19.224.262.356.033.06.021.074-.043.074-.428 0-.836.118-1.246.204-.168.036-.334.094-.394.28-.065.21-.096.328.16.392a9.57 9.57 0 0 1 1.49.516.55.55 0 0 1 .117.077c.12.104.23.219.362.303.38.247.77.478 1.22.583.053.012.1.039.151.05.05.015.084.044.094.094.029.178.139.279.305.33.021.006.038.02.06.028.052.017.076.055.093.108.067.24.137.478.212.715.026.08.002.101-.07.123-.372.108-.742.22-1.112.334-.132.04-.134.043-.067.163l.908 1.635c.127.23.132.23.365.11.024-.012.057-.053.079-.014.021.036.06.089.024.13-.113.129-.19.28-.286.42-.031.045-.031.074-.005.117.101.166.202.334.3.502.012.019.034.043.03.058l-.123.367a2.538 2.538 0 0 0-.317-.716c-.18-.288-.41-.542-.62-.811-.033-.04-.072-.077-.11-.115-.2-.207-.456-.332-.699-.478a1.026 1.026 0 0 0-.34-.127c-.375-.08-.747-.11-1.12.004-.076.024-.117.005-.162-.06-.092-.127-.166-.273-.289-.372-.3-.24-.617-.458-.986-.583a2.95 2.95 0 0 0-.865-.168 4.267 4.267 0 0 0-.463.017c-.396.03-.79.074-1.14.293-.07.043-.15.067-.221.108-.36.194-.716.386-1.016.679a13.1 13.1 0 0 0-.897.944c-.322.384-.565.818-.783 1.267-.015.031-.022.07-.07.096l-.12-.744c-.007-.046.022-.043.053-.038.089.01.175.014.264.026.067.01.103-.005.12-.08.022-.102.046-.206.067-.311.082-.397.2-.78.303-1.17.02-.074.007-.1-.07-.12-.381-.09-.763-.192-1.145-.283-.072-.017-.106-.043-.084-.12.087-.298.125-.61.242-.9a.178.178 0 0 1 .056-.087c.098-.076.17-.165.16-.302-.007-.103.041-.168.14-.214.182-.086.358-.187.53-.288a.84.84 0 0 0 .327-.333c.322-.605.59-1.242.98-1.81.033-.051.06-.106.1-.15.252-.264.488-.544.771-.78.089-.074.113-.175.115-.285 0-.128-.074-.217-.151-.305-.075-.087-.151-.161-.279-.147-.028.003-.057-.01-.088-.014.019-.039.05-.048.076-.065.339-.218.677-.437 1.016-.658.41-.264.819-.53 1.232-.794.052-.034.076-.06.019-.11-.015-.013-.024-.03-.036-.044-.084-.099-.084-.099-.2-.029L8.084 3.692c-.101.062-.101.062-.152-.05-.112-.263-.177-.539-.261-.81-.02-.062-.003-.098.045-.137.289-.23.553-.49.82-.742a.604.604 0 0 0 .186-.37c.022-.17-.09-.259-.244-.196a1.707 1.707 0 0 0-.221.105c-.68.375-1.405.632-2.149.848-.043.012-.082.026-.118-.02-.074-.09-.185-.14-.278-.208a.073.073 0 0 0-.063-.015c-.1.027-.204.056-.266.147-.159.233-.358.44-.507.682-.17.28-.333.562-.525.828-.036.05-.05.058-.084-.002L3.63 2.635a2.837 2.837 0 0 0-.223-.338c-.094-.118-.209-.176-.358-.159-.026.003-.06-.005-.07.036-.02.11-.071.226-.057.332.034.27.082.542.15.806.114.459.244.912.38 1.364.133.444.282.88.426 1.323.012.038.033.072-.02.103-.067.038-.175.058-.187.125-.012.07.05.15.08.225l.007.017c.024.058.036.144.079.166.058.029.11-.05.163-.082.048-.029.065-.021.087.029.124.293.252.583.379.876a.18.18 0 0 1 .007.137 4.138 4.138 0 0 0-.192.72c-.012.07-.038.07-.091.055a107.64 107.64 0 0 0-.833-.21c-.123-.032-.123-.032-.137.093v.01c-.06.665-.12 1.33-.183 1.994-.004.06.003.085.068.092.194.024.386.055.578.084.036.005.067.007.058.06-.043.225-.077.453-.125.677a.178.178 0 0 0 .034.163c.067.087.132.175.199.264.046.063.08.144.038.209a.201.201 0 0 0-.033.118c.007.415.007.83.026 1.246.01.201.007.403.012.605.01.535.04 1.068.06 1.603.01.262-.036.521-.024.783.002.065.017.1.084.122.159.05.312.116.473.166a.28.28 0 0 1 .185.156.436.436 0 0 1 .038.219c-.002.072.024.115.082.156.247.177.492.36.74.542.65.48 1.3.963 1.954 1.44.06.046.074.082.038.147-.034.062-.055.135-.089.197-.029.058-.024.094.031.134.082.058.161.123.236.188.065.055.067.141.048.208-.015.049-.087.005-.132 0-.032-.002-.063-.01-.094-.014-.31-.05-.617-.13-.932-.156-.501-.04-1.003-.084-1.51-.07-.026 0-.067-.024-.074.03-.007.042-.017.088.031.117.024.014.05.026.077.036.283.098.547.24.807.389.168.096.333.204.518.269.034.012.068.038.108.002-.278-.22-.554-.442-.833-.665.039-.029.07-.017.099-.014.333.026.665.072.989.149.713.17 1.421.362 2.122.573.23.07.475.104.682.243.05.033.08.067.074.13.012.014.027.033.01.045-.02.012-.036-.012-.05-.024-.164-.014-.327-.026-.488-.043-.463-.046-.924-.11-1.392-.096-.35.01-.701-.015-1.05.01-.494.033-.989.098-1.48.15-.025.003-.063-.002-.063.027 0 .036.014.077.06.087a.58.58 0 0 0 .113.012c.25.01.497.007.746.011.62.015 1.242-.012 1.86.041.224.02.45.01.668.05 1.03.193 2.055.394 3.078.618.12.026.243.045.36.103-.055.05-.127.065-.158.137-.219.506-.363 1.04-.53 1.563-.03.089.03.192.12.216a.278.278 0 0 0 .352-.221c.02-.108.039-.216.053-.327.005-.036.017-.055.053-.067.132-.053.261-.108.393-.16a1.63 1.63 0 0 0 .529-.325c.134-.127.247-.274.25-.47 0-.06.014-.099.062-.135.22-.17.418-.365.61-.564a6.03 6.03 0 0 1 .6-.533c.024-.02.043-.048.081-.034l.56.221c-.375.228-.73.447-1.083.66-.017.01-.036.015-.053.02a.813.813 0 0 0-.338.201c-.375.372-.567.814-.545 1.35.014.36.22.53.571.449.615-.144 1.14-.733 1.232-1.379.024-.18.052-.357-.077-.513a2.251 2.251 0 0 0-.178-.195c.02-.012.029-.019.039-.026.777-.463 1.625-.778 2.475-1.07 1.04-.359 2.1-.644 3.164-.918l-.075-.017c-.07.007-.136.015-.206.02a5.097 5.097 0 0 0-.872.134l-.016.007a.226.226 0 0 1-.094.015c-.014 0-.029 0-.048.002.065-.062.252-.264.303-.25l.002-.005h.005c0-.007.019-.021.019-.021.017-.029.04-.048.074-.05a.694.694 0 0 1 .197-.188c.05-.031.103-.062.161-.086h-.002c.16 0 .319-.194.486-.262-.001-.006-.01-.01-.013-.017-.24.034-.476.072-.706.159-.492.182-1.001.324-1.481.535-.742.324-1.482.648-2.195 1.035a.818.818 0 0 1-.077.036l-.055-.504c-.005-.034.012-.048.041-.063.631-.334 1.265-.665 1.925-.938.543-.226 1.08-.471 1.626-.692.002-.005.005-.01.01-.01h.004c.003 0 .003.003.005.003.007.012.002.02-.005.026-.002.003-.005.003-.01.005h-.002a3.358 3.358 0 0 0-.372.66c.038.01.053-.002.067-.017.113-.12.226-.237.336-.357.214-.235.44-.459.704-.641.017-.012.045-.022.033-.048-.014-.03-.045-.015-.067-.01-.247.05-.494.096-.74.154-.081.019-.076-.01-.079-.067-.002-.197.027-.39.034-.586a.63.63 0 0 1 .058-.247c.098-.226.197-.45.297-.675.05-.113.08-.233.099-.353.031-.192.055-.386.074-.58.031-.299.137-.58.187-.875.065-.374.118-.751.257-1.109.125-.317.245-.634.372-.948.176-.428.399-.833.505-1.29.036-.158.076-.302.004-.458-.04-.084-.052-.18-.081-.271a.392.392 0 0 1-.012-.204c.048-.245.07-.488-.063-.716-.036-.062.008-.1.044-.139.088-.091.093-.132.016-.23-.088-.11-.175-.224-.27-.327-.08-.084-.154-.175-.234-.262-.055-.033-.05-.055.012-.076.14-.048.276-.108.418-.152.08-.024.1-.07.106-.141.045-.605.09-1.213.139-1.818.007-.084-.007-.1-.094-.074-.454.144-.907.28-1.363.422-.14.044-.142.044-.204-.093-.231-.519-.411-1.057-.6-1.59a.392.392 0 0 1 .007-.316c.067-.188.024-.377.019-.567a.104.104 0 0 1-.005-.029 9.16 9.16 0 0 0-.254-1.548 6.02 6.02 0 0 0-.5-1.27c-.228-.432-.473-.86-.737-1.275-.113-.178-.233-.339-.434-.427A.702.702 0 0 0 16.66 0zm-2.643.26a.364.364 0 0 1 .2.051 19.042 19.042 0 0 1 1.469.805c.247.158.482.338.715.52.11.087.192.217.284.33.038.047.012.09-.024.124-.024.024-.058.039-.087.055-.031.022-.072.041-.06.087.01.04.055.05.091.058a.27.27 0 0 0 .159-.015c.168-.07.31.048.418.166.028.03.04.093.093.074.055-.021.063-.081.058-.137-.012-.15-.05-.297-.084-.444-.09-.377-.27-.718-.418-1.073-.053-.127-.11-.254-.163-.382-.029-.07.01-.132.048-.182.031-.04.081-.005.122.014.152.068.238.19.312.332.08.15.178.29.262.436.144.255.322.495.437.762.168.388.382.758.483 1.176.086.37.208.732.252 1.114.016.144-.01.283.007.422.033.279-.008.543-.123.798-.03.07-.021.136.012.208.252.533.461 1.083.67 1.635.027.072.015.101-.06.123-.482.141-.965.288-1.447.434-.07.022-.092.003-.113-.06-.123-.326-.24-.646-.353-.967-.024-.068-.053-.104-.128-.087-.088.022-.136-.017-.175-.096-.062-.127-.113-.28-.216-.36-.103-.08-.266-.082-.403-.115-.103-.027-.207-.058-.312-.075a1.428 1.428 0 0 1-.612-.273c-.303-.224-.615-.43-.934-.627-.104-.007-.202-.036-.303-.06-.278-.057-.554-.117-.833-.17-.067-.012-.08-.063-.084-.108-.007-.056.007-.11.065-.144.089-.053.19-.063.29-.08a9.69 9.69 0 0 1 1.345-.13c.11-.002.209.04.312.066a.18.18 0 0 0 .166-.03c.216-.143.434-.28.65-.422.034-.021.096-.036.07-.093a.083.083 0 0 0-.015-.022c-.012-.01-.026-.012-.043-.012l-.05.002h-.007a1.159 1.159 0 0 0-.668.2c-.079.05-.259.019-.31-.056-.34-.516-.823-.888-1.282-1.289-.204-.177-.403-.362-.619-.526-.055-.04-.08-.144-.043-.196.048-.072.11-.041.168-.015.185.082.362.175.528.293.564.403 1.17.744 1.772 1.085a.51.51 0 0 0 .05.027c.092.03.14-.01.125-.106a.267.267 0 0 0-.062-.134c-.488-.574-1.001-1.124-1.506-1.683-.105-.116-.23-.216-.348-.32a.854.854 0 0 1-.22-.278.16.16 0 0 1 .023-.19c.041-.045.077-.055.137-.024.17.082.332.178.483.293.266.202.535.403.804.605l.807.603c.021.017.043.033.062.05.05.046.094.094.142.142l.029.029c.019.019.036.045.06.06.055.033.112.062.17.004.02-.019.029-.036.031-.055 0-.007.003-.014 0-.021 0-.003 0-.008-.002-.01a.171.171 0 0 0-.043-.072l-.18-.187a4.537 4.537 0 0 0-.312-.298c-.349-.29-.706-.571-1.066-.845-.183-.14-.397-.233-.596-.348-.072-.041-.12-.101-.173-.159a.144.144 0 0 1-.024-.15c.022-.054.075-.051.12-.056zM8.252 1.649a.045.045 0 0 1 .029.005c.048.027.03.077.03.135.013.06-.026.11-.08.16-.346.322-.707.627-1.076.922-.147.118-.327.173-.49.262-.034.017-.053 0-.072-.024-.12-.154-.238-.31-.358-.463-.045-.055.017-.053.046-.065.254-.091.504-.195.756-.295.365-.144.696-.35 1.04-.533.036-.02.07-.043.105-.063.024-.01.044-.037.07-.041zm-2.619.83a.223.223 0 0 1 .134.064c.072.067.13.144.18.228.173.28.413.506.646.737.163.163.329.321.502.47.057.05.067.127.098.192.012.024.002.043-.02.055-.011.008-.023.013-.03.02-.142.12-.276.103-.442.019a3.182 3.182 0 0 1-.864-.646c-.01-.01-.02-.017-.03-.024-.114-.086-.12-.082-.17.05-.052.135-.086.274-.146.404-.022.045.012.094.046.127.038.039.064.099.134.089.031-.005.048-.022.055-.055.017-.08.039-.159.06-.257.262.22.553.391.84.583l-.278.159c-.713.4-1.428.801-2.139 1.205-.058.031-.082.038-.106-.034-.273-.847-.561-1.69-.79-2.552-.052-.2-.074-.408-.112-.612-.012-.06.028-.091.067-.113.053-.026.055.036.074.06.377.521.634 1.11.941 1.669.092.168.195.331.293.497.02.03.034.057.082.04.053-.019.043-.052.034-.09-.039-.174-.128-.33-.193-.493a.18.18 0 0 1 .003-.16c.137-.284.329-.531.48-.803.14-.247.317-.468.451-.717a.205.205 0 0 1 .2-.111zm1.774.492c.014.003.024.016.036.042.12.27.201.555.302.83.01.027.012.049-.017.066l-.256.158c-.008.005-.017.007-.046.02-.007-.013-.017-.034-.031-.051l-.54-.62c-.024-.028-.048-.055 0-.081.177-.101.312-.264.499-.35.024-.011.04-.017.053-.014zm1.929.486a.204.204 0 0 1 .14.046.21.21 0 0 1 .08.218.556.556 0 0 1-.161.29 5.528 5.528 0 0 0-.882 1.093c-.228.36-.453.718-.624 1.11a.768.768 0 0 1-.146.206c-.24.273-.526.485-.855.638a.17.17 0 0 0-.108.159c-.005.06-.024.118-.029.178a.48.48 0 0 1-.19.381c-.04.031-.045.082-.06.125l-.273.915c0 .007 0 .014-.002.019 0 .014.002.031-.017.038-.041.01-.077-.002-.113-.021a41.398 41.398 0 0 1-1.33-.334c-.055-.012-.108-.029-.166-.036-.088-.012-.096-.053-.055-.12.058-.281.125-.56.298-.797.038-.053.036-.096.002-.154-.19-.317-.334-.658-.492-.989-.026-.055-.017-.08.034-.11A574.27 574.27 0 0 0 6.97 4.705c.045-.03.089-.012.132-.022.151-.034.298-.08.43-.163.01-.007.026-.012.03-.022.097-.213.31-.286.49-.37.411-.187.826-.36 1.189-.633a.18.18 0 0 1 .095-.04zm11.443 3.772v.005l.002-.001c-.021.256-.043.498-.062.74l-.043.535c-.005.065-.024.106-.094.13a561.29 561.29 0 0 0-3.37 1.17l-.039.009c-.036.005-.055-.012-.08-.055-.218-.394-.439-.785-.662-1.177-.029-.05-.038-.077.034-.096l4.254-1.246c.014-.005.031-.007.06-.014zm-.41.386c-.154.003-.293.147-.286.293.007.137.124.257.254.252.137-.002.27-.153.267-.302-.005-.166-.082-.245-.236-.243zm-16.83.87c.01 0 .024.002.039.007L5.513 9c.645.171 1.291.34 1.937.51.062.017.082.036.06.1l-.278.913c-.01.036-.017.074-.058.074a.06.06 0 0 1-.02-.002l-1.036-.142c-.226-.03-.45-.062-.675-.093a255.003 255.003 0 0 0-2.055-.286c-.043-.012-.058-.038-.05-.098.052-.476.103-.951.153-1.429.003-.012.002-.021.005-.031a.035.035 0 0 0 .005-.015c.007-.014.021-.019.038-.019zm8.136.103l.113.002c.197.01.389.086.569.166.08.036.159.07.238.108l.057.029c.058.028.118.057.173.09l.113.065c.036.025.075.046.108.073.072.05.142.105.207.165.218.202.372.44.463.72.065.202.113.409.13.617.016.202-.044.399-.096.593-.008.03-.02.036-.03.034-.014-.005-.021-.022-.033-.036l-.216-.25a2.105 2.105 0 0 0-1.042-.684 4.159 4.159 0 0 0-.994-.154 3.799 3.799 0 0 0-.804.092c-.211.04-.423.074-.631.113-.137.024-.262.086-.387.141-.06.027-.12.053-.18.076l-.02.004c-.376.132-.695.36-1.024.57-.09.06-.165.14-.243.218l-.01.008-.064.065c-.152.147-.3.296-.464.43-.074.103-.175.175-.268.266.024-.17.07-.328.146-.472a4.6 4.6 0 0 1 .262-.435c.048-.07.096-.14.146-.206a7.17 7.17 0 0 1 .315-.396c.081-.097.163-.193.247-.289.084-.096.168-.19.25-.285a.917.917 0 0 1 .115-.099l.026-.03c.078-.067.147-.137.238-.21l.012-.01.067-.062c.24-.228.519-.406.797-.583.028-.019.057-.035.086-.051l.111-.048c.01-.004.02-.01.029-.012a2.78 2.78 0 0 1 .173-.065l.117-.036c.14-.04.279-.074.416-.117a2.45 2.45 0 0 1 .782-.115zm-7.57.449c-.071.004-.153-.003-.215.057a.462.462 0 0 0 .012.665.286.286 0 0 0 .379 0c.146-.127.183-.314.096-.535-.053-.137-.125-.187-.271-.187zm15.846.062c.087-.001.163.053.23.146.014.01.029.02.043.032.022.019.03.04.053.064.099.113.207.224.31.334a.064.064 0 0 1 .014.024.023.023 0 0 1-.002.022.04.04 0 0 1-.015.014l-.01.015-.002.002c-.002.002-.002.005-.004.01 0 .002-.003.004-.003.004h.003v.008c-.145.146-.106.283.01.415.006.012.014.024.014.036.096.127.016.254 0 .382-.003.012-.005.016-.015.021l-.007.003a.116.116 0 0 1-.029-.005l-.01-.003a9.772 9.772 0 0 1-.252-.077c-.007 0-.012-.004-.019-.007-.007 0-.012-.007-.019-.007a.284.284 0 0 1-.118-.019.252.252 0 0 0-.292.05.054.054 0 0 1-.005.02c.04.06.108.074.168.093.245.08.453.23.68.348.052.03.062.092.057.152-.003.033-.012.067-.02.103l-.072.31a.127.127 0 0 1-.019.076c.003.168-.115.293-.17.437-.007.012-.012.017-.02.041a3.223 3.223 0 0 1-.129.298c0 .007-.01.017-.012.024v-.005c0 .002-.002.002-.002.005l-.005.01c-.003.002-.003.004-.005.007-.012.045-.02.093-.058.132a1.913 1.913 0 0 1-.187.432c-.007.012-.012.012-.017.036-.062.144-.127.317-.19.475-.014.058-.026.115-.04.17l-.008.015c0 .002-.002.002-.002.005 0 .005-.005.01-.007.014a.45.45 0 0 1-.036.192c-.012.039-.022.082-.034.12a.074.074 0 0 1-.005.02l-.201.912c-.055.25-.077.504-.118.754-.038.235-.048.477-.106.708-.04.168-.136.324-.213.48-.072.146-.118.302-.207.444l-.007.015a.169.169 0 0 0-.012.03c-.002.006-.002.013-.005.018l-.007.033a.182.182 0 0 0-.002.036c0 .012 0 .024-.003.036v.036a.71.71 0 0 1-.002.072c-.02.257-.053.514-.041.773.002.048-.012.075-.058.091l-.057.022a1.598 1.598 0 0 0-.113.048l-.06.024c-.031.012-.05.022-.099.034v-.005s-.007.005-.011.005l-.133.055-.093.038a.635.635 0 0 1-.211.092l-.036.021a25.182 25.182 0 0 0-.474.211c-.081.024-.165.072-.247.11-.089.04-.175.075-.264.114-.139.062-.278.12-.418.182-.004.002-.012 0-.016 0-.128.048-.26.118-.38.173-.048.026-.117.053-.177.077-.11.043-.135.038-.159-.075-.072-.052-.079-.141-.105-.216-.027-.072-.048-.15-.072-.223-.005-.024-.017-.02-.017-.034-.024-.033-.024-.064-.036-.098l-.003-.017c-.007-.005-.007-.012-.01-.019l-.006-.017h.004c-.033-.1-.07-.199-.093-.3-.024-.067-.067-.132-.08-.202a.17.17 0 0 1 0-.07l.008-.033.004-.017c.02-.047.051-.093.075-.139.017-.038.031-.077.048-.115.017-.038.031-.067.048-.115.038-.072.062-.156.11-.24 0-.02.015-.039.02-.058.043-.146.09-.295.149-.437 0-.005-.005-.012-.003-.017.017-.086.098-.117.146-.168v.003c.024-.008.037-.022.049-.022.014-.024.028-.034.043-.048a1.518 1.518 0 0 0 .108-.149c.045-.067.086-.137.137-.204.016-.021.03-.055.057-.055.005 0 .007 0 .012.002.039.01.027.055.022.084a.88.88 0 0 0 0 .327c.012.084.026.168.033.252l-.002.038a.578.578 0 0 1 .036.19c.02.082.036.16.06.242.072.15.125.3.173.454l.005-.002c.081.12.163.26.245.391.024.031.05.065.074.089h.005v.02c.024 0 .036.052.072.004-.007-.024-.012-.024-.02-.024a.448.448 0 0 1-.03-.08c-.005-.016-.013-.035-.015-.05a.387.387 0 0 1-.012-.05c-.002-.007-.002-.017-.005-.024a.282.282 0 0 0-.01-.048l-.011-.075-.013-.074c-.007-.007-.007-.017-.007-.026-.002-.01-.004-.02-.01-.03-.002-.028-.007-.057-.011-.086l-.022-.172c-.002-.03-.012-.058-.014-.087a3.634 3.634 0 0 1 .036-.941h.014c.029-.144.058-.31.086-.466.008 0 .015.003.024.003-.01.261.017.52.075.775.002.005.002.012.002.017.036.098.075.197.106.298.007.021.014.043.022.062a.338.338 0 0 0 .055.094c.007.012.021.024.021.036.024.019.036.04.056.06.014.016.026.036.04.053.05.048.104.093.166.156a3.667 3.667 0 0 1-.017-.14c-.004-.043-.012-.086-.016-.134 0 0-.013-.007-.013-.012a.82.82 0 0 0-.01-.108l-.04-.33c0-.009 0-.016.002-.025 0-.01.003-.027.003-.027a2.705 2.705 0 0 1-.02-.415l-.002-.017a1.122 1.122 0 0 1-.002-.37c.005-.033.002-.07.005-.103 0-.007-.003-.012-.003-.02 0-.158.007-.319.055-.472l.003-.017c.012-.072.024-.158.036-.238.012-.079.024-.16.033-.24.005-.033.015-.05.034-.05.01 0 .024.005.04.017l.051.03.075.049c.024.017.048.033.07.055.002.002.004.005.009.007a.116.116 0 0 0 .017.012h.005v-.002c.168.084.261.226.374.358a.31.31 0 0 1 .11.151c.075.098.13.204.169.322.002.01.007.021.01.03.002.01.007.006.009.03.02.024.031.055.043.084l.034.084.019.04c.005.01.01.017.017.024a.07.07 0 0 0 .04.024c.027-.088-.035-.172-.011-.256h.007c0-.024-.007-.025-.007-.037-.024-.156-.044-.31-.109-.453-.002-.012-.002-.039-.002-.039-.058-.144-.086-.29-.17-.417a.103.103 0 0 1-.037-.063c-.026-.024-.04-.053-.055-.081a4.135 4.135 0 0 1-.038-.063v.017c0-.002-.005-.005-.005-.007v-.003a2.828 2.828 0 0 0-.22-.278l-.01-.01c-.01-.01-.02-.01-.03-.033-.057-.024-.112-.096-.17-.147-.007-.007-.014-.01-.019-.017-.005-.004 0-.01-.024-.016-.12-.082-.209-.183-.314-.255-.02-.024-.044-.01-.053-.048.31-.019.61.017.922.036v-.012h.002c.154.024.298.053.437.113.005 0 .01.007.017.007v.005c.096.022.187.065.278.108.02.01.044.04.065.012.017-.024-.01-.046-.024-.065-.036-.05-.07-.1-.108-.151-.007-.012-.019-.024-.019-.036-.072-.07-.127-.149-.19-.219a.953.953 0 0 1-.06-.064 1.162 1.162 0 0 1-.209-.17c-.012-.008-.024-.022-.036-.022-.03 0-.064-.034-.096-.056-.03-.021-.064-.04-.096-.062-.012-.007-.024-.012-.036-.02-.146-.055-.293-.105-.44-.16-.004 0-.013-.003-.013-.005 0 0-.013 0-.017-.002a.11.11 0 0 1-.072-.03.079.079 0 0 1-.027-.035l-.005-.012c-.007-.02-.01-.041-.007-.063a.968.968 0 0 0-.012-.22c-.002-.022-.007-.041-.012-.063a2.158 2.158 0 0 0-.014-.06l-.015-.062a2.29 2.29 0 0 0-.024-.09s-.01-.002-.01-.009c-.023-.146-.08-.293-.124-.437-.007-.019-.01-.033-.017-.057a.369.369 0 0 1-.057-.168c0-.02 0-.036.002-.056l.002-.026c.005-.027.01-.055.02-.082l.033-.108c0-.005 0-.017.003-.017h-.003c.031-.17.099-.314.147-.468 0-.002.005-.002.005-.005l.01-.01c.002-.002.004-.002.004-.004a.265.265 0 0 0 .053-.185.326.326 0 0 0-.027-.103c-.016-.043-.038-.084-.06-.127-.002-.005-.01-.01-.014-.012-.002-.003-.005-.005-.005-.008a1.196 1.196 0 0 1-.209-.355l-.016-.038c-.005-.005-.005-.01-.008-.017l-.002-.007a.12.12 0 0 1-.007-.017l.002.002-.002-.005a.276.276 0 0 1 .012-.043c.004-.01.01-.017.014-.026.005-.007.012-.014.02-.022l.009-.007c.065-.094.125-.192.197-.283a.26.26 0 0 0 .05-.252c-.04-.137-.036-.14.101-.19.024-.01.315-.12.432-.156l.075-.029.019-.007a41.645 41.645 0 0 1 .509-.19c.005-.002.012-.002.017-.002.141-.072.293-.118.441-.168.02-.007.036-.015.06-.02.024-.019.096-.035.12-.055.12-.038.216-.093.324-.117a.287.287 0 0 1 .167-.067zm-5.432.603a.82.82 0 0 1 .23.036l.014.004c.259.08.523.142.77.26.041.019.084.038.113.077.16.115.307.247.43.405.19.245.38.492.557.773-.011-.003-.022-.008-.034-.013v-.001a1.018 1.018 0 0 1-.185-.103 6.452 6.452 0 0 0-.674-.356 1.467 1.467 0 0 0-.331-.1 3.307 3.307 0 0 0-.91-.041c-.084.007-.17 0-.255 0-.062 0-.091-.03-.091-.092 0-.235.012-.472-.06-.7-.015-.048.014-.068.055-.082a1.12 1.12 0 0 1 .372-.067zm-2.75.773c.423-.015.812.105 1.167.324.132.08.253.176.363.284l.014.013c.122.123.23.26.321.41.08.13.058.272.031.414-.072.406-.316.706-.592.987-.265.269-.596.444-.903.648-.435.29-.932.403-1.438.478-.632.093-1.273.103-1.906.187-.23.029-.464.048-.694.089a1.07 1.07 0 0 0-.68.41c-.062.084-.1.187-.16.303a.527.527 0 0 1 .026-.394 1.12 1.12 0 0 1 .533-.54c.415-.219.879-.262 1.323-.375.36-.091.73-.144 1.087-.242a7.234 7.234 0 0 0 1.426-.55c.24-.125.49-.252.656-.485a.73.73 0 0 0 .12-.557c-.005-.034-.015-.05-.027-.053-.012-.002-.029.007-.05.027-.18.16-.367.314-.571.449-.32.206-.673.33-1.038.42-.58.144-1.166.266-1.764.31a4.84 4.84 0 0 0-1.239.242c-.34.118-.687.235-.96.49-.034.03-.075.057-.13.098l.007-.038-.026.019v-.005c.009-.006.016-.013.024-.017a.599.599 0 0 1 .084-.2l.646-1.022a.285.285 0 0 1 .041-.053c.334-.329.653-.677 1.023-.965.614-.48 1.284-.855 2.055-1.02.187-.041.377-.07.571-.07.22-.002.442-.01.66-.017zm-7.632.022c.013 0 .029.002.048.009.029.01.062.007.094.01.127.028.259.03.386.062.012 0 .017.002.034.01a2.174 2.174 0 0 1 .4.057c.145.02.289.036.433.06.033 0 .062-.002.093.017.005 0 .012-.002.012 0 .168.02.3.031.445.055h-.015v.005c.096.012.159.024.233.036.077.012.156.031.23.031h.003c.007 0 .012.003.017.003l.021.005c.048.002.067.028.075.07.038.227.07.455.117.683 0 .017.01.032.008.046l.019.11c.021.11.04.221.062.332 0 .01 0 .031.003.036v.01c.024.143.05.273.074.41v.046a1.717 1.717 0 0 0-.3.46c-.031.075-.07.152-.1.226l-.006.003c-.024.076-.062.15-.098.223-.003 0-.005.005-.007.01-.005.009-.008.024-.012.03v.003a2.478 2.478 0 0 1-.192.415c-.008.02-.024.039-.024.056-.024.09-.046.182-.092.266a.757.757 0 0 1-.074.226 2.102 2.102 0 0 1-.13.394c-.007.019-.019.036-.019.055l-.002.007c-.003.007-.005.02-.01.029a.106.106 0 0 1-.01.03l-.002.01-.038.742.021.008.094-.185c.031-.06.055-.123.089-.185.019-.043.05-.086.05-.13.072-.12.137-.24.211-.35.008-.012.022-.02.03-.043.062-.097.134-.224.208-.334.026-.043.054-.08.078-.123h-.001c.017-.048.043-.055.065-.076.021-.022.033-.044.081-.065 0 .019.005.036.003.053l-.003.01c0 .009-.004.018-.007.028l-.002.01c-.003.007-.003.012-.005.019a.054.054 0 0 0-.002.02c0 .006-.005.011-.003.018l-.003.015h.003c-.022.144-.021.307-.024.458 0 .007-.005.02-.005.024l.005-.002c.02.144.043.288.062.432h-.002c.003 0 .005.031.005.043.024.144.055.29.072.437l.002.017c.003.01.005.017.005.026.024.116.11.195.163.296.039.055.08.12.116.168h.002v.002c.12.106.22.214.355.31.02 0 .039.024.058.024h-.002v.012c.048.005.088.043.139.029a.087.087 0 0 0 .026-.012c.007-.005.017-.01.02-.017.011-.022-.01-.034-.027-.041-.197-.125-.166-.33-.19-.521h.008v-.003c.048.046.081.091.122.14a.1.1 0 0 0 .024.026l.05.055c.034.036.07.07.108.101.039.031.08.065.125.089.02.007.039.024.056.024h-.005c.144.07.269.137.4.206a.15.15 0 0 1 .08.036c.048.144.105.288.091.456.005 0 .01.017.012.03a.066.066 0 0 1-.002.03c.017.14.017.281-.003.42a.044.044 0 0 1-.002.039c-.003.005 0 .007-.002.012h.002c0 .14-.002.278-.038.415-.003.137-.046.27-.06.406 0 .005-.003.01-.005.017-.008.026-.02.057.038.05v-.002c.13-.135.26-.267.38-.418v.01c.002-.048.03-.073.057-.096.05-.049.1-.13.151-.2.05-.07.101-.137.152-.206l.002-.012c.007-.024.017-.039.029-.046.005-.002.01-.005.014-.005H9.3a.133.133 0 0 1 .05.02.835.835 0 0 1 .077.048c.144.079.307.132.415.269.012.012.026.014.038.038.05.024.096.08.133.132l.038.036c.002.002.005.002.007.005.19.16.204.247.067.46-.004.008-.012.015-.016.015a.236.236 0 0 1-.024.055.216.216 0 0 1-.02.036l-.01.017c-.035.058-.074.118-.088.185a.443.443 0 0 0-.012.168c.026.094.05.19.07.286.012.057.024.115.028.175.02.142-.048.228-.168.288v-.002c-.024.002-.026.017-.038.024a.078.078 0 0 1-.02.014.362.362 0 0 1-.038.026.192.192 0 0 0-.077.087c0 .007 0 .005-.002.01-.002.004 0 .014-.002.014h.007v.014c-.024.07-.036.12-.048.156-.003.01-.007.017-.01.024-.002.008-.007.012-.01.017-.002.005-.007.01-.009.012a.045.045 0 0 1-.024.012h-.007a.165.165 0 0 1-.05-.012c-.034-.012-.078-.029-.138-.048-.004-.002-.009-.002-.011-.005a.025.025 0 0 0-.012-.004l-.027-.012h-.01v-.01h-.002c-.072-.024-.14-.038-.204-.065-.038-.014-.08-.026-.12-.043-.05-.012-.1-.036-.151-.036-.14-.048-.281-.072-.416-.12-.011 0-.019.002-.043 0v.002c-.096-.019-.173-.043-.264-.06-.089-.014-.122-.06-.113-.148.005-.037.003-.08.003-.116 0-.012-.003-.017-.003-.04-.014-.025-.036-.053-.055-.085a.11.11 0 0 1-.014-.026c-.012-.012-.036-.024-.036-.038-.024-.005-.015-.01-.022-.015-.074-.07-.053-.163-.043-.252l.002-.029.008-.055c.002-.01.002-.02.004-.026.039-.15.048-.29-.113-.38-.019-.012-.03-.024-.055-.04v.004a2.869 2.869 0 0 0-.225-.165c-.012-.024-.015-.029-.039-.039a1.418 1.418 0 0 1-.31-.228l-.074-.04h.01c-.015-.025-.032-.022-.044-.034-.019-.014-.036-.024-.06-.039-.12-.103-.283-.199-.413-.316-.045-.015-.074-.05-.11-.08v-.004c-.127-.09-.252-.176-.377-.272h.003c-.015 0-.015-.012-.039-.024-.072-.036-.144-.096-.206-.144-.02-.024-.039-.024-.058-.024-.058-.048-.108-.07-.156-.113-.02-.012-.036-.026-.06-.04a2.178 2.178 0 0 1-.396-.289l-.012-.012-.022-.024a.188.188 0 0 1-.038-.081v.019c-.087-.094-.144-.202-.216-.3l-.007-.015a.027.027 0 0 1-.005-.014.107.107 0 0 1-.003-.026.118.118 0 0 1 .024-.053c0-.005.003-.012.003-.02.024-.153.108-.292.168-.436v-.037s0-.022-.003-.032l-.004-.014-.005-.005a.038.038 0 0 0-.017-.01h-.007a.122.122 0 0 0-.058.022.312.312 0 0 0-.055.043l-.02.015a.13.13 0 0 0-.014.019l-.007.01c0 .002-.002 0-.002 0 0 .002-.003 0-.003 0v.002c-.048.055-.12.103-.182.154-.012.012-.034.026-.034.038v-.002h-.007c-.02.024-.045.024-.072.012l-.31-.137c-.024-.012-.036-.038-.04-.062a.64.64 0 0 1-.008-.032l-.007-.026v.005c-.036-.168.022-.293.053-.437.002-.012.005-.024.005-.036.024-.14.033-.288.074-.423v-.062c-.021-.154-.022-.305-.033-.459l.002-.079c-.014-.286-.033-.571-.043-.857-.022-.598-.07-1.193-.053-1.79a.636.636 0 0 0-.074-.315 1.968 1.968 0 0 0-.099-.164.264.264 0 0 1-.048-.237c.036-.14.063-.284.089-.425.009-.05.022-.084.06-.086zm-.166.38l.005.015c.005.032-.007.065-.021.113a.117.117 0 0 1 0-.086.295.295 0 0 1 .016-.041zm10.715.003c.13-.002.257.005.381.024.219.017.42.058.55.164.094.04.188.09.279.144.22.132.441.269.662.403a.389.389 0 0 1 .118.108l.223.315c.012.016.031.036.015.057a.038.038 0 0 1-.02.014c-.018.004-.034-.002-.05-.011-.098-.056-.2-.108-.298-.164a4.76 4.76 0 0 0-1.184-.459c-.107-.031-.208-.061-.323-.076l-.152-.034c-.004.003.005.012.017.024.005.005.01.01.012.015a.138.138 0 0 0 .041.033l.02.01c.227.115.612.187.892.317l.058.029c.156.081.298.182.44.29l.268.207c.404.293.65.689.77 1.169.003.014.008.029.01.043l.01.014c.02.03.024.065.017.096.002.008.002.015.005.022-.005.07-.06.04-.092.04a2.504 2.504 0 0 1-.61-.11h-.006c-.051-.016-.118-.04-.165-.054-.211-.075-.41-.163-.615-.238-.252-.089-.449-.261-.662-.413a7.777 7.777 0 0 1-1.001-.816.34.34 0 0 1-.08-.106 4.11 4.11 0 0 1-.062-.153l-.036-.094a1.088 1.088 0 0 0-.024-.06l-.002-.005c-.003-.002-.003-.007-.003-.01v-.002l-.002-.01a.168.168 0 0 1 .007-.122c.002-.005.002-.01.005-.014l.005-.017.004-.014c.003-.005.003-.013.005-.017l.003-.015.002-.017.003-.014.002-.017.002-.014.003-.017.002-.014.003-.017c0-.005 0-.01.002-.015 0-.004 0-.012.003-.016v-.266c-.003-.082.026-.114.108-.111.08.002.162-.001.243-.005l.075.004c.04-.002.081-.005.122-.005zm.284.532a.12.12 0 0 0 .028.008H15c-.012.008-.028.005-.033.02-.004-.02-.002-.027.003-.028zm.88.342a.206.206 0 0 0 .012.006l.003.001-.015-.007zm-1.908.177l.002.003c.007.003.014.01.022.024.076.154.182.281.3.399.124.12.259.23.389.348.268.242.542.48.818.713.178.151.392.228.62.288.518.132 1.049.182 1.575.254.139.02.264.065.374.156h-.007c.01.008.017.012.024.02-.296-.043-.59-.039-.886-.046-.324-.007-.641.031-.96.067a.986.986 0 0 1-.336-.026c-.308-.07-.598-.195-.889-.317-.329-.14-.602-.353-.862-.588-.019-.02-.038-.036-.057-.055a1.002 1.002 0 0 1-.205-.285l-.002-.006c-.09-.212-.085-.448-.016-.708.019-.07.04-.14.062-.209.007-.023.02-.035.034-.032zm-.248 1.18c.065.233.233.396.375.573l.029.039.028.038a.57.57 0 0 0 .106.094c.017.012.031.021.046.033l.021.017a10.088 10.088 0 0 0 .538.396l.329.229c.149.103.305.19.468.266.04.02.082.036.123.055.124.053.25.099.379.14l.021.007c.08.021.166.028.25.038.031.002.063.007.091.01a.195.195 0 0 1 .06.024.411.411 0 0 1 .068.05c.074.067.144.163.148.221 0 .01 0 .017-.002.024-.002.005-.002.007-.005.01-.01.016-.024.03-.033.048-.03.05-.06.1-.085.153l-.011.027a.311.311 0 0 0 .002.261c.115-.115.218-.237.293-.377a1.139 1.139 0 0 0 .086-.201c.01-.027.003-.058.01-.084.01-.029-.024-.07-.01-.09 0-.001.003-.001.005-.004a.04.04 0 0 1 .014-.007c.01-.002.02-.005.027-.005.019-.002.036-.005.055-.005.048 0 .094.008.14.022.028.01.019.045.016.072v.005c-.005.086-.04.165-.072.242a.554.554 0 0 1-.024.055 1.68 1.68 0 0 1-.192.375c-.118.156-.254.302-.475.31h-.063c-.038 0-.077.01-.115.012a.085.085 0 0 0-.086.057c-.017.039-.039.072-.058.11l-.007.017a1.534 1.534 0 0 1-.408.57c-.08.071-.164.139-.25.203a1.95 1.95 0 0 1-.468.224l-.036.014-.034.015-.019.007c-.01.002-.022.007-.031.01-.036.014-.065.035-.046.09.02.06.063.077.118.08.012 0 .026 0 .04-.003a.613.613 0 0 0 .15-.033c.048-.017.096-.039.146-.06.034-.015.067-.029.103-.041-.029.122-.045.235-.084.341l-.021.053a6.794 6.794 0 0 1-.09.192c-.018.043-.04.084-.062.125-.115.23-.245.45-.405.655a1.682 1.682 0 0 1-.356.34 3.954 3.954 0 0 1-.103.073 2.788 2.788 0 0 1-.38.206l-.064.03-.053.02-.043.018c-.04.016-.082.03-.123.045a2.674 2.674 0 0 1-.168.053 4.848 4.848 0 0 1-.57.134c-.008 0-.013.003-.02.003-.055.01-.108.017-.163.026-.058.008-.116.017-.176.024a2.156 2.156 0 0 1-.605-.021l-.028-.007a.68.68 0 0 1-.145-.06c-.062-.034-.12-.07-.182-.101a1.728 1.728 0 0 1-.13-.072 1.868 1.868 0 0 1-.16-.106.632.632 0 0 1-.233-.279 1.794 1.794 0 0 0-.092-.194c-.01-.02-.021-.036-.03-.053a2.718 2.718 0 0 0-.277-.367 2.76 2.76 0 0 0-.125-.142c-.021-.024-.04-.048-.062-.07a7.07 7.07 0 0 0-.26-.276l-.067-.067a2.787 2.787 0 0 0-.364-.302 2.784 2.784 0 0 0-.303-.192l-.06-.039a1.58 1.58 0 0 1-.63-.762c-.043-.093-.107-.122-.22-.124a.63.63 0 0 1-.252-.048l-.002-.002a.457.457 0 0 1-.132-.084l-.026-.016c-.022-.026-.038-.058-.058-.09a5.295 5.295 0 0 1-.386-.658c0 .003.002.005.003.008l-.006-.013.003.005a3.772 3.772 0 0 0-.073-.196l-.036-.086a.382.382 0 0 1-.014-.154l.007-.031c.002-.005.002-.01.005-.015a.145.145 0 0 1 .012-.029.46.46 0 0 1 .127-.141.898.898 0 0 1 .067-.05c.046-.034.094-.063.14-.094.071-.044.143-.084.218-.123.271-.14.56-.238.857-.314.017-.005.033-.008.053-.012.033-.008.07-.01.105-.015.036-.002.072-.005.106-.005l.106-.002c.016 0 .036 0 .052-.002a17.864 17.864 0 0 0 .9-.063c.18-.017.36-.036.54-.055a3.504 3.504 0 0 0 1.127-.324c.036-.02.074-.036.11-.055l.063-.034c.144-.077.288-.151.427-.233.014-.02.031-.026.055-.033l.01-.003v.012a.06.06 0 0 1-.02.034l-.021.014c-.14.178-.331.3-.497.45a.415.415 0 0 0-.05.045c-.053.043-.106.089-.166.137.209 0 .41-.024.598-.08a1.654 1.654 0 0 0 .869-.6c.103-.137.197-.297.278-.482zm-3.265.016a1.244 1.244 0 0 1-.343.109c-.56.139-1.13.22-1.697.326a2.603 2.603 0 0 0-1.105.487c-.019.015-.04.032-.062.043-.026.017-.039.013-.043-.01-.003-.004-.003-.011-.003-.018-.01-.144.034-.214.166-.274.18-.082.36-.168.54-.252.235-.108.487-.142.742-.168.396-.043.792-.094 1.19-.14l.524-.086zm2.386 1.245l-.026.001c-.038.01-.036.05-.036.08.003.1.007.201.02.302.011.11.047.219.112.307a.842.842 0 0 0 .51.334c.155.036.155.038.17.2.007.069.016.131.081.17.113.067.226.137.363.146.084.007.17.012.242.068a.583.583 0 0 0 .32.098c.084.007.17.01.254.024.067.012.113-.01.16-.05.239-.197.474-.397.697-.617-.026-.03-.065-.039-.118-.012a6.25 6.25 0 0 0-.415.223.315.315 0 0 1-.113.048 4.032 4.032 0 0 1-.722.074.68.68 0 0 1-.368-.13c-.067-.043-.134-.105-.146-.201.036-.012.07.002.103.007.127.017.252.063.382.055.312-.019.605-.113.898-.213l.283-.103c.043-.015.055-.03.017-.07-.046-.05-.096-.04-.147-.034a5.625 5.625 0 0 1-1.87-.045c-.18-.034-.372-.046-.442-.27-.019-.06-.038-.12-.05-.182a.37.37 0 0 0-.094-.17.094.094 0 0 0-.065-.04zm-.573.065c-.048 0-.08.05-.103.093-.06.103-.137.196-.207.292-.108.147-.26.178-.418.154a17.985 17.985 0 0 0-1.718-.18c-.03-.002-.058-.01-.082.01-.183.134-.367.264-.483.468.007.002.015.007.02.007.019-.002.035-.007.055-.01.297-.074.607-.098.922-.072.398.034.792.113 1.188.168.053.008.106.01.156.036.12.063.18.173.226.29.07.18.09.373.103.565.01.151-.022.278-.144.38a.556.556 0 0 0-.2.278c.154 0 .286.026.387.156.063.081.144.149.223.218a.379.379 0 0 0 .586-.081c.058-.094.113-.19.175-.281.087-.127.17-.264.325-.32.093-.03.052-.076.021-.115-.062-.079-.178-.081-.28-.019-.16.096-.267.238-.382.375-.034.04-.068.081-.113.115-.058.04-.108.043-.159-.01-.057-.057-.115-.117-.177-.168-.053-.043-.063-.082-.032-.144a.728.728 0 0 0 .082-.413c-.029-.312-.08-.62-.3-.867-.024-.026-.024-.04.01-.064a.94.94 0 0 0 .408-.701c.007-.075-.007-.135-.067-.156a.075.075 0 0 0-.022-.004zm4.461.035c.205 0 .387.08.566.182-.005 0-.007 0-.012.003l.031.017c-.271.04-.54.06-.811.03-.084-.009-.168-.026-.255-.023-.17.005-.307-.084-.451-.161h.017c-.012-.007-.024-.012-.036-.02.024.003.05.003.074.005.029.003.055.01.084.015.238.05.468-.02.704-.043a.8.8 0 0 1 .089-.005zm-8.69.714a.045.045 0 0 0-.016.004c-.05.019-.098.048-.112.115-.048.223.055.437.278.552.1.053.178.127.226.23.016.037.019.106.072.094.052-.012.01-.077.021-.103.008-.135-.019-.25-.127-.32-.08-.05-.11-.12-.14-.201-.038-.106-.047-.223-.134-.307-.02-.021-.036-.064-.069-.064zm1.843.354c-.11.027-.236.053-.353.106-.082.038-.087.084-.015.139.043.034.087.05.14.031a.466.466 0 0 1 .494.096.509.509 0 0 0 .523.087c.106-.036.197-.096.293-.15a.319.319 0 0 1 .113-.04c.144-.014.288-.033.43-.053.038-.005.098.01.108-.036.01-.048-.046-.077-.08-.108-.016-.017-.045-.019-.069-.026a.82.82 0 0 0-.437-.015 2.092 2.092 0 0 1-.888 0c-.08-.019-.163-.019-.26-.03zm6.903.889c.006 0 .011.003.015.007a.05.05 0 0 1 .012.014l.008.005c.043.034-.007.11-.02.168-.03.168-.057.334-.086.502-.007.048-.012.098-.048.165l-.007-.043-.012.024a5.307 5.307 0 0 1-.075-.706c-.002-.053.034-.065.068-.077.048-.016.107-.066.145-.06zm-3.219.902a.08.08 0 0 0-.023.01c-.19.105-.404.11-.613.137-.088.012-.199-.015-.264.05-.158.156-.293.091-.432-.02-.007-.004-.014-.011-.024-.014-.206-.11-.413-.15-.624-.005a.338.338 0 0 1-.267.068c-.074-.02-.131-.015-.19.038-.028.027-.066.048-.1.07-.094.062-.094.072-.007.141.02.017.043.024.067.032.2.06.387.016.562-.08.182-.098.353-.093.518.032.152.112.312.115.48.045a2.97 2.97 0 0 1 .653-.213c.034-.005.068-.017.099.01.096.088.187.026.279-.01.036-.015.04-.044.038-.08-.007-.076-.065-.12-.098-.18-.015-.025-.032-.035-.054-.03zm-4.718.07c.009 0 .02.006.032.017.039.036.075.074.113.11l.015.014c.019.017.021.039.012.06l-.224.45-.024-.008c0-.005.003-.007.003-.012.048-.197.029-.4.055-.6.002-.02.009-.03.018-.03zm3.9.588c-.238.007-.48.046-.703.122-.185.063-.392.106-.488.32-.055.124-.048.257-.086.381.017.099.017.197.074.281.017.024.024.063.065.06.043-.002.058-.038.07-.067.043-.091.053-.194.081-.29.046-.157.118-.281.281-.351.17-.072.343-.14.516-.206a.184.184 0 0 1 .101-.012c.214.03.437.021.627.146a.079.079 0 0 0 .062.012c.072-.017.08-.04.036-.098a.723.723 0 0 0-.636-.298zm-2.218.742l.014.017c.094.117.187.218.25.336.151.29.374.501.662.655.135.072.256.172.414.19l.003.001.018-.001c.017 0 .04-.003.036.024-.003.014-.017.014-.031.012h-.007c-.005 0-.01 0-.015-.003-.167.005-.33.033-.493.067-.085.018-.17.038-.255.058a7.838 7.838 0 0 1-.243.055h-.003c-.033.008-.048.024-.043.058.005.04.02.062.067.072a1.305 1.305 0 0 0 .274.017c.118-.003.235-.015.353-.034a2.602 2.602 0 0 1 .778-.002c-.43.07-.785.312-1.174.475-.202.084-.358.245-.55.348-.014.017-.022.044-.036.06-.031.039-.036.118-.087.11h-.004c-.005 0-.01.003-.015 0a.623.623 0 0 1-.266-.086c-.03-.019-.022-.055-.022-.089v-.453c0-.032.012-.067-.019-.09-.106-.066-.08-.182-.106-.278-.01-.038.017-.057.039-.081l.278-.31c.063-.067.089-.142.043-.223-.086-.163-.072-.32-.002-.485.055-.13.091-.267.142-.42zm4.585.177c.005.003.01.005.012.008l.007-.008c.039.022.041.05.05.075.102.247.2.497.3.744.025.055.03.103-.006.149a.502.502 0 0 0-.077.49c.067.206.019.348-.183.449a.229.229 0 0 1-.12.036.124.124 0 0 1-.088-.03c-.375-.259-.821-.345-1.242-.494-.06-.021-.117-.043-.18-.057-.072-.017-.067-.065-.057-.116.007-.036.026-.04.045-.038.02-.005.046.01.063.014.48.12.965.216 1.428.396.017.008.031.01.043.013.034-.005.044-.037.039-.082-.01-.108-.02-.214-.144-.271a2.8 2.8 0 0 0-.975-.233c-.05-.005-.098-.007-.149-.01.238-.144.5-.22.713-.406a.999.999 0 0 0 .075-.067l.398-.482.048-.08zm-1.882 1.133h.02c.03-.002.054.005.057.053 0 .044.01.082-.06.092a1.752 1.752 0 0 1-.274.021c-.094 0-.185-.01-.278-.031-.05-.012-.07-.046-.065-.086.002-.027.021-.027.04-.027a.103.103 0 0 1 .039.003h.18a1.143 1.143 0 0 0 .34-.024zm.036.396c.006 0 .012.002.02.005.278.116.556.231.844.349-.132.11-.254.208-.374.304-.221.178-.44.358-.646.553-.05.048-.089.05-.147.014a9.33 9.33 0 0 0-1.097-.545c-.165-.07-.34-.098-.511-.158.02-.036.055-.036.084-.046.367-.137.742-.26 1.102-.42.094-.043.187-.007.278.005.137.019.27.021.394-.046a.092.092 0 0 1 .053-.015zm-2.161.698a.27.27 0 0 1 .082.018c.197.077.38.185.569.274a.04.04 0 0 1 .029.01c.004.002.005.004.005.011v.005c0 .003-.003.003-.003.005-.002.003-.005.003-.007.003l-.01-.003a.03.03 0 0 1-.012-.012l-.862-.214c.074-.059.133-.1.209-.097zm8.17.535c-.142-.004-.26.062-.372.15-.029.022-.046.048-.094.017-.105-.072-.206-.053-.295.039a.402.402 0 0 0-.103.187c-.125.504-.252 1.006-.372 1.512-.041.169.048.255.223.229.158-.025.238-.116.264-.32.026-.197.053-.391.11-.595.15.187.29.362.433.538.139.17.29.321.494.412.144.065.269.027.382-.074a.186.186 0 0 0 .055-.206.157.157 0 0 0-.158-.125.246.246 0 0 1-.152-.07 2.27 2.27 0 0 1-.362-.396c-.09-.12-.094-.12.026-.202.252-.173.341-.417.322-.71-.014-.219-.132-.346-.339-.38a.454.454 0 0 0-.062-.006zm-10.733.03c-.04 0-.077.02-.097.075-.019.05-.053.043-.091.038a.751.751 0 0 0-.665.219c-.38.37-.574.814-.552 1.354.014.358.22.53.569.451.689-.16 1.224-.835 1.253-1.582.007-.192-.168-.47-.34-.538a.214.214 0 0 0-.077-.016zm-1.93.058a.943.943 0 0 0-.613.238c-.346.302-.547.693-.646 1.138a.642.642 0 0 0 .075.482c.07.118.158.161.292.135a3.12 3.12 0 0 0 .87-.305.867.867 0 0 0 .225-.168.291.291 0 0 0 .084-.204c0-.075-.033-.101-.103-.104-.07-.002-.13.024-.192.046-.207.075-.408.166-.622.22-.105.027-.141.003-.163-.105a.301.301 0 0 1 .005-.122c.04-.168.098-.331.187-.483a.82.82 0 0 1 .245-.283c.14-.089.283-.137.442-.04.052.03.103.016.15-.013a.352.352 0 0 0 .15-.201c.016-.05.002-.09-.044-.116a.773.773 0 0 0-.343-.115zm9.2.07a.692.692 0 0 0-.517.206c-.156.161-.183.324-.084.526.074.151.177.28.278.415.072.094.149.187.216.286.048.07.024.125-.058.151a.199.199 0 0 1-.139-.005 1.076 1.076 0 0 1-.374-.23.243.243 0 0 1-.082-.125c-.012-.074-.053-.108-.125-.115-.081-.007-.156-.007-.204.08-.08.138-.057.263.087.393.276.245.605.353.933.38.3.004.485-.267.387-.522-.043-.115-.118-.216-.19-.314-.12-.159-.245-.313-.357-.476-.09-.125-.048-.216.098-.264.135-.043.25-.005.36.08.13.1.24.047.269-.116.017-.086-.029-.144-.089-.194a.68.68 0 0 0-.41-.157zm1.905.06c-.137-.003-.274 0-.41.016-.164.02-.32.065-.38.248-.002.01-.014.024-.024.026-.187.048-.252.202-.302.358-.106.346-.2.696-.298 1.042-.024.084.01.14.08.182.054.034.11.032.172.015.324-.08.648-.166.987-.142a.26.26 0 0 0 .127-.029.242.242 0 0 0 .117-.24c-.014-.091-.086-.117-.163-.13a1.484 1.484 0 0 0-.177-.016 3.855 3.855 0 0 0-.62.052c.031-.228.048-.242.264-.242.161 0 .322-.01.473-.072.101-.043.166-.113.176-.226.007-.076-.025-.122-.104-.124a1.65 1.65 0 0 0-.19.002l-.453.04c.024-.052.036-.1.062-.136.044-.062-.007-.178.084-.209.075-.024.164-.007.245-.01.214-.004.427-.007.634-.074a.347.347 0 0 0 .192-.13c.07-.108.043-.18-.082-.185-.136-.006-.273-.014-.41-.017zm-6.664.008c-.071-.003-.13.042-.185.093a3.951 3.951 0 0 0-.392.434l-.367.456c-.02.024-.04.07-.08.05-.03-.014-.018-.055-.014-.086.01-.11.024-.218.036-.329.015-.144.034-.288.01-.432-.031-.173-.156-.22-.295-.113a.836.836 0 0 0-.094.091 3.168 3.168 0 0 0-.298.414c-.225.348-.432.71-.703 1.027-.05.06-.103.118-.149.182-.048.072-.067.154-.022.23.041.068.11.092.188.087.081-.004.125-.064.168-.122l.626-.852c.012-.015.017-.044.053-.034a1.37 1.37 0 0 0-.012.11c-.01.137-.038.274-.01.413.034.159.16.224.306.152a.902.902 0 0 0 .204-.152c.117-.112.228-.233.33-.362.114-.144.229-.29.349-.447.036.12.022.228.017.336-.012.188-.048.375-.012.565.024.117.091.187.187.194a.44.44 0 0 0 .278-.07c.125-.079.137-.237.02-.343a.19.19 0 0 1-.063-.113c-.026-.13-.004-.257.017-.384.039-.245.115-.485.103-.737-.004-.098-.019-.19-.12-.237a.19.19 0 0 0-.076-.021zm8.04.189c.117-.01.175.064.141.177a.387.387 0 0 1-.07.132c-.129.161-.292.27-.496.353a1.56 1.56 0 0 1 .11-.425c.062-.134.163-.223.315-.237zm-6.651.02a.292.292 0 0 1 .15.035c.076.043.098.146.045.233a.676.676 0 0 1-.185.184 1.47 1.47 0 0 1-.483.243c.07-.216.128-.415.245-.586a.286.286 0 0 1 .228-.108zm1.6.092a.509.509 0 0 1 .213.034c.113.046.151.1.149.269a1.257 1.257 0 0 1-.425.819.562.562 0 0 1-.324.136c-.147.012-.262-.081-.247-.228.028-.321.115-.624.33-.876a.436.436 0 0 1 .304-.154zm-5.882.003a.501.501 0 0 1 .218.036c.11.043.149.098.144.262a1.243 1.243 0 0 1-.422.818.581.581 0 0 1-.325.14c-.15.011-.266-.082-.252-.233.03-.315.116-.613.325-.86a.442.442 0 0 1 .312-.163z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Composer</title><path d="M16.66 0c-.07 0-.114.034-.164.095a.416.416 0 00-.07.43c.19.41.363.83.528 1.25.01.02.022.04.039.068-.04-.002-.05-.022-.063-.043-.297-.31-.648-.557-.998-.804-.473-.337-.99-.603-1.503-.872a.578.578 0 00-.214-.065l-.384-.04c-.202-.025-.355.09-.355.292 0 .108-.046.132-.135.14-.08.004-.187.115-.196.192a.694.694 0 00.228.619c.444.415.873.845 1.303 1.275l.015.007a.1.1 0 01.028.038c-.007.003-.014.003-.02.003a.057.057 0 01-.035-.022c-.002-.002-.005-.005-.005-.007-.062-.036-.127-.07-.187-.11-.3-.2-.595-.404-.895-.598a.943.943 0 00-.461-.17.453.453 0 00-.392.143.28.28 0 00-.088.253c.016.146.115.237.223.312.502.338.95.734 1.366 1.174.036.038.074.079.115.112.118.096.19.224.262.356.033.06.02.074-.043.074-.428 0-.836.118-1.246.204-.168.036-.334.094-.394.28-.065.21-.096.328.16.392a9.57 9.57 0 011.49.516.55.55 0 01.117.077c.12.104.23.219.362.303.38.247.77.478 1.22.583.053.012.1.039.15.05.05.015.085.044.095.094.029.178.139.279.305.33.02.006.038.02.06.028.052.017.076.055.093.108.067.24.137.478.212.715.026.08.002.1-.07.123-.372.108-.742.22-1.112.334-.132.04-.134.043-.067.163l.908 1.635c.127.23.132.23.365.11.024-.012.057-.053.079-.014.02.036.06.089.024.13-.113.129-.19.28-.286.42-.031.045-.031.074-.005.117.1.166.202.334.3.502.012.019.034.043.03.058l-.123.367a2.538 2.538 0 00-.317-.716c-.18-.288-.41-.542-.62-.811-.033-.04-.072-.077-.11-.115-.2-.207-.456-.332-.7-.478a1.026 1.026 0 00-.34-.127c-.374-.08-.746-.11-1.12.004-.075.024-.116.005-.161-.06-.092-.127-.166-.273-.29-.372-.3-.24-.616-.458-.985-.583a2.95 2.95 0 00-.865-.168 4.267 4.267 0 00-.463.017c-.396.03-.79.074-1.14.293-.07.043-.15.067-.221.108-.36.194-.716.386-1.016.679a13.1 13.1 0 00-.897.944c-.322.384-.565.818-.783 1.267-.015.03-.022.07-.07.096l-.12-.744c-.007-.046.022-.043.053-.038.089.01.175.014.264.026.067.01.103-.005.12-.08.022-.102.046-.206.067-.311.082-.397.2-.78.303-1.17.02-.074.007-.1-.07-.12-.381-.09-.763-.192-1.145-.283-.072-.017-.106-.043-.084-.12.087-.298.125-.61.242-.9a.178.178 0 01.056-.087c.098-.076.17-.165.16-.302-.007-.103.041-.168.14-.214.182-.086.358-.187.53-.288a.84.84 0 00.327-.333c.322-.605.59-1.242.98-1.81.033-.051.06-.106.1-.15.252-.264.488-.544.771-.78.089-.074.113-.175.115-.285 0-.128-.074-.217-.151-.305-.075-.087-.151-.161-.279-.147-.028.003-.057-.01-.088-.014.019-.04.05-.048.076-.065.339-.218.677-.437 1.016-.658.41-.264.819-.53 1.232-.794.052-.034.076-.06.019-.11-.015-.013-.024-.03-.036-.044-.084-.099-.084-.099-.2-.03L8.084 3.693c-.101.062-.101.062-.152-.05-.112-.263-.177-.54-.261-.81-.02-.062-.003-.098.045-.137.289-.23.553-.49.82-.742a.604.604 0 00.186-.37c.022-.17-.09-.259-.244-.196a1.707 1.707 0 00-.221.105c-.68.375-1.405.632-2.149.848-.043.012-.082.026-.118-.02-.074-.09-.185-.14-.278-.208a.073.073 0 00-.063-.015c-.1.027-.204.056-.266.147-.159.233-.358.44-.507.682-.17.28-.333.562-.525.828-.036.05-.05.058-.084-.002L3.63 2.635a2.837 2.837 0 00-.223-.338c-.094-.118-.209-.176-.358-.16-.026.004-.06-.004-.07.037-.02.11-.07.226-.057.332.034.27.082.542.15.806.114.459.244.912.38 1.364.133.444.282.88.426 1.323.012.038.033.072-.02.103-.067.038-.175.058-.187.125-.012.07.05.15.08.225l.007.017c.024.058.036.144.08.166.057.029.11-.05.162-.082.048-.03.065-.021.087.029.124.293.252.583.38.876a.18.18 0 01.006.137 4.138 4.138 0 00-.192.72c-.012.07-.038.07-.09.055a107.637 107.637 0 00-.834-.21c-.123-.032-.123-.032-.137.093v.01c-.06.665-.12 1.33-.183 1.994-.004.06.003.085.068.092.194.024.386.055.578.084.036.005.067.007.058.06-.043.225-.077.453-.125.677a.178.178 0 00.034.163l.2.264c.045.063.08.144.037.209a.201.201 0 00-.033.118c.007.415.007.83.026 1.246.01.2.007.403.012.605.01.535.04 1.068.06 1.603.01.262-.036.52-.024.783.002.065.017.1.084.122.16.05.312.116.473.166a.28.28 0 01.185.156.436.436 0 01.038.219c-.002.072.024.115.082.156.247.177.492.36.74.542.65.48 1.3.963 1.954 1.44.06.045.074.081.038.146-.034.062-.055.135-.089.197-.029.058-.024.094.031.134.082.058.161.123.236.188.065.055.067.141.048.208-.015.05-.087.005-.132 0-.032-.002-.063-.01-.094-.014-.31-.05-.617-.13-.932-.156-.5-.04-1.003-.084-1.51-.07-.026 0-.067-.024-.074.03-.007.042-.017.088.031.117.024.014.05.026.077.036.283.098.547.24.807.39.168.095.333.203.518.268.034.012.068.038.108.002-.278-.22-.554-.442-.833-.665.04-.029.07-.017.1-.014.332.026.664.072.988.15.713.17 1.421.361 2.122.572.23.07.475.104.682.243.05.033.08.067.074.13.012.014.027.033.01.045-.02.012-.036-.012-.05-.024-.164-.014-.327-.026-.488-.043-.463-.046-.924-.11-1.392-.096-.35.01-.701-.015-1.05.01-.494.033-.989.098-1.48.15-.025.003-.063-.002-.063.027 0 .036.014.077.06.087a.58.58 0 00.113.012c.25.01.497.007.746.011.62.015 1.242-.012 1.86.041.224.02.45.01.668.05 1.03.193 2.055.394 3.078.618.12.026.243.045.36.103-.055.05-.127.065-.158.137-.22.506-.363 1.04-.53 1.563-.03.09.03.192.12.216a.278.278 0 00.352-.22c.02-.109.039-.217.053-.328.005-.036.017-.055.053-.067.132-.053.26-.108.393-.16a1.63 1.63 0 00.529-.325c.134-.127.247-.274.25-.47 0-.06.014-.099.062-.135.22-.17.418-.365.61-.564a6.03 6.03 0 01.6-.533c.024-.02.043-.048.08-.034l.56.221c-.374.228-.73.447-1.082.66-.017.01-.036.015-.053.02a.813.813 0 00-.338.201c-.375.372-.567.814-.545 1.35.014.36.22.53.57.45.616-.145 1.14-.734 1.233-1.38.024-.18.052-.357-.077-.513a2.25 2.25 0 00-.178-.195c.02-.012.029-.019.039-.026.777-.463 1.625-.778 2.475-1.07 1.04-.359 2.1-.644 3.164-.918l-.075-.017c-.07.007-.136.015-.206.02a5.097 5.097 0 00-.872.134l-.016.007a.226.226 0 01-.094.015c-.014 0-.03 0-.048.002.065-.062.252-.264.303-.25l.002-.005h.005c0-.007.019-.02.019-.02.017-.03.04-.049.074-.05a.694.694 0 01.197-.189c.05-.03.103-.062.16-.086h-.001c.16 0 .319-.194.486-.262-.001-.006-.01-.01-.013-.017-.24.034-.476.072-.706.16-.492.181-1.001.323-1.481.534-.742.324-1.482.648-2.195 1.035a.818.818 0 01-.077.036l-.055-.504c-.005-.034.012-.048.04-.063.632-.334 1.266-.665 1.926-.938.543-.226 1.08-.47 1.626-.691.002-.005.005-.01.01-.01h.004c.003 0 .003.003.005.003.007.012.002.02-.005.026-.002.003-.005.003-.01.005h-.002a3.358 3.358 0 00-.372.66c.038.01.053-.003.067-.018.113-.12.226-.237.336-.357.214-.234.44-.458.704-.64.017-.012.045-.022.033-.048-.014-.03-.045-.015-.067-.01-.247.05-.494.096-.74.154-.081.019-.076-.01-.08-.067-.001-.197.028-.39.035-.586a.63.63 0 01.058-.247c.098-.226.197-.45.297-.675.05-.113.08-.233.099-.353.03-.192.055-.386.074-.58.03-.3.137-.58.187-.875.065-.374.118-.751.257-1.11.125-.316.245-.633.372-.947.176-.428.399-.833.505-1.29.036-.158.076-.302.004-.458-.04-.084-.052-.18-.081-.271a.392.392 0 01-.012-.204c.048-.245.07-.488-.063-.716-.036-.062.008-.1.044-.14.088-.09.093-.131.016-.23-.088-.11-.175-.223-.27-.326-.08-.084-.154-.175-.234-.262-.055-.033-.05-.055.012-.076.14-.048.276-.108.418-.152.08-.024.1-.07.106-.141.045-.605.09-1.213.139-1.818.007-.084-.007-.1-.094-.074-.454.144-.907.28-1.363.422-.14.044-.142.044-.204-.093-.231-.52-.411-1.057-.6-1.59a.392.392 0 01.007-.316c.067-.188.024-.377.019-.567a.104.104 0 01-.005-.03 9.16 9.16 0 00-.254-1.547 6.02 6.02 0 00-.5-1.27c-.228-.432-.473-.86-.737-1.275-.113-.178-.233-.339-.434-.427A.702.702 0 0016.66 0zm-2.642.26a.364.364 0 01.2.051 19.041 19.041 0 011.469.805c.247.158.482.338.715.52.11.087.192.217.284.33.038.047.012.09-.024.124-.024.024-.058.039-.087.055-.031.022-.072.04-.06.087.01.04.055.05.09.058a.27.27 0 00.16-.015c.168-.07.31.048.418.166.028.03.04.093.093.074.055-.021.063-.081.058-.137-.012-.15-.05-.297-.084-.444-.09-.377-.27-.718-.418-1.073-.053-.127-.11-.254-.163-.382-.03-.07.01-.132.048-.182.03-.04.08-.005.122.014.152.068.238.19.312.332.08.15.178.29.262.436.144.255.322.495.437.762.168.388.382.758.483 1.176.086.37.208.732.252 1.114.016.144-.01.283.007.422.033.279-.008.543-.123.798-.03.07-.021.136.012.208.252.533.46 1.083.67 1.635.027.072.015.1-.06.123-.482.14-.965.288-1.447.434-.07.022-.092.003-.113-.06-.123-.326-.24-.646-.353-.967-.024-.068-.053-.104-.128-.087-.088.022-.136-.017-.175-.096-.062-.127-.113-.28-.216-.36-.103-.08-.266-.082-.403-.115-.103-.027-.207-.058-.312-.075a1.428 1.428 0 01-.612-.273c-.303-.224-.615-.43-.934-.627-.104-.007-.202-.036-.303-.06-.278-.057-.554-.117-.833-.17-.067-.012-.08-.063-.084-.108-.007-.056.007-.11.065-.144.089-.053.19-.063.29-.08a9.69 9.69 0 011.345-.13c.11-.002.209.04.312.066a.18.18 0 00.166-.03c.216-.143.434-.28.65-.422.034-.021.096-.036.07-.093a.083.083 0 00-.015-.022c-.012-.01-.026-.012-.043-.012l-.05.002h-.007a1.159 1.159 0 00-.668.2c-.08.05-.26.019-.31-.056-.34-.516-.823-.888-1.282-1.29-.204-.176-.403-.361-.62-.525-.054-.04-.08-.144-.042-.196.048-.072.11-.041.168-.015.185.082.362.175.528.293.564.403 1.17.744 1.772 1.085a.51.51 0 00.05.027c.092.03.14-.01.125-.106a.267.267 0 00-.062-.134c-.488-.574-1.001-1.124-1.506-1.683-.105-.116-.23-.216-.348-.32a.854.854 0 01-.22-.278.16.16 0 01.023-.19c.04-.045.077-.055.137-.024.17.082.332.178.483.293.266.202.535.403.804.605l.807.603c.02.017.043.033.062.05.05.046.094.094.142.142l.029.029c.019.019.036.045.06.06.055.033.112.062.17.004.02-.02.029-.036.03-.055 0-.007.004-.014 0-.021l-.001-.01a.171.171 0 00-.043-.072l-.18-.187a4.537 4.537 0 00-.312-.298c-.35-.29-.706-.571-1.066-.845-.183-.14-.397-.233-.596-.348-.072-.041-.12-.101-.173-.159a.144.144 0 01-.024-.15c.022-.054.075-.051.12-.056zM8.252 1.649a.045.045 0 01.029.005c.048.027.03.077.03.135.013.06-.026.11-.08.16-.346.322-.707.627-1.076.922-.147.118-.327.173-.49.262-.034.017-.053 0-.072-.024-.12-.154-.238-.31-.358-.463-.045-.055.017-.053.046-.065.254-.091.504-.195.756-.295.365-.144.696-.35 1.04-.533.036-.02.07-.043.105-.063.024-.01.044-.037.07-.041zm-2.619.83a.223.223 0 01.134.064c.072.067.13.144.18.228.173.28.413.506.646.737.163.163.33.32.502.47.057.05.067.127.098.192.012.024.002.043-.02.055-.011.008-.023.013-.03.02-.142.12-.276.103-.442.019a3.182 3.182 0 01-.864-.646c-.01-.01-.02-.017-.03-.024-.114-.086-.12-.082-.17.05-.052.135-.086.274-.146.404-.022.045.012.094.046.127.038.039.064.099.134.089.031-.005.048-.022.055-.055.017-.08.04-.16.06-.257.262.22.553.39.84.583l-.278.159c-.713.4-1.428.8-2.139 1.205-.058.03-.082.038-.106-.034-.273-.847-.56-1.69-.79-2.552-.052-.2-.074-.408-.112-.612-.012-.06.028-.091.067-.113.053-.026.055.036.074.06.377.52.634 1.11.941 1.669.092.168.195.33.293.497.02.03.034.057.082.04.053-.02.043-.052.034-.09-.039-.174-.128-.33-.193-.493a.18.18 0 01.003-.16c.137-.284.33-.531.48-.803.14-.247.317-.468.451-.717a.205.205 0 01.2-.111zm1.774.492c.014.003.024.016.036.042.12.27.201.555.302.83.01.027.012.049-.017.066l-.256.158c-.008.005-.017.007-.046.02-.007-.013-.017-.034-.031-.051l-.54-.62c-.024-.028-.048-.055 0-.081.177-.101.312-.264.499-.35.024-.011.04-.017.053-.014zm1.929.486a.204.204 0 01.14.046.21.21 0 01.08.218.556.556 0 01-.161.29 5.528 5.528 0 00-.882 1.093c-.228.36-.453.718-.624 1.11a.768.768 0 01-.146.206c-.24.273-.526.485-.855.638a.17.17 0 00-.108.159c-.005.06-.024.118-.029.178a.48.48 0 01-.19.38c-.04.032-.045.083-.06.126l-.273.915c0 .007 0 .014-.002.019 0 .014.002.03-.017.038-.04.01-.077-.002-.113-.021a41.397 41.397 0 01-1.33-.334c-.055-.012-.108-.03-.166-.036-.088-.012-.096-.053-.055-.12.058-.281.125-.56.298-.797.038-.053.036-.096.002-.154-.19-.317-.334-.658-.492-.99-.026-.054-.017-.08.034-.11A574.255 574.255 0 006.97 4.706c.045-.03.089-.012.132-.022.151-.034.298-.08.43-.163.01-.007.026-.012.03-.022.097-.213.31-.286.49-.37.411-.187.826-.36 1.189-.633a.18.18 0 01.095-.04zm11.443 3.772v.005l.002-.001c-.021.256-.043.498-.062.74l-.043.535c-.005.065-.024.106-.094.13a561.275 561.275 0 00-3.37 1.17l-.04.009c-.035.005-.054-.012-.08-.055-.217-.394-.438-.785-.661-1.177-.03-.05-.038-.077.034-.096l4.254-1.246c.014-.005.03-.007.06-.014zm-.41.386c-.154.003-.293.147-.286.293.007.137.124.257.254.252.137-.002.27-.153.267-.302-.005-.166-.082-.245-.236-.243zm-16.83.87c.01 0 .024.002.04.007L5.512 9l1.937.51c.062.017.082.036.06.1l-.278.913c-.01.036-.017.074-.058.074a.06.06 0 01-.02-.002l-1.036-.142c-.226-.03-.45-.062-.675-.093a254.996 254.996 0 00-2.055-.286c-.043-.012-.058-.038-.05-.098.052-.476.103-.951.153-1.43.003-.011.002-.02.005-.03a.035.035 0 00.005-.015c.007-.014.021-.02.038-.02zm8.136.103l.113.002c.197.01.389.086.569.166.08.036.159.07.238.108l.057.029c.058.028.118.057.173.09l.113.065c.036.025.075.046.108.073.072.05.142.105.207.165.218.202.372.44.463.72.065.202.113.409.13.617.016.202-.044.399-.096.593-.008.03-.02.036-.03.034-.014-.005-.021-.022-.033-.036l-.216-.25a2.105 2.105 0 00-1.042-.684 4.159 4.159 0 00-.994-.154 3.799 3.799 0 00-.804.092c-.211.04-.423.074-.631.113-.137.024-.262.086-.387.14-.06.028-.12.054-.18.077l-.02.004c-.376.132-.695.36-1.024.57-.09.06-.165.14-.243.218l-.01.008-.064.065c-.152.147-.3.296-.464.43-.074.103-.175.175-.268.266.024-.17.07-.328.146-.472a4.6 4.6 0 01.262-.435c.048-.07.096-.14.146-.206a7.17 7.17 0 01.315-.396c.081-.097.163-.193.247-.29l.25-.284a.917.917 0 01.115-.1l.026-.03c.078-.066.147-.136.238-.21l.012-.01.067-.061c.24-.228.519-.406.797-.583.028-.02.057-.035.086-.051l.111-.048c.01-.004.02-.01.029-.012a2.78 2.78 0 01.173-.065l.117-.036c.14-.04.279-.074.416-.117a2.45 2.45 0 01.782-.115zm-7.57.449c-.07.004-.153-.003-.215.057a.462.462 0 00.012.665.286.286 0 00.38 0c.145-.127.182-.314.095-.535-.053-.137-.125-.187-.27-.187zm15.846.062c.087-.001.163.053.23.146.014.01.029.02.043.032.022.019.03.04.053.064.099.113.207.224.31.334a.064.064 0 01.014.024.023.023 0 01-.002.022.04.04 0 01-.015.014l-.01.015-.002.002c-.002.002-.002.005-.004.01 0 .002-.003.004-.003.004h.003v.008c-.145.146-.106.283.01.415.006.012.014.024.014.036.096.127.016.254 0 .382-.003.012-.005.016-.015.02l-.007.004a.116.116 0 01-.03-.005l-.01-.003a9.772 9.772 0 01-.251-.077c-.007 0-.012-.004-.02-.007-.006 0-.011-.007-.018-.007a.284.284 0 01-.118-.02.252.252 0 00-.292.05.054.054 0 01-.005.02c.04.06.108.075.168.094.245.08.453.23.68.348.052.03.062.092.057.152-.003.033-.012.067-.02.103l-.072.31a.127.127 0 01-.02.076c.004.168-.114.293-.17.437-.006.012-.011.017-.02.04a3.223 3.223 0 01-.128.299c0 .007-.01.017-.012.024v-.005c0 .002-.002.002-.002.005l-.005.01c-.003.002-.003.004-.005.007-.012.045-.02.093-.058.132a1.913 1.913 0 01-.187.432c-.007.012-.012.012-.017.036-.062.144-.127.317-.19.475-.014.058-.026.115-.04.17l-.008.015c0 .002-.002.002-.002.005 0 .005-.005.01-.007.014a.45.45 0 01-.036.192c-.012.039-.022.082-.034.12a.074.074 0 01-.005.02l-.201.912c-.055.25-.077.504-.118.754-.038.235-.048.477-.106.708-.04.168-.136.324-.213.48-.072.146-.118.302-.207.444l-.007.015a.169.169 0 00-.012.03c-.002.006-.002.013-.005.018l-.007.033a.182.182 0 00-.002.036c0 .012 0 .024-.003.036v.036a.71.71 0 01-.002.072c-.02.257-.053.514-.041.773.002.048-.012.075-.058.09l-.057.023a1.598 1.598 0 00-.113.048l-.06.024c-.031.012-.05.022-.1.034v-.005s-.006.005-.01.005l-.133.055-.093.038a.635.635 0 01-.211.092l-.036.02a25.181 25.181 0 00-.474.212c-.081.024-.165.072-.247.11-.09.04-.175.075-.264.114-.14.062-.278.12-.418.181-.004.002-.012 0-.016 0-.128.048-.26.118-.38.173-.048.026-.117.053-.177.077-.11.043-.135.038-.16-.075-.071-.052-.078-.14-.104-.216-.027-.072-.048-.15-.072-.222-.005-.024-.017-.02-.017-.034-.024-.033-.024-.064-.036-.098l-.003-.017c-.007-.005-.007-.012-.01-.02l-.006-.016h.004c-.033-.1-.07-.2-.093-.3-.024-.067-.067-.132-.08-.202a.17.17 0 010-.07l.008-.033.004-.017c.02-.047.05-.093.075-.14.017-.037.03-.076.048-.114.017-.038.03-.067.048-.115.038-.072.062-.156.11-.24 0-.02.015-.04.02-.058.043-.146.09-.295.149-.437 0-.005-.005-.012-.003-.017.017-.086.098-.117.146-.168v.003c.024-.008.037-.022.049-.022.014-.024.028-.034.043-.048a1.518 1.518 0 00.108-.15c.045-.066.086-.136.137-.203.016-.021.03-.055.057-.055.005 0 .007 0 .012.002.039.01.027.055.022.084a.88.88 0 000 .327c.012.084.026.168.033.252l-.002.038a.578.578 0 01.036.19c.02.082.036.16.06.242.072.15.125.3.173.454l.005-.002c.08.12.163.26.245.39.024.032.05.066.074.09h.005v.02c.024 0 .036.052.072.004-.007-.024-.012-.024-.02-.024a.448.448 0 01-.03-.08c-.005-.016-.013-.035-.015-.05a.387.387 0 01-.012-.05c-.002-.007-.002-.017-.005-.024a.282.282 0 00-.01-.048l-.011-.075-.013-.074c-.007-.007-.007-.017-.007-.026-.002-.01-.004-.02-.01-.03-.002-.028-.007-.057-.011-.086l-.022-.172c-.002-.03-.012-.058-.014-.087a3.634 3.634 0 01.036-.941h.014c.029-.144.058-.31.086-.466.008 0 .015.003.024.003-.01.26.017.52.075.775.002.005.002.012.002.017.036.098.075.197.106.298.007.02.014.043.022.062a.338.338 0 00.055.094c.007.012.02.024.02.036.025.019.037.04.057.06.014.016.026.036.04.053.05.048.104.093.166.156a3.667 3.667 0 01-.017-.14c-.004-.043-.012-.086-.016-.134 0 0-.013-.007-.013-.012a.82.82 0 00-.01-.108l-.04-.33c0-.01 0-.016.002-.025 0-.01.003-.027.003-.027a2.705 2.705 0 01-.02-.415l-.002-.017a1.122 1.122 0 01-.002-.37c.005-.033.002-.07.005-.103 0-.007-.003-.012-.003-.02 0-.158.007-.32.055-.472l.003-.017c.012-.072.024-.158.036-.238.012-.08.024-.16.033-.24.005-.033.015-.05.034-.05.01 0 .024.005.04.017l.05.03.076.049c.024.017.048.033.07.055.002.002.004.005.009.007a.116.116 0 00.017.012h.005v-.002c.168.084.26.226.374.358a.31.31 0 01.11.15c.075.099.13.205.169.323.002.01.007.02.01.03.002.01.007.006.009.03.02.024.03.055.043.084l.034.084.019.04c.005.01.01.017.017.024a.07.07 0 00.04.024c.027-.088-.035-.172-.011-.256h.007c0-.024-.007-.025-.007-.037-.024-.156-.044-.31-.11-.453l-.001-.04c-.058-.143-.086-.29-.17-.416a.103.103 0 01-.037-.063c-.026-.024-.04-.053-.055-.081a4.135 4.135 0 01-.038-.063v.017c0-.002-.005-.005-.005-.007v-.003a2.828 2.828 0 00-.22-.278l-.01-.01c-.01-.01-.02-.01-.03-.033-.057-.024-.112-.096-.17-.147-.007-.007-.014-.01-.02-.017-.004-.004 0-.01-.023-.016-.12-.082-.21-.183-.314-.255-.02-.024-.044-.01-.053-.048.31-.02.61.017.922.036v-.012h.002c.154.024.298.053.437.113.005 0 .01.007.017.007v.005c.096.022.187.065.278.108.02.01.044.04.065.012.017-.024-.01-.046-.024-.065-.036-.05-.07-.1-.108-.151-.007-.012-.02-.024-.02-.036-.071-.07-.126-.15-.19-.22a.953.953 0 01-.06-.063 1.162 1.162 0 01-.208-.17c-.012-.008-.024-.022-.036-.022-.03 0-.064-.034-.096-.056-.03-.021-.064-.04-.096-.062-.012-.007-.024-.012-.036-.02-.146-.055-.293-.105-.44-.16-.004 0-.013-.003-.013-.005 0 0-.013 0-.017-.002a.11.11 0 01-.072-.03.079.079 0 01-.027-.035l-.005-.012c-.007-.02-.01-.041-.007-.063a.968.968 0 00-.012-.22c-.002-.022-.007-.041-.012-.063a2.158 2.158 0 00-.014-.06l-.015-.062a2.29 2.29 0 00-.024-.09s-.01-.002-.01-.01c-.023-.145-.08-.292-.124-.436l-.017-.057a.369.369 0 01-.057-.168c0-.02 0-.036.002-.056l.002-.026c.005-.027.01-.055.02-.082l.033-.108c0-.005 0-.017.003-.017h-.003c.03-.17.099-.314.147-.468 0-.002.005-.002.005-.005l.01-.01c.002-.002.004-.002.004-.004a.265.265 0 00.053-.185.326.326 0 00-.027-.103c-.016-.043-.038-.084-.06-.127-.002-.005-.01-.01-.014-.012-.002-.003-.005-.005-.005-.008a1.196 1.196 0 01-.21-.355l-.015-.038c-.005-.005-.005-.01-.008-.017l-.002-.007a.12.12 0 01-.007-.017l.002.002-.002-.005a.276.276 0 01.012-.043c.004-.01.01-.017.014-.026.005-.007.012-.014.02-.022l.009-.007c.065-.094.125-.192.197-.283a.26.26 0 00.05-.252c-.04-.137-.036-.14.1-.19.025-.01.316-.12.433-.156l.075-.03.019-.006a41.644 41.644 0 01.509-.19c.005-.002.012-.002.017-.002.14-.072.293-.118.44-.168.02-.007.037-.015.06-.02.025-.02.097-.035.12-.055.12-.038.217-.093.325-.117a.287.287 0 01.167-.067zm-5.432.603a.82.82 0 01.23.036l.014.004c.259.08.523.142.77.26.04.019.084.038.113.077.16.115.307.247.43.405.19.245.38.492.557.773-.011-.003-.022-.008-.034-.013v-.001a1.018 1.018 0 01-.185-.103 6.452 6.452 0 00-.674-.356 1.467 1.467 0 00-.331-.1 3.307 3.307 0 00-.91-.041c-.084.007-.17 0-.255 0-.062 0-.091-.03-.091-.092 0-.235.012-.472-.06-.7-.015-.048.014-.068.055-.082a1.12 1.12 0 01.372-.067zm-2.75.773c.423-.015.812.105 1.167.324.132.08.253.176.363.284l.014.013c.122.123.23.26.32.41.08.13.059.272.032.414-.072.406-.316.706-.592.987-.265.269-.596.444-.903.648-.435.29-.932.403-1.438.478-.632.093-1.273.103-1.906.187-.23.029-.464.048-.694.089a1.07 1.07 0 00-.68.41c-.062.084-.1.187-.16.303a.527.527 0 01.026-.394 1.12 1.12 0 01.533-.54c.415-.22.879-.262 1.323-.375.36-.091.73-.144 1.087-.242a7.234 7.234 0 001.426-.55c.24-.125.49-.252.656-.485a.73.73 0 00.12-.557c-.005-.034-.015-.05-.027-.053-.012-.002-.03.007-.05.027-.18.16-.367.314-.571.449-.32.206-.673.33-1.038.42-.58.144-1.166.266-1.764.31a4.84 4.84 0 00-1.239.242c-.34.118-.687.235-.96.49-.034.03-.075.057-.13.098l.007-.038-.026.019v-.005c.01-.006.016-.013.024-.017a.599.599 0 01.084-.2l.646-1.022a.285.285 0 01.041-.053c.334-.33.653-.677 1.023-.965.614-.48 1.284-.855 2.055-1.02.187-.041.377-.07.57-.07.22-.002.443-.01.66-.017zm-7.632.022c.013 0 .03.002.048.009.03.01.062.007.094.01.127.028.26.03.386.062.012 0 .017.002.034.01a2.174 2.174 0 01.4.057c.145.02.29.036.433.06.033 0 .062-.002.093.017.005 0 .012-.002.012 0 .168.02.3.03.445.055h-.015v.005c.096.012.16.024.233.036.077.012.156.03.23.03h.003c.007 0 .012.004.017.004l.021.005c.048.002.067.028.075.07.038.227.07.455.117.683 0 .017.01.032.008.046l.02.11.061.332c0 .01 0 .03.003.036v.01c.024.143.05.273.074.41v.046a1.717 1.717 0 00-.3.46c-.03.075-.07.152-.1.226l-.006.003c-.024.076-.062.15-.098.223-.003 0-.005.005-.007.01-.005.009-.008.024-.012.03v.003a2.478 2.478 0 01-.192.415c-.008.02-.024.039-.024.056-.024.09-.046.182-.092.266a.757.757 0 01-.074.226 2.102 2.102 0 01-.13.394c-.007.019-.019.036-.019.055l-.002.007c-.003.007-.005.02-.01.029a.106.106 0 01-.01.03l-.002.01-.038.742.021.008.094-.185c.031-.06.055-.123.09-.185.018-.043.05-.086.05-.13.071-.12.136-.24.21-.35.008-.012.022-.02.03-.043.062-.097.134-.224.208-.334.026-.043.054-.08.078-.123.016-.048.042-.055.064-.076.021-.022.033-.044.081-.065 0 .019.005.036.003.053l-.003.01c0 .009-.004.018-.007.028l-.002.01c-.003.007-.003.012-.005.019a.054.054 0 00-.002.02c0 .006-.005.01-.003.018l-.003.015h.003c-.022.144-.02.307-.024.458 0 .007-.005.02-.005.024l.005-.002c.02.144.043.288.062.432h-.002c.003 0 .005.03.005.043.024.144.055.29.072.437l.002.017c.003.01.005.017.005.026.024.116.11.195.163.296.039.055.08.12.116.168h.002v.002c.12.106.22.214.355.31.02 0 .039.024.058.024h-.002v.012c.048.005.088.043.139.029a.087.087 0 00.026-.012c.007-.005.017-.01.02-.017.011-.022-.01-.034-.027-.041-.197-.125-.166-.33-.19-.521h.008v-.003c.048.046.081.09.122.14a.1.1 0 00.024.026l.05.055c.034.036.07.07.108.1.039.032.08.066.125.09.02.007.039.024.056.024h-.005c.144.07.269.137.4.206a.15.15 0 01.08.036c.048.144.105.288.091.456.005 0 .01.017.012.03a.066.066 0 01-.002.03c.017.14.017.28-.003.42a.044.044 0 01-.002.039c-.003.005 0 .007-.002.012h.002c0 .14-.002.278-.038.415-.003.137-.046.27-.06.406 0 .005-.003.01-.005.017-.008.026-.02.057.038.05v-.002c.13-.136.26-.267.38-.418v.01c.002-.048.03-.073.057-.096.05-.05.1-.13.151-.2.05-.07.101-.137.152-.206l.002-.012c.007-.024.017-.04.029-.046.005-.002.01-.005.014-.005H9.3a.133.133 0 01.05.02.835.835 0 01.077.048c.144.079.307.132.415.269.012.012.026.014.038.038.05.024.096.08.133.132l.038.036c.002.002.005.002.007.005.19.16.204.246.067.46-.004.007-.012.014-.016.014a.236.236 0 01-.024.055.216.216 0 01-.02.036l-.01.017c-.035.058-.074.118-.088.185a.443.443 0 00-.012.168c.026.094.05.19.07.286.012.057.024.115.028.175.02.142-.048.228-.168.288v-.002c-.024.002-.026.017-.038.024a.078.078 0 01-.02.014.362.362 0 01-.038.026.192.192 0 00-.077.087c0 .007 0 .005-.002.01-.002.004 0 .014-.002.014h.007v.014c-.024.07-.036.12-.048.156-.003.01-.007.017-.01.024-.002.008-.007.012-.01.017-.002.005-.007.01-.009.012a.045.045 0 01-.024.012h-.007a.165.165 0 01-.05-.012c-.034-.012-.078-.029-.138-.048-.004-.002-.009-.002-.011-.005a.025.025 0 00-.012-.004l-.027-.012h-.01v-.01h-.002c-.072-.024-.14-.038-.204-.065-.038-.014-.08-.026-.12-.043-.05-.012-.1-.036-.151-.036-.14-.048-.281-.072-.416-.12-.011 0-.019.002-.043 0v.002c-.096-.019-.173-.043-.264-.06-.089-.014-.122-.06-.113-.148.005-.037.003-.08.003-.116 0-.012-.003-.017-.003-.04-.014-.025-.036-.053-.055-.085a.11.11 0 01-.014-.026c-.012-.012-.036-.024-.036-.038-.024-.005-.015-.01-.022-.015-.074-.07-.053-.163-.043-.252l.002-.029.008-.055c.002-.01.002-.02.004-.026.039-.15.048-.29-.113-.38-.019-.012-.03-.024-.055-.04v.004a2.869 2.869 0 00-.225-.165c-.012-.024-.015-.029-.039-.039a1.418 1.418 0 01-.31-.227l-.074-.04h.01c-.015-.025-.032-.022-.044-.034-.019-.014-.036-.024-.06-.04-.12-.102-.283-.198-.413-.315-.045-.015-.074-.05-.11-.08v-.004c-.127-.09-.252-.176-.377-.272h.003c-.015 0-.015-.012-.039-.024-.072-.036-.144-.096-.206-.144-.02-.024-.039-.024-.058-.024-.058-.048-.108-.07-.156-.113-.02-.012-.036-.026-.06-.04a2.178 2.178 0 01-.396-.29l-.012-.011-.022-.024a.188.188 0 01-.038-.081v.019c-.087-.094-.144-.202-.216-.3l-.007-.015a.027.027 0 01-.005-.014.107.107 0 01-.003-.026.118.118 0 01.024-.053c0-.005.003-.012.003-.02.024-.153.108-.292.168-.436v-.037s0-.022-.003-.032l-.004-.014-.005-.005a.038.038 0 00-.017-.01h-.007a.122.122 0 00-.058.022.312.312 0 00-.055.043l-.02.015a.13.13 0 00-.014.019l-.007.01c0 .002-.002 0-.002 0 0 .002-.003 0-.003 0v.002c-.048.055-.12.103-.182.154-.012.012-.034.026-.034.038v-.002h-.007c-.02.024-.045.024-.072.012l-.31-.137c-.024-.012-.036-.038-.04-.062a.64.64 0 01-.008-.032l-.007-.026v.005c-.036-.168.022-.293.053-.437.002-.012.005-.024.005-.036.024-.14.033-.288.074-.423v-.062c-.02-.154-.022-.305-.033-.46l.002-.078c-.014-.286-.033-.571-.043-.857-.022-.598-.07-1.193-.053-1.79a.636.636 0 00-.074-.315 1.968 1.968 0 00-.099-.164.264.264 0 01-.048-.237c.036-.14.063-.284.09-.425.008-.05.021-.084.06-.086zm-.166.38l.005.015c.005.032-.007.065-.02.113a.117.117 0 010-.086.295.295 0 01.015-.041zm10.715.003c.13-.002.257.005.38.024.22.017.42.058.55.164.095.04.189.09.28.144.22.132.44.269.662.403a.389.389 0 01.118.108l.223.315c.012.016.03.036.015.057a.038.038 0 01-.02.014c-.018.004-.034-.002-.05-.011-.098-.056-.2-.108-.298-.164a4.76 4.76 0 00-1.184-.46c-.107-.03-.208-.06-.323-.075l-.152-.034c-.004.003.005.012.017.024.005.005.01.01.012.015a.138.138 0 00.04.033l.02.01c.228.115.613.187.893.317l.058.029c.156.08.298.182.44.29l.268.207c.404.293.65.689.77 1.169.003.014.008.029.01.043l.01.014c.02.03.024.065.017.096.002.008.002.015.005.022-.005.07-.06.04-.092.04a2.504 2.504 0 01-.61-.11h-.006c-.051-.016-.118-.04-.165-.054-.211-.075-.41-.163-.615-.238-.252-.09-.45-.261-.662-.413a7.777 7.777 0 01-1.001-.816.34.34 0 01-.08-.106 4.11 4.11 0 01-.062-.153l-.036-.094a1.088 1.088 0 00-.024-.06l-.002-.005c-.003-.002-.003-.007-.003-.01v-.002l-.002-.01a.168.168 0 01.007-.122c.002-.005.002-.01.005-.014l.005-.017.004-.014c.003-.005.003-.013.005-.017l.003-.015.002-.017.003-.014.002-.017.002-.014.003-.017.002-.014.003-.017c0-.005 0-.01.002-.015 0-.004 0-.012.003-.016v-.266c-.003-.082.026-.114.108-.111.08.002.162-.001.243-.005l.075.004c.04-.002.08-.005.122-.005zm.284.532a.12.12 0 00.028.008H15c-.012.008-.028.005-.033.02-.004-.02-.002-.027.003-.028zm.88.342a.206.206 0 00.012.006h.003zm-1.908.177l.002.003c.007.003.014.01.022.024.076.154.182.28.3.399.124.12.259.23.389.348.268.242.542.48.818.713.178.15.392.228.62.288.518.132 1.049.182 1.575.254.139.02.264.065.374.156h-.007c.01.008.017.012.024.02-.296-.043-.59-.04-.886-.046-.324-.007-.641.03-.96.067a.986.986 0 01-.336-.026c-.308-.07-.598-.195-.89-.317-.328-.14-.601-.353-.861-.588l-.057-.055a1.002 1.002 0 01-.205-.285l-.002-.006c-.09-.212-.085-.448-.016-.708.019-.07.04-.14.062-.21.007-.022.02-.034.034-.031zm-.248 1.18c.065.233.233.396.375.573l.029.039.028.038a.57.57 0 00.106.094c.017.012.03.02.046.033l.02.017a10.088 10.088 0 00.539.396l.329.229c.149.103.305.19.468.266.04.02.082.036.123.055.124.053.25.099.379.14l.02.007c.08.02.167.028.25.038.032.002.064.007.092.01a.195.195 0 01.06.024.411.411 0 01.068.05c.074.067.144.163.148.22 0 .01 0 .018-.002.025-.002.005-.002.007-.005.01-.01.016-.024.03-.033.048-.03.05-.06.1-.085.153l-.011.027a.311.311 0 00.002.26c.115-.114.218-.236.293-.376a1.139 1.139 0 00.086-.201c.01-.027.003-.058.01-.084.01-.03-.024-.07-.01-.09 0-.001.003-.001.005-.004a.04.04 0 01.014-.007c.01-.002.02-.005.027-.005.019-.002.036-.005.055-.005.048 0 .094.008.14.022.028.01.019.045.016.072v.005c-.005.086-.04.165-.072.242a.554.554 0 01-.024.055 1.68 1.68 0 01-.192.375c-.118.156-.254.302-.475.31h-.063c-.038 0-.077.01-.115.012a.085.085 0 00-.086.057c-.017.039-.04.072-.058.11l-.007.017a1.534 1.534 0 01-.408.57c-.08.07-.164.139-.25.203a1.95 1.95 0 01-.468.224l-.036.014-.034.015-.02.007c-.01.002-.021.007-.03.01-.036.014-.065.035-.046.09.02.06.063.077.118.08.012 0 .026 0 .04-.003a.613.613 0 00.15-.033c.048-.017.096-.04.146-.06.034-.015.067-.03.103-.041-.03.122-.045.235-.084.34l-.021.054a6.794 6.794 0 01-.09.192c-.018.043-.04.084-.062.125-.115.23-.245.45-.405.655a1.682 1.682 0 01-.356.34 3.954 3.954 0 01-.103.073 2.788 2.788 0 01-.38.205l-.064.03-.053.02-.043.018c-.04.016-.082.03-.123.045a2.674 2.674 0 01-.168.053 4.848 4.848 0 01-.57.134c-.008 0-.013.003-.02.003-.055.01-.108.017-.163.026-.058.008-.116.017-.176.024a2.156 2.156 0 01-.605-.02l-.028-.008a.68.68 0 01-.145-.06c-.062-.034-.12-.07-.182-.1a1.728 1.728 0 01-.13-.073 1.868 1.868 0 01-.16-.106.632.632 0 01-.233-.278 1.794 1.794 0 00-.092-.194c-.01-.02-.021-.036-.03-.053a2.718 2.718 0 00-.277-.367 2.76 2.76 0 00-.125-.142c-.021-.024-.04-.048-.062-.07a7.07 7.07 0 00-.26-.276l-.067-.067a2.787 2.787 0 00-.364-.302 2.784 2.784 0 00-.303-.192l-.06-.04a1.58 1.58 0 01-.63-.761c-.043-.093-.107-.122-.22-.124a.63.63 0 01-.252-.048l-.002-.002a.457.457 0 01-.132-.084l-.026-.016c-.022-.026-.038-.058-.058-.09a5.295 5.295 0 01-.386-.658c0 .003.002.005.003.008l-.006-.013.003.005a3.772 3.772 0 00-.073-.196l-.036-.086a.382.382 0 01-.014-.154l.007-.031c.002-.005.002-.01.005-.015a.145.145 0 01.012-.03.46.46 0 01.127-.14.898.898 0 01.067-.05c.046-.034.094-.063.14-.094.071-.044.143-.084.218-.123.271-.14.56-.238.857-.314.017-.005.033-.008.053-.012.033-.008.07-.01.105-.015.036-.002.072-.005.106-.005l.106-.002c.016 0 .036 0 .052-.002a17.864 17.864 0 00.9-.063c.18-.017.36-.036.54-.055a3.504 3.504 0 001.127-.324c.036-.02.074-.036.11-.055l.063-.034c.144-.077.288-.151.427-.233.014-.02.03-.026.055-.033l.01-.003v.012a.06.06 0 01-.02.034l-.021.014c-.14.178-.331.3-.497.45a.415.415 0 00-.05.045c-.053.043-.106.089-.166.137.209 0 .41-.024.598-.08a1.654 1.654 0 00.869-.6c.103-.137.197-.297.278-.482zm-3.265.016a1.244 1.244 0 01-.343.109c-.56.139-1.13.22-1.697.326a2.603 2.603 0 00-1.105.487c-.019.015-.04.032-.062.043-.026.017-.039.013-.043-.01-.003-.004-.003-.011-.003-.018-.01-.144.034-.214.166-.274.18-.082.36-.168.54-.252.235-.108.487-.142.742-.168.396-.043.792-.094 1.19-.14l.524-.086zm2.386 1.245h-.026c-.038.01-.036.05-.036.08.003.1.007.202.02.303.01.11.047.219.112.307a.842.842 0 00.51.334c.155.036.155.038.17.2.007.069.016.13.08.17.114.067.227.137.364.146.084.007.17.012.242.068a.583.583 0 00.32.098c.084.007.17.01.254.024.067.012.113-.01.16-.05.239-.197.474-.397.697-.617-.026-.03-.065-.04-.118-.012a6.25 6.25 0 00-.415.223.315.315 0 01-.113.048 4.032 4.032 0 01-.722.074.68.68 0 01-.368-.13c-.067-.043-.134-.105-.146-.201.036-.012.07.002.103.007.127.017.252.063.382.055.312-.02.605-.113.898-.213l.283-.103c.043-.015.055-.03.017-.07-.046-.05-.096-.04-.147-.034a5.625 5.625 0 01-1.87-.045c-.18-.034-.372-.046-.442-.27-.02-.06-.038-.12-.05-.182a.37.37 0 00-.094-.17.094.094 0 00-.065-.04zm-.573.065c-.048 0-.08.05-.103.093-.06.103-.137.196-.207.292-.108.147-.26.178-.418.154a17.985 17.985 0 00-1.718-.18c-.03-.002-.058-.01-.082.01-.183.134-.367.264-.483.468.007.002.015.007.02.007.019-.002.035-.007.055-.01.297-.074.607-.098.922-.072.398.034.792.113 1.188.168.053.008.106.01.156.036.12.063.18.173.226.29.07.18.09.373.103.565.01.15-.022.278-.144.38a.556.556 0 00-.2.278c.154 0 .286.026.387.156.063.08.144.149.223.218a.379.379 0 00.586-.081c.058-.094.113-.19.175-.281.087-.127.17-.264.325-.32.093-.03.052-.076.02-.115-.061-.08-.177-.081-.28-.02-.16.097-.266.239-.381.376-.034.04-.068.08-.113.115-.058.04-.108.043-.16-.01-.056-.057-.114-.117-.176-.168-.053-.043-.063-.082-.032-.144a.728.728 0 00.082-.413c-.03-.312-.08-.62-.3-.867-.024-.026-.024-.04.01-.064a.94.94 0 00.408-.701c.007-.075-.007-.135-.067-.156a.075.075 0 00-.022-.004zm4.46.035c.206 0 .388.08.567.182-.005 0-.007 0-.012.003l.03.017c-.27.04-.54.06-.81.03-.084-.01-.168-.026-.255-.023-.17.005-.307-.084-.451-.161h.017c-.012-.007-.024-.012-.036-.02.024.003.05.003.074.005.029.003.055.01.084.015.238.05.468-.02.704-.043a.8.8 0 01.089-.005zm-8.689.714a.045.045 0 00-.016.004c-.05.019-.098.048-.112.115-.048.223.055.437.278.552.1.053.178.127.226.23.016.037.019.106.072.094.052-.012.01-.077.021-.103.008-.135-.019-.25-.127-.32-.08-.05-.11-.12-.14-.201-.038-.106-.047-.223-.134-.307-.02-.021-.036-.064-.069-.064zm1.843.354c-.11.027-.236.053-.353.106-.082.038-.087.084-.015.139.043.034.087.05.14.03a.466.466 0 01.494.097.509.509 0 00.523.087c.106-.036.197-.096.293-.15a.319.319 0 01.113-.04c.144-.014.288-.033.43-.053.038-.005.098.01.108-.036.01-.048-.046-.077-.08-.108-.016-.017-.045-.02-.07-.026a.82.82 0 00-.436-.015 2.092 2.092 0 01-.888 0c-.08-.02-.163-.02-.26-.03zm6.903.889c.006 0 .01.003.015.007a.05.05 0 01.012.014l.008.005c.043.034-.007.11-.02.168-.03.168-.057.334-.086.502-.007.048-.012.098-.048.165l-.007-.043-.012.024a5.307 5.307 0 01-.075-.706c-.002-.053.034-.065.068-.077.048-.016.107-.066.145-.06zm-3.22.902a.08.08 0 00-.022.01c-.19.105-.404.11-.613.137-.088.012-.2-.015-.264.05-.158.156-.293.09-.432-.02-.007-.004-.014-.011-.024-.014-.206-.11-.413-.15-.624-.005a.338.338 0 01-.267.068c-.074-.02-.131-.015-.19.038-.028.027-.066.048-.1.07-.094.062-.094.072-.007.14.02.018.043.025.067.033.2.06.387.016.562-.08.182-.098.353-.093.518.032.152.112.312.115.48.045a2.97 2.97 0 01.653-.213c.034-.005.068-.017.099.01.096.088.187.026.279-.01.036-.015.04-.044.038-.08-.007-.076-.065-.12-.098-.18-.015-.025-.032-.035-.054-.03zm-4.717.07c.009 0 .02.006.032.017.039.036.075.074.113.11l.015.014c.019.017.021.039.012.06l-.224.45-.024-.008c0-.005.003-.007.003-.012.048-.197.029-.4.055-.6.002-.02.009-.03.018-.03zm3.9.588c-.238.007-.48.046-.703.122-.185.063-.392.106-.488.32-.055.124-.048.256-.086.38.017.1.017.197.074.281.017.024.024.063.065.06.043-.002.058-.038.07-.067.043-.09.053-.194.08-.29.047-.156.119-.28.282-.35.17-.072.343-.14.516-.206a.184.184 0 01.1-.012c.215.03.438.02.628.146a.079.079 0 00.062.012c.072-.017.08-.04.036-.098a.723.723 0 00-.636-.298zm-2.218.741l.014.017c.094.117.187.218.25.336.15.29.374.501.662.655.135.072.256.172.414.19l.003.001h.018c.017 0 .04-.004.036.023-.003.014-.017.014-.031.012h-.007c-.005 0-.01 0-.015-.003-.167.005-.33.033-.493.067-.085.018-.17.038-.255.058a7.838 7.838 0 01-.243.055h-.003c-.033.008-.048.024-.043.058.005.04.02.062.067.072a1.305 1.305 0 00.274.017c.118-.003.235-.015.353-.034a2.602 2.602 0 01.778-.002c-.43.07-.785.312-1.174.475-.202.084-.358.245-.55.348-.014.017-.022.044-.036.06-.031.04-.036.118-.087.11h-.004c-.005 0-.01.003-.015 0a.623.623 0 01-.266-.086c-.03-.019-.022-.055-.022-.089v-.453c0-.032.012-.067-.019-.09-.106-.066-.08-.182-.106-.278-.01-.038.017-.057.039-.08l.278-.31c.063-.068.089-.143.043-.224-.086-.163-.072-.32-.002-.485.055-.13.091-.267.142-.42zm4.585.177c.005.003.01.005.012.008l.007-.008c.039.022.04.05.05.075.102.247.2.497.3.744.025.055.03.103-.006.15a.502.502 0 00-.077.49c.067.205.019.347-.183.448a.229.229 0 01-.12.036.124.124 0 01-.088-.03c-.375-.259-.821-.345-1.242-.494-.06-.02-.117-.043-.18-.057-.072-.017-.067-.065-.057-.116.007-.036.026-.04.045-.038.02-.005.046.01.063.014.48.12.965.216 1.428.396.017.008.03.01.043.013.034-.005.044-.037.039-.082-.01-.108-.02-.214-.144-.27a2.8 2.8 0 00-.975-.234c-.05-.005-.098-.007-.15-.01.239-.144.5-.22.714-.406a.999.999 0 00.075-.067l.398-.482zm-1.882 1.133h.02c.03-.002.054.005.057.053 0 .044.01.082-.06.092a1.752 1.752 0 01-.274.021c-.094 0-.185-.01-.278-.03-.05-.013-.07-.047-.065-.087.002-.027.02-.027.04-.027a.103.103 0 01.039.003h.18a1.143 1.143 0 00.34-.024zm.036.396c.006 0 .012.002.02.005l.844.35c-.132.11-.254.207-.374.303-.221.178-.44.358-.646.553-.05.048-.09.05-.147.014a9.33 9.33 0 00-1.097-.545c-.165-.07-.34-.098-.511-.158.02-.036.055-.036.084-.046.367-.137.742-.26 1.102-.42.094-.043.187-.007.278.005.137.02.27.021.394-.046a.092.092 0 01.053-.015zm-2.161.698a.27.27 0 01.082.018c.197.077.38.185.569.274a.04.04 0 01.029.01c.004.002.005.004.005.011v.005c0 .003-.003.003-.003.005-.002.003-.005.003-.007.003l-.01-.003a.03.03 0 01-.012-.012l-.862-.214c.074-.059.133-.1.209-.097zm8.17.535c-.142-.004-.26.062-.372.15-.03.022-.046.048-.094.017-.105-.072-.206-.053-.295.04a.402.402 0 00-.103.186c-.125.504-.252 1.006-.372 1.512-.041.17.048.255.223.23.158-.026.238-.117.264-.32.026-.198.053-.392.11-.596.15.187.29.362.433.538.139.17.29.321.494.412.144.065.269.027.382-.074a.186.186 0 00.055-.206.157.157 0 00-.158-.125.246.246 0 01-.152-.07 2.27 2.27 0 01-.362-.396c-.09-.12-.094-.12.026-.202.252-.173.34-.417.322-.71-.014-.219-.132-.346-.34-.38a.454.454 0 00-.061-.006zm-10.733.03c-.04 0-.077.02-.097.075-.019.05-.053.043-.091.038a.751.751 0 00-.665.22c-.38.37-.574.813-.552 1.353.014.358.22.53.569.451.689-.16 1.224-.835 1.253-1.582.007-.192-.168-.47-.34-.538a.214.214 0 00-.077-.016zm-1.93.058a.943.943 0 00-.613.238c-.346.302-.547.693-.646 1.138a.642.642 0 00.075.482c.07.118.158.161.292.135a3.12 3.12 0 00.87-.305.867.867 0 00.225-.168.291.291 0 00.084-.204c0-.075-.033-.1-.103-.104-.07-.002-.13.024-.192.046-.207.075-.408.166-.622.22-.105.027-.14.003-.163-.105a.301.301 0 01.005-.122c.04-.168.098-.33.187-.483a.82.82 0 01.245-.283c.14-.089.283-.137.442-.04.052.03.103.016.15-.013a.352.352 0 00.15-.2c.016-.05.002-.09-.044-.117a.773.773 0 00-.343-.115zm9.2.07a.692.692 0 00-.517.206c-.156.161-.183.324-.084.526.074.151.177.28.278.415.072.094.149.187.216.286.048.07.024.125-.058.151a.199.199 0 01-.14-.005 1.076 1.076 0 01-.373-.23.243.243 0 01-.082-.125c-.012-.074-.053-.108-.125-.115-.081-.007-.156-.007-.204.08-.08.138-.057.263.087.393.276.245.605.353.933.38.3.004.485-.267.387-.522-.043-.115-.118-.216-.19-.314-.12-.159-.245-.313-.357-.476-.09-.125-.048-.216.098-.264.135-.043.25-.005.36.08.13.1.24.047.269-.116.017-.086-.03-.144-.09-.194a.68.68 0 00-.41-.157zm1.905.06c-.137-.003-.274 0-.41.016-.164.02-.32.065-.38.248-.002.01-.014.024-.024.026-.187.048-.252.202-.302.358-.106.346-.2.696-.298 1.042-.024.084.01.14.08.182.054.034.11.032.172.015.324-.08.648-.166.987-.142a.26.26 0 00.127-.029.242.242 0 00.117-.24c-.014-.09-.086-.117-.163-.13a1.484 1.484 0 00-.177-.016 3.855 3.855 0 00-.62.052c.03-.228.048-.242.264-.242.16 0 .322-.01.473-.072.1-.043.166-.113.176-.226.007-.076-.025-.122-.104-.124a1.65 1.65 0 00-.19.002l-.453.04c.024-.052.036-.1.062-.136.044-.062-.007-.178.084-.209.075-.024.164-.007.245-.01.214-.004.427-.007.634-.074a.347.347 0 00.192-.13c.07-.108.043-.18-.082-.185-.136-.006-.273-.014-.41-.017zm-6.664.008c-.071-.003-.13.042-.185.093a3.95 3.95 0 00-.392.434l-.367.456c-.02.024-.04.07-.08.05-.03-.014-.018-.055-.014-.086.01-.11.024-.218.036-.329.015-.144.034-.288.01-.432-.031-.173-.156-.22-.295-.113a.836.836 0 00-.094.091 3.168 3.168 0 00-.298.414c-.225.348-.432.71-.703 1.027-.05.06-.103.118-.149.182-.048.072-.067.154-.022.23.041.068.11.092.188.087.081-.004.125-.064.168-.122l.626-.852c.012-.015.017-.044.053-.034a1.37 1.37 0 00-.012.11c-.01.137-.038.274-.01.413.034.16.16.224.306.152a.902.902 0 00.204-.152c.117-.112.228-.233.33-.362.114-.144.229-.29.349-.447.036.12.022.228.017.336-.012.188-.048.375-.012.565.024.117.091.187.187.194a.44.44 0 00.278-.07c.125-.079.137-.237.02-.343a.19.19 0 01-.063-.113c-.026-.13-.004-.257.017-.384.039-.245.115-.485.103-.737-.004-.098-.02-.19-.12-.237a.19.19 0 00-.076-.02zm8.04.19c.117-.01.175.063.14.176a.387.387 0 01-.07.132c-.128.161-.291.27-.495.353a1.56 1.56 0 01.11-.425c.062-.134.163-.223.315-.237zm-6.651.02a.292.292 0 01.15.034c.076.043.098.146.045.233a.676.676 0 01-.185.184 1.47 1.47 0 01-.483.243c.07-.216.128-.415.245-.586a.286.286 0 01.228-.108zm1.6.091a.509.509 0 01.213.034c.113.046.15.1.149.27a1.257 1.257 0 01-.425.818.562.562 0 01-.324.136c-.147.012-.262-.08-.247-.228.028-.32.115-.624.33-.876a.436.436 0 01.304-.154zm-5.882.003a.501.501 0 01.218.036c.11.043.149.098.144.262a1.243 1.243 0 01-.422.818.581.581 0 01-.325.14c-.15.011-.266-.082-.252-.233.03-.315.116-.613.325-.86a.442.442 0 01.312-.163z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/compropago.svg b/assets/lib/simple-icons/icons/compropago.svg
deleted file mode 100644
index 224e234b..00000000
--- a/assets/lib/simple-icons/icons/compropago.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ComproPago icon</title><path d="M19.32 7.778h-.003c-.604-.604-1.508-.604-2.11 0l-.15.15-.905.904-6.926 6.934-1.512 1.507c-.45.452-1.2.755-1.962.755-.75 0-1.5-.303-2.102-.904-.6-.603-.903-1.355-.903-2.11 0-.754.3-1.507.9-2.11l8.89-8.893c-1.206-1.205-3.015-1.205-4.222 0l-6.63 6.783c-2.263 2.262-2.263 6.03 0 8.44 2.26 2.264 6.028 2.264 8.44 0L19.47 9.89c.453-.605.453-1.507-.15-2.112zM22.18 4.772v-.01c-2.26-2.26-6.028-2.26-8.438 0l-9.19 9.347c-.6.603-.6 1.507 0 2.11.61.603 1.512.603 2.112 0l.15-.15.91-.905 6.934-6.935 1.344-1.355.15-.15c.45-.453 1.205-.754 1.96-.754s1.507.302 2.108.905c.605.61.904 1.362.904 2.113 0 .75-.3 1.512-.904 2.11l-8.893 8.89c1.207 1.212 3.014 1.212 4.22 0l6.786-6.776c2.262-2.413 2.262-6.027-.152-8.44z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/comsol.svg b/assets/lib/simple-icons/icons/comsol.svg
new file mode 100644
index 00000000..71e66243
--- /dev/null
+++ b/assets/lib/simple-icons/icons/comsol.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Comsol</title><path d="M15.53833 11.13097c-.11125.1301-.1384.3006-.1384.38725l.2974-.00005c0-.1475.0921-.2303.1478-.27135.0377-.0278.1422-.0786.2357-.0786.1468 0 .3338.0001.3338 0h1.22156l.00025.0001c.0725 0 .1312-.0589.1312-.13125 0-.0725-.0587-.13135-.1312-.13135h-1.16086c-.17195 0-.2702-.001-.43035-.001-.2305 0-.39225.0922-.5069.2263m4.72086-.2253h-.8968s-1.0709-.0563-1.0709 1.0941c0 1.15066 1.0709 1.09436 1.0709 1.09436h.8968s1.07075.0563 1.07075-1.09435c0-1.0479-.8884-1.09455-1.04675-1.09455-.0155 0-.024.00045-.024.00045m-1.68005 1.0941s-.0658-.83165.80665-.83165h.85c.8722 0 .8065.83165.8065.83165s.0657.83165-.8065.83165h-.85c-.87245 0-.80665-.83165-.80665-.83165m-8.49447-1.0941h-.8968s-1.0709-.0563-1.0709 1.0941c0 1.15065 1.0709 1.09435 1.0709 1.09435h.8968s1.07065.0563 1.07065-1.09435c0-1.0479-.8883-1.09455-1.0467-1.09455-.0154 0-.0239.00045-.0239.00045m-1.68015 1.0941s-.0658-.83165.8067-.83165h.85005c.8722 0 .80655.83165.80655.83165s.0657.83165-.80655.83165h-.85005c-.87245 0-.8067-.83165-.8067-.83165m-3.31101.00015c0 1.15065 1.07085 1.09435 1.07085 1.09435h1.44441c.002.00005.003.0005.005.0005.0725 0 .13125-.0588.13125-.1313 0-.0725-.0588-.1313-.13125-.1313v-.00055H6.18816c-.87245 0-.80665-.8317-.80665-.8317s-.0658-.83165.80665-.83165h1.42546s.00005.0001.0002.0001c.0725 0 .13125-.0589.13125-.13125 0-.0725-.0588-.13135-.13125-.13135H6.16466s-.009-.00045-.0241-.00045c-.1584 0-1.0468.0467-1.0468 1.0946m-2.60715-1.09455c-.17581 0-.31831.14255-.31831.31825v1.55225c0 .1758.1425.31825.31831.31825h1.23395c.1757 0 .3183-.14245.3183-.31825v-1.55225c0-.1757-.1426-.31825-.3183-.31825zm-2.16836 0c-.17575 0-.31825.14254-.31825.31824l.00005.0003c0 .00035-.00005.00065-.00005.001 0 .0756.0273.14415.0711.1988l.001.004 1.2323 1.5509.003.001c.0587.0693.1451.1141.2429.1141.00035 0 .0007-.0001.001-.0001l.00025.0001c.17575 0 .3183-.14245.3183-.31825v-1.55225c0-.1757-.14255-.31825-.3183-.31825zm21.49285.13175h-.00015v2.0578h2.0579v-.00015c.0725 0 .13115-.0588.13115-.1313 0-.0724-.0587-.1313-.13115-.1313H22.0735v-1.79505c0-.0725-.0588-.13135-.13125-.13135-.0725 0-.13115.0588-.13115.13135m-7.18002-.088-.0005-.00055-1.39595 1.39585-1.40976-1.40965-.001.001c-.0227-.0187-.0513-.0303-.083-.0303-.0725 0-.13115.0588-.13115.13135h-.00015v2.0578h.2626v-1.74165l1.27031 1.27015c.006.005.0114.009.0171.0129.004.002.007.004.0112.007.004.002.007.004.0109.006.002.00095.004.002.006.003.0386.0158.0728.01.0977-.001.00095-.00035.002-.0009.003-.001.007-.003.013-.006.0181-.01.001-.00085.003-.002.004-.003.0116-.008.0181-.0147.0181-.0147v.00015l1.2683-1.2682v1.74095h.2627v-2.0578h-.00015c0-.0725-.0587-.13135-.1311-.13135-.0386 0-.0728.0169-.0969.0433m.7691.5691c0 .0867.0272.2573.1384.38735.11465.134.2764.2264.5069.2264.16015 0 .2584-.001.43035-.001h.0163v.00025h.73801c.0935 0 .19795.0508.23575.0786.0557.0409.1477.1237.1477.27125h.2975c0-.0864-.0271-.2571-.13835-.38725-.11465-.13405-.27645-.2264-.50705-.2264-.1602 0-.25835.001-.4302.001h-.0164v-.00025h-.73796c-.0935 0-.19795-.0507-.2357-.0786-.0557-.041-.1478-.12385-.1478-.27145zm2.21341.96295c0 .1474-.092.2303-.1477.2712-.0378.028-.14225.0786-.23575.0786-.1467 0-.3339-.00015-.3339 0h-1.36481v.001c-.0725 0-.13125.0588-.13125.1313 0 .0725.0588.1312.13125.1312.004 0 .007-.0008.0111-.001h1.29301c.17185 0 .27.001.4302.001.2306 0 .3924-.0923.50705-.22635.11125-.13015.13835-.30075.13835-.3874z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/conan.svg b/assets/lib/simple-icons/icons/conan.svg
new file mode 100644
index 00000000..990b1eb0
--- /dev/null
+++ b/assets/lib/simple-icons/icons/conan.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Conan</title><path d="M11.709 0 0 5.534V16.76L11.984 24l4.857-2.706V9.998c.13-.084.275-.196.399-.27l.032-.017c.197-.11.329-.102.23.33v10.884l6.466-3.603V6.11L24 6.093Zm.915 2.83c.932.02 1.855.191 2.706.552 1.32.533 2.522 1.364 3.45 2.429a62.814 62.814 0 0 1-3.044 1.616c.56-.853.14-2.009-.76-2.455-.93-.648-2.093-.73-3.205-.674-1.064.175-2.258.51-2.893 1.474-.722.862-.084 2.11.914 2.408 1.2.509 2.543.38 3.806.413-.975.457-1.931.97-2.927 1.358-1.701-.176-3.585-.917-4.374-2.51-.574-1.178.215-2.572 1.319-3.14a11.426 11.426 0 0 1 3.336-1.348 9.212 9.212 0 0 1 1.672-.123Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/concourse.svg b/assets/lib/simple-icons/icons/concourse.svg
index 0bcef4d6..b9debfa3 100644
--- a/assets/lib/simple-icons/icons/concourse.svg
+++ b/assets/lib/simple-icons/icons/concourse.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Concourse icon</title><path d="M23.9679 11.2451c-.041-.4858-.1227-.9615-.2353-1.4372-.0511-.243-.133-.4758-.1943-.7187l-.1125-.334-.0614-.162-.0716-.1821c-.1739-.4454-.3887-.8705-.6342-1.2855a9.801 9.801 0 00-1.5752-2.0345l-.092-.091-.041-.0507-.0716-.0607c-.0614-.0607-.1227-.1113-.1841-.172-.0614-.0507-.1228-.1114-.1739-.162-.0716-.0608-.133-.1114-.2046-.162l-.1636-.1316-.0819-.0607-.0204-.0202-.0512-.0405-.0102-.0101-.041-.0304c-.1022-.0709-.1943-.1316-.2863-.1923-.1637-.1114-.2864-.2025-.3785-.2632.1023-.3846.1841-.7794.2455-1.1741.1023-.5972.5217-1.832-.3375-2.1863-.8081-.334-1.8617 1.1842-1.8617 1.1842-2.1173 2.4394-3.396 5.4759-3.6823 8.6744.5319.1113 1.0433.3441 1.4729.6781h.0102C16.1838 9.7876 17.084 8.6135 17.8 7.3382c.6854.425 1.2889.9716 1.7696 1.6194l.0716.0911.0716.1114.1432.2226c.0819.1417.174.2733.2455.4252.3171.587.5421 1.2146.6751 1.8623.0614.3037.1023.6074.1228.9211a5.7575 5.7575 0 010 .8401c-.0103.2328-.041.4758-.0819.7086a4.6387 4.6387 0 01-.1125.5465c-.0818.2936-.133.4656-.133.4656s.0716-.162.1944-.4453c.0511-.1417.1227-.324.1841-.5365.0716-.2328.133-.4757.1739-.7085.0511-.2834.092-.577.1125-.8705a7.8611 7.8611 0 000-.9818c-.0204-.3542-.0716-.7085-.1432-1.0526a9.0875 9.0875 0 00-.3069-1.0628c-.0613-.172-.1432-.3543-.225-.5264l-.1125-.2328-.0614-.1214-.0307-.1316c-.1739-.3239-.3784-.6275-.6035-.921-.3887-.5163-.849-.9718-1.3604-1.3766.1534-.3442.3069-.6984.4296-1.0628l.0614.0304.3069.1619.0409.0202.0102.0102c.041.0303-.0614-.0405-.0511-.0304l.0204.0101.0818.0506.174.1114.092.0607.0511.0304.0205.0202h.0102c.0103.0101-.0511-.0405-.0307-.0202l.0103.01c.0613.0507.1227.0912.1943.1418l.2046.1518.0307.0203c-.041-.0304-.0103-.0102-.0205-.0203h.0102l.0103.0101.0511.0405.1023.081a8.8213 8.8213 0 012.2401 2.743l.0716.1417.0716.162.1534.3137c.0819.2025.174.4049.2353.6174.2966.8401.4705 1.7309.5012 2.6216.0102.2125.0102.425.0102.6376 0 .2126-.0204.415-.0306.6073-.0307.3745-.0921.739-.174 1.1134-.0715.3138-.1534.6175-.2557.9211-.0818.2733-.184.5061-.2557.6984-.0818.1923-.1534.334-.1943.4352-.0512.1013-.0716.1519-.0716.1519s.0307-.0506.092-.1417c.0512-.0911.1432-.2328.2455-.415.092-.1822.2148-.4049.3274-.668.133-.2936.2557-.5972.3477-.911.1228-.3644.2148-.7389.2967-1.1235.0409-.2025.0818-.415.1023-.6276a6.8334 6.8334 0 00.0613-.6579c.0307-.4555.0307-.921-.0102-1.3867zm-12.7946.6992a15.3453 15.3453 0 00-4.4414-.625c.0404-.8037.2428-1.5875.5868-2.3118l.0506-.0992.0607-.119.1214-.2283c.0809-.1389.1517-.2778.2529-.4068.3642-.5456.8094-1.0318 1.3152-1.4485.2327-.1984.4856-.377.7487-.5358.2327-.1488.4856-.2778.7385-.3968a7.5772 7.5772 0 01.6576-.268c.2024-.0793.3845-.119.5261-.1587.2934-.0694.4755-.1091.4755-.1091s-.172.01-.4856.0496c-.1517.0198-.344.0397-.5564.0893a8.1925 8.1925 0 00-.7082.1786c-.2732.0893-.5464.1885-.8195.3076-.3035.129-.5868.2877-.86.4563-.3035.1886-.5868.387-.86.6152-.2832.2381-.5462.4861-.789.764-.1215.129-.2429.2877-.3643.4365l-.1517.2083-.0708.1092-.081.119c-.1922.2977-.3743.6152-.516.9426a6.974 6.974 0 00-.5665 1.8454v.0298c-.3642.0297-.7284.0793-1.0927.1389v-.1885-.3969c.0102-.0496-.01.0694-.01.0595V10.972c0-.0298.01-.0596.01-.0993.0102-.0694.0102-.129.0203-.1984 0-.0397.01-.0694.01-.1091v-.0894c0-.0098-.01.0695-.01.0298v-.0099c.01-.0694.0202-.1488.0303-.2282.0101-.0793.0203-.1587.0405-.238v-.0299c-.0101.0497 0 .01-.0101.0199v-.0298l.01-.0595.0203-.129c.253-1.141.7082-2.2323 1.3658-3.1947l.091-.129.1013-.139.2124-.2777c.1417-.1588.2732-.3373.435-.496.597-.645 1.295-1.2105 2.064-1.657a5.9648 5.9648 0 01.5564-.2976c.182-.0993.3743-.1786.5463-.258.344-.1488.698-.2679 1.0522-.377.3035-.0893.6171-.1588.9308-.2183.2832-.0595.526-.0794.7284-.1091.2023-.0199.3642-.0298.4755-.0397h.1619l-.172-.01c-.1113 0-.2732-.0099-.4755-.0099-.2024.01-.4553 0-.7487.0298-.3237.0298-.6475.0695-.9611.129-.3845.0694-.7588.1587-1.123.2778a8.6512 8.6512 0 00-.597.2083c-.2023.0695-.4046.1588-.607.258-.4249.1984-.8296.4167-1.2241.6647-.4047.258-.7892.5557-1.1534.8731-.182.1489-.3642.3374-.5362.506l-.2327.258-.1214.129-.1214.1488c-.3035.3572-.5868.7441-.8296 1.141-.4451.7143-.7992 1.4882-1.042 2.2919l-.0405.119-.0202.0596-.0203.0893-.0607.238c-.0202.0794-.0405.1489-.0607.2283-.0202.0893-.0303.1686-.0506.248-.01.0695-.0303.139-.0404.1984-.0102.0298-.0102.0596-.0203.0993v.0298l-.01.0594v.0596c-.0102.119-.0203.2282-.0406.3373-.0303.3076-.0505.506-.0607.5953-.354.0893-.7082.1984-1.0521.3175 0 0-1.8515.4266-1.7503 1.3196.1012.8433 1.9223 1.012 1.9223 1.012 3.1464.635 6.4142.2877 9.3482-.9922-.1518-.516-.1923-1.0517-.1012-1.5775zm4.411 1.938c-.3645.4088-.81.7255-1.3162.9299v.0102c.3848 1.4816.982 2.8916 1.7718 4.1995-.6986.3678-1.4478.613-2.2274.7152l-.1113.0102-.1317.0103-.2632.0204c-.162 0-.324.0102-.486 0-.6682-.0102-1.3262-.1226-1.954-.3372-.2936-.092-.5872-.2146-.8605-.3474-.2531-.1226-.4961-.2554-.729-.4087-.2025-.1328-.3948-.2657-.577-.419-.1722-.1328-.3038-.2656-.4253-.3678-.2227-.2145-.3442-.3474-.3442-.3474s.1012.143.2936.3883c.1012.1226.2227.2657.3746.419.1721.1839.3442.3473.5366.5108.2227.1942.4556.3679.6986.5313.2733.184.5568.3474.8504.4905.3139.1533.648.286.982.3985.3544.1124.7088.1941 1.0733.2554.1822.0307.3746.0511.567.0716l.2631.0204.1317.0102h.1518c.3645 0 .729-.0204 1.0935-.0715.6175-.0818 1.225-.2452 1.8122-.4802.2227.3065.4556.6028.6986.8889-.0101.0102-.0203.0102-.0304.0204l-.2936.184-.0405.0204-.0101.0102c-.0506.0204.0607-.0306.0506-.0204h-.0101l-.0203.0102c-.0303.0102-.0607.0306-.091.0409l-.1823.092-.1013.051-.0506.0307-.0202.0102h-.0102c-.01 0 .0608-.0307.0304-.0102l-.0101.0102-.2126.092c-.0709.0306-.1519.0612-.2228.1021l-.0303.0102c.0506-.0204.0101 0 .0202-.0102h-.0101l-.0101.0102-.0608.0205-.1215.051a8.7816 8.7816 0 01-3.4827.5927l-.1519-.0102-.1721-.0102-.3544-.0307c-.2126-.0307-.4353-.051-.658-.1022-.8809-.1635-1.7313-.4496-2.5311-.8685-.1924-.1022-.3746-.2043-.5569-.3065-.1822-.1022-.3442-.2248-.5163-.3372-.3037-.2146-.6075-.4496-.8808-.6948-.243-.2146-.4657-.4394-.6784-.6744-.2024-.2043-.3442-.4087-.4758-.5722-.1316-.1635-.2126-.2963-.2835-.3883l-.1012-.143s.0303.051.081.143c.0607.092.1316.2453.243.419.1113.1737.243.3882.4252.6233.1923.2656.405.521.6176.756.2632.2862.5365.562.8302.8073.162.1328.324.2759.496.3985.1722.1328.3544.2656.5468.3882a11.06 11.06 0 001.225.6846c.4455.2044.901.378 1.3668.511.2328.0714.486.1225.729.1838l.3442.0613.172.0307.1924.0307c.4759.0613.9517.092 1.4276.092.8605-.0103 1.711-.133 2.5412-.3577l.1215-.0307.0607-.0204.0911-.0307c.081-.0306.162-.051.2329-.0817l.2227-.0715.243-.092c.0709-.0306.1316-.051.1924-.0715.0304-.0102.0607-.0204.0911-.0409l.0203-.0102h.01l.0608-.0306.0101-.0103.0405-.0204.3038-.1533c.162-.0817.2835-.143.3847-.1839.2632.2555.5265.5007.81.7255 0 0 1.3262 1.3794 2.0552.8174.6884-.5313-.1013-2.207-.1013-2.207-1.0529-3.0245-3.0474-5.6811-5.6797-7.5407zm-.0549-1.4117a1.8824 1.8824 0 01-1.8823 1.8823 1.8824 1.8824 0 01-1.8824-1.8823 1.8824 1.8824 0 011.8824-1.8824 1.8824 1.8824 0 011.8823 1.8824Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Concourse</title><path d="M23.9679 11.2451c-.041-.4858-.1227-.9615-.2353-1.4372-.0511-.243-.133-.4758-.1943-.7187l-.1125-.334-.0614-.162-.0716-.1821c-.1739-.4454-.3887-.8705-.6342-1.2855a9.801 9.801 0 00-1.5752-2.0345l-.092-.091-.041-.0507-.0716-.0607c-.0614-.0607-.1227-.1113-.1841-.172-.0614-.0507-.1228-.1114-.1739-.162-.0716-.0608-.133-.1114-.2046-.162l-.1636-.1316-.0819-.0607-.0204-.0202-.0512-.0405-.0102-.0101-.041-.0304c-.1022-.0709-.1943-.1316-.2863-.1923-.1637-.1114-.2864-.2025-.3785-.2632.1023-.3846.1841-.7794.2455-1.1741.1023-.5972.5217-1.832-.3375-2.1863-.8081-.334-1.8617 1.1842-1.8617 1.1842-2.1173 2.4394-3.396 5.4759-3.6823 8.6744.5319.1113 1.0433.3441 1.4729.6781h.0102C16.1838 9.7876 17.084 8.6135 17.8 7.3382c.6854.425 1.2889.9716 1.7696 1.6194l.0716.0911.0716.1114.1432.2226c.0819.1417.174.2733.2455.4252.3171.587.5421 1.2146.6751 1.8623.0614.3037.1023.6074.1228.9211a5.7575 5.7575 0 010 .8401c-.0103.2328-.041.4758-.0819.7086a4.6387 4.6387 0 01-.1125.5465c-.0818.2936-.133.4656-.133.4656s.0716-.162.1944-.4453c.0511-.1417.1227-.324.1841-.5365.0716-.2328.133-.4757.1739-.7085.0511-.2834.092-.577.1125-.8705a7.8611 7.8611 0 000-.9818c-.0204-.3542-.0716-.7085-.1432-1.0526a9.0875 9.0875 0 00-.3069-1.0628c-.0613-.172-.1432-.3543-.225-.5264l-.1125-.2328-.0614-.1214-.0307-.1316c-.1739-.3239-.3784-.6275-.6035-.921-.3887-.5163-.849-.9718-1.3604-1.3766.1534-.3442.3069-.6984.4296-1.0628l.0614.0304.3069.1619.0409.0202.0102.0102c.041.0303-.0614-.0405-.0511-.0304l.0204.0101.0818.0506.174.1114.092.0607.0511.0304.0205.0202h.0102c.0103.0101-.0511-.0405-.0307-.0202l.0103.01c.0613.0507.1227.0912.1943.1418l.2046.1518.0307.0203c-.041-.0304-.0103-.0102-.0205-.0203h.0102l.0103.0101.0511.0405.1023.081a8.8213 8.8213 0 012.2401 2.743l.0716.1417.0716.162.1534.3137c.0819.2025.174.4049.2353.6174.2966.8401.4705 1.7309.5012 2.6216.0102.2125.0102.425.0102.6376 0 .2126-.0204.415-.0306.6073-.0307.3745-.0921.739-.174 1.1134-.0715.3138-.1534.6175-.2557.9211-.0818.2733-.184.5061-.2557.6984-.0818.1923-.1534.334-.1943.4352-.0512.1013-.0716.1519-.0716.1519s.0307-.0506.092-.1417c.0512-.0911.1432-.2328.2455-.415.092-.1822.2148-.4049.3274-.668.133-.2936.2557-.5972.3477-.911.1228-.3644.2148-.7389.2967-1.1235.0409-.2025.0818-.415.1023-.6276a6.8334 6.8334 0 00.0613-.6579c.0307-.4555.0307-.921-.0102-1.3867zm-12.7946.6992a15.3453 15.3453 0 00-4.4414-.625c.0404-.8037.2428-1.5875.5868-2.3118l.0506-.0992.0607-.119.1214-.2283c.0809-.1389.1517-.2778.2529-.4068.3642-.5456.8094-1.0318 1.3152-1.4485.2327-.1984.4856-.377.7487-.5358.2327-.1488.4856-.2778.7385-.3968a7.5772 7.5772 0 01.6576-.268c.2024-.0793.3845-.119.5261-.1587.2934-.0694.4755-.1091.4755-.1091s-.172.01-.4856.0496c-.1517.0198-.344.0397-.5564.0893a8.1925 8.1925 0 00-.7082.1786c-.2732.0893-.5464.1885-.8195.3076-.3035.129-.5868.2877-.86.4563-.3035.1886-.5868.387-.86.6152-.2832.2381-.5462.4861-.789.764-.1215.129-.2429.2877-.3643.4365l-.1517.2083-.0708.1092-.081.119c-.1922.2977-.3743.6152-.516.9426a6.974 6.974 0 00-.5665 1.8454v.0298c-.3642.0297-.7284.0793-1.0927.1389v-.1885-.3969c.0102-.0496-.01.0694-.01.0595V10.972c0-.0298.01-.0596.01-.0993.0102-.0694.0102-.129.0203-.1984 0-.0397.01-.0694.01-.1091v-.0894c0-.0098-.01.0695-.01.0298v-.0099c.01-.0694.0202-.1488.0303-.2282.0101-.0793.0203-.1587.0405-.238v-.0299c-.0101.0497 0 .01-.0101.0199v-.0298l.01-.0595.0203-.129c.253-1.141.7082-2.2323 1.3658-3.1947l.091-.129.1013-.139.2124-.2777c.1417-.1588.2732-.3373.435-.496.597-.645 1.295-1.2105 2.064-1.657a5.9648 5.9648 0 01.5564-.2976c.182-.0993.3743-.1786.5463-.258.344-.1488.698-.2679 1.0522-.377.3035-.0893.6171-.1588.9308-.2183.2832-.0595.526-.0794.7284-.1091.2023-.0199.3642-.0298.4755-.0397h.1619l-.172-.01c-.1113 0-.2732-.0099-.4755-.0099-.2024.01-.4553 0-.7487.0298-.3237.0298-.6475.0695-.9611.129-.3845.0694-.7588.1587-1.123.2778a8.6512 8.6512 0 00-.597.2083c-.2023.0695-.4046.1588-.607.258-.4249.1984-.8296.4167-1.2241.6647-.4047.258-.7892.5557-1.1534.8731-.182.1489-.3642.3374-.5362.506l-.2327.258-.1214.129-.1214.1488c-.3035.3572-.5868.7441-.8296 1.141-.4451.7143-.7992 1.4882-1.042 2.2919l-.0405.119-.0202.0596-.0203.0893-.0607.238c-.0202.0794-.0405.1489-.0607.2283-.0202.0893-.0303.1686-.0506.248-.01.0695-.0303.139-.0404.1984-.0102.0298-.0102.0596-.0203.0993v.0298l-.01.0594v.0596c-.0102.119-.0203.2282-.0406.3373-.0303.3076-.0505.506-.0607.5953-.354.0893-.7082.1984-1.0521.3175 0 0-1.8515.4266-1.7503 1.3196.1012.8433 1.9223 1.012 1.9223 1.012 3.1464.635 6.4142.2877 9.3482-.9922-.1518-.516-.1923-1.0517-.1012-1.5775zm4.411 1.938c-.3645.4088-.81.7255-1.3162.9299v.0102c.3848 1.4816.982 2.8916 1.7718 4.1995-.6986.3678-1.4478.613-2.2274.7152l-.1113.0102-.1317.0103-.2632.0204c-.162 0-.324.0102-.486 0-.6682-.0102-1.3262-.1226-1.954-.3372-.2936-.092-.5872-.2146-.8605-.3474-.2531-.1226-.4961-.2554-.729-.4087-.2025-.1328-.3948-.2657-.577-.419-.1722-.1328-.3038-.2656-.4253-.3678-.2227-.2145-.3442-.3474-.3442-.3474s.1012.143.2936.3883c.1012.1226.2227.2657.3746.419.1721.1839.3442.3473.5366.5108.2227.1942.4556.3679.6986.5313.2733.184.5568.3474.8504.4905.3139.1533.648.286.982.3985.3544.1124.7088.1941 1.0733.2554.1822.0307.3746.0511.567.0716l.2631.0204.1317.0102h.1518c.3645 0 .729-.0204 1.0935-.0715.6175-.0818 1.225-.2452 1.8122-.4802.2227.3065.4556.6028.6986.8889-.0101.0102-.0203.0102-.0304.0204l-.2936.184-.0405.0204-.0101.0102c-.0506.0204.0607-.0306.0506-.0204h-.0101l-.0203.0102c-.0303.0102-.0607.0306-.091.0409l-.1823.092-.1013.051-.0506.0307-.0202.0102h-.0102c-.01 0 .0608-.0307.0304-.0102l-.0101.0102-.2126.092c-.0709.0306-.1519.0612-.2228.1021l-.0303.0102c.0506-.0204.0101 0 .0202-.0102h-.0101l-.0101.0102-.0608.0205-.1215.051a8.7816 8.7816 0 01-3.4827.5927l-.1519-.0102-.1721-.0102-.3544-.0307c-.2126-.0307-.4353-.051-.658-.1022-.8809-.1635-1.7313-.4496-2.5311-.8685-.1924-.1022-.3746-.2043-.5569-.3065-.1822-.1022-.3442-.2248-.5163-.3372-.3037-.2146-.6075-.4496-.8808-.6948-.243-.2146-.4657-.4394-.6784-.6744-.2024-.2043-.3442-.4087-.4758-.5722-.1316-.1635-.2126-.2963-.2835-.3883l-.1012-.143s.0303.051.081.143c.0607.092.1316.2453.243.419.1113.1737.243.3882.4252.6233.1923.2656.405.521.6176.756.2632.2862.5365.562.8302.8073.162.1328.324.2759.496.3985.1722.1328.3544.2656.5468.3882a11.06 11.06 0 001.225.6846c.4455.2044.901.378 1.3668.511.2328.0714.486.1225.729.1838l.3442.0613.172.0307.1924.0307c.4759.0613.9517.092 1.4276.092.8605-.0103 1.711-.133 2.5412-.3577l.1215-.0307.0607-.0204.0911-.0307c.081-.0306.162-.051.2329-.0817l.2227-.0715.243-.092c.0709-.0306.1316-.051.1924-.0715.0304-.0102.0607-.0204.0911-.0409l.0203-.0102h.01l.0608-.0306.0101-.0103.0405-.0204.3038-.1533c.162-.0817.2835-.143.3847-.1839.2632.2555.5265.5007.81.7255 0 0 1.3262 1.3794 2.0552.8174.6884-.5313-.1013-2.207-.1013-2.207-1.0529-3.0245-3.0474-5.6811-5.6797-7.5407zm-.0549-1.4117a1.8824 1.8824 0 01-1.8823 1.8823 1.8824 1.8824 0 01-1.8824-1.8823 1.8824 1.8824 0 011.8824-1.8824 1.8824 1.8824 0 011.8823 1.8824Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/conda-forge.svg b/assets/lib/simple-icons/icons/conda-forge.svg
deleted file mode 100644
index f058664c..00000000
--- a/assets/lib/simple-icons/icons/conda-forge.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Conda-Forge icon</title><path d="M8.206 5.866l.005.396H6.754l.006.655v.005l-6.758.002v.211L0 7.973l.02.041c.212.467.663.901 1.257 1.313.594.411 1.335.796 2.145 1.13 1.62.664 3.502 1.12 5.006 1.1.746-.01 1.265.228 1.62.672.341.426.51 1.092.524 1.92L7.94 16.239l.008 1.896H20.29l-.004-1.76-2.63-2.22c.055-2.013.708-3.443 1.777-4.405 1.087-.979 2.61-1.49 4.37-1.616l.195-.015L24 5.872zm.425.422l14.946.006-.004 1.457c-1.737.155-3.29.666-4.424 1.685-.912.822-1.433 2.062-1.691 3.534l-1.617.004.002.422 1.535-.004c-.027.226-.113.4-.123.64l-.893-.003-.002.422.995.004 2.138 1.802-2.941.002c-.724-.675-1.552-1.116-2.416-1.158-.817-.04-1.638.324-2.387 1.04l-2.978-.024 2.248-1.781v-.102c.002-.943-.2-1.72-.64-2.269-.396-.496-1.007-.749-1.741-.79l-.008-4.49h.008zm-1.45.396h1.026l.008 4.404c-1.387-.02-3.125-.404-4.631-1.023-.787-.324-1.507-.698-2.066-1.086C.968 8.6.587 8.203.424 7.86v-.514l6.336-.002v2.16h.422v-2.16h.004l-.004-.435v-.226zm6.935 8.839c.75.037 1.503.436 2.18 1.078l-.002 1.112h-4.345l-.006-1.2c.706-.717 1.443-1.026 2.173-.99zM8.36 16.537l3.16.023.006 1.153h-3.16zm11.5.142l.002 1.034h-3.148V16.68z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/condaforge.svg b/assets/lib/simple-icons/icons/condaforge.svg
new file mode 100644
index 00000000..ec64ca58
--- /dev/null
+++ b/assets/lib/simple-icons/icons/condaforge.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Conda-Forge</title><path d="M8.206 5.866l.005.396H6.754l.006.655v.005l-6.758.002v.211L0 7.973l.02.041c.212.467.663.901 1.257 1.313.594.411 1.335.796 2.145 1.13 1.62.664 3.502 1.12 5.006 1.1.746-.01 1.265.228 1.62.672.341.426.51 1.092.524 1.92L7.94 16.239l.008 1.896H20.29l-.004-1.76-2.63-2.22c.055-2.013.708-3.443 1.777-4.405 1.087-.979 2.61-1.49 4.37-1.616l.195-.015L24 5.872zm.425.422l14.946.006-.004 1.457c-1.737.155-3.29.666-4.424 1.685-.912.822-1.433 2.062-1.691 3.534l-1.617.004.002.422 1.535-.004c-.027.226-.113.4-.123.64l-.893-.003-.002.422.995.004 2.138 1.802-2.941.002c-.724-.675-1.552-1.116-2.416-1.158-.817-.04-1.638.324-2.387 1.04l-2.978-.024 2.248-1.781v-.102c.002-.943-.2-1.72-.64-2.269-.396-.496-1.007-.749-1.741-.79l-.008-4.49h.008zm-1.45.396h1.026l.008 4.404c-1.387-.02-3.125-.404-4.631-1.023-.787-.324-1.507-.698-2.066-1.086C.968 8.6.587 8.203.424 7.86v-.514l6.336-.002v2.16h.422v-2.16h.004l-.004-.435v-.226zm6.935 8.839c.75.037 1.503.436 2.18 1.078l-.002 1.112h-4.345l-.006-1.2c.706-.717 1.443-1.026 2.173-.99zM8.36 16.537l3.16.023.006 1.153h-3.16zm11.5.142l.002 1.034h-3.148V16.68z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/conekta.svg b/assets/lib/simple-icons/icons/conekta.svg
index d1b9e461..87507e69 100644
--- a/assets/lib/simple-icons/icons/conekta.svg
+++ b/assets/lib/simple-icons/icons/conekta.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Conekta icon</title><path d="M8.25 19.502L2.7 12l5.55-7.5 3.45 4.65L9.447 12l2.25 3-3.45 4.502zM12.45 24l8.85-12-8.85-12h-6.9l9 12-9 12h6.9z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Conekta</title><path d="M12.2914 17.8831a11.7327 11.7327 0 0 1-6.1742 3.0338 2.4598 2.4598 0 0 1-2.1647-.7461c-4.2466-4.6258-4.2466-11.7322 0-16.358a2.4599 2.4599 0 0 1 2.1729-.7461 11.668 11.668 0 0 1 6.289 3.1404 27.1655 27.1655 0 0 0-.6969 6.1004 27.7762 27.7762 0 0 0 .5739 5.5756zm9.8962-3.9376a1.394 1.394 0 0 0-1.5244.5266 24.6804 24.6804 0 0 1-11.9139 8.9375 35.4417 35.4417 0 0 0 6.4284.5903 36.2857 36.2857 0 0 0 4.4605-.2788 3.5997 3.5997 0 0 0 3.0338-2.6977c.4692-1.884.6453-3.8838.5166-5.8134a1.394 1.394 0 0 0-1.001-1.2645zm-1.5245-4.3356a1.394 1.394 0 0 0 2.5255-.7462c.1354-1.9699-.0438-3.9689-.5166-5.8872A3.5997 3.5997 0 0 0 19.6382.2789 36.2678 36.2678 0 0 0 15.1776 0a35.4337 35.4337 0 0 0-6.4284.5904 24.6396 24.6396 0 0 1 11.9139 9.0195z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/confluence.svg b/assets/lib/simple-icons/icons/confluence.svg
index c5dcde6b..2ac98a7d 100644
--- a/assets/lib/simple-icons/icons/confluence.svg
+++ b/assets/lib/simple-icons/icons/confluence.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Confluence icon</title><path d="M.87 18.257c-.248.382-.53.875-.763 1.245a.764.764 0 0 0 .255 1.04l4.965 3.054a.764.764 0 0 0 1.058-.26c.199-.332.454-.763.733-1.221 1.967-3.247 3.945-2.853 7.508-1.146l4.957 2.337a.764.764 0 0 0 1.028-.382l2.364-5.346a.764.764 0 0 0-.382-1 599.851 599.851 0 0 1-4.965-2.361C10.911 10.97 5.224 11.185.87 18.257zM23.131 5.743c.249-.405.531-.875.764-1.25a.764.764 0 0 0-.256-1.034L18.675.404a.764.764 0 0 0-1.058.26c-.195.335-.451.763-.734 1.225-1.966 3.246-3.945 2.85-7.508 1.146L4.437.694a.764.764 0 0 0-1.027.382L1.046 6.422a.764.764 0 0 0 .382 1c1.039.49 3.105 1.467 4.965 2.361 6.698 3.246 12.392 3.029 16.738-4.04z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Confluence</title><path d="M.87 18.257c-.248.382-.53.875-.763 1.245a.764.764 0 0 0 .255 1.04l4.965 3.054a.764.764 0 0 0 1.058-.26c.199-.332.454-.763.733-1.221 1.967-3.247 3.945-2.853 7.508-1.146l4.957 2.337a.764.764 0 0 0 1.028-.382l2.364-5.346a.764.764 0 0 0-.382-1 599.851 599.851 0 0 1-4.965-2.361C10.911 10.97 5.224 11.185.87 18.257zM23.131 5.743c.249-.405.531-.875.764-1.25a.764.764 0 0 0-.256-1.034L18.675.404a.764.764 0 0 0-1.058.26c-.195.335-.451.763-.734 1.225-1.966 3.246-3.945 2.85-7.508 1.146L4.437.694a.764.764 0 0 0-1.027.382L1.046 6.422a.764.764 0 0 0 .382 1c1.039.49 3.105 1.467 4.965 2.361 6.698 3.246 12.392 3.029 16.738-4.04z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/construct3.svg b/assets/lib/simple-icons/icons/construct3.svg
new file mode 100644
index 00000000..ed912f86
--- /dev/null
+++ b/assets/lib/simple-icons/icons/construct3.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Construct 3</title><path d="M12.392 0c-6.752 0-12 5.498-12 12 0 6.574 5.313 12 12 12 4.283 0 8.087-2.254 10.217-5.704a.571.571 0 0 0-.2-.795l-5.55-3.204a.572.572 0 0 0-.76.177 4.453 4.453 0 0 1-3.707 1.983c-2.458 0-4.458-2-4.458-4.457 0-2.458 2-4.457 4.458-4.457 1.491 0 2.877.741 3.707 1.983a.571.571 0 0 0 .76.177l5.55-3.204a.571.571 0 0 0 .2-.795A11.998 11.998 0 0 0 12.392 0zm0 3.527c3.048 0 5.72 1.61 7.213 4.026l-2.99 1.726c-.037.021-.085.013-.108-.026a4.942 4.942 0 0 0-4.115-2.2A4.953 4.953 0 0 0 7.445 12c0 .9.241 1.745.663 2.473l-2.342 1.353a.327.327 0 0 0-.112.458 7.977 7.977 0 0 0 6.738 3.7 7.978 7.978 0 0 0 6.789-3.781l2.983 1.722a.08.08 0 0 1 .028.113 11.447 11.447 0 0 1-9.8 5.472C6.045 23.51.882 18.346.882 12c0-2.095.562-4.06 1.544-5.754l2.35 1.356c.15.088.345.04.439-.11a8.467 8.467 0 0 1 7.177-3.966zM22.965 8.95a.666.666 0 0 0-.336.088l-4.149 2.395a.654.654 0 0 0 0 1.131l4.149 2.396c.434.25.98-.064.98-.566v-4.79a.655.655 0 0 0-.644-.654zm-.663 1.785v2.528L20.112 12z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/consul.svg b/assets/lib/simple-icons/icons/consul.svg
new file mode 100644
index 00000000..ffbc5800
--- /dev/null
+++ b/assets/lib/simple-icons/icons/consul.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Consul</title><path d="M14.0754 12.0285a2.5059 2.5059 0 0 0-2.506-2.506 2.5059 2.5059 0 0 0-2.5058 2.506 2.5059 2.5059 0 0 0 2.5059 2.5059 2.5059 2.5059 0 0 0 2.5059-2.506zm3.5317.0003a1.1559 1.1556 0 0 0-1.1558-1.1556 1.1559 1.1556 0 0 0-1.1559 1.1556 1.1559 1.1556 0 0 0 1.1559 1.1555 1.1559 1.1556 0 0 0 1.1558-1.1555zm4.7917 5.5103a1.1576 1.1564 0 0 0-1.1577-1.1564 1.1576 1.1564 0 0 0-1.1576 1.1564 1.1576 1.1564 0 0 0 1.1576 1.1564 1.1576 1.1564 0 0 0 1.1577-1.1564zM20.748 13.888a1.1534 1.157 0 0 0-1.1533-1.157 1.1534 1.157 0 0 0-1.1534 1.157 1.1534 1.157 0 0 0 1.1534 1.1571 1.1534 1.157 0 0 0 1.1533-1.157zm3.2512.0619a1.1542 1.1538 0 0 0-1.1542-1.1538 1.1542 1.1538 0 0 0-1.1542 1.1538 1.1542 1.1538 0 0 0 1.1542 1.1538 1.1542 1.1538 0 0 0 1.1542-1.1538zm-3.279-3.883a1.1561 1.1535 0 0 0-1.156-1.1535 1.1561 1.1535 0 0 0-1.1562 1.1535 1.1561 1.1535 0 0 0 1.1561 1.1535 1.1561 1.1535 0 0 0 1.1562-1.1535zm3.2798.045a1.1614 1.157 0 0 0-1.1614-1.157 1.1614 1.157 0 0 0-1.1613 1.157 1.1614 1.157 0 0 0 1.1613 1.1572A1.1614 1.157 0 0 0 24 10.1119zm-1.626-3.631a1.1575 1.1601 0 0 0-1.1575-1.16 1.1575 1.1601 0 0 0-1.1575 1.16 1.1575 1.1601 0 0 0 1.1575 1.1602A1.1575 1.1601 0 0 0 22.374 6.481zM11.6171.3832c-3.1098 0-6.029 1.2063-8.2197 3.3974C1.206 5.9822 0 8.9007 0 11.9998c0 3.109 1.2067 6.0279 3.3974 8.2193 2.2028 2.1922 5.1213 3.3978 8.2197 3.3978 2.578 0 5.0176-.8252 7.055-2.386l-1.4196-1.8524c-1.6263 1.246-3.5748 1.9048-5.6354 1.9048-2.4776 0-4.8112-.9641-6.5717-2.7154-1.748-1.7488-2.7118-4.0828-2.7118-6.568 0-2.4784.9645-4.812 2.7158-6.5703 1.7484-1.7488 4.0817-2.713 6.5677-2.713 2.058 0 4.0069.659 5.6365 1.9057l1.4179-1.854C16.6314 1.2083 14.1922.3831 11.617.3831Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/contactlesspayment.svg b/assets/lib/simple-icons/icons/contactlesspayment.svg
index 17cc15d1..46d53f13 100644
--- a/assets/lib/simple-icons/icons/contactlesspayment.svg
+++ b/assets/lib/simple-icons/icons/contactlesspayment.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Contactless Payment icon</title><path d="M8.878 19.1c-2.861-.25-5.385-1.312-7.03-2.954-.936-.936-1.504-1.952-1.76-3.149-.118-.544-.117-1.448 0-1.997.357-1.664 1.433-3.12 3.126-4.23 3.862-2.533 9.778-2.52 13.604.03.508.338.836.607 1.296 1.06.58.573.988 1.142 1.418 1.98.016.03.095.07.176.086.27.056.633.268.924.54.226.21.401.44.832 1.093.435.658 2.404 3.697 2.524 3.896.046.078-.046.202-.15.202-.073 0-.126-.05-.234-.22l-1.116-1.732c-1.9-2.942-2.003-3.078-2.532-3.343l-.278-.14h-.817c-.816 0-.817.001-.837.087-.108.47-.128.586-.104.608.015.014.478.278 1.03.586l1.002.562-.062.131c-.035.072-.074.132-.088.132-.014 0-.858-.468-1.875-1.039-1.018-.57-1.91-1.054-1.982-1.074-.29-.08-.734.24-.734.529 0 .292.087.378 1.874 1.841 1.115.914 1.753 1.462 1.85 1.592.178.236.357.584.523 1.012.29.754.763 1.174 1.538 1.368l.255.064-.021.14a.667.667 0 01-.037.157c-.033.037-.547-.127-.844-.27-.465-.223-.785-.541-1.099-1.094a5.565 5.565 0 00-.405.139c-.391.142-.41.154-.78.515-1.576 1.538-3.836 2.521-6.566 2.855-.443.055-2.15.079-2.621.037zm2.717-.473c1.252-.166 2.223-.414 3.24-.83 1.067-.437 2.073-1.065 2.777-1.733l.277-.264-.698-.333c-.746-.357-.82-.416-.915-.735-.06-.2.008-.415.198-.621l.149-.161-.324-.246c-.256-.195-.336-.28-.386-.41a.65.65 0 01.079-.616l.098-.138-1.023-.18a26.154 26.154 0 01-1.166-.222c-.153-.046-.31-.22-.35-.391-.022-.092.48-2.54.592-2.89a.67.67 0 01.426-.376c.169-.031 3.185.499 3.335.587.238.138.313.362.238.705l-.032.144h.167c.092 0 .31-.012.483-.025l.316-.025-.157-.29c-.474-.882-1.33-1.768-2.388-2.472-.494-.328-1.547-.847-2.181-1.074a13.51 13.51 0 00-3.043-.674c-.575-.06-2.082-.06-2.64.001-1.339.146-2.554.449-3.617.902C2.59 7.309.935 9.046.512 11.027c-.11.517-.12 1.423-.018 1.894.224 1.04.713 1.941 1.509 2.78 1.62 1.707 4.097 2.756 7.066 2.994.397.031 2.121-.015 2.526-.068zm-.543-1.864c-.153-.044-.308-.227-.34-.4-.022-.114.004-.192.166-.506.656-1.27.941-2.437.941-3.855 0-1.37-.252-2.435-.879-3.713-.135-.274-.245-.529-.245-.565 0-.136.114-.333.237-.41.169-.107.452-.087.588.04.052.05.187.271.3.494.449.88.756 1.847.908 2.853.094.623.113 1.803.038 2.373a9.33 9.33 0 01-.86 2.909c-.27.555-.438.784-.58.784a.418.418 0 00-.101.015.421.421 0 01-.173-.019zm-1.826-.955c-.234-.069-.404-.357-.336-.573.017-.052.127-.293.246-.535.502-1.024.711-2.123.609-3.201-.084-.886-.243-1.445-.643-2.263-.269-.549-.281-.634-.125-.854.148-.21.519-.245.713-.066.135.124.555 1 .716 1.496a7.106 7.106 0 01-.232 5.016c-.352.826-.599 1.081-.948.98zm-1.882-.969a.57.57 0 01-.304-.374c-.021-.094.014-.198.187-.547.632-1.28.639-2.514.02-3.765-.271-.55-.277-.659-.047-.876.113-.107.161-.126.32-.126.267 0 .406.135.644.625.367.754.518 1.408.516 2.246 0 .86-.141 1.452-.533 2.247-.225.455-.336.575-.56.606a.525.525 0 01-.243-.036zm-1.757-.902a.592.592 0 01-.286-.34c-.043-.152-.008-.273.165-.557.222-.365.274-.56.274-1.038 0-.477-.052-.673-.274-1.038a2.046 2.046 0 01-.168-.329c-.071-.24.129-.535.398-.586.228-.043.385.06.595.387a2.96 2.96 0 010 3.155c-.215.332-.454.45-.704.346zm13.09 1.473c.203-.073.379-.141.39-.153.012-.011-.027-.141-.087-.289-.122-.302-.102-.295-.534-.212-.468.09-.739.01-1.25-.366-.14-.103-.283-.187-.32-.187-.036 0-.115.053-.177.119-.13.14-.15.36-.044.49.093.113 1.377.724 1.53.727.067.002.289-.056.492-.129zm-.202-.983c.19-.038.211-.051.178-.112-.036-.068-1.812-1.542-1.966-1.632-.127-.074-.23-.057-.335.056-.309.33-.273.4.526 1.013.964.738 1.066.782 1.597.675zm-2.384-2.231c0-.01-.201-.183-.448-.385-.608-.501-.738-.688-.738-1.058 0-.31.206-.608.538-.78a.966.966 0 01.625-.057c.118.038.648.325 1.383.748l.155.089.128-.606c.13-.62.133-.782.012-.82-.037-.011-.746-.14-1.575-.286-1.473-.26-1.634-.275-1.702-.164-.037.06-.597 2.656-.597 2.767 0 .055.028.124.062.152.034.029.512.132 1.062.23 1.062.191 1.095.196 1.095.17Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Contactless Payment</title><path d="M8.878 19.1c-2.861-.25-5.385-1.312-7.03-2.954-.936-.936-1.504-1.952-1.76-3.149-.118-.544-.117-1.448 0-1.997.357-1.664 1.433-3.12 3.126-4.23 3.862-2.533 9.778-2.52 13.604.03.508.338.836.607 1.296 1.06.58.573.988 1.142 1.418 1.98.016.03.095.07.176.086.27.056.633.268.924.54.226.21.401.44.832 1.093.435.658 2.404 3.697 2.524 3.896.046.078-.046.202-.15.202-.073 0-.126-.05-.234-.22l-1.116-1.732c-1.9-2.942-2.003-3.078-2.532-3.343l-.278-.14h-.817c-.816 0-.817.001-.837.087-.108.47-.128.586-.104.608.015.014.478.278 1.03.586l1.002.562-.062.131c-.035.072-.074.132-.088.132-.014 0-.858-.468-1.875-1.039-1.018-.57-1.91-1.054-1.982-1.074-.29-.08-.734.24-.734.529 0 .292.087.378 1.874 1.841 1.115.914 1.753 1.462 1.85 1.592.178.236.357.584.523 1.012.29.754.763 1.174 1.538 1.368l.255.064-.021.14a.667.667 0 01-.037.157c-.033.037-.547-.127-.844-.27-.465-.223-.785-.541-1.099-1.094a5.565 5.565 0 00-.405.139c-.391.142-.41.154-.78.515-1.576 1.538-3.836 2.521-6.566 2.855-.443.055-2.15.079-2.621.037zm2.717-.473c1.252-.166 2.223-.414 3.24-.83 1.067-.437 2.073-1.065 2.777-1.733l.277-.264-.698-.333c-.746-.357-.82-.416-.915-.735-.06-.2.008-.415.198-.621l.149-.161-.324-.246c-.256-.195-.336-.28-.386-.41a.65.65 0 01.079-.616l.098-.138-1.023-.18a26.154 26.154 0 01-1.166-.222c-.153-.046-.31-.22-.35-.391-.022-.092.48-2.54.592-2.89a.67.67 0 01.426-.376c.169-.031 3.185.499 3.335.587.238.138.313.362.238.705l-.032.144h.167c.092 0 .31-.012.483-.025l.316-.025-.157-.29c-.474-.882-1.33-1.768-2.388-2.472-.494-.328-1.547-.847-2.181-1.074a13.51 13.51 0 00-3.043-.674c-.575-.06-2.082-.06-2.64.001-1.339.146-2.554.449-3.617.902C2.59 7.309.935 9.046.512 11.027c-.11.517-.12 1.423-.018 1.894.224 1.04.713 1.941 1.509 2.78 1.62 1.707 4.097 2.756 7.066 2.994.397.031 2.121-.015 2.526-.068zm-.543-1.864c-.153-.044-.308-.227-.34-.4-.022-.114.004-.192.166-.506.656-1.27.941-2.437.941-3.855 0-1.37-.252-2.435-.879-3.713-.135-.274-.245-.529-.245-.565 0-.136.114-.333.237-.41.169-.107.452-.087.588.04.052.05.187.271.3.494.449.88.756 1.847.908 2.853.094.623.113 1.803.038 2.373a9.33 9.33 0 01-.86 2.909c-.27.555-.438.784-.58.784a.418.418 0 00-.101.015.421.421 0 01-.173-.019zm-1.826-.955c-.234-.069-.404-.357-.336-.573.017-.052.127-.293.246-.535.502-1.024.711-2.123.609-3.201-.084-.886-.243-1.445-.643-2.263-.269-.549-.281-.634-.125-.854.148-.21.519-.245.713-.066.135.124.555 1 .716 1.496a7.106 7.106 0 01-.232 5.016c-.352.826-.599 1.081-.948.98zm-1.882-.969a.57.57 0 01-.304-.374c-.021-.094.014-.198.187-.547.632-1.28.639-2.514.02-3.765-.271-.55-.277-.659-.047-.876.113-.107.161-.126.32-.126.267 0 .406.135.644.625.367.754.518 1.408.516 2.246 0 .86-.141 1.452-.533 2.247-.225.455-.336.575-.56.606a.525.525 0 01-.243-.036zm-1.757-.902a.592.592 0 01-.286-.34c-.043-.152-.008-.273.165-.557.222-.365.274-.56.274-1.038 0-.477-.052-.673-.274-1.038a2.046 2.046 0 01-.168-.329c-.071-.24.129-.535.398-.586.228-.043.385.06.595.387a2.96 2.96 0 010 3.155c-.215.332-.454.45-.704.346zm13.09 1.473c.203-.073.379-.141.39-.153.012-.011-.027-.141-.087-.289-.122-.302-.102-.295-.534-.212-.468.09-.739.01-1.25-.366-.14-.103-.283-.187-.32-.187-.036 0-.115.053-.177.119-.13.14-.15.36-.044.49.093.113 1.377.724 1.53.727.067.002.289-.056.492-.129zm-.202-.983c.19-.038.211-.051.178-.112-.036-.068-1.812-1.542-1.966-1.632-.127-.074-.23-.057-.335.056-.309.33-.273.4.526 1.013.964.738 1.066.782 1.597.675zm-2.384-2.231c0-.01-.201-.183-.448-.385-.608-.501-.738-.688-.738-1.058 0-.31.206-.608.538-.78a.966.966 0 01.625-.057c.118.038.648.325 1.383.748l.155.089.128-.606c.13-.62.133-.782.012-.82-.037-.011-.746-.14-1.575-.286-1.473-.26-1.634-.275-1.702-.164-.037.06-.597 2.656-.597 2.767 0 .055.028.124.062.152.034.029.512.132 1.062.23 1.062.191 1.095.196 1.095.17Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/containerd.svg b/assets/lib/simple-icons/icons/containerd.svg
new file mode 100644
index 00000000..40e170f9
--- /dev/null
+++ b/assets/lib/simple-icons/icons/containerd.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>containerd</title><path d="M3.629 0v24H20.37V0zM17.59 21.208H6.421V10.604h7.812V6.692h3.346v14.516zm-7.823-7.812h4.466v5.02H9.767z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/contentful.svg b/assets/lib/simple-icons/icons/contentful.svg
new file mode 100644
index 00000000..0d506be5
--- /dev/null
+++ b/assets/lib/simple-icons/icons/contentful.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Contentful</title><path d="M21.875 16.361c-.043-.048-1.067-1.18-2.365-1.19-.68 0-1.288.283-1.815.858-.773.842-2.35 1.85-4.25 1.921-1.598.059-3.085-.548-4.423-1.805-1.644-1.544-2.155-4.016-1.302-6.297.834-2.23 2.752-3.616 5.131-3.707l.044-.004c.024-.003 2.302-.258 4.325 1.548.17.185 1.154 1.197 2.475 1.228.823.018 1.586-.336 2.27-1.055.602-.632.87-1.342.797-2.112-.154-1.61-1.806-2.876-2.03-3.04-.212-.184-1.878-1.578-4.476-2.294-2.52-.695-6.42-.853-10.685 2.349a7.31 7.31 0 0 0-.557.49c-.28.208-.523.462-.716.753a12.469 12.469 0 0 0-3.064 8.677c.207 6.283 5.265 9.293 5.646 9.51.262.17 2.906 1.81 6.495 1.809 2.106 0 4.538-.565 7.005-2.322.248-.138 1.714-1.012 2.103-2.52.23-.894.042-1.815-.562-2.737l-.046-.06zm-16.932 1.97c0-1.09.887-1.977 1.977-1.977s1.977.886 1.977 1.977c0 1.09-.887 1.977-1.977 1.977s-1.977-.887-1.977-1.977zm.139-13.657c.236-.275.451-.498.628-.67a1.965 1.965 0 0 1 1.088-.329c1.09 0 1.977.887 1.977 1.977S7.888 7.63 6.798 7.63s-1.977-.887-1.977-1.977c0-.356.096-.69.261-.978zM13.249.999c3.954 0 6.657 2.336 6.826 2.486l.043.034c.42.3 1.532 1.301 1.63 2.324.044.469-.126.898-.52 1.313-.477.5-.983.752-1.504.738-.964-.019-1.743-.887-1.76-.905l-.042-.044c-2.292-2.063-4.83-1.855-5.13-1.822a6.82 6.82 0 0 0-3.012.818 3 3 0 0 0-2.34-3.214C9.543 1.45 11.516.999 13.248.999zM3.884 6.34a3 3 0 0 0 2.914 2.31c.122 0 .24-.01.358-.024a7.336 7.336 0 0 0-.39.866c-.75 2.003-.59 4.14.359 5.854-.068-.005-.136-.01-.205-.01a2.999 2.999 0 0 0-2.967 2.6 10.075 10.075 0 0 1-1.7-5.288 11.43 11.43 0 0 1 1.63-6.309zM21.497 18.9c-.3 1.174-1.615 1.89-1.627 1.896l-.058.036c-6.287 4.499-12.137.667-12.382.502l-.036-.022a2.848 2.848 0 0 1-.034-.02 2.998 2.998 0 0 0 2.543-3.228c1.124.64 2.336.951 3.58.906 2.214-.083 4.057-1.264 4.962-2.25.327-.356.67-.53 1.048-.53h.005c.762.004 1.46.688 1.593.826.421.658.558 1.291.406 1.884z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/conventionalcommits.svg b/assets/lib/simple-icons/icons/conventionalcommits.svg
new file mode 100644
index 00000000..0ec669fb
--- /dev/null
+++ b/assets/lib/simple-icons/icons/conventionalcommits.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Conventional Commits</title><path d="M12 0C5.382 0 0 5.382 0 12s5.382 12 12 12 12-5.382 12-12S18.618 0 12 0zm0 1.6c5.753 0 10.4 4.647 10.4 10.4S17.753 22.4 12 22.4 1.6 17.753 1.6 12 6.247 1.6 12 1.6z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/convertio.svg b/assets/lib/simple-icons/icons/convertio.svg
index 36394fef..d7573188 100644
--- a/assets/lib/simple-icons/icons/convertio.svg
+++ b/assets/lib/simple-icons/icons/convertio.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Convertio icon</title><path d="M12 .037C5.373.037 0 5.394 0 12c0 6.606 5.373 11.963 12 11.963 6.628 0 12-5.357 12-11.963C24 5.394 18.627.037 12 .037zm-.541 4.8c1.91-.13 3.876.395 5.432 1.934 1.426 1.437 2.51 3.44 2.488 5.317h2.133l-4.444 4.963-4.445-4.963h2.313c-.001-1.724-.427-2.742-1.78-4.076-1.325-1.336-2.667-2.11-4.978-2.303a9.245 9.245 0 013.281-.871zM6.934 6.95l4.445 4.963H9.066c0 1.724.426 2.742 1.778 4.076 1.326 1.336 2.667 2.112 4.978 2.305-2.684 1.268-6.22 1.398-8.71-1.064-1.427-1.437-2.512-3.44-2.489-5.317H2.488L6.934 6.95Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Convertio</title><path d="M12 .037C5.373.037 0 5.394 0 12c0 6.606 5.373 11.963 12 11.963 6.628 0 12-5.357 12-11.963C24 5.394 18.627.037 12 .037zm-.541 4.8c1.91-.13 3.876.395 5.432 1.934 1.426 1.437 2.51 3.44 2.488 5.317h2.133l-4.444 4.963-4.445-4.963h2.313c-.001-1.724-.427-2.742-1.78-4.076-1.325-1.336-2.667-2.11-4.978-2.303a9.245 9.245 0 013.281-.871zM6.934 6.95l4.445 4.963H9.066c0 1.724.426 2.742 1.778 4.076 1.326 1.336 2.667 2.112 4.978 2.305-2.684 1.268-6.22 1.398-8.71-1.064-1.427-1.437-2.512-3.44-2.489-5.317H2.488L6.934 6.95Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/cookiecutter.svg b/assets/lib/simple-icons/icons/cookiecutter.svg
new file mode 100644
index 00000000..2aeab884
--- /dev/null
+++ b/assets/lib/simple-icons/icons/cookiecutter.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Cookiecutter</title><path d="M12.806 0a12 12 0 0 0-4.512.885A12 12 0 0 0 .858 12.978a12 12 0 0 0 9.303 10.724 12 12 0 0 0 13.021-5.656L12.817 12l9.244-7.65A12 12 0 0 0 12.806 0zM9.218 2.143c.34-.003.701.123 1.193.378.847.437 1.013 1.027.36 1.277-.487.187-2.457.177-2.932-.015-.526-.212-.38-.781.32-1.24.402-.263.72-.396 1.059-.4zm4.077 4.052a1.292 1.292 0 0 1 .022 0 1.292 1.292 0 0 1 1.292 1.291 1.292 1.292 0 0 1-1.292 1.292 1.292 1.292 0 0 1-1.292-1.292 1.292 1.292 0 0 1 1.27-1.291zm-6.259 3.8c1.033 0 1.788.434 1.788 1.028 0 .694-1.961 2.384-2.766 2.384-.365 0-.727-.166-.804-.368-.078-.203.117-.97.434-1.706.505-1.176.67-1.338 1.348-1.338zm8.637 9.187c.372 0 1.362 2.316 1.186 2.775-.201.524-1.046.467-1.564-.105-.676-.747-.404-2.67.378-2.67z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/coop.svg b/assets/lib/simple-icons/icons/coop.svg
new file mode 100644
index 00000000..e3636e45
--- /dev/null
+++ b/assets/lib/simple-icons/icons/coop.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Co-op</title><path d="M23.275 5.265c0-.852-.132-1.703-.36-2.555-.328-1.016-1.081-1.834-2.031-2.194a9.248 9.248 0 0 0-6.092 0 3.168 3.168 0 0 0-2.03 2.194 9.532 9.532 0 0 0 0 5.077c.326 1.015 1.08 1.834 2.03 2.194a8.04 8.04 0 0 0 3.046.491c1.049 0 2.063-.196 3.046-.491a3.172 3.172 0 0 0 2.031-2.194c.229-.819.36-1.67.36-2.522zm-3.308 0c0 .393-.065.852-.196 1.212-.164.524-.623.95-1.18 1.081a4.233 4.233 0 0 1-1.571 0 1.473 1.473 0 0 1-1.18-1.081 4.025 4.025 0 0 1 0-2.489c.163-.524.622-.95 1.18-1.081a4.233 4.233 0 0 1 1.571 0 1.476 1.476 0 0 1 1.18 1.081c.13.458.196.884.196 1.277m-8.745 13.79a9.552 9.552 0 0 0 0-5.077c-.327-1.016-1.081-1.834-2.03-2.195a9.248 9.248 0 0 0-6.092 0 3.173 3.173 0 0 0-2.031 2.195 9.552 9.552 0 0 0 0 5.077c.328 1.015 1.081 1.834 2.031 2.193a9.248 9.248 0 0 0 6.092 0 3.392 3.392 0 0 0 2.03-2.193m-2.948-2.523c0 .393-.066.852-.197 1.212a1.644 1.644 0 0 1-1.179 1.081 4.238 4.238 0 0 1-1.572 0 1.477 1.477 0 0 1-1.179-1.081 4.04 4.04 0 0 1 0-2.489 1.64 1.64 0 0 1 1.179-1.081 4.196 4.196 0 0 1 1.572 0 1.476 1.476 0 0 1 1.179 1.081c.131.426.197.851.197 1.277m0-11.3h3.308c0-.851-.131-1.703-.36-2.521-.327-1.016-1.081-1.834-2.03-2.194a9.248 9.248 0 0 0-6.092 0C2.084.909 1.331 1.728 1.068 2.743a9.552 9.552 0 0 0 0 5.077c.328 1.015 1.081 1.834 2.031 2.194.982.36 1.998.492 3.046.492 1.048 0 2.063-.197 3.046-.492a3.17 3.17 0 0 0 2.03-2.194c.033-.131.065-.295.131-.426L8.241 5.953c-.033.196-.065.36-.131.557-.163.524-.622.95-1.179 1.081a4.238 4.238 0 0 1-1.572 0A1.478 1.478 0 0 1 4.18 6.51a4.04 4.04 0 0 1 0-2.489c.164-.524.622-.95 1.179-1.082a4.238 4.238 0 0 1 1.572 0A1.476 1.476 0 0 1 8.11 4.021c.098.425.164.818.164 1.211m4.421 8.779a9.442 9.442 0 0 0-.36 2.555V24h3.308v-7.468c0-.393.065-.852.196-1.212.163-.524.622-.95 1.18-1.081a4.191 4.191 0 0 1 1.571 0 1.478 1.478 0 0 1 1.18 1.081 4.04 4.04 0 0 1 0 2.489c-.164.523-.623.95-1.146 1.08a4.196 4.196 0 0 1-1.572 0c-.099-.031-.229-.064-.327-.098l1.113 3.079c1.049 0 2.063-.197 3.046-.491a3.175 3.175 0 0 0 2.031-2.194 9.552 9.552 0 0 0 0-5.077c-.328-1.016-1.081-1.834-2.031-2.195a9.248 9.248 0 0 0-6.092 0c-1.016.263-1.769 1.082-2.097 2.098"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/cora.svg b/assets/lib/simple-icons/icons/cora.svg
new file mode 100644
index 00000000..7a184bbf
--- /dev/null
+++ b/assets/lib/simple-icons/icons/cora.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Cora</title><path d="M17.637 8.6606c0-.0838-.0344-.1153-.118-.1117-.1242.0045-.2487 0-.3729 0a1.5068 1.5068 0 0 0-1.0148.4021 2.4725 2.4725 0 0 0-.462.594c-.0526.088-.1058.1756-.1589.2632l-.0215-.0053c-.0028-.0304-.0078-.0608-.008-.0915q-.0062-.4465-.0107-.8904c0-.0653-.007-.1097-.0937-.1116-.4763-.0109-.9524-.016-1.429-.0087-.0954.0014-.1183.0374-.1191.1273-.0223 2.1229-.0128 4.2458 0 6.369 0 .0753.0279.0895.0952.0906.4796.0084.9596.0134 1.4392 0 .171-.0047.1736-.0067.1755-.181.012-1.1667.021-2.3336.0352-3.5003a1.263 1.263 0 0 1 1.0118-1.2573 3.508 3.508 0 0 1 .9378-.0516c.0949.0033.1152-.0257.1141-.1144-.0033-.29.0028-.5799.0033-.87-.0005-.2174-.0047-.4348-.0036-.6524zM3.2957 9.9943a.9705.9705 0 0 1 .8005.4744 1.5509 1.5509 0 0 1 .1954.4978c.0156.0698.0471.0854.1116.0837.2553-.0033.5109 0 .7662 0 .2553 0 .511-.005.7662.0025.0958.0028.1184-.0279.1091-.1164a2.4354 2.4354 0 0 0-1.4004-2.0762 3.5683 3.5683 0 0 0-2.2044-.264A2.6017 2.6017 0 0 0 .4925 9.9383a4.0022 4.0022 0 0 0-.4643 1.6708 4.9916 4.9916 0 0 0 .1485 1.8461 2.6 2.6 0 0 0 1.4038 1.7133 3.5789 3.5789 0 0 0 2.2694.2112c1.3915-.2882 2.016-1.3394 2.1854-2.3592.0147-.089-.0026-.1273-.1086-.1259-.4626.0064-.9253.0028-1.3876.0028-.2233 0-.2233 0-.2816.2205a1.1622 1.1622 0 0 1-.985.9088 1.1413 1.1413 0 0 1-1.144-.4688 1.8042 1.8042 0 0 1-.2723-.6761 5.631 5.631 0 0 1-.0623-1.114 2.439 2.439 0 0 1 .0837-.6545c.1555-.6044.5634-1.1795 1.4181-1.119Zm7.911-1.2316a3.7982 3.7982 0 0 0-2.6367-.003 2.8688 2.8688 0 0 0-1.8363 1.862 4.2971 4.2971 0 0 0-.0416 2.6186 2.8816 2.8816 0 0 0 1.8623 1.9907 3.8071 3.8071 0 0 0 2.5392.0432 2.8978 2.8978 0 0 0 1.8383-1.644 3.9383 3.9383 0 0 0 .3153-1.6265 4.9445 4.9445 0 0 0-.0985-.9727 2.9614 2.9614 0 0 0-1.942-2.2683zm.0557 4.3671a1.3036 1.3036 0 0 1-1.2579.865 1.734 1.734 0 0 1-.7333-.091 1.4208 1.4208 0 0 1-.826-.912 2.9901 2.9901 0 0 1-.1372-1.0755 2.458 2.458 0 0 1 .2338-1.1404 1.3394 1.3394 0 0 1 1.1935-.7774 1.7189 1.7189 0 0 1 .7441.0904 1.2986 1.2986 0 0 1 .7858.776 3.0973 3.0973 0 0 1-.0028 2.2652zm12.6651 1.8749a.483.483 0 0 1-.2028-.2274 1.0475 1.0475 0 0 1-.093-.4621c-.0248-1.3427-.0039-2.686-.0382-4.0284a1.512 1.512 0 0 0-.5463-1.1402 2.4695 2.4695 0 0 0-1.126-.515 5.3873 5.3873 0 0 0-1.7104-.0559 2.6815 2.6815 0 0 0-1.073.32c-.7078.403-.9852 1.0638-1.0831 1.8305-.0112.0882.022.1008.0993.1002.435-.0034.87-.0017 1.305-.0017.2367 0 .2367 0 .2967-.2246a.848.848 0 0 1 .7478-.6613 3.0786 3.0786 0 0 1 .7849.0198.6892.6892 0 0 1 .6211.7177.4668.4668 0 0 1-.2846.4408 1.4912 1.4912 0 0 1-.4202.1013c-.5916.1002-1.19.1608-1.7752.2933a1.9228 1.9228 0 0 0-1.3854 1.0324 2.2822 2.2822 0 0 0-.1937 1.2816 1.697 1.697 0 0 0 .889 1.3737 2.7038 2.7038 0 0 0 2.7834-.2854c.1244-.1038.2464-.211.3683-.3178.0558-.0478.0756-.04.0857.0343a3.4009 3.4009 0 0 0 .1214.5759.1091.1091 0 0 0 .125.0896c.2726-.0047.5455-.002.818-.002v-.0084c.2727 0 .5456.002.8182-.0017.0483 0 .12.0231.1306-.0623.01-.079.0335-.1665-.0625-.217zm-2.5833-1.0715a1.6879 1.6879 0 0 1-1.0681.2888.7785.7785 0 0 1-.6976-.9842.8195.8195 0 0 1 .5843-.6496 5.6502 5.6502 0 0 1 .8153-.187 2.6787 2.6787 0 0 0 .865-.2672c.0558-.0335.0659-.0034.0659.0424v.435h.0042v.279a1.178 1.178 0 0 1-.569 1.0428Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/coronaengine.svg b/assets/lib/simple-icons/icons/coronaengine.svg
index 995202f3..ca69ef20 100644
--- a/assets/lib/simple-icons/icons/coronaengine.svg
+++ b/assets/lib/simple-icons/icons/coronaengine.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Corona Engine icon</title><path d="M11.986,0C11.986,0,11.986,0,11.986,0C5.358,0.008-0.008,5.387,0,12.015 C0.008,18.642,5.387,24.008,12.015,24C18.636,23.992,24,18.622,24,12C23.996,5.369,18.617-0.004,11.986,0z M12.007,22.455 c-5.774,0.006-10.461-4.67-10.467-10.445C1.535,6.236,6.211,1.55,11.985,1.544C17.763,1.541,22.449,6.223,22.452,12 C22.452,17.77,17.777,22.449,12.007,22.455z M13.689,7.5c1.008,1.059,2.329,1.903,3.472,2.133c0.362-0.118,0.688-0.326,0.948-0.605 c0.277-0.324,0.46-0.718,0.529-1.139c-0.012-0.038-0.027-0.076-0.041-0.116l0,0c-0.49-1.318-1.804-2.265-3.158-2.831 c-1.333-0.557-2.695-0.746-3.35-0.558C12.112,5.395,12.769,6.535,13.689,7.5L13.689,7.5L13.689,7.5z M16.798,12.226 c-0.697,1.284-1.093,2.799-0.96,3.957c0.225,0.307,0.523,0.553,0.869,0.713c0.394,0.163,0.826,0.215,1.247,0.151 c0.038-0.027,0.07-0.053,0.1-0.075c1.103-0.872,1.6-2.413,1.72-3.875c0.119-1.438-0.122-2.79-0.503-3.354 c-0.957,0.334-1.839,1.311-2.473,2.482L16.798,12.226z M8.227,8.993c1.32-0.631,2.532-1.625,3.105-2.639 c0-0.381-0.097-0.755-0.283-1.088c-0.223-0.363-0.541-0.658-0.92-0.853l-0.123,0.002C8.6,4.473,7.292,5.428,6.334,6.541l0,0 C5.392,7.633,4.791,8.87,4.767,9.55c0.969,0.288,2.258,0.017,3.459-0.559L8.227,8.993z M7.96,14.641 c-0.193-1.449-0.765-2.907-1.553-3.767c-0.363-0.117-0.749-0.14-1.123-0.067l0,0c-0.415,0.099-0.794,0.31-1.097,0.61l-0.036,0.118 c-0.38,1.355,0.126,2.893,0.887,4.146c0.749,1.233,1.741,2.185,2.382,2.418c0.577-0.832,0.718-2.139,0.54-3.459L7.96,14.641z M13.257,16.641c-1.439-0.264-3.004-0.172-4.065,0.311c-0.224,0.308-0.366,0.668-0.411,1.046c-0.034,0.426,0.05,0.852,0.243,1.233 c0.033,0.025,0.067,0.047,0.1,0.068c1.172,0.779,2.793,0.774,4.223,0.438c1.405-0.332,2.619-0.979,3.039-1.515 c-0.614-0.807-1.817-1.344-3.128-1.584L13.257,16.641z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Corona Engine</title><path d="M13.69 7.499c-.919-.965-1.577-2.105-1.6-3.116.655-.187 2.017.001 3.35.558 1.354.566 2.668 1.514 3.158 2.831.014.039.029.078.041.116a2.337 2.337 0 0 1-.529 1.14c-.26.279-.586.487-.948.605-1.143-.23-2.464-1.074-3.472-2.134zm5.581 2.244c-.957.334-1.839 1.311-2.473 2.482v.001c-.697 1.284-1.093 2.799-.96 3.957.225.307.523.553.869.713.394.163.826.215 1.247.151.038-.027.07-.053.1-.075 1.103-.872 1.6-2.413 1.72-3.875.119-1.437-.122-2.79-.503-3.354zm-7.939-3.389a2.23 2.23 0 0 0-.283-1.088 2.332 2.332 0 0 0-.92-.853l-.123.002C8.6 4.473 7.292 5.428 6.334 6.541 5.393 7.633 4.791 8.87 4.768 9.55c.969.288 2.257.017 3.459-.559v.002c1.32-.631 2.532-1.625 3.105-2.639zM7.96 14.641c-.193-1.449-.765-2.907-1.553-3.767a2.252 2.252 0 0 0-1.123-.067c-.415.099-.794.31-1.097.61l-.036.118c-.38 1.355.125 2.893.886 4.146.749 1.233 1.741 2.185 2.382 2.418.577-.832.718-2.139.54-3.459l.001.001zm5.297 2c-1.439-.264-3.004-.172-4.065.311a2.227 2.227 0 0 0-.411 1.046c-.034.426.05.852.243 1.233.033.025.067.047.1.068 1.172.779 2.793.774 4.223.438 1.405-.332 2.619-.978 3.039-1.515-.614-.807-1.817-1.344-3.128-1.584l-.001.003zM24 12c0 6.622-5.364 11.992-11.985 12C5.387 24.008.008 18.642 0 12.015-.008 5.387 5.358.008 11.985 0h.001C18.617-.004 23.996 5.369 24 12zm-1.547 0c-.003-5.778-4.69-10.459-10.468-10.456-5.774.007-10.45 4.693-10.443 10.468.007 5.775 4.693 10.45 10.468 10.443C17.78 22.448 22.453 17.77 22.453 12z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/coronarenderer.svg b/assets/lib/simple-icons/icons/coronarenderer.svg
index bcb86725..ec56ac71 100644
--- a/assets/lib/simple-icons/icons/coronarenderer.svg
+++ b/assets/lib/simple-icons/icons/coronarenderer.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Corona Renderer icon</title><path d="M19.734,11.603c0.078,0.376,0.116,0.76,0.116,1.144c0,1.44-0.562,2.846-1.556,3.889 c-0.989,1.037-2.358,1.668-3.789,1.741c-1.445,0.074-2.885-0.418-3.979-1.365c-1.079-0.933-1.776-2.265-1.921-3.684 c-0.148-1.445,0.273-2.914,1.17-4.057c0.877-1.118,2.168-1.879,3.574-2.095c1.439-0.222,2.934,0.127,4.123,0.97 C18.627,8.965,19.448,10.214,19.734,11.603z M24,6v12c0,3.314-2.686,6-6,6H6c-3.314,0-6-2.686-6-6V6c0-3.314,2.686-6,6-6h12 C21.314,0,24,2.686,24,6z M21.828,9.483c-0.465-1.398-1.274-2.674-2.334-3.697c-1.025-0.988-2.279-1.731-3.639-2.152 c0.159,0.423,0.239,0.874,0.238,1.326c-1.109-1.455-2.809-2.4-4.632-2.564c-1.112-0.1-2.245,0.084-3.265,0.538 c0.829,0.257,1.555,0.807,2.03,1.533C8.383,3.809,6.29,4.017,4.615,5.028C3.931,5.441,3.324,5.98,2.831,6.609 c1.151-0.247,2.375,0.069,3.262,0.843c-0.74,0.709-1.754,1.087-2.778,1.039C3.469,8.742,3.652,8.973,3.859,9.18 c-0.01,0.017-0.021,0.034-0.031,0.051c-0.696,0.314-1.288,0.842-1.68,1.496c-0.438,0.729-0.613,1.6-0.498,2.442 c0.066,0.481,0.226,0.947,0.469,1.367c-0.108-0.934,0.684-1.758,1.622-1.686c0.921,0.071,1.576,0.983,1.351,1.88 c-0.16,0.635-0.732,1.107-1.386,1.142c0.87,1.547,2.362,2.701,4.08,3.146c0.608,0.157,1.238,0.226,1.866,0.206 c-0.471,0.358-1.029,0.608-1.637,0.711c1.493,1.016,3.275,1.567,5.08,1.578c1.455,0.009,2.905-0.33,4.202-0.991 c1.249-0.636,2.345-1.562,3.184-2.684c0.851-1.139,1.43-2.475,1.676-3.876C22.417,12.472,22.305,10.919,21.828,9.483z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Corona Renderer</title><path d="M19.734,11.603c0.078,0.376,0.116,0.76,0.116,1.144c0,1.44-0.562,2.846-1.556,3.889 c-0.989,1.037-2.358,1.668-3.789,1.741c-1.445,0.074-2.885-0.418-3.979-1.365c-1.079-0.933-1.776-2.265-1.921-3.684 c-0.148-1.445,0.273-2.914,1.17-4.057c0.877-1.118,2.168-1.879,3.574-2.095c1.439-0.222,2.934,0.127,4.123,0.97 C18.627,8.965,19.448,10.214,19.734,11.603z M24,6v12c0,3.314-2.686,6-6,6H6c-3.314,0-6-2.686-6-6V6c0-3.314,2.686-6,6-6h12 C21.314,0,24,2.686,24,6z M21.828,9.483c-0.465-1.398-1.274-2.674-2.334-3.697c-1.025-0.988-2.279-1.731-3.639-2.152 c0.159,0.423,0.239,0.874,0.238,1.326c-1.109-1.455-2.809-2.4-4.632-2.564c-1.112-0.1-2.245,0.084-3.265,0.538 c0.829,0.257,1.555,0.807,2.03,1.533C8.383,3.809,6.29,4.017,4.615,5.028C3.931,5.441,3.324,5.98,2.831,6.609 c1.151-0.247,2.375,0.069,3.262,0.843c-0.74,0.709-1.754,1.087-2.778,1.039C3.469,8.742,3.652,8.973,3.859,9.18 c-0.01,0.017-0.021,0.034-0.031,0.051c-0.696,0.314-1.288,0.842-1.68,1.496c-0.438,0.729-0.613,1.6-0.498,2.442 c0.066,0.481,0.226,0.947,0.469,1.367c-0.108-0.934,0.684-1.758,1.622-1.686c0.921,0.071,1.576,0.983,1.351,1.88 c-0.16,0.635-0.732,1.107-1.386,1.142c0.87,1.547,2.362,2.701,4.08,3.146c0.608,0.157,1.238,0.226,1.866,0.206 c-0.471,0.358-1.029,0.608-1.637,0.711c1.493,1.016,3.275,1.567,5.08,1.578c1.455,0.009,2.905-0.33,4.202-0.991 c1.249-0.636,2.345-1.562,3.184-2.684c0.851-1.139,1.43-2.475,1.676-3.876C22.417,12.472,22.305,10.919,21.828,9.483z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/corsair.svg b/assets/lib/simple-icons/icons/corsair.svg
new file mode 100644
index 00000000..0af8d45e
--- /dev/null
+++ b/assets/lib/simple-icons/icons/corsair.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Corsair</title><path d="M13.072.412s1.913 3.881 1.563 5.5c0 0 4.987 1.612 5.54 4.272 0 0 2.73-3.594-7.103-9.772zM7.908 4.067s1.678 2.625 1.417 4.35l2.818 1.067a17.56 17.56 0 0 0-.991-3.248zm3.784.691a14.162 14.162 0 0 1 .163 13.794 17.702 17.702 0 0 0 .594-6.585c-.017-.186-.031-.368-.053-.55L6.908 7.759a14.13 14.13 0 0 1 1.133 4.465 14.02 14.02 0 0 1-1.305 7.347 17.75 17.75 0 0 0 .442-5.988.92.92 0 0 1-.022-.243l-5.133-2.726a11.639 11.639 0 0 1 1.075 3.93A11.785 11.785 0 0 1 0 23.587c21.91-9.29 22.795-3.173 22.795-3.173s1.656-2.164 1.085-4.51C23.128 12.79 11.692 4.759 11.692 4.759zM3.04 7.245s1.629 2.09 1.363 3.815l2.567.637a20.357 20.357 0 0 0-.863-2.788z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/couchbase.svg b/assets/lib/simple-icons/icons/couchbase.svg
new file mode 100644
index 00000000..a33597e4
--- /dev/null
+++ b/assets/lib/simple-icons/icons/couchbase.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Couchbase</title><path d="M20.111 14.104a1.467 1.458 0 0 1-1.235 1.503c-1.422.244-4.385.398-6.875.398s-5.454-.15-6.877-.398c-.814-.14-1.235-.787-1.235-1.503V9.417a1.57 1.56 0 0 1 1.235-1.505 15.72 15.619 0 0 1 2.156-.14.537.533 0 0 1 .523.543v3.303c1.463 0 2.727-.086 4.201-.086 1.474 0 2.727.086 4.196.086V8.342a.535.532 0 0 1 .494-.569h.027a15.995 15.891 0 0 1 2.156.14 1.57 1.56 0 0 1 1.234 1.504zM12.001 0C5.373 0 0 5.374 0 12c0 6.628 5.373 12 12 12 6.628 0 12-5.372 12-12 0-6.626-5.373-12-12-12z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/counter-strike.svg b/assets/lib/simple-icons/icons/counter-strike.svg
deleted file mode 100644
index 8d755a38..00000000
--- a/assets/lib/simple-icons/icons/counter-strike.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Counter-Strike icon</title><path d="M9.103.435c.4347-.3913 1.087-.5362 1.6522-.3623.2174.0725.4058.203.6087.3333.1595.1015.3479.145.4928.261.0725.058.0145.1594.0145.2318.1884.4493.2899.9421.1305 1.4204-.1305.1594-.3624.203-.5508.2754-.029.2029.0435.3913.0725.5942-.0435.029-.0725.058-.116.087.2754-.0145.5508-.0725.8262-.1304.1014-.1015.2608-.0435.3913-.058.0145-.203.087-.3914.087-.5943.029 0 .087-.0145.1159-.029.0145.145 0 .29.0435.4349.0724.058.1884.029.2754.0434 0 .058 0 .116.0144.174 1.6813-.0145 3.377 0 5.0583 0v.2464h.1595v-.9421h.1884c0 .2609-.0145.5072 0 .7681a.1107.1107 0 0 0 .0725.029c0 .029.0144.087.0144.116.058-.058.1305-.1015.2174-.0725.0145.0435.029.087.0435.145-.058.058-.087.1304-.058.2173.4639.0145.9277 0 1.406 0 .0434-.058.1159-.087.1884-.116.029.0146.0724.0436.087.058h.6811c.029.116.029.232.0145.3334h-.6957c-.0145.0145-.058.058-.087.0725-.0724-.0435-.1304-.0725-.2029-.116h-1.2609c-.2464.0725-.5073.058-.7537.0145v.2754h-2.0726c-.087.0725-.1739.116-.2898.1305.0434.2174-.203.2753-.29.4348-.0579.087-.1448.1449-.2318.1739-.0725.4493.087.8696.203 1.29-.1305.029-.2755.0724-.406.1014-.0724.2899-.1449.5942-.2028.884-.058.261-.261.4784-.5073.5798-.174.203-.4058.4059-.6812.4204-.1015.029-.174-.0435-.2464-.1015-.3623.029-.6957-.145-1.0146-.2899-.3478-.1594-.6667-.3623-1-.5507.029.2029-.0725.3768-.145.5507.1595.0725.3769.1305.4638.3044.058.1304.116.2754.116.4348-.0145.5218-.0725 1.0435-.1015 1.5653.0145.3769-.1739.7537-.4348 1.029-.1739-.0144-.3188-.0869-.4783-.1594-.058.1305-.1884.261-.116.4204.058.1884.058.3913.145.5652.4928.5218.9131 1.1015 1.2175 1.7537.3043.6233.5362 1.2755.7826 1.9277.0435 0 .1305-.0145.174-.0145.058.1884 0 .4058.116.5798.1014.1594.0724.3478.0724.5362-.029.4348-.058.8696-.1015 1.3044-.029.3044-.1014.6088-.1449.9132.0145.2318.116.4637.1014.6956-.0144.2175-.0144.4493-.1884.6088.0145.4928-.116.9855.058 1.4638.232.3189.4928.6233.7682.8986.3043.145.6667.174.9276.4349.1014.1594.0434.3478.0145.5217a6.7323 6.7323 0 0 1-1.8697 0c-.2464-.058-.4783-.1594-.7247-.1884-.3334.0145-.7247.145-1.029-.087-.029-.3913.1159-.7681.1884-1.145.029-.1304.1594-.2174.1449-.3478-.029-.4493-.058-.9131-.087-1.3624-.058-.029-.1594-.058-.1449-.145 0-.2173-.0725-.4347-.1304-.6377-.1015-.5507-.145-1.116-.1595-1.6812-.0145-.1595.087-.2754.203-.3769.029-.2464.058-.5072.0724-.7536-.0435-.1305-.145-.232-.203-.3479-.2608.029-.6376.087-.797-.1884-.3769-.5653-.7682-1.145-1.145-1.7102-.1595-.0145-.3479 0-.4928-.1015-.1595-.174-.261-.4058-.3624-.6232-.0435.1739-.0725.3623-.174.5072-.0869.145-.2318.2464-.3333.3769-.1014.2319-.1884.4638-.2753.6957-.1015.2898-.2464.5797-.2754.8986-.0145.1594-.0435.3044-.1015.4493-.0724.116-.2029.1594-.3188.2174-.087.1884-.145.3768-.2754.5363-.087.1014-.232.1304-.2899.2608-.058.174-.145.3334-.2174.4928-.029.174.087.3624.029.5363-.1015.4348-.3189.8406-.5218 1.232-.1014.2898-.1739.5942-.3188.8696-.058.116-.203.145-.3189.1594-.1304.3189-.2754.6232-.3623.9566-.0435.3188-.0435.6522-.029.971 0 .145.087.261.145.3914.0579.174.0144.3478-.0146.5218-.5652.0724-1.145.1304-1.6957-.0435-.058-.0435-.0435-.116-.058-.174-.0435-.2608-.0725-.5362.0145-.7826.1884-.6812.3478-1.3624.5362-2.0436-.0724-.0725-.1739-.1304-.1739-.2464-.0145-.1884 0-.3913.0435-.5797.087-.319.3189-.5653.4348-.8697.0435-.1304.029-.2609.0435-.3913 0-.3044.174-.5508.3044-.8116.1304-.2174.2318-.4493.4058-.6378.116-.1014.116-.2608.2029-.3913.087-.1594.2319-.2899.2319-.4783.029-.2319-.058-.4638-.029-.6957.058-.6812.1884-1.3479.3044-2.029-.058-.0726-.145-.145-.174-.2465.0145-.0724.029-.1304.0435-.2029l-.1304-.2174c.058-.087.116-.1884.174-.2754-.058-.0435-.1305-.1014-.1885-.145.0725-.2173.0435-.5362.3043-.6376.029.0145.1015.029.1305.0434-.0435-.3768-.0435-.7681-.087-1.145-.1014-.4058-.116-.826-.0724-1.232.1449-.2173.4203-.3043.6667-.3188-.3189-.0724-.6378-.1014-.9421-.2029-.0145-.2609.029-.5218.0725-.7826.1304-.5073.0724-1.029.1449-1.5509.0725-.1449.2609-.1739.4203-.1449.1884.029.3768-.029.5653-.087 0-.0724.0145-.1594 0-.2319-.116-.5072-.087-1.029 0-1.5218.116-.6377.3768-1.261.855-1.7102.319-.3044.7827-.4494 1.2176-.4349.1449 0 .2318.145.3478.232.058-.058.116-.116.1594-.174-.0724-.2464-.1884-.5073-.1739-.7681.029-.5798.2174-1.174.6522-1.5654m4.522 4.1017c.029.029.029.029 0 0m.203.029c.0144.1015.0434.203-.0145.2899-.0725.029-.1595.029-.232.0725.203 0 .4059.0145.6088 0 .1594-.0435.1015-.2464.1015-.3624-.1015-.116-.3189-.0435-.4638 0m-.5073.6088c.145.1594.2174.4058.3478.5652.1884-.2464.3334-.5073.5508-.7247-.2609-.0145-.5218.0145-.7827-.0145-.0435.058-.0724.116-.116.174Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/counterstrike.svg b/assets/lib/simple-icons/icons/counterstrike.svg
new file mode 100644
index 00000000..eed35f12
--- /dev/null
+++ b/assets/lib/simple-icons/icons/counterstrike.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Counter-Strike</title><path d="M9.103.435c.4347-.3913 1.087-.5362 1.6522-.3623.2174.0725.4058.203.6087.3333.1595.1015.3479.145.4928.261.0725.058.0145.1594.0145.2318.1884.4493.2899.9421.1305 1.4204-.1305.1594-.3624.203-.5508.2754-.029.2029.0435.3913.0725.5942-.0435.029-.0725.058-.116.087.2754-.0145.5508-.0725.8262-.1304.1014-.1015.2608-.0435.3913-.058.0145-.203.087-.3914.087-.5943.029 0 .087-.0145.1159-.029.0145.145 0 .29.0435.4349.0724.058.1884.029.2754.0434 0 .058 0 .116.0144.174 1.6813-.0145 3.377 0 5.0583 0v.2464h.1595v-.9421h.1884c0 .2609-.0145.5072 0 .7681a.1107.1107 0 0 0 .0725.029c0 .029.0144.087.0144.116.058-.058.1305-.1015.2174-.0725.0145.0435.029.087.0435.145-.058.058-.087.1304-.058.2173.4639.0145.9277 0 1.406 0 .0434-.058.1159-.087.1884-.116.029.0146.0724.0436.087.058h.6811c.029.116.029.232.0145.3334h-.6957c-.0145.0145-.058.058-.087.0725-.0724-.0435-.1304-.0725-.2029-.116h-1.2609c-.2464.0725-.5073.058-.7537.0145v.2754h-2.0726c-.087.0725-.1739.116-.2898.1305.0434.2174-.203.2753-.29.4348-.0579.087-.1448.1449-.2318.1739-.0725.4493.087.8696.203 1.29-.1305.029-.2755.0724-.406.1014-.0724.2899-.1449.5942-.2028.884-.058.261-.261.4784-.5073.5798-.174.203-.4058.4059-.6812.4204-.1015.029-.174-.0435-.2464-.1015-.3623.029-.6957-.145-1.0146-.2899-.3478-.1594-.6667-.3623-1-.5507.029.2029-.0725.3768-.145.5507.1595.0725.3769.1305.4638.3044.058.1304.116.2754.116.4348-.0145.5218-.0725 1.0435-.1015 1.5653.0145.3769-.1739.7537-.4348 1.029-.1739-.0144-.3188-.0869-.4783-.1594-.058.1305-.1884.261-.116.4204.058.1884.058.3913.145.5652.4928.5218.9131 1.1015 1.2175 1.7537.3043.6233.5362 1.2755.7826 1.9277.0435 0 .1305-.0145.174-.0145.058.1884 0 .4058.116.5798.1014.1594.0724.3478.0724.5362-.029.4348-.058.8696-.1015 1.3044-.029.3044-.1014.6088-.1449.9132.0145.2318.116.4637.1014.6956-.0144.2175-.0144.4493-.1884.6088.0145.4928-.116.9855.058 1.4638.232.3189.4928.6233.7682.8986.3043.145.6667.174.9276.4349.1014.1594.0434.3478.0145.5217a6.7323 6.7323 0 0 1-1.8697 0c-.2464-.058-.4783-.1594-.7247-.1884-.3334.0145-.7247.145-1.029-.087-.029-.3913.1159-.7681.1884-1.145.029-.1304.1594-.2174.1449-.3478-.029-.4493-.058-.9131-.087-1.3624-.058-.029-.1594-.058-.1449-.145 0-.2173-.0725-.4347-.1304-.6377-.1015-.5507-.145-1.116-.1595-1.6812-.0145-.1595.087-.2754.203-.3769.029-.2464.058-.5072.0724-.7536-.0435-.1305-.145-.232-.203-.3479-.2608.029-.6376.087-.797-.1884-.3769-.5653-.7682-1.145-1.145-1.7102-.1595-.0145-.3479 0-.4928-.1015-.1595-.174-.261-.4058-.3624-.6232-.0435.1739-.0725.3623-.174.5072-.0869.145-.2318.2464-.3333.3769-.1014.2319-.1884.4638-.2753.6957-.1015.2898-.2464.5797-.2754.8986-.0145.1594-.0435.3044-.1015.4493-.0724.116-.2029.1594-.3188.2174-.087.1884-.145.3768-.2754.5363-.087.1014-.232.1304-.2899.2608-.058.174-.145.3334-.2174.4928-.029.174.087.3624.029.5363-.1015.4348-.3189.8406-.5218 1.232-.1014.2898-.1739.5942-.3188.8696-.058.116-.203.145-.3189.1594-.1304.3189-.2754.6232-.3623.9566-.0435.3188-.0435.6522-.029.971 0 .145.087.261.145.3914.0579.174.0144.3478-.0146.5218-.5652.0724-1.145.1304-1.6957-.0435-.058-.0435-.0435-.116-.058-.174-.0435-.2608-.0725-.5362.0145-.7826.1884-.6812.3478-1.3624.5362-2.0436-.0724-.0725-.1739-.1304-.1739-.2464-.0145-.1884 0-.3913.0435-.5797.087-.319.3189-.5653.4348-.8697.0435-.1304.029-.2609.0435-.3913 0-.3044.174-.5508.3044-.8116.1304-.2174.2318-.4493.4058-.6378.116-.1014.116-.2608.2029-.3913.087-.1594.2319-.2899.2319-.4783.029-.2319-.058-.4638-.029-.6957.058-.6812.1884-1.3479.3044-2.029-.058-.0726-.145-.145-.174-.2465.0145-.0724.029-.1304.0435-.2029l-.1304-.2174c.058-.087.116-.1884.174-.2754-.058-.0435-.1305-.1014-.1885-.145.0725-.2173.0435-.5362.3043-.6376.029.0145.1015.029.1305.0434-.0435-.3768-.0435-.7681-.087-1.145-.1014-.4058-.116-.826-.0724-1.232.1449-.2173.4203-.3043.6667-.3188-.3189-.0724-.6378-.1014-.9421-.2029-.0145-.2609.029-.5218.0725-.7826.1304-.5073.0724-1.029.1449-1.5509.0725-.1449.2609-.1739.4203-.1449.1884.029.3768-.029.5653-.087 0-.0724.0145-.1594 0-.2319-.116-.5072-.087-1.029 0-1.5218.116-.6377.3768-1.261.855-1.7102.319-.3044.7827-.4494 1.2176-.4349.1449 0 .2318.145.3478.232.058-.058.116-.116.1594-.174-.0724-.2464-.1884-.5073-.1739-.7681.029-.5798.2174-1.174.6522-1.5654m4.522 4.1017c.029.029.029.029 0 0m.203.029c.0144.1015.0434.203-.0145.2899-.0725.029-.1595.029-.232.0725.203 0 .4059.0145.6088 0 .1594-.0435.1015-.2464.1015-.3624-.1015-.116-.3189-.0435-.4638 0m-.5073.6088c.145.1594.2174.4058.3478.5652.1884-.2464.3334-.5073.5508-.7247-.2609-.0145-.5218.0145-.7827-.0145-.0435.058-.0724.116-.116.174Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/countingworkspro.svg b/assets/lib/simple-icons/icons/countingworkspro.svg
new file mode 100644
index 00000000..86498fa5
--- /dev/null
+++ b/assets/lib/simple-icons/icons/countingworkspro.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>CountingWorks PRO</title><path d="M11.327.512c-3.806.034-7.447 3.19-7.181 7.75.102 1.547.88 3.382 2.981 5.733a.365.365 0 0 0 .635-.23l.053-2.266a.36.36 0 0 0-.1-.255 5.047 5.047 0 0 1 3.407-8.502c2.27-.104 4.011 1.236 4.753 2.744.34.693.527 1.45.55 2.222a.357.357 0 0 0 .343.344c.482.015.962.064 1.437.147a.359.359 0 0 0 .424-.344 7.237 7.237 0 0 0-2.769-5.788C15.02 1.404 13.564.52 11.327.512zm4.94 8.362a14.8 14.8 0 0 0-2.515.26.364.364 0 0 0-.17.635l1.695 1.435a.36.36 0 0 0 .316.073 5.026 5.026 0 0 1 3.123.281c1.78.787 2.92 2.414 3.042 4.304.208 3.187-2.48 5.539-5.277 5.37a5.032 5.032 0 0 1-1.751-.412.365.365 0 0 0-.443.115c-.289.385-.603.75-.94 1.094a.367.367 0 0 0 .09.573c1.887 1.073 3.936 1.16 6.014.32 3.303-1.304 4.63-4.523 4.545-6.847-.096-2.641-1.48-5.072-4.085-6.402-.921-.47-2.04-.812-3.643-.799zm-12.931 1.2a.364.364 0 0 0-.152.052c-1.41.827-2.216 2.057-2.798 3.777-.285.892-.386 1.51-.386 2.436a7.276 7.276 0 0 0 7.157 7.141c1.129.017 2.104-.235 2.962-.583 1.45-.62 3.142-1.597 4.65-4.912a.363.363 0 0 0-.459-.489l-2.365.867a.357.357 0 0 0-.195.174 5.03 5.03 0 0 1-2.268 2.224C6 22.428 2.473 19.784 2.235 16.74c-.145-1.741.494-3.053 1.37-3.982.293-.308.41-.477.663-.662a.36.36 0 0 0 .098-.471 9.173 9.173 0 0 1-.653-1.326.366.366 0 0 0-.377-.225z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/coursera.svg b/assets/lib/simple-icons/icons/coursera.svg
index 644189b9..fe9674b2 100644
--- a/assets/lib/simple-icons/icons/coursera.svg
+++ b/assets/lib/simple-icons/icons/coursera.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Coursera icon</title><path d="M23.992 11.806a5.091 5.091 0 0 0-.018-.279v-.002-.002a5.98 5.98 0 0 0-.99-2.814 6.217 6.217 0 0 0-.867-1.039 6.289 6.289 0 0 0-1.64-1.13 7.016 7.016 0 0 0-3.051-.668 7.35 7.35 0 0 0-2.546.444 6.323 6.323 0 0 0-1.822.996 6.45 6.45 0 0 0-.333.29l-.085.085-.117.125h.001l-.056.055-.026.028-.141.147c-.104.117-.202.234-.296.349v-.002l-.004-.003c-.192.233-.37.476-.5.693-.089.14-.176.283-.259.427l-1.147 2.319.002.001-.06.118-.126.256c-.251.509-.521 1.017-.821 1.435-.672.737-1.431 1.098-2.406 1.098-.068 0-.139-.003-.209-.008-.588-.023-1.092-.162-1.539-.427a2.576 2.576 0 0 1-.994-1.03 2.659 2.659 0 0 1-.326-1.369l.002-.034c.031-.76.321-1.352.904-1.861.142-.124.291-.228.446-.32.021-.013.044-.024.065-.036.434-.237.927-.355 1.492-.355l.176.005c.899.034 1.592.314 2.145.863l1.734-3.113a6.845 6.845 0 0 0-1.399-.71c-.019-.007-.04-.016-.06-.022-.062-.022-.123-.045-.186-.065a7.425 7.425 0 0 0-1.716-.348 5.545 5.545 0 0 1-.046-.006c-.091-.005-.184-.016-.275-.02a9.966 9.966 0 0 0-.297-.007h-.055a7.005 7.005 0 0 0-3.028.67 6.176 6.176 0 0 0-2.502 2.166A6.006 6.006 0 0 0 0 12.087c-.002 1.564.568 2.938 1.701 4.093 1.184 1.211 2.721 1.864 4.567 1.941.118.005.235.008.353.008 1.045 0 2.011-.186 2.878-.558.217-.093.427-.201.642-.322.117-.067.228-.139.338-.215l.08-.055.137-.093c.164-.118.317-.246.467-.381l.052-.05c.088-.083.176-.168.259-.255l.311-.352.118-.148.056-.081.055-.079c.462-.776 1.965-3.601 1.965-3.601v-.006l.09-.172.074-.135c.222-.403.382-.689.594-.99l.006-.01c.493-.717 1.344-1.227 2.346-1.313 1.68-.145 3.152.959 3.287 2.465.135 1.507-1.117 2.846-2.798 2.991a3.417 3.417 0 0 1-1.011-.064l-.009.003c-1.232-.257-2.017-1.155-2.404-1.558l-1.617 2.974s.503.506.847.759c.346.253.791.501 1.146.656a7.151 7.151 0 0 0 2.838.589c.121 0 .097 0 .222-.005 1.844-.077 3.489-.784 4.675-1.995 1.123-1.15 1.733-2.463 1.738-4.018v-.047l-.011-.257z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Coursera</title><path d="M11.374 23.977c-4.183-.21-8.006-2.626-9.959-6.347-2.097-3.858-1.871-8.864.732-12.454C4.748 1.338 9.497-.698 14.281.23c4.583.857 8.351 4.494 9.358 8.911 1.122 4.344-.423 9.173-3.925 12.04-2.289 1.953-5.295 2.956-8.34 2.797zm7.705-8.05a588.737 588.737 0 0 0-3.171-1.887c-.903 1.483-2.885 2.248-4.57 1.665-2.024-.639-3.394-2.987-2.488-5.134.801-2.009 2.79-2.707 4.357-2.464a4.19 4.19 0 0 1 2.623 1.669c1.077-.631 2.128-1.218 3.173-1.855-2.03-3.118-6.151-4.294-9.656-2.754-3.13 1.423-4.89 4.68-4.388 7.919.54 3.598 3.73 6.486 7.716 6.404a7.664 7.664 0 0 0 6.404-3.563z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/coveralls.svg b/assets/lib/simple-icons/icons/coveralls.svg
index c030f30b..28e1c27d 100644
--- a/assets/lib/simple-icons/icons/coveralls.svg
+++ b/assets/lib/simple-icons/icons/coveralls.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Coveralls icon</title><path d="M0 12v12h24V0H0zm13.195-6.187l1.167 3.515 2.255.005c1.238.005 2.916.019 3.727.037l1.472.028-2.968 2.152c-1.63 1.181-2.976 2.18-2.99 2.212-.01.033.487 1.627 1.106 3.54.619 1.917 1.12 3.487 1.116 3.492-.005.01-1.35-.947-2.986-2.119-1.636-1.177-3-2.147-3.033-2.161-.028-.01-1.411.947-3.07 2.138-1.655 1.185-3.02 2.151-3.024 2.142-.004-.005.497-1.575 1.116-3.492.619-1.913 1.115-3.507 1.106-3.54-.014-.032-1.36-1.03-2.99-2.212L2.23 9.398l1.472-.028c.811-.018 2.49-.032 3.727-.037l2.254-.005 1.168-3.515a512.54 512.54 0 011.171-3.516c.005 0 .53 1.58 1.172 3.516z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Coveralls</title><path d="M0 12v12h24V0H0zm13.195-6.187l1.167 3.515 2.255.005c1.238.005 2.916.019 3.727.037l1.472.028-2.968 2.152c-1.63 1.181-2.976 2.18-2.99 2.212-.01.033.487 1.627 1.106 3.54.619 1.917 1.12 3.487 1.116 3.492-.005.01-1.35-.947-2.986-2.119-1.636-1.177-3-2.147-3.033-2.161-.028-.01-1.411.947-3.07 2.138-1.655 1.185-3.02 2.151-3.024 2.142-.004-.005.497-1.575 1.116-3.492.619-1.913 1.115-3.507 1.106-3.54-.014-.032-1.36-1.03-2.99-2.212L2.23 9.398l1.472-.028c.811-.018 2.49-.032 3.727-.037l2.254-.005 1.168-3.515a512.54 512.54 0 011.171-3.516c.005 0 .53 1.58 1.172 3.516z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/cpanel.svg b/assets/lib/simple-icons/icons/cpanel.svg
index cc92f1d1..7024ab6d 100644
--- a/assets/lib/simple-icons/icons/cpanel.svg
+++ b/assets/lib/simple-icons/icons/cpanel.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>cPanel icon</title><path d="M4.586 9.346a.538.538 0 00-.34.113.561.561 0 00-.197.299L2.74 14.654h.922a.528.528 0 00.332-.113.561.561 0 00.2-.291l.968-3.604h.744a.677.677 0 01.317.077.703.703 0 01.24.199.732.732 0 01.129.281.65.65 0 01-.01.326.698.698 0 01-.676.526h-.385a.538.538 0 00-.337.113.561.561 0 00-.2.291l-.24.896h1.201a1.939 1.939 0 001.62-.867 1.988 1.988 0 00.265-.586l.027-.1a1.854 1.854 0 00.026-.907 1.973 1.973 0 00-1.031-1.34 1.875 1.875 0 00-.88-.21H4.587zm18.447 0a.401.401 0 00-.25.082.377.377 0 00-.14.217l-1.334 5.01a1.7 1.7 0 00.57-.096 1.806 1.806 0 00.496-.266 1.74 1.74 0 00.385-.408 1.648 1.648 0 00.234-.531l.996-3.696a.23.23 0 00-.045-.217.246.246 0 00-.2-.095h-.712zM8.381 10.643l-.133.503a.564.564 0 00-.006.26.544.544 0 00.1.221.552.552 0 00.185.154.53.53 0 00.252.06h2.157a.101.101 0 01.084.038.098.098 0 01.015.088l-.02.072-.324 1.201-.013.055a.172.172 0 01-.067.105.205.205 0 01-.127.04H9.178a.147.147 0 01-.12-.057.136.136 0 01-.027-.13c.022-.074.071-.112.147-.112h.808a.53.53 0 00.332-.112.564.564 0 00.2-.293l.132-.498H8.84a1.131 1.131 0 00-.38.065 1.152 1.152 0 00-.323.176 1.194 1.194 0 00-.256.271 1.052 1.052 0 00-.156.346l-.028.1a1.095 1.095 0 00-.013.533 1.203 1.203 0 00.212.464 1.141 1.141 0 00.918.453l2.157.006a.899.899 0 00.875-.67l.525-1.95a1.101 1.101 0 00.01-.514 1.114 1.114 0 00-.205-.444 1.149 1.149 0 00-.377-.312 1.048 1.048 0 00-.498-.12H8.38zm-6.397.01a1.924 1.924 0 00-.638.107 1.989 1.989 0 00-.553.295 1.962 1.962 0 00-.7 1.045l-.027.1a1.936 1.936 0 00-.023.905 1.955 1.955 0 00.361.786 1.986 1.986 0 00.668.554 1.875 1.875 0 00.88.21h.464l.266-.983a.23.23 0 00-.043-.215.239.239 0 00-.198-.096h-.423a.702.702 0 01-.319-.074.67.67 0 01-.24-.195.732.732 0 01-.127-.281.706.706 0 01.01-.34.73.73 0 01.256-.377.675.675 0 01.42-.14h.697a.538.538 0 00.338-.114.561.561 0 00.199-.297l.232-.89h-1.5zm11.08 0l-.982 3.689a.23.23 0 00.045.217.238.238 0 00.195.095h.711a.413.413 0 00.248-.08.363.363 0 00.143-.21l.644-2.41h.745a.678.678 0 01.318.075.708.708 0 01.238.2.735.735 0 01.129.28.65.65 0 01-.01.327l-.398 1.506a.243.243 0 00.24.312h.713a.403.403 0 00.244-.08.366.366 0 00.143-.213l.332-1.248a1.897 1.897 0 00.029-.908 1.955 1.955 0 00-.361-.79 1.987 1.987 0 00-.668-.554 1.889 1.889 0 00-.885-.209h-1.813zm5.793 0a1.458 1.458 0 00-.488.081 1.489 1.489 0 00-.752.58 1.493 1.493 0 00-.205.454l-.406 1.505a1.018 1.018 0 00-.016.508 1.139 1.139 0 00.205.446 1.095 1.095 0 00.377.312 1.071 1.071 0 00.498.115h2.502a.528.528 0 00.332-.113.561.561 0 00.2-.291l.21-.791h-2.748a.2.2 0 01-.191-.252l.299-1.127a.34.34 0 01.113-.162.281.281 0 01.18-.064h1.232a.153.153 0 01.147.193l-.026.1c-.022.075-.071.113-.146.113h-.81a.538.538 0 00-.339.111.526.526 0 00-.191.293l-.133.49h2.004a.887.887 0 00.547-.181.864.864 0 00.32-.483l.12-.45a1.11 1.11 0 00.013-.513 1.076 1.076 0 00-.203-.443 1.146 1.146 0 00-.375-.313 1.047 1.047 0 00-.498-.119h-1.772Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>cPanel</title><path d="M4.586 9.346a.538.538 0 00-.34.113.561.561 0 00-.197.299L2.74 14.654h.922a.528.528 0 00.332-.113.561.561 0 00.2-.291l.968-3.604h.744a.677.677 0 01.317.077.703.703 0 01.24.199.732.732 0 01.129.281.65.65 0 01-.01.326.698.698 0 01-.676.526h-.385a.538.538 0 00-.337.113.561.561 0 00-.2.291l-.24.896h1.201a1.939 1.939 0 001.62-.867 1.988 1.988 0 00.265-.586l.027-.1a1.854 1.854 0 00.026-.907 1.973 1.973 0 00-1.031-1.34 1.875 1.875 0 00-.88-.21H4.587zm18.447 0a.401.401 0 00-.25.082.377.377 0 00-.14.217l-1.334 5.01a1.7 1.7 0 00.57-.096 1.806 1.806 0 00.496-.266 1.74 1.74 0 00.385-.408 1.648 1.648 0 00.234-.531l.996-3.696a.23.23 0 00-.045-.217.246.246 0 00-.2-.095h-.712zM8.381 10.643l-.133.503a.564.564 0 00-.006.26.544.544 0 00.1.221.552.552 0 00.185.154.53.53 0 00.252.06h2.157a.101.101 0 01.084.038.098.098 0 01.015.088l-.02.072-.324 1.201-.013.055a.172.172 0 01-.067.105.205.205 0 01-.127.04H9.178a.147.147 0 01-.12-.057.136.136 0 01-.027-.13c.022-.074.071-.112.147-.112h.808a.53.53 0 00.332-.112.564.564 0 00.2-.293l.132-.498H8.84a1.131 1.131 0 00-.38.065 1.152 1.152 0 00-.323.176 1.194 1.194 0 00-.256.271 1.052 1.052 0 00-.156.346l-.028.1a1.095 1.095 0 00-.013.533 1.203 1.203 0 00.212.464 1.141 1.141 0 00.918.453l2.157.006a.899.899 0 00.875-.67l.525-1.95a1.101 1.101 0 00.01-.514 1.114 1.114 0 00-.205-.444 1.149 1.149 0 00-.377-.312 1.048 1.048 0 00-.498-.12H8.38zm-6.397.01a1.924 1.924 0 00-.638.107 1.989 1.989 0 00-.553.295 1.962 1.962 0 00-.7 1.045l-.027.1a1.936 1.936 0 00-.023.905 1.955 1.955 0 00.361.786 1.986 1.986 0 00.668.554 1.875 1.875 0 00.88.21h.464l.266-.983a.23.23 0 00-.043-.215.239.239 0 00-.198-.096h-.423a.702.702 0 01-.319-.074.67.67 0 01-.24-.195.732.732 0 01-.127-.281.706.706 0 01.01-.34.73.73 0 01.256-.377.675.675 0 01.42-.14h.697a.538.538 0 00.338-.114.561.561 0 00.199-.297l.232-.89h-1.5zm11.08 0l-.982 3.689a.23.23 0 00.045.217.238.238 0 00.195.095h.711a.413.413 0 00.248-.08.363.363 0 00.143-.21l.644-2.41h.745a.678.678 0 01.318.075.708.708 0 01.238.2.735.735 0 01.129.28.65.65 0 01-.01.327l-.398 1.506a.243.243 0 00.24.312h.713a.403.403 0 00.244-.08.366.366 0 00.143-.213l.332-1.248a1.897 1.897 0 00.029-.908 1.955 1.955 0 00-.361-.79 1.987 1.987 0 00-.668-.554 1.889 1.889 0 00-.885-.209h-1.813zm5.793 0a1.458 1.458 0 00-.488.081 1.489 1.489 0 00-.752.58 1.493 1.493 0 00-.205.454l-.406 1.505a1.018 1.018 0 00-.016.508 1.139 1.139 0 00.205.446 1.095 1.095 0 00.377.312 1.071 1.071 0 00.498.115h2.502a.528.528 0 00.332-.113.561.561 0 00.2-.291l.21-.791h-2.748a.2.2 0 01-.191-.252l.299-1.127a.34.34 0 01.113-.162.281.281 0 01.18-.064h1.232a.153.153 0 01.147.193l-.026.1c-.022.075-.071.113-.146.113h-.81a.538.538 0 00-.339.111.526.526 0 00-.191.293l-.133.49h2.004a.887.887 0 00.547-.181.864.864 0 00.32-.483l.12-.45a1.11 1.11 0 00.013-.513 1.076 1.076 0 00-.203-.443 1.146 1.146 0 00-.375-.313 1.047 1.047 0 00-.498-.119h-1.772Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/cplusplus.svg b/assets/lib/simple-icons/icons/cplusplus.svg
index c46aaa86..fe2f58d6 100644
--- a/assets/lib/simple-icons/icons/cplusplus.svg
+++ b/assets/lib/simple-icons/icons/cplusplus.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>C++ icon</title><path d="M22.393 6c-.167-.29-.398-.543-.652-.69L12.925.22c-.508-.293-1.339-.293-1.847 0L2.26 5.31c-.508.293-.923 1.013-.923 1.6v10.18c0 .294.104.62.271.91.167.29.398.543.652.689l8.816 5.091c.508.293 1.339.293 1.847 0l8.816-5.091c.254-.146.485-.399.652-.689s.271-.616.271-.91V6.91c.002-.294-.102-.62-.269-.91zM12 19.109c-3.92 0-7.109-3.189-7.109-7.109S8.08 4.891 12 4.891a7.133 7.133 0 0 1 6.156 3.552l-3.076 1.781A3.567 3.567 0 0 0 12 8.445c-1.96 0-3.554 1.595-3.554 3.555S10.04 15.555 12 15.555a3.57 3.57 0 0 0 3.08-1.778l3.077 1.78A7.135 7.135 0 0 1 12 19.109zm7.109-6.714h-.79v.79h-.79v-.79h-.79v-.79h.79v-.79h.79v.79h.79v.79zm2.962 0h-.79v.79h-.79v-.79h-.789v-.79h.789v-.79h.79v.79h.79v.79z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>C++</title><path d="M22.394 6c-.167-.29-.398-.543-.652-.69L12.926.22c-.509-.294-1.34-.294-1.848 0L2.26 5.31c-.508.293-.923 1.013-.923 1.6v10.18c0 .294.104.62.271.91.167.29.398.543.652.69l8.816 5.09c.508.293 1.34.293 1.848 0l8.816-5.09c.254-.147.485-.4.652-.69.167-.29.27-.616.27-.91V6.91c.003-.294-.1-.62-.268-.91zM12 19.11c-3.92 0-7.109-3.19-7.109-7.11 0-3.92 3.19-7.11 7.11-7.11a7.133 7.133 0 016.156 3.553l-3.076 1.78a3.567 3.567 0 00-3.08-1.78A3.56 3.56 0 008.444 12 3.56 3.56 0 0012 15.555a3.57 3.57 0 003.08-1.778l3.078 1.78A7.135 7.135 0 0112 19.11zm7.11-6.715h-.79v.79h-.79v-.79h-.79v-.79h.79v-.79h.79v.79h.79zm2.962 0h-.79v.79h-.79v-.79h-.79v-.79h.79v-.79h.79v.79h.79z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/craftcms.svg b/assets/lib/simple-icons/icons/craftcms.svg
index 912828ac..aca75721 100644
--- a/assets/lib/simple-icons/icons/craftcms.svg
+++ b/assets/lib/simple-icons/icons/craftcms.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Craft CMS icon</title><path d="M21.5 0h-19C1.1 0 0 1.1 0 2.5v18.9C0 22.9 1.1 24 2.5 24h19c1.4 0 2.5-1.1 2.5-2.5v-19C24 1.1 22.9 0 21.5 0zM12 14.6c.8 0 1.6-.3 2.4-1l1.1 1.3c-1.2 1-2.5 1.5-3.9 1.5-2.7 0-4.3-1.8-4-4.3.4-2.5 2.7-4.3 5.4-4.3 1.3 0 2.5.5 3.3 1.4l-1.6 1.3c-.5-.6-1.2-1-2-1-1.6 0-2.8 1-3.1 2.5-.2 1.6.7 2.6 2.4 2.6z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Craft CMS</title><path d="M21.474 0H2.526A2.516 2.516 0 0 0 0 2.526v18.948A2.516 2.516 0 0 0 2.526 24h18.948A2.534 2.534 0 0 0 24 21.474V2.526A2.516 2.516 0 0 0 21.474 0m-9.516 14.625c.786 0 1.628-.31 2.442-1.039l1.123 1.291c-1.18.955-2.527 1.488-3.874 1.488-2.667 0-4.35-1.769-3.958-4.267.393-2.498 2.667-4.266 5.334-4.266 1.29 0 2.498.505 3.34 1.431l-1.572 1.291c-.45-.59-1.207-.982-2.05-.982-1.6 0-2.834 1.039-3.087 2.526-.224 1.488.674 2.527 2.302 2.527"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/cratedb.svg b/assets/lib/simple-icons/icons/cratedb.svg
new file mode 100644
index 00000000..15d63d87
--- /dev/null
+++ b/assets/lib/simple-icons/icons/cratedb.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>CrateDB</title><path d="M18 9V3h-6v6H0v6h6v6h6v-6h12V9h-6z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/createreactapp.svg b/assets/lib/simple-icons/icons/createreactapp.svg
new file mode 100644
index 00000000..ceb1ecc7
--- /dev/null
+++ b/assets/lib/simple-icons/icons/createreactapp.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Create React App</title><path d="M21.9192 10.846c0-1.22327-1.4398-2.30804-3.6538-2.97027.5326-2.24945.3001-4.03906-.7599-4.64447a1.69497 1.69497 0 0 0-.8504-.21305c-.9889 0-2.2388.69063-3.5011 1.88548-1.2623-1.18597-2.5086-1.87306-3.49577-1.87306a1.6796 1.6796 0 0 0-.86285.2166c-1.05459.60719-1.27297 2.38616-.74744 4.62495-2.20329.65868-3.63604 1.73458-3.6396 2.95252-.00355 1.2179 1.44164 2.308 3.65557 2.9685-.53262 2.2512-.30182 4.039.75988 4.6444.25893.1452.55186.2187.84865.2131.99066 0 2.24056-.6906 3.50286-1.8855 1.2606 1.186 2.5069 1.8731 3.4958 1.8731a1.7034 1.7034 0 0 0 .8629-.2166c1.0545-.6072 1.2711-2.3862.7474-4.6161 2.2033-.6676 3.636-1.7435 3.6378-2.9596Zm-7.952-5.54106c1.454-1.30138 2.363-1.44164 2.6862-1.44164a.83617.83617 0 0 1 .4296.10298c.5078.28939.7102 1.31025.5486 2.66311a10.07519 10.07519 0 0 1-.1775 1.02796 17.34708 17.34708 0 0 0-2.2335-.36751 17.49042 17.49042 0 0 0-1.4629-1.78961c.0656-.06569.1367-.13138.2095-.19529ZM9.56591 11.8526c.13848.2664.28584.5327.43849.8008.1527.268.3125.5397.4901.8078-.4812-.0693-.94812-.1563-1.39197-.2592.12428-.451.28229-.8948.46338-1.3494Zm-.49179-3.38033c.44918-.10475.91967-.19175 1.40788-.25921-.1775.26276-.3302.53262-.48999.81491-.15979.28229-.30004.53262-.43675.80249-.18109-.46161-.34147-.91434-.48114-1.35819Zm.92499 2.36843c.22019-.4652.46219-.93035.72619-1.39551.2663-.46516.5521-.91789.8468-1.35109.5167-.03905 1.0493-.06036 1.5979-.05858.5486.00177 1.0652.0213 1.5783.06214.2948.42965.577.8877.8434 1.34043.2663.45273.5113.92681.7314 1.39011-.2184.4652-.4616.9321-.7243 1.3937-.2628.4616-.5522.9197-.8469 1.3529-.5167.0408-1.0493.0604-1.5979.0604-.5486 0-1.0652-.0231-1.5783-.064-.2947-.4296-.5788-.877-.8451-1.3404-.2663-.4634-.5025-.9268-.7244-1.3901h-.00709Zm5.83399-2.62232c.4829.06747.9499.15446 1.3919.25744-.1313.43852-.2876.8877-.4687 1.34043-.1402-.26631-.2858-.53262-.4403-.80071-.1544-.26808-.3178-.53795-.4758-.79716h-.0071Zm.49 4.42432c.1527-.2687.2983-.5368.4368-.8043.1775.4617.3551.9162.4793 1.36-.4474.1048-.9179.19-1.4061.2574.1716-.2627.3373-.5338.4971-.8131h-.0071Zm-3.1655-6.53883c.3195.34088.6338.71016.9409 1.10608-.3036-.01243-.6143-.0213-.9285-.0213-.3143 0-.6356 0-.9463.0213.3036-.39414.6143-.7652.9339-1.10608ZM9.21971 3.97338a.85576.85576 0 0 1 .43852-.09943 2.32778 2.32778 0 0 1 .92147.23258 6.93702 6.93702 0 0 1 1.7754 1.20373l.2077.18997a17.47747 17.47747 0 0 0-1.4487 1.77541 17.55257 17.55257 0 0 0-2.24593.36574c-.07811-.34443-.14203-.68176-.17754-1.00666-.18464-1.34044.02841-2.36307.5273-2.65424l.00178-.0071Zm-.9392 9.00132a10.39917 10.39917 0 0 1-.98357-.3551c-1.26054-.5326-2.04172-1.2161-2.04172-1.8002 0-.5841.78473-1.26413 2.04349-1.78788a10.23244 10.23244 0 0 1 .96583-.34443 17.3821 17.3821 0 0 0 .80958 2.15531 17.53382 17.53382 0 0 0-.79361 2.1323Zm4.08349 3.391c-1.4541 1.3014-2.3631 1.4399-2.68801 1.4399a.83246.83246 0 0 1-.42965-.103c-.50777-.2894-.71017-1.3102-.5486-2.6631a9.95672 9.95672 0 0 1 .17754-1.0262c.7359.1695 1.48192.2917 2.23342.3658.4471.6285.9359 1.2264 1.463 1.7896l-.2077.197Zm.8113-.8007c-.3196-.3408-.6338-.7101-.9427-1.106.3053.0142.616.0213.9303.0213.3142 0 .6356 0 .9463-.0196-.3072.3942-.6196.7635-.9357 1.1043h.0018Zm3.9379 2.1305a.85608.85608 0 0 1-.4403.1048c-.3231 0-1.2428-.1421-2.6915-1.4381l-.2078-.19a17.46647 17.46647 0 0 0 1.447-1.7754 17.23638 17.23638 0 0 0 2.2477-.3657c.0781.3444.1402.6817.1775 1.0066.1758 1.3387-.0284 2.3613-.5344 2.6507l.0018.0071Zm1.9174-5.0492c-.3036.1242-.6249.2396-.9658.3426a17.48732 17.48732 0 0 0-.8114-2.1553c.3119-.6921.5782-1.40375.7972-2.13053.3336.10184.6619.22035.9836.35508 1.2587.53263 2.0417 1.21615 2.0399 1.80025-.0018.5841-.7847 1.257-2.0453 1.7808l.0018.0071Zm-5.873-.1811c.3223.0003.6375-.0949.9057-.2737a1.6294 1.6294 0 0 0 .6011-.7308c.1237-.2977.1563-.6254.0938-.9416a1.63017 1.63017 0 0 0-.4451-.83497 1.6301 1.6301 0 0 0-.8341-.44695 1.62958 1.62958 0 0 0-.9417.09172 1.62962 1.62962 0 0 0-.7321.59948 1.6301 1.6301 0 0 0-.2757.90522 1.6278 1.6278 0 0 0 .1229.6241c.0816.1979.2015.3778.3527.5294.1512.1515.3309.2718.5286.3538.1978.082.4098.1243.6239.1243ZM2.32756 1.012v19.6449H24V1.012H2.32756ZM23.1531 19.8118H3.17621V1.85886H23.1531V19.8118ZM8.06214 13.7932c-.53262 2.2512-.30182 4.039.75988 4.6444.25893.1452.55186.2187.84864.2131.99064 0 2.24054-.6906 3.50284-1.8855 1.2606 1.186 2.5069 1.8731 3.4958 1.8731.3018.0055.5995-.0692.8629-.2166 1.0546-.6072 1.2712-2.3862.7474-4.6161 2.2033-.6605 3.6361-1.7364 3.6378-2.9525.0018-1.21616-1.4398-2.30804-3.6538-2.97027.5327-2.24944.3001-4.03906-.7598-4.64447a1.69549 1.69549 0 0 0-.8504-.21305c-.989 0-2.2388.69063-3.5012 1.88548-1.2623-1.18597-2.5086-1.87305-3.49574-1.87305a1.67948 1.67948 0 0 0-.86285.2166c-1.0546.60719-1.27297 2.38615-.74745 4.62494-2.20328.65868-3.63604 1.73458-3.6396 2.95252-.00354 1.2179 1.44342 2.2974 3.65735 2.9614h-.00177Zm4.29826 2.5725c-1.4541 1.3014-2.36306 1.4399-2.68796 1.4399a.83246.83246 0 0 1-.42965-.103c-.50777-.2894-.71017-1.3102-.5486-2.6631a9.95672 9.95672 0 0 1 .17754-1.0262 17.6808 17.6808 0 0 0 2.23347.3658c.4471.6285.9358 1.2264 1.4629 1.7896l-.2077.197Zm4.4013-6.54945c-.1403-.26631-.2859-.53262-.4404-.80071-.1544-.26808-.3195-.53262-.4829-.79716.4829.06747.9499.15446 1.392.25744-.1296.43852-.2859.8877-.467 1.34043h-.0017Zm.4829 3.37325c-.4474.1048-.9179.19-1.4062.2575.1669-.2628.3303-.5338.4901-.8132.1597-.2793.3053-.5474.4367-.8042.1864.4705.348.9214.4758 1.3688l.0036-.0089Zm-.925-2.3701c-.2184.4651-.4616.9321-.7244 1.3937-.2628.4616-.5521.9196-.8469 1.3528-.5166.0409-1.0492.0604-1.5978.0604-.5486 0-1.0653-.0231-1.5784-.0639-.2947-.4297-.5788-.8771-.8451-1.3405-.2663-.4633-.5095-.9267-.73144-1.3901.22014-.4652.46224-.93033.72614-1.39548.2663-.46516.5522-.91789.8469-1.35109.5166-.03906 1.0492-.06037 1.5978-.05859.5486.00177 1.0653.0213 1.5784.06214.2947.42965.577.8877.8433 1.34043.2663.45273.5131.93569.7332 1.39899l-.0017-.0088Zm-5.8251 2.6418c-.4812-.0693-.94812-.1563-1.39197-.2592.13138-.4368.28939-.8877.47048-1.3405.13848.2663.28584.5326.43849.8007.1527.2681.3054.5309.483.799Zm-.49539-4.43856c-.15446.26632-.30004.53263-.43675.80249-.18583-.45806-.34857-.90901-.48824-1.35286.44918-.10475.91967-.19175 1.40788-.25921-.1651.26276-.3231.5344-.48289.80958ZM13.1735 15.565c-.3195-.3408-.6338-.7101-.9427-1.106.3054.0142.6161.0213.9303.0213.3143 0 .6356 0 .9463-.0196-.3054.3942-.6178.7635-.9339 1.1043Zm3.9379 2.1305a.85608.85608 0 0 1-.4403.1048c-.3231 0-1.2428-.1421-2.6915-1.4381l-.2077-.19a17.479 17.479 0 0 0 1.4469-1.7754 17.23363 17.23363 0 0 0 2.2477-.3657c.0781.3444.1402.6817.1775 1.0066.1776 1.3387-.0266 2.3613-.5326 2.6507v.0071Zm.9374-8.99421c.3336.10185.6619.22036.9836.35509 1.2588.53262 2.0417 1.21612 2.0399 1.80022-.0017.5842-.7829 1.2712-2.0435 1.795-.3035.1243-.6249.2397-.9658.3426a17.4868 17.4868 0 0 0-.8113-2.1553c.3124-.6967.5787-1.41311.7971-2.14471v.0071Zm-4.0834-3.38925c1.454-1.30138 2.3631-1.44164 2.6862-1.44164a.83626.83626 0 0 1 .4296.10298c.5078.28939.7102 1.31025.5486 2.66311a10.07586 10.07586 0 0 1-.1775 1.02797 17.34535 17.34535 0 0 0-2.2335-.36751 17.4762 17.4762 0 0 0-1.4629-1.78962c.0674-.07279.1385-.13848.2113-.20239l-.0018.0071Zm-.8078.79183c.3195.34088.6338.71016.9409 1.10608-.3036-.01243-.6143-.0213-.9285-.0213-.3143 0-.6356 0-.9463.0213.3036-.39414.6143-.7652.9339-1.10608ZM9.21971 3.97338a.85576.85576 0 0 1 .43852-.09943 2.32778 2.32778 0 0 1 .92147.23258 6.93702 6.93702 0 0 1 1.7754 1.20373l.2077.18997a17.47747 17.47747 0 0 0-1.4487 1.77541 17.55257 17.55257 0 0 0-2.24593.36574c-.07811-.34443-.14203-.68176-.17754-1.00666-.18464-1.34044.02841-2.36307.5273-2.65424l.00178-.0071Zm-1.921 5.05814a10.23244 10.23244 0 0 1 .96583-.34443 17.3821 17.3821 0 0 0 .80958 2.15531 17.53576 17.53576 0 0 0-.79716 2.1305 10.42642 10.42642 0 0 1-.98357-.355c-1.26054-.5327-2.04173-1.2162-2.04173-1.8003 0-.5841.78829-1.26233 2.04705-1.78608Zm5.85889.17754a1.62977 1.62977 0 0 0-.9058.27369 1.63023 1.63023 0 0 0-.6011.73075 1.63018 1.63018 0 0 0-.0938.9416c.0626.3162.2175.6068.4452.835.2277.2282.5179.3837.834.447.3161.0632.6438.0313.9418-.0918.2979-.123.5527-.3316.7321-.5995.1793-.2678.2753-.5828.2756-.9051a1.62678 1.62678 0 0 0-.1203-.6269 1.6295 1.6295 0 0 0-.3521-.53238 1.62911 1.62911 0 0 0-.5297-.35613 1.62834 1.62834 0 0 0-.6259-.1251v.00887Za1.62977 1.62977 0 0 0-.9058.27369 1.63023 1.63023 0 0 0-.6011.73075 1.63018 1.63018 0 0 0-.0938.9416c.0626.3162.2175.6068.4452.835.2277.2282.5179.3837.834.447.3161.0632.6438.0313.9418-.0918.2979-.123.5527-.3316.7321-.5995.1793-.2678.2753-.5828.2756-.9051a1.62678 1.62678 0 0 0-.1203-.6269 1.6295 1.6295 0 0 0-.3521-.53238 1.62911 1.62911 0 0 0-.5297-.35613 1.62834 1.62834 0 0 0-.6259-.1251v.00887Za1.62977 1.62977 0 0 0-.9058.27369 1.63023 1.63023 0 0 0-.6011.73075 1.63018 1.63018 0 0 0-.0938.9416c.0626.3162.2175.6068.4452.835.2277.2282.5179.3837.834.447.3161.0632.6438.0313.9418-.0918.2979-.123.5527-.3316.7321-.5995.1793-.2678.2753-.5828.2756-.9051a1.62678 1.62678 0 0 0-.1203-.6269 1.6295 1.6295 0 0 0-.3521-.53238 1.62911 1.62911 0 0 0-.5297-.35613 1.62834 1.62834 0 0 0-.6259-.1251v.00887Zm8.7616 1.64044c0-1.22322-1.4398-2.30799-3.6538-2.97022.5326-2.24944.3001-4.03906-.7599-4.64447a1.69497 1.69497 0 0 0-.8504-.21305c-.9889 0-2.2388.69063-3.5011 1.88548-1.2623-1.18597-2.5086-1.87305-3.49577-1.87305a1.6795 1.6795 0 0 0-.86285.2166c-1.05459.60719-1.27297 2.38615-.74744 4.62494-2.20329.65868-3.63604 1.73458-3.6396 2.95247-.00355 1.218 1.44164 2.3081 3.65557 2.9685-.53262 2.2512-.30182 4.0391.75988 4.6445.25893.1451.55186.2187.84865.213.99066 0 2.24056-.6906 3.50286-1.8854 1.2606 1.1859 2.5069 1.873 3.4958 1.873.3017.0056.5995-.0692.8629-.2166 1.0545-.6072 1.2711-2.3861.7474-4.616 2.2033-.6712 3.636-1.7471 3.6378-2.9632v.0035Zm-7.952-5.54456c1.454-1.30138 2.363-1.44164 2.6862-1.44164a.83617.83617 0 0 1 .4296.10298c.5078.28939.7102 1.31025.5486 2.66311a10.07519 10.07519 0 0 1-.1775 1.02796 17.34708 17.34708 0 0 0-2.2335-.36751 17.49042 17.49042 0 0 0-1.4629-1.78961c.0656-.06569.1367-.13138.2095-.19529ZM9.56591 11.8526c.13848.2664.28584.5327.43849.8008.1527.268.3125.5397.4901.8078-.4812-.0693-.94812-.1563-1.39197-.2592.12428-.451.28229-.8948.46338-1.3494Zm-.49179-3.38033c.44918-.10475.91967-.19175 1.40788-.25921-.1775.26276-.3302.53262-.48999.81491-.15979.28229-.30004.53262-.43675.80249-.18109-.46161-.34147-.91434-.48114-1.35819Zm.92499 2.36843c.22019-.4652.46219-.93035.72619-1.39551.2663-.46516.5521-.91789.8468-1.35109.5167-.03905 1.0493-.06036 1.5979-.05858.5486.00177 1.0652.0213 1.5783.06214.2948.42965.577.8877.8434 1.34043.2663.45273.5113.92681.7314 1.39011-.2184.4652-.4616.9321-.7243 1.3937-.2628.4616-.5522.9197-.8469 1.3529-.5167.0408-1.0493.0604-1.5979.0604-.5486 0-1.0652-.0231-1.5783-.064-.2947-.4296-.5788-.877-.8451-1.3404-.2663-.4634-.5025-.9268-.7244-1.3901h-.00709Zm5.83399-2.62232c.4829.06747.9499.15446 1.3919.25744-.1313.43852-.2876.8877-.4687 1.34043-.1402-.26631-.2858-.53262-.4403-.80071-.1544-.26808-.3178-.53795-.4758-.79716h-.0071Zm.49 4.42432c.1527-.2687.2983-.5368.4368-.8043.1775.4617.3551.9162.4793 1.36-.4474.1048-.9179.19-1.4061.2574.1716-.2627.3373-.5338.4971-.8131h-.0071Zm-3.1655-6.53883c.3195.34088.6338.71016.9409 1.10608-.3036-.01243-.6143-.0213-.9285-.0213-.3143 0-.6356 0-.9463.0213.3036-.39414.6143-.7652.9339-1.10608ZM9.21971 3.97338a.85576.85576 0 0 1 .43852-.09943 2.32778 2.32778 0 0 1 .92147.23258 6.93702 6.93702 0 0 1 1.7754 1.20373l.2077.18997a17.47747 17.47747 0 0 0-1.4487 1.77541 17.55257 17.55257 0 0 0-2.24593.36574c-.07811-.34443-.14203-.68176-.17754-1.00666-.18464-1.34044.02841-2.36307.5273-2.65424l.00178-.0071Zm-.9392 9.00132a10.39917 10.39917 0 0 1-.98357-.3551c-1.26054-.5326-2.04172-1.2161-2.04172-1.8002 0-.5841.78473-1.26413 2.04349-1.78788a10.23244 10.23244 0 0 1 .96583-.34443 17.3821 17.3821 0 0 0 .80958 2.15531 17.53382 17.53382 0 0 0-.79361 2.1323Zm4.08349 3.391c-1.4541 1.3014-2.3631 1.4399-2.68801 1.4399a.83246.83246 0 0 1-.42965-.103c-.50777-.2894-.71017-1.3102-.5486-2.6631a9.95672 9.95672 0 0 1 .17754-1.0262c.7359.1695 1.48192.2917 2.23342.3658.4471.6285.9359 1.2264 1.463 1.7896l-.2077.197Zm.8113-.8007c-.3196-.3408-.6338-.7101-.9427-1.106.3053.0142.616.0213.9303.0213.3142 0 .6356 0 .9463-.0196-.3072.3942-.6196.7635-.9357 1.1043h.0018Zm3.9379 2.1305a.85608.85608 0 0 1-.4403.1048c-.3231 0-1.2428-.1421-2.6915-1.4381l-.2078-.19a17.46647 17.46647 0 0 0 1.447-1.7754 17.23638 17.23638 0 0 0 2.2477-.3657c.0781.3444.1402.6817.1775 1.0066.1758 1.3387-.0284 2.3613-.5344 2.6507l.0018.0071Zm1.9174-5.0492c-.3036.1242-.6249.2396-.9658.3426a17.48732 17.48732 0 0 0-.8114-2.1553c.3119-.6921.5782-1.40375.7972-2.13053.3336.10184.6619.22035.9836.35508 1.2587.53263 2.0417 1.21615 2.0399 1.80025-.0018.5841-.7847 1.257-2.0453 1.7808l.0018.0071Zm-5.873-.1811c.3223.0003.6375-.0949.9057-.2737a1.6294 1.6294 0 0 0 .6011-.7308c.1237-.2977.1563-.6254.0938-.9416a1.63017 1.63017 0 0 0-.4451-.83497 1.6301 1.6301 0 0 0-.8341-.44695 1.62958 1.62958 0 0 0-.9417.09172 1.62962 1.62962 0 0 0-.7321.59948 1.6301 1.6301 0 0 0-.2757.90522 1.6278 1.6278 0 0 0 .1229.6241c.0816.1979.2015.3778.3527.5294.1512.1515.3309.2718.5286.3538.1978.082.4098.1243.6239.1243ZM.85042 22.1412V2.48913L0 3.34133V22.988h21.6689l.8486-.8468H.85042Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/creativecommons.svg b/assets/lib/simple-icons/icons/creativecommons.svg
index c9cc3e95..2fde5e74 100644
--- a/assets/lib/simple-icons/icons/creativecommons.svg
+++ b/assets/lib/simple-icons/icons/creativecommons.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Creative Commons icon</title><path d="M11.983 0c-3.292 0-6.19 1.217-8.428 3.485C1.25 5.819 0 8.844 0 12c0 3.189 1.217 6.148 3.522 8.45C5.827 22.75 8.822 24 11.983 24c3.16 0 6.222-1.25 8.593-3.583C22.815 18.214 24 15.287 24 12c0-3.255-1.186-6.214-3.458-8.483C18.238 1.217 15.275 0 11.983 0zm.033 2.17c2.7 0 5.103 1.02 6.98 2.893 1.843 1.841 2.83 4.274 2.83 6.937 0 2.696-.954 5.063-2.798 6.872-1.943 1.906-4.444 2.926-7.012 2.926-2.601 0-5.038-1.019-6.914-2.893-1.877-1.875-2.93-4.34-2.93-6.905 0-2.597 1.053-5.063 2.93-6.97 1.844-1.874 4.214-2.86 6.914-2.86zM8.68 8.278C6.723 8.278 5.165 9.66 5.165 12c0 2.38 1.465 3.722 3.581 3.722 1.358 0 2.516-.744 3.155-1.874l-1.491-.758c-.333.798-.839 1.037-1.478 1.037-1.105 0-1.61-.917-1.61-2.126 0-1.21.426-2.127 1.61-2.127.32 0 .96.173 1.332.97l1.597-.838c-.68-1.236-1.837-1.728-3.181-1.728zm6.932 0c-1.957 0-3.514 1.382-3.514 3.722 0 2.38 1.464 3.722 3.58 3.722 1.359 0 2.516-.744 3.155-1.874l-1.49-.758c-.333.798-.84 1.037-1.478 1.037-1.105 0-1.611-.917-1.611-2.126 0-1.21.426-2.127 1.61-2.127.32 0 .96.173 1.332.97l1.597-.838c-.68-1.236-1.837-1.728-3.181-1.728z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Creative Commons</title><path d="M11.983 0c-3.292 0-6.19 1.217-8.428 3.485C1.25 5.819 0 8.844 0 12c0 3.189 1.217 6.148 3.522 8.45C5.827 22.75 8.822 24 11.983 24c3.16 0 6.222-1.25 8.593-3.583C22.815 18.214 24 15.287 24 12c0-3.255-1.186-6.214-3.458-8.483C18.238 1.217 15.275 0 11.983 0zm.033 2.17c2.7 0 5.103 1.02 6.98 2.893 1.843 1.841 2.83 4.274 2.83 6.937 0 2.696-.954 5.063-2.798 6.872-1.943 1.906-4.444 2.926-7.012 2.926-2.601 0-5.038-1.019-6.914-2.893-1.877-1.875-2.93-4.34-2.93-6.905 0-2.597 1.053-5.063 2.93-6.97 1.844-1.874 4.214-2.86 6.914-2.86zM8.68 8.278C6.723 8.278 5.165 9.66 5.165 12c0 2.38 1.465 3.722 3.581 3.722 1.358 0 2.516-.744 3.155-1.874l-1.491-.758c-.333.798-.839 1.037-1.478 1.037-1.105 0-1.61-.917-1.61-2.126 0-1.21.426-2.127 1.61-2.127.32 0 .96.173 1.332.97l1.597-.838c-.68-1.236-1.837-1.728-3.181-1.728zm6.932 0c-1.957 0-3.514 1.382-3.514 3.722 0 2.38 1.464 3.722 3.58 3.722 1.359 0 2.516-.744 3.155-1.874l-1.49-.758c-.333.798-.84 1.037-1.478 1.037-1.105 0-1.611-.917-1.611-2.126 0-1.21.426-2.127 1.61-2.127.32 0 .96.173 1.332.97l1.597-.838c-.68-1.236-1.837-1.728-3.181-1.728z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/credly.svg b/assets/lib/simple-icons/icons/credly.svg
new file mode 100644
index 00000000..3d46812f
--- /dev/null
+++ b/assets/lib/simple-icons/icons/credly.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Credly</title><path d="M23.8 13.154a.299.299 0 0 0-.101-.024.407.407 0 0 0-.202.048c-.06.028-.092.08-.127.136-.087.128-.15.268-.226.4-.107.187-.246.351-.38.515-.135.156-.286.291-.424.44-.028.027-.072.043-.107.027-.028-.016-.036-.056-.032-.088.04-.38.075-.763.123-1.138.02-.172.043-.336.063-.512.028-.247.056-.487.087-.735l.234-1.824c.02-.128.032-.372-.135-.52a.446.446 0 0 0-.233-.116.46.46 0 0 0-.254.06c-.226.16-.297.504-.365.76-.142.603-.178 1.241-.471 1.804a1.772 1.772 0 0 1-.202.316.668.668 0 0 1-.186.18.332.332 0 0 1-.246.051.365.365 0 0 1-.238-.207.871.87 0 0 1-.063-.324 4.499 4.499 0 0 1 .24-1.585c.045-.132.089-.252.104-.383.028-.156.028-.38-.114-.516-.131-.128-.337-.18-.504-.128-.194.056-.31.244-.372.392-.198.463-.25.95-.317 1.446-.044.327-.127.64-.293.926a2.717 2.717 0 0 1-.603.72c-.118.087-.222.123-.328.107a.376.376 0 0 1-.278-.208.875.875 0 0 1-.095-.315 3.361 3.36 0 0 1-.036-.616c.004-.223 0-.44.044-.658.075-.39.678-1.937.808-2.345.135-.407.262-.823.353-1.246.08-.38.123-.767.11-1.15-.007-.277-.07-.576-.288-.736a.611.61 0 0 0-.603-.048.968.968 0 0 0-.455.428 2.53 2.53 0 0 0-.226.59 12.01 12.01 0 0 0-.266 1.29c-.071.429-.138.848-.206 1.268-.06.355-.206 1.614-.261 1.88-.06.272-.175.54-.301.787-.131.268-.258.536-.408.791a.694.694 0 0 1-.175.224c-.08.06-.182.088-.27.048-.102-.048-.146-.176-.166-.292-.075-.435-.012-.875.072-1.302.083-.431.44-2.4.519-2.851.099-.532.24-1.05.285-1.59.028-.388.09-.88-.202-1.187-.115-.136-.31-.16-.44-.136-.174.036-.31.176-.388.296-.1.128-.186.28-.258.467-.115.284-.186.615-.261.91l-.032.129c-.083.383-.143.77-.186 1.162a16.95 16.948 0 0 0-.06.632c-.008.1-.016.203-.027.307 0 .08.007.168-.028.244a.304.304 0 0 1-.052.068c-.08.072-.202.06-.31.056-.557-.016-1.045.3-1.35.755-.18.252-.281.542-.39.834-.01.048-.034.1-.054.152-.051.143-.13.327-.222.511a3.037 3.037 0 0 1-.317.46 3.285 3.285 0 0 1-.384.41 1.123 1.123 0 0 1-.515.26c-.174.04-.384-.043-.543-.203a.916.916 0 0 1-.206-.54c-.004-.055-.004-.115.028-.163.05-.068.146-.072.23-.076a1.623 1.623 0 0 0 1.375-1.015c.138-.34.178-.698.122-1.046a1.193 1.193 0 0 0-.19-.48.9.9 0 0 0-.396-.323c-.293-.14-.658-.127-1.01.004-.575.232-.951.74-1.134 1.562l-.02.088c-.114.487-.23 1-.582 1.354-.127.12-.261.163-.368.143-.044-.004-.08-.04-.103-.075-.096-.16.003-.532.15-1a4.1 4.1 0 0 0 .1-.366.925.925 0 0 0-.108-.495.783.783 0 0 0-.372-.324c-.143-.064-.31-.06-.468-.06h-.047c-.044 0-.103 0-.151-.012a.215.215 0 0 1-.147-.127.485.485 0 0 1 .016-.232c.004-.02.012-.048.016-.072a.368.368 0 0 0-.162-.412.509.509 0 0 0-.468-.036.768.768 0 0 0-.364.348.769.769 0 0 0-.103.48c.04.13.07.32.043.475-.055.28-.222.51-.384.74-.04.05-.072.106-.107.16a4.96 4.96 0 0 1-.706.825c-.372.335-.804.575-1.232.67-.745.165-1.506-.06-1.91-.734-.222-.38-.32-.827-.348-1.266a5.425 5.425 0 0 1 .424-2.516c.328-.76.816-1.52 1.715-1.614.353-.04.753.083.912.4.115.23.075.506 0 .75-.072.244-.175.49-.18.75-.003.26.124.54.37.616.238.072.495-.08.634-.29.138-.21.186-.46.245-.704a6.282 6.281 0 0 1 .662-1.634c.139-.236.297-.488.254-.76a.543.543 0 0 0-.373-.415.543.543 0 0 0-.535.144c-.134.148-.206.371-.387.43-.17.06-.35-.055-.507-.134-.6-.32-1.336-.312-1.963-.048-.634.25-1.146.735-1.526 1.294C.462 8.53.098 9.508.022 10.48c-.027.34-.031.695 0 1.038.036.46.1.854.214 1.206.139.423.317.79.547 1.094.266.34.587.6.94.747.372.148.784.22 1.192.208a3.172 3.172 0 0 0 1.177-.283 4.29 4.29 0 0 0 1.026-.68c.309-.26.594-.559.84-.89.162-.224.309-.46.44-.708a4.83 4.83 0 0 0 .178-.383c.044-.104.087-.215.202-.26.056-.043.15-.02.202.013.064.04.115.075.135.135.048.116.02.232-.004.332v.012c-.028.1-.055.203-.091.303-.14.424-.238.811-.16 1.195.045.207.128.387.25.527a.84.84 0 0 0 .504.264c.246.04.51-.028.725-.132.143-.068.278-.156.397-.26.06-.06.122-.12.174-.184.044-.06.087-.147.178-.143a.15.15 0 0 1 .107.064c.028.031.04.071.06.115.23.52.776.84 1.335.84h.07c.27 0 .556-.093.79-.22.27-.14.48-.348.7-.552.02-.016.045-.04.073-.044.035-.008.07.012.099.044a.26.26 0 0 1 .047.1c.135.34.46.6.824.66a1.1 1.1 0 0 0 .99-.356c.056-.06.104-.128.167-.176.064-.044.15-.076.222-.044.107.04.135.164.182.268.107.235.357.371.615.375.289 0 .554-.148.764-.34.195-.183.353-.399.516-.61a.328.328 0 0 1 .106-.096c.04-.024.096-.028.13 0 .033.024.045.06.06.091.163.4.587.652 1.01.648.417-.004.809-.224 1.103-.516.095-.092.194-.2.32-.21.14-.017.207.114.254.22.072.142.115.238.25.338.158.116.36.152.547.1.17-.04.34-.156.47-.316.072-.088.112-.204.19-.284.092-.087.132.028.136.1.016.116.016.236.008.352-.016.236-.052.471-.08.703-.011.068-.02.136-.063.188-.06.068-.166.08-.253.064a2.898 2.898 0 0 0-.321-.028l-.14-.016c-.201-.012-.4-.036-.61-.044h-.185c-.404 0-.733.048-1.03.16-.48.187-.852.57-1.003 1.018a1.305 1.305 0 0 0-.052.64c.04.203.13.403.282.587.265.315.68.515 1.149.543.408.02.852-.064 1.292-.26.848-.367 1.482-1.094 1.696-1.95 0-.02.01-.039.023-.043.298-.104.57-.248.813-.428.245-.187.467-.399.65-.643.09-.12.174-.243.253-.37.07-.125.13-.257.202-.38a.906.906 0 0 0 .13-.316.411.411 0 0 0-.05-.328.257.257 0 0 0-.135-.124m-13.68-1.63c.017-.071.045-.14.06-.206a1.9 1.9 0 0 1 .262-.504c.04-.048.08-.1.135-.136a.246.246 0 0 1 .186-.048c.107.02.183.128.202.236.032.18-.04.396-.114.555a1.097 1.097 0 0 1-.31.415c-.06.044-.114.088-.178.116-.028.008-.063.028-.115.028h-.016c-.055 0-.114-.028-.126-.088a.827.827 0 0 1 .015-.367m4.308-.184c-.004.072-.024.148-.028.223a4.91 4.91 0 0 0 0 .779c.012.152.047.3-.016.444a1.069 1.069 0 0 1-.567.643.555.555 0 0 1-.245.056c-.02 0-.04-.004-.06-.004-.12 0-.214-.092-.265-.18a.871.87 0 0 1-.1-.272 2.129 2.129 0 0 1 .072-1.122c.08-.22.202-.435.38-.594a.874.874 0 0 1 .563-.24.31.31 0 0 1 .206.064c.04.044.06.104.056.164a.05.05 0 0 1 .004.04m6.43 4.653c-.015.044-.06.104-.08.14-.042.08-.102.163-.161.235a2.562 2.562 0 0 1-.317.304c-.238.18-.503.311-.777.387a2.025 2.025 0 0 1-.487.072h-.04a.795.795 0 0 1-.515-.18.433.433 0 0 1-.158-.25.537.537 0 0 1 .047-.305.776.776 0 0 1 .38-.383c.326-.16.682-.176 1.019-.16.139.004.265.012.4.02.107.004.218.012.325.024.056 0 .115.004.17.012.044.004.092-.004.135.008.06.004.068.036.06.076"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/crehana.svg b/assets/lib/simple-icons/icons/crehana.svg
index c4fad6e9..d44da96c 100644
--- a/assets/lib/simple-icons/icons/crehana.svg
+++ b/assets/lib/simple-icons/icons/crehana.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Crehana icon</title><path d="M12,0C5.371,0,0,5.371,0,12c0,6.626,5.371,12,12,12s12-5.374,12-12C24,5.371,18.626,0,12,0z M17.94,9.843v7.915h-3.957 v-3.892h-3.895v3.83H6.13v-3.957h3.833V9.843H6.06V5.948h3.957v3.895h3.965V5.948h3.957V9.843z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Crehana</title><path d="M12,0C5.371,0,0,5.371,0,12c0,6.626,5.371,12,12,12s12-5.374,12-12C24,5.371,18.626,0,12,0z M17.94,9.843v7.915h-3.957 v-3.892h-3.895v3.83H6.13v-3.957h3.833V9.843H6.06V5.948h3.957v3.895h3.965V5.948h3.957V9.843z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/crowdin.svg b/assets/lib/simple-icons/icons/crowdin.svg
new file mode 100644
index 00000000..174c67f5
--- /dev/null
+++ b/assets/lib/simple-icons/icons/crowdin.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Crowdin</title><path d="M16.119 17.793a2.619 2.619 0 0 1-1.667-.562c-.546-.436-1.004-1.09-1.018-1.858-.008-.388.414-.388.414-.388l1.018-.008c.332.008.43.47.445.586.128 1.04.717 1.495 1.168 1.702.273.123.204.513-.362.528zm-5.695-5.287L8.5 12.252c-.867-.214-.844-.982-.807-1.247a5.119 5.119 0 0 1 .814-2.125c.545-.804 1.303-1.508 2.29-2.073 1.856-1.074 4.45-1.673 7.31-1.673 2.09 0 4.256.27 4.29.27.197.025.328.213.333.437a.377.377 0 0 1-.355.393l-.92-.01c-2.902 0-4.968.394-6.506 1.248-1.527.837-2.57 2.117-3.287 4.012-.076.163-.335 1.12-1.24 1.022zm2.533 7.823c-1.44 0-2.797-.622-3.825-1.746-.87-.96-1.397-1.931-1.493-3.164-.06-.813.3-1.094.788-1.044l1.988.218c.45.092.75.34.825.854.397 2.736 2.122 3.814 3.15 4.046.18.042.292.157.283.365a.412.412 0 0 1-.322.398c-.458.074-.936.073-1.394.073zm-4.101 2.418a14.216 14.216 0 0 1-2.307-.214c-1.202-.214-2.208-.582-3.072-1.13C1.41 20.095.163 17.786.014 15.048c-.037-.65-.11-1.89 1.427-1.797.638.033 1.653.343 2.368.548.887.247 1.314.933 1.314 1.608 0 3.858 3.494 6.408 5.02 6.408.654 0 .414.701.127.779-.502.136-1.15.153-1.413.153zM3.525 11.419c-.605-.109-1.194-.358-1.768-.5C-.018 10.479.284 8.688.45 8.196c1.617-4.757 6.746-6.35 10.887-6.773 3.898-.4 7.978-.092 11.778.967.31.083 1.269.327.718.891-.35.358-1.7-.016-2.073-.041-2.23-.167-4.434-.192-6.656.15-2.349.357-4.768 1.099-6.71 2.665-.938.758-1.76 1.723-2.313 2.866-.144.3-.256.6-.354.9-.11.327-.47 1.91-2.215 1.6zm9.94.917c.332-1.488 1.81-3.848 6.385-3.686 1.05.033.57.749.052.731-2.586-.09-3.815 1.578-4.457 3.27-.219.546-.68.626-1.271.53-.415-.074-.866-.123-.71-.846Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/crowdsource.svg b/assets/lib/simple-icons/icons/crowdsource.svg
new file mode 100644
index 00000000..8f9df638
--- /dev/null
+++ b/assets/lib/simple-icons/icons/crowdsource.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Crowdsource</title><path d="M12.0002 1.7719c-1.1291 0-2.0448.9157-2.0448 2.0448s.9157 2.0468 2.0448 2.0468 2.0448-.9177 2.0448-2.0468-.9157-2.0448-2.0448-2.0448zM7.3637 5.4534c-1.1291 0-2.0448.9177-2.0448 2.0468S6.2346 9.545 7.3637 9.545s2.0448-.9157 2.0448-2.0448-.9157-2.0468-2.0448-2.0468zm9.2731 0c-1.1291 0-2.0448.9177-2.0448 2.0468s.9157 2.0448 2.0448 2.0448 2.0448-.9157 2.0448-2.0448-.9157-2.0468-2.0448-2.0468zM1.3463 7.6369a1.3178 1.3178 0 0 0-.9296.3594c-.495.465-.5563 1.2308-.1445 1.7695.6607.864 1.9925 2.604 2.6522 3.4647a5.401 5.401 0 0 1 1.1113 3.2831c0 1.5191.7096 2.9662 1.9491 3.8416.767.5425 1.6144.9821 2.5155 1.3002v-3.9329c0-.5925.1911-1.1709.4717-1.6529-.1028-.9491-.5204-1.8117-1.1982-2.4953L2.3424 8.1056c-.2617-.2888-.6256-.4685-.9961-.4687zm21.3098 0a1.3178 1.3178 0 0 0-.916.3906l-4.5447 4.574-.9687.9746c-.6773.682-1.0948 1.5476-1.1987 2.4937.2654.4549.4544.9933.4722 1.5491v4.0389a10.2809 10.2809 0 0 0 2.5155-1.3027c1.2382-.8755 1.9491-2.3226 1.9491-3.8416a5.4125 5.4125 0 0 1 1.1113-3.285c.5943-.778 2.0414-2.6661 2.6522-3.4628.4118-.5386.3491-1.3045-.1445-1.7695a1.3143 1.3143 0 0 0-.9277-.3593zm-10.6559 1.498c-1.1291 0-2.0448.9177-2.0448 2.0468s.9157 2.0448 2.0448 2.0448 2.0448-.9157 2.0448-2.0448c.0001-1.1291-.9157-2.0468-2.0448-2.0468zm.002 5.7283c-1.6582 0-3.0018 1.2802-3.0018 2.8593v4.0916c.9518.2673 1.9567.414 2.9999.414s2.0481-.1454 2.9999-.414v-4.1795c-.0492-1.5382-1.3712-2.7714-2.998-2.7714z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/crunchbase.svg b/assets/lib/simple-icons/icons/crunchbase.svg
index 6344737c..07ecb4dd 100644
--- a/assets/lib/simple-icons/icons/crunchbase.svg
+++ b/assets/lib/simple-icons/icons/crunchbase.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Crunchbase icon</title><path d="M21.6 0H2.4A2.41 2.41 0 0 0 0 2.4v19.2A2.41 2.41 0 0 0 2.4 24h19.2a2.41 2.41 0 0 0 2.4-2.4V2.4A2.41 2.41 0 0 0 21.6 0zM7.045 14.465A2.11 2.11 0 0 0 9.84 13.42h1.66a3.69 3.69 0 1 1 0-1.75H9.84a2.11 2.11 0 1 0-2.795 2.795zm11.345.845a3.55 3.55 0 0 1-1.06.63 3.68 3.68 0 0 1-3.39-.38v.38h-1.51V5.37h1.5v4.11a3.74 3.74 0 0 1 1.8-.63H16a3.67 3.67 0 0 1 2.39 6.46zm-.223-2.766a2.104 2.104 0 1 1-4.207 0 2.104 2.104 0 0 1 4.207 0z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Crunchbase</title><path d="M21.6 0H2.4A2.41 2.41 0 0 0 0 2.4v19.2A2.41 2.41 0 0 0 2.4 24h19.2a2.41 2.41 0 0 0 2.4-2.4V2.4A2.41 2.41 0 0 0 21.6 0zM7.045 14.465A2.11 2.11 0 0 0 9.84 13.42h1.66a3.69 3.69 0 1 1 0-1.75H9.84a2.11 2.11 0 1 0-2.795 2.795zm11.345.845a3.55 3.55 0 0 1-1.06.63 3.68 3.68 0 0 1-3.39-.38v.38h-1.51V5.37h1.5v4.11a3.74 3.74 0 0 1 1.8-.63H16a3.67 3.67 0 0 1 2.39 6.46zm-.223-2.766a2.104 2.104 0 1 1-4.207 0 2.104 2.104 0 0 1 4.207 0z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/crunchyroll.svg b/assets/lib/simple-icons/icons/crunchyroll.svg
index 059127b4..4137666e 100644
--- a/assets/lib/simple-icons/icons/crunchyroll.svg
+++ b/assets/lib/simple-icons/icons/crunchyroll.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Crunchyroll icon</title><path d="M2.933 13.467a10.55 10.55 0 1 1 21.067-.8V12c0-6.627-5.373-12-12-12S0 5.373 0 12s5.373 12 12 12h.8a10.617 10.617 0 0 1-9.867-10.533zM19.2 14a3.85 3.85 0 0 1-1.333-7.467A7.89 7.89 0 0 0 14 5.6a8.4 8.4 0 1 0 8.4 8.4 6.492 6.492 0 0 0-.133-1.6A3.415 3.415 0 0 1 19.2 14z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Crunchyroll</title><path d="M2.933 13.467a10.55 10.55 0 1 1 21.067-.8V12c0-6.627-5.373-12-12-12S0 5.373 0 12s5.373 12 12 12h.8a10.617 10.617 0 0 1-9.867-10.533zM19.2 14a3.85 3.85 0 0 1-1.333-7.467A7.89 7.89 0 0 0 14 5.6a8.4 8.4 0 1 0 8.4 8.4 6.492 6.492 0 0 0-.133-1.6A3.415 3.415 0 0 1 19.2 14z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/cryengine.svg b/assets/lib/simple-icons/icons/cryengine.svg
index 2b1b9318..06fdf24e 100644
--- a/assets/lib/simple-icons/icons/cryengine.svg
+++ b/assets/lib/simple-icons/icons/cryengine.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>CRYENGINE icon</title><path d="M14.714,14.875c0.296,0,0.58,0.102,0.807,0.288l0.014,0.012l-0.149,0.238 c-0.184-0.168-0.421-0.26-0.671-0.26c-0.549,0-0.995,0.446-0.995,0.995c0,0.549,0.446,0.995,0.995,0.995 c0.497,0,0.91-0.366,0.983-0.842l0.002-0.014h-0.852l0.173-0.277h0.966v0.139c0,0.702-0.571,1.273-1.272,1.273 c-0.702,0-1.272-0.571-1.272-1.273C13.441,15.446,14.012,14.875,14.714,14.875z M1.272,14.875c0.347,0,0.68,0.144,0.918,0.392 l0.012,0.013l-0.157,0.242c-0.19-0.235-0.47-0.37-0.774-0.37c-0.549,0-0.995,0.446-0.995,0.995c0,0.549,0.446,0.995,0.995,0.995 c0.287,0,0.559-0.123,0.748-0.339l0.01-0.012l0.211,0.18C2,17.256,1.646,17.419,1.272,17.419C0.571,17.419,0,16.849,0,16.147 C0,15.446,0.571,14.875,1.272,14.875z M3.712,14.89c0.639,0,0.894,0.3,0.894,0.733c0,0.363-0.184,0.619-0.621,0.706l-0.014,0.003 l0.702,1.075H4.337l-0.663-1.058H3.196v1.058H2.923V14.89H3.712z M9.592,17.163v0.244H7.87v-0.244H9.592z M5.574,14.89l0.691,1.149 c0.024,0.042,0.038,0.087,0.045,0.115c0.01-0.029,0.019-0.067,0.043-0.109l0.006-0.01l0.688-1.145h0.297l-1.564,2.518H5.509 l0.647-1.05L5.274,14.89H5.574z M23.096,17.163v0.244h-1.722v-0.244H23.096z M18.535,14.89l1.512,2.085 c-0.013-0.059-0.02-0.081-0.021-0.127l0-0.009V14.89h0.272v2.518h-0.258l-1.515-2.092c0.01,0.033,0.023,0.078,0.024,0.142l0,0.012 v1.938h-0.272V14.89H18.535z M17.174,14.89v2.518h-0.272V14.89H17.174z M10.779,14.89l1.512,2.085 c-0.013-0.059-0.02-0.081-0.021-0.127l0-0.009V14.89h0.272v2.518h-0.258l-1.515-2.092c0.01,0.033,0.023,0.078,0.024,0.142l0,0.012 v1.938h-0.272V14.89H10.779z M23.096,15.955v0.248h-1.722v-0.248H23.096z M9.592,15.955v0.248H7.87v-0.248H9.592z M3.716,15.134 h-0.52v0.967h0.517c0.384,0,0.615-0.112,0.615-0.478C4.327,15.256,4.096,15.134,3.716,15.134z M23.707,14.567 c0.162,0,0.293,0.13,0.293,0.292c0,0.162-0.131,0.292-0.293,0.292s-0.293-0.13-0.293-0.292 C23.415,14.697,23.546,14.567,23.707,14.567z M23.096,14.89v0.244h-1.722V14.89H23.096z M9.592,14.89v0.244h-1.47l0.151-0.244 H9.592z M23.707,14.616c-0.134,0-0.242,0.108-0.242,0.242c0,0.134,0.108,0.242,0.242,0.242c0.134,0,0.243-0.108,0.243-0.242 C23.95,14.725,23.841,14.616,23.707,14.616z M23.709,14.707c0.075,0,0.108,0.038,0.108,0.091c0,0.04-0.018,0.07-0.059,0.084 l-0.006,0.002l0.08,0.123h-0.058l-0.067-0.104c-0.002-0.002-0.003-0.007-0.004-0.011l0-0.003h-0.058v0.118h-0.048v-0.301H23.709z M23.71,14.753h-0.065v0.091h0.064c0.041,0,0.06-0.011,0.06-0.045C23.769,14.766,23.75,14.753,23.71,14.753z M10.909,6.6 l0.088-0.007c-2.36,0.549-3.761,2.332-3.761,2.564l0,0.001c0,0.001,0.001-0.009,0.002,0.036l0,0.006h0.001 c0.048,0.253,0.745,1.475,3.441,2.201c-3.09-0.245-4.494-1.748-4.563-2.188L6.116,9.199H6.115c0-0.046-0.001-0.037-0.001-0.034l0,0 l0.001-0.013C6.152,8.7,8.043,6.84,10.909,6.6l0.088-0.007L10.909,6.6z M11.89,6.581c3.209,0.167,5.076,2.075,5.093,2.609l0-0.001 c0-0.002-0.001,0-0.001,0.033l0,0.006H16.98c-0.025,0.268-1.045,1.358-2.571,1.86c-1.865,0.613-4.866,0.39-4.866-1.948 c0-1.097,0.894-1.99,1.992-1.99c1.108,0,1.997,0.897,1.997,1.995c0,0.535-0.231,1.053-0.581,1.419 c0.327-0.006,1.517-0.093,2.638-1.017c0.124-0.121,0.203-0.222,0.236-0.284c0.009-0.016,0.022-0.045,0.02-0.072 C15.846,8.951,14.557,7.107,11.89,6.581z M11.533,8.008c-0.625,0-1.131,0.506-1.131,1.131c0,0.625,0.506,1.131,1.131,1.131 c0.624,0,1.131-0.506,1.131-1.131C12.664,8.515,12.158,8.008,11.533,8.008z M16.982,9.19C16.982,9.19,16.982,9.19,16.982,9.19 L16.982,9.19z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>CRYENGINE</title><path d="M14.714 14.8735c.296 0 .58.102.807.288l.014.012-.149.238c-.184-.168-.421-.26-.671-.26-.549 0-.995.446-.995.995 0 .549.446.995.995.995.497 0 .91-.366.983-.842l.002-.014h-.852l.173-.277h.966v.139c0 .702-.571 1.273-1.272 1.273-.702 0-1.272-.571-1.272-1.273-.002-.703.569-1.274 1.271-1.274zm-13.442 0c.347 0 .68.144.918.392l.012.013-.157.242c-.19-.235-.47-.37-.774-.37-.549 0-.995.446-.995.995 0 .549.446.995.995.995.287 0 .559-.123.748-.339l.01-.012.211.18c-.24.285-.594.448-.968.448-.701 0-1.272-.57-1.272-1.272 0-.701.571-1.272 1.272-1.272zm2.44.015c.639 0 .894.3.894.733 0 .363-.184.619-.621.706l-.014.003.702 1.075h-.336l-.663-1.058h-.478v1.058h-.273v-2.517zm5.88 2.273v.244H7.87v-.244zm-4.018-2.273l.691 1.149c.024.042.038.087.045.115.01-.029.019-.067.043-.109l.006-.01.688-1.145h.297l-1.564 2.518h-.271l.647-1.05-.882-1.468zm17.522 2.273v.244h-1.722v-.244zm-4.561-2.273l1.512 2.085c-.013-.059-.02-.081-.021-.127v-1.958h.272v2.518h-.258l-1.515-2.092c.01.033.023.078.024.142v1.95h-.272v-2.518zm-1.361 0v2.518h-.272v-2.518zm-6.395 0l1.512 2.085c-.013-.059-.02-.081-.021-.127v-1.958h.272v2.518h-.258l-1.515-2.092c.01.033.023.078.024.142v1.95h-.272v-2.518zm12.317 1.065v.248h-1.722v-.248zm-13.504 0v.248H7.87v-.248zm-5.876-.821h-.52v.967h.517c.384 0 .615-.112.615-.478-.001-.367-.232-.489-.612-.489zm19.991-.567c.162 0 .293.13.293.292 0 .162-.131.292-.293.292-.162 0-.293-.13-.293-.292.001-.162.132-.292.293-.292zm-.611.323v.244h-1.722v-.244zm-13.504 0v.244h-1.47l.151-.244zm14.115-.274c-.134 0-.242.108-.242.242s.108.242.242.242.243-.108.243-.242c0-.133-.109-.242-.243-.242zm.002.091c.075 0 .108.038.108.091 0 .04-.018.07-.059.084l-.006.002.08.123h-.058l-.067-.104c-.002-.002-.003-.007-.004-.011v-.003h-.058v.118h-.048v-.301h.112zm.001.046h-.065v.091h.064c.041 0 .06-.011.06-.045 0-.033-.019-.046-.059-.046zm-12.801-8.153l.088-.007c-2.36.549-3.761 2.332-3.761 2.564v.001c0 .001.001-.009.002.036v.006h.001c.048.253.745 1.475 3.441 2.201-3.09-.245-4.494-1.748-4.563-2.188l-.001-.014h-.001c0-.046-.001-.037-.001-.034l.001-.013c.037-.452 1.928-2.312 4.794-2.552l.088-.007zm.981-.019c3.209.167 5.076 2.075 5.093 2.609v-.001c0-.002-.001 0-.001.033v.006h-.002c-.025.268-1.045 1.358-2.571 1.86-1.865.613-4.866.39-4.866-1.948 0-1.097.894-1.99 1.992-1.99 1.108 0 1.997.897 1.997 1.995 0 .535-.231 1.053-.581 1.419.327-.006 1.517-.093 2.638-1.017.124-.121.203-.222.236-.284.009-.016.022-.045.02-.072.001-.24-1.288-2.084-3.955-2.61zm-.357 1.427c-.625 0-1.131.506-1.131 1.131s.506 1.131 1.131 1.131c.624 0 1.131-.506 1.131-1.131 0-.624-.506-1.131-1.131-1.131zm5.449 1.182z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/crystal.svg b/assets/lib/simple-icons/icons/crystal.svg
new file mode 100644
index 00000000..760325a1
--- /dev/null
+++ b/assets/lib/simple-icons/icons/crystal.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Crystal</title><path d="M23.964 15.266l-8.687 8.669c-.034.035-.086.052-.121.035L3.29 20.79c-.052-.017-.087-.052-.087-.086L.007 8.856c-.018-.053 0-.087.035-.122L8.728.065c.035-.035.087-.052.121-.035l11.866 3.18c.052.017.087.052.087.086l3.18 11.848c.034.053.016.087-.018.122zm-11.64-9.433L.667 8.943c-.017 0-.035.034-.017.052l8.53 8.512c.017.017.052.017.052-.017l3.127-11.64c.017 0-.018-.035-.035-.017Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/csharp.svg b/assets/lib/simple-icons/icons/csharp.svg
index 4de9730f..7da05180 100644
--- a/assets/lib/simple-icons/icons/csharp.svg
+++ b/assets/lib/simple-icons/icons/csharp.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>C Sharp icon</title><path d="M12 0A12 12 0 000 12a12 12 0 0012 12 12 12 0 0012-12A12 12 0 0012 0zM9.426 7.12a5.55 5.55 0 011.985.38v1.181a4.5 4.5 0 00-2.25-.566 3.439 3.439 0 00-2.625 1.087 4.099 4.099 0 00-1.012 2.906 3.9 3.9 0 00.945 2.754 3.217 3.217 0 002.482 1.023 4.657 4.657 0 002.464-.634l-.004 1.08a5.543 5.543 0 01-2.625.555 4.211 4.211 0 01-3.228-1.297 4.793 4.793 0 01-1.212-3.409 5.021 5.021 0 011.365-3.663 4.631 4.631 0 013.473-1.392 5.55 5.55 0 01.12-.004 5.55 5.55 0 01.122 0zm5.863.155h.836l-.555 2.652h1.661l.567-2.652h.81l-.555 2.652 1.732-.004-.15.697H17.91l-.412 1.98h1.852l-.176.698h-1.816l-.58 2.625h-.83l.567-2.625h-1.65l-.555 2.625h-.81l.555-2.625h-1.74l.131-.698h1.748l.401-1.976h-1.826l.138-.697h1.826zm.142 3.345L15 12.6h1.673l.423-1.98z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>C Sharp</title><path d="M12 0A12 12 0 000 12a12 12 0 0012 12 12 12 0 0012-12A12 12 0 0012 0zM9.426 7.12a5.55 5.55 0 011.985.38v1.181a4.5 4.5 0 00-2.25-.566 3.439 3.439 0 00-2.625 1.087 4.099 4.099 0 00-1.012 2.906 3.9 3.9 0 00.945 2.754 3.217 3.217 0 002.482 1.023 4.657 4.657 0 002.464-.634l-.004 1.08a5.543 5.543 0 01-2.625.555 4.211 4.211 0 01-3.228-1.297 4.793 4.793 0 01-1.212-3.409 5.021 5.021 0 011.365-3.663 4.631 4.631 0 013.473-1.392 5.55 5.55 0 01.12-.004 5.55 5.55 0 01.122 0zm5.863.155h.836l-.555 2.652h1.661l.567-2.652h.81l-.555 2.652 1.732-.004-.15.697H17.91l-.412 1.98h1.852l-.176.698h-1.816l-.58 2.625h-.83l.567-2.625h-1.65l-.555 2.625h-.81l.555-2.625h-1.74l.131-.698h1.748l.401-1.976h-1.826l.138-.697h1.826zm.142 3.345L15 12.6h1.673l.423-1.98z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/css3.svg b/assets/lib/simple-icons/icons/css3.svg
index 2f54be88..5ca6bec6 100644
--- a/assets/lib/simple-icons/icons/css3.svg
+++ b/assets/lib/simple-icons/icons/css3.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>CSS3 icon</title><path d="M1.5 0h21l-1.91 21.563L11.977 24l-8.565-2.438L1.5 0zm17.09 4.413L5.41 4.41l.213 2.622 10.125.002-.255 2.716h-6.64l.24 2.573h6.182l-.366 3.523-2.91.804-2.956-.81-.188-2.11h-2.61l.29 3.855L12 19.288l5.373-1.53L18.59 4.414z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>CSS3</title><path d="M1.5 0h21l-1.91 21.563L11.977 24l-8.565-2.438L1.5 0zm17.09 4.413L5.41 4.41l.213 2.622 10.125.002-.255 2.716h-6.64l.24 2.573h6.182l-.366 3.523-2.91.804-2.956-.81-.188-2.11h-2.61l.29 3.855L12 19.288l5.373-1.53L18.59 4.414z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/cssmodules.svg b/assets/lib/simple-icons/icons/cssmodules.svg
new file mode 100644
index 00000000..5f95a9fd
--- /dev/null
+++ b/assets/lib/simple-icons/icons/cssmodules.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>CSS Modules</title><path d="M19.705 2.147v19.706H0V2.147h19.705ZM.141 21.712h19.423V2.288H.141v19.424Zm2.561-10.444c.428 0 .76.113.996.338.236.225.367.482.393.768h-.446a.926.926 0 0 0-.303-.517c-.15-.128-.362-.191-.635-.191-.333 0-.602.117-.808.352-.204.233-.306.59-.306 1.074 0 .396.092.717.276.964.186.245.462.368.828.368.338 0 .595-.13.771-.389.094-.136.163-.316.21-.538h.446c-.04.356-.172.654-.396.895-.268.29-.63.434-1.086.434-.392 0-.722-.118-.989-.356-.35-.315-.527-.8-.527-1.456 0-.499.132-.907.396-1.226.285-.347.679-.52 1.18-.52Zm2.28 2.38c.01.192.056.348.135.467.152.224.42.336.803.336.172 0 .328-.024.47-.073.272-.095.409-.266.409-.511 0-.184-.058-.315-.173-.393-.116-.077-.299-.144-.547-.2l-.458-.104c-.299-.067-.51-.142-.635-.223-.214-.141-.322-.352-.322-.633 0-.303.105-.553.315-.747.21-.195.508-.292.893-.292.354 0 .655.085.902.257.248.17.372.443.372.82h-.43a.847.847 0 0 0-.147-.417c-.14-.177-.377-.265-.71-.265-.27 0-.465.057-.583.17a.533.533 0 0 0-.177.396c0 .166.07.287.207.364.09.049.295.11.614.184l.474.108c.229.052.405.123.53.214.214.158.321.387.321.687 0 .375-.136.642-.41.803a1.822 1.822 0 0 1-.947.242c-.42 0-.75-.108-.987-.322-.237-.213-.354-.502-.35-.867h.43Zm3.137 0c.011.192.056.348.136.467.152.224.42.336.803.336.171 0 .328-.024.469-.073.273-.095.41-.266.41-.511 0-.184-.058-.315-.173-.393-.117-.077-.3-.144-.548-.2l-.457-.104c-.3-.067-.511-.142-.635-.223-.215-.141-.322-.352-.322-.633 0-.303.105-.553.315-.747.21-.195.508-.292.892-.292.355 0 .655.085.902.257.249.17.373.443.373.82h-.43a.847.847 0 0 0-.148-.417c-.14-.177-.376-.265-.71-.265-.27 0-.464.057-.582.17a.533.533 0 0 0-.177.396c0 .166.069.287.207.364.09.049.295.11.614.184l.474.108c.228.052.404.123.529.214.214.158.322.387.322.687 0 .375-.137.642-.41.803a1.822 1.822 0 0 1-.947.242c-.42 0-.75-.108-.987-.322-.238-.213-.355-.502-.35-.867h.43Zm-6.197 3.6.97 2.857.965-2.857h.648v3.38h-.434v-1.995c0-.07.001-.183.004-.343.003-.16.005-.33.005-.513l-.964 2.85h-.453l-.97-2.85v.104c0 .083 0 .21.004.38.004.168.007.292.007.372v1.994h-.437v-3.379h.655Zm4.743-.091c.597 0 1.038.191 1.325.575.224.299.336.681.336 1.147 0 .505-.128.924-.384 1.259-.3.392-.73.589-1.286.589-.52 0-.929-.172-1.226-.516-.265-.33-.398-.75-.398-1.256 0-.457.113-.848.34-1.173.292-.417.723-.625 1.293-.625Zm.046 3.16c.403 0 .695-.144.874-.432.181-.29.272-.623.272-.999 0-.397-.105-.717-.313-.959-.207-.242-.49-.363-.851-.363-.35 0-.635.12-.856.36-.22.24-.331.594-.331 1.061 0 .375.094.69.283.948.19.256.497.384.922.384Zm3.455-.08c.155 0 .283-.017.382-.049a.84.84 0 0 0 .437-.345c.09-.136.156-.311.196-.524a2 2 0 0 0 .034-.355c0-.418-.083-.743-.25-.975-.166-.231-.434-.347-.803-.347H9.35v2.595h.816ZM8.89 17.247h1.368c.465 0 .825.165 1.081.495.229.297.343.679.343 1.143 0 .36-.067.683-.202.973-.238.512-.647.769-1.226.769H8.89v-3.38Zm3.88 0v2.089c0 .245.046.45.138.612.136.245.367.368.69.368.388 0 .652-.133.791-.398.076-.144.113-.338.113-.582v-2.089h.465v1.898c0 .415-.056.735-.168.96-.206.407-.594.61-1.164.61s-.958-.203-1.162-.61c-.112-.225-.168-.545-.168-.96v-1.898h.465Zm2.899 0Zm.458 0v2.977h1.711v.402h-2.17v-3.379h.459Zm2.208 0h2.463v.414h-2.017v1.026h1.865v.391h-1.865v1.146h2.052v.402h-2.498v-3.379Zm3.402 2.29c.01.19.056.347.135.466.152.224.42.336.803.336.172 0 .328-.025.47-.074.272-.095.409-.265.409-.51 0-.184-.058-.315-.173-.394-.116-.076-.299-.143-.547-.2l-.458-.103c-.299-.068-.51-.142-.635-.223-.215-.141-.322-.352-.322-.633 0-.304.105-.553.315-.748.21-.194.508-.292.893-.292.354 0 .655.086.901.258.249.17.373.443.373.819h-.43a.847.847 0 0 0-.147-.416c-.14-.177-.377-.265-.711-.265-.27 0-.464.057-.582.17a.533.533 0 0 0-.177.396c0 .165.069.287.207.363.09.05.295.11.614.184l.474.108c.228.053.405.124.529.214.215.158.322.388.322.688 0 .374-.136.642-.41.803a1.822 1.822 0 0 1-.947.241c-.42 0-.75-.107-.987-.322-.238-.213-.354-.502-.35-.867h.43Z"/></svg>
diff --git a/assets/lib/simple-icons/icons/csswizardry.svg b/assets/lib/simple-icons/icons/csswizardry.svg
index 9ac81149..8324db46 100644
--- a/assets/lib/simple-icons/icons/csswizardry.svg
+++ b/assets/lib/simple-icons/icons/csswizardry.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>CSS Wizardry icon</title><path d="M.03 16.428V1.118C.03.5.53 0 1.147 0H22.8c.624 0 1.12.5 1.12 1.12v14.76c-.67-.41-1.46-.616-2.357-.616-1.254 0-2.205.3-2.854.896-.65.598-.97 1.328-.97 2.225 0 .97.33 1.69 1 2.15.39.285 1.11.54 2.14.762l1.05.24c.63.133 1.07.3 1.36.46.28.183.43.437.43.765 0 .566-.29.955-.87 1.148l-.03.016h-2.21c-.287-.104-.51-.254-.69-.45-.18-.224-.3-.55-.36-1.013h-1.98c0 .566.103 1.045.33 1.48h-1.68c.19-.39.3-.823.3-1.317 0-.88-.3-1.55-.886-2.016-.374-.297-.94-.535-1.688-.717l-1.72-.402c-.66-.14-1.09-.28-1.3-.4-.31-.18-.46-.45-.46-.79 0-.38.16-.68.47-.89.33-.21.75-.31 1.29-.31.49 0 .88.09 1.21.26.494.256.75.69.79 1.287h2c-.03-1.046-.415-1.853-1.15-2.404-.744-.55-1.625-.835-2.67-.835-1.255 0-2.195.3-2.853.88-.64.583-.97 1.33-.97 2.21 0 .97.33 1.688 1 2.15.402.27 1.12.523 2.15.76l1.045.24c.61.135 1.06.285 1.36.465.28.18.43.43.43.76 0 .57-.3.94-.88 1.15h-2.24c-.284-.106-.52-.256-.69-.465-.18-.22-.31-.564-.37-1.014H8.38c0 .558.105 1.05.32 1.48H6.61c.33-.52.553-1.12.663-1.79H5.22c-.14.51-.312.898-.525 1.15-.26.33-.6.54-1.02.645H2.448c-.45-.105-.837-.358-1.15-.76-.464-.558-.688-1.394-.688-2.5 0-1.12.23-1.97.66-2.58.45-.613 1.03-.91 1.79-.91.75 0 1.3.21 1.69.644.21.24.39.6.52 1.076h2.08c-.03-.618-.26-1.24-.686-1.86-.772-1.1-1.994-1.65-3.664-1.65-1.16 0-2.134.36-2.91 1.06l-.05-.11zm23.894 3.636V18.51h-.516c-.035-.597-.3-1.022-.783-1.274-.313-.164-.717-.248-1.193-.248-.54 0-.955.11-1.27.322-.312.215-.478.518-.478.902 0 .355.166.62.477.795.22.105.65.254 1.31.404l1.72.41c.3.06.56.15.8.23l-.05.03z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>CSS Wizardry</title><path d="M0 16.5V1.127C0 .502.506 0 1.127 0h21.748C23.498 0 24 .505 24 1.126V15.95c-.676-.413-1.467-.62-2.372-.62-1.258 0-2.212.296-2.862.886-.65.591-.974 1.333-.974 2.226 0 .979.336 1.698 1.008 2.158.397.276 1.114.53 2.151.765l1.056.237c.618.135 1.07.29 1.36.466.288.18.432.436.432.765 0 .564-.29.95-.872 1.157l-.024.008H20.68a1.528 1.528 0 0 1-.688-.462c-.185-.225-.31-.565-.372-1.021h-1.99c0 .56.109 1.053.325 1.483h-1.681c.196-.396.294-.837.294-1.32 0-.889-.297-1.568-.892-2.037-.384-.302-.952-.543-1.705-.724l-1.719-.412c-.663-.158-1.096-.296-1.299-.413a.858.858 0 0 1-.473-.799c0-.387.16-.69.48-.906.32-.217.75-.325 1.286-.325.482 0 .886.084 1.21.25.488.253.75.68.785 1.28h2.003c-.036-1.06-.425-1.869-1.167-2.426-.742-.557-1.639-.836-2.69-.836-1.258 0-2.212.296-2.861.886-.65.591-.975 1.333-.975 2.226 0 .979.336 1.698 1.008 2.158.397.276 1.114.53 2.152.765l1.055.237c.618.135 1.071.29 1.36.466.288.18.433.436.433.765 0 .564-.291.95-.873 1.157l-.025.008h-2.223a1.528 1.528 0 0 1-.688-.462c-.185-.225-.31-.565-.372-1.021h-1.99c0 .56.108 1.053.324 1.483H6.611a4.75 4.75 0 0 0 .667-1.801H5.215c-.14.514-.316.9-.528 1.157-.261.326-.603.54-1.026.644H2.42c-.45-.115-.839-.37-1.165-.762C.792 22.68.56 21.842.56 20.724c0-1.119.218-1.984.656-2.595.437-.611 1.035-.917 1.793-.917.744 0 1.305.217 1.684.65.212.243.386.604.52 1.082H7.3c-.032-.622-.262-1.242-.69-1.86-.776-1.1-2.003-1.65-3.68-1.65-1.168 0-2.145.355-2.929 1.067zm24 3.654v-1.562h-.518c-.036-.6-.298-1.026-.785-1.279-.325-.166-.728-.25-1.21-.25-.537 0-.966.108-1.286.325-.32.216-.48.518-.48.906 0 .357.157.623.473.799.203.117.636.255 1.299.413l1.718.412c.29.07.554.149.789.236z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/cucumber.svg b/assets/lib/simple-icons/icons/cucumber.svg
new file mode 100644
index 00000000..ea34ddfc
--- /dev/null
+++ b/assets/lib/simple-icons/icons/cucumber.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Cucumber</title><path d="M12.16 0C7.523-.03 3.223 3.007 1.886 7.715.241 13.51 3.746 19.51 9.601 20.925V24l.626-.094c6.715-1.008 11.876-6.254 12.271-12.472.258-4.041-1.795-8.064-5.108-10.01a9.62 9.62 0 0 0-1.999-.895A10.606 10.606 0 0 0 12.16 0zm-.084 1.087h.013c1.011 0 2.015.161 2.976.477a8.511 8.511 0 0 1 1.769.792c2.97 1.744 4.809 5.363 4.576 9.008-.35 5.52-4.816 10.208-10.72 11.36V20.04l-.44-.085a9.518 9.518 0 0 1 1.826-18.868zm2.042 4.306a.958.958 0 0 0-.843.333 3.83 3.83 0 0 0-.366.632c-.321.743-.436 1.803.043 2.385l-.001.003a3.08 3.08 0 0 0 1.918-1.641 1.68 1.68 0 0 0 .165-.698.996.996 0 0 0-.916-1.014zm-4.061.092a1.014 1.014 0 0 0-.926.982c.01.241.07.478.18.694a3.282 3.282 0 0 0 2.062 1.6c.413-.593.216-1.65-.118-2.386a2.17 2.17 0 0 0-.377-.574.934.934 0 0 0-.821-.316zM7.628 8c-.858.035-1.2 1.126-.516 1.645.198.146.41.273.632.38a3 3 0 0 0 2.53-.07A3.17 3.17 0 0 0 8.54 8.167 1.993 1.993 0 0 0 7.628 8zm7.762 3.216a3.32 3.32 0 0 0-1.228.296 3.087 3.087 0 0 0 1.718 1.755c.236.105.49.161.747.166a.933.933 0 0 0 .681-1.663c-.659-.46-1.105-.575-1.918-.554zm-5.85.03c-.297-.012-.635.01-.983.026-.559 0-1.228.278-1.494.565-.695.61-.188 1.751.73 1.644a1.71 1.71 0 0 0 .747-.167c.744-.322 1.628-1.202 1.734-1.89-.182-.12-.438-.165-.735-.178zm2.086 1.214c-.863.32-1.56.975-1.93 1.817a1.601 1.601 0 0 0-.167.681c-.02.908 1.091 1.361 1.711.698.14-.199.262-.41.362-.632.322-.69.449-1.928.024-2.564zm1.497.173a2.792 2.792 0 0 0-.116 2.442c.089.211.21.408.362.58.577.627 1.81.186 1.763-.63a1.62 1.62 0 0 0-.167-.697 3.043 3.043 0 0 0-1.842-1.695z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/curl.svg b/assets/lib/simple-icons/icons/curl.svg
index 057da8ff..577e2a32 100644
--- a/assets/lib/simple-icons/icons/curl.svg
+++ b/assets/lib/simple-icons/icons/curl.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>curl icon</title><path d="M22.23,4.702c-0.535,0-0.967-0.433-0.967-0.967c0-0.535,0.433-0.967,0.967-0.967 c0.534,0,0.967,0.433,0.967,0.967C23.198,4.269,22.764,4.702,22.23,4.702 M12.622,21.233c-0.535,0-0.967-0.433-0.967-0.967 c0-0.535,0.433-0.967,0.967-0.967c0.534,0,0.967,0.433,0.967,0.967C13.588,20.799,13.156,21.233,12.622,21.233 M22.23,1.964 c-0.978,0-1.771,0.793-1.771,1.771c0,0.209,0.053,0.403,0.119,0.589l-8.309,14.241c-0.803,0.168-1.418,0.847-1.418,1.7 c0,0.978,0.793,1.771,1.771,1.771c0.977,0,1.77-0.793,1.77-1.771c0-0.197-0.053-0.376-0.111-0.553l8.351-14.288 c0.779-0.187,1.37-0.854,1.37-1.69C24.001,2.757,23.208,1.964,22.23,1.964 M14.983,4.702c-0.535,0-0.967-0.433-0.967-0.967 c0-0.535,0.433-0.967,0.967-0.967c0.534,0,0.967,0.433,0.967,0.967C15.95,4.269,15.517,4.702,14.983,4.702 M5.374,21.233 c-0.534,0-0.967-0.433-0.967-0.967c0-0.535,0.433-0.967,0.967-0.967c0.535,0,0.967,0.433,0.967,0.967 C6.341,20.799,5.908,21.233,5.374,21.233 M14.983,1.964c-0.979,0-1.771,0.793-1.771,1.771c0,0.209,0.053,0.403,0.119,0.589 L5.022,18.565c-0.804,0.168-1.419,0.847-1.419,1.7c0,0.978,0.793,1.771,1.771,1.771c0.978,0,1.771-0.793,1.771-1.771 c0-0.197-0.053-0.376-0.111-0.553l8.351-14.288c0.779-0.187,1.37-0.854,1.37-1.69C16.754,2.757,15.961,1.964,14.983,1.964 M1.749,7.663c0.534,0,0.967,0.433,0.967,0.967c0,0.534-0.433,0.967-0.967,0.967S0.782,9.165,0.782,8.631 C0.782,8.097,1.215,7.663,1.749,7.663 M1.749,6.883c-0.964,0-1.748,0.784-1.748,1.748s0.784,1.748,1.748,1.748 s1.748-0.784,1.748-1.748S2.713,6.883,1.749,6.883L1.749,6.883z M1.749,13.852c0.534,0,0.967,0.433,0.967,0.967 c0,0.534-0.433,0.967-0.967,0.967s-0.967-0.433-0.967-0.967C0.782,14.285,1.215,13.852,1.749,13.852 M1.749,13.072 c-0.964,0-1.748,0.784-1.748,1.748s0.784,1.748,1.748,1.748s1.748-0.784,1.748-1.748S2.713,13.072,1.749,13.072L1.749,13.072z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>curl</title><path d="M.803 14.8169c0-.5342.433-.9665.9665-.9665.5335 0 .9665.4323.9665.9665 0 .5335-.433.9657-.9665.9657-.5335 0-.9666-.4322-.9666-.9657m2.736 0c0-.1963-.0532-.376-.1119-.5525-.2344-.7024-.876-1.2169-1.6575-1.2169-.1249 0-.2344.0465-.3524.0708C.6149 13.2865 0 13.9646 0 14.817c0 .9764.7923 1.7694 1.7695 1.7694.9772 0 1.7694-.793 1.7694-1.7694m-1.7694-7.149c.5335 0 .9665.433.9665.9665 0 .5335-.433.9665-.9665.9665-.5343 0-.9666-.433-.9666-.9665 0-.5335.4323-.9665.9666-.9665m0 2.7359c.9772 0 1.7694-.7923 1.7694-1.7694 0-.1956-.0532-.376-.1119-.5525-.2344-.7024-.8767-1.2169-1.6575-1.2169-.1249 0-.2344.0465-.3524.0716C.6149 7.104 0 7.782 0 8.6344c0 .9771.7923 1.7694 1.7695 1.7694m13.221-5.694c-.5342 0-.9665-.433-.9665-.9664a.966.966 0 01.9666-.9665c.5335 0 .9658.4322.9658.9665 0 .5334-.4323.9664-.9658.9664m-9.6 16.5133c-.5335 0-.9666-.433-.9666-.9665 0-.5342.433-.9665.9666-.9665a.966.966 0 01.9665.9665c0 .5335-.4323.9665-.9665.9665m9.6-19.2491c-.978 0-1.7695.7922-1.7695 1.7694 0 .2085.0525.4025.1187.5882L5.039 18.5581c-.803.1681-1.4179.8462-1.4179 1.6985 0 .9772.7923 1.7694 1.7695 1.7694.9772 0 1.7694-.7922 1.7694-1.7694 0-.1963-.0525-.3759-.111-.5525l8.3427-14.2728c.7778-.1865 1.3683-.8531 1.3683-1.688 0-.977-.793-1.7693-1.7694-1.7693m7.24 2.7359c-.5343 0-.9666-.433-.9666-.9665a.966.966 0 01.9665-.9665c.5335 0 .9666.4322.9666.9665 0 .5334-.433.9665-.9666.9665M12.6313 21.223c-.5343 0-.9665-.433-.9665-.9665a.966.966 0 01.9665-.9665c.5335 0 .9658.4323.9658.9665 0 .5335-.4323.9665-.9658.9665M22.2305 1.974c-.9772 0-1.7694.7922-1.7694 1.7694 0 .2085.0525.4025.1187.5882l-8.3009 14.2265c-.8021.1681-1.417.8462-1.417 1.6985 0 .9772.7922 1.7694 1.7694 1.7694.9764 0 1.7687-.7922 1.7687-1.7694 0-.1963-.0525-.3759-.1111-.5525l8.3427-14.2728C23.4094 5.2448 24 4.5782 24 3.7433c0-.977-.7923-1.7693-1.7695-1.7693"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/curseforge.svg b/assets/lib/simple-icons/icons/curseforge.svg
new file mode 100644
index 00000000..997d5f9d
--- /dev/null
+++ b/assets/lib/simple-icons/icons/curseforge.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>CurseForge</title><path d="M6.307 5.581l.391 1.675H0s.112.502.167.558c.168.279.335.614.559.837 1.06 1.228 2.902 1.73 4.409 2.009 1.06.224 2.121.28 3.181.335l1.228 3.293h.67l.391 1.061h-.558l-.949 3.07h9.321l-.949-3.07h-.558l.39-1.061h.67s.558-3.404 2.288-4.967C21.935 7.758 24 7.535 24 7.535V5.581H6.307zm9.377 8.428c-.447.279-.949.279-1.284.503-.223.111-.335.446-.335.446-.223-.502-.502-.67-.837-.781-.335-.112-.949-.056-1.786-.782-.558-.502-.614-1.172-.558-1.507v-.167c0-.056 0-.112.056-.168.111-.334.39-.669.948-.893 0 0-.39.559 0 1.117.224.335.67.502 1.061.279.167-.112.279-.335.335-.503.111-.39.111-.781-.224-1.06-.502-.446-.613-1.06-.279-1.451 0 0 .112.502.614.446.335 0 .335-.111.224-.223-.056-.167-.782-1.228.279-2.009 0 0 .669-.447 1.451-.391-.447.056-.949.335-1.116.782v.055c-.168.447-.056.949.279 1.396.223.335.502.614.614 1.06-.168-.056-.279 0-.391.112a.533.533 0 00-.112.502c.056.112.168.223.279.223h.168c.167-.055.279-.279.223-.446.112.111.167.391.112.558 0 .167-.112.335-.168.446-.056.112-.167.224-.223.335-.056.112-.112.224-.112.335 0 .112 0 .279.056.391.223.335.67 0 .782-.279.167-.335.111-.726-.112-1.061 0 0 .391.224.67 1.005.223.67-.168 1.451-.614 1.73z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/cycling74.svg b/assets/lib/simple-icons/icons/cycling74.svg
new file mode 100644
index 00000000..095bed62
--- /dev/null
+++ b/assets/lib/simple-icons/icons/cycling74.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Cycling '74</title><path d="M5.283 9.033c-.042-.354.425-.74.87-1.057.636-.453 1.682-.82 2.892-.962 1.093-.127 2.099-.045 2.816.189.632.206 1.263.503 1.31.906.046.4-.496.836-1.06 1.182-.644.394-1.606.708-2.703.837-1.206.14-2.306.025-3.03-.267-.509-.206-1.053-.473-1.095-.828zm16.77-1.542c.365-.022.742.614 1.05 1.216.438.861.772 2.244.87 3.818.087 1.422-.038 2.715-.307 3.62-.236.798-.566 1.586-.981 1.61-.413.026-.837-.712-1.169-1.47-.379-.867-.662-2.137-.75-3.563-.096-1.57.066-2.98.395-3.89.23-.639.527-1.319.893-1.341zm-8.16 6.443c-.022-.336.362-.674.726-.948.522-.391 1.367-.677 2.335-.74.874-.055 1.674.082 2.238.345.496.233.989.552 1.014.935.024.382-.422.762-.882 1.055-.525.336-1.302.576-2.179.632-.966.063-1.839-.111-2.406-.43-.399-.225-.824-.51-.846-.849zM18.16 6.41c.288.177.343.685.357 1.14.02.65-.233 1.503-.74 2.327-.457.745-1.028 1.317-1.568 1.624-.476.271-1.02.488-1.347.287-.327-.2-.38-.782-.355-1.326.028-.622.279-1.392.737-2.14.505-.822 1.149-1.434 1.736-1.71.413-.196.89-.379 1.18-.202zM.382 6.211c.294-.168.771.04 1.183.257.588.31 1.228.967 1.722 1.834.447.784.685 1.582.704 2.219.015.56-.048 1.155-.382 1.345-.333.19-.876-.056-1.349-.353-.54-.34-1.107-.952-1.555-1.738C.211 8.91-.028 8.027.003 7.363c.021-.467.085-.984.38-1.152zm11.85 4.283c.32.188.341.828.32 1.406-.032.827-.398 1.948-1.054 3.066-.593 1.01-1.305 1.814-1.958 2.277-.575.407-1.225.756-1.589.542-.362-.212-.375-.948-.301-1.645.084-.797.44-1.813 1.036-2.826.655-1.115 1.453-1.979 2.159-2.41.496-.303 1.066-.598 1.387-.41Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/cypress.svg b/assets/lib/simple-icons/icons/cypress.svg
new file mode 100644
index 00000000..96ac3328
--- /dev/null
+++ b/assets/lib/simple-icons/icons/cypress.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Cypress</title><path d="M11.998 0C5.366 0 0 5.367 0 12a11.992 11.992 0 0 0 12 12c6.633 0 12-5.367 12-12-.001-6.633-5.412-12-12.002-12zM6.37 14.575c.392.523.916.742 1.657.742.35 0 .699-.044 1.004-.175.306-.13.655-.306 1.09-.567l1.223 1.745c-1.003.83-2.138 1.222-3.447 1.222-1.048 0-1.92-.218-2.705-.654a4.393 4.393 0 0 1-1.746-1.92c-.392-.83-.611-1.79-.611-2.925 0-1.09.219-2.094.61-2.923a4.623 4.623 0 0 1 1.748-2.007c.741-.48 1.657-.698 2.661-.698.699 0 1.353.087 1.877.305a5.64 5.64 0 0 1 1.614.96l-1.222 1.658A4.786 4.786 0 0 0 9.12 8.77c-.305-.13-.698-.174-1.048-.174-1.483 0-2.225 1.134-2.225 3.446-.043 1.18.175 2.008.524 2.532H6.37zm12 2.705c-.436 1.353-1.091 2.357-2.008 3.098-.916.743-2.138 1.135-3.665 1.266l-.305-2.05c1.003-.132 1.745-.35 2.225-.7.174-.13.524-.523.524-.523L11.519 6.764h3.01l2.095 8.683 2.226-8.683h2.923L18.37 17.28z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/cytoscapedotjs.svg b/assets/lib/simple-icons/icons/cytoscapedotjs.svg
new file mode 100644
index 00000000..fa4b8c90
--- /dev/null
+++ b/assets/lib/simple-icons/icons/cytoscapedotjs.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Cytoscape.js</title><path d="M24 0v24H0V0h24zm-4.8416 7.2596c-.939 0-1.7199.6988-1.8416 1.61l-2.7097.6834a1.8574 1.8574 0 00-1.5505-.834c-1.026 0-1.858.832-1.858 1.858 0 1.0259.832 1.8579 1.858 1.8579.2554 0 .5063-.052.7388-.1528l1.792 1.8298a2.0325 2.0325 0 00-.0493.0932l-2.3452-.316c-.1616-.868-.9238-1.5154-1.8264-1.5154-1.0259 0-1.858.832-1.858 1.858 0 1.0258.8321 1.858 1.858 1.858a1.859 1.859 0 001.6365-.9776l2.3456.316c.0214.1408.0573.2788.1074.412l-.984.8666a1.136 1.136 0 00-.3179-.0454c-.626 0-1.1337.5077-1.1337 1.1338 0 .6258.5078 1.1336 1.1337 1.1336.626 0 1.1336-.5078 1.1336-1.1336 0-.0496-.0031-.0988-.0096-.1476l.9446-.832c.34.2325.7417.3572 1.1578.3572.082 0 .1638-.0048.245-.0145l.8342 1.665a1.8536 1.8536 0 00-.5009 1.269c0 1.0258.8322 1.858 1.8581 1.858 1.026 0 1.858-.8322 1.858-1.858 0-1.026-.832-1.8581-1.858-1.8581-.0873 0-.1743.006-.2604.0182l-.8039-1.6046a2.0519 2.0519 0 00.6834-1.5305 2.0553 2.0553 0 00-.9357-1.724l.7343-2.4191c.9905-.04 1.7818-.856 1.7818-1.8565 0-1.0259-.8321-1.858-1.858-1.858zm-1.582 2.8326c.1244.2014.2862.3776.4762.5185l-.7442 2.4523a2.046 2.046 0 00-.8189.2015l-1.787-1.8249a1.8483 1.8483 0 00.2025-.6736z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/d3-dot-js.svg b/assets/lib/simple-icons/icons/d3-dot-js.svg
deleted file mode 100644
index 0ea59ad3..00000000
--- a/assets/lib/simple-icons/icons/d3-dot-js.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>D3.js icon</title><path d="M13.312 12C13.312 5.718 8.22.625 1.937.625H0v5h1.938c3.521 0 6.375 2.854 6.375 6.375s-2.854 6.375-6.375 6.375H0v5h1.938c6.281 0 11.374-5.093 11.374-11.375zM24 7.563C24 3.731 20.893.625 17.062.625h-8a13.4154 13.4154 0 0 1 4.686 5h3.314c1.069 0 1.938.868 1.938 1.938 0 1.07-.869 1.938-1.938 1.938h-1.938c.313 1.652.313 3.348 0 5h1.938c1.068 0 1.938.867 1.938 1.938s-.869 1.938-1.938 1.938h-3.314a13.4154 13.4154 0 0 1-4.686 5h8c1.621 0 3.191-.568 4.438-1.605 2.943-2.45 3.346-6.824.895-9.77A6.9459 6.9459 0 0 0 24 7.563z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/d3dotjs.svg b/assets/lib/simple-icons/icons/d3dotjs.svg
new file mode 100644
index 00000000..4b030e88
--- /dev/null
+++ b/assets/lib/simple-icons/icons/d3dotjs.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>D3.js</title><path d="M13.312 12C13.312 5.718 8.22.625 1.937.625H0v5h1.938c3.521 0 6.375 2.854 6.375 6.375s-2.854 6.375-6.375 6.375H0v5h1.938c6.281 0 11.374-5.093 11.374-11.375zM24 7.563C24 3.731 20.893.625 17.062.625h-8a13.4154 13.4154 0 0 1 4.686 5h3.314c1.069 0 1.938.868 1.938 1.938 0 1.07-.869 1.938-1.938 1.938h-1.938c.313 1.652.313 3.348 0 5h1.938c1.068 0 1.938.867 1.938 1.938s-.869 1.938-1.938 1.938h-3.314a13.4154 13.4154 0 0 1-4.686 5h8c1.621 0 3.191-.568 4.438-1.605 2.943-2.45 3.346-6.824.895-9.77A6.9459 6.9459 0 0 0 24 7.563z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/dacia.svg b/assets/lib/simple-icons/icons/dacia.svg
new file mode 100644
index 00000000..c482cc3e
--- /dev/null
+++ b/assets/lib/simple-icons/icons/dacia.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Dacia</title><path d="M17.48 10.112v3.884h-1.11v-3.884h1.11zm-1.922-.04v.789h-2.232c-.068.002-1.06.047-1.06 1.173 0 .928.697 1.174 1.065 1.174h2.226v.788h-2.42c-.143 0-.646-.019-1.12-.268-.608-.319-.916-.877-.916-1.66 0-.826.341-1.412 1.015-1.743.489-.24.982-.254 1.047-.255h2.395zm-12.63-.001c.143 0 .646.019 1.12.268.608.319.916.877.916 1.66 0 .826-.341 1.412-1.015 1.743-.489.24-.982.254-1.046.255H0v-3.923h2.928zm18.191-.067c.059 0 .118.002.176.007.506.047.749.234.784.259.198.15.386.47.494.676.175.358.348.717.519 1.077.255.537.586 1.243.908 1.974h-1.198l-.13-.274-.029-.062-.213-.453h-2.648l-.213.453-.029.062-.13.274h-1.2c.322-.731.653-1.437.908-1.974.168-.354.335-.699.519-1.077.108-.205.296-.525.494-.676.035-.024.278-.212.784-.259.058-.005.117-.007.176-.007h.028zm-13.094 0c.059 0 .118.002.176.007.506.047.749.234.784.259.198.15.386.47.494.676.175.358.348.717.519 1.077.255.537.586 1.243.908 1.974H9.707l-.13-.274-.029-.062-.213-.453H6.686l-.213.453-.029.062-.13.274H5.116c.322-.731.653-1.437.908-1.974.168-.354.335-.699.519-1.077.107-.206.296-.526.493-.676.035-.024.278-.212.784-.259.058-.005.117-.007.176-.007h.029zm-5.291.856H1.08v2.347h1.659c.068-.002 1.06-.048 1.06-1.173 0-.928-.697-1.174-1.065-1.174zm18.371.027c-.206 0-.28.096-.327.154a2.852 2.852 0 0 0-.145.296l-.194.433-.03.067-.015.034-.03.067-.199.439-.015.033-.024.054h1.96s-.366-.81-.507-1.126c0 0-.111-.252-.145-.296-.048-.059-.123-.155-.329-.155zm-13.095 0c-.206 0-.28.096-.327.154a2.852 2.852 0 0 0-.145.296l-.194.433-.03.067-.016.033-.03.067-.199.439-.015.033-.024.054h1.96l-.238-.527-.03-.067-.24-.533s-.111-.252-.145-.296c-.046-.057-.121-.153-.327-.153z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/daf.svg b/assets/lib/simple-icons/icons/daf.svg
index eff55c15..bdf03abe 100644
--- a/assets/lib/simple-icons/icons/daf.svg
+++ b/assets/lib/simple-icons/icons/daf.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>DAF icon</title><path d="M19.649 12.782h-2.643V8.723H24v1.183h-4.351v.723h4.277v1.147h-4.277zm-7.51-3.039l-1.831 3.05H7.76l2.414-4.07h3.924l2.424 4.07h-5.364l.64-1.06h1.534zM.004 12.785V8.741h4.99c1.62 0 2.773.738 2.773 1.994 0 1.196-.914 2.05-2.82 2.05zm4.008-1.034c.621 0 .985-.53.985-.935 0-.413-.325-.896-.967-.896H2.671v1.831zM0 13.731h23.926v1.546H0Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>DAF</title><path d="M19.649 12.782h-2.643V8.723H24v1.183h-4.351v.723h4.277v1.147h-4.277zm-7.51-3.039l-1.831 3.05H7.76l2.414-4.07h3.924l2.424 4.07h-5.364l.64-1.06h1.534zM.004 12.785V8.741h4.99c1.62 0 2.773.738 2.773 1.994 0 1.196-.914 2.05-2.82 2.05zm4.008-1.034c.621 0 .985-.53.985-.935 0-.413-.325-.896-.967-.896H2.671v1.831zM0 13.731h23.926v1.546H0Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/dailymotion.svg b/assets/lib/simple-icons/icons/dailymotion.svg
index fc166672..7afeaca1 100644
--- a/assets/lib/simple-icons/icons/dailymotion.svg
+++ b/assets/lib/simple-icons/icons/dailymotion.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Dailymotion icon</title><path d="M14.068 11.313c-1.754 0-3.104 1.427-3.104 3.11 0 1.753 1.35 3.085 3.255 3.085l-.016.002c1.59 0 2.925-1.31 2.925-3.04 0-1.8-1.336-3.157-3.062-3.157zM0 0v24h24V0H0zm20.693 20.807h-3.576v-1.41c-1.1 1.08-2.223 1.47-3.715 1.47-1.522 0-2.832-.495-3.93-1.485-1.448-1.275-2.198-2.97-2.198-4.936 0-1.8.7-3.414 2.01-4.674 1.17-1.146 2.595-1.73 4.185-1.73 1.52 0 2.69.513 3.53 1.59V4.157l3.693-.765V3.39l.002.003h-.002v17.414z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Dailymotion</title><path d="M14.068 11.313c-1.754 0-3.104 1.427-3.104 3.11 0 1.753 1.35 3.085 3.255 3.085l-.016.002c1.59 0 2.925-1.31 2.925-3.04 0-1.8-1.336-3.157-3.062-3.157zM0 0v24h24V0H0zm20.693 20.807h-3.576v-1.41c-1.1 1.08-2.223 1.47-3.715 1.47-1.522 0-2.832-.495-3.93-1.485-1.448-1.275-2.198-2.97-2.198-4.936 0-1.8.7-3.414 2.01-4.674 1.17-1.146 2.595-1.73 4.185-1.73 1.52 0 2.69.513 3.53 1.59V4.157l3.693-.765V3.39l.002.003h-.002v17.414z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/daimler.svg b/assets/lib/simple-icons/icons/daimler.svg
new file mode 100644
index 00000000..2ed8203c
--- /dev/null
+++ b/assets/lib/simple-icons/icons/daimler.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Daimler</title><path d="M.718 10.48c-.622 0-.64.039-.609.225h.207c.195 0 .238.026.238.194v2.038c0 .29-.082.32-.544.346a.368.368 0 0 0 0 .168h1.623c1.235 0 1.745-.596 1.745-1.486 0-.924-.54-1.485-1.784-1.485zm4.573.03c-.203 0-.26.07-.402.402l-.855 2.025c-.116.276-.155.302-.488.346a.369.369 0 0 0 0 .168h1.235c.108 0 .138-.07.108-.194h-.371c-.238 0-.238-.065-.138-.32l.177-.47H5.67l.272.651c.047.113 0 .152-.47.165a.367.367 0 0 0 0 .168H6.87c.113 0 .139-.07.113-.194h-.1c-.22 0-.267-.04-.315-.152l-.997-2.275c-.07-.151-.1-.225-.113-.32zm16.374.026c-.604 0-.863 0-1.07.017-.178.013-.208.095-.178.208h.207c.178 0 .238.026.238.194v1.995c0 .263-.087.307-.462.333a.442.442 0 0 0 0 .168h1.36c.125 0 .138-.07.125-.194h-.22c-.224 0-.263-.044-.263-.169v-.635h.289c.263 0 .272.013.38.208.112.198.268.371.41.496.32.277.583.363.985.363.458 0 .566-.112.527-.263-.376 0-.566-.04-1.136-.497a15.656 15.656 0 0 1-.488-.432c.358-.15.583-.445.583-.807 0-.592-.458-.985-1.287-.985zm-14.21.03c-.182 0-.208.082-.182.195h.207c.199 0 .238.025.238.181v2.064c0 .177-.082.22-.428.277a.279.279 0 0 0 0 .168h1.313c.13 0 .142-.07.112-.194h-.233c-.181 0-.225-.03-.225-.182v-2.051c0-.181.056-.263.432-.29a.37.37 0 0 0 0-.168zm2.232 0c-.182 0-.208.095-.182.195.428.013.454.06.44.198l-.176 2.03c-.013.181-.052.268-.527.294a.37.37 0 0 0 0 .168h1.416c.121 0 .138-.07.108-.194h-.233c-.458 0-.458-.044-.445-.212l.138-1.939 1.192 2.358c.1 0 .134-.026.212-.181l1.036-2.177.194 1.883c.022.211-.038.259-.4.28l-.234.014a.281.281 0 0 0 0 .168h1.524c.121 0 .134-.07.121-.194-.333-.044-.402-.057-.415-.195l-.207-2.107c-.013-.125.013-.194.415-.22a.278.278 0 0 0 0-.169H12.64l-.997 2.077-1.084-2.077zm5.017 0c-.181 0-.207.082-.181.195h.207c.182 0 .238.025.238.181v1.978c0 .28-.095.337-.514.363a.444.444 0 0 0 0 .168h2.107a6.16 6.16 0 0 1 .225-.777c.047-.134-.018-.186-.143-.182l-.12.268c-.182.389-.225.41-.545.41h-.276c-.121 0-.194-.039-.194-.181V11.08c0-.28.086-.32.54-.345a.371.371 0 0 0 0-.169zm2.799 0c-.19 0-.208.082-.19.195h.207c.194 0 .233.025.233.181v1.995c0 .29-.082.32-.54.346a.281.281 0 0 0 0 .168h2.384a6.26 6.26 0 0 1 .224-.777c.044-.13-.017-.186-.142-.182l-.12.268c-.182.389-.226.41-.545.41h-.371c-.294 0-.333-.065-.333-.22v-.76h.453c.113 0 .169.039.225.376a.203.203 0 0 0 .15 0 9.378 9.378 0 0 1 0-.851c.01-.134-.038-.164-.124-.164h-.052l-.03.22c-.013.112-.04.156-.169.156h-.453v-1.11H19c.238 0 .329.069.402.332l.057.195c.138.013.19-.06.168-.195a6.266 6.266 0 0 1-.069-.583zm-16.41.169h.445c.83 0 1.261.483 1.261 1.312 0 .929-.47 1.166-1.209 1.166-.401 0-.496-.043-.496-.306zm20.309.052h.147c.488 0 .833.18.833.764 0 .583-.346.652-.773.652h-.207zm-16.301.32l.47 1.122h-.92z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/darkreader.svg b/assets/lib/simple-icons/icons/darkreader.svg
new file mode 100644
index 00000000..e2a8240a
--- /dev/null
+++ b/assets/lib/simple-icons/icons/darkreader.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Dark Reader</title><path d="M18.281 8.572c-.18-1.671-.926-3.132-2.105-4.173A6.315 6.315 0 0012 2.824c-1.538 0-3.026.56-4.176 1.575C6.646 5.44 5.9 6.901 5.72 8.572a4.968 4.968 0 01.987-.101 4.587 4.587 0 014.24 2.827l2.107-.002a4.57 4.57 0 014.241-2.825 4.88 4.88 0 01.987.101zM3.624 16.494l-2.212 6.094H0l2.662-7.324a4.621 4.621 0 01-.401-1.046 4.803 4.803 0 01-.143-1.16 4.7 4.7 0 01.574-2.283 4.43 4.43 0 011.576-1.642c.08-2.207.943-4.178 2.43-5.593A7.7 7.7 0 0112 1.412c1.973 0 3.876.768 5.305 2.13 1.486 1.417 2.348 3.388 2.427 5.596a4.42 4.42 0 011.576 1.64c.383.693.576 1.478.574 2.28 0 .39-.047.78-.142 1.159-.091.362-.225.713-.402 1.045L24 22.588h-1.412l-2.212-6.097c-.41.367-.879.649-1.383.843a4.653 4.653 0 01-1.699.313 4.635 4.635 0 01-3.132-1.227c-.827-.765-1.344-1.814-1.443-3.008H11.28c-.103 1.192-.62 2.241-1.447 3.005a4.637 4.637 0 01-3.128 1.23 4.644 4.644 0 01-1.698-.31 4.514 4.514 0 01-1.384-.843zm11.2-3.445a2.462 2.462 0 002.489 2.48 2.47 2.47 0 00-.019-4.94 2.464 2.464 0 00-2.47 2.46zm-10.589.01a2.463 2.463 0 002.47 2.47 2.469 2.469 0 002.472-2.47 2.469 2.469 0 00-2.471-2.47 2.463 2.463 0 00-2.47 2.47zm5.647 6c.033-.423.327-.703.706-.706a.681.681 0 01.706.706v2.823a.681.681 0 01-.706.706c-.38-.003-.673-.283-.706-.706V19.06zm2.824 0c.033-.423.326-.703.706-.706a.681.681 0 01.706.706v2.823a.681.681 0 01-.706.706c-.38-.003-.673-.283-.706-.706V19.06zm2.823 1.412c.033-.423.327-.703.706-.706a.681.681 0 01.706.706v1.411a.681.681 0 01-.706.706c-.38-.003-.673-.283-.706-.706v-1.411zm-8.47 0c.033-.423.326-.703.706-.706a.681.681 0 01.706.706v1.411a.681.681 0 01-.706.706c-.38-.003-.673-.283-.706-.706v-1.411z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/dart.svg b/assets/lib/simple-icons/icons/dart.svg
index 9df69e82..9f319669 100644
--- a/assets/lib/simple-icons/icons/dart.svg
+++ b/assets/lib/simple-icons/icons/dart.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Dart icon</title><path d="M4.105 4.105S9.158 1.58 11.684.316a3.079 3.079 0 0 1 1.481-.315c.766.047 1.677.788 1.677.788L24 9.948v9.789h-4.263V24H9.789l-9-9C.303 14.5 0 13.795 0 13.105c0-.319.18-.818.316-1.105l3.789-7.895zm.679.679v11.787c.002.543.021 1.024.498 1.508L10.204 23h8.533v-4.263L4.784 4.784zm12.055-.678c-.899-.896-1.809-1.78-2.74-2.643-.302-.267-.567-.468-1.07-.462-.37.014-.87.195-.87.195L6.341 4.105l10.498.001z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Dart</title><path d="M4.105 4.105S9.158 1.58 11.684.316a3.079 3.079 0 0 1 1.481-.315c.766.047 1.677.788 1.677.788L24 9.948v9.789h-4.263V24H9.789l-9-9C.303 14.5 0 13.795 0 13.105c0-.319.18-.818.316-1.105l3.789-7.895zm.679.679v11.787c.002.543.021 1.024.498 1.508L10.204 23h8.533v-4.263L4.784 4.784zm12.055-.678c-.899-.896-1.809-1.78-2.74-2.643-.302-.267-.567-.468-1.07-.462-.37.014-.87.195-.87.195L6.341 4.105l10.498.001z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/darty.svg b/assets/lib/simple-icons/icons/darty.svg
new file mode 100644
index 00000000..a965a11c
--- /dev/null
+++ b/assets/lib/simple-icons/icons/darty.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Darty</title><path d="M0 0v24h24V0zm11.83 1.503A10.56 10.56 0 0 1 22.62 12.06c.06 5.76-4.68 10.5-10.56 10.5A10.56 10.56 0 0 1 1.5 12.06a10.56 10.56 0 0 1 9.77-10.53 10.56 10.56 0 0 1 .56-.027zM2.4 9.24s.18 1.2.18 2.82c0 1.56-.18 2.76-.18 2.76h2.04c.66 0 1.86-.48 1.86-2.76-.06-2.34-1.2-2.82-1.86-2.82zm4.68 0s-.12 1.44-.42 2.82c-.3 1.32-.72 2.76-.72 2.76h1.8s-.06-.24 0-.72.18-.72.18-.72h.84s.12.3.18.72c.06.48 0 .72 0 .72h3.42s-.12-.36-.18-.96 0-.96 0-.96.24.36.48.96c.18.6.18.96.18.96h1.98s-.3-.66-.72-1.38c-.42-.72-.66-1.08-.66-1.08s.96-.3.96-1.56v-.3c.12-.06.42-.12.9-.12 0 0 .06 1.02 0 1.98s-.18 2.52-.18 2.52h1.8s-.12-1.56-.18-2.52 0-1.98 0-1.98.48 0 .96.18V9.42c.18.36.72 1.5.96 2.64.3 1.44.12 2.76.12 2.76h1.8s-.18-1.38.12-2.76 1.08-2.82 1.08-2.82h-1.62l-.42 1.62-.42-1.62h-4.98v.96a1.35 1.35 0 0 0-1.2-.96h-2.52s.18 1.02.18 2.82c0 1.08-.06 1.92-.12 2.34-.18-.54-.42-1.44-.6-2.34-.3-1.32-.42-2.82-.42-2.82zm5.16.96s.6 0 .6.72c.06.72-.6.72-.6.72zm-8.187.115c.15-.009.747.058.747 1.685 0 1.92-.78 1.68-.78 1.68v-3.36s.012-.003.033-.005zm4.346.065.36 1.86h-.718z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/daserste.svg b/assets/lib/simple-icons/icons/daserste.svg
index e3ac4a9d..a13c8097 100644
--- a/assets/lib/simple-icons/icons/daserste.svg
+++ b/assets/lib/simple-icons/icons/daserste.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Das Erste icon</title><path d="M11.646.005C5.158.2-.001 5.57 0 12.127.135 18.724 5.468 24 12 24s11.865-5.276 12-11.873C24.001 5.291 18.41-.195 11.645.005zm5.138 4.93V16.96L8.78 19.92v-9.08l-3.9 1.386V9.263l11.903-4.328z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Das Erste</title><path d="M11.646.005C5.158.2-.001 5.57 0 12.127.135 18.724 5.468 24 12 24s11.865-5.276 12-11.873C24.001 5.291 18.41-.195 11.645.005zm5.138 4.93V16.96L8.78 19.92v-9.08l-3.9 1.386V9.263l11.903-4.328z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/dash.svg b/assets/lib/simple-icons/icons/dash.svg
index f7efabd3..475e0ac3 100644
--- a/assets/lib/simple-icons/icons/dash.svg
+++ b/assets/lib/simple-icons/icons/dash.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Dash icon</title><path d="M3.211 9.967c-2.29 0-2.617 1.49-2.832 2.393C.093 13.538 0 14.02 0 14.02h8.947c2.29 0 2.617-1.492 2.832-2.394.285-1.178.379-1.66.379-1.66zM15.72 2.259H6.983L6.26 6.307l7.885.01c3.885 0 5.03 1.41 4.997 3.748-.019 1.196-.537 3.225-.762 3.884-.598 1.753-1.827 3.749-6.436 3.744l-7.666-.004-.725 4.052h8.718c3.076 0 4.38-.36 5.768-.995 3.071-1.426 4.899-4.455 5.633-8.41C24.76 6.448 23.404 2.26 15.72 2.26Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Dash</title><path d="M3.21 9.967C.922 9.967.595 11.457.38 12.36.093 13.538 0 14.02 0 14.02h8.947c2.29 0 2.617-1.492 2.832-2.394.285-1.178.379-1.66.379-1.66zM15.72 2.26H6.982L6.26 6.307l7.884.01c3.885 0 5.03 1.41 4.997 3.748-.019 1.196-.537 3.225-.762 3.884-.598 1.753-1.827 3.749-6.435 3.744l-7.666-.004-.725 4.052h8.718c3.075 0 4.38-.36 5.767-.995 3.071-1.426 4.9-4.455 5.633-8.41C24.76 6.448 23.403 2.26 15.72 2.26z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/dashlane.svg b/assets/lib/simple-icons/icons/dashlane.svg
index 4429ce83..9d7be379 100644
--- a/assets/lib/simple-icons/icons/dashlane.svg
+++ b/assets/lib/simple-icons/icons/dashlane.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Dashlane icon</title><path d="M15.63 10.04c-.47-.393-.863-1.02-.863-1.648 0-.235.078-.627.157-.863 0-.156.078-.156.157-.235.706-.157 1.02-.157 1.098-.235.157-.314.235-.706.235-.706l-5.49-1.726s.314.863.549.942l2.51 1.098s-1.255.313-1.961.47l-.157.079s.235.47.706.706c.47-.157 1.333-.314 1.333-.314-1.176 2.353-3.686 3.921-6.353 3.921h-.94c-.315 0-.393.236-.158.393.47.235.863.705 1.02 1.176.078.314-.079.55-.314.706-.47.392-1.725 1.255-2.902 2.196a3.664 3.664 0 0 1-.392-.784C2.767 12.784 2.218 9.333 2.218 4.784v-.157l9.412-3.058 9.411 3.058v.079c0 1.647-.078 3.216-.235 4.549v.157h1.569v-.079c.157-1.411.235-2.902.235-4.549V3.53L11.63 0 .65 3.53v1.176c0 4.784.548 8.392 1.725 11.059.157.392.392.784.549 1.098-.941.706-1.726 1.255-1.726 1.255l.47.784 6.04-4.314a19.5 19.5 0 0 1 10.98-3.372h1.883c-.235 1.49-.628 2.823-1.098 3.921-.55 1.255-1.255 2.353-2.196 3.451-.706.863-1.569 1.569-2.51 2.196-1.569 1.098-2.98 1.569-3.059 1.647-.157-.078-1.49-.549-3.059-1.647-1.02-.706-1.882-1.411-2.588-2.274-.235-.235-.47-.55-.706-.863l-.078-.078-1.255.94.078.08c.314.391.55.705.785 1.019.784.941 1.725 1.725 2.745 2.431 1.725 1.177 3.215 1.726 3.45 1.804 0 0 .314.079.393.157h.157c.157 0 .392-.157.392-.157.314-.078 1.725-.627 3.45-1.804a16.44 16.44 0 0 0 2.746-2.431 15.164 15.164 0 0 0 2.431-3.843 16.555 16.555 0 0 0 1.255-4.55h1.334c.078-.313.156-.862.156-.862h-4.862c-1.804-.078-2.432 0-2.902-.314z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Dashlane</title><path d="M20.89 7.7189c0-.1488-.1488-.2976-.3575-.3571l-2.502-.9221c-.4166-.1786-.8932.0297-.8932.3277V17.25c0 .1487.1488.3273.2977.3868l2.5614.9222c.3872.1487.8936-.0596.8936-.3873zm-4.676-3.663c0-.1492-.1489-.298-.3576-.3575l-2.5015-.9221c-.417-.1786-.8936.0297-.8936.3278v6.3723c0 .1488.1487.3273.2976.3873l2.5614.9221c.3873.1492.8937-.0595.8937-.3869zm0 11.4663c0-.1488-.1489-.2975-.3576-.3571l-2.5015-.9221c-.417-.1786-.8936.0297-.8936.3277v6.3724c0 .1488.1487.3273.2976.3869l2.5614.922c.3873.1493.8937-.0594.8937-.3872zm-4.6761 1.281c0-.1489-.1488-.298-.3575-.3576l-2.5015-.9221c-.4192-.1786-.8937.0297-.8937.3277v6.7903c0 .1487.1488.3277.2977.3872l2.5614.9222c.3872.1493.8936-.0595.8936-.387zm0-15.4579c0-.1488-.1488-.2976-.3575-.3571L8.6789.066c-.4192-.1786-.8937.0297-.8937.3277v6.7903c0 .1492.1488.3277.2977.3873l2.5614.922c.3872.1488.8936-.0594.8936-.3872zm-4.6752.2683c0-.1488-.1488-.298-.3575-.3576L4.0037.334C3.5867.1553 3.11.3636 3.11.6617v21.7409c0 .1487.1488.3273.298.3868l2.561.9222c.3874.1488.8937-.0595.8937-.3874z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/dask.svg b/assets/lib/simple-icons/icons/dask.svg
new file mode 100644
index 00000000..e71275c0
--- /dev/null
+++ b/assets/lib/simple-icons/icons/dask.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Dask</title><path d="M10.023 17.416a14.223 14.223 0 0 1-4.027 1.195l-.793.112.402-.692a15.75 15.75 0 0 0 .723-1.401 15.498 15.498 0 0 0 1.386-5.855l.012-.328.325-.043a15.683 15.683 0 0 0 7.048-2.801 13.41 13.41 0 0 0 2.424-4.356A14.227 14.227 0 0 1 6.977 9.115l-.663.046.014.666a14.08 14.08 0 0 1-1.268 6.228 14.276 14.276 0 0 1-1.805 2.958l-.873 1.108 1.412.02a15.558 15.558 0 0 0 6.2-1.207 13.596 13.596 0 0 0 .03-1.518zm8.197-6.437c.536-1.19 1.099-4.145 1.063-4.366a16.444 16.444 0 0 1-1.971 2.922c-.11.292-.227.583-.357.87a14.203 14.203 0 0 1-4.126 5.28q.11.8.14 1.612a15.578 15.578 0 0 0 5.251-6.318zm3.328-.767q.022-.24.037-.478a15.598 15.598 0 0 0-1.598-7.95L19.098 0l-.412 1.953a14.223 14.223 0 0 1-8.378 10.15l-.612.258.232.623a14.075 14.075 0 0 1 .824 6.3 14.276 14.276 0 0 1-.746 3.384L9.536 24l1.341-.441a15.616 15.616 0 0 0 10.67-13.347zM12.45 21.398l-.714.363.155-.786a15.701 15.701 0 0 0 .228-1.56 15.508 15.508 0 0 0-.59-5.986l-.095-.315.293-.146a15.688 15.688 0 0 0 7.339-7.72l.458-1.044.276 1.106a14.043 14.043 0 0 1 .35 4.767 14.153 14.153 0 0 1-7.7 11.32z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/dassaultsystemes.svg b/assets/lib/simple-icons/icons/dassaultsystemes.svg
index 919c0a44..14f4f654 100644
--- a/assets/lib/simple-icons/icons/dassaultsystemes.svg
+++ b/assets/lib/simple-icons/icons/dassaultsystemes.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Dassault Systèmes icon</title><path d="M21.161 8.04c1.063.192 1.93.34 2.129.79.223.508-.935.54-1.518.551-2.797.054-4.483.11-4.568 1.06-.11 1.223 1.195 2.454 2.484 4.181 1.177 1.576 2.515 3.132 2.13 4.582-.481 1.807-2.696 2.19-4.805 2.19-2.02.001-3.935-.323-4.739-.482-1.001-.198-.852-.693-.585-.852.298-.178 2-.182 3.184-.252.974-.058 3.802-.056 4.243-.78.54-.888-.783-2.406-1.999-3.996-1.517-1.983-3.183-4.031-2.301-5.527 1.14-1.935 4.48-1.802 6.345-1.465 M7.482 10.987c1.771-.104 3.923.206 5.13 1.13.602.46 1.024 1.305.78 2.274-.698 2.75-3.301 6.078-9.085 8.635-1.84.813-3.286 1.124-3.59.906-.326-.234.623-2.05.908-2.652.924-1.95 2.077-3.85 3.202-5.59.414-.64 1.054-1.75 1.633-1.661.518.08-.089 1.26-.488 2.01-.671 1.258-2.52 4.755-1.91 4.964 1.348.462 7.673-4.35 6.74-7.029-.432-1.244-3.178-1.362-4.908-1.362-.786 0-2.505.186-2.6-.417-.102-.555 2.61-1.115 4.188-1.208M11.851.034c2.066-.098 4.51.342 4.965 1.8.747 2.388-3.036 5.872-6.332 7.581-.808.42-1.298.535-1.502.506-.195-.027-.225-.221-.162-.355.118-.251.649-.763 1.36-1.32 3.711-2.897 4.918-5.024 4.217-5.885-.449-.552-2.33-.936-4.283-.936-.53 0-1.924.123-2.067-.367C7.93.655 9.8.13 11.85.034"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Dassault Syst&#232;mes</title><path d="M21.1854 8.0254c1.064.192 1.9321.34 2.1311.79.223.51-.936.541-1.52.552-2.7992.054-4.4862.11-4.5712 1.061-.11 1.2241 1.196 2.4572 2.486 4.1852 1.1781 1.577 2.5172 3.1351 2.1322 4.5862-.482 1.809-2.6991 2.192-4.8102 2.192-2.0211.001-3.9382-.323-4.7432-.482-1.002-.199-.852-.694-.585-.853.298-.178 2.002-.182 3.187-.252.9751-.058 3.8052-.056 4.2463-.781.54-.889-.783-2.4081-2.0001-4.0002-1.519-1.984-3.1862-4.0341-2.3031-5.5322 1.14-1.936 4.4842-1.803 6.3502-1.466m-13.6905 2.95c1.772-.104 3.9261.206 5.1342 1.1301a2.172 2.172 0 01.78 2.2771c-.698 2.7521-3.3041 6.0833-9.0933 8.6434-1.8411.813-3.2892 1.125-3.5932.906-.326-.234.624-2.052.909-2.6541.9251-1.952 2.0791-3.8532 3.2052-5.5952.414-.64 1.055-1.7521 1.634-1.6621.519.08-.089 1.26-.488 2.011-.672 1.2601-2.523 4.7603-1.912 4.9693 1.35.462 7.6803-4.3542 6.7462-7.0363-.432-1.245-3.1801-1.363-4.9122-1.363-.787 0-2.508.186-2.603-.417-.102-.5561 2.613-1.1161 4.192-1.2101M11.8672.013c2.068-.098 4.5141.342 4.9702 1.8021.747 2.3901-3.0402 5.8772-6.3383 7.5873-.809.42-1.3.536-1.504.507-.195-.027-.225-.221-.162-.355.118-.252.65-.764 1.361-1.322 3.7151-2.9001 4.9232-5.0282 4.2212-5.8903-.45-.552-2.3321-.937-4.2872-.937-.53 0-1.925.123-2.068-.367C7.942.634 9.814.108 11.866.012"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/databricks.svg b/assets/lib/simple-icons/icons/databricks.svg
new file mode 100644
index 00000000..bdb6e414
--- /dev/null
+++ b/assets/lib/simple-icons/icons/databricks.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Databricks</title><path d="M.95 14.184L12 20.403l9.919-5.55v2.21L12 22.662l-10.484-5.96-.565.308v.77L12 24l11.05-6.218v-4.317l-.515-.309L12 19.118l-9.867-5.653v-2.21L12 16.805l11.05-6.218V6.32l-.515-.308L12 11.974 2.647 6.681 12 1.388l7.76 4.368.668-.411v-.566L12 0 .95 6.27v.72L12 13.207l9.919-5.55v2.26L12 15.52 1.516 9.56l-.565.308Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/datacamp.svg b/assets/lib/simple-icons/icons/datacamp.svg
index d78b4a7d..a195155e 100644
--- a/assets/lib/simple-icons/icons/datacamp.svg
+++ b/assets/lib/simple-icons/icons/datacamp.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>DataCamp icon</title><path d="M14.156,5.579l-0.194,0.269c-0.24-0.247-0.819-0.509-0.86-0.528l0.155-0.411 l-0.014-0.01c-0.024-0.016-0.05-0.028-0.078-0.037c-0.873-0.329-1.675-0.333-2.768-0.017l0.517,1.381h-0.01 C10.18,6.461,9.64,7.114,9.581,7.187L8.865,6.676C8.47,7.198,8.19,8.142,8.19,8.867H7.277c0.007,0.656,0.126,1.794,0.9,2.738 l0.682-0.521c0.623,0.916,1.925,1.581,3.015,1.468l-0.016-1.906h0.014v0.026c0.273,0.08,0.843-0.093,1.092-0.289l0.517,0.692 c0.543-0.185,0.964-1.238,1.008-1.351l0.822,0.281l0.001,0.001c0.22-0.763,0.228-1.572,0.023-2.339l-0.001,0.001V7.659 c0.001,0.002,0.001,0.005,0.001,0.007l0.294-0.107C15.411,6.734,14.883,6.025,14.156,5.579z M12.168,9.258 c-0.341,0.142-0.735,0.063-0.995-0.2c-0.261-0.265-0.339-0.66-0.198-1.004c0.142-0.344,0.475-0.568,0.845-0.568c0,0,0,0,0,0h0.001 c0,0,0,0,0,0c0.505,0.003,0.913,0.415,0.912,0.92C12.732,8.779,12.509,9.116,12.168,9.258z M22.662,3.692L12.139,0.043 c-0.162-0.057-0.338-0.057-0.499,0L1.341,3.695C1.006,3.814,0.798,4.147,0.836,4.5l1.453,13.842 c0.025,0.248,0.17,0.469,0.387,0.591l8.961,4.973C11.749,23.967,11.875,24,12.003,24h0.001c0.131,0,0.26-0.034,0.373-0.099 l8.739-4.973c0.209-0.119,0.35-0.333,0.38-0.575l1.67-13.842C23.208,4.152,23,3.812,22.662,3.692z M16.764,12.917 c0,0-0.127,0.144,0.051,0.445c0.179,0.299,0.23,0.299-0.102,0.612c0.256,0.222,0.256,0.406-0.127,0.58 c0.009,0.618,0.134,1.171-0.651,1.218c-0.785,0.046-1.78-0.482-2.039,0.939c-0.259,1.419-0.192,0.888-0.269,1.244H8.082 c0.69-1.902,1.28-4.001,0-5.032c-1.279-1.03-3.373-5.358,0.756-7.575c0.465-0.248,0.961-0.435,1.474-0.554L10.138,4.33l0.054-0.021 c0.017-0.007,1.774-0.684,3.293,0.062l0.05,0.025l-0.183,0.416c0.979,0.22,1.709,0.582,1.98,0.751 c0.614,0.382,1.429,0.99,1.507,1.566c0.077,0.575-0.664,0.286-0.664,0.286c0.46,1.117,0.485,1.918,0.28,2.768v0.001 c-0.204,0.848,0.945,1.725,0.92,2.342C17.3,12.812,16.764,12.917,16.764,12.917z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>DataCamp</title><path d="M12.946 18.151v-5.239L21.209 8.2 19.2 7.048l-6.254 3.567V5.36c0-.356-.192-.689-.5-.866L4.922.177a1.434 1.434 0 0 0-1.455.044 1.438 1.438 0 0 0-.676 1.224v14.777A1.44 1.44 0 0 0 4.92 17.49l6.032-3.44v4.683a1 1 0 0 0 .504.867l7.73 4.4 2.01-1.152-8.25-4.697zM10.953 5.938v5.814L4.785 15.27V2.4l6.168 3.539v-.001z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/datadog.svg b/assets/lib/simple-icons/icons/datadog.svg
index 3b07e060..fafc6d5c 100644
--- a/assets/lib/simple-icons/icons/datadog.svg
+++ b/assets/lib/simple-icons/icons/datadog.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Datadog icon</title><path d="M19.55 17.04l-1.99-1.32-1.66 2.78-1.93-.57-1.7 2.6.09.82 9.25-1.71-.54-5.79-1.52 3.19zm-8.63-2.5l1.48-.2c.24.11.41.15.69.22.45.12.97.23 1.74-.16.18-.09.55-.43.7-.63l6.08-1.11.62 7.53-10.41 1.88-.9-7.53zm11.29-2.71l-.6.11L20.46 0 .82 2.28l2.42 19.69 2.3-.33c-.18-.26-.47-.58-.96-.99-.68-.56-.44-1.52-.04-2.13.53-1.02 3.25-2.32 3.1-3.96-.06-.59-.15-1.37-.7-1.9-.02.22.02.43.02.43s-.23-.29-.34-.68c-.11-.15-.2-.2-.32-.4-.08.23-.07.5-.07.5s-.18-.44-.21-.81c-.11.17-.14.48-.14.48s-.24-.69-.19-1.06c-.11-.32-.43-.97-.34-2.42.6.42 1.92.32 2.43-.44.17-.24.29-.93-.08-2.28-.24-.87-.83-2.16-1.07-2.65l-.02.02c.12.4.37 1.22.47 1.63.29 1.22.37 1.64.23 2.2-.12.49-.4.81-1.1 1.16-.71.36-1.65-.51-1.71-.56-.69-.55-1.22-1.45-1.28-1.88-.06-.48.27-.77.44-1.16-.24.07-.51.2-.51.2s.32-.34.72-.63c.16-.11.26-.18.43-.32h-.46s.43-.22.86-.39c-.32-.01-.62 0-.62 0s.93-.42 1.67-.73c.51-.21 1-.15 1.28.26.37.53.75.82 1.56 1 .51-.23.66-.34 1.29-.51.55-.61.99-.69.99-.69s-.22.2-.27.51c.31-.25.66-.45.66-.45s-.13.16-.26.43l.03.04c.37-.22.8-.39.8-.39l-.27.36c.28 0 .84.01 1.05.04 1.28.03 1.55-1.37 2.04-1.55.62-.22.89-.35 1.94.68.9.89 1.6 2.48 1.25 2.83-.29.3-.87-.12-1.51-.92-.34-.42-.59-.93-.71-1.56-.1-.54-.49-.85-.49-.85s.23.51.23.96c0 .25.03 1.16.42 1.68-.04.08-.06.37-.1.43-.46-.55-1.44-.95-1.6-1.07.54.45 1.79 1.47 2.27 2.45.45.93.19 1.78.41 2 .07.06.97 1.2 1.15 1.77.3.99.02 2.04-.38 2.69l-1.11.17c-.16-.05-.27-.07-.42-.15.08-.14.24-.5.24-.57l-.06-.11c-.35.49-.93.97-1.41 1.25-.63.36-1.36.3-1.83.16-1.34-.42-2.62-1.33-2.92-1.57 0 0-.01.19.05.23.34.38 1.12 1.08 1.87 1.56l-1.6.18.76 5.91c-.34.05-.39.07-.75.12-.32-1.15-.94-1.9-1.62-2.33-.6-.38-1.42-.47-2.21-.31l-.05.06c.55-.06 1.19.02 1.86.44.65.41 1.18 1.48 1.37 2.12.25.82.42 1.7-.25 2.63-.47.66-1.86 1.03-2.98.24.3.48.7.88 1.25.95.81.11 1.57-.03 2.1-.57.45-.46.69-1.43.63-2.46l.71-.1.26 1.83 11.79-1.42-1-9.44zm-7.17-4.98c-.03.08-.08.12-.01.37v.01l.01.03.03.07c.14.29.29.56.55.7.07-.01.14-.02.21-.02.24-.01.39.03.49.08.01-.05.01-.12.01-.22-.02-.36.07-.98-.62-1.31-.26-.12-.63-.08-.75.07.02 0 .04.01.06.01.18.07.05.13.02.21m1.95 3.39c-.09-.05-.52-.03-.82.01-.57.07-1.19.27-1.32.37-.25.19-.13.52.05.66.51.38.96.64 1.43.58.29-.04.54-.5.73-.91.11-.3.11-.61-.07-.71M11.93 7.3c.16-.15-.8-.36-1.55.16-.55.37-.57 1.18-.04 1.64.05.05.1.08.14.1a4.857 4.857 0 011.39-.41c.11-.13.24-.35.21-.75-.05-.53-.46-.45-.15-.74"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Datadog</title><path d="M19.57 17.04l-1.997-1.316-1.665 2.782-1.937-.567-1.706 2.604.087.82 9.274-1.71-.538-5.794zm-8.649-2.498l1.488-.204c.241.108.409.15.697.223.45.117.97.23 1.741-.16.18-.088.553-.43.704-.625l6.096-1.106.622 7.527-10.444 1.882zm11.325-2.712l-.602.115L20.488 0 .789 2.285l2.427 19.693 2.306-.334c-.184-.263-.471-.581-.96-.989-.68-.564-.44-1.522-.039-2.127.53-1.022 3.26-2.322 3.106-3.956-.056-.594-.15-1.368-.702-1.898-.02.22.017.432.017.432s-.227-.289-.34-.683c-.112-.15-.2-.199-.319-.4-.085.233-.073.503-.073.503s-.186-.437-.216-.807c-.11.166-.137.48-.137.48s-.241-.69-.186-1.062c-.11-.323-.436-.965-.343-2.424.6.421 1.924.321 2.44-.439.171-.251.288-.939-.086-2.293-.24-.868-.835-2.16-1.066-2.651l-.028.02c.122.395.374 1.223.47 1.625.293 1.218.372 1.642.234 2.204-.116.488-.397.808-1.107 1.165-.71.358-1.653-.514-1.713-.562-.69-.55-1.224-1.447-1.284-1.883-.062-.477.275-.763.445-1.153-.243.07-.514.192-.514.192s.323-.334.722-.624c.165-.109.262-.178.436-.323a9.762 9.762 0 0 0-.456.003s.42-.227.855-.392c-.318-.014-.623-.003-.623-.003s.937-.419 1.678-.727c.509-.208 1.006-.147 1.286.257.367.53.752.817 1.569.996.501-.223.653-.337 1.284-.509.554-.61.99-.688.99-.688s-.216.198-.274.51c.314-.249.66-.455.66-.455s-.134.164-.259.426l.03.043c.366-.22.797-.394.797-.394s-.123.156-.268.358c.277-.002.838.012 1.056.037 1.285.028 1.552-1.374 2.045-1.55.618-.22.894-.353 1.947.68.903.888 1.609 2.477 1.259 2.833-.294.295-.874-.115-1.516-.916a3.466 3.466 0 0 1-.716-1.562 1.533 1.533 0 0 0-.497-.85s.23.51.23.96c0 .246.03 1.165.424 1.68-.039.076-.057.374-.1.43-.458-.554-1.443-.95-1.604-1.067.544.445 1.793 1.468 2.273 2.449.453.927.186 1.777.416 1.997.065.063.976 1.197 1.15 1.767.306.994.019 2.038-.381 2.685l-1.117.174c-.163-.045-.273-.068-.42-.153.08-.143.241-.5.243-.572l-.063-.111c-.348.492-.93.97-1.414 1.245-.633.359-1.363.304-1.838.156-1.348-.415-2.623-1.327-2.93-1.566 0 0-.01.191.048.234.34.383 1.119 1.077 1.872 1.56l-1.605.177.759 5.908c-.337.048-.39.071-.757.124-.325-1.147-.946-1.895-1.624-2.332-.599-.384-1.424-.47-2.214-.314l-.05.059a2.851 2.851 0 0 1 1.863.444c.654.413 1.181 1.481 1.375 2.124.248.822.42 1.7-.248 2.632-.476.662-1.864 1.028-2.986.237.3.481.705.876 1.25.95.809.11 1.577-.03 2.106-.574.452-.464.69-1.434.628-2.456l.714-.104.258 1.834 11.827-1.424zM15.05 6.848c-.034.075-.085.125-.007.37l.004.014.013.032.032.073c.14.287.295.558.552.696.067-.011.136-.019.207-.023.242-.01.395.028.492.08.009-.048.01-.119.005-.222-.018-.364.072-.982-.626-1.308-.264-.122-.634-.084-.757.068a.302.302 0 0 1 .058.013c.186.066.06.13.027.207m1.958 3.392c-.092-.05-.52-.03-.821.005-.574.068-1.193.267-1.328.372-.247.191-.135.523.047.66.511.382.96.638 1.432.575.29-.038.546-.497.728-.914.124-.288.124-.598-.058-.698m-5.077-2.942c.162-.154-.805-.355-1.556.156-.554.378-.571 1.187-.041 1.646.053.046.096.078.137.104a4.77 4.77 0 0 1 1.396-.412c.113-.125.243-.345.21-.745-.044-.542-.455-.456-.146-.749"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/datadotai.svg b/assets/lib/simple-icons/icons/datadotai.svg
new file mode 100644
index 00000000..05bdf23c
--- /dev/null
+++ b/assets/lib/simple-icons/icons/datadotai.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>data.ai</title><path d="M8.12 1.744.015 10.009 0 10.023l11.986 12.219.014.015 11.986-12.22.014-.014-8.115-8.273-.006-.006Zm1.207 1.02h5.326L11.99 5.41zm3.422 3.43 3.027-3.053L22.081 9.5h-6.054ZM8.211 3.14l3.04 3.072L7.999 9.5h-6.08Zm.62 6.977L12 6.876l3.169 3.242L12 19.842zm7.328.402h5.862l-8.793 9.005Zm-14.24 0h5.915l2.958 9.006Z"/></svg>
diff --git a/assets/lib/simple-icons/icons/datagrip.svg b/assets/lib/simple-icons/icons/datagrip.svg
new file mode 100644
index 00000000..2298a531
--- /dev/null
+++ b/assets/lib/simple-icons/icons/datagrip.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>DataGrip</title><path d="M0 0v24h24V0Zm17.1797 2.9477a5.452 5.452 0 0 1 3.9047 1.364L19.7078 5.972a3.672 3.672 0 0 0-2.596-1.0086c-1.6 0-2.8555 1.408-2.8555 3.096v.0282c0 1.816 1.2517 3.1523 3.0117 3.1523a3.492 3.492 0 0 0 2.064-.5921V9.2234h-2.2V7.336h4.3157v4.3157a6.436 6.436 0 0 1-4.2438 1.5757c-3.096 0-5.2242-2.1797-5.2242-5.1117v-.0281a5.1 5.1 0 0 1 5.2-5.1398zm-14.7438.1718h3.8758c3.12 0 5.2805 2.1439 5.2805 4.9399v.028c0 2.8-2.1605 4.968-5.2805 4.968H2.436Zm4.075 1.9688a2.852 2.852 0 0 0-.1992.003H4.6203v6h1.6914A2.832 2.832 0 0 0 9.304 8.1235v-.036a2.852 2.852 0 0 0-2.793-2.9991Zm-4.303 14.407h9v1.5h-9z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/dataiku.svg b/assets/lib/simple-icons/icons/dataiku.svg
new file mode 100644
index 00000000..fd955678
--- /dev/null
+++ b/assets/lib/simple-icons/icons/dataiku.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Dataiku</title><path d="M12 0a12 12 0 1 0 12 12A12 12 0 0 0 12 0zm6.527 15.34H12.5v-.934h6.026zm-.739-8.73s-.412.543-.193 1.995c.41 2.724-1.02 5.15-3.56 5.15h-1.87s-1.835-.092-2.933 1.01c-3.263 3.269-4.04 4.116-4.274 4.233-.15.08-.188-.093-.188-.093l9.644-11.891c-.203-2.145 2.34-2.715 3.278-1.13l.884-.248zm-1.599-.614a.476.476 0 1 0 .47.474.476.476 0 0 0-.47-.474z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/datastax.svg b/assets/lib/simple-icons/icons/datastax.svg
new file mode 100644
index 00000000..9fa21987
--- /dev/null
+++ b/assets/lib/simple-icons/icons/datastax.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>DataStax</title><path d="M2.979 10.635a1.354 1.354 0 0 0-.56-.33 2.659 2.659 0 0 0-.805-.108H0v3.602h1.614c.307 0 .579-.036.805-.108.226-.072.411-.181.56-.33.149-.149.258-.334.33-.56.072-.226.108-.493.108-.805 0-.312-.036-.579-.108-.805a1.324 1.324 0 0 0-.33-.556zm-.547 1.862a.703.703 0 0 1-.176.325.708.708 0 0 1-.325.176 1.949 1.949 0 0 1-.497.054H.89v-2.106h.542c.199 0 .362.018.497.054a.703.703 0 0 1 .325.176c.081.081.14.19.176.325.038.137.056.3.056.499s-.018.362-.054.497zm3.801-1.08a.786.786 0 0 0-.344-.199 1.645 1.645 0 0 0-.497-.063H3.959v.651h1.388c.099 0 .167.023.212.063.041.041.063.113.063.208v.032h-.998c-.276 0-.484.072-.628.217-.145.145-.217.357-.217.628s.072.479.217.628c.145.149.357.217.628.217H6.5v-1.541a1.8 1.8 0 0 0-.063-.497.846.846 0 0 0-.204-.344zm-.601 1.74h-.76a.214.214 0 0 1-.154-.054.202.202 0 0 1-.054-.149c0-.068.018-.118.054-.154.036-.036.086-.054.154-.054h.759v.411zm2.689-.009h.583v.651h-.859c-.154 0-.285-.014-.393-.045a.55.55 0 0 1-.262-.145.596.596 0 0 1-.145-.262 1.455 1.455 0 0 1-.045-.393v-1.153h-.366v-.651H7.2v-.705h.881v.71h.814v.651h-.814v1.103c0 .09.018.149.054.185.037.036.096.054.186.054zm3.34-1.731a.786.786 0 0 0-.344-.199 1.645 1.645 0 0 0-.497-.063H9.388v.651h1.388c.099 0 .167.023.212.063.041.041.063.113.063.208v.032h-.999c-.276 0-.484.072-.628.217-.145.145-.217.357-.217.628s.072.479.217.628c.145.149.357.217.628.217h1.876v-1.541a1.8 1.8 0 0 0-.063-.497.846.846 0 0 0-.204-.344zm-.606 1.74h-.759a.214.214 0 0 1-.154-.054.202.202 0 0 1-.054-.149c0-.068.018-.118.054-.154.036-.036.086-.054.154-.054h.759v.411zm4.018-1.261c.185.181.28.452.28.814 0 .362-.095.633-.28.818-.185.185-.456.276-.818.276h-1.844v-.75h1.668c.23 0 .344-.113.344-.344 0-.231-.118-.344-.344-.344h-.687c-.366 0-.637-.09-.814-.271-.176-.181-.267-.452-.267-.818 0-.366.086-.637.267-.814.181-.176.452-.267.814-.267H15.2v.75h-1.614c-.108 0-.19.027-.249.086s-.086.14-.086.249.027.19.086.249c.054.059.14.086.249.086h.673c.358 0 .629.099.814.28zm2.061 1.252h.583v.651h-.859c-.154 0-.285-.014-.393-.045a.55.55 0 0 1-.262-.145.596.596 0 0 1-.145-.262 1.411 1.411 0 0 1-.045-.393v-1.153h-.366v-.651h.366v-.705h.881v.71h.814v.651h-.814v1.103c0 .09.018.149.054.185.037.036.101.054.186.054zm3.341-1.731a.786.786 0 0 0-.344-.199 1.645 1.645 0 0 0-.497-.063h-1.433v.651h1.388c.099 0 .167.023.212.063.041.041.063.113.063.208v.032h-.999c-.276 0-.484.072-.628.217-.145.145-.217.357-.217.628s.072.479.217.628c.145.149.357.217.628.217h1.876v-1.541a1.8 1.8 0 0 0-.063-.497.833.833 0 0 0-.203-.344zm-.606 1.74h-.759a.216.216 0 0 1-.154-.054.202.202 0 0 1-.054-.149c0-.068.018-.118.054-.154.036-.036.086-.054.154-.054h.759v.411zm4.131.642h-1.008l-.552-.791-.556.791h-.985l1.031-1.333-.976-1.311h.976l.538.764.538-.764h.94l-.976 1.311L24 13.799z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/dataversioncontrol.svg b/assets/lib/simple-icons/icons/dataversioncontrol.svg
new file mode 100644
index 00000000..65836f7c
--- /dev/null
+++ b/assets/lib/simple-icons/icons/dataversioncontrol.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Data Version Control</title><path d="M.291 4.508a.269.269 0 0 0-.201.094.304.304 0 0 0-.09.226v11.14a.309.309 0 0 0 .09.227c.025.03.055.054.09.07a.266.266 0 0 0 .111.024h3.92c1.552 0 2.886-.58 3.988-1.734.298-.312.558-.643.783-.99l2.584 5.744c.066.122.156.183.274.183h.162c.118 0 .21-.06.275-.183l2.631-5.811c.234.389.515.757.86 1.102 1.145 1.142 2.532 1.714 4.16 1.714 1.55 0 2.868-.53 3.955-1.591.151-.154.156-.3.015-.444l-1.27-1.361c-.13-.141-.271-.146-.423-.016-.608.525-1.335.787-2.182.787-.91 0-1.67-.324-2.285-.974-.614-.65-.883-1.434-.883-2.354 0-.929.267-1.723.875-2.384.607-.662 1.366-.993 2.278-.993.845.001 1.578.28 2.197.836.13.13.267.13.408 0l1.27-1.328c.151-.154.145-.304-.02-.459-1.107-1.017-2.418-1.525-3.935-1.525-1.628 0-3.016.573-4.16 1.728a5.58 5.58 0 0 0-1.315 2.069l-2.467 5.63h-.1L9.226 7.862c-.004-.01-.012-.012-.016-.021a5.615 5.615 0 0 0-1.084-1.596C7.02 5.094 5.82 4.625 4.211 4.508H.29zm2.217 2.474h1.54c.902 0 1.652.329 2.245.985.593.656.89 1.462.89 2.416.001.963-.296 1.773-.89 2.43-.594.656-1.342.984-2.244.984H2.508V6.982z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/datocms.svg b/assets/lib/simple-icons/icons/datocms.svg
new file mode 100644
index 00000000..e9a431a2
--- /dev/null
+++ b/assets/lib/simple-icons/icons/datocms.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>DatoCMS</title><path d="M12 0H.076v24H12c5.964 0 11.924-5.373 11.924-11.998C23.924 5.376 17.963 0 12 0zm0 17.453a5.453 5.453 0 115.455-5.451A5.45 5.45 0 0112 17.452z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/datto.svg b/assets/lib/simple-icons/icons/datto.svg
new file mode 100644
index 00000000..b8c53f67
--- /dev/null
+++ b/assets/lib/simple-icons/icons/datto.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Datto</title><path d="M3.9141 10.6406c-.4547-.3844-.8766-.5485-1.4531-.5485C1.0078 10.0922 0 11.2734 0 12.9844c0 1.7203 1.0313 2.9391 2.4938 2.9391.5484 0 1.0313-.1875 1.4156-.5625v.4312h1.1813V8.0578l-1.1766.0047v2.5781zm-.1313 3.4079c-.1641.4312-.6422.7359-1.1719.7359-.8344 0-1.3688-.689-1.3688-1.7578 0-1.1109.5391-1.8047 1.4063-1.8047.525 0 1.0313.3281 1.1578.7594.0704.2109.0938.5015.0938 1.1015 0 .4735-.0328.7688-.1172.9657zm6.5437-.1266v-2.0531c0-.6656-.0703-.9235-.3609-1.2281-.3375-.3656-.9609-.5625-1.7344-.5625-.7828 0-1.5703.1875-2.3297.5719l.4922.9468c.7828-.3375 1.1719-.4312 1.7109-.4312.7266 0 1.0219.2578 1.0313.8906v.1781c-.9468.0938-1.2656.1312-1.6406.1969-1.1953.2344-1.7578.7593-1.7578 1.65 0 1.0547.9141 1.8516 2.1188 1.8516.6422 0 1.1484-.2344 1.5093-.689.1172.3843.4313.6187.9609.689l.6-.9141c-.5437-.2203-.6-.3375-.6-1.0969zm-1.1953.1031c0 .3281-.0469.4547-.2109.5953-.2109.1875-.5718.3188-.8765.3188-.5719 0-1.0453-.375-1.0453-.8344 0-.375.2485-.5953.7969-.7266.3657-.0844.6656-.1172 1.3359-.1875v.8344zm5.2313.6328.15 1.0406c-.3844.1031-.8203.1641-1.1953.1641-1.1016 0-1.5328-.4547-1.5328-1.5938v-3.0469h-1.0172v-1.0172h1.0172V8.4844l1.1813-.4219v2.1422h1.4719v1.0172h-1.4672v2.6531c0 .6891.1406.8531.7266.8531.1967 0 .4218-.0234.6655-.0703zm4.0828 0 .15 1.0406c-.3844.1031-.8203.1641-1.1953.1641-1.1016 0-1.5328-.4547-1.5328-1.5938v-3.0469H14.85v-1.0172h1.0172V8.4844l1.1813-.4219v2.1422h1.4672v1.0172h-1.4672l.0046 2.6531c0 .6891.1406.8531.7266.8531.1969 0 .4218-.0234.6656-.0703zm2.8125-4.5937c-1.5563 0-2.6016 1.1859-2.6016 2.9625 0 1.7203 1.1016 2.9156 2.6953 2.9156 1.5609 0 2.6484-1.2047 2.6484-2.9156.0001-1.7532-1.1109-2.9625-2.7421-2.9625zm.0469 4.725c-.8672 0-1.4391-.7125-1.4391-1.7813s.5859-1.8047 1.4531-1.8047c.8438 0 1.4063.7172 1.4063 1.8047 0 1.0641-.5766 1.7813-1.4203 1.7813z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/dazn.svg b/assets/lib/simple-icons/icons/dazn.svg
index 5e5d8507..7214af55 100644
--- a/assets/lib/simple-icons/icons/dazn.svg
+++ b/assets/lib/simple-icons/icons/dazn.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>DAZN icon</title><path d="M14.774 8.291l.772-2.596.79 2.596zm3.848 2.268l-2.025-6.128c-.045-.135-.097-.224-.154-.266-.059-.041-.152-.063-.28-.063h-1.12a.485.485 0 0 0-.284.068c-.06.045-.11.132-.149.261l-2.045 6.128c-.025.032-.038.096-.038.192 0 .149.09.223.27.223h.84c.076 0 .139-.003.187-.01a.207.207 0 0 0 .116-.048.326.326 0 0 0 .077-.116c.022-.051.046-.119.072-.202l.318-1.071h2.306l.327 1.051c.026.09.051.16.077.213a.395.395 0 0 0 .087.12c.031.028.07.047.114.053h.002c.045.006.103.01.173.01h.897c.18 0 .27-.074.27-.223a.59.59 0 0 0-.005-.09.878.878 0 0 0-.036-.108l.003.006zm-.994 2.467h-.646c-.168 0-.279.024-.333.072-.055.049-.082.147-.082.295v3.638l-1.91-3.647c-.076-.155-.152-.253-.226-.295-.074-.041-.204-.063-.39-.063h-.599c-.167 0-.278.025-.332.073-.055.048-.082.147-.082.294v6.138c0 .148.025.246.077.294.052.048.16.072.328.072h.656c.167 0 .278-.024.332-.072.055-.048.082-.146.082-.294v-3.648l1.91 3.657c.077.155.152.253.227.295.073.042.204.062.39.062h.598c.167 0 .278-.024.333-.072.054-.048.082-.146.082-.294v-6.138c0-.148-.028-.246-.082-.294-.055-.048-.166-.073-.333-.073zm3.203-.581l1.665 1.665v8.385H1.505V14.11l1.663-1.664a.63.63 0 0 0 0-.89L1.504 9.891V1.505h20.991v8.384l-1.665 1.666a.63.63 0 0 0 0 .89zM24 0H0v10.613L1.387 12 0 13.387V24h24V13.387L22.613 12 24 10.613zM10.67 18.469H7.96l2.855-4.014a.67.67 0 0 0 .087-.155.425.425 0 0 0 .019-.135v-.772c0-.148-.028-.246-.082-.294-.055-.048-.166-.073-.334-.073H6.382c-.149 0-.245.028-.29.082-.045.055-.068.169-.068.343v.58c0 .172.023.287.068.341.045.055.141.083.29.083h2.545L6.11 18.469a.438.438 0 0 0-.107.27v.792c0 .148.027.245.082.294.055.048.167.072.334.072h4.25c.148 0 .245-.027.29-.081.045-.055.068-.17.068-.344v-.579c0-.173-.023-.287-.068-.342-.045-.055-.142-.082-.29-.082zM9.408 8.233c0 .264-.017.484-.052.661-.036.177-.093.32-.174.43a.648.648 0 0 1-.318.231 1.523 1.523 0 0 1-.487.068h-.79v-4.17h.79c.366 0 .63.11.79.324.16.215.241.571.241 1.067v1.389zm1.38-2.789c-.225-.457-.533-.795-.921-1.013-.39-.219-.88-.328-1.47-.328H6.418c-.167 0-.278.024-.333.072-.054.049-.082.147-.082.294v6.138c0 .148.028.246.082.295.055.048.166.072.333.072h2.218c1.048 0 1.765-.447 2.15-1.342.09-.205.153-.413.188-.622a4.91 4.91 0 0 0 .054-.796V6.911c0-.367-.018-.656-.054-.868a2.2 2.2 0 0 0-.193-.612l.006.013z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>DAZN</title><path d="M14.774 8.291l.772-2.596.79 2.596zm3.848 2.268l-2.025-6.128c-.045-.135-.097-.224-.154-.266-.059-.041-.152-.063-.28-.063h-1.12a.485.485 0 0 0-.284.068c-.06.045-.11.132-.149.261l-2.045 6.128c-.025.032-.038.096-.038.192 0 .149.09.223.27.223h.84c.076 0 .139-.003.187-.01a.207.207 0 0 0 .116-.048.326.326 0 0 0 .077-.116c.022-.051.046-.119.072-.202l.318-1.071h2.306l.327 1.051c.026.09.051.16.077.213a.395.395 0 0 0 .087.12c.031.028.07.047.114.053h.002c.045.006.103.01.173.01h.897c.18 0 .27-.074.27-.223a.59.59 0 0 0-.005-.09.878.878 0 0 0-.036-.108l.003.006zm-.994 2.467h-.646c-.168 0-.279.024-.333.072-.055.049-.082.147-.082.295v3.638l-1.91-3.647c-.076-.155-.152-.253-.226-.295-.074-.041-.204-.063-.39-.063h-.599c-.167 0-.278.025-.332.073-.055.048-.082.147-.082.294v6.138c0 .148.025.246.077.294.052.048.16.072.328.072h.656c.167 0 .278-.024.332-.072.055-.048.082-.146.082-.294v-3.648l1.91 3.657c.077.155.152.253.227.295.073.042.204.062.39.062h.598c.167 0 .278-.024.333-.072.054-.048.082-.146.082-.294v-6.138c0-.148-.028-.246-.082-.294-.055-.048-.166-.073-.333-.073zm3.203-.581l1.665 1.665v8.385H1.505V14.11l1.663-1.664a.63.63 0 0 0 0-.89L1.504 9.891V1.505h20.991v8.384l-1.665 1.666a.63.63 0 0 0 0 .89zM24 0H0v10.613L1.387 12 0 13.387V24h24V13.387L22.613 12 24 10.613zM10.67 18.469H7.96l2.855-4.014a.67.67 0 0 0 .087-.155.425.425 0 0 0 .019-.135v-.772c0-.148-.028-.246-.082-.294-.055-.048-.166-.073-.334-.073H6.382c-.149 0-.245.028-.29.082-.045.055-.068.169-.068.343v.58c0 .172.023.287.068.341.045.055.141.083.29.083h2.545L6.11 18.469a.438.438 0 0 0-.107.27v.792c0 .148.027.245.082.294.055.048.167.072.334.072h4.25c.148 0 .245-.027.29-.081.045-.055.068-.17.068-.344v-.579c0-.173-.023-.287-.068-.342-.045-.055-.142-.082-.29-.082zM9.408 8.233c0 .264-.017.484-.052.661-.036.177-.093.32-.174.43a.648.648 0 0 1-.318.231 1.523 1.523 0 0 1-.487.068h-.79v-4.17h.79c.366 0 .63.11.79.324.16.215.241.571.241 1.067v1.389zm1.38-2.789c-.225-.457-.533-.795-.921-1.013-.39-.219-.88-.328-1.47-.328H6.418c-.167 0-.278.024-.333.072-.054.049-.082.147-.082.294v6.138c0 .148.028.246.082.295.055.048.166.072.333.072h2.218c1.048 0 1.765-.447 2.15-1.342.09-.205.153-.413.188-.622a4.91 4.91 0 0 0 .054-.796V6.911c0-.367-.018-.656-.054-.868a2.2 2.2 0 0 0-.193-.612l.006.013z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/dblp.svg b/assets/lib/simple-icons/icons/dblp.svg
index 1b049384..a78109c0 100644
--- a/assets/lib/simple-icons/icons/dblp.svg
+++ b/assets/lib/simple-icons/icons/dblp.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>dblp icon</title><path d="M21.3 14.58l-2.45-9.16s-.15-.59-.72-.33l-5.6 2.6.86 3.2 1.09 4.08.01.06c.05.47-.41.79-.41.79l-1.88.87.5 1.89.04.1c.07.17.28.6.81.91l6.95 4.27s.68.41.52-.17l-1.98-7.4 1.86-.86s.56-.26.4-.85zM13.76 14.67l-.01-.06-1.13-4.22-.66-2.45-.67-2.49v-.04s-.16-.59-.84-1L3.5.14s-.68-.41-.52.17l1.99 7.42-1.87.87s-.56.26-.4.85l2.45 9.16s.16.59.72.33l6.17-2.87 1.3-.61s.52-.24.42-.79z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>dblp</title><path d="M3.075.002c-.096.013-.154.092-.094.31L4.97 7.73 3.1 8.6s-.56.26-.4.85l2.45 9.159s.16.59.72.33l6.169-2.869 1.3-.61s.52-.24.42-.79l-.01-.06-1.13-4.22-.658-2.45-.672-2.49v-.04s-.16-.59-.84-1L3.5.141s-.265-.16-.425-.139zM18.324 5.03a.724.724 0 0 0-.193.06l-5.602 2.6.862 3.2 1.09 4.08.01.06c.05.47-.411.79-.411.79l-1.88.87.5 1.89.04.1c.07.17.28.6.81.91l6.95 4.269s.68.41.52-.17l-1.981-7.4 1.861-.86s.56-.26.4-.85L18.85 5.42s-.116-.452-.526-.39z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/dbt.svg b/assets/lib/simple-icons/icons/dbt.svg
new file mode 100644
index 00000000..7238c016
--- /dev/null
+++ b/assets/lib/simple-icons/icons/dbt.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>dbt</title><path d="M17.9004 9.3763a8.1488 8.1488 0 0 0-3.0421-3.1206l1.7708.8385a10.2874 10.2874 0 0 1 3.74 3.0007l3.234-5.9295a2.8546 2.8546 0 0 0-.0611-2.9604C22.7566.0371 21.2112-.3409 19.9754.3327l-5.8749 3.2101a4.3612 4.3612 0 0 1-4.1761 0L4.1769.408a2.8545 2.8545 0 0 0-2.9592.0632c-1.1673.7853-1.5452 2.33-.8723 3.5655L3.55 9.9106a4.3612 4.3612 0 0 1 0 4.1772l-3.1272 5.743a2.86 2.86 0 0 0 .085 2.9974c.794 1.1438 2.3225 1.5054 3.5448.8385l6.0581-3.3049a10.2877 10.2877 0 0 1-3.0051-3.7454l-.8374-1.7708a8.148 8.148 0 0 0 3.1206 3.0421l10.5832 5.779c1.2213.666 2.7481.3055 3.5426-.8363a2.8699 2.8699 0 0 0 .0796-3.0018L17.9004 9.3763zm3.3801-7.7351c.6022 0 1.0904.4882 1.0904 1.0904s-.4882 1.0904-1.0904 1.0904-1.0904-.4882-1.0904-1.0904.4882-1.0904 1.0904-1.0904zM2.7442 3.822c-.6022 0-1.0904-.4882-1.0904-1.0904s.4882-1.0904 1.0904-1.0904 1.0904.4882 1.0904 1.0904S3.3464 3.822 2.7442 3.822zm0 18.5363c-.6022 0-1.0904-.4882-1.0904-1.0904 0-.6022.4882-1.0904 1.0904-1.0904s1.0904.4882 1.0904 1.0904c0 .6022-.4882 1.0904-1.0904 1.0904zm10.3585-11.4489c-1.2008-.0035-2.177.9672-2.1805 2.1679a2.1738 2.1738 0 0 0 .7052 1.6091c-1.4872-.2091-2.5234-1.5843-2.3142-3.0716.2091-1.4872 1.5843-2.5234 3.0716-2.3142a2.7194 2.7194 0 0 1 2.3142 2.3142 2.1623 2.1623 0 0 0-1.5963-.7054zm8.1778 11.4489c-.6022 0-1.0904-.4882-1.0904-1.0904 0-.6022.4882-1.0904 1.0904-1.0904s1.0904.4882 1.0904 1.0904c0 .6022-.4882 1.0904-1.0904 1.0904z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/dcentertainment.svg b/assets/lib/simple-icons/icons/dcentertainment.svg
index 926ff15e..99b022ad 100644
--- a/assets/lib/simple-icons/icons/dcentertainment.svg
+++ b/assets/lib/simple-icons/icons/dcentertainment.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>DC Entertainment icon</title><path d="M5.215 8.787h2.154c.601 0 1.088.487 1.088 1.088v4.954c0 .6-.487 1.088-1.088 1.088H6.05V9.475a.159.159 0 00-.066-.129zM12 23.099a11.078 11.078 0 01-8.659-4.155.046.046 0 01.036-.074h5.936a.26.26 0 00.153-.05l2.27-1.648a.159.159 0 00.064-.128V7.616a.159.159 0 00-.065-.129L9.466 5.84a.261.261 0 00-.153-.05H2.886a.046.046 0 01-.037-.071A11.087 11.087 0 0112 .9c3.798 0 7.15 1.907 9.151 4.817a.046.046 0 01-.038.071h-1.597c-.052 0-.1.03-.123.079l-.353.757-1.082-.786a.26.26 0 00-.153-.05h-2.553a.261.261 0 00-.154.05L12.83 7.487a.159.159 0 00-.065.129v9.428c0 .05.024.098.065.128l2.27 1.648a.26.26 0 00.153.05h5.371c.038 0 .06.045.036.074A11.078 11.078 0 0112 23.1zM1.602 8.3l1.038.755c.043.03.068.08.068.132v8.73c0 .046-.06.063-.084.025A11.046 11.046 0 01.901 12c0-1.289.22-2.526.624-3.677a.05.05 0 01.077-.024zm13.67.488h3.225v1.776c0 .046.038.084.084.084h2.701a.098.098 0 00.096-.083l.535-3.374c.007-.044.066-.053.086-.013a11.053 11.053 0 011.1 4.823 11.05 11.05 0 01-1.39 5.382c-.022.04-.084.024-.084-.023v-3.084a.084.084 0 00-.084-.084h-2.96a.084.084 0 00-.084.084v1.642h-1.301a1.089 1.089 0 01-1.089-1.088V9.475a.159.159 0 00-.065-.129zM12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>DC Entertainment</title><path d="M5.215 8.787h2.154c.601 0 1.088.487 1.088 1.088v4.954c0 .6-.487 1.088-1.088 1.088H6.05V9.475a.159.159 0 00-.066-.129zM12 23.099a11.078 11.078 0 01-8.659-4.155.046.046 0 01.036-.074h5.936a.26.26 0 00.153-.05l2.27-1.648a.159.159 0 00.064-.128V7.616a.159.159 0 00-.065-.129L9.466 5.84a.261.261 0 00-.153-.05H2.886a.046.046 0 01-.037-.071A11.087 11.087 0 0112 .9c3.798 0 7.15 1.907 9.151 4.817a.046.046 0 01-.038.071h-1.597c-.052 0-.1.03-.123.079l-.353.757-1.082-.786a.26.26 0 00-.153-.05h-2.553a.261.261 0 00-.154.05L12.83 7.487a.159.159 0 00-.065.129v9.428c0 .05.024.098.065.128l2.27 1.648a.26.26 0 00.153.05h5.371c.038 0 .06.045.036.074A11.078 11.078 0 0112 23.1zM1.602 8.3l1.038.755c.043.03.068.08.068.132v8.73c0 .046-.06.063-.084.025A11.046 11.046 0 01.901 12c0-1.289.22-2.526.624-3.677a.05.05 0 01.077-.024zm13.67.488h3.225v1.776c0 .046.038.084.084.084h2.701a.098.098 0 00.096-.083l.535-3.374c.007-.044.066-.053.086-.013a11.053 11.053 0 011.1 4.823 11.05 11.05 0 01-1.39 5.382c-.022.04-.084.024-.084-.023v-3.084a.084.084 0 00-.084-.084h-2.96a.084.084 0 00-.084.084v1.642h-1.301a1.089 1.089 0 01-1.089-1.088V9.475a.159.159 0 00-.065-.129zM12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/debian.svg b/assets/lib/simple-icons/icons/debian.svg
index 4fbd8a2a..6e4be6a7 100644
--- a/assets/lib/simple-icons/icons/debian.svg
+++ b/assets/lib/simple-icons/icons/debian.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Debian icon</title><path d="M13.88 12.68c-.4 0 .08.2.6.28.14-.1.27-.22.39-.33a3 3 0 0 1-.99.05M16.02 12.15c.23-.33.4-.69.47-1.06-.06.27-.2.5-.33.73-.75.47-.07-.27 0-.56-.8 1.01-.11.6-.14.89M16.8 10.1c.05-.72-.14-.5-.2-.22.07.04.13.5.2.22M12.38.31c.2.04.45.07.42.12.23-.05.28-.1-.43-.12M12.8.43l-.15.03.14-.01V.43M19.42 10.37c.02.64-.2.95-.38 1.5l-.35.18c-.28.54.03.35-.17.78-.44.39-1.34 1.22-1.62 1.3-.2 0 .14-.25.19-.34-.59.4-.48.6-1.37.85l-.03-.06c-2.22 1.04-5.3-1.02-5.25-3.84-.03.17-.07.13-.12.2a3.55 3.55 0 0 1 2-3.5 3.36 3.36 0 0 1 3.73.48 3.34 3.34 0 0 0-2.72-1.3c-1.18.01-2.28.76-2.65 1.57-.6.38-.67 1.47-.93 1.66-.36 2.6.66 3.72 2.38 5.04.27.19.08.21.12.35a4.7 4.7 0 0 1-1.53-1.16c.23.33.47.66.8.91-.55-.18-1.27-1.3-1.48-1.35.93 1.66 3.78 2.92 5.26 2.3a6.2 6.2 0 0 1-2.33-.28c-.33-.16-.77-.51-.7-.57a5.8 5.8 0 0 0 5.9-.84c.44-.35.93-.94 1.07-.95-.2.32.04.16-.12.44.44-.72-.2-.3.46-1.24l.24.33c-.09-.6.74-1.32.66-2.26.19-.3.2.3 0 .97.29-.74.08-.85.15-1.46.08.2.18.42.23.63-.18-.7.2-1.2.28-1.6-.09-.05-.28.3-.32-.53 0-.37.1-.2.14-.28-.08-.05-.26-.32-.38-.86.08-.13.22.33.34.34-.08-.42-.2-.75-.2-1.08-.34-.68-.12.1-.4-.3-.34-1.09.3-.25.34-.74.54.77.84 1.96.98 2.46-.1-.6-.28-1.2-.49-1.76.16.07-.26-1.24.21-.37A7.82 7.82 0 0 0 17.7 1.6c.18.17.42.39.33.42-.75-.45-.62-.48-.73-.67-.61-.25-.65.02-1.06 0C15.08.73 14.86.8 13.8.4l.05.23c-.77-.25-.9.1-1.73 0-.05-.04.27-.14.53-.18-.74.1-.7-.14-1.43.03.17-.13.36-.21.55-.32-.6.04-1.44.35-1.18.07C9.6.68 7.85 1.3 6.87 2.22L6.84 2c-.45.54-1.96 1.61-2.08 2.31l-.13.03c-.23.4-.38.85-.57 1.26-.3.52-.45.2-.4.28-.6 1.22-.9 2.25-1.16 3.1.18.27 0 1.65.07 2.76-.3 5.46 3.84 10.77 8.36 12 .67.23 1.65.23 2.49.25-.99-.28-1.12-.15-2.08-.49-.7-.32-.85-.7-1.34-1.13l.2.35c-.97-.34-.57-.42-1.36-.67l.21-.27c-.31-.03-.83-.53-.97-.81l-.34.01c-.41-.5-.63-.87-.61-1.16l-.11.2c-.13-.21-1.52-1.9-.8-1.51-.13-.12-.31-.2-.5-.55l.14-.17c-.35-.44-.64-1.02-.62-1.2.2.24.32.3.45.33-.88-2.17-.93-.12-1.6-2.2l.15-.02c-.1-.16-.18-.34-.26-.51l.06-.6c-.63-.74-.18-3.1-.09-4.4.07-.54.53-1.1.88-1.98l-.21-.04c.4-.71 2.34-2.87 3.24-2.76.43-.55-.09 0-.18-.14.96-.99 1.26-.7 1.9-.88.7-.4-.6.16-.27-.15 1.2-.3.85-.7 2.42-.85.16.1-.39.14-.52.26 1-.49 3.15-.37 4.56.27 1.63.77 3.46 3.01 3.53 5.13l.08.02c-.04.85.13 1.82-.17 2.71l.2-.42M9.54 13.23l-.05.28c.26.35.47.73.8 1.01-.24-.47-.42-.66-.75-1.3M10.16 13.2c-.14-.15-.22-.34-.31-.52.08.32.26.6.43.88l-.12-.36M21.1 10.82l-.07.15c-.1.76-.34 1.51-.69 2.21.4-.73.65-1.54.75-2.36M12.45.12c.27-.1.66-.05.95-.12-.37.03-.74.05-1.1.1l.15.02M3.01 5.14c.07.57-.43.8.11.42.3-.66-.11-.18-.1-.42M2.38 7.8c.12-.39.15-.62.2-.84-.35.44-.17.53-.2.83"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Debian</title><path d="M13.88 12.685c-.4 0 .08.2.601.28.14-.1.27-.22.39-.33a3.001 3.001 0 01-.99.05m2.14-.53c.23-.33.4-.69.47-1.06-.06.27-.2.5-.33.73-.75.47-.07-.27 0-.56-.8 1.01-.11.6-.14.89m.781-2.05c.05-.721-.14-.501-.2-.221.07.04.13.5.2.22M12.38.31c.2.04.45.07.42.12.23-.05.28-.1-.43-.12m.43.12l-.15.03.14-.01V.43m6.633 9.944c.02.64-.2.95-.38 1.5l-.35.181c-.28.54.03.35-.17.78-.44.39-1.34 1.22-1.62 1.301-.201 0 .14-.25.19-.34-.591.4-.481.6-1.371.85l-.03-.06c-2.221 1.04-5.303-1.02-5.253-3.842-.03.17-.07.13-.12.2a3.551 3.552 0 012.001-3.501 3.361 3.362 0 013.732.48 3.341 3.342 0 00-2.721-1.3c-1.18.01-2.281.76-2.651 1.57-.6.38-.67 1.47-.93 1.661-.361 2.601.66 3.722 2.38 5.042.27.19.08.21.12.35a4.702 4.702 0 01-1.53-1.16c.23.33.47.66.8.91-.55-.18-1.27-1.3-1.48-1.35.93 1.66 3.78 2.921 5.261 2.3a6.203 6.203 0 01-2.33-.28c-.33-.16-.77-.51-.7-.57a5.802 5.803 0 005.902-.84c.44-.35.93-.94 1.07-.95-.2.32.04.16-.12.44.44-.72-.2-.3.46-1.24l.24.33c-.09-.6.74-1.321.66-2.262.19-.3.2.3 0 .97.29-.74.08-.85.15-1.46.08.2.18.42.23.63-.18-.7.2-1.2.28-1.6-.09-.05-.28.3-.32-.53 0-.37.1-.2.14-.28-.08-.05-.26-.32-.38-.861.08-.13.22.33.34.34-.08-.42-.2-.75-.2-1.08-.34-.68-.12.1-.4-.3-.34-1.091.3-.25.34-.74.54.77.84 1.96.981 2.46-.1-.6-.28-1.2-.49-1.76.16.07-.26-1.241.21-.37A7.823 7.824 0 0017.702 1.6c.18.17.42.39.33.42-.75-.45-.62-.48-.73-.67-.61-.25-.65.02-1.06 0C15.082.73 14.862.8 13.8.4l.05.23c-.77-.25-.9.1-1.73 0-.05-.04.27-.14.53-.18-.741.1-.701-.14-1.431.03.17-.13.36-.21.55-.32-.6.04-1.44.35-1.18.07C9.6.68 7.847 1.3 6.867 2.22L6.838 2c-.45.54-1.96 1.611-2.08 2.311l-.131.03c-.23.4-.38.85-.57 1.261-.3.52-.45.2-.4.28-.6 1.22-.9 2.251-1.16 3.102.18.27 0 1.65.07 2.76-.3 5.463 3.84 10.776 8.363 12.006.67.23 1.65.23 2.49.25-.99-.28-1.12-.15-2.08-.49-.7-.32-.85-.7-1.34-1.13l.2.35c-.971-.34-.57-.42-1.361-.67l.21-.27c-.31-.03-.83-.53-.97-.81l-.34.01c-.41-.501-.63-.871-.61-1.161l-.111.2c-.13-.21-1.52-1.901-.8-1.511-.13-.12-.31-.2-.5-.55l.14-.17c-.35-.44-.64-1.02-.62-1.2.2.24.32.3.45.33-.88-2.172-.93-.12-1.601-2.202l.15-.02c-.1-.16-.18-.34-.26-.51l.06-.6c-.63-.74-.18-3.102-.09-4.402.07-.54.53-1.1.88-1.981l-.21-.04c.4-.71 2.341-2.872 3.241-2.761.43-.55-.09 0-.18-.14.96-.991 1.26-.7 1.901-.88.7-.401-.6.16-.27-.151 1.2-.3.85-.7 2.421-.85.16.1-.39.14-.52.26 1-.49 3.151-.37 4.562.27 1.63.77 3.461 3.011 3.531 5.132l.08.02c-.04.85.13 1.821-.17 2.711l.2-.42M9.54 13.236l-.05.28c.26.35.47.73.8 1.01-.24-.47-.42-.66-.75-1.3m.62-.02c-.14-.15-.22-.34-.31-.52.08.32.26.6.43.88l-.12-.36m10.945-2.382l-.07.15c-.1.76-.34 1.511-.69 2.212.4-.73.65-1.541.75-2.362M12.45.12c.27-.1.66-.05.95-.12-.37.03-.74.05-1.1.1l.15.02M3.006 5.142c.07.57-.43.8.11.42.3-.66-.11-.18-.1-.42m-.64 2.661c.12-.39.15-.62.2-.84-.35.44-.17.53-.2.83"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/dedge.svg b/assets/lib/simple-icons/icons/dedge.svg
new file mode 100644
index 00000000..6c7fbf05
--- /dev/null
+++ b/assets/lib/simple-icons/icons/dedge.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>D-EDGE</title><path d="M19.986 0v8.338C16.09 2.93 7.61 2.8 3.74 8.733-.523 15.27 4.191 23.99 11.996 24h.001c5.447-.003 9.872-4.43 9.87-9.877V0Zm-7.99 6.14a8.004 8.004 0 0 1 7.99 7.988 7.986 7.986 0 0 1-4.93 7.381 7.986 7.986 0 0 1-8.707-1.73 7.985 7.985 0 0 1-1.733-8.707 7.986 7.986 0 0 1 7.38-4.932Z"/></svg>
diff --git a/assets/lib/simple-icons/icons/deepin.svg b/assets/lib/simple-icons/icons/deepin.svg
index eea4cf9a..2a5fbca2 100644
--- a/assets/lib/simple-icons/icons/deepin.svg
+++ b/assets/lib/simple-icons/icons/deepin.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>deepin icon</title><path d="M16.104.696c-1.724-.63-3.49-.8-5.205-.64-1.988.157-2.958.772-2.9.661-3.251 1.16-6 3.657-7.272 7.157-2.266 6.234.944 13.128 7.168 15.398 6.228 2.27 13.111-.945 15.378-7.179C25.54 9.86 22.33 2.966 16.104.696zM8.305 22.145a10.767 10.767 0 0 1-1.867-.904c2.9.223 6.686-.445 9.239-2.834 0 0 4.866-3.888 1.345-10.269 0 0 .568 2.572-.156 4.687 0 0-.69 2.877-3.757 3.712-4.517 1.231-9.664-1.93-11.816-3.463-.162-1.574-.018-3.2.56-4.788.855-2.352 2.463-4.188 4.427-5.42-.49 3.436-.102 6.6.456 7.925.749 1.777 2.05 3.85 4.59 4.115 2.54.267 3.94-2.11 3.94-2.11 1.304-1.98 1.508-4.823 1.488-4.892-.02-.07-.347-.257-.347-.257-.877 3.549-2.323 4.734-2.323 4.734-2.28 2.201-3.895.675-3.895.675-1.736-1.865-.52-4.895-.52-4.895.68-2.064 2.66-5.084 4.905-6.62.374.092.75.15 1.12.284a10.712 10.712 0 0 1 3.554 2.16c-1.641.599-4.291 1.865-4.291 1.865-4.201 1.77-4.485 4.446-4.485 4.446-.435 2.758 1.754 1.59 1.754 1.59 2.252-1.097 3.359-4.516 3.359-4.516-.703-.134-1.257.08-1.257.08-.899 2.22-2.733 3.132-2.733 3.132-.722.382-.89-.293-.89-.293-.122-.506.522-.592.522-.592 1-.389 1.639-1.439 1.784-1.868.144-.43.412-.464.412-.464a12.998 12.998 0 0 1 2.619-.535c1.7-.209 4.303.602 4.303.602.584.235 1.144.41 1.641.551.954 2.384 1.105 5.098.16 7.7-2.039 5.61-8.236 8.504-13.841 6.462z" /></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>deepin</title><path d="M16.104.696c-1.724-.63-3.49-.8-5.205-.64-1.988.157-2.958.772-2.9.661-3.251 1.16-6 3.657-7.272 7.157-2.266 6.234.944 13.128 7.168 15.398 6.228 2.27 13.111-.945 15.378-7.179C25.54 9.86 22.33 2.966 16.104.696zM8.305 22.145a10.767 10.767 0 0 1-1.867-.904c2.9.223 6.686-.445 9.239-2.834 0 0 4.866-3.888 1.345-10.269 0 0 .568 2.572-.156 4.687 0 0-.69 2.877-3.757 3.712-4.517 1.231-9.664-1.93-11.816-3.463-.162-1.574-.018-3.2.56-4.788.855-2.352 2.463-4.188 4.427-5.42-.49 3.436-.102 6.6.456 7.925.749 1.777 2.05 3.85 4.59 4.115 2.54.267 3.94-2.11 3.94-2.11 1.304-1.98 1.508-4.823 1.488-4.892-.02-.07-.347-.257-.347-.257-.877 3.549-2.323 4.734-2.323 4.734-2.28 2.201-3.895.675-3.895.675-1.736-1.865-.52-4.895-.52-4.895.68-2.064 2.66-5.084 4.905-6.62.374.092.75.15 1.12.284a10.712 10.712 0 0 1 3.554 2.16c-1.641.599-4.291 1.865-4.291 1.865-4.201 1.77-4.485 4.446-4.485 4.446-.435 2.758 1.754 1.59 1.754 1.59 2.252-1.097 3.359-4.516 3.359-4.516-.703-.134-1.257.08-1.257.08-.899 2.22-2.733 3.132-2.733 3.132-.722.382-.89-.293-.89-.293-.122-.506.522-.592.522-.592 1-.389 1.639-1.439 1.784-1.868.144-.43.412-.464.412-.464a12.998 12.998 0 0 1 2.619-.535c1.7-.209 4.303.602 4.303.602.584.235 1.144.41 1.641.551.954 2.384 1.105 5.098.16 7.7-2.039 5.61-8.236 8.504-13.841 6.462z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/deepnote.svg b/assets/lib/simple-icons/icons/deepnote.svg
new file mode 100644
index 00000000..82ea57d5
--- /dev/null
+++ b/assets/lib/simple-icons/icons/deepnote.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Deepnote</title><path d="M10.22 11.506l.111.018c-.038-.006-.075-.011-.111-.018zm4.475 8.073c.636-2.816-2.172-4.8-6.955-4.814L.713 24h9.586c.132-.025.256-.056.384-.085 2.258-1.057 3.598-2.501 4.012-4.336zM10.299 24h.203l.021-.01c-.075.003-.148.008-.224.01zM24 11.319C24 3.15 18.711-.597 8.134.077L0 11.319h7.568c3.323 0 8.457.719 8.457 6.153 0 3.622-1.909 5.798-5.727 6.528.099-.003.194-.009.291-.013l-.011.001-.076.012h.912l.247-.077C19.885 23.27 24 19.07 24 11.319z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/deezer.svg b/assets/lib/simple-icons/icons/deezer.svg
index 26763458..73ee172e 100644
--- a/assets/lib/simple-icons/icons/deezer.svg
+++ b/assets/lib/simple-icons/icons/deezer.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Deezer icon</title><path d="M18.81 4.16v3.03H24V4.16h-5.19zM6.27 8.38v3.027h5.189V8.38h-5.19zm12.54 0v3.027H24V8.38h-5.19zM6.27 12.594v3.027h5.189v-3.027h-5.19zm6.271 0v3.027h5.19v-3.027h-5.19zm6.27 0v3.027H24v-3.027h-5.19zM0 16.81v3.029h5.19v-3.03H0zm6.27 0v3.029h5.189v-3.03h-5.19zm6.271 0v3.029h5.19v-3.03h-5.19zm6.27 0v3.029H24v-3.03h-5.19Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Deezer</title><path d="M18.81 4.16v3.03H24V4.16h-5.19zM6.27 8.38v3.027h5.189V8.38h-5.19zm12.54 0v3.027H24V8.38h-5.19zM6.27 12.594v3.027h5.189v-3.027h-5.19zm6.271 0v3.027h5.19v-3.027h-5.19zm6.27 0v3.027H24v-3.027h-5.19zM0 16.81v3.029h5.19v-3.03H0zm6.27 0v3.029h5.189v-3.03h-5.19zm6.271 0v3.029h5.19v-3.03h-5.19zm6.27 0v3.029H24v-3.03h-5.19Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/delicious.svg b/assets/lib/simple-icons/icons/delicious.svg
index f79ffa4f..b58a23d6 100644
--- a/assets/lib/simple-icons/icons/delicious.svg
+++ b/assets/lib/simple-icons/icons/delicious.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Delicious icon</title><path d="M12 12H0v12h12V12zM24 0H12v12h12V0z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>del.icio.us</title><path d="M12 12H0v12h12V12zM24 0H12v12h12V0z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/deliveroo.svg b/assets/lib/simple-icons/icons/deliveroo.svg
index cf1674fc..11b3e38a 100644
--- a/assets/lib/simple-icons/icons/deliveroo.svg
+++ b/assets/lib/simple-icons/icons/deliveroo.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Deliveroo icon</title><path d="M16.861 0l-1.127 10.584L13.81 1.66 7.777 2.926l1.924 8.922-8.695 1.822 1.535 7.127L17.832 24l3.498-7.744L22.994.636 16.861 0zM11.39 13.61a.755.755 0 01.322.066c.208.093.56.29.63.592.103.434.004.799-.312 1.084v.002c-.315.284-.732.258-1.174.113-.441-.145-.637-.672-.47-1.309.124-.473.71-.544 1.004-.549zm4.142.548c.447-.012.832.186 1.05.543.217.357.107.75-.122 1.143h-.002c-.229.392-.83.445-1.422.16-.399-.193-.397-.684-.353-.983a.922.922 0 01.193-.447c.142-.177.381-.408.656-.416Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Deliveroo</title><path d="M16.861 0l-1.127 10.584L13.81 1.66 7.777 2.926l1.924 8.922-8.695 1.822 1.535 7.127L17.832 24l3.498-7.744L22.994.636 16.861 0zM11.39 13.61a.755.755 0 01.322.066c.208.093.56.29.63.592.103.434.004.799-.312 1.084v.002c-.315.284-.732.258-1.174.113-.441-.145-.637-.672-.47-1.309.124-.473.71-.544 1.004-.549zm4.142.548c.447-.012.832.186 1.05.543.217.357.107.75-.122 1.143h-.002c-.229.392-.83.445-1.422.16-.399-.193-.397-.684-.353-.983a.922.922 0 01.193-.447c.142-.177.381-.408.656-.416Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/dell.svg b/assets/lib/simple-icons/icons/dell.svg
index a1fa1e8a..d272bbf6 100644
--- a/assets/lib/simple-icons/icons/dell.svg
+++ b/assets/lib/simple-icons/icons/dell.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 24 24"><title>Dell icon</title><path d="M17.963 14.6V9.324h1.222v4.204h2.14v1.07h-3.362zm-9.784-3.288l2.98-2.292c.281.228.56.458.841.687l-2.827 2.14.611.535 2.827-2.216c.281.228.56.458.841.688a295.83 295.83 0 0 1-2.827 2.216l.61.536 2.83-2.295-.001-1.986h1.223v4.204h2.216v1.07h-3.362v-1.987c-.995.763-1.987 1.529-2.981 2.292l-2.981-2.292c-.144.729-.653 1.36-1.312 1.694-.285.147-.597.24-.915.276-.183.022-.367.017-.551.017H3.516V9.325H5.69a2.544 2.544 0 0 1 1.563.557c.454.36.778.872.927 1.43m-3.516-.917v3.21l.953-.001a1.377 1.377 0 0 0 1.036-.523 1.74 1.74 0 0 0 .182-1.889 1.494 1.494 0 0 0-.976-.766c-.166-.04-.338-.03-.507-.032h-.688zM11.82 0h.337a11.94 11.94 0 0 1 5.405 1.373 12.101 12.101 0 0 1 4.126 3.557A11.93 11.93 0 0 1 24 11.82v.36a11.963 11.963 0 0 1-3.236 8.033A11.967 11.967 0 0 1 12.182 24h-.361a11.993 11.993 0 0 1-4.145-.806 12.04 12.04 0 0 1-4.274-2.836A12.057 12.057 0 0 1 .576 15.67 12.006 12.006 0 0 1 0 12.181v-.361a11.924 11.924 0 0 1 1.992-6.396 12.211 12.211 0 0 1 4.71-4.172A11.875 11.875 0 0 1 11.82 0m-.153 1.23a10.724 10.724 0 0 0-6.43 2.375 10.78 10.78 0 0 0-3.319 4.573 10.858 10.858 0 0 0 .193 8.12 10.788 10.788 0 0 0 3.546 4.421 10.698 10.698 0 0 0 4.786 1.946c1.456.209 2.955.124 4.376-.26a10.756 10.756 0 0 0 5.075-3.062 10.742 10.742 0 0 0 2.686-5.28 10.915 10.915 0 0 0-.122-4.682 10.77 10.77 0 0 0-7.098-7.626 10.78 10.78 0 0 0-3.693-.525z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Dell</title><path d="M17.963 14.6V9.324h1.222v4.204h2.14v1.07h-3.362zm-9.784-3.288l2.98-2.292c.281.228.56.458.841.687l-2.827 2.14.611.535 2.827-2.216c.281.228.56.458.841.688a295.83 295.83 0 0 1-2.827 2.216l.61.536 2.83-2.295-.001-1.986h1.223v4.204h2.216v1.07h-3.362v-1.987c-.995.763-1.987 1.529-2.981 2.292l-2.981-2.292c-.144.729-.653 1.36-1.312 1.694-.285.147-.597.24-.915.276-.183.022-.367.017-.551.017H3.516V9.325H5.69a2.544 2.544 0 0 1 1.563.557c.454.36.778.872.927 1.43m-3.516-.917v3.21l.953-.001a1.377 1.377 0 0 0 1.036-.523 1.74 1.74 0 0 0 .182-1.889 1.494 1.494 0 0 0-.976-.766c-.166-.04-.338-.03-.507-.032h-.688zM11.82 0h.337a11.94 11.94 0 0 1 5.405 1.373 12.101 12.101 0 0 1 4.126 3.557A11.93 11.93 0 0 1 24 11.82v.36a11.963 11.963 0 0 1-3.236 8.033A11.967 11.967 0 0 1 12.182 24h-.361a11.993 11.993 0 0 1-4.145-.806 12.04 12.04 0 0 1-4.274-2.836A12.057 12.057 0 0 1 .576 15.67 12.006 12.006 0 0 1 0 12.181v-.361a11.924 11.924 0 0 1 1.992-6.396 12.211 12.211 0 0 1 4.71-4.172A11.875 11.875 0 0 1 11.82 0m-.153 1.23a10.724 10.724 0 0 0-6.43 2.375 10.78 10.78 0 0 0-3.319 4.573 10.858 10.858 0 0 0 .193 8.12 10.788 10.788 0 0 0 3.546 4.421 10.698 10.698 0 0 0 4.786 1.946c1.456.209 2.955.124 4.376-.26a10.756 10.756 0 0 0 5.075-3.062 10.742 10.742 0 0 0 2.686-5.28 10.915 10.915 0 0 0-.122-4.682 10.77 10.77 0 0 0-7.098-7.626 10.78 10.78 0 0 0-3.693-.525z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/delonghi.svg b/assets/lib/simple-icons/icons/delonghi.svg
new file mode 100644
index 00000000..89859aaf
--- /dev/null
+++ b/assets/lib/simple-icons/icons/delonghi.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>De'Longhi</title><path d="M20.16 8.158H3.841A3.85 3.85 0 000 11.999a3.848 3.848 0 003.841 3.843H20.16A3.844 3.844 0 0024 11.999a3.846 3.846 0 00-3.84-3.841zm-.051 7.409H3.885A3.564 3.564 0 01.319 12a3.564 3.564 0 013.566-3.571h16.224A3.566 3.566 0 0123.68 12a3.564 3.564 0 01-3.571 3.567zm-3.84-3.864c.084 0 .142.013.177.043v1.034a.836.836 0 01-.177.043c-.062-.003-.107-.03-.133-.084a.671.671 0 01-.036-.252v-.544c0-.16.059-.24.169-.24zm-4.635.137v.829a.392.392 0 01-.036.195c-.026.035-.066.053-.119.053-.053 0-.097-.017-.124-.049-.023-.035-.036-.102-.036-.198V11.84c0-.147.053-.217.155-.217.107 0 .16.07.16.217zm-4.9-.062a.802.802 0 01.014.159h-.346c0-.062.005-.115.014-.164 0-.022.008-.044.013-.066.018-.058.067-.084.137-.084.08 0 .129.026.151.084.004.022.013.044.017.071zM4.24 11.02c.045.039.067.119.067.234v1.224c0 .115-.018.191-.054.226a.287.287 0 01-.177.062h-.12v-1.803h.08c.093 0 .16.018.204.057zm15.892-1.723H3.881a2.71 2.71 0 00-2.702 2.702 2.712 2.712 0 002.702 2.703h16.243a2.71 2.71 0 002.697-2.703c0-1.475-1.192-2.702-2.689-2.702zM5.676 10.574H7.55v.248H5.676v-.248zm-.39 1.288v.7c0 .15-.028.292-.085.42a.668.668 0 01-.302.325c-.142.084-.336.127-.58.127H2.84v-.562c.057-.023.093-.058.107-.103a.665.665 0 00.022-.185v-1.48a.488.488 0 00-.026-.181c-.013-.04-.049-.071-.102-.093v-.557h1.48c.222 0 .403.03.544.096.142.063.253.16.32.289.066.133.103.298.103.492v.712zm2.295.625H6.402v.209a.5.5 0 00.027.181c.023.044.067.072.137.072.071 0 .116-.023.133-.067a.469.469 0 00.031-.177v-.085h.851v.568c-.084.079-.226.15-.429.212a1.98 1.98 0 01-1.193 0 .597.597 0 01-.324-.27.934.934 0 01-.097-.456v-.895a.905.905 0 01.128-.417.581.581 0 01.329-.221c.146-.039.336-.062.571-.062.222 0 .399.018.537.057a.729.729 0 01.306.172c.07.076.115.159.137.254.013.066.027.137.031.217.005.039.005.084.005.127v.581zm2.644.947H7.922v-.562c.076-.045.111-.124.111-.239V11.059c0-.11-.036-.185-.111-.23v-.557h1.205v.557a.21.21 0 00-.088.107.575.575 0 00-.031.19.826.826 0 01.008.123v1.516h.124c.093-.009.155-.035.181-.089a.581.581 0 00.041-.252v-.522h.863v1.532zm2.274-1.165v.416a.909.909 0 01-.107.47.602.602 0 01-.319.258 1.58 1.58 0 01-.549.079c-.271-.005-.483-.031-.634-.084a.565.565 0 01-.332-.257c-.067-.119-.102-.279-.102-.487V11.853a.89.89 0 01.094-.434c.057-.116.164-.2.314-.258.151-.058.355-.084.611-.084.249 0 .448.026.594.071a.584.584 0 01.324.239c.071.115.107.274.107.479v.403zm2.499 1.165h-.922a1.142 1.142 0 01-.031-.225 2.403 2.403 0 01-.014-.235c-.004-.075-.004-.168-.004-.279v-.775a.195.195 0 00-.204-.204c-.04 0-.08.011-.11.023v.878c0 .088.004.153.013.195.013.039.04.075.088.106v.518h-1.076v-.518a.226.226 0 00.093-.096.414.414 0 00.017-.143v-.771a.59.59 0 00-.017-.172.242.242 0 00-.093-.102v-.528h.935v.151c.194-.137.389-.208.584-.208.182.005.319.044.412.119.094.076.155.16.181.253a.95.95 0 01.041.265v1.001c0 .053.009.098.018.137a.176.176 0 00.089.09v.52zm2.419-1.807a.187.187 0 00-.094.102.7.7 0 00-.017.164V13.487c0 .201-.027.368-.08.496a.597.597 0 01-.305.299c-.156.067-.373.101-.656.101a2.109 2.109 0 01-.492-.062 1.66 1.66 0 01-.47-.2v-.571h.797c0 .172.059.256.178.256.075-.003.12-.034.138-.088a.837.837 0 00.03-.234v-.169a.926.926 0 01-.527.159c-.235-.003-.408-.066-.518-.191-.106-.123-.164-.296-.164-.518v-.899c0-.244.048-.44.147-.581.094-.138.28-.209.545-.209.092 0 .19.013.288.045a.738.738 0 01.253.124v-.142h.949v.524zm2.503 1.807h-.917a4.698 4.698 0 01-.053-.553c.009-.066.009-.159.009-.274v-.643a.257.257 0 00-.062-.172.21.21 0 00-.155-.076.275.275 0 00-.097.023v.966c0 .111.031.186.097.213v.518H17.67v-.518a.225.225 0 00.093-.102.668.668 0 00.017-.187v-1.515c0-.195-.039-.307-.119-.324v-.517h.983v.947a.82.82 0 01.266-.128.863.863 0 01.27-.044.77.77 0 01.452.146c.124.094.19.253.19.483v.896a.431.431 0 01-.008.075.645.645 0 00.026.181c.009.032.04.062.08.085v.52zm.389-3.091a.526.526 0 01.328-.102c.084 0 .164.017.234.045a.36.36 0 01.173.124.294.294 0 01.067.19v.008a.317.317 0 01-.063.191.46.46 0 01-.172.124.675.675 0 01-.24.04.504.504 0 01-.323-.098.324.324 0 01-.004-.522zm.913 3.091h-1.081v-.518c.053-.035.084-.067.092-.106a.628.628 0 00.018-.183v-.743a.522.522 0 00-.018-.159.162.162 0 00-.092-.099v-.523h.974v1.604c0 .103.036.169.106.209v.518z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/delphi.svg b/assets/lib/simple-icons/icons/delphi.svg
new file mode 100644
index 00000000..954bd082
--- /dev/null
+++ b/assets/lib/simple-icons/icons/delphi.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Delphi</title><path d="M11.986 0C5.74 0 .47 4.84.03 11.167c-.46 6.61 4.527 12.343 11.138 12.804 6.61.46 12.343-4.527 12.804-11.138C24.43 6.223 19.444.49 12.833.03 12.55.01 12.267 0 11.986 0zm1.89 3.14c.426 0 .845.027 1.258.079l-.604 1.12-1.116 2.073-.757 1.414c-.027.05-.056.07-.114.067-1.187-.08-2.017.235-2.156.266l.2-.75 1.015-3.768c.023-.085.047-.17.068-.256.71-.16 1.449-.244 2.206-.244zm2.544.327c1.191.312 2.298.838 3.277 1.534L17.9 6.514l-1.712 1.435c-.288.242-.576.486-.861.732-.046.039-.08.043-.137.017a5.77 5.77 0 00-1.893-.708l.463-.67 1.83-2.651c.277-.4.554-.8.83-1.202zm-5.699.181c-.016.104-.03.201-.047.298a1675.621 1675.621 0 01-.58 3.327c-.06.352-.115.645-.17.998-.01.066-.051.076-.093.093-.886.368-1.605 1.009-1.837 1.236l-.053-.635c-.02-.227-.037-.453-.055-.679-.019-.235-.037-.47-.057-.704l-.06-.685-.057-.678-.06-.703c-.005-.066-.015-.132-.014-.198l.001-.005a10.086 10.086 0 013.082-1.665zM6.867 5.995l.142.632.522 2.323c.066.293.133.568.195.862a.123.123 0 01-.024.093 6.798 6.798 0 00-.955 1.466l-.277-.559c-.43-.865-.859-1.73-1.29-2.593a.142.142 0 01-.018-.063l.125-.206c.249-.353.491-.713.755-1.055.197-.254.433-.477.651-.714l.174-.186zm5.338 2.134c.117 0 .234.003.351.011.807.053 1.561.298 2.274.676.457.242.878.536 1.27.871.067.057.13.118.202.184l-1.383.95-3.723 2.544c-.308.21-.615.425-.925.633-.07.046-.092.086-.072.172.08.346.147.694.22 1.04.003.015.01.028.017.049l.622-.123 1.241 2.606c-.148-.02-.282-.041-.417-.057-.285-.032-.57-.067-.856-.09a7.53 7.53 0 00-.758-.032c-.453.01-.907.038-1.34.192-.242.086-.46.208-.622.432-.109-.107-.219-.208-.32-.316a5.686 5.686 0 01-1.012-1.503 5.857 5.857 0 01-.47-1.566 5.387 5.387 0 01-.051-1.28 5.775 5.775 0 011.053-2.916 5.85 5.85 0 013.804-2.4c.297-.051.596-.077.895-.077zm-1.39.785c-.026.011-.051.021-.076.033a7.446 7.446 0 00-1.525.95 6.121 6.121 0 00-1.403 1.555 4.536 4.536 0 00-.686 2.253c-.018.485.05.962.17 1.431.17.675.454 1.304.798 1.907.033.058.074.05.115.031.119-.056.235-.118.357-.18l-.04-.07c-.164-.287-.344-.566-.489-.862-.393-.805-.599-1.65-.52-2.554.03-.33.089-.652.192-.966.372-1.127 1.09-2.004 1.988-2.75.35-.29.723-.548 1.119-.778zM4.677 9.1l.347.464c.506.68 1.018 1.358 1.524 2.037.037.05.065.091.037.162-.143.366-.27.83-.318 1.205-.124-.109-.247-.216-.36-.317l-1.502-1.324c-.116-.103-.233-.205-.346-.312a.11.11 0 01-.028-.052 10.186 10.186 0 01.617-1.808l.029-.055zM17 9.695l.135.816c.057.353.111.706.168 1.06l.193 1.192c.036.217.07.435.107.653.01.057.003.086-.067.099-.79.153-1.581.311-2.372.466-.987.194-1.975.385-2.962.578-.516.101-1.03.205-1.546.307-.009.002-.017 0-.032-.001-.058-.207-.119-.414-.172-.623-.006-.022.016-.06.038-.08zM3.858 11.87l.572.356c.566.352 1.143.707 1.71 1.057.055.034.075.068.072.13-.009.152-.045.858.035 1.355l-.42-.147c-.677-.234-1.353-.469-2.03-.7a.188.188 0 01-.03-.014 10.418 10.418 0 01.09-2.037zm-.018 2.834c.117.022.23.043.342.067.696.145 1.387.287 2.082.435.03.007.075.042.078.069.06.28.249.819.257.85h-.401c-.314 0-.628-.002-.942 0-.37.004-.741.01-1.112.018h-.007a10.21 10.21 0 01-.297-1.44zm8.243.561c.02 0 .05.02.067.036.304.302.597.615.911.905.264.244.552.461.83.69.395.324.741.697 1.039 1.113.52.727.896 1.522 1.105 2.392a.481.481 0 01-.032.25c-.09.265-.282.457-.494.628-.296.24-.63.42-.982.566-.073.03-.1.015-.132-.056-.363-.794-.73-1.586-1.096-2.378l-1.487-3.223-.347-.75-.02-.052c.214-.041.424-.083.634-.12h.004zM6.69 16.47c.035 0 .06.017.084.06.132.232.158.337.431.76L5.09 18.417c-.257-.45-.48-.923-.667-1.413l.49-.117 1.732-.413a.18.18 0 01.046-.006zm3.534 1.412c.118 0 .235.005.353.015.537.045 1.072.111 1.608.171.027.003.063.03.075.055.217.469.432.939.646 1.41.01.02.01.052 0 .07l-.597 1.078c-.417-.071-.824-.148-1.234-.208a14.496 14.496 0 00-.948-.108c-.324-.026-.649-.05-.973-.049-.543 0-1.083.05-1.603.225l-.045.014.305-.71c.191-.446.388-.89.57-1.34a.647.647 0 01.307-.334 2.2 2.2 0 01.761-.23c.257-.036.516-.059.775-.059zm.02.27a5.133 5.133 0 00-1.324.21.155.155 0 00-.083.076c-.169.345-.335.692-.5 1.039-.051.104-.1.21-.15.315l.023.02c.005-.013.007-.028.015-.039.285-.4.57-.8.857-1.198a.234.234 0 01.113-.08c.535-.165 1.072-.314 1.645-.272-.027-.008-.054-.017-.081-.022a2.644 2.644 0 00-.515-.048z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/delta.svg b/assets/lib/simple-icons/icons/delta.svg
new file mode 100644
index 00000000..336c5493
--- /dev/null
+++ b/assets/lib/simple-icons/icons/delta.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Delta</title><path d="M24 13.455h-.689l-.288-.739h-1.2l-.289.739h-.644l1.233-2.96h.666zm-1.16-1.233l-.411-1.044-.411 1.044zm-4.315 1.233h.66v-2.438h.995v-.51h-2.644v.51h.989zm-3.826 0h1.927v-.511H15.36v-2.438h-.661zm-3.282-2.438h1.416v-.51h-2.077v2.948h2.121v-.511h-1.46v-.766h1.25v-.511h-1.25zm-4.981 2.438h1.038c1.072 0 1.71-.555 1.71-1.472 0-.916-.638-1.471-1.71-1.471H6.436zm.655-2.438h.383c.694 0 1.044.344 1.044.96 0 .617-.344.961-1.044.961h-.383zm-2.277 2.155a.15.15 0 0 1 .15.15.15.15 0 0 1-.15.15.15.15 0 0 1-.15-.15.15.15 0 0 1 .15-.15m0 .277a.13.13 0 0 0 .134-.127c0-.073-.056-.128-.134-.128a.126.126 0 0 0-.127.128c0 .072.055.127.127.127m-.033-.039H4.76v-.177h.067c.038 0 .055.016.055.05 0 .033-.022.044-.044.05l.055.077h-.028l-.05-.077h-.033zm0-.1h.028c.022 0 .05 0 .05-.027 0-.022-.022-.028-.039-.028h-.039zM0 13.85h4.626l-2.31-.978zm.172-.395l2.144-1.033 2.143 1.033-2.143-3.304Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/deno.svg b/assets/lib/simple-icons/icons/deno.svg
index 5e34505e..b60b207a 100644
--- a/assets/lib/simple-icons/icons/deno.svg
+++ b/assets/lib/simple-icons/icons/deno.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Deno icon</title><path d="M11.056.006c-.056.006-.236.027-.398.041C8.35.289 6.077 1.266 4.224 2.818a15.656 15.656 0 0 0-1.405 1.405C1.284 6.056.387 8.113.057 10.548c-.074.54-.074 2.364 0 2.904.331 2.435 1.228 4.492 2.762 6.325a15.656 15.656 0 0 0 1.405 1.405c1.833 1.535 3.89 2.432 6.325 2.762.54.074 2.364.074 2.904 0 2.435-.331 4.492-1.228 6.325-2.762a15.656 15.656 0 0 0 1.405-1.405c1.535-1.833 2.432-3.89 2.762-6.325.074-.54.074-2.364 0-2.904-.331-2.435-1.228-4.492-2.762-6.325a15.656 15.656 0 0 0-1.405-1.405C17.951 1.289 15.873.38 13.471.058c-.26-.035-.637-.05-1.337-.056a25.793 25.793 0 0 0-1.077.003zm.147 1.275c0 .345.024 1.095.056 1.806.018.348.038.847.047 1.107.032.921.13 3.338.145 3.553l.015.215-.133-.015a.504.504 0 0 1-.153-.032 3.247 3.247 0 0 1-.041-.455 702.803 702.803 0 0 1-.245-5.723l-.018-.655.083-.012c.044-.006.118-.015.165-.018l.08-.003v.23zm2.825-.071c.003.003.012.894.021 1.98.012 1.089.027 2.066.035 2.172.009.109.006.204-.009.21a.433.433 0 0 1-.159 0l-.136-.012-.021-.859-.032-1.172c-.024-.522-.044-2.296-.027-2.34.012-.032.044-.035.168-.015.086.018.156.032.159.035zm-6.827.989c.018.027.156 1.653.328 3.781.056.723.112 1.384.121 1.467.015.151.012.156-.083.215a.519.519 0 0 1-.118.059c-.009 0-.027-.077-.035-.171-.041-.384-.201-2.237-.313-3.577-.065-.788-.124-1.493-.133-1.57-.015-.13-.012-.142.065-.183.094-.05.148-.059.168-.021zm8.125.593c.083.03.091.044.109.213.03.295.021 1.706-.012 1.706-.086 0-.263-.1-.277-.156a14.377 14.377 0 0 1-.018-.93c0-.959-.012-.903.198-.832zm-5.451.139c0 .08.021.519.044.983l.062 1.305c.021.514.027.496-.171.508-.097.003-.097.003-.103-.145-.006-.083-.021-.339-.038-.576-.015-.236-.05-.747-.074-1.136s-.053-.776-.062-.859c-.018-.148-.015-.153.065-.183a.617.617 0 0 1 .183-.032c.094-.003.094-.003.094.136zm8.187.404l.1.041.021.395c.009.215.015.682.009 1.033l-.009.643-.124-.062-.124-.059-.009-.98c-.006-.54-.003-.998.003-1.018.012-.044.012-.044.133.006zm-5.389.387c.018.018.059 1.449.062 2.175l.003.437-.139-.021a1.3 1.3 0 0 1-.148-.021c-.009-.006-.097-2.193-.097-2.405v-.218l.151.018a.743.743 0 0 1 .168.035zm6.797.209c.035.041.041.688.05 4.253.009 4.094.009 4.2-.044 4.2a.197.197 0 0 1-.103-.038c-.044-.032-.05-.39-.065-3.887a475.425 475.425 0 0 0-.035-4.277l-.018-.425.086.062c.05.035.106.086.13.112zm-2.647.606c.015.012.03.18.032.372.015.652.018 4.651.003 4.663-.006.006-.059-.009-.118-.032l-.106-.044v-5.02l.083.018c.044.012.092.03.106.044zm-8.146.165c.009.08.024.26.032.407l.047.732c.035.519.03.552-.139.552-.089 0-.1-.009-.112-.097-.03-.174-.133-1.626-.118-1.65a.654.654 0 0 1 .239-.08c.018-.003.041.059.05.136zm-4.882.752l.145 1.455c.05.487.092.9.092.918 0 .035-.227.148-.251.124a96.053 96.053 0 0 1-.31-2.745c0-.071.227-.369.257-.336.009.006.038.269.068.584zm11.572.31l.086.05.003.638c.003.348.009.738.009.865.006.266-.027.31-.186.254l-.091-.032v-.254c0-.142-.009-.552-.021-.915l-.018-.655h.068a.41.41 0 0 1 .151.05zM5.091 6.909l.195 2.125.1 1.092-.115.115-.112.115-.021-.233c-.012-.13-.071-.732-.133-1.34s-.151-1.49-.195-1.96l-.083-.85.115-.106c.103-.097.115-.1.136-.047.012.03.062.519.112 1.089zm-2.211.358c.065.581.236 2.128.384 3.435s.286 2.568.313 2.804c.024.236.065.593.089.797.041.345.041.369-.006.404-.071.053-.1.047-.1-.015 0-.027-.027-.251-.059-.493-.053-.404-.142-1.089-.339-2.627-.041-.31-.121-.927-.177-1.372a466.562 466.562 0 0 1-.369-2.872c-.053-.401-.086-.759-.077-.797.021-.08.195-.357.213-.339.006.009.065.49.13 1.074zm-.903 1.272l.183 1.44c.056.437.127.983.159 1.21l.056.413-.062.053c-.035.03-.071.041-.083.03s-.035-.13-.053-.26c-.018-.13-.127-.888-.245-1.682l-.21-1.446.068-.201a.724.724 0 0 1 .083-.198c.012 0 .056.289.103.64zm16.203-.387c.041.041.047.224.047 1.579v1.532h-.083c-.18 0-.177.044-.189-1.632l-.009-1.526h.094c.05 0 .115.021.139.047zm-6.46.528c.667.1 1.248.286 1.824.581.372.192.549.325.962.72.614.587.992 1.101 1.346 1.827.516 1.057.717 1.992.971 4.501.115 1.124.266 3.164.298 3.999.009.242.03.64.047.885.032.519.071.449-.387.67-.635.307-1.245.519-2.051.717-.986.242-1.623.319-2.597.322l-.708.003.006-.339c0-.186.018-.62.035-.959.089-1.644.071-3.719-.044-4.87-.065-.661-.192-1.464-.263-1.641-.015-.038.053-.071.345-.171.534-.186.998-.419 1.068-.534.127-.218-.1-.531-.39-.531-.05 0-.201.053-.339.115-.661.304-1.986.661-2.751.741a7.794 7.794 0 0 1-1.918-.08c-.31-.056-.865-.266-1.328-.505-.534-.277-.862-.646-.959-1.083-.053-.236-.038-.708.03-.974.074-.292.28-.717.469-.965.841-1.107 2.577-2.066 4.356-2.402a6.632 6.632 0 0 1 1.977-.027zm9.105.092c.106.044.118.056.118.156.006.806-.012 2.647-.027 2.724-.003.027-.156.03-.221.006-.041-.015-.047-.174-.047-1.476 0-.933.012-1.458.03-1.458.015 0 .083.021.148.047zm1.289 1.62l.106.044-.021 2.444c-.024 3.114-.027 3.205-.139 3.474-.183.44-.174.528-.156-1.402.006-.965.021-1.942.027-2.169s.012-.868.015-1.426c0-.673.009-1.009.03-1.009.018 0 .08.021.139.044zm-17.749.735c.018.239.012.263-.074.452l-.094.201-.035-.295c-.056-.472-.056-.493.056-.564.05-.035.103-.059.112-.053s.027.124.035.26zm-1.824 1.78c.027.242.233 1.848.339 2.636.159 1.219.171 1.393.1 1.319a14.698 14.698 0 0 1-.148-.912c-.46-3.182-.457-3.161-.419-3.185.08-.053.106-.024.127.142zm2.125 1.351c.018.074.103.874.103.971 0 .083-.106.159-.153.112-.015-.015-.053-.266-.083-.555l-.074-.676-.018-.148.103.118a.656.656 0 0 1 .121.177zm2.382 1.113c.032.03.053.148.08.466.044.576.05.531-.071.531-.124 0-.121.009-.162-.511-.041-.528-.041-.522.038-.522.038 0 .089.018.115.035zm2.337.044c.006.03.021.207.032.393.009.186.035.605.059.93.083 1.192.086 1.343.035 1.343-.056 0-.062-.044-.127-.885a70.72 70.72 0 0 0-.097-1.219c-.027-.322-.044-.59-.035-.596.032-.035.118-.009.133.035zm-5.548.567c.018.027.13.971.269 2.261.041.39.083.764.091.835l.015.127-.074-.047a.153.153 0 0 1-.077-.145c0-.186-.127-1.411-.224-2.16-.056-.425-.1-.8-.1-.835 0-.062.071-.086.1-.035zm17.032 1.234l-.021 1.234-.074.109c-.168.248-.159.295-.151-1.086l.006-1.266.109-.112a.574.574 0 0 1 .13-.109c.009 0 .009.555 0 1.231zm-2.73 1.956c.015 1.715.012 1.848-.035 1.901-.03.032-.056.053-.065.044-.021-.024-.05-3.763-.027-3.784.012-.012.041-.018.068-.015.038.009.047.218.059 1.853zM8.5 17.998c.021.183.094 1.06.124 1.473.018.277.018.286-.047.307-.035.012-.077.009-.089-.006-.021-.021-.086-.676-.165-1.685l-.021-.242h.091c.086 0 .091.006.106.153zm-2.32 1.033c.021.021.035.094.035.168 0 .077.035.475.074.888.112 1.13.121 1.284.071 1.254-.077-.044-.145-.112-.13-.13a2.02 2.02 0 0 0-.03-.328c-.021-.171-.047-.449-.059-.62s-.038-.484-.062-.694c-.056-.516-.053-.576.012-.576.03 0 .068.015.089.035zm1.396 1.986c.009.065.027.307.038.537.021.443.012.475-.109.384-.035-.027-.059-.139-.094-.475-.062-.608-.065-.584.05-.573.086.009.097.021.115.127zM6.522 10.094c-.307.133-.331.549-.041.697.21.106.422.056.531-.127a.392.392 0 0 0-.49-.57zM8.523 10.377a.453.453 0 0 0 0 .767c.28.168.643-.053.643-.39 0-.325-.372-.543-.643-.378z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Deno</title><path d="M12 0c6.627 0 12 5.373 12 12s-5.373 12-12 12S0 18.627 0 12 5.373 0 12 0Zm-.469 6.793c-3.49 0-6.204 2.196-6.204 4.928 0 2.58 2.498 4.228 6.37 4.145l.118-.003.425-.012-.109.279.013.029c.031.072.06.145.084.22l.01.028.015.045.021.065.014.045.014.047.015.049.021.075.022.079.015.054.023.084.022.088.023.091.023.095.015.065.024.1.023.103.032.143.017.074.024.114.024.117.025.12.035.174.029.142.037.195.02.1.028.155.03.158.039.217.04.225.04.231.041.24.042.246.042.254.042.26.032.201.055.344.022.14.055.36.045.295.034.227.046.308.023.156a10.758 10.758 0 0 0 6.529-3.412l.05-.055-.238-.891-.633-2.37-.395-1.47-.348-1.296-.213-.787-.136-.498-.081-.297-.073-.264-.032-.11-.018-.064-.01-.034-.008-.026a6.042 6.042 0 0 0-2.038-2.97c-1.134-.887-2.573-1.351-4.252-1.351ZM8.467 19.3a.586.586 0 0 0-.714.4l-.004.013-.527 1.953c.328.163.665.309 1.008.437l.08.03.57-2.114.004-.015a.586.586 0 0 0-.417-.704Zm3.264-1.43a.586.586 0 0 0-.715.4l-.004.014-.796 2.953-.004.014a.586.586 0 0 0 1.131.305l.004-.014.797-2.953.003-.014a.585.585 0 0 0 .013-.067l.002-.022-.019-.096-.027-.138-.018-.086a.584.584 0 0 0-.367-.295Zm-5.553-3.04a.59.59 0 0 0-.037.09l-.005.02-.797 2.953-.004.014a.586.586 0 0 0 1.131.306l.004-.014.723-2.678a5.295 5.295 0 0 1-1.015-.692Zm-1.9-3.397a.586.586 0 0 0-.715.4l-.004.013-.797 2.953-.003.015a.586.586 0 0 0 1.13.305l.005-.014.797-2.953.003-.015a.586.586 0 0 0-.416-.704Zm17.868-.67a.586.586 0 0 0-.715.399l-.004.014-.797 2.953-.003.014a.586.586 0 0 0 1.13.305l.005-.014.797-2.953.003-.014a.586.586 0 0 0-.416-.704ZM2.542 6.82a10.707 10.707 0 0 0-1.251 3.926.586.586 0 0 0 1.002-.22l.004-.014.797-2.953.003-.014a.586.586 0 0 0-.555-.725Zm17.585.02a.586.586 0 0 0-.714.4l-.004.014-.797 2.953-.004.014a.586.586 0 0 0 1.131.305l.004-.014.797-2.953.004-.014a.586.586 0 0 0-.417-.704Zm-7.846 1.926a.75.75 0 1 1 0 1.5.75.75 0 0 1 0-1.5Zm-6.27-4.733a.586.586 0 0 0-.715.398l-.004.015-.797 2.953-.004.014a.586.586 0 0 0 1.132.305l.003-.014.797-2.953.004-.014a.586.586 0 0 0-.417-.704Zm10.238.558a.586.586 0 0 0-.714.399l-.004.014-.536 1.984c.347.171.678.373.99.603l.051.038.626-2.32.004-.014a.586.586 0 0 0-.417-.704Zm-5.211-3.33c-.374.033-.746.086-1.115.158l-.078.015-.742 2.753-.004.015a.586.586 0 0 0 1.131.305l.004-.014.797-2.953.004-.015a.583.583 0 0 0 .003-.264Zm7.332 2.04-.156.58-.004.015a.586.586 0 0 0 1.131.305l.004-.014.017-.063a10.838 10.838 0 0 0-.923-.772l-.069-.051Zm-4.636-1.944-.283 1.048-.003.014a.586.586 0 0 0 1.13.305l.005-.014.297-1.102c-.35-.097-.705-.176-1.063-.237l-.083-.014Z"/></svg>
diff --git a/assets/lib/simple-icons/icons/dependabot.svg b/assets/lib/simple-icons/icons/dependabot.svg
index bfaca4b2..f06b4a2a 100644
--- a/assets/lib/simple-icons/icons/dependabot.svg
+++ b/assets/lib/simple-icons/icons/dependabot.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Dependabot icon</title><path d="M10.949.314a1.918 1.918 0 0 1 2.102 0l9.333 6.118c.541.354.866.957.866 1.604v7.928c0 .647-.326 1.25-.866 1.604l-9.333 6.118a1.918 1.918 0 0 1-2.102 0l-9.333-6.118a1.916 1.916 0 0 1-.866-1.604V8.036c0-.647.326-1.25.866-1.604L10.949.314zM12.75 7.5v.75h-6A.75.75 0 0 0 6 9v3h-.5a.25.25 0 0 0-.25.25v2.5c0 .138.112.25.25.25H6v1.5c0 .415.336.75.75.75h10.5a.75.75 0 0 0 .75-.75V15h.5a.25.25 0 0 0 .25-.25v-2.5a.25.25 0 0 0-.25-.25H18V9a.75.75 0 0 0-.75-.75H13.5V5.5a.25.25 0 0 0-.25-.25H11.5a.25.25 0 0 0-.25.25v1.75c0 .138.112.25.25.25h1.25zm3.286 5.089l-1.572 1.572a.303.303 0 0 1-.428 0l-.947-.947a.303.303 0 0 1 0-.428l.322-.322a.303.303 0 0 1 .428 0l.41.411 1.037-1.036a.303.303 0 0 1 .428 0l.322.322a.303.303 0 0 1 0 .428zM9.464 14.16v.001a.303.303 0 0 1-.428 0l-.948-.947a.302.302 0 0 1 0-.428l.323-.322a.303.303 0 0 1 .427 0l.412.411 1.036-1.037a.303.303 0 0 1 .427 0l.323.322a.303.303 0 0 1 0 .428L9.464 14.16z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Dependabot</title><path d="M10.949.3136a1.918 1.918 0 012.102 0l9.3334 6.1182c.541.354.866.957.866 1.604v7.9283c0 .647-.326 1.25-.866 1.604l-9.3334 6.1183a1.918 1.918 0 01-2.102 0l-9.3334-6.1182a1.916 1.916 0 01-.866-1.604V8.0358c0-.647.326-1.25.866-1.604zm1.801 7.1862v.75H6.7498a.75.75 0 00-.75.7501V12h-.5a.25.25 0 00-.25.25v2.5c0 .1381.112.2501.25.2501h.5v1.5c0 .415.336.75.75.75h10.5004a.75.75 0 00.75-.75v-1.5h.5a.25.25 0 00.25-.25v-2.5a.25.25 0 00-.25-.2501h-.5V8.9999a.75.75 0 00-.75-.75H13.5V5.4998a.25.25 0 00-.25-.25H11.5a.25.25 0 00-.25.25v1.75c0 .138.112.25.25.25zm3.2861 5.0892l-1.572 1.572a.303.303 0 01-.428 0l-.947-.947a.303.303 0 010-.428l.322-.322a.303.303 0 01.428 0l.41.411 1.037-1.036a.303.303 0 01.428 0l.322.322a.303.303 0 010 .428zM9.464 14.16v.001a.303.303 0 01-.428 0l-.948-.947a.302.302 0 010-.428l.323-.322a.303.303 0 01.427 0l.412.411 1.036-1.037a.303.303 0 01.427 0l.323.322a.303.303 0 010 .428z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/derspiegel.svg b/assets/lib/simple-icons/icons/derspiegel.svg
new file mode 100644
index 00000000..8c34d363
--- /dev/null
+++ b/assets/lib/simple-icons/icons/derspiegel.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Der Spiegel</title><path d="M.868 13.054v-2.108h.677v2.108zm1.29.19v-2.488a.346.346 0 0 0-.338-.337H0v.527h.254v2.108H0v.527h1.841a.33.33 0 0 0 .318-.337zm1.905-.78v.59h-.72v-.864h.953v-.527h-.952v-.717h.72v.442h.592v-.97H2.497v.528h.233v2.108h-.233v.527h2.16v-1.117zm1.778-.801v-.717h.699v.717zm1.334 1.391v-.759a.334.334 0 0 0-.339-.337c.19 0 .339-.148.339-.338v-.843c0-.169-.149-.337-.318-.337H4.974v.527h.275v2.108h-.275v.506h1.121v-.527h-.233v-.864h.699v.864h-.254v.527h1.1v-.527zm4.507-1.391v-.717h.72v.717zm1.334.19v-1.097a.334.334 0 0 0-.339-.337h-1.862v.527h.254v2.108h-.254v.527h1.1v-.527h-.233v-.864h.995c.19 0 .339-.148.339-.338zm1.08 1.201v-2.108h.253v-.527h-1.1v.527h.254v2.108h-.254v.527h1.1v-.527zm2.094-.59v.59h-.72v-.864h.953v-.527h-.952v-.717h.72v.442h.613v-.97h-2.18v.528h.233v2.108h-.233v.527h2.18v-1.117zm1.736-.801v.527h.487v.864h-.72v-2.108h.72v.442h.634v-.632a.334.334 0 0 0-.338-.337h-1.27a.325.325 0 0 0-.212.084c-.063.063-.127.148-.127.253v2.488a.3.3 0 0 0 .127.253.32.32 0 0 0 .233.084h1.587v-1.918zm2.984.8v.591h-.72v-.864h.953v-.527h-.953v-.717h.72v.442h.614v-.97h-2.18v.528h.233v2.108h-.233v.527h2.18v-1.117zm2.476 0v.591h-.698v-2.108h.254v-.527H21.82v.527h.254v2.108h-.254v.527H24v-1.117zm-12.846.8v-1.592H9.227v-.722h.699v.446h.635v-.637c0-.204-.19-.34-.381-.34H8.931a.335.335 0 0 0-.338.34v1.444h1.312v.87h-.699v-.594h-.613v.764c0 .19.148.34.338.34h1.249c.195 0 .36-.128.36-.319Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/designernews.svg b/assets/lib/simple-icons/icons/designernews.svg
index 52c9c20b..276f0ca6 100644
--- a/assets/lib/simple-icons/icons/designernews.svg
+++ b/assets/lib/simple-icons/icons/designernews.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Designer News icon</title><path d="M11.27 11.98c0-3.83-2.354-6.43-6.84-6.43H0v12.9h4.524c4.354 0 6.747-2.624 6.747-6.464v-.005zM8.056 12c0 2.766-1.42 3.963-3.7 3.963h-1.16V8.037h1.16c2.185 0 3.7 1.252 3.7 3.963zM24 18.45V5.55h-2.97v7.213L16.28 5.55h-3.105v12.9h2.973v-7.723l5.084 7.718H24v.004z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Designer News</title><path d="M11.27 11.98c0-3.83-2.354-6.43-6.84-6.43H0v12.9h4.524c4.354 0 6.747-2.624 6.747-6.464v-.005zM8.056 12c0 2.766-1.42 3.963-3.7 3.963h-1.16V8.037h1.16c2.185 0 3.7 1.252 3.7 3.963zM24 18.45V5.55h-2.97v7.213L16.28 5.55h-3.105v12.9h2.973v-7.723l5.084 7.718H24v.004z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/deutschebahn.svg b/assets/lib/simple-icons/icons/deutschebahn.svg
new file mode 100644
index 00000000..306651b7
--- /dev/null
+++ b/assets/lib/simple-icons/icons/deutschebahn.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Deutsche Bahn</title><path d="M21.6 3.6H2.4C1.08 3.6 0 4.68 0 6v12c0 1.32 1.08 2.4 2.4 2.4h19.2c1.32 0 2.4-1.08 2.4-2.424V6c0-1.32-1.08-2.4-2.4-2.4zm.648 14.376c.024.36-.264.672-.648.696H2.4c-.36 0-.648-.312-.648-.672V6a.667.667 0 0 1 .624-.696H21.6c.36 0 .648.312.648.672v12zM7.344 6.504H3.312v10.992h4.032c3.336-.024 4.416-2.376 4.416-5.544 0-3.672-1.56-5.448-4.416-5.448zm-.456 9.216h-.936V8.232h.528c2.376 0 2.616 1.728 2.616 3.936 0 2.424-.816 3.552-2.208 3.552zm11.832-3.984c1.128-.336 1.896-1.368 1.92-2.568 0-.24-.048-2.688-3.144-2.688h-4.584v10.992H16.8c1.032 0 4.248 0 4.248-3.096 0-.744-.336-2.208-2.328-2.64zm-2.352-3.528c1.176 0 1.656.408 1.656 1.32 0 .72-.528 1.32-1.44 1.32h-1.032v-2.64h.816zm.24 7.512h-1.08v-2.832h1.152c1.368 0 1.704.792 1.704 1.416 0 1.416-1.344 1.416-1.776 1.416z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/deutschebank.svg b/assets/lib/simple-icons/icons/deutschebank.svg
new file mode 100644
index 00000000..e5ab4cc5
--- /dev/null
+++ b/assets/lib/simple-icons/icons/deutschebank.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Deutsche Bank</title><path d="M3.375 3.375v17.25h17.25V3.375H3.375zM0 0h24v24H0V0zm5.25 18.225 9.15-12.45h4.35L9.6 18.225H5.25z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/dev-dot-to.svg b/assets/lib/simple-icons/icons/dev-dot-to.svg
deleted file mode 100644
index 2743eaad..00000000
--- a/assets/lib/simple-icons/icons/dev-dot-to.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" role="img"><title>dev.to icon</title><path d="M7.42 10.05c-.18-.16-.46-.23-.84-.23H6l.02 2.44.04 2.45.56-.02c.41 0 .63-.07.83-.26.24-.24.26-.36.26-2.2 0-1.91-.02-1.96-.29-2.18zM0 4.94v14.12h24V4.94H0zM8.56 15.3c-.44.58-1.06.77-2.53.77H4.71V8.53h1.4c1.67 0 2.16.18 2.6.9.27.43.29.6.32 2.57.05 2.23-.02 2.73-.47 3.3zm5.09-5.47h-2.47v1.77h1.52v1.28l-.72.04-.75.03v1.77l1.22.03 1.2.04v1.28h-1.6c-1.53 0-1.6-.01-1.87-.3l-.3-.28v-3.16c0-3.02.01-3.18.25-3.48.23-.31.25-.31 1.88-.31h1.64v1.3zm4.68 5.45c-.17.43-.64.79-1 .79-.18 0-.45-.15-.67-.39-.32-.32-.45-.63-.82-2.08l-.9-3.39-.45-1.67h.76c.4 0 .75.02.75.05 0 .06 1.16 4.54 1.26 4.83.04.15.32-.7.73-2.3l.66-2.52.74-.04c.4-.02.73 0 .73.04 0 .14-1.67 6.38-1.8 6.68z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/devdotto.svg b/assets/lib/simple-icons/icons/devdotto.svg
new file mode 100644
index 00000000..e4b18cf4
--- /dev/null
+++ b/assets/lib/simple-icons/icons/devdotto.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>dev.to</title><path d="M7.42 10.05c-.18-.16-.46-.23-.84-.23H6l.02 2.44.04 2.45.56-.02c.41 0 .63-.07.83-.26.24-.24.26-.36.26-2.2 0-1.91-.02-1.96-.29-2.18zM0 4.94v14.12h24V4.94H0zM8.56 15.3c-.44.58-1.06.77-2.53.77H4.71V8.53h1.4c1.67 0 2.16.18 2.6.9.27.43.29.6.32 2.57.05 2.23-.02 2.73-.47 3.3zm5.09-5.47h-2.47v1.77h1.52v1.28l-.72.04-.75.03v1.77l1.22.03 1.2.04v1.28h-1.6c-1.53 0-1.6-.01-1.87-.3l-.3-.28v-3.16c0-3.02.01-3.18.25-3.48.23-.31.25-.31 1.88-.31h1.64v1.3zm4.68 5.45c-.17.43-.64.79-1 .79-.18 0-.45-.15-.67-.39-.32-.32-.45-.63-.82-2.08l-.9-3.39-.45-1.67h.76c.4 0 .75.02.75.05 0 .06 1.16 4.54 1.26 4.83.04.15.32-.7.73-2.3l.66-2.52.74-.04c.4-.02.73 0 .73.04 0 .14-1.67 6.38-1.8 6.68z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/devexpress.svg b/assets/lib/simple-icons/icons/devexpress.svg
new file mode 100644
index 00000000..f1eec68d
--- /dev/null
+++ b/assets/lib/simple-icons/icons/devexpress.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>DevExpress</title><path d="M1.4 0h21.2c.8 0 1.4.6 1.4 1.4v1.1c0 .8-.6 1-.9 1C11.7 4.9 4.2 9.7 0 14.1V1.4C0 .6.6 0 1.4 0zm.022 19.567L1.7 19.2C5.3 14.6 12.4 8.3 24 6.3v16.3c0 .8-.6 1.4-1.4 1.4H1.4C.6 24 0 23.4 0 22.6v-.4c0-.3.2-.8.3-.9.252-.589.646-1.107 1.122-1.733z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/deviantart.svg b/assets/lib/simple-icons/icons/deviantart.svg
index 1988745a..a09418cf 100644
--- a/assets/lib/simple-icons/icons/deviantart.svg
+++ b/assets/lib/simple-icons/icons/deviantart.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>DeviantArt icon</title><path d="M19.207 4.794l.23-.43V0H15.07l-.436.44-2.058 3.925-.646.436H4.58v5.993h4.04l.36.436-4.175 7.98-.24.43V24H8.93l.436-.44 2.07-3.925.644-.436h7.35v-5.993h-4.05l-.36-.438 4.186-7.977z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>DeviantArt</title><path d="M19.207 4.794l.23-.43V0H15.07l-.436.44-2.058 3.925-.646.436H4.58v5.993h4.04l.36.436-4.175 7.98-.24.43V24H8.93l.436-.44 2.07-3.925.644-.436h7.35v-5.993h-4.05l-.36-.438 4.186-7.977z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/devpost.svg b/assets/lib/simple-icons/icons/devpost.svg
new file mode 100644
index 00000000..db5bc40f
--- /dev/null
+++ b/assets/lib/simple-icons/icons/devpost.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Devpost</title><path d="M6.002 1.61L0 12.004 6.002 22.39h11.996L24 12.004 17.998 1.61zm1.593 4.084h3.947c3.605 0 6.276 1.695 6.276 6.31 0 4.436-3.21 6.302-6.456 6.302H7.595zm2.517 2.449v7.714h1.241c2.646 0 3.862-1.55 3.862-3.861.009-2.569-1.096-3.853-3.767-3.853Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/devrant.svg b/assets/lib/simple-icons/icons/devrant.svg
index ce337f64..6a2995bb 100644
--- a/assets/lib/simple-icons/icons/devrant.svg
+++ b/assets/lib/simple-icons/icons/devrant.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>devRant icon</title><path d="M11.72 0C5.482-.015 1.592 4.046 1.701 10.322c-.074 3.907 1.437 7.002 4.127 8.734.663.405 1.364.737 2.137.995l2.174 3.353c.333.848.7.774.848-.11l.59-2.69h.442c2.469.073 4.57-.517 6.228-1.585 2.616-1.733 4.126-4.791 4.053-8.697C22.41 3.948 18.431-.144 12.019.004c-.1-.002-.2-.004-.299-.004zm4.571 4.636c.258 0 .516.092.7.276h.001c.185.185.295.442.295.737 0 .148 0 .295-.074.406l-3.722 9.25c-.258.441-.627.552-.885.552a1.007 1.007 0 0 1-.994-.995c0-.148.037-.258.073-.406l3.685-9.212c.073-.147.148-.258.221-.332a.989.989 0 0 1 .7-.276zM9.456 7.5c.313 0 .626.12.866.359h.001c.221.221.368.516.331.848 0 .332-.147.589-.368.848-.222.258-.517.369-.848.369-.332 0-.59-.148-.848-.37-.259-.22-.37-.515-.37-.847s.149-.627.37-.848c.24-.24.552-.36.866-.36zm0 4.974c.313 0 .626.12.866.36h.001c.221.258.368.553.331.848a1.2 1.2 0 0 1-.368.848c-.221.258-.516.368-.848.368a1.2 1.2 0 0 1-.848-.368c-.259-.222-.37-.516-.37-.848s.149-.627.37-.848c.24-.24.552-.36.866-.36z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>devRant</title><path d="M11.72 0C5.482-.015 1.592 4.046 1.701 10.322c-.074 3.907 1.437 7.002 4.127 8.734.663.405 1.364.737 2.137.995l2.174 3.353c.333.848.7.774.848-.11l.59-2.69h.442c2.469.073 4.57-.517 6.228-1.585 2.616-1.733 4.126-4.791 4.053-8.697C22.41 3.948 18.431-.144 12.019.004c-.1-.002-.2-.004-.299-.004zm4.571 4.636c.258 0 .516.092.7.276h.001c.185.185.295.442.295.737 0 .148 0 .295-.074.406l-3.722 9.25c-.258.441-.627.552-.885.552a1.007 1.007 0 0 1-.994-.995c0-.148.037-.258.073-.406l3.685-9.212c.073-.147.148-.258.221-.332a.989.989 0 0 1 .7-.276zM9.456 7.5c.313 0 .626.12.866.359h.001c.221.221.368.516.331.848 0 .332-.147.589-.368.848-.222.258-.517.369-.848.369-.332 0-.59-.148-.848-.37-.259-.22-.37-.515-.37-.847s.149-.627.37-.848c.24-.24.552-.36.866-.36zm0 4.974c.313 0 .626.12.866.36h.001c.221.258.368.553.331.848a1.2 1.2 0 0 1-.368.848c-.221.258-.516.368-.848.368a1.2 1.2 0 0 1-.848-.368c-.259-.222-.37-.516-.37-.848s.149-.627.37-.848c.24-.24.552-.36.866-.36z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/dgraph.svg b/assets/lib/simple-icons/icons/dgraph.svg
new file mode 100644
index 00000000..b1a91a6d
--- /dev/null
+++ b/assets/lib/simple-icons/icons/dgraph.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Dgraph</title><path d="M18.22 4.319c.226-.414.349-.892.349-1.403A2.917 2.917 0 0015.653 0c-1.37 0-2.522.944-2.838 2.218-.272-.013-.544-.033-.815-.033-5.58 0-10.1 4.513-10.1 10.1 0 2.74 1.1 5.23 2.871 7.047a2.916 2.916 0 00-.588 1.752A2.917 2.917 0 007.1 24c1.241 0 2.295-.782 2.728-1.869a10.092 10.092 0 0012.272-9.86 9.982 9.982 0 00-3.88-7.952zm-2.554.381c-.162 0-.304-.013-.446-.064l-1.21 3.523 1.772-.284-2.489 4.067 2.075-.511-7.002 8.34c.35.317.556.783.556 1.307a1.78 1.78 0 01-1.784 1.784c-.99 0-1.785-.795-1.785-1.784s.796-1.785 1.785-1.785c.226 0 .446.045.653.13l1.978-4.326-1.933.524 3.142-4.5-1.933.465L14.521 4.3c-.4-.337-.64-.828-.64-1.371 0-.99.796-1.785 1.785-1.785s1.784.796 1.784 1.785c.007.97-.795 1.771-1.784 1.771z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/dhl.svg b/assets/lib/simple-icons/icons/dhl.svg
new file mode 100644
index 00000000..0fd10f49
--- /dev/null
+++ b/assets/lib/simple-icons/icons/dhl.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>DHL</title><path d="M4.22 10.303l-.767 1.043h4.18c.21 0 .208.078.105.218-.105.142-.28.39-.386.534-.054.073-.154.207.171.207h1.71l.505-.69c.314-.426.028-1.312-1.095-1.312H4.22zm7.204 0l-1.475 2.002h5.39l1.473-2.002H14.61l-.843 1.146h-.985l.846-1.146h-2.203zm6.105 0l-1.474 2.002h2.334l1.472-2.002H17.53zm-12.845 1.3l-1.54 2.094h3.754c1.24 0 1.932-.844 2.145-1.136h-2.56c-.326 0-.226-.133-.172-.207.107-.143.283-.388.388-.53.104-.14.107-.22-.105-.22h-1.91zM0 12.562v.242h3.398l.176-.242H0zm9.762 0l-.836 1.136h2.203l.836-1.136H9.762zm3.185 0l-.836 1.136h2.203l.836-1.136h-2.203zm2.918 0s-.159.22-.238.326c-.276.374-.033.81.87.81h3.538l.834-1.136h-5.004zm5.408 0l-.177.242H24v-.242h-2.727zM0 13.01v.24h3.068l.178-.24H0zm20.943 0l-.175.24H24v-.24h-3.057zM0 13.457v.24h2.74l.176-.24H0zm20.615 0l-.177.24H24v-.24h-3.385z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/diagramsdotnet.svg b/assets/lib/simple-icons/icons/diagramsdotnet.svg
new file mode 100644
index 00000000..bcdfd8a3
--- /dev/null
+++ b/assets/lib/simple-icons/icons/diagramsdotnet.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>diagrams.net</title><path d="M19.69 13.419h-2.527l-2.667-4.555a1.292 1.292 0 001.035-1.28V4.16c0-.725-.576-1.312-1.302-1.312H9.771c-.726 0-1.312.576-1.312 1.301v3.435c0 .619.426 1.152 1.034 1.28l-2.666 4.555H4.309c-.725 0-1.312.576-1.312 1.301v3.435c0 .725.576 1.312 1.302 1.312h4.458c.726 0 1.312-.576 1.312-1.302v-3.434c0-.726-.576-1.312-1.301-1.312h-.437l2.645-4.523h2.059l2.656 4.523h-.438c-.725 0-1.312.576-1.312 1.301v3.435c0 .725.576 1.312 1.302 1.312H19.7c.726 0 1.312-.576 1.312-1.302v-3.434c0-.726-.576-1.312-1.301-1.312zM24 22.976c0 .565-.459 1.024-1.013 1.024H1.024A1.022 1.022 0 010 22.987V1.024C0 .459.459 0 1.013 0h21.963C23.541 0 24 .459 24 1.013z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/dialogflow.svg b/assets/lib/simple-icons/icons/dialogflow.svg
new file mode 100644
index 00000000..bf35d7a3
--- /dev/null
+++ b/assets/lib/simple-icons/icons/dialogflow.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Dialogflow</title><path d="M11.996 0a1.639 1.639 0 0 0-.82.22L3.344 4.74a1.648 1.648 0 0 0-.535.498l9.136 5.28 9.213-5.32a1.652 1.652 0 0 0-.51-.458L12.818.22a1.639 1.639 0 0 0-.822-.22zm9.336 5.5l-9.387 5.422-9.3-5.373a1.648 1.648 0 0 0-.12.615v9.043a1.643 1.643 0 0 0 .819 1.42l3.918 2.266v4.617a.493.493 0 0 0 .74.424l12.654-7.303a1.639 1.639 0 0 0 .819-1.42V6.162a1.652 1.652 0 0 0-.143-.662z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/diaspora.svg b/assets/lib/simple-icons/icons/diaspora.svg
index 1619934e..a816fde2 100644
--- a/assets/lib/simple-icons/icons/diaspora.svg
+++ b/assets/lib/simple-icons/icons/diaspora.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Diaspora icon</title><path d="M15.26 21.896l-2.332-3.256c-.622-.87-1.127-1.547-1.154-1.547s-1.006 1.314-2.316 3.113C8.21 21.92 7.178 23.32 7.163 23.32c-.033 0-4.498-3.144-4.51-3.177-.006-.016 1.005-1.498 2.242-3.293 1.24-1.795 2.254-3.29 2.254-3.326 0-.055-.408-.193-3.557-1.245L0 11.08c-.03-.018.156-.64.793-2.65.46-1.446.844-2.64.855-2.655.014-.016 1.71.524 3.772 1.205 2.063.68 3.765 1.234 3.788 1.234.022 0 .046-.03.053-.07.01-.03.03-1.786.04-3.9.02-2.1.04-3.84.05-3.87.02-.03.6-.03 2.73-.03 1.484 0 2.713.015 2.733.03.025.016.065 1.186.136 3.78.11 4.275.11 4.335.18 4.335.025 0 1.66-.54 3.63-1.22 1.973-.66 3.592-1.2 3.605-1.186.03.044 1.65 5.31 1.635 5.325-.017.016-1.667.585-3.66 1.26-2.76.93-3.647 1.245-3.647 1.29-.014.03.93 1.455 2.146 3.21 1.184 1.74 2.143 3.165 2.143 3.18-.015.046-4.44 3.302-4.483 3.302-.015 0-.585-.766-1.245-1.695l.005-.067z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Diaspora</title><path d="M15.257 21.928l-2.33-3.255c-.622-.87-1.128-1.549-1.155-1.55-.027 0-1.007 1.317-2.317 3.115-1.248 1.713-2.28 3.115-2.292 3.115-.035 0-4.5-3.145-4.51-3.178-.006-.016 1.003-1.497 2.242-3.292 1.239-1.794 2.252-3.29 2.252-3.325 0-.056-.401-.197-3.55-1.247a1604.93 1604.93 0 0 1-3.593-1.2c-.033-.013.153-.635.79-2.648.46-1.446.845-2.642.857-2.656.013-.015 1.71.528 3.772 1.207 2.062.678 3.766 1.233 3.787 1.233.021 0 .045-.032.053-.07.008-.039.026-1.794.04-3.902.013-2.107.036-3.848.05-3.87.02-.03.599-.038 2.725-.038 1.485 0 2.716.01 2.735.023.023.016.064 1.175.132 3.776.112 4.273.115 4.33.183 4.33.026 0 1.66-.547 3.631-1.216 1.97-.668 3.593-1.204 3.605-1.191.04.045 1.656 5.307 1.636 5.327-.011.01-1.656.574-3.655 1.252-2.75.932-3.638 1.244-3.645 1.284-.006.029.94 1.442 2.143 3.202 1.184 1.733 2.148 3.164 2.143 3.18-.012.036-4.442 3.299-4.48 3.299-.015 0-.577-.767-1.249-1.705z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/digg.svg b/assets/lib/simple-icons/icons/digg.svg
index f97d283b..50185e48 100644
--- a/assets/lib/simple-icons/icons/digg.svg
+++ b/assets/lib/simple-icons/icons/digg.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Digg icon</title><path d="M17.76 8.16v8.16h3.84v.96h-3.84v1.92H24V8.16h-6.24zm-7.2 0v8.16h3.84v.96h-3.84v1.92h6.24V8.16h-6.24zM3.84 4.8v3.36H0v8.16h6.24V4.8h-2.4zM9.6 8.16H7.2v8.16h2.4V8.16zm12 6.24h-1.44v-4.32h1.44v4.32zm-17.76 0H2.4v-4.32h1.44v4.32zm10.56 0h-1.44v-4.32h1.44v4.32zM9.6 4.8H7.2v2.4h2.4V4.8z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Digg</title><path d="M17.76 8.16v8.16h3.84v.96h-3.84v1.92H24V8.16h-6.24zm-7.2 0v8.16h3.84v.96h-3.84v1.92h6.24V8.16h-6.24zM3.84 4.8v3.36H0v8.16h6.24V4.8h-2.4zM9.6 8.16H7.2v8.16h2.4V8.16zm12 6.24h-1.44v-4.32h1.44v4.32zm-17.76 0H2.4v-4.32h1.44v4.32zm10.56 0h-1.44v-4.32h1.44v4.32zM9.6 4.8H7.2v2.4h2.4V4.8z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/digikeyelectronics.svg b/assets/lib/simple-icons/icons/digikeyelectronics.svg
new file mode 100644
index 00000000..9e964817
--- /dev/null
+++ b/assets/lib/simple-icons/icons/digikeyelectronics.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Digi-Key Electronics</title><path d="M12.246.221A11.786 11.786 0 0 1 23.89 10.418c.912 6.593-3.944 12.711-10.558 13.297-.454.04-.912.063-1.369.064l-10.705.003v-3.749H0V3.987h1.222V.218l11.024.003zM17.9 19.423l-8.26-7.422 8.25-7.422h-6.938L5.615 9.361V4.598H.56v14.803h5.105v-4.724l5.289 4.746H17.9z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/digitalocean.svg b/assets/lib/simple-icons/icons/digitalocean.svg
index cb31cc91..b1feedef 100644
--- a/assets/lib/simple-icons/icons/digitalocean.svg
+++ b/assets/lib/simple-icons/icons/digitalocean.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>DigitalOcean icon</title><path d="M.836 19.365H.832V16.38h2.985v2.985H7.38V14.73h4.635v4.62c4.927-.006 8.73-4.883 6.852-10.066-.698-1.92-2.23-3.45-4.15-4.146C9.527 3.255 4.647 7.068 4.647 12H0C0 4.144 7.59-1.976 15.824.595c3.6 1.125 6.456 3.982 7.58 7.58C25.974 16.41 19.858 24 12 24v-4.635H7.377v3.56h-3.56v-3.56H.833h.002z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>DigitalOcean</title><path d="M12.04 0C5.408-.02.005 5.37.005 11.992h4.638c0-4.923 4.882-8.731 10.064-6.855a6.95 6.95 0 014.147 4.148c1.889 5.177-1.924 10.055-6.84 10.064v-4.61H7.391v4.623h4.61V24c7.86 0 13.967-7.588 11.397-15.83-1.115-3.59-3.985-6.446-7.575-7.575A12.8 12.8 0 0012.039 0zM7.39 19.362H3.828v3.564H7.39zm-3.563 0v-2.978H.85v2.978z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/dior.svg b/assets/lib/simple-icons/icons/dior.svg
index 5abade20..ce1f2980 100644
--- a/assets/lib/simple-icons/icons/dior.svg
+++ b/assets/lib/simple-icons/icons/dior.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Dior icon</title><path d="M3.767 16.383h.622c2.313 0 2.934-.214 3.748-1.296.814-1.081.91-2.634.91-3.159 0-.525-.139-1.842-.953-2.956C7.28 7.858 5.92 7.569 4.73 7.569h-.968c-.23 0-.242.102-.242.262v8.349c0 .182.065.203.247.203M0 16.58c0-.084.11-.099.211-.102 1.178-.033 1.398-.074 1.532-.214.074-.077.182-.14.182-.685v-7.51c0-.674-.82-.567-1.398-.626-.203-.02-.22-.048-.22-.107s.039-.087.145-.091h4.745c5.216 0 5.483 3.813 5.483 4.83 0 2.186-1.445 4.59-4.465 4.59H.152c-.074 0-.152-.01-.152-.086m15.638-1.98c.124 1.126.795 2.002 1.625 1.855.833-.147 1.25-.942 1.15-2.215-.103-1.295-.744-1.94-1.605-1.863-.891.081-1.296 1.097-1.17 2.223m.824-2.421c1.072-.2 2.597.036 2.944 1.714.346 1.678-.809 2.572-1.811 2.79-.98.212-2.643.06-2.943-1.744a2.35 2.35 0 0 1 1.81-2.76m-3.849-1.514a.62.62 0 1 0 0-1.24.62.62 0 0 0 0 1.24m-1.283 2.4c-.034-.066.03-.109.218-.158.21-.056.669-.196 1.033-.402.365-.206.427-.227.504-.202.078.026.07.162.07.272v3.47c0 .195.026.276.114.357.089.081.31.129.596.129.13 0 .17.015.17.07 0 .055-.04.055-.092.055h-2.517c-.077 0-.096-.033-.096-.066 0-.04.035-.067.152-.067.098 0 .554.034.657-.202.04-.09.06-.217.06-.334v-2.753c0-.21-.163-.302-.35-.257-.219.05-.474.174-.519.088m8.868-.001c-.007-.045-.007-.084.218-.155.224-.069.769-.254 1.1-.437.33-.184.386-.21.463-.159.078.051.056.177.056.265v.898c.12-.199.519-.86.834-1.056.249-.153.336-.166.49-.17.185-.003.621.111.64.572.015.36-.25.504-.42.482-.135-.02-.231-.144-.312-.27-.08-.126-.21-.202-.338-.158-.129.044-.85.512-.891 1.178-.03.49 0 2.016 0 2.016 0 .232.088.321.192.383.103.063.481.066.588.081.107.015.103.04.103.074 0 .032 0 .048-.095.048H20.29c-.08 0-.113-.016-.113-.063 0-.066.106-.055.187-.066.08-.011.51.024.633-.192.09-.141.079-.368.079-.368l-.013-2.682c0-.217-.064-.249-.123-.283-.06-.034-.16-.053-.37.019-.198.065-.334.126-.372.043Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Dior</title><path d="M.0728 8.7751h3.1157c2.6789 0 3.7272 1.5724 3.7272 3.237 0 1.6937-1.3443 3.203-3.9019 3.203H.0776c-.0534 0-.0728-.034-.0728-.0631 0-.034.034-.0631.0825-.0631h.5484c.1699 0 .2815-.1019.2815-.2912V9.2022c0-.1407-.0679-.296-.2912-.296H.0679C.0243 8.9062 0 8.8771 0 8.8431c0-.0291.0097-.068.0728-.068m1.9461 6.1392c0 .1407.0631.1844.1553.1844h.825c2.0334 0 2.7711-1.5578 2.7711-3.1205S4.9889 8.9013 3.271 8.9013H2.1499c-.1165 0-.1262.0971-.1262.1407l-.0048 5.8723zm5.2073-6.1392c-.0485 0-.0922.0194-.0922.0582s.0243.0631.0679.0631h.5484c.1262 0 .2475.0874.2475.33v5.5762c0 .1165-.0874.2912-.2427.2912h-.5434c-.0631 0-.0679.0485-.0679.0679s-.0049.0534.0679.0534h2.6401c.0388 0 .0922-.0049.0922-.0437s-.0097-.0776-.0776-.0776h-.5097c-.0728 0-.2718-.0437-.2718-.2669V9.1682c0-.1602.1019-.2669.2863-.2669h.4999c.0437 0 .0679-.0243.0679-.0582 0-.034-.0243-.0631-.0825-.0631-.0005-.0048-2.6396.0092-2.6303-.0049zm4.1251 3.2225c0-1.7811.7959-3.2224 2.2906-3.2224 1.4656 0 2.2906 1.4414 2.2906 3.2224S15.1804 15.22 13.642 15.22c-1.4899.0049-2.2907-1.4414-2.2907-3.2224m2.2907 3.3583c2.1256 0 3.4651-1.5044 3.4651-3.3535s-1.3249-3.3583-3.4651-3.3583c-2.1353 0-3.4651 1.5044-3.4651 3.3535s1.3831 3.3583 3.4651 3.3583m10.2593-.1796c-.8347.0874-1.2958-1.2812-1.718-1.9315-.3154-.4805-.9852-.9706-1.6452-1.0677 1.0871-.0631 2.3052-.4125 2.3052-1.6452 0-.9997-.6163-1.7568-2.8779-1.7568h-2.6061c-.034 0-.0679.0194-.0679.0582s.034.0631.0679.0631h.5969c.1262 0 .2475.0874.2475.33v5.5762c0 .1165-.0874.2912-.2427.2912h-.587c-.0485 0-.0679.0388-.0679.0582s.0194.0631.0679.0631h2.7662c.0388 0 .0728-.0194.0728-.0582s-.0243-.0631-.0776-.0631h-.5581c-.0728 0-.2718-.0485-.2718-.2669v-2.6352h.2863c1.3686 0 1.4705 1.485 2.1499 2.3343.5824.728 1.3443.8202 1.7762.8202.1844 0 .3106-.0049.4271-.034.0728-.0243.0874-.1504-.0437-.1359m-4.3192-6.2798h.4028c.6891 0 1.8053.2718 1.8053 1.5724 0 1.1939-.99 1.5967-1.9073 1.5967h-.5872V9.1682c.0001-.165.102-.2717.2864-.2717"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/directus.svg b/assets/lib/simple-icons/icons/directus.svg
index 0bc43cfa..40d935b3 100644
--- a/assets/lib/simple-icons/icons/directus.svg
+++ b/assets/lib/simple-icons/icons/directus.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Directus icon</title><path d="M19.187 13.909a1.74 1.74 0 0 1-.286-.092.657.657 0 0 1-.203-.139c.056-.488 0-.912.047-1.392.184-1.862 1.355-1.272 2.406-1.577.655-.184 1.31-.562 1.475-1.336a13.528 13.528 0 0 0-2.397-2.204c-2.85-2.028-6.574-2.84-9.958-2.277a5.113 5.113 0 0 0 2.238 2.074s-.917 0-1.703-.587c-.23.092-.692.274-.913.384a5.094 5.094 0 0 0 6.63.37c-.01.017-.185.285-.397 1.4-.47 2.38-1.826 2.195-3.504 1.596-3.485-1.264-5.403-.093-7.145-2.49-.507.286-.82.82-.82 1.402 0 .599.331 1.106.81 1.383.262-.348.38-.446.836-.446-.706.4-.79.75-1.094 1.718-.368 1.171-.212 2.37-1.936 2.683-.913.046-.894.664-1.226 1.586-.415 1.199-.968 1.678-2.047 2.812.443.535.904.6 1.374.406.968-.406 1.715-1.66 2.415-2.471.784-.904 2.665-.517 4.085-1.402.977-.599 1.457-1.41.811-2.784a2.72 2.72 0 0 1 .701 1.66c1.641-.213 3.836 1.788 5.836 2.12a3.574 3.574 0 0 1-.488-.82c-.23-.554-.304-1.06-.258-1.503.184 1.097 1.29 2.507 3.07 2.637.452.036.95-.019 1.466-.176.618-.184 1.19-.424 1.872-.295.507.093.977.35 1.272.784.443.645 1.41.784 1.844-.009-.977-2.554-3.67-2.72-4.813-3.015z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Directus</title><path d="M19.187 13.909a1.74 1.74 0 0 1-.286-.092.657.657 0 0 1-.203-.139c.056-.488 0-.912.047-1.392.184-1.862 1.355-1.272 2.406-1.577.655-.184 1.31-.562 1.475-1.336a13.528 13.528 0 0 0-2.397-2.204c-2.85-2.028-6.574-2.84-9.958-2.277a5.113 5.113 0 0 0 2.238 2.074s-.917 0-1.703-.587c-.23.092-.692.274-.913.384a5.094 5.094 0 0 0 6.63.37c-.01.017-.185.285-.397 1.4-.47 2.38-1.826 2.195-3.504 1.596-3.485-1.264-5.403-.093-7.145-2.49-.507.286-.82.82-.82 1.402 0 .599.331 1.106.81 1.383.262-.348.38-.446.836-.446-.706.4-.79.75-1.094 1.718-.368 1.171-.212 2.37-1.936 2.683-.913.046-.894.664-1.226 1.586-.415 1.199-.968 1.678-2.047 2.812.443.535.904.6 1.374.406.968-.406 1.715-1.66 2.415-2.471.784-.904 2.665-.517 4.085-1.402.977-.599 1.457-1.41.811-2.784a2.72 2.72 0 0 1 .701 1.66c1.641-.213 3.836 1.788 5.836 2.12a3.574 3.574 0 0 1-.488-.82c-.23-.554-.304-1.06-.258-1.503.184 1.097 1.29 2.507 3.07 2.637.452.036.95-.019 1.466-.176.618-.184 1.19-.424 1.872-.295.507.093.977.35 1.272.784.443.645 1.41.784 1.844-.009-.977-2.554-3.67-2.72-4.813-3.015z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/discogs.svg b/assets/lib/simple-icons/icons/discogs.svg
index 657ec5f3..802dcca6 100644
--- a/assets/lib/simple-icons/icons/discogs.svg
+++ b/assets/lib/simple-icons/icons/discogs.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Discogs icon</title><path d="M1.7422 11.982c0-5.6682 4.61-10.2782 10.2758-10.2782 1.8238 0 3.5372.48 5.0251 1.3175l.8135-1.4879C16.1768.588 14.2474.036 12.1908.0024h-.1944C5.4091.0144.072 5.3107 0 11.886v.1152c.0072 3.4389 1.4567 6.5345 3.7748 8.7207l1.1855-1.2814c-1.9798-1.8743-3.218-4.526-3.218-7.4585zM20.362 3.4053l-1.1543 1.2406c1.903 1.867 3.0885 4.4636 3.0885 7.3361 0 5.6658-4.61 10.2758-10.2758 10.2758-1.783 0-3.4605-.456-4.922-1.2575l-.8542 1.5214c1.7086.9384 3.6692 1.4735 5.7546 1.4759C18.6245 23.9976 24 18.6246 24 11.9988c-.0048-3.3717-1.399-6.4146-3.638-8.5935zM1.963 11.982c0 2.8701 1.2119 5.4619 3.146 7.2953l1.1808-1.2767c-1.591-1.5166-2.587-3.6524-2.587-6.0186 0-4.586 3.7293-8.3152 8.3152-8.3152 1.483 0 2.875.3912 4.082 1.0751l.8351-1.5262C15.481 2.395 13.8034 1.927 12.018 1.927 6.4746 1.9246 1.963 6.4362 1.963 11.982zm18.3702 0c0 4.586-3.7293 8.3152-8.3152 8.3152-1.4327 0-2.7837-.3648-3.962-1.0055l-.852 1.5166c1.4303.7823 3.0718 1.2287 4.814 1.2287 5.5434 0 10.055-4.5116 10.055-10.055 0-2.8077-1.1567-5.3467-3.0165-7.1729l-1.183 1.2743c1.519 1.507 2.4597 3.5924 2.4597 5.8986zm-1.9486 0c0 3.5109-2.8558 6.3642-6.3642 6.3642a6.3286 6.3286 0 01-3.0069-.756l-.8471 1.507c1.147.624 2.4597.9768 3.854.9768 4.4636 0 8.0944-3.6308 8.0944-8.0944 0-2.239-.9143-4.2692-2.3902-5.7378l-1.1783 1.267c1.1351 1.152 1.8383 2.731 1.8383 4.4732zm-14.4586 0c0 2.3014.9671 4.382 2.515 5.8578l1.1734-1.2695c-1.207-1.159-1.9606-2.786-1.9606-4.5883 0-3.5108 2.8557-6.3642 6.3642-6.3642 1.1423 0 2.215.3048 3.1437.8352l.8303-1.5167c-1.1759-.6647-2.5317-1.0487-3.974-1.0487-4.4612 0-8.092 3.6308-8.092 8.0944zm12.5292 0c0 2.4502-1.987 4.4372-4.4372 4.4372a4.4192 4.4192 0 01-2.0614-.5088l-.8351 1.4879a6.1135 6.1135 0 002.8965.727c3.3885 0 6.1434-2.7548 6.1434-6.1433 0-1.6774-.6767-3.1989-1.7686-4.3076l-1.1615 1.2503c.7559.7967 1.2239 1.8718 1.2239 3.0573zm-10.5806 0c0 1.7374.7247 3.3069 1.8886 4.4252L8.92 15.1569l.0144.0144c-.8351-.8063-1.3559-1.9366-1.3559-3.1869 0-2.4502 1.9846-4.4372 4.4372-4.4372.8087 0 1.5646.2184 2.2174.5976l.8207-1.4975a6.097 6.097 0 00-3.0381-.8063c-3.3837-.0048-6.141 2.7525-6.141 6.141zm6.681 0c0 .2952-.2424.5351-.5376.5351-.2952 0-.5375-.24-.5375-.5351 0-.2976.24-.5375.5375-.5375.2952 0 .5375.24.5375.5375zm-3.9405 0c0-1.879 1.5239-3.4029 3.4005-3.4029 1.879 0 3.4005 1.5215 3.4005 3.4029 0 1.879-1.5239 3.4005-3.4005 3.4005S8.6151 13.861 8.6151 11.982zm.1488 0c.0048 1.7974 1.4567 3.2493 3.2517 3.2517 1.795 0 3.254-1.4567 3.254-3.2517-.0023-1.7974-1.4566-3.2517-3.254-3.254-1.795 0-3.2517 1.4566-3.2517 3.254Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Discogs</title><path d="M1.7422 11.982c0-5.6682 4.61-10.2782 10.2758-10.2782 1.8238 0 3.5372.48 5.0251 1.3175l.8135-1.4879C16.1768.588 14.2474.036 12.1908.0024h-.1944C5.4091.0144.072 5.3107 0 11.886v.1152c.0072 3.4389 1.4567 6.5345 3.7748 8.7207l1.1855-1.2814c-1.9798-1.8743-3.218-4.526-3.218-7.4585zM20.362 3.4053l-1.1543 1.2406c1.903 1.867 3.0885 4.4636 3.0885 7.3361 0 5.6658-4.61 10.2758-10.2758 10.2758-1.783 0-3.4605-.456-4.922-1.2575l-.8542 1.5214c1.7086.9384 3.6692 1.4735 5.7546 1.4759C18.6245 23.9976 24 18.6246 24 11.9988c-.0048-3.3717-1.399-6.4146-3.638-8.5935zM1.963 11.982c0 2.8701 1.2119 5.4619 3.146 7.2953l1.1808-1.2767c-1.591-1.5166-2.587-3.6524-2.587-6.0186 0-4.586 3.7293-8.3152 8.3152-8.3152 1.483 0 2.875.3912 4.082 1.0751l.8351-1.5262C15.481 2.395 13.8034 1.927 12.018 1.927 6.4746 1.9246 1.963 6.4362 1.963 11.982zm18.3702 0c0 4.586-3.7293 8.3152-8.3152 8.3152-1.4327 0-2.7837-.3648-3.962-1.0055l-.852 1.5166c1.4303.7823 3.0718 1.2287 4.814 1.2287 5.5434 0 10.055-4.5116 10.055-10.055 0-2.8077-1.1567-5.3467-3.0165-7.1729l-1.183 1.2743c1.519 1.507 2.4597 3.5924 2.4597 5.8986zm-1.9486 0c0 3.5109-2.8558 6.3642-6.3642 6.3642a6.3286 6.3286 0 01-3.0069-.756l-.8471 1.507c1.147.624 2.4597.9768 3.854.9768 4.4636 0 8.0944-3.6308 8.0944-8.0944 0-2.239-.9143-4.2692-2.3902-5.7378l-1.1783 1.267c1.1351 1.152 1.8383 2.731 1.8383 4.4732zm-14.4586 0c0 2.3014.9671 4.382 2.515 5.8578l1.1734-1.2695c-1.207-1.159-1.9606-2.786-1.9606-4.5883 0-3.5108 2.8557-6.3642 6.3642-6.3642 1.1423 0 2.215.3048 3.1437.8352l.8303-1.5167c-1.1759-.6647-2.5317-1.0487-3.974-1.0487-4.4612 0-8.092 3.6308-8.092 8.0944zm12.5292 0c0 2.4502-1.987 4.4372-4.4372 4.4372a4.4192 4.4192 0 01-2.0614-.5088l-.8351 1.4879a6.1135 6.1135 0 002.8965.727c3.3885 0 6.1434-2.7548 6.1434-6.1433 0-1.6774-.6767-3.1989-1.7686-4.3076l-1.1615 1.2503c.7559.7967 1.2239 1.8718 1.2239 3.0573zm-10.5806 0c0 1.7374.7247 3.3069 1.8886 4.4252L8.92 15.1569l.0144.0144c-.8351-.8063-1.3559-1.9366-1.3559-3.1869 0-2.4502 1.9846-4.4372 4.4372-4.4372.8087 0 1.5646.2184 2.2174.5976l.8207-1.4975a6.097 6.097 0 00-3.0381-.8063c-3.3837-.0048-6.141 2.7525-6.141 6.141zm6.681 0c0 .2952-.2424.5351-.5376.5351-.2952 0-.5375-.24-.5375-.5351 0-.2976.24-.5375.5375-.5375.2952 0 .5375.24.5375.5375zm-3.9405 0c0-1.879 1.5239-3.4029 3.4005-3.4029 1.879 0 3.4005 1.5215 3.4005 3.4029 0 1.879-1.5239 3.4005-3.4005 3.4005S8.6151 13.861 8.6151 11.982zm.1488 0c.0048 1.7974 1.4567 3.2493 3.2517 3.2517 1.795 0 3.254-1.4567 3.254-3.2517-.0023-1.7974-1.4566-3.2517-3.254-3.254-1.795 0-3.2517 1.4566-3.2517 3.254Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/discord.svg b/assets/lib/simple-icons/icons/discord.svg
index 85d98498..9d7796b8 100644
--- a/assets/lib/simple-icons/icons/discord.svg
+++ b/assets/lib/simple-icons/icons/discord.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Discord icon</title><path d="M20.222 0c1.406 0 2.54 1.137 2.607 2.475V24l-2.677-2.273-1.47-1.338-1.604-1.398.67 2.205H3.71c-1.402 0-2.54-1.065-2.54-2.476V2.48C1.17 1.142 2.31.003 3.715.003h16.5L20.222 0zm-6.118 5.683h-.03l-.202.2c2.073.6 3.076 1.537 3.076 1.537-1.336-.668-2.54-1.002-3.744-1.137-.87-.135-1.74-.064-2.475 0h-.2c-.47 0-1.47.2-2.81.735-.467.203-.735.336-.735.336s1.002-1.002 3.21-1.537l-.135-.135s-1.672-.064-3.477 1.27c0 0-1.805 3.144-1.805 7.02 0 0 1 1.74 3.743 1.806 0 0 .4-.533.805-1.002-1.54-.468-2.14-1.404-2.14-1.404s.134.066.335.2h.06c.03 0 .044.015.06.03v.006c.016.016.03.03.06.03.33.136.66.27.93.4.466.202 1.065.403 1.8.536.93.135 1.996.2 3.21 0 .6-.135 1.2-.267 1.8-.535.39-.2.87-.4 1.397-.737 0 0-.6.936-2.205 1.404.33.466.795 1 .795 1 2.744-.06 3.81-1.8 3.87-1.726 0-3.87-1.815-7.02-1.815-7.02-1.635-1.214-3.165-1.26-3.435-1.26l.056-.02zm.168 4.413c.703 0 1.27.6 1.27 1.335 0 .74-.57 1.34-1.27 1.34-.7 0-1.27-.6-1.27-1.334.002-.74.573-1.338 1.27-1.338zm-4.543 0c.7 0 1.266.6 1.266 1.335 0 .74-.57 1.34-1.27 1.34-.7 0-1.27-.6-1.27-1.334 0-.74.57-1.338 1.27-1.338z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Discord</title><path d="M20.317 4.3698a19.7913 19.7913 0 00-4.8851-1.5152.0741.0741 0 00-.0785.0371c-.211.3753-.4447.8648-.6083 1.2495-1.8447-.2762-3.68-.2762-5.4868 0-.1636-.3933-.4058-.8742-.6177-1.2495a.077.077 0 00-.0785-.037 19.7363 19.7363 0 00-4.8852 1.515.0699.0699 0 00-.0321.0277C.5334 9.0458-.319 13.5799.0992 18.0578a.0824.0824 0 00.0312.0561c2.0528 1.5076 4.0413 2.4228 5.9929 3.0294a.0777.0777 0 00.0842-.0276c.4616-.6304.8731-1.2952 1.226-1.9942a.076.076 0 00-.0416-.1057c-.6528-.2476-1.2743-.5495-1.8722-.8923a.077.077 0 01-.0076-.1277c.1258-.0943.2517-.1923.3718-.2914a.0743.0743 0 01.0776-.0105c3.9278 1.7933 8.18 1.7933 12.0614 0a.0739.0739 0 01.0785.0095c.1202.099.246.1981.3728.2924a.077.077 0 01-.0066.1276 12.2986 12.2986 0 01-1.873.8914.0766.0766 0 00-.0407.1067c.3604.698.7719 1.3628 1.225 1.9932a.076.076 0 00.0842.0286c1.961-.6067 3.9495-1.5219 6.0023-3.0294a.077.077 0 00.0313-.0552c.5004-5.177-.8382-9.6739-3.5485-13.6604a.061.061 0 00-.0312-.0286zM8.02 15.3312c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9555-2.4189 2.157-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.9555 2.4189-2.1569 2.4189zm7.9748 0c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9554-2.4189 2.1569-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.946 2.4189-2.1568 2.4189Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/discourse.svg b/assets/lib/simple-icons/icons/discourse.svg
index 17a09925..af01707a 100644
--- a/assets/lib/simple-icons/icons/discourse.svg
+++ b/assets/lib/simple-icons/icons/discourse.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Discourse icon</title><path d="M12.103 0C18.666 0 24 5.485 24 11.997c0 6.51-5.33 11.99-11.9 11.99L0 24V11.79C0 5.28 5.532 0 12.103 0zm.116 4.563c-2.593-.003-4.996 1.352-6.337 3.57-1.33 2.208-1.387 4.957-.148 7.22L4.4 19.61l4.794-1.074c2.745 1.225 5.965.676 8.136-1.39 2.17-2.054 2.86-5.228 1.737-7.997-1.135-2.778-3.84-4.59-6.84-4.585h-.008z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Discourse</title><path d="M12.103 0C18.666 0 24 5.485 24 11.997c0 6.51-5.33 11.99-11.9 11.99L0 24V11.79C0 5.28 5.532 0 12.103 0zm.116 4.563c-2.593-.003-4.996 1.352-6.337 3.57-1.33 2.208-1.387 4.957-.148 7.22L4.4 19.61l4.794-1.074c2.745 1.225 5.965.676 8.136-1.39 2.17-2.054 2.86-5.228 1.737-7.997-1.135-2.778-3.84-4.59-6.84-4.585h-.008z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/discover.svg b/assets/lib/simple-icons/icons/discover.svg
index 3c4fc36b..77efec30 100644
--- a/assets/lib/simple-icons/icons/discover.svg
+++ b/assets/lib/simple-icons/icons/discover.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Discover icon</title><path d="M12 0A12 12 0 1 0 12 24A12 12 0 1 0 12 0Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Discover</title><path d="M14.58 12a2.023 2.023 0 1 1-2.025-2.023h.002c1.118 0 2.023.906 2.023 2.023zm-5.2-2.001c-1.124 0-2.025.884-2.025 1.99 0 1.118.878 1.984 2.007 1.984.319 0 .593-.063.93-.221v-.873c-.296.297-.559.416-.895.416-.747 0-1.277-.542-1.277-1.312 0-.73.547-1.306 1.243-1.306.354 0 .622.126.93.428v-.873a1.898 1.898 0 0 0-.913-.233zm-3.352 1.545c-.445-.165-.576-.273-.576-.479 0-.239.233-.422.553-.422.222 0 .405.091.598.308l.388-.508a1.665 1.665 0 0 0-1.117-.422c-.673 0-1.186.467-1.186 1.089 0 .524.239.792.936 1.043.291.103.438.171.513.217a.456.456 0 0 1 .222.394c0 .308-.245.536-.576.536-.354 0-.639-.177-.809-.507l-.479.461c.342.502.752.724 1.317.724.771 0 1.311-.513 1.311-1.249-.002-.603-.252-.876-1.095-1.185zM24 10.3a.29.29 0 0 1-.288.291.29.29 0 0 1-.291-.291v-.003A.29.29 0 1 1 24 10.3zm-.059.001a.235.235 0 0 0-.231-.239.234.234 0 0 0-.232.239c0 .132.104.239.232.239a.235.235 0 0 0 .231-.239zM3.472 13.887h.742v-3.803h-.742v3.803zm12.702-1.248l-1.014-2.554h-.81l1.614 3.9h.399l1.643-3.9h-.804l-1.028 2.554zm2.166 1.248h2.104v-.644h-1.362v-1.027h1.312v-.644h-1.312v-.844h1.362v-.644H18.34v3.803zm5.409-3.557l.11.138h-.097l-.094-.13v.13h-.08v-.334h.107c.081 0 .126.036.126.103.001.046-.025.08-.072.093zm-.006-.092c0-.029-.021-.043-.06-.043h-.014v.087h.014c.039 0 .06-.014.06-.044zm-1.228 2.047l1.197 1.602H22.8l-1.027-1.528h-.097v1.528h-.741v-3.803h1.1c.855 0 1.346.411 1.346 1.123 0 .583-.308.965-.866 1.078zm.103-1.038c0-.37-.251-.563-.713-.563h-.228v1.152h.217c.473-.001.724-.207.724-.589zm-19.487.742a1.91 1.91 0 0 1-.69 1.46c-.365.303-.781.439-1.357.439H.001v-3.803H1.09c1.202 0 2.041.781 2.041 1.904zm-.764-.006c0-.364-.154-.718-.411-.947-.245-.222-.536-.308-1.015-.308H.742v2.515h.199c.479 0 .782-.092 1.015-.302.256-.228.411-.593.411-.958z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/disqus.svg b/assets/lib/simple-icons/icons/disqus.svg
index 3d5f58ce..3f562982 100644
--- a/assets/lib/simple-icons/icons/disqus.svg
+++ b/assets/lib/simple-icons/icons/disqus.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Disqus icon</title><path d="M12.438 23.654c-2.853 0-5.46-1.04-7.476-2.766L0 21.568l1.917-4.733C1.25 15.36.875 13.725.875 12 .875 5.564 6.05.346 12.44.346 18.82.346 24 5.564 24 12c0 6.438-5.176 11.654-11.562 11.654zm6.315-11.687v-.033c0-3.363-2.373-5.76-6.462-5.76H7.877V17.83h4.35c4.12 0 6.525-2.5 6.525-5.863h.004zm-6.415 2.998h-1.29V9.04h1.29c1.897 0 3.157 1.08 3.157 2.945v.03c0 1.884-1.26 2.95-3.157 2.95z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Disqus</title><path d="M12.438 23.654c-2.853 0-5.46-1.04-7.476-2.766L0 21.568l1.917-4.733C1.25 15.36.875 13.725.875 12 .875 5.564 6.05.346 12.44.346 18.82.346 24 5.564 24 12c0 6.438-5.176 11.654-11.562 11.654zm6.315-11.687v-.033c0-3.363-2.373-5.76-6.462-5.76H7.877V17.83h4.35c4.12 0 6.525-2.5 6.525-5.863h.004zm-6.415 2.998h-1.29V9.04h1.29c1.897 0 3.157 1.08 3.157 2.945v.03c0 1.884-1.26 2.95-3.157 2.95z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/disroot.svg b/assets/lib/simple-icons/icons/disroot.svg
index c6d81d09..db466bc6 100644
--- a/assets/lib/simple-icons/icons/disroot.svg
+++ b/assets/lib/simple-icons/icons/disroot.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Disroot icon</title><path d="M18.824 6.655q.092.128 0 .255-.093.032-.154 0l-.154-.223-.369-.095q-.092-.096 0-.255.092-.128.246-.096.277.16.43.415zm4.49 4.336q.031.095.031.159l-.154.223v-.35q.062-.032.123-.032zm-5.382-4.75l.153.255q-.123.223-.246.287l-.092.127q-.061-.159-.092-.318-.031 0-.062-.032l-.123.127-.553-.127q-.123-.16.061-.35.185-.192.43-.096l.524.127zm-1.138.67l-.154-.096.123-.064.03.16zm-2.461-1.626l-.184.223-.185-.223-.154-.032.492-.096.031.128zm3.814 12.208zm5.782-7.427q.123.096.031.478l-.184.542-.154.191-.031-.382q0-.128-.03-.223 0-.096-.032-.191l-.4.19q.031.065.031.16.031.096.062.128l-.43.032.03.127.092.096-.153.35q-.031.287-.154.32l-.123-.192-.37.095q-.122-.127-.122-.223l-.093-.127.154-.191q-.061-.128-.123-.128l-.154.064-.153.382q-.216 0-.277.064l.184.255.646.35.031.224q.123.032.185.095.092.064.123.096-.031.064-.062.16-.03.063-.123.127l-.277.191.031.255q-.246.096-.43.319l-.093.35q-.338 0-.43.064l.03.479-.092-.032q-.123-.192-.246-.096l.123.414q-.092 0-.154.032l-.061.064.123.223q.03.128.03.192-.184.159-.369.19-.153.033-.246.224l.031.382q-.092.224-.154.287-.307 0-.461.064l-.185.35-.153-.063q-.124-.032-.185 0l-.123.255q-.277 0-.4.127l-.246.224.062-.287q.092-.255-.093-.287l-.123.095-.03.16-.308.191-.03.35h-.585l-.123.224q-.062.191-.308.287-.246.095-.861.095t-.769.064q-.154 0-.277.16-.092.159-.215.223l-.492.159-.154.287-.215.16q-.154.095-.492.095l-.308.16-.461.19-.339-.031q-.184-.096-.43-.096h-.554l-.185-.128-.369.064-.184.255-.277-.191-.215-.223-.492-.032-.185-.16.277-.35.369-.51v-.35l.43-.479v-.542q0-.255.093-.446l.338.096q.123-.128.123-.192-.184-.159-.338-.414l-.308-.446-.369-.478-.246-.447-.277-.446-.215-.542-.461-.51-1.692-2.486-.308-.542-.307-.606-.246-.159q-.277-.35-.462-.765l-.092-.383-.277-.127-.953.191q-.339 0-.738.128l-.646.255-.77.095-.43.16q-.277.064-.43-.064L1.23 8.6l-.338.128-.277-.096q0-.319-.061-.383l-.277-.382Q.092 7.739 0 7.707l.03-.159h.308q-.03-.095-.03-.223v-.16l.307.128q.154-.095.185-.16l.123-.254.246.032.184-.542-.03-.287.154.095.153.16q.154-.064.185-.128l.277-.35.276.032-.092-.223-.184-.224-.277-.095q.184-.287.8-.415l.984-.095.338-.223.8-.16 1.23-.064.43-.095q.247-.096.493-.032l.492-.032q.492-.127.707-.064l.4.032.554.032.83.16.738.063.523-.223q.185 0 .4.255l.308.223h.646l.215.255-.03.16.184.51.123-.064.277-.319.307.478-.369-.127q-.215 0-.246.318l.308.064.123.16.184-.064q.154-.064.308.064.184.095.246.223l.184.255h.4q0-.096.03-.128.032-.064.062-.095l.062.318h.123l.092-.095.093.16.092-.256q.4 0 .461-.064 0-.095-.061-.159l-.123-.16q0-.159.246-.127l.43.128.308-.032.184.16.062.127q-.277-.064-.37.032-.06.063-.03.223l.215.19q0 .224.216.479l.123-.127.03-.255.124.159h.522q.154 0 .246.35l.093.32.123.095.154-.16.492.16.092-.16.154-.063q.123-.096.154-.16v-.159l-.062-.16.43.128q.124-.127.154-.191-.061-.16-.123-.16l-.307-.063v-.16l.092-.223.092-.191q.154.095.185.16l.154.222.215-.031.215-.032.77.669.215-.032.215.287.185.096q-.093.127 0 .286l.215-.095h.215l.185.319.184.318q.246 0 .37.064l.122.574.339.191.276.096q0 .16-.061.255l.061.319.093.19-.031.224.123-.064q.123-.16.185-.191l.123-.064zM16.18 5.35q.092.095 0 .286-.031.064-.185.096-.092-.096 0-.287.03-.064.185-.095zm6.305 5.928q.092.096 0 .255l-.154.064-.03-.223q0-.095.03-.127.062-.032.154.032zm-1.292-1.561q.061.063.061.318-.123.064-.246.032-.153-.095-.061-.287.061-.16.246-.063zm-8.704-4.24l-.185.35.092-.254.093-.096zm4.244 12.304l-.123-.191.123-.096q.154.032.123.223l-.123.064zm5.137-4.75q-.185-.127-.246-.254l.184.127.062.128zM9.566 18.705l.153-.159.154-.096-.307.255zM22.79 10.45l-.092.19-.03.097-.031-.224.153-.063zm.154 1.562l-.061.286.061-.286zm-2.184-3.507l.093.128-.123.032-.123-.096.153-.064zm-5.505 7.491l-.123.096.123-.096zM14.61 5.253l-.03.16.03-.16zm6.551 3.538l-.061.16.061-.16zm-.123 5.196l.062.095-.093.064.031-.16zm-5.905-8.543l-.062.096.062-.096zm1.66 11.635l-.06.127.06-.127zm-6.92-6.822l-.123.128.123-.128zm-.184 9.149l-.031.16.03-.16zm9.32-12.464l.06.096-.153-.064.092-.032zm-5.014 8.67l-.031.128.03-.127zm7.105-6.47l-.031.127.03-.127zm-.216 1.498l-.061.096.061-.096zm.4 3.952l-.092.064.092-.064zM1.692 6.624l-.031.159.03-.16zm20.607 5.323l-.123.064.123-.064zm-.4-.223l-.184.032.184-.032zm-6.49 6.821l-.03.096.03-.096zm6.214-6.152v-.16.16zm1.507-2.136q-.031.064-.031.128 0-.096.03-.128zm-1.23 3.411zM1.506 6.018l-.03.127.03-.127zm17.84 11.507zm-.339-8.734l-.123.032.123-.032zm-.492-1.912l-.061.095.061-.095zM10.92 5.062l-.092.032.092-.032zm3.076 1.275l-.031.127.03-.127zm-.43-.032l-.062.064.061-.064zM9.595 19.183l-.03.127.03-.127zm11.442-8.67zm0 0zm0 0zm0 0zm0 0zm0 0zm0 0zm0 0zm-5.352 5.323zm7.013-3.539zm-2-1.083l-.06-.064.06.064zm-8.55 2.9zm9.843-1.275zm-9.228-7.012zm-.707.191zm0-.287zm3.968.478zm-2.891-.095l-.062-.064.062.064zm6.49 3.283zm2.89 0zm-4.92 7.81zm4.92-6.918zm-10.98 9.563zm1.507-14.854zm-.184 0zm7.843 3.92zm2.307 1.244q0-.255-.093-.415-.061-.159-.215-.286l-.03.414.215.096q.03.095 0 .159l.123.032zm-2.4-.765l-.06-.064.06.064zm1.23 1.434l-.153-.032-.184-.287.061-.255-.277.192.154.19.03.097-.368.159.246.032q.061.064.123.095.092.032.123.032l.246-.223zm-.614-.574l-.123-.095-.216-.064-.092-.16-.123.128-.092.223.246.096q.184 0 .277.095l.123-.223zM15.84 6.783l-.123-.064-.184-.095q-.123 0-.123.063l.03.192.216.127.184-.223zm3.691 6.79l.062-.383q0-.51-.37-1.084-.307-.574-.8-.924-.4-.383-1.106-.67l-1.23-.541-.462-.287-.677-.255-.707-.223-1.138-.255-.37-.064q-.276 0-.43.064-.123.031-.092.223l.369.733q.277.51.523.701l.277.191v.192l.307.382.03.255q.124.096.185.096.154.095.4.478l.339.414.522.765.462.829.215.637-.061.415.123.191-.123.191q-.093.096 0 .192l.215-.064.369-.16q.154 0 .523-.19l.677-.32.953-.382q.584-.255.83-.51l.123-.319q0-.223.062-.319z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Disroot</title><path d="M3.976 2.856C2.321 3.296.603 4.491.122 5.536c-.144.315-.164.885-.04 1.133.178.35.343.384 1.387.24.817-.11 1.085-.117 1.985-.055 1.106.076 1.594.213 1.882.522.172.179 3.75 9.033 3.813 9.418.11.694-.234 1.312-1.189 2.143-.797.687-.927.907-.824 1.381.151.666.508.982 1.113.982.508 0 2.095-.268 3.297-.55 3.476-.817 6.437-1.923 8.504-3.173 1.944-1.168 3.25-2.555 3.765-3.984.15-.433.178-.618.185-1.326 0-.975-.11-1.38-.536-1.958-.858-1.16-1.8-2.005-3.338-2.988-2.96-1.902-3.778-2.294-6.67-3.215-2.521-.803-5.358-1.318-7.728-1.394-1.017-.027-1.147-.02-1.752.144zm9.411 6.526c1.477.563 2.823 1.47 4.554 3.07.838.777 1.024 1.072 1.058 1.732.076 1.23-.597 2.033-2.088 2.507-.708.22-2.191.536-2.253.474-.02-.014 0-.13.041-.254.048-.13.062-.447.048-.749-.027-.433-.096-.68-.364-1.319-.179-.433-.708-1.91-1.175-3.283l-.851-2.5.22.047c.123.028.487.151.81.275z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/django.svg b/assets/lib/simple-icons/icons/django.svg
index 7d68b796..7bb3b990 100755..100644
--- a/assets/lib/simple-icons/icons/django.svg
+++ b/assets/lib/simple-icons/icons/django.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Django icon</title><path d="M11.146 0h3.924v18.165c-2.013.382-3.491.535-5.096.535-4.791 0-7.288-2.166-7.288-6.32 0-4.001 2.65-6.6 6.753-6.6.637 0 1.121.051 1.707.204V0zm0 9.143a3.894 3.894 0 0 0-1.325-.204c-1.988 0-3.134 1.223-3.134 3.364 0 2.09 1.096 3.236 3.109 3.236.433 0 .79-.025 1.35-.102V9.142zM21.314 6.06v9.097c0 3.134-.229 4.638-.917 5.937-.637 1.249-1.478 2.039-3.211 2.905l-3.644-1.733c1.733-.815 2.574-1.529 3.109-2.625.561-1.121.739-2.421.739-5.835V6.059h3.924zM17.39.021h3.924v4.026H17.39V.021z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Django</title><path d="M11.146 0h3.924v18.166c-2.013.382-3.491.535-5.096.535-4.791 0-7.288-2.166-7.288-6.32 0-4.002 2.65-6.6 6.753-6.6.637 0 1.121.05 1.707.203zm0 9.143a3.894 3.894 0 00-1.325-.204c-1.988 0-3.134 1.223-3.134 3.365 0 2.09 1.096 3.236 3.109 3.236.433 0 .79-.025 1.35-.102V9.142zM21.314 6.06v9.098c0 3.134-.229 4.638-.917 5.937-.637 1.249-1.478 2.039-3.211 2.905l-3.644-1.733c1.733-.815 2.574-1.53 3.109-2.625.561-1.121.739-2.421.739-5.835V6.059h3.924zM17.39.021h3.924v4.026H17.39z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/dlib.svg b/assets/lib/simple-icons/icons/dlib.svg
new file mode 100644
index 00000000..1926ddf7
--- /dev/null
+++ b/assets/lib/simple-icons/icons/dlib.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Dlib</title><path d="M5.2188.0022c-.5082-.01-1.0158.015-1.5223.046v23.9085c.9724.068 1.954.055 2.9238-.032.2836-.9399.5742-1.8784.8605-2.8177 1.488-.2455 2.9172-.7078 4.192-1.361 1.04.5022 2.0797 1.0049 3.12 1.5067a14.2125 14.2125 0 0 0 2.0759-1.5805c-.6353-.8301-1.2734-1.6589-1.9098-2.4884.8294-1.02 1.4426-2.1614 1.7261-3.3565 1.1902-.2287 2.3801-.4583 3.5705-.6865a10.5282 10.5282 0 0 0-.0302-2.2869c-1.1825-.2277-2.3653-.4548-3.5479-.6824-.2922-1.1939-.8713-2.3444-1.7235-3.3545.6384-.8293 1.2757-1.6593 1.9148-2.4884-.6128-.5881-1.297-1.117-2.0432-1.5984-1.0537.5102-2.1086 1.019-3.1628 1.5285-1.2667-.6671-2.6973-1.1432-4.187-1.3868C7.1875 1.9292 6.898.987 6.6103.0442c-.463-.028-.927-.049-1.3914-.042Zm2.33 5.388c3.6866.8142 6.464 3.7461 6.2778 6.8008-.0934 2.8969-2.6816 5.6581-6.2426 6.3976-.1694-.2268-.0253-.7803-.0734-1.1335-.002-4.0243-.003-8.0486-.005-12.073l.0428.01z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/dlna.svg b/assets/lib/simple-icons/icons/dlna.svg
index 8a6d9524..3122db03 100644
--- a/assets/lib/simple-icons/icons/dlna.svg
+++ b/assets/lib/simple-icons/icons/dlna.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>DLNA icon</title><path d="M23.254,12.667H13.019c-1.051,0-2.1,0.489-2.692,1.266v-0.017c-0.591,0.816-1.544,1.353-2.629,1.353 c-1.796,0-3.249-1.458-3.249-3.251c0-1.795,1.454-3.251,3.249-3.251c1.085,0,2.039,0.536,2.629,1.353v-0.013 c0.592,0.776,1.641,1.273,2.692,1.273h10.129c0.186-0.005,0.873-0.095,0.848-0.981c-0.884-5.086-5.879-8.987-11.923-8.987 c-3.721,0-7.047,1.48-9.262,3.803c-0.356,0.527,0.014,0.689,0.35,0.734h6.608c1.05,0,2.1-0.498,2.691-1.277V4.69 c0.591-0.817,1.546-1.355,2.63-1.355c1.795,0,3.249,1.456,3.249,3.251c0,1.793-1.454,3.252-3.249,3.252 c-1.084,0-2.039-0.537-2.63-1.355v0.019c-0.591-0.779-1.641-1.266-2.691-1.266h-7.22l0.028,0.003c0,0-1.068-0.06-1.719,0.859 C0.361,8.9,0,10.621,0,12.002c0,1.388,0.198,2.649,0.867,3.923c0.564,0.908,1.71,0.849,1.71,0.849L2.535,16.78h7.233 c1.05,0,2.1-0.49,2.691-1.268v0.019c0.591-0.817,1.546-1.355,2.63-1.355c1.795,0,3.249,1.458,3.249,3.251 c0,1.795-1.454,3.251-3.249,3.251c-1.084,0-2.039-0.537-2.63-1.354v0.018c-0.591-0.779-1.641-1.277-2.691-1.277H3.164 c-0.328,0.042-0.698,0.198-0.379,0.699c2.216,2.337,5.555,3.824,9.288,3.824c6.054,0,11.056-3.911,11.926-9.009 C23.995,12.866,23.51,12.702,23.254,12.667"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>DLNA</title><path d="M23.255 12.667H13.02c-1.052 0-2.1.489-2.693 1.266v-.017a3.24 3.24 0 01-2.629 1.353 3.25 3.25 0 010-6.502c1.085 0 2.04.536 2.63 1.353v-.013c.591.776 1.64 1.273 2.692 1.273h10.129c.186-.005.873-.095.848-.981-.884-5.086-5.88-8.987-11.923-8.987-3.722 0-7.048 1.48-9.263 3.803-.356.527.014.689.35.734H9.77c1.05 0 2.1-.498 2.692-1.277v.018a3.242 3.242 0 012.63-1.355 3.252 3.252 0 010 6.503 3.24 3.24 0 01-2.63-1.355v.019c-.592-.78-1.642-1.266-2.692-1.266H2.55l.028.003s-1.068-.06-1.719.859C.361 8.9 0 10.62 0 12.002c0 1.388.198 2.65.867 3.923.564.908 1.71.85 1.71.85l-.042.005h7.233c1.05 0 2.1-.49 2.692-1.268v.02a3.242 3.242 0 012.63-1.356 3.251 3.251 0 010 6.502 3.242 3.242 0 01-2.63-1.354v.018c-.592-.779-1.642-1.277-2.692-1.277H3.164c-.328.042-.698.198-.379.7 2.216 2.336 5.555 3.823 9.289 3.823 6.054 0 11.056-3.91 11.926-9.009-.004-.713-.489-.877-.745-.912"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/dm.svg b/assets/lib/simple-icons/icons/dm.svg
new file mode 100644
index 00000000..78ae85b9
--- /dev/null
+++ b/assets/lib/simple-icons/icons/dm.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>dm</title><path d="M8.1 8.683c-1.237 0-1.943 1.726-1.943 2.95 0 .502.122.72.38.72.693 0 1.876-2.012 2.12-3.262l.068-.326a2.588 2.588 0 0 0-.625-.082m1.468 5.192H7.76c.082-.476.23-.992.49-1.7h-.028c-.57.952-1.372 1.863-2.391 1.863-1.047 0-1.577-.68-1.577-2.093 0-2.487 1.29-4.757 4.172-4.757a3.3 3.3 0 0 1 .57.055l.3-1.51v-.012a9.956 9.956 0 0 0-1.114-.136l.258-1.237c.91-.095 1.848-.163 2.949-.122zm10.83 0h-1.793l.653-4.023c.136-.652.04-.91-.258-.91-.612 0-1.7 1.603-1.957 3.18l-.286 1.753h-1.794l.666-4.023c.136-.652.04-.91-.258-.91-.612 0-1.672 1.59-1.97 3.139l-.34 1.794h-1.794l.965-5.056v-.04c-.286-.055-.72-.11-1.115-.137l.258-1.236a17.857 17.857 0 0 1 2.84-.123 12.31 12.31 0 0 1-.502 1.7h.027c.598-1.02 1.237-1.795 2.392-1.795.775 0 1.29.408 1.29 1.305 0 .163-.04.326-.108.598l.014.014c.598-1.088 1.345-1.903 2.5-1.903 1.278 0 1.55.924 1.305 2.16zm3.562 1.74s-.258.312-.802.665c-1.06.72-3.166 1.63-6.442.816a40.26 40.26 0 0 1-.897-.245c-2.99-.87-4.756-1.998-8.738-2.487-2.705.068-5.45.38-6.958.978 0 0 .407.422.53.598.068.136.203.53.34.938.149.435.285.843.285.843s1.699-.897 3.683-1.427c.938-.258 1.93-.408 2.84-.354 3.044.19 5.504 1.767 8.236 3.045 1.889.53 6.51.937 7.814.353-.013-.027.245-1.291.11-3.724m-.803.666c-1.06.72-3.166 1.63-6.442.816a40.26 40.26 0 0 1-.897-.245c-2.065-.897-4.158-1.848-5-2.487 2.364.367 5.897.734 11.605-.19 0 0 .544.856.734 2.106m-22.166.585L0 17.218s1.142 1.359 1.332 1.794l.286.775s3.6-1.985 8.833-1.686a9.99 9.99 0 0 1 2.23.408s-2.135-1.386-2.556-1.522a26.5 26.5 0 0 0-5.164-.707 19.904 19.904 0 0 0-3.683 1.427s-.15-.421-.286-.842"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/docker.svg b/assets/lib/simple-icons/icons/docker.svg
index 576c90cc..0021a8a7 100644
--- a/assets/lib/simple-icons/icons/docker.svg
+++ b/assets/lib/simple-icons/icons/docker.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Docker icon</title><path d="M13.983 11.078h2.119a.186.186 0 00.186-.185V9.006a.186.186 0 00-.186-.186h-2.119a.185.185 0 00-.185.185v1.888c0 .102.083.185.185.185m-2.954-5.43h2.118a.186.186 0 00.186-.186V3.574a.186.186 0 00-.186-.185h-2.118a.185.185 0 00-.185.185v1.888c0 .102.082.185.185.185m0 2.716h2.118a.187.187 0 00.186-.186V6.29a.186.186 0 00-.186-.185h-2.118a.185.185 0 00-.185.185v1.887c0 .102.082.185.185.186m-2.93 0h2.12a.186.186 0 00.184-.186V6.29a.185.185 0 00-.185-.185H8.1a.185.185 0 00-.185.185v1.887c0 .102.083.185.185.186m-2.964 0h2.119a.186.186 0 00.185-.186V6.29a.185.185 0 00-.185-.185H5.136a.186.186 0 00-.186.185v1.887c0 .102.084.185.186.186m5.893 2.715h2.118a.186.186 0 00.186-.185V9.006a.186.186 0 00-.186-.186h-2.118a.185.185 0 00-.185.185v1.888c0 .102.082.185.185.185m-2.93 0h2.12a.185.185 0 00.184-.185V9.006a.185.185 0 00-.184-.186h-2.12a.185.185 0 00-.184.185v1.888c0 .102.083.185.185.185m-2.964 0h2.119a.185.185 0 00.185-.185V9.006a.185.185 0 00-.184-.186h-2.12a.186.186 0 00-.186.186v1.887c0 .102.084.185.186.185m-2.92 0h2.12a.185.185 0 00.184-.185V9.006a.185.185 0 00-.184-.186h-2.12a.185.185 0 00-.184.185v1.888c0 .102.082.185.185.185M23.763 9.89c-.065-.051-.672-.51-1.954-.51-.338.001-.676.03-1.01.087-.248-1.7-1.653-2.53-1.716-2.566l-.344-.199-.226.327c-.284.438-.49.922-.612 1.43-.23.97-.09 1.882.403 2.661-.595.332-1.55.413-1.744.42H.751a.751.751 0 00-.75.748 11.376 11.376 0 00.692 4.062c.545 1.428 1.355 2.48 2.41 3.124 1.18.723 3.1 1.137 5.275 1.137.983.003 1.963-.086 2.93-.266a12.248 12.248 0 003.823-1.389c.98-.567 1.86-1.288 2.61-2.136 1.252-1.418 1.998-2.997 2.553-4.4h.221c1.372 0 2.215-.549 2.68-1.009.309-.293.55-.65.707-1.046l.098-.288Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Docker</title><path d="M13.983 11.078h2.119a.186.186 0 00.186-.185V9.006a.186.186 0 00-.186-.186h-2.119a.185.185 0 00-.185.185v1.888c0 .102.083.185.185.185m-2.954-5.43h2.118a.186.186 0 00.186-.186V3.574a.186.186 0 00-.186-.185h-2.118a.185.185 0 00-.185.185v1.888c0 .102.082.185.185.185m0 2.716h2.118a.187.187 0 00.186-.186V6.29a.186.186 0 00-.186-.185h-2.118a.185.185 0 00-.185.185v1.887c0 .102.082.185.185.186m-2.93 0h2.12a.186.186 0 00.184-.186V6.29a.185.185 0 00-.185-.185H8.1a.185.185 0 00-.185.185v1.887c0 .102.083.185.185.186m-2.964 0h2.119a.186.186 0 00.185-.186V6.29a.185.185 0 00-.185-.185H5.136a.186.186 0 00-.186.185v1.887c0 .102.084.185.186.186m5.893 2.715h2.118a.186.186 0 00.186-.185V9.006a.186.186 0 00-.186-.186h-2.118a.185.185 0 00-.185.185v1.888c0 .102.082.185.185.185m-2.93 0h2.12a.185.185 0 00.184-.185V9.006a.185.185 0 00-.184-.186h-2.12a.185.185 0 00-.184.185v1.888c0 .102.083.185.185.185m-2.964 0h2.119a.185.185 0 00.185-.185V9.006a.185.185 0 00-.184-.186h-2.12a.186.186 0 00-.186.186v1.887c0 .102.084.185.186.185m-2.92 0h2.12a.185.185 0 00.184-.185V9.006a.185.185 0 00-.184-.186h-2.12a.185.185 0 00-.184.185v1.888c0 .102.082.185.185.185M23.763 9.89c-.065-.051-.672-.51-1.954-.51-.338.001-.676.03-1.01.087-.248-1.7-1.653-2.53-1.716-2.566l-.344-.199-.226.327c-.284.438-.49.922-.612 1.43-.23.97-.09 1.882.403 2.661-.595.332-1.55.413-1.744.42H.751a.751.751 0 00-.75.748 11.376 11.376 0 00.692 4.062c.545 1.428 1.355 2.48 2.41 3.124 1.18.723 3.1 1.137 5.275 1.137.983.003 1.963-.086 2.93-.266a12.248 12.248 0 003.823-1.389c.98-.567 1.86-1.288 2.61-2.136 1.252-1.418 1.998-2.997 2.553-4.4h.221c1.372 0 2.215-.549 2.68-1.009.309-.293.55-.65.707-1.046l.098-.288Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/docsdotrs.svg b/assets/lib/simple-icons/icons/docsdotrs.svg
new file mode 100644
index 00000000..44e58d9b
--- /dev/null
+++ b/assets/lib/simple-icons/icons/docsdotrs.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Docs.rs</title><path d="m22.903 11.728-4.528-1.697V4.945a1.69 1.69 0 0 0-1.097-1.58l-4.687-1.757a1.668 1.668 0 0 0-1.186 0L6.717 3.366a1.687 1.687 0 0 0-1.097 1.58v5.085l-4.528 1.697A1.69 1.69 0 0 0 0 13.308v5.16c0 .638.36 1.224.933 1.51l4.687 2.344a1.68 1.68 0 0 0 1.51 0L12 19.884l4.87 2.438a1.68 1.68 0 0 0 1.51 0l4.687-2.344a1.69 1.69 0 0 0 .933-1.51v-5.16c0-.703-.436-1.331-1.097-1.58zm-6.122-1.66-3.984 1.496V8.367l3.984-1.734zM7.22 4.88 12 3.09l4.781 1.79v.028L12 6.848l-4.781-1.94Zm3.937 13.645-3.984 1.992V16.81l3.984-1.818zm0-5.25-4.781 1.94-4.781-1.94v-.028l4.781-1.79 4.781 1.79zm11.25 5.25-3.984 1.992V16.81l3.984-1.818zm0-5.25-4.781 1.94-4.781-1.94v-.028l4.781-1.79 4.781 1.79z"/></svg>
diff --git a/assets/lib/simple-icons/icons/docusign.svg b/assets/lib/simple-icons/icons/docusign.svg
index d6d90ba5..f0508ce2 100644
--- a/assets/lib/simple-icons/icons/docusign.svg
+++ b/assets/lib/simple-icons/icons/docusign.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>DocuSign icon</title><path d="M9.517 3.31h4.966v6.621h3.31L12 16.552 6.207 9.931h3.31V3.31zM0 19.034h24v1.655H0v-1.655z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>DocuSign</title><path d="M9.517 3.31h4.966v6.621h3.31L12 16.552 6.207 9.931h3.31V3.31zM0 19.034h24v1.655H0v-1.655z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/dogecoin.svg b/assets/lib/simple-icons/icons/dogecoin.svg
new file mode 100644
index 00000000..de09f858
--- /dev/null
+++ b/assets/lib/simple-icons/icons/dogecoin.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Dogecoin</title><path d="M12.288 7.908h-1.715v3.38h2.697v1.415h-2.697v3.38h1.799c.462 0 3.794.052 3.789-3.933-.005-3.984-3.232-4.242-3.873-4.242zM12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0zm.472 18.481H8.126v-5.778H6.594v-1.415h1.532V5.511h3.73c.882 0 6.727-.183 6.727 6.594-.001 6.888-6.111 6.376-6.111 6.376z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/dolby.svg b/assets/lib/simple-icons/icons/dolby.svg
index 6cbac373..892c4064 100644
--- a/assets/lib/simple-icons/icons/dolby.svg
+++ b/assets/lib/simple-icons/icons/dolby.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Dolby icon</title><path d="M24,20.352V3.648H0v16.704H24z M18.433,5.806h2.736v12.387h-2.736c-2.839,0-5.214-2.767-5.214-6.194S15.594,5.806,18.433,5.806z M2.831,5.806h2.736c2.839,0,5.214,2.767,5.214,6.194s-2.374,6.194-5.214,6.194H2.831V5.806z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Dolby</title><path d="M24,20.352V3.648H0v16.704H24z M18.433,5.806h2.736v12.387h-2.736c-2.839,0-5.214-2.767-5.214-6.194S15.594,5.806,18.433,5.806z M2.831,5.806h2.736c2.839,0,5.214,2.767,5.214,6.194s-2.374,6.194-5.214,6.194H2.831V5.806z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/doordash.svg b/assets/lib/simple-icons/icons/doordash.svg
new file mode 100644
index 00000000..b189a935
--- /dev/null
+++ b/assets/lib/simple-icons/icons/doordash.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>DoorDash</title><path d="M23.071 8.409a6.09 6.09 0 00-5.396-3.228H.584A.589.589 0 00.17 6.184L3.894 9.93a1.752 1.752 0 001.242.516h12.049a1.554 1.554 0 11.031 3.108H8.91a.589.589 0 00-.415 1.003l3.725 3.747a1.75 1.75 0 001.242.516h3.757c4.887 0 8.584-5.225 5.852-10.413"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/dot-net.svg b/assets/lib/simple-icons/icons/dot-net.svg
deleted file mode 100644
index e2bef9aa..00000000
--- a/assets/lib/simple-icons/icons/dot-net.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>.NET icon</title><path d="M3.1672 7.5655v8.749H4.19v-6.325a8.979 8.979 0 0 0-.0488-1.1998h.0384a2.9082 2.9082 0 0 0 .2784.5473l4.4973 6.9774h1.2569V7.5655H9.1904v6.1526a9.2574 9.2574 0 0 0 .0619 1.286h-.0234c-.0544-.1056-.173-.3002-.3553-.585L4.4964 7.5656zm9.315 0v8.749h4.65l.0048-.9599h-3.6087v-3.0331h3.1579V11.4h-3.1579V8.4916h3.3884v-.926zm5.4374 0v.926h2.5149v7.823h1.0216v-7.823H24v-.926zM.6534 15.067a.643.643 0 0 0-.4565.2062A.6719.6719 0 0 0 0 15.753a.6623.6623 0 0 0 .1968.4799.6479.6479 0 0 0 .4799.2015.6623.6623 0 0 0 .4799-.2015.6575.6575 0 0 0 .2015-.48.667.667 0 0 0-.2015-.4798.6575.6575 0 0 0-.4799-.2062.643.643 0 0 0-.0234 0z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/dotnet.svg b/assets/lib/simple-icons/icons/dotnet.svg
new file mode 100644
index 00000000..89df9895
--- /dev/null
+++ b/assets/lib/simple-icons/icons/dotnet.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>.NET</title><path d="M24 8.77h-2.468v7.565h-1.425V8.77h-2.462V7.53H24zm-6.852 7.565h-4.821V7.53h4.63v1.24h-3.205v2.494h2.953v1.234h-2.953v2.604h3.396zm-6.708 0H8.882L4.78 9.863a2.896 2.896 0 0 1-.258-.51h-.036c.032.189.048.592.048 1.21v5.772H3.157V7.53h1.659l3.965 6.32c.167.261.275.442.323.54h.024c-.04-.233-.06-.629-.06-1.185V7.529h1.372zm-8.703-.693a.868.829 0 0 1-.869.829.868.829 0 0 1-.868-.83.868.829 0 0 1 .868-.828.868.829 0 0 1 .869.829Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/douban.svg b/assets/lib/simple-icons/icons/douban.svg
index 9f1e838c..0f5d0c0b 100644
--- a/assets/lib/simple-icons/icons/douban.svg
+++ b/assets/lib/simple-icons/icons/douban.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Douban icon</title><path d="M.643.92v2.412h22.714V.92H.643zm1.974 4.926v9.42h18.764v-9.42H2.617zm2.72 2.408H18.69v4.605H5.338V8.254zm1.657 7.412l-2.512.938c1.037 1.461 1.87 2.825 2.512 4.091H0v2.385h24v-2.385h-6.678c.818-1.176 1.589-2.543 2.303-4.091l-2.73-.938a29.952 29.952 0 01-2.479 5.03h-4.75c-.786-1.962-1.677-3.641-2.672-5.03Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Douban</title><path d="M.643.92v2.412h22.714V.92H.643zm1.974 4.926v9.42h18.764v-9.42H2.617zm2.72 2.408H18.69v4.605H5.338V8.254zm1.657 7.412l-2.512.938c1.037 1.461 1.87 2.825 2.512 4.091H0v2.385h24v-2.385h-6.678c.818-1.176 1.589-2.543 2.303-4.091l-2.73-.938a29.952 29.952 0 01-2.479 5.03h-4.75c-.786-1.962-1.677-3.641-2.672-5.03Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/doubanread.svg b/assets/lib/simple-icons/icons/doubanread.svg
new file mode 100644
index 00000000..38716794
--- /dev/null
+++ b/assets/lib/simple-icons/icons/doubanread.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Douban Read</title><path d="M15.328 5.553c-2.648.906-4.008 4.372-7.101 4.833C4.827 10.833.752 7.205 0 6c0 0 .526.906 1.28 2.105C5.205 14.297 7.772 18.224 12 18.75c5.28.68 8.146-4.535 8.826-6.64.607-1.732 1.733-1.66 2.494-1.433l.68.227s-2.729-7.402-8.688-5.36l.016.008z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/dpd.svg b/assets/lib/simple-icons/icons/dpd.svg
new file mode 100644
index 00000000..9142ea5b
--- /dev/null
+++ b/assets/lib/simple-icons/icons/dpd.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>DPD</title><path d="M16.01 10.71a.364.364 0 01-.343-.006l-.558-.331a.43.43 0 01-.182-.312l-.014-.65a.363.363 0 01.165-.3l6.7-3.902L12.377.085A.799.799 0 0012 0a.798.798 0 00-.377.085l-9.4 5.124 10.53 6.13c.098.054.172.181.172.295v8.944c0 .112-.08.241-.178.294l-.567.315c-.171.062-.256.043-.361 0l-.569-.315a.362.362 0 01-.175-.294v-7.973a.223.223 0 00-.095-.156L1.702 7.048v10.579c0 .236.167.528.371.648l9.556 5.636c.102.06.237.09.371.089a.745.745 0 00.371-.09l9.557-5.635a.835.835 0 00.37-.648V7.047Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/dragonframe.svg b/assets/lib/simple-icons/icons/dragonframe.svg
new file mode 100644
index 00000000..7ee610c3
--- /dev/null
+++ b/assets/lib/simple-icons/icons/dragonframe.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Dragonframe</title><path d="M.936.001A.937.937 0 0 0 0 .937v22.132c0 .519.42.93.936.93h9.968s-.519-.466-.611-.56a1.14 1.14 0 0 1-.237-.365c-.053-.128-.094-.383-.112-.51-.017-.128-.06-.222-.102-.332-.043-.112-.238-.381-.289-.45-.05-.068-.332-.39-.39-.459-.06-.068-.06-.145-.034-.195.024-.051-.018-.095-.086-.172-.068-.075-.382-.415-.518-.576-.136-.162-.068-.204-.033-.221.033-.018.27.136.391.196.092.045.325.168.433.197.048.013.073.011.083-.009.013-.02.26-.364.367-1.023.119-1.171-.12-1.867-.4-2.456a7.363 7.363 0 0 0-.714-1.206c-.145-.187-.815-.765-.927-.841-.11-.077-1.393-.918-1.538-1.038-.144-.118.025-.166.08-.142.143.064.428.178.558.238.151.065.91.33 1.054.364.145.033.126.03.103-.119-.017-.111-.23-.604-.332-.782-.103-.18-.553-.817-.859-1.113-.304-.297-.663-.681-.799-.892-.136-.213-.696-1.368-.868-1.792a12.048 12.048 0 0 0-.527-1.114c-.059-.101-.134-.154-.125-.24.007-.083.253.128.365.23.167.153.388.445.661.86.272.418.571.688.621.738.051.05.39.393.44.424.033.017.046.004.053-.024.02-.084 0-.295-.033-.46-.042-.221-.018-.748-.092-1.012-.078-.261-.113-.389-.469-1.02-.358-.628-.74-1.681-1.053-3.347a12.3 12.3 0 0 1-.163-3.264c.018-.163.085-.136.13-.128.04.01.065.265.065.265s-.015.612.731 2.609c.75 1.996 1.633 2.133 1.71 2.15.077.016.11.007.11-.035 0-.041-.213-.9-.136-1.57.076-.673.238-.945.33-1.04.071-.07.069-.014.069.196-.002.07-.002.158 0 .264.01.426.281.995.281.995s.118.5.323-.664c.296-1.954.018-2.995-.06-3.274C8.28.998 7.944 0 7.157 0Zm15.427 0c-.65 0-.895.997-.972 1.279-.076.278-.357 1.32-.059 3.274.204 1.164.323.664.323.664s.273-.57.281-.995c.002-.106 0-.193 0-.264-.002-.21-.002-.266.068-.195.092.094.255.366.33 1.039.077.67-.134 1.529-.134 1.57 0 .042.032.05.11.035.077-.017.96-.153 1.709-2.15.746-1.997.729-2.61.729-2.61s.027-.254.068-.264c.042-.008.111-.035.128.128a12.22 12.22 0 0 1-.16 3.264c-.316 1.666-.698 2.72-1.055 3.347-.356.631-.392.759-.469 1.02-.076.264-.05.79-.092 1.012-.032.165-.053.376-.032.46.006.028.02.041.05.024.053-.03.39-.374.44-.424.052-.05.35-.32.62-.738.273-.415.495-.707.664-.86.113-.102.356-.313.365-.23.009.086-.066.139-.125.24-.06.1-.359.688-.53 1.114-.169.424-.73 1.579-.866 1.792-.135.21-.494.595-.798.892-.306.296-.756.933-.86 1.113-.1.178-.313.67-.331.782-.023.15-.042.152.103.119.143-.033.9-.299 1.052-.364.132-.06.417-.174.56-.238.055-.024.225.024.08.142-.146.12-1.428.96-1.54 1.038-.11.076-.782.654-.925.84a7.129 7.129 0 0 0-.714 1.207c-.28.589-.519 1.285-.4 2.456.108.659.354 1.004.364 1.023.014.02.038.022.085.009.11-.029.34-.152.434-.197.119-.06.358-.214.39-.196.036.017.102.06-.032.221-.136.161-.45.501-.518.576-.068.077-.112.121-.086.172a.18.18 0 0 1-.035.195c-.06.068-.338.39-.391.46-.05.067-.246.337-.288.449-.042.11-.085.204-.103.332a2.416 2.416 0 0 1-.11.51 1.178 1.178 0 0 1-.237.364c-.095.095-.646.56-.646.56h10.256a.945.945 0 0 0 .936-.947V.937A.937.937 0 0 0 23.064 0ZM8.933 11.49a.078.078 0 0 0-.085.074c-.015.238-.038.422-.053.642-.017.25-.05.531.063.784.113.247.366.661.45.782.09.12.429.604.513.734.086.13.307.533.345.604.04.068.015.068.07.068.033 0 .04-.176.04-.325 0-.084-.003-.158-.003-.187 0-.494.018-.96-.147-1.432a1.266 1.266 0 0 0-.175-.345c-.123-.169-.255-.331-.383-.494-.05-.066-.1-.134-.16-.192-.09-.091-.327-.379-.382-.504-.04-.097-.055-.198-.084-.207a.038.038 0 0 0-.01-.002zm5.915 0a.034.034 0 0 0-.01.002c-.03.009-.044.11-.086.207-.053.125-.29.413-.383.504-.059.058-.107.126-.157.192-.13.163-.261.325-.382.494a1.25 1.25 0 0 0-.176.345c-.165.472-.147.938-.147 1.432 0 .077-.016.512.037.512.055 0 .03 0 .07-.068.037-.07.26-.475.343-.604.083-.13.425-.613.514-.734a7.1 7.1 0 0 0 .45-.782c.065-.143.082-.294.082-.443a4.3 4.3 0 0 0-.017-.34c-.019-.22-.038-.405-.054-.643-.003-.059-.056-.076-.084-.074zM10.7 19.994c-.006 0-.006.007-.006.029 0 .032-.02.16-.01.239.005.082.017.262.03.35.006.053.004.148.002.247v.192c.004.144-.015.412-.137.63 0 0-.034.035-.034.061 0 .03.024.042.05.093.046.087.194.272.249.33.052.057.155.181.272.087.044-.037.057-.095.057-.171 0-.12-.038-.288-.057-.494-.005-.035-.097-.407-.132-.567-.024-.119-.101-.464-.125-.578-.015-.067-.077-.274-.088-.314-.01-.037-.031-.12-.055-.13l-.016-.004zm2.345 0c-.004 0-.01.002-.019.005-.021.008-.04.092-.052.13-.01.039-.072.246-.088.313-.026.114-.1.46-.127.578-.033.16-.125.532-.13.567-.032.335-.114.569 0 .665.114.094.218-.03.273-.088.053-.057.201-.242.248-.33.026-.05.05-.063.05-.092 0-.026-.035-.06-.035-.06a1.277 1.277 0 0 1-.139-.631c.003-.057 0-.123 0-.19a2.476 2.476 0 0 1 .005-.25c.011-.087.022-.268.032-.349.008-.08-.012-.207-.012-.24 0-.021 0-.028-.006-.028z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/draugiem-dot-lv.svg b/assets/lib/simple-icons/icons/draugiem-dot-lv.svg
deleted file mode 100644
index 35c34588..00000000
--- a/assets/lib/simple-icons/icons/draugiem-dot-lv.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Draugiem.lv icon</title><path d="M8.154 15.096c.048.346.14.562.278.693.144.13.34.18.596.21.304-.03.51-.1.65-.3.083-.13.14-.33.166-.61l.098-1.16v-.02l-.02-.18-.03-.17-.03-.175-.032-.165-.03-.174-.03-.165-.03-.164-.03-.17-.028-.16-.03-.15-.03-.15v-.138l-.03-.136-.03-.133-.015-.126-.03-.116-.03-.1-.03-.17L9.41 11l-.045-.18-.045-.18-.013-.197-.052-.203-.045-.21-.053-.21-.03-.21-.043-.215-.03-.213-.017-.242-.015-.21-.01-.228V8.1l.02-.21.035-.21.046-.21.06-.2.09-.194.106-.186.04-.074c-.2-.046-.44-.076-.69-.076-.11 0-.2 0-.3.016-2.33.2-1.38 2.836-.98 4.283.28 1 .6 3.34.72 4.06l-.02-.02zm.28-8.664c.09.03.178.045.283.045.48 0 .79-.255.96-.645.112-.27.162-.602.153-.945-.014-.3-.074-.572-.164-.81-.195-.467-.54-.782-1.066-.782-.074 0-.135 0-.18.016-.675.11-.976.78-.945 1.61.015.78.314 1.43.93 1.58l.028-.06zm1.244 3.843c.084.36.168.69.237.975.285 1.156.562 3.843.665 4.668.098.826.39.99.97 1.05.576-.044.867-.224.965-1.034.097-.81.38-3.498.657-4.653.068-.28.16-.61.24-.96.258-1.05.466-2.29 0-3.1-.296-.51-.865-.84-1.86-.84-1.007 0-1.583.33-1.872.86-.465.81-.256 2.06 0 3.11l-.002-.06zm1.858-4.28h.015c.9 0 1.33-.823 1.33-1.83s-.42-1.846-1.32-1.846h-.01c-.91 0-1.33.84-1.33 1.86s.42 1.84 1.337 1.84v-.03zm2.827.752c-.27 0-.51.03-.705.075l.045.075.105.194.075.2.06.21.045.21.03.21.015.23v.44l-.015.23v.167l-.03.217-.03.213-.044.213-.046.21-.044.21-.045.206-.05.2-.05.197-.06.195-.05.18-.03.18-.05.168-.018.09-.03.12-.03.137-.026.134-.015.132-.03.12v.03l-.03.15-.03.15-.02.163-.03.168-.02.165-.03.165-.02.18-.013.165-.014.18-.014.18-.017.18V14c.045.496.075.93.09 1.17.03.287.075.48.166.616.14.2.35.27.66.3.26-.03.45-.07.6-.22.15-.12.23-.343.29-.69.12-.703.44-3.05.71-4.053.4-1.45 1.35-4.083-.98-4.284-.105-.014-.195-.014-.3-.014l.012-.05zm.016-.27c.09 0 .18-.014.27-.03.6-.15.9-.794.93-1.56.03-.81-.27-1.5-.95-1.592-.06-.016-.12-.016-.18-.016-.54 0-.89.33-1.07.79-.09.24-.15.52-.15.82-.02.36.03.69.15.96.16.4.48.66.96.66l.03-.05zm2.79 1.2c4.29.062 6.8 2.702 3.96 6.305-1.32 1.667-3.53 3.317-6.49 4.368l-.42.15c-.29.09-.56.18-.83.256-.65.18-1.26.345-1.86.465-.65.14-1.28.23-1.88.3-.44.05-.86.08-1.25.08-2.747.08-4.818-.67-5.49-2.28-.81-1.92.823-4.59 4.11-6.63-2.43.97-6.84 3.29-7.036 6.57v.42c.016.35.074.68.195 1.04.707 2.22 4.01 3.27 8.21 2.9.407-.03.827-.073 1.25-.14.605-.082 1.23-.21 1.86-.36.605-.13 1.23-.31 1.865-.51l.42-.13c.285-.09.557-.18.826-.285 3.646-1.32 6.35-3.075 7.926-5.102.9-1.152 1.365-2.232 1.455-3.18v-.733c-.26-2.413-3.06-3.824-6.877-3.435l.044-.045z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/draugiemdotlv.svg b/assets/lib/simple-icons/icons/draugiemdotlv.svg
new file mode 100644
index 00000000..4005f787
--- /dev/null
+++ b/assets/lib/simple-icons/icons/draugiemdotlv.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Draugiem.lv</title><path d="M17.12 7.694c4.3.056 6.808 2.693 3.96 6.3-1.307 1.662-3.517 3.303-6.465 4.373l-.422.144c-.278.09-.553.173-.823.258-.638.18-1.26.34-1.863.455-.645.134-1.268.229-1.87.298-.43.042-.844.07-1.245.078-2.743.07-4.806-.68-5.477-2.285-.81-1.919.83-4.592 4.116-6.627C4.597 11.661.188 13.96 0 17.256v.404a4.307 4.307 0 0 0 .193 1.029c.7 2.228 4.003 3.267 8.21 2.894a19.43 19.43 0 0 0 1.244-.147 24.08 24.08 0 0 0 3.733-.874c.137-.05.275-.09.414-.14.283-.09.561-.184.831-.29 3.64-1.322 6.342-3.087 7.921-5.101.898-1.155 1.364-2.236 1.454-3.185v-.723c-.26-2.403-3.064-3.815-6.88-3.43zm-2.788-1.192a1.237 1.237 0 0 0 .283-.033c.61-.152.908-.803.934-1.572.028-.815-.257-1.495-.934-1.592a.826.826 0 0 0-.18 0 1.111 1.111 0 0 0-1.065.79 2.526 2.526 0 0 0-.154.815 2.192 2.192 0 0 0 .154.954.993.993 0 0 0 .962.638zm-.013.273a2.946 2.946 0 0 0-.7.075l.057.077.103.185.085.196.07.2.046.206.036.208.02.217v.427l-.015.216v.213l-.028.216-.029.214-.041.216-.041.214-.041.208-.05.208-.04.201-.05.193-.048.188-.049.18-.041.172-.041.165-.02.105-.03.116-.025.126-.023.131-.026.14-.02.118v.025l-.029.155-.028.151-.02.16-.037.175-.02.167-.028.165-.021.175-.026.164-.023.175-.02.173-.021.172c.041.5.077.921.098 1.163a1.253 1.253 0 0 0 .167.61.772.772 0 0 0 .648.295.947.947 0 0 0 .597-.213 1.178 1.178 0 0 0 .278-.692c.11-.713.43-3.054.705-4.057.396-1.446 1.343-4.078-.983-4.278a2.259 2.259 0 0 0-.296-.016zm-2.83-.743h.016c.9 0 1.322-.829 1.322-1.84 0-1.01-.42-1.842-1.32-1.85h-.018c-.913 0-1.335.831-1.335 1.85 0 1.019.425 1.84 1.335 1.84zm-1.852 4.273c.082.352.167.679.237.97.283 1.155.56 3.84.663 4.65.103.811.389.991.97 1.045.574-.054.865-.226.963-1.044.097-.818.38-3.496.656-4.651.069-.291.159-.618.257-.97.257-1.06.463-2.316 0-3.108-.299-.515-.867-.854-1.863-.854-.995 0-1.58.34-1.87.854-.476.803-.27 2.048-.013 3.108zM8.402 6.469a1.237 1.237 0 0 0 .283.033.993.993 0 0 0 .952-.65 2.403 2.403 0 0 0 .152-.955 2.673 2.673 0 0 0-.152-.815 1.122 1.122 0 0 0-1.065-.79.803.803 0 0 0-.18 0c-.672.098-.962.772-.937 1.592.021.782.327 1.433.947 1.585zm-.288 8.654a1.13 1.13 0 0 0 .288.692.944.944 0 0 0 .594.214.772.772 0 0 0 .651-.296 1.451 1.451 0 0 0 .168-.61l.095-1.155v-.015l-.02-.173-.021-.172-.029-.175-.02-.165-.02-.175-.027-.164-.033-.157-.026-.165-.026-.17-.02-.151-.028-.155v-.02L9.616 12l-.028-.14-.028-.131-.02-.126-.026-.116-.029-.105-.036-.165-.049-.172-.04-.18-.047-.188-.049-.193-.049-.2-.041-.222-.049-.208-.041-.214-.036-.214-.026-.213-.028-.216-.02-.214V8.14l.02-.216.033-.208.05-.206.061-.2.09-.196.105-.186.055-.077a2.977 2.977 0 0 0-.7-.074 2.218 2.218 0 0 0-.296 0c-2.315.2-1.379 2.83-.983 4.278.275 1.014.594 3.355.705 4.067z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/dribbble.svg b/assets/lib/simple-icons/icons/dribbble.svg
index e7bdffa4..130a6f59 100644
--- a/assets/lib/simple-icons/icons/dribbble.svg
+++ b/assets/lib/simple-icons/icons/dribbble.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Dribbble icon</title><path d="M12 24C5.385 24 0 18.615 0 12S5.385 0 12 0s12 5.385 12 12-5.385 12-12 12zm10.12-10.358c-.35-.11-3.17-.953-6.384-.438 1.34 3.684 1.887 6.684 1.992 7.308 2.3-1.555 3.936-4.02 4.395-6.87zm-6.115 7.808c-.153-.9-.75-4.032-2.19-7.77l-.066.02c-5.79 2.015-7.86 6.025-8.04 6.4 1.73 1.358 3.92 2.166 6.29 2.166 1.42 0 2.77-.29 4-.814zm-11.62-2.58c.232-.4 3.045-5.055 8.332-6.765.135-.045.27-.084.405-.12-.26-.585-.54-1.167-.832-1.74C7.17 11.775 2.206 11.71 1.756 11.7l-.004.312c0 2.633.998 5.037 2.634 6.855zm-2.42-8.955c.46.008 4.683.026 9.477-1.248-1.698-3.018-3.53-5.558-3.8-5.928-2.868 1.35-5.01 3.99-5.676 7.17zM9.6 2.052c.282.38 2.145 2.914 3.822 6 3.645-1.365 5.19-3.44 5.373-3.702-1.81-1.61-4.19-2.586-6.795-2.586-.825 0-1.63.1-2.4.285zm10.335 3.483c-.218.29-1.935 2.493-5.724 4.04.24.49.47.985.68 1.486.08.18.15.36.22.53 3.41-.43 6.8.26 7.14.33-.02-2.42-.88-4.64-2.31-6.38z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Dribbble</title><path d="M12 24C5.385 24 0 18.615 0 12S5.385 0 12 0s12 5.385 12 12-5.385 12-12 12zm10.12-10.358c-.35-.11-3.17-.953-6.384-.438 1.34 3.684 1.887 6.684 1.992 7.308 2.3-1.555 3.936-4.02 4.395-6.87zm-6.115 7.808c-.153-.9-.75-4.032-2.19-7.77l-.066.02c-5.79 2.015-7.86 6.025-8.04 6.4 1.73 1.358 3.92 2.166 6.29 2.166 1.42 0 2.77-.29 4-.814zm-11.62-2.58c.232-.4 3.045-5.055 8.332-6.765.135-.045.27-.084.405-.12-.26-.585-.54-1.167-.832-1.74C7.17 11.775 2.206 11.71 1.756 11.7l-.004.312c0 2.633.998 5.037 2.634 6.855zm-2.42-8.955c.46.008 4.683.026 9.477-1.248-1.698-3.018-3.53-5.558-3.8-5.928-2.868 1.35-5.01 3.99-5.676 7.17zM9.6 2.052c.282.38 2.145 2.914 3.822 6 3.645-1.365 5.19-3.44 5.373-3.702-1.81-1.61-4.19-2.586-6.795-2.586-.825 0-1.63.1-2.4.285zm10.335 3.483c-.218.29-1.935 2.493-5.724 4.04.24.49.47.985.68 1.486.08.18.15.36.22.53 3.41-.43 6.8.26 7.14.33-.02-2.42-.88-4.64-2.31-6.38z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/drone.svg b/assets/lib/simple-icons/icons/drone.svg
index ec17181e..a2c17189 100644
--- a/assets/lib/simple-icons/icons/drone.svg
+++ b/assets/lib/simple-icons/icons/drone.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Drone icon</title><path d="M15.07 13.633a3.07 3.07 0 1 1-6.14 0 3.07 3.07 0 0 1 6.14 0zM12 1.856c5.359.042 11.452 3.82 12 10.94h-7.256S15.809 8.863 12 8.889s-4.744 3.907-4.744 3.907H0C.353 5.802 6.344 1.812 12 1.856zM12.05 22.144c-3.996.011-7.729-3.005-9.259-7.674h4.465s.963 3.889 4.773 3.863 4.716-3.863 4.716-3.863h4.465c-.995 4.94-5.164 7.664-9.159 7.674z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Drone</title><path d="M15.07 13.633a3.07 3.07 0 1 1-6.14 0 3.07 3.07 0 0 1 6.14 0zM12 1.856c5.359.042 11.452 3.82 12 10.94h-7.256S15.809 8.863 12 8.889s-4.744 3.907-4.744 3.907H0C.353 5.802 6.344 1.812 12 1.856zM12.05 22.144c-3.996.011-7.729-3.005-9.259-7.674h4.465s.963 3.889 4.773 3.863 4.716-3.863 4.716-3.863h4.465c-.995 4.94-5.164 7.664-9.159 7.674z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/drooble.svg b/assets/lib/simple-icons/icons/drooble.svg
new file mode 100644
index 00000000..3e66b076
--- /dev/null
+++ b/assets/lib/simple-icons/icons/drooble.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Drooble</title><path d="M24 11.986a7.599 7.599 0 0 0-7-7.559v7.574a5 5 0 0 1-10 0c0-3.604 3.707-6.022 7-4.583V.17C6.615-1.069 0 4.63 0 12c0 6.628 5.373 12 12 12 6.628 0 12-5.372 12-12v-.014m-14 .015a2 2 0 1 0 4 0 2 2 0 0 0-4 0m14-.015a7.599 7.599 0 0 0-7-7.559v7.574a5 5 0 0 1-10 0c0-3.604 3.707-6.022 7-4.583V.17C6.615-1.069 0 4.63 0 12c0 6.628 5.373 12 12 12 6.628 0 12-5.372 12-12v-.014m-14 .015a2 2 0 1 0 4 0 2 2 0 0 0-4 0Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/dropbox.svg b/assets/lib/simple-icons/icons/dropbox.svg
index 6a879c82..8faa2517 100644
--- a/assets/lib/simple-icons/icons/dropbox.svg
+++ b/assets/lib/simple-icons/icons/dropbox.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Dropbox icon</title><path d="M6 1.807L0 5.629l6 3.822 6.001-3.822L6 1.807zM18 1.807l-6 3.822 6 3.822 6-3.822-6-3.822zM0 13.274l6 3.822 6.001-3.822L6 9.452l-6 3.822zM18 9.452l-6 3.822 6 3.822 6-3.822-6-3.822zM6 18.371l6.001 3.822 6-3.822-6-3.822L6 18.371z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Dropbox</title><path d="M6 1.807L0 5.629l6 3.822 6.001-3.822L6 1.807zM18 1.807l-6 3.822 6 3.822 6-3.822-6-3.822zM0 13.274l6 3.822 6.001-3.822L6 9.452l-6 3.822zM18 9.452l-6 3.822 6 3.822 6-3.822-6-3.822zM6 18.371l6.001 3.822 6-3.822-6-3.822L6 18.371z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/drupal.svg b/assets/lib/simple-icons/icons/drupal.svg
index 50877ded..d20efb69 100644
--- a/assets/lib/simple-icons/icons/drupal.svg
+++ b/assets/lib/simple-icons/icons/drupal.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Drupal icon</title><path d="M20.45 3.552C18.258 1.257 15.233.006 12 .006 5.431.006.007 5.428.007 12S5.43 23.994 12 23.994 23.995 18.572 23.995 12c0-3.233-1.251-6.258-3.546-8.448zM12 19.822c-3.65 0-6.57-2.92-6.57-6.57 0-3.025 2.085-5.111 3.858-6.884 1.252-1.252 2.4-2.4 2.712-3.755.313 1.252 1.46 2.399 2.712 3.65 1.773 1.774 3.859 3.86 3.859 6.884 0 3.65-2.92 6.571-6.571 6.675z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Drupal</title><path d="M15.78 5.113C14.09 3.425 12.48 1.815 11.998 0c-.48 1.815-2.09 3.425-3.778 5.113-2.534 2.53-5.405 5.4-5.405 9.702a9.184 9.185 0 1018.368 0c0-4.303-2.871-7.171-5.405-9.702M6.72 16.954c-.563-.019-2.64-3.6 1.215-7.416l2.55 2.788a.218.218 0 01-.016.325c-.61.625-3.204 3.227-3.527 4.126-.066.186-.164.18-.222.177M12 21.677a3.158 3.158 0 01-3.158-3.159 3.291 3.291 0 01.787-2.087c.57-.696 2.37-2.655 2.37-2.655s1.774 1.988 2.367 2.649a3.09 3.09 0 01.792 2.093A3.158 3.158 0 0112 21.677m6.046-5.123c-.068.15-.223.398-.431.405-.371.014-.411-.177-.686-.583-.604-.892-5.864-6.39-6.848-7.455-.866-.935-.122-1.595.223-1.94C10.736 6.547 12 5.285 12 5.285s3.766 3.574 5.336 6.016c1.57 2.443 1.029 4.556.71 5.253"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/dsautomobiles.svg b/assets/lib/simple-icons/icons/dsautomobiles.svg
index bf406e27..4a5ae9bd 100644
--- a/assets/lib/simple-icons/icons/dsautomobiles.svg
+++ b/assets/lib/simple-icons/icons/dsautomobiles.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>DS Automobiles icon</title><path d="M2.201 0v15.865l9.473-7.377c.102-.077.259-.222.315-.412.049.16.164.277.204.315.686.648 3.802 3.612 4.639 6.148.169.51.264 1.024.264 1.528 0 .434-.095.877-.264 1.317-.38.994-1.226 2.055-2.086 2.96-.367.386-1.955 1.976-2.479 2.5a.903.903 0 0 0-.232.44 2.218 2.218 0 0 0-.041.419L11.99 24l9.47-7.378c.13-.095.339-.294.339-.555 0-.23-.175-.41-.226-.457-.686-.648-3.802-3.612-4.639-6.148a4.886 4.886 0 0 1-.264-1.529c0-.434.095-.876.264-1.316.381-.995 1.227-2.057 2.088-2.962.368-.387 1.955-1.975 2.479-2.499a.89.89 0 0 0 .232-.439c.03-.158.042-.307.042-.419l.004-.297-9.474 7.377c-.104.077-.26.221-.316.41-.057-.189-.214-.334-.315-.41zm.222.757c.53.36 1.117.755 1.858 1.35.7.563 1.469 1.228 2.217 1.997C7.667 5.305 8.56 6.625 8.56 7.92s-.894 2.615-2.063 3.817a24.382 24.382 0 0 1-2.217 1.996c-.741.596-1.305.99-1.835 1.35.606-.474 4.289-3.322 5.255-5.747.188-.473.298-.949.298-1.416 0-.467-.11-.943-.298-1.416C6.735 4.079 3.029 1.23 2.423.757zM21.535.99l-.008.011c-.73.586-4.298 3.766-5.063 5.621-.18.437-.298.876-.298 1.307 0 .474.08.956.247 1.435.858 2.458 4.077 5.355 4.616 5.836-.47-.365-.913-.776-1.571-1.38-.622-.57-1.24-1.243-1.904-2.023-1.038-1.217-1.95-2.555-1.95-3.868 0-1.196.855-2.414 1.973-3.524.69-.685 3.32-2.958 3.958-3.415zm-8.828 7.774c.468.37.962.812 1.62 1.416.62.57 1.24 1.244 1.903 2.023 1.038 1.218 1.95 2.555 1.95 3.868 0 1.196-.855 2.414-1.973 3.524-.689.684-3.334 2.97-3.975 3.43l.007-.012c.736-.59 4.317-3.782 5.081-5.635.18-.437.298-.876.298-1.307 0-.473-.08-.955-.247-1.435-.857-2.458-4.126-5.39-4.664-5.872Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>DS Automobiles</title><path d="M2.207 0v15.85l9.465-7.371a.87.87 0 0 0 .328-.41.756.756 0 0 0 .201.327c.687.657 3.8 3.614 4.635 6.143a4.81 4.81 0 0 1 .266 1.527 3.354 3.354 0 0 1-.266 1.272c-.378.962-1.223 1.972-2.084 2.865-.368.375-1.97 1.912-2.477 2.418a.877.877 0 0 0-.232.424 5.673 5.673 0 0 0-.04.656V24l9.462-7.371a.756.756 0 0 0 .328-.555.657.657 0 0 0-.234-.476c-.684-.657-3.798-3.613-4.635-6.143a4.927 4.927 0 0 1-.262-1.53 3.505 3.505 0 0 1 .262-1.282c.38-.986 1.229-2.007 2.09-2.891a272.66 272.66 0 0 1 2.472-2.436.884.884 0 0 0 .235-.43 4.425 4.425 0 0 0 .043-.591V0l-9.461 7.371a.857.857 0 0 0-.328.41.867.867 0 0 0-.313-.41L2.207 0zm.457.8c.384.3.93.747 1.666 1.315A22.338 22.338 0 0 1 6.543 4.11c1.166 1.203 2.06 2.51 2.06 3.805 0 1.294-.894 2.6-2.06 3.803a21.95 21.95 0 0 1-2.213 2.008c-.736.571-1.287 1.025-1.672 1.314-.033.026-.033-.056-.033-.101 0-.046 0-.116.023-.14.809-.722 3.99-3.158 4.926-5.478a3.44 3.44 0 0 0 0-2.806C6.651 4.194 3.47 1.76 2.648 1.035c-.023-.02-.023-.109-.023-.139 0-.03 0-.122.04-.095zm18.19.481c.023-.02.026.017.023.033a.256.256 0 0 1-.063.217 2.792 2.792 0 0 1-.25.223c-1.297 1.094-3.393 2.977-4.1 4.758a3.502 3.502 0 0 0 0 2.83 10.67 10.67 0 0 0 1.186 2.176c.214.285.31.407.448.601a.74.74 0 0 1 .125.344h-.028a1.314 1.314 0 0 1-.138-.115 10.304 10.304 0 0 1-.604-.59c-1.182-1.186-2.03-2.563-2.03-3.844 0-1.281.89-2.578 2.06-3.768a24.138 24.138 0 0 1 2.214-1.972c.3-.237.555-.44.801-.623l.356-.27zm-8.387 6.735h1.57c.598 0 .824.596 1.143 1.21a12.962 12.962 0 0 0 1.715 2.272.588.588 0 0 1 .119.281c.016.06 0 .079-.063.03-1.938-1.41-4.015-3.17-4.373-3.465-.108-.089-.358-.328-.111-.328zm-2.588.015H11.5c.246 0 .01.22-.102.313-.949.657-2.38 1.852-4.27 3.344-.035.026-.03-.085-.023-.118a.48.48 0 0 1 .057-.162 10.555 10.555 0 0 0 1.73-2.351c.33-.615.402-1.026.987-1.026zm4.934 2.727a.328.328 0 0 1 .177.07c.02.02.266.276.4.424.273.286.545.613.83.941 1.035 1.216 1.946 2.553 1.946 3.864 0 1.195-.847 2.376-1.97 3.486-.283.28-.802.772-1.475 1.363-.092.08-.162.135-.159.073.004-.063 0-.199.053-.245 1.143-1.126 2.28-2.374 2.69-3.373a3.45 3.45 0 0 0 .299-1.314 4.408 4.408 0 0 0-.247-1.432c-.377-1.074-1.21-2.24-2.078-3.252a34.12 34.12 0 0 1-.466-.552c-.024-.033-.024-.056 0-.053zm4.607 5.4h1.844c.279 0 .01.263-.116.352-1.077.759-2.686 2.072-4.841 3.777-.06.046-.05-.092-.047-.135a.299.299 0 0 1 .037-.14 12.19 12.19 0 0 0 1.986-2.694c.365-.696.457-1.16 1.137-1.16z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/dtube.svg b/assets/lib/simple-icons/icons/dtube.svg
index 4258e52c..bf1e86f9 100644
--- a/assets/lib/simple-icons/icons/dtube.svg
+++ b/assets/lib/simple-icons/icons/dtube.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>DTube icon</title><path d="M22.6 5.5a9.91 9.91 0 0 0-3.88-4.04A11.18 11.18 0 0 0 13.08.04H.18l6.91 4h5.99c1.94 0 3.41.62 4.42 1.88C18.5 7.17 19 9 19 11.43v1.27c-.01 2.34-.53 4.14-1.55 5.4-1.02 1.26-2.5 1.89-4.42 1.89H6.86L0 23.95h13.13c2.09 0 3.97-.49 5.63-1.44 1.66-.95 2.95-2.3 3.87-4.02S24 14.79 24 12.56v-1.1c0-2.22-.47-4.2-1.4-5.96zM.13 3.96v16.1L14.07 12z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>DTube</title><path d="M0 1.6416v20.7168h8.5156c1.3133 0 2.4886-.1588 3.5371-.4766 1.038-.3177 1.9716-.7833 2.7871-1.4082 1.1545-.8896 2.0431-2.0456 2.668-3.4648.6143-1.4192.9316-3.0486.9316-4.8809-.0105-1.578-.243-3.0203-.709-4.3125-.466-1.2921-1.1116-2.3919-1.959-3.3027-.8366-.9109-1.8536-1.6108-3.0292-2.1191-1.1757-.4979-2.4784-.752-3.9082-.752zm5.2012 5.709l8.039 4.6601-8.039 4.6485zm15.9922 9.162c-1.4934 0-2.711 1.2177-2.711 2.711 0 1.4934 1.2176 2.711 2.711 2.711h.0957c1.4933 0 2.7109-1.2176 2.7109-2.711 0-1.4933-1.2176-2.711-2.711-2.711z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/duckduckgo.svg b/assets/lib/simple-icons/icons/duckduckgo.svg
index e0f1f11d..2f466f49 100644
--- a/assets/lib/simple-icons/icons/duckduckgo.svg
+++ b/assets/lib/simple-icons/icons/duckduckgo.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>DuckDuckGo icon</title><path d="M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0zm0 23C5.925 23 1 18.074 1 12S5.926 1 12 1s11 4.925 11 11-4.925 11-11 11zm10.219-11c0 4.805-3.317 8.833-7.786 9.925-.27-.521-.53-1.017-.749-1.438.645.249 1.93.718 2.208.615.376-.144.282-3.149-.14-3.245-.338-.075-1.632.837-2.141 1.209l.034.156c.078.397.144.993.03 1.247-.001.004-.002.01-.004.013a.218.218 0 0 1-.068.088c-.284.188-1.081.284-1.503.188a.516.516 0 0 1-.064-.02c-.694.396-2.01 1.109-2.25.971-.329-.188-.377-2.676-.329-3.288.035-.46 1.653.286 2.442.679.174-.163.602-.272.98-.31-.57-1.389-.99-2.977-.733-4.105 0 .002.002.002.002.002.356.248 2.73 1.05 3.91 1.027 1.18-.024 3.114-.743 2.903-1.323-.212-.58-2.135.51-4.142.324-1.486-.138-1.748-.804-1.42-1.29.414-.611 1.168.116 2.411-.256 1.245-.371 2.987-1.035 3.632-1.397 1.494-.833-.625-1.177-1.125-.947-.474.22-2.123.637-2.889.82.428-1.516-.603-4.149-1.757-5.3-.376-.376-.951-.612-1.603-.736-.25-.344-.654-.671-1.225-.977a5.772 5.772 0 0 0-3.595-.584l-.024.004-.034.004.004.002c-.148.028-.237.08-.357.098.148.016.705.276 1.057.418-.174.068-.412.108-.596.184a.828.828 0 0 0-.204.056c-.173.08-.303.375-.3.515.84-.086 2.082-.026 2.991.246-.644.09-1.235.258-1.661.482-.016.008-.03.018-.048.028-.054.02-.106.042-.152.066-1.367.72-1.971 2.405-1.611 4.424.323 1.824 1.665 8.088 2.29 11.064-3.973-1.4-6.822-5.186-6.822-9.639C1.781 6.356 6.356 1.781 12 1.781S22.219 6.356 22.219 12zM9.095 9.581a.758.758 0 1 0 0 1.516.758.758 0 0 0 0-1.516zm.338.702a.196.196 0 1 1 0-.392.196.196 0 0 1 0 .392zm4.724-1.043a.65.65 0 1 0 0 1.299.65.65 0 0 0 0-1.3zm.29.601a.168.168 0 1 1 0-.336.168.168 0 0 1 0 .336zM9.313 8.146s-.571-.26-1.125.09c-.554.348-.534.704-.534.704s-.294-.656.49-.978c.786-.32 1.17.184 1.17.184zm5.236-.052s-.41-.234-.73-.23c-.654.008-.831.296-.831.296s.11-.688.945-.55a.84.84 0 0 1 .616.484z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>DuckDuckGo</title><path d="M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0zm0 23C5.925 23 1 18.074 1 12S5.926 1 12 1s11 4.925 11 11-4.925 11-11 11zm10.219-11c0 4.805-3.317 8.833-7.786 9.925-.27-.521-.53-1.017-.749-1.438.645.249 1.93.718 2.208.615.376-.144.282-3.149-.14-3.245-.338-.075-1.632.837-2.141 1.209l.034.156c.078.397.144.993.03 1.247-.001.004-.002.01-.004.013a.218.218 0 0 1-.068.088c-.284.188-1.081.284-1.503.188a.516.516 0 0 1-.064-.02c-.694.396-2.01 1.109-2.25.971-.329-.188-.377-2.676-.329-3.288.035-.46 1.653.286 2.442.679.174-.163.602-.272.98-.31-.57-1.389-.99-2.977-.733-4.105 0 .002.002.002.002.002.356.248 2.73 1.05 3.91 1.027 1.18-.024 3.114-.743 2.903-1.323-.212-.58-2.135.51-4.142.324-1.486-.138-1.748-.804-1.42-1.29.414-.611 1.168.116 2.411-.256 1.245-.371 2.987-1.035 3.632-1.397 1.494-.833-.625-1.177-1.125-.947-.474.22-2.123.637-2.889.82.428-1.516-.603-4.149-1.757-5.3-.376-.376-.951-.612-1.603-.736-.25-.344-.654-.671-1.225-.977a5.772 5.772 0 0 0-3.595-.584l-.024.004-.034.004.004.002c-.148.028-.237.08-.357.098.148.016.705.276 1.057.418-.174.068-.412.108-.596.184a.828.828 0 0 0-.204.056c-.173.08-.303.375-.3.515.84-.086 2.082-.026 2.991.246-.644.09-1.235.258-1.661.482-.016.008-.03.018-.048.028-.054.02-.106.042-.152.066-1.367.72-1.971 2.405-1.611 4.424.323 1.824 1.665 8.088 2.29 11.064-3.973-1.4-6.822-5.186-6.822-9.639C1.781 6.356 6.356 1.781 12 1.781S22.219 6.356 22.219 12zM9.095 9.581a.758.758 0 1 0 0 1.516.758.758 0 0 0 0-1.516zm.338.702a.196.196 0 1 1 0-.392.196.196 0 0 1 0 .392zm4.724-1.043a.65.65 0 1 0 0 1.299.65.65 0 0 0 0-1.3zm.29.601a.168.168 0 1 1 0-.336.168.168 0 0 1 0 .336zM9.313 8.146s-.571-.26-1.125.09c-.554.348-.534.704-.534.704s-.294-.656.49-.978c.786-.32 1.17.184 1.17.184zm5.236-.052s-.41-.234-.73-.23c-.654.008-.831.296-.831.296s.11-.688.945-.55a.84.84 0 0 1 .616.484z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/dungeonsanddragons.svg b/assets/lib/simple-icons/icons/dungeonsanddragons.svg
new file mode 100644
index 00000000..d4c0f2d6
--- /dev/null
+++ b/assets/lib/simple-icons/icons/dungeonsanddragons.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Dungeons &amp; Dragons</title><path d="M3.921 2.217C4.859 1.297 6.122.742 7.988.838c2.944.152 4.358 2.096 4.358 4.193 0 1.011-.536 2.363-1.276 3.323-.045-.044-.083-.087-.13-.131a21.28 21.28 0 00-.49-.436c-.484-.421-1.03-.905-1.397-1.426.807-1.413.346-3.414-1.359-3.414-.998 0-1.83.88-1.759 2.047-.26.552-.387 1.352-.337 2.062-.489-.295-.901-.618-1.095-1.067l-.626-1.445-.493 1.492a2.515 2.515 0 00-.088 1.135l-.01-.001a3.27 3.27 0 01-.555-1.57c-.18-1.908.764-2.964 1.19-3.383zm-.45 6.824c.114-.434-.778-1.173-1.11-1.311 1.224-.047 1.833.175 1.833.175-.32-.454-.423-1.146-.242-1.695.667 1.539 3.052 1.786 3.642 3.062-.084-.55-.625-1.169-1.253-1.53-.337-.838-.085-2.383.327-2.808-.145 2.22 3.149 3.49 3.832 5.105-.4-1.383-1.936-2.258-2.664-3.086-.24-.55-.056-1.48.205-1.799-.077 1.488 1.592 2.648 2.483 3.48 1.051.979 1.349 1.845 1.207 2.553.23.058.547.273.493.638.336-.075.677-.445.76-.673.165 1.104-.51 2.273-1.266 2.621 0 0 .203-.527-.141-.93-.34-.398-1.305-.403-1.631-.38 0 0 .4-.57.242-.86-.2-.357-2.087-.2-2.93.094.287-.03.967.044 1.205.14-.132.189-.478.989-.23 1.229.23.22.53-.162.53-.162s-.294.875-.082 1.078c.21.203.662.059.662.059-.281.687-1.379 1.16-2.146 1.16.274-.084.725-.553.795-.836-.2.097-.726.153-.928.117.248-.097.746-.712.592-1.405-.229-1.009-1.69-1.137-2.425-.649.238-.678.95-1.312 1.507-1.52a7.523 7.523 0 00-1.117-.273c.468-.369 1.642-.67 2.241-.639-.914-.225-2.586.057-3.352.927.245 0 .875.114 1.118.19-1.048.182-2.478 1.122-2.898 1.566.11-.584.28-1.08.136-1.43-.202-.497-.826-.704-2.07-.457.84-.809 2.56-1.31 2.676-1.751zm5.724.783c.166.563.39 1.08 1.097 1.08 0 0-.248-.779-1.097-1.08zm10.479 6.203c.533.088 1.282.635 1.282 1.417 0 1.275-1.652 1.667-2.566 1.469.97-.648.84-2.512-.326-3.178.395 1.045-.79 2.082-1.942 1.172-.641-.506-2.123-1.694-2.785-2.206-.66-.511-1.434-.214-1.74-.437-.348-.254-.125-.97-.6-1.236-.399-.222-.79-.098-1.253-.246-.42-.133-.733-.448-.68-.872-.178.303-.19.83.129 1.186.316.352.844.57 1.062.957.282.5-.193 1.196 1.062 2.143.6.452 1.53 1.195 2.137 1.707 1.021.862.476 1.94.61 2.879.155 1.096 1.072 1.704 1.682 1.858-.526-.46-.725-1.62.014-2.33.038.916.725 2.35 2.292 2.753 1.667.427 3.439-.482 3.807-1.122-.643.28-1.854-.022-2.353-.472 1.956.267 3.686-1.038 3.686-2.712 0-1.633-1.645-2.898-3.518-2.73zm-8.5.793c-.667 1.1-2.088 2.531-3.529 2.531-2.651 0-3.98-3.61-1.007-6.564a1.435 1.435 0 00-.4-.06c-.255 0-.504.064-.668.174l-1.168.776.264-1.432a2.14 2.14 0 01.093-.225c-.675.322-1.339.782-1.588 1.045L2.02 14.28l.122-1.703c.025-.133.054-.262.08-.385.06-.275.135-.618.089-.732a.214.214 0 00-.083-.091C1.68 11.775.177 13.055 0 14.936c0 0 .291-.395.544-.487.167-.062.313.017.153.487-.061.184-1.51 3.96 1.34 6.57 0 0-.312-.768-.124-1 .092-.114.212-.123.376.08.123.156.251.306.438.51.187.205.447.447.729.657.853.575 2.011 1.037 3.329 1.037 3.526 0 5.395-2.34 6.43-4.305a1.551 1.551 0 00-.155-.15 57.001 57.001 0 00-1.887-1.515zm1.91-2.884c.208.067.42.158.627.319.244.188.603.471.987.776.306-.65 1.009-2.003 2.097-3.204.98-1.08 2.69-1.184 3.588-.526.577-.502 2.569-.974 3.617-.687-.639-.668-1.996-1.564-3.496-1.564-1.237 0-1.936.583-2.113.32-.228-.336.837-.833.837-.833-1.46.058-2.523 1.711-2.966 1.505-.262-.12.395-.92.395-.92-1.336.746-2.455 2.328-2.688 3.291 1.229-1.448 3.614-2.486 5.166-2.267-2.629.122-4.891 2.276-6.05 3.79Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/dunked.svg b/assets/lib/simple-icons/icons/dunked.svg
index 74e30431..569f536b 100644
--- a/assets/lib/simple-icons/icons/dunked.svg
+++ b/assets/lib/simple-icons/icons/dunked.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Dunked icon</title><path d="M13.791 0V19.766a4.18 4.18 0 004.182 4.12h4.18V4.122A4.18 4.18 0 0017.972 0H13.79zM6.326 14.93a4.479 4.479 0 00-4.478 4.37v.221a4.479 4.479 0 008.957 0v-.214a4.479 4.479 0 00-4.479-4.377Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Dunked</title><path d="M13.799 0v19.8599A4.2002 4.2002 0 0018.0003 24h4.2002V4.1411A4.2002 4.2002 0 0017.9992 0H13.798zM6.2983 15.0014a4.5008 4.5008 0 00-4.4988 4.3906v.2224a4.5008 4.5008 0 008.9986 0v-.2154a4.5008 4.5008 0 00-4.4998-4.3986z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/duolingo.svg b/assets/lib/simple-icons/icons/duolingo.svg
index e0caad6b..dc0a8173 100644
--- a/assets/lib/simple-icons/icons/duolingo.svg
+++ b/assets/lib/simple-icons/icons/duolingo.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Duolingo icon</title><path d="M7.2 2.869a2.458 2.458 0 00-2.45 2.455v3.117l-3.672-.913h-.002a.864.864 0 00-.242-.026.864.864 0 00-.832.919 6.573 6.573 0 004.886 5.87A7.286 7.286 0 0012 20.18a7.286 7.286 0 007.106-5.888 6.573 6.573 0 004.892-5.871.864.864 0 00-.831-.92.864.864 0 00-.245.027l-3.673.913V5.324a2.458 2.458 0 00-2.45-2.455 2.845 2.845 0 00-.96.192c-1.87.797-3.114 1.188-3.831 1.2-.717-.012-1.962-.403-3.832-1.2a2.845 2.845 0 00-.975-.192zm8.135 1.408a.19.19 0 01.036 0c.065.008.127.05.176.127a1.95 1.95 0 01.07.143 1.95 1.95 0 01.037.088 1.95 1.95 0 01.035.092 1.95 1.95 0 01.029.094 1.95 1.95 0 01.025.093 1.95 1.95 0 01.019.096 1.95 1.95 0 01.015.097 1.95 1.95 0 01.01.093 1.95 1.95 0 01.005.102 1.95 1.95 0 010 .157 2.723 2.723 0 01.007 0l.473-.526a.248.248 0 01.01-.01.248.248 0 01.01-.009.248.248 0 01.012-.01.248.248 0 01.007-.006.248.248 0 01.012-.008.248.248 0 01.009-.006.248.248 0 01.011-.006.248.248 0 01.01-.005.248.248 0 01.011-.005.248.248 0 01.013-.005.248.248 0 01.01-.003.248.248 0 01.013-.004.248.248 0 01.013-.003.248.248 0 01.011-.002.248.248 0 01.016-.002.248.248 0 01.007 0 .248.248 0 01.02 0 .248.248 0 01.005 0 .248.248 0 01.017.002.248.248 0 01.01 0 .248.248 0 01.011.003.248.248 0 01.013.003.248.248 0 01.013.004.248.248 0 01.01.003.248.248 0 01.011.005.248.248 0 01.013.006.248.248 0 01.001 0 .248.248 0 01.004.002.248.248 0 01.016.01.248.248 0 01.008.004.248.248 0 01.012.008.248.248 0 01.01.01.248.248 0 01.007.005.248.248 0 01.011.011.248.248 0 01.007.008.248.248 0 01.006.007.248.248 0 01.01.014.248.248 0 01.003.005.248.248 0 01.01.017 1.95 1.95 0 01.06.121 1.95 1.95 0 01.04.088 1.95 1.95 0 01.035.094 1.95 1.95 0 01.03.088 1.95 1.95 0 01.025.097 1.95 1.95 0 01.021.094 1.95 1.95 0 01.016.098 1.95 1.95 0 01.016.132 2.723 2.723 0 01.192.119 2.723 2.723 0 01.11.079 2.723 2.723 0 01.11.083 2.723 2.723 0 01.1.088 2.723 2.723 0 01.101.095 2.723 2.723 0 01.092.098 2.723 2.723 0 01.09.103 2.723 2.723 0 01.082.108 2.723 2.723 0 01.08.112 2.723 2.723 0 01.07.114 2.723 2.723 0 01.068.12 2.723 2.723 0 01.059.122 2.723 2.723 0 01.054.123 2.723 2.723 0 01.048.131 2.723 2.723 0 01.042.126 2.723 2.723 0 01.034.135 2.723 2.723 0 01.03.13 2.723 2.723 0 01.02.135 2.723 2.723 0 01.016.136 2.723 2.723 0 01.011.225v1.758a2.715 2.715 0 01-.011.237 2.715 2.715 0 01-.017.132 2.715 2.715 0 01-.02.135 2.715 2.715 0 01-.03.136 2.715 2.715 0 01-.033.127 2.715 2.715 0 01-.044.134 2.715 2.715 0 01-.045.123 2.715 2.715 0 01-.057.126 2.715 2.715 0 01-.058.12 2.715 2.715 0 01-.068.118 2.715 2.715 0 01-.07.116 2.715 2.715 0 01-.078.109 2.715 2.715 0 01-.084.11 2.715 2.715 0 01-.09.102 2.715 2.715 0 01-.09.097 2.715 2.715 0 01-.104.096 2.715 2.715 0 01-.098.087 2.715 2.715 0 01-.107.081 2.715 2.715 0 01-.113.081 2.715 2.715 0 01-.113.07 2.715 2.715 0 01-.12.068 2.715 2.715 0 01-.119.057 2.715 2.715 0 01-.127.058 2.715 2.715 0 01-.123.045 2.715 2.715 0 01-.133.044 2.715 2.715 0 01-.132.033 2.715 2.715 0 01-.13.03 2.715 2.715 0 01-.14.02 2.715 2.715 0 01-.129.017 2.715 2.715 0 01-.237.011h-.21a2.714 2.714 0 01-.244-.012 2.714 2.714 0 01-.134-.017 2.714 2.714 0 01-.133-.02 2.714 2.714 0 01-.136-.032 2.714 2.714 0 01-.127-.032 2.714 2.714 0 01-.131-.045 2.714 2.714 0 01-.126-.046 2.714 2.714 0 01-.124-.056 2.714 2.714 0 01-.121-.059 2.714 2.714 0 01-.118-.068 2.714 2.714 0 01-.116-.071 2.714 2.714 0 01-.107-.079 2.714 2.714 0 01-.11-.083 2.714 2.714 0 01-.102-.09 2.714 2.714 0 01-.098-.092 2.714 2.714 0 01-.094-.102 2.714 2.714 0 01-.088-.1 2.714 2.714 0 01-.081-.109 2.714 2.714 0 01-.08-.11 2.714 2.714 0 01-.068-.115 2.714 2.714 0 01-.028-.048v.98a1.032 1.032 0 01-.004.073 1.032 1.032 0 01-.004.05 1.032 1.032 0 01-.008.054 1.032 1.032 0 010 .002 1.032 1.032 0 01-.009.042 1.032 1.032 0 01-.016.063 1.032 1.032 0 01-.01.034 1.032 1.032 0 01-.024.065 1.032 1.032 0 01-.012.031 1.032 1.032 0 01-.033.067 1.032 1.032 0 01-.018.034 1.032 1.032 0 01-.025.04 1.032 1.032 0 01-.032.047 1.032 1.032 0 01-.028.037 1.032 1.032 0 01-.034.042 1.032 1.032 0 01-.035.038 1.032 1.032 0 01-.037.036 1.032 1.032 0 01-.04.034 1.032 1.032 0 01-.038.031 1.032 1.032 0 01-.044.032 1.032 1.032 0 01-.041.027 1.032 1.032 0 01-.046.026 1.032 1.032 0 01-.045.024 1.032 1.032 0 01-.047.02 1.032 1.032 0 01-.05.02 1.032 1.032 0 01-.047.016 1.032 1.032 0 01-.049.014 1.032 1.032 0 01-.052.012 1.032 1.032 0 01-.05.009 1.032 1.032 0 01-.052.006 1.032 1.032 0 01-.049.004 1.032 1.032 0 01-.053 0 1.032 1.032 0 01-.052 0 1.032 1.032 0 01-.05-.004 1.032 1.032 0 01-.051-.006 1.032 1.032 0 01-.052-.01 1.032 1.032 0 01-.05-.011 1.032 1.032 0 01-.05-.014 1.032 1.032 0 01-.047-.016 1.032 1.032 0 01-.05-.02 1.032 1.032 0 01-.046-.02 1.032 1.032 0 01-.046-.024 1.032 1.032 0 01-.046-.026 1.032 1.032 0 01-.04-.027 1.032 1.032 0 01-.045-.032 1.032 1.032 0 01-.038-.031 1.032 1.032 0 01-.04-.034 1.032 1.032 0 01-.036-.036 1.032 1.032 0 01-.035-.038 1.032 1.032 0 01-.035-.042 1.032 1.032 0 01-.028-.037 1.032 1.032 0 01-.032-.047 1.032 1.032 0 01-.018-.03 1.032 1.032 0 01-.046-.087 1.032 1.032 0 01-.003-.006 1.032 1.032 0 01-.034-.084 1.032 1.032 0 01-.005-.015 1.032 1.032 0 01-.022-.073 1.032 1.032 0 01-.008-.032 1.032 1.032 0 01-.011-.06 1.032 1.032 0 01-.007-.043 1.032 1.032 0 01-.003-.034 1.032 1.032 0 01-.002-.02 1.032 1.032 0 010-.002 1.032 1.032 0 01-.003-.068v-.979a2.714 2.714 0 01-.026.046 2.714 2.714 0 01-.07.116 2.714 2.714 0 01-.077.107 2.714 2.714 0 01-.084.113 2.714 2.714 0 01-.086.097 2.714 2.714 0 01-.095.104 2.714 2.714 0 01-.1.092 2.714 2.714 0 01-.1.09 2.714 2.714 0 01-.11.083 2.714 2.714 0 01-.108.079 2.714 2.714 0 01-.114.07 2.714 2.714 0 01-.12.069 2.714 2.714 0 01-.12.058 2.714 2.714 0 01-.124.056 2.714 2.714 0 01-.129.047 2.714 2.714 0 01-.128.044 2.714 2.714 0 01-.127.032 2.714 2.714 0 01-.137.032 2.714 2.714 0 01-.13.02 2.714 2.714 0 01-.137.017 2.714 2.714 0 01-.245.012h-.21a2.715 2.715 0 01-.237-.012 2.715 2.715 0 01-.13-.016 2.715 2.715 0 01-.14-.02 2.715 2.715 0 01-.128-.03 2.715 2.715 0 01-.133-.033 2.715 2.715 0 01-.132-.044 2.715 2.715 0 01-.123-.045 2.715 2.715 0 01-.128-.058 2.715 2.715 0 01-.12-.057 2.715 2.715 0 01-.119-.069 2.715 2.715 0 01-.113-.069 2.715 2.715 0 01-.113-.08 2.715 2.715 0 01-.106-.082 2.715 2.715 0 01-.099-.087 2.715 2.715 0 01-.103-.096 2.715 2.715 0 01-.09-.097 2.715 2.715 0 01-.09-.102 2.715 2.715 0 01-.084-.11 2.715 2.715 0 01-.078-.109 2.715 2.715 0 01-.071-.116 2.715 2.715 0 01-.068-.118 2.715 2.715 0 01-.058-.12 2.715 2.715 0 01-.056-.126 2.715 2.715 0 01-.045-.124 2.715 2.715 0 01-.045-.133 2.715 2.715 0 01-.032-.127 2.715 2.715 0 01-.03-.136 2.715 2.715 0 01-.02-.135 2.715 2.715 0 01-.017-.132 2.715 2.715 0 01-.012-.238V8.17a2.723 2.723 0 01.012-.227 2.723 2.723 0 01.016-.135 2.723 2.723 0 01.02-.132 2.723 2.723 0 01.03-.136 2.723 2.723 0 01.035-.13 2.723 2.723 0 01.042-.129 2.723 2.723 0 01.047-.128 2.723 2.723 0 01.056-.126 2.723 2.723 0 01.058-.119 2.723 2.723 0 01.07-.123 2.723 2.723 0 01.069-.111 2.723 2.723 0 01.081-.114 2.723 2.723 0 01.08-.106 2.723 2.723 0 01.091-.103 2.723 2.723 0 01.093-.1 2.723 2.723 0 01.097-.09 2.723 2.723 0 01.106-.093 2.723 2.723 0 01.104-.08 2.723 2.723 0 01.114-.08 2.723 2.723 0 01.192-.119 1.95 1.95 0 01.016-.133 1.95 1.95 0 01.015-.094 1.95 1.95 0 01.021-.096 1.95 1.95 0 01.025-.093 1.95 1.95 0 01.03-.094 1.95 1.95 0 01.034-.091 1.95 1.95 0 01.04-.089 1.95 1.95 0 01.058-.118.248.248 0 01.01-.018.248.248 0 01.004-.005.248.248 0 01.01-.013.248.248 0 01.006-.007.248.248 0 01.007-.008.248.248 0 01.01-.011.248.248 0 01.007-.006.248.248 0 01.011-.009.248.248 0 01.012-.008.248.248 0 01.008-.005.248.248 0 01.016-.009.248.248 0 01.006-.003.248.248 0 01.013-.006.248.248 0 01.011-.005.248.248 0 01.01-.003.248.248 0 01.013-.004.248.248 0 01.013-.003.248.248 0 01.011-.002.248.248 0 01.01-.001.248.248 0 01.017-.002.248.248 0 01.006 0 .248.248 0 01.019 0 .248.248 0 01.007 0 .248.248 0 01.016.003.248.248 0 01.01.002.248.248 0 01.014.003.248.248 0 01.012.004.248.248 0 01.011.003.248.248 0 01.013.005.248.248 0 01.01.005.248.248 0 01.01.005.248.248 0 01.012.006.248.248 0 01.009.006.248.248 0 01.012.008.248.248 0 01.007.005.248.248 0 01.012.01.248.248 0 01.01.01.248.248 0 01.01.01v-.005l.471.523a2.723 2.723 0 01.01 0 1.95 1.95 0 01-.001-.155 1.95 1.95 0 01.006-.103 1.95 1.95 0 01.009-.093 1.95 1.95 0 01.015-.097 1.95 1.95 0 01.02-.095 1.95 1.95 0 01.024-.094 1.95 1.95 0 01.03-.094 1.95 1.95 0 01.034-.092 1.95 1.95 0 01.036-.087 1.95 1.95 0 01.07-.142c.085-.135.214-.163.32-.083.015.011.03.025.044.04l1.78 1.94v-.002a1.926 1.926 0 00.092.089 1.926 1.926 0 00.071.064 1.926 1.926 0 00.076.06 1.926 1.926 0 00.078.057 1.926 1.926 0 00.08.05 1.926 1.926 0 00.084.05 1.926 1.926 0 00.085.043 1.926 1.926 0 00.087.04 1.926 1.926 0 00.092.036 1.926 1.926 0 00.089.03 1.926 1.926 0 00.095.026 1.926 1.926 0 00.091.022 1.926 1.926 0 00.097.016 1.926 1.926 0 00.094.013 1.926 1.926 0 00.096.006 1.926 1.926 0 00.096.003 1.926 1.926 0 00.097-.003 1.926 1.926 0 00.096-.006 1.926 1.926 0 00.094-.013 1.926 1.926 0 00.097-.016 1.926 1.926 0 00.09-.022 1.926 1.926 0 00.096-.025 1.926 1.926 0 00.089-.031 1.926 1.926 0 00.092-.036 1.926 1.926 0 00.087-.04 1.926 1.926 0 00.085-.043 1.926 1.926 0 00.084-.05 1.926 1.926 0 00.08-.05 1.926 1.926 0 00.078-.058 1.926 1.926 0 00.075-.059 1.926 1.926 0 00.072-.064 1.926 1.926 0 00.092-.089V6.3l1.78-1.94a.294.294 0 01.044-.04.212.212 0 01.107-.044zm.02.168c-.813.742-1.419 1.714-2.325 2.358-.932.557-2.21.194-2.823-.67-.512-.56-1.007-1.17-1.563-1.667-.324.258-.164.745-.332 1.078-.208.206-.42-.181-.526-.316-.084-.17-.317-.283-.386-.048-.163.278-.04.74-.416.857-.919.59-1.277 1.757-1.149 2.792-.03.982-.066 2.116.698 2.859 1.106 1.18 3.29 1.048 4.174-.32.058-.14.145-.301.261-.42v-.42a1.048 1.048 0 010-.006l-.35-.059a.052.052 0 01-.042-.058 1.446 1.446 0 011.418-1.194 1.446 1.446 0 011.43 1.194.052.052 0 01-.043.058l-.35.06a1.03 1.03 0 010 .001v.38l.007.001c.584 1.534 2.728 2.067 4.017 1.128a2.694 2.694 0 001.106-2.535c.014-1.033.13-2.231-.653-3.042-.216-.27-.604-.399-.762-.697-.055-.25-.041-.588-.286-.736-.31.129-.381.556-.728.634-.2-.38-.055-.897-.377-1.213zM8.422 6.468a1.995 1.995 0 011.994 1.995v1.2a1.996 1.996 0 01-.245.913 27.203 27.203 0 00-.815-.328.95.95 0 00.035-.037.95.95 0 00.016-.018.95.95 0 00.048-.058.95.95 0 00.012-.017.95.95 0 00.04-.06.95.95 0 00.013-.02.95.95 0 00.032-.062.95.95 0 00.011-.022.95.95 0 00.024-.06.95.95 0 00.012-.031.95.95 0 00.017-.058.95.95 0 00.009-.033.95.95 0 00.01-.054.95.95 0 00.007-.043.95.95 0 00.007-.082V8.56a.95.95 0 00-.004-.08.95.95 0 00-.005-.047.95.95 0 00-.007-.047.95.95 0 00-.01-.047.95.95 0 00-.012-.045.95.95 0 00-.016-.047.95.95 0 00-.015-.042.95.95 0 00-.02-.047.95.95 0 00-.02-.04.95.95 0 00-.025-.042.95.95 0 00-.024-.04A.95.95 0 009.464 8a.95.95 0 00-.03-.039.95.95 0 00-.03-.034.95.95 0 00-.033-.036.95.95 0 00-.035-.032.95.95 0 00-.035-.031.95.95 0 00-.038-.029.95.95 0 00-.039-.028.95.95 0 00-.04-.025.95.95 0 00-.04-.023.95.95 0 00-.043-.02.95.95 0 00-.046-.02.95.95 0 00-.043-.017.95.95 0 00-.043-.014.95.95 0 00-.049-.012.95.95 0 00-.046-.01.95.95 0 00-.045-.008.95.95 0 00-.048-.006.95.95 0 00-.08-.004.96.96 0 00-.06.004.96.96 0 00-.05.005.96.96 0 00-.043.007.96.96 0 00-.051.01.96.96 0 00-.045.012.96.96 0 00-.047.014.96.96 0 00-.046.018.96.96 0 00-.055.023.6.6 0 01.04.04.6.6 0 01.022.024.6.6 0 01.017.02.6.6 0 01.018.025.6.6 0 01.017.026.6.6 0 01.013.023.6.6 0 01.016.028.6.6 0 01.011.026.6.6 0 01.013.03.6.6 0 01.008.025.6.6 0 01.01.031.6.6 0 01.007.03.6.6 0 01.006.029.6.6 0 01.004.037.6.6 0 01.002.021.6.6 0 010 .041.6.6 0 010 .02.6.6 0 01-.002.03.6.6 0 01-.003.031.6.6 0 01-.004.024.6.6 0 01-.007.034.6.6 0 01-.008.028.6.6 0 01-.01.03.6.6 0 01-.012.03.6.6 0 01-.01.024.6.6 0 01-.016.03.6.6 0 01-.013.024.6.6 0 01-.02.03.6.6 0 01-.012.018.6.6 0 01-.026.032.6.6 0 01-.013.015.6.6 0 01-.02.02.6.6 0 01-.024.024.6.6 0 01-.02.015.6.6 0 01-.025.021.6.6 0 01-.027.018.6.6 0 01-.024.015.6.6 0 01-.023.012.6.6 0 01-.03.016.6.6 0 01-.034.013.6.6 0 01-.02.008.6.6 0 01-.038.011.6.6 0 01-.02.006.6.6 0 01-.034.006.6.6 0 01-.026.005.6.6 0 01-.04.003.6.6 0 01-.018.002.6.6 0 01-.035 0 .6.6 0 01-.028 0 .6.6 0 01-.031-.005.6.6 0 01-.026-.003.6.6 0 01-.056-.012v.859a.95.95 0 00.004.048.95.95 0 00.007.062 15.08 15.08 0 00-1.336-.332v-.908a1.987 1.987 0 011.996-1.995zm7.156 0a1.995 1.995 0 011.996 1.995v.909c-.425.085-.87.195-1.336.333a.95.95 0 00.007-.066.95.95 0 00.004-.046V8.56a.95.95 0 00-.004-.081.95.95 0 00-.006-.046.95.95 0 00-.007-.047.95.95 0 00-.01-.046.95.95 0 00-.012-.048.95.95 0 00-.014-.041.95.95 0 00-.018-.048.95.95 0 00-.019-.043.95.95 0 00-.02-.042.95.95 0 00-.024-.04.95.95 0 00-.025-.042.95.95 0 00-.028-.039.95.95 0 00-.028-.036.95.95 0 00-.032-.037.95.95 0 00-.032-.035.95.95 0 00-.036-.033.95.95 0 00-.033-.03.95.95 0 00-.04-.03.95.95 0 00-.037-.026.95.95 0 00-.042-.026.95.95 0 00-.04-.023.95.95 0 00-.042-.02.95.95 0 00-.046-.02.95.95 0 00-.04-.016.95.95 0 00-.048-.015.95.95 0 00-.046-.012.95.95 0 00-.047-.01.95.95 0 00-.047-.007.95.95 0 00-.045-.006.95.95 0 00-.081-.004.96.96 0 00-.057.004.96.96 0 00-.045.004.96.96 0 00-.052.008.96.96 0 00-.044.008.96.96 0 00-.046.012.96.96 0 00-.047.014.96.96 0 00-.043.016.96.96 0 00-.045.018.96.96 0 00-.045.023.96.96 0 00-.048.024.6.6 0 01.04.045.6.6 0 01.033.05.6.6 0 01.03.052.6.6 0 01.024.055.6.6 0 01.018.057.6.6 0 01.005.025.6.6 0 01.007.034.6.6 0 01.005.042.6.6 0 01.002.017.6.6 0 010 .001.6.6 0 010 .06.6.6 0 01-.005.06.6.6 0 01-.004.022.6.6 0 01-.007.036.6.6 0 01-.017.057.6.6 0 010 .001.6.6 0 01-.023.055.6.6 0 01-.028.053.6.6 0 01-.033.05.6.6 0 01-.039.046.6.6 0 01-.042.042.6.6 0 01-.046.038.6.6 0 01-.05.033.6.6 0 01-.001 0 .6.6 0 01-.053.027.6.6 0 01-.055.023.6.6 0 01-.058.016.6.6 0 01-.032.006.6.6 0 01-.087.01.6.6 0 01-.06 0v.838a.95.95 0 00.007.084.95.95 0 00.007.042.95.95 0 00.01.054.95.95 0 00.01.032.95.95 0 00.016.06.95.95 0 00.011.029.95.95 0 00.025.06.95.95 0 00.01.022.95.95 0 00.034.063.95.95 0 00.011.018.95.95 0 00.041.063.95.95 0 00.01.012.95.95 0 00.052.063.95.95 0 00.008.008.95.95 0 00.043.046c-.268.103-.54.213-.815.33a1.996 1.996 0 01-.247-.916v-1.2a1.986 1.986 0 011.995-1.995zM12.035 9.32c-.038 0-.077 0-.115.003a1.35 1.35 0 00-1.224 1.042l1.301.198.688-.108.603-.138c-.13-.565-.68-.983-1.253-.997zm.86 1.184c-.084-.005-.009.142-.024.214.01.453.025.912-.024 1.362-.143.554-.892.836-1.35.477-.337-.235-.425-.684-.371-1.068-.001-.32-.02-.641.014-.96-.161-.086-.06.106-.086.194.01.609-.049 1.226.045 1.829.186.598 1.027.855 1.5.43.31-.25.399-.685.35-1.067-.004-.466.012-.933-.009-1.399a.142.142 0 00-.046-.012zm-.144.046a.399.399 0 00-.066.013 1.568 1.568 0 01-.112.036l-.03.008a1.3 1.3 0 01-.085.02l-.028.006a1.681 1.681 0 01-.27.03l-.035.002a3.33 3.33 0 01-.148 0h-.016a2.6 2.6 0 01-.171-.013c-.006 0-.012 0-.017-.002a5.958 5.958 0 01-.279-.038l-.072-.01-.182-.033a.794.754 0 00-.035.223v1.087a.803.763 0 00.795.755.794.754 0 00.794-.755V10.79a.795.755 0 00-.043-.243zm.04 1.367a.794.794 0 01-.005.035.794.794 0 00.004-.035zm-.013.082a.794.794 0 01-.007.03.794.794 0 00.007-.03zm-.02.075a.794.794 0 01-.01.03.794.794 0 00.01-.03zm-.028.079a.794.794 0 01-.01.022.794.794 0 00.01-.022zm-.035.071a.794.794 0 01-.012.02.794.794 0 00.012-.02zm-.044.07a.794.794 0 01-.01.014.794.794 0 00.01-.014zm-.05.064a.794.794 0 01-.01.01.794.794 0 00.01-.01zm-.053.056a.794.794 0 01-.006.006.794.794 0 00.006-.006zm-3.066 2.62a.132.132 0 01.014 0h1.823a.14.14 0 01.14.181c-.14.42-.573.709-1.056.712a1.085 1.085 0 01-1.047-.712.132.132 0 01.126-.182zm3.203 0a.144.144 0 01.005 0h1.824a.14.14 0 01.14.179c-.14.418-.572.71-1.06.71a1.085 1.085 0 01-1.043-.708.144.144 0 01.134-.18zm-1.6 1.548a.14.14 0 01.005 0h1.824a.14.14 0 01.139.182c-.135.423-.568.711-1.056.711a1.085 1.085 0 01-1.046-.711.14.14 0 01.135-.182zM4.45 18.236a.931.931 0 00-.66.299v-.002a.944.944 0 00.041 1.325l1.088 1.02a.938.938 0 001.284-1.367l-1.088-1.019a.931.931 0 00-.665-.256zm15.115 0a.931.931 0 00-.678.256l-1.089 1.019a.938.938 0 001.285 1.368l1.087-1.019a.944.944 0 00.042-1.325.931.931 0 00-.647-.299z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Duolingo</title><path d="M7.2 2.869a2.458 2.458 0 00-2.45 2.455v3.117l-3.672-.913h-.002a.864.864 0 00-.242-.026.864.864 0 00-.832.919 6.573 6.573 0 004.886 5.87A7.286 7.286 0 0012 20.18a7.286 7.286 0 007.106-5.888 6.573 6.573 0 004.892-5.871.864.864 0 00-.831-.92.864.864 0 00-.245.027l-3.673.913V5.324a2.458 2.458 0 00-2.45-2.455 2.845 2.845 0 00-.96.192c-1.87.797-3.114 1.188-3.831 1.2-.717-.012-1.962-.403-3.832-1.2a2.845 2.845 0 00-.975-.192zm8.135 1.408a.19.19 0 01.036 0c.065.008.127.05.176.127a1.95 1.95 0 01.07.143 1.95 1.95 0 01.037.088 1.95 1.95 0 01.035.092 1.95 1.95 0 01.029.094 1.95 1.95 0 01.025.093 1.95 1.95 0 01.019.096 1.95 1.95 0 01.015.097 1.95 1.95 0 01.01.093 1.95 1.95 0 01.005.102 1.95 1.95 0 010 .157 2.723 2.723 0 01.007 0l.473-.526a.248.248 0 01.01-.01.248.248 0 01.01-.009.248.248 0 01.012-.01.248.248 0 01.007-.006.248.248 0 01.012-.008.248.248 0 01.009-.006.248.248 0 01.011-.006.248.248 0 01.01-.005.248.248 0 01.011-.005.248.248 0 01.013-.005.248.248 0 01.01-.003.248.248 0 01.013-.004.248.248 0 01.013-.003.248.248 0 01.011-.002.248.248 0 01.016-.002.248.248 0 01.007 0 .248.248 0 01.02 0 .248.248 0 01.005 0 .248.248 0 01.017.002.248.248 0 01.01 0 .248.248 0 01.011.003.248.248 0 01.013.003.248.248 0 01.013.004.248.248 0 01.01.003.248.248 0 01.011.005.248.248 0 01.013.006.248.248 0 01.001 0 .248.248 0 01.004.002.248.248 0 01.016.01.248.248 0 01.008.004.248.248 0 01.012.008.248.248 0 01.01.01.248.248 0 01.007.005.248.248 0 01.011.011.248.248 0 01.007.008.248.248 0 01.006.007.248.248 0 01.01.014.248.248 0 01.003.005.248.248 0 01.01.017 1.95 1.95 0 01.06.121 1.95 1.95 0 01.04.088 1.95 1.95 0 01.035.094 1.95 1.95 0 01.03.088 1.95 1.95 0 01.025.097 1.95 1.95 0 01.021.094 1.95 1.95 0 01.016.098 1.95 1.95 0 01.016.132 2.723 2.723 0 01.192.119 2.723 2.723 0 01.11.079 2.723 2.723 0 01.11.083 2.723 2.723 0 01.1.088 2.723 2.723 0 01.101.095 2.723 2.723 0 01.092.098 2.723 2.723 0 01.09.103 2.723 2.723 0 01.082.108 2.723 2.723 0 01.08.112 2.723 2.723 0 01.07.114 2.723 2.723 0 01.068.12 2.723 2.723 0 01.059.122 2.723 2.723 0 01.054.123 2.723 2.723 0 01.048.131 2.723 2.723 0 01.042.126 2.723 2.723 0 01.034.135 2.723 2.723 0 01.03.13 2.723 2.723 0 01.02.135 2.723 2.723 0 01.016.136 2.723 2.723 0 01.011.225v1.758a2.715 2.715 0 01-.011.237 2.715 2.715 0 01-.017.132 2.715 2.715 0 01-.02.135 2.715 2.715 0 01-.03.136 2.715 2.715 0 01-.033.127 2.715 2.715 0 01-.044.134 2.715 2.715 0 01-.045.123 2.715 2.715 0 01-.057.126 2.715 2.715 0 01-.058.12 2.715 2.715 0 01-.068.118 2.715 2.715 0 01-.07.116 2.715 2.715 0 01-.078.109 2.715 2.715 0 01-.084.11 2.715 2.715 0 01-.09.102 2.715 2.715 0 01-.09.097 2.715 2.715 0 01-.104.096 2.715 2.715 0 01-.098.087 2.715 2.715 0 01-.107.081 2.715 2.715 0 01-.113.081 2.715 2.715 0 01-.113.07 2.715 2.715 0 01-.12.068 2.715 2.715 0 01-.119.057 2.715 2.715 0 01-.127.058 2.715 2.715 0 01-.123.045 2.715 2.715 0 01-.133.044 2.715 2.715 0 01-.132.033 2.715 2.715 0 01-.13.03 2.715 2.715 0 01-.14.02 2.715 2.715 0 01-.129.017 2.715 2.715 0 01-.237.011h-.21a2.714 2.714 0 01-.244-.012 2.714 2.714 0 01-.134-.017 2.714 2.714 0 01-.133-.02 2.714 2.714 0 01-.136-.032 2.714 2.714 0 01-.127-.032 2.714 2.714 0 01-.131-.045 2.714 2.714 0 01-.126-.046 2.714 2.714 0 01-.124-.056 2.714 2.714 0 01-.121-.059 2.714 2.714 0 01-.118-.068 2.714 2.714 0 01-.116-.071 2.714 2.714 0 01-.107-.079 2.714 2.714 0 01-.11-.083 2.714 2.714 0 01-.102-.09 2.714 2.714 0 01-.098-.092 2.714 2.714 0 01-.094-.102 2.714 2.714 0 01-.088-.1 2.714 2.714 0 01-.081-.109 2.714 2.714 0 01-.08-.11 2.714 2.714 0 01-.068-.115 2.714 2.714 0 01-.028-.048v.98a1.032 1.032 0 01-.004.073 1.032 1.032 0 01-.004.05 1.032 1.032 0 01-.008.054 1.032 1.032 0 010 .002 1.032 1.032 0 01-.009.042 1.032 1.032 0 01-.016.063 1.032 1.032 0 01-.01.034 1.032 1.032 0 01-.024.065 1.032 1.032 0 01-.012.031 1.032 1.032 0 01-.033.067 1.032 1.032 0 01-.018.034 1.032 1.032 0 01-.025.04 1.032 1.032 0 01-.032.047 1.032 1.032 0 01-.028.037 1.032 1.032 0 01-.034.042 1.032 1.032 0 01-.035.038 1.032 1.032 0 01-.037.036 1.032 1.032 0 01-.04.034 1.032 1.032 0 01-.038.031 1.032 1.032 0 01-.044.032 1.032 1.032 0 01-.041.027 1.032 1.032 0 01-.046.026 1.032 1.032 0 01-.045.024 1.032 1.032 0 01-.047.02 1.032 1.032 0 01-.05.02 1.032 1.032 0 01-.047.016 1.032 1.032 0 01-.049.014 1.032 1.032 0 01-.052.012 1.032 1.032 0 01-.05.009 1.032 1.032 0 01-.052.006 1.032 1.032 0 01-.049.004 1.032 1.032 0 01-.053 0 1.032 1.032 0 01-.052 0 1.032 1.032 0 01-.05-.004 1.032 1.032 0 01-.051-.006 1.032 1.032 0 01-.052-.01 1.032 1.032 0 01-.05-.011 1.032 1.032 0 01-.05-.014 1.032 1.032 0 01-.047-.016 1.032 1.032 0 01-.05-.02 1.032 1.032 0 01-.046-.02 1.032 1.032 0 01-.046-.024 1.032 1.032 0 01-.046-.026 1.032 1.032 0 01-.04-.027 1.032 1.032 0 01-.045-.032 1.032 1.032 0 01-.038-.031 1.032 1.032 0 01-.04-.034 1.032 1.032 0 01-.036-.036 1.032 1.032 0 01-.035-.038 1.032 1.032 0 01-.035-.042 1.032 1.032 0 01-.028-.037 1.032 1.032 0 01-.032-.047 1.032 1.032 0 01-.018-.03 1.032 1.032 0 01-.046-.087 1.032 1.032 0 01-.003-.006 1.032 1.032 0 01-.034-.084 1.032 1.032 0 01-.005-.015 1.032 1.032 0 01-.022-.073 1.032 1.032 0 01-.008-.032 1.032 1.032 0 01-.011-.06 1.032 1.032 0 01-.007-.043 1.032 1.032 0 01-.003-.034 1.032 1.032 0 01-.002-.02 1.032 1.032 0 010-.002 1.032 1.032 0 01-.003-.068v-.979a2.714 2.714 0 01-.026.046 2.714 2.714 0 01-.07.116 2.714 2.714 0 01-.077.107 2.714 2.714 0 01-.084.113 2.714 2.714 0 01-.086.097 2.714 2.714 0 01-.095.104 2.714 2.714 0 01-.1.092 2.714 2.714 0 01-.1.09 2.714 2.714 0 01-.11.083 2.714 2.714 0 01-.108.079 2.714 2.714 0 01-.114.07 2.714 2.714 0 01-.12.069 2.714 2.714 0 01-.12.058 2.714 2.714 0 01-.124.056 2.714 2.714 0 01-.129.047 2.714 2.714 0 01-.128.044 2.714 2.714 0 01-.127.032 2.714 2.714 0 01-.137.032 2.714 2.714 0 01-.13.02 2.714 2.714 0 01-.137.017 2.714 2.714 0 01-.245.012h-.21a2.715 2.715 0 01-.237-.012 2.715 2.715 0 01-.13-.016 2.715 2.715 0 01-.14-.02 2.715 2.715 0 01-.128-.03 2.715 2.715 0 01-.133-.033 2.715 2.715 0 01-.132-.044 2.715 2.715 0 01-.123-.045 2.715 2.715 0 01-.128-.058 2.715 2.715 0 01-.12-.057 2.715 2.715 0 01-.119-.069 2.715 2.715 0 01-.113-.069 2.715 2.715 0 01-.113-.08 2.715 2.715 0 01-.106-.082 2.715 2.715 0 01-.099-.087 2.715 2.715 0 01-.103-.096 2.715 2.715 0 01-.09-.097 2.715 2.715 0 01-.09-.102 2.715 2.715 0 01-.084-.11 2.715 2.715 0 01-.078-.109 2.715 2.715 0 01-.071-.116 2.715 2.715 0 01-.068-.118 2.715 2.715 0 01-.058-.12 2.715 2.715 0 01-.056-.126 2.715 2.715 0 01-.045-.124 2.715 2.715 0 01-.045-.133 2.715 2.715 0 01-.032-.127 2.715 2.715 0 01-.03-.136 2.715 2.715 0 01-.02-.135 2.715 2.715 0 01-.017-.132 2.715 2.715 0 01-.012-.238V8.17a2.723 2.723 0 01.012-.227 2.723 2.723 0 01.016-.135 2.723 2.723 0 01.02-.132 2.723 2.723 0 01.03-.136 2.723 2.723 0 01.035-.13 2.723 2.723 0 01.042-.129 2.723 2.723 0 01.047-.128 2.723 2.723 0 01.056-.126 2.723 2.723 0 01.058-.119 2.723 2.723 0 01.07-.123 2.723 2.723 0 01.069-.111 2.723 2.723 0 01.081-.114 2.723 2.723 0 01.08-.106 2.723 2.723 0 01.091-.103 2.723 2.723 0 01.093-.1 2.723 2.723 0 01.097-.09 2.723 2.723 0 01.106-.093 2.723 2.723 0 01.104-.08 2.723 2.723 0 01.114-.08 2.723 2.723 0 01.192-.119 1.95 1.95 0 01.016-.133 1.95 1.95 0 01.015-.094 1.95 1.95 0 01.021-.096 1.95 1.95 0 01.025-.093 1.95 1.95 0 01.03-.094 1.95 1.95 0 01.034-.091 1.95 1.95 0 01.04-.089 1.95 1.95 0 01.058-.118.248.248 0 01.01-.018.248.248 0 01.004-.005.248.248 0 01.01-.013.248.248 0 01.006-.007.248.248 0 01.007-.008.248.248 0 01.01-.011.248.248 0 01.007-.006.248.248 0 01.011-.009.248.248 0 01.012-.008.248.248 0 01.008-.005.248.248 0 01.016-.009.248.248 0 01.006-.003.248.248 0 01.013-.006.248.248 0 01.011-.005.248.248 0 01.01-.003.248.248 0 01.013-.004.248.248 0 01.013-.003.248.248 0 01.011-.002.248.248 0 01.01-.001.248.248 0 01.017-.002.248.248 0 01.006 0 .248.248 0 01.019 0 .248.248 0 01.007 0 .248.248 0 01.016.003.248.248 0 01.01.002.248.248 0 01.014.003.248.248 0 01.012.004.248.248 0 01.011.003.248.248 0 01.013.005.248.248 0 01.01.005.248.248 0 01.01.005.248.248 0 01.012.006.248.248 0 01.009.006.248.248 0 01.012.008.248.248 0 01.007.005.248.248 0 01.012.01.248.248 0 01.01.01.248.248 0 01.01.01v-.005l.471.523a2.723 2.723 0 01.01 0 1.95 1.95 0 01-.001-.155 1.95 1.95 0 01.006-.103 1.95 1.95 0 01.009-.093 1.95 1.95 0 01.015-.097 1.95 1.95 0 01.02-.095 1.95 1.95 0 01.024-.094 1.95 1.95 0 01.03-.094 1.95 1.95 0 01.034-.092 1.95 1.95 0 01.036-.087 1.95 1.95 0 01.07-.142c.085-.135.214-.163.32-.083.015.011.03.025.044.04l1.78 1.94v-.002a1.926 1.926 0 00.092.089 1.926 1.926 0 00.071.064 1.926 1.926 0 00.076.06 1.926 1.926 0 00.078.057 1.926 1.926 0 00.08.05 1.926 1.926 0 00.084.05 1.926 1.926 0 00.085.043 1.926 1.926 0 00.087.04 1.926 1.926 0 00.092.036 1.926 1.926 0 00.089.03 1.926 1.926 0 00.095.026 1.926 1.926 0 00.091.022 1.926 1.926 0 00.097.016 1.926 1.926 0 00.094.013 1.926 1.926 0 00.096.006 1.926 1.926 0 00.096.003 1.926 1.926 0 00.097-.003 1.926 1.926 0 00.096-.006 1.926 1.926 0 00.094-.013 1.926 1.926 0 00.097-.016 1.926 1.926 0 00.09-.022 1.926 1.926 0 00.096-.025 1.926 1.926 0 00.089-.031 1.926 1.926 0 00.092-.036 1.926 1.926 0 00.087-.04 1.926 1.926 0 00.085-.043 1.926 1.926 0 00.084-.05 1.926 1.926 0 00.08-.05 1.926 1.926 0 00.078-.058 1.926 1.926 0 00.075-.059 1.926 1.926 0 00.072-.064 1.926 1.926 0 00.092-.089V6.3l1.78-1.94a.294.294 0 01.044-.04.212.212 0 01.107-.044zm.02.168c-.813.742-1.419 1.714-2.325 2.358-.932.557-2.21.194-2.823-.67-.512-.56-1.007-1.17-1.563-1.667-.324.258-.164.745-.332 1.078-.208.206-.42-.181-.526-.316-.084-.17-.317-.283-.386-.048-.163.278-.04.74-.416.857-.919.59-1.277 1.757-1.149 2.792-.03.982-.066 2.116.698 2.859 1.106 1.18 3.29 1.048 4.174-.32.058-.14.145-.301.261-.42v-.42a1.048 1.048 0 010-.006l-.35-.059a.052.052 0 01-.042-.058 1.446 1.446 0 011.418-1.194 1.446 1.446 0 011.43 1.194.052.052 0 01-.043.058l-.35.06a1.03 1.03 0 010 .001v.38l.007.001c.584 1.534 2.728 2.067 4.017 1.128a2.694 2.694 0 001.106-2.535c.014-1.033.13-2.231-.653-3.042-.216-.27-.604-.399-.762-.697-.055-.25-.041-.588-.286-.736-.31.129-.381.556-.728.634-.2-.38-.055-.897-.377-1.213zM8.422 6.468a1.995 1.995 0 011.994 1.995v1.2a1.996 1.996 0 01-.245.913 27.203 27.203 0 00-.815-.328.95.95 0 00.035-.037.95.95 0 00.016-.018.95.95 0 00.048-.058.95.95 0 00.012-.017.95.95 0 00.04-.06.95.95 0 00.013-.02.95.95 0 00.032-.062.95.95 0 00.011-.022.95.95 0 00.024-.06.95.95 0 00.012-.031.95.95 0 00.017-.058.95.95 0 00.009-.033.95.95 0 00.01-.054.95.95 0 00.007-.043.95.95 0 00.007-.082V8.56a.95.95 0 00-.004-.08.95.95 0 00-.005-.047.95.95 0 00-.007-.047.95.95 0 00-.01-.047.95.95 0 00-.012-.045.95.95 0 00-.016-.047.95.95 0 00-.015-.042.95.95 0 00-.02-.047.95.95 0 00-.02-.04.95.95 0 00-.025-.042.95.95 0 00-.024-.04A.95.95 0 009.464 8a.95.95 0 00-.03-.039.95.95 0 00-.03-.034.95.95 0 00-.033-.036.95.95 0 00-.035-.032.95.95 0 00-.035-.031.95.95 0 00-.038-.029.95.95 0 00-.039-.028.95.95 0 00-.04-.025.95.95 0 00-.04-.023.95.95 0 00-.043-.02.95.95 0 00-.046-.02.95.95 0 00-.043-.017.95.95 0 00-.043-.014.95.95 0 00-.049-.012.95.95 0 00-.046-.01.95.95 0 00-.045-.008.95.95 0 00-.048-.006.95.95 0 00-.08-.004.96.96 0 00-.06.004.96.96 0 00-.05.005.96.96 0 00-.043.007.96.96 0 00-.051.01.96.96 0 00-.045.012.96.96 0 00-.047.014.96.96 0 00-.046.018.96.96 0 00-.055.023.6.6 0 01.04.04.6.6 0 01.022.024.6.6 0 01.017.02.6.6 0 01.018.025.6.6 0 01.017.026.6.6 0 01.013.023.6.6 0 01.016.028.6.6 0 01.011.026.6.6 0 01.013.03.6.6 0 01.008.025.6.6 0 01.01.031.6.6 0 01.007.03.6.6 0 01.006.029.6.6 0 01.004.037.6.6 0 01.002.021.6.6 0 010 .041.6.6 0 010 .02.6.6 0 01-.002.03.6.6 0 01-.003.031.6.6 0 01-.004.024.6.6 0 01-.007.034.6.6 0 01-.008.028.6.6 0 01-.01.03.6.6 0 01-.012.03.6.6 0 01-.01.024.6.6 0 01-.016.03.6.6 0 01-.013.024.6.6 0 01-.02.03.6.6 0 01-.012.018.6.6 0 01-.026.032.6.6 0 01-.013.015.6.6 0 01-.02.02.6.6 0 01-.024.024.6.6 0 01-.02.015.6.6 0 01-.025.021.6.6 0 01-.027.018.6.6 0 01-.024.015.6.6 0 01-.023.012.6.6 0 01-.03.016.6.6 0 01-.034.013.6.6 0 01-.02.008.6.6 0 01-.038.011.6.6 0 01-.02.006.6.6 0 01-.034.006.6.6 0 01-.026.005.6.6 0 01-.04.003.6.6 0 01-.018.002.6.6 0 01-.035 0 .6.6 0 01-.028 0 .6.6 0 01-.031-.005.6.6 0 01-.026-.003.6.6 0 01-.056-.012v.859a.95.95 0 00.004.048.95.95 0 00.007.062 15.08 15.08 0 00-1.336-.332v-.908a1.987 1.987 0 011.996-1.995zm7.156 0a1.995 1.995 0 011.996 1.995v.909c-.425.085-.87.195-1.336.333a.95.95 0 00.007-.066.95.95 0 00.004-.046V8.56a.95.95 0 00-.004-.081.95.95 0 00-.006-.046.95.95 0 00-.007-.047.95.95 0 00-.01-.046.95.95 0 00-.012-.048.95.95 0 00-.014-.041.95.95 0 00-.018-.048.95.95 0 00-.019-.043.95.95 0 00-.02-.042.95.95 0 00-.024-.04.95.95 0 00-.025-.042.95.95 0 00-.028-.039.95.95 0 00-.028-.036.95.95 0 00-.032-.037.95.95 0 00-.032-.035.95.95 0 00-.036-.033.95.95 0 00-.033-.03.95.95 0 00-.04-.03.95.95 0 00-.037-.026.95.95 0 00-.042-.026.95.95 0 00-.04-.023.95.95 0 00-.042-.02.95.95 0 00-.046-.02.95.95 0 00-.04-.016.95.95 0 00-.048-.015.95.95 0 00-.046-.012.95.95 0 00-.047-.01.95.95 0 00-.047-.007.95.95 0 00-.045-.006.95.95 0 00-.081-.004.96.96 0 00-.057.004.96.96 0 00-.045.004.96.96 0 00-.052.008.96.96 0 00-.044.008.96.96 0 00-.046.012.96.96 0 00-.047.014.96.96 0 00-.043.016.96.96 0 00-.045.018.96.96 0 00-.045.023.96.96 0 00-.048.024.6.6 0 01.04.045.6.6 0 01.033.05.6.6 0 01.03.052.6.6 0 01.024.055.6.6 0 01.018.057.6.6 0 01.005.025.6.6 0 01.007.034.6.6 0 01.005.042.6.6 0 01.002.017.6.6 0 010 .001.6.6 0 010 .06.6.6 0 01-.005.06.6.6 0 01-.004.022.6.6 0 01-.007.036.6.6 0 01-.017.057.6.6 0 010 .001.6.6 0 01-.023.055.6.6 0 01-.028.053.6.6 0 01-.033.05.6.6 0 01-.039.046.6.6 0 01-.042.042.6.6 0 01-.046.038.6.6 0 01-.05.033.6.6 0 01-.001 0 .6.6 0 01-.053.027.6.6 0 01-.055.023.6.6 0 01-.058.016.6.6 0 01-.032.006.6.6 0 01-.087.01.6.6 0 01-.06 0v.838a.95.95 0 00.007.084.95.95 0 00.007.042.95.95 0 00.01.054.95.95 0 00.01.032.95.95 0 00.016.06.95.95 0 00.011.029.95.95 0 00.025.06.95.95 0 00.01.022.95.95 0 00.034.063.95.95 0 00.011.018.95.95 0 00.041.063.95.95 0 00.01.012.95.95 0 00.052.063.95.95 0 00.008.008.95.95 0 00.043.046c-.268.103-.54.213-.815.33a1.996 1.996 0 01-.247-.916v-1.2a1.986 1.986 0 011.995-1.995zM12.035 9.32c-.038 0-.077 0-.115.003a1.35 1.35 0 00-1.224 1.042l1.301.198.688-.108.603-.138c-.13-.565-.68-.983-1.253-.997zm.86 1.184c-.084-.005-.009.142-.024.214.01.453.025.912-.024 1.362-.143.554-.892.836-1.35.477-.337-.235-.425-.684-.371-1.068-.001-.32-.02-.641.014-.96-.161-.086-.06.106-.086.194.01.609-.049 1.226.045 1.829.186.598 1.027.855 1.5.43.31-.25.399-.685.35-1.067-.004-.466.012-.933-.009-1.399a.142.142 0 00-.046-.012zm-.144.046a.399.399 0 00-.066.013 1.568 1.568 0 01-.112.036l-.03.008a1.3 1.3 0 01-.085.02l-.028.006a1.681 1.681 0 01-.27.03l-.035.002a3.33 3.33 0 01-.148 0h-.016a2.6 2.6 0 01-.171-.013c-.006 0-.012 0-.017-.002a5.958 5.958 0 01-.279-.038l-.072-.01-.182-.033a.794.754 0 00-.035.223v1.087a.803.763 0 00.795.755.794.754 0 00.794-.755V10.79a.795.755 0 00-.043-.243zm.04 1.367a.794.794 0 01-.005.035.794.794 0 00.004-.035zm-.013.082a.794.794 0 01-.007.03.794.794 0 00.007-.03zm-.02.075a.794.794 0 01-.01.03.794.794 0 00.01-.03zm-.028.079a.794.794 0 01-.01.022.794.794 0 00.01-.022zm-.035.071a.794.794 0 01-.012.02.794.794 0 00.012-.02zm-.044.07a.794.794 0 01-.01.014.794.794 0 00.01-.014zm-.05.064a.794.794 0 01-.01.01.794.794 0 00.01-.01zm-.053.056a.794.794 0 01-.006.006.794.794 0 00.006-.006zm-3.066 2.62a.132.132 0 01.014 0h1.823a.14.14 0 01.14.181c-.14.42-.573.709-1.056.712a1.085 1.085 0 01-1.047-.712.132.132 0 01.126-.182zm3.203 0a.144.144 0 01.005 0h1.824a.14.14 0 01.14.179c-.14.418-.572.71-1.06.71a1.085 1.085 0 01-1.043-.708.144.144 0 01.134-.18zm-1.6 1.548a.14.14 0 01.005 0h1.824a.14.14 0 01.139.182c-.135.423-.568.711-1.056.711a1.085 1.085 0 01-1.046-.711.14.14 0 01.135-.182zM4.45 18.236a.931.931 0 00-.66.299v-.002a.944.944 0 00.041 1.325l1.088 1.02a.938.938 0 001.284-1.367l-1.088-1.019a.931.931 0 00-.665-.256zm15.115 0a.931.931 0 00-.678.256l-1.089 1.019a.938.938 0 001.285 1.368l1.087-1.019a.944.944 0 00.042-1.325.931.931 0 00-.647-.299z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/dvc.svg b/assets/lib/simple-icons/icons/dvc.svg
new file mode 100644
index 00000000..590ff7a3
--- /dev/null
+++ b/assets/lib/simple-icons/icons/dvc.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>DVC</title><path d="M0 4.935a.295.295 0 0 1 .09-.223.256.256 0 0 1 .201-.092h3.921c1.608.122 2.808.582 3.912 1.716 1.11 1.135 1.551 2.422 1.692 4.078.135 1.594-.516 2.974-1.62 4.108a5.42 5.42 0 0 1-1.818 1.28 5.316 5.316 0 0 1-2.166.431H.292a.28.28 0 0 1-.202-.092.315.315 0 0 1-.069-.104.322.322 0 0 1-.02-.123V4.935Zm2.508 8.84H4.05c.9 0 1.65-.326 2.244-.973a3.403 3.403 0 0 0 .891-2.39c0-.942-.3-1.737-.89-2.383a2.935 2.935 0 0 0-1.02-.734 2.88 2.88 0 0 0-1.225-.238H2.508zm12.064.062a.32.32 0 0 1 .028.311l-2.324 5.056c-.063.122-.153.18-.273.18h-.162c-.12 0-.21-.06-.276-.184l-2.28-4.993a.317.317 0 0 1 .033-.316 5.136 5.136 0 0 0 .961-3.17c-.002-.088.133-.123.168-.042l1.44 3.236h.098l1.494-3.354c.035-.078.16-.049.16.036 0 1.147.29 2.282.933 3.24zm1.196.728c-1.14-1.128-1.668-2.496-1.668-4.108 0-1.622.525-2.996 1.668-4.133a5.74 5.74 0 0 1 1.91-1.285 5.65 5.65 0 0 1 2.248-.423 5.692 5.692 0 0 1 3.94 1.503c.164.153.167.306.017.453l-1.269 1.31c-.14.128-.279.128-.408 0a3.21 3.21 0 0 0-2.199-.825c-.912 0-1.67.325-2.28.981a3.267 3.267 0 0 0-.87 2.345c0 .908.27 1.68.882 2.321a3.023 3.023 0 0 0 2.286.96 3.255 3.255 0 0 0 2.181-.776c.15-.129.291-.123.42.015l1.272 1.343c.141.141.135.285-.015.435a5.49 5.49 0 0 1-3.957 1.567 5.675 5.675 0 0 1-2.245-.415 5.795 5.795 0 0 1-1.913-1.27z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/dwavesystems.svg b/assets/lib/simple-icons/icons/dwavesystems.svg
new file mode 100644
index 00000000..033f6c27
--- /dev/null
+++ b/assets/lib/simple-icons/icons/dwavesystems.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>D-Wave Systems</title><path d="M10.1062 12.0046c0 1.5815-1.2842 2.8636-2.8685 2.8636-1.5842 0-2.8684-1.282-2.8684-2.8636 0-1.5815 1.2842-2.8635 2.8684-2.8635 1.5843 0 2.8685 1.2821 2.8685 2.8635zM7.2377 0C5.6536 0 4.3693 1.2817 4.3693 2.8628s1.2842 2.8629 2.8684 2.8629c1.5842 0 2.8685-1.2817 2.8685-2.8629C10.1062 1.2817 8.822 0 7.2377 0zm9.5246 18.2781c-1.5838 0-2.8677 1.2764-2.8677 2.8636 0 1.5763 1.2835 2.8583 2.8677 2.8583 1.5845 0 2.8684-1.282 2.8684-2.8583 0-1.5872-1.2843-2.8636-2.8684-2.8636zm-2.8685-6.2735c0-1.5815 1.2842-2.8635 2.8685-2.8635 1.5842 0 2.8684 1.282 2.8684 2.8635 0 1.5815-1.2842 2.8636-2.8684 2.8636-1.5843 0-2.8685-1.282-2.8685-2.8636zm.5 0c0 1.3033 1.0625 2.3636 2.3685 2.3636s2.3684-1.0603 2.3684-2.3636c0-1.3032-1.0624-2.3635-2.3684-2.3635s-2.3685 1.0603-2.3685 2.3635z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/dwm.svg b/assets/lib/simple-icons/icons/dwm.svg
new file mode 100644
index 00000000..e15a0417
--- /dev/null
+++ b/assets/lib/simple-icons/icons/dwm.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>dwm</title><path d="M0 11h6V7h2v8h2v-4h2v4h2v-4h10v6h-2v-4h-2v4h-2v-4h-2v4H2v-2h4v-2H2v4H0z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/dynamics365.svg b/assets/lib/simple-icons/icons/dynamics365.svg
index 149d8b2f..687f5a70 100644
--- a/assets/lib/simple-icons/icons/dynamics365.svg
+++ b/assets/lib/simple-icons/icons/dynamics365.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Dynamics 365 icon</title><path d="M4.59 7.41l4.94 3.54L4.59 24zm0-7.41v6.36l9.53 5.29 4.59-3.52zm0 24l14.82-8.47v-6.7Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Dynamics 365</title><path d="M4.59 7.41l4.94 3.54L4.59 24zm0-7.41v6.36l9.53 5.29 4.59-3.52zm0 24l14.82-8.47v-6.7Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/dynatrace.svg b/assets/lib/simple-icons/icons/dynatrace.svg
index a30e18fa..10b8f600 100644
--- a/assets/lib/simple-icons/icons/dynatrace.svg
+++ b/assets/lib/simple-icons/icons/dynatrace.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Dynatrace icon</title><path d="M9.373 0c-.31.006-.93.09-1.521.654C6.98 1.478 2.628 5.61.88 7.27.09 8.024.16 8.865.16 8.934v.377c.067-.292.187-.499.427-.825.496-.616 1.3-.788 1.627-.822a64.233 64.233 0 0 1 .002 0 64.233 64.233 0 0 1 6.527-.549c4.335-.137 7.197.225 7.197.225l6.084-5.793s-3.188-.6-6.82-1.027A93.394 93.394 0 0 0 9.566.006c-.021 0-.09-.008-.193-.006zm13.56 2.508l-6.066 5.79s.222 2.88-.137 7.198c-.189 2.45-.584 4.866-.875 6.494-.052.326-.256 1.114-.925 1.594-.29.198-.491.295-.748.363 1.546-.51 1.091-7.047 1.091-7.047-4.335.137-7.214-.222-7.214-.222L1.975 22.47s3.222.634 6.855 1.045c2.056.24 4.833.429 5.227.463.023 0 .045-.007.068-.012-.013.003-.022.009-.035.012.138 0 .259.015.379.015.085 0 .925.105 1.713-.648 1.748-1.663 6.083-5.81 6.94-6.633.788-.754.72-1.594.72-1.68a81.84 81.84 0 0 0-.207-5.654c-.24-3.65-.701-6.871-.701-6.871zM3.856 8.305C2.125 8.307.348 8.513.16 9.326c.017 1.216.05 3.137.205 5.28.24 3.65.703 6.886.703 6.886l6.082-5.79c-.017.017-.239-2.88.121-7.198H7.27s-1.684-.202-3.415-.2z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Dynatrace</title><path d="M9.372 0c-.31.006-.93.09-1.521.654-.872.824-5.225 4.957-6.973 6.617-.79.754-.72 1.595-.72 1.664v.377c.067-.292.187-.5.427-.825.496-.616 1.3-.788 1.627-.822a64.238 64.238 0 01.002 0 64.238 64.238 0 016.528-.55c4.335-.136 7.197.226 7.197.226l6.085-5.794s-3.188-.6-6.82-1.027a93.4 93.4 0 00-5.64-.514c-.02 0-.09-.008-.192-.006zm13.56 2.508l-6.066 5.79s.222 2.881-.137 7.2c-.189 2.45-.584 4.866-.875 6.494-.052.326-.256 1.114-.925 1.594-.29.198-.49.295-.748.363 1.546-.51 1.091-7.047 1.091-7.047-4.335.137-7.214-.223-7.214-.223l-6.085 5.793s3.223.634 6.856 1.045c2.056.24 4.833.429 5.227.463.023 0 .045-.007.068-.012-.013.003-.022.009-.035.012.138 0 .26.015.38.015.084 0 .924.105 1.712-.648 1.748-1.663 6.084-5.81 6.94-6.634.789-.754.72-1.594.72-1.68a81.846 81.846 0 00-.206-5.654 101.75 101.75 0 00-.701-6.872zM3.855 8.306c-1.73.002-3.508.208-3.696 1.021.017 1.216.05 3.137.205 5.28.24 3.65.703 6.887.703 6.887l6.083-5.79c-.017.016-.24-2.88.12-7.2 0 0-1.684-.201-3.416-.2z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/e.svg b/assets/lib/simple-icons/icons/e.svg
new file mode 100644
index 00000000..c9aa8ce8
--- /dev/null
+++ b/assets/lib/simple-icons/icons/e.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>/e/</title><path d="M13.13812.05332C9.6246-.2791 6.0635.95029 3.49234 3.53409.0641 6.97916-.94746 12.17083.93662 16.65094c1.88408 4.48013 6.30246 7.38884 11.16248 7.3483a2.27493 2.27493 0 10-.03759-4.54888c-3.02833.02526-5.75722-1.77058-6.93123-4.56223-1.174-2.79164-.54918-5.99816 1.58702-8.14484 2.13619-2.14669 5.339-2.78735 8.13635-1.62703 2.07161.85929 3.59079 2.57925 4.24094 4.64104H12.0506a2.27505 2.27505 0 100 4.5501h9.67488a2.27493 2.27493 0 002.27445-2.26717c.0167-4.86014-2.91357-9.264-7.40286-11.12612-1.12232-.46552-2.28778-.74998-3.45895-.8608Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ea.svg b/assets/lib/simple-icons/icons/ea.svg
index 31e28827..3cd7b9ca 100644
--- a/assets/lib/simple-icons/icons/ea.svg
+++ b/assets/lib/simple-icons/icons/ea.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>EA icon</title><path d="M16.635 6.162l-5.928 9.377H4.24l1.508-2.3h4.024l1.474-2.335H2.264L.79 13.239h2.156L0 17.84h12.072l4.563-7.259 1.652 2.66h-1.401l-1.473 2.299h4.347l1.473 2.3H24zm-11.461.107L3.7 8.604l9.52-.035 1.474-2.3z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>EA</title><path d="M16.635 6.162l-5.928 9.377H4.24l1.508-2.3h4.024l1.474-2.335H2.264L.79 13.239h2.156L0 17.84h12.072l4.563-7.259 1.652 2.66h-1.401l-1.473 2.299h4.347l1.473 2.3H24zm-11.461.107L3.7 8.604l9.52-.035 1.474-2.3z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/eagle.svg b/assets/lib/simple-icons/icons/eagle.svg
new file mode 100644
index 00000000..fee44921
--- /dev/null
+++ b/assets/lib/simple-icons/icons/eagle.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Eagle</title><path d="M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0zm.04 3.858c1.32.019 2.634.335 3.78.989.549.31.957.642 1.238.895a6.912 6.912 0 0 0-2.25 3.04c-.06.165-.123.354-.183.546a6.856 6.856 0 0 0-.252 1.605c-.003.162.002.374.003.578.012.242.05.519.08.789a7.013 7.013 0 0 0 1.753 3.586 6.889 6.889 0 0 0 1.87 1.42 7.792 7.792 0 0 1-2.629 2.166 7.717 7.717 0 0 1-3.846.808 9.16 9.16 0 0 1-.22-.013 7.695 7.695 0 0 1-1.504-.247 8.201 8.201 0 0 1-2.83-1.354 7.056 7.056 0 0 1-1.894-2.1c-.22-.38-1.49-2.644-.769-5.452A7.261 7.261 0 0 1 5.93 8.18a5.513 5.513 0 0 0-2.105 1.082C4.12 8.573 5.306 6 8.217 4.66a8.944 8.944 0 0 1 3.823-.8zm5.702 2.508c.202.126.464.309.736.572.108.103.478.468.82 1.054.413.703.549 1.327.62 1.65a5.52 5.52 0 0 1 .013 2.302 7.133 7.133 0 0 0-2.044-1.688 7.243 7.243 0 0 0-1.551.3 6.834 6.834 0 0 0-1.05.422 6.058 6.058 0 0 1 .267-1.563 5.923 5.923 0 0 1 .806-1.643 6.255 6.255 0 0 1 1.383-1.406Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/easyjet.svg b/assets/lib/simple-icons/icons/easyjet.svg
index eded9a22..1781b320 100644
--- a/assets/lib/simple-icons/icons/easyjet.svg
+++ b/assets/lib/simple-icons/icons/easyjet.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>easyJet icon</title><path d="M2.964 12.225H1.463c-.066 0-.099.029-.099.086 0 .138.075.269.225.391.15.122.311.184.484.184.102 0 .216-.02.34-.059.125-.039.227-.088.308-.145.072-.051.13-.077.172-.077.055 0 .11.034.163.102a.34.34 0 0 1 .08.211c0 .153-.096.301-.287.444-.339.253-.729.38-1.172.38-.447 0-.822-.13-1.124-.39a1.6 1.6 0 0 1-.364-.463 1.611 1.611 0 0 1-.189-.76c0-.358.109-.679.326-.964.187-.247.426-.431.715-.552.217-.092.452-.137.706-.137.404 0 .748.115 1.031.345.143.115.258.251.345.409.1.179.15.353.15.524a.617.617 0 0 1-.086.34c-.057.087-.132.131-.223.131zm-1.418-.597h.323c.136 0 .204-.063.204-.188a.4.4 0 0 0-.099-.281.335.335 0 0 0-.259-.109.328.328 0 0 0-.281.141.445.445 0 0 0-.096.265c0 .064.015.109.046.134.031.025.085.038.162.038zm3.693-1.156c.37 0 .684.094.942.281.136.1.232.215.286.343.054.129.081.306.081.532l-.006.476c0 .33.023.544.07.642.023.047.046.077.067.089a.41.41 0 0 0 .134.035c.068.011.102.055.102.134a.54.54 0 0 1-.123.319 1.024 1.024 0 0 1-.318.278.975.975 0 0 1-.501.141.659.659 0 0 1-.53-.23c-.045-.055-.086-.083-.125-.083-.043 0-.099.027-.169.08a1.202 1.202 0 0 1-.725.233c-.279 0-.505-.06-.677-.179a.842.842 0 0 1-.268-.308.85.85 0 0 1-.099-.398c0-.221.089-.417.268-.588.279-.268.696-.403 1.252-.406.123 0 .201-.012.233-.037.032-.024.048-.081.048-.171 0-.226-.023-.389-.07-.49-.047-.101-.123-.152-.23-.152a.27.27 0 0 0-.171.058c-.05.038-.112.109-.187.211-.19.27-.387.406-.594.406a.356.356 0 0 1-.255-.093.318.318 0 0 1-.099-.243c0-.102.041-.204.123-.307.082-.102.193-.192.334-.268a2.557 2.557 0 0 1 1.207-.305zm-.214 1.849a.317.317 0 0 0-.244.115.397.397 0 0 0-.104.275c0 .102.024.185.073.248a.234.234 0 0 0 .195.094c.17 0 .255-.144.255-.431 0-.117-.012-.196-.037-.236-.024-.042-.07-.063-.138-.065zm3.33-1.846c.106 0 .28.023.521.07a.685.685 0 0 0 .121.013.797.797 0 0 0 .211-.057.357.357 0 0 1 .125-.029c.098 0 .197.063.297.188.081.1.147.21.198.329a.81.81 0 0 1 .077.31.28.28 0 0 1-.089.212.315.315 0 0 1-.224.085.375.375 0 0 1-.2-.054 2.06 2.06 0 0 1-.283-.24c-.136-.132-.249-.198-.339-.198a.214.214 0 0 0-.155.065.21.21 0 0 0-.065.155c0 .104.1.202.3.294.36.162.636.339.827.53.162.162.243.36.243.594 0 .296-.13.543-.39.741a1.307 1.307 0 0 1-.821.259c-.083 0-.234-.014-.453-.041a7.38 7.38 0 0 0-.348-.035.505.505 0 0 0-.096.01 1.244 1.244 0 0 1-.134.013.342.342 0 0 1-.236-.077 1.107 1.107 0 0 1-.243-.372 1.111 1.111 0 0 1-.112-.436c0-.196.077-.294.23-.294.06 0 .114.02.164.059.05.039.155.144.315.315.087.094.16.158.217.193a.348.348 0 0 0 .185.053c.07 0 .127-.019.169-.056a.187.187 0 0 0 .064-.149c0-.096-.082-.183-.246-.262-.343-.168-.59-.342-.742-.521a.928.928 0 0 1-.228-.62c0-.253.078-.472.233-.655.221-.261.524-.392.907-.392zm4.994 1.571l-.422 1.159a4.405 4.405 0 0 1-.315.704 2.064 2.064 0 0 1-.359.465c-.277.264-.61.396-1 .396-.315 0-.571-.083-.766-.249a.613.613 0 0 1-.227-.489c0-.164.053-.302.158-.414a.512.512 0 0 1 .388-.168c.153 0 .277.051.37.153a.418.418 0 0 1 .089.125c.015.036.037.116.067.24.023.094.077.141.16.141a.204.204 0 0 0 .166-.086.336.336 0 0 0 .067-.214c0-.1-.055-.267-.166-.501l-.77-1.638a1.506 1.506 0 0 0-.182-.319.908.908 0 0 0-.268-.156.234.234 0 0 1-.11-.101.274.274 0 0 1-.046-.145c0-.189.188-.318.565-.386.251-.045.538-.067.859-.067.226 0 .403.023.533.07.175.062.262.167.262.316a.35.35 0 0 1-.073.188.332.332 0 0 0-.07.182c0 .051.011.104.034.16.022.055.07.149.142.281.081.149.152.224.214.224.066 0 .134-.065.204-.196a.802.802 0 0 0 .105-.378.357.357 0 0 0-.08-.24c-.081-.096-.121-.178-.121-.246 0-.109.072-.195.217-.26.145-.065.338-.097.581-.097.451 0 .677.109.677.326a.263.263 0 0 1-.069.19.658.658 0 0 1-.251.136.49.49 0 0 0-.243.192c-.091.139-.199.374-.32.702zm3.189-2.816c.238 0 .481.021.728.064.202.034.347.081.434.141.087.06.131.142.131.246a.23.23 0 0 1-.048.155.715.715 0 0 1-.208.136c-.123.064-.194.139-.212.225s-.035.421-.05 1.004c-.006.564-.012.903-.018 1.016a2.208 2.208 0 0 1-.04.329c-.062.311-.186.555-.374.731-.153.145-.35.259-.591.342a2.316 2.316 0 0 1-.76.125 2.81 2.81 0 0 1-.711-.093 2.26 2.26 0 0 1-.618-.255.975.975 0 0 1-.345-.362.985.985 0 0 1-.128-.487c0-.213.067-.389.201-.529a.672.672 0 0 1 .505-.209c.198 0 .366.059.505.176a.56.56 0 0 1 .208.441c0 .045-.013.119-.038.224a.38.38 0 0 0-.006.07.21.21 0 0 0 .073.166.285.285 0 0 0 .195.064.4.4 0 0 0 .345-.192c.087-.128.131-.296.131-.505l-.003-.291-.006-.782a20.503 20.503 0 0 0-.043-.838.438.438 0 0 0-.072-.206.28.28 0 0 0-.085-.083 1.304 1.304 0 0 0-.2-.061.217.217 0 0 1-.131-.089.259.259 0 0 1-.054-.156c0-.115.045-.207.136-.276.09-.069.238-.125.442-.168a3.3 3.3 0 0 1 .707-.073zm4.155 2.995h-1.501c-.066 0-.099.029-.099.086 0 .138.075.269.225.391.15.122.311.184.484.184.102 0 .216-.02.34-.059.125-.039.227-.088.308-.145.072-.051.13-.077.172-.077.055 0 .11.034.163.102a.34.34 0 0 1 .08.211c0 .153-.096.301-.287.444-.339.253-.729.38-1.172.38-.447 0-.822-.13-1.124-.39a1.616 1.616 0 0 1-.552-1.223c0-.358.109-.679.326-.964.187-.247.426-.431.715-.552.217-.092.452-.137.706-.137.404 0 .748.115 1.032.345.143.115.258.251.345.409.1.179.15.353.15.524a.617.617 0 0 1-.086.34c-.059.087-.133.131-.225.131zm-1.418-.597h.323c.136 0 .204-.063.204-.188a.4.4 0 0 0-.099-.281.335.335 0 0 0-.259-.109.328.328 0 0 0-.281.141.445.445 0 0 0-.096.265c0 .064.015.109.046.134.032.025.086.038.162.038zm3.761-.316v1.079c0 .128.031.232.094.313a.292.292 0 0 0 .241.121c.083 0 .193-.038.329-.115a.187.187 0 0 1 .096-.029c.051 0 .098.031.141.093a.352.352 0 0 1 .063.202c0 .132-.072.259-.217.38-.302.258-.669.386-1.099.386-.341 0-.614-.096-.821-.289-.207-.193-.31-.447-.31-.762v-1.475c0-.049-.006-.079-.018-.091-.012-.012-.042-.018-.091-.018h-.329c-.062 0-.101-.01-.118-.03-.017-.02-.026-.068-.026-.142v-.141c.002-.064.027-.111.073-.141l1.463-.92a.286.286 0 0 1 .134-.029h.259c.053 0 .089.012.107.037.018.024.027.073.027.145v.431c0 .064.01.105.03.125.02.019.063.029.129.029h.591c.079 0 .13.014.153.043.023.029.035.09.035.184v.188c0 .102-.015.173-.045.212-.03.039-.084.059-.163.059h-.578c-.06 0-.1.011-.121.032-.019.023-.029.063-.029.123z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>easyJet</title><path d="M2.964 12.225H1.463c-.066 0-.099.029-.099.086 0 .138.075.269.225.391.15.122.311.184.484.184.102 0 .216-.02.34-.059.125-.039.227-.088.308-.145.072-.051.13-.077.172-.077.055 0 .11.034.163.102a.34.34 0 0 1 .08.211c0 .153-.096.301-.287.444-.339.253-.729.38-1.172.38-.447 0-.822-.13-1.124-.39a1.6 1.6 0 0 1-.364-.463 1.611 1.611 0 0 1-.189-.76c0-.358.109-.679.326-.964.187-.247.426-.431.715-.552.217-.092.452-.137.706-.137.404 0 .748.115 1.031.345.143.115.258.251.345.409.1.179.15.353.15.524a.617.617 0 0 1-.086.34c-.057.087-.132.131-.223.131zm-1.418-.597h.323c.136 0 .204-.063.204-.188a.4.4 0 0 0-.099-.281.335.335 0 0 0-.259-.109.328.328 0 0 0-.281.141.445.445 0 0 0-.096.265c0 .064.015.109.046.134.031.025.085.038.162.038zm3.693-1.156c.37 0 .684.094.942.281.136.1.232.215.286.343.054.129.081.306.081.532l-.006.476c0 .33.023.544.07.642.023.047.046.077.067.089a.41.41 0 0 0 .134.035c.068.011.102.055.102.134a.54.54 0 0 1-.123.319 1.024 1.024 0 0 1-.318.278.975.975 0 0 1-.501.141.659.659 0 0 1-.53-.23c-.045-.055-.086-.083-.125-.083-.043 0-.099.027-.169.08a1.202 1.202 0 0 1-.725.233c-.279 0-.505-.06-.677-.179a.842.842 0 0 1-.268-.308.85.85 0 0 1-.099-.398c0-.221.089-.417.268-.588.279-.268.696-.403 1.252-.406.123 0 .201-.012.233-.037.032-.024.048-.081.048-.171 0-.226-.023-.389-.07-.49-.047-.101-.123-.152-.23-.152a.27.27 0 0 0-.171.058c-.05.038-.112.109-.187.211-.19.27-.387.406-.594.406a.356.356 0 0 1-.255-.093.318.318 0 0 1-.099-.243c0-.102.041-.204.123-.307.082-.102.193-.192.334-.268a2.557 2.557 0 0 1 1.207-.305zm-.214 1.849a.317.317 0 0 0-.244.115.397.397 0 0 0-.104.275c0 .102.024.185.073.248a.234.234 0 0 0 .195.094c.17 0 .255-.144.255-.431 0-.117-.012-.196-.037-.236-.024-.042-.07-.063-.138-.065zm3.33-1.846c.106 0 .28.023.521.07a.685.685 0 0 0 .121.013.797.797 0 0 0 .211-.057.357.357 0 0 1 .125-.029c.098 0 .197.063.297.188.081.1.147.21.198.329a.81.81 0 0 1 .077.31.28.28 0 0 1-.089.212.315.315 0 0 1-.224.085.375.375 0 0 1-.2-.054 2.06 2.06 0 0 1-.283-.24c-.136-.132-.249-.198-.339-.198a.214.214 0 0 0-.155.065.21.21 0 0 0-.065.155c0 .104.1.202.3.294.36.162.636.339.827.53.162.162.243.36.243.594 0 .296-.13.543-.39.741a1.307 1.307 0 0 1-.821.259c-.083 0-.234-.014-.453-.041a7.38 7.38 0 0 0-.348-.035.505.505 0 0 0-.096.01 1.244 1.244 0 0 1-.134.013.342.342 0 0 1-.236-.077 1.107 1.107 0 0 1-.243-.372 1.111 1.111 0 0 1-.112-.436c0-.196.077-.294.23-.294.06 0 .114.02.164.059.05.039.155.144.315.315.087.094.16.158.217.193a.348.348 0 0 0 .185.053c.07 0 .127-.019.169-.056a.187.187 0 0 0 .064-.149c0-.096-.082-.183-.246-.262-.343-.168-.59-.342-.742-.521a.928.928 0 0 1-.228-.62c0-.253.078-.472.233-.655.221-.261.524-.392.907-.392zm4.994 1.571l-.422 1.159a4.405 4.405 0 0 1-.315.704 2.064 2.064 0 0 1-.359.465c-.277.264-.61.396-1 .396-.315 0-.571-.083-.766-.249a.613.613 0 0 1-.227-.489c0-.164.053-.302.158-.414a.512.512 0 0 1 .388-.168c.153 0 .277.051.37.153a.418.418 0 0 1 .089.125c.015.036.037.116.067.24.023.094.077.141.16.141a.204.204 0 0 0 .166-.086.336.336 0 0 0 .067-.214c0-.1-.055-.267-.166-.501l-.77-1.638a1.506 1.506 0 0 0-.182-.319.908.908 0 0 0-.268-.156.234.234 0 0 1-.11-.101.274.274 0 0 1-.046-.145c0-.189.188-.318.565-.386.251-.045.538-.067.859-.067.226 0 .403.023.533.07.175.062.262.167.262.316a.35.35 0 0 1-.073.188.332.332 0 0 0-.07.182c0 .051.011.104.034.16.022.055.07.149.142.281.081.149.152.224.214.224.066 0 .134-.065.204-.196a.802.802 0 0 0 .105-.378.357.357 0 0 0-.08-.24c-.081-.096-.121-.178-.121-.246 0-.109.072-.195.217-.26.145-.065.338-.097.581-.097.451 0 .677.109.677.326a.263.263 0 0 1-.069.19.658.658 0 0 1-.251.136.49.49 0 0 0-.243.192c-.091.139-.199.374-.32.702zm3.189-2.816c.238 0 .481.021.728.064.202.034.347.081.434.141.087.06.131.142.131.246a.23.23 0 0 1-.048.155.715.715 0 0 1-.208.136c-.123.064-.194.139-.212.225s-.035.421-.05 1.004c-.006.564-.012.903-.018 1.016a2.208 2.208 0 0 1-.04.329c-.062.311-.186.555-.374.731-.153.145-.35.259-.591.342a2.316 2.316 0 0 1-.76.125 2.81 2.81 0 0 1-.711-.093 2.26 2.26 0 0 1-.618-.255.975.975 0 0 1-.345-.362.985.985 0 0 1-.128-.487c0-.213.067-.389.201-.529a.672.672 0 0 1 .505-.209c.198 0 .366.059.505.176a.56.56 0 0 1 .208.441c0 .045-.013.119-.038.224a.38.38 0 0 0-.006.07.21.21 0 0 0 .073.166.285.285 0 0 0 .195.064.4.4 0 0 0 .345-.192c.087-.128.131-.296.131-.505l-.003-.291-.006-.782a20.503 20.503 0 0 0-.043-.838.438.438 0 0 0-.072-.206.28.28 0 0 0-.085-.083 1.304 1.304 0 0 0-.2-.061.217.217 0 0 1-.131-.089.259.259 0 0 1-.054-.156c0-.115.045-.207.136-.276.09-.069.238-.125.442-.168a3.3 3.3 0 0 1 .707-.073zm4.155 2.995h-1.501c-.066 0-.099.029-.099.086 0 .138.075.269.225.391.15.122.311.184.484.184.102 0 .216-.02.34-.059.125-.039.227-.088.308-.145.072-.051.13-.077.172-.077.055 0 .11.034.163.102a.34.34 0 0 1 .08.211c0 .153-.096.301-.287.444-.339.253-.729.38-1.172.38-.447 0-.822-.13-1.124-.39a1.616 1.616 0 0 1-.552-1.223c0-.358.109-.679.326-.964.187-.247.426-.431.715-.552.217-.092.452-.137.706-.137.404 0 .748.115 1.032.345.143.115.258.251.345.409.1.179.15.353.15.524a.617.617 0 0 1-.086.34c-.059.087-.133.131-.225.131zm-1.418-.597h.323c.136 0 .204-.063.204-.188a.4.4 0 0 0-.099-.281.335.335 0 0 0-.259-.109.328.328 0 0 0-.281.141.445.445 0 0 0-.096.265c0 .064.015.109.046.134.032.025.086.038.162.038zm3.761-.316v1.079c0 .128.031.232.094.313a.292.292 0 0 0 .241.121c.083 0 .193-.038.329-.115a.187.187 0 0 1 .096-.029c.051 0 .098.031.141.093a.352.352 0 0 1 .063.202c0 .132-.072.259-.217.38-.302.258-.669.386-1.099.386-.341 0-.614-.096-.821-.289-.207-.193-.31-.447-.31-.762v-1.475c0-.049-.006-.079-.018-.091-.012-.012-.042-.018-.091-.018h-.329c-.062 0-.101-.01-.118-.03-.017-.02-.026-.068-.026-.142v-.141c.002-.064.027-.111.073-.141l1.463-.92a.286.286 0 0 1 .134-.029h.259c.053 0 .089.012.107.037.018.024.027.073.027.145v.431c0 .064.01.105.03.125.02.019.063.029.129.029h.591c.079 0 .13.014.153.043.023.029.035.09.035.184v.188c0 .102-.015.173-.045.212-.03.039-.084.059-.163.059h-.578c-.06 0-.1.011-.121.032-.019.023-.029.063-.029.123z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ebay.svg b/assets/lib/simple-icons/icons/ebay.svg
index 2489b748..74d88a84 100644
--- a/assets/lib/simple-icons/icons/ebay.svg
+++ b/assets/lib/simple-icons/icons/ebay.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>eBay icon</title><path d="M6.056 12.13V7.21h1.2v3.026c.59-.703 1.402-.906 2.202-.906 1.34 0 2.828.904 2.828 2.855 0 .233-.015.457-.06.668.24-.953 1.274-1.305 2.896-1.344.51-.018 1.095-.018 1.56-.018v-.135c0-.885-.556-1.244-1.53-1.244-.72 0-1.245.3-1.305.81h-1.275c.136-1.29 1.5-1.62 2.686-1.62 1.064 0 1.995.27 2.415 1.02l-.436-.84h1.41l2.055 4.125 2.055-4.126H24l-3.72 7.305h-1.346l1.07-2.04-2.33-4.38c.13.255.2.555.2.93v2.46c0 .346.01.69.04 1.005H16.8c-.03-.255-.046-.51-.046-.765-.603.734-1.32.96-2.32.96-1.48 0-2.272-.78-2.272-1.695 0-.15.015-.284.037-.405-.3 1.246-1.36 2.086-2.767 2.086-.87 0-1.694-.315-2.2-.93 0 .24-.015.494-.04.734h-1.18c.02-.39.04-.855.04-1.245v-1.05h-4.83c.065 1.095.818 1.74 1.853 1.74.718 0 1.355-.3 1.568-.93h1.24c-.24 1.29-1.61 1.725-2.79 1.725C.95 15.007 0 13.82 0 12.23c0-1.754.982-2.91 3.116-2.91 1.688 0 2.93.886 2.94 2.806v.005zm9.137.183c-1.095.034-1.77.233-1.77.95 0 .465.36.97 1.305.97 1.26 0 1.935-.69 1.935-1.814v-.13c-.45 0-.99.006-1.484.022h.012zm-6.06 1.875c1.11 0 1.876-.806 1.876-2.02s-.768-2.02-1.893-2.02c-1.11 0-1.89.806-1.89 2.02s.765 2.02 1.875 2.02h.03zm-4.35-2.514c-.044-1.125-.854-1.546-1.725-1.546-.944 0-1.694.474-1.815 1.546h3.54z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>eBay</title><path d="M6.056 12.132v-4.92h1.2v3.026c.59-.703 1.402-.906 2.202-.906 1.34 0 2.828.904 2.828 2.855 0 .233-.015.457-.06.668.24-.953 1.274-1.305 2.896-1.344.51-.018 1.095-.018 1.56-.018v-.135c0-.885-.556-1.244-1.53-1.244-.72 0-1.245.3-1.305.81h-1.275c.136-1.29 1.5-1.62 2.686-1.62 1.064 0 1.995.27 2.415 1.02l-.436-.84h1.41l2.055 4.125 2.055-4.126H24l-3.72 7.305h-1.346l1.07-2.04-2.33-4.38c.13.255.2.555.2.93v2.46c0 .346.01.69.04 1.005H16.8a6.543 6.543 0 01-.046-.765c-.603.734-1.32.96-2.32.96-1.48 0-2.272-.78-2.272-1.695 0-.15.015-.284.037-.405-.3 1.246-1.36 2.086-2.767 2.086-.87 0-1.694-.315-2.2-.93 0 .24-.015.494-.04.734h-1.18c.02-.39.04-.855.04-1.245v-1.05h-4.83c.065 1.095.818 1.74 1.853 1.74.718 0 1.355-.3 1.568-.93h1.24c-.24 1.29-1.61 1.725-2.79 1.725C.95 15.009 0 13.822 0 12.232c0-1.754.982-2.91 3.116-2.91 1.688 0 2.93.886 2.94 2.806v.005zm9.137.183c-1.095.034-1.77.233-1.77.95 0 .465.36.97 1.305.97 1.26 0 1.935-.69 1.935-1.814v-.13c-.45 0-.99.006-1.484.022h.012zm-6.06 1.875c1.11 0 1.876-.806 1.876-2.02s-.768-2.02-1.893-2.02c-1.11 0-1.89.806-1.89 2.02s.765 2.02 1.875 2.02h.03zm-4.35-2.514c-.044-1.125-.854-1.546-1.725-1.546-.944 0-1.694.474-1.815 1.546z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/eclipseche.svg b/assets/lib/simple-icons/icons/eclipseche.svg
new file mode 100644
index 00000000..904aff37
--- /dev/null
+++ b/assets/lib/simple-icons/icons/eclipseche.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Eclipse Che</title><path d="M12 0L1.604 6.021v7.452L12 7.494l3.941 2.254 6.455-3.727zm10.396 10.527L12 16.506l-7.334-4.217-3.062 1.76v3.93L12 24l10.396-6.021z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/eclipseide.svg b/assets/lib/simple-icons/icons/eclipseide.svg
index 3dc22063..80a9282e 100644
--- a/assets/lib/simple-icons/icons/eclipseide.svg
+++ b/assets/lib/simple-icons/icons/eclipseide.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" role="img"><title>Eclipse IDE icon</title><path d="M11.108.024c-.274.004-.604.012-.737.023C6.727.361 3.468 2.518 1.578 5.86A12.53 12.53 0 0 0 .02 11.112c-.04.517-.02 1.745.035 2.208.306 2.682 1.353 5.06 3.07 6.965 1.962 2.173 4.586 3.467 7.437 3.663.42.032 1.043.04 1.02.012a2.404 2.404 0 0 0-.338-.074c-1.674-.33-3.388-1.13-4.777-2.232a12.345 12.345 0 0 1-2.45-2.636A12.388 12.388 0 0 1 1.883 12.5a12.414 12.414 0 0 1 .56-4.275c.785-2.522 2.37-4.726 4.475-6.228A11.074 11.074 0 0 1 11.155.122l.443-.098zm1.475.51C10.645.65 8.806 1.299 7.3 2.4 5.425 3.77 3.994 5.644 3.22 7.746c-.145.397-.282.82-.282.879 0 .012 3.828.024 10.31.024 8.464 0 10.316-.008 10.316-.036 0-.047-.153-.525-.283-.878-.153-.42-.576-1.31-.82-1.722-.4-.683-.91-1.373-1.474-1.992-1.651-1.82-3.593-2.934-5.82-3.334-.785-.141-1.8-.2-2.585-.153zM23.83 9.97c-.02 0-4.792 0-10.609.004l-10.574.008-.011.059c-.036.16-.134 1.082-.134 1.243 0 .028 1.785.032 10.747.032H24v-.075c0-.102-.07-.792-.106-1.055-.02-.16-.04-.216-.063-.216zm-10.573 2.636c-9.37-.004-10.731 0-10.743.035-.02.04.024.557.075.973.02.157.035.298.035.314 0 .027 2.137.035 10.625.035h10.624l.024-.188c.043-.326.102-.97.094-1.067l-.008-.094zm.003 2.718c-8.883 0-10.322.004-10.322.035 0 .02.054.208.121.42a11.123 11.123 0 0 0 2.071 3.741c.282.342.945 1.036 1.228 1.287 1.568 1.4 3.247 2.216 5.18 2.53.605.094.887.113 1.75.11.91 0 1.298-.032 2.024-.177 2.11-.416 3.914-1.451 5.53-3.17 1.267-1.348 2.106-2.76 2.628-4.411l.117-.365z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Eclipse IDE</title><path d="M11.109.024a15.58 15.58 0 00-.737.023C6.728.361 3.469 2.517 1.579 5.86A12.53 12.53 0 00.021 11.11c-.04.517-.02 1.745.035 2.208.306 2.682 1.353 5.06 3.07 6.965 1.962 2.173 4.586 3.467 7.437 3.663.42.032 1.043.04 1.02.012a2.404 2.404 0 00-.338-.074c-1.674-.33-3.388-1.13-4.777-2.232a12.344 12.344 0 01-2.45-2.636A12.387 12.387 0 011.884 12.5a12.413 12.413 0 01.56-4.274c.785-2.522 2.37-4.726 4.475-6.228A11.073 11.073 0 0111.156.122l.443-.098zm1.474.51C10.646.65 8.807 1.299 7.301 2.4 5.426 3.77 3.995 5.644 3.22 7.746c-.145.397-.282.82-.282.879 0 .012 3.828.024 10.31.024 8.463 0 10.315-.008 10.315-.036 0-.047-.153-.525-.283-.878-.153-.42-.576-1.31-.82-1.722-.4-.683-.91-1.373-1.474-1.992-1.65-1.82-3.593-2.934-5.82-3.334-.785-.141-1.8-.2-2.585-.153zM23.83 9.97c-.02 0-4.792 0-10.609.004l-10.573.008-.011.059c-.036.16-.134 1.081-.134 1.242 0 .028 1.785.032 10.746.032H24v-.075c0-.102-.07-.791-.106-1.054-.02-.16-.04-.216-.063-.216zm-10.573 2.635c-9.37-.004-10.73 0-10.742.035-.02.04.024.557.075.973.02.157.035.298.035.314 0 .027 2.137.035 10.624.035h10.624l.024-.188c.043-.326.102-.97.094-1.067l-.008-.094zm.003 2.718c-8.882 0-10.321.004-10.321.035 0 .02.054.208.12.42a11.122 11.122 0 002.072 3.741c.282.342.945 1.036 1.228 1.287 1.568 1.4 3.247 2.216 5.18 2.53.605.094.886.113 1.75.11.91 0 1.297-.032 2.023-.177 2.11-.416 3.914-1.451 5.53-3.17 1.267-1.348 2.106-2.76 2.628-4.41l.117-.366z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/eclipsejetty.svg b/assets/lib/simple-icons/icons/eclipsejetty.svg
new file mode 100644
index 00000000..d3f2cd2f
--- /dev/null
+++ b/assets/lib/simple-icons/icons/eclipsejetty.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Eclipse Jetty</title><path d="M4.9847 2.7514a.842.842 0 00-.8203.6525l-.617 2.673a.842.842 0 00.023.4591.842.842 0 00-.222.403L.986 17.1715c-.0428.0033-.0642.0065-.1198.0087a.842.842 0 00-.8086.821l-.0575 2.3853a.842.842 0 00.8446.8622c1.3542-.0049 2.7158-.0093 4.0669-.0156.543-.0142 1.0992-.2356 1.5074-.6331.4083-.3976.6578-.921.842-1.548a.8442.8442 0 00.0127-.048l.093-.4032a.842.842 0 00.8083.6073h2.5182a.842.842 0 00.763-.486l6.8882-14.773c.26-.558-.1472-1.1974-.7628-1.1976h-2.5181a.842.842 0 00-.763.4862L12.8664 6.313a.842.842 0 00-.209-.0265h-2.4478l.578-2.5039c.1216-.5275-.279-1.031-.8203-1.0312zm15.6543 0a.842.842 0 00-.763.4862l-6.8883 14.7728c-.26.5581.1473 1.1974.763 1.1976h2.518a.842.842 0 00.763-.486l6.8884-14.773c.26-.5581-.1473-1.1974-.763-1.1976zm-15.6543.842h4.9827l-.617 2.6729H4.3679zm10.0789 0h2.518l-6.8883 14.7728H8.1751l.3446-.739h1.9084a.842.842 0 00.8202-.6524l.856-3.7076c.1216-.5275-.279-1.031-.8202-1.0312h-.2506l.2603-.5581h.5077a.842.842 0 00.8202-.6526l.856-3.7075a.842.842 0 00.008-.3403zm5.5754 0h2.5182l-6.8885 14.7728h-2.518zM4.1685 7.1284h2.6244l-.8122 3.5182c-.1217.5275.2788 1.0311.8202 1.0313H8.101l-.129.558H6.2835a.842.842 0 00-.8203.6525l-.856 3.7076c-.1215.5275.279 1.031.8202 1.0312h1.3003l-.2741 1.1874c-.321 1.0921-.8075 1.5347-1.5882 1.5778l-4.0236.0144.0575-2.3855c.4885-.0192.7073.0034.851-.4182zm3.4882 0h5.0008l-.8559 3.7077H6.801zm1.3083 4.5495h1.4l-.2604.558H8.8361zm-2.6816 1.3999h5.0008l-.856 3.7076H5.4272Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/eclipsemosquitto.svg b/assets/lib/simple-icons/icons/eclipsemosquitto.svg
index 502cf86d..7e411f10 100644
--- a/assets/lib/simple-icons/icons/eclipsemosquitto.svg
+++ b/assets/lib/simple-icons/icons/eclipsemosquitto.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Eclipse Mosquitto icon</title><path d="M1.353 11.424c0 2.637.964 5.105 2.636 7.013l-1.007.903A11.968 11.968 0 010 11.424C0 8.065 1.38 5.029 3.604 2.85l.05.045L6.637 5.57a7.942 7.942 0 00-1.433 9.963l1.03-.923a6.59 6.59 0 011.416-8.132l1.02.915.909.814.941.844a2.778 2.778 0 00-1.311 2.367c0 1.23.795 2.273 1.899 2.646l.095 1.297a4.024 4.024 0 01-2.483-6.27l-.9-.809-.004-.003a5.233 5.233 0 00.205 6.546l-3.023 2.71a9.291 9.291 0 01-.21-11.97L3.777 4.66a10.599 10.599 0 00-2.407 6.14l-.006.008.005.004c-.011.203-.017.406-.017.612zm11.54 2.639a2.793 2.793 0 00.588-5.013l.941-.844.908-.814 1.021-.915a6.59 6.59 0 011.417 8.132l1.029.923a7.942 7.942 0 00-1.433-9.963l2.981-2.673.05-.045A11.964 11.964 0 0124 11.424c0 2.98-1.095 5.769-2.982 7.916l-1.007-.903a10.61 10.61 0 002.619-7.625l.005-.004-.006-.007a10.598 10.598 0 00-2.407-6.141l-1.008.904a9.291 9.291 0 01-.211 11.97l-3.023-2.71a5.233 5.233 0 00.205-6.546l-.004.003-.9.808a4.024 4.024 0 01-2.482 6.27zM12 21.149l.335-4.571.271-3.712a1.56 1.56 0 10-1.212 0l.271 3.712Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Eclipse Mosquitto</title><path d="M1.353 11.424c0 2.637.964 5.105 2.636 7.013l-1.007.903A11.968 11.968 0 010 11.424C0 8.065 1.38 5.029 3.604 2.85l.05.045L6.637 5.57a7.942 7.942 0 00-1.433 9.963l1.03-.923a6.59 6.59 0 011.416-8.132l1.02.915.909.814.941.844a2.778 2.778 0 00-1.311 2.367c0 1.23.795 2.273 1.899 2.646l.095 1.297a4.024 4.024 0 01-2.483-6.27l-.9-.809-.004-.003a5.233 5.233 0 00.205 6.546l-3.023 2.71a9.291 9.291 0 01-.21-11.97L3.777 4.66a10.599 10.599 0 00-2.407 6.14l-.006.008.005.004c-.011.203-.017.406-.017.612zm11.54 2.639a2.793 2.793 0 00.588-5.013l.941-.844.908-.814 1.021-.915a6.59 6.59 0 011.417 8.132l1.029.923a7.942 7.942 0 00-1.433-9.963l2.981-2.673.05-.045A11.964 11.964 0 0124 11.424c0 2.98-1.095 5.769-2.982 7.916l-1.007-.903a10.61 10.61 0 002.619-7.625l.005-.004-.006-.007a10.598 10.598 0 00-2.407-6.141l-1.008.904a9.291 9.291 0 01-.211 11.97l-3.023-2.71a5.233 5.233 0 00.205-6.546l-.004.003-.9.808a4.024 4.024 0 01-2.482 6.27zM12 21.149l.335-4.571.271-3.712a1.56 1.56 0 10-1.212 0l.271 3.712Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/eclipsevertdotx.svg b/assets/lib/simple-icons/icons/eclipsevertdotx.svg
new file mode 100644
index 00000000..e39141e5
--- /dev/null
+++ b/assets/lib/simple-icons/icons/eclipsevertdotx.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Eclipse Vert.x</title><path d="M3.356.01C1.566.01.027 1.269 0 2.938v1.436h2.515l3.861 8.896 4.028-8.791h5.078l2.182 3.986 2.56-3.986H24V2.946C24 1.281 22.44.011 20.645.011zM24 5.668l-8.874 13.56H12.44c-.02-.629-.188-1.237-.503-1.74l3.609-5.708-2.744-4.36-3.829 8.42-.036-.002a3.443 3.443 0 0 0-3.434 3.433c0 .021.003.042.004.063h-.263L0 7.5v13.553c0 1.665 1.56 2.935 3.356 2.935h17.289c1.812 0 3.355-1.276 3.355-2.935v-1.826h-3.587l-1.594-2.874 2.224-3.378L24 17.638zm-15.066 11.5a2.102 2.102 0 0 1 2.109 2.103 2.106 2.106 0 1 1-4.212 0c0-1.16.937-2.1 2.103-2.103Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/edeka.svg b/assets/lib/simple-icons/icons/edeka.svg
new file mode 100644
index 00000000..0cb733c4
--- /dev/null
+++ b/assets/lib/simple-icons/icons/edeka.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>EDEKA</title><path d="M10.901 18.997h2.688v.699h-1.857v.297h1.857v.699h-1.857v.295h1.857v.698h-2.688zm-6.476 0h2.686v.699H5.253v.297h1.858v.699H5.253v.295h1.858v.698H4.425ZM17.996 19l-.92 2.685h.827l.182-.552h1.066l.172.552h.834L19.233 19Zm.617.593.319.91h-.635ZM14.076 19h.827v1.024L15.839 19h1.089l-1.055 1.144 1.144 1.541h-1.053l-.673-.914-.387.402v.512h-.828zm-6.459 0v2.685h1.59a1.344 1.344 0 0 0 0-2.685zm.827.71h.652a.6335.6335 0 1 1 0 1.267h-.65ZM4.432 2.318h15.136V6.32H9.104v1.563h10.463v4.004H9.104v1.56h10.463v4.004H4.432ZM2.116 0v24h19.768V0Zm.176.177h19.413v23.647H2.291Zm2.1364 18.8206h2.6852v.6988H5.2564v.2967h1.8572v.6989H5.2564v.2943h1.8572v.6988H4.4284Zm6.4758 0h2.6876v.6988h-1.857v.2967h1.857v.6989h-1.857v.2943h1.857v.6988h-2.6876zM17.998 19l-.9199 2.6855h.8281l.1817-.5527h1.0644l.172.5527h.8359l-.9239-2.6855zm.6172.5937.3184.9082h-.6348ZM14.078 19h.828v1.0243L15.8417 19h1.0889l-1.0554 1.144 1.144 1.5412H15.966l-.6725-.9142-.3877.402v.5122h-.828zM7.621 19v2.6855H9.209c.7395-.0023 1.3384-.6081 1.336-1.3476-.0025-.7347-.599-1.3355-1.336-1.3379Zm.8262.711h.6504c.3494 0 .6347.2814.6347.6308 0 .3494-.2853.6348-.6347.6348h-.6504ZM4.4345 2.317h15.1347v4.004H9.106v1.5627h10.463v4.0039H9.1062v1.5604h10.463v4.0039H4.4346Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/editorconfig.svg b/assets/lib/simple-icons/icons/editorconfig.svg
new file mode 100644
index 00000000..c4003942
--- /dev/null
+++ b/assets/lib/simple-icons/icons/editorconfig.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>EditorConfig</title><path d="M10.325.402c-.242-.013-1.006.34-1.402.544-.897.472-1.14.632-1.806 1.54-.766 1.046-1.084 1.638-1.213 2.181-.383 1.392-.533 2.089-1.148 2.934-.457.344-.546.792-.911 1.305-.234.327-.862 1.43-.863 1.517-.003.163-.05.2-.539.184-.526-.018-.736.039-1.003.299-.24.232-.288.24-.289 1.054 0 .98.229 1.09.574 1.545C1.207 14.798.098 18.578 0 20.885c0 .195.015.706.131 1.741.137.296.337.514.587.671.822.062 1.762.302 3.39.302 1.315 0 3.857-.58 4.06-.635.693-.185 1.771-.76 2.51-1.187.174-.1 1.395-.542 1.856-.89.239-.181 1.461-.872 1.887-1.206.876-.687.96-.835 1.717-1.942.345-.505.497-.644.829-1.455l.01-.703c.262.09 2.184.608 2.41.743.367.219.012.448-.183.677-.14.165.092.323.224.203.192-.174.781-.564.744-.76 0-.134-.315-.328-.807-.572-.446-.221-.416-.218-.256-.265.905-.301 1.406-.437 2.032-.8 1.677-1.042 2.555-1.976 2.761-2.927.198-.876.09-1.52-.273-2.294-.183-.683-.513-.935-1.24-1.237-.848-.353-2.396-.51-3.012-.3-.517.175-1.777.738-2.416 1.057-.346.173-.633.307-.638.297-.156-.254-.32-.506-.463-.79-.252-.5-.37-.659-.624-.777-.133-.062-.385-.175-.684-.385-.496-.344-1.162-.82-2.723-1.243.892-1.545.904-1.74 1.039-2.587.125-.629.168-1.685.039-1.97-.117-.257-.617-.8-.955-.962-.66-.315-1.075-.287-1.627-.287zm.023.564c.172-.001.369.022.622.07.44.085.728.2 1.171.47l.3.182.065.525c.069.564.046.986-.073 1.348-.04.124-.134.424-.207.667-.145.484-.498 1.015-.636 1.236-.03.05-.125-.022-.166.08-.184.466-.4.487-.76.52-.113.01-.889-.046-1.687-.07-.963.028-1.337-.22-2.518.258-.253.096.528-1.41.61-1.56.21-.38 1.327-1.66 1.6-1.762.23-.086.456-.341.656-.532.33-.315.418-.348.765-.415.324-.063 1.066-.29 1.43-.037.225.178.381.537.346.821-.069.566-.149.792-.497 1.31-.824 1.227-.806 1.251-.699 1.313.105.06.085.094.067.161-.056.206.007.163.161.11.315-.11.802-.996 1.119-2.001.192-.611.19-.335.16-1.12-.017-.465-.029-.415-.182-.665-.227-.37-.45-.49-1.22-.49-.83-.002-1.143.033-1.676.515-.603.544-1.083.77-1.949 2.054-.427.461-.92 1.615-1.149 2.427-.029-.005-.043.02-.015-.366.043-.588.185-.988.79-2.225.429-.874.58-1.133.76-1.3.613-.57 1.66-1.217 2.34-1.445.153-.052.3-.078.472-.08zm1.285 6.017c1.406.541 2.34.62 3.442 1.654.68 1.108.9 2.22 1.246 3.435.343 1.06.33 2.738.321 2.97-.414-.157-.826-.197-1.292-.214-.06-.542-1.137-.636-1.531-.825-.512-.228-1.295-.364-2.3-.527-.96-.22-1.753-.111-2.722-.125-.11.1-.19.186-.278.317-.15-.08-.354-.275-.634-.264-.105 0-.117-.018-.08-.28.024-.168.102-.305.017-.383-.221-.204-.167-.218-.201-.316-1.107-.64-3.029-1.611-4.02-1.71.34-.476.195-.52.303-.691.272-.429.968-1.343 1.123-1.694 0-.229.723-.984 1.403-1.503 1.43-.28 3.565-.265 5.203.156zm8.519 1.505c1.605.041 2.166.236 2.697.777.524.55.698.877.698 1.31 0 .354-.278 1.343-.462 1.647-.7 1.152-2.265 2.404-3.6 2.88-.316.111-.478.133-1.096.148-.403.035-.91-.043-1.297-.13.22-2.561.026-2.73-.198-3.771.09-.22.505-.48.422-.611.776-.49 1.325-1.04 1.933-1.228.408-.15.493-.161 1.343-.186.802-.023.944-.014 1.224.075.597.19 1.265.746 1.265 1.053 0 .193.044.242.137.241.22-.002.151-.326.037-.559-.378-.704-.968-.954-1.533-1.081-.143-.03-.6-.099-1.013-.118-.591-.027-.84-.005-1.143.06-.48.102-.898.239-1.302.596-.31.275-.857.591-1.305.805-.106.015-.174-.17-.256-.267 1.053-.807 2.03-1.521 3.449-1.64zM2.718 10.96c-.304.488-.515.842-.524 1.226-.12.301-.227.595-.38.907-.373-.376-.254-1.176-.093-1.517.357-.69.368-.508.997-.616zm.798.111c1.097.336 2.247.64 3.698 1.535.278.167.13.5.024 1.034a1.675 1.675 0 0 1-1.133.607c.431-.434.878-1.195.402-1.714-.118-.156-.15-.181-.358-.166-.284.02-.288-.006-.44.389-.327.385-.492 1.292-.382 1.576-.566-.033-2.077-.152-2.95-.709.094-.243.335-.595.358-.914.119-.241.62-1.665.78-1.638zm2.7 1.709c.167.282-.192 1.135-.417 1.241-.165-.602.167-1.17.416-1.241zm3.534.831c.437 0 1.24.092 2.21.253.836.138.995.177 1.715.414.854.264.798.364 1.087.785.063.09.156.366.205.609.109.533-.402.943-1.44 1.157-.354.073-.673.097-1.23.093-.879-.007-1.19-.044-1.685-.2-.736-.231-1.114-.555-1.519-1.233-.22-.37-.273-.414-.242-.685.064-.562.183-.927.346-1.064.134-.113.203-.129.553-.129zm-1.984.085c.1-.003.586.224.683.29-.142.385-.009 1.322.383 1.777.092.143.318.465.535.68.684.683 1.13.795 2.656.796 1.278.002 1.65-.068 2.285-.272.589-.188.768-.428.837-.595.17-.402.252-.817.211-1.247l1.287.366c-.106.866-.587 1.375-.944 1.821-.266.428-.816 1.23-.971 1.364-.747.643-1.436 1.095-2.928 1.936-.439.248-1.618.706-1.924.859-.312.156-1.417.81-1.569.855a9.49 9.49 0 0 1-1.554.315c-.4.047-1.82.262-2.725.299-.66.014-.84-.054-1.657-.03-.438-.084-1.396-.301-1.396-.301-.285-.457-.359-.807-.439-1.336.664.778 1.063 1.041 1.595 1.041.479 0 .725-.18.92-.18.123 0 .454-.233.437-.385a1.03 1.03 0 0 0-.253-.605c-.23-.147-1.6-.691-1.832-.691-.64 0-.781.05-.85.18.395-2.142.909-4.616 1.67-6.62 1.174.514 3.097.887 4.043.568 1.452-.51 1.12-.685 1.5-.885zm3.817.15c-.168 0-.586.458-.744.815-.159.359-.202.911-.083 1.055.098.118.503.12.707-.004.398-.243.779-1.096.682-1.538-.035-.16-.33-.328-.562-.328zm.026.39c.148.178-.04.659-.213.85-.204.216-.406.247-.348.058.14-.353.456-.914.561-.908zM2.68 21.462c.156.049.353.27.315.33-.638.036-.998-.008-1.051-.012-.217-.017-.917-.32-.897-.657.027-.395 1.32.31 1.633.339z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/edotleclerc.svg b/assets/lib/simple-icons/icons/edotleclerc.svg
new file mode 100644
index 00000000..131c4916
--- /dev/null
+++ b/assets/lib/simple-icons/icons/edotleclerc.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>E.Leclerc</title><path d="M12.0006 0C5.4304 0 .104 5.373.104 12.0006.1041 18.628 5.4304 24 12.0006 24c6.57 0 11.8953-5.372 11.8953-11.9994C23.8959 5.373 18.5705 0 12.0006 0zm0 2.491c5.2064 0 9.4266 4.2576 9.4266 9.5096 0 5.2518-4.2202 9.5085-9.4266 9.5085-5.2065 0-9.4278-4.2567-9.4278-9.5085 0-5.252 4.2213-9.5097 9.4278-9.5097zm1.1477 1.9912c-1.4425 0-2.7735.4696-3.8562 1.266h3.1929V8.982c-.556.0284-1.0156.4782-1.0156 1.0436v5.4499h.9442c1.2058 0 1.5093-1.4532 1.5093-1.4532h2.836l.001 2.5939c1.7738-1.1835 2.9437-3.215 2.9437-5.5212 0-3.6525-2.9346-6.6128-6.5554-6.6128zM6.49 6.7322v1.6204c.5462.1418 1.018.6113 1.018 1.3817v5.4592c0 .6162-.4365 1.1693-1.018 1.315v2.0943h9.3003V15.004l-1.2344.007c-.348.8466-1.1771 1.4415-2.1422 1.4415h-1.913V9.691c0-.6981.4543-1.1824 1.0156-1.335V6.7322z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/edx.svg b/assets/lib/simple-icons/icons/edx.svg
new file mode 100644
index 00000000..28d51dc0
--- /dev/null
+++ b/assets/lib/simple-icons/icons/edx.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>edX</title><path d="M6.359 10.416c.053.162.079.334.079.516a3.154 3.154 0 0 1-.011.231h-3c.065-.236.152-.451.262-.644.109-.193.239-.359.39-.497.15-.138.318-.246.503-.321.184-.075.383-.113.595-.113.209 0 .392.036.549.108.156.071.288.169.394.292.107.123.186.266.239.428zm5.444-.4a1.206 1.206 0 0 0-.436-.305 1.48 1.48 0 0 0-.58-.108c-.284 0-.547.063-.79.19a1.952 1.952 0 0 0-.631.528 2.61 2.61 0 0 0-.421.808 3.305 3.305 0 0 0-.154 1.029c0 .233.033.446.1.641s.16.362.28.5c.12.138.263.246.431.323.168.077.354.116.56.116.287 0 .553-.067.798-.203.244-.135.458-.32.639-.554a2.71 2.71 0 0 0 .426-.826c.102-.316.154-.658.154-1.024 0-.236-.033-.448-.098-.636a1.405 1.405 0 0 0-.278-.479zM24 7.468l-2.398 11.276H10.727l.625-2.852H0L2.227 5.256h13.577l-.462 2.212H24zM7.362 11.045a2.51 2.51 0 0 0-.169-.954 2.069 2.069 0 0 0-.457-.7 1.951 1.951 0 0 0-.669-.434 2.22 2.22 0 0 0-.809-.148 2.73 2.73 0 0 0-1.162.246 2.628 2.628 0 0 0-.911.695c-.253.3-.451.659-.593 1.077a4.346 4.346 0 0 0-.212 1.393c0 .373.059.703.177.99a2.01 2.01 0 0 0 1.198 1.172c.273.101.564.151.872.151.321 0 .616-.039.885-.115a2.55 2.55 0 0 0 .708-.318c.204-.135.372-.295.505-.48a1.84 1.84 0 0 0 .287-.595h-.938a1.279 1.279 0 0 1-.508.513c-.222.126-.517.19-.883.19-.168 0-.333-.028-.497-.085a1.202 1.202 0 0 1-.444-.274 1.41 1.41 0 0 1-.321-.49 1.913 1.913 0 0 1-.123-.726c0-.048.001-.094.003-.138.002-.044.004-.09.008-.138h3.986c.01-.051.019-.114.026-.187l.02-.226a6.153 6.153 0 0 0 .021-.419zm5.036 3.392L14.04 6.71h-.898l-.682 3.217h-.082a1.406 1.406 0 0 0-.228-.454 1.56 1.56 0 0 0-.375-.354 1.786 1.786 0 0 0-.487-.228 1.93 1.93 0 0 0-.567-.082 2.506 2.506 0 0 0-1.45.456 2.892 2.892 0 0 0-.575.534c-.173.208-.32.442-.444.7a3.925 3.925 0 0 0-.285.841c-.066.303-.1.62-.1.952 0 .342.053.652.159.929.106.277.25.513.434.708.183.195.395.345.639.449.243.105.503.157.78.157.352 0 .681-.076.985-.228.304-.152.557-.36.759-.623h.082l-.159.754h.852zm6.116-1.39l3.578-4.125H20.09l-2.184 2.704h-.108l-1.155-2.704h-2.025l1.736 3.928-3.748 4.44h1.976l2.406-2.852h.162l1.3 2.852h1.988l-1.924-4.243z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/egghead.svg b/assets/lib/simple-icons/icons/egghead.svg
new file mode 100644
index 00000000..0cbccb55
--- /dev/null
+++ b/assets/lib/simple-icons/icons/egghead.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>egghead</title><path d="M11.998 0c-1.649 0-3.223.893-4.679 2.655-.934 1.134-1.818 2.638-2.567 4.368-1.338.207-2.399.48-3.143.814a2.04 2.04 0 0 0-1.21 1.93c.041 1.433.385 2.925.64 3.924.22.868.95 1.512 1.838 1.623v.018A9.121 9.121 0 0 0 11.997 24l-.003-.001a9.133 9.133 0 0 0 9.127-8.667v-.016a2.175 2.175 0 0 0 1.84-1.626c.255-.997.599-2.489.64-3.93a2.036 2.036 0 0 0-1.21-1.926c-.765-.34-1.825-.616-3.154-.816-.748-1.727-1.634-3.228-2.565-4.361C15.22.894 13.647 0 11.998 0zm-.008.828c1.412 0 2.786.797 4.084 2.37.948 1.15 1.844 2.71 2.585 4.512 1.206.163 2.448.413 3.33.806.491.217.8.71.784 1.245-.038 1.346-.371 2.785-.61 3.738a1.458 1.458 0 0 1-1.397 1.104h-.014c-.146 0-.291-.01-.437-.013a8.443 8.443 0 0 1-.558 3.29 8.335 8.335 0 0 1-7.763 5.287h-.002v-.001A8.344 8.344 0 0 1 4.23 17.88a8.446 8.446 0 0 1-.573-3.288c-.14.003-.278.013-.418.013h-.007a1.458 1.458 0 0 1-1.395-1.104c-.248-.955-.577-2.386-.616-3.73a1.325 1.325 0 0 1 .784-1.252c.837-.371 2.075-.63 3.313-.803C6.066 5.914 6.96 4.352 7.906 3.2 9.204 1.625 10.578.828 11.99.828zm0 .77a3.365 3.365 0 0 0-1.691.492c-1.831 1.058-3.25 3.558-4.108 5.528 1.096-.118 2.137-.181 2.788-.172.54-.005 1.06.21 1.44.594A3.868 3.868 0 0 1 12 7.674a3.867 3.867 0 0 1 1.582.365 1.994 1.994 0 0 1 1.427-.593c.43-.007 1.535.036 2.776.162-.852-1.958-2.273-4.461-4.104-5.518a3.374 3.374 0 0 0-1.692-.491zm3.215 7.045v.004a.922.922 0 0 0-.93.774c-.099.53-.164 1.064-.196 1.601-.007.614.214 1.034.651 1.25 1.252.558 2.66.898 4.27 1.034-.189-1.377-.578-2.958-1.112-4.495-1.087-.122-2.12-.177-2.683-.168zm-6.422.001a25.896 25.896 0 0 0-2.644.159c-.533 1.54-.924 3.123-1.108 4.5 1.59-.14 2.983-.48 4.226-1.034.44-.214.66-.636.653-1.252a12.746 12.746 0 0 0-.198-1.6.92.92 0 0 0-.93-.773zM5.29 8.91c-.624.09-1.242.21-1.79.364l1.509.533c.087-.299.183-.598.281-.897zm13.453.01c.096.29.188.581.274.872l1.46-.515a14.497 14.497 0 0 0-1.734-.357zm-6.746.34a.859.859 0 0 0-.478.144c-.303.2-.408.581-.378.868.122 1.139.07 2.388-1.229 3.01l-.015.008a11.37 11.37 0 0 1-1.93.707c-1.162.308-2.351.5-3.548.573a7.574 7.574 0 0 0 14.627 3.007 7.584 7.584 0 0 0 .506-3.009 18.16 18.16 0 0 1-3.525-.572c-.664-.175-1.31-.41-1.931-.7l-.014-.012c-1.303-.623-1.352-1.871-1.23-3.01.03-.287-.075-.668-.378-.87a.859.859 0 0 0-.477-.145zm-9.352 1.875c.113.726.271 1.422.407 1.95.044.17.196.29.37.29.289-.001.554-.024.83-.037.075-.612.197-1.27.35-1.95a203.22 203.22 0 0 1-1.957-.253zm18.695 0c-.746.099-1.506.198-1.909.246.155.683.275 1.344.352 1.96.26.01.508.034.778.036a.385.385 0 0 0 .37-.289c.136-.53.296-1.226.409-1.953Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/egnyte.svg b/assets/lib/simple-icons/icons/egnyte.svg
index 68663800..0e34a6c4 100644
--- a/assets/lib/simple-icons/icons/egnyte.svg
+++ b/assets/lib/simple-icons/icons/egnyte.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Egnyte icon</title><path d="M16.742 11.214l-.447-.78a.062.062 0 0 0-.082-.022l-2.014 1.162-1.986-1.167a.062.062 0 0 0-.082.021l-.458.78a.062.062 0 0 0 .021.083l2.009 1.178v2.363c0 .033.027.06.06.06h.89a.06.06 0 0 0 .06-.06v-2.374l2.007-1.162c.028-.016.039-.055.022-.082zm-3.863 1.583c-.017-.028-.055-.038-.088-.022l-1.342.797c-.027.016-.038.054-.022.087l.191.327c.016.028.055.039.087.022l1.343-.797c.027-.016.038-.054.022-.087zm1.533-3.69l-.442.006c-.016 0-.027.011-.027.033l.005 1.62c0 .017.011.028.033.028h.442c.016 0 .027-.01.027-.033l-.005-1.62a.035.035 0 0 0-.033-.033zm2.554 4.377l-1.413-.791c-.017-.005-.033-.005-.039.011l-.218.387c-.005.017-.005.033.011.039l1.413.79c.017.006.033.006.039-.01l.218-.388c.01-.01.005-.032-.011-.038zm-14.057.12h-1.9v-.584h1.687a.075.075 0 0 0 .076-.076v-.65a.075.075 0 0 0-.076-.076H1.01v-.556h1.87a.075.075 0 0 0 .077-.077v-.715a.075.075 0 0 0-.077-.076H.076A.075.075 0 0 0 0 10.87v3.526c0 .043.033.076.076.076H2.91a.075.075 0 0 0 .076-.076v-.715a.078.078 0 0 0-.076-.077zm3.967-1.282H5.26v.748h.725v.442c0 .005 0 .01-.005.01-.153.099-.338.148-.584.148-.584 0-.999-.426-.999-1.02v-.012c0-.562.41-1.01.939-1.01.338 0 .584.11.83.301.032.027.081.022.103-.01l.502-.607a.078.078 0 0 0-.01-.109c-.377-.305-.82-.485-1.436-.485-1.14 0-1.98.84-1.98 1.915v.01c0 1.114.856 1.905 2.002 1.905a2.49 2.49 0 0 0 1.572-.545.088.088 0 0 0 .027-.06v-1.545c.005-.043-.027-.076-.071-.076zm4.044-1.533h-.857a.075.075 0 0 0-.077.076v1.866l-1.49-1.915a.088.088 0 0 0-.06-.027h-.834a.075.075 0 0 0-.077.076v3.525c0 .044.033.077.077.077h.856a.075.075 0 0 0 .077-.077v-1.943l1.55 1.992a.088.088 0 0 0 .06.028h.78a.075.075 0 0 0 .076-.077v-3.525c-.005-.038-.043-.076-.081-.076zm9.571 0H17.42a.075.075 0 0 0-.077.076v.742c0 .044.033.076.077.076h1.026v2.713c0 .043.032.076.076.076h.868a.075.075 0 0 0 .076-.076v-2.702c0-.005.006-.01.011-.01h1.015a.075.075 0 0 0 .077-.077v-.742a.078.078 0 0 0-.077-.076zm3.433 2.815h-1.9v-.584h1.692a.075.075 0 0 0 .077-.076v-.65a.075.075 0 0 0-.077-.076h-1.691v-.556h1.871a.075.075 0 0 0 .077-.077v-.715a.075.075 0 0 0-.077-.076h-2.805a.075.075 0 0 0-.076.076v3.526c0 .043.033.076.076.076h2.833a.075.075 0 0 0 .076-.076v-.715a.075.075 0 0 0-.076-.077Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Egnyte</title><path d="M16.742 11.214l-.447-.78a.062.062 0 0 0-.082-.022l-2.014 1.162-1.986-1.167a.062.062 0 0 0-.082.021l-.458.78a.062.062 0 0 0 .021.083l2.009 1.178v2.363c0 .033.027.06.06.06h.89a.06.06 0 0 0 .06-.06v-2.374l2.007-1.162c.028-.016.039-.055.022-.082zm-3.863 1.583c-.017-.028-.055-.038-.088-.022l-1.342.797c-.027.016-.038.054-.022.087l.191.327c.016.028.055.039.087.022l1.343-.797c.027-.016.038-.054.022-.087zm1.533-3.69l-.442.006c-.016 0-.027.011-.027.033l.005 1.62c0 .017.011.028.033.028h.442c.016 0 .027-.01.027-.033l-.005-1.62a.035.035 0 0 0-.033-.033zm2.554 4.377l-1.413-.791c-.017-.005-.033-.005-.039.011l-.218.387c-.005.017-.005.033.011.039l1.413.79c.017.006.033.006.039-.01l.218-.388c.01-.01.005-.032-.011-.038zm-14.057.12h-1.9v-.584h1.687a.075.075 0 0 0 .076-.076v-.65a.075.075 0 0 0-.076-.076H1.01v-.556h1.87a.075.075 0 0 0 .077-.077v-.715a.075.075 0 0 0-.077-.076H.076A.075.075 0 0 0 0 10.87v3.526c0 .043.033.076.076.076H2.91a.075.075 0 0 0 .076-.076v-.715a.078.078 0 0 0-.076-.077zm3.967-1.282H5.26v.748h.725v.442c0 .005 0 .01-.005.01-.153.099-.338.148-.584.148-.584 0-.999-.426-.999-1.02v-.012c0-.562.41-1.01.939-1.01.338 0 .584.11.83.301.032.027.081.022.103-.01l.502-.607a.078.078 0 0 0-.01-.109c-.377-.305-.82-.485-1.436-.485-1.14 0-1.98.84-1.98 1.915v.01c0 1.114.856 1.905 2.002 1.905a2.49 2.49 0 0 0 1.572-.545.088.088 0 0 0 .027-.06v-1.545c.005-.043-.027-.076-.071-.076zm4.044-1.533h-.857a.075.075 0 0 0-.077.076v1.866l-1.49-1.915a.088.088 0 0 0-.06-.027h-.834a.075.075 0 0 0-.077.076v3.525c0 .044.033.077.077.077h.856a.075.075 0 0 0 .077-.077v-1.943l1.55 1.992a.088.088 0 0 0 .06.028h.78a.075.075 0 0 0 .076-.077v-3.525c-.005-.038-.043-.076-.081-.076zm9.571 0H17.42a.075.075 0 0 0-.077.076v.742c0 .044.033.076.077.076h1.026v2.713c0 .043.032.076.076.076h.868a.075.075 0 0 0 .076-.076v-2.702c0-.005.006-.01.011-.01h1.015a.075.075 0 0 0 .077-.077v-.742a.078.078 0 0 0-.077-.076zm3.433 2.815h-1.9v-.584h1.692a.075.075 0 0 0 .077-.076v-.65a.075.075 0 0 0-.077-.076h-1.691v-.556h1.871a.075.075 0 0 0 .077-.077v-.715a.075.075 0 0 0-.077-.076h-2.805a.075.075 0 0 0-.076.076v3.526c0 .043.033.076.076.076h2.833a.075.075 0 0 0 .076-.076v-.715a.075.075 0 0 0-.076-.077Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/eightsleep.svg b/assets/lib/simple-icons/icons/eightsleep.svg
new file mode 100644
index 00000000..0e2e250f
--- /dev/null
+++ b/assets/lib/simple-icons/icons/eightsleep.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Eight Sleep</title><path d="M19.847 7.28V4.105A4.104 4.104 0 0 0 15.745 0H8.258a4.104 4.104 0 0 0-4.105 4.102v3.183a4.092 4.092 0 0 0 2.415 3.738v.588a4.102 4.102 0 0 0-2.415 3.738v4.546A4.104 4.104 0 0 0 8.255 24h7.488a4.104 4.104 0 0 0 4.104-4.104v-4.553a4.102 4.102 0 0 0-2.415-3.738v-.587a4.102 4.102 0 0 0 2.415-3.738zM8.451 5.126c0-.818.662-1.482 1.48-1.483h4.133c.819 0 1.483.663 1.483 1.482v1.991c0 .819-.664 1.482-1.483 1.482H9.93a1.482 1.482 0 0 1-1.482-1.482l.003-1.99zm7.1 13.732c0 .818-.664 1.482-1.483 1.482H9.93a1.482 1.482 0 0 1-1.482-1.482v-2.752c0-.819.664-1.483 1.482-1.483h4.134c.819 0 1.483.664 1.483 1.483l.003 2.752z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/elastic.svg b/assets/lib/simple-icons/icons/elastic.svg
index addb9677..1bc13e40 100644
--- a/assets/lib/simple-icons/icons/elastic.svg
+++ b/assets/lib/simple-icons/icons/elastic.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Elastic icon</title><path d="M20.32 16.3152l-3.9463-.923-1.048-2.0031 5.1615-4.522c1.5305.5798 2.551 2.0476 2.551 3.6903 0 1.6906-1.1146 3.2278-2.7182 3.7578m-2.9667 4.666c-.6147 0-1.217-.2062-1.709-.5845l.7801-4.0648 3.5847.8388c.1139.3094.1714.6396.1714.9835 0 1.559-1.268 2.827-2.8272 2.827m-2.6292-.5844a5.902 5.902 0 0 1-4.8925 2.593c-3.2651 0-5.9215-2.6564-5.9215-5.921 0-.4008.039-.7966.1156-1.1785l5.1509-4.6553 5.2557 2.3956 1.1637 2.2235zM.9636 11.443c0-1.69 1.1145-3.2266 2.7175-3.7577l3.9374.93.9242 1.9747-5.0336 4.5498C1.9815 14.558.9636 13.0885.9636 11.4429m5.6847-8.424a2.8325 2.8325 0 0 1 1.718.5798l-.7861 4.079-3.5876-.847c-.114-.3095-.1714-.6397-.1714-.984 0-1.5592 1.268-2.8278 2.8271-2.8278m2.653.5875c1.1044-1.6082 2.9212-2.5674 4.8692-2.5674 3.2562 0 5.9049 2.6492 5.9049 5.9055 0 .3983-.0373.7789-.1139 1.1607l-5.2819 4.628-5.235-2.3865-1.022-2.1822zm14.662 8.9622c0-2.0052-1.2432-3.7582-3.114-4.4403a6.6742 6.6742 0 0 0 .125-1.2855c0-3.7274-3.0325-6.76-6.7605-6.76-2.1775 0-4.2033 1.0443-5.4761 2.804a3.575 3.575 0 0 0-2.1963-.7516c-1.9786 0-3.5883 1.6097-3.5883 3.5882 0 .4373.078.8557.2244 1.2505-1.86.6712-3.139 2.4653-3.139 4.4579 0 2.0155 1.2493 3.7763 3.1287 4.4536a6.8545 6.8545 0 0 0-.1233 1.285c0 3.7189 3.0252 6.7441 6.7441 6.7441 2.183 0 4.2075-1.0485 5.4732-2.8155.63.4947 1.4004.7662 2.1994.7662 1.9784 0 3.5881-1.609 3.5881-3.5876 0-.4373-.078-.8562-.2243-1.2512 1.86-.6706 3.139-2.4652 3.139-4.4578"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Elastic</title><path d="M20.345 16.33l-3.959-.926-1.05-2.01 5.177-4.535a3.962 3.962 0 012.559 3.702 4.006 4.006 0 01-2.727 3.77m-2.976 4.68c-.616 0-1.22-.207-1.714-.587l.782-4.077 3.596.841c.115.31.172.642.172.987a2.839 2.839 0 01-2.836 2.836m-2.637-.586a5.92 5.92 0 01-4.908 2.6A5.947 5.947 0 014 15.905l5.167-4.67 5.272 2.403 1.167 2.23zM.928 11.443a4.007 4.007 0 012.726-3.77l3.95.933.927 1.98-5.05 4.565a3.97 3.97 0 01-2.553-3.708m5.703-8.45a2.841 2.841 0 011.723.58l-.789 4.092-3.598-.85a2.842 2.842 0 01-.172-.986A2.84 2.84 0 016.63 2.992m2.66.59A5.92 5.92 0 0120.1 6.93c0 .4-.038.781-.114 1.164l-5.299 4.643-5.251-2.394-1.026-2.19zM24 12.571a4.723 4.723 0 00-3.124-4.454 6.695 6.695 0 00.126-1.29A6.789 6.789 0 0014.22.047 6.769 6.769 0 008.727 2.86a3.586 3.586 0 00-2.204-.754A3.604 3.604 0 003.15 6.959 4.786 4.786 0 000 11.431 4.727 4.727 0 003.139 15.9a6.876 6.876 0 00-.124 1.289 6.773 6.773 0 006.765 6.765c2.19 0 4.22-1.052 5.49-2.824a3.568 3.568 0 002.207.769 3.603 3.603 0 003.374-4.854A4.785 4.785 0 0024 12.572"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/elasticcloud.svg b/assets/lib/simple-icons/icons/elasticcloud.svg
index b314221e..52029094 100644
--- a/assets/lib/simple-icons/icons/elasticcloud.svg
+++ b/assets/lib/simple-icons/icons/elasticcloud.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Elastic Cloud icon</title><path d="M22.62 19.46a11.95 11.95 0 0 1-9.32 4.48 11.95 11.95 0 0 1-9.32-4.48A11.95 11.95 0 0 1 13.3 15c3.76 0 7.14 1.76 9.32 4.48zM10.32 12c0-1.52 1.25-2.99 2.62-2.99h.42c3.91 0 7.1-1.76 9.29-4.48A12.05 12.05 0 0 0 13.3.05a11.95 11.95 0 0 0-9.32 4.48A11.83 11.83 0 0 0 1.35 12c0 1.94.45 3.76 1.29 5.38a14.3 14.3 0 0 1 7.85-4.45c-.09-.3-.18-.63-.18-.93z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Elastic Cloud</title><path d="M13.318 0c-6.628 0-12 5.372-12 12 0 2.008.495 3.9 1.368 5.563a14.299 14.299 0 0 1 5.09-3.664c.307-.13.624-.22.948-.28A4.842 4.842 0 0 1 8.443 12a4.875 4.875 0 0 1 7.494-4.11 2.218 2.218 0 0 0 2.055.164 12.047 12.047 0 0 0 4.69-3.554A11.975 11.975 0 0 0 13.318 0zM9.426 15.77c-.266.01-.531.069-.783.175a12.044 12.044 0 0 0-4.69 3.555c2.2 2.742 5.576 4.5 9.365 4.5 3.789 0 7.165-1.758 9.364-4.5a12.048 12.048 0 0 0-4.69-3.555 2.217 2.217 0 0 0-2.055.165 4.845 4.845 0 0 1-2.62.765 4.846 4.846 0 0 1-2.618-.765 2.193 2.193 0 0 0-1.273-.34z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/elasticsearch.svg b/assets/lib/simple-icons/icons/elasticsearch.svg
index ebab5bec..4b91145e 100644
--- a/assets/lib/simple-icons/icons/elasticsearch.svg
+++ b/assets/lib/simple-icons/icons/elasticsearch.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Elasticsearch icon</title><path d="M11.27 15.58H1.61A11.81 11.81 0 0 1 1.07 12c0-1.25.18-2.45.54-3.58h15.86A3.57 3.57 0 0 1 21.05 12a3.56 3.56 0 0 1-3.55 3.58zm-.45 1.2H2.05a11.8 11.8 0 0 0 4.39 5.18A11.8 11.8 0 0 0 13 23.93c4.15 0 7.78-2.12 9.93-5.3a6.08 6.08 0 0 0-4.35-1.86zm7.76-9.55c1.7 0 3.25-.72 4.35-1.85A11.96 11.96 0 0 0 2.05 7.23h8.74z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Elasticsearch</title><path d="M13.394 0C8.683 0 4.609 2.716 2.644 6.667h15.641a4.77 4.77 0 0 0 3.073-1.11c.446-.375.864-.785 1.247-1.243l.001-.002A11.974 11.974 0 0 0 13.394 0zM1.804 8.889a12.009 12.009 0 0 0 0 6.222h14.7a3.111 3.111 0 1 0 0-6.222zm.84 8.444C4.61 21.283 8.684 24 13.395 24c3.701 0 7.011-1.677 9.212-4.312l-.001-.002a9.958 9.958 0 0 0-1.247-1.243 4.77 4.77 0 0 0-3.073-1.11z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/elasticstack.svg b/assets/lib/simple-icons/icons/elasticstack.svg
index 00acdee3..0b79e7e5 100644
--- a/assets/lib/simple-icons/icons/elasticstack.svg
+++ b/assets/lib/simple-icons/icons/elasticstack.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Elastic Stack icon</title><path d="M.07 2.45A2.4 2.4 0 0 1 2.45.07h19.1a2.4 2.4 0 0 1 2.38 2.38v4.78H.07zM.07 16.77H11.4v7.16H2.45a2.38 2.38 0 0 1-2.38-2.32zM12.6 16.77h11.33v4.78c0 1.28-1.1 2.38-2.38 2.38H12.6zM.07 8.42h23.86v7.16H.07z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Elastic Stack</title><path d="M1.875 0C.839 0 0 .84 0 1.875v4.792h24V1.875C24 .839 23.16 0 22.125 0zM0 8.889v6.222h24V8.89zm0 8.444v4.792C0 23.161.84 24 1.875 24h9v-6.667zm13.125 0V24h9C23.161 24 24 23.16 24 22.125v-4.792z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/electron.svg b/assets/lib/simple-icons/icons/electron.svg
index b37fa6c5..72639c82 100644
--- a/assets/lib/simple-icons/icons/electron.svg
+++ b/assets/lib/simple-icons/icons/electron.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 24 24"><title>Electron icon</title><path d="M2.648 11.678c-1.038-1.81-1.249-3.504-.511-4.781.988-1.712 3.468-2.31 6.604-1.739a.322.322 0 1 1-.115.633c-2.9-.528-5.111.005-5.932 1.428-.605 1.047-.423 2.509.512 4.14a.322.322 0 1 1-.558.32zm14.92-6.069c1.835.024 3.156.596 3.751 1.626.82 1.419.18 3.595-1.718 5.837a.322.322 0 1 0 .49.416c2.054-2.426 2.771-4.866 1.785-6.575-.726-1.257-2.26-1.92-4.299-1.947a.322.322 0 1 0-.008.643zm-1.854 15.239a.322.322 0 0 0-.442.11c-.934 1.553-2.08 2.399-3.26 2.399-1.642 0-3.208-1.647-4.2-4.418a.322.322 0 1 0-.606.217C8.279 22.154 10.036 24 12.01 24c1.44 0 2.773-.982 3.813-2.71a.322.322 0 0 0-.11-.442zm7.356-2.594a1.54 1.54 0 0 1-2.436 1.25c-2.455 1.445-7.146.71-11.56-1.84-1.88-1.085-3.527-2.392-4.795-3.785a.322.322 0 1 1 .476-.433c1.222 1.343 2.817 2.609 4.64 3.661 4.167 2.406 8.553 3.12 10.797 1.906a1.54 1.54 0 1 1 2.878-.759zm-19.062 0a1.54 1.54 0 1 1-2.285-1.345c-.233-2.877 2.79-6.734 7.36-9.372 1.898-1.096 3.874-1.874 5.731-2.271a.322.322 0 0 1 .135.628c-1.79.384-3.703 1.137-5.545 2.2-4.304 2.485-7.148 6.067-7.048 8.627.038-.003.075-.006.113-.006.85 0 1.54.69 1.54 1.54zM10.472 1.54a1.54 1.54 0 0 1 3.078 0c0 .023-.002.045-.003.067 2.549 1.317 4.32 5.81 4.32 11.003 0 2.135-.298 4.184-.854 5.96a.322.322 0 1 1-.614-.192c.536-1.712.825-3.697.825-5.768 0-4.89-1.626-9.095-3.847-10.363a1.538 1.538 0 0 1-2.905-.707zm1.304 9.981a1.114 1.114 0 1 0 .47 2.178 1.114 1.114 0 0 0-.47-2.178z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Electron</title><path d="M12.0111 0c-.85 0-1.5392.6891-1.5392 1.5392 0 .8501.6891 1.5393 1.5392 1.5393.595 0 1.11-.338 1.3662-.832 2.2208 1.2675 3.847 5.4728 3.847 10.3623 0 2.0715-.2891 4.056-.825 5.7685a.3215.3215 0 0 0 .2107.403.322.322 0 0 0 .4033-.2111c.5558-1.7763.8542-3.8251.8542-5.9604 0-5.1927-1.7717-9.686-4.3206-11.0027.001-.0223.0035-.0443.0035-.0669 0-.85-.6891-1.5392-1.5393-1.5392zm0 .6432a.896.896 0 1 1 0 1.792.896.896 0 1 1 0-1.792zm-5.486 4.3052c-2.067.0074-3.6473.6646-4.3885 1.9485-.7375 1.2774-.5267 2.971.5113 4.7813a.3217.3217 0 0 0 .558-.32C2.271 9.7274 2.089 8.266 2.6938 7.2185c.821-1.422 3.033-1.9552 5.9321-1.4271a.3216.3216 0 0 0 .1153-.6329c-.784-.1428-1.5271-.2125-2.216-.21zm11.0522.0176a.3216.3216 0 0 0-.0084.6432c1.8337.0239 3.1556.5956 3.7502 1.6256.8192 1.419.1798 3.5947-1.7182 5.837a.322.322 0 0 0 .0377.4535.3215.3215 0 0 0 .4532-.0377c2.0535-2.426 2.7708-4.8661 1.7845-6.5744-.7257-1.257-2.26-1.9207-4.299-1.9472zm-2.6984.2924a.3225.3225 0 0 0-.0647.0072c-1.8568.3979-3.8333 1.1755-5.7314 2.2714-4.5699 2.6384-7.5924 6.4948-7.3601 9.3717-.4726.2628-.7928.7664-.7928 1.3455 0 .85.6892 1.5392 1.5393 1.5392.85 0 1.5392-.6891 1.5392-1.5392 0-.8501-.6891-1.5393-1.5392-1.5393-.038 0-.0754.003-.1128.0057-.1002-2.5597 2.7434-6.1412 7.048-8.6265 1.8413-1.063 3.7551-1.8163 5.5445-2.1997a.3217.3217 0 0 0-.07-.636zm-2.8787 6.2364a1.1192 1.1192 0 0 0-.2243.0255c-.6012.1301-.983.7225-.8533 1.3238.1302.6012.7226.9832 1.3238.8533.6012-.1302.9832-.7226.8533-1.3238-.1139-.526-.5816-.8844-1.0995-.8788zM4.532 13.341a.321.321 0 0 0-.2318.0835.3214.3214 0 0 0-.0214.4542c1.2682 1.3936 2.9157 2.701 4.7946 3.7857 4.4146 2.5489 9.1056 3.2849 11.5608 1.8392a1.53 1.53 0 0 0 .8966.2899c.8501 0 1.5392-.6891 1.5392-1.5392 0-.8501-.689-1.5393-1.5392-1.5393-.85 0-1.5392.6892-1.5392 1.5393 0 .276.0737.5344.201.7584-2.2448 1.214-6.631.5002-10.7976-1.9054-1.8228-1.0524-3.418-2.3181-4.6404-3.6614a.3206.3206 0 0 0-.2226-.1049zm-2.0628 4.0172a.896.896 0 1 1 0 1.792.896.896 0 1 1 0-1.792zm19.0616 0a.896.896 0 1 1 0 1.792.891.891 0 0 1-.5864-.2194c-.0025-.004-.0039-.0083-.0066-.0123a.3195.3195 0 0 0-.0957-.0914.896.896 0 0 1 .6887-1.4689zm-14.0045 1.368a.3215.3215 0 0 0-.3207.4296C8.2793 22.154 10.036 24 12.0111 24c1.4406 0 2.7735-.9822 3.8128-2.711a.3215.3215 0 0 0-.11-.4413.3219.3219 0 0 0-.4415.11c-.934 1.5537-2.0812 2.399-3.2613 2.399-1.6407 0-3.2075-1.6465-4.2-4.4179a.3216.3216 0 0 0-.2848-.2126z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/element.svg b/assets/lib/simple-icons/icons/element.svg
new file mode 100644
index 00000000..8aab6723
--- /dev/null
+++ b/assets/lib/simple-icons/icons/element.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Element</title><path d="M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0zm-1.314 4.715c3.289 0 5.956 2.66 5.956 5.943 0 .484-.394.877-.879.877s-.879-.393-.879-.877c0-2.313-1.88-4.189-4.198-4.189-.486 0-.879-.393-.879-.877s.392-.877.879-.877zm-5.092 9.504c-.486 0-.879-.394-.879-.877 0-3.283 2.666-5.945 5.956-5.945.485 0 .879.393.879.877s-.394.876-.879.876c-2.319 0-4.198 1.877-4.198 4.191 0 .484-.395.878-.879.878zm7.735 5.067c-3.29 0-5.957-2.662-5.957-5.944 0-.484.394-.878.879-.878s.879.394.879.878c0 2.313 1.88 4.189 4.199 4.189.485 0 .879.393.879.877 0 .486-.394.878-.879.878zm0-2.683c-.485 0-.88-.393-.88-.876 0-.484.395-.878.88-.878 2.318 0 4.199-1.876 4.199-4.19 0-.484.393-.877.879-.877.485 0 .879.393.879.877 0 3.282-2.667 5.944-5.957 5.944z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/elementary.svg b/assets/lib/simple-icons/icons/elementary.svg
index 3ccd1ca8..f94da861 100644
--- a/assets/lib/simple-icons/icons/elementary.svg
+++ b/assets/lib/simple-icons/icons/elementary.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>elementary icon</title><path d="M12 0a12 12 0 1 0 0 24 12 12 0 0 0 0-24zm0 1a11 11 0 0 1 10.59 8.01 19.09 19.09 0 0 1-4.66 6.08c-.94.81-1.96 1.53-3.08 2.04-1.13.5-2.37.8-3.6.72a6.23 6.23 0 0 1-2.66-.76 20.02 20.02 0 0 0 5.68-4.58 9.97 9.97 0 0 0 2.31-4.17c.18-.79.2-1.6.04-2.4a4.42 4.42 0 0 0-1.08-2.11 4.33 4.33 0 0 0-2-1.19 5.25 5.25 0 0 0-2.33-.08A7.8 7.8 0 0 0 7.2 4.85a9.77 9.77 0 0 0-2.94 7.49 7.88 7.88 0 0 0 1.95 4.59 18 18 0 0 1-3.56.85A11 11 0 0 1 12 1zm.07 2.22c.77 0 1.55.24 2.17.7.55.42.97 1.02 1.2 1.68.23.65.3 1.37.21 2.06a7.85 7.85 0 0 1-1.7 3.76 16.22 16.22 0 0 1-6.37 4.96c-.48-.42-.9-.92-1.2-1.48a6.61 6.61 0 0 1-.75-3.87c.12-1.32.58-2.6 1.2-3.79a7.92 7.92 0 0 1 3.02-3.42c.68-.37 1.45-.6 2.22-.6zm10.83 7.3A11 11 0 0 1 3.52 19a19.8 19.8 0 0 0 3.63-1.2c.51.4 1.08.71 1.67.94a8 8 0 0 0 5.44-.04 13.3 13.3 0 0 0 4.64-2.95 20 20 0 0 0 4-5.22z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>elementary</title><path d="M12 0a12 12 0 1 0 0 24 12 12 0 0 0 0-24zm0 1a11 11 0 0 1 10.59 8.01 19.09 19.09 0 0 1-4.66 6.08c-.94.81-1.96 1.53-3.08 2.04-1.13.5-2.37.8-3.6.72a6.23 6.23 0 0 1-2.66-.76 20.02 20.02 0 0 0 5.68-4.58 9.97 9.97 0 0 0 2.31-4.17c.18-.79.2-1.6.04-2.4a4.42 4.42 0 0 0-1.08-2.11 4.33 4.33 0 0 0-2-1.19 5.25 5.25 0 0 0-2.33-.08A7.8 7.8 0 0 0 7.2 4.85a9.77 9.77 0 0 0-2.94 7.49 7.88 7.88 0 0 0 1.95 4.59 18 18 0 0 1-3.56.85A11 11 0 0 1 12 1zm.07 2.22c.77 0 1.55.24 2.17.7.55.42.97 1.02 1.2 1.68.23.65.3 1.37.21 2.06a7.85 7.85 0 0 1-1.7 3.76 16.22 16.22 0 0 1-6.37 4.96c-.48-.42-.9-.92-1.2-1.48a6.61 6.61 0 0 1-.75-3.87c.12-1.32.58-2.6 1.2-3.79a7.92 7.92 0 0 1 3.02-3.42c.68-.37 1.45-.6 2.22-.6zm10.83 7.3A11 11 0 0 1 3.52 19a19.8 19.8 0 0 0 3.63-1.2c.51.4 1.08.71 1.67.94a8 8 0 0 0 5.44-.04 13.3 13.3 0 0 0 4.64-2.95 20 20 0 0 0 4-5.22z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/eleventy.svg b/assets/lib/simple-icons/icons/eleventy.svg
index ec80c3af..e78c02b2 100644
--- a/assets/lib/simple-icons/icons/eleventy.svg
+++ b/assets/lib/simple-icons/icons/eleventy.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Eleventy icon</title><path d="M3.386 12.032v-12H20.59v24H3.386zm13.17 6.07a1.07 1.07 0 0 0 .373-.107c.432-.213.68-.672.877-1.626.076-.372 1.195-6.168 1.209-6.263.026-.186-.008-.382-.084-.476a.325.325 0 0 0-.087-.064l-.06-.031h-.291c-.253 0-.298 0-.348.02-.113.039-.207.156-.255.316-.011.038-.168.881-.348 1.873l-.328 1.802-.046-.21c-.56-2.547-.764-3.452-.794-3.532a.383.383 0 0 0-.103-.16c-.105-.107-.117-.11-.567-.11-.411 0-.422 0-.5.074-.086.079-.122.216-.111.42.006.115.045.27.688 2.784.663 2.587.751 2.943.787 3.177.046.3-.05.713-.208.893-.032.037-.037.039-.084.032-.028 0-.12-.027-.204-.051-.268-.078-.362-.072-.462.028-.096.096-.137.248-.138.51 0 .256.028.34.159.473.131.133.324.208.595.23.164.012.22.012.33-.001zM14.66 16.39a.31.31 0 0 0 .16-.192c.02-.058.022-.098.022-.356 0-.255-.003-.299-.021-.354-.04-.121-.136-.196-.278-.217-.041-.01-.2-.01-.355-.01-.365-.001-.378-.01-.446-.184-.068-.18-.096-.326-.113-.602a85.799 85.799 0 0 1-.012-1.94V10.77h.35c.454 0 .507-.01.602-.113a.465.465 0 0 0 .102-.24 3.273 3.273 0 0 0 0-.534c-.026-.16-.099-.271-.211-.322-.057-.025-.065-.026-.45-.03h-.392l-.003-1.22c-.003-1.09-.005-1.227-.021-1.278a.378.378 0 0 0-.201-.247c-.052-.024-.072-.025-.32-.029-.27 0-.356 0-.429.038-.087.042-.148.133-.185.278-.014.054-.032.346-.076 1.262l-.06 1.194s-.08 0-.18.01c-.206.01-.263.022-.327.086-.092.092-.12.19-.127.455-.01.334.02.487.115.588.075.081.134.1.345.106l.173.01v1.785c0 1.7.006 2.019.034 2.274.041.37.13.709.241.928.194.38.544.617.988.668h1.005l.07-.04zm-7.447 0c.098-.053.16-.154.2-.332.016-.077.018-.401.018-4.518 0-4.184-.001-4.44-.02-4.51-.05-.194-.19-.29-.378-.26-.035.01-.344.084-.686.175-.343.09-.684.18-.758.198-.17.043-.214.062-.281.126-.105.098-.122.185-.122.606 0 .416.016.5.12.604.094.095.189.1.456.03.103-.026.193-.048.2-.048.01 0 .014.784.017 3.763.003 3.436.005 3.77.021 3.84.048.202.113.296.236.34.034.013.133.016.487.014.435 0 .445 0 .49-.027zm3.203 0c.092-.046.152-.135.197-.29l.024-.084.003-4.435c.002-3.194 0-4.456-.01-4.509-.033-.2-.145-.308-.322-.308-.066 0-.198.03-.857.204-.56.147-.799.214-.849.239a.34.34 0 0 0-.17.184c-.024.06-.024.071-.024.479 0 .415 0 .417.026.483a.362.362 0 0 0 .083.12c.1.1.172.105.456.034a5.46 5.46 0 0 1 .208-.05c.008 0 .012 1.202.014 3.791l.003 3.79.026.086a.48.48 0 0 0 .135.23c.078.062.085.063.57.06.414 0 .447 0 .487-.024z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Eleventy</title><path d="M3.398 12V0h17.204v24H3.398zm13.17 6.07a1.07 1.07 0 00.373-.107c.432-.213.68-.672.877-1.626.076-.372 1.195-6.168 1.209-6.263.026-.186-.008-.382-.084-.476a.325.325 0 00-.087-.064l-.06-.031h-.291c-.253 0-.298 0-.348.02-.113.039-.207.156-.255.316-.011.038-.168.881-.348 1.873l-.328 1.802-.046-.21c-.56-2.547-.764-3.452-.794-3.532a.383.383 0 00-.103-.16c-.105-.107-.117-.11-.567-.11-.411 0-.422 0-.5.074-.086.079-.122.216-.111.42.006.115.045.27.688 2.784.663 2.587.751 2.943.787 3.177.046.3-.05.713-.208.893-.032.037-.037.039-.084.032-.028 0-.12-.027-.204-.051-.268-.078-.362-.072-.462.028-.096.096-.137.248-.138.51 0 .256.028.34.159.473.131.133.324.208.595.23.164.012.22.012.33-.001zm-1.896-1.712a.31.31 0 00.16-.192c.02-.058.022-.098.022-.356 0-.255-.003-.299-.021-.354-.04-.121-.136-.196-.278-.217-.041-.01-.2-.01-.355-.01-.365-.001-.378-.01-.446-.184-.068-.18-.096-.326-.113-.602a85.799 85.799 0 01-.012-1.94v-1.765h.35c.454 0 .507-.01.602-.113a.465.465 0 00.102-.24 3.273 3.273 0 000-.534c-.026-.16-.099-.271-.211-.322-.057-.025-.065-.026-.45-.03h-.392l-.003-1.22c-.003-1.09-.005-1.227-.021-1.278a.378.378 0 00-.201-.247c-.052-.024-.072-.025-.32-.029-.27 0-.356 0-.429.038-.087.042-.148.133-.185.278-.014.054-.032.346-.076 1.262l-.06 1.194s-.08 0-.18.01c-.206.01-.263.022-.327.086-.092.092-.12.19-.127.455-.01.334.02.487.115.588.075.081.134.1.345.106l.173.01v1.785c0 1.7.006 2.019.034 2.274.041.37.13.709.241.928.194.38.544.617.988.668h1.005l.07-.04zm-7.447 0c.098-.053.16-.154.2-.332.016-.077.018-.401.018-4.518 0-4.184-.001-4.44-.02-4.51-.05-.194-.19-.29-.378-.26-.035.01-.344.084-.686.175-.343.09-.684.18-.758.198-.17.043-.214.062-.281.126-.105.098-.122.185-.122.606 0 .416.016.5.12.604.094.095.189.1.456.03.103-.026.193-.048.2-.048.01 0 .014.784.017 3.763.003 3.436.005 3.77.021 3.84.048.202.113.296.236.34.034.013.133.016.487.014.435 0 .445 0 .49-.027zm3.203 0c.092-.046.152-.135.197-.29l.024-.084.003-4.435c.002-3.194 0-4.456-.01-4.509-.033-.2-.145-.308-.322-.308-.066 0-.198.03-.857.204-.56.147-.799.214-.849.239a.34.34 0 00-.17.184c-.024.06-.024.071-.024.479 0 .415 0 .417.026.483a.362.362 0 00.083.12c.1.1.172.105.456.034a5.46 5.46 0 01.208-.05c.008 0 .012 1.202.014 3.791l.003 3.79.026.086a.48.48 0 00.135.23c.078.062.085.063.57.06.414 0 .447 0 .487-.024z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/elixir.svg b/assets/lib/simple-icons/icons/elixir.svg
index 5dd4d56c..5bd304d9 100644
--- a/assets/lib/simple-icons/icons/elixir.svg
+++ b/assets/lib/simple-icons/icons/elixir.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Elixir icon</title><path d="M19.789,16.578c0,3.75-2.926,7.422-7.739,7.422c-5.246,0-7.839-3.708-7.839-8.285 c0-5.207,3.89-12.946,7.995-15.639c0.277-0.182,0.643,0.041,0.611,0.371c-0.03,0.313-0.046,0.631-0.046,0.951 c0,2.067,0.641,3.985,1.738,5.563c0.522,0.795,1.092,1.477,1.763,2.351c0.94,1.226,1.636,1.905,2.642,3.84 c0.005,0.01,0.01,0.018,0.015,0.028C19.48,14.197,19.789,15.352,19.789,16.578z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Elixir</title><path d="M19.793 16.575c0 3.752-2.927 7.426-7.743 7.426-5.249 0-7.843-3.71-7.843-8.29 0-5.21 3.892-12.952 8-15.647a.397.397 0 0 1 .61.371 9.716 9.716 0 0 0 1.694 6.518c.522.795 1.092 1.478 1.763 2.352.94 1.227 1.637 1.906 2.644 3.842l.015.028a7.107 7.107 0 0 1 .86 3.4z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/eljueves.svg b/assets/lib/simple-icons/icons/eljueves.svg
new file mode 100644
index 00000000..92e0cfda
--- /dev/null
+++ b/assets/lib/simple-icons/icons/eljueves.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>El Jueves</title><path d="M15.2718 14.6722a1.1453 1.9092 0 01-1.1452 1.9092 1.1453 1.9092 0 01-1.1453-1.9092 1.1453 1.9092 0 011.1453-1.9092 1.1453 1.9092 0 011.1452 1.9092zm-3.8177 0a1.1453 1.9092 0 01-1.1453 1.9092 1.1453 1.9092 0 01-1.1453-1.9092 1.1453 1.9092 0 011.1453-1.9092 1.1453 1.9092 0 011.1453 1.9092zM15.3655 2.073a1.7777 1.8407 0 00-1.775 1.7777c-2.5466.4872-4.0567 2.173-4.5407 5.0449a7.6188 6.8373 0 00-.515.2363C7.4214 8.107 6.3713 7.614 5.3837 7.6602c-.9043.0424-1.7564.537-2.5553 1.4772a1.7777 1.8407 0 00-1.0508-.3581A1.7777 1.8407 0 000 10.6199a1.7777 1.8407 0 001.7777 1.8406A1.7777 1.8407 0 003.5554 10.62a1.7777 1.8407 0 00-.2063-.8567c1.054-.4705 2.054-.1291 2.9993 1.0152a7.6188 6.8373 0 00-1.7135 4.311 7.6188 6.8373 0 007.6192 6.8377 7.6188 6.8373 0 007.618-6.8376 7.6188 6.8373 0 00-2.0675-4.676c.5393-1.5004 1.4322-2.1684 2.6768-2.0058a1.7777 1.8407 0 00-.0368.3716 1.7777 1.8407 0 001.7777 1.8406A1.7777 1.8407 0 0024 8.7793a1.7777 1.8407 0 00-1.7777-1.842 1.7777 1.8407 0 00-1.3446.6382c-.8736-.4223-1.6929-.6431-2.4514-.6395-1.2713.006-2.3817.6123-3.33 1.8146a7.6188 6.8373 0 00-2.547-.485c-.0668-1.6928.333-2.8897 1.1997-3.5897a1.7777 1.8407 0 001.6165 1.0781 1.7777 1.8407 0 001.7777-1.8405 1.7777 1.8407 0 00-1.7776-1.8406zm-3.1114 8.6044c3.615 0 6.5453 2.2229 6.5453 4.9642 0 2.7415-2.9302 4.963-6.5453 4.963-3.615 0-6.5465-2.2215-6.5465-4.963 0-2.7413 2.9315-4.9642 6.5465-4.9642z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ello.svg b/assets/lib/simple-icons/icons/ello.svg
index 4912ac26..63affdcc 100644
--- a/assets/lib/simple-icons/icons/ello.svg
+++ b/assets/lib/simple-icons/icons/ello.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Ello icon</title><path d="M12 0C5.377 0 0 5.377 0 12s5.377 12 12 12 12-5.377 12-12S18.623 0 12 0zm6.96 13.8c-.8 3.16-3.68 5.4-6.96 5.4s-6.16-2.24-6.96-5.4c-.08-.36.12-.76.48-.84s.76.12.84.48c.68 2.56 3 4.36 5.64 4.36 2.64 0 4.96-1.8 5.64-4.36.08-.36.48-.6.84-.48.36.08.6.48.48.84z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Ello</title><path d="M12 0C5.377 0 0 5.377 0 12s5.377 12 12 12 12-5.377 12-12S18.623 0 12 0zm6.96 13.8c-.8 3.16-3.68 5.4-6.96 5.4s-6.16-2.24-6.96-5.4c-.08-.36.12-.76.48-.84s.76.12.84.48c.68 2.56 3 4.36 5.64 4.36 2.64 0 4.96-1.8 5.64-4.36.08-.36.48-.6.84-.48.36.08.6.48.48.84z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/elm.svg b/assets/lib/simple-icons/icons/elm.svg
index ce42ca63..60f7bf1c 100644
--- a/assets/lib/simple-icons/icons/elm.svg
+++ b/assets/lib/simple-icons/icons/elm.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Elm icon</title><path d="M23.986 12.806V23.2l-5.197-5.197zM6.796 6.01H17.19l-5.197 5.197zm9.275-1.12H5.677L.8.015h10.394zm7.116 7.117L17.99 6.81l-5.197 5.197 5.197 5.197zm.813-.813L12.806 0H24zM0 23.2V.813l11.194 11.194zm23.187.8H.8l11.193-11.194Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Elm</title><path d="M23.986 12.806V23.2l-5.197-5.197zM6.796 6.01H17.19l-5.197 5.197zm9.275-1.12H5.677L.8.015h10.394zm7.116 7.117L17.99 6.81l-5.197 5.197 5.197 5.197zm.813-.813L12.806 0H24zM0 23.2V.813l11.194 11.194zm23.187.8H.8l11.193-11.194Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/elsevier.svg b/assets/lib/simple-icons/icons/elsevier.svg
index 5e0ff9f4..0c546963 100644
--- a/assets/lib/simple-icons/icons/elsevier.svg
+++ b/assets/lib/simple-icons/icons/elsevier.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Elsevier icon</title><path d="M11.34 11.44v.169l-.043.126.043.085.042.042h.084l.084-.085h-.084l-.042.043h-.042l.042-.085v-.084l.042-.084v-.085l-.084-.086-.085-.042h-.128l.086.042.085.044m3.967.464v-.042h-.042l-.043.126.085.085.084-.043h-.084v-.126m6.583 8.904l.21.084.15.042-.107-.042-.253-.084M2.856 5.445v-.168l-.043-.127-.126-.126-.127-.085v.043l.043.168-.043.169-.084-.253-.169-.21-.126-.127-.169-.127-.337-.126.169.253.126.295.084.168.17.127.168.084.168.042v.17l.085.126.084.168.127.127v-.59m-.675-.254l-.084-.126-.127-.21-.126-.254.168.084.169.127.169.21.084.127.042.211-.295-.169zm.636.717l-.154-.243-.042-.234.046-.17-.04-.221.136.158.013.176.04.534zm10.289 9.854l.217-.145-.052-.03-.165.175m3.677-12.638l-.18-.166-.116-.256-.168-.253.042.253.126.21.127.212.126.084.127.042.148.003-.138-.074-.094-.055m-3.701-.269l.317.218.204.084.182.043.107.021h.19l.149-.028-.09.086-.21.136-.44.122-.225.09-.084.043-.063.074-.096.155-.088.176-.044.088-.087.087-.263.176-.203.29-.116-.253.148-.105.159-.136.19-.221.086-.142.044-.088v-.135l.044-.087v-.132l-.217.176-.188.14-.136.094-.113.07-.088.262v.176l-.088-.044-.028-.137-.043-.189-.042-.116-.042-.127-.01-.189.034-.202.175.22.132.13.131.045.044-.176v-.175l-.088-.132-.185-.111-.105-.126.306.158.106.032.098.004.234-.027.164-.041.116-.037.078-.02-.176-.064-.126-.071-.127-.085-.084-.042-.133-.055-.162-.03-.169.043-.084.042-.056.022-.029-.064V2.73l.043-.042.042-.042.126-.043h.127l.084-.042.169-.126.21-.38.127.169.127.126.168.127.169.084.21.042h.085l.084-.042-.295-.337-.21-.127-.17-.126.296-.042.169-.085.126-.084.084-.126v-.17l-.126.085-.127.042-.295.043-.175.04-.127.084-.084.085-.084.168-.169.043-.169.084-.126.126-.127.127.043-.169.042-.21-.042-.254-.085-.168-.042-.169-.04-.064-.105.253-.042.116-.037.156.013.301-.09-.113-.036-.1-.043-.127-.084-.085-.128-.042-.21-.084.126.169.084.21-.127.127-.126.084-.253.127v-.253l-.084-.211-.127-.169-.169-.168v.295l-.016.189.018.15.042.295-.21-.127-.17-.168.085-.085.084-.084.043-.126.042-.085-.127-.421-.042.042v.084l-.126.127-.06.146-.042.306-.151-.2-.172-.128-.211-.126h-.211l.126.169.085.168.21.211.12.03.137.022.08-.008.212.126.38.38.041.084v.042l-.042.043-.168-.043h-.17l-.126.043-.168.042-.295.168-.211.211h.59l.253-.042.127-.042.126-.084v.084l-.042.084-.042.169v.169l.042.168.098.091.052.064-.108.098-.175.071.116.052.06.046.17.042.126.042-.127.127-.168.126-.127.169-.084.169v.21l-.042.043-.085-.169V4.67l-.042-.085-.168-.126-.17-.127-.17-.084.085-.127.084-.168.169-.253.084-.085.127-.126-.253.042-.253.127-.211.126-.169.169-.126.21v.127l.042.127.169-.043.21-.084.127.253.169.295.126.253.127.085.168.084v.21l-.126-.168-.127-.126-.295-.211-.337-.169-.127-.126-.126-.17-.085-.168-.084-.126-.253-.253-.422-.38.08-.013.064.01.327.158.21.032.244-.042.133-.103.126-.126-.253-.042-.21-.085H8.78l.253-.295.253-.295-.506.127-.084.042-.085.084-.057.167-.042.095-.112.202-.21-.169-.253-.168-.464-.38-.127-.042-.042-.084-.084-.422-.042-.127-.043-.084-.084-.126-.084-.043-.174-.128-.38-.126.085.295.084.253.169.253.253.169.126.042.169.084-.126.042h-.085l-.21-.084-.254-.042-.21-.042-.127.042-.169.042-.126.126-.085.085v.042l.549.084.28-.015.126-.042.142-.07.126-.041h.043l.106.01-.338.295-.02-.052-.168-.043-.253.043-.253.042-.253.084-.17.169-.083.126v.127l.084-.085.084-.042.085.253.084.085.21.126.296.127.126.084.127.084-.214-.013-.18.01-.407.003-.211-.042-.169-.042-.21-.042h-.211l-.127.042-.126.084-.211.253v-.295l-.043-.253-.084-.126-.253-.253-.084-.127v-.589h-.042l-.043.127-.084.126-.21.253-.127.253-.042.127v.169l.042.042v.126l-.169-.126-.253-.211-.337-.127-.295-.168-.338-.169-.337-.084-.127-.085-.168-.042-.26-.168-.126-.085-.127-.084-.126-.042-.17-.042H.674l-.295.042v.084l.042.042.21.169.507.169.253-.043h.042l.084-.042h.043l.084.042-.169.085h-.168l-.296.042-.295.084-.21.169-.254.253-.042.084.422-.042.21-.042.338-.169.127-.126.253-.253.21-.042h.085l.084.084-.169.126-.21.127-.127.169-.042.084-.042.126-.042.043-.043.042-.042.084-.042.084.21-.084.254-.084.169-.127.084-.126.042-.127.042-.084V3.32l.042-.084.338.126.295.17.39.218-.306-.032-.263.075-.158.106-.137.052.179.052.285.064.138.098-.253.042-.337.127-.169.084-.126.085.421.084.211.042h.21l.254-.084.126-.085.085-.084V4.25l-.086-.088.136-.084.053-.075-.02-.094.465.383.253.253.253.21.251.25.078.098.36.47.313.38.421.38.211.168.253.127.548.253.59.21-.294.085-.127.084-.169.085-.168.253-.211.21v.043h.295l.295-.042.253-.127.085-.084.084-.127.084-.126.085-.169-.085.422v.21l.043.127.084.084.084.043.085.084.042-.21.042-.254-.042-.084v-.085l-.169-.337.169.084.21.085.338.295.253.21.21.254.422.548-.21-.127-.17-.042h-.126v-.168l-.042-.17-.042-.126-.126-.126-.211.422v-.211l-.085-.211-.253-.38-.042.043v.253l-.084.253-.042.253.042.126.042.127-.084-.043-.042-.126-.043-.084-.042-.085-.126-.168-.169-.127-.169-.042h-.464l.127.126.169.085.253.295.126.126.127.085.168.084h.211l.042.042v.127l.043.042.126-.169.084-.168-.042.21-.042.17-.126.294-.38-.084-.38-.084-.379-.17-.336-.166v-.295l-.042-.253-.126-.295-.169-.211v-.042l.042-.043.085-.084.084-.126.042-.211v-.38l-.042-.042-.042.042v.042h-.338l-.253-.042.085-.042.084.042h.21l-.21-.21-.253-.17-.253-.084-.295-.084h-.145l-.042.035.06.05.042.042.085.126.126.084.295.17h-.379l-.127.083-.126-.337-.084-.169-.096-.19v-.05l.053-.099.043-.21.01-.134-.029-.14-.162-.303-.098-.105-.028.064-.05.176-.006.21.106.345-.167-.22-.028-.204v-.126l-.085-.253-.042-.085-.084-.084-.169-.084-.169-.085-.084-.042.042.084.085.211.126.422h-.042L3.84 5.39l-.085-.084-.084-.043h-.253l-.127.043h-.084l-.084-.043.21-.253.085-.168v-.169l-.084-.464-.338.59-.042.127v.169l.084.253-.084.38v.21L3 6.105l.064.078-.275-.16-.295-.127-.295-.084v-.213l-.042-.127-.085-.168-.084-.127-.253-.21-.221-.247-.02.211.022.179.01.067.084.169.21.21.254.212v.042h-.091l-.169.084-.21.042-.17.085-.168.126-.042.084-.042.127.042.295.042-.042.042-.042.253-.127.169-.168.169-.211.126-.211.295.084.295.127.506.422-.168-.043-.169-.042-.169-.042-.21-.042h-.17l-.126.042-.168.084-.127.127h.169l.126.084h.085l-.338.169-.21.084-.17.042-.041.043h-.169l.042.337.127.295.168.295.211.253-.253-.168-.21-.253-.17-.211-.252-.169-.253-.084-.169-.042-.169.042L0 7.328v.042l.169.084.337.253.169.085.337.126.337.042.253.127-.21.042H.97l-.211.042-.169.085-.168.126-.127.169-.042.168h.422l.38-.126.337-.211.295-.21.084.084.084.084.127.042.042.084-.295.127-.127.042-.168.084-.127.085-.126.168-.085.169-.084.169-.042.295.084.042.422-.337.337-.422.253-.422.127.043.084.084-.21.253-.17.253-.084.21.042.254.043.126.084.127.169-.253.126-.253.042-.042.127-.043.126-.042h.253l.042.042-.168.085-.127.084-.084.127v.042l.169-.042.21.042.17.042h.126l-.125.059-.122-.002-.21-.042-.211.042-.211.127-.302.324v.042l.59-.085.295-.126.127-.084.126-.085.043-.084.084-.042.042-.042.042-.043.127-.042.084-.042.169-.169.084-.084H3.5l-.422-.042h-.126l.253-.127.253-.21.21.084.211.126.38.253.169.127.21.084h.127l.167.056-.243.01-.093.019-.168.042-.085.042h-.168l-.085.042.169.042.126.085.296.1.295-.016.126-.042.127-.085.042.085v.126l-.042.127.042.126.084.169.127.169.168.126v-.295l.043.042v.042l.168-.168.169-.127.126-.126.085-.17.084-.379.042.085.042.084.043.21v.212l.042.084.042.042v-.126l.042-.085.042-.168.085-.169-.043-.084-.042-.085-.126-.042-.127-.042.169-.042.21-.084.718.253.042.042-.253.084-.169.084-.169.127-.126.126-.084.17h.337l.126-.043.127-.084.337-.338.127-.042.126.042.127.042-.295.085-.127.084-.126.084-.043.085v.042h.043l.168-.042.211-.042.169-.085.084-.084.042-.084.717.042.38.21.168.085.211.084.127.042h.126l.211-.084.127-.042h.21l.127.084-.042.085-.042.042-.085.042-.042.042-.042.127.042.084h.042l.085.084v.042l-.043.085v.084l.085.042.042.042v.085l.042.084.084.042h.127l.084-.084v-.127l.042-.042.043-.042h.084l.042-.042.042-.084.042-.17h.043l.126.127.127.127.084.126.084.17.042.336.085.38.042.38v.252h-.084l-.085-.042-.084-.084-.084-.127-.127-.126h-.042l-.084-.042-.127.042-.169.042-.042-.042-.084-.042-.042-.085v-.126h.084v.042h.127l.126-.042.042-.042v-.211l-.042-.042-.084-.042h-.042l-.127.042v-.039l.042-.042.042-.127.135-.084.085-.042h-.085l-.126.042-.085.084-.084.127v.126l-.084.253.042.169.042.084.042.042.127.043h.084l.253-.043.127.085.042.084v.042h-.169l-.169.085-.084.168-.035.176.035.035-.042.085h-.084l-.085-.085h-.084l-.169.085-.042-.043h-.042l-.084-.084v-.126l-.085-.085-.042-.042-.084.042-.042.042-.127.085-.042.042h-.084l-.086.044-.043.084-.042.127.042.042.043.042v.126l-.38.043-.21.042-.17.084-.042-.042h-.042l-.084.042-.084.042-.253.042.126-.168h-.169l-.126-.042.042.084h.084l.043.042v.042l-.043.042v.043l.043.042h.084l.126-.042.127-.085.084-.042.085.042v.042l-.043.043-.168.084-.127.169-.084.168-.127.127-.168.084h-.085l-.084-.042h-.042l-.084-.084-.043-.127.043-.169.084-.168.084-.042h.085l.042.042.084.084.042.042v.127l-.042.042-.084.084h-.085l-.084-.084.042-.042.042-.085-.042-.042-.042.127-.042.084.084.084.085.043.084-.043.042-.042.084-.126v-.253l-.084-.042h-.042l-.042-.043h-.169l-.169.169-.084.169.042.21v.043l.085.084.084.042.084.042.169-.042.295-.126v.084l.042.084.042.043v.042l-.042.084v.21l.085.085.084.042.084.043.042.084.085.042.042-.126v-.085l-.042-.126v-.127l-.127-.126-.084-.042h-.084l-.043-.043-.042-.084-.042-.126.127-.253.084-.085.084-.084v.042l-.042.042v.211l.084.042h.085v.127l.042.084.042.042.042.085-.084.084.084.042.042.084v.085l.043.084h.042l.042.042.042.085.042.042.085-.042h.042l.042-.043v-.084l.084-.042.042-.042v-.085l.085-.042.042-.084v-.21H9.79l-.043-.043.085-.169.042-.042.084.042.169-.126.084-.169-.084-.084v-.085l-.084-.126.084-.042h.21l.17.042.126.042-.127.084-.168.169v.084l-.042.043-.085.126-.126.084v.17l.042.083.126.085v.042h-.042l-.042.126.042.127.085.084.042.085v.126l.042.042h.169l.042.085.042.084.042.042h.169l.042-.084.084-.085h.127l.042-.126v-.169h.084l.076-.072.022.285.064.243-.116.01-.085-.042-.084.042-.042.042-.127.126v.17l.043.083.084.043-.127.126-.084.253.042.127v.042l.085.042.295-.084.168-.085.085-.126.042.042h.126l-.084.295-.042.337-.042.59.042.465.042.421v.085l.042.126v.084l-.042.043-.042.042-.042-.085v-.042l-.085-.168-.042-.085-.042-.084-.042.042v.084l-.084.085-.043.084v.084l-.042.043v.042h.042l-.042.042h-.084l-.084.042h.084l.084.084-.126.043-.042.084-.085.126h-.126l.084.127.084.042h.085l.126-.084.127-.169.042.042v.169l-.042.169v.126l.042.169.084.126.085.127.253.126v.043l-.043.126-.126.084-.127-.084-.126-.042h-.295l-.295.126-.296.085h.17l.21-.085h.21l.17-.042.084.085.084.042h.084l.085.042v.126l-.085.253-.084.085.084-.042.085-.043.084-.126v-.211l.042-.042h.042l.127-.042h.21l.127.042.169.042.127.084.084.127.126.042.085.042.042.085v.126l-.042.169v.084l.084.084h.084l.127.043.169.042.168.126.169.169.084.126.127.043.084-.043.127-.042.21-.126.127-.042.084-.043h.042v.043l-.21.126-.253.169.168-.042.127-.043.084-.084.127-.042h.042l.042.042-.127.042-.084.085h.127l.126-.085.127-.042h.126l.127.21.168.127.127.085h.084l.084-.042h.338l.337.084.633.169h-.296l-.253-.085-.253-.042-.548-.042h-1.056l.38.042.38.042h.379l.38.042h.084v.043H14.22l-.043-.043-.168.043h-.464l.169-.127.126-.126-.337.126-.338.127v-.17l.211-.041.085-.042.084-.085h.084l.042.042h.043l.042-.042-.338-.295-.126-.126-.211-.127h-.21l-.043-.042v.126l.042.169.042.084.127.127v.21l.042.212h-.38l.043-.043.042-.042h.126v-.126l-.126-.127V21.8h-.084l-.085.042-.126.084-.127.127-.168.126h-.043l-.084.042h.295l.253-.042.042.042-.337.043h-.337l-.633.042-.084-.042h-.127l.085-.043h.168l.085-.042h-.76l-.758-.084H8.695l-.633.084-.632.085H5.995l-.338-.085H5.49l-.17.042H3.503v-.042H3.29l-.211.042-.169.043-.21-.043H1.517l.042-.042.085-.084.168-.084H1.73l-.042-.043v-.084l.042-.084.169-.127-.043-.042-.084-.042-.084.042h-.042l-.085-.042-.042.042v.042l-.042.169v.084l.042.042v-.084l.042-.084.042-.042h.043l-.043.084v.21h-.084l-.159-.126.033-.084v-.127l-.043-.042-.074.127.042.084.042.127.085.084-.042.042h-.043l-.084.084-.126.043H.685v.38h22.441l.061-.08v-.295l-.024-.078v-.042l.046-.096v-.085l.084.043.042.042.085.042h.042l-.127-.169-.084-.168-.042-.127-.084-.084v-.042h.042l.042.042.21-.042.17.042.21.042.169.084-.042-.126-.042-.085-.211-.084h-.211l-.084.042h-.211l-.085.042-.084.043-.042-.043.126-.042.085-.084h-.127l-.126-.042h-.042l-.17-.169-.336-.169-.147-.042.106.042.211.169.169.169.084.084-.127.042-.042.085h.253l.042.084v.042h-.379l-.042.042h-.042l-.043-.042v-.042h.043l.042-.084-.169.042-.21-.127-.212-.126-.337-.042h-.337v-.043h-.38l.169-.084h.506l.675.169.128.067v-.042l.042-.042v.042l.042.084.042.085v-.169l-.297-.194-.168-.084-.169-.042-.337-.085-.042.042h-.127l-.126.043-.253.084-.17.084-.126.085-.126.042h-.127l-.126-.042.169-.085v.085h.126l.042-.043.085-.126.084-.084.253-.127-.38-.084h-.21l-.17.042.212-.169.21-.084.254-.042.253.042.126.126.042.043v.084h-.042l-.042-.042-.042-.042h-.085v.042l.085.084.126.042.127-.126v-.085l.042-.042-.042-.126-.085-.042-.168-.085h-.338l-.253.085-.253.168-.253.211-.126.042-.084-.042.21-.21.127-.085.169-.042H20.3l-.126.042-.085.084-.126.127-.085.084h-.084l-.042-.042.38-.38.21-.084h.085l.126-.084h-.21l-.17.042-.168.084-.127.127-.168.295h-.085l.043-.169.126-.168.169-.17.168-.083.253-.085h.127l.126.085.043-.043v-.042l-.043-.084-.168-.042H20.3l-.126.042-.127.084-.21.169-.17.253-.126.253.127-.464.126-.21.127-.17.126-.084h-.084l-.127.085-.084.084-.084.084-.127.253-.084.211-.042.084-.043.043-.042-.085v.127l-.168.084-.043-.042-.042-.084.042-.085.043-.042.168-.084.042-.548.085-.59.042-.254v-.253l.042-.253.042-.084.042-.127-.042-.548v-.589l.042-.8v-.886l-.126-1.014-.127-.337v-.59l-.084-.549-.126-.548-.17-.548-.041-.042-.169-.085h-.042v-.126l.042-.084v-.13l-.042-.043-.084-.042-.085.042-.126.085-.127.042v-.084l.085-.043.084-.042.121-.175.053-.263-.005-.152-.043-.084-.02-.105.027-.121-.131-.112-.127-.042-.084-.084-.127-.042-.084-.043-.042-.084.042-.084-.169-.085-.21-.042-.17.042-.168.043v.126l.042.127-.126.084-.127.126-.042.085-.042.126-.169.211-.126.211.042.084h.126v.085l.043.042h.084l-.084.042-.043.042v.127l-.042.084-.042.042-.042.084-.169.085-.126.126-.169.211-.084.211-.169.506-.253.253-.042.042v.085l-.042.042h-.042l-.043-.085-.168-.126-.127-.169-.084-.168-.042-.211H15.2l-.043-.042-.042-.085-.042-.126-.126-.253-.043-.085-.084-.126-.042-.042h-.084l.042-.085-.042-.042h.042l-.085-.169v-.084l-.042-.084.085-.042h.042l.042-.043v-.084l-.042-.126-.042-.043.042-.042.126.085.085.042h.084l.042-.042V11l.042-.042.085.127.042.042v.084H15.2l-.085-.084h-.042v.042l.084.084.085.043v.042l-.05.042.041.042.042.042h.127l.042.042.084.043h.043l.042.084h-.042l-.17-.084h-.21l-.126.126-.085.127v.168l.042.085.043.084.126.084.084.042h.17l.041-.042.042-.126v-.127l-.126-.126h-.084l.084.042.042.084v.169l-.042.084h-.042l-.169-.084-.042-.084-.042-.085v-.21l.042-.085.084-.084.169.042.169.084.168.042.211.043.169-.043.126-.126.085-.127.042-.168-.042-.169-.043-.21-.084-.17-.126-.126-.085-.084-.084-.042-.169-.127-.042-.042v-.042h.127l.126.042h.127l.126-.042v.042h.084l.127.084.126.042h.127l-.169-.084.139-.05.148-.02.159.041-.063.043-.074.032-.138.04h.126l.127-.042.084-.084-.084-.043-.085-.042h-.126l-.169.042-.126.043-.043-.043h.043l.042-.042.126-.126.042-.085v-.084h.17l-.043-.253v-.084l-.042-.042-.053-.061.043-.062.094-.046.169-.042.222-.007.159.049.084.042h.042l-.463.127-.169-.043h-.127l.043.043.21.042h.211l.211-.085.169-.084-.38-.169h-.295l-.126.085-.127.084-.253-.126-.253-.043v-.042h.127l.118.024.094.018h.211l.21-.084.17-.126-.338-.085h-.169l-.126.085-.127.042-.084.042-.126.042-.085-.084-.042-.085v-.126l.084.084h.296l.38-.168-.116-.06-.168-.042-.307.017-.105.015-.064.03-.084-.043.042-.042.506-.085h1.393l.169.211.169.169.421.295.085.042-.043.253v.295l.043.254.084.21.084-.21.085-.211V9.74l-.043-.253.043-.042.421.21.253.085.253-.042.127-.043h.126l.085-.042.126-.042-.253-.126-.253-.127-.337-.169-.169-.042h-.21l.21-.084.169-.127.168-.126.17-.169v-.084l-.127.042h-.127l-.253.042v-.168l.042-.169.211.126.253.085h.506l.042-.085-.21-.084-.211-.126h-.043l-.084-.043-.21.043h-.127l-.085-.043-.084-.042.253-.084.295-.042h.253l.253.042.378.3.34.46.085.17.084.379.127.126-.084.38-.043.337v.211l.043.169.084.126.126.127.085-.295.042-.296V9.91l-.084-.126-.085-.127-.126-.337-.085-.38.043.043v.084h.084l.084.253.127.21.126.212.169.084.094.013.12-.028-.013-.12-.029-.12.159-.047.116-.073.12-.162.067-.14.042-.126-.042-.127.024-.274.018.064.042.084.085.169-.042.21-.043.098-.168.211-.169.211-.084.126v.253l.042.17h.042l.295-.296.127-.169.042-.21v-.17l-.003-.154.013-.078.056.197.035.402-.143.212-.042.127-.043.169v.674l-.042.169.127-.042.084-.127.169-.21.042-.211.042-.253-.042-.211-.084-.211-.043-.38.073.014.049.049.047.106.042.337.085.338.126.084h.169V9.91l-.042-.126-.169-.169-.169-.126-.21-.127V9.32l-.085-.337-.126-.338.276.373.155.162.191.12.148.049.183.021.133.022-.063-.126-.077-.182-.101-.14-.145-.155-.26-.134-.267-.12-.266-.112-.14-.17-.186-.154h.127l.169.042.2.155.14.106.113.071.307.091.182-.02.127-.084-.125-.022-.14-.19-.204-.077-.347-.028-.338-.085-.236-.098.11.014h.21l.338-.084.295-.127.253-.253v-.042h-.717l-.21.042-.17.084-.126.127-.084.169-.464-.17-.464-.083.127-.127.042-.084.042-.042.21.084.17.042.379-.042.295-.084.211-.127-.506-.126h-.59l.253-.17.253-.126.253.169.253.127.253.042.276-.02.14-.03.09-.035.042-.042-.159-.049-.217-.07-.302-.176-.13-.07-.11-.035h-.113l.12-.097.068-.009.253.127h.379l.253-.127.253-.126-.253-.043-.21-.042-.254-.042-.253.042.042-.168.085-.127v-.35l-.042-.043h-.085l-.506-.169-.21-.084h-.296l.253-.126.253.126.169.042.295.042.337-.084.296-.126.21-.043.085-.042.084-.042h-.253l-.548-.042h-.295l-.253.042.21-.126.254-.338.126-.21.253-.507.042-.126-.042-.169-.084-.337-.085-.295-.126.464-.042.463v.253l.042.211-.211.338.042-.506v-.296l-.168-.337-.338.042h-.168l-.552.18.182-.434.14.07.253.043h.14l.169-.071.464-.211-.506-.155-.296-.014-.253.056.183-.169.759.029.229-.054.169-.084.168-.17.118-.272-.097.055-.095.017-.22-.012h-.338l-.337.043-.127.084-.126.084.042-.084v-.297l-.085-.21-.168-.212-.169-.21v.632l.025.322.071.169.032.101-.197.182-.169.338-.168.295-.183.261-.178.169.107-.177.081-.16.046-.135.042-.17-.042-.168-.084-.126.337-.042v.126h.042l.169-.59.042-.127-.042-.168-.084-.253-.127-.253-.084-.253-.085.168-.042.211.085.337.084.38.042.169v.21l-.084-.042-.042-.253-.043-.21-.042-.127-.084-.084-.211-.17-.21-.168-.17-.168h-.042l.042.253.085.21.126.211.169.211h-.169l-.126-.042h-.253v.042l.295.21.169.127.168.043v.168l-.042.127-.169.253-.084.253-.042.168.042.17-.21.168-.212.126-.21.085-.211.126-.253.084-.295.043-.506.042-.549.084-.253.084-.21.127-.296.169-.337.126-.295.042-.337-.042.21-.169.211-.21h.085l.042.042.084.084h.084l.127.042h.084l.253-.084.169-.127.169-.168h-.717l.042-.085.042-.126v-.337h.169l.21-.043.17-.042h.21l-.169-.084-.168-.127-.169-.084-.169-.042h-.253l-.126.084-.084.085V4.12l.018-.172-.052-.273-.253-.337-.074.285-.01.263.075.32-.21-.21-.253-.085-.253-.084h-.296l-.084-.042v.084l-.21.38-.061.106.005.164-.043.21.043.253.084.085.042.084.21-.253.127-.295.043-.169v-.337l-.085-.127V3.93l.253.253.127.127.168.126.506.085h-.168l-.169.042-.169.042-.126.084-.295.211-.253.21.042.085.126-.084.17-.084h.336l.17-.043.126-.042.168-.084.085-.127.042-.084.084-.084.042-.253.127.084.168.042-.042.085-.084.042-.127.168-.126.169-.042.21-.338.043-.168.084-.085.043-.074.087-.116.179-.085.233-.684.113-.675.126-.253.085-.22.148v-.042l.041-.042.042-.085.043-.168v-.211l-.043-.337.211.168.211.127.253.042h.21v.042l.043.042.084-.042h.211l.253-.042.169-.084.179-.191.126-.21.074-.107-.168.042-.506.127-.169.084-.126-.211-.17-.422-.126-.168-.084-.127-.126-.042-.127-.042-.169.042v-.21l-.126-.212-.273-.324.064-.052.293.336.233.16.263.052.19-.042.043-.017L15.162 4l-.085-.084-.168-.162-.159-.117-.22-.084-.296-.032.285-.263.233-.105.305-.136-.062.243-.01.253.054.192.084.126.126.127.043.042h.084l.042-.253v-.253l-.169-.422.211.253.211.211.127.084.168.043.127.042h.168l.211-.042-.253-.211-.21-.211-.17-.084-.21-.085-.21-.042-.17-.084.253.042.296.042.126-.042.127-.042.126-.042.127-.127-.518-.14.2-.074.075-.095.076-.03h.168l.127.042.126.042.21.178.128.244.084.253v.042l.042.042.042.127.042.084.085.042h.126l.085-.084.042-.169.042-.126v-.34l-.084-.338-.169-.295v.21l-.084.211-.127.38-.084-.169-.127-.21-.168-.127-.203-.118.16-.05.127-.127.21-.295.17-.296-.17.043-.225.04-.211.042-.169.085-.168.126-.127.127-.084.168v.211l-.085.042-.126.042-.21.043.21-.17.084-.126.042-.126.127-.295.084-.338-.042.043h-.084l-.127.042-.168.126-.129.127-.042.168-.042.211-.084.253-.042.127h-.127l.127-.253v-.127l-.043-.126-.042-.085-.084-.084-.169-.084-.168-.085-.085-.084-.042-.084-.042.042v.084l-.042.127v.126l.042.127.169.21.168.17.085.126v.126l-.633.253.056-.173.163-.178.042-.084.012-.096-.008-.064-.014-.085-.11-.148-.05-.07-.084-.043-.042.253-.085.253-.057.241.05.154.014.128-.062.084-.113-.175-.218-.122-.261-.089-.191.005-.204.022-.189.062m3.44 6.25l.13-.048.269.051-.11.056-.064.062-.118.035h-.14l-.228-.038.26-.118zm-.313-.312h.218l.173.05-.163.064-.15.07-.213-.014-.111-.096.246-.074zm3.385-.562l.306.044.13.044.13.087h-.306l-.174-.044-.13-.087.044-.044zm1.852 1.582l.043.127.042.21-.085.464-.084-.084-.042-.084v-.253l.042-.211.042-.253.042.084zm1.198-.452l-.012.116-.015.117-.022.104-.098.134-.255.313-.04-.148.046-.233.094-.131.15-.21.105-.106.064-.162-.017.206zm.425.206l.174.165.133.233-.003.356-.172-.081-.098-.268-.034-.405zm-.154.536v.228l-.104.408-.105.091v.046h-.052v-.5l.052-.271.107-.228.102.226zm-.047-1.48l.317.146.218.197.084.134.091.182-.175-.042-.155-.043-.231-.168-.247-.31-.182-.208.28.111zm.211-.409l.182.084.05.091.105.085-.204.007-.234-.088-.187-.103-.162-.14.45.064zm-.872-.433l.084-.085.085-.042.253-.126h.632l-.168.126-.211.127-.169.042-.214.047-.334-.005.042-.084zm.66-3.974l.047-.304.042-.21.07.208.041.306-.059.234-.12.198-.021-.432zm-1.559-1.474l-.084-.267v-.169l.042-.126.077.197.05.101.128.361v.211l-.098.24-.042-.309-.073-.24zm-5.703.796l.275.138.457.37-.285-.007-.295-.113-.224-.225-.157-.21.23.047zm1.515-.213l.116-.37.04-.195.087.27.052.37-.062.359-.127.126-.076-.12-.072-.207.042-.233zm-1.064-.696l.064-.127.136-.137.169-.126.58-.18-.104.14-.085.126-.12.131-.11.132-.232.084-.126.075-.241.062.069-.18zm-3.649.021l.159-.116.163-.056-.097.183-.147.182-.147.09-.194.045.263-.328zM9.672 4.23l-.26.076.028-.192.17-.21.168-.127.246-.14.133-.04-.24.288-.114.216-.131.13zm.495.756l-.102-.226-.093-.186-.123-.2.077.025.086.042.117.096.13.157.053.417-.145-.125zM8.943 3.423l.293.025.299.092-.187.116-.238.02-.213-.045-.236-.117.11-.066.172-.025zm-.417-.029l.071-.163.06-.144.092-.1.137-.045.22-.069-.232.287-.16.182-.248.176.06-.124zM6.917 2.41l-.21-.21-.14-.31-.03-.196.218.097.149.113.189.156.089.275.059.273-.324-.198zm-.106.486l-.294.02-.457-.069.086-.108.204-.074h.23l.454.103-.223.128zm-5.565.198l-.26-.058-.332-.143-.188-.169.313-.034.26.058.26.116.26.174-.313.056zm-.086.377l-.337.169-.442.095.18-.22.262-.15.391-.101.167.007-.22.2zm.623.265l-.218.16-.214.107.108-.213.147-.212.337-.265-.16.423zm-.036 2.407l-.126.169-.354.163.017-.121.084-.169.169-.126.337-.127-.127.211zm.275-.496l-.253-.253-.168-.21-.042-.127v-.169l.421.38.127.21.042.254-.127-.085zm-.937 2.191l-.42-.168-.432-.277.356-.005.318.09.269.192.202.281-.293-.113zm.131.543l-.261.154-.314.094-.261.026.134-.206.388-.206.314-.025.346-.015-.346.178zm.53.481l-.231.263-.312.332-.14.07.097-.277.196-.361.245-.137.293-.167-.148.277zm.561.172l-.042.169-.253.464-.084-.338.169-.421.168-.17h.042v.296zm.317.936l-.512.12.25-.253.133-.106.133-.053h.177l.243.061-.424.231zm3.861-.398l.085.042.045.139-.087.327-.043-.253-.084-.253h.084V9.57zm4.313 2.235l.053-.05.102-.051.103.05.05.053v.103l-.05.052h-.205l-.051-.103v-.054h-.002zm-1.975 2.633h.093l.093.096.047.096-.047.047v.097l.047.096.025.11-.118-.206-.093-.097h-.092l-.048-.096v-.096l.093-.047zm3.837 7.447h.066v.135l-.197-.068.131-.067zm-.356.285l.117-.086h.175l-.292.086zm.382-.096l.113-.083v.167l-.169-.083h.056v-.001zm.19-.604h.277l-.138.07h-.07l-.069-.07zm.125.248l-.066-.068.198-.066h.197v.068h-.066l-.131.067H13v-.001zm.261.032h.255l-.255.087h-.19l.19-.087zm-.096.212l.063-.079h.253l.062-.08.063.08-.252.08-.251.079.062-.08zm9.83-.34l.098.096h-.098v-.096zm-.001.293l.045-.045.046.045-.046.046h-.09l.045-.046zm-.166-.131h.092l.045.045v.046h-.091l-.046.045-.09-.045.09-.091zm-.313.048l.057-.08h.086l-.143.08L22.4 22h-.172l.287-.166zm-.015.149h.187l-.123.07-.063.073h-.062l.06-.143zm-.228-.285h.187l-.125.07-.062.073h-.063l.063-.143zm-.192-.06l.07-.063.071.064-.07.062h-.071v-.062zm.1.235l-.048.047h-.047l-.048.048h-.047l-.047-.048.094-.047.048-.047.094.047zm-.072-.339l-.15.042-.108-.114-.108-.115.366.187zm-.305.22l.094-.048.048.047v.048h-.048l-.047.047-.094-.047.047-.048zm.135.225l-.103.114h-.103l-.052-.058.052-.057h.206v.001zm-.275-.003h-.05l-.104-.057.051-.058h.052l.053.058h.05l-.052.057zm.005-.63l.126.085h-.126v-.086zm-.06.22l.136.046-.137.09h-.045l-.091-.045.045-.045.091-.046zm-.394-.039l.091-.045.183.045-.137.092h-.18l.043-.092zm.216.312h-.212l.052-.059h.054l.106.06zm-.454-.393l.095-.047.094.047-.14.095h-.187l.138-.095zm.174.238l-.055.083h-.333l.166-.083h.222zm-.5-.324h.227l-.137.092h-.09l-.046-.046.045-.046zm0 .248h.153l-.152.102-.05.05-.102-.05.152-.102zm.14.257l-.048.096h-.292l.05-.049.097-.049h.194v.002zm-.404-.39h.096l.05.05-.099.097h-.098l-.048-.049.1-.098zm.04.351l-.146.098h-.194l.196-.098.048-.049.097.049zm-.065-.884h.09l.18-.09.045.046h.046l-.09.135-.089.046-.09.045-.045-.045-.046-.046h-.045l-.046-.045.09-.046zm-.203.005h.076l-.076.091v-.09zm-.072.246l.045-.045.18.045-.134.046h-.09v-.046h-.001zm-.022.194h.113l.17.056-.057.056h-.113l-.17-.056.057-.056zm.029.265l.049.05h.097l-.146.146-.097.049-.097-.05.097-.097.05-.049.047-.049zm-.277-.556h.213l-.053.106h-.106l-.16-.052.106-.054zm.14.244l-.066.088h-.131l.065-.088h.132zm-.202.275l.242.05-.193.146-.098.049-.145-.05.049-.048.048-.049.05-.049.047-.049zm-.102-.23h-.227l.057-.057.056-.057.227.057-.113.058zm-.011-.369h.11l-.166.112h-.167v-.056l.056-.056h.167zm-.23-.202h.063v.07h-.124l.061-.07zm.068.808l.097-.049h.098l-.194.147-.097.049h-.05l-.097-.05.243-.097zm-1.125-.262h.087l-.087.088-.044-.044v-.044h.044zm-.05-.126l-.004-.08.084.007.047.066-.066.009h-.06v-.002zm.218.212l.091-.089.091.046-.136.136-.135.046h-.091l.18-.139zm.139-.296h.089l-.09.089-.089.046h-.09l.136-.09.044-.045zm.032-.13h.224l.09-.05-.046.05-.135.05h-.179v-.05h.046zm-.037-1.613h-.08l.081-.069v.07h-.001zm-.857-1.928l-.091.046h-.091v-.046l.045-.043h.412v-.046l.045-.133h-.136l-.046-.044-.138-.18-.091-.18-.091-.133-.183-.312.125.034.091.046v.089l.366.312.15.1h.091l.149-.032.182-.09.106-.013.11-.007-.057.3-.091.268-.262.602.273-.089.275-.09.23-.178.325-.24-.005.17-.103.134-.217.091-.182.07-.149.154-.62.272-.098-.052-.048-.105-.045-.224-.046-.223-.136-.223h-.05v-.005zm.039.112l-.065.074h-.042l-.096-.02.203-.054zm-.587-.128v-.086h.055l.054.042v.042h-.11v.002zm.118.062v.084l-.054-.042-.054.042-.054-.084h.162zm1.497-4.667v.126l-.168.117.027-.145.141-.098zm-.145.012l.022-.18.17-.11-.011.121-.085.084-.096.085zm.522 1.454l-.14.143-.289.184-.312.125.06-.17.08-.028.111-.05.366-.18.211-.205-.087.18zm.027.492l.148-.067.012.064v.054l-.18.064.02-.115zm.016.462l.223-.113.022.118-.074.054-.274.108.012-.113.091-.054zm-.482 2.389l.206-.09.489-.312-.044.115-.5.354-.497.235.09-.211.256-.091zm-.177-.044l.106-.245.235-.059.21-.136.31-.237-.013.184-.425.267-.21.136-.213.09zm.833-.76l-.13.06-.26.162-.317.182.053-.091.028-.122.182-.09.211-.092.095-.064.15-.088.07.112-.082.03zm-.971-2.953l-.01.117-.06.087-.172.071.048-.158.074-.066h.05l.07-.05zm-.13-.055l.084-.258.251-.159-.028.204-.088.093-.22.12zm.086.312l-.075.162-.069.087-.263.07.07-.164.14-.037.197-.118zm-.123.342l.045-.044h.046l.045-.044.039-.057.13-.042-.037.143-.13.091-.15.053.012-.1zm.232.636l-.145.074-.08-.044.214-.089.222-.113-.21.172zm.238-.09l.33-.252-.073.153-.044.143-.23.12-.118.064-.13.07-.042-.09.307-.207zm-.076.313h.208l-.053-.102.107-.07.096-.06-.005.186-.095.096-.103.05-.08.073-.259.068-.204.042-.076.073h-.052l-.113.035-.094.015-.096.019-.054-.075.458-.148.415-.202zm-.48.512l.1-.121.277-.073.35-.16.177-.103-.231.233-.253.143-.174.075-.334.103.088-.097zm.708.834l.118-.046.169-.091.202-.106.081-.027.007.172-.278.13-.393.182.043-.078.051-.136zm.265-.272l-.253.137.025-.117.06-.047.11-.067.176-.095.21-.111v.126l-.328.174zm.322-.413l-.206.106-.305.179.057-.152.19-.108.267-.158-.003.133zm-.516-1.333l-.054.043-.064.09-.387.18-.327.116-.157-.093.2-.074.06.035.046-.067.366-.144.3-.148.157.047-.14.015zm-.51-.08l-.048.165-.092.054-.209.084-.273.091-.096-.116.37-.117.348-.162zm-.355.537l-.365.098-.23.06-.094-.115.215-.043.285-.079.189.08zm-.26.144l.288-.073.064.053-.308.138-.252.06-.069-.102.277-.076zm-.157.254l.288-.079.257-.138.08.017.087.059-.285.138-.355.106-.072-.103zm.433.228l-.022.091-.042.117-.38.084-.377.138-.003.037.049.048.401-.112.479-.138.074.106-.295.047-.214.102-.226.064-.218-.07-.104-.003-.04-.263.089-.03h.226l.177-.064.426-.154zm.12.47l.725-.301-.067.138-.14.037-.21.134-.832.25-.154-.104.678-.155zm.098.134l.26-.08.303-.132-.023.141-.521.187-.512.154-.09-.09.583-.18zm.064.175l.452-.17-.03.17-.71.228-.123-.005-.081-.07.492-.153zm-.336.314l.375-.113.366-.12-.032.103-.179.07-.228.094-.204.025-.098-.059zm1.436-1.103l-.137.088-.327.187.039-.162.12-.077.217-.11.095-.064-.007.138zm-1.124-1.427l.06-.19h.064l.14-.102-.027.096-.009.097-.228.1zm.318-.332l.207-.155.172-.127.165-.135.012.113.002.103-.138.108-.046-.045-.046.089-.146.108-.226.147.044-.206zm.128-.203l-.095.09-.248.136.027-.163.107-.063.204-.143.005.143zm-.093-.509l-.24.148.071-.146.05-.098.168-.105-.049.201zm-.214-.811v-.07l.13-.069-.13.139zm.08.008l.016.09v.084l-.08.047.01-.152.055-.069zm-.068.3l.079-.015-.005.142-.02.064-.112.042.053-.158.005-.075zm.052.264l-.052.136-.02.064-.174.095.032-.053.04-.077.05-.111.124-.054zm-.117.317l-.074.136-.084.095-.093.07.071-.214.086-.057.094-.03zm-.178.337l-.042.16-.164.108.08-.162v-.054l.126-.052zm-.05.791l-.07.123-.07.063-.348.123.069-.123.14-.124.278-.062zm-.099-.317l-.086.07-.113.024.095-.188.084-.043.084-.052-.064.189zm-.125.126l-.11.146-.112.048.055-.097.056-.05.111-.047zm-.158.18l-.206.217-.206.145.07-.145.136-.073.206-.145zm-.255.414l.012-.111.096-.037.005.059-.017.059-.059.027.123.121-.344.096-.069-.027-.042-.032-.044-.052.115-.044.135-.022.09-.037zm-.288-.015h-.105l.211-.118-.106.118zm-.128.067l.045.09-.045.045h-.091v-.135h.09zm.008.24l.118-.027.096.128-.113.037-.128.027-.059-.037-.032-.101.118-.027zm-.078.233l.13.013.091-.047.118-.007.06.07-.119.058-.195.06h-.046l.032-.053-.07-.094zm.545.246l-.204.047-.303.024-.007-.12.147-.007.136-.018.135-.037.096.111zm-.398 1.602h.054v.043h-.054v-.043zm0-.086v-.042l.054-.042v.086h-.054v-.002zm-.074-1.21l-.022-.171.307-.01.213-.06.102.083-.236.08-.227.04-.137.037zm.06.369l.1-.01.047.057-.047.037.037.084-.1.032-.036-.2zm.16.212l.01.073-.053-.01-.074-.016.118-.047zm0 .091h.048v.048h-.096l.047-.048zm.046.081h.05l.047.047-.048.05h-.096l.047-.097zm-.02.182h.05l.046-.047.05-.049.048.096.076.14-.123.005-.096.048v-.048l.096-.048h.049l-.049-.05h-.145v-.047h-.002zm.29.226l.075.088-.17.009h-.146l.194-.145.047.048zm-.226.226l.048-.048.096-.048h.24l-.144.096h-.096l-.145.048v-.048h.001zm.513.911v.044h-.21v-.044l.045-.044h.12l.045.044zm.012.115l.044-.029.044.042-.152.065h-.044l-.04-.016.148-.062zm.013.101h.12l-.044.044h-.12l.044-.044zm-.005.093l.08-.007.398-.086.044.044.006.108-.22.044-.225.045-.083-.103v-.045zm.5-.295l-.09.044-.09.043.045.044h.045l-.09.044h-.138l.092-.044v-.044l-.046-.043.091-.044.091-.044h.137l.09-.044.318-.177.417-.235-.012.216-.064.048-.134.08h-.045l-.116.036-.078.12-.09.044-.136.043-.091.044-.06-.086-.046-.045zm.195.41l.23-.073.136-.057.27-.137-.027.149-.253.168-.31.08-.046-.13zm.198-.144l-.12.056-.12.022-.018-.078-.03-.049.12-.038.168-.066v.153zm.104-.04h-.045l.003-.144.078-.062.055.025v-.087l.046-.044.222-.07v.176l-.21.15-.149.056zm-.344.41l.248-.048-.204.166h-.1l-.195-.009.251-.11zm.275.512l-.076.004h-.155l.002-.056.172-.044.135-.045v.23l-.095.041-.172.09v-.098l.093-.047.088-.043.079-.033-.071.001zm-.192.282l.111-.047.167-.046v.044l-.002.06-.103.051-.224.043.05-.105zm0 .21l.118-.051.163-.081-.047.094-.044.052-.244.051.054-.064zm.27.035v.108l-.093.003-.076.04-.047.004-.13.05.346-.205zm-.176.26l.177-.124v.144l-.08.038-.217.09-.06-.002.003-.052.177-.095zm.176.421l-.066.154-.238.168.304-.322zm-.157-1.375h-.16v-.055l.377.055h-.217zm.163 1.034l-.042.1v.05l-.094.046-.123.039-.076.039-.07.003.004-.057.401-.22zm-.23.304l.222-.09v.066l-.17.13-.135.042-.127.058.21-.206zm-.06.867h.187l-.094.047-.094.095h-.14l.141-.142zm.078-.154h-.093l-.047-.047.14-.094.047-.047.14.047-.047.047h-.047l-.093.094zm.288.206h.243l-.194.147-.098.049-.145-.049.194-.147zm-.133-.195l.113-.056.113-.057h.113l-.113.113h-.226zm.186-.346h.18l-.091.09h-.27l.09-.045.09-.045zm-.194-1.854l-.085-.015-.08-.06.418-.163-.08.164-.079.022-.094.052zm.266.405l-.116.064v-.064l.059-.064.116-.064v.064l-.059.064zm.044.265v.072l-.05.04-.104.053v-.07l.066-.062.088-.033zm-.164.776l-.062.006.003-.06h.159l-.1.054zm.083-.252l-.105.105v-.115l.2-.047-.095.057zm-.14-.135l.116-.136.132.008-.248.128zm.28-.93l-.052.052-.157.052.052-.052.052-.053.105-.052v.052zm.027-.298v.054l-.054.054h-.054l.108-.214v.106zm.12-3.569l.006.145-.11.044-.3.123.024-.13.125-.069.153-.062.102-.05zm-.075-.35l-.065.042-.184.082.029-.145.102-.02.06-.045.058.021v.065zm-.043-.409l-.156.091.022-.07.007-.07.127-.018v.067zm-.009-.146l-.123.043.012-.064v-.069l.084-.022.027.112zm-.09-.473l-.045.09-.179.133-.207.135-.263.101.042-.172.137-.07.236-.163.234-.184.046.13zm-.08-.578l.007.098-.134.113-.189.113-.013-.147.111-.088.198-.158.02.069zm-.022-.13l-.084.047-.071.052-.08.053.038-.135-.088.066-.044.123-.179.126.04-.207.146-.127.15-.126.067-.08.07-.037.035.245zm-.054-.324l-.086.057-.23.196.078-.224.21-.182.028.153zm-.226-.052l.008-.11-.001-.066.12-.09.006.063.029.064-.162.139zm.094-.486l.048.064.008.054-.056.06-.086.041.03-.16.056-.059zm-.015-.155v.057l-.209.214v-.057l.06-.115.15-.156v.057zm-.049-.157v.066l-.069.066-.138.065.138-.13.07-.067zm-.246-.157v-.069l.06.07-.06.068v-.069zm-.022.17l.108-.121h.054l.054.06-.108.122-.162.06v-.06l.054-.06zm-.106-.372v-.214h.108v.214l-.054.054h-.054v-.054zm-.037.17h.069v.056h-.07v-.056zm.006.147l.05.059h-.088l-.088-.042h-.305l-.093.069.142-.01h.131l.132.042.12.096-.088-.037-.088-.042h-.265l.047.08h.11l.159.055.044.086.043.128v.258l-.11.3-.13.3-.132.259-.088.3-.132.258-.219.258-.246.204-.263.128-.076-.054v-.3l-.044-.258.088-.128.214-.093.256-.111.044-.043v-.042h-.088l-.07-.005v-.258l.043-.214.044-.172.155-.246.017.2.044.213.032-.034.027-.145v-.128l-.044-.258.044-.214.044-.129.103-.069-.044-.042-.088.042-.044.086-.087.172-.044.169-.088.172-.087.086-.066.186-.034.318-.088.258-.087.172-.12.054h-.33l.045-.042.044-.086v-.172l.043-.214v-.042l.044-.086.044-.172.005-.145.105.177-.044.172-.066.162.088-.086.044-.086.044-.214.022-.237.043-.258.024.18.02.164.027-.14.039-.1v-.129l.044-.128.415-.531-.22.214-.229.243.005-.135.088-.042.044-.044.017-.091.219-.215.18-.108.071.05.066.004v.043h-.088l.044.043.078.027.175.043h.176l.075.047zm-1.44.922l.014-.052.075-.27-.01.464-.079-.142zm1.13-1.098h.256l-.064.066h-.256l.064-.066zm-.027-.049v-.1h.101v.05l-.05.05h-.05zm.005-1.497l.047.044.048.087.022.095.001.087.046-.089-.002-.088.091-.025.093.084.002.088-.071-.093-.066.034.111.17.05.176v.177l-.043.177-.002-.132-.006-.126-.05-.175-.104-.086.106.27.012.198-.054.142-.045.046.033-.17-.001-.134-.05-.132-.094-.087.05.131.003.221.033.09-.09.133-.03.126.018.063.128.007.039.028.067-.023-.019.106.002.088-.135-.115-.14-.042-.072.069-.105-.132.039-.106.116-.083.093-.042.015-.12-.001-.131-.095-.175.054.197-.046.133-.06-.197-.004.116.007.085-.023.11-.054.058-.01-.192-.05-.176v.044l.009.221-.039.26v.044l.074.044.095.131-.071-.028-.094-.024-.048-.044-.018-.052.035-.154.015-.175-.001-.175.045-.134v-.044l-.093.09.027.076-.043.177-.046.177-.057.034-.086.045-.04-.335.036-.178.113-.128h-.047l-.113.07.1-.142.24-.113.006-.039-.26.091.052-.098.046-.044.16-.079-.094.002-.139.045.036-.054.082-.076.17-.067.095.044.085.059-.002-.088-.095-.042-.141-.13.202.024zm-.718-.333l.153-.037.233.037.045.05.046.047-.019.256-.094-.064-.046-.05h-.136l-.137-.095v-.05l.002-.072-.057.04-.036.031.003.068-.062.017-.02-.139.125-.039zm-.695 1.117l.057-.15.128-.127.086-.12.061-.19.358-.329.197.086.088.044.087.044h.088l.044.044-.22.173-.087.13.017.13-.044.086-.044.088-.06.088v.13l.075-.014.05.361h-.126l-.043-.044v-.044h.087v-.086h-.044l-.087.088v.088l.033.077.144.02h.087l.088-.043.1-.105-.056.18.044.044-.307.174-.132.13-.023.159-.064.015v-.218l-.088-.174-.003-.175-.038-.111.086-.103-.047-.135-.044-.13-.062-.22.258-.052.157-.12-.044-.085-.044-.086-.131-.086h-.088l-.088.043.056.05-.054.038.056.05-.044.087-.054.039v.086l-.088-.044-.039.049h-.044l.044.044h.044v.043l-.131.044-.152.039zm.329.111l.16.115-.009.135-.079.059-.01-.164-.062-.145zm.192-.4l.093-.085.018.1-.111-.014zm-.32.39v-.054l.053-.106h.054l.054.054.054.106h-.216zm-.137.707l.128-.15-.047-.042-.046.042h-.047v-.042l.047-.086.046-.043.093-.042.03-.077-.088-.05.047-.045.046-.042.067.15.048.086.045.086.047.086v.285l.063.05v.266l.002.093-.048.043v-.258l-.015-.133-.093-.128v.128l.01.103.063.214-.063.187-.016-.23-.05-.117.018.27-.097.44-.005-.137v-.214l-.092.258.067.15v.086l-.093.215-.045.214-.047.258-.093.258-.068-.106v-.086l.093-.344-.045-.086v-.086l-.048-.129-.01-.182.093-.258.093-.3.047-.172.005-.165-.04.003-.139.344v-.179l.046-.214.09-.172zm-.346.094v.107h-.108l.108-.107zm-.179.167l.154.118-.058.095-.123-.095.027-.118zm.015.299l.054.084-.032.107-.182-.085.064-.158.096.052zm-.192.24h.164v.13l-.081.065-.083-.13v-.066zm.054.306l.138.005.1-.516.16-.598.046-.092.136-.045.022.101-.006.081-.085.054-.045.091v.633l-.046.18-.045.09h-.137l-.046.09v.092l.046.18h-.182v.046l-.046-.18-.01-.212zm.439.392v.489l.049.147v.049l-.147-.343-.245-.342.196.098v-.447l.098.055.049.098-.05.098v.147l.05-.05zm-.513-.478h.049v.464h-.05v-.464zm-.108.51l.285.54h-.212l-.071-.135.07-.203-.072-.202zm.027.958v-.383l.223.212.222.255.044-.084-.044-.085-.133-.17-.09-.042-.043-.084h.044l.089.042v-.042l-.09-.255-.133-.297h.09v-.084l.044.042v.042l.045.084.133.129.09.128.045.17.09.17v.043h.09l-.045-.042v-.043l.046-.042v.127l.044.084.045-.084v-.085l.211-.074-.21.287.043.042.078-.032v.552l.043.509.134 1.135-.434-.08-.045-.43.045-.424.046-.383v-.425l.044-.255v-.213h-.044l-.044.085-.046.084-.043.51v1.486l.043.128v.51l.046.17v.126l-.015.074-.105.015-.044.08-.05.089.044.142.06-.01.029-.075-.052-.018.008-.096.128-.02-.082.721-.211-.458-.073-.316-.017-.3.08-.813.09-.977.043-.467.078-.5-.044.129-.134.084-.222.085v-.042l-.09.042-.089.084-.005-.467zm.04.583v-.094l.048-.047.047.047v.187h.094v-.14l.048-.094.187-.14h.047v.047h-.047v.187l-.047-.094-.048.047.048.187.047.14-.093-.093-.094-.14v.048l.047.234.094.235-.234-.235-.144-.282zm.245.554l-.273-.218-.085-.152v-.15h.086l.085.226.187.294zm-.356-2.566h.076v.192l-.076-.064v-.128zm-.08.159l.11.157.056.156-.22-.209.055-.104zm-.014.238l.052.097.052.296v.592l-.23.13.104-.493v-.541l-.085-.18.107.099zm-.07.133l-.048.452v.271l-.097.226h-.096l-.047-.045.145-.226.05-.272.094-.406zm-.118-.19h.048l-.073.529-.187.528-.115-.088.187-.44.095-.263.045-.265zm-.074.041l-.133.377-.133.313.067.063-.067.062h-.07v.062h-.067v-.062l-.067-.062.067-.063v-.062l.068-.063h.067l.068-.313.2-.252zm-.226-.254l.002.394-.113.338-.149.261-.064-.032v-.05l.324-.911zm-.1-.002l-.053.29-.053.2-.209.397.027-.256.107-.2.182-.431zm-.153-.054l.071-.28.014.267-.095.345-.22.464-.065-.187.056-.103.055-.206.184-.3zm-.008-.381l-.115.43-.172.43h-.057v-.16l.344-.7zm-.091-.218l-.095.474-.09.228-.11.153-.066-.042.165-.359.196-.454zm-.145-.012v-.226l.069-.003v.226l-.052.206-.114.204-.128.346.05-.31.127-.247.048-.196zm-.221-.615l.09.045.092.312v.18l-.046.134-.09.046h-.092l-.09-.09-.046-.09.09-.045-.045-.044h-.091l-.046-.045-.045-.09h.091v-.045l-.228-.133-.09-.09-.046-.133v-.044l.045-.09v-.043h.046v.09l.045.045v.09l-.045.045.045.045v-.043h.046l.045-.044.091.09.137.045.091.089v.09l.046-.046v-.133l-.137-.134-.182-.089.228.046.09.079zm-.488.418v-.123h.073l.074.062v.124l-.147-.063zm.142.116v.054l-.054.054h-.054v-.108h.108zm-.37-.141h.164v.121h-.11l-.053-.06v-.061zm-.082-.424l.059-.072h.059l.059.072v.146h-.118l-.06-.146zm.14.356l-.074-.086v-.086h.076l.15.086-.076.086h-.076zm.212-.639h.152v.105h-.152v-.105zm.18-.042v-.07h.13v.07l-.065.07-.066-.07zm.188.098l-.005.1h-.078l-.001-.088.084-.012zm.042-.353l-.033-.003v-.044h-.046v.09l-.046.089-.065-.046-.03-.104.01-.147.02-.108-.046-.046h-.069l-.002.144.002.128.046.18-.046.135-.046-.089-.18.18v-.045l-.046-.046-.089.046-.046.09h-.043l-.046-.046.046-.09-.046-.045-.09.045h-.045v-.089l.014-.111.045-.135.076-.07v-.045l-.09-.045-.023.077-.044.09-.045.18-.112-.032-.045-.09-.044-.045h-.046l.046-.046.046-.045.09-.046v-.045l-.045-.046v-.045h.224l.046-.09h.045l.09.046.27-.135h.226l.09.046.045.089v.045l.1.154.024.165h-.047zm-.87.69v-.067l.123.067v.068l-.06.069-.061-.068v-.069h-.002zm-.017-.145l-.057-.054v-.108h.114l.058.054v.054l-.058.054h-.057zm-.078-.293v.048h-.048l-.05.05-.048-.05-.05-.048.05-.05.049.05h.097zm1.768-.105h-.15v-.2l.1.052h.05v.148zm.162 0v.1h-.05l-.05-.1v-.148h.051l.05.048v.1h-.001zm.35.177l-.051.049-.051.1-.1-.051-.05-.049-.05-.15.05-.1.101-.1.1.051.05.1v.15zm.041-.816l.044-.046.132.18.044.227.043.226-.043.226-.177.09-.044-.225v-.135l-.088-.046-.088-.045-.087.045h-.088l-.044-.045.088-.09v-.317l.131.046h.177v-.091zm-.227-.208h.086l.042.086.042.042v.129h-.128l-.128-.085-.085-.086-.042-.042h-.042l.086.213.042.086-.042.128.042.042-.042.042-.086.086h-.17l-.085-.128v-.042l-.042-.042-.1-.05-.062-.104.106.01.01-.062-.052-.063-.07-.028-.055.018-.03.068.02.09.064.075-.084.084-.104-.02-.105-.084-.002-.186.042-.128.043-.086.042-.042.086-.042.044-.042.086-.043.086.043.086.042h.128l.086-.042h.128l.086.086.073.077zm-.376-.435l.09-.045h.137v.182l-.09.045-.092.046-.182-.046h-.275l-.091.093-.137-.091-.09-.137v-.09l.045-.046.045-.046h.091l.046.046h.091l.046-.046.045-.136.046-.092h.182l.09.046V9.9l-.045.091v.046l.048.09zm.924-.713l.136.094.183.19.09.286-.136-.048-.137-.094-.09-.094-.137-.142-.046-.19h.137v-.002zm.094.55l-.042.084h-.084l-.042-.042v-.127l.042-.084.084.084.042.084zm-.39-.112l.068-.307.022-.14.123.363-.084.126v.169l.126.084h.127l.042-.084.084-.084.043.084-.043.084-.126.085-.084.042-.043.042h-.634l.084-.127v-.084l-.042-.042-.084-.084h-.084l-.043-.043v-.084l-.126-.126-.084-.043h-.085l-.126.085-.042.084-.085.042h-.084l-.127.085-.126.126v.084l.084.17.085.041.042.042-.085.211-.042.085v.126h-.045l-.042-.084-.085-.042h-.042v-.043h-.295l-.084.043-.127.084h-.128l-.084.042h-.127l-.084.042h-.042l-.043.085v.126l-.084.042-.042.127h.126l.043.084-.043.085v.126l.043.042.126.042.042.085v.042l.042.042v.253l.085.084.084-.042h.042l-.042.085v.042l.042.168.042.043h.085l.084.042.042.042.085.084h.084l.042-.042v-.042l.042-.084v-.043l.085.169.042.084.084.043.127-.043-.17.592.085.085.042.126.085.211.042.21.126.212.127.168.169.085.168.084.127.127h.084l.084.042.17-.085.083-.084v.508l-.042.084-.126.084-.127.043-.084.084-.084.126-.085.127-.042.169-.126.126.168.084h.127l.126-.084.085-.042v.042l.042.042-.054-.205.037-.206.059-.179h-.042l-.085.21-.074.269-.01-.074-.042-.112-.078-.072.083-.108.084-.127.085-.042.126-.047.05.184.132.125.113.113.18.052.041.042-.005.1-.042.094v.211l-.01.148.042.085-.042.042-.042.084-.042.085-.063.074v-.085l.042-.084.022-.032v-.169l-.042-.126v-.115l.042-.084v-.21l-.07.252-.043.253.042.042-.084.085-.032.106-.074.21-.044-.06.012-.13.084-.126.042-.34.085-.337-.127.169v.169l-.042.168-.042.211-.149.309-.03-.113v-.042l.042-.127.085-.169.042-.21v-.211l.01-.238-.042.042.01.101-.042.169v.169l-.085.126-.236.179.047-.154.095-.084.084-.126v-.125l-.042.042v.042l-.042.042-.042.042-.127.17-.042.083v.127h.126l.127-.127.084-.042-.084.211-.042.084v.127l.084.084v.042l.084-.042.043-.042h.042l.042.042.126-.295v.21l.043.043h.084l.042-.042-.042-.042.042-.042.042-.043-.042.296-.042.295v.253l.042.297.042.168-.126.887.042.338-.042.084v.127l.042.21v.635l-.042.253v.042l.042.042v.042l.126-.592v-1.177l.043-.592.084.206.042.042.084.084.043-.21v-.17l.042-.421v-.042h.042l.02-.009-.02-.033-.042-.085.042-.042-.042-.381-.015-.402.042-.042h.21l.122.101-.042.043-.042.126-.085.127-.042.168-.106.3.042.085.083-.108.034-.13.084-.21v-.085l.126-.253.053.111v.253l-.127.338v.168l-.169.677.043-.085.042-.126.084-.211v.38l-.042.21-.042.211h.042l-.127.972-.042.465-.042.466-.295-.042-.127-.043-.168.043v-.085l-.042-.042-.085.042h-.042l-.042-.042v-.042l.042-.042h.042v-.042l-.042-.043h-.084l-.127.043-.126-.043.084-.042.084-.042-.126-.084-.127-.042-.295.042-.084.042-.084.042v-.126l.042-.085-.042.042-.085.043-.126-.085-.169-.042.084.084.085.043h.042l-.38.168-.042-.042.042-.042.043-.042v-.042l.042-.043h.042l-.042-.042-.253.127h-.127l-.042.042-.042.042h-.169l.085-.126.126-.085.295-.126v-.127l.042.085v.042l.043.042h.126v-.042l-.126-.085-.043-.042-.042-.084-.084-.084-.127-.085-.126-.042h-.169l-.042-.084-.084-.085h-.169l.084-.042.127-.042h.21l.127.084.085.043.168.168-.042-.168-.084-.17-.085-.126-.126-.042h-.295l-.169.042-.169.127-.126.126-.084.169v.042l-.127-.38-.084-.168-.042-.169-.085-.38.054.143.032.025.042.042.043-.042v-.085l.138-.053-.18.011-.017.095-.026-.053-.023-.053-.019-.073-.042-.042v-.085l-.042-.042h.253l.042.085.042.042v.042h.084l-.042-.084-.042-.043-.126-.084h-.085l.085-.169.126-.084.127-.084.168-.042.042-.085.043.127v.084l.084.084.042.043.084-.085h.043v.38l.126-.042.042-.085.085-.253-.085-.253-.126-.084-.085-.084h-.131l.042-.085h.169l.084-.042.042-.084.042-.169.043-.084.042-.042.042.042.042.084-.042.127.042.126.084.042h.043l.084-.042h.042l.042-.084.085-.127v-.084l.042-.042.042.042.084.042v.169l-.084.126-.042.085.042.084.084.042h.085l.084.042.042.042v.127l-.084.126-.169.17-.137-.021-.084-.084.01-.105.042-.127.043-.042.042-.042.074.032.042.042v.085l-.042.042-.032.052h.084l.042-.042.043-.169-.085-.084-.084-.042-.127.042-.084.084-.042.042v.043l-.042.168.084.127.127.084h.084l.084-.042.127-.084.084-.085.084-.168v-.169l-.084-.042-.084-.042h-.085l-.084-.085.127-.21.042-.127-.042-.084-.085-.085h-.042l-.169.042-.084.085-.042.084-.042.084-.085.085-.042-.085.042-.042.043-.042-.043-.084v-.127l-.042-.042-.042-.042h-.126l-.085.084-.084.127-.042.042v.084l-.042.042-.043.043h-.042v-.296l-.042-.126-.042-.084.042-.085h.042l.169-.042h.084l.127.084.084.043h.127l.042-.085v-.253l.084-.042.042-.042.042-.042v-.042l-.042-.085h-.04v-.042l.084-.084.084-.085-.042-.089-.084-.084h-.042l.042-.042.042-.085.042-.042-.042-.042-.169-.084-.042-.043-.084.043-.042.042h-.085v-.042l-.042-.043-.084-.084h-.084l-.043.042-.084.042-.042-.126-.084-.169h-.127l-.126-.042-.127-.042h-.169v.042l-.084-.042h-.084l.084.042-.042.042v.085l-.042.042H13.1l.042-.592v-.295h.126l.042.084.043.042h.168l.127-.126.084-.043h.042v-.084l.042-.084-.084-.085v-.084l.042-.084-.084-.127.042-.126v-.085l-.042-.084h.042v.042l.042.042.085.085.084.042.169.042-.043.21.043.17.126.126h.042l.085.253.168.169.127.042h.126l.042-.042.17-.169.041-.042v-.253l-.042-.127-.042-.042-.042.042-.085.043.085.084.042.042v.169l-.042.042-.042.084-.083.06-.096.025-.042-.043-.169-.084-.042-.084-.019-.098.115-.071.042-.042.042.126.042.085.085.042h.042l.126-.042v-.127l-.084-.126-.042.042h-.042l.084.084v.042l-.042.043h-.042l-.085-.127v-.042l.043-.084.084-.043-.042-.084-.085-.169-.084-.084h-.042l-.084.042-.085.127v.084l-.05.155-.108-.103-.042-.084.023-.086.029-.073v-.084l-.084-.042-.043-.042-.084-.042-.052-.01-.081-.065.133-.008h.084l.043-.084-.02-.107v-.084h.041l.043-.042.126-.042.127-.085v-.168l-.127-.127-.295-.126h-.084l-.085.042-.168.042.042-.084v-.085l.042-.042-.084-.084-.211-.042.042-.211-.042-.211-.085-.169-.126-.168v-.127l.042-.126-.042-.127.042-.126.084-.169.127-.127.042-.042.084-.21.085-.127.084-.169v-.337l.21.126.043-.084v-.042h.042l.085.042.084.084.042.211v.042l-.042.085-.042.042-.042.084-.085.042-.084.043-.21.042.041.042h.085l.168-.042.127-.085.168-.253v-.253l-.084-.084-.126-.169-.17.085h-.041l-.085-.042h-.084v-.043l.337-.168.34-.169.042.127.042.042.084.042h.084l.127-.042.126-.169.043-.084V9.27l.084-.042.21-.169.23-.137-.09.127-.057.197-.008.262.07-.042.067-.04.126-.126.074-.227-.006-.225.055-.028.107.097-.134.36-.028.246.059.243.126.253.042.126.042-.126.043-.169zm-.455 5.775v.154l-.055.05h-.056v-.153l.056-.101.055.05zm.687.667l-.066.158v-.158h.066zm1.476 5.097l-.105-.02-.066-.056-.251-.159.076-.08.103.102.062.064.18.149zm-.412-.444l.275.085.13.145-.024.097-.381-.327zm-.096.326l-.474-.324.01-.111h.047l.236.19.237.19.425.288-.019.094-.462-.327zm.433.381l-.025.07-.189-.095v-.102l.142.048.072.079zm-.27-.164v.122l-.094-.047-.094-.048-.095-.047-.094-.094-.142-.096-.142-.097v-.168h.048l.283.24.33.235zm-.33-2.116h.22v.042l-.274.042v-.042l.054-.042zm-.027-.044V19.2h.273v.042l-.11.042-.163.044zm.083.214h.11l-.055.042-.11.044h-.055v-.086h.11zm.183.128l-.054.042-.054.042-.219.043v-.129h.327v.002zm-.24.17h.165v.043h-.164l-.11.042v-.086h.11v.001zm.031.17h.22l-.164.043-.11.042-.11-.042.055-.042h.11zm.004.129h.136v.086h-.271l-.046-.086h.18zm0 .15l.136.042h-.226l-.045.042-.046-.042v-.042h.18zm-.046.15h.182v.042h-.271l-.046.043v-.086h.135v.001zm.135.17l.046.043h-.046l-.137.042h-.136l-.046-.042v-.042h.319zm-.02.235l-.076-.086h.077l.078.086h-.08zm.054.123l.094.149-.49-.343h.094l.153.058.149.136zm.062-1.852h-.22v-.086h.274l-.054.086zm0-.214l-.054.042h-.11l-.053.042V18.9l.054-.042h.219l-.056.044zm-.22-.128l.055-.042.054-.043h.11v.043l-.054.042h-.164zm.22-.17h-.22l.055-.043v-.042h.164l.053.042-.052.042zm0-.17h-.163v-.043h.11l.109-.042-.056.084zm-.055-.171h-.11v-.086h.22v.086h-.11zm.033-.172h-.11v-.085h.164v.042l-.054.043zm-.116-.17l.056-.087h.11v.086h-.166zM13.58 19.72l.11-.105.094-.045-.143.224-.047.135v.09l-.06-.122.046-.177zm-.13-.14l.071-.113.085-.098.126-.084-.084.14-.014.126-.126.169-.058-.14zm.59-.143l-.151.114h-.101l-.1-.057v-.057l.05-.058.153-.057.069.003.055.029.024.083zm-.026.126l.136-.049.183.05.182.099.045.097-.111.06-.149-.1-.136-.022h-.046l-.104.066-.113.056-.115.089-.182.295.072-.271.127-.225.12-.094.09-.05zm-.47.666l.095.17-.22-.117.126-.053zm.116.002l.126-.182.127-.127.21-.126h.085l.212.066-.098.028-.097.056-.056.07-.128.077-.042.042h-.085l.085-.127-.085.043-.084.084-.042.056-.128.04zm.018.154l.13-.065.324-.128-.26.194h-.194l-.13.066.13-.067zm.494-.022l.053-.053h.104v.053h-.052l-.159.052-.158.105h-.053l-.052-.053.105-.052h.158l.054-.052zm-.404.079l.052.052.052.052h-.106l-.052-.052.054-.052zm.048.194h.048l.047-.047.047.047.047.047-.047.047h-.047l-.095-.047v-.047zm.275.15l.1-.05v.052l.05.052.051.052-.05.05-.15-.05-.051-.052-.05-.05h.1v-.004zm.026-.123l-.095-.093.095-.047h.094l.047.047v.046l-.141.047zm.236.047h.094l.047.047-.047.048h-.14l-.047-.048.093-.047zm.236-.076l.062-.08.063.08v.081h-.247l.122-.08zm-.01-.185v-.05h.05l.1-.05h.05l-.099.1h-.101zm-.009-.2l-.052.053h-.104l.052-.052.104-.053v.053zm-.145.19h.122l-.122.079-.06.08-.06-.078.12-.081zm-.079.418h.145l.096.096-.047.049h-.096l-.049-.049-.047-.049v-.047h-.002zm.36.373l.126-.071.064.07h.064v.071l-.127.071h-.064l-.126-.07.062-.071zm-.051-.257h.141l.071.07v.067h-.07l-.142-.137zm.152-.062l-.184-.06.123-.063h.062l.123.062-.06.06h-.064zm.317-.582l.173-.057.037.123-.113.084-.14-.013-.016-.078.059-.06zm-.09-.123l.056-.056.056-.056v.056l-.056.056h-.056zm.385.246l.103.047.06.061v.06h-.06l-.188.056-.055-.055-.044-.071.184-.098zm-.064-.128l.05-.103h.103l.154.05-.05.051h-.052l-.1.05h-.051l-.054-.048zm-.388-.022l-.182.06.121-.12h.182l-.121.06zm-.046.135h.083l.082.084-.082.083h-.081l-.083.082-.082-.082v-.083h.082l.081-.084zm.118.626h.066l.066.065h.064l-.064.066h-.066l-.13-.064.064-.067zm.098-.07h-.143l-.073-.072.145-.07.073.07.072.145-.074-.073zm.06-.202h-.132l-.134-.086.134-.086h.067l.133.086v.086H15.2zm.127.226l.14-.066.071.13h-.21v-.064zm-.057-.147l.096-.12h.192v.122h-.288v-.002zm.31.139v-.075l.078-.074.157.074-.078.075h-.157zm.198-.672l.06.061.061.06-.12.062h-.06l-.12-.061.06-.06.119-.062zm-.152-.153h.177l-.088.044-.09-.044zm.077.464h.259l-.173.084-.086.084-.086-.084.086-.084zm.073.41h.091l.046.045-.046.046-.091.045-.046-.045-.045-.046.091-.045zm.152-.183l-.117-.06.117-.061h.116v.06l-.116.061zm-.019-.278v-.077h.174l-.057.077h-.117zm.13.292h.091v.045l-.09.046h-.046l.045-.091zm.06-.177l.043-.044h.088v.044l-.044.044-.088-.044zm-3.077-2.753l-.088-.088-.176.044.088-.087.088-.088.088.131.087.088h-.087zm.059.125l-.091.072v-.143l.09.07zm-.773-1.673v-.13l-.044-.044h.044v-.044l.218.044.173.044h-.086l-.043.044-.044.173.044.132.043.13-.13.044h-.043l-.044-.088-.044-.13v-.088l-.044-.087zm-.212-.729l-.255-.07-.127-.099-.146-.163-.108-.177-.042-.17-.043-.341.004-.324.126-.348.169-.219.298-.467v.212l-.001.19-.179.296-.159.364-.037.233.043.226.037.179.042.128.084.128.17.129.17.086.426.17.131.012.022.074.107.042.042.064-.052.095-.29-.073-.432-.177zm.212.18h-.265l-.133.044-.133.044.044-.22h.133l.088.043.266.09zm-.292-2.988l-.084-.338-.042-.38.169.043.084-.042.084-.042.042-.085.085-.084.084-.21v.084l-.042.084v.084l.084.042h.127l.232-.01-.096.063-.136.032h-.042l-.043.042.145.022.191-.007-.081.07h-.084l-.085.041-.042.043.346-.004-.105.042-.113.046h-.084l-.042.042.084.042.123-.027.172-.015-.08.064-.097.005-.077.017-.085.042.127.042.2-.02-.123.057-.12.048-.041.042.347-.042-.073.082-.276.044-.103-.037-.105.01-.13.027-.168.169-.084.084.042.127v.126l.042.085h.169v.042l-.043.042-.042.084v.085l.085.042.042.126.042.085.084.042h.085l.126.126.042.085.042.042h.085l-.085.042h-.253l.127.084.158.022.174-.022.147-.027-.16.112-.139.022-.136-.02h-.127l.085.041.12.036.242.03-.216.05-.143-.018-.127-.013.24.106.263.022-.253.042-.253.042.127.042h.126l.253.043-.123.065-.12-.003h-.126l-.183-.002.13.066.132.012.28.03-.253.042-.285.043.21.042.296.022-.084.042-.211.022h-.211l.084.084h.39l-.208.056-.266.028.126.085.159-.02.295-.043.003.076-.188.01-.127.032-.116.053-.15-.066-.127-.084-.169-.043-.168-.084-.127-.126v-.38l.076-.405.029-.334.022-.317.042-.042v-.464l-.046-.384zm.048-1.365h-.044l-.13-.044.086-.086.044-.042.086-.216.216.086.13.044.13-.044-.044.13-.043.086h-.13l-.086-.044h-.042l.086.086v.044l.044.044-.172.13-.172.172h.044l.172-.13.172-.172.044.044.044.044v-.044l.044-.086-.043-.044.13-.216.044.044v.044l-.044.086-.086.13v.086h-.049l-.086.044-.086.043-.044.044v.13l-.042.086-.13.086-.043.044h-.086v-.172l-.02-.226.043-.044.086-.044.064-.076v-.047h-.087zM8.16 5.69l.098-.286.084-.253-.084.042-.042.043-.084.042h-.085l-.168.084-.085.169-.168.295v-.464l-.085-.126-.084-.085-.211-.253-.169-.21h-.042v.463l.042.253.127.169.21.21.212.17-.043.084v.084h.043l.21-.084.17-.127.112-.136.042-.085zm.388-.871l-.168.137-.211.106-.221.042-.27-.022.175-.157.211-.074.484-.032zm.545.034l-.123.199-.138.194-.2.155-.192.106.132-.217.135-.226.136-.127.12-.039.13-.045zm-1.017.87l-.177.177-.221.09.177-.355.133-.177.177-.133-.09.398zm-.531.025l-.221-.177-.154-.2-.042-.211-.025-.252.177.178.185.178.107.253-.027.231zm.953-.022l.22.134.178.22.133.222.133.22-.133-.043-.128-.061-.155-.155-.127-.253-.121-.284zm-.255.245l.032.294-.106.209-.095.084-.158.21-.05-.004-.046-.238.084-.267.152-.155.187-.133zm-1.827.182l.074-.05.135-.073.145-.01.22.062.177.115-.2.064h-.183L6.6 6.206h-.184v-.054zm.844.037l-.25-.349.179.064.158.053.137.148.147.23.043.16-.414-.306zM6.85 4.722l-.074.246-.206.177-.182.05.052-.178.127-.244.253-.211.297-.095-.267.255zm-.431.71l.059.147v.133l-.108.251-.05.088-.046.133-.097-.177v-.22l.097-.62.047.133.098.132zm.168.82l.194.08h.211l.127-.041.084-.043.111.068.2.148.202.127.077.123.042.042-.38-.126-.379-.127-.759-.253.27.002zM9.34 6.8l.046-.272.148-.253.32-.394v.172l-.025.222-.118.22-.158.148-.213.157zm.182.17l.139.047.138.048h.186l.207.106.317.432-.258-.044-.312-.17-.231-.186-.186-.233zm.964.845l-.044.132-.005.13-.061.185-.108.068-.116.022-.105-.01.22-.306.089-.087.13-.134zM9.11 5.77l.007-.224v-.266l.087.087.095.149.064.21.022.233-.133.381-.142-.57zm2.221 3.075l.275.515-.012.192-.02.179-.115-.066.01-.137.065-.178-.211-.454.03-.135.064-.221.005-.263-.047-.2-.076-.097-.168-.253-.043.38.043.21.042.085.084.042.084.042.019.084-.019.085-.084.042-.21.042-.085.126-.127.127-.126.084h-.169v.085l.127.084.168.084h.296l.084-.084.042-.084.042-.211.127.253.042.168-.042.085-.042.042v.126l-.63-.168-.298-.213-.127-.126-.126-.169-.675-.928-.548-.506-.248-.229-.273-.21-.147-.117-.137-.063-.188-.094.22-.243.149-.295-.052-.39-.316.211-.189.243-.052.148-.074-.189-.074-.116-.092-.13-.077-.09-.337-.17h-.117l-.104-.02.2.285-.357-.084-.159.042-.126.064.052-.158.056-.162.028-.112-.028-.141-.085-.127V5.24h.127l.126-.085.127-.126.126-.253.085-.127.084-.084.126-.042h.17l.59.169.59.042-.304.037h-.295l-.126.042-.127.042-.084.127-.127.126.085.042h.168l.253.042.253-.084.211-.126.169-.211h.126l.169.042-.169.042-.087.044-.105.137-.231.463.01.053.078.273.084.253.042.084.084.169.17.169.21.084.21.042v.169l.043.084.084.042.253.253.253.296.127.084.168.084.17.042h.168l.042.043-.127.042-.084.042-.169.169-.27.435.201.022.169-.043.113-.075.042-.085.042-.168.042-.17V7.81l.085-.085-.211-.421-.127-.17-.084-.083-.126-.043-.169-.042-.169-.042H9.57L9.4 6.839l.21-.127.17-.168.126-.211.042-.253-.042-.169.042-.169-.38.338-.12.184-.127.242-.02.032-.026-.077.047-.123.043-.085.032-.074.047-.098.042-.126-.042-.295-.085-.295-.21-.253v-.085l-.127.38v.38l.084.379.127.337-.127-.253-.168-.295-.211-.211L8.6 5.66l-.168-.085.21-.084.17-.126.168-.17.084-.168.042-.126h.043l.084.126.126.127.253.168.253.211.127.127.126.126.338.675.21.337.254.295.295.422.253.464.057.062.04.066.012.029.127.179-.014-.016.033.061.087.164.047.087.058.095.057.06.047.088-.054.169-.084.147-.084.168-.053.201-.032.159-.02.126-.047-.088.015-.408-.3-.575-.029.091zm.017-.425l-.093-.062-.044-.056-.074-.212.026-.2.173.225.03.155-.018.15zm-.056.337l-.1.299-.05.148-.148.053h-.149l-.167-.083.296-.179.158-.178.16-.06zm-.148.87l.253.095.282.166.308.362.253.306.167.197.211.2.19.127.18.285.17.251.21.32.063.178.032.19-.047.16-.057.183-.238.347-.218-.057h-.084l-.084.042h.17l.096.063.074.15.125.187-.04.24v.086l-.086.086-.086-.086-.043-.129v-.256h-.042v-.042l-.042.17v.128l-.042.129-.042.042h-.086l-.085.17-.042.042-.086-.042-.042-.086-.042-.084-.086-.086v-.086l.212-.383v-.042l-.042-.043h-.045l-.043.085-.086.086-.042.086h-.084l-.042-.084.042-.087.042-.042h-.084l.042-.128.155-.128.179-.02.177.02h.17l.17-.042.087-.042-.029-.117.052-.074.032-.088.016-.26v-.146l-.024-.12-.049-.135-.084-.17-.213-.299-.214-.256-.172-.127-.221-.126-.084-.236-.296-.355-.266-.266-.224-.182-.457-.289.261.063zm1.373 1.173v-.052l.16.05.147.03-.005.073-.164.01-.138-.11zm-.413-3.203l-.098-.084-.09.022-.075.028-.044-.09.09-.134.089-.046.134-.043.18.089.089.179v.09l-.046.223-.044.09-.09.09-.043-.046-.046-.046.046-.09.02-.12-.072-.112zm-.19.03l.092-.03.07.084.023.166-.123-.11-.063-.11zm.176.392l-.155-.029-.098-.07-.07-.127-.014-.098.022-.12.315.444zm.22.003l.084-.126.084-.211-.042-.253-.084-.127-.085-.084-.126-.042h-.084l-.127.042-.084.042-.085.084-.168-.295-.211-.253v-.042l.253.042.21.085.235.023.272-.066.21-.126.127-.042h.042l.15.033-.084.107-.169.064-.2.084-.306.137.328.136.168.01.263-.062.127-.116.02-.139v-.168l.084.168.043.127v.084l-.43.54-.372.6-.084-.084-.042-.126.083-.046zM11.9 5.447l.169-.179.094-.022-.043.22-.088.219-.176.22-.209.197.032-.221.085-.221.136-.213zm-.032-.133l-.23.059-.28-.06-.234-.058.279-.118.128-.029.126-.042.21.013.232.06-.092.118-.139.057zm.127.565l.13-.177.086-.223v-.222l.172.312.258.266.172.267.086.356V6.5l-.086-.133-.172-.133-.172-.09-.172-.043h-.258l-.172-.044.128-.179zm.344.346h.128l.13.086.172.172.172.172-.258-.086-.214-.086-.214-.128-.215-.172.299.042zm-.859.465l.095-.072.141-.073H12l.565.073-.094.072-.142.073h-.142l-.19.045-.231-.045-.284-.073zm1.481.007v.275l-.133.152-.273.042-.306-.062.264-.117.168-.062.137-.042.143-.186zm-.376 1.346l.106-.137.292.204.295.085-.183.027-.085.042-.224-.003h-.275l.074-.218zm7.676-1.44l.45-.331h.05l-.117.299-.147.23-.276.164-.246.093.097-.231.19-.224zm-.332-.218l-.007-.096.066-.361.01-.316.095.233v.285l-.043.201-.05.196-.071-.142zm.437-.327l-.2.24-.05-.007.042-.17v-.21l-.042-.169-.084-.168h.126l.085-.042.21-.085v.38l-.01.133-.077.098zm-.231-.564l-.159-.02-.315-.136-.127-.105.159.01.148.032.253-.01.279.155-.238.074zm-.567-.133l.127.042.21.127.043.126v.127l-.043.253-.042.253.042.126.043.127-.296.506-.084.295-.084.295h-.253v-.084l.042-.084.084-.127.042-.21v-.21l-.042-.21-.126-.17-.042-.084v-.126l.042.042.042.042.084.042.085.042.126.38.127.084.042-.253.084-.337.042-.337-.042-.17V5.7l-.084-.126-.085-.169v.21l-.042.17-.126.379-.042-.253-.085-.21-.168-.17-.211-.168-.042.042v.084l.042.043v.042l-.464-.127-.38.042.296-.126.337-.042.717-.085.084.125zm-2.913 2.744h-.21l-.212.043.043-.127.084-.126.126-.253.211-.211.295-.127-.126.169-.127.21-.084.17-.042.126.042.126zm.084-1.393v-.126l.002-.058.083.142.126.21.127.17.084.042.127.042h.084l-.422.084-.168.085-.221.141.074-.168.062-.1.085-.126v-.127l-.043-.21zm.107-.131l.2.052.18.11.151.15.165.173-.168.032-.211-.062-.147-.158-.116-.17-.054-.127zm-.127 1.347l.05-.14.252-.421.05.14.031.138-.03.155-.095.125-.1.094-.105.091-.051-.086v-.096h-.002zm.231.135l.085-.084.106-.154.02-.141v-.127l-.084-.253.168-.042.127.253.126.38.085.084.126.126.127.043-.042.042-.464-.042-.464-.043.084-.042zm.845 0l-.084-.084-.127-.21-.084-.212-.126-.21.21.126.127.169.127.21.084.211v.042l-.127-.042zm.085-.295l-.085-.169-.168-.126-.127-.127-.21-.084.21-.084.211-.042h.253l.21-.043-.041.085-.085.126-.084.169-.084.295zm1.013-1.351h.085l.084-.042.042.042-.042.422-.042.38-.253-.17-.295-.126v-.042l.084-.127.169-.337h.168zm-.264-.132l-.274-.178-.146-.208.226.058.237.055.117.074.21.17.065.063-.201.042-.234-.076zm-.081.318l-.098.155-.14.155-.211.098-.2.027-.188.044.236-.267.283-.223.378-.133-.06.144zm-.658-.06l-.101.282-.154.235-.05-.235.05-.187.154-.47v-.142l.05.141.05.142v.235zm.067 1.325L18 7.615l.134-.27.126-.211.042.295v.169l-.042.168-.076.144-.092.11-.085.042-.049-.194zm.375 0l.09-.348-.045-.217-.136-.262.136-.088.228.48.137.173.136.044.091.044-.362.174-.409.173.134-.173zm.545-.314l-.159-.095-.06-.168-.176-.263.22.087.227.135.256.35-.072.058-.098-.013-.138-.091zm.24-.241V7.05l.034-.306.014-.197.083.15.043.132.044.219-.044.22-.087.218-.044-.087-.042-.086zm-.033-1.495v-.27l.18.18.09.227.045.226.046.27-.09-.09-.136-.072-.063-.179-.072-.292zm.477.884v-.135l-.027-.292.107-.305.057-.26.091.18-.01.217V6.2l-.137.665-.08-.164zm-1.067-1.165l.232.047.188.093-.14.092h-.188l-.325-.047-.14-.093-.047-.047-.048-.047h.468v.002zm-.361.204l.168.084.211.042h.253l.127-.084.084-.127.042.296.042.168.043.127-.085-.085-.126-.084-.169-.126-.21-.043-.422-.084h-.043l.253.295.169.127.169.126-.211.085-.169.042-.168.084-.17.127.043-.211v-.253l-.084-.211-.169-.169h-.042l.042.085v.168l-.127-.042h-.126l-.253.084-.295.043h-.127l.096.079.18-.032.21-.032.2-.053.202.01-.043.107-.116.084-.179.042-.295-.037-.084-.042-.083-.057.127.141.21.043.211.042.211-.127-.084.295v.296l-.169-.17-.169-.168-.21-.084-.252-.015-.052-.095-.02-.104-.054-.206.38-.042.337-.127.337-.168.295-.211.164.167zm-1.72 1.646l-.294-.142-.179-.2-.128-.247-.15-.244.251.097.292.203.11.238.097.295zm-1.45.43l.263.073.277.021.22.061.117.088.095.103-.283.064-.218-.06-.258-.104-.213-.246zm.004-.346l-.088.06.003-.186.034-.216.127-.159.2-.189-.02.18-.052.178-.204.332zm-.137-.474v.338l-.042.21-.091-.042-.098-.168v-.211l.062-.169.085-.253.084.295zm-.2-.18l-.088.26v.26l.044.13.086.129h-.086l-.086-.13-.086-.174-.085-.08-.179-.085.137.117.084.106.13.246-.044.044h-.086l-.087-.086-.071-.108-.063-.305v.148l.004.137.044.13.043.086h-.217l-.26-.086.13-.216.13-.174.303-.348.174-.13.174-.085-.046.214zm-.507.909l.267-.017.63-.177-.21.113-.351.14-.437.027-.36-.05.053-.137.408.1zm1.852.157l.071.14-.042.098-.24-.211-.21-.085-.464-.028-.211-.029.084.155.085.127.113.098.271.082-.126.042-.127.085-.126.126-.046.002-.098-.127-.337-.224-.182-.056-.309-.097.056.224.197.253.295.182.215-.03-.127.126-.169.127v-.085l-.337-.084-.295-.126-.169-.043-.126-.042-.169.042-.169.043.338-.717.378.017h.276l.267-.043.172-.059.22-.124.16.082h.252l.393-.163.083-.03.155-.14-.376.166-.251.1h-.169l-.179-.063.263-.104.317-.063.382-.02-.243-.032-.211.01-.327.064-.095.022-.076.047.127-.21.126-.211.042-.211v-.253l-.21.21-.127.085-.042.084-.169-.421.169-.042.169-.043.38-.084.379-.042.168-.084.169-.085.21-.042.085-.042h.084v.548l-.042.253-.084.253-.084-.169-.043-.126-.042-.084-.168-.127-.169-.084-.21-.042-.17-.085v.085l.085.084.042.084.084.211.169.253.169.169.126.042.127.042-.253.38-.088-.026-.046.095zm-1.841.15l.38.172.16.103.151.066.14.097-.027.076-.184.009-.153-.012-.142-.073-.155-.126-.084-.127-.086-.185zm.538 1.253l-.085-.042-.126-.127-.004-.11.056-.028.074.052.169.253h-.084v.002zm.079.294h.044v-.174l.087-.044.088-.044v.088l-.032.09-.034.104-.086.088-.1.01-.105-.032-.063-.147.074-.025.044-.044h.044l.039.13zm-1.01-.024l.067.111.135.056v.056l-.145.03-.19-.422.133.169zm-.075-.228l-.047-.047.047-.094.095-.048h.094l.095.048-.142.094-.142.047zm.061.086l.06-.057h.06l.059.057.116.157.127.098-.267-.042-.155-.213zm.393.144l-.24-.253.127-.043.047.058.206.238h-.14zm-.056-.324l.091-.047.135.136.09.182-.179-.09-.137-.181zm.125-.086l.054-.06.11-.062.11.183.11.182h-.11l-.055-.061-.219-.182zm-.803-.555l.277-.02.22.074.276.116.275.064-.137.064-.179.053-.308-.026-.316-.108-.263-.161.155-.056zm.02.271l.211.085-.084.084-.084.084-.085.127v.126l-.168.043h-.085l-.042-.085-.042-.126.042-.169.085-.126.042-.17.21.127zm.046.69l-.024.176-.116-.042.03-.134h.11zm-.287.302h.208l-.105.135h-.104v-.135h.001zm-.04-.162v-.07l.072-.071.073.07v.071h-.145zm-.224-.11h.161v.117h-.161v-.116zm.11.264h.094l-.108.158-.08-.158h.093zm.046.335h-.167l.085-.128.082.128zm-.074.201l.253-.21.295-.17.043.085-.043.042-.084.042h-.084l-.042.042v.085l-.043.084.043.084.042.127-.127.169-.084.168-.042.211.042.211v-.042l.015-.115.022-.158.064-.127.095-.158.165-.257.094-.315-.02-.19-.052-.168-.02-.2-.085-.201v-.201l.159-.189.114-.042h.085l.11.013.092-.003.13.003.175-.055.17-.042-.4.22-.117-.01-.116-.042-.147.042-.095.095-.02.148.042.169.064.137.075.2.032.233-.032.149-.043.136-.113.267-.104.178-.127.117-.084.158-.052.169-.026.167v.084l-.126-.168-.127-.127-.084-.168v-.213l.118-.464zm.552-.179l-.061.274-.06.054-.061-.11.037-.137.086-.08h.059zm.23 2.667l.18-.044h.222l.09.044.133.133v.09l-.133.044-.134.043-.177.044-.09-.044-.043-.043-.045.043.089.09.09.044.089.043v.134h-.177l-.09-.044-.133.044-.044-.044-.266-.133-.178-.134v-.133l.09-.133.133-.177.046-.09.09-.043h.088l.09.043-.09.267.17-.044zm-.465 1.545v-.072h.216v.146h-.143v-.072H13.3v-.002zm-.02-.406l.022-.075.064-.074.106.064-.067.108.035.115.053.052-.063.084-.116-.032.042-.094.002-.08-.078-.068zm-.002.086l.012.102-.104.03-.063-.095.022-.095h.066v.058h.067zm.016-.503v.212l-.043.043-.042.086-.042-.043-.042.043-.042.042v.086l-.042-.042-.086.042-.17.128-.043-.17-.042-.043-.042-.042.042-.086.042-.042.086-.042.042-.084.042.042h.043v.128h.17l.084-.086.086-.256v-.129h.042l-.043.213zm.41 1.822l-.129.042-.131-.002-.125.172.195.262.19.25-.043-.127-.086-.129-.187-.258.06-.082.087-.042h.086l.086.042.086.042h.086l.086.042.042.042-.042.086h-.042l-.042-.042-.087-.042h-.042l.042.212-.086-.086h-.086v.086l.043.086.17.043.086.042.042.042v.086l-.042.086h.128l.042-.042v-.086l-.042-.042v-.042l-.042-.043-.17-.042.042-.086v-.042h.17l.042-.128v-.086l-.042-.042.086-.043.042-.042.129.17.086.043h.086l.042-.042v-.043l.042-.042h.042l.042.042v.086l-.042.086v.129h.128l-.01.086-.086.042-.042.042-.032.086.042.044.032.096-.032.064-.076.05-.02.083.012.091-.032.107h-.086l-.128-.086-.139-.02-.02-.065v-.086l-.049-.111-.057-.039h-.086l.086.128v.17l-.086.043-.086.042v-.086l-.09-.088h-.042l-.042-.042v-.086l-.042-.084-.042.042-.085.042-.042-.128v-.086l.042-.042v-.042l-.042-.086-.086-.043-.042.043-.086.086v.086l-.042.086-.086.086-.042.086-.087.042-.084-.042-.042-.042v-.043l.042-.042.042-.042h.042v-.128l-.084-.086v-.086l.042-.042.086-.341h.129l.086-.042.086-.34h.128l.128.041.128.042h.086l.042.043.043.086-.043.086h-.086v-.091h-.049zm.143 2.143h.09l.092.046.133.153.046.183-.042.12-.068.143-.022-.33-.045-.045-.091.046h-.092l-.074-.248.073-.068zm-.095-.902l-.06-.064h.06v.064zm.024.182l.044.044v.09l-.118.063-.235.036-.044-.088.22-.055.044-.044.089-.046zm-.03-.147l-.118.145-.134.044h-.044l-.042-.11.206-.035.044-.044h.088zm-.157-.108l-.044.044-.088.044-.064.054-.044-.044-.044-.087.066-.01.044-.088.044-.044h.088l.087.088-.045.043zm-.243-.113h-.177l.044.134.087.177.044.133v.177l-.044.133-.087.134-.178.22.044-.31v-.575l.044-.133.044-.133h.09l.043-.088.044-.044.044.044.044.044-.086.087zm-.265 1.196l.044.088.09.044.043.044-.013.072-.134-.087-.087-.044.013-.117h.044zm.03-.045l.086-.091.255.243-.158.011-.183-.163zm.122-.118l.072-.086v-.044l.086.072.044.044.09.044.043.044.102.059-.078.032-.116.042-.243-.207zm.322-.015l-.196-.154.044-.044h.044l.21.066h.176l-.044.045-.072.146-.162-.06zm.234-.221h-.087l-.103-.017-.176-.044.06-.073h.085l.09.017.177-.044.044.117h-.044l-.046.044zm-1.013-.385h-.14l.044-.086.106.01h.172l-.01.074h-.172v.002zm.192.086l-.096.084-.128-.01h-.172v-.064l.01-.064.386.054zm-.256-.226l-.01-.064h.278l-.076.064h-.192zm.411-2.557l-.052.074-.063.01-.097-.037.086-.042.065-.037.061.032zm.338-.523l.064.042.052.074-.052.095-.085-.02-.074-.085.022-.084.073-.022zm-.061-.131l.135-.01.084.031.042.043-.062.116-.063-.084-.136-.096zm.135.59l-.074-.024.02-.11.079.053.017-.088.042-.084.074.106-.067.123-.091.024zm-.009.088h.058l.057-.058.057.117v.116h-.057l-.057-.057-.058-.058v-.06zm-.566-2.073l-.024-.272v-.194l.164.381.028.198-.033.244-.051.106-.084-.463zm-.112-.371l-.152.018-.016-.103.19-.02-.022.105zm.032.062l-.042.116-.179.022-.003-.106.224-.032zm-.236-.256v-.043l.14-.037.064.107-.162.016-.042-.043zm-.416-.61l.042.043.042.042.042.042h.086l.042.086h-.168l-.043-.086h-.086l.043-.126zm.425.802l-.054.047v.047l-.054.096-.086-.011.086-.277h.054l.054.098zm-.808 2.756l-.04.636-.104-.295-.052-.328.137-.38.158-.284-.1.65zm.904 1.138l.165-.059-.032.127-.133-.068zm.226.957h-.117l-.148.022-.096-.128.202.001.159.105zm-.145-.15l-.215-.042.054-.081.117.038.044.044v.04zm-.312.592l.128.042.158.022.159-.01-.073.072-.202.002-.255-.042.085-.086zm1.87-2.79l.066-.2v-.09l.046-.046h.089l.045.09.046.09-.046.045-.134.089-.066.066-.046-.044zm1.297-5.39l-.006.232-.056.169-.169.155.056-.33.077-.105.098-.122zm.238.234l.108.194.034.177-.086.432-.112-.15-.055-.25.008-.208.103-.195zm2.277-.204l-.13-.13-.087-.13.305-.088.261-.13.565-.261v.174l-.044.087-.087.044h-.218l-.217.044-.174.088-.13.173-.044.129zm.737-.388l-.059.062-.116.125-.292.189-.234.062.116-.189.175-.125.176-.124h.234zm-.388.649l-.261-.174.261-.044.218-.13.347-.347.044.044.044.088-.174.087-.173.13-.098.144-.032.094.022.095.064.021-.074.053-.054-.015-.134-.046zm.188 1.026l-.063-.296v-.273l.064-.2.074.031.032.18.004.259-.111.299zm.448-.98l.297.064.653.261-.348.088-.263-.03-.39-.147-.325-.16.186-.075h.19v-.001zm.452-.567l-.143.148-.295.201-.37.116.053-.2.234-.177.521-.088zm-.472-.231l.022-.095v-.158l.064-.032.052.084-.02.169-.042.126-.076-.094zM21.89 9.75l-.145-.081-.108-.172-.132-.2-.121-.264.21.127.193.167.175.21.05.233-.122-.02zm.578-.74l-.035.12-.113.203-.147.127-.104.022.125-.223.092-.15.118-.132.043-.168.021.2zm-.244-.564l.003.165-.013.152-.127.221-.02-.116-.01-.085-.052-.136v-.19l.055-.183.042-.126.122.298zm-.208-.34v.042l-.042.042v.042l-.042.21v.212l.084.421.043.042.21-.253.043-.126v-.169l-.043-.21-.126-.211.126.084.085.084.108.216-.024.08v.042l-.042.168-.084.169-.127.169-.084.126-.103.187-.192-.23-.253-.21h-.043l-.084-.042-.042-.042-.042.042-.042-.084-.043-.043h-.042l-.182-.27-.113-.151-.088-.112.117.032.055.04.061.077.179.263.14.123.126.084.127.043h.295v-.085l-.042-.042-.042-.042v-.042l-.211-.253-.11-.05-.273-.083.13.006.113-.006.094-.053-.123.017-.084-.042-.169-.21-.084-.043-.108-.017h-.116l-.137.052-.116.043-.071-.036-.098-.069h.169l.158-.042.285-.074.289-.026h.126l.376.08.172.09-.044.04zm-1.308.084l.21-.085.145.026.107.052.148.148-.21.01-.188-.067-.212-.084zm.398.246l.168.022.211.084.169.127.179.243-.253-.01-.221-.147-.253-.319zm-1.399-.754l.166.024.38.044.345.037.2.022.215-.117.158.01.17.022.294.054.511.208.155.059-.188-.036-.508-.175-.295-.022-.274.044-.295.098-.158.01-.169-.032-.25-.019-.303-.049-.295.044-.289.073-.295.087v.044l-.02.044h-.084l-.107-.044v.044l.03.081-.074.044h-.126l-.137-.066-.032.029.042.087-.084.044h-.084l-.085-.044-.084.044.042.044.137.047-.221.04-.084-.045-.085-.044h-.042l.084.088-.084.044-.105-.007-.084-.12-.064.04.042.087h-.084l-.105-.105-.094-.021.074.13-.126-.004-.085-.044-.042-.044-.042.044.042.044h-.084l-.042-.044L17 8.417h-.084L17 8.55h-.084l-.042-.044-.042-.044h-.085l.042.088h-.084l-.042-.044-.084-.088h-.043l.043.132h-.085l-.084-.044-.06-.098h-.072l.042.088.048.054-.085.044-.084-.044-.084-.044-.085-.044.085.174h-.127l-.126-.086-.042-.044h-.043v.044l.127.13-.169.044-.023.006-.066.071-.211-.217v.101l.126.16-.07.044-.18-.12-.045-.098-.028.058.032.082.103.119-.056.028-.052-.018-.103-.083-.11-.047.039.09.088.127-.043.044-.126-.087-.042-.044h-.042l.042.13.11.075-.056.058-.14-.13-.1-.1.014.117.14.145-.053.012-.084-.044-.084-.044-.085-.088-.038-.082.2-.196.243-.196.083-.08.126-.045.127-.13.656-.104.083-.167v-.088l-.085-.087V7.85l.085.044.168-.218.19-.398.134-.334.057-.493.043.262.022.261-.201.382-.064.202-.086.135-.05.088-.104.195-.042.164.042.076h.506l.422.044.444.032.237.001.267-.13.302-.107.271-.117.297-.137.174-.062.381-.045.06-.129.15-.5.237-.409.307-.442.34-.354-.308.405-.23.425-.17.36-.126.185-.1.396.027.05zm1.245-.567l.052-.307.053.088.052.088.081.24.022.2-.063.148-.136-.01-.095-.126.034-.32zm.666.081l.203-.032h.175l.176.053.175.052h.175l-.263.106-.261.039-.282-.014-.29-.077.066-.098.126-.029zm-.064-.168l-.185.162-.01-.205.055-.207.12-.21.187-.161-.045.411-.122.21zm.963-.28l.183.106.219.131.273.066-.266.042-.324-.042-.218-.113-.273-.162.182-.077.224.049zm.297-.378l.179-.01.283.055.22.02-.25.093-.21.064-.264-.01-.25-.103.095-.079.197-.03zm-.15-.277l-.093.225-.246.224-.175.131v-.087l.042-.226.116-.18.412-.296-.056.21zm-1.073-.609h.216l.268.032.326.13.162.054-.108.054-.221.036-.265-.036-.22-.059-.318-.157.16-.054zm.186-.217l.012-.2.045-.278.118-.224.176-.175v.263l-.088.219-.263.395zm.858-.11l.313.019.362.023-.373.132-.268.06-.263-.016-.33-.112.56-.106zm-.11-1.314l.078.22-.01.305-.01.275-.101.21-.044-.263v-.482l.086-.265zm-.171.253v.548l.084.295-.103.107-.108.062-.286.093.16-.22.084-.252.042-.253v-.169l-.042-.127.042-.126.253-.253-.126.295zm-.933-.175l.634-.2.383-.006-.088.108-.1.096-.28.143-.223.03-.35-.112.024-.06zm.727-1.238l.268-.108.312-.054.312.022.18-.02-.045.107-.09.108-.178.108-.223.054h-.49l-.232-.018.186-.2zm-.401-.046l-.054-.234v-.235l.054-.281.106.094.054.14.054.234v.282l-.074.231-.14-.23zm-.017.567l.266-.071.248.012.368.108-.265.09-.197.084-.155.013-.183-.042-.131-.093.049-.101zm-.43.85l.421.126h.211l.21-.084-.083.211-.127.169-.126.168-.085.211-.042.422-.21.168-.17.127.043.042h.084l.295.169.295.084h.296l.168-.042.127-.084h.126l-.21.21-.254.17-.126.126-.084.253.042.168v.043l-.211.084-.21.126.083-.295v-.295l-.042-.042-.168.169-.17.168-.083.211-.043.127.043.126v.042l.042.085v.042l-.042.084-.043-.169-.084-.168-.21-.338-.127.76.042.126.084.084-.126.085h-.169l-.295-.043-.337-.042-.296-.042.043-.21.126-.212.084.127.085.126.253.169.21.042.127.042.127-.042-.17-.168-.126-.17-.126-.126-.21-.084.294-.169.211-.21.127-.296.084-.337-.169.084-.126.127-.38.253.422-.59.21-.296.254-.253.126-.253.042-.295.043-.253-.043-.295-.21.295-.211.337-.042.17v.168l-.043.38-.38.463.17-.21.084-.254.084-.21v-.254l-.084-.126-.084-.084-.17-.127h-.041l.126.464-.253-.084-.084-.043h-.38l.844-.506.21-.084.211-.126.17-.211.126-.211zm-1.348 3.061l.196.053.197.11.35.333-.244-.05-.197-.108-.302-.338zm.884-1.538l.049-.557.178-.285.132-.268v.279l-.047.339-.132.271-.18.221zm-.348-.428l-.057-.17.094.084.095.116.018.121v.152l-.124.295v-.369l-.026-.23zm.277-2.623l-.154-.294-.131-.219.22.175.218.22.132.087.088.088.044.132.008.227-.073-.021-.352-.395zm.18.583l-.285-.136-.136-.12-.063-.07.454.075.179.127.136.114-.285.01zm-.216.849l.085-.211.126-.21.043-.254.084.169v.126l-.084.169-.043.169-.21.295h-.043l.042-.253zM16.466 5.47l-.105.106-.263.148.162-.264.059-.115.114-.062.088-.044.093-.04.19-.021-.242.221-.096.07zm.993-.405h.337l-.084.084-.169.085h-.295l-.084-.043h-.042V5.15l.337-.084zm-.21-.21l-.117.17-.137.064-.01-.17.094-.147.211-.253.02.202-.062.133zm-.15-.677l.105-.06.21-.058.21.059.157.118h.052l.053.059-.228.044-.19.017-.473-.118.105-.061zm-.294-.545l.064.126.042.18v.232l-.02.21-.159-.158-.062-.453.032-.253.103.116zm-.748.305l.274.108.227.164.228.217-.046.054-.273-.108-.182-.054-.091-.107-.137-.054-.09-.108-.183-.162.273.05zm-.678.876V4.53l.101-.283.102-.236.028-.047.051-.048.049.142.013.184-.05.33-.101.284-.166.241-.027-.283zm1.481-.265l-.055.115-.112.114-.278.115-.278.057-.279.058.223-.23.223-.114.556-.115zM13.787 6.5l-.165.132-.088.08-.084-.127-.096-.176-.03-.162V6.08l-.085-.169-.127-.169.169-.042h.21l.17-.042.084-.042.084-.042.085-.085.042-.126.042-.211.084-.21.085-.085.084-.042-.042-.042h-.042l-.211.126-.211.084-.169.085-.168.168-.043-.295-.042-.168-.084-.127h-.042l-.085.21-.084.254-.042.21.042.254-.253-.338-.084-.168v-.213l.084-.084.127-.085.126-.084.084-.126.043-.085.042-.126.084-.253.042-.085.068-.097.084-.063.143-.008V3.8l-.126.21-.084.212v.21l.042.253.126.127.085.169.126-.296.084-.295v-.295l-.084-.126-.084-.253.295-.043-.042.211.042.253.084.211.169.169.169.168.084.085.042.084h.042v-.084l-.042-.127-.039-.253.064-.02.043.14.055.197.056.24.074.12.169.126.38.169-.085.126-.084.085-.085-.127-.126-.126-.295-.127-.296-.084-.295-.042.127.168.042.085-.042.126-.169.253-.21.253-.085.127-.042.126v.169l.084.126zm-.464-1.315v.136l-.104.18-.107.126-.062-.317.042-.221.137-.348.066.216.028.228zm.117.116l.278-.22.241-.099-.047.248-.088.225-.209.131-.234.039-.145.049h-.097l.3-.373zm.28-1.319l.072.145.007.267-.118.428-.167-.228-.032-.285.064-.24.088-.217.086.13zm.323-.248l.063.03.05.048.102.141.151.284.056.393-.158-.2-.201-.16-.095-.263.032-.273zm.62.712l.166.064.127.098.133.175.218.478-.13-.044-.235-.147-.121-.132-.159-.492zm.684 1.044l.282-.14.282-.047.234-.095-.07.123-.137.159-.231.127-.506.074.053-.108.093-.093zm-.227.07l-.25.057-.283-.086-.223-.184-.142-.17.236.041.236.087.237.128.189.128zm-1.32.588l.095-.159.179-.178.082-.12.065-.154.013.177-.035.277-.085.179-.104.19-.155.091-.078-.143.024-.16zm.638-2.527l.282.09.234.178.152.166-.256.001-.218-.106-.21-.147-.18-.22.196.038zm.89-.147l.01.221-.02.243-.2-.21-.063-.201.027-.3.046-.282.091.234.11.295zM16 2.738l.192.071-.145.083-.189.052-.337.005-.241-.07.192-.142.27-.036.258.037zm-.433-.725l.067-.165.23-.182.099-.05-.138.517-.18.263-.227.164.149-.547zm-.663.278l-.112-.172-.069-.157-.039-.264.122.155.226.076.118.162.032.14.049.111-.088.309-.035-.102-.037-.1-.167-.158zm-2.672 2.045v-.14l.044-.188.22-.187.266-.187-.044.187-.132.187-.177.188-.177.14zm-.147-1.478l.21-.037h.133l.155.037.15.105.23.098-.279.057h-.25l-.25-.105-.198-.103.1-.052zm.127.393l.108.147v.196l-.162-.098-.108-.147-.108-.147v-.147l.27.196zm-.31-1.326l.031-.189.085-.22.116.232.027.262-.049.226-.044.3-.104-.167-.053-.137-.01-.307zm-.478-.153l.116.05.117.102.116.254.226.35-.273-.221-.095-.147-.104-.2-.103-.188zm6.426 3.73l-.162.163-.138-.024-.103.01.1.042.057.044-.138.042-.128.046-.129-.046h-.086v.046l.086.046-.086.045h-.086l-.128-.045h-.086l.086.09h-.214l-.086-.045-.086-.045.042.09-.042.046h-.042l-.128-.045-.087-.046h-.086l-.042.046.086.045.086.046-.062.042-.066.03-.128-.072h-.086v.045l.125.083-.056.029h-.1l-.097-.066-.042-.046-.086.046.086.09.042.046h-.086l-.128-.045-.086-.046h-.086l.172.091-.122.03-.1-.041-.079-.078h-.086l.128.137-.043.045-.086-.045-.129-.091-.086-.046h-.128l.128.091.178.128-.17.015-.208-.173-.053.032.176.141-.1.058-.113-.07-.086-.043h-.13l-.037.04.142.029.113.07-.184.072-.184-.086.014.072.1.071-.142.086-.129-.086-.025.08.11.079-.1.086-.113-.034-.044-.044-.043.044.143.093-.057.057-.13-.062-.125-.024.184.128-.056.071-.046-.046-.173-.043v.043l.13.088v.044l-.044.044-.13-.086-.13-.044.088.13.13.088-.044.043h-.04l-.26-.173.1.145.146.158-.029.044-.09-.017-.127-.113-.086-.044.043.088.058.07.16.13-.113.028-.192-.142h-.086l.315.255-.1.042-.217-.081-.13-.093.044.086.086.088.245.137-.159-.007-.123-.022-.184-.128.042.1.093.094.233.09-.25.002-.2-.092-.17-.137.223-.354.245-.273.113-.157.022-.12h-.086l-.13-.261-.13-.262-.174-.521-.09-.135-.075-.108-.18-.192-.174-.26-.044-.13-.035-.15-.233-.374-.166-.3-.043-.174-.036-.193-.008-.199-.086-.173-.086-.086-.086-.086-.2-.065-.158-.064-.12-.175-.136-.196-.042-.128-.097-.192.287.386.159.172.17.113.093.064.13.044v-.088l-.13-.043-.13-.087-.435-.485.174-.044.173-.044.13-.13.044-.044.044-.087v-.172l.086-.088.13.261.086.044-.174.044-.13.086-.23.27-.117-.009-.042.043.173.087h.39l.088-.044.086-.086.043-.043.087-.044v.044l-.044.043-.086.13-.086.262-.044.13v.13l.13-.348.086-.13.087-.13-.13.435v.478l.13.479.086.26.174.217.029.103.101.115.052-.05.091-.176.183-.174.182-.132.155-.183.1-.211.106-.193.167-.079.634-.207.445-.378.267-.123.36-.128.127-.107.18-.042.097-.054.339-.064.138-.064-.115.046-.246.114-.138.044-.41.235-.273.131-.263.111-.307.258-.139.119-.2.08-.223.044-.187.044-.115.046-.208.415-.094.236-.152.179-.09.043-.137.088-.048.103-.064.096.054.16-.01.086-.084-.003-.044.044.044.044.086.044h.087l.044.087h-.13l.044.088.201.024.07.1-.154-.028-.073.036.24.104.096.076.032.076-.106-.027h-.044l-.042.032.214.091.128.042.003.063h-.226l.01.065h.044l.164.044.044.044-.218-.03.012.074h.044l.111.044.042.057-.153-.013v.044l.086.043.11.027.042.058h-.176l.014.057.17.044.1.1-.135.02h-.044l.066.066.084.015.1.028.141-.065.174-.13.39-.262.197-.155.19-.074.053-.017.433-.105.467-.074.456-.07.489-.23.336.07.256-.055.3-.09.231-.117.085-.054.288-.167.233-.078.258-.047.258-.047.565-.047.263-.027.3-.095.776-.444.255-.236.287-.268.106-.204.189-.368.222-.386-.431.99-.137.226-.138.192-.214.115-.358.208-.253.123-.186.128-.21.132-.242.047-.51.05-.465.058-.232.039-.258.141-.043-.022h-.086v.095l-.096-.017zM11.85 2.475l.116.064-.183.113-.152.077-.2.078h-.203l.1-.157.153-.155.264-.085.105.065zm-.214 1.664l-.295-.126-.211-.085h-.169l.084-.168V3.59l-.042-.337.085.084.042.042.21.042.17.085.084.084.042.084.042.253-.042.211zm.111.115l-.057.182-.073.152-.157.165-.178.169-.16.088.043-.21.137-.237.148-.159.18-.15h.117zm-.752-1.805l.052-.084.33-.186-.031.169-.095.14-.096.047-.241.047.08-.133zm-.294.015l-.047-.327-.012-.445.248.34.032.338-.065.256-.156-.162zm-.192.707l-.236.06H9.8l.189-.178.236-.059.283-.059.236.059-.236.177zm.164.255l.062-.206.125-.206.103.491-.012.25-.1.195-.116-.11-.06-.171-.002-.243zm.322.823L10.7 4.16l.085-.062.12-.1.237.015.137.043.283.148-.133.044-.113.03-.175-.001-.147-.03zm.042.528l.01-.442.334.015-.169.169-.084.168-.042.211v.211l.38-.253.168-.169.127-.21.035-.073.095.2.123.168.084.168.042.043.042.084-.295-.042-.169-.042-.168.042-.633.253.075.01.052.032.168.042.211.042.211.042h.084l.127-.042-.169.253-.084.253-.042.296.126-.043.127-.084.126.084.127.127.126.126.127.085-.253-.042h-.253l-.253.042-.211.168-.084-.042-.043-.042.085-.126.084-.338-.042-.168-.042-.085-.085-.126.253-.085.194-.136-.226-.022-.253-.085-.347-.01-.155.026.155-.11.078-.164.052-.104.074-.275zm.091.965l.084.126.043.127.042.168-.042.169-.085.21-.042-.041.042-.38-.042-.38zm.007-.032l-.263-.024-.307-.115.148-.074.292-.032.541.095-.188.064-.112.033-.111.053zm-.614-.543l.084-.338.149-.21.21-.201.02.318-.07.253-.098.22-.253.261-.042-.303zm.312.575l.126.042.127-.042v.674l-.169-.168-.126-.169-.211-.422.253.085zm-2.57-2.323l.337.305.464.506.131.159.127.271.2.193.231.108.476.325-.044.105.044.044.149.116-.053.064.076.036.074.032.044.128-.074.054-.002.055h.14l.085.113-.137.048.182.038.052.097-.148.035.194.07.064.085-.084.017-.044.042.044.044h.172l.1.073-.142.055.086.044H11.174l.085.113-.166.017-.086.042h.086l.086.044h.13l.078.024.042.07-.162.036h-.044l-.044.042.172.044.134-.022.07.084-.202.024-.086.042.086.044h.086l.132.008.052.065-.14.015v.044l-.044.042h.13l.086.044.044.042-.044.042-.044-.042-.042.042v.044h.044l.044.044v.086l.044.086.086.086.042.128.13.044h.086l.044.086h-.172l-.044.044.13.043.161-.033.075.094.116.032.08.08h.043l.01-.102h.211l.337.014.113.084-.497.046-.302.086.533-.019.253.014-.253.113-.577.064.351.062.295-.042.11-.008-.326.161-.344.043.258.043.302-.042v.086l-.288.1-.316.03h-.172l.295.056.474-.049-.038.072-.044.043-.172.05-.355.019-.3-.037.299.116.101-.008.248-.022.196-.007v.042l-.439.11-.158.017-.115-.027-.127-.056.123.115.172.025.088-.003.223-.024.196-.03-.03.097-.384.065-.263-.026-.086-.042-.137-.039.18.137.13.044.14.022.075.01.226-.02.122-.036.048.12-.24.035-.286-.013-.194-.052-.206-.108.12.155.203.101.12-.008.306.011.201.036-.056.082-.308-.023h-.295l-.13-.073-.086-.042.224.177.1.007.258.042.29-.008-.037.086-.247.022-.312-.04.101.075.284.036.24.01-.033.084-.121.042h-.147l-.258-.062.09.087.19.058.226.037-.032.074-.153-.01-.226-.062-.328-.392-.357-.393.052-.275.064-.253.243-.452-.172-.3-.218-.344-.506-.882-.411-.558-.316-.412-.146-.38-.216-.342-.13-.172-.182-.162-.172-.128-.172-.086-.172-.128-.149-.225-.143-.302-.258-.386-.258-.344-.355-.33-.232-.243.345.234zm.112.413l-.195.196-.252.103-.443.03.157-.148.204-.133.212-.03.317-.018zm-.42-.195l-.232-.071-.225-.162.263-.04.162.03.162.05.182.183-.312.01zm-2.08-.198l.185-.128.155-.113.27-.069.222-.029.095-.001.066.043-.06.075-.048.092-.476.132h-.41v-.002zm.485.447l-.2-.111-.095-.184-.046-.054.24.014.295.21.126.17.127.21-.447-.255zm.337-.297V3.8l-.126-.168-.211-.127.21-.042.17-.084-.043.21zm.096-.042l.125-.28.412-.416-.09.345-.108.233-.376.407.037-.289zm.712-.057l.19.148.276.064.38-.01.063.095-.516.01-.263.106-.105.106-.146.191.162.027h.21l.334-.057.17-.117.126-.126.074-.127.057.09.439.637-.231-.032-.221-.084-.154.069-.295-.042-.295-.084-.295-.043-.296-.042.127-.168.084-.17.042-.21-.025-.132-.032-.126-.28.258-.126.127-.043.168v.211l-.126-.253.21-.295.127-.127.166-.173-.009-.061.09-.263.021-.231.52.43.116.106-.21-.062-.211.022-.201.064.096.106zm-.263.548l-.165.184H6.99l-.018-.182.055-.169.3-.324v.169l-.041.169-.046.153zm-.968.24l.401.01.36.01.516.064.359.094.285.075.179.01.147-.071.237.074.21.044.092.206-.222-.083-.238-.034-.565-.049-.243-.062-.41-.108-.315-.062-.454-.032-.34-.086zm.297.156h.421l-.084.043h-.126l-.17.126-.126.127-.126.168-.042.169-.085-.042-.042-.042v.168l-.042.211-.042.38-.084-.169-.17-.169-.294-.253v-.042l.295-.042.253-.169.253-.21.21-.254zm-.45 1.731l-.201-.128-.124-.196-.106-.312-.06-.196.183.147.186.245.121.44zm-.652-1.098l-.113-.029.105-.192.121-.116.257-.085.266-.084.253-.042-.158.184-.296.24-.435.124zm-.523-.686l.167-.134.18-.052.284.022.297.088-.22.138-.237.108-.558-.03.087-.14zm-.64-.61l.053-.14.27.324.112.375v.187l-.176-.15-.179-.21-.082-.245v-.14h.001zm-.014.368l.042.085.211.253.21.168h.043v-.042h.675l.295-.126.23-.167.264.01.263.064-.378.093-.253.052-.16.064-.21.074-.095.105-.127.168-.012.139.117.064.064.01.084.21.085.338.084.169-.337-.337-.338-.38-.38-.38-.379-.337-.38-.295.17-.21.126-.085.042-.127v.295l.044.125zm-.449-.364l.075-.253.153-.172.15-.216v.216l-.008.192-.127.243-.23.221-.013-.231zm-.706.552l-.085.106-.263.116-.278.007-.24-.034-.138-.059.462-.179.231-.059h.277l.034.102zm.069-.324l-.074.074-.243.042-.253-.126-.264-.063.306-.136.233-.01.22.042.107.094-.032.083zm1.258 1.955L4.507 6l.131.22.132.261.11.169.065.23-.043.212-.044-.088-.044-.261-.176-.393-.087-.174-.186-.213.142.257-.176-.044h-.219l-.175.044-.132.087-.131.044.131.088.22.044H4.2l.175-.044.176-.088.175.437h-.088l-.131-.044-.176-.087-.263-.088-.263-.088-.263-.044-.263-.131.088-.218.307.044h.263l.263-.088.088-.087.087-.132.088.132zm2.908 1.177h.042l-.084.126-.042.085-.18.226-.286.158-.295.037.168-.21.105-.144.295-.179.277-.1zm.136.396l.022-.2.032-.085.053.198.05.185V8l-.113-.111-.074-.179.03-.179zm2.19 1.862l.064.053.052.064.074.074-.165.042-.266-.189-.156-.148.127-.085.113-.032.157.221zM8.38 9.34l-.248-.052h-.043l.17-.127.21-.168.126-.211.085-.211h.042l.295.295-.126.042-.085.042-.126.043-.127.042-.21.126.379.085h.422l-.127.042-.126.042-.316.024-.195-.014zm-.21-.223l.051-.509.101-.255.113-.18.064-.147.08.203v.212l-.036.177-.066.164-.124.195-.183.14zm.832.285l.054.06.283.227-.158.06-.123-.171-.17-.152.114-.024zm.07-.03l.136-.06.113.126.337.21-.253.014-.155-.126-.177-.164zm.29.415l.127-.042h.258l.129-.042.086.086.128.086.101.1-.38.084-.337-.071-.113-.071-.086-.086.086-.044zm.073-.676l-.41.049H8.82l-.257-.05.103-.048.154-.05.275-.051.187.052.153.049v.049zm-.25-.204l-.126-.085-.253-.253.127.042.24.13.181.208-.168-.042zm-1.021-.71l-.002.229-.169.337-.082-.265-.054-.271.054-.28.05-.251.101.15.051.15.05.2zm-.32.44l-.163-.007-.148-.091-.2-.186-.202-.234-.1-.093-.148-.09.351.068.19.127.212.317.209.189zM5.442 6.613l-.464-.338.255.09.226.054.228.106.24.194-.24.02-.245-.126zm.309.266l.408.029-.169.09-.133.052h-.268l-.23-.044-.26-.11h-.045l.135-.05.172-.036h.225l.165.07zm-.784.17v-.042h.126l.127.043.084.421.253.422v.084l-.169-.21-.126-.211-.295-.422V7.05zm.46.505l-.07-.127-.04-.278.058.052.057.053.115.158.077.128.014.14v.24l-.21-.366zm.258.383v-.422l-.126-.21-.169-.17h.38l.379-.126-.169.127-.084.168-.084.211v.253l-.042.042h.084l.042-.042.127-.042v.253l.042.253.126.253.169.169-.211-.085-.21-.168-.17-.211L5.6 8.02l.084-.084zm.628-1.09l.047.108-.047.162-.093.27-.14.216-.233.162.047-.27.419-.648zm-.04 1.584l-.087-.172-.042-.214V7.83l.086.044.086.086.044.215.042.472-.13-.216zM4.66 5.425l.058.174.015.233-.056.233-.1-.218-.07-.26L4.5 5.39l.036-.184.124.22zm-.136.87l-.154.051-.206.05h-.359l.154-.1.205-.051.36.05zM3.49 6.1l.199-.167.199-.056.443-.205-.116.222-.278.15h-.2L3.49 6.1zm.453-.997L3.86 4.85l.14.084.14.085.091.175.056.19.037.315-.204-.181-.106-.175-.07-.24zm-.411.258l.21.042.17.127.28.14-.321-.014-.21-.084-.338-.21h.209zm-.17.084l.168.127.169.084.21.085h.17l-.17.042-.168.042-.169.084-.168.127v-.169l-.042-.21-.085-.17-.126-.126.21.084zm-.053.402v.179l-.09.179-.136-.135-.047-.18.042-.224.047-.22.137.177.047.224zm-.251-.869l.064-.168.19-.378.063.25-.032.2-.132.21-.141.141-.012-.255zm.115 1.566l-.046.229-.093.184-.138.184-.23.183v-.229l.093-.23.184-.183.23-.138zm-1.129-.012l.186-.128h.185l.324.064.277.064-.231.128h-.231l-.51-.128zm-.001.325l.202-.116.287-.042-.17.214-.16.116-.284.042-.348-.052.473-.162zM1.695 7.9l-.175-.361-.14-.464.281.197.17.302.104.278-.034.279-.206-.231zm.402.5l-.085-.084-.042-.084v-.169l.042-.21v-.085l-.042-.126-.126-.253-.085-.127-.126-.126h.421l.211-.043.085-.042.084-.126.169-.127.084-.084h.126l-.126.126-.084.127-.043.21v.17l-.042.084.338-.127.168-.126.085-.169.21.253.253.21.253.127.17.043h.168v.042h.084v-.042l-.21-.253-.254-.253-.126-.127-.127-.042-.168-.042-.17.042.043-.422.295.169.253.126.295.17.296.083.506.506.38.549h-.043v.421l.042.211.084.21-.318-.3-.204-.239-.183-.24v.325l.05.308.107.19.127.126.168.084.211.042h-.168l-.127-.042-.295-.127-.253-.126-.253-.127.126-.084.085-.042.042-.084.042-.127v-.169l-.042-.168.042-.127-.169.085-.253.506-.042-.17-.126-.126-.127-.084-.168-.084-.043-.042-.042-.043v-.042l.169.085.21.042h.212l.168-.085.042-.042h.043l.084-.042.084-.042.085-.042h.084l.084-.042-.21-.043-.211-.042-.253-.042H3.91l-.211.042-.21.127v-.211l-.043-.169-.084-.168-.127-.127-.042-.126-.127.253-.084.168v.253l.042.085.085.21.126.17v.21L3.11 8.19l-.17-.295-.168-.253-.126-.085-.211-.084h-.337v.084l.168.295.253.211.295.211.296.169v.042l-.464-.042-.548-.042zm1.138-1.393l.295.043.169.126.38.38-.296-.085-.21-.084-.17-.169-.168-.21zm2.221 2.028l-.084-.218-.064-.258-.017-.297.198.157.131.21.066.208v.21l-.066.209-.164-.221zm-.59-.408l.224.226.458.435-.338-.091L5 9.092l-.156-.169-.098-.21-.042-.289.162.203zm-.744.153l.085-.126.042-.17.126-.252h.042v.253l-.084.21-.084.043-.127.042zm-.76-.464l.084-.168h.042l.127.295.042.126.084.127-.464-.169.085-.21zm-.178-.283l-.092-.231V7.57l.092-.277.186.231.047.277-.045.23-.093.232-.095-.231zm.444.256l.231.128.117.154.131.307-.116-.103-.18-.098-.183-.388zm-.054-.31l.084-.042.085-.042.253-.043.506.043-.295.168-.169.042-.21-.042-.254-.084zm-.492.322l-.306-.143-.295-.243-.285-.36h.159l.148.051.221.159.159.243.199.293zm-.564.69l-.126.21v-.42l.001-.193.42.066.17.042.168.042h-.169l-.169.042-.168.084-.127.127zm.6.278l.497.046-.09.09-.09.045-.225.09-.542-.089.135-.09.091-.046.225-.046zm-.102-.175l-.361.047h-.137l.18-.192.227-.144h.226l.226.048-.361.24zm1.993.754l-.237.042-.216-.025-.2-.113.191-.046.238-.042.187.012.231.07-.194.102zm.466.656l-.076-.086-.056-.197v-.183l-.047-.192.18.152.093.209.036.386-.13-.09zm.719-.59l-.088.192-.184.148-.184.149.086-.24.088-.192.136-.147.184-.148-.038.238zm-.13-.206l-.169.21-.126.211-.085.253-.042-.21-.042-.169-.127-.127-.126-.126h-.085l-.084-.084-.084-.043h.59l.253-.042.295-.042-.168.169zm1.36.19l-.168.127-.21.126h-.212l.137-.168.169-.127.2-.084.254-.042-.17.168zm.539.107l-.127.084-.295.042.101-.115.142-.064.295-.084-.116.137zm.238-.233l-.095-.169-.076-.082-.082-.012.136.22-.146-.052-.105-.158-.159-.042.137.178-.189-.052-.165-.22-.095-.02.137.191-.137-.052-.1-.11-.085-.086-.132-.087.09.131.079.09-.121-.048-.097-.055-.086-.086-.16-.075.127.147.022.042-.105-.059-.108-.052-.189.106-.347.107-.466.057-.342.044-.343-.044-.384-.098-.383-.25-.47-.261-.51-.234-.26-.068-.599-.115.803.061.623.233.337.179.454.19.258.154.182.055.182.022h.211l.412-.042.426-.13.128-.044.086-.07-.512-.39-.427-.386-.386-.452-.36-.476-.155-.197-.197-.169-.172-.07-.17-.087-.388-.18-.225-.122-.214-.103-.385-.261-.512-.3.256.086.214.128.427.26.427.146.427.174.086.044.17.086.325.06-.027.114.043.044h.042l.433.629.267.324.224.24.272.28.298.217.4.204.282.14.59.182.535.113.118.226.094.175-.094-.013zM5.73 8.714l-.049-.189.05.048.048.047.147.142.39.33-.292.142-.39.047.098-.142.049-.236-.05-.189zM8.406 9.79l-.113-.169-.113-.224.225.055.042.156.14.224-.18-.042zm.269.042l-.098-.169-.117-.22.113.052.102.11.281.183-.281.044zm.136-.23l-.189-.145.201-.01.263.275-.06.056-.215-.175zm1.12.638l-.179.01-.123-.034-.138-.053-.476-.238-.028-.05h.086l.094-.041.078.084.055.05.191.117.159.032.153.017.214-.042.172-.043h.086l.05.08-.394.111zm1.176.552l-.042.086-.042.086-.043-.042-.17.086v.086l-.042.086-.042.042-.086-.128-.129-.129.043-.128v-.042l-.043-.042v-.042h-.086v-.042l-.042-.043.042-.086.044-.042.086-.086.043-.086.128.086.17.086.256.17-.045.124zm.568.337l-.042-.127-.21-.253-.254-.168-.253-.169-.168-.084-.215-.157-.248-.25-.322-.308-.23-.348-.29-.398-.591-.843-.38-.38-.168-.168-.211-.127-.407-.18-.435-.17-.445-.166-.422-.169-.362-.187-.419-.309-.168-.126-.17-.21-.451-.564-.506-.59-.675-.577-.575-.424.322.128.115.125.222.145.159.137.462.35.223.185.21.197.478.531.408.45.159.087.11.11.27.143.338.158.169.052.234.027.282.144.182.084.182.042-.155.113.056.014.189-.096.084.042H7.8l.05.027-.134.057v.042l.253-.042.169.084-.085.043.042.042.164-.073.091.115-.047.07.174-.028.126.084-.042.043h-.091v.042l.084.042h.042l.085-.042.2.158-.158.01H8.68v.043l.21.042.117.032.084.084-.158.01H8.89l-.043.042.085.043h.126l.152.028.098.085-.123.055H9.1L9.06 7.94l-.042.042.21.042.117.033.103.092-.133.046-.127-.042h-.084l.253.084.208.029.084.126-.25-.029H9.23v.043l.253.042.19.074.085.084-.233-.074-.211.042.295.085.282.07.14.156-.204-.004-.134-.052-.042.042.169.085.25.038.097.127-.052.256.042-.084.042-.113.201.169.169.126.084.084.127.043.052.084-.042.199.042-.084.042-.046.042-.042.127.072-.014.156.056.168.013-.224.03-.046.14.073.028.169.042.18.042-.126v-.127l.084.127.043.126.042.253.055-.189-.013-.106v-.084l.126.253.041.114.002.223.055-.111.029-.186.125.213.001.335.085-.295.082.213.014.168-.098.04-.084.127-.042.127-.043.084h-.042l-.084-.042v-.042l-.007-.132-.076-.096zm.068.408l.049-.049.18.05-.049.15-.049.099v.298l-.08-.199v-.3l-.051-.049zM11.07 12.7l.051-.05.202-.102h.102l.1.05.254.102-.101.05h-.555l-.05.051V12.7h-.003zm.279.11l-.053.052-.052.054-.106-.052.106-.053h.105v-.001zm-.695.34v-.087l.044-.044h.09l.089.087h.087l.088-.043.044-.044v-.044h.177l.044-.044.044-.044.133.133v.088l-.044.09-.133.089-.134.044-.087.044h.442v-.044h-.044l-.044-.044.044-.044h.088v.09l-.044.043.044.09-.178.044h-.264v.043l.089.044h.09l.133-.044.133-.043.088-.088v-.088l.043-.088-.043-.087h-.088v-.142l-.044-.088-.044-.043-.044-.044h.134l.177-.044.044-.09.043-.043h.044l.073.51-.204.331-.221.31-.044-.133-.133-.087v.043l.044.088.043.133-.043.09-.088.09-.093-.05v-.044l.044-.043v-.09l.088-.044-.088-.044h-.177l-.088-.043v-.177l.044-.044-.088-.044-.133-.044-.088-.044-.09-.044v-.135zm-1.49 1.066v-.202l.114.304-.113-.102zm.129.35h.092v.092h-.092v-.093zm-.06-.166h.215v.115h-.106l-.108-.115zm.325.435h-.125v-.162l.125.081v.081zm.079-.271v.076l-.093-.076v-.076l.093-.076v.152zm.147-.265v.167l-.056.056v-.223h.056zm.355-.572l-.045.133-.044.044-.044.044h-.09l-.043-.044-.044-.09-.044-.132-.044-.044H9.7l-.044.09.044.089.043.133.044.09-.09.176-.043.09-.09.09-.133-.045-.09-.044-.021-.076-.052-.116-.02-.137.021-.146.075-.1v-.044h-.044l-.09.09-.045.082-.078.068-.044.044-.086-.034v-.177L9 13.67l.09-.043.209-.034h.177l-.044.31v.177l.09.134-.044-.31.043-.311.09-.044h.133l.09.044.089-.044-.177-.044h-.177l-.355.044-.087-.044.09-.044h.266l.089-.043v.043h.133l.044-.043h.267l.043.177.044.043.037.088zm.002-.401l-.045-.046-.046.046h-.135l-.045-.135-.092-.09v-.09l.092-.046h.09l.092-.046.135-.18h.09v.045l.046.135.046.091.045.046.091.045-.045.046v.091l-.09.091h-.229v-.003zm.452.035h-.09l-.043-.09.09-.089v-.045h.045v.133l.131.135-.133-.044zm-.265.813l-.01-.282.273-.244.092-.098.187-.007.09-.096-.085.238-.231.103-.186.054.05.045.094-.003.136-.098.14-.005-.04.19.054.185.01.28-.046.049-.047.001-.047.002-.05-.093-.056-.233-.007-.187-.05-.045-.045.048-.09.097-.04.189-.047.001-.049-.045v-.046zm-.114.157l-.051-.047v-.095l.05.048.102.047.152.047h.05v.047l-.05.095h-.102v-.095l-.05-.047h-.101zm.162.418l-.051-.05h-.05l.05-.204.204.1-.05.104-.103.05zm.18.147l-.047.096h-.047l-.048-.047v-.192l.096.096h.048v.047h-.002zm.027-.282l-.052-.104.052-.105h.052v.053l.105.052v.104l-.052.053-.105-.053zm.034.31v-.175l.059-.059.059.06.059.058v.06l-.117.058h-.06v-.001zm.202.235l-.128.015-.057-.057.013-.07v-.058h.115l.115.115-.058.055zm.245-.212l-.056.057-.113-.113-.057-.113.226.056v.113zm-.13-.267l-.063.064-.062-.064v-.064l.25-.064-.125.128zm.015-.212l-.025-.7.049-.05.202.087.1-.004-.098.051-.047.094.003.093.052.091-.047.095.007.187-.098.05-.098.006zm.344-.04v.057l-.064.057h-.064v-.115h.128zm-.084.284l-.096.05-.05-.097v-.096h.097l.096.096-.047.047zm.094-.421l-.042-.086v-.129h.13l-.088.215zm.295 1.691l-.042-.042v-.172l-.086-.044.022.086-.044.086-.042.086-.054.118-.042.044-.138.096h-.215l.044-.086v-.086l-.042-.042.086-.128.042-.086.044-.086-.086-.042-.052-.085.042-.086v-.086l.086-.086.182-.044.128.043.086.086.086.128.129.086v.172l-.043.172h-.09v-.002zm.027 1l.032-.347.186.06h.044l.044-.045.042.172.044.086.044.044h.042l.044-.044-.086-.042v-.258l.086-.086.042-.086-.042-.086h-.086l-.043.042v.086l-.042.086-.086.042h-.09l-.097-.054v-.258l.044-.086v-.044h.086l.044-.042v-.086l.052-.074.042-.044h.214l.215.044.128-.044h.086l.042.044.13.086.044.086.01.095h-.128l-.129-.04-.086-.043-.182-.052.042-.086-.042-.043-.044.086v.086h-.086l-.086.043-.172.13v.042l-.086.042v.086l.086-.086.086-.086.086-.086.129-.042v.214l.042.172.044.172.172.128v.042l-.043.086-.086.044h-.086v-.044l.044-.042.042-.044-.042-.086h-.044l-.086.086-.042.044v.086l.042.042.13.086.128.043h.129l.374.053-.042.044h-.042l-.054.048-.279-.014-.128-.042-.128-.044-.128.044.172.042.172.044.492.042-.13.056-.168.042-.452-.054.13.042.128.044.3.042.128-.01-.086.086-.13.042-.17.01-.128.044.128.042.192-.02-.042.086-.042.042-.292.022.139.04h.472l-.086.087-.128.042-.258.044.042.042h.214l.214-.042-.042.042-.086.044-.128.042-.258.042.258.044.214-.044v.086l-.086.042-.172.086h-.086l-.086.042h.514v.044l-.128.043-.128.043-.258.043.042.042h.258l.258-.042.044.042-.258.128-.258.042.042.044h.258l.258-.044v.086l-.086.044-.386.042.3.042h.258l.042.044-.042.044h-.086l-.086.042h-.172l-.128.044.128.042h.43l-.086.086-.086.042-.258.044.086.042h.13l.267.016-.053.07-.472.043.177.055.127.01.308.032-.172.043-.172.043-.354-.011.214.086.258.043.255-.025.047.11-.33.09-.285-.041-.33-.22-.257-.214h-.086l-.172-.086h-.129l-.042-.042-.042-.086.025-.1-.01-.104-.084-.422-.063-.6-.094-.96.008-.357zm.076 2.011l.06.304v.197l-.092-.184.032-.317zm-.477-.14l-.047.047-.186.186H10.9l.093-.093.047-.14.093-.047.093-.047.047.092h-.047v.002zm.007-.305l.05-.201.05-.049.052-.05.099.25v.099l-.049.1h-.1l-.102-.15zm.062.202h.115v.115h-.058l-.057-.057v-.058zm.587 1.456h-.12l.061-.18.06.06.06.12h-.06zm1.118.97h-.143V21.1l.336-.047.28-.042-.28.116-.193.048zm.05-.247l.222-.059-.19.112-.223.059.003-.105.187-.007zm-.156-.059v-.069h.19v.068l-.19.001zm.523.498h.07l.068.14-.209-.14-.14-.14.21-.07.208-.07v.14h-.209l-.069.07v.068h.071v.002zm.148.2l.221-.11.277-.112v.056l-.277.11-.111.055h-.11v.002zm.476.004l-.34.125.057-.11.114-.054.23-.11v-.053h.057l.117.054.052.038-.287.11zm1.488.405l-.206.02-.088-.044-.086-.086-.13-.172-.044-.086-.086-.044-.077-.02-.13.044-.044-.044h.044l-.088-.044-.086-.044-.086-.042-.13-.044-.086-.042-.13-.044h-.13l-.085.086-.13.044-.13-.044.086-.086.044-.086-.088-.13-.159-.062-.167-.132-.13-.086-.13-.043-.13-.044-.06-.06-.174-.085-.13-.13-.173-.086-.174-.086-.172-.13-.086-.086-.044-.086-.26-.13-.131-.076-.133-.186-.044-.258.044-.258.087-.258.162-.216.044.13v.086l-.04.211-.046.221v.086l.035.125.095.133.098.13.173.042.216.044.086.13.174.086.13.086.086.086h.088v.044l.086.044.044.044.086.011h.303l.086.044.044.042.086.032h.044l.086.044v.044l.088.172.13.13.173.13.174.044.088.044.13.043.13.044v.13l.043.044h-.042l-.044.044.086.086.13.042.13-.042h.174l.174.344.13.13.085.044.078.013.095-.013.13.044-.196-.012zm1.557.319h-.09l-.09-.044-.132-.09-.356-.133-.402-.044-.356-.044h.09l.09-.043.311.043.312.044.58.223.046.045v.043h-.003zm-.124-.226l-.34-.17-.383-.043-.427-.042h-.427l-.042-.042-.042-.086.511.042.511.086.896.128h.042l-.128-.128-.17-.042-.383-.086-.427-.042-.383-.043h-.47l-.085-.042-.042-.042v-.17l-.086-.086.086-.043h.086l.084.068.128.042.17-.042h.087l.384-.238.129-.17.042-.213.086-.042h.042l.128.042h.128l.137.017-.056.113-.017.127-.042.128-.02.17.032.081.02.105-.039.082-.128.043-.184-.056-.135-.027h-.128l-.298.042h-.128l-.17-.015-.124-.044-.086-.084h-.042l-.042.042.042.042.128.086.299.042h.597l.256.086h.383l.34.042h.043l.086.086h.17l.042.043-.042.042-.086.042-.128.042-.213.042h-.084l-.088.085zm1.486-1.992l-.168.042h-.218l-.121.04.133.014h.185l.17.01.092.042.116.017v.052l-.29-.032-.31.042-.098.064.452.022.2.061v.098l-.166-.07-.17-.018h-.19l-.173.078h.052l.014.032.337-.017.261.066.046.057-.316-.045-.296.037h-.051v.04l.339.005.2.047.082.078-.002.059-.138-.073-.188-.02-.295.037v.04l.042.003h.314l.268.13v.043l-.043.044-.046-.044-.046-.044-.045-.043-.133-.044h-.09l-.044.044.044.087.112.044v.35l.045.39.06.058.05.086.025.12-.017.054-.025.032-.039.006-.054-.028-.04.003-.083.025-.123-.035-.135.044-.268.044-.265.03h-.135l-.135-.044-.044-.087.36-.088.134-.088.135-.131.046-.13.044-.174.045-.35.135-.043h.09l.045-.044-.045-.044.045-.044v-.043l-.09.043-.089.044-.089-.044h-.09l-.089-.086h-.09l-.267-.043v-.611l.089-.305v-.306l.046-.61-.044-.306v-.84l-.046-.087.063-.002.001-.045h-.045l-.05-.038h-.089l-.045-.055.045-.044h.09l.076.042v-.675l.19.761.046.088.045-.044h.09l.045-.044.09-.044v.044l-.009.052-.128.043h-.045l-.043.079h.09l.09-.044h.045l.047.052-.135.044-.137.08.09.043h.045l.18-.044-.045.044-.045.044h-.09l-.045.088-.044-.088-.047-.084-.042.04.045.088.046.044.043.088v.087l.152.214.2.287h.13l.04.04.042-.036.003-.04h-.09l-.053-.048.234-.046.22-.042v.137h-.18l-.089.039-.038.043v.044l.043.044h-.229l-.083.039.324.04.356.093-.192.002-.533-.002-.032.037.297.04h.141l.186.051-.147.005-.187.04-.213-.004.004.034.32.042h.123l.129.04h.045v.101l-.261-.032-.263-.013-.13.042.045.037.068-.003h.059l.057.027.088-.037.222.042.076.027.04.027-.004.054-.324-.022-.24.01-.079.042.34.04.124.043.196.054-.351-.042h-.187l-.178.077-.003.05.133-.051.112.04.24.022-.035.029zm.108-.007h.06v.057h-.058v-.057h-.002zm-.123 1.762l-.045-.045.045-.093h.184l-.093.138h-.09zm.623.132h-.184l.045-.046h-.184l-.183-.045.045-.093.093-.045v.092l.138-.045.184.045-.045.046h-.046v.045l.184-.092.184.045-.046.046h-.045l-.046.045v.046h.046l.092-.046.093-.045h.277l-.23.184h-.183l-.139-.046-.05-.091zm.396.33h-.245v-.043l-.049-.044v-.09l.098.044-.049.044v.044l.147-.044h.147l.049.044-.098.046zm.015-.175l.23-.138.092-.046h.139l-.23.184-.093.046-.138-.046zm.332.106l-.138-.045.138-.046.046-.045.046-.093h.138l.093.046-.23.138-.093.045zm.18.036l.043-.044.044.044h-.088zm.062-.088l.183-.09h.23l-.093.09h-.32zm.384.084l-.093-.045.23-.093h.093l.138.046-.23.092h-.138zm.533.004h-.24l.097-.047h.047l.192.047h-.096zm.058-.218h-.19l.048-.047.094-.047h.19l-.095.047-.047.047zm.833.225h-.228l.046-.046-.046-.045-.045.045-.137.046h-.182l.09-.046v-.045l-.045-.046h-.045l-.046.046h-.045l-.046-.046h-.045l.136-.091.091-.046.091.046v.137l.137-.046.182.046v.045l.273-.091v.046h-.045l-.091.045v.046zm.185-.132l-.047-.052.095-.053h.094l-.094.053-.048.052zm.086.125v-.046l.046-.09h.045l.274.09h.09v-.09l.092-.046h.136l.183.136h.045l-.91.046zm1.03-.084l-.046.045-.091.046.045-.091v-.092l-.045-.045.09-.046.046.046v.137zM13.038 2.02l.26.18.163.105.16.22-.231-.046-.225-.102-.19-.177-.095-.17.159-.01zm-3.13.126l-.178-.094-.105-.152-.084-.169.168.053.149.094.261.289-.21-.02zm.263-.14l.046-.253.137-.189.074.117v.116l-.052.19-.081.075-.098.084-.026-.14zm4 1.152h-.204l-.245-.059-.282-.098-.207-.133.195-.035.274.012.19.065.188.102.09.146zm.136-.386l.068-.21.062-.205.044-.192.049.037.04.042.05.064.02.095-.02.143-.072.106-.12.14-.072.206-.049-.226zm-1.39-.909l.088-.088.21-.077.219-.024.26-.09-.093.163-.205.116-.26.017-.262.069.043-.086zM9.186 22.285h-1.31l.043-.042.634-.052h.633l.632-.042.633.094.042.042H9.186zm6.246-1.143h.195v.06l-.13.061h-.065l-.065-.06.065-.061zm.128-1.346l.084.042.253-.042.084-.042.085-.085-.295-.042-.17-.042-.126.042-.126.085-.084.253.168-.17h.127m.017-.099l.064-.052.19.052-.062.054h-.253l.06-.054zm6.27 1.028l.085.042h.506l.169-.085-.169-.084h-.21l-.212.042-.168.042.337-.21.169-.043h.21l.085.17.126.126.213.253h.042l-.042-.127-.086-.169-.253-.253h.169l.17.043.169.084.126.126.042.127v.126l-.042.255h.042l.042-.042v-.044l.043-.042.042-.084.042-.127-.084-.21-.253-.212-.297-.126-.169-.042h-.169l-.168.042-.169.042.127-.126.168-.085.211-.042.169-.084.042-.042h-.084l-.085-.043h-.084l-.084-.042-.127.042-.084.085-.127.084-.084.084-.127.253-.126.085-.084.042-.043.042.085-.169.084-.126.127-.127.042-.168v-.085l-.085.085-.253.253-.084.126v.295l-.042.127-.127.126.211-.168.127-.042M10.537 18.74l-.042-.084-.043-.169.043-.126.042-.085.126-.042.085.084.042.127-.085.084h-.084l.042.042h.042l.043-.042.084-.084v-.127l-.042-.126-.085-.042h-.168l-.127.126-.042.042-.042.085.042.21.127.127.042.042h.253v.042l.042-.084h-.295m.38 0l.084-.084-.169.084h.084m.085-5.782l.008-.035-.008-.007v.042m1.182 8.019h-.21l-.085.042-.042.042h.337v.042l-.126.042h-.296l.296.042v.043l-.043.042h-.21l-.211-.042-.043.042.17.042.168.042-.169.084-.21-.042h-.043v.042l.127.043.126.042-.042.042h-.169l-.042.042h.169v.127l-.042.042h-.085l-.126-.042.126.084.085.084.042.127.084.126.042.042.085.043h.126l-.042-.043.042-.042.042-.084h.127l.042-.042.169-.211.126-.253.127-.169-.127.127-.042.042-.084.042-.042-.084-.085-.042-.042-.043-.042-.084.084-.084.042-.169.085-.253-.085-.042-.084.042-.21.042h.294l-.084.085m-.35.568l.112-.111.11-.056.055.11-.055.055h-.112l-.11.056v-.054zm.193.49l-.056.057-.055.055-.11-.055-.111-.056.111-.056h.221l.111-.055-.11.11zm.37-.369l-.056.112-.056.055h-.165l-.165.056-.166.056h-.165l.056-.11.33-.056.221-.055.166-.058zm-.083-.055l-.275.055-.33.112v-.11l.055-.056.11.056.167-.056h.273v-.001zm-3.802.21l.169-.042h.21v-.042l-.337.042-.337.085-.295.084-.677.169h-.716l-.338-.042v.042l.38.084.421.042.38-.042.381-.084.38-.127.38-.168m-3.884.38v-.085h-.421l-.127.084h.548m-1.73-.126l-.085.084v.042h.085l.084-.042h.38l.042-.042v-.042h-.127v-.085l-.084-.042h-.38l-.126.084v.127l.042-.084.084-.043.211-.042.211.085h-.337m11.6-.066l.102-.084-.057.015-.044.069m-.336.05l-.138.048-.14.094.418-.094.186-.095-.048-.047-.278.094m.501-.146l.037-.063-.11.093.073-.03m-8.39-.176l.085-.042.042.042h.633l.126-.042h.255l.21-.042.38-.127.422-.126.21-.042h-.379l-.253.084-.253.084-.55.085-1.138.042.084.042.127.042m-.211-.084l-.127-.127-.084-.084h.126l.675.042.295.042h.548l.211-.042.76-.253.168-.042H8.51l-.295.042-.422.127-.421.084h-.845l-.085-.042h-.042l-.042-.042h.295l.253.042h.253l.253-.042.464-.127.464-.126.253-.042.253-.043v-.042H8.3l-.464.169-.506.084-1.012.042-.21-.084-.17-.042v-.042l.085-.042h.085l.084-.043.126-.168.043-.042v-.043l.042-.042h.042l.042-.042h-.042l.126-.084h.085l.084-.085.084-.084.127-.042h.084l.042-.042-.126-.042-.042-.043-.085-.042H6.74l-.126.042-.17.127-.041.042-.085.042-.042.042-.084.043h.126l.043.042v.042h-.17l-.168.042-.126.127-.127.126h-.042l.042-.169.042-.126.169-.042.169-.042.126-.127.127-.126.084-.043h.042v-.042l-.168-.042-.17.042-.42.338-.338.337v-.084l.042-.085.127-.084.126-.127.084-.126.085-.169.21-.042.085-.042.126-.084.043-.085v-.084l-.043.042-.38.042-.168.042-.126.127h.084l.042.042-.253.169.127-.38-.042-.042h-.043l.085-.169.042-.21h-.042l-.042-.043-.085.17-.042.126-.042-.17v-.168l.042-.21v-.17l.042-.168-.042-.126-.042-.127.042-.169-.126.085-.043.168-.084.127v.169l.042.126.127.127v.084l-.042.084-.043-.168-.084-.127-.126-.169-.127-.126h-.042v.21l.084.338.085.169h.084l.084.042.085.126.084.17.042.041.084.042-.084.338-.042.168-.084.17-.043-.127-.042-.085h.042v.042l.043-.042h.042v-.253l-.042-.126-.043-.169-.084-.084.084.295.043.126v.17h-.043l-.084-.212-.042-.126v.084l.042.253-.042-.042-.042.042-.042.127.042.126.084.21-.042.043-.127-.169-.21-.084h-.127l-.084.042.084.085.084.126.085.084.168.043.127.042h-.337l-.17.042-.041.084-.042.085-.085-.127H4.38l-.043-.042v-.127l-.084-.084h-.084l-.085.042-.21.085.042.042-.127.042-.042.042-.169.169h-.084l-.042.042h.084l.085-.042.168-.085.127-.084.126-.084h.253l.042.084h-.042l-.21.084-.211.085h.126l.169-.042.126-.043h.127l.126.043-.042.042v.042h.253l.085.042.126-.042-.084.253-.042.126.042.127.168-.084h.253l.043.084-.17-.042-.168.042h.211l.253.084h-.21l-.127.042-.085.043h.464l.211.042.253.042v-.042l-.21-.085H5.6l-.042-.042v-.38l.296.127.253.127-.043-.085v-.126m.54-1.322l.16-.054.16.054-.16.054-.106.106-.16.054h-.106l.212-.214zm-.477.027l.111-.112h.111l-.167.167-.11.112h-.168l.223-.167zm-.994-.891l-.059-.056-.059-.055v-.333l.118.112.06.167.117.278-.177-.113zm.265-.417l-.042.129-.042-.086v-.129l.042-.256.042-.042.042.256-.042.128zm.459 1.02l.094-.048.282-.047-.329.189v-.048h-.047l-.047.048-.048-.048.095-.047zm-.343.443l.085-.085.21-.21-.126.253-.084.126-.127.084.042-.168zm.27.494l.056-.056.113-.055.113-.11.113-.056.169-.055-.113.165-.112.11-.337.11v-.053h-.002zm-.038.204h.194l.34.145h-.34l-.194-.049-.145-.096h.145zm-.377-.076h.043l.042-.042v-.042l.086-.172.172-.172-.042.172-.129.214-.128.128-.042-.042v-.044H5.37zm-.188-.101l-.267-.057-.086-.095-.084-.138.133.05.133.051.216.189h-.045zm-.232.265l-.313.045.135-.135.133-.045h.27l-.09.09-.135.045zm-.01.482l.046-.135.045-.135.09-.135.135-.045-.046.135-.045.09-.225.225zm.32-.044h-.126l.127-.168v.168zm-.046-.995l-.046-.135v-.135l.135.225v.135l.046.134-.135-.224zm.168 1.004l-.052-.107v-.266l.106.106v.106l.053.321-.107-.16zm.387-.128l-.135-.09-.135-.09-.046-.134.09.09.18.045.135.09.09.134-.18-.045zm-1.731.414h.464l-.295-.042H3.91l-.042.042v.043l.042.042.127-.085m5.232-.084l.508.042.801.042.38.043.423-.043-.042-.042-.297.042-.338-.042-.59-.042-.632-.042-.34.042-.295.042h.211l.211-.042m-1.265-.295l-.422.126-.465.085-.464.042H6.19v.042l.169.042h.801l.255-.042.506-.169.464-.168.253-.042.253-.043h-.422l-.464.127m-4.136.21h.211l.211.043.042-.042-.337-.085h-.211l-.127.043-.084.042-.042.042-.042.042v.042l.168-.084.211-.042m-1.224.084l.126-.042.169-.042h.253v-.042l-.295-.043-.085.043-.126.042h-.084l-.043-.085v-.042l-.126-.084-.042-.084v-.127l.042-.042.084-.042-.126-.042H2.35l-.043.042-.042.084v.042l.042.169-.042.042h-.084l-.042.084-.127.043-.042.042-.042.042v.042h.042l.042-.084.085-.042h.168l.169.042.169.042v.042h.042m21.102-.21l-.295-.085v.042l.253.169.126.042.169.042v-.042l-.127-.127-.126-.042m-13.084 0l-.168.085h.337l.084-.043.042-.042v-.042l-.084-.084-.126-.085-.253-.042v.042h.084l.084.043.169.042-.084.084-.085.042m-7.005-.042h.422l.127.042h.042l.042-.042v-.042l-.084-.042h-.59l-.213.084-.127.127.213-.085.168-.042m11.156-.013h-.047l-.138.141.092-.047.093-.094m-5.12.055v-.042h.042l.042-.042-.127.042-.084.042h.126m-7.006-.084l-.042.084.126-.084.169-.042h.169l.168.042-.126-.084-.169-.043-.21.043-.085.084m7.344-.127v-.042h-.169l-.126.042H9.65l-.042.043-.042.042.253-.042.21-.043m-6.245 0v-.042h-.042l-.169-.042-.042.042-.086.042.128-.042h.127l.084.042m5.698-.042h.21l.17-.084.168-.042.21-.042v-.043l-.295.043-.253.042-.126.042-.084.084m-6.88-.042l.042.042v-.042l.042-.042h-.042l-.042.042m.8-.084v-.042l-.084-.127-.126-.086-.127.044-.168.084-.042.042-.043.085.127-.127h.295l.084.085.043.042v.042l.042-.042m7.807-.169v-.042l-.084-.044h-.084l.042.044-.042.084-.042.042-.127.043h.127l.084-.043.126.043h.086l.17-.043.126-.126.042-.044v-.084l-.042-.042-.043-.043h-.21v.085h.042v-.042h.126v.084l-.042.086-.169.084-.086.042-.042-.042h.042v-.042m-.379-.042h.126l.085-.044h-.211v.044m-1.18.084h-.085v.085l.422-.127.421-.128h-.337l-.295.086-.127.084m-1.266-.507l.084-.043.084-.084h-.168v.042l-.211.127-.211.168v.043h-.084v-.085h-.506l-.296.127-.126.042-.084-.042-.043-.042-.126-.043h-.17l-.296.043.085.084h.042l.169-.042h.21l.085.084-.211.042h-.169v.042h.042l.211.043.127-.043.084-.084.21.084h.254l.084-.042.085-.042.042-.042.084-.042h.21l.043.042.042-.042.422-.085.464-.084-.38-.042v-.042l-.042.084h-.21l.084-.084.086-.042m-.965.344l-.127.062-.126-.062h-.063l.19-.063.252-.062-.126.125zm2.105.035v.086l.506-.17.548-.211-.548.084-.253.042-.253.127v.042m-4.897-.084l-.084-.085-.042-.042-.085.042.211.085m4.981-.211l-.084.042v.084l.295-.126.295-.084.675-.127-1.012.169-.169.042m1.941-.005l.102.045h.103l-.103-.045h-.102m-1.94-.206l-.17.084-.17.17.423-.17.38-.084.422-.084.421-.042h-.464l-.421.042H9.82l-.21.084m2.752.09l-.056.089h.056v-.09m-.144-.016l-.045.047h-.046v.047h.137v-.047l.046-.047h-.092m-.541-.04h.14v.046h-.14v-.047zm-2.407-.117l.17.042.043-.042-.043-.042h-.126l-.17.042-.127.084-.084.084.21-.126.127-.042m.255-.38l-.085.042-.17.043-.253.253h-.169l-.042.042-.042.084-.042.042.084-.042.127-.084h.126l.085-.127.17-.084.126-.042h.211v-.042l-.042-.043-.084-.042m-4.77.127l-.042-.085-.169-.168H4.46l.126.337.042.127.127.126.084.042h.084l.085-.042.042-.084v-.042l-.084.084h-.127l-.084-.084-.085-.085-.084-.126v-.127l.084.127.085.126.168.042h.17v-.168l.041-.042-.042-.085-.042-.126-.084-.127-.211-.253-.042.169v.21l.042.17.084.126h-.042l-.042-.042m.03-.34l-.042-.17.086.129.086.172.086.128.042.172-.128-.086-.086-.172-.044-.172zm14.658.382l-.043.253.127-.337.084-.17.169-.168.126-.084.17-.084h.336v-.085l-.084-.042h-.21l-.17.042-.252.169-.17.253-.083.253m-7.682.135v.054h.147l-.098-.054h-.049m-1.899-.05l-.084-.043-.127.042-.084.085.084-.043h.295l-.042-.042h-.042m13.463-.295l-.084-.042h-.084l-.085.042h-.084l-.044.042-.042.042-.084.043.38.042.212.042.168.084-.042-.084-.042-.084-.169-.127m-13.126.253l.127-.042.21-.169.212-.126.126-.042h.084v-.043l-.042-.042h-.042l-.21.085-.17.168-.21.127-.211.126.126-.042m.043-.253l-.169.042h.295l-.042-.042h-.084m-3.25-1.604l-.296.169-.035.03.12-.072.21-.127m-.759.127v-.211l.043-.127-.253.338-.085.168-.042.085v.084l.042.084-.042.042-.042.085-.042.042-.042.126.042.085v.084l-.042.084-.043.127-.042.169h.042l.085-.17.084-.168.127-.126.168-.085.211.043.084.042.085.084h-.085l-.168-.084h-.085l.043.042-.085.084-.126.042-.127.085-.042.084-.042.084.042.043h.042l.085-.043.168-.126.042-.042.043-.042.042-.127H6.4v.127l-.042.084v.042l.042.042v-.084l.042-.084.042.042v.042l-.042.042v.084l-.042.043.042.042.127.126.126.042.295.085.043-.042-.127-.211.127.042.084.042h.21l-.168-.21-.084-.085-.127-.042h-.168l-.085.042h-.042l.127.084.084.085-.169-.043h-.084l-.042.043-.042-.085v-.168l.21-.043h.127l.126.043.211.126.253.169h.253l.169-.085h.042l-.042-.042-.084-.042-.043-.042-.084-.042h-.422l-.126-.042-.042-.043-.042-.042h.421l.127-.084h.168v-.042l-.253-.127H7.33l-.38.253-.126-.042-.085-.042-.126-.042-.169-.127.042-.042h.085l.168.084h.211l.38-.084-.338-.169-.168-.042h-.169l-.084.042-.042.085-.085.042-.084-.042.084-.085v-.084h.295l.085-.042.084-.042-.126-.042-.085-.043h-.084l-.169.043.218-.18-.091.053h-.042l-.043-.042.043-.042v-.127l.042-.042.126.042.127-.042.21-.084.085.042v.084l.169.085.21.042h.253l.211-.042-.295-.17-.337-.083.168-.211.085-.253-.295.21-.17.085-.083.169-.211.084h-.127l-.084-.127.042-.126.084-.127.169-.21v.126l-.042.127-.084.126-.085.084.042.043h.043l.126-.043-.084-.042.084-.126.042-.127.042-.253-.21.211-.127.169-.042.126-.042.042v.043l.042.042-.042.042-.042-.253v-.211l-.085.127-.084.168-.042.169-.042.169.042.042v-.042l.084.084.042.084-.042.042-.084.043v-.17l-.042.043-.043-.042H6.19l-.084.042-.042.127-.042.042h-.085l.085-.253.168-.169v.169l.042-.042m-.143 1.08l-.143.124v-.06l.072-.062.216-.123-.145.122zm.865.036l.073.054.153.172-.352-.209.126-.017zm-.297.208h.103l.206.153h-.103l-.103-.05-.205-.103h.102zm.79-.218l.103.015.251.088-.265.015-.155-.022-.096-.066.162-.03zm-.177-.305l.194-.064.13.065-.194.066h-.26l.13-.067zm-.6-.292h.183l.366.106h-.182l-.122.054-.364-.106.12-.054zm-.038-.23h.096l-.096.056-.096-.055h.096zm.717-.44h.179l.313.137h-.357l-.312-.091.177-.046zm-.204-.185l.093-.093.23-.138-.138.23-.23.14.045-.14zm-.744.219l-.042-.126.042-.127.084-.084v.464l-.042-.043-.042-.084zm-.103.506l.086-.086.042.042-.128.128v.129l-.128.042-.128.086.172-.214.084-.127zm-.17.015v-.128L6 18.966l.172-.172.086.042-.043.042h.043v.086l-.172.172v-.042l-.129.172-.086.128v-.128l.043-.086.128-.172h.042v.086l.044-.086zm8.84.661l.17.211-.17-.253v.042m.254-.507l-.042.212-.042.085v.126h-.086l-.042-.042-.042.042.084.042.086.042.084.211v-.168h.043l.042.042v-.042l-.085-.043-.042-.042v-.21l.042-.085.043-.042.042.084v.253l.084-.042v-.253l-.042-.084-.084-.086h-.043m-8.905.676h.042l-.042-.042v.042m-.844-.464v.085H5.6l.042-.043.084-.126.043-.169.084-.168-.127.042-.126.084-.085.169-.042.126m.066-.082l.047-.056.144-.167-.193.334v-.111h.002zm8.122-.552l-.127.127-.042.126-.042.169v.17l.042-.212.169-.253.126-.085.127-.042h-.253m-.338.169v-.085h-.042v.127l.042.126v-.168m-7.597-.38l-.042.042-.084.169-.042.127v.084h.126l.127-.084.126-.211.085-.211H5.81l-.085.084m.216-.035l-.086.128-.042.086-.042.128-.128.042v-.128l.086-.172.086-.086h.126v.002zm1.092.12h-.211l-.085.084v.042h-.042l.169.084.169.043h.337l.126-.043-.168-.084-.169-.084-.126-.042m.161.21h-.151l-.253-.116h.406l.101.059-.103.057zM1.041 16.8v-.296l-.085-.126-.042-.169v-.126l.042-.127.085-.168.421.042.422-.042.169-.043h.084l.084-.042.211-.21.085-.127v-.127h.253l.21-.084.211-.084.169-.169.126-.253.043-.295v-.295l-.085-.253-.126-.169-.169-.169-.21-.126-.212-.084-.168-.043H2.39l-.126.043-.17.084-.294.126-.127.085-.168.042-.085-.042-.042-.085V13.3l.042-.127.085-.084.21-.127h.675l.169-.042.21-.084.085-.084.042-.085h-.084l-.085.085-.084.042-.084.042.084-.084.042-.085v-.253l-.113-.104-.126-.07-.198-.042-.372-.055-.176-.071-.098-.056-.062-.09-.007-.092.042-.078.091-.07.05-.071-.071.03-.056.007h-.084l.126-.08.084-.084h-.168l-.098-.005.098-.042.084-.037.042-.042.042-.042H1.59L1.49 11.3l.182-.064.085-.127-.085.043-.155-.019.098-.042.113-.063.056-.042.028-.02-.147.029-.133-.014.085-.042.097-.037.127-.127-.127.043h-.084l.253-.169.253-.042h.295l.253.042.59.169.254.084.253.042.21.084h.211l.422.085.295-.042.253-.043.548-.126.548-.169.506-.168.296-.127.337-.042.337-.042h.295l.338.042.295.084.295.127.253.168-.253-.084-.126-.042h-.127l.295.126.169.127.084.042.043.084-.254-.126-.295-.084.295.168.17.127.126.126.084.085H9.39l-.169-.085-.169-.126-.379-.127.38.211.168.084.127.17-.042-.043-.254-.084-.168-.043-.127-.042.422.211.169.127.168.21h-.042l-.126-.126-.211-.127-.169-.042-.21-.042.294.127.254.168.21.211.169.295v.169l.042.169.042-.338-.042-.295-.084-.632-.127-.296-.21-.253-.254-.21-.295-.127-.21-.084-.254-.085H7.83l-.422.043-.422.084-.885.295-.422.169-.422.126h-.295l-.084-.042.084-.042.042-.042v-.042l.085-.085.042-.084.042-.21v-.254l-.042-.21-.253.294-.169.338v.21l.085.17H4.33l-.506-.085-.464-.127-.422-.126.085-.084.084-.085.126-.084.085-.084.168-.211.085-.506h-.042l-.17.168-.168.127-.21.169-.127.168-.042.085v.126l-.042.169-.17-.042-.168-.043h-.337l-.337.127-.296.157-.084.295-.042.295v.295l.084.296-.168.084-.211.126-.169.169-.126.21-.085.127-.084.338.042.168.084.338.085.295.126.169.169.126.169.084.21.043.338.168.126.085.169.126.042.084v.085L1.8 14.77l-.169.042-.169.084-.168.127-.042.126v.295H.956l-.168.042-.127.085-.042.084-.042.042v.253l.042.127.169.295.042.253-.042.126-.042.085-.127.042-.084-.042-.042-.042v-.085l.042-.126.084-.085h.127v-.042l-.043-.037H.577l-.127.042-.042.042-.042.085-.042.168.084.127.127.084.168.042.127-.042.084-.042.127-.126m3.845-6.401l.213-.306v.211l-.037.208-.078.21-.167.211-.055-.261.124-.273zm-1.988.022l.045-.18.18-.178.178-.133.179-.18v.18l-.09.179-.49.445v-.133h-.002zm-1.135 5.303h-.198l-.015-.071h.197l.098.049.05.049-.132-.027zm.011-.243l-.042.042-.086-.042v-.086l.042-.085.129-.086.17-.042h.17v.086l-.084.086-.128.086-.17.04zm.37-.002l-.214.101-.125-.034.192-.09.147.023zM2 15.69h-.136L2 15.623l.137-.067L2 15.69zm.318-.165l-.238.172.23-.27.008.098zm-.002-.285l-.13.184-.086-.032.108-.105.032-.111.022-.162.054.226zm-.068-.572l-.13-.177-.2-.155-.19-.169-.23-.136-.231-.147-.095-.147-.062-.22.032-.222.07.27.137.169.167.14.174.133.334.262.216.185.084.127.064.158.043.221-.068.214-.035-.266-.08-.24zm.23.582l-.064.14-.073.07v-.11l.095-.166.042.066zm-.613-1.681l.218-.132.262-.088.138-.015h.131l.211.06.22.12.173.142.132.218.087.261v.22l-.043.261-.044.132-.044.087-.132.132-.173.088-.218.076h-.174l-.01-.15.088-.044.174-.033.155-.077.111-.125.064-.12.044-.192v-.218l-.044-.187-.11-.131-.097-.086-.155-.085-.183-.027-.226.027-.217.096-.118.07-.042.116-.437-.305.26-.091zm.653 1.035l-.126-.21-.127-.211-.168-.17.168-.126.211-.084h.21l.212.042.126.127.085.337-.043.169-.084.168-.042.043-.084.084-.17.042H2.56l-.042-.21zM1.35 13.511l.085.095.148.14.44.273.159.148.125.193.133.22.07.24.02.203v.086l-.09.043.022-.232-.057-.238-.083-.177-.192-.179-.328-.285-.38-.295-.124-.15-.062-.17-.04-.161.146-.111-.02.232.028.125zm-.445.34l-.086-.173-.044-.172.017-.268.084-.22.201-.222.218-.15.26-.172H1.38l-.157.07-.253.2-.316.337.107-.37.2-.294.18-.19.24-.141.044-.044h.044l.086.044.086.086.13.044.26.044.26.044.086.043.13.044.043.086.044.13-.216.172.044.044-.26.044h-.561l-.13.086-.086.044-.174.172-.177.121-.086.216v.216l.086.258-.13-.13zm1.248.816l-.189-.18-.303-.195-.125-.082-.197-.078-.125-.052-.095-.117-.09-.226.014-.295.066.248.095.19.24.15.31.217.281.227.15.172.064.137.01.179-.106-.295zm-.79.706l-.018-.102.032-.173.113-.113.14-.07.183-.043.2.04.169.013v.143l-.123-.007h-.13l-.24.073-.094.084-.042.117.018.131-.162-.002h-.045v-.09zm.134.135l.118.027v.066l-.248-.027H1.3l.196-.066zm-.194.125l.2.064v.064l-.183-.017h-.133l.116-.11zm-.241-.125h.076l.076.076H.985l.076-.076zm-.111.152l.237-.012-.035.095-.106-.012-.118.035.022-.106zm-.113.397v.087h-.09v-.087l.09-.088v.088zm-.194-.117v-.19l.094.094-.094.096zm.1-.33l.126.124H.744v-.124zm.114.271H.769l.09-.088.089.088H.857zm.987.327l.126-.084-.042-.042h-.084l-.043.042-.042.084-.042.085v.084l.084.084.127.085.084.042.127-.042.084-.043.042-.084.085-.21-.043-.127-.084-.127-.253-.126h-.042v.084l-.084-.042h-.085l-.126.042.126.084.127.043.126.084.127.084.042.127-.042.042-.042.042h-.211l-.042-.042v-.169m.322-.094l-.134-.071-.097-.056.148-.035.14.091.056.14-.029.12-.084-.19zm10.923-.095l.077-.077h-.077v.077m-4.573-3.042l-.305-.127-.253-.169-.417-.313-.518-.365-.266-.084-.113-.042-.07.027-.046.042.295.084.295.127.592.422.29.19.28.162.302.127.346.006.131-.022h.042l-.29-.013-.295-.052M6.57 12.41l.084-.127.042-.042h.085l.253.085.253.168.463.338.253.168.211.127.295.126h.296l.253-.042.253-.084.168-.127.169-.21.042-.17v-.168l-.042-.126-.042-.17-.127-.168-.126-.126-.169-.127-.169-.084-.421-.084-.422-.085h-.675l-.337.042-.337.085-.633.168-.632.253-.38.127h-.422l-.421-.042-.422-.085-.801-.21-.422-.127-.38-.084h-.379l-.168.042-.043.042-.084.084v.085l.042.042.338-.042.337.042.38.084.295.085v-.043l-.043-.042-.463-.126-.211-.085h-.295l-.127.043H1.72v-.085h.043l.253-.042h.253l.463.127.506.126.464.169.464.126.506.085h.253l.506-.085.253-.126.295-.085.338-.168.295-.085h.169l.168.043.376.177.285.2.559.422.258.172.337.084.127.043.21-.043.17-.042.168-.084.084-.084.084-.043.043.043-.085.126-.126.127-.169.084-.169.042h.043l.042.042-.287.056-.317.013-.253-.084-.35-.21-.396-.282-.463-.338-.17-.084-.21-.084-.38-.085-.295.085-.126.084-.127.084-.084.127-.044.126v.295l.042.127.085.126.21.169.211.169.085.084.042.084.042.211-.042.127-.042.042-.127.042h-.126l-.211-.042-.211-.127-.169-.168-.337-.38-.21-.168-.17-.127-.253-.042H4.25l-.126.042L4.04 13l-.127.169-.084.21-.042.254.042.21.084.17.211.126h.21l.085-.042.084-.085.043-.168-.043-.127-.126-.126.042.084.042.126v.085l-.042.042-.042.042h-.084l-.085-.084-.084-.127-.042-.126-.002-.1.002-.113.126-.126.085-.042h.084l.169.084.168.126.59.59.296.254.21.084.254.084h.253l.285-.141.14-.155.084-.17.042-.168-.003-.167-.042-.168-.11-.156.068.029.084.042.042.042.143.07.152.183v.127l-.042.169-.126.126-.296.253-.126.169-.084.126-.085.211.042.21.043.17.084.21.169.085.126.042h.169l.126-.042.042-.042.085-.043.084-.084.042-.084.127-.211.084-.21.084-.085.169-.085.127.127v.169l-.043.042-.126.042h-.084l.084.084h.126l.127-.084.084-.253-.042-.084-.042-.127-.084-.084-.17-.042h-.168l-.084.084-.127.126-.126.253-.127.127-.084.126h-.084l-.085-.084-.084-.126.042-.17.042-.083.085-.127.168-.126.169-.085.169-.126.126-.169.042-.126v-.338l-.084-.168-.126-.17-.17-.126-.379-.21-.337-.211-.084-.169v-.21m1.681-.773l.346.055.337.043.296.168-.043.169-.042.084-.042.042-.21.043h-.17l-.126-.043-.169-.084-.237-.196-.275-.281h.335zm-.499.015l.056.029.084.042.24.24.253.21.253.127.155.028h.126l.225-.042.084-.084.07-.155.03-.098.07.042.042.084-.055.127-.127.126-.155.085-.169.042h-.21l-.17-.042-.15-.066-.164-.113-.259-.26-.141-.194-.127-.126h.04v-.002zm-.395-.042l.169.084.169.084.295.253.357.292.243.149.243.042.211-.032.179-.063.16-.092.127-.17h.042v.14l-.085.085-.168.155-.211.085-.253.042-.21-.042-.212-.085-.168-.084-.296-.295-.295-.253-.168-.127-.17-.126.041-.042zm2.21.914l-.07.126-.168.127-.116.052-.263.042-.117-.02-.238-.074-.295-.127-.253-.168-.548-.422-.253-.169-.21-.168v-.042l.252.084.28.128.39.337.174.211.21.127.211.126.295.042.29-.074.254-.126.047.074.042-.127.084-.084.042-.042-.04.167zm-1.712 2.034l-.06.073h-.061l.12-.073zm-.277.184l.117-.063-.06.125v.063h-.058v-.125h.001zm-.317.626h.073v.067h-.071v-.067H7.26zm.196-.132v-.116l.118-.117-.118.233zm-.086-.106v-.063l.057-.027.142-.224v.125l-.066.062-.076.036-.057.09v.063l-.133.063-.066.062-.066.062H7.04l.33-.25zm-.462.329h.082v.079H6.91v-.08zm-.437-2.588l.136.117.385.216.213.13.17.13.18.168.032.2-.02.18-.062.084-.118.045.116-.205v-.086l-.032-.135-.096-.166-.186-.146-.411-.242-.17-.086-.17-.108-.134-.168-.063-.198.053-.23.106-.137.159-.095-.17.211-.033.176.01.116.105.23zm.305.953l-.042.169-.098.169-.12.097-.182.092-.246.021-.233-.055-.234-.118-.15-.12-.159-.153-.273-.286-.278-.27-.147-.133-.162-.077-.187-.012-.176.105-.086.134-.042.135v.135l.07.193.105.114.218.098-.174.002-.155-.086-.106-.14-.042-.18.015-.152.042-.144.07-.157.127-.13.17-.064.154-.018.198.034.178.094.215.189.428.452.214.185.179.095.145.049.149.013.133-.02.12-.056.075-.104.065-.108.013-.115-.047-.165-.086-.143-.24-.208-.175-.113-.128-.093-.086-.18v-.226l.028-.155.071-.122.159-.128.128-.09.194-.01-.24.201-.055.13-.026.177v.226l.061.135.113.122.169.151.187.147.091.118.086.18.005.17zm.496.112l.01-.127-.032-.147-.115-.114-.173-.13-.397-.167-.243-.137-.158-.179-.084-.2.04-.115.017-.15.044-.128.086-.086.173-.13-.086.086-.104.125-.052.148-.01.149.112.239.127.127.2.136.16.095.22.106.233.136.179.211.022.233-.063.127-.084.084-.138.042.116-.234zm-.01.264l.243-.052-.273.179-.135.108h-.164l.214-.192.115-.043zm-.739.734v-.143H6.6l-.076.287v-.144zm.117.47l-.124-.27.124.134v.135zm.008-.647h-.062v-.123l.062-.062h.062l-.062.123v.062zm.084.356h-.069v-.263l.07-.088h.068l-.069.176v.175zm.002.287h.074v.087h-.074V15.4zm.113-.732l-.062.062.062-.187.125-.063-.063.125-.062.063zm.032.344v.157l-.074-.08.074-.077zm.154.354l-.117-.197.117.1v.097zm-.178-.432v-.115l.058-.057.057-.057-.115.23zm.075-.541l-.252.15.201-.2.101-.102.15-.05-.2.202zm.209.152l-.18.121.12-.182.122-.06h.122l-.184.12zm.376-.23l-.184.108h-.15l.24-.172.161-.08-.067.144zm-.837-1.444l.149.086.327.17.142.085.167.14.126.148.098.191.022.19-.007.15-.066.12-.07-.015.042-.136.028-.147-.018-.162-.066-.137-.212-.212-.277-.164-.552-.295-.116-.2-.008-.208.074-.127.168-.158-.104.179-.039.148.022.113.049.12.121.121zm-4.582-.882l.337.042.632.211V12.2l-.042-.042-.421-.127-.464-.084h-.253l-.211-.042.084.084h.338M12.433 13h.14l-.016-.022-.124.022m.212-.044l-.042.044h-.03l.03.042.042.043-.017.425.061-.127.042-.34L12.69 13l-.044-.044m.343.257v-.086l-.044-.042h-.127l-.086-.043.257.17m-1.927.16l-.1-.105-.05-.053h-.05l.1.105.1.052m.112-.227l-.053.182.103-.182.053-.044v-.093l-.053.093-.05.044m6.338-.397l-.084.211-.042.253.084-.253.127-.169.084-.21.126-.211-.168.168-.127.211m-14.655-.21h-.043v.042l.043.042h.126v-.042l-.084-.043h-.042m.168-.084l-.084-.042-.169-.042.042.084.043.042h.084l.084.042v-.084m0-.126l-.253-.127-.315-.111-.316-.032-.296.017.253.042.222.005.233.042.093.037.084.084.295.085v-.042m.677-.675l-.043.084-.042.042-.084.043-.086-.043.17.085.211.042.042-.042v-.042h-.084l-.042-.043v-.084l.042-.126v-.127l.21.295.212.253.126-.592v-.042l.042-.042.085.042.042-.042v-.042H4.29l-.169-.043v.043l.042.042h.127l-.042.212-.042.169-.127-.169-.084-.212-.169-.169-.084-.042h-.085l.043.126.042.085-.042.17v.169m1.602.169h-.042l-.085-.043-.084-.084-.084.295.126-.084h.127l.17-.042h.042l.085-.085.042-.084v-.084l-.085-.085-.168-.084-.086-.044-.042-.084v-.042l.042-.043.086-.042.084.042v.085l.084-.042.043-.043-.085-.084H5.39l-.17.042-.043.042-.084.043v.212l.127.085.128.084.084.084-.042.085h-.086m-1.941-.846l-.127-.042H3.11l-.127.042-.084.085-.127.168v.127l.042.126.085.17.126.041.085.043h.126l.127-.043.084-.042.042-.126.042-.253-.042-.169-.126-.127m-.027.338l-.088.253-.044.042-.088.042-.044-.042-.087-.042.044-.042h-.044l-.044-.085v-.126l.088-.211.043-.084h.088l.132.042.044.126v.127zm2.729-.338h-.169l-.169.085-.084.126v.253l.042.169.042.042.043.042.126.043.169-.043.084-.042.084-.169.043-.21v-.085l-.043-.084-.168-.127m.042.432v.13l-.044.086h-.086l-.086-.044-.086-.044v-.431l.086-.086h.086l.086.13.044.13v.13zm-4.094-.305v.126l-.042.127v.042l-.084.044v.042l.253.085.042-.043v-.042h-.042l-.042-.042h-.043v-.086l.043-.127v-.084l.042-.042.126.253.169.255.169-.635v-.042h.084v-.042l-.295-.084v.042h.042l.084.042-.042.211-.042.169-.295-.464h-.253v.084h.042l.084.042v.169m4.642-.337l-.21.042-.212.084.043.042h.084v.042l.084.253.085.213-.127.042-.042.042v.043l.295-.127.337-.128.085-.295-.042.084-.043.042-.126.127-.084.042h-.085l-.126-.464.042-.042.042-.042m1.435.253l-.126.126-.084.127.084-.043.126.043.085.042h.084l.084-.042.085-.085.042-.084v-.084l-.084-.127-.127-.126-.126-.169.084-.042H8.3l.042.042.043.084.042.085.084-.085v-.084l-.084-.042-.085-.042h-.21l-.085.084-.042.126.084.127.211.21.042.127-.042.042h-.084l-.127-.084v-.126m-.76-.38h.042v-.042l-.253.042-.211.042v.042h.127l.084.17.084.336.086.043.127.042.126-.042.127-.085.084-.126v-.127l-.042-.337.042-.042h.042l.042-.042h-.168l-.127.042v.042h.127l.042.464-.084.126-.085.042H7.5l-.128-.126-.042-.127-.085-.295.044-.042h.04m11.693-.548l-.042.126v.127l.084.295.042.253.042.042.127-.21.084-.211v-.506l.169.253.126.295.085.168-.042.17v.252l.084.084.084-.168v-.295l-.042-.127-.169-.295-.168-.253v-.084l.168.126.17.084h.379v-.042l-.17-.168-.21-.127-.253-.042h-.295l-.169-.127-.126-.126.084.084.042.085.042.042-.084.126-.042.169m.558-.2l.218.062.163.06.11.183-.164-.061-.217-.06-.326-.183h.216zm-.482.197l.054-.194.133.189.027.247-.054.243-.106.194-.054-.437v-.242zm-8.265.48h-.08l-.234-.064.235.127v.251l.079-.125h.078l.079.063-.08-.127-.077-.125m10.046-.14l.169-.337.084-.38.084-.337-.084.127-.127.126-.168.127-.127.126-.126.169-.042.21v.254l.084.21.253-.295m-.255-.042l.042-.21.043-.17.126-.126.21-.126v.084l-.21.38-.21.379v-.21zm-16.88.169l-.085.126h.38l.169-.042.168-.084.295-.211.253-.253v-.042h-.21l-.211.042-.338.084-.253.169.085-.253.042-.295-.042-.253-.085-.253-.084.042-.042.042v.084l-.042.085-.042.168v.127l.042.337.042.127v.126l-.042.127m.222-.147l.238-.143.285-.095.285-.047v.047l-.19.144-.238.143-.282.113-.29.078.192-.24zm-.197-.764l.09-.23.089.367v.229l-.073.278-.06-.278-.044-.182v-.184h-.002zm14.408-.019l.084.17.042.21.085-.169.042-.21-.042-.211-.127-.17-.084-.083h-.042v-.043l-.211-.084-.084-.042h-.296l-.168.084-.169.127-.169.084h.211l.042.042.549-.042h.084l.042-.042.084-.042.043.042v.21l.084.17m.042-.338l.09.103.055.126.007.14-.042.218-.027-.123-.149-.297V9.23l.066.057zm-.2-.126l-.338.084h-.38l.127-.127.21-.042h.17l.21.042v.043zm-.39.421l-.211.127-.085.084-.042.127.295-.085.127-.042.127-.126.126-.17.042-.126v-.084l-.168.169-.211.126m.23-.006l-.136.148-.169.064-.178.022.548-.37-.064.136zm2.893.048l.085-.042.126-.042.085-.084.084-.085v-.21l-.084-.211-.127.337-.169.337m.316-.295l-.068.123-.135.061.205-.428v.244h-.002zm-.57.085l-.042.126.253-.21.126-.127.084-.127.043-.126v-.085l-.085-.126-.084-.169-.042-.126-.042.084v.084l-.043.085-.042.042-.464.084h-.21l-.211.042.168.127.127.084h.38l.21-.126-.084.295-.042.169m.03-.491l-.126.064-.201.022-.159-.01-.116-.095.612-.084-.01.103zm.167.084l.056-.386.113.194v.194l-.113.194-.169.194.113-.39zm-10.832.111l-.126-.042.126.169.084.084.043.127-.043-.253-.084-.085M7.118 8.57l-.337.169h.042l.38.21.21.085.21.042h.17l.168.042-.126-.126-.085-.127-.253-.253-.21-.042h-.17m.394.166l.162.113.045.045.046.091-.235.009-.232-.078-.4-.175.137-.076h.182l.157.023.138.048zm4.755.34h.092l-.092-.047h-.14l.14.047m-1.43-.452l.122-.096.085-.169L11 8.19l-.085-.211-.042-.169v-.084l.042-.042.085-.169v-.169l-.043-.126-.084-.084-.126-.085-.253-.168-.085-.127-.042-.126h-.042l.126.295.043.295.042.169.042.126.126.127.127.084-.084.042-.085.084-.084.17-.042.379-.042.168-.04.203.137-.063.117-.01.126-.076m-.145-1.1l-.08-.178-.114-.412.257.19.163.15.037.178-.079.206-.184-.133zm-.128 1.11l.032-.126.042-.086-.001-.251.033-.242.086-.086.086-.086v.172l.043.215.047.153-.017.115-.04.086-.16.076-.15.06zm1.714.28l.047-.047h-.142l.048.047h.047m-.056-.26h-.047l-.047.048h.047l.047-.047m3.341-.103l.098.103.046.047.118.027-.057-.029-.12-.189-.085.04m-6.205-.824l.253.169h.084l.085.042.21-.042.17-.085.168-.042-.169-.084-.168-.085-.17-.126-.21-.042-.126-.042-.127.042-.169.042-.084.084.253.169M9.35 7.51h.088l.272.027.426.19-.13.044-.087.044-.262-.013-.219-.117-.218-.13.13-.045zm-.796-.587l.211.169.21.168.17.17-.085-.212-.084-.421-.084-.17-.085-.126-.126-.084-.253-.126v.421l.042.127.084.084m.147-.401l.15.155.1.258.05.207-.2-.103-.25-.264-.063-.176.012-.18.201.103zm12.304-.655l-.168.127.295.168.337.085h.338l.168-.042.169-.043-.253-.168-.127-.085-.126-.042-.21-.042h-.212l-.21.042m.484.063l.263.087.219.088-.263.044h-.263l-.263-.088-.22-.088.263-.043h.264zM1.073 5.024l.084.253.169.253-.295-.042H.735L.61 5.53l-.127.084-.126.127-.042.126.21.042.254-.042.295-.042.084-.042.127-.084.168-.085-.042-.084v-.211l.042-.169v-.126l-.084-.295-.127-.211-.168-.211-.042.042v.042l.042.127-.042.253.042.253m.01.717l-.211.042-.422.042.127-.169.21-.084h.296l.21.042-.21.127zm.049-1.191l.141.202.092.201v.202l-.043.252-.162-.324-.062-.263.034-.27zm-.218.39l-.253-.254-.337-.126-.253-.21.126.336.169.338.084.126.127.085.21.126.212.042h.168l-.084-.126-.042-.169-.127-.169m0 .38L.74 5.241l-.2-.146-.138-.19-.121-.259.253.084.204.145.179.201.123.246H.914V5.32zm17.684-2.405l.21.084-.084-.084-.084-.127-.042-.126-.085-.085-.084-.084-.127-.042-.21-.042-.211-.042h-.253l.042.126.126.127.253.168.38.085.169.042m-.72-.306l-.18-.133h.269l.224.046.224.135.09.045.09.135-.493-.135-.225-.093zm1.016.812l-.21-.211-.296-.169-.126-.084h-.127l-.084-.042v-.127l-.126.085-.085.084-.084.042-.084.084-.043.17-.084.42-.042.127-.042.085v.084l.126-.084.085-.085.126.127.127.126.084.127.126.126.211.085.211.042.21.042.085.042.085.084-.043.043h-.042l-.295-.127-.337-.084-.295.084-.17.084-.126.127.296.084.506.127.168-.042.169-.085.126-.084.085-.042h.084l.084.042.043.042.084.042h.21l.127-.042.253-.169.211-.126.127-.042h.126l.042-.042v-.085l.042-.042h.043l.084-.126.084-.169v-.337l-.084-.338-.084-.295-.043.169-.084.168-.126.338-.043.337-.168-.169-.211-.084-.084-.042h-.085l-.042-.042-.042-.042.126-.043.127-.042.253-.042.126-.084.043-.127.084-.126v-.169l-.042-.126V2.45l-.169.295-.21.295-.254.338-.168.295.253.38.126.168.169.169h-.59l-.043.042-.042-.042.084-.211.043-.211v-.21l-.043-.254h-.042l-.084.21-.169.17-.126.21-.085.211-.042-.126v-.127l-.084-.168-.084-.127-.127-.084-.126-.085-.085-.042-.084-.084-.084-.042-.085-.085.085.253.084.253-.548-.042v-.042l.126-.042.085-.084.084-.17v-.21l.042-.253.127.127.253.337.126.169.127.084h.379l.127-.169.084-.084.042-.127.042-.21-.042-.253-.042-.211-.084-.211h-.085l-.168.632-.043.338M18.7 4.813h-.42l-.28-.057-.28-.058.234-.114.235-.058h.234l.233.17h.14l-.096.117zm.919-1.353l.315-.35.211-.264h.044v.263l-.044.088-.042.133-.159.095-.337.094.012-.059zm.666.233l.179-.538.064.327.01.253-.01.253-.076.172-.093.093-.074-.148-.032-.17.032-.242zm-.5.358l-.092-.184-.138-.093.184.046.23.138.323.37-.039.018-.104.01-.117-.063-.108-.104-.138-.138zm-.287.388h.482l-.145.052-.096.106-.145.106-.154.034h-.147l-.116-.042-.115-.044.194-.106.242-.106zm-.523-.07l.13-.329.253-.327.021.243-.094.295-.116.201-.193.14v-.223h-.001zm-.756-.78l.169.042.126.084.221.24.074.274.044.247-.084-.169-.127-.21-.126-.127-.211-.085-.042-.168-.044-.129zm-.1.325l.289.105.192.156.192.26-.096-.052-.143-.052-.192-.053-.193-.104-.337-.312.288.052zm-.212-.83v.243l-.052.194-.053.098-.052.049-.209.146.105-.242.052-.243.104-.243.157-.194-.052.192zm.995.547h-.088l-.173-.044-.13-.088-.088-.13-.088-.131-.043-.13.173.044.174.131.305.305-.042.043zm.154-.525l.043-.218.044-.261.088.218v.261l-.044.261-.13.218-.044-.218.043-.26zM5.769 2.914l-.127.042-.21.126-.127.127-.127.126-.042.17v.168l-.127-.211-.126-.127-.38-.295H4.46l.084.422.126.169.127.084.169.126.126.127.042-.042v-.169l.169-.042.126-.084.127-.085.084-.126.127-.295.126-.253h-.042l-.082.042m-1.028.685l-.143-.203-.056-.214.2.148.168.162.113.162.056.162L4.74 3.6zm.943-.432l-.098.253-.38.295-.045.03.06-.281.084-.127.126-.126.127-.127.126-.042.085-.084-.085.209zm-2.618-.169l.085.253.126.127.127.168.168.085h.17v-.085l-.043-.126-.042-.127-.042-.084-.17-.21-.42-.254h-.043l.084.253m.299.02l.169.221.167.351-.242-.096-.188-.243-.075-.094-.086-.262.255.123zm.167-.189l.042.127.084.169.127.126.126.084.043-.042.042-.084V3.04l-.042-.253-.127-.253-.337-.421-.085-.043v.085l.043.337.084.337m.142-.349l.153.243.095.253.008.277-.251-.233-.162-.49-.05-.321.207.271zm.701.012l.085.295.126.169.169.126.337.211v-.126L5.05 3.04l-.127-.253-.126-.21-.169-.17-.21-.126-.254-.042.127.127.084.126m.253.042l.169.169.21.422-.21-.127-.21-.169-.085-.21-.127-.253.253.168zm4.855.295v.211l-.085.211.211-.084.169-.127.126-.168.085-.17.042-.21-.042-.126-.043-.043-.295.17-.084.168-.084.168m.253-.253l.084-.084.084-.042v.21l-.126.212-.127.168-.168.127.126-.38.127-.21zm-8.23-.337l.085.084.126.127.084.084.085.042.126.043.127.084h.126l.169-.042.084.168.169.211v.042l.042.043.084.084v-.633l-.042-.21-.126-.211-.085-.169-.042-.253h-.042l-.126.633.042.21-.169-.21-.21-.127-.254-.084-.295-.042.042.084v.042m.952.039l.042-.305.103.256.118.261.027.522-.154-.206-.138-.284v-.244h.002zm-.663-.05l.23.094.201.136.152.188-.265-.04-.232-.119-.317-.32.23.06zm.428.601l-.253-.084h-.295l.169.169.168.168.211.085h.38l.042-.042-.085-.127-.126-.084-.21-.085m.087.274l-.169-.032-.172-.125-.169-.117.289.03.263.095.169.137-.211.012zm17.3-.274l.085.085.042.042.084-.084.084-.085.043-.21V2.28l-.043-.295-.126-.253-.169-.21.042.168-.042.21-.084.38.042.38.042.168m.112-1.037l.1.098.051.147v.246l-.1.589-.051-.05-.102-.588.102-.442zm-12.435.066l.042.295.085.295.042.127.084.126.085.085.126.042.084.042.085.084.042-.084h.253l.21-.084.17-.17.295-.294-.38.044-.169.042-.168.042.21-.21.17-.212.126.042.126.085.085.084.168.042.123.026.137.01-.218.09-.21.085-.17.169-.056.098-.027.113.428-.145.246-.108.127-.043.084-.126.143-.186-.263-.263-.178-.052-.292-.046-.38.085.042-.253.127-.253-.127.084-.126.042-.224.152-.19.263-.09.26-.043.126.043.17.084-.085.08-.029-.122.197-.085.127v-.128l-.042-.295-.084-.253-.042-.127-.085-.084-.126-.085-.127-.084-.253-.126.085.126.04.125m2.098.612l-.183.12-.211.084-.221.085.025-.078.042-.042.085-.084.337-.127.295-.127-.169.17zm-.479-.502l.18.025.208.047.157.095.08.128-.201-.01-.253-.043-.147-.042-.243-.158.22-.042zm-.823.423l-.1.111.048-.244.148-.294.149-.195.248-.147-.046.133-.052.177-.094.197-.178.188-.123.074zm-.037.312l.123-.155.169-.063.37-.074-.316.295-.169.095-.217.028.04-.126zm-.607-.854l.204.176.113.217.064.31.047.28-.094-.094-.184-.072-.155-.351-.014-.246-.084-.274.103.054zm-1.46.18l.21.168.211.126-.042.043-.38-.043h-.21l-.17.085-.084.084-.084.127-.042.084-.042.126h.337l.169-.042.506-.337.126-.042.169-.042v-.043l-.042-.042-.042-.042-.085-.169-.084-.126-.21-.253-.17-.084-.168.042-.338.084.254.127.21.168m-.064.621l-.222.074-.226.009.148-.252.17-.098.36.006.113.03-.343.231zm-.054-.931l.206.003.07.037.117.124.118.16.193.27-.328-.16-.14-.164-.096-.078-.131-.067-.13-.083.121-.042zm7.926.605l.127.38.126.126.127-.421.042-.253-.042-.211-.043-.127-.084-.084-.21-.126v.126l-.043.295v.295m.125-.622l.14.187.047.187v.28l-.047.235-.047.047-.046-.096-.047-.093-.047-.233.047-.514zm3.505-.012h.042l.169.253.21.169.254.169h.126l.169.042.084-.042h.042l.042.042.296.464V2.66l-.237-.425-.059-.25-.042-.253v-.042l.253.253.071.123.052.169.046.256v.337l.084-.295v-.168l-.042-.17-.042-.126-.084-.168-.211-.211-.253-.21.042.252v.21l.042.17v.126l-.169-.337-.21-.169-.254-.084-.295-.042h-.21l.042.042.042.04m.347.024l.225.09.216.148.185.254-.27-.054-.22-.124-.223-.18-.18-.178.267.044zM5.092 2.28h.422l.295-.042.253-.042-.38-.21-.21-.085-.253-.042-.211.042-.253.084-.085.042.127.127.295.126m-.103-.319l.118-.018.252.013.276.095.186.094-.231.048-.231.042-.277-.024-.275-.162.182-.088zm12.428 9c.047.02.115.068.12.125"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Elsevier</title><path d="M6.687 11.326c.256-.137.405-.303.43-.497.042-.174-.116-.157-.153-.124-.145.116-.33.294-.509.414a1.862 1.862 0 00-.248.033c-.02-.009-.046-.042-.033-.054.161-.104.34-.207.455-.344.074-.086.041-.165-.103-.182-.162-.024-.352.042-.501.174-.253.215-.373.691-.397.993-.054.05-.07.05-.125.075a1.258 1.258 0 01.133-.98c.025-.063.008-.162-.083-.191-.054-.02-.079-.009-.103.05-.124.355-.34.508-.642.732-.029.025-.302.174-.372.215-.24-.074-.51-.521-.737-.857a.207.207 0 00-.198-.086c-.497.053-.865.016-1.13-.373-.12-.161-.174-.19-.323-.05-.165.174-.33.307-.496.447-.087.054-.15.038-.186-.074A3.132 3.132 0 011.2 9.604c0-.149.017-.372.02-.517a1.274 1.274 0 00-.314-.211C.488 8.677.004 8.214 0 8.077c0-.033.025-.116.14-.182.609-.269 1.08-.041 1.263-.07.153-.013.203-.124.178-.344a1.2 1.2 0 01.389-1.075c.207-.22.19-.464.14-.733-.024-.124-.053-.157-.178-.145-.33.075-.314.083-.376.373a1.476 1.476 0 01-.207.53c-.132.21-.31.388-.468.575-.053.074-.115.074-.194.024A1.084 1.084 0 01.26 5.66c.053-.144.132-.297.219-.376l.041.017c0 .025 0 .058-.008.082l-.1.307C.29 6.05.31 6.389.55 6.695c.079.1.15.128.19.083.154-.153.311-.298.443-.464.166-.186.211-.413.166-.65a4.121 4.121 0 00-.046-.268c-.024-.128-.078-.12-.14-.042-.15.15-.22.27-.29.547A.215.215 0 01.803 6a.29.29 0 01-.033-.145c.041-.248.099-.467.256-.629.104-.112.079-.174-.02-.203-.356-.099-.663-.198-.932-.53A.298.298 0 010 4.313c0-.07.037-.124.116-.182.314-.216.629-.439.94-.505.123-.025.19-.033.252-.042-.141-.438-.29-.964-.373-1.452 0-.1.07-.372.108-.451a.56.56 0 01.277.037c.145.05.277.14.41.224.128.074.165.074.248-.042.145-.21.31-.397.53-.509.074-.037.124-.062.173-.062.07 0 .125.042.195.15.12.194.223.417.33.62.125.211.257.223.448.087.21-.14.401-.277.596-.439.182-.14.231-.14.43-.004.178.124.372.352.468.55.02.038.434-.186.446-.285.017-.178.067-.306.133-.451.087-.178.21-.228.323-.228.103 0 .298.116.442.207l.315.182c.165.091.174.091.273-.062.112-.174.207-.207.439-.207.455 0 .869.116 1.183.493.058.074.112.082.182.012.128-.132.248-.182.488-.182h.422c.096 0 .158.008.245-.116.115-.165.248-.327.434-.327.298 0 .687.418.886.778l-.104.054a2.119 2.119 0 00-.778-.488c-.182-.075-.26 0-.236.186.025.22.083.443.137.662a.8.8 0 00.439.468l.012.074c-.033-.008-.075-.02-.124-.025a.906.906 0 00-.39.013c-.247.062-.475.17-.698.264-.112.054-.112.083-.017.174.124.116.24.249.38.352.402.302.8.24 1.242.07l.207-.07c.186-.033.385.041.538.182l.447.401c.14.137.174.257.083.427-.145.285-.307.575-.468.852a.277.277 0 01-.103.108c-.054-.042-.104-.145-.05-.236.198-.248.323-.596.364-.832.041-.232-.083-.34-.302-.281l-.186.07c-.079.029-.108 0-.124-.083-.03-.07-.067-.116-.091-.19-.05-.124-.125-.166-.228-.083a1.214 1.214 0 00-.43.414 1.568 1.568 0 00-.174.964c.004.041.037.07.062.095a.178.178 0 00.083-.082c.058-.145.095-.29.12-.447.012-.087.024-.245.053-.323.021-.042.087-.025.125-.013.095.038.132.083.144.15-.186.235-.302.587-.426.901-.02.042-.1.096-.149.096-.058-.004-.136-.054-.153-.104-.074-.198-.207-.393-.26-.592-.137-.674-.178-.711-.207-.753A4.146 4.146 0 009.095 3.34c-.033-.033-.05-.07-.074-.099.037-.017.066-.05.103-.062.128-.054.26-.104.393-.149a.616.616 0 00.356-.319c.046-.087.108-.173.157-.26.07-.124.062-.19-.029-.298a.641.641 0 00-.653-.203c-.253.062-.41.244-.489.484a.733.733 0 00-.041.27c0 .136.041.165.153.094.186-.153.393-.277.592-.41a1.093 1.093 0 01-.406.497c-.124.079-.248.145-.372.215-.104.075-.14.042-.174-.082-.029-.133-.017-.27-.017-.402a.877.877 0 00-.587-.881l-.327-.137a.314.314 0 00-.124.286c.025.36.078.62.14.927.058.124.195.173.336.198.082-.041.149-.157.037-.339l-.161-.319c-.017-.041-.038-.078-.05-.124-.004-.016-.012-.045 0-.066.02.008.041.008.083.05.207.223.372.476.48.79.041.124.004.174-.116.186-.273.025-.55.042-.815.1-.435.09-.58.248-.737.537-.066.125-.1.203-.103.278.153.012.327.004.575-.042a1.647 1.647 0 00.596-.194c.116-.137.207-.273.38-.397.05-.038.166-.05.211-.025A2.276 2.276 0 019.55 4.56c.017.05.067.1.091.14.05.059.03.08-.041.075-.1-.029-.207-.054-.298-.09-.037-.017-.066-.075-.083-.117l-.09-.256c-.05-.104-.075-.104-.179-.066-.053.02-.111.04-.198.082-.075.03-.112.042-.129-.041-.024-.124-.057-.248-.086-.36-.05-.137-.104-.166-.236-.1-.249.129-.43.32-.555.567-.116.24-.161.406-.054 1.043.025.124.125.277.24.315l1.076.33c.054 0 .087.063.021.104-.132.091-.277.17-.414.257-.07.041-.107.02-.14-.042a.844.844 0 00-.443-.405c-.07-.033-.108-.02-.137.054-.05.116-.103.285-.149.405-.025.062-.054.087-.124.042-.306-.257-.629-.27-1.005-.22-.187.025-.274.075-.228.26.103.518.554.758.94.924a.26.26 0 00.132-.104c.058-.083.041-.165-.042-.24-.149-.128-.463-.277-.62-.418-.025-.082.153-.157.248-.095.281.128.496.36.72.58.116.111.17.099.207-.063.041-.124.083-.314.12-.455.02-.074.066-.05.083-.004.029.108.062.248.062.372 0 .133-.046.249-.083.373-.025.124-.12.19-.224.165-.475-.045-.835.178-1.13.187a.894.894 0 01-.276-.075c-.104-.083.05-.09.082-.09.124 0 .31 0 .41-.055a.596.596 0 00-.128-.12c-.265-.215-.563.013-.79.129-.129.07-.137.086-.083.223.082.207.231.286.434.286.116 0 .228.016.348.012a.414.414 0 00.165-.041c.153-.058.29-.133.43-.195.174-.025.17.062.092.15l-.352.214c-.037.02-.079.033-.104.058-.05.037-.111.1-.103.124a.262.262 0 00.132.116c.166.05.331.075.489.112.256.05.364-.02.434-.273.037-.14.083-.273.149-.402.041-.082.091-.09.14-.008.175.323.357.637.543.952.033.07 0 .103-.066.095a23.741 23.741 0 01-1.2-.149c-.137-.02-.27-.108-.406-.165-.207-.096-.414-.183-.65-.174-.202.004-.318.124-.248.318.091.278.195.563.306.84.079.19.265.261.468.278.095.012.062-.054.037-.1l-.33-.716c-.042-.12-.01-.136.057-.037.182.273.372.534.538.811.1.174-.025.224-.149.228-.418-.042-.799-.186-1.2-.34-.041-.016-.1-.103-.087-.14.075-.07.166 0 .248 0 .096.016.137-.025.1-.1a.38.38 0 00-.203-.186 2.47 2.47 0 00-.596-.215c-.124-.025-.207.03-.182.14.033.146.1.274.174.423.02.041.02.1.008.14-.074-.004-.165.021-.476-.111-.31-.128-.314-.215-.314-.596 0-.083 0-.244.016-.319.033-.103.042-.124.137-.107.323.066.65.153.968.306.095.041.186.124.286.161.082.03.124 0 .111-.082a.29.29 0 00-.182-.249c-.339-.144-.678-.306-1.018-.442-.082-.034-.111-.07-.066-.158.137-.223.207-.484.15-.765 0-.02.024-.05.049-.075a.207.207 0 01.153.19c.025.24.186.406.343.568.319.33.319.33.766.223.058-.008.1-.05.149-.083-.042-.033-.083-.09-.14-.116-.084-.041-.175-.066-.266-.103-.298-.112-.385-.323-.285-.637a10.759 10.759 0 00.277-.865c.033-.137.041-.281.05-.426 0-.083.062-.083.111-.091l.65-.042c.166-.012.352-.207.418-.318l.215-.352a.451.451 0 00-.443-.066c.05-.162.116-.315.116-.468 0-.1-.025-.22-.066-.323-.041-.099-.112-.115-.194-.053-.158.132-.29.29-.34.504-.05.216-.14.609-.095.679.1-.074.232-.174.319-.199a.19.19 0 01.149.025 2.12 2.12 0 01-.48.331c-.12.054-.166-.016-.145-.132.14-.538.054-.58.008-.844a3.103 3.103 0 00-.401-.927c-.058-.075-.15-.05-.273.1-.199.24-.249.442-.352.856l-.025.082-.14.125-.063-.07c.054-.191.112-.303.112-.456a.525.525 0 00-.207-.422c-.153.1-.294.223-.33.29a.41.41 0 00.007.471c.158.278.133.555.083.882l-.041-.013a3.674 3.674 0 00-.116-.629c-.033-.132-.12-.244-.19-.36-.07-.103-.133-.327-.075-.418.083-.144.344-.219.443-.351.103-.158.054-.224.186-.364.079-.096.248-.29.372-.224.373.186.77.228 1.188.174.178-.025.215-.02.265-.199.041-.149.062-.05.21-.099.253-.083.386-.31.386-.58 0-.148.008-.301-.009-.454-.012-.133-.062-.261-.103-.381-.033-.079-.087-.062-.124-.004-.104.136-.277.405-.373.554-.053.087-.099.174-.144.265-.025.07-.058.087-.12.02a1.349 1.349 0 00-.22-.19c-.136-.087-.149-.36-.095-.533.058.033.1.099.137.186.05.116.074.248.165.29.12.061.24-.187.224-.356a.27.27 0 00-.042-.125c-.132-.235-.434-.426-.62-.426-.216 0-.352.265-.265.517.025.067.05.116.083.178-.51.27-.646.439-.849.675-.025.029-.05.112-.025.153.096.182.058.244-.136.352-.087.05-.207.095-.298.124-.012.008-.037-.013-.062-.017a.124.124 0 01.025-.05c.124-.277.26-.541.376-.823.124-.302-.149-.583-.393-.678-.161-.063-.29-.025-.397.12-.27.322-.327.848.05 1.344.058.083.04.116-.054.125-.215.016-.43.04-.654.053a.869.869 0 00-.662.352c-.05.075-.116.091-.186.041-.17-.103-.315-.078-.493.025-.29.153-.629.273-.815.273-.029 0-.066-.024-.09-.05.016-.024.04-.061.103-.082.177-.041.322-.087.48-.132.029-.03.04-.1.057-.129-.028-.041-.09-.095-.136-.1a2.185 2.185 0 00-.451 0c-.393.038-.683.22-.931.452-.116.116-.124.236 0 .331.29.207.6.414.993.31.273-.087.443-.29.62-.488.15-.157.332-.343.505-.145.253.29.303.592.716.538.158-.016.224-.07.265-.22l.033-.177c.013-.116-.05-.174-.161-.128-.075.024-.14.066-.215.082-.042.013-.087-.004-.137-.016.004-.042.013-.1.042-.124.074-.05.165-.091.248-.129.31-.082.604-.144.91-.206a.265.265 0 01.095 0l-.029.086c-.111.257-.26.336-.463.385a.479.479 0 00-.112.199c-.128.414-.054.844.224 1.142.099.112.223.203.351.281.216.124.273.331.352.55.05.137.104.274.166.41a1.386 1.386 0 00-.418.447c-.042.042-.075.025-.1-.025l-.12-.293c-.107-.261-.29-.427-.579-.451-.103-.009-.207-.025-.306-.038-.12-.012-.199.042-.24.178-.162.497-.008.927.467 1.192-.38.095-.695.248-.89.513.021.075.137.174.286.236.373.153.753.137 1.105.017.207-.075.215-.025.253.124l.103.463c.025.112-.037.174-.14.137-.568-.166-1.242-.439-1.73-.766a2.566 2.566 0 00-.642-.19c-.074.041-.136.095-.202.083a3.629 3.629 0 01-.613-.216c-.1-.058-.103-.087.02-.103.191 0 .539.083.717.083.173-.054.173-.083.066-.158-.418-.33-.89-.252-1.357-.173-.166.033-.178.111-.083.244.604.683 1.05.678 1.787.592.48.306.96.579 1.52.757l.011.083a8.155 8.155 0 00-1.142.165c-.182.037-.219.149-.12.315.15.24.385.351.654.417a.848.848 0 00.58-.037c.223-.103.368-.29.579-.405.124-.067.33.008.455.041.19.062.372.145.567.174.77.103 1.589.174 2.305.116a3.697 3.697 0 00-.207.484c-.037.1-.004.124.1.116a.436.436 0 00.36-.207c.012-.116.012-.22.036-.335.013-.062.03-.15.07-.158.03-.004.208.025.187.075a7.213 7.213 0 01-.19.496c.066.013.136.025.206.025.29 0 .336-.041.323-.33a1.2 1.2 0 00-.037-.245c-.037-.215.008-.364.194-.463.183-.091.373-.062.555-.042a3.393 3.393 0 011.568.708c.228.182.03.434.03.778 0 .215-.042.438-.038.55.008.178.083.273.149.323.199.153.418.306.629.443.215.14.323.227.58.314a.556.556 0 00.181.013.662.662 0 00-.012-.265c-.124-.083-.298-.124-.497-.19-.037-.013-.074-.063-.095-.108a.372.372 0 01.145-.083l.323-.07a.19.19 0 00.082-.07c-.016-.03-.04-.067-.066-.071-.132-.041-.306-.07-.418-.1-.041-.012-.062-.049-.095-.086a.406.406 0 01.157-.083l.331-.041a.174.174 0 00.087-.054c-.012-.033-.029-.075-.053-.087-.07-.033-.41-.157-.447-.195-.03-.028-.038-.07-.05-.124a.317.317 0 01.157-.033l.277.004a.178.178 0 00.112-.053.248.248 0 00-.074-.087c-.133-.083-.182-.141-.331-.207-.07-.042-.104-.083-.116-.17a.461.461 0 01.186-.008c.1.025.153.058.26.074a.284.284 0 00.117-.012.116.116 0 00-.03-.083c-.04-.041-.095-.062-.144-.1-.075-.049-.203-.173-.277-.235-.025-.02-.013-.083-.017-.104l.083.005c.1.02.248.062.33.074.15.029.13.008.067-.1-.091-.082-.186-.136-.273-.231-.025-.033-.017-.087-.013-.132.141.008.286.074.414.074.013-.025.021-.041.021-.074a2.11 2.11 0 00-.103-.249c-.038-.095.012-.132.082-.103.1.041.257.124.364.149.042.012.096 0 .15-.02-.05-.1-.108-.179-.174-.278-.013-.025 0-.062.02-.091.17.05.344.166.497.207.07.029.116 0 .132-.033.013-.042-.111-.166-.103-.215.004-.033.012-.042.029-.062l.29.09c.21.054.33.075.364.025.04-.012-.005-.111-.067-.227.166-.013.187.066.48.124.112.029 1.664-.19 2.293-.385.248-.083.538-.207.77-.314l.074.016c.178.455.554.596.94.637.11.013.23.021.35.025.113 0 .137-.029.104-.14a1.986 1.986 0 00-.575-.977l-.248-.153c-.108-.112-.095-.24.02-.331.2-.133.464-.26.663-.385.29-.186.389-.472.372-.774a.257.257 0 00-.107-.202.323.323 0 00-.15.103c-.078.165-.157.302-.227.447-.054.029-.112.041-.161.062-.013-.05-.042-.1-.03-.149.088-.257.315-.463.464-.629.062-.103-.029-.145-.074-.137-.166.038-.348.1-.472.24a3.335 3.335 0 00-.654 1.354c-.029.128-.083.173-.124.293-.054.182-.05.224.108.336.227.148.525.285.74.438.087.095.042.133-.05.128a.857.857 0 01-.62-.277c-.083-.09-.153-.149-.248-.161-.224.058-.534.149-.766.182-.132.025-.236.078-.306.203-.046.103-.14.124-.248.082-.166-.045-.331-.103-.497-.14a1.862 1.862 0 00-.828.058c-.111.016-.136-.009-.103-.116.029-.137.074-.27.1-.402.003-.058.012-.144-.042-.173-.054.024-.132.037-.157.074-.087.128-.153.265-.236.406-.054.111-.075.111-.19.062a2.11 2.11 0 01-.468-.286c-.112-.178-.232-.327-.29-.48-.02-.041.042-.074.095-.074.125.099.273.223.385.33.075.083.1.166.15.274.012.025.132.02.152-.025.017-.041.038-.103.054-.19a.587.587 0 00-.136-.542c-.183-.187-.307-.224-.56-.398-.314-.215-.36-.202-.475.009a1.232 1.232 0 00-.153.579c.083.505.203.712.815 1.026a.17.17 0 01-.05.083c-.04.033-.062.054-.132.054-.215-.009-.517-.013-.753-.033-.066-.005-.108-.025-.124-.063a3.103 3.103 0 01.273-2.234.372.372 0 01.149-.161c.128-.067.33-.153.455-.207.075-.033.112-.009.145.066.054.199.074.34.09.509.01.103.013.207.055.227.099.042.186-.04.236-.124a1.1 1.1 0 00.099-1.005c-.013-.033.016-.1.054-.12.422-.17.815-.344 1.241-.51.24-.012.546.013.972.084.07.008.22.132.373.219-.195.1-.48.306-.679.496-.054.058-.124.133-.074.29.165-.008.248-.054.372-.09.19-.055.31-.084.464-.084a.828.828 0 01.124.017.228.228 0 01-.058.128c-.054.05-.14.042-.203.075-.062.041-.124.103-.083.178.03.05.112.107.17.099.199-.013.38-.037.588-.1.09-.074.438-.53.24-.57-.112-.025-.352-.042-.456-.096a.207.207 0 01.125-.14c.107.016.231.05.397.066a2.441 2.441 0 00.815-.037c.112-.042.149-.083.112-.153a1.283 1.283 0 00-.758-.663c-.149-.04-.33-.008-.484-.008l-1.332-.012c-.03 0-.062-.025-.091-.042.025-.02.05-.045.074-.058.124-.074.27-.136.393-.223a.87.87 0 00.365-.55.228.228 0 000-.129c-.125-.455-.373-.786-.89-.844l-.257-.041c-.095-.008-.132.033-.132.12 0 .161.008.248 0 .414 0 .082.041.111.137.124a3.186 3.186 0 01.703.203c.137.053.165.136 0 .277l-.372.265c-.067.041-.096.008-.104-.054-.008-.1-.008-.207-.025-.302a.207.207 0 00-.054-.095.273.273 0 00-.198.165c-.05.133-.083.257-.104.385a.406.406 0 01-.285.331c-.075.02-.14-.008-.128-.079.012-.082.029-.165.053-.248.12-.29.182-.538.158-.81a5.834 5.834 0 01-.042-.572.17.17 0 01.124-.182c.224-.087.435-.174.67-.248.08-.03.146.004.208.082l.471.555c.125.132.158.128.265-.02.1-.141.207-.27.364-.357.083-.041.083-.12-.012-.157-.178-.066-.356-.103-.542-.165-.042-.013-.087-.013-.133-.03-.029-.012-.066-.049-.066-.074 0-.025.037-.062.066-.074.34-.12.621-.232.923-.348.083-.037.124-.103.112-.19-.008-.112-.041-.207-.058-.315-.017-.099-.083-.174-.186-.186-.414-.041-.662.075-.944.364a.257.257 0 00-.066.228c.05.008.091.008.128-.004a1.69 1.69 0 00.443-.187c.075-.082.133-.165.174-.165.025 0 .07.103.083.14-.042.05-.083.1-.41.24a9.447 9.447 0 01-1.812.625c-.083.009-.079-.045-.058-.082.116-.203.248-.414.376-.63.124-.074.158-.04.112.075a2.223 2.223 0 01-.137.257c-.012.083.025.103.075.095a.695.695 0 00.513-.617c0-.103-.05-.14-.157-.136-.157.012-.331.025-.484.07-.29.075-.464.277-.559.542a2.934 2.934 0 00-.091.377c-.025.136-.14.186-.26.252-.203.124-.307.1-.48.133a2.855 2.855 0 00-.435.099c0-.05-.013-.095 0-.124.1-.157.186-.31.29-.455.144-.211.107-.331-.125-.414a.86.86 0 00-.993.347c-.124.199-.215.435-.302.65-.054.128 0 .207.137.236.21.037.463-.041.654-.095-.013.062-.017.302-.038.351l-.124.27c-.078.132-.165.177-.31.107a6.538 6.538 0 01-.65-.352c-.248-.145-.488-.248-.765-.248a.372.372 0 01-.083-.008c-.091-.02-.095-.05-.042-.108.07-.07.075-.14.034-.227l-.286-.53a1.448 1.448 0 01-.136-.31c.07-.013.33.074.33.124.021.29.108.496.261.678.116.116.224.042.236-.074.02-.153-.186-.402.083-.973.116-.256.472-.695.703-.695.124 0 .228.054.302.236.042.083.07.282.108.364.033.083.074.124.165.116.224-.029.534-.165.787-.198.161-.025.285.376.364.52.124.216.182.402.323.17.24-.33.351-.703.608-.819a1.792 1.792 0 011.043-.178c.111.013.144.054.12.166-.021.066-.025.136-.042.207-.025.078.046.107.133.041.12-.07.207-.165.29-.273.214-.232.43-.348.852-.348.198 0 .351.042.53.104.136.05.157.07.12.207l-.12.397c-.042.182-.013.207.148.298.141.083.253.14.34.248a.29.29 0 00.178-.062 2.14 2.14 0 01.765-.865c.133-.074.166-.066.22.062.111.282.173.526.194.79.149-.173.323-.36.447-.496.447-.422.89-.418 1.49-.269.148.042.033.19-.054.306l-.116.174c-.037.062-.066.066-.116.013-.075-.087-.149-.24-.224-.315-.136-.136-.376-.058-.542.042a2.222 2.222 0 00-.802.823 4.345 4.345 0 01-.704.832c-.107.041-.107.037-.083-.075a2.959 2.959 0 00.489-1.535.368.368 0 00-.286.062c-.414.232-.62 1.055-.678 1.606-.013.115-.013.207-.116.264-.174.1-.24.141-.414.22-.041.008-.066 0-.104-.004.083-.365.025-.621-.186-.965-.037-.066-.083-.099-.161-.074-.041.025-.083.058-.178.132a1.56 1.56 0 00-.488 1.196c0 .083.082.083.14.042a.624.624 0 00.158-.19c.103-.174.19-.357.29-.53.016-.042.065-.07.103-.083.02.041.02.087.012.124l-.074.331a1.034 1.034 0 01-.331.455c-.03.042-.05.116.033.124.356.017.562-.024.869-.186.322-.165.538-.302.678-.285.095.012.58.153.621.186-.025.05-.062.066-.091.1-.05.04-.286.169-.389.256-.166.136-.223.198-.19.476.016.124.037.24.066.36.012.037.041.09.066.099.041 0 .083-.033.108-.062.136-.166.264-.348.401-.513a.314.314 0 01.083-.05c0 .033.008.062 0 .083-.03.203-.133.356-.257.505l-.083.103c-.107.153-.115.178-.008.331a.73.73 0 01.104.58c-.03.144-.075.36-.104.57-.26.12-.525.29-.745.44-.14.123-.165.223-.165.252.066.082.128.095.256.148.182.058.522-.012.584-.206a.577.577 0 00.041-.211c.066.012.124.012.14.066.067.207.125.347.257.484a.682.682 0 01-.099.182c-.078.128-.145.24-.256.215-.042-.004-.087-.016-.137-.016-.083 0-.165 0-.153.149.016.19.041.277 0 .471-.025.108-.058.224-.166.22-.26-.021-.43-.211-.682-.207a.981.981 0 01-.476-.083c-.133-.07-.228-.145-.29-.182a69.39 69.39 0 00-3.1.58c-.094.02-.09.082-.107.181-.05.228-.136.451-.174.679-.008.037.042.083.067.116.024-.025.062-.042.087-.075.053-.078.09-.17.153-.248.107-.116.389.008.438.165.042.096-.09.141-.082.249.008.09.14.174.14.29 0 .103-.041.17-.058.223.39.248.484.455.497.778.012.1.012.149.066.207.054.053.14.132.178.182.182.21.348.546.472.58.062.02.219.032.339.02l.025.066a.492.492 0 01-.248.244c-.286.091-.427-.335-.58-.58a2.069 2.069 0 00-.24-.318c-.124.137-.33.687-.314.948.083.351.29.7.426.951.095.158.281.212.463.282.154.054.265.083.422.037.083-.02.112-.025.15-.054l-.005-.318c.042-.58.133-1.159.17-1.655 0-.133.1-.356.269-.472a.539.539 0 00.24-.5.393.393 0 01.041-.208c.058-.116-.053-.116-.165-.132-.124-.02-.153-.066-.091-.178.116-.195.281-.36.414-.546.082-.133.124-.228.153-.307-.033-.16-.021-.4.14-.41.526-.061.745-.016 1.08.237.021.033.025.082.025.124 0 .041.095.074.273.252.137.128.27.488.038 1.043.115.07.111.178.099.302-.008.108.025.124.124.161.124.042.19.116.294.373.09.248.36.898.517 2.49-.029.502-.116.87-.215 1.28.107.765.227 1.704.323 2.991.078 1.217.099 1.842.124 2.342.215.017.281.062.327-.12l.041-.17c.041-.12.161-.078.166-.012l.132.39c.029.11.062.181.103.289.145.198.207.025.207-.12.017-.124.017-.228.017-.34.025-.144.1-.153.153-.053l.19.45c.07.158.145.2.174.104.025-.128.03-.356.025-.538-.029-.103-.075-.215-.091-.306 0-.124.1-.1.124-.062a14.441 14.441 0 01.675.881c.124.075.198-.053.165-.103-.008-.05-.07-.112-.07-.211.016-.157.165-.087.198-.03.137.137.228.315.307.46a.29.29 0 00.124.062.238.238 0 00.037-.145c-.008-.05-.066-.165-.083-.219.058-.095.174.025.211.062.042.042.083.112.137.199.074.116.198.215.471.252.005.025.017.058.017.083-.037.025-.1.054-.265.083a3.38 3.38 0 01-1.034.02 1.2 1.2 0 00-.762.166c-.165.095-.33.083-.525.074-.373-.016-.745-.016-1.126-.024-.786-.021-1.179.136-2.069.182-.29 0-.893-.15-.893-.335 0-.129.074-.236.074-.303 0-.082-.017-.103-.091-.124-.633-.111-1.258.033-1.833.141-.488.075-.745-.004-1.002-.207a1.295 1.295 0 01-.355-.376 5.057 5.057 0 00-.99-.94c-.413-.33-.939-.93-1.266-1.345-.074-.086-.202-.509-.248-.629a1.266 1.266 0 01-.058-.546c.05-.041.112-.09.157-.095.278-.008.621-.14.634-.223.029-.062-.017-.116-.07-.1a1.61 1.61 0 01-.489 0c-.083-.012-.182-.05-.22-.09.05-.063.083-.108.137-.137a1.452 1.452 0 00.646-.249.157.157 0 00-.017-.082c-.182-.009-.323-.009-.525-.058a.468.468 0 01-.199-.116.322.322 0 01.149-.124c.232-.075.401-.186.559-.331l-.004-.091a3.157 3.157 0 01-.63-.066c-.095-.05-.103-.058.005-.174.149-.038.422-.062.57-.112.112-.058.092-.153-.02-.186a3.393 3.393 0 01-.538-.058c-.112-.1-.124-.108.02-.174l.477-.1c.182-.061.153-.177 0-.223-.145-.016-.245-.05-.39-.074-.19-.095-.186-.104-.032-.166l.302-.082c.082-.021.165-.054.182-.116a.091.091 0 00-.009-.062c-.128-.038-.389-.013-.504-.05-.042-.008-.083-.054-.108-.108l.112-.062a1.72 1.72 0 00.41-.157.36.36 0 00.045-.103.269.269 0 00-.083-.042 3.53 3.53 0 01-.385-.132c-.082-.104-.078-.124.033-.17l.216-.058a1.378 1.378 0 00-.108-.215.215.215 0 00-.074-.074c-.125-.075-.303-.15-.435-.236-.248-.153-.509-.302-.703-.497a1.614 1.614 0 01-.522-.852 1.784 1.784 0 01-.004-.63c.025-.156.112-.322.195-.47.033-.055.057-.104.024-.15a3.26 3.26 0 00-.384-.414.654.654 0 00-.245-.124c-.492-.087-.794-.186-1.018-.157a.786.786 0 00-.19.285c.042.166.124.423.128.634.182.02.398.082.621.206.178.116.22.178.29.398.153.496.194 1.13.302 1.808.095.645-.244 1.18-.898 1.204-.356.017-.646-.054-.74-.294-.117-.339-.204-.625-.315-.964a7.437 7.437 0 00-1.449.513c-.434.207-.79.406-1.25.592-.872.36-1.836.58-2.701.58-.455 0-.964-.092-1.316-.232-.315-.125-.426-.253-.497-.65a3.77 3.77 0 01-.016-1.018c.041-.331.095-.563.323-1.183.099-.274.227-.402.438-.51a2.317 2.317 0 011.142-.227c.137.008.315.029.439.083.248.09.285.29.294.538 0 .145.008.29-.005.434-.012.116-.008.162-.008.207.315.046.973.029 1.283-.041.256-.054.36-.095.828-.315.322-.145.76-.472 1.27-.736zm9.906 5.532c.03.062.1.372.1.48 0 .252-.021.484-.05.877-.042.513.012 1.035-.058 1.54-.03.248-.091.633-.07.972.004.136.024.174.103.19.248.058.414.083.538.083.38 0 .629-.174.596-.385a5.172 5.172 0 01-.178-1.423l.1-.009c.14.58.26.865.301 1.167.05.273 0 .741.054.981.637.07 1.399.008 1.63-.041.058-.522.042-1.056-.186-1.254a6.44 6.44 0 00-.505-.385 2.851 2.851 0 01-.678-.753c-.273-.43-.348-.567-.588-.985-.223-.389-.372-.724-.525-.952a1.684 1.684 0 00-.22-.29 2.926 2.926 0 00-.58-.107c-.268-.029-.446-.058-.6-.227-.131-.133-.185-.24-.107-.418.042-.096-.012-.162-.082-.24-.08-.1-.058-.207.04-.282.237-.231.456-.347.766-.43l-.05-.215c-.123.016-.26.054-.508.054-.344 0-.654-.141-.778-.592-.046-.162-.248-.617-.306-.82-.042-.124.004-.277.062-.455-.108-.132-.199-.281-.29-.405-.186-.079-.41-.157-.559-.34-.062-.074-.09-.078-.144-.04-.05.036-.062.09-.133.152-.066.058-.203.062-.33.008-.125-.05-.187-.177-.183-.302.013-.165.095-.31.02-.376-.127-.137-.247-.29-.094-.397.041-.038.136-.03.194-.058a.414.414 0 00.199-.464c-.033-.136-.108-.198-.244-.21-.195-.013-.282-.113-.282-.24 0-.166.145-.237.278-.208a.421.421 0 01.173.083c.013.062.042.149.091.14.224-.024.398-.256.398-.475 0-.075-.05-.112-.195-.079-.265.042-.596.141-.923.253-.182.062-.207.207-.107.372.033.037.058.083.082.124.042.066.025.116-.04.153l-.084.062c-.099.075-.111.158-.05.27.017.04.042.07.075.099.075.066.075.124.004.207a.314.314 0 00-.066.335c.029.095.104.633.104.736-.005.278.05.555.033.815-.013.19.082.356.264.563.2.22.344.418.613.679.318.302.492.662.521 1.105.013.207.112.281.31.389.419.116.563.351.613.67.083.567-.194 1.117-.703 1.068-.261-.025-.39-.182-.39-.319 0-.145.075-.29.195-.331.02-.008.095 0 .112 0a.248.248 0 01.012.091c0 .037-.05.058-.066.132-.012.05-.012.15.037.211.054.07.15.096.249.062.115-.037.194-.136.248-.24.236-.426.116-.93-.335-1.042-.145-.042-.352-.062-.485.016-.28.174-.52.273-.757.489a.182.182 0 00-.058.136 23.143 23.143 0 00.199 2.814c0 .203.149.455.207.488.165-.12.207-.24.352-.467.07-.042.103-.017.124.045-.004.211-.046.414-.021.596.012.054.074.103.116.14.1-.09.103-.227.145-.33.111-.116.136.012.14.045-.008.137 0 .26.013.331.004.054.054.066.1.079.12-.24.272-.455.467-.588.116-.083.19-.012.124.104a2.934 2.934 0 00-.265.699.414.414 0 00.116-.012c.025-.009.062-.017.074-.083.083-.207.129-.232.224-.083.041.14.103.24.186.281.124-.033.132-.182.182-.29.132.01.14.154.207.224.045.037.422.05.492.042l-.012-.22c-.008-.438 0-.79.029-1.225.033-.455.083-.922.108-1.324.016-.33.058-.836.082-1.229zM22.792 8.4a7.541 7.541 0 00-.625-.041c-.091 0-.34 0-.348.128 0 .037.05.103.108.14.302.207 1.146.245 1.49.187a.574.574 0 00-.03-.253c-.082-.252-.393-.475-.678-.567a2.338 2.338 0 00-.919-.033l-.058-.153c.1-.447.087-.86.025-1.187a.962.962 0 00-.182-.414c-.058-.083-.124-.079-.198-.017-.05.042-.1.096-.187.207-.285.348-.273.58-.223 1.1.033.026.07.05.165.05.091 0 .133-.04.145-.165.009-.174.05-.356.075-.517.041.012.116.062.124.09.016.27-.07.551-.137.804.017.029.215.115.186.198-.024.062-.33.14-.546.157a1.092 1.092 0 00-.509-.417c-.124-.05-.26-.091-.157-.174l.166-.066c.29-.12.194-.286.182-.567-.013-.108-.054-.137-.153-.133a.795.795 0 00-.36.083c-.216.132-.381.352-.538.53-.03.029-.091.016-.141.016.083-.26.19-.546.273-.778.029-.082.066-.165.157-.145.447.104.902.017 1.217-.297.132-.141.132-.207-.037-.327a1.051 1.051 0 00-.952-.207c-.137.054-.228.132-.248.273-.013.083.401-.033.546-.02.041.003.07.04.1.061-.266.116-.572.174-.828.248-.083.021-.116 0-.129-.082a.36.36 0 01.129-.364c.194-.166.347-.36.389-.621.024-.14-.092-.352-.154-.472-.008-.033.009-.058.013-.083a1.8 1.8 0 01.525.249 1.171 1.171 0 00.815.902c.145.05.294.103.452.149.14.041.248.004.24-.15l-.009-.206c.124-.054.265-.095.298-.091.236.033.476.149.72.227.166.083.083.141-.033.125-.182-.03-.36-.083-.534-.125-.111-.024-.202.025-.219.133.074.132.414.29.538.34.182.065.869.144.86-.042a2.425 2.425 0 00-.082-.546c-.042-.154-.174-.24-.319-.278a3.724 3.724 0 00-.918-.107.84.84 0 00-.331.107l-.038-.202c-.066-.278-.198-.344-.405-.414.012-.083.012-.137.012-.224.182-.103.406-.277.493-.422-.075-.07-.207-.107-.278-.132-.281-.1-.31-.207-.5-.29a1.241 1.241 0 00-.447-.112c-.14-.004-.331.034-.373.087-.02.038 0 .096.083.153.124.096.385.166.513.257.083.046.042.066-.012.074a1.279 1.279 0 01-.505-.144c-.095-.05-.124-.091-.194-.116-.125-.042-.145-.008-.228.136-.062.104.012.158.1.207.297.166.517.26.893.302.041.042.05.112.062.195-.372-.05-.496-.054-.728-.137-.368-.198-.662-.356-1.018-.471-.066-.03-.091-.07-.017-.116.373-.224.729-.497 1.105-.704.054-.029.14-.016.207-.004.182.033.244.091.426.145.108.041.211.07.232-.03.054-.272.14-.475.22-.59.165-.253.4-.386.711-.58.116-.393.497-.795.633-.795.373 0 .745.675.82.927.05.182-.249.34-.05.34.174 0 .335.029.335.178 0 .26-.074.525-.207.715-.14.19-.29.398-.48.526l.012.066c.323.24.675.414.675.778 0 .195-.054.331-.166.426-.086.075-.157.15-.148.261.012.252.028.393.012.641-.012.166-.517.199-.588.273a2.069 2.069 0 01-.14 1.258l.103.19c.513.36.58.688.654.969-.14.137-.373.252-.455.252-.331 0-1.064-.248-1.209-.269-.058.104-.024.2.05.406.066.186.19.314.19.488 0 .083-.012.215-.248.253a1.663 1.663 0 01-1.105-.302c-.066-.038-.124-.083-.19-.112-.112-.062-.252-.017-.29.112l-.074.248c-.042.136-.112.149-.298.112-.526-.112-.77-.679-.77-1.18.025-.103.108-.062.124-.012.033.244.141.48.22.678.099.19.223.294.43.32.041 0 .1-.08.149-.166.112-.236.215-.394.182-.67a.672.672 0 00-.112-.32c-.033-.04-.087-.07-.149-.124.03-.045.075-.095.112-.082.232.082.406.082.55.004.091-.05.133-.112.195-.19a8.19 8.19 0 01.799-.162c.372 0 .703.05.98.174zM8.628 17.479c.198 0 .438.099.434.314l-.041.108a.112.112 0 01-.05-.013c-.074-.161-.194-.252-.389-.215a.835.835 0 00-.455.257c-.079.082.083.132.182.186l.207.124c0 .108-.282.894-.14.919.355.062.827-.427.876-1.118-.012-.248.129-.372.402-.463.323-.124.476-.269.422-.62-.025-.175.074-.125.17-.27l.107-.116c.017.05.054.166.041.216-.074.285-.016.509.125.765l.264.687c.063.066.12.012.183.083.227.46.484 1.146.831 1.44.286.236.588.65.857.898.157.14.265.492.463.558.14.05.137.124.116.253-.025.157.041.186.1.186.095-.012.186-.037.285-.041.215.045.165.19.008.215-.107.012-.21-.009-.318-.009a.613.613 0 00-.112.042.226.226 0 00.058.107c.174.096.298.108.467.145.033 0 .058.025.096.037-.013.03-.05.096-.083.112a.729.729 0 01-.19 0c-.154-.033-.294-.1-.44-.165-.049-.017-.082-.07-.127-.104-.038-.016-.083-.025-.125-.037 0 .05-.016.095-.012.137.033.066.103.182.074.206-.012.021-.111.083-.14.067-.124-.058-.224-.199-.34-.265-.148-.095-.285-.095-.426.004-.145.1-.273.186-.41.265-.169.111-.351.29-.554.29-.112 0-.389-.17-.513-.208-.232-.074-.306-.082-.554-.136-.207-.05-.39.029-.6.1-.257.078-.538.111-.816.16-.157.03-.339 0-.504-.008-.249-.008-.489-.029-.733-.025-.165 0-.34.03-.496.083a.855.855 0 01-.22.033.558.558 0 01-.322-.099.472.472 0 00-.352-.066c-.116.025-.344.066-.439-.02-.116-.117-.393-.348-.55-.32-.493.083-.728.365-1.208.236-.34-.086-.563-.165-.894-.057-.083.033-.298-.017-.385-.005-.124.017-.166-.008-.15-.132l.013-.066c.021-.128-.103-.224-.227-.178-.137.041-.215.182-.344.248-.236.116-.455.083-.711-.016-.174-.075-.352-.042-.518.041-.107.058-.281.31-.397.31-.041 0-.103-.066-.124-.124v-.12a.828.828 0 01.273-.252 1.552 1.552 0 01.944-.124c.149.024.31.041.45-.017.112-.05.228-.058.332-.112.186-.099.347-.186.558-.111.153-.07.236-.12.315-.236.037-.186-.03-.38.016-.563.042-.166.112-.372.166-.53.033-.082.09-.074.145-.066.149.22.33.426.24.63-.062.14.26.24.207.38-.054.107-.03.174.078.186l.083.008c.095 0 .1-.062.095-.182.004-.678-.215-1.15-.447-1.684-.095-.207-.078-.414-.004-.62l.14-.423a.794.794 0 01.427-.447c.025-.004.095.025.112.058.302.427.413.944.264 1.457a5.45 5.45 0 00-.103.48c-.008.041.004.083.012.124.03-.025.067-.05.091-.083.15-.223.303-.442.423-.682.115-.232.306-.327.546-.373.26-.054.335-.02.269.232a5.27 5.27 0 01-.137.43.857.857 0 01-.438.534c-.15.083-.286.194-.414.29-.05.066-.062.062-.009.128.05.062.125.025.187-.013.244-.177.496-.318.744-.455.092-.041.12-.008.112.1-.012.124-.029.293-.153.339-.136.045-.319.066-.439.124A.828.828 0 004.88 21c-.083.124-.083.207-.15.34-.012.028 0 .078.005.123.041-.016.083-.016.111-.033.162-.116.249-.248.41-.372.124-.095.153-.083.203.07.016.05.054.091.103.137.05-.033.104-.062.141-.112.145-.215.236-.645.426-.93.033 0 .075.024.1.036.04.095-.013.422-.005.493.005.198.067.24.249.149.14-.07.269-.145.405-.22.15-.074.27-.016.182.1-.045.07-.116.124-.157.198-.025.042-.02.112-.025.166.042 0 .1.008.14-.013.113-.029.216-.078.324-.124.144-.066.293-.045.455 0 .153.054.31.091.455.133.12.029.252-.025.36-.075a3.84 3.84 0 01.654-.252 2.11 2.11 0 00.815-.468c.054-.058.137-.087.199-.145.05-.041.09-.235.095-.298.041-.165-.025-.554.008-.728.02-.041.054-.132.083-.178l.07.02c.02.063.05.158.05.208-.013.298-.017.96-.05 1.25 0 .066-.116.173-.182.198-.521.19-1.047.39-1.572.538-.236.066-.497.029-.745.033-.199 0-.393-.029-.588-.016-.153.012-.372.153-.53.178-.43.066-.802.037-1.228.115-.393.075-.77.182-1.147.286a.697.697 0 00-.235.116c-.03.025-.038.07-.05.1.041.02.083.049.124.04.095-.008.174.021.273.009.232-.037.464-.062.704-.083a.32.32 0 01.161.066.444.444 0 00.364.075c.14-.033.265.004.39.095.214.174.268.182.516.041.19-.103.402-.103.613-.09.471.024.91.094 1.336.173a.91.91 0 00.878-.34 5.94 5.94 0 00.33-.45c.08-.104.166-.174.29-.174.265-.004.538-.066.799-.05.149.013.22.15.22.236-.01.087-.042.14-.146.137a9.13 9.13 0 01-.596-.05c-.206-.017-.372.041-.496.199-.066.074-.05.124.05.149.041.004.095.024.14.029.108.012.158.062.186.16.021.063.15.125.365.137.277.017.422.017.662-.062.099-.033.165-.149.236-.235.157-.228.264-.286.546-.228.198.037.33-.174.509-.161.327.04-.042-.617-.249-.832-.285-.211-.513-.63-.76-.94-.183-.227-.402-.314-.56-.591-.302-.5-.55-1.113-.885-1.515-.132-.136-.418-.041-.559.033a.393.393 0 00-.165.116c.405.344.422.82.281 1.171-.041.112-.083.108-.198.062a4.264 4.264 0 01-.32-.128c-.07-.037-.131-.02-.206.025-.306.186-.683.439-.745.376-.124-.124-.323-.496-.31-.686a.764.764 0 01.12-.377 3.103 3.103 0 01-.397-.257l-.005-.136c.257-.248.605-.488.874-.488zm-7.747-3.6c.033.244.137.442.373.533.34.141.786.224 1.167.228.45.012.943-.025 1.473-.124a9.6 9.6 0 002.383-.832 6.596 6.596 0 011.449-.55 3.277 3.277 0 011.6-.042c.237.054.286.054.253-.115-.016-.112-.05-.224-.066-.34-.058-.397-.041-.77-.19-1.109a.46.46 0 00-.22-.202 1.308 1.308 0 00-.38-.116 2.69 2.69 0 00-.803 0 4.03 4.03 0 00-1.208.372c-.414.203-.828.43-1.138.617a3.269 3.269 0 01-1.68.484c-.393 0-.654-.013-1.047-.054a3.74 3.74 0 01-1.544-.426c-.107-.054-.165-.037-.206.074a3.463 3.463 0 00-.207 1.597zm18.41 4.344c-.137.021-.422.058-.588.067a.786.786 0 01-.16-.021c.024-.05.04-.066.07-.079.202-.103.417-.198.566-.314.083-.062.066-.124.042-.178-.278.124-.538.178-.832.228-.02 0-.033-.021-.041-.034.227-.17.53-.306.695-.455.111-.09.029-.116-.009-.153-.24.083-.48.162-.732.232a.29.29 0 01-.116-.013c0-.05.05-.07.091-.095a3.86 3.86 0 00.704-.463l-.013-.062-.083-.009c-.194.034-.624.096-.86.12-.116 0-.095-.066-.075-.082.187-.083.331-.182.468-.327.05-.054.041-.104.025-.128-.224.103-.48.107-.63.124-.028-.038.01-.083.026-.1.182-.07.219-.128.314-.19.062-.041.195-.132.224-.182.012-.017.008-.066-.005-.083a2.897 2.897 0 01-.55.133.277.277 0 01-.1-.017c.017-.041.026-.074.05-.087.257-.132.394-.186.576-.298a.446.446 0 00.124-.161l-.017-.025c-.207.066-.418.137-.633.194-.041-.008-.062-.033-.1-.062a.252.252 0 01.075-.074 3.38 3.38 0 001.171-.675.922.922 0 00.224-.252l-.03-.05c-.413.29-.814.542-1.29.729-.095-.009-.075-.067-.042-.091.042-.042.166-.182.265-.315a3.737 3.737 0 001.084-.625c.025-.025.038-.095.021-.14-.211.095-.534.277-.815.38l-.054-.016a.564.564 0 01.066-.145c.19-.124.464-.319.679-.555.008-.029.02-.066 0-.099a3.77 3.77 0 01-.559.228c-.062-.042.013-.15.02-.174.262-.215.386-.356.514-.538.025-.041.025-.079 0-.145-.145.104-.352.166-.513.228l-.046-.013c-.008-.053 0-.041.017-.082.19-.174.352-.31.468-.51.012-.02.008-.074-.013-.111-.157.054-.277.1-.447.14a.132.132 0 01-.058-.012c.009-.054 0-.066.021-.107.116-.1.232-.236.34-.398.028-.041.024-.082.003-.111-.082.02-.231.041-.306.05-.033.008-.074-.03-.095-.067l.29-.207a.248.248 0 00.05-.078c-.038-.017-.067-.038-.092-.03-.124.017-.24.03-.364.054-.273.058-.273.096-.298.174a6.054 6.054 0 01-.302.902c-.037.083-.083.162-.165.195-.116.058-.091.12-.124.231-.05.224-.083.207-.174.427a1.2 1.2 0 01-.257.413h-.062l-.02-.31c-.025-.207-.067-.161-.1-.372-.02-.186.025-.385.05-.546.02-.187.041-.51.041-.692-.016-.012-.033-.04-.058-.057a.174.174 0 00-.058.082c-.037.141-.103.364-.124.51-.045.339.025.665 0 1.009a3.848 3.848 0 00-.041 1.068c.112-.013.103-.025.26-.087.207-.083.356-.112.567-.298.15-.129.125-.381.178-.588.07-.248.166-.34.265-.38.03-.009.058.004.087.012-.058.14-.091.215-.145.364-.05.128-.1.34.042.364l.103.017c.008.024.008.062-.012.082-.133.129-.24.282-.849.456-.07.02-.223.206-.231.277-.013.095-.013.207.008.364.062.608.364 1.18.703 1.742.286.48.497.844.807 1.159.145.132.298.231.538.12.128-.062.29-.162.331-.199.02-.025.025-.066.02-.103zm-8.276-8.755c.017.24-.029.302-.335.223-.323-.1-.472-.066-.679-.302-.124-.145-.281-.145-.413-.008-.062.074-.108.149-.207.165-.017-.033-.038-.078-.025-.116a.46.46 0 01.252-.314c.095-.05.211-.083.31-.112.286-.112.427-.281.427-.616 0-.19.058-.381.058-.58 0-.14-.05-.186-.186-.14-.236.09-.456.182-.691.281a.283.283 0 00-.166.157c-.066.124-.108.248-.166.373-.053.07-.099.037-.115.008a7.545 7.545 0 00-.365-.517c-.103-.124-.103-.166.013-.253l.385-.335c.19-.178.265-.414.285-.679v-.36c-.008-.157.025-.202.182-.182a.868.868 0 01.315.091c.174.075.347.174.521.265.091.058.157.137.166.253.004.136-.083.223-.207.173a3.807 3.807 0 00-.584-.202c-.099-.025-.198.029-.215.124-.041.227.153.24.137.302-.05.161-.31.207-.348.356-.029.136-.029.223.091.198.327-.066.646-.269.898-.372.215-.091.327-.058.356.182.116.703.223 1.308.302 1.937zm5.09-2.235c.062.017.14.054.19.1.12.277.377.587.7.753a.796.796 0 00.29.082c.028-.124.082-.33.082-.558a.739.739 0 00-.22-.538 2.152 2.152 0 00-.496-.373.211.211 0 00-.244.021c-.004.041-.004.103.02.14.08.137.27.261.352.39.03.132.021.124-.087.082a2.09 2.09 0 01-.591-.517c-.095-.107-.158-.107-.224.008a2.003 2.003 0 00-.298.89.91.91 0 00.497.952c.153.066.265.05.34-.095.078-.145.132-.27.181-.43.025-.083.025-.117-.037-.191a2.735 2.735 0 00-.248-.277.36.36 0 00-.124-.1.166.166 0 00-.034.104c.005.128.025.26.03.389 0 .033-.005.083-.025.112a.252.252 0 01-.141-.166c-.083-.306-.07-.575.087-.778zm-14.3-4.506l.24.285c.098.187.152.356.202.505.041.15.103.15.199.083a.337.337 0 00.14-.29.964.964 0 00-.054-.26c-.082-.323-.024-.596.257-.799.095-.066.165-.174.128-.29-.041-.161-.078-.314-.14-.463-.025-.066-.116-.083-.178-.05-.315.166-.687.642-.402 1.039.013.025-.004.1-.025.14-.26-.26-.773-.79-.926-.777-.042.074-.075.227-.042.538.037.302.116.612.344 1.034a.765.765 0 00.194.22c.054.049.166.103.248.103a.457.457 0 00.017-.248 9.55 9.55 0 00-.248-.758zM22.7 3.919c.219-.042.397-.104.48-.137.356-.136.591-.364.67-.753.025-.103-.037-.161-.149-.19l-.232-.062c-.227-.067-.273.029-.36.248-.066.165-.136.356-.314.496-.054.046-.24-.09-.29-.124.348-.207.575-.538.745-.935.041-.074 0-.149-.079-.174a.844.844 0 00-.355-.037 1.783 1.783 0 00-1.283.956c-.017.041 0 .136.029.149.05.02.174.008.227-.013.033-.004.05-.05.07-.082.146-.257.39-.414.671-.538.083-.042.112-.013.066.083-.054.07-.558.426-.57.475-.067.145.032.166.115.166l.153-.041a.677.677 0 00.402.513zm-7.655-.042c-.009.124-.054.195-.166.153-.232-.099-.372-.351-.633-.438-.095-.033-.153.054-.166.14-.041.265-.082.501-.082.6 0 .365.194.563.389.758.057.05.057.082-.005.111l-.798.447c-.075.05-.166.062-.248 0-.08-.07-.104-.157-.08-.244.096-.401.162-.815.266-1.208.165-.62.434-.832.885-.89.162-.025.282-.025.406-.025.132 0 .19.025.207.145.016.083.02.174.02.451zm.604 2.744c0-.302-.244-.39-.348-.646-.1-.252-.19-.252-.393-.07-.232.22-.372.41-.455.724a1.738 1.738 0 00.008.869c.02.087.07.186.166.157a.166.166 0 00.12-.165c0-.257.024-.505.153-.67a.38.38 0 01.116-.112c.04.062.024.136.024.149-.037.19-.066.384-.107.575-.025.128-.025.198.041.314.075.116.137.128.186.05.236-.377.489-.919.489-1.175zM2.73 7.457a2.317 2.317 0 00-.165-.745c-.1-.236-.249-.373-.348-.373-.091 0-.302.249-.372.451-.183.51-.083.923.21 1.411.042.062.125.178.236.062.091-.103.162-.177.249-.29a.805.805 0 00.19-.516zm11.148 7.986c-.054-.426-.373-.84-.91-1.2-.112-.046-.125.029-.125.124.054.592.124 1.187.199 1.713.02.116.074.149.182.091.161-.074.314-.153.467-.24.141-.083.228-.161.187-.488zm4.87-4.842c-.083-.207-.223-.293-.43-.31-.207-.025-.381-.054-.6-.087-.125.017-.207.116-.278.282.004.033.017.074.042.082.07.025.198.05.215.062a.41.41 0 01.124.17c-.016.058-.091.12-.186.137-.124.024-.124.124-.104.252a.728.728 0 00.162.36c.083-.05.124-.07.186-.137a.281.281 0 00.083-.24c-.017-.269.132-.463.318-.641l.042.025c-.03.153-.112.265-.129.418-.04.314-.144.58-.455.79.095.124.331.033.406-.041a.947.947 0 00.281-.439l.05-.157a.124.124 0 01.041.012c.062.116-.025.352.017.522a.389.389 0 00.153-.124c.116-.274.174-.68.062-.931zm3.898-6.372c-.054 0-.27.004-.331.017-.05.012-.075.128-.05.148.062.042.1.075.15.092.194.02.28.02.504.057a.171.171 0 01.112.063c-.021.016-.042.045-.083.053-.414.05-.538.042-.828-.153-.078-.033-.107.025-.082.1.041.14.157.256.372.343.17.074.335.165.509.161.265-.008.455-.024.674-.062.116-.016.232-.082.249-.14.02-.058 0-.187-.066-.27l-.158-.157c-.248-.26-.41-.426-.778-.389-.05.005-.124.137-.194.137zm.256 2.756c0-.153-.02-.265-.062-.402a.703.703 0 00-.612-.504c-.153-.005-.228.024-.166.165.017.05.154.195.207.31.07.141.137.286.137.41a.414.414 0 01-.037.166c-.091-.05-.141-.162-.162-.216-.041-.132-.05-.21-.09-.285-.038-.066-.084-.083-.104-.083-.058 0-.083.02-.087.1a1.188 1.188 0 00.65 1.187c.115.041.144.013.182-.09a2.483 2.483 0 00.144-.754zM2.483 5.388c-.058.219-.07.364-.062.488.004.157.082.29.227.356a2.772 2.772 0 001.378.215c.017 0 .062-.03.062-.041-.012-.096-.062-.112-.149-.137-.194-.066-.716-.207-.786-.29-.054-.074-.029-.153.058-.165a.442.442 0 01.228.037c.128.062.24.145.372.22.041.024.091.07.14 0 .038-.063.075-.117-.008-.179l-.306-.24c-.265-.21-.662-.31-1.158-.264zm9.463 3.426c-.02.045-.062.09-.107.145-.05-.05-.1-.083-.125-.137a9.943 9.943 0 01-.496-1.655c-.008-.108.033-.145.124-.14.236.024.443.132.65.24.033.024.058.094.062.144.041.468-.017.993-.108 1.399zm-10.192.952l-.033-.017c.021-.281.166-.683.112-.786a.58.58 0 00-.285.029c-.1.041-.141.14-.162.306-.025.368.033.745.112 1.076.025.124.074.136.165.05.236-.216.46-.489.638-.7.124-.161.145-.314.095-.467-.042-.129-.128-.178-.224-.178-.103 0-.14.078-.165.157-.058.203-.153.347-.253.525zm19.11-.849c.186 0 .339.037.388.054.224.083.323.182.365.26a.259.259 0 01.04.15.401.401 0 01-.367-.075c-.199-.186-.489-.265-.662-.186.012.128.136.29.24.372.347.27.653.315 1.026.228.062-.025.087-.112.083-.186-.013-.24.004-.497-.224-.704-.248-.236-.604-.227-.848-.124-.042.02-.104.05-.133.083a.212.212 0 00.091.124zM12.256 2.36c.074-.017.04.016.02.082-.041.211-.165.377-.314.526-.083.074-.1.19-.042.248.108.1.232.013.315-.066.165-.186.269-.414.364-.637.116-.278.091-.621-.041-.853-.07-.099-.178-.111-.261-.037a1.436 1.436 0 00-.505.993c0 .054.004.153.041.174.19-.083.307-.29.414-.426zm5.048 10.013c.02-.016.054 0 .066.009 0 .223.054.492.083.57a.257.257 0 00.083-.057l.062-.302c.14-.426.037-.766-.141-1.155-.033-.074-.083-.082-.157-.05-.054.025-.1.063-.054.137.041.062.037.112 0 .174-.058.112-.1.232-.161.364-.025.083-.03.15-.038.248l-.062 1.531c.025.083.075.067.104.017.033-.083.058-.161.074-.248.042-.24.112-.249.124-.489.021-.248.021-.496.013-.744zM3.285 2.917a.227.227 0 01.009-.095l.256.041c.124.025.187.009.228-.086.07-.183.033-.348-.157-.385-.29-.054-.58.041-.828.099-.161.054-.199.223-.083.34.187.177.364.355.559.512a.614.614 0 00.525.125c.083-.021.154-.075.154-.15a.207.207 0 00-.062-.148.559.559 0 00-.145-.083zm-.26 11.144c-.017.082-.054.153-.19.145a1.705 1.705 0 01-.373-.054c-.132-.038-.17-.087-.178-.137a2.261 2.261 0 01.042-.82c.016-.04.157-.123.215-.156.178.02.318.05.447.082.05.03.149.178.157.199a.83.83 0 01.025.248c-.05.207-.112.385-.145.493zm13.82 7.469c.332.124.588.161.687.14a.198.198 0 00.154-.223c-.005-.091-.05-.166-.166-.199-.252-.054-.513-.09-.753-.178-.14-.041-.248-.037-.373.058-.19.145-.372.22-.608.265a.29.29 0 00-.153.054c-.066.087-.05.149.054.207.41.037.794-.042 1.158-.124zm1.362.81c.207 0 .36-.04.5-.132a1.241 1.241 0 01.6-.265c.092-.016.183-.111.19-.186 0-.103-.082-.116-.152-.14-.199-.063-.435-.054-.637-.104-.067-.012-.162-.012-.216.03-.426.43-.509.33-.711.541-.054.07-.054.157.095.195.116.029.265.053.33.062zM11.123 6.162c0-.107.19-.273.294-.256.02.008.04.02.057.041l.042.224c.012.087.041.165.087.165.215.017.467-.132.587-.318.129-.2.22-.427.327-.642.1-.236.253-.09.199.054-.137.41-.306.828-.439 1.229-.041.149-.062.157-.207.108l-.682-.245a.352.352 0 01-.265-.36zm5.238 10.213c.112.054.104.033.253-.05a.34.34 0 00.132-.24l-.041-.898c0-.029-.042-.074-.058-.074-.124 0-.273-.025-.373.029-.19.103-.351.252-.525.389-.066.066-.004.132.095.124.083-.033.178-.075.26-.12l.158-.083a.141.141 0 01-.016.075c-.15.165-.261.364-.464.471-.054.009-.041.14.037.145a.681.681 0 00.228-.108c.124-.099.178-.16.302-.264.041.062.07.111.008.165l-.33.298c-.05.05-.013.1.045.091a.652.652 0 00.236-.09c.082-.055.153-.13.227-.208.004.009.05.054.042.058a3.715 3.715 0 01-.216.29zM5.772 5.967c-.05.5-.173 1.005-.397 1.233-.182-.348-.306-.753-.43-1.109.1-.124.223-.31.277-.455.025-.07.066-.083.128-.033.15.136.278.248.422.364zm.592 7.134a.414.414 0 01-.227.285.913.913 0 01-.39.104c-.074 0-.128-.017-.14-.083-.041-.232-.095-.447-.133-.67-.004-.054.042-.125.087-.166.145-.137.331-.174.526-.186.041 0 .178.058.199.095.04.207.062.393.078.62zm-1.808-2.678c-.265.042-.497.278-.455.373.004.207.045.405.157.583.07.104.124.129.232.058a1.986 1.986 0 00.794-.81c.05-.1-.054-.13-.153-.179-.132-.062-.273-.062-.348-.025-.074.038-.103.116-.115.178-.083.302-.1.31-.19.414a.803.803 0 01.078-.592zm1.792 11.36c.016-.034.024-.059.053-.063a.623.623 0 01.178 0c.236.066.455-.103.675-.137.05-.004.103-.012.161-.004.145.004.29.009.451-.033.066-.025.153.009.228.042.252.111.496.173.74.029a3.8 3.8 0 01.394-.236c.227-.087.248.062.256.149a.215.215 0 01-.124.128c-.786.281-1.465.285-2.346.178a1.986 1.986 0 01-.666-.054zm-4.925-8.277a.455.455 0 00.104.356l.037.037-.02.067a1.862 1.862 0 01-.406-.054c-.058-.021.103-.108.116-.207.029-.203.083-.538.083-.782 0-.042-.104-.083-.104-.124a.149.149 0 01.05-.083c.29.07.33.066.389.203.058.124.111.33.198.48.017-.009.042-.017.054-.03.013-.136.008-.335.013-.426.008-.074.04-.111.12-.111.062 0 .215.004.277.016.008.013.008.025.008.042 0 .041-.05.053-.062.058-.137.05-.145.062-.207.442l-.066.439c-.008.033-.017.1-.037.145-.038.004-.104 0-.116-.033a6.296 6.296 0 00-.34-.691l-.04-.004c-.034.09-.034.177-.055.264zm9.104 2.04a.86.86 0 000-.252c-.05-.14-.112-.277-.091-.402.062-.215.107-.438.087-.662a2.789 2.789 0 01.025-.827c.074.025.132.074.149.124.02.087.04.174.04.252.03.236.01.464-.003.691-.037.447-.075.861-.062 1.3.008.066.02.153.041.215.058.136.03.277-.078.43l-.067-.029c-.05-.186-.173-.438-.227-.637-.009-.037 0-.066.05-.075.082-.016.136-.066.14-.124zm4.303-3.29c-.182-.016-.368-.177-.356-.467-.09.124-.202.248-.302.294.009.1.253.24.422.31.096.128.166.19.29.331.075-.19.166-.352.195-.455a1.469 1.469 0 00-.145-.675c-.137-.153-.352-.28-.563-.417-.103.111.029.351.286.496a.423.423 0 00.202.538zm-12.372-.442c.128-.009.265-.03.418-.05.1-.025.21-.05.215-.174.008-.111-.124-.173-.215-.198a1.97 1.97 0 00-1.304.128 1.183 1.183 0 00-.264.19c-.1.108-.08.174-.005.232a.984.984 0 00.356.166c.021-.091.042-.24.07-.331.141-.232.539-.274.816-.282.066.013.066.095.012.112-.078.062-.236.05-.277.116 0 .07.066.095.178.087zm.885 2.4c-.004-.05.054-.112.058-.145.013-.066.013-.157.013-.228.008-.178-.03-.467-.03-.641l.096-.062c.033-.012.058.008.095.041.083.083.27.29.356.369.008 0 .02-.021.025-.025v-.133a.974.974 0 00-.042-.256c-.033-.112-.111-.19-.024-.199l.339-.025c-.033.067-.058.116-.07.216-.017.136-.042.26-.046.388.017.2.058.398.075.563 0 .013-.025.03-.05.042a.31.31 0 01-.095-.062c-.166-.166-.282-.32-.497-.522a.182.182 0 00-.029.091c.042.128.095.273.182.393.054.075.067.1-.07.15a.648.648 0 01-.281.04zm6.05.037c.195-.12.273-.521.224-.716a.257.257 0 00-.067-.136c-.062-.062-.132-.042-.165.066-.037.153-.054.318-.075.463a1.448 1.448 0 00-.438-.012c-.15.02-.439.107-.439.285 0 .29.666.224.96.05zm1.167-2.003a.331.331 0 00.083.232c.298.31.707.633.968.695.232.062.426.199.567.385l.136.186c.1.124.228.207.402.232.029.008.066 0 .1 0-.026-.104-.026-.116-.1-.19-.613-.547-1.262-.973-1.895-1.416-.062-.037-.174-.111-.261-.124zm-6.397 7.035v-.009c-.062-.26-.133-.513-.199-.765-.05-.091-.14-.025-.132.012-.066.187-.133.373-.19.567a.273.273 0 000 .174c.099.273.19.542.297.815.017.037.067.062.095.083.025-.033.063-.07.07-.103zm1.084-6.489c.016.05.041.112.05.17.004.042.004.075-.009.1-.004.012-.029.008-.054-.005-.128-.058-.273-.14-.389-.062-.04.03-.024.104.03.129l.364.149c.165.062.206.136.173.33-.029.187-.165.261-.327.307-.066.016-.136.025-.227.016-.012.058.004.124-.037.15-.03.016-.038.012-.067.024a1.597 1.597 0 01-.124-.451c0-.037.013-.041.025-.054.054.017.104.091.186.17.1.033.27.062.294.033.05-.062.07-.1.07-.124 0-.042-.057-.083-.107-.104-.128-.07-.199-.095-.331-.149-.124-.05-.145-.16-.145-.264 0-.112.058-.232.236-.29.054-.02.153-.041.207-.058a.82.82 0 00.029-.186c.029-.004.083-.013.09.008zM2.665 5c-.248 0-.406-.067-.654-.042-.178.013-.352.091-.525.157-.104.05-.083.096.008.133a.483.483 0 00.24.062c.513-.041 1.088-.1 1.601-.149.03-.041.054-.074.083-.14-.195-.129-.447-.104-.683-.174zm5.892 7.659a.523.523 0 00-.12.108.323.323 0 01-.103.074l-.07-.041.111-.27c.042-.103.083-.115.182-.049l.091.074c.075.063.174.112.265.07.087-.04.041-.165-.05-.21-.132-.083-.231-.108-.393-.207-.099-.058-.14-.145-.14-.27 0-.103.07-.227.202-.24.05-.011.112-.011.182-.011.087 0 .145-.013.2-.087.04-.054.086-.087.098-.03a.756.756 0 01-.024.406c-.03-.008-.05-.008-.075-.02-.079-.125-.182-.183-.269-.17-.083.012-.124.074-.062.14.112.116.269.178.401.253.19.103.178.248.154.352a.269.269 0 01-.278.223.527.527 0 01-.302-.095zm-.376-.38c.016.318-.24.434-.422.43-.17 0-.27-.038-.327-.207-.03-.1-.062-.402-.083-.513-.033-.042-.091-.058-.178-.083-.041-.008-.045-.042-.054-.079.062-.029.174-.062.253-.074.182-.03.182-.017.21.149.026.19.054.389.092.579.062.186.26.145.26-.012 0-.15.009-.319 0-.476-.029-.038-.082-.116-.14-.17-.07-.083-.075-.108.025-.145.231-.09.248-.149.28.157.013.116.084.294.084.443zm.215 1.63l.58-.137c.152-.041.24-.207.227-.352-.017-.111-.083-.173-.199-.198a1.572 1.572 0 00-.745.103c-.02.199.05.414.137.58zM3.074 11.85a1.03 1.03 0 00-.248.037.913.913 0 01-.364.038c-.083-.009-.215-.063-.294-.083-.087.008-.174.087-.207.21-.016.125.058.212.195.237.277.062.538.111.794.111.1 0 .112-.012.116-.095.013-.157.008-.29.008-.455zm6.621-5.917a1.676 1.676 0 01-.36-.112c-.041-.012-.07-.112-.07-.165.012-.145-.025-.29 0-.443.012-.083.058-.108.136-.091.112.025.216.05.323.083.14.057.352.446.29.583-.062.124-.174.14-.315.149zm-2.387 6.782a.414.414 0 01-.116.112c-.137.09-.385.144-.555.256-.083.058-.041-.14-.05-.215l-.086-.463a.604.604 0 00-.15-.249c-.049-.058.092-.083.162-.103l.27-.083c.098-.033.123.037.094.058-.136.1-.124.145-.107.273.02.124.02.26.024.364.021.05.05.116.087.162.083-.025.174-.087.174-.112l.02-.265c.1-.124.117-.062.133-.008.042.099.062.161.1.273zm.41-2.938a7.687 7.687 0 01-.158-.55c-.012-.075.05-.116.12-.104.248.054.492.112.74.178.083.017.083.083.03.137a1.763 1.763 0 01-.555.405c-.112.062-.116.017-.178-.066zm10.72-6.563a1.82 1.82 0 00-.285-.687c-.112-.14-.248-.153-.372-.025a.96.96 0 00-.108.125c-.124.157-.112.206.075.298.28.082.442.248.645.455zM5.289 19.291a1.159 1.159 0 00-.372.331c-.083.153-.174.298-.257.447-.029.07-.078.24-.099.352l.05.05a2.069 2.069 0 00.364-.27c.21-.207.26-.401.376-.815l.021-.05zM23.524 2.276a4.63 4.63 0 00-.405-.654c-.112-.14-.166-.153-.29-.025a1.008 1.008 0 00-.112.124c-.124.153-.198.344.004.373.174.029.41 0 .522.078.103.067.194.137.24.162zM2.544 13.394c-.032.303-.024.303-.024.514 0 .115.054.115.157.124.095.004.124-.083.145-.195l.062-.418c.017-.136.025-.215-.058-.227-.153-.021-.269.074-.281.202zM4.16 7.8a1.597 1.597 0 01-.39-.137c-.206-.107-.405-.33-.372-.537.017-.096.07-.125.153-.08.158.117.29.29.406.415a.818.818 0 01.207.339zm1.551 4.916c.004.083.075.327.1.467.012.075.029.133.136.12.14-.02.19-.082.17-.194-.017-.128-.05-.257-.075-.389-.024-.124-.078-.194-.19-.19-.116.012-.153.053-.14.186zm6.15-7.808c-.088.157-.166.314-.27.45-.078.112-.202.183-.314.278-.108.029-.112.02-.075-.087.162-.265.315-.472.489-.7.124-.066.17-.012.165.059zm8.3 4.295c0 .1-.017.19-.05.285l-.025.013c-.128-.323-.438-.844-.417-.898-.009-.037.074-.058.111-.05l.141.058c.083.19.166.372.24.592zm.902-6.857c.017.004.066.017.104.05.062.05.07.107-.013.14-.194.092-.521.265-.732.344-.042.02-.087.025-.07-.05.04-.124.537-.484.711-.484zm-7.08 8.992c-.136 0-.252.108-.252.215.004.12.157.248.293.248.125 0 .211-.082.211-.207.009-.148-.099-.256-.252-.256zM3.074 21.778c-.028 0-.082.091-.128.095-.165.013-.223.03-.223.1 0 .095.05.144.128.12.248-.075.306-.067.629-.042l.112-.132c-.038-.033-.066-.075-.112-.087a1.85 1.85 0 00-.406-.054zM17.648 9.869c-.054.033-.099.066-.082.128l.04.1c.096-.017.204-.025.303-.017.132.041.356.091.497.116.033.008.074-.03.099-.062.008-.004-.017-.03-.03-.054-.19-.19-.508-.194-.827-.207zM8.532 5.686l-.339-.15c-.02-.012-.033-.074-.012-.099.074-.111.153-.215.231-.314.042-.042.075-.037.096.016l.17.422c.032.083-.005.116-.146.125zM4.08 9.844c.083-.016.124.033.112.108-.009.041-.021.058-.087.09a1.497 1.497 0 01-.753.026c-.083-.013-.137-.03-.15-.05a.157.157 0 01.096-.066zm2.375-6.641c-.025.008-.054.029-.07.016-.22-.124-.534-.29-.733-.418-.045-.066-.016-.09.046-.082.161.053.443.136.604.198.104.05.137.145.153.286zm3.373 4.833c.024.037.05.074-.021.186-.112.174-.14.352-.215.592a.645.645 0 01-.075.14c-.025.025-.062.034-.09.05-.01-.029-.026-.066-.021-.09l.223-.73c.033-.086.1-.132.199-.148zm8.081-2.442a4.014 4.014 0 01-.869-.306c-.095-.082-.079-.078.046-.082l.815.219c.157.12.124.116.008.165zm-3.364 5.181a.277.277 0 00-.124-.153c-.042-.025-.12-.012-.166.025a.857.857 0 00-.132.116c-.062.087-.025.174.074.244.083.058.174.054.228-.025.05-.062.095-.108.12-.207zM9.09 6.778c-.029.062-.037.124-.079.17-.111.132-.235.26-.355.389-.12.053-.125-.021-.112-.08.112-.206.269-.38.414-.55.016-.016.062-.028.082-.016.021.012.033.041.05.083zM4.415 5.64c-.029.02-.467-.662-.521-.803 0-.025.07-.074.107-.103a.195.195 0 01.075.066c.14.298.385.803.364.823zM4.23 8.367l-.186-.083c-.137.03-.249.091-.402.108-.161.012-.227-.021-.29-.062.026-.05.112-.1.24-.124.075-.013.402-.042.688-.017zM21.07 4.89l.48.36c.05.033.042.1.062.14l-.107-.012c-.207-.103-.422-.186-.559-.389-.116-.17.075-.149.124-.099zm-12.157.592l-.054.083c-.02-.025-.05-.05-.062-.083-.041-.083-.041-.178-.05-.265-.024-.207-.012-.319.112-.443.05-.058.091-.025.091.03.009.26-.004.421-.037.678zM5.834 4.73c.046.016.125.509.178.761a.562.562 0 010 .186c-.02.058-.041.07-.09.02-.083-.26-.125-.525-.166-.773-.017-.074-.017-.153.078-.194zM19.87 7.72c.199.112.43.31.526.427.025.024.012.09 0 .14-.033-.012-.07-.016-.095-.037-.166-.103-.319-.22-.472-.327-.02-.016-.025-.136-.041-.161a.174.174 0 01.082-.042zM10.82 3.46c.034.021.05.042.071.07a.174.174 0 01-.07.075c-.141.054-.468.054-.604-.025a.422.422 0 01-.07-.082l.094-.054a1.29 1.29 0 01.58.02zm3.725.795c.132.207.19.405.248.629 0 .012-.008.016-.008.05-.033-.021-.05-.025-.062-.042a1.159 1.159 0 01-.331-.546c-.017-.05-.009-.091.053-.128a.224.224 0 01.1.037zM11.97 18.418c.157-.091.203-.161.343-.248.058-.033.05-.042.021-.096-.033-.062-.062-.062-.145-.04-.153.053-.215.09-.372.152-.066.025-.091.054-.02.104zM7.126 3.745c.19-.133.397-.203.608-.282.033-.008.083.005.12.038l-.075.066c-.165.116-.33.207-.488.302a.983.983 0 01-.165-.029.124.124 0 010-.095zM2.18 7.8c-.046-.223-.108-.497-.07-.695a.285.285 0 01.086-.124c.042.037.083.066.087.103.042.232-.025.497-.041.712zm10.77-4.994a3.53 3.53 0 01.56-.327 2.09 2.09 0 01-.572.608c-.012-.083-.041-.232.013-.281zm-2.648 8.644c0 .09.042.19.116.26.042-.033.075-.095.075-.124.016-.174.029-.352.029-.534.02-.07-.083-.09-.108-.016-.041.136-.107.273-.112.414zm9.087 7.158l-.765.257c.178.203.695.037.765-.257zM8.12 4.705c.012.203-.025.455-.137.641-.012.025-.041.042-.074.066-.013-.037-.05-.066-.042-.09.042-.208.095-.456.145-.663.008-.012.041-.025.058-.029zm10.717 14.632c.165 0 .323-.005.447-.042.111-.07.107-.215.145-.314l-.042-.013-.182.166a2.579 2.579 0 01-.372.074.258.258 0 00-.058.075c.02.029.041.05.066.054zm-1.531-8.202c.054-.12.103-.227.145-.34.008-.024-.03-.086-.075-.127a.323.323 0 00-.09.041 1.655 1.655 0 00-.24.364c.016.03.098.03.256.062zM4.494 7.895l.161-.414c.03-.008.054-.008.075.005.024.124.004.322-.009.4-.024.113-.066.179-.165.228a.674.674 0 01-.062-.219zm9.34 3.037c-.113 0-.2.067-.208.166 0 .083.091.161.19.161.104-.008.183-.082.19-.173 0-.1-.061-.154-.173-.154zm-.1 1.018c0-.111-.066-.186-.186-.186-.096 0-.166.062-.166.15 0 .098.104.198.207.19.091 0 .145-.067.145-.154zm-.418-1.042c0 .09-.058.144-.145.144-.116 0-.203-.07-.203-.178 0-.082.083-.165.166-.165.087-.008.182.074.182.199zm.074.413c-.099 0-.165.062-.165.145 0 .087.09.166.186.166.074 0 .145-.079.145-.166.004-.078-.07-.145-.166-.145zm-1.088 7.399c-.128 0-.24.062-.236.132.008.07.108.166.186.166.083 0 .129-.087.129-.199-.004-.082 0-.099-.079-.099zM4.415 3.062c-.062-.248-.033-.472.03-.724.103.215.11.563-.03.724zm9.31 7.25c-.066.041-.124.107-.115.136.008.05.062.095.095.145a.27.27 0 00.112-.132c.012-.03-.05-.083-.096-.15z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/embarcadero.svg b/assets/lib/simple-icons/icons/embarcadero.svg
index 7a99106b..d5a639cc 100644
--- a/assets/lib/simple-icons/icons/embarcadero.svg
+++ b/assets/lib/simple-icons/icons/embarcadero.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Embarcadero icon</title><path d="M12 0a11.963 11.963 0 0 0-8.485 3.515A11.963 11.963 0 0 0 0 12.001c0 3.313 1.344 6.311 3.515 8.484A11.96 11.96 0 0 0 12 24a11.96 11.96 0 0 0 8.485-3.515A11.968 11.968 0 0 0 24 12.001c0-3.315-1.344-6.314-3.515-8.486A11.963 11.963 0 0 0 12 0zm.052 4.401c1.233 0 2.344.222 3.332.664.988.443 1.804 1.142 2.449 2.096.58.842.956 1.818 1.128 2.93.1.65.14 1.587.122 2.811H8.764c.058 1.421.552 2.418 1.482 2.99.565.355 1.246.533 2.042.533.844 0 1.53-.217 2.057-.65.288-.234.542-.56.762-.975h3.783c-.1.84-.558 1.694-1.374 2.56-1.269 1.378-3.045 2.067-5.33 2.067-1.886 0-3.549-.58-4.99-1.743-1.442-1.162-2.162-3.053-2.162-5.672 0-2.455.65-4.337 1.951-5.646C8.286 5.056 9.975 4.4 12.052 4.4zm.001 3.055c-.95 0-1.688.27-2.211.81-.524.54-.852 1.27-.987 2.192h6.382c-.067-.983-.396-1.73-.987-2.238-.59-.51-1.323-.764-2.197-.764Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Embarcadero</title><path d="M12 0a11.963 11.963 0 0 0-8.485 3.515A11.963 11.963 0 0 0 0 12.001c0 3.313 1.344 6.311 3.515 8.484A11.96 11.96 0 0 0 12 24a11.96 11.96 0 0 0 8.485-3.515A11.968 11.968 0 0 0 24 12.001c0-3.315-1.344-6.314-3.515-8.486A11.963 11.963 0 0 0 12 0zm.052 4.401c1.233 0 2.344.222 3.332.664.988.443 1.804 1.142 2.449 2.096.58.842.956 1.818 1.128 2.93.1.65.14 1.587.122 2.811H8.764c.058 1.421.552 2.418 1.482 2.99.565.355 1.246.533 2.042.533.844 0 1.53-.217 2.057-.65.288-.234.542-.56.762-.975h3.783c-.1.84-.558 1.694-1.374 2.56-1.269 1.378-3.045 2.067-5.33 2.067-1.886 0-3.549-.58-4.99-1.743-1.442-1.162-2.162-3.053-2.162-5.672 0-2.455.65-4.337 1.951-5.646C8.286 5.056 9.975 4.4 12.052 4.4zm.001 3.055c-.95 0-1.688.27-2.211.81-.524.54-.852 1.27-.987 2.192h6.382c-.067-.983-.396-1.73-.987-2.238-.59-.51-1.323-.764-2.197-.764Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ember-dot-js.svg b/assets/lib/simple-icons/icons/ember-dot-js.svg
deleted file mode 100644
index b17d638a..00000000
--- a/assets/lib/simple-icons/icons/ember-dot-js.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Ember.js icon</title><path d="M0 0v24h24V0H0zm12.29 4.38c1.66-.03 2.83.42 3.84 1.85 2.25 5.58-6 8.4-6 8.4s-.23 1.48 2.02 1.42c2.78 0 5.7-2.15 6.81-3.06a.66.66 0 01.9.05l.84.87a.66.66 0 01.01.9c-.72.8-2.42 2.46-4.97 3.53 0 0-4.26 1.97-7.13.1a4.95 4.95 0 01-2.38-3.83s-2.08-.11-3.42-.63c-1.33-.52.01-2.1.01-2.1s.42-.65 1.2 0 2.24.36 2.24.36c.13-1.03.35-2.38.98-3.81 1.34-3 3.38-4.01 5.05-4.05zm.33 2.8c-1.1.07-2.8 1.78-2.88 4.93 0 0 .75.23 2.41-.91 1.67-1.14 2-2.97 1.11-3.81a.82.82 0 00-.64-.21Z"/></svg>
diff --git a/assets/lib/simple-icons/icons/emberdotjs.svg b/assets/lib/simple-icons/icons/emberdotjs.svg
new file mode 100644
index 00000000..1674c3c7
--- /dev/null
+++ b/assets/lib/simple-icons/icons/emberdotjs.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Ember.js</title><path d="M0 0v24h24V0H0zm12.29 4.38c1.66-.03 2.83.42 3.84 1.85 2.25 5.58-6 8.4-6 8.4s-.23 1.48 2.02 1.42c2.78 0 5.7-2.15 6.81-3.06a.66.66 0 01.9.05l.84.87a.66.66 0 01.01.9c-.72.8-2.42 2.46-4.97 3.53 0 0-4.26 1.97-7.13.1a4.95 4.95 0 01-2.38-3.83s-2.08-.11-3.42-.63c-1.33-.52.01-2.1.01-2.1s.42-.65 1.2 0 2.24.36 2.24.36c.13-1.03.35-2.38.98-3.81 1.34-3 3.38-4.01 5.05-4.05zm.33 2.8c-1.1.07-2.8 1.78-2.88 4.93 0 0 .75.23 2.41-.91 1.67-1.14 2-2.97 1.11-3.81a.82.82 0 00-.64-.21Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/emby.svg b/assets/lib/simple-icons/icons/emby.svg
index 5bc6492b..01f51ef9 100644
--- a/assets/lib/simple-icons/icons/emby.svg
+++ b/assets/lib/simple-icons/icons/emby.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Emby icon</title><path d="M11.041 0c-.007 0-1.456 1.43-3.219 3.176L4.615 6.352l.512.513.512.512-2.819 2.791L0 12.961l1.83 1.848c1.006 1.016 2.438 2.46 3.182 3.209l1.351 1.359.508-.496c.28-.273.515-.498.524-.498.008 0 1.266 1.264 2.794 2.808L12.97 24l.187-.182c.23-.225 5.007-4.95 5.717-5.656l.52-.516-.502-.513c-.276-.282-.5-.52-.496-.53.003-.009 1.264-1.26 2.802-2.783 1.538-1.522 2.8-2.776 2.803-2.785.005-.012-3.617-3.684-6.107-6.193L17.65 4.6l-.505.505c-.279.278-.517.501-.53.497-.013-.005-1.27-1.267-2.793-2.805A449.655 449.655 0 0011.041 0zM9.223 7.367c.091.038 7.951 4.608 7.957 4.627.003.013-1.781 1.056-3.965 2.32a999.898 999.898 0 01-3.996 2.307c-.019.006-.026-1.266-.026-4.629 0-3.7.007-4.634.03-4.625Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Emby</title><path d="M11.041 0c-.007 0-1.456 1.43-3.219 3.176L4.615 6.352l.512.513.512.512-2.819 2.791L0 12.961l1.83 1.848c1.006 1.016 2.438 2.46 3.182 3.209l1.351 1.359.508-.496c.28-.273.515-.498.524-.498.008 0 1.266 1.264 2.794 2.808L12.97 24l.187-.182c.23-.225 5.007-4.95 5.717-5.656l.52-.516-.502-.513c-.276-.282-.5-.52-.496-.53.003-.009 1.264-1.26 2.802-2.783 1.538-1.522 2.8-2.776 2.803-2.785.005-.012-3.617-3.684-6.107-6.193L17.65 4.6l-.505.505c-.279.278-.517.501-.53.497-.013-.005-1.27-1.267-2.793-2.805A449.655 449.655 0 0011.041 0zM9.223 7.367c.091.038 7.951 4.608 7.957 4.627.003.013-1.781 1.056-3.965 2.32a999.898 999.898 0 01-3.996 2.307c-.019.006-.026-1.266-.026-4.629 0-3.7.007-4.634.03-4.625Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/emirates.svg b/assets/lib/simple-icons/icons/emirates.svg
new file mode 100644
index 00000000..c667e779
--- /dev/null
+++ b/assets/lib/simple-icons/icons/emirates.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Emirates</title><path d="M6.247 15.56l-1.386 1.385c.945.945 1.26 1.386 1.323 1.827.063-.063 1.323-1.134 1.323-1.512 0-.567-.378-.756-1.26-1.7m-3.15-2.458h-.755s.756.441.756 1.45v3.4c0 2.205 1.826 4.284 4.031 4.284h1.827c1.134 0 1.512-.252 2.142-.882l.692-.693c.378-.44.82-.755.82-1.952v-1.134c0-.945-.568-1.386-.82-1.638l-.63-.63v2.268s.441.504.693.63c.945.756.19 2.078-.692 2.078H7.066c-1.89-.063-3.402-1.637-3.465-3.527v-1.827c0-1.827-.503-1.827-.503-1.827m5.92 2.457l-1.385 1.386c.945.945 1.26 1.386 1.323 1.827.063-.063 1.323-1.134 1.323-1.512 0-.567-.378-.82-1.26-1.7M11.853 0l-.944.945c-.378.378-.252 1.134.504 1.89v1.89c0 .188-.19.377-.19.377s-1.133-1.008-2.14-1.008H7.57c-.945 0-1.7.882-1.827.945-.504.504-.504 1.45-.126 1.89L6.688 8s-.252-1.7 0-2.835c.063-.252.378-.567.693-.567l2.457 1.89-2.835 2.96c-.126.127-.504.379-.882.379-.44 0-.63-.252-.819-.504v1.386c0 .44.63.945 1.197.945h3.78c.252 0 .567-.063.819-.315l1.26-1.26c.188-.19.251-.441.251-.756V7.874c0-1.386-1.07-2.457-1.07-2.457s.251-.189.251-.756V3.213s.441.44.504.63l.82-.82c.377-.377-.253-1.07-.505-1.385C11.853.818 11.853 0 11.853 0M7.13 9.953c.378-.19.441-.315.756-.693l2.394-2.52s1.322 1.386 1.763 2.142c.19.378.441 1.07-.692 1.07H7.13M3.915 7.056h-.692c.44.252.755 1.008.755 1.449v2.772c0 .755.567 3.464 3.024 3.464h7.118v4.536c0 .755-.252 1.196-.44 1.385l-1.072 1.008h.504l1.953-1.763c.378-.441.819-.882.819-2.268V14.74l.819-.819 1.386-1.323c0 1.134.567 1.638 1.07 1.638a1.26 1.26 0 0 0 .756-.315l1.26-1.197c.567-.567.882-2.33-.504-2.33-.882 0-1.89 1.26-1.952 1.386-.315-.19-.567-.63-.567-.63v1.07c-.126.19-.693.63-1.134.63h-1.134v-1.07c0-.504.189-1.071.44-1.323l1.072-1.008h-.504l-2.142 1.953c-.378.44-.63 1.26-.63 1.448H6.058c-1.008 0-1.638-1.007-1.638-1.826v-2.08c0-1.7-.44-1.889-.504-1.889m16.315 6.047c-.189 0-.378-.063-.63-.252-.251-.189-.692-.819-.692-.819.126-.125.504-.251.818-.251.252 0 .504.063.567.189.441.566.378 1.133-.063 1.133M16.893 0L14.75 1.953c-.126.126-.63.882-.63 1.764v5.606c0 .378-.252.945-.44 1.134l-1.072 1.008h.504l2.016-1.827c.252-.252.756-.882.756-1.953V2.331c0-.82.378-1.26.567-1.45L17.397 0h-.504m.315 14.362v2.205l.756.819c.63.63.567 1.827-1.323 3.653a3.78 3.78 0 0 1-2.583 1.197h-3.401L12.672 24h1.386c1.386 0 2.646-.567 3.465-1.449.756-.819 1.197-1.89 1.134-3.023V16.63c0-1.008-.63-1.575-.756-1.7-.126 0-.693-.568-.693-.568Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/emlakjet.svg b/assets/lib/simple-icons/icons/emlakjet.svg
index e15b651a..56b195b9 100644
--- a/assets/lib/simple-icons/icons/emlakjet.svg
+++ b/assets/lib/simple-icons/icons/emlakjet.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Emlakjet icon</title><path d="M15.65 16.105v-.24a3.543 3.543 0 00-1.267-2.471c-.724-.663-1.69-.965-2.655-.904-1.87.12-3.378 1.747-3.378 3.615 0 .784.12 1.567.422 2.471H4.55V6.946l7.42-5.123 7.482 5.122v11.692h-4.223c.18-.663.422-1.688.422-2.532m5.068-10.244L12.452.136c-.301-.181-.663-.181-.905 0L3.222 5.86c-.242.12-.362.361-.362.663V19.48c0 .482.362.844.844.844H9.92a.824.824 0 00.844-.844c0-.06 0-.18-.06-.24l-.06-.182c-.302-.723-.664-1.627-.664-2.53v-.182c-.06-.542.12-1.084.482-1.446a2.095 2.095 0 011.388-.723c.543-.06 1.026.12 1.448.482.422.362.664.844.724 1.386v.18c.06 1.206-.724 2.954-.845 3.135l-1.146 2.17-.18-.362c-.122-.181-.302-.362-.483-.422-.182-.06-.423-.06-.604.06-.18.12-.362.301-.422.482s-.06.422.06.603l.905 1.687c.121.241.423.422.724.422.302 0 .604-.18.724-.422l1.81-3.375h5.732a.824.824 0 00.844-.843V6.524c-.06-.302-.18-.543-.422-.663"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Emlakjet</title><path d="M15.65 16.105v-.24a3.543 3.543 0 00-1.267-2.471c-.724-.663-1.69-.965-2.655-.904-1.87.12-3.378 1.747-3.378 3.615 0 .784.12 1.567.422 2.471H4.55V6.946l7.42-5.123 7.482 5.122v11.692h-4.223c.18-.663.422-1.688.422-2.532m5.068-10.244L12.452.136c-.301-.181-.663-.181-.905 0L3.222 5.86c-.242.12-.362.361-.362.663V19.48c0 .482.362.844.844.844H9.92a.824.824 0 00.844-.844c0-.06 0-.18-.06-.24l-.06-.182c-.302-.723-.664-1.627-.664-2.53v-.182c-.06-.542.12-1.084.482-1.446a2.095 2.095 0 011.388-.723c.543-.06 1.026.12 1.448.482.422.362.664.844.724 1.386v.18c.06 1.206-.724 2.954-.845 3.135l-1.146 2.17-.18-.362c-.122-.181-.302-.362-.483-.422-.182-.06-.423-.06-.604.06-.18.12-.362.301-.422.482s-.06.422.06.603l.905 1.687c.121.241.423.422.724.422.302 0 .604-.18.724-.422l1.81-3.375h5.732a.824.824 0 00.844-.843V6.524c-.06-.302-.18-.543-.422-.663"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/empirekred.svg b/assets/lib/simple-icons/icons/empirekred.svg
index c4425c54..5bbcb062 100644
--- a/assets/lib/simple-icons/icons/empirekred.svg
+++ b/assets/lib/simple-icons/icons/empirekred.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Empire Kred icon</title><path d="M23.996 4.685c0-2.08-1.674-3.774-3.727-3.774H3.72C1.665.91-.005 2.604-.005 4.69v7.536c0 .336.045.667.135.997.03.134.07.264.12.39.25.623.653 1.17 1.173 1.593.51.524 1.17 1.095 1.965 1.71l.105.074.435.33.52.397c1.19.912 3.205 2.453 6.165 4.71.483.366 1.038.676 1.383.676.343 0 .902-.31 1.383-.676 2.96-2.257 4.972-3.798 6.164-4.71l.972-.74h-.002l.11-.085c.798-.612 1.463-1.19 1.968-1.71.514-.418.908-.96 1.15-1.576.166-.44.252-.906.254-1.376v-7.15h-.003l.003-.003v-.39zm-4.14 6.242c-.093-.017-.188-.032-.283-.045-.105 0-.226-.015-.33-.015-.278-.006-.556.05-.81.164-.214.1-.4.248-.54.436-.135.196-.23.415-.286.646-.06.254-.09.524-.09.81v2.88H12.49L8.756 10.22 7.2 11.795v3.975H4.48V3.4h2.716V8.53l4.83-5.127h3.396l-4.83 4.885 5.166 7.293V9.402h1.662v1.182h.023c.084-.195.195-.38.33-.547.144-.168.3-.312.483-.43.18-.106.375-.21.58-.27.205-.06.42-.09.64-.09.114 0 .24.03.38.06v1.62z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Empire Kred</title><path d="M24 4.678c0-2.08-1.674-3.774-3.727-3.774H3.725C1.67.904 0 2.597 0 4.684v7.535c0 .336.045.667.135.997.03.134.07.264.12.39.25.623.653 1.17 1.173 1.593.51.524 1.17 1.095 1.965 1.71l.105.074.435.33.52.397c1.19.912 3.205 2.453 6.165 4.71.483.366 1.038.676 1.383.676.342 0 .901-.31 1.382-.676 2.96-2.257 4.972-3.798 6.164-4.71l.972-.74h-.002l.11-.085c.798-.612 1.463-1.19 1.968-1.71.514-.418.908-.96 1.15-1.576.166-.44.252-.906.254-1.376v-7.15h-.003l.003-.003v-.39zm-4.14 6.242a6.42 6.42 0 00-.283-.045c-.105 0-.226-.015-.33-.015a1.883 1.883 0 00-.81.164c-.214.1-.4.248-.54.436-.135.196-.23.415-.286.646-.06.254-.09.524-.09.81v2.88h-5.027l-3.733-5.583-1.556 1.575v3.975h-2.72V3.393H7.2v5.13l4.83-5.127h3.395l-4.83 4.885 5.166 7.293V9.395h1.662v1.182h.023c.084-.195.195-.38.33-.547.144-.168.3-.312.483-.43.18-.106.375-.21.58-.27.205-.06.42-.09.64-.09.114 0 .24.03.38.06z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/enpass.svg b/assets/lib/simple-icons/icons/enpass.svg
new file mode 100644
index 00000000..d9358655
--- /dev/null
+++ b/assets/lib/simple-icons/icons/enpass.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Enpass</title><path d="M12.023 1.3366c2.6912 0 5.3825-.008 8.0745.004a3.8428 3.8428 0 0 1 2.9636 1.3079A3.7223 3.7223 0 0 1 24 4.9469a9.6627 9.6627 0 0 1-.2783 2.319c-.3571 2.0539-.7288 4.1038-1.0939 6.155-.3147 1.7665-.6162 3.5355-.9474 5.3006-.4644 2.038-2.1287 3.5843-4.1953 3.8978a6.3255 6.3255 0 0 1-.7428.0444c-3.1458.003-6.2916.003-9.4375 0-2.4536-.0049-4.551-1.7673-4.9784-4.1834A3553.0608 3553.0608 0 0 0 .4209 7.9092C.2949 7.2115.1559 6.5178.057 5.8148c-.3576-2.05 1.0018-4.0057 3.048-4.3848a5.003 5.003 0 0 1 .9713-.0888c2.6489-.0075 5.2978-.009 7.9467-.0046zM9.8874 18.0225c-.0302.6861.5343 1.2506 1.2204 1.2204h1.7472c.7367.071 1.3552-.548 1.2834-1.2847 0-1.3775 0-2.7556-.0067-4.133a.385.385 0 0 1 .218-.385c1.7016-1.0082 2.525-3.025 2.0155-4.936-.66-2.3766-3.103-3.7856-5.4906-3.1664a4.2099 4.2099 0 0 0-3.0345 2.5005c-.7947 2.0883-.0042 4.4472 1.8883 5.635a.2895.2895 0 0 1 .1636.287c-.0073 1.4795-.0046 2.7056-.0046 4.2622Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/envato.svg b/assets/lib/simple-icons/icons/envato.svg
index 3b6e4ed4..3b04590d 100644
--- a/assets/lib/simple-icons/icons/envato.svg
+++ b/assets/lib/simple-icons/icons/envato.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Envato icon</title><path d="M19.4.197c-.74-.371-2.721-.247-5.195.62-4.207 2.968-7.674 7.175-8.044 14.109 0 .241-.493 0-.617-.126-1.114-2.104-1.61-4.455-.62-7.921.247-.247-.37-.617-.37-.494-.249.123-1.114 1.113-1.734 2.103-2.847 4.947-.99 11.511 3.961 14.231 4.947 2.721 11.382.988 14.231-4.086 3.342-5.814.369-17.322-1.612-18.436"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Envato</title><path d="M20.058 1.043C16.744-2.841 6.018 4.682 6.104 14.38a.459.459 0 0 1-.45.451.459.459 0 0 1-.388-.221 10.387 10.387 0 0 1-.412-7.634.42.42 0 0 0-.712-.412 10.284 10.284 0 0 0-2.784 7.033A10.284 10.284 0 0 0 11.76 23.999c14.635-.332 11.257-19.491 8.298-22.956z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/epel.svg b/assets/lib/simple-icons/icons/epel.svg
index 65f71e6f..006a19dc 100644
--- a/assets/lib/simple-icons/icons/epel.svg
+++ b/assets/lib/simple-icons/icons/epel.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>EPEL icon</title><path d="M.702 2.361c-1.188.11-.88.154 1.98.286 5.677.242 9.043 1.144 11.353 2.993 1.232 1.012 2.187 3.146 2.187 3.146s-3.639.836-7.797 1.65c-4.159.814-7.46 1.54-7.327 1.584.352.11 5.214-.484 10.319-1.276l4.87-.734c.078-.012.036.394.036.514 0 1.1-1.122 2.948-2.794 4.599-2.75 2.684-6.623 4.686-11.573 5.962-1.364.352-2.2.638-1.892.638 1.188.044 5.742-1.298 7.81-2.266 2.685-1.276 4.401-2.508 6.491-4.664 1.48-1.842 2.994-2.796 3.056-5.017l3.06-.506c1.629-.264 3.103-.55 3.28-.616.241-.088.285-.352.197-1.012-.154-1.21-1.1-2.156-3.014-3.037-2.904-1.342-5.88-1.603-7.442-.68-.173.101-.376.417-.534.486a1079.7 1079.7 0 00-2.365-.862C7.567 2.515 3.848 2.075.702 2.361zm19.032 2.773c1.628.484 4.18 2.014 3.792 2.09l-3.066.601-3.386.772c-.644-1.435-1.491-2.232-2.628-3.305l.133-.327c.322-.796 2.536-.602 5.155.169z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>EPEL</title><path d="M.702 2.361c-1.188.11-.88.154 1.98.286 5.677.242 9.043 1.144 11.353 2.993 1.232 1.012 2.187 3.146 2.187 3.146s-3.639.836-7.797 1.65c-4.159.814-7.46 1.54-7.327 1.584.352.11 5.214-.484 10.319-1.276l4.87-.734c.078-.012.036.394.036.514 0 1.1-1.122 2.948-2.794 4.599-2.75 2.684-6.623 4.686-11.573 5.962-1.364.352-2.2.638-1.892.638 1.188.044 5.742-1.298 7.81-2.266 2.685-1.276 4.401-2.508 6.491-4.664 1.48-1.842 2.994-2.796 3.056-5.017l3.06-.506c1.629-.264 3.103-.55 3.28-.616.241-.088.285-.352.197-1.012-.154-1.21-1.1-2.156-3.014-3.037-2.904-1.342-5.88-1.603-7.442-.68-.173.101-.376.417-.534.486a1079.7 1079.7 0 00-2.365-.862C7.567 2.515 3.848 2.075.702 2.361zm19.032 2.773c1.628.484 4.18 2.014 3.792 2.09l-3.066.601-3.386.772c-.644-1.435-1.491-2.232-2.628-3.305l.133-.327c.322-.796 2.536-.602 5.155.169z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/epicgames.svg b/assets/lib/simple-icons/icons/epicgames.svg
index fff100e6..d66f8700 100644
--- a/assets/lib/simple-icons/icons/epicgames.svg
+++ b/assets/lib/simple-icons/icons/epicgames.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Epic Games icon</title><path d="M3.538 0C2.166 0 1.66.506 1.66 1.878v16.565c0 .155.007.299.019.431.034.302.037.593.317.922.026.038.31.246.31.246.151.076.257.128.43.2l8.334 3.492c.431.197.613.276.926.265H12c.317.011.499-.068.93-.265l8.333-3.492c.174-.072.276-.124.431-.2 0 0 .284-.212.31-.246.28-.329.283-.62.317-.922.012-.132.02-.276.02-.43V1.877C22.34.506 21.833 0 20.461 0zm13.356 3.11h.68c1.134 0 1.686.552 1.686 1.697v1.879h-1.372V4.883c0-.367-.17-.537-.525-.537h-.234c-.367 0-.537.17-.537.537v5.813c0 .366.17.536.537.536h.26c.352 0 .522-.17.522-.536v-2.08h1.376v2.144c0 1.145-.564 1.708-1.701 1.708h-.692c-1.141 0-1.7-.567-1.7-1.708V4.819c0-1.142.559-1.709 1.7-1.709zm-12.188.076H7.82v1.277H6.104v2.604h1.652v1.274H6.104v2.774h1.739v1.274H4.706zm3.817 0h2.196c1.137 0 1.7.567 1.7 1.712v2.445c0 1.145-.563 1.709-1.7 1.709h-.794v3.337H8.523zm4.528 0h1.398v9.203h-1.398zm-3.13 1.24v3.39h.579c.351 0 .521-.17.521-.54v-2.31c0-.37-.17-.54-.521-.54zM6.066 14.58h.208l.046.007h.075l.038.012h.038l.038.011.037.008.034.007.034.008.034.007.038.012.03.007.03.012.038.011.03.015.039.015.034.015.03.02.038.014.026.02.038.018.03.02.034.018.03.023.03.019.03.022.031.023.03.026.03.023-.022.03-.027.027-.022.03-.027.03-.022.027-.023.026-.027.03-.022.03-.023.027-.026.03-.023.03-.027.03-.022.027-.023.03-.026.03-.023.031-.026.026-.023.03-.03-.022-.03-.026-.03-.02-.035-.022-.026-.019-.034-.019-.03-.019-.035-.019-.03-.015-.03-.015-.03-.011-.034-.012-.038-.01-.03-.008-.038-.008-.038-.008-.038-.003h-.041l-.046-.008h-.075l-.038.004h-.038l-.038.011-.034.008-.034.011-.037.011-.03.015-.038.016-.027.018-.03.02-.03.018-.027.023-.026.023-.027.022-.022.027-.03.026-.02.03-.018.027-.023.03-.015.034-.02.03-.018.034-.011.034-.016.034-.01.038-.005.038-.011.034-.008.042v.037l-.007.038v.09l.004.039.003.034.004.037.008.038.011.03.004.038.011.03.012.03.015.039.019.037.015.03.019.03.022.031.023.03.019.027.03.026.023.027.026.022.03.023.03.023.031.019.03.018.034.016.038.015.03.015.038.011.038.012.038.007.037.008.038.004.046.003h.124l.046-.007h.037l.038-.012.038-.007.038-.012.034-.007.034-.015.03-.015.038-.016.023-.015.03-.019v-.347h-.552v-.56h1.247v1.248l-.026.022-.03.023-.027.019-.03.023-.03.018-.03.023-.03.019-.031.019-.038.019-.034.019-.03.019-.038.015-.03.019-.038.015-.038.015-.038.015-.034.015-.034.011-.034.012-.037.011-.034.011-.038.012-.034.007-.038.008-.038.008-.038.007-.037.004-.038.004-.038.004-.045.003-.038.004-.042.004h-.196l-.042-.008h-.038l-.037-.007h-.038l-.038-.012-.038-.007-.038-.008-.037-.007-.03-.012-.038-.007-.038-.012-.034-.015-.034-.011-.038-.015-.034-.015-.038-.015-.03-.016-.038-.018-.026-.02-.038-.018-.027-.02-.03-.018-.03-.023-.03-.023-.034-.022-.023-.023-.03-.023-.027-.026-.026-.023-.027-.026-.022-.027-.027-.026-.022-.03-.023-.027-.019-.03-.023-.03-.019-.03-.018-.03-.02-.035-.018-.03-.015-.034-.015-.034-.016-.034-.015-.034-.011-.03-.015-.034-.008-.034-.011-.034-.008-.038-.011-.034-.008-.038-.003-.034-.008-.038-.004-.034-.003-.038-.004-.037-.004-.038v-.208l.008-.038v-.041l.01-.038v-.038l.012-.038.012-.037.007-.038.011-.034.012-.038.011-.034.015-.038.015-.034.016-.034.015-.034.015-.034.019-.034.019-.03.018-.03.02-.03.018-.03.023-.031.023-.03.022-.03.027-.027.022-.026.023-.027.03-.026.023-.027.03-.023.027-.026.03-.023.03-.022.03-.02.03-.022.03-.019.031-.019.034-.019.038-.019.03-.018.038-.016.034-.015.038-.019.03-.01.038-.012.034-.015.034-.008.034-.011.038-.008.034-.011.037-.008h.038l.038-.011h.038l.038-.008h.037zm11.989.007h.207l.046.008h.075l.038.011h.045l.038.012.034.007.038.008.038.007.034.008.038.011.037.012.03.007.038.015.038.012.03.015.038.015.038.015.034.02.027.014.037.02.034.018.03.019.035.023.03.018.03.023.03.023.03.022-.022.03-.019.031-.023.03-.022.03-.023.034-.019.03-.023.03-.022.031-.02.03-.022.03-.023.03-.022.031-.02.034-.022.03-.026.03-.02.03-.022.031-.03-.023-.034-.019-.03-.018-.03-.023-.035-.015-.03-.02-.038-.014-.026-.015-.038-.016-.03-.015-.03-.011-.034-.015-.038-.011-.038-.012-.038-.011-.041-.008-.038-.007-.038-.008-.038-.004-.037-.004-.034-.003h-.084l-.041.007-.038.008-.038.007-.03.016-.026.015-.034.03-.023.034-.015.034v.094l.019.042.015.023.026.026.038.02.03.018.038.015.038.015.049.015.03.008.03.011.038.008.03.011.038.008.042.011.041.011.042.012.042.007.037.012.042.011.038.008.037.011.038.011.038.012.038.011.034.011.038.012.037.015.038.019.038.015.038.019.038.019.03.019.03.018.034.023.027.02.034.026.026.026.03.03.027.027.019.03.026.038.019.026.015.038.019.026.011.038.012.03.007.038.008.038.007.038.004.038.004.037v.095l-.004.041-.004.038-.003.042-.008.038-.011.037-.008.038-.011.038-.015.034-.015.03-.016.034-.018.03-.023.03-.02.03-.018.031-.026.027-.023.026-.027.023-.03.026-.026.023-.03.023-.03.018-.031.023-.038.019-.03.015-.038.02-.038.014-.037.015-.038.012-.038.011-.03.011-.038.008-.038.008-.03.007-.038.008h-.038l-.037.007h-.038l-.038.008h-.28l-.037-.004-.038-.004-.042-.003-.038-.008-.037-.004-.038-.007-.038-.008-.042-.011-.037-.008-.038-.011-.038-.008-.038-.011-.037-.012-.038-.015-.034-.011-.038-.011-.038-.016-.03-.015-.038-.015-.03-.019-.038-.015-.034-.019-.026-.019-.038-.019-.027-.018-.034-.02-.03-.022-.03-.023-.03-.022-.03-.023-.027-.023-.03-.026.022-.03.027-.027.023-.03.026-.03.023-.027.022-.03.027-.03.023-.027.026-.03.023-.026.026-.03.023-.03.022-.027.027-.03.023-.03.026-.027.027-.03.026.022.038.023.026.023.038.022.03.02.034.022.03.019.035.015.03.019.034.015.038.015.03.015.038.011.03.016.038.01.037.012.038.012.038.007.038.008.038.007h.041l.038.012h.208l.038-.008.037-.008.03-.007.03-.011.027-.016.034-.022.02-.027.018-.03.011-.038v-.087l-.015-.037-.022-.03-.023-.023-.034-.023-.027-.015-.037-.015-.038-.015-.045-.02-.027-.007-.03-.008-.038-.01-.03-.008-.038-.012-.038-.007-.041-.012-.038-.007-.042-.012-.037-.007-.038-.012-.038-.007-.038-.012-.038-.01-.037-.008-.034-.012-.034-.011-.034-.012-.038-.015-.042-.015-.038-.015-.037-.015-.038-.019-.038-.019-.026-.019-.038-.019-.027-.022-.034-.02-.022-.022-.027-.026-.03-.027-.023-.026-.022-.027-.02-.026-.018-.03-.02-.034-.014-.027-.012-.03-.011-.034-.011-.03-.008-.038-.007-.034v-.038l-.008-.038v-.162l.004-.038.004-.038.007-.03.008-.038.011-.03.008-.038.015-.03.015-.038.015-.03.019-.038.019-.03.026-.03.02-.03.03-.03.026-.027.023-.03.034-.027.022-.019.034-.023.03-.022.03-.02.038-.018.03-.015.039-.019.03-.015.038-.012.037-.015.038-.011.027-.008.037-.007.03-.008.038-.007.038-.008.038-.004.038-.004.038-.003zm-9.237.027h.707l.015.034.015.034.015.034.011.038.015.034.015.034.016.034.015.034.011.034.019.037.015.034.015.035.008.034.015.034.019.034.015.037.015.034.011.034.015.034.02.034.01.034.016.038.011.038.015.03.02.038.014.03.015.038.012.038.011.03.019.038.015.03.015.038.011.03.016.038.019.038.015.034.011.034.011.034.015.034.02.034.014.037.016.035.01.034.016.034.015.034.015.034.015.037.012.034.015.034.019.034.015.034.015.034.008.038.015.034.019.034.015.034.011.034.015.034.015.038.02.038.01.03.016.038.011.03.015.038.019.038.015.03.011.038.016.03.011.038.019.03.015.038.011.038.015.03.016.038.018.03.016.038.01.037.012.03.015.038.02.03h-.783l-.02-.033-.01-.034-.016-.034-.015-.038-.011-.034-.015-.034-.015-.034-.012-.034-.015-.034-.015-.034-.011-.034-.015-.038-.015-.034-.012-.034-.015-.034H8.617l-.015.038-.011.03-.015.038-.019.037-.008.03-.015.039-.015.03-.011.038-.015.03-.015.038-.012.03-.015.038-.015.037-.015.03-.011.038h-.775l.015-.037.015-.034.015-.034.012-.038.01-.034.02-.034.015-.034.015-.034.011-.034.015-.038.02-.034.014-.034.012-.034.011-.034.015-.034.02-.038.014-.034.015-.034.012-.034.015-.034.015-.034.015-.038.015-.038.012-.03.015-.038.019-.03.015-.038.011-.037.011-.03.015-.038.02-.03.014-.038.016-.03.01-.038.016-.038.019-.03.011-.038.015-.03.012-.038.015-.038.019-.03.015-.038.011-.03.015-.038.012-.03.019-.038.015-.038.015-.034.011-.034.015-.034.02-.034.014-.034.008-.038.015-.034.015-.034.019-.034.015-.034.011-.034.016-.038.015-.037.015-.03.015-.038.011-.03.015-.038.015-.038.02-.03.014-.038.012-.03.011-.038.015-.03.02-.038.014-.038.012-.03.015-.038.015-.03.019-.038.011-.038.011-.03.016-.038zm2.192.019h.775l.022.03.02.034.022.03.019.034.019.03.019.034.018.03.023.035.019.03.019.03.019.034.019.03.026.034.015.03.02.035.022.03.023.03.015.034.022.03.02.034.014.03.027.035.019.03.019.034.019.03.018.03.023.034.019.03.019.035.019.03.019.034.022.03.02.034.018.03.023-.03.015-.038.023-.026.022-.038.02-.026.014-.038.027-.027.019-.037.015-.027.023-.03.022-.038.02-.026.018-.038.019-.027.023-.037.018-.027.02-.038.018-.026.02-.03.022-.038.019-.027.019-.037.022-.027.02-.038.018-.026.023-.03.019-.038.022-.027.02-.037.018-.027.02-.038.022-.026.019-.038.019-.026h.782v2.789h-.734v-1.64l-.018.026-.023.038-.019.026-.023.03-.019.038-.022.027-.02.03-.022.038-.019.026-.019.03-.026.03-.019.039-.023.026-.019.03-.018.038-.023.026-.019.03-.023.038-.019.027-.022.03-.02.038-.018.026-.023.03-.019.038-.022.027-.023.03-.019.03-.019.038-.023.027-.022.03-.015.038-.027.026-.019.03-.022.038-.02.027h-.014l-.023-.034-.019-.03-.023-.035-.019-.03-.022-.034-.02-.03-.022-.034-.019-.03-.022-.034-.02-.03-.026-.035-.015-.03-.023-.034-.022-.03-.02-.034-.022-.03-.019-.038-.022-.03-.02-.034-.022-.03-.019-.035-.023-.03-.018-.034-.023-.03-.019-.034-.023-.03-.019-.034-.022-.03-.02-.035-.022-.03-.019-.034-.026-.03-.015-.034-.023-.03v1.644h-.725v-2.76zm3.47 0h2.199v.63h-1.47v.447h1.322v.593H15.21v.48h1.489v.631h-2.215v-2.759zm-5.318.854l-.015.038-.012.03-.015.038-.015.037-.011.034-.015.034-.016.038-.015.038-.011.03-.015.038-.015.03-.012.038-.015.038-.015.03-.011.038-.015.03-.015.038-.016.038-.01.03-.016.038-.015.038-.011.03-.016.038h.643l-.015-.038-.012-.034-.015-.038-.015-.034-.011-.034-.015-.034-.015-.038-.012-.034-.015-.034-.015-.034-.011-.034-.015-.038-.012-.034-.015-.034-.015-.034-.011-.034-.015-.037-.015-.038-.012-.03-.015-.038-.015-.038-.011-.034zm-1.15 5.223h8.013l-4.09 1.35z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Epic Games</title><path d="M3.537 0C2.165 0 1.66.506 1.66 1.879V18.44a4.262 4.262 0 00.02.433c.031.3.037.59.316.92.027.033.311.245.311.245.153.075.258.13.43.2l8.335 3.491c.433.199.614.276.928.27h.002c.314.006.495-.071.928-.27l8.335-3.492c.172-.07.277-.124.43-.2 0 0 .284-.211.311-.243.28-.33.285-.621.316-.92a4.261 4.261 0 00.02-.434V1.879c0-1.373-.506-1.88-1.878-1.88zm13.366 3.11h.68c1.138 0 1.688.553 1.688 1.696v1.88h-1.374v-1.8c0-.369-.17-.54-.523-.54h-.235c-.367 0-.537.17-.537.539v5.81c0 .369.17.54.537.54h.262c.353 0 .523-.171.523-.54V8.619h1.373v2.143c0 1.144-.562 1.71-1.7 1.71h-.694c-1.138 0-1.7-.566-1.7-1.71V4.82c0-1.144.562-1.709 1.7-1.709zm-12.186.08h3.114v1.274H6.117v2.603h1.648v1.275H6.117v2.774h1.74v1.275h-3.14zm3.816 0h2.198c1.138 0 1.7.564 1.7 1.708v2.445c0 1.144-.562 1.71-1.7 1.71h-.799v3.338h-1.4zm4.53 0h1.4v9.201h-1.4zm-3.13 1.235v3.392h.575c.354 0 .523-.171.523-.54V4.965c0-.368-.17-.54-.523-.54zm-3.74 10.147a1.708 1.708 0 01.591.108 1.745 1.745 0 01.49.299l-.452.546a1.247 1.247 0 00-.308-.195.91.91 0 00-.363-.068.658.658 0 00-.28.06.703.703 0 00-.224.163.783.783 0 00-.151.243.799.799 0 00-.056.299v.008a.852.852 0 00.056.31.7.7 0 00.157.245.736.736 0 00.238.16.774.774 0 00.303.058.79.79 0 00.445-.116v-.339h-.548v-.565H7.37v1.255a2.019 2.019 0 01-.524.307 1.789 1.789 0 01-.683.123 1.642 1.642 0 01-.602-.107 1.46 1.46 0 01-.478-.3 1.371 1.371 0 01-.318-.455 1.438 1.438 0 01-.115-.58v-.008a1.426 1.426 0 01.113-.57 1.449 1.449 0 01.312-.46 1.418 1.418 0 01.474-.309 1.58 1.58 0 01.598-.111 1.708 1.708 0 01.045 0zm11.963.008a2.006 2.006 0 01.612.094 1.61 1.61 0 01.507.277l-.386.546a1.562 1.562 0 00-.39-.205 1.178 1.178 0 00-.388-.07.347.347 0 00-.208.052.154.154 0 00-.07.127v.008a.158.158 0 00.022.084.198.198 0 00.076.066.831.831 0 00.147.06c.062.02.14.04.236.061a3.389 3.389 0 01.43.122 1.292 1.292 0 01.328.17.678.678 0 01.207.24.739.739 0 01.071.337v.008a.865.865 0 01-.081.382.82.82 0 01-.229.285 1.032 1.032 0 01-.353.18 1.606 1.606 0 01-.46.061 2.16 2.16 0 01-.71-.116 1.718 1.718 0 01-.593-.346l.43-.514c.277.223.578.335.9.335a.457.457 0 00.236-.05.157.157 0 00.082-.142v-.008a.15.15 0 00-.02-.077.204.204 0 00-.073-.066.753.753 0 00-.143-.062 2.45 2.45 0 00-.233-.062 5.036 5.036 0 01-.413-.113 1.26 1.26 0 01-.331-.16.72.72 0 01-.222-.243.73.73 0 01-.082-.36v-.008a.863.863 0 01.074-.359.794.794 0 01.214-.283 1.007 1.007 0 01.34-.185 1.423 1.423 0 01.448-.066 2.006 2.006 0 01.025 0zm-9.358.025h.742l1.183 2.81h-.825l-.203-.499H8.623l-.198.498h-.81zm2.197.02h.814l.663 1.08.663-1.08h.814v2.79h-.766v-1.602l-.711 1.091h-.016l-.707-1.083v1.593h-.754zm3.469 0h2.235v.658h-1.473v.422h1.334v.61h-1.334v.442h1.493v.658h-2.255zm-5.3.897l-.315.793h.624zm-1.145 5.19h8.014l-4.09 1.348z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/epson.svg b/assets/lib/simple-icons/icons/epson.svg
index 81477ef1..e400ea5b 100644
--- a/assets/lib/simple-icons/icons/epson.svg
+++ b/assets/lib/simple-icons/icons/epson.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" role="img"><title>Epson icon</title><path d="M16.616 13.915c-1.029 0-1.428-.952-1.428-1.915 0-.975.398-1.927 1.428-1.927 1.03 0 1.429.952 1.429 1.927 0 .963-.399 1.915-1.429 1.915m0-4.805c-1.627 0-2.567 1.218-2.567 2.89s.94 2.89 2.567 2.89c1.628 0 2.568-1.218 2.568-2.89s-.94-2.89-2.568-2.89zM0 9.266h4.085v.974H1.141v1.207h2.745v.952H1.141v1.351h2.944v.975H0V9.266zM6.73 12.11H5.701v-1.871H6.73c.709 0 1.185.311 1.185.941 0 .621-.476.93-1.185.93m-2.168 2.614h1.14v-1.639H6.73c1.384 0 2.314-.687 2.314-1.904 0-1.229-.931-1.915-2.314-1.915H4.562v5.458zM20.768 9.266h-1.162v5.458h1.118v-2.215c0-.598-.022-1.14-.044-1.605.133.267.531 1.085.708 1.396l1.45 2.425H24V9.266h-1.106v2.158c0 .599.022 1.196.044 1.672-.133-.276-.531-1.096-.72-1.406l-1.45-2.424zM10.34 12.919c0 .73.608 1.019 1.251 1.019.421 0 1.118-.122 1.118-.687 0-.598-.842-.709-1.649-.919-.853-.232-1.672-.543-1.672-1.561 0-1.13 1.063-1.661 2.059-1.661 1.152 0 2.204.498 2.204 1.771h-1.13c-.044-.664-.554-.83-1.129-.83-.388 0-.875.154-.875.619 0 .421.277.487 1.661.842.398.11 1.66.354 1.66 1.595 0 1.018-.797 1.771-2.292 1.771-1.217 0-2.357-.598-2.347-1.959h1.141z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Epson</title><path d="M16.616 13.915c-1.029 0-1.428-.952-1.428-1.915 0-.975.398-1.927 1.428-1.927 1.03 0 1.429.952 1.429 1.927 0 .963-.399 1.915-1.429 1.915m0-4.805c-1.627 0-2.567 1.218-2.567 2.89s.94 2.89 2.567 2.89c1.628 0 2.568-1.218 2.568-2.89s-.94-2.89-2.568-2.89zM0 9.266h4.085v.974H1.141v1.207h2.745v.952H1.141v1.351h2.944v.975H0V9.266zM6.73 12.11H5.701v-1.871H6.73c.709 0 1.185.311 1.185.941 0 .621-.476.93-1.185.93m-2.168 2.614h1.14v-1.639H6.73c1.384 0 2.314-.687 2.314-1.904 0-1.229-.931-1.915-2.314-1.915H4.562v5.458zM20.768 9.266h-1.162v5.458h1.118v-2.215c0-.598-.022-1.14-.044-1.605.133.267.531 1.085.708 1.396l1.45 2.425H24V9.266h-1.106v2.158c0 .599.022 1.196.044 1.672-.133-.276-.531-1.096-.72-1.406l-1.45-2.424zM10.34 12.919c0 .73.608 1.019 1.251 1.019.421 0 1.118-.122 1.118-.687 0-.598-.842-.709-1.649-.919-.853-.232-1.672-.543-1.672-1.561 0-1.13 1.063-1.661 2.059-1.661 1.152 0 2.204.498 2.204 1.771h-1.13c-.044-.664-.554-.83-1.129-.83-.388 0-.875.154-.875.619 0 .421.277.487 1.661.842.398.11 1.66.354 1.66 1.595 0 1.018-.797 1.771-2.292 1.771-1.217 0-2.357-.598-2.347-1.959h1.141z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/equinixmetal.svg b/assets/lib/simple-icons/icons/equinixmetal.svg
new file mode 100644
index 00000000..0dc9b6bd
--- /dev/null
+++ b/assets/lib/simple-icons/icons/equinixmetal.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Equinix Metal</title><path d="M22.399 7.789v7.005l-1.599.56V7.231L16 5.557v11.472l-1.601.557V4.996L12 4.16l-2.4.836v12.59l-1.599-.557V5.557L3.2 7.232v8.121l-1.599-.56V7.79L0 8.349v7.582l4.801 1.676v-9.24l1.6-.558v10.356L11.2 19.84V6.133l.8-.28.8.28v13.708l4.801-1.676V7.809l1.599.558v9.24L24 15.93V8.349z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/erlang.svg b/assets/lib/simple-icons/icons/erlang.svg
new file mode 100644
index 00000000..2f00e5f9
--- /dev/null
+++ b/assets/lib/simple-icons/icons/erlang.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Erlang</title><path d="M8.859 7.889c.154-1.863 1.623-3.115 3.344-3.119 1.734.004 2.986 1.256 3.029 3.119zm12.11 11.707c.802-.86 1.52-1.872 2.172-3.03l-3.616-1.807c-1.27 2.064-3.127 3.965-5.694 3.977-3.738-.012-5.206-3.208-5.198-7.322h13.966c.019-.464.019-.68 0-.904.091-2.447-.558-4.504-1.737-6.106l-.007.005H24v15.186h-3.039zm-17.206-.001C1.901 17.62.811 14.894.813 11.64c-.002-2.877.902-5.35 2.456-7.232H0v15.187h3.761Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/esbuild.svg b/assets/lib/simple-icons/icons/esbuild.svg
new file mode 100644
index 00000000..06c1acc7
--- /dev/null
+++ b/assets/lib/simple-icons/icons/esbuild.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>esbuild</title><path d="M12 0A12 12 0 000 12a12 12 0 0012 12 12 12 0 0012-12A12 12 0 0012 0zM6.718 5.282L13.436 12l-6.718 6.718-2.036-2.036L9.364 12 4.682 7.318zm7.2 0L20.636 12l-6.718 6.718-2.036-2.036L16.564 12l-4.682-4.682z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/esea.svg b/assets/lib/simple-icons/icons/esea.svg
index 71775eee..577ff803 100644
--- a/assets/lib/simple-icons/icons/esea.svg
+++ b/assets/lib/simple-icons/icons/esea.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 24 24"><title>ESEA icon</title><path d="M14.054 3L8.95 9.746 0 9.883l5.832 4.47-4.79 6.879 8.491-4.088 5.711 4.323v-7.114L24 10.029 6.745 14.05a12.575 12.575 0 0 0 1.589-1.955 5.475 5.475 0 0 0 .617-1.786l5.593-.151z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ESEA</title><path d="M14.054 2.767L8.95 9.511 0 9.65l5.832 4.47L1.042 21l8.491-4.088 5.711 4.322V14.12L24 9.796l-17.255 4.02a12.575 12.575 0 001.589-1.955 5.475 5.475 0 00.617-1.786l5.593-.15z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/eslgaming.svg b/assets/lib/simple-icons/icons/eslgaming.svg
index 13ad7053..0d068b80 100644
--- a/assets/lib/simple-icons/icons/eslgaming.svg
+++ b/assets/lib/simple-icons/icons/eslgaming.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ESLGaming icon</title><path d="M12 0C5.373 0 0 5.373 0 12c0 6.628 5.373 12 12 12s12-5.372 12-12c0-6.627-5.373-12-12-12zm.455 2.163a9.8 9.8 0 0 1 5.789 2.222L4.384 18.244a9.862 9.862 0 0 1-1.06-1.582zm7.191 3.632a9.802 9.802 0 0 1 2.192 5.806l-14.45 9.1a9.834 9.834 0 0 1-1.592-1.055zm1.979 8.292c-.888 4.45-5.619 8.892-11.9 7.494Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ESLGaming</title><path d="M12 0C5.373 0 0 5.373 0 12c0 6.628 5.373 12 12 12s12-5.372 12-12c0-6.627-5.373-12-12-12zm.455 2.163a9.8 9.8 0 0 1 5.789 2.222L4.384 18.244a9.862 9.862 0 0 1-1.06-1.582zm7.191 3.632a9.802 9.802 0 0 1 2.192 5.806l-14.45 9.1a9.834 9.834 0 0 1-1.592-1.055zm1.979 8.292c-.888 4.45-5.619 8.892-11.9 7.494Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/eslint.svg b/assets/lib/simple-icons/icons/eslint.svg
index bd643258..b0e0304a 100644
--- a/assets/lib/simple-icons/icons/eslint.svg
+++ b/assets/lib/simple-icons/icons/eslint.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ESLint icon</title><path d="M7.257 9.132L11.816 6.5a.369.369 0 0 1 .368 0l4.559 2.632a.369.369 0 0 1 .184.32v5.263a.37.37 0 0 1-.184.319l-4.559 2.632a.369.369 0 0 1-.368 0l-4.559-2.632a.369.369 0 0 1-.184-.32V9.452a.37.37 0 0 1 .184-.32M23.852 11.53l-5.446-9.475c-.198-.343-.564-.596-.96-.596H6.555c-.396 0-.762.253-.96.596L.149 11.509a1.127 1.127 0 0 0 0 1.117l5.447 9.398c.197.342.563.517.959.517h10.893c.395 0 .76-.17.959-.512l5.446-9.413a1.069 1.069 0 0 0 0-1.086m-4.51 4.556a.4.4 0 0 1-.204.338L12.2 20.426a.395.395 0 0 1-.392 0l-6.943-4.002a.4.4 0 0 1-.205-.338V8.08c0-.14.083-.269.204-.338L11.8 3.74c.12-.07.272-.07.392 0l6.943 4.003a.4.4 0 0 1 .206.338z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ESLint</title><path d="M7.257 9.132L11.816 6.5a.369.369 0 0 1 .368 0l4.559 2.632a.369.369 0 0 1 .184.32v5.263a.37.37 0 0 1-.184.319l-4.559 2.632a.369.369 0 0 1-.368 0l-4.559-2.632a.369.369 0 0 1-.184-.32V9.452a.37.37 0 0 1 .184-.32M23.852 11.53l-5.446-9.475c-.198-.343-.564-.596-.96-.596H6.555c-.396 0-.762.253-.96.596L.149 11.509a1.127 1.127 0 0 0 0 1.117l5.447 9.398c.197.342.563.517.959.517h10.893c.395 0 .76-.17.959-.512l5.446-9.413a1.069 1.069 0 0 0 0-1.086m-4.51 4.556a.4.4 0 0 1-.204.338L12.2 20.426a.395.395 0 0 1-.392 0l-6.943-4.002a.4.4 0 0 1-.205-.338V8.08c0-.14.083-.269.204-.338L11.8 3.74c.12-.07.272-.07.392 0l6.943 4.003a.4.4 0 0 1 .206.338z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/esphome.svg b/assets/lib/simple-icons/icons/esphome.svg
new file mode 100644
index 00000000..e8c79f1e
--- /dev/null
+++ b/assets/lib/simple-icons/icons/esphome.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ESPHome</title><path d="M7.253 2.755c-.676 0-1.231.555-1.231 1.232v.976h-.083a.722.722 0 00-.717.716v11.682H.71v-.57h3.544a.355.355 0 00.354-.354v-1.279a.355.355 0 00-.354-.355H.709v-.565h3.544a.355.355 0 00.354-.355v-1.278a.355.355 0 00-.354-.355H.709v-.569h3.544a.355.355 0 00.354-.355V10.05a.355.355 0 00-.354-.354H.709V6.113a.355.355 0 00-.355-.355.355.355 0 00-.354.355v3.937a.355.355 0 00.354.355h3.544v.566H.354a.355.355 0 00-.354.355v1.279a.355.355 0 00.354.354h3.544v.57H.354a.355.355 0 00-.354.354v1.275a.355.355 0 00.354.355h3.544v.57H.354a.355.355 0 00-.354.354v1.278a.355.355 0 00.354.355h4.868v.086c0 .389.323.716.717.716h.083v1.14c0 .677.555 1.233 1.231 1.233.677 0 1.233-.556 1.233-1.232v-1.14h.477v1.137c0 .676.556 1.232 1.232 1.232.677 0 1.232-.556 1.232-1.232v-1.138h.481v1.138c0 .676.556 1.232 1.232 1.232.676 0 1.233-.556 1.233-1.232v-1.138h.48v1.138c0 .676.556 1.232 1.232 1.232.677 0 1.232-.556 1.232-1.232v-1.138h.481v1.138c0 .676.556 1.232 1.232 1.232.676 0 1.233-.556 1.233-1.232v-1.138h.477v1.138c0 .676.555 1.232 1.231 1.232.677 0 1.233-.556 1.233-1.232v-1.138h.079c.39 0 .717-.323.717-.716V5.679a.723.723 0 00-.714-.716h-.082v-.979c0-.676-.556-1.231-1.232-1.23h-.001c-.676.001-1.231.557-1.231 1.233v.976h-.477v-.98c0-.675-.557-1.23-1.233-1.228h-.001c-.676 0-1.23.556-1.23 1.232v.976h-.482v-.976c0-.677-.555-1.232-1.232-1.232-.676 0-1.232.555-1.232 1.232v.976h-.48v-.976c0-.677-.557-1.232-1.233-1.232s-1.232.555-1.232 1.232v.976h-.48v-.976c0-.677-.556-1.232-1.233-1.232-.676 0-1.232.555-1.232 1.232v.976h-.477v-.976c0-.677-.556-1.232-1.233-1.232zm0 .715a.51.51 0 01.517.517v.976H6.737v-.976a.51.51 0 01.516-.517zm2.942 0a.51.51 0 01.517.517v.976H9.679v-.976a.51.51 0 01.516-.517zm2.945 0a.51.51 0 01.516.517v.976h-1.032v-.976a.51.51 0 01.516-.517zm2.945 0a.51.51 0 01.517.517v.976h-1.033v-.976a.51.51 0 01.516-.517zm2.945 0h.001a.507.507 0 01.515.513v.98h-1.032v-.976a.51.51 0 01.516-.517zm2.942.001h.001a.507.507 0 01.515.513v.979h-1.032v-.976a.51.51 0 01.516-.516zM6.018 5.758h17.186v12.319H6.018zm8.63 2.777a.322.322 0 00-.234.095l-3.776 3.78a.322.322 0 00.228.55h.62v2.225a.322.322 0 00.323.322h5.67a.322.322 0 00.322-.322V12.96h.621a.322.322 0 00.228-.55l-.856-.859v-1.533a.322.322 0 00-.322-.323h-.591a.322.322 0 00-.323.323v.3L14.87 8.63a.322.322 0 00-.221-.095zm-7.91 10.337H7.77v1.14a.51.51 0 01-.517.517.51.51 0 01-.516-.516zm2.94 0h1.034v1.138a.51.51 0 01-.517.516.51.51 0 01-.516-.516zm2.946 0h1.032v1.138a.51.51 0 01-.516.516.51.51 0 01-.516-.516zm2.945 0h1.033v1.138a.51.51 0 01-.517.516.51.51 0 01-.516-.516zm2.945 0h1.032v1.138a.51.51 0 01-.516.516.51.51 0 01-.516-.516zm2.941 0h1.033v1.138a.51.51 0 01-.517.516.51.51 0 01-.516-.516z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/espressif.svg b/assets/lib/simple-icons/icons/espressif.svg
new file mode 100644
index 00000000..36c82bcc
--- /dev/null
+++ b/assets/lib/simple-icons/icons/espressif.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Espressif</title><path d="M12.926 19.324a7.6 7.6 0 00-2.983-6.754 7.44 7.44 0 00-3.828-1.554.697.697 0 01-.606-.731.674.674 0 01.743-.617 8.97 8.97 0 018 9.805 7.828 7.828 0 01-.298 1.542l1.989.56a11.039 11.039 0 001.714-.651 12.159 12.159 0 00.217-2.343A12.57 12.57 0 007.212 6.171a5.53 5.53 0 00-2 0 4.354 4.354 0 00-2.16 1.337 4.274 4.274 0 001.909 6.856 9.896 9.896 0 001.074.195 4.011 4.011 0 013.337 3.954 3.965 3.965 0 01-.64 2.16l1.371.88a10.182 10.182 0 002.057.342 7.52 7.52 0 00.754-2.628m.16 4.73A13.073 13.073 0 01.001 10.983 12.982 12.982 0 013.83 1.737l.743.697a12.067 12.067 0 000 17.141 12.067 12.067 0 0017.141 0l.697.697a12.97 12.97 0 01-9.336 3.726M24 10.993A10.993 10.993 0 0012.949 0c-.389 0-.766 0-1.143.057l-.252.732a18.912 18.912 0 0111.588 11.576l.731-.263c0-.366.069-.732.069-1.143m-1.269 5.165A17.53 17.53 0 007.818 1.27a11.119 11.119 0 00-2.457 1.77v1.635A13.919 13.919 0 0119.268 18.57h1.634a11.713 11.713 0 001.771-2.446M7.92 17.884a1.691 1.691 0 11-1.69-1.691 1.691 1.691 0 011.69 1.691"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/etcd.svg b/assets/lib/simple-icons/icons/etcd.svg
new file mode 100644
index 00000000..631736d8
--- /dev/null
+++ b/assets/lib/simple-icons/icons/etcd.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>etcd</title><path d="M10.985 10.715A1.565 1.565 0 1 1 9.42 9.151a1.566 1.566 0 0 1 1.565 1.564zm2.023 0a1.565 1.565 0 1 0 1.565-1.564 1.564 1.564 0 0 0-1.565 1.564zm10.653 1.698a4.295 4.295 0 0 1-.346.013 4.517 4.517 0 0 1-1.986-.462 18.448 18.448 0 0 0 .267-3.515 18.184 18.184 0 0 0-2.274-2.695 4.519 4.519 0 0 1 1.603-1.717l.294-.182-.23-.26a11.977 11.977 0 0 0-4.182-3.05l-.319-.138-.08.336a4.506 4.506 0 0 1-1.135 2.058 18.19 18.19 0 0 0-3.277-1.35 18.126 18.126 0 0 0-3.272 1.348A4.495 4.495 0 0 1 7.594.745L7.512.408l-.317.139a12.091 12.091 0 0 0-4.182 3.05l-.23.259.294.182a4.512 4.512 0 0 1 1.599 1.708 18.322 18.322 0 0 0-2.27 2.685 18.435 18.435 0 0 0 .26 3.538 4.505 4.505 0 0 1-1.975.458 4.224 4.224 0 0 1-.346-.013L0 12.386l.032.344a11.904 11.904 0 0 0 1.609 4.924l.175.298.263-.223a4.502 4.502 0 0 1 2.132-.998 18.29 18.29 0 0 0 1.824 2.971 18.473 18.473 0 0 0 3.457.85 4.493 4.493 0 0 1-.287 2.36l-.132.319.338.075a12.048 12.048 0 0 0 2.59.286l2.59-.286.338-.075-.131-.32a4.487 4.487 0 0 1-.287-2.361 18.476 18.476 0 0 0 3.443-.848 18.208 18.208 0 0 0 1.826-2.974 4.51 4.51 0 0 1 2.143.999l.263.223.175-.296a11.877 11.877 0 0 0 1.607-4.924l.032-.343zm-7.958 4.209a13.981 13.981 0 0 1-7.416 0 14.189 14.189 0 0 1-2.256-7.013 14.118 14.118 0 0 1 2.687-2.558 14.333 14.333 0 0 1 3.279-1.784 14.377 14.377 0 0 1 3.27 1.779 14.226 14.226 0 0 1 2.7 2.576 14.293 14.293 0 0 1-.675 3.652 14.365 14.365 0 0 1-1.59 3.348z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ethereum.svg b/assets/lib/simple-icons/icons/ethereum.svg
index 32bc66ae..fc2c96d6 100644
--- a/assets/lib/simple-icons/icons/ethereum.svg
+++ b/assets/lib/simple-icons/icons/ethereum.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Ethereum icon</title><path d="M11.944 17.97L4.58 13.62 11.943 24l7.37-10.38-7.372 4.35h.003zM12.056 0L4.69 12.223l7.365 4.354 7.365-4.35L12.056 0z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Ethereum</title><path d="M11.944 17.97L4.58 13.62 11.943 24l7.37-10.38-7.372 4.35h.003zM12.056 0L4.69 12.223l7.365 4.354 7.365-4.35L12.056 0z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ethiopianairlines.svg b/assets/lib/simple-icons/icons/ethiopianairlines.svg
new file mode 100644
index 00000000..5445b132
--- /dev/null
+++ b/assets/lib/simple-icons/icons/ethiopianairlines.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Ethiopian Airlines</title><path d="M18.308 11.603c2.39-1.456 4.239-2.53 4.966-4.355 1.544-4.17.363-5.865-1.104-4.564C20.293 4.506 11.478 13.754.195 20.257c-.172.098-.2.322.558.091 4.48-1.572 14.23-6.705 17.555-8.745zm1.823-.333c.942-.586 1.976-.237.316 2.466-1.126 1.662-1.905 2.63-4.92 3.544-2.075.785-9.768 3.024-15.157 3.675-.401.033-.524-.114-.128-.246 5.135-1.306 17.984-8.21 19.889-9.44zm-8.977 10.47c2.204-.072 3.862.242 5.725-1.73 1.95-2.02 1.72-3.07.544-2.743-1.745.524-8.111 2.69-15.622 3.735-.338.046-.256.226.14.25 5.018.474 6.911.51 9.213.488Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/etihadairways.svg b/assets/lib/simple-icons/icons/etihadairways.svg
new file mode 100644
index 00000000..8664bf61
--- /dev/null
+++ b/assets/lib/simple-icons/icons/etihadairways.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Etihad Airways</title><path d="M16.07 7.833s-.194.44-.533.66l.002.024c.007.067.046.092.084.117.046.03.091.06.096.168.005.08 0 1.734 0 1.734l-.43.45-.432-.45c0-.026-.006-1.66 0-1.736.005-.107.048-.136.094-.166.038-.025.078-.05.086-.12v-.033c-.307-.214-.533-.646-.533-.646v2.922l.517.51-.43.431.698.696.693-.696-.431-.431.52-.551zm.52 0v3.422h.424s-.008-2.39 0-2.469c.005-.104.06-.134.117-.164.048-.025.097-.05.107-.123v-.033c0-.04-.029-.054-.066-.07a1.165 1.165 0 0 1-.236-.17c-.219-.188-.271-.276-.272-.278zm-6.219.016s-.273.36-.648.636l.002.014v.023c.01.07.059.096.107.122.057.03.127.057.127.162v2.449h2.72v.05a.363.363 0 0 0-.003.067c0 .194.069.328.191.377a.32.32 0 0 0 .15.035c.068 0 .132-.02.194-.06l.047-.03-.043-.035c-.08-.06-.107-.237-.106-.37v-.034h1.014V9.003s-.135.301-.623.654c0 0 .016.098.102.145.126.07.117.136.117.136v.903h-.606v-.09c-.001-.228-.07-.758-.681-.758-.177.005-.37.01-.563.01-.362 0-.552-.04-.598-.127l-.021-.037-.033.023c-.066.043-.106.124-.106.223.002.146.082.307.227.318.09.004.221.006.353.006.236 0 .47-.004.471-.004.505.004.514.216.518.319v.117h-2.31zm2.76.416l-.32.322.32.32.322-.32.32.32.323-.322-.03-.025-.293-.295-.32.32-.03-.025zm-6.37.716v1.229c.717 0 1.433 0 2.15-.002.065.001.154.02.155.156v.983c0 .008-.002.21-.212.21-.338 0-.315-.17-.317-.17l.002-.552H6.762v.42h1.394v.34s-.044.36.705.36c.61 0 .63-.38.63-.384l.001-1.406c0-.08-.022-.34-.271-.344H7.096v-.154c0-.035.031-.047.056-.063.125-.076.145-.144.106-.17-.251-.143-.496-.453-.496-.453zm8.528 2.426l.287.291-.287.29-.29-.29zm1.045 1.713l-.422.442.469.496.484.488h-.818l-.447.469.095.066.106-.057a.134.134 0 0 1 .031-.01.771.771 0 0 1 .076-.001l1.399.002.964 1.03s-.015.018-.1.018h-.036v.104h1.092zm2.57 0v.086s.112.074.116.074v.317h2.552c.516 0 .894.069 1.123.203.365.213.543.49.543.846 0 .178-.046.34-.14.484a1.105 1.105 0 0 1-.426.363c-.247.128-.625.194-1.121.194h-1.33v-1.87h-.729v2.145l-.004.031a.283.283 0 0 1-.02.022l-.097.06v.088h2.184c.42 0 .749-.023.98-.07.317-.067.598-.183.836-.344.243-.163.418-.35.518-.56a1.242 1.242 0 0 0 .056-.877c-.115-.365-.38-.664-.785-.89-.365-.204-.883-.302-1.584-.302zm-14.81.002l-.444.557.09.031.014.004.137-.07a.208.208 0 0 1 .117-.038h1.758v2.356l-.008.033a.065.065 0 0 1-.022.018l-.1.066v.086h.981v-.088l-.101-.062-.024-.022-.002-.027v-2.36h1.56c.06.007.068.02.068.022v.084h.088l.483-.59zm4.806 0v.088l.098.064c.023.016.035.029.035.041v2.643l-.006.033a.315.315 0 0 1-.027.022l-.1.064v.088h.975v-.088l-.09-.062c-.012-.009-.018-.014-.021-.014h-.002v-2.682l.002-.027.023-.021.088-.06v-.089zm1.332 0v.088l.096.064c.007.006.018.01.026.014v2.672l-.006.035a.066.066 0 0 1-.018.018l-.098.066v.086h.983v-.088l-.104-.064c-.016-.009-.022-.014-.025-.014v-2.68l.002-.029c0-.001.008-.008.023-.016l.094-.056.01-.006v-.09zm.854 1.65l.105.034.137-.078a.22.22 0 0 1 .06-.03.169.169 0 0 1 .057-.008h2.051v.942l.733-.787v-1.557c0-.011.015-.021.015-.021l.106-.055v-.09h-.983v.088l.1.064c.029.018.031.032.031.041v.893H11.53zm-8.66-1.646c-.31 0-.553.01-.72.03a2.366 2.366 0 0 0-.893.292c-.329.186-.564.424-.7.705-.076.16-.114.337-.113.53 0 .49.264.882.785 1.164.235.129.5.218.787.265.215.035.51.053.877.053h2.03l.484-.588h-.041l-.108.004-.126.072c-.035.021-.056.028-.06.03l-2.18.005c-.499 0-.877-.063-1.126-.19-.376-.196-.56-.475-.56-.852 0-.17.048-.33.144-.477a1.26 1.26 0 0 1 .85-.54c.102-.018.2-.02.265-.02h1.125c.068-.003.057.012.06.019l-.013.078h.092l.483-.58zm13.289.553l-2.371 2.478h1.092v-.103h-.04c-.018 0-.033-.004-.048-.006a.141.141 0 0 1-.041-.012l1.832-1.906zm-14.576.58l-.32.476h2.867c.053.006.072.02.074.03l-.012.084h.098l.472-.59Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/etsy.svg b/assets/lib/simple-icons/icons/etsy.svg
index 6f860fd3..ef519cca 100644
--- a/assets/lib/simple-icons/icons/etsy.svg
+++ b/assets/lib/simple-icons/icons/etsy.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Etsy icon</title><path d="M8.564 2.445c0-.325.033-.52.59-.52h7.465c1.3 0 2.02 1.11 2.54 3.193l.42 1.666h1.27c.23-4.728.43-6.784.43-6.784s-3.196.36-5.09.36H6.64L1.526.196v1.37l1.725.326c1.21.24 1.5.496 1.6 1.606 0 0 .11 3.27.11 8.64 0 5.385-.09 8.61-.09 8.61 0 .973-.39 1.333-1.59 1.573l-1.722.33V24l5.13-.165h8.55c1.935 0 6.39.165 6.39.165.105-1.17.75-6.48.855-7.064h-1.2L20 19.846c-1.005 2.28-2.476 2.445-4.11 2.445h-4.906c-1.63 0-2.415-.64-2.415-2.05V12.8s3.62 0 4.79.096c.912.064 1.463.325 1.76 1.598l.39 1.695h1.41l-.09-4.278.192-4.305H15.63l-.45 1.89c-.283 1.244-.48 1.47-1.754 1.6-1.666.17-4.815.14-4.815.14V2.45h-.05z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Etsy</title><path d="M8.559 2.445c0-.325.033-.52.59-.52h7.465c1.3 0 2.02 1.11 2.54 3.193l.42 1.666h1.27c.23-4.728.43-6.784.43-6.784s-3.196.36-5.09.36H6.635L1.521.196v1.37l1.725.326c1.21.24 1.5.496 1.6 1.606 0 0 .11 3.27.11 8.64 0 5.385-.09 8.61-.09 8.61 0 .973-.39 1.333-1.59 1.573l-1.722.33V24l5.13-.165h8.55c1.935 0 6.39.165 6.39.165.105-1.17.75-6.48.855-7.064h-1.2l-1.284 2.91c-1.005 2.28-2.476 2.445-4.11 2.445h-4.906c-1.63 0-2.415-.64-2.415-2.05V12.8s3.62 0 4.79.096c.912.064 1.463.325 1.76 1.598l.39 1.695h1.41l-.09-4.278.192-4.305h-1.391l-.45 1.89c-.283 1.244-.48 1.47-1.754 1.6-1.666.17-4.815.14-4.815.14V2.45h-.05z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/eventbrite.svg b/assets/lib/simple-icons/icons/eventbrite.svg
index 19a5cc9d..3a205458 100644
--- a/assets/lib/simple-icons/icons/eventbrite.svg
+++ b/assets/lib/simple-icons/icons/eventbrite.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Eventbrite icon</title><path d="M10.5 5.8c2.7-.6 5.3.5 6.8 2.5L5.6 11c.4-2.5 2.3-4.6 4.9-5.2zm6.9 9.8c-.9 1.3-2.3 2.3-3.9 2.6-2.7.6-5.3-.5-6.8-2.6L18.4 13l1.9-.4 3.7-.8c0-.8-.1-1.6-.3-2.3C22.2 3 15.8-.9 9.3.6S-1.2 8.4.3 14.7 8.2 25 14.7 23.5c3.8-.9 6.8-3.4 8.2-6.6.1-.1-5.5-1.3-5.5-1.3z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Eventbrite</title><path d="M10.542 5.81c2.653-.6 5.3.487 6.775 2.54L5.591 11c.405-2.479 2.298-4.591 4.951-5.19zm6.84 9.746a6.47 6.47 0 0 1-3.919 2.634c-2.67.604-5.335-.501-6.804-2.582l11.763-2.657 1.915-.433L24 11.691a11.57 11.57 0 0 0-.305-2.333C22.205 3.04 15.76-.9 9.303.558 2.846 2.017-1.18 8.322.31 14.642c1.491 6.319 7.935 10.259 14.392 8.8 3.805-.86 6.765-3.402 8.25-6.638z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/eventstore.svg b/assets/lib/simple-icons/icons/eventstore.svg
index 64a4fd5f..c09f2597 100644
--- a/assets/lib/simple-icons/icons/eventstore.svg
+++ b/assets/lib/simple-icons/icons/eventstore.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Event Store icon</title><path d="M5.785 3.414c.428-.251.874-.473 1.339-.666.981-.421 1.995-.659 3.036-.765l1.127 1.274-.525 1.319c-1.02.195-1.979.57-2.879 1.11l-.195.12-.178-1.737-1.725-.66v.005zM5.295 3.724l1.789.69.188 1.71c-.969.713-1.725 1.623-2.264 2.73-.051.099-.096.198-.139.3l-1.26-1.529-2.054.434c.511-1.104 1.201-2.091 2.063-2.96.515-.522 1.07-.979 1.667-1.376l.01.001zm11.782 12.052c.195-.324.354-.652.48-.99l1.938 2.35 3.255-.701c-.187.513-.407 1.015-.662 1.507-.671 1.291-1.553 2.409-2.648 3.36-1.112.962-2.369 1.665-3.771 2.107-.027.009-.056.016-.083.026l-2.411-2.039.629-2.775.051-.021c1.379-.6 2.457-1.529 3.224-2.835v.011zM21.153 4.805c.199.273.384.56.563.854.741 1.248 1.254 2.582 1.539 4.004.271 1.41.315 2.829.12 4.252-.105.684-.255 1.35-.464 2.002l-3.255.699-1.95-2.357c.226-.867.255-1.77.06-2.709-.225-1.114-.72-2.065-1.454-2.85l3.509-.42 1.306-3.476h.026zM1.338 8.584l2.1-.444 1.236 1.509c-.391 1.084-.48 2.21-.285 3.38.045.334.119.656.21.969l-2.22-.505-1.59 1.881c-.193-.833-.283-1.685-.283-2.554.003-1.451.27-2.85.807-4.199l.016-.039.009.002zM4.78 14.518c.319.844.788 1.614 1.409 2.316.465.539.99.975 1.563 1.319l-2.2 1.261.12 2.864c-.726-.451-1.395-.99-2-1.605-1.021-1.05-1.8-2.249-2.34-3.6-.149-.375-.27-.75-.375-1.125l1.635-1.919 2.22.509-.032-.02zM8.232 18.415c.473.236.979.416 1.518.54 1.207.28 2.385.233 3.529-.141l-.625 2.757 2.387 2.02c-1.193.313-2.414.445-3.659.401-1.455-.046-2.853-.354-4.19-.925-.36-.153-.705-.322-1.041-.51l-.119-2.882 2.2-1.26zM20.815 4.364L19.502 7.85l-3.614.435c-.105-.091-.213-.181-.327-.255-1.185-.9-2.52-1.426-4.004-1.575-.346-.029-.675-.029-.99-.029l1.26-3.226L9.1.095c.827-.09 1.637-.104 2.459-.09.49.015.975.051 1.459.113.68.089 1.351.239 2.015.42 1.405.4 2.685 1.034 3.842 1.93.729.559 1.376 1.191 1.94 1.896z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Event Store</title><path d="M5.785 3.414c.428-.251.874-.473 1.339-.666.981-.421 1.995-.659 3.036-.765l1.127 1.274-.525 1.319c-1.02.195-1.979.57-2.879 1.11l-.195.12-.178-1.737-1.725-.66v.005zM5.295 3.724l1.789.69.188 1.71c-.969.713-1.725 1.623-2.264 2.73-.051.099-.096.198-.139.3l-1.26-1.529-2.054.434c.511-1.104 1.201-2.091 2.063-2.96.515-.522 1.07-.979 1.667-1.376l.01.001zm11.782 12.052c.195-.324.354-.652.48-.99l1.938 2.35 3.255-.701c-.187.513-.407 1.015-.662 1.507-.671 1.291-1.553 2.409-2.648 3.36-1.112.962-2.369 1.665-3.771 2.107-.027.009-.056.016-.083.026l-2.411-2.039.629-2.775.051-.021c1.379-.6 2.457-1.529 3.224-2.835v.011zM21.153 4.805c.199.273.384.56.563.854.741 1.248 1.254 2.582 1.539 4.004.271 1.41.315 2.829.12 4.252-.105.684-.255 1.35-.464 2.002l-3.255.699-1.95-2.357c.226-.867.255-1.77.06-2.709-.225-1.114-.72-2.065-1.454-2.85l3.509-.42 1.306-3.476h.026zM1.338 8.584l2.1-.444 1.236 1.509c-.391 1.084-.48 2.21-.285 3.38.045.334.119.656.21.969l-2.22-.505-1.59 1.881c-.193-.833-.283-1.685-.283-2.554.003-1.451.27-2.85.807-4.199l.016-.039.009.002zM4.78 14.518c.319.844.788 1.614 1.409 2.316.465.539.99.975 1.563 1.319l-2.2 1.261.12 2.864c-.726-.451-1.395-.99-2-1.605-1.021-1.05-1.8-2.249-2.34-3.6-.149-.375-.27-.75-.375-1.125l1.635-1.919 2.22.509-.032-.02zM8.232 18.415c.473.236.979.416 1.518.54 1.207.28 2.385.233 3.529-.141l-.625 2.757 2.387 2.02c-1.193.313-2.414.445-3.659.401-1.455-.046-2.853-.354-4.19-.925-.36-.153-.705-.322-1.041-.51l-.119-2.882 2.2-1.26zM20.815 4.364L19.502 7.85l-3.614.435c-.105-.091-.213-.181-.327-.255-1.185-.9-2.52-1.426-4.004-1.575-.346-.029-.675-.029-.99-.029l1.26-3.226L9.1.095c.827-.09 1.637-.104 2.459-.09.49.015.975.051 1.459.113.68.089 1.351.239 2.015.42 1.405.4 2.685 1.034 3.842 1.93.729.559 1.376 1.191 1.94 1.896z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/evernote.svg b/assets/lib/simple-icons/icons/evernote.svg
index 4b0d304c..f9ac15dc 100644
--- a/assets/lib/simple-icons/icons/evernote.svg
+++ b/assets/lib/simple-icons/icons/evernote.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Evernote icon</title><path d="M7.692 5.445c0 .239-.02.637-.256.895-.257.24-.652.259-.888.259H4.022c-.73 0-1.165 0-1.46.04-.159.02-.356.1-.455.14-.04.019-.04 0-.02-.02L7.85.848c.02-.02.04-.02.02.02-.04.099-.118.298-.138.457-.04.298-.04.736-.04 1.472v2.647zm5.348 17.869c-.67-.438-1.026-1.015-1.164-1.373a2.924 2.924 0 0 1-.217-1.095 3.007 3.007 0 0 1 3-3.004c.493 0 .888.398.888.895a.88.88 0 0 1-.454.776c-.099.06-.237.1-.336.12-.098.02-.473.06-.65.218-.198.16-.356.418-.356.697 0 .298.118.577.316.776.355.358.829.557 1.342.557a2.436 2.436 0 0 0 2.427-2.447c0-1.214-.809-2.289-1.875-2.766-.158-.08-.414-.14-.651-.2a8.04 8.04 0 0 0-.592-.099c-.829-.1-2.901-.756-3.04-2.606 0 0-.611 2.785-1.835 3.541-.118.06-.276.12-.454.16-.177.04-.374.06-.434.06-1.993.119-4.105-.518-5.565-2.03 0 0-.987-.816-1.5-3.104-.118-.558-.355-1.553-.493-2.488-.06-.338-.08-.597-.099-.836 0-.975.592-1.631 1.342-1.73h4.026c.69 0 1.086-.18 1.342-.419.336-.318.415-.776.415-1.313v-4.08-.118C8.52.669 9.173.052 10.139.052h.474c.197 0 .434.02.651.04.158.02.296.06.533.12 1.204.298 1.46 1.532 1.46 1.532s2.27.398 3.415.597c1.085.199 3.77.378 4.282 3.104 1.204 6.487.474 12.775.415 12.775-.849 6.129-5.901 5.83-5.901 5.83a4.1 4.1 0 0 1-2.428-.736zm4.54-13.034c-.652-.06-1.204.2-1.402.697-.04.1-.079.219-.059.278.02.06.06.08.099.1.237.12.631.179 1.204.239.572.06.967.1 1.223.06.04 0 .08-.02.119-.08.04-.06.02-.18.02-.279-.06-.537-.553-.935-1.204-1.015z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Evernote</title><path d="M8.222 5.393c0 .239-.02.637-.256.895-.257.24-.652.259-.888.259H4.552c-.73 0-1.165 0-1.46.04-.159.02-.356.1-.455.14-.04.019-.04 0-.02-.02L8.38.796c.02-.02.04-.02.02.02-.04.099-.118.298-.138.457-.04.298-.04.736-.04 1.472v2.647zm5.348 17.869c-.67-.438-1.026-1.015-1.164-1.373a2.924 2.924 0 01-.217-1.095 3.007 3.007 0 013-3.004c.493 0 .888.398.888.895a.88.88 0 01-.454.776c-.099.06-.237.1-.336.12-.098.02-.473.06-.65.218-.198.16-.356.418-.356.697 0 .298.118.577.316.776.355.358.829.557 1.342.557a2.436 2.436 0 002.427-2.447c0-1.214-.809-2.29-1.875-2.766-.158-.08-.414-.14-.651-.2a8.04 8.04 0 00-.592-.1c-.829-.1-2.901-.755-3.04-2.605 0 0-.611 2.785-1.835 3.54-.118.06-.276.12-.454.16-.177.04-.374.06-.434.06-1.993.12-4.105-.517-5.565-2.03 0 0-.987-.815-1.5-3.103-.118-.558-.355-1.553-.493-2.488-.06-.338-.08-.597-.099-.836 0-.975.592-1.631 1.342-1.73h4.026c.69 0 1.086-.18 1.342-.42.336-.317.415-.775.415-1.312V1.354C9.05.617 9.703 0 10.669 0h.474c.197 0 .434.02.651.04.158.02.296.06.533.12 1.204.298 1.46 1.532 1.46 1.532s2.27.398 3.415.597c1.085.199 3.77.378 4.282 3.104 1.204 6.487.474 12.775.415 12.775-.849 6.129-5.901 5.83-5.901 5.83a4.1 4.1 0 01-2.428-.736zm4.54-13.034c-.652-.06-1.204.2-1.402.697-.04.1-.079.219-.059.278.02.06.06.08.099.1.237.12.631.179 1.204.239.572.06.967.1 1.223.06.04 0 .08-.02.119-.08.04-.06.02-.18.02-.28-.06-.536-.553-.934-1.204-1.014z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/everplaces.svg b/assets/lib/simple-icons/icons/everplaces.svg
deleted file mode 100644
index a0c50bde..00000000
--- a/assets/lib/simple-icons/icons/everplaces.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Everplaces icon</title><path d="M10.839 23.972C4.76 23.388 0 18.257 0 12.028c0-6.623 5.377-12 12-12s12 5.377 12 12c0 6.23-4.76 11.359-10.839 11.943v-7.046c2.22-.525 3.87-2.521 3.87-4.897 0-2.778-2.253-5.033-5.031-5.033S6.968 9.25 6.968 12.028c0 2.377 1.653 4.372 3.87 4.897l.001 7.047zm-.388-14.655c.642 0 1.162.521 1.162 1.162 0 .641-.521 1.162-1.162 1.162-.641 0-1.16-.521-1.16-1.162 0-.641.52-1.161 1.16-1.162z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/evry.svg b/assets/lib/simple-icons/icons/evry.svg
deleted file mode 100644
index a0ea2e48..00000000
--- a/assets/lib/simple-icons/icons/evry.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>EVRY icon</title><path d="M.443 12.919c.102.255.113.426.072.692-.031.202-.068.404-.108.605-.035.174-.117.55.003.694.117.139.35.131.622.098.302-.037 1.81-.342 3.397-.997.215-.093.435-.205.622-.345.431-.324.5-1.005.5-1.005.011-.13.009-.316-.164-.413-.126-.07-.301-.026-.562.043-.433.116-1.502.519-1.873.628-.15.044-.447.114-.561-.027-.19-.234.082-.969.245-1.378.163-.409.419-.738 1.205-.96.289-.082.762-.229.954-.293.211-.071.489-.207.607-.675.135-.534-.278-.616-.655-.718-.539-.147-.878-.165-.641-.679.097-.21.187-.303.397-.358.214-.056 2.029-.338 2.751-.467.405-.072.542-.286.711-.631.365-.746-.093-.794-.462-.761-.836.076-2.178.315-2.753.397-.306.044-.102-.47-.46-.494-.704-.049-1.302.243-1.541.425-.226.172-.334.703-.334.703l-.697 2.368c-.06.273-.146.543-.343.659-.479.283-1.457.302-1.37 1.34 0 0 .019.51.437 1.551zm6.318-4.424c.279-.047.654-.115.756.586.031.212.032 2.661.032 2.661s.269-.252 1.094-1.526c.626-.965 1.317-2.211 1.577-2.648.152-.256.433-.522.918-.165.541.398.553.685.315 1.093-.244.419-.9 1.486-1.827 2.772-.842 1.168-1.245 1.631-1.599 2.016-.354.385-.826.83-1.319.762-.654-.091-.604-1.198-.63-1.515-.026-.317-.154-2.832-.066-3.419.034-.228.025-.496.749-.618zm8.845.065c.302.161-.045.855-.626 1.277-.374.272-1.014.679-1.672.679a6.206 6.206 0 0 1 1.017-1.298c.47-.461 1.018-.799 1.281-.658zm8.17-.153c.291-.373.349-.596-.133-1.061-.433-.417-.723-.171-.934.045-.035.042-1.016 1.001-2.049 2.17-.804.91-1.499 1.756-1.499 1.756s-.025-.57.062-1.286c.049-.408.186-1.201.226-1.453.204-1.274-.593-1.325-.89-1.343-.312-.019-.461.145-.554.533-.085.356-.55 2.311-.365 4.325.033.363.105.737.112.761l-.188.257c-1.749-.485-2.946-1.664-2.946-1.664s.574-.165 1.204-.543c.501-.3 1.465-1.043 1.363-2.353-.087-1.112-1.271-1.62-1.707-1.529-.397.083-1.091.558-1.747 1.14-.044-.304-.052-.639-.368-.676-.232-.027-.501.082-.696.182a1.116 1.116 0 0 0-.501.473l-.736 1.665c-.024.059-.072.072-.11.08-.394.09-.521.371-.549.449 0 0-.165.347.126.661-.146.385-.533 1.282-.533 1.282-.48 1.101-.449 1.483-.277 1.717.087.119.393.291.762.351.278.046.491-.119.723-.482.343-.537 1.032-1.953 1.032-1.953s1.37 1.474 4.121 2.443c0 0-1.455 1.973-1.665 3.064 0 0-.108.715.872.713.246 0 .617-.058.886-.221a.475.475 0 0 0 .223-.281.216.216 0 0 0-.021-.153c-.027-.047-.069-.073-.101-.104-.05-.049-.043-.113-.016-.187.539-1.544 2.732-4.169 3.197-4.738 1.233-1.507 3.512-3.854 3.673-4.041z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/exercism.svg b/assets/lib/simple-icons/icons/exercism.svg
index 38ca5475..add82005 100644
--- a/assets/lib/simple-icons/icons/exercism.svg
+++ b/assets/lib/simple-icons/icons/exercism.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Exercism icon</title><path d="M4.35 1.66c-.959 0-1.686.298-2.181.893-.496.595-.744 1.464-.744 2.605v3.474c0 .805-.086 1.424-.259 1.858-.173.434-.493.84-.96 1.218-.138.113-.206.206-.206.278 0 .072.068.165.205.277.476.386.798.794.967 1.225.17.43.253 1.047.253 1.851v3.462c0 1.15.25 2.023.75 2.618.5.595 1.224.892 2.174.892h.882c.379 0 .618-.018.72-.054.1-.036.15-.127.15-.271 0-.201-.133-.334-.399-.398l-.483-.109c-1.063-.241-1.595-1.29-1.595-3.148v-3.293c0-1.247-.302-2.127-.906-2.642l-.23-.193c-.112-.096-.168-.169-.168-.217 0-.056.056-.129.169-.217l.23-.193c.603-.515.905-1.395.905-2.642V5.641c0-1.11.135-1.88.405-2.31.27-.43.832-.762 1.685-.995.258-.073.387-.19.387-.35 0-.217-.29-.326-.87-.326zm14.419.029c-.58 0-.87.108-.87.325 0 .161.128.278.386.35.854.233 1.416.565 1.686.995.27.43.405 1.2.405 2.31v3.294c0 1.246.302 2.126.906 2.641l.229.193c.113.089.17.161.17.217 0 .049-.057.121-.17.217l-.23.193c-.603.515-.905 1.396-.905 2.642v3.293c0 1.858-.532 2.907-1.595 3.149l-.484.108c-.266.064-.398.197-.398.398 0 .145.05.235.15.272.102.036.341.054.72.054h.882c.95 0 1.675-.298 2.174-.893.5-.595.75-1.467.75-2.617v-3.462c0-.805.084-1.422.253-1.852.17-.43.491-.838.967-1.224.137-.113.205-.205.205-.278 0-.072-.068-.165-.205-.277-.468-.378-.788-.784-.961-1.218-.173-.435-.26-1.054-.26-1.858V5.187c0-1.142-.247-2.01-.743-2.606-.495-.595-1.222-.892-2.18-.892zM7.683 9.735c-1.456 0-2.64 1.111-2.64 2.478h1.02c0-.838.727-1.52 1.62-1.52.892 0 1.619.682 1.619 1.52h1.02c0-1.367-1.183-2.478-2.64-2.478zm8.406 0c-1.456 0-2.639 1.111-2.639 2.478h1.02c0-.838.727-1.52 1.62-1.52.892 0 1.62.682 1.62 1.52h1.02c0-1.367-1.185-2.478-2.64-2.478zM9.71 14.36v.561c0 1.277 1.062 2.316 2.366 2.316 1.305 0 2.367-1.039 2.367-2.316v-.56h-.934v.56c0 .877-.76 1.426-1.433 1.426s-1.48-.273-1.48-1.426v-.56z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Exercism</title><path d="M4.35 1.66c-.959 0-1.686.298-2.181.893-.496.595-.744 1.464-.744 2.605v3.474c0 .805-.086 1.424-.259 1.858-.173.434-.493.84-.96 1.218-.138.113-.206.206-.206.278 0 .072.068.165.205.277.476.386.798.794.967 1.225.17.43.253 1.047.253 1.851v3.462c0 1.15.25 2.023.75 2.618.5.595 1.224.892 2.174.892h.882c.379 0 .618-.018.72-.054.1-.036.15-.127.15-.271 0-.201-.133-.334-.399-.398l-.483-.109c-1.063-.241-1.595-1.29-1.595-3.148v-3.293c0-1.247-.302-2.127-.906-2.642l-.23-.193c-.112-.096-.168-.169-.168-.217 0-.056.056-.129.169-.217l.23-.193c.603-.515.905-1.395.905-2.642V5.641c0-1.11.135-1.88.405-2.31.27-.43.832-.762 1.685-.995.258-.073.387-.19.387-.35 0-.217-.29-.326-.87-.326zm14.419.029c-.58 0-.87.108-.87.325 0 .161.128.278.386.35.854.233 1.416.565 1.686.995.27.43.405 1.2.405 2.31v3.294c0 1.246.302 2.126.906 2.641l.229.193c.113.089.17.161.17.217 0 .049-.057.121-.17.217l-.23.193c-.603.515-.905 1.396-.905 2.642v3.293c0 1.858-.532 2.907-1.595 3.149l-.484.108c-.266.064-.398.197-.398.398 0 .145.05.235.15.272.102.036.341.054.72.054h.882c.95 0 1.675-.298 2.174-.893.5-.595.75-1.467.75-2.617v-3.462c0-.805.084-1.422.253-1.852.17-.43.491-.838.967-1.224.137-.113.205-.205.205-.278 0-.072-.068-.165-.205-.277-.468-.378-.788-.784-.961-1.218-.173-.435-.26-1.054-.26-1.858V5.187c0-1.142-.247-2.01-.743-2.606-.495-.595-1.222-.892-2.18-.892zM7.683 9.735c-1.456 0-2.64 1.111-2.64 2.478h1.02c0-.838.727-1.52 1.62-1.52.892 0 1.619.682 1.619 1.52h1.02c0-1.367-1.183-2.478-2.64-2.478zm8.406 0c-1.456 0-2.639 1.111-2.639 2.478h1.02c0-.838.727-1.52 1.62-1.52.892 0 1.62.682 1.62 1.52h1.02c0-1.367-1.185-2.478-2.64-2.478zM9.71 14.36v.561c0 1.277 1.062 2.316 2.366 2.316 1.305 0 2.367-1.039 2.367-2.316v-.56h-.934v.56c0 .877-.76 1.426-1.433 1.426s-1.48-.273-1.48-1.426v-.56z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/exordo.svg b/assets/lib/simple-icons/icons/exordo.svg
new file mode 100644
index 00000000..e7ae6577
--- /dev/null
+++ b/assets/lib/simple-icons/icons/exordo.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Exordo</title><path d="M12 0a12 12 0 00-5.514 1.342l2.01 14.062 2.033-5.281a.375.375 0 01.334-.24.375.375 0 01.15.023.375.375 0 01.217.487L9.64 14.529 18.95 2.22a12 12 0 00-3.853-1.81l-.844 2.327-.318.828a.375.375 0 01-.485.215.375.375 0 01-.215-.484l.315-.822.812-2.239A12 12 0 0012 0zM5.785 1.736a12 12 0 00-5.691 8.762l.699.49a.375.375 0 01.09.524.375.375 0 01-.522.09l-.343-.243A12 12 0 000 12a12 12 0 001.129 5.078.375.375 0 01.21-.084l6.05-.422-5.213-3.693a.375.375 0 01-.088-.524.375.375 0 01.28-.158.375.375 0 01.243.069l5.205 3.691-2.03-14.22zm13.764.934L9.275 16.252l10.037-2.57-.126-.493a.375.375 0 01.27-.455.375.375 0 01.075-.011.375.375 0 01.38.279l.128.492 3.951-1.012A12 12 0 0024 12a12 12 0 00-4.451-9.33zm-7.48 1.607a.375.375 0 01.156.024l.826.316.826.315a.375.375 0 01.217.484.375.375 0 01-.485.215l-.826-.315-.828-.314a.375.375 0 01-.217-.484.375.375 0 01.33-.24zm.13 2.13a.375.375 0 01.155.023.375.375 0 01.214.484l-.271.711.389.148a.375.375 0 01.216.485.375.375 0 01-.482.217l-.393-.149-.091.238a.375.375 0 01-.485.215.375.375 0 01-.215-.484l.09-.236-.56-.215a.375.375 0 01-.217-.485.375.375 0 01.33-.24.375.375 0 01.154.024l.56.214.276-.71a.375.375 0 01.33-.24zm11.733 6.864l-3.705.95.127.49a.375.375 0 01-.27.459.375.375 0 01-.457-.27l-.127-.494-9.785 2.506 4.91 1.502a.375.375 0 01.248.467.375.375 0 01-.469.25l-4.922-1.504 1.032 1.17a.375.375 0 01-.034.53.375.375 0 01-.529-.034l-1.328-1.51-.52 5.567A12 12 0 0012 24a12 12 0 002.07-.18l-2.441-2.636-.303.265a.375.375 0 01-.53-.035.375.375 0 01.036-.53l.295-.257-.313-.354a.375.375 0 01.034-.529.375.375 0 01.252-.094.375.375 0 01.277.127l.312.354.383-.334a.375.375 0 01.252-.094.375.375 0 01.278.129.375.375 0 01-.036.53l-.373.327 2.729 2.95a12 12 0 005.164-2.772l-3.264-.998a.375.375 0 01-.25-.469.375.375 0 01.367-.265.375.375 0 01.102.017l3.654 1.118a12 12 0 003.237-6.999zM7.465 17.34l-5.912.562a12 12 0 002.728 3.285l.358-.427a.375.375 0 01.273-.137.375.375 0 01.256.086.375.375 0 01.049.527l-.344.416a12 12 0 002.5 1.418l.467-5.01-.559.678a.375.375 0 01-.527.051.375.375 0 01-.05-.527l.76-.922zm-2.541 1.88a.375.375 0 01.254.087l.681.562.684.563a.375.375 0 01.05.529.375.375 0 01-.529.05l-.681-.564-.682-.562a.375.375 0 01-.05-.528.375.375 0 01.273-.136Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/exoscale.svg b/assets/lib/simple-icons/icons/exoscale.svg
new file mode 100644
index 00000000..8c482a3e
--- /dev/null
+++ b/assets/lib/simple-icons/icons/exoscale.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Exoscale</title><path d="M12 1.608 0 22.392h1.665L12 4.593v2.929l-8.612 14.87H5.11L12 10.507v2.986l-5.167 8.9h1.722L12 16.477v2.929l-1.722 2.985H24Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/expensify.svg b/assets/lib/simple-icons/icons/expensify.svg
new file mode 100644
index 00000000..0e289a61
--- /dev/null
+++ b/assets/lib/simple-icons/icons/expensify.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Expensify</title><path d="M8.16 17.52h7.68v-2.28h-4.872v-2.136h4.152v-2.328h-4.152v-2.04h4.872V6.48H8.16v11.04z M21.6 12a9.608 9.608 0 01-2.16 6.072l1.704 1.704A11.958 11.958 0 0024 12c0-2.928-1.056-5.616-2.784-7.68l-1.704 1.704A9.61 9.61 0 0121.6 12z M18.072 19.44a9.608 9.608 0 01-12.048.072L4.32 21.216A11.913 11.913 0 0012 24c2.976 0 5.688-1.08 7.776-2.856l-1.704-1.704z M4.632 18.168A9.613 9.613 0 012.4 12c0-5.304 4.296-9.6 9.6-9.6 2.352 0 4.488.84 6.168 2.232l1.704-1.704A12.02 12.02 0 0012 0C5.376 0 0 5.376 0 12c0 3 1.104 5.76 2.928 7.872l1.704-1.704z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/expertsexchange.svg b/assets/lib/simple-icons/icons/expertsexchange.svg
index 37db5c8f..b4f2cf26 100644
--- a/assets/lib/simple-icons/icons/expertsexchange.svg
+++ b/assets/lib/simple-icons/icons/expertsexchange.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Experts Exchange icon</title><path d="M7.28.9H0L8.36 12 0 23.1h7.28L15.64 12zM24 .9h-7.28l-2.3 3.06 3.64 4.82zM14.42 20.05l2.3 3.05H24l-5.94-7.88z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Experts Exchange</title><path d="M7.28.9H0L8.36 12 0 23.1h7.28L15.64 12zM24 .9h-7.28l-2.3 3.06 3.64 4.82zM14.42 20.05l2.3 3.05H24l-5.94-7.88z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/expo.svg b/assets/lib/simple-icons/icons/expo.svg
index 80036846..46a6a418 100644
--- a/assets/lib/simple-icons/icons/expo.svg
+++ b/assets/lib/simple-icons/icons/expo.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Expo icon</title><path d="M0 20.084c.043.53.23 1.063.718 1.778.58.849 1.576 1.315 2.303.567.49-.505 5.794-9.776 8.35-13.29a.761.761 0 011.248 0c2.556 3.514 7.86 12.785 8.35 13.29.727.748 1.723.282 2.303-.567.57-.835.728-1.42.728-2.046 0-.426-8.26-15.798-9.092-17.078-.8-1.23-1.044-1.498-2.397-1.542h-1.032c-1.353.044-1.597.311-2.398 1.542C8.267 3.991.33 18.758 0 19.77Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Expo</title><path d="M0 20.084c.043.53.23 1.063.718 1.778.58.849 1.576 1.315 2.303.567.49-.505 5.794-9.776 8.35-13.29a.761.761 0 011.248 0c2.556 3.514 7.86 12.785 8.35 13.29.727.748 1.723.282 2.303-.567.57-.835.728-1.42.728-2.046 0-.426-8.26-15.798-9.092-17.078-.8-1.23-1.044-1.498-2.397-1.542h-1.032c-1.353.044-1.597.311-2.398 1.542C8.267 3.991.33 18.758 0 19.77Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/express.svg b/assets/lib/simple-icons/icons/express.svg
new file mode 100644
index 00000000..edeb4134
--- /dev/null
+++ b/assets/lib/simple-icons/icons/express.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Express</title><path d="M24 18.588a1.529 1.529 0 01-1.895-.72l-3.45-4.771-.5-.667-4.003 5.444a1.466 1.466 0 01-1.802.708l5.158-6.92-4.798-6.251a1.595 1.595 0 011.9.666l3.576 4.83 3.596-4.81a1.435 1.435 0 011.788-.668L21.708 7.9l-2.522 3.283a.666.666 0 000 .994l4.804 6.412zM.002 11.576l.42-2.075c1.154-4.103 5.858-5.81 9.094-3.27 1.895 1.489 2.368 3.597 2.275 5.973H1.116C.943 16.447 4.005 19.009 7.92 17.7a4.078 4.078 0 002.582-2.876c.207-.666.548-.78 1.174-.588a5.417 5.417 0 01-2.589 3.957 6.272 6.272 0 01-7.306-.933 6.575 6.575 0 01-1.64-3.858c0-.235-.08-.455-.134-.666A88.33 88.33 0 010 11.577zm1.127-.286h9.654c-.06-3.076-2.001-5.258-4.59-5.278-2.882-.04-4.944 2.094-5.071 5.264z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/expressvpn.svg b/assets/lib/simple-icons/icons/expressvpn.svg
new file mode 100644
index 00000000..0d56ccf1
--- /dev/null
+++ b/assets/lib/simple-icons/icons/expressvpn.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ExpressVPN</title><path d="M11.705 2.349a4.874 4.874 0 00-4.39 2.797L6.033 7.893h14.606c.41 0 .692.308.692.668 0 .359-.282.666-.692.666H2.592L0 14.772h2.824c-.796 1.72-1.002 2.567-1.002 3.26 0 2.105 1.72 3.62 4.416 3.62h8.239c1.771 0 3.337-1.412 3.337-3.03 0-1.411-1.206-2.515-2.772-2.515H5.596c-.873 0-1.284-.59-.924-1.335h11.859c4.004 0 7.469-3.029 7.469-6.802 0-3.183-2.618-5.621-6.16-5.621z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/eyeem.svg b/assets/lib/simple-icons/icons/eyeem.svg
index 7ce4f828..d4230b0d 100644
--- a/assets/lib/simple-icons/icons/eyeem.svg
+++ b/assets/lib/simple-icons/icons/eyeem.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>EyeEm icon</title><path d="M3.673 9.181v-1.04H0v5.723h3.68v-1.048H1.186v-1.378h2.158v-1.017H1.186V9.18zm2.162 6.634l2.532-5.907h-1.24l-.902 2.357-.91-2.357H4.081l1.546 3.604-1.01 2.303zm6.625-3.573v-.444c0-1.232-.75-1.966-1.89-1.966-1.179 0-2.013.78-2.013 2.058 0 1.27.834 2.058 2.043 2.058.926 0 1.684-.536 1.821-1.285l-1.124-.054c-.085.275-.337.436-.727.436-.505 0-.804-.314-.827-.803zm-1.898-1.538c.505 0 .75.314.773.796H9.743c.031-.505.345-.796.82-.796zM17.04 9.18v-1.04h-3.672v5.723h3.68v-1.048h-2.495v-1.378h2.158v-1.017h-2.158V9.18zm5.46.65c-.597 0-.987.268-1.216.628-.26-.406-.697-.627-1.24-.627s-.864.206-1.04.482v-.406h-1.056v3.956h1.117v-2.196c0-.474.268-.796.711-.796.406 0 .643.283.643.788v2.204h1.117V11.53c.046-.398.291-.658.689-.658.428 0 .658.283.658.788v2.204H24v-2.426c0-1.002-.597-1.606-1.5-1.606z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>EyeEm</title><path d="M3.673 9.204v-1.04H0v5.722h3.68v-1.048H1.186V11.46h2.158v-1.017H1.186v-1.24zm2.162 6.633l2.532-5.906h-1.24l-.902 2.357-.91-2.357H4.081l1.546 3.604-1.01 2.303zm6.625-3.572v-.445c0-1.232-.75-1.966-1.89-1.966-1.179 0-2.013.78-2.013 2.059 0 1.27.834 2.057 2.043 2.057.926 0 1.684-.536 1.821-1.285l-1.124-.054c-.085.275-.337.436-.727.436-.505 0-.804-.314-.827-.803zm-1.898-1.539c.505 0 .75.314.773.796H9.743c.031-.505.345-.796.82-.796zm6.478-1.524v-1.04h-3.672v5.724h3.68v-1.048h-2.495V11.46h2.158v-1.018h-2.158v-1.24zm5.46.65c-.597 0-.987.269-1.216.629-.26-.406-.697-.627-1.24-.627s-.864.206-1.04.482v-.407h-1.056v3.956h1.117V11.69c0-.474.268-.796.711-.796.406 0 .643.283.643.788v2.205h1.117v-2.333c.046-.399.291-.659.689-.659.428 0 .658.284.658.789v2.204H24V11.46c0-1.002-.597-1.606-1.5-1.606z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/f-droid.svg b/assets/lib/simple-icons/icons/f-droid.svg
deleted file mode 100644
index 69d4db43..00000000
--- a/assets/lib/simple-icons/icons/f-droid.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>F-Droid icon</title><path d="M20.472,10.081H3.528c-0.877,0-1.589,0.711-1.589,1.589v10.59c0,0.877,0.711,1.589,1.589,1.589h16.944 c0.877,0,1.589-0.711,1.589-1.589V11.67C22.061,10.792,21.349,10.081,20.472,10.081z M12,22.525c-3.066,0-5.56-2.494-5.56-5.56 s2.494-5.56,5.56-5.56c3.066,0,5.56,2.494,5.56,5.56S15.066,22.525,12,22.525z M12,12.411c-2.511,0-4.554,2.043-4.554,4.554 S9.489,21.519,12,21.519s4.554-2.043,4.554-4.554S14.511,12.411,12,12.411z M12,20.274c-1.563,0-2.881-1.103-3.221-2.568h1.67 c0.275,0.581,0.859,0.979,1.551,0.979c0.96,0,1.721-0.761,1.721-1.721c0-0.96-0.761-1.721-1.721-1.721 c-0.649,0-1.2,0.352-1.493,0.874H8.805c0.378-1.412,1.669-2.462,3.195-2.462c1.818,0,3.309,1.491,3.309,3.309 C15.309,18.783,13.818,20.274,12,20.274z M23.849,0.396c-0.001,0.001-0.002,0.002-0.002,0.003 c-0.002-0.002-0.004-0.003-0.006-0.005c0.001-0.001,0.002-0.003,0.004-0.004c-0.116-0.137-0.279-0.231-0.519-0.238 c-0.202,0.005-0.391,0.097-0.512,0.259l-1.818,2.353c-0.164-0.058-0.339-0.095-0.523-0.095H3.528c-0.184,0-0.358,0.038-0.523,0.095 L1.187,0.41c-0.121-0.162-0.31-0.253-0.512-0.259c-0.24,0.006-0.403,0.1-0.519,0.238c0.001,0.001,0.002,0.003,0.004,0.004 C0.157,0.395,0.155,0.397,0.153,0.399C0.153,0.398,0.152,0.397,0.151,0.396C0.085,0.474-0.146,0.822,0.139,1.22l1.909,2.471 C1.981,3.867,1.94,4.057,1.94,4.257v3.707c0,0.877,0.711,1.589,1.589,1.589h16.944c0.877,0,1.589-0.711,1.589-1.589V4.257 c0-0.2-0.041-0.39-0.109-0.566l1.909-2.471C24.146,0.822,23.915,0.474,23.849,0.396z M6.904,8.228c-0.987,0-1.787-0.8-1.787-1.787 s0.8-1.787,1.787-1.787s1.787,0.8,1.787,1.787S7.891,8.228,6.904,8.228z M17.229,8.228c-0.987,0-1.787-0.8-1.787-1.787 s0.8-1.787,1.787-1.787c0.987,0,1.787,0.8,1.787,1.787S18.216,8.228,17.229,8.228z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/f-secure.svg b/assets/lib/simple-icons/icons/f-secure.svg
deleted file mode 100644
index ed83471a..00000000
--- a/assets/lib/simple-icons/icons/f-secure.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 24 24"><title>F-Secure icon</title><path d="M23.93 2.94a35.94 35.94 0 0 0-22.24-.6A2.22 2.22 0 0 0 .07 5.09c.4 1.6.98 3.44 1.68 5.11.01.04.03.02.03-.02-.1-.78.5-1.77 1.68-2.13a27.56 27.56 0 0 1 17.39.23c.86.3 1.82-.17 2.1-1.06.7-2.25.98-3.78 1.05-4.16.01-.07-.05-.1-.07-.12zM6.65 7.89c-.86.18-2.05.46-2.94.76-1.78.61-1.7 2.78-.75 3.47.07-.4.5-.95.98-1.13 1.78-.7 3.69-1.12 5.62-1.29-.98-.4-1.94-.97-2.9-1.81M20.83 12.23a21.16 21.16 0 0 0-16.45-.65c-.85.32-1.38 1.35-.85 2.33a38.16 38.16 0 0 0 3.15 4.8c-.17-.58.13-1.66 1.27-2.01 3.15-.97 6.46-.56 8.66.33.62.25 1.5.1 1.99-.64a38.62 38.62 0 0 0 2.29-4.02c.03-.06 0-.11-.06-.14M15.72 20a9.92 9.92 0 0 1-2.5-1.8c-.34-.34-.84-.83-1.37-1.41-1.2 0-2.37.12-3.62.52-1.16.36-1.27 1.7-.76 2.4.86 1.07 1.46 1.65 2.42 2.64a2.74 2.74 0 0 0 3.82.02c.75-.75 1.21-1.25 2.06-2.21.05-.05.03-.14-.05-.16"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/facebook.svg b/assets/lib/simple-icons/icons/facebook.svg
index d775b289..4ef9d677 100644
--- a/assets/lib/simple-icons/icons/facebook.svg
+++ b/assets/lib/simple-icons/icons/facebook.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Facebook icon</title><path d="M23.9981 11.9991C23.9981 5.37216 18.626 0 11.9991 0C5.37216 0 0 5.37216 0 11.9991C0 17.9882 4.38789 22.9522 10.1242 23.8524V15.4676H7.07758V11.9991H10.1242V9.35553C10.1242 6.34826 11.9156 4.68714 14.6564 4.68714C15.9692 4.68714 17.3424 4.92149 17.3424 4.92149V7.87439H15.8294C14.3388 7.87439 13.8739 8.79933 13.8739 9.74824V11.9991H17.2018L16.6698 15.4676H13.8739V23.8524C19.6103 22.9522 23.9981 17.9882 23.9981 11.9991Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Facebook</title><path d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/facebookgaming.svg b/assets/lib/simple-icons/icons/facebookgaming.svg
new file mode 100644
index 00000000..5d5ce6b8
--- /dev/null
+++ b/assets/lib/simple-icons/icons/facebookgaming.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Facebook Gaming</title><path d="M0 0v24h15.67v-7.35H7.35v-9.3H24V0zm8.33 15.68h8.32V24H24V8.32H8.33Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/facebooklive.svg b/assets/lib/simple-icons/icons/facebooklive.svg
index 557e22da..1662c3a0 100644
--- a/assets/lib/simple-icons/icons/facebooklive.svg
+++ b/assets/lib/simple-icons/icons/facebooklive.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Facebook Live icon</title><path d="M9.4777 7.8108a.4611.4611 0 0 0-.462.462v7.452a.461.461 0 0 0 .462.462H23.538v.0024a.4611.4611 0 0 0 .462-.462V8.2728a.4611.4611 0 0 0-.462-.462zm-5.2862.0072C1.879 7.818 0 9.6922 0 12.007c0 2.0922 1.533 3.8267 3.5376 4.1394V13.218h-1.071v-1.211h1.071v-.924c0-1.0497.6208-1.6326 1.578-1.6326.4573 0 .9336.0877.9336.0877v1.0236h-.5237c-.5213 0-.6871.327-.6871.6563v.7866h1.1634l-.1872 1.2108H4.836v2.9286c2.0093-.3104 3.5447-2.0448 3.5447-4.137 0-2.315-1.8766-4.1891-4.1892-4.1891zm7.1676 2.4073h.635v2.9926h1.6278v.5544H11.359zm2.9452 0h.635v3.547h-.635zm1.2439 0h.7014l.8932 2.8078h.0427l.8862-2.8078h.6752l-1.2273 3.547h-.7322zm3.81.0024h2.296v.5473h-1.6609v.9407h1.5709v.5165h-1.5709v.9928h1.661v.5497h-2.296Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Facebook Live</title><path d="M9.4777 7.8108a.4611.4611 0 0 0-.462.462v7.452a.461.461 0 0 0 .462.462H23.538v.0024a.4611.4611 0 0 0 .462-.462V8.2728a.4611.4611 0 0 0-.462-.462zm-5.2862.0072C1.879 7.818 0 9.6922 0 12.007c0 2.0922 1.533 3.8267 3.5376 4.1394V13.218h-1.071v-1.211h1.071v-.924c0-1.0497.6208-1.6326 1.578-1.6326.4573 0 .9336.0877.9336.0877v1.0236h-.5237c-.5213 0-.6871.327-.6871.6563v.7866h1.1634l-.1872 1.2108H4.836v2.9286c2.0093-.3104 3.5447-2.0448 3.5447-4.137 0-2.315-1.8766-4.1891-4.1892-4.1891zm7.1676 2.4073h.635v2.9926h1.6278v.5544H11.359zm2.9452 0h.635v3.547h-.635zm1.2439 0h.7014l.8932 2.8078h.0427l.8862-2.8078h.6752l-1.2273 3.547h-.7322zm3.81.0024h2.296v.5473h-1.6609v.9407h1.5709v.5165h-1.5709v.9928h1.661v.5497h-2.296Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/faceit.svg b/assets/lib/simple-icons/icons/faceit.svg
index 2d965c47..cd64e0b3 100644
--- a/assets/lib/simple-icons/icons/faceit.svg
+++ b/assets/lib/simple-icons/icons/faceit.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 24 24"><title>FACEIT icon</title><path d="M24 2.7c0-.1-.1-.2-.1-.2-.1 0-.1 0-.2.1-2 3.1-4.1 6.2-6.1 9.4H.2c-.2 0-.3.3-.1.4 7.2 2.7 17.7 6.8 23.5 9.1.2.1.4-.1.4-.2V2.7z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>FACEIT</title><path d="M23.999 2.705a.167.167 0 00-.312-.1 1141.27 1141.27 0 00-6.053 9.375H.218c-.221 0-.301.282-.11.352 7.227 2.73 17.667 6.836 23.5 9.134.15.06.39-.08.39-.18z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/facepunch.svg b/assets/lib/simple-icons/icons/facepunch.svg
new file mode 100644
index 00000000..1c1da479
--- /dev/null
+++ b/assets/lib/simple-icons/icons/facepunch.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Facepunch</title><path d="M12 0C5.39 0 .004 5.388.004 12S5.39 24 12 24s11.996-5.388 11.996-12S18.627 0 12 0zm0 21.314c-5.131 0-9.294-4.164-9.294-9.297C2.706 6.884 6.869 2.72 12 2.72s9.294 4.164 9.294 9.297c0 5.133-4.163 9.297-9.294 9.297zm-.561-10.725l-1.92-1.904-1.41 1.411L6.75 8.719l-1.92 1.904L6.206 12l-1.444 1.445 1.92 1.921 1.427-1.445L9.587 15.4l1.92-1.921L10.029 12l1.41-1.411zm7.748-.051l-1.41 1.411 1.478 1.479-1.92 1.904-1.478-1.479-1.444 1.445-1.903-1.921 1.444-1.428-1.376-1.377 1.903-1.921 1.376 1.377 1.41-1.411 1.92 1.921z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/falcon.svg b/assets/lib/simple-icons/icons/falcon.svg
new file mode 100644
index 00000000..407c6c2e
--- /dev/null
+++ b/assets/lib/simple-icons/icons/falcon.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Falcon</title><path d="M15.929 19.487c0 .035.264.2.592.364 1.578.835 2.55 1.742 2.914 2.75.164.435.171.592.028.92-.178.436-.207.429.95.393 1.043-.035 1.657-.15 1.657-.314 0-.078-.857-.885-1.171-1.093a1.431 1.431 0 0 1-.186-.15 7.636 7.636 0 0 0-.321-.257 11.96 11.96 0 0 1-.372-.278 6.126 6.126 0 0 0-.25-.193l-.45-.35a4.642 4.642 0 0 0-.535-.357c-.328-.178-.528-.307-.571-.357-.05-.057-1.036-.593-1.5-.814-.214-.1-.45-.214-.514-.25-.157-.086-.271-.093-.271-.014zm-5.75-1.536a4.78 4.78 0 0 0-.056.415c-.043.5-.379 1.164-.764 1.52-.465.436-.75.572-.993.48a3.353 3.353 0 0 0-.628-.115c-.357-.043-.486-.022-.657.078-.186.108-.222.179-.222.4 0 .315-.007.307.257.165a1.02 1.02 0 0 1 .3-.108c.15 0 .093.143-.093.229-.207.093-.264.271-.278.828-.007.422.121.586.236.286.035-.093.17-.221.3-.293A1.42 1.42 0 0 0 8 21.43c.186-.314.286-.364.286-.15 0 .457.236.479.436.036.121-.243.186-.307.271-.271.236.1.515.114.615.028.1-.086.092-.114-.043-.257-.086-.093-.15-.179-.129-.193.157-.114.5-.193.85-.193.628 0 .714-.107.714-.914 0-.82-.214-1.406-.564-1.556-.179-.072-.236-.079-.257-.008zM22.535 1.062a1.22 1.22 0 0 0-.193.315c-.414.885-1.785 1.72-3.949 2.392-.193.064-.535.164-.75.236-.214.064-.635.2-.928.285-3.635 1.107-4.27 1.678-5.57 4.963-.586 1.472-.893 1.964-1.5 2.364-.507.343-.92.457-2.07.6-1.829.221-2.536.436-3.107.943-.35.3-.464.614-.464 1.242 0 .286-.029.536-.057.557-.036.022-.1.214-.15.436-.072.3-.072.45-.007.643.1.292.378.535.628.535.178 0 .186-.05.05-.371-.029-.079.014-.179.136-.307.157-.157.235-.179.72-.179.558 0 .744-.057 1.008-.3.15-.135.157-.135.357.086.421.464 1.52 1.121 2.892 1.735.65.293 1.057.643 1.364 1.186.207.357.236.457.236.97 0 .836-.3 1.408-.886 1.68-.1.05-.243.113-.307.15-.071.035-.336.063-.593.063H8.93l-.15.336a8.087 8.087 0 0 1-.25.528c-.078.158-.078.208 0 .322.093.121.122.107.464-.243.358-.364.579-.471.579-.271 0 .057-.129.2-.279.321-.35.278-.4.478-.235.95.135.385.314.5.357.235.014-.078.121-.235.235-.35.115-.107.208-.242.208-.292 0-.05.05-.129.107-.179.157-.128.221.1.121.457-.064.243-.057.314.036.414.071.079.093.186.064.307-.029.129-.014.179.05.179.1 0 .336-.221.336-.314 0-.029.064-.15.15-.264.15-.215.157-.258.021-1.014-.021-.143-.014-.265.014-.265.15 0 .664.329.693.443.05.186.264.079.264-.136a.802.802 0 0 0-.428-.678c-.236-.1-.279-.257-.086-.314.45-.143.871-.4 1.25-.779.457-.442.535-.535.828-.964.407-.592.786-.857 1.221-.857.6 0 2.485.843 3.942 1.764.679.429 2.007 1.357 2.228 1.557.043.043.286.221.543.407.257.179.7.521.986.764.285.236.542.436.57.436.236 0 .315-.614.108-.8a5.417 5.417 0 0 0-.557-.343c-.521-.293-1.528-.971-1.964-1.335-.985-.807-2.242-2.385-3.078-3.864a9.517 9.517 0 0 1-.278-.485c-.6-1.05-1.743-2.385-2.05-2.385-.121 0-.121-.008.072-.929.057-.293.142-.792.185-1.107.129-.87.314-1.863.45-2.356.386-1.45 1.207-2.457 2.7-3.3 2.092-1.192 2.927-1.928 3.527-3.12.322-.636.386-.793.579-1.507.1-.364.221-1.25.171-1.25a.391.391 0 0 0-.1.057zM3.496.484C1.839 2.198 1.003 3.926 1.003 5.647c0 .393.029.729.072.75.043.021.071.114.071.2 0 .2.172.693.4 1.157.3.621.736 1.057 1.921 1.914.929.67 1.443 1.428 1.614 2.385l.093.514.257-.107c.65-.279 1.15-.379 2.642-.536.957-.1 1.328-.243 1.771-.678.629-.629.329-1.036-1.635-2.2-2.114-1.257-2.87-1.842-3.692-2.863-.657-.822-.993-1.5-1.157-2.343-.157-.785.057-2.028.536-3.142.135-.328.25-.614.25-.642 0-.15-.236.007-.65.428Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/fampay.svg b/assets/lib/simple-icons/icons/fampay.svg
new file mode 100644
index 00000000..07f342be
--- /dev/null
+++ b/assets/lib/simple-icons/icons/fampay.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>FamPay</title><path d="M14.828 23.971a.206.206 0 01-.233-.016c-.646-.407-3.892-2.571-6.089-5.288-1.34-1.677 3.783-4.173 3.783-3.844.005 1.782.5 6.467 2.603 8.747a.268.268 0 01-.013.356l-.051.035 M13.48 13.082l4.659-2.119a4.386 4.386 0 002.542-2.636l.581-1.634a.174.174 0 00-.11-.222.171.171 0 00-.125 0l-8.897 3.771.033-.142a.902.902 0 01.439-.626c1.505-.927 6.903-3.686 6.903-3.686a6.592 6.592 0 003.53-4.112L23.444.28a.225.225 0 00-.153-.268.222.222 0 00-.144 0s-8.123 3.156-10.734 4.425C9.8 5.707 7.126 7.34 6.2 12.142c-.376 1.945.313 3.592 1.607 5.46-.006-1.836 4.637-4.02 5.673-4.52z M2.026 4.86C1.289 4.299.662 4.25.553 4.299c-.049-.174.846-.597.956-.707.362-.346.565-.804.988-1.098.863-.611 1.93-.424 2.824.064.455.25 1.709 1.071 1.728 1.112A14.02 14.02 0 018.945 5.38a.241.241 0 010 .314c-.211.203-.418.348-.675.565-1.703 1.43-2.73 5.24-2.746 5.711V12s-.999-5.38-3.498-7.14z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/fandango.svg b/assets/lib/simple-icons/icons/fandango.svg
index 0787a72c..06f4ce93 100644
--- a/assets/lib/simple-icons/icons/fandango.svg
+++ b/assets/lib/simple-icons/icons/fandango.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Fandango icon</title><path d="M13.664 6.956L8.05 8.496 9.19 12.72l5.615-1.54L15.95 15.4l-5.615 1.49 1.093 4.224-5.615 1.49L4.42 17.54c.846-.995 1.194-2.386.846-3.728-.398-1.342-1.392-2.385-2.584-2.832L1.29 5.763 12.57 2.78zm7.106-.198L18.932.05 0 5.068l1.838 6.758c1.093.2 2.087 1.043 2.385 2.236.348 1.193-.1 2.385-.944 3.18l1.788 6.708L24 18.882l-1.79-6.708c-1.142-.2-2.086-1.043-2.434-2.236-.298-1.193.1-2.435.994-3.18z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Fandango</title><path d="M13.664 6.956L8.05 8.496 9.19 12.72l5.615-1.54L15.95 15.4l-5.615 1.49 1.093 4.224-5.615 1.49L4.42 17.54c.846-.995 1.194-2.386.846-3.728-.398-1.342-1.392-2.385-2.584-2.832L1.29 5.763 12.57 2.78zm7.106-.198L18.932.05 0 5.068l1.838 6.758c1.093.2 2.087 1.043 2.385 2.236.348 1.193-.1 2.385-.944 3.18l1.788 6.708L24 18.882l-1.79-6.708c-1.142-.2-2.086-1.043-2.434-2.236-.298-1.193.1-2.435.994-3.18z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/fandom.svg b/assets/lib/simple-icons/icons/fandom.svg
index 893205e7..0d1a7124 100644
--- a/assets/lib/simple-icons/icons/fandom.svg
+++ b/assets/lib/simple-icons/icons/fandom.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Fandom icon</title><path d="M17.604.012a.603.603 0 00-.416.175l-4.493 4.485a.9.9 0 01-1.263.002L6.939.236a.603.603 0 00-.841-.002L.31 5.871c-.2.194-.311.457-.311.733v5.34c0 .271.11.533.305.726l11.277 11.144a.603.603 0 00.846 0L23.695 12.67c.194-.193.305-.454.305-.727V6.605c0-.27-.107-.528-.299-.72L18.04.189a.603.603 0 00-.435-.177zM6.615 2.5a.292.292 0 01.2.084l8.138 8.047a2.19 2.19 0 010 3.119l-2.43 2.4a.293.293 0 01-.408 0l-8.14-8.046a2.172 2.172 0 01-.65-1.561c0-.59.23-1.143.648-1.557l2.431-2.402a.292.292 0 01.211-.084zm11.15.707a2.241 2.241 0 01.278.022c.5.067.955.327 1.312.68l2.57 2.542a.284.284 0 010 .404l-3.91 3.868a.29.29 0 01-.41 0l-4-3.955a.285.285 0 010-.407l2.54-2.51a2.241 2.241 0 011.62-.644zm4.087 6.123a.29.29 0 01.341.283v1.705h-.002c0 .2-.08.39-.222.532l-9.28 9.306a.686.686 0 01-.511.225.743.743 0 01-.533-.227l-.655-.613a.284.284 0 01-.008-.41L21.697 9.412a.287.287 0 01.155-.082zm-19.424.106c.1.016.197.062.281.144l7.5 7.322c.13.13.35.396.35.717 0 .205-.047.495-.27.717l-.002-.002-.531.477a.445.445 0 01-.604-.014l-7.064-6.899a.917.917 0 01-.277-.658V9.951c0-.348.317-.566.617-.515Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Fandom</title><path d="M8.123.008a.431.431 0 00-.512.42v9.746L4.104 6.666a.432.432 0 00-.66.064.428.428 0 00-.071.239v10.064a2.387 2.387 0 00.701 1.694l4.565 4.57a2.4 2.4 0 001.693.703h3.34c.635 0 1.242-.252 1.691-.701l4.565-4.572a2.394 2.394 0 00.699-1.694V13.41a2.39 2.39 0 00-.7-1.693L8.343.125a.427.427 0 00-.219-.117zM9.646 12.51a.719.719 0 01.508.21l1.848 1.85 1.844-1.85a.714.714 0 011.015 0l1.32 1.321a.724.724 0 01.212.508v1.406a.72.72 0 01-.21.508l-3.68 3.7a.72.72 0 01-1.019 0l-3.668-3.7a.716.716 0 01-.209-.506v-1.408a.71.71 0 01.211-.506l1.32-1.322a.713.713 0 01.508-.211Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/farfetch.svg b/assets/lib/simple-icons/icons/farfetch.svg
index afc3e652..62bd1236 100644
--- a/assets/lib/simple-icons/icons/farfetch.svg
+++ b/assets/lib/simple-icons/icons/farfetch.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Farfetch icon</title><path d="M9.635 0L4.883 4.811V24h4.752v-9.593h7.119V9.6H9.635V4.811h9.482V0Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>FARFETCH</title><path d="M24 10.248V6.749H13.586c-3.062 0-4.737 1.837-4.737 4.488v2.231H4.321V8.599c0-3.425.332-5.074 4.212-5.074H24V0H6.259C2.336 0 0 2.589 0 6.386V24h4.321v-7.033h4.527V24h4.339v-7.033H24v-3.499H13.188v-1.155c0-1.461.232-2.064 2.257-2.064H24z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/fastapi.svg b/assets/lib/simple-icons/icons/fastapi.svg
new file mode 100644
index 00000000..4aa580b1
--- /dev/null
+++ b/assets/lib/simple-icons/icons/fastapi.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>FastAPI</title><path d="M12 0C5.375 0 0 5.375 0 12c0 6.627 5.375 12 12 12 6.626 0 12-5.373 12-12 0-6.625-5.373-12-12-12zm-.624 21.62v-7.528H7.19L13.203 2.38v7.528h4.029L11.376 21.62z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/fastify.svg b/assets/lib/simple-icons/icons/fastify.svg
index 001dc37f..3e676665 100644
--- a/assets/lib/simple-icons/icons/fastify.svg
+++ b/assets/lib/simple-icons/icons/fastify.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Fastify icon</title><path d="M23.245 6.49L24 4.533l-.031-.121-7.473 1.967c.797-1.153.523-2.078.523-2.078s-2.387 1.524-4.193 1.485c-1.804-.04-2.387-.52-5.155.362-2.768.882-3.551 3.59-4.351 4.173-.804.583-3.32 2.477-3.32 2.477l.006.034 2.27-.724s-.622.585-1.945 2.37l-.062-.057.002.011s1.064 1.626 2.107 1.324a2.14 2.14 0 0 0 .353-.147c.419.234.967.463 1.572.525 0 0-.41-.475-.752-1.017l.238-.154.865.318-.096-.812c.003-.003.006-.003.008-.006l.849.311-.105-.738a5.65 5.65 0 0 1 .322-.158l.885-3.345 3.662-2.497-.291.733c-.741 1.826-2.135 2.256-2.135 2.256l-.582.22c-.433.512-.614.637-.764 2.353.348-.088.682-.107.984-.028 1.564.421 2.107 2.307 1.685 2.827-.104.13-.356.354-.673.617H7.77l-.008.514-.065.051h-.645l-.009.504-.17.127c-.607.011-1.373-.518-1.373-.518 0 .481.401 1.225.401 1.225l.07-.034-.061.045s1.625 1.083 2.646.681c.91-.356 3.263-2.213 5.296-3.093l6.15-1.62.811-2.1-4.688 1.235v-1.889l5.5-1.448.811-2.1-6.31 1.662V8.367zm-11.163 4l1.459-.384.02.074-.455 1.179-1.513.398zm.503 2.526l-1.512.398.489-1.266 1.459-.385.02.074zm1.971-.424l-1.513.398.49-1.266 1.459-.385.02.073Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Fastify</title><path d="M23.245 6.49L24 4.533l-.031-.121-7.473 1.967c.797-1.153.523-2.078.523-2.078s-2.387 1.524-4.193 1.485c-1.804-.04-2.387-.52-5.155.362-2.768.882-3.551 3.59-4.351 4.173-.804.583-3.32 2.477-3.32 2.477l.006.034 2.27-.724s-.622.585-1.945 2.37l-.062-.057.002.011s1.064 1.626 2.107 1.324a2.14 2.14 0 0 0 .353-.147c.419.234.967.463 1.572.525 0 0-.41-.475-.752-1.017l.238-.154.865.318-.096-.812c.003-.003.006-.003.008-.006l.849.311-.105-.738a5.65 5.65 0 0 1 .322-.158l.885-3.345 3.662-2.497-.291.733c-.741 1.826-2.135 2.256-2.135 2.256l-.582.22c-.433.512-.614.637-.764 2.353.348-.088.682-.107.984-.028 1.564.421 2.107 2.307 1.685 2.827-.104.13-.356.354-.673.617H7.77l-.008.514-.065.051h-.645l-.009.504-.17.127c-.607.011-1.373-.518-1.373-.518 0 .481.401 1.225.401 1.225l.07-.034-.061.045s1.625 1.083 2.646.681c.91-.356 3.263-2.213 5.296-3.093l6.15-1.62.811-2.1-4.688 1.235v-1.889l5.5-1.448.811-2.1-6.31 1.662V8.367zm-11.163 4l1.459-.384.02.074-.455 1.179-1.513.398zm.503 2.526l-1.512.398.489-1.266 1.459-.385.02.074zm1.971-.424l-1.513.398.49-1.266 1.459-.385.02.073Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/fastlane.svg b/assets/lib/simple-icons/icons/fastlane.svg
new file mode 100644
index 00000000..a3f42919
--- /dev/null
+++ b/assets/lib/simple-icons/icons/fastlane.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Fastlane</title><path d="M8.144 19.182a1.445 1.445 0 00-1.237-.868l-1.615-4.976-.37-1.135c-.017.01-.112.052-.13.06-.008.01-.025.01-.033.018a.366.366 0 00-.07.037.472.472 0 01-.102.043c-.043.016-.078.034-.12.042-.035.01-.07.027-.104.036-.04.01-.083.025-.126.034-.034.01-.068.017-.103.026a.584.584 0 01-.137.017c-.035.01-.07.01-.103.017-.028 0-.054 0-.08.01h-.16c-.052 0-.095 0-.146-.01-.035 0-.07 0-.095-.01l-.165-.025c-.026-.01-.052-.01-.086-.017a2.456 2.456 0 01-.25-.06 2.498 2.498 0 01-1.633-3.137C1.7 7.97 3.102 7.23 4.417 7.65l.344-1.1A3.673 3.673 0 00.167 8.94a3.674 3.674 0 002.39 4.59 3.877 3.877 0 001.624.128l1.634 5.035a1.432 1.432 0 00-.232.267 1.47 1.47 0 00.387 2.053 1.47 1.47 0 002.2-.662 1.572 1.572 0 00-.03-1.167zM11.901.412a3.656 3.656 0 00-3.62 3.697c.01.54.147 1.09.38 1.58L4.381 8.8a1.468 1.468 0 00-.327-.138 1.47 1.47 0 00-1.83.997c-.233.78.214 1.596.996 1.83.103.032.207.05.31.05.404.025.8-.11 1.09-.38.2-.18.354-.4.43-.678a1.44 1.44 0 00.018-.764l4.237-3.08.962-.702c-.017-.018-.077-.086-.094-.103l-.026-.026c-.017-.018-.035-.036-.052-.06a.46.46 0 01-.07-.087 1.952 1.952 0 00-.076-.103c-.026-.026-.043-.06-.07-.086a1.027 1.027 0 01-.068-.11.56.56 0 00-.06-.096.746.746 0 01-.06-.12c-.017-.034-.034-.06-.043-.095l-.026-.07c-.006-.017-.014-.042-.023-.06-.01-.034-.025-.07-.034-.094-.016-.044-.025-.096-.042-.147l-.025-.096c-.01-.05-.017-.11-.026-.163 0-.025-.01-.05-.018-.085a2.269 2.269 0 01-.017-.26 2.502 2.502 0 012.475-2.526 2.502 2.502 0 012.526 2.475l1.152-.01C15.576 2.01 13.92.386 11.9.41zm11.908 8.664a3.664 3.664 0 00-4.632-2.303 3.803 3.803 0 00-1.385.851l-4.28-3.109c.026-.113.034-.233.034-.354a1.483 1.483 0 00-1.512-1.435 1.483 1.483 0 00-1.436 1.513 1.47 1.47 0 00.744 1.23c.232.128.5.205.782.197.267-.01.525-.086.73-.224l4.239 3.077.962.705.07-.12c.008-.008.008-.025.016-.034.008-.027.025-.044.034-.07.017-.034.034-.06.05-.094a.46.46 0 00.07-.112l.06-.085c.026-.035.052-.07.086-.104.026-.026.043-.05.07-.086l.094-.095.077-.078c.018-.017.035-.034.06-.05.018-.018.036-.027.053-.044a.282.282 0 01.086-.06c.04-.026.084-.052.12-.078a.528.528 0 01.084-.05c.052-.027.094-.053.146-.08.026-.008.052-.025.077-.033a2.51 2.51 0 013.412 1.477 2.507 2.507 0 01-1.572 3.17l.37 1.09c1.9-.627 2.93-2.7 2.294-4.615zm-2.166.62a1.474 1.474 0 00-1.881-.895 1.532 1.532 0 00-.284.14c-.344.214-.584.56-.662.945-.05.258-.043.533.052.8.094.257.24.463.438.627l-1.616 4.976-.37 1.134c.018 0 .112.026.138.026.017 0 .026 0 .043.01.028.008.054.008.08.017.035.01.07.017.104.025.043.01.086.026.13.035.033.01.068.017.102.034l.12.05c.035.018.07.027.103.044.04.017.076.043.12.06.033.017.06.034.093.052.026.01.043.025.06.043.018.01.035.024.052.033.026.018.06.035.086.06a.58.58 0 01.113.096c.025.016.05.042.077.06.043.033.077.076.12.12.02.016.043.034.06.06.06.06.11.13.164.197a2.505 2.505 0 01-.516 3.497 2.507 2.507 0 01-3.5-.515l-.927.686c1.205 1.616 3.5 1.96 5.116.757 1.615-1.203 1.96-3.497.756-5.112a3.82 3.82 0 00-1.237-1.058l1.632-5.036a1.479 1.479 0 001.238-1.968zM18.2 18.905a1.446 1.446 0 00-1.315-.558 1.38 1.38 0 00-.748.3c-.215.163-.37.378-.465.61H9.243c0 .017.01.12.02.137 0 .018 0 .026.01.043 0 .026.01.052.01.078 0 .034.007.07.007.112 0 .043 0 .086.01.128v.112c0 .043-.01.086-.01.13 0 .034-.01.068-.01.11-.01.044-.02.087-.02.138-.007.035-.007.07-.015.103-.01.025-.01.05-.017.08-.01.014-.01.04-.018.06-.01.03-.017.066-.026.1-.017.043-.034.095-.052.14-.01.032-.025.06-.034.092a2.771 2.771 0 01-.077.146c-.016.025-.024.05-.033.077a2.132 2.132 0 01-.138.215 2.504 2.504 0 01-3.49.583 2.501 2.501 0 01-.585-3.489l-.937-.67a3.658 3.658 0 00.86 5.096 3.656 3.656 0 005.095-.86c.318-.445.524-.97.628-1.502h5.294a1.479 1.479 0 002.252.567c.61-.508.73-1.436.232-2.08z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/fastly.svg b/assets/lib/simple-icons/icons/fastly.svg
index 057e243b..4d4d3465 100644
--- a/assets/lib/simple-icons/icons/fastly.svg
+++ b/assets/lib/simple-icons/icons/fastly.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Fastly icon</title><path d="M13.919 3.036V1.3h.632V0H9.377v1.3h.631v1.749a10.572 10.572 0 00-8.575 10.384C1.433 19.275 6.17 24 12 24c5.842 0 10.567-4.737 10.567-10.567 0-5.186-3.729-9.486-8.648-10.397zm-1.628 15.826v-.607h-.619v.607c-2.757-.158-4.955-2.38-5.101-5.137h.607v-.62h-.607a5.436 5.436 0 015.101-5.089v.607h.62v-.607a5.435 5.435 0 015.137 5.114h-.607v.619h.607a5.444 5.444 0 01-5.138 5.113zm2.26-7.712l-.39-.389-1.979 1.725a.912.912 0 00-.316-.06c-.534 0-.971.448-.971.995 0 .547.437.996.971.996.535 0 .972-.45.972-.996a.839.839 0 00-.049-.304Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Fastly</title><path d="M13.919 3.036V1.3h.632V0H9.377v1.3h.631v1.749a10.572 10.572 0 00-8.575 10.384C1.433 19.275 6.17 24 12 24c5.842 0 10.567-4.737 10.567-10.567 0-5.186-3.729-9.486-8.648-10.397zm-1.628 15.826v-.607h-.619v.607c-2.757-.158-4.955-2.38-5.101-5.137h.607v-.62h-.607a5.436 5.436 0 015.101-5.089v.607h.62v-.607a5.435 5.435 0 015.137 5.114h-.607v.619h.607a5.444 5.444 0 01-5.138 5.113zm2.26-7.712l-.39-.389-1.979 1.725a.912.912 0 00-.316-.06c-.534 0-.971.448-.971.995 0 .547.437.996.971.996.535 0 .972-.45.972-.996a.839.839 0 00-.049-.304Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/fathom.svg b/assets/lib/simple-icons/icons/fathom.svg
new file mode 100644
index 00000000..3a2025e3
--- /dev/null
+++ b/assets/lib/simple-icons/icons/fathom.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Fathom</title><path d="M14.185 0c-1.702.008-3.693.467-6.068 1.331C.115 4.244-1.581 7.881 1.33 15.883c2.912 8.002 6.55 9.698 14.552 6.786 8.002-2.913 9.699-6.55 6.786-14.552C20.62 2.491 18.214-.018 14.185 0zm2.77 6.57h1.253a.25.25 0 01.199.098.25.25 0 01.043.217L15.672 17.22a.25.25 0 01-.241.186h-1.254a.25.25 0 01-.242-.315l.169-.628.123-.457 2.486-9.252a.25.25 0 01.241-.185zm-9.184.808h.504a.25.25 0 01.25.25v.844a.25.25 0 01-.25.25h-.428a1.7 1.7 0 00-.258.012.221.221 0 00-.12.048.197.197 0 00-.049.078.886.886 0 00-.043.315v.641h.898a.25.25 0 01.25.25v.844a.25.25 0 01-.25.25h-.898v5.094a.25.25 0 01-.25.25h-.985a.25.25 0 01-.25-.25v-7.23a1.723 1.723 0 01.169-.78 1.395 1.395 0 01.453-.523c.37-.257.826-.341 1.257-.343zm3.85 2.344c.767 0 1.419.218 1.883.622.465.404.725.994.723 1.668v1.683l-.755 2.809h-.48a.25.25 0 01-.25-.25v-.187a1.84 1.84 0 01-.223.167c-.335.213-.79.352-1.39.352a2.936 2.936 0 01-1.337-.29 1.898 1.898 0 01-.883-.907 2.193 2.193 0 01-.187-.916 1.907 1.907 0 01.245-.99 1.724 1.724 0 01.646-.618c.52-.293 1.16-.396 1.788-.48H11.4c.342-.046.616-.075.827-.103a1.968 1.968 0 00.431-.088.147.147 0 00.065-.04l.01-.021a.319.319 0 00.009-.086v-.035a.809.809 0 00-.274-.638c-.178-.155-.458-.26-.847-.261-.385 0-.686.106-.89.262a.821.821 0 00-.338.588.25.25 0 01-.249.228H9.101a.25.25 0 01-.25-.261 2.139 2.139 0 01.825-1.593c.491-.391 1.165-.615 1.945-.615zm1.121 3.783c-.09.024-.187.047-.296.068-.303.06-.67.113-1.025.163a2.855 2.855 0 00-.692.171c-.196.082-.333.186-.407.308a.569.569 0 00-.08.307v.007a.604.604 0 00.062.275.554.554 0 00.176.198c.16.115.428.194.79.194.56-.002.915-.164 1.14-.39.223-.228.33-.542.332-.896v-.404z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/favro.svg b/assets/lib/simple-icons/icons/favro.svg
index 8765d827..214ee400 100644
--- a/assets/lib/simple-icons/icons/favro.svg
+++ b/assets/lib/simple-icons/icons/favro.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Favro icon</title><path d="M11.586 1.655a6.623 6.623 0 0 0-6.621 6.621v.772a7.503 7.503 0 0 1 3.31 3.269V8.276a3.302 3.302 0 0 1 3.31-3.31c.91 0 1.655-.745 1.655-1.655s-.745-1.655-1.655-1.655zM1.655 9.103C.745 9.103 0 9.848 0 10.758s.745 1.655 1.655 1.655a3.302 3.302 0 0 1 3.31 3.31v4.966c0 .91.745 1.655 1.655 1.655s1.655-.745 1.655-1.655v-4.966a6.623 6.623 0 0 0-6.621-6.621zm15.724 0c-3.655 0-6.621 2.966-6.621 6.621s2.966 6.621 6.621 6.621a6.583 6.583 0 0 0 3.462-.979c.262.579.841.979 1.503.979a1.66 1.66 0 0 0 1.655-1.655v-9.931a1.66 1.66 0 0 0-1.655-1.655c-.676 0-1.241.4-1.503.979a6.574 6.574 0 0 0-3.462-.979zm0 3.311c1.834 0 3.31 1.476 3.31 3.31s-1.476 3.31-3.31 3.31c-1.835 0-3.31-1.476-3.31-3.31s1.476-3.31 3.31-3.31z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Favro</title><path d="M11.586 1.655a6.623 6.623 0 0 0-6.62 6.62v.773a7.503 7.503 0 0 1 3.31 3.269V8.276a3.302 3.302 0 0 1 3.31-3.31A1.66 1.66 0 0 0 13.24 3.31a1.66 1.66 0 0 0-1.656-1.655zm-9.93 7.448A1.66 1.66 0 0 0 0 10.758c0 .91.745 1.655 1.655 1.655a3.302 3.302 0 0 1 3.31 3.31v4.966c0 .91.745 1.655 1.655 1.655a1.66 1.66 0 0 0 1.655-1.655v-4.966a6.623 6.623 0 0 0-6.62-6.621zm15.724 0a6.623 6.623 0 0 0-6.622 6.621 6.623 6.623 0 0 0 6.622 6.621 6.583 6.583 0 0 0 3.462-.979c.262.58.84.98 1.503.98A1.66 1.66 0 0 0 24 20.69v-9.93a1.66 1.66 0 0 0-1.655-1.655c-.676 0-1.241.4-1.503.979a6.574 6.574 0 0 0-3.462-.98zm0 3.311a3.303 3.303 0 0 1 3.31 3.31 3.303 3.303 0 0 1-3.31 3.31 3.302 3.302 0 0 1-3.31-3.31 3.303 3.303 0 0 1 3.31-3.31z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/fdroid.svg b/assets/lib/simple-icons/icons/fdroid.svg
new file mode 100644
index 00000000..9e4e7204
--- /dev/null
+++ b/assets/lib/simple-icons/icons/fdroid.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>F-Droid</title><path d="M20.472,10.081H3.528c-0.877,0-1.589,0.711-1.589,1.589v10.59c0,0.877,0.711,1.589,1.589,1.589h16.944 c0.877,0,1.589-0.711,1.589-1.589V11.67C22.061,10.792,21.349,10.081,20.472,10.081z M12,22.525c-3.066,0-5.56-2.494-5.56-5.56 s2.494-5.56,5.56-5.56c3.066,0,5.56,2.494,5.56,5.56S15.066,22.525,12,22.525z M12,12.411c-2.511,0-4.554,2.043-4.554,4.554 S9.489,21.519,12,21.519s4.554-2.043,4.554-4.554S14.511,12.411,12,12.411z M12,20.274c-1.563,0-2.881-1.103-3.221-2.568h1.67 c0.275,0.581,0.859,0.979,1.551,0.979c0.96,0,1.721-0.761,1.721-1.721c0-0.96-0.761-1.721-1.721-1.721 c-0.649,0-1.2,0.352-1.493,0.874H8.805c0.378-1.412,1.669-2.462,3.195-2.462c1.818,0,3.309,1.491,3.309,3.309 C15.309,18.783,13.818,20.274,12,20.274z M23.849,0.396c-0.001,0.001-0.002,0.002-0.002,0.003 c-0.002-0.002-0.004-0.003-0.006-0.005c0.001-0.001,0.002-0.003,0.004-0.004c-0.116-0.137-0.279-0.231-0.519-0.238 c-0.202,0.005-0.391,0.097-0.512,0.259l-1.818,2.353c-0.164-0.058-0.339-0.095-0.523-0.095H3.528c-0.184,0-0.358,0.038-0.523,0.095 L1.187,0.41c-0.121-0.162-0.31-0.253-0.512-0.259c-0.24,0.006-0.403,0.1-0.519,0.238c0.001,0.001,0.002,0.003,0.004,0.004 C0.157,0.395,0.155,0.397,0.153,0.399C0.153,0.398,0.152,0.397,0.151,0.396C0.085,0.474-0.146,0.822,0.139,1.22l1.909,2.471 C1.981,3.867,1.94,4.057,1.94,4.257v3.707c0,0.877,0.711,1.589,1.589,1.589h16.944c0.877,0,1.589-0.711,1.589-1.589V4.257 c0-0.2-0.041-0.39-0.109-0.566l1.909-2.471C24.146,0.822,23.915,0.474,23.849,0.396z M6.904,8.228c-0.987,0-1.787-0.8-1.787-1.787 s0.8-1.787,1.787-1.787s1.787,0.8,1.787,1.787S7.891,8.228,6.904,8.228z M17.229,8.228c-0.987,0-1.787-0.8-1.787-1.787 s0.8-1.787,1.787-1.787c0.987,0,1.787,0.8,1.787,1.787S18.216,8.228,17.229,8.228z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/feathub.svg b/assets/lib/simple-icons/icons/feathub.svg
index 23c7f334..10264140 100644
--- a/assets/lib/simple-icons/icons/feathub.svg
+++ b/assets/lib/simple-icons/icons/feathub.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>FeatHub icon</title><path d="M8.73.01h6.54v6.867H8.73V.01zm0 17.113h6.54v6.867H8.73v-6.867zM.01 8.73h23.98v6.54H.01V8.73z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>FeatHub</title><path d="M8.571 0v6.857h6.858V0zM0 8.571v6.858h24V8.57zm8.571 8.572V24h6.858v-6.857z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/fedex.svg b/assets/lib/simple-icons/icons/fedex.svg
new file mode 100644
index 00000000..48fbb53d
--- /dev/null
+++ b/assets/lib/simple-icons/icons/fedex.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>FedEx</title><path d="M22.498 14.298c-.016-.414.345-.751.75-.755a.745.745 0 0 1 .752.755.755.755 0 0 1-.751.745c-.395.002-.759-.346-.751-.745zm.759-.083c.067-.02.164-.042.162-.13.007-.09-.086-.133-.162-.134h-.163v.263c0 .001.165-.002.163.001zm-.163.107v.418h-.14v-.91h.327c.156-.021.294.092.286.253a.218.218 0 0 1-.156.19c.162.083.108.322.173.467h-.156a2.355 2.355 0 0 1-.04-.205c-.018-.093-.047-.229-.17-.213h-.124zm.76-.024a.603.603 0 0 0-.605-.632c-.338-.012-.62.302-.605.632a.619.619 0 0 0 .605.622.61.61 0 0 0 .605-.622zm-5.052-.579l-.878 1.008h-1.306l1.559-1.745-1.56-1.75h1.355l.902.997.878-.998h1.306l-1.543 1.743 1.559 1.753h-1.371l-.901-1.008zm-4.703-.352v-.827h1.904v-1.506l1.724 1.948-1.724 1.941v-1.556h-1.904zm1.56 1.36h-3.2V9.044h3.224v1.024H13.77v1.163h1.888v.958h-1.904v1.522h1.904v1.016zm-5.705-.655c-.54.017-.878-.552-.877-1.04-.01-.507.307-1.123.878-1.105.579-.025.871.6.845 1.103.023.501-.29 1.062-.846 1.042zM4.743 12.41c.076-.358.403-.67.78-.663a.788.788 0 0 1 .803.663H4.743zm15.182.564l1.815-2.047h-2.125l-.74.844-.763-.844h-4.037v-.548h1.912V8.741H10.84v2.58c-.362-.448-.981-.559-1.526-.492-.782.123-1.427.762-1.634 1.514-.254-.958-1.179-1.588-2.157-1.554-.781.009-1.6.365-1.987 1.071v-.818h-1.87v-.9h2.043v-1.4H0v6.287h1.666v-2.644h1.666a7.59 7.59 0 0 0-.082.622c-.013 1.232 1.042 2.27 2.274 2.236a2.204 2.204 0 0 0 2.157-1.432H6.254c-.14.268-.441.38-.73.36-.457.009-.83-.417-.829-.86h2.914c.083 1.027.988 1.966 2.043 1.947a1.53 1.53 0 0 0 1.19-.639v.41h7.215l.754-.86.754.86h2.192l-1.832-2.055z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/fedora.svg b/assets/lib/simple-icons/icons/fedora.svg
index 8606a736..7f461d0e 100644
--- a/assets/lib/simple-icons/icons/fedora.svg
+++ b/assets/lib/simple-icons/icons/fedora.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Fedora icon</title><path d="M12.004.002C7.29-.063 2.744 2.963.957 7.318c-.884 1.953-1 4.116-.945 6.225.01 2.666-.02 5.334.015 7.998.113 1.542 1.653 2.614 3.133 2.441 3.257-.02 6.514.043 9.77-.035 4.789-.303 9.154-3.796 10.525-8.39 1.401-4.344.03-9.412-3.389-12.442A11.967 11.967 0 0012.004.002zm3.52 2.842c.406-.01.807.032 1.197.117.557.286.945.826.902 1.383-.058.75-.587 1.247-1.379 1.246a2.95 2.95 0 00-.72-.09c-1.726-.053-3.168 1.61-2.97 3.305.023.796-.045 1.601.032 2.392.333.457.987.18 1.475.256.276-.001.562.007.85.008a.134.134 0 00.042.008 1.29 1.29 0 011.291 1.295 1.29 1.29 0 01-1.299 1.295.14.14 0 00-.06.013c-.777.003-1.553-.001-2.33.002-.066 1.616.197 3.275-.31 4.84-.864 2.705-3.97 4.336-6.684 3.62-.537-.285-.91-.791-.868-1.335.062-.796.656-1.308 1.532-1.24.075.006.113.012.168.02.716.14 1.477.034 2.107-.391 1.127-.645 1.502-1.977 1.396-3.192-.02-.687.043-1.384-.033-2.066-.333-.456-.984-.18-1.472-.256H7.59a.137.137 0 00-.065-.015 1.29 1.29 0 01-1.298-1.295c0-.72.574-1.29 1.29-1.295a.136.136 0 00.063-.016h2.316c.059-1.507-.159-3.046.213-4.523.648-2.376 2.951-4.12 5.414-4.086zm.705.052l.13.024-.13-.024zm1.224.28c1.444.543 2.636 1.706 3.25 3.12A81.134 81.134 0 0117.8 3.704a1.762 1.762 0 00-.346-.527zm.45.935a86.952 86.952 0 002.966 2.596c-.014-.044-.033-.087-.049-.13.166.448.265.918.301 1.402a77.84 77.84 0 01-3.39-2.975l.015-.033c.088-.182.143-.386.16-.606a1.393 1.393 0 000-.197c0-.019-.002-.038-.004-.057zm.02.196c-.058.516-.058.516 0 0zm-.314.894a85.339 85.339 0 003.53 3.06c0 .071.015.139.013.21a4.94 4.94 0 01-.06.814 78.521 78.521 0 01-4.082-3.584 1.56 1.56 0 00.6-.5zm.526 1.83c.898.8 1.856 1.623 2.918 2.485a5.215 5.215 0 01-.242.863 74.025 74.025 0 01-2.307-1.963l.002.055c0 .076-.004.152-.01.226.703.612 1.44 1.237 2.24 1.885-.109.26-.234.512-.38.752a73.598 73.598 0 01-2.06-1.752 3.13 3.13 0 00-.161-2.55zm.068 2.758c.644.56 1.319 1.131 2.043 1.72a5.867 5.867 0 01-.5.651 74.233 74.233 0 01-1.99-1.705c.185-.2.332-.425.447-.666zm-.603.816a82.538 82.538 0 002.005 1.71c-.19.199-.392.385-.607.556a75.851 75.851 0 01-2.043-1.771c.203-.107.396-.246.572-.424.027-.022.047-.047.073-.07zm-.86.594a84.363 84.363 0 002.088 1.799c-.23.17-.48.312-.734.445a79.052 79.052 0 01-2.256-2.005c-.024.002-.05.001-.074.003l-.026-.015a3.506 3.506 0 001.002-.227zm-10.045.248l-.021.014h-.012l.004.004c-.211.139-.387.328-.51.55l-.45-.427c.323-.075.655-.126.99-.14zm-.994.14l-.127.032.127-.031zm-.27.075l.622.592a1.55 1.55 0 00.008 1.045c-.468-.444-.94-.893-1.432-1.348.26-.118.529-.21.803-.289zm-1.029.4c.72.674 1.424 1.347 2.133 2.03a2.68 2.68 0 00-.826.242c-.64-.611-1.3-1.23-1.998-1.865.22-.152.453-.285.691-.406zm12.02.204c.473.42.958.846 1.474 1.285a5.37 5.37 0 01-.908.342l-.617-.498a1.55 1.55 0 00.05-1.13zm-12.9.345c.665.614 1.316 1.228 1.958 1.844-.83.485-1.422 1.376-1.527 2.332A98.32 98.32 0 001.777 14.8a5.573 5.573 0 00-.091.219c.777.699 1.522 1.392 2.252 2.087.002.284.042.57.14.848.053.19.13.366.22.533a107.233 107.233 0 00-2.859-2.634c.026-.108.04-.217.073-.323.137-.518.366-.998.65-1.441.69.622 1.35 1.242 2.002 1.861a2.98 2.98 0 01.107-.232 99.448 99.448 0 00-1.986-1.819c.15-.214.311-.42.49-.613.662.602 1.296 1.202 1.926 1.803.054-.06.11-.122.168-.178-.618-.585-1.26-1.18-1.94-1.79a5.82 5.82 0 01.592-.509zm12.718.153l-.027.265.027-.265zm1.733.754l-.051.023.05-.023zm-1.72.091l.44.354c-.287.06-.582.096-.88.103h-.016a1.56 1.56 0 00.457-.457zM1.386 16.102c1.32 1.188 2.532 2.356 3.781 3.558l.174.166c-.237.107-.44.266-.594.465A125.931 125.931 0 001.3 17.076a5.176 5.176 0 01.086-.975zm-.07 1.289a154.272 154.272 0 013.294 3.111c-.109.2-.18.427-.199.676a1.406 1.406 0 000 .166c-.92-.884-1.857-1.779-2.88-2.71a5.65 5.65 0 01-.216-1.243zm.378 1.714c.943.876 1.852 1.748 2.778 2.64l.021.02c.07.195.185.372.326.532-1.445-.56-2.562-1.767-3.125-3.192zm3.352.264c.179.14.374.26.58.358l-.025.005-.018-.015a3.014 3.014 0 01-.537-.348zm1.047 3.252l.15.025-.15-.025zm.228.04s.09.007.274.025a33.668 33.668 0 00-.274-.026Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Fedora</title><path d="M12.001 0C5.376 0 .008 5.369.004 11.992H.002v9.287h.002A2.726 2.726 0 0 0 2.73 24h9.275c6.626-.004 11.993-5.372 11.993-11.997C23.998 5.375 18.628 0 12 0zm2.431 4.94c2.015 0 3.917 1.543 3.917 3.671 0 .197.001.395-.03.619a1.002 1.002 0 0 1-1.137.893 1.002 1.002 0 0 1-.842-1.175 2.61 2.61 0 0 0 .013-.337c0-1.207-.987-1.672-1.92-1.672-.934 0-1.775.784-1.777 1.672.016 1.027 0 2.046 0 3.07l1.732-.012c1.352-.028 1.368 2.009.016 1.998l-1.748.013c-.004.826.006.677.002 1.093 0 0 .015 1.01-.016 1.776-.209 2.25-2.124 4.046-4.424 4.046-2.438 0-4.448-1.993-4.448-4.437.073-2.515 2.078-4.492 4.603-4.469l1.409-.01v1.996l-1.409.013h-.007c-1.388.04-2.577.984-2.6 2.47a2.438 2.438 0 0 0 2.452 2.439c1.356 0 2.441-.987 2.441-2.437l-.001-7.557c0-.14.005-.252.02-.407.23-1.848 1.883-3.256 3.754-3.256z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/fedramp.svg b/assets/lib/simple-icons/icons/fedramp.svg
deleted file mode 100644
index d899e386..00000000
--- a/assets/lib/simple-icons/icons/fedramp.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>FedRAMP icon</title><path d="M1.886 3.412A1.85 1.85 0 000 5.27v15.319h3.922v-6.094h4.934V10.66H3.922V7.336h14.595a1.67 1.67 0 010 3.324h-6.844a1.431 1.431 0 00-1.298 1.325v8.601h3.919V14.54h2.168l3.138 6.047h4.378l-3.46-6.657a5.442 5.442 0 00-2.001-10.517z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/feedly.svg b/assets/lib/simple-icons/icons/feedly.svg
index dd3d19b0..1b7002b4 100644
--- a/assets/lib/simple-icons/icons/feedly.svg
+++ b/assets/lib/simple-icons/icons/feedly.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Feedly icon</title><path d="M13.86 1.989a2.609 2.609 0 0 0-3.726 0L.768 11.527a2.729 2.729 0 0 0 0 3.795l6.684 6.808a2.618 2.618 0 0 0 1.74.664h5.613a2.616 2.616 0 0 0 1.872-.791l6.554-6.675a2.726 2.726 0 0 0 0-3.795l-9.37-9.544zm-.26 17.422l-.935.95a.372.372 0 0 1-.268.114h-.8a.376.376 0 0 1-.247-.096l-.954-.97a.39.39 0 0 1 0-.542l1.337-1.36a.37.37 0 0 1 .531 0l1.337 1.361a.389.389 0 0 1 0 .543zm0-5.711l-3.737 3.808a.374.374 0 0 1-.268.111h-.799a.376.376 0 0 1-.25-.093l-.951-.97a.391.391 0 0 1 0-.544l4.139-4.214a.372.372 0 0 1 .531 0l1.337 1.362a.386.386 0 0 1 0 .54zm0-5.707l-6.54 6.66a.372.372 0 0 1-.268.113h-.8a.373.373 0 0 1-.249-.094L4.79 13.7a.388.388 0 0 1 0-.54l6.943-7.07a.372.372 0 0 1 .531 0l1.337 1.36a.389.389 0 0 1 0 .543z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Feedly</title><path d="M13.85995 1.98852a2.60906 2.60906 0 00-3.72608 0L.76766 11.52674a2.72906 2.72906 0 000 3.79508l6.68415 6.80816a2.61806 2.61806 0 001.74004.66401h5.61313a2.61606 2.61606 0 001.87204-.79101l6.55415-6.67516a2.72606 2.72606 0 000-3.79508l-9.37021-9.54422zm-.26 17.4224l-.93502.95002a.372.372 0 01-.268.114h-.80003a.376.376 0 01-.247-.096l-.95402-.97002a.39.39 0 010-.54201l1.33703-1.36003a.37.37 0 01.531 0l1.33704 1.36103a.389.389 0 010 .543zm0-5.71113l-3.73709 3.80808a.374.374 0 01-.268.111h-.79902a.376.376 0 01-.25-.093l-.95103-.97002a.391.391 0 010-.54401l4.1391-4.2141a.372.372 0 01.531 0l1.33704 1.36204a.386.386 0 010 .54zm0-5.70713L7.0598 14.6528a.372.372 0 01-.268.113h-.80002a.373.373 0 01-.24901-.094l-.95302-.97202a.388.388 0 010-.54001L11.7329 6.0896a.372.372 0 01.531 0l1.33704 1.36004a.389.389 0 010 .543z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ferrari.svg b/assets/lib/simple-icons/icons/ferrari.svg
index ef79b832..9f6fb507 100644
--- a/assets/lib/simple-icons/icons/ferrari.svg
+++ b/assets/lib/simple-icons/icons/ferrari.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Ferrari icon</title><path d="M20.51 9.773c-.096.13-.139.387-.278.602-.194.3-.473.665-.613.665-.075 0-.096-.171-.096-.171s-.097-.29.064-.655c.118-.258.183-.333.333-.527.14-.182.226-.279.322-.472.086-.172.108-.204.161-.473.011-.064-.01-.204-.075-.193-.086 0-.322.515-.569.805-.236.269-.677.613-.677.613s-.043.032-.043-.054c-.01-.075-.021-.3.022-.505.043-.204.107-.408.29-.72.204-.354.462-.6.59-.73.054-.053.215-.15.13-.204-.076-.043-.301.15-.473.28-.215.16-.29.204-.505.461a2.338 2.338 0 00-.268.365s-.204.333-.258.656c-.054.322-.054.504-.054.504s0 .29.032.462c.022.183.097.462.097.462s.108.311.15.505c.043.193.119.762.119.762s.053.408.021.795c-.032.386-.064.612-.107.73s-.161.43-.355.644c-.182.204-.225.237-.225.237s-.194.16-.355.247a3.727 3.727 0 01-.504.225 2.301 2.301 0 01-.269.032h-.14l-.042-.032-.022-.086s-.107-.419-.236-.687c-.108-.226-.333-.537-.333-.537s-.387-.526-.687-.816c-.344-.344-.73-.602-.967-.784a5.056 5.056 0 00-.28-.183s-.783-.784-1.062-1.407c-.194-.43-.322-.74-.269-1.213.011-.107.054-.312.075-.312l.14.043c.01.011.14.13.258.172a1.769 1.769 0 00.333.065c.053.021.15.053.214.086.065.032.162.096.162.096l.182.14.193.15s.108.075.14.086c.032.01.054.022.064.022h.043s.043-.011.054-.054c.01-.054-.054-.01-.15-.118a.697.697 0 01-.15-.183s-.022-.086-.108-.182c-.086-.097-.193-.183-.193-.183s-.075-.054-.183-.086c-.107-.032-.14-.032-.15-.075-.01-.043.129-.021.129-.021s.16.021.29.085c.129.065.204.14.204.14l.086.075.053.054.054.032s.054.054.064-.021c.011-.065-.01-.118-.021-.13l-.054-.053-.215-.182c-.064-.065-.107-.108-.171-.15a1.305 1.305 0 00-.28-.151c-.107-.043-.171-.032-.279-.086-.075-.032-.14-.054-.182-.118-.011-.01-.065-.054.032-.032.097.021.161.053.268.075.172.043.28.043.44.096.065.022.151.065.151.065l.204.086s.28.15.473.16a.933.933 0 00.418-.064.812.812 0 00.215-.128.476.476 0 00.054-.065l.021-.054v-.043c-.053-.064-.16.108-.333.14-.182.032-.171.054-.29.032a.477.477 0 01-.3-.15c-.172-.161-.236-.312-.462-.408a2.134 2.134 0 00-.268-.086s-.237-.075-.366-.15c-.096-.054-.3-.086-.236-.172.032-.043.29.107.483.129.14.021.237.01.344.01.107 0 .258-.032.28-.032.02-.01.107 0 .182.022.075.021.118.053.193.086.075.032.161.085.183.085l.043.011.021-.021.01-.022-.01-.021-.032-.022-.065-.043s-.096-.053-.182-.14c-.086-.085-.161-.182-.29-.225-.129-.043-.28-.064-.28-.064l-.15-.011-.064-.01s-.107-.033-.022-.054a.939.939 0 01.15-.033.494.494 0 01.248.011c.086.032.225.107.236.107.01.011.14.108.28.14.139.032.321.043.321.043l.086-.021.043-.011.033-.022-.011-.053s0-.043-.065-.054a.71.71 0 01-.311-.118c-.118-.086-.204-.172-.204-.172s-.086-.075-.258-.118c-.16-.043-.215-.043-.215-.043l-.053-.022-.118-.053s-.054-.032-.097-.086c-.043-.054-.107-.15.075-.097a.86.86 0 01.226.086s.096.097.182.107c.054.011.097.022.13-.021.053-.054-.098-.118-.205-.193-.086-.054-.172-.194-.172-.194s-.064-.053.032-.032c.097.022.269.13.269.13s.086.042.129.053c.032.01.118.064.16.086.033.01.13.032.194.064.086.054.129.14.172.172.043.032.075.086.129.097.054.01.064.032.096.01.033-.021.043-.032.043-.032s.011-.021-.043-.054a.57.57 0 01-.118-.118l-.021-.043-.01-.043-.055-.086-.096-.14s-.15-.203-.29-.278c-.129-.076-.226-.119-.226-.119s-.064-.032-.096-.053c-.054-.043-.076-.075-.118-.13-.054-.064-.076-.106-.14-.17-.118-.119-.483-.183-.344-.27.075-.042.172-.02.215-.01.043.01.14.054.236.086.065.021.108.021.172.043.065.021.14.032.172.053.032.022.064.065.086.076.01.01.097.15.247.225.15.075.225.129.376.14.118.01.311-.032.311-.032s.054-.022.01-.076c-.053-.053-.053-.064-.096-.075-.172-.064-.311-.043-.44-.172-.054-.053-.075-.064-.118-.15s-.022-.107-.054-.161c-.021-.054-.075-.129-.075-.129s-.161-.193-.333-.29a1.93 1.93 0 01-.333-.215c-.032-.021-.097-.107-.097-.107l-.053-.086-.032-.064c-.022-.119.193.032.311.075.193.064.29.15.483.215.108.032.172.032.28.075.182.075.236.257.43.279.106.01.321.054.278-.043-.043-.107-.257-.107-.365-.236-.054-.054-.054-.108-.107-.161-.086-.108-.29-.204-.29-.204s-.065-.054-.14-.204c-.064-.15-.225-.258-.515-.398-.194-.096-.58-.118-.43-.215.086-.064.161-.053.28-.021.117.043.16.097.257.14.097.043.14.053.161.064.022.01.097.043.13.043.02.01.182.032.225.043l.214.054.172.064s.086.032.14.032c.053 0 .14-.021.14-.021l.064-.043.01-.022s.033-.053-.053-.064c-.075-.01-.118-.01-.129-.01l-.075-.022-.032-.011s-.15-.118-.28-.172c-.14-.054-.16-.064-.16-.064l-.054-.011-.065-.01s-.054 0-.14-.076c-.085-.075-.118-.118-.193-.193l-.096-.097s-.086-.064-.086-.118c.01-.086.193.097.193.097l.129.086s.107.075.3.085c.194.011.43-.053.43-.053s.032-.022.14.01a.696.696 0 01.193.097l.086.075.129.14.021-.01c.011-.012.065-.065-.032-.183-.097-.119-.258-.226-.258-.226s-.214-.129-.43-.172c-.214-.043-.31-.043-.31-.043s-.162 0-.258-.107c-.097-.107-.161-.215-.161-.215l-.033-.15s-.053-.065-.16-.108c-.097-.043-.205-.107-.205-.107s-.16-.054-.172-.129c-.032-.14.269 0 .43.032.15.033.215.086.365.118a.915.915 0 00.344.033c.075 0 .118-.011.193-.022.075 0 .129-.01.204 0 .107.022.15.075.258.118.064.033.096.065.172.076.064.01.193.053.171-.011l-.032-.043c-.053-.075-.118-.075-.182-.13-.14-.106-.204-.192-.365-.268a.923.923 0 00-.29-.096c-.086-.01-.15.01-.237-.01-.096-.033-.129-.076-.225-.13-.15-.086-.236-.16-.398-.225-.107-.043-.29-.086-.29-.086l-.075-.011-.032-.01c-.15-.054.269-.173.462-.226.097-.022.14-.043.236-.032.086.01.183.128.28.075.139-.075-.162-.28-.258-.312-.13-.053-.355-.01-.355-.01l-.494-.011-.14-.022s-.085 0-.15-.075c-.064-.075-.311-.376-.59-.419-.29-.043-.376 0-.398-.021-.247-.387-.504-.473-.698-.655-.053-.054-.14-.172-.16-.161-.022.01-.055.172-.108.311-.065.161-.022.236.01.3.043.065.097.108-.01.173-.108.064-.247.043-.247.043s-.118-.022-.215-.076c-.097-.043-.3-.128-.3-.128S11.156.57 11.027.58c-.129.01-.14.021-.236.032-.054 0-.075 0-.129.01-.043.011-.097-.02-.097.033 0 .053.108.053.183.086.075.032.247.032.215.075-.043.043-.204.054-.215.043-.01 0-.118-.022-.204-.022-.14.011-.15.011-.355.108-.032.01-.021.086.043.064a1.12 1.12 0 01.301-.043c.129 0 .204.043.333.075.107.033.118.054.28.076.031 0 .096-.022.096.021 0 .022-.043.054-.043.054s-.097.021-.086.053c.021.043.107 0 .15 0s.108.011.097.054l-.021.032a2.294 2.294 0 00-.29.097c-.269.107-.376.236-.634.365-.247.118-.644.269-.644.269s-.119.064-.29.107c-.172.043-.183.032-.301.054a.567.567 0 00-.268.086.522.522 0 00-.15.118l-.151.225-.086.13c-.022.042-.043.064-.054.107-.021.053-.032.075-.043.128-.032.13 0 .204.022.333.01.033.01.054.021.086.01.032.054.065.054.065l.043.01s.15-.01.247-.032c.097-.021.236-.054.236-.054l.183-.053.118-.043s.075 0 .086.043c.01.032-.022.086-.022.086s-.064.032-.118.053c-.054.022-.182.054-.193.065l-.14.043-.118.01s-.021.011-.043.043c-.021.033-.021.033-.021.054.021.022.032.043.053.065.043.032.065.053.118.064.076.032.119.022.194.022a.582.582 0 00.268-.065c.086-.054.118-.054.236-.097a.554.554 0 01.119-.021c.204-.022.322.01.526.043.204.032.3.097.505.129.214.032.343.096.569.043.107-.022.172-.075.225.032.054.097.043.15.043.15s0 .065-.075.269c-.075.204-.311.709-.311.709l-.161.322s-.13.257-.43.59c-.3.333-.322.355-.322.355s-.161.118-.322.322c-.161.204-.161.28-.312.43a1.36 1.36 0 01-.268.225c-.118.075-.258.054-.634.311-.322.226-.494.409-.515.398-.022-.01-.13-.097-.172-.118l-.655-.44-.258-.172-.118-.076-.022-.043-.064-.086s-.097-.118-.215-.214a.916.916 0 00-.44-.237c-.183-.053-.3-.085-.483-.021a.642.642 0 00-.269.172c-.107.107-.129.193-.215.322s-.171.247-.214.311a3.36 3.36 0 00-.13.237s-.214.343-.332.569c-.14.247-.194.397-.322.633-.204.376-.494.763-.57.935a7.631 7.631 0 01-.085.193s-.022.097-.033.161c-.01.065-.01.172-.021.215a.303.303 0 01-.054.118c-.01.01-.129.258-.172.419-.043.161-.14.666-.021.73.118.065.988-.311 1.106-.676.075-.237-.236-.355-.15-.57.032-.075.053-.086.107-.16.086-.14.054-.43.215-.699.118-.193.354-.44.676-.805a3.51 3.51 0 00.398-.59s.043-.13.129-.108c.096.021.182.01.182.01l.043.033.086.086.129.193s.215.311.29.397c.075.086.15.15.258.237.118.107.16.16.311.279.215.172.14.236-.14.086a1.84 1.84 0 00-.365-.14c-.129-.032-.612-.161-.859-.193-.236-.032-.28-.022-.28-.022s-.117-.01-.257.075c-.14.086-.215.15-.215.15s-.16.183-.171.216c-.011.032-.086.16-.086.16s-.043.065-.054.14c-.022.075-.01.15-.01.15l.01.162.01.15s.033.376.108.752c.022.107.043.28.043.28l.054.386s.032.408.064.547c.032.13.054.14.075.226.043.161-.032.236.043.43.075.193.14.171.215.29.054.085.075.107.118.214.043.108.183.462.344.72.172.268.397.601.548.569.15-.032.257-.269.257-.269s.172-.461.065-.912c-.108-.462-.602-.247-.666-.58-.01-.076 0-.194 0-.194s-.01-.14-.032-.182c-.022-.043-.194-.365-.258-.634-.054-.204-.043-.859-.086-1.042-.118-.472-.129-.43-.064-.515.075-.086.14-.064.14-.064l.096.01.075.033.14.085.193.15.365.237s.204.118.29.161c.086.043.161.097.161.097l.097.064.16.118.033.033.022.043s.075.171.397.354c.258.15.483.107.58.225.021.022.204.269.29.42.107.171.236.375.279.44.043.064.311.397.311.397l.355.387.462.43.418.353.269.215s.236.226.505.408c.257.172.268.194.44.312.129.086.3.204.472.333.172.14.366.397.29.483-.053.032-.15-.107-.333-.269-.15-.128-.225-.193-.375-.3-.194-.15-.29-.226-.505-.355-.108-.064-.3-.182-.312-.16-.075.225-.064.44-.053.719.01.193.043.386.107.633.054.237.108.366.193.591.086.226.247.58.247.58l.247.494.226.376.118.193.043.065s.054.128 0 .214-.118.269-.215.28c-.096.021-.322.032-.322.032l-1.278-.022-.666-.053s-.075-.043-.461-.043c-.226 0-.409.096-.537.107-.108.01-.634-.032-.988.107-.333.14-.484.172-.602.387-.086.161.419.419.838.516.676.15.483-.14.74-.323.033-.021.044-.043.076-.053.172-.054.269.086.44.086.194 0 .301-.065.494-.097.978-.129 2.503.333 2.503.333s.375.118.547.086c.204-.043.161-.118.226-.236.053-.097.032-.119.043-.226 0-.064-.011-.097-.022-.161-.043-.183-.16-.44-.16-.44s-.087-.194-.119-.29c-.043-.14-.086-.226-.107-.376-.065-.398-.054-.365-.054-.59 0-.409.043-.634.15-1.032.161-.58.462-.827.688-1.385.064-.15.064-.365.14-.387.085-.01.074.269.031.43-.14.558-.483.794-.644 1.364-.118.44-.183.698-.15 1.149.01.247.107.633.107.633s.129.43.193.591c.065.161.194.43.194.43l.29.515.15.247s.107.097.054.258c-.054.16-.161.258-.29.397-.365.43-1.214 1.063-1.429 1.214-.3.225-.29.29-.311.354-.118.344-.462.354-.838.763-.086.085-.311.322-.268.526.021.075.945.236 1.482.01.419-.182.054-.386.172-.59.086-.15.3-.15.397-.28.161-.214.054-.203.193-.375.462-.559.763-.88 1.59-1.386.075-.043.215-.107.215-.107s.118-.054.16-.118c.054-.086.044-.161.044-.258 0-.064-.011-.097-.011-.161 0-.075.01-.118-.01-.193-.022-.118-.098-.215-.14-.28a.769.769 0 01-.162-.354.9.9 0 01.033-.601c.086-.226.279-.408.279-.408l.483-.323s.419-.3.548-.418c.14-.118.408-.365.601-.645.226-.311.344-.504.44-.88.033-.14.065-.355.065-.355s0-.15.086-.16c.086-.012.107.02.107.02s.075.044.097.258c.01.215-.054.462-.054.462s-.064.247-.086.398c-.01.096-.01.15-.01.257 0 .183.075.333.075.333s.043.032.043-.043c0-.086.021-.215.053-.343.033-.108.054-.086.118-.269.086-.236.011-.215.054-.354.022-.065.075-.13.14-.13.064 0 .075.087.075.087s.064.279.01.537c-.053.257-.246.612-.246.612l-.15.258s-.108.182-.151.3a.495.495 0 00-.032.301c.032.129.129.3.182.268.043-.032-.064-.14.065-.397.129-.258.3-.419.3-.419s.237-.279.344-.494c.097-.193.193-.504.193-.504s.076-.28.054-.516c-.01-.225-.054-.344-.054-.344l-.096-.171-.054-.13.022-.074c.021-.011.096.043.16.128a.854.854 0 01.162.344c.032.107.043.204.043.3 0 .087-.033.441.096.667.054.107.183.354.194.247.021-.247-.086-.366-.076-.591.011-.258.076-.193.097-.322.022-.14.054-.172.032-.355-.021-.171-.096-.397-.096-.397l-.075-.172-.033-.064s.022-.032.054-.032l.258-.086s.333-.15.462-.258c.14-.097.3-.269.3-.269s.215-.268.322-.461c.258-.484.258-1.096.247-1.375a4.55 4.55 0 00-.086-.623s-.085-.43-.064-.709c.022-.279.043-.408.043-.408s-.01-.279.226-.58c.236-.3.343-.494.386-.72.043-.192-.021-.504-.107-.386zM13.402 7.84c-.032 0-.075-.043-.075-.043s-.01-.01.022-.032c.032-.021.075-.01.075-.01l.032.01.054.075c-.01.032-.075.011-.108 0zm.13-.354c-.033-.01-.087-.043-.087-.043s-.01-.022.022-.043c.032-.022.086-.01.086-.01l.032.02c.01.011.064.065.064.087 0 .032-.075 0-.118-.011zm.117-.365c-.043-.011-.107-.054-.107-.054s-.01-.021.032-.043c.043-.021.108-.01.108-.01l.043.02c.021.022.075.076.075.108-.01.032-.108-.01-.15-.021zm.097-.333c-.043-.01-.107-.054-.107-.054s-.011-.021.032-.043c.043-.021.107-.01.107-.01l.043.02c.022.022.075.076.075.108-.01.022-.107-.021-.15-.021zm.097-.398c-.054-.01-.118-.064-.118-.064s-.011-.021.032-.054c.043-.032.118-.01.118-.01l.043.021c.021.022.086.086.086.118 0 .043-.118-.01-.161-.01zm.064-.43c-.064-.01-.15-.074-.15-.074s-.022-.033.043-.065c.053-.032.14-.021.14-.021l.053.032a.54.54 0 01.107.15c0 .043-.128-.01-.193-.021zm.043-.429a.522.522 0 01-.182-.096s-.022-.033.043-.076c.064-.042.171-.021.171-.021s.033.01.065.032c.032.032.118.13.129.183.01.053-.15-.01-.226-.022zm.065-.494c-.086-.01-.204-.107-.204-.107s-.022-.043.053-.086c.075-.054.194-.021.194-.021s.042.01.075.043c.032.032.14.15.15.204 0 .064-.183-.022-.268-.033zM13.97 3.04c-.065-.01-.15-.075-.15-.075s-.022-.022.042-.054c.065-.032.15-.01.15-.01s.033.01.054.031c.022.022.108.097.108.14 0 .032-.14-.021-.204-.032zm.236.483c.01.043-.14-.01-.215-.021a.503.503 0 01-.161-.086s-.021-.032.043-.065c.064-.043.15-.021.15-.021s.033.01.065.032a.566.566 0 01.118.161zm-.312.795c.065-.043.172-.022.172-.022s.032.011.065.033c.032.032.118.128.129.182.01.054-.15-.01-.226-.032-.075-.01-.183-.097-.183-.097s-.021-.021.043-.064zm.14-.365c-.075-.011-.183-.097-.183-.097s-.021-.032.043-.075c.065-.043.172-.022.172-.022s.032.011.065.033c.032.032.118.128.129.182.01.065-.15 0-.226-.021zm.14-1.611c.086.021.107.075.064.075-.043.01-.064.01-.097.01-.096 0-.085-.042-.214.022-.13.065-.033.032-.215.097-.172.064-.129-.108-.129-.108s.01-.032.032-.118.13 0 .204 0c.14 0 .258 0 .355.022zm-.484-.666l.054.032a.54.54 0 01.107.15c.011.044-.128-.01-.182-.02a.456.456 0 01-.15-.076s-.022-.032.043-.065c.053-.042.128-.021.128-.021zm-.386-.515c.053-.033.14-.022.14-.022l.053.032a.54.54 0 01.107.15c.011.044-.128-.01-.182-.02-.065-.012-.15-.076-.15-.076s-.022-.032.032-.064zm-.108 6.958c.033-.021.076-.01.076-.01l.032.01.053.076c0 .021-.064-.011-.096-.011s-.075-.043-.075-.043-.022-.01.01-.022zM8.891 3.008c-.032.021-.054.032-.097.064-.053.043-.107.15-.14.118-.042-.032-.02-.15-.02-.15s.032-.086.074-.172c.054-.086.119-.086.119-.086.064 0 .182.043.182.14.01.096-.064.053-.118.086zm.88.333s-.042.01-.053-.065c-.01-.075.054-.086.054-.086s.128-.064.128.022c.011.075-.128.129-.128.129zm1.15-1.461s-.14.226-.333.311c-.194.086-.322.13-.688.162-.053 0-.032-.033-.032-.033s.42-.118.655-.247a2.33 2.33 0 00.323-.214c.15-.13.075.021.075.021zm-7.217 9.3c0 .054-.064.15-.086.15-.021 0-.064-.096-.054-.15.011-.054.022-.204.108-.182.064.01.032.128.032.182zm.28-1.213s-.097.204-.13.118c-.032-.075.033-.215.033-.215.086-.075.118-.183.16-.14.033.043-.064.237-.064.237zm1.33-2.095c-.096.108-.396.677-.46.58-.065-.075.29-.612.364-.72.075-.117.14-.096.14-.096l.021.022c-.01 0 .033.107-.064.214zm.806-.848s-.214.043-.182-.032c.043-.075.193-.108.193-.108.118.022.14.033.129.086.01.054-.14.054-.14.054zm.87 1.504c-.096.096-.129-.033-.268-.194-.14-.15-.108-.279-.108-.279h.022l.021.01.054.022.032.032.108.108c.043.064.16.28.14.3zm-1.664 3.21c-.033 0-.065-.064-.065-.064s-.086-.129-.118-.225c-.032-.086-.043-.226-.043-.226s-.021-.183-.021-.247c.01-.086.01-.161.021-.204.01-.043.054-.032.054-.032.064 0 .064.053.064.053v.033s0 .193.011.343c0 .043.118.527.118.527s.022.043-.021.043zm-.022-2.255c-.075.118-.129.118-.129.118 0-.01-.021-.053.043-.182.065-.129.13-.118.13-.118l.02.021s.011.043-.064.161zm.763 4.5c.021-.043.16.064.16.064.054.011.108.108.108.108s.022.075-.043.096c-.064.033-.107-.032-.107-.032s-.14-.193-.118-.236zm1.01-3.286c-.151-.032-.473-.28-.602-.344-.13-.064-.344-.086-.247-.172.01-.01.021-.032.043-.032.021 0 .118.032.118.032l.236.097c.01 0 .129.054.226.107l.236.15.064.054c0 .022.075.14-.075.108zm1.31-2.137s-.183.247-.29.397c-.14.204-.312.516-.344.483-.033-.032.15-.376.247-.558.107-.226.268-.344.333-.365.14-.065.053.043.053.043zm-.58 10.75s0 .043-.076.096c-.075.054-.107.022-.118.022-.01 0-.086-.043-.086-.086.01-.043.129-.075.129-.075.204-.011.15.043.15.043zm1.664-.065c-.075-.01-.086-.032-.075-.043 0-.01.021-.032.107-.032s.086.043.086.043c0 .032-.032.043-.118.032zm1.911.108c-.16.043-.225.021-.365.032-.118.01-.171.021-.29.021-.204 0-.225.011-.515-.075-.054-.021-.118-.086-.097-.107.022-.033.065-.022.065-.022s.365.065.601.075c.172.011.258.022.43.011.096 0 .043-.01.193-.01.054-.011.021.064-.022.075zm1.02-.301a.433.433 0 01-.128.043c-.065.01-.032-.043-.032-.043s.043-.065.096-.097c.065-.032.097 0 .097 0 .021.043-.022.086-.032.097zm.795-2.062c-.075.161-.096.215-.107.365-.021.161.075.612-.075.44-.054-.075-.108-.43-.065-.601.076-.387.387-.494.247-.204zm-2.169 6.562c-.064.043.065.171-.14.16-.118-.01-.053-.117-.042-.128l.075-.108c.053-.075.086-.086.14-.118.053-.032.096.054.096.054s.021.032.021.075c0 .032-.096.022-.15.065zm1.128-1.085l-.097.075c-.01 0-.075.054-.097.022-.021-.033.011-.076.011-.086 0-.011.065-.086.118-.108.054-.032.086 0 .086 0 .032.075-.021.097-.021.097zm.504-18.815s-.043.14-.128.172c-.108.032-.516.043-.527.01-.01-.032.473-.075.655-.257.043-.043 0 .075 0 .075zm-.15-.354c.032-.054.01.086.01.086s-.031.14-.107.182c-.096.054-.332.118-.354.086 0-.021.311-.118.451-.354zm-.666-1.611s.043 0 .108.032c.064.043.107.172.107.172s.01.021-.043.021c-.032 0-.032-.053-.064-.075-.043-.032-.076-.043-.13-.064-.053-.022-.128.01-.139-.043 0-.065.161-.043.161-.043zm-.494.354s.022-.064.118-.118c.086-.054.204-.054.204-.054s.065 0 .14.054c.075.054.14.236.14.236s.021.118-.033.161c-.053.043-.14-.032-.182-.096a.271.271 0 00-.161-.108c-.086-.032-.215.065-.236 0 0-.021.01-.075.01-.075zm-.032 1.482c-.064.01-.021-.054-.021-.054s.182-.075.3-.14c.194-.096.559-.482.462-.3-.043.086-.172.193-.172.193s-.15.215-.182.247c-.14.108-.312.043-.387.054zM9.804 7.69l.01-.022s.323-.214.827-.15c.301.043.591.311.548.344-.043.032-.107 0-.129 0l-.107-.054-.161-.043s-.29-.064-.505-.054c-.215.011-.408.086-.408.086s-.086.043-.107-.01c-.011-.065.032-.097.032-.097zm.795 6.046c-.741-.57-1.644-1.729-1.536-1.836.097-.086.462.45 1.01 1.041.58.623 1.256 1.214 1.277 1.289.043.129-.472-.28-.751-.494zm1.686-8.022c-.312.537-.741.945-.741.945-.15.107-.054-.086-.054-.086s.419-.58.612-.988c.14-.29.226-.677.29-.752.15-.182.075.559-.107.88zm.859 5.885c-.322-.387-.559-.806-.634-1.332-.021-.118-.021-.29.086-.268.097.01.086.193.086.236.032.311.161.623.397.999.333.526.87.934.849.966-.054.054-.591-.365-.784-.601zm.096 10.041a7.728 7.728 0 01-.494.408h-.043v-.054l.011-.021.022-.032.021-.033.022-.032.064-.075.15-.14.15-.14.237-.235s.086-.097.118-.119c.032-.021.054-.042.086-.064.043-.021.097-.054.118-.032v.043c.01.032-.268.343-.462.526zm.666-7.947c-.14.097-.193.086-.279.183-.097.118-.129.515-.226.354-.096-.161-.032-.387.13-.558.193-.226.611-.15.375.021zm.505 7.066c.064-.021.097-.01.097-.01l.021.043c0 .01-.086.128-.129.128-.054-.01-.032-.075-.032-.075s-.022-.064.043-.086zm1.836-4.37c-.096-.065.054-.258.054-.42 0-.128-.021-.225-.021-.332 0-.108.107-.14.107-.14.021 0 .064.022.118.13.054.106-.086.869-.258.762zm3.286-3.072c-.021.451-.042.773-.311 1.117-.322.419-.88.848-.762.505.075-.204.569-.462.762-1.031.107-.344.129-.666.129-.666l-.022-.655s-.01-.054-.01-.129c.032-.086.075-.021.075-.021l.021.032c0 .021.13.526.118.848zm-8-12.747c.086.043.118.075.204.097.075.021.182.075.204.01.032-.064-.01-.15-.065-.225-.085-.14-.128-.172-.247-.365C11.608.044 11.587 0 11.544 0c0 0-.011.14-.054.225-.032.075-.118.13-.108.183.011.053.065.118.15.16Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Ferrari</title><path d="M11.543 0s-.01.141-.053.227c-.032.075-.118.128-.107.182.01.054.064.119.15.162.086.043.117.074.203.096.075.021.184.076.205.011.033-.064-.01-.151-.064-.226-.086-.14-.13-.172-.248-.365C11.607.044 11.586 0 11.543 0zm.678 0c-.022.011-.054.174-.108.313-.064.161-.022.236.01.3.043.065.098.108-.01.173-.107.064-.248.043-.248.043s-.118-.023-.215-.076a23.832 23.832 0 0 0-.3-.13s-.194-.053-.323-.042c-.129.01-.14.022-.236.033-.054 0-.075-.001-.129.01-.043.01-.096-.02-.096.033s.107.054.182.086c.075.032.247.031.215.074-.043.043-.204.054-.215.043-.01 0-.117-.021-.203-.021-.14.01-.15.01-.353.107-.033.01-.022.086.042.064a1.12 1.12 0 0 1 .301-.043c.13 0 .203.044.332.077.108.032.118.052.28.074.032 0 .095-.022.095.021 0 .022-.043.055-.043.055s-.096.02-.086.053c.022.043.108 0 .15 0 .044 0 .11.012.098.054l-.021.032a2.312 2.312 0 0 0-.291.097c-.269.108-.375.237-.633.366-.247.118-.644.267-.644.267s-.118.065-.29.107c-.171.044-.182.034-.3.055a.571.571 0 0 0-.27.086.52.52 0 0 0-.15.117l-.15.227-.087.127c-.021.043-.042.064-.052.107-.022.054-.033.076-.043.13-.032.128 0 .204.021.333.011.032.011.054.022.086.01.032.052.065.052.065l.043.01s.152-.01.248-.032c.097-.021.237-.055.237-.055l.181-.052.12-.043s.075 0 .086.043c.01.032-.022.086-.022.086s-.065.03-.119.052c-.054.022-.183.054-.193.065l-.14.043-.118.011s-.022.011-.043.043c-.022.033-.022.032-.022.053.022.022.033.043.055.065.043.032.064.053.117.064.075.032.118.022.193.022a.587.587 0 0 0 .27-.065c.086-.054.118-.053.236-.096a.543.543 0 0 1 .118-.021c.204-.022.32.01.525.043.204.032.302.097.506.129.215.032.343.096.568.043.108-.022.173-.076.227.031.053.097.043.15.043.15s-.001.066-.076.27c-.076.204-.311.709-.311.709l-.162.322s-.13.257-.43.59a54.284 54.284 0 0 1-.32.353s-.161.119-.322.323c-.161.204-.163.279-.313.43-.097.096-.15.15-.268.226-.118.075-.258.053-.634.31-.322.226-.494.41-.516.399-.021-.01-.129-.098-.172-.12-.032-.02-.654-.439-.654-.439l-.258-.172-.119-.076-.021-.043-.063-.086s-.097-.118-.215-.214a.92.92 0 0 0-.441-.237c-.183-.053-.3-.086-.482-.021a.646.646 0 0 0-.27.172c-.107.107-.129.193-.215.322s-.172.248-.215.312c-.043.065-.129.237-.129.237s-.214.343-.332.568c-.14.247-.193.399-.322.635-.204.376-.495.762-.57.933l-.084.194s-.023.095-.033.16c-.011.064-.011.172-.022.215a.312.312 0 0 1-.053.119c-.01.01-.129.257-.172.418-.043.16-.14.666-.021.73.118.065.987-.31 1.105-.676.076-.236-.236-.355-.15-.57.032-.075.054-.085.107-.16.086-.14.054-.429.215-.697.118-.193.354-.442.676-.807.204-.225.398-.59.398-.59s.043-.129.13-.107c.096.021.181.01.181.01l.043.033.086.086.129.193s.216.31.29.397c.076.086.151.15.259.236.118.107.16.161.31.28.215.171.139.236-.14.085a1.82 1.82 0 0 0-.364-.138c-.128-.033-.612-.162-.859-.194-.236-.032-.28-.021-.28-.021s-.118-.012-.257.074c-.14.086-.215.15-.215.15s-.161.183-.172.215c-.01.032-.086.16-.086.16s-.044.066-.054.14c-.022.076-.01.151-.01.151l.01.16.011.15s.033.377.108.753c.021.107.043.279.043.279l.052.387s.033.409.065.548c.032.13.054.14.076.225.043.161-.032.236.043.43.075.193.14.17.215.289.054.086.074.107.117.215.043.107.183.463.344.72.172.269.398.601.549.569.15-.033.257-.268.257-.268s.172-.463.065-.914c-.108-.462-.602-.245-.666-.578-.01-.075 0-.193 0-.193s-.012-.141-.033-.184c-.022-.043-.194-.364-.258-.633-.054-.204-.043-.86-.086-1.043-.118-.472-.129-.43-.065-.515.076-.086.141-.065.141-.065l.096.012.076.031.139.086c.043.032.193.15.193.15l.365.237s.205.119.291.162c.086.043.16.096.16.096l.096.064.162.12.031.03.022.043s.076.173.398.356c.258.15.484.106.58.225.022.021.203.27.29.42.107.171.236.374.279.439.043.064.312.396.312.396l.354.387.463.43.418.355.267.215s.237.226.506.408c.258.172.268.193.44.31.128.087.3.206.472.335.172.14.366.396.291.482-.054.032-.151-.106-.334-.267a4.298 4.298 0 0 0-.375-.301c-.193-.15-.291-.227-.506-.356-.107-.064-.3-.181-.31-.16-.075.226-.066.44-.055.719.01.193.043.386.107.633.054.236.108.366.194.591.086.226.248.58.248.58l.246.495.226.375.118.193.043.064s.053.13 0 .215-.119.269-.215.28c-.097.021-.322.033-.322.033l-1.278-.022-.666-.054s-.074-.043-.46-.043c-.226 0-.409.096-.538.107-.107.01-.634-.032-.988.107-.333.14-.484.172-.602.387-.086.161.42.42.838.516.677.15.483-.14.74-.322.033-.022.044-.042.077-.053.171-.054.267.084.44.084.192 0 .3-.064.493-.096.977-.129 2.502.332 2.502.332s.377.118.549.086c.204-.043.16-.118.224-.236.054-.097.033-.117.043-.225 0-.064-.01-.096-.021-.16-.043-.183-.16-.441-.16-.441s-.087-.193-.12-.29c-.042-.139-.085-.226-.107-.376-.064-.398-.053-.365-.053-.59 0-.408.043-.634.15-1.031.162-.58.463-.827.688-1.385.065-.15.064-.365.14-.387.085-.01.075.269.032.43-.14.558-.483.794-.644 1.363-.118.44-.183.697-.15 1.148.01.247.107.635.107.635s.129.429.193.59c.065.161.193.43.193.43l.29.515.15.246s.106.097.053.258c-.054.161-.16.26-.29.399-.364.43-1.212 1.062-1.427 1.212-.3.226-.291.291-.313.356-.118.344-.462.354-.837.762-.086.086-.311.321-.268.525.021.075.945.237 1.482.012.42-.183.054-.388.172-.592.086-.15.3-.15.397-.28.16-.214.053-.203.193-.374.462-.559.763-.88 1.59-1.385.075-.043.215-.107.215-.107s.117-.055.16-.12c.054-.086.043-.16.043-.257 0-.065-.01-.096-.01-.16 0-.076.01-.119-.012-.194-.021-.118-.095-.215-.138-.28a.772.772 0 0 1-.162-.355.894.894 0 0 1 .033-.6c.086-.225.279-.407.279-.407l.482-.323s.42-.301.55-.42c.139-.118.407-.365.6-.644.226-.311.344-.505.44-.88.032-.14.065-.354.065-.354s0-.15.086-.16c.085-.011.107.02.107.02s.074.042.096.257c.01.215-.053.463-.053.463s-.065.246-.086.396c-.01.097-.012.15-.012.258 0 .183.076.334.076.334s.043.032.043-.043a1.6 1.6 0 0 1 .055-.344c.032-.107.053-.087.117-.27.086-.236.01-.213.053-.353.022-.064.076-.129.14-.129.065 0 .075.086.075.086s.065.28.012.537c-.054.258-.248.612-.248.612l-.149.257s-.107.183-.15.301c-.043.129-.055.183-.033.3.032.13.13.303.183.27.043-.032-.064-.14.065-.398s.298-.418.298-.418.237-.28.344-.494c.097-.193.194-.506.194-.506s.076-.28.054-.516c-.01-.225-.054-.343-.054-.343l-.096-.172-.055-.127.022-.076c.021-.011.097.043.162.129a.854.854 0 0 1 .16.343 1.018 1.018 0 0 1 .043.301c0 .086-.031.44.097.666.054.108.183.354.194.246.021-.247-.087-.364-.076-.59.01-.257.076-.193.097-.322.022-.14.053-.173.032-.355a2.632 2.632 0 0 0-.096-.397l-.076-.172-.032-.064s.021-.031.053-.031l.258-.086s.334-.15.463-.258c.14-.097.3-.27.3-.27s.215-.267.323-.46c.258-.484.257-1.096.246-1.376-.01-.268-.086-.623-.086-.623s-.086-.43-.064-.709c.021-.279.043-.408.043-.408s-.01-.279.226-.58c.236-.3.342-.493.385-.719.043-.193-.022-.504-.108-.386-.096.129-.137.387-.277.601-.193.301-.474.666-.613.666-.075 0-.096-.172-.096-.172s-.096-.29.065-.656c.118-.258.181-.332.332-.525.14-.183.225-.28.322-.473.086-.172.106-.204.16-.472.01-.065-.01-.204-.074-.194-.086 0-.322.517-.569.807-.236.268-.677.611-.677.611s-.043.031-.043-.055c-.01-.075-.022-.3.021-.503a2.22 2.22 0 0 1 .291-.72c.204-.354.461-.6.59-.73.054-.053.215-.151.13-.205-.076-.043-.302.15-.474.28-.214.16-.289.205-.503.463-.215.257-.27.365-.27.365s-.204.332-.258.654c-.054.322-.053.504-.053.504s0 .291.032.463c.021.182.097.46.097.46s.108.313.15.507c.044.193.118.761.118.761s.054.409.021.795c-.032.387-.064.612-.107.73-.043.119-.16.43-.354.645-.182.204-.226.236-.226.236s-.193.16-.354.246a3.743 3.743 0 0 1-.505.227 2.211 2.211 0 0 1-.268.031h-.139l-.043-.03-.023-.087s-.106-.419-.234-.687c-.108-.226-.334-.537-.334-.537s-.387-.527-.688-.817c-.344-.343-.73-.6-.967-.783-.086-.064-.279-.184-.279-.184s-.783-.783-1.062-1.406c-.194-.43-.322-.74-.268-1.213.01-.107.053-.312.074-.312l.14.043c.012.01.14.129.259.172.064.021.181.043.181.043s.097.01.15.021c.054.022.151.054.215.086.065.032.16.098.16.098l.184.138.194.15s.106.076.138.087c.032.01.054.021.065.021h.043s.044-.012.054-.055c.011-.053-.053-.01-.15-.117a.698.698 0 0 1-.15-.181s-.022-.087-.108-.184-.193-.182-.193-.182-.076-.053-.184-.086c-.107-.032-.14-.033-.15-.076-.01-.043.129-.021.129-.021s.162.021.29.086c.13.064.204.14.204.14l.086.075.055.054.052.032s.054.053.065-.022c.01-.064-.011-.118-.022-.129l-.053-.053-.214-.183a1.076 1.076 0 0 0-.172-.15 1.303 1.303 0 0 0-.28-.15c-.107-.044-.171-.033-.279-.087-.075-.032-.14-.053-.183-.117-.011-.01-.064-.055.033-.033.096.021.16.054.267.076.172.043.28.042.442.096.064.021.15.064.15.064l.203.086s.28.151.473.162a.938.938 0 0 0 .42-.064.814.814 0 0 0 .215-.13.36.36 0 0 0 .052-.064l.022-.054v-.043c-.054-.065-.16.108-.332.14-.183.033-.173.053-.291.032a.477.477 0 0 1-.3-.15c-.173-.162-.236-.312-.462-.409-.096-.043-.27-.086-.27-.086s-.236-.075-.365-.15c-.096-.054-.298-.086-.234-.172.032-.043.29.107.482.129.14.021.237.011.344.011s.258-.033.28-.033c.021-.01.106 0 .181.022.075.021.118.053.193.086.076.032.163.086.184.086l.043.011.022-.021.01-.022-.01-.021-.034-.022-.064-.043s-.096-.054-.182-.14c-.086-.086-.162-.182-.29-.225-.13-.043-.28-.064-.28-.064l-.15-.012-.065-.01s-.107-.033-.021-.054a.888.888 0 0 1 .15-.032.495.495 0 0 1 .248.01c.086.032.226.107.236.107.011.011.14.109.28.141.14.032.322.043.322.043l.086-.021.043-.012.031-.022-.01-.052s0-.044-.064-.055a.697.697 0 0 1-.313-.117c-.118-.086-.203-.172-.203-.172s-.086-.076-.258-.12c-.16-.042-.214-.042-.214-.042l-.055-.022-.117-.052s-.055-.033-.098-.086c-.043-.054-.106-.152.076-.098.183.054.225.086.225.086s.097.097.183.107c.054.011.097.022.13-.021.053-.054-.098-.118-.206-.194a.725.725 0 0 1-.172-.193s-.063-.053.034-.031c.096.021.267.129.267.129s.086.042.13.053c.031.01.118.064.161.085.032.011.13.033.193.065.086.054.13.14.172.172.043.032.076.087.13.097.053.011.063.032.095.01a.418.418 0 0 0 .043-.031s.01-.023-.043-.055-.117-.117-.117-.117l-.022-.043-.011-.043-.053-.086-.098-.14s-.15-.204-.289-.28c-.129-.075-.226-.117-.226-.117s-.064-.031-.096-.053c-.054-.043-.076-.077-.12-.13-.053-.065-.073-.106-.138-.17-.118-.118-.483-.184-.344-.27.076-.043.172-.02.215-.01.043.011.14.052.237.084.064.022.107.024.171.045.065.022.14.031.172.053.032.021.065.065.086.076.011.01.096.15.246.225.15.075.227.128.377.138.118.011.31-.03.31-.03s.055-.023.012-.077c-.053-.054-.054-.064-.097-.074-.172-.065-.31-.043-.44-.172-.053-.054-.076-.065-.119-.15-.043-.086-.02-.107-.052-.16-.022-.054-.077-.13-.077-.13s-.16-.194-.332-.29a1.955 1.955 0 0 1-.334-.215c-.032-.022-.095-.108-.095-.108l-.055-.086-.031-.064c-.022-.118.192.033.31.076.194.064.291.15.485.215.107.032.172.031.279.074.182.075.236.258.43.28.107.01.322.053.279-.044-.043-.107-.258-.107-.365-.236-.054-.054-.054-.106-.108-.16-.086-.108-.29-.205-.29-.205s-.064-.053-.14-.203c-.064-.15-.225-.26-.515-.399-.193-.096-.58-.118-.43-.215.086-.064.161-.053.28-.021.118.043.16.098.257.14.097.044.14.054.16.065.022.01.097.043.13.043.02.01.183.032.226.043l.215.053.172.064s.085.033.138.033.141-.021.141-.021l.064-.043.01-.022s.033-.053-.053-.064a.986.986 0 0 0-.128-.012l-.077-.021-.03-.01s-.151-.118-.28-.172a4.841 4.841 0 0 1-.162-.064l-.053-.012-.064-.01s-.055 0-.141-.076c-.086-.075-.118-.118-.193-.193l-.096-.096s-.086-.066-.086-.12c.01-.085.193.098.193.098l.13.086s.107.076.3.086c.193.011.43-.054.43-.054s.031-.02.138.011.194.096.194.096l.086.076.129.139.021-.01c.01-.01.065-.065-.031-.183-.097-.119-.258-.225-.258-.225s-.215-.129-.43-.172c-.214-.043-.312-.043-.312-.043s-.161 0-.258-.107c-.097-.108-.16-.215-.16-.215l-.033-.15s-.053-.065-.16-.108c-.097-.043-.206-.107-.206-.107s-.16-.054-.172-.13c-.032-.139.27 0 .43.032.15.032.215.087.365.12a.915.915 0 0 0 .344.03c.075 0 .118-.008.193-.02.076 0 .13-.01.206 0 .107.022.15.075.257.118.065.032.097.063.172.074.065.011.194.055.172-.01l-.033-.043c-.054-.075-.117-.075-.182-.128-.14-.108-.204-.193-.365-.268a.932.932 0 0 0-.29-.098c-.087-.01-.151.012-.237-.01-.097-.032-.128-.075-.225-.128-.15-.086-.237-.162-.398-.227a2.663 2.663 0 0 0-.29-.086l-.076-.01-.03-.011c-.151-.054.267-.171.46-.225.097-.021.14-.044.236-.033.086.01.183.13.28.076.14-.075-.161-.28-.258-.312-.129-.054-.354-.01-.354-.01l-.494-.012-.14-.021s-.086 0-.15-.075c-.065-.075-.311-.377-.59-.42-.29-.043-.376 0-.397-.02-.247-.388-.506-.473-.7-.655-.053-.054-.138-.173-.16-.162zm1.173 1.14a.53.53 0 0 1 .051 0l.053.033a.54.54 0 0 1 .107.15c.011.043-.128-.01-.181-.022a.43.43 0 0 1-.15-.076s-.023-.032.03-.064a.197.197 0 0 1 .09-.022zm.252.53c.026 0 .045.006.045.006l.053.034a.538.538 0 0 1 .107.15c.011.043-.128-.01-.181-.022a.43.43 0 0 1-.15-.076s-.022-.032.043-.064a.133.133 0 0 1 .083-.027zm-1.882.014a.398.398 0 0 1 .08.004s.043 0 .107.031c.065.043.108.172.108.172s.01.022-.043.022c-.033 0-.033-.053-.065-.075-.043-.032-.075-.043-.129-.064-.053-.021-.128.01-.138-.043 0-.032.04-.044.08-.047zm-.844.125c.042-.012 0 .072 0 .072s-.139.225-.332.311-.322.13-.688.162c-.053 0-.03-.033-.03-.033s.417-.117.654-.246a2.36 2.36 0 0 0 .322-.215.25.25 0 0 1 .074-.05zm.752.06s.065.002.14.055c.076.054.14.237.14.237s.022.117-.032.16-.14-.031-.184-.096a.269.269 0 0 0-.16-.107c-.086-.032-.215.064-.236 0 0-.022.01-.076.01-.076s.022-.064.119-.117c.086-.054.203-.055.203-.055zm1.998.415c.043.004.103.037.15.037.14 0 .257 0 .354.021.086.022.107.075.064.075a.33.33 0 0 1-.096.011c-.096 0-.086-.043-.214.022-.13.064-.033.033-.215.097-.172.065-.13-.107-.13-.107s.013-.033.034-.12c.008-.031.027-.039.053-.036zm-4.844.498c.065 0 .184.044.184.14.01.097-.066.054-.12.086-.031.022-.052.033-.095.065-.054.043-.108.15-.14.117-.044-.032-.022-.15-.022-.15s.033-.086.076-.172c.054-.086.117-.086.117-.086zm5.137.111a.228.228 0 0 1 .05.008s.032.01.053.031c.022.022.108.098.108.14 0 .033-.139-.022-.203-.032-.065-.011-.15-.075-.15-.075s-.022-.02.042-.052a.21.21 0 0 1 .1-.02zm-1.895.088c.01 0 .009.015-.01.049-.042.086-.171.193-.171.193s-.15.214-.182.246c-.14.108-.312.044-.387.055-.064.01-.021-.055-.021-.055s.183-.074.3-.138c.158-.079.427-.35.471-.35zM9.86 3.17c.023 0 .041.01.041.043.011.075-.128.128-.128.128s-.042.011-.053-.064c-.01-.075.053-.086.053-.086s.05-.024.087-.021zm2.66.117c.018-.01.003.097.003.097s-.033.141-.108.184c-.096.054-.334.118-.355.086 0-.022.311-.12.45-.355a.034.034 0 0 1 .01-.012zm1.454.039a.239.239 0 0 1 .052.006s.03.01.063.03c.032.033.108.12.119.163.01.043-.14-.01-.215-.021-.064-.011-.162-.086-.162-.086s-.02-.033.045-.065a.175.175 0 0 1 .098-.027zm-1.301.244c.02-.006-.012.084-.012.084s-.043.14-.129.172c-.107.032-.514.042-.525.01-.01-.033.472-.076.654-.258a.026.026 0 0 1 .012-.008zm1.334.185a.3.3 0 0 1 .06.006s.033.01.065.032c.032.032.118.13.129.183.01.065-.15 0-.225-.021a.535.535 0 0 1-.184-.098s-.021-.031.043-.074a.207.207 0 0 1 .112-.028zm0 .537a.3.3 0 0 1 .06.006s.033.01.065.032c.032.032.118.13.129.183.01.054-.15-.011-.225-.033a.525.525 0 0 1-.184-.096s-.021-.021.043-.064a.207.207 0 0 1 .112-.027zm-1.568.514c.083.024.007.629-.153.91a4.718 4.718 0 0 1-.742.944c-.15.107-.053-.086-.053-.086s.418-.579.612-.987c.14-.29.226-.676.29-.752.02-.022.034-.032.046-.029zm1.55.008a.314.314 0 0 1 .069.01s.042.01.074.043c.032.032.14.151.15.205 0 .064-.182-.023-.267-.033a.54.54 0 0 1-.203-.108s-.023-.043.052-.086a.206.206 0 0 1 .125-.031zm-.068.52a.3.3 0 0 1 .06.005s.033.012.065.034c.032.032.118.128.129.181.01.054-.15-.01-.225-.021a.526.526 0 0 1-.182-.096s-.02-.033.043-.076a.201.201 0 0 1 .11-.027zm-.031.466a.482.482 0 0 1 .048 0l.055.033a.542.542 0 0 1 .108.15c0 .044-.13-.01-.194-.02-.064-.011-.15-.075-.15-.075s-.022-.032.043-.064a.2.2 0 0 1 .09-.024zm-.059.457a.32.32 0 0 1 .045.006l.043.022c.021.021.084.085.084.117 0 .043-.117-.01-.16-.01a.32.32 0 0 1-.117-.064s-.012-.023.03-.055c.022-.016.05-.017.075-.016zm-.09.422a.31.31 0 0 1 .037.002l.043.022c.022.021.074.075.074.107-.01.022-.107-.021-.15-.021a.475.475 0 0 1-.107-.053s-.01-.022.033-.043a.165.165 0 0 1 .07-.014zm-7.609.207c.118.022.14.032.129.086.01.054-.139.053-.139.053s-.216.044-.183-.031c.043-.076.193-.108.193-.108zm7.511.125c.022 0 .04.004.04.004l.043.022c.021.021.074.075.074.107-.011.032-.108-.01-.15-.021-.044-.011-.108-.055-.108-.055s-.01-.022.033-.043a.156.156 0 0 1 .068-.014zm-.12.377a.22.22 0 0 1 .03.002l.032.022c.01.01.064.064.064.086 0 .032-.076 0-.119-.01-.032-.01-.084-.043-.084-.043s-.01-.022.022-.043a.1.1 0 0 1 .054-.014zm-3.061.12a1.5 1.5 0 0 1 .182.011c.3.043.59.312.546.344-.043.032-.107 0-.129 0l-.107-.053-.162-.043s-.29-.065-.504-.055c-.215.011-.408.086-.408.086s-.086.044-.107-.01c-.011-.064.033-.097.033-.097l.01-.022s.246-.164.646-.162zm-5.113.128c.007 0 .01.002.01.002l.021.022c-.01 0 .032.107-.064.214-.097.108-.397.677-.461.58-.065-.075.29-.613.365-.72.056-.089.107-.098.129-.098zm8.05.117c.015 0 .026.002.026.002l.031.012.055.074c-.011.032-.076.011-.108 0-.032 0-.076-.043-.076-.043s-.01-.01.022-.03a.094.094 0 0 1 .05-.015zm-6.783.303c.017-.006.029.008.043.012l.053.021.033.032.108.107c.043.064.16.28.138.3-.096.097-.128-.032-.267-.193-.14-.15-.108-.279-.108-.279zm6.633.05a.079.079 0 0 1 .025.005l.032.01.054.076c0 .021-.065-.012-.097-.012-.033 0-.075-.043-.075-.043s-.022-.01.01-.021a.094.094 0 0 1 .051-.014zM8.4 8.497c.035.003-.013.065-.013.065s-.184.246-.291.397c-.14.203-.312.514-.344.482-.032-.032.151-.374.248-.557.107-.225.268-.343.332-.365a.173.173 0 0 1 .068-.021zm-3.052.805l.021.022s.011.042-.064.16-.13.119-.13.119c0-.01-.02-.053.044-.182s.129-.119.129-.119zm-1.317.42a.032.032 0 0 1 .016.01c.032.043-.064.236-.064.236s-.097.203-.13.117c-.032-.075.034-.214.034-.214.075-.066.108-.156.144-.149zm8.565.277c.096.011.086.194.086.237.032.311.162.624.398 1 .333.526.87.934.848.967-.054.053-.59-.366-.784-.602-.322-.387-.56-.806-.634-1.332-.022-.118-.022-.291.086-.27zm-6.324.15c.021 0 .117.034.117.034l.236.096c.01 0 .13.054.227.107l.234.15.066.055c0 .022.075.14-.076.108-.15-.033-.472-.28-.601-.344-.13-.064-.343-.086-.246-.172.01-.01.021-.033.043-.033zm-1.14.593a.058.058 0 0 1 .022 0c.065 0 .065.052.065.052v.033s-.001.194.01.344c0 .043.119.526.119.526s.021.043-.022.043c-.032 0-.064-.065-.064-.065s-.087-.128-.12-.224c-.031-.086-.042-.227-.042-.227s-.022-.182-.022-.246c.011-.086.011-.162.022-.205a.039.039 0 0 1 .031-.031zm-1.49.257a.06.06 0 0 1 .03 0c.064.011.031.128.031.182s-.062.15-.084.15c-.021 0-.065-.096-.054-.15.01-.047.018-.167.078-.182zm5.442.893c.122-.01.475.497.988 1.05.58.624 1.256 1.215 1.278 1.29.043.129-.473-.28-.752-.494-.741-.57-1.643-1.729-1.535-1.836a.036.036 0 0 1 .021-.01zm10.273.523c.02-.002.037.024.037.024l.022.031c0 .022.128.526.117.848-.022.45-.042.773-.31 1.117-.323.419-.882.85-.764.506.075-.204.57-.462.763-1.031.108-.344.13-.667.13-.667l-.022-.654s-.012-.053-.012-.129c.012-.032.027-.043.04-.045zm-5.478 1.12c.1.011.145.074.027.16-.14.096-.193.085-.28.181-.096.118-.127.517-.224.356-.096-.161-.032-.387.13-.559a.418.418 0 0 1 .347-.139zm-7.799.439c.041-.008.149.074.149.074.053.01.107.108.107.108s.022.076-.043.097c-.064.032-.107-.033-.107-.033s-.14-.193-.12-.236a.019.019 0 0 1 .014-.01zm10.307 1.525c.021 0 .065.022.119.13s-.086.868-.258.76c-.097-.064.053-.256.053-.417 0-.129-.022-.227-.022-.334 0-.107.108-.139.108-.139zM13.2 16.824c.038.004.048.058-.004.166-.075.161-.096.215-.107.366-.022.16.076.61-.074.44-.054-.076-.108-.43-.065-.602.047-.242.186-.375.25-.37zm-.82 2.118c.036-.005.054.013.054.013.022.043-.022.087-.033.098a.435.435 0 0 1-.129.043c-.064.01-.03-.043-.03-.043s.041-.066.095-.098a.134.134 0 0 1 .043-.013zm-2.877.228c.086 0 .086.043.086.043 0 .032-.033.044-.12.033-.074-.01-.084-.032-.073-.043 0-.01.021-.033.107-.033zm.652.031a.063.063 0 0 1 .024.002s.365.064.601.074c.172.011.258.023.43.012.097 0 .043-.012.193-.012.054-.01.022.066-.021.077-.161.043-.226.02-.365.031-.119.01-.173.021-.291.021-.204 0-.224.012-.514-.074-.054-.021-.12-.086-.098-.107a.055.055 0 0 1 .041-.024zm-2.435.065c.126.003.086.045.086.045s-.001.042-.076.095c-.076.054-.107.022-.118.022-.01 0-.086-.043-.086-.086.011-.043.13-.074.13-.074a.489.489 0 0 1 .064-.002zm6.761 1.48a.133.133 0 0 1 .026.002l.021.043c0 .01-.086.13-.129.13-.053-.012-.033-.075-.033-.075s-.021-.065.043-.086a.232.232 0 0 1 .072-.014zm-.802.318c.008 0 .018.001.023.006v.043c.01.033-.27.345-.463.528-.182.172-.494.408-.494.408h-.043v-.055l.012-.021.021-.032.022-.033.021-.03.065-.077.15-.139.15-.14.237-.237s.085-.095.117-.117c.032-.021.054-.043.086-.064.032-.016.07-.038.096-.04zm-1.553 1.293a.064.064 0 0 1 .05.014c.033.075-.02.096-.02.096l-.098.076c-.011 0-.075.054-.096.021-.022-.032.01-.075.01-.086 0-.01.065-.085.119-.107a.093.093 0 0 1 .035-.014zm-1.047.994c.044-.005.076.061.076.061s.022.031.022.074c0 .033-.097.022-.15.065-.065.043.065.173-.14.162-.117-.01-.053-.118-.042-.129l.074-.107c.054-.076.087-.087.14-.12a.046.046 0 0 1 .02-.006z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ferrarin-dot-v-dot.svg b/assets/lib/simple-icons/icons/ferrarin-dot-v-dot.svg
deleted file mode 100644
index 3a546515..00000000
--- a/assets/lib/simple-icons/icons/ferrarin-dot-v-dot.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Ferrari N.V. icon</title><path d="M17.297,13.597v-0.314v-1.745c0-0.541-0.297-0.646-1.135-0.646c-0.908,0-1.222,0.122-1.222,0.751v0.279h0.768v-0.227 c0-0.314,0.017-0.367,0.419-0.367c0.332,0,0.349,0.035,0.349,0.367v0.628h-0.803c-0.628,0-0.82,0.297-0.82,0.646v0.436 c0,0.367,0.279,0.663,0.716,0.663h2.042v-0.471H17.297z M16.495,13.353c0,0.244-0.122,0.297-0.297,0.297h-0.297 c-0.192,0-0.262-0.122-0.262-0.297v-0.401c0-0.157,0.105-0.297,0.262-0.297h0.593V13.353z M23.686,13.615v-2.653h-1.169v0.436h0.332 v2.217h-0.332v0.454H24v-0.454C24,13.615,23.686,13.615,23.686,13.615z M20.736,10.892c-0.436,0-0.716,0.541-0.908,0.768v-0.716 h-1.152v0.436h0.314v2.217h-0.314v0.471h1.431v-0.471h-0.297V12.41c0-0.105,0.681-0.96,0.681-0.873v1.187h0.803v-1.327 C21.295,11.084,21.103,10.892,20.736,10.892 M6.179,12.689V11.52c0-0.436-0.332-0.628-1.204-0.628H4.852 c-0.943,0-1.187,0.209-1.187,0.751v1.745c0,0.593,0.349,0.698,1.204,0.716h0.087c0.925-0.017,1.204-0.087,1.204-0.646v-0.454H5.359 v0.227c0,0.314-0.052,0.332-0.436,0.332c-0.38,0-0.419-0.027-0.419-0.332c0-0.135,0-0.541,0-0.541H6.179z M4.503,11.555 c0-0.157,0.052-0.244,0.244-0.244h0.349c0.14,0,0.227,0.07,0.227,0.175v0.908h-0.82V11.555z M22.865,10.403h0.855V9.844h-0.855 V10.403z M0.122,10.403h0.489v3.299H0v0.454h2.269v-0.454H1.501v-1.466h0.436v0.419h0.524v-1.309H1.937v0.384H1.501v-1.327h20.701 V9.844H0.122V10.403z M9.391,10.892c-0.436,0-0.716,0.541-0.908,0.768v-0.716H7.331v0.436h0.314v2.217H7.331v0.471h1.431v-0.471 H8.465V12.41c0-0.105,0.681-0.96,0.681-0.873v1.187h0.803v-1.327C9.949,11.084,9.757,10.892,9.391,10.892 M13.056,10.892 c-0.436,0-0.716,0.541-0.908,0.768v-0.716h-1.152v0.436h0.314v2.217h-0.314v0.471h1.431v-0.471h-0.297V12.41 c0-0.105,0.681-0.96,0.681-0.873v1.187h0.803v-1.327C13.615,11.084,13.423,10.892,13.056,10.892"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ferrarinv.svg b/assets/lib/simple-icons/icons/ferrarinv.svg
new file mode 100644
index 00000000..95ee3986
--- /dev/null
+++ b/assets/lib/simple-icons/icons/ferrarinv.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Ferrari N.V.</title><path d="M17.297 13.283v-1.745c0-.541-.297-.646-1.135-.646-.908 0-1.222.122-1.222.751v.279h.768v-.227c0-.314.017-.367.419-.367.332 0 .349.035.349.367v.628h-.803c-.628 0-.82.297-.82.646h.785v-.017c0-.157.105-.297.262-.297h.593v.698c0 .244-.122.297-.297.297h-.314c-.192 0-.262-.122-.262-.297v-.384h-.785v.436c0 .367.279.663.716.663h2.06v-.471h-.314v-.314zm6.389.332v-2.653h-1.169v.436h.332v2.217h-.332v.454H24v-.454h-.314zm-2.95-2.723c-.436 0-.716.541-.908.768v-.716h-1.152v.436h.314v2.217h-.314v.471h1.431v-.471h-.297V12.41c0-.105.681-.96.681-.873v1.187h.803v-1.327c.001-.313-.191-.505-.558-.505M5.324 12.393h-.82v-.838c0-.157.052-.244.244-.244h.349c.14 0 .227.07.227.175v.907zm-.349-1.501h-.123c-.943 0-1.187.209-1.187.751v1.745c0 .593.349.698 1.204.716h.087c.925-.017 1.204-.087 1.204-.646v-.454h-.801v.227c0 .314-.052.332-.436.332-.454 0-.436-.035-.419-.332v-.541H6.18v-1.17c-.001-.436-.333-.628-1.205-.628zm17.89-.489h.855v-.559h-.855v.559zm-22.743 0h.489v3.299H0v.454h2.269v-.454h-.768v-1.466h.436v.419h.524v-1.309h-.524v.384h-.436v-1.327h20.701v-.559H.122v.559zm9.269.489c-.436 0-.716.541-.908.768v-.716H7.331v.436h.314v2.217h-.314v.471h1.431v-.471h-.297V12.41c0-.105.681-.96.681-.873v1.187h.803v-1.327c0-.313-.192-.505-.558-.505m3.665 0c-.436 0-.716.541-.908.768v-.716h-1.152v.436h.314v2.217h-.314v.471h1.431v-.471h-.297V12.41c0-.105.681-.96.681-.873v1.187h.803v-1.327c.001-.313-.191-.505-.558-.505"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ffmpeg.svg b/assets/lib/simple-icons/icons/ffmpeg.svg
new file mode 100644
index 00000000..4991d79a
--- /dev/null
+++ b/assets/lib/simple-icons/icons/ffmpeg.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>FFmpeg</title><path d="M21.72 17.91V6.5l-.53-.49L9.05 18.52l-1.29-.06L24 1.53l-.33-.95-11.93 1-5.75 6.6v-.23l4.7-5.39-1.38-.77-9.11.77v2.85l1.91.46v.01l.19-.01-.56.66v10.6c.609-.126 1.22-.241 1.83-.36L14.12 5.22l.83-.04L0 21.44l9.67.82 1.35-.77 6.82-6.74v2.15l-5.72 5.57 11.26.95.35-.94v-3.16l-3.29-.18c.434-.403.858-.816 1.28-1.23z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/fiat.svg b/assets/lib/simple-icons/icons/fiat.svg
index 09e1e349..227bb541 100644
--- a/assets/lib/simple-icons/icons/fiat.svg
+++ b/assets/lib/simple-icons/icons/fiat.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Fiat icon</title><path d="M12.572 11.348l.027-5.957h1.34c.608 1.327.998 3.081 1.304 5.957zm-2.141 9.42h2.222l.025-7.252h2.663c.209 1.28.26 5.231.273 7.252h2.155c.204-8.953-.428-14.014-2.174-17.537h-5.367zm8.873 0h2.322l.493-15.327H24l-.014-2.21h-6.524v2.213h1.896zM8.952 3.233H6.21l.294 17.537h2.4zm-6.2 10.264h1.95V11.23h-1.95l.007-5.706h2.545L5.29 3.232H0l.478 17.537h2.325Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Fiat</title><path d="M21.175 6.25c.489 1.148.726 2.442.726 3.956 0 .818-.068 1.69-.206 2.666-.286 2.01-1.048 4.11-1.75 5.494-.114.223-.205.371-.388.533-.32.282-.602.352-.706.291-.084-.05-.131-.302-.114-.673.014-.316.089-.55.204-.924a36.261 36.261 0 0 0 1.2-5.416c.385-2.664.37-5.06-.201-6.52a2.224 2.224 0 0 0-.22-.427c-.062-.09-.106-.136-.106-.136-1.181-1.183-4.37-1.776-7.56-1.776-3.19 0-6.378.593-7.558 1.776 0 0-.045.045-.106.136a2.122 2.122 0 0 0-.221.426c-.572 1.46-.586 3.857-.201 6.521.26 1.807.672 3.72 1.227 5.504.096.307.158.516.173.84.016.369-.03.62-.114.67-.104.06-.389-.01-.71-.295-.23-.205-.345-.405-.49-.701-.68-1.385-1.393-3.397-1.667-5.323a18.884 18.884 0 0 1-.206-2.666c0-1.514.238-2.807.726-3.954.367-.86.983-1.58 1.782-2.083a13.892 13.892 0 0 1 6.526-2.122 13.9 13.9 0 0 1 .815-.026h.02c.274 0 .548.01.818.026 2.282.138 4.539.873 6.525 2.122a4.583 4.583 0 0 1 1.782 2.082zm-4.763 14.526c-.088.019-.361.083-.632.157-.243.067-.483.12-.597.143a16.51 16.51 0 0 1-3.115.285h-.028c-1.117 0-2.177-.103-3.114-.285a9.23 9.23 0 0 1-.56-.133 14.987 14.987 0 0 0-.604-.148c-.418-.095-.796-.163-.817-.083-.025.093.162.288.401.472.056.042.195.14.357.22.15.073.32.128.386.15 1.098.355 2.346.502 3.941.502h.022c1.563 0 2.794-.142 3.877-.483.371-.117.59-.211.853-.42.22-.174.385-.353.361-.44-.02-.075-.348-.021-.731.063zm-2.508-10.313c-.145-.81-.32-1.432-.518-1.85l-.002-.004h-.021l-.682-.006h-.01l-.027 2.998h1.426l-.001-.01c0-.005-.056-.522-.165-1.128zm5.76 1.687c-.322 2.228-.88 4.623-1.66 6.701-.13.35-.248.48-.53.7a6.23 6.23 0 0 1-2.431 1.028c-.897.175-1.908.272-2.974.272h-.029a15.66 15.66 0 0 1-2.973-.272 6.23 6.23 0 0 1-2.433-1.028c-.282-.22-.399-.35-.527-.7-.782-2.078-1.34-4.473-1.661-6.701-.373-2.577-.35-4.847.18-6.202.067-.17.138-.292.19-.369.046-.065.078-.1.078-.1 1.068-1.07 4.06-1.652 7.16-1.652 3.101 0 6.093.582 7.16 1.653 0 0 .032.033.078.1.052.076.124.197.19.368.531 1.355.554 3.625.182 6.202zM8.904 7.565L6.222 7.55l.267 9.337 1.122.012-.016-4.25h1.014v-1.097H7.595V8.66h1.31V7.564zm1.876-.02l-1.365.003.181 9.35h1.157l.027-9.352zm3.448.014h-2.732l.108 9.334h1.092l.009-4.222h1.418l.002.007c.128.797.138 4.171.138 4.205v.015h1.063l.009-.479c.048-2.42.13-6.469-1.107-8.86zm4.32-.013l-3.344.013v1.077h.998v.01l-.042 8.252h1.132l.275-8.262h.981v-1.09zM23.975 12c0 6.617-5.372 12-11.976 12C5.397 24 .025 18.617.025 12S5.397 0 12 0c6.604 0 11.976 5.383 11.976 12zm-.33-.008C23.64 5.561 18.418.33 11.998.33 5.642.33.46 5.463.358 11.811a1.71 1.71 0 0 1 .684-.78c.655-.388.834-1.385.893-1.981l.012-.062c-.039.395-.07.79-.07 1.218 0 .832.07 1.718.21 2.708.412 2.9 1.813 6.007 2.637 6.958l.046.05.192.202.007.006c2.01 1.647 3.857 2.23 7.061 2.23h.022c3.203 0 5.05-.583 7.06-2.23l.009-.006.185-.197.052-.056c.826-.954 2.226-4.057 2.638-6.957.14-.99.209-1.876.209-2.708 0-.454-.021-.89-.064-1.309l.006.006c.06.597.379 2.141.995 2.586.21.152.375.317.503.503z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/fidoalliance.svg b/assets/lib/simple-icons/icons/fidoalliance.svg
index 0c0df9c7..17e710dd 100644
--- a/assets/lib/simple-icons/icons/fidoalliance.svg
+++ b/assets/lib/simple-icons/icons/fidoalliance.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 24 24"><title>Fido Alliance icon</title><path d="M7.849 7.513a1.085 1.085 0 1 0 1.085 1.086v-.001c0-.599-.486-1.085-1.085-1.085zM4.942 10.553v1.418H6.89v4.793h.704V14.04h.509v2.724h.71v-6.211H4.941zM14.122 11.089H14.1c-.287-.416-.862-.702-1.639-.702-1.489 0-2.797 1.224-2.786 3.319 0 1.936 1.181 3.201 2.659 3.201.797 0 1.56-.361 1.935-1.04l.117.893h1.669V7.651h-1.934zm0 2.904c0 .158-.012.313-.034.465l.002-.017c-.11.532-.574.925-1.13.925h-.014.001c-.797 0-1.318-.659-1.318-1.723 0-.978.446-1.767 1.329-1.767.606 0 1.022.437 1.138.947.014.09.023.194.023.3l-.001.054v-.003zM4.802 8.89l.475-1.6a2.914 2.914 0 0 0-.384-.101l-.019-.003a3.654 3.654 0 0 0-.829-.092 3.73 3.73 0 0 0-1.084.159l.027-.007a2.022 2.022 0 0 0-.38.153l.011-.005a2.624 2.624 0 0 0-.663.475c-.5.49-.754 1.155-.754 1.975v.708H-.001v1.418h1.199v4.793h1.921V11.97h1.199v-1.416H3.119v-.75a1.019 1.019 0 0 1 .23-.713l-.001.002a.736.736 0 0 1 .063-.062l.001-.001s.414-.41 1.389-.14zM20.306 10.388c-2.01 0-3.327 1.286-3.327 3.307s1.393 3.212 3.213 3.212c1.664 0 3.276-1.04 3.276-3.327-.002-1.874-1.267-3.192-3.162-3.192zm-.063 5.126c-.832 0-1.276-.797-1.276-1.871 0-.915.361-1.861 1.276-1.861.871 0 1.234.936 1.234 1.851 0 1.137-.482 1.882-1.234 1.882zM22.493 9.761h.232v.589h.14v-.589h.231v-.117h-.603v.117zM23.799 9.644l-.182.505-.181-.505h-.203v.707h.13V9.78l.198.571h.113l.195-.571v.571h.13v-.707h-.201z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Fido Alliance</title><path d="M7.849 7.513a1.085 1.085 0 1 0 1.085 1.086v-.001c0-.599-.486-1.085-1.085-1.085zM4.942 10.553v1.418H6.89v4.793h.704V14.04h.509v2.724h.71v-6.211H4.941zM14.122 11.089H14.1c-.287-.416-.862-.702-1.639-.702-1.489 0-2.797 1.224-2.786 3.319 0 1.936 1.181 3.201 2.659 3.201.797 0 1.56-.361 1.935-1.04l.117.893h1.669V7.651h-1.934zm0 2.904c0 .158-.012.313-.034.465l.002-.017c-.11.532-.574.925-1.13.925h-.014.001c-.797 0-1.318-.659-1.318-1.723 0-.978.446-1.767 1.329-1.767.606 0 1.022.437 1.138.947.014.09.023.194.023.3l-.001.054v-.003zM4.802 8.89l.475-1.6a2.914 2.914 0 0 0-.384-.101l-.019-.003a3.654 3.654 0 0 0-.829-.092 3.73 3.73 0 0 0-1.084.159l.027-.007a2.022 2.022 0 0 0-.38.153l.011-.005a2.624 2.624 0 0 0-.663.475c-.5.49-.754 1.155-.754 1.975v.708H-.001v1.418h1.199v4.793h1.921V11.97h1.199v-1.416H3.119v-.75a1.019 1.019 0 0 1 .23-.713l-.001.002a.736.736 0 0 1 .063-.062l.001-.001s.414-.41 1.389-.14zM20.306 10.388c-2.01 0-3.327 1.286-3.327 3.307s1.393 3.212 3.213 3.212c1.664 0 3.276-1.04 3.276-3.327-.002-1.874-1.267-3.192-3.162-3.192zm-.063 5.126c-.832 0-1.276-.797-1.276-1.871 0-.915.361-1.861 1.276-1.861.871 0 1.234.936 1.234 1.851 0 1.137-.482 1.882-1.234 1.882zM22.493 9.761h.232v.589h.14v-.589h.231v-.117h-.603v.117zM23.799 9.644l-.182.505-.181-.505h-.203v.707h.13V9.78l.198.571h.113l.195-.571v.571h.13v-.707h-.201z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/fifa.svg b/assets/lib/simple-icons/icons/fifa.svg
index ed45d78e..49ab1a01 100644
--- a/assets/lib/simple-icons/icons/fifa.svg
+++ b/assets/lib/simple-icons/icons/fifa.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>FIFA icon</title><path d="M0 8.064v7.872h2.486v-2.843h1.728l.671-1.72H2.486V9.775h2.92l.637-1.711zm6.804 0L6.8 15.936h2.457V8.064zm4.15 0v7.872h2.484v-2.843h1.726l.677-1.72h-2.403V9.775h2.922L17 8.064zm7.658 0l-2.83 7.872h2.375l.306-1.058h2.769l.32 1.058H24l-2.837-7.872zm1.235 2.023l.981 3.277h-1.927z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>FIFA</title><path d="M0 8.064v7.872h2.486v-2.843h1.728l.671-1.72H2.486V9.775h2.92l.637-1.711zm6.804 0L6.8 15.936h2.457V8.064zm4.15 0v7.872h2.484v-2.843h1.726l.677-1.72h-2.403V9.775h2.922L17 8.064zm7.658 0l-2.83 7.872h2.375l.306-1.058h2.769l.32 1.058H24l-2.837-7.872zm1.235 2.023l.981 3.277h-1.927z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/figma.svg b/assets/lib/simple-icons/icons/figma.svg
index 9b054099..6a06daa6 100644
--- a/assets/lib/simple-icons/icons/figma.svg
+++ b/assets/lib/simple-icons/icons/figma.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Figma icon</title><path d="M12 12a4 4 0 1 1 8 0 4 4 0 0 1-8 0zM4 20a4 4 0 0 1 4-4h4v4a4 4 0 1 1-8 0zM12 0v8h4a4 4 0 1 0 0-8h-4zM4 4a4 4 0 0 0 4 4h4V0H8a4 4 0 0 0-4 4zM4 12a4 4 0 0 0 4 4h4V8H8a4 4 0 0 0-4 4z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Figma</title><path d="M15.852 8.981h-4.588V0h4.588c2.476 0 4.49 2.014 4.49 4.49s-2.014 4.491-4.49 4.491zM12.735 7.51h3.117c1.665 0 3.019-1.355 3.019-3.019s-1.355-3.019-3.019-3.019h-3.117V7.51zm0 1.471H8.148c-2.476 0-4.49-2.014-4.49-4.49S5.672 0 8.148 0h4.588v8.981zm-4.587-7.51c-1.665 0-3.019 1.355-3.019 3.019s1.354 3.02 3.019 3.02h3.117V1.471H8.148zm4.587 15.019H8.148c-2.476 0-4.49-2.014-4.49-4.49s2.014-4.49 4.49-4.49h4.588v8.98zM8.148 8.981c-1.665 0-3.019 1.355-3.019 3.019s1.355 3.019 3.019 3.019h3.117V8.981H8.148zM8.172 24c-2.489 0-4.515-2.014-4.515-4.49s2.014-4.49 4.49-4.49h4.588v4.441c0 2.503-2.047 4.539-4.563 4.539zm-.024-7.51a3.023 3.023 0 0 0-3.019 3.019c0 1.665 1.365 3.019 3.044 3.019 1.705 0 3.093-1.376 3.093-3.068v-2.97H8.148zm7.704 0h-.098c-2.476 0-4.49-2.014-4.49-4.49s2.014-4.49 4.49-4.49h.098c2.476 0 4.49 2.014 4.49 4.49s-2.014 4.49-4.49 4.49zm-.097-7.509c-1.665 0-3.019 1.355-3.019 3.019s1.355 3.019 3.019 3.019h.098c1.665 0 3.019-1.355 3.019-3.019s-1.355-3.019-3.019-3.019h-.098z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/figshare.svg b/assets/lib/simple-icons/icons/figshare.svg
index ceceb243..d8d9e736 100644
--- a/assets/lib/simple-icons/icons/figshare.svg
+++ b/assets/lib/simple-icons/icons/figshare.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>figshare icon</title><path d="M12 0a1.0073 1.0073 0 00-1.0078 1.0078c0 .5566.4506 1.0098 1.0078 1.0098.5578 0 1.0078-.4532 1.0078-1.0098C13.0078.451 12.5578 0 12 0zM8.6895.541A1.0069 1.0069 0 008.291.588c-.528.1706-.8194.7408-.6465 1.2695.1719.5304.7419.8213 1.2696.6485.5302-.1724.8208-.7423.6484-1.2715-.128-.3986-.481-.6607-.873-.6934zm6.621 0c-.3917.0331-.7451.2948-.873.6934-.1724.5292.118 1.0991.6484 1.2715.5297.1728 1.0984-.1181 1.2715-.6485.171-.5287-.1205-1.0966-.6504-1.2695a.9976.9976 0 00-.3965-.0469zM10.588 1.9902A.8517.8517 0 0010.416 2c-.4648.0743-.7815.508-.707.9727a.85.85 0 00.9746.707c.4638-.073.7794-.5099.707-.9727a.8537.8537 0 00-.8027-.7168zm2.8242 0a.8498.8498 0 00-.8008.7168c-.0745.464.242.8998.7051.9727.4635.0734.8998-.2415.9746-.705.0717-.466-.2428-.9004-.707-.9747a.8536.8536 0 00-.1719-.0098zm-7.9082.1094a1.0023 1.0023 0 00-.5566.1914c-.4495.327-.5522.9586-.2246 1.4102.3278.4502.96.5508 1.4101.2226.4506-.326.5508-.959.2227-1.4101-.2047-.2816-.5278-.4251-.8516-.414zm12.9922 0c-.3237-.011-.6472.1325-.8516.414-.3284.4508-.2278 1.0832.2227 1.4102.4505.327 1.0817.2281 1.4101-.2226.327-.4516.2273-1.0831-.2226-1.4102a1.0095 1.0095 0 00-.5586-.1914zm-10.7676.7871a.8428.8428 0 00-.3242.0918c-.4186.2126-.5855.7256-.3711 1.1445a.8463.8463 0 001.1426.3711c.4167-.213.5856-.725.373-1.1445a.8538.8538 0 00-.8203-.4629zm8.543 0a.8538.8538 0 00-.8203.463.8513.8513 0 00.373 1.1444c.4194.2145.9317.0487 1.1426-.371.2137-.419.0495-.932-.3691-1.1446a.8521.8521 0 00-.3262-.0918zM12 3.5625a.7086.7086 0 00-.709.709c0 .3927.3168.709.709.709a.7081.7081 0 00.709-.709.7088.7088 0 00-.709-.709zm-2.3281.3809a.7062.7062 0 00-.2793.0332c-.3724.1203-.5755.5197-.4551.8925a.7088.7088 0 00.8926.4551c.3711-.121.5781-.5208.457-.8926a.7123.7123 0 00-.6152-.4882zm4.6562 0c-.2754.0236-.5246.209-.6152.4882-.1209.3718.0847.7717.457.8926.3726.1207.7724-.0833.8926-.455a.7081.7081 0 00-.455-.8926.7053.7053 0 00-.2794-.0332zm-11.1836.5878a1.0132 1.0132 0 00-.8535.416c-.3265.4494-.2245 1.0812.2246 1.4083.4506.3279 1.0804.228 1.4063-.2227.3292-.4505.2311-1.082-.2207-1.4101a.9945.9945 0 00-.5567-.1914zm17.713 0a1.0028 1.0028 0 00-.5587.1915c-.4513.3281-.5491.9596-.2226 1.4101.327.4508.9577.5494 1.4082.2227.4516-.3282.552-.96.2226-1.4102-.2039-.281-.526-.4248-.8496-.414zm-15.4141.0586a.8494.8494 0 00-.6016.25c-.3328.3324-.334.8725-.002 1.2051a.8547.8547 0 001.2051 0c.3306-.3326.332-.873 0-1.205a.847.847 0 00-.6015-.25zm13.1152 0a.8523.8523 0 00-.6035.25c-.3321.3318-.3321.8725 0 1.2051.3332.3315.8724.3321 1.205 0 .3335-.332.3335-.8724 0-1.205a.8474.8474 0 00-.6015-.25zm-11.125.4493a.709.709 0 00-.3926.1347c-.3156.231-.3868.6735-.1562.9903.2304.3178.6733.3855.9902.1562a.7065.7065 0 00.1563-.9883.7073.7073 0 00-.5977-.293zm9.1328 0a.7074.7074 0 00-.5977.293c-.2297.3172-.16.7595.1563.9882a.707.707 0 00.9902-.1562.7081.7081 0 00-.5488-1.125zm-5.5469.0097a.5897.5897 0 00-.1191.0078c-.3213.0512-.5435.3521-.4922.6739.051.322.3557.5427.6777.4922.3222-.0509.5407-.3532.4903-.6758a.5906.5906 0 00-.5567-.498zm1.961 0a.5882.5882 0 00-.5547.498c-.0515.3215.1675.625.4883.6759.3221.051.6259-.1702.6757-.4922.0524-.3229-.168-.6233-.4902-.6739a.5904.5904 0 00-.1191-.0078zm-3.9453.623a.6048.6048 0 00-.2286.0645.5902.5902 0 00-.2578.793.592.592 0 00.795.2598c.2898-.1497.4077-.5062.2597-.797a.589.589 0 00-.5683-.3202zm5.9316 0c-.2294-.0165-.4582.102-.5684.3204-.1503.2918-.034.648.2559.795a.5923.5923 0 00.7969-.2579.5898.5898 0 00-.2598-.793.5863.5863 0 00-.2246-.0644zM12 6.1876a.4885.4885 0 00-.4883.4883c0 .2703.2186.4883.4883.4883.2704 0 .4902-.218.4902-.4883 0-.2693-.2198-.4883-.4902-.4883zm-1.6035.2617a.4835.4835 0 00-.1914.0235c-.2574.0832-.3985.3588-.3145.6152.0827.2564.3594.396.6153.3125a.4884.4884 0 00.3144-.6152.4917.4917 0 00-.4238-.336zm3.207 0a.4865.4865 0 00-.4219.336.488.488 0 00.3125.6152c.2566.0824.5322-.0561.6153-.3125.0826-.2564-.0561-.5326-.3125-.6152a.4897.4897 0 00-.1934-.0235zm-7.83.2988a.705.705 0 00-.5977.293c-.2308.3153-.1596.7587.1562.9883.317.2307.7605.16.9903-.1563.2296-.3165.159-.759-.1582-.9902a.702.702 0 00-.3907-.1348zm12.455 0a.7098.7098 0 00-.3926.1348.707.707 0 00-.1582.9902c.231.3163.675.3879.9903.1582.3175-.2314.3883-.6749.1582-.9902a.705.705 0 00-.5977-.293zm-10.7832.1075a.592.592 0 00-.418.1738c-.2312.2296-.2301.6047 0 .834a.5895.5895 0 00.836 0 .591.591 0 00.002-.836.5924.5924 0 00-.42-.1718zm9.1094 0a.5885.5885 0 00-.418.1738.5867.5867 0 000 .834.5887.5887 0 00.834 0c.2301-.2302.2315-.6033.002-.834a.5884.5884 0 00-.418-.1738zm-12.7559.084a.856.856 0 00-.8203.4648.849.849 0 00.373 1.1426c.419.2149.9316.046 1.1446-.3711.2136-.4186.0454-.9303-.373-1.1446a.843.843 0 00-.3243-.0917zm16.4043 0a.8529.8529 0 00-.3261.0918c-.4193.2128-.5854.725-.373 1.1445.213.4182.7269.5845 1.1444.371.4195-.2143.5867-.725.373-1.1425a.8538.8538 0 00-.8183-.4648zM8.8535 7.205a.483.483 0 00-.2695.0918c-.2182.158-.2662.4657-.1074.6836.1584.217.4635.2664.6816.1074a.489.489 0 00.1074-.6816.4844.4844 0 00-.412-.2012zm6.293 0a.4847.4847 0 00-.4121.2012c-.16.2184-.1088.5237.1093.6816a.4876.4876 0 00.6817-.1074c.1598-.2179.1088-.5261-.1094-.6836a.4831.4831 0 00-.2695-.0918zm-3.8125.0683a.3879.3879 0 00-.08.004c-.2205.0349-.3718.2414-.336.4609.0338.2193.24.3675.461.334.2194-.035.3678-.2412.3339-.461-.03-.1906-.192-.3296-.379-.3379zm1.332 0a.4009.4009 0 00-.3789.338c-.0324.2176.117.4244.334.4609.2216.0335.4267-.115.461-.336.034-.2178-.1164-.4232-.334-.459a.4094.4094 0 00-.082-.0039zm-11.205.3243c-.3915.0344-.744.2965-.8731.6933-.172.5306.118 1.0999.6484 1.2715.5291.173 1.0974-.1166 1.2696-.6465.1715-.5304-.119-1.0994-.6485-1.2734a1.0013 1.0013 0 00-.3965-.045zm21.078 0a1.0009 1.0009 0 00-.3964.0449c-.5304.1734-.8208.743-.6485 1.2734.1738.53.7409.8195 1.2696.6465.5315-.1716.821-.741.6484-1.2715-.1292-.3968-.482-.6589-.873-.6933zm-12.5546.0996a.409.409 0 00-.1563.043c-.196.1004-.2756.342-.1758.539a.4005.4005 0 00.541.1758c.1973-.101.277-.342.1758-.539a.397.397 0 00-.3847-.2188zm4.0312 0a.3988.3988 0 00-.3847.2168.4012.4012 0 00.1757.541c.1975.1009.4374.022.5391-.1758a.4005.4005 0 00-.1758-.541.3983.3983 0 00-.1543-.041zm-6.3047.6855c-.1568-.0054-.3144.0641-.412.2012-.159.217-.1098.523.1074.6816.2181.1596.5225.1084.6816-.1093.1592-.2186.1093-.523-.1074-.6817a.4847.4847 0 00-.2696-.0918zm8.5801 0a.4904.4904 0 00-.2715.0918.4873.4873 0 00-.1074.6816c.1598.2178.464.268.6816.1094.2187-.1597.2672-.4645.1075-.6816a.481.481 0 00-.4102-.2012zm-9.9863.1035a.594.594 0 00-.5703.3223.5913.5913 0 00.2597.793.5867.5867 0 00.793-.2559c.1484-.292.0326-.649-.2578-.7969a.5837.5837 0 00-.2246-.0625zm11.3926 0a.59.59 0 00-.2266.0625c-.2913.1472-.4053.5048-.2578.7969a.5895.5895 0 00.793.2578.5898.5898 0 00.2578-.795.5867.5867 0 00-.5664-.3222zM8.9043 8.5a.4096.4096 0 00-.2871.1191.4023.4023 0 00.002.5684.4024.4024 0 00.5683 0 .4023.4023 0 000-.5684.4.4 0 00-.2832-.1191zm6.1934.002a.4004.4004 0 00-.2852.1171.3993.3993 0 00.002.5684.3998.3998 0 00.5664 0c.1577-.158.1568-.4129 0-.5684a.3991.3991 0 00-.2832-.1171zm-10.5079.4042c-.2752.0234-.5233.2071-.6132.4864-.1217.3721.0827.7708.455.8926a.7074.7074 0 00.8926-.4532c.12-.373-.0814-.7734-.455-.8925a.7026.7026 0 00-.2794-.0333zm14.8204 0a.703.703 0 00-.2793.0333c-.3729.1191-.5758.5195-.4551.8925.12.3718.5203.5743.8926.4532.3717-.1218.578-.5205.457-.8926a.7113.7113 0 00-.6152-.4863zM8.127 9.6113a.4015.4015 0 00-.3868.2188.4.4 0 00.1758.539.3974.3974 0 00.539-.1738.401.401 0 00-.1757-.541.3936.3936 0 00-.1523-.043zm7.746 0a.3923.3923 0 00-.1523.043.4008.4008 0 00-.1758.541.4031.4031 0 00.539.1738.3989.3989 0 00.1759-.541.4033.4033 0 00-.3868-.2168zm-13.0722.088a.8528.8528 0 00-.8028.7167.8519.8519 0 00.709.9727.8477.8477 0 00.9727-.7051c.0735-.4642-.2409-.9007-.705-.9746a.8745.8745 0 00-.174-.0098zm18.3984 0a.854.854 0 00-.1719.0097.8498.8498 0 00-.707.9746.8477.8477 0 00.9727.705.8494.8494 0 00.707-.9726c-.0643-.4055-.4057-.6986-.8008-.7168zm-14.3047.1679a.4876.4876 0 00-.4218.336.4873.4873 0 00.3144.6152c.2558.084.5329-.0558.6152-.3125.0838-.2558-.0578-.5337-.3144-.6172a.4888.4888 0 00-.1934-.0215zm10.211 0a.489.489 0 00-.1934.0215c-.2555.0835-.3971.3614-.3144.6172a.4896.4896 0 00.6171.3125c.2564-.0827.3947-.3593.3106-.6153-.0601-.192-.2299-.3192-.42-.336zm-11.4942.5332a.5899.5899 0 00-.5547.498c-.0511.323.1676.6266.4883.6778.3235.0518.6274-.1689.6778-.4903a.5926.5926 0 00-.4922-.6777.5862.5862 0 00-.1192-.0078zm12.7774 0a.593.593 0 00-.1192.0078.5923.5923 0 00-.4922.6777.5897.5897 0 00.6758.4903c.322-.0512.5414-.3548.4903-.6778a.5905.5905 0 00-.5547-.498zm-10.7325.5137c-.1853.0095-.3472.145-.3789.3359a.4024.4024 0 00.336.461.4009.4009 0 00.457-.332.4025.4025 0 00-.334-.463.3937.3937 0 00-.08-.002zm8.6875 0a.4169.4169 0 00-.082.0039.4023.4023 0 00-.332.461c.0341.2184.2406.3656.459.332a.4019.4019 0 00.334-.459c-.0301-.1928-.1917-.3291-.379-.338zm-15.3359.078C.4508 10.9922 0 11.4437 0 12c0 .5575.4503 1.0078 1.0078 1.0078A1.0069 1.0069 0 002.0156 12c0-.5564-.4506-1.0078-1.0078-1.0078zm21.9844 0c-.558 0-1.0098.4509-1.0098 1.0079 0 .5569.4518 1.0078 1.0098 1.0078C23.5466 13.0078 24 12.5575 24 12c0-.5564-.4534-1.0078-1.0078-1.0078zm-18.7207.299a.7086.7086 0 00-.709.7089c.001.3924.317.709.709.709a.7086.7086 0 00.709-.709.709.709 0 00-.709-.709zm15.457 0c-.3904 0-.709.3171-.709.7089 0 .3924.3186.709.709.709a.7062.7062 0 00.707-.709c0-.3918-.3146-.709-.707-.709zm-13.0527.2187c-.27 0-.4883.2213-.4883.4902 0 .269.2183.4879.4883.4863.269 0 .4883-.2174.4883-.4863 0-.269-.2194-.4902-.4883-.4902zm10.6484 0c-.2698 0-.4883.2213-.4883.4902a.486.486 0 00.4883.4863.4867.4867 0 00.4883-.4863c0-.269-.218-.4902-.4883-.4902zm-1.0176.7734c-.1861.0074-.3464.147-.377.3379-.0348.2202.1128.426.3321.461.2187.0331.4252-.1146.461-.334a.3976.3976 0 00-.334-.459.4076.4076 0 00-.082-.0059zm-8.6132.002a.4168.4168 0 00-.082.0039c-.2181.0347-.37.239-.334.459.035.2198.2407.3674.4609.334a.404.404 0 00.334-.461c-.0306-.192-.192-.3278-.379-.336zm-2.0274.1328a.6064.6064 0 00-.121.0058c-.3208.0504-.5395.3529-.4884.6758a.5894.5894 0 00.6739.4922.5917.5917 0 00.4922-.6777c-.0441-.2816-.2813-.4838-.5567-.4961zm12.668 0a.5905.5905 0 00-.5567.498c-.0513.3214.168.625.4903.6758.3231.0514.6244-.1701.6758-.4922.051-.323-.1671-.6254-.4903-.6758a.585.585 0 00-.1191-.0058zm-15.455.1816a.8538.8538 0 00-.172.0098c-.4638.0735-.7817.5105-.709.9746.074.4642.511.7812.9747.707.466-.0732.7808-.5105.707-.9746a.8497.8497 0 00-.8008-.7168zm18.242 0c-.396.0179-.7384.3103-.8026.7168-.0727.4641.2442.901.709.9746.4636.0739.8983-.243.9726-.707.0726-.4648-.2409-.9011-.705-.9746a.8735.8735 0 00-.174-.0098zm-14.1405.5586a.4917.4917 0 00-.1934.0215.4892.4892 0 00-.3144.6172c.082.2566.3585.3958.6152.3125.2566-.0827.397-.3606.3144-.6153a.4879.4879 0 00-.4218-.3359zm10.041 0a.4896.4896 0 00-.4238.336c-.0822.2546.0589.5325.3144.6152.2564.0833.532-.056.6133-.3125.084-.2572-.0542-.5337-.3106-.6172a.4916.4916 0 00-.1933-.0215zm-8.9512.4277a.3959.3959 0 00-.1523.043.3983.3983 0 00-.1758.541.399.399 0 00.5371.1758.3994.3994 0 00.1758-.539c-.0759-.1482-.2297-.2314-.3848-.2208zm7.8613 0a.4052.4052 0 00-.3886.2188.4037.4037 0 00.1758.541c.1983.101.4418.0231.543-.1758.1005-.196.0196-.4391-.1778-.541a.3905.3905 0 00-.1524-.043zm-11.2207.0938a.7048.7048 0 00-.2793.0332c-.3723.1218-.5767.5213-.455.8945a.7072.7072 0 00.8925.4531c.3737-.12.575-.5195.4551-.8925a.7111.7111 0 00-.6133-.4883zm14.5782 0a.7118.7118 0 00-.6133.4902c-.1196.372.0822.7705.455.8906a.7071.7071 0 00.8926-.453c.1226-.3733-.0833-.7728-.455-.8946a.7042.7042 0 00-.2793-.0332zm-13.0704.6543a.5803.5803 0 00-.2246.0625c-.2907.148-.4083.5042-.2597.795a.59.59 0 00.7949.2577.5864.5864 0 00.2578-.793.5911.5911 0 00-.5683-.3222zm11.5625 0a.5917.5917 0 00-.5683.3203.5902.5902 0 00.2578.795c.2907.1473.6475.0327.795-.2579.1488-.2907.0317-.6469-.2598-.795a.5784.5784 0 00-.2247-.0624zm-16.1484.0566a.992.992 0 00-.3965.0469c-.5303.1712-.8205.741-.6484 1.2715.172.5289.741.8182 1.2695.6465.53-.173.8197-.741.6485-1.2715a1.009 1.009 0 00-.873-.6934zm20.7344 0a1.0107 1.0107 0 00-.873.6934c-.1707.5305.118 1.0985.6484 1.2715.5292.1717 1.0972-.1176 1.2695-.6465.1726-.5306-.117-1.1003-.6484-1.2715a.992.992 0 00-.3965-.0469zm-14.6914.25a.4847.4847 0 00-.2695.0938c-.2175.159-.2663.4639-.1094.6816a.4893.4893 0 00.6836.1094c.2167-.1586.2683-.4658.1093-.6836a.494.494 0 00-.414-.2012zm8.6484 0a.4911.4911 0 00-.412.2012.4897.4897 0 00.1073.6836c.2185.1585.525.11.6817-.1094a.4875.4875 0 00-.1075-.6816.4844.4844 0 00-.2695-.0938zm-7.4199.0547c-.1028 0-.2064.037-.2852.1152a.4016.4016 0 000 .5684c.1582.1572.4118.1574.5684.002a.403.403 0 000-.5704.3973.3973 0 00-.2832-.1152zm6.1914 0a.3975.3975 0 00-.2832.1172c-.1579.1565-.1568.4122 0 .5684.1589.1565.4117.1565.5684 0a.4016.4016 0 000-.5684.4026.4026 0 00-.2852-.1172zm-11.42.666a.8422.8422 0 00-.3241.0899c-.4186.2135-.5862.7252-.373 1.1445.2132.4186.7252.5859 1.1444.373.4185-.2139.5867-.7263.373-1.1445-.1596-.3135-.4891-.4857-.8202-.4629zm16.6485 0a.8553.8553 0 00-.8203.463c-.2134.4181-.0462.9305.373 1.1445.4187.2128.9304.0455 1.1446-.3731.214-.4193.0459-.931-.373-1.1445a.8397.8397 0 00-.3243-.0899zM13.959 15.5a.4037.4037 0 00-.1543.043c-.195.1015-.2742.3435-.1738.541a.3988.3988 0 00.539.1758c.1964-.1017.277-.3433.1758-.541a.4006.4006 0 00-.3867-.2188zm-3.918.002c-.1569-.0107-.3114.0691-.3867.2167a.4012.4012 0 00.1758.541c.1978.1.4387.0222.539-.1757.1023-.198.0228-.4393-.1738-.541a.402.402 0 00-.1543-.041zm-1.1523.3164a.487.487 0 00-.4121.2011.4874.4874 0 10.789.5723c.158-.217.1098-.5226-.1074-.6816a.4826.4826 0 00-.2695-.0918zm6.2246 0a.4833.4833 0 00-.2696.0918c-.2181.159-.2675.4646-.1093.6816.1573.2192.4643.2671.6816.1094.2182-.159.2692-.4645.1094-.6817a.4863.4863 0 00-.4121-.2011zm-9.3906.0156a.6996.6996 0 00-.3907.1328c-.3158.2309-.3867.6757-.1562.9922a.7044.7044 0 00.9883.1562c.3172-.2307.3884-.6724.1582-.9882a.711.711 0 00-.5996-.293zm12.5546 0a.7134.7134 0 00-.5996.293.7052.7052 0 00.1582.9882c.3173.2312.761.162.9903-.1562.2301-.3165.1593-.7613-.1582-.9922a.699.699 0 00-.3907-.1328zm-6.9804.0879c-.188.008-.3496.1486-.3809.3418-.0333.2182.1183.4223.338.459.2195.0349.4232-.116.4589-.336.0335-.2184-.1165-.4225-.334-.459a.4123.4123 0 00-.082-.0058zm1.4062.002a.4108.4108 0 00-.082.0038c-.2196.035-.3667.2411-.332.461a.4013.4013 0 00.459.334.3987.3987 0 00.332-.459.3996.3996 0 00-.377-.3399zm-5.2578.039a.59.59 0 00-.418.1738.5905.5905 0 00.836.834c.2313-.2306.2324-.6037.002-.834a.5958.5958 0 00-.42-.1738zm9.1094 0a.5891.5891 0 00-.418.1738.5867.5867 0 000 .834.5875.5875 0 00.834 0 .5893.5893 0 000-.834.5849.5849 0 00-.416-.1738zm-6.2422.6133a.4878.4878 0 00-.4219.336.4857.4857 0 00.3145.6151.489.489 0 00.6152-.3125c.0834-.2569-.0579-.5344-.3144-.6171a.4904.4904 0 00-.1934-.0215zm3.375 0a.4907.4907 0 00-.1934.0215c-.255.0827-.3961.3602-.3125.6171.0824.2559.3589.3944.6153.3125a.4885.4885 0 00.3125-.6152.4877.4877 0 00-.4219-.336zM12 16.8359a.4878.4878 0 00-.4883.4883c0 .2698.2186.4883.4883.4883.2704 0 .4902-.2185.4902-.4883 0-.2703-.2198-.4883-.4902-.4883zm-2.8828.3125a.5908.5908 0 00-.5684.3204c-.1467.2916-.0318.6463.2578.7949a.5923.5923 0 00.797-.2578c.1469-.2902.0316-.6464-.2579-.795a.6008.6008 0 00-.2285-.0625zm5.7656 0a.59.59 0 00-.2265.0625c-.2917.1479-.4058.504-.2598.795.1494.291.5061.4064.7969.2578a.59.59 0 00.2558-.795.5864.5864 0 00-.5664-.3203zm-11.8105.3028a1.0037 1.0037 0 00-.5567.1933c-.4502.3271-.5514.9589-.2226 1.4102.327.4491.9581.549 1.4082.2207.4518-.3276.5497-.9583.2226-1.4082a1.0092 1.0092 0 00-.8515-.416zm17.8554.002c-.3235-.011-.6468.133-.8515.414-.3285.4499-.2287 1.0811.2226 1.4082.452.3284 1.082.2284 1.4082-.2207.3293-.4513.2284-1.083-.2226-1.4102a1.0005 1.0005 0 00-.5567-.1914zm-13.4453.0898a.7077.7077 0 00-.5976.293c-.2306.3159-.1594.7591.1562.9902.3175.23.7595.1583.9902-.1582.23-.317.1605-.7607-.1562-.9903a.704.704 0 00-.3926-.1347zm9.0352 0a.7037.7037 0 00-.3926.1347c-.316.2296-.386.6733-.1563.9903a.7096.7096 0 00.9903.1582c.317-.2302.387-.6743.1562-.9903a.707.707 0 00-.5976-.293zm-11.0742.162a.8466.8466 0 00-.6016.25c-.3328.3325-.3328.8713 0 1.2032.3322.3323.8696.3323 1.2031 0a.8518.8518 0 00-.6015-1.4531zm13.1152.002a.8552.8552 0 00-.6035.248.85.85 0 000 1.2032c.3332.3323.8707.3314 1.205 0a.85.85 0 000-1.2031.8443.8443 0 00-.6015-.248zm-7.5918.0625c-.2745.0126-.514.2163-.5586.498-.0513.322.1692.625.4922.6759a.5907.5907 0 00.6758-.4922c.0527-.3215-.168-.6227-.4903-.6739a.5935.5935 0 00-.1191-.0078zm2.0664 0a.5911.5911 0 00-.1191.0078c-.3208.0503-.5398.3524-.4883.6739.0505.3222.3509.5441.6738.4922a.5893.5893 0 00.4902-.6758c-.0436-.2818-.282-.486-.5566-.498zm-3.4824.873a.7095.7095 0 00-.6133.4884.708.708 0 00.455.8925c.3734.1214.7732-.0839.8946-.455.1211-.3726-.0859-.772-.457-.8926a.7066.7066 0 00-.2793-.0332zm4.8984 0a.7056.7056 0 00-.2793.0313c-.3723.1212-.5779.522-.457.8946.1208.3711.5218.5764.8945.455.3717-.1217.5762-.5197.4551-.8925a.7086.7086 0 00-.6133-.4883zM12 19.0196a.7086.7086 0 00-.709.709c0 .3916.3168.709.709.709a.7088.7088 0 00.709-.709.7089.7089 0 00-.709-.709zm-4.1504.3946a.8518.8518 0 00-.8183.4629c-.2126.4187-.0453.9295.373 1.1425.419.2138.9304.0484 1.1426-.3691.213-.419.0486-.9328-.3711-1.1465a.8503.8503 0 00-.3262-.0898zm8.3008 0a.8595.8595 0 00-.3281.0898c-.4181.2137-.5848.7261-.3711 1.1465.2138.4186.7278.5829 1.1465.3691.4175-.2125.5833-.7238.3691-1.1425a.8465.8465 0 00-.8164-.463zm-10.5762.4687a1.0087 1.0087 0 00-.8515.416c-.3276.4503-.225 1.0812.2246 1.4082a1.0076 1.0076 0 001.4082-.2226c.3281-.4506.2279-1.0811-.2227-1.4082a1.0096 1.0096 0 00-.5586-.1934zm12.8516 0a1.0122 1.0122 0 00-.5586.1934c-.4505.327-.5511.9576-.2227 1.4082.328.4513.9583.5508 1.4102.2226.45-.3265.5497-.958.2226-1.4082a1.0083 1.0083 0 00-.8515-.416zm-7.914.4258c-.3956.0179-.7384.3119-.8028.7187-.0739.4623.2422.8998.707.9727.4626.0743.9001-.244.9727-.709.0745-.4639-.242-.8983-.7051-.9726a.8516.8516 0 00-.1719-.0098zm2.9784 0a.8513.8513 0 00-.879.9844c.0734.4642.5083.7813.9728.707.4642-.0729.7806-.509.707-.9727-.0638-.4068-.4067-.7008-.8008-.7187zm-4.9726 1.1406c-.391.0338-.7442.2962-.873.6934-.173.5292.117 1.0971.6464 1.2695.5306.1726 1.1008-.1183 1.2715-.6484.1724-.5296-.1182-1.097-.6484-1.2696a.9986.9986 0 00-.3965-.0449zm6.9648 0a.9988.9988 0 00-.3965.045c-.529.1725-.8218.74-.6504 1.2695.1714.53.743.821 1.2715.6484.5299-.1724.8213-.7403.6504-1.2695-.1298-.3972-.4834-.6596-.875-.6934zM12 21.9824c-.5572 0-1.0078.4532-1.0078 1.0098S11.4428 24 12 24a1.007 1.007 0 001.0078-1.0078c0-.5566-.45-1.0098-1.0078-1.0098Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>figshare</title><path d="M12 0a1.0073 1.0073 0 00-1.0078 1.0078c0 .5566.4506 1.0098 1.0078 1.0098.5578 0 1.0078-.4532 1.0078-1.0098C13.0078.451 12.5578 0 12 0zM8.6895.541A1.0069 1.0069 0 008.291.588c-.528.1706-.8194.7408-.6465 1.2695.1719.5304.7419.8213 1.2696.6485.5302-.1724.8208-.7423.6484-1.2715-.128-.3986-.481-.6607-.873-.6934zm6.621 0c-.3917.0331-.7451.2948-.873.6934-.1724.5292.118 1.0991.6484 1.2715.5297.1728 1.0984-.1181 1.2715-.6485.171-.5287-.1205-1.0966-.6504-1.2695a.9976.9976 0 00-.3965-.0469zM10.588 1.9902A.8517.8517 0 0010.416 2c-.4648.0743-.7815.508-.707.9727a.85.85 0 00.9746.707c.4638-.073.7794-.5099.707-.9727a.8537.8537 0 00-.8027-.7168zm2.8242 0a.8498.8498 0 00-.8008.7168c-.0745.464.242.8998.7051.9727.4635.0734.8998-.2415.9746-.705.0717-.466-.2428-.9004-.707-.9747a.8536.8536 0 00-.1719-.0098zm-7.9082.1094a1.0023 1.0023 0 00-.5566.1914c-.4495.327-.5522.9586-.2246 1.4102.3278.4502.96.5508 1.4101.2226.4506-.326.5508-.959.2227-1.4101-.2047-.2816-.5278-.4251-.8516-.414zm12.9922 0c-.3237-.011-.6472.1325-.8516.414-.3284.4508-.2278 1.0832.2227 1.4102.4505.327 1.0817.2281 1.4101-.2226.327-.4516.2273-1.0831-.2226-1.4102a1.0095 1.0095 0 00-.5586-.1914zm-10.7676.7871a.8428.8428 0 00-.3242.0918c-.4186.2126-.5855.7256-.3711 1.1445a.8463.8463 0 001.1426.3711c.4167-.213.5856-.725.373-1.1445a.8538.8538 0 00-.8203-.4629zm8.543 0a.8538.8538 0 00-.8203.463.8513.8513 0 00.373 1.1444c.4194.2145.9317.0487 1.1426-.371.2137-.419.0495-.932-.3691-1.1446a.8521.8521 0 00-.3262-.0918zM12 3.5625a.7086.7086 0 00-.709.709c0 .3927.3168.709.709.709a.7081.7081 0 00.709-.709.7088.7088 0 00-.709-.709zm-2.3281.3809a.7062.7062 0 00-.2793.0332c-.3724.1203-.5755.5197-.4551.8925a.7088.7088 0 00.8926.4551c.3711-.121.5781-.5208.457-.8926a.7123.7123 0 00-.6152-.4882zm4.6562 0c-.2754.0236-.5246.209-.6152.4882-.1209.3718.0847.7717.457.8926.3726.1207.7724-.0833.8926-.455a.7081.7081 0 00-.455-.8926.7053.7053 0 00-.2794-.0332zm-11.1836.5878a1.0132 1.0132 0 00-.8535.416c-.3265.4494-.2245 1.0812.2246 1.4083.4506.3279 1.0804.228 1.4063-.2227.3292-.4505.2311-1.082-.2207-1.4101a.9945.9945 0 00-.5567-.1914zm17.713 0a1.0028 1.0028 0 00-.5587.1915c-.4513.3281-.5491.9596-.2226 1.4101.327.4508.9577.5494 1.4082.2227.4516-.3282.552-.96.2226-1.4102-.2039-.281-.526-.4248-.8496-.414zm-15.4141.0586a.8494.8494 0 00-.6016.25c-.3328.3324-.334.8725-.002 1.2051a.8547.8547 0 001.2051 0c.3306-.3326.332-.873 0-1.205a.847.847 0 00-.6015-.25zm13.1152 0a.8523.8523 0 00-.6035.25c-.3321.3318-.3321.8725 0 1.2051.3332.3315.8724.3321 1.205 0 .3335-.332.3335-.8724 0-1.205a.8474.8474 0 00-.6015-.25zm-11.125.4493a.709.709 0 00-.3926.1347c-.3156.231-.3868.6735-.1562.9903.2304.3178.6733.3855.9902.1562a.7065.7065 0 00.1563-.9883.7073.7073 0 00-.5977-.293zm9.1328 0a.7074.7074 0 00-.5977.293c-.2297.3172-.16.7595.1563.9882a.707.707 0 00.9902-.1562.7081.7081 0 00-.5488-1.125zm-5.5469.0097a.5897.5897 0 00-.1191.0078c-.3213.0512-.5435.3521-.4922.6739.051.322.3557.5427.6777.4922.3222-.0509.5407-.3532.4903-.6758a.5906.5906 0 00-.5567-.498zm1.961 0a.5882.5882 0 00-.5547.498c-.0515.3215.1675.625.4883.6759.3221.051.6259-.1702.6757-.4922.0524-.3229-.168-.6233-.4902-.6739a.5904.5904 0 00-.1191-.0078zm-3.9453.623a.6048.6048 0 00-.2286.0645.5902.5902 0 00-.2578.793.592.592 0 00.795.2598c.2898-.1497.4077-.5062.2597-.797a.589.589 0 00-.5683-.3202zm5.9316 0c-.2294-.0165-.4582.102-.5684.3204-.1503.2918-.034.648.2559.795a.5923.5923 0 00.7969-.2579.5898.5898 0 00-.2598-.793.5863.5863 0 00-.2246-.0644zM12 6.1876a.4885.4885 0 00-.4883.4883c0 .2703.2186.4883.4883.4883.2704 0 .4902-.218.4902-.4883 0-.2693-.2198-.4883-.4902-.4883zm-1.6035.2617a.4835.4835 0 00-.1914.0235c-.2574.0832-.3985.3588-.3145.6152.0827.2564.3594.396.6153.3125a.4884.4884 0 00.3144-.6152.4917.4917 0 00-.4238-.336zm3.207 0a.4865.4865 0 00-.4219.336.488.488 0 00.3125.6152c.2566.0824.5322-.0561.6153-.3125.0826-.2564-.0561-.5326-.3125-.6152a.4897.4897 0 00-.1934-.0235zm-7.83.2988a.705.705 0 00-.5977.293c-.2308.3153-.1596.7587.1562.9883.317.2307.7605.16.9903-.1563.2296-.3165.159-.759-.1582-.9902a.702.702 0 00-.3907-.1348zm12.455 0a.7098.7098 0 00-.3926.1348.707.707 0 00-.1582.9902c.231.3163.675.3879.9903.1582.3175-.2314.3883-.6749.1582-.9902a.705.705 0 00-.5977-.293zm-10.7832.1075a.592.592 0 00-.418.1738c-.2312.2296-.2301.6047 0 .834a.5895.5895 0 00.836 0 .591.591 0 00.002-.836.5924.5924 0 00-.42-.1718zm9.1094 0a.5885.5885 0 00-.418.1738.5867.5867 0 000 .834.5887.5887 0 00.834 0c.2301-.2302.2315-.6033.002-.834a.5884.5884 0 00-.418-.1738zm-12.7559.084a.856.856 0 00-.8203.4648.849.849 0 00.373 1.1426c.419.2149.9316.046 1.1446-.3711.2136-.4186.0454-.9303-.373-1.1446a.843.843 0 00-.3243-.0917zm16.4043 0a.8529.8529 0 00-.3261.0918c-.4193.2128-.5854.725-.373 1.1445.213.4182.7269.5845 1.1444.371.4195-.2143.5867-.725.373-1.1425a.8538.8538 0 00-.8183-.4648zM8.8535 7.205a.483.483 0 00-.2695.0918c-.2182.158-.2662.4657-.1074.6836.1584.217.4635.2664.6816.1074a.489.489 0 00.1074-.6816.4844.4844 0 00-.412-.2012zm6.293 0a.4847.4847 0 00-.4121.2012c-.16.2184-.1088.5237.1093.6816a.4876.4876 0 00.6817-.1074c.1598-.2179.1088-.5261-.1094-.6836a.4831.4831 0 00-.2695-.0918zm-3.8125.0683a.3879.3879 0 00-.08.004c-.2205.0349-.3718.2414-.336.4609.0338.2193.24.3675.461.334.2194-.035.3678-.2412.3339-.461-.03-.1906-.192-.3296-.379-.3379zm1.332 0a.4009.4009 0 00-.3789.338c-.0324.2176.117.4244.334.4609.2216.0335.4267-.115.461-.336.034-.2178-.1164-.4232-.334-.459a.4094.4094 0 00-.082-.0039zm-11.205.3243c-.3915.0344-.744.2965-.8731.6933-.172.5306.118 1.0999.6484 1.2715.5291.173 1.0974-.1166 1.2696-.6465.1715-.5304-.119-1.0994-.6485-1.2734a1.0013 1.0013 0 00-.3965-.045zm21.078 0a1.0009 1.0009 0 00-.3964.0449c-.5304.1734-.8208.743-.6485 1.2734.1738.53.7409.8195 1.2696.6465.5315-.1716.821-.741.6484-1.2715-.1292-.3968-.482-.6589-.873-.6933zm-12.5546.0996a.409.409 0 00-.1563.043c-.196.1004-.2756.342-.1758.539a.4005.4005 0 00.541.1758c.1973-.101.277-.342.1758-.539a.397.397 0 00-.3847-.2188zm4.0312 0a.3988.3988 0 00-.3847.2168.4012.4012 0 00.1757.541c.1975.1009.4374.022.5391-.1758a.4005.4005 0 00-.1758-.541.3983.3983 0 00-.1543-.041zm-6.3047.6855c-.1568-.0054-.3144.0641-.412.2012-.159.217-.1098.523.1074.6816.2181.1596.5225.1084.6816-.1093.1592-.2186.1093-.523-.1074-.6817a.4847.4847 0 00-.2696-.0918zm8.5801 0a.4904.4904 0 00-.2715.0918.4873.4873 0 00-.1074.6816c.1598.2178.464.268.6816.1094.2187-.1597.2672-.4645.1075-.6816a.481.481 0 00-.4102-.2012zm-9.9863.1035a.594.594 0 00-.5703.3223.5913.5913 0 00.2597.793.5867.5867 0 00.793-.2559c.1484-.292.0326-.649-.2578-.7969a.5837.5837 0 00-.2246-.0625zm11.3926 0a.59.59 0 00-.2266.0625c-.2913.1472-.4053.5048-.2578.7969a.5895.5895 0 00.793.2578.5898.5898 0 00.2578-.795.5867.5867 0 00-.5664-.3222zM8.9043 8.5a.4096.4096 0 00-.2871.1191.4023.4023 0 00.002.5684.4024.4024 0 00.5683 0 .4023.4023 0 000-.5684.4.4 0 00-.2832-.1191zm6.1934.002a.4004.4004 0 00-.2852.1171.3993.3993 0 00.002.5684.3998.3998 0 00.5664 0c.1577-.158.1568-.4129 0-.5684a.3991.3991 0 00-.2832-.1171zm-10.5079.4042c-.2752.0234-.5233.2071-.6132.4864-.1217.3721.0827.7708.455.8926a.7074.7074 0 00.8926-.4532c.12-.373-.0814-.7734-.455-.8925a.7026.7026 0 00-.2794-.0333zm14.8204 0a.703.703 0 00-.2793.0333c-.3729.1191-.5758.5195-.4551.8925.12.3718.5203.5743.8926.4532.3717-.1218.578-.5205.457-.8926a.7113.7113 0 00-.6152-.4863zM8.127 9.6113a.4015.4015 0 00-.3868.2188.4.4 0 00.1758.539.3974.3974 0 00.539-.1738.401.401 0 00-.1757-.541.3936.3936 0 00-.1523-.043zm7.746 0a.3923.3923 0 00-.1523.043.4008.4008 0 00-.1758.541.4031.4031 0 00.539.1738.3989.3989 0 00.1759-.541.4033.4033 0 00-.3868-.2168zm-13.0722.088a.8528.8528 0 00-.8028.7167.8519.8519 0 00.709.9727.8477.8477 0 00.9727-.7051c.0735-.4642-.2409-.9007-.705-.9746a.8745.8745 0 00-.174-.0098zm18.3984 0a.854.854 0 00-.1719.0097.8498.8498 0 00-.707.9746.8477.8477 0 00.9727.705.8494.8494 0 00.707-.9726c-.0643-.4055-.4057-.6986-.8008-.7168zm-14.3047.1679a.4876.4876 0 00-.4218.336.4873.4873 0 00.3144.6152c.2558.084.5329-.0558.6152-.3125.0838-.2558-.0578-.5337-.3144-.6172a.4888.4888 0 00-.1934-.0215zm10.211 0a.489.489 0 00-.1934.0215c-.2555.0835-.3971.3614-.3144.6172a.4896.4896 0 00.6171.3125c.2564-.0827.3947-.3593.3106-.6153-.0601-.192-.2299-.3192-.42-.336zm-11.4942.5332a.5899.5899 0 00-.5547.498c-.0511.323.1676.6266.4883.6778.3235.0518.6274-.1689.6778-.4903a.5926.5926 0 00-.4922-.6777.5862.5862 0 00-.1192-.0078zm12.7774 0a.593.593 0 00-.1192.0078.5923.5923 0 00-.4922.6777.5897.5897 0 00.6758.4903c.322-.0512.5414-.3548.4903-.6778a.5905.5905 0 00-.5547-.498zm-10.7325.5137c-.1853.0095-.3472.145-.3789.3359a.4024.4024 0 00.336.461.4009.4009 0 00.457-.332.4025.4025 0 00-.334-.463.3937.3937 0 00-.08-.002zm8.6875 0a.4169.4169 0 00-.082.0039.4023.4023 0 00-.332.461c.0341.2184.2406.3656.459.332a.4019.4019 0 00.334-.459c-.0301-.1928-.1917-.3291-.379-.338zm-15.3359.078C.4508 10.9922 0 11.4437 0 12c0 .5575.4503 1.0078 1.0078 1.0078A1.0069 1.0069 0 002.0156 12c0-.5564-.4506-1.0078-1.0078-1.0078zm21.9844 0c-.558 0-1.0098.4509-1.0098 1.0079 0 .5569.4518 1.0078 1.0098 1.0078C23.5466 13.0078 24 12.5575 24 12c0-.5564-.4534-1.0078-1.0078-1.0078zm-18.7207.299a.7086.7086 0 00-.709.7089c.001.3924.317.709.709.709a.7086.7086 0 00.709-.709.709.709 0 00-.709-.709zm15.457 0c-.3904 0-.709.3171-.709.7089 0 .3924.3186.709.709.709a.7062.7062 0 00.707-.709c0-.3918-.3146-.709-.707-.709zm-13.0527.2187c-.27 0-.4883.2213-.4883.4902 0 .269.2183.4879.4883.4863.269 0 .4883-.2174.4883-.4863 0-.269-.2194-.4902-.4883-.4902zm10.6484 0c-.2698 0-.4883.2213-.4883.4902a.486.486 0 00.4883.4863.4867.4867 0 00.4883-.4863c0-.269-.218-.4902-.4883-.4902zm-1.0176.7734c-.1861.0074-.3464.147-.377.3379-.0348.2202.1128.426.3321.461.2187.0331.4252-.1146.461-.334a.3976.3976 0 00-.334-.459.4076.4076 0 00-.082-.0059zm-8.6132.002a.4168.4168 0 00-.082.0039c-.2181.0347-.37.239-.334.459.035.2198.2407.3674.4609.334a.404.404 0 00.334-.461c-.0306-.192-.192-.3278-.379-.336zm-2.0274.1328a.6064.6064 0 00-.121.0058c-.3208.0504-.5395.3529-.4884.6758a.5894.5894 0 00.6739.4922.5917.5917 0 00.4922-.6777c-.0441-.2816-.2813-.4838-.5567-.4961zm12.668 0a.5905.5905 0 00-.5567.498c-.0513.3214.168.625.4903.6758.3231.0514.6244-.1701.6758-.4922.051-.323-.1671-.6254-.4903-.6758a.585.585 0 00-.1191-.0058zm-15.455.1816a.8538.8538 0 00-.172.0098c-.4638.0735-.7817.5105-.709.9746.074.4642.511.7812.9747.707.466-.0732.7808-.5105.707-.9746a.8497.8497 0 00-.8008-.7168zm18.242 0c-.396.0179-.7384.3103-.8026.7168-.0727.4641.2442.901.709.9746.4636.0739.8983-.243.9726-.707.0726-.4648-.2409-.9011-.705-.9746a.8735.8735 0 00-.174-.0098zm-14.1405.5586a.4917.4917 0 00-.1934.0215.4892.4892 0 00-.3144.6172c.082.2566.3585.3958.6152.3125.2566-.0827.397-.3606.3144-.6153a.4879.4879 0 00-.4218-.3359zm10.041 0a.4896.4896 0 00-.4238.336c-.0822.2546.0589.5325.3144.6152.2564.0833.532-.056.6133-.3125.084-.2572-.0542-.5337-.3106-.6172a.4916.4916 0 00-.1933-.0215zm-8.9512.4277a.3959.3959 0 00-.1523.043.3983.3983 0 00-.1758.541.399.399 0 00.5371.1758.3994.3994 0 00.1758-.539c-.0759-.1482-.2297-.2314-.3848-.2208zm7.8613 0a.4052.4052 0 00-.3886.2188.4037.4037 0 00.1758.541c.1983.101.4418.0231.543-.1758.1005-.196.0196-.4391-.1778-.541a.3905.3905 0 00-.1524-.043zm-11.2207.0938a.7048.7048 0 00-.2793.0332c-.3723.1218-.5767.5213-.455.8945a.7072.7072 0 00.8925.4531c.3737-.12.575-.5195.4551-.8925a.7111.7111 0 00-.6133-.4883zm14.5782 0a.7118.7118 0 00-.6133.4902c-.1196.372.0822.7705.455.8906a.7071.7071 0 00.8926-.453c.1226-.3733-.0833-.7728-.455-.8946a.7042.7042 0 00-.2793-.0332zm-13.0704.6543a.5803.5803 0 00-.2246.0625c-.2907.148-.4083.5042-.2597.795a.59.59 0 00.7949.2577.5864.5864 0 00.2578-.793.5911.5911 0 00-.5683-.3222zm11.5625 0a.5917.5917 0 00-.5683.3203.5902.5902 0 00.2578.795c.2907.1473.6475.0327.795-.2579.1488-.2907.0317-.6469-.2598-.795a.5784.5784 0 00-.2247-.0624zm-16.1484.0566a.992.992 0 00-.3965.0469c-.5303.1712-.8205.741-.6484 1.2715.172.5289.741.8182 1.2695.6465.53-.173.8197-.741.6485-1.2715a1.009 1.009 0 00-.873-.6934zm20.7344 0a1.0107 1.0107 0 00-.873.6934c-.1707.5305.118 1.0985.6484 1.2715.5292.1717 1.0972-.1176 1.2695-.6465.1726-.5306-.117-1.1003-.6484-1.2715a.992.992 0 00-.3965-.0469zm-14.6914.25a.4847.4847 0 00-.2695.0938c-.2175.159-.2663.4639-.1094.6816a.4893.4893 0 00.6836.1094c.2167-.1586.2683-.4658.1093-.6836a.494.494 0 00-.414-.2012zm8.6484 0a.4911.4911 0 00-.412.2012.4897.4897 0 00.1073.6836c.2185.1585.525.11.6817-.1094a.4875.4875 0 00-.1075-.6816.4844.4844 0 00-.2695-.0938zm-7.4199.0547c-.1028 0-.2064.037-.2852.1152a.4016.4016 0 000 .5684c.1582.1572.4118.1574.5684.002a.403.403 0 000-.5704.3973.3973 0 00-.2832-.1152zm6.1914 0a.3975.3975 0 00-.2832.1172c-.1579.1565-.1568.4122 0 .5684.1589.1565.4117.1565.5684 0a.4016.4016 0 000-.5684.4026.4026 0 00-.2852-.1172zm-11.42.666a.8422.8422 0 00-.3241.0899c-.4186.2135-.5862.7252-.373 1.1445.2132.4186.7252.5859 1.1444.373.4185-.2139.5867-.7263.373-1.1445-.1596-.3135-.4891-.4857-.8202-.4629zm16.6485 0a.8553.8553 0 00-.8203.463c-.2134.4181-.0462.9305.373 1.1445.4187.2128.9304.0455 1.1446-.3731.214-.4193.0459-.931-.373-1.1445a.8397.8397 0 00-.3243-.0899zM13.959 15.5a.4037.4037 0 00-.1543.043c-.195.1015-.2742.3435-.1738.541a.3988.3988 0 00.539.1758c.1964-.1017.277-.3433.1758-.541a.4006.4006 0 00-.3867-.2188zm-3.918.002c-.1569-.0107-.3114.0691-.3867.2167a.4012.4012 0 00.1758.541c.1978.1.4387.0222.539-.1757.1023-.198.0228-.4393-.1738-.541a.402.402 0 00-.1543-.041zm-1.1523.3164a.487.487 0 00-.4121.2011.4874.4874 0 10.789.5723c.158-.217.1098-.5226-.1074-.6816a.4826.4826 0 00-.2695-.0918zm6.2246 0a.4833.4833 0 00-.2696.0918c-.2181.159-.2675.4646-.1093.6816.1573.2192.4643.2671.6816.1094.2182-.159.2692-.4645.1094-.6817a.4863.4863 0 00-.4121-.2011zm-9.3906.0156a.6996.6996 0 00-.3907.1328c-.3158.2309-.3867.6757-.1562.9922a.7044.7044 0 00.9883.1562c.3172-.2307.3884-.6724.1582-.9882a.711.711 0 00-.5996-.293zm12.5546 0a.7134.7134 0 00-.5996.293.7052.7052 0 00.1582.9882c.3173.2312.761.162.9903-.1562.2301-.3165.1593-.7613-.1582-.9922a.699.699 0 00-.3907-.1328zm-6.9804.0879c-.188.008-.3496.1486-.3809.3418-.0333.2182.1183.4223.338.459.2195.0349.4232-.116.4589-.336.0335-.2184-.1165-.4225-.334-.459a.4123.4123 0 00-.082-.0058zm1.4062.002a.4108.4108 0 00-.082.0038c-.2196.035-.3667.2411-.332.461a.4013.4013 0 00.459.334.3987.3987 0 00.332-.459.3996.3996 0 00-.377-.3399zm-5.2578.039a.59.59 0 00-.418.1738.5905.5905 0 00.836.834c.2313-.2306.2324-.6037.002-.834a.5958.5958 0 00-.42-.1738zm9.1094 0a.5891.5891 0 00-.418.1738.5867.5867 0 000 .834.5875.5875 0 00.834 0 .5893.5893 0 000-.834.5849.5849 0 00-.416-.1738zm-6.2422.6133a.4878.4878 0 00-.4219.336.4857.4857 0 00.3145.6151.489.489 0 00.6152-.3125c.0834-.2569-.0579-.5344-.3144-.6171a.4904.4904 0 00-.1934-.0215zm3.375 0a.4907.4907 0 00-.1934.0215c-.255.0827-.3961.3602-.3125.6171.0824.2559.3589.3944.6153.3125a.4885.4885 0 00.3125-.6152.4877.4877 0 00-.4219-.336zM12 16.8359a.4878.4878 0 00-.4883.4883c0 .2698.2186.4883.4883.4883.2704 0 .4902-.2185.4902-.4883 0-.2703-.2198-.4883-.4902-.4883zm-2.8828.3125a.5908.5908 0 00-.5684.3204c-.1467.2916-.0318.6463.2578.7949a.5923.5923 0 00.797-.2578c.1469-.2902.0316-.6464-.2579-.795a.6008.6008 0 00-.2285-.0625zm5.7656 0a.59.59 0 00-.2265.0625c-.2917.1479-.4058.504-.2598.795.1494.291.5061.4064.7969.2578a.59.59 0 00.2558-.795.5864.5864 0 00-.5664-.3203zm-11.8105.3028a1.0037 1.0037 0 00-.5567.1933c-.4502.3271-.5514.9589-.2226 1.4102.327.4491.9581.549 1.4082.2207.4518-.3276.5497-.9583.2226-1.4082a1.0092 1.0092 0 00-.8515-.416zm17.8554.002c-.3235-.011-.6468.133-.8515.414-.3285.4499-.2287 1.0811.2226 1.4082.452.3284 1.082.2284 1.4082-.2207.3293-.4513.2284-1.083-.2226-1.4102a1.0005 1.0005 0 00-.5567-.1914zm-13.4453.0898a.7077.7077 0 00-.5976.293c-.2306.3159-.1594.7591.1562.9902.3175.23.7595.1583.9902-.1582.23-.317.1605-.7607-.1562-.9903a.704.704 0 00-.3926-.1347zm9.0352 0a.7037.7037 0 00-.3926.1347c-.316.2296-.386.6733-.1563.9903a.7096.7096 0 00.9903.1582c.317-.2302.387-.6743.1562-.9903a.707.707 0 00-.5976-.293zm-11.0742.162a.8466.8466 0 00-.6016.25c-.3328.3325-.3328.8713 0 1.2032.3322.3323.8696.3323 1.2031 0a.8518.8518 0 00-.6015-1.4531zm13.1152.002a.8552.8552 0 00-.6035.248.85.85 0 000 1.2032c.3332.3323.8707.3314 1.205 0a.85.85 0 000-1.2031.8443.8443 0 00-.6015-.248zm-7.5918.0625c-.2745.0126-.514.2163-.5586.498-.0513.322.1692.625.4922.6759a.5907.5907 0 00.6758-.4922c.0527-.3215-.168-.6227-.4903-.6739a.5935.5935 0 00-.1191-.0078zm2.0664 0a.5911.5911 0 00-.1191.0078c-.3208.0503-.5398.3524-.4883.6739.0505.3222.3509.5441.6738.4922a.5893.5893 0 00.4902-.6758c-.0436-.2818-.282-.486-.5566-.498zm-3.4824.873a.7095.7095 0 00-.6133.4884.708.708 0 00.455.8925c.3734.1214.7732-.0839.8946-.455.1211-.3726-.0859-.772-.457-.8926a.7066.7066 0 00-.2793-.0332zm4.8984 0a.7056.7056 0 00-.2793.0313c-.3723.1212-.5779.522-.457.8946.1208.3711.5218.5764.8945.455.3717-.1217.5762-.5197.4551-.8925a.7086.7086 0 00-.6133-.4883zM12 19.0196a.7086.7086 0 00-.709.709c0 .3916.3168.709.709.709a.7088.7088 0 00.709-.709.7089.7089 0 00-.709-.709zm-4.1504.3946a.8518.8518 0 00-.8183.4629c-.2126.4187-.0453.9295.373 1.1425.419.2138.9304.0484 1.1426-.3691.213-.419.0486-.9328-.3711-1.1465a.8503.8503 0 00-.3262-.0898zm8.3008 0a.8595.8595 0 00-.3281.0898c-.4181.2137-.5848.7261-.3711 1.1465.2138.4186.7278.5829 1.1465.3691.4175-.2125.5833-.7238.3691-1.1425a.8465.8465 0 00-.8164-.463zm-10.5762.4687a1.0087 1.0087 0 00-.8515.416c-.3276.4503-.225 1.0812.2246 1.4082a1.0076 1.0076 0 001.4082-.2226c.3281-.4506.2279-1.0811-.2227-1.4082a1.0096 1.0096 0 00-.5586-.1934zm12.8516 0a1.0122 1.0122 0 00-.5586.1934c-.4505.327-.5511.9576-.2227 1.4082.328.4513.9583.5508 1.4102.2226.45-.3265.5497-.958.2226-1.4082a1.0083 1.0083 0 00-.8515-.416zm-7.914.4258c-.3956.0179-.7384.3119-.8028.7187-.0739.4623.2422.8998.707.9727.4626.0743.9001-.244.9727-.709.0745-.4639-.242-.8983-.7051-.9726a.8516.8516 0 00-.1719-.0098zm2.9784 0a.8513.8513 0 00-.879.9844c.0734.4642.5083.7813.9728.707.4642-.0729.7806-.509.707-.9727-.0638-.4068-.4067-.7008-.8008-.7187zm-4.9726 1.1406c-.391.0338-.7442.2962-.873.6934-.173.5292.117 1.0971.6464 1.2695.5306.1726 1.1008-.1183 1.2715-.6484.1724-.5296-.1182-1.097-.6484-1.2696a.9986.9986 0 00-.3965-.0449zm6.9648 0a.9988.9988 0 00-.3965.045c-.529.1725-.8218.74-.6504 1.2695.1714.53.743.821 1.2715.6484.5299-.1724.8213-.7403.6504-1.2695-.1298-.3972-.4834-.6596-.875-.6934zM12 21.9824c-.5572 0-1.0078.4532-1.0078 1.0098S11.4428 24 12 24a1.007 1.007 0 001.0078-1.0078c0-.5566-.45-1.0098-1.0078-1.0098Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/fila.svg b/assets/lib/simple-icons/icons/fila.svg
index be103c66..62ff8888 100644
--- a/assets/lib/simple-icons/icons/fila.svg
+++ b/assets/lib/simple-icons/icons/fila.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Fila icon</title><path d="M8.736 8.048c-.582 0-1.035.471-1.035 1.054l.023 5.795c0 .582.445 1.054 1.029 1.054h.12c.583 0 1.054-.472 1.054-1.054l-.023-5.795c0-.583-.472-1.054-1.055-1.054zm3.071.007c-.574 0-1.04.468-1.04 1.044v5.24c0 .785.773 1.542 1.541 1.542h4.058c.577 0 .965-.42 1.292-.995l2.112-3.622c.018-.04.053-.09.093-.09.044 0 .07.05.092.088l1.381 2.216c.058.094.068.141.032.225-.032.077-.109.093-.23.093h-1.939c-.578 0-1.044.467-1.044 1.044v.065c0 .577.466.976 1.044.976h3.163c.77 0 1.638-.732 1.638-1.69 0-.607-.118-.822-.624-1.645l-2.342-3.814c-.275-.442-.65-.656-1.123-.656-.49 0-.904.229-1.163.656l-2.712 4.496c-.185.308-.398.434-.75.434h-2.018a.275.275 0 0 1-.285-.283l.002-4.28c0-.576-.468-1.044-1.044-1.044zm-10.752.143C.473 8.198 0 8.644 0 9.226V9.3c0 .584.473 1.055 1.055 1.055H5.99c.581 0 1.055-.471 1.055-1.055v-.066A1.04 1.04 0 0 0 5.99 8.198zm.187 2.819c-.724 0-1.241.568-1.241 1.241L0 14.91c0 .577.467 1.042 1.042 1.042h.134a1.04 1.04 0 0 0 1.042-1.042v-1.458c0-.157.126-.284.283-.284H5.48c.575 0 1.043-.465 1.043-1.042v-.066c0-.576-.468-1.043-1.043-1.043z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Fila</title><path d="M8.736 8.048c-.582 0-1.035.471-1.035 1.054l.023 5.795c0 .582.445 1.054 1.029 1.054h.12c.583 0 1.054-.472 1.054-1.054l-.023-5.795c0-.583-.472-1.054-1.055-1.054zm3.071.007c-.574 0-1.04.468-1.04 1.044v5.24c0 .785.773 1.542 1.541 1.542h4.058c.577 0 .965-.42 1.292-.995l2.112-3.622c.018-.04.053-.09.093-.09.044 0 .07.05.092.088l1.381 2.216c.058.094.068.141.032.225-.032.077-.109.093-.23.093h-1.939c-.578 0-1.044.467-1.044 1.044v.065c0 .577.466.976 1.044.976h3.163c.77 0 1.638-.732 1.638-1.69 0-.607-.118-.822-.624-1.645l-2.342-3.814c-.275-.442-.65-.656-1.123-.656-.49 0-.904.229-1.163.656l-2.712 4.496c-.185.308-.398.434-.75.434h-2.018a.275.275 0 0 1-.285-.283l.002-4.28c0-.576-.468-1.044-1.044-1.044zm-10.752.143C.473 8.198 0 8.644 0 9.226V9.3c0 .584.473 1.055 1.055 1.055H5.99c.581 0 1.055-.471 1.055-1.055v-.066A1.04 1.04 0 0 0 5.99 8.198zm.187 2.819c-.724 0-1.241.568-1.241 1.241L0 14.91c0 .577.467 1.042 1.042 1.042h.134a1.04 1.04 0 0 0 1.042-1.042v-1.458c0-.157.126-.284.283-.284H5.48c.575 0 1.043-.465 1.043-1.042v-.066c0-.576-.468-1.043-1.043-1.043z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/files.svg b/assets/lib/simple-icons/icons/files.svg
new file mode 100644
index 00000000..d4ad8573
--- /dev/null
+++ b/assets/lib/simple-icons/icons/files.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Files</title><path d="M12.367 2.453a.822.822 0 0 0-.576.238L.241 14.213a.822.822 0 0 0-.241.584v.066c0-.323.209-.608.516-.709l7.275-2.318a2.437 2.437 0 0 0 1.584-1.592l2.318-7.267a.757.757 0 0 1 .719-.524zM0 14.863v5.047c0 .904.733 1.637 1.637 1.637h20.726c.904 0 1.637-.733 1.637-1.637V4.09c0-.904-.733-1.637-1.637-1.637h-9.951v.5l.088 9.861c.01 1.175-.962 2.14-2.137 2.14L0 14.862zM12 3.66l-2.148 6.735v.001a2.94 2.94 0 0 1-1.909 1.916l-6.716 2.141h9.136c.905 0 1.638-.734 1.637-1.639zm-10.363.975c-.905 0-1.638.734-1.637 1.638v7.473l9.135-9.111Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/filezilla.svg b/assets/lib/simple-icons/icons/filezilla.svg
index cf04f9d8..f68e9ec0 100644
--- a/assets/lib/simple-icons/icons/filezilla.svg
+++ b/assets/lib/simple-icons/icons/filezilla.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>FileZilla icon</title><path d="M24.002,1.86V0.801c-0.212,0-0.419-0.087-0.568-0.236c-0.148-0.148-0.234-0.356-0.234-0.567h-1.061 c-0.021,0.444-0.4,0.786-0.844,0.765c-0.413-0.021-0.743-0.352-0.764-0.765h-1.061c-0.027,0.444-0.408,0.782-0.853,0.755 c-0.405-0.025-0.729-0.35-0.755-0.755h-1.059c-0.023,0.444-0.4,0.786-0.845,0.765c-0.413-0.021-0.743-0.352-0.765-0.765h-1.06 c-0.022,0.444-0.399,0.786-0.844,0.765c-0.413-0.021-0.743-0.352-0.765-0.765h-1.059c-0.027,0.444-0.408,0.782-0.853,0.755 c-0.405-0.025-0.729-0.35-0.755-0.755h-1.06C8.786,0.442,8.414,0.789,7.971,0.772C7.549,0.758,7.21,0.419,7.195-0.002H6.135 c-0.021,0.444-0.4,0.786-0.844,0.765C4.878,0.741,4.547,0.411,4.527-0.002H3.467C3.451,0.442,3.078,0.789,2.635,0.772 c-0.422-0.014-0.76-0.353-0.775-0.774H0.8c0,0.211-0.086,0.419-0.235,0.567C0.416,0.714,0.209,0.801-0.003,0.801V1.86 c0.444,0.017,0.79,0.389,0.774,0.832C0.758,3.114,0.419,3.453-0.003,3.467v1.061c0.444,0.016,0.79,0.388,0.774,0.832 C0.758,5.782,0.419,6.12-0.003,6.135v1.059c0.444,0,0.804,0.361,0.804,0.805S0.441,8.803-0.003,8.803v1.059 c0.444,0,0.804,0.359,0.804,0.804s-0.359,0.804-0.804,0.804v1.06c0.444,0.016,0.79,0.389,0.774,0.832 c-0.014,0.422-0.353,0.76-0.774,0.775v1.061c0.444,0,0.804,0.359,0.804,0.803c0,0.445-0.359,0.805-0.804,0.805v1.061 c0.444,0.016,0.79,0.387,0.774,0.83c-0.014,0.422-0.353,0.762-0.774,0.775v1.061c0.444,0,0.804,0.359,0.804,0.805 c0,0.443-0.359,0.803-0.804,0.803v1.061c0.442,0.002,0.802,0.359,0.803,0.803h1.06c0.027-0.443,0.41-0.781,0.854-0.754 c0.406,0.025,0.729,0.348,0.754,0.754h1.061c0.021-0.443,0.4-0.785,0.844-0.764c0.413,0.021,0.743,0.352,0.764,0.764h1.059 c0.023-0.443,0.4-0.785,0.845-0.764c0.413,0.021,0.743,0.352,0.764,0.764h1.06c0.017-0.443,0.389-0.791,0.832-0.775 c0.422,0.016,0.761,0.354,0.775,0.775h1.061c0.021-0.443,0.4-0.785,0.844-0.764c0.413,0.021,0.743,0.352,0.764,0.764h1.059 c0.023-0.443,0.4-0.785,0.845-0.764c0.413,0.021,0.743,0.352,0.765,0.764h1.059c0.023-0.443,0.4-0.785,0.845-0.764 c0.413,0.021,0.743,0.352,0.765,0.764h1.06c0.016-0.443,0.388-0.791,0.831-0.775c0.422,0.016,0.761,0.354,0.775,0.775H23.2 c0-0.211,0.086-0.418,0.235-0.568c0.148-0.148,0.355-0.234,0.567-0.234v-1.061c-0.444-0.027-0.781-0.408-0.755-0.852 c0.025-0.406,0.35-0.73,0.755-0.754v-1.061c-0.444-0.023-0.786-0.4-0.764-0.844c0.021-0.414,0.351-0.744,0.764-0.764v-1.061 c-0.444-0.027-0.781-0.41-0.755-0.854c0.025-0.406,0.35-0.729,0.755-0.754v-1.061c-0.444-0.021-0.786-0.4-0.764-0.844 c0.021-0.412,0.351-0.742,0.764-0.764v-1.058c-0.444-0.027-0.781-0.41-0.755-0.854c0.025-0.406,0.35-0.729,0.755-0.754V8.803 c-0.444-0.021-0.786-0.4-0.764-0.844c0.021-0.413,0.351-0.743,0.764-0.764V6.135c-0.444-0.027-0.781-0.408-0.755-0.853 c0.025-0.405,0.35-0.729,0.755-0.754v-1.06c-0.444-0.022-0.786-0.4-0.765-0.844C23.258,2.211,23.588,1.881,24.002,1.86L24.002,1.86z M19.934,11.698l-6.404,6.226c0.58,0.09,1.14,0.225,1.742,0.225c1.465,0,3.148-0.445,4.287-0.916l-0.584,2.746 c-1.676,0.805-2.701,0.871-3.703,0.871c-1.095,0-2.144-0.357-3.215-0.357c-0.603,0-1.474,0.045-2.009,0.4L8.887,18.84l6.607-6.541 H7.891l-1.451,6.808H3.27l3.305-15.58h10.49l-0.67,3.146H9.096L8.471,9.598h11.977L19.934,11.698L19.934,11.698z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>FileZilla</title><path d="M23.999 1.861V.803a.81.81 0 0 1-.568-.236.81.81 0 0 1-.234-.567h-1.06a.806.806 0 0 1-1.608 0h-1.06a.805.805 0 0 1-1.608 0h-1.059a.807.807 0 0 1-.845.765.808.808 0 0 1-.764-.765h-1.06a.806.806 0 0 1-1.609 0h-1.058a.805.805 0 0 1-1.608 0h-1.06a.794.794 0 0 1-.825.774A.803.803 0 0 1 7.197 0h-1.06A.806.806 0 0 1 4.53 0H3.47a.803.803 0 0 1-1.607 0H.803a.806.806 0 0 1-.802.803V1.86a.804.804 0 0 1 0 1.607v1.06a.803.803 0 0 1 0 1.607v1.059a.805.805 0 0 1 0 1.608v1.06a.803.803 0 1 1 0 1.607v1.06a.803.803 0 0 1 0 1.606v1.06a.803.803 0 1 1 0 1.608v1.06c.444.017.79.388.774.83a.801.801 0 0 1-.774.775v1.061a.803.803 0 1 1 0 1.608v1.06A.805.805 0 0 1 .804 24h1.06a.806.806 0 0 1 1.607 0h1.06a.806.806 0 0 1 1.608 0h1.059a.806.806 0 0 1 1.609 0h1.06a.804.804 0 0 1 1.607 0h1.06a.806.806 0 0 1 1.607 0H15.2a.807.807 0 0 1 1.61 0h1.058a.807.807 0 0 1 1.61 0h1.059a.804.804 0 0 1 1.606 0h1.054c0-.21.086-.418.235-.568a.808.808 0 0 1 .567-.234v-1.06a.805.805 0 0 1 0-1.606v-1.06a.805.805 0 0 1 0-1.608v-1.06a.806.806 0 0 1 0-1.608v-1.061a.804.804 0 0 1 0-1.608V11.47a.806.806 0 0 1 0-1.608v-1.06a.804.804 0 0 1 0-1.607v-1.06a.805.805 0 0 1 0-1.606v-1.06a.806.806 0 0 1 0-1.608zm-4.067 9.836L13.53 17.92c.58.09 1.14.225 1.742.225 1.464 0 3.147-.445 4.285-.916l-.584 2.745c-1.675.805-2.7.87-3.701.87-1.095 0-2.144-.356-3.215-.356-.602 0-1.473.045-2.008.4l-1.16-2.052 6.604-6.54h-7.6l-1.45 6.806h-3.17L6.577 3.528h10.487l-.67 3.145H9.097l-.624 2.924h11.973z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/fing.svg b/assets/lib/simple-icons/icons/fing.svg
new file mode 100644
index 00000000..cce4685b
--- /dev/null
+++ b/assets/lib/simple-icons/icons/fing.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Fing</title><path d="M12.706 9.583c1.359.018 2.375 1.094 2.347 2.485-.027 1.317-1.117 2.352-2.46 2.337-1.333-.015-2.352-1.113-2.334-2.515.018-1.334 1.069-2.325 2.447-2.307zm6.259-3.852c-.654-.716-1.447-1.271-2.316-1.726-.26-.136-.535-.241-.8-.367-.444-.211-.719-.539-.579-1.052.147-.537.547-.738 1.071-.597 1.196.323 2.198 1.004 3.15 1.769.114.092.225.189.333.288.194.179.346.542.611.459.254-.08.079-.446.129-.681.048-.228.161-.422.405-.402.256.021.519.141.511.455a46.98 46.98 0 0 1-.116 2.518c-.03.375-.31.509-.68.491a72.177 72.177 0 0 0-2.081-.068c-.329-.006-.679.012-.685-.439-.005-.435.333-.47.667-.483.118-.002.256.039.38-.165zm-4.422-3.714c-.007 1.068-.87 1.938-1.917 1.934-1.063-.004-1.98-.923-1.971-1.973.009-1.057.944-1.993 1.973-1.978 1.059.016 1.922.926 1.915 2.017zM5.465 20.792c-1.049-.013-1.895-.891-1.894-1.964.001-1.106.893-2.018 1.949-1.993 1.063.025 1.925.959 1.893 2.049-.032 1.081-.89 1.921-1.948 1.908zm5.267 1.174c.023-1.124.857-1.896 2.017-1.866 1.04.026 1.9.948 1.861 1.992-.039 1.04-.955 1.92-1.984 1.908-1.062-.013-1.917-.931-1.894-2.034zM5.649 6.814c-1.13.002-1.966-.822-1.964-1.937.001-1.051.875-1.947 1.911-1.96 1.046-.012 1.953.868 1.965 1.907.013 1.126-.816 1.988-1.912 1.99zm-2.954 7.082a1.92 1.92 0 0 1-1.927-1.923c-.004-1.08.894-1.988 1.96-1.981 1.08.007 1.94.912 1.916 2.014-.025 1.099-.845 1.894-1.949 1.89zm18.931 5.047c-.009 1.103-.872 1.926-1.997 1.906-1.077-.02-1.84-.844-1.831-1.979.009-1.11.811-1.921 1.899-1.92 1.077.002 1.938.892 1.929 1.993zm1.606-6.87a10.458 10.458 0 0 1-.856 4.046c-.188.443-.51.724-1.044.546-.495-.164-.75-.587-.542-1.095a9.8 9.8 0 0 0 .731-4.062c-.016-.522.304-.818.836-.814.487.003.793.245.843.75.021.208.022.419.032.629zm-6.363 7.897c.575-.027.804.255.925.598a.808.808 0 0 1-.351.989c-.404.25-.84.473-1.328.529-.418.048-.741-.114-.918-.502-.168-.369-.102-.738.216-.965a4.064 4.064 0 0 1 1.456-.649zM4.67 7.84c-.027.8-.622 1.588-1.179 1.563-.441-.02-.886-.47-.885-.896.001-.762.622-1.615 1.161-1.595.512.017.92.437.903.928zm5.254 13.317c.003.597-.317.906-.902.853-.495-.045-.914-.299-1.291-.586-.302-.23-.411-.589-.213-.958.192-.358.472-.564.919-.497.838.124 1.484.627 1.487 1.188zm-6.456-6.743c.531.002 1.093.781 1.075 1.491a.871.871 0 0 1-.859.835c-.508.009-1.082-.738-1.1-1.432-.011-.423.456-.895.884-.894zM9.102 2.002c.53.009.839.344.818.885-.021.528-.81 1.1-1.487 1.078-.47-.015-.783-.369-.778-.879.006-.596.675-1.097 1.447-1.084z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/firebase.svg b/assets/lib/simple-icons/icons/firebase.svg
index 1da51b18..b78fd062 100644
--- a/assets/lib/simple-icons/icons/firebase.svg
+++ b/assets/lib/simple-icons/icons/firebase.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Firebase icon</title><path d="M3.89 15.673L6.255.461A.542.542 0 0 1 7.27.289L9.813 5.06 3.89 15.673zm16.795 3.691L18.433 5.365a.543.543 0 0 0-.918-.295l-14.2 14.294 7.857 4.428a1.62 1.62 0 0 0 1.587 0l7.926-4.428zM14.3 7.148l-1.82-3.482a.542.542 0 0 0-.96 0L3.53 17.984 14.3 7.148z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Firebase</title><path d="M3.89 15.672L6.255.461A.542.542 0 017.27.288l2.543 4.771zm16.794 3.692l-2.25-14a.54.54 0 00-.919-.295L3.316 19.365l7.856 4.427a1.621 1.621 0 001.588 0zM14.3 7.147l-1.82-3.482a.542.542 0 00-.96 0L3.53 17.984z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/firefox.svg b/assets/lib/simple-icons/icons/firefox.svg
new file mode 100644
index 00000000..e7c9fff2
--- /dev/null
+++ b/assets/lib/simple-icons/icons/firefox.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Firefox</title><path d="M20.452 3.445a11.002 11.002 0 00-2.482-1.908C16.944.997 15.098.093 12.477.032c-.734-.017-1.457.03-2.174.144-.72.114-1.398.292-2.118.56-1.017.377-1.996.975-2.574 1.554.583-.349 1.476-.733 2.55-.992a10.083 10.083 0 013.729-.167c2.341.34 4.178 1.381 5.48 2.625a8.066 8.066 0 011.298 1.587c1.468 2.382 1.33 5.376.184 7.142-.85 1.312-2.67 2.544-4.37 2.53-.583-.023-1.438-.152-2.25-.566-2.629-1.343-3.021-4.688-1.118-6.306-.632-.136-1.82.13-2.646 1.363-.742 1.107-.7 2.816-.242 4.028a6.473 6.473 0 01-.59-1.895 7.695 7.695 0 01.416-3.845A8.212 8.212 0 019.45 5.399c.896-1.069 1.908-1.72 2.75-2.005-.54-.471-1.411-.738-2.421-.767C8.31 2.583 6.327 3.061 4.7 4.41a8.148 8.148 0 00-1.976 2.414c-.455.836-.691 1.659-.697 1.678.122-1.445.704-2.994 1.248-4.055-.79.413-1.827 1.668-2.41 3.042C.095 9.37-.2 11.608.14 13.989c.966 5.668 5.9 9.982 11.843 9.982C18.62 23.971 24 18.591 24 11.956a11.93 11.93 0 00-3.548-8.511z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/firefoxbrowser.svg b/assets/lib/simple-icons/icons/firefoxbrowser.svg
new file mode 100644
index 00000000..3cbc89ce
--- /dev/null
+++ b/assets/lib/simple-icons/icons/firefoxbrowser.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Firefox Browser</title><path d="M8.824 7.287c.008 0 .004 0 0 0zm-2.8-1.4c.006 0 .003 0 0 0zm16.754 2.161c-.505-1.215-1.53-2.528-2.333-2.943.654 1.283 1.033 2.57 1.177 3.53l.002.02c-1.314-3.278-3.544-4.6-5.366-7.477-.091-.147-.184-.292-.273-.446a3.545 3.545 0 01-.13-.24 2.118 2.118 0 01-.172-.46.03.03 0 00-.027-.03.038.038 0 00-.021 0l-.006.001a.037.037 0 00-.01.005L15.624 0c-2.585 1.515-3.657 4.168-3.932 5.856a6.197 6.197 0 00-2.305.587.297.297 0 00-.147.37c.057.162.24.24.396.17a5.622 5.622 0 012.008-.523l.067-.005a5.847 5.847 0 011.957.222l.095.03a5.816 5.816 0 01.616.228c.08.036.16.073.238.112l.107.055a5.835 5.835 0 01.368.211 5.953 5.953 0 012.034 2.104c-.62-.437-1.733-.868-2.803-.681 4.183 2.09 3.06 9.292-2.737 9.02a5.164 5.164 0 01-1.513-.292 4.42 4.42 0 01-.538-.232c-1.42-.735-2.593-2.121-2.74-3.806 0 0 .537-2 3.845-2 .357 0 1.38-.998 1.398-1.287-.005-.095-2.029-.9-2.817-1.677-.422-.416-.622-.616-.8-.767a3.47 3.47 0 00-.301-.227 5.388 5.388 0 01-.032-2.842c-1.195.544-2.124 1.403-2.8 2.163h-.006c-.46-.584-.428-2.51-.402-2.913-.006-.025-.343.176-.389.206-.406.29-.787.616-1.136.974-.397.403-.76.839-1.085 1.303a9.816 9.816 0 00-1.562 3.52c-.003.013-.11.487-.19 1.073-.013.09-.026.181-.037.272a7.8 7.8 0 00-.069.667l-.002.034-.023.387-.001.06C.386 18.795 5.593 24 12.016 24c5.752 0 10.527-4.176 11.463-9.661.02-.149.035-.298.052-.448.232-1.994-.025-4.09-.753-5.844z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/first.svg b/assets/lib/simple-icons/icons/first.svg
index d147a01e..ae3f1023 100644
--- a/assets/lib/simple-icons/icons/first.svg
+++ b/assets/lib/simple-icons/icons/first.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>FIRST icon</title><path d="M 17.51401,18.08466 16.131,16.75662 C 16.67474,16.38449 17.13479,15.94781 17.48911,15.46172 17.49409,15.4554 17.49849,15.44774 17.50328,15.44104 L 20.86723,11.94819 20.9672,11.84056 21.40618,11.38358 17.29816,7.4395 16.37481,8.40058 15.35628,9.46182 14.66277,10.18463 13.35447,11.54695 13.35523,11.54772 13.24204,11.6655 13.62356,12.03093 15.39363,13.75696 C 15.00618,14.12354 14.51396,14.43783 13.95834,14.669 13.95815,14.66919 13.95758,14.66919 13.95739,14.66938 L 12.78889,13.548 11.64223,12.44635 10.86177,11.70668 12.71611,9.77515 13.6475,8.80469 14.6599,7.75073 17.18899,5.1165 23.84736,11.4893 Z M 18.37223,12.486 C 18.4023,12.28892 18.41934,12.09375 18.41934,11.90663 18.41934,10.80249 17.91927,9.63859 17.07944,8.7706 L 17.29816,8.5425 20.70117,11.8101 17.88346,14.74427 C 18.18262,14.04846 18.37606,13.19023 18.37606,12.57467 18.37606,12.54862 18.37472,12.51836 18.37223,12.486 M 15.5434,13.60757 13.93689,12.043 15.29749,10.62591 C 15.78147,11.02945 16.13962,11.51152 16.32885,12.04128 16.31717,12.12784 16.30242,12.2148 16.28116,12.30194 16.16663,12.77118 15.91764,13.20977 15.5434,13.60757 M 15.27642,15.94628 C 15.0282,16.07249 14.76505,16.18683 14.49366,16.28719 13.5615,16.63136 12.55638,16.80584 11.50644,16.80584 10.0181,16.80584 8.60905,16.4519 7.43232,15.78214 6.7819,15.41173 6.23529,14.96299 5.80838,14.44779 5.64501,14.25033 5.50079,14.04482 5.37936,13.83682 5.12846,13.40895 4.96299,12.95811 4.88772,12.4971 4.85344,12.29141 4.83696,12.09816 4.83696,11.90663 4.83696,11.19359 5.04151,10.50735 5.44506,9.8644 L 6.52775,10.96012 C 6.4542,11.2114 6.41705,11.46689 6.41705,11.72085 6.41705,11.93211 6.44329,12.147 6.495,12.35959 6.56873,12.66028 6.69571,12.95447 6.87192,13.23448 7.01135,13.45588 7.18123,13.66713 7.37659,13.86191 7.91381,14.39857 8.64276,14.82069 9.48489,15.08308 10.12363,15.28226 10.80393,15.38319 11.50644,15.38319 12.07374,15.38319 12.63433,15.31597 13.1729,15.18248 13.47953,15.10587 13.77525,15.00857 14.05181,14.89385 14.68901,14.62859 15.2498,14.25913 15.67383,13.82495 16.10457,13.3831 16.38822,12.89011 16.5175,12.35959 16.56979,12.14546 16.59641,11.93057 16.59641,11.72085 16.59641,11.11793 16.36907,10.43534 15.99885,9.91362 L 16.92009,8.95427 C 17.7084,9.77592 18.17553,10.87067 18.17553,11.90663 18.17553,12.09682 18.15868,12.29562 18.12554,12.4971 17.98324,13.36586 17.52224,14.19344 16.79215,14.8904 16.36447,15.29912 15.85444,15.65439 15.27642,15.94628 M 4.64716,12.53675 C 4.6485,12.5446 4.6508,12.55188 4.65214,12.55993 4.64927,12.59076 4.64716,12.61949 4.64716,12.64228 4.64716,12.96768 4.84654,13.73991 4.92717,14.04807 4.92717,14.04846 4.92756,14.04884 4.92756,14.04922 L 3.86976,14.50141 4.87833,9.24463 5.29279,9.6543 C 4.83007,10.35949 4.59373,11.11659 4.59373,11.90663 4.59373,12.11137 4.61135,12.31765 4.64716,12.53675 M 7.11573,13.15787 C 7.10405,13.13986 7.08911,13.12282 7.07781,13.10462 6.91539,12.84702 6.79914,12.57659 6.73153,12.30194 6.72444,12.27302 6.72157,12.2441 6.71582,12.21499 6.79416,11.93843 6.91846,11.67374 7.08202,11.42456 L 8.36792,12.69648 Z M 11.99483,13.88834 13.09993,14.94939 C 12.58492,15.07542 12.04903,15.13977 11.50644,15.13977 10.82844,15.13977 10.17247,15.04247 9.5571,14.85056 9.47493,14.82509 9.39488,14.79675 9.3152,14.76821 L 11.76404,13.66675 Z M 1.19914,18.26699 3.57309,5.04238 6.96193,8.25406 8.02356,9.25995 8.83486,10.02911 10.76083,11.86526 V 12.7028 L 11.5796,13.4894 9.02198,14.65368 C 8.44415,14.40891 7.9412,14.0814 7.54877,13.68954 7.53977,13.68073 7.53249,13.67058 7.52368,13.66177 L 9.48623,12.74513 4.87067,8.44731 4.7797,8.35576 4.66957,8.95083 3.5796,14.63184 3.41087,15.51477 3.69988,15.39086 3.70103,15.38396 5.18362,14.74848 C 5.41537,15.23706 5.74747,15.69117 6.16136,16.0972 Z M 12.70481,9.4938 10.72444,11.55652 8.98501,9.90769 C 9.73215,9.58286 10.60972,9.39459 11.54934,9.39459 11.94752,9.39459 12.33402,9.42983 12.70481,9.4938 M 11.27872,6.80651 C 12.35279,6.80651 13.78904,7.08231 14.70089,7.41499 L 14.6599,7.4577 13.6475,8.51166 13.64405,8.51511 C 13.00761,8.30232 12.2982,8.18243 11.54934,8.18243 10.24199,8.18243 9.05473,8.54575 8.17199,9.13699 L 8.15877,9.12454 7.09715,8.11846 7.00235,8.02864 C 8.16299,7.32804 9.66857,6.80651 11.27872,6.80651 M 23.99943,11.3334 V 11.33072 L 23.99809,11.33225 17.18899,4.82346 14.89854,7.2091 C 13.95241,6.8429 12.46426,6.54872 11.3333,6.54872 9.68791,6.54872 7.99157,7.11066 6.80699,7.84381 L 3.61331,4.81714 3.61388,4.81389 3.61025,4.81408 3.60814,4.81216 3.60756,4.81446 2.4655,4.93416 0,18.43457 1.14762,18.55408 1.14819,18.55006 6.35078,16.27455 C 6.3592,16.28183 6.36706,16.28968 6.37549,16.29734 7.61312,17.38923 9.47129,18.08466 11.54934,18.08466 12.99114,18.08466 14.32607,17.7491 15.42255,17.17932 L 17.51401,19.18784 23.99943,12.43371 V 11.33493 L 24,11.33416 Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>FIRST</title><path d="M 17.51401,18.08466 16.131,16.75662 C 16.67474,16.38449 17.13479,15.94781 17.48911,15.46172 17.49409,15.4554 17.49849,15.44774 17.50328,15.44104 L 20.86723,11.94819 20.9672,11.84056 21.40618,11.38358 17.29816,7.4395 16.37481,8.40058 15.35628,9.46182 14.66277,10.18463 13.35447,11.54695 13.35523,11.54772 13.24204,11.6655 13.62356,12.03093 15.39363,13.75696 C 15.00618,14.12354 14.51396,14.43783 13.95834,14.669 13.95815,14.66919 13.95758,14.66919 13.95739,14.66938 L 12.78889,13.548 11.64223,12.44635 10.86177,11.70668 12.71611,9.77515 13.6475,8.80469 14.6599,7.75073 17.18899,5.1165 23.84736,11.4893 Z M 18.37223,12.486 C 18.4023,12.28892 18.41934,12.09375 18.41934,11.90663 18.41934,10.80249 17.91927,9.63859 17.07944,8.7706 L 17.29816,8.5425 20.70117,11.8101 17.88346,14.74427 C 18.18262,14.04846 18.37606,13.19023 18.37606,12.57467 18.37606,12.54862 18.37472,12.51836 18.37223,12.486 M 15.5434,13.60757 13.93689,12.043 15.29749,10.62591 C 15.78147,11.02945 16.13962,11.51152 16.32885,12.04128 16.31717,12.12784 16.30242,12.2148 16.28116,12.30194 16.16663,12.77118 15.91764,13.20977 15.5434,13.60757 M 15.27642,15.94628 C 15.0282,16.07249 14.76505,16.18683 14.49366,16.28719 13.5615,16.63136 12.55638,16.80584 11.50644,16.80584 10.0181,16.80584 8.60905,16.4519 7.43232,15.78214 6.7819,15.41173 6.23529,14.96299 5.80838,14.44779 5.64501,14.25033 5.50079,14.04482 5.37936,13.83682 5.12846,13.40895 4.96299,12.95811 4.88772,12.4971 4.85344,12.29141 4.83696,12.09816 4.83696,11.90663 4.83696,11.19359 5.04151,10.50735 5.44506,9.8644 L 6.52775,10.96012 C 6.4542,11.2114 6.41705,11.46689 6.41705,11.72085 6.41705,11.93211 6.44329,12.147 6.495,12.35959 6.56873,12.66028 6.69571,12.95447 6.87192,13.23448 7.01135,13.45588 7.18123,13.66713 7.37659,13.86191 7.91381,14.39857 8.64276,14.82069 9.48489,15.08308 10.12363,15.28226 10.80393,15.38319 11.50644,15.38319 12.07374,15.38319 12.63433,15.31597 13.1729,15.18248 13.47953,15.10587 13.77525,15.00857 14.05181,14.89385 14.68901,14.62859 15.2498,14.25913 15.67383,13.82495 16.10457,13.3831 16.38822,12.89011 16.5175,12.35959 16.56979,12.14546 16.59641,11.93057 16.59641,11.72085 16.59641,11.11793 16.36907,10.43534 15.99885,9.91362 L 16.92009,8.95427 C 17.7084,9.77592 18.17553,10.87067 18.17553,11.90663 18.17553,12.09682 18.15868,12.29562 18.12554,12.4971 17.98324,13.36586 17.52224,14.19344 16.79215,14.8904 16.36447,15.29912 15.85444,15.65439 15.27642,15.94628 M 4.64716,12.53675 C 4.6485,12.5446 4.6508,12.55188 4.65214,12.55993 4.64927,12.59076 4.64716,12.61949 4.64716,12.64228 4.64716,12.96768 4.84654,13.73991 4.92717,14.04807 4.92717,14.04846 4.92756,14.04884 4.92756,14.04922 L 3.86976,14.50141 4.87833,9.24463 5.29279,9.6543 C 4.83007,10.35949 4.59373,11.11659 4.59373,11.90663 4.59373,12.11137 4.61135,12.31765 4.64716,12.53675 M 7.11573,13.15787 C 7.10405,13.13986 7.08911,13.12282 7.07781,13.10462 6.91539,12.84702 6.79914,12.57659 6.73153,12.30194 6.72444,12.27302 6.72157,12.2441 6.71582,12.21499 6.79416,11.93843 6.91846,11.67374 7.08202,11.42456 L 8.36792,12.69648 Z M 11.99483,13.88834 13.09993,14.94939 C 12.58492,15.07542 12.04903,15.13977 11.50644,15.13977 10.82844,15.13977 10.17247,15.04247 9.5571,14.85056 9.47493,14.82509 9.39488,14.79675 9.3152,14.76821 L 11.76404,13.66675 Z M 1.19914,18.26699 3.57309,5.04238 6.96193,8.25406 8.02356,9.25995 8.83486,10.02911 10.76083,11.86526 V 12.7028 L 11.5796,13.4894 9.02198,14.65368 C 8.44415,14.40891 7.9412,14.0814 7.54877,13.68954 7.53977,13.68073 7.53249,13.67058 7.52368,13.66177 L 9.48623,12.74513 4.87067,8.44731 4.7797,8.35576 4.66957,8.95083 3.5796,14.63184 3.41087,15.51477 3.69988,15.39086 3.70103,15.38396 5.18362,14.74848 C 5.41537,15.23706 5.74747,15.69117 6.16136,16.0972 Z M 12.70481,9.4938 10.72444,11.55652 8.98501,9.90769 C 9.73215,9.58286 10.60972,9.39459 11.54934,9.39459 11.94752,9.39459 12.33402,9.42983 12.70481,9.4938 M 11.27872,6.80651 C 12.35279,6.80651 13.78904,7.08231 14.70089,7.41499 L 14.6599,7.4577 13.6475,8.51166 13.64405,8.51511 C 13.00761,8.30232 12.2982,8.18243 11.54934,8.18243 10.24199,8.18243 9.05473,8.54575 8.17199,9.13699 L 8.15877,9.12454 7.09715,8.11846 7.00235,8.02864 C 8.16299,7.32804 9.66857,6.80651 11.27872,6.80651 M 23.99943,11.3334 V 11.33072 L 23.99809,11.33225 17.18899,4.82346 14.89854,7.2091 C 13.95241,6.8429 12.46426,6.54872 11.3333,6.54872 9.68791,6.54872 7.99157,7.11066 6.80699,7.84381 L 3.61331,4.81714 3.61388,4.81389 3.61025,4.81408 3.60814,4.81216 3.60756,4.81446 2.4655,4.93416 0,18.43457 1.14762,18.55408 1.14819,18.55006 6.35078,16.27455 C 6.3592,16.28183 6.36706,16.28968 6.37549,16.29734 7.61312,17.38923 9.47129,18.08466 11.54934,18.08466 12.99114,18.08466 14.32607,17.7491 15.42255,17.17932 L 17.51401,19.18784 23.99943,12.43371 V 11.33493 L 24,11.33416 Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/fitbit.svg b/assets/lib/simple-icons/icons/fitbit.svg
index 6a8a66fe..3e5dd92f 100644
--- a/assets/lib/simple-icons/icons/fitbit.svg
+++ b/assets/lib/simple-icons/icons/fitbit.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Fitbit icon</title><path d="M13.298 1.825c0 .976-.81 1.785-1.786 1.785-.972 0-1.784-.81-1.784-1.785 0-.973.813-1.785 1.784-1.785.976 0 1.786.813 1.786 1.785zm-1.786 3.243c-1.052 0-1.863.81-1.863 1.866 0 1.053.81 1.865 1.865 1.865 1.053 0 1.865-.811 1.865-1.865s-.825-1.866-1.875-1.866h.008zm0 5.029c-1.052 0-1.945.891-1.945 1.945s.894 1.945 1.947 1.945 1.946-.891 1.946-1.945-.894-1.945-1.946-1.945h-.002zm0 5.107c-1.052 0-1.863.81-1.863 1.864s.81 1.866 1.865 1.866c1.053 0 1.865-.811 1.865-1.866 0-.972-.825-1.864-1.875-1.864h.008zm0 5.191c-.972 0-1.784.809-1.784 1.784 0 .97.813 1.781 1.784 1.781.977 0 1.786-.809 1.786-1.784 0-.973-.81-1.781-1.786-1.781zM16.46 4.823c-1.136 0-2.108.977-2.108 2.111 0 1.134.973 2.107 2.108 2.107 1.135 0 2.106-.975 2.106-2.107 0-1.135-.972-2.109-2.106-2.109v-.002zm0 5.03c-1.216 0-2.19.973-2.19 2.19 0 1.216.975 2.187 2.19 2.187 1.215 0 2.189-.971 2.189-2.189 0-1.216-.974-2.188-2.189-2.188zm0 5.108c-1.136 0-2.108.976-2.108 2.107 0 1.135.973 2.109 2.108 2.109 1.135 0 2.106-.976 2.106-2.109s-.971-2.107-2.106-2.107zm5.106-5.353c-1.296 0-2.43 1.055-2.43 2.434 0 1.297 1.051 2.433 2.43 2.433 1.381 0 2.434-1.065 2.434-2.444-.082-1.382-1.135-2.431-2.434-2.431v.008zM6.486 5.312c-.892 0-1.62.73-1.62 1.623 0 .891.729 1.62 1.62 1.62.893 0 1.619-.729 1.619-1.62 0-.893-.727-1.62-1.619-1.62v-.003zm0 5.027c-.973 0-1.703.729-1.703 1.703 0 .975.721 1.703 1.695 1.703s1.695-.73 1.695-1.703c0-.975-.735-1.703-1.71-1.703h.023zm0 5.107c-.892 0-1.62.731-1.62 1.62 0 .895.729 1.623 1.62 1.623.893 0 1.619-.735 1.619-1.635s-.727-1.62-1.619-1.62v.012zm-5.025-4.863c-.813 0-1.461.646-1.461 1.459 0 .81.648 1.459 1.46 1.459.81 0 1.459-.648 1.459-1.459s-.648-1.459-1.458-1.459z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Fitbit</title><path d="M13.298 1.825c0 .976-.81 1.785-1.786 1.785-.972 0-1.784-.81-1.784-1.785 0-.973.813-1.785 1.784-1.785.976 0 1.786.813 1.786 1.785zm-1.786 3.243c-1.052 0-1.863.81-1.863 1.866 0 1.053.81 1.865 1.865 1.865 1.053 0 1.865-.811 1.865-1.865s-.825-1.866-1.875-1.866h.008zm0 5.029c-1.052 0-1.945.891-1.945 1.945s.894 1.945 1.947 1.945 1.946-.891 1.946-1.945-.894-1.945-1.946-1.945h-.002zm0 5.107c-1.052 0-1.863.81-1.863 1.864s.81 1.866 1.865 1.866c1.053 0 1.865-.811 1.865-1.866 0-.972-.825-1.864-1.875-1.864h.008zm0 5.191c-.972 0-1.784.809-1.784 1.784 0 .97.813 1.781 1.784 1.781.977 0 1.786-.809 1.786-1.784 0-.973-.81-1.781-1.786-1.781zM16.46 4.823c-1.136 0-2.108.977-2.108 2.111 0 1.134.973 2.107 2.108 2.107 1.135 0 2.106-.975 2.106-2.107 0-1.135-.972-2.109-2.106-2.109v-.002zm0 5.03c-1.216 0-2.19.973-2.19 2.19 0 1.216.975 2.187 2.19 2.187 1.215 0 2.189-.971 2.189-2.189 0-1.216-.974-2.188-2.189-2.188zm0 5.108c-1.136 0-2.108.976-2.108 2.107 0 1.135.973 2.109 2.108 2.109 1.135 0 2.106-.976 2.106-2.109s-.971-2.107-2.106-2.107zm5.106-5.353c-1.296 0-2.43 1.055-2.43 2.434 0 1.297 1.051 2.433 2.43 2.433 1.381 0 2.434-1.065 2.434-2.444-.082-1.382-1.135-2.431-2.434-2.431v.008zM6.486 5.312c-.892 0-1.62.73-1.62 1.623 0 .891.729 1.62 1.62 1.62.893 0 1.619-.729 1.619-1.62 0-.893-.727-1.62-1.619-1.62v-.003zm0 5.027c-.973 0-1.703.729-1.703 1.703 0 .975.721 1.703 1.695 1.703s1.695-.73 1.695-1.703c0-.975-.735-1.703-1.71-1.703h.023zm0 5.107c-.892 0-1.62.731-1.62 1.62 0 .895.729 1.623 1.62 1.623.893 0 1.619-.735 1.619-1.635s-.727-1.62-1.619-1.62v.012zm-5.025-4.863c-.813 0-1.461.646-1.461 1.459 0 .81.648 1.459 1.46 1.459.81 0 1.459-.648 1.459-1.459s-.648-1.459-1.458-1.459z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/fite.svg b/assets/lib/simple-icons/icons/fite.svg
index e6221fbf..0c3df52a 100644
--- a/assets/lib/simple-icons/icons/fite.svg
+++ b/assets/lib/simple-icons/icons/fite.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>FITE icon</title><path d="M3.52 8.254c-.347 0-.667.08-1.014.213-.427.186-.666.454-.746.8L0 15.748h2.533l.801-3.015h3.28l.4-1.464H3.732l.375-1.362c.027-.133.133-.185.346-.185h3.014l.346-1.467H3.52zm4.826 0l-2 7.492H8.88l2-7.492H8.346zm2.8 0l-.373 1.467h1.84c.16 0 .24.053.24.16v.025l-1.574 5.84h2.534l1.574-5.84c.026-.133.132-.185.345-.185h1.842l.319-1.467h-6.747zm8.534 0c-.347 0-.667.08-1.014.213-.427.186-.666.453-.746.773l-1.467 5.492c0 .027-.027.081-.027.108v.107c0 .267.162.48.455.614.24.106.505.185.799.185H22l.4-1.467h-3.013c-.16 0-.24-.053-.24-.16v-.025l.373-1.387h3.28l.4-1.467h-3.28l.348-1.334c.053-.133.159-.185.345-.185h3.014L24 8.254h-4.32Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>FITE</title><path d="M3.52 8.254c-.347 0-.667.08-1.014.213-.427.186-.666.454-.746.8L0 15.748h2.533l.801-3.015h3.28l.4-1.464H3.732l.375-1.362c.027-.133.133-.185.346-.185h3.014l.346-1.467H3.52zm4.826 0l-2 7.492H8.88l2-7.492H8.346zm2.8 0l-.373 1.467h1.84c.16 0 .24.053.24.16v.025l-1.574 5.84h2.534l1.574-5.84c.026-.133.132-.185.345-.185h1.842l.319-1.467h-6.747zm8.534 0c-.347 0-.667.08-1.014.213-.427.186-.666.453-.746.773l-1.467 5.492c0 .027-.027.081-.027.108v.107c0 .267.162.48.455.614.24.106.505.185.799.185H22l.4-1.467h-3.013c-.16 0-.24-.053-.24-.16v-.025l.373-1.387h3.28l.4-1.467h-3.28l.348-1.334c.053-.133.159-.185.345-.185h3.014L24 8.254h-4.32Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/fivem.svg b/assets/lib/simple-icons/icons/fivem.svg
new file mode 100644
index 00000000..aa92a0e1
--- /dev/null
+++ b/assets/lib/simple-icons/icons/fivem.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>FiveM</title><path d="M22.4 24h-5.225c-.117 0-.455-1.127-1.026-3.375-1.982-6.909-3.124-10.946-3.417-12.12l3.37-3.325h.099c.454 1.42 2.554 7.676 6.299 18.768ZM12.342 7.084h-.048a3.382 3.385 0 0 1-.098-.492v-.098a102.619 102.715 0 0 1 3.272-3.275c.13.196.196.356.196.491v.05a140.694 140.826 0 0 1-3.322 3.324ZM5.994 10.9h-.05c.67-2.12 1.076-3.209 1.223-3.275L14.492.343c.08 0 .258.524.533 1.562zm1.37-4.014h-.05C8.813 2.342 9.612.048 9.71 0h4.495v.05a664.971 664.971 0 0 1-6.841 6.839Zm-2.69 7.874h-.05c.166-.798.554-1.418 1.174-1.855a312.918 313.213 0 0 1 5.71-5.717h.05c-.117.672-.375 1.175-.781 1.52zM1.598 24l-.098-.05c1.399-4.172 2.148-6.322 2.248-6.45l6.74-6.694v.05C10.232 11.88 8.974 16.263 6.73 24Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/fiverr.svg b/assets/lib/simple-icons/icons/fiverr.svg
index ffb447dd..0a93114c 100644
--- a/assets/lib/simple-icons/icons/fiverr.svg
+++ b/assets/lib/simple-icons/icons/fiverr.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Fiverr icon</title><path d="M13.639,11.928h-0.954c0.06-0.258,0.216-0.492,0.534-0.492C13.465,11.436,13.639,11.664,13.639,11.928z M24.001,12 c0,6.627-5.373,12-12,12s-12-5.373-12-12s5.373-12,12-12S24.001,5.373,24.001,12z M6.217,9.78c0,0.298,0.242,0.54,0.54,0.54 c0.298,0,0.54-0.242,0.54-0.54s-0.242-0.54-0.54-0.54C6.459,9.24,6.217,9.482,6.217,9.78z M7.735,13.2h-0.42v-2.526H4.849v-0.162 c0-0.318,0.318-0.324,0.48-0.324c0.186,0,0.27,0.018,0.27,0.018V9.33c0,0-0.168-0.024-0.396-0.024c-0.516,0-1.47,0.144-1.47,1.236 v0.138h-0.45v0.81h0.45v1.71h-0.42v0.81h2.028V13.2H4.849v-1.71h1.35v1.71h-0.42v0.81h1.956V13.2z M11.149,11.484h0.372v-0.81 h-1.77v0.81h0.3l-0.384,1.2c-0.072,0.198-0.09,0.438-0.09,0.438H9.553c0,0-0.018-0.24-0.09-0.438l-0.384-1.2h0.3v-0.81h-1.77v0.81 h0.372l0.924,2.52h1.32L11.149,11.484z M14.797,12.204c0-0.924-0.558-1.608-1.548-1.608c-1.074,0-1.734,0.762-1.734,1.74 c0,0.888,0.642,1.746,1.83,1.746c0.9,0,1.434-0.468,1.434-0.468l-0.408-0.774c0,0-0.444,0.318-0.936,0.318 c-0.354,0-0.69-0.186-0.774-0.612h2.112C14.767,12.54,14.797,12.312,14.797,12.204L14.797,12.204z M17.773,10.632 c0,0-0.066-0.012-0.132-0.012c-0.51-0.006-0.93,0.366-1.068,0.822v0h-0.012c0,0,0.012-0.066,0.012-0.168V11.1 c0-0.306-0.168-0.426-0.474-0.426h-1.05v0.81h0.312c0.09,0,0.144,0.054,0.144,0.144V13.2h-0.45v0.81h2.022V13.2h-0.45v-0.486 c0-0.606,0.3-1.002,0.918-1.002c0.138,0,0.228,0.018,0.228,0.018V10.632z M20.731,11.73v-1.098c0,0-0.066-0.012-0.132-0.012 c-0.504-0.006-0.924,0.366-1.068,0.822v0h-0.012c0,0,0.012-0.066,0.012-0.168V11.1c0-0.306-0.168-0.426-0.474-0.426h-1.05v0.81 h0.312c0.09,0,0.144,0.054,0.144,0.144V13.2h-0.45v0.81h2.022V13.2h-0.45v-0.486c0-0.606,0.3-1.002,0.918-1.002 C20.641,11.712,20.731,11.73,20.731,11.73z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Fiverr</title><path d="M23.004 15.588a.995.995 0 1 0 .002-1.99.995.995 0 0 0-.002 1.99zm-.996-3.705h-.85c-.546 0-.84.41-.84 1.092v2.466h-1.61v-3.558h-.684c-.547 0-.84.41-.84 1.092v2.466h-1.61v-4.874h1.61v.74c.264-.574.626-.74 1.163-.74h1.972v.74c.264-.574.625-.74 1.162-.74h.527v1.316zm-6.786 1.501h-3.359c.088.546.43.858 1.006.858.43 0 .732-.175.83-.487l1.425.4c-.351.848-1.22 1.364-2.255 1.364-1.748 0-2.549-1.355-2.549-2.515 0-1.14.703-2.505 2.45-2.505 1.856 0 2.471 1.384 2.471 2.408 0 .224-.01.37-.02.477zm-1.562-.945c-.04-.42-.342-.81-.889-.81-.508 0-.81.225-.908.81h1.797zM7.508 15.44h1.416l1.767-4.874h-1.62l-.86 2.837-.878-2.837H5.72l1.787 4.874zm-6.6 0H2.51v-3.558h1.524v3.558h1.591v-4.874H2.51v-.302c0-.332.235-.536.606-.536h.918V8.412H2.85c-1.162 0-1.943.712-1.943 1.755v.4H0v1.316h.908v3.558z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/flask.svg b/assets/lib/simple-icons/icons/flask.svg
index 13404941..a403984f 100644
--- a/assets/lib/simple-icons/icons/flask.svg
+++ b/assets/lib/simple-icons/icons/flask.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Flask icon</title><path d="M7.172 20.655c-.914-.72-1.89-1.41-2.556-2.38-1.402-1.712-2.482-3.694-3.22-5.777C.95 11.143.796 9.69.222 8.388-.38 7.444.325 6.41 1.36 6.109c.46-.088 1.272-.523.293-.212-.878.644-.963-.585-.063-.662.615-.082.84-.585.63-1.037-.659-.43 1.6-.903.463-1.544C1.501 1.376 4.34 1.13 3.64 2.58c-.167 1.115 1.984-.204 1.485 1.083.507.619 1.9.141 1.865 1.009.74.05.993.672 1.687.72.72.325 2.023.58 2.267 1.391-.713.565-2.365-1.166-2.444.397.215 2.31.16 4.689 1.005 6.888.4 1.332 1.369 2.38 2.244 3.418.837 1.016 1.971 1.73 3.127 2.333 1.014.478 2.107.795 3.213.994.448-.343 1.24-1.617 1.938-1.08.033.604-1.388 1.263-.067 1.196.776-.234 1.314.6 1.953-.152.588.697 2.446-.446 2.027.98-.566.364-1.392.144-1.959.646-.935-.467-1.68.418-2.715.306-1.15.206-2.319.29-3.484.291-1.912-.151-3.865-.215-5.684-.88-1.025-.298-2.024-.882-2.925-1.465zm1.615.7c1 .432 1.979.888 3.075 1.026 1.74.241 3.537.614 5.283.274-.79-.357-1.608.14-2.395-.255-.944.203-1.957-.052-2.917-.177-1.092-.486-2.27-.82-3.292-1.452-1.277-.466.66.598 1.006.685.798.453-.878-.233-1.115-.421-.668-.375-.754-.297-.066.084.139.081.276.166.42.235zm-1.904-1.346c.97.359-.004-.682-.449-.622-.197-.341-.752-.557-.36-.74-.705.244-.738-.93-1.07-.763-.745-.235-.29-1.069-1.177-1.58-.081-.54-.882-1.008-1.138-1.822-.113-.416-.905-1.613-.418-.5.414 1.072 1.143 1.99 1.75 2.907.47.873 1.027 1.786 1.885 2.33.29.278.568.703.977.79zM4.09 16.942c.033-.146.177.317 0 0zm3.954 3.497c.215-.096-.309-.12 0 0zm.526.192c-.054-.265-.24.148 0 0zm.66.275c.313-.299-.484-.188 0 0zm1.128.63c.191-.282-.61-.107 0 0zM8.19 20.023c.487-.315-.63-.004 0 0zm.494.246c-.014-.166-.176.075 0 0zm2.47 1.542c.398.25 2.32.55 1.116.103-.201.042-2.231-.574-1.116-.103zm-3.921-3.054c-.039-.167-.616-.185 0 0zm1.15.67c.3-.209-.621-.16 0 0zm.967.593c.43-.162-.697-.163 0 0zm-2.585-1.773c.466.358 1.88.046.714-.213-.53-.283-1.727-.476-.912.17l.198.043zm3.24 1.978c.194-.33-.814-.189 0 0zm-.984-.783c1.14.323-.958-.72-.281-.118l.15.068.13.05zm1.974 1.141c1.079.01-.975-.148 0 0zm-4.645-2.96c-.042-.201-.266.017 0 0zm6.47 3.984c.029-.363-.352.27 0 0zm-4.629-2.856c-.065-.191-.337-.008 0 0zm-1.739-1.254c.62-.037-.848-.273 0 0zm-2.06-1.332c-.077-.297-.674-.534 0 0zM9.8 19.6c-.114-.13-.054.028 0 0zm3.366 2.065c-.01-.197-.183.075 0 0zm-3.664-2.373c.06-.255-.529-.077 0 0zM6.995 17.7c.46-.049-.739-.311 0 0zm4.242 2.637c.718-.285-.7-.14 0 0zM9.03 18.84c.828.106-.985-.563-.181-.06zm2.877 1.768c.773-.462.518 1.082 1.311.13.782-.57-.675.707.289.103.697-.467 1.727.22 2.377.445.468-.023.923.405 1.403.145.923-.25-1.806-.37-1.09-.81-.845.245-1.47-.294-1.885-.835-.948-.219-2.044-.703-2.517-1.542-.192-.315.279.044-.166-.47-.571-.508-.856-1.085-1.24-1.702-.457-.244-.51-.963-.557-.024.004-.593-.553-.992-.689-.826-.002-.571.596-.285.177-.707-.09-.592-.387-1.209-.476-1.877-.138-.322-.02-1.011-.473-.282-.165.77-.055-.947.202-.38.337-.579-.12-.51-.14-.43.22-.488.14-1.18-.057-.916.117-.517.185-1.902-.175-1.656.218-.54.414-2.473-.534-1.736-.384.005-1.048.14-1.363.296.986.543-.099.196-.5.11-.052.502-.45.285-.946.29.793.098-.386.81-.841.534-.59.282.51.987.012 1.205.061.328-.905-.119-.83.64-.573-.241-.078.9.209.514.975.264.686.866.711 1.437-.159.333-.785-.783-.14-.731-.508-.827-.562-.299-.985.085-.099.028 1.079.547.34.803.65.1.668.67.8 1.03.391.407.311-.45.779.04-.296-.436-1.567-1.228-.544-.974-.005-.439-.185-.793.129-.784.31-.562-.325 1.387.375.672.193-.085.241-.563.59.045.505.498.182.858-.531.403.127.433.954.587.799 1.265.165.595.395.376.596.342.158.578.247.153.255-.123.721.155.552.581.778.88.497.224-.712-1.522.142-.526.898.811.337 1.15-.47 1.02.51-.041.675.69 1.313.664.582.277.976 1.34-.027.897-.348-.313-1.579-.7-.573-.104.929.43 1.666.688 2.562 1.227.64.458.918.982 1.16 1.086-.538.257-1.623-.206-.817-.348-.503-.091-1.068-.345-.587.28.41.343 1.45.306 1.637.345-.159.348-.43.376.006.403-.486.26.156.3.201.448zm-.994-2.808c-.296-.31-.373-.89-.053-.385.164.066.525.947.053.385zm3.238 2.057c.185-.011.006.14 0 0zm-3.706-2.816c-.011-.468.107.361 0 0zm-.322-.433c-.372-.719.47.204 0 0zm-3.9-2.692c.218-.059.107.374 0 0zm3.104 1.682c.134-.504.158.424 0 0zm-2.193-1.525c-.155-.278.323.261 0 0zm1.882.604c-.352-.79.25-.432.078.13zM5.77 12.512c-.158-.26-.418-1.02-.334-1.252.076.378.804 1.627.357.518-.494-.93.59.302.702.534.051.23-.305-.063-.064.478-.44-.617-.26.34-.661-.278zm-1.003-.691c.041-.603.23.413 0 0zm.451.155c.215-.455.365.634 0 0zm-1.085-.84c-.374-.37-.644-.713.017-.23.255.01-.566-.778.061-.25.66.12.326 1.082-.078.48zm.57-.015c.217-.215.115.212 0 0zm.35.113c-.328-.617.4.258 0 0zm-.697-.667c-1.086-.966 1.365.506.177.18l-.177-.18zm3.111 1.808c-.47-.282-.124-1.984.036-.82.457-.148-.025.601.315.594-.053.473-.206.643-.35.226zm1.15.68c.047-.513.098.35 0 0zm-.2-.198c.053-.219.006.258 0 0zM4.57 10.25c-.697-.963 2.027.973.447.244-.165-.043-.364-.059-.447-.244zm2.216 1.175c-.066-.81.147.134 0 0zm1.682 1.079c.13-.462.01.305 0 0zM4.676 9.882c.415-.088 1.718.729.521.234-.133-.148-.417-.08-.521-.234zm3.56 1.775c.044-.829.248-.495.002.118l-.002-.118zM4.985 9.594c.169-.248-.449-1.12.089-.313.232.185.672.31.283.387.611.539-.149.146-.372-.074zm3.075 1.804c.117-.944.103.553 0 0zM4.632 8.722c.129-.055.068.172 0 0zm.802.478c.206-.434.38.483 0 0zm2.263 1.259c-.002-.167.043.242 0 0zm-.131-.29c-.314-.776.292.41 0 0zm-.193-.509c-.053-.32.18.403 0 0zm.314-.51c-.216-.38.272-1.674.326-.871-.227.625-.065.975.093.136.293-.66-.063 1.303-.42.735zm.322-1.924c.094-.115.021.139 0 0zm-.538 10.613c-.128-.111.016.071 0 0zm1.11.561c.616.159.613-.096.055-.171-.3-.28-1.246-.575-.399-.035.056.142.234.139.343.206zm-2.192-1.455c.34.253 1.28.719.484.096.269-.312-.514-.478-.254-.686-.66-.404-.52-.368-.058-.356-.794-.354.114-.328.071-.51-.306-.06-1.52-.539-.805.04-.726-.37-.173.138-.392.084-.743-.202.66.565-.118.375.425.337 1.146.864.18.357-.128.183.691.46.892.6zm1.16.667c1.411.454-.691-.556 0 0zm5.94 3.598c.02-.28-.192.24 0 0zm.612.257c.325-.315.013.503.539-.077.006-.415-.016-.66-.605-.156-.162.09-.234.473.066.233zM4.408 15.38c-.1-.393-.7-.39 0 0zm.652.428c-.242-.402-.864-.364 0 0zm3.71 2.237c.362.321 1.663.236.44.04-.182-.269-1.151-.204-.44-.04zm5.098 3.149c.558-.468-.54.208 0 0zm1.16.796c.003-.15-.24.066 0 0zm.001-.21c.617-.654-.598.039 0 0zM2.805 14.038c-.526-.75-.327-1.088-.835-1.7-.096-.47-.87-1.533-.4-.406.43.659.558 1.679 1.235 2.106zm12.03 7.534c1.136-.734-.465-.32 0 0zm.867.34c.57-.488-.36-.102 0 0zM4.215 14.55c.163-.242-.42-.031 0 0zm11.306 7.129c.551-.355-.126-.3-.1.032zM8.05 16.97c-.02-.24-.291.02 0 0zm.461.266c-.146-.297-.225.047 0 0zm7.894 4.684c.705-.51-.428-.098-.148.096zm-.27-.13c.574-.482-.607.213 0 0zm1.38.918c.386-.258-.469-.083 0 0zM4.569 14.376c.517.116 2.066 1.274 1.152.08-.468-.138-.187-1.283-.665-1.08.32.535.264.763-.409.426-.846-.413-.475.204-.31.374-.225.052.298.196.232.2zm-2.356-1.86c.092-.383-.853-2.107-.446-.864.146.26.131.754.446.864zm4.324 2.666c-.266-.223-.013-.032 0 0zm.656.152c0-.405-.725-.164 0 0zm5.682 3.583c-.108-.278-.428-.006 0 0zm.273.199c-.04-.155-.157.03 0 0zm2.253 1.419c.216-.16-.27-.02 0 0zM3.39 12.816c.62-.24-.664-.171 0 0zm8.985 5.661c-.007-.401-.395.1 0 0zm-9.23-6.231c.398-.135-.368-.089 0 0zm1.155.56c-.007-.133-.122.05 0 0zm14.09 8.64c.513-.104 1.679.26 1.867-.136-.621-.015-2.15-.438-2.222.101l.136.022.22.013zM4.668 12.898c.009-.407-.317-.015 0 0zM1.63 10.79c-.138-.775-.525-.118 0 0zm.724.182c.009-.249-.663-.224 0 0zm.414.203c-.12-.097-.094.122 0 0zm2.605 1.67c.122-.112-.29-.083 0 0zm-2.88-2.128c-.07-.585-.84-.088 0 0zm-1.486-.964c-.02-.27-.144.102 0 0zm.221-.167c-.036-.32-.19.04 0 0zm1.22.729c.517-.203-.94-.42-.105-.039zm16.334 10.089c.33-.303-.42-.094 0 0zm1.974 1.023c.132-.392-.334.051 0 0zM2.573 9.676c.055-.379-.409.075 0 0zM.837 8.513c-.093-.535-.08-1.474.812-1.156-1.191.236.824 1.48.57.498.5.024.98-.296.716.19.987-.109 1.671-.964 2.624-.845.742-.098 1.554-.172 2.354-.471.658-.048 1.291-.756.93-1.175-.896-.076-1.835.036-2.827.233-1.098.228-2.096.662-3.205.849-1.08.145.217.4-.092.456-.564.196.672.328-.073.534-.46-.088-.94-.246-.743-.73-1.035.133-1.945.563-1.127 1.616h.061zm2.494-1.27c.243-.894 1.3.735.398.118-.108-.08-.285-.146-.398-.119zm.047-.434c.35-.26.186.146 0 0zm.445.008c.032-.411 1.018.218.163.148zm.608-.245c.222-.26.064.231 0 0zm.156-.104c.37-.444 2.095-.283.832-.043-.338-.255-.598.15-.832.043zm2.251-.347c-.056-1.214 1.118.432 0 0zm.639-.004c.233-.612.906-.245.108-.123.017.065-.024.316-.108.123zM2.322 9.362c.697-.427-.741-.37 0 0zm.515.144c.245-.26-.531-.106 0 0zm-1.52-1.08c.399-.305-.471-.116 0 0zm20.603 12.89c.012-.355-.304.16 0 0zm-2.093-1.429c.06-.409-.27.036 0 0zm2.67 1.567c.557 0 1.688-.173.475-.173-.19.03-1.109.024-.476.173zM3.29 9.254c.451-.03.706-.497-.087-.47-1.23-.127 1.084.42-.158.264-.167.11.236.237.245.207zm.398.202c-.048-.29-.14.154 0 0zm.47-1.257c.197-.243-.27-.065 0 0zm-1.5-2.508c.806-.274 1.907-.581 2.287.135-.387-.466-.156-.924.21-.243.516.689.775-.313.438-.545.383.476.819.701.257.03.61-.734-1.223.097-1.64.088-.2.09-2.071.477-1.551.535zm.472-.903c.46-.347 1.588.206.864-.345-.07-.062-1.586.418-.864.345zm1.674.069c.538.013-.231-.722.409-.389-.105-.344-.746-.408-1.059-.545-.177.314.36.938.65.934zm-1.38-1.52c.186-.252-.326.128 0 0zm.684.164c.866-.115-.22-.373-.174-.01zm-1.277-1c-.61-.796 1.146.134.527-.7-.522-.415-1.023.468-.527.7zm7.825 4.215c.28-.496-1.155-.668-.188-.175.089.03.069.21.188.175z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Flask</title><path d="M7.172 20.36c-.914-.72-1.89-1.41-2.556-2.38-1.402-1.712-2.482-3.694-3.22-5.777-.446-1.355-.6-2.808-1.174-4.11-.602-.944.103-1.978 1.138-2.28.46-.087 1.272-.522.293-.211-.878.644-.963-.585-.063-.662.615-.082.84-.585.63-1.037-.66-.43 1.6-.903.463-1.544C1.5 1.08 4.34.835 3.64 2.285 3.473 3.4 5.624 2.08 5.125 3.368c.507.619 1.9.14 1.865 1.009.74.05.993.672 1.687.72.72.325 2.022.58 2.266 1.39-.713.566-2.364-1.165-2.443.398.215 2.31.16 4.689 1.004 6.888.4 1.332 1.37 2.38 2.244 3.418.837 1.016 1.971 1.73 3.127 2.333 1.014.478 2.107.795 3.213.994.448-.343 1.24-1.617 1.938-1.08.033.604-1.388 1.263-.067 1.196.776-.234 1.314.6 1.953-.152.588.697 2.446-.446 2.027.98-.566.364-1.392.144-1.959.646-.935-.467-1.68.418-2.715.306a19.86 19.86 0 01-3.484.29c-1.912-.15-3.865-.214-5.684-.88-1.024-.297-2.023-.881-2.924-1.464zm1.615.7c1 .432 1.978.888 3.074 1.026 1.74.24 3.537.614 5.283.274-.79-.357-1.608.14-2.395-.255-.944.203-1.957-.052-2.917-.177-1.092-.486-2.27-.82-3.291-1.452-1.277-.466.66.598 1.005.685.798.453-.877-.233-1.114-.421-.668-.375-.754-.297-.066.084.139.08.276.166.42.235zm-1.904-1.346c.97.359-.004-.682-.45-.622-.196-.341-.751-.557-.36-.74-.704.244-.737-.93-1.07-.763-.744-.235-.29-1.07-1.176-1.58-.081-.54-.882-1.008-1.138-1.822-.113-.416-.905-1.613-.418-.5.414 1.072 1.143 1.99 1.75 2.907.47.873 1.027 1.786 1.885 2.33.29.278.568.703.977.79zM4.09 16.647c.033-.146.177.317 0 0zm3.954 3.497c.215-.096-.31-.12 0 0zm.526.192c-.054-.265-.24.148 0 0zm.66.275c.312-.3-.484-.188 0 0zm1.127.63c.191-.282-.61-.107 0 0zM8.19 19.728c.487-.315-.63-.004 0 0zm.494.246c-.014-.166-.176.075 0 0zm2.47 1.542c.397.25 2.32.55 1.115.103-.2.042-2.23-.574-1.116-.103zm-3.921-3.054c-.04-.167-.616-.185 0 0zm1.15.67c.3-.21-.621-.16 0 0zm.966.593c.43-.162-.696-.163 0 0zm-2.584-1.773c.466.358 1.88.046.714-.213-.53-.283-1.727-.476-.912.17zm3.24 1.978c.193-.33-.815-.19 0 0zm-.984-.783c1.14.323-.958-.72-.281-.118l.15.068.13.05zm1.973 1.14c1.08.01-.975-.147 0 0zm-4.644-2.96c-.042-.2-.266.018 0 0zm6.47 3.985c.028-.363-.353.27 0 0zm-4.63-2.856c-.064-.191-.336-.008 0 0zm-1.738-1.254c.62-.037-.848-.273 0 0zm-2.06-1.332c-.077-.297-.674-.534 0 0zm5.407 3.435c-.114-.13-.054.028 0 0zm3.366 2.065c-.01-.197-.183.075 0 0zm-3.664-2.373c.06-.255-.528-.077 0 0zm-2.506-1.592c.46-.05-.74-.311 0 0zm4.241 2.637c.718-.285-.7-.14 0 0zM9.03 18.545c.827.106-.985-.563-.181-.06zm2.876 1.768c.773-.462.518 1.082 1.311.13.782-.57-.675.707.29.103.696-.467 1.726.22 2.376.445.468-.023.923.405 1.403.145.923-.25-1.806-.37-1.09-.81-.845.245-1.47-.294-1.885-.835-.948-.22-2.044-.703-2.517-1.542-.192-.315.28.044-.166-.47-.57-.508-.856-1.085-1.24-1.702-.457-.244-.51-.963-.557-.024.004-.593-.553-.992-.688-.826-.002-.571.595-.285.176-.707-.09-.592-.386-1.21-.475-1.877-.138-.322-.02-1.011-.473-.282-.165.77-.055-.947.202-.38.337-.58-.12-.51-.14-.43.22-.488.14-1.18-.057-.916.117-.517.185-1.902-.175-1.656.218-.54.414-2.473-.534-1.736-.384.005-1.048.14-1.363.296.986.543-.1.196-.5.11-.052.502-.45.285-.946.29.793.098-.386.81-.841.534-.59.282.51.987.012 1.205.06.328-.905-.12-.83.64-.573-.241-.078.9.209.514.975.264.686.866.71 1.437-.158.333-.784-.783-.14-.731-.507-.827-.561-.3-.984.085-.1.028 1.079.547.34.803.65.1.668.67.8 1.03.39.407.31-.45.779.04-.296-.436-1.567-1.228-.544-.974-.005-.44-.185-.793.129-.784.31-.562-.325 1.387.375.672.193-.085.24-.563.59.045.505.498.182.858-.531.403.127.433.954.587.799 1.265.165.595.395.376.596.342.158.578.247.153.255-.123.72.155.552.58.778.88.497.224-.712-1.522.142-.526.898.81.337 1.15-.47 1.02.51-.041.675.69 1.313.664.582.277.975 1.34-.027.897-.348-.313-1.58-.7-.573-.104.929.43 1.665.688 2.561 1.227.64.458.918.982 1.16 1.086-.538.257-1.623-.206-.817-.348-.503-.091-1.068-.345-.587.28.41.343 1.45.306 1.637.345-.159.348-.43.376.006.403-.486.26.156.3.201.448zm-.994-2.808c-.296-.31-.373-.89-.053-.385.164.066.525.947.053.385zm3.238 2.057c.185-.011.006.14 0 0zm-3.706-2.816c-.01-.468.107.36 0 0zm-.322-.433c-.372-.72.47.204 0 0zm-3.9-2.692c.219-.06.108.374 0 0zm3.104 1.682c.134-.504.158.424 0 0zm-2.192-1.525c-.155-.278.323.26 0 0zm1.882.604c-.352-.79.25-.432.078.13zM5.77 12.217c-.158-.26-.418-1.02-.334-1.252.076.378.804 1.627.357.518-.494-.93.59.302.702.534.05.23-.305-.063-.064.478-.44-.617-.26.34-.661-.278zm-1.003-.691c.04-.603.23.413 0 0zm.45.155c.216-.455.366.634 0 0zm-1.084-.84c-.374-.37-.644-.713.017-.23.255.01-.566-.778.06-.25.66.12.327 1.082-.077.48zm.57-.015c.217-.215.115.212 0 0zm.35.113c-.328-.617.4.258 0 0zm-.697-.667c-1.086-.966 1.365.506.177.18zm3.11 1.808c-.47-.282-.123-1.984.037-.82.457-.148-.025.6.315.594-.053.473-.206.643-.35.226zm1.15.68c.048-.513.099.35 0 0zm-.2-.198c.054-.22.007.258 0 0zM4.57 9.955c-.697-.963 2.027.973.447.244-.165-.043-.364-.06-.447-.244zm2.216 1.175c-.066-.81.147.134 0 0zm1.682 1.079c.13-.462.01.305 0 0zM4.676 9.587c.415-.088 1.718.729.52.234-.132-.148-.416-.08-.52-.234zm3.56 1.775c.044-.83.248-.495.002.118zM4.985 9.299c.169-.248-.45-1.12.089-.313.232.185.672.31.283.387.61.539-.15.146-.372-.074zm3.075 1.804c.117-.944.103.553 0 0zM4.632 8.427c.129-.055.068.172 0 0zm.802.478c.206-.434.38.483 0 0zm2.263 1.259c-.002-.167.043.242 0 0zm-.131-.29c-.314-.776.292.41 0 0zm-.193-.51c-.053-.32.18.404 0 0zm.314-.51c-.216-.38.272-1.673.326-.87-.227.625-.065.975.093.136.293-.66-.063 1.303-.42.735zm.322-1.923c.094-.115.02.139 0 0zM7.47 17.544c-.128-.111.016.07 0 0zm1.11.56c.615.16.612-.095.055-.17-.3-.28-1.246-.575-.4-.035.057.142.235.139.344.206zM6.389 16.65c.34.253 1.28.719.484.096.269-.312-.514-.478-.254-.686-.66-.404-.52-.368-.058-.356-.794-.354.114-.328.07-.51-.305-.06-1.52-.54-.804.04-.726-.37-.173.138-.392.084-.743-.202.66.565-.118.375.425.337 1.146.864.18.357-.128.183.69.46.892.6zm1.16.667c1.41.454-.691-.556 0 0zm5.94 3.598c.02-.28-.193.24 0 0zm.611.257c.325-.315.013.503.54-.077.005-.415-.017-.66-.606-.156-.162.09-.234.473.066.233zm-9.692-6.087c-.1-.393-.7-.39 0 0zm.652.428c-.242-.402-.864-.364 0 0zm3.71 2.237c.362.32 1.662.236.44.04-.182-.27-1.151-.204-.44-.04zm5.097 3.149c.558-.468-.54.208 0 0zm1.16.796c.003-.15-.24.066 0 0zm.001-.21c.617-.654-.598.039 0 0zM2.805 13.743c-.526-.75-.327-1.088-.835-1.7-.096-.47-.87-1.533-.4-.406.43.659.558 1.679 1.235 2.106zm12.03 7.534c1.135-.734-.466-.32 0 0zm.866.34c.57-.488-.36-.102 0 0zM4.215 14.255c.163-.242-.42-.031 0 0zm11.305 7.129c.551-.355-.126-.3-.1.032zm-7.47-4.71c-.02-.24-.291.02 0 0zm.46.267c-.145-.297-.224.047 0 0zm7.894 4.684c.705-.51-.428-.098-.148.096zm-.27-.13c.574-.482-.607.213 0 0zm1.38.918c.386-.258-.469-.083 0 0zM4.57 14.08c.517.116 2.066 1.274 1.152.08-.468-.138-.187-1.283-.665-1.08.32.535.264.763-.41.426-.845-.413-.474.204-.31.374-.224.052.299.196.233.2zm-2.356-1.86c.092-.383-.853-2.107-.446-.864.146.26.13.754.446.864zm4.324 2.666c-.266-.223-.013-.032 0 0zm.656.152c0-.405-.725-.164 0 0zm5.681 3.583c-.108-.278-.428-.006 0 0zm.273.199c-.04-.155-.157.03 0 0zM15.4 20.24c.216-.16-.27-.02 0 0zM3.39 12.52c.62-.24-.664-.17 0 0zm8.984 5.662c-.007-.401-.395.1 0 0zm-9.23-6.231c.399-.135-.367-.09 0 0zm1.156.56c-.007-.133-.122.05 0 0zm14.09 8.64c.512-.104 1.678.26 1.866-.136-.62-.015-2.15-.438-2.222.1l.136.023.22.013zM4.667 12.603c.009-.407-.317-.015 0 0zM1.63 10.495c-.138-.775-.525-.118 0 0zm.724.182c.009-.25-.663-.224 0 0zm.414.203c-.12-.097-.094.122 0 0zm2.605 1.67c.122-.112-.29-.083 0 0zm-2.88-2.128c-.07-.585-.84-.088 0 0zm-1.486-.964c-.02-.27-.144.102 0 0zm.22-.167c-.035-.32-.19.04 0 0zm1.22.729c.518-.203-.94-.42-.104-.04zm16.334 10.089c.33-.303-.42-.094 0 0zm1.974 1.023c.132-.392-.334.05 0 0zM2.573 9.38c.055-.38-.41.075 0 0zM.837 8.218c-.093-.535-.08-1.474.812-1.156-1.191.236.824 1.48.57.498.5.024.98-.296.716.19.987-.11 1.67-.964 2.624-.845.742-.098 1.554-.172 2.354-.471.658-.048 1.29-.756.93-1.175-.896-.076-1.835.036-2.827.233-1.098.228-2.096.662-3.205.849-1.08.145.217.4-.092.456-.564.196.672.328-.073.534-.46-.088-.94-.246-.743-.73-1.035.133-1.945.563-1.127 1.616h.06zm2.494-1.27c.243-.894 1.3.735.398.118-.108-.08-.285-.146-.398-.12zm.047-.434c.35-.26.186.146 0 0zm.445.008c.032-.411 1.018.218.163.148zm.608-.245c.222-.26.064.23 0 0zm.156-.104c.37-.444 2.095-.283.832-.043-.338-.255-.598.15-.832.043zm2.25-.347c-.055-1.214 1.119.432 0 0zm.64-.004c.233-.612.906-.245.108-.123.017.065-.024.316-.108.123zM2.322 9.067c.697-.427-.741-.37 0 0zm.515.144c.245-.26-.531-.106 0 0zm-1.52-1.08c.399-.305-.471-.116 0 0zm20.602 12.89c.012-.355-.304.16 0 0zm-2.093-1.43c.06-.408-.27.037 0 0zm2.67 1.568c.557 0 1.688-.173.475-.173-.19.03-1.109.024-.476.173zM3.29 8.959c.45-.03.706-.497-.087-.47-1.23-.127 1.084.42-.158.264-.167.11.236.237.245.207zm.398.202c-.048-.29-.14.154 0 0zm.47-1.257c.197-.243-.27-.065 0 0zm-1.5-2.508c.806-.274 1.907-.581 2.287.135-.387-.466-.156-.924.21-.243.516.689.775-.313.438-.545.383.476.819.7.257.03.61-.734-1.223.097-1.64.088-.2.09-2.071.477-1.551.535zm.472-.903c.46-.347 1.588.206.864-.345-.07-.062-1.586.418-.864.345zm1.674.069c.538.013-.231-.722.409-.39-.105-.343-.746-.407-1.06-.544-.176.314.36.938.65.934zm-1.38-1.52c.186-.252-.326.128 0 0zm.684.164c.866-.115-.22-.373-.174-.01zm-1.277-1c-.61-.796 1.146.134.527-.7-.522-.415-1.023.468-.527.7zm7.824 4.215c.28-.496-1.155-.668-.188-.175.09.03.07.21.188.175z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/flat.svg b/assets/lib/simple-icons/icons/flat.svg
new file mode 100644
index 00000000..a1807889
--- /dev/null
+++ b/assets/lib/simple-icons/icons/flat.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Flat</title><path d="M6.5455 17.4545v3.2728C6.5455 22.5348 5.0802 24 3.2727 24S0 22.5348 0 20.7273c0-1.8075 1.4652-3.2728 3.2727-3.2728Zm8.7272-8.7272V12c0 1.8075-1.4652 3.2727-3.2727 3.2727H5.4545c-1.8074 0-3.2727-1.4652-3.2727-3.2727 0-1.8075 1.4653-3.2727 3.2727-3.2727zM24 0v3.2727c0 1.8075-1.4652 3.2728-3.2727 3.2728H7.6363c-1.8074 0-3.2727-1.4653-3.2727-3.2728S5.829 0 7.6364 0Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/flathub.svg b/assets/lib/simple-icons/icons/flathub.svg
index 1efc9b09..6bad8b3d 100644
--- a/assets/lib/simple-icons/icons/flathub.svg
+++ b/assets/lib/simple-icons/icons/flathub.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Flathub icon</title><path d="M12 2.604l-.43.283L0 10.459v6.752l6.393 4.184L12 17.725l5.607 3.671L24 17.211v-6.752L12 2.604zm0 .828l5.434 3.556-2.717 1.778L12 10.545l-2.717-1.78-2.717-1.777L12 3.432zM6.39 7.104l5.434 3.556-5.408 3.54-5.434-3.557 5.409-3.54zm11.22 0l5.431 3.554-5.434 3.557-5.433-3.555 5.435-3.556zM.925 10.867l5.379 3.52a.123.08 0 00.027.013v5.647l-5.406-3.54v-5.64zm11.213.115l5.408 3.54v5.664l-5.408-3.54v-5.664z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Flathub</title><path d="M12 2.604l-.43.283L0 10.459v6.752l6.393 4.184L12 17.725l5.607 3.671L24 17.211v-6.752L12 2.604zm0 .828l5.434 3.556-2.717 1.778L12 10.545l-2.717-1.78-2.717-1.777L12 3.432zM6.39 7.104l5.434 3.556-5.408 3.54-5.434-3.557 5.409-3.54zm11.22 0l5.431 3.554-5.434 3.557-5.433-3.555 5.435-3.556zM.925 10.867l5.379 3.52a.123.08 0 00.027.013v5.647l-5.406-3.54v-5.64zm11.213.115l5.408 3.54v5.664l-5.408-3.54v-5.664z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/flattr.svg b/assets/lib/simple-icons/icons/flattr.svg
index 22575609..fc7bfb79 100644
--- a/assets/lib/simple-icons/icons/flattr.svg
+++ b/assets/lib/simple-icons/icons/flattr.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Flattr icon</title><path d="M1.906 12C1.906 6.432 6.432 1.906 12 1.906c.048 0 4.003 0 5.455.002L14.53 4.834l1.344 1.344L21.903 0H12C5.373 0 0 5.373 0 12v9.331l1.91-1.759v-.096c-.002-.244-.004-7.404-.004-7.476zM24 2.668l-1.91 1.76v.096L22.093 12c0 5.568-4.528 10.094-10.093 10.094-.048 0-4.003 0-5.455-.002l2.925-2.926-1.344-1.344L2.097 24H12c6.627 0 12-5.373 12-12V2.668z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Flattr</title><path d="M1.906 12C1.906 6.432 6.432 1.906 12 1.906c.048 0 4.003 0 5.455.002L14.53 4.834l1.344 1.344L21.903 0H12C5.373 0 0 5.373 0 12v9.331l1.91-1.759v-.096c-.002-.244-.004-7.404-.004-7.476zM24 2.668l-1.91 1.76v.096L22.093 12c0 5.568-4.528 10.094-10.093 10.094-.048 0-4.003 0-5.455-.002l2.925-2.926-1.344-1.344L2.097 24H12c6.627 0 12-5.373 12-12V2.668z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/flickr.svg b/assets/lib/simple-icons/icons/flickr.svg
index 9ff16905..a7ed3f6c 100644
--- a/assets/lib/simple-icons/icons/flickr.svg
+++ b/assets/lib/simple-icons/icons/flickr.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Flickr icon</title><path d="M0 12c0 3.074 2.494 5.564 5.565 5.564 3.075 0 5.569-2.49 5.569-5.564S8.641 6.436 5.565 6.436C2.495 6.436 0 8.926 0 12zm12.866 0c0 3.074 2.493 5.564 5.567 5.564C21.496 17.564 24 15.074 24 12s-2.492-5.564-5.564-5.564c-3.075 0-5.57 2.49-5.57 5.564z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Flickr</title><path d="M5.334 6.666C2.3884 6.666 0 9.055 0 12c0 2.9456 2.3884 5.334 5.334 5.334 2.9456 0 5.332-2.3884 5.332-5.334 0-2.945-2.3864-5.334-5.332-5.334zm13.332 0c-2.9456 0-5.332 2.389-5.332 5.334 0 2.9456 2.3864 5.334 5.332 5.334C21.6116 17.334 24 14.9456 24 12c0-2.945-2.3884-5.334-5.334-5.334Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/flipboard.svg b/assets/lib/simple-icons/icons/flipboard.svg
index 2fc65b4a..6744d016 100644
--- a/assets/lib/simple-icons/icons/flipboard.svg
+++ b/assets/lib/simple-icons/icons/flipboard.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Flipboard icon</title><path d="M0 0v24h24V0H0zm19.2 9.6h-4.8v4.8H9.6v4.8H4.8V4.8h14.4v4.8z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Flipboard</title><path d="M0 0v24h24V0H0zm19.2 9.6h-4.8v4.8H9.6v4.8H4.8V4.8h14.4v4.8z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/flipkart.svg b/assets/lib/simple-icons/icons/flipkart.svg
new file mode 100644
index 00000000..226e2a98
--- /dev/null
+++ b/assets/lib/simple-icons/icons/flipkart.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Flipkart</title><path d="M3.833 1.333a.993.993 0 0 0-.333.061V1c0-.551.449-1 1-1h14.667c.551 0 1 .449 1 1v.333H3.833zm17.334 2.334H2.833c-.551 0-1 .449-1 1V23c0 .551.449 1 1 1h7.3l1.098-5.645h-2.24c-.051 0-5.158-.241-5.158-.241l4.639-.327-.078-.366-1.978-.285 1.882-.158-.124-.449-3.075-.467s3.341-.373 3.392-.373h3.232l.247-1.331c.289-1.616.945-2.807 1.973-3.693 1.033-.892 2.344-1.332 3.937-1.332.643 0 1.053.151 1.231.463.118.186.201.516.279.859.074.352.14.671.095.903-.057.345-.461.465-1.197.465h-.253c-1.327 0-2.134.763-2.405 2.31l-.243 1.355h1.54c.574 0 .781.402.622 1.306-.17.941-.539 1.36-1.111 1.36H14.9L13.804 24h7.362c.551 0 1-.449 1-1V4.667a1 1 0 0 0-.999-1zM20.5 2.333A.334.334 0 0 0 20.167 2H3.833a.334.334 0 0 0-.333.333V3h17v-.667z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/floatplane.svg b/assets/lib/simple-icons/icons/floatplane.svg
index 54d3af18..fea68032 100644
--- a/assets/lib/simple-icons/icons/floatplane.svg
+++ b/assets/lib/simple-icons/icons/floatplane.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Floatplane icon</title><path d="M17.948,20.162c-1.81,1.527-4.078,2.366-6.466,2.366c-2.682,0-5.19-1.047-7.088-2.933c-1.897-1.897-2.933-4.416-2.933-7.088 c0-2.399,0.84-4.667,2.366-6.466L2.911,4.874C1.101,6.902,0,9.585,0,12.518C0,18.864,5.136,24,11.482,24 c2.933,0,5.616-1.101,7.644-2.911L17.948,20.162z M8.331,2.988c1.003-0.327,2.061-0.502,3.151-0.502c2.682,0,5.19,1.047,7.088,2.933 c1.897,1.897,2.933,4.416,2.933,7.088c0,1.09-0.174,2.148-0.502,3.151l1.134,1.134c0.534-1.319,0.829-2.77,0.829-4.285 c0-6.346-5.136-11.482-11.482-11.482c-1.516,0-2.966,0.294-4.285,0.829L8.331,2.988z M9.683,6.444L3.446,0l-0.97,1.516 C2.388,1.657,2.399,1.843,2.508,1.974L7.916,8.92L9.683,6.444z M7.655,14.96l-2.508-1.886l-0.458,0.774 c-0.055,0.087-0.044,0.196,0.033,0.273l2.115,2.29L7.655,14.96z M12.158,9.007l-0.578-0.6l0.153-0.611 c0.065-0.273,0.087-0.491,0.065-0.622c-0.087-0.393-0.273-0.687-0.273-0.687l-5.474,5.866c0,0,0.371,0.36,0.905-0.055 c0.24-0.185,1.189-0.96,2.203-1.799l0.927,1.189L12.158,9.007z M17.501,14.263l0.153-0.611c0.055-0.207,0.087-0.382,0.065-0.502 c-0.065-0.393-0.218-0.687-0.218-0.687l-5.866,5.474c0,0,0.36,0.371,0.916,0c0.273-0.185,1.428-0.992,2.584-1.821l6.891,5.365 c0.131,0.109,0.316,0.12,0.458,0.033L24,20.543L17.501,14.263z M9.061,16.389c0.883-0.676,2.115-1.625,3.217-2.475l1.243,0.97 l2.039-2.475l-0.676-0.654l0.218-0.774c0.109-0.393,0.153-0.698,0.12-0.883c-0.109-0.567-0.36-0.981-0.36-0.981l-8.069,8.069 c0,0,0.251,0.207,0.774,0l2.279,2.104c0.076,0.065,0.185,0.076,0.273,0.033l0.774-0.458L9.061,16.389z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Floatplane</title><path d="M17.948,20.162c-1.81,1.527-4.078,2.366-6.466,2.366c-2.682,0-5.19-1.047-7.088-2.933c-1.897-1.897-2.933-4.416-2.933-7.088 c0-2.399,0.84-4.667,2.366-6.466L2.911,4.874C1.101,6.902,0,9.585,0,12.518C0,18.864,5.136,24,11.482,24 c2.933,0,5.616-1.101,7.644-2.911L17.948,20.162z M8.331,2.988c1.003-0.327,2.061-0.502,3.151-0.502c2.682,0,5.19,1.047,7.088,2.933 c1.897,1.897,2.933,4.416,2.933,7.088c0,1.09-0.174,2.148-0.502,3.151l1.134,1.134c0.534-1.319,0.829-2.77,0.829-4.285 c0-6.346-5.136-11.482-11.482-11.482c-1.516,0-2.966,0.294-4.285,0.829L8.331,2.988z M9.683,6.444L3.446,0l-0.97,1.516 C2.388,1.657,2.399,1.843,2.508,1.974L7.916,8.92L9.683,6.444z M7.655,14.96l-2.508-1.886l-0.458,0.774 c-0.055,0.087-0.044,0.196,0.033,0.273l2.115,2.29L7.655,14.96z M12.158,9.007l-0.578-0.6l0.153-0.611 c0.065-0.273,0.087-0.491,0.065-0.622c-0.087-0.393-0.273-0.687-0.273-0.687l-5.474,5.866c0,0,0.371,0.36,0.905-0.055 c0.24-0.185,1.189-0.96,2.203-1.799l0.927,1.189L12.158,9.007z M17.501,14.263l0.153-0.611c0.055-0.207,0.087-0.382,0.065-0.502 c-0.065-0.393-0.218-0.687-0.218-0.687l-5.866,5.474c0,0,0.36,0.371,0.916,0c0.273-0.185,1.428-0.992,2.584-1.821l6.891,5.365 c0.131,0.109,0.316,0.12,0.458,0.033L24,20.543L17.501,14.263z M9.061,16.389c0.883-0.676,2.115-1.625,3.217-2.475l1.243,0.97 l2.039-2.475l-0.676-0.654l0.218-0.774c0.109-0.393,0.153-0.698,0.12-0.883c-0.109-0.567-0.36-0.981-0.36-0.981l-8.069,8.069 c0,0,0.251,0.207,0.774,0l2.279,2.104c0.076,0.065,0.185,0.076,0.273,0.033l0.774-0.458L9.061,16.389z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/flood.svg b/assets/lib/simple-icons/icons/flood.svg
index bddde490..a21c71f3 100644
--- a/assets/lib/simple-icons/icons/flood.svg
+++ b/assets/lib/simple-icons/icons/flood.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Flood icon</title><path d="M19.683 16.283c-1.233-.066-1.85-1.533-2.15-2.433-.266-.767-.666-2.117-.966-2.933-.35-.95-.45-1.017-.65-1.017-.417 0-.734 1.183-1.05 2.067-.667 1.833-1.167 3.85-2.934 3.85-1.533 0-2.216-1.184-2.7-1.884-.45-.666-.716-.816-1.133-.816-.533 0-.783.466-1.267 1.283-.283.467-.6.95-.966 1.267-.1.083-.934.733-1.717.633-.45-.067-.767-.333-.767-.783 0-.617.684-.734 1.067-.884.333-.116.733-.716.933-1.05.534-.916 1.217-2.116 2.75-2.116 1.35 0 2 .866 2.5 1.55.45.616.717 1.116 1.234 1.133.433.017 1.033-1.617 1.383-2.75.533-1.733 1.233-3.333 2.633-3.333 1.884 0 2.434 2.633 3.017 4.65.083.3.283.933.333 1.016.267.567.484.934.717 1.05.267.15.7.434.567.934-.084.383-.434.583-.834.566zm-15.366-1.6c.016 0 .016 0 0 0 .016 0 .016 0 0 0zM12 0C5.367 0 0 5.367 0 12s5.367 12 12 12 12-5.367 12-12S18.633 0 12 0zm0 22.017A10.015 10.015 0 011.983 12 10.015 10.015 0 0112 1.983 10.015 10.015 0 0122.017 12 10.015 10.015 0 0112 22.017Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Flood</title><path d="M19.683 16.283c-1.233-.066-1.85-1.533-2.15-2.433-.266-.767-.666-2.117-.966-2.933-.35-.95-.45-1.017-.65-1.017-.417 0-.734 1.183-1.05 2.067-.667 1.833-1.167 3.85-2.934 3.85-1.533 0-2.216-1.184-2.7-1.884-.45-.666-.716-.816-1.133-.816-.533 0-.783.466-1.267 1.283-.283.467-.6.95-.966 1.267-.1.083-.934.733-1.717.633-.45-.067-.767-.333-.767-.783 0-.617.684-.734 1.067-.884.333-.116.733-.716.933-1.05.534-.916 1.217-2.116 2.75-2.116 1.35 0 2 .866 2.5 1.55.45.616.717 1.116 1.234 1.133.433.017 1.033-1.617 1.383-2.75.533-1.733 1.233-3.333 2.633-3.333 1.884 0 2.434 2.633 3.017 4.65.083.3.283.933.333 1.016.267.567.484.934.717 1.05.267.15.7.434.567.934-.084.383-.434.583-.834.566zm-15.366-1.6c.016 0 .016 0 0 0 .016 0 .016 0 0 0zM12 0C5.367 0 0 5.367 0 12s5.367 12 12 12 12-5.367 12-12S18.633 0 12 0zm0 22.017A10.015 10.015 0 011.983 12 10.015 10.015 0 0112 1.983 10.015 10.015 0 0122.017 12 10.015 10.015 0 0112 22.017Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/fluentbit.svg b/assets/lib/simple-icons/icons/fluentbit.svg
new file mode 100644
index 00000000..6d7a69ac
--- /dev/null
+++ b/assets/lib/simple-icons/icons/fluentbit.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Fluent Bit</title><path d="M0 4.02Zm.412-.503c-.038 0-.072 0-.102.01a.336.336 0 0 0-.087.035H.215a.325.325 0 0 0-.113.113.416.416 0 0 0-.053.1c-.008.021-.019.036-.023.067a.423.423 0 0 0-.015.071v-.01H.004v.018L0 3.936l.007-.023v.046L0 4.004v.015h.004l.003-.004v-.003a1.323 1.323 0 0 0 .095.472l.019.046v.007l.06.144.023.06.064.163a19.736 19.736 0 0 0 1.724 3.254L2 8.173l.023.038c.922 1.44 2.037 2.885 3.202 4.095l.037.04c.832.859 1.686 1.6 2.514 2.129a4 4 0 0 0 .37.216l.038.019-.026.019c-1.127 1.64-2.42 2.834-3.742 3.704C2.51 19.763.91 20.172.91 20.172s4.237 1.164 8.887-1.013c3.534-1.664 5.368-4.903 5.787-5.621l2.124-3.61c.333-.458.522-.647.54-.68.065-.065.538-.614 1.524-.946 1.46-.488 3.667-.783 4.188-.832a.113.113 0 0 0 .03-.132.076.076 0 0 0-.056-.05 4.177 4.177 0 0 0-.544-.037 9.234 9.234 0 0 0-1.399.068 18.39 18.39 0 0 0-1.383.204 29.78 29.78 0 0 0-1.066.204l-.053.012h-.023a3.493 3.493 0 0 1-.574.037 2.737 2.737 0 0 1-.473-.075 7.3 7.3 0 0 1-.465-.129 6.79 6.79 0 0 0-.484-.143 4.645 4.645 0 0 0-1.463-.152 2.797 2.797 0 0 0-.657.133l-.167.06a2.767 2.767 0 0 0-1.22.972c-.401.536-1.233 2.178-2.374 2.613l-.023-.023h.01a77.214 77.214 0 0 0-.9-.829l-.021-.015-.2-.189-.053-.042a60.73 60.73 0 0 0-2.307-2.014 28.411 28.411 0 0 0-1.504-1.13l-.227-.163a30.725 30.725 0 0 0-3.93-2.332c-.114-.064-.23-.102-.36-.166-.038-.016-.076-.038-.102-.038l.196.11-.079-.038h-.01V4.18a1.013 1.013 0 0 0-.054-.023l-.023-.015-.03-.015a1.01 1.01 0 0 1-.102-.05l-.072-.033a1.512 1.512 0 0 1-.098-.046c-.03-.01-.057-.022-.076-.022a1.296 1.296 0 0 0-.22-.08l-.007-.004-.015-.007h-.007l-.012-.004v-.004h-.022a.37.37 0 0 1-.038-.019l-.038-.018a.113.113 0 0 0-.034-.012h-.004l-.234-.094a2.854 2.854 0 0 0-.242-.087.601.601 0 0 0-.151-.03ZM0 3.891Zm.094.593.012.027Zm.012.03c.022.06.041.118.068.17zm.068.174.003.012zM16.757 8.3a.386.386 0 0 1 .113.015.386.386 0 0 1 .269.473.386.386 0 0 1-.473.264.386.386 0 0 1-.264-.468.386.386 0 0 1 .355-.284z"/></svg>
diff --git a/assets/lib/simple-icons/icons/fluentd.svg b/assets/lib/simple-icons/icons/fluentd.svg
index 0556c211..dbe995f2 100644
--- a/assets/lib/simple-icons/icons/fluentd.svg
+++ b/assets/lib/simple-icons/icons/fluentd.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Fluentd icon</title><path d="M1.83 2.195C1.279 2.191.8 2.377.425 2.82-.429 3.823.03 6.135 1.787 8.917l.02.028a10.177 10.177 0 0 0 .197.297c1.733 2.579 4.249 4.677 3.743 7.586a4.28 4.28 0 0 1-.599 1.564C3.615 20.797.003 21.047.003 21.047l.042.001-.045.005s4.355 1.344 8.533.438c.598-.13 1.192-.305 1.769-.537a12.331 12.331 0 0 0 .023-.01c.343-.138.667-.284.975-.437a12.331 12.331 0 0 0 .282-.145c.285-.15.556-.306.814-.467a12.331 12.331 0 0 0 .152-.095c.316-.204.61-.416.888-.635a12.331 12.331 0 0 0 .146-.116c.164-.134.323-.27.476-.407a12.331 12.331 0 0 0 .123-.105l.036-.04c.008-.008.015-.016.024-.023a12.842 12.842 0 0 0 .86-.888c.05-.056.1-.112.148-.169.059-.068.118-.135.175-.203l.1-.123c.127-.154.25-.31.372-.465l.032-.042c.679-.88 1.28-1.779 1.933-2.639l.216-.278c.294-.374.6-.74.932-1.091l.03-.031c.108-.114.22-.226.334-.337l.07-.067a10.997 10.997 0 0 1 .264-.243c.036-.032.072-.065.109-.096a5.003 5.003 0 0 1 .374-.293c.012-.01.025-.018.038-.027a5.003 5.003 0 0 1 .85-.48l-.065.03.022-.01.06-.027a5.623 5.623 0 0 1 1.63-.412h.001a5.623 5.623 0 0 1 .533-.026h.07a5.623 5.623 0 0 1 .115.002l.428-.003a.204.204 0 0 0 .088-.016c.062-.03.047-.102-.012-.186a1.38 1.38 0 0 0-.39-.343 3.688 3.688 0 0 1-.098-.052 3.871 3.871 0 0 1-.036-.022 3.688 3.688 0 0 1-.256-.161 3.871 3.871 0 0 1-.129-.096 3.688 3.688 0 0 1-.193-.15c-.205-.2-.432-.733-.523-.888a2.05 2.05 0 0 0-.24-.33c-.272-.306-.665-.533-1.302-.615-.891-.115-1.727.072-2.565.333l.1-.035c-1.168.354-2.334.87-3.655.94h-.04a5.553 5.553 0 0 1-.668-.01l-.06-.004a5.473 5.473 0 0 1-1.16-.233c-1.312-.412-3.154-1.88-5.047-3.316a113.017 113.017 0 0 0-.651-.49 51.56 51.56 0 0 0-.789-.58l-.222-.155-.236-.166-.086-.06a17.622 17.622 0 0 0-1.612-.997l-.019-.01a10.036 10.036 0 0 0-.367-.186c-.039-.019-.078-.035-.117-.053a7.732 7.732 0 0 0-.548-.23l-.05-.017a5.023 5.023 0 0 0-.316-.101l-.026-.007a3.055 3.055 0 0 0-.816-.125zM20.6 8.641a.504.5 0 0 1 .505.5.504.5 0 0 1-.505.5.504.5 0 0 1-.504-.5.504.5 0 0 1 .504-.5z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Fluentd</title><path d="M1.83 2.195C1.279 2.191.8 2.377.425 2.82-.429 3.823.03 6.135 1.787 8.917l.02.028a10.177 10.177 0 0 0 .197.297c1.733 2.579 4.249 4.677 3.743 7.586a4.28 4.28 0 0 1-.599 1.564C3.615 20.797.003 21.047.003 21.047l.042.001-.045.005s4.355 1.344 8.533.438c.598-.13 1.192-.305 1.769-.537a12.331 12.331 0 0 0 .023-.01c.343-.138.667-.284.975-.437a12.331 12.331 0 0 0 .282-.145c.285-.15.556-.306.814-.467a12.331 12.331 0 0 0 .152-.095c.316-.204.61-.416.888-.635a12.331 12.331 0 0 0 .146-.116c.164-.134.323-.27.476-.407a12.331 12.331 0 0 0 .123-.105l.036-.04c.008-.008.015-.016.024-.023a12.842 12.842 0 0 0 .86-.888c.05-.056.1-.112.148-.169.059-.068.118-.135.175-.203l.1-.123c.127-.154.25-.31.372-.465l.032-.042c.679-.88 1.28-1.779 1.933-2.639l.216-.278c.294-.374.6-.74.932-1.091l.03-.031c.108-.114.22-.226.334-.337l.07-.067a10.997 10.997 0 0 1 .264-.243c.036-.032.072-.065.109-.096a5.003 5.003 0 0 1 .374-.293c.012-.01.025-.018.038-.027a5.003 5.003 0 0 1 .85-.48l-.065.03.022-.01.06-.027a5.623 5.623 0 0 1 1.63-.412h.001a5.623 5.623 0 0 1 .533-.026h.07a5.623 5.623 0 0 1 .115.002l.428-.003a.204.204 0 0 0 .088-.016c.062-.03.047-.102-.012-.186a1.38 1.38 0 0 0-.39-.343 3.688 3.688 0 0 1-.098-.052 3.871 3.871 0 0 1-.036-.022 3.688 3.688 0 0 1-.256-.161 3.871 3.871 0 0 1-.129-.096 3.688 3.688 0 0 1-.193-.15c-.205-.2-.432-.733-.523-.888a2.05 2.05 0 0 0-.24-.33c-.272-.306-.665-.533-1.302-.615-.891-.115-1.727.072-2.565.333l.1-.035c-1.168.354-2.334.87-3.655.94h-.04a5.553 5.553 0 0 1-.668-.01l-.06-.004a5.473 5.473 0 0 1-1.16-.233c-1.312-.412-3.154-1.88-5.047-3.316a113.017 113.017 0 0 0-.651-.49 51.56 51.56 0 0 0-.789-.58l-.222-.155-.236-.166-.086-.06a17.622 17.622 0 0 0-1.612-.997l-.019-.01a10.036 10.036 0 0 0-.367-.186c-.039-.019-.078-.035-.117-.053a7.732 7.732 0 0 0-.548-.23l-.05-.017a5.023 5.023 0 0 0-.316-.101l-.026-.007a3.055 3.055 0 0 0-.816-.125zM20.6 8.641a.504.5 0 0 1 .505.5.504.5 0 0 1-.505.5.504.5 0 0 1-.504-.5.504.5 0 0 1 .504-.5z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/flutter.svg b/assets/lib/simple-icons/icons/flutter.svg
index c9857495..01212163 100644
--- a/assets/lib/simple-icons/icons/flutter.svg
+++ b/assets/lib/simple-icons/icons/flutter.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Flutter icon</title><path d="M14.314 0L2.3 12 6 15.7 21.684.012h-7.357L14.314 0zm.014 11.072l-6.471 6.457 6.47 6.47H21.7l-6.46-6.468 6.46-6.46h-7.371z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Flutter</title><path d="M14.314 0L2.3 12 6 15.7 21.684.013h-7.357zm.014 11.072L7.857 17.53l6.47 6.47H21.7l-6.46-6.468 6.46-6.46h-7.37z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/flyway.svg b/assets/lib/simple-icons/icons/flyway.svg
new file mode 100644
index 00000000..406c47c5
--- /dev/null
+++ b/assets/lib/simple-icons/icons/flyway.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Flyway</title><path d="m3.02 21.055 1.12-.23c1.054-.219 2.114-.415 3.161-.66a4.955 4.952 0 0 0 3.696-3.915 6.06 6.057 0 0 0 .085-1.153l.366-.09a4.936 4.933 0 0 0 3.75-3.717 3.8 3.798 0 0 0 .128-1.06c-.002-.096 0-.193 0-.305.094-.023.18-.047.267-.067a4.552 4.549 0 0 0 2.68-1.755 5.772 5.769 0 0 0 1.005-4.854c-.021-.088-.035-.179-.061-.264a.63.629 0 0 0-.728-.432l-3.184.652-3.485.716-4.002.822q-2.186.449-4.373.893a1.125 1.125 0 0 1-.422.06c-.007-.074-.017-.14-.017-.204-.001-1.12.002-2.243-.005-3.364a.324.324 0 0 1 .174-.307 8.493 8.488 0 0 1 1.9-.86A17.205 17.194 0 0 1 7.827.315C8.373.23 8.922.181 9.47.12a26.795 26.777 0 0 1 3.526-.102c.496.01.992.051 1.487.097.542.051 1.085.11 1.623.192a14.482 14.472 0 0 1 4.007 1.124c.262.123.509.28.764.422a.215.215 0 0 1 .122.223c-.004.054 0 .11 0 .163v19.519c0 .347.045.28-.262.472a8.437 8.432 0 0 1-1.961.857 16.78 16.769 0 0 1-2.851.63c-.6.08-1.2.146-1.804.207-.277.03-.556.035-.835.043-.564.015-1.128.041-1.691.03-.636-.014-1.272-.059-1.907-.099a20.054 20.041 0 0 1-2.519-.332 13.423 13.415 0 0 1-3.224-.976c-.273-.13-.53-.29-.797-.435a.246.246 0 0 1-.144-.248c.008-.23 0-.46.003-.69 0-.049.01-.096.016-.163zm9.985-10.652a1.248 1.248 0 0 1-.09.55 2.624 2.622 0 0 1-2.045 1.84c-1.3.28-2.607.537-3.912.805l-.57.114a1.147 1.146 0 1 0 .403 2.256c.595-.11 1.186-.242 1.779-.363.064-.014.128-.022.209-.035a2.584 2.582 0 0 1-.55 1.41A2.801 2.8 0 0 1 6.516 18c-1.103.223-2.206.45-3.308.676-.052.01-.106.013-.156.02-.048-.146-.061-10.38-.014-10.63l14.048-2.883a1.523 1.522 0 0 1-.016.18 3.438 3.436 0 0 1-.738 1.502 2.399 2.397 0 0 1-1.426.804c-1.11.216-2.218.45-3.326.677l-.96.196a1.168 1.168 0 0 0-.953 1.057 1.147 1.147 0 0 0 .875 1.186 1.747 1.746 0 0 0 .807-.054c.492-.1.983-.203 1.475-.304.053-.01.108-.014.18-.023z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/fmod.svg b/assets/lib/simple-icons/icons/fmod.svg
new file mode 100644
index 00000000..7d0c676c
--- /dev/null
+++ b/assets/lib/simple-icons/icons/fmod.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>FMOD</title><path d="M3.3522 10.17a.903.903 0 0 0-.903.903v4.0696H1.127v-2.8134H0v-1.318h1.1284a2.2252 2.2252 0 0 1 2.2238-2.1703H4.673v1.3222zm7.3257 1.8403a.2501.2501 0 0 0-.2378.1732l-.532 1.8348a1.564 1.564 0 0 1-3.0016 0l-.532-1.8348a.2515.2515 0 0 0-.4769 0l-.5319 1.8348a1.5723 1.5723 0 0 1-1.5118 1.123h-.3684v-1.3195h.3739a.2474.2474 0 0 0 .235-.1732l.5319-1.8348a1.5696 1.5696 0 0 1 3.0086 0l.536 1.8376a.246.246 0 0 0 .4714 0l.532-1.8349a1.5696 1.5696 0 0 1 3.0086 0l.5319 1.8349a.2474.2474 0 0 0 .235.1731h.3738v1.3195h-.3683a1.571 1.571 0 0 1-1.5119-1.123l-.5319-1.8348a.2515.2515 0 0 0-.2336-.1759zm2.6897.9058a2.2252 2.2252 0 1 1 2.2252 2.2251 2.2252 2.2252 0 0 1-2.2252-2.2251zm3.1282 0a.903.903 0 1 0-.903.903.903.903 0 0 0 .903-.903zm4.6744.4604a.962.962 0 0 0 .0673-.1237.6707.6707 0 0 1 1.2659.3079.6542.6542 0 0 1-.055.2625l-.0192.0398a2.2678 2.2678 0 0 1-2.0342 1.2755 2.2252 2.2252 0 0 1 0-4.4504h.0976a2.25 2.25 0 0 1 1.0143.2914V8.8409h1.3222v3.01a.7422.7422 0 0 1-.712.7215 1.5902 1.5902 0 0 1-1.0692-.3738.9016.9016 0 0 0-.5498-.191h-.0976a.903.903 0 1 0 .7752 1.3661zM4.2277 11.624a.7037.7037 0 0 1-.7037.7037.7037.7037 0 0 1-.7037-.7037.7037.7037 0 0 1 .7037-.7037.7037.7037 0 0 1 .7037.7037zm18.398 2.8354a.6872.6872 0 1 0 .6872-.6748.6776.6776 0 0 0-.6872.6748zm.1237 0a.5594.5594 0 1 1 .5608.5828.558.558 0 0 1-.565-.5828zm.2817.3821h.1237v-.3408h.1375l.2158.3408h.1374l-.2268-.3505a.2034.2034 0 0 0 .209-.2157c0-.1526-.0894-.2268-.275-.2268h-.3064zm.1237-.6872h.1581c.0838 0 .1746.0165.1746.121 0 .1044-.1004.1374-.209.1374h-.1292z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/fnac.svg b/assets/lib/simple-icons/icons/fnac.svg
index 88407390..b97d3874 100644
--- a/assets/lib/simple-icons/icons/fnac.svg
+++ b/assets/lib/simple-icons/icons/fnac.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Fnac icon</title><path d="M1.282 15.742h1.427v-4.177h2.508v4.173h1.428v-2.926c.072-.495.384-1.191 1.502-1.282 0 0 1.628-.292 1.83 1.282v2.93h1.427v-3.535c-.329-2.507-3.589-1.74-3.589-1.74-.768.221-1.061.551-1.189.732v-.713H2.689c-.109-1.373 1.19-1.353 1.19-1.353 1.283-.038 1.338.859 1.338.859h1.428c0-1.611-2.051-1.813-2.051-1.813-2.014-.165-2.709.568-2.709.568-.641.587-.623 1.521-.604 1.74H0v1.063h1.281v4.191l.001.001zm14.625-1.412c-.365.477-.786.623-1.299.641-.44.018-1.392.111-1.411-.676-.018-.752 1.154-.715 1.924-.771 0 0 .785 0 .933-.236 0 0 .019-.018.019 0 .017.017.146.62-.166 1.042zm-.018-3.826c-1.574-.292-2.49 0-2.506 0-1.539.385-1.558 1.723-1.558 1.723h1.465s.019-1.045 1.573-.916c0 0 1.136.054 1.19.604 0 0 .366.658-1.19.75-1.573.092-3.441.074-3.239 1.666 0 0-.038 1.52 2.526 1.484 0 0 1.373.035 1.939-.715v.018l.057.586h1.427l-.036-3.148c.109-1.776-1.648-2.052-1.648-2.052zm6.646 3.535c-.221.492-.661.768-1.448.768 0 0-1.775.129-1.829-1.631v-.053c.054-1.739 1.829-1.63 1.829-1.63.809 0 1.228.275 1.448.771h1.445c-.015-.217-.07-.429-.165-.624-.348-.604-1.171-1.299-3.093-1.172-.532.037-.934.092-1.282.239-.641.257-1.685.97-1.666 2.362v.164c-.019 1.391 1.026 2.105 1.666 2.361.347.146.771.201 1.282.238 1.28.072 2.069-.201 2.562-.568.696-.549.716-1.227.716-1.227h-1.465v.002z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Fnac</title><path d="M20.874 7.2s-1.622-.106-1.684 1.369v.04c.062 1.476 1.684 1.39 1.684 1.39.737 0 1.137-.23 1.326-.652h.842l.232-1.495H22.18c-.19-.42-.569-.673-1.305-.652zm-4.59 1.516c-.147.19-.862.19-.862.19-.717.042-1.79.02-1.769.652.02.673.884.59 1.305.569.464-.021.863-.148 1.18-.548.294-.337.168-.842.146-.863.022-.021 0 0 0 0zM3.295 0l-1.01 6.358h.442c-.02-.19-.02-.97.547-1.474 0 0 .632-.632 2.485-.485 0 0 1.894.148 1.894 1.516H6.347s-.042-.757-1.22-.715c0 0-1.2-.021-1.096 1.137h3.621v.59c.106-.17.38-.443 1.074-.632 0 0 2.968-.654 3.284 1.474v2.989h-1.304V8.316C10.516 6.99 9.02 7.221 9.02 7.221c-1.011.084-1.306.673-1.369 1.095V10.8H6.347V7.263H4.052V10.8H2.747V7.263h-.59L.01 20.716 20.726 24l2.148-13.622c-.442.316-1.179.548-2.358.485-.484-.021-.863-.085-1.179-.21-.59-.21-1.536-.822-1.536-2.001v-.147c-.022-1.16.947-1.769 1.536-2 .316-.126.695-.17 1.18-.21 1.768-.106 2.525.483 2.841.989l.633-4.043zM16.37 10.799l-.043-.505v-.02c-.526.652-1.789.609-1.789.609-2.358.043-2.316-1.241-2.316-1.241-.19-1.348 1.537-1.327 2.968-1.41 1.432-.085 1.095-.653 1.095-.653-.063-.464-1.094-.506-1.094-.506-1.432-.105-1.453.757-1.453.757H12.39s0-1.136 1.411-1.452c.02 0 .842-.252 2.295 0 0 0 1.62.21 1.516 1.768l.042 2.674H16.37z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/folium.svg b/assets/lib/simple-icons/icons/folium.svg
new file mode 100644
index 00000000..c604ab6c
--- /dev/null
+++ b/assets/lib/simple-icons/icons/folium.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Folium</title><path d="M9.209 17.302v.558h-.558v-.558h.558zm-1.116-.558v.558h.558v-.558h-.558zm1.116 1.116v.558h.558v-.558h-.558zm-1.674-1.674v.558h.558v-.558h-.558zm2.232 2.233v.558h.558v-.558h-.558zm.559-4.466v.558h.558v-.558h-.558zM9.767 2.791v.558h.558v-.558h-.558zm.559 5.581v.558h.558v-.558h-.558zm0 10.605v.558h.558v-.558h-.558zm-2.233-7.256v-.558h-.558v.558h.558zm1.116-4.465v-.558h-.558v.558h.558zm-.558-.558V6.14h-.558v.558h.558zm1.116 1.116v-.558h-.558v.558h.558zM8.093 6.14v-.559h-.558v.559h.558zm1.116 6.697v-.558h-.558v.558h.558zm1.117 1.116v-.558h-.559v.558h.559zm-1.675-1.674v-.558h-.558v.558h.558zm1.116 1.116v-.558h-.558v.558h.558zm.559-5.023v-.558h-.559v.558h.559zM6.977 18.977v.558h.558v-.558h-.558zm1.116-15.07h-.558v.558h.558v-.558zm0 16.186v.558h.558v-.558h-.558zm-.558-3.907v-.558h-.558v-4.465h.558v-.558h-.558V5.581h.558V4.465h-.558v.558h-.558v13.953h.558v-2.791h.558zm0 3.349v.558h.558v-.558h-.558zm1.116 1.116v.558h.558v-.558h-.558zm1.675 1.675v.558h.558v-.558h-.558zm-.559-.559v.558h.558v-.558h-.558zm-.558-.558v.558h.558v-.558h-.558zm1.117-19.535h-.559v.558h.558v-.558zm0 1.675v.558h.558v-.558h-.558zm-.559-1.116h-.558v.558h.558v-.558zm1.117-1.117h-.558v.558h.558v-.558zM9.209 2.791h-.558v.558h.558v-.558zm-.558.558h-.558v.558h.558v-.558zm5.023 15.628h.558v-.558h-.558v.558zm.559-16.186h-.558v.558h.558v-.558zm0 15.628h.558v-.559h-.558v.559zm-1.117 1.116h.558v-.558h-.558v.558zm2.233-7.256h-.558v.558h.558v-.558zm.558 4.465h.558v-.558h-.558v.558zm-1.116 1.116h.558v-.558h-.558v.558zm.558-.558h.558v-.558h-.558v.558zm-1.675-3.349h-.558v.558h.558v-.558zm.559-.558h-.558v.558h.558v-.558zm.558-6.139h-.558v.558h.558v-.558zm.558-.558h-.558v.558h.558v-.558zm.558-.558h-.558v.558h.558V6.14zm-2.233-2.791h-.558v.558h.558v-.558zm1.117 9.488h-.558v.558h.558v-.558zm1.116-1.116h-.558v.558h.558v-.558zm-1.674-3.907h-.558v.558h.558v-.558zm-.559.558h-.558v.558h.558v-.558zm-.558 14.512h.558v-.558h-.558v.558zm1.675-1.675h.558v-.558h-.558v.558zm-.558.558h.558v-.558h-.558v.558zm1.674-10.046h.558v-.558h-.558v.558zm-.558 8.93h.558v-.558h-.558v.558zm.558-.558h.558v-.558h-.558v.558zm1.116-15.07v-.558h-.558v1.116h.558v5.023h-.558v.558h.558v4.465h-.558v.558h.558v2.791h.558V5.023h-.558zm-.558 14.512h.558v-.558h-.558v.558zm-2.791 2.791h.558v-.558h-.558v.558zm2.791-17.861v-.558h-.558v.558h.558zm-.558-.558v-.558h-.558v.558h.558zm-.558-.558v-.558h-.558v.558h.558zm.558 2.791h.558v-.559h-.558v.559zm-2.233-4.466v-.558h-.558v.558h.558zm1.117 1.117v-.558h-.558v.558h.558zm-2.233 17.302h.558v-.558h-.558V15.07h.558v-.558h-.558V9.488h.558V8.93h-.558V4.465h.558v-.558h-.558V1.116h.558V.558h-.558V0h-1.116v.558h-.558v.558h.558v2.791h-.558v.558h.558V8.93h-.558v.558h.558v5.023h-.558v.558h.558v4.465h-.558v.558h.558v2.791h-.558v.558h.558V24h1.116v-.558h.558v-.558h-.558v-2.791zm1.675-17.86v-.559h-.558v.558h.558z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/fonoma.svg b/assets/lib/simple-icons/icons/fonoma.svg
new file mode 100644
index 00000000..2be2bb16
--- /dev/null
+++ b/assets/lib/simple-icons/icons/fonoma.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Fonoma</title><path d="M19.706 21.919a4.295 4.295 0 0 0 4.293-4.296 4.295 4.295 0 1 0-4.293 4.296zM4.296 10.672a4.295 4.295 0 0 0 4.293-4.295 4.295 4.295 0 1 0-4.294 4.295zm10.412 0h4.975a4.277 4.277 0 0 0 4.293-4.295 4.277 4.277 0 0 0-4.293-4.296h-4.975a4.277 4.277 0 0 0-4.294 4.296 4.277 4.277 0 0 0 4.294 4.295zM4.295 21.92h4.976a4.277 4.277 0 0 0 4.293-4.296 4.277 4.277 0 0 0-4.293-4.295H4.295a4.277 4.277 0 0 0-4.293 4.295c.068 2.318 1.976 4.296 4.293 4.296z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/fontawesome.svg b/assets/lib/simple-icons/icons/fontawesome.svg
index 0712d0a8..1c3ec6e8 100644
--- a/assets/lib/simple-icons/icons/fontawesome.svg
+++ b/assets/lib/simple-icons/icons/fontawesome.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Font Awesome icon</title><path d="M2.571 0A2.572 2.572 0 000 2.571V21.43A2.572 2.572 0 002.571 24H21.43A2.572 2.572 0 0024 21.429V2.57A2.572 2.572 0 0021.429 0zm4.324 4c.993 0 1.793.8 1.793 1.791A1.7 1.7 0 017.984 7.2v.993c.128-.043 1.836-.897 3.584-.897 2.04 0 3.053.865 3.968.865 1.217 0 2.56-.865 2.88-.865.257 0 .48.192.48.416v7.521c0 .224-.191.32-.415.416-.896.384-1.857.736-2.88.736-1.44 0-2.113-.896-3.841-.896-1.248 0-2.56.448-3.616.929-.064.032-.129.032-.193.064v2.432c0 .669-.503 1.088-1.056 1.088a1.08 1.08 0 01-1.088-1.088V7.199a1.789 1.789 0 01-.704-1.408C5.103 4.8 5.903 4 6.895 4Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Font Awesome</title><path d="M24 .857v18c-3.375 1.232-4.393 1.714-6.375 1.714-3.375 0-4.66-1.714-8.036-1.714-1.071 0-1.928.214-2.732.429v-3.429c.804-.214 1.661-.428 2.732-.428 3.375 0 4.661 1.714 8.036 1.714 1.071 0 1.875-.16 2.946-.482V5.518C19.5 5.839 18.696 6 17.625 6c-3.375 0-4.66-1.714-8.036-1.714-2.732 0-4.017 1.125-6.16 1.553v16.447A1.693 1.693 0 011.714 24 1.693 1.693 0 010 22.286V1.714A1.693 1.693 0 011.714 0 1.693 1.693 0 013.43 1.714v.697C5.572 1.982 6.857.857 9.589.857c3.375 0 4.661 1.715 8.036 1.715 1.982 0 3-.483 6.375-1.715Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/fontbase.svg b/assets/lib/simple-icons/icons/fontbase.svg
new file mode 100644
index 00000000..b68c6518
--- /dev/null
+++ b/assets/lib/simple-icons/icons/fontbase.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>FontBase</title><path d="M23.079 13.996c-2.702-2.771-5.702-5.703-8.105-8.103-1.62-1.621-4.284-1.621-5.943 0-2.97 2.963-5.248 5.21-8.104 8.066a3.12 3.12 0 0 0 0 4.437 3.12 3.12 0 0 0 4.437 0l2.2-2.2 2.2 2.2a3.12 3.12 0 0 0 4.438 0 3.12 3.12 0 0 0 0-4.438l4.4 4.4a3.12 3.12 0 0 0 4.438 0c1.274-1.16 1.274-3.165.039-4.362z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/foodpanda.svg b/assets/lib/simple-icons/icons/foodpanda.svg
new file mode 100644
index 00000000..7b301d09
--- /dev/null
+++ b/assets/lib/simple-icons/icons/foodpanda.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>foodpanda</title><path d="M4.224 0a3.14 3.14 0 00-3.14 3.127 3.1 3.1 0 001.079 2.36 11.811 11.811 0 00-2.037 6.639C.126 18.68 5.458 24 12 24c6.542 0 11.874-5.32 11.874-11.874a11.69 11.69 0 00-2.025-6.614 3.136 3.136 0 001.09-2.373A3.132 3.132 0 0019.8.012a3.118 3.118 0 00-2.636 1.438A11.792 11.792 0 0012.012.264c-1.845 0-3.595.419-5.152 1.174A3.133 3.133 0 004.224 0zM12 1.198c1.713 0 3.331.396 4.78 1.102a10.995 10.995 0 014.29 3.715 10.89 10.89 0 011.882 6.135c.011 6.039-4.901 10.951-10.94 10.951-6.04 0-10.951-4.912-10.951-10.951 0-2.277.694-4.386 1.88-6.135A11.08 11.08 0 017.232 2.3 10.773 10.773 0 0112 1.198zM7.367 6.345c-.853.012-1.743.292-2.28.653-1.031.682-2.29 2.156-2.085 4.181.191 2.025 1.785 3.283 2.612 3.283.826 0 1.234-.42 1.485-1.45.252-1.018 1.115-2.192 2.217-3.45s-.024-2.469-.024-2.469c-.393-.513-1.052-.727-1.755-.747a3.952 3.952 0 00-.17-.001zm9.233.007l-.17.001c-.702.02-1.358.233-1.746.752 0 0-1.126 1.21-.024 2.469 1.114 1.258 1.965 2.432 2.217 3.45.251 1.019.659 1.438 1.485 1.45.827 0 2.409-1.258 2.612-3.283.204-2.025-1.054-3.51-2.084-4.182-.544-.36-1.437-.643-2.29-.657zm-8.962 2c.348 0 .624.275.624.623-.012.335-.288.623-.624.623a.619.619 0 01-.623-.623c0-.348.276-.624.623-.624zm8.891 0c.348 0 .623.275.623.623-.012.335-.287.623-.623.623a.619.619 0 01-.623-.623c0-.348.288-.624.623-.624zm-4.541 4.025c-.527 0-2.06.096-2.06.587 0 .887 1.88 1.522 2.06 1.474.18.048 2.06-.587 2.06-1.474 0-.49-1.52-.587-2.06-.587zM9.076 15.17c0 1.414 1.294 2.564 2.912 2.564 1.618 0 2.924-1.15 2.924-2.564z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ford.svg b/assets/lib/simple-icons/icons/ford.svg
index bc4371af..71a1d58b 100644
--- a/assets/lib/simple-icons/icons/ford.svg
+++ b/assets/lib/simple-icons/icons/ford.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Ford icon</title><path d="M11.996 7.825C5.376 7.825 0 9.696 0 12c0 2.313 5.375 4.175 12.004 4.175C18.634 16.175 24 14.313 24 12c0-2.304-5.367-4.175-12.004-4.175zm.008.362c6.391 0 11.581 1.712 11.581 3.813 0 2.11-5.19 3.813-11.58 3.813C5.604 15.813.423 14.11.423 12c0-2.1 5.181-3.813 11.58-3.813zm-3.14.684c-.17 0-.342.008-.514.022-1.139.097-2.233.741-2.233 1.721 0 .495.353.9.9.883.645-.018 1.174-.539 1.448-1.183.097-.238-.097-.344-.185-.203-.16.256-.398.45-.645.574-.3.141-.626.106-.724-.141-.132-.353.15-.865.804-1.113.944-.344 1.924-.114 2.877.062.009 0 .062.027.018.053-.168.088-.336.168-.6.389-.186.167-.433.38-.618.609-.186.23-.318.432-.495.662-.026.035-.052.035-.052.035-.433.07-.848.124-1.236.388-.08.053-.106.16-.062.23s.141.08.212.026c.238-.185.485-.265.768-.273.008 0 .017 0 .017.008.01 0 .01.01 0 .018-.423.592-.53.724-.847 1.086a9.206 9.206 0 0 1-.503.512c-.724.67-1.5.662-1.783.238-.168-.256-.141-.52-.035-.741.14-.274.405-.468.635-.583.088-.044.115-.15.027-.247-.053-.07-.186-.08-.283-.062a1.515 1.515 0 0 0-1.165 1.624c.07.742.68 1.174 1.377 1.165.547-.008 1.068-.176 1.686-.803.582-.6 1.12-1.483 1.615-2.304.018-.026.027-.044.106-.053.31-.035.777-.079 1.068-.097.062-.008.08-.009.106.027.07.097.194.176.283.23.053.026.07.035.105.035.045 0 .08-.018.097-.045.036-.035.045-.079.027-.105-.018-.036-.22-.15-.23-.195-.008-.026.027-.035.027-.035a.656.656 0 0 0 .406-.327c.097-.185.106-.423-.062-.556-.15-.123-.37-.097-.556.062a.677.677 0 0 0-.212.592c.01.035 0 .053-.044.053-.273.017-.538.026-.83.044-.026 0-.026-.01-.017-.027.335-.582.838-.997 1.394-1.412.036-.027.027-.08.027-.124 1.006.22 1.977.627 3.019.618.423 0 .838-.062 1.235-.282.345-.194.486-.362.495-.547.008-.124-.08-.203-.203-.177-1.05.247-2.057.238-3.107.115-1.198-.147-2.347-.45-3.539-.446zm6.83.384c0 .009.009.009.009.017 0-.008-.009-.017-.009-.017zm-4.72 1.308c.025 0 .048.008.068.025.053.044.027.167-.026.247a.416.416 0 0 1-.256.185c-.018.01-.035 0-.044-.044a.419.419 0 0 1 .132-.362.194.194 0 0 1 .126-.051zm7.818.016c-.044 0-.07.009-.097.053-.07.141-.97 1.483-1.139 1.748-.026.044-.061.035-.07-.01-.018-.158-.15-.335-.362-.414a.913.913 0 0 0-.486-.053c-.29.035-.556.194-.785.37-.353.265-.653.61-1.042.866-.211.14-.503.256-.697.08-.177-.16-.159-.522.115-.804.026-.027.062-.009.053.018a.36.36 0 0 0 .106.344c.114.106.282.115.432.044a.571.571 0 0 0 .3-.433.49.49 0 0 0-.45-.556c-.22-.017-.441.062-.644.239a1.14 1.14 0 0 0-.256.282c-.018.035-.053.035-.053-.009.009-.362-.141-.573-.442-.582-.238-.01-.485.123-.68.273a5.704 5.704 0 0 0-.6.618c-.026.027-.043.027-.052-.026a1.343 1.343 0 0 0-.177-.645c-.044-.061-.124-.088-.194-.044-.035.018-.141.07-.23.133-.044.035-.053.08-.035.14.106.363.088.778-.062 1.122-.132.318-.397.609-.706.706-.203.062-.415.035-.547-.15-.177-.247-.106-.68.159-1.042.238-.317.574-.52.918-.644.044-.018.044-.044.035-.08a1.737 1.737 0 0 0-.062-.167c-.035-.08-.114-.097-.23-.088a1.923 1.923 0 0 0-.688.23c-.573.308-.865.908-.997 1.226-.062.15-.115.247-.177.335-.088.115-.203.221-.414.406-.018.018-.036.053-.018.089a.995.995 0 0 0 .159.212c.035.017.07-.01.088-.018a2.07 2.07 0 0 0 .406-.362c.027-.035.062-.018.08.035a.91.91 0 0 0 .573.618c.53.177 1.077-.08 1.492-.53.265-.282.362-.467.459-.59.168-.213.512-.69.91-.99.15-.114.317-.194.405-.14.07.044.097.15-.018.352-.406.75-1.015 1.625-1.12 1.845-.018.036 0 .062.035.062h.618c.035 0 .044-.018.061-.035.318-.495.61-.962.927-1.448.018-.026.036-.009.036.009a.925.925 0 0 0 .097.37.551.551 0 0 0 .476.265.9.9 0 0 0 .389-.079c.132-.053.238-.115.317-.168.045-.035.053.027.053.027-.07.388.018.856.406 1.041.468.23.98-.097 1.271-.38.027-.026.062-.026.062.036a.509.509 0 0 0 .15.335c.247.248.742.15 1.245-.238.318-.247.653-.6.953-.962.009-.018.018-.035 0-.062-.044-.044-.115-.106-.159-.15-.017-.017-.053-.009-.07 0-.31.291-.592.636-.989.91-.132.097-.353.167-.45.044-.035-.053-.035-.124 0-.212.132-.31 1.995-3.151 2.092-3.32.017-.026 0-.052-.035-.052zm-1.962 1.78c.048 0 .094.01.135.03.23.105.159.37.053.582-.009.018-.009.026-.009.044s.036.044.062.053c.009 0 .018.009 0 .035-.08.168-.15.265-.247.415a1.674 1.674 0 0 1-.318.344c-.185.16-.45.327-.662.212-.097-.053-.141-.185-.132-.291.008-.309.14-.618.388-.927.251-.308.52-.494.73-.496z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Ford</title><path d="M12 8.236C5.872 8.236.905 9.93.905 12.002S5.872 15.767 12 15.767c6.127 0 11.094-1.693 11.094-3.765 0-2.073-4.967-3.766-11.094-3.766zm-5.698 6.24c-.656.005-1.233-.4-1.3-1.101a1.415 1.415 0 0 1 .294-1.02c.195-.254.525-.465.804-.517.09-.017.213-.006.264.054.079.093.056.194-.023.234-.213.109-.47.295-.597.55a.675.675 0 0 0 .034.696c.263.397.997.408 1.679-.225.169-.156.32-.304.473-.48.3-.344.4-.47.8-1.024.005-.006.006-.014.004-.018-.003-.007-.009-.01-.02-.01-.267.007-.5.087-.725.255-.065.048-.159.041-.2-.021-.046-.07-.013-.163.062-.215.363-.253.76-.298 1.166-.367 0 0 .028.002.051-.03.167-.213.292-.405.47-.621.178-.22.41-.42.586-.572.246-.212.404-.283.564-.37.043-.022-.005-.049-.018-.049-.896-.168-1.827-.386-2.717-.056-.616.23-.887.718-.757 1.045.093.231.397.27.683.13a1.55 1.55 0 0 0 .611-.544c.087-.134.27-.038.171.195-.26.611-.757 1.097-1.363 1.118-.516.016-.849-.363-.848-.831.002-.924 1.03-1.532 2.11-1.622 1.301-.108 2.533.239 3.825.395.989.12 1.938.123 2.932-.106.118-.025.2.05.193.168-.01.172-.143.337-.47.516-.373.204-.763.266-1.17.27-.984.008-1.901-.376-2.85-.582.002.041.012.091-.023.117-.525.388-1 .782-1.318 1.334-.011.013-.005.025.013.024.277-.015.525-.022.783-.042.045-.004.047-.015.043-.048a.64.64 0 0 1 .2-.558c.172-.153.387-.17.53-.06.16.126.147.353.058.523a.63.63 0 0 1-.382.31s-.03.006-.026.034c.006.043.2.151.217.18.017.027.008.07-.021.102a.123.123 0 0 1-.095.045c-.033 0-.053-.012-.096-.035a.92.92 0 0 1-.27-.217c-.024-.031-.037-.032-.099-.029-.279.017-.714.059-1.009.096-.071.008-.082.022-.096.047-.47.775-.972 1.61-1.523 2.17-.592.6-1.083.758-1.604.762zM19.05 10.71c-.091.158-1.849 2.834-1.96 3.11-.035.088-.04.155-.004.204.092.124.297.051.425-.038.381-.262.645-.58.937-.858.017-.013.046-.018.065 0 .043.04.106.091.15.137a.04.04 0 0 1 .002.057 5.873 5.873 0 0 1-.904.911c-.47.364-.939.457-1.172.224a.508.508 0 0 1-.14-.316c-.002-.057-.031-.06-.058-.034-.278.275-.76.579-1.198.362-.366-.18-.451-.618-.383-.986.001-.008-.006-.06-.051-.03a1.28 1.28 0 0 1-.3.162.853.853 0 0 1-.366.077.518.518 0 0 1-.451-.253.759.759 0 0 1-.095-.347c-.001-.011-.017-.032-.033-.005-.3.457-.579.899-.875 1.363-.016.022-.03.036-.06.037l-.587.001c-.036 0-.053-.028-.034-.063.104-.2.674-1.03 1.06-1.736.107-.194.085-.294.019-.337-.083-.054-.248.027-.387.133-.379.287-.697.735-.859.935-.095.117-.185.291-.433.56-.391.425-.91.669-1.408.5a.848.848 0 0 1-.546-.58c-.015-.052-.044-.066-.073-.032-.08.1-.245.249-.383.342-.015.011-.052.033-.084.017a.851.851 0 0 1-.152-.199.07.07 0 0 1 .016-.08c.197-.173.305-.271.391-.38.064-.08.113-.17.17-.315.12-.302.393-.866.938-1.158a1.81 1.81 0 0 1 .652-.219c.1-.01.183.002.213.08.011.033.039.105.056.158.011.032.003.057-.035.071-.32.122-.643.311-.865.61-.253.338-.321.746-.152.98.123.17.322.2.514.139.29-.092.538-.363.666-.663.138-.329.16-.717.058-1.059-.016-.059-.001-.104.037-.136.077-.063.184-.112.215-.128a.14.14 0 0 1 .182.045c.106.157.163.378.17.607.006.049.026.05.05.025.19-.202.366-.418.568-.58.185-.147.422-.267.643-.262.286.006.428.2.419.546-.001.044.03.04.051.011a1.19 1.19 0 0 1 .24-.264c.198-.163.4-.236.611-.222.26.02.468.257.425.527a.53.53 0 0 1-.281.406.362.362 0 0 1-.405-.044.336.336 0 0 1-.096-.322c.005-.025-.027-.048-.054-.02-.254.264-.273.606-.107.76.183.17.458.056.658-.075.366-.239.65-.563.979-.813.218-.166.467-.314.746-.351a.87.87 0 0 1 .454.052c.2.081.326.25.342.396.004.043.036.048.063.01.158-.246 1.005-1.517 1.075-1.65.02-.041.044-.047.089-.047h.606c.035 0 .051.02.036.047zm-2.32 2.204a.053.053 0 0 0-.003.04c.003.02.03.04.056.05.01.003.015.01.004.032-.075.16-.143.252-.237.391a1.472 1.472 0 0 1-.3.325c-.178.147-.424.307-.628.2-.09-.047-.13-.174-.127-.276.004-.288.132-.584.369-.875.288-.355.607-.539.816-.438.216.103.148.354.05.55zm-5.949-1.881a.398.398 0 0 1 .132-.345c.057-.05.133-.062.18-.022.052.045.027.157-.026.234a.43.43 0 0 1-.245.177c-.018.004-.034-.004-.041-.044zM12 7.5C5.34 7.5 0 9.497 0 12c0 2.488 5.383 4.5 12 4.5s12-2.02 12-4.5-5.383-4.5-12-4.5zm0 8.608C5.649 16.108.5 14.27.5 12.002.5 9.733 5.65 7.895 12 7.895s11.498 1.838 11.498 4.107c0 2.268-5.148 4.106-11.498 4.106z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/forestry.svg b/assets/lib/simple-icons/icons/forestry.svg
new file mode 100644
index 00000000..a20abaef
--- /dev/null
+++ b/assets/lib/simple-icons/icons/forestry.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Forestry</title><path d="M5.564.332v2.82L0 8.736l1.305 1.284 4.26-4.26v2.568L0 13.912l1.305 1.283 4.26-4.26v12.733h1.831V10.932l4.284 4.263 1.304-1.283-5.588-5.588V5.756l3.989 3.969 5.195 5.214v8.729h1.832v-8.725L24 9.355l-1.305-1.283-4.283 4.264V9.768L24 4.18l-1.305-1.284-4.283 4.264V.332H16.58v6.824l-4.26-4.26-1.304 1.284 5.564 5.584v2.568l-3.596-3.596-5.588-5.588V.332H5.564z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/formstack.svg b/assets/lib/simple-icons/icons/formstack.svg
index 6b5c6ae3..c918af31 100644
--- a/assets/lib/simple-icons/icons/formstack.svg
+++ b/assets/lib/simple-icons/icons/formstack.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Formstack icon</title><path d="M19,4.035h1.4c0.331,0,0.6,0.269,0.6,0.6v14.73c0,0.331-0.269,0.6-0.6,0.6H19V4.035z M22,6.026h1.4 c0.331,0,0.6,0.269,0.6,0.6v10.747c0,0.331-0.269,0.6-0.6,0.6H22V6.026z M0.6,2.044h16.8c0.331,0,0.6,0.269,0.6,0.6v18.712 c0,0.331-0.269,0.6-0.6,0.6H0.6c-0.331,0-0.6-0.269-0.6-0.6V2.644C0,2.313,0.269,2.044,0.6,2.044z M4.2,5.23 c-0.11,0-0.2,0.09-0.2,0.2v7.35c0,0.045,0.015,0.089,0.044,0.125c0.069,0.086,0.195,0.101,0.281,0.032l9.228-7.35 c0.048-0.038,0.075-0.096,0.075-0.156c0-0.11-0.09-0.2-0.2-0.2L4.2,5.23z M4,17.185c0,0.04,0.012,0.08,0.035,0.113 c0.062,0.091,0.187,0.114,0.278,0.052l7.576-5.184c0.054-0.037,0.087-0.099,0.087-0.165c0-0.11-0.09-0.2-0.2-0.2H6.89 c-0.045,0-0.088,0.015-0.123,0.042l-2.69,2.102C4.028,13.983,4,14.041,4,14.103L4,17.185z M4.086,18.342 C4.032,18.379,4,18.441,4,18.506v0.087c0,0.106,0.086,0.192,0.192,0.192H7c0.11,0,0.2-0.09,0.2-0.2v-2.022 c0-0.041-0.012-0.081-0.036-0.114c-0.063-0.091-0.188-0.113-0.278-0.05L4.086,18.342z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Formstack</title><path d="M19,4.035h1.4c0.331,0,0.6,0.269,0.6,0.6v14.73c0,0.331-0.269,0.6-0.6,0.6H19V4.035z M22,6.026h1.4 c0.331,0,0.6,0.269,0.6,0.6v10.747c0,0.331-0.269,0.6-0.6,0.6H22V6.026z M0.6,2.044h16.8c0.331,0,0.6,0.269,0.6,0.6v18.712 c0,0.331-0.269,0.6-0.6,0.6H0.6c-0.331,0-0.6-0.269-0.6-0.6V2.644C0,2.313,0.269,2.044,0.6,2.044z M4.2,5.23 c-0.11,0-0.2,0.09-0.2,0.2v7.35c0,0.045,0.015,0.089,0.044,0.125c0.069,0.086,0.195,0.101,0.281,0.032l9.228-7.35 c0.048-0.038,0.075-0.096,0.075-0.156c0-0.11-0.09-0.2-0.2-0.2L4.2,5.23z M4,17.185c0,0.04,0.012,0.08,0.035,0.113 c0.062,0.091,0.187,0.114,0.278,0.052l7.576-5.184c0.054-0.037,0.087-0.099,0.087-0.165c0-0.11-0.09-0.2-0.2-0.2H6.89 c-0.045,0-0.088,0.015-0.123,0.042l-2.69,2.102C4.028,13.983,4,14.041,4,14.103L4,17.185z M4.086,18.342 C4.032,18.379,4,18.441,4,18.506v0.087c0,0.106,0.086,0.192,0.192,0.192H7c0.11,0,0.2-0.09,0.2-0.2v-2.022 c0-0.041-0.012-0.081-0.036-0.114c-0.063-0.091-0.188-0.113-0.278-0.05L4.086,18.342z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/fortinet.svg b/assets/lib/simple-icons/icons/fortinet.svg
index a813f57a..aef08b77 100644
--- a/assets/lib/simple-icons/icons/fortinet.svg
+++ b/assets/lib/simple-icons/icons/fortinet.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Fortinet icon</title><path d="M0 9.785h6.788v4.454H0zm8.666-6.33h6.668v4.453H8.666zm0 12.637h6.668v4.454H8.666zm8.522-6.307H24v4.454h-6.812zM2.792 3.455C1.372 3.814.265 5.404 0 7.425v.506h6.788V3.454zM0 16.091v.554c.24 1.926 1.276 3.466 2.624 3.9h4.188v-4.454zm24-8.184v-.506c-.265-1.998-1.372-3.587-2.792-3.972h-4.02v4.454H24zM21.376 20.57c1.324-.458 2.36-1.974 2.624-3.9v-.554h-6.812v4.454Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Fortinet</title><path d="M0 9.785h6.788v4.454H0zm8.666-6.33h6.668v4.453H8.666zm0 12.637h6.668v4.454H8.666zm8.522-6.307H24v4.454h-6.812zM2.792 3.455C1.372 3.814.265 5.404 0 7.425v.506h6.788V3.454zM0 16.091v.554c.24 1.926 1.276 3.466 2.624 3.9h4.188v-4.454zm24-8.184v-.506c-.265-1.998-1.372-3.587-2.792-3.972h-4.02v4.454H24zM21.376 20.57c1.324-.458 2.36-1.974 2.624-3.9v-.554h-6.812v4.454Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/fortran.svg b/assets/lib/simple-icons/icons/fortran.svg
new file mode 100644
index 00000000..44ae0a8e
--- /dev/null
+++ b/assets/lib/simple-icons/icons/fortran.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Fortran</title><path d="M19.536 0H4.464A4.463 4.463 0 0 0 0 4.464v15.073A4.463 4.463 0 0 0 4.464 24h15.073A4.463 4.463 0 0 0 24 19.536V4.464A4.463 4.463 0 0 0 19.536 0zm1.193 6.493v3.871l-.922-.005c-.507-.003-.981-.021-1.052-.041-.128-.036-.131-.05-.192-.839-.079-1.013-.143-1.462-.306-2.136-.352-1.457-1.096-2.25-2.309-2.463-.509-.089-2.731-.176-4.558-.177L10.13 4.7v5.82l.662-.033c.757-.038 1.353-.129 1.64-.252.306-.131.629-.462.781-.799.158-.352.262-.815.345-1.542.033-.286.07-.572.083-.636.024-.116.028-.117 1.036-.117h1.012v9.3h-2.062l-.035-.536c-.063-.971-.252-1.891-.479-2.331-.311-.601-.922-.871-2.151-.95a11.422 11.422 0 0 1-.666-.059l-.172-.027.02 2.926c.021 3.086.03 3.206.265 3.465.241.266.381.284 2.827.368.05.002.065.246.065 1.041v1.039H3.271v-1.039c0-.954.007-1.039.091-1.041.05-.001.543-.023 1.097-.049.891-.042 1.033-.061 1.244-.167a.712.712 0 0 0 .345-.328c.106-.206.107-.254.107-6.78 0-6.133-.006-6.584-.09-6.737a.938.938 0 0 0-.553-.436c-.104-.032-.65-.07-1.215-.086l-1.026-.027V2.622h17.458v3.871z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/fossa.svg b/assets/lib/simple-icons/icons/fossa.svg
index 8bb15df5..cc680e56 100644
--- a/assets/lib/simple-icons/icons/fossa.svg
+++ b/assets/lib/simple-icons/icons/fossa.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Fossa icon</title><path d="M3.744,12.816c0,0-0.033-0.092,0.059-0.164c0.118-0.085,0.269-0.17,0.354-0.072 l0.007,0.007l0,0l0.007,0.007l0,0l0,0c0.066,0.072,0.144,0.098,0.223,0.098c0.17,0,0.347-0.118,0.426-0.17 c0.19-0.131,0.321-0.242,0.347-0.583v-0.013c0-0.007,0-0.105,0.085-0.124c0.033-0.007,0.066,0.013,0.092,0.033 c0.066,0.059,0.144,0.203,0.131,0.413c-0.026,0.308-0.177,0.583-0.446,0.819c-0.02,0.02-0.039,0.033-0.059,0.052 c-0.164,0.131-0.321,0.249-0.465,0.347c-0.203,0.111-0.387-0.059-0.478-0.17c-0.039-0.052-0.072-0.098-0.124-0.177l-0.013-0.026 C3.836,12.999,3.784,12.907,3.744,12.816L3.744,12.816L3.744,12.816L3.744,12.816z M3.089,14.801 c0.02,0.013,0.039,0.026,0.059,0.039c0.026,0.02,0.052,0.033,0.085,0.046c0.072,0.033,0.144,0.02,0.269-0.013 c0.033-0.007,0.066-0.013,0.098-0.02c-0.157-0.144-0.275-0.314-0.36-0.505C3.233,14.5,3.194,14.657,3.089,14.801L3.089,14.801 L3.089,14.801z M4.95,3.197C4.95,3.191,4.943,3.191,4.95,3.197C4.871,3.099,4.806,3.001,4.753,2.903 c0.02,0.177,0.052,0.354,0.085,0.511c0.013,0.059,0.02,0.111,0.033,0.164c0.059-0.066,0.118-0.124,0.17-0.183 C5.009,3.263,4.95,3.197,4.95,3.197L4.95,3.197L4.95,3.197z M2.113,13.327c0.007-0.013,0.007-0.033,0.007-0.059v-0.02 c-0.007-0.072,0-0.144,0.007-0.229c0.007-0.105,0.026-0.203,0.052-0.308l0,0c0-0.007,0-0.013,0.007-0.02 c0.007-0.02,0.013-0.066,0.007-0.079l0,0c-0.079-0.059-0.17-0.111-0.236-0.144c0.013,0.151,0.007,0.314,0,0.406v0.026v0.013v0.007 c-0.007,0.098-0.013,0.21,0.138,0.373C2.093,13.307,2.106,13.314,2.113,13.327L2.113,13.327L2.113,13.327z M16.691,6.532 c0.079,0,0.157-0.007,0.236-0.02c0.124-0.039,0.21-0.059,0.223-0.066c0.688-0.203,1.258-0.642,1.52-1.173 c0.183-0.478,0.164-0.845,0.144-1.107c-0.007-0.059-0.007-0.118-0.007-0.177c-0.007-0.459,0.563-1.258,0.681-1.422 c0.413-0.681,0.55-1.265,0.413-1.684c-0.124-0.373-0.432-0.498-0.439-0.505l0,0h-0.007c-0.118-0.052-0.236-0.098-0.36-0.131 C18.899,0.197,18.69,0.17,18.473,0.17c-0.858,0-1.795,0.439-2.496,1.179c0,0.007-0.007,0.013-0.013,0.02 c-0.256,0.334-0.662,1.016-0.485,1.821c0.124,0.55,0.426,0.983,0.924,1.33c0.066,0.046,0.098,0.118,0.085,0.197 s-0.059,0.138-0.131,0.164c-0.007,0-0.629,0.236-0.76,0.636c-0.052,0.157-0.02,0.328,0.105,0.518 C15.722,6.041,16.082,6.532,16.691,6.532L16.691,6.532L16.691,6.532L16.691,6.532z M3.03,11.283c0.092,0,0.216-0.052,0.419-0.177 c0.282-0.17,0.563-0.282,0.845-0.328h0.013c0.092-0.02,0.157-0.098,0.157-0.197v-0.007v-0.013 c-0.007-0.072-0.052-0.138-0.124-0.164c-0.007,0-0.013-0.007-0.02-0.007c-0.072-0.026-0.151-0.039-0.236-0.039H4.079 c-0.111,0-0.177,0.02-0.249,0.046c-0.059,0.02-0.111,0.033-0.177,0.033H3.613c-0.059-0.007-0.118-0.026-0.157-0.046 c-0.046-0.02-0.085-0.033-0.131-0.033c-0.02,0-0.033,0-0.052,0.007c-0.124,0.026-0.256,0.138-0.301,0.183 c0,0-0.007,0.007-0.013,0.007H2.952c-0.079,0.066-0.164,0.138-0.249,0.203l-0.039,0.039c0,0-0.007,0.007-0.007,0.013l-0.013,0.02 c-0.013,0.026-0.02,0.059-0.02,0.085c0,0.052,0.02,0.105,0.059,0.144c0.007,0.007,0.013,0.013,0.02,0.02l0,0 c0.007,0.007,0.013,0.013,0.02,0.02C2.867,11.224,2.932,11.283,3.03,11.283L3.03,11.283L3.03,11.283L3.03,11.283z M12.675,23.174 c0.007,0,0.013-0.007,0.02-0.007c0.983-0.393,1.946-0.891,2.863-1.487l0.039-0.026c0.052-0.039,0.092-0.098,0.092-0.164l0,0v-0.007 v-0.013c0-0.013,0-0.02-0.007-0.033c0-0.007-0.007-0.013-0.007-0.02l-0.007-0.013c-0.21-0.583-0.505-1.854-0.131-3.774 c0.098-0.491,0.151-0.963,0.157-1.402v-0.007v-0.02v-0.007v-0.013C15.682,16.079,15.597,16,15.499,16 c-0.066,0-0.124,0.033-0.157,0.079l-0.007,0.013v0.007l-0.013,0.013c-0.105,0.197-0.236,0.4-0.387,0.616 c-1.566,2.247-2.745,4.134-2.523,6.283c0.013,0.105,0.098,0.177,0.197,0.177C12.629,23.188,12.655,23.181,12.675,23.174 L12.675,23.174L12.675,23.174z M9.753,23.987l0.033-0.007c0.367-0.052,1.114-0.19,2.07-0.505l0,0l0.013-0.007h0.007 c0.007,0,0.013-0.007,0.02-0.007l0,0c0.072-0.033,0.118-0.105,0.118-0.183l0,0v-0.013l-0.007-0.026 c-0.321-2.359,0.924-4.364,2.575-6.735c1.055-1.514,0.773-2.247,0.465-2.667c-0.301-0.36-0.688-0.537-1.16-0.537 c-0.216,0-0.452,0.039-0.701,0.118c-0.216,0.072-0.439,0.138-0.668,0.197c-0.229,0.052-0.472,0.098-0.721,0.138 c-0.164,0.026-0.328,0.046-0.485,0.066c-0.812,0.105-1.586,0.203-2.49,0.675l-0.013,0.013H8.796 c-0.072,0.033-0.138,0.072-0.21,0.105l0,0H8.58c-0.007,0.007-0.02,0.007-0.026,0.013H8.547c-0.02,0.013-0.033,0.026-0.046,0.046 c0,0-0.007,0.007-0.007,0.013v0.007l-0.013,0.013c-0.013,0.026-0.02,0.059-0.02,0.085c0,0.059,0.026,0.118,0.072,0.157H8.58v0.033 c0.609,0.38,1.048,1.317,1.114,2.385c0.085,1.369-0.039,2.634-0.151,3.741v0.013c-0.118,1.153-0.21,2.057-0.033,2.706v0.007v0.007 c0,0.013,0.007,0.033,0.013,0.046C9.556,23.954,9.628,24,9.707,24C9.74,23.987,9.746,23.987,9.753,23.987L9.753,23.987 L9.753,23.987z M4.223,4.226c0.007-0.007,0.007-0.007,0.013-0.013l0,0V4.206C4.328,4.095,4.413,3.99,4.498,3.898 c0.007-0.007,0.007-0.007,0.013-0.013c0.026-0.033,0.046-0.079,0.046-0.124V3.754V3.741v-0.02C4.544,3.643,4.531,3.558,4.511,3.486 c-0.085-0.426-0.183-0.95,0-1.382c0-0.229,0.039-0.465,0.066-0.675V1.415c0.02-0.124,0.039-0.249,0.052-0.373 c0.039-0.393-0.033-0.721-0.197-0.898C4.341,0.046,4.229,0,4.092,0h-0.02C4.007,0,3.915,0,3.817,0.092 C3.751,0.17,3.699,0.321,3.659,0.511C3.607,0.786,3.607,1.094,3.62,1.271c0.066,0.662,0.052,0.747,0,0.891 C3.594,2.228,3.561,2.319,3.548,2.693C3.535,2.975,3.653,3.368,3.771,3.741v0.007C3.81,3.872,3.849,4.003,3.882,4.134l0,0 c0,0.007,0.007,0.02,0.007,0.026v0.007c0.033,0.079,0.105,0.131,0.19,0.131C4.131,4.292,4.183,4.265,4.223,4.226L4.223,4.226 L4.223,4.226z M4.465,6.565c0-0.007,0.007-0.02,0.007-0.026l0,0V6.532C4.505,6.296,4.531,5.982,4.55,5.51 c0.007-0.138,0.026-0.288,0.052-0.439l0,0l0.02-0.085c0-0.013,0.007-0.026,0.007-0.039V4.94V4.927 C4.616,4.822,4.531,4.744,4.432,4.744c-0.059,0-0.118,0.026-0.151,0.072c0,0-0.007,0.007-0.007,0.013v0.007 C4.203,4.927,4.157,4.986,4.144,4.999L4.138,5.006C4.072,5.078,4.013,5.17,3.961,5.274c-0.124,0.242-0.183,0.485-0.19,0.505v0.007 C3.744,5.89,3.718,6.002,3.692,6.12c0,0.072,0.02,0.138,0.059,0.203C3.823,6.454,3.961,6.572,4.17,6.69l0.007,0.007 c0.007,0.007,0.013,0.007,0.02,0.013c0.026,0.013,0.052,0.02,0.085,0.02C4.36,6.716,4.446,6.657,4.465,6.565L4.465,6.565 L4.465,6.565z M5.428,2.922L5.428,2.922l0.013-0.013C5.625,2.752,5.828,2.614,6.057,2.49h0.007 c0.066-0.033,0.098-0.105,0.098-0.177V2.306V2.293c-0.007-0.039-0.02-0.079-0.046-0.111C5.9,1.926,5.73,1.579,5.586,1.271 L5.572,1.245C5.527,1.153,5.481,1.061,5.441,0.976l0,0l0,0l-0.02-0.039C5.389,0.871,5.317,0.826,5.245,0.826 c-0.066,0-0.124,0.033-0.157,0.079c0,0-0.007,0.007-0.007,0.013v0.007L5.068,0.937c-0.013,0.026-0.02,0.046-0.02,0.072L5.042,1.075 C5.029,1.212,5.009,1.343,4.989,1.468C4.957,1.697,4.924,1.913,4.924,2.123C4.93,2.405,4.996,2.634,5.14,2.85v0.007 c0,0.007,0.007,0.007,0.013,0.013c0.039,0.052,0.098,0.079,0.164,0.079C5.35,2.968,5.396,2.948,5.428,2.922L5.428,2.922 L5.428,2.922z M5.487,10.49L5.487,10.49c0.249-0.675,0.727-1.343,1.114-1.887C6.758,8.38,6.916,8.17,7.02,7.993 c0.839-1.363,1.297-2.64,1.304-2.654c0-0.007,0.007-0.013,0.007-0.02c0.387-0.865,0.865-1.468,1.461-1.848 c0.524-0.334,1.133-0.511,1.972-0.57h0.013c0.301-0.02,0.544-0.098,0.721-0.242V2.654h0.007l0.013-0.013h0.007 c0.013-0.013,0.033-0.026,0.039-0.039c0.026-0.033,0.046-0.079,0.046-0.124V2.47V2.457c-0.007-0.092-0.085-0.17-0.177-0.177 l-0.059-0.007c-0.242-0.026-0.505-0.039-0.786-0.039c-0.577,0-1.225,0.059-1.867,0.17C9.517,2.437,9.301,2.457,9.052,2.457 c-0.197,0-0.387-0.013-0.577-0.02c-0.183-0.007-0.373-0.02-0.557-0.02c-0.079,0-0.144,0-0.21,0.007 C7.512,2.431,7.315,2.464,7.112,2.516l0,0L7.06,2.529H7.053C6.306,2.745,5.658,3.407,5.265,4.331c0,0,0,0.007-0.007,0.007 c-0.17,0.4-0.269,0.819-0.288,1.179c-0.046,0.917-0.098,1.317-0.242,1.69V7.22L4.714,7.233C4.649,7.397,4.57,7.554,4.472,7.758 l-0.02,0.046C4.314,8.072,4.131,8.387,3.948,8.695L3.895,8.78C3.869,8.819,3.849,8.858,3.823,8.898 C3.666,9.166,3.509,9.441,3.41,9.651v0.013L3.397,9.677c0,0.007-0.007,0.013-0.007,0.013l0,0C3.384,9.71,3.378,9.736,3.378,9.756 c0,0.085,0.052,0.157,0.124,0.183c0.007,0,0.013,0.007,0.02,0.007l0.013,0.007c0.026,0.013,0.052,0.02,0.079,0.033 c0.013,0.007,0.033,0.013,0.039,0.013c0.013,0,0.033-0.007,0.046-0.013h0.007c0.079-0.026,0.197-0.059,0.38-0.059h0.007 c0.216,0,0.413,0.059,0.583,0.164c0.131,0.085,0.308,0.249,0.478,0.446c0.039,0.046,0.092,0.072,0.157,0.072 C5.382,10.621,5.455,10.568,5.487,10.49L5.487,10.49L5.487,10.49z M6.057,12.593L6.057,12.593c0.013,0,0.02-0.007,0.026-0.007H6.09 c0.432-0.105,0.786-0.229,1.009-0.753c0.242-0.563,0.406-1.245,0.563-1.907l0.052-0.21c0.262-1.081,0.524-2.025,1.088-2.673 l0.007-0.007c0.02-0.026,0.046-0.052,0.066-0.072l0,0c0.007-0.007,0.007-0.007,0.013-0.013c0.007-0.007,0.007-0.007,0.013-0.013 C9.156,6.696,9.53,6.565,9.956,6.565c0.21,0,0.426,0.033,0.649,0.092l0,0h0.007c0.039,0.013,0.079,0.02,0.118,0.033 c0.203,0.059,0.439,0.131,0.688,0.131l0,0c0.223,0,0.426-0.052,0.629-0.17l0,0h0.007c0.013-0.007,1.533-0.839,2.346-3.355V3.289 c0.007-0.013,0.007-0.033,0.013-0.046l0,0l0.013-0.033V3.204l0.007-0.013c0.007-0.02,0.013-0.033,0.02-0.052l0.013-0.033 c0.007-0.02,0.007-0.033,0.007-0.052V3.047V3.034c-0.013-0.105-0.098-0.177-0.197-0.177c-0.039,0-0.072,0.013-0.105,0.033 l-0.013,0.007c-0.544,0.36-1.094,0.393-1.704,0.4c-0.229,0-0.432,0.007-0.622,0.02h-0.013c-1.304,0.092-2.333,0.491-3.086,2.169 C8.698,5.569,8.233,6.847,7.394,8.21c-0.111,0.183-0.269,0.4-0.426,0.622L6.935,8.845c-0.59,0.819-1.389,1.946-1.173,2.804v0.013 c0.059,0.21,0.079,0.413,0.066,0.603l0,0v0.007v0.007c0,0.033-0.007,0.059-0.013,0.092l0,0v0.007v0.02 c0,0.111,0.092,0.203,0.203,0.203C6.031,12.593,6.044,12.593,6.057,12.593L6.057,12.593L6.057,12.593z M15.066,7.338L15.066,7.338 l0.013-0.007h0.007h0.007c0.183-0.118,0.387-0.229,0.616-0.341l0,0c0.007,0,0.013-0.007,0.026-0.013 c0.066-0.033,0.098-0.105,0.098-0.177V6.794V6.781c-0.007-0.052-0.033-0.105-0.079-0.138l0,0c-0.229-0.164-0.36-0.341-0.387-0.38 c-0.197-0.301-0.249-0.596-0.157-0.878c0.072-0.216,0.229-0.419,0.472-0.596h0.007c0.007,0,0.007-0.007,0.013-0.007l0,0 c0.046-0.039,0.072-0.092,0.072-0.151V4.626V4.613c-0.007-0.052-0.026-0.092-0.066-0.131l-0.052-0.046l0.007-0.007 c-0.229-0.249-0.393-0.518-0.498-0.812l0,0l-0.02-0.079c-0.026-0.085-0.105-0.144-0.19-0.144c-0.066,0-0.124,0.033-0.157,0.079 c-0.007,0.007-0.013,0.02-0.02,0.033c-0.007,0.007-0.007,0.02-0.013,0.026c0,0.007,0,0.007-0.007,0.013v0.007v0.007 c-0.17,0.668-0.105,1.409-0.046,2.195v0.007c0.039,0.459,0.079,0.937,0.066,1.402v0.007v0.013v0.007 c0,0.111,0.092,0.197,0.203,0.197C15.001,7.364,15.04,7.351,15.066,7.338L15.066,7.338L15.066,7.338z M5.075,16.164 c0.727,0,1.101-0.308,1.664-0.767l0.026-0.02c0.079-0.066,0.157-0.131,0.242-0.197h0.007c0.033-0.026,0.059-0.046,0.092-0.072 l0.007-0.007h0.007c0.341-0.269,0.832-0.622,1.546-0.976c0.439-0.229,0.871-0.393,1.363-0.511c0.426-0.105,0.826-0.157,1.258-0.21 l0.026-0.007c0.151-0.02,0.308-0.039,0.465-0.066c0.465-0.066,0.911-0.17,1.317-0.314c1.638-0.57,2.68-1.723,2.929-3.25 C16.219,8.557,16.534,8,17.012,7.437c0.039-0.046,0.085-0.098,0.144-0.164c0.033-0.039,0.052-0.085,0.052-0.138V7.129V7.115 c-0.013-0.105-0.098-0.183-0.197-0.183c-0.026,0-0.046,0.007-0.072,0.013l-0.092,0.033V6.971c-0.649,0.216-1.972,0.74-2.28,1.474 c-0.007,0.026-0.02,0.046-0.026,0.072c-0.138,0.347-0.328,0.655-0.583,0.93c-0.812,0.878-1.612,1.088-2.391,1.291 c-0.747,0.197-1.448,0.38-2.143,1.179l-0.007,0.007c-0.007,0.007-0.426,0.446-1.147,1.704c-0.406,0.714-1.094,1.271-1.946,1.566 c-0.4,0.144-0.826,0.216-1.232,0.216c-0.36,0-0.708-0.059-0.989-0.177l0,0H4.098H4.085L4.072,15.22 c-0.079-0.033-0.157-0.052-0.236-0.052c-0.085,0-0.164,0.02-0.236,0.033c-0.072,0.02-0.157,0.039-0.242,0.039H3.332H3.325h-0.02 H3.292c-0.059,0.007-0.111,0.033-0.144,0.079c0,0-0.007,0.007-0.007,0.013v0.007l-0.013,0.013c-0.013,0.026-0.02,0.059-0.02,0.085 c0,0.059,0.026,0.118,0.072,0.157L3.188,15.6c0.046,0.039,0.098,0.072,0.151,0.105C3.797,16,4.38,16.144,5.055,16.151h0.02V16.164 L5.075,16.164z M13.559,2.516c-0.111-0.052-0.236-0.105-0.373-0.144c-0.02-0.007-0.039-0.013-0.066-0.02 c-0.013,0.046-0.059,0.144-0.059,0.144c-0.013,0.033-0.026,0.072-0.026,0.111c0,0.151,0.118,0.269,0.269,0.269 c0.02,0,0.033,0,0.052-0.007c0.013,0,0.02-0.007,0.033-0.007c0.151-0.039,0.295-0.098,0.439-0.177 C13.749,2.627,13.664,2.568,13.559,2.516L13.559,2.516L13.559,2.516z M16.285,21.183L16.285,21.183 c0.007-0.007,0.013-0.013,0.02-0.013l0.013-0.007c0.334-0.242,0.668-0.505,0.983-0.773c1.324-1.12,2.464-2.418,3.394-3.859v-0.007 c0.007-0.007,0.013-0.02,0.02-0.026c0.013-0.026,0.026-0.059,0.026-0.092V16.4v-0.013c-0.007-0.066-0.046-0.124-0.105-0.157h-0.007 l0,0c-0.197-0.098-0.387-0.229-0.557-0.4c-0.701-0.688-1.14-1.894-1.297-3.577l-0.013-0.111c-0.052-0.59-0.164-1.815-0.747-2.732 l0,0c-0.256-0.373-0.505-0.767-0.727-1.173l-0.007-0.013c-0.039-0.059-0.098-0.092-0.17-0.092c-0.066,0-0.124,0.033-0.157,0.079 l0,0c0,0.007-0.007,0.007-0.007,0.013l-0.013,0.02c-0.236,0.413-0.393,0.904-0.511,1.592c-0.19,1.166-0.806,2.149-1.769,2.844 c-0.007,0-0.007,0.007-0.013,0.007l-0.007,0.007c-0.013,0.013-0.026,0.02-0.039,0.039c0,0-0.007,0.007-0.007,0.013v0.007 l-0.013,0.013c-0.013,0.026-0.02,0.059-0.02,0.085c0,0.079,0.046,0.151,0.124,0.183l0.039,0.02 c0.256,0.118,0.485,0.288,0.675,0.518c0.708,0.839,0.911,2.352,0.557,4.147c-0.256,1.297-0.177,2.274-0.066,2.863 c0.033,0.17,0.072,0.334,0.118,0.485c0,0.007,0,0.007,0.007,0.013c0.026,0.085,0.105,0.138,0.19,0.138 C16.219,21.209,16.252,21.202,16.285,21.183L16.285,21.183L16.285,21.183z M21.127,15.817l0.007-0.013l0.007-0.013 c0.609-1.068,0.95-1.946,1.101-2.378c0-0.007,0.007-0.013,0.007-0.013c0.007-0.02,0.007-0.039,0.007-0.059v-0.007V13.32 c-0.007-0.066-0.046-0.124-0.105-0.157c-0.963-0.459-1.88-1.14-2.726-2.011c0,0-0.02-0.02-0.026-0.026 c-0.033-0.033-0.085-0.046-0.131-0.046c-0.066,0-0.124,0.033-0.157,0.079c0,0-0.007,0.007-0.007,0.013v0.007l-0.013,0.013 c-0.013,0.026-0.02,0.059-0.02,0.085v0.02v0.007l0.007,0.02c0.046,0.308,0.072,0.583,0.092,0.78l0.013,0.111 c0.098,1.081,0.38,2.529,1.153,3.302c0.157,0.157,0.328,0.282,0.498,0.36l0.059,0.026c0.026,0.013,0.052,0.013,0.079,0.013 C21.029,15.902,21.088,15.869,21.127,15.817L21.127,15.817L21.127,15.817z M2.965,14.264L2.965,14.264v-0.007v-0.007v-0.013l0,0 c-0.013-0.105-0.085-0.197-0.19-0.229c-0.007,0-0.013,0-0.02-0.007c-0.072-0.02-0.151-0.046-0.236-0.085H2.513 c-0.098-0.046-0.203-0.105-0.308-0.17c-0.046-0.026-0.098-0.066-0.157-0.111l-0.007-0.007c-0.033-0.02-0.072-0.039-0.111-0.039 c-0.059,0-0.118,0.033-0.151,0.079l0,0c-0.007,0.007-0.007,0.013-0.013,0.02l0,0c-0.013,0.026-0.02,0.059-0.02,0.092 c0,0.02,0,0.033,0.007,0.046c0,0.007,0,0.007,0.007,0.013c0.007,0.02,0.013,0.046,0.02,0.066c0.098,0.275,0.256,0.511,0.446,0.668 l0,0c0.151,0.124,0.308,0.19,0.439,0.183c0.013,0,0.026-0.007,0.039-0.007c0.059-0.013,0.111-0.039,0.151-0.092 C2.952,14.539,2.971,14.395,2.965,14.264L2.965,14.264L2.965,14.264z M5.088,11.387v-0.013c-0.007-0.079-0.059-0.144-0.138-0.17 H4.943c-0.098-0.026-0.21-0.039-0.334-0.039c-0.039,0-0.085,0-0.124,0.007c-0.262,0.02-0.537,0.118-0.819,0.288 c-0.262,0.164-0.472,0.236-0.649,0.236c-0.236,0-0.393-0.138-0.577-0.314c-0.079-0.079-0.164-0.118-0.262-0.118 c-0.066,0-0.131,0.02-0.203,0.052c-0.013,0.007-0.052,0.039-0.085,0.066c-0.013,0.013-0.02,0.026-0.033,0.039l0,0l-0.007,0.007 c0,0-0.007,0.007-0.007,0.013v0.007l-0.013,0.013c-0.013,0.026-0.02,0.059-0.02,0.085c0,0.105,0.079,0.19,0.177,0.197h0.013 c0.098,0.007,0.197,0.052,0.295,0.124c0.393,0.295,0.314,0.544,0.249,0.793c-0.013,0.039-0.02,0.079-0.033,0.124l-0.007,0.02 c-0.02,0.085-0.033,0.164-0.039,0.242C2.46,13.117,2.46,13.183,2.46,13.242c0.013,0.236,0.118,0.308,0.21,0.36 c0.013,0.007,0.026,0.013,0.039,0.02s0.033,0.013,0.052,0.013c0.052,0,0.098-0.033,0.118-0.079c0-0.007,0.007-0.013,0.007-0.02 c0-0.007,0.007-0.013,0.013-0.02V13.51c0-0.007,0.007-0.007,0.007-0.013l0.013-0.013c0.007-0.007,0.013-0.013,0.02-0.013 c0.007-0.007,0.013-0.007,0.02-0.013c0.007,0,0.007-0.007,0.013-0.007c0.007,0,0.007-0.007,0.013-0.007h0.007 c0.007,0,0.007-0.007,0.013-0.007l0,0h0.007h0.007H3.03h0.02h0.02h0.02h0.02c0.007,0,0.013,0,0.02,0.007h0.007l0.013,0.007 c0.007,0,0.013,0.007,0.026,0.013c0.007,0,0.007,0.007,0.013,0.007c0.007,0.007,0.013,0.007,0.02,0.013l0.013,0.013l0.013,0.013 c0.007,0.007,0.013,0.013,0.013,0.02l0,0c0,0.007,0.007,0.007,0.007,0.013v0.007c0,0.007,0.007,0.007,0.007,0.013l0.007,0.007 c0,0.007,0.007,0.007,0.007,0.013c0.02,0.059,0.052,0.098,0.105,0.131c0.059,0.033,0.131,0.052,0.223,0.052 c0.052,0,0.111-0.007,0.17-0.02c0.066-0.02,0.098-0.052,0.098-0.072c0.007-0.026-0.013-0.072-0.046-0.111l-0.007-0.007 c-0.013-0.013-0.02-0.026-0.033-0.046c-0.039-0.059-0.079-0.105-0.131-0.183l-0.02-0.033c-0.072-0.105-0.131-0.21-0.177-0.321 l-0.02-0.046c-0.131-0.328-0.124-0.642,0.02-0.865c0.111-0.17,0.288-0.262,0.505-0.269h0.007c0.262,0,0.36,0.223,0.406,0.373l0,0 c0.02,0.072,0.085,0.118,0.164,0.118c0.033,0,0.059-0.007,0.079-0.02c0.007-0.007,0.013-0.007,0.02-0.013s0.013-0.007,0.02-0.013 c0.144-0.098,0.183-0.124,0.197-0.321c0-0.111,0.046-0.262,0.164-0.36c0.007-0.007,0.013-0.007,0.02-0.013 c0.046-0.039,0.072-0.092,0.072-0.151C5.088,11.394,5.088,11.394,5.088,11.387L5.088,11.387L5.088,11.387z M14.293,5.772 c-0.007-0.118-0.02-0.236-0.026-0.354V5.405c-0.013-0.105-0.098-0.183-0.197-0.183c-0.066,0-0.124,0.033-0.157,0.079 c0,0-0.007,0.007-0.007,0.013V5.32l-0.013,0.013c-0.649,1.002-1.33,1.474-1.559,1.618c-0.059,0.269-0.288,1.029-1.133,1.586 c-0.02,0.013-0.039,0.026-0.059,0.039c-0.013,0.007-0.026,0.013-0.039,0.026c-0.871,0.531-1.789,0.426-1.789,0.426l0,0 c-0.865-0.124-1.107,0.432-1.199,0.78l-0.052,0.21c-0.164,0.681-0.328,1.382-0.59,1.979c-0.328,0.76-0.904,0.898-1.409,1.016 c-0.295,0.072-0.57,0.138-0.793,0.314c-0.02,0.02-0.039,0.039-0.066,0.052c-0.164,0.131-0.321,0.249-0.472,0.347l-0.046,0.033 c-0.295,0.19-0.57,0.314-0.812,0.367l-0.033,0.007c-0.007,0-0.013,0-0.02,0.007H3.81c-0.092,0.02-0.151,0.105-0.151,0.197 c0,0.039,0.013,0.079,0.033,0.111l0,0c0.007,0.007,0.013,0.013,0.02,0.026c0,0,0,0.007,0.007,0.007 c0.124,0.157,0.295,0.282,0.511,0.373l0.013,0.007c0.242,0.098,0.531,0.151,0.839,0.151c0.924,0,2.201-0.491,2.824-1.579 c0.727-1.265,1.16-1.736,1.206-1.782c0.773-0.891,1.572-1.101,2.346-1.304c0.753-0.197,1.461-0.38,2.195-1.173 c0.223-0.236,0.387-0.498,0.498-0.799c0.007-0.026,0.02-0.052,0.026-0.072C14.437,7.535,14.365,6.637,14.293,5.772L14.293,5.772 L14.293,5.772z M3.469,8.799c0-0.007,0-0.02-0.007-0.026V8.767C3.417,8.675,3.364,8.55,3.325,8.393V8.38 c-0.02-0.052-0.072-0.098-0.131-0.098c-0.046,0-0.085,0.02-0.111,0.052l0,0c0,0.007-0.007,0.013-0.007,0.013l0,0 c0,0,0,0.007-0.007,0.007C3.063,8.36,3.063,8.373,3.063,8.38C2.998,8.577,2.932,8.753,2.86,8.911 C2.814,9.009,2.768,9.094,2.722,9.179l0,0l0,0c0,0,0,0.007-0.007,0.007l0,0c0,0,0,0,0,0.007l0,0c0,0.007-0.007,0.013-0.007,0.026 c0,0.013,0,0.02,0.007,0.033c0,0,0,0.007,0.007,0.007c0.013,0.013,0.02,0.026,0.033,0.046l0,0C2.801,9.382,2.88,9.461,2.971,9.461 c0.098,0,0.197-0.085,0.242-0.17c0-0.007,0.007-0.007,0.007-0.013C3.292,9.14,3.378,8.989,3.463,8.845 c0-0.007,0.007-0.013,0.007-0.013l0,0c0.007-0.013,0.007-0.02,0.007-0.033C3.469,8.806,3.469,8.806,3.469,8.799L3.469,8.799 L3.469,8.799L3.469,8.799z M2.624,9.651c0-0.007-0.007-0.007-0.007-0.013c0,0,0-0.007-0.007-0.007 c-0.02-0.026-0.052-0.046-0.085-0.046c-0.033,0-0.066,0.013-0.085,0.039l0,0c0,0,0,0.007-0.007,0.007c0,0,0,0,0,0.007l0,0 c0,0,0,0.007-0.007,0.007l0,0c-0.164,0.328-0.197,0.603-0.21,0.819v0.013l0,0c0,0.059,0.046,0.105,0.105,0.105 c0.02,0,0.039-0.007,0.059-0.02l0.007-0.007c0.026-0.02,0.052-0.039,0.072-0.059l0.007-0.007c0.033-0.026,0.105-0.085,0.183-0.17 c0,0,0,0,0.007-0.007l0,0l0.007-0.007l0,0C2.834,10.149,2.762,9.907,2.624,9.651L2.624,9.651L2.624,9.651z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Fossa</title><path d="M3.398 9.516a.123.123 0 0 1 .036.087v.693a.123.123 0 0 1-.123.123H1.018v1.155h1.766a.123.123 0 0 1 .123.123v.693a.123.123 0 0 1-.123.12H1.018v1.9a.123.123 0 0 1-.124.123h-.77A.123.123 0 0 1 0 14.41V9.6a.123.123 0 0 1 .123-.12h3.188c.033 0 .064.013.087.036zm5.829 1.803a3.252 3.252 0 0 1 0 1.366c-.053.243-.14.477-.256.696a2.4 2.4 0 0 1-.45.621 2.074 2.074 0 0 1-.719.436 2.763 2.763 0 0 1-.992.17c-.34.005-.68-.053-1-.17a2.073 2.073 0 0 1-.718-.436 2.48 2.48 0 0 1-.462-.62 2.651 2.651 0 0 1-.26-.697 3.248 3.248 0 0 1 0-1.366c.054-.242.142-.475.26-.693.121-.23.278-.44.463-.62a2.12 2.12 0 0 1 .719-.441 2.73 2.73 0 0 1 .998-.173c.339-.005.675.054.992.173.266.097.51.247.718.44.183.182.335.392.451.621.116.219.202.452.256.693zm-.96.675c0-.111-.01-.222-.028-.332a2.204 2.204 0 0 0-.123-.426 1.706 1.706 0 0 0-.242-.434 1.163 1.163 0 0 0-.431-.325 1.458 1.458 0 0 0-.633-.126 1.503 1.503 0 0 0-.65.134c-.165.07-.312.18-.428.317a1.8 1.8 0 0 0-.243.437c-.058.137-.1.28-.124.426a1.953 1.953 0 0 0 .123 1.091c.06.158.143.306.246.44.116.141.263.253.43.328.202.093.423.139.646.134v.006c.219.003.435-.044.633-.138.165-.076.31-.188.425-.328.105-.134.188-.283.248-.442a2.048 2.048 0 0 0 .152-.762zm5.5.385a.954.954 0 0 0-.242-.27 4.435 4.435 0 0 0-.278-.21 2.08 2.08 0 0 0-.346-.172 8.157 8.157 0 0 0-.335-.134l-.353-.123a7.626 7.626 0 0 1-.368-.13 2.925 2.925 0 0 1-.268-.126.601.601 0 0 1-.224-.177.415.415 0 0 1-.067-.217c.015-.312.243-.469.685-.469.444.027.88.137 1.284.325a.123.123 0 0 0 .165-.072l.268-.628a.112.112 0 0 0-.058-.166 4.31 4.31 0 0 0-1.736-.41 1.735 1.735 0 0 0-1.183.397 1.353 1.353 0 0 0-.45 1.074c0 .532.25.933.751 1.203a6.37 6.37 0 0 0 1.039.382c.225.06.439.158.632.288a.401.401 0 0 1 .173.415.493.493 0 0 1-.254.349c-.17.093-.361.138-.554.13a3.273 3.273 0 0 1-1.353-.36.116.116 0 0 0-.093 0 .123.123 0 0 0-.07.064l-.332.629a.126.126 0 0 0 0 .093.11.11 0 0 0 .058.072c.57.297 1.204.451 1.847.45.466.019.924-.127 1.294-.411a1.387 1.387 0 0 0 .549-1.039 1.282 1.282 0 0 0-.18-.757zm4.637 0a.954.954 0 0 0-.242-.27 4.465 4.465 0 0 0-.278-.21 2.077 2.077 0 0 0-.346-.172 8.123 8.123 0 0 0-.335-.134l-.353-.123a7.545 7.545 0 0 1-.368-.13 2.925 2.925 0 0 1-.268-.126.601.601 0 0 1-.224-.177.415.415 0 0 1-.072-.217c.014-.312.242-.469.685-.469.446.027.883.137 1.288.325a.123.123 0 0 0 .166-.072l.267-.628a.11.11 0 0 0-.015-.14.11.11 0 0 0-.042-.026 4.31 4.31 0 0 0-1.74-.41c-.43-.02-.852.122-1.183.397a1.353 1.353 0 0 0-.451 1.074c0 .532.25.933.751 1.203.335.157.682.285 1.039.382.224.06.437.158.63.288a.404.404 0 0 1 .173.415.491.491 0 0 1-.256.353c-.169.092-.36.137-.551.13a3.273 3.273 0 0 1-1.353-.361.116.116 0 0 0-.093 0 .123.123 0 0 0-.073.061l-.332.629a.126.126 0 0 0 0 .093.11.11 0 0 0 .057.072c.57.297 1.205.451 1.848.45.465.018.921-.127 1.29-.41a1.388 1.388 0 0 0 .55-1.04 1.276 1.276 0 0 0-.04-.422 1.534 1.534 0 0 0-.129-.335zM24 14.452a.094.094 0 0 1-.01.04.071.071 0 0 1-.065.041h-.902a.16.16 0 0 1-.17-.115l-.436-1.068h-1.58l-.431 1.062a.168.168 0 0 1-.171.115h-.916a.07.07 0 0 1-.066-.04.1.1 0 0 1-.007-.083l2.208-4.924a.19.19 0 0 1 .15-.065.183.183 0 0 1 .165.066l2.222 4.93a.098.098 0 0 1 .009.041zm-1.93-1.912l-.451-1.133-.45 1.133h.901z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/fossilscm.svg b/assets/lib/simple-icons/icons/fossilscm.svg
index df4342de..c5788525 100644
--- a/assets/lib/simple-icons/icons/fossilscm.svg
+++ b/assets/lib/simple-icons/icons/fossilscm.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Fossil SCM icon</title><path d="M12.571 0c-.699.022-2.041.555-3.458 1.419C7.464 2.42 6.258 3.538 6.16 4.108c-.008.009-.019.014-.026.023-.563.746.203 2.277 1.711 3.414 1.408 1.063 2.958 1.397 3.617.832.518-.09 1.227-1.776 1.627-3.94.383-2.054.35-3.812-.045-4.214-.006-.02.001-.048-.01-.066-.069-.113-.23-.163-.463-.156zm-2.277 2.936c-.164.193-.329.383-.492.605-.217.296-.403.587-.568.866a5.705 5.705 0 00-.908-.432 14.052 14.052 0 001.785-.914c.067-.04.118-.084.183-.125zm.912 1.084c-.004.024-.01.043-.015.066a16.33 16.33 0 00-.227 1.78 6.106 6.106 0 00-.654-.674c.215-.241.436-.507.652-.801.093-.127.16-.246.244-.371zm-3.14 4.002c-.41-.075-.968 1.14-1.246 2.706-.276 1.566-.164 2.897.246 2.969.41.072.972-1.141 1.248-2.707.276-1.566.164-2.896-.248-2.968zm-5.56 2.708c-.072.032-.026.314.103.625.132.312.297.539.37.51.074-.031.025-.311-.104-.623-.13-.312-.295-.54-.37-.512zm-.602.506c-.035-.005-.061 0-.076.018-.062.067.083.298.322.512.24.215.483.332.545.265.06-.07-.084-.298-.324-.513-.18-.16-.361-.267-.467-.282zm-.224.684c-.118 0-.197.02-.205.058-.017.077.247.205.587.282.343.078.636.078.653.002.017-.08-.248-.204-.588-.284a2.163 2.163 0 00-.447-.058zm1.296.144c-.251.067-.235.954.036 1.98.27 1.03.695 1.81.945 1.745.25-.067.234-.954-.037-1.98-.271-1.03-.694-1.812-.944-1.745zm10.394.186c-.072-.031-.237.198-.369.51-.13.311-.178.59-.103.62.072.032.24-.197.369-.51.13-.31.178-.591.103-.62zm.61.504c-.105.015-.285.12-.463.281-.238.213-.382.445-.323.512.058.064.304-.057.541-.27.238-.213.38-.443.32-.508-.014-.016-.04-.02-.075-.015zm-7.625.593c-.34.035-.86.369-1.326.883-.621.686-.914 1.437-.652 1.672.261.237.978-.125 1.601-.81.621-.689.912-1.437.65-1.674-.065-.059-.16-.082-.273-.07zm7.85.092c-.119 0-.276.018-.446.057-.343.077-.607.202-.59.281.017.077.31.077.652 0 .34-.077.607-.202.588-.28-.008-.037-.087-.057-.205-.058zm-6.13.168a.15.15 0 00-.099.028c-.21.163.143.978.793 1.82.647.841 1.346 1.393 1.557 1.23.21-.16-.148-.977-.795-1.818-.567-.737-1.172-1.251-1.455-1.26zm4.557.043c-.267-.03-.843.36-1.387.96-.62.685-.966 1.386-.767 1.563.196.18.861-.232 1.482-.917.621-.686.964-1.385.768-1.565a.17.17 0 00-.096-.04zm-5.603.133c-.386.082-.48 1.2-.205 2.492.273 1.292.815 2.275 1.2 2.193.387-.081.481-1.2.208-2.49-.276-1.292-.815-2.279-1.203-2.195zm15.448 2.459c-.13-.055-.48.471-.78 1.174-.297.705-.432 1.323-.3 1.378.13.056.48-.47.777-1.173.297-.705.433-1.324.303-1.38zm-9.503.412c-.07.031-.024.31.105.621.132.312.298.542.367.514.072-.031.027-.31-.105-.621-.13-.312-.295-.543-.367-.514zm-.6.506c-.035-.005-.062 0-.078.017-.06.07.087.297.324.51.238.213.481.33.541.264.06-.067-.083-.297-.32-.51-.178-.158-.36-.266-.467-.281zm-.224.681c-.118 0-.195.019-.203.057-.017.079.245.204.585.283.343.077.636.077.653 0 .016-.077-.246-.204-.586-.281a2.133 2.133 0 00-.45-.059zm1.37.21c-.26 0-.476.75-.476 1.675s.215 1.676.477 1.676c.26 0 .478-.75.478-1.676 0-.926-.217-1.676-.478-1.676zm-5.175.333a.235.235 0 00-.133.045c-.294.216.04 1.17.744 2.13.703.962 1.514 1.564 1.807 1.35.295-.215-.035-1.171-.74-2.13-.617-.842-1.315-1.41-1.678-1.395zm13.02.522c-.105-.094-.601.297-1.105.873-.503.575-.824 1.119-.718 1.213.108.093.603-.298 1.107-.873.504-.576.825-1.12.717-1.213zm-11.014.443c-.113-.005-.194.019-.23.074-.144.223.46.875 1.353 1.453.89.58 1.73.872 1.875.649.146-.223-.46-.877-1.35-1.457-.667-.434-1.308-.704-1.648-.719zM8.73 20.451c-.266 0-.48.75-.48 1.675 0 .926.214 1.676.48 1.676s.482-.75.482-1.676c0-.925-.216-1.675-.482-1.675zm-3.644.06c-.072.031-.026.313.103.625.132.312.297.539.37.51.074-.031.025-.312-.104-.623-.13-.312-.295-.54-.37-.512zm14.296.477c-.368-.04-1.127.127-1.96.453-1.107.434-1.929.984-1.833 1.228.096.242 1.074.093 2.181-.342 1.11-.434 1.932-.985 1.836-1.23-.024-.06-.102-.096-.224-.11zm-14.898.029c-.035-.005-.061 0-.076.018-.062.067.082.298.322.511.24.216.483.333.545.266.06-.07-.084-.298-.324-.514-.18-.16-.362-.267-.467-.281zm-.223.685c-.118 0-.196.019-.205.057-.016.08.248.204.588.283.343.077.636.077.653 0 .016-.077-.248-.204-.588-.281a2.116 2.116 0 00-.448-.059zm1.29.047c-.114-.005-.194.019-.231.075-.144.223.461.875 1.353 1.453.89.58 1.731.871 1.875.648.147-.223-.46-.877-1.35-1.457-.666-.433-1.307-.704-1.648-.719zm6.628.09c-.865-.036-1.493.081-1.527.32-.046.317.98.73 2.289.92 1.311.19 2.415.087 2.46-.232.046-.317-.98-.73-2.292-.92a9.203 9.203 0 00-.93-.088z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Fossil SCM</title><path d="M12.571 0c-.699.022-2.041.555-3.458 1.419C7.464 2.42 6.258 3.538 6.16 4.108c-.008.009-.019.014-.026.023-.563.746.203 2.277 1.711 3.414 1.408 1.063 2.958 1.397 3.617.832.518-.09 1.227-1.776 1.627-3.94.383-2.054.35-3.812-.045-4.214-.006-.02.001-.048-.01-.066-.069-.113-.23-.163-.463-.156zm-2.277 2.936c-.164.193-.329.383-.492.605-.217.296-.403.587-.568.866a5.705 5.705 0 00-.908-.432 14.052 14.052 0 001.785-.914c.067-.04.118-.084.183-.125zm.912 1.084c-.004.024-.01.043-.015.066a16.33 16.33 0 00-.227 1.78 6.106 6.106 0 00-.654-.674c.215-.241.436-.507.652-.801.093-.127.16-.246.244-.371zm-3.14 4.002c-.41-.075-.968 1.14-1.246 2.706-.276 1.566-.164 2.897.246 2.969.41.072.972-1.141 1.248-2.707.276-1.566.164-2.896-.248-2.968zm-5.56 2.708c-.072.032-.026.314.103.625.132.312.297.539.37.51.074-.031.025-.311-.104-.623-.13-.312-.295-.54-.37-.512zm-.602.506c-.035-.005-.061 0-.076.018-.062.067.083.298.322.512.24.215.483.332.545.265.06-.07-.084-.298-.324-.513-.18-.16-.361-.267-.467-.282zm-.224.684c-.118 0-.197.02-.205.058-.017.077.247.205.587.282.343.078.636.078.653.002.017-.08-.248-.204-.588-.284a2.163 2.163 0 00-.447-.058zm1.296.144c-.251.067-.235.954.036 1.98.27 1.03.695 1.81.945 1.745.25-.067.234-.954-.037-1.98-.271-1.03-.694-1.812-.944-1.745zm10.394.186c-.072-.031-.237.198-.369.51-.13.311-.178.59-.103.62.072.032.24-.197.369-.51.13-.31.178-.591.103-.62zm.61.504c-.105.015-.285.12-.463.281-.238.213-.382.445-.323.512.058.064.304-.057.541-.27.238-.213.38-.443.32-.508-.014-.016-.04-.02-.075-.015zm-7.625.593c-.34.035-.86.369-1.326.883-.621.686-.914 1.437-.652 1.672.261.237.978-.125 1.601-.81.621-.689.912-1.437.65-1.674-.065-.059-.16-.082-.273-.07zm7.85.092c-.119 0-.276.018-.446.057-.343.077-.607.202-.59.281.017.077.31.077.652 0 .34-.077.607-.202.588-.28-.008-.037-.087-.057-.205-.058zm-6.13.168a.15.15 0 00-.099.028c-.21.163.143.978.793 1.82.647.841 1.346 1.393 1.557 1.23.21-.16-.148-.977-.795-1.818-.567-.737-1.172-1.251-1.455-1.26zm4.557.043c-.267-.03-.843.36-1.387.96-.62.685-.966 1.386-.767 1.563.196.18.861-.232 1.482-.917.621-.686.964-1.385.768-1.565a.17.17 0 00-.096-.04zm-5.603.133c-.386.082-.48 1.2-.205 2.492.273 1.292.815 2.275 1.2 2.193.387-.081.481-1.2.208-2.49-.276-1.292-.815-2.279-1.203-2.195zm15.448 2.459c-.13-.055-.48.471-.78 1.174-.297.705-.432 1.323-.3 1.378.13.056.48-.47.777-1.173.297-.705.433-1.324.303-1.38zm-9.503.412c-.07.031-.024.31.105.621.132.312.298.542.367.514.072-.031.027-.31-.105-.621-.13-.312-.295-.543-.367-.514zm-.6.506c-.035-.005-.062 0-.078.017-.06.07.087.297.324.51.238.213.481.33.541.264.06-.067-.083-.297-.32-.51-.178-.158-.36-.266-.467-.281zm-.224.681c-.118 0-.195.019-.203.057-.017.079.245.204.585.283.343.077.636.077.653 0 .016-.077-.246-.204-.586-.281a2.133 2.133 0 00-.45-.059zm1.37.21c-.26 0-.476.75-.476 1.675s.215 1.676.477 1.676c.26 0 .478-.75.478-1.676 0-.926-.217-1.676-.478-1.676zm-5.175.333a.235.235 0 00-.133.045c-.294.216.04 1.17.744 2.13.703.962 1.514 1.564 1.807 1.35.295-.215-.035-1.171-.74-2.13-.617-.842-1.315-1.41-1.678-1.395zm13.02.522c-.105-.094-.601.297-1.105.873-.503.575-.824 1.119-.718 1.213.108.093.603-.298 1.107-.873.504-.576.825-1.12.717-1.213zm-11.014.443c-.113-.005-.194.019-.23.074-.144.223.46.875 1.353 1.453.89.58 1.73.872 1.875.649.146-.223-.46-.877-1.35-1.457-.667-.434-1.308-.704-1.648-.719zM8.73 20.451c-.266 0-.48.75-.48 1.675 0 .926.214 1.676.48 1.676s.482-.75.482-1.676c0-.925-.216-1.675-.482-1.675zm-3.644.06c-.072.031-.026.313.103.625.132.312.297.539.37.51.074-.031.025-.312-.104-.623-.13-.312-.295-.54-.37-.512zm14.296.477c-.368-.04-1.127.127-1.96.453-1.107.434-1.929.984-1.833 1.228.096.242 1.074.093 2.181-.342 1.11-.434 1.932-.985 1.836-1.23-.024-.06-.102-.096-.224-.11zm-14.898.029c-.035-.005-.061 0-.076.018-.062.067.082.298.322.511.24.216.483.333.545.266.06-.07-.084-.298-.324-.514-.18-.16-.362-.267-.467-.281zm-.223.685c-.118 0-.196.019-.205.057-.016.08.248.204.588.283.343.077.636.077.653 0 .016-.077-.248-.204-.588-.281a2.116 2.116 0 00-.448-.059zm1.29.047c-.114-.005-.194.019-.231.075-.144.223.461.875 1.353 1.453.89.58 1.731.871 1.875.648.147-.223-.46-.877-1.35-1.457-.666-.433-1.307-.704-1.648-.719zm6.628.09c-.865-.036-1.493.081-1.527.32-.046.317.98.73 2.289.92 1.311.19 2.415.087 2.46-.232.046-.317-.98-.73-2.292-.92a9.203 9.203 0 00-.93-.088z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/foursquare.svg b/assets/lib/simple-icons/icons/foursquare.svg
index 40f52ba2..b7add8c0 100644
--- a/assets/lib/simple-icons/icons/foursquare.svg
+++ b/assets/lib/simple-icons/icons/foursquare.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Foursquare icon</title><path d="M17.727 3.465l-.535 2.799c-.064.303-.445.623-.801.623H11.41c-.562 0-.963.391-.963.945v.614c0 .569.405.96.966.96h4.23c.395 0 .785.436.697.855l-.535 2.76c-.051.24-.314.63-.785.63h-3.457c-.63 0-.818.091-1.239.601-.42.524-4.206 5.069-4.206 5.069-.037.045-.074.029-.074-.015V3.42c0-.359.311-.78.776-.78h10.274c.375 0 .73.356.633.821v.004zm.451 10.98c.145-.578 1.746-8.784 2.281-11.385M18.486 0H5.683C3.918 0 3.4 1.328 3.4 2.164v20.34c0 .94.504 1.291.789 1.405.284.117 1.069.214 1.541-.328 0 0 6.044-7.014 6.146-7.117.165-.157.165-.157.315-.157h3.914c1.65 0 1.906-1.17 2.086-1.86.15-.569 1.754-8.774 2.279-11.385C20.875 1.08 20.365 0 18.49 0h-.004z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Foursquare</title><path d="M2.376 0h7.338v1.204h-6.12v3.372h5.44V5.78h-5.44v4.874H2.376V0zm-.208 20.16l1.19-.268c.213 1.473 1.232 2.352 2.89 2.352 1.487 0 2.664-.694 2.664-1.828 0-.807-.595-1.487-2.919-2.18-2.635-.752-3.513-1.715-3.513-3.13 0-1.829 1.473-2.805 3.613-2.805 2.393 0 3.456 1.218 3.825 2.89l-1.19.269c-.299-1.374-1.233-1.955-2.679-1.955-1.36 0-2.323.51-2.323 1.487 0 .793.624 1.403 2.777 2.083 2.565.793 3.67 1.658 3.67 3.301 0 2.04-1.715 3.103-3.896 3.103-2.281-.003-3.84-1.193-4.11-3.318zm9.223-2.238c0-3.159 2.068-5.624 5.242-5.624 3.159 0 5.2 2.479 5.2 5.624 0 1.573-.525 2.933-1.404 3.925a36.155 36.155 0 011.247 1.303l-.879.85a57.16 57.16 0 00-1.303-1.346c-.807.524-1.771.822-2.861.822-3.061 0-5.242-2.352-5.242-5.554zm7.181 3.825a31.241 31.241 0 00-1.247-1.148l.85-.863a36.537 36.537 0 011.331 1.218c.638-.764 1.02-1.813 1.02-3.046 0-2.493-1.516-4.39-3.896-4.39s-3.91 1.897-3.91 4.39c0 2.565 1.658 4.363 3.91 4.363.725 0 1.375-.184 1.942-.524z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/foursquarecityguide.svg b/assets/lib/simple-icons/icons/foursquarecityguide.svg
new file mode 100644
index 00000000..d633b583
--- /dev/null
+++ b/assets/lib/simple-icons/icons/foursquarecityguide.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Foursquare City Guide</title><path d="M17.727 3.465l-.535 2.799c-.064.303-.445.623-.801.623H11.41c-.562 0-.963.391-.963.945v.614c0 .569.405.96.966.96h4.23c.395 0 .785.436.697.855l-.535 2.76c-.051.24-.314.63-.785.63h-3.457c-.63 0-.818.091-1.239.601-.42.524-4.206 5.069-4.206 5.069-.037.045-.074.029-.074-.015V3.42c0-.359.311-.78.776-.78h10.274c.375 0 .73.356.633.821v.004zm.451 10.98c.145-.578 1.746-8.784 2.281-11.385M18.486 0H5.683C3.918 0 3.4 1.328 3.4 2.164v20.34c0 .94.504 1.291.789 1.405.284.117 1.069.214 1.541-.328 0 0 6.044-7.014 6.146-7.117.165-.157.165-.157.315-.157h3.914c1.65 0 1.906-1.17 2.086-1.86.15-.569 1.754-8.774 2.279-11.385C20.875 1.08 20.365 0 18.49 0h-.004z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/foxtel.svg b/assets/lib/simple-icons/icons/foxtel.svg
new file mode 100644
index 00000000..a7bebe83
--- /dev/null
+++ b/assets/lib/simple-icons/icons/foxtel.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Foxtel</title><path d="M2.867 10.631l.341-1.024H0v4.779h1.16v-1.72h1.434l.341-1.024H1.16v-1.01zm3.03-1.085a2.454 2.454 0 1 0-.006 4.908 2.454 2.454 0 0 0 .007-4.908zm0 3.74a1.287 1.287 0 1 1-.007-2.574 1.287 1.287 0 0 1 .008 2.575zm6.506-3.679h-1.297l-.812 1.304-.82-1.304H8.177l1.468 2.335-1.536 2.444h1.297l.888-1.405.88 1.405h1.297l-1.529-2.444zm.102 1.024h1.413v3.755h1.16V10.63h1.23V9.607h-3.16zm7.304 0l.341-1.024h-3.208v4.779h2.867l.341-1.024h-2.046v-.915h1.432l.341-1.024h-1.773v-.792zm2.143 2.73V9.608h-1.16v4.779h2.867L24 13.362Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/fozzy.svg b/assets/lib/simple-icons/icons/fozzy.svg
new file mode 100644
index 00000000..37b21c55
--- /dev/null
+++ b/assets/lib/simple-icons/icons/fozzy.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Fozzy</title><path d="M14.494 20.48l-.998-2.095 5.787-11.273c.897 1.396 1.496 3.092 1.496 4.888 0 3.99-2.594 7.382-6.285 8.48zM12.998.029C5.615-.471-.47 5.615.028 12.998c.5 5.786 5.188 10.475 10.974 10.973 7.383.5 13.468-5.586 12.97-12.969C23.471 5.216 18.783.527 12.997.03zM7.112 4.717c1.297-.897 2.793-1.396 4.39-1.496L8.807 8.409 7.112 4.717zm3.491 7.383l4.19-8.38c.798.3 1.497.598 2.195 1.097L11.9 14.793 10.603 12.1zM3.221 12c0-1.796.599-3.492 1.496-4.888l6.485 13.667C6.712 20.38 3.22 16.589 3.22 12z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/framer.svg b/assets/lib/simple-icons/icons/framer.svg
index 5265d918..e5a2d414 100644
--- a/assets/lib/simple-icons/icons/framer.svg
+++ b/assets/lib/simple-icons/icons/framer.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Framer icon</title><path d="M4 0h16v8h-8zM4 8h8l8 8H4zM4 16h8v8z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Framer</title><path d="M4 0h16v8h-8zM4 8h8l8 8H4zM4 16h8v8z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/framework7.svg b/assets/lib/simple-icons/icons/framework7.svg
new file mode 100644
index 00000000..6c1ba053
--- /dev/null
+++ b/assets/lib/simple-icons/icons/framework7.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Framework7</title><path d="M0 12a11.95 11.95 0 012.713-7.6h18.574L8.037 23.33C3.358 21.694 0 17.24 0 12zm22.271-6.208A11.944 11.944 0 0124 12c0 6.627-5.373 12-12 12-.794 0-1.57-.077-2.32-.224zM4.295 2.8A11.952 11.952 0 0112 0c2.933 0 5.62 1.052 7.705 2.8z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/franprix.svg b/assets/lib/simple-icons/icons/franprix.svg
new file mode 100644
index 00000000..e224cc4d
--- /dev/null
+++ b/assets/lib/simple-icons/icons/franprix.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Franprix</title><path d="M12 6.305c3.691 0 6.323-3.071 6.13-6.286-2.124-.17-5.069.791-6.13 3.79C10.939.81 7.993-.15 5.87.02 5.677 3.234 8.309 6.305 12 6.305m11.002 6.962c-.139-3.413-2.821-6.362-6.55-6.362-1.69 0-3.236.635-4.452 1.744-1.217-1.11-2.763-1.744-4.452-1.744-3.729 0-6.412 2.949-6.55 6.362C.758 19.19 5.913 24 12 24c6.087 0 11.242-4.81 11.002-10.733"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/fraunhofergesellschaft.svg b/assets/lib/simple-icons/icons/fraunhofergesellschaft.svg
new file mode 100644
index 00000000..f969b856
--- /dev/null
+++ b/assets/lib/simple-icons/icons/fraunhofergesellschaft.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Fraunhofer-Gesellschaft</title><path d="M.06 23.99c5.681-2.926 14-7.653 23.88-14.567v-2.32C15.247 12.792 6.406 17.359.06 20.38zm0-6.93c6.325-2.575 15.166-6.558 23.88-11.74V4.174C15.751 8.238 7.24 10.781.06 12.366zM23.94 24V12.332A201.394 201.393 0 0 1 8.596 24zM5.542 24a166.927 166.926 0 0 0 14.7-9.765 323.136 324.76 0 0 0 3.698-2.81V9.98C16.257 15.74 8.413 20.542 2.287 24zM.06 10.668C7.044 9.44 15.589 7.231 23.94 3.262v-1.3C15.526 5.737 7.102 7.338.06 7.91zM.06 0v6.686c.522-.033 1.054-.07 1.596-.111C7.464 6.126 15.387 5.1 23.94 1.402V0z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/freebsd.svg b/assets/lib/simple-icons/icons/freebsd.svg
index a87bb26d..8febe9d4 100644
--- a/assets/lib/simple-icons/icons/freebsd.svg
+++ b/assets/lib/simple-icons/icons/freebsd.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>FreeBSD icon</title><path d="M23.725.588c1.273 1.272-2.254 6.862-2.85 7.458-.597.596-2.111.048-3.383-1.224-1.272-1.272-1.82-2.787-1.224-3.383.596-.596 6.186-4.123 7.457-2.85zM5.885 1.934C3.943.832 1.18-.394.3.485c-.89.89.38 3.717 1.494 5.663.99-1.723 2.4-3.174 4.091-4.214zm15.9 5.674c.179.606.147 1.107-.143 1.397-.678.678-2.508-.044-4.157-1.614a8.323 8.323 0 0 1-.342-.323c-.597-.597-1.06-1.232-1.358-1.817-.578-1.036-.722-1.952-.285-2.388.238-.238.618-.303 1.083-.22.303-.191.66-.405 1.052-.623a11.492 11.492 0 0 0-5.33-1.301C5.927.719.757 5.889.757 12.267c0 6.377 5.17 11.548 11.548 11.548s11.549-5.17 11.549-11.548c0-2.06-.54-3.991-1.485-5.666a22.27 22.27 0 0 1-.584 1.007z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>FreeBSD</title><path d="M23.682 2.406c-.001-.149-.097-.187-.24-.189h-.25v.659h.108v-.282h.102l.17.282h.122l-.184-.29c.102-.012.175-.065.172-.18zm-.382.096v-.193h.13c.06-.002.145.011.143.089.005.09-.08.107-.153.103h-.12zM21.851 1.49c1.172 1.171-2.077 6.319-2.626 6.869-.549.548-1.944.044-3.115-1.128-1.172-1.171-1.676-2.566-1.127-3.115.549-.55 5.697-3.798 6.868-2.626zM1.652 6.61C.626 4.818-.544 2.215.276 1.395c.81-.81 3.355.319 5.144 1.334A11.003 11.003 0 0 0 1.652 6.61zm18.95.418a10.584 10.584 0 0 1 1.368 5.218c0 5.874-4.762 10.636-10.637 10.636C5.459 22.882.697 18.12.697 12.246.697 6.371 5.459 1.61 11.333 1.61c1.771 0 3.441.433 4.909 1.199-.361.201-.69.398-.969.574-.428-.077-.778-.017-.998.202-.402.402-.269 1.245.263 2.2.273.539.701 1.124 1.25 1.674.103.104.208.202.315.297 1.519 1.446 3.205 2.111 3.829 1.486.267-.267.297-.728.132-1.287.167-.27.35-.584.538-.927zm2.814-5.088c-.322 0-.584.266-.584.595s.261.595.584.595c.323 0 .584-.266.584-.595s-.261-.595-.584-.595zm0 1.087c-.252 0-.457-.22-.457-.492s.204-.492.457-.492c.252 0 .457.22.457.492s-.204.492-.457.492z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/freecodecamp.svg b/assets/lib/simple-icons/icons/freecodecamp.svg
index bf6836cb..8a19cca3 100644
--- a/assets/lib/simple-icons/icons/freecodecamp.svg
+++ b/assets/lib/simple-icons/icons/freecodecamp.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>freeCodeCamp icon</title><path d="M23.967 12.317c0 2.5-.854 4.718-2.598 6.681-.635.729-1.143 1.076-1.488 1.076-.121 0-.256-.033-.346-.125-.092-.096-.15-.223-.15-.35 0-.188.225-.475.674-.889 1.814-1.736 2.727-3.895 2.727-6.456 0-2.846-.943-5.152-2.816-6.936-.374-.342-.57-.627-.57-.852 0-.12.061-.256.164-.345.105-.09.225-.149.346-.149.418 0 1.049.509 1.842 1.527C23.25 7.402 24 9.694 24 12.345l-.033-.028zM0 11.682c0-2.499.854-4.719 2.598-6.681.635-.729 1.143-1.076 1.49-1.076.119 0 .254.033.344.125.09.095.15.189.15.314 0 .188-.225.477-.674.918-1.781 1.744-2.711 3.895-2.711 6.462 0 2.847.951 5.158 2.821 6.935.38.344.569.633.569.854 0 .127-.061.256-.16.348-.099.094-.225.16-.352.16-.436 0-1.033-.51-1.828-1.518C.734 16.654 0 14.373 0 11.682zm17.699 6.869H6.715c-.35 0-.668-.287-.668-.666 0-.383.285-.668.668-.668h10.984c.348 0 .668.285.668.668-.006.385-.287.666-.668.666zm-6-8.919c.197-.025.344.615.361.749.046.353-.071.693-.231 1.003-.597 1.165-1.978 2.104-1.612 3.575.166.635.494 1.076 1.514 1.619-.345.119-.824-.111-1.094-.301-1.199-.816-1.963-2.156-1.888-3.619.03-.464.12-.92.239-1.368.375-1.281 1.139-2.401 1.588-3.647.225-.599.39-1.324.211-1.953-.09-.309-.255-.599-.465-.849-.061-.076-.404-.465-.539-.42.6-.225 1.139-.016 1.662.299.404.24.72.585.959.975.449.719.629 1.542.719 2.381.031.345-.015 1.184.39 1.35.419.179.749-.525.839-.81.195-.645-.06-1.259-.314-1.858.061.121.285.255.389.346l.36.344c.435.449.704 1.004.884 1.604.164.539.24 1.093.27 1.633.074 1.123-.18 2.278-.629 3.311-.195.463-.449.898-.779 1.273-.319.373-.748.613-1.093.957.808-.809 1.238-2.127 1.123-3.131-.06-.553-.239-1.063-.659-1.572 0 0 .045.358.087.583.075.495-.255 1.02-.644.959-.285-.029-.136-.643-.105-.838.105-.584-.03-1.154-.244-1.693-.209-.509-.6-.914-1.198-.823l-.101-.079z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>freeCodeCamp</title><path d="M19.885 3.906a.621.621 0 00-.354.12c-.08.08-.161.196-.161.313 0 .2.236.474.673.923 1.822 1.754 2.738 3.903 2.732 6.494-.007 2.867-.97 5.17-2.844 6.954-.394.353-.556.63-.557.867 0 .116.08.237.16.353.076.08.237.162.353.162.434 0 1.04-.512 1.833-1.509 1.542-1.89 2.24-3.978 2.279-6.824.036-2.847-.857-4.777-2.603-6.77-.63-.712-1.153-1.082-1.511-1.083zm-15.769.002c-.358 0-.882.37-1.51 1.083C.858 6.984-.035 8.914.001 11.761c.04 2.846.737 4.933 2.28 6.824.791.997 1.398 1.51 1.832 1.509a.573.573 0 00.352-.162c.08-.116.16-.237.16-.353 0-.237-.162-.514-.556-.866-1.873-1.785-2.837-4.087-2.844-6.955-.006-2.591.91-4.74 2.732-6.494.437-.449.674-.722.673-.923 0-.117-.08-.233-.161-.313a.621.621 0 00-.354-.12zm7.056.895s.655 2.081-2.649 6.727c-3.156 4.433 1.045 7.15 1.432 7.386-.281-.18-2.001-1.5.402-5.423.466-.77 1.076-1.47 1.834-3.041 0 0 .67.946.32 2.998-.523 3.101 2.271 2.214 2.314 2.257.976 1.15-.808 3.17-.917 3.233-.108.061 5.096-3.13 1.399-7.935-.253.253-.582 1.442-1.267 1.266-.684-.174 2.125-3.494-2.868-7.468zM9.955 18.916c.023.016.038.024.038.024l-.038-.024z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/freedesktop-dot-org.svg b/assets/lib/simple-icons/icons/freedesktop-dot-org.svg
deleted file mode 100644
index 1077e24c..00000000
--- a/assets/lib/simple-icons/icons/freedesktop-dot-org.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>freedesktop.org icon</title><path d="M17.702 1.934a4.375 4.375 0 0 0-1.264.14L3.3 5.502a4.418 4.418 0 0 0-3.156 5.384L2.2 18.77a4.418 4.418 0 0 0 5.384 3.157l13.139-3.429c2.212-.577 3.573-2.745 3.222-4.958h.045l-.111-.425-2.057-7.884a4.421 4.421 0 0 0-4.12-3.296zm-.02.677a3.73 3.73 0 0 1 3.483 2.791l1.946 7.458.11.425c.523 2-.67 4.034-2.67 4.555L7.412 21.268a3.729 3.729 0 0 1-4.555-2.67L.8 10.715a3.729 3.729 0 0 1 2.671-4.556L16.61 2.731a3.77 3.77 0 0 1 1.072-.12zm-.392 1.024a5.386 5.386 0 0 0-1.197.139L4.431 6.817c-2.428.706-3.107 2.016-2.624 4.265l1.75 6.704c.482 2.114 2.282 3.102 4.372 2.44l11.662-3.043c2.123-.504 3.107-2.096 2.624-4.265l-1.749-6.704c-.392-1.677-1.55-2.572-3.176-2.579zm1.25 3.554a.46.46 0 0 1 .472.345l.623 2.388.01.042a.457.457 0 0 1-.33.564l-3.405.888a.457.457 0 0 1-.564-.33l-.633-2.43a.457.457 0 0 1 .33-.565l3.405-.888a.468.468 0 0 1 .093-.014zm-10.216.658a.64.64 0 0 1 .655.48l.777 2.978a.638.638 0 0 1-.46.784l-4.172 1.089a.638.638 0 0 1-.784-.46L3.563 9.74a.638.638 0 0 1 .46-.785l4.172-1.088a.646.646 0 0 1 .13-.02zm5.859 1.466l.173.663-4.12.476-.174-.663zm.898 2.542c.183.147.41.237.648.252l-1.57 2.362a.892.892 0 0 0-.642-.26zm-5.626.894l2.032 1.96-.52.136a.867.867 0 0 0-.22.095l-2.062-1.99zm4.064 2.137a.209.209 0 0 1 .215.157l.435 1.669a.206.206 0 0 1-.15.258l-2.338.61a.206.206 0 0 1-.257-.152l-.436-1.668a.206.206 0 0 1 .151-.258l2.338-.61a.207.207 0 0 1 .042-.006Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/freedesktopdotorg.svg b/assets/lib/simple-icons/icons/freedesktopdotorg.svg
new file mode 100644
index 00000000..593533c4
--- /dev/null
+++ b/assets/lib/simple-icons/icons/freedesktopdotorg.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>freedesktop.org</title><path d="M23.855 13.112l-2.054-7.875a4.414 4.414 0 0 0-5.379-3.153L3.296 5.509a4.413 4.413 0 0 0-3.153 5.378l2.055 7.875a4.416 4.416 0 0 0 5.379 3.153l13.126-3.425a4.377 4.377 0 0 0 2.69-2.036 4.377 4.377 0 0 0 .462-3.342zm-1.047 3a3.701 3.701 0 0 1-2.277 1.723L7.406 21.26a3.735 3.735 0 0 1-4.551-2.668L.8 10.717a3.734 3.734 0 0 1 2.668-4.552L16.593 2.74a3.727 3.727 0 0 1 4.551 2.668l2.054 7.875a3.7 3.7 0 0 1-.39 2.829zm-2.362-9.893c-.482-2.061-2.122-2.941-4.369-2.437l-11.65 3.04c-2.426.706-3.104 2.014-2.621 4.261l1.748 6.698c.482 2.112 2.281 3.098 4.369 2.437l11.651-3.04c2.121-.504 3.104-2.095 2.622-4.261l-1.75-6.698zm-6.277 3.097l.173.663-4.117.475-.173-.663 4.117-.475zm-9.05 3.861a.639.639 0 0 1-.783-.46l-.777-2.975a.643.643 0 0 1 .459-.783l4.169-1.087a.644.644 0 0 1 .784.458l.776 2.975a.643.643 0 0 1-.459.784l-4.169 1.088zm5.618 1.76l-2.06-1.988.769-.201 2.03 1.959-.519.135a.944.944 0 0 0-.22.095zm3.397 1.93a.212.212 0 0 1-.128.097l-2.336.609a.21.21 0 0 1-.257-.151l-.435-1.667a.21.21 0 0 1 .151-.257l2.336-.609a.211.211 0 0 1 .256.15l.435 1.667a.214.214 0 0 1-.022.161zm.011-2.398a.882.882 0 0 0-.178-.142.882.882 0 0 0-.463-.119l1.562-2.351c.183.147.41.235.649.248l-1.57 2.364zm5.151-3.94l-3.401.887a.462.462 0 0 1-.563-.33l-.633-2.428a.461.461 0 0 1 .33-.563l3.401-.887a.47.47 0 0 1 .35.049.457.457 0 0 1 .213.282l.633 2.428a.46.46 0 0 1-.33.562z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/freelancer.svg b/assets/lib/simple-icons/icons/freelancer.svg
index ace3a6c7..64567653 100644
--- a/assets/lib/simple-icons/icons/freelancer.svg
+++ b/assets/lib/simple-icons/icons/freelancer.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Freelancer icon</title><path d="M14.096 3.076l1.634 2.292L24 3.076M5.503 20.924l4.474-4.374-2.692-2.89m6.133-10.584L11.027 5.23l4.022.15M4.124 3.077l.857 1.76 4.734.294m-3.058 7.072l3.497-6.522L0 5.13m7.064 7.485l3.303 3.548 3.643-3.57 1.13-6.652-4.439-.228Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Freelancer</title><path d="M14.096 3.076l1.634 2.292L24 3.076M5.503 20.924l4.474-4.374-2.692-2.89m6.133-10.584L11.027 5.23l4.022.15M4.124 3.077l.857 1.76 4.734.294m-3.058 7.072l3.497-6.522L0 5.13m7.064 7.485l3.303 3.548 3.643-3.57 1.13-6.652-4.439-.228Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/freenas.svg b/assets/lib/simple-icons/icons/freenas.svg
new file mode 100644
index 00000000..b1b0d2fe
--- /dev/null
+++ b/assets/lib/simple-icons/icons/freenas.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>FreeNAS</title><path d="M19.598 2.707h.143c.06 0 .101.01.124.032a.107.107 0 0 1 .034.083c0 .045-.017.077-.051.097a.307.307 0 0 1-.153.029h-.098v-.241zm0 .391h.09l.214.337h.203l-.242-.356v-.008a.29.29 0 0 0 .161-.081.237.237 0 0 0 .059-.168.254.254 0 0 0-.03-.125.241.241 0 0 0-.08-.082.349.349 0 0 0-.114-.045.645.645 0 0 0-.133-.013h-.303v.879h.175v-.338m-.485-.368a.628.628 0 0 1 .348-.367.688.688 0 0 1 .277-.053.64.64 0 0 1 .625.42.735.735 0 0 1 .049.27.74.74 0 0 1-.049.271.642.642 0 0 1-.348.366.675.675 0 0 1-.277.054.646.646 0 0 1-.624-.421.712.712 0 0 1-.049-.27c0-.095.015-.185.048-.27zm.014.884a.835.835 0 0 0 .273.179.884.884 0 0 0 .338.064c.12 0 .233-.021.339-.064A.83.83 0 0 0 20.598 3a.852.852 0 0 0-.249-.613.815.815 0 0 0-.272-.179c-.105-.043-.218-.064-.339-.064s-.233.021-.338.064a.82.82 0 0 0-.454.45.838.838 0 0 0-.067.342c0 .125.021.239.067.343a.796.796 0 0 0 .181.271m-1.864 12.361a3.268 3.268 0 0 1-.931 1.215 3.203 3.203 0 0 1-2.008.695 3.199 3.199 0 0 1-2.423-1.085 1.989 1.989 0 0 1-.439-.855 2.223 2.223 0 0 1-.06-.519c.002-.854.428-1.71.845-2.362.21-.326.418-.602.575-.794l.208.254.036.046a7.499 7.499 0 0 0 1.126 1.083c.766.597 1.85 1.197 3.126 1.229.012 0 .023.003.035.004a.172.172 0 0 1 .064 0 .16.16 0 0 1 .126.189c-.061.33-.158.628-.28.9zm6.719-7.025a5.339 5.339 0 0 1-.821.905c-.752.664-1.936 1.343-3.649 1.435l-.505.926a.173.173 0 0 1-.299.008l-.581-.954c-.275.051-.984.168-1.808.168-1.376-.03-1.807-.241-2.263-.532l1.538-2.072-3.297-.764 4.136-.795c1.208-2.437 1.583-4.521 1.675-5.157-4.638.514-8.102 1.666-10.329 2.632l-.179.079-.034.014-.249-.241a9.292 9.292 0 0 0-1.459-.985 9.404 9.404 0 0 0-4.516-1.175 8.05 8.05 0 0 0-.894.043c-.491.031-.253.153-.194.203.225.184.544.573.753 1.112.211.541.354 1.27.354 2.254 0 .275-.012.579-.036.896-.195.362-.376.741-.539 1.132C.311 9.227 0 10.479 0 11.767c0 2.291.9 4.378 2.181 6.074l.173.262-1.355 2.7a.063.063 0 0 0 .021.08c.011.007.023.01.035.01a.067.067 0 0 0 .047-.02l2.117-1.863.248.24a10.1 10.1 0 0 0 6.812 2.63c4.516 0 8.342-2.953 9.652-7.032l.288-.124a6.314 6.314 0 0 0 1.132-.555c.684-.424 1.502-1.107 2.045-2.141.362-.687.604-1.534.604-2.576 0-.163-.006-.33-.018-.502"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/frontendmentor.svg b/assets/lib/simple-icons/icons/frontendmentor.svg
new file mode 100644
index 00000000..d98ec231
--- /dev/null
+++ b/assets/lib/simple-icons/icons/frontendmentor.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Frontend Mentor</title><path d="M12.1706 1.2719a.732.732 0 00-.7186.732v13.914a.732.732 0 00.732.732.732.732 0 00.7318-.732V2.004a.732.732 0 00-.7452-.732zm11.0741 4.1685a.7339.7339 0 00-.2764.063L16.686 8.307a.7329.7329 0 000 1.3361l6.2823 2.8134a.7378.7378 0 00.2993.0648.732.732 0 00.2973-1.401l-4.786-2.1443 4.786-2.1366a.7339.7339 0 00.3698-.9664.7339.7339 0 00-.69-.4327zm-22.499 5.032a.7316.7316 0 00-.7223.9149c1.736 6.677 7.7748 11.341 14.6822 11.341a.732.732 0 000-1.464 13.7055 13.7055 0 01-13.266-10.2449.7316.7316 0 00-.6939-.547z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/fsecure.svg b/assets/lib/simple-icons/icons/fsecure.svg
new file mode 100644
index 00000000..597d30f9
--- /dev/null
+++ b/assets/lib/simple-icons/icons/fsecure.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>F-Secure</title><path d="M23.928 2.946a35.921 35.921 0 0 0-22.228-.6A2.219 2.219 0 0 0 .08 5.094c.4 1.6.98 3.439 1.68 5.108.01.04.03.02.03-.02-.1-.78.5-1.77 1.679-2.13a27.546 27.546 0 0 1 17.381.23c.86.3 1.82-.17 2.099-1.059.7-2.248.98-3.778 1.05-4.157.01-.07-.05-.1-.07-.12zM6.658 7.893c-.86.18-2.05.46-2.94.76-1.778.61-1.698 2.778-.749 3.468.07-.4.5-.95.98-1.13 1.779-.7 3.688-1.119 5.617-1.289-.98-.4-1.94-.97-2.899-1.809m14.163 4.338a21.15 21.15 0 0 0-16.441-.65c-.85.32-1.38 1.35-.85 2.329a38.14 38.14 0 0 0 3.148 4.797c-.17-.58.13-1.659 1.27-2.009 3.148-.969 6.456-.56 8.655.33.62.25 1.5.1 1.99-.64a38.6 38.6 0 0 0 2.288-4.017c.03-.06 0-.11-.06-.14m-5.107 7.766a9.915 9.915 0 0 1-2.499-1.8c-.34-.34-.84-.829-1.37-1.409-1.199 0-2.368.12-3.617.52-1.16.36-1.27 1.7-.76 2.399.86 1.07 1.46 1.65 2.419 2.639a2.739 2.739 0 0 0 3.818.02 43.3 43.3 0 0 0 2.059-2.21c.05-.05.03-.14-.05-.16"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/fujifilm.svg b/assets/lib/simple-icons/icons/fujifilm.svg
index e97e61ed..00766e68 100644
--- a/assets/lib/simple-icons/icons/fujifilm.svg
+++ b/assets/lib/simple-icons/icons/fujifilm.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Fujifilm icon</title><path d="M.484 10.003c-.483 0-.484.238-.484.533v3.329h.786c.165.003.24-.057.243-.207v-1.556h1.444c.034 0 .055-.018.055-.052v-.39H1.03v-.98c0-.173.086-.255.258-.255H2.56c.037 0 .049-.024.049-.05v-.372zm7.997 0c-.111 0-.197.052-.197.21v2.654c0 .377-.143.632-.573.693-.29.041-.678.03-.847.024v.324c0 .03.014.052.049.06.025.006.208.029.62.029.722 0 1.054-.156 1.245-.292.365-.263.495-.575.495-1.192v-2.51zm-5.13 0c-.148 0-.194.07-.194.199v2.658c0 .538.26.866.814 1.033.463.14 1.21.137 1.701.003.37-.1.787-.373.787-1.037v-2.856h-.77c-.172 0-.219.073-.219.196v2.748c0 .294-.063.443-.229.536-.242.135-.645.133-.883-.004-.177-.103-.213-.28-.213-.533v-2.943zm9.308 0c-.483 0-.483.239-.483.533v.995c0 .02-.01.029-.018.038l-.677.533h.695v1.763h.786c.164.003.24-.057.242-.207v-1.556h1.444c.034 0 .055-.018.055-.052v-.39h-1.499v-.98c0-.173.087-.255.258-.255h1.274c.036 0 .05-.024.05-.05v-.372zm3.701 0h-.768c-.175 0-.222.082-.222.203v3.66h.783c.138 0 .207-.042.207-.204zm1.922 0h-.76c-.173-.003-.229.066-.229.213v3.108c0 .258.076.541.591.541h1.668c.044 0 .065-.027.065-.066v-.351h-1.03c-.205-.01-.305-.115-.305-.318zm5.718 0h-1.144c-.195 0-.306.092-.35.266l-.63 2.663h-.018l-.65-2.928h-.89c-.172 0-.226.088-.226.224v3.637h.376c.06 0 .086-.03.086-.092v-3.049h.059l.804 3.141h.527c.199 0 .273-.081.322-.278l.722-2.863h.058v3.141h.703c.172 0 .251-.067.251-.237zm-13.608.001c-.173 0-.22.084-.22.205v1.87l.93-.73c.036-.028.056-.05.058-.11v-1.235zm-.22 2.098v1.763h.781c.138 0 .208-.04.208-.203v-1.56z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Fujifilm</title><path d="M.484 10.003c-.483 0-.484.238-.484.533v3.329h.786c.165.003.24-.057.243-.207v-1.556h1.444c.034 0 .055-.018.055-.052v-.39H1.03v-.98c0-.173.086-.255.258-.255H2.56c.037 0 .049-.024.049-.05v-.372zm7.997 0c-.111 0-.197.052-.197.21v2.654c0 .377-.143.632-.573.693-.29.041-.678.03-.847.024v.324c0 .03.014.052.049.06.025.006.208.029.62.029.722 0 1.054-.156 1.245-.292.365-.263.495-.575.495-1.192v-2.51zm-5.13 0c-.148 0-.194.07-.194.199v2.658c0 .538.26.866.814 1.033.463.14 1.21.137 1.701.003.37-.1.787-.373.787-1.037v-2.856h-.77c-.172 0-.219.073-.219.196v2.748c0 .294-.063.443-.229.536-.242.135-.645.133-.883-.004-.177-.103-.213-.28-.213-.533v-2.943zm9.308 0c-.483 0-.483.239-.483.533v.995c0 .02-.01.029-.018.038l-.677.533h.695v1.763h.786c.164.003.24-.057.242-.207v-1.556h1.444c.034 0 .055-.018.055-.052v-.39h-1.499v-.98c0-.173.087-.255.258-.255h1.274c.036 0 .05-.024.05-.05v-.372zm3.701 0h-.768c-.175 0-.222.082-.222.203v3.66h.783c.138 0 .207-.042.207-.204zm1.922 0h-.76c-.173-.003-.229.066-.229.213v3.108c0 .258.076.541.591.541h1.668c.044 0 .065-.027.065-.066v-.351h-1.03c-.205-.01-.305-.115-.305-.318zm5.718 0h-1.144c-.195 0-.306.092-.35.266l-.63 2.663h-.018l-.65-2.928h-.89c-.172 0-.226.088-.226.224v3.637h.376c.06 0 .086-.03.086-.092v-3.049h.059l.804 3.141h.527c.199 0 .273-.081.322-.278l.722-2.863h.058v3.141h.703c.172 0 .251-.067.251-.237zm-13.608.001c-.173 0-.22.084-.22.205v1.87l.93-.73c.036-.028.056-.05.058-.11v-1.235zm-.22 2.098v1.763h.781c.138 0 .208-.04.208-.203v-1.56z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/fujitsu.svg b/assets/lib/simple-icons/icons/fujitsu.svg
index b06341cc..70efe675 100644
--- a/assets/lib/simple-icons/icons/fujitsu.svg
+++ b/assets/lib/simple-icons/icons/fujitsu.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Fujitsu icon</title><path d="M16.56 3C14.15 3 12.04 4.24 10.68 5.97L10.68 9.76C12.5 4.71 16.56 5.08 16.56 5.08C19.5 5.08 21.84 7.38 21.84 10.2C21.84 13.04 19.5 15.33 16.56 15.33A5.32 5.32 0 0 1 12.84 13.83L10.28 11.03A6.06 6.06 0 0 0 6.03 9.32C2.7 9.32 0 11.93 0 15.16C0 18.4 2.7 21 6.03 21C7.9 21 9.58 20.19 10.68 18.89L10.68 15.86C8.88 19.29 6.03 18.92 6.03 18.92C3.9 18.92 2.17 17.24 2.17 15.16C2.17 13.1 3.9 11.42 6.03 11.42C7.09 11.42 8.05 11.84 8.75 12.5L11.31 15.31A7.5 7.5 0 0 0 16.56 17.43C20.67 17.43 24 14.19 24 10.2C24 6.21 20.67 3 16.56 3Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Fujitsu</title><path d="M16.56 3C14.15 3 12.04 4.24 10.68 5.97L10.68 9.76C12.5 4.71 16.56 5.08 16.56 5.08C19.5 5.08 21.84 7.38 21.84 10.2C21.84 13.04 19.5 15.33 16.56 15.33A5.32 5.32 0 0 1 12.84 13.83L10.28 11.03A6.06 6.06 0 0 0 6.03 9.32C2.7 9.32 0 11.93 0 15.16C0 18.4 2.7 21 6.03 21C7.9 21 9.58 20.19 10.68 18.89L10.68 15.86C8.88 19.29 6.03 18.92 6.03 18.92C3.9 18.92 2.17 17.24 2.17 15.16C2.17 13.1 3.9 11.42 6.03 11.42C7.09 11.42 8.05 11.84 8.75 12.5L11.31 15.31A7.5 7.5 0 0 0 16.56 17.43C20.67 17.43 24 14.19 24 10.2C24 6.21 20.67 3 16.56 3Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/funimation.svg b/assets/lib/simple-icons/icons/funimation.svg
new file mode 100644
index 00000000..36c096f7
--- /dev/null
+++ b/assets/lib/simple-icons/icons/funimation.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Funimation</title><path d="M12 0a12 12 0 1 0 12 12A12.001 12.001 0 0 0 12 0ZM7.428 16.06h9.188s-.449 3.278-4.601 3.278c-4.15 0-4.587-3.278-4.587-3.278z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/furaffinity.svg b/assets/lib/simple-icons/icons/furaffinity.svg
index 54f3710d..9204b77d 100644
--- a/assets/lib/simple-icons/icons/furaffinity.svg
+++ b/assets/lib/simple-icons/icons/furaffinity.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Fur Affinity icon</title><path d="M16.821 5.133l-.26 1.992 2.435.717.031 2.152 2.231.041-.056 2.255 2.171-.141c.003-.759.05-5.045.626-7.016h-7.178zM11.356 18.24c.056-.213 0-.906 0-1.146l-.049-1.463c-2.021-.085-4.2.322-4.2 2.187 0 .403.169.768.426 1.049h3.312c.248-.142.434-.335.511-.627zM20.389 13.066l.052-2.247-2.202-.04-.035-2.425-2.527-.861.338-2.36h-9.43C2.767 5.133 0 8.385 0 11.95v6.916h4.116a5.381 5.381 0 0 1-.023-.754c.148-3.665 4.199-4.294 7.241-4.204v-1.056c-.05-.852-.74-1.605-2.74-1.605-1.333 0-2.915.171-3.939.541l.272-2.384c.978-.277 2.08-.545 4.453-.545 4.572 0 5.077 2.029 5.04 4.383l-.021 5.624h2.479v-.002l.096.002c3.303 0 6.021-2.692 6.362-5.915l-2.947.115z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Fur Affinity</title><path d="M5.7 22.086c-.43-.11-1.068-.505-1.193-.74-.113-.21-.02-1.356.116-1.44.113-.07.113-.265 0-.444-.069-.109-.235-.081-.801.132-.89.335-1.195.336-1.839.01C1.348 19.282.7 18.557.273 17.69c-.45-.914-.388-1.097.518-1.538.392-.19.932-.485 1.2-.655l.485-.31-.049-.724-.05-.725.492-.525.492-.526-.185-.285-.438-.671c-.212-.323-.234-.424-.132-.615.158-.295.095-.347-.256-.213-.157.06-.33.108-.384.108-.133 0-.124-.387.016-.648.158-.296.036-.373-.221-.14-.157.141-.245.162-.331.076-.299-.299.627-2.522 1.193-2.867l.351-.214h-.447c-.247 0-.448-.04-.448-.09 0-.302 1.386-.99 2.37-1.175l.678-.128 1.169-1.878c.643-1.033 1.235-1.932 1.316-2 .313-.26.532-.028 1.471 1.548.524.879.982 1.628 1.018 1.664.037.037.371-.164.743-.446.83-.627 3.339-2.091 4.391-2.562.588-.262.817-.32.949-.237.142.09.206.518.355 2.364.1 1.24.18 2.61.177 3.045-.007 1.202.004 1.37.09 1.367.043 0 .265-.262.493-.58.702-.981.523-.945 2.491-.508l1.731.384 1.197 1.007c1.127.949 1.378 1.217 1.253 1.342-.03.029-.758.063-1.62.076-1.845.028-2.937.289-3.567.852-.328.294-.366.386-.377.907-.007.319-.009.612-.004.65.005.04.445-.114.977-.342.532-.227 1.042-.413 1.135-.413.092 0 .582.416 1.089.926l.921.925-.55 1.06-.552 1.06.5.57c.274.313.485.622.47.686-.044.179-1.023.99-1.195.99-.083 0-.151-.036-.152-.079 0-.043-.09-.228-.202-.41l-.201-.33-.718.199c-.956.265-1.105.253-1.456-.114-.358-.373-.478-.33-.478.173 0 .512-.368 1.125-.83 1.381-.409.227-2.396.944-3.438 1.24a7.784 7.784 0 0 0-1.13.43c-1.05.528-1.072.256-.089-1.108.608-.842.946-1.18 2.002-2.007.698-.547 1.29-1.068 1.316-1.16.025-.09.153-.944.284-1.896l.238-1.732-.52-.983c-.518-.978-.52-.984-.34-1.298.098-.173.16-.315.137-.315-.038 0-.784.414-.887.492-.023.018.085.132.24.255.323.253.724.99.904 1.659.137.507.04 2.034-.113 1.792-.057-.09-.09.025-.09.314-.003.465-.376 1.495-.542 1.495-.051 0-.093-.095-.093-.21 0-.117-.048-.212-.106-.212-.065 0-.081.16-.042.41l.066.41-.685-.015c-.502-.01-.738.032-.881.159-.287.253-2.584 1.447-3.396 1.766-1.069.419-1.14.494-1.498 1.602-.176.545-.389 1.096-.473 1.226-.34.521-1.547.87-2.326.67zm1.11-.594c.18-.204.327-.309.327-.231a.447.447 0 0 1-.125.265c-.068.069-.092.158-.051.198.1.1.344-.254.502-.734.153-.463.299-.61.226-.228-.027.143-.025.26.005.26.148 0 .537-.872.724-1.622.28-1.122.361-1.259 1.283-2.13.63-.596.816-.842.91-1.212.192-.748.233-.814.32-.516.044.145.055.382.025.527-.08.403.11.163.607-.763.543-1.011.668-1.105.617-.467l-.038.484.351-.338c.465-.447 1.386-1.672 1.387-1.845 0-.075-.13-.257-.289-.405-.276-.255-.231-.269.25-.075.139.056.156.023.091-.184-.424-1.372-.948-2.169-2.166-3.296-1-.925-1.51-1.273-2.411-1.645l-.727-.299-.658.386c-.614.36-3.89 3.406-3.89 3.617 0 .558 2.683-1.523 3.953-3.064.326-.397.607-.64.74-.64.392-.002 1.555.78 2.428 1.632 1.001.978 1.359 1.584 1.28 2.171-.06.442-.456 1.3-.691 1.495-.13.107-.146.075-.103-.215.027-.189.034-.343.014-.343-.02 0-.181.155-.36.343-.285.303-.317.315-.271.105.063-.289.046-.29-.729-.022a25.67 25.67 0 0 1-1.628.47c-1.125.287-1.701.505-2.13.81-.346.246-.372.402-.065.402.124 0 .388.172.586.383l.362.383.165-.236c.155-.221.728-.53.983-.53.063 0-.006.158-.153.35-.24.315-.267.443-.258 1.239.009.824-.03.993-.543 2.363-.303.811-.665 1.628-.804 1.815-.339.455-1.1.887-1.678.952-.444.05-.462.064-.303.24.284.314.759.464 1.05.331.209-.095.243-.088.194.038-.117.306.364.154.69-.219zm-1.664-.97a4.035 4.035 0 0 0-.251-.386c-.144-.192-.154-.188-.225.095-.08.317.047.47.39.473.147.001.166-.038.086-.183zm1.443-.68c.194-.194.152-.355-.127-.482-.326-.15-.387-.078-.255.3.118.338.191.372.382.182zm-3.1-.35c.21-.087.381-.178.381-.201 0-.175-1.24-.886-2.034-1.165a38.388 38.388 0 0 1-1.158-.421c-.306-.131.179.609.8 1.22.714.703 1.294.867 2.01.567zm-1.279-.127c-.158-.056-.177-.345-.023-.345.11 0 .269.295.195.359-.022.018-.1.012-.172-.014zm-.734-.688c-.2-.26-.242-.381-.149-.439.128-.08.664.352.588.474-.085.138-.32.12-.44-.035zm3.975.296c.813-.147.928-.198 1.245-.557.563-.638.986-1.455.948-1.834-.052-.525-.448-.75-1.425-.805-.451-.026-1.02.006-1.262.072-.582.157-1.206.863-1.45 1.64l-.184.583.276.47c.296.506.547.706.798.637.087-.024.561-.116 1.054-.206zm.1-.96c-.11-.134-.106-.192.03-.328.21-.21.397-.099.397.234 0 .293-.22.342-.426.094zm-.953-.638c-.27-.326.26-.736.594-.459.224.186.19.288-.152.465-.273.141-.32.14-.442-.006zm1.226-.526c-.161-.161-.162-.193-.013-.343.183-.182.338-.09.395.237.047.268-.162.326-.382.106zm4.412 1.437c.425-.182.99-.798.855-.932-.1-.1-1.189.63-1.3.873-.145.319-.157.317.445.06zm-8.732-.641c-.46-.23-.879-.458-.929-.508-.05-.05.19-.122.546-.163.7-.079 1.748-.36 1.662-.447-.03-.03-.426.017-.88.105-1.457.28-1.653.294-1.5.109.074-.089.363-.277.642-.418.544-.276.68-.42.236-.251-.602.229-1.204.657-1.204.857 0 .136.77.61 1.44.885.932.383.926.298-.013-.169zm10.603-.325c.972-.547.98-.556.391-.48-.636.084-1.04.274-1.04.49a.49.49 0 0 1-.127.299c-.218.218-.023.14.776-.309zm8.076-1.603c.037-.565-.019-.588-.69-.283-.496.225-.491.213-.34.761l.11.39.444-.189c.422-.179.446-.212.476-.679zm-5.436-.145c.046-.392-.033-.972-.179-1.32-.045-.107-.031-.185.032-.185.117 0 .546 1.053.546 1.342 0 .14.026.149.13.044.247-.246.077-1.808-.293-2.703-.169-.407.257.05.481.515l.208.433-.035-.527c-.062-.934-.38-1.46-1.203-1.993-1.042-.673-1.089-.759-.417-.753.563.004 1.724-.433 1.985-.747.099-.12.085-.133-.077-.071-.12.046-.042-.085.196-.33.518-.533.535-.822.026-.433-.445.338-.466.277-.08-.229.267-.349.293-.47.327-1.494.036-1.091.033-1.11-.165-.932-.123.111-.24.145-.3.086-.23-.227-.43.18-.615 1.258-.105.609-.253 1.258-.33 1.442-.143.347-.665.751-1.323 1.025l-.38.157-.58-.933-.582-.932.32-.064c.297-.06.306-.075.128-.205-.18-.131-.171-.146.113-.209.309-.068.85-.456.761-.545-.026-.026-.2-.005-.384.048-.39.112-.44-.006-.098-.234.13-.087.397-.453.593-.813.327-.603.338-.65.132-.585-.178.056-.246.014-.33-.206a1.805 1.805 0 0 1-.105-.53c0-.182-.045-.237-.157-.194-.222.085-.298-.192-.175-.637.057-.208.082-.378.055-.378-.118 0-1.311.811-1.962 1.334-.79.634-.854.828-.55 1.67.083.231.152.428.153.438 0 .01-.07.006-.158-.007-.088-.013-.337-.196-.553-.407-.573-.557-1.494-.93-2.448-.992-.83-.053-.883.098-.083.233.863.146.47.26-.896.26-1.059 0-1.615.052-2.222.207-.99.253-1.374.438-.732.353.554-.074 1.637.055 1.556.185-.033.054-.2.098-.373.098-.573 0-1.49.4-1.95.853-.402.394-1.07 1.528-.963 1.634.025.025.254-.07.509-.213.66-.366 1.57-.708 1.57-.59 0 .055-.102.154-.226.22-.53.285-1.46 1.31-1.46 1.611 0 .027.25-.018.553-.099.305-.08.673-.147.82-.148.248-.001.264.029.232.447l-.034.447.237-.316c.395-.528 2.1-2.244 2.853-2.872.39-.325.697-.604.682-.619-.015-.015-.204.013-.42.061-.609.138-.461-.06.214-.285l.606-.202-.395-.075c-.676-.127-.433-.245.304-.146 1.468.197 2.966 1.002 4.336 2.33 1.051 1.02 1.635 1.917 2.014 3.097l.311.972-.5.766c-.659 1.007-.906 1.438-.848 1.48.051.037 1.375.473 1.485.489.037.005.088-.167.113-.382zm-9.664-.727l1.053-1.013-.422.068-.421.068.263-.211c.312-.251.258-.269-.224-.072-.195.08-.474.182-.619.225-.262.08-.262.079-.063-.145.438-.49.006-.183-.76.54-.446.42-1 .92-1.232 1.108-.366.298-.387.336-.158.289.145-.03.5-.012.79.039.29.05.575.098.634.105.058.007.58-.444 1.159-1zm-1.747-.388c.327-.297.423-.452.375-.606-.068-.212-.262-.287-.262-.1a.106.106 0 0 1-.106.105c-.058 0-.105-.118-.105-.263 0-.34-.14-.335-.414.014-.276.351-.28.5-.008.355.249-.134.273-.017.056.27-.167.221-.22.718-.068.66.05-.019.29-.215.532-.435zm15.769-.113c.443-.196.754-.388.69-.427-.135-.084-1.518.504-1.573.669-.055.163-.008.15.883-.242zm-15.231-1.64c-.06-.112-.11-.35-.11-.527 0-.344-.173-.437-.283-.151-.07.183.254.882.41.882.05 0 .043-.092-.017-.204zm.38-.272c.063-.164-.127-.473-.291-.473-.108 0-.126.459-.023.562.117.117.25.08.314-.089zm4.212-.492l.347-.262c.023-.018-.078-.126-.225-.242-.319-.25-.641-.998-.552-1.28.087-.272-.09-.25-.445.056-.252.216-.295.33-.289.768.009.626.309 1.19.634 1.19.124 0 .363-.104.53-.23zm-4.962-1.33c-.078-.078-.396.107-.447.26-.02.058.072.155.204.214.211.095.244.077.275-.15.018-.142.004-.288-.032-.324zm5.232.016c.106-.096.192-.231.192-.3 0-.208-.378-.484-.564-.413-.203.078-.234.574-.047.76.163.164.189.161.419-.047zm5.653-1.38c.377-.361.427-.476.583-1.344.094-.521.244-1.517.334-2.213a87.1 87.1 0 0 1 .262-1.89c.055-.345.082-.644.06-.666-.021-.021-.261.616-.533 1.417-.272.8-.52 1.527-.552 1.614-.033.089.062.047.22-.098.152-.14.277-.216.277-.167 0 .271-.39 1.314-.599 1.601-.28.385-.317.542-.083.347.433-.36.226.322-.27.887-.304.345-.318.554-.017.254.238-.239.14.15-.103.41-.378.402-.023.274.421-.152zm-4.133-2.467c-.191-.273-.227-.183-.055.138.063.117.139.188.17.158.03-.03-.022-.163-.115-.296zm-.64-1.149c.16-.31.156-.343-.125-.817-.208-.352-.303-.44-.33-.31-.047.23-.22.235-.532.016-.24-.167-.24-.166-.172.2.038.201.025.394-.028.427-.054.033-.339-.103-.634-.302l-.537-.362-.069.314c-.038.173-.11.314-.16.314-.137 0-.419-.442-.419-.656 0-.331-.148-.201-.599.525l-.44.71.322.034c.177.02.373-.016.435-.079.187-.186 1.744-.127 2.337.089.729.265.763.261.952-.103zm1.1 14.733l-.47-.237v-1.264l.79-.394c.435-.216.824-.394.865-.395.106-.002.61.881.61 1.07 0 .159-1.114 1.457-1.25 1.457-.042 0-.287-.106-.545-.237zm-1.154-.657c-.196-.202-.335-.386-.31-.41.025-.024.223-.117.44-.207l.395-.164v.574c0 .316-.038.574-.084.574-.047 0-.245-.165-.44-.367zm2.876-1.33c-.278-.42-.282-.448-.097-.558.107-.063.51-.316.894-.561.691-.441.962-.54.962-.354 0 .116-1.2 1.748-1.356 1.845-.061.038-.243-.13-.403-.373z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/furrynetwork.svg b/assets/lib/simple-icons/icons/furrynetwork.svg
index 1509f6a9..2cb0ec2d 100644
--- a/assets/lib/simple-icons/icons/furrynetwork.svg
+++ b/assets/lib/simple-icons/icons/furrynetwork.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Furry Network icon</title><path d="M15.91 0C12.79 0 9.69 0 6.6.03c0 .05-.06.05-.09.08a10.5 10.5 0 0 0-3.66 2.57c-.84.87-1.52 1.9-2.06 3-.2.38-.38.79-.55 1.2-.02.08-.05.2-.13.25v6.22c.05.08.05.2.08.3a8.66 8.66 0 0 0 3.42 4.83c.03.03.05.09.11.06-.03-.03-.03-.06-.06-.08-.24-.36-.46-.69-.67-1.04a9.1 9.1 0 0 1-1.28-5.57 10.09 10.09 0 0 1 1.71-4.53 23.07 23.07 0 0 1 3.64-4.18A13.05 13.05 0 0 1 10.32.98 8.82 8.82 0 0 1 14.74.2c.7.06 1.39.17 2.07.27L17 .5c.08.03.13.03.21.03-.38-.16-.76-.33-1.14-.44-.05-.02-.1-.02-.16-.08zm-1.66.66c-.43.02-.84.05-1.27.13-.74.14-1.44.36-2.15.58a7.47 7.47 0 0 0-1.44.62c-.02 0-.08 0-.08.06h.05a28.12 28.12 0 0 1 3.05-.33c.51-.03 1.06 0 1.57.08.76.11 1.47.39 2.12.77a10.8 10.8 0 0 1 4.4 4.7 15.14 15.14 0 0 1 1.38 5.43c.06.65.06 1.34.03 2.02l-.08 1.14c-.03.33-.08.66-.14.99a6.1 6.1 0 0 1-.27 1.17 11.7 11.7 0 0 1-1.55 2.73c-.49.66-1.05 1.26-1.6 1.86-.08.08-.13.13-.19.22.06 0 .06-.03.08-.03a16.74 16.74 0 0 0 2.31-1.61 10.87 10.87 0 0 0 3.2-4.45l.17-.41h.03v5.87c0 .02 0-9.17.02-15 0 .02 0 .05-.02.07l-.03-.09a10.75 10.75 0 0 0-1.52-2.73 9.7 9.7 0 0 0-3.12-2.64A9.76 9.76 0 0 0 14.25.66zm9.63 6.54l.01-.02V1.75 7.2zm-13-3.33c-.4-.04-.8.09-1.19.42a2.33 2.33 0 0 0-.62.9c-.33.8-.38 1.58-.22 2.4.11.63.4 1.18.92 1.58.52.44 1.12.5 1.66.2.33-.2.57-.44.76-.77.33-.57.46-1.2.46-1.85 0-.3-.02-.58-.08-.88a2.8 2.8 0 0 0-.62-1.4 1.69 1.69 0 0 0-1.08-.6zM16 5.15a2.38 2.38 0 0 0-1.72.83c-.3.27-.46.63-.65.98a3.04 3.04 0 0 0-.38 1.53c0 .38.05.74.21 1.1.28.65.8 1 1.44 1 .47 0 .85-.16 1.2-.43a3.75 3.75 0 0 0 1.5-2.57c.05-.46 0-.93-.17-1.4-.16-.4-.4-.75-.82-.92a1.61 1.61 0 0 0-.6-.12zM6.38 7.56c-.44.03-.84.2-1.11.6-.36.5-.47 1.07-.5 1.64-.02.6.12 1.15.39 1.67.22.43.51.82.92 1.1.52.34 1.17.34 1.63.02.27-.2.46-.47.6-.77.27-.63.32-1.3.16-1.99a3.3 3.3 0 0 0-1.06-1.86c-.3-.24-.62-.4-1.03-.4zm11.86 2.64a1.84 1.84 0 0 0-.9.2 3.5 3.5 0 0 0-1.81 1.97 2.44 2.44 0 0 0-.11 1.58c.14.5.4.85.9.99.19.05.4.08.6.08.32 0 .54-.03.8-.17.53-.24.93-.6 1.28-1.03a2.9 2.9 0 0 0 .63-2.46 1.3 1.3 0 0 0-1.09-1.12 1.87 1.87 0 0 0-.3-.04zm-7.11 1.65c-.08 0-.22 0-.35.03a3.58 3.58 0 0 0-1.5.4c-.6.34-1.1.77-1.57 1.26a10.07 10.07 0 0 0-1.39 1.83c-.21.38-.35.8-.32 1.23.03.25.03.47.14.68.3.39.7.66 1.19.77.46.08.92.03 1.38-.03.52-.05 1-.1 1.5-.08.78.05 1.5.3 2.12.79.24.2.46.41.73.6.51.36 1.06.52 1.68.38.52-.1.87-.43.98-.95.1-.44.08-.85.02-1.29a9.46 9.46 0 0 0-.37-1.5 9.95 9.95 0 0 0-1-2.26c-.3-.5-.66-.93-1.15-1.26a3.68 3.68 0 0 0-2.09-.6zM.11 14.64v2.13c.1.13.16.3.22.46a12.8 12.8 0 0 0 2.41 4.18 9.6 9.6 0 0 0 3.83 2.56c.03 0 .05.03.08.03h8.01c.03-.03.03-.03.05-.03a8.68 8.68 0 0 0 1.99-.9 11.4 11.4 0 0 0 4.26-4.8c.43-1.01.65-2.08.7-3.2a.4.4 0 0 0 0-.24c-.02.02-.05.05-.05.08l-.22.7a8.29 8.29 0 0 1-1.87 3.2 8.08 8.08 0 0 1-2.85 1.91c-.95.39-1.95.55-2.99.6-.76.03-1.49 0-2.22-.05a24.34 24.34 0 0 1-3.1-.44 15.48 15.48 0 0 1-3.75-1.36 10.15 10.15 0 0 1-3.3-2.76 7.5 7.5 0 0 1-1.2-2.07z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Furry Network</title><path d="M15.91 0C12.79 0 9.69 0 6.6.03c0 .05-.06.05-.09.08a10.5 10.5 0 0 0-3.66 2.57c-.84.87-1.52 1.9-2.06 3-.2.38-.38.79-.55 1.2-.02.08-.05.2-.13.25v6.22c.05.08.05.2.08.3a8.66 8.66 0 0 0 3.42 4.83c.03.03.05.09.11.06-.03-.03-.03-.06-.06-.08-.24-.36-.46-.69-.67-1.04a9.1 9.1 0 0 1-1.28-5.57 10.09 10.09 0 0 1 1.71-4.53 23.07 23.07 0 0 1 3.64-4.18A13.05 13.05 0 0 1 10.32.98 8.82 8.82 0 0 1 14.74.2c.7.06 1.39.17 2.07.27L17 .5c.08.03.13.03.21.03-.38-.16-.76-.33-1.14-.44-.05-.02-.1-.02-.16-.08zm-1.66.66c-.43.02-.84.05-1.27.13-.74.14-1.44.36-2.15.58a7.47 7.47 0 0 0-1.44.62c-.02 0-.08 0-.08.06h.05a28.12 28.12 0 0 1 3.05-.33c.51-.03 1.06 0 1.57.08.76.11 1.47.39 2.12.77a10.8 10.8 0 0 1 4.4 4.7 15.14 15.14 0 0 1 1.38 5.43c.06.65.06 1.34.03 2.02l-.08 1.14c-.03.33-.08.66-.14.99a6.1 6.1 0 0 1-.27 1.17 11.7 11.7 0 0 1-1.55 2.73c-.49.66-1.05 1.26-1.6 1.86-.08.08-.13.13-.19.22.06 0 .06-.03.08-.03a16.74 16.74 0 0 0 2.31-1.61 10.87 10.87 0 0 0 3.2-4.45l.17-.41h.03v5.87c0 .02 0-9.17.02-15 0 .02 0 .05-.02.07l-.03-.09a10.75 10.75 0 0 0-1.52-2.73 9.7 9.7 0 0 0-3.12-2.64A9.76 9.76 0 0 0 14.25.66zm9.63 6.54.01-.02zm-13-3.33c-.4-.04-.8.09-1.19.42a2.33 2.33 0 0 0-.62.9c-.33.8-.38 1.58-.22 2.4.11.63.4 1.18.92 1.58.52.44 1.12.5 1.66.2.33-.2.57-.44.76-.77.33-.57.46-1.2.46-1.85 0-.3-.02-.58-.08-.88a2.8 2.8 0 0 0-.62-1.4 1.69 1.69 0 0 0-1.08-.6zM16 5.15a2.38 2.38 0 0 0-1.72.83c-.3.27-.46.63-.65.98a3.04 3.04 0 0 0-.38 1.53c0 .38.05.74.21 1.1.28.65.8 1 1.44 1 .47 0 .85-.16 1.2-.43a3.75 3.75 0 0 0 1.5-2.57c.05-.46 0-.93-.17-1.4-.16-.4-.4-.75-.82-.92a1.61 1.61 0 0 0-.6-.12zM6.38 7.56c-.44.03-.84.2-1.11.6-.36.5-.47 1.07-.5 1.64-.02.6.12 1.15.39 1.67.22.43.51.82.92 1.1.52.34 1.17.34 1.63.02.27-.2.46-.47.6-.77.27-.63.32-1.3.16-1.99a3.3 3.3 0 0 0-1.06-1.86c-.3-.24-.62-.4-1.03-.4zm11.86 2.64a1.84 1.84 0 0 0-.9.2 3.5 3.5 0 0 0-1.81 1.97 2.44 2.44 0 0 0-.11 1.58c.14.5.4.85.9.99.19.05.4.08.6.08.32 0 .54-.03.8-.17.53-.24.93-.6 1.28-1.03a2.9 2.9 0 0 0 .63-2.46 1.3 1.3 0 0 0-1.09-1.12 1.87 1.87 0 0 0-.3-.04zm-7.11 1.65c-.08 0-.22 0-.35.03a3.58 3.58 0 0 0-1.5.4c-.6.34-1.1.77-1.57 1.26a10.07 10.07 0 0 0-1.39 1.83c-.21.38-.35.8-.32 1.23.03.25.03.47.14.68.3.39.7.66 1.19.77.46.08.92.03 1.38-.03.52-.05 1-.1 1.5-.08.78.05 1.5.3 2.12.79.24.2.46.41.73.6.51.36 1.06.52 1.68.38.52-.1.87-.43.98-.95.1-.44.08-.85.02-1.29a9.46 9.46 0 0 0-.37-1.5 9.95 9.95 0 0 0-1-2.26c-.3-.5-.66-.93-1.15-1.26a3.68 3.68 0 0 0-2.09-.6zM.11 14.64v2.13c.1.13.16.3.22.46a12.8 12.8 0 0 0 2.41 4.18 9.6 9.6 0 0 0 3.83 2.56c.03 0 .05.03.08.03h8.01c.03-.03.03-.03.05-.03a8.68 8.68 0 0 0 1.99-.9 11.4 11.4 0 0 0 4.26-4.8c.43-1.01.65-2.08.7-3.2a.4.4 0 0 0 0-.24c-.02.02-.05.05-.05.08l-.22.7a8.29 8.29 0 0 1-1.87 3.2 8.08 8.08 0 0 1-2.85 1.91c-.95.39-1.95.55-2.99.6-.76.03-1.49 0-2.22-.05a24.34 24.34 0 0 1-3.1-.44 15.48 15.48 0 0 1-3.75-1.36 10.15 10.15 0 0 1-3.3-2.76 7.5 7.5 0 0 1-1.2-2.07z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/futurelearn.svg b/assets/lib/simple-icons/icons/futurelearn.svg
new file mode 100644
index 00000000..a489f3cb
--- /dev/null
+++ b/assets/lib/simple-icons/icons/futurelearn.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>FutureLearn</title><path d="M22.081.61v7.566h-7.223v6.661H7.566v6.634H0v1.92h9.471v-6.649h7.306v-6.66H24V.61Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/g2.svg b/assets/lib/simple-icons/icons/g2.svg
new file mode 100644
index 00000000..d429b424
--- /dev/null
+++ b/assets/lib/simple-icons/icons/g2.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>G2</title><path d="M12 0a12 12 0 1 0 0 24 12 12 0 0 0 0-24Zm.122 5.143c.45 0 .9.044 1.342.132l-1.342 2.806C9.962 8.08 8.203 9.84 8.203 12s1.76 3.92 3.92 3.92c.937 0 1.844-.338 2.553-.951l1.483 2.572A6.856 6.856 0 0 1 5.266 12a6.856 6.856 0 0 1 6.856-6.856Zm3.498.49a1.262 1.262 0 0 1 .026 0c.427 0 .792.113 1.101.34.31.229.466.546.466.946 0 .639-.36 1.03-1.035 1.376l-.377.191c-.403.204-.602.385-.657.706h2.05v.85h-3.101v-.144c0-.526.103-.96.314-1.306.211-.345.576-.65 1.102-.917l.242-.117c.427-.216.538-.401.538-.625 0-.266-.228-.458-.6-.458-.44 0-.773.228-1.004.694l-.592-.595c.13-.279.338-.502.619-.675a1.7 1.7 0 0 1 .908-.266Zm-2.094 5.388h3.394l1.697 2.937-1.697 2.94-1.697-2.94H11.83l1.696-2.937Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/g2a.svg b/assets/lib/simple-icons/icons/g2a.svg
new file mode 100644
index 00000000..64259afd
--- /dev/null
+++ b/assets/lib/simple-icons/icons/g2a.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>G2A</title><path d="M24 15.419s-1.8844-3.5895-3.1571-6.0153a1.6802 1.6802 0 0 0-.4674-.5659 1.3021 1.3021 0 0 0-.7927-.2572 1.239 1.239 0 0 0-.7715.2572 1.6802 1.6802 0 0 0-.4674.5659c-1.2726 2.4258-3.1783 6.0153-3.1783 6.0153l1.7391.0004 2.6781-5.1339 1.2586 2.4128h-1.9378l.6832 1.3053h1.9356l.7386 1.4154H24zM3.4872 13.9588c-1.071 0-1.9392-.8682-1.9392-1.9392s.8682-1.9392 1.9392-1.9392l3.9342-.0031V8.6212H3.3946C1.5174 8.6236-.0024 10.1473 0 12.0244c.0024 1.8738 1.5208 3.3922 3.3946 3.3946h4.0268v-4.1277H3.053v1.4571l2.8447-.0001v1.2141l-2.4105-.0036zm7.2305-1.2109 3.0641-.0002c1.1395 0 2.0633-.9238 2.0633-2.0633s-.9238-2.0633-2.0633-2.0633h-3.6463c-.804-.0002-1.4559.6515-1.4561 1.4555v.0006l4.9963-.0001a.6157.6157 0 0 1 .6201.591.6064.6064 0 0 1-.5894.6229l-.0159.0002h-3.185c-1.0725.0004-1.9417.8701-1.9413 1.9426v2.185h5.4523l.7727-1.4566h-4.7014v-.5841a.63.63 0 0 1 .6299-.6302z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/gameandwatch.svg b/assets/lib/simple-icons/icons/gameandwatch.svg
new file mode 100644
index 00000000..cd295a9f
--- /dev/null
+++ b/assets/lib/simple-icons/icons/gameandwatch.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Game &amp; Watch</title><path d="M22.595 1.912c.59 0 .985.279 1.21.74.078.164.134.338.164.518l.021.147.01.148v17.223c0 .59-.254.987-.677 1.21a1.652 1.652 0 0 1-.573.179l-.15.011H1.558c-.647 0-1.085-.245-1.337-.657a1.526 1.526 0 0 1-.208-.582L0 20.694V3.474C0 2.82.277 2.38.737 2.132a1.82 1.82 0 0 1 .52-.184l.146-.024.146-.011Zm0 .256H1.528a1.562 1.562 0 0 0-.668.186c-.344.188-.559.494-.598.959l-.007.16v17.218c.01.215.073.424.185.607.184.303.491.495.958.53l.162.006h21.036a1.39 1.39 0 0 0 .607-.16c.304-.16.496-.425.535-.829l.007-.158V3.467a1.705 1.705 0 0 0-.028-.252 1.682 1.682 0 0 0-.142-.451c-.184-.378-.495-.596-.98-.596zm-6.099 12.94c.97 0 1.822.531 2.296 1.303l.09.157h-1.03a1.835 1.835 0 0 0-1.356-.61 1.844 1.844 0 1 0 1.26 3.189l.11-.113h1.025a2.694 2.694 0 1 1-2.395-3.927zm-13.76.175v3.545l2.35-3.538v-.007h.879v3.545l2.353-3.542h1.055L5.965 20.42h-.88v-3.54l-2.348 3.54h-.88v-5.137zm8.072.001v5.135h-.88V19.32H8.303l-.728 1.096H6.52l3.408-5.132zm3.211 0v.878h-.994v4.256h-.88v-4.256l-.994.001v-.88zm5.968 0v2.067h1.588v-2.068h.88v5.135h-.88V18.23h-1.588v2.188h-.878v-5.135Zm-10.06 1.59-1.041 1.568h1.042Zm1.666-7.391c.331-.002.65.128.886.36.201.202.312.468.312.75 0 .471-.219.773-.489 1.01l-.092.078.676.623.454-1.023h.862l-.705 1.587 1.216 1.123-.536.58-1.022-.946c-.317.624-.73 1.027-1.562 1.027-.441 0-.84-.158-1.127-.444a1.555 1.555 0 0 1-.44-1.11c0-.762.426-1.13.916-1.477-.264-.232-.53-.545-.53-1.028 0-.695.6-1.11 1.18-1.11zm.955 3.581-.99-.914-.262.188c-.34.25-.481.422-.481.76a.76.76 0 0 0 .208.553c.153.145.359.221.57.212.438 0 .636-.133.878-.63zm-.955-2.792a.45.45 0 0 0-.243.068l-.067.052a.27.27 0 0 0-.083.2c0 .212.155.354.408.557.29-.214.396-.335.396-.556a.26.26 0 0 0-.082-.192.484.484 0 0 0-.33-.13zM6.97 5.07h-.933a1.88 1.88 0 1 0 .168 1.878h-1.66v-.855h2.65l.002.06A2.696 2.696 0 0 1 4.5 8.85 2.698 2.698 0 1 1 6.97 5.07Zm15.11-1.561v.879h-1.79v1.298h1.79v.879h-1.79v1.197h1.79v.879h-1.79l-.88.004V3.509zm-11.142 0v5.135h-.88v-1.1H8.433l-.728 1.098H6.65l3.408-5.133Zm7.761-.001v5.135h-.879V5.098l-2.35 3.539v.006h-.879V5.098L12.238 8.64h-1.055l3.408-5.132h.88v3.538l2.35-3.54zm-8.641 1.59L9.017 6.666h1.04z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/gamejolt.svg b/assets/lib/simple-icons/icons/gamejolt.svg
new file mode 100644
index 00000000..f31efd9b
--- /dev/null
+++ b/assets/lib/simple-icons/icons/gamejolt.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Game Jolt</title><path d="M6.353 0v2.824H4.94v2.823H3.53v2.824H2.118v2.823H.706v2.824h8.47v2.823H7.765v2.824H6.353v2.823h1.412v-1.412h1.411v-1.411h1.412v-1.412H12V16.94h1.412v-1.41h1.412v-1.411h1.411v-1.412h1.412v-1.412h1.412V9.882h1.412V8.471h1.411V7.059h-4.235V5.647h1.412V4.235h1.412V2.824h1.411V1.412h1.412V0zm0 22.588H4.94V24h1.412zM7.765 2.824h9.882v1.411h-1.412v1.412h-1.411V7.06h-1.412v1.41H12v1.411h1.412v1.412H12V9.882h-1.412v1.412H9.176V9.882H7.765v1.412H6.353V9.882H4.94V8.471h1.412V5.647h1.412zM6.353 8.47v1.411h1.412v-1.41zm2.823 1.411h1.412v-1.41H9.176zm5.648 0h1.411v1.412h-1.411Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/garmin.svg b/assets/lib/simple-icons/icons/garmin.svg
index 71b97b3c..4f010643 100644
--- a/assets/lib/simple-icons/icons/garmin.svg
+++ b/assets/lib/simple-icons/icons/garmin.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Garmin icon</title><path d="M22.017 22.67H1.984c-.77 0-1.388-.383-1.694-1.002-.387-.61-.387-1.39 0-2.002L10.304 2.33c.385-.615 1.002-1 1.695-1 .77 0 1.386.385 1.69 1l10.02 17.336c.387.617.387 1.39 0 2.002-.31.695-.927 1.002-1.693 1.002z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Garmin</title><path d="M6.265 12.024a.289.289 0 0 0-.236-.146h-.182a.289.289 0 0 0-.234.146l-1.449 3.025c-.041.079.004.138.094.138h.335c.132 0 .193-.061.228-.134.037-.073.116-.234.13-.266.02-.045.083-.071.175-.071h1.559c.089 0 .148.016.175.071.018.035.098.179.136.256a.24.24 0 0 0 .234.142h.486c.089 0 .13-.069.098-.132-.034-.061-1.549-3.029-1.549-3.029zm-.914 2.224c-.089 0-.132-.067-.094-.148l.571-1.222c.039-.081.1-.081.136 0l.555 1.222c.037.081-.006.148-.096.148H5.351zm12.105-2.201v3.001c0 .083.073.138.163.138h.396c.089 0 .163-.057.163-.146v-2.998c0-.089-.059-.163-.148-.163h-.411c-.09-.001-.163.054-.163.168zm-6.631 1.88c-.051-.073-.022-.154.063-.181 0 0 .342-.102.506-.25.165-.146.246-.36.246-.636a1 1 0 0 0-.096-.457.787.787 0 0 0-.27-.303 1.276 1.276 0 0 0-.423-.171c-.165-.035-.386-.047-.386-.047a8.81 8.81 0 0 0-.325-.008H8.495a.164.164 0 0 0-.163.163v2.998c0 .089.073.146.163.146h.388c.089 0 .163-.057.163-.146v-1.193s.002 0 .002-.002l.738-.002c.089 0 .205.061.258.134l.766 1.077c.071.096.138.132.228.132h.508c.089 0 .104-.085.073-.128-.032-.038-.794-1.126-.794-1.126zm-.311-.61a1.57 1.57 0 0 1-.213.028 8.807 8.807 0 0 1-.325.006h-.763a.164.164 0 0 1-.163-.163v-.608c0-.089.073-.163.163-.163h.762c.089 0 .236.004.325.006 0 0 .114.004.213.028a.629.629 0 0 1 .24.098.358.358 0 0 1 .126.148.473.473 0 0 1 0 .374.352.352 0 0 1-.126.148.617.617 0 0 1-.239.098zm11.803-1.439c-.089 0-.163.059-.163.146v1.919c0 .089-.051.11-.114.047l-1.921-1.992a.376.376 0 0 0-.276-.118h-.362c-.114 0-.163.061-.163.122v3.068c0 .061.059.12.148.12h.362c.089 0 .152-.049.152-.132l.002-2.021c0-.089.051-.11.114-.045l2.004 2.082a.36.36 0 0 0 .279.116h.272a.164.164 0 0 0 .163-.163v-2.986a.164.164 0 0 0-.163-.163h-.334zm-7.835 1.87c-.043.079-.116.077-.159 0l-.939-1.724a.262.262 0 0 0-.236-.146h-.51a.164.164 0 0 0-.163.163v2.996c0 .089.059.15.163.15h.317c.089 0 .154-.057.154-.142 0-.041.002-2.179.004-2.179.004 0 1.173 2.177 1.173 2.177a.105.105 0 0 0 .189 0s1.179-2.173 1.181-2.173c.004 0 .002 2.11.002 2.173 0 .087.069.142.159.142h.364c.089 0 .163-.045.163-.163V12.04a.164.164 0 0 0-.163-.163h-.488a.265.265 0 0 0-.244.142l-.967 1.729zM0 13.529c0 1.616 1.653 1.697 1.984 1.697 1.098 0 1.561-.297 1.58-.309a.29.29 0 0 0 .152-.264v-1.116a.186.186 0 0 0-.187-.187H2.151c-.104 0-.171.083-.171.187v.116c0 .104.067.187.171.187h.797a.14.14 0 0 1 .14.14v.52c-.157.065-.874.274-1.451.136-.836-.199-.901-.89-.901-1.096 0-.173.053-1.043 1.079-1.13.831-.071 1.378.264 1.384.268.098.051.199.014.254-.089l.104-.209c.043-.085.028-.175-.077-.246-.006-.004-.59-.319-1.494-.319C.055 11.813 0 13.354 0 13.529zm22.134-2.478h-2.165c-.079 0-.148-.039-.187-.108s-.039-.146 0-.215l1.084-1.874a.21.21 0 0 1 .187-.108.21.21 0 0 1 .187.108l1.084 1.874a.203.203 0 0 1 0 .215.22.22 0 0 1-.19.108zm1.488 3.447c.207 0 .378.169.378.378a.379.379 0 0 1-.378.378.379.379 0 0 1-.378-.378.38.38 0 0 1 .378-.378zm.002.7c.173 0 .305-.14.305-.321s-.13-.321-.305-.321-.307.14-.307.321c0 .18.13.321.307.321zm-.146-.543h.169c.102 0 .152.041.152.124 0 .071-.045.122-.114.122l.126.195h-.077l-.124-.195h-.061v.195h-.073v-.441h.002zm.073.189h.085c.055 0 .091-.012.091-.069 0-.051-.045-.065-.091-.065h-.085v.134z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/gatling.svg b/assets/lib/simple-icons/icons/gatling.svg
index f68f29e7..44d51d7f 100644
--- a/assets/lib/simple-icons/icons/gatling.svg
+++ b/assets/lib/simple-icons/icons/gatling.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Gatling icon</title><path d="M19.1361 17.306c.6633-.393 1.2406-.9211 1.6827-1.5598h.7738a.7129.7129 0 0 0 .7124-.7124.7129.7129 0 0 0-.7124-.7124h-.0614c.1474-.4545.2457-.9212.2702-1.4125h.7615a.7129.7129 0 0 0 .7124-.7124.7129.7129 0 0 0-.7124-.7124h-.786c-.0492-.4913-.172-.9703-.344-1.4125h.1474a.7129.7129 0 0 0 .7124-.7123.7129.7129 0 0 0-.7124-.7124h-.958c-.9826-1.2283-2.5302-2.0512-4.262-2.0512h-1.216c-.7615 0-1.4984.1597-2.1617.4545H14.26c2.9478 0 5.3674 2.4196 5.3674 5.3674 0 2.7267-2.0511 4.9867-4.6919 5.3306-.1597.0123-.3193.0246-.4913.0246H8.9171a6.5941 6.5941 0 0 0 2.2477-2.0266c.0368.0122.086.0122.1228.0122h4.8148a.7129.7129 0 0 0 .7123-.7123.7129.7129 0 0 0-.7123-.7124H11.914a6.8244 6.8244 0 0 0 .3685-1.4125h5.5148a.7129.7129 0 0 0 .7124-.7124.7129.7129 0 0 0-.7124-.7124H12.344c-.0368-.4913-.1351-.958-.2702-1.4125h4.0532a.7129.7129 0 0 0 .7124-.7124.7129.7129 0 0 0-.7124-.7123h-4.6796c-1.1423-1.9284-3.2549-3.2303-5.65-3.2303h-.4667C3.1443 5.4289 1.1914 6.522 0 8.18a5.8463 5.8463 0 0 1 4.434-2.0266c2.5302 0 4.6919 1.609 5.5025 3.8567H6.9642C6.3746 9.261 5.4534 8.782 4.434 8.782c-1.781.0246-3.218 1.4616-3.218 3.2426s1.4493 3.2303 3.2303 3.2303c1.0563 0 1.9897-.5036 2.5793-1.2897H3.955c0-1.4248 1.1545-2.567 2.567-2.567h3.7462c.0245.2088.0368.4176.0368.6264 0 3.2303-2.6284 5.8587-5.8587 5.8587-1.7073 0-3.2426-.737-4.3235-1.9038 1.2037 1.5722 3.0952 2.5916 5.22 2.5916h9.6296c4.9867 0 9.0276-.2947 9.0276-.6755 0-.2457-1.9775-.479-4.8639-.5896Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Gatling</title><path d="M19.1361 17.306c.6633-.393 1.2406-.9211 1.6827-1.5598h.7738a.7129.7129 0 0 0 .7124-.7124.7129.7129 0 0 0-.7124-.7124h-.0614c.1474-.4545.2457-.9212.2702-1.4125h.7615a.7129.7129 0 0 0 .7124-.7124.7129.7129 0 0 0-.7124-.7124h-.786c-.0492-.4913-.172-.9703-.344-1.4125h.1474a.7129.7129 0 0 0 .7124-.7123.7129.7129 0 0 0-.7124-.7124h-.958c-.9826-1.2283-2.5302-2.0512-4.262-2.0512h-1.216c-.7615 0-1.4984.1597-2.1617.4545H14.26c2.9478 0 5.3674 2.4196 5.3674 5.3674 0 2.7267-2.0511 4.9867-4.6919 5.3306-.1597.0123-.3193.0246-.4913.0246H8.9171a6.5941 6.5941 0 0 0 2.2477-2.0266c.0368.0122.086.0122.1228.0122h4.8148a.7129.7129 0 0 0 .7123-.7123.7129.7129 0 0 0-.7123-.7124H11.914a6.8244 6.8244 0 0 0 .3685-1.4125h5.5148a.7129.7129 0 0 0 .7124-.7124.7129.7129 0 0 0-.7124-.7124H12.344c-.0368-.4913-.1351-.958-.2702-1.4125h4.0532a.7129.7129 0 0 0 .7124-.7124.7129.7129 0 0 0-.7124-.7123h-4.6796c-1.1423-1.9284-3.2549-3.2303-5.65-3.2303h-.4667C3.1443 5.4289 1.1914 6.522 0 8.18a5.8463 5.8463 0 0 1 4.434-2.0266c2.5302 0 4.6919 1.609 5.5025 3.8567H6.9642C6.3746 9.261 5.4534 8.782 4.434 8.782c-1.781.0246-3.218 1.4616-3.218 3.2426s1.4493 3.2303 3.2303 3.2303c1.0563 0 1.9897-.5036 2.5793-1.2897H3.955c0-1.4248 1.1545-2.567 2.567-2.567h3.7462c.0245.2088.0368.4176.0368.6264 0 3.2303-2.6284 5.8587-5.8587 5.8587-1.7073 0-3.2426-.737-4.3235-1.9038 1.2037 1.5722 3.0952 2.5916 5.22 2.5916h9.6296c4.9867 0 9.0276-.2947 9.0276-.6755 0-.2457-1.9775-.479-4.8639-.5896Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/gatsby.svg b/assets/lib/simple-icons/icons/gatsby.svg
index 021f42fc..bd469130 100644
--- a/assets/lib/simple-icons/icons/gatsby.svg
+++ b/assets/lib/simple-icons/icons/gatsby.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Gatsby icon</title><path d="M12.001.007C5.326.007.007 5.326.007 12S5.326 23.995 12 23.995s11.994-5.319 11.994-11.994S18.676.007 12.001.007zM2.614 12.105l9.283 9.283c-5.111 0-9.283-4.172-9.283-9.283zm11.473 9.074L2.823 9.915C3.76 5.743 7.516 2.614 12 2.614a9.476 9.476 0 0 1 7.614 3.86L18.259 7.62a7.657 7.657 0 0 0-6.362-3.337A7.555 7.555 0 0 0 4.7 9.393l9.804 9.805c2.4-.835 4.276-2.92 4.798-5.424h-4.068v-1.773h6.154c0 4.485-3.129 8.24-7.301 9.178z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Gatsby</title><path d="M12 0C5.4 0 0 5.4 0 12s5.4 12 12 12 12-5.4 12-12S18.6 0 12 0zm0 2.571c3.171 0 5.915 1.543 7.629 3.858l-1.286 1.115C16.886 5.572 14.571 4.286 12 4.286c-3.343 0-6.171 2.143-7.286 5.143l9.857 9.857c2.486-.857 4.373-3 4.973-5.572h-4.115V12h6c0 4.457-3.172 8.228-7.372 9.17L2.83 9.944C3.772 5.743 7.543 2.57 12 2.57zm-9.429 9.6l9.344 9.258c-2.4-.086-4.801-.943-6.601-2.743-1.8-1.8-2.743-4.201-2.743-6.515z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/gauges.svg b/assets/lib/simple-icons/icons/gauges.svg
deleted file mode 100644
index 6a7e03dd..00000000
--- a/assets/lib/simple-icons/icons/gauges.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Gauges icon</title><path d="M12.6 12.635l-1.125-.053c-.945-.033-1.197-.083-1.197-.435 0-.135.1-.318.303-.42.167.036.337.053.507.053 2.415 0 3.63-1.17 3.63-2.98 0-.3-.074-.57-.225-.735h.96v-2.01H12.6c-.472-.115-.892-.2-1.465-.2-2.543 0-3.804 1.474-3.804 3.18 0 1.07.506 1.84 1.26 2.242-.584.234-1.022.87-1.022 1.54 0 .586.322 1.054.81 1.287-.64.336-1.215 1.155-1.215 1.94 0 1.66 1.35 2.476 3.64 2.476 2.873 0 4.695-1.604 4.695-3.41h-.018c0-1.674-1.078-2.41-2.88-2.475zm-1.462-4.78c.895 0 1.342.48 1.342 1.193 0 .71-.5 1.14-1.325 1.14-.893 0-1.342-.445-1.342-1.173 0-.68.483-1.16 1.325-1.16zm2.008 7.554c0 .63-.612 1.113-1.82 1.113-.944 0-1.5-.405-1.5-1.002 0-.353.226-.708.6-.997.09.015.226 0 .33.015l1.35.032c.796.033 1.08.388 1.08.84h-.04zM17.637 10.854v.002c-.99 0-1.824.834-1.824 1.845 0 1.01.834 1.823 1.824 1.823 1.01 0 1.846-.814 1.846-1.824 0-1.01-.837-1.846-1.846-1.846zM12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0zm0 22.335C6.293 22.335 1.665 17.708 1.665 12 1.665 6.293 6.293 1.665 12 1.665c5.708 0 10.335 4.628 10.335 10.335 0 5.708-4.627 10.335-10.335 10.335z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/geant.svg b/assets/lib/simple-icons/icons/geant.svg
new file mode 100644
index 00000000..9f9d993f
--- /dev/null
+++ b/assets/lib/simple-icons/icons/geant.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>G&#233;ant</title><path d="M20.31 14.857c-.027-.014-.04-.014-.027-.07.014-.068.041-.152.055-.207.028-.097.083-.153.25-.166.138-.014.305-.014.402-.056-.125.36-.5.263-.68.5zm3.314.57c-.07.304-.305.525-.513.512-.139-.014-.18-.153-.139-.305.056-.25.278-.513.5-.5.124.014.194.125.152.292m-.083-.486c-.458-.027-.818.305-.874.652-.332.347-.47.305-.443.18.041-.152.25-.54.263-.693 0-.083-.04-.14-.152-.152-.18-.014-.486.18-.777.415-.055.042-.083.014-.07-.027.042-.11.07-.167.112-.278.014-.027.014-.04-.014-.055a.314.314 0 0 0-.166-.083c-.056 0-.097.014-.125.07-.25.22-.735.886-.9.873-.029 0-.057-.014-.057-.056 0-.097.32-.75.32-.818 0-.04-.029-.055-.056-.055-.07 0-.416.11-.444.138-.014.014-.014.028-.028.056.042 0 .07.014.056.083-.042.152-.278.638-.278.735 0 .097.042.152.153.152.291.014.582-.194.97-.638-.097.195-.166.375-.18.5-.014.124.166.138.264.124.041 0 .041 0 .055-.04.042-.112.166-.334.444-.584.124-.11.29-.235.36-.22.056 0 .056.054.056.082-.028.125-.125.32-.195.5-.055.165.014.276.153.276.18.014.43-.097.68-.332.027.194.166.346.415.36.458.028.888-.305.915-.763.014-.22-.194-.388-.457-.402m-3.799.236c0 .014.014.014.028 0 .07-.028.152-.083.152-.14 0-.068-.083-.11-.346-.123-.402-.028-.75.11-.75.332 0 .278.542.32.542.555 0 .11-.125.208-.36.208-.167 0-.306-.056-.306-.18 0-.083.07-.167.32-.222-.029-.042-.056-.042-.098-.042-.29.042-.458.153-.458.29-.013.154.111.279.583.293.527.013.748-.222.748-.43 0-.236-.332-.36-.485-.472-.04-.027-.07-.07-.07-.097 0-.055.07-.124.264-.124.083 0 .18.027.208.055.042.014.042.055.028.097zm-2.44.68c-.08 0-.122-.056-.122-.125.014-.32.5-.707.97-.638-.236.54-.596.776-.845.762m1.29-.804c.024-.04.01-.083-.03-.097-.07-.014-.168-.027-.25-.04-.913-.057-1.551.47-1.58.886-.012.166.085.277.32.29.25 0 .569-.138.776-.29.055-.042.055-.028.055.014-.04.138-.028.263.11.277.152.014.346-.07.415-.097 0 0 .014-.028.014-.055-.083 0-.11-.084-.097-.167.014-.208.18-.568.263-.72m-1.383-.278c0 .028.014.028.027.028.208 0 .36-.14.36-.222 0-.083-.096-.208-.5-.208-1.177-.014-1.953.513-2.022 1.095-.084.777 1.053 1.18 2.024.943.222-.055.346-.125.346-.166v-.084a1.22 1.22 0 0 1-.208.07c-.79.235-1.733-.083-1.65-.804.056-.513.722-.93 1.429-.915a.27.27 0 0 1 .11.013c.098.014.14.056.14.11.013.07 0 .098-.056.14M7.28 8.909c.333-.152 1.969-1.123 2.024-1.15.07-.041.347-.07.5.208.152.277.152.554-.237.707-.388.138-2.024.388-2.287.235m2.274 2.052c-.056-.527-.36-.86-.832-.86s-.777.32-.832.86zm1.164 1.94c-.86.528-1.58.528-1.885.528-1.345 0-2.22-.79-2.22-2.01 0-1.414 1-2.12 2.19-2.12 1.125 0 2.04.886 1.998 2.272H7.93c.042.735.513 1.096 1.262 1.096.485 0 .79-.097 1.525-.527zm13.044-2.675h-1.179v1.692c0 .374.222.624.596.624.25 0 .375-.056.79-.222v.887c-.526.18-.83.25-1.206.25-.804 0-1.497-.374-1.497-1.456v-1.775h-.555v-.873h.583v-.86l1.29-.554v1.4h1.178zm-6.25-.36c.402-.444.801-.596 1.314-.596.638 0 1.483.388 1.483 1.54v2.55h-1.275v-2.37c0-.556-.277-.777-.638-.777-.319 0-.551.166-.884.637v2.51h-1.276V9.367h1.276zm-3.674 1.58c-.721.264-1.054.43-1.054.82 0 .22.18.414.388.414.222 0 .472-.11.666-.29zm1.733 1.637c-.32.208-.804.36-1.123.36-.402 0-.596-.125-.68-.444-.471.32-.845.444-1.261.444-.61 0-1.068-.47-1.068-.957 0-.93.777-1.178 2.385-1.69.028-.36-.18-.653-.707-.653-.486 0-.888.07-1.331.32l-.14-.736c.5-.32 1.096-.443 1.706-.443.97 0 1.789.43 1.789 1.275l.014 1.692c0 .194.055.235.18.235.083 0 .056 0 .236-.097v.666zM5.42 8.95c-.832-.43-1.178-.485-1.872-.485-1.54 0-2.08 1.22-2.08 2.08 0 1.025.79 1.913 1.97 1.913.346 0 .526-.028 1.04-.208v-.957h-.916v-.998h2.302v2.357c-.486.443-1.54.776-2.454.776-1.997 0-3.411-1.22-3.411-2.94 0-1.76 1.4-2.965 3.425-2.965.845 0 1.69.194 2.343.54z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/geeksforgeeks.svg b/assets/lib/simple-icons/icons/geeksforgeeks.svg
new file mode 100644
index 00000000..7ab88b18
--- /dev/null
+++ b/assets/lib/simple-icons/icons/geeksforgeeks.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GeeksforGeeks</title><path d="M21.45 14.315c-.143.28-.334.532-.565.745a3.691 3.691 0 0 1-1.104.695 4.51 4.51 0 0 1-3.116-.016 3.79 3.79 0 0 1-2.135-2.078 3.571 3.571 0 0 1-.13-.353h7.418a4.26 4.26 0 0 1-.368 1.008zm-11.99-.654a3.793 3.793 0 0 1-2.134 2.078 4.51 4.51 0 0 1-3.117.016 3.7 3.7 0 0 1-1.104-.695 2.652 2.652 0 0 1-.564-.745 4.221 4.221 0 0 1-.368-1.006H9.59c-.038.12-.08.238-.13.352zm14.501-1.758a3.849 3.849 0 0 0-.082-.475l-9.634-.008a3.932 3.932 0 0 1 1.143-2.348c.363-.35.79-.625 1.26-.809a3.97 3.97 0 0 1 4.484.957l1.521-1.49a5.7 5.7 0 0 0-1.922-1.357 6.283 6.283 0 0 0-2.544-.49 6.35 6.35 0 0 0-2.405.457 6.007 6.007 0 0 0-1.963 1.276 6.142 6.142 0 0 0-1.325 1.94 5.862 5.862 0 0 0-.466 1.864h-.063a5.857 5.857 0 0 0-.467-1.865 6.13 6.13 0 0 0-1.325-1.939A6 6 0 0 0 8.21 6.34a6.698 6.698 0 0 0-4.949.031A5.708 5.708 0 0 0 1.34 7.73l1.52 1.49a4.166 4.166 0 0 1 4.484-.958c.47.184.898.46 1.26.81.368.36.66.792.859 1.268.146.344.242.708.285 1.08l-9.635.008A4.714 4.714 0 0 0 0 12.457a6.493 6.493 0 0 0 .345 2.127 4.927 4.927 0 0 0 1.08 1.783c.528.56 1.17 1 1.88 1.293a6.454 6.454 0 0 0 2.504.457c.824.005 1.64-.15 2.404-.457a5.986 5.986 0 0 0 1.964-1.277 6.116 6.116 0 0 0 1.686-3.076h.273a6.13 6.13 0 0 0 1.686 3.077 5.99 5.99 0 0 0 1.964 1.276 6.345 6.345 0 0 0 2.405.457 6.45 6.45 0 0 0 2.502-.457 5.42 5.42 0 0 0 1.882-1.293 4.928 4.928 0 0 0 1.08-1.783A6.52 6.52 0 0 0 24 12.457a4.757 4.757 0 0 0-.039-.554z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/generalelectric.svg b/assets/lib/simple-icons/icons/generalelectric.svg
new file mode 100644
index 00000000..bf05e07f
--- /dev/null
+++ b/assets/lib/simple-icons/icons/generalelectric.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>General Electric</title><path d="M12.001 24C5.385 24 0 18.647 0 11.999 0 5.385 5.385 0 12.001 0 18.614 0 24 5.385 24 11.999 24 18.647 18.614 24 12.001 24zm0-23.436C5.684.564.565 5.685.565 12c0 6.316 5.12 11.435 11.436 11.435 6.315 0 11.434-5.119 11.434-11.435C23.434 5.717 18.316.564 12.001.564zM22.169 15.42l-.062.013-.034-.043c.002-.019.403-1.202.4-2.56-.005-1.463-.599-2.36-1.363-2.36-.465 0-.798.334-.798.831 0 .898 1.097.964 1.097 2.926 0 .798-.166 1.561-.432 2.393-1.23 4.154-5.153 6.082-8.975 6.082-1.763 0-3.014-.361-3.387-.529-.015-.008-.028-.037-.016-.066l.048-.034c.151.06 1.226.397 2.556.397 1.463 0 2.327-.598 2.327-1.33a.823.823 0 0 0-.832-.829c-.898 0-.964 1.13-2.892 1.13-.831 0-1.561-.166-2.427-.432-4.122-1.263-6.087-5.154-6.084-9.01.002-1.878.527-3.372.536-3.388l.059-.01.035.043c-.049.155-.398 1.228-.398 2.556 0 1.463.598 2.327 1.362 2.327a.789.789 0 0 0 .799-.798c0-.898-1.098-.997-1.098-2.925 0-.831.167-1.562.432-2.426 1.265-4.12 5.154-6.052 8.977-6.081 1.776-.013 3.331.518 3.39.565l.011.06-.044.033c-.018-.002-1.029-.425-2.559-.425-1.429-.001-2.327.598-2.327 1.363 0 .432.333.798.831.798.898 0 .964-1.097 2.892-1.097.831 0 1.562.166 2.427.432 4.156 1.261 6.05 5.185 6.084 8.974.018 1.941-.529 3.41-.535 3.42zm-5.715-2.855c-1.13 0-1.995.832-1.995 1.828 0 .831.498 1.495 1.164 1.495.233 0 .465-.133.465-.432 0-.431-.573-.537-.528-1.184.028-.427.43-.711.828-.711.798 0 1.171.774 1.171 1.57-.034 1.23-.938 2.086-2.001 2.086-1.398 0-2.293-1.33-2.293-2.759 0-2.128 1.396-2.959 2.127-3.158.008-.001 1.911.34 1.852-.499-.026-.369-.575-.511-.974-.527-.441-.017-.885.142-.885.142-.233-.117-.393-.346-.492-.611 1.363-1.03 2.326-2.027 2.326-3.158 0-.598-.4-1.131-1.164-1.131-1.363 0-2.394 1.729-2.394 3.291 0 .266 0 .532.067.766-.865.631-1.507 1.023-2.671 1.721 0-.146.031-.521.128-1.008.399-.432.946-1.079.946-1.578 0-.233-.132-.432-.4-.432-.664 0-1.164.998-1.296 1.695-.3.366-.897.832-1.397.832-.399 0-.531-.366-.566-.498 1.263-.432 2.826-2.162 2.826-3.724 0-.333-.133-1.064-1.13-1.064-1.496 0-2.759 2.228-2.759 3.955-.532 0-.731-.565-.731-.996 0-.432.166-.865.166-.997 0-.134-.067-.3-.266-.3-.499 0-.798.664-.798 1.429.034 1.064.732 1.729 1.663 1.795.132.632.698 1.23 1.396 1.23.432 0 .964-.133 1.33-.465-.034.233-.067.431-.1.631-1.463.765-2.527 1.297-3.491 2.161-.762.698-1.195 1.628-1.195 2.359 0 .997.632 1.928 1.928 1.928 1.529 0 2.693-1.23 3.257-2.925.267-.798.373-1.958.44-3.022 1.529-.864 2.254-1.364 3.051-1.931.099.166.2.3.334.399-.699.366-2.36 1.397-2.36 3.823 0 1.729 1.164 3.656 3.457 3.656 1.895 0 3.191-1.562 3.191-3.057 0-1.362-.765-2.625-2.227-2.625zm-9.141 4.653c-.498.023-.83-.296-.83-.827 0-1.429 1.981-2.793 3.477-3.526-.266 1.996-.939 4.275-2.647 4.353zM8.41 9.374c0-1.097 1.082-3.182 1.745-2.962.781.26-.648 2.364-1.745 2.962zm6.283-.499c0-1.362.923-2.688 1.427-2.436.574.287-.43 1.572-1.427 2.436z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/generalmotors.svg b/assets/lib/simple-icons/icons/generalmotors.svg
index 38836b0d..027505f9 100644
--- a/assets/lib/simple-icons/icons/generalmotors.svg
+++ b/assets/lib/simple-icons/icons/generalmotors.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>General Motors icon</title><path d="M0 .002v23.996h24V.002zm8.254 5.836c2.293 0 2.293 1.788 2.293 2.412v.636H9.176V8.25c0-.345 0-1.177-.9-1.177-.89 0-.89.818-.89 1.177v4.415c0 .692.214 1.216.89 1.216.674 0 .9-.492.9-1.216v-1.427H8.39v-1.084h2.157v4.884l-1.326-.013v-.479c-.113.183-.647.662-1.414.661-1.296-.009-1.796-.905-1.796-2.272V8.25c0-.37 0-2.412 2.243-2.412zm3.703.186h2.028l.993 6.597 1.015-6.597h2.006v9.014h-1.337V8.25l-1.127 6.788H14.38L13.292 8.25v6.775h-1.335zM6.003 16.072H18.01v1.949H6.003Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>General Motors</title><path d="M3.34 0A3.345 3.345 0 0 0 0 3.34v17.32A3.345 3.345 0 0 0 3.34 24h17.32A3.345 3.345 0 0 0 24 20.66V3.34C23.982 1.5 22.501 0 20.66 0zm0 1.535h17.32c.992 0 1.805.813 1.805 1.806v17.3c0 .993-.813 1.806-1.806 1.806H3.341a1.811 1.811 0 0 1-1.806-1.806v-17.3c0-.993.813-1.806 1.806-1.806zm2.98 4.677A1.877 1.877 0 0 0 4.442 8.09v4.569c0 1.03.85 1.86 1.879 1.878h1.552v.343c-.018.85-.505 1.337-1.679 1.355h-.74v1.535h.74c2.167 0 3.395-1.03 3.431-2.908v-8.65zm4.623 0v8.307h1.752V7.73h1.68v6.79h1.752V7.73h1.01c.362 0 .669.289.669.668v6.14h1.752V8.09c-.018-1.029-.85-1.878-1.879-1.878zM6.863 7.73h1.01v5.273h-1.01a.666.666 0 0 1-.669-.668V8.397c0-.36.29-.668.668-.668zm4.08 8.506v1.535h8.596v-1.535z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/genius.svg b/assets/lib/simple-icons/icons/genius.svg
index dbabb937..4abe98c9 100644
--- a/assets/lib/simple-icons/icons/genius.svg
+++ b/assets/lib/simple-icons/icons/genius.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Genius icon</title><path d="M12.897 1.235c-.36.001-.722.013-1.08.017-.218-.028-.371.225-.352.416-.035 1.012.023 2.025-.016 3.036-.037.841-.555 1.596-1.224 2.08-.5.345-1.118.435-1.671.663.121.78.434 1.556 1.057 2.07 1.189 1.053 3.224.86 4.17-.426.945-1.071.453-2.573.603-3.854.286-.48.937-.132 1.317-.49-.34-1.249-.81-2.529-1.725-3.472a11.125 11.125 0 00-1.08-.04zm-10.42.006C.53 2.992-.386 5.797.154 8.361c.384 2.052 1.682 3.893 3.45 4.997.134-.23.23-.476.09-.73-.95-2.814-.138-6.119 1.986-8.19.014-.986.043-1.976-.003-2.961l-.188-.214c-1.003-.051-2.008 0-3.01-.022zm17.88.055l-.205.356c.265.938.6 1.862.72 2.834.58 3.546-.402 7.313-2.614 10.14-1.816 2.353-4.441 4.074-7.334 4.773-2.66.66-5.514.45-8.064-.543-.068.079-.207.237-.275.318 2.664 2.629 6.543 3.969 10.259 3.498 3.075-.327 5.995-1.865 8.023-4.195 1.935-2.187 3.083-5.07 3.125-7.992.122-3.384-1.207-6.819-3.636-9.19z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Genius</title><path d="M0 6.827c0 2.164.79 4.133 2.167 5.51.393.393.786.59 1.18.983h.195c.197 0 .196-.196.196-.196-.393-.787-.588-1.77-.588-2.754 0-2.164.982-4.329 2.36-5.706V1.518c0-.197-.197-.196-.197-.196h-2.95C.789 2.896 0 4.664 0 6.827zm2.559 12.59c2.36 2.164 5.31 3.343 8.851 3.343 7.082 0 12.59-5.702 12.59-12.586 0-3.344-1.378-6.492-3.542-8.656h-.196c0-.197-.196 0-.196 0 .59 1.574.983 3.147.983 4.918 0 7.278-5.902 13.373-13.377 13.373-1.77 0-3.344-.393-4.917-.983-.197 0-.196.199-.196.395zm5.9-11.998c0 .59.395 1.178.788 1.571h.392c3.54 1.18 4.722-.193 4.722-1.767V5.056c0-.196.196-.196.196-.196h.787c.197 0 .196-.196.196-.196-.196-1.18-.784-2.358-1.571-3.342h-2.363c0-.197-.196 0-.196.196v2.95c0 1.574-1.18 2.754-2.754 2.951 0-.197-.196 0-.196 0z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/gentoo.svg b/assets/lib/simple-icons/icons/gentoo.svg
index ee254286..7be106f0 100644
--- a/assets/lib/simple-icons/icons/gentoo.svg
+++ b/assets/lib/simple-icons/icons/gentoo.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Gentoo icon</title><path d="M9.956.097a7.252 7.252 0 0 0-1.25.115C4.397 1 1.365 4.73 1.107 7.186c-.125 1.205.525 2.108.883 2.506.969 1.076 2.9 1.898 4.141 2.58-1.795 1.53-2.618 2.277-3.429 3.128-1.214 1.274-2.067 2.676-2.07 3.68 0 .323-.053 1.355.368 2.17.158.306.608 1.327 1.964 2.092.867.49 2.102.67 3.31.497 3.742-.534 8.753-3.707 12.328-6.662 2.279-1.884 3.945-3.709 4.426-4.607.388-.725.431-2.026.206-2.843-.64-2.318-5.84-7.067-10.091-8.978A7.761 7.761 0 0 0 9.956.097zm-.007.067a7.341 7.341 0 0 1 3.317.749c3.433 1.687 9.233 6.43 9.661 8.814.53 2.948-9.852 10.929-16.167 12.174-2.45.481-4.539.613-5.492-1.975-.826-2.243.776-3.884 3.135-6.04.98-.895 1.76-1.564 2.935-2.556.065-.068-5.66-2.042-5.842-4.308C1.307 4.693 4.995.394 9.716.172c.078-.004.155-.007.233-.008zM9.838.68a5.602 5.602 0 0 0-.502.031c-2.319.244-2.763.543-4.864 2.132-.704.533-2 1.829-2.331 3.366-.127.586.023 1.091.444 1.446 1.35 1.135 3.61 2.056 5.465 2.947.543.26.184.733-.692 1.492-2.21 1.913-5.198 4.242-5.407 6.017-.098.836.188 1.972 1.203 2.554 1.186.679 3.647.236 5.291-.376 2.402-.895 5.557-2.869 8.062-4.809 2.604-2.018 5.026-4.58 5.146-4.998.147-.513.132-.988-.152-1.533-.445-.855-1.041-1.491-1.681-2.203-1.718-1.81-3.534-3.401-5.708-4.62-1.423-.798-2.69-1.47-4.274-1.446zm1.066 3.594c.542 0 1.167.171 1.838.496 1.675.81 3.395 2.937-.015 4.161-.927.333-3.869-.818-3.779-2.388.089-1.558.847-2.27 1.956-2.269zm.283 1.356c-.315-.002-.571.078-.689.26-.552.855-.3 1.461.211 1.848.19-.454 2.138.042 2.13.468.02-.01.04-.02.055-.032 1.69-1.272-.468-2.536-1.707-2.544z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Gentoo</title><path d="M9.94 0a7.31 7.31 0 00-1.26.116c-4.344.795-7.4 4.555-7.661 7.031-.126 1.215.53 2.125.89 2.526.977 1.085 2.924 1.914 4.175 2.601-1.81 1.543-2.64 2.296-3.457 3.154C1.403 16.712.543 18.125.54 19.138c0 .325-.053 1.365.371 2.187.16.309.613 1.338 1.98 2.109.874.494 2.119.675 3.337.501 3.772-.538 8.823-3.737 12.427-6.716 2.297-1.9 3.977-3.739 4.462-4.644.39-.731.434-2.043.207-2.866-.645-2.337-5.887-7.125-10.172-9.051A7.824 7.824 0 009.94 0zm-.008.068a7.4 7.4 0 013.344.755c3.46 1.7 9.308 6.482 9.739 8.886.534 2.972-9.931 11.017-16.297 12.272-2.47.485-4.576.618-5.537-1.99-.832-2.262.783-3.916 3.16-6.09a92.546 92.546 0 012.96-2.576c.065-.069-5.706-2.059-5.89-4.343C1.221 4.634 4.938.3 9.697.076c.08-.004.157-.007.235-.008zm-.112.52a5.647 5.647 0 00-.506.032c-2.337.245-2.785.547-4.903 2.149-.71.537-2.016 1.844-2.35 3.393-.128.59.024 1.1.448 1.458 1.36 1.144 3.639 2.072 5.509 2.97.547.263.185.74-.698 1.505-2.227 1.928-5.24 4.276-5.45 6.066-.099.842.19 1.988 1.213 2.574 1.195.685 3.676.238 5.333-.379 2.422-.902 5.602-2.892 8.127-4.848 2.625-2.034 5.067-4.617 5.188-5.038.148-.517.133-.996-.154-1.546-.448-.862-1.049-1.503-1.694-2.22-1.732-1.825-3.563-3.43-5.754-4.658C12.694 1.242 11.417.564 9.82.588zm1.075 3.623c.546 0 1.176.173 1.853.5 1.688.817 3.422 2.961-.015 4.195-.935.336-3.9-.824-3.81-2.407.09-1.57.854-2.289 1.972-2.288zm.285 1.367c-.317-.002-.575.079-.694.263-.557.861-.303 1.472.212 1.862.192-.457 2.156.043 2.148.472a.32.32 0 00.055-.032c1.704-1.282-.472-2.557-1.72-2.565z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/geocaching.svg b/assets/lib/simple-icons/icons/geocaching.svg
index dfac9326..96f91048 100644
--- a/assets/lib/simple-icons/icons/geocaching.svg
+++ b/assets/lib/simple-icons/icons/geocaching.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Geocaching icon</title><path d="M13.24.003v2.322c1.29.16 2.938.622 4.477 1.795l-1.186 1.608-.016-.015s-1.229-1.051-3.27-1.38v6.419h6.33c-.12-.914-.436-2.01-1.154-3.119l1.695-1.125s1.26 1.71 1.53 4.244H24V0H13.24v.003zm4.335 23.203l-.6.097-1.306-8.045.349-.056 6.555-.015-5.655 4.064.631 3.954h.026zm-4.337-9.967V24h10.758V13.241l-10.758-.004v.002zm-6.783 6.753l1.184-1.605h.019s1.163.987 3.103 1.342v-6.491H4.59c.109.933.42 2.076 1.174 3.235L4.08 17.592s-1.296-1.761-1.529-4.355H0v10.76h10.76v-2.231c-1.264-.179-2.835-.647-4.305-1.77v-.004zM4.977 1.968c-.169 0-.309.105-.309.234s.139.232.309.232.308-.104.31-.232c-.001-.129-.141-.234-.31-.234zM5.006 2.61c-.502 0-.906-.405-.906-.9s.404-.896.906-.896c.5 0 .905.404.905.899s-.405.897-.899.897h-.006zm-1.336.06l-1.037.524c-.094-.113-.165-.205-.24-.309l-1.31.489-.276-.434 2.063-.428.445-.094.729-.148-.619.231c.079.06.146.109.244.171l.001-.002zM1.676.765c.378.575.824 1.047 1.4 1.482l-1.005.18C1.695 1.89 1.365 1.368 1.064.728l.609.035.003.002zM0 0v10.759h2.407c-.102-.983-.21-3.805 1.481-6.146 0 0-.375-.359-.88-.951l-1.103.944-.477-.405 2.869-1.635-.338.286c.404.24.81.42 1.215.555 0 0 1.395-.78 2.774-2.655l.33.016c-.255.84-1.05 2.28-2.294 3.435 0 0 3.299 1.44 4.049 3.886-.21-.12-1.395-.375-1.979-.24-.105-.165-1.215-2.431-2.896-2.4 0 0-.375.45-.734 1.62-.314 1.035-.18 3.21-.136 3.72h6.45V0H0z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Geocaching</title><path d="M0 11.239h1.918c.151-1.738.841-3.819 2.521-5.498C2.81 4.532 2.484 3.136 2.484 2.36h.652c.068.682.357 1.656 2.247 2.753C7.167 4.067 7.532 3.037 7.631 2.36h.652c0 .721-.317 2.082-1.951 3.38 1.366.89 2.506 2.195 2.928 4.237H7.576c-.294-1.461-1.04-2.616-2.193-3.504-1.169 1.143-1.774 3.023-1.811 4.766h6.57V1.098H0v10.141zM5.383 2.63c.469 0 .85.377.85.842 0 .465-.38.841-.85.841a.846.846 0 0 1-.85-.841.847.847 0 0 1 .85-.842zM3.574 12.779h6.567v6.567a7.338 7.338 0 0 1-3.775-1.528L5.195 18.99a8.978 8.978 0 0 0 4.946 2.012v1.919H0V12.779h1.919a8.98 8.98 0 0 0 2.03 4.968l1.171-1.171a7.33 7.33 0 0 1-1.546-3.797zm8.108-11.681h10.142V11.24h-1.919a8.981 8.981 0 0 0-2.012-4.947l-1.171 1.171a7.338 7.338 0 0 1 1.528 3.776h-6.568V4.672a7.347 7.347 0 0 1 3.798 1.545l1.171-1.171a8.987 8.987 0 0 0-4.968-2.03V1.098zm0 11.681h10.142V22.92h-5.988l-1.172-4.736c.473-.572.965-.836 2.137-1.018 2.184-.341 2.576-2.232 2.576-2.232-1.02.245-1.837.001-2.799-.234-.949-.231-1.859-.211-2.727.092-.659.23-.818.445-.818.445l1.907 7.683h-3.257V12.779zm11.4-11.7a.894.894 0 0 0-.913.918c0 .521.392.913.913.913A.894.894 0 0 0 24 1.997a.895.895 0 0 0-.918-.918zm0 1.679a.738.738 0 0 1-.753-.761c0-.437.319-.764.753-.764.437 0 .759.327.759.764a.741.741 0 0 1-.759.761zm.379-.907c0-.201-.149-.298-.327-.298h-.411v.889h.204v-.309h.084l.259.309h.22v-.04l-.251-.28c.118-.028.222-.122.222-.271zm-.335.133h-.199v-.262h.199c.076 0 .133.044.133.131.001.081-.057.131-.133.131z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/gerrit.svg b/assets/lib/simple-icons/icons/gerrit.svg
index d9b9bdf4..9f756e55 100644
--- a/assets/lib/simple-icons/icons/gerrit.svg
+++ b/assets/lib/simple-icons/icons/gerrit.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Gerrit icon</title><path d="M12.648 2.678l-.245-.266c.004-.004.29-.268.413-.41.121-.146.342-.484.346-.486l.301.195c-.014.016-.234.359-.375.522-.137.165-.428.432-.44.445zm1.577 10.597c-.012-.004-.24-.154-.365-.221-.117-.059-.32-.146-.422-.191l.213-.612-.898-.444-.286.871c-.174.004-.713.053-1.51.389-.959.4-1.688 1.025-1.695 1.029l-.143.125.641.025.02-.016c.006-.006.721-.535 1.119-.705.088-.037.207-.074.33-.105-.209.105-.439.227-.6.32-.199.119-.57.381-.586.393l-.186.129.682.016.018-.01c.012-.008 1.164-.623 1.789-.76l.196-.047c.145-.037.246-.064.422-.064.156 0 .369.021.688.07.398.059.66.158.664.16l.24.094-.322-.436-.012-.008.003-.002zm-8.98-7.298h-.029l-1.006.916v.03c-.016.266.078.52.258.716.182.196.42.309.686.319h.043c.531 0 .965-.413.992-.94.023-.545-.399-1.01-.944-1.041zM5.2 7.808h-.041c-.117-.005-.23-.032-.33-.085.045.008.098.01.148.002.284-.035.481-.291.448-.575-.035-.279-.293-.48-.576-.442-.264.034-.457.267-.446.531-.031-.09-.045-.183-.045-.28l.912-.833c.446.042.79.431.768.882s-.391.8-.842.8H5.2zm9.329-3.725l-.293-.195-.41.265-.395-.285-.301.18.404.291-.416.27.297.18.4-.254.387.28.309-.169-.407-.296M24 19.525c-.213-.209-.418-.416-.629-.627-.48-.488-.957-.984-1.418-1.486-.547-.598-1.082-1.207-1.582-1.844-.225-.283-.441-.58-.646-.881-.254-.387-.469-.795-.668-1.215-.211-.445-.398-.9-.576-1.356.24.21.463.444.664.692.021-.215.041-.43.059-.648l.023-.322c0-.033.012-.066-.008-.096-.016-.029-.033-.051-.053-.075-.121-.149-.264-.282-.406-.413-.189-.181-.387-.36-.584-.533l-.18-.156c-.027-.027-.057-.051-.086-.074-.031-.03-.041-.096-.055-.136l-.154-.479c.607.285 1.109.741 1.578 1.215.004-.219.004-.436 0-.652 0-.114-.002-.229-.008-.346 0-.029.006-.1-.016-.127-.012-.02-.031-.036-.043-.055-.109-.117-.234-.217-.357-.314-.172-.143-.35-.277-.527-.408-.156-.117-.318-.232-.477-.345-.018-.016-.076-.039-.064-.06l.039-.08c.02-.035.014-.045.053-.029l.17.059c.406.156.779.368 1.143.608-.123-.45-.311-.885-.525-1.296-.389-.762-.893-1.468-1.463-2.105-.379-.426-.785-.824-1.219-1.193-.223-.19-.457-.369-.699-.533-.113-.074-.225-.149-.346-.217-.049-.03-.105-.056-.15-.094-.18-.144-.365-.284-.549-.429.238.098.469.21.689.338-.127-.194-.342-.331-.545-.436-.307-.159-.637-.276-.967-.378.113-.12.234-.228.346-.348.113-.12.223-.246.33-.372.127-.15.252-.3.375-.455l-1.156-.726-.48-.303c-.123.246-.277.476-.458.68-.18.203-.391.369-.6.539-.191.156-.379.316-.566.472-.047.04-.092.085-.145.12-.025.021-.096.004-.127.004H10.7c-.297.006-.596.029-.891.068-.058.007-.113.013-.175.008l-.178-.01c-.137-.008-.271-.016-.408-.016-.289-.004-.58 0-.871.025-.244.022-.489.055-.729.112-.238.056-.461.172-.66.312-.193.141-.387.32-.504.53s-.17.456-.213.689c-.135.013-.268.01-.4.016-.141.008-.277.021-.416.039-.27.037-.535.096-.795.18-.496.154-.945.405-1.336.75-.195.181-.377.38-.539.596-.02.025-.037.051-.063.068-.01.009-.027.016-.033.027-.015.027-.033.052-.051.076l-.134.212c-.168.285-.276.595-.383.906l-.045.123.033-.021c-.01.067-.02.135-.025.202l-.008.105v.053l-.066.013c-.135.026-.271.06-.4.101-.12.039-.233.086-.337.15-.105.066-.195.153-.285.239-.318.31-.562.698-.687 1.128-.1.348-.137.735-.059 1.092.021.09.049.188.107.262.074.09.199.126.313.095.131-.036.248-.124.371-.187l.314-.157c.455-.226.93-.446 1.438-.525.035-.005.1.067.131.091.049.037.1.074.148.104.109.069.221.129.334.181.262.114.541.174.818.231.502.105 1.014.171 1.529.18.207.004.416 0 .625-.018.225-.02.451-.049.678-.051.25-.005.496.025.74.055.254.031.51.068.764.105.518.079 1.031.169 1.543.279-.115.18-.227.362-.338.545-.008.013-.072 0-.088 0-.041-.002-.086-.002-.127 0-.074 0-.15.008-.225.019-.211.03-.416.083-.615.156-.49.181-.938.483-1.326.833-.221.195-.43.408-.609.641-.049.064-.094.129-.139.193.105-.023.211-.045.318-.07.061-.016.117-.027.176-.039.021-.008.029-.016.049-.027.219-.203.451-.393.695-.563.111-.08.225-.154.348-.215.166-.083.354-.131.533-.174-.33.18-.678.35-.977.584-.172.139-.328.291-.49.439l.654-.104c.01 0 .014-.004.023-.01l.17-.094c.113-.064.23-.125.346-.186.24-.123.482-.24.732-.34.236-.094.48-.178.732-.225.221-.046.428-.052.648 0 .342.074.67.232.969.414.021.014.035.033.055.014.016-.014.098-.074.09-.092l-.18-.334c-.016-.029-.023-.049-.051-.066l-.131-.077c-.176-.104-.348-.21-.51-.331-.037-.023-.078-.039-.082-.089-.004-.046.014-.093.029-.136.033-.09.08-.169.131-.248.033-.058.072-.111.109-.166.014-.018.01-.021.031-.014l.119.034c.236.077.469.159.711.22.27.068.545.123.82.176l.048.01c-.056-.03-.091-.09-.132-.136-.023-.03-.035-.05-.074-.06l-.105-.02c-.074-.016-.148-.03-.225-.049-.262-.057-.525-.119-.777-.209-.375-.13-.758-.232-1.145-.322-.486-.107-.977-.194-1.465-.275-.25-.041-.498-.074-.75-.109-.246-.034-.496-.07-.746-.087-.539-.034-1.074.087-1.615.081-.365-.004-.734-.055-1.096-.105l-.068-.009c.252-.093.5-.188.75-.285.236-.095.471-.192.705-.289.127-.052.25-.105.373-.157.113-.051.225-.1.328-.17.408-.279.676-.727.975-1.109.273-.361.586-.7.99-.908.129-.066.262-.117.4-.156-.283-.439-.549-.93-.623-1.455.029.012.061.025.094.037.035.012.064.016.072.045l.029.135c.026.091.053.176.086.262.072.191.16.375.26.551.219.396.484.766.766 1.12.539.686 1.145 1.305 1.736 1.941.145.158.275.324.41.492.15.187.303.375.457.561.121.141.234.285.356.426l.094.112c.016.018.037.026.061.036.604.3 1.213.6 1.822.895.434.209.869.42 1.309.623.236.109.471.219.711.32.029.014.066.029.098.039.016.01.029.016.047.023l.016.049c.027.072.051.145.076.217.049.141.098.279.148.416.33.912.695 1.814 1.145 2.676.346.656.715 1.301 1.09 1.939.4.68.811 1.354 1.225 2.025.332.535.666 1.072 1.008 1.605.146.227.289.459.439.688l.063.094.775-1.141.191-.283c.008-.006.082-.102.076-.109l-.156-.24c-.291-.451-.584-.898-.871-1.35l-.828-1.283-.105-.166.656.799 1.115 1.35c.121.146.236.289.354.438.219-.402.439-.801.662-1.201.086-.164.176-.33.266-.492M12.13 1.915c.309-.246.563-.563.757-.906l1.178.743.18.112c-.246.3-.496.604-.775.873-.035.034-.074.069-.107.104-.021.025-.047.051-.07.075l-.033.038c-.023-.007-.045-.016-.068-.02-.146-.041-.289-.08-.436-.111-.292-.066-.589-.117-.886-.152-.191-.021-.385-.04-.578-.058.275-.234.557-.467.838-.698m-1.754 1.37c.232-.096.482-.15.73-.191.49-.082.994-.094 1.489-.04.354.038.701.108 1.041.21l-.141.115-.225-.061c-.141-.029-.281-.06-.422-.082-.246-.037-.497-.06-.749-.065-.461-.008-.926.042-1.371.159-.301.078-.604.188-.879.332-.286.154-.555.346-.78.582-.134.137-.257.289-.359.455-.057.09-.105.18-.15.275-.024.047-.043.096-.061.144l-.029.075c-.004.015-.008.026-.012.038L8.39 5.22l-.082-.011c.234-.719.763-1.286 1.418-1.649.207-.114.426-.218.65-.279m-3.93.374c.266-.381.686-.649 1.139-.743.502-.101 1.016-.119 1.525-.107-.525.131-1.05.326-1.488.652-.34.075-.664.24-.934.459-.09.071-.17.15-.246.236-.035.037-.066.075-.097.116-.014.015-.027.03-.037.049h-.084c.023-.135.055-.27.098-.4.029-.09.064-.18.119-.26m.882.056c-.145.143-.27.303-.391.469-.047.069-.098.153-.18.191-.085.039-.194-.005-.28-.031.224-.279.521-.494.851-.629M2.308 6.585c.08-.16.182-.315.275-.465.016-.027.053-.046.074-.063.049-.034.096-.069.143-.106.309-.225.621-.446.939-.656.166-.107.33-.213.502-.307.182-.101.369-.18.565-.244.347-.112.707-.189 1.068-.244.174-.025.361-.057.531-.015-.33.188-.658.375-.99.558-.342.191-.689.367-1.035.552-.332.18-.66.375-.981.577-.336.206-.67.419-1.002.629-.08.051-.16.105-.24.155.045-.125.09-.251.151-.371m1.009 3.056c-.029.056-.134.042-.187.042-.094 0-.186 0-.279.006-.258.015-.51.06-.758.138-.475.147-.922.375-1.365.604-.1.055-.203.135-.316.162-.061.015-.131-.008-.166-.063-.035-.061-.053-.131-.064-.198-.027-.12-.035-.245-.033-.368 0-.33.076-.66.215-.96.096-.21.221-.401.371-.574.15-.175.326-.351.539-.45.355-.162.775-.213 1.164-.235.072-.005.145-.007.217-.007.1 0 .217-.016.311.019.074.027.121.105.15.173.045.105.074.225.1.336.061.26.123.525.145.791.01.119.016.239.004.359-.009.073-.014.156-.05.223m2.829-1.973c-.194.123-.403.218-.616.298-.215.077-.436.144-.66.181-.097.013-.195.025-.293.021-.101-.003-.193-.036-.293-.067-.195-.063-.393-.13-.57-.233-.064-.039-.135-.084-.174-.15-.029-.052-.029-.116-.023-.174.012-.231.094-.458.203-.66.187-.343.482-.612.84-.775.879-.396 1.865-.029 2.611.49l.08.061c-.154.165-.311.321-.473.477-.199.189-.404.381-.634.531M8.31 5.739c-.475-.203-.926-.458-1.356-.738.449.188.934.3 1.414.37.258.037.521.072.781.08.281.008.564-.021.84-.075.545-.103 1.068-.305 1.566-.551.494-.245.964-.537 1.413-.859.217-.155.43-.315.633-.487.021-.016.174-.161.184-.154l.041.031.537.416c.328.254.658.51.988.762-.906.326-1.826.629-2.752.904-.519.156-1.038.301-1.565.42-.412.098-.834.189-1.256.21-.507.022-1.006-.135-1.47-.33m8.85 3.942c.076.021.145.045.215.067l.094.033c.016.006.031.015.045.02l.021.06c.045.146.09.289.139.432-.15-.127-.301-.254-.451-.379l-.09-.074c-.021-.016-.045-.021-.029-.046l.059-.114m-.671 1.444l.035-.063.027-.046c.012-.018.008-.022.029-.012.129.054.258.111.385.17.24.11.475.23.703.364.107.065.217.135.322.205l.15.105.074.057c.033.027.041.063.057.102.104.282.219.564.338.844.078.189.162.379.248.566-.293-.371-.621-.715-.957-1.045-.346-.346-.705-.671-1.078-.981l-.323-.264m3.746 6.42l-.121.09.008.016.063.094.271.42.904 1.402c.311.48.621.963.932 1.445l.309.48.084.133c.004.004.029.041.029.045-.26.385-.523.77-.783 1.154-.027.037-.051.076-.074.111-.24-.373-.479-.744-.715-1.117-.4-.635-.795-1.277-1.184-1.916-.434-.709-.855-1.418-1.264-2.141-.383-.674-.75-1.361-1.059-2.076-.301-.697-.563-1.408-.811-2.121.486.193.98.367 1.48.521.145.045.289.09.436.127l.063.018c.008 0 .014-.039.018-.049.018-.064.031-.129.045-.195.031-.125.051-.254.074-.381.205.428.436.844.701 1.236.215.314.445.621.686.92.521.656 1.074 1.283 1.643 1.898.463.494.934.984 1.408 1.465l.389.389c.006.006.039.031.037.041l-.031.053-.148.275-.588 1.068c-.18-.219-.361-.436-.541-.658l-1.125-1.361c-.314-.387-.637-.773-.953-1.16l-.186-.225"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Gerrit</title><path d="M12.648 2.678l-.245-.266c.004-.004.29-.268.413-.41.121-.146.342-.484.346-.486l.301.195c-.014.016-.234.359-.375.522-.137.165-.428.432-.44.445zm1.577 10.597c-.012-.004-.24-.154-.365-.221-.117-.059-.32-.146-.422-.191l.213-.612-.898-.444-.286.871c-.174.004-.713.053-1.51.389-.959.4-1.688 1.025-1.695 1.029l-.143.125.641.025.02-.016c.006-.006.721-.535 1.119-.705.088-.037.207-.074.33-.105-.209.105-.439.227-.6.32-.199.119-.57.381-.586.393l-.186.129.682.016.018-.01c.012-.008 1.164-.623 1.789-.76l.196-.047c.145-.037.246-.064.422-.064.156 0 .369.021.688.07.398.059.66.158.664.16l.24.094-.322-.436-.012-.008.003-.002zm-8.98-7.298h-.029l-1.006.916v.03c-.016.266.078.52.258.716.182.196.42.309.686.319h.043c.531 0 .965-.413.992-.94.023-.545-.399-1.01-.944-1.041zM5.2 7.808h-.041c-.117-.005-.23-.032-.33-.085.045.008.098.01.148.002.284-.035.481-.291.448-.575-.035-.279-.293-.48-.576-.442-.264.034-.457.267-.446.531-.031-.09-.045-.183-.045-.28l.912-.833c.446.042.79.431.768.882s-.391.8-.842.8H5.2zm9.329-3.725l-.293-.195-.41.265-.395-.285-.301.18.404.291-.416.27.297.18.4-.254.387.28.309-.169-.407-.296M24 19.525c-.213-.209-.418-.416-.629-.627-.48-.488-.957-.984-1.418-1.486-.547-.598-1.082-1.207-1.582-1.844-.225-.283-.441-.58-.646-.881-.254-.387-.469-.795-.668-1.215-.211-.445-.398-.9-.576-1.356.24.21.463.444.664.692.021-.215.041-.43.059-.648l.023-.322c0-.033.012-.066-.008-.096-.016-.029-.033-.051-.053-.075-.121-.149-.264-.282-.406-.413-.189-.181-.387-.36-.584-.533l-.18-.156c-.027-.027-.057-.051-.086-.074-.031-.03-.041-.096-.055-.136l-.154-.479c.607.285 1.109.741 1.578 1.215.004-.219.004-.436 0-.652 0-.114-.002-.229-.008-.346 0-.029.006-.1-.016-.127-.012-.02-.031-.036-.043-.055-.109-.117-.234-.217-.357-.314-.172-.143-.35-.277-.527-.408-.156-.117-.318-.232-.477-.345-.018-.016-.076-.039-.064-.06l.039-.08c.02-.035.014-.045.053-.029l.17.059c.406.156.779.368 1.143.608-.123-.45-.311-.885-.525-1.296-.389-.762-.893-1.468-1.463-2.105-.379-.426-.785-.824-1.219-1.193-.223-.19-.457-.369-.699-.533-.113-.074-.225-.149-.346-.217-.049-.03-.105-.056-.15-.094-.18-.144-.365-.284-.549-.429.238.098.469.21.689.338-.127-.194-.342-.331-.545-.436-.307-.159-.637-.276-.967-.378.113-.12.234-.228.346-.348.113-.12.223-.246.33-.372.127-.15.252-.3.375-.455l-1.156-.726-.48-.303c-.123.246-.277.476-.458.68-.18.203-.391.369-.6.539-.191.156-.379.316-.566.472-.047.04-.092.085-.145.12-.025.021-.096.004-.127.004H10.7c-.297.006-.596.029-.891.068-.058.007-.113.013-.175.008l-.178-.01c-.137-.008-.271-.016-.408-.016-.289-.004-.58 0-.871.025-.244.022-.489.055-.729.112-.238.056-.461.172-.66.312-.193.141-.387.32-.504.53s-.17.456-.213.689c-.135.013-.268.01-.4.016-.141.008-.277.021-.416.039-.27.037-.535.096-.795.18-.496.154-.945.405-1.336.75-.195.181-.377.38-.539.596-.02.025-.037.051-.063.068-.01.009-.027.016-.033.027-.015.027-.033.052-.051.076l-.134.212c-.168.285-.276.595-.383.906l-.045.123.033-.021c-.01.067-.02.135-.025.202l-.008.105v.053l-.066.013c-.135.026-.271.06-.4.101-.12.039-.233.086-.337.15-.105.066-.195.153-.285.239-.318.31-.562.698-.687 1.128-.1.348-.137.735-.059 1.092.021.09.049.188.107.262.074.09.199.126.313.095.131-.036.248-.124.371-.187l.314-.157c.455-.226.93-.446 1.438-.525.035-.005.1.067.131.091.049.037.1.074.148.104.109.069.221.129.334.181.262.114.541.174.818.231.502.105 1.014.171 1.529.18.207.004.416 0 .625-.018.225-.02.451-.049.678-.051.25-.005.496.025.74.055.254.031.51.068.764.105.518.079 1.031.169 1.543.279-.115.18-.227.362-.338.545-.008.013-.072 0-.088 0-.041-.002-.086-.002-.127 0-.074 0-.15.008-.225.019-.211.03-.416.083-.615.156-.49.181-.938.483-1.326.833-.221.195-.43.408-.609.641-.049.064-.094.129-.139.193.105-.023.211-.045.318-.07.061-.016.117-.027.176-.039.021-.008.029-.016.049-.027.219-.203.451-.393.695-.563.111-.08.225-.154.348-.215.166-.083.354-.131.533-.174-.33.18-.678.35-.977.584-.172.139-.328.291-.49.439l.654-.104c.01 0 .014-.004.023-.01l.17-.094c.113-.064.23-.125.346-.186.24-.123.482-.24.732-.34.236-.094.48-.178.732-.225.221-.046.428-.052.648 0 .342.074.67.232.969.414.021.014.035.033.055.014.016-.014.098-.074.09-.092l-.18-.334c-.016-.029-.023-.049-.051-.066l-.131-.077c-.176-.104-.348-.21-.51-.331-.037-.023-.078-.039-.082-.089-.004-.046.014-.093.029-.136.033-.09.08-.169.131-.248.033-.058.072-.111.109-.166.014-.018.01-.021.031-.014l.119.034c.236.077.469.159.711.22.27.068.545.123.82.176l.048.01c-.056-.03-.091-.09-.132-.136-.023-.03-.035-.05-.074-.06l-.105-.02c-.074-.016-.148-.03-.225-.049-.262-.057-.525-.119-.777-.209-.375-.13-.758-.232-1.145-.322-.486-.107-.977-.194-1.465-.275-.25-.041-.498-.074-.75-.109-.246-.034-.496-.07-.746-.087-.539-.034-1.074.087-1.615.081-.365-.004-.734-.055-1.096-.105l-.068-.009c.252-.093.5-.188.75-.285.236-.095.471-.192.705-.289.127-.052.25-.105.373-.157.113-.051.225-.1.328-.17.408-.279.676-.727.975-1.109.273-.361.586-.7.99-.908.129-.066.262-.117.4-.156-.283-.439-.549-.93-.623-1.455.029.012.061.025.094.037.035.012.064.016.072.045l.029.135c.026.091.053.176.086.262.072.191.16.375.26.551.219.396.484.766.766 1.12.539.686 1.145 1.305 1.736 1.941.145.158.275.324.41.492.15.187.303.375.457.561.121.141.234.285.356.426l.094.112c.016.018.037.026.061.036.604.3 1.213.6 1.822.895.434.209.869.42 1.309.623.236.109.471.219.711.32.029.014.066.029.098.039.016.01.029.016.047.023l.016.049c.027.072.051.145.076.217.049.141.098.279.148.416.33.912.695 1.814 1.145 2.676.346.656.715 1.301 1.09 1.939.4.68.811 1.354 1.225 2.025.332.535.666 1.072 1.008 1.605.146.227.289.459.439.688l.063.094.775-1.141.191-.283c.008-.006.082-.102.076-.109l-.156-.24c-.291-.451-.584-.898-.871-1.35l-.828-1.283-.105-.166.656.799 1.115 1.35c.121.146.236.289.354.438.219-.402.439-.801.662-1.201.086-.164.176-.33.266-.492M12.13 1.915c.309-.246.563-.563.757-.906l1.178.743.18.112c-.246.3-.496.604-.775.873-.035.034-.074.069-.107.104-.021.025-.047.051-.07.075l-.033.038c-.023-.007-.045-.016-.068-.02-.146-.041-.289-.08-.436-.111-.292-.066-.589-.117-.886-.152-.191-.021-.385-.04-.578-.058.275-.234.557-.467.838-.698m-1.754 1.37c.232-.096.482-.15.73-.191.49-.082.994-.094 1.489-.04.354.038.701.108 1.041.21l-.141.115-.225-.061c-.141-.029-.281-.06-.422-.082-.246-.037-.497-.06-.749-.065-.461-.008-.926.042-1.371.159-.301.078-.604.188-.879.332-.286.154-.555.346-.78.582-.134.137-.257.289-.359.455-.057.09-.105.18-.15.275-.024.047-.043.096-.061.144l-.029.075c-.004.015-.008.026-.012.038L8.39 5.22l-.082-.011c.234-.719.763-1.286 1.418-1.649.207-.114.426-.218.65-.279m-3.93.374c.266-.381.686-.649 1.139-.743.502-.101 1.016-.119 1.525-.107-.525.131-1.05.326-1.488.652-.34.075-.664.24-.934.459-.09.071-.17.15-.246.236-.035.037-.066.075-.097.116-.014.015-.027.03-.037.049h-.084c.023-.135.055-.27.098-.4.029-.09.064-.18.119-.26m.882.056c-.145.143-.27.303-.391.469-.047.069-.098.153-.18.191-.085.039-.194-.005-.28-.031.224-.279.521-.494.851-.629M2.308 6.585c.08-.16.182-.315.275-.465.016-.027.053-.046.074-.063.049-.034.096-.069.143-.106.309-.225.621-.446.939-.656.166-.107.33-.213.502-.307.182-.101.369-.18.565-.244.347-.112.707-.189 1.068-.244.174-.025.361-.057.531-.015-.33.188-.658.375-.99.558-.342.191-.689.367-1.035.552-.332.18-.66.375-.981.577-.336.206-.67.419-1.002.629-.08.051-.16.105-.24.155.045-.125.09-.251.151-.371m1.009 3.056c-.029.056-.134.042-.187.042-.094 0-.186 0-.279.006-.258.015-.51.06-.758.138-.475.147-.922.375-1.365.604-.1.055-.203.135-.316.162-.061.015-.131-.008-.166-.063-.035-.061-.053-.131-.064-.198-.027-.12-.035-.245-.033-.368 0-.33.076-.66.215-.96.096-.21.221-.401.371-.574.15-.175.326-.351.539-.45.355-.162.775-.213 1.164-.235.072-.005.145-.007.217-.007.1 0 .217-.016.311.019.074.027.121.105.15.173.045.105.074.225.1.336.061.26.123.525.145.791.01.119.016.239.004.359-.009.073-.014.156-.05.223m2.829-1.973c-.194.123-.403.218-.616.298-.215.077-.436.144-.66.181-.097.013-.195.025-.293.021-.101-.003-.193-.036-.293-.067-.195-.063-.393-.13-.57-.233-.064-.039-.135-.084-.174-.15-.029-.052-.029-.116-.023-.174.012-.231.094-.458.203-.66.187-.343.482-.612.84-.775.879-.396 1.865-.029 2.611.49l.08.061c-.154.165-.311.321-.473.477-.199.189-.404.381-.634.531M8.31 5.739c-.475-.203-.926-.458-1.356-.738.449.188.934.3 1.414.37.258.037.521.072.781.08.281.008.564-.021.84-.075.545-.103 1.068-.305 1.566-.551.494-.245.964-.537 1.413-.859.217-.155.43-.315.633-.487.021-.016.174-.161.184-.154l.041.031.537.416c.328.254.658.51.988.762-.906.326-1.826.629-2.752.904-.519.156-1.038.301-1.565.42-.412.098-.834.189-1.256.21-.507.022-1.006-.135-1.47-.33m8.85 3.942c.076.021.145.045.215.067l.094.033c.016.006.031.015.045.02l.021.06c.045.146.09.289.139.432-.15-.127-.301-.254-.451-.379l-.09-.074c-.021-.016-.045-.021-.029-.046l.059-.114m-.671 1.444l.035-.063.027-.046c.012-.018.008-.022.029-.012.129.054.258.111.385.17.24.11.475.23.703.364.107.065.217.135.322.205l.15.105.074.057c.033.027.041.063.057.102.104.282.219.564.338.844.078.189.162.379.248.566-.293-.371-.621-.715-.957-1.045-.346-.346-.705-.671-1.078-.981l-.323-.264m3.746 6.42l-.121.09.008.016.063.094.271.42.904 1.402c.311.48.621.963.932 1.445l.309.48.084.133c.004.004.029.041.029.045-.26.385-.523.77-.783 1.154-.027.037-.051.076-.074.111-.24-.373-.479-.744-.715-1.117-.4-.635-.795-1.277-1.184-1.916-.434-.709-.855-1.418-1.264-2.141-.383-.674-.75-1.361-1.059-2.076-.301-.697-.563-1.408-.811-2.121.486.193.98.367 1.48.521.145.045.289.09.436.127l.063.018c.008 0 .014-.039.018-.049.018-.064.031-.129.045-.195.031-.125.051-.254.074-.381.205.428.436.844.701 1.236.215.314.445.621.686.92.521.656 1.074 1.283 1.643 1.898.463.494.934.984 1.408 1.465l.389.389c.006.006.039.031.037.041l-.031.053-.148.275-.588 1.068c-.18-.219-.361-.436-.541-.658l-1.125-1.361c-.314-.387-.637-.773-.953-1.16l-.186-.225"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ghost.svg b/assets/lib/simple-icons/icons/ghost.svg
index 6bbee8e5..d53466b0 100644
--- a/assets/lib/simple-icons/icons/ghost.svg
+++ b/assets/lib/simple-icons/icons/ghost.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Ghost icon</title><path d="M9.604 19.199H.008V24h9.597v-4.801zm14.39 0h-9.591V24h9.591v-4.801zm.003-9.599H0v4.8h23.997V9.6zM24 0h-4.801v4.801H24V0zm-9.596 0H.008v4.801h14.396V0z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Ghost</title><path d="M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0zm.256 2.313c2.47.005 5.116 2.008 5.898 2.962l.244.3c1.64 1.994 3.569 4.34 3.569 6.966 0 3.719-2.98 5.808-6.158 7.508-1.433.766-2.98 1.508-4.748 1.508-4.543 0-8.366-3.569-8.366-8.112 0-.706.17-1.425.342-2.15.122-.515.244-1.033.307-1.549.548-4.539 2.967-6.795 8.422-7.408a4.29 4.29 0 01.49-.026Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ghostery.svg b/assets/lib/simple-icons/icons/ghostery.svg
index 04160fcb..dab6173b 100644
--- a/assets/lib/simple-icons/icons/ghostery.svg
+++ b/assets/lib/simple-icons/icons/ghostery.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Ghostery icon</title><path d="M22.058 19.93c-1.01-2.29-1.185-4.228-1.212-4.99V8.67C20.846 3.882 16.886 0 12 0S3.15 3.882 3.15 8.671v6.36c-.037.82-.236 2.7-1.207 4.899-1.306 2.955-.226 2.603.742 2.36.968-.242 3.13-1.192 3.805-.022.675 1.17 1.238 2.184 2.814 1.523 1.576-.663 2.318-.883 2.543-.883h.306c.225 0 .968.22 2.543.882 1.576.662 2.14-.353 2.814-1.522.676-1.17 2.837-.22 3.805.022.968.243 2.048.595.743-2.36M9.268 4.728c.953 0 1.725 1.198 1.725 2.676 0 1.478-.772 2.677-1.725 2.677-.953 0-1.726-1.198-1.726-2.677 0-1.478.773-2.676 1.726-2.676m2.73 10.697c-2.1 0-3.867-2.025-4.4-4.279 1.029 1.387 2.617 2.277 4.4 2.277 1.784 0 3.372-.89 4.401-2.277-.533 2.254-2.3 4.28-4.4 4.28m2.73-5.345c-.953 0-1.725-1.198-1.725-2.677 0-1.478.772-2.676 1.726-2.676.953 0 1.725 1.198 1.725 2.676 0 1.478-.772 2.677-1.725 2.677Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Ghostery</title><path d="M22.058 19.93c-1.01-2.29-1.185-4.228-1.212-4.99V8.67C20.846 3.882 16.886 0 12 0S3.15 3.882 3.15 8.671v6.36c-.037.82-.236 2.7-1.207 4.899-1.306 2.955-.226 2.603.742 2.36.968-.242 3.13-1.192 3.805-.022.675 1.17 1.238 2.184 2.814 1.523 1.576-.663 2.318-.883 2.543-.883h.306c.225 0 .968.22 2.543.882 1.576.662 2.14-.353 2.814-1.522.676-1.17 2.837-.22 3.805.022.968.243 2.048.595.743-2.36M9.268 4.728c.953 0 1.725 1.198 1.725 2.676 0 1.478-.772 2.677-1.725 2.677-.953 0-1.726-1.198-1.726-2.677 0-1.478.773-2.676 1.726-2.676m2.73 10.697c-2.1 0-3.867-2.025-4.4-4.279 1.029 1.387 2.617 2.277 4.4 2.277 1.784 0 3.372-.89 4.401-2.277-.533 2.254-2.3 4.28-4.4 4.28m2.73-5.345c-.953 0-1.725-1.198-1.725-2.677 0-1.478.772-2.676 1.726-2.676.953 0 1.725 1.198 1.725 2.676 0 1.478-.772 2.677-1.725 2.677Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/gimp.svg b/assets/lib/simple-icons/icons/gimp.svg
index 2b2eb8e0..d30e9ae9 100644
--- a/assets/lib/simple-icons/icons/gimp.svg
+++ b/assets/lib/simple-icons/icons/gimp.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GIMP icon</title><path d="M23.58 2.4c-.963 1.206-2.55 6.476-11.46 6.71-4.253.112-6.36-4.731-6.36-4.731l-.334 7.771c-.831-1.042-1.945-1.705-3.014-1.74a2.23 2.23 0 00-1.441.441c-.663.502-.977 1.345-.97 2.28.006.934.33 1.965.97 2.896.64.931 1.476 1.587 2.324 1.89.456.164.916.214 1.35.157C10.674 22.882 26.797 26.557 23.58 2.4zM8.404 8.85c1.265 0 2.314.94 2.614 2.196.484-1.19 1.614-2.027 2.931-2.027 1.758 0 3.178 1.49 3.178 3.322 0 1.833-1.42 3.334-3.178 3.334-1.531 0-2.81-1.14-3.115-2.644-.437.978-1.353 1.666-2.43 1.666-.915 0-1.716-.497-2.203-1.246a5.726 5.726 0 00-.289-.567 3.118 3.118 0 01-.205-1.113c0-1.604 1.198-2.922 2.697-2.922zm0 .36c-1.284 0-2.33 1.138-2.33 2.561s1.046 2.559 2.33 2.559c.214 0 .417-.043.614-.102a1.676 1.759 0 01-1.614-1.756 1.676 1.759 0 011.676-1.758 1.676 1.759 0 011.635 1.373c.012-.105.029-.207.029-.316 0-1.423-1.056-2.56-2.34-2.56zm5.545.131c-1.576 0-2.86 1.334-2.86 3 0 1.667 1.284 3.008 2.86 3.008.591 0 1.14-.188 1.596-.512a2.146 2.252 0 01-.858.19 2.146 2.252 0 01-2.144-2.252 2.146 2.252 0 012.144-2.252 2.146 2.252 0 012.112 1.845l.003-.026c0-1.667-1.277-3-2.853-3zm-11.545 1.39c1.038.035 2.206.77 3.008 1.936.606.882.914 1.866.92 2.727.006.861-.282 1.589-.846 2.016-.564.426-1.31.48-2.082.205-.772-.277-1.564-.883-2.17-1.764-.605-.881-.911-1.867-.917-2.728-.007-.862.282-1.589.845-2.016a1.92 1.92 0 011.242-.375zm11.69.245a1.006 1.056 0 00-1.006 1.059 1.006 1.056 0 001.006 1.054 1.006 1.056 0 001.005-1.054 1.006 1.056 0 00-1.005-1.059zm-5.645.22a.662.695 0 00-.662.694.662.695 0 00.662.697.662.695 0 00.662-.697.662.695 0 00-.662-.693zm-6.414.223a1.118 1.408 0 00-1.119 1.407 1.118 1.408 0 001.12 1.408 1.118 1.408 0 001.116-1.408 1.118 1.408 0 00-1.117-1.407zm14.176 3.998s1.487.435 2.011 1.145c.523.708.194 1.145.057 2.05-.202-.528-.407-.942-.621-1.183-.81 1.259-3.104 1.858-6.18 1.559 1.38-.072 2.451-.288 3.301-.584-1.4.09-3.214-.27-5.365-1.067 4.262.895 6.433.063 7.703-.966-.335-.455-.906-.954-.906-.954z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GIMP</title><path d="M19.848 1.636c-.106-.016-.228.107-.324.397-.157.47-1.073 3.203-5.504 4.326.596.512.976 1.242.976 2.059 0 1.547-1.344 2.8-3 2.8-1.655 0-2.997-1.254-2.998-2.8 0-.603.208-1.158.555-1.616-3.135-.322-4.49-3.123-4.49-3.123l-.096 4.163c-.025.564-.009 1.111-.27 1.636a3.335 2.365 54.527 0 0-.05-.072 3.335 2.365 54.527 0 0-2.849-1.654 3.335 2.365 54.527 0 0-1.013.334 3.335 2.365 54.527 0 0 .029 4.095 3.335 2.365 54.527 0 0 3.291 1.59c2.997 2.22 8.482 4.148 12.231 1.885l-2.025-1.629c-1.064.345-2.604.34-4.397-.295 2.9.582 4.47-.053 5.334-.722-.228-.296-.71-.526-.71-.526s.563.107.93.496c.147.155.198.387.218.653.553.298 1.183.656 1.875 1.062 2.06-2.06 3.253-5.933 2.52-12.617-.035-.269-.127-.425-.233-.442zM6.855 7.096c1.051-.001 1.903.795 1.903 1.777 0 .98-.853 1.776-1.903 1.775-1.05 0-1.9-.795-1.9-1.775 0-.981.85-1.777 1.9-1.778zm5.776.482a1.325 1.325 0 1 0-.002 2.65 1.325 1.325 0 0 0 .002-2.65zm-10.942.639a.964.947 0 0 1 .002 0 .964.947 0 0 1 .021 0 .964.947 0 0 1 .965.949.964.947 0 0 1-.965.947.964.947 0 0 1-.962-.947.964.947 0 0 1 .94-.95zm5.559.123a.84.84 0 1 0 .02 1.68.84.84 0 0 0-.02-1.68zm8.26 4.964c-.043.053-.103.099-.156.147l.21.115c-.017-.1-.033-.21-.054-.262zm-.55.1l-.733.361.06.05.198.157 1.994 1.606.015.012a81.76 81.76 0 0 0 1.952 1.513.543.543 0 0 0-.008.127l.26-.04.103.152 2.317 1.472c-.12.41-.065.953.207 1.457.79 1.465 2.677 2.094 2.677 2.094-.771-1.968-.209-3.569-1.73-4.133-.242-.09-.453-.093-.629-.033l-2.047-1.895-.174-.052-.025-.262a.839.839 0 0 0-.12.059c-.306-.26-.687-.537-1.09-.815-1.364-.835-2.257-1.3-3.228-1.83z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/giphy.svg b/assets/lib/simple-icons/icons/giphy.svg
new file mode 100644
index 00000000..05ccfa12
--- /dev/null
+++ b/assets/lib/simple-icons/icons/giphy.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GIPHY</title><path d="M2.666 0v24h18.668V8.666l-2.668 2.668v10H5.334V2.668H10L12.666 0zm10.668 0v8h8V5.334h-2.668V2.668H16V0"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/git.svg b/assets/lib/simple-icons/icons/git.svg
index f795f637..13af359c 100644
--- a/assets/lib/simple-icons/icons/git.svg
+++ b/assets/lib/simple-icons/icons/git.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Git icon</title><path d="M23.546 10.93L13.067.452c-.604-.603-1.582-.603-2.188 0L8.708 2.627l2.76 2.76c.645-.215 1.379-.07 1.889.441.516.515.658 1.258.438 1.9l2.658 2.66c.645-.223 1.387-.078 1.9.435.721.72.721 1.884 0 2.604-.719.719-1.881.719-2.6 0-.539-.541-.674-1.337-.404-1.996L12.86 8.955v6.525c.176.086.342.203.488.348.713.721.713 1.883 0 2.6-.719.721-1.889.721-2.609 0-.719-.719-.719-1.879 0-2.598.182-.18.387-.316.605-.406V8.835c-.217-.091-.424-.222-.6-.401-.545-.545-.676-1.342-.396-2.009L7.636 3.7.45 10.881c-.6.605-.6 1.584 0 2.189l10.48 10.477c.604.604 1.582.604 2.186 0l10.43-10.43c.605-.603.605-1.582 0-2.187"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Git</title><path d="M23.546 10.93L13.067.452c-.604-.603-1.582-.603-2.188 0L8.708 2.627l2.76 2.76c.645-.215 1.379-.07 1.889.441.516.515.658 1.258.438 1.9l2.658 2.66c.645-.223 1.387-.078 1.9.435.721.72.721 1.884 0 2.604-.719.719-1.881.719-2.6 0-.539-.541-.674-1.337-.404-1.996L12.86 8.955v6.525c.176.086.342.203.488.348.713.721.713 1.883 0 2.6-.719.721-1.889.721-2.609 0-.719-.719-.719-1.879 0-2.598.182-.18.387-.316.605-.406V8.835c-.217-.091-.424-.222-.6-.401-.545-.545-.676-1.342-.396-2.009L7.636 3.7.45 10.881c-.6.605-.6 1.584 0 2.189l10.48 10.477c.604.604 1.582.604 2.186 0l10.43-10.43c.605-.603.605-1.582 0-2.187"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/gitbook.svg b/assets/lib/simple-icons/icons/gitbook.svg
new file mode 100644
index 00000000..c62e27ed
--- /dev/null
+++ b/assets/lib/simple-icons/icons/gitbook.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitBook</title><path d="M10.802 17.77a.703.703 0 11-.002 1.406.703.703 0 01.002-1.406m11.024-4.347a.703.703 0 11.001-1.406.703.703 0 01-.001 1.406m0-2.876a2.176 2.176 0 00-2.174 2.174c0 .233.039.465.115.691l-7.181 3.823a2.165 2.165 0 00-1.784-.937c-.829 0-1.584.475-1.95 1.216l-6.451-3.402c-.682-.358-1.192-1.48-1.138-2.502.028-.533.212-.947.493-1.107.178-.1.392-.092.62.027l.042.023c1.71.9 7.304 3.847 7.54 3.956.363.169.565.237 1.185-.057l11.564-6.014c.17-.064.368-.227.368-.474 0-.342-.354-.477-.355-.477-.658-.315-1.669-.788-2.655-1.25-2.108-.987-4.497-2.105-5.546-2.655-.906-.474-1.635-.074-1.765.006l-.252.125C7.78 6.048 1.46 9.178 1.1 9.397.457 9.789.058 10.57.006 11.539c-.08 1.537.703 3.14 1.824 3.727l6.822 3.518a2.175 2.175 0 002.15 1.862 2.177 2.177 0 002.173-2.14l7.514-4.073c.38.298.853.461 1.337.461A2.176 2.176 0 0024 12.72a2.176 2.176 0 00-2.174-2.174"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/gitea.svg b/assets/lib/simple-icons/icons/gitea.svg
index 0fd0e0b0..d870f719 100644
--- a/assets/lib/simple-icons/icons/gitea.svg
+++ b/assets/lib/simple-icons/icons/gitea.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Gitea icon</title><path d="M4.186 5.421C2.341 5.417-.13 6.59.006 9.531c.213 4.594 4.92 5.02 6.801 5.057.206.862 2.42 3.834 4.059 3.99h7.18c4.306-.286 7.53-13.022 5.14-13.07-3.953.186-6.296.28-8.305.296v3.975l-.626-.277-.004-3.696c-2.306-.001-4.336-.108-8.189-.298-.482-.003-1.154-.085-1.876-.087zm.261 1.625h.22c.262 2.355.688 3.732 1.55 5.836-2.2-.26-4.072-.899-4.416-3.285-.178-1.235.422-2.524 2.646-2.552zm8.557 2.315c.15.002.303.03.447.096l.749.323-.537.979a.672.597 0 0 0-.241.038.672.597 0 0 0-.405.764.672.597 0 0 0 .112.174l-.926 1.686a.672.597 0 0 0-.222.038.672.597 0 0 0-.405.764.672.597 0 0 0 .86.36.672.597 0 0 0 .404-.765.672.597 0 0 0-.158-.22l.902-1.642a.672.597 0 0 0 .293-.03.672.597 0 0 0 .213-.112c.348.146.633.265.838.366.308.152.417.253.45.365.033.11-.003.322-.177.694-.13.277-.345.67-.599 1.133a.672.597 0 0 0-.251.038.672.597 0 0 0-.405.764.672.597 0 0 0 .86.36.672.597 0 0 0 .404-.764.672.597 0 0 0-.137-.202c.251-.458.467-.852.606-1.148.188-.402.286-.701.2-.99-.086-.289-.35-.477-.7-.65-.23-.113-.517-.233-.86-.377a.672.597 0 0 0-.038-.239.672.597 0 0 0-.145-.209l.528-.963 2.924 1.263c.528.229.746.79.49 1.26l-2.01 3.68c-.257.469-.888.663-1.416.435l-4.137-1.788c-.528-.228-.747-.79-.49-1.26l2.01-3.679c.176-.323.53-.515.905-.53h.064z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Gitea</title><path d="M4.209 4.603c-.247 0-.525.02-.84.088-.333.07-1.28.283-2.054 1.027C-.403 7.25.035 9.685.089 10.052c.065.446.263 1.687 1.21 2.768 1.749 2.141 5.513 2.092 5.513 2.092s.462 1.103 1.168 2.119c.955 1.263 1.936 2.248 2.89 2.367 2.406 0 7.212-.004 7.212-.004s.458.004 1.08-.394c.535-.324 1.013-.893 1.013-.893s.492-.527 1.18-1.73c.21-.37.385-.729.538-1.068 0 0 2.107-4.471 2.107-8.823-.042-1.318-.367-1.55-.443-1.627-.156-.156-.366-.153-.366-.153s-4.475.252-6.792.306c-.508.011-1.012.023-1.512.027v4.474l-.634-.301c0-1.39-.004-4.17-.004-4.17-1.107.016-3.405-.084-3.405-.084s-5.399-.27-5.987-.324c-.187-.011-.401-.032-.648-.032zm.354 1.832h.111s.271 2.269.6 3.597C5.549 11.147 6.22 13 6.22 13s-.996-.119-1.641-.348c-.99-.324-1.409-.714-1.409-.714s-.73-.511-1.096-1.52C1.444 8.73 2.021 7.7 2.021 7.7s.32-.859 1.47-1.145c.395-.106.863-.12 1.072-.12zm8.33 2.554c.26.003.509.127.509.127l.868.422-.529 1.075a.686.686 0 0 0-.614.359.685.685 0 0 0 .072.756l-.939 1.924a.69.69 0 0 0-.66.527.687.687 0 0 0 .347.763.686.686 0 0 0 .867-.206.688.688 0 0 0-.069-.882l.916-1.874a.667.667 0 0 0 .237-.02.657.657 0 0 0 .271-.137 8.826 8.826 0 0 1 1.016.512.761.761 0 0 1 .286.282c.073.21-.073.569-.073.569-.087.29-.702 1.55-.702 1.55a.692.692 0 0 0-.676.477.681.681 0 1 0 1.157-.252c.073-.141.141-.282.214-.431.19-.397.515-1.16.515-1.16.035-.066.218-.394.103-.814-.095-.435-.48-.638-.48-.638-.467-.301-1.116-.58-1.116-.58s0-.156-.042-.27a.688.688 0 0 0-.148-.241l.516-1.062 2.89 1.401s.48.218.583.619c.073.282-.019.534-.069.657-.24.587-2.1 4.317-2.1 4.317s-.232.554-.748.588a1.065 1.065 0 0 1-.393-.045l-.202-.08-4.31-2.1s-.417-.218-.49-.596c-.083-.31.104-.691.104-.691l2.073-4.272s.183-.37.466-.497a.855.855 0 0 1 .35-.077z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/gitee.svg b/assets/lib/simple-icons/icons/gitee.svg
new file mode 100644
index 00000000..457e4829
--- /dev/null
+++ b/assets/lib/simple-icons/icons/gitee.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Gitee</title><path d="M11.984 0A12 12 0 0 0 0 12a12 12 0 0 0 12 12 12 12 0 0 0 12-12A12 12 0 0 0 12 0a12 12 0 0 0-.016 0zm6.09 5.333c.328 0 .593.266.592.593v1.482a.594.594 0 0 1-.593.592H9.777c-.982 0-1.778.796-1.778 1.778v5.63c0 .327.266.592.593.592h5.63c.982 0 1.778-.796 1.778-1.778v-.296a.593.593 0 0 0-.592-.593h-4.15a.592.592 0 0 1-.592-.592v-1.482a.593.593 0 0 1 .593-.592h6.815c.327 0 .593.265.593.592v3.408a4 4 0 0 1-4 4H5.926a.593.593 0 0 1-.593-.593V9.778a4.444 4.444 0 0 1 4.445-4.444h8.296Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/gitextensions.svg b/assets/lib/simple-icons/icons/gitextensions.svg
new file mode 100644
index 00000000..998cf324
--- /dev/null
+++ b/assets/lib/simple-icons/icons/gitextensions.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Git Extensions</title><path d="M17.504 0l-4.631 4.875 2.533.004c0 2.604-1.327 4.58-3.32 6.16l-6.393 5.065c-2.559 2.027-3.859 4.392-3.859 7.886.01-.009 4.283.026 4.283 0 0-1.91.73-3.581 2.223-4.793l6.723-5.455c2.57-2.085 4.514-4.86 4.517-8.867h2.586zM1.834 4.873c0 3.78 1.833 6.398 4.148 8.518l1.11.88 3.222-2.554-1.078-.858C7.43 9.22 6.117 7.383 6.117 4.873c-1.423-.004-2.856 0-4.283 0zm12.592 10.115l-3.178 2.58.992.787c1.82 1.593 3.166 3.33 3.166 5.635h4.166c-.009-3.633-1.788-6.1-4.066-8.144-.356-.28-.722-.572-1.08-.858Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/github.svg b/assets/lib/simple-icons/icons/github.svg
index 38997125..538ec5bf 100644
--- a/assets/lib/simple-icons/icons/github.svg
+++ b/assets/lib/simple-icons/icons/github.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitHub icon</title><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitHub</title><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/githubactions.svg b/assets/lib/simple-icons/icons/githubactions.svg
index 3dfaf369..bc925a35 100644
--- a/assets/lib/simple-icons/icons/githubactions.svg
+++ b/assets/lib/simple-icons/icons/githubactions.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitHub Actions icon</title><path d="M10.984 13.836a.5.5 0 0 1-.353-.146l-.745-.743a.5.5 0 1 1 .706-.708l.392.391 1.181-1.18a.5.5 0 0 1 .708.707l-1.535 1.533a.504.504 0 0 1-.354.146zm9.353-.147l1.534-1.532a.5.5 0 0 0-.707-.707l-1.181 1.18-.392-.391a.5.5 0 1 0-.706.708l.746.743a.497.497 0 0 0 .706-.001zM4.527 7.452l2.557-1.585A1 1 0 0 0 7.09 4.17L4.533 2.56A1 1 0 0 0 3 3.406v3.196a1.001 1.001 0 0 0 1.527.85zm2.03-2.436L4 6.602V3.406l2.557 1.61zM24 12.5c0 1.93-1.57 3.5-3.5 3.5a3.503 3.503 0 0 1-3.46-3h-2.08a3.503 3.503 0 0 1-3.46 3 3.502 3.502 0 0 1-3.46-3h-.558c-.972 0-1.85-.399-2.482-1.042V17c0 1.654 1.346 3 3 3h.04c.244-1.693 1.7-3 3.46-3 1.93 0 3.5 1.57 3.5 3.5S13.43 24 11.5 24a3.502 3.502 0 0 1-3.46-3H8c-2.206 0-4-1.794-4-4V9.899A5.008 5.008 0 0 1 0 5c0-2.757 2.243-5 5-5s5 2.243 5 5a5.005 5.005 0 0 1-4.952 4.998A2.482 2.482 0 0 0 7.482 12h.558c.244-1.693 1.7-3 3.46-3a3.502 3.502 0 0 1 3.46 3h2.08a3.503 3.503 0 0 1 3.46-3c1.93 0 3.5 1.57 3.5 3.5zm-15 8c0 1.378 1.122 2.5 2.5 2.5s2.5-1.122 2.5-2.5-1.122-2.5-2.5-2.5S9 19.122 9 20.5zM5 9c2.206 0 4-1.794 4-4S7.206 1 5 1 1 2.794 1 5s1.794 4 4 4zm9 3.5c0-1.378-1.122-2.5-2.5-2.5S9 11.122 9 12.5s1.122 2.5 2.5 2.5 2.5-1.122 2.5-2.5zm9 0c0-1.378-1.122-2.5-2.5-2.5S18 11.122 18 12.5s1.122 2.5 2.5 2.5 2.5-1.122 2.5-2.5zm-13 8a.5.5 0 1 0 1 0 .5.5 0 0 0-1 0zm2 0a.5.5 0 1 0 1 0 .5.5 0 0 0-1 0zm12 0c0 1.93-1.57 3.5-3.5 3.5a3.503 3.503 0 0 1-3.46-3.002c-.007.001-.013.005-.021.005l-.506.017h-.017a.5.5 0 0 1-.016-.999l.506-.017c.018-.002.035.006.052.007A3.503 3.503 0 0 1 20.5 17c1.93 0 3.5 1.57 3.5 3.5zm-1 0c0-1.378-1.122-2.5-2.5-2.5S18 19.122 18 20.5s1.122 2.5 2.5 2.5 2.5-1.122 2.5-2.5z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitHub Actions</title><path d="M10.984 13.836a.5.5 0 0 1-.353-.146l-.745-.743a.5.5 0 1 1 .706-.708l.392.391 1.181-1.18a.5.5 0 0 1 .708.707l-1.535 1.533a.504.504 0 0 1-.354.146zm9.353-.147l1.534-1.532a.5.5 0 0 0-.707-.707l-1.181 1.18-.392-.391a.5.5 0 1 0-.706.708l.746.743a.497.497 0 0 0 .706-.001zM4.527 7.452l2.557-1.585A1 1 0 0 0 7.09 4.17L4.533 2.56A1 1 0 0 0 3 3.406v3.196a1.001 1.001 0 0 0 1.527.85zm2.03-2.436L4 6.602V3.406l2.557 1.61zM24 12.5c0 1.93-1.57 3.5-3.5 3.5a3.503 3.503 0 0 1-3.46-3h-2.08a3.503 3.503 0 0 1-3.46 3 3.502 3.502 0 0 1-3.46-3h-.558c-.972 0-1.85-.399-2.482-1.042V17c0 1.654 1.346 3 3 3h.04c.244-1.693 1.7-3 3.46-3 1.93 0 3.5 1.57 3.5 3.5S13.43 24 11.5 24a3.502 3.502 0 0 1-3.46-3H8c-2.206 0-4-1.794-4-4V9.899A5.008 5.008 0 0 1 0 5c0-2.757 2.243-5 5-5s5 2.243 5 5a5.005 5.005 0 0 1-4.952 4.998A2.482 2.482 0 0 0 7.482 12h.558c.244-1.693 1.7-3 3.46-3a3.502 3.502 0 0 1 3.46 3h2.08a3.503 3.503 0 0 1 3.46-3c1.93 0 3.5 1.57 3.5 3.5zm-15 8c0 1.378 1.122 2.5 2.5 2.5s2.5-1.122 2.5-2.5-1.122-2.5-2.5-2.5S9 19.122 9 20.5zM5 9c2.206 0 4-1.794 4-4S7.206 1 5 1 1 2.794 1 5s1.794 4 4 4zm9 3.5c0-1.378-1.122-2.5-2.5-2.5S9 11.122 9 12.5s1.122 2.5 2.5 2.5 2.5-1.122 2.5-2.5zm9 0c0-1.378-1.122-2.5-2.5-2.5S18 11.122 18 12.5s1.122 2.5 2.5 2.5 2.5-1.122 2.5-2.5zm-13 8a.5.5 0 1 0 1 0 .5.5 0 0 0-1 0zm2 0a.5.5 0 1 0 1 0 .5.5 0 0 0-1 0zm12 0c0 1.93-1.57 3.5-3.5 3.5a3.503 3.503 0 0 1-3.46-3.002c-.007.001-.013.005-.021.005l-.506.017h-.017a.5.5 0 0 1-.016-.999l.506-.017c.018-.002.035.006.052.007A3.503 3.503 0 0 1 20.5 17c1.93 0 3.5 1.57 3.5 3.5zm-1 0c0-1.378-1.122-2.5-2.5-2.5S18 19.122 18 20.5s1.122 2.5 2.5 2.5 2.5-1.122 2.5-2.5z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/githubpages.svg b/assets/lib/simple-icons/icons/githubpages.svg
new file mode 100644
index 00000000..bd3d5167
--- /dev/null
+++ b/assets/lib/simple-icons/icons/githubpages.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitHub Pages</title><path d="M14.088 13.126h-.296V9.858h.998c.815 0 1.094.47 1.094.98s-.28.98-1.094.98h-.701v1.308zm0-1.582h.74a.642.642 0 0 0 .733-.705.642.642 0 0 0-.732-.706h-.741zm2.881-.37a1.913 1.913 0 0 0-.653.11v-.262a1.756 1.756 0 0 1 .653-.118c.654 0 .824.297.824.732v1.49h-.17l-.066-.174a1.143 1.143 0 0 1-.657.218.663.663 0 0 1-.763-.702c0-.37.205-.645.776-.68l.575-.035v-.122c0-.318-.113-.457-.519-.457zm-.078.85c-.31.03-.445.192-.445.445 0 .196.048.431.462.431a1.056 1.056 0 0 0 .58-.174v-.758zm1.86.493a.252.252 0 0 0-.083.16c0 .11.053.158.166.17l.74.088c.41.044.598.205.598.584 0 .532-.532.74-1.133.74-.61 0-.976-.178-.976-.657a.609.609 0 0 1 .449-.575v-.005a.321.321 0 0 1-.14-.287.392.392 0 0 1 .166-.297.746.746 0 0 1-.349-.714c0-.449.192-.82.85-.82a1.36 1.36 0 0 1 .349.044h.74v.165l-.365.105a.908.908 0 0 1 .126.505c0 .449-.192.82-.85.82a1.397 1.397 0 0 1-.288-.027zm.127.588c-.288.065-.532.2-.532.48 0 .322.244.413.693.413.435 0 .845-.109.845-.48 0-.221-.105-.309-.37-.34zm.727-1.381c0-.288-.056-.554-.566-.554-.51 0-.567.266-.567.554 0 .288.057.553.567.553.51 0 .566-.266.566-.554zm1.637-.82c.74 0 .828.506.828 1.133v.14h-1.438c.018.379.118.723.61.723a1.665 1.665 0 0 0 .719-.122v.261a1.765 1.765 0 0 1-.719.131c-.736 0-.915-.505-.915-1.133s.179-1.133.915-1.133zm-.61 1.024h1.133c0-.387-.022-.753-.523-.753-.506 0-.597.36-.61.753zm2.601-.052c.619.057.767.266.767.623 0 .336-.213.671-.876.671a2.147 2.147 0 0 1-.649-.109V12.8a1.924 1.924 0 0 0 .654.1c.453 0 .575-.192.575-.397 0-.2-.061-.34-.492-.374-.632-.057-.763-.28-.763-.58 0-.31.2-.645.815-.645a1.627 1.627 0 0 1 .627.11v.26a1.799 1.799 0 0 0-.631-.1c-.432 0-.523.162-.523.376 0 .19.078.29.496.326zm-20.787-.659H1.38a.05.05 0 0 0-.05.05v.522a.05.05 0 0 0 .05.05h.416v.649a1.267 1.267 0 0 1-.351.032c-.305 0-.731-.112-.731-1.048s.443-1.06.86-1.06a1.69 1.69 0 0 1 .614.094.05.05 0 0 0 .06-.05l.12-.504a.047.047 0 0 0-.02-.039 1.715 1.715 0 0 0-.903-.165C.73 9.748 0 10.05 0 11.508s.837 1.675 1.542 1.675a1.736 1.736 0 0 0 .938-.25.043.043 0 0 0 .016-.038v-1.628a.05.05 0 0 0-.05-.05zm5.545-1.294a.05.05 0 0 0-.05-.05H7.34a.05.05 0 0 0-.05.05v1.161h-.936V9.923a.05.05 0 0 0-.05-.05h-.6a.05.05 0 0 0-.05.05v3.145a.05.05 0 0 0 .05.05h.6a.05.05 0 0 0 .05-.05v-1.345h.937l-.002 1.345a.05.05 0 0 0 .05.05h.603a.05.05 0 0 0 .05-.05zm-4.389.412a.388.388 0 1 0-.387.392.39.39 0 0 0 .387-.392zm-.042 2.068v-1.451a.05.05 0 0 0-.05-.05h-.6a.057.057 0 0 0-.051.056v2.08c0 .06.038.079.087.079h.54c.06 0 .074-.03.074-.08zm6.764-1.497h-.597a.05.05 0 0 0-.05.05v1.542a.673.673 0 0 1-.367.11c-.215 0-.272-.097-.272-.307v-1.344a.05.05 0 0 0-.05-.05h-.604a.05.05 0 0 0-.05.05v1.446c0 .626.348.779.828.779a1.398 1.398 0 0 0 .71-.217 1.274 1.274 0 0 0 .022.128.052.052 0 0 0 .044.027l.385-.002a.05.05 0 0 0 .05-.05v-2.112a.05.05 0 0 0-.05-.05zm1.662-.07a1.121 1.121 0 0 0-.569.15V9.923a.05.05 0 0 0-.05-.05h-.602a.05.05 0 0 0-.05.05v3.145a.05.05 0 0 0 .05.05h.418a.05.05 0 0 0 .044-.027.973.973 0 0 0 .025-.144 1.08 1.08 0 0 0 .713.233c.548 0 .862-.278.862-1.248s-.502-1.095-.841-1.095zm-.235 1.771a.716.716 0 0 1-.347-.1v-.996a.793.793 0 0 1 .308-.1c.215-.019.422.046.422.558 0 .54-.094.647-.383.639zm-6.475-1.706h-.45l-.002-.595c0-.023-.011-.034-.037-.034h-.615c-.024 0-.036.01-.036.033v.615l-.33.08a.05.05 0 0 0-.035.048v.387a.05.05 0 0 0 .05.05h.315v.93c0 .692.484.76.812.76a1.375 1.375 0 0 0 .357-.06.046.046 0 0 0 .028-.044l.001-.426a.05.05 0 0 0-.05-.05c-.026 0-.094.01-.163.01-.221 0-.296-.102-.296-.236v-.884h.451a.05.05 0 0 0 .05-.05v-.484a.05.05 0 0 0-.05-.05z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/githubsponsors.svg b/assets/lib/simple-icons/icons/githubsponsors.svg
new file mode 100644
index 00000000..a0c0e1ce
--- /dev/null
+++ b/assets/lib/simple-icons/icons/githubsponsors.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitHub Sponsors</title><path d="M17.625 1.499c-2.32 0-4.354 1.203-5.625 3.03-1.271-1.827-3.305-3.03-5.625-3.03C3.129 1.499 0 4.253 0 8.249c0 4.275 3.068 7.847 5.828 10.227a33.14 33.14 0 0 0 5.616 3.876l.028.017.008.003-.001.003c.163.085.342.126.521.125.179.001.358-.041.521-.125l-.001-.003.008-.003.028-.017a33.14 33.14 0 0 0 5.616-3.876C20.932 16.096 24 12.524 24 8.249c0-3.996-3.129-6.75-6.375-6.75zm-.919 15.275a30.766 30.766 0 0 1-4.703 3.316l-.004-.002-.004.002a30.955 30.955 0 0 1-4.703-3.316c-2.677-2.307-5.047-5.298-5.047-8.523 0-2.754 2.121-4.5 4.125-4.5 2.06 0 3.914 1.479 4.544 3.684.143.495.596.797 1.086.796.49.001.943-.302 1.085-.796.63-2.205 2.484-3.684 4.544-3.684 2.004 0 4.125 1.746 4.125 4.5 0 3.225-2.37 6.216-5.048 8.523z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/gitignoredotio.svg b/assets/lib/simple-icons/icons/gitignoredotio.svg
new file mode 100644
index 00000000..8e1aa81b
--- /dev/null
+++ b/assets/lib/simple-icons/icons/gitignoredotio.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>gitignore.io</title><path d="M15.08 7.143c-.958.57-1.977 1.065-3.743 1.02-2.082 0-3.55 1.11-3.55 2.91 0 1.035.405 1.74 1.409 2.28-.57.36-.884.93-.884 1.516 0 .84.719 1.575 2.456 1.575h1.257c.794 0 1.153.33 1.153.795 0 .525-.344.915-1.841.915-1.513 0-1.812-.315-1.812-1.005H7.428c0 1.575.794 2.565 3.849 2.565 2.815 0 4.252-1.005 4.252-2.64 0-1.335-1.183-2.31-3.024-2.31h-1.318c-.764 0-.869-.24-.869-.48 0-.18.09-.36.255-.45.284.06.584.09.928.09 2.052 0 3.37-1.125 3.37-2.67 0-1.036-.54-1.62-1.543-2.056 1.003 0 1.737-.09 2.291-.315zm-3.683 2.565c.793 0 1.212.42 1.212 1.305 0 .915-.434 1.395-1.212 1.395-.734 0-1.213-.495-1.213-1.365 0-.825.464-1.335 1.213-1.335zm9.135-5.423c-.826 0-1.412.588-1.412 1.341 0 .77.586 1.342 1.412 1.342s1.396-.573 1.396-1.341c0-.754-.57-1.341-1.396-1.341zm1.426 4.19h-4.55v1.627h2.178v4.747h-2.253v1.627H24V14.85h-2.042zM3.933 13.933l1.02 1.02-2.477 2.476-.62-.62v-.8l2.077-2.076Zm-2.695-.219v2.477L0 14.952l1.238-1.238Zm2.257-.219-1.638 1.639v-2.039l.619-.619 1.019 1.02z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/gitkraken.svg b/assets/lib/simple-icons/icons/gitkraken.svg
index 77f8ea4f..06d25f4a 100644
--- a/assets/lib/simple-icons/icons/gitkraken.svg
+++ b/assets/lib/simple-icons/icons/gitkraken.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitKraken icon</title><path d="M 23.224627,6.2515925 C 23.132336,6.0010885 22.855463,5.8824285 22.604959,5.9747195 22.420377,6.0406415 22.301717,6.2252235 22.301717,6.4229905 22.301717,6.4757275 22.314902,6.5416495 22.328086,6.5943875 24.477146,12.303241 21.576574,18.671317 15.86772,20.820377 15.089839,21.110435 14.272405,21.321384 13.441787,21.426861 V 16.271751 C 13.771397,16.205829 14.087823,16.113539 14.404249,16.008063 V 20.345737 C 19.849415,19.014111 23.198258,13.529393 21.866631,8.0842275 21.194226,5.3286835 19.401145,2.9686715 16.909289,1.5974925 16.67197,1.4656485 16.381912,1.5579395 16.263253,1.7820745 16.131408,2.0193935 16.223699,2.3094505 16.447835,2.4281105 20.890984,4.8804125 22.499483,10.483792 20.047181,14.926942 19.018797,16.799129 17.35756,18.249416 15.366712,19.027295 V 15.19063 C 15.973195,14.992863 16.395097,14.439118 16.395097,13.793081 16.395097,13.265705 16.131408,12.791066 15.669954,12.527377 16.012749,9.2180875 17.528957,10.088259 17.528957,9.0335055 V 8.4138375 C 17.528957,6.8317075 13.863688,1.6765985 12.149714,1.5579395 12.096976,1.5579395 12.044238,1.5579395 11.991501,1.5579395 11.938763,1.5579395 11.886025,1.5579395 11.833287,1.5579395 10.119313,1.6765985 6.4540444,6.8317075 6.4540444,8.4138375 V 9.0335055 C 6.4540444,10.088259 7.9570684,9.2180875 8.3130474,12.527377 7.8647774,12.791066 7.5879044,13.265705 7.5879044,13.793081 7.5879044,14.439118 8.0098064,14.992863 8.6162894,15.19063 V 19.027295 C 3.9094514,17.168292 1.5889934,11.828603 3.4479964,7.1085795 4.2390614,5.1177325 5.6761634,3.4696795 7.5483514,2.4281105 7.7856704,2.2962665 7.8647774,2.0062095 7.7329334,1.7688895 7.6538264,1.6238615 7.4824294,1.5315705 7.3110314,1.5315705 7.2319254,1.5315705 7.1528184,1.5579395 7.0868964,1.5974925 2.1822924,4.3002985 0.38921136,10.470608 3.1052014,15.388396 4.4763814,17.880251 6.8363924,19.673332 9.5919364,20.345737 V 16.021248 C 9.9083624,16.126724 10.224788,16.219014 10.554399,16.284936 V 21.440044 C 4.5027504,20.635795 0.25736736,15.085155 1.0616164,9.0335055 1.1670924,8.2028865 1.3780424,7.3854525 1.6681004,6.6075715 1.7603904,6.3570675 1.6285464,6.0801955 1.3912274,5.9879045 1.1539074,5.8956135 0.86385036,6.0274575 0.77155936,6.2647775 V 6.2647775 C -1.5620826,12.474639 1.5758094,19.396459 7.7856704,21.716917 8.9854534,22.165188 10.237973,22.415691 11.516861,22.468429 V 16.377228 C 11.688259,16.390411 12.004685,16.390411 12.004685,16.390411 12.004685,16.390411 12.321111,16.390411 12.492509,16.377228 V 22.455246 C 19.124272,22.178373 24.266196,16.588179 23.989323,9.9564145 23.923401,8.7038945 23.672897,7.4513745 23.224627,6.2515925 Z M 14.206483,13.094307 C 14.588831,12.711959 15.208499,12.711959 15.604032,13.094307 15.98638,13.476655 15.98638,14.096322 15.604032,14.491856 15.221683,14.874204 14.602016,14.874204 14.206483,14.491856 14.021901,14.307274 13.916426,14.05677 13.916426,13.793081 13.916426,13.529393 14.021901,13.278889 14.206483,13.094307 Z M 9.7765184,14.491856 C 9.3941704,14.874204 8.7745024,14.874204 8.3921544,14.491856 8.3921544,14.491856 8.3921544,14.491856 8.3921544,14.491856 8.0098064,14.109507 8.0098064,13.476655 8.3921544,13.094307 8.7745024,12.711959 9.4073544,12.711959 9.7897024,13.094307 10.172051,13.48984 10.172051,14.109507 9.7765184,14.491856 Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitKraken</title><path d="M23.225 6.252a.478.478 0 00-.923.171c0 .053.013.119.026.171 2.15 5.71-.751 12.077-6.46 14.226a10.9 10.9 0 01-2.426.607v-5.155c.33-.066.646-.158.962-.264v4.338c5.445-1.332 8.794-6.817 7.463-12.262a10.147 10.147 0 00-4.958-6.487.472.472 0 00-.646.185.472.472 0 00.185.646c4.443 2.452 6.051 8.056 3.6 12.499a9.13 9.13 0 01-4.681 4.1v-3.836a1.472 1.472 0 001.028-1.398c0-.527-.264-1.002-.725-1.266.343-3.309 1.859-2.439 1.859-3.493v-.62c0-1.582-3.665-6.737-5.38-6.856h-.316c-1.714.119-5.379 5.274-5.379 6.856v.62c0 1.054 1.503.184 1.859 3.493a1.461 1.461 0 00-.725 1.266c0 .646.422 1.2 1.028 1.398v3.836C3.91 17.168 1.59 11.83 3.448 7.11a9.24 9.24 0 014.1-4.68.479.479 0 00.185-.66.487.487 0 00-.422-.237.444.444 0 00-.224.065 10.142 10.142 0 00-3.982 13.791 10.147 10.147 0 006.487 4.958V16.02c.316.106.633.198.962.264v5.155C4.503 20.636.257 15.085 1.062 9.034a10.9 10.9 0 01.606-2.426.489.489 0 00-.277-.62.494.494 0 00-.62.277c-2.333 6.21.805 13.131 7.015 15.452 1.2.448 2.452.699 3.73.751v-6.09c.172.012.489.012.489.012s.316 0 .488-.013v6.078c6.631-.277 11.773-5.867 11.496-12.499a12.458 12.458 0 00-.764-3.704zm-9.019 6.842a.995.995 0 011.398 0 .995.995 0 010 1.398.995.995 0 01-1.398 0 .988.988 0 010-1.398zm-4.43 1.398a.979.979 0 01-1.384 0 .995.995 0 010-1.398.995.995 0 011.398 0 .983.983 0 01-.013 1.398z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/gitlab.svg b/assets/lib/simple-icons/icons/gitlab.svg
index 53dfcb0f..e4a29630 100644
--- a/assets/lib/simple-icons/icons/gitlab.svg
+++ b/assets/lib/simple-icons/icons/gitlab.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>GitLab icon</title><path d="M4.844.904a1.007 1.007 0 00-.955.692l-2.53 7.783c0 .007-.005.012-.007.02L.07 13.335a1.437 1.437 0 00.522 1.607l11.072 8.045a.566.566 0 00.67-.004l11.074-8.04a1.436 1.436 0 00.522-1.61l-1.26-3.867a.547.547 0 00-.031-.104l-2.526-7.775a1.004 1.004 0 00-.957-.684.987.987 0 00-.949.69l-2.406 7.408H8.203l-2.41-7.408a.987.987 0 00-.943-.69h-.006zm-.006 1.42l2.174 6.678H2.674l2.164-6.678zm14.328 0l2.168 6.678h-4.342l2.174-6.678zm-10.594 7.81h6.862l-2.15 6.618L12 20.693 8.572 10.135zm-5.515.005h4.322l3.086 9.5-7.408-9.5zm13.568 0h4.326l-6.703 8.588-.709.914 2.959-9.108.127-.394zM2.1 10.762l6.978 8.947-7.818-5.682a.305.305 0 01-.112-.341l.952-2.924zm19.8 0l.952 2.922a.305.305 0 01-.11.341v.002l-7.82 5.68.025-.035 6.953-8.91Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitLab</title><path d="m23.6004 9.5927-.0337-.0862L20.3.9814a.851.851 0 0 0-.3362-.405.8748.8748 0 0 0-.9997.0539.8748.8748 0 0 0-.29.4399l-2.2055 6.748H7.5375l-2.2057-6.748a.8573.8573 0 0 0-.29-.4412.8748.8748 0 0 0-.9997-.0537.8585.8585 0 0 0-.3362.4049L.4332 9.5015l-.0325.0862a6.0657 6.0657 0 0 0 2.0119 7.0105l.0113.0087.03.0213 4.976 3.7264 2.462 1.8633 1.4995 1.1321a1.0085 1.0085 0 0 0 1.2197 0l1.4995-1.1321 2.4619-1.8633 5.006-3.7489.0125-.01a6.0682 6.0682 0 0 0 2.0094-7.003z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/gitlfs.svg b/assets/lib/simple-icons/icons/gitlfs.svg
new file mode 100644
index 00000000..af4aa215
--- /dev/null
+++ b/assets/lib/simple-icons/icons/gitlfs.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Git LFS</title><path d="M11.967.304L0 7.215v9.68l11.79 6.802V14.02l11.96-6.91-4.383-2.53-11.959 6.905v3.887l-2.775-1.601V9.886l11.965-6.91zM24 7.545L12.29 14.31v9.387L24 16.929V7.547z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/gitpod.svg b/assets/lib/simple-icons/icons/gitpod.svg
index 8331c331..42d20208 100644
--- a/assets/lib/simple-icons/icons/gitpod.svg
+++ b/assets/lib/simple-icons/icons/gitpod.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Gitpod icon</title><path d="M3.6 17V7.6L1.5 6.4v11.8L11.7 24v-2.4z M11.7 19.2v-6.9l-6-3.5v7zM12 2.4l8.1 4.7 2.1-1.2L12 0 1.8 5.9l2.1 1.2z M18 8.3l-6-3.5-6 3.5 6 3.5zM12.3 19.3l6-3.5v-2.4l-4.1 2.4v-2.4l6.2-3.6V17l-8.1 4.6V24l10.2-5.8V6.4l-10.2 5.9zM12 12.1z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Gitpod</title><path d="M14.033 1.195a2.387 2.387 0 0 1-.87 3.235l-6.98 4.04a.602.602 0 0 0-.3.522v6.342a.6.6 0 0 0 .3.521l5.524 3.199a.585.585 0 0 0 .586 0l5.527-3.199a.603.603 0 0 0 .299-.52V11.39l-4.969 2.838a2.326 2.326 0 0 1-3.19-.9 2.388 2.388 0 0 1 .89-3.23l7.108-4.062C20.123 4.8 22.8 6.384 22.8 8.901v6.914a4.524 4.524 0 0 1-2.245 3.919l-6.345 3.672a4.407 4.407 0 0 1-4.422 0l-6.344-3.672A4.524 4.524 0 0 1 1.2 15.816V8.51a4.524 4.524 0 0 1 2.245-3.918l7.393-4.28a2.326 2.326 0 0 1 3.195.883z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/gitter.svg b/assets/lib/simple-icons/icons/gitter.svg
index dadb9a1e..f94da2f3 100644
--- a/assets/lib/simple-icons/icons/gitter.svg
+++ b/assets/lib/simple-icons/icons/gitter.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Gitter icon</title><path d="M8.501 4.001H10.5V24H8.501V4.001zm6.999 0V24h-2V4.001h2zM3.5 0h2.001v15H3.5V0zm15 4.001h2V15h-2V4.001z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Gitter</title><path d="M8.501 4.001H10.5V24H8.501V4.001zm6.999 0V24h-2V4.001h2zM3.5 0h2.001v15H3.5V0zm15 4.001h2V15h-2V4.001z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/glassdoor.svg b/assets/lib/simple-icons/icons/glassdoor.svg
index 04ef0c3c..d67677fc 100644
--- a/assets/lib/simple-icons/icons/glassdoor.svg
+++ b/assets/lib/simple-icons/icons/glassdoor.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Glassdoor icon</title><path d="M17.144 20.572H3.43C3.43 22.465 4.963 24 6.856 24h10.286c1.893 0 3.428-1.535 3.428-3.428V6.492c0-.07-.054-.125-.124-.125h-3.18c-.067 0-.123.056-.123.126v14.08zm0-20.572c1.892 0 3.427 1.535 3.427 3.43H6.858v14.078c0 .068-.056.125-.125.125H3.554c-.07 0-.125-.057-.125-.125V3.428C3.43 1.536 4.963 0 6.856 0h10.287"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Glassdoor</title><path d="M17.144 20.572H3.43C3.43 22.465 4.963 24 6.856 24h10.286c1.893 0 3.428-1.535 3.428-3.428V6.492c0-.07-.054-.125-.124-.125h-3.18c-.067 0-.123.056-.123.126v14.08zm0-20.572c1.892 0 3.427 1.535 3.427 3.43H6.858v14.078c0 .068-.056.125-.125.125H3.554c-.07 0-.125-.057-.125-.125V3.428C3.43 1.536 4.963 0 6.856 0h10.287"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/glitch.svg b/assets/lib/simple-icons/icons/glitch.svg
index 9fd484e5..fbbd3bb7 100644
--- a/assets/lib/simple-icons/icons/glitch.svg
+++ b/assets/lib/simple-icons/icons/glitch.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Glitch icon</title><path d="M23.8 12.57c-.29-.15-3.4 1.4-4.07 1.27-1.68-.3-1.37-.5-3.63-1.02-.9-.2-.77-.08-.97-.23-.13-.1-.26-.12-.45-.3 3-.54 4.52-1.27 5.05-1.38.57-.11 3.87 1.47 4.07 1.1.2-.37-.72-1.18-.3-2.27.44-1.1-.52-1.82.01-2.69.54-.87.43-2.2.3-2.27-.3-.15-3.4 1.4-4.08 1.27-1.68-.31-1.37-.51-3.63-1.02-.9-.2-.77-.09-.97-.24-.2-.15-.39-.1-.78-.73s-4.88-1.6-5.18-1.6c-.62 0-1.78 1.6-1.78 1.6s-.45 0-1.8.07-2.53.67-4.12 1.92C-.13 7.3.1 8.56.1 8.56s1.48.5 1.48.78c0 .27-1.3.6-1.3.6C1.12 11 3.72 12 4.38 12h.52c-1.08.21-2.12.8-3.44 1.83C-.13 15.1.1 16.36.1 16.36s1.48.5 1.48.77-1.3.6-1.3.6c.84 1.07 3.44 2.07 4.1 2.07.63 0 1.07.02 1.87-.13.06.13.68 1.45 1.95 1.72 1.34.29 2.08.06 2.08.06s.07-.59-.24-1.18c1.16.12 2.48.15 3.77-.05 3.57-.54 5.34-1.4 5.92-1.51.57-.12 3.87 1.46 4.07 1.1.2-.38-.72-1.19-.29-2.28.43-1.1-.53-1.81 0-2.69.54-.87.43-2.2.3-2.27zM3.46 8.87a.95.95 0 0 1-.22-.03H3.2a2.6 2.6 0 0 1-.06-.03L3.1 8.8l-.06-.03H3a.57.57 0 0 1-.05-.03L2.9 8.7l-.05-.03-.04-.03a1.1 1.1 0 0 1-.05-.04l-.03-.03a1 1 0 0 1-.05-.06l-.02-.02a1.95 1.95 0 0 1-.07-.08l-.02-.02a1.15 1.15 0 0 1-.04-.08l-.02-.03-.04-.06a.78.78 0 0 0-.02-.05l-.02-.06-.02-.04A1.66 1.66 0 0 1 2.4 8l-.01-.05a.75.75 0 0 1-.02-.06v-.05c.07.43.42.76.83.76.47 0 .86-.43.86-.97s-.38-.98-.86-.98c-.47 0-.85.43-.86.96 0-.7.5-1.27 1.12-1.27s1.11.56 1.11 1.26-.5 1.27-1.11 1.27zm-.75-.95c0-.15.1-.27.24-.27s.23.12.23.27-.1.26-.23.26-.24-.12-.24-.26zm.75 8.74a.95.95 0 0 1-.11 0l-.04-.01a.88.88 0 0 1-.07-.01l-.04-.01-.06-.02-.04-.02a.57.57 0 0 1-.06-.02L3 16.55a.73.73 0 0 1-.05-.03l-.04-.02-.05-.04-.04-.03a.73.73 0 0 1-.05-.04l-.03-.03a1 1 0 0 1-.07-.07 1.44 1.44 0 0 1-.07-.09l-.02-.02a1.13 1.13 0 0 1-.04-.07l-.02-.04a1.3 1.3 0 0 1-.04-.06l-.02-.04-.02-.07-.02-.04a5.06 5.06 0 0 1-.02-.07l-.01-.04a.75.75 0 0 1-.02-.07v-.05c.07.43.42.76.83.76.47 0 .86-.43.86-.97s-.38-.97-.86-.97c-.47 0-.85.42-.86.95 0-.7.5-1.27 1.12-1.27s1.11.57 1.11 1.26-.5 1.27-1.11 1.27zm-.75-.95c0-.14.1-.26.24-.26s.23.12.23.26-.1.26-.23.26-.24-.11-.24-.26zm5.08-5.5v-.03l.03-.06.06-.22a18.71 18.71 0 0 0 .36-1.33c.12-.53.17-.96.15-1.2a3.04 3.04 0 0 0-.04-.27 5.92 5.92 0 0 0-.2-.79 8.05 8.05 0 0 0-.19-.5l-.06-.13-.02-.05c-.09-.2.04-.43.24-.42h.14l.4.03 1.2.06.38.02.86.06a21.12 21.12 0 0 1 7.93 2.12l.67.3c.13.06.2.23.14.38-.05.14-.2.22-.33.16l-.67-.3a20.72 20.72 0 0 0-7.77-2.09l-.86-.05-.38-.02-1.2-.07h-.12a8.69 8.69 0 0 1 .34 1.17l.05.32c.03.34-.03.81-.17 1.41l-.15.62a21.23 21.23 0 0 1-.29.99l-.02.06a.16.16 0 0 0 0 .03c-.05.14-.2.22-.33.16-.13-.05-.2-.22-.15-.37zm-1.5-4.76a.23.23 0 0 1 .36.02 4.68 4.68 0 0 1 .42.62c.22.4.37.8.41 1.21.02.23 0 .49-.04.77a6.2 6.2 0 0 1-.2.83 8.29 8.29 0 0 1-.25.69c-.06.14-.21.2-.34.13-.13-.07-.18-.24-.12-.39l.02-.04.05-.13a7.76 7.76 0 0 0 .16-.45 5.43 5.43 0 0 0 .18-.75c.04-.23.05-.43.04-.6a2.6 2.6 0 0 0-.34-.97 4.1 4.1 0 0 0-.33-.5l-.03-.03a.32.32 0 0 1 .02-.4zm1.15 10.4a6.17 6.17 0 0 1-.2.85 8.29 8.29 0 0 1-.25.68c-.06.14-.21.2-.34.13-.13-.07-.18-.24-.12-.39l.02-.04.05-.13a7.76 7.76 0 0 0 .16-.45 5.43 5.43 0 0 0 .18-.75c.04-.23.05-.43.03-.6a2.6 2.6 0 0 0-.33-.96 4.1 4.1 0 0 0-.33-.5l-.03-.04a.32.32 0 0 1 .02-.4.23.23 0 0 1 .35 0 4.68 4.68 0 0 1 .42.63c.22.4.37.81.41 1.21.02.23 0 .49-.04.77zm12.4.12c-.05.14-.2.22-.33.16l-.67-.3a20.72 20.72 0 0 0-7.77-2.09l-.85-.05h-.05l-.34-.02a913.89 913.89 0 0 0-1.32-.07l.03.06a6.38 6.38 0 0 1 .36 1.43c.03.34-.03.81-.17 1.41l-.15.62a21.29 21.29 0 0 1-.29 1l-.02.05a.16.16 0 0 0 0 .03c-.05.15-.2.22-.33.17-.13-.06-.2-.23-.15-.38v-.02l.03-.06.06-.22a18.71 18.71 0 0 0 .36-1.33c.12-.53.17-.96.15-1.2a3.04 3.04 0 0 0-.04-.27 5.92 5.92 0 0 0-.2-.79 8.02 8.02 0 0 0-.19-.49l-.04-.09-.02-.05-.02-.05c-.09-.2.04-.43.24-.42h.14l.4.03 1.2.06.38.02h.01l.85.06a21.07 21.07 0 0 1 7.93 2.12l.67.3c.13.06.2.23.14.38z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Glitch</title><path d="M9.146 2.393c-.618 0-1.794 1.61-1.794 1.61s-.453 0-1.803.07c-1.35.07-2.553.67-4.159 1.934C-.216 7.27.011 8.537.011 8.537s1.498.507 1.498.781c0 .275-1.311.6-1.311.6.845 1.081 3.467 2.09 4.13 2.09h.524c-1.086.214-2.136.804-3.462 1.847-1.606 1.264-1.379 2.53-1.379 2.53s1.498.507 1.498.781c0 .275-1.311.6-1.311.6.845 1.081 3.467 2.09 4.13 2.09.635 0 1.079.018 1.882-.132.06.134.686 1.461 1.965 1.736 1.347.29 2.092.062 2.092.062s.067-.595-.24-1.189c1.17.115 2.495.145 3.792-.052 3.603-.547 5.382-1.413 5.963-1.528.582-.115 3.904 1.476 4.106 1.104.203-.373-.73-1.188-.295-2.288.434-1.1-.534-1.827.003-2.705.537-.879.43-2.219.292-2.29-.295-.15-3.423 1.407-4.106 1.28-1.686-.311-1.377-.513-3.647-1.027-.907-.206-.781-.084-.982-.236-.134-.102-.265-.116-.455-.306 3.015-.543 4.552-1.275 5.084-1.38.582-.116 3.904 1.476 4.106 1.103.202-.372-.73-1.187-.295-2.288.434-1.1-.534-1.826.003-2.705.537-.878.43-2.218.292-2.289-.295-.151-3.423 1.407-4.106 1.28-1.686-.312-1.377-.513-3.647-1.027-.907-.206-.781-.084-.982-.236-.2-.152-.39-.106-.782-.74-.392-.635-4.916-1.61-5.225-1.61zM8.09 5.158l.04.002.111.006.397.02a286.477 286.477 0 0 1 1.59.088c.348.02.64.038.865.054.861.06 2.172.26 3.177.464 1.556.315 2.82.778 4.81 1.673l.677.305c.131.059.195.228.143.377-.052.15-.201.222-.333.163a663.41 663.41 0 0 0-.675-.305c-1.962-.881-3.198-1.335-4.711-1.64-.988-.2-2.28-.397-3.12-.457a76.718 76.718 0 0 0-.859-.054l-.384-.022c-.383-.021-.793-.044-1.203-.065l-.126-.006a6.79 6.79 0 0 1 .339 1.187c.02.11.035.216.045.32.034.336-.028.816-.162 1.42-.044.2-.096.409-.153.624a21.303 21.303 0 0 1-.29.995l-.02.064-.008.023c-.05.15-.198.226-.33.17-.133-.057-.2-.225-.15-.375l.007-.02a11.841 11.841 0 0 0 .089-.283c.072-.236.144-.487.212-.741.055-.208.104-.408.146-.599.12-.54.175-.966.15-1.213a3.436 3.436 0 0 0-.038-.269 5.829 5.829 0 0 0-.21-.796 8.1 8.1 0 0 0-.264-.685c-.091-.199.041-.435.238-.425zm-1.653.17c.066.002.13.033.179.091a4.758 4.758 0 0 1 .417.627c.224.404.374.816.415 1.221.023.231.008.49-.038.771-.044.27-.115.555-.206.845a8.216 8.216 0 0 1-.25.688c-.063.144-.216.203-.343.132-.127-.07-.18-.245-.117-.389l.018-.044a7.595 7.595 0 0 0 .21-.582c.082-.263.146-.518.185-.755a2.42 2.42 0 0 0 .032-.6c-.03-.306-.153-.64-.34-.978a4.176 4.176 0 0 0-.356-.538.319.319 0 0 1 .01-.41.239.239 0 0 1 .184-.08zm-3.042.97c.62 0 1.122.57 1.122 1.272 0 .704-.503 1.273-1.122 1.273-.555 0-1.016-.457-1.106-1.058.077.452.428.793.849.793.477 0 .864-.44.864-.981 0-.542-.387-.981-.864-.981-.474 0-.86.432-.865.968V7.57c0-.703.502-1.273 1.122-1.273zM2.88 7.622a.234.265 0 0 1 .233.266.234.265 0 0 1-.233.265.234.265 0 0 1-.234-.265.234.265 0 0 1 .234-.266zm3.329 4.253l.006.013-.115.005.109-.018zm1.88 1.13l.04.003.111.005.397.02a286.463 286.463 0 0 1 1.59.088c.348.02.64.039.865.055.861.06 2.172.26 3.177.463 1.556.315 2.82.778 4.81 1.673l.677.305c.131.06.195.228.143.377-.052.15-.201.222-.333.163a663.41 663.41 0 0 0-.675-.305c-1.962-.881-3.198-1.334-4.711-1.64-.988-.2-2.28-.397-3.12-.456a76.718 76.718 0 0 0-1.243-.077l-1.203-.065-.126-.006a6.79 6.79 0 0 1 .339 1.187c.02.11.035.217.045.32.034.336-.028.817-.162 1.42-.044.2-.096.41-.153.625a21.303 21.303 0 0 1-.31 1.058l-.008.023c-.05.15-.198.226-.33.17-.133-.057-.2-.224-.15-.375l.007-.02a11.841 11.841 0 0 0 .089-.283c.072-.236.144-.487.212-.74.055-.208.104-.409.146-.6.12-.539.175-.966.15-1.213a3.436 3.436 0 0 0-.038-.268 5.829 5.829 0 0 0-.21-.796 8.1 8.1 0 0 0-.264-.686c-.091-.198.041-.434.238-.424zm-1.653.17c.066.002.13.033.179.091a4.758 4.758 0 0 1 .417.627c.224.405.374.816.415 1.222.023.23.008.489-.038.77-.044.27-.115.555-.206.845a8.215 8.215 0 0 1-.25.688c-.063.144-.216.204-.343.133-.127-.071-.18-.246-.117-.39a6.083 6.083 0 0 0 .07-.173 7.59 7.59 0 0 0 .158-.453c.082-.262.146-.518.185-.755a2.42 2.42 0 0 0 .032-.6c-.03-.305-.153-.64-.34-.978a4.176 4.176 0 0 0-.356-.537.319.319 0 0 1 .01-.411.239.239 0 0 1 .184-.079zm-3.042.97c.62 0 1.122.57 1.122 1.273s-.503 1.273-1.122 1.273c-.555 0-1.016-.458-1.106-1.058.077.451.428.792.849.792.477 0 .864-.439.864-.98 0-.543-.387-.982-.864-.982-.474 0-.86.433-.865.969v-.014c0-.703.502-1.273 1.122-1.273zm-.514 1.326a.234.265 0 0 1 .233.265.234.265 0 0 1-.233.265.234.265 0 0 1-.234-.265.234.265 0 0 1 .234-.265z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/globus.svg b/assets/lib/simple-icons/icons/globus.svg
new file mode 100644
index 00000000..fe987e70
--- /dev/null
+++ b/assets/lib/simple-icons/icons/globus.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Globus</title><path d="M11.9977 4.3904c-3.8248 0-7.1506 1.6949-8.7866 4.1598-.39.022-.78.041-1.1699.067-.582.041-1.32.56-1.427 1.2399l-.182 1.133c-.18 1.1249-.327 2.0109-.4259 3.1598-.033.403.065.78.262 1.01.263.312.781.386.986.41.7289.067 1.4489.126 2.1638.18 1.698 2.3018 4.9058 3.8597 8.5796 3.8597 3.6748 0 6.8837-1.5599 8.5816-3.8618.442-.034.88-.064 1.326-.104.624-.057 1.1989-.582 1.3379-1.222.18-.8209.24-1.1399.305-1.5498.025-.132.048-.282.072-.454 0-.025.017-.114.033-.229.041-.246.1-.64.149-.92l.18-1.207a1.091 1.091 0 0 0-.27-.9349c-.213-.246-.584-.419-.953-.443a159.7123 159.7123 0 0 0-1.961-.12c-1.6298-2.4728-4.9617-4.1727-8.7995-4.1727Zm0 .329c3.5938 0 6.7257 1.5479 8.3276 3.8218l-.428-.02c-.773-.98-1.8579-1.807-3.1558-2.398-.336.09-.73.173-1.148.238a13.5993 13.5993 0 0 1 1.101 2.034 50.9275 50.9275 0 0 0-.556-.014 14.0593 14.0593 0 0 0-1.096-1.945c-.8289.106-1.7728.163-2.7578.18v.294h-.433c-.02 0-.04.002-.059.004v-.299a24.8788 24.8788 0 0 1-2.8318-.172 14.0733 14.0733 0 0 0-1.09 1.932l-.28.006h-.106l.007-.108a1.5 1.5 0 0 0-.01-.255 13.9993 13.9993 0 0 1 .93-1.649 11.3495 11.3495 0 0 1-1.173-.238c-1.2829.59-2.3538 1.406-3.1198 2.373-.145.007-.29.012-.435.02 1.606-2.265 4.7298-3.8048 8.3136-3.8048Zm-.213.418c-.686.009-1.357.084-2.0029.207a11.6894 11.6894 0 0 0-.508.6479c.771.082 1.625.13 2.511.139zm.5 0v.9859a24.7418 24.7418 0 0 0 2.4399-.14c-.28-.378-.477-.608-.51-.649a12.1924 12.1924 0 0 0-1.9299-.197Zm-3.2648.37c-.337.091-.666.1889-.986.3039.213.04.443.074.681.107.107-.156.215-.295.305-.41Zm5.9667 0c.09.116.188.2559.294.4029.23-.033.453-.074.666-.107a9.3076 9.3076 0 0 0-.96-.295Zm-3.0039 1.9198h.476c.189 0 .36.09.475.247a.808.808 0 0 1 .14.607c-.024.205-.057.402-.082.608.501 0 1.01.01 1.5099.017.189 0 .362.09.477.246a.81.81 0 0 1 .138.598c-.213 1.6658-.468 3.3327-.722 5.0077-.066.435-.41.77-.78.779-.722.008-1.4529.01-2.1749.01a.603.603 0 0 1-.485-.246.813.813 0 0 1-.138-.592v-.008c.32-2.421.673-4.8438 1.01-7.2647.057 0 .106 0 .156-.008zm-5.5667.141c.18 0 .33.074.436.213.115.148.156.36.115.582-.402 2.3729-.746 4.7047-.984 7.0196-.214-.008-.42-.025-.633-.033a.65.65 0 0 1-.484-.256.777.777 0 0 1-.157-.575 92.7355 92.7355 0 0 1 1.043-6.9096c.214-.008.418-.025.631-.033.008 0 .017 0 .033-.008zm3.8838 1.329c.197 0 .362.082.477.23a.841.841 0 0 1 .13.607c-.237 1.6828-.475 3.3567-.697 5.0317-.057.435-.394.764-.763.755a97.9953 97.9953 0 0 1-2.1759-.074.658.658 0 0 1-.492-.261.779.779 0 0 1-.157-.575 119.0943 119.0943 0 0 1 .682-4.9018c.066-.427.427-.771.805-.78.73-.016 1.46-.024 2.1909-.032Zm5.5407.05c.213.009.427.008.64.016.198 0 .37.09.485.246.123.156.181.37.148.592a131.9136 131.9136 0 0 1-.625 4.2337l.871-.023c.238-1.437.45-2.8579.631-4.2618.05-.419.394-.737.7719-.72l.69.023a86.6198 86.6198 0 0 1-.846 5.5738c-.074.41-.426.755-.803.771-.73.033-1.4529.066-2.1839.09a.551.551 0 0 1-.476-.228.78.78 0 0 1-.123-.584c.303-1.921.582-3.8398.82-5.7287zm-11.6554.114a.62.62 0 0 1 .492.205.779.779 0 0 1 .123.5839c-.074.41-.14.82-.205 1.222-.304 0-.606.008-.91.008a.4.4 0 0 1-.387-.402c0-.025.033-.213.033-.213-.311.008-.69.01-1.002.017-.057.238-.4749 3.0448-.4919 3.3658.312.016.69.04 1.002.056.115-.64.165-.836.198-1.066-.041-.008-.141-.008-.182-.008-.205-.008-.384-.23-.352-.469.041-.2869.082-.5499.131-.8449H4.07c.213 0 .46.073.402.45-.09.731-.213 1.808-.361 2.6529-.082.435-.28.664-.73.672-.436 0-1.5689-.08-2.2249-.188-.197-.032-.41-.09-.541-.238-.132-.156-.172-.41-.172-.6 0-.508.27-2.6679.582-4.3178.074-.394.55-.738.935-.779a25.7508 25.7508 0 0 1 2.2249-.107Zm16.5482.04h.025c1.256.025 1.814.083 2.1419.124.19.024.402.18.508.312.123.148.181.287.157.4839-.05.353-.107.708-.165 1.069-.295 0-.59-.01-.886-.01a.416.416 0 0 1-.395-.393c0-.024 0-.057.008-.081.008-.042.025-.083.033-.124l-.894-.025c-.025.18-.131.771-.172 1.025h1.502c.189 0 .361.076.476.215.115.1479.164.2789.131.5329-.123 1.035-.237 1.56-.385 2.1019-.098.378-.468.754-.845.795-1.076.123-1.4049.133-2.2009.174a.541.541 0 0 1-.475-.207.68.68 0 0 1-.115-.557 66.0968 66.0968 0 0 0 .213-1.232c.303-.017.606-.025.91-.034.205-.008.379.165.379.387 0 .033 0 .057-.008.09 0 .041-.01.09-.018.13.296-.007.592-.024.887-.04.033-.18.14-.73.182-.984-.296.008-1.43.007-1.43.007-.197.008-.344-.032-.46-.18-.114-.147-.195-.262-.212-.492.099-.9189.31-2.0598.352-2.3878.049-.402.378-.7.756-.7zm-7.9376 1.2399c-.033.247-.484 3.3918-.533 3.7448h.918c.04-.255.486-3.3828.535-3.7438zm-3.3239.009c-.304 0-.616.007-.92.007-.041.255-.4769 3.3428-.5099 3.6958.304.008.609.007.912.015.025-.246.46-3.3568.518-3.7178zm-5.5497 5.4367.454.031c.732.822 1.691 1.521 2.8129 2.043a10.8995 10.8995 0 0 1 1.1909-.264 14.0933 14.0933 0 0 1-.9-1.613l.57.024c.29.575.6 1.09.879 1.508.862-.115 1.8469-.18 2.8648-.188v-1.25l.287.002.205-.002v1.25a23.8268 23.8268 0 0 1 2.7839.188c.279-.42.587-.935.876-1.51.19-.007.38-.01.5689-.018a14.5593 14.5593 0 0 1-.904 1.62c.443.073.838.162 1.183.269 1.137-.522 2.1089-1.226 2.8479-2.057l.443-.033c-1.664 2.093-4.6678 3.4938-8.0857 3.4938-3.4168 0-6.4137-1.4009-8.0776-3.4938zm7.8716 2.033c-.903.008-1.7729.056-2.5528.147.271.3769.485.6239.56.7149.6399.115 1.3039.189 1.9928.197zm.492 0v1.0589a12.0944 12.0944 0 0 0 1.914-.198 13.1164 13.1164 0 0 0 .5499-.705 24.7188 24.7188 0 0 0-2.4639-.156zm-3.6028.22c-.263.042-.5.085-.73.1339a9.1156 9.1156 0 0 0 1.076.336c-.099-.132-.223-.289-.346-.47Zm6.6247.01a24.5778 24.5778 0 0 1-.336.4599c.361-.09.714-.197 1.058-.328-.221-.05-.468-.09-.722-.131z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/gmail.svg b/assets/lib/simple-icons/icons/gmail.svg
index d6ef11e3..9ee779ad 100644
--- a/assets/lib/simple-icons/icons/gmail.svg
+++ b/assets/lib/simple-icons/icons/gmail.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Gmail icon</title><path d="M24 4.5v15c0 .85-.65 1.5-1.5 1.5H21V7.387l-9 6.463-9-6.463V21H1.5C.649 21 0 20.35 0 19.5v-15c0-.425.162-.8.431-1.068C.7 3.16 1.076 3 1.5 3H2l10 7.25L22 3h.5c.425 0 .8.162 1.069.432.27.268.431.643.431 1.068z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Gmail</title><path d="M24 5.457v13.909c0 .904-.732 1.636-1.636 1.636h-3.819V11.73L12 16.64l-6.545-4.91v9.273H1.636A1.636 1.636 0 0 1 0 19.366V5.457c0-2.023 2.309-3.178 3.927-1.964L5.455 4.64 12 9.548l6.545-4.91 1.528-1.145C21.69 2.28 24 3.434 24 5.457z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/gnome.svg b/assets/lib/simple-icons/icons/gnome.svg
index 0aea3d65..d826a6a6 100644
--- a/assets/lib/simple-icons/icons/gnome.svg
+++ b/assets/lib/simple-icons/icons/gnome.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>GNOME icon</title><path d="M17.865 0c-3.8 0-4.513 5.414-2.375 5.414S21.666 0 17.865 0zm-5.873.664c-.06 0-.124.003-.191.012-2.14.277-1.385 3.997-.246 4.066 1.103.068 2.308-4.071.437-4.078zm-3.705 1.47c-.113.003-.237.031-.371.087-1.72.71-.262 3.636.701 3.44.889-.182 1.004-3.556-.33-3.526zM5.547 4.43a.801.801 0 00-.483.164c-1.376.95.462 3.249 1.272 2.892.708-.312.257-3.021-.79-3.056zm7.637 1.758c-2.92.025-6.636 1.506-7.284 4.404-.718 3.217 2.96 7.68 6.797 7.68 1.888 0 4.066-1.706 4.473-3.866.311-1.647-3.662-.986-3.52.104.171 1.306-.958 1.95-2.064 1.107-3.52-2.68 5.83-4.016 5.213-7.678-.2-1.187-1.744-1.768-3.615-1.752zM5.268 20.19c-.536 0-.958.17-1.266.51-.308.34-.463.805-.463 1.397 0 .585.153 1.048.455 1.39.303.341.713.512 1.23.512.258 0 .873.004 1.288-.344v-1.765H5.264v.634h.644v.635c-.098.08-.282.154-.58.154-.293 0-.544-.106-.71-.318-.167-.211-.25-.51-.25-.898 0-.392.087-.693.259-.903.173-.211.419-.318.738-.318a1.602 1.602 0 01.817.225l.216-.637a2.245 2.245 0 00-.537-.205 2.507 2.507 0 00-.593-.069zm6.562 0c-.47.013-.842.182-1.115.506-.283.338-.426.806-.426 1.4 0 .594.143 1.06.426 1.397.284.338.675.506 1.174.506.5 0 .89-.168 1.174-.506.283-.338.423-.803.423-1.396 0-.595-.14-1.063-.424-1.4-.283-.338-.674-.507-1.173-.507h-.059zm-4.77.067v3.67h.682v-2.205l1.598 2.205h.506v-3.67h-.682v2.207l-1.598-2.207h-.505zm7.108 0l-.389 3.67h.76l.234-2.373.715 2.384h.508l.717-2.306.234 2.295h.758l-.39-3.67h-.862l-.713 2.29-.707-2.29h-.865zm4.084 0v3.67h2.209v-.715h-1.408v-.84H20.1v-.639h-1.047v-.761h1.361v-.715h-2.162zm-6.387.619h.024c.245 0 .435.107.57.32.135.213.201.514.201.9s-.066.684-.201.897a.639.639 0 01-.57.32.637.637 0 01-.569-.32c-.134-.213-.203-.511-.203-.896 0-.387.069-.688.203-.9a.635.635 0 01.545-.321Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GNOME</title><path d="M17.865 0c-3.8 0-4.513 5.414-2.375 5.414S21.666 0 17.865 0zm-5.873.664c-.06 0-.124.003-.191.012-2.14.277-1.385 3.997-.246 4.066 1.103.068 2.308-4.071.437-4.078zm-3.705 1.47a1.039 1.039 0 00-.371.087c-1.72.71-.262 3.636.701 3.44.889-.182 1.004-3.556-.33-3.526zM5.547 4.43a.801.801 0 00-.483.164c-1.376.95.462 3.25 1.272 2.892.708-.312.257-3.02-.79-3.056zm7.637 1.758c-2.92.025-6.636 1.506-7.284 4.404-.718 3.218 2.96 7.68 6.797 7.68 1.888 0 4.066-1.705 4.473-3.865.311-1.647-3.662-.986-3.52.104.171 1.306-.958 1.95-2.064 1.107-3.52-2.68 5.83-4.017 5.213-7.679-.2-1.187-1.744-1.768-3.615-1.752zM5.268 20.191c-.536 0-.958.17-1.266.51-.308.34-.463.805-.463 1.397 0 .585.153 1.048.455 1.39.303.341.713.512 1.23.512.258 0 .873.004 1.288-.344v-1.765H5.264v.634h.644v.635c-.098.08-.282.154-.58.154-.293 0-.544-.106-.71-.318-.167-.211-.25-.51-.25-.898 0-.392.087-.693.259-.903.173-.211.419-.318.738-.318a1.602 1.602 0 01.817.225l.216-.637a2.245 2.245 0 00-.537-.205 2.507 2.507 0 00-.593-.07zm6.562 0c-.47.013-.842.182-1.115.506-.283.338-.426.806-.426 1.4 0 .594.143 1.06.426 1.397.284.338.675.506 1.174.506.5 0 .89-.168 1.174-.506.283-.338.423-.803.423-1.396 0-.595-.14-1.063-.424-1.4-.283-.338-.674-.507-1.173-.507zm-4.77.067v3.67h.682v-2.205l1.598 2.205h.506v-3.67h-.682v2.207l-1.598-2.207h-.505zm7.108 0l-.389 3.67h.76l.234-2.373.715 2.384h.508l.717-2.306.234 2.295h.758l-.39-3.67h-.862l-.713 2.29-.707-2.29zm4.084 0v3.67h2.209v-.715h-1.408v-.84H20.1v-.64h-1.047v-.76h1.361v-.715zm-6.387.619h.024a.64.64 0 01.57.32c.135.213.201.514.201.9s-.066.684-.201.897a.639.639 0 01-.57.32.637.637 0 01-.569-.32c-.134-.213-.203-.511-.203-.896 0-.387.069-.688.203-.9a.635.635 0 01.545-.321z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/gnometerminal.svg b/assets/lib/simple-icons/icons/gnometerminal.svg
new file mode 100644
index 00000000..c64a8b96
--- /dev/null
+++ b/assets/lib/simple-icons/icons/gnometerminal.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GNOME Terminal</title><path d="M1.846 0A1.841 1.841 0 000 1.846v18.463c0 1.022.823 1.845 1.846 1.845h20.308A1.841 1.841 0 0024 20.31V1.846A1.841 1.841 0 0022.154 0H1.846zm0 .924h20.308c.512 0 .922.41.922.922v18.463c0 .511-.41.921-.922.921H1.846a.919.919 0 01-.922-.921V1.846c0-.512.41-.922.922-.922zm0 .922v18.463h20.308V1.846H1.846zm1.845 2.14l3.235 1.758v.836L3.69 8.477V7.385l2.243-1.207v-.033L3.69 5.076v-1.09zM7.846 9.23h3.693v.924H7.846V9.23zM0 21.736v.418C0 23.177.823 24 1.846 24h20.308A1.841 1.841 0 0024 22.154v-.418a2.334 2.334 0 01-1.846.918H1.846A2.334 2.334 0 010 21.736Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/gnu.svg b/assets/lib/simple-icons/icons/gnu.svg
index b60a005b..5ba034e0 100644
--- a/assets/lib/simple-icons/icons/gnu.svg
+++ b/assets/lib/simple-icons/icons/gnu.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GNU icon</title><path d="M5.072 13.932c-.221.012-.419.141-.519.338-.115.211-.389.242-.517.201-.21-.07-.481-.119-.744.068s-.546.045-.495-.297c.049-.34.172-.645.499-.83.714-.41.217-.695.608-1.109.394-.412.307-.537.293-1.099-1.326-.2-2.078-.582-2.916-1.631C.442 8.526.116 7.663.03 6.349-.058 5.032.019 4.18.587 3.088 1.155 2 1.755 1.475 2.789.93 3.824.382 4.84.253 5.778.269c.939.015 1.564.083 2.094.387.531.303 1.016.684 1.324.685.24.015.477-.053.673-.192.04 1.02-.878 1.108-1.698 1.13-.82.021-1.324-.317-2.08-.192-.754.128-1.992.471-2.595 1.52-.603 1.05-.624 1.42-.573 2.301.049.878.806 1.534 1.234 1.542.428.007.523-.117.898-.36.374-.246 2.284-2.61 2.934-3.14.653-.531 1.296-.696 1.99-.705.695-.008.871.015 1.433.246.56.229.904.652 1.356.91.23-.135.375-.339.584-.495.76-.552 1.152-.702 2.053-.615.518.052 1.169.347 1.56.686.693.604 1.266 1.441 1.728 2.079.36.497.785 1.091 1.392 1.277.659.201 1.157-.652 1.23-1.129.043-.27.097-.506.097-.801 0-.297-.03-.655-.115-.965-.09-.307-.222-.599-.392-.869-.258-.416-.68-.85-1.116-1.072-.246-.125-.826-.353-1.191-.361-.448-.01-.789.141-1.202.169-.5.034-1.396.146-1.786-.24-.251-.246-.283-.411-.324-.731.109.092.264.15.401.163.313.026.605-.229.859-.378.21-.123.504-.34.778-.45.704-.285 1.568-.278 2.31-.2.595.06 1.368.324 1.89.621.526.296 1.031.797 1.4 1.268.466.594.721 1.104.889 1.844.216.945.277 2.365.015 3.299-.205.734-.887 1.861-1.467 2.414-.573.547-1.235.811-1.986.955.03.149.033.291.071.416.056.178.163.375.38.313.086-.025.133-.047.246.053.115.1.056.485-.266.66-.164.086-.334.105-.595.112-.319.012-.639-.004-.953-.046-.283-.047-.451-.273-.765-.309-.485-.055-.855-.405-1.245-.654-.162-.104-.218-.104-.311-.158.051.154.118.314.151.465.034.146.02.285.037.404.019.119.052.211.07.309.077.068.103.173.233.207.13.035.334-.018.468-.037.135-.018.224-.09.328-.07.105.02.204.096.292.166s.164.08.234.254c.07.178.135.537.146.777.009.24-.018.455-.089.648-.07.189-.135.273-.327.463s-.506.465-.819.66c.058.084.083.162.173.254.09.094.277.197.359.295.085.098.128.168.128.277.012.131-.021.262-.093.373-.223.299-.483.352-.803.492.054.334.098.572.02.906-.03.137-.102.445-.27.525-.169.08-.492.041-.698.074-.205.031-.319.063-.479.094-.098.141-.242.297-.291.422-.049.127-.034.172.006.299.042.129.185.316.225.469.039.15.049.311.011.463-.038.15-.117.287-.23.396-.129.135-.382.24-.509.346-.125.111-.252.123-.217.303.047.248.409.646.67.744.185.055.382.039.557-.041-.014.209-.195.354-.315.494.322-.094.636-.27.854-.504-.067.203-.3.529-.645.816s-.343.229-.517.344c.314.061.606.045.85.002-.197.111-.416.182-.641.207-.289.031-.468.008-.729-.055-.261-.063-.499-.301-.814-.465.03.119.053.26.185.381.136.119.335.182.549.283-.272-.029-.558-.037-.824-.096-.199-.047-.332-.092-.478-.164-.144-.07-.255-.176-.384-.264.061.117.079.256.184.352.104.098.275.135.412.199-.143-.004-.281.029-.43-.01-.16-.037-.312-.109-.443-.209-.16-.119-.311-.25-.445-.396-.132-.145-.296-.332-.345-.463-.048-.133.03-.225.044-.338-.09.061-.201.094-.272.18-.07.088-.132.166-.101.318.03.15.172.338.271.506-.296-.242-.461-.336-.531-.625-.064-.273.104-.52.233-.725.064-.104.162-.199.221-.299-.135-.129-.285-.24-.4-.389-.113-.15-.162-.352-.277-.492-.117-.143-.274-.232-.41-.348.119.256.317.572.359.771.044.199-.048.322-.119.43-.07.107-.184.133-.292.197-.11.068-.277.016-.342.113s-.083.246-.021.344l.256.398c-.126-.072-.235-.168-.327-.281-.074-.096-.186-.188-.199-.316-.016-.131-.023-.246.063-.363.084-.117.318-.156.422-.246.105-.09.162-.148.156-.264-.006-.117-.119-.199-.217-.273-.299-.225-.68-.43-.934-.699-.109-.105-.191-.234-.239-.379-.03-.105.001-.188.071-.314.072-.131.315-.305.346-.443.029-.141-.095-.172-.205-.221-.111-.049-.322.025-.425-.061s.03-.266-.086-.365-.381-.045-.519-.15c-.121-.102-.205-.24-.24-.395-.046-.141-.053-.291-.021-.436.032-.113.128-.133.187-.191.059-.057.108-.104.03-.191-.074-.088-.33.004-.476-.105-.149-.113-.06-.381-.163-.494-.104-.109-.287-.066-.386-.104-.097-.035-.135.09-.194-.109-.061-.199-.063-.797-.143-1.02s-.238-.016-.311-.236c-.075-.221-.004-.574-.037-.908l-.15-.91c-.521.352-.867.463-1.428.561-.047 1.373-.176 2.182.291 3.705.465 1.521 1.408 2.42 2.68 3.707-1.68-1.256-2.479-2.279-2.981-3.588-.501-1.311-.406-2.407-.356-3.666zm8.919-.553c.129.006.285.039.376.098.091.061.188.107.27.189.206.211.36.463.428.752.044.186.05.422.064.639-.062-.199-.103-.408-.192-.588-.139-.285-.376-.561-.672-.688-.066-.031-.141-.041-.214-.027.023.041.063.076.065.133 0 .059-.012.174-.112.223-.16.078-.339.021-.464-.086-.127-.117-.166-.301-.102-.459.079-.194.375-.194.553-.186zm-1.621-.272c.017-.332.135-.609.433-.771.187-.107.392-.18.604-.215.207-.026.713-.008 1.018.131.232.105.391.271.597.394.205.121.351.201.546.338.3.211.475.439.682.576.101.066.24.057.374.098-.104.029-.239.064-.35.029-.159-.064-.308-.152-.438-.264-.154-.137-.32-.258-.497-.359-.124-.072-.329-.158-.466-.246-.135-.09-.371-.283-.502-.349-.207-.086-.428-.129-.65-.125-.256.008-.626.05-.822.228-.197.18-.271.336-.227.566.073-.084.123-.191.195-.254.154-.133.329-.139.521-.113.215.027.322.15.393.354-.047-.033-.135-.109-.204-.135-.144-.055-.306-.039-.438.043-.179.098-.13.24-.154.396-.013.076-.041.133-.061.199-.067-.016-.129-.049-.18-.098.001.076-.01.141.006.223.014.084.055.184.084.273-.126-.125-.256-.24-.335-.402-.086-.157-.131-.337-.129-.517zm.219-2.4c.091-.136.119-.345.174-.517-.021.217.021.453-.083.609-.105.158-.292.129-.443.176.118-.09.258-.131.352-.268zm-2.207 3.203c.119-.096.438-.02.676-.002l-.514.133c-.017.059-.01.123-.048.174-.04.051-.114.068-.171.104.006-.155-.062-.313.057-.409zm1.683-6.652c.143.075.321.178.449.18.124.004.158-.08.232-.131.115.38.25.797.448 1.142.083.146.136.079.2.224.063.145.09.439.15.626.059.187.137.321.207.483-.174-.25-.401-.566-.5-.773-.098-.207-.035-.225-.115-.421-.078-.198-.238-.504-.357-.756-.086.011-.19.026-.255.006-.065-.021-.054-.091-.112-.134-.059-.045-.158-.027-.24-.1-.081-.07-.1-.217-.107-.346zm-.767 1.875c.135-.012.299.023.425.017s.216-.039.325-.06c-.021-.189-.002-.537-.176-.664-.115-.08-.578-.02-.701.006-.279.061-.604.227-.873.33.258-.18.481-.346.791-.439.188-.055.621-.129.813-.076.089.023.105.061.159.135.183.255.183.475.229.773.047.071.096.119.135.194.038.093.062.19.068.289-.048-.069-.018-.155-.149-.206-.135-.053-.337-.005-.517.014.131.096.195.186.201.384.006.233-.191.401-.398.417-.285.022-.434-.041-.549-.285-.051-.107-.016-.236-.018-.341-.346.024-.34.013-.592.222.139.201.224.315.451.436.125.066.27.133.425.16.157.027.415.053.581.027.145-.018.278-.082.379-.187.123-.112.135-.274.182-.403-.004.127-.027.252-.07.371-.14.27-.38.352-.668.352-.275 0-.616-.063-.873-.169-.205-.085-.545-.325-.625-.534-.056-.143-.012-.318-.018-.477.285-.189.354-.143.689-.198.141-.025.239-.076.374-.088zM9.643 7.854c.007-.114.021-.111.03-.167-.259-.069-.361.099-.514.411-.057.115 0 .186-.062.263-.059.076-.159.065-.257.139s-.196.215-.289.292c-.189.156-.447.251-.667.358.15-.111.443-.279.538-.439.05-.086.042-.247.12-.325.078-.075.105-.13.205-.149.1-.019.061-.136.093-.229.032-.091.097-.158.165-.251s.156-.23.291-.282c.135-.049.347.005.45-.023.102-.029.043-.105.118-.15s.219-.023.32-.072c.176-.084.26-.227.367-.377.015.326.01.561-.107.869-.131.346-.266.55-.641.763-.128.072-.257.098-.365.137.062-.086.152-.123.188-.256.034-.136.009-.4.017-.512zm6.059 1.592c-.177.014-.219-.012-.363.091l.232.36c-.006-.237.018-.285.133-.451h-.002zm-.465-.172c.246-.104.461-.189.73-.207.107-.008.274.009.383.016.094-.137.211-.244.256-.4.028-.104.015-.584-.038-.709-.146-.361-.29-.377-.495-.585-.146-.149-.152-.38-.197-.638-.015-.094-.062-.213-.084-.31-.283-.046-.57-.062-.857-.045.148-.143.291-.271.334-.486.045-.229.004-.466-.113-.667-.121-.191-.315-.36-.494-.517-.178-.155-.436-.284-.604-.412.221-.077.444-.194.66-.235.561-.108 1.043.057 1.584.384.315.19.573.37.902.716.329.344.735.975 1.054 1.348.317.375.575.67.853.893.276.226.528.289.792.431l.412.438.335-.413.535.06.111-.601.49-.136-.079-.811.354-.252-.267-.504.27-.553-.352-.63.135-.607-.407-.348-.053-.646-.569-.217-.227-.561-.64-.007-.315-.417-.431.03-.479-.053-.27-.199-.396.26-.477-.248-.947.359.618-.537.64-.102.49-.126.663.218.582-.147.563.331.596-.031.293.525.591.067.32.581.372.205.1.746.333.315-.148.653.39.494-.363.529.39.332-.499.443.506.529-.613.2.398.566-.501.088.328.622-.563-.008.285.466-.621-.074.148.672-.468-.411-.159.814-.322-.585-.175.73-.397-.537.011.765-.439-.688c.091.391.073.817.329 1.185.794-.107 1.312-.307 1.921-.892.552-.533 1.214-1.644 1.394-2.35.204-.802.21-2.281.009-3.101-.194-.787-.446-1.163-.896-1.807-.43-.455-.853-.939-1.399-1.264-.803-.48-1.829-.608-2.742-.596-.393.001-.781.074-1.148.215-.527.191-.95.611-1.487.818-.175.067-.315.068-.454-.004.135.27.281.391.619.489.244.071.825.026 1.227-.011.43-.039.654-.167 1.239-.16.57.01 1.024.225 1.272.368.511.292.877.614 1.196 1.129.175.282.298.601.383.925.086.324.124.688.13 1.006s-.019.602-.097.888c-.182.669-.583 1.35-1.407 1.245-.504-.063-1.263-1.01-1.518-1.357-.515-.701-1.043-1.477-1.688-2.059-.407-.366-.92-.594-1.463-.65-.992-.09-1.287.098-2.033.715.151.047.299.074.455.145.346.156.662.357.938.615.29.27.42.442.43.829.007.259-.204.465-.399.649-.118.114-.275.218-.372.307-.127.117-.285.246-.124.432.06.07.165.123.252.189.141.103.075.488-.108.592-.226.136-.513.111-.713-.061.246-.035.402-.068.395-.27-.002-.115-.149-.213-.297-.279-.35-.16-.614-.135-.963-.387-.353-.254-.359-.393-.455-.79-.17.017-.327.021-.555.097-.226.074-.478.254-.684.299-.52.111-.623.078-.907.006-.501-.132-1.151.09-1.8.299-.107.033-.543 0-.836.102-.528.209-1.019.496-1.457.853-.556.469-1.286 1.869-1.698 3.477-.045.49.095.818-.213 1.057-.308.24-.3.851-.405 1.023-.103.17-.225.094-.45.336-.223.24-.337.201-.332.654.195-.125.477-.273.725-.285.221-.006.222.283.785-.273.301-.299.881-.309 1.283-.439s1.125-.402 1.851-1.212c.724-.81 1.071-1.664 1.212-2.896.02.215.06.463-.033 1.065-.095.604-.296 1.28.129 2.094l.265.504c-.157-.215-.465-.566-.56-.816l-.211-.578c-.48.753-.59.887-1.255 1.425-.026.334-.033.682.076 1.002.108.32-.064.688.02.9.082.209.273.09.336.303s-.032.635.064.842c.099.207.337.082.453.15.115.066.154.158.215.246.063.088-.023.297.103.365.126.066.32.01.453.074.13.066.149.223.119.361-.032.141-.172.205-.233.348-.062.119-.055.262.02.373.074.131.236.201.4.27.162.064.391.027.559.119.169.09.32.273.408.406.089.131.113.225.109.363-.014.154-.059.301-.137.434-.074.135-.236.299.02.555.254.254.246.145.393.313-.017-.289-.135-.521-.049-.738.088-.217.349-.256.484-.352.139-.1.219-.232.326-.348 0 .148.015.309-.002.42-.033.227-.102.432.237.467.153.016.299-.082.459-.141-.084.148-.23.27-.253.451-.028.195.018.395.13.559.124.18.341.313.499.416.158.105.244.115.365.174.006.176-.03.363-.009.531.019.168.073.314.169.453.098.141.252.219.398.32-.08-.188-.242-.365-.24-.561s.06-.334.252-.51c.191-.174.639-.324.85-.494.156-.109.279-.26.355-.436.075-.164.055-.43.069-.576.069.205.079.27.103.486.021.217-.127.521-.189.68.228-.105.409-.293.51-.525.057.035.028.125.049.301.094-.092.199-.162.293-.25s.195-.164.243-.287c.046-.121.027-.252-.007-.393-.035-.143-.193-.307-.279-.463-.084-.152.016-.305.01-.492-.17-.029-.314-.117-.512-.088-.195.029-.42.248-.621.252-.199 0-.314-.188-.478-.238-.165-.053-.33-.045-.495-.07.209-.199 1.021-.295 1.576-.385.486-.082.978-.125 1.47-.133.221-.006.506.068.661.025.152-.045.119-.15.164-.264.129-.318.066-.604-.004-.924-.444-.053-.908-.115-1.356-.082-.438.033-.956.242-1.409.256-.392.014-.976-.074-1.312-.281-.413-.25-.731-.789-.845-.965-.184-.281-.416-.836-.559-1.088-.141-.254-.173-.324-.29-.43-.118-.105-.278-.113-.419-.17.161.014.336-.035.482.047.221.127.465.648.602.877.145-.486.111-.676.529-.951-.336.379-.346.666-.428 1.111.281.459.67 1.193 1.18 1.396.186.074.502.119.701.145.621.076 1.22-.119 1.828-.27.445-.111.897-.066 1.438-.035.183.012.616-.1.707-.283.052-.107.042-.232-.024-.33-.07-.105-.255-.158-.355-.254-.099-.098-.156-.211-.235-.314-.35.068-.704.105-1.062.115.221-.09.433-.141.66-.23.237-.098.463-.219.676-.359.186-.123.303-.193.438-.334.134-.143.305-.289.404-.463.099-.174.114-.369.12-.584.004-.215-.005-.516-.088-.691-.084-.172-.243-.225-.372-.264-.127-.041-.216.063-.349.076-.134.014-.258.096-.452.006-.248-.129-.461-.318-.617-.549-.196-.274-.335-.723-.534-1.068-.343-.596-.771-1.149-1.179-1.702-.035-.135-.084-.324-.102-.508-.031-.322-.035-.656.065-.969.075-.24.188-.494.438-.592.1-.043.212-.051.317-.022.09.032.179.135.142.252-.039.129-.127.134-.188.198-.091.091-.153.205-.183.33.111-.004.262-.011.354.013.12.03.229.11.291.279-.143-.126-.213-.185-.39-.188-.083-.002-.182.026-.271.041-.034.108-.054.243-.101.329-.049.084-.141.063-.176.161-.033.128-.039.261-.02.391h.004zm1.242-.149c.056.021.075.027.146.08.069.052.165.104.22.229.044.129.058.266.04.4-.048-.015-.113-.005-.163-.047-.05-.043-.079-.14-.143-.18-.065-.043-.117-.034-.188-.043.038.096.05.199.036.301-.036.203-.156.307-.352.33-.084.012-.219-.016-.292-.029.034.075.091.143.126.219.164-.023.285-.02.375-.061.088-.041.183-.135.296-.173.113-.039.214-.039.338-.059-.098.084-.162.167-.259.253l.214.623c.152.096.294.146.485.263.191.116.42.327.67.44.249.113.396.177.657.225.259.05.467.262.722.296.255.032.735.041.932.021.225-.021.516-.136.542-.382-.188.045-.475.005-.619-.349-.064-.157-.034-.447-.132-.631-.099-.187-.236-.246-.4-.475s-.431-.589-.58-.895c-.15-.308-.188-.654-.313-.929-.128-.274-.319-.495-.469-.708-.324-.463-.585-.777-1.12-1.011-.258-.112-.551-.143-.824-.213-.113.05-.268.104-.295.237-.021.15.021.305.12.421.159.165.395.342.487.603.061.168.076.73.025.883-.054.16-.178.257-.282.361zm.052 1.331c-.049.043-.087.087-.167.122-.08.036-.189.045-.295.071.148.231.305.466.447.709.143.242.266.51.401.765-.007-.147.002-.302-.019-.438-.021-.136-.083-.254-.145-.461-.06-.206-.135-.484-.222-.768zm-3.999-5.087c-.021.226.019.581.064.806.058.267.111.404.328.564.396.295.648.245.955.416.145.081.328.217.382.359.053.146-.036.301-.146.363.192.029.408-.189.318-.41-.045-.109-.255-.16-.32-.271-.059-.102-.07-.224-.033-.335.053-.202.454-.388.597-.546.218-.248.3-.453.177-.77-.172-.445-.842-.804-1.242-.979-.183-.08-.287-.084-.429-.129.292.174.601.31.75.691.123.321.015.443.021.721.002.13.172.195.248.275.064.072.06.125.008.223-.004-.08-.045-.154-.111-.199-.112-.08-.234-.063-.294-.225-.09-.248.091-.484-.112-.762-.15-.208-.353-.441-.625-.447-.123-.001-.244.018-.36.058l-.183-.22-.005-.003c-.372-.339-.627-.619-1.147-.852-.522-.234-.78-.27-1.379-.256-.597.013-1.19.063-1.883.66-.694.6-2.481 2.888-2.915 3.177-.431.289-.527.389-1.068.389s-1.387-.766-1.42-1.723c-.032-.956-.045-1.297.619-2.449.666-1.152 1.869-1.506 2.764-1.625.895-.121 1.432.194 2.092.195.66.002 1.314-.111 1.508-.637-.095.056-.221.12-.577.101-.355-.019-.849-.431-1.402-.706C7.157.547 6.542.514 5.75.5c-.79-.015-1.777.045-2.755.574-.978.525-1.645 1.085-2.213 2.12C.214 4.227.13 5.069.222 6.321c.09 1.25.477 2.181 1.219 3.098.744.914 1.486 1.363 2.824 1.529l.283-1.242-.504.721.014-.803-.455.565-.202-.767-.367.615-.183-.855-.536.432.17-.705-.707.078.324-.491-.644.006.375-.653-.57-.091.454-.596-.698-.206.578-.555-.573-.467.448-.348-.42-.559.448-.52-.167-.685.379-.329.113-.786.426-.214.366-.611.677-.072.334-.553.68.035.642-.348.666.154.756-.228.562.13.731.108.705.564-1.081-.377-.544.26-.451-.273-.31.209-.55.057-.491-.03-.358.436-.732.007-.26.589-.65.228-.061.678-.467.366.155.637-.402.664.31.581-.305.529.404.264-.09.853.563.141.125.633.613-.063.381.434.47-.461c.858-.428 1.212-.668 1.882-1.391.759-.823 1.196-1.584 2.208-2.147.729-.405 1.321-.551 2.139-.408.766.132 1.024.593 1.59 1.077.061-.109.07-.139.169-.218-.03.142-.079.287-.093.423l-.002-.001z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GNU</title><path d="M5.072 13.931a.62.62 0 00-.52.338c-.114.211-.388.242-.516.201-.21-.07-.48-.119-.744.068-.263.187-.546.045-.495-.297.05-.34.172-.645.5-.83.713-.41.216-.695.607-1.108.394-.412.307-.537.293-1.1-1.326-.2-2.077-.58-2.915-1.63C.442 8.528.117 7.664.03 6.35-.057 5.033.02 4.18.588 3.09 1.156 2 1.756 1.475 2.788.93 3.825.383 4.84.254 5.78.271c.938.014 1.563.082 2.093.386.53.303 1.016.684 1.324.685.24.015.477-.053.673-.192.04 1.02-.878 1.108-1.698 1.13-.82.02-1.324-.317-2.08-.192-.754.128-1.992.47-2.595 1.52-.603 1.05-.624 1.42-.573 2.3.05.879.806 1.535 1.234 1.543.428.007.523-.117.898-.36.374-.246 2.284-2.61 2.934-3.14.653-.53 1.296-.696 1.99-.705.695-.008.87.015 1.433.246.56.229.903.652 1.355.91.23-.135.375-.34.584-.495.76-.552 1.152-.702 2.053-.615.518.052 1.17.347 1.56.686.693.604 1.265 1.44 1.727 2.079.36.497.785 1.09 1.392 1.277.66.2 1.157-.652 1.23-1.13.043-.27.097-.505.097-.8 0-.297-.03-.655-.115-.965a3.453 3.453 0 00-.392-.87c-.258-.415-.68-.85-1.116-1.071-.246-.125-.826-.353-1.19-.36-.449-.01-.79.14-1.202.168-.5.034-1.396.146-1.786-.24-.25-.246-.283-.41-.324-.73a.76.76 0 00.4.162c.314.026.606-.23.86-.378.21-.123.504-.34.778-.45.704-.285 1.567-.278 2.31-.2.594.06 1.367.324 1.89.62.525.297 1.03.798 1.4 1.269.465.594.72 1.104.888 1.844.216.945.277 2.365.015 3.299-.205.734-.887 1.86-1.467 2.414-.573.547-1.235.81-1.986.955.03.149.033.29.071.416.056.178.163.375.38.313.086-.025.133-.047.246.053.115.1.056.484-.266.66-.164.085-.334.103-.595.11a5.61 5.61 0 01-.953-.046c-.283-.047-.45-.272-.765-.308-.484-.055-.854-.404-1.244-.653-.162-.104-.218-.104-.31-.158.05.154.117.314.15.465.034.145.02.284.037.403.02.12.052.21.07.308.077.068.103.173.233.207.13.035.334-.018.468-.037.135-.018.224-.09.327-.07.105.02.204.096.292.166s.164.08.234.254c.07.178.135.537.146.777.01.24-.018.455-.089.648-.07.19-.135.273-.327.463s-.505.465-.818.66c.058.084.083.162.173.254.09.094.277.197.36.295.083.098.126.168.126.277a.587.587 0 01-.092.373c-.223.3-.483.352-.803.492.054.334.098.572.02.906-.03.137-.102.445-.27.525-.17.08-.492.041-.698.074-.205.031-.32.063-.48.094-.097.141-.24.297-.29.422-.05.127-.034.172.006.3.042.128.185.315.225.468a.93.93 0 01.01.463.834.834 0 01-.23.396c-.128.135-.38.24-.508.346-.125.11-.252.123-.217.303.047.248.41.646.67.744a.793.793 0 00.557-.04c-.014.208-.195.353-.315.493.322-.094.636-.27.854-.504-.067.203-.3.529-.645.816-.345.287-.343.229-.517.344.314.06.606.045.85.002a1.69 1.69 0 01-.64.207 1.876 1.876 0 01-.73-.055c-.26-.063-.499-.301-.814-.465.03.119.053.26.185.38.136.12.335.183.55.284-.273-.03-.559-.037-.825-.096a2.083 2.083 0 01-.478-.164c-.144-.07-.255-.176-.384-.264.06.117.08.256.184.352.104.098.275.135.412.199-.143-.004-.28.029-.43-.01a1.166 1.166 0 01-.443-.21 3.165 3.165 0 01-.445-.395c-.132-.145-.296-.332-.345-.463-.048-.133.03-.225.044-.338-.09.06-.2.094-.272.18-.07.088-.131.166-.1.318.03.15.171.338.27.506-.295-.242-.46-.336-.53-.625-.064-.273.104-.52.233-.725.064-.104.161-.2.22-.3-.134-.128-.284-.24-.4-.388-.112-.15-.161-.352-.276-.492-.117-.143-.274-.232-.41-.348.119.256.317.572.359.77.044.2-.048.323-.12.43-.07.108-.183.134-.291.198-.11.068-.277.016-.342.113s-.083.246-.021.344l.256.398a1.173 1.173 0 01-.327-.28c-.074-.097-.186-.189-.2-.317-.015-.13-.022-.246.064-.363.084-.117.318-.156.422-.246.105-.09.162-.148.156-.264-.006-.117-.12-.2-.217-.273-.3-.225-.68-.43-.934-.699a.931.931 0 01-.24-.379c-.03-.105.002-.188.072-.314.072-.13.315-.305.346-.443.029-.14-.095-.172-.205-.22-.111-.05-.322.024-.425-.062-.103-.086.03-.266-.086-.365-.116-.099-.38-.045-.52-.15a.724.724 0 01-.24-.395.828.828 0 01-.02-.436c.032-.113.128-.133.187-.19.06-.058.108-.105.03-.192-.074-.088-.33.004-.476-.105-.15-.113-.06-.38-.163-.494-.104-.109-.287-.066-.386-.104-.097-.035-.135.09-.194-.109-.06-.199-.063-.797-.143-1.02-.08-.223-.238-.016-.31-.236-.076-.22-.005-.574-.038-.908l-.15-.91c-.52.352-.867.463-1.428.561-.047 1.373-.176 2.182.29 3.705.466 1.521 1.409 2.42 2.68 3.707-1.68-1.256-2.478-2.279-2.98-3.588-.501-1.31-.406-2.407-.356-3.666zm8.918-.553a.837.837 0 01.376.098c.09.061.188.107.27.19.206.21.36.462.428.751.044.186.05.422.064.64-.062-.2-.103-.409-.192-.589-.14-.285-.376-.56-.672-.688a.35.35 0 00-.214-.027c.023.041.063.076.065.133 0 .06-.012.174-.112.223-.16.078-.34.021-.464-.086a.414.414 0 01-.102-.459c.08-.194.375-.194.553-.186zm-1.62-.272c.016-.332.134-.609.432-.77.187-.107.392-.18.604-.215.207-.026.713-.008 1.018.13.232.105.39.271.597.394.205.121.35.201.546.338.3.211.475.44.682.576.1.066.24.057.374.098-.104.03-.24.064-.35.03a1.565 1.565 0 01-.438-.265 2.946 2.946 0 00-.497-.359c-.124-.072-.33-.158-.466-.246-.135-.09-.37-.283-.502-.349a1.618 1.618 0 00-.65-.125c-.256.008-.626.05-.822.228-.197.18-.27.336-.227.566.073-.084.123-.19.195-.254.154-.133.33-.139.52-.113.216.027.323.15.394.354-.047-.033-.135-.109-.204-.135a.495.495 0 00-.438.043c-.18.098-.13.24-.154.396-.013.076-.04.133-.06.2a.39.39 0 01-.18-.099c0 .076-.01.141.005.223.014.084.055.184.084.273-.126-.125-.256-.24-.335-.402a1.058 1.058 0 01-.13-.517zm.218-2.4c.09-.134.12-.343.174-.515-.02.217.02.453-.083.609-.105.158-.292.129-.443.176.118-.09.258-.131.352-.268zm-2.206 3.203c.119-.096.438-.02.676-.002l-.514.133c-.017.06-.01.123-.048.174-.04.051-.114.068-.171.104.006-.155-.062-.313.057-.409zm1.682-6.65c.143.075.32.178.45.18.123.004.157-.08.231-.131.115.38.25.797.448 1.142.083.146.136.079.2.224.063.145.09.439.15.626s.137.32.207.483c-.174-.25-.4-.566-.5-.773-.098-.207-.035-.225-.115-.421-.078-.198-.238-.504-.357-.756-.086.01-.19.026-.255.006-.065-.021-.054-.091-.112-.134-.06-.045-.158-.027-.24-.1-.08-.07-.1-.217-.107-.346zm-.766 1.875c.135-.012.299.023.425.017.126-.006.216-.04.324-.06-.02-.19-.002-.537-.175-.664-.115-.08-.578-.02-.701.006-.28.06-.604.227-.873.33.258-.18.48-.346.79-.44.189-.054.622-.128.814-.075.089.023.104.06.158.135.183.255.183.475.23.773.046.07.095.119.134.194a.91.91 0 01.068.289c-.048-.07-.018-.155-.15-.206-.134-.053-.335-.005-.515.014.13.096.195.186.2.384.007.233-.19.4-.397.417-.285.022-.434-.041-.55-.285-.05-.107-.015-.236-.017-.341-.346.024-.34.013-.592.222.139.2.224.315.45.436.126.066.27.133.426.16.157.027.415.053.58.027a.629.629 0 00.38-.187c.122-.112.134-.274.181-.403a1.2 1.2 0 01-.07.37c-.14.27-.38.353-.667.353-.275 0-.616-.063-.873-.17-.205-.084-.545-.324-.625-.533-.056-.143-.012-.318-.018-.477.285-.19.354-.143.689-.198.14-.025.239-.076.374-.088zm-1.655-1.28c.007-.113.02-.11.03-.166-.26-.07-.36.099-.514.41-.057.116 0 .187-.062.264-.06.076-.16.065-.257.139-.098.074-.196.215-.29.292-.188.156-.446.25-.666.358.15-.111.443-.28.538-.44.05-.085.042-.246.12-.324.078-.075.105-.13.205-.15.1-.018.06-.135.093-.228.032-.091.097-.158.165-.251s.156-.23.29-.282c.136-.05.348.005.45-.023.103-.03.044-.105.119-.15s.219-.023.32-.072c.176-.084.26-.227.367-.377.015.326.01.56-.107.869-.131.346-.266.55-.641.763-.128.072-.257.098-.365.137.062-.086.152-.123.188-.256.034-.136.009-.4.017-.512zM15.7 9.447c-.177.014-.22-.012-.363.09l.232.36c-.006-.236.018-.284.133-.45zm-.465-.172c.246-.104.46-.19.73-.207.107-.008.274.009.383.016.094-.137.21-.244.256-.4.028-.104.015-.584-.038-.71-.146-.36-.29-.376-.495-.584-.146-.15-.152-.38-.197-.638-.015-.094-.062-.213-.084-.31a3.9 3.9 0 00-.857-.045c.148-.143.29-.271.334-.486a.959.959 0 00-.113-.667c-.12-.191-.315-.36-.494-.517-.178-.155-.436-.284-.604-.412.22-.077.444-.194.66-.235.56-.108 1.043.057 1.584.384.315.19.573.37.902.716.33.344.735.975 1.053 1.348.317.375.575.67.853.893.276.226.528.289.792.43l.412.439.335-.413.535.06.111-.601.49-.136-.079-.811.354-.252-.267-.504.27-.553-.352-.63.135-.607-.407-.348-.053-.646-.569-.217-.227-.56-.64-.008-.315-.417-.43.03-.48-.053-.27-.2-.395.26-.477-.247-.947.36.618-.538.64-.102.49-.126.662.218.582-.147.563.33.596-.03.293.525.591.067.32.58.372.206.1.746.333.315-.148.653.39.494-.363.529.39.332-.499.443.506.529-.613.2.398.566-.5.088.327.622-.563-.008.285.466-.62-.074.147.672-.468-.411-.159.814-.322-.585-.175.73-.397-.537.011.765-.439-.688c.091.39.073.817.33 1.185.793-.107 1.311-.307 1.92-.892.552-.533 1.214-1.644 1.394-2.35.204-.802.21-2.281.01-3.101-.195-.787-.447-1.163-.897-1.807-.43-.455-.853-.94-1.399-1.264-.8-.48-1.828-.608-2.74-.596a3.22 3.22 0 00-1.147.215c-.527.19-.95.61-1.487.818-.175.067-.315.068-.454-.004.135.27.28.39.62.49.243.07.824.025 1.226-.012.43-.04.654-.167 1.238-.16.57.01 1.024.225 1.272.368.511.292.877.614 1.196 1.13.175.28.298.6.383.924.086.324.124.688.13 1.006.006.318-.019.602-.097.888-.182.669-.583 1.35-1.407 1.245-.504-.063-1.263-1.01-1.518-1.357-.514-.701-1.042-1.477-1.687-2.06a2.587 2.587 0 00-1.463-.65c-.992-.09-1.287.099-2.033.716.15.047.3.074.455.145.346.156.662.357.938.615.29.27.42.442.43.829.007.259-.204.465-.4.649-.117.114-.274.218-.37.307-.128.117-.286.246-.125.432.06.07.165.123.252.189.14.103.075.488-.108.592a.61.61 0 01-.713-.061c.246-.035.402-.068.395-.27-.002-.115-.15-.213-.297-.28-.35-.16-.614-.134-.963-.386-.353-.254-.36-.393-.455-.79-.17.017-.327.02-.554.097-.226.074-.478.254-.684.299-.52.11-.623.078-.907.006-.501-.132-1.15.09-1.8.299-.107.033-.543 0-.836.102a5.518 5.518 0 00-1.457.853c-.556.469-1.286 1.869-1.698 3.477-.045.49.095.817-.213 1.055-.308.24-.3.851-.405 1.023-.103.17-.225.094-.45.336-.223.24-.337.201-.332.654.195-.125.477-.273.725-.285.22-.006.222.283.785-.273.3-.299.88-.309 1.283-.439.402-.13 1.125-.402 1.85-1.21.725-.81 1.072-1.664 1.213-2.896.02.215.06.463-.033 1.065-.095.604-.296 1.28.13 2.092l.264.504c-.157-.215-.465-.566-.56-.815l-.21-.577c-.48.752-.59.885-1.256 1.423-.026.334-.033.682.076 1.002.108.32-.064.688.02.9.082.21.273.09.336.303s-.032.635.064.842c.1.207.337.082.453.15.115.066.154.158.215.246.063.088-.023.297.103.365.126.066.32.01.453.074.13.066.15.223.12.361-.033.141-.173.205-.234.348a.365.365 0 00.02.373c.074.131.236.201.4.27.162.064.39.027.559.12.169.09.32.272.408.405a.542.542 0 01.109.363 1.038 1.038 0 01-.137.434c-.074.135-.236.3.02.555.254.254.246.145.393.313-.017-.289-.135-.52-.05-.738.089-.217.35-.256.485-.352.139-.1.219-.232.326-.348 0 .148.015.31-.002.42-.033.227-.102.432.237.467.153.016.299-.082.458-.14-.084.147-.23.27-.252.45a.793.793 0 00.13.56c.123.18.34.312.498.415.158.105.244.115.365.174.006.176-.03.363-.01.53a.962.962 0 00.17.454c.098.14.252.22.398.32-.08-.188-.242-.365-.24-.56.002-.197.06-.335.252-.51.19-.175.64-.325.85-.495a1.03 1.03 0 00.355-.436c.075-.164.055-.43.07-.576.068.205.078.27.102.486.02.217-.127.521-.19.68a1.02 1.02 0 00.51-.525c.058.035.03.125.05.301.094-.092.2-.162.293-.25.094-.088.195-.164.243-.287.046-.12.027-.252-.007-.393-.035-.143-.193-.307-.28-.463-.083-.152.017-.305.01-.492-.17-.029-.313-.117-.51-.088-.196.03-.42.248-.622.252-.2 0-.314-.188-.478-.238-.165-.053-.33-.045-.495-.07.21-.199 1.02-.295 1.576-.385a9.794 9.794 0 011.47-.133c.22-.006.506.068.66.025.153-.045.12-.15.165-.264.13-.318.066-.604-.004-.924-.444-.053-.908-.115-1.356-.082-.438.033-.956.242-1.41.256-.39.014-.975-.074-1.31-.28-.414-.25-.732-.79-.846-.966-.184-.28-.415-.836-.56-1.088-.14-.254-.171-.324-.29-.43-.116-.105-.276-.113-.417-.17.16.014.336-.035.482.047.22.127.465.648.601.877.145-.486.11-.676.53-.95-.337.378-.347.665-.429 1.11.28.46.67 1.193 1.18 1.396.186.074.502.12.7.145.622.076 1.22-.119 1.83-.27.444-.11.896-.066 1.437-.035.183.012.616-.1.707-.283a.33.33 0 00-.024-.33c-.07-.105-.255-.158-.355-.254-.1-.098-.156-.21-.235-.314a6.51 6.51 0 01-1.062.115c.22-.09.433-.14.66-.23.237-.098.463-.219.676-.359.186-.123.303-.193.438-.334.133-.143.304-.289.403-.463.1-.174.114-.369.12-.584.004-.215-.005-.516-.088-.69-.084-.173-.243-.226-.37-.265-.128-.04-.217.063-.35.076-.134.014-.258.096-.452.006a1.68 1.68 0 01-.617-.548c-.196-.274-.335-.722-.534-1.067-.343-.596-.77-1.15-1.18-1.702a3.392 3.392 0 01-.1-.508c-.032-.322-.036-.656.064-.97.075-.24.188-.493.438-.591a.48.48 0 01.317-.022c.09.032.18.135.142.252-.04.129-.127.134-.188.198a.693.693 0 00-.183.33c.11-.004.262-.011.354.013.12.03.23.11.29.279-.142-.126-.212-.185-.39-.188-.082-.002-.18.026-.27.04-.034.109-.054.244-.1.33-.05.084-.142.063-.177.16a.992.992 0 00-.02.392h.004zm1.242-.15c.056.022.075.028.146.08.07.053.165.105.22.23a.878.878 0 01.04.4c-.048-.015-.113-.005-.163-.047-.05-.043-.08-.14-.143-.18-.065-.043-.117-.034-.188-.043.038.096.05.199.036.3-.036.204-.156.308-.352.33-.084.013-.22-.015-.292-.028.034.075.09.143.126.219.164-.023.285-.02.375-.061.088-.041.183-.135.296-.173.113-.04.214-.04.338-.06-.098.085-.162.168-.26.254l.215.623c.152.096.294.146.485.263.19.116.42.327.67.44.248.112.395.176.656.224.26.05.467.262.722.295.255.032.735.041.932.021.225-.02.516-.135.542-.38-.188.044-.475.004-.619-.35-.064-.156-.034-.446-.132-.63-.099-.187-.236-.246-.4-.475-.164-.23-.43-.59-.58-.895-.15-.308-.188-.654-.313-.93-.128-.273-.319-.494-.469-.707-.323-.463-.584-.777-1.12-1.011-.257-.112-.55-.143-.823-.213-.113.05-.268.104-.295.237a.536.536 0 00.12.42c.16.166.395.343.487.604.06.168.076.73.025.883-.054.16-.178.257-.282.36zm.052 1.332c-.05.043-.087.087-.167.122-.08.036-.19.045-.295.07.148.232.305.467.447.71.143.242.266.51.4.764-.006-.147.003-.301-.018-.437-.02-.136-.083-.254-.145-.461-.06-.206-.135-.484-.222-.768zm-4-5.087a3.32 3.32 0 00.065.806c.058.267.11.404.328.564.396.295.648.245.955.416.145.08.328.217.382.359.053.146-.036.3-.146.363.192.029.408-.19.318-.41-.045-.11-.255-.16-.32-.271a.41.41 0 01-.033-.335c.053-.202.454-.388.597-.546.218-.248.3-.453.177-.77-.172-.445-.842-.804-1.242-.98-.183-.08-.287-.083-.43-.128.293.174.602.31.75.69.124.32.016.444.022.72.002.13.172.197.248.277.064.072.06.125.008.223a.256.256 0 00-.11-.2c-.113-.08-.235-.062-.295-.224-.09-.248.09-.484-.112-.762-.15-.208-.353-.441-.625-.447a1.073 1.073 0 00-.36.058l-.183-.22-.005-.003c-.372-.34-.626-.62-1.146-.852-.522-.234-.78-.27-1.38-.256-.596.013-1.19.063-1.882.66-.694.6-2.48 2.888-2.915 3.177-.43.289-.527.389-1.068.389-.54 0-1.387-.766-1.42-1.723-.032-.956-.045-1.297.62-2.45.665-1.151 1.867-1.504 2.762-1.624.895-.12 1.432.194 2.092.195.66.002 1.314-.11 1.508-.637-.095.056-.221.12-.577.1-.355-.018-.85-.43-1.402-.705C7.157.548 6.54.515 5.75.501c-.79-.015-1.777.045-2.755.574C2.018 1.6 1.35 2.16.783 3.195.215 4.228.13 5.07.223 6.322.313 7.57.7 8.5 1.442 9.42c.744.914 1.485 1.363 2.823 1.529l.283-1.242-.504.72.014-.802-.455.565-.202-.767-.367.615-.183-.855-.535.432.17-.705-.707.078.324-.491-.644.006.375-.653-.57-.091.454-.596-.698-.206.578-.555-.573-.467.448-.348-.42-.56.448-.52-.167-.684.379-.33.113-.785.426-.214.365-.61.677-.073.334-.553.68.035.642-.348.666.154.756-.228.562.13.73.108.706.564-1.08-.377-.545.26-.45-.273-.31.21-.55.056-.492-.03-.358.436-.732.007-.26.59-.65.227-.06.678-.468.366.155.637-.401.664.31.58-.305.53.403.264-.09.853.563.14.125.634.613-.063.38.434.47-.461c.859-.428 1.213-.668 1.883-1.391.76-.823 1.196-1.584 2.208-2.147.73-.405 1.32-.551 2.139-.408.766.132 1.024.593 1.59 1.077.06-.11.07-.14.168-.218-.03.142-.08.287-.093.423z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/gnubash.svg b/assets/lib/simple-icons/icons/gnubash.svg
index 2f42d3f1..857dd04c 100644
--- a/assets/lib/simple-icons/icons/gnubash.svg
+++ b/assets/lib/simple-icons/icons/gnubash.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GNU Bash icon</title><path d="M21.038,4.9l-7.577-4.498C13.009,0.134,12.505,0,12,0c-0.505,0-1.009,0.134-1.462,0.403L2.961,4.9 C2.057,5.437,1.5,6.429,1.5,7.503v8.995c0,1.073,0.557,2.066,1.462,2.603l7.577,4.497C10.991,23.866,11.495,24,12,24 c0.505,0,1.009-0.134,1.461-0.402l7.577-4.497c0.904-0.537,1.462-1.529,1.462-2.603V7.503C22.5,6.429,21.943,5.437,21.038,4.9z M15.17,18.946l0.013,0.646c0.001,0.078-0.05,0.167-0.111,0.198l-0.383,0.22c-0.061,0.031-0.111-0.007-0.112-0.085L14.57,19.29 c-0.328,0.136-0.66,0.169-0.872,0.084c-0.04-0.016-0.057-0.075-0.041-0.142l0.139-0.584c0.011-0.046,0.036-0.092,0.069-0.121 c0.012-0.011,0.024-0.02,0.036-0.026c0.022-0.011,0.043-0.014,0.062-0.006c0.229,0.077,0.521,0.041,0.802-0.101 c0.357-0.181,0.596-0.545,0.592-0.907c-0.003-0.328-0.181-0.465-0.613-0.468c-0.55,0.001-1.064-0.107-1.072-0.917 c-0.007-0.667,0.34-1.361,0.889-1.8l-0.007-0.652c-0.001-0.08,0.048-0.168,0.111-0.2l0.37-0.236 c0.061-0.031,0.111,0.007,0.112,0.087l0.006,0.653c0.273-0.109,0.511-0.138,0.726-0.088c0.047,0.012,0.067,0.076,0.048,0.151 l-0.144,0.578c-0.011,0.044-0.036,0.088-0.065,0.116c-0.012,0.012-0.025,0.021-0.038,0.028c-0.019,0.01-0.038,0.013-0.057,0.009 c-0.098-0.022-0.332-0.073-0.699,0.113c-0.385,0.195-0.52,0.53-0.517,0.778c0.003,0.297,0.155,0.387,0.681,0.396 c0.7,0.012,1.003,0.318,1.01,1.023C16.105,17.747,15.736,18.491,15.17,18.946z M19.143,17.859c0,0.06-0.008,0.116-0.058,0.145 l-1.916,1.164c-0.05,0.029-0.09,0.004-0.09-0.056v-0.494c0-0.06,0.037-0.093,0.087-0.122l1.887-1.129 c0.05-0.029,0.09-0.004,0.09,0.056V17.859z M20.459,6.797l-7.168,4.427c-0.894,0.523-1.553,1.109-1.553,2.187v8.833 c0,0.645,0.26,1.063,0.66,1.184c-0.131,0.023-0.264,0.039-0.398,0.039c-0.42,0-0.833-0.114-1.197-0.33L3.226,18.64 c-0.741-0.44-1.201-1.261-1.201-2.142V7.503c0-0.881,0.46-1.702,1.201-2.142l7.577-4.498c0.363-0.216,0.777-0.33,1.197-0.33 c0.419,0,0.833,0.114,1.197,0.33l7.577,4.498c0.624,0.371,1.046,1.013,1.164,1.732C21.686,6.557,21.12,6.411,20.459,6.797z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GNU Bash</title><path d="M21.038,4.9l-7.577-4.498C13.009,0.134,12.505,0,12,0c-0.505,0-1.009,0.134-1.462,0.403L2.961,4.9 C2.057,5.437,1.5,6.429,1.5,7.503v8.995c0,1.073,0.557,2.066,1.462,2.603l7.577,4.497C10.991,23.866,11.495,24,12,24 c0.505,0,1.009-0.134,1.461-0.402l7.577-4.497c0.904-0.537,1.462-1.529,1.462-2.603V7.503C22.5,6.429,21.943,5.437,21.038,4.9z M15.17,18.946l0.013,0.646c0.001,0.078-0.05,0.167-0.111,0.198l-0.383,0.22c-0.061,0.031-0.111-0.007-0.112-0.085L14.57,19.29 c-0.328,0.136-0.66,0.169-0.872,0.084c-0.04-0.016-0.057-0.075-0.041-0.142l0.139-0.584c0.011-0.046,0.036-0.092,0.069-0.121 c0.012-0.011,0.024-0.02,0.036-0.026c0.022-0.011,0.043-0.014,0.062-0.006c0.229,0.077,0.521,0.041,0.802-0.101 c0.357-0.181,0.596-0.545,0.592-0.907c-0.003-0.328-0.181-0.465-0.613-0.468c-0.55,0.001-1.064-0.107-1.072-0.917 c-0.007-0.667,0.34-1.361,0.889-1.8l-0.007-0.652c-0.001-0.08,0.048-0.168,0.111-0.2l0.37-0.236 c0.061-0.031,0.111,0.007,0.112,0.087l0.006,0.653c0.273-0.109,0.511-0.138,0.726-0.088c0.047,0.012,0.067,0.076,0.048,0.151 l-0.144,0.578c-0.011,0.044-0.036,0.088-0.065,0.116c-0.012,0.012-0.025,0.021-0.038,0.028c-0.019,0.01-0.038,0.013-0.057,0.009 c-0.098-0.022-0.332-0.073-0.699,0.113c-0.385,0.195-0.52,0.53-0.517,0.778c0.003,0.297,0.155,0.387,0.681,0.396 c0.7,0.012,1.003,0.318,1.01,1.023C16.105,17.747,15.736,18.491,15.17,18.946z M19.143,17.859c0,0.06-0.008,0.116-0.058,0.145 l-1.916,1.164c-0.05,0.029-0.09,0.004-0.09-0.056v-0.494c0-0.06,0.037-0.093,0.087-0.122l1.887-1.129 c0.05-0.029,0.09-0.004,0.09,0.056V17.859z M20.459,6.797l-7.168,4.427c-0.894,0.523-1.553,1.109-1.553,2.187v8.833 c0,0.645,0.26,1.063,0.66,1.184c-0.131,0.023-0.264,0.039-0.398,0.039c-0.42,0-0.833-0.114-1.197-0.33L3.226,18.64 c-0.741-0.44-1.201-1.261-1.201-2.142V7.503c0-0.881,0.46-1.702,1.201-2.142l7.577-4.498c0.363-0.216,0.777-0.33,1.197-0.33 c0.419,0,0.833,0.114,1.197,0.33l7.577,4.498c0.624,0.371,1.046,1.013,1.164,1.732C21.686,6.557,21.12,6.411,20.459,6.797z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/gnuemacs.svg b/assets/lib/simple-icons/icons/gnuemacs.svg
index 5ec1c06d..fa9ccf14 100644
--- a/assets/lib/simple-icons/icons/gnuemacs.svg
+++ b/assets/lib/simple-icons/icons/gnuemacs.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GNU Emacs icon</title><path d="M12,24C5.448,24,0.118,18.617,0.118,12S5.448,0,12,0c6.552,0,11.882,5.383,11.882,12S18.552,24,12,24z M12,0.661 C5.813,0.661,0.779,5.748,0.779,12S5.813,23.339,12,23.339c6.187,0,11.221-5.086,11.221-11.339S18.187,0.661,12,0.661z M8.03,20.197 c0,0,0.978,0.069,2.236-0.042c0.51-0.045,2.444-0.235,3.891-0.552c0,0,1.764-0.377,2.707-0.725c0.987-0.364,1.524-0.673,1.766-1.11 c-0.011-0.09,0.074-0.408-0.381-0.599c-1.164-0.488-2.514-0.4-5.185-0.457c-2.962-0.102-3.948-0.598-4.472-0.997 c-0.503-0.405-0.25-1.526,1.907-2.513c1.086-0.526,5.345-1.496,5.345-1.496c-1.434-0.709-4.109-1.955-4.659-2.224 c-0.482-0.236-1.254-0.591-1.421-1.021c-0.19-0.413,0.448-0.768,0.804-0.87c1.147-0.331,2.766-0.536,4.24-0.56 c0.741-0.012,0.861-0.059,0.861-0.059c1.022-0.17,1.695-0.869,1.414-1.976c-0.252-1.13-1.579-1.795-2.84-1.565 c-1.188,0.217-4.05,1.048-4.05,1.048c3.539-0.031,4.131,0.028,4.395,0.398c0.156,0.218-0.071,0.518-1.015,0.672 c-1.027,0.168-3.163,0.37-3.163,0.37c-2.049,0.122-3.492,0.13-3.925,1.046C6.202,7.564,6.787,8.094,7.043,8.425 c1.082,1.204,2.646,1.853,3.652,2.331c0.379,0.18,1.49,0.52,1.49,0.52c-3.265-0.18-5.619,0.823-7.001,1.977 c-1.562,1.445-0.871,3.168,2.33,4.228c1.891,0.626,2.828,0.921,5.648,0.667c1.661-0.09,1.923-0.036,1.939,0.1 c0.023,0.192-1.845,0.669-2.355,0.816C11.448,19.438,8.047,20.193,8.03,20.197z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GNU Emacs</title><path d="M12,24C5.448,24,0.118,18.617,0.118,12S5.448,0,12,0c6.552,0,11.882,5.383,11.882,12S18.552,24,12,24z M12,0.661 C5.813,0.661,0.779,5.748,0.779,12S5.813,23.339,12,23.339c6.187,0,11.221-5.086,11.221-11.339S18.187,0.661,12,0.661z M8.03,20.197 c0,0,0.978,0.069,2.236-0.042c0.51-0.045,2.444-0.235,3.891-0.552c0,0,1.764-0.377,2.707-0.725c0.987-0.364,1.524-0.673,1.766-1.11 c-0.011-0.09,0.074-0.408-0.381-0.599c-1.164-0.488-2.514-0.4-5.185-0.457c-2.962-0.102-3.948-0.598-4.472-0.997 c-0.503-0.405-0.25-1.526,1.907-2.513c1.086-0.526,5.345-1.496,5.345-1.496c-1.434-0.709-4.109-1.955-4.659-2.224 c-0.482-0.236-1.254-0.591-1.421-1.021c-0.19-0.413,0.448-0.768,0.804-0.87c1.147-0.331,2.766-0.536,4.24-0.56 c0.741-0.012,0.861-0.059,0.861-0.059c1.022-0.17,1.695-0.869,1.414-1.976c-0.252-1.13-1.579-1.795-2.84-1.565 c-1.188,0.217-4.05,1.048-4.05,1.048c3.539-0.031,4.131,0.028,4.395,0.398c0.156,0.218-0.071,0.518-1.015,0.672 c-1.027,0.168-3.163,0.37-3.163,0.37c-2.049,0.122-3.492,0.13-3.925,1.046C6.202,7.564,6.787,8.094,7.043,8.425 c1.082,1.204,2.646,1.853,3.652,2.331c0.379,0.18,1.49,0.52,1.49,0.52c-3.265-0.18-5.619,0.823-7.001,1.977 c-1.562,1.445-0.871,3.168,2.33,4.228c1.891,0.626,2.828,0.921,5.648,0.667c1.661-0.09,1.923-0.036,1.939,0.1 c0.023,0.192-1.845,0.669-2.355,0.816C11.448,19.438,8.047,20.193,8.03,20.197z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/gnuicecat.svg b/assets/lib/simple-icons/icons/gnuicecat.svg
index cde6bb51..4a1a82b0 100644
--- a/assets/lib/simple-icons/icons/gnuicecat.svg
+++ b/assets/lib/simple-icons/icons/gnuicecat.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GNU IceCat icon</title><path d="M10.436-0.055C10.07-0.049,9.692-0.025,9.297,0.02C4.501,0.562,1.685,4.556,1.522,9.399 c-1.123,2.201-1.453,4.791-0.724,7.324c1.396,4.853,6.216,7.785,11.169,7.204l0.909-0.107c4.956,0.327,6.013-1.024,7.199-4.318 c0.125-0.272,0.306-0.77,0.569-1.574c0.007-0.038,0.016-0.077,0.021-0.096c0.789-2.152,0.905-4.582,0.24-6.891 c-0.08-0.277-0.171-0.548-0.273-0.812c-0.03-0.19-0.024-0.42,0.009-0.6c0.29-0.475,0.65-0.833,1.079-1.1l0.273-1.876 c0.287-0.323,0.177-0.601,0.19-1.061c0.167-0.079,0.259-0.214,0.329-0.43c0.077-0.238,0.448-0.688,0.863-1.037 c0.064-0.189,0.224-0.574,0.222-0.895c-1.988,0.227-3.237,0.609-4.235-0.612L18.829,2.31c-0.24-0.372-0.672-0.585-0.981-0.951 l-0.35,1.213C17.067,2.305,14.749-0.124,10.436-0.055L10.436-0.055z M10.577,0.741c2.595,0.037,4.973,1.347,6.221,2.285 l-0.951,0.355l-0.599-0.382l-0.27,0.788v0.326L14.244,5.88l-0.08-0.027l0.379-1.577l0.572-1.52l-0.192-0.163l-0.842,0.922 c-0.179,0.981-0.09,2.364-0.542,2.937c0.141-1.152,0.341-2.159,0.353-3.506l-0.489-0.163c-0.113,0.596-0.265,1.278-0.382,1.657 l0.163-1.71L12.56,3.135v0.978l-0.163-0.542l-0.056-0.978l-0.216-0.029l-0.163,0.625c0.028,0.272-0.015,0.543,0.216,0.815 l0.056,2.066l0.134,0.246l-0.243,1.168l0.027-1.141l-0.08-0.08L11.908,4.25l-0.273-1.088L11.2,2.892L11.037,2.43l-0.462-0.029 l1.034,3.698l0.08,1.112c-0.118-0.527-0.113-1.102-0.569-1.494c0.045-0.553-0.036-1.095-0.708-1.577L9.434,2.131 C9.4,1.893,9.067,1.854,8.835,1.749c-0.07,0.32-0.131,0.643,0.083,1.034c0.489,0.777,0.978,1.559,1.467,1.983l0.027,0.951 C10.251,4.84,9.809,4.367,9.65,4.495C9.645,3.78,8.858,3.513,8.402,3.055L8.346,2.267l-0.27-0.056 c0.169,0.533-0.219,0.571,0.542,1.63l0.027,0.382c-0.29-0.197-0.579-0.565-0.868-0.978L7.424,2.62 c0.037,0.428-0.175,0.524,0.134,1.277c0.456,0.396,0.866,0.977,1.387,1.114c0,0,0.109,0.19,0,0.19 c-0.109,0-0.326-0.083-0.326-0.083c-0.3-0.137-0.586-0.26-1.168-0.679L6.853,2.673L6.58,2.62l0.056,0.951l0.243,0.107l0.027,0.625 c0.106,0.371,0.228,0.518,0.409,0.462C7.213,4.89,7.094,4.917,6.853,4.902C6.651,4.524,6.528,4.155,6.118,3.707l-0.27-0.788 L5.685,3.082c-0.059,0.296-0.085,0.61,0,0.978C5.42,3.903,5.027,3.467,4.56,3.24c1.534-1.78,3.904-2.462,5.766-2.496 C10.41,0.742,10.494,0.74,10.577,0.741L10.577,0.741z M18.147,2.935l0.518,0.171l1.518,0.866l2.151,0.019 c-0.617,0.242-1.377,0.526-1.862,0.673l-0.615-0.019c-0.486-0.414-0.876-0.613-1.312-0.876c-0.528,0.553-0.839,1.035-1.013,1.74 l0.152-1.192l0.521-1.173L18.147,2.935z M4.539,3.266l0.548,1.093l0.027,0.243L4.814,4.495L4.544,3.87L4.245,4.087L4.028,3.958 C4.184,3.712,4.356,3.481,4.539,3.266z M8.066,5.58c1.617-0.037,1.873,1.306,2.132,2.549v2.229 c0.186,0.018,0.568,1.138,0.489,1.494c-0.045,0.204,0.489,1.425,0.452,1.43c0.288,0.278,0.235,0.248,0.465,0.425 c0.317,0.244,0.604,1.136,0.428,1.267c-0.168,0.124,0.221,0.402,0.313,0.601c0.568,0.507,0.989,1.016,0.981,1.523l0.27,0.489 l0.516,0.08l0.136,0.192l0.652,0.08c0.375-0.081,0.32-0.486,0.436-0.762c0.022-0.279-0.058-0.6-0.462-0.951 c0.021-0.422,0.074-0.838-0.326-1.331c0.057-0.504-0.311-0.922-0.599-1.357c-0.035-0.374-0.197-0.885-0.321-1.381 c-0.061-0.245-0.09-0.498-0.139-0.74c-0.182-1.677,0.058-1.866,0.134-2.771c0.62-0.932,0.945-1.379,1.496-1.577l0.705,0.871 c0.348,0.633,0.199,1.444,1.061,1.603l0.021,0.021c0.44-0.397,1.023-0.384,1.497-0.396l-0.057,0.188 c-0.571-0.06-1.038-0.074-1.424,0.216l0.385,0.374c0.413-0.536,0.982-0.5,1.542-0.521l0.006,0.207 c-0.605-0.08-1.184,0.021-1.497,0.362l0.123,0.118h0.005c0.466-0.364,1.024-0.384,1.552-0.39l-0.104,0.184 c-0.53,0.043-0.895,0.007-1.274,0.23c0.293,0.031,0.588,0.057,0.882,0.086l0.11,0.243l0.679,0.056 c0.119,0.03,0.216,0.043,0.302,0.045c0.083,0.221,0.158,0.445,0.224,0.676c0.504,1.751,0.502,3.588,0.059,5.283 c-1.359,3.648-2.804,4.625-5.742,4.428c-3.067-0.206-5.543-3.614-7.725-8.283c-0.476-1.295-1.641-2.116-2.318-1.424 c-3.08,3.063,0.395,8.51,2.104,9.825c0.957,0.692,1.924,1.245,2.878,1.673c-3.388-0.564-6.284-2.92-7.263-6.322 C0.668,12.32,2.619,8.027,6.345,5.973c0.004-0.001,0.01-0.004,0.013-0.005C7.055,5.708,7.613,5.591,8.066,5.58L8.066,5.58z M18.31,7.625c0.294,0.045,0.84,0.366,1.139,0.665c0.09,0.244-0.136,0.354-0.12,0.497c0.008,0.024,0.004,0.032,0.003,0.032 c-0.001-0.011-0.002-0.021-0.003-0.032C19.305,8.715,18.908,8.227,18.31,7.625z M20.118,9.811 c-0.002,0.253-0.083,0.341-0.192,0.476c-0.111,0.009-0.39-0.075-0.513-0.251C19.598,9.823,19.882,9.825,20.118,9.811z M17.277,9.983c-0.059,0.071-0.086,0.157-0.156,0.306c0.091-0.14,0.146-0.201,0.207-0.245L17.277,9.983z M17.419,10.159 c-0.225,0.063-0.387,0.419-0.613,0.923c0.241-0.297,0.407-0.718,0.746-0.852L17.419,10.159z M5.551,13.076l0.053,1.058 l-1.657,0.951l-0.027-0.788C4.612,14.476,5.071,13.736,5.551,13.076z M6.286,15.331l0.243,0.625l-2.092,1.141l-0.299-0.708 C6.233,15.623,5.873,15.629,6.286,15.331z M7.045,16.771l0.273,0.462c-0.788,0.389-1.438,0.914-2.009,1.52l-0.436-0.868 C5.663,17.646,6.406,17.313,7.045,16.771z M8.052,18.075l0.462,0.436c-0.362,0.811-1.11,1.315-1.822,1.846L5.96,19.515 C6.679,19.046,7.591,18.673,8.052,18.075z M9.595,19.582c0.073,0.433-0.222,1.076-1.216,2.026 c-0.387-0.174-0.787-0.337-1.034-0.652c1.61-0.816,2.024-1.255,2.143-1.471C9.53,19.479,9.6,19.517,9.595,19.582L9.595,19.582z M10.607,20.25c0.037,0.383-0.041,0.831,0.19,1.085l0.216,0.056c-0.114,0.471-0.341,0.823-0.326,1.294 c-0.859-0.208-0.954-0.297-1.277-0.506C10.408,20.627,10.599,20.262,10.607,20.25L10.607,20.25z M12.018,21.036l1.061,1.224 c-0.107,0.585-0.098,0.934,0.299,1.087c-0.6-0.033-1.188-0.04-1.683-0.345C12.125,22.363,12.118,21.791,12.018,21.036z M17.355,21.512c0.308,0.469,0.349,0.707,0.657,0.815c-0.406,0.394-0.589,0.471-1.066,0.652c0.15-0.304,0.001-0.73-0.134-1.248 C16.712,21.539,17.213,21.555,17.355,21.512z M14.356,21.797c1.79,0.534,1.183,0.874,1.732,1.408 c-0.472,0.099-0.905,0.205-1.659,0.163C14.985,22.956,14.731,22.496,14.356,21.797z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GNU IceCat</title><path d="M10.437.001c-.365.006-.743.03-1.136.075-4.786.54-7.595 4.525-7.758 9.357C.423 11.63.094 14.213.821 16.74c1.392 4.841 6.201 7.767 11.143 7.187l.906-.107c4.944.327 5.999-1.021 7.182-4.308.125-.27.305-.768.568-1.57.007-.037.016-.076.021-.096.788-2.147.903-4.57.24-6.875a9.996 9.996 0 0 0-.272-.81c-.03-.19-.024-.42.009-.599.29-.474.648-.83 1.076-1.097l.272-1.871c.287-.322.177-.6.19-1.058.166-.08.258-.214.327-.43.077-.237.447-.686.861-1.034.064-.188.224-.572.222-.893-1.984.227-3.23.608-4.226-.61l-.53-.208c-.24-.372-.67-.584-.978-.95l-.35 1.21c-.43-.265-2.742-2.688-7.045-2.62zm.14.795c2.59.036 4.962 1.344 6.207 2.28l-.95.354-.596-.382-.27.787v.325l-.733 1.762-.08-.026.379-1.573.57-1.517-.191-.163-.84.92c-.18.979-.09 2.358-.541 2.93.14-1.15.34-2.155.352-3.498l-.488-.162c-.113.594-.265 1.275-.382 1.652l.163-1.706-.621.405v.976l-.163-.541-.056-.976-.216-.03-.162.625c.028.27-.015.542.216.813l.056 2.06.133.246-.243 1.165.027-1.139-.08-.08-.163-2.007-.271-1.085-.435-.27-.163-.46-.46-.03 1.03 3.69.08 1.109c-.117-.526-.112-1.1-.567-1.49.045-.553-.036-1.093-.706-1.573l-.976-2.005c-.033-.237-.366-.276-.597-.381-.07.319-.13.642.082 1.032.488.775.976 1.555 1.464 1.978l.027.949c-.16-.875-.602-1.347-.76-1.219-.005-.713-.79-.98-1.245-1.437l-.056-.786-.27-.056c.17.532-.217.57.542 1.626l.027.381c-.29-.196-.578-.563-.867-.975l-.352-.624c.038.427-.175.523.134 1.274.454.395.864.974 1.383 1.112 0 0 .109.19 0 .19-.108 0-.325-.084-.325-.084-.3-.137-.585-.259-1.165-.677l-.597-1.762-.272-.053.056.949.242.107.027.623c.106.37.227.517.408.462-.101.124-.22.15-.461.136-.2-.378-.324-.745-.733-1.192l-.27-.787-.162.163a2.23 2.23 0 0 0 0 .976c-.264-.157-.656-.592-1.122-.819C6.105 1.513 8.469.832 10.327.798c.084-.001.167-.003.25-.002zm7.553 2.188l.517.171 1.514.864 2.146.018c-.615.242-1.373.525-1.858.672l-.613-.018c-.485-.414-.874-.612-1.309-.875-.526.551-.837 1.033-1.01 1.736l.152-1.19.52-1.17zm-13.577.331l.547 1.09.026.243-.298-.107-.27-.623-.298.215-.216-.128c.156-.246.327-.476.51-.69zm3.519 2.309c1.613-.037 1.868 1.303 2.127 2.543v2.223c.186.019.567 1.135.488 1.49-.045.204.488 1.422.45 1.426.288.278.235.248.465.424.316.243.602 1.134.426 1.264-.167.124.22.4.312.6.566.506.987 1.013.978 1.52l.27.487.514.08.136.192.65.08c.375-.08.32-.485.435-.76.022-.278-.057-.598-.461-.949.021-.421.074-.836-.325-1.327.056-.503-.311-.92-.598-1.355-.034-.373-.196-.883-.32-1.378-.06-.244-.089-.497-.138-.738-.181-1.674.058-1.862.133-2.765.618-.93.943-1.376 1.493-1.573l.704.87c.347.631.198 1.44 1.058 1.599l.022.021c.439-.396 1.02-.383 1.493-.395l-.057.187c-.57-.06-1.035-.074-1.42.216l.383.374c.412-.536.98-.5 1.539-.52l.006.206c-.604-.08-1.181.021-1.494.362l.123.117h.005c.465-.363 1.022-.383 1.549-.39l-.104.184c-.53.044-.893.008-1.272.23.293.03.587.057.88.085l.11.243.676.056c.12.03.215.042.302.045.083.22.157.444.224.674a9.983 9.983 0 0 1 .058 5.27c-1.356 3.64-2.797 4.614-5.729 4.418-3.06-.205-5.53-3.605-7.706-8.264-.475-1.292-1.638-2.11-2.313-1.42-3.073 3.055.394 8.49 2.1 9.801a16.34 16.34 0 0 0 2.87 1.67c-3.38-.563-6.27-2.914-7.245-6.308-1.177-4.092.77-8.374 4.486-10.423l.014-.006c.694-.259 1.251-.376 1.703-.386zm10.22 2.04c.293.044.838.365 1.136.663.09.243-.135.353-.12.496.008.023.004.031.003.032-.001-.011-.001-.022-.003-.032-.023-.072-.42-.56-1.016-1.16zm1.804 2.18c-.003.254-.083.341-.192.475-.111.009-.39-.075-.512-.25.185-.212.469-.21.704-.224zm-2.834.172c-.059.07-.086.157-.156.305.092-.14.146-.2.207-.244zm.141.176c-.225.063-.386.418-.611.92.24-.296.406-.716.744-.85zm-11.84 2.91l.054 1.055-1.653.949-.027-.786c.689.179 1.147-.56 1.627-1.219zm.734 2.25l.242.623-2.087 1.138-.299-.706c2.09-.764 1.731-.759 2.144-1.056zm.757 1.436l.272.461c-.787.389-1.435.912-2.005 1.517l-.435-.866c.789-.24 1.53-.572 2.168-1.112zm1.005 1.301l.46.434c-.36.81-1.106 1.312-1.817 1.843l-.73-.84c.716-.469 1.626-.84 2.087-1.437zm1.539 1.503c.072.432-.222 1.073-1.214 2.021-.386-.174-.785-.336-1.032-.65 1.607-.814 2.02-1.253 2.139-1.468.042-.006.112.032.107.097zm1.01.667c.036.382-.041.829.188 1.082l.216.056c-.113.47-.34.821-.325 1.291-.857-.208-.951-.297-1.274-.504.996-1.549 1.186-1.913 1.194-1.925zm1.407.784l1.058 1.22c-.106.584-.097.933.299 1.085-.599-.033-1.186-.04-1.68-.344.43-.637.423-1.208.323-1.961zm5.325.475c.307.467.348.706.655.813-.405.393-.587.47-1.063.65.149-.303 0-.728-.134-1.244-.1-.192.4-.176.542-.219zm-2.993.284c1.786.534 1.18.872 1.729 1.405-.472.1-.904.205-1.656.163.555-.411.301-.87-.073-1.568z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/gnuprivacyguard.svg b/assets/lib/simple-icons/icons/gnuprivacyguard.svg
index afc1a6c0..5b8facc6 100644
--- a/assets/lib/simple-icons/icons/gnuprivacyguard.svg
+++ b/assets/lib/simple-icons/icons/gnuprivacyguard.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GNU Privacy Guard icon</title><path d="M2.968 11.583h1.274v-3.82A7.76 7.76 0 0 1 12.005 0a7.76 7.76 0 0 1 7.762 7.763v3.783c-.018.01-.037.028-.056.037l-.01.01-.008.009h-.01l-.01.01-.009.009H19.636l-.018.018h-.02l-.018.01h-.01l-.009.01-.009.009h-.01l-.009.009-.009.01-.01.009-.009.009-.028.019-.019.01-.028.018-.018.01-.02.009-.027.018-.019.01-.01.009-.027.019-.02.01-.046.027-.019.01-.018.009-.02.01h-.008l-.057.027h-.019c-.018.01-.037.02-.065.038h-.01l-.009.01-.028.018-.018.01-.029.018-.018.01h-.01l-.028.018-.018.01-.02.009c-.018.01-.046.019-.065.028l-.018.01-.02.009-.037.018-.037.02-.047.018-.047.019-.019.009-.037.019-.019.01c-1.545.739-4.017 1.516-8.708 1.853-3.362.244-5.403 1.723-6.724 3.502zm4.842 0h8.371v-3.82a4.184 4.184 0 0 0-4.186-4.186A4.184 4.184 0 0 0 7.81 7.763zm13.222 1.461V24H5.572c1.704-.946 2.968-.852 5.075-.787 2.865.094 6.03-1.105 7.585-2.696 1.554-1.592-.14-.375-1.901.074-1.76.45-5.17.497-7.454-.103 7.173.094 9.973-2.219 11.555-4.307 1.583-2.079-.683-.365-2.153.356-1.47.72-4.036 1.227-6.864.852 4.27-.01 7.52-2.144 9.607-4.345z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GNU Privacy Guard</title><path d="M2.968 11.583h1.274v-3.82A7.76 7.76 0 0 1 12.005 0a7.76 7.76 0 0 1 7.762 7.763v3.783c-.018.01-.037.028-.056.037l-.01.01-.008.009h-.01l-.01.01-.009.009H19.636l-.018.018h-.02l-.018.01h-.01l-.009.01-.009.009h-.01l-.009.009-.009.01-.01.009-.009.009-.028.019-.019.01-.028.018-.018.01-.02.009-.027.018-.019.01-.01.009-.027.019-.02.01-.046.027-.019.01-.018.009-.02.01h-.008l-.057.027h-.019c-.018.01-.037.02-.065.038h-.01l-.009.01-.028.018-.018.01-.029.018-.018.01h-.01l-.028.018-.018.01-.02.009c-.018.01-.046.019-.065.028l-.018.01-.02.009-.037.018-.037.02-.047.018-.047.019-.019.009-.037.019-.019.01c-1.545.739-4.017 1.516-8.708 1.853-3.362.244-5.403 1.723-6.724 3.502zm4.842 0h8.371v-3.82a4.184 4.184 0 0 0-4.186-4.186A4.184 4.184 0 0 0 7.81 7.763zm13.222 1.461V24H5.572c1.704-.946 2.968-.852 5.075-.787 2.865.094 6.03-1.105 7.585-2.696 1.554-1.592-.14-.375-1.901.074-1.76.45-5.17.497-7.454-.103 7.173.094 9.973-2.219 11.555-4.307 1.583-2.079-.683-.365-2.153.356-1.47.72-4.036 1.227-6.864.852 4.27-.01 7.52-2.144 9.607-4.345z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/gnusocial.svg b/assets/lib/simple-icons/icons/gnusocial.svg
index 315149b4..67541254 100644
--- a/assets/lib/simple-icons/icons/gnusocial.svg
+++ b/assets/lib/simple-icons/icons/gnusocial.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GNU social icon</title><path d="M4.217 0C2.474 0 1.06 1.413 1.06 3.156V15.77c0 1.744 1.414 3.158 3.157 3.158h9.367C13.567 22.498 8.756 24 8.756 24s8.138-.038 9.305-5.072h1.72c1.744 0 3.157-1.414 3.157-3.157V3.157C22.938 1.413 21.524 0 19.782 0H4.218zm4.527 2.53c.073-.013.132-.003.174.034.335.3-.556.593-.484 2.063.032.646-.16 1.146 1.076 1.146.826 0 .483-.734 1.523-.734.656 0 .86.435.934.767.072-.33.274-.768.93-.768 1.04 0 .7.733 1.525.733 1.237 0 1.044-.5 1.076-1.146.072-1.47-.82-1.764-.484-2.063.042-.037.1-.042.172-.02.5.143 1.607 1.558 1.638 2.155.038.71.04 1.825-1.015 2.407 1.19 1.167 1.352 2.72 1.352 2.72l-2.045-.034s-.464-2.118-2.94-2.01c-2.474.108-2.796.538-2.796 3.156 0 2.617 1.147 3.517 2.905 3.585 2.76.108 2.51-1.433 2.51-1.433l-1.29.072-.718-1.937h4.41c0 2.116-.897 5.414-5.092 5.2-4.196-.216-5.128-3.515-5.164-5.74-.018-1.225.188-2.602 1.2-3.574-1.052-.58-1.033-1.7-1.033-2.414 0-.88 1.13-2.084 1.637-2.17z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GNU social</title><path d="M4.217 0C2.474 0 1.06 1.413 1.06 3.156V15.77c0 1.744 1.414 3.158 3.157 3.158h9.367C13.567 22.498 8.756 24 8.756 24s8.138-.038 9.305-5.072h1.72c1.744 0 3.157-1.414 3.157-3.157V3.157C22.938 1.413 21.524 0 19.782 0H4.218zm4.527 2.53c.073-.013.132-.003.174.034.335.3-.556.593-.484 2.063.032.646-.16 1.146 1.076 1.146.826 0 .483-.734 1.523-.734.656 0 .86.435.934.767.072-.33.274-.768.93-.768 1.04 0 .7.733 1.525.733 1.237 0 1.044-.5 1.076-1.146.072-1.47-.82-1.764-.484-2.063.042-.037.1-.042.172-.02.5.143 1.607 1.558 1.638 2.155.038.71.04 1.825-1.015 2.407 1.19 1.167 1.352 2.72 1.352 2.72l-2.045-.034s-.464-2.118-2.94-2.01c-2.474.108-2.796.538-2.796 3.156 0 2.617 1.147 3.517 2.905 3.585 2.76.108 2.51-1.433 2.51-1.433l-1.29.072-.718-1.937h4.41c0 2.116-.897 5.414-5.092 5.2-4.196-.216-5.128-3.515-5.164-5.74-.018-1.225.188-2.602 1.2-3.574-1.052-.58-1.033-1.7-1.033-2.414 0-.88 1.13-2.084 1.637-2.17z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/go.svg b/assets/lib/simple-icons/icons/go.svg
index eef44ec5..0cadd56b 100644
--- a/assets/lib/simple-icons/icons/go.svg
+++ b/assets/lib/simple-icons/icons/go.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Go icon</title><path d="M1.811 10.715c-.047 0-.058-.023-.035-.059l.246-.315c.023-.035.081-.058.128-.058h4.172c.046 0 .058.035.035.07l-.199.303c-.023.036-.082.07-.117.07l-4.23-.011zM.047 11.79c-.047 0-.059-.023-.035-.058l.245-.316c.023-.035.082-.058.129-.058h5.328c.047 0 .07.035.058.07l-.093.28c-.012.047-.058.07-.105.07l-5.527.012zm2.828 1.075c-.047 0-.059-.035-.035-.07l.163-.292c.023-.035.07-.07.117-.07h2.337c.047 0 .07.035.07.082l-.023.28c0 .047-.047.082-.082.082l-2.547-.012zM15.004 10.505c-.736.187-1.239.327-1.963.514-.176.046-.187.058-.34-.117-.174-.199-.303-.327-.548-.444-.737-.362-1.45-.257-2.115.175-.795.514-1.204 1.274-1.192 2.22.011.935.654 1.706 1.577 1.835.795.105 1.46-.175 1.987-.771.105-.129.198-.269.315-.433H10.47c-.245 0-.304-.152-.222-.35.152-.362.432-.97.596-1.274a.315.315 0 0 1 .292-.187h4.253c-.023.316-.023.631-.07.947a4.983 4.983 0 0 1-.958 2.29c-.841 1.11-1.94 1.8-3.33 1.986-1.145.152-2.209-.07-3.143-.77-.865-.655-1.356-1.52-1.484-2.595-.152-1.274.222-2.419.993-3.424.83-1.086 1.928-1.776 3.272-2.021 1.098-.199 2.15-.07 3.096.572.62.41 1.063.97 1.356 1.648.07.105.023.164-.117.199 M18.872 16.967c-1.064-.024-2.034-.328-2.852-1.029a3.665 3.665 0 0 1-1.262-2.255c-.21-1.32.152-2.489.947-3.529.853-1.122 1.881-1.706 3.272-1.951 1.192-.21 2.314-.094 3.33.596.923.63 1.496 1.484 1.648 2.605.198 1.578-.257 2.863-1.344 3.962-.771.783-1.718 1.273-2.805 1.495-.315.059-.63.07-.934.106zm2.78-4.721c-.011-.152-.011-.269-.034-.386-.21-1.157-1.274-1.811-2.384-1.554-1.087.245-1.788.935-2.045 2.033-.21.912.234 1.835 1.075 2.209.643.28 1.285.245 1.905-.07.923-.48 1.425-1.227 1.484-2.232z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Go</title><path d="M1.811 10.231c-.047 0-.058-.023-.035-.059l.246-.315c.023-.035.081-.058.128-.058h4.172c.046 0 .058.035.035.07l-.199.303c-.023.036-.082.07-.117.07zM.047 11.306c-.047 0-.059-.023-.035-.058l.245-.316c.023-.035.082-.058.129-.058h5.328c.047 0 .07.035.058.07l-.093.28c-.012.047-.058.07-.105.07zm2.828 1.075c-.047 0-.059-.035-.035-.07l.163-.292c.023-.035.07-.07.117-.07h2.337c.047 0 .07.035.07.082l-.023.28c0 .047-.047.082-.082.082zm12.129-2.36c-.736.187-1.239.327-1.963.514-.176.046-.187.058-.34-.117-.174-.199-.303-.327-.548-.444-.737-.362-1.45-.257-2.115.175-.795.514-1.204 1.274-1.192 2.22.011.935.654 1.706 1.577 1.835.795.105 1.46-.175 1.987-.77.105-.13.198-.27.315-.434H10.47c-.245 0-.304-.152-.222-.35.152-.362.432-.97.596-1.274a.315.315 0 01.292-.187h4.253c-.023.316-.023.631-.07.947a4.983 4.983 0 01-.958 2.29c-.841 1.11-1.94 1.8-3.33 1.986-1.145.152-2.209-.07-3.143-.77-.865-.655-1.356-1.52-1.484-2.595-.152-1.274.222-2.419.993-3.424.83-1.086 1.928-1.776 3.272-2.02 1.098-.2 2.15-.07 3.096.571.62.41 1.063.97 1.356 1.648.07.105.023.164-.117.2m3.868 6.461c-1.064-.024-2.034-.328-2.852-1.029a3.665 3.665 0 01-1.262-2.255c-.21-1.32.152-2.489.947-3.529.853-1.122 1.881-1.706 3.272-1.95 1.192-.21 2.314-.095 3.33.595.923.63 1.496 1.484 1.648 2.605.198 1.578-.257 2.863-1.344 3.962-.771.783-1.718 1.273-2.805 1.495-.315.06-.63.07-.934.106zm2.78-4.72c-.011-.153-.011-.27-.034-.387-.21-1.157-1.274-1.81-2.384-1.554-1.087.245-1.788.935-2.045 2.033-.21.912.234 1.835 1.075 2.21.643.28 1.285.244 1.905-.07.923-.48 1.425-1.228 1.484-2.233z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/gocd.svg b/assets/lib/simple-icons/icons/gocd.svg
new file mode 100644
index 00000000..5e585265
--- /dev/null
+++ b/assets/lib/simple-icons/icons/gocd.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GoCD</title><path d="M18.043 13.237l-8.907 5.935a1.47 1.47 0 01-.823.25 1.449 1.449 0 01-.696-.173 1.48 1.48 0 01-.784-1.308V12a1.482 1.482 0 112.957 0v3.163L14.537 12 7.478 7.304A1.49 1.49 0 119.13 4.823l8.913 5.94a1.492 1.492 0 010 2.474M12 0a12 12 0 1012 12A12.012 12.012 0 0012 0"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/godaddy.svg b/assets/lib/simple-icons/icons/godaddy.svg
new file mode 100644
index 00000000..31bf2c16
--- /dev/null
+++ b/assets/lib/simple-icons/icons/godaddy.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GoDaddy</title><path d="M20.702 2.29c-2.494-1.554-5.778-1.187-8.706.654C9.076 1.104 5.79.736 3.3 2.29c-3.941 2.463-4.42 8.806-1.07 14.167 2.47 3.954 6.333 6.269 9.77 6.226 3.439.043 7.301-2.273 9.771-6.226 3.347-5.361 2.872-11.704-1.069-14.167zM4.042 15.328a12.838 12.838 0 01-1.546-3.541 10.12 10.12 0 01-.336-3.338c.15-1.98.956-3.524 2.27-4.345 1.315-.822 3.052-.87 4.903-.137.281.113.556.24.825.382A15.11 15.11 0 007.5 7.54c-2.035 3.255-2.655 6.878-1.945 9.765a13.247 13.247 0 01-1.514-1.98zm17.465-3.541a12.866 12.866 0 01-1.547 3.54 13.25 13.25 0 01-1.513 1.984c.635-2.589.203-5.76-1.353-8.734a.39.39 0 00-.563-.153l-4.852 3.032a.397.397 0 00-.126.546l.712 1.139a.395.395 0 00.547.126l3.145-1.965c.101.306.203.606.28.916.296 1.086.41 2.214.335 3.337-.15 1.982-.956 3.525-2.27 4.347a4.437 4.437 0 01-2.25.65h-.101a4.432 4.432 0 01-2.25-.65c-1.314-.822-2.121-2.365-2.27-4.347-.074-1.123.039-2.251.335-3.337a13.212 13.212 0 014.05-6.482 10.148 10.148 0 012.849-1.765c1.845-.733 3.586-.685 4.9.137 1.316.822 2.122 2.365 2.271 4.345a10.146 10.146 0 01-.33 3.334z"/></svg>
diff --git a/assets/lib/simple-icons/icons/godotengine.svg b/assets/lib/simple-icons/icons/godotengine.svg
index 87304b22..cd40190f 100644
--- a/assets/lib/simple-icons/icons/godotengine.svg
+++ b/assets/lib/simple-icons/icons/godotengine.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Godot Engine icon</title><path d="M9.559 0.689c-1.096 0.244-2.181 0.583-3.198 1.095 0.023 0.898 0.081 1.758 0.199 2.632-0.395 0.253-0.81 0.47-1.178 0.766-0.375 0.288-0.758 0.564-1.097 0.901-0.678-0.448-1.396-0.869-2.135-1.241-0.797 0.857-1.542 1.782-2.15 2.818 0.458 0.741 0.936 1.435 1.452 2.094h0.014v6.356c0.012 0 0.023-0 0.035 0.003l3.896 0.376c0.204 0.020 0.364 0.184 0.378 0.389l0.12 1.72 3.399 0.242 0.234-1.587c0.030-0.206 0.207-0.358 0.415-0.358h4.111c0.208 0 0.385 0.152 0.415 0.358l0.234 1.587 3.399-0.242 0.12-1.72c0.014-0.205 0.174-0.369 0.378-0.389l3.895-0.376c0.012 0 0.023-0.003 0.035-0.003v-0.507h0.002v-5.848h0.014c0.516-0.659 0.994-1.353 1.452-2.094-0.608-1.036-1.354-1.961-2.151-2.819-0.739 0.372-1.457 0.793-2.135 1.241-0.339-0.337-0.721-0.613-1.096-0.901-0.369-0.296-0.784-0.513-1.178-0.766 0.117-0.874 0.175-1.734 0.199-2.632-1.017-0.512-2.101-0.851-3.198-1.095-0.438 0.736-0.838 1.533-1.187 2.312-0.414-0.069-0.829-0.094-1.246-0.099h-0.016c-0.417 0.005-0.832 0.030-1.246 0.099-0.349-0.779-0.749-1.576-1.188-2.312l0.001-0.001zM6.476 9.994c1.297 0 2.349 1.051 2.349 2.348s-1.052 2.348-2.349 2.348c-1.296 0-2.348-1.051-2.348-2.348s1.051-2.348 2.348-2.348zM17.524 9.994c1.296 0 2.348 1.051 2.348 2.348s-1.051 2.348-2.348 2.348c-1.297 0-2.349-1.051-2.349-2.348s1.051-2.348 2.349-2.348zM6.701 10.924c-0.861 0-1.559 0.698-1.559 1.559s0.698 1.558 1.559 1.558c0.861 0 1.559-0.698 1.559-1.558s-0.697-1.559-1.559-1.559zM17.298 10.924c-0.861 0-1.558 0.698-1.558 1.559s0.697 1.558 1.558 1.558c0.861 0 1.559-0.698 1.559-1.558s-0.697-1.559-1.559-1.559zM12 11.377c0.417 0 0.757 0.308 0.757 0.687v2.162c0 0.379-0.339 0.687-0.757 0.687s-0.756-0.308-0.756-0.687v-2.162c0-0.379 0.339-0.687 0.756-0.687zM1.46 16.951c0.002 0.377 0.006 0.789 0.006 0.871 0 3.701 4.694 5.479 10.526 5.5h0.014c5.832-0.020 10.525-1.799 10.525-5.5 0-0.084 0.005-0.495 0.007-0.871l-3.502 0.338-0.121 1.729c-0.015 0.208-0.18 0.375-0.389 0.39l-4.181 0.296c-0.206 0-0.384-0.151-0.415-0.358l-0.238-1.614h-3.386l-0.238 1.614c-0.032 0.217-0.226 0.373-0.445 0.357l-4.151-0.296c-0.208-0.015-0.375-0.181-0.389-0.389l-0.12-1.729-3.504-0.337z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Godot Engine</title><path d="M9.5598.683c-1.096.244-2.1812.5831-3.1983 1.0951.023.8981.081 1.7582.199 2.6323-.395.253-.81.47-1.178.766-.375.288-.7581.564-1.0971.9011-.6781-.448-1.3962-.869-2.1352-1.2411C1.3532 5.6934.608 6.6186 0 7.6546c.458.7411.936 1.4352 1.4521 2.0942h.014v6.3565c.012 0 .023 0 .035.003l3.8963.376c.204.02.364.184.378.3891l.12 1.7201 3.3994.242.234-1.587c.03-.206.207-.358.415-.358h4.1114c.208 0 .385.152.415.358l.234 1.587 3.3993-.242.12-1.72a.4196.4196 0 01.378-.3891l3.8954-.376c.012 0 .023-.003.035-.003v-.5071h.002V9.7498h.014c.516-.659.994-1.3531 1.4521-2.0942-.608-1.036-1.3541-1.9611-2.1512-2.8192-.739.372-1.4571.793-2.1352 1.2411-.339-.337-.721-.613-1.096-.901-.369-.296-.7841-.5131-1.1781-.7661.117-.8741.175-1.7342.199-2.6323-1.0171-.512-2.1012-.851-3.1983-1.095-.438.736-.838 1.533-1.1871 2.3121-.414-.069-.829-.094-1.2461-.099h-.016c-.417.005-.832.03-1.2461.099-.349-.779-.749-1.576-1.1881-2.3121l.001-.001zM6.4765 9.9889c1.2971 0 2.3492 1.0511 2.3492 2.3482s-1.052 2.3482-2.3492 2.3482c-1.296 0-2.3482-1.051-2.3482-2.3482 0-1.297 1.0511-2.3482 2.3482-2.3482zm11.049 0c1.296 0 2.3482 1.0511 2.3482 2.3482s-1.0511 2.3482-2.3482 2.3482-2.3492-1.051-2.3492-2.3482c0-1.297 1.051-2.3482 2.3492-2.3482zm-10.824.9301c-.861 0-1.559.698-1.559 1.5591s.698 1.5582 1.559 1.5582c.8611 0 1.5592-.698 1.5592-1.5582 0-.86-.697-1.559-1.5591-1.559zm10.598 0c-.8611 0-1.5582.698-1.5582 1.5591s.697 1.5582 1.5581 1.5582c.8611 0 1.5592-.698 1.5592-1.5582 0-.86-.697-1.559-1.5592-1.559zm-5.2985.453c.417 0 .757.308.757.6871v2.1622c0 .379-.339.687-.757.687s-.756-.308-.756-.687V12.059c0-.379.339-.687.756-.687zM1.4601 16.9464c.002.377.006.789.006.871 0 3.7014 4.6944 5.4795 10.5269 5.5005h.014c5.8325-.02 10.5259-1.7991 10.5259-5.5004 0-.084.005-.495.007-.871l-3.5023.338-.121 1.729a.421.421 0 01-.389.3901l-4.1814.296a.4203.4203 0 01-.415-.358l-.238-1.6141h-3.3863l-.238 1.6141a.4192.4192 0 01-.4451.357l-4.1513-.296c-.208-.015-.375-.181-.389-.389l-.12-1.7292-3.5044-.337z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/gofundme.svg b/assets/lib/simple-icons/icons/gofundme.svg
index 99e50574..97aa24b2 100644
--- a/assets/lib/simple-icons/icons/gofundme.svg
+++ b/assets/lib/simple-icons/icons/gofundme.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GoFundMe icon</title><path d="M21.6236 4.0792l-4.2223 3.0705c-.6695.4892-.8127 1.4224-.3309 2.0922.4892.6698 1.4221.8128 2.0921.3312l4.2219-3.0706c.67-.4892.8127-1.4224.3313-2.0922a1.4883 1.4883 0 0 0-2.092-.3312zm-9.6483-1.1816c-.8278 0-1.4978.6698-1.4978 1.4976v2.5212c0 .8279.67 1.4977 1.4978 1.4977.8279 0 1.4974-.6698 1.4974-1.4977V4.3952c0-.8278-.6695-1.4976-1.4974-1.4976zM.2877 4.4103c-.4892.6698-.3387 1.603.3308 2.0922L4.841 9.573c.6695.4891 1.6029.3386 2.092-.3312.4893-.6698.3387-1.603-.3313-2.0922L2.3798 4.0792c-.6773-.4817-1.6107-.3387-2.092.331zm3.695 7.7893C6.1051 10.303 8.905 9.144 11.9753 9.144c3.0705 0 5.8702 1.159 7.9926 3.0555zm14.5556 1.6335c-1.3473 0-2.236.4433-2.8004.9926-.5948.587-1.0232 1.5058-1.0232 2.6497 0 1.302.5646 2.1445 1.0089 2.5885.843.843 1.926 1.0385 2.829 1.0385 1.4827 0 2.2804-.4586 2.7843-.9478.5043-.4892.7234-1.024.8284-1.4078H19.825c-.1056.2107-.279.3687-.4296.459-.3083.1656-.7368.1814-.797.1814-.5492 0-.8583-.1883-1.0088-.3388-.2933-.286-.4296-.7757-.4296-1.1445h5.095v-.2634c0-.7601-.12-1.9567-1.0833-2.8749-.8132-.7676-1.8358-.9325-2.6334-.9325zm.0601 1.5577c.241 0 .6845.0448 1.008.3684.1881.1882.3384.4744.399.7378h-2.77c.0455-.3085.2038-.5572.3694-.7378.2561-.2634.5797-.3684.9936-.3684zm-16.851-1.3549h2.446v.8279c.5795-.7 1.377-.9483 2.047-.9483.4893 0 .9482.1054 1.3171.3086.5044.2634.783.6397.948.9783.2786-.4892.6251-.7827.9335-.9482.4892-.2785.9632-.3387 1.4226-.3387.5038 0 1.3317.0753 1.8961.6247.61.5945.6397 1.4073.6397 1.8814v4.4553h-2.4459v-3.379c0-.7226-.0753-1.2117-.3533-1.4676-.1359-.1204-.324-.2258-.6397-.2258-.2786 0-.5044.0753-.7228.2785-.414.3988-.4437.9633-.4437 1.302v3.507H6.346v-3.3791c0-.6548-.0454-1.1816-.324-1.4676-.2106-.2258-.4891-.2784-.7374-.2784-.2634 0-.474.0451-.6695.2483-.429.414-.429 1.0687-.429 1.4977v3.3791H1.74v-6.856Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GoFundMe</title><path d="M21.6236 4.0792l-4.2223 3.0705c-.6695.4892-.8127 1.4224-.3309 2.0922.4892.6698 1.4221.8128 2.0921.3312l4.2219-3.0706c.67-.4892.8127-1.4224.3313-2.0922a1.4883 1.4883 0 0 0-2.092-.3312zm-9.6483-1.1816c-.8278 0-1.4978.6698-1.4978 1.4976v2.5212c0 .8279.67 1.4977 1.4978 1.4977.8279 0 1.4974-.6698 1.4974-1.4977V4.3952c0-.8278-.6695-1.4976-1.4974-1.4976zM.2877 4.4103c-.4892.6698-.3387 1.603.3308 2.0922L4.841 9.573c.6695.4891 1.6029.3386 2.092-.3312.4893-.6698.3387-1.603-.3313-2.0922L2.3798 4.0792c-.6773-.4817-1.6107-.3387-2.092.331zm3.695 7.7893C6.1051 10.303 8.905 9.144 11.9753 9.144c3.0705 0 5.8702 1.159 7.9926 3.0555zm14.5556 1.6335c-1.3473 0-2.236.4433-2.8004.9926-.5948.587-1.0232 1.5058-1.0232 2.6497 0 1.302.5646 2.1445 1.0089 2.5885.843.843 1.926 1.0385 2.829 1.0385 1.4827 0 2.2804-.4586 2.7843-.9478.5043-.4892.7234-1.024.8284-1.4078H19.825c-.1056.2107-.279.3687-.4296.459-.3083.1656-.7368.1814-.797.1814-.5492 0-.8583-.1883-1.0088-.3388-.2933-.286-.4296-.7757-.4296-1.1445h5.095v-.2634c0-.7601-.12-1.9567-1.0833-2.8749-.8132-.7676-1.8358-.9325-2.6334-.9325zm.0601 1.5577c.241 0 .6845.0448 1.008.3684.1881.1882.3384.4744.399.7378h-2.77c.0455-.3085.2038-.5572.3694-.7378.2561-.2634.5797-.3684.9936-.3684zm-16.851-1.3549h2.446v.8279c.5795-.7 1.377-.9483 2.047-.9483.4893 0 .9482.1054 1.3171.3086.5044.2634.783.6397.948.9783.2786-.4892.6251-.7827.9335-.9482.4892-.2785.9632-.3387 1.4226-.3387.5038 0 1.3317.0753 1.8961.6247.61.5945.6397 1.4073.6397 1.8814v4.4553h-2.4459v-3.379c0-.7226-.0753-1.2117-.3533-1.4676-.1359-.1204-.324-.2258-.6397-.2258-.2786 0-.5044.0753-.7228.2785-.414.3988-.4437.9633-.4437 1.302v3.507H6.346v-3.3791c0-.6548-.0454-1.1816-.324-1.4676-.2106-.2258-.4891-.2784-.7374-.2784-.2634 0-.474.0451-.6695.2483-.429.414-.429 1.0687-.429 1.4977v3.3791H1.74v-6.856Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/gog-dot-com.svg b/assets/lib/simple-icons/icons/gog-dot-com.svg
deleted file mode 100644
index 5a605b88..00000000
--- a/assets/lib/simple-icons/icons/gog-dot-com.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GOG.com icon</title><path d="M7.15 15.24H4.36a.4.4 0 0 0-.4.4v2c0 .21.18.4.4.4h2.8v1.32h-3.5c-.56 0-1.02-.46-1.02-1.03v-3.39c0-.56.46-1.02 1.03-1.02h3.48v1.32zM8.16 11.54c0 .58-.47 1.05-1.05 1.05H2.63v-1.35h3.78a.4.4 0 0 0 .4-.4V6.39a.4.4 0 0 0-.4-.4H4.39a.4.4 0 0 0-.41.4v2.02c0 .23.18.4.4.4H6v1.35H3.68c-.58 0-1.05-.46-1.05-1.04V5.68c0-.57.47-1.04 1.05-1.04H7.1c.58 0 1.05.47 1.05 1.04v5.86zM21.36 19.36h-1.32v-4.12h-.93a.4.4 0 0 0-.4.4v3.72h-1.33v-4.12h-.93a.4.4 0 0 0-.4.4v3.72h-1.33v-4.42c0-.56.46-1.02 1.03-1.02h5.61v5.44zM21.37 11.54c0 .58-.47 1.05-1.05 1.05h-4.48v-1.35h3.78a.4.4 0 0 0 .4-.4V6.39a.4.4 0 0 0-.4-.4h-2.03a.4.4 0 0 0-.4.4v2.02c0 .23.18.4.4.4h1.62v1.35H16.9c-.58 0-1.05-.46-1.05-1.04V5.68c0-.57.47-1.04 1.05-1.04h3.43c.58 0 1.05.47 1.05 1.04v5.86zM13.72 4.64h-3.44c-.58 0-1.04.47-1.04 1.04v3.44c0 .58.46 1.04 1.04 1.04h3.44c.57 0 1.04-.46 1.04-1.04V5.68c0-.57-.47-1.04-1.04-1.04m-.3 1.75v2.02a.4.4 0 0 1-.4.4h-2.03a.4.4 0 0 1-.4-.4V6.4c0-.22.17-.4.4-.4H13c.23 0 .4.18.4.4zM12.63 13.92H9.24c-.57 0-1.03.46-1.03 1.02v3.39c0 .57.46 1.03 1.03 1.03h3.39c.57 0 1.03-.46 1.03-1.03v-3.39c0-.56-.46-1.02-1.03-1.02m-.3 1.72v2a.4.4 0 0 1-.4.4v-.01H9.94a.4.4 0 0 1-.4-.4v-1.99c0-.22.18-.4.4-.4h2c.22 0 .4.18.4.4zM23.49 1.1a1.74 1.74 0 0 0-1.24-.52H1.75A1.74 1.74 0 0 0 0 2.33v19.34a1.74 1.74 0 0 0 1.75 1.75h20.5A1.74 1.74 0 0 0 24 21.67V2.33c0-.48-.2-.92-.51-1.24m0 20.58a1.23 1.23 0 0 1-1.24 1.24H1.75A1.23 1.23 0 0 1 .5 21.67V2.33a1.23 1.23 0 0 1 1.24-1.24h20.5a1.24 1.24 0 0 1 1.24 1.24v19.34z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/gogdotcom.svg b/assets/lib/simple-icons/icons/gogdotcom.svg
new file mode 100644
index 00000000..512e29fc
--- /dev/null
+++ b/assets/lib/simple-icons/icons/gogdotcom.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GOG.com</title><path d="M7.15 15.24H4.36a.4.4 0 0 0-.4.4v2c0 .21.18.4.4.4h2.8v1.32h-3.5c-.56 0-1.02-.46-1.02-1.03v-3.39c0-.56.46-1.02 1.03-1.02h3.48v1.32zM8.16 11.54c0 .58-.47 1.05-1.05 1.05H2.63v-1.35h3.78a.4.4 0 0 0 .4-.4V6.39a.4.4 0 0 0-.4-.4H4.39a.4.4 0 0 0-.41.4v2.02c0 .23.18.4.4.4H6v1.35H3.68c-.58 0-1.05-.46-1.05-1.04V5.68c0-.57.47-1.04 1.05-1.04H7.1c.58 0 1.05.47 1.05 1.04v5.86zM21.36 19.36h-1.32v-4.12h-.93a.4.4 0 0 0-.4.4v3.72h-1.33v-4.12h-.93a.4.4 0 0 0-.4.4v3.72h-1.33v-4.42c0-.56.46-1.02 1.03-1.02h5.61v5.44zM21.37 11.54c0 .58-.47 1.05-1.05 1.05h-4.48v-1.35h3.78a.4.4 0 0 0 .4-.4V6.39a.4.4 0 0 0-.4-.4h-2.03a.4.4 0 0 0-.4.4v2.02c0 .23.18.4.4.4h1.62v1.35H16.9c-.58 0-1.05-.46-1.05-1.04V5.68c0-.57.47-1.04 1.05-1.04h3.43c.58 0 1.05.47 1.05 1.04v5.86zM13.72 4.64h-3.44c-.58 0-1.04.47-1.04 1.04v3.44c0 .58.46 1.04 1.04 1.04h3.44c.57 0 1.04-.46 1.04-1.04V5.68c0-.57-.47-1.04-1.04-1.04m-.3 1.75v2.02a.4.4 0 0 1-.4.4h-2.03a.4.4 0 0 1-.4-.4V6.4c0-.22.17-.4.4-.4H13c.23 0 .4.18.4.4zM12.63 13.92H9.24c-.57 0-1.03.46-1.03 1.02v3.39c0 .57.46 1.03 1.03 1.03h3.39c.57 0 1.03-.46 1.03-1.03v-3.39c0-.56-.46-1.02-1.03-1.02m-.3 1.72v2a.4.4 0 0 1-.4.4v-.01H9.94a.4.4 0 0 1-.4-.4v-1.99c0-.22.18-.4.4-.4h2c.22 0 .4.18.4.4zM23.49 1.1a1.74 1.74 0 0 0-1.24-.52H1.75A1.74 1.74 0 0 0 0 2.33v19.34a1.74 1.74 0 0 0 1.75 1.75h20.5A1.74 1.74 0 0 0 24 21.67V2.33c0-.48-.2-.92-.51-1.24m0 20.58a1.23 1.23 0 0 1-1.24 1.24H1.75A1.23 1.23 0 0 1 .5 21.67V2.33a1.23 1.23 0 0 1 1.24-1.24h20.5a1.24 1.24 0 0 1 1.24 1.24v19.34z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/goland.svg b/assets/lib/simple-icons/icons/goland.svg
new file mode 100644
index 00000000..b645be9f
--- /dev/null
+++ b/assets/lib/simple-icons/icons/goland.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GoLand</title><path d="M0 0v24h24V0Zm6.764 3a5.448 5.448 0 0 1 3.892 1.356L9.284 6.012A3.652 3.652 0 0 0 6.696 5c-1.6 0-2.844 1.4-2.844 3.08v.028c0 1.812 1.244 3.14 3 3.14a3.468 3.468 0 0 0 2.048-.596V9.228H6.708v-1.88H11v4.296a6.428 6.428 0 0 1-4.228 1.572c-3.076 0-5.196-2.164-5.196-5.092v-.028A5.08 5.08 0 0 1 6.764 3Zm10.432 0c3.052 0 5.244 2.276 5.244 5.088v.028a5.116 5.116 0 0 1-5.272 5.12c-3.056-.02-5.248-2.296-5.248-5.112v-.028A5.116 5.116 0 0 1 17.196 3Zm-.028 2A2.96 2.96 0 0 0 14.2 8.068v.028a3.008 3.008 0 0 0 3 3.112 2.96 2.96 0 0 0 2.964-3.084v-.028A3.004 3.004 0 0 0 17.168 5ZM2.252 19.5h9V21h-9z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/goldenline.svg b/assets/lib/simple-icons/icons/goldenline.svg
index df920ddf..ce6f602d 100644
--- a/assets/lib/simple-icons/icons/goldenline.svg
+++ b/assets/lib/simple-icons/icons/goldenline.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GoldenLine icon</title><path d="M16.377 21.658c0 1.225-.989 2.215-2.212 2.215-1.224 0-2.217-.99-2.217-2.215 0-1.223.993-2.215 2.217-2.215 1.223 0 2.213.993 2.212 2.215zm-4.715-.172L6.47 22.7s-.287.08-.392-.215c-.06-.181.091-.398.091-.398l5.213-8.514s.267-.402.77-.549c.418-.121.872.16.872.16l8.351 5.253s.362.147.348.438c-.015.293-.333.343-.333.343l-5.04 1.178c-.426-.744-1.23-1.244-2.156-1.244-1.32 0-2.413 1.032-2.504 2.335h-.028zM3.898 7.297l1.513-5.263s.072-.303.381-.242c.186.031.303.273.303.273l4.889 8.698s.223.425.106.941c-.099.425-.567.683-.567.683L1.864 17.11s-.307.243-.547.084c-.242-.163-.136-.463-.136-.463l1.472-5.116c1.177-.206 2.071-1.233 2.071-2.47 0-.738-.319-1.396-.826-1.859v.011zm.532 1.858c0 1.225-.989 2.218-2.214 2.218C.995 11.373 0 10.38 0 9.155c0-1.221.995-2.213 2.216-2.213 1.225 0 2.217.992 2.217 2.213H4.43zm15.666-1.734l3.81 4.18s.211.212.003.445c-.124.141-.394.111-.394.111l-9.974-.395s-.478-.035-.853-.402c-.31-.303-.282-.838-.282-.838l.51-9.852s-.05-.389.212-.511c.27-.122.467.129.467.129l3.318 3.628c-.188.35-.293.744-.293 1.17 0 1.381 1.123 2.504 2.509 2.504.341 0 .667-.075.964-.197l.003.028zm1.25-2.317c0 1.229-.986 2.217-2.212 2.217-1.224 0-2.217-.987-2.217-2.217 0-1.215.993-2.201 2.217-2.201 1.223 0 2.213 1.002 2.213 2.217l-.001-.016z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GoldenLine</title><path d="M11.997 24a11.995 11.995 0 0 0 11.949-13.04h-6.781v2.943h1.226a6.667 6.667 0 1 1-.114-4.156h5.509A11.995 11.995 0 1 0 12 23.991z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/goodreads.svg b/assets/lib/simple-icons/icons/goodreads.svg
index 9866db05..d6208d07 100644
--- a/assets/lib/simple-icons/icons/goodreads.svg
+++ b/assets/lib/simple-icons/icons/goodreads.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Goodreads icon</title><path d="M19.525 15.977V.49h-2.059v2.906h-.064c-.211-.455-.481-.891-.842-1.307-.36-.412-.767-.777-1.232-1.094-.466-.314-.962-.561-1.519-.736C13.256.09 12.669 0 12.038 0c-1.21 0-2.3.225-3.246.67-.947.447-1.743 1.057-2.385 1.83-.642.773-1.133 1.676-1.47 2.711-.336 1.037-.506 2.129-.506 3.283 0 1.199.141 2.326.425 3.382.286 1.057.737 1.976 1.368 2.762.631.78 1.412 1.397 2.375 1.833.961.436 2.119.661 3.471.661 1.248 0 2.33-.315 3.262-.946s1.638-1.473 2.119-2.525h.061v2.284c0 2.044-.421 3.607-1.264 4.705-.84 1.081-2.224 1.638-4.146 1.638-.572 0-1.128-.061-1.669-.181-.542-.12-1.036-.315-1.487-.57-.437-.271-.827-.601-1.143-1.038-.316-.435-.526-.961-.632-1.593H5.064c.067.887.315 1.654.737 2.3.424.646.961 1.172 1.602 1.593.641.406 1.367.706 2.172.902.811.194 1.639.3 2.494.3 1.383 0 2.541-.195 3.486-.555.947-.376 1.714-.902 2.301-1.608.601-.708 1.021-1.549 1.293-2.556.27-1.007.42-2.134.42-3.367l-.044.062zm-7.484-.557c-.955 0-1.784-.189-2.479-.571-.697-.38-1.277-.882-1.732-1.503-.467-.621-.797-1.332-1.022-2.139s-.332-1.633-.332-2.484c0-.871.105-1.725.301-2.563.21-.84.54-1.587.992-2.24.451-.652 1.037-1.182 1.728-1.584s1.533-.605 2.51-.605 1.803.209 2.495.621c.676.415 1.247.959 1.683 1.634.436.677.751 1.429.947 2.255.195.826.285 1.656.285 2.482 0 .852-.12 1.678-.345 2.484-.226.807-.572 1.518-1.038 2.139-.465.621-1.021 1.123-1.698 1.503-.676.382-1.458.571-2.359.571h.064z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Goodreads</title><path d="M11.43 23.995c-3.608-.208-6.274-2.077-6.448-5.078.695.007 1.375-.013 2.07-.006.224 1.342 1.065 2.43 2.683 3.026 1.583.496 3.737.46 5.082-.174 1.351-.636 2.145-1.822 2.503-3.577.212-1.042.236-1.734.231-2.92l-.005-1.631h-.059c-1.245 2.564-3.315 3.53-5.59 3.475-5.74-.054-7.68-4.534-7.528-8.606.01-5.241 3.22-8.537 7.557-8.495 2.354-.14 4.605 1.362 5.554 3.37l.059.002.002-2.918 2.099.004-.002 15.717c-.193 7.04-4.376 7.89-8.209 7.811zm6.1-15.633c-.096-3.26-1.601-6.62-5.503-6.645-3.954-.017-5.625 3.592-5.604 6.85-.013 3.439 1.643 6.305 4.703 6.762 4.532.591 6.551-3.411 6.404-6.967z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/google.svg b/assets/lib/simple-icons/icons/google.svg
index f394f811..2eaf9155 100644
--- a/assets/lib/simple-icons/icons/google.svg
+++ b/assets/lib/simple-icons/icons/google.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Google icon</title><path d="M12.24 10.285V14.4h6.806c-.275 1.765-2.056 5.174-6.806 5.174-4.095 0-7.439-3.389-7.439-7.574s3.345-7.574 7.439-7.574c2.33 0 3.891.989 4.785 1.849l3.254-3.138C18.189 1.186 15.479 0 12.24 0c-6.635 0-12 5.365-12 12s5.365 12 12 12c6.926 0 11.52-4.869 11.52-11.726 0-.788-.085-1.39-.189-1.989H12.24z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Google</title><path d="M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/googleads.svg b/assets/lib/simple-icons/icons/googleads.svg
index 930b6c54..fc695ad0 100644
--- a/assets/lib/simple-icons/icons/googleads.svg
+++ b/assets/lib/simple-icons/icons/googleads.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Google Ads icon</title><path d="M11.994 1.046h.022c.899.002 1.73.301 2.398.805l.003.001.001.001a4 4 0 011.116 1.299l4.467 7.769.025.065 3.419 5.927A3.98 3.98 0 0124 18.948c0 .565-.117 1.104-.329 1.592l.006.016a3.93 3.93 0 01-.634.993 3.97 3.97 0 01-1.045.868 3.984 3.984 0 01-1.946.537h-.068a3.984 3.984 0 01-2.398-.805l-.003-.001v-.001h-.001a4 4 0 01-1.116-1.299l-4.467-7.769-.025-.065-3.419-5.927-.005-.009-.011-.019A3.981 3.981 0 018 5.052c0-.424.066-.832.188-1.215v-.001l.008-.025.01-.03c.052-.157.117-.337.117-.337.158-.358.371-.689.626-.984l.063-.072.014-.015.002-.003.001-.001.002-.002.009-.01.006-.007c.27-.296.59-.557.956-.767a3.984 3.984 0 011.946-.537h.046zM4.006 22.954h-.058a3.984 3.984 0 01-1.946-.537 3.97 3.97 0 01-1.045-.868 3.93 3.93 0 01-.634-.993l.006-.016A3.988 3.988 0 010 18.948c0-.743.202-1.439.555-2.035l3.419-5.927.025-.065 3.039-5.286c.076.648.276 1.281.596 1.856l.057.1 3.377 5.854-.003-.01.067.142.291.507-3.889 6.764a4 4 0 01-1.116 1.299h-.001v.001l-.003.001a3.984 3.984 0 01-2.398.805h-.01z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Google Ads</title><path d="M3.9998 22.9291C1.7908 22.9291 0 21.1383 0 18.9293s1.7908-3.9998 3.9998-3.9998 3.9998 1.7908 3.9998 3.9998-1.7908 3.9998-3.9998 3.9998zm19.4643-6.0004L15.4632 3.072C14.3586 1.1587 11.9121.5028 9.9988 1.6074S7.4295 5.1585 8.5341 7.0718l8.0009 13.8567c1.1046 1.9133 3.5511 2.5679 5.4644 1.4646 1.9134-1.1046 2.568-3.5511 1.4647-5.4644zM7.5137 4.8438L1.5645 15.1484A4.5 4.5 0 0 1 4 14.4297c2.5597-.0075 4.6248 2.1585 4.4941 4.7148l3.2168-5.5723-3.6094-6.25c-.4499-.7793-.6322-1.6394-.5878-2.4784z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/googleadsense.svg b/assets/lib/simple-icons/icons/googleadsense.svg
index 04404c7e..fcdad31b 100644
--- a/assets/lib/simple-icons/icons/googleadsense.svg
+++ b/assets/lib/simple-icons/icons/googleadsense.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Google AdSense icon</title><path d="M11.842 1.375a3.958 3.958 0 0 0-.352.01 3.935 3.935 0 0 0-3.133 1.933 4.233 4.233 0 0 0-.134.254l-3.67 6.28a4.63 4.63 0 0 0-.227.386l-2.263 3.907a4.847 4.847 0 0 1 2.468-.36 4.765 4.765 0 0 1 1.858.617A4.981 4.981 0 0 1 8.81 18.08l2.306-3.969a3.753 3.753 0 0 0 .227-.384l3.67-6.282a3.86 3.86 0 0 0-1.284-5.549 3.958 3.958 0 0 0-1.888-.521zm8.36 6.553a3.894 3.894 0 0 0-3.458 1.937l-3.889 6.719a3.874 3.874 0 0 0 1.424 5.3 3.894 3.894 0 0 0 5.313-1.42l3.888-6.718a3.875 3.875 0 0 0-1.423-5.299 3.894 3.894 0 0 0-1.856-.52zm-16.384 6.83A3.987 3.987 0 0 0 .721 16.46l-.065.11c-.043.066-.096.123-.136.193-1.08 1.887-.418 4.253 1.453 5.343 1.87 1.09 4.305.395 5.384-1.494.028-.047.04-.098.065-.146l.004-.006c.96-1.86.278-4.13-1.543-5.191a3.792 3.792 0 0 0-1.666-.51 3.987 3.987 0 0 0-.399-.002Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Google AdSense</title><path d="M22.056 8.447a3.894 3.894 0 0 0-5.313 1.419l-3.889 6.72a3.874 3.874 0 0 0 1.415 5.293l.01.005a3.894 3.894 0 0 0 5.312-1.42l3.889-6.718a3.875 3.875 0 0 0-1.416-5.294l-.008-.005m-14.7 12.168c-1.08 1.888-3.514 2.583-5.384 1.493-1.87-1.09-2.533-3.455-1.453-5.343s3.494-2.586 5.365-1.496c1.87 1.09 2.554 3.457 1.474 5.344m4.131-19.228a3.935 3.935 0 0 0-3.267 2.189l-3.67 6.279a4.638 4.638 0 0 0-.227.387l-2.746 4.737c1.345-.86 3.09-.993 4.55-.143a4.456 4.456 0 0 1 2.22 4.041l2.77-4.763c.082-.124.157-.252.224-.385l3.67-6.281a3.86 3.86 0 0 0-1.283-5.55 3.958 3.958 0 0 0-2.24-.511z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/googleanalytics.svg b/assets/lib/simple-icons/icons/googleanalytics.svg
index 171ea24e..101c015a 100644
--- a/assets/lib/simple-icons/icons/googleanalytics.svg
+++ b/assets/lib/simple-icons/icons/googleanalytics.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Google Analytics icon</title><path d="M7.36 21.14A2.86 2.86 0 014.5 24a2.86 2.86 0 01-2.86-2.86 2.86 2.86 0 012.86-2.87 2.86 2.86 0 012.86 2.87zM9.14 12v8.86C9.14 22.88 10.53 24 12 24c1.36 0 2.86-.95 2.86-3.14v-8.72c0-1.85-1.36-3-2.86-3A2.91 2.91 0 009.14 12zm7.5-9.14v18c0 2.02 1.39 3.14 2.86 3.14 1.36 0 2.86-.95 2.86-3.14V3c0-1.85-1.36-3-2.86-3a2.91 2.91 0 00-2.86 2.86Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Google Analytics</title><path d="M22.84 2.9982v17.9987c.0086 1.6473-1.3197 2.9897-2.967 2.9984a2.9808 2.9808 0 01-.3677-.0208c-1.528-.226-2.6477-1.5558-2.6105-3.1V3.1204c-.0369-1.5458 1.0856-2.8762 2.6157-3.1 1.6361-.1915 3.1178.9796 3.3093 2.6158.014.1201.0208.241.0202.3619zM4.1326 18.0548c-1.6417 0-2.9726 1.331-2.9726 2.9726C1.16 22.6691 2.4909 24 4.1326 24s2.9726-1.3309 2.9726-2.9726-1.331-2.9726-2.9726-2.9726zm7.8728-9.0098c-.0171 0-.0342 0-.0513.0003-1.6495.0904-2.9293 1.474-2.891 3.1256v7.9846c0 2.167.9535 3.4825 2.3505 3.763 1.6118.3266 3.1832-.7152 3.5098-2.327.04-.1974.06-.3983.0593-.5998v-8.9585c.003-1.6474-1.33-2.9852-2.9773-2.9882z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/googleassistant.svg b/assets/lib/simple-icons/icons/googleassistant.svg
index b5d4fcd4..f359adce 100644
--- a/assets/lib/simple-icons/icons/googleassistant.svg
+++ b/assets/lib/simple-icons/icons/googleassistant.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Google Assistant icon</title><path d="M6.545 1.03C2.93 1.03 0 3.975 0 7.61c0 3.635 2.93 6.582 6.545 6.582 3.615 0 6.545-2.947 6.545-6.582S10.16 1.03 6.545 1.03zm15.818 4.388a1.64 1.64 0 00-1.636 1.644c0 .909.733 1.647 1.636 1.647.904 0 1.637-.738 1.637-1.646a1.64 1.64 0 00-1.637-1.645zm-4.91 2.193a3.28 3.28 0 00-3.271 3.291 3.28 3.28 0 003.271 3.291 3.282 3.282 0 003.274-3.29 3.282 3.282 0 00-3.274-3.292zm0 7.68c-2.109 0-3.818 1.72-3.818 3.84s1.71 3.84 3.818 3.84c2.109 0 3.818-1.72 3.818-3.84s-1.71-3.84-3.818-3.84Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Google Assistant</title><path d="M22.365 8.729c.9 0 1.635-.735 1.635-1.635s-.735-1.636-1.635-1.636-1.636.735-1.636 1.636.723 1.635 1.636 1.635m-4.907 5.452a3.27 3.27 0 1 0 0-6.542 3.27 3.27 0 0 0 0 6.542m0 8.722c2.105 0 3.816-1.711 3.816-3.829s-1.711-3.816-3.829-3.816a3.82 3.82 0 0 0-3.816 3.816 3.825 3.825 0 0 0 3.829 3.83M6.542 14.18a6.542 6.542 0 1 0 0-13.084 6.542 6.542 0 1 0 0 13.084"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/googlecalendar.svg b/assets/lib/simple-icons/icons/googlecalendar.svg
index 8e8d488a..6049d100 100644
--- a/assets/lib/simple-icons/icons/googlecalendar.svg
+++ b/assets/lib/simple-icons/icons/googlecalendar.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Google Calendar icon</title><path d="M1.84 4.15c-.993 0-1.8.787-1.84 1.772.003.058.004.116.012.172l1.19 7.597h6.384v-.43h.873c1.145 0 2.083-.567 2.083-1.793 0-1.227-.659-1.835-1.827-1.835-1.213 0-1.861.79-1.88 1.75h-1.25c.024-1.643 1.411-2.77 3.132-2.77 1.932 0 3.078 1.096 3.078 2.882 0 1.138-.869 1.895-1.563 2.196h6.079v-3.468l-2.619.873V9.922l3.647-1.31h.203v5.08h5.256l1.19-7.598c.008-.057.01-.115.012-.172a1.842 1.842 0 0 0-1.84-1.772zm-.615 9.696l-.611 7.877a1.846 1.846 0 0 0 1.843 1.974h19.087a1.846 1.846 0 0 0 1.842-1.974l-.611-7.877h-5.233v5.233H16.31v-5.233h-5.806c.635.277 1.443.908 1.44 2.255 0 1.95-1.457 2.98-3.224 2.98-1.53 0-3.176-.815-3.23-2.771h1.258c.028 1.214.955 1.758 1.972 1.758 1.168 0 1.976-.613 1.976-1.94 0-1.014-.554-1.888-2.238-1.888h-.873v-.394zM3.076.304c-1.02 0-1.846.826-1.846 1.846l.006 1.957a1.83 1.83 0 0 1 .61-.112h20.308c.217 0 .422.045.616.113V2.15c0-1.02-.826-1.846-1.846-1.846zm3.078.922a.923.923 0 0 1 .922.924.923.923 0 0 1-.922.921.923.923 0 0 1-.924-.921.923.923 0 0 1 .924-.924zm11.692 0a.923.923 0 0 1 .924.924.923.923 0 0 1-.924.921.923.923 0 0 1-.922-.921.923.923 0 0 1 .922-.924Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Google Calendar</title><path d="M18.316 5.684H24v12.632h-5.684V5.684zM5.684 24h12.632v-5.684H5.684V24zM18.316 5.684V0H1.895A1.894 1.894 0 0 0 0 1.895v16.421h5.684V5.684h12.632zm-7.207 6.25v-.065c.272-.144.5-.349.687-.617s.279-.595.279-.982c0-.379-.099-.72-.3-1.025a2.05 2.05 0 0 0-.832-.714 2.703 2.703 0 0 0-1.197-.257c-.6 0-1.094.156-1.481.467-.386.311-.65.671-.793 1.078l1.085.452c.086-.249.224-.461.413-.633.189-.172.445-.257.767-.257.33 0 .602.088.816.264a.86.86 0 0 1 .322.703c0 .33-.12.589-.36.778-.24.19-.535.284-.886.284h-.567v1.085h.633c.407 0 .748.109 1.02.327.272.218.407.499.407.843 0 .336-.129.614-.387.832s-.565.327-.924.327c-.351 0-.651-.103-.897-.311-.248-.208-.422-.502-.521-.881l-1.096.452c.178.616.505 1.082.977 1.401.472.319.984.478 1.538.477a2.84 2.84 0 0 0 1.293-.291c.382-.193.684-.458.902-.794.218-.336.327-.72.327-1.149 0-.429-.115-.797-.344-1.105a2.067 2.067 0 0 0-.881-.689zm2.093-1.931l.602.913L15 10.045v5.744h1.187V8.446h-.827l-2.158 1.557zM22.105 0h-3.289v5.184H24V1.895A1.894 1.894 0 0 0 22.105 0zm-3.289 23.5l4.684-4.684h-4.684V23.5zM0 22.105C0 23.152.848 24 1.895 24h3.289v-5.184H0v3.289z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/googlecardboard.svg b/assets/lib/simple-icons/icons/googlecardboard.svg
index e82dbd82..6c87e14a 100644
--- a/assets/lib/simple-icons/icons/googlecardboard.svg
+++ b/assets/lib/simple-icons/icons/googlecardboard.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Google Cardboard icon</title><path d="M23.234 4.932a2.959 2.959 0 00-2.18-.977H3.083c-.827 0-1.58.375-2.18.977C.3 5.534 0 6.361 0 7.188v9.624c0 .827.3 1.654.902 2.256a2.814 2.814 0 002.18.977H7.37a3.22 3.22 0 001.654-.45c.451-.301.902-.753 1.128-1.279l1.203-2.33c.15-.302.376-.452.677-.452.3 0 .601.15.676.451l1.203 2.331c.226.526.677.902 1.128 1.203.451.3 1.053.451 1.58.451h4.285c.827 0 1.58-.376 2.18-.977.602-.602.903-1.429.903-2.256v-9.55c.075-.826-.15-1.653-.752-2.255zm-16.617 9.55c-1.354 0-2.406-1.129-2.406-2.482 0-1.353 1.128-2.406 2.481-2.406s2.406 1.128 2.406 2.481c-.075 1.278-1.128 2.406-2.481 2.406zm10.978 0c-1.354 0-2.482-1.053-2.482-2.407 0-1.353 1.053-2.481 2.407-2.481C18.873 9.594 20 10.647 20 12c0 1.353-1.052 2.481-2.405 2.481Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Google Cardboard</title><path d="M3.087 4.235a3.07 3.07 0 0 0-2.183.91A3.133 3.133 0 0 0 0 7.35v9.296a3.13 3.13 0 0 0 .903 2.206 3.066 3.066 0 0 0 2.184.913h4.28a3.078 3.078 0 0 0 2.713-1.645l1.209-2.276a.785.785 0 0 1 .703-.42.783.783 0 0 1 .701.42l1.21 2.276a3.08 3.08 0 0 0 2.718 1.645h4.292a3.07 3.07 0 0 0 2.184-.913A3.13 3.13 0 0 0 24 16.646V7.35c0-.825-.324-1.618-.904-2.205a3.065 3.065 0 0 0-2.183-.91zm3.495 5.656c1.138 0 2.06.937 2.06 2.092 0 1.157-.922 2.093-2.06 2.093-1.139 0-2.061-.936-2.061-2.093 0-1.155.922-2.092 2.06-2.092zm10.832 0c1.139 0 2.061.937 2.061 2.092 0 1.157-.922 2.093-2.06 2.093-1.14 0-2.063-.936-2.063-2.093 0-1.155.923-2.092 2.062-2.092z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/googlecast.svg b/assets/lib/simple-icons/icons/googlecast.svg
deleted file mode 100644
index e422cb6a..00000000
--- a/assets/lib/simple-icons/icons/googlecast.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Google Cast icon</title><path d="M0 18.5455v3.2727h3.2727c0-1.811-1.4618-3.2727-3.2727-3.2727zm0-4.3637v2.1818c3.011 0 5.4545 2.4437 5.4545 5.4546h2.1819c0-4.2218-3.4146-7.6364-7.6364-7.6364zm0-4.3636V12c5.4218 0 9.8182 4.3964 9.8182 9.8182H12c0-6.6327-5.3782-12-12-12zm21.8182-7.6364H2.1818C.9818 2.1818 0 3.1636 0 4.3636v3.2728h2.1818V4.3636h19.6364v15.2728h-7.6364v2.1818h7.6364c1.2 0 2.1818-.9818 2.1818-2.1818V4.3636c0-1.2-.9818-2.1818-2.1818-2.1818Z"/></svg>
diff --git a/assets/lib/simple-icons/icons/googlechat.svg b/assets/lib/simple-icons/icons/googlechat.svg
new file mode 100644
index 00000000..bd1c7b60
--- /dev/null
+++ b/assets/lib/simple-icons/icons/googlechat.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Google Chat</title><path d="M7.533 0a1.816 1.816 0 0 0-1.816 1.816v2.832h11.178c1.043 0 1.888.855 1.888 1.91v8.204h2.906a1.816 1.816 0 0 0 1.817-1.817V1.816A1.816 1.816 0 0 0 21.689 0H7.533zM2.311 5.148A1.816 1.816 0 0 0 .494 6.965V23.09c0 .81.979 1.215 1.55.642l3.749-3.748h10.674a1.816 1.816 0 0 0 1.816-1.816V6.965a1.816 1.816 0 0 0-1.816-1.817H2.31Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/googlechrome.svg b/assets/lib/simple-icons/icons/googlechrome.svg
index dd142ed1..919ac2a1 100644
--- a/assets/lib/simple-icons/icons/googlechrome.svg
+++ b/assets/lib/simple-icons/icons/googlechrome.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Google Chrome icon</title><path d="M16.214 8.69l6.715-1.679A12.027 12.027 0 0 1 24 11.972C24 18.57 18.569 24 11.968 24c-.302 0-.605-.011-.907-.034l4.905-8.347c.356-.376.655-.803.881-1.271a5.451 5.451 0 0 0-.043-4.748 5.156 5.156 0 0 0-.59-.91zm-3.24 8.575l-2.121 6.682C4.738 23.345 0 18.14 0 11.977 0 9.592.709 7.26 2.038 5.279l4.834 8.377c.18.539 1.119 2.581 3.067 3.327.998.382 2.041.481 3.035.282zM11.973 7.62c-2.006.019-3.878 1.544-4.281 3.512a4.478 4.478 0 0 0 1.237 4.032c1.214 1.186 3.14 1.578 4.734.927 1.408-.576 2.47-1.927 2.691-3.431.272-1.856-.788-3.832-2.495-4.629a4.413 4.413 0 0 0-1.886-.411zM7.046 9.962L2.259 4.963A12.043 12.043 0 0 1 11.997 0c4.56 0 8.744 2.592 10.774 6.675H12.558c-1.811-.125-3.288.52-4.265 1.453a5.345 5.345 0 0 0-1.247 1.834z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Google Chrome</title><path d="M12 0C8.21 0 4.831 1.757 2.632 4.501l3.953 6.848A5.454 5.454 0 0 1 12 6.545h10.691A12 12 0 0 0 12 0zM1.931 5.47A11.943 11.943 0 0 0 0 12c0 6.012 4.42 10.991 10.189 11.864l3.953-6.847a5.45 5.45 0 0 1-6.865-2.29zm13.342 2.166a5.446 5.446 0 0 1 1.45 7.09l.002.001h-.002l-5.344 9.257c.206.01.413.016.621.016 6.627 0 12-5.373 12-12 0-1.54-.29-3.011-.818-4.364zM12 16.364a4.364 4.364 0 1 1 0-8.728 4.364 4.364 0 0 1 0 8.728Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/googleclassroom.svg b/assets/lib/simple-icons/icons/googleclassroom.svg
index 86d38820..9678f11f 100644
--- a/assets/lib/simple-icons/icons/googleclassroom.svg
+++ b/assets/lib/simple-icons/icons/googleclassroom.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Google Classroom icon</title><path d="M1.6367 1.6367C.7322 1.6367 0 2.369 0 3.2734v17.4532c0 .9045.7322 1.6367 1.6367 1.6367h20.7266c.9045 0 1.6367-.7322 1.6367-1.6367V3.2734c0-.9045-.7322-1.6367-1.6367-1.6367H1.6367zm.545 2.1817h19.6367v16.3632h-2.7266v-1.0898h-4.9102v1.0898h-12V3.8184zM12 8.1816c-.9046 0-1.6367.7322-1.6367 1.6368 0 .9045.7321 1.6367 1.6367 1.6367.9046 0 1.6367-.7322 1.6367-1.6367 0-.9046-.7321-1.6368-1.6367-1.6368zm-4.3633 1.9102c-.6773 0-1.2285.5493-1.2285 1.2266 0 .6772.5512 1.2265 1.2285 1.2265.6773 0 1.2266-.5493 1.2266-1.2265 0-.6773-.5493-1.2266-1.2266-1.2266zm8.7266 0c-.6773 0-1.2266.5493-1.2266 1.2266 0 .6772.5493 1.2265 1.2266 1.2265.6773 0 1.2285-.5493 1.2285-1.2265 0-.6773-.5512-1.2266-1.2285-1.2266zM12 12.5449c-1.179 0-2.4128.4012-3.1484 1.0059-.384-.1198-.8043-.1875-1.2149-.1875-1.3136 0-2.7285.695-2.7285 1.5586v.8965h14.1836v-.8965c0-.8637-1.4149-1.5586-2.7285-1.5586-.4106 0-.831.0677-1.2149.1875-.7356-.6047-1.9694-1.0059-3.1484-1.0059Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Google Classroom</title><path d="M1.6367 1.6367C.7322 1.6367 0 2.369 0 3.2734v17.4532c0 .9045.7322 1.6367 1.6367 1.6367h20.7266c.9045 0 1.6367-.7322 1.6367-1.6367V3.2734c0-.9045-.7322-1.6367-1.6367-1.6367H1.6367zm.545 2.1817h19.6367v16.3632h-2.7266v-1.0898h-4.9102v1.0898h-12V3.8184zM12 8.1816c-.9046 0-1.6367.7322-1.6367 1.6368 0 .9045.7321 1.6367 1.6367 1.6367.9046 0 1.6367-.7322 1.6367-1.6367 0-.9046-.7321-1.6368-1.6367-1.6368zm-4.3633 1.9102c-.6773 0-1.2285.5493-1.2285 1.2266 0 .6772.5512 1.2265 1.2285 1.2265.6773 0 1.2266-.5493 1.2266-1.2265 0-.6773-.5493-1.2266-1.2266-1.2266zm8.7266 0c-.6773 0-1.2266.5493-1.2266 1.2266 0 .6772.5493 1.2265 1.2266 1.2265.6773 0 1.2285-.5493 1.2285-1.2265 0-.6773-.5512-1.2266-1.2285-1.2266zM12 12.5449c-1.179 0-2.4128.4012-3.1484 1.0059-.384-.1198-.8043-.1875-1.2149-.1875-1.3136 0-2.7285.695-2.7285 1.5586v.8965h14.1836v-.8965c0-.8637-1.4149-1.5586-2.7285-1.5586-.4106 0-.831.0677-1.2149.1875-.7356-.6047-1.9694-1.0059-3.1484-1.0059Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/googlecloud.svg b/assets/lib/simple-icons/icons/googlecloud.svg
index 17d6a4f6..b7b4dcc0 100644
--- a/assets/lib/simple-icons/icons/googlecloud.svg
+++ b/assets/lib/simple-icons/icons/googlecloud.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Google Cloud icon</title><path d="M12.19 2.38a9.344 9.344 0 0 0-9.234 6.893c.053-.02-.055.013 0 0-3.875 2.551-3.922 8.11-.247 10.941l.006-.007-.007.03a6.717 6.717 0 0 0 4.077 1.356h5.173l.03.03h5.192c6.687.053 9.376-8.605 3.835-12.35a9.365 9.365 0 0 0-2.821-4.552l-.043.043.006-.05A9.344 9.344 0 0 0 12.19 2.38zm-.358 4.146c1.244-.04 2.518.368 3.486 1.15a5.186 5.186 0 0 1 1.862 4.078v.518c3.53-.07 3.53 5.262 0 5.193h-5.193l-.008.009v-.04H6.785a2.59 2.59 0 0 1-1.067-.23h.001a2.597 2.597 0 1 1 3.437-3.437l3.013-3.012A6.747 6.747 0 0 0 8.11 8.24c.018-.01.04-.026.054-.023a5.186 5.186 0 0 1 3.67-1.69z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Google Cloud</title><path d="M12.19 2.38a9.344 9.344 0 0 0-9.234 6.893c.053-.02-.055.013 0 0-3.875 2.551-3.922 8.11-.247 10.941l.006-.007-.007.03a6.717 6.717 0 0 0 4.077 1.356h5.173l.03.03h5.192c6.687.053 9.376-8.605 3.835-12.35a9.365 9.365 0 0 0-2.821-4.552l-.043.043.006-.05A9.344 9.344 0 0 0 12.19 2.38zm-.358 4.146c1.244-.04 2.518.368 3.486 1.15a5.186 5.186 0 0 1 1.862 4.078v.518c3.53-.07 3.53 5.262 0 5.193h-5.193l-.008.009v-.04H6.785a2.59 2.59 0 0 1-1.067-.23h.001a2.597 2.597 0 1 1 3.437-3.437l3.013-3.012A6.747 6.747 0 0 0 8.11 8.24c.018-.01.04-.026.054-.023a5.186 5.186 0 0 1 3.67-1.69z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/googlecolab.svg b/assets/lib/simple-icons/icons/googlecolab.svg
new file mode 100644
index 00000000..1870fe2f
--- /dev/null
+++ b/assets/lib/simple-icons/icons/googlecolab.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Google Colab</title><path d="M16.9414 4.9757a7.033 7.033 0 0 0-4.9308 2.0646 7.033 7.033 0 0 0-.1232 9.8068l2.395-2.395a3.6455 3.6455 0 0 1 5.1497-5.1478l2.397-2.3989a7.033 7.033 0 0 0-4.8877-1.9297zM7.07 4.9855a7.033 7.033 0 0 0-4.8878 1.9316l2.3911 2.3911a3.6434 3.6434 0 0 1 5.0227.1271l1.7341-2.9737-.0997-.0802A7.033 7.033 0 0 0 7.07 4.9855zm15.0093 2.1721l-2.3892 2.3911a3.6455 3.6455 0 0 1-5.1497 5.1497l-2.4067 2.4068a7.0362 7.0362 0 0 0 9.9456-9.9476zM1.932 7.1674a7.033 7.033 0 0 0-.002 9.6816l2.397-2.397a3.6434 3.6434 0 0 1-.004-4.8916zm7.664 7.4235c-1.38 1.3816-3.5863 1.411-5.0168.1134l-2.397 2.395c2.4693 2.3328 6.263 2.5753 9.0072.5455l.1368-.1115z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/googledomains.svg b/assets/lib/simple-icons/icons/googledomains.svg
new file mode 100644
index 00000000..a1a6b691
--- /dev/null
+++ b/assets/lib/simple-icons/icons/googledomains.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Google Domains</title><path d="M17.29.817c-.811 0-1.388.469-1.713 1.208L13.491 7.01c-3.121-3.072-8.145-3.015-11.207.102-3.066 3.12-3.048 8.134.072 11.218a7.991 7.991 0 0 0 5.467 2.29l-.597 1.444a.942.942 0 0 0-.054.325c0 .45.379.811.83.793h5.717c.794 0 1.515-.468 1.84-1.208l8.369-20.003A.708.708 0 0 0 24 1.647a.827.827 0 0 0-.83-.83zm-3.787 6.205a7.94 7.94 0 0 1 2.399 5.609c.018 4.365-3.5 7.936-7.864 7.972h-.199Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/googledrive.svg b/assets/lib/simple-icons/icons/googledrive.svg
index 046f9b9a..9f44a507 100644
--- a/assets/lib/simple-icons/icons/googledrive.svg
+++ b/assets/lib/simple-icons/icons/googledrive.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Google Drive icon</title><path d="M4.433 22.396l4-6.929H24l-4 6.929H4.433zm3.566-6.929l-3.998 6.929L0 15.467 7.785 1.98l3.999 6.931-3.785 6.556zm15.784-.375h-7.999L7.999 1.605h8.002l7.785 13.486h-.003z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Google Drive</title><path d="M12.01 1.485c-2.082 0-3.754.02-3.743.047.01.02 1.708 3.001 3.774 6.62l3.76 6.574h3.76c2.081 0 3.753-.02 3.742-.047-.005-.02-1.708-3.001-3.775-6.62l-3.76-6.574zm-4.76 1.73a789.828 789.861 0 0 0-3.63 6.319L0 15.868l1.89 3.298 1.885 3.297 3.62-6.335 3.618-6.33-1.88-3.287C8.1 4.704 7.255 3.22 7.25 3.214zm2.259 12.653-.203.348c-.114.198-.96 1.672-1.88 3.287a423.93 423.948 0 0 1-1.698 2.97c-.01.026 3.24.042 7.222.042h7.244l1.796-3.157c.992-1.734 1.85-3.23 1.906-3.323l.104-.167h-7.249z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/googleearth.svg b/assets/lib/simple-icons/icons/googleearth.svg
index 2cee60e5..579ef4a1 100644
--- a/assets/lib/simple-icons/icons/googleearth.svg
+++ b/assets/lib/simple-icons/icons/googleearth.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Google Earth icon</title><path d="M12 0c-1.326 0-2.597.22-3.787.613 4.94-1.243 8.575 1.72 11.096 5.606 1.725 2.695 2.813 2.83 4.207 2.412A11.956 11.956 0 0012 0zM7.658 2.156c-1.644.019-3.295.775-4.931 2.207A11.967 11.967 0 000 12c.184-2.823 2.163-5.128 4.87-5.07 2.104.044 4.648 1.518 7.13 5.289 4.87 7.468 10.917 5.483 11.863 1.51.081-.566.137-1.14.137-1.729 0-.176-.02-.347-.027-.521-1.645 1.725-4.899 2.35-8.264-2.97-2.59-4.363-5.31-6.383-8.05-6.353zM3.33 13.236c-1.675.13-2.657 1.804-2.242 3.756A11.955 11.955 0 0012 24c4.215 0 7.898-2.149 10.037-5.412v-.043c-2.836 3.49-8.946 4.255-13.855-2.182-1.814-2.386-3.544-3.228-4.852-3.127Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Google Earth</title><path d="M12 0c-1.326 0-2.597.22-3.787.613 4.94-1.243 8.575 1.72 11.096 5.606 1.725 2.695 2.813 2.83 4.207 2.412A11.956 11.956 0 0012 0zM7.658 2.156c-1.644.019-3.295.775-4.931 2.207A11.967 11.967 0 000 12c.184-2.823 2.163-5.128 4.87-5.07 2.104.044 4.648 1.518 7.13 5.289 4.87 7.468 10.917 5.483 11.863 1.51.081-.566.137-1.14.137-1.729 0-.176-.02-.347-.027-.521-1.645 1.725-4.899 2.35-8.264-2.97-2.59-4.363-5.31-6.383-8.05-6.353zM3.33 13.236c-1.675.13-2.657 1.804-2.242 3.756A11.955 11.955 0 0012 24c4.215 0 7.898-2.149 10.037-5.412v-.043c-2.836 3.49-8.946 4.255-13.855-2.182-1.814-2.386-3.544-3.228-4.852-3.127Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/googlefit.svg b/assets/lib/simple-icons/icons/googlefit.svg
index 741fac1d..b953163a 100644
--- a/assets/lib/simple-icons/icons/googlefit.svg
+++ b/assets/lib/simple-icons/icons/googlefit.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Google Fit icon</title><path d="M6 1.84c-3.315 0-6 2.678-6 5.982a5.948 5.948 0 001.758 4.23l.54.541L3.502 13.8l2.615-2.603-1.205-1.21-.541-.543a2.273 2.273 0 01-.674-1.622c0-.534.186-1.024.493-1.414a2.3 2.3 0 013.448-.198l.538.522 1.213 1.2c-1.96 1.96-3.923 3.914-5.887 5.868l1.403 1.407 1.209 1.203 3.27 3.274-.004.003L12 22.16l2.616-2.475h-.001l-.002-.002 5.885-5.883 1.744-1.747c1.22-1.215 1.917-3.09 1.727-4.983-.288-2.865-2.662-5.016-5.544-5.213a6 6 0 00-4.667 1.736l-1.754 1.743-1.213-1.21-.55-.533A5.995 5.995 0 006 1.841zm11.96 3.688a2.303 2.303 0 012.32 1.963 2.286 2.286 0 01-.657 1.959l-1.744 1.747-5.882 5.876-3.271-3.263 3.277-3.263 4.368-4.346c.426-.425.99-.663 1.589-.673Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Google Fit</title><path d="M23.218 4.868c-1.235-2.194-3.927-3.356-6.378-2.843-1.11.243-2.173.774-2.979 1.583-.622.613-1.242 1.229-1.864 1.841-.915-.91-1.788-1.937-2.882-2.648a5.98 5.98 0 0 0-3.904-.845c-4.757.578-6.936 6.346-3.615 9.85 3.481 3.418 6.937 6.863 10.413 10.288 3.291-3.251 6.573-6.51 9.871-9.752 2.132-1.831 2.8-5.026 1.338-7.474zM6.162 11.223c-.692-.755-1.511-1.404-2.141-2.208-.821-1.218-.158-3.012 1.26-3.397.781-.256 1.683-.031 2.279.527.627.609 1.236 1.237 1.866 1.843l.005.006a414.706 414.706 0 0 0-3.269 3.229zm5.846 5.758a3300.079 3300.079 0 0 1-3.255-3.22c2.555-2.516 5.103-5.042 7.65-7.566.393-.394.93-.646 1.487-.673 2.086-.154 3.285 2.372 1.801 3.866-2.549 2.542-5.121 5.062-7.683 7.593z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/googlefonts.svg b/assets/lib/simple-icons/icons/googlefonts.svg
new file mode 100644
index 00000000..6e92f54f
--- /dev/null
+++ b/assets/lib/simple-icons/icons/googlefonts.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Google Fonts</title><path d="M4 2.8A3.6 3.6 0 1 0 4 10a3.6 3.6 0 0 0 0-7.2zm7.6 0v18.4h7.2a5.2 5.2 0 1 1 0-10.4 4 4 0 1 1 0-8zm7.2 0v8a4 4 0 1 0 0-8zm0 8v10.4A5.2 5.2 0 0 0 24 16a5.2 5.2 0 0 0-5.2-5.2zm-7.7-7.206L0 21.199h8.8l2.3-3.64Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/googlehangouts.svg b/assets/lib/simple-icons/icons/googlehangouts.svg
index 0ee1ed52..7cbe6f13 100644
--- a/assets/lib/simple-icons/icons/googlehangouts.svg
+++ b/assets/lib/simple-icons/icons/googlehangouts.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Google Hangouts icon</title><path d="M12 0C6.2 0 1.5 4.7 1.5 10.5c0 5.5 5 10 10.5 10V24c6.35-3.1 10.5-8.2 10.5-13.5C22.5 4.7 17.8 0 12 0zm-.5 12c0 1.4-.9 2.5-2 2.5V12H7V7.5h4.5V12zm6 0c0 1.4-.9 2.5-2 2.5V12H13V7.5h4.5V12z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Google Hangouts</title><path d="M12 0C6.2 0 1.5 4.7 1.5 10.5c0 5.5 5 10 10.5 10V24c6.35-3.1 10.5-8.2 10.5-13.5C22.5 4.7 17.8 0 12 0zm-.5 12c0 1.4-.9 2.5-2 2.5V12H7V7.5h4.5V12zm6 0c0 1.4-.9 2.5-2 2.5V12H13V7.5h4.5V12z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/googlehangoutschat.svg b/assets/lib/simple-icons/icons/googlehangoutschat.svg
deleted file mode 100644
index 9e6fc6d3..00000000
--- a/assets/lib/simple-icons/icons/googlehangoutschat.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Google Hangouts Chat icon</title><path d="M12 0A10.357 10.357 0 0 0 1.637 10.363c0 5.427 4.949 9.818 10.363 9.818v3.818c6.3-3.191 10.363-8.333 10.363-13.637A10.358 10.358 0 0 0 12-.001zm.027 4.227c.873 0 1.664.151 2.4.465s1.364.722 1.895 1.254c.532.532.94 1.145 1.24 1.855s.451 1.459.451 2.25c0 .45-.055.86-.15 1.242s-.246.722-.451 1.008c-.205.286-.45.518-.75.682s-.64.246-1.035.246c-.382 0-.735-.096-1.035-.287s-.547-.464-.725-.832a2.586 2.586 0 0 1-.885.832c-.355.191-.765.287-1.242.287a2.923 2.923 0 0 1-2.099-.873A3.066 3.066 0 0 1 9 11.374a3.376 3.376 0 0 1-.232-1.256c0-.45.082-.872.232-1.254.164-.382.368-.709.641-.982.259-.273.574-.491.928-.641s.723-.232 1.105-.232.735.082 1.035.232.559.355.764.6h.096v-.613h1.295v3.832c0 .245.068.464.205.668s.355.312.641.312c.191 0 .354-.054.49-.176s.232-.286.314-.477c.082-.191.136-.424.164-.656a6.67 6.67 0 0 0 .041-.723c0-.614-.123-1.201-.355-1.76a4.897 4.897 0 0 0-.98-1.459c-.423-.423-.914-.749-1.486-.994s-1.187-.367-1.869-.367c-.655 0-1.267.122-1.84.354s-1.064.56-1.486.969c-.423.409-.751.9-.996 1.459-.245.573-.367 1.186-.367 1.855s.122 1.282.367 1.855.586 1.05 1.023 1.459a4.75 4.75 0 0 0 3.287 1.322c.75 0 1.404-.164 1.99-.477l.477 1.199a5.864 5.864 0 0 1-2.455.518c-.873 0-1.664-.149-2.414-.463-.736-.314-1.376-.724-1.908-1.256s-.956-1.145-1.256-1.855c-.3-.709-.449-1.471-.449-2.275s.149-1.555.449-2.277a5.736 5.736 0 0 1 3.164-3.123c.723-.314 1.527-.465 2.414-.465zM11.836 8.4c-.218 0-.436.041-.641.123s-.382.19-.545.34a1.44 1.44 0 0 0-.369.561c-.095.218-.135.462-.135.734s.04.518.135.736c.095.218.219.409.369.559.164.15.341.274.545.342a1.727 1.727 0 0 0 1.282 0c.205-.082.382-.192.545-.342s.287-.327.369-.545c.095-.218.135-.464.135-.75s-.04-.532-.135-.75a1.74 1.74 0 0 0-.369-.545 1.759 1.759 0 0 0-1.186-.463z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/googlehangoutsmeet.svg b/assets/lib/simple-icons/icons/googlehangoutsmeet.svg
deleted file mode 100644
index 87f003b6..00000000
--- a/assets/lib/simple-icons/icons/googlehangoutsmeet.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Google Hangouts Meet icon</title><path d="M12 0C6.28 0 1.636 4.641 1.636 10.364c0 5.421 4.945 9.817 10.364 9.817V24c6.295-3.194 10.364-8.333 10.364-13.636C22.364 4.64 17.72 0 12 0zM7.5 6.272h6.817a1.363 1.363 0 0 1 1.365 1.365v1.704l2.728-2.727v7.501l-2.726-2.726v1.703a1.362 1.362 0 0 1-1.365 1.365H7.5c-.35 0-.698-.133-.965-.4a1.358 1.358 0 0 1-.4-.965V7.637A1.362 1.362 0 0 1 7.5 6.272Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/googlekeep.svg b/assets/lib/simple-icons/icons/googlekeep.svg
index 8e5d5ddd..4396782a 100644
--- a/assets/lib/simple-icons/icons/googlekeep.svg
+++ b/assets/lib/simple-icons/icons/googlekeep.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Google Keep icon</title><path d="M19.995 7.995C19.995 3.6 16.396 0 12 0S4.005 3.6 4.005 7.995c0 2.55 1.2 4.89 3.194 6.405v7.979H8.82V24h6.359v-1.62H16.8V14.4c2.011-1.5 3.195-3.87 3.195-6.405zM8.805 20.774v-1.575h6.391v1.575H8.805zm0-3.194v-1.575h6.391v1.575H8.805zm6.75-4.261l-.359.24v.841H8.805v-.84l-.345-.24c-1.8-1.199-2.85-3.18-2.85-5.324 0-3.525 2.85-6.391 6.39-6.391s6.39 2.851 6.39 6.391c0 2.145-1.05 4.14-2.85 5.324h.015z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Google Keep</title><path d="M4.908 0c-.904 0-1.635.733-1.635 1.637v20.726c0 .904.732 1.637 1.635 1.637H19.09c.904 0 1.637-.733 1.637-1.637V6.5h-6.5V0H4.908zm9.819 0v6h6l-6-6zM11.97 8.229c.224 0 .571.031.765.072.2.04.576.185.842.312.828.414 1.467 1.164 1.774 2.088.168.511.188 1.34.05 1.865a3.752 3.752 0 0 1-1.277 1.952l-.25.193h-1.87c-2.134 0-1.931.042-2.478-.494a3.349 3.349 0 0 1-.984-1.844c-.148-.766-.053-1.437.32-2.203.19-.399.303-.556.65-.899.68-.679 1.513-1.037 2.458-1.042zm-1.866 7.863h3.781v1.328h-3.779v-1.328z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/googlelens.svg b/assets/lib/simple-icons/icons/googlelens.svg
index e8969132..19d4da0e 100644
--- a/assets/lib/simple-icons/icons/googlelens.svg
+++ b/assets/lib/simple-icons/icons/googlelens.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Google Lens icon</title><path d="M12 16.667a4.666 4.666 0 100-9.333 4.666 4.666 0 000 9.333m8 6a2.666 2.666 0 100-5.333 2.666 2.666 0 000 5.333m-13.333-2a3.343 3.343 0 01-3.334-3.334v-2.666H0v2.666A6.665 6.665 0 006.667 24h2.666v-3.333zm-3.334-14c0-1.834 1.5-3.334 3.334-3.334h2.666V0H6.667A6.665 6.665 0 000 6.667v2.666h3.333zm14-3.334c1.834 0 3.334 1.5 3.334 3.334v2.666H24V6.667A6.665 6.665 0 0017.333 0h-2.666v3.333Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Google Lens</title><path d="M12 16.667a4.666 4.666 0 100-9.333 4.666 4.666 0 000 9.333m8 6a2.666 2.666 0 100-5.333 2.666 2.666 0 000 5.333m-13.333-2a3.343 3.343 0 01-3.334-3.334v-2.666H0v2.666A6.665 6.665 0 006.667 24h2.666v-3.333zm-3.334-14c0-1.834 1.5-3.334 3.334-3.334h2.666V0H6.667A6.665 6.665 0 000 6.667v2.666h3.333zm14-3.334c1.834 0 3.334 1.5 3.334 3.334v2.666H24V6.667A6.665 6.665 0 0017.333 0h-2.666v3.333Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/googlemaps.svg b/assets/lib/simple-icons/icons/googlemaps.svg
index 5847b406..2033bd85 100644
--- a/assets/lib/simple-icons/icons/googlemaps.svg
+++ b/assets/lib/simple-icons/icons/googlemaps.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Google Maps icon</title><path d="M19.527 4.799c1.212 2.608.937 5.678-.405 8.173-1.101 2.047-2.744 3.74-4.098 5.614-.619.858-1.244 1.75-1.669 2.727-.141.325-.263.658-.383.992-.121.333-.224.673-.34 1.008-.109.314-.236.684-.627.687h-.007c-.466-.001-.579-.53-.695-.887-.284-.874-.581-1.713-1.019-2.525-.51-.944-1.145-1.817-1.79-2.671L19.527 4.799zM8.545 7.705l-3.959 4.707c.724 1.54 1.821 2.863 2.871 4.18.247.31.494.622.737.936l4.984-5.925-.029.01c-1.741.601-3.691-.291-4.392-1.987a3.377 3.377 0 0 1-.209-.716c-.063-.437-.077-.761-.004-1.198l.001-.007zM5.492 3.149l-.003.004c-1.947 2.466-2.281 5.88-1.117 8.77l4.785-5.689-.058-.05-3.607-3.035zM14.661.436l-3.838 4.563a.295.295 0 0 1 .027-.01c1.6-.551 3.403.15 4.22 1.626.176.319.323.683.377 1.045.068.446.085.773.012 1.22l-.003.016 3.836-4.561A8.382 8.382 0 0 0 14.67.439l-.009-.003zM9.466 5.868L14.162.285l-.047-.012A8.31 8.31 0 0 0 11.986 0a8.439 8.439 0 0 0-6.169 2.766l-.016.018 3.665 3.084z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Google Maps</title><path d="M19.527 4.799c1.212 2.608.937 5.678-.405 8.173-1.101 2.047-2.744 3.74-4.098 5.614-.619.858-1.244 1.75-1.669 2.727-.141.325-.263.658-.383.992-.121.333-.224.673-.34 1.008-.109.314-.236.684-.627.687h-.007c-.466-.001-.579-.53-.695-.887-.284-.874-.581-1.713-1.019-2.525-.51-.944-1.145-1.817-1.79-2.671L19.527 4.799zM8.545 7.705l-3.959 4.707c.724 1.54 1.821 2.863 2.871 4.18.247.31.494.622.737.936l4.984-5.925-.029.01c-1.741.601-3.691-.291-4.392-1.987a3.377 3.377 0 0 1-.209-.716c-.063-.437-.077-.761-.004-1.198l.001-.007zM5.492 3.149l-.003.004c-1.947 2.466-2.281 5.88-1.117 8.77l4.785-5.689-.058-.05-3.607-3.035zM14.661.436l-3.838 4.563a.295.295 0 0 1 .027-.01c1.6-.551 3.403.15 4.22 1.626.176.319.323.683.377 1.045.068.446.085.773.012 1.22l-.003.016 3.836-4.561A8.382 8.382 0 0 0 14.67.439l-.009-.003zM9.466 5.868L14.162.285l-.047-.012A8.31 8.31 0 0 0 11.986 0a8.439 8.439 0 0 0-6.169 2.766l-.016.018 3.665 3.084z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/googlemarketingplatform.svg b/assets/lib/simple-icons/icons/googlemarketingplatform.svg
new file mode 100644
index 00000000..d95b245f
--- /dev/null
+++ b/assets/lib/simple-icons/icons/googlemarketingplatform.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Google Marketing Platform</title><path d="M12 0C8.926 0 5.852 1.17 3.511 3.511c-4.37 4.371-4.66 11.299-.869 16.01a3.138 3.138 0 0 1 .719-3.314 3.138 3.138 0 0 1 3.672-.56 6.163 6.163 0 0 1 9.324-8.004 2.921 2.921 0 1 0 4.132-4.132A11.968 11.968 0 0 0 12 0zm9.36 4.481a3.138 3.138 0 0 1-.72 3.313 3.138 3.138 0 0 1-3.672.56 6.165 6.165 0 0 1-.61 8.003 2.921 2.921 0 1 0 4.131 4.132c4.37-4.37 4.66-11.298.87-16.008zM5.576 15.501a2.92 2.92 0 0 0-2.922 2.922 2.92 2.92 0 0 0 2.922 2.922 2.92 2.92 0 0 0 2.922-2.922A2.92 2.92 0 0 0 5.577 15.5zm10.07 1.467a6.168 6.168 0 0 1-7.293 0 3.14 3.14 0 0 1-.56 3.672 3.136 3.136 0 0 1-3.314.718c4.376 3.523 10.665 3.523 15.04 0a3.136 3.136 0 0 1-3.313-.718 3.138 3.138 0 0 1-.56-3.672z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/googlemeet.svg b/assets/lib/simple-icons/icons/googlemeet.svg
new file mode 100644
index 00000000..344f1d00
--- /dev/null
+++ b/assets/lib/simple-icons/icons/googlemeet.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Google Meet</title><path d="M5.53 2.13 0 7.75h5.53zm.398 0v5.62h7.608v3.65l5.47-4.45c-.014-1.22.031-2.25-.025-3.46-.148-1.09-1.287-1.47-2.236-1.36zM23.1 4.32c-.802.295-1.358.995-2.047 1.49-2.506 2.05-4.982 4.12-7.468 6.19 3.025 2.59 6.04 5.18 9.065 7.76 1.218.671 1.428-.814 1.328-1.64v-13a.828.828 0 0 0-.877-.825zM.038 8.15v7.7h5.53v-7.7zm13.577 8.1H6.008v5.62c3.864-.006 7.737.011 11.58-.009 1.02-.07 1.618-1.12 1.468-2.07v-2.51l-5.47-4.68v3.65zm-13.577 0c.02 1.44-.041 2.88.033 4.31.162.948 1.158 1.43 2.047 1.31h3.464v-5.62z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/googlemessages.svg b/assets/lib/simple-icons/icons/googlemessages.svg
index ea95a5ea..dd72fda8 100644
--- a/assets/lib/simple-icons/icons/googlemessages.svg
+++ b/assets/lib/simple-icons/icons/googlemessages.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Google Messages icon</title><path d="M.92 3.332c-.776 0-1.216.67-.692 1.383l2.537 4.403v7.86c0 2.013 1.467 3.69 3.459 3.69H20.31a3.75 3.75 0 003.69-3.69V7.043a3.723 3.723 0 00-3.668-3.71zm5.786 3.71H20.1c.587 0 1.153.357 1.153.923 0 .566-.566.922-1.153.922H6.706c-.587 0-1.153-.356-1.153-.922 0-.566.566-.923 1.153-.923zm0 3.69H20.1c.587 0 1.153.356 1.153.922 0 .566-.566.922-1.153.922H6.706c-.587 0-1.153-.356-1.153-.922 0-.566.566-.922 1.153-.922zm-.021 3.71h9.705c.587 0 1.153.356 1.153.922 0 .566-.566.923-1.153.923H6.685c-.587 0-1.153-.357-1.153-.923 0-.566.566-.922 1.153-.922Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Google Messages</title><path d="M12 0A12 12 0 0 0 0 12a12 12 0 0 0 12 12 12 12 0 0 0 12-12A12 12 0 0 0 12 0zM4.911 7.089h11.456a2.197 2.197 0 0 1 2.165 2.19v5.863a2.213 2.213 0 0 1-2.177 2.178H8.04c-1.174 0-2.04-.99-2.04-2.178v-4.639L4.503 7.905c-.31-.42-.05-.816.408-.816zm3.415 2.19c-.347 0-.68.21-.68.544 0 .334.333.544.68.544h7.905c.346 0 .68-.21.68-.544 0-.334-.334-.545-.68-.545zm0 2.177c-.347 0-.68.21-.68.544 0 .334.333.544.68.544h7.905c.346 0 .68-.21.68-.544 0-.334-.334-.544-.68-.544zm-.013 2.19c-.346 0-.68.21-.68.544 0 .334.334.544.68.544h5.728c.347 0 .68-.21.68-.544 0-.334-.333-.545-.68-.545z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/googlemybusiness.svg b/assets/lib/simple-icons/icons/googlemybusiness.svg
index e823c221..dc738bcb 100644
--- a/assets/lib/simple-icons/icons/googlemybusiness.svg
+++ b/assets/lib/simple-icons/icons/googlemybusiness.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Google My Business icon</title><path d="M3.273 1.643c-.736 0-1.363.492-1.568 1.16L0 9.279c0 1.664 1.336 3 3 3a3 3 0 003-3c0 1.664 1.336 3 3 3a3 3 0 003-3c0 1.65 1.35 3 3 3 1.664 0 3-1.336 3-3 0 1.664 1.336 3 3 3s3-1.336 3-3l-1.705-6.476a1.646 1.646 0 00-1.568-1.16H3.273zm8.729 9.326c-.604 1.063-1.703 1.81-3.002 1.81-1.304 0-2.398-.747-3-1.806-.604 1.06-1.702 1.806-3 1.806-.484 0-.944-.1-1.363-.277v8.232c0 .9.736 1.637 1.636 1.637h17.454c.9 0 1.636-.737 1.636-1.637v-8.232c-.419.178-.88.277-1.363.277-1.304 0-2.398-.746-3-1.804-.602 1.058-1.696 1.804-3 1.804-1.299 0-2.394-.75-2.998-1.81zm5.725 3.765c.808 0 1.488.298 2.007.782l-.859.859a1.623 1.623 0 00-1.148-.447c-.98 0-1.772.827-1.772 1.806 0 .98.792 1.807 1.772 1.807.882 0 1.485-.501 1.615-1.191h-1.615v-1.16h2.826c.035.196.054.4.054.613 0 1.714-1.147 2.931-2.88 2.931a3 3 0 010-6Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Google My Business</title><path d="M3.273 1.636c-.736 0-1.363.492-1.568 1.16L0 9.272c0 1.664 1.336 3 3 3a3 3 0 003-3c0 1.664 1.336 3 3 3a3 3 0 003-3c0 1.65 1.35 3 3 3 1.664 0 3-1.336 3-3 0 1.664 1.336 3 3 3s3-1.336 3-3l-1.705-6.476a1.646 1.646 0 00-1.568-1.16zm8.729 9.326c-.604 1.063-1.703 1.81-3.002 1.81-1.304 0-2.398-.747-3-1.806-.604 1.06-1.702 1.806-3 1.806-.484 0-.944-.1-1.363-.277v8.232c0 .9.736 1.637 1.636 1.637h17.454c.9 0 1.636-.737 1.636-1.637v-8.232a3.48 3.48 0 01-1.363.277c-1.304 0-2.398-.746-3-1.804-.602 1.058-1.696 1.804-3 1.804-1.299 0-2.394-.75-2.998-1.81zm5.725 3.765c.808 0 1.488.298 2.007.782l-.859.859a1.623 1.623 0 00-1.148-.447c-.98 0-1.772.827-1.772 1.806 0 .98.792 1.807 1.772 1.807.882 0 1.485-.501 1.615-1.191h-1.615v-1.16h2.826c.035.196.054.4.054.613 0 1.714-1.147 2.931-2.88 2.931a3 3 0 010-6z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/googlenearby.svg b/assets/lib/simple-icons/icons/googlenearby.svg
index 2f1412b3..db54aad5 100644
--- a/assets/lib/simple-icons/icons/googlenearby.svg
+++ b/assets/lib/simple-icons/icons/googlenearby.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Google Nearby icon</title><path d="M6.546 12l5.455-5.455L17.455 12l-5.454 5.454zm16.976-1.154L13.158.48a1.635 1.635 0 00-2.314 0L.478 10.846a1.629 1.629 0 000 2.305l10.37 10.371a1.629 1.629 0 002.304 0l10.37-10.371a1.629 1.629 0 000-2.305zM12 20.726l-8.727-8.728L12 3.27l8.727 8.728Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Google Nearby</title><path d="M6.5459 12.0003L12.001 6.545l5.4541 5.4552-5.4541 5.454zm16.9763-1.154L13.158.48a1.635 1.635 0 00-2.314 0L.4778 10.8462a1.629 1.629 0 000 2.305L10.848 23.5226a1.629 1.629 0 002.304 0l10.3702-10.3712a1.629 1.629 0 000-2.305zM12 20.7263l-8.7272-8.7281L12 3.27l8.7272 8.7282z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/googlenews.svg b/assets/lib/simple-icons/icons/googlenews.svg
new file mode 100644
index 00000000..a1cfcdab
--- /dev/null
+++ b/assets/lib/simple-icons/icons/googlenews.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Google News</title><path d="M21.2666 21.2a.6141.6141 0 0 1-.6128.6128H3.3446a.614.614 0 0 1-.6128-.6128V8.1153a.6141.6141 0 0 1 .6128-.6128h17.3091a.6141.6141 0 0 1 .6128.6128V21.2zm-3.0315-3.4196v-1.1957a.0803.0803 0 0 0-.0803-.0803h-5.3725v1.3619h5.3725a.0817.0817 0 0 0 .0804-.083l-.0001-.0029zm.8171-2.5875v-1.2012a.0803.0803 0 0 0-.079-.0817h-6.191v1.3619h6.1896a.079.079 0 0 0 .0804-.0776v-.0041.0027zm-.8171-2.5875v-1.2066a.0803.0803 0 0 0-.0803-.0803h-5.3725v1.3619h5.3725a.0816.0816 0 0 0 .0803-.079v.004zM8.1492 14.0448v1.2257h1.7704c-.1457.749-.8049 1.2924-1.7704 1.2924-1.0906-.0405-1.9418-.9574-1.9013-2.048.0384-1.0338.8676-1.8629 1.9013-1.9013a1.77 1.77 0 0 1 1.2529.4903l.9342-.9329a3.1405 3.1405 0 0 0-2.1871-.8525c-1.8051 0-3.2684 1.4633-3.2684 3.2684 0 1.8051 1.4633 3.2684 3.2684 3.2684 1.8889 0 3.1323-1.3278 3.1323-3.1976a3.941 3.941 0 0 0-.0518-.6183l-3.0805.0054zM2.2701 7.6537a.6156.6156 0 0 1 .6128-.6128h12.1545l-1.2692-3.4904a.5952.5952 0 0 0-.7436-.3827L.3676 7.7749a.5938.5938 0 0 0-.3228.7749l2.2253 6.112V7.6537za.6156.6156 0 0 1 .6128-.6128h12.1545l-1.2692-3.4904a.5952.5952 0 0 0-.7436-.3827L.3676 7.7749a.5938.5938 0 0 0-.3228.7749l2.2253 6.112V7.6537zm21.3116-.3105l-8.803-2.3683.7517 2.0659h5.5836a.6141.6141 0 0 1 .6128.6128v8.7948l2.2471-8.3659a.5923.5923 0 0 0-.3922-.7393zm-4.4955-1.6738V2.7946a.6101.6101 0 0 0-.6115-.6074H5.5236a.6101.6101 0 0 0-.6156.6046v2.8368l8.3904-3.0519a.5937.5937 0 0 1 .7422.3895l.5447 1.498 4.5009 1.2052z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/googleoptimize.svg b/assets/lib/simple-icons/icons/googleoptimize.svg
new file mode 100644
index 00000000..54c401e5
--- /dev/null
+++ b/assets/lib/simple-icons/icons/googleoptimize.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Google Optimize</title><path d="M23.661 11.997a3.242 3.242 0 1 1-6.479 0V6.55H11.51a3.293 3.293 0 0 1 0-6.55h8.854a3.291 3.291 0 0 1 3.291 3.259l.006 8.738zm-16.775-.011a3.275 3.275 0 1 0-6.55 0 3.275 3.275 0 0 0 6.55 0zm5.42-3.28H5.442c1.153.647 1.944 1.867 1.944 3.28a3.766 3.766 0 0 1-1.802 3.204h3.672v5.453A3.181 3.181 0 0 0 12.372 24a3.323 3.323 0 0 0 3.291-3.357v-8.695a3.318 3.318 0 0 0-3.357-3.242z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/googlepay.svg b/assets/lib/simple-icons/icons/googlepay.svg
index e50088e3..5c393d6a 100644
--- a/assets/lib/simple-icons/icons/googlepay.svg
+++ b/assets/lib/simple-icons/icons/googlepay.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Google Pay icon</title><path d="M3.963 7.235A3.963 3.963 0 00.422 9.419a3.963 3.963 0 000 3.559 3.963 3.963 0 003.541 2.184c1.07 0 1.97-.352 2.627-.957.748-.69 1.18-1.71 1.18-2.916a4.722 4.722 0 00-.07-.806H3.964v1.526h2.14a1.835 1.835 0 01-.79 1.205c-.356.241-.814.379-1.35.379-1.034 0-1.911-.697-2.225-1.636a2.375 2.375 0 010-1.517c.314-.94 1.191-1.636 2.225-1.636a2.152 2.152 0 011.52.594l1.132-1.13a3.808 3.808 0 00-2.652-1.033zm6.501.55v6.9h.886V11.89h1.465c.603 0 1.11-.196 1.522-.588a1.911 1.911 0 00.635-1.464 1.92 1.92 0 00-.635-1.456 2.125 2.125 0 00-1.522-.598zm2.427.85a1.156 1.156 0 01.823.365 1.176 1.176 0 010 1.686 1.171 1.171 0 01-.877.357H11.35V8.635h1.487a1.156 1.156 0 01.054 0zm4.124 1.175c-.842 0-1.477.308-1.907.925l.781.491c.288-.417.68-.626 1.175-.626a1.255 1.255 0 01.856.323 1.009 1.009 0 01.366.785v.202c-.34-.193-.774-.289-1.3-.289-.617 0-1.11.145-1.479.434-.37.288-.554.677-.554 1.165a1.476 1.476 0 00.525 1.156c.35.308.785.463 1.305.463.61 0 1.098-.27 1.465-.81h.038v.655h.848v-2.909c0-.61-.19-1.09-.568-1.44-.38-.35-.896-.525-1.551-.525zm2.263.154l1.946 4.422-1.098 2.38h.915L24 9.963h-.965l-1.368 3.391h-.02l-1.406-3.39zm-2.146 2.368c.494 0 .88.11 1.156.33 0 .372-.147.696-.44.973a1.413 1.413 0 01-.997.414 1.081 1.081 0 01-.69-.232.708.708 0 01-.293-.578c0-.257.12-.47.363-.647.24-.173.54-.26.9-.26Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Google Pay</title><path d="M3.963 7.235A3.963 3.963 0 00.422 9.419a3.963 3.963 0 000 3.559 3.963 3.963 0 003.541 2.184c1.07 0 1.97-.352 2.627-.957.748-.69 1.18-1.71 1.18-2.916a4.722 4.722 0 00-.07-.806H3.964v1.526h2.14a1.835 1.835 0 01-.79 1.205c-.356.241-.814.379-1.35.379-1.034 0-1.911-.697-2.225-1.636a2.375 2.375 0 010-1.517c.314-.94 1.191-1.636 2.225-1.636a2.152 2.152 0 011.52.594l1.132-1.13a3.808 3.808 0 00-2.652-1.033zm6.501.55v6.9h.886V11.89h1.465c.603 0 1.11-.196 1.522-.588a1.911 1.911 0 00.635-1.464 1.92 1.92 0 00-.635-1.456 2.125 2.125 0 00-1.522-.598zm2.427.85a1.156 1.156 0 01.823.365 1.176 1.176 0 010 1.686 1.171 1.171 0 01-.877.357H11.35V8.635h1.487a1.156 1.156 0 01.054 0zm4.124 1.175c-.842 0-1.477.308-1.907.925l.781.491c.288-.417.68-.626 1.175-.626a1.255 1.255 0 01.856.323 1.009 1.009 0 01.366.785v.202c-.34-.193-.774-.289-1.3-.289-.617 0-1.11.145-1.479.434-.37.288-.554.677-.554 1.165a1.476 1.476 0 00.525 1.156c.35.308.785.463 1.305.463.61 0 1.098-.27 1.465-.81h.038v.655h.848v-2.909c0-.61-.19-1.09-.568-1.44-.38-.35-.896-.525-1.551-.525zm2.263.154l1.946 4.422-1.098 2.38h.915L24 9.963h-.965l-1.368 3.391h-.02l-1.406-3.39zm-2.146 2.368c.494 0 .88.11 1.156.33 0 .372-.147.696-.44.973a1.413 1.413 0 01-.997.414 1.081 1.081 0 01-.69-.232.708.708 0 01-.293-.578c0-.257.12-.47.363-.647.24-.173.54-.26.9-.26Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/googlephotos.svg b/assets/lib/simple-icons/icons/googlephotos.svg
new file mode 100644
index 00000000..81ce3687
--- /dev/null
+++ b/assets/lib/simple-icons/icons/googlephotos.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Google Photos</title><path d="M12.678 16.672c0 2.175.002 4.565-.001 6.494-.001.576-.244.814-.817.833-7.045.078-8.927-7.871-4.468-11.334-1.95.016-4.019.007-5.986.007-1.351 0-1.414-.01-1.405-1.351.258-6.583 7.946-8.275 11.323-3.936L11.308.928c-.001-.695.212-.906.906-.925 6.409-.187 9.16 7.308 4.426 11.326l6.131.002c1.097 0 1.241.105 1.228 1.217-.223 6.723-7.802 8.376-11.321 4.124zm.002-15.284l-.003 9.972c6.56-.465 6.598-9.532.003-9.972zm-1.36 21.224l-.001-9.97c-6.927.598-6.29 9.726.002 9.97zM1.4 11.315l9.95.008c-.527-6.829-9.762-6.367-9.95-.008zm11.238 1.365c.682 6.875 9.67 6.284 9.977.01z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/googleplay.svg b/assets/lib/simple-icons/icons/googleplay.svg
index b1bf771b..3ce505fc 100644
--- a/assets/lib/simple-icons/icons/googleplay.svg
+++ b/assets/lib/simple-icons/icons/googleplay.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Google Play icon</title><path d="M1.22 0c-.03.093-.06.185-.06.308v23.229c0 .217.061.34.184.463l11.415-12.093L1.22 0zm12.309 12.708l2.951 3.045-4.213 2.4s-5.355 3.044-8.308 4.739l9.57-10.184zm.801-.831l3.166 3.292c.496-.276 4.371-2.492 4.924-2.8.584-.338.525-.8.029-1.046-.459-.255-4.334-2.475-4.92-2.835l-3.203 3.392.004-.003zm-.803-.8l2.984-3.169-4.259-2.431S5.309 1.505 2.999.179l10.53 10.898h-.002z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Google Play</title><path d="M22.018 13.298l-3.919 2.218-3.515-3.493 3.543-3.521 3.891 2.202a1.49 1.49 0 0 1 0 2.594zM1.337.924a1.486 1.486 0 0 0-.112.568v21.017c0 .217.045.419.124.6l11.155-11.087L1.337.924zm12.207 10.065l3.258-3.238L3.45.195a1.466 1.466 0 0 0-.946-.179l11.04 10.973zm0 2.067l-11 10.933c.298.036.612-.016.906-.183l13.324-7.54-3.23-3.21z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/googlepodcasts.svg b/assets/lib/simple-icons/icons/googlepodcasts.svg
index 1c2b84a0..ddd9a3f3 100644
--- a/assets/lib/simple-icons/icons/googlepodcasts.svg
+++ b/assets/lib/simple-icons/icons/googlepodcasts.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Google Podcasts icon</title><path d="M1.5 9.68c-.83 0-1.5.67-1.5 1.5V12.81a1.5 1.5 0 1 0 3 0v-1.63c0-.83-.67-1.5-1.5-1.5zM22.5 9.68c-.83 0-1.5.67-1.5 1.5V12.81a1.5 1.5 0 1 0 3 0v-1.63c0-.83-.67-1.5-1.5-1.5zM6.68 14.59c-.83 0-1.5.67-1.5 1.5V17.72a1.5 1.5 0 1 0 3 0V16.1c0-.83-.67-1.5-1.5-1.5zM6.68 4.77c-.83 0-1.5.67-1.5 1.5V11.63a1.5 1.5 0 0 0 3 0V6.26c0-.83-.67-1.5-1.5-1.5zM17.32 4.77c-.83 0-1.5.67-1.5 1.5V7.91a1.5 1.5 0 0 0 3 0V6.27c0-.83-.67-1.5-1.5-1.5zM12 0c-.83 0-1.5.67-1.5 1.5v1.63a1.5 1.5 0 1 0 3 0V1.5C13.5.67 12.83 0 12 0zM12 19.36c-.83 0-1.5.67-1.5 1.5V22.5a1.5 1.5 0 1 0 3 .01v-1.64c0-.82-.67-1.5-1.5-1.5zM17.32 10.9c-.83 0-1.5.68-1.5 1.5v5.33a1.5 1.5 0 0 0 3 0V12.4c0-.83-.67-1.5-1.5-1.5zM12 6.13c-.83 0-1.5.68-1.5 1.5v8.73a1.5 1.5 0 0 0 3 0V7.64c0-.83-.67-1.5-1.5-1.5z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Google Podcasts</title><path d="M1.503 9.678c-.83 0-1.5.67-1.5 1.5v1.63a1.5 1.5 0 103 0v-1.63c0-.83-.67-1.5-1.5-1.5zm20.994 0c-.83 0-1.5.67-1.5 1.5v1.63a1.5 1.5 0 103 0v-1.63c0-.83-.67-1.5-1.5-1.5zM6.68 14.587c-.83 0-1.5.67-1.5 1.5v1.63a1.5 1.5 0 103 0v-1.62c0-.83-.67-1.5-1.5-1.5zm0-9.817c-.83 0-1.5.67-1.5 1.5v5.357a1.5 1.5 0 003 0V6.258c0-.83-.67-1.5-1.5-1.5zm10.638 0c-.83 0-1.5.67-1.5 1.5v1.64a1.5 1.5 0 003 0V6.27c0-.83-.67-1.5-1.5-1.5zM12 0c-.83 0-1.5.67-1.5 1.5v1.63a1.5 1.5 0 103 0V1.5c0-.83-.67-1.499-1.5-1.499zm0 19.355c-.83 0-1.5.67-1.5 1.5v1.64a1.5 1.5 0 103 .01v-1.64c0-.82-.67-1.5-1.5-1.5zm5.319-8.457c-.83 0-1.5.68-1.5 1.5v5.328a1.5 1.5 0 003 0v-5.329c0-.83-.67-1.5-1.5-1.5zM12 6.128c-.83 0-1.5.68-1.5 1.5v8.728a1.5 1.5 0 003 0V7.638c0-.83-.67-1.5-1.5-1.5z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/googlescholar.svg b/assets/lib/simple-icons/icons/googlescholar.svg
index b96eea8c..159b50b1 100644
--- a/assets/lib/simple-icons/icons/googlescholar.svg
+++ b/assets/lib/simple-icons/icons/googlescholar.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Google Scholar icon</title><path d="M10.93 2.045c-.547.366-3.22 2.14-5.938 3.945C2.272 7.794.05 9.286.05 9.304c0 .019.136.11.305.2.167.096 2.85 1.583 5.965 3.31l5.656 3.143.144-.074c.082-.04 2.169-1.232 4.642-2.642l4.493-2.568.027 7.947h2.668V9.319l-3.46-2.32c-4.664-3.124-8.392-5.586-8.484-5.606-.045-.008-.527.287-1.076.652M5.355 16.633l.014 2.005 3.31 1.987 3.31 1.982 3.337-2 3.332-2.005V16.62c0-1.092-.013-1.983-.027-1.983s-1.318.782-2.9 1.741l-3.306 1.996-.431.256-1.32-.791a604.12 604.12 0 0 1-3.286-1.979l-2.005-1.21c-.024-.008-.032.883-.027 1.983"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Google Scholar</title><path d="M5.242 13.769L0 9.5 12 0l12 9.5-5.242 4.269C17.548 11.249 14.978 9.5 12 9.5c-2.977 0-5.548 1.748-6.758 4.269zM12 10a7 7 0 1 0 0 14 7 7 0 0 0 0-14z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/googlesearchconsole.svg b/assets/lib/simple-icons/icons/googlesearchconsole.svg
index 75558ab9..275c7c9c 100644
--- a/assets/lib/simple-icons/icons/googlesearchconsole.svg
+++ b/assets/lib/simple-icons/icons/googlesearchconsole.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Google Search Console icon</title><path d="M8.548 1.156L6.832 2.872v1.682h1.716zm0 3.398v.035H6.832v-.035H3.386L0 7.844v3.577h2.826V8.94c0-.525.429-.954.954-.954h16.476c.525 0 .954.43.954.954v2.48h2.754V7.844l-3.386-3.29H17.3v.035h-1.717v-.035zm7.035 0H17.3V2.872l-1.717-1.716zM8.679 1.188V2.84h6.773V1.188zm11.471 7.07a.834.834 0 00-.132.01l-.543.002c-5.216.014-10.432-.008-15.648.01-.435-.063-.794.436-.716.883v2.264h17.812c-.016-.888.045-1.782-.034-2.666-.104-.342-.427-.502-.739-.502zm-15.422.634a.689.698 0 01.689.698.689.698 0 01-.689.697.689.698 0 01-.688-.697.689.698 0 01.688-.698zm2.134 0a.689.698 0 01.689.698.689.698 0 01-.689.697.689.698 0 01-.688-.697.689.698 0 01.688-.698zM.036 11.645v9.156c0 1.05.858 1.908 1.907 1.908h.883V11.645zm21.174 0v11.064h.882c1.05 0 1.908-.858 1.908-1.908v-9.156zM4.057 13.133v6.85h6.137v-6.85zm13.243.021v3.777l-1.708.977-1.708-.977v-3.758a4.006 4.006 0 000 7.23v2.441h3.457v-2.442a4.006 4.006 0 00-.041-7.248zm-13.243 8.26v1.43h7.925v-1.43z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Google Search Console</title><path d="M8.548 1.156L6.832 2.872v1.682h1.716zm0 3.398v.035H6.832v-.035H3.386L0 7.844v3.577h2.826V8.94c0-.525.429-.954.954-.954h16.476c.525 0 .954.43.954.954v2.48h2.754V7.844l-3.386-3.29H17.3v.035h-1.717v-.035zm7.035 0H17.3V2.872l-1.717-1.716zM8.679 1.188V2.84h6.773V1.188zm11.471 7.07a.834.834 0 00-.132.01l-.543.002c-5.216.014-10.432-.008-15.648.01-.435-.063-.794.436-.716.883v2.264h17.812c-.016-.888.045-1.782-.034-2.666-.104-.342-.427-.502-.739-.502zm-15.422.634a.689.698 0 01.689.698.689.698 0 01-.689.697.689.698 0 01-.688-.697.689.698 0 01.688-.698zm2.134 0a.689.698 0 01.689.698.689.698 0 01-.689.697.689.698 0 01-.688-.697.689.698 0 01.688-.698zM.036 11.645v9.156c0 1.05.858 1.908 1.907 1.908h.883V11.645zm21.174 0v11.064h.882c1.05 0 1.908-.858 1.908-1.908v-9.156zM4.057 13.133v6.85h6.137v-6.85zm13.243.021v3.777l-1.708.977-1.708-.977v-3.758a4.006 4.006 0 000 7.23v2.441h3.457v-2.442a4.006 4.006 0 00-.041-7.248zm-13.243 8.26v1.43h7.925v-1.43z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/googlesheets.svg b/assets/lib/simple-icons/icons/googlesheets.svg
index 0e3bb46c..c16ae49c 100644
--- a/assets/lib/simple-icons/icons/googlesheets.svg
+++ b/assets/lib/simple-icons/icons/googlesheets.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Google Sheets icon</title><path d="M4.908 0c-.873 0-1.635.764-1.635 1.637v20.726c0 .873.762 1.637 1.635 1.637h14.184c.873 0 1.635-.764 1.635-1.637V7.045h-4.909a2.157 2.157 0 0 1-2.136-2.137V0H4.908zm9.774.5v4.408c0 .581.555 1.137 1.136 1.137h4.409L14.682.5zM7.637 11.781h8.726v7.856H7.637V11.78zm1.09 1.092v1.309h2.728v-1.309H8.727zm3.818 0v1.309h2.728v-1.309h-2.728zm-3.818 2.182v1.308h2.728v-1.308H8.727zm3.818 0v1.308h2.728v-1.308h-2.728zm-3.818 2.181v1.309h2.728v-1.309H8.727zm3.818 0v1.309h2.728v-1.309h-2.728z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Google Sheets</title><path d="M11.318 12.545H7.91v-1.909h3.41v1.91zM14.728 0v6h6l-6-6zm1.363 10.636h-3.41v1.91h3.41v-1.91zm0 3.273h-3.41v1.91h3.41v-1.91zM20.727 6.5v15.864c0 .904-.732 1.636-1.636 1.636H4.909a1.636 1.636 0 0 1-1.636-1.636V1.636C3.273.732 4.005 0 4.909 0h9.318v6.5h6.5zm-3.273 2.773H6.545v7.909h10.91v-7.91zm-6.136 4.636H7.91v1.91h3.41v-1.91z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/googlestreetview.svg b/assets/lib/simple-icons/icons/googlestreetview.svg
index 729d4df1..3fc33dd2 100644
--- a/assets/lib/simple-icons/icons/googlestreetview.svg
+++ b/assets/lib/simple-icons/icons/googlestreetview.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Google Street View icon</title><path d="M18.285 0c-.11 0-.218.004-.326.01-.03.001-.062.005-.092.008a5.723 5.723 0 00-.549.064c-.037.006-.074.015-.111.022-.07.013-.138.027-.207.042l-.1.024a5.635 5.635 0 00-.273.074l-.023.008a5.67 5.67 0 00-.301.102c-.022.007-.043.017-.065.025a5.669 5.669 0 00-.22.09l-.096.043a5.765 5.765 0 00-.184.088l-.097.05c-.061.032-.122.064-.182.098l-.088.05c-.066.04-.13.082-.195.124l-.063.039a5.746 5.746 0 00-.488.367l-.072.063a5.803 5.803 0 00-.451.433 5.7 5.7 0 00-.14.156l-.06.07a5.692 5.692 0 00-1.33 3.664 5.712 5.712 0 009.143 4.571l.017-.014a5.778 5.778 0 00.452-.38l.062-.06a5.747 5.747 0 00.37-.39l.054-.062c.06-.07.116-.143.172-.217l.017-.021.002-.004c.06-.08.118-.163.174-.246.018-.026.034-.054.05-.08.04-.06.078-.12.114-.182l.051-.088c.035-.061.069-.123.102-.186.016-.03.033-.06.048-.091.03-.06.058-.121.086-.182l.047-.103c.031-.072.06-.144.088-.217l.025-.065c.036-.097.07-.195.1-.295l.02-.07c.022-.075.043-.15.062-.227a5.675 5.675 0 00.068-.313 5.758 5.758 0 00.086-.645l.008-.112a5.759 5.759 0 00-.056-1.191 5.677 5.677 0 00-.114-.559 5.655 5.655 0 00-.648-1.533 5.73 5.73 0 00-.477-.672A5.76 5.76 0 0021.248.826l-.086-.049a5.716 5.716 0 00-.398-.215A5.681 5.681 0 0018.285 0zM1.715 2.285A1.72 1.72 0 000 3.995v18.29L12.941 9.344a6.426 6.426 0 01-1.12-3.63c0-1.26.38-2.432 1.007-3.429H1.715zM4.857 4c.848 0 1.557.31 2.102.818l-.912.891a1.698 1.698 0 00-1.19-.459c-.818 0-1.512.551-1.76 1.295a1.889 1.889 0 000 1.195c.248.744.942 1.295 1.76 1.295.46 0 .808-.121 1.067-.297.396-.27.624-.722.623-1.025h-1.69V6.57h2.94c.045.197.078.386.078.645 0 .957-.342 1.765-.936 2.312-.52.48-1.233.758-2.082.758a3.142 3.142 0 110-6.285zm9.8 7.059l-2.452 2.45a12 12 0 014.428-1.56 6.456 6.456 0 01-1.977-.89zm7.058.113a6.601 6.601 0 01-1.774.775c.607.087 1.2.22 1.774.395v-1.17zm-3.43 1.4c-2.51 0-4.868.864-6.73 2.264-.425.34-.698.863-.698 1.45V24H20a1.72 1.72 0 001.715-1.715v-9.164a11.078 11.078 0 00-3.43-.549zm-8.025 2.883L1.715 24h8.392v-7.715c0-.292.063-.567.153-.83Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Google Street View</title><path d="M12.571 5.714a5.714 5.714 0 1 1 11.43 0 5.714 5.714 0 0 1-11.43 0zm2.264 5.165l-3.502 3.502c2.015-1.488 4.48-2.31 6.953-2.31 1.155 0 2.307.182 3.428.53v-1.709a6.176 6.176 0 0 1-3.428 1.037 6.177 6.177 0 0 1-3.45-1.05zm6.88 11.407V13.12a11.074 11.074 0 0 0-3.43-.55 11.25 11.25 0 0 0-6.731 2.265c-.425.34-.697.863-.697 1.45V24H20a1.72 1.72 0 0 0 1.714-1.714zM13.12 9.165L.001 22.285V4a1.72 1.72 0 0 1 1.713-1.714h11.394a6.176 6.176 0 0 0-1.037 3.428c0 1.276.388 2.463 1.05 3.45zm-5.246-1.95a2.7 2.7 0 0 0-.077-.644h-2.94v1.142h1.69c.001.303-.228.755-.625 1.025-.258.176-.606.298-1.066.298-.818 0-1.512-.552-1.76-1.295a1.887 1.887 0 0 1 0-1.196c.248-.743.942-1.295 1.76-1.295.6 0 .987.268 1.19.458l.913-.889A3.018 3.018 0 0 0 4.857 4a3.143 3.143 0 1 0 0 6.287c.848 0 1.563-.279 2.083-.759.593-.547.935-1.356.935-2.313zm2.482 9.07c0-.511.17-.995.471-1.399L1.714 24h8.643v-7.714z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/googletagmanager.svg b/assets/lib/simple-icons/icons/googletagmanager.svg
index 82b3a98e..982ef891 100644
--- a/assets/lib/simple-icons/icons/googletagmanager.svg
+++ b/assets/lib/simple-icons/icons/googletagmanager.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Google Tag Manager icon</title><path d="M11.929,18.136c1.619,0,2.932,1.313,2.932,2.932S13.549,24,11.929,24s-2.932-1.313-2.932-2.932 S10.31,18.136,11.929,18.136z M23.119,9.878l-9-9c-1.171-1.171-3.071-1.171-4.242,0c-1.171,1.171-1.171,3.071,0,4.242l6.866,6.866 l-4.493,4.588l2.119,2.211c0.581,0.621,0.901,1.432,0.901,2.282c0,0.313-0.044,0.615-0.125,0.903l7.974-7.851 C24.291,12.949,24.291,11.05,23.119,9.878z M11.669,7.491L9.588,5.41C8.944,4.766,8.589,3.91,8.589,3c0-0.333,0.048-0.659,0.14-0.97 L0.876,9.809c-1.17,1.17-1.17,3.067,0,4.238l7.824,7.875c-0.072-0.273-0.111-0.559-0.111-0.854c0-1.842,1.499-3.341,3.341-3.341 c0.351,0,0.69,0.055,1.008,0.156l-5.706-5.955L11.669,7.491z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Google Tag Manager</title><path d="M12.003 0a3 3 0 0 0-2.121 5.121l6.865 6.865-4.446 4.541 1.745 1.836a3.432 3.432 0 0 1 .7.739l.012.011-.001.002a3.432 3.432 0 0 1 .609 1.953 3.432 3.432 0 0 1-.09.78l7.75-7.647c.031-.029.067-.05.098-.08.023-.023.038-.052.06-.076a2.994 2.994 0 0 0-.06-4.166l-9-9A2.99 2.99 0 0 0 12.003 0zM8.63 2.133L.88 9.809a2.998 2.998 0 0 0 0 4.238l7.7 7.75a3.432 3.432 0 0 1-.077-.729 3.432 3.432 0 0 1 3.431-3.431 3.432 3.432 0 0 1 .826.101l-5.523-5.81 4.371-4.373-2.08-2.08c-.903-.904-1.193-2.183-.898-3.342zm3.304 16.004a2.932 2.932 0 0 0-2.931 2.931A2.932 2.932 0 0 0 11.934 24a2.932 2.932 0 0 0 2.932-2.932 2.932 2.932 0 0 0-2.932-2.931z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/googletranslate.svg b/assets/lib/simple-icons/icons/googletranslate.svg
index a2327434..49b7cbd0 100644
--- a/assets/lib/simple-icons/icons/googletranslate.svg
+++ b/assets/lib/simple-icons/icons/googletranslate.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Google Translate icon</title><path d="M1.597 0C.719 0 0 .719 0 1.599v16.275c0 .878.719 1.597 1.597 1.597h10L13.074 24h9.33C23.28 24 24 23.293 24 22.428V6.39c0-.865-.719-1.572-1.597-1.572h-9.93L10.927 0zm11.109 5.539h9.697c.234 0 .455.091.62.255a.834.834 0 01.256.596v16.038a.824.824 0 01-.255.596.881.881 0 01-.62.255h-8.677l3.45-3.808h.004l-.74-2.302c.01-.009.58-.501 1.283-1.247a52.6 52.6 0 002.818 2.806l.772-.772c-1.272-1.154-2.205-2.07-2.89-2.805.918-1.087 1.851-2.455 2.049-3.708h2.034v.003h.002v-.94h-4.532v-1.52h-1.472v1.52h-2.204zm-5.966.46c1.012 0 1.861.374 2.513.975l-.99.952a2.194 2.194 0 00-1.523-.584c-1.306 0-2.364 1.08-2.364 2.409 0 1.33 1.058 2.409 2.364 2.409 1.508 0 2.13-1.08 2.19-1.808l-2.188-.002V9.066h3.511c.05.23.089.457.089.764 0 2.147-1.433 3.669-3.602 3.669a3.752 3.752 0 01-3.751-3.75c0-2.07 1.68-3.75 3.751-3.75zm7.863 5.447h4.766c-.308 1.084-.988 2.108-1.652 2.904-1.176-1.392-1.18-1.844-1.18-1.844h-1.222s.05.678 1.7 2.61c-.533.546-.946.875-.95.88Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Google Translate</title><path d="M22.401 4.818h-9.927L10.927 0H1.599C.72 0 .002.719.002 1.599v16.275c0 .878.72 1.597 1.597 1.597h10L13.072 24H22.4c.878 0 1.597-.707 1.597-1.572V6.39c0-.865-.72-1.572-1.597-1.572zm-15.66 8.68c-2.07 0-3.75-1.68-3.75-3.75 0-2.07 1.68-3.75 3.75-3.75 1.012 0 1.86.375 2.512.976l-.99.952a2.194 2.194 0 0 0-1.522-.584c-1.305 0-2.363 1.08-2.363 2.409S5.436 12.16 6.74 12.16c1.507 0 2.13-1.08 2.19-1.808l-2.188-.002V9.066h3.51c.05.23.09.457.09.764 0 2.147-1.434 3.669-3.602 3.669zm16.757 8.93c0 .59-.492 1.072-1.097 1.072h-8.875l3.649-4.03h.005l-.74-2.302.006-.005s.568-.488 1.277-1.24c.712.771 1.63 1.699 2.818 2.805l.771-.772c-1.272-1.154-2.204-2.07-2.89-2.805.919-1.087 1.852-2.455 2.049-3.707h2.034v.002h.002v-.94h-4.532v-1.52h-1.471v1.52H14.3l-1.672-5.21.006.022h9.767c.605 0 1.097.48 1.097 1.072v16.038zm-6.484-7.311c-.536.548-.943.873-.943.873l-.008.004-1.46-4.548h4.764c-.307 1.084-.988 2.108-1.651 2.904-1.176-1.392-1.18-1.844-1.18-1.844h-1.222s.05.678 1.7 2.61z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/gotomeeting.svg b/assets/lib/simple-icons/icons/gotomeeting.svg
new file mode 100644
index 00000000..6c6e9f91
--- /dev/null
+++ b/assets/lib/simple-icons/icons/gotomeeting.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GoToMeeting</title><path d="M21.3 13.72a3.158 3.158 0 0 0-3.462.124.632.632 0 0 1-.682.035l-3.137-1.81a.08.08 0 0 1 0-.137l3.12-1.8a.632.632 0 0 1 .685.036 3.158 3.158 0 0 0 3.47.139A3.194 3.194 0 0 0 22.442 6.1a3.158 3.158 0 0 0-5.924 1.773.633.633 0 0 1-.311.606l-3.136 1.811a.08.08 0 0 1-.118-.068V6.6a.632.632 0 0 1 .372-.573 3.158 3.158 0 1 0-2.64 0 .632.632 0 0 1 .373.573v3.622a.08.08 0 0 1-.119.068L7.804 8.48a.632.632 0 0 1-.311-.605 3.157 3.157 0 1 0-1.307 2.294.633.633 0 0 1 .687-.038l3.12 1.8a.08.08 0 0 1 0 .137L6.854 13.88a.632.632 0 0 1-.683-.035 3.158 3.158 0 0 0-3.461-.124 3.194 3.194 0 0 0-1.143 4.202 3.159 3.159 0 0 0 5.924-1.792.633.633 0 0 1 .31-.61l3.137-1.81a.08.08 0 0 1 .119.068V17.4a.632.632 0 0 1-.372.573 3.158 3.158 0 1 0 2.64 0 .633.633 0 0 1-.373-.573v-3.621a.08.08 0 0 1 .118-.069l3.137 1.812a.631.631 0 0 1 .31.609 3.159 3.159 0 0 0 5.924 1.792A3.194 3.194 0 0 0 21.3 13.72Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/gov-dot-uk.svg b/assets/lib/simple-icons/icons/gov-dot-uk.svg
deleted file mode 100644
index 334e4895..00000000
--- a/assets/lib/simple-icons/icons/gov-dot-uk.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GOV.UK icon</title><path d="M2.4 13.031c.261-.64-.04-1.374-.682-1.638-.631-.262-1.362.049-1.623.688-.266.637.038 1.363.668 1.623.632.267 1.368-.037 1.623-.673m.858-3.244c.256-.636-.045-1.37-.691-1.639-.631-.258-1.367.053-1.639.687-.27.638.03 1.369.662 1.629.646.266 1.367-.039 1.639-.677m1.218-1.095c.645.264 1.367-.041 1.637-.675.256-.639-.045-1.375-.676-1.639-.632-.26-1.368.049-1.639.686-.271.638.046 1.367.678 1.626m3.156 1.053c.646.256 1.368-.045 1.64-.676.255-.646-.046-1.383-.691-1.639-.634-.271-1.37.046-1.626.676-.27.632.045 1.368.677 1.625M21.6 13.006c.271.631.993.933 1.639.661.632-.27.933-.992.661-1.639-.271-.646-1.008-.947-1.639-.676-.646.256-.945.992-.676 1.639m.752-2.57c.631-.257.931-.993.676-1.64-.271-.632-1.008-.946-1.639-.677-.646.271-.947.992-.676 1.639.256.632.993.933 1.624.678m-2.78-1.729c.631-.26.932-.992.672-1.631-.27-.646-1.001-.947-1.639-.686-.632.271-.937.992-.67 1.639.27.631 1.007.932 1.638.676m-3.412.858c.631-.271.932-1.007.677-1.639-.271-.646-.993-.947-1.64-.691-.631.271-.932 1.008-.661 1.639.271.632.993.932 1.64.662M9.425 4.935l.093 2.399 1.752-.923c.035.039.079.078.12.107-.181.718-.621 1.914-.896 2.575-.335.812.051 1.744.862 2.078.812.331 1.747-.06 2.083-.872.241-.57.121-1.188-.24-1.623-.391-.678-.781-1.533-.992-2.195.061-.045.105-.105.15-.15l1.895.977.09-2.39-1.969.632c-.016-.031-.031-.061-.045-.075l.766-2.181-2.33-.074.707 2.148c-.061.031-.105.076-.15.137l-1.896-.57zm11.896 9.109c.16.883.188 1.284-.015 1.859-.285-.286-.54-.807-.749-1.594l-.872 2.79c.52-.346.915-.565 1.364-.571-.815 1.713-1.819 2.146-2.461 2.021-.787-.158-1.15-.867-1.012-1.466.175-.842 1.052-1.052 1.448-.067.792-1.566-.52-2.078-1.368-1.624 1.313-1.28 1.468-2.426.426-3.836-1.464 1.106-1.49 2.21-.851 3.772-.842-.985-2.18-.466-1.713 1.113.627-.949 1.432-.346 1.298.565-.109.796-1.163 1.413-2.461 1.292-1.864-.165-1.954-1.457-1.983-2.525.451-.074 1.277.361 1.983 1.354l.286-2.962c-.767.782-1.474.946-2.24.962.271-.781 1.459-2.09 1.459-2.09l-3.729-.045s1.188 1.323 1.443 2.119c-.768-.014-1.459-.164-2.225-.961l.255 2.961c.706-.991 1.534-1.412 1.984-1.338-.045 1.053-.15 2.346-2.015 2.511-1.293.105-2.345-.526-2.449-1.323-.121-.901.691-1.503 1.307-.541.481-1.578-.856-2.104-1.699-1.127.662-1.564.647-2.676-.811-3.789-1.053 1.398-.902 2.541.405 3.85-.842-.467-2.165.029-1.383 1.607.405-.992 1.278-.766 1.458.076.12.601-.24 1.308-1.021 1.457-.646.121-1.639-.315-2.451-2.044.451.016.842.241 1.354.587l-.859-2.783c-.209.781-.48 1.295-.766 1.578-.186-.57-.166-.977.014-1.859l-1.803.613c.922 1.264 1.857 3.021 2.59 6.104 2.275-.376 6.157-.603 8.509-.603 2.345.015 6.229.285 8.494.691.767-3.081 1.713-4.825 2.646-6.073l-1.773-.646-.014-.015z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/grab.svg b/assets/lib/simple-icons/icons/grab.svg
new file mode 100644
index 00000000..5266c7e0
--- /dev/null
+++ b/assets/lib/simple-icons/icons/grab.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Grab</title><path d="M23.129 10.863a2.927 2.927 0 00-2.079-.872c-.57 0-1.141.212-1.455.421-.651.434-1.186.904-2.149 2.148v.894c.817-1.064 1.59-1.903 2.177-2.364.386-.31.933-.501 1.427-.501 1.275 0 2.352 1.077 2.352 2.352v.538c0 .63-.247 1.223-.698 1.668a2.341 2.341 0 01-1.654.685c-1.048 0-1.97-.719-2.22-1.701l-.422.51c.307 1.03 1.417 1.789 2.642 1.789.778 0 1.516-.31 2.079-.872.562-.562.871-1.3.871-2.079v-.538c0-.778-.31-1.517-.871-2.078m-12.8-.274c.406 0 .757.087 1.074.266.149-.186.299-.337.411-.449-.335-.256-.903-.415-1.485-.415-.83 0-1.584.3-2.122.843-.534.54-.83 1.287-.83 2.107v3.489h.598V12.94c0-1.385.968-2.352 2.354-2.352m5.678 5.84v-3.488c0-1.072-.84-1.913-1.913-1.913-.5 0-.976.203-1.343.57a1.895 1.895 0 00-.57 1.343v.538c0 1.037.877 1.913 1.913 1.913.285 0 .671-.07.908-.264v-.631c-.232.187-.57.298-.908.298a1.302 1.302 0 01-1.315-1.316v-.538a1.3 1.3 0 011.315-1.314 1.3 1.3 0 011.316 1.314v3.489zM0 12.596v.193c0 1.036.393 2.003 1.107 2.722a3.759 3.759 0 002.689 1.112c.82 0 1.548-.186 2.162-.551.506-.302.73-.607.75-.635V12.22H3.65v.597H6.11v2.434l-.002.002c-.288.288-.972.77-2.312.77a3.165 3.165 0 01-2.279-.938 3.247 3.247 0 01-.92-2.297v-.193c0-.83.375-1.656 1.026-2.269a3.558 3.558 0 012.442-.967c.847 0 1.438.129 1.913.416v-.67c-.494-.21-1.085-.305-1.913-.305C1.862 8.8 0 10.538 0 12.595m10.329-.968c.226 0 .419.037.571.112.075-.186.151-.339.262-.525-.162-.116-.549-.186-.833-.186-1.09 0-1.913.823-1.913 1.913v3.489h.598V12.94c0-.774.54-1.314 1.315-1.314m-4.351-.702v-.707c-.541-.29-1.131-.419-1.913-.419-.799 0-1.555.293-2.132.824-.577.532-.895 1.233-.895 1.972v.193c0 1.542 1.237 2.796 2.758 2.796 1.237 0 1.745-.405 1.874-.533v-1.794H3.65v.598h1.46v.899l-.005.001c-.187.075-.578.231-1.31.231-.58 0-1.122-.225-1.528-.636a2.203 2.203 0 01-.632-1.562v-.193c0-1.192 1.113-2.198 2.43-2.198.91 0 1.45.147 1.913.528m14.105 1.126c.27-.27.623-.424.967-.424.737 0 1.315.577 1.315 1.314v.538c0 .738-.578 1.316-1.315 1.316-.357 0-.702-.196-.972-.55a2.151 2.151 0 01-.418-1.12l-.484.591c.095.452.33.885.665 1.19.344.313.774.486 1.209.486a1.915 1.915 0 001.913-1.913v-.538c0-.499-.202-.977-.57-1.343a1.896 1.896 0 00-1.343-.57c-.316 0-.818.114-1.417.652l-.002.002c-.16.16-.536.536-.765.804-.384.42-.943 1.054-1.42 1.688v.933c.529-.68.833-1.06 1.33-1.634.445-.519.996-1.15 1.307-1.422m-8.939 1.428c0 .779.31 1.517.872 2.08a2.93 2.93 0 002.078.87c.33 0 .669-.07.908-.188v-.597c-.28.117-.618.188-.908.188-1.274 0-2.352-1.077-2.352-2.353v-.538c0-1.275 1.078-2.352 2.352-2.352a2.34 2.34 0 012.353 2.353v3.488h.598v-3.604a2.979 2.979 0 00-.915-2.006 2.92 2.92 0 00-2.036-.83c-.778 0-1.516.31-2.078.873a2.926 2.926 0 00-.872 2.078zm6.918-2.313c.183-.22.372-.443.596-.631V7.378h-.596zm1.037-.876V7.378h.597V9.88a3.601 3.601 0 00-.597.41"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/gradle.svg b/assets/lib/simple-icons/icons/gradle.svg
index ccef3e60..c7a86146 100644
--- a/assets/lib/simple-icons/icons/gradle.svg
+++ b/assets/lib/simple-icons/icons/gradle.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Gradle icon</title><path d="M22.7 4.3c-1.5-1.5-3.8-1.5-5.3-.1-.1.1-.1.2-.1.3 0 .1 0 .2.1.3l.5.5c.1.1.3.1.5 0 .4-.3.8-.4 1.3-.4 1.2 0 2.2 1 2.2 2.2 0 .6-.2 1.1-.6 1.5-3 3-7.1-5.4-16.2-1.1-.6.3-.9 1-.6 1.6v.1L6 11.9c.3.6 1.1.8 1.7.5l.7-.4c.8-.5 1.5-1 2.2-1.6.1-.1.4-.1.5 0 .2.1.2.3.1.5l-.1.1c-.7.6-1.5 1.2-2.3 1.7l-.7.3c-.3.2-.6.3-1 .3-.7 0-1.4-.4-1.7-1L3.9 9.7c-2.8 2-4.6 5.9-3.6 10.8 0 .2.2.3.4.3h1.7c.2 0 .3-.1.4-.3.2-1.4 1.4-2.3 2.8-2.1 1.1.1 2 1 2.1 2.1 0 .2.2.3.4.3h1.6c.2 0 .3-.1.4-.3.2-1.4 1.4-2.3 2.8-2.1 1.1.1 2 1 2.1 2.1 0 .2.2.3.4.3H17c.2 0 .4-.2.4-.4 0-2.3.7-4.9 2.4-6.2 5.9-4.6 4.3-8.5 2.9-9.9zm-6.2 6.9l-1.2-.6c0-.4.3-.7.7-.7.4 0 .7.3.7.7.1.3 0 .5-.2.6z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Gradle</title><path d="M22.695 4.297a3.807 3.807 0 0 0-5.29-.09.368.368 0 0 0 0 .533l.46.47a.363.363 0 0 0 .474.032 2.182 2.182 0 0 1 2.86 3.291c-3.023 3.02-7.056-5.447-16.211-1.083a1.24 1.24 0 0 0-.534 1.745l1.571 2.713a1.238 1.238 0 0 0 1.681.461l.037-.02-.029.02.688-.384a16.083 16.083 0 0 0 2.193-1.635.384.384 0 0 1 .499-.016.357.357 0 0 1 .016.534 16.435 16.435 0 0 1-2.316 1.741H8.77l-.696.39a1.958 1.958 0 0 1-.963.25 1.987 1.987 0 0 1-1.726-.989L3.9 9.696C1.06 11.72-.686 15.603.26 20.522a.363.363 0 0 0 .354.296h1.675a.363.363 0 0 0 .37-.331 2.478 2.478 0 0 1 4.915 0 .36.36 0 0 0 .357.317h1.638a.363.363 0 0 0 .357-.317 2.478 2.478 0 0 1 4.914 0 .363.363 0 0 0 .358.317h1.627a.363.363 0 0 0 .363-.357c.037-2.294.656-4.93 2.42-6.25 6.108-4.57 4.502-8.486 3.088-9.9zm-6.229 6.901l-1.165-.584a.73.73 0 1 1 1.165.587z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/grafana.svg b/assets/lib/simple-icons/icons/grafana.svg
index 6be83c95..a495a662 100644
--- a/assets/lib/simple-icons/icons/grafana.svg
+++ b/assets/lib/simple-icons/icons/grafana.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Grafana icon</title><path d="M22.999 10.626c-.043-.405-.106-.873-.234-1.384s-.341-1.065-.618-1.661c-.298-.575-.66-1.193-1.15-1.768-.192-.234-.405-.447-.618-.681.341-1.342-.405-2.513-.405-2.513-1.299-.085-2.108.405-2.406.618-.043-.021-.106-.043-.149-.064-.213-.085-.447-.17-.681-.256-.234-.064-.469-.149-.703-.192-.234-.064-.49-.106-.745-.149-.043 0-.085-.021-.128-.021C14.608.766 12.99 0 12.99 0c-1.853 1.193-2.215 2.79-2.215 2.79s0 .043-.021.085c-.106.021-.192.064-.298.085-.128.043-.277.085-.405.149s-.277.106-.405.17c-.277.128-.532.256-.809.405a8.52 8.52 0 0 0-.745.469c-.043-.021-.064-.043-.064-.043-2.492-.958-4.706.192-4.706.192-.192 2.662 1.001 4.323 1.235 4.621-.064.17-.106.319-.17.49a10.658 10.658 0 0 0-.405 1.853c-.021.085-.021.192-.043.277-2.3 1.129-2.981 3.471-2.981 3.471 1.917 2.215 4.174 2.343 4.174 2.343a9.61 9.61 0 0 0 .98 1.448c.149.192.319.362.49.554-.703 2.002.106 3.684.106 3.684 2.151.085 3.556-.937 3.854-1.171l.639.192c.66.17 1.342.277 2.002.298h.873c1.001 1.448 2.79 1.64 2.79 1.64 1.256-1.342 1.342-2.641 1.342-2.939v-.021-.043-.064c.256-.192.511-.383.767-.596.511-.447.937-.98 1.32-1.533.043-.043.064-.106.106-.149 1.427.085 2.428-.894 2.428-.894-.234-1.491-1.086-2.215-1.256-2.343l-.021-.021-.021-.021-.021-.021c0-.085.021-.17.021-.277.021-.17.021-.319.021-.49v-.213-.277-.128c0-.043 0-.085-.021-.128l-.043-.256c-.021-.17-.064-.319-.085-.49a6.327 6.327 0 0 0-.724-1.789 6.634 6.634 0 0 0-1.214-1.448 5.89 5.89 0 0 0-1.533-.98 5.368 5.368 0 0 0-1.682-.469c-.277-.043-.575-.043-.852-.043h-.128-.298c-.149.021-.298.043-.426.064-.575.106-1.107.319-1.576.596s-.873.639-1.214 1.043a4.284 4.284 0 0 0-.767 1.299c-.17.447-.277.937-.298 1.384v.511c0 .064 0 .106.021.17a3.642 3.642 0 0 0 .703 1.81c.256.341.532.596.852.809.319.213.639.362.98.469s.66.149.958.128h.446c.043 0 .085-.021.106-.021.043 0 .064-.021.106-.021.064-.021.149-.043.213-.064.128-.043.256-.106.383-.149.128-.064.234-.128.319-.192.021-.021.064-.043.085-.064a.24.24 0 0 0 .043-.341.298.298 0 0 0-.319-.064c-.021.021-.043.021-.085.043a1.43 1.43 0 0 1-.277.106c-.106.021-.213.064-.319.085-.064 0-.106.021-.17.021h-.361s-.021 0 0 0h-.086c-.022 0-.064 0-.085-.021-.234-.043-.49-.106-.724-.213s-.469-.256-.66-.447c-.213-.192-.383-.405-.532-.66s-.234-.532-.277-.809c-.021-.149-.043-.298-.021-.447v-.128c0 .021 0 0 0 0v-.043-.064c0-.085.021-.149.043-.234a3.114 3.114 0 0 1 .916-1.725c.128-.128.256-.234.405-.319.149-.106.298-.192.447-.256s.319-.128.49-.17c.17-.043.341-.085.511-.085.085 0 .17-.021.256-.021H15.228c.021 0 0 0 0 0h.085a4.046 4.046 0 0 1 1.619.49c.681.383 1.256.958 1.597 1.661.17.341.298.724.362 1.129.021.106.021.192.043.298v.554c0 .106-.021.213-.021.319-.021.106-.021.213-.043.319l-.064.319c-.021.106-.128.405-.192.618s-.362.788-.618 1.129a5.164 5.164 0 0 1-2.002 1.64c-.405.17-.809.319-1.235.383a3.221 3.221 0 0 1-.639.064h-.319c.021 0 0 0 0 0h-.021c-.106 0-.234 0-.341-.021-.469-.043-.916-.128-1.363-.256s-.873-.298-1.278-.511a6.956 6.956 0 0 1-2.108-1.746c-.277-.362-.532-.745-.745-1.15s-.362-.831-.49-1.256a5.489 5.489 0 0 1-.213-1.32v-.49-.17c0-.213.021-.447.064-.681.021-.234.064-.447.106-.681s.106-.447.17-.681.277-.873.469-1.278c.383-.809.873-1.533 1.448-2.108.149-.149.298-.277.469-.405.064-.064.213-.192.383-.298s.341-.213.532-.298c.085-.043.17-.085.277-.128.043-.021.085-.043.149-.064.043-.021.085-.043.149-.064.192-.085.383-.149.575-.213.043-.021.106-.021.149-.043s.106-.021.149-.043.192-.043.298-.085c.043-.021.106-.021.149-.043.043 0 .106-.021.149-.021s.106-.021.149-.021l.17-.043c.043 0 .106-.021.149-.021.064 0 .106-.021.17-.021.043 0 .128-.021.17-.021s.064 0 .106-.021h.149c.064 0 .106 0 .17-.021h.085s.021 0 0 0H15.033c.383.021.767.064 1.129.128a7.234 7.234 0 0 1 2.044.681 7.676 7.676 0 0 1 1.661 1.086c.021.021.064.043.085.085.021.021.064.043.085.085.064.043.106.106.17.149s.106.106.17.149c.043.064.106.106.149.17a7.88 7.88 0 0 1 1.406 1.98c.021.021.021.043.043.085.021.021.021.043.043.085s.043.106.085.149c.021.043.043.106.064.149s.043.106.064.149c.085.192.149.383.213.575.106.298.17.554.234.767a.204.204 0 0 0 .192.149c.106 0 .17-.085.17-.192-.021-.256-.021-.532-.043-.852z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Grafana</title><path d="M23.02 10.59a8.578 8.578 0 0 0-.862-3.034 8.911 8.911 0 0 0-1.789-2.445c.337-1.342-.413-2.505-.413-2.505-1.292-.08-2.113.4-2.416.62-.052-.02-.102-.044-.154-.064-.22-.089-.446-.172-.677-.247-.231-.073-.47-.14-.711-.197a9.867 9.867 0 0 0-.875-.161C14.557.753 12.94 0 12.94 0c-1.804 1.145-2.147 2.744-2.147 2.744l-.018.093c-.098.029-.2.057-.298.088-.138.042-.275.094-.413.143-.138.055-.275.107-.41.166a8.869 8.869 0 0 0-1.557.87l-.063-.029c-2.497-.955-4.716.195-4.716.195-.203 2.658.996 4.33 1.235 4.636a11.608 11.608 0 0 0-.607 2.635C1.636 12.677.953 15.014.953 15.014c1.926 2.214 4.171 2.351 4.171 2.351.003-.002.006-.002.006-.005.285.509.615.994.986 1.446.156.19.32.371.488.548-.704 2.009.099 3.68.099 3.68 2.144.08 3.553-.937 3.849-1.173a9.784 9.784 0 0 0 3.164.501h.08l.055-.003.107-.002.103-.005.003.002c1.01 1.44 2.788 1.646 2.788 1.646 1.264-1.332 1.337-2.653 1.337-2.94v-.058c0-.02-.003-.039-.003-.06.265-.187.52-.387.758-.6a7.875 7.875 0 0 0 1.415-1.7c1.43.083 2.437-.885 2.437-.885-.236-1.49-1.085-2.216-1.264-2.354l-.018-.013-.016-.013a.217.217 0 0 1-.031-.02c.008-.092.016-.18.02-.27.011-.162.016-.323.016-.48v-.253l-.005-.098-.008-.135a1.891 1.891 0 0 0-.01-.13c-.003-.042-.008-.083-.013-.125l-.016-.124-.018-.122a6.215 6.215 0 0 0-2.032-3.73 6.015 6.015 0 0 0-3.222-1.46 6.292 6.292 0 0 0-.85-.048l-.107.002h-.063l-.044.003-.104.008a4.777 4.777 0 0 0-3.335 1.695c-.332.4-.592.84-.768 1.297a4.594 4.594 0 0 0-.312 1.817l.003.091c.005.055.007.11.013.164a3.615 3.615 0 0 0 .698 1.82 3.53 3.53 0 0 0 1.827 1.282c.33.098.66.14.971.137.039 0 .078 0 .114-.002l.063-.003c.02 0 .041-.003.062-.003.034-.002.065-.007.099-.01.007 0 .018-.003.028-.003l.031-.005.06-.008a1.18 1.18 0 0 0 .112-.02c.036-.008.072-.013.109-.024a2.634 2.634 0 0 0 .914-.415c.028-.02.056-.041.085-.065a.248.248 0 0 0 .039-.35.244.244 0 0 0-.309-.06l-.078.042c-.09.044-.184.083-.283.116a2.476 2.476 0 0 1-.475.096c-.028.003-.054.006-.083.006l-.083.002c-.026 0-.054 0-.08-.002l-.102-.006h-.012l-.024.006c-.016-.003-.031-.003-.044-.006-.031-.002-.06-.007-.091-.01a2.59 2.59 0 0 1-.724-.213 2.557 2.557 0 0 1-.667-.438 2.52 2.52 0 0 1-.805-1.475 2.306 2.306 0 0 1-.029-.444l.006-.122v-.023l.002-.031c.003-.021.003-.04.005-.06a3.163 3.163 0 0 1 1.352-2.29 3.12 3.12 0 0 1 .937-.43 2.946 2.946 0 0 1 .776-.101h.06l.07.002.045.003h.026l.07.005a4.041 4.041 0 0 1 1.635.49 3.94 3.94 0 0 1 1.602 1.662 3.77 3.77 0 0 1 .397 1.414l.005.076.003.075c.002.026.002.05.002.075 0 .024.003.052 0 .07v.065l-.002.073-.008.174a6.195 6.195 0 0 1-.08.639 5.1 5.1 0 0 1-.267.927 5.31 5.31 0 0 1-.624 1.13 5.052 5.052 0 0 1-3.237 2.014 4.82 4.82 0 0 1-.649.066l-.039.003h-.287a6.607 6.607 0 0 1-1.716-.265 6.776 6.776 0 0 1-3.4-2.274 6.75 6.75 0 0 1-.746-1.15 6.616 6.616 0 0 1-.714-2.596l-.005-.083-.002-.02v-.056l-.003-.073v-.096l-.003-.104v-.07l.003-.163c.008-.22.026-.45.054-.678a8.707 8.707 0 0 1 .28-1.355c.128-.444.286-.872.473-1.277a7.04 7.04 0 0 1 1.456-2.1 5.925 5.925 0 0 1 .953-.763c.169-.111.343-.213.524-.306.089-.05.182-.091.273-.135.047-.02.093-.042.138-.062a7.177 7.177 0 0 1 .714-.267l.145-.045c.049-.015.098-.026.148-.041.098-.029.197-.052.296-.076.049-.013.1-.02.15-.033l.15-.032.151-.028.076-.013.075-.01.153-.024c.057-.01.114-.013.171-.023l.169-.021c.036-.003.073-.008.106-.01l.073-.008.036-.003.042-.002c.057-.003.114-.008.171-.01l.086-.006h.023l.037-.003.145-.007a7.999 7.999 0 0 1 1.708.125 7.917 7.917 0 0 1 2.048.68 8.253 8.253 0 0 1 1.672 1.09l.09.077.089.078c.06.052.114.107.171.159.057.052.112.106.166.16.052.055.107.107.159.164a8.671 8.671 0 0 1 1.41 1.978c.012.026.028.052.04.078l.04.078.075.156c.023.051.05.1.07.153l.065.15a8.848 8.848 0 0 1 .45 1.34.19.19 0 0 0 .201.142.186.186 0 0 0 .172-.184c.01-.246.002-.532-.024-.856z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/grammarly.svg b/assets/lib/simple-icons/icons/grammarly.svg
new file mode 100644
index 00000000..8d460d58
--- /dev/null
+++ b/assets/lib/simple-icons/icons/grammarly.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Grammarly</title><path d="M24 12c0 6.627-5.373 12-12 12S0 18.627 0 12C0 5.372 5.373 0 12 0c6.628 0 12 5.372 12 12m-9.633 1.626a.81.815 0 00-.799.965c.071.393.44.662.84.662h1.257l.729-.102c-1.166 1.71-3.19 2.498-5.405 2.15-1.802-.282-3.35-1.502-4.003-3.205-1.483-3.865 1.34-7.556 5.02-7.556 1.916 0 3.598 1.122 4.562 2.478.277.39.763.504 1.133.248a.795.8 0 00.236-1.069h.006a7.04 7.04 0 00-6.425-3.233c-3.508.236-6.347 3.107-6.55 6.617-.233 4.086 3.007 7.421 7.037 7.421a6.976 6.976 0 005.304-2.413l-.153.855v.773c0 .4.269.77.662.84a.814.814 0 00.964-.8v-4.63h-4.415"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/grandfrais.svg b/assets/lib/simple-icons/icons/grandfrais.svg
new file mode 100644
index 00000000..3c40956f
--- /dev/null
+++ b/assets/lib/simple-icons/icons/grandfrais.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Grand Frais</title><path d="M12.003 0a11.92 11.92 0 0 0-8.485 3.512A11.92 11.92 0 0 0 0 11.998c0 3.205 1.248 6.22 3.515 8.488A11.914 11.914 0 0 0 11.995 24a11.922 11.922 0 0 0 8.487-3.512A11.92 11.92 0 0 0 24 12.003c0-3.205-1.247-6.219-3.512-8.486A11.924 11.924 0 0 0 12.003 0zm0 1.336c5.879.002 10.66 4.785 10.66 10.664v.003l-.001.146H19.41c.488.15.816.594.884 1.233l.004.044-.933.103-.003-.046c-.04-.479-.313-.53-.428-.53-.258 0-.4.164-.4.463 0 .369.34.657.73.99.503.427 1.073.912 1.073 1.714 0 .845-.553 1.37-1.446 1.37-.9 0-1.341-.74-1.376-1.475l-.002-.04.933-.134.003.048c.031.469.208.738.485.738.298 0 .47-.156.47-.428 0-.443-.353-.737-.76-1.077-.489-.407-1.042-.868-1.042-1.698 0-.847.516-1.334 1.418-1.334.137 0 .266.02.386.057.627-.16.945-.667.945-1.513V8.61c.001-.545-.132-.953-.395-1.213-.237-.236-.584-.355-1.031-.355h-1.341l-.001 5.104h-.802l.002-5.104-.853-.002v.014l-.004 2.814a18946 18946 0 0 0-1.044-2.828h-.866l-.002 5.105h-.463l-.948-5.105h-1.145l-.951 5.105h-.314L9.46 9.874c.282-.136.613-.471.613-1.3 0-1.06-.47-1.533-1.525-1.534h-1.27v5.105h-.845l.001-2.589H4.93v.748h.565v.467c-.002.495-.126.679-.459.679-.263 0-.386-.162-.386-.509V8.318c0-.353.124-.53.366-.53.31 0 .479.148.479.934v.027h.898v-.353c0-.866-.532-1.427-1.355-1.427-.807 0-1.328.525-1.328 1.335v2.629c0 .576.241 1.008.645 1.21h1.1c.13-.073.239-.175.35-.303l.131.303h.451v.86H4.799v1.242h1.187v.863H4.799v2.288H3.82v-5.252H1.338l-.002-.146c0-2.85 1.11-5.527 3.126-7.541a10.591 10.591 0 0 1 7.54-3.121zm-3.785 6.48.287.001c.476 0 .628.184.628.757s-.152.757-.629.757h-.286zm10.307.003h.28c.454 0 .608.173.608.686v2.235c0 .282-.046.452-.149.554-.093.092-.235.132-.461.132h-.278zm-6.494.4.322 2.032h-.647l.056-.351.27-1.68zm2.84.884 1.073 3.04h.409v5.253h-.975v-5.25h-.507zm-6.243.985.609 2.058h-.49c1.001.03 1.45.514 1.45 1.565 0 .834-.324 1.18-.612 1.324l.76 2.361h-.997L8.72 15.26a4.527 4.527 0 0 1-.382.019v2.117h-.976v-5.253h.856v-2.037c.142 0 .303-.008.41-.018zm2.942.981h.92l.151 1.074h.635l.967 5.253h-.93l-.176-1.144h-.896l-.173 1.144h-.935l.968-5.25h-.682l.15-1.077zM8.338 12.96v1.5h.27c.47 0 .613-.175.613-.75 0-.574-.142-.75-.612-.75zm4.353.355-.328 2.151h.654z"/></svg>
diff --git a/assets/lib/simple-icons/icons/graphcool.svg b/assets/lib/simple-icons/icons/graphcool.svg
deleted file mode 100644
index 54f34667..00000000
--- a/assets/lib/simple-icons/icons/graphcool.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Graphcool icon</title><path d="M21.138 7.929c-1.167-.657-2.633.2-2.868.348l-5.037 2.857c-.744-.591-1.804-.566-2.519.06-.715.625-.881 1.671-.395 2.488s1.486 1.168 2.376.836 1.416-1.252 1.25-2.187l5.023-2.851.032-.019c.33-.209 1.096-.521 1.454-.319.258.146.405.633.417 1.35h-.006v6.301c-.001.588-.314 1.131-.823 1.426l-7.222 4.172c-.51.293-1.137.293-1.646 0l-7.222-4.172c-.509-.295-.822-.838-.823-1.426v-8.34c.001-.588.314-1.131.823-1.425l6.536-3.772c.621.713 1.664.882 2.479.4.815-.48 1.172-1.475.848-2.363-.324-.89-1.236-1.421-2.169-1.266-.934.156-1.623.955-1.641 1.901L3.262 5.823c-.942.542-1.522 1.544-1.524 2.63v8.338c.001 1.086.579 2.088 1.519 2.631l7.221 4.172c.94.541 2.097.541 3.037 0l7.222-4.172c.938-.543 1.517-1.545 1.519-2.629v-6.062h.005c.034-1.422-.347-2.363-1.123-2.802z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/graphql.svg b/assets/lib/simple-icons/icons/graphql.svg
index 8c919678..213d5a0c 100644
--- a/assets/lib/simple-icons/icons/graphql.svg
+++ b/assets/lib/simple-icons/icons/graphql.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GraphQL icon</title><path d="M14.051 2.751l4.935 2.85c.816-.859 2.173-.893 3.032-.077.148.14.274.301.377.477.589 1.028.232 2.339-.796 2.928-.174.1-.361.175-.558.223v5.699c1.146.273 1.854 1.423 1.58 2.569-.048.204-.127.4-.232.581-.592 1.023-1.901 1.374-2.927.782-.196-.113-.375-.259-.526-.429l-4.905 2.832c.372 1.124-.238 2.335-1.361 2.706-.217.071-.442.108-.67.108-1.181.001-2.139-.955-2.14-2.136 0-.205.029-.41.088-.609l-4.936-2.847c-.816.854-2.171.887-3.026.07-.854-.816-.886-2.171-.07-3.026.283-.297.646-.506 1.044-.603l.001-5.699c-1.15-.276-1.858-1.433-1.581-2.584.047-.198.123-.389.224-.566.592-1.024 1.902-1.374 2.927-.782.177.101.339.228.48.377l4.938-2.85C9.613 1.612 10.26.423 11.39.088 11.587.029 11.794 0 12 0c1.181-.001 2.139.954 2.14 2.134.001.209-.03.418-.089.617zm-.515.877c-.019.021-.037.039-.058.058l6.461 11.19c.026-.009.056-.016.082-.023V9.146c-1.145-.283-1.842-1.442-1.558-2.588.006-.024.012-.049.019-.072l-4.946-2.858zm-3.015.059l-.06-.06-4.946 2.852c.327 1.135-.327 2.318-1.461 2.645-.026.008-.051.014-.076.021v5.708l.084.023 6.461-11.19-.002.001zm2.076.507c-.39.112-.803.112-1.192 0l-6.46 11.189c.294.283.502.645.6 1.041h12.911c.097-.398.307-.761.603-1.044L12.597 4.194zm.986 16.227l4.913-2.838c-.015-.047-.027-.094-.038-.142H5.542l-.021.083 4.939 2.852c.388-.404.934-.653 1.54-.653.627 0 1.19.269 1.583.698z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GraphQL</title><path d="M12.002 0a2.138 2.138 0 1 0 0 4.277 2.138 2.138 0 1 0 0-4.277zm8.54 4.931a2.138 2.138 0 1 0 0 4.277 2.138 2.138 0 1 0 0-4.277zm0 9.862a2.138 2.138 0 1 0 0 4.277 2.138 2.138 0 1 0 0-4.277zm-8.54 4.931a2.138 2.138 0 1 0 0 4.276 2.138 2.138 0 1 0 0-4.276zm-8.542-4.93a2.138 2.138 0 1 0 0 4.276 2.138 2.138 0 1 0 0-4.277zm0-9.863a2.138 2.138 0 1 0 0 4.277 2.138 2.138 0 1 0 0-4.277zm8.542-3.378L2.953 6.777v10.448l9.049 5.224 9.047-5.224V6.777zm0 1.601 7.66 13.27H4.34zm-1.387.371L3.97 15.037V7.363zm2.774 0 6.646 3.838v7.674zM5.355 17.44h13.293l-6.646 3.836z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/grav.svg b/assets/lib/simple-icons/icons/grav.svg
index 61d7e507..0d284b03 100644
--- a/assets/lib/simple-icons/icons/grav.svg
+++ b/assets/lib/simple-icons/icons/grav.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Grav icon</title><path d="M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0zm6.489 13.965c-1.251-.825-1.965-1.523-2.589-2.777-.427.859-1.421 2.135-3.098 3.139-.84 2.61-4.823 7.605-6.113 6.885-.381-.195-.452-.48-.367-.765.093-.704 1.566-2.34 1.566-2.34s.029.345.494 1.065c-.629-1.936 1.021-4.305 1.456-5.131.689-.209.734-1.095.734-1.095.046-1.364-.569-2.34-1.155-2.94.421.525.556 1.306.57 2.025v.255c-.029.601-.21 1.41-.585 1.41v.016c-.39-.016-.885.074-1.319.21l-.961.239s.51-.015.78.226c-.314.51-1.005 1.125-1.771 1.484-1.109.525-1.439-.51-.869-1.17.135-.165.285-.3.404-.404-.09-.09-.135-.21-.149-.36-.075-.345-.045-.78.45-1.485.09-.149.21-.3.345-.449l.015-.016.016-.015v-.015c.029-.046.074-.076.104-.12.57-.585 1.485-1.2 2.911-1.74 1.694-2.49 2.309-2.956 2.309-2.956.181-.179.511-.419.615-.479-.87-1.515-1.049-3.646-.824-4.215-.03.03-.046.06-.061.105.09-.195.135-.255.225-.36.24-.27 1.035-.42 1.336.18.15.315.18.735.18 1.035-.645-.029-1.215.69-1.215.69s.524-.24 1.186-.255c0 0 .179.164.389.449-.284.556-.779 1.725-.42 2.971.061.24.15.45.256.629.015.016.015.016.015.031l.03.029c.585.886 1.649.976 1.649.976-.495-.24-.915-.646-1.169-1.125-.136-.255-.227-.48-.271-.646-.285-1.08.135-1.725.375-2.145.54-.84 1.544-1.351 2.609-1.23 1.5.165 2.581 1.53 2.399 3.03-.104.915-.659 1.681-1.409 2.085.181.494-.015 1.08-.015 1.08.449.57.479.9.465 1.215-.585-.09-1.141.301-1.141.301s1.111-.256 1.756.314c.42.449.704.87.869 1.17.24.435 1.35.465 1.229 1.23-.135.779-.989.779-2.31-.09l.074-.151zm-4.824-4.61c-.22-.219-.574-.219-.795 0l-.465.468c-.222.21-.222.57 0 .796l.51.51c.222.225.577.21.795 0l.47-.466c.221-.225.221-.585 0-.794l-.515-.525v.011zm-2.205-.186c-.14.14-.14.368 0 .511.141.138.368.138.51 0 .14-.143.14-.371 0-.511-.142-.141-.369-.141-.51 0zm1.269-.252c.142-.139.142-.366 0-.51-.141-.138-.367-.138-.51 0-.139.144-.139.371 0 .51.142.142.369.142.51 0zm5.385-1.304c.591-1.131-.247-1.791-.825-2.332-.924-.87-1.846-1.245-2.9-.029-1.052 1.199-.383 2.609.58 3.284.96.69 2.535.226 3.135-.915l.01-.008zm-1.595-.463c-.372-.445.322-1.252.757-.77.8.89-.387 1.216-.757.77z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Grav</title><path d="M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0zm6.489 13.965c-1.251-.825-1.965-1.523-2.589-2.777-.427.859-1.421 2.135-3.098 3.139-.84 2.61-4.823 7.605-6.113 6.885-.381-.195-.452-.48-.367-.765.093-.704 1.566-2.34 1.566-2.34s.029.345.494 1.065c-.629-1.936 1.021-4.305 1.456-5.131.689-.209.734-1.095.734-1.095.046-1.364-.569-2.34-1.155-2.94.421.525.556 1.306.57 2.025v.255c-.029.601-.21 1.41-.585 1.41v.016c-.39-.016-.885.074-1.319.21l-.961.239s.51-.015.78.226c-.314.51-1.005 1.125-1.771 1.484-1.109.525-1.439-.51-.869-1.17.135-.165.285-.3.404-.404-.09-.09-.135-.21-.149-.36-.075-.345-.045-.78.45-1.485.09-.149.21-.3.345-.449l.015-.016.016-.015v-.015c.029-.046.074-.076.104-.12.57-.585 1.485-1.2 2.911-1.74 1.694-2.49 2.309-2.956 2.309-2.956.181-.179.511-.419.615-.479-.87-1.515-1.049-3.646-.824-4.215-.03.03-.046.06-.061.105.09-.195.135-.255.225-.36.24-.27 1.035-.42 1.336.18.15.315.18.735.18 1.035-.645-.029-1.215.69-1.215.69s.524-.24 1.186-.255c0 0 .179.164.389.449-.284.556-.779 1.725-.42 2.971.061.24.15.45.256.629.015.016.015.016.015.031l.03.029c.585.886 1.649.976 1.649.976-.495-.24-.915-.646-1.169-1.125-.136-.255-.227-.48-.271-.646-.285-1.08.135-1.725.375-2.145.54-.84 1.544-1.351 2.609-1.23 1.5.165 2.581 1.53 2.399 3.03-.104.915-.659 1.681-1.409 2.085.181.494-.015 1.08-.015 1.08.449.57.479.9.465 1.215-.585-.09-1.141.301-1.141.301s1.111-.256 1.756.314c.42.449.704.87.869 1.17.24.435 1.35.465 1.229 1.23-.135.779-.989.779-2.31-.09l.074-.151zm-4.824-4.61c-.22-.219-.574-.219-.795 0l-.465.468c-.222.21-.222.57 0 .796l.51.51c.222.225.577.21.795 0l.47-.466c.221-.225.221-.585 0-.794l-.515-.525v.011zm-2.205-.186c-.14.14-.14.368 0 .511.141.138.368.138.51 0 .14-.143.14-.371 0-.511-.142-.141-.369-.141-.51 0zm1.269-.252c.142-.139.142-.366 0-.51-.141-.138-.367-.138-.51 0-.139.144-.139.371 0 .51.142.142.369.142.51 0zm5.385-1.304c.591-1.131-.247-1.791-.825-2.332-.924-.87-1.846-1.245-2.9-.029-1.052 1.199-.383 2.609.58 3.284.96.69 2.535.226 3.135-.915l.01-.008zm-1.595-.463c-.372-.445.322-1.252.757-.77.8.89-.387 1.216-.757.77z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/gravatar.svg b/assets/lib/simple-icons/icons/gravatar.svg
index 75a401bf..c71470fd 100644
--- a/assets/lib/simple-icons/icons/gravatar.svg
+++ b/assets/lib/simple-icons/icons/gravatar.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Gravatar icon</title><path d="M12 0c-1.326 0-2.4 1.074-2.4 2.4v8.4c0 1.324 1.074 2.398 2.4 2.398s2.4-1.074 2.4-2.398V5.21c2.795.99 4.799 3.654 4.799 6.789 0 3.975-3.225 7.199-7.199 7.199S4.801 15.975 4.801 12c0-1.989.805-3.789 2.108-5.091.938-.938.938-2.458 0-3.396s-2.458-.938-3.396 0C1.344 5.686 0 8.686 0 12c0 6.627 5.373 12 12 12s12-5.373 12-12S18.627 0 12 0"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Gravatar</title><path d="M12 0c-1.326 0-2.4 1.074-2.4 2.4v8.4c0 1.324 1.074 2.398 2.4 2.398s2.4-1.074 2.4-2.398V5.21c2.795.99 4.799 3.654 4.799 6.789 0 3.975-3.225 7.199-7.199 7.199S4.801 15.975 4.801 12c0-1.989.805-3.789 2.108-5.091.938-.938.938-2.458 0-3.396s-2.458-.938-3.396 0C1.344 5.686 0 8.686 0 12c0 6.627 5.373 12 12 12s12-5.373 12-12S18.627 0 12 0"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/graylog.svg b/assets/lib/simple-icons/icons/graylog.svg
new file mode 100644
index 00000000..ca0bdcc5
--- /dev/null
+++ b/assets/lib/simple-icons/icons/graylog.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Graylog</title><path d="M6.93 11.369a.84.84 0 01.75.45h.705l1.112-2.675a.483.483 0 01.3-.278c.235-.042.47.086.513.321l1.177 5.177 1.198-6.974a.41.41 0 01.32-.342.44.44 0 01.535.321l1.284 5.24.663-1.946a.449.449 0 01.17-.235c.193-.129.471-.086.6.107l.556.791c.021.193.021.385.021.578a8.3 8.3 0 01-.043.748c-.085-.021-.15-.085-.213-.15l-.557-.77-.855 2.589a.448.448 0 01-.556.278.393.393 0 01-.278-.3l-1.156-4.663-1.219 7.08a.449.449 0 01-.492.364c-.192-.021-.32-.17-.363-.363l-1.305-5.99-.706 1.69a.439.439 0 01-.406.278H7.679a.863.863 0 01-.748.428.88.88 0 01-.877-.877c.02-.47.406-.877.877-.877zM12 .396c6.973 0 12 5.369 12 11.615 0 6.353-4.77 11.593-12 11.593S0 18.364 0 12.011C-.02 5.765 5.005.396 12 .396zM4.064 12.01c0 4.256 3.658 8 7.915 8 4.256 0 7.914-3.744 7.914-8 0-4.6-3.658-8.043-7.914-8.043-4.236 0-7.915 3.444-7.915 8.043z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/greenkeeper.svg b/assets/lib/simple-icons/icons/greenkeeper.svg
deleted file mode 100644
index d591e576..00000000
--- a/assets/lib/simple-icons/icons/greenkeeper.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Greenkeeper icon</title><path d="M12.04 22.547a2.206 2.206 0 0 1-2.014-3.108l-2.699-1.8a2.201 2.201 0 1 1 .42-.626l2.702 1.8c.082-.085.172-.164.267-.236l-4.33-8.659a2.209 2.209 0 1 1 .672-.343l4.33 8.659c.077-.024.156-.044.235-.059v-4.128a2.206 2.206 0 0 1 0-4.333v-3.89a2.206 2.206 0 1 1 .755.014v3.866a2.205 2.205 0 0 1 0 4.359v4.097c.082.013.164.03.244.052l4.32-8.638a2.202 2.202 0 1 1 .672.344l-4.309 8.617c.1.07.194.148.28.233l2.616-1.776a2.209 2.209 0 1 1 .44.613l-2.615 1.777a2.206 2.206 0 0 1-1.986 3.165zM12 24C5.373 24 0 18.628 0 12a12 12 0 0 1 3.515-8.485c4.686-4.686 12.284-4.686 16.97 0s4.687 12.284 0 16.97A11.921 11.921 0 0 1 12 24zM12 .755C5.79.755.755 5.79.755 12c0 2.982 1.185 5.843 3.294 7.951 4.376 4.407 11.495 4.433 15.902.057s4.432-11.496.057-15.903A11.173 11.173 0 0 0 12 .755z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/greensock.svg b/assets/lib/simple-icons/icons/greensock.svg
index 4a625175..7b31c927 100644
--- a/assets/lib/simple-icons/icons/greensock.svg
+++ b/assets/lib/simple-icons/icons/greensock.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GreenSock icon</title><path d="M13.473 23.948c-.311-.053-.639-.2-.82-.365a.702.702 0 0 1-.198-.487c0-.18.09-.44.242-.696a2.2 2.2 0 0 0 .209-.465c.03-.113.096-.3.147-.417l.091-.212.024-1.436c.013-.79.037-1.526.053-1.638a4.94 4.94 0 0 1 .253-.962l.084-.209-.123-.073c-.115-.069-.21-.168-.58-.608-.457-.54-1.057-.836-1.908-.94a16 16 0 0 0-.84-.057c-1.252-.058-1.966-.319-2.61-.952-.48-.474-.731-1.025-.833-1.836-.138-1.098-.29-1.663-.57-2.12a2.035 2.035 0 0 0-.237-.315l-.114-.113-.25.16c-.139.088-.329.203-.423.255a8.301 8.301 0 0 0-.896.571c-.696.507-1.459 1.142-1.877 1.562-.188.188-.287.267-.327.262-.288-.043-.066-1.28.396-2.21.595-1.197 1.593-2.303 2.752-3.051.95-.613 2.485-1.456 3.196-1.753 1.26-.527 2.892-1.098 4.01-1.403.236-.064.381-.122.477-.19.22-.153.434-.225.681-.23.206-.003.226-.01.425-.14.235-.152.302-.162.538-.08l.154.055.187-.127.188-.127.27.006c.205.004.299-.007.387-.046.114-.05.118-.056.15-.245.072-.406.08-.61.037-.854-.058-.324-.063-1.584-.008-1.829.059-.266.097-.319.295-.417.297-.147.519-.188 1.032-.188.624 0 .94.084 1.174.31.212.206.248.68.137 1.8-.064.642-.072.823-.055 1.244.01.271.027.524.037.561.017.065.032.069.259.074.221.004.26.014.471.125.204.106.356.234.386.325.006.02.04.021.104.003.118-.035.225.003.309.109.051.065.083.078.203.078.16 0 .216.038.349.234a.598.598 0 0 0 .246.2c.22.11.515.414.63.654.175.362.212.777.101 1.154-.04.14-.04.145.042.282.174.29.237.65.167.954l-.041.18.118.117c.583.583.497 1.531-.215 2.38-.076.09-.165.232-.198.318-.14.363-.294.618-.499.828l-.204.21h-.214c-.21 0-.505-.07-.685-.165-.075-.039-.08-.038-.065.01.05.172.164.87.205 1.255.063.594.044 1.458-.04 1.829a2.85 2.85 0 0 1-.297.785c-.076.126-.083.155-.066.304.024.217-.027.576-.115.813-.104.277-.143.407-.166.546-.02.122-.02.123.066.123.115 0 .175.068.175.199 0 .06-.05.374-.112.7-.171.908-.182 1.013-.184 1.895-.003.909-.004.902.204 1.037l.464.302a6.37 6.37 0 0 0 1.276.656c.653.258.743.324.743.544 0 .095-.019.133-.1.211-.252.243-.744.297-1.737.192a16.668 16.668 0 0 0-1.55-.075c-1.365-.02-1.567-.067-1.745-.408-.102-.195-.084-.45.059-.868a5.86 5.86 0 0 0 .163-.56c.093-.455.03-.993-.188-1.604l-.185-.518c-.186-.528-.286-1.494-.176-1.712.02-.04.054-.05.146-.044l.119.01.096-.204c.075-.158.158-.264.38-.488l.285-.286-.014-.182c-.014-.174-.243-1.027-.276-1.025-.009 0-.073.088-.144.195-.17.258-.552.658-.766.802-.094.064-.172.137-.172.162-.002.103-.094.31-.201.455-.106.143-.113.163-.097.29.024.183-.033.773-.104 1.08a3.482 3.482 0 0 1-.257.665c-.27.56-.472 1.058-.525 1.29a5.534 5.534 0 0 0-.068.673c-.013.264-.04.524-.06.577-.026.075-.027.132-.002.246.018.082.03.266.027.41-.004.2.012.33.07.564.1.397.122.647.073.796-.03.092-.064.129-.166.18-.237.12-.899.185-1.259.123zm.95-.318c.137-.039.252-.159.252-.263 0-.045-.04-.183-.087-.306-.09-.23-.254-.837-.254-.938 0-.054.004-.055.085-.012l.085.045-.002-.11a1.326 1.326 0 0 0-.064-.295c-.074-.223-.084-.228-.554-.254l-.322-.017-.115.113a1.03 1.03 0 0 0-.169.22c-.052.103-.072.255-.038.29.008.009.085 0 .17-.02a.755.755 0 0 1 .155-.029c0 .005-.086.073-.192.151-.47.348-.633.564-.633.837 0 .286.266.508.688.574.29.046.854.054.995.014zm6.354-.465c.117-.142.103-.285-.046-.45a1.223 1.223 0 0 0-.292-.22 3.668 3.668 0 0 1-.328-.195c-.086-.06-.362-.22-.612-.36a8.634 8.634 0 0 1-.527-.306l-.07-.055v-1.075c0-1.06-.002-1.073-.058-1.058-.273.075-.726.109-1.302.098l-.619-.01.088.218c.167.416.254.97.253 1.606 0 .238-.014.326-.073.492a8.78 8.78 0 0 0-.087.249c-.011.035.032.06.194.108.115.035.289.071.387.082l.178.018-.018.181c-.02.205.003.418.054.486.029.038.149.052.69.078.412.02.858.062 1.209.114.305.045.633.084.73.085.162.003.18-.003.249-.086zm-6.252-1.831c.015-.01.037-.222.047-.471.031-.7.057-.8.41-1.589.287-.644.441-1.245.427-1.673l-.008-.254-.107.106c-.227.225-.071-.13.197-.447.203-.24.273-.375.307-.587.014-.086.047-.13.18-.23.502-.385.867-.87 1.103-1.463.056-.141.198-.62.315-1.066.218-.826.335-1.179.44-1.333.04-.059.055-.068.045-.029-.06.235-.08.33-.13.637-.032.191-.09.564-.128.828-.078.532-.156.876-.261 1.144l-.07.178.189.485c.193.497.283.855.302 1.205l.01.192-.154.032a.784.784 0 0 0-.497.314c-.136.19-.208.348-.173.384.015.015.207.05.425.075.342.04.47.042.919.013a5.73 5.73 0 0 0 .579-.056c.042-.015.083-.101.154-.323.162-.51.193-.693.174-1.05l-.016-.317.082-.105c.192-.244.34-.682.4-1.19.075-.626-.06-1.936-.315-3.062-.12-.533-.17-.854-.17-1.09v-.207l-.193.02c-.687.076-1.518.055-2.028-.05-.276-.056-.976-.26-1.13-.329l-.119-.053-.017.135a2.093 2.093 0 0 1-.04.226c-.023.085-.014.102.131.246.18.18.236.276.236.402 0 .075-.045.138-.263.367-.16.168-.364.345-.52.449l-.256.172-.106.376c-.394 1.39-.468 2.649-.21 3.554l.064.226-.125.155c-.47.592-.746 1.041-.788 1.29-.008.05-.048.215-.088.367-.1.386-.178.953-.212 1.566a43.822 43.822 0 0 1-.104 1.539l-.017.152.195.06c.108.033.273.073.367.087.174.028.499.023.548-.008zm3.793-2.148c.303-.018.581-.066.635-.11.023-.018.05-.1.06-.18l.017-.148-.24.053a5.127 5.127 0 0 1-.577.078 9.474 9.474 0 0 1-1.382-.04c-.152-.023-.153-.022-.103.177.037.15.045.154.445.185.266.02.634.016 1.145-.015zm-.255-.68c.396-.033.894-.118.99-.17.031-.017.061-.074.072-.139l.036-.208.018-.099-.096.02c-.433.091-.762.118-1.42.118-.639 0-.712-.006-.88-.063a.603.603 0 0 0-.206-.048c-.028.017-.03.24-.005.395.015.095.03.111.125.138.297.08.796.101 1.366.055zm-7.249-3.523c1-.286 2.308-1.137 3.377-2.197.35-.348.39-.397.437-.55l.064-.199c.007-.016-.056-.045-.138-.065-.216-.052-.377-.174-.379-.288 0-.066-.04-.132-.15-.255-.187-.208-.233-.298-.253-.497l-.016-.158-.216-.158c-.124-.09-.564-.332-1.028-.565a14.706 14.706 0 0 1-1.039-.561c-.39-.264-.653-.576-.8-.947-.029-.076-.063-.138-.075-.138-.033 0-.91.85-1.286 1.247-.924.977-1.563 1.825-1.964 2.61-.1.195-.21.425-.242.511l-.06.157.073.26c.04.143.13.373.2.51.246.484.541.777 1.024 1.015.52.257.98.346 1.75.337.416-.005.535-.016.721-.07zM2.921 11.56c.657-.582 1.563-1.22 2.674-1.882.727-.433 3.533-1.837 4.826-2.414.234-.105.446-.201.47-.215.023-.013.091-.18.151-.369.276-.869.412-1.041.908-1.153.063-.014.078-.034.078-.099 0-.11.078-.374.145-.491.05-.09.051-.095.005-.082-.027.009-.19.056-.363.106-2.38.687-4.462 1.6-6.26 2.742-1.92 1.22-3.022 2.68-3.343 4.429l-.024.13.232-.231c.127-.127.353-.339.501-.47zm17.677.33c.19-.098.487-.548.597-.902a.812.812 0 0 1 .182-.338c.292-.32.531-.905.532-1.304 0-.62-.349-.859-.863-.592-.064.033-.121.055-.127.048-.029-.029.117-.17.29-.28.233-.15.277-.24.277-.566 0-.271-.069-.493-.225-.733-.07-.105-.098-.177-.087-.218l.072-.264c.096-.347.061-.744-.088-.997-.227-.385-.506-.573-.894-.602l-.225-.017.134.147c.392.429.583.963.508 1.42-.039.232-.077.28-.303.372l-.13.053.015.179c.026.295-.024.508-.212.905-.093.198-.164.376-.157.395.025.067.28.195.483.244l.2.048-.125.04c-.161.053-.198.126-.199.397 0 .245.035.346.217.616.08.118.135.237.144.308.015.111.01.118-.08.151a1.52 1.52 0 0 1-.31.05c-.367.023-.395.033-.558.19-.15.143-.153.151-.153.307 0 .215.08.645.132.704.064.073.436.255.58.283a.544.544 0 0 0 .373-.044zm-5.41-.294c.239-.187.425-.374.532-.535.065-.098.069-.117.036-.197-.052-.127-.411-.45-.611-.547a1.463 1.463 0 0 0-.418-.12l-.246-.034-.154-.192c-.314-.39-.49-.693-.742-1.282-.216-.502-.409-.795-.713-1.082-.125-.118-.217-.215-.206-.215.012 0 .161.073.333.163.288.151.321.162.451.146.465-.056.873-.591 1.024-1.34.043-.214.127-.429.218-.557.004-.005.182.115.395.267.534.38.652.436.955.448.202.008.314-.008.672-.094.765-.186 1.594-.262 2.1-.193.285.039.692.163 1 .306.301.14.359.148.457.062.08-.07.081-.08.08-.342-.002-.386-.144-.804-.36-1.053-.11-.129-.415-.34-.72-.501a12.227 12.227 0 0 1-.327-.178c-.142-.083-.309-.073-.752.044-.515.135-.652.133-1.243-.018-.499-.128-.532-.13-1.022-.053-.261.041-.918.017-1.138-.041a4.228 4.228 0 0 1-.325-.104c-.19-.071-.522-.083-.822-.03-.6.107-1.054.43-1.218.87-.084.224-.073.329.042.401.177.112.416.421.416.54 0 .01-.056-.041-.125-.113-.166-.174-.32-.251-.5-.251a.62.62 0 0 0-.55.362 3.846 3.846 0 0 0-.133.42c-.11.402-.206.612-.412.892-.186.253-.211.366-.146.651.164.719.448 1.011 1.639 1.686.625.354.948.553 1.182.729.179.133.184.14.168.243-.037.233.112.49.406.695.075.052.122.107.122.143 0 .072.196.17.343.17.08 0 .145-.034.313-.166zm4.815-1.314c.454.013.479-.019.235-.301-.254-.295-.323-.532-.23-.794l.037-.102-.159-.078a1.167 1.167 0 0 0-.163-.072 7.965 7.965 0 0 0-.079.31c-.058.24-.13.856-.131 1.12 0 .023.038.013.105-.028.092-.055.14-.062.385-.055zm-1.518-.025c.273-.015.556-.036.63-.046l.134-.018.017-.452c.023-.64.115-1.018.393-1.622.198-.43.281-.807.24-1.086-.018-.122-.025-.13-.188-.201a4.295 4.295 0 0 0-.934-.253c-.31-.045-1.214-.019-1.555.045-.14.026-.397.08-.57.121-.426.1-.652.087-.976-.055-.32-.141-.524-.268-.717-.448-.151-.141-.165-.148-.206-.101-.03.035-.047.14-.057.368-.014.347-.066.53-.22.777a.832.832 0 0 0-.086.16c0 .012.119.146.264.296.499.52.744.654 1.138.624.13-.01.22-.006.22.01 0 .029-.254.23-.361.286-.048.025-.06.053-.052.113l.06.408c.036.236.064.343.1.375.093.08.577.33.88.452.401.163.617.221.924.247.373.031.381.031.922 0zm-3.23-.427c.008-.015-.022-.24-.07-.502-.063-.356-.098-.485-.137-.518-.03-.024-.173-.128-.319-.231a5.503 5.503 0 0 1-.537-.452l-.271-.264-.142.075-.154.083a.7.7 0 0 0 .064.176c.04.093.126.323.19.51.165.489.291.723.616 1.148l.124.161.23.036c.126.02.257.046.291.059.056.021.063.012.08-.115a.755.755 0 0 1 .034-.166zm4.948-4.86c.2-.019.234-.05.147-.138-.052-.053-.179-.059-.28-.012-.068.031-.082.024-.187-.09-.11-.122-.116-.125-.254-.108-.125.015-.144.01-.16-.041a1.078 1.078 0 0 0-.18-.226.842.842 0 0 0-.325-.23c-.243-.092-.378-.082-.609.045-.667.365-.64.361-1.283.197-.603-.154-1.054-.307-1.197-.407-.12-.083-.379-.17-.593-.2-.16-.022-.264.013-.416.14l-.08.066.072.128c.102.181.092.191-.062.06-.163-.14-.357-.234-.485-.235-.089 0-.355.115-.387.168-.009.014.073.033.181.043.115.01.271.048.376.093.272.116.414.154.664.18.273.026.771-.005.828-.053.029-.025.115-.029.296-.015.238.018.337.04.903.193.328.09.558.083.949-.026.18-.05.406-.1.501-.11.16-.017.192-.01.44.103.4.18.61.296.728.4.117.1.13.103.413.076zm-2.228-.684l.238-.124-.005-.245a11.964 11.964 0 0 0-.022-.495l-.017-.251-.238.184c-.141.11-.278.192-.339.203-.171.033-1.016 0-1.096-.042a2.31 2.31 0 0 1-.291-.259l-.22-.22-.003.13c0 .07-.011.192-.024.268-.022.138-.02.142.13.333.084.107.152.202.152.212 0 .076 1.128.426 1.382.43.081 0 .184-.036.353-.124zm-.452-.889c.282-.054.42-.258.523-.773.11-.554.166-1.425.113-1.797-.047-.334-.419-.485-1.136-.461-.444.015-.628.059-.779.187-.094.08-.096.087-.137.457-.08.711.036 1.724.24 2.105.097.183.184.25.365.28.203.035.635.036.811.002z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GreenSock</title><path d="M17.21 0c-.545.003-1.084.134-1.256.367-.11.165-.192 1.196-.11 1.718 0 0 .032.345.09.614a14.6 14.6 0 0 1-.02.182 7.024 7.024 0 0 1-.097.605c-.01.056-.207.095-.425.152a2.495 2.495 0 0 0-.138-.042c-.234-.069-.385.123-.618.26-.069-.04-.371-.178-.536-.082-.165.096-.275.193-.44.261-.082-.041-.302-.041-.48.028a1.27 1.27 0 0 0-.483.278c-2.314.58-4.813 1.635-5.012 1.741-1.017.522-2.679 1.415-3.434 2.033-1.291 1.071-2.06 2.322-2.363 3.242-.385 1.14-.275 1.827.096 1.387.298-.366 1.632-1.454 2.475-1.999l-.002.007a3.219 3.219 0 0 1 .44-.26l.233-.124.505-.323c.602.552.803 1.433.937 2.63.22 1.841 1.704 2.693 3.434 2.72 1.8.028 2.446.399 3.119 1.305.153.201.318.307.47.368a1.954 1.954 0 0 0-.16.405c-.075.17-.125.38-.157.608a.157.157 0 0 0-.03.075c-.068.536-.055 1.8-.068 2.473-.014.673-.028.77-.083.866-.055.11-.11.178-.178.467-.069.302-.193.384-.316.631-.206.385-.165.81.041 1.003.206.192.77.481 1.538.385.77-.096.88-.151.756-.893-.014-.11-.192-.605-.137-.797.082-.206-.096-.563-.055-.577.041-.014.096-.288.096-.426 0-.137-.014-.796.137-1.14.062-.14.193-.46.326-.785.442-.723.459-1.161.48-1.41.03-.202.046-.46.018-.744.055-.083.289-.275.316-.646 0 0 .644-.337 1.102-1.148.16.557.31.91.286 1.272-.499.39-.684.678-.76.959-.048-.02-.076-.037-.11-.04h-.027a.437.437 0 0 0-.106.029c-.192.068-.041 1.318.165 1.827.206.508.316.81.398 1.36.083.549-.192 1.222-.302 1.524 0 0-.179.536.233.824.358.248 1.704.18 2.308.18.605 0 1.511.219 2.088.109.715-.124.824-.55.399-.77-.426-.22-1.072-.329-1.91-.933-.22-.152-.522-.289-.563-.412-.041-.124-.041-.838-.027-1.457.013-.618.22-1.414.288-1.84.064-.398-.076-.388-.262-.351.032-.147.066-.292.097-.446.344-.632.193-1.223.193-1.223.82-1.044.4-3.27.22-4.048.64.303.96.188.96.188.102-.055.192-.134.274-.224.337-.362.51-.916.51-.916V11c.782-.783 1.151-1.936.26-2.692a1.331 1.331 0 0 0-.219-1.263 1.56 1.56 0 0 0-.37-1.731 1.36 1.36 0 0 0-.487-.297c-.2-.295-.245-.417-.572-.349-.15-.165-.178-.288-.494-.178 0 0-.096-.234-.275-.289a.25.25 0 0 0-.05-.015c-.302-.21-.576-.215-.772-.16-.064-.048-.061-.124-.07-.388-.008-.2-.019-.486-.031-.744.027-.328.102-.974.126-1.303.028-.37.042-.948-.123-1.195C18.303.12 17.754-.003 17.21 0zm-.005.34c.7 0 1.002.22 1.044.343.013.028.082.495.04.797-.013.11-.027.509-.054.687-.014.179-.069.385-.124.673-.041.234-.233.495-.384.536-.261.069-.742.055-1.017 0-.069-.014-.124-.055-.192-.096-.151-.248-.234-.44-.261-.742-.028-.289-.083-.412-.096-.632-.014-.33-.014-.55-.014-.55.014-.178.069-.618.069-.659.013-.123.233-.357.989-.357zm-1.133 2.702c.146.149.301.306.432.416.124.11.426.096.7.096.248 0 .468.028.564-.027.154-.077.355-.235.523-.394.011.152.022.304.026.435.01.295-.043.468.024.57-.082.048-.174.105-.269.156-.151.08-.306.136-.403.115h-.002c-.209-.035-.931-.215-1.331-.407-.167-.259-.335-.398-.326-.448.027-.137.04-.247.054-.425.004-.03.005-.058.008-.088zm-.853.69l.035.001c.424.036.65.152.808.284l.076.03.008-.027c.047.03.102.06.162.088.47.159 1.104.308 1.309.353.247.055.645-.192.838-.316.343-.22.783-.04.989.193.137.15.192.247.192.288.316-.11.357.041.508.206.385-.179.412.041.44.137-.122 0-.298.014-.538.04l-.012-.012c-.144-.153-.402-.289-.599-.384-.087-.031-.18-.049-.252-.097-.11-.055-.22-.137-.385-.123-.687.082-.824.315-1.415.178-.577-.134-.737-.254-1.333-.221l.001.026c-.105.016-.2.03-.22.03-.206.012-.722.067-1.153-.1a1.256 1.256 0 0 0-.161-.076l-.005-.002h-.001c-.18-.07-.39-.11-.63-.112h-.026c.218-.11.356-.259.56-.218.22.041.44.22.564.357a.858.858 0 0 0-.178-.288c.128-.09.245-.229.418-.234zm-1.1.545c.15.002.28.026.417.073.018.009.034.018.059.029.288.137.81.164 1.25.137a2.26 2.26 0 0 0 .563-.095c.322.024.514.11.977.216.31.07.502.045.695-.007.193-.053.386-.13.723-.17a.542.542 0 0 1 .188.013c.038.02.075.04.11.061.062.049.214.135.343.189.164.068.59.357.645.425a.1.1 0 0 0 .038.03c.242.314.407.755.396 1.21-.06.46-.426.214-.626.12-.412-.178-.824-.302-1.305-.302-.48 0-1.099.041-1.635.179-.741.206-.961.192-1.29.027-.33-.178-.907-.618-.907-.618v.01c-.007-.007-.012-.012-.014-.01-.042.069-.138.247-.193.33-.027.522-.343 1.346-.934 1.552a.547.547 0 0 1-.467-.041 2.503 2.503 0 0 0-.55-.275c.481.384.729.673.949 1.181.174.43.415 1.017 1.002 1.646.363-.004.725.097.962.346.137.137.357.289.33.426 0 .041-.083.151-.151.234a3.231 3.231 0 0 1-.207.22c-.054.04-.247.192-.288.22-.041.027-.096.095-.137.109-.138.069-.289.014-.426-.055s.027-.082-.124-.192c-.34-.24-.541-.411-.454-.832-.932-.794-2.561-1.26-2.911-2.108-.22-.55-.248-.824-.042-1.058.605-.687.371-1.346.825-1.634.425-.275.783.04.989.33-.124-.509-.55-.633-.55-.674 0-.632.605-1.071 1.21-1.181.218-.041.389-.062.54-.06zm-1.847.534c-.14.196-.231.435-.246.721-.206.028-.673.055-.907.907a3.39 3.39 0 0 1-.214.62c-.103.045-2.946 1.274-5.229 2.542l-.01-.007c-.32.18-.627.363-.919.546l-.125.077-.001.003c-1.136.723-2.04 1.45-2.637 2.112.412-2.679 2.528-4.08 3.53-4.698 2.42-1.489 4.629-2.225 6.758-2.823zm8.037.323c.26-.004.536.06.756.275.59.577.425 1.209.247 1.648.15.179.508.687.288 1.291-.04.138-.343.138-.563.495.55-.316.893-.233 1.017.165.192.618-.234 1.36-.605 1.772 0-.014-.014-.028-.014-.041-.055.206-.123.604-.535 1.044-.206.22-.371.192-.605.137-.215-.054-.322-.142-.543-.276-.036-.207-.102-.482-.102-.59 0-.044-.004-.141-.01-.243.032-.036.066-.074.106-.114 0 0 .178-.247.44-.233.26.014.535-.041.604-.11 0-.48-.55-.494-.357-1.319.013-.04.082-.11.302-.137-.33-.069-.48-.083-.714-.302l-.013-.013c.11-.253.224-.457.301-.605.193-.385.082-.852.082-.852.207-.069.385-.179.413-.247.203-.673-.164-1.322-.605-1.74.036-.003.073-.005.11-.006zm-5.46.925c.01.016.02.033.034.05.179.22.577.495 1.113.673.26.083.467.028.7-.027 1.123-.278 2.304-.346 3.33.155a1.82 1.82 0 0 1-.157 1.068c-.232.465-.533 1.068-.48 2.215-.246.044-1.419.144-1.992.037-.521-.097-1.416-.525-1.62-.69a6.703 6.703 0 0 1-.125-.848 1.37 1.37 0 0 0 .454-.343c-.412.068-.577.04-.825-.097-.235-.13-.642-.533-.87-.82.229-.29.393-.69.335-1.226.037-.05.07-.099.102-.147zm-4.38 1.598c-.09.253.093.654.224.953.508 1.179 2.07 1.29 3.127 2.18a.723.723 0 0 0 .06.388c.083.165.371.413.371.413-.055.054-.027.164-.027.164.204.217.504.243.547.246-.435 1.248-.816 2.626-.451 4.095-.179.244-.368.445-.531.668a.851.851 0 0 1-.444-.31c-.591-.852-1.457-1.416-3.023-1.374-2.349.055-3.283-.907-3.461-2.748-.094-.974-.357-1.922-.888-2.479C7.489 9.014 9.6 7.937 10.268 7.73a2.8 2.8 0 0 0 .2-.073zm3.496.18c.381.442.795.727 1.193.979.082.343.11.577.192 1.03h-.041l-.027.308a2.836 2.836 0 0 0-.62-.113l.001-.003c-.893-1.057-.7-1.47-1.058-2.019.097-.034.225-.094.36-.182zm5.911 1.086c.076.067.178.12.323.154-.327.68.33.912.37 1.17-.143.083-.367.037-.603.025-.115-.006-.229.065-.321.147l.032-.367c.006-.43.09-.809.2-1.13zM15.79 9.947c.024.035.178.131 1.002.352 1.026.275 2.323.12 2.55.09a.378.378 0 0 1-.022.089c0 .343.055.59.096.81.053.308.13.533.163.74l.008-.007c.234 1.367.561 3.133-.267 4.048.041.192.069.467.014.783a3.204 3.204 0 0 1-.151.535 2.29 2.29 0 0 0-.108.352c-1.1.142-1.755.055-2.06-.015.123-.374.407-.754.876-.735-.022-.911-.264-1.223-.511-1.891.395-.883.299-1.665.621-2.848-.247.261-.44 1.209-.604 1.786-.206.838-.563 1.648-1.525 2.294 0 .22-.069.384-.151.494-.179.261-.412.344-.494.77.11-.138.26-.261.26-.22a8.51 8.51 0 0 1-.025.493l.012.001c-.165 1.044-.522 1.525-.742 2.115-.151.426-.096 1.36-.151 1.374-.385.083-.975-.068-1.14-.15.162-1.14.019-2.278.436-3.6l-.015-.006c.16-.554.478-.878.939-1.464-.161-.52-.532-1.64.266-4.182.033-.014.067-.03.105-.049l.206-.137c.04-.028.096-.069.137-.096.069-.042.371-.371.412-.412.096-.097.165-.124.192-.234.055-.206-.247-.412-.37-.55-.018-.019-.03-.034-.043-.05.013-.039.027-.077.042-.114.01-.125.028-.26.042-.367zm.883 7.942c.05.002.174.122.751.158.66.04 1.539-.083 1.772-.138.234-.055.097.11.069.275l-.026.169c-.399.134-1.008.188-1.416.202-.393.013-.846-.012-1.161-.11-.048-.26-.063-.47-.007-.55a.024.024 0 0 1 .018-.006zm2.506.846c-.02.135-.035.223-.058.372-.388.12-.888.122-1.27.135a4.413 4.413 0 0 1-1.012-.07 2.065 2.065 0 0 1-.033-.109 11.343 11.343 0 0 1-.065-.252c.179.034.53.079 1.15.087a4.142 4.142 0 0 0 1.288-.163zm-.106.685c-.069.44-.055 1.786-.014 2.157.014.11.948.522 1.277.77.107.085.259.157.422.222.042.042.116.105.197.203.162.213.052.436-.135.526-.264-.007-.568-.052-1.074-.128-.695-.104-1.129-.101-1.73-.106v-.003c-.152-.275-.056-.728-.056-.728a2.2 2.2 0 0 1-.809-.18l.012-.026c.234-.48.22-.591.151-1.415-.047-.578-.196-.883-.335-1.195.169.016.409.035.857.041a4.567 4.567 0 0 0 1.237-.138zm-5.306 2.084c.243 0 .6.032.676.1v.014c.014.165.165.399.11.522-.027.069-.096-.041-.192-.068.041.26.151.741.316 1.112.11.248.041.426-.33.495-.33.014-.755 0-1.112-.083-.412-.206-.55-.316-.467-.7.068-.275.494-.59.865-.838-.206.014-.426.165-.398-.014.055-.357.206-.33.302-.508-.02-.02.084-.032.23-.032z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/griddotai.svg b/assets/lib/simple-icons/icons/griddotai.svg
new file mode 100644
index 00000000..6f87684b
--- /dev/null
+++ b/assets/lib/simple-icons/icons/griddotai.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Grid.ai</title><path d="M17.732 9.091v-3.52H6.506v12.816h5.612v-5.613h11.226V24h-5.613v-5.613H12.12V24h-4.5a6.965 6.965 0 0 1-6.964-6.964V6.966A6.966 6.966 0 0 1 7.619 0h8.762a6.965 6.965 0 0 1 6.964 6.964v2.127h-5.613z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/gridsome.svg b/assets/lib/simple-icons/icons/gridsome.svg
new file mode 100644
index 00000000..3f8aa194
--- /dev/null
+++ b/assets/lib/simple-icons/icons/gridsome.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Gridsome</title><path d="M12.026.017l-.108.001C4.905.135-.102 5.975.002 11.956.025 19.286 6.02 24.13 12.083 23.98c7.208-.2 12.323-6.461 11.892-12.05a2.197 2.197 0 0 0-2.192-2.001h-3.15a2.155 2.155 0 0 0-2.161 2.147c0 1.187.967 2.148 2.16 2.148h.788c-.87 2.791-3.62 5.455-7.44 5.56-3.803.095-7.61-2.904-7.768-7.569a2.173 2.173 0 0 0 0-.159c-.148-3.72 2.895-7.637 7.88-7.845a2.096 2.096 0 0 0 2.003-2.183 2.095 2.095 0 0 0-2.07-2.011zm-.018 9.911a2.15 2.15 0 0 0-2.146 2.151 2.15 2.15 0 0 0 2.146 2.152 2.15 2.15 0 0 0 2.147-2.152 2.15 2.15 0 0 0-2.147-2.15Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/groovy.svg b/assets/lib/simple-icons/icons/groovy.svg
deleted file mode 100644
index b8489f2e..00000000
--- a/assets/lib/simple-icons/icons/groovy.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Groovy icon</title><path d="M11.997 6.012S10.315 8.8 9.516 10.155c-.155.058-.172.041-.341.207-.41-.47-.897-.041-1.028.22-.057-.566-.151-.567-.279-.694.074-.496.316-1.305-.241-1.884-1.078-.727-2.326 1.05-3.021 1.982l-.375.622c-1.546-.032-2.763.008-4.231-.021 1.79.67 1.864.686 4.026 1.506 0 .066.161.372.34.552.147.15.308.234.389.284-.106.054-.32.138-.385.258-.292.546.139.672.418 1.107.315.568.382.944 1.126.625.254-.11.562-.148.758-.21-.693 1.094-.87 1.392-2.083 3.274l.012.004c4.85-1.893 4.974-1.942 7.373-2.89 3.448 1.338 3.646 1.448 7.432 2.891-.529-.826-.89-1.343-1.274-1.995.151-.013.483-.046.777-.233.213-.135.463-.288.688-.574.443-.565.551-1.277.39-2.166-.078-.423-.235-.834-.213-.85 2.061-.778 2.304-.862 4.226-1.587-2.31.034-2.422.01-4.591.016-.036-.414-.244-.627-.882-.606-.238.039-.389.12-.5.445-.357-.657-.85-.464-1.06-.14-.275-.282-.917-.377-1.24-.17-.238-.112-.514-.112-.757.177-.175-.146-.23-.188-.614-.342-.886-1.497-1.622-2.692-2.36-3.951zm.012.802c.35.535 1.552 2.61 1.849 3.074-.337.023-.668.202-.918.562-.217-.224-.47-.445-.917-.463-.544-.093-.834.148-1.2.568-.108-.365-.53-.45-.896-.28.327-.519 1.872-3.122 2.082-3.46zM7.45 9.128c-.05 1.434-1.068 2.712-1.798 2.245-.551-.449.149-1.584.59-1.985-.033.307.246.498.023.77-.446.543-.27.936-.078.996.513.162 1.004-1.227 1.004-2.201 0-.625-.366-.613-1.086.136-.983 1.022-1.513 2.012-1.16 2.69.197.38.485.651.959.594.925-.11 1.483-1.254 1.543-1.988.148-.003.109.01.148-.02 0 .129.177.755.317 1.166.183.702.964 2.11-1.369 2.658-.44.11-.614.148-1.05.32-.213-.443-.263-.585-.697-1.013.588-.205.593-.185.972-.317 1.467-.51 1.908-.947 1.857-1.57 0 0 .018-.32-.185-.588a2.613 2.613 0 0 1-.293.645c-.437.68-1.296 1.101-2.06.833-.417-.146-.596-.466-.596-1.015 0-.703 1.601-2.735 2.387-3.08.555-.165.579.293.571.724zm6.502 1.3c.26.006.543.133.735.34.594.64.529 1.417.163 1.905-.435.581-1.532.324-1.791-.488-.12-.378.095-1.312.475-1.624a.628.628 0 0 1 .418-.132zm-2.113.066a.502.502 0 0 1 .117.017c.503.03.61.313.701.56.231.626.173 1.212-.301 1.691-.711.719-1.54.401-1.536-.567.014-.69.443-1.715 1.02-1.7zm1.868.038c-.383.287-.432 1.023-.08 1.296.138.13.215.22.613.256.273.024.704-.253.725-.527.01-.125-.013-.333-.312-.67-.252-.283-.579-.349-.661-.3-.265.156.021.28.125.383.162.163.2.234.125.282a.447.447 0 0 1-.372.057c-.105-.049-.456-.246-.163-.777zm3.759.003c.167.26.215.316.402.965.24.838.546 1.163.816 1.01.74-.418.148-1.476-.113-1.974.167-.002.134.007.286.005.12.471.086.387.407 1.813.385 1.706.442 2.16-.528 2.926-.446.352-1.103.37-1.667.34l-.636-.095c.438-.287.545-.557.542-1.116 1.278.535 1.959.132 2.23-.526.132-.317.086-.735-.04-1.471.008.6-.005.71-.084 1.007-.158.595-.547.76-.812.34-.102-.163-.345-.702-.42-1.282-.075-.58-.132-1.395-.5-1.736.04-.08.082-.17.117-.206zm-1.247.01c.258.068.572.204.74.52.234.436.388.668.376 1.447-.014.832-.34 1.055-.557 1.086-.278.04-.762.034-1.049-1.598-.095-.541-.268-1.056-.45-1.224.09-.11.097-.096.165-.204.091.1.17.27.298.777.202.808.387.975.745 1.02.558.072.778-.78.318-1.391-.1-.134-.365-.307-.503-.236.008.236.113.162.114.318-.026.185-.053.219-.113.32-.142-.056-.21-.078-.334-.291-.157-.31-.055-.6.25-.544zm-4.597.076c-.263.185-.594.8-.304 1.35.143.205.297.372.638.3.245-.051.671-.34.73-.749.052-.35-.456-1.028-.738-.87-.327.183-.128.314.074.511.185.18.052.289-.077.342-.258.106-.403.003-.467-.203-.065-.205-.01-.38.144-.68zm-2.867.064c.056.172.1.402.218.624.028.023.132 0 .269-.157.086-.1.185-.238.357-.463.104.095.113.166.142.219.073.13.225.12.273.106.168-.167.195-.275.306-.29.01.216.021.35-.257.677a.535.535 0 0 1-.501.172c-.12-.034-.199-.108-.389-.205-.258.04-.19.315-.143.546.12.611.5.855.832.675.116-.062.09-.062.312-.153-.038.388-.06.463.01.896-.541.301-.982.25-1.102-.506-.091-.632-.261-1.4-.415-1.556-.145-.147-.205-.195-.205-.195l.293-.39zm-7.114.082c.753.01 1.602.01 2.506.017-.13.318-.175.54-.193.854-.422-.163-1.877-.684-2.313-.871zm20.723.01c-.997.359-1.715.637-2.677 1.004-.105-.45-.124-.588-.219-.994 1.601-.005 1.628-.002 2.896-.01zm-6.978 2.04c.105.43.253.641.253.641.202.348.454.545.84.645.085.136.115.163.148.236.037.457.01.514-.344.774-.209.204-.218.497-.003.769.231.22.474.298 1.375.064.174.3.418.653.776 1.217-1.206-.455-2.868-1.103-6.43-2.49 0 0-4.169 1.62-6.404 2.491.935-1.474 1.012-1.599 1.677-2.63.225-.089.149-.053.349-.155.459-.245.827-.61 1.028-1.145.368.83.779.925 1.636.655.177-.082.38-.2.424-.518.46.413 1.432.49 2.142-.382.612.717 2.001.785 2.533-.171zm2.157.865s.04.129.064.169c-.101.003-.213 0-.213 0a.905.905 0 0 0 .149-.17z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/groupme.svg b/assets/lib/simple-icons/icons/groupme.svg
new file mode 100644
index 00000000..6b3bd1f9
--- /dev/null
+++ b/assets/lib/simple-icons/icons/groupme.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GroupMe</title><path d="M11.1597 6.57419H12.8398V8.16898H11.1597V6.57419ZM18.1997 0H5.80011C3.14898 0 1 2.03979 1 4.55577V16.3243C1 18.8402 3.14898 20.88 5.80011 20.88H9.92715L11.9786 24L14.0306 20.88H18.1997C20.8506 20.88 23 18.8402 23 16.3243V4.55574C23 2.03976 20.8506 0 18.1997 0ZM7.56833 8.16895H9.34755V6.57416H7.56833V4.85447H9.34755V3.16587H11.1597V4.85447H12.8398V3.16587H14.6519V4.85447H16.4308V6.57416H14.6519V8.16895H16.4308V9.88852H14.6519V11.5772H12.8398V9.88852H11.1597V11.5772H9.34755V9.88852H7.56833V8.16895ZM20.3122 13.4321C20.3122 13.4321 17.9202 17.708 12.2406 17.708C12.1619 17.708 12.0843 17.707 12.007 17.7057C11.9299 17.707 11.8522 17.708 11.7737 17.708C6.09416 17.708 3.70211 13.4321 3.70211 13.4321C3.70211 13.4321 3.54729 13.1536 3.54729 12.8534C3.53754 12.6368 3.64915 12.3263 3.9421 12.1433C4.105 12.0417 4.259 11.9914 4.40179 11.9757C5.08566 11.9069 5.48202 12.3295 5.80794 12.8121C6.16788 13.3447 8.24445 15.678 12.007 15.7672C15.7698 15.678 17.8464 13.3447 18.2063 12.8121C18.5322 12.3295 18.9429 11.9062 19.6125 11.9757C19.7553 11.9914 19.9094 12.0417 20.0722 12.1433C20.3652 12.3263 20.4792 12.5839 20.469 12.8532C20.446 13.2494 20.3122 13.4321 20.3122 13.4321Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/groupon.svg b/assets/lib/simple-icons/icons/groupon.svg
index 10621966..355c5694 100644
--- a/assets/lib/simple-icons/icons/groupon.svg
+++ b/assets/lib/simple-icons/icons/groupon.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Groupon icon</title><path d="M3.316 20.334C5.618 22.736 8.554 24 12.012 24c3.988 0 7.739-1.95 9.978-5.163 1.353-1.95 2.01-4.158 2.01-6.755 0-.484-.032-1.006-.063-1.529H10.595v4.61h6.687c-1.155 2.012-3.094 3.12-5.27 3.12-3.229 0-6.125-2.824-6.125-6.497 0-3.315 2.699-6.069 6.125-6.069 1.844 0 3.355.749 4.811 2.239h6.52C21.468 3.019 17.084 0 12.083 0c-3.323 0-6.22 1.17-8.53 3.409C1.25 5.647 0 8.572 0 11.754c-.008 3.417 1.108 6.271 3.316 8.58z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Groupon</title><path d="M3.316 20.334C5.618 22.736 8.554 24 12.012 24c3.988 0 7.739-1.95 9.978-5.163 1.353-1.95 2.01-4.158 2.01-6.755 0-.484-.032-1.006-.063-1.529H10.595v4.61h6.687c-1.155 2.012-3.094 3.12-5.27 3.12-3.229 0-6.125-2.824-6.125-6.497 0-3.315 2.699-6.069 6.125-6.069 1.844 0 3.355.749 4.811 2.239h6.52C21.468 3.019 17.084 0 12.083 0c-3.323 0-6.22 1.17-8.53 3.409C1.25 5.647 0 8.572 0 11.754c-.008 3.417 1.108 6.271 3.316 8.58z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/grubhub.svg b/assets/lib/simple-icons/icons/grubhub.svg
new file mode 100644
index 00000000..3006213f
--- /dev/null
+++ b/assets/lib/simple-icons/icons/grubhub.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Grubhub</title><path d="M16.708 9.556h-.84c-.048 0-.072.048-.072.072v1.828h-.84V9.628c0-.048-.048-.072-.072-.072h-.84c-.048 0-.072.048-.072.072v4.692c0 .048.048.072.072.072h.84c.048 0 .072-.048.072-.072v-1.876h.84v1.876c0 .048.048.072.072.072h.84c.048 0 .072-.048.072-.072V9.628c0-.024-.024-.072-.072-.072m-7.08 0h-.84c-.048 0-.072.024-.072.072v3.324a.61.61 0 0 1-.12.384c-.072.096-.168.12-.288.12a.405.405 0 0 1-.288-.12.61.61 0 0 1-.12-.384V9.628c0-.048-.048-.072-.072-.072h-.84c-.048 0-.072.024-.072.072v3.348c0 .432.096.84.36 1.108.264.264.624.408 1.036.408.432 0 .796-.144 1.036-.408.264-.264.36-.648.36-1.108V9.628c-.004-.024-.028-.072-.08-.072m-8.232-.072c-.432 0-.796.144-1.036.408C.096 10.156 0 10.54 0 11v2c0 .432.096.84.36 1.108.264.264.624.408 1.036.408.432 0 .796-.144 1.036-.408.264-.264.36-.648.36-1.108v-1.104a.102.102 0 0 0-.096-.096H1.468a.102.102 0 0 0-.096.096v.82c0 .048.048.096.096.096h.316v.192a.676.676 0 0 1-.12.408c-.072.096-.168.12-.288.12a.405.405 0 0 1-.288-.12.69.69 0 0 1-.12-.408v-1.976c0-.168.048-.316.12-.408.072-.096.168-.12.288-.12.116 0 .216.048.288.12.072.096.12.24.12.408v.192c0 .048.048.072.072.072h.84c.048 0 .072-.024.072-.072v-.192c0-.432-.096-.84-.36-1.108-.216-.292-.604-.436-1.012-.436m10.832 3.828c-.072.096-.168.12-.316.12h-.48v-1.016h.48c.12 0 .216.048.288.12.079.104.121.23.12.36.008.2-.016.316-.092.416zm-.364-2.768c.12 0 .216.024.288.12.072.072.096.192.096.34s-.024.264-.096.36a.385.385 0 0 1-.264.12h-.432v-.94h.408zm.964 1.372c.144-.144.408-.48.408-.916 0-.508-.192-.82-.34-.988-.264-.288-.624-.432-1.036-.432h-1.316c-.048 0-.072.048-.072.072v4.696c0 .048.048.072.072.072h1.396c.432 0 .84-.168 1.108-.508.144-.192.316-.508.316-.988-.028-.576-.388-.916-.536-1.008zm-7.652-.46c-.072.096-.192.144-.34.144h-.408v-1.056h.408c.144 0 .264.048.34.144.096.096.12.216.12.384s-.02.288-.12.384zm.532.868c.096-.072.168-.12.24-.216.168-.192.384-.532.384-1.06 0-.508-.192-.84-.384-1.036-.24-.288-.6-.432-1.012-.456H3.54c-.048 0-.072.048-.072.072v4.692c0 .048.048.072.072.072h.84c.048 0 .072-.048.072-.072v-1.736h.288l.532 1.78c0 .024.048.048.072.048h.888c.024 0 .048-.024.072-.024s.024-.048.024-.072l-.62-1.992zm17.136.988c-.072.096-.168.12-.316.12h-.48v-1.016h.48c.12 0 .216.048.288.12.079.104.121.23.12.36.028.2-.016.316-.092.416zm-.34-2.768c.12 0 .216.024.288.12.072.072.096.192.096.34s-.024.264-.096.36a.385.385 0 0 1-.264.12h-.432v-.94h.408zm.964 1.372c.144-.144.408-.48.408-.916 0-.508-.192-.82-.34-.988-.264-.288-.624-.432-1.036-.432h-1.328c-.048 0-.072.048-.072.072v4.696c0 .048.048.072.072.072h1.404c.432 0 .84-.168 1.108-.508.144-.192.316-.508.316-.988a1.442 1.442 0 0 0-.532-1.008zm-3.224-2.36h-.84c-.048 0-.072.024-.072.072v3.324a.61.61 0 0 1-.12.384c-.072.096-.168.12-.288.12a.405.405 0 0 1-.288-.12.61.61 0 0 1-.12-.384V9.628c0-.048-.048-.072-.072-.072H17.6c-.048 0-.072.024-.072.072v3.348c0 .432.096.84.36 1.108.264.264.624.408 1.036.408.432 0 .796-.144 1.036-.408.264-.264.36-.648.36-1.108V9.628c.024-.024-.024-.072-.076-.072"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/grunt.svg b/assets/lib/simple-icons/icons/grunt.svg
index 93d19307..b430c9c2 100644
--- a/assets/lib/simple-icons/icons/grunt.svg
+++ b/assets/lib/simple-icons/icons/grunt.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Grunt icon</title><path d="M13.04 0c-1.381.488-1.731 1.231-1.835 1.906-.355-.254-.316-1.079-.336-1.29-.353.041-1.366 1.025-1.32 2.265a7.96 7.96 0 00-.276.08c-.296-.402-1.167-1.472-2.314-1.842A3.647 3.647 0 005.832.936c-1.36 0-2.163.81-2.17.818l-.383.445.576.114c.01.002.966.201 1.362.826.065.104.083.31.101.527.012.13-.016.257-.043.379-.02.09-.038.181-.043.273-.358.014-.665.084-.914.211a1.255 1.255 0 00-.662.797c-.233.854.525 1.805.551 1.836.089.158.126 1.303-.078 1.762-.028.063-.103.126-.201.205-.03.024-.065.049-.102.076-.288.217-.722.548-.722 1.305 0 1.036 1.05 1.597 1.894 2.049.139.074.271.144.39.212l-.003.004c.126.073.57.534.57 1.223 0 .323-.028 1.859-.172 2.924-.541-.464-1.04-1.211-1.152-2.049 0 0-1.372 1.057-.969 3.32.246 1.385 1.087 2.16 2.203 2.565.405.89 1.365 2.143 3.155 2.326.677.554 1.613.913 2.978.914V24h.008c1.367-.001 2.305-.36 2.982-.916 1.786-.185 2.744-1.437 3.149-2.326 1.116-.406 1.957-1.18 2.203-2.565.402-2.263-.969-3.32-.969-3.32-.112.838-.61 1.585-1.152 2.049-.144-1.065-.174-2.601-.174-2.924 0-.689.446-1.15.572-1.223l-.004-.004c.12-.068.253-.138.39-.212.845-.452 1.893-1.013 1.893-2.05 0-.756-.434-1.087-.722-1.304l-.102-.076c-.097-.079-.173-.142-.2-.205-.205-.46-.168-1.604-.079-1.762.026-.03.784-.982.55-1.836a1.255 1.255 0 00-.661-.797c-.248-.127-.554-.197-.91-.21a1.655 1.655 0 00-.043-.276 1.289 1.289 0 01-.043-.379c.018-.218.036-.423.101-.527.396-.625 1.35-.825 1.36-.826l.576-.114-.381-.445c-.007-.008-.812-.818-2.172-.818-.371 0-.75.06-1.129.183-1.148.37-2.018 1.443-2.312 1.844a8.06 8.06 0 00-.45-.127c-.196-.74.42-1.803.42-1.803s-.635-.14-1.578.715C13 1.442 12.743.784 13.04 0zm5.118 1.637c.516 0 .936.14 1.158.234-.144.065-.3.15-.455.252a2.51 2.51 0 00-.43-.037 2.33 2.33 0 00-1.347.418c-.578.406-.846.793-.969 1.049a5.47 5.47 0 00-.552-.28c.285-.418.926-1.236 1.767-1.507.265-.086.543-.13.828-.13zm-12.314.002c.285 0 .564.043.828.129.839.27 1.481 1.086 1.767 1.505-.074.034-.15.068-.222.104a5.505 5.505 0 00-.33.176c-.124-.256-.392-.641-.969-1.047a2.32 2.32 0 00-1.346-.418c-.172 0-.32.017-.433.037a3.15 3.15 0 00-.453-.25 3.034 3.034 0 011.158-.236zm-.157.982c.349.014.655.123.913.328.386.308.572.844.634 1.057a2.965 2.965 0 00-.49.521 6.575 6.575 0 00-.543-.125C6.048 4.194 6.025 3.91 6 3.61c-.024-.29-.05-.588-.205-.834a1.932 1.932 0 00-.107-.154zm12.625.002a1.91 1.91 0 00-.105.15c-.155.246-.18.544-.205.834-.025.3-.05.587-.203.795-.197.037-.38.08-.541.125a2.952 2.952 0 00-.488-.52c.065-.221.256-.754.634-1.056.257-.204.562-.314.909-.328zm-6.31.727c1.307 0 2.477.25 3.482.74.667.325.916.57 1.01.705-1.596.709-2.483 2.164-2.492 2.18l-.162.273.262-.182.02-.015c.407-.321 1.827-1.395 3.003-1.768.329-.104.966-.28 1.541-.28.293 0 .53.045.707.136.166.085.27.206.314.369.117.425-.289 1.057-.439 1.246a.518.518 0 00-.06.1 6.35 6.35 0 01-.016-.672c-.188.41-.305 1.477-.238 2.017.168 1.373.736 2.078.736 2.078-.037-.073-.082-.362-.125-.699.034.03.068.057.101.084l.024.02c.214.172.416.333.416.853 0 .665-.72 1.056-1.416 1.432-.134.072-.267.143-.395.217-.406.234-.845.784-.894 1.603-.041.687.043 2.338.162 3.555-.584.226-1.253.3-1.861.318a5.246 5.246 0 01-.258-.617h.002c-.032-.092-.919-2.394-1.239-2.918.257 1.835.823 3.459 1.102 4.201a4.04 4.04 0 00-.549-.035l-2.736-.002h-.006l-2.736.002c-.206 0-.387.013-.55.035.28-.742.846-2.366 1.102-4.201-.319.524-1.205 2.826-1.236 2.918a5.244 5.244 0 01-.258.617c-.608-.017-1.277-.092-1.861-.318.12-1.217.201-2.868.16-3.555-.049-.819-.486-1.37-.892-1.603-.127-.074-.261-.145-.395-.217-.696-.376-1.416-.767-1.416-1.432 0-.52.202-.681.416-.853l.023-.02.102-.084c-.043.335-.089.623-.125.697.006-.007.569-.71.736-2.076.067-.54-.052-1.607-.24-2.017.008.227 0 .454-.016.67a.516.516 0 00-.058-.098c-.15-.189-.556-.821-.44-1.246a.575.575 0 01.315-.37c.176-.09.414-.134.707-.134.575 0 1.214.175 1.543.28C8.055 5.655 9.474 6.73 9.88 7.05l.02.015.26.182-.163-.273c-.01-.016-.895-1.471-2.49-2.18.094-.135.342-.38 1.01-.705 1.005-.49 2.177-.74 3.484-.74zm-1.281 4.613s.68.827 1.277.834v.002h.006c.597-.007 1.277-.834 1.277-.834v-.002c-.466.282-.884.38-1.281.389a2.495 2.495 0 01-1.28-.39zm-4.434.066c-.23.006-.47.036-.717.096.204.045.416.11.633.191l-.004.002c-.192.085-.3.323-.326.555-.054.47.244.898.244.898.03-.35.104-.6.19-.777.02.483.147 1.104.597 1.602.323.357 1.667 1.094 2.57.285.048.115.1.25.141.398.137.481-.125 1.184-.125 1.184s.705-.8.65-1.525c.507-.023 1.005-.394.99-.915 0 0-.883.488-1.663-.41-.4-.458-1.567-1.622-3.18-1.584zm11.428 0c-1.613-.038-2.781 1.126-3.18 1.584-.78.898-1.664.41-1.664.41-.014.52.482.892.988.915-.054.724.653 1.525.653 1.525s-.262-.703-.125-1.184c.042-.147.091-.282.138-.396.903.807 2.248.07 2.57-.287.452-.5.579-1.12.598-1.604.086.178.16.428.19.78 0 0 .3-.43.246-.899-.027-.232-.134-.47-.326-.555-.002 0-.004 0-.006-.002.217-.082.431-.146.635-.191a3.367 3.367 0 00-.717-.096zm-10.512.76c.915.514 1.754 1.204 2.104 1.736-.263.155-1.008.496-1.778-.076-.487-.362-.465-1.235-.326-1.66zm9.596 0c.14.425.161 1.298-.326 1.66-.77.572-1.517.23-1.78.076.35-.532 1.191-1.222 2.106-1.736zM4.455 16.197c.512 1.614 2.212 2.075 3.486 2.131a7.15 7.15 0 01-.34.485l-.052.052c-.339.366-.404.87-.194 1.494-1.057-.016-2.163-.468-2.724-1.392-.569-.936-.41-2.535-.176-2.77zm15.092 0c.233.235.393 1.834-.176 2.77-.561.923-1.664 1.373-2.72 1.39.21-.624.144-1.125-.194-1.49l-.002-.002c-.018-.02-.04-.04-.06-.06a7.1 7.1 0 01-.334-.477c1.274-.055 2.975-.517 3.486-2.13zM12 18.895l2.045.001h.74c.709 0 1.019.184 1.154.338.198.226.21.589.04 1.08v.002c-.31.886-1.14 3.03-3.979 3.034-2.839-.004-3.67-2.148-3.979-3.034-.17-.491-.157-.856.041-1.082.136-.154.446-.338 1.155-.338h.74L12 18.895zm-1.805.72l-.896.002h-.182c-.256 0-.384.074-.445.135-.089.09-.102.213-.041.37.163.415.533.756.642.85a.86.86 0 00.551.196l.002.002c.207 0 .39-.076.516-.211.352-.376.561-.782.611-.906.029-.071.062-.207-.04-.313-.081-.082-.221-.125-.417-.125h-.3zm3.31 0c-.194 0-.335.043-.415.125-.104.106-.07.242-.041.313.05.124.259.53.611.906v.002c.126.135.31.209.518.209a.861.861 0 00.55-.197c.11-.094.48-.434.643-.85.061-.156.048-.281-.04-.371-.061-.06-.188-.135-.444-.135h-.184l-.896-.002h-.301zm-6.728 1.387c.282.052.575.088.873.111.163.379.347.748.577 1.088a3.186 3.186 0 01-1.45-1.199zm10.446 0a3.19 3.19 0 01-1.442 1.195c.228-.34.413-.707.574-1.084a8.26 8.26 0 00.868-.111Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Grunt</title><path d="M13.04 0c-1.381.488-1.731 1.231-1.835 1.906-.355-.254-.316-1.079-.336-1.29-.353.041-1.366 1.025-1.32 2.265a7.96 7.96 0 00-.276.08c-.296-.402-1.167-1.472-2.314-1.842A3.647 3.647 0 005.832.936c-1.36 0-2.163.81-2.17.818l-.383.445.576.114c.01.002.966.201 1.362.826.065.104.083.31.101.527.012.13-.016.257-.043.379-.02.09-.038.181-.043.273-.358.014-.665.084-.914.211a1.255 1.255 0 00-.662.797c-.233.854.525 1.805.551 1.836.089.158.126 1.303-.078 1.762-.028.063-.103.126-.201.205-.03.024-.065.049-.102.076-.288.217-.722.548-.722 1.305 0 1.036 1.05 1.597 1.894 2.049.139.074.271.144.39.212l-.003.004c.126.073.57.534.57 1.223 0 .323-.028 1.859-.172 2.924-.541-.464-1.04-1.211-1.152-2.049 0 0-1.372 1.057-.969 3.32.246 1.385 1.087 2.16 2.203 2.565.405.89 1.365 2.143 3.155 2.326.677.554 1.613.913 2.978.914V24h.008c1.367-.001 2.305-.36 2.982-.916 1.786-.185 2.744-1.437 3.149-2.326 1.116-.406 1.957-1.18 2.203-2.565.402-2.263-.969-3.32-.969-3.32-.112.838-.61 1.585-1.152 2.049-.144-1.065-.174-2.601-.174-2.924 0-.689.446-1.15.572-1.223l-.004-.004c.12-.068.253-.138.39-.212.845-.452 1.893-1.013 1.893-2.05 0-.756-.434-1.087-.722-1.304l-.102-.076c-.097-.079-.173-.142-.2-.205-.205-.46-.168-1.604-.079-1.762.026-.03.784-.982.55-1.836a1.255 1.255 0 00-.661-.797c-.248-.127-.554-.197-.91-.21a1.655 1.655 0 00-.043-.276 1.289 1.289 0 01-.043-.379c.018-.218.036-.423.101-.527.396-.625 1.35-.825 1.36-.826l.576-.114-.381-.445c-.007-.008-.812-.818-2.172-.818-.371 0-.75.06-1.129.183-1.148.37-2.018 1.443-2.312 1.844a8.06 8.06 0 00-.45-.127c-.196-.74.42-1.803.42-1.803s-.635-.14-1.578.715C13 1.442 12.743.784 13.04 0zm5.118 1.637c.516 0 .936.14 1.158.234-.144.065-.3.15-.455.252a2.51 2.51 0 00-.43-.037 2.33 2.33 0 00-1.347.418c-.578.406-.846.793-.969 1.049a5.47 5.47 0 00-.552-.28c.285-.418.926-1.236 1.767-1.507.265-.086.543-.13.828-.13zm-12.314.002c.285 0 .564.043.828.129.839.27 1.481 1.086 1.767 1.505-.074.034-.15.068-.222.104a5.505 5.505 0 00-.33.176c-.124-.256-.392-.641-.969-1.047a2.32 2.32 0 00-1.346-.418c-.172 0-.32.017-.433.037a3.15 3.15 0 00-.453-.25 3.034 3.034 0 011.158-.236zm-.157.982c.349.014.655.123.913.328.386.308.572.844.634 1.057a2.965 2.965 0 00-.49.521 6.575 6.575 0 00-.543-.125C6.048 4.194 6.025 3.91 6 3.61c-.024-.29-.05-.588-.205-.834a1.932 1.932 0 00-.107-.154zm12.625.002a1.91 1.91 0 00-.105.15c-.155.246-.18.544-.205.834-.025.3-.05.587-.203.795-.197.037-.38.08-.541.125a2.952 2.952 0 00-.488-.52c.065-.221.256-.754.634-1.056.257-.204.562-.314.909-.328zm-6.31.727c1.307 0 2.477.25 3.482.74.667.325.916.57 1.01.705-1.596.709-2.483 2.164-2.492 2.18l-.162.273.262-.182.02-.015c.407-.321 1.827-1.395 3.003-1.768.329-.104.966-.28 1.541-.28.293 0 .53.045.707.136.166.085.27.206.314.369.117.425-.289 1.057-.439 1.246a.518.518 0 00-.06.1 6.35 6.35 0 01-.016-.672c-.188.41-.305 1.477-.238 2.017.168 1.373.736 2.078.736 2.078-.037-.073-.082-.362-.125-.699.034.03.068.057.101.084l.024.02c.214.172.416.333.416.853 0 .665-.72 1.056-1.416 1.432-.134.072-.267.143-.395.217-.406.234-.845.784-.894 1.603-.041.687.043 2.338.162 3.555-.584.226-1.253.3-1.861.318a5.246 5.246 0 01-.258-.617h.002c-.032-.092-.919-2.394-1.239-2.918.257 1.835.823 3.459 1.102 4.201a4.04 4.04 0 00-.549-.035l-2.736-.002h-.006l-2.736.002c-.206 0-.387.013-.55.035.28-.742.846-2.366 1.102-4.201-.319.524-1.205 2.826-1.236 2.918a5.244 5.244 0 01-.258.617c-.608-.017-1.277-.092-1.861-.318.12-1.217.201-2.868.16-3.555-.049-.819-.486-1.37-.892-1.603-.127-.074-.261-.145-.395-.217-.696-.376-1.416-.767-1.416-1.432 0-.52.202-.681.416-.853l.023-.02.102-.084c-.043.335-.089.623-.125.697.006-.007.569-.71.736-2.076.067-.54-.052-1.607-.24-2.017.008.227 0 .454-.016.67a.516.516 0 00-.058-.098c-.15-.189-.556-.821-.44-1.246a.575.575 0 01.315-.37c.176-.09.414-.134.707-.134.575 0 1.214.175 1.543.28C8.055 5.655 9.474 6.73 9.88 7.05l.02.015.26.182-.163-.273c-.01-.016-.895-1.471-2.49-2.18.094-.135.342-.38 1.01-.705 1.005-.49 2.177-.74 3.484-.74zm-1.281 4.613s.68.827 1.277.834v.002h.006c.597-.007 1.277-.834 1.277-.834v-.002c-.466.282-.884.38-1.281.389a2.495 2.495 0 01-1.28-.39zm-4.434.066c-.23.006-.47.036-.717.096.204.045.416.11.633.191l-.004.002c-.192.085-.3.323-.326.555-.054.47.244.898.244.898.03-.35.104-.6.19-.777.02.483.147 1.104.597 1.602.323.357 1.667 1.094 2.57.285.048.115.1.25.141.398.137.481-.125 1.184-.125 1.184s.705-.8.65-1.525c.507-.023 1.005-.394.99-.915 0 0-.883.488-1.663-.41-.4-.458-1.567-1.622-3.18-1.584zm11.428 0c-1.613-.038-2.781 1.126-3.18 1.584-.78.898-1.664.41-1.664.41-.014.52.482.892.988.915-.054.724.653 1.525.653 1.525s-.262-.703-.125-1.184c.042-.147.091-.282.138-.396.903.807 2.248.07 2.57-.287.452-.5.579-1.12.598-1.604.086.178.16.428.19.78 0 0 .3-.43.246-.899-.027-.232-.134-.47-.326-.555-.002 0-.004 0-.006-.002.217-.082.431-.146.635-.191a3.367 3.367 0 00-.717-.096zm-10.512.76c.915.514 1.754 1.204 2.104 1.736-.263.155-1.008.496-1.778-.076-.487-.362-.465-1.235-.326-1.66zm9.596 0c.14.425.161 1.298-.326 1.66-.77.572-1.517.23-1.78.076.35-.532 1.191-1.222 2.106-1.736zM4.455 16.197c.512 1.614 2.212 2.075 3.486 2.131a7.15 7.15 0 01-.34.485l-.052.052c-.339.366-.404.87-.194 1.494-1.057-.016-2.163-.468-2.724-1.392-.569-.936-.41-2.535-.176-2.77zm15.092 0c.233.235.393 1.834-.176 2.77-.561.923-1.664 1.373-2.72 1.39.21-.624.144-1.125-.194-1.49l-.002-.002c-.018-.02-.04-.04-.06-.06a7.1 7.1 0 01-.334-.477c1.274-.055 2.975-.517 3.486-2.13zM12 18.895l2.045.001h.74c.709 0 1.019.184 1.154.338.198.226.21.589.04 1.08v.002c-.31.886-1.14 3.03-3.979 3.034-2.839-.004-3.67-2.148-3.979-3.034-.17-.491-.157-.856.041-1.082.136-.154.446-.338 1.155-.338h.74L12 18.895zm-1.805.72l-.896.002h-.182c-.256 0-.384.074-.445.135-.089.09-.102.213-.041.37.163.415.533.756.642.85a.86.86 0 00.551.196l.002.002c.207 0 .39-.076.516-.211.352-.376.561-.782.611-.906.029-.071.062-.207-.04-.313-.081-.082-.221-.125-.417-.125h-.3zm3.31 0c-.194 0-.335.043-.415.125-.104.106-.07.242-.041.313.05.124.259.53.611.906v.002c.126.135.31.209.518.209a.861.861 0 00.55-.197c.11-.094.48-.434.643-.85.061-.156.048-.281-.04-.371-.061-.06-.188-.135-.444-.135h-.184l-.896-.002h-.301zm-6.728 1.387c.282.052.575.088.873.111.163.379.347.748.577 1.088a3.186 3.186 0 01-1.45-1.199zm10.446 0a3.19 3.19 0 01-1.442 1.195c.228-.34.413-.707.574-1.084a8.26 8.26 0 00.868-.111Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/guangzhoumetro.svg b/assets/lib/simple-icons/icons/guangzhoumetro.svg
index e47a6b5f..fcee3faa 100644
--- a/assets/lib/simple-icons/icons/guangzhoumetro.svg
+++ b/assets/lib/simple-icons/icons/guangzhoumetro.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Guangzhou Metro icon</title><path d="M16.433 12.329A16.188 16.188 0 0 1 22.118.009L17.684 0a16.2 16.2 0 0 0-4.776 11.374V24h3.525zm-8.869 0A16.174 16.174 0 0 0 1.882.009L6.319 0a16.238 16.238 0 0 1 4.773 11.374V24H7.564zm0 0Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Guangzhou Metro</title><path d="M16.433 12.329A16.188 16.188 0 0 1 22.118.009L17.684 0a16.2 16.2 0 0 0-4.776 11.374V24h3.525zm-8.869 0A16.174 16.174 0 0 0 1.882.009L6.319 0a16.238 16.238 0 0 1 4.773 11.374V24H7.564z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/guilded.svg b/assets/lib/simple-icons/icons/guilded.svg
new file mode 100644
index 00000000..9e2224e3
--- /dev/null
+++ b/assets/lib/simple-icons/icons/guilded.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Guilded</title><path d="M5.297 6.255s.02 2.846 1.481 5.79c1.502 2.834 3.572 4.654 5.28 5.38 1.765-.826 3.47-2.258 4.4-3.8h-4.845c-1.253-1.04-2.24-2.763-2.466-4.755H23.36c-.701 3.203-2.188 6.116-3.605 7.971a17.108 17.108 0 01-7.686 5.659h-.045c-5.098-2.031-7.84-5.23-9.65-8.84C1.214 11.347 0 7.147 0 1.5h24a34.23 34.23 0 01-.32 4.755z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/gulp.svg b/assets/lib/simple-icons/icons/gulp.svg
index cfc65ced..17b789ae 100644
--- a/assets/lib/simple-icons/icons/gulp.svg
+++ b/assets/lib/simple-icons/icons/gulp.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>gulp icon</title><path d="M5.936 4.694c-.336 0-.675.078-1.013.222-.34.145-.676.346-1.007.605a7.133 7.133 0 00-.97.917c-.313.354-.61.745-.887 1.164-.276.42-.533.867-.78 1.32h-.001v.001c-.239.473-.448.96-.63 1.455-.18.496-.324.993-.438 1.497-.11.5-.178.987-.2 1.465a.515.515 0 00-.01.091v.095c0 .261.038.53.075.776v.002l.001.002c.068.262.175.504.31.717a1.7 1.7 0 00.537.518c.217.138.474.207.776.207.263 0 .536-.06.817-.185.279-.125.557-.288.834-.479.268-.192.536-.412.794-.66.207-.192.396-.392.583-.59l-.196.608c-.085.293-.18.576-.257.853-.085.274-.152.52-.209.738-.057.216-.096.362-.096.456v.215c0 .241.025.411.104.518a.398.398 0 00.333.152.435.435 0 00.265-.095c.081-.06.15-.137.219-.224v-.002l.002-.001c.057-.087.115-.18.164-.278.05-.101.078-.19.107-.269v-.001l.067-.24.143-.495.19-.662c.076-.247.142-.495.227-.747l.225-.75c.072-.244.14-.465.203-.661.063-.2.116-.362.16-.493.02-.065.04-.116.054-.154l.014-.032.04.018.018-.048c.076-.218.151-.427.227-.626.076-.2.152-.4.21-.597a3.762 3.762 0 00.22-1.29.637.637 0 00-.05-.255.44.44 0 00-.124-.18.499.499 0 00-.174-.1.622.622 0 00-.19-.03.655.655 0 00-.378.127c-.129.086-.225.229-.297.422v.001l-.55 1.764a3.91 3.91 0 01-.317.513v.001a9.407 9.407 0 01-1.71 1.832c-.207.17-.404.301-.6.404a1.063 1.063 0 01-.5.146.48.48 0 01-.312-.103.637.637 0 01-.204-.275 1.582 1.582 0 01-.102-.387 3.182 3.182 0 01-.028-.422c0-.413.066-.874.198-1.394.132-.52.312-1.04.539-1.579.227-.54.492-1.06.786-1.571.293-.511.605-.965.926-1.362.32-.396.64-.706.97-.95.327-.244.62-.362.902-.362a.88.88 0 01.497.145c.152.098.29.263.42.496v-.001c.134.259.269.46.385.606.12.15.259.227.408.227a.51.51 0 00.416-.208c.115-.138.17-.327.17-.556 0-.096-.01-.2-.03-.307a.87.87 0 00-.14-.334c-.314-.47-.651-.807-1.01-1.024H7.06a2.216 2.216 0 00-1.125-.317zm10.961.855a.802.802 0 00-.41.12h-.001l-.001.001a.85.85 0 00-.318.43l-1.889 4.758-.417 1.045c-.153.38-.295.76-.447 1.148a4.792 4.792 0 00-.176.551 4.995 4.995 0 01-.257.215c-.207.16-.403.281-.589.365h-.002c-.184.093-.339.129-.463.129-.082 0-.137-.02-.172-.053-.035-.033-.056-.084-.056-.166 0-.185.028-.39.084-.615.057-.22.132-.451.217-.683a8.73 8.73 0 01.274-.69l.276-.644c.086-.2.153-.382.21-.534a1.15 1.15 0 00.089-.377.71.71 0 00-.143-.437.474.474 0 00-.39-.19.466.466 0 00-.378.179 1.514 1.514 0 00-.254.42 3.917 3.917 0 00-.201.537c-.056.19-.131.368-.207.535-.113.25-.246.524-.416.826a6.64 6.64 0 01-.565.849c-.207.26-.432.479-.675.654-.24.175-.495.257-.75.257-.083 0-.138-.03-.167-.088a.472.472 0 01-.052-.225c.01-.204.046-.419.112-.643.066-.222.141-.443.226-.66.085-.21.18-.424.283-.625.105-.201.2-.391.294-.56v-.001l.248-.47c.068-.136.107-.243.135-.33l.001-.002v-.001c.01-.04.021-.09.021-.145a.419.419 0 00-.054-.214v-.001l-.001-.001a.526.526 0 00-.335-.238.65.65 0 00-.588.103c-.132.091-.231.232-.319.426a23.085 23.085 0 00-.79 1.817c-.19.505-.323.914-.418 1.229a4.666 4.666 0 00-.163.7v.001l-.02.231v.002c0 .214.029.4.09.55v.002c.068.147.148.266.249.357a.893.893 0 00.36.191c.132.04.27.059.41.059.311 0 .598-.058.861-.155s.501-.232.714-.396c.21-.163.4-.346.563-.548.12-.14.21-.285.3-.427-.04.22-.078.437-.078.614 0 .33.063.57.202.717a.695.695 0 00.523.214c.208 0 .439-.057.694-.17.253-.113.51-.262.77-.446.065-.045.127-.093.19-.141l.005.036a1 1 0 00.15.35h.001l.001.002c.08.099.17.18.291.24.123.062.273.091.45.091.253 0 .516-.059.787-.175h.002c.268-.125.537-.279.805-.48.268-.201.545-.44.812-.697l.01-.009c-.046.106-.09.212-.138.319-.219.484-.442.972-.674 1.471-.233.5-.466.994-.684 1.488l-.001.003-.001.002a3.93 3.93 0 01-.104.278c-.036.092-.085.188-.115.298v.001c-.037.1-.075.198-.095.306-.03.11-.04.217-.04.315 0 .208.059.367.172.447a.67.67 0 00.398.115c.122 0 .234-.03.335-.08v-.001h.001a.95.95 0 00.263-.22c.076-.09.14-.192.198-.308.059-.117.107-.242.154-.365l.002-.004v-.004c.008-.037.037-.121.084-.244l.162-.436.19-.512.199-.522.17-.435c.048-.124.077-.21.095-.255v-.001c.019-.038.048-.095.085-.189l.133-.313.161-.37.172-.38.142-.342.103-.226.001-.001c.085-.17.188-.358.302-.566v-.001c.123-.207.255-.405.396-.612v-.001c.152-.2.302-.397.463-.585.161-.187.33-.347.5-.498.173-.14.346-.262.521-.345a1.14 1.14 0 01.499-.128c.086 0 .143.018.178.039a.135.135 0 01.042.103c0 .08-.043.207-.144.353v.001c-.104.16-.226.33-.377.519-.162.19-.323.389-.503.597-.18.21-.352.419-.514.628a6.18 6.18 0 00-.412.603v.001a1.518 1.518 0 00-.205.53v.007a.193.193 0 01-.004.022c-.003.01-.006.014-.006.035v.057c0 .257.092.465.274.606.183.152.441.22.76.22.349 0 .67-.068.97-.204.298-.134.605-.316.92-.556h.001c.315-.236.64-.517.991-.843.341-.325.739-.685 1.184-1.08a.847.847 0 00.262-.352c.059-.138.089-.275.089-.41a.635.635 0 00-.082-.324.278.278 0 00-.248-.148.369.369 0 00-.164.043c-.053.026-.109.06-.17.101-.104.033.017.063.03.108-.538.481-1.004.887-1.373 1.206-.38.332-.699.588-.946.788a5.893 5.893 0 01-.574.41c-.132.079-.233.117-.289.117-.078 0-.132-.02-.156-.043a.142.142 0 01-.043-.108c0-.007.01-.036.035-.075.026-.04.065-.091.117-.152l.398-.465c.162-.181.324-.381.504-.6.18-.22.35-.447.502-.682.16-.23.285-.467.39-.7.101-.233.156-.455.156-.666a.837.837 0 00-.106-.426.92.92 0 00-.277-.3c-.11-.08-.238-.14-.375-.181h-.001a1.557 1.557 0 00-1.043.073 3.064 3.064 0 00-.598.332 5.677 5.677 0 00-.565.45 9.89 9.89 0 00-.38.378l.036-.176c.015-.073.025-.141.034-.207v-.001c.01-.068.013-.116.013-.149a.529.529 0 00-.126-.373v-.001h-.002c-.087-.09-.222-.129-.4-.129-.122 0-.24.07-.34.19a2.18 2.18 0 00-.263.418 4.225 4.225 0 00-.202.48l-.133.378v.001c-.046.159-.097.321-.15.485-.014.004-.027.008-.041.014a.33.33 0 00-.136.089l.003-.003c-.118.114-.251.247-.399.389-.147.142-.303.284-.464.426-.162.133-.326.275-.49.407-.162.13-.32.245-.471.345-.15.101-.29.18-.419.241a.776.776 0 01-.309.088c-.06 0-.085-.014-.1-.042h-.001a.311.311 0 01-.032-.155c0-.113.02-.243.064-.39.042-.146.086-.274.13-.385l.028-.03.374-.952c.142-.365.294-.746.465-1.152l.513-1.254c.17-.427.342-.84.503-1.234l.475-1.102c.142-.336.266-.619.37-.848l-.001.002c.059-.117.097-.227.135-.32v-.002a.934.934 0 00.055-.297c0-.196-.061-.35-.18-.443a.6.6 0 00-.384-.133Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>gulp</title><path d="M5.936 4.694c-.336 0-.675.078-1.013.222-.34.145-.676.346-1.007.605a7.133 7.133 0 00-.97.917c-.313.354-.61.745-.887 1.164-.276.42-.533.867-.78 1.32h-.001v.001c-.239.473-.448.96-.63 1.455-.18.496-.324.993-.438 1.497-.11.5-.178.987-.2 1.465a.515.515 0 00-.01.091v.095c0 .261.038.53.075.776v.002l.001.002c.068.262.175.504.31.717a1.7 1.7 0 00.537.518c.217.138.474.207.776.207.263 0 .536-.06.817-.185.279-.125.557-.288.834-.479.268-.192.536-.412.794-.66.207-.192.396-.392.583-.59l-.196.608c-.085.293-.18.576-.257.853-.085.274-.152.52-.209.738-.057.216-.096.362-.096.456v.215c0 .241.025.411.104.518a.398.398 0 00.333.152.435.435 0 00.265-.095c.081-.06.15-.137.219-.224v-.002l.002-.001c.057-.087.115-.18.164-.278.05-.101.078-.19.107-.269v-.001l.067-.24.143-.495.19-.662c.076-.247.142-.495.227-.747l.225-.75c.072-.244.14-.465.203-.661.063-.2.116-.362.16-.493.02-.065.04-.116.054-.154l.014-.032.04.018.018-.048c.076-.218.151-.427.227-.626.076-.2.152-.4.21-.597a3.762 3.762 0 00.22-1.29.637.637 0 00-.05-.255.44.44 0 00-.124-.18.499.499 0 00-.174-.1.622.622 0 00-.19-.03.655.655 0 00-.378.127c-.129.086-.225.229-.297.422v.001l-.55 1.764a3.91 3.91 0 01-.317.513v.001a9.407 9.407 0 01-1.71 1.832c-.207.17-.404.301-.6.404a1.063 1.063 0 01-.5.146.48.48 0 01-.312-.103.637.637 0 01-.204-.275 1.582 1.582 0 01-.102-.387 3.182 3.182 0 01-.028-.422c0-.413.066-.874.198-1.394.132-.52.312-1.04.539-1.579.227-.54.492-1.06.786-1.571.293-.511.605-.965.926-1.362.32-.396.64-.706.97-.95.327-.244.62-.362.902-.362a.88.88 0 01.497.145c.152.098.29.263.42.496v-.001c.134.259.269.46.385.606.12.15.259.227.408.227a.51.51 0 00.416-.208c.115-.138.17-.327.17-.556 0-.096-.01-.2-.03-.307a.87.87 0 00-.14-.334c-.314-.47-.651-.807-1.01-1.024H7.06a2.216 2.216 0 00-1.125-.317zm10.961.855a.802.802 0 00-.41.12h-.001l-.001.001a.85.85 0 00-.318.43l-1.889 4.758-.417 1.045c-.153.38-.295.76-.447 1.148a4.792 4.792 0 00-.176.551 4.995 4.995 0 01-.257.215c-.207.16-.403.281-.589.365h-.002c-.184.093-.339.129-.463.129-.082 0-.137-.02-.172-.053-.035-.033-.056-.084-.056-.166 0-.185.028-.39.084-.615.057-.22.132-.451.217-.683a8.73 8.73 0 01.274-.69l.276-.644c.086-.2.153-.382.21-.534a1.15 1.15 0 00.089-.377.71.71 0 00-.143-.437.474.474 0 00-.39-.19.466.466 0 00-.378.179 1.514 1.514 0 00-.254.42 3.917 3.917 0 00-.201.537c-.056.19-.131.368-.207.535-.113.25-.246.524-.416.826a6.64 6.64 0 01-.565.849c-.207.26-.432.479-.675.654-.24.175-.495.257-.75.257-.083 0-.138-.03-.167-.088a.472.472 0 01-.052-.225c.01-.204.046-.419.112-.643.066-.222.141-.443.226-.66.085-.21.18-.424.283-.625.105-.201.2-.391.294-.56v-.001l.248-.47c.068-.136.107-.243.135-.33l.001-.002v-.001c.01-.04.021-.09.021-.145a.419.419 0 00-.054-.214v-.001l-.001-.001a.526.526 0 00-.335-.238.65.65 0 00-.588.103c-.132.091-.231.232-.319.426a23.085 23.085 0 00-.79 1.817c-.19.505-.323.914-.418 1.229a4.666 4.666 0 00-.163.7v.001l-.02.231v.002c0 .214.029.4.09.55v.002c.068.147.148.266.249.357a.893.893 0 00.36.191c.132.04.27.059.41.059.311 0 .598-.058.861-.155s.501-.232.714-.396c.21-.163.4-.346.563-.548.12-.14.21-.285.3-.427-.04.22-.078.437-.078.614 0 .33.063.57.202.717a.695.695 0 00.523.214c.208 0 .439-.057.694-.17.253-.113.51-.262.77-.446.065-.045.127-.093.19-.141l.005.036a1 1 0 00.15.35h.001l.001.002c.08.099.17.18.291.24.123.062.273.091.45.091.253 0 .516-.059.787-.175h.002c.268-.125.537-.279.805-.48.268-.201.545-.44.812-.697l.01-.009c-.046.106-.09.212-.138.319-.219.484-.442.972-.674 1.471-.233.5-.466.994-.684 1.488l-.001.003-.001.002a3.93 3.93 0 01-.104.278c-.036.092-.085.188-.115.298v.001c-.037.1-.075.198-.095.306-.03.11-.04.217-.04.315 0 .208.059.367.172.447a.67.67 0 00.398.115c.122 0 .234-.03.335-.08v-.001h.001a.95.95 0 00.263-.22c.076-.09.14-.192.198-.308.059-.117.107-.242.154-.365l.002-.004v-.004c.008-.037.037-.121.084-.244l.162-.436.19-.512.199-.522.17-.435c.048-.124.077-.21.095-.255v-.001c.019-.038.048-.095.085-.189l.133-.313.161-.37.172-.38.142-.342.103-.226.001-.001c.085-.17.188-.358.302-.566v-.001c.123-.207.255-.405.396-.612v-.001c.152-.2.302-.397.463-.585.161-.187.33-.347.5-.498.173-.14.346-.262.521-.345a1.14 1.14 0 01.499-.128c.086 0 .143.018.178.039a.135.135 0 01.042.103c0 .08-.043.207-.144.353v.001c-.104.16-.226.33-.377.519-.162.19-.323.389-.503.597-.18.21-.352.419-.514.628a6.18 6.18 0 00-.412.603v.001a1.518 1.518 0 00-.205.53v.007a.193.193 0 01-.004.022c-.003.01-.006.014-.006.035v.057c0 .257.092.465.274.606.183.152.441.22.76.22.349 0 .67-.068.97-.204.298-.134.605-.316.92-.556h.001c.315-.236.64-.517.991-.843.341-.325.739-.685 1.184-1.08a.847.847 0 00.262-.352c.059-.138.089-.275.089-.41a.635.635 0 00-.082-.324.278.278 0 00-.248-.148.369.369 0 00-.164.043c-.053.026-.109.06-.17.101-.104.033.017.063.03.108-.538.481-1.004.887-1.373 1.206-.38.332-.699.588-.946.788a5.893 5.893 0 01-.574.41c-.132.079-.233.117-.289.117-.078 0-.132-.02-.156-.043a.142.142 0 01-.043-.108c0-.007.01-.036.035-.075.026-.04.065-.091.117-.152l.398-.465c.162-.181.324-.381.504-.6.18-.22.35-.447.502-.682.16-.23.285-.467.39-.7.101-.233.156-.455.156-.666a.837.837 0 00-.106-.426.92.92 0 00-.277-.3c-.11-.08-.238-.14-.375-.181h-.001a1.557 1.557 0 00-1.043.073 3.064 3.064 0 00-.598.332 5.677 5.677 0 00-.565.45 9.89 9.89 0 00-.38.378l.036-.176c.015-.073.025-.141.034-.207v-.001c.01-.068.013-.116.013-.149a.529.529 0 00-.126-.373v-.001h-.002c-.087-.09-.222-.129-.4-.129-.122 0-.24.07-.34.19a2.18 2.18 0 00-.263.418 4.225 4.225 0 00-.202.48l-.133.378v.001c-.046.159-.097.321-.15.485-.014.004-.027.008-.041.014a.33.33 0 00-.136.089l.003-.003c-.118.114-.251.247-.399.389-.147.142-.303.284-.464.426-.162.133-.326.275-.49.407-.162.13-.32.245-.471.345-.15.101-.29.18-.419.241a.776.776 0 01-.309.088c-.06 0-.085-.014-.1-.042h-.001a.311.311 0 01-.032-.155c0-.113.02-.243.064-.39.042-.146.086-.274.13-.385l.028-.03.374-.952c.142-.365.294-.746.465-1.152l.513-1.254c.17-.427.342-.84.503-1.234l.475-1.102c.142-.336.266-.619.37-.848l-.001.002c.059-.117.097-.227.135-.32v-.002a.934.934 0 00.055-.297c0-.196-.061-.35-.18-.443a.6.6 0 00-.384-.133Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/gumroad.svg b/assets/lib/simple-icons/icons/gumroad.svg
index ca99e4e0..e9280871 100644
--- a/assets/lib/simple-icons/icons/gumroad.svg
+++ b/assets/lib/simple-icons/icons/gumroad.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Gumroad icon</title><path d="M15.826 15.069a1.018 1.018 0 1 1-.001 2.036 1.018 1.018 0 0 1 0-2.036zM21.327 1.11a1.018 1.018 0 1 1 .001 2.036 1.018 1.018 0 0 1 0-2.036zM3.322 3.107h16.116a2.13 2.13 0 0 0 1.89 1.151c1.174 0 2.129-.955 2.129-2.13A2.131 2.131 0 0 0 21.327 0c-.89 0-1.654.55-1.97 1.329H3.321C1.764 1.329.543 2.51.543 4.019v17.156C.543 22.706 1.816 24 3.322 24h17.155c1.51 0 2.738-1.267 2.738-2.825V10.998c0-1.532-1.228-2.78-2.738-2.78H10.3c-1.553 0-2.866 1.274-2.866 2.78v3.198c0 1.484 1.286 2.691 2.866 2.691h3.554a2.132 2.132 0 0 0 1.972 1.329c1.174 0 2.129-.956 2.129-2.13s-.955-2.129-2.13-2.129a2.13 2.13 0 0 0-1.889 1.152H10.3c-.523 0-1.088-.349-1.088-.913v-3.198c0-.524.519-1 1.088-1h10.177c.538 0 .96.439.96 1v10.177c0 .567-.44 1.047-.96 1.047H3.322c-.533 0-1-.49-1-1.047V4.02c0-.52.43-.912 1-.912"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Gumroad</title><path d="M15.826 15.069a1.018 1.018 0 1 1-.001 2.036 1.018 1.018 0 0 1 0-2.036zM21.327 1.11a1.018 1.018 0 1 1 .001 2.036 1.018 1.018 0 0 1 0-2.036zM3.322 3.107h16.116a2.13 2.13 0 0 0 1.89 1.151c1.174 0 2.129-.955 2.129-2.13A2.131 2.131 0 0 0 21.327 0c-.89 0-1.654.55-1.97 1.329H3.321C1.764 1.329.543 2.51.543 4.019v17.156C.543 22.706 1.816 24 3.322 24h17.155c1.51 0 2.738-1.267 2.738-2.825V10.998c0-1.532-1.228-2.78-2.738-2.78H10.3c-1.553 0-2.866 1.274-2.866 2.78v3.198c0 1.484 1.286 2.691 2.866 2.691h3.554a2.132 2.132 0 0 0 1.972 1.329c1.174 0 2.129-.956 2.129-2.13s-.955-2.129-2.13-2.129a2.13 2.13 0 0 0-1.889 1.152H10.3c-.523 0-1.088-.349-1.088-.913v-3.198c0-.524.519-1 1.088-1h10.177c.538 0 .96.439.96 1v10.177c0 .567-.44 1.047-.96 1.047H3.322c-.533 0-1-.49-1-1.047V4.02c0-.52.43-.912 1-.912"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/gumtree.svg b/assets/lib/simple-icons/icons/gumtree.svg
index e681cfc8..769ada9b 100644
--- a/assets/lib/simple-icons/icons/gumtree.svg
+++ b/assets/lib/simple-icons/icons/gumtree.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Gumtree icon</title><path d="M18.829 6.52c-.189-.127-.315-.315-.315-.57C18.198 2.596 15.412 0 11.994 0s-6.203 2.594-6.52 5.949c0 .255-.126.442-.314.57-1.711 1.202-2.785 3.165-2.785 5.378 0 3.038 2.087 5.573 4.872 6.331.507.127.95.189 1.14.061.379-.188.76-1.832.57-2.213-.128-.189-.57-.379-1.014-.506-1.646-.443-2.848-1.961-2.848-3.732 0-1.015.379-1.9 1.014-2.6.252-.315.63-.567.948-.757.696-.38 1.14-1.142 1.14-1.964 0-.45.063-.826.189-1.201.506-1.532 1.961-2.659 3.67-2.659 1.711 0 3.166 1.127 3.672 2.659.126.375.189.751.189 1.201 0 .812.381 1.578 1.142 1.953.379.18.694.436.946.752.634.69 1.014 1.576 1.014 2.598 0 2.148-1.709 3.861-3.86 3.861-2.468 0-4.431 2.013-4.431 4.416v2.523c0 .496.064 1.006.19 1.142.315.316 1.962.316 2.278 0 .136-.136.195-.631.195-1.142v-2.583c0-.946.766-1.713 1.713-1.713 3.605 0 6.52-2.915 6.52-6.52 0-2.163-1.066-4.116-2.78-5.317l-.015.033z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Gumtree</title><path d="M18.846 6.582a.698.698 0 0 1-.333-.599C18.181 2.66 15.39 0 12 0 8.609 0 5.75 2.593 5.485 5.983a.796.796 0 0 1-.332.599C3.49 7.778 2.36 9.707 2.36 11.9c0 2.991 2.061 5.584 4.853 6.316.465.133.998.2 1.13.066.333-.2.798-1.862.599-2.194-.134-.2-.533-.399-1.064-.532-1.662-.465-2.86-1.928-2.86-3.723 0-.997.4-1.861.998-2.592a2.927 2.927 0 0 1 .998-.798c.73-.4 1.13-1.13 1.13-1.928 0-.4.066-.798.2-1.196.531-1.53 1.927-2.66 3.656-2.66 1.728 0 3.125 1.13 3.656 2.66.132.399.2.798.2 1.196 0 .798.397 1.529 1.13 1.928.398.2.664.465.997.798a3.918 3.918 0 0 1 .997 2.592 3.859 3.859 0 0 1-3.855 3.856c-2.46 0-4.388 1.995-4.388 4.455v2.526c0 .465.066.997.2 1.13.266.267 1.995.267 2.26 0 .133-.133.2-.665.2-1.13v-2.593c0-.93.797-1.728 1.728-1.728 3.59 0 6.515-2.925 6.515-6.515-.002-2.128-1.133-4.056-2.794-5.252z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/gunicorn.svg b/assets/lib/simple-icons/icons/gunicorn.svg
new file mode 100644
index 00000000..08eda369
--- /dev/null
+++ b/assets/lib/simple-icons/icons/gunicorn.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Gunicorn</title><path d="M10.145 20.014c-.266-.085-.267-.122-.022-.865.244-.743.132-1.432-.32-1.974-.617-.737-.914-1.366-1.009-2.135-.08-.66-.107-.713-.376-.764-.18-.035-.43.034-1.023.281-.864.36-1.07.52-1.273.98-.108.242-.12.387-.06.667.075.342.378.892.494.893.03 0 .196.114.368.252.287.23.307.27.225.458-.176.408-.595.902-.764.902-.095 0-.482-.272-.91-.637-.836-.717-.872-.79-.96-1.965-.1-1.403.244-2.058 1.78-3.375l.964-.827.062-.5c.063-.518-.026-1.748-.177-2.427-.09-.4-.382-.783-.66-.86-.303-.084-.48.09-.712.694-.25.654-.486.882-.92.882-.27 0-.52-.173-.694-.477C4.033 9 3.96 7.691 4.035 7.002c.036-.33.038-.666.005-.745-.054-.128-.52-.405-1.62-.962a4.343 4.343 0 0 1-.518-.303 3.053 3.053 0 0 0-.49-.267C.994 4.54-.095 3.903.007 3.903c.193 0 1.01.252 1.446.445.266.118.52.215.565.215.045 0 .558.165 1.14.366.58.202 1.111.367 1.18.367.16 0 .185-.14.134-.746-.024-.275-.023-.5.002-.5s.132.053.238.118c.324.198 1.02.32 1.84.32.783.002 1.806.157 2.196.335.56.254 1.211 1.05 2.036 2.49.574 1.002 1.19 1.426 2.073 1.427.357 0 1.31-.147 2.6-.4 1.063-.21 2.467-.259 3.012-.103.665.19 1.545.7 2.27 1.314.68.576.786.704 1.204 1.468.5.912 1.05 2.207 1.54 3.622.07.202.216.54.326.753.294.568.28.603-.255.603-.58 0-.853-.092-1.233-.415-.365-.31-.46-.5-1.032-2.05-.292-.796-.577-1.273-.76-1.273-.124 0-.376.852-.376 1.273 0 .3.187.702.67 1.447.788 1.21 1.202 2.922 1.036 4.28l-.07.586-.526.022c-.825.034-.817.046-.817-1.135 0-1.257-.085-1.529-.64-2.035-.23-.21-.748-.81-1.149-1.33-.402-.52-.786-.946-.854-.946-.158 0-.236.428-.244 1.332-.006.595-.03.696-.205.88-.476.497-.81 1.403-1.016 2.754-.046.3-.085.355-.279.398-.285.064-1.075.075-1.143.015-.059-.05.044-.863.278-2.19.088-.504.185-1.18.214-1.503.053-.574-.065-1.65-.204-1.867-.058-.09-.353-.11-1.732-.116-.915-.003-1.918-.033-2.23-.066l-.565-.06v.25c0 .27.07.506.53 1.822.162.464.397 1.17.523 1.57l.227.728-.192.592a6.11 6.11 0 0 1-.348.867c-.152.266-.17.274-.595.27a2.97 2.97 0 0 1-.677-.083z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/gurobi.svg b/assets/lib/simple-icons/icons/gurobi.svg
new file mode 100644
index 00000000..01217779
--- /dev/null
+++ b/assets/lib/simple-icons/icons/gurobi.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Gurobi</title><path d="m11.036 0 7.032 1.359L24 18.37 18.37 24 0 17.635 1.805 5.952 11.036 0Zm12.389 18.239L17.887 2.36l-3.557 7.83 3.88 13.264 5.215-5.214Zm-5.822-16.46L11.138.528l-8.71 5.617 11.554 3.6 3.62-7.968Z"/></svg>
diff --git a/assets/lib/simple-icons/icons/gutenberg.svg b/assets/lib/simple-icons/icons/gutenberg.svg
index 6ca5980e..e60eaab8 100644
--- a/assets/lib/simple-icons/icons/gutenberg.svg
+++ b/assets/lib/simple-icons/icons/gutenberg.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Gutenberg icon</title><path d="M14.439,11.358c-0.084-0.057-0.199-0.034-0.256,0.051c-0.334,0.503-1.043,0.53-1.08,0.53 c-0.007,0-0.01,0-0.017,0c-0.874,0-1.208,0.746-1.221,0.776c-0.04,0.094,0.003,0.202,0.094,0.243 c0.024,0.01,0.051,0.017,0.074,0.017c0.071,0,0.138-0.04,0.169-0.111c0.003-0.007,0.233-0.52,0.823-0.553v0.955 c-0.024,0.206-0.121,0.368-0.294,0.489c-0.179,0.125-0.418,0.189-0.712,0.189c-0.351,0-0.638-0.121-0.85-0.361 c-0.216-0.24-0.324-0.58-0.324-1.019l0.003-1.053c0.017-0.388,0.121-0.695,0.321-0.914c0.216-0.24,0.499-0.361,0.85-0.361 c0.294,0,0.533,0.064,0.712,0.189c0.179,0.125,0.28,0.297,0.297,0.52l0,0c0,0.007,0,0.017,0,0.024c0,0.128,0.105,0.233,0.233,0.233 c0.128,0,0.233-0.105,0.233-0.233c0-0.007,0-0.017,0-0.024l0,0c-0.034-0.334-0.186-0.597-0.459-0.796 C12.762,9.948,12.422,9.85,12.01,9.85c-0.489,0-0.884,0.162-1.184,0.482c-0.283,0.3-0.432,0.695-0.449,1.181l0,0l0,0 c0,0.034-0.003,0.067-0.003,0.101l0.003,0.948h-0.003c0,0.536,0.152,0.965,0.452,1.285s0.695,0.482,1.184,0.482 c0.412,0,0.752-0.098,1.026-0.297c0.25-0.182,0.398-0.422,0.449-0.719l0.01-1.059c0.307-0.074,0.725-0.243,0.989-0.641 C14.55,11.53,14.527,11.415,14.439,11.358z M17.688,0.511h2.588c0.115,0,0.209-0.094,0.209-0.209s-0.094-0.209-0.209-0.209h-2.588 c-0.115,0-0.209,0.094-0.209,0.209S17.573,0.511,17.688,0.511z M3.825,0.511h2.588c0.115,0,0.209-0.094,0.209-0.209 S6.527,0.093,6.413,0.093H3.825c-0.115,0-0.209,0.094-0.209,0.209S3.707,0.511,3.825,0.511z M20.408,2.191 c0.116,0,0.209,0.094,0.209,0.209c0,0.116-0.094,0.209-0.209,0.209c-0.116,0-0.209-0.094-0.209-0.209 C20.198,2.285,20.292,2.191,20.408,2.191z M11.99,1.533c0.116,0,0.209,0.094,0.209,0.209s-0.094,0.209-0.209,0.209 s-0.209-0.094-0.209-0.209S11.874,1.533,11.99,1.533z M8.11,2.404c0.003,0,0.007,0,0.01,0c0.786,0,1.137-0.493,1.404-0.951 c0.088-0.152,0.412-0.658,0.87-0.789c0.567-0.165,1.171,0.098,1.407,0.614c0.034,0.074,0.108,0.118,0.182,0.121 c0.003,0,0.007,0,0.01,0c0.003,0,0.007,0,0.013,0c0.074-0.003,0.148-0.047,0.182-0.121c0.236-0.516,0.84-0.779,1.407-0.614 c0.459,0.135,0.783,0.638,0.87,0.789c0.267,0.462,0.617,0.951,1.414,0.951l0,0c0.479,0,1.046-0.358,1.204-1.043 c0.132-0.567-0.111-1.08-0.641-1.339c-0.105-0.051-0.229-0.01-0.28,0.094c-0.051,0.105-0.01,0.229,0.094,0.28 c0.503,0.25,0.459,0.692,0.418,0.87c-0.081,0.351-0.391,0.722-0.8,0.722c-0.523,0-0.773-0.263-1.053-0.746 c-0.138-0.236-0.523-0.81-1.113-0.982c-0.644-0.189-1.326,0.037-1.717,0.533c-0.391-0.496-1.073-0.722-1.717-0.533 c-0.59,0.172-0.975,0.746-1.113,0.982c-0.28,0.482-0.53,0.746-1.043,0.746c-0.003,0-0.007,0-0.007,0 c-0.445-0.003-0.729-0.314-0.81-0.621c-0.04-0.145-0.125-0.641,0.442-0.978c0.098-0.057,0.132-0.186,0.071-0.287 C7.755,0.005,7.631-0.029,7.529,0.032C6.878,0.42,6.777,1.034,6.898,1.479C7.047,2.029,7.536,2.4,8.11,2.404z M11.996,22.1H12l0,0 H11.996z M3.498,2.191c0.116,0,0.209,0.094,0.209,0.209c0,0.116-0.094,0.209-0.209,0.209S3.288,2.516,3.288,2.4 C3.288,2.285,3.382,2.191,3.498,2.191z M2.911,0.096c0.116,0,0.209,0.094,0.209,0.209S3.026,0.514,2.911,0.514 S2.701,0.421,2.701,0.305S2.795,0.096,2.911,0.096z M21.15,0.096c0.116,0,0.209,0.094,0.209,0.209s-0.094,0.209-0.209,0.209 s-0.209-0.094-0.209-0.209S21.034,0.096,21.15,0.096z M22.27,13.5c0.116,0,0.209,0.094,0.209,0.209 c0,0.116-0.094,0.209-0.209,0.209c-0.116,0-0.209-0.094-0.209-0.209C22.061,13.594,22.154,13.5,22.27,13.5z M21.43,18.285 c0.116,0,0.209,0.094,0.209,0.209c0,0.116-0.094,0.209-0.209,0.209s-0.209-0.094-0.209-0.209 C21.221,18.378,21.314,18.285,21.43,18.285z M20.087,18.882c0.116,0,0.209,0.094,0.209,0.209c0,0.116-0.094,0.209-0.209,0.209 c-0.116,0-0.209-0.094-0.209-0.209C19.878,18.975,19.972,18.882,20.087,18.882z M7.674,1.088c0,0.31,0.253,0.563,0.563,0.563 c0.31,0,0.563-0.253,0.563-0.563S8.548,0.524,8.238,0.524C7.928,0.521,7.674,0.774,7.674,1.088z M8.238,0.939 c0.081,0,0.148,0.067,0.148,0.148c0,0.081-0.067,0.148-0.148,0.148c-0.081,0-0.148-0.067-0.148-0.148 C8.089,1.007,8.157,0.939,8.238,0.939z M15.829,1.651c0.31,0,0.563-0.253,0.563-0.563s-0.253-0.563-0.563-0.563 c-0.31,0-0.563,0.253-0.563,0.563S15.519,1.651,15.829,1.651z M15.829,0.939c0.081,0,0.148,0.067,0.148,0.148 c0,0.081-0.067,0.148-0.148,0.148s-0.148-0.067-0.148-0.148C15.681,1.007,15.748,0.939,15.829,0.939z M12.56,1.439 c-0.108,0.04-0.162,0.159-0.121,0.267c0.04,0.108,0.159,0.162,0.267,0.125c0.034-0.013,0.843-0.283,1.464,0.682 c0.04,0.061,0.108,0.094,0.175,0.094c0.037,0,0.078-0.01,0.111-0.034c0.098-0.061,0.125-0.192,0.064-0.287 C13.872,1.284,12.955,1.294,12.56,1.439z M11.433,1.439c-0.03-0.01-0.307-0.108-0.685-0.051c-0.351,0.051-0.854,0.25-1.272,0.901 C9.415,2.387,9.442,2.515,9.54,2.576c0.034,0.024,0.074,0.034,0.111,0.034c0.067,0,0.135-0.034,0.175-0.094 c0.617-0.965,1.427-0.695,1.464-0.682c0.108,0.04,0.226-0.017,0.267-0.125C11.598,1.601,11.541,1.479,11.433,1.439z M21.032,2.009 l1.016-1.154v1.663c0,0.115,0.094,0.209,0.209,0.209s0.209-0.094,0.209-0.209V0.305c0-0.088-0.054-0.165-0.135-0.196 s-0.172-0.007-0.229,0.057l-1.38,1.569c-0.078,0.088-0.067,0.219,0.02,0.294C20.823,2.107,20.954,2.097,21.032,2.009z M1.767,2.731 c0.115,0,0.209-0.094,0.209-0.209V0.858l1.016,1.154C3.069,2.1,3.201,2.107,3.285,2.033c0.088-0.078,0.094-0.209,0.02-0.294 l-1.38-1.572C1.868,0.103,1.777,0.079,1.696,0.109C1.615,0.14,1.561,0.217,1.561,0.305v2.217C1.561,2.636,1.652,2.731,1.767,2.731z M16.497,2.937c-0.098-0.007-0.189,0.061-0.213,0.155c-0.024,0.098,0.024,0.199,0.111,0.24c0.331,0.155,0.631,0.216,0.901,0.216 c0.516,0,0.928-0.226,1.215-0.462c0.459-0.378,0.695-0.854,0.705-0.874c0.047-0.098,0.013-0.216-0.081-0.27 c-0.213-0.125-0.58-0.202-1.14,0.138c-0.28,0.172-0.496,0.378-0.533,0.415C16.949,2.947,16.521,2.937,16.497,2.937z M17.742,2.805 c0.003-0.003,0.007-0.007,0.01-0.01c0.159-0.159,0.607-0.526,0.958-0.543c-0.101,0.145-0.253,0.341-0.459,0.513 c-0.304,0.25-0.628,0.371-0.972,0.364C17.422,3.055,17.58,2.947,17.742,2.805z M4.958,1.941C4.864,1.995,4.83,2.114,4.878,2.211 c0.01,0.02,0.246,0.496,0.705,0.874c0.287,0.236,0.695,0.462,1.215,0.462c0.273,0,0.574-0.061,0.901-0.216 c0.091-0.044,0.135-0.142,0.111-0.24C7.786,2.994,7.698,2.93,7.597,2.933c-0.017,0-0.449,0.013-0.962-0.439 C6.598,2.458,6.382,2.252,6.102,2.08C5.542,1.742,5.171,1.82,4.958,1.941z M6.355,2.805c0.159,0.142,0.317,0.246,0.462,0.324 c-0.729,0.007-1.211-0.55-1.431-0.877c0.351,0.017,0.8,0.385,0.958,0.543C6.349,2.798,6.352,2.802,6.355,2.805z M22.516,19.759 c-0.209-0.175-0.439-0.277-0.651-0.334c0.081-0.061,0.159-0.132,0.226-0.209c0.516-0.607,0.52-1.501,0.007-2.082 c-0.078-0.088-0.209-0.094-0.294-0.017c-0.088,0.078-0.094,0.209-0.017,0.294c0.375,0.425,0.368,1.083-0.013,1.535 c-0.31,0.364-0.901,0.452-1.076,0.472c-0.53,0.057-1.124,0.179-1.444,0.904c-0.051,0.111-0.081,0.236-0.088,0.371 c-0.074-0.024-0.155-0.037-0.236-0.037c-0.422,0-0.766,0.344-0.766,0.766c0,0.29,0.162,0.543,0.401,0.671 c-0.071,0.064-0.138,0.135-0.199,0.216c-0.709-0.955-1.842-1.555-3.09-1.555c-0.179,0-0.358,0.013-0.53,0.037 c1.026-0.314,1.98-0.803,2.851-1.451l0,0c1.124-0.84,2.058-1.937,2.699-3.168c0.675-1.296,1.016-2.696,1.016-4.153 c0-0.01,0-0.017,0-0.027c0-0.003,0-0.003,0-0.007s0-0.007,0-0.01c-0.007-1.184-0.27-2.25-0.644-3.168 c0.138,0.027,0.27,0.037,0.388,0.037c0.874,0,1.258-0.601,1.299-0.671l0,0c0.189-0.317,0.219-0.702,0.111-1.049 c0.003-0.01,0.003-0.024,0.003-0.037V3.284c0-0.115-0.094-0.209-0.209-0.209c-0.115,0-0.209,0.094-0.209,0.209v3.195 c-0.354-0.307-0.867-0.341-1.08-0.341c-0.412,0.003-0.668-0.061-0.857-0.385c-0.159-0.273-0.067-0.557,0.091-0.719 c0.199-0.202,0.482-0.229,0.759-0.078c0.101,0.054,0.229,0.02,0.283-0.081c0.054-0.101,0.02-0.229-0.081-0.283 c-0.439-0.243-0.931-0.182-1.258,0.148c-0.324,0.331-0.385,0.82-0.155,1.218c0.3,0.516,0.756,0.59,1.204,0.59 c0.007,0,0.01,0,0.017,0c0.135,0,0.57,0.02,0.82,0.256c0.324,0.307,0.408,0.789,0.196,1.147c0,0-0.003,0.003-0.003,0.007 c-0.017,0.03-0.418,0.712-1.538,0.354c-0.337-0.715-0.729-1.323-1.093-1.808L19.19,6.631l0.165-0.128l-0.067-0.088 c-0.719-1.204,0.111-2.487,0.543-3.03l0.243-0.277l0,0l0,0l0,0c0.074-0.088,0.067-0.219-0.02-0.294 c-0.084-0.071-0.206-0.067-0.283,0.01l0,0c-0.007,0.007-0.044,0.044-0.101,0.108c-0.375,0.381-1.839,1.731-3.259,1.026l-0.04-0.027 l-0.02-0.013c-1.272-0.685-2.527-1.08-3.725-1.181c-0.155-0.354-0.361-0.624-0.621-0.624c-0.263,0-0.469,0.273-0.628,0.634 c-1.677,0.074-3.762,1.157-3.85,1.201C6.099,4.668,4.628,3.311,4.253,2.93C4.196,2.866,4.155,2.829,4.152,2.822l0,0 c-0.078-0.078-0.199-0.081-0.283-0.01c-0.088,0.074-0.094,0.206-0.02,0.294l0,0l0,0l0,0l0.26,0.294 C4.26,3.588,4.452,3.861,4.614,4.188c0.405,0.82,0.412,1.565,0.024,2.22C4.155,7.009,3.764,7.64,3.464,8.305 c-1.13,0.368-1.535-0.321-1.552-0.351c0-0.003-0.003-0.003-0.003-0.007C1.696,7.589,1.78,7.107,2.104,6.8 c0.25-0.236,0.685-0.256,0.82-0.256h0.003c0.452,0,0.918-0.071,1.218-0.59C4.375,5.555,4.314,5.062,3.99,4.735 C3.663,4.401,3.17,4.344,2.732,4.587C2.63,4.641,2.593,4.769,2.651,4.87c0.054,0.101,0.182,0.138,0.283,0.081 c0.28-0.152,0.563-0.125,0.759,0.078C3.852,5.191,3.94,5.474,3.784,5.747C3.599,6.068,3.346,6.132,2.941,6.132 c-0.003,0-0.007,0-0.013,0c-0.186,0-0.617,0.027-0.962,0.25V3.335c0-0.115-0.094-0.209-0.209-0.209 c-0.115,0-0.209,0.094-0.209,0.209v3.509C1.318,7.255,1.305,7.758,1.541,8.163C1.564,8.207,1.709,8.45,2.033,8.632 C2.219,8.736,2.485,8.834,2.84,8.834c0.128,0,0.27-0.013,0.422-0.044c-0.364,0.978-0.547,2.031-0.553,3.178 c0,0.003,0,0.003,0,0.007v0.003c0,0.01,0,0.02,0,0.027c0,2.072,0.729,4.106,2.051,5.729c1.171,1.437,2.763,2.503,4.528,3.047 c-0.186-0.027-0.375-0.04-0.563-0.04c-1.238,0-2.362,0.59-3.07,1.532c-0.057-0.074-0.121-0.145-0.192-0.206 c0.223-0.135,0.375-0.378,0.375-0.658c0-0.422-0.344-0.766-0.766-0.766c-0.078,0-0.152,0.013-0.223,0.034 c-0.01-0.132-0.04-0.256-0.088-0.368c-0.324-0.725-0.914-0.847-1.444-0.904c-0.175-0.02-0.766-0.108-1.076-0.472 c-0.391-0.442-0.398-1.1-0.024-1.525c0.078-0.088,0.067-0.219-0.017-0.294c-0.088-0.078-0.219-0.067-0.294,0.017 c-0.509,0.58-0.506,1.474,0.007,2.082c0.067,0.081,0.145,0.148,0.226,0.209c-0.213,0.057-0.442,0.162-0.651,0.334 c-0.496,0.408-0.749,1.09-0.756,2.018c-0.017,0.084,0.02,0.172,0.094,0.219c0.034,0.02,0.071,0.03,0.108,0.03 c0.013,0,0.03-0.003,0.044-0.007h0.003c0.007,0,0.01-0.003,0.017-0.007c0.01-0.003,0.024-0.007,0.034-0.013 c0.003,0,0.003-0.003,0.007-0.003c0.034-0.02,0.064-0.047,0.084-0.081c0.081-0.105,0.415-0.236,0.692-0.294 c1.083-0.236,1.309-0.968,1.275-1.319c-0.01-0.115-0.111-0.199-0.226-0.189c-0.115,0.01-0.199,0.111-0.189,0.226 c0,0.003,0.003,0.064-0.017,0.155c-0.051,0.209-0.236,0.57-0.931,0.722c-0.003,0-0.003,0-0.007,0 c-0.081,0.017-0.324,0.074-0.55,0.179c0.061-0.601,0.253-1.039,0.58-1.312c0.503-0.418,1.167-0.3,1.174-0.297 c0.024,0.003,0.044,0.003,0.064,0c0.111,0.024,0.206,0.037,0.277,0.044c0.557,0.061,0.897,0.182,1.11,0.658 c0.165,0.375-0.047,0.806-0.334,1.022c-0.145,0.111-0.533,0.331-0.968-0.027c-0.088-0.074-0.219-0.061-0.294,0.027 c-0.074,0.088-0.061,0.219,0.027,0.294c0.196,0.162,0.415,0.256,0.641,0.283c-0.29,0.236-0.486,0.533-0.574,0.688 c-0.283,0.489-0.513,0.752-0.894,0.756v-1.461c0-0.115-0.094-0.209-0.209-0.209s-0.209,0.094-0.209,0.209v1.694 c0,0.084,0.051,0.155,0.121,0.189c0.037,0.027,0.081,0.047,0.128,0.047h4.858c0.074,0,0.135-0.037,0.175-0.094 c0.027-0.027,0.051-0.061,0.061-0.101c0.192-0.746,0.864-1.265,1.633-1.265c0.688,0,1.299,0.418,1.559,1.043H9.652 c-0.182-0.449-0.621-0.749-1.117-0.749c-0.543,0-1.022,0.368-1.167,0.891c-0.03,0.111,0.037,0.226,0.145,0.256 c0.111,0.03,0.226-0.037,0.256-0.145c0.094-0.344,0.408-0.584,0.763-0.584c0.263,0,0.499,0.128,0.644,0.331H9.054 c-0.115,0-0.209,0.094-0.209,0.209s0.094,0.209,0.209,0.209h0.422C9.483,23.997,9.493,24,9.5,24c0.01,0,0.02,0,0.027-0.003h0.837 c0.115,0,0.209-0.094,0.209-0.209c0-0.01,0-0.02-0.003-0.03c0.003-0.027,0.003-0.057-0.003-0.088 c-0.246-0.914-1.083-1.552-2.031-1.552c-0.918,0-1.724,0.594-2.004,1.461h-1.09c0.088-0.28,0.206-0.54,0.354-0.783 c0.01-0.013,0.017-0.027,0.027-0.04c0.617-0.968,1.697-1.589,2.895-1.589c0.709,0,1.39,0.216,1.967,0.621 c0.017,0.01,0.034,0.02,0.051,0.024c0.088,0.105,0.175,0.216,0.26,0.331c0.02,0.027,0.037,0.054,0.057,0.081 c-0.02,0.428,0.213,0.877,0.695,1.336c0.017,0.051,0.034,0.094,0.044,0.128v0.044c0,0.115,0.094,0.209,0.209,0.209 c0.098,0,0.175-0.064,0.199-0.155l0,0c0-0.003,0.03-0.105,0.091-0.273c0.435-0.425,0.651-0.84,0.648-1.242 c0.027-0.04,0.057-0.084,0.088-0.125c0.094-0.128,0.192-0.253,0.294-0.371c0.574-0.398,1.245-0.607,1.947-0.607 c1.512,0,2.834,0.985,3.273,2.412h-1.09c-0.277-0.867-1.083-1.461-2.004-1.461c-0.948,0-1.781,0.638-2.031,1.552 c-0.01,0.034-0.01,0.067,0,0.101c0,0.007,0,0.01,0,0.017c0,0.115,0.094,0.209,0.209,0.209h1.829c0.115,0,0.209-0.094,0.209-0.209 s-0.094-0.209-0.209-0.209h-0.665c0.145-0.202,0.381-0.331,0.644-0.331c0.361,0,0.675,0.243,0.766,0.594 c0.024,0.094,0.108,0.155,0.202,0.155c0.017,0,0.034-0.003,0.051-0.007c0.111-0.027,0.179-0.142,0.152-0.253 c-0.138-0.533-0.617-0.908-1.171-0.908c-0.493,0-0.931,0.3-1.117,0.749h-0.422c0.256-0.624,0.87-1.043,1.559-1.043 c0.769,0,1.441,0.52,1.633,1.265c0.003,0.017,0.013,0.034,0.02,0.051c0.027,0.084,0.105,0.145,0.199,0.145h4.95 c0.115,0,0.209-0.094,0.209-0.209c0-0.003,0-0.01,0-0.013s0-0.01,0-0.013v-0.04c0.003-0.02,0.003-0.04,0.003-0.061 c0-0.003,0-0.007-0.003-0.01v-1.582c0-0.115-0.094-0.209-0.209-0.209s-0.209,0.094-0.209,0.209v1.417 c-0.351-0.027-0.57-0.287-0.84-0.752c-0.088-0.148-0.27-0.428-0.54-0.658c0.186-0.04,0.364-0.128,0.53-0.267 c0.088-0.074,0.101-0.206,0.027-0.294s-0.206-0.101-0.294-0.027c-0.432,0.358-0.82,0.138-0.968,0.027 c-0.287-0.216-0.499-0.651-0.334-1.022c0.213-0.476,0.553-0.601,1.11-0.658c0.071-0.007,0.165-0.02,0.277-0.044 c0.02,0.003,0.044,0.003,0.067,0c0.007,0,0.665-0.121,1.171,0.297c0.331,0.273,0.526,0.712,0.584,1.316 c-0.229-0.108-0.476-0.165-0.553-0.182c-0.003,0-0.003,0-0.007,0c-0.692-0.152-0.881-0.509-0.931-0.719 c-0.02-0.088-0.02-0.148-0.017-0.155c0.01-0.115-0.074-0.216-0.189-0.226c-0.115-0.01-0.216,0.074-0.226,0.189 c-0.034,0.354,0.192,1.083,1.279,1.319c0.28,0.061,0.634,0.199,0.698,0.304c0,0,0,0.003,0.003,0.003 c0.01,0.013,0.02,0.027,0.03,0.037c0.003,0.003,0.007,0.003,0.01,0.007c0.01,0.007,0.02,0.017,0.03,0.02 c0.003,0.003,0.01,0.007,0.013,0.007c0.01,0.007,0.02,0.01,0.03,0.013c0.003,0,0.01,0.003,0.013,0.003 c0.013,0.003,0.03,0.007,0.047,0.007l0,0c0.013,0,0.024,0,0.037-0.003c0.003,0,0.007,0,0.01-0.003 c0.01-0.003,0.02-0.007,0.034-0.01h0.003c0.01-0.003,0.017-0.01,0.027-0.013l0.003-0.003c0.007-0.003,0.013-0.01,0.017-0.013 c0.003-0.003,0.01-0.007,0.013-0.013c0.003-0.003,0.01-0.01,0.013-0.013c0.003-0.007,0.01-0.01,0.013-0.017s0.007-0.01,0.01-0.017 c0.003-0.007,0.007-0.01,0.01-0.017s0.003-0.013,0.007-0.02c0.003-0.007,0.003-0.013,0.007-0.02c0-0.007,0.003-0.013,0.003-0.017 c0-0.007,0.003-0.013,0.003-0.024V21.82C23.275,20.866,23.019,20.174,22.516,19.759z M5.009,23.575H2.813 c0.186-0.189,0.317-0.415,0.418-0.59c0.088-0.152,0.412-0.658,0.87-0.789c0.54-0.159,1.046,0.027,1.296,0.455 C5.232,22.937,5.1,23.248,5.009,23.575z M5.066,21.763c-0.192,0-0.348-0.155-0.348-0.348s0.155-0.348,0.348-0.348 c0.192,0,0.348,0.155,0.348,0.348C5.414,21.608,5.255,21.763,5.066,21.763z M17.435,19.128L17.435,19.128l0.03,0.037L17.435,19.128 z M17.442,18.919c-1.97-0.229-3.394,0.617-4.244,1.366c-0.368,0.324-0.658,0.658-0.877,0.941c-0.04-0.027-0.078-0.054-0.111-0.071 v-0.594c1.596-1.603,3.182-2.082,4.234-2.2c0.698-0.078,1.262-0.013,1.599,0.051C17.85,18.592,17.651,18.76,17.442,18.919z M19.915,15.977c-0.202,0.388-0.435,0.759-0.692,1.117c-0.267-0.084-0.601-0.162-1.002-0.199c0.894-1.134,1.461-2.487,1.643-3.914 c0.29-0.034,0.692-0.159,0.999-0.358C20.782,13.794,20.465,14.921,19.915,15.977z M18.495,12.212l0.243-0.01 c0.081,0.361,0.354,0.651,0.712,0.749c-0.189,1.444-0.789,2.807-1.748,3.92c-0.462,0-0.999,0.054-1.606,0.186 C17.513,15.903,18.437,14.165,18.495,12.212z M14.53,17.542c-0.135,0.054-0.229,0.098-0.277,0.118 c-0.56,0.223-1.161,0.368-1.788,0.415l5.597-5.597C17.894,14.732,16.49,16.642,14.53,17.542z M20.883,11.986 c-0.007,0.189-0.523,0.496-0.978,0.57c-0.064,0.01-0.128,0.017-0.189,0.017c-0.081,0-0.159-0.017-0.229-0.047 c-0.213-0.091-0.361-0.3-0.361-0.543c0-0.243,0.148-0.452,0.361-0.543c0.071-0.03,0.148-0.047,0.229-0.047 c0.061,0,0.125,0.007,0.189,0.017c0.455,0.074,0.968,0.381,0.978,0.567C20.883,11.979,20.883,11.982,20.883,11.986z M18.93,6.648 l0.088,0.118l0,0c0.766,1.022,1.663,2.605,1.835,4.575c-0.304-0.196-0.702-0.321-0.989-0.354c-0.216-1.707-0.975-3.249-2.099-4.44 c0.047-0.098,0.074-0.209,0.074-0.324c0-0.155-0.047-0.3-0.125-0.418l0.958-1.093C18.491,5.406,18.579,6.064,18.93,6.648z M16.133,4.283l0.044,0.03L16.2,4.327c0.334,0.169,0.692,0.253,1.063,0.253c0.391,0,0.8-0.094,1.211-0.283l-1.08,1.231 c-0.098-0.047-0.206-0.071-0.324-0.071c-0.152,0-0.29,0.044-0.408,0.118c-1.063-0.776-2.321-1.292-3.691-1.461 c-0.034-0.246-0.101-0.597-0.202-0.941C13.852,3.294,14.982,3.666,16.133,4.283z M17.422,6.223c0,0.152-0.101,0.283-0.24,0.331 c-0.034,0.01-0.071,0.017-0.108,0.017c-0.01,0-0.024,0-0.034,0c-0.155-0.013-0.28-0.132-0.307-0.28 c-0.003-0.02-0.007-0.044-0.007-0.064c0-0.024,0.003-0.044,0.007-0.067c0.03-0.152,0.159-0.27,0.317-0.28c0.007,0,0.017,0,0.024,0 s0.013,0,0.02,0c0.155,0.01,0.287,0.121,0.321,0.27c0.003,0.02,0.007,0.037,0.007,0.057C17.418,6.209,17.422,6.216,17.422,6.223z M12.988,4.539c1.255,0.165,2.416,0.644,3.398,1.353c-0.051,0.101-0.078,0.213-0.078,0.334c0,0.152,0.044,0.29,0.121,0.412 l-1.68,1.916c-0.078,0.088-0.067,0.219,0.02,0.294c0.04,0.034,0.088,0.051,0.138,0.051c0.057,0,0.115-0.024,0.159-0.071 l1.677-1.913c0.101,0.051,0.213,0.078,0.334,0.078c0.155,0,0.297-0.047,0.415-0.125c1.046,1.12,1.751,2.557,1.96,4.15 c-0.361,0.101-0.641,0.398-0.715,0.769l-0.24,0.01c-0.051-1.542-0.648-3.013-1.69-4.157c-0.078-0.084-0.209-0.091-0.294-0.013 c-0.084,0.078-0.091,0.209-0.013,0.294c0.918,1.005,1.464,2.281,1.569,3.63l-2.244-2.237c-0.081-0.081-0.213-0.081-0.294,0 c-0.081,0.081-0.081,0.213,0,0.294l2.409,2.409l-5.938,5.938l-5.938-5.938l2.389-2.389c0.081-0.081,0.081-0.213,0-0.294 c-0.081-0.081-0.213-0.081-0.294,0L5.944,11.55c0.118-1.535,0.806-2.915,1.856-3.92l1.046,1.194 c0.04,0.047,0.098,0.071,0.159,0.071c0.047,0,0.098-0.017,0.138-0.051c0.088-0.078,0.094-0.209,0.02-0.294L8.113,7.353 c0.945-0.789,2.129-1.299,3.428-1.397L9.76,7.721c-0.081,0.081-0.081,0.213,0,0.294c0.04,0.04,0.094,0.061,0.148,0.061 s0.105-0.02,0.148-0.061l1.957-1.937l1.9,1.9c0.081,0.081,0.213,0.081,0.294,0c0.081-0.081,0.081-0.213,0-0.294l-1.727-1.727 c1.07,0.081,2.088,0.439,2.976,1.049c0.094,0.064,0.226,0.04,0.29-0.054c0.064-0.094,0.04-0.226-0.054-0.29 c-1.026-0.705-2.22-1.097-3.468-1.134V5.379C12.614,5.285,12.928,4.951,12.988,4.539z M6.892,7.046 c0.118,0,0.229-0.027,0.327-0.074l0.3,0.344c-1.191,1.137-1.95,2.719-2.011,4.477l-0.169-0.01 c-0.081-0.395-0.388-0.705-0.783-0.786c0.206-1.562,0.894-2.972,1.906-4.079C6.588,6.999,6.733,7.046,6.892,7.046z M6.544,6.284 c0-0.017,0-0.03,0.003-0.047c0-0.01,0.003-0.017,0.003-0.027c0.03-0.148,0.159-0.263,0.314-0.273c0.007,0,0.013,0,0.017,0 s0.003,0,0.007,0c0.159,0,0.294,0.108,0.334,0.256c0.007,0.03,0.013,0.061,0.013,0.091c0,0.024-0.003,0.047-0.007,0.071 c-0.03,0.148-0.159,0.263-0.314,0.273c-0.01,0-0.017,0-0.027,0c-0.044,0-0.088-0.01-0.125-0.024 C6.639,6.557,6.544,6.429,6.544,6.284z M5.336,12.201l0.172,0.01c0.057,1.957,0.985,3.698,2.406,4.852 c-0.611-0.135-1.147-0.189-1.613-0.192c-0.951-1.11-1.555-2.466-1.744-3.904C4.945,12.886,5.252,12.586,5.336,12.201z M5.94,12.478 l5.597,5.597C8.555,17.849,6.166,15.461,5.94,12.478z M11.43,4.077c0.091-0.631,0.401-1.474,0.563-1.542 c0.186,0.071,0.472,0.945,0.56,1.538C12.57,4.192,12.58,4.3,12.58,4.388c0,0.037-0.003,0.071-0.01,0.105 c-0.051,0.273-0.29,0.482-0.58,0.482s-0.53-0.209-0.58-0.482c-0.007-0.034-0.01-0.071-0.01-0.105 C11.403,4.296,11.413,4.192,11.43,4.077z M11.794,5.376v0.145c-1.505,0.047-2.881,0.611-3.961,1.515L7.536,6.695 C7.614,6.577,7.661,6.432,7.661,6.28c0-0.128-0.034-0.25-0.088-0.354c0.989-0.725,2.159-1.215,3.431-1.387 C11.062,4.958,11.382,5.295,11.794,5.376z M6.642,4.58c0.371,0,0.729-0.084,1.066-0.253c0.02-0.01,1.947-1.012,3.505-1.147 c-0.101,0.341-0.169,0.695-0.202,0.938C9.625,4.29,8.346,4.826,7.276,5.622C7.162,5.555,7.033,5.518,6.892,5.518 c-0.118,0-0.229,0.027-0.327,0.074L5.431,4.3C5.846,4.485,6.251,4.58,6.642,4.58z M4.958,6.668l0.017-0.024 c0.351-0.58,0.439-1.242,0.263-1.937l1.012,1.157C6.173,5.983,6.126,6.128,6.126,6.28c0,0.111,0.024,0.216,0.067,0.314 c-1.103,1.188-1.846,2.713-2.058,4.4c-0.3,0.047-0.698,0.175-0.999,0.368C3.255,9.58,3.852,8.038,4.958,6.668z M3.12,11.979 c0.007-0.196,0.55-0.466,0.978-0.553c0.094-0.02,0.182-0.03,0.256-0.03c0.057,0,0.108,0.007,0.162,0.024 c0.246,0.071,0.428,0.297,0.428,0.567s-0.182,0.496-0.428,0.567c-0.051,0.013-0.105,0.024-0.162,0.024 c-0.078,0-0.165-0.01-0.256-0.03c-0.428-0.091-0.972-0.361-0.978-0.557C3.12,11.982,3.12,11.982,3.12,11.979z M3.14,12.6 c0.3,0.196,0.702,0.324,0.999,0.371c0.179,1.431,0.746,2.787,1.643,3.92c-0.401,0.037-0.736,0.111-1.005,0.196 C3.808,15.758,3.248,14.222,3.14,12.6z M5.077,17.478c-0.01-0.013-0.02-0.024-0.03-0.037c1.016-0.28,2.126-0.132,2.905,0.054 c0.941,0.226,1.63,0.553,1.636,0.557l0.003-0.007c0.746,0.297,1.559,0.462,2.409,0.462c0.847,0,1.657-0.162,2.399-0.459l0,0 c0,0,0.007-0.003,0.02-0.01c0.088-0.037,0.179-0.074,0.263-0.115c0.287-0.118,0.769-0.294,1.35-0.432 c0.786-0.189,1.9-0.337,2.915-0.054c-0.175,0.216-0.358,0.422-0.553,0.621c-0.283-0.078-1.005-0.226-1.98-0.121 c-1.059,0.115-2.618,0.567-4.211,2.038v-0.368c0-0.115-0.094-0.209-0.209-0.209c-0.115,0-0.209,0.094-0.209,0.209v0.348 c-1.582-1.454-3.134-1.903-4.187-2.018c-0.999-0.108-1.731,0.054-1.997,0.128C5.424,17.883,5.245,17.684,5.077,17.478z M5.964,18.416c0.337-0.067,0.908-0.135,1.619-0.054c1.873,0.209,3.31,1.279,4.211,2.176v0.611 c-0.03,0.017-0.064,0.037-0.101,0.064c-0.219-0.28-0.506-0.607-0.867-0.924c-0.85-0.752-2.281-1.603-4.258-1.366v0.003 C6.359,18.764,6.156,18.595,5.964,18.416z M11.204,21.723c-0.395-0.506-0.827-0.887-1.258-1.174l0.003-0.01 c-0.01-0.003-0.02-0.007-0.03-0.007c-0.719-0.469-1.441-0.675-2.021-0.759c-0.273-0.142-0.543-0.3-0.803-0.472 c1.272-0.037,2.426,0.395,3.445,1.289c0.351,0.307,0.628,0.624,0.837,0.897C11.312,21.557,11.254,21.635,11.204,21.723z M12.212,22.988c-0.051,0.061-0.105,0.121-0.165,0.182c-0.013,0.013-0.03,0.03-0.047,0.044l-0.003,0.003l-0.003,0.003v-0.007 c-0.007-0.007-0.017-0.013-0.024-0.024c-0.067-0.064-0.125-0.128-0.179-0.192c-0.246-0.294-0.354-0.567-0.317-0.816 c0.003-0.02,0.007-0.04,0.013-0.061c0.027-0.108,0.078-0.202,0.138-0.283c0.051-0.067,0.108-0.125,0.165-0.175 c0.051-0.044,0.101-0.081,0.145-0.111c0.02-0.013,0.037-0.024,0.054-0.034c0,0,0.003,0,0.003-0.003h0.003 c0.024,0.013,0.047,0.03,0.078,0.051c0.04,0.027,0.088,0.064,0.135,0.105c0.061,0.054,0.121,0.118,0.172,0.189 c0.061,0.088,0.111,0.186,0.132,0.297c0,0.007,0.003,0.017,0.007,0.024C12.557,22.424,12.452,22.694,12.212,22.988z M13.036,21.466 c-0.007,0.007-0.013,0.013-0.017,0.02c-0.078,0.088-0.148,0.175-0.213,0.26c-0.051-0.088-0.108-0.169-0.169-0.24 c0.209-0.273,0.493-0.601,0.85-0.914c1.012-0.891,2.163-1.323,3.425-1.292c-0.263,0.172-0.533,0.334-0.81,0.476 C14.658,19.995,13.67,20.744,13.036,21.466z M18.923,21.068c0.192,0,0.348,0.155,0.348,0.348s-0.155,0.348-0.348,0.348 s-0.348-0.155-0.348-0.348C18.576,21.227,18.731,21.068,18.923,21.068z M19.976,22.151c0.459,0.135,0.783,0.638,0.87,0.789 c0.108,0.189,0.253,0.439,0.466,0.634H18.98c-0.088-0.317-0.213-0.617-0.371-0.894C18.866,22.222,19.439,21.993,19.976,22.151z M2.199,7.495c0,0.341,0.277,0.621,0.621,0.621S3.44,7.839,3.44,7.495c0-0.341-0.277-0.621-0.621-0.621S2.199,7.154,2.199,7.495z M3.022,7.495c0,0.111-0.091,0.202-0.202,0.202c-0.111,0-0.202-0.091-0.202-0.202s0.091-0.202,0.202-0.202 C2.931,7.292,3.022,7.384,3.022,7.495z M21.737,7.495c0-0.341-0.277-0.621-0.621-0.621c-0.341,0-0.621,0.277-0.621,0.621 c0,0.341,0.277,0.621,0.621,0.621S21.737,7.839,21.737,7.495z M20.914,7.495c0-0.111,0.091-0.202,0.202-0.202 s0.202,0.091,0.202,0.202s-0.091,0.202-0.202,0.202C21.005,7.701,20.914,7.61,20.914,7.495z M22.334,9.04 c-0.078-0.03-0.169-0.013-0.229,0.047c-0.273,0.28-0.722,0.27-0.729,0.27c-0.003,0-0.007,0-0.007,0 c-0.111,0-0.202,0.088-0.209,0.199c-0.003,0.115,0.084,0.213,0.199,0.216c0.02,0,0.351,0.01,0.688-0.145v3.404 c0,0.115,0.094,0.209,0.209,0.209s0.209-0.094,0.209-0.209V9.232C22.462,9.148,22.412,9.07,22.334,9.04z M1.73,13.241 c0.115,0,0.209-0.094,0.209-0.209V9.627c0.337,0.155,0.668,0.145,0.688,0.145c0.115-0.003,0.206-0.101,0.199-0.216 C2.823,9.442,2.725,9.351,2.61,9.357c-0.003,0-0.455,0.01-0.729-0.27C1.821,9.027,1.733,9.01,1.652,9.04 C1.574,9.07,1.524,9.148,1.524,9.232v3.802C1.52,13.15,1.615,13.241,1.73,13.241z M22.499,16.712c0-0.115-0.094-0.209-0.209-0.209 h-1.35c-0.115,0-0.209,0.094-0.209,0.209s0.094,0.209,0.209,0.209h1.35C22.405,16.922,22.499,16.83,22.499,16.712z M21.099,17.512 c0.115,0,0.209-0.094,0.209-0.209s-0.094-0.209-0.209-0.209h-0.52c-0.115,0-0.209,0.094-0.209,0.209s0.094,0.209,0.209,0.209 H21.099z M21.605,17.897c0-0.115-0.094-0.209-0.209-0.209h-1.289c-0.115,0-0.209,0.094-0.209,0.209s0.094,0.209,0.209,0.209h1.289 C21.511,18.106,21.605,18.015,21.605,17.897z M20.789,18.494c0-0.115-0.094-0.209-0.209-0.209h-1.009 c-0.115,0-0.209,0.094-0.209,0.209s0.094,0.209,0.209,0.209h1.009C20.694,18.703,20.789,18.609,20.789,18.494z M18.916,18.882 c-0.115,0-0.209,0.094-0.209,0.209s0.094,0.209,0.209,0.209h0.574c0.115,0,0.209-0.094,0.209-0.209s-0.094-0.209-0.209-0.209 H18.916z M22.29,15.312h-0.752c-0.115,0-0.209,0.094-0.209,0.209c0,0.115,0.094,0.209,0.209,0.209h0.752 c0.115,0,0.209-0.094,0.209-0.209C22.499,15.407,22.405,15.312,22.29,15.312z M22.29,15.909h-1.049 c-0.115,0-0.209,0.094-0.209,0.209s0.094,0.209,0.209,0.209h1.049c0.115,0,0.209-0.094,0.209-0.209S22.405,15.909,22.29,15.909z M22.29,14.121h-0.334c-0.115,0-0.209,0.094-0.209,0.209s0.094,0.209,0.209,0.209h0.334c0.115,0,0.209-0.094,0.209-0.209 C22.499,14.216,22.405,14.121,22.29,14.121z M22.29,14.718h-0.513c-0.115,0-0.209,0.094-0.209,0.209 c0,0.115,0.094,0.209,0.209,0.209h0.513c0.115,0,0.209-0.094,0.209-0.209C22.499,14.813,22.405,14.718,22.29,14.718z M1.723,13.511 c0.116,0,0.209,0.094,0.209,0.209c0,0.116-0.094,0.209-0.209,0.209c-0.116,0-0.209-0.094-0.209-0.209 C1.514,13.604,1.607,13.511,1.723,13.511z M2.566,18.291c0.116,0,0.209,0.094,0.209,0.209c0,0.116-0.094,0.209-0.209,0.209 c-0.116,0-0.209-0.094-0.209-0.209C2.357,18.385,2.451,18.291,2.566,18.291z M3.909,18.889c0.116,0,0.209,0.094,0.209,0.209 c0,0.116-0.094,0.209-0.209,0.209S3.7,19.213,3.7,19.098C3.7,18.982,3.794,18.889,3.909,18.889z M1.703,16.928h1.35 c0.115,0,0.209-0.094,0.209-0.209S3.167,16.51,3.052,16.51h-1.35c-0.115,0-0.209,0.094-0.209,0.209 C1.493,16.837,1.588,16.928,1.703,16.928z M3.413,17.104h-0.52c-0.115,0-0.209,0.094-0.209,0.209s0.094,0.209,0.209,0.209h0.52 c0.115,0,0.209-0.094,0.209-0.209C3.622,17.198,3.528,17.104,3.413,17.104z M3.886,17.698H2.597c-0.115,0-0.209,0.094-0.209,0.209 s0.094,0.209,0.209,0.209h1.289c0.115,0,0.209-0.094,0.209-0.209C4.095,17.789,4,17.698,3.886,17.698z M4.422,18.291H3.413 c-0.115,0-0.209,0.094-0.209,0.209s0.094,0.209,0.209,0.209h1.009c0.115,0,0.209-0.094,0.209-0.209 C4.631,18.386,4.537,18.291,4.422,18.291z M4.294,19.098c0,0.115,0.094,0.209,0.209,0.209h0.574c0.115,0,0.209-0.094,0.209-0.209 s-0.094-0.209-0.209-0.209H4.503C4.388,18.889,4.294,18.983,4.294,19.098z M1.703,15.737h0.752c0.115,0,0.209-0.094,0.209-0.209 c0-0.115-0.094-0.209-0.209-0.209H1.703c-0.115,0-0.209,0.094-0.209,0.209C1.493,15.643,1.588,15.737,1.703,15.737z M1.703,16.335 h1.049c0.115,0,0.209-0.094,0.209-0.209s-0.094-0.209-0.209-0.209H1.703c-0.115,0-0.209,0.094-0.209,0.209 S1.588,16.335,1.703,16.335z M1.703,14.546h0.334c0.115,0,0.209-0.094,0.209-0.209c0-0.115-0.094-0.209-0.209-0.209H1.703 c-0.115,0-0.209,0.094-0.209,0.209S1.588,14.546,1.703,14.546z M1.703,15.14h0.513c0.115,0,0.209-0.094,0.209-0.209 c0-0.115-0.094-0.209-0.209-0.209H1.703c-0.115,0-0.209,0.094-0.209,0.209C1.493,15.049,1.588,15.14,1.703,15.14z M11.996,23.217 L11.996,23.217c0.003-0.003,0-0.003,0-0.007V23.217z M21.484,4.175C21.487,4.175,21.487,4.175,21.484,4.175 c0.094,0,0.179-0.064,0.202-0.159c0.074-0.297,0.044-0.55-0.098-0.759C21.362,2.92,20.947,2.856,20.9,2.849 c-0.108-0.013-0.209,0.054-0.233,0.162c-0.078,0.354-0.034,0.638,0.135,0.847C21.052,4.161,21.443,4.172,21.484,4.175z M21.248,3.493c0.04,0.064,0.064,0.138,0.064,0.226c-0.061-0.024-0.128-0.061-0.175-0.121c-0.054-0.067-0.081-0.155-0.081-0.267 C21.123,3.365,21.197,3.419,21.248,3.493z M20.128,1.159c-0.226-0.337-0.641-0.401-0.688-0.408 c-0.108-0.013-0.209,0.054-0.233,0.162c-0.078,0.354-0.034,0.638,0.135,0.847c0.243,0.304,0.634,0.314,0.678,0.314l0,0 c0.094,0,0.179-0.064,0.202-0.159C20.3,1.624,20.269,1.368,20.128,1.159z M19.672,1.499c-0.054-0.067-0.081-0.155-0.081-0.267 c0.071,0.034,0.145,0.088,0.192,0.162c0.04,0.064,0.064,0.138,0.064,0.226C19.787,1.597,19.719,1.56,19.672,1.499z M3.133,2.849 C3.086,2.856,2.674,2.92,2.445,3.257C2.307,3.466,2.273,3.719,2.347,4.016C2.371,4.107,2.455,4.175,2.55,4.175l0,0 c0.044,0,0.435-0.01,0.678-0.314C3.396,3.652,3.44,3.365,3.363,3.014C3.342,2.906,3.241,2.836,3.133,2.849z M2.907,3.598 C2.86,3.659,2.792,3.696,2.728,3.719c0-0.088,0.024-0.165,0.064-0.226c0.051-0.074,0.125-0.128,0.192-0.162 C2.985,3.443,2.958,3.531,2.907,3.598z M4.564,0.75C4.517,0.757,4.105,0.821,3.875,1.159C3.737,1.368,3.703,1.621,3.778,1.918 C3.801,2.009,3.886,2.076,3.98,2.076l0,0c0.044,0,0.435-0.01,0.678-0.314c0.169-0.209,0.213-0.496,0.135-0.847 C4.77,0.808,4.672,0.737,4.564,0.75z M4.334,1.499C4.287,1.56,4.22,1.597,4.156,1.621c0-0.088,0.024-0.165,0.064-0.226 C4.27,1.321,4.344,1.267,4.412,1.233C4.412,1.344,4.388,1.432,4.334,1.499z M18.579,10.562c0.013,0.108,0.101,0.186,0.206,0.186 c0.007,0,0.017,0,0.024,0c0.115-0.013,0.196-0.118,0.182-0.233c-0.209-1.822-1.454-3.111-1.508-3.165 c-0.081-0.081-0.213-0.084-0.294-0.003c-0.081,0.081-0.084,0.213-0.003,0.294C17.199,7.653,18.387,8.885,18.579,10.562z M5.218,10.744c0.007,0,0.017,0,0.024,0c0.105,0,0.196-0.078,0.206-0.186C5.64,8.882,6.828,7.65,6.838,7.64 c0.081-0.081,0.078-0.216-0.003-0.294C6.753,7.265,6.618,7.265,6.541,7.35c-0.054,0.054-1.296,1.343-1.508,3.165 C5.023,10.629,5.104,10.73,5.218,10.744z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Gutenberg</title><path d="M16.34 0a.205.205 0 00-.18.116c-.05.105-.01.23.095.28.503.25.459.692.418.87-.08.352-.391.723-.8.723-.522 0-.772-.263-1.052-.746-.138-.236-.523-.81-1.113-.982a1.615 1.615 0 00-1.718.533 1.615 1.615 0 00-1.717-.533c-.59.172-.975.746-1.114.982-.28.483-.53.746-1.042.746H8.11a.833.833 0 01-.81-.62c-.04-.146-.124-.642.442-.98a.208.208 0 00.071-.286.208.208 0 00-.286-.071c-.652.388-.753 1.002-.631 1.447.148.55.637.921 1.21.925h.01c.787 0 1.138-.493 1.404-.952.088-.151.412-.658.871-.79.567-.164 1.17.099 1.407.615a.212.212 0 00.182.121h.024a.211.211 0 00.182-.121c.236-.516.84-.78 1.407-.614.459.135.783.638.87.79.267.462.618.95 1.414.95.479 0 1.046-.357 1.204-1.042.132-.566-.11-1.08-.64-1.34a.215.215 0 00-.102-.02zM3.821.093a.21.21 0 00-.21.209c0 .115.092.21.21.21H6.41a.21.21 0 00.209-.21.21.21 0 00-.21-.21zm13.863 0a.21.21 0 00-.209.209c0 .115.095.21.21.21h2.587a.21.21 0 00.21-.21.21.21 0 00-.21-.21zM2.904.096a.21.21 0 00-.206.21.21.21 0 00.21.208.21.21 0 00.209-.209.21.21 0 00-.21-.209.21.21 0 00-.003 0zm18.24 0a.21.21 0 00-.206.21.21.21 0 00.209.208.21.21 0 00.21-.209.21.21 0 00-.21-.209.21.21 0 00-.004 0zm-19.39 0a.209.209 0 00-.196.21v2.216c0 .115.091.21.206.21a.21.21 0 00.21-.21V.859l1.015 1.153a.209.209 0 00.313-.273L1.922.167a.211.211 0 00-.167-.07zm20.512 0a.21.21 0 00-.168.07l-1.38 1.57a.205.205 0 00.02.293c.082.078.213.068.29-.02L22.045.855V2.52c0 .114.095.209.21.209a.21.21 0 00.209-.21V.306a.208.208 0 00-.197-.208zM8.235.526a.564.564 0 10.563.563.564.564 0 00-.563-.563zm7.591 0a.564.564 0 000 1.126.565.565 0 000-1.126zm3.59.224a.208.208 0 00-.212.164c-.078.354-.034.637.134.846.243.304.635.314.679.314a.209.209 0 00.202-.158c.078-.29.047-.547-.094-.756-.226-.338-.641-.402-.689-.408a.214.214 0 00-.02-.002zm-14.835 0c-.007 0-.013 0-.02.002-.047.006-.459.07-.688.408-.139.209-.172.462-.098.759a.213.213 0 00.202.159c.044 0 .435-.01.678-.314.169-.21.213-.496.135-.847a.208.208 0 00-.209-.167zm3.654.19a.15.15 0 01.148.149.15.15 0 01-.148.148.15.15 0 01-.148-.148.15.15 0 01.148-.148zm7.591 0a.15.15 0 01.149.149.15.15 0 01-.149.148.15.15 0 01-.148-.148.15.15 0 01.148-.148zM4.41 1.234a.41.41 0 01-.078.267.395.395 0 01-.178.121c0-.088.023-.165.064-.226a.51.51 0 01.192-.162zm15.18 0c.07.034.144.088.192.162.04.064.064.138.064.226a.404.404 0 01-.176-.121.412.412 0 01-.08-.267zm-6.593.135a1.3 1.3 0 00-.439.07.206.206 0 00-.121.267.21.21 0 00.266.125c.034-.013.844-.283 1.464.682.04.06.108.094.176.094.037 0 .077-.01.111-.034a.208.208 0 00.064-.286c-.465-.72-1.07-.918-1.52-.918zm-1.989.003a1.577 1.577 0 00-.262.017c-.35.05-.853.25-1.272.901a.207.207 0 00.064.287.196.196 0 00.112.034.212.212 0 00.175-.095c.618-.965 1.427-.695 1.464-.681a.208.208 0 00.267-.125.211.211 0 00-.125-.27c-.023-.008-.184-.065-.423-.068zm.976.162a.21.21 0 00-.205.21.21.21 0 00.209.209.21.21 0 00.209-.21.21.21 0 00-.21-.209.21.21 0 00-.003 0zm6.779.303c-.2-.007-.455.052-.77.244a3.24 3.24 0 00-.533.415c-.513.452-.941.442-.965.442a.208.208 0 00-.1.395c.33.155.63.216.9.216.516 0 .928-.226 1.215-.463.458-.378.695-.853.705-.873a.206.206 0 00-.081-.27.777.777 0 00-.372-.106zm-13.434.002a.796.796 0 00-.372.104.206.206 0 00-.081.27c.01.02.246.495.705.873.287.237.695.463 1.214.463.274 0 .574-.061.901-.216a.207.207 0 00.112-.24.208.208 0 00-.213-.158c-.017 0-.449.013-.962-.44A3.237 3.237 0 006.1 2.08c-.315-.19-.57-.248-.77-.242zM12 2.114c-.263 0-.469.273-.627.634-1.677.074-3.762 1.157-3.85 1.201-1.427.719-2.898-.638-3.273-1.019-.057-.064-.097-.101-.1-.108a.208.208 0 00-.304.283l.26.294c.151.189.343.462.505.79.405.82.412 1.565.024 2.22a8.822 8.822 0 00-1.174 1.896c-1.13.368-1.535-.32-1.552-.351 0-.004-.003-.003-.003-.007-.213-.357-.129-.84.195-1.147.25-.236.685-.256.82-.256h.003c.453 0 .918-.071 1.219-.59.229-.399.168-.892-.156-1.219-.327-.334-.82-.391-1.258-.148a.206.206 0 00-.081.283.206.206 0 00.283.081c.28-.152.564-.125.76.078a.596.596 0 01.09.718c-.185.32-.438.385-.843.385h-.014c-.185 0-.617.027-.961.25V3.335a.21.21 0 00-.21-.21.21.21 0 00-.208.21v3.509c-.23.412-.243.914-.007 1.32.023.043.168.286.492.468.186.105.453.203.807.203.128 0 .27-.014.421-.044-.364.978-.546 2.03-.553 3.178v.037a9.1 9.1 0 002.052 5.729 9.45 9.45 0 004.527 3.047 3.84 3.84 0 00-3.634 1.491 1.391 1.391 0 00-.192-.206.77.77 0 00.375-.658.767.767 0 00-.989-.732 1.175 1.175 0 00-.087-.368c-.324-.725-.915-.847-1.445-.904-.175-.02-.765-.108-1.076-.472-.391-.442-.398-1.1-.023-1.525a.208.208 0 10-.31-.277c-.51.58-.507 1.474.006 2.082.067.08.145.148.226.209a1.738 1.738 0 00-.651.334c-.496.408-.75 1.09-.756 2.017a.212.212 0 00.095.22c.033.02.07.03.107.03.014 0 .03-.003.044-.007h.004c.006 0 .01-.003.017-.007.01-.003.023-.007.033-.013.004 0 .004-.003.007-.003a.242.242 0 00.084-.081c.081-.105.415-.237.692-.294 1.083-.236 1.31-.968 1.275-1.32a.208.208 0 10-.415.038c0 .003.004.064-.016.155-.051.21-.237.57-.932.722h-.006a2.772 2.772 0 00-.55.179c.06-.6.253-1.04.58-1.312.503-.419 1.167-.3 1.174-.297a.203.203 0 00.064 0 2.5 2.5 0 00.277.043c.557.061.897.183 1.11.658.165.375-.047.807-.334 1.023-.145.111-.533.33-.968-.027a.209.209 0 00-.267.32c.196.162.415.257.641.284-.29.236-.486.533-.573.688-.284.49-.513.752-.895.756v-1.461a.21.21 0 00-.209-.21.21.21 0 00-.209.21v1.694c0 .084.05.155.122.189.037.027.08.047.128.047h4.858a.212.212 0 00.176-.095.22.22 0 00.06-.1 1.686 1.686 0 013.192-.223h-.445a1.204 1.204 0 00-1.117-.75c-.543 0-1.022.368-1.167.891a.21.21 0 00.145.257.21.21 0 00.256-.145.791.791 0 011.407-.253h-.121a.21.21 0 00-.21.209c0 .114.095.209.21.209h.421l.024.003c.01 0 .02 0 .027-.003h.837a.21.21 0 00.209-.21c0-.01 0-.02-.004-.03a.257.257 0 00-.003-.087 2.106 2.106 0 00-4.035-.092h-1.09c.088-.28.206-.54.354-.782.01-.014.017-.027.027-.04a3.434 3.434 0 014.862-.97c.017.011.034.021.05.025.088.104.176.215.26.33l.058.081c-.02.429.212.877.695 1.336.017.05.034.095.044.128v.044c0 .115.094.21.209.21a.203.203 0 00.199-.156c0-.003.03-.104.091-.273.435-.425.651-.84.648-1.242a6.449 6.449 0 01.381-.496 3.393 3.393 0 011.947-.607 3.42 3.42 0 013.273 2.413h-1.09a2.1 2.1 0 00-2.004-1.461c-.948 0-1.782.637-2.031 1.552a.173.173 0 000 .1v.018c0 .114.094.209.209.209h1.828a.21.21 0 00.21-.21.21.21 0 00-.21-.208h-.664a.791.791 0 011.41.263.206.206 0 00.253.148.21.21 0 00.152-.253 1.21 1.21 0 00-2.288-.159h-.421a1.687 1.687 0 013.191.223c.004.017.014.034.02.05a.208.208 0 00.2.146h4.95a.21.21 0 00.208-.21v-.067c.004-.02.004-.04.004-.06 0-.004 0-.008-.004-.011v-1.582a.21.21 0 00-.209-.21.21.21 0 00-.209.21v1.417c-.35-.027-.57-.287-.84-.752a2.65 2.65 0 00-.54-.658c.186-.04.364-.129.53-.267a.209.209 0 00-.267-.32c-.432.357-.82.138-.968.027-.287-.216-.5-.652-.334-1.023.212-.475.553-.6 1.11-.658.07-.006.165-.02.277-.043.02.003.043.003.067 0 .007 0 .665-.122 1.17.296.331.274.527.712.584 1.316a2.762 2.762 0 00-.553-.182h-.007c-.691-.152-.88-.51-.93-.719a.468.468 0 01-.018-.155.208.208 0 10-.415-.037c-.033.354.193 1.083 1.28 1.32.28.06.633.198.698.303a.356.356 0 00.034.04l.01.007c.01.007.02.017.03.02.003.003.01.007.013.007.01.007.02.01.03.014l.014.003c.014.003.03.007.047.007.014 0 .024 0 .037-.003.004 0 .007 0 .01-.003.01-.003.02-.007.034-.01h.004c.01-.003.017-.01.027-.014l.003-.003c.007-.003.014-.01.017-.013.003-.003.01-.007.014-.014l.013-.013c.003-.007.01-.01.013-.017l.01-.017.01-.017c.004-.007.004-.014.007-.02.004-.007.004-.014.007-.02 0-.007.004-.014.004-.017 0-.007.003-.014.003-.024v-.003c-.003-.955-.26-1.646-.763-2.061a1.69 1.69 0 00-.65-.334c.08-.061.158-.132.225-.21.517-.607.52-1.5.007-2.081a.205.205 0 00-.293-.017.205.205 0 00-.017.293c.374.426.367 1.083-.014 1.536-.31.364-.9.452-1.076.472-.53.057-1.124.179-1.444.904-.05.111-.081.236-.088.371a.767.767 0 00-1.002.729c0 .29.162.543.402.671-.071.065-.139.135-.2.216a3.847 3.847 0 00-3.62-1.518 9.413 9.413 0 005.55-4.619 8.912 8.912 0 001.016-4.153V11.977a8.487 8.487 0 00-.644-3.168c.138.027.27.037.388.037.873 0 1.258-.6 1.299-.671a1.3 1.3 0 00.11-1.05c.004-.01.004-.023.004-.037V3.286a.21.21 0 00-.209-.21.21.21 0 00-.21.21V6.48c-.353-.307-.866-.34-1.079-.34-.411.003-.668-.062-.857-.385a.592.592 0 01.091-.72c.2-.202.483-.228.76-.077a.209.209 0 00.202-.364c-.439-.243-.931-.182-1.259.148-.323.331-.384.82-.155 1.218.3.517.756.59 1.205.59h.017c.135 0 .57.021.82.257.323.307.408.79.195 1.147 0 0-.003.004-.003.007-.017.03-.419.712-1.539.354a10.48 10.48 0 00-1.093-1.808l-.165.125.165-.128-.067-.088c-.719-1.205.111-2.487.543-3.03l.243-.277a.208.208 0 00-.304-.283 2.71 2.71 0 00-.101.108c-.375.381-1.839 1.73-3.26 1.026l-.04-.027-.02-.014c-1.272-.685-2.527-1.08-3.725-1.18-.155-.355-.36-.625-.62-.625zm-8.509.077a.21.21 0 00-.205.21.21.21 0 00.209.209.21.21 0 00.209-.21.21.21 0 00-.21-.209.21.21 0 00-.003 0zm16.91 0a.21.21 0 00-.206.21.21.21 0 00.21.209.21.21 0 00.209-.21.21.21 0 00-.21-.209.21.21 0 00-.003 0zm-15.017.061c.35.017.8.385.958.543l.01.01c.159.142.318.247.463.324-.73.007-1.212-.55-1.43-.877zm13.324 0a2.62 2.62 0 01-.46.513c-.303.25-.627.37-.97.364.14-.074.3-.182.461-.324l.01-.01c.159-.158.608-.526.959-.543zm-6.718.283c.186.071.473.945.56 1.539.017.118.027.226.027.314a.59.59 0 01-1.18 0 2.91 2.91 0 01.03-.31c.09-.632.401-1.475.563-1.543zm-8.84.313l-.02.001c-.047.007-.459.071-.688.408-.138.21-.172.463-.098.76a.213.213 0 00.203.158c.043 0 .435-.01.678-.314.168-.209.212-.496.135-.846a.206.206 0 00-.21-.167zm17.727 0a.208.208 0 00-.213.163c-.077.354-.033.638.135.847.25.304.641.314.682.317a.209.209 0 00.202-.158c.075-.297.044-.55-.097-.76-.226-.337-.641-.401-.689-.408a.213.213 0 00-.02-.001zm-8.11.325c1.082.122 2.212.493 3.363 1.11l.044.03.023.014c.334.169.692.253 1.063.253.392 0 .8-.094 1.211-.283l-1.08 1.231a.761.761 0 00-.732.047 7.877 7.877 0 00-3.69-1.46 6.766 6.766 0 00-.203-.942zm-1.556.007c-.101.34-.169.695-.203.938a7.879 7.879 0 00-3.735 1.504.752.752 0 00-.712-.03L5.429 4.3c.415.186.82.28 1.211.28a2.36 2.36 0 001.066-.253c.02-.01 1.947-1.012 3.506-1.147zm-8.23.152c0 .11-.026.199-.077.266a.395.395 0 01-.179.122c0-.088.024-.166.065-.226a.51.51 0 01.192-.162zm18.071 0a.51.51 0 01.193.162c.04.064.064.138.064.226a.404.404 0 01-.176-.122.412.412 0 01-.08-.266zm-10.05 1.207a.994.994 0 00.79.837v.145A6.472 6.472 0 007.83 7.036l-.297-.34a.76.76 0 00.037-.77 7.488 7.488 0 013.432-1.387zm1.983 0a7.472 7.472 0 013.398 1.353.755.755 0 00.044.746l-1.68 1.916a.205.205 0 00.02.294.212.212 0 00.297-.02l1.677-1.913a.752.752 0 00.749-.047 7.506 7.506 0 011.96 4.15 1.008 1.008 0 00-.715.769l-.24.01a6.48 6.48 0 00-1.69-4.157.208.208 0 00-.307.28 6.07 6.07 0 011.569 3.63l-2.244-2.236a.208.208 0 00-.294.293l2.41 2.409L12 17.954l-5.938-5.938 2.389-2.389a.208.208 0 00-.294-.293L5.941 11.55a6.07 6.07 0 011.855-3.92l1.046 1.194c.04.048.098.071.159.071a.219.219 0 00.138-.05.208.208 0 00.02-.294L8.11 7.353a6.043 6.043 0 013.428-1.396L9.757 7.72a.208.208 0 00.148.354c.054 0 .105-.02.149-.06l1.956-1.937 1.9 1.9a.208.208 0 00.293-.294l-1.727-1.727a6.03 6.03 0 012.976 1.049.21.21 0 00.29-.054.21.21 0 00-.054-.29 6.435 6.435 0 00-3.468-1.134V5.38c.39-.095.705-.429.765-.84zm-7.75.17l1.013 1.156a.76.76 0 00-.058.73 7.912 7.912 0 00-2.058 4.399c-.3.047-.698.175-.998.367.118-1.78.715-3.323 1.822-4.693l.016-.023c.351-.58.439-1.242.264-1.937zm13.435.003c-.182.695-.094 1.353.257 1.936l.088.118c.765 1.023 1.663 2.605 1.835 4.575a2.526 2.526 0 00-.989-.354 7.916 7.916 0 00-2.098-4.44.748.748 0 00-.05-.742zm-1.622 1.167h.043c.156.01.287.121.321.27.003.02.007.037.007.057-.004.004 0 .01 0 .017a.353.353 0 01-.24.33.38.38 0 01-.108.018h-.033a.344.344 0 01-.314-.345.348.348 0 01.324-.348zm-10.186.057h.023c.159 0 .294.108.334.257.007.03.014.06.014.09a.345.345 0 01-.32.344h-.028a.347.347 0 01-.344-.344c0-.016 0-.03.004-.046 0-.01.003-.017.003-.027a.345.345 0 01.314-.274zm-4.045.938a.621.621 0 100 1.243.621.621 0 000-1.243zm18.296 0a.621.621 0 10.001 1.243.621.621 0 000-1.243zM6.46 6.918a.78.78 0 00.756.054l.3.344a6.486 6.486 0 00-2.01 4.477l-.17-.01a1.008 1.008 0 00-.782-.786A7.49 7.49 0 016.46 6.918zm.223.368a.199.199 0 00-.145.064c-.054.054-1.296 1.343-1.508 3.165a.21.21 0 00.185.23h.024a.205.205 0 00.206-.186c.192-1.677 1.38-2.909 1.39-2.919a.208.208 0 00-.004-.293.207.207 0 00-.148-.06zm10.65.002a.208.208 0 00-.15.353c.013.013 1.2 1.244 1.393 2.921a.208.208 0 00.206.186h.023a.209.209 0 00.183-.233c-.21-1.822-1.455-3.111-1.509-3.165a.212.212 0 00-.146-.062zm-14.516.005c.11 0 .202.09.202.202a.203.203 0 01-.202.203.203.203 0 01-.203-.203c0-.111.091-.202.203-.202zm18.296 0c.112 0 .203.09.203.202a.203.203 0 01-.203.203.199.199 0 01-.202-.203c0-.111.09-.202.202-.202zM1.741 9.026a.206.206 0 00-.22.207v3.802a.202.202 0 00.206.206.21.21 0 00.209-.21V9.628c.337.156.668.145.688.145a.205.205 0 00.2-.215.205.205 0 00-.217-.2c-.003 0-.455.01-.728-.27a.21.21 0 00-.138-.061zm20.5 0a.213.213 0 00-.14.062c-.273.28-.721.27-.728.27h-.007a.21.21 0 00-.209.199.208.208 0 00.2.215c.02 0 .35.01.687-.145v3.405c0 .114.095.209.21.209a.21.21 0 00.209-.21V9.234a.214.214 0 00-.132-.193.216.216 0 00-.09-.014zm-10.234.824c-.49 0-.884.162-1.184.483-.284.3-.432.695-.449 1.18l-.003.102.003.948h-.003c0 .536.152.965.452 1.285.3.32.695.483 1.184.483.412 0 .752-.098 1.026-.297.25-.182.398-.422.448-.719l.01-1.06c.308-.074.726-.242.989-.64a.173.173 0 00-.044-.257.185.185 0 00-.256.05c-.334.504-1.043.53-1.08.53h-.017c-.874 0-1.208.746-1.221.777a.186.186 0 00.169.26c.07 0 .138-.041.168-.112.004-.007.233-.52.824-.553v.954a.668.668 0 01-.294.49c-.179.125-.418.189-.712.189-.35 0-.638-.122-.85-.361-.216-.24-.324-.58-.324-1.02l.003-1.052c.017-.388.122-.695.32-.914.217-.24.5-.361.851-.361.294 0 .533.064.712.189.179.125.28.297.297.52v.023a.233.233 0 00.466 0v-.024a1.076 1.076 0 00-.46-.796c-.273-.2-.613-.297-1.025-.297zm7.706 1.542c.06 0 .125.007.189.017.455.074.968.381.978.567v.01c-.006.189-.523.496-.978.57-.064.01-.128.017-.189.017a.592.592 0 01-.59-.59.592.592 0 01.59-.591zm-15.361.003a.59.59 0 01.59.59.591.591 0 01-.59.591c-.078 0-.166-.01-.257-.03-.428-.091-.971-.361-.978-.557v-.01c.007-.196.55-.466.978-.553.095-.02.182-.03.257-.03zm.981.807l.173.01a6.49 6.49 0 002.405 4.852 7.728 7.728 0 00-1.613-.193 7.5 7.5 0 01-1.744-3.903c.388-.081.695-.382.78-.766zm13.402 0c.08.36.354.65.711.749a7.492 7.492 0 01-1.747 3.92c-.462 0-.999.054-1.606.186a6.486 6.486 0 002.399-4.845zm-12.798.276l5.598 5.598a6.089 6.089 0 01-5.598-5.598zm12.123 0a6.085 6.085 0 01-3.533 5.065c-.135.054-.23.097-.276.118-.56.222-1.16.367-1.788.415zM3.137 12.6c.3.196.702.324.999.371a7.892 7.892 0 001.643 3.92 4.867 4.867 0 00-1.006.196A8.538 8.538 0 013.137 12.6zm17.723.023a8.481 8.481 0 01-.948 3.354c-.202.388-.435.76-.692 1.117a4.765 4.765 0 00-1.002-.2 7.944 7.944 0 001.643-3.913c.29-.034.692-.158 1-.358zm1.407.878a.21.21 0 00-.21.209.21.21 0 00.21.21.21.21 0 00.21-.21.21.21 0 00-.21-.21zm-20.55.01a.21.21 0 00-.206.209.21.21 0 00.209.21.21.21 0 00.21-.21.21.21 0 00-.21-.21.21.21 0 00-.004 0zm20.236.61a.21.21 0 00-.209.21c0 .114.095.209.21.209h.333a.21.21 0 00.21-.21.21.21 0 00-.21-.208zM1.7 14.129a.21.21 0 00-.21.21c0 .114.095.209.21.209h.334a.21.21 0 00.209-.21.21.21 0 00-.21-.209zm20.074.59a.21.21 0 00-.209.21c0 .115.095.209.21.209h.512a.21.21 0 00.21-.21.21.21 0 00-.21-.208zM1.7 14.723a.21.21 0 00-.21.21c0 .117.095.208.21.208h.513a.21.21 0 00.209-.209.21.21 0 00-.21-.209zm19.835.59a.21.21 0 00-.21.21c0 .114.095.209.21.209h.752a.21.21 0 00.21-.21.21.21 0 00-.21-.209zM1.7 15.32a.21.21 0 00-.21.21c0 .114.095.209.21.209h.752a.21.21 0 00.21-.21.21.21 0 00-.21-.209zm19.538.59a.21.21 0 00-.21.21c0 .114.095.209.21.209h1.05a.21.21 0 00.209-.21.21.21 0 00-.21-.208zM1.7 15.917a.21.21 0 00-.21.21c0 .114.095.209.21.209h1.05a.21.21 0 00.208-.21.21.21 0 00-.209-.209zm19.238.587a.21.21 0 00-.21.21c0 .114.095.209.21.209h1.35c.114 0 .209-.091.209-.21a.21.21 0 00-.21-.209zM1.7 16.51a.21.21 0 00-.21.21c0 .117.095.208.21.208h1.35a.21.21 0 00.209-.209.21.21 0 00-.21-.209zm18.877.584a.21.21 0 00-.21.209c0 .115.095.21.21.21h.52a.21.21 0 00.209-.21.21.21 0 00-.21-.21zm-17.686.01a.21.21 0 00-.21.21c0 .114.095.208.21.208h.52a.21.21 0 00.209-.209.21.21 0 00-.21-.209zm14.891.177c.386.005.78.05 1.162.157a8.757 8.757 0 01-.554.62c-.283-.077-1.005-.225-1.98-.12-1.06.114-2.618.566-4.21 2.037v-.368a.21.21 0 00-.21-.209.21.21 0 00-.209.21v.347c-1.582-1.454-3.134-1.903-4.187-2.018-.999-.108-1.73.054-1.997.128a9.934 9.934 0 01-.523-.587c-.01-.013-.02-.023-.03-.037 1.015-.28 2.125-.131 2.904.054.942.226 1.63.554 1.637.557l.003-.007a6.5 6.5 0 004.808.004l.02-.01c.088-.038.179-.075.263-.115.287-.118.77-.294 1.35-.432a7.204 7.204 0 011.753-.211zm2.322.407a.21.21 0 00-.209.209c0 .115.095.209.21.209h1.288c.115 0 .21-.091.21-.21a.21.21 0 00-.21-.208zm-17.51.01a.21.21 0 00-.21.209c0 .115.095.21.21.21h1.289a.21.21 0 00.209-.21.208.208 0 00-.21-.21zm16.974.587a.21.21 0 00-.21.209c0 .115.095.21.21.21h1.009a.21.21 0 00.209-.21.21.21 0 00-.21-.21zm1.855 0a.21.21 0 00-.205.209.21.21 0 00.209.21.21.21 0 00.21-.21.21.21 0 00-.21-.21.21.21 0 00-.004 0zm-18.86.007a.21.21 0 00-.209.209.21.21 0 00.21.209.21.21 0 00.209-.21.21.21 0 00-.21-.208zm.847 0a.21.21 0 00-.209.209c0 .114.095.209.21.209h1.008a.21.21 0 00.21-.21.21.21 0 00-.21-.208zm3.547.033c.192.001.401.012.623.037 1.873.21 3.31 1.28 4.211 2.177v.61a.983.983 0 00-.101.064 6.845 6.845 0 00-.867-.924c-.85-.753-2.281-1.603-4.258-1.367v.004a8.758 8.758 0 01-.604-.51c.232-.046.574-.092.996-.09zm10.096.002c.416-.002.755.042.987.086a7.807 7.807 0 01-.601.506c-1.97-.23-3.394.618-4.244 1.367a6.788 6.788 0 00-.878.94c-.04-.026-.077-.053-.11-.07v-.594c1.595-1.602 3.18-2.081 4.233-2.2.219-.024.424-.034.613-.035zm1.86.555a.21.21 0 00-.209.21c0 .114.095.208.21.208h.573a.21.21 0 00.21-.209.21.21 0 00-.21-.209zm1.171 0a.21.21 0 00-.209.21.21.21 0 00.21.208.21.21 0 00.208-.209.21.21 0 00-.209-.209zm-16.181.007a.21.21 0 00-.206.209.21.21 0 00.21.21.21.21 0 00.208-.21.21.21 0 00-.209-.21.21.21 0 00-.003 0zm.597 0a.21.21 0 00-.21.209c0 .115.095.21.21.21h.574a.21.21 0 00.209-.21.21.21 0 00-.21-.21zm2.71.41c1.225-.008 2.339.424 3.326 1.29.35.307.628.624.837.898-.064.07-.122.148-.172.236a5.338 5.338 0 00-1.259-1.174l.004-.01a.098.098 0 00-.03-.007 5.006 5.006 0 00-2.022-.76 8.77 8.77 0 01-.803-.472l.12-.002zm9.581 0l.118.001a8.91 8.91 0 01-.81.476c-1.443.22-2.432.968-3.066 1.69a4.511 4.511 0 00-.23.28 1.594 1.594 0 00-.168-.24c.209-.272.492-.6.85-.913.98-.863 2.09-1.296 3.306-1.294zm-11.727 1.77a.347.347 0 110 .693.347.347 0 010-.694zm13.856 0a.347.347 0 11.001.693.347.347 0 010-.694zm-6.93.445h.004c.023.013.047.03.077.05a1.16 1.16 0 01.307.294.763.763 0 01.139.32c.037.247-.068.517-.307.81a2.7 2.7 0 01-.213.226l-.003.003-.004.003v-.007c-.007-.007-.017-.013-.024-.023a2.324 2.324 0 01-.178-.193c-.247-.293-.355-.567-.317-.816.003-.02.006-.04.013-.061a.794.794 0 01.138-.283c.051-.068.108-.125.166-.176.05-.044.1-.08.145-.111.02-.014.037-.024.054-.034 0 0 .003 0 .003-.003zm.004 1.703c.003-.003 0-.003 0-.007zm0-1.116h.003zm7.625 0c.117 0 .237.016.354.05.459.135.783.638.87.79.108.189.253.438.466.634h-2.331a3.873 3.873 0 00-.372-.894c.2-.358.595-.577 1.013-.58zm-15.125.038c.381.005.713.19.9.512a3.999 3.999 0 00-.388.924H2.81a2.86 2.86 0 00.418-.59c.088-.152.412-.658.87-.79.136-.04.268-.058.396-.056z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/habr.svg b/assets/lib/simple-icons/icons/habr.svg
index f747803f..d8427b1d 100644
--- a/assets/lib/simple-icons/icons/habr.svg
+++ b/assets/lib/simple-icons/icons/habr.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Habr icon</title><path d="M0 0v24h24V0zm7.025 4h1.633c1.219 0 1.64.029 1.668.113.019.066.028 1.369.028 2.897l-.008 2.783.476-.422c.657-.581 1.212-.787 2.262-.824.694-.019.973.009 1.46.178 1.06.356 1.81 1.087 2.204 2.166.15.421.17.863.197 4.285l.03 3.824h-3.338v-3.121c0-3.075-.01-3.113-.217-3.488-.29-.497-.609-.722-1.106-.778-.853-.093-1.443.197-1.78.89-.16.32-.179.656-.188 3.356-.01 1.65-.03 3.03-.03 3.067-.008.047-.75.074-1.65.074h-1.64v-7.5z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Habr</title><path d="M1.14 9.295l.17.253c-.34-.01-.696-.043-.764-.189 0-.007.002-.014.004-.021.19-.05.353-.053.59-.043zm1.806.77l.082.25-.192.008.046-.256c.022 0 .042-.001.064-.003zM3.6 11.89c-.17.156-.301.26-.402.497-.14-.115-.213-.343-.258-.598-.05-.278-.066-.587-.104-.818l.012-.118.197-.014.502.95.053.1zm-.254-2.342a60.527 60.527 0 01.077-.512l.065-.004c-.048.172-.096.344-.142.516zm-.137-2.322l.9.244a1.975 1.975 0 00-.004.04c-.419.31-.806.446-1.014 1.006L3.17 7.27l.039-.043zm.84-1.29c-.058.58.024.836.125 1.196.16.114.224.183.172.352-.27-.134-.556-.274-.97-.252a2.799 2.799 0 01-.03-.035c.116-.457.342-.738.517-1.1l.187-.162zm1.294-.772l.039-.003c-.124.428-.174 1.415-.391 1.807-.513-.243-.503-1.296.071-1.712l.28-.092zm-.478 3.17l.432.469c-.17.522-.491.915-.627 1.52l-.255-.02c-.218-.609.327-1.601.42-2.045l.4.046c.05.125.098.25.147.376l-.517-.347zM6.047 5.16c-.044.507.068.77.098 1.162-.254.13-.509.258-.763.387a5.262 5.262 0 01.373-1.527l.292-.022zm.296-.77l.057-.004-.086.247-.169.011.13-.153.068-.101zM6.4 6.755l-.764.47c.016-.284.378-.667.681-.773l.07.038.013.265zm.51-1.778c-.047.262-.093.523-.138.785l-.143.09-.076.083c-.138-.194-.173-.67-.143-1.032l.5.074zm.508-.59c0 .01-.002.018-.003.026L7.22 4.6c-.13.05-.146.048-.31.042.021-.085.045-.17.068-.255h.44zm.51-1.032L7.7 3.87l-.79-.057.003-.042c.325-.15.61-.328 1.014-.417zm-.412 1.34l.084-.05.073.258-.255-.05.098-.159zm.666.763c-.303.118-.722.085-.965.22a77.912 77.912 0 00-.053-.31l.158-.207c.257.1.514.202.77.303l.09-.006zm-.651.464l-.346.013c-.008-.036-.014-.072-.021-.109.243-.099.651-.108 1.018-.149l-.387.213-.264.032zm.905 0c-.291.073-.57.33-.761.53-.037-.234.412-.646.627-.775.095.085.105.076.134.245zm.51-3.083l-.004.04-.306.185-.454.033.004-.04.76-.218zm-.412.774l-.098-.145c.23-.193.737-.087 1.019-.058l-.921.203zm2.278-.76c.425.035.814.135 1.11.32L12 3.168l-.047.066-.407.12c-.245-.034-.49-.07-.734-.105L9.2 3.02l.004-.033a5.375 5.375 0 011.608-.133zm1.693-.136l-.09.122a1.23 1.23 0 01-.67-.258l.764.097-.004.039zm1.356.954l.211-.08.219.188c-.03.215-.237.391-.396.6l-.122.008c-.332-.55-.751-1.151-1.486-1.363l-.032-.065.297-.12c.499.174.915.438 1.378.59.06.145.041.096-.07.242zm.614 1.223l-.058-.057-.126.009.21-.2-.026.248zm.225 2.848c.344.298.432.73.289 1.29-.148-.332-.295-.665-.444-.997.05-.074.097-.148.146-.222.003-.024.005-.048.009-.071zm.1-2.32l-.004.048-.181.207-.07-.137c.109-.195.03-.09.173-.11l.082-.008zm.212-.003l.806.299c-.001.027-.004.054-.007.08-.068.047-.136.092-.204.137l-.807-.298.007-.081.205-.137zm1.57 1.033l-.447-.297-.062-.12c.194-.12.166-.114.371-.074.045.164.092.327.138.49zm.254-.098l-.09.098c-.108-.056-.127-.127-.164-.259l.233.102.021.059zm-.19-.739l-.064.005c.07-.067.14-.134.212-.2-.05.065-.1.13-.148.195zm1.209 1.298l-.125.055a230.14 230.14 0 01-.681-.383 98.74 98.74 0 01-.213-.29c.353-.26.366.042.699.207l.32.411zm.254.228l-.254-.093.153-.08.101.173zm-.31.416c.092.185.092.133.31.105L17.718 8l-.373-.712.005-.044c.275-.059.363.04.632.08l.103.166-.285.067zm.056.463l.509-.278c-.102.23-.235.348-.392.516l-.117-.238zm1.018.985c-.138.119-.228.157-.489.179l.21.023-.004.037-.717.304-.018-.92.494-.585.09-.043.434 1.005zm-.255-1.412c1.406-.392 1.134.354.507.923-.17-.307-.339-.615-.507-.923zm1.273.149c-.518 2.434-.618 2.567-2.45 3.613-.03-.049-.063-.097-.096-.145l.065-.272c1.195-.34 1.874-.966 1.803-2.383l.599-.77.079-.043zm.062 0c-.02-.084-.04-.168-.062-.252l.19-.006-.128.258zm-3.117 2.367l.018-.269.016-.23.176-.059c.009 0 .017-.002.025-.003.05.305 0 .53-.1.775-.086-.055-.103-.078-.135-.214zm-1.018 2.258l.004-.045.334-.799.07-.168.588.04c.009.044.015.087.018.128.026.304-.079.547-.187.864l-.827-.02zm.255 1.036l.007-.4.01-.1.43.032.062-.005c-.099.163-.197.326-.294.49l-.215-.017zm-.252-1.67l.026-.013.203-.105.023-.002-.03.107-.119.409-.106-.364.003-.032zm-.397 1.285l-.115-.115c.112.078.039.002.115.115zm-.624-.307c.143-.09.298-.062.51-.06l-.063.207c-.175.07-.2.044-.397.023l-.05-.17zm.312.966l.197.466c-.152.103-.305.205-.457.309-.136-.187.012-.71.26-.775zm-.503-1.62l-.064.005.084-.191-.02.187zm.733.072l-.033-.021.112-.236.037-.001.106.248-.222.01zm1.763-3.355l-.014-.087c.067-.082.11-.133.225-.17l.03.152c-.05.033-.1.065-.149.099l-.092.006zm-.014.63c-.046.061-.128.095-.186.144l-.069-1.29.255 1.146zm-.467 1.73c.168-.094.192-.007.212.22h-.509l.009-.08.288-.14zm-.25-.713l.115-.098.093.166-.043.092-.212-.025.047-.135zm-.047.684l-.265.25-.173-.029-.07.007c.04-.079.082-.158.123-.236l.385.008zm-.96-.147c-.106-.074-.03-.064-.05-.12l.05.12zm.802-1.152l-.86-.446c.04-.59.112-1.268.054-1.876.663.24 1.258 1.319.806 2.322zm-.605 0c.211.112.2.214.493.304.051.191-.027.267-.149.47l-.312-.012c-.064-.34.006-.535-.032-.762zm.058 1.669c-.107-.074-.03-.064-.05-.12l.05.12zm1.723-2.484l.003-.048.23-.169c.04.264.025.704-.035 1.032-.136-.106-.161-.554-.198-.815zm0 .815c.052-.086.104-.172.154-.258l-.09.254-.064.004zm1.485-.771l.043-.003c.012.989-.598 1.169-1.4 1.54l-.128.009.5-1.036.985-.51zM17.32 7.103c.008.026.017.051.024.077l-.063.046-.191-.258.23.135zm-.23.43l.007-.045a3.35 3.35 0 01.056-.004l.192.258c-.148-.07-.172-.088-.255-.21zm.254.66l-.343.323-.737-1.07-.956-.83.21-.164c.463.2 1.273.581 1.436 1.057.053.155-.13.283-.006.412.148.154.296.044.397.271zm-2.148 1.613l.078.031.034.744-.119-.028c-.112-.083-.19-.467-.088-.634l.095-.113zm-.564 1.294l.082-.003.085.202-.13.05-.125.006c.03-.085.06-.17.088-.255zm-.232 4.126l-.11-.377c.157-.045.313-.09.47-.137l.04-.002a.527.527 0 00-.005.035l-.395.48zm-.365-1.032c.047-.152.08-.175.165-.259l.07.028.02.066-.157.154-.098.01zm.12.258l-.12-.132.255-.126-.066.253-.069.005zm-.268 1.17c-.036-.028-.07-.057-.106-.087l.078-.005.393-.304.038.31-.301.206-.102-.12zm.02 2.956c-.613.026-.98-.13-1.48-.174l-.573-1.133-.11-.114c.962-.114 1.567-.578 2.28-.899.252.24.823 1.462.32 2.003-.12.185-.255.204-.438.317zm-2.632-1.273l.23-.015c.347.233.583.65.749 1.033l-1.019-.295c.076-.258.108-.52.04-.723zm-.732-.974L11.691 16l1.804.176.032.091c-.537.242-1.148.446-1.764.758-.667.053-.828-.196-1.29-.36l.071-.334zm-.071 1.216l.023-.224.439-.033c.036.195.074.304.02.516l-.482-.26zm-.51.404l.171-.094c.21-.139.367.046.593.119l-.09.088-.673-.113zm.495-.403a15.96 15.96 0 01-.166-.075l-.074-.183.255.016-.015.242zm-.749 0l.255.219c0 .135-.012.12-.043.297l-.212-.516zm-.66-.967c.239-.073.557-.057.915-.065l-.333.258-.685-.067.103-.126zM8.436 3.648c.473-.452 1.659-.317 1.956-.03l.08-.007c-.395.369-1.007.411-1.383.776-.295-.196-.539-.322-.653-.739zm2.6.739l.2.227c-.178.01-.365.021-.552.037-.421.036-.837.099-1.128.25l-.038.002a51.163 51.163 0 01-.063-.099 3.644 3.644 0 011.544-.414l.037-.003zm.992-1.29c.329.33.82.526.99 1.032-.69-.321-1.752-.316-2.29-.827.474.101.878.063 1.3-.205zm.227 1.806l.944.13.074-.006-.757.65c-.12-.239-.148-.563-.261-.774zm1.213 1.104l-.195-.03.254-.042-.06.072zm-.195-.617l.233-.229.021.258-.169-.037-.085.008zm.462 8.54l-.112.005-.096-.09.074-.097.18-.07-.046.253zm-.203.472c.03-.036.062-.072.094-.108l.008-.1.148.235-.255.023.005-.05zm-.101.824l-.158-.19.509-.068-.243.25-.108.008zm.096.774l-.509-.061.36-.197.15.258zm-.357-.728l.103.098-.369.094-.395.02.55-.258.111.046zM11.746 4.129c.297.008.611.083.763.258-.205-.02-.574.013-.667-.145l-.096-.113zm.258 1.032c.145.127.196.277.17.516-.224-.077-.166-.322-.17-.516zm.25 1.627l.009-.044c.507-.11.616.066.385.224-.2-.028-.29-.103-.393-.18zm.653 6.631l.111.028a1.49 1.49 0 00-.004.036l-.25.194.104-.255.039-.003zm-.14-6.294l.19-.157.061.258-.254-.056.002-.045zm.76 6.9l-.615.161-.148.007c0-.008.002-.017.004-.025.23-.046.378-.122.514-.233l.216.04.03.05zm-.439-.606l-.07-.143.175-.115.08.043-.1.208-.085.007zm-1.597 1.785l.303-.236.938.08.032.07-.634.366c-.235-.039-.438-.143-.56-.286l-.08.006zm-.471.022l.47.258-.763-.135c.098-.04.195-.082.293-.123zm-.038.527a7.12 7.12 0 00-.003.062l-.145.08-.107.014.004-.062c.111-.147.092-.098.25-.094zM9.782 5.25a6.022 6.022 0 00-.073-.077c.253-.138.652-.204 1.044-.235.323-.027.641-.03.869-.035l.124.774c-.333-.036-.65-.08-.993-.095a5.2 5.2 0 00-.888.032 41.055 41.055 0 00-.083-.364zm.374 10.355l.062.11-.06.231-.703.054c.075-.23.187-.341.308-.516l.393.121zm-.868-.895c-.32-.018-.758-.252-.852-.516l1.019.259-.167.257zm.358-.014l-.191.014.006-.062.212-.196c-.01.081-.018.162-.027.244zm-.7-9.437l.31-.098.199.25-.21.008-.3-.16zm-.004 11.08c-.017.056-.032.113-.048.17-.025.001-.05.004-.074.007a92.65 92.65 0 00-.129-.258l.255.026-.004.055zm.141-1.113l.594.12.032.08-.461.574-.557-.082.392-.692zm4.444-8.088l.115-.169.042-.001.32.08.032.046-.357.132a41.52 41.52 0 00-.152-.088zm.689-.834l-.18-.11c.183.067.078-.009.18.11zm-.058 1.18l-.122-.104.255-.154-.133.258zm-.122 1.806l.396.098c.107.042.104.053.113.16-.17-.065-.454-.11-.509-.258zm.04-.703l.054-.07.161.257-.255-.05.04-.137zm-5.157 8.491l.027.068-.343.131-.167.013.004-.035.117-.183c.162-.075.166-.026.362.006zm-.737-12.95c.222.166.28.37.245 1.033-.146-.187-.235-.584-.245-1.032zm.146-.515L8.31 3.8l-.127.009.146-.196zm-.146.258c-.007.062-.012.124-.02.186l-.235-.043.194-.139.06-.004zm0 14.968l.126-1.314.892-.235-.938 1.501-.08.048zm.063-3.532l.137-.081c.125.148.013.361-.105.516-.098-.092-.109-.15-.083-.359l.05-.076zm-.827-.126l.293-.471.47.276c-.16.252-.323.504-.485.756-.146-.13-.236-.321-.278-.56zm0 2.021l.47-.428.221.02.073.12c-.02.126-.038.251-.056.376l-.708-.088zm-.763-.35l.56-.336.426.067.032.059-.449.39c-.224-.023-.373-.083-.49-.185l-.08.005zm-.075-.499l.205-.095.088.019.036.042-.593.197-.17-.06.434-.103zm-.689-.242l.15-.363c.278-.036.344.101.553.188l.06.092-.311.213-.253.017-.199-.147zm-.51 1.059l.371-.654c.246 0 .276.02.377.15.045.076.006.035-.092.052l-.023.225.386.06c-.076.189-.088.164-.202.284-.38.02-.551-.052-.816-.117zm-.428-.912l.647.195.036.077-.415.502-.603-.198.335-.576zM2.46 15.56l.008-.077.361.278.031.074c-.751.58.398 2.47 1.705 1.245l.562.226c-.216.385-.587.537-.978.755-.935.078-2.244-1.449-1.69-2.501zm.872.264l.014.175c-.07-.053-.14-.104-.208-.157l-.047-.101.24.083zm1.286 1.096l-.465.36c-.916.096-1.287-.538-1.317-1.317l.179-.216.078-.006c.461.363.869.917 1.495 1.1l.03.079zm-.887-3.76c-.083-.06-.088-.09-.13-.192l.174-.662.203-.178.131.192-.378.84zm-.13.223l.401-.949.082-.048c.185.326.453.474.534.917l-.604.631a1.223 1.223 0 01-.414-.55zm.763.79l.51-.497.253.517c-.254-.008-.508-.014-.763-.02zm1.272-5.215c-.241.515-.562.865-.754 1.364-.084-.453.422-1.104.585-1.504l.078-.045.091.185zm0-1.42c.379-.117.633-.331.904-.571l.115.344-.322.43-.697-.202zm1.273.027l-.138.176-.116-.02.002-.028.232-.21.02.082zm-.2-1.112l.04-.002.16.337-.06.179c-.233-.122-.224-.267-.14-.514zm-.048 7.481l.235.169-.241-.106a1.03 1.03 0 01.006-.063zm-.004.259l.252.109a.9.9 0 00-.004.03l-.54.377c-.155-.07-.174-.209-.22-.36l.005-.032.507-.124zm-.753-.517l.242.098-.13.075-.125.014.013-.187zm-.013-5.16c.306.086.209.028.222.257-.14-.082-.15-.121-.222-.258zm0 4.609l.021-.223c.119.083.16.132.234.258a61.01 61.01 0 00-.255-.035zm.51-3.223c-.096.123-.092.09-.255.161l.111-.258.143.097zm0-1.038l-.16.167c-.16-.09-.085-.054-.013-.221l.095-.037.077.091zm-.021-.439l-.234-.168c.18.069.138.027.234.168zm-.489 4.735l.255.203c-.13-.003-.2-.031-.255-.203zm.764-.01l-.104.01-.089-.164-.062-.08.138-.014c.039.083.077.166.117.248zm-.14-4.778L6.4 8.258c.112.078.038.002.114.115zm.015 4.25l-.13-.27.055-.222.032-.002.168.516a37.21 37.21 0 00-.125-.022zm-.667 3.003l.028.034L5.8 16a.697.697 0 01-.418-.516l.481.142zM5.127 16l.255.226c-.163-.072-.173-.069-.255-.226zm.44-2.288l.03.223-.215-.258.185.035zm-.252 1.207l-.188-.467c.223.085.397.34.51.516l-.322-.049zm.2-4.594l.063-.002-.186.258c-.03-.064.007-.125.11-.2l.013-.057zm-.133 2.218l-.051.102-.146-.113a116.8 116.8 0 01-.058-.123l.2-.022.055.156zM3.6 14.71c.51.332 1.377.64 1.527 1.29A4.234 4.234 0 013.6 14.71zm1.323-.25l.204.25-.509-.258.305.008zm1.864.766l-.387-.39.677-.642.087.707-.377.325zm.377.431l.067-.168.09-.005.097.258-.254-.085zm.343-.947l-.089-.258.185.034-.096.224zm-.343-8.69l.002-.023c.084-.02.168-.04.252-.062l-.176.258-.078-.173zm-2.567 5.335l-.233-.516c.299.065.25.278.233.516zm-.623.258c-.218-.151-.357-.452-.374-.774.447.105.422.281.51.689l-.136.085zm-.263-1.347c-.325-.307.148-1.535.356-1.818.11-.139.248-.136.43-.19l.121.031c-.306.542-.512 1.28-.585 2.034l-.322-.057zm-.475 4.186l.155.261-.139.325-.08.085c.114.016.14-.082.31-.221.33.535.834 1.047 1.39 1.338l-.303.534-.92-.592c-.105-.195.04-.419-.129-.538-.153-.108-.35.048-.506.001l-.432-.396c.127-.284.249-.562.5-.707l.154-.09zm-.88-2.846a6.65 6.65 0 01.149-.764l.034-.003.133.767.07.4c.2.558.402 1.115.604 1.671-.484-.264-.783-.875-.74-1.697-.116.265-.02.682.018.916-.297-.252-.335-.753-.269-1.29zm-.442.265a.941.941 0 01-.086-.31 2.031 2.031 0 01.004-.435l.044-.092.197-.195-.111.721-.048.31zm17.722 2.58l-.509-.196.494-.061.015.258zm-13.47 4.2l.133-.07-.154.257.02-.186zM2.327 9.807l-.217-.02c-.27-.089-.523-.404-.546-.754.413.037.553.233.757.472.002.1.005.201.006.302zm-.03-.021c.03-.557-.395-.905-.947-.89.094-.782.774-1.182 1.38-1.445l.117-.009c-.101.982-.024 1.828-.391 2.678-.271.626-1.232.614-1.18 1.58l.007.08c.137 1.284 1.533 1.545 1.726 2.674-2.07 1.053.453 5.478 2.09 2.879.294.042.555.175.92.047.17-.094.203-.17.269-.366l.585.303.03.074c-.536.416-.914.987-1.49 1.377l.055-.158-.15-.027-.083.045-.075.35c.329.336 1.326-.879 1.618-1.117-.165.577-.573.874-.8 1.402l.07.072c.43-.308.957-1.18 1.037-1.843l.644.107c-.807 1.091-2.88 3.491-3.97 4.132.166-.521.43-.919.564-1.347l-.078.006a14.401 14.401 0 00-.07-.072c-.265.522-.702.889-.78 1.593a.688.688 0 00.174.179c1.296-.216 3.46-3.473 4.494-4.363-.28 2.81-1.786 3.248-3.092 4.95 1.187-.592 1.907-2.102 2.922-2.94C7.781 20.91 7.502 23.533 6.8 24l.116-.009c.788-.49.834-2.505 1.097-3.535l.112-1.083 1.125-1.58.082-.045c.126.395.696.824 1.313.709l.443-.186 1.112.416c.146 1.6.09 2.497-.923 3.715 1.035-.529 1.415-2.567 1.07-3.649 2.407.279 2.31-.533 1.854-2.286l.423.007c-.078-.117-.289-.03-.45-.12-.073-.047-.059-.038-.104-.108.572-.645 1.95-.004 1.66 1.067.396-.888-.479-1.678-1.322-1.36.36-.427.796-.778 1.024-1.343l.082-.044 1.98 2.08.117-.009.09-.122c-.63-.746-1.259-1.493-1.887-2.24l.202-.092a.41.41 0 01.349-.121 22.552 22.552 0 01-.1-.05c1.011.101 2.303.944 3.358.672.097-.169.102-.26.043-.425 1.124.028 3.146-.348 3.79-.894-1.73.363-3.678.486-5.266.274l-1.407-.165-.079.006.379-.68c1.16-.022 4.202-.051 4.817-.779l-.136-.182-.53-.076c-.046.068-.053.132-.06.197l.42.045c-.912.23-3.452.715-4.281.432-.087-.106-.023-.474-.019-.739a.968.968 0 00-.006-.142c1.192-.356 2.077-1.158 2.44-2.368.207-.693.07-1.603.518-2.035.286.025.344.146.554.228-.111-.154-.27-.24-.469-.31l-.373.257c-.341.132-.698-.213-1.277.056-.47-.402-.735-1.037-1.37-1.28l-.065-.11.77-.749c-.252.211-.509.46-.766.71l-.516-.231-.03-.075c.588-.416 1.11-.57 1.779-.438.031.062.064.123.096.185-.031.053-.059.068-.086.083l-.225-.06c.097.057.198.075.299.093l.085-.083.013-.116c-.146-.13-.191-.224-.478-.234l.137-.202c-.328.226-.994.286-1.32.482l.754-.594.09-.121-1.395.832c-.298-.02-.615-.16-.776-.327a39.46 39.46 0 00-.077.006l1.656-1.12-.027-.113c-.628.366-1.257.732-1.884 1.099l-.602-.148.056-.541 4.317-3.39.077-.006-.061-.149c-.16-.076-.817.457-1.065.616-.956.613-1.801 1.376-2.741 1.93.388-.493 1.098-.984 1.216-1.702l-.19-.024-.296.252.322-.14c-.208.633-1.15 1.763-1.682 2.121l-.062-.149c.346-.582.687-1.365.527-2.112l-.29-.17-.311.023c.199.079.334.098.48.195.093.724-.263 1.214-.455 1.8l-.082.044c-.128-.237-.12-.351-.383-.394l-.023-.152.18-.244.124-.086c.042.08.044.051.057.188a.388.388 0 00.059-.196l-.147-.066-.389.412c-.325-.217-.683-.445-1.14-.53.259-.537 1.046-1.4.64-2.081-.496-.828-2.189.126-2.809.783a1.231 1.231 0 00-.186.244c.04-.032.104-.082.186-.144.612-.456 2.241-1.548 2.594-.675.37.487-.339 1.424-.532 1.805-.66-.067-1.35-.13-2.06-.116a7.422 7.422 0 00-2.201.354c-.36.119-1.896 1.039-1.955 1.027l-.7-.678-1.464-.735-.008.077-.086.083 1.876 1.588-.286.175c-.772-.585-1.304-.94-2.453-1.239l-.194.015c.671.462 1.347.885 2.022 1.309l.135.182c-.482.203-.686.625-1.093.887-.636-.304-1.225-.58-1.996-.813l-.054.158 1.444.93.078-.006-.249.172c-.115.387-.34.836-.528 1.382-.72.586-1.653.551-1.798 1.745-.23.063-.392.083-.602.237l-.016.155c.132.184 1.301.679 1.58.727l.172-.166zm8.54-8.256l.107.02-.143-.018c-.025 0-.05.002-.074.003.113-.21.445-.262.764-.239l-.022.152-.624.031-.008.05zm.446.277l.3-.098c.13-.216.204-.445.138-.654-.309-.061-.487.014-.776.136a49.67 49.67 0 00-.157.257l-.06.1a.57.57 0 00.06.06c.098.08.216.108.433.09.06.102-.01.057-.117.085l.18.024zm7.403 2.323l-.322.06.198-.014.227.098-.344.63c.177-.209.353-.357.428-.674l-.187-.1zm-1.85 10.065c-.08-.143-.167-.237-.254-.259.077.073.166.159.254.259zm-1.018 3.096l-.254.148.195-.018.06-.13zm1.018-3.096c.259.292.453.852.397 1.29.294-.635-.041-1.031-.397-1.29Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/hackaday.svg b/assets/lib/simple-icons/icons/hackaday.svg
index e1241493..6720559b 100644
--- a/assets/lib/simple-icons/icons/hackaday.svg
+++ b/assets/lib/simple-icons/icons/hackaday.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 24 24"><title>Hackaday icon</title><path d="M0 4.124c0-.204.021-.401.06-.595l1.956 1.734 2.144-2.38L2.246 1.18c.259-.072.53-.114.812-.114a3.062 3.062 0 0 1 3.058 3.037v.021c0 .152-.012.304-.033.45l2.385 2.112a6.716 6.716 0 0 0-2.013 2.54L3.982 7.037a3.038 3.038 0 0 1-.924.145A3.06 3.06 0 0 1 0 4.124zm20.942 12.694c-.306 0-.601.045-.88.129l-2.308-2.044a6.862 6.862 0 0 1-1.819 2.706l1.993 1.765a3.05 3.05 0 0 0-.044.502 3.06 3.06 0 0 0 3.935 2.929l-1.992-1.77 2.14-2.365 1.981 1.76c.034-.181.052-.364.052-.554v-.026a3.057 3.057 0 0 0-3.058-3.032zm-3.397-7.592l2.473-2.189c.292.093.601.145.924.145A3.06 3.06 0 0 0 23.94 3.53l-1.956 1.734-2.144-2.38 1.914-1.703a3.049 3.049 0 0 0-.812-.114 3.062 3.062 0 0 0-3.058 3.037v.021c0 .152.012.304.033.45l-2.385 2.112a6.716 6.716 0 0 1 2.013 2.54zm-11.3 5.677l-2.307 2.044A3.057 3.057 0 0 0 0 19.85v.026c0 .19.018.373.052.554l1.982-1.76 2.14 2.365-1.993 1.77a3.06 3.06 0 0 0 3.935-2.929 3.05 3.05 0 0 0-.044-.502l1.993-1.765a6.862 6.862 0 0 1-1.82-2.706zm8.971 2.657a1.076 1.076 0 1 1-1.961.424h-.192a1.076 1.076 0 1 1-2.127 0h-.15A1.105 1.105 0 0 1 9.7 19.23c-.604 0-1.094-.5-1.094-1.115 0-.21.057-.405.156-.572-1.493-1.142-2.474-3.051-2.474-5.213 0-3.497 2.559-6.332 5.713-6.332s5.713 2.835 5.713 6.332c0 2.173-.991 4.091-2.497 5.231zm-4.194-5.914a1.995 1.995 0 0 0-.559-.66 1.804 1.804 0 0 0-.918-.264 1.45 1.45 0 0 0-.319.036c-.405.05-.747.327-.983.647-.207.257-.368.569-.372.905-.032.278.024.556.075.828.066.322.293.584.55.774.119.095.29.226.44.116.1-.134.016-.33.107-.478a.5.5 0 0 1 .258-.326c.263-.132.527-.262.808-.355.228-.067.416-.219.61-.349.255-.197.424-.558.303-.874zm.996 2.325c-.279-.007-.63 1.237-.574 1.78.175.72.237-.505.574-.506.323.014.275 1.255.53.504.078-.5-.224-1.77-.53-1.778zm4.036-.833c.051-.272.107-.55.075-.828-.004-.336-.165-.648-.372-.905-.236-.32-.578-.596-.983-.647a1.45 1.45 0 0 0-.319-.036c-.32-.001-.644.1-.918.264-.235.171-.42.406-.559.66-.121.316.048.677.303.874.194.13.382.282.61.35.28.092.545.222.808.354a.5.5 0 0 1 .258.326c.091.147.007.344.106.478.151.11.322-.021.44-.116.258-.19.485-.452.551-.774z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Hackaday</title><path d="M0 4.124c0-.204.021-.401.06-.595l1.956 1.734 2.144-2.38L2.246 1.18c.259-.072.53-.114.812-.114a3.062 3.062 0 0 1 3.058 3.037v.021c0 .152-.012.304-.033.45l2.385 2.112a6.716 6.716 0 0 0-2.013 2.54L3.982 7.037a3.038 3.038 0 0 1-.924.145A3.06 3.06 0 0 1 0 4.124zm20.942 12.694c-.306 0-.601.045-.88.129l-2.308-2.044a6.862 6.862 0 0 1-1.819 2.706l1.993 1.765a3.05 3.05 0 0 0-.044.502 3.06 3.06 0 0 0 3.935 2.929l-1.992-1.77 2.14-2.365 1.981 1.76c.034-.181.052-.364.052-.554v-.026a3.057 3.057 0 0 0-3.058-3.032zm-3.397-7.592l2.473-2.189c.292.093.601.145.924.145A3.06 3.06 0 0 0 23.94 3.53l-1.956 1.734-2.144-2.38 1.914-1.703a3.049 3.049 0 0 0-.812-.114 3.062 3.062 0 0 0-3.058 3.037v.021c0 .152.012.304.033.45l-2.385 2.112a6.716 6.716 0 0 1 2.013 2.54zm-11.3 5.677l-2.307 2.044A3.057 3.057 0 0 0 0 19.85v.026c0 .19.018.373.052.554l1.982-1.76 2.14 2.365-1.993 1.77a3.06 3.06 0 0 0 3.935-2.929 3.05 3.05 0 0 0-.044-.502l1.993-1.765a6.862 6.862 0 0 1-1.82-2.706zm8.971 2.657a1.076 1.076 0 1 1-1.961.424h-.192a1.076 1.076 0 1 1-2.127 0h-.15A1.105 1.105 0 0 1 9.7 19.23c-.604 0-1.094-.5-1.094-1.115 0-.21.057-.405.156-.572-1.493-1.142-2.474-3.051-2.474-5.213 0-3.497 2.559-6.332 5.713-6.332s5.713 2.835 5.713 6.332c0 2.173-.991 4.091-2.497 5.231zm-4.194-5.914a1.995 1.995 0 0 0-.559-.66 1.804 1.804 0 0 0-.918-.264 1.45 1.45 0 0 0-.319.036c-.405.05-.747.327-.983.647-.207.257-.368.569-.372.905-.032.278.024.556.075.828.066.322.293.584.55.774.119.095.29.226.44.116.1-.134.016-.33.107-.478a.5.5 0 0 1 .258-.326c.263-.132.527-.262.808-.355.228-.067.416-.219.61-.349.255-.197.424-.558.303-.874zm.996 2.325c-.279-.007-.63 1.237-.574 1.78.175.72.237-.505.574-.506.323.014.275 1.255.53.504.078-.5-.224-1.77-.53-1.778zm4.036-.833c.051-.272.107-.55.075-.828-.004-.336-.165-.648-.372-.905-.236-.32-.578-.596-.983-.647a1.45 1.45 0 0 0-.319-.036c-.32-.001-.644.1-.918.264-.235.171-.42.406-.559.66-.121.316.048.677.303.874.194.13.382.282.61.35.28.092.545.222.808.354a.5.5 0 0 1 .258.326c.091.147.007.344.106.478.151.11.322-.021.44-.116.258-.19.485-.452.551-.774z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/hackclub.svg b/assets/lib/simple-icons/icons/hackclub.svg
new file mode 100644
index 00000000..ef1fbf19
--- /dev/null
+++ b/assets/lib/simple-icons/icons/hackclub.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Hack Club</title><path d="M12 0C2.4 0 0 2.4 0 12s2.4 12 12 12 12-2.4 12-12S21.6 0 12 0zm4.5 19.5094h-3.3094V13.003c0-.975-.1875-1.6218-.8343-1.6218-.7125 0-1.575 1.003-1.575 2.625v5.503H7.5V4.9689l3.2906-.5625v5.428c.7125-.6468 1.7063-.928 2.7188-.928 2.1562 0 2.9906 1.4156 2.9906 3.628z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/hackerearth.svg b/assets/lib/simple-icons/icons/hackerearth.svg
index 2d654f32..52797981 100644
--- a/assets/lib/simple-icons/icons/hackerearth.svg
+++ b/assets/lib/simple-icons/icons/hackerearth.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>HackerEarth icon</title><path d="M20.983.002H9.508v6.494h.11a3.629 3.629 0 0 1 3.557-1.332l-.023-.004c1.966.144 3.91 1.336 4.02 5.158v7.554a.299.299 0 0 1-.287.287h-2.11a.287.287 0 0 1-.287-.287V10.55c0-1.778-.585-3.114-2.341-3.114h-.038a2.606 2.606 0 0 0-2.6 2.78v-.008 7.665a.287.287 0 0 1-.287.287H7.124a.287.287 0 0 1-.287-.287V.004H3.193L3.126.003c-.823 0-1.493.652-1.523 1.468V22.458c.03.857.73 1.541 1.59 1.546h17.792a1.458 1.458 0 0 0 1.413-1.55v.004V1.474A1.38 1.38 0 0 0 21.021.005l-.038.001h.002zm-2.54 20.983H5.555V19.66h12.888z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>HackerEarth</title><path d="M18.447 20.936H5.553V19.66h12.894zM20.973 0H9.511v6.51h.104c.986-1.276 2.206-1.4 3.538-1.306 1.967.117 3.89 1.346 4.017 5.169v7.322c0 .089-.05.177-.138.177h-2.29c-.09 0-.253-.082-.253-.177V10.6c0-1.783-.58-3.115-2.341-3.115-1.282 0-2.637.892-2.637 2.77v7.417c0 .089-.008.072-.102.072h-2.29c-.09 0-.29.022-.29-.072V0H3.178c-.843 0-1.581.673-1.581 1.515v20.996c0 .843.738 1.489 1.58 1.489h17.797c.843 0 1.431-.646 1.431-1.489V1.515c0-.842-.588-1.515-1.43-1.515"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/hackernoon.svg b/assets/lib/simple-icons/icons/hackernoon.svg
new file mode 100644
index 00000000..09f2388f
--- /dev/null
+++ b/assets/lib/simple-icons/icons/hackernoon.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Hacker Noon</title><path d="M5.701 0v6.223H8.85V4.654h1.576v7.842H12V4.654h1.574v1.569h3.15V0zm11.024 6.223v3.136h1.574V6.223zm1.574 3.136v4.705h1.576v-1.568h1.574v-1.568h-1.574V9.359zm0 4.705h-1.574v3.137h1.574zm-1.574 3.137h-3.15v1.569H8.85V17.2H5.7V24h11.024zm-11.024 0v-3.137H4.125v3.137zm-1.576-3.137V9.36H2.551v4.705zm0-4.705h1.576V6.223H4.125Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/hackerone.svg b/assets/lib/simple-icons/icons/hackerone.svg
index e6ce31e1..f5a77378 100644
--- a/assets/lib/simple-icons/icons/hackerone.svg
+++ b/assets/lib/simple-icons/icons/hackerone.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>HackerOne icon</title><path d="M7.207 0c-.4836 0-.8774.1018-1.1823.3002-.3044.2003-.4592.4627-.4592.7798v21.809c0 .2766.1581.5277.4752.7609.315.2335.7031.3501 1.1664.3501.4427 0 .8306-.1166 1.1678-.3501.3352-.231.5058-.4843.5058-.761V1.0815c0-.319-.1623-.5769-.4893-.7813C8.0644.1018 7.6702 0 7.207 0zm9.5234 8.662c-.4836 0-.8717.0981-1.1683.3007l-4.439 2.7822c-.1988.1861-.2841.4687-.2473.855.0342.3826.2108.747.5238 1.0907.3145.346.6662.5626 1.0684.6547.3963.0899.6973.041.8962-.143l1.7551-1.0951v9.7817c0 .2767.1522.5278.4607.761.3007.2335.6873.3501 1.1504.3501.463 0 .863-.1166 1.1983-.3501.3371-.2332.5058-.4843.5058-.761V9.7381c0-.3193-.165-.577-.4898-.7754-.3252-.2026-.7288-.3007-1.2143-.3007z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>HackerOne</title><path d="M7.207 0c-.4836 0-.8774.1018-1.1823.3002-.3044.2003-.4592.4627-.4592.7798v21.809c0 .2766.1581.5277.4752.7609.315.2335.7031.3501 1.1664.3501.4427 0 .8306-.1166 1.1678-.3501.3352-.231.5058-.4843.5058-.761V1.0815c0-.319-.1623-.5769-.4893-.7813C8.0644.1018 7.6702 0 7.207 0zm9.5234 8.662c-.4836 0-.8717.0981-1.1683.3007l-4.439 2.7822c-.1988.1861-.2841.4687-.2473.855.0342.3826.2108.747.5238 1.0907.3145.346.6662.5626 1.0684.6547.3963.0899.6973.041.8962-.143l1.7551-1.0951v9.7817c0 .2767.1522.5278.4607.761.3007.2335.6873.3501 1.1504.3501.463 0 .863-.1166 1.1983-.3501.3371-.2332.5058-.4843.5058-.761V9.7381c0-.3193-.165-.577-.4898-.7754-.3252-.2026-.7288-.3007-1.2143-.3007z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/hackerrank.svg b/assets/lib/simple-icons/icons/hackerrank.svg
index 1ae527dd..8a1174f9 100644
--- a/assets/lib/simple-icons/icons/hackerrank.svg
+++ b/assets/lib/simple-icons/icons/hackerrank.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>HackerRank icon</title><path d="M12 0c1.285 0 9.75 4.886 10.392 6 .645 1.115.645 10.885 0 12S13.287 24 12 24s-9.75-4.885-10.395-6c-.641-1.115-.641-10.885 0-12C2.25 4.886 10.715 0 12 0zm2.295 6.799c-.141 0-.258.115-.258.258v3.875H9.963V6.908h.701c.141 0 .254-.115.254-.258 0-.094-.049-.176-.123-.221L9.223 4.92c-.049-.063-.141-.109-.226-.109-.084 0-.16.045-.207.107L7.11 6.43c-.072.045-.12.126-.12.218 0 .143.113.258.255.258h.704l.008 10.035c0 .145.111.258.254.258h1.492c.142 0 .259-.115.259-.256v-4.004h4.073v4.152h-.699c-.143 0-.256.115-.256.258 0 .092.048.174.119.219l1.579 1.51c.044.061.141.109.225.109.085 0 .159-.045.208-.109l1.679-1.51c.072-.045.12-.127.12-.219 0-.143-.115-.258-.255-.258h-.704l-.007-10.034c0-.145-.114-.26-.255-.26h-1.494v.002z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>HackerRank</title><path d="M0 0v24h24V0zm9.95 8.002h1.805c.061 0 .111.05.111.111v7.767c0 .061-.05.111-.11.111H9.95c-.061 0-.111-.05-.111-.11v-2.87H7.894v2.87c0 .06-.05.11-.11.11H5.976a.11.11 0 01-.11-.11V8.112c0-.06.05-.11.11-.11h1.806c.061 0 .11.05.11.11v2.869H9.84v-2.87c0-.06.05-.11.11-.11zm2.999 0h5.778c.061 0 .111.05.111.11v7.767a.11.11 0 01-.11.112h-5.78a.11.11 0 01-.11-.11V8.111c0-.06.05-.11.11-.11z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/hackhands.svg b/assets/lib/simple-icons/icons/hackhands.svg
deleted file mode 100644
index 4afe1302..00000000
--- a/assets/lib/simple-icons/icons/hackhands.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>HackHands icon</title><path d="M5.3 17.63h6.35c.5 0 .89-.4.89-.9s-.4-.89-.9-.89H5.3c-.5 0-.89.4-.89.89 0 .5.4.9.9.9zM16.58 13.77c0-.5-.4-.9-.9-.9H6.54c-.5 0-.89.4-.89.9s.4.9.9.9h9.15c.5 0 .9-.4.9-.9zM18.44 10.8a.91.91 0 0 0-.89-.88H6.53c-.5 0-.89.39-.89.89s.4.89.9.89h11.01c.5 0 .89-.4.89-.9zM5.64 7.82c0 .5.4.89.9.89h9.5c.49 0 .88-.4.88-.9 0-.49-.4-.88-.89-.88h-9.5c-.5 0-.89.39-.89.89zM7.92 3.96H5.3c-.5 0-.89.4-.89.9s.4.89.9.89h2.64c.5 0 .9-.4.9-.9a.93.93 0 0 0-.93-.89zM22.87 20.8a.93.93 0 0 0-.94-.94H4.7c-.95 0-1.73-.8-1.73-1.74V3.57c0-.95.78-1.73 1.73-1.73h14.55c.95 0 1.74.76 1.74 1.73v11.8c0 .5.42.92.9.92.51 0 .93-.42.93-.92V3.57c0-1.97-1.6-3.57-3.57-3.57H4.7a3.57 3.57 0 0 0-3.57 3.57v14.55c0 1.97 1.6 3.57 3.57 3.57H20.4L22.87 24v-3.2z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/hackster.svg b/assets/lib/simple-icons/icons/hackster.svg
index 69b7e35f..e55874be 100644
--- a/assets/lib/simple-icons/icons/hackster.svg
+++ b/assets/lib/simple-icons/icons/hackster.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Hackster icon</title><path d="M18.425 10.349c.262 0 .48.209.48.479v2.155c0 .32.26.582.58.582h4.26c.295 0 .355.426.068.504l-8.568 2.468c-.248.073-.509-.068-.581-.317-.013-.043-.021-.088-.019-.133v-2.252c-.002-.115-.094-.209-.209-.21H5.042c-.114-.001-.207-.093-.209-.207v-2.53c.001-.353-.28-.643-.634-.65l-3.998-.07c-.235-.01-.278-.34-.052-.408l8.76-2.529c.111-.029.225.037.254.146.004.016.007.033.007.053v2.441c0 .26.217.478.479.478h8.776zM8.788 4.543c.305-.052.375.348.375.348s.025.947 0 1.338c-.027.39-.383.375-.383.375H5.304s-.315-.113-.357-.522c-.053-.408.434-.636.434-.636s3.104-.851 3.405-.903h.002zm5.885-1.104s-.045-.461.471-.66c.512-.191 3.268-.904 3.268-.904s.512-.2.547.471c.035.668 0 6.178 0 6.178s.018.451-.469.486c-.488.035-3.225 0-3.225 0s-.592.053-.592-.417V3.439zm.078 14.332c.025-.391.383-.375.375-.384h3.475s.305.113.357.522c.053.408-.436.635-.436.635s-3.102.851-3.406.902c-.305.062-.365-.339-.365-.339s-.025-.945 0-1.336zm-5.518 2.79s.051.461-.471.66c-.513.19-3.268.903-3.268.903s-.514.201-.547-.47c-.035-.668 0-6.178 0-6.178s-.018-.451.469-.486 3.225 0 3.225 0 .529-.053.592.417c.059.46 0 .79 0 .79v4.364z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Hackster</title><path d="M19.091 13.294c-.057.05-.247.09-.396.132l-4.778 1.306c-.15.041-.273-.052-.273-.208V13.29a.282.282 0 00-.283-.283H8.117a.282.282 0 01-.282-.282V11.29a.283.283 0 00-.283-.283H5.035c-.1 0-.18-.08-.18-.178 0-.058.025-.098.055-.126.056-.052.246-.093.397-.134l4.758-1.3c.15-.042.272.051.272.208v1.247c0 .156.128.283.284.283h5.24c.156 0 .282.126.282.283v1.42c0 .157.127.284.282.284h2.542a.18.18 0 01.18.179.158.158 0 01-.056.12m-2.948 2.288a.39.39 0 01-.272.356l-1.954.534c-.15.042-.273-.052-.273-.208v-.728c0-.157.127-.284.283-.284h1.933c.157 0 .283.127.283.284zm-5.81 1.586a.39.39 0 01-.272.357l-1.953.535c-.15.04-.273-.053-.273-.209v-3.758c0-.157.127-.284.283-.284h1.933c.156 0 .283.127.283.284zM7.836 8.46c0-.156.122-.316.273-.357l1.952-.534c.152-.042.274.052.274.208v.729a.283.283 0 01-.283.283H8.118a.283.283 0 01-.283-.283zm5.809-1.587c0-.157.122-.316.273-.358l1.954-.533c.15-.042.272.052.272.208v3.759a.283.283 0 01-.283.283h-1.933a.283.283 0 01-.283-.283zM12 0C5.384 0 0 5.384 0 12c0 6.617 5.384 12 12 12 6.618 0 12-5.383 12-12 0-6.616-5.382-12-12-12Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/hackthebox.svg b/assets/lib/simple-icons/icons/hackthebox.svg
new file mode 100644
index 00000000..15493927
--- /dev/null
+++ b/assets/lib/simple-icons/icons/hackthebox.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Hack The Box</title><path d="M11.9959.0008a1.1187 1.1187 0 00-.057.002.8993.8993 0 00-.2358.0498.9067.9067 0 00-.1652.079L1.9357 5.675a.889.889 0 00-.4444.7699c0 .006.0004.0128.0006.0192-.0002.007 0 .014 0 .0212V17.556a.889.889 0 00.469.7837l9.5983 5.5416c.018.0102.036.0197.054.0287v.002a.8568.8568 0 00.083.0348c0 .001.01.003.012.004.028.01.056.0177.085.0245.01.001.011.003.016.004.028.006.057.0112.086.0146 0 .0005.01.0009.014.001.03.003.061.005.091.005s.061-.002.091-.005c0-.0005.01-.0009.014-.001a.6831.6831 0 00.086-.0146c.01-.001.011-.002.016-.004a.9404.9404 0 00.085-.0245c0-.001.01-.003.012-.004a.8818.8818 0 00.083-.0347v-.002a1.086 1.086 0 00.054-.0287l9.5986-5.5416a.889.889 0 00.4689-.7837V6.4786c0-.009-.0006-.0172-.0008-.0258h.0003v-.008a.8886.8886 0 00-.3117-.6755c-.01-.008-.019-.0162-.029-.0241 0-.002-.01-.005-.01-.007a.8988.8988 0 00-.1074-.0705L12.4533.1267a.8872.8872 0 00-.4646-.1266zm.01 2.2523c.072 0 .1443.0187.209.056l6.5366 3.774c.2789.161.2789.5633 0 .7243l-6.5367 3.774a.4182.4182 0 01-.4182 0L5.26 6.8074c-.2788-.1609-.2789-.5633 0-.7243l6.5368-3.774a.4193.4193 0 01.209-.056zm-8.0801 6.458a.4145.4145 0 01.215.0565l6.524 3.7666a.417.417 0 01.2086.3612v7.5326c0 .3212-.3477.522-.626.3613l-6.5237-3.7666a.4172.4172 0 01-.2086-.3613V9.1288c0-.2408.1955-.414.4107-.4177zm16.1599 0c.215.004.4107.1768.4107.4177v7.5325c0 .149-.08.2868-.2087.3614l-6.5239 3.7666c-.278.1606-.6258-.0401-.6258-.3614v-7.5325c0-.149.08-.2867.2086-.3613l6.5238-3.7666a.415.415 0 01.2152-.0565z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/handlebarsdotjs.svg b/assets/lib/simple-icons/icons/handlebarsdotjs.svg
new file mode 100644
index 00000000..2c88505f
--- /dev/null
+++ b/assets/lib/simple-icons/icons/handlebarsdotjs.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Handlebars.js</title><path d="M9.1 4.948a3.45 3.45 0 0 0-.398.014C6.32 5.15 5.373 6.375 4.802 6.9c-.572.525-1.656 1.763-2.376 1.545-.721-.217-.924-1.107-.67-1.381s.454-.225.613 0c.097.18.145.383.14.587a1.36 1.36 0 0 0 .438-.665.792.792 0 0 0-.443-1.017c-1.3-.659-2.139.514-2.26.787-.122.273-.336.707-.2 1.695.135.989.612 1.902 2.104 2.261a6.31 6.31 0 0 0 4.238-.495l4.41-1.84a5.408 5.408 0 0 1 .556-.101v9.864c0 .506.316.913.708.913.391 0 .707-.407.707-.913V8.29a5.408 5.408 0 0 1 .437.088l4.41 1.84a6.31 6.31 0 0 0 4.238.494c1.492-.36 1.969-1.272 2.105-2.26.135-.989-.08-1.423-.2-1.696-.122-.273-.962-1.446-2.261-.787a.792.792 0 0 0-.443 1.017c.076.26.229.492.437.665a1.19 1.19 0 0 1 .141-.587c.159-.225.359-.274.613 0s.051 1.164-.67 1.382c-.72.217-1.804-1.02-2.376-1.546-.571-.525-1.518-1.75-3.9-1.938A3.45 3.45 0 0 0 12 6.653a3.45 3.45 0 0 0-2.9-1.705zm12.39 2.703v.004l.006.002c-.002-.002-.004-.004-.006-.004zm-18.98 0c-.002.002-.004.004-.006.004l.006-.001V7.65z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/handshake.svg b/assets/lib/simple-icons/icons/handshake.svg
new file mode 100644
index 00000000..1647e9ed
--- /dev/null
+++ b/assets/lib/simple-icons/icons/handshake.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Handshake</title><path d="M2.284 22.158c.001.95.679 1.752 1.62 1.792 1.31.055 2.623.022 3.935.022.954 0 1.786-.865 1.76-1.954-.029-1.221.018-2.445.029-3.667l.045-4.988c.003-.305.046-.362.335-.44a4.242 4.242 0 0 1 2.013-.067c1.23.262 2.129 1.21 2.261 2.46.066.62.07 1.249.078 1.874.025 1.64.038 3.28.054 4.921.01 1.087.796 1.877 1.883 1.882 1.171.006 2.342.008 3.513.007 1.106-.002 1.895-.778 1.898-1.883.007-3.371.007-6.742.01-10.113 0-.052 0-.105-.005-.156-.03-.355-.169-.658-.483-.838a2.638 2.638 0 0 0-.695-.291 7.484 7.484 0 0 0-2.887-.123c-.743.113-1.476.293-2.213.442-.97.196-1.946.28-2.934.178-1.268-.129-2.37-.666-3.402-1.38a32.36 32.36 0 0 0-1.494-.984c-.62-.38-1.314-.505-2.03-.544-.77-.043-1.536-.063-2.293.111-.59.136-.899.479-.966 1.077a3.438 3.438 0 0 0-.021.379m7.337-6.184a3.675 3.675 0 1 0-7.35-.031 3.675 3.675 0 0 0 7.35.03zm8.335-1.81a3.673 3.673 0 0 0-3.69 3.652 3.672 3.672 0 0 0 3.67 3.697 3.678 3.678 0 0 0 3.68-3.665 3.677 3.677 0 0 0-3.66-3.685Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/handshake_protocol.svg b/assets/lib/simple-icons/icons/handshake_protocol.svg
new file mode 100644
index 00000000..626a5547
--- /dev/null
+++ b/assets/lib/simple-icons/icons/handshake_protocol.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Handshake</title><path d="M20.348 7.829l-1.491-2.65 2.889.001c.077 0 .167.051.21.12l1.533 2.529zm-5.344 16.046c-.07.125-.161.125-.19.125h-2.956l4.591-8.243a.442.442 0 0 0-.384-.657l-7.825.01-1.556-2.694h11.397c.248-.017.362-.158.393-.231l1.879-3.473h3.101zm-3.91-.314l-1.522-2.506c-.023-.037-.034-.128.014-.214l2.694-4.853 3.034-.004zM5.92 18.403l-1.508-2.68 1.52-2.848 1.524 2.64c-.474.891-1.213 2.283-1.536 2.888zm-3.668.417a.268.268 0 0 1-.207-.12L.51 16.17h3.141l1.491 2.65-2.891-.001zM8.996.126C9.066 0 9.156 0 9.186 0h2.968L7.551 8.243c-.11.167-.11.712.58.657l7.63-.01c.527.92 1.002 1.752 1.51 2.642H5.922a.465.465 0 0 0-.397.234l-1.879 3.522h-3.1L8.996.126zm3.917.323l1.515 2.496c.023.037.034.128-.015.214L11.72 8.012l-3.032.004zm5.166 5.145l1.509 2.68-1.538 2.844c-.517-.905-.997-1.745-1.529-2.673.328-.6 1.195-2.189 1.558-2.851Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/happycow.svg b/assets/lib/simple-icons/icons/happycow.svg
index b9dca4e4..8168040d 100644
--- a/assets/lib/simple-icons/icons/happycow.svg
+++ b/assets/lib/simple-icons/icons/happycow.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>HappyCow icon</title><path d="M8.66 1.23c-.424.004-.924.156-1.13.236-1.69.678-2.78 3.09-2.2 5.52-.32-.139-.614-.257-.676-.28a8.46 8.46 0 0 0-1.45-.412c-.849-.156-1.8-.189-2.53.471-.693.63-.963 1.87-.271 2.6.749.783 2.3.637 3.27.548.101-.01.557-.04 1-.106a9.763 9.763 0 0 0-.116 1.59c-3.73 1.32-3.43 10.1 5.09 11.2 10.8 1.39 11.6-6.81 9.07-9.14.091-.518.144-.999.165-1.45.433.202.933.386 1.04.426.903.353 2.34.917 3.29.462.874-.42.985-1.56.51-2.29-.497-.768-1.42-1.01-2.27-1.12a9.355 9.355 0 0 0-1.51-.061c-.05.002-.252.012-.497.03 1.33-1.83 1.4-4.19.319-5.48-.25-.298-1.22-1.23-1.65-.743-.279.392.226 1.16.186 1.74-.092.901-.855 1.62-1.36 2.01-.717-.57-1.36-.745-1.36-.745l-.322-.062c-.644-.5-1.53-.563-1.53-.563.363-.44 1.56-.1 1.56-.1-1.06-1.06-2.31-.328-2.31-.328 0-.517-.381-.831-.381-.831-.398.306-.415.714-.415.714-1.01-1.06-2.12-.794-2.12-.794s.98.31 1.17 1.08a2.638 2.638 0 0 0-.533-.049l-.346-.066a6.87 6.87 0 0 0-1.81.062c-.245-.593-.51-1.5-.191-2.28.237-.527 1.04-.966.983-1.44-.063-.277-.346-.363-.676-.359zm2.03 3.21c.612.065 1.19.512 1.6.993.004-.298.045-.625.269-.843.227.189.265.57.25.867.528-.343 1.23-.48 1.82-.203-.465-.063-.989.058-1.24.498.768.044 1.63.26 2.1.92-.692-.385-1.64-.876-2.42-.365.541.139 1.13.49 1.17 1.11a2.764 2.764 0 0 0-1.9-1.12c-.69.027-1.42.342-1.84.904-.106.174-.188.353-.174.01-.044-.673.737-.908 1.26-.997-.612-.3-1.31-.514-1.99-.375.511-.414 1.22-.43 1.83-.28a1.627 1.627 0 0 0-.728-1.12zM2.26 6.92a2.81 2.81 0 0 1 .526.054c.284.05.876.21 1.13.497.25.287.974 1.36-.751 1.62-.563.06-1.46.159-1.89-.298-.394-.422-.229-1.16.175-1.54.265-.248.529-.328.81-.333zm5.77 1a1.35 1.35 0 0 1 .264.02c2.65.432 1.14 4.81 1.14 4.81l-.294-.203c.204-.483.428-1.25.416-2.01-.017-1.07-.63-1.94-1.37-1.92-.74.01-1.33.892-1.31 1.97.004.279.046.785.121 1.05-.005-.015-.005-.133-.01-.15l-.678-.213s.013-3.32 1.72-3.35zm7.61 1.21c.156.001.322.022.498.063 1.94.46.663 3.57.663 3.57l-.607.1v.003c-.655.103-1.39.213-2.13.35-.023-.028.019.03 0 0l-.865.143s.105-4.25 2.44-4.23zm-1.58 4.15l2.21-.315c.117-.167.182-.442.225-.665.203-1.05.158-2.03-.53-2.3a.953.953 0 0 0-.334-.066c-.617-.012-1.29.54-1.63 1.38-.205.518-.391 1.63-.258 2 .05.14.511.119.418.016zM8.27 9.57a.409.409 0 1 1 0 .818.409.409 0 0 1 0-.818zm13.1.55c.167.002.32.015.427.03.492.066.904.159 1.19.617.274.437.213 1.11-.289 1.36-.543.269-1.37-.07-1.89-.281-1.57-.71-.56-1.42-.237-1.59.202-.11.517-.137.795-.134zm-5.92.645a.409.409 0 1 1 .026.818.409.409 0 0 1-.026-.818zm-9.85.741c1.45-.014 2.64.949 3.88 1.56 1.7.91 3.72.797 5.53.348 1.1-.334 2.49-.539 3.43.234 1.26 1.25 1.41 3.21.84 4.79-.697 2.04-2.7 3.33-4.74 3.75-2.55.45-5.29.36-7.7-.663-2.75-1.06-4.7-4.09-4.21-7.06.146-1.47 1.41-2.92 2.96-2.97zm1.77 1.75a.625.625 0 0 0-.164.025c-.418.125-.507.674-.198 1.23.309.552.898.9 1.32.773.418-.125.507-.674.198-1.23-.27-.484-.755-.809-1.15-.799zm-2.55.945a1.014 1.014 0 0 0-.614.174c-.535.384-.549 1.42.074 2.29.623.868 1.65 1.24 2.18.857.535-.384.534-1.54-.088-2.41-.428-.597-1.04-.903-1.55-.911zm10.7.172a1.357 1.357 0 0 0-.608.144c-.571.272-.956.837-.858 1.26.098.425.64.549 1.21.278.572-.272.955-.837.858-1.26-.061-.266-.296-.414-.603-.421zm-10.8.14c.633-.02 1.18.411 1.5.931.3.534.566 1.41-.004 1.85-.878.205-1.66-.574-1.96-1.33-.244-.474-.208-1.41.47-1.45zm12.9 1.48a1.294 1.294 0 0 0-.104 0c-.47.022-1.03.29-1.51.764-.756.755-.991 1.75-.525 2.21.465.466 1.46.23 2.21-.524.756-.756.991-1.75.525-2.21a.867.867 0 0 0-.601-.238zm.014.309c.174.01.35.091.44.243.233.785-.355 1.58-.985 1.99-.423.305-1.21.618-1.51.012-.09-1.11.915-2.12 1.98-2.25a.602.602 0 0 1 .074 0zm-10.3 1.45a.124.124 0 0 0-.103.062c-.01.014-.19.312-.548.309a.125.125 0 0 0-.128.129c.001.065.053.12.116.129l.018.001a.85.85 0 0 0 .316-.057c.216.431 1.1 1.9 3.28 2.25 2.21.353 3.87-.74 4.3-1.05a.88.88 0 0 0 .339.157l.017.003a.129.129 0 0 0 .138-.1.132.132 0 0 0-.102-.155c-.35-.078-.474-.411-.48-.427a.135.135 0 0 0-.166-.083.126.126 0 0 0-.081.163c.003.01.045.126.146.256-.436.3-2.02 1.26-4.09.968-1.93-.272-2.83-1.69-3.06-2.11.138-.111.209-.23.215-.238a.13.13 0 0 0-.05-.178.135.135 0 0 0-.075-.018z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>HappyCow</title><path d="M8.6946 1.2292a.931.931 0 0 0-.029.0006 3.4494 3.4494 0 0 0-1.1187.2308c-.8395.3397-1.563 1.1383-1.9712 2.1918a5.638 5.638 0 0 0-.1226 3.6034c.1814-.2945.3958-.5765.6498-.8325.3935-.3964.8505-.7006 1.3677-.9165-.1726-.8106-.4935-3.0758 1.1872-3.648 0 0-1.3698.9094-.606 3.4504a5.1974 5.1974 0 0 1 .3929-.0911c-.3527-.9004-.4079-1.6602-.1586-2.264a2.4787 2.4787 0 0 1 .5042-.641c.2636-.2702.5118-.5262.4776-.7799a.331.331 0 0 0-.181-.2206.931.931 0 0 0-.3923-.0834zm9.7635 1.9014a.3464.3464 0 0 0-.255.1191c-.1389.1964-.0409.5329.0617.8881a2.5008 2.5008 0 0 1 .1457.815c-.0942.8995-.8157 1.6027-1.3324 2.0141.102.0844.2052.1766.3083.2777 2.0197-1.9376 1.1994-3.4313 1.1994-3.4313 1.3398 1.4344-.4167 3.5091-.7752 3.9042.5643.718.8876 1.5399 1.0493 2.383a5.6182 5.6182 0 0 0 1.6068-3.2458c.1368-1.1208-.1202-2.1622-.706-2.8582-.236-.2813-.8605-.8626-1.2863-.866a.3464.3464 0 0 0-.0163 0zm-8.1467 1.1462c.3144.1489.8394.4732.9783 1.0292l.0244.0982-.0993-.019c-1.081-.2051-1.6887.3068-1.9458.6124a2.0099 2.0099 0 0 1 .7776-.1467 2.857 2.857 0 0 1 1.112.2383l.1643.077-.1764.0443c-.427.1103-.705.3034-.8263.5858-.1423.331-.0408.7103.0453.932.2824-1.1682 1.8752-1.3743 1.8972-1.3765h.0156a2.7115 2.7115 0 0 1 2.1036 1.3711c.0287-.3552-.0242-1.0856-.8825-1.4l-.1467-.0594.1433-.0651c.6486-.2956 1.8478.4126 2.2747.6884-.4247-1.1208-2.0153-1.2434-2.0319-1.2445l-.1258-.0088.0806-.097c.2835-.343 1.0038-.2536 1.3888-.1753-.973-.7722-2.0506-.1644-2.0628-.1577l-.0971.0562v-.1103a1.0899 1.0899 0 0 0-.321-.7468.9718.9718 0 0 0-.353.6354l-.0067.151-.1047-.1103c-.695-.728-1.4485-.8119-1.8257-.802zm-.6225.9633c-1.463-.0086-2.6392.4217-3.4944 1.2836-1.4268 1.4398-1.6029 3.7256-1.6027 4.7753a2.828 2.828 0 0 1 .3386-.087c.6472-.1217 1.1947-.0872 1.6985.042.0232-.6248.2125-3.2638 1.7999-3.1928.058.0026.1177.009.1794.0192 2.519.4057 1.3093 4.2599 1.1622 4.7016.4608.209.965.389 1.5493.506.6285.125 1.2128.1391 1.7605.0955.0267-.5659.278-4.1197 2.4481-4.1024.157.0012.324.0215.5016.0633 1.6989.408.958 2.7914.7347 3.411.4124-.013.821.0335 1.2343.183.2592.0926.4983.232.7153.4085.2933-1.7684.2803-4.0385-1.1145-5.6869a4.493 4.493 0 0 0-2.0089-1.3834l-.0902-.0172c.2026.2001.3674.4519.4487.773l.042.1676-.1424-.0993c-.0143-.0099-1.3732-.9553-2.1366-.8273 1.0402.504.7667 1.668.7633 1.68l-.0463.2009-.0728-.1942a2.5581 2.5581 0 0 0-2.087-1.476 3.1637 3.1637 0 0 0-.867.2648c-.5781.278-.8958.685-.9455 1.2067l-.0187.2008-.1015-.1788c-.0154-.0276-.3762-.674-.1368-1.2333.1191-.2768.364-.481.729-.6067-.3474-.1191-1.1548-.3199-1.8332.0927l-.1987.1215.1104-.2064a1.8036 1.8036 0 0 1 .5162-.5593 2.0228 2.0228 0 0 1 .7237-.3213 7.941 7.941 0 0 0-.5585-.0248zm-7.4413.9891v.0011c-.5383 0-1.113.1236-1.5829.5516a2.096 2.096 0 0 0-.6619 1.434A1.4605 1.4605 0 0 0 .389 9.2992c.7215.759 2.2063.6266 3.1892.5395h.0506l.086-.0078c.3599-.0293.6392-.061.8687-.0935.112-.6948.3348-1.5469.7814-2.3303a5.7726 5.7726 0 0 1-.1148-.4066c-.2422-.106-.4808-.2062-.6384-.266a9.6523 9.6523 0 0 0-1.4539-.4082 4.9188 4.9188 0 0 0-.91-.0971zm.1463.6757c.1684-.002.3423.0235.5255.0558.2868.0474.8825.2106 1.1296.4974.2471.2869.9852 1.359-.7467 1.6271-.5648.0574-1.464.1623-1.8954-.2966-.3927-.4214-.2294-1.1672.1722-1.55.2689-.251.5343-.3304.8148-.3337zm6.127 1.8604c-.749.0232-1.3424.9045-1.3237 1.9856a2.722 2.722 0 0 0 .1157.7407c.4005.173.7882.3932 1.196.625.2097.1196.422.24.641.357.4504-.3247.7624-.9968.7489-1.7757C9.88 9.6169 9.27 8.7421 8.521 8.7653zm11.9064.7157a8.6915 8.6915 0 0 0-.434.0102h-.0516a30.9709 30.9709 0 0 0-.4109.0252 5.7517 5.7517 0 0 1-.6438.7368c.097.575.122 1.1572.1 1.7208.225.1047.5127.2286.9226.3863l.0872.0343c.8748.3409 2.3297.9078 3.2497.471a1.294 1.294 0 0 0 .6929-.8351 1.7462 1.7462 0 0 0-.2032-1.379c-.4986-.7721-1.4592-.9927-2.2413-1.103a8.6915 8.6915 0 0 0-1.0676-.0675zm-11.8376.232a.4115.4115 0 0 1 .0041 0 .4148.4148 0 0 1 .4115.4115.4115.4115 0 1 1-.4156-.4115zm6.8613.2204c-.6017.0266-1.2382.5722-1.5644 1.3914-.293.7359-.2376 1.4806.0808 1.9386.3548-.0642.6957-.1407 1.0212-.2146.3923-.089.7719-.1766 1.1452-.2331a2.7766 2.7766 0 0 0 .2602-.4981c.4016-1.0083.162-2.0386-.5362-2.3166a.9754.9754 0 0 0-.4068-.0676zm5.6444.1842c.167.0013.3206.0144.4281.0288.4975.0706.909.1634 1.1958.6223.278.4401.2207 1.1197-.2868 1.369-.546.2647-1.3691-.0761-1.8953-.2868-1.5786-.7082-.5624-1.4165-.238-1.5941.2026-.111.518-.1414.7962-.1392zm-5.7558.6431a.4093.4093 0 0 1 .4036.4018.4115.4115 0 1 1-.4215-.4016.4093.4093 0 0 1 .018-.0002zm-9.6234.5035c-.2406-.001-.4944.0215-.766.0726-1.6248.3089-2.7136 2.0551-2.6474 4.247a6.8095 6.8095 0 0 0 1.7848 4.3584c1.3083 1.4429 3.2333 2.365 5.5675 2.6673v.0011c8.1046 1.0414 9.789-3.2795 10.1134-4.633.5118-2.1335-.32-4.387-1.817-4.922-.9564-.3432-1.8753-.1302-2.9387.1169-1.0634.2471-2.2769.5284-3.723.2404-1.1804-.236-2.067-.7412-2.8492-1.1858-.89-.5073-1.682-.958-2.7244-.9629zm1.6614 2.0098c.3983-.01.88.3147 1.1589.7973.3066.5516.2206 1.11-.2008 1.2346-.4214.1246-1.0149-.2206-1.3238-.7722-.3088-.5516-.2206-1.1099.2008-1.2345a.6354.6354 0 0 1 .1649-.0252zm-2.563.9443c.5186.0072 1.132.3163 1.5598.9154.6222.8715.6232 2.0385.086 2.4213-.5372.3828-1.5697.009-2.1918-.8614-.6222-.8703-.6212-1.904-.0763-2.2967.1703-.1227.3865-.1819.6222-.1786zm10.7383.173c.3082.0067.5432.1574.6018.427.0937.4313-.2869.9927-.8616 1.273-.5748.2779-1.1197.1533-1.2135-.278-.0937-.4313.287-.993.8616-1.2731.2156-.1051.4268-.153.6117-.149zm2.083 1.6323c.2403.0082.451.0856.6048.2387.4688.4666.2392 1.4637-.5264 2.2204-.7556.7557-1.7516.9928-2.2204.5262-.4689-.4666-.2295-1.4637.5261-2.2205.4723-.473 1.0385-.7424 1.5112-.7642a1.331 1.331 0 0 1 .1047-.0006zM7.3172 17.7818a.128.128 0 0 1 .0015 0 .128.128 0 0 1 .0662.0202.139.139 0 0 1 .0474.182.9255.9255 0 0 1-.2161.2429 4.1918 4.1918 0 0 0 3.0807 2.1222c2.0797.291 3.6596-.662 4.1025-.9659a.9928.9928 0 0 1-.1487-.2596.1191.1191 0 0 1 .086-.1622.149.149 0 0 1 .1721.0862.7181.7181 0 0 0 .4788.43.1445.1445 0 0 1 .1103.1534.1478.1478 0 0 1-.149.096H14.93a.9928.9928 0 0 1-.3378-.1591c-.4375.3218-2.1112 1.4116-4.315 1.0593-2.1977-.3512-3.0876-1.8351-3.3019-2.2633a.9255.9255 0 0 1-.3152.0614h-.0188l-.0045-.0043a.1269.1269 0 0 1-.1103-.1336.118.118 0 0 1 .1248-.1312.6453.6453 0 0 0 .5515-.3068.128.128 0 0 1 .1144-.0676z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/harbor.svg b/assets/lib/simple-icons/icons/harbor.svg
index 875a818e..928349b4 100644
--- a/assets/lib/simple-icons/icons/harbor.svg
+++ b/assets/lib/simple-icons/icons/harbor.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Harbor icon</title><path d="M12.0573.0022C7.455-.0207 3.2453 2.5912 1.2218 6.7248-.8016 10.8584-.282 15.7852 2.5591 19.4059c2.841 3.6208 7.5027 5.2974 11.999 4.3153 4.4963-.982 8.0346-4.4498 9.1071-8.9254.0062-.0249.0133-.0494.0192-.0746.209-.8929.315-1.8069.3156-2.724 0-.0317-.0022-.063-.0024-.0948-.0012-.1373-.0095-.2726-.0152-.4088-.019-.2669.0399.2645 0 0 .0399.2645-.019-.2669 0 0v-.0003a11.9318 11.9318 0 00-.2045-1.7663c-.0334-.173-.0672-.3458-.1078-.5164a11.9097 11.9097 0 00-.9547-2.6018c-.0077-.0151-.0141-.0311-.0219-.046a12.0382 12.0382 0 00-1.2805-1.99c-.0694-.088-.1363-.178-.208-.2638a12.1001 12.1001 0 00-2.0533-1.9417 12.4056 12.4056 0 00-.3305-.2362 11.9978 11.9978 0 00-6.7639-2.129zm.2143 2.2105a9.7818 9.7818 0 014.9926 1.5378l-5.683 5.9103 7.8255-4.05a9.8492 9.8492 0 011.1544 1.6475c.0066.012.0123.0244.0189.0365l-8.8448 2.8423 9.7994-.3337a9.7295 9.7295 0 01.2246 1.5305l-10.178-.7304 9.985 3.4641c-.98 4.5004-4.9603 7.7119-9.5662 7.7182-.0895 0-.178-.0043-.267-.0067l-.1026-1.2554-4.7386-2.0882-.1597 1.8055c.1982.1234-.2066-.1087 0 0-.2066-.1087.1982.1234 0 0a9.787 9.787 0 01-4.5209-8.2437c-.0038-5.5141 4.5485-9.9416 10.0604-9.7846zM9.1434 5.9054a.201.201 0 00-.1943.2v.1467L6.82 8.3357v.6525h.3834v2.27H6.82v1.1125h.6088l-.1408 1.5896 3.948 1.7396-.2724-3.3292h.5167v-1.1125h-.3832v-2.27h.3832v-.6525L9.3509 6.252v-.1467a.201.201 0 00-.2075-.2zM7.8197 8.9882h2.6607v2.27h-.6312v-.9695c0-.932-1.398-.932-1.398 0v.9695h-.6315zm-.581 5.528l-.0665.7506 4.1788 1.8414-.0662-.8092zm-.1156 1.3064l-.0662.7506 4.4092 1.9431-.0662-.809zm-.1154 1.3065l-.0665.7503 4.64 2.045-.066-.8088Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Harbor</title><path d="M11.591.007C4.968.233-.218 5.785.007 12.409c.226 6.624 5.778 11.81 12.402 11.584 6.624-.232 11.809-5.786 11.584-12.411C23.762 4.963 18.211-.219 11.591.007zm.821 21.902a9.894 9.894 0 0 1-.845-.01l-.043-1.479-4.699-1.824-.096 1.776a9.886 9.886 0 0 1-4.589-7.974C1.93 6.935 6.189 2.336 11.652 2.126h.014a9.857 9.857 0 0 1 5.498 1.431l-5.17 5.673 7.52-3.686a9.906 9.906 0 0 1 1.228 1.79l-8.461 2.787 9.393-.323c.13.567.212 1.151.241 1.752l-9.314-.613 9.086 3.218c-.948 4.291-4.68 7.577-9.275 7.754zM6.686 9.038h.288v2.539H6.74v.88h.408l-.067 1.323 4.197 1.509-.127-2.832h.415v-.88h-.235V9.038h.283L9.188 6.217 6.686 9.038zm3.835 2.539h-.912V9.966h-.912v1.611h-.912V9.038h2.736v2.539zm.8 4.533l.032.725-4.352-1.563.048-.816 4.272 1.654zm-4.347-.33l4.411 1.712.032.72-4.485-1.611.042-.821zm4.48 3.088l.032.715-4.624-1.653.048-.821 4.544 1.759z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/hashnode.svg b/assets/lib/simple-icons/icons/hashnode.svg
index 9e42ea54..c991f6b3 100644
--- a/assets/lib/simple-icons/icons/hashnode.svg
+++ b/assets/lib/simple-icons/icons/hashnode.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 24 24"><title>Hashnode icon</title><path d="M3.84 0h16.32A3.84 3.84 0 0 1 24 3.84v16.32A3.84 3.84 0 0 1 20.16 24H3.84A3.84 3.84 0 0 1 0 20.16V3.84A3.84 3.84 0 0 1 3.84 0zm14.175 21.638l-.004-.001a2.577 2.577 0 0 0 .209-5.139l-4.917-8.682c-.719-1.292-2.108-1.236-2.609.598-.43 1.736-.319 3.372-.444 5.348-.001.013-.01.024-.023.027s-.026-.002-.033-.013l-4.39-8.751c.358-.281.568-.711.569-1.167a1.459 1.459 0 1 0-1.459 1.459c.069 0 .125-.014.18-.014 1.848 4.75 3.904 10.293 4.64 11.571.5 1.222 2.209.833 2.251-.486l.18-6.932c0-.042.055-.042.07-.014l3.526 8.389a2.573 2.573 0 0 0 2.254 3.806z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Hashnode</title><path d="M22.351 8.019l-6.37-6.37a5.63 5.63 0 0 0-7.962 0l-6.37 6.37a5.63 5.63 0 0 0 0 7.962l6.37 6.37a5.63 5.63 0 0 0 7.962 0l6.37-6.37a5.63 5.63 0 0 0 0-7.962zM12 15.953a3.953 3.953 0 1 1 0-7.906 3.953 3.953 0 0 1 0 7.906z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/haskell.svg b/assets/lib/simple-icons/icons/haskell.svg
index c35c010d..f6b379cc 100644
--- a/assets/lib/simple-icons/icons/haskell.svg
+++ b/assets/lib/simple-icons/icons/haskell.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" role="img"><title>Haskell icon</title><path d="M.006 20.47L5.649 12 .006 3.531h4.235l5.674 8.47-5.674 8.468zm5.643 0L11.29 12 5.65 3.531h4.266l11.253 16.938h-4.224l-3.535-5.34-3.495 5.34zM19.3 15.525l-1.877-2.827h6.571v2.826zm-2.826-4.235l-1.877-2.827h9.387v2.827z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Haskell</title><path d="M0 3.535L5.647 12 0 20.465h4.235L9.883 12 4.235 3.535zm5.647 0L11.294 12l-5.647 8.465h4.235l3.53-5.29 3.53 5.29h4.234L9.883 3.535zm8.941 4.938l1.883 2.822H24V8.473zm2.824 4.232l1.882 2.822H24v-2.822z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/hasura.svg b/assets/lib/simple-icons/icons/hasura.svg
new file mode 100644
index 00000000..feb480c0
--- /dev/null
+++ b/assets/lib/simple-icons/icons/hasura.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Hasura</title><path d="M2.1216.0014c-.1221-.01-.2481.0345-.3354.1382C.448 1.7248.0338 6.021.7236 8.1721c.228.714.293 1.4694.1567 2.2072-.1332.7289-.2692 1.6118-.2692 2.2221C.6111 18.8946 5.712 24 12.0001 24c6.2909 0 11.3889-5.1024 11.3889-11.3986 0-.6133-.1334-1.4932-.2696-2.2221-.1362-.7378-.071-1.4931.157-2.2072.6899-2.151.2753-6.4473-1.0628-8.0325-.1746-.2074-.5033-.1777-.6483.0504l-1.6491 2.5895a1.2678 1.2678 0 0 1-1.6934.2757C16.4348 1.885 14.2973 1.2034 12 1.2034c-2.2973 0-4.435.6815-6.223 1.8518-.5507.3615-1.2849.2399-1.6934-.2757L2.4345.19a.4092.4092 0 0 0-.3129-.1886zM12 3.8046c1.347 0 2.626.3053 3.7716.8505 2.848 1.351 4.8582 4.1864 5.0358 7.499.009.157.0117.3143.0117.4743-.0029 4.865-3.958 8.8234-8.819 8.8234-4.8612 0-8.8165-3.9584-8.8165-8.8234 0-.16.006-.3173.012-.4743.1776-3.3155 2.1878-6.1509 5.0358-7.502C9.374 4.107 10.653 3.8047 12 3.8047zM9.5664 8.732a.2539.2539 0 0 0-.2192.1274c-.0444.08-.0444.1775.003.2546l1.8474 3.1112-2.4811 3.7866a.257.257 0 0 0-.0117.2607.252.252 0 0 0 .222.1333h1.8592a.2575.2575 0 0 0 .2133-.1157l1.3409-2.0976 1.202 2.0859a.2511.2511 0 0 0 .2191.1274h1.8325a.2471.2471 0 0 0 .2188-.1274c.0534-.08.0536-.175.0062-.2549l-2.2529-3.9081-1.9332-3.259a.2512.2512 0 0 0-.2192-.1244Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/hatenabookmark.svg b/assets/lib/simple-icons/icons/hatenabookmark.svg
index 8d23fe76..631c55a9 100644
--- a/assets/lib/simple-icons/icons/hatenabookmark.svg
+++ b/assets/lib/simple-icons/icons/hatenabookmark.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Hatena Bookmark icon</title><path d="M20.47 0C22.42 0 24 1.58 24 3.53v16.94c0 1.95-1.58 3.53-3.53 3.53H3.53C1.58 24 0 22.42 0 20.47V3.53C0 1.58 1.58 0 3.53 0h16.94zm-3.705 14.47c-.78 0-1.41.63-1.41 1.41s.63 1.414 1.41 1.414 1.41-.645 1.41-1.425-.63-1.41-1.41-1.41zM8.61 17.247c1.2 0 2.056-.042 2.58-.12.526-.084.976-.222 1.32-.412.45-.232.78-.564 1.02-.99s.36-.915.36-1.48c0-.78-.21-1.403-.63-1.87-.42-.48-.99-.734-1.74-.794.66-.18 1.156-.45 1.456-.81.315-.344.465-.824.465-1.424 0-.48-.103-.885-.3-1.26-.21-.36-.493-.645-.883-.87-.345-.195-.735-.315-1.215-.405-.464-.074-1.29-.12-2.474-.12H5.654v10.486H8.61zm.736-4.185c.705 0 1.185.088 1.44.262.27.18.39.495.39.93 0 .405-.135.69-.42.855-.27.18-.765.254-1.44.254H8.31v-2.297h1.05zm8.656.706v-7.06h-2.46v7.06H18zM8.925 9.08c.71 0 1.185.08 1.432.24.245.16.367.435.367.83 0 .38-.13.646-.39.804-.265.154-.747.232-1.452.232h-.57V9.08h.615z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Hatena Bookmark</title><path d="M20.47 0C22.42 0 24 1.58 24 3.53v16.94c0 1.95-1.58 3.53-3.53 3.53H3.53C1.58 24 0 22.42 0 20.47V3.53C0 1.58 1.58 0 3.53 0h16.94zm-3.705 14.47c-.78 0-1.41.63-1.41 1.41s.63 1.414 1.41 1.414 1.41-.645 1.41-1.425-.63-1.41-1.41-1.41zM8.61 17.247c1.2 0 2.056-.042 2.58-.12.526-.084.976-.222 1.32-.412.45-.232.78-.564 1.02-.99s.36-.915.36-1.48c0-.78-.21-1.403-.63-1.87-.42-.48-.99-.734-1.74-.794.66-.18 1.156-.45 1.456-.81.315-.344.465-.824.465-1.424 0-.48-.103-.885-.3-1.26-.21-.36-.493-.645-.883-.87-.345-.195-.735-.315-1.215-.405-.464-.074-1.29-.12-2.474-.12H5.654v10.486H8.61zm.736-4.185c.705 0 1.185.088 1.44.262.27.18.39.495.39.93 0 .405-.135.69-.42.855-.27.18-.765.254-1.44.254H8.31v-2.297h1.05zm8.656.706v-7.06h-2.46v7.06H18zM8.925 9.08c.71 0 1.185.08 1.432.24.245.16.367.435.367.83 0 .38-.13.646-.39.804-.265.154-.747.232-1.452.232h-.57V9.08h.615z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/haveibeenpwned.svg b/assets/lib/simple-icons/icons/haveibeenpwned.svg
index c0af23f3..5e32edb9 100644
--- a/assets/lib/simple-icons/icons/haveibeenpwned.svg
+++ b/assets/lib/simple-icons/icons/haveibeenpwned.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>haveibeenpwned icon</title><path d="M3.03 2.37a2.09 2.09 0 0 0-.333.02.905.905 0 0 0-.244.067.527.527 0 0 0-.166.088.5.5 0 0 0-.133.144L.652 4.943a4.084 4.084 0 0 0-.308.532 2.184 2.184 0 0 0-.2.496c-.051.17-.089.351-.11.543A5.53 5.53 0 0 0 0 7.143c0 .199.022.356.066.474a.48.48 0 0 0 .188.266.745.745 0 0 0 .32.123c.133.023.288.031.465.031v.002c.184 0 .342-.01.475-.033a.857.857 0 0 0 .332-.123.56.56 0 0 0 .187-.266c.044-.118.067-.275.067-.474V5.729L3.547 2.71a.418.418 0 0 0 .045-.154.177.177 0 0 0-.067-.112.342.342 0 0 0-.177-.054 2.17 2.17 0 0 0-.319-.022zm4.347 5.61a2.03 2.03 0 0 0-.559.065.647.647 0 0 0-.343.205.813.813 0 0 0-.182.387 3.436 3.436 0 0 0-.043.6c0 .228.014.422.043.58a.883.883 0 0 0 .182.386.75.75 0 0 0 .343.205c.144.036.33.053.559.053a2.2 2.2 0 0 0 .547-.053.75.75 0 0 0 .344-.205.75.75 0 0 0 .183-.387c.036-.157.053-.35.053-.58a2.77 2.77 0 0 0-.053-.6.702.702 0 0 0-.183-.386.647.647 0 0 0-.344-.205 1.937 1.937 0 0 0-.547-.065zm4.05 3.69a.337.337 0 0 0-.308.172c-.068.114-.103.316-.103.605 0 .29.035.496.103.617.069.115.172.17.309.17h4.779c.13 0 .228-.055.297-.17.068-.114.101-.32.101-.617 0-.145-.01-.268-.033-.367a.637.637 0 0 0-.08-.24.25.25 0 0 0-.127-.137.335.335 0 0 0-.158-.033zm7.395 0a.337.337 0 0 0-.308.172c-.069.114-.104.316-.104.605 0 .29.035.496.104.617.068.115.171.17.308.17H23.6c.13 0 .228-.055.296-.17.07-.114.104-.32.104-.617 0-.145-.012-.268-.035-.367a.637.637 0 0 0-.08-.24.247.247 0 0 0-.125-.137.343.343 0 0 0-.16-.033zm-11.32 4.29c-.184 0-.342.012-.475.034a.857.857 0 0 0-.332.123.56.56 0 0 0-.187.266 1.383 1.383 0 0 0-.067.474v1.414L4.994 21.29a.418.418 0 0 0-.045.154c.007.044.03.082.067.112.036.03.096.046.177.054.089.013.195.022.32.022.133 0 .242-.006.33-.022a.905.905 0 0 0 .245-.066.527.527 0 0 0 .166-.088.5.5 0 0 0 .133-.144l1.504-2.254a4.12 4.12 0 0 0 .308-.532c.089-.162.153-.326.197-.496.052-.17.09-.351.112-.543.022-.191.033-.4.033-.629a1.38 1.38 0 0 0-.066-.474.477.477 0 0 0-.188-.266.745.745 0 0 0-.32-.123 2.795 2.795 0 0 0-.465-.031z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>haveibeenpwned</title><path d="M3.03 2.37a2.09 2.09 0 0 0-.333.02.905.905 0 0 0-.244.067.527.527 0 0 0-.166.088.5.5 0 0 0-.133.144L.652 4.943a4.084 4.084 0 0 0-.308.532 2.184 2.184 0 0 0-.2.496c-.051.17-.089.351-.11.543A5.53 5.53 0 0 0 0 7.143c0 .199.022.356.066.474a.48.48 0 0 0 .188.266.745.745 0 0 0 .32.123c.133.023.288.031.465.031v.002c.184 0 .342-.01.475-.033a.857.857 0 0 0 .332-.123.56.56 0 0 0 .187-.266c.044-.118.067-.275.067-.474V5.729L3.547 2.71a.418.418 0 0 0 .045-.154.177.177 0 0 0-.067-.112.342.342 0 0 0-.177-.054 2.17 2.17 0 0 0-.319-.022zm4.347 5.61a2.03 2.03 0 0 0-.559.065.647.647 0 0 0-.343.205.813.813 0 0 0-.182.387 3.436 3.436 0 0 0-.043.6c0 .228.014.422.043.58a.883.883 0 0 0 .182.386.75.75 0 0 0 .343.205c.144.036.33.053.559.053a2.2 2.2 0 0 0 .547-.053.75.75 0 0 0 .344-.205.75.75 0 0 0 .183-.387c.036-.157.053-.35.053-.58a2.77 2.77 0 0 0-.053-.6.702.702 0 0 0-.183-.386.647.647 0 0 0-.344-.205 1.937 1.937 0 0 0-.547-.065zm4.05 3.69a.337.337 0 0 0-.308.172c-.068.114-.103.316-.103.605 0 .29.035.496.103.617.069.115.172.17.309.17h4.779c.13 0 .228-.055.297-.17.068-.114.101-.32.101-.617 0-.145-.01-.268-.033-.367a.637.637 0 0 0-.08-.24.25.25 0 0 0-.127-.137.335.335 0 0 0-.158-.033zm7.395 0a.337.337 0 0 0-.308.172c-.069.114-.104.316-.104.605 0 .29.035.496.104.617.068.115.171.17.308.17H23.6c.13 0 .228-.055.296-.17.07-.114.104-.32.104-.617 0-.145-.012-.268-.035-.367a.637.637 0 0 0-.08-.24.247.247 0 0 0-.125-.137.343.343 0 0 0-.16-.033zm-11.32 4.29c-.184 0-.342.012-.475.034a.857.857 0 0 0-.332.123.56.56 0 0 0-.187.266 1.383 1.383 0 0 0-.067.474v1.414L4.994 21.29a.418.418 0 0 0-.045.154c.007.044.03.082.067.112.036.03.096.046.177.054.089.013.195.022.32.022.133 0 .242-.006.33-.022a.905.905 0 0 0 .245-.066.527.527 0 0 0 .166-.088.5.5 0 0 0 .133-.144l1.504-2.254a4.12 4.12 0 0 0 .308-.532c.089-.162.153-.326.197-.496.052-.17.09-.351.112-.543.022-.191.033-.4.033-.629a1.38 1.38 0 0 0-.066-.474.477.477 0 0 0-.188-.266.745.745 0 0 0-.32-.123 2.795 2.795 0 0 0-.465-.031z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/haxe.svg b/assets/lib/simple-icons/icons/haxe.svg
index c29ffd8f..2c47da73 100644
--- a/assets/lib/simple-icons/icons/haxe.svg
+++ b/assets/lib/simple-icons/icons/haxe.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Haxe icon</title><path d="M23.784 0a.221.221 0 0 0-.043.003h-5.853a.221.221 0 0 0-.1.023L12 2.918 6.21.026a.221.221 0 0 0-.098-.023H.238a.221.221 0 0 0-.026 0 .221.221 0 0 0-.21.256v5.853a.221.221 0 0 0 .024.1l2.894 5.785L.026 17.79a.221.221 0 0 0-.024.099v5.84a.221.221 0 0 0 .002.078.221.221 0 0 0 .253.19h5.855a.221.221 0 0 0 .099-.023L12 21.076l5.789 2.898a.221.221 0 0 0 .099.023h5.877a.221.221 0 0 0 .232-.257V17.89a.221.221 0 0 0-.023-.1l-2.895-5.792 2.895-5.786a.221.221 0 0 0 .023-.099V.267a.221.221 0 0 0-.005-.098.221.221 0 0 0-.208-.169zM2.022.445H6.06l4.038 2.017zm15.918 0h4.038l-8.075 2.017zM.528.528l11.039 2.76-8.28 8.275-.238-.953zM23.47.535l-2.76 11.031-8.277-8.279zm.084 1.487V6.06l-2.019 4.035zm-23.11.003L2.29 9.398l.175.7L.445 6.06zM12 3.48L20.52 12l-8.517 8.516-8.241-8.234L3.48 12zm8.712 8.952l.088.351 2.672 10.688-11.04-2.76zm-17.424 0l8.274 8.274L.531 23.46l.266-1.065zm18.247 1.466l2.02 4.042v4.027zm-19.07 0l-2.02 8.08v-4.038zm7.626 7.638l-4.032 2.018H2.02zm3.818 0l8.071 2.018h-4.04z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Haxe</title><path d="M23.784 0a.221.221 0 0 0-.043.003h-5.853a.221.221 0 0 0-.1.023L12 2.918 6.21.026a.221.221 0 0 0-.098-.023H.238a.221.221 0 0 0-.026 0 .221.221 0 0 0-.21.256v5.853a.221.221 0 0 0 .024.1l2.894 5.785L.026 17.79a.221.221 0 0 0-.024.099v5.84a.221.221 0 0 0 .002.078.221.221 0 0 0 .253.19h5.855a.221.221 0 0 0 .099-.023L12 21.076l5.789 2.898a.221.221 0 0 0 .099.023h5.877a.221.221 0 0 0 .232-.257V17.89a.221.221 0 0 0-.023-.1l-2.895-5.792 2.895-5.786a.221.221 0 0 0 .023-.099V.267a.221.221 0 0 0-.005-.098.221.221 0 0 0-.208-.169zM2.022.445H6.06l4.038 2.017zm15.918 0h4.038l-8.075 2.017zM.528.528l11.039 2.76-8.28 8.275-.238-.953zM23.47.535l-2.76 11.031-8.277-8.279zm.084 1.487V6.06l-2.019 4.035zm-23.11.003L2.29 9.398l.175.7L.445 6.06zM12 3.48L20.52 12l-8.517 8.516-8.241-8.234L3.48 12zm8.712 8.952l.088.351 2.672 10.688-11.04-2.76zm-17.424 0l8.274 8.274L.531 23.46l.266-1.065zm18.247 1.466l2.02 4.042v4.027zm-19.07 0l-2.02 8.08v-4.038zm7.626 7.638l-4.032 2.018H2.02zm3.818 0l8.071 2.018h-4.04z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/hbo.svg b/assets/lib/simple-icons/icons/hbo.svg
index 429783f5..3d8cc2c1 100644
--- a/assets/lib/simple-icons/icons/hbo.svg
+++ b/assets/lib/simple-icons/icons/hbo.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>HBO icon</title><path d="M7.042 16.896H4.414v-3.754H2.708v3.754H.01L0 7.22h2.708v3.6h1.706v-3.6h2.628zm12.043.046C21.795 16.94 24 14.689 24 11.978a4.89 4.89 0 0 0-4.915-4.92c-2.707-.002-4.09 1.991-4.432 2.795.003-1.207-1.187-2.632-2.58-2.634H7.59v9.674l4.181.001c1.686 0 2.886-1.46 2.888-2.713.385.788 1.72 2.762 4.427 2.76zm-7.665-3.936c.387 0 .692.382.692.817 0 .435-.305.817-.692.817h-1.33v-1.634zm.005-3.633c.387 0 .692.382.692.817 0 .436-.305.818-.692.818h-1.33V9.373zm1.77 2.607c.305-.039.813-.387.992-.61-.063.276-.068 1.074.006 1.35-.204-.314-.688-.701-.998-.74zm3.43 0a2.462 2.462 0 1 1 4.924 0 2.462 2.462 0 0 1-4.925 0zm2.462 1.936a1.936 1.936 0 1 0 0-3.872 1.936 1.936 0 0 0 0 3.872Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>HBO</title><path d="M7.042 16.896H4.414v-3.754H2.708v3.754H.01L0 7.22h2.708v3.6h1.706v-3.6h2.628zm12.043.046C21.795 16.94 24 14.689 24 11.978a4.89 4.89 0 0 0-4.915-4.92c-2.707-.002-4.09 1.991-4.432 2.795.003-1.207-1.187-2.632-2.58-2.634H7.59v9.674l4.181.001c1.686 0 2.886-1.46 2.888-2.713.385.788 1.72 2.762 4.427 2.76zm-7.665-3.936c.387 0 .692.382.692.817 0 .435-.305.817-.692.817h-1.33v-1.634zm.005-3.633c.387 0 .692.382.692.817 0 .436-.305.818-.692.818h-1.33V9.373zm1.77 2.607c.305-.039.813-.387.992-.61-.063.276-.068 1.074.006 1.35-.204-.314-.688-.701-.998-.74zm3.43 0a2.462 2.462 0 1 1 4.924 0 2.462 2.462 0 0 1-4.925 0zm2.462 1.936a1.936 1.936 0 1 0 0-3.872 1.936 1.936 0 0 0 0 3.872Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/hcl.svg b/assets/lib/simple-icons/icons/hcl.svg
new file mode 100644
index 00000000..972cb46d
--- /dev/null
+++ b/assets/lib/simple-icons/icons/hcl.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>HCL</title><path d="M21.3968 10.4013l-1.0971 2.4399H24l-.3435.7629H17.294l1.4331-3.2028zm-6.3985 1.0896h2.4633c-.0152-.5377-.5358-.911-1.5672-1.0592-2.0348-.2994-4.2354-.1718-5.802.6934-1.2346.6859-1.329 1.7176-.099 2.2232 1.0357.4218 3.2106.4656 4.767.201 1.0077-.1712 1.7776-.502 2.2093-.9974H14.454c-.3262.251-.7526.376-1.25.3804-1.4124.0094-1.5988-.4182-1.3525-.9106.293-.5801.9075-.8966 1.8447-.9216.7381-.0199 1.1029.1436 1.3021.3908M0 13.6067h2.604l.5578-1.2789h2.553l-.5732 1.2771h2.635l1.4457-3.2031h-2.653l-.4769 1.0807H3.5421l.4831-1.0807-2.5781-.0006Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/headlessui.svg b/assets/lib/simple-icons/icons/headlessui.svg
new file mode 100644
index 00000000..75c3d6e2
--- /dev/null
+++ b/assets/lib/simple-icons/icons/headlessui.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Headless UI</title><path d="M4.477 13.192c-.36-2.274-.584-3.711-.65-4.805-.062-1.035.051-1.354.1-1.468.169-.395.424-.746.746-1.029.093-.081.363-.288 1.366-.548 1.06-.275 2.496-.507 4.769-.867 2.274-.36 3.71-.584 4.804-.65 1.034-.062 1.354.051 1.468.1.395.169.746.424 1.029.747.08.093.287.362.547 1.366.242.933.45 2.156.743 3.987l-14.646 4.89c-.085-.515-.176-1.085-.276-1.723Zm-3.762.596C.018 9.387-.33 7.187.425 5.422a6.665 6.665 0 0 1 1.743-2.401C3.614 1.757 5.813 1.41 10.211.713c4.4-.698 6.6-1.046 8.367-.291.92.393 1.74.99 2.399 1.743 1.264 1.447 1.612 3.647 2.308 8.047.697 4.4 1.045 6.601.29 8.366a6.664 6.664 0 0 1-1.743 2.402c-1.445 1.263-3.645 1.611-8.045 2.308-4.398.697-6.598 1.045-8.363.29a6.666 6.666 0 0 1-2.4-1.743c-1.263-1.448-1.611-3.648-2.308-8.048H.715v.001Zm7.759 7.814c1.178-.072 2.695-.31 4.94-.665 2.247-.356 3.762-.599 4.905-.895 1.107-.288 1.617-.568 1.947-.856a4.286 4.286 0 0 0 1.12-1.543c.172-.402.281-.974.212-2.116-.071-1.178-.309-2.696-.665-4.942-.355-2.247-.598-3.763-.894-4.906-.287-1.107-.568-1.618-.855-1.947a4.285 4.285 0 0 0-1.543-1.12c-.402-.174-.974-.282-2.116-.213-1.178.071-2.694.309-4.94.664-2.246.357-3.762.6-4.905.896-1.107.287-1.616.568-1.946.855a4.286 4.286 0 0 0-1.12 1.543c-.173.403-.281.974-.212 2.116.07 1.179.308 2.696.664 4.943.356 2.246.598 3.762.895 4.905.287 1.108.567 1.618.855 1.947.423.485.95.868 1.543 1.121.402.173.973.282 2.116.213Z"/></svg>
diff --git a/assets/lib/simple-icons/icons/headspace.svg b/assets/lib/simple-icons/icons/headspace.svg
new file mode 100644
index 00000000..2d568899
--- /dev/null
+++ b/assets/lib/simple-icons/icons/headspace.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Headspace</title><path d="M23.9711 11.8612c.279 3.8878-1.5272 6.0933-2.6155 7.6357-1.694 1.7856-3.8397 4.2203-9.291 4.3565-4.6237.1827-6.8957-1.8508-8.8034-3.617-2.487-2.7336-3.1366-4.3512-3.261-8.3752-.0118-2.467.9397-4.9292 2.6025-7.0954C4.934 1.4736 8.6408.3699 12.0646.1426c3.5923-.1392 6.4493 1.6723 8.3993 3.624 2.4963 2.632 3.2629 4.8923 3.5054 8.0946Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/hellofresh.svg b/assets/lib/simple-icons/icons/hellofresh.svg
index 59025d53..675ab0b1 100644
--- a/assets/lib/simple-icons/icons/hellofresh.svg
+++ b/assets/lib/simple-icons/icons/hellofresh.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>HelloFresh icon</title><path d="M12.773 1.063a8.14 8.14 0 00-.37.005 11.51 11.51 0 00-.966.11c-2.884.456-5.652 2.003-7.642 4.177A12.53 12.53 0 002.55 6.96a11.8 11.8 0 00-1.858 5.07c-.127 1.127.18 2.498-.267 3.559a4.25 4.25 0 00-.16.45c-.302.942-.727 3.072 1.164 4.042.8.41 1.732.427 2.535.86.23.124.453.255.676.382a13.365 13.365 0 001.402.74c.064.027.124.054.187.079 3.269 1.29 6.995.97 10.1-.62.37-.186.717-.4 1.059-.61.052-.03.106-.058.158-.089.25-.147.493-.3.728-.46a12.552 12.552 0 00.123-.094c.24-.17.462-.338.655-.493a12.552 12.552 0 00.26-.199c.163-.138.321-.279.476-.424a12.158 12.158 0 001.986-2.404 13.458 13.458 0 001.793-4.602c.015-.074.028-.148.041-.222.014-.075.028-.142.04-.213a16.736 16.736 0 00.19-3.484c-.053-1.178.473-2.04-.134-3.174h.002a1.619 1.619 0 00-.5-.565l-.092-.06a.834.834 0 00-.05-.032c-.39-.227-.852-.335-1.294-.5-.096-.035-.177.026-.109.106 1.068 1.253 1.18 2.233-.033.766-2.832-3.424-7.488-3.701-8.856-3.705zM12.75 2.13c.621.007 1.01.07 1.01.07s-2.684.074-5.52 1.701c-2.29 1.315-1.427.046.186-.798 1.607-.843 3.289-.985 4.324-.973zm3.336 2.459c.049-.003.1 0 .152.01 1.45.265.15 4.272-.527 5.214.26 2.126 1.057.41 1.37-.51.097-.286.22-.642.26-.935.133-.942.415-1.671.981-2.06.318-.219.648-.309 1.06-.141 1.314.532.8 4.342-.37 4.81a1.171 1.171 0 01-.598.079v-.002c-.692-.06-.901-.575-1.018-1.399-.534 1.616-1.528 2.736-2.285.75-.19.48-2.024 2.76-2.666.108l-.015-.06c-.185.335-1.37 2.427-2.85 1.687a1.031 1.031 0 01-.299-.245 1.855 1.855 0 01-.351-.636 3.276 3.276 0 01-.149-.729 5.259 5.259 0 01-.008-.586c-.2-.013-.418-.02-.574-.027h-.111c-.015 1.059-.003 2.153.078 2.791a.05.05 0 01-.014.035.05.05 0 01-.029.016c-.42.07-.933.332-.885-.74.03-.587.05-1.478.063-2.082a6.91 6.91 0 00-1.16.19 8.932 8.932 0 00-.371.11c-.007.264-.012.517-.012.742-.026 1.344-.036 3.09.064 3.842a.043.043 0 01-.011.032.043.043 0 01-.026.013c-.441.076-.984.247-.933-.88 0 0 .05-2.167.076-2.928.005-.162.01-.33.013-.502-.238.114-.39.219-.576.322-.055.028-.104.058-.152.086-.048.027-.094.052-.135.078-.083.05-.289.174-.318.19a.078.078 0 01-.086 0 .423.423 0 01-.123-.184c-.06-.176-.05-.43.168-.569a5.55 5.55 0 01.34-.207 7.543 7.543 0 01.894-.408c.011-1.118-.008-2.445-.045-2.81A.054.054 0 014.95 7c.196-.058.964-.24.93.486 0 0-.056 1.154-.092 2.147.105-.021.213-.04.322-.055a7.327 7.327 0 011.194-.076c.03-1.695.006-3.432-.053-3.934a.042.042 0 01.008-.027.042.042 0 01.008-.01.042.042 0 01.015-.008c.174-.053.93-.24.897.465-.029 1.135-.068 2.496-.088 3.55v.009c.236.015.483.034.717.058a3.411 3.411 0 01.695-1.515c.103-.13.566-.585.937-.666.509-.137.842.24.938.476a1.823 1.823 0 01.094.887l-.004.03v.031a1.644 1.644 0 01-.04.182 1.462 1.462 0 01-.093.24 1.446 1.446 0 01-.332.44 1.595 1.595 0 01-.557.29 1.47 1.47 0 01-.506.059 2.254 2.254 0 01-.224-.022l-.11-.017v.013c0 .113-.003.224 0 .332a4.018 4.018 0 00.079.719c.086.379.282.576.529.623.927.247 1.936-1.418 2.11-1.697-.373-1.835.05-5.725 1.37-5.365 1.27.341.035 4.46-.564 5.289.211 2.657 1.697.158 1.818-.02-.17-.685-.189-1.563-.105-2.611.106-1.321.51-2.675 1.244-2.713zm.174.697c-.457.017-.813 2.086-.655 3.897.55-1.071 1.12-3.782.698-3.891a.147.147 0 00-.043-.006zm-2.602.047c-.45.029-.835 2.281-.658 4.037.52-.995 1.123-3.924.701-4.033a.133.133 0 00-.043-.004zm5.365 1.178c-.18.004-.432.117-.613.447-.505.928-.52 3.106.02 3.623.126.121.333.047.422-.023a.925.925 0 00.234-.307c.439-.815.7-2.698.287-3.463-.036-.067-.17-.282-.35-.277zm-8.431 1.35a.255.255 0 00-.076.015.617.617 0 00-.237.168 1.585 1.585 0 00-.209.293 3.29 3.29 0 00-.273.68 5.304 5.304 0 00-.154.683l-.01-.004v.016c.083.011.148.02.16.02a.864.864 0 00.182-.018.823.823 0 00.318-.137 1.035 1.035 0 00.219-.22 1.748 1.748 0 00.279-.569 1.94 1.94 0 00.063-.344 1.054 1.054 0 00-.022-.326.428.428 0 00-.127-.228l-.02-.014-.013-.006c.003 0-.006-.004-.014-.004h-.008a.07.07 0 00-.027-.004.255.255 0 00-.031-.002zm9.4 3.784a.138.138 0 01.022 0 .138.138 0 01.134.145v4.582a.21.21 0 01-.17.2l-.47.083a.138.138 0 01-.17-.14v-1.889a.06.06 0 00-.068-.057l-.73.13a.092.092 0 00-.07.08v1.888a.21.21 0 01-.17.2l-.47.083a.138.138 0 01-.17-.14v-4.582a.21.21 0 01.17-.2l.47-.084a.138.138 0 01.17.14v1.833a.06.06 0 00.07.057l.73-.127a.092.092 0 00.068-.08v-1.834a.21.21 0 01.17-.202l.47-.082a.138.138 0 01.014-.004zm-3.785.608c.563-.007.898.353.898 1.158v.164a.191.191 0 01-.15.176l-.478.086a.11.11 0 01-.127-.108v-.144c0-.498-.136-.65-.395-.604-.272.048-.396.27-.396.526 0 .382.287.61.716.957l-.005.004c.503.409.894.762.894 1.437 0 .764-.497 1.334-1.213 1.461-.748.132-1.21-.31-1.21-1.039v-.342a.21.21 0 01.17-.2l.415-.073a.138.138 0 01.17.14v.28c0 .382.13.576.45.52.217-.038.437-.179.437-.548 0-.457-.352-.702-.758-1.025-.406-.323-.852-.697-.852-1.398 0-.63.351-1.256 1.18-1.403.09-.015.174-.024.254-.025zm-2.014.416a.138.138 0 01.024 0 .138.138 0 01.135.143v.374a.21.21 0 01-.17.202l-1.057.187a.092.092 0 00-.068.078v1.182a.06.06 0 00.068.055l.715-.127a.138.138 0 01.172.14v.348a.21.21 0 01-.172.2l-.715.128a.092.092 0 00-.068.08v1.336a.06.06 0 00.068.057l1.111-.198a.138.138 0 01.17.141v.39a.21.21 0 01-.17.202l-1.822.318a.138.138 0 01-.17-.14v-4.58a.21.21 0 01.17-.202l1.768-.31a.138.138 0 01.011-.004zm-3.351.621c.677.014.824.565.824 1.299 0 .77-.158 1.09-.533 1.353a.089.089 0 00-.041.104h.002l.574 1.828a.154.154 0 01-.123.186l-.461.084a.185.185 0 01-.217-.13l-.492-1.726a.077.077 0 00-.088-.053l-.156.028a.092.092 0 00-.069.082v1.804a.21.21 0 01-.171.202l-.477.084a.138.138 0 01-.17-.141v-4.582a.21.21 0 01.17-.2l1.104-.195c.12-.02.227-.029.324-.027zm-2.23.377a.138.138 0 01.007 0 .138.138 0 01.135.145v.369a.21.21 0 01-.17.199l-1.084.191a.092.092 0 00-.068.082v1.205a.06.06 0 00.068.057l.75-.133a.138.138 0 01.17.14v.362a.21.21 0 01-.17.2l-.75.132a.092.092 0 00-.068.08v1.932a.21.21 0 01-.17.2l-.479.085a.138.138 0 01-.17-.14V14.19a.21.21 0 01.17-.199l1.801-.32a.138.138 0 01.027-.004zm1.898.346a.867.867 0 00-.127.013l-.254.043a.092.092 0 00-.068.08v1.405a.06.06 0 00.068.054l.254-.045v.002c.368-.065.478-.253.478-.853 0-.525-.084-.705-.351-.7Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>HelloFresh</title><path d="M12.422 1.064a9.26 9.26 0 0 0-.959.103C8.586 1.62 5.81 3.169 3.825 5.34a12.714 12.714 0 0 0-1.246 1.597A11.653 11.653 0 0 0 .73 12.002c-.135 1.127.185 2.49-.27 3.55-.033.08-.055.167-.084.25-.231.576-1.124 3.138 1.077 4.276.808.421 1.732.423 2.54.86.235.118.454.251.673.386.454.253.91.54 1.398.741.05.034.118.051.185.085 3.264 1.296 6.983.959 10.08-.623.538-.27 1.008-.59 1.496-.876.96-.572 1.869-1.412 1.869-1.412-.065.042-.18.109-.255.156l.287-.259c.303-.286.607-.588.876-.908.404-.471.774-.975 1.11-1.497.876-1.38 1.465-2.946 1.801-4.595.017-.084.034-.151.034-.219a.984.984 0 0 0 .032-.219c.185-1.127.253-2.287.185-3.481.017-1.178.556-2.037-.05-3.165a1.676 1.676 0 0 0-.504-.572c-.034-.017-.05-.034-.1-.05-.018-.017-.034-.016-.051-.033-.387-.218-.842-.338-1.296-.506-.1-.034-.168.035-.1.103 1.077 1.245 1.177 2.219-.034.755-3.231-3.904-8.836-3.718-9.206-3.685zm-.344 1.061c1.014-.059 1.708.05 1.708.05s-2.692.1-5.519 1.716c-2.288 1.313-1.43.05.185-.808 1.279-.673 2.612-.899 3.626-.958zm4.012 2.708c1.397.236.152 4.106-.504 5.015.236 2.053 1.01.404 1.312-.488.101-.286.22-.622.253-.908.118-.909.387-1.615.943-1.985.32-.219.64-.303 1.026-.135 1.262.522.773 4.19-.472 4.611a1.008 1.008 0 0 1-.57.082c-.674-.05-.86-.555-.977-1.346-.522 1.565-1.464 2.627-2.204.726-.185.454-1.935 2.658-2.558.1l-.018-.05c-.185.336-1.312 2.338-2.742 1.631a1.286 1.286 0 0 1-.285-.235 2.238 2.238 0 0 1-.338-.623 3.285 3.285 0 0 1-.135-.707c-.016-.118-.016-.252-.016-.37 0-.067.016-.117.016-.184-.201-.017-.403-.018-.554-.035h-.1c0 1.027-.002 2.07.082 2.693.017.016.001.05-.032.05-.404.067-.893.32-.842-.707.017-.572.033-1.43.05-2.001-.387.033-.758.1-1.11.184l-.354.1c-.017.253-.017.49-.017.708-.033 1.296-.05 2.98.05 3.703 0 .017-.017.032-.033.032-.421.067-.943.252-.893-.842 0 0 .051-2.086.085-2.827 0-.168.018-.318.018-.486-.236.101-.371.2-.557.302-.05.033-.1.05-.15.084-.034.034-.085.05-.119.084-.084.05-.268.168-.301.185-.034.017-.05.017-.085 0 0 0-.084-.05-.118-.169-.05-.185-.05-.42.169-.554.1-.084.235-.15.32-.201.184-.101.504-.253.857-.388.017-1.077 0-2.357-.034-2.71 0-.017 0-.033.034-.05.185-.05.926-.235.892.472 0 0-.05 1.11-.084 2.07.084-.018.202-.034.303-.051.37-.05.774-.085 1.161-.068.034-1.633 0-3.297-.05-3.785l.032-.035c.185-.067.91-.252.876.438a263.81 263.81 0 0 0-.084 3.416v.034c.235.017.47.033.689.05.1-.505.303-1.01.673-1.464.1-.118.557-.555.91-.64.488-.134.807.22.908.455.101.286.118.572.085.858v.052a.065.065 0 0 1-.018.05c-.017.034-.016.083-.033.117-.016.084-.05.153-.084.237a1.268 1.268 0 0 1-.32.42 1.52 1.52 0 0 1-.538.285 1.24 1.24 0 0 1-.488.05c-.067 0-.152 0-.22-.016-.033 0-.066 0-.1-.016v.336c.017.201.034.506.085.69.084.37.269.555.504.605.892.236 1.867-1.362 2.035-1.631-.37-1.767.033-5.504 1.312-5.167 1.229.336.034 4.291-.538 5.099.202 2.574 1.634.152 1.752-.016-.152-.673-.187-1.514-.103-2.524.118-1.363.539-2.761 1.346-2.61zm.069.657c-.455-.117-.825 1.953-.673 3.753.521-1.026 1.077-3.635.673-3.753zm-2.508.05c-.454-.117-.858 2.138-.673 3.888.505-.959 1.077-3.786.673-3.887zm5.132 1.162c-.169.017-.42.118-.589.438-.488.875-.504 2.977.018 3.482.118.117.32.035.404-.033a1.29 1.29 0 0 0 .217-.303c.42-.79.674-2.608.287-3.315-.033-.067-.152-.27-.337-.27zm-8.111 1.262a.213.213 0 0 0-.1.018c-.085.016-.152.082-.236.166a1.115 1.115 0 0 0-.203.288 4.387 4.387 0 0 0-.25.655 4.632 4.632 0 0 0-.153.657h.018v.034c.067 0 .134.016.15.016.05 0 .119 0 .17-.016a1.26 1.26 0 0 0 .302-.135.678.678 0 0 0 .22-.219 1.58 1.58 0 0 0 .269-.556c.017-.118.033-.235.05-.336.017-.1-.001-.202-.018-.303-.017-.101-.066-.186-.117-.22 0 0 0-.015-.018-.015 0-.017-.016-.016-.016-.016s0-.018-.016-.018h-.018zm9.171 3.684c.101-.017.17.034.17.135v4.41c0 .084-.069.168-.17.185l-.454.084c-.1.017-.168-.034-.168-.135V14.51c0-.033-.033-.067-.067-.05l-.707.119c-.034.016-.068.05-.068.084v1.816a.194.194 0 0 1-.167.185l-.456.084c-.084.017-.167-.033-.167-.134v-4.408c0-.084.066-.168.167-.185l.456-.084c.101-.017.167.033.167.134v1.766c0 .034.034.067.068.05l.707-.116c.034-.017.067-.05.067-.085v-1.768c0-.084.067-.168.168-.184zm-3.405.585c.41.082.645.43.645 1.099v.15c0 .085-.067.152-.15.17l-.455.084c-.067.017-.118-.033-.118-.1V13.5c0-.472-.134-.623-.386-.573-.27.05-.388.269-.388.504 0 .37.269.59.69.927.487.387.858.723.841 1.346 0 .74-.471 1.294-1.161 1.412-.724.118-1.161-.302-1.161-1.009v-.319c0-.084.067-.168.168-.185l.404-.068c.101-.017.169.034.169.134v.27c0 .37.135.554.438.504.202-.05.42-.185.42-.538 0-.421-.336-.672-.74-.975-.403-.32-.825-.675-.825-1.348 0-.606.337-1.195 1.145-1.346.172-.03.328-.031.464-.004zm-2.164.392c.084-.017.169.033.169.134v.354c0 .084-.068.168-.169.185l-1.026.185c-.034.016-.069.05-.069.084v1.145c0 .034.035.067.069.05l.689-.118c.1-.017.168.033.168.134v.338a.196.196 0 0 1-.168.185l-.69.116c-.033.017-.068.051-.068.085v1.296c0 .033.035.067.069.05l1.076-.185c.085-.017.152.05.17.135v.37c0 .083-.069.17-.17.186l-1.75.301c-.084.017-.168-.033-.168-.134v-4.408c0-.084.068-.168.168-.185zm-3.255.598c.656.02.798.545.798 1.252 0 .74-.134 1.044-.504 1.296-.017.017-.051.069-.034.102l.538 1.716a.155.155 0 0 1-.118.185l-.436.084a.194.194 0 0 1-.22-.118l-.472-1.666c-.016-.033-.05-.067-.084-.05l-.15.034c-.034.017-.069.051-.069.085v1.75a.194.194 0 0 1-.167.184l-.454.085c-.084.017-.169-.034-.169-.135v-4.41c0-.084.068-.168.17-.185l1.058-.185c.116-.018.22-.026.313-.024zm-2.163.378c.1-.017.185.032.168.117v.353c0 .084-.067.17-.168.187l-1.043.185c-.034.017-.068.05-.068.084v1.16c0 .033.034.069.068.052l.723-.119c.101-.017.169.034.169.135v.353c0 .085-.068.168-.169.185l-.723.119c-.034.017-.068.049-.068.082v1.869c0 .084-.068.168-.17.185l-.453.084c-.101.017-.169-.034-.169-.135V14.09c0-.084.068-.168.169-.185zm1.733.336l-.237.034c-.033.017-.066.05-.066.084v1.346c0 .034.033.067.066.05l.237-.034c.37-.05.455-.218.455-.807 0-.59-.101-.724-.455-.673z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/hellyhansen.svg b/assets/lib/simple-icons/icons/hellyhansen.svg
index 604f1a66..d4d0d270 100644
--- a/assets/lib/simple-icons/icons/hellyhansen.svg
+++ b/assets/lib/simple-icons/icons/hellyhansen.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Helly Hansen icon</title><path d="M4.27 10.09h4.08V5.63h4.11L9.98 18.37H8.34V14H4.26v4.37H0V5.63h4.27zm15.45 3.82h-4.07v4.46h-4.1l2.47-12.74h1.64V10h4.08V5.63H24v12.74h-4.28Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Helly Hansen</title><path d="M22.912 5.945a1.089 1.089 0 10-.002 2.178 1.089 1.089 0 00.002-2.178zm.012.242a.85.85 0 110 1.7.85.85 0 010-1.7zm-.332.375v.952h.18v-.352h.171l.184.352h.207l-.213-.385c.046-.017.19-.067.19-.28 0-.166-.12-.287-.323-.287h-.396zm.18.157h.167c.124 0 .184.057.184.144 0 .089-.065.143-.156.143h-.196v-.287zM0 7.039v11.016h3.684v-3.78h3.523v3.78h1.42l2.15-11.016H7.221v3.854H3.695V7.039H0zm12.127 0L9.988 18.055h3.545V14.2h3.524v3.854h3.697V7.039H17.07v3.78h-3.525v-3.78h-1.418Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/helm.svg b/assets/lib/simple-icons/icons/helm.svg
index 0b5c4e89..ac7b2391 100644
--- a/assets/lib/simple-icons/icons/helm.svg
+++ b/assets/lib/simple-icons/icons/helm.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Helm icon</title><path d="M18.651,19.252c0.704,1.005,0.96,2.039,0.573,2.31c-0.387,0.271-1.271-0.324-1.975-1.329 c-0.259-0.37-0.456-0.744-0.584-1.082c-1.156,0.772-2.493,1.258-3.898,1.4c0.081,0.34,0.13,0.737,0.13,1.166 c0,1.227-0.383,2.221-0.856,2.221c-0.473,0-0.856-0.994-0.856-2.221c0-0.42,0.047-0.807,0.125-1.142 c-1.414-0.099-2.765-0.547-3.944-1.284c-0.127,0.301-0.3,0.621-0.524,0.942c-0.704,1.005-1.588,1.6-1.975,1.329 c-0.387-0.271-0.131-1.305,0.573-2.31c0.236-0.337,0.492-0.622,0.743-0.85c-0.487-0.437-0.928-0.931-1.309-1.479l1.124-0.782 c1.345,1.934,3.554,3.088,5.908,3.088c2.36,0,4.571-1.158,5.916-3.098l1.125,0.78c-0.348,0.502-0.747,0.957-1.183,1.366 C18.06,18.518,18.369,18.85,18.651,19.252z M6.277,5.623C5.682,6.143,5.153,6.746,4.711,7.43l1.15,0.743 C7.193,6.111,9.453,4.88,11.907,4.88c2.535,0,4.835,1.294,6.151,3.461l1.17-0.711c-0.435-0.716-0.963-1.349-1.56-1.895 c0.324-0.245,0.671-0.603,0.983-1.049c0.704-1.005,0.96-2.039,0.573-2.31c-0.387-0.271-1.271,0.324-1.975,1.329 c-0.294,0.419-0.504,0.84-0.627,1.212c-1.152-0.761-2.485-1.232-3.9-1.364c0.108-0.372,0.175-0.83,0.175-1.333 C12.897,0.994,12.514,0,12.041,0c-0.473,0-0.856,0.994-0.856,2.221c0,0.491,0.063,0.941,0.167,1.308 c-1.413,0.09-2.757,0.525-3.93,1.247c-0.128-0.336-0.323-0.705-0.58-1.071C6.139,2.7,5.255,2.106,4.868,2.377 c-0.387,0.271-0.131,1.305,0.573,2.31C5.706,5.065,5.997,5.385,6.277,5.623z M0.5,15.272h1.648V12.8h1.859v2.473h1.648V9.043H4.008 v2.319H2.148V9.043H0.5V15.272z M7.036,9.043v6.229h4.121v-1.38H8.684v-1.112h2.032v-1.38H8.684v-0.978h2.377v-1.38L7.036,9.043 L7.036,9.043z M12.364,9.043v6.229h4.006v-1.38h-2.358V9.043L12.364,9.043L12.364,9.043z M17.443,9.043v6.229h1.514v-1.84 c0-0.16-0.008-0.335-0.024-0.527c-0.016-0.192-0.034-0.388-0.053-0.589c-0.019-0.201-0.042-0.398-0.067-0.589 c-0.026-0.192-0.048-0.364-0.067-0.517h0.038l0.498,1.457l0.863,2.099h0.613l0.862-2.099l0.517-1.457h0.038 c-0.019,0.153-0.042,0.326-0.067,0.518c-0.026,0.192-0.048,0.388-0.067,0.589c-0.019,0.201-0.037,0.398-0.053,0.589 c-0.016,0.192-0.024,0.367-0.024,0.527v1.84H23.5V9.043h-1.706l-0.939,2.588l-0.345,1.016h-0.038l-0.345-1.016l-0.978-2.588 L17.443,9.043L17.443,9.043z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Helm</title><path d="M12.337 0c-.475 0-.861 1.016-.861 2.269 0 .527.069 1.011.183 1.396a8.514 8.514 0 0 0-3.961 1.22 5.229 5.229 0 0 0-.595-1.093c-.606-.866-1.34-1.436-1.79-1.43a.381.381 0 0 0-.217.066c-.39.273-.123 1.326.596 2.353.267.381.559.705.84.948a8.683 8.683 0 0 0-1.528 1.716h1.734a7.179 7.179 0 0 1 5.381-2.421 7.18 7.18 0 0 1 5.382 2.42h1.733a8.687 8.687 0 0 0-1.32-1.53c.35-.249.735-.643 1.078-1.133.719-1.027.986-2.08.596-2.353a.382.382 0 0 0-.217-.065c-.45-.007-1.184.563-1.79 1.43a4.897 4.897 0 0 0-.676 1.325 8.52 8.52 0 0 0-3.899-1.42c.12-.39.193-.887.193-1.429 0-1.253-.386-2.269-.862-2.269zM1.624 9.443v5.162h1.358v-1.968h1.64v1.968h1.357V9.443H4.62v1.838H2.98V9.443zm5.912 0v5.162h3.21v-1.108H8.893v-.95h1.64v-1.142h-1.64v-.84h1.853V9.443zm4.698 0v5.162h3.218v-1.362h-1.86v-3.8zm4.706 0v5.162h1.364v-2.643l1.357 1.225 1.35-1.232v2.65h1.365V9.443h-.614l-2.1 1.914-2.109-1.914zm-11.82 7.28a8.688 8.688 0 0 0 1.412 1.548 5.206 5.206 0 0 0-.841.948c-.719 1.027-.985 2.08-.596 2.353.39.273 1.289-.338 2.007-1.364a5.23 5.23 0 0 0 .595-1.092 8.514 8.514 0 0 0 3.961 1.219 5.01 5.01 0 0 0-.183 1.396c0 1.253.386 2.269.861 2.269.476 0 .862-1.016.862-2.269 0-.542-.072-1.04-.193-1.43a8.52 8.52 0 0 0 3.9-1.42c.121.4.352.865.675 1.327.719 1.026 1.617 1.637 2.007 1.364.39-.273.123-1.326-.596-2.353-.343-.49-.727-.885-1.077-1.135a8.69 8.69 0 0 0 1.202-1.36h-1.771a7.174 7.174 0 0 1-5.227 2.252 7.174 7.174 0 0 1-5.226-2.252z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/helpdesk.svg b/assets/lib/simple-icons/icons/helpdesk.svg
new file mode 100644
index 00000000..0c349913
--- /dev/null
+++ b/assets/lib/simple-icons/icons/helpdesk.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>HelpDesk</title><path d="M12 10.71l6.12-5.31H12c-2.16 0-4.32.06-6.36.21-.84.06-1.5.69-1.56 1.53-.12 1.26-.18 2.85-.18 4.41v.87c0 1.59.06 3.15.18 4.41.09.81.75 1.47 1.56 1.5a90 90 0 0012.72 0c.81-.03 1.5-.69 1.56-1.5.09-1.2.15-2.67.18-4.17L24 9.3V12.66c0 1.59-.06 3.18-.18 4.47a5.57 5.57 0 01-5.19 5.1c-2.13.18-4.38.27-6.63.27s-4.5-.09-6.63-.24a5.57 5.57 0 01-5.19-5.1C.06 15.81 0 14.13 0 12.45v-.87C0 9.9.06 8.22.18 6.84a5.57 5.57 0 015.19-5.1C7.5 1.59 9.75 1.5 12 1.5h12v3.9L12 15.81l-5.61-4.86L9.33 8.4z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/helpscout.svg b/assets/lib/simple-icons/icons/helpscout.svg
new file mode 100644
index 00000000..9c420211
--- /dev/null
+++ b/assets/lib/simple-icons/icons/helpscout.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Help Scout</title><path d="m3.497 14.044 7.022-7.021a4.946 4.946 0 0 0 1.474-3.526A4.99 4.99 0 0 0 10.563 0L3.54 7.024a4.945 4.945 0 0 0-1.473 3.525c0 1.373.55 2.6 1.43 3.496zm17.007-4.103-7.023 7.022a4.946 4.946 0 0 0-1.473 3.525c0 1.36.55 2.601 1.43 3.497l7.022-7.022a4.943 4.943 0 0 0 1.474-3.526c0-1.373-.55-2.6-1.43-3.496zm-.044-2.904a4.944 4.944 0 0 0 1.474-3.525c0-1.36-.55-2.6-1.43-3.497L3.54 16.965A4.986 4.986 0 0 0 3.497 24Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/here.svg b/assets/lib/simple-icons/icons/here.svg
index aa3645fd..6846cca4 100644
--- a/assets/lib/simple-icons/icons/here.svg
+++ b/assets/lib/simple-icons/icons/here.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>HERE icon</title><path d="M6.656 19.63l-3.304 3.295L.044 19.63zM11.49 12.108c-.69-.821-.656-1.264-.229-1.69.519-.52 1.047-.306 1.639.274zm7.08-8.993c.518-.519 1.046-.305 1.638.275l-1.41 1.41c-.692-.818-.659-1.258-.229-1.685zm4.271 1.44c-.643.962-1.742 2.52-2.929 1.343l2.97-2.97c-.266-.283-.47-.524-.611-.676-1.614-1.6-3.418-1.62-4.834-.214-.943.943-1.19 2.02-.915 3.051l-.916-1.065a1.935 1.935 0 0 0-.555 2.67l-1.065-.884-1.431 1.406 1.907 1.907c-1.474-1.168-3.051-1.055-4.34.217-1.363 1.361-1.269 3.012-.246 4.37l-.208-.205c-1.349-1.348-2.813-.872-3.54-.146-.561.561-.915 1.33-.762 1.867l-2.918-2.92-1.556 1.556 5.764 5.768h3.095l-2.078-2.09c-1.093-1.111-1.111-1.697-.58-2.225.53-.528 1.104-.192 2.151.851l2.054 2.05 1.562-1.543-1.95-1.947c1.404 1.062 3.088 1.12 4.577-.378l.028-.028a4.43 4.43 0 0 0 1.19-1.678l-1.169-.784c-.647.96-1.76 2.523-2.93 1.364l2.976-2.976 1.855 1.84 1.618-1.617-2.32-2.319c-1.083-1.083-.442-2.1 0-2.484a4.577 4.577 0 0 0 .916 1.27c1.501 1.504 3.439 1.806 5.145.106l.027-.027a4.434 4.434 0 0 0 1.19-1.678z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>HERE</title><path d="M19.29 1.007c-.697.036-1.367.384-2.008 1.036-.97.987-1.104 2.206-.679 3.316l-1.091-1.312c-.106.041-.306.203-.506.406-.572.596-.705 1.516-.558 2.125l-.734-.635-1.45 1.475 1.996 2.03c-1.583-1.326-3.007-1.259-4.323.082-1.331 1.353-1.252 3.006-.147 4.385l-.186-.189c-1.184-1.205-2.328-1.463-3.46-.298-.666.663-.772 1.314-.706 1.897l-2.794-2.83-1.625 1.651 5.372 5.48H0l3.312 3.37 3.282-3.34h3.128l-2.275-2.314c-.798-.8-1.039-1.354-.547-1.855.36-.379.773-.367 1.278.148l2.741 2.803 1.65-1.679-2.049-2.084c1.623 1.368 3.393 1.03 4.738-.351.706-.704 1.09-1.355 1.278-1.801l-1.452-.825a6.544 6.544 0 0 1-.878 1.218c-.799.812-1.543.812-2.048.392l2.94-2.992L17 12.25l1.65-1.678-1.782-1.815c-1.45-1.476-1.025-2.26-.691-2.599.212-.217.425-.378.572-.46a4.183 4.183 0 0 0 .797 1.096c1.728 1.774 3.62 1.53 5.07.042.865-.88 1.279-1.692 1.384-2.099l-1.424-.799a5.902 5.902 0 0 1-1.023 1.489c-.786.812-1.532.813-2.037.394l2.97-3.007-.374-.379C21.13 1.43 20.188.961 19.291 1.007zm-.055 1.918c.273-.002.558.113.838.35l-1.596 1.623c-.452-.527-.465-1.136 0-1.623.226-.23.485-.349.758-.35zm-7.357 7.486c.275-.002.564.113.85.35l-1.61 1.626c-.452-.528-.466-1.151 0-1.626.227-.23.486-.349.76-.35z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/heroku.svg b/assets/lib/simple-icons/icons/heroku.svg
index 2430e474..bdec9b57 100644
--- a/assets/lib/simple-icons/icons/heroku.svg
+++ b/assets/lib/simple-icons/icons/heroku.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Heroku icon</title><path d="M20.61 0H3.39C2.189 0 1.23.96 1.23 2.16v19.681c0 1.198.959 2.159 2.16 2.159h17.22c1.2 0 2.159-.961 2.159-2.159V2.16C22.77.96 21.811 0 20.61 0zm.96 21.841c0 .539-.421.96-.96.96H3.39c-.54 0-.96-.421-.96-.96V2.16c0-.54.42-.961.96-.961h17.22c.539 0 .96.421.96.961v19.681zM6.63 20.399L9.33 18l-2.7-2.4v4.799zm9.72-9.719c-.479-.48-1.379-1.08-2.879-1.08-1.621 0-3.301.421-4.5.84V3.6h-2.4v10.38l1.68-.78s2.76-1.26 5.16-1.26c1.2 0 1.5.66 1.5 1.26v7.2h2.4v-7.2c.059-.179.059-1.501-.961-2.52zM13.17 7.5h2.4c1.08-1.26 1.62-2.521 1.8-3.9h-2.399c-.241 1.379-.841 2.64-1.801 3.9z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Heroku</title><path d="M20.61 0H3.39C2.189 0 1.23.96 1.23 2.16v19.681c0 1.198.959 2.159 2.16 2.159h17.22c1.2 0 2.159-.961 2.159-2.159V2.16C22.77.96 21.811 0 20.61 0zm.96 21.841c0 .539-.421.96-.96.96H3.39c-.54 0-.96-.421-.96-.96V2.16c0-.54.42-.961.96-.961h17.22c.539 0 .96.421.96.961v19.681zM6.63 20.399L9.33 18l-2.7-2.4v4.799zm9.72-9.719c-.479-.48-1.379-1.08-2.879-1.08-1.621 0-3.301.421-4.5.84V3.6h-2.4v10.38l1.68-.78s2.76-1.26 5.16-1.26c1.2 0 1.5.66 1.5 1.26v7.2h2.4v-7.2c.059-.179.059-1.501-.961-2.52zM13.17 7.5h2.4c1.08-1.26 1.62-2.521 1.8-3.9h-2.399c-.241 1.379-.841 2.64-1.801 3.9z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/hetzner.svg b/assets/lib/simple-icons/icons/hetzner.svg
new file mode 100644
index 00000000..b04c98f3
--- /dev/null
+++ b/assets/lib/simple-icons/icons/hetzner.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Hetzner</title><path d="M0 0v24h24V0H0zm4.602 4.025h2.244c.509 0 .716.215.716.717v5.64h8.883v-5.64c0-.509.215-.717.717-.717h2.229c.5 0 .71.23.724.717v14.516c0 .509-.215.717-.717.717h-2.23c-.51 0-.717-.215-.717-.717v-5.735H7.562v5.735c0 .516-.215.717-.716.717H4.602c-.51 0-.717-.208-.717-.717V4.742c0-.509.207-.717.717-.717z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/hexo.svg b/assets/lib/simple-icons/icons/hexo.svg
index b8aa62f0..44a7f8bf 100644
--- a/assets/lib/simple-icons/icons/hexo.svg
+++ b/assets/lib/simple-icons/icons/hexo.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Hexo icon</title><path d="M12 .007L1.57 6.056V18.05L12 23.995l10.43-6.049V5.952L12 .007zm4.798 17.105l-.939.521-.939-.521V12.94H9.08v4.172l-.94.521-.938-.521V6.89l.939-.521.939.521v4.172h5.84V6.89l.94-.521.938.521v10.222z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Hexo</title><path d="M12.02 0L1.596 6.02l-.02 12L11.978 24l10.426-6.02.02-12zm4.828 17.14l-.96.558-.969-.574V12.99H9.081v4.15l-.96.558-.969-.574V6.854l.964-.552.965.563v4.145h5.838V6.86l.965-.552.964.563z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/hey.svg b/assets/lib/simple-icons/icons/hey.svg
new file mode 100644
index 00000000..4f458716
--- /dev/null
+++ b/assets/lib/simple-icons/icons/hey.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>HEY</title><path d="M19.57 6.698a5.724 5.724 0 00-2.644 1.572c-.84-2.952-2.65-7.42-4.415-8.15a1.283 1.283 0 00-1.181.05c-1.104.643-1.823 2.709-1.194 6.624C7.71 2.353 6.863 2.36 6.472 2.353a.956.956 0 00-.873.597c-.263.584-.79 2.406.494 6.327C4.547 7.16 4.072 6.89 3.526 6.917a.969.969 0 00-.821.557c-.463.873-.41 3.068 1.027 6.34a2.946 2.946 0 00-1.773-.73 1.06 1.06 0 00-.853.544c-.584 1.073.642 4.083 2.157 6.124C4.49 21.427 6.947 24 10.515 24a8.047 8.047 0 001.489-.141.654.654 0 00-.25-1.284c-2.965.578-5.2-1.052-6.553-2.515-2.021-2.19-2.908-4.82-2.959-5.622.424.173 1.644.892 4.018 3.934a.65.65 0 001.059-.757c-3.337-5.066-3.664-8.132-3.555-9.166.982 1 3.433 4.671 5.28 7.445a.642.642 0 00.88.199.642.642 0 00.238-.873C6.312 8.16 6.446 4.952 6.67 3.874c.577.584 2.11 2.618 5.34 9.626a.642.642 0 00.84.327.642.642 0 00.366-.827c-3.132-8.504-1.772-11.385-1.252-11.712.674 0 2.567 3.247 3.748 7.502.07.263.141.52.205.77a4.094 4.094 0 00-.385.924c-.64 2.355-1.283 7.7-.045 9.17a1.194 1.194 0 001.04.444 1.688 1.688 0 001.232-.757c1.15-1.675.475-5.879-.443-9.557a4.832 4.832 0 012.567-1.84 1.283 1.283 0 011.284.307c.526.59 1.445 2.798-1.34 10.583a.654.654 0 001.231.436c2.22-6.206 2.568-10.204 1.084-11.886A2.528 2.528 0 0019.57 6.7zm-2.888 11.918a.41.41 0 01-.218.186c-.48-.571-.48-3.953.045-6.727.995 4.795.417 6.2.173 6.54z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/hibernate.svg b/assets/lib/simple-icons/icons/hibernate.svg
new file mode 100644
index 00000000..fd9dd24a
--- /dev/null
+++ b/assets/lib/simple-icons/icons/hibernate.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Hibernate</title><path d="M5.365 0L9.98 7.994h8.95L14.31 0H5.366zm-.431.248L.46 7.994l4.613 8.008L9.55 8.24 4.934.248zm13.992 7.75l-4.475 7.76 4.617 7.992 4.471-7.744-4.613-8.008zm-4.905 8.006l-8.95.002L9.688 24h8.946l-4.615-7.994.001-.002Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/highly.svg b/assets/lib/simple-icons/icons/highly.svg
deleted file mode 100644
index 8bb97e71..00000000
--- a/assets/lib/simple-icons/icons/highly.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Highly icon</title><path d="M10.2 20.4H13.799999999999999V24H10.2zM9 0H15V18H9z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/hilton.svg b/assets/lib/simple-icons/icons/hilton.svg
index 6c2a38a4..a2359630 100644
--- a/assets/lib/simple-icons/icons/hilton.svg
+++ b/assets/lib/simple-icons/icons/hilton.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Hilton icon</title><path d="M16.123 14.234c0-1.544-1.06-2.788-2.972-3.386V7.347h3.57v8.59h-1.105a2.993 2.993 0 0 0 .506-1.703M11.194 3.708C4.744 3.708 0 7.808 0 12.184c0 2.257 1.267 4.168 2.88 5.481l.114-.092a6.369 6.369 0 0 1-2.418-4.95C.92 7.83 6.818 5.134 12.092 5.134c3.709 0 10.388.85 10.388 7.072 0 3.247-3.455 7.462-10.733 7.462-3.731 0-6.61-2.004-6.61-4.86 0-2.487 1.935-4.26 4.836-4.26a7.83 7.83 0 0 1 2.12.345c-1.199-.207-3.087.092-4.055.85v4.192h3.57v-4.743a4.064 4.064 0 0 1 1.543.6v4.192h.922a3.83 3.83 0 0 1-3.27 1.126v.184c3.385.276 4.813-1.336 4.813-3.156 0-2.118-2.004-3.362-4.03-3.639V7.347h-3.57v3.179c-2.304.46-4.561 1.842-4.561 4.1 0 3.501 4.883 5.666 9.12 5.666 6.452 0 11.425-3.109 11.425-7.508.023-5.299-7.163-9.076-12.806-9.076Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Hilton</title><path d="M16.123 14.234c0-1.544-1.06-2.788-2.972-3.386V7.347h3.57v8.59h-1.105a2.993 2.993 0 0 0 .506-1.703M11.194 3.708C4.744 3.708 0 7.808 0 12.184c0 2.257 1.267 4.168 2.88 5.481l.114-.092a6.369 6.369 0 0 1-2.418-4.95C.92 7.83 6.818 5.134 12.092 5.134c3.709 0 10.388.85 10.388 7.072 0 3.247-3.455 7.462-10.733 7.462-3.731 0-6.61-2.004-6.61-4.86 0-2.487 1.935-4.26 4.836-4.26a7.83 7.83 0 0 1 2.12.345c-1.199-.207-3.087.092-4.055.85v4.192h3.57v-4.743a4.064 4.064 0 0 1 1.543.6v4.192h.922a3.83 3.83 0 0 1-3.27 1.126v.184c3.385.276 4.813-1.336 4.813-3.156 0-2.118-2.004-3.362-4.03-3.639V7.347h-3.57v3.179c-2.304.46-4.561 1.842-4.561 4.1 0 3.501 4.883 5.666 9.12 5.666 6.452 0 11.425-3.109 11.425-7.508.023-5.299-7.163-9.076-12.806-9.076Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/hipchat.svg b/assets/lib/simple-icons/icons/hipchat.svg
deleted file mode 100644
index 22ccf54b..00000000
--- a/assets/lib/simple-icons/icons/hipchat.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>HipChat icon</title><path d="M19.736 19.056s.103-.073.267-.198C22.46 16.958 24 14.203 24 11.139 24 5.424 18.627.787 12.003.787 5.377.787 0 5.424 0 11.139c0 5.717 5.371 10.356 11.998 10.356.847 0 1.694-.073 2.524-.228l.262-.045c1.683 1.092 4.139 1.99 6.288 1.99.665 0 .978-.546.552-1.104-.648-.795-1.541-2.068-1.888-3.052zm-1.462-4.526c-.716 1.069-2.934 2.889-6.254 2.889h-.046c-3.328 0-5.543-1.831-6.254-2.889a1.137 1.137 0 0 1-.273-.574.49.49 0 0 1 .447-.526c.008-.003.014-.003.021-.003.117.006.23.043.328.111a9.137 9.137 0 0 0 5.754 2.056 8.805 8.805 0 0 0 5.76-2.059.461.461 0 0 1 .313-.122c.267 0 .478.213.483.475a1.321 1.321 0 0 1-.268.643h-.011z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/hitachi.svg b/assets/lib/simple-icons/icons/hitachi.svg
index a40dba50..c5197a4f 100644
--- a/assets/lib/simple-icons/icons/hitachi.svg
+++ b/assets/lib/simple-icons/icons/hitachi.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Hitachi icon</title><path d="M17.787 11.41h-1.026a.852.852 0 00-.052-.284.714.714 0 00-.459-.427 1.417 1.417 0 00-.913.019.89.89 0 00-.535.542 2.318 2.318 0 00-.04 1.425.88.88 0 00.535.584 1.492 1.492 0 00.977.027.705.705 0 00.428-.384.976.976 0 00.08-.396h1.031a2.198 2.198 0 01-.049.351c-.09.365-.346.672-.684.814a3.254 3.254 0 01-2.251.104c-.477-.15-.89-.493-1.054-.96a2.375 2.375 0 01-.133-.788c0-.388.068-.764.254-1.077.192-.321.486-.569.842-.701a3.062 3.062 0 012.318.063 1.2 1.2 0 01.698.853c.017.076.028.156.033.235zm-3.979 2.436H12.72l-.32-.793h-1.834c-.001.001-.315.794-.319.793h-1.09l1.727-3.693c0 .002 1.199 0 1.199 0l1.725 3.693zm5.483.001h-.977s.005-3.693 0-3.693h.977v1.477h1.976c0 .005-.002-1.478 0-1.477h.979s.003 3.686 0 3.693h-.979v-1.626c0 .005-1.976 0-1.976 0 .002.007 0 1.624 0 1.626zm-18.312 0H0s.005-3.693 0-3.693h.979s-.002 1.487 0 1.477h1.976c0 .005-.004-1.478 0-1.477h.978s.004 3.686 0 3.693h-.978v-1.626c0 .005-1.976 0-1.976 0 0 .007-.002 1.625 0 1.626zm7.531-.001h-.977v-3.065H6.036s.002-.626 0-.627c.002.001 3.971 0 3.971 0v.627H8.51v3.065zm-3.801-3.692h.977v3.692h-.977v-3.692zm18.312 0H24v3.692h-.979v-3.692zm-11.537.627l-.681 1.68h1.361l-.68-1.68z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Hitachi</title><path d="M17.787 11.41h-1.026a.852.852 0 00-.052-.284.714.714 0 00-.459-.427 1.417 1.417 0 00-.913.019.89.89 0 00-.535.542 2.318 2.318 0 00-.04 1.425.88.88 0 00.535.584 1.492 1.492 0 00.977.027.705.705 0 00.428-.384.976.976 0 00.08-.396h1.031a2.198 2.198 0 01-.049.351c-.09.365-.346.672-.684.814a3.254 3.254 0 01-2.251.104c-.477-.15-.89-.493-1.054-.96a2.375 2.375 0 01-.133-.788c0-.388.068-.764.254-1.077.192-.321.486-.569.842-.701a3.062 3.062 0 012.318.063 1.2 1.2 0 01.698.853c.017.076.028.156.033.235zm-3.979 2.436H12.72l-.32-.793h-1.834c-.001.001-.315.794-.319.793h-1.09l1.727-3.693c0 .002 1.199 0 1.199 0l1.725 3.693zm5.483.001h-.977s.005-3.693 0-3.693h.977v1.477h1.976c0 .005-.002-1.478 0-1.477h.979s.003 3.686 0 3.693h-.979v-1.626c0 .005-1.976 0-1.976 0 .002.007 0 1.624 0 1.626zm-18.312 0H0s.005-3.693 0-3.693h.979s-.002 1.487 0 1.477h1.976c0 .005-.004-1.478 0-1.477h.978s.004 3.686 0 3.693h-.978v-1.626c0 .005-1.976 0-1.976 0 0 .007-.002 1.625 0 1.626zm7.531-.001h-.977v-3.065H6.036s.002-.626 0-.627c.002.001 3.971 0 3.971 0v.627H8.51v3.065zm-3.801-3.692h.977v3.692h-.977v-3.692zm18.312 0H24v3.692h-.979v-3.692zm-11.537.627l-.681 1.68h1.361l-.68-1.68z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/hive.svg b/assets/lib/simple-icons/icons/hive.svg
index c4ed8601..4a14bd1e 100644
--- a/assets/lib/simple-icons/icons/hive.svg
+++ b/assets/lib/simple-icons/icons/hive.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Hive icon</title><path d="M19.442 21.355c.55-.19.74-.256.99-.373.342-.152.605-.39.605-.818a.846.846 0 00-.605-.813c-.318-.092-.703.042-.99.122l-5.42 1.46a7.808 7.808 0 01-4.057 0l-5.407-1.46c-.287-.08-.672-.214-.99-.122a.847.847 0 00-.605.813c0 .427.263.666.605.818.25.117.44.184.99.373l5.138 1.79c1.491.52 3.104.52 4.601 0zm-9.263-3.224a7.622 7.622 0 003.636 0l8.01-1.967c.507-.122.709-.165.99-.257.354-.116.605-.415.605-.806a.847.847 0 00-.605-.813c-.281-.08-.697.024-.99.08l-8.664 1.545a6.813 6.813 0 01-2.334 0l-8.652-1.545c-.293-.056-.708-.16-.99-.08a.847.847 0 00-.604.813c0 .39.25.69.604.806.282.092.483.135.99.257zM14.75.621a24.43 24.43 0 00-5.511 0L6.495.933c-.294.03-.715.055-.99.14-.28.092-.605.355-.605.807 0 .39.257.702.605.806.281.08.696.074.99.074h11.01c.293 0 .709.006.99-.074a.835.835 0 00.605-.806c0-.452-.324-.715-.605-.807-.275-.085-.697-.11-.99-.14zm6.037 6.767c.3-.019.709-.037.99-.116a.84.84 0 000-1.614c-.281-.085-.69-.073-.99-.073H3.214c-.3 0-.709-.012-.99.073a.84.84 0 000 1.614c.281.079.69.097.99.116l7.808.556c.642.042 1.308.042 1.943 0zm1.62 4.242c.513-.08.708-.104.989-.202.354-.121.605-.409.605-.806a.84.84 0 00-.605-.806c-.28-.086-.69-.019-.99.012l-9.232.929c-.776.079-1.582.079-2.358 0l-9.22-.93c-.3-.03-.715-.097-.99-.011a.84.84 0 00-.605.806c0 .397.25.685.605.806.275.092.476.123.99.202l8.823 1.418c1.038.165 2.12.165 3.158 0Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Hive</title><path d="M19.442 21.355c.55-.19.74-.256.99-.373.342-.152.605-.39.605-.818a.846.846 0 00-.605-.813c-.318-.092-.703.042-.99.122l-5.42 1.46a7.808 7.808 0 01-4.057 0l-5.407-1.46c-.287-.08-.672-.214-.99-.122a.847.847 0 00-.605.813c0 .427.263.666.605.818.25.117.44.184.99.373l5.138 1.79c1.491.52 3.104.52 4.601 0zm-9.263-3.224a7.622 7.622 0 003.636 0l8.01-1.967c.507-.122.709-.165.99-.257.354-.116.605-.415.605-.806a.847.847 0 00-.605-.813c-.281-.08-.697.024-.99.08l-8.664 1.545a6.813 6.813 0 01-2.334 0l-8.652-1.545c-.293-.056-.708-.16-.99-.08a.847.847 0 00-.604.813c0 .39.25.69.604.806.282.092.483.135.99.257zM14.75.621a24.43 24.43 0 00-5.511 0L6.495.933c-.294.03-.715.055-.99.14-.28.092-.605.355-.605.807 0 .39.257.702.605.806.281.08.696.074.99.074h11.01c.293 0 .709.006.99-.074a.835.835 0 00.605-.806c0-.452-.324-.715-.605-.807-.275-.085-.697-.11-.99-.14zm6.037 6.767c.3-.019.709-.037.99-.116a.84.84 0 000-1.614c-.281-.085-.69-.073-.99-.073H3.214c-.3 0-.709-.012-.99.073a.84.84 0 000 1.614c.281.079.69.097.99.116l7.808.556c.642.042 1.308.042 1.943 0zm1.62 4.242c.513-.08.708-.104.989-.202.354-.121.605-.409.605-.806a.84.84 0 00-.605-.806c-.28-.086-.69-.019-.99.012l-9.232.929c-.776.079-1.582.079-2.358 0l-9.22-.93c-.3-.03-.715-.097-.99-.011a.84.84 0 00-.605.806c0 .397.25.685.605.806.275.092.476.123.99.202l8.823 1.418c1.038.165 2.12.165 3.158 0Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/hive_blockchain.svg b/assets/lib/simple-icons/icons/hive_blockchain.svg
new file mode 100644
index 00000000..49cf33e9
--- /dev/null
+++ b/assets/lib/simple-icons/icons/hive_blockchain.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Hive</title><path d="M6.076 1.637a.103.103 0 00-.09.05L.014 11.95a.102.102 0 000 .104l6.039 10.26c.04.068.14.068.18 0l5.972-10.262a.102.102 0 00-.002-.104L6.166 1.687a.103.103 0 00-.09-.05zm2.863 0c-.079 0-.13.085-.09.154l5.186 8.967a.105.105 0 00.09.053h3.117c.08 0 .13-.088.09-.157l-5.186-8.966a.104.104 0 00-.09-.051H8.94zm5.891 0a.102.102 0 00-.088.154L20.656 12l-5.914 10.209a.102.102 0 00.088.154h3.123a.1.1 0 00.088-.05l5.945-10.262a.1.1 0 000-.102L18.041 1.688a.1.1 0 00-.088-.051H14.83zm-.79 11.7a.1.1 0 00-.089.052l-5.101 8.82c-.04.069.01.154.09.154h3.117a.104.104 0 00.09-.05l5.1-8.82a.103.103 0 00-.09-.155h-3.118z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/hockeyapp.svg b/assets/lib/simple-icons/icons/hockeyapp.svg
deleted file mode 100644
index c7dd0072..00000000
--- a/assets/lib/simple-icons/icons/hockeyapp.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>HockeyApp icon</title><path d="M21.794 15.002c.075-.057.181-.007.194.083.006.057.012.114.012.171C22 16.842 18.669 19 12 19c-6.669 0-10-2.158-10-3.737 0-.057.006-.115.013-.166a.12.12 0 0 1 .193-.082c1.656 1.19 4.919 2.209 9.794 2.209 4.881 0 8.144-1.019 9.794-2.222zM12 14.168c-5.406 0-8.988-1.229-10.738-2.649a.122.122 0 0 0-.187.039c-.094.178-.137.369-.137.56 0 1.75 3.687 4.087 11.062 4.087s11.063-2.33 11.063-4.087c0-.198-.044-.382-.138-.56a.122.122 0 0 0-.188-.039c-1.75 1.42-5.33 2.649-10.737 2.649zm12-5.73c0 2.018-4 4.711-12 4.711S0 10.456 0 8.438C0 6.42 4 5 12 5s12 1.42 12 3.438zm-3.5-.318c0-1.013-2.831-1.592-8.5-1.592-5.669 0-8.5.58-8.5 1.592s2.831 2.483 8.5 2.483c5.669 0 8.5-1.471 8.5-2.483z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/homeadvisor.svg b/assets/lib/simple-icons/icons/homeadvisor.svg
new file mode 100644
index 00000000..5aa2385a
--- /dev/null
+++ b/assets/lib/simple-icons/icons/homeadvisor.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>HomeAdvisor</title><path d="M15.98 2.442H8.02L0 10.46h2.275l6.882-6.88 6.881 6.881H24l-8.02-8.018m-.492 9.348L9.157 5.459 4.01 10.605v4.987a1.33 1.33 0 0 0 1.329 1.329h6.077l4.637 4.637v-4.637h2.598a1.33 1.33 0 0 0 1.33-1.33V11.79h-4.494Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/homeassistant.svg b/assets/lib/simple-icons/icons/homeassistant.svg
index 8513241e..1b8e373b 100644
--- a/assets/lib/simple-icons/icons/homeassistant.svg
+++ b/assets/lib/simple-icons/icons/homeassistant.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Home Assistant icon</title><path d="M11.9922 1.3945a.7041.7041 0 00-.498.211L.1621 13.0977A.5634.5634 0 000 13.494a.567.567 0 00.5664.5664H2.67v8.0743c0 .2603.2104.4707.4707.4707h7.9473v-3.6836L8.037 15.8672a2.42 2.42 0 01-.9473.1933c-1.3379 0-2.4218-1.0868-2.4218-2.4257 0-1.339 1.084-2.4239 2.4218-2.4239 1.338 0 2.422 1.085 2.422 2.4239 0 .3359-.068.6563-.1915.9472l1.7676 1.7676v-5.375C10.2 10.615 9.5723 9.744 9.5723 8.7266c0-1.339 1.0859-2.4258 2.4238-2.4258 1.338 0 2.4219 1.0868 2.4219 2.4258 0 1.0174-.6259 1.8884-1.5137 2.248v5.375l1.7656-1.7676a2.4205 2.4205 0 01-.1914-.9472c0-1.339 1.086-2.4239 2.4238-2.4239 1.338 0 2.422 1.085 2.422 2.4239 0 1.3389-1.084 2.4257-2.422 2.4257a2.42 2.42 0 01-.9472-.1933l-3.0508 3.0547v3.6836h7.9473a.4702.4702 0 00.4707-.4707v-8.0743h2.1113a.5686.5686 0 00.3965-.162c.2233-.2185.2262-.5775.0078-.8008l-2.5156-2.5723V6.4707c0-.2603-.2104-.4727-.4707-.4727h-1.9649c-.2603 0-.4707.2124-.4707.4727v1.1035L12.5 1.6035a.7056.7056 0 00-.5078-.209zm.0039 6.3614c-.5352 0-.9688.4351-.9688.9707 0 .5355.4336.9687.9688.9687a.9683.9683 0 00.9687-.9687c0-.5356-.4335-.9707-.9687-.9707zM7.0898 12.666a.9683.9683 0 00-.9687.9688c0 .5355.4336.9707.9687.9707.5352 0 .9688-.4352.9688-.9707a.9683.9683 0 00-.9688-.9688zm9.8125 0c-.5351 0-.9707.4332-.9707.9688 0 .5355.4356.9707.9707.9707.5352 0 .9688-.4352.9688-.9707a.9683.9683 0 00-.9688-.9688Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Home Assistant</title><path d="M11.9922 1.3945a.7041.7041 0 00-.498.211L.1621 13.0977A.5634.5634 0 000 13.494a.567.567 0 00.5664.5664H2.67v8.0743c0 .2603.2104.4707.4707.4707h7.9473v-3.6836L8.037 15.8672a2.42 2.42 0 01-.9473.1933c-1.3379 0-2.4218-1.0868-2.4218-2.4257 0-1.339 1.084-2.4239 2.4218-2.4239 1.338 0 2.422 1.085 2.422 2.4239 0 .3359-.068.6563-.1915.9472l1.7676 1.7676v-5.375C10.2 10.615 9.5723 9.744 9.5723 8.7266c0-1.339 1.0859-2.4258 2.4238-2.4258 1.338 0 2.4219 1.0868 2.4219 2.4258 0 1.0174-.6259 1.8884-1.5137 2.248v5.375l1.7656-1.7676a2.4205 2.4205 0 01-.1914-.9472c0-1.339 1.086-2.4239 2.4238-2.4239 1.338 0 2.422 1.085 2.422 2.4239 0 1.3389-1.084 2.4257-2.422 2.4257a2.42 2.42 0 01-.9472-.1933l-3.0508 3.0547v3.6836h7.9473a.4702.4702 0 00.4707-.4707v-8.0743h2.1113a.5686.5686 0 00.3965-.162c.2233-.2185.2262-.5775.0078-.8008l-2.5156-2.5723V6.4707c0-.2603-.2104-.4727-.4707-.4727h-1.9649c-.2603 0-.4707.2124-.4707.4727v1.1035L12.5 1.6035a.7056.7056 0 00-.5078-.209zm.0039 6.3614c-.5352 0-.9688.4351-.9688.9707 0 .5355.4336.9687.9688.9687a.9683.9683 0 00.9687-.9687c0-.5356-.4335-.9707-.9687-.9707zM7.0898 12.666a.9683.9683 0 00-.9687.9688c0 .5355.4336.9707.9687.9707.5352 0 .9688-.4352.9688-.9707a.9683.9683 0 00-.9688-.9688zm9.8125 0c-.5351 0-.9707.4332-.9707.9688 0 .5355.4356.9707.9707.9707.5352 0 .9688-.4352.9688-.9707a.9683.9683 0 00-.9688-.9688Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/homeassistantcommunitystore.svg b/assets/lib/simple-icons/icons/homeassistantcommunitystore.svg
new file mode 100644
index 00000000..5e384f8d
--- /dev/null
+++ b/assets/lib/simple-icons/icons/homeassistantcommunitystore.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Home Assistant Community Store</title><path d="M1.63.47a.393.393 0 0 0-.39.39v2.417c0 .212.177.39.39.39h20.74c.213 0 .39-.178.39-.39V.859a.393.393 0 0 0-.39-.39zm-.045 4.126a.41.41 0 0 0-.407.337l-1.17 6.314C0 11.274 0 11.3 0 11.327v2.117c0 .23.186.416.416.416h23.168c.23 0 .416-.186.416-.416v-2.126c0-.027 0-.053-.009-.08l-1.169-6.305a.41.41 0 0 0-.407-.337zM1.7 14.781a.457.457 0 0 0-.46.46v7.829c0 .257.203.46.46.46h14.108c.257 0 .46-.203.46-.46v-6.589c0-.257.204-.46.461-.46h4.02c.258 0 .461.203.461.46v6.589c0 .257.204.46.46.46h.62a.456.456 0 0 0 .461-.46v-7.829a.458.458 0 0 0-.46-.46zm1.842 1.55h7.847c.212 0 .39.177.39.39V21.6c0 .212-.178.39-.39.39H3.542a.393.393 0 0 1-.39-.39v-4.88c0-.221.178-.39.39-.39Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/homebrew.svg b/assets/lib/simple-icons/icons/homebrew.svg
new file mode 100644
index 00000000..71d0ae28
--- /dev/null
+++ b/assets/lib/simple-icons/icons/homebrew.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Homebrew</title><path d="M7.938 0a.214.214 0 0 0-.206.156c-.316 1.104.179 2.15.838 2.935.153.181.313.347.476.501a2.039 2.039 0 0 0-.665.02c-1.184.233-2.193.985-2.74 2.532a3.893 3.893 0 0 0-.2 1.466 1.565 1.565 0 0 0-1.156 1.504 1.59 1.59 0 0 0 1.227 1.541l.026 12.046c0 .195.1.377.264.482a.214.214 0 0 0 .008.005c.537.31 2.047.812 5.21.812 3.238 0 4.7-.678 5.181-1.04a.214.214 0 0 0 .008-.007.571.571 0 0 0 .206-.439c.002-.344.002-1.136.002-1.604a.143.143 0 0 1 .147-.144c.397.006.869.006 1.318.005a1.826 1.826 0 0 0 1.832-1.825v-5.804a1.826 1.826 0 0 0-1.825-1.826H16.56a.14.14 0 0 1-.143-.144V10.6h.007v-.001a1.573 1.573 0 0 0 1.356-1.556c0-.816-.627-1.489-1.424-1.563-.025-1.438-.437-2.126-.736-2.58a.214.214 0 0 0-.005-.007c-.364-.51-1.193-1.282-2.275-1.316-.503-.016-.842.124-1.125.254-.217.1-.42.177-.67.22.002-1.286.945-1.981.945-1.981a.214.214 0 0 0 .05-.298s-.087-.122-.21-.26c-.121-.136-.269-.294-.47-.378a.214.214 0 0 0-.079-.017.214.214 0 0 0-.145.055 4.308 4.308 0 0 0-.875 1.101 3.42 3.42 0 0 0-.133.273 3.497 3.497 0 0 0-.381-.846C9.794.978 9.063.436 8.017.016A.214.214 0 0 0 7.939 0zm.156.524c.85.378 1.43.83 1.79 1.403.274.438.426.962.484 1.584a3.07 3.07 0 0 0-.012.462 6.897 6.897 0 0 1-.168-.052 5.487 5.487 0 0 1-1.29-1.106c-.551-.657-.935-1.46-.804-2.291zM11.8 1.618c.07.054.141.101.212.18.034.039.032.04.058.073-.332.308-1.07 1.144-.952 2.453a.214.214 0 0 0 .222.195c.469-.017.782-.172 1.056-.299.273-.126.508-.228.931-.214.875.027 1.639.715 1.939 1.134.295.449.65 1 .663 2.36a1.66 1.66 0 0 0-.41.142 1.938 1.938 0 0 0-1.77-1.16 1.94 1.94 0 0 0-1.87 1.448 1.783 1.783 0 0 0-1.356-.64c-.484 0-.91.205-1.233.517a1.873 1.873 0 0 0-1.85-1.625c-.649 0-1.218.335-1.552.84a3.1 3.1 0 0 1 .157-.735c.51-1.437 1.355-2.045 2.42-2.254.367-.073.664-.011.99.095.325.106.671.262 1.094.342a.214.214 0 0 0 .252-.245c-.112-.67.073-1.266.336-1.744a3.71 3.71 0 0 1 .663-.863zM7.44 6.611a1.442 1.442 0 0 1 1.363 1.925.214.214 0 0 0 .168.283h.005a.214.214 0 0 0 .238-.146 1.373 1.373 0 0 1 2.613-.01.214.214 0 0 0 .417-.09 1.509 1.509 0 0 1 1.504-1.664c.678 0 1.249.445 1.442 1.056a.214.214 0 0 0 .259.143l.15-.04a.214.214 0 0 0 .051-.02 1.139 1.139 0 0 1 1.702.995 1.14 1.14 0 0 1-.985 1.131.214.214 0 0 0-.001 0 2.215 2.215 0 0 0-.485.126 10.65 10.65 0 0 1-1.176.365.214.214 0 0 0-.162.186 1.276 1.276 0 0 1-.146.478 2.07 2.07 0 0 0-.239 1.111l.001.151a.438.438 0 0 1-.16.36.665.665 0 0 1-.43.14.586.586 0 0 1-.588-.59.803.803 0 0 0-.38-.681.214.214 0 0 0-.002-.002c-.24-.145-.43-.37-.532-.636a.214.214 0 0 0-.207-.138 19.469 19.469 0 0 1-5.37-.6l-.003-.002a9.007 9.007 0 0 0-.838-.194h.003a1.16 1.16 0 0 1-.937-1.134c0-.619.488-1.118 1.101-1.14a.214.214 0 0 0 .204-.176 1.443 1.443 0 0 1 1.42-1.187zm8.549 4.106v.455c0 .314.259.573.572.573h1.329a1.397 1.397 0 0 1 1.397 1.397v5.804a1.396 1.396 0 0 1-1.402 1.396.214.214 0 0 0-.002 0c-.448.002-.918 0-1.31-.005a.573.573 0 0 0-.584.573c0 .468 0 1.262-.002 1.603a.214.214 0 0 0 0 .001c0 .042-.019.08-.05.107-.346.26-1.75.95-4.915.95-3.107 0-4.587-.52-4.99-.752a.143.143 0 0 1-.065-.118l-.025-11.955c.145.033.288.07.431.11a.214.214 0 0 0 .003 0c.115.031.246.064.383.097v10.37c0 .129.069.247.18.31.453.217 1.767.732 4.071.732 2.32 0 3.595-.626 4.022-.884a.357.357 0 0 0 .164-.3l.001-10.21c.267-.075.531-.158.792-.254zm-7.99.894a.493.493 0 0 1 .494.493v8.578a.493.493 0 0 1-.493.493.493.493 0 0 1-.494-.493v-8.578A.493.493 0 0 1 8 11.611zm8.652 1.14a.663.663 0 0 0-.662.662v5.208a.663.663 0 0 0 .662.662h1.14a.663.663 0 0 0 .662-.662v-5.209a.663.663 0 0 0-.662-.662zm0 .428h1.14a.233.233 0 0 1 .233.233v5.21a.233.233 0 0 1-.233.232h-1.14a.233.233 0 0 1-.233-.233v-5.209a.233.233 0 0 1 .233-.233z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/homebridge.svg b/assets/lib/simple-icons/icons/homebridge.svg
new file mode 100644
index 00000000..fdb65a81
--- /dev/null
+++ b/assets/lib/simple-icons/icons/homebridge.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Homebridge</title><path d="M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0zm8.116 12.262a.74.74 0 0 1-.741-.74c0-.008.005-.016.005-.025l-1.46-1.46a1.31 1.31 0 0 1-.38-.917V5.731a.285.285 0 0 0-.284-.283h-.915a.284.284 0 0 0-.284.283v2.413L12.17 4.383a.284.284 0 0 0-.4.003L4.438 11.72a.283.283 0 0 0 0 .4l.696.697a.286.286 0 0 0 .4 0l5.635-5.552a1.302 1.302 0 0 1 1.83.008l5.525 5.525a1.3 1.3 0 0 1 0 1.836l-.679.68a1.305 1.305 0 0 1-1.824.012l-3.876-3.766a.283.283 0 0 0-.4.004l-3.723 3.74a.285.285 0 0 0 0 .4l.687.69a.283.283 0 0 0 .4 0l2.013-1.986a1.302 1.302 0 0 1 1.824 0l1.994 1.96.007.007a1.299 1.299 0 0 1 0 1.837l-1.985 1.984v.013a.74.74 0 1 1-.74-.741c.009 0 .016.005.025.005l1.975-1.98a.284.284 0 0 0 .084-.201.28.28 0 0 0-.085-.2l-1.995-1.96a.285.285 0 0 0-.4 0l-2.006 1.98a1.3 1.3 0 0 1-1.83-.004l-.69-.689a1.301 1.301 0 0 1 0-1.834l3.72-3.74a1.303 1.303 0 0 1 1.826-.016l3.879 3.758a.285.285 0 0 0 .4 0l.679-.679a.285.285 0 0 0 0-.4L12.28 7.986a.284.284 0 0 0-.4 0l-5.637 5.555a1.301 1.301 0 0 1-1.829-.008l-.698-.694-.002-.003a1.296 1.296 0 0 1 .002-1.834l7.334-7.334a1.305 1.305 0 0 1 1.821-.015l2.166 2.097v-.019a1.3 1.3 0 0 1 1.299-1.298h.916a1.3 1.3 0 0 1 1.298 1.298v3.384a.282.282 0 0 0 .083.2l1.467 1.467h.014a.74.74 0 0 1 .001 1.48z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/homify.svg b/assets/lib/simple-icons/icons/homify.svg
index 586cc809..ee3bef66 100644
--- a/assets/lib/simple-icons/icons/homify.svg
+++ b/assets/lib/simple-icons/icons/homify.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>homify icon</title><path d="M20.5 10.562v.053l-.004.05c-.09 2.328-.058 11.357-.057 11.822.002 1.078-.84 1.943-1.62 1.283l-7.076-5.53c-2.224 2.302-4.358 4.495-4.808 4.925-.992.946-1.81-1.327-1.06-1.808.068-.042 2.254-1.95 4.674-4.05l-5.24-4.095c-.454-.355-.628-.945-.368-1.26.09-.085.21-.13.332-.127.056.002.112.014.165.038 1.62.72 4.015 2.492 6.4 4.327 2.486-2.15 4.873-4.19 5.186-4.363.388-.214.49.353.36.516-.132.166-2.2 2.326-4.467 4.68 2.233 1.73 4.352 3.386 5.69 4.135l.22-10.62c-.174-.207-5.406-7.163-5.973-7.748-.905.782-5.645 6.114-5.884 6.344 1.082.108 5.676.382 8.57.683.73.07 1.216.606-.35.592L3.93 10.392c-.176-.006-.333-.11-.398-.267-.066-.157-.028-.336.096-.456.06-.058 8.153-8.923 8.832-9.487.154-.127.317-.188.487-.183.23.008.416.144.492.227.084.077 4.35 5.94 6.432 8.8.498.678.624 1.137.628 1.502v.032z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>homify</title><path d="M20.383 10.561a1.727 1.727 0 0 1 0 .055l-.004.048c-.088 2.33-.057 11.357-.057 11.823.002 1.078-.826 1.943-1.596 1.283l-6.98-5.53a373.72 373.72 0 0 1-4.742 4.925c-.977.946-1.786-1.327-1.045-1.808.066-.042 2.223-1.95 4.61-4.05L5.4 13.214c-.446-.356-.618-.946-.363-1.261a.46.46 0 0 1 .328-.127.47.47 0 0 1 .164.037c1.596.722 3.962 2.492 6.314 4.329 2.45-2.15 4.805-4.191 5.116-4.364.38-.214.48.354.354.516-.131.166-2.169 2.326-4.408 4.678 2.204 1.732 4.294 3.389 5.614 4.137l.217-10.62c-.17-.206-5.332-7.163-5.892-7.746-.892.78-5.566 6.112-5.802 6.342 1.067.11 5.597.382 8.452.684.721.07 1.2.606-.346.59l-11.105-.015a.44.44 0 0 1-.394-.267.415.415 0 0 1 .094-.457C3.8 9.613 11.782.748 12.454.184A.702.702 0 0 1 12.935 0a.732.732 0 0 1 .483.227c.083.077 4.292 5.94 6.344 8.802.492.678.617 1.137.621 1.5z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/honda.svg b/assets/lib/simple-icons/icons/honda.svg
index 85d79e3a..df40d94c 100644
--- a/assets/lib/simple-icons/icons/honda.svg
+++ b/assets/lib/simple-icons/icons/honda.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Honda icon</title><path d="M23.903 6.87c-.329-3.219-2.47-3.896-4.354-4.205-.946-.16-2.63-.299-3.716-.339-.946-.06-3.168-.09-3.835-.09-.658 0-2.89.03-3.836.09-1.076.04-2.77.18-3.716.339C2.563 2.984.42 3.66.092 6.869c-.08.877-.1 2.023-.09 3.248.03 2.032.2 3.407.3 4.364.069.657.338 2.62.687 3.636.478 1.395.916 1.803 1.424 2.222.937.757 2.471.996 2.79 1.056 1.733.309 5.24.368 6.785.368 1.544 0 5.05-.05 6.784-.368.329-.06 1.863-.29 2.79-1.056.508-.419.946-.827 1.424-2.222.35-1.016.628-2.979.698-3.636.1-.957.279-2.332.299-4.364.04-1.225.01-2.371-.08-3.248m-1.176 5.4c-.189 2.57-.418 4.105-.747 5.22-.289.977-.637 1.624-1.165 2.093-.867.787-2.063.956-2.76 1.056-1.514.229-4.055.299-6.057.299-2.003 0-4.544-.08-6.058-.3-.697-.099-1.893-.268-2.76-1.055-.518-.469-.876-1.126-1.155-2.093-.329-1.105-.558-2.65-.747-5.22-.11-1.544-.09-4.055.08-5.4.258-2.012 1.255-3.019 3.387-3.397.996-.18 2.34-.309 3.606-.369 1.016-.07 2.7-.1 3.637-.09.936-.01 2.62.03 3.636.09 1.275.06 2.61.19 3.606.369 2.142.378 3.139 1.395 3.388 3.397.199 1.345.229 3.856.11 5.4M17.526 3.88c-.548 2.461-.767 3.587-1.216 5.37-.428 1.714-.767 3.298-1.335 4.065-.587.777-1.365.947-1.893 1.006-.279.03-.478.04-1.066.05-.597 0-.797-.02-1.076-.05-.528-.06-1.315-.229-1.892-1.006-.578-.767-.907-2.351-1.335-4.065-.469-1.773-.678-2.909-1.236-5.37 0 0-.548.02-.797.04-.329.02-.588.05-.867.09 0 0 .32 5.061.459 7.203.15 2.252.418 6.057.667 8.927 0 0 .458.07 1.226.12.807.049 1.165.049 1.165.049.329-1.265.747-3.019 1.206-3.766.378-.608.966-.677 1.295-.717.518-.07.956-.08 1.166-.08.199-.01.637 0 1.165.08.329.05.917.11 1.295.717.469.747.877 2.5 1.206 3.766 0 0 .358-.01 1.165-.05a11.35 11.35 0 001.226-.12c.249-2.869.518-6.665.667-8.926.14-2.142.459-7.203.459-7.203-.28-.04-.538-.07-.867-.09-.23-.02-.787-.04-.787-.04Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Honda</title><path d="M23.902 6.87c-.33-3.218-2.47-3.895-4.354-4.204-.946-.16-2.63-.3-3.716-.34-.946-.06-3.168-.09-3.835-.09-.657 0-2.89.03-3.835.09-1.076.04-2.77.18-3.716.34C2.563 2.985.42 3.66.092 6.87c-.08.877-.1 2.023-.09 3.248.03 2.031.2 3.406.3 4.363.07.657.338 2.62.687 3.636.478 1.395.916 1.803 1.424 2.222.937.757 2.471.996 2.79 1.056 1.733.31 5.24.368 6.784.368 1.544 0 5.05-.05 6.784-.368.329-.06 1.863-.29 2.79-1.056.508-.419.946-.827 1.424-2.222.35-1.016.628-2.979.698-3.636.1-.957.279-2.332.299-4.363.04-1.225.01-2.371-.08-3.248m-1.176 5.4c-.19 2.57-.418 4.104-.747 5.22-.29.976-.637 1.623-1.165 2.092-.867.787-2.063.956-2.76 1.056-1.514.23-4.055.3-6.057.3-2.002 0-4.543-.08-6.057-.3-.697-.1-1.893-.269-2.76-1.056-.518-.469-.876-1.126-1.155-2.093-.329-1.105-.558-2.65-.747-5.22-.11-1.543-.09-4.054.08-5.4.258-2.011 1.255-3.018 3.387-3.396.996-.18 2.34-.31 3.606-.37 1.016-.07 2.7-.1 3.636-.09.936-.01 2.62.03 3.636.09 1.275.06 2.61.19 3.606.37 2.142.378 3.139 1.395 3.388 3.397.199 1.345.229 3.856.11 5.4m-5.202-8.39c-.548 2.462-.767 3.588-1.216 5.37-.428 1.715-.767 3.298-1.335 4.065-.587.777-1.365.947-1.893 1.006-.279.03-.478.04-1.066.05-.596 0-.796-.02-1.075-.05-.528-.06-1.315-.229-1.892-1.006-.578-.767-.907-2.35-1.335-4.064-.47-1.773-.678-2.91-1.236-5.37 0 0-.548.02-.797.04-.329.02-.588.05-.867.09.343 5.372.692 11.079 1.126 16.13a21.983 21.983 0 002.39.169c.33-1.266.748-3.02 1.207-3.767.378-.608.966-.677 1.295-.717.518-.07.956-.08 1.165-.08.2-.01.637 0 1.165.08.33.05.917.11 1.295.717.47.747.877 2.5 1.206 3.766 0 0 .358-.01 1.165-.05.41-.018.82-.058 1.226-.12.458-5.39.785-10.728 1.126-16.128-.28-.04-.538-.07-.867-.09-.23-.02-.787-.04-.787-.04z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/hootsuite.svg b/assets/lib/simple-icons/icons/hootsuite.svg
index b8d79d42..63636dd6 100644
--- a/assets/lib/simple-icons/icons/hootsuite.svg
+++ b/assets/lib/simple-icons/icons/hootsuite.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Hootsuite icon</title><path d="M12.002 0h.023c1.311.004 2.603.322 3.766.928C16.948.332 18.23.022 19.532.022h.676V24l-.656-.002C15.369 24 11.356 22.336 8.4 19.373 5.43 16.43 3.77 12.414 3.791 8.23V.021h.677c1.301 0 2.586.311 3.741.906C9.381.318 10.682 0 12.002 0zm0 .654c-1.381 0-2.676.373-3.791 1.021-1.138-.655-2.428-1.001-3.742-1h-.022V8.23c-.025 8.35 6.764 15.09 15.107 15.113V.675h-.022c-1.313-.001-2.604.343-3.743.999-1.144-.666-2.443-1.018-3.766-1.02h-.021zm3.252 2.754c1.79.002 3.238 1.453 3.237 3.242-.003 1.791-1.454 3.238-3.244 3.236-.616 0-1.22-.176-1.739-.508l-1.516 1.508-1.507-1.516c-1.514.952-3.515.495-4.465-1.02-.952-1.516-.495-3.516 1.021-4.467s3.516-.494 4.467 1.022c.273.437.44.933.483 1.446l.016-.02.015.018c.154-1.667 1.556-2.945 3.232-2.941zM8.76 8.789c1.192.006 2.163-.959 2.168-2.15.001-.219-.031-.436-.096-.644-.243.544-.882.788-1.426.546-.545-.244-.79-.883-.546-1.428.109-.243.304-.437.548-.547-1.137-.355-2.347.276-2.705 1.414-.066.207-.099.424-.1.642-.003 1.192.96 2.163 2.153 2.167h.004zm6.478.019c1.193.003 2.163-.962 2.166-2.155s-.963-2.162-2.155-2.164c-.216-.002-.431.03-.638.094.545.244.789.883.547 1.428-.244.543-.883.787-1.428.545-.245-.109-.439-.307-.549-.553-.355 1.139.279 2.352 1.417 2.707.209.063.423.097.64.098z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Hootsuite</title><path d="M12.002 0h.023c1.311.004 2.603.322 3.766.928C16.948.332 18.23.022 19.532.022h.676V24l-.656-.002C15.369 24 11.356 22.336 8.4 19.373 5.43 16.43 3.77 12.414 3.791 8.23V.021h.677c1.301 0 2.586.311 3.741.906C9.381.318 10.682 0 12.002 0zm0 .654c-1.381 0-2.676.373-3.791 1.021-1.138-.655-2.428-1.001-3.742-1h-.022V8.23c-.025 8.35 6.764 15.09 15.107 15.113V.675h-.022c-1.313-.001-2.604.343-3.743.999-1.144-.666-2.443-1.018-3.766-1.02h-.021zm3.252 2.754c1.79.002 3.238 1.453 3.237 3.242-.003 1.791-1.454 3.238-3.244 3.236-.616 0-1.22-.176-1.739-.508l-1.516 1.508-1.507-1.516c-1.514.952-3.515.495-4.465-1.02-.952-1.516-.495-3.516 1.021-4.467s3.516-.494 4.467 1.022c.273.437.44.933.483 1.446l.016-.02.015.018c.154-1.667 1.556-2.945 3.232-2.941zM8.76 8.789c1.192.006 2.163-.959 2.168-2.15.001-.219-.031-.436-.096-.644-.243.544-.882.788-1.426.546-.545-.244-.79-.883-.546-1.428.109-.243.304-.437.548-.547-1.137-.355-2.347.276-2.705 1.414-.066.207-.099.424-.1.642-.003 1.192.96 2.163 2.153 2.167h.004zm6.478.019c1.193.003 2.163-.962 2.166-2.155s-.963-2.162-2.155-2.164c-.216-.002-.431.03-.638.094.545.244.789.883.547 1.428-.244.543-.883.787-1.428.545-.245-.109-.439-.307-.549-.553-.355 1.139.279 2.352 1.417 2.707.209.063.423.097.64.098z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/hoppscotch.svg b/assets/lib/simple-icons/icons/hoppscotch.svg
new file mode 100644
index 00000000..d5c81955
--- /dev/null
+++ b/assets/lib/simple-icons/icons/hoppscotch.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Hoppscotch</title><path d="M17.119 5.505a4.786 4.786 0 0 0-4.016-4.254c-2.188-.342-4.256.854-5.128 2.786-4.494-.278-7.784.257-7.966 1.47-.17 1.041 1.992 2.32 5.383 3.362l.001.006C5.308 8.841.333 22.807.333 22.807h18.803s-1.145-11.966-1.316-11.966c3.539.051 6-.496 6.172-1.539.178-1.188-2.662-2.682-6.873-3.797zm-.375 1.353c-.035.274-.309.479-.582.427s-.479-.308-.428-.581c.053-.273.309-.479.582-.427s.479.307.428.581zm-5.162-1.163a.67.67 0 0 1 .786-.564.67.67 0 0 1 .564.787.715.715 0 0 1-.786.564.67.67 0 0 1-.564-.787zm-3.949-.273c.051-.274.307-.479.581-.427s.479.308.427.581c-.034.273-.308.461-.581.427-.273-.051-.478-.308-.427-.581zm9.521 5.419c-.119.684-2.701.871-5.778.376-3.077-.495-5.47-1.453-5.368-2.153.068-.377.854-.599 2.051-.65-.358.067-.58.204-.614.376-.085.512 1.744 1.247 4.068 1.623 2.342.359 4.29.24 4.375-.291.018-.17-.154-.375-.479-.563 1.13.426 1.814.872 1.745 1.282z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/hotels-dot-com.svg b/assets/lib/simple-icons/icons/hotels-dot-com.svg
deleted file mode 100644
index 195fe54f..00000000
--- a/assets/lib/simple-icons/icons/hotels-dot-com.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Hotels.com icon</title><path d="M20.6672 1.3329c-1.4725 0-2.6661 1.1936-2.6661 2.6662v4.334L11.334 8V3.3326C11.3342 1.4927 9.8415 0 8 0 6.1584 0 4.6672 1.4928 4.6672 3.3327v17.3346C4.6672 22.5088 6.1584 24 8 24s3.3343-1.4912 3.3343-3.3327v-5.3338h6.6669v5.3338c0 1.4726 1.1936 2.6661 2.6661 2.6661 1.4726 0 2.6662-1.1935 2.6662-2.666V3.9991c0-1.4725-1.1936-2.6661-2.6662-2.6661M4 3.333c0-.5379.1085-1.051.3023-1.5206-.975.5812-1.6354 1.6353-1.6354 2.8537v15.335c0 1.4323.9084 2.6429 2.1779 3.114C4.3178 22.4379 4 21.59 4 20.6677zm-1.698-.1874C1.327 3.7269.6666 4.7825.6666 5.9993v12.6673c0 1.2184.6604 2.2724 1.6354 2.8537a3.9658 3.9658 0 0 1-.3023-1.5206V4.6662c0-.5379.1085-1.051.3023-1.5206m15.0318.854c0-.6976.217-1.344.5844-1.8803-1.1052.3256-1.9175 1.3362-1.9175 2.5468v2.9002l1.3331.0668zm0 12.0004h-1.333v4.0008c0 1.2106.8122 2.2212 1.9174 2.5467-.3674-.5363-.5844-1.1827-.5844-1.8802zm-3.3334 3.3335c0 1.2106.8122 2.2212 1.919 2.5467-.369-.5363-.586-1.1827-.586-1.8802v-4.0008h-1.333zm1.3333-14.6671c0-.6976.217-1.344.5844-1.8803-1.1052.3256-1.9174 1.3362-1.9174 2.5468v2.133l1.333.0667Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/hotelsdotcom.svg b/assets/lib/simple-icons/icons/hotelsdotcom.svg
new file mode 100644
index 00000000..82c1e6bd
--- /dev/null
+++ b/assets/lib/simple-icons/icons/hotelsdotcom.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Hotels.com</title><path d="M20.6672 1.3329c-1.4725 0-2.6661 1.1936-2.6661 2.6662v4.334L11.334 8V3.3326C11.3342 1.4927 9.8415 0 8 0 6.1584 0 4.6672 1.4928 4.6672 3.3327v17.3346C4.6672 22.5088 6.1584 24 8 24s3.3343-1.4912 3.3343-3.3327v-5.3338h6.6669v5.3338c0 1.4726 1.1936 2.6661 2.6661 2.6661 1.4726 0 2.6662-1.1935 2.6662-2.666V3.9991c0-1.4725-1.1936-2.6661-2.6662-2.6661M4 3.333c0-.5379.1085-1.051.3023-1.5206-.975.5812-1.6354 1.6353-1.6354 2.8537v15.335c0 1.4323.9084 2.6429 2.1779 3.114C4.3178 22.4379 4 21.59 4 20.6677zm-1.698-.1874C1.327 3.7269.6666 4.7825.6666 5.9993v12.6673c0 1.2184.6604 2.2724 1.6354 2.8537a3.9658 3.9658 0 0 1-.3023-1.5206V4.6662c0-.5379.1085-1.051.3023-1.5206m15.0318.854c0-.6976.217-1.344.5844-1.8803-1.1052.3256-1.9175 1.3362-1.9175 2.5468v2.9002l1.3331.0668zm0 12.0004h-1.333v4.0008c0 1.2106.8122 2.2212 1.9174 2.5467-.3674-.5363-.5844-1.1827-.5844-1.8802zm-3.3334 3.3335c0 1.2106.8122 2.2212 1.919 2.5467-.369-.5363-.586-1.1827-.586-1.8802v-4.0008h-1.333zm1.3333-14.6671c0-.6976.217-1.344.5844-1.8803-1.1052.3256-1.9174 1.3362-1.9174 2.5468v2.133l1.333.0667Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/hotjar.svg b/assets/lib/simple-icons/icons/hotjar.svg
new file mode 100644
index 00000000..76803fbb
--- /dev/null
+++ b/assets/lib/simple-icons/icons/hotjar.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Hotjar</title><path d="M21.055 7.814C17.512 1.404 7.118 0 7.118 0s4.798 5.34-1.334 9.567c-3.876 2.666-5.41 6.13-3.75 9.914 1.27 2.9 3.96 4.076 6.86 4.519-.745-1.434-.932-3.505-.381-5.628.055-.212.116-.434.186-.636.813 1.258 2.148 1.946 3.45 1.629 1.783-.424 2.829-2.582 2.342-4.799a5.104 5.104 0 00-.536-1.372c.07.017.14.024.212.047 2.225.635 3.301 3.962 2.403 7.434a9.266 9.266 0 01-1.325 2.946c3.82-1.23 6.36-4.311 7.06-7.056.736-2.856.177-6.185-1.25-8.751z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/houdini.svg b/assets/lib/simple-icons/icons/houdini.svg
index 1d593dec..f42c166e 100644
--- a/assets/lib/simple-icons/icons/houdini.svg
+++ b/assets/lib/simple-icons/icons/houdini.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Houdini icon</title><path d="M0 19.635V24h3.824A8.662 8.662 0 0 1 0 19.635zm16.042-4.555c0-4.037-3.253-7.92-8.111-8.089C4.483 6.873 1.801 8.136 0 10.005v4.209c1.224-3.549 4.595-5.158 7.419-5.128 3.531.041 6.251 2.703 6.275 5.72 0 2.878-1.183 4.992-4.436 5.516-1.774.296-4.548-.754-4.436-3.434.065-1.381 1.138-2.162 2.366-2.106-1.207 1.618.39 2.801 1.52 2.561a2.51 2.51 0 0 0 1.966-2.502c0-1.017-.958-2.662-3.333-2.6-2.936.068-4.785 2.183-4.85 4.797-.071 3.28 3.007 5.457 6.174 5.483 4.633.059 7.395-2.984 7.377-7.441zM0 0v6.906a12.855 12.855 0 0 1 7.931-2.609c6.801 0 11.134 4.762 11.131 10.765 0 4.17-1.946 7.308-4.995 8.938H24V0H0z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Houdini</title><path d="M0 19.635V24h3.824A8.662 8.662 0 0 1 0 19.635zm16.042-4.555c0-4.037-3.253-7.92-8.111-8.089C4.483 6.873 1.801 8.136 0 10.005v4.209c1.224-3.549 4.595-5.158 7.419-5.128 3.531.041 6.251 2.703 6.275 5.72 0 2.878-1.183 4.992-4.436 5.516-1.774.296-4.548-.754-4.436-3.434.065-1.381 1.138-2.162 2.366-2.106-1.207 1.618.39 2.801 1.52 2.561a2.51 2.51 0 0 0 1.966-2.502c0-1.017-.958-2.662-3.333-2.6-2.936.068-4.785 2.183-4.85 4.797-.071 3.28 3.007 5.457 6.174 5.483 4.633.059 7.395-2.984 7.377-7.441zM0 0v6.906a12.855 12.855 0 0 1 7.931-2.609c6.801 0 11.134 4.762 11.131 10.765 0 4.17-1.946 7.308-4.995 8.938H24V0H0z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/houzz.svg b/assets/lib/simple-icons/icons/houzz.svg
index d2b68df4..6692acbe 100644
--- a/assets/lib/simple-icons/icons/houzz.svg
+++ b/assets/lib/simple-icons/icons/houzz.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Houzz icon</title><path d="M1.27 0V24H9.32V16.44H14.68V24H22.73V10.37L6.61 5.75V0H1.27Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Houzz</title><path d="M1.27 0V24H9.32V16.44H14.68V24H22.73V10.37L6.61 5.75V0H1.27Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/hp.svg b/assets/lib/simple-icons/icons/hp.svg
index 47867a64..387b06ec 100644
--- a/assets/lib/simple-icons/icons/hp.svg
+++ b/assets/lib/simple-icons/icons/hp.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>HP icon</title><path d="M12 24h-.4l2.5-6.7h3.4c.6 0 1.2-.5 1.4-1L21.6 9c.4-1.2-.3-2.2-1.5-2.2h-4.7l-3.9 10.8-2.2 6.1C3.9 22.4 0 17.7 0 12 0 6.5 3.7 1.9 8.8.4L6.5 6.8 2.6 17.3h2.5l3.2-8.9h1.9L7 17.3h2.5l3-8.3c.4-1.2-.2-2.2-1.5-2.2H9L11.5 0h.5c6.6 0 12 5.4 12 12s-5.4 12-12 12zm7.3-15.7h-1.9l-2.7 7.3h1.9l2.7-7.3z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>HP</title><path d="M12 24h-.354l2.46-6.745h3.372c.597 0 1.249-.448 1.454-1.007l2.664-7.304c.429-1.192-.242-2.18-1.528-2.18h-4.695l-6.15 16.92C3.933 22.415 0 17.663 0 12 0 6.503 3.708 1.863 8.758.447L2.646 17.255H5.18l3.242-8.926h1.92l-3.243 8.926h2.535l3.037-8.33c.428-1.192-.242-2.18-1.528-2.18H9L11.46.02c.186 0 .354-.019.54-.019 6.634 0 12 5.366 12 12s-5.366 12-12 12zm7.267-15.67h-1.92l-2.682 7.34h1.919z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/html5.svg b/assets/lib/simple-icons/icons/html5.svg
index 27c1d292..e8b1e371 100644
--- a/assets/lib/simple-icons/icons/html5.svg
+++ b/assets/lib/simple-icons/icons/html5.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>HTML5 icon</title><path d="M1.5 0h21l-1.91 21.563L11.977 24l-8.564-2.438L1.5 0zm7.031 9.75l-.232-2.718 10.059.003.23-2.622L5.412 4.41l.698 8.01h9.126l-.326 3.426-2.91.804-2.955-.81-.188-2.11H6.248l.33 4.171L12 19.351l5.379-1.443.744-8.157H8.531z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>HTML5</title><path d="M1.5 0h21l-1.91 21.563L11.977 24l-8.564-2.438L1.5 0zm7.031 9.75l-.232-2.718 10.059.003.23-2.622L5.412 4.41l.698 8.01h9.126l-.326 3.426-2.91.804-2.955-.81-.188-2.11H6.248l.33 4.171L12 19.351l5.379-1.443.744-8.157H8.531z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/htmlacademy.svg b/assets/lib/simple-icons/icons/htmlacademy.svg
index 035b073d..c7285c09 100644
--- a/assets/lib/simple-icons/icons/htmlacademy.svg
+++ b/assets/lib/simple-icons/icons/htmlacademy.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>HTML Academy icon</title><path d="M12 0L2.524.994v17.368L12 24l9.476-5.638V.994L12.099.01 12 0zm8.236 17.657L12 22.557l-8.236-4.9v-7.119l8.2 4.881.014.885-5.626-3.349-.008.86 5.648 3.394.015.908-5.647-3.36-.008.86L12 19.01l5.703-3.412v-.862l-.008.004v-2.805l2.54-1.517v7.238zm-.006-8.162l-2.254 1.328-1.04.613-4.96-2.951-.009.858 4.24 2.521-.037.023-.092.054-.602.355-3.5-2.083-.009.859 2.763 1.643-.652.436-.015.01-2.088-1.23-.008.858 1.37.807-1.395.837-8.16-4.85 8.172-4.912v.001l8.276 4.823zm.006-.864l-8.28-4.882h-.002l-8.19 4.877V2.11L12 1.246l8.237.864v6.52z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>HTML Academy</title><path d="M12 0L2.524.994v17.368L12 24l9.476-5.638V.994L12.099.01 12 0zm8.236 17.657L12 22.557l-8.236-4.9v-7.119l8.2 4.881.014.885-5.626-3.349-.008.86 5.648 3.394.015.908-5.647-3.36-.008.86L12 19.01l5.703-3.412v-.862l-.008.004v-2.805l2.54-1.517v7.238zm-.006-8.162l-2.254 1.328-1.04.613-4.96-2.951-.009.858 4.24 2.521-.037.023-.092.054-.602.355-3.5-2.083-.009.859 2.763 1.643-.652.436-.015.01-2.088-1.23-.008.858 1.37.807-1.395.837-8.16-4.85 8.172-4.912v.001l8.276 4.823zm.006-.864l-8.28-4.882h-.002l-8.19 4.877V2.11L12 1.246l8.237.864v6.52z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/huawei.svg b/assets/lib/simple-icons/icons/huawei.svg
index bf6cec21..0c72bab8 100644
--- a/assets/lib/simple-icons/icons/huawei.svg
+++ b/assets/lib/simple-icons/icons/huawei.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Huawei icon</title><path d="M3.67 6.14S1.82 7.91 1.72 9.78v.35c.08 1.51 1.22 2.4 1.22 2.4 1.83 1.79 6.26 4.04 7.3 4.55 0 0 .06.03.1-.01l.02-.04V17v-.01C7.52 10.8 3.67 6.14 3.67 6.14zM9.65 18.6c-.02-.08-.1-.08-.1-.08l-7.38.26c.8 1.43 2.15 2.53 3.56 2.2.96-.25 3.16-1.78 3.88-2.3.06-.05.04-.09.04-.09zM9.73 17.82C6.49 15.63.21 12.28.21 12.28c-.15.46-.2.9-.21 1.3v.07c0 1.07.4 1.82.4 1.82.8 1.69 2.34 2.2 2.34 2.2.7.3 1.4.31 1.4.31.12.02 4.4 0 5.54 0 .05 0 .08-.05.08-.05v-.06c0-.03-.03-.05-.03-.05zM9.06 3.19a3.42 3.42 0 0 0-2.57 3.15v.41c.03.6.16 1.05.16 1.05.66 2.9 3.86 7.65 4.55 8.65.05.05.1.03.1.03a.1.1 0 0 0 .06-.1c1.06-10.6-1.11-13.42-1.11-13.42-.32.02-1.19.23-1.19.23zM17.36 5.46s-.49-1.8-2.44-2.28c0 0-.57-.14-1.17-.22 0 0-2.18 2.81-1.12 13.43.01.07.06.08.06.08.07.03.1-.03.1-.03.72-1.03 3.9-5.76 4.55-8.64 0 0 .36-1.4.02-2.34zM14.44 18.53s-.07 0-.09.05c0 0-.01.07.03.1.7.51 2.85 2 3.88 2.3 0 0 .16.05.43.06h.14c.69-.02 1.9-.37 3-2.26l-7.4-.25zM22.27 10.12c.14-2.06-1.94-3.97-1.94-3.98 0 0-3.85 4.66-6.67 10.8 0 0-.03.08.02.13l.04.01h.06c1.06-.53 5.46-2.77 7.28-4.54 0 0 1.15-.93 1.21-2.42zM23.79 12.26s-6.28 3.37-9.52 5.55c0 0-.05.04-.03.11 0 0 .03.06.07.06 1.16 0 5.56 0 5.67-.02 0 0 .57-.02 1.27-.29 0 0 1.56-.5 2.37-2.27 0 0 .73-1.45.17-3.14z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Huawei</title><path d="M3.67 6.14S1.82 7.91 1.72 9.78v.35c.08 1.51 1.22 2.4 1.22 2.4 1.83 1.79 6.26 4.04 7.3 4.55 0 0 .06.03.1-.01l.02-.04v-.04C7.52 10.8 3.67 6.14 3.67 6.14zM9.65 18.6c-.02-.08-.1-.08-.1-.08l-7.38.26c.8 1.43 2.15 2.53 3.56 2.2.96-.25 3.16-1.78 3.88-2.3.06-.05.04-.09.04-.09zm.08-.78C6.49 15.63.21 12.28.21 12.28c-.15.46-.2.9-.21 1.3v.07c0 1.07.4 1.82.4 1.82.8 1.69 2.34 2.2 2.34 2.2.7.3 1.4.31 1.4.31.12.02 4.4 0 5.54 0 .05 0 .08-.05.08-.05v-.06c0-.03-.03-.05-.03-.05zM9.06 3.19a3.42 3.42 0 00-2.57 3.15v.41c.03.6.16 1.05.16 1.05.66 2.9 3.86 7.65 4.55 8.65.05.05.1.03.1.03a.1.1 0 00.06-.1c1.06-10.6-1.11-13.42-1.11-13.42-.32.02-1.19.23-1.19.23zm8.299 2.27s-.49-1.8-2.44-2.28c0 0-.57-.14-1.17-.22 0 0-2.18 2.81-1.12 13.43.01.07.06.08.06.08.07.03.1-.03.1-.03.72-1.03 3.9-5.76 4.55-8.64 0 0 .36-1.4.02-2.34zm-2.92 13.07s-.07 0-.09.05c0 0-.01.07.03.1.7.51 2.85 2 3.88 2.3 0 0 .16.05.43.06h.14c.69-.02 1.9-.37 3-2.26l-7.4-.25zm7.83-8.41c.14-2.06-1.94-3.97-1.94-3.98 0 0-3.85 4.66-6.67 10.8 0 0-.03.08.02.13l.04.01h.06c1.06-.53 5.46-2.77 7.28-4.54 0 0 1.15-.93 1.21-2.42zm1.52 2.14s-6.28 3.37-9.52 5.55c0 0-.05.04-.03.11 0 0 .03.06.07.06 1.16 0 5.56 0 5.67-.02 0 0 .57-.02 1.27-.29 0 0 1.56-.5 2.37-2.27 0 0 .73-1.45.17-3.14z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/hubspot.svg b/assets/lib/simple-icons/icons/hubspot.svg
index eaa10848..ec139748 100644
--- a/assets/lib/simple-icons/icons/hubspot.svg
+++ b/assets/lib/simple-icons/icons/hubspot.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 24 24"><title>HubSpot icon</title><path d="M18.164 7.931V5.085a2.198 2.198 0 0 0 1.266-1.978V3.04A2.199 2.199 0 0 0 17.238.847h-.067a2.199 2.199 0 0 0-2.193 2.192v.067a2.196 2.196 0 0 0 1.252 1.973l.013.006v2.852a6.22 6.22 0 0 0-2.969 1.31l.012-.009-7.828-6.096a2.497 2.497 0 1 0-1.157 1.515l-.012.006 7.696 5.991a6.176 6.176 0 0 0-1.038 3.446c0 1.343.425 2.588 1.147 3.606l-.013-.019-2.342 2.342a1.968 1.968 0 0 0-.58-.095h-.002a2.033 2.033 0 1 0 2.033 2.033 1.978 1.978 0 0 0-.099-.595l.004.014 2.317-2.317a6.247 6.247 0 1 0 4.782-11.133l-.036-.005zm-.964 9.377a3.206 3.206 0 1 1 3.214-3.206v.002a3.206 3.206 0 0 1-3.206 3.206z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>HubSpot</title><path d="M18.164 7.93V5.084a2.198 2.198 0 001.267-1.978v-.067A2.2 2.2 0 0017.238.845h-.067a2.2 2.2 0 00-2.193 2.193v.067a2.196 2.196 0 001.252 1.973l.013.006v2.852a6.22 6.22 0 00-2.969 1.31l.012-.01-7.828-6.095A2.497 2.497 0 104.3 4.656l-.012.006 7.697 5.991a6.176 6.176 0 00-1.038 3.446c0 1.343.425 2.588 1.147 3.607l-.013-.02-2.342 2.343a1.968 1.968 0 00-.58-.095h-.002a2.033 2.033 0 102.033 2.033 1.978 1.978 0 00-.1-.595l.005.014 2.317-2.317a6.247 6.247 0 104.782-11.134l-.036-.005zm-.964 9.378a3.206 3.206 0 113.215-3.207v.002a3.206 3.206 0 01-3.207 3.207z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/hugo.svg b/assets/lib/simple-icons/icons/hugo.svg
index dfb18f0e..fb89cc8b 100644
--- a/assets/lib/simple-icons/icons/hugo.svg
+++ b/assets/lib/simple-icons/icons/hugo.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Hugo icon</title><path d="M11.754 0a3.998 3.998 0 00-2.049.596L3.33 4.532a4.252 4.252 0 00-2.017 3.615v8.03c0 1.473.79 2.838 2.067 3.574l6.486 3.733a3.88 3.88 0 003.835.018l7.043-3.966a3.817 3.817 0 001.943-3.323V7.752a3.57 3.57 0 00-1.774-3.084L13.817.541a3.998 3.998 0 00-2.063-.54zm.022 1.674c.413-.006.828.1 1.2.315l7.095 4.127c.584.34.941.96.94 1.635v8.462c0 .774-.414 1.484-1.089 1.864l-7.042 3.966a2.199 2.199 0 01-2.179-.01l-6.485-3.734a2.447 2.447 0 01-1.228-2.123v-8.03c0-.893.461-1.72 1.221-2.19l6.376-3.935a2.323 2.323 0 011.19-.347zm-4.7 3.844V18.37h2.69v-5.62h4.46v5.62h2.696V5.518h-2.696v4.681h-4.46V5.518Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Hugo</title><path d="M11.754 0a3.998 3.998 0 00-2.049.596L3.33 4.532a4.252 4.252 0 00-2.017 3.615v8.03c0 1.473.79 2.838 2.067 3.574l6.486 3.733a3.88 3.88 0 003.835.018l7.043-3.966a3.817 3.817 0 001.943-3.323V7.752a3.57 3.57 0 00-1.774-3.084L13.817.541a3.998 3.998 0 00-2.063-.54zm.022 1.674c.413-.006.828.1 1.2.315l7.095 4.127c.584.34.941.96.94 1.635v8.462c0 .774-.414 1.484-1.089 1.864l-7.042 3.966a2.199 2.199 0 01-2.179-.01l-6.485-3.734a2.447 2.447 0 01-1.228-2.123v-8.03c0-.893.461-1.72 1.221-2.19l6.376-3.935a2.323 2.323 0 011.19-.347zm-4.7 3.844V18.37h2.69v-5.62h4.46v5.62h2.696V5.518h-2.696v4.681h-4.46V5.518Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/hulu.svg b/assets/lib/simple-icons/icons/hulu.svg
index a4db4fe6..3f724998 100644
--- a/assets/lib/simple-icons/icons/hulu.svg
+++ b/assets/lib/simple-icons/icons/hulu.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Hulu icon</title><path d="M14.4 7.355h-3.607a5.91 5.91 0 0 0-2.063.405V-.03H2.94v24.06h5.8v-9.51a1.61 1.61 0 0 1 1.56-1.7h3.39a1.59 1.59 0 0 1 1.59 1.56v9.59h5.78V13.54c0-4.41-2.25-6.162-5.9-6.162"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Hulu</title><path d="M14.707 15.957h1.912V8.043h-1.912zm-3.357-2.256a.517.517 0 01-.512.511H9.727a.517.517 0 01-.512-.511v-3.19H7.303v3.345c0 1.368.879 2.09 2.168 2.09h1.868c1.189 0 1.912-.856 1.912-2.09V10.51h-1.912c.01 0 .01 3.09.01 3.19zm10.75-3.19v3.19a.517.517 0 01-.512.511h-1.112a.517.517 0 01-.511-.511v-3.19h-1.912v3.345c0 1.368.878 2.09 2.167 2.09h1.868c1.19 0 1.912-.856 1.912-2.09V10.51zm-18.32 0H2.557c-.434 0-.645.11-.645.11V8.044H0v7.903h1.9v-3.179c0-.278.234-.511.512-.511h1.112c.278 0 .511.233.511.511v3.19h1.912v-3.446c0-1.445-.967-2-2.167-2Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/humblebundle.svg b/assets/lib/simple-icons/icons/humblebundle.svg
index 54dc15a9..b0e8eb80 100644
--- a/assets/lib/simple-icons/icons/humblebundle.svg
+++ b/assets/lib/simple-icons/icons/humblebundle.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Humble Bundle icon</title><path d="M4.145 23.996c.12-.463.23-.9.343-1.338.692-2.713 1.322-5.44 1.82-8.197.245-1.35.446-2.71.633-4.074.142-1.028.217-2.064.198-3.105-.01-.557-.034-1.116-.193-1.655-.07-.24-.174-.473-.3-.686-.165-.273-.43-.378-.75-.368-.883.026-1.633.363-2.272.96-.727.68-1.202 1.527-1.553 2.445-.166.435-.284.887-.422 1.33-.02.066-.026.123-.115.122C1.04 9.424.545 9.425.05 9.424c-.013 0-.024-.008-.036-.01 0-.193-.02-.385.003-.572.346-2.853 1.57-5.267 3.668-7.226C4.47.882 5.4.373 6.462.142 8.017-.196 9.258.4 9.996 1.822c.375.72.578 1.496.71 2.293.21 1.287.218 2.586.175 3.885-.014.42-.04.84-.062 1.26-.002.054 0 .108 0 .176.057.003.105.008.154.008.905 0 1.81-.002 2.717.005.124 0 .16-.047.18-.16.575-3.113 1.367-6.17 2.39-9.166.024-.074.05-.124.147-.124 1.12.004 2.24.004 3.362.004.017 0 .035.004.07.008l-.193.753C18.89 3.7 18.21 6.65 17.66 9.628c-.288 1.546-.533 3.1-.69 4.664-.086.875-.14 1.752-.113 2.63.016.53.054 1.062.22 1.57.064.202.16.4.273.58.167.26.426.366.74.356 1.16-.033 2.042-.59 2.746-1.47.707-.88 1.133-1.9 1.434-2.98.028-.1.06-.202.076-.306.014-.082.054-.104.13-.104.467.002.933.004 1.4 0 .102-.002.12.043.117.13-.014.804-.157 1.583-.39 2.347-.59 1.928-1.557 3.635-2.992 5.06-.813.81-1.762 1.407-2.88 1.706-.677.183-1.355.212-2.025-.028-.76-.27-1.276-.816-1.66-1.504-.402-.725-.613-1.512-.75-2.322-.24-1.406-.24-2.824-.172-4.242.042-.89.127-1.777.193-2.666.014-.19.016-.19-.174-.19-.855 0-1.71.002-2.566-.002-.104 0-.153.024-.17.137-.27 1.813-.637 3.608-1.074 5.387-.453 1.842-.974 3.664-1.587 5.46-.044.127-.104.16-.233.16-1.065-.006-2.13-.004-3.197-.004h-.17z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Humble Bundle</title><path d="M17.895 19.341c-3.384 0 1.826-19.186 1.826-19.186L16.233.151s-1.427 4.515-2.37 9.533h-3.005c.078-1.032.116-2.076.099-3.114-.135-8.26-4.974-6.73-7.14-4.835C1.758 3.538.033 6.962 0 9.6c.328-.016 1.624-.022 1.624-.022S2.702 4.66 6.086 4.66c3.385 0-1.834 19.187-1.834 19.187l3.49.002s1.803-5.136 2.7-10.872l2.87-.017c-.167 1.485-.22 3.124-.196 4.646.136 8.26 4.956 6.488 7.122 4.593 2.166-1.896 3.782-5.9 3.762-7.822.002-.002-1.645.013-1.665.013.006.152-1.056 4.951-4.44 4.951z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/hungryjacks.svg b/assets/lib/simple-icons/icons/hungryjacks.svg
new file mode 100644
index 00000000..5126adaa
--- /dev/null
+++ b/assets/lib/simple-icons/icons/hungryjacks.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Hungry Jack's</title><path d="M2.868.215C1.284.215 0 1.476 0 3.032v17.936c0 1.555 1.284 2.817 2.868 2.817h18.264c1.584 0 2.868-1.262 2.868-2.817V3.032C24 1.476 22.716.215 21.132.215zm9.033 1.82c6.143 0 9.46 2.233 9.743 4.487.043.333.016 1.012.016 1.012v10.585s-.03.612-.325 1.112c-1.067 1.808-4.108 2.674-9.434 2.674s-8.367-.866-9.434-2.674c-.295-.5-.324-1.112-.324-1.112s0-10.679-.003-10.813v-.532c.003-.093.009-.18.018-.252.283-2.254 3.6-4.488 9.743-4.488zm-.13.537c-5.685 0-8.714 1.97-9.08 3.953-.086.455.197.611.48.611H20.37c.283 0 .566-.156.48-.611-.366-1.983-3.395-3.953-9.08-3.953zM6.692 8.21c-.19 0-.47.098-.47.325v1.917c0 .525.658.895 1.232.895s1.233-.37 1.233-.895V8.536c0-.227-.28-.325-.47-.325-.192 0-.471.098-.471.325v1.73c0 .127-.154.2-.292.2-.138 0-.29-.073-.29-.2v-1.73c0-.227-.28-.325-.471-.325zm2.75 0c-.195 0-.482.134-.482.38v2.531c0 .246.287.362.483.362s.481-.147.481-.362v-.943c0-.069.09-.055.132 0 0 0 .611.786.814 1.044.203.257.316.26.484.26.196 0 .482-.116.482-.36V8.59c0-.245-.286-.38-.482-.38s-.483.135-.483.38v.935c0 .07-.087.058-.148-.02l-.766-.996c-.117-.156-.265-.298-.514-.298zm4.325 0c-.978 0-1.658.666-1.658 1.628 0 1.133.725 1.645 1.649 1.645.715 0 1.364-.278 1.364-.789v-.89c0-.234-.152-.329-.396-.329h-.69c-.346 0-.422.228-.422.405 0 .177.06.419.413.419.097 0 .126.007.126.07.012.167-.1.266-.42.266-.392 0-.615-.354-.615-.784 0-.43.18-.815.699-.815.185 0 .275.003.58.141.307.138.475-.022.55-.126.077-.104.158-.332-.036-.504-.264-.23-.644-.337-1.144-.337zm-10.08.136c-.194 0-.477.11-.477.346v2.445c0 .234.283.346.476.346.194 0 .476-.112.476-.346v-.713c0-.076.054-.097.114-.097h.474c.06 0 .11.021.11.097v.713c0 .234.282.346.475.346.194 0 .476-.112.476-.346V8.693c0-.235-.282-.346-.476-.346-.193 0-.476.11-.476.346v.653c0 .073-.041.1-.105.1h-.486c-.056 0-.106-.027-.106-.1v-.653c0-.235-.282-.346-.476-.346zm12.185 0c-.23 0-.477.12-.477.345v2.465c0 .225.283.322.477.322.193 0 .475-.097.475-.322v-.638c0-.06.055-.079.093-.033l.677.862c.138.177.486.163.648.062.18-.111.313-.358.174-.534l-.53-.678c-.022-.03-.027-.056.018-.09.333-.222.417-.55.417-.836 0-.319-.274-.925-1.074-.925zm4.293 0c-.174-.008-.384.052-.463.2l-.36.566c-.029.05-.062.049-.09.004l-.358-.57c-.105-.197-.441-.233-.619-.168-.232.084-.343.337-.239.535l.706 1.154c.053.092.077.144.076.236v.834c0 .235.285.346.48.346s.48-.111.48-.346v-.834c0-.092.006-.133.074-.233l.707-1.157c.105-.198-.012-.445-.239-.535a.49.49 0 0 0-.155-.031zm-3.636.545c.305 0 .372.133.372.344 0 .21-.161.338-.354.338-.124 0-.193.003-.193-.056V8.96c.035-.046.063-.068.175-.068zM5.163 12.166c-.264 0-.649.164-.649.51v2.599c.028.413-.244.52-.349.214-.15-.367-.526-.287-.67-.214-.144.072-.351.26-.264.615.153.543.543.907 1.291.913 1 0 1.284-.625 1.284-1.297l.005-.07v-2.76c0-.346-.384-.51-.648-.51zm2.634 0c-.246.008-.654.115-.75.458L5.97 16.122c-.108.336.188.629.447.675.232.042.633-.132.702-.435l.062-.206c.017-.065.046-.08.1-.08h1.034c.074 0 .08.03.095.08l.062.206c.07.303.47.477.702.435.259-.046.556-.339.447-.675l-1.075-3.498c-.1-.349-.504-.45-.75-.458zm3.833 0c-1.252 0-2.122.949-2.122 2.318 0 1.37.87 2.32 2.122 2.32.542 0 .898-.152 1.148-.41.248-.244.143-.544.046-.692-.097-.149-.308-.366-.704-.18-.225.104-.248.128-.427.128-.663 0-.895-.548-.895-1.16h-.001c0-.613.233-1.175.896-1.175.187 0 .225.034.427.128.396.186.607-.031.704-.18.097-.148.202-.444-.046-.688-.279-.287-.618-.41-1.148-.41zm2.347 0c-.258 0-.635.164-.635.512v3.613c0 .348.377.512.635.512s.635-.164.635-.512V15.3l-.001.014c0-.213.12-.096.12-.096l1.173 1.428s.28.375.774-.06c.494-.437.014-.897.014-.897s-.721-.849-.883-1.064c-.145-.194.04-.387.04-.387l.908-1.115c.22-.275.167-.545-.087-.763-.286-.246-.639-.238-.875.067l-1.057 1.277c-.05.068-.12.062-.126-.047v.003l-.001-.013.001.01v-.978c0-.348-.377-.512-.635-.512zm3.254 0c-.182 0-.33.138-.33.31.007.21.132.273.173.288.041.016.03.047.026.066a.342.342 0 0 1-.116.17c-.14.086-.002.266.113.257.128-.01.644-.452.443-.892a.34.34 0 0 0-.31-.2zm1.979 0c-.996 0-1.608.678-1.61 1.684-.001.61.525 1.019 1.052 1.126l.27.055c.123.029.29.097.29.289 0 .191-.103.372-.334.372-.155 0-.197.04-.526-.13-.37-.19-.573.032-.665.175-.092.145-.19.433.045.67.3.282.66.396 1.266.396 1.102 0 1.609-.668 1.6-1.594-.006-.72-.502-1.133-1.073-1.28l-.305-.079c-.104-.028-.276-.105-.276-.263 0-.174.103-.317.301-.317.126 0 .178-.02.449.128.366.199.574-.031.666-.175.091-.143.19-.424-.045-.66-.308-.31-.565-.397-1.105-.397zM7.725 14.212c.027-.002.054.022.068.075l.202.668c.02.062-.001.075-.071.075H7.51c-.038 0-.07-.026-.05-.075l.202-.666c.01-.048.036-.076.062-.077zm-4.554 3.665c-.283 0-.566.11-.48.473.516 1.98 3.395 3.018 9.08 3.018 5.684 0 8.563-1.037 9.08-3.018.085-.363-.198-.473-.48-.473h-8.6zm17.161 2.685c.288 0 .534.228.534.536a.531.531 0 0 1-.534.538.532.532 0 0 1-.536-.538c0-.308.246-.536.536-.536zm0 .09a.431.431 0 0 0-.43.446c0 .259.189.45.43.45.239 0 .428-.191.428-.45a.43.43 0 0 0-.428-.446zm-.21.128h.232c.144 0 .216.055.216.177 0 .11-.07.159-.159.17l.174.273h-.104l-.16-.269h-.107v.269h-.092zm.092.08v.192h.11c.079 0 .149-.006.149-.101 0-.077-.069-.09-.133-.09Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/hurriyetemlak.svg b/assets/lib/simple-icons/icons/hurriyetemlak.svg
index 9860af50..97945bb8 100644
--- a/assets/lib/simple-icons/icons/hurriyetemlak.svg
+++ b/assets/lib/simple-icons/icons/hurriyetemlak.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Hurriyetemlak icon</title><path d="M24 16.085L11.994 4.091 0 16.097l3.817 3.812 8.182-8.189 8.189 8.182z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Hurriyetemlak</title><path d="M24 16.085L11.994 4.091 0 16.097l3.817 3.812 8.182-8.189 8.189 8.182z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/husqvarna.svg b/assets/lib/simple-icons/icons/husqvarna.svg
index 5a8cb880..5ddb439e 100644
--- a/assets/lib/simple-icons/icons/husqvarna.svg
+++ b/assets/lib/simple-icons/icons/husqvarna.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Husqvarna icon</title><path d="M12.001 14.457c2.04 0 1.997 0 1.997.645v4.054h2.775V7.927h-2.775v3.371c0 .664.042.662-1.997.662h.001c-2.04 0-1.996.002-1.996-.662v-3.37H7.23v11.228h2.775v-4.054c0-.644-.043-.645 1.996-.645M12 0c1.04 0 1.72.18 2.004.241-.143 1.307-.1 2.355 0 2.657.347 1.006 2.32 1.475 3.115 1.012.878-.523.676-2.109.676-3.155 0 0 1.294.301 2.086.594.644.238 1.593.703 1.593.703.188 1.323.01 3.281-1.316 3.945 1 .985 1.335 2.152 1.764 4.304.346 1.932.265 3.28.243 4.405-.101 1.53-.101 2.354-.468 3.743-.53 1.588-.844 2.335-1.918 3.438C17.599 24.131 14.045 24 12 23.998c-2.045.001-5.598.133-7.779-2.11-1.074-1.104-1.388-1.85-1.918-3.439-.367-1.389-.367-2.213-.469-3.743-.02-1.126-.102-2.473.245-4.405.428-2.152.763-3.319 1.763-4.304-1.326-.664-1.504-2.622-1.316-3.945 0 0 .95-.465 1.593-.703.792-.293 2.085-.594 2.085-.594 0 1.046-.201 2.632.676 3.155.797.463 2.768-.006 3.116-1.012.102-.302.142-1.35 0-2.657C10.28.181 10.959 0 12 0m-.004 21.125c2.387 0 3.149 0 4.331-.322.408-.14 1.143-.341 1.674-1.166.979-1.65.979-4.747.979-6.236 0-1.49 0-4.125-.979-5.754-.53-.846-1.255-1.078-1.674-1.188-1.208-.316-1.983-.297-4.331-.302h.002c-2.348.005-3.123-.014-4.331.302-.418.11-1.143.342-1.674 1.188-.979 1.63-.979 4.264-.979 5.754 0 1.489 0 4.586.98 6.236.53.825 1.264 1.025 1.673 1.166 1.182.323 1.944.322 4.33.322Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Husqvarna</title><path d="M12.001 14.457c2.04 0 1.997 0 1.997.645v4.054h2.775V7.927h-2.775v3.371c0 .664.042.662-1.997.662h.001c-2.04 0-1.996.002-1.996-.662v-3.37H7.23v11.228h2.775v-4.054c0-.644-.043-.645 1.996-.645M12 0c1.04 0 1.72.18 2.004.241-.143 1.307-.1 2.355 0 2.657.347 1.006 2.32 1.475 3.115 1.012.878-.523.676-2.109.676-3.155 0 0 1.294.301 2.086.594.644.238 1.593.703 1.593.703.188 1.323.01 3.281-1.316 3.945 1 .985 1.335 2.152 1.764 4.304.346 1.932.265 3.28.243 4.405-.101 1.53-.101 2.354-.468 3.743-.53 1.588-.844 2.335-1.918 3.438C17.599 24.131 14.045 24 12 23.998c-2.045.001-5.598.133-7.779-2.11-1.074-1.104-1.388-1.85-1.918-3.439-.367-1.389-.367-2.213-.469-3.743-.02-1.126-.102-2.473.245-4.405.428-2.152.763-3.319 1.763-4.304-1.326-.664-1.504-2.622-1.316-3.945 0 0 .95-.465 1.593-.703.792-.293 2.085-.594 2.085-.594 0 1.046-.201 2.632.676 3.155.797.463 2.768-.006 3.116-1.012.102-.302.142-1.35 0-2.657C10.28.181 10.959 0 12 0m-.004 21.125c2.387 0 3.149 0 4.331-.322.408-.14 1.143-.341 1.674-1.166.979-1.65.979-4.747.979-6.236 0-1.49 0-4.125-.979-5.754-.53-.846-1.255-1.078-1.674-1.188-1.208-.316-1.983-.297-4.331-.302h.002c-2.348.005-3.123-.014-4.331.302-.418.11-1.143.342-1.674 1.188-.979 1.63-.979 4.264-.979 5.754 0 1.489 0 4.586.98 6.236.53.825 1.264 1.025 1.673 1.166 1.182.323 1.944.322 4.33.322Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/hyper.svg b/assets/lib/simple-icons/icons/hyper.svg
new file mode 100644
index 00000000..801a04e5
--- /dev/null
+++ b/assets/lib/simple-icons/icons/hyper.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Hyper</title><path d="M13.565 17.91H24v1.964H13.565zm-3.201-5.09l-9.187 8.003 2.86-7.004L0 11.179l9.187-8.002-3.11 7.451z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/hyperledger.svg b/assets/lib/simple-icons/icons/hyperledger.svg
new file mode 100644
index 00000000..6659f209
--- /dev/null
+++ b/assets/lib/simple-icons/icons/hyperledger.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Hyperledger</title><path d="M16.593 1.008L5.725 2.067a.671.671 0 0 0-.688-.585.72.72 0 0 0-.71.71c0 .256.14.455.326.58L.106 12.636l-.047.044c-.06.06-.059.06-.059.12 0 0 0 .058.059.058l6.338 8.974a.716.716 0 0 0-.175.449c0 .415.355.71.71.71a.68.68 0 0 0 .705-.666l10.66-1.04.132.048a.226.226 0 0 0 .052-.065c.037-.004.068-.014.068-.054l4.55-9.876c.062.018.125.039.19.039.356 0 .711-.355.711-.71a.72.72 0 0 0-.71-.713.693.693 0 0 0-.263.054L16.71 1.067c-.06-.06-.06-.06-.118-.06zm-.522.28l-4.952 2.711-5.434-1.598a.962.962 0 0 0 .045-.15zm.404.016l1.36 5.907-3.115-1.933a.944.944 0 0 0 .154-.36.72.72 0 0 0-.71-.71.71.71 0 0 0-.667.49l-2.07-.608zm.272.244l6.062 8.607c-.03.028-.052.06-.076.093l-4.676-2.9zm-11.094.944l5.339 1.577-3.644 1.995-1.876-3.339a.802.802 0 0 0 .18-.233zm-.38.363L7.118 6.14l.012.059-2.093 1.917V2.903a.625.625 0 0 0 .236-.048zm-.43.01c.044.014.09.023.135.027v5.28L.561 12.22zm6.456 1.295l2.176.643c-.008.039-.024.076-.024.115 0 .166.067.304.158.42l-2.53 2.188-3.564-1.278zm2.339 1.22a.72.72 0 0 0 .525.25c.022 0 .043-.005.065-.008l.625 3.257-3.723-1.334zm.999.018l3.245 2.017.64 2.779-3.598-1.29-.62-3.295a.71.71 0 0 0 .333-.211zM7.407 6.4l3.527 1.251-2.803 2.424zm-.22.088l.748 3.756-2.38 2.056a.705.705 0 0 0-.518-.211V8.457zm10.916 1.065l4.545 2.826c-.015.033-.022.066-.032.1l-3.917-.285zm-7.118.117l3.902 1.384.707 3.69-3.077 2.64-3.584-1.238-.793-4.023zm-6.007.84v3.585a.72.72 0 0 0-.652.705.72.72 0 0 0 .711.711c.03 0 .056-.013.085-.017l.407 2.147-5.174-2.9zm9.98.568l3.471 1.233-2.79 2.394zm-7.014 1.214l.752 3.772-3.015-1.041a.955.955 0 0 0 .067-.223.708.708 0 0 0-.17-.466zm10.78.14l3.858.283a.67.67 0 0 0 .117.321l-4.068 3.644zm-.181.138l-.095 4.273-1.566 1.403a.72.72 0 0 0-.468-.186c-.05 0-.093.017-.14.025l-.576-3.068zm4.273.618c.026.024.059.037.088.057l-4.407 9.576.13-5.94zm-7.162 1.866l.582 3.038a.654.654 0 0 0-.483.412l-2.932-1.014zm-10.008.055l3.07 1.062.73 3.664-3.838-2.15-.427-2.204a.713.713 0 0 0 .465-.372zm-5.123.012l5.07 2.85 1.075 5.653c-.03.013-.054.034-.081.05zm8.43 1.132l3.482 1.202-2.775 2.382zm9.491.788l-.133 5.997-5.669-2.02 3.198-1.855a.72.72 0 0 0 .574.32.722.722 0 0 0 .712-.713.676.676 0 0 0-.162-.426zm-5.704.519l2.996 1.035c-.013.058-.032.112-.032.175 0 .11.028.21.071.301L12.5 18.967l-2.633-.937zm-7.069.456l3.786 2.13-2.213 3.493a.687.687 0 0 0-.492-.043zm3.984 2.217l2.553.903-4.706 2.723c-.025-.035-.047-.073-.08-.103zm2.697.954l5.533 1.955-10.274.957c-.011-.047-.022-.094-.042-.137Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/hypothesis.svg b/assets/lib/simple-icons/icons/hypothesis.svg
index a30bc12c..045da6c3 100644
--- a/assets/lib/simple-icons/icons/hypothesis.svg
+++ b/assets/lib/simple-icons/icons/hypothesis.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Hypothesis icon</title><path d="M3.43 0C2.5 0 1.72 .768 1.72 1.72V18.86C1.72 19.8 2.5 20.57 3.43 20.57H9.38L12 24L14.62 20.57H20.57C21.5 20.57 22.29 19.8 22.29 18.86V1.72C22.29 .77 21.5 0 20.57 0H3.43M5.14 3.43H7.72V9.43S8.58 7.72 10.28 7.72C12 7.72 13.74 8.57 13.74 11.24V17.14H11.16V12C11.16 10.61 10.28 10.07 9.43 10.29C8.57 10.5 7.72 11.41 7.72 13.29V17.14H5.14V3.43M18 13.72C18.95 13.72 19.72 14.5 19.72 15.42A1.71 1.71 0 0 1 18 17.13A1.71 1.71 0 0 1 16.29 15.42C16.29 14.5 17.05 13.71 18 13.71Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Hypothesis</title><path d="M3.425 0c-.93 0-1.71.768-1.71 1.72v17.14c0 .94.78 1.71 1.71 1.71h5.95l2.62 3.43 2.62-3.43h5.95c.93 0 1.72-.77 1.72-1.71V1.72c0-.95-.79-1.72-1.72-1.72H3.425m1.71 3.43h2.58v6s.86-1.71 2.56-1.71c1.72 0 3.46.85 3.46 3.52v5.9h-2.58V12c0-1.39-.88-1.93-1.73-1.71-.86.21-1.71 1.12-1.71 3v3.85h-2.58V3.43m12.86 10.29c.95 0 1.72.78 1.72 1.7a1.71 1.71 0 01-1.72 1.71 1.71 1.71 0 01-1.71-1.71c0-.92.76-1.71 1.71-1.71z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/hyundai.svg b/assets/lib/simple-icons/icons/hyundai.svg
index 379d29e2..e2198490 100644
--- a/assets/lib/simple-icons/icons/hyundai.svg
+++ b/assets/lib/simple-icons/icons/hyundai.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Hyundai icon</title><path d="M11.999 18.145c6.627 0 12.001-2.751 12.001-6.144 0-3.395-5.374-6.146-12.001-6.146C5.374 5.855 0 8.606 0 12.001c0 3.393 5.374 6.144 11.999 6.144m2.26-3.015c-.2.464-.545 1.454-1.336 1.85-.24.119-.537.174-.8.185H12c-2.214 0-4.276-.31-6.002-.834l-.066-.025c-.16-.053-.24-.127-.24-.218 0-.079.043-.14.099-.195l.109-.097c.4-.332 1.598-1.2 3.858-2.067.793-.301 1.786-.679 2.825-.9.608-.126 2.868-.473 1.675 2.301m6.062-6.194c.043-.074.1-.137.203-.142.056-.006.132.007.248.08 1.409.867 2.245 1.952 2.245 3.125 0 2.118-2.724 3.94-6.62 4.735-.248.05-.416.048-.471-.015-.04-.038-.05-.106 0-.19a.815.815 0 01.104-.145c2.12-2.5 3.736-6.189 4.195-7.253.035-.074.068-.147.096-.195M9.777 8.857c.2-.463.545-1.454 1.335-1.846.24-.12.537-.178.8-.185.061-.002.104 0 .12 0 2.217 0 4.276.306 6.004.833.013.006.053.02.066.025.16.054.24.127.24.218 0 .079-.042.137-.098.193a1.89 1.89 0 01-.11.096c-.397.335-1.598 1.201-3.858 2.068-.795.304-1.786.679-2.822.899-.61.13-2.87.474-1.677-2.3M7.6 7.264c.25-.048.415-.048.476.015.035.04.045.106-.002.19a.89.89 0 01-.104.142c-2.12 2.503-3.737 6.189-4.198 7.256a2.313 2.313 0 01-.096.195c-.04.073-.099.136-.2.142-.056.005-.135-.011-.251-.081C1.817 14.256.98 13.172.98 11.999c0-2.118 2.724-3.94 6.62-4.735Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Hyundai</title><path d="M11.999 18.145c6.627 0 12.001-2.751 12.001-6.144 0-3.395-5.374-6.146-12.001-6.146C5.374 5.855 0 8.606 0 12.001c0 3.393 5.374 6.144 11.999 6.144m2.26-3.015c-.2.464-.545 1.454-1.336 1.85-.24.119-.537.174-.8.185H12c-2.214 0-4.276-.31-6.002-.834l-.066-.025c-.16-.053-.24-.127-.24-.218 0-.079.043-.14.099-.195l.109-.097c.4-.332 1.598-1.2 3.858-2.067.793-.301 1.786-.679 2.825-.9.608-.126 2.868-.473 1.675 2.301m6.062-6.194c.043-.074.1-.137.203-.142.056-.006.132.007.248.08 1.409.867 2.245 1.952 2.245 3.125 0 2.118-2.724 3.94-6.62 4.735-.248.05-.416.048-.471-.015-.04-.038-.05-.106 0-.19a.815.815 0 01.104-.145c2.12-2.5 3.736-6.189 4.195-7.253.035-.074.068-.147.096-.195M9.777 8.857c.2-.463.545-1.454 1.335-1.846.24-.12.537-.178.8-.185.061-.002.104 0 .12 0 2.217 0 4.276.306 6.004.833.013.006.053.02.066.025.16.054.24.127.24.218 0 .079-.042.137-.098.193a1.89 1.89 0 01-.11.096c-.397.335-1.598 1.201-3.858 2.068-.795.304-1.786.679-2.822.899-.61.13-2.87.474-1.677-2.3M7.6 7.264c.25-.048.415-.048.476.015.035.04.045.106-.002.19a.89.89 0 01-.104.142c-2.12 2.503-3.737 6.189-4.198 7.256a2.313 2.313 0 01-.096.195c-.04.073-.099.136-.2.142-.056.005-.135-.011-.251-.081C1.817 14.256.98 13.172.98 11.999c0-2.118 2.724-3.94 6.62-4.735Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/i18next.svg b/assets/lib/simple-icons/icons/i18next.svg
new file mode 100644
index 00000000..de5ca7c9
--- /dev/null
+++ b/assets/lib/simple-icons/icons/i18next.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>i18next</title><path d="M14.93646 2.48699v4.51684l5.0758 13.03647s1.5495 3.1839-2.8824 3.9597H7.01922s-4.13084-.4311-3.14053-3.7019L9.21276 7.00401V2.48699h5.7237Zm2.0894 13.10781c-4.4301-1.3742-8.15457-.6365-9.97498-.0788l-1.83572 4.4186c-.78296 2.499 2.27302 2.9417 2.59687 2.9813l.02755.0032h8.44448c3.5407-.5982 2.511-2.972 2.4147-3.1773l-.0068-.0142-1.6661-4.1328Zm-7.81345.7772c.78905.0004 1.42905.3862 1.42905.8646 0 .4764-.6404.864-1.42905.864-.7887 0-1.42711-.3878-1.42711-.864 0-.4784.6384-.8646 1.4271-.8646Zm5.08375 0c.7871.0004 1.4271.3862 1.4271.8646 0 .4764-.6403.864-1.4271.864-.791 0-1.429-.3878-1.429-.864 0-.4784.638-.8646 1.429-.8646Zm-4.5001-5.2131c-.55227 0-.99993.5395-.99993 1.2051 0 .6656.44766 1.2051.99993 1.2051.5522 0 .9998-.5395.9998-1.2051 0-.6656-.4476-1.2051-.9998-1.2051Zm3.6413-1.29686c-.6549 0-1.1862.63806-1.1862 1.42906 0 .7871.5313 1.4271 1.1862 1.4271.653 0 1.1862-.64 1.1862-1.4271 0-.7907-.5328-1.42906-1.1862-1.42906Zm6.0363-2.73783s-2.1219 1.54591-4.0858-.41975V4.55615s2.7243-.60065 4.0858 2.56806Zm-14.84367 0C5.9908 3.9555 8.71543 4.55615 8.71543 4.55615v2.14831c-1.96566 1.96566-4.08544.41975-4.08544.41975ZM15.04366 0c.4954 0 .8958.4387.8958.98109 0 .54203-.4006.98074-.8958.98074H8.95478c-.49315 0-.89428-.43871-.89428-.98074C8.0605.43871 8.46146 0 8.95478 0h6.08888Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/iata.svg b/assets/lib/simple-icons/icons/iata.svg
index a4fcba14..1df48879 100644
--- a/assets/lib/simple-icons/icons/iata.svg
+++ b/assets/lib/simple-icons/icons/iata.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Iata icon</title><path d="M3.418 19.73l.98-4.885H5.99l-.973 4.884zm4.807-1.6h1.012l-.26-1.792zm-2.235 1.6l2.412-4.885h1.57l.99 4.884H9.487l-.088-.58H7.827l-.25.58zm6.439 0l.547-3.674h-1.394l.238-1.233h4.281l-.237 1.233h-1.328L14 19.73zm5.354-1.6h1.012l-.26-1.792zm-2.23 1.6l2.407-4.885h1.57l.99 4.884h-1.487l-.072-.58h-1.57l-.25.58zM24 9.324h-7.495c-.276 1.372-1.228 2.517-3.125 3.308.216.652.951 1.255 1.715 1.255h4.065c.62 0 1.112-.52 1.311-.94H16.34c-.254-.044-.265-.25-.01-.271h4.06c.525 0 1-.448 1.277-.935h-4.73c-.237-.039-.237-.238 0-.277h4.769c.48 0 .918-.558 1.1-.934h-5.232c-.26-.033-.26-.277 0-.282H22.9c.415 0 .819-.454 1.101-.924zm-24 0h7.495c.27 1.372 1.228 2.517 3.12 3.308-.216.652-.952 1.255-1.715 1.255H4.84c-.62 0-1.112-.52-1.311-.94H7.66c.249-.044.265-.25.01-.271H3.607c-.525 0-1-.448-1.272-.935H7.07c.238-.039.238-.238 0-.277H2.3c-.481 0-.918-.558-1.1-.934h5.232c.26-.033.26-.277 0-.282H1.106c-.42 0-.824-.454-1.106-.924zM9.569 5.21c.277.238.586.448.918.58.282-.553.675-1.028 1.129-1.449a4.05 4.05 0 0 0-2.047.869zM8.242 7.937h1.67a5.358 5.358 0 0 1 .454-1.909 4.021 4.021 0 0 1-1.002-.63 3.83 3.83 0 0 0-1.122 2.539zM11.87 6.37v1.566H10.2a4.62 4.62 0 0 1 .414-1.815c.399.144.83.238 1.256.25zm2.561-1.161a3.346 3.346 0 0 1-.918.58 5.243 5.243 0 0 0-1.134-1.443 3.993 3.993 0 0 1 2.052.863zm1.322 2.727h-1.665a5.096 5.096 0 0 0-.442-1.909c.354-.166.69-.376.984-.63a3.723 3.723 0 0 1 1.123 2.539zM12.14 6.37v1.566h1.66c0-.631-.155-1.234-.415-1.815a4.017 4.017 0 0 1-1.245.25zm-2.571 4.57c.277-.216.597-.454.918-.57.299.559.67 1.018 1.129 1.433a4.05 4.05 0 0 1-2.047-.863zM8.242 8.208h1.67c.039.691.182 1.3.454 1.924a4.202 4.202 0 0 0-1.002.625 3.864 3.864 0 0 1-1.122-2.55zm3.628 1.57v-1.57H10.2c.01.63.154 1.255.414 1.814.399-.144.83-.232 1.256-.244zm2.561 1.162a3.41 3.41 0 0 0-.918-.57 5.113 5.113 0 0 1-1.134 1.433 4.088 4.088 0 0 0 2.052-.863zm1.322-2.732h-1.665a5.075 5.075 0 0 1-.442 1.924c.354.166.674.366.984.625a3.806 3.806 0 0 0 1.123-2.55zm-3.612 1.57v-1.57h1.66c0 .63-.155 1.244-.415 1.814a4.01 4.01 0 0 0-1.245-.244zm-.271-5.276a4.387 4.387 0 0 0-1.123 1.382c.36.122.741.222 1.123.222zm.271 0c.443.365.846.846 1.112 1.382a3.26 3.26 0 0 1-1.112.222zm-.271 7.146a4.23 4.23 0 0 1-1.123-1.388c.36-.128.741-.2 1.123-.2zm.271.011c.443-.37.846-.868 1.112-1.4a3.715 3.715 0 0 0-1.112-.198z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Iata</title><path d="M3.417 19.695l.98-4.885H5.99l-.973 4.884zm4.808-1.6h1.012l-.26-1.792zm-2.235 1.6l2.412-4.885h1.57l.99 4.884H9.487l-.088-.58H7.827l-.25.58zm6.439 0l.547-3.674h-1.394l.238-1.233h4.28l-.237 1.233h-1.327L14 19.695zm5.354-1.6h1.012l-.26-1.792zm-2.23 1.6l2.407-4.885h1.57l.99 4.884h-1.487l-.073-.58h-1.57l-.25.58zM24 9.289h-7.495c-.276 1.372-1.228 2.517-3.125 3.308.215.652.95 1.255 1.714 1.255h4.066c.62 0 1.112-.52 1.31-.94h-4.13c-.254-.044-.265-.25-.01-.271h4.06c.524 0 1-.448 1.276-.935h-4.73c-.237-.04-.237-.238 0-.277h4.77c.48 0 .918-.558 1.1-.934h-5.232c-.26-.033-.26-.277 0-.282H22.9c.415 0 .819-.454 1.1-.924zm-24 0h7.495c.27 1.372 1.228 2.517 3.12 3.308-.216.652-.952 1.255-1.715 1.255H4.84c-.62 0-1.112-.52-1.311-.94h4.13c.25-.044.266-.25.01-.271H3.608c-.525 0-1-.448-1.272-.935H7.07c.238-.04.238-.238 0-.277H2.3c-.481 0-.918-.558-1.1-.934h5.232c.26-.033.26-.277 0-.282H1.106c-.42 0-.824-.454-1.106-.924zm9.569-4.114c.277.238.586.448.918.58.282-.553.675-1.028 1.129-1.45a4.05 4.05 0 0 0-2.047.87zM8.242 7.902h1.67a5.358 5.358 0 0 1 .454-1.91 4.021 4.021 0 0 1-1.002-.63 3.83 3.83 0 0 0-1.122 2.54zm3.628-1.567V7.9H10.2a4.62 4.62 0 0 1 .414-1.815c.399.143.83.237 1.256.25zm2.56-1.161a3.346 3.346 0 0 1-.917.58 5.243 5.243 0 0 0-1.134-1.443 3.993 3.993 0 0 1 2.052.863zM15.754 7.9h-1.665a5.096 5.096 0 0 0-.442-1.91c.354-.165.69-.375.984-.63a3.723 3.723 0 0 1 1.123 2.54zM12.14 6.335V7.9h1.66c0-.631-.155-1.234-.415-1.815a4.017 4.017 0 0 1-1.245.25zm-2.571 4.57c.277-.216.597-.454.918-.57.299.559.67 1.018 1.129 1.433a4.05 4.05 0 0 1-2.047-.863zM8.242 8.173h1.67c.039.69.182 1.3.454 1.924a4.202 4.202 0 0 0-1.002.625 3.864 3.864 0 0 1-1.122-2.55zm3.628 1.57v-1.57H10.2c.01.63.154 1.255.414 1.814.399-.144.83-.232 1.256-.244zm2.56 1.162a3.41 3.41 0 0 0-.917-.57 5.113 5.113 0 0 1-1.134 1.433 4.088 4.088 0 0 0 2.052-.863zm1.323-2.732h-1.665a5.075 5.075 0 0 1-.442 1.924c.354.166.674.366.984.625a3.806 3.806 0 0 0 1.123-2.55zm-3.612 1.57v-1.57h1.66c0 .63-.155 1.244-.415 1.814a4.01 4.01 0 0 0-1.245-.244zm-.271-5.276a4.387 4.387 0 0 0-1.123 1.382c.36.122.74.222 1.123.222zm.27 0c.444.365.847.846 1.113 1.382a3.26 3.26 0 0 1-1.112.222zm-.27 7.146a4.23 4.23 0 0 1-1.123-1.388c.36-.128.74-.2 1.123-.2zm.27.01c.444-.37.847-.867 1.113-1.4a3.715 3.715 0 0 0-1.112-.197z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ibeacon.svg b/assets/lib/simple-icons/icons/ibeacon.svg
index f33fddbe..92044f40 100644
--- a/assets/lib/simple-icons/icons/ibeacon.svg
+++ b/assets/lib/simple-icons/icons/ibeacon.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>iBeacon icon</title><path d="M12 .053c-6.617 0-12 5.383-12 12 0 6.077 4.541 11.113 10.408 11.894v-.364C4.741 22.804.36 17.931.36 12.053.36 5.635 5.582.413 12 .413s11.64 5.222 11.64 11.64c0 5.878-4.38 10.751-10.048 11.53v.364C19.459 23.166 24 18.13 24 12.053c0-6.617-5.383-12-12-12zm0 1.696c-5.653 0-10.251 4.598-10.251 10.25 0 5.112 3.76 9.362 8.66 10.129v-.366c-4.7-.763-8.3-4.85-8.3-9.762 0-5.454 4.437-9.89 9.891-9.89s9.891 4.436 9.891 9.89c0 4.912-3.6 8.999-8.3 9.762v.366c4.9-.767 8.66-5.017 8.66-10.128 0-5.653-4.598-10.25-10.251-10.25zm0 1.736c-4.695 0-8.515 3.82-8.515 8.515 0 4.151 2.986 7.618 6.923 8.365v-.367C6.671 19.256 3.845 15.952 3.845 12c0-4.496 3.659-8.155 8.155-8.155 4.496 0 8.154 3.659 8.154 8.155 0 3.952-2.825 7.256-6.562 7.998v.367c3.937-.747 6.923-4.214 6.923-8.365 0-4.695-3.82-8.515-8.515-8.515zm0 1.725A6.798 6.798 0 0 0 5.21 12c0 3.196 2.22 5.883 5.198 6.602v-.372C7.63 17.52 5.57 14.996 5.57 12A6.437 6.437 0 0 1 12 5.57 6.437 6.437 0 0 1 18.43 12c0 2.996-2.06 5.52-4.838 6.23v.372c2.979-.719 5.198-3.406 5.198-6.602A6.798 6.798 0 0 0 12 5.21zm0 1.749A5.047 5.047 0 0 0 6.959 12a5.05 5.05 0 0 0 3.45 4.782v-.38A4.689 4.689 0 0 1 7.318 12c0-2.58 2.1-4.68 4.681-4.68s4.68 2.1 4.68 4.68a4.689 4.689 0 0 1-3.088 4.402v.38A5.05 5.05 0 0 0 17.042 12 5.047 5.047 0 0 0 12 6.96zm0 1.737A3.308 3.308 0 0 0 8.696 12c0 1.245.692 2.33 1.712 2.894v-.42a2.943 2.943 0 1 1 3.184 0v.42A3.306 3.306 0 0 0 15.304 12 3.308 3.308 0 0 0 12 8.696zm0 1.712A1.592 1.592 0 0 0 10.408 12 1.592 1.592 0 0 0 12 13.592 1.592 1.592 0 0 0 13.592 12 1.592 1.592 0 0 0 12 10.408Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>iBeacon</title><path d="M12 .053c-6.617 0-12 5.383-12 12 0 6.077 4.541 11.113 10.408 11.894v-.364C4.741 22.804.36 17.931.36 12.053.36 5.635 5.582.413 12 .413s11.64 5.222 11.64 11.64c0 5.878-4.38 10.751-10.048 11.53v.364C19.459 23.166 24 18.13 24 12.053c0-6.617-5.383-12-12-12zm0 1.696c-5.653 0-10.251 4.598-10.251 10.25 0 5.112 3.76 9.362 8.66 10.129v-.366c-4.7-.763-8.3-4.85-8.3-9.762 0-5.454 4.437-9.89 9.891-9.89s9.891 4.436 9.891 9.89c0 4.912-3.6 8.999-8.3 9.762v.366c4.9-.767 8.66-5.017 8.66-10.128 0-5.653-4.598-10.25-10.251-10.25zm0 1.736c-4.695 0-8.515 3.82-8.515 8.515 0 4.151 2.986 7.618 6.923 8.365v-.367C6.671 19.256 3.845 15.952 3.845 12c0-4.496 3.659-8.155 8.155-8.155 4.496 0 8.154 3.659 8.154 8.155 0 3.952-2.825 7.256-6.562 7.998v.367c3.937-.747 6.923-4.214 6.923-8.365 0-4.695-3.82-8.515-8.515-8.515zm0 1.725A6.798 6.798 0 0 0 5.21 12c0 3.196 2.22 5.883 5.198 6.602v-.372C7.63 17.52 5.57 14.996 5.57 12A6.437 6.437 0 0 1 12 5.57 6.437 6.437 0 0 1 18.43 12c0 2.996-2.06 5.52-4.838 6.23v.372c2.979-.719 5.198-3.406 5.198-6.602A6.798 6.798 0 0 0 12 5.21zm0 1.749A5.047 5.047 0 0 0 6.959 12a5.05 5.05 0 0 0 3.45 4.782v-.38A4.689 4.689 0 0 1 7.318 12c0-2.58 2.1-4.68 4.681-4.68s4.68 2.1 4.68 4.68a4.689 4.689 0 0 1-3.088 4.402v.38A5.05 5.05 0 0 0 17.042 12 5.047 5.047 0 0 0 12 6.96zm0 1.737A3.308 3.308 0 0 0 8.696 12c0 1.245.692 2.33 1.712 2.894v-.42a2.943 2.943 0 1 1 3.184 0v.42A3.306 3.306 0 0 0 15.304 12 3.308 3.308 0 0 0 12 8.696zm0 1.712A1.592 1.592 0 0 0 10.408 12 1.592 1.592 0 0 0 12 13.592 1.592 1.592 0 0 0 13.592 12 1.592 1.592 0 0 0 12 10.408Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ibm.svg b/assets/lib/simple-icons/icons/ibm.svg
index 0da23ee4..b36e9dc8 100644
--- a/assets/lib/simple-icons/icons/ibm.svg
+++ b/assets/lib/simple-icons/icons/ibm.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" role="img"><title>IBM icon</title><path d="M0 16.144h4.667v.668H0zM0 14.862h4.667v.67H0zM1.33 13.583h2.003v.671H1.33zM1.33 12.305h2.003v.67H1.33zM1.33 11.025h2.003v.671H1.33zM1.33 9.744h2.003v.671H1.33zM0 8.466h4.667v.67H0zM0 7.187h4.667v.67H0zM5.332 15.532h7.177c.12-.206.212-.433.267-.67H5.333v.67zM11.95 12.305H6.667v.67h5.843a2.67 2.67 0 00-.558-.67zM6.666 11.025v.671h5.285c.223-.188.41-.414.559-.671H6.666zM12.509 8.466H5.332v.67h7.443a2.891 2.891 0 00-.266-.67zM10.303 7.187H5.332v.67h6.685a2.522 2.522 0 00-1.714-.67zM6.666 9.744h2v.671h-2zM10.667 10.415h2.092c.059-.214.09-.44.09-.671h-2.182v.671zM6.666 13.583h1.999v.671h-2zM10.667 13.583v.671h2.182c0-.23-.031-.457-.09-.671h-2.092zM5.332 16.807l4.97.007c.667 0 1.268-.257 1.717-.67H5.332v.663zM13.334 16.144h3.332v.668h-3.332zM13.334 14.862h3.332v.67h-3.332zM14.665 13.583h2v.671h-2zM14.665 12.305h2v.67h-2zM17.594 8.466h-4.26v.67h4.49zM17.152 7.187h-3.818v.669h4.048zM20.665 16.144H24v.668h-3.335zM20.665 14.862H24v.67h-3.335zM20.665 13.583h2v.671h-2zM20.665 12.305h2v.67h-2zM20.665 11.696h2v-.671h-3.811l-.188.542-.188-.542H14.665v.671h2v-.616l.213.616h3.575l.212-.616zM22.666 9.744h-3.37l-.23.671h3.6zM20.183 7.187l-.231.669H24v-.669zM18.666 16.807l.23-.663h-.461zM18.224 15.532h.884l.238-.67h-1.357zM17.775 14.254h1.782l.235-.671h-2.253zM17.327 12.975h2.679l.229-.67h-3.138zM14.665 10.415h3.602l-.231-.671h-3.371zM19.51 9.136H24v-.67h-4.262z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>IBM</title><path d="M23.544 15.993c.038 0 .06-.017.06-.053v-.036c0-.035-.022-.052-.06-.052h-.09v.14zm-.09.262h-.121v-.498h.225c.112 0 .169.066.169.157 0 .079-.036.129-.09.15l.111.19h-.133l-.092-.17h-.07zm.434-.222v-.062c0-.2-.157-.357-.363-.357a.355.355 0 00-.363.357v.062c0 .2.156.358.363.358a.355.355 0 00.363-.358zm-.838-.03c0-.28.212-.492.475-.492.264 0 .475.213.475.491 0 .279-.211.491-.475.491a.477.477 0 01-.475-.49zM16.21 8.13l-.216-.624h-3.56v.624zm.413 1.19l-.216-.623h-3.973v.624zm2.65 7.147h3.107v-.624h-3.108zm0-1.192h3.107v-.623h-3.108zm0-1.19h1.864v-.624h-1.865zm0-1.191h1.864v-.624h-1.865zm0-1.191h1.864v-.624h-3.555l-.175.504-.175-.504h-3.555v.624h1.865v-.574l.2.574h3.33l.2-.574zm1.864-1.815h-3.142l-.217.624h3.359zm-7.46 3.006h1.865v-.624h-1.865zm0 1.19h1.865v-.623h-1.865zm-1.243 1.191h3.108v-.623h-3.108zm0 1.192h3.108v-.624h-3.108zm6.386-8.961l-.216.624h3.776v-.624zm-.629 1.815h4.19v-.624h-3.974zm-4.514 1.19h3.359l-.216-.623h-3.143zm2.482 2.383h2.496l.218-.624h-2.932zm.417 1.19h1.662l.218-.623h-2.098zm.416 1.191h.83l.218-.623h-1.266zm.414 1.192l.217-.624h-.432zm-12.433-.006l4.578.006c.622 0 1.18-.237 1.602-.624h-6.18zm4.86-3v.624h2.092c0-.216-.03-.425-.083-.624zm-3.616.624h1.865v-.624H6.217zm3.617-3.573h2.008c.053-.199.083-.408.083-.624H9.834zm-3.617 0h1.865v-.624H6.217zM9.55 7.507H4.973v.624h6.18a2.36 2.36 0 00-1.602-.624zm2.056 1.191H4.973v.624h6.884a2.382 2.382 0 00-.25-.624zm-5.39 2.382v.624h4.87c.207-.176.382-.387.519-.624zm4.87 1.191h-4.87v.624h5.389a2.39 2.39 0 00-.519-.624zm-6.114 3.006h6.634c.11-.193.196-.402.25-.624H4.973zM0 8.13h4.352v-.624H0zm0 1.191h4.352v-.624H0zm1.243 1.191h1.865v-.624H1.243zm0 1.191h1.865v-.624H1.243zm0 1.19h1.865v-.623H1.243zm0 1.192h1.865v-.624H1.243zM0 15.276h4.352v-.623H0zm0 1.192h4.352v-.624H0Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ibmcloud.svg b/assets/lib/simple-icons/icons/ibmcloud.svg
new file mode 100644
index 00000000..86a258bf
--- /dev/null
+++ b/assets/lib/simple-icons/icons/ibmcloud.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>IBM Cloud</title><path d="M11.712 1.508c-.18.172-.18.18-.18 1.567 0 1.36 0 1.395.166 1.546.216.201.374.201.59-.022.18-.172.18-.187.18-1.545 0-1.36 0-1.374-.18-1.546-.094-.1-.223-.18-.288-.18-.065 0-.194.08-.288.18zM5.35 3.198a.495.495 0 0 0-.144.294c0 .18 1.244 2.351 1.453 2.524.079.072.2.13.266.13.18 0 .438-.267.438-.447 0-.165-1.15-2.214-1.387-2.487-.18-.194-.44-.202-.626-.015zm12.676.014c-.237.266-1.388 2.322-1.388 2.487 0 .18.26.446.439.446a.505.505 0 0 0 .266-.13c.194-.165 1.452-2.357 1.452-2.53 0-.18-.273-.43-.467-.43-.086 0-.223.07-.302.157zm-7.55 3.25c-3.27.625-5.902 3.242-6.456 6.434-.266 1.482.065 3.818.532 3.818.18 0 .2-.13.13-.79-.094-.849-.015-2.46.15-3.107a7.773 7.773 0 0 1 2.042-3.515c1.51-1.496 3.452-2.244 5.55-2.129 1.777.101 3.395.74 4.81 1.927.483.403.627.44.627.158 0-.15-.13-.323-.532-.719-.957-.934-2.157-1.603-3.567-1.977-.704-.187-2.523-.244-3.285-.1zM.69 7.813c-.165.21-.165.403 0 .59.158.172 2.114 1.344 2.409 1.438.194.064.525-.209.525-.424 0-.26-.18-.41-1.338-1.072C1.2 7.735.856 7.612.69 7.813zm21.009.547c-1.294.747-1.323.77-1.323 1.013 0 .28.158.46.403.46.194-.007 2.192-1.1 2.494-1.365.15-.144.159-.475.008-.626-.21-.209-.482-.122-1.582.518zm-4.523 1.955c-.64.094-1.804.496-2.185.748-.21.144-.338.288-.352.396-.022.15-.008.165.18.13.107-.023.46-.138.776-.253.812-.302 1.524-.402 2.538-.352 1.423.065 2.4.49 3.393 1.488 1.029 1.021 1.496 2.121 1.56 3.638.137 3.063-1.66 5.098-4.903 5.565-.726.1-12.755.094-13.43-.007-1.985-.31-3.452-1.61-3.79-3.358-.13-.64-.057-1.94.137-2.48.288-.827.597-1.287 1.309-1.999.467-.46.683-.719.64-.776-.144-.238-1.043.266-1.74.977-.518.525-.87 1.122-1.115 1.855-.165.504-.194.69-.194 1.51 0 1.064.108 1.568.503 2.373.496 1.014 1.25 1.74 2.366 2.272 1.337.64 1.466.654 9.059.618 6.24-.02 6.492-.029 7.118-.172 2.567-.59 4.192-2.085 4.796-4.408.122-.489.158-.826.158-1.653.007-1.28-.108-1.812-.62-2.855a5.995 5.995 0 0 0-1.767-2.12c-.518-.382-1.445-.82-2.1-.986-.654-.165-1.754-.237-2.337-.15z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ibmwatson.svg b/assets/lib/simple-icons/icons/ibmwatson.svg
new file mode 100644
index 00000000..e35e5600
--- /dev/null
+++ b/assets/lib/simple-icons/icons/ibmwatson.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>IBM Watson</title><path d="M14.834 20.264c-2.534 0-5.224-1.257-7.136-3.002.989-4.477 4.969-9.45 7.522-9.45.289 0 .533.06.865.256.505.325.963.688 1.349 1.071 1.166 1.157 2.264 3.117 2.264 5.517 0 1.878-.633 3.339-1.307 4.241-.733.981-2.111 1.367-3.557 1.367m-2.97 2.038c-1.65 0-3.016-.569-3.612-.87-.797-.416-1.006-1.171-1.006-2.127 0-.278.018-.563.052-.852 2.011 1.622 4.69 2.765 7.377 2.765.591 0 1.134-.097 1.626-.228l.001.001c-.897.625-2.492 1.311-4.438 1.311M12.458 6a8.36 8.36 0 0 0-2.452.403c-.051.017-.112.047-.112.101 0 .058.046.087.083.087.038 0 .165-.033.249-.046a7.676 7.676 0 0 1 1.455-.111c.789 0 1.599.16 2.375.431-3.099 1.173-6.152 5.54-7.211 9.453-1.125-1.275-1.832-2.723-1.832-4.109 0-2.272 1.846-3.668 4.524-3.668.1 0 .154 0 .197-.011a.083.083 0 0 0 .065-.083c0-.049-.035-.077-.099-.088a6.665 6.665 0 0 0-1.027-.08c-2.658 0-4.593 1.396-4.593 3.936 0 1.728.981 3.601 2.523 5.18a9.178 9.178 0 0 0-.151 1.586c0 .197.02.611.089 1.046-.919-.83-1.633-1.826-2.02-2.876-.076-.206-.22-.585-.258-.743-.019-.077-.046-.104-.103-.104-.049 0-.085.038-.085.097 0 .069.027.241.037.295.526 2.893 3.336 6.511 7.909 6.511 5.074 0 8.582-4.272 8.582-8.718C20.604 9.897 17.159 6 12.458 6m9.072 3.786l2.237-1.315a.48.48 0 0 0 .171-.649.462.462 0 0 0-.629-.178l-.008.005-2.237 1.315a.48.48 0 0 0-.171.648.468.468 0 0 0 .404.238.473.473 0 0 0 .233-.064M17.641 5.54l1.315-2.237a.462.462 0 0 0-.165-.632l-.009-.005a.478.478 0 0 0-.648.171l-1.315 2.237a.462.462 0 0 0 .165.632l.009.005a.482.482 0 0 0 .648-.171m-5.188-1.605V1.273c0-.265-.203-.48-.453-.48s-.453.215-.453.48v2.661c0 .266.203.481.453.481s.453-.215.453-.48M6.782 5.711a.46.46 0 0 0 .178-.628l-.004-.009-1.315-2.237a.48.48 0 0 0-.648-.171.463.463 0 0 0-.179.629l.005.009L6.133 5.54a.476.476 0 0 0 .649.171M2.703 9.849a.461.461 0 0 1-.233-.063L.234 8.471a.48.48 0 0 1-.171-.649.462.462 0 0 1 .628-.179l.009.006 2.237 1.315a.48.48 0 0 1 .171.648.465.465 0 0 1-.405.237"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/iceland.svg b/assets/lib/simple-icons/icons/iceland.svg
new file mode 100644
index 00000000..636c9734
--- /dev/null
+++ b/assets/lib/simple-icons/icons/iceland.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Iceland</title><path d="M7.7442 13.9186c-.9419 0-1.2558-.4186-1.3256-.7674L9 12.593c0-1.8837-1.1512-2.2325-1.8837-2.2325-.9419 0-1.9884.6976-1.9884 2.1976 0 1.3256.907 2.1628 2.407 2.1628.4535 0 .9418-.1046 1.221-.2093l-.1396-.6976c-.2442.0697-.593.1046-.8721.1046zm-.628-2.7558c.3838 0 .6629.279.6978.8372l-1.5.314c.0348-.7326.314-1.1512.8023-1.1512zm6.0698-.8023c-.6627 0-1.2558.1744-1.6046.279 0 .035.1395.6977.1744.7675.3837-.1396.907-.2442 1.2558-.2442.5582 0 .8024.1744.8024.5581v.1744c-1.7442 0-2.4768.628-2.4768 1.4303 0 .907.8023 1.3953 1.9535 1.3953.7674 0 1.3953-.1395 1.6744-.2093v-2.7209c.0349-.9767-.5581-1.4302-1.779-1.4302zm.628 3.5232c-.1047.0349-.314.0349-.4187.0349-.3837 0-.8372-.1744-.8372-.628 0-.4534.3838-.6976 1.221-.6627v1.2558zm9-4.6046v1.186c-.1396-.0349-.314-.0698-.593-.0698-1.0117 0-2.093.6977-2.093 2.1977 0 1.3256.872 2.128 2.3022 2.128.593 0 1.2907-.1047 1.5698-.1745V9.2791Zm0 4.6395c-.1047.0349-.2442.0349-.314.0349-.7326 0-1.1512-.5233-1.1512-1.3954 0-.6628.2791-1.3604 1.0814-1.3604.1047 0 .314.0349.3838.0349zM0 9.2791h1.0814v5.2325H0Zm3.9767 5.4418c-1.2209 0-2.0232-.8372-2.0232-2.0581 0-1.3256.872-2.2675 2.0581-2.2675.2791 0 .628.0698.8372.1745l-.2093.7325c-.1395-.0349-.314-.1046-.4535-.1046-.6627 0-1.1162.5581-1.1162 1.3953 0 .8372.4186 1.3256 1.0465 1.3256.1744 0 .4186-.0349.6279-.1046l.1744.7325c-.2093.0698-.6279.1744-.9419.1744zM9.628 9.2791h1.0814v5.2325H9.6279ZM19.5 14.5116h-1.1512v-2.686c0-.5582-.279-.6977-.6976-.6977-.2093 0-.4535.0349-.628.0698v3.314h-1.1511v-3.942c.279-.0697 1.1163-.2092 1.814-.2092 1.2558 0 1.8139.4535 1.8139 1.3953z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/icinga.svg b/assets/lib/simple-icons/icons/icinga.svg
new file mode 100644
index 00000000..5ed60b95
--- /dev/null
+++ b/assets/lib/simple-icons/icons/icinga.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Icinga</title><path d="M13.8285.0086a2.122 2.122 0 00-1.1546.4705c-.9134.7446-1.052 2.0897-.3057 3.0038.1738.2135.382.3803.6085.5076l-1.9992 4.1526c-1.3307-.5156-2.8925-.3242-4.0768.6411a4.1264 4.1264 0 00-.2805.2538L4.3895 7.2125c.124-.31.1253-.6679-.0326-.9913-.2979-.6072-1.0314-.859-1.6385-.561-.6079.2963-.8581 1.0298-.561 1.637.2979.6063 1.029.8595 1.637.5624.0991-.0483.1849-.1119.2642-.181l2.1846 1.7868c-1.1343 1.4732-1.1567 3.5843.0712 5.0876.2648.3253.5696.5978.9009.8193l-2.5067 3.5945c-.5002-.3428-1.1085-.5336-1.7602-.4838-1.522.114-2.663 1.4395-2.5482 2.9608.114 1.522 1.4403 2.663 2.9623 2.5483 1.522-.114 2.6622-1.4396 2.5482-2.9609-.0494-.6638-.3388-1.2483-.7658-1.6948l2.569-3.6836c1.1473.5518 2.5128.5527 3.6718-.0505l1.444 2.4117c-.1372.1332-.2392.3041-.2627.509-.0547.472.2836.899.7555.9529.471.054.8965-.2836.9528-.7555.054-.471-.2836-.898-.7554-.9528-.057-.007-.1097.0104-.1648.0148l-1.4856-2.4829c.072-.0512.1443-.1008.2137-.1573 1.0746-.8777 1.584-2.1864 1.493-3.4729l6.968-1.7186c.3257.484.888.7887 1.5108.742.9248-.0698 1.6171-.8747 1.548-1.7987-.07-.924-.8755-1.6156-1.7988-1.5464-.9247.0706-1.6163.874-1.5464 1.7972.007.0956.0267.1876.049.2776l-6.8092 1.68c-.1312-.6151-.4011-1.2094-.8252-1.7305-.3373-.4132-.7407-.7403-1.1799-.9854l2.017-4.1882c.6295.1558 1.3211.0324 1.8625-.4081.9134-.7447 1.0504-2.092.3058-3.0054-.466-.5709-1.1665-.8375-1.8492-.7762z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/icloud.svg b/assets/lib/simple-icons/icons/icloud.svg
index d0fd35bc..e7c7e075 100644
--- a/assets/lib/simple-icons/icons/icloud.svg
+++ b/assets/lib/simple-icons/icons/icloud.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" role="img"><title>iCloud icon</title><path d="M20.013 10.726l.001-.028A6.346 6.346 0 0 0 8.09 7.67a3.414 3.414 0 0 0-4.989 2.829A4.72 4.72 0 0 0 0 14.929a4.72 4.72 0 0 0 4.719 4.719h14.807a4.475 4.475 0 0 0 .487-8.922z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>iCloud</title><path d="M13.762 4.29a6.51 6.51 0 0 0-5.669 3.332 3.571 3.571 0 0 0-1.558-.36 3.571 3.571 0 0 0-3.516 3A4.918 4.918 0 0 0 0 14.796a4.918 4.918 0 0 0 4.92 4.914 4.93 4.93 0 0 0 .617-.045h14.42c2.305-.272 4.041-2.258 4.043-4.589v-.009a4.594 4.594 0 0 0-3.727-4.508 6.51 6.51 0 0 0-6.511-6.27z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/icomoon.svg b/assets/lib/simple-icons/icons/icomoon.svg
index 0e62ab89..f0ca01ce 100644
--- a/assets/lib/simple-icons/icons/icomoon.svg
+++ b/assets/lib/simple-icons/icons/icomoon.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>IcoMoon icon</title><path d="M12 0C10.34 0 8.79 .313 7.34 .938A12 12 0 0 0 3.5 3.5A12 12 0 0 0 .937 7.34C.313 8.79 0 10.34 0 12C0 13.66 .313 15.21 .938 16.66A12 12 0 0 0 3.5 20.5A12 12 0 0 0 7.34 23.06C8.79 23.69 10.34 24 12 24C13.66 24 15.21 23.69 16.66 23.06A12 12 0 0 0 20.5 20.5A12 12 0 0 0 23.06 16.66C23.69 15.21 24 13.66 24 12C24 10.34 23.69 8.79 23.06 7.34A12 12 0 0 0 20.5 3.5A12 12 0 0 0 16.66 .937C15.21 .313 13.66 0 12 0M8.88 1.5A11.65 11.65 0 0 1 11.37 3.42A12.31 12.31 0 0 1 13.27 5.87C13.8 6.77 14.2 7.73 14.5 8.77C14.78 9.8 14.93 10.88 14.93 12S14.78 14.2 14.5 15.23A11.71 11.71 0 0 1 13.27 18.13A12.31 12.31 0 0 1 11.37 20.58C10.62 21.33 9.79 21.96 8.88 22.5A11.91 11.91 0 0 1 6.42 20.58A12.31 12.31 0 0 1 4.5 18.13A11.71 11.71 0 0 1 3.31 15.23A11.63 11.63 0 0 1 2.86 12C2.86 10.88 3 9.8 3.31 8.77A11.71 11.71 0 0 1 4.5 5.87A12.31 12.31 0 0 1 6.42 3.42C7.17 2.67 8 2.04 8.88 1.5M8.86 9.23C8.09 9.23 7.44 9.5 6.9 10.04A2.67 2.67 0 0 0 6.09 12C6.09 12.77 6.36 13.42 6.9 13.96C7.44 14.5 8.09 14.77 8.86 14.77C9.63 14.77 10.28 14.5 10.82 13.96C11.36 13.42 11.63 12.77 11.63 12S11.36 10.58 10.82 10.04A2.67 2.67 0 0 0 8.86 9.23Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>IcoMoon</title><path d="M12 0C10.34 0 8.79 .313 7.34 .938A12 12 0 0 0 3.5 3.5A12 12 0 0 0 .937 7.34C.313 8.79 0 10.34 0 12C0 13.66 .313 15.21 .938 16.66A12 12 0 0 0 3.5 20.5A12 12 0 0 0 7.34 23.06C8.79 23.69 10.34 24 12 24C13.66 24 15.21 23.69 16.66 23.06A12 12 0 0 0 20.5 20.5A12 12 0 0 0 23.06 16.66C23.69 15.21 24 13.66 24 12C24 10.34 23.69 8.79 23.06 7.34A12 12 0 0 0 20.5 3.5A12 12 0 0 0 16.66 .937C15.21 .313 13.66 0 12 0M8.88 1.5A11.65 11.65 0 0 1 11.37 3.42A12.31 12.31 0 0 1 13.27 5.87C13.8 6.77 14.2 7.73 14.5 8.77C14.78 9.8 14.93 10.88 14.93 12S14.78 14.2 14.5 15.23A11.71 11.71 0 0 1 13.27 18.13A12.31 12.31 0 0 1 11.37 20.58C10.62 21.33 9.79 21.96 8.88 22.5A11.91 11.91 0 0 1 6.42 20.58A12.31 12.31 0 0 1 4.5 18.13A11.71 11.71 0 0 1 3.31 15.23A11.63 11.63 0 0 1 2.86 12C2.86 10.88 3 9.8 3.31 8.77A11.71 11.71 0 0 1 4.5 5.87A12.31 12.31 0 0 1 6.42 3.42C7.17 2.67 8 2.04 8.88 1.5M8.86 9.23C8.09 9.23 7.44 9.5 6.9 10.04A2.67 2.67 0 0 0 6.09 12C6.09 12.77 6.36 13.42 6.9 13.96C7.44 14.5 8.09 14.77 8.86 14.77C9.63 14.77 10.28 14.5 10.82 13.96C11.36 13.42 11.63 12.77 11.63 12S11.36 10.58 10.82 10.04A2.67 2.67 0 0 0 8.86 9.23Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/icon.svg b/assets/lib/simple-icons/icons/icon.svg
index 40a8d8b9..edb02cea 100644
--- a/assets/lib/simple-icons/icons/icon.svg
+++ b/assets/lib/simple-icons/icons/icon.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>ICON icon</title><path d="M21.605.021a2.397 2.397 0 00-.47 4.747 2.397 2.397 0 10.47-4.746zm-9.584 2.395C6.73 2.416 2.437 6.707 2.437 12c0 2.142.703 4.121 1.891 5.717l2.586-2.586a5.99 5.99 0 018.236-8.238l2.586-2.586a9.537 9.537 0 00-5.715-1.891zm7.692 3.867L17.127 8.87a5.989 5.989 0 01-8.236 8.238l-2.586 2.584a9.543 9.543 0 005.716 1.893c5.293 0 9.583-4.29 9.583-9.584 0-2.142-.704-4.12-1.891-5.717zM2.396 19.187a2.398 2.398 0 00-.47 4.749 2.402 2.402 0 002.822-2.823 2.399 2.399 0 00-2.352-1.925z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ICON</title><path d="M1.92669 23.93457c-.93754-.17758-1.70436-.94464-1.88217-1.88241-.31993-1.6878 1.13237-3.1401 2.82018-2.82018.93754.17781 1.7046.94463 1.8824 1.88217.31993 1.68804-1.13237 3.14034-2.82041 2.82042zM21.13507 4.76808c-.93754-.1778-1.7046-.94463-1.8824-1.8824-.31993-1.68805 1.13284-3.14034 2.82065-2.82019.93777.17805 1.70436.94487 1.88217 1.88241.31992 1.6878-1.13261 3.1401-2.82042 2.82018zm-9.11415 1.24226c1.1475 0 2.21912.32347 3.13017.88292l2.58538-2.58562c-1.59582-1.1877-3.57352-1.89092-5.71555-1.89092-5.29278 0-9.58347 4.29045-9.58347 9.58323 0 2.14227.70321 4.11997 1.89116 5.7158l2.58538-2.5854c-.55945-.91105-.88268-1.9829-.88268-3.1304 0-3.30799 2.68162-5.98961 5.9896-5.98961zm5.10664 2.85936c.55969.91106.88292 1.98267.88292 3.13018 0 3.30798-2.68162 5.9896-5.98961 5.9896-1.1475 0-2.21935-.323-3.13041-.88268L6.30508 19.6922c1.59582 1.18794 3.57352 1.89115 5.71579 1.89115 5.29278 0 9.58323-4.29045 9.58323-9.58346 0-2.14227-.70345-4.11974-1.89092-5.7158Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/iconfinder.svg b/assets/lib/simple-icons/icons/iconfinder.svg
new file mode 100644
index 00000000..a5b9d004
--- /dev/null
+++ b/assets/lib/simple-icons/icons/iconfinder.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Iconfinder</title><path d="M12 0C4.492 2.746-.885 11.312.502 19.963.502 19.963 4.989 24 12 24c7.01 0 11.496-4.037 11.496-4.037C24.882 11.312 19.508 2.746 12 0zm0 1.846s2.032.726 3.945 2.488c.073.067.13.163.129.277-.001.168-.128.287-.301.287a.496.496 0 01-.137-.027 6.537 6.537 0 00-2.316-.4 6.625 6.625 0 00-3.914 1.273l-.002.002a7.978 7.978 0 016.808.768C20.48 9.11 22.597 14.179 21.902 19c0 0-1.646 1.396-4.129 2.172a.369.369 0 01-.303-.026c-.144-.084-.185-.255-.1-.404a.492.492 0 01.094-.103 6.562 6.562 0 001.504-1.809 6.632 6.632 0 00.856-4.027l-.002-.002a7.949 7.949 0 01-3.838 5.383c-4.42 2.552-9.99 1.882-13.885-1.184 0 0-.388-2.124.182-4.662a.373.373 0 01.176-.25c.145-.084.31-.033.396.117a.448.448 0 01.045.13c.126.762.405 1.5.814 2.208a6.637 6.637 0 003.059 2.756 7.96 7.96 0 01-1.672-2.033 7.928 7.928 0 01-1.066-4.205C4.128 8.047 7.464 3.659 12 1.846zm0 7.623c-2.726 0-5.117.93-6.483 2.332-.064.32-.1.65-.1.984 0 3.146 2.947 5.695 6.583 5.695 3.635 0 6.584-2.549 6.584-5.695 0-.334-.038-.664-.102-.984C17.116 10.4 14.724 9.469 12 9.469zm0 .693a3.12 3.12 0 010 6.238 3.118 3.118 0 01-2.872-4.336 1.3 1.3 0 101.657-1.656A3.108 3.108 0 0112 10.162z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/iconify.svg b/assets/lib/simple-icons/icons/iconify.svg
index 6bc17aa4..6bff6e19 100644
--- a/assets/lib/simple-icons/icons/iconify.svg
+++ b/assets/lib/simple-icons/icons/iconify.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Iconify icon</title><path d="M12 19.5c3.75 0 7.159-3.379 6.768-4.125-.393-.75-2.268 1.875-6.768 1.875s-6-2.625-6.375-1.875S8.25 19.5 12 19.5zm4.125-12c.623 0 1.125.502 1.125 1.125v1.5c0 .623-.502 1.125-1.125 1.125A1.123 1.123 0 0115 10.125v-1.5c0-.623.502-1.125 1.125-1.125zm-8.25 0C8.498 7.5 9 8.002 9 8.625v1.5c0 .623-.502 1.125-1.125 1.125a1.123 1.123 0 01-1.125-1.125v-1.5c0-.623.502-1.125 1.125-1.125zM12 0C5.381 0 0 5.381 0 12s5.381 12 12 12 12-5.381 12-12S18.619 0 12 0zm0 1.5c5.808 0 10.5 4.692 10.5 10.5S17.808 22.5 12 22.5 1.5 17.808 1.5 12 6.192 1.5 12 1.5Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Iconify</title><path d="M12 19.5c3.75 0 7.159-3.379 6.768-4.125-.393-.75-2.268 1.875-6.768 1.875s-6-2.625-6.375-1.875S8.25 19.5 12 19.5zm4.125-12c.623 0 1.125.502 1.125 1.125v1.5c0 .623-.502 1.125-1.125 1.125A1.123 1.123 0 0115 10.125v-1.5c0-.623.502-1.125 1.125-1.125zm-8.25 0C8.498 7.5 9 8.002 9 8.625v1.5c0 .623-.502 1.125-1.125 1.125a1.123 1.123 0 01-1.125-1.125v-1.5c0-.623.502-1.125 1.125-1.125zM12 0C5.381 0 0 5.381 0 12s5.381 12 12 12 12-5.381 12-12S18.619 0 12 0zm0 1.5c5.808 0 10.5 4.692 10.5 10.5S17.808 22.5 12 22.5 1.5 17.808 1.5 12 6.192 1.5 12 1.5Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/iconjar.svg b/assets/lib/simple-icons/icons/iconjar.svg
index bf7c9900..554b09a8 100644
--- a/assets/lib/simple-icons/icons/iconjar.svg
+++ b/assets/lib/simple-icons/icons/iconjar.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>IconJar icon</title><path d="M5.506 5.875c-.492 0-.936-.453-.936-.954 0-1.155 2.858-2.01 6.11-2.01.295 0 .492 0 .492-.25 0-.452-.985-.602-.985-1.355 0-.804.936-1.306 2.118-1.306 1.183 0 2.119.502 2.119 1.306 0 .753-.985.853-.985 1.355 0 .151.148.251.492.251 3.252 0 6.16.803 6.16 2.009a.944.944 0 0 1-.937.953H5.507zM20.238 10.443c1.183.753 1.626 2.109 1.43 3.365l-1.38 7.58C19.992 22.897 18.71 24 17.182 24H7.526C6 24 4.718 22.896 4.422 21.389l-1.38-7.581a3.307 3.307 0 0 1 1.479-3.315c.69-.501.837-1.355 0-1.656-1.183-.452-.937-1.908.246-1.908h7.193c1.133 0 2.514.853 2.514 3.615 0 2.762-1.282 2.51-1.282 4.468 0 .854.69 1.758 1.527 1.859 1.43.15 2.267-.402 2.267-2.41 0-2.06-1.182-3.013-1.182-4.72 0-2.059 1.28-2.863 2.118-2.863h2.07c1.182 0 1.429 1.457.246 1.909-.837.35-.69 1.205 0 1.656z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>IconJar</title><path d="M5.15 5.875c-.492 0-.936-.453-.936-.954 0-1.155 2.858-2.01 6.11-2.01.295 0 .492 0 .492-.25 0-.452-.985-.602-.985-1.355C9.831.502 10.767 0 11.95 0c1.183 0 2.12.502 2.12 1.306 0 .753-.986.853-.986 1.355 0 .151.148.251.492.251 3.252 0 6.16.803 6.16 2.009a.944.944 0 01-.937.953H5.151zm14.732 4.568c1.183.753 1.626 2.109 1.43 3.365l-1.38 7.58C19.636 22.897 18.354 24 16.826 24H7.17c-1.526 0-2.808-1.104-3.104-2.611l-1.38-7.581a3.307 3.307 0 011.48-3.315c.69-.501.836-1.355 0-1.656-1.184-.452-.938-1.908.245-1.908h7.193c1.133 0 2.514.853 2.514 3.615 0 2.762-1.282 2.51-1.282 4.468 0 .854.69 1.758 1.527 1.859 1.43.15 2.267-.402 2.267-2.41 0-2.06-1.182-3.013-1.182-4.72 0-2.059 1.28-2.863 2.118-2.863h2.07c1.182 0 1.43 1.457.246 1.909-.837.35-.69 1.205 0 1.656z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/icons8.svg b/assets/lib/simple-icons/icons/icons8.svg
new file mode 100644
index 00000000..c5cff09c
--- /dev/null
+++ b/assets/lib/simple-icons/icons/icons8.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Icons8</title><path d="M12 0H0v24h12zM18 12c3.3137 0 6-2.6863 6-6s-2.6863-6-6-6-6 2.6863-6 6 2.6863 6 6 6zM18 24c3.3137 0 6-2.6863 6-6s-2.6863-6-6-6-6 2.6863-6 6 2.6863 6 6 6z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/icq.svg b/assets/lib/simple-icons/icons/icq.svg
index 0b7d22a6..191636cc 100644
--- a/assets/lib/simple-icons/icons/icq.svg
+++ b/assets/lib/simple-icons/icons/icq.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ICQ icon</title><path d="M15.406.133C14.65.07 13.93.223 13.226.6c-.94.503-1.61 1.275-1.912 2.28v.067l-.035.235-.134-.235-.335-.603c-.536-.837-1.206-1.34-2.044-1.574C8.03.604 7.426.673 6.79 1.01c-.705.436-1.106 1.106-1.274 2.045-.168.972 0 1.91.502 2.847l.236.336-.807-.267c-1.005-.236-1.944-.104-2.883.4C1.592 6.87.99 7.576.588 8.55c-.37.938-.336 1.843.133 2.68.202.37.504.67.772.872.402.402.905.636 1.508.736l.234.066-.502.438c-.47.402-.738.903-.906 1.406-.168.603-.1 1.207.236 1.777.17.268.334.503.602.67.268.235.604.403 1.006.436.738.17 1.508.168 2.346-.1l-.604 1.005-.168.436c-.335 1.074-.233 2.01.27 2.983.235.37.5.705.77 1.006.4.368.906.602 1.51.77 1.004.268 2.01.236 2.98-.267.94-.503 1.543-1.31 1.845-2.315l.032-.2c.637.703 1.24 1.173 1.912 1.34.67.202 1.34.17 1.944-.233.57-.335.973-.906 1.174-1.61.168-.738.168-1.474 0-2.312.335.235.67.4 1.072.502 1.073.335 2.01.3 2.95-.2.904-.504 1.508-1.308 1.81-2.347.268-1.005.202-1.977-.3-2.916l-.17-.27c-.267-.402-.537-.804-.94-1.072-.334-.235-.735-.402-1.104-.57 1.04-.503 1.776-1.207 2.11-2.112.236-.738.17-1.342-.167-1.945v-.066c-.402-.67-.937-1.105-1.775-1.34-.503-.1-1.072-.102-1.574-.068l-1.108.235.37-.838c.334-1.073.235-2.112-.335-3.084l-.1-.17c-.503-.838-1.24-1.34-2.246-1.607-.26-.067-.516-.113-.768-.133zm-.57 1.414c.323-.03.65.012.967.13.704.166 1.207.534 1.51 1.104v.003c.168.335.267.736.267 1.172l-.1.738c-.134.37-.302.703-.503 1.004l-3.016 3.69c-.3-.235-.637-.403-.972-.57l-.336-3.79-.033-1.34.032-.335c.168-.67.638-1.173 1.24-1.508.302-.168.62-.268.944-.297zm-6.883.537c.134-.004.276.03.41.096.603.168 1.106.603 1.508 1.44.17.336.336.67.403 1.073l.67 3.957-.504.168-2.983-3.252-.168-.334c-.27-.604-.435-1.173-.368-1.777v-.002c.034-.603.268-1.003.67-1.238.1-.084.227-.127.36-.13zm12.13 5.033c.15 0 .297.007.448.024.57.068.972.337 1.173.74l.135.433-.067.335c-.234.603-.738 1.074-1.575 1.442-.335.168-.703.235-1.105.3l-4.123.503-.067-.235-.068-.1.135-.167 3.387-2.816.4-.166.002-.002c.45-.2.885-.286 1.328-.29zM4.622 7.3c.16.008.324.033.49.075v.002l.908.367 2.95 2.147c-.27.336-.435.67-.536 1.005l-4.828.603-.334-.066c-.603-.1-1.007-.37-1.276-.87-.27-.503-.267-1.006-.066-1.51.235-.636.67-1.14 1.306-1.407.453-.252.906-.373 1.387-.346zm7.16 2.69c.604 0 1.175.236 1.544.604.47.47.67.973.67 1.576 0 .603-.2 1.172-.67 1.574-.436.436-.94.67-1.543.67-.636 0-1.17-.235-1.573-.67-.436-.402-.67-.97-.67-1.574 0-.603.234-1.107.67-1.576.402-.37.937-.604 1.574-.604zm8.415 2.58l.336.035c.504.168.973.468 1.24.97.336.37.503.873.503 1.443l-.1.67c-.167.67-.57 1.173-1.14 1.44-.603.336-1.207.403-1.877.17-.402-.1-.67-.268-.904-.536l-3.52-2.918.235-.502.1-.403 3.788-.335 1.34-.035zm-6.636 2.448l1.407 1.44.87 1.073.17.337c.3.57.468 1.105.4 1.742-.066.602-.267 1.038-.67 1.206-.234.168-.502.17-.77.135-.637-.166-1.14-.668-1.508-1.473l-.403-1.108-.502-2.917.568-.2.436-.235zm-3.62.068c.334.167.67.334 1.04.367.066 1.14.165 2.347.332 3.654v1.342l-.033.333c-.236.603-.638 1.107-1.24 1.375-.604.335-1.24.402-1.845.235-.67-.167-1.173-.57-1.44-1.106-.17-.335-.304-.74-.304-1.14l.17-.77c.066-.335.235-.67.503-.94l2.816-3.35z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ICQ</title><path d="M10.189 0a3.784 3.784 0 0 0-3.055 5.93l1.741 2.562a1.855 1.855 0 0 0 3.334-.13l1.454-2.929h-.006A3.784 3.784 0 0 0 10.189 0zm9.173 4.496a4.235 4.235 0 0 0-1.662.306 4.23 4.23 0 0 0-1.817 1.396l-2.214 2.837c-.025.032-.05.063-.074.096l-.01.012a2.088 2.088 0 0 0 1.509 3.306l3.614.536-.003-.007a4.259 4.259 0 0 0 4.532-5.807 4.264 4.264 0 0 0-3.875-2.675zM3.586 7.242A3.154 3.154 0 0 0 .55 9.628a3.151 3.151 0 0 0 3.903 3.804l2.539-.737a1.545 1.545 0 0 0 .742-2.673L5.79 8.118v.005a3.13 3.13 0 0 0-2.204-.881zM13.9 13.959a1.886 1.886 0 0 0-1.858 2.233l.387 3.263.005-.003a3.846 3.846 0 0 0 6.134 2.574 3.846 3.846 0 0 0-.9-6.645l-2.877-1.197a1.89 1.89 0 0 0-.89-.225zm-5.55.08c-.377 0-.75.104-1.076.3L4.06 16.018l.006.003a4.21 4.21 0 0 0-1.593 1.485 4.24 4.24 0 0 0 1.342 5.843 4.239 4.239 0 0 0 5.845-1.332 4.21 4.21 0 0 0 .647-2.172l.108-3.45a2.079 2.079 0 0 0-2.062-2.356z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ideal.svg b/assets/lib/simple-icons/icons/ideal.svg
deleted file mode 100644
index a9d0e60b..00000000
--- a/assets/lib/simple-icons/icons/ideal.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>iDEAL icon</title><path d="M.975 2.61v18.782h11.411c6.89 0 10.64-3.21 10.64-9.415 0-6.377-4.064-9.367-10.64-9.367H.975zm11.411-.975C22.491 1.635 24 8.115 24 11.977c0 6.7-4.124 10.39-11.614 10.39H0V1.635h12.386z M2.506 13.357h3.653v6.503H2.506z M6.602 10.082a2.27 2.27 0 1 1-4.54 0 2.27 2.27 0 0 1 4.54 0m1.396-1.057v2.12h.65c.45 0 .867-.13.867-1.077 0-.924-.463-1.043-.867-1.043h-.65zm10.85-1.054h1.053v3.174h1.56c-.428-5.758-4.958-7.002-9.074-7.002H7.999v3.83h.65c1.183 0 1.92.803 1.92 2.095 0 1.333-.719 2.129-1.92 2.129h-.65v7.665h4.388c6.692 0 9.021-3.107 9.103-7.665h-2.64V7.97zm-2.93 2.358h.76l-.348-1.195h-.063l-.35 1.195zm-1.643 1.87l1.274-4.228h1.497l1.274 4.227h-1.095l-.239-.818H15.61l-.24.818h-1.095zm-.505-1.054v1.052h-2.603V7.973h2.519v1.052h-1.467v.49h1.387v1.05H12.22v.58h1.55z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ieee.svg b/assets/lib/simple-icons/icons/ieee.svg
new file mode 100644
index 00000000..a1d63af0
--- /dev/null
+++ b/assets/lib/simple-icons/icons/ieee.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>IEEE</title><path d="M4.74 14.973h-.05v-.064h.04c.022 0 .051.002.051.03 0 .028-.015.034-.04.034zm.101-.03c0-.06-.04-.079-.109-.079h-.099v.265h.057v-.111h.027l.061.111h.068l-.069-.116c.036-.003.064-.02.064-.07zm-.11.243c-.098 0-.176-.076-.176-.19 0-.113.078-.188.176-.188.095 0 .177.075.177.188 0 .114-.082.19-.177.19zm-.247-.19c0 .156.116.247.247.247.13 0 .247-.09.247-.247a.238.238 0 0 0-.247-.246.239.239 0 0 0-.247.246zM3.35 12.61c-.02.374-.025.72-.052 1.096.148.013.315.026.473.003l-.047-1.046-.009-.05c-.12.005-.234.01-.365-.003zm-.926-1.051c-.182.091-.45.23-.421.48.04.136.187.224.304.28.647.286 1.506.295 2.19.083.168-.065.395-.16.426-.366-.002-.171-.183-.279-.313-.344v-.008a.575.575 0 0 1 .144-.039v-.004c-.228-.041-.45-.101-.671-.16.043.097.073.2.109.301.067-.021.135-.038.207-.047.117.045.284.11.3.256.014.137-.136.204-.23.26-.501.181-1.065.2-1.588.06-.144-.045-.353-.103-.37-.287.102-.242.367-.292.588-.351-.114-.073-.23-.138-.34-.22-.119.007-.227.059-.335.106zm1.107-1.46l-.064.208-.326.932c.082.008.183 0 .263.008v.008l-.048 1.054.008.01c.104.01.234.016.34-.002V12.3l-.042-1.022.006-.035.286-.004a46.727 46.727 0 0 1-.414-1.14zm-.15-.469c.239-.163.453.065.639.195.717.578 1.393 1.238 1.909 1.984.065.096.094.246.036.355-.134.223-.314.426-.485.633v.011c-.426.454-.876.92-1.363 1.305-.237.144-.455.46-.761.264a11.007 11.007 0 0 1-1.927-1.82c-.096-.149-.246-.271-.312-.44-.093-.23.112-.394.229-.566.576-.71 1.291-1.407 2.034-1.92zm.6-.678l-.266-.376c-.032-.02-.073-.052-.108-.062-.079-.034-.163.007-.227.056l-.48.624c-.769.953-1.68 1.843-2.673 2.525-.079.061-.195.121-.22.222-.026.091.022.166.078.223a13.061 13.061 0 0 1 2.234 1.94c.12.127.217.252.335.37.198.265.43.53.613.813.057.06.066.158.156.187.07.024.156.04.223 0l.066-.067a13.269 13.269 0 0 1 3.034-3.06c.117-.103.34-.142.343-.336a.308.308 0 0 0-.137-.226l-.02-.003c-.6-.408-1.159-.87-1.686-1.394l-.582-.609a16.595 16.595 0 0 1-.684-.827zm.039.672c.206.157.42.336.61.518l.034.02a10.122 10.122 0 0 1 1.405 1.592c.065.1.122.212.086.343-.133.332-.403.597-.639.887-.51.55-1.05 1.081-1.652 1.506-.122.086-.287.166-.433.097-.444-.232-.818-.613-1.207-.96-.45-.417-.902-.904-1.244-1.413a.417.417 0 0 1-.064-.253c.044-.176.165-.32.279-.469.403-.514.897-1.002 1.397-1.447.011-.012.032-.036.05-.047.215-.186.428-.35.652-.511.234-.182.529-.031.726.137zm15.942-.197H24v1.028h-2.569v1.094h2.364v1.028H21.43V13.7H24v1.028h-4.038zm-4.859 0h4.037v1.028h-2.57v1.094h2.363v1.028H16.57V13.7h2.569v1.028h-4.037zm-4.86 0h4.037v1.028h-2.57v1.094h2.365v1.028H11.71V13.7h2.57v1.028h-4.038zm-2.24 0h1.469v5.301H8.004Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ifixit.svg b/assets/lib/simple-icons/icons/ifixit.svg
index 8a09c879..5c48833f 100644
--- a/assets/lib/simple-icons/icons/ifixit.svg
+++ b/assets/lib/simple-icons/icons/ifixit.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>iFixit icon</title><path d="M15.345 12.506l2.37 3.131c.198.261.211.69.025.961l-.119.177c-.181.27-.55.645-.814.831l-.285.201c-.266.195-.697.195-.956-.016l-3.135-2.369c-.255-.195-.681-.195-.94 0l-3.136 2.369c-.258.211-.689.211-.956.03l-.207-.135c-.27-.181-.641-.556-.825-.81l-.181-.256c-.186-.27-.18-.689.018-.96l2.377-3.149c.195-.256.195-.675 0-.945L6.197 8.43c-.194-.263-.203-.69-.013-.957l.2-.285c.187-.264.56-.629.828-.814l.175-.119c.27-.196.703-.182.961.014l3.135 2.37c.26.195.684.195.942 0l3.135-2.385c.258-.195.698-.226.979-.061l.33.195c.28.165.639.524.795.81l.12.21c.154.285.123.721-.075.99l-2.37 3.135c-.194.255-.194.676 0 .945l.006.028zM12 0C5.37 0 0 5.373 0 12s5.37 12 12 12c6.627 0 12-5.373 12-12S18.627 0 12 0z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>iFixit</title><path d="M15.345 12.506l2.37 3.131c.198.261.211.69.025.961l-.119.177c-.181.27-.55.645-.814.831l-.285.201c-.266.195-.697.195-.956-.016l-3.135-2.369c-.255-.195-.681-.195-.94 0l-3.136 2.369c-.258.211-.689.211-.956.03l-.207-.135c-.27-.181-.641-.556-.825-.81l-.181-.256c-.186-.27-.18-.689.018-.96l2.377-3.149c.195-.256.195-.675 0-.945L6.197 8.43c-.194-.263-.203-.69-.013-.957l.2-.285c.187-.264.56-.629.828-.814l.175-.119c.27-.196.703-.182.961.014l3.135 2.37c.26.195.684.195.942 0l3.135-2.385c.258-.195.698-.226.979-.061l.33.195c.28.165.639.524.795.81l.12.21c.154.285.123.721-.075.99l-2.37 3.135c-.194.255-.194.676 0 .945l.006.028zM12 0C5.37 0 0 5.373 0 12s5.37 12 12 12c6.627 0 12-5.373 12-12S18.627 0 12 0z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ifood.svg b/assets/lib/simple-icons/icons/ifood.svg
index 5e289b7c..4aad9f0f 100644
--- a/assets/lib/simple-icons/icons/ifood.svg
+++ b/assets/lib/simple-icons/icons/ifood.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>iFood icon</title><path d="M8.428 1.67c-4.65 0-7.184 4.149-7.184 6.998 0 2.294 2.2 3.299 4.25 3.299l-.006-.006c4.244 0 7.184-3.854 7.184-6.998 0-2.29-2.175-3.293-4.244-3.293zm11.328 0c-4.65 0-7.184 4.149-7.184 6.998 0 2.294 2.2 3.299 4.25 3.299l-.006-.006C21.061 11.96 24 8.107 24 4.963c0-2.29-2.18-3.293-4.244-3.293zM14.172 14.52l2.435 1.834c-2.17 2.07-6.124 3.525-9.353 3.17A8.913 8.913 0 01.23 14.541H0a9.598 9.598 0 008.828 7.758c3.814.24 7.323-.905 9.947-3.13l-.004.007 1.08 2.988 1.555-7.623-7.234-.02Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>iFood</title><path d="M8.428 1.67c-4.65 0-7.184 4.149-7.184 6.998 0 2.294 2.2 3.299 4.25 3.299l-.006-.006c4.244 0 7.184-3.854 7.184-6.998 0-2.29-2.175-3.293-4.244-3.293zm11.328 0c-4.65 0-7.184 4.149-7.184 6.998 0 2.294 2.2 3.299 4.25 3.299l-.006-.006C21.061 11.96 24 8.107 24 4.963c0-2.29-2.18-3.293-4.244-3.293zM14.172 14.52l2.435 1.834c-2.17 2.07-6.124 3.525-9.353 3.17A8.913 8.913 0 01.23 14.541H0a9.598 9.598 0 008.828 7.758c3.814.24 7.323-.905 9.947-3.13l-.004.007 1.08 2.988 1.555-7.623-7.234-.02Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ifttt.svg b/assets/lib/simple-icons/icons/ifttt.svg
new file mode 100644
index 00000000..734cc416
--- /dev/null
+++ b/assets/lib/simple-icons/icons/ifttt.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>IFTTT</title><path d="M0 8.82h2.024v6.36H0zm11.566 0h-3.47v2.024h1.446v4.337h2.024v-4.337h1.446V8.82zm5.494 0h-3.47v2.024h1.446v4.337h2.024v-4.337h1.446V8.82zm5.494 0h-3.47v2.024h1.446v4.337h2.024v-4.337H24V8.82zM7.518 10.843V8.82H2.892v6.36h2.024v-1.734H6.65v-2.024H4.916v-.578z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/iheartradio.svg b/assets/lib/simple-icons/icons/iheartradio.svg
new file mode 100644
index 00000000..8598030b
--- /dev/null
+++ b/assets/lib/simple-icons/icons/iheartradio.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>iHeartRadio</title><path d="M4.403 21.983c.597 0 1.023-.306 1.023-.817v-.012c0-.489-.375-.784-1.017-.784H3.182v1.613zm-1.67-1.8c0-.125.102-.228.221-.228h1.489c.488 0 .88.148 1.13.398.193.193.307.472.307.784v.011c0 .654-.443 1.034-1.062 1.154l.988 1.272c.046.051.074.102.074.164 0 .12-.114.222-.227.222-.091 0-.16-.05-.21-.12l-1.12-1.453H3.183v1.346a.228.228 0 01-.228.227.227.227 0 01-.221-.227v-3.55m6.674 2.29l-.914-2.035-.915 2.034zm-2.812 1.164l1.614-3.528c.056-.125.142-.2.284-.2h.022c.137 0 .228.075.279.2l1.613 3.522a.31.31 0 01.029.113c0 .12-.097.216-.216.216-.108 0-.182-.074-.222-.165l-.415-.914H7.402l-.415.926c-.04.097-.113.153-.216.153a.204.204 0 01-.204-.204.26.26 0 01.028-.12m6.078-.118c1.005 0 1.647-.682 1.647-1.563v-.011c0-.88-.642-1.574-1.647-1.574h-.932v3.148zm-1.38-3.335c0-.125.102-.228.221-.228h1.16c1.249 0 2.112.858 2.112 1.977v.012c0 1.119-.863 1.988-2.113 1.988h-1.159a.226.226 0 01-.221-.227v-3.522m4.481-.029c0-.124.103-.227.222-.227.125 0 .227.103.227.227v3.579a.228.228 0 01-.227.227.227.227 0 01-.222-.227v-3.579m5.027 1.801v-.011c0-.904-.659-1.642-1.568-1.642s-1.556.727-1.556 1.63v.012c0 .903.659 1.642 1.567 1.642.91 0 1.557-.728 1.557-1.631zm-3.59 0v-.011c0-1.097.824-2.057 2.033-2.057 1.21 0 2.023.949 2.023 2.045v.012c0 1.096-.824 2.056-2.034 2.056s-2.022-.949-2.022-2.045m2.03-17.192c0 1.397-.754 2.773-2.242 4.092a.345.345 0 01-.458-.517c1.333-1.182 2.01-2.385 2.01-3.575v-.016c0-.966-.606-2.103-1.38-2.588a.345.345 0 11.367-.586c.97.61 1.703 1.974 1.703 3.174zM14.76 7.677a.345.345 0 11-.337-.602c.799-.448 1.336-1.318 1.339-2.167a2.096 2.096 0 00-1.124-1.855.345.345 0 11.321-.611 2.785 2.785 0 011.493 2.46v.011c-.004 1.09-.683 2.199-1.692 2.764zm-2.772-1.015a1.498 1.498 0 11.001-2.997 1.498 1.498 0 01-.001 2.997zm-2.303.882a.345.345 0 01-.47.133c-1.009-.565-1.688-1.674-1.692-2.764v-.01a2.785 2.785 0 011.493-2.461.346.346 0 01.321.611 2.096 2.096 0 00-1.124 1.855c.003.849.54 1.719 1.34 2.166a.345.345 0 01.132.47zM7.464 8.825a.344.344 0 01-.488.03C5.49 7.536 4.734 6.16 4.734 4.763v-.016c0-1.2.732-2.564 1.703-3.174a.346.346 0 01.367.586c-.774.485-1.38 1.622-1.38 2.588v.016c0 1.19.677 2.393 2.01 3.575a.345.345 0 01.03.487zM16.152 0c-1.727 0-3.27.915-4.164 2.252C11.094.915 9.55 0 7.823 0A4.982 4.982 0 002.84 4.983c0 1.746 1.106 3.005 2.261 4.17l4.518 4.272a.371.371 0 00.626-.27V9.827c0-.963.78-1.743 1.743-1.745a1.745 1.745 0 011.742 1.745v3.328c0 .326.39.493.626.27l4.518-4.272c1.155-1.165 2.261-2.424 2.261-4.17A4.982 4.982 0 0016.152 0M4.582 14.766h1.194v1.612h1.532v-1.612H8.5v4.307H7.308v-1.637H5.776v1.637H4.582v-4.307m6.527 2.353a.563.563 0 00-.578-.587c-.308 0-.55.238-.578.587zm-2.264.305v-.012c0-.972.696-1.741 1.68-1.741 1.15 0 1.68.842 1.68 1.82 0 .075 0 .16-.007.24H9.971c.093.364.357.549.72.549.277 0 .498-.105.738-.34l.647.536c-.32.406-.782.677-1.447.677-1.045 0-1.784-.695-1.784-1.729m7.29-1.68h1.17v.67c.19-.454.498-.75 1.051-.725v1.23h-.098c-.609 0-.954.351-.954 1.12v1.034h-1.168v-3.329m2.95 2.295v-1.353h-.393v-.942h.393v-.842h1.17v.842h.775v.942h-.775v1.126c0 .234.105.332.32.332.153 0 .301-.043.442-.11v.916c-.209.117-.485.19-.812.19-.7 0-1.12-.307-1.12-1.1m-15.65-3.584a.62.62 0 100 1.24.62.62 0 000-1.24m10.502 3.952c-.303.013-.483-.161-.483-.371 0-.203.16-.307.454-.307h.667v.036c-.004.137-.06.617-.638.642zm1.746-1.008c0-1.033-.739-1.729-1.784-1.729-.665 0-1.126.271-1.447.677l.647.536c.24-.234.461-.34.738-.34.359 0 .621.182.716.537l.001.025-.77.003c-.956.013-1.458.37-1.458 1.045 0 .65.464.999 1.262.999.432 0 .764-.17.987-.401v.32h1.106v-1.628l.002-.032V17.4M3.458 15.99h-.043a.61.61 0 00-.61.61v2.474h1.263v-2.474a.61.61 0 00-.61-.61"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ikea.svg b/assets/lib/simple-icons/icons/ikea.svg
new file mode 100644
index 00000000..87135423
--- /dev/null
+++ b/assets/lib/simple-icons/icons/ikea.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>IKEA</title><path d="M0 7.2v9.6h24V7.2H0zm12.002 9.12C5.308 16.32.48 14.36.48 12s4.831-4.32 11.522-4.32c6.69 0 11.518 1.96 11.518 4.32s-4.824 4.32-11.518 4.32zm-.225-6.062h4.176v.964c-.103-.047-.203-.047-.306-.047h-1.758v.46h1.689v.732h-1.689v.457h1.758c.103 0 .203 0 .306-.05v.967h-4.176c.052-.101.052-.198.052-.299V10.56c0-.101 0-.198-.052-.302zm-7.076.302v2.881c0 .101 0 .198.052.299H2.4c.052-.101.052-.198.052-.299V10.56c0-.101 0-.198-.052-.299h2.353c-.052.101-.052.198-.052.299zm6.447 2.881c.076.107.158.208.255.299H8.805c0-.101-.1-.306-.21-.467-.11-.161-.705-1.044-.705-1.044v1.212c0 .101 0 .198.052.299H5.778c.052-.101.052-.198.052-.299V10.56c0-.101 0-.198-.052-.299h2.164c-.052.101-.052.198-.052.299v1.259s.691-.88.85-1.085c.12-.154.268-.373.268-.473h2.257c-.155.101-.327.282-.468.45l-.826.984s1.039 1.548 1.177 1.746zm10.546-3.005a.178.178 0 0 0-.175-.178h-.21v.551h.083v-.195h.12l.11.195h.093l-.12-.212a.184.184 0 0 0 .099-.161zm-.189.101h-.114v-.191h.124c.055 0 .093.047.093.101 0 .053-.048.093-.103.09zm-.021-.457h-.031a.444.444 0 0 0-.437.457c0 .007 0 .017-.003.023a.466.466 0 0 0 .482.447.464.464 0 0 0 .458-.47v-.017a.454.454 0 0 0-.469-.44zm0 .823a.372.372 0 0 1-.375-.366v-.027a.357.357 0 0 1 .375-.339c.206 0 .375.165.375.366s-.168.366-.375.366zm-.877-.339c-.038-.101-.093-.198-.065-.299h-3.017c.014.101-.024.198-.062.299l-1.07 2.881a.852.852 0 0 1-.162.299h1.785c-.014-.101.024-.198.058-.299.034-.101.072-.198.072-.198l.021-.054h1.304l.021.05c.048.118.083.198.083.198.041.101.079.198.069.299h2.263a.837.837 0 0 1-.169-.299 690.277 690.277 0 0 0-1.131-2.877zm-2.167 1.893c.155-.42.289-.772.299-.806.028-.074.048-.151.062-.228.017.077.041.154.069.228l.316.806h-.746z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/imagej.svg b/assets/lib/simple-icons/icons/imagej.svg
new file mode 100644
index 00000000..96879498
--- /dev/null
+++ b/assets/lib/simple-icons/icons/imagej.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ImageJ</title><path d="M13.1286 17.5084h-8.072a.187.187 0 0 1-.187-.187v-.4442a.187.187 0 0 1 .187-.187h8.0721a.187.187 0 0 1 .187.187v.4442a.1872.1872 0 0 1-.1871.187zm5.6234-12.195c-1.4233.0033-4.2184-.0098-5.6414-.0065a.4035.4035 0 0 0-.4035.4035v3.6061c0 .2229.1807.4035.4035.4035h1.7475v8.19a1.8275 1.8275 0 0 1-.9112 1.5761 1.8277 1.8277 0 0 1-1.8224 0 1.8276 1.8276 0 0 1-.9113-1.5784H6.941c0 2.1705 1.1677 4.193 3.0473 5.2782.9398.5428 1.9936.8141 3.0474.8141s2.1076-.2713 3.0474-.8139c1.8795-1.0837 3.0444-3.1089 3.0473-5.274V5.692a.3785.3785 0 0 0-.3784-.3786zM7.4546 15.2306h3.276a.6403.6403 0 0 0 .6403-.6403V.6403A.6403.6403 0 0 0 10.7306 0h-3.276a.6403.6403 0 0 0-.6403.6403v13.95c0 .3536.2867.6403.6403.6403z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/imdb.svg b/assets/lib/simple-icons/icons/imdb.svg
index 57c46f09..f3bd78d7 100644
--- a/assets/lib/simple-icons/icons/imdb.svg
+++ b/assets/lib/simple-icons/icons/imdb.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>IMDb icon</title><path d="M14.31 9.588v.005c-.077-.048-.227-.07-.42-.07v4.815c.27 0 .44-.06.5-.165.062-.104.095-.405.095-.885v-2.866c0-.33-.004-.54-.033-.63-.022-.096-.067-.163-.14-.204zM22.416 0H1.62C.742.06.06.744 0 1.596V22.38c.06.874.712 1.542 1.555 1.617.015.003.03.003.045.003h20.845c.88-.088 1.55-.826 1.555-1.71V1.71C24 .82 23.305.07 22.416 0zM4.792 15.626H2.887V8.26h1.905v7.366zm6.54-.002H9.67v-4.97L9 15.623H7.812l-.698-4.86-.007 4.86H5.44V8.26h2.468c.083.523.16 1.048.23 1.574l.27 1.87.442-3.444h2.483v7.364zm4.977-2.18c0 .655-.044 1.094-.104 1.32-.062.22-.17.4-.326.52-.15.13-.34.218-.57.266-.223.045-.57.075-1.02.075l-.004-.002H11.98V8.26h1.426c.914 0 1.45.047 1.77.128.325.09.575.225.745.42.165.18.273.404.313.645.05.235.076.705.076 1.402v2.588zm4.944.475c0 .45-.045.764-.09.99-.06.224-.195.404-.405.568-.226.166-.48.24-.78.24-.22 0-.5-.06-.68-.136-.19-.094-.358-.237-.515-.427l-.116.47h-1.717V8.26l-.02-.003h1.8v2.4c.15-.175.315-.31.51-.4.196-.083.466-.127.69-.127.226-.003.45.036.66.115.17.07.32.185.436.33.09.125.15.27.18.42.03.138.044.43.044.87v2.054zM19.08 11.205c-.12 0-.194.04-.225.12-.03.08-.06.29-.06.624v1.946c0 .324.03.533.06.623.04.086.13.14.226.134.12 0 .272-.047.3-.14.03-.097.046-.32.046-.674l.03-.002v-1.89c0-.303-.015-.508-.06-.603-.044-.1-.195-.14-.315-.14z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>IMDb</title><path d="M22.3781 0H1.6218C.7411.0583.0587.7437.0018 1.5953l-.001 20.783c.0585.8761.7125 1.543 1.5559 1.6191A.337.337 0 0 0 1.6016 24h20.7971a.4579.4579 0 0 0 .0437-.002c.8727-.0768 1.5568-.8271 1.5568-1.7085V1.7098c0-.8914-.696-1.6416-1.584-1.7078A.3294.3294 0 0 0 22.3781 0zm0 .496a1.2144 1.2144 0 0 1 1.1252 1.2139v20.5797c0 .6377-.4875 1.1602-1.1045 1.2145H1.6016c-.5967-.0543-1.0645-.5297-1.1053-1.1258V1.6284C.5371 1.0185 1.0184.5364 1.6217.496h20.7564zM4.7954 8.2603v7.3636H2.8899V8.2603h1.9055zm6.5367 0v7.3636H9.6707v-4.9704l-.6711 4.9704H7.813l-.6986-4.8618-.0066 4.8618h-1.668V8.2603h2.468c.0748.4476.1492.9694.2307 1.5734l.2712 1.8713.4407-3.4447h2.4817zm2.9772 1.3289c.0742.0404.122.108.1417.2034.0279.0953.0345.3118.0345.6442v2.8548c0 .4881-.0345.7867-.0955.8954-.0609.1152-.2304.1695-.5018.1695V9.5211c.204 0 .3457.0205.4211.0681zm-.0211 6.0347c.4543 0 .8006-.0265 1.0245-.0742.2304-.0477.4204-.1357.5694-.2648.1556-.1218.2642-.298.3251-.5219.0611-.2238.1021-.6648.1021-1.3224v-2.5832c0-.6986-.0271-1.1668-.0742-1.4039-.041-.237-.1431-.4543-.3126-.6437-.1695-.1973-.4198-.3324-.7456-.421-.3191-.0808-.8542-.1285-1.7694-.1285h-1.4244v7.3636h2.3051zm5.14-1.7827c0 .3523-.0199.5762-.0544.6708-.033.0947-.1894.1424-.3046.1424-.1086 0-.19-.0477-.2238-.1351-.041-.0887-.0609-.2986-.0609-.6238v-1.9469c0-.3324.0199-.5423.0543-.6237.0338-.0808.1086-.122.2171-.122.1153 0 .2709.0412.3114.1425.041.0947.0609.2986.0609.6032v1.8926zm-2.4747-5.5809v7.3636h1.7157l.1152-.4675c.1556.1894.3251.3324.5152.4271.1828.0881.4608.1357.678.1357.3047 0 .5629-.0748.7802-.237.2165-.1562.3589-.3462.4198-.5628.0543-.2173.0887-.543.0887-.9841v-2.0675c0-.4409-.0139-.7324-.0344-.8681-.0199-.1357-.0742-.2781-.1695-.4204-.1021-.1425-.2437-.251-.4272-.3325-.1834-.0742-.3999-.1152-.6576-.1152-.2172 0-.4952.0477-.6846.1285-.1835.0887-.353.2238-.5086.4007V8.2603h-1.8309z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/imgur.svg b/assets/lib/simple-icons/icons/imgur.svg
index 1fedce13..fde05a66 100644
--- a/assets/lib/simple-icons/icons/imgur.svg
+++ b/assets/lib/simple-icons/icons/imgur.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Imgur icon</title><path d="M21.147 3.043c-.002-.113-.069-.182-.189-.191a14.117 14.117 0 00-.51-.045l-.162-.01a21.998 21.998 0 00-1.085-.046l-.217-.005c-.172-.003-.35-.004-.532-.004l-.189-.001c-.295 0-.601.003-.919.01l-.106.003a55.86 55.86 0 00-.87.026l-.237.009c-.335.013-.676.029-1.027.049l-.012.001c-.357.021-.724.045-1.095.071l-.275.021c-.304.023-.609.048-.92.076l-.25.021c-.38.035-.766.074-1.156.115-.08.009-.161.019-.242.027-.319.035-.641.073-.965.113l-.33.042c-.403.051-.806.105-1.212.164a.547.547 0 00-.154.045.303.303 0 00-.097.074l-.003.002c-.045.055-.047.12.004.179.003.004.002.008.005.012l3.488 3.456-6.629 6.596c-.069.067-.068.165 0 .251.856 1.093 1.44 1.793 2.143 2.492.699.703 1.398 1.286 2.493 2.143a.216.216 0 00.132.051.167.167 0 00.119-.051l6.597-6.629 3.455 3.488a.143.143 0 00.101.047c.096 0 .187-.118.212-.292.746-5.141.882-10.051.634-12.31z M15.87 24l6.356-6.357.026-.026.156-.155-.006-.006a3.144 3.144 0 00.822-1.711c.804-5.53.903-10.591.654-12.952a2.904 2.904 0 00-.834-1.812 2.96 2.96 0 00-1.816-.855C20.458.042 19.476 0 18.318 0c-2.999 0-6.667.284-10.063.777a3.143 3.143 0 00-1.887.991L0 8.137V24H15.87zm1.528-6.707c-.151 0-.563.405-.563.613a.1.1 0 01-.099.1.1.1 0 01-.099-.1c0-.208-.411-.613-.563-.613a.1.1 0 01-.099-.1c0-.054.044-.098.099-.098.152 0 .563-.404.563-.614 0-.055.044-.098.099-.098.054 0 .099.043.099.098 0 .21.412.614.563.614a.1.1 0 010 .198zM5.4 7.045c.197 0 .735-.528.735-.801a.13.13 0 01.128-.129c.071 0 .128.058.128.129 0 .272.538.801.735.801.071 0 .128.057.128.128a.128.128 0 01-.128.128c-.197 0-.735.528-.735.801a.128.128 0 01-.128.128.128.128 0 01-.128-.128c0-.273-.538-.801-.735-.801a.128.128 0 010-.256zm-3.99 3.26c0-.065.057-.098.119-.118.69-.228 1.269-.8 1.403-1.554.011-.064.053-.118.118-.118.066 0 .107.054.119.118.133.754.711 1.326 1.401 1.554.062.02.118.053.118.118s-.056.098-.118.119c-.69.227-1.269.799-1.403 1.553-.011.064-.053.119-.119.119-.065 0-.106-.054-.118-.119-.134-.754-.713-1.326-1.403-1.553-.061-.022-.117-.054-.117-.119zm1.565 9.307c-.113 0-.42.302-.42.459 0 .04-.034.073-.074.073a.074.074 0 01-.074-.073c0-.157-.307-.459-.42-.459a.074.074 0 01-.074-.073c0-.039.034-.073.074-.073.113 0 .42-.302.42-.457 0-.042.033-.073.074-.073.04 0 .074.031.074.073 0 .155.307.457.42.457.04 0 .073.034.073.073a.073.073 0 01-.073.073zm.568-3.047c-.14 0-.521.375-.521.568a.092.092 0 11-.183 0c0-.193-.381-.568-.521-.568a.09.09 0 01-.091-.09c0-.051.041-.092.091-.092.14 0 .521-.375.521-.568a.09.09 0 01.092-.09.09.09 0 01.091.09c0 .193.381.568.521.568a.091.091 0 010 .182zm3.334 4.382c-.203 0-.758.546-.758.827 0 .073-.06.133-.132.133a.133.133 0 01-.133-.133c0-.281-.555-.827-.758-.827a.134.134 0 01-.133-.133c0-.073.059-.132.133-.132.204 0 .758-.545.758-.828 0-.071.06-.132.133-.132.073 0 .132.061.132.132 0 .283.555.828.758.828.074 0 .133.059.133.132a.133.133 0 01-.133.133zm1.922-.806c-1.086-.851-1.869-1.498-2.653-2.287-.789-.784-1.436-1.566-2.287-2.654-.626-.8-.566-1.897.144-2.607l.001-.001.002-.001L9.364 7.26 7.149 5.066l-.003-.003-.002-.003c-.52-.52-.7-1.27-.472-1.958.148-.447.464-.802.867-1.049a1.983 1.983 0 01.371-.19 2.1 2.1 0 01.468-.131c.005 0 .009-.003.014-.004C11.746 1.24 15.363.96 18.317.96h.002c1.125 0 2.072.041 2.818.121.469.046.903.249 1.228.576.328.331.525.767.562 1.237.243 2.311.144 7.253-.651 12.714-.001.01-.006.016-.007.025a2.258 2.258 0 01-.18.586c-.006.014-.01.028-.018.042-.333.699-1.001 1.163-1.771 1.163-.51 0-.992-.2-1.358-.567l-.003-.002-.004-.004-2.192-2.215-5.333 5.359-.001.002h-.001a1.94 1.94 0 01-1.378.573c-.44 0-.877-.151-1.231-.429zm2.576 2.09c-.139 0-.518.373-.518.566a.09.09 0 01-.091.09.09.09 0 01-.09-.09c0-.193-.379-.566-.519-.566a.09.09 0 110-.18c.139 0 .519-.373.519-.566a.09.09 0 01.09-.09c.05 0 .091.041.091.09 0 .193.379.566.518.566.05 0 .091.039.091.09s-.04.09-.091.09zm2.115-2.437c.248 0 .922-.662.922-1.003 0-.088.072-.161.161-.161.088 0 .161.073.161.161 0 .341.674 1.003.921 1.003.089 0 .161.073.161.161a.16.16 0 01-.161.161c-.247 0-.921.662-.921 1.005a.162.162 0 01-.161.162.162.162 0 01-.161-.162c0-.343-.674-1.005-.922-1.005a.161.161 0 010-.322z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Imgur</title><path d="M21.147 3.043c-.002-.113-.069-.182-.189-.191a14.117 14.117 0 00-.51-.045l-.162-.01a21.998 21.998 0 00-1.085-.046l-.217-.005c-.172-.003-.35-.004-.532-.004l-.189-.001c-.295 0-.601.003-.919.01l-.106.003a55.86 55.86 0 00-.87.026l-.237.009c-.335.013-.676.029-1.027.049l-.012.001c-.357.021-.724.045-1.095.071l-.275.021c-.304.023-.609.048-.92.076l-.25.021c-.38.035-.766.074-1.156.115-.08.009-.161.019-.242.027-.319.035-.641.073-.965.113l-.33.042c-.403.051-.806.105-1.212.164a.547.547 0 00-.154.045.303.303 0 00-.097.074l-.003.002c-.045.055-.047.12.004.179.003.004.002.008.005.012l3.488 3.456-6.629 6.596c-.069.067-.068.165 0 .251.856 1.093 1.44 1.793 2.143 2.492.699.703 1.398 1.286 2.493 2.143a.216.216 0 00.132.051.167.167 0 00.119-.051l6.597-6.629 3.455 3.488a.143.143 0 00.101.047c.096 0 .187-.118.212-.292.746-5.141.882-10.051.634-12.31z M15.87 24l6.356-6.357.026-.026.156-.155-.006-.006a3.144 3.144 0 00.822-1.711c.804-5.53.903-10.591.654-12.952a2.904 2.904 0 00-.834-1.812 2.96 2.96 0 00-1.816-.855C20.458.042 19.476 0 18.318 0c-2.999 0-6.667.284-10.063.777a3.143 3.143 0 00-1.887.991L0 8.137V24H15.87zm1.528-6.707c-.151 0-.563.405-.563.613a.1.1 0 01-.099.1.1.1 0 01-.099-.1c0-.208-.411-.613-.563-.613a.1.1 0 01-.099-.1c0-.054.044-.098.099-.098.152 0 .563-.404.563-.614 0-.055.044-.098.099-.098.054 0 .099.043.099.098 0 .21.412.614.563.614a.1.1 0 010 .198zM5.4 7.045c.197 0 .735-.528.735-.801a.13.13 0 01.128-.129c.071 0 .128.058.128.129 0 .272.538.801.735.801.071 0 .128.057.128.128a.128.128 0 01-.128.128c-.197 0-.735.528-.735.801a.128.128 0 01-.128.128.128.128 0 01-.128-.128c0-.273-.538-.801-.735-.801a.128.128 0 010-.256zm-3.99 3.26c0-.065.057-.098.119-.118.69-.228 1.269-.8 1.403-1.554.011-.064.053-.118.118-.118.066 0 .107.054.119.118.133.754.711 1.326 1.401 1.554.062.02.118.053.118.118s-.056.098-.118.119c-.69.227-1.269.799-1.403 1.553-.011.064-.053.119-.119.119-.065 0-.106-.054-.118-.119-.134-.754-.713-1.326-1.403-1.553-.061-.022-.117-.054-.117-.119zm1.565 9.307c-.113 0-.42.302-.42.459 0 .04-.034.073-.074.073a.074.074 0 01-.074-.073c0-.157-.307-.459-.42-.459a.074.074 0 01-.074-.073c0-.039.034-.073.074-.073.113 0 .42-.302.42-.457 0-.042.033-.073.074-.073.04 0 .074.031.074.073 0 .155.307.457.42.457.04 0 .073.034.073.073a.073.073 0 01-.073.073zm.568-3.047c-.14 0-.521.375-.521.568a.092.092 0 11-.183 0c0-.193-.381-.568-.521-.568a.09.09 0 01-.091-.09c0-.051.041-.092.091-.092.14 0 .521-.375.521-.568a.09.09 0 01.092-.09.09.09 0 01.091.09c0 .193.381.568.521.568a.091.091 0 010 .182zm3.334 4.382c-.203 0-.758.546-.758.827 0 .073-.06.133-.132.133a.133.133 0 01-.133-.133c0-.281-.555-.827-.758-.827a.134.134 0 01-.133-.133c0-.073.059-.132.133-.132.204 0 .758-.545.758-.828 0-.071.06-.132.133-.132.073 0 .132.061.132.132 0 .283.555.828.758.828.074 0 .133.059.133.132a.133.133 0 01-.133.133zm1.922-.806c-1.086-.851-1.869-1.498-2.653-2.287-.789-.784-1.436-1.566-2.287-2.654-.626-.8-.566-1.897.144-2.607l.001-.001.002-.001L9.364 7.26 7.149 5.066l-.003-.003-.002-.003c-.52-.52-.7-1.27-.472-1.958.148-.447.464-.802.867-1.049a1.983 1.983 0 01.371-.19 2.1 2.1 0 01.468-.131c.005 0 .009-.003.014-.004C11.746 1.24 15.363.96 18.317.96h.002c1.125 0 2.072.041 2.818.121.469.046.903.249 1.228.576.328.331.525.767.562 1.237.243 2.311.144 7.253-.651 12.714-.001.01-.006.016-.007.025a2.258 2.258 0 01-.18.586c-.006.014-.01.028-.018.042-.333.699-1.001 1.163-1.771 1.163-.51 0-.992-.2-1.358-.567l-.003-.002-.004-.004-2.192-2.215-5.333 5.359-.001.002h-.001a1.94 1.94 0 01-1.378.573c-.44 0-.877-.151-1.231-.429zm2.576 2.09c-.139 0-.518.373-.518.566a.09.09 0 01-.091.09.09.09 0 01-.09-.09c0-.193-.379-.566-.519-.566a.09.09 0 110-.18c.139 0 .519-.373.519-.566a.09.09 0 01.09-.09c.05 0 .091.041.091.09 0 .193.379.566.518.566.05 0 .091.039.091.09s-.04.09-.091.09zm2.115-2.437c.248 0 .922-.662.922-1.003 0-.088.072-.161.161-.161.088 0 .161.073.161.161 0 .341.674 1.003.921 1.003.089 0 .161.073.161.161a.16.16 0 01-.161.161c-.247 0-.921.662-.921 1.005a.162.162 0 01-.161.162.162.162 0 01-.161-.162c0-.343-.674-1.005-.922-1.005a.161.161 0 010-.322z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/immer.svg b/assets/lib/simple-icons/icons/immer.svg
new file mode 100644
index 00000000..a5450f4e
--- /dev/null
+++ b/assets/lib/simple-icons/icons/immer.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Immer</title><path d="M2.2706 14.3327C1.0174 14.3327 0 13.3149 0 12.0612s1.0174-2.2714 2.2706-2.2714 2.2706 1.0178 2.2706 2.2714-1.0175 2.2715-2.2706 2.2715zm19.4594.8587a3.1215 3.1215 0 0 1-1.8217-.5845c-.7428.8369-1.0466 1.047-2.0669 1.047-1.5417 0-3.1201-2.3208-4.5579-4.3146 1.4966-2.3358 2.8703-3.8786 4.3307-3.8786 1.1153 0 2.1849.4937 2.7865 1.7668a3.1155 3.1155 0 0 1 1.3291-.2958 3.1051 3.1051 0 0 1 1.1697.2262c-.88-2.5989-2.9964-3.9134-5.1127-3.9134-2.3344 0-4.0593 2.16-5.5753 4.6292-1.7833-2.4318-3.4838-4.6292-5.9239-4.6292-2.0769 0-4.154 1.2863-5.0431 3.8295a3.1179 3.1179 0 0 1 .9355-.1423 3.113 3.113 0 0 1 1.7177.5139c.546-.7723 1.2454-1.2347 2.0074-1.2095 1.5368.0516 2.9282 1.8499 4.6866 4.3248-1.2802 1.9587-2.9227 3.8683-4.3102 3.8683-1.0566 0-2.0739-.4443-2.6895-1.5742a3.1139 3.1139 0 0 1-1.412.3362c-.371.0066-.7336-.0773-1.085-.1857.9316 2.417 2.9722 3.6396 5.0129 3.6396 2.326 0 3.9314-2.0555 5.5251-4.6143 1.7485 2.4637 3.4992 4.7244 5.9921 4.7244 2.0245 0 4.2973-1.3328 5.2229-3.7499-.3583.0875-.7236.1989-1.118.1861zm-.0006-5.4016c-1.2531 0-2.2705 1.0178-2.2705 2.2714s1.0174 2.2715 2.2705 2.2715c1.2532 0 2.2706-1.0178 2.2706-2.2715s-1.0174-2.2714-2.2706-2.2714z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/imou.svg b/assets/lib/simple-icons/icons/imou.svg
new file mode 100644
index 00000000..a11f66b3
--- /dev/null
+++ b/assets/lib/simple-icons/icons/imou.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Imou</title><path d="M14.6426 9.1484c-1.5747 0-2.8555 1.279-2.8555 2.8516 0 1.5724 1.2808 2.8516 2.8555 2.8516 1.5748 0 2.8554-1.2792 2.8554-2.8516 0-1.5725-1.2806-2.8516-2.8554-2.8516zm-9.8184.0059c-1.3802 0-2.502 1.12-2.502 2.498v2.9532c0 .0886.0714.1601.1602.1601h.9727a.1598.1598 0 0 0 .1601-.1601v-2.9532c0-.6656.5425-1.207 1.209-1.207.6667 0 1.209.5414 1.209 1.207v2.9532c0 .0886.0733.1601.1621.1601h.9707a.1615.1615 0 0 0 .1621-.1601v-2.9532c0-.6656.5423-1.207 1.209-1.207.6665 0 1.209.5414 1.209 1.207v2.9532c0 .0886.0714.1601.1601.1601h.9727a.1598.1598 0 0 0 .1602-.1601v-2.9532c0-1.378-1.122-2.498-2.502-2.498-.7367 0-1.397.3209-1.8555.8281-.4582-.5072-1.1209-.8281-1.8574-.8281zm-4.664.1309A.1596.1596 0 0 0 0 9.4453v5.1602c0 .0888.0714.1601.1602.1601h.9628a.1614.1614 0 0 0 .1622-.1601V9.4453a.1615.1615 0 0 0-.1622-.1601H.1602zm18.289 0a.1612.1612 0 0 0-.162.1601v1.4492c0 .089.073.1602.162.1602h.963a.1596.1596 0 0 0 .16-.1602V9.4453a.1596.1596 0 0 0-.16-.1601h-.963zm4.4278 0a.1612.1612 0 0 0-.1622.1601v1.4492c0 .089.0732.1602.1622.1602h.9628A.1596.1596 0 0 0 24 10.8945V9.4453a.1596.1596 0 0 0-.1602-.1601h-.9628zm-8.2344 1.1464c.8663 0 1.5703.7035 1.5703 1.5684 0 .865-.704 1.5684-1.5703 1.5684-.8664 0-1.5723-.7035-1.5723-1.5684 0-.865.706-1.5684 1.5723-1.5684zm3.8066 1.2579a.1615.1615 0 0 0-.162.1601v.08c0 1.5443 1.2004 2.8615 2.746 2.92C22.6579 14.9108 24 13.6088 24 12v-.1504a.1598.1598 0 0 0-.1602-.1601h-.9628a.1615.1615 0 0 0-.1622.1601V12c0 .8651-.704 1.5684-1.5703 1.5684-.8663 0-1.5722-.7033-1.5722-1.5684v-.1504a.1597.1597 0 0 0-.1602-.1601h-.9629Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/indeed.svg b/assets/lib/simple-icons/icons/indeed.svg
index b7638dfb..59acb1fa 100644
--- a/assets/lib/simple-icons/icons/indeed.svg
+++ b/assets/lib/simple-icons/icons/indeed.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Indeed icon</title><path d="M14.822 10.308a3.018 3.018 0 111.32-4.038 3.006 3.006 0 01-1.32 4.044zM11.6.572c2.47-.901 5.294-.852 7.408.982a3.587 3.587 0 011.023 1.37c.213.69-.749-.07-.88-.168a9.407 9.407 0 00-2.15-1.095C12.837.386 8.897 2.707 6.463 6.316a19.505 19.505 0 00-2.248 5.126 2.918 2.918 0 01-.213.642c-.107.204-.049-.547-.049-.572a15.821 15.821 0 01.43-2.239C5.511 5.34 8.01 2.065 11.6.565zm.037 20.993v-8.763c.249.025.486.037.736.037a6.167 6.167 0 003.219-.895v9.62c0 .822-.15 1.43-.52 1.826A1.874 1.874 0 0113.62 24a1.825 1.825 0 01-1.427-.609c-.368-.404-.56-1.013-.56-1.825z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Indeed</title><path d="M11.566 21.5633v-8.762c.2553.0231.5009.0346.758.0346 1.2225 0 2.3739-.3206 3.3506-.8928v9.6182c0 .8219-.1957 1.4287-.5757 1.8338-.378.4033-.8808.6049-1.491.6049-.6007 0-1.0766-.2016-1.468-.6183-.3781-.4032-.5739-1.01-.5739-1.8184zM11.589.5659c2.5447-.8929 5.4424-.8449 7.6186.987.405.3687.8673.8334 1.0515 1.3806.2207.6913-.7695-.073-.9057-.167-.71-.4532-1.4182-.8334-2.2127-1.0946C12.8614.3873 8.8122 2.709 6.2945 6.315c-1.0516 1.5939-1.7367 3.2721-2.299 5.1174-.0614.2017-.1094.4647-.2207.6413-.1113.2036-.048-.5453-.048-.5702.0845-.7623.2438-1.4997.4414-2.237C5.3292 5.3375 7.897 2.0655 11.5891.5658zm4.9281 7.0587c0 1.6686-1.353 3.0224-3.0205 3.0224-1.6677 0-3.0186-1.3538-3.0186-3.0224 0-1.6687 1.351-3.0224 3.0186-3.0224 1.6676 0 3.0205 1.3518 3.0205 3.0224Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/infiniti.svg b/assets/lib/simple-icons/icons/infiniti.svg
new file mode 100644
index 00000000..dc401a12
--- /dev/null
+++ b/assets/lib/simple-icons/icons/infiniti.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Infiniti</title><path d="M6.893 14.606C5.17 14.46 2.18 13.33 2.18 11.359c0-2.5 4.343-4.818 9.819-4.818 5.75 0 9.82 2.318 9.82 4.818 0 1.97-2.978 3.087-4.702 3.233-.475-.609-5.118-6.791-5.118-6.791s-4.662 6.232-5.106 6.805zm13.744 2.115C22.921 15.6 24 13.734 24 12.088c0-3.533-4.928-6.264-12.001-6.264C4.927 5.824 0 8.555 0 12.088c0 1.646 1.079 3.511 3.363 4.633 2.118 1.041 5.116 1.403 5.55 1.455l3.086-8.982 3.118 8.982c.432-.052 3.401-.414 5.52-1.455z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/influxdb.svg b/assets/lib/simple-icons/icons/influxdb.svg
index f78bf6e0..d0d9f2c7 100644
--- a/assets/lib/simple-icons/icons/influxdb.svg
+++ b/assets/lib/simple-icons/icons/influxdb.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>InfluxDB icon</title><path d="M23.775 14.443L21.482 4.5c-.128-.536-.621-1.093-1.178-1.243L9.868.043C9.739 0 9.589 0 9.418 0c-.45 0-.9.171-1.222.45L.718 7.414C.31 7.78.096 8.507.225 9.021l2.443 10.65c.128.536.621 1.093 1.178 1.243l9.772 3.043c.128.043.278.043.45.043.45 0 .9-.171 1.221-.45l7.993-7.436c.407-.428.622-1.114.493-1.671zM10.961 2.4l7.178 2.207c.279.086.279.214 0 .279l-3.771.857c-.279.086-.686-.043-.879-.257l-2.614-2.829c-.236-.236-.193-.343.086-.257zm4.478 12.857c.086.279-.107.45-.385.364l-7.736-2.4c-.279-.085-.343-.321-.129-.514L13.104 7.2c.214-.214.45-.129.514.15zM2.69 8.25L8.968 2.4c.214-.214.536-.171.75.021l3.15 3.408c.214.214.171.535-.022.75l-6.278 5.85c-.214.214-.536.171-.75-.022L2.668 9c-.214-.236-.193-.579.021-.75zm1.522 9.257l-1.65-7.286c-.086-.278.043-.342.235-.128l2.615 2.828c.214.215.278.622.214.9l-1.136 3.686c-.085.3-.214.3-.278 0zm9.193 4.286l-8.208-2.55a.555.555 0 01-.364-.686l1.372-4.414a.555.555 0 01.685-.364l8.207 2.528c.279.086.45.386.365.686l-1.372 4.414a.598.598 0 01-.685.386zm7.285-5.979l-5.485 5.1c-.215.215-.322.129-.236-.15l1.136-3.685c.085-.279.385-.579.685-.622l3.772-.857c.278-.107.321.021.128.214zm.6-1.114l-4.521 1.029c-.279.085-.579-.108-.643-.386l-1.929-8.357c-.085-.279.108-.579.386-.643l4.522-1.029c.278-.085.578.107.642.386l1.929 8.357c.064.322-.107.6-.386.643z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>InfluxDB</title><path d="M23.778 14.482l-2.287-9.959c-.13-.545-.624-1.09-1.169-1.248L9.87.051C9.74 0 9.584 0 9.426 0c-.443 0-.909.18-1.222.443L.716 7.412C.3 7.776.092 8.504.222 9.024l2.445 10.662c.13.545.624 1.092 1.169 1.248l9.775 3.015c.13.051.285.051.443.051.443 0 .91-.18 1.223-.443l8.007-7.435c.418-.39.624-1.092.494-1.64zM10.962 2.417l7.175 2.21c.285.08.285.21 0 .286l-3.77.858c-.285.08-.674-.05-.883-.26l-2.626-2.834c-.235-.232-.184-.336.104-.26zm4.47 12.872c.079.286-.105.444-.39.365l-7.748-2.392c-.285-.079-.338-.313-.13-.52l5.93-5.514c.209-.209.443-.13.52.156zM2.667 8.267l6.293-5.85c.21-.209.545-.18.754.025L12.86 5.85c.209.21.18.545-.026.754l-6.293 5.85c-.21.21-.545.181-.754-.025L2.64 9.024a.536.536 0 01.026-.757zm1.536 9.284L2.54 10.244c-.08-.285.05-.34.234-.13L5.4 12.949c.209.209.285.624.209.909L4.462 17.55c-.079.285-.208.285-.26 0zm9.202 4.264l-8.217-2.522a.547.547 0 01-.364-.675l1.378-4.421a.547.547 0 01.675-.365l8.216 2.522c.285.079.443.39.364.675L14.08 21.45a.553.553 0 01-.674.365zm7.279-5.98L15.2 20.93c-.209.209-.31.13-.234-.155l1.144-3.694c.079-.285.39-.573.674-.624l3.77-.858c.288-.076.339.054.13.234zm.598-1.09l-4.523 1.039a.534.534 0 01-.65-.39l-1.922-8.372a.534.534 0 01.39-.65L19.1 5.335a.534.534 0 01.649.39l1.923 8.371c.079.31-.102.596-.39.65Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/informatica.svg b/assets/lib/simple-icons/icons/informatica.svg
new file mode 100644
index 00000000..23d10908
--- /dev/null
+++ b/assets/lib/simple-icons/icons/informatica.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Informatica</title><path d="M12 0l3.547 10.788-4.5-1.255-.25 4.43 7.121 4.035V18h.001l5.919-6zm-.64.65L.162 12l6.32 6.407L12 24l5.184-5.255-9.736-3.856z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/infosys.svg b/assets/lib/simple-icons/icons/infosys.svg
new file mode 100644
index 00000000..d63bae09
--- /dev/null
+++ b/assets/lib/simple-icons/icons/infosys.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Infosys</title><path d="M23.2734 7.5703c-.3984 0-.7246.3282-.7246.7266 0 .4013.3262.7246.7246.7246.3982 0 .7266-.3233.7266-.7246 0-.3984-.3284-.7266-.7266-.7266zm0 .1074c.3395 0 .6192.2795.6192.6192 0 .3396-.2797.6172-.6192.6172-.3397 0-.6171-.2776-.6171-.6172 0-.3397.2774-.6192.6171-.6192zm-15.1367.0547c-.9001 0-1.549.5917-1.6387 1.6406h-.6953v.5215h.6856c.0028 1.6664-.002 3.334-.002 4.998h.7774c-.0022-1.6659-.002-3.3319-.002-4.998h1.748c-.646.5242-1.0663 1.3739-1.0663 2.334 0 1.593 1.1564 2.8848 2.582 2.8848 1.4258 0 2.582-1.2918 2.582-2.8848 0-.1896-.0174-.3753-.0488-.5547.2565.4131.7488.6133 1.4082.8985.7784.329 1.2129.6165 1.2129 1.1074 0 .5885-.556.8955-1.1817.8906-.611 0-1.0883-.249-1.6191-.7305v.9239c.3239.2088.8256.3281 1.3691.3281.6844-.0023 2.0918-.249 2.0918-1.6758-.0044-.8557-.715-1.2239-1.4863-1.5586-.9383-.4653-1.2965-.5629-1.2871-1.0957 0-.7088.6178-.9219 1.0996-.9219.2099 0 .3891.0293.5586.086.3163.1194.4209.3553.5332.6113.5283 1.2356 1.0344 2.4811 1.5488 3.7227-.2464.5637-.526 1.1519-.7168 1.5273l-.0039.0098-.1601.2969-.1797.336h.7617c.3322-.7342 1.7436-4.1688 2.0469-4.9083.1995.533.6857.7467 1.4297 1.0684.7783.329 1.2148.6166 1.2148 1.1074 0 .5886-.5562.8936-1.1816.8887-.6348 0-1.1257-.2685-1.6817-.7871l-.0507-.041v.9413c.3115.259.8713.4102 1.4824.4102.6844-.0022 2.0918-.249 2.0918-1.6758-.0042-.8557-.7151-1.2258-1.4863-1.5605-.9384-.4654-1.2593-.563-1.25-1.0957 0-.709.5787-.9219 1.0605-.9219.5483 0 .8958.2037 1.379.5547V9.584c-.3923-.1381-.7212-.1915-1.1642-.1895-.8912-.0018-1.6966.3234-1.9004 1.0762l-1.1054 2.7344-.1153.3437-.1015-.3437c-.5022-1.2089-.9934-2.4236-1.4863-3.6309-.3154-.0828-.8307-.201-1.1934-.1953-.0377-.0007-.0758-.0002-.1152 0-1.0302-.002-2.0235.4332-2.0235 1.457 0 .0596.0022.1155.006.17-.412-.9813-1.3036-1.6602-2.338-1.6602-.1245 0-.2472.0085-.3672.0273H7.254c-.1194-.733.2228-1.1503.7383-1.1503.6472-.0006.9242.192 1.205.4511 0 0 .0195-.0007.0274 0 .0038-.2457.002-.5318.002-.7949-.185-.0857-.5061-.1465-1.0899-.1465zM0 7.756v7.1367h.8594V7.7559zm23 .1386v.7657h.1387v-.3086h.164l.1192.3086h.1543l-.1407-.3301c.0494-.0248.1329-.0518.1329-.1875 0-.2224-.1673-.248-.3125-.248zm.1387.1328h.1543c.0834 0 .1289.0337.1289.1016 0 .068-.0524.0996-.1172.0996h-.166zM4.1719 9.3555c-.945 0-1.3429.3359-1.6582.6738a.2474.2474 0 00-.0352.0644h-.0078v-.043l-.0098-.623H1.707v5.4649h.7754v-3.9961c.0226-.4905.7134-.9746 1.252-.9746.6477 0 1.1777.4364 1.1777 1.039v3.9317h.7754c-.0019-1.429-.002-2.858-.002-4.2871-.0234-.4835-.6094-1.25-1.5136-1.25zm6.2832.5566c.9741-.0175 1.7825 1.0214 1.8047 2.3184.022 1.297-.7504 2.3614-1.7246 2.3789-.9742.0171-1.7825-1.0195-1.8047-2.3164-.0221-1.2971.7503-2.3634 1.7246-2.3809Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ingress.svg b/assets/lib/simple-icons/icons/ingress.svg
new file mode 100644
index 00000000..3303b05e
--- /dev/null
+++ b/assets/lib/simple-icons/icons/ingress.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Ingress</title><path d="M22.55 6.55v10.9c0 .434-.184.749-.55.95l-9.45 5.45c-.367.2-.733.2-1.1 0L2 18.4c-.366-.201-.55-.516-.55-.95V6.55c0-.434.184-.749.55-.95L11.45.15c.367-.2.733-.2 1.1 0L22 5.6c.366.201.55.516.55.95zM21 17.8l-3.9-2.25.5-.9 3.9 2.249V6.549l-.05-.048-8.95-5.2v4.5h-1v-4.5l-9 5.2v10.398l3.9-2.248.5.899L3 17.8l8.95 5.15h.1L21 17.8zM4.55 7.675c0-.016.016-.025.05-.025h14.8c.033 0 .05.009.05.025v.075l-7.4 12.799c0 .034-.017.05-.05.05-.034 0-.05-.016-.05-.05L4.55 7.75v-.075zm6.95 5.076c0-.301-.15-.533-.45-.7L6.9 9.65h-.05v.05l4.6 7.9c.033 0 .05-.019.05-.051v-4.8zm.9-1.601l4.2-2.45H7.4l.05.051 4.15 2.399a.701.701 0 00.8 0zM17.15 9.7v-.05h-.05l-4.15 2.4c-.3.167-.45.417-.45.749v4.8h.1l4.55-7.899z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/inkscape.svg b/assets/lib/simple-icons/icons/inkscape.svg
index 707ae0d4..94b9760c 100644
--- a/assets/lib/simple-icons/icons/inkscape.svg
+++ b/assets/lib/simple-icons/icons/inkscape.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Inkscape icon</title><path d="M11.872.191c-.745-.011-1.464.278-1.993.804l-8.825 9.038c-3.343 3.34 2.164 3.061 4.154 4.325.922.602-2.955 1.371-2.164 2.164.771.793 4.65 1.521 5.422 2.293.771.791-1.564 1.627-.793 2.418.75.793 2.549.043 2.87 1.842.235 1.328 3.3.666 4.672-.471.854-.729-1.479-.729-.708-1.521 1.929-1.949 3.642-.875 4.349-2.676.387-.963-2.913-1.65-2.034-2.271 2.101-1.477 9.812-2.227 6.255-5.782L13.93.995c-.56-.521-1.295-.807-2.058-.804zm.075.859c.529.003 1.06.201 1.444.584l3.492 3.557c.323.321.323.986.129 1.178l-1.734-1.412-.343 2.077-1.435-.772-2.336 1.478-.771-3.105-1.242 2.698-3.107-.022c-.6 0-.514-.621.107-1.242 1.221-1.35 3.6-3.64 4.35-4.433.385-.396.915-.589 1.445-.584l.001-.002zm9.755 16.276c-.74.025-1.496.395-1.689 1.08 0 .449 3.492.707 3.301-.107-.141-.686-.87-1.002-1.611-.975v.002zM6.356 19.271c-1.008.059-2.088.791-1.232 1.512.791.686 1.992-.15 2.377-1.113-.24-.316-.686-.426-1.143-.398h-.002zm13.229.077c-.986.9.17 1.842 1.134 1.221.258-.173-.021-1.005-1.134-1.221z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Inkscape</title><path d="M7.666 14.871c.237.147 3.818.875 4.693 1.02.303.064.088.376-.33.587-.943.251-5.517-1.607-4.363-1.607zm5.647-13.264l3.505 3.56c.333.34.328.998.142 1.187l-1.74-1.392-.342 2.061-1.455-.767-2.328 1.47-.771-3.1L9.073 6.79H7.16c-.78 0-.871-.99-.163-1.698 1.237-1.335 2.657-2.696 3.429-3.485.776-.793 2.127-.77 2.887 0zM9.786.97l-8.86 9.066c-2.993 3.707 2.038 3.276 4.194 4.343.774.791-2.965 1.375-2.191 2.166.773.791 4.678 1.524 5.453 2.314.773.791-1.584 1.63-.81 2.42.773.792 2.563.042 2.898 1.868.238 1.304 3.224.56 4.684-.508.774-.791-1.48-.717-.706-1.508 1.923-1.967 3.715-.714 4.373-2.686.325-.974-2.832-1.501-2.057-2.292 2.226-1.3 9.919-2.146 6.268-5.796L13.85.97c-1.123-1.078-2.998-1.09-4.063 0zm10.177 17.475c0 .45 3.314.745 3.314-.106-.472-1.366-2.922-1.274-3.314.106zm-14.928 2.39c.784.679 1.997-.169 2.36-1.116-.76-1.01-3.607.037-2.36 1.116zm14.512-1.466c-1.011.908.114 1.828 1.111 1.242.222-.225-.006-1.016-1.11-1.242Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/insomnia.svg b/assets/lib/simple-icons/icons/insomnia.svg
index 5769d706..f542644f 100644
--- a/assets/lib/simple-icons/icons/insomnia.svg
+++ b/assets/lib/simple-icons/icons/insomnia.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Insomnia icon</title><path d="M12 0C5.417 0 0 5.417 0 12s5.417 12 12 12 12-5.417 12-12S18.583 0 12 0zm0 2.478c5.256 0 9.522 4.266 9.522 9.522S17.256 21.522 12 21.522 2.478 17.256 2.478 12c0-.885.12-1.741.347-2.554a4.76 4.76 0 0 0 3.925 2.066 4.764 4.764 0 0 0 4.762-4.762 4.758 4.758 0 0 0-2.067-3.925A9.526 9.526 0 0 1 12 2.478Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Insomnia</title><path d="M12.1356 3.4577c4.7179 0 8.5424 3.8245 8.5424 8.5424 0 4.7178-3.8245 8.5423-8.5424 8.5423-4.7178 0-8.5423-3.8245-8.5423-8.5423 0-1.153.2284-2.2527.6425-3.2562.6046.8233 1.5796 1.3579 2.6795 1.3579 1.8347 0 3.322-1.4874 3.322-3.3221 0-1.0999-.5345-2.0749-1.3579-2.6795 1.0036-.414 2.1032-.6425 3.2562-.6425zM12 0C5.3726 0 0 5.3726 0 12s5.3726 12 12 12 12-5.3726 12-12S18.6274 0 12 0Zm0 1.2203c5.9534 0 10.7797 4.8263 10.7797 10.7797S17.9534 22.7797 12 22.7797 1.2203 17.9534 1.2203 12 6.0466 1.2203 12 1.2203Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/instacart.svg b/assets/lib/simple-icons/icons/instacart.svg
index eda8789e..409f6a86 100644
--- a/assets/lib/simple-icons/icons/instacart.svg
+++ b/assets/lib/simple-icons/icons/instacart.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Instacart icon</title><path d="M15.629 9.619c1.421 1.429 2.58 3.766 1.917 5.152-1.778 3.715-15.04 10.226-16.169 9.1C.252 22.746 6.768 9.476 10.481 7.697c1.388-.66 3.724.51 5.152 1.92l-.005.014v-.012zm7.028-1.566c-.231-.855-.821-1.717-1.7-1.82-1.61-.186-4.151 2.663-3.971 3.339.181.69 3.766 1.875 5.1.915.691-.494.781-1.56.556-2.414l.015-.02zM17.666.158c1.198.324 2.407 1.148 2.551 2.382.261 2.259-3.732 5.819-4.68 5.564-.948-.251-2.618-5.284-1.269-7.162.695-.972 2.201-1.106 3.399-.788v.004h-.001z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Instacart</title><path d="M15.629 9.619c1.421 1.429 2.58 3.766 1.917 5.152-1.778 3.715-15.04 10.226-16.169 9.1C.252 22.746 6.768 9.476 10.481 7.697c1.388-.66 3.724.51 5.152 1.92l-.005.014v-.012zm7.028-1.566c-.231-.855-.821-1.717-1.7-1.82-1.61-.186-4.151 2.663-3.971 3.339.181.69 3.766 1.875 5.1.915.691-.494.781-1.56.556-2.414l.015-.02zM17.666.158c1.198.324 2.407 1.148 2.551 2.382.261 2.259-3.732 5.819-4.68 5.564-.948-.251-2.618-5.284-1.269-7.162.695-.972 2.201-1.106 3.399-.788v.004h-.001z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/instagram.svg b/assets/lib/simple-icons/icons/instagram.svg
index e0b8ffd7..5a687214 100644
--- a/assets/lib/simple-icons/icons/instagram.svg
+++ b/assets/lib/simple-icons/icons/instagram.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Instagram icon</title><path d="M12 0C8.74 0 8.333.015 7.053.072 5.775.132 4.905.333 4.14.63c-.789.306-1.459.717-2.126 1.384S.935 3.35.63 4.14C.333 4.905.131 5.775.072 7.053.012 8.333 0 8.74 0 12s.015 3.667.072 4.947c.06 1.277.261 2.148.558 2.913.306.788.717 1.459 1.384 2.126.667.666 1.336 1.079 2.126 1.384.766.296 1.636.499 2.913.558C8.333 23.988 8.74 24 12 24s3.667-.015 4.947-.072c1.277-.06 2.148-.262 2.913-.558.788-.306 1.459-.718 2.126-1.384.666-.667 1.079-1.335 1.384-2.126.296-.765.499-1.636.558-2.913.06-1.28.072-1.687.072-4.947s-.015-3.667-.072-4.947c-.06-1.277-.262-2.149-.558-2.913-.306-.789-.718-1.459-1.384-2.126C21.319 1.347 20.651.935 19.86.63c-.765-.297-1.636-.499-2.913-.558C15.667.012 15.26 0 12 0zm0 2.16c3.203 0 3.585.016 4.85.071 1.17.055 1.805.249 2.227.415.562.217.96.477 1.382.896.419.42.679.819.896 1.381.164.422.36 1.057.413 2.227.057 1.266.07 1.646.07 4.85s-.015 3.585-.074 4.85c-.061 1.17-.256 1.805-.421 2.227-.224.562-.479.96-.899 1.382-.419.419-.824.679-1.38.896-.42.164-1.065.36-2.235.413-1.274.057-1.649.07-4.859.07-3.211 0-3.586-.015-4.859-.074-1.171-.061-1.816-.256-2.236-.421-.569-.224-.96-.479-1.379-.899-.421-.419-.69-.824-.9-1.38-.165-.42-.359-1.065-.42-2.235-.045-1.26-.061-1.649-.061-4.844 0-3.196.016-3.586.061-4.861.061-1.17.255-1.814.42-2.234.21-.57.479-.96.9-1.381.419-.419.81-.689 1.379-.898.42-.166 1.051-.361 2.221-.421 1.275-.045 1.65-.06 4.859-.06l.045.03zm0 3.678c-3.405 0-6.162 2.76-6.162 6.162 0 3.405 2.76 6.162 6.162 6.162 3.405 0 6.162-2.76 6.162-6.162 0-3.405-2.76-6.162-6.162-6.162zM12 16c-2.21 0-4-1.79-4-4s1.79-4 4-4 4 1.79 4 4-1.79 4-4 4zm7.846-10.405c0 .795-.646 1.44-1.44 1.44-.795 0-1.44-.646-1.44-1.44 0-.794.646-1.439 1.44-1.439.793-.001 1.44.645 1.44 1.439z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Instagram</title><path d="M12 0C8.74 0 8.333.015 7.053.072 5.775.132 4.905.333 4.14.63c-.789.306-1.459.717-2.126 1.384S.935 3.35.63 4.14C.333 4.905.131 5.775.072 7.053.012 8.333 0 8.74 0 12s.015 3.667.072 4.947c.06 1.277.261 2.148.558 2.913.306.788.717 1.459 1.384 2.126.667.666 1.336 1.079 2.126 1.384.766.296 1.636.499 2.913.558C8.333 23.988 8.74 24 12 24s3.667-.015 4.947-.072c1.277-.06 2.148-.262 2.913-.558.788-.306 1.459-.718 2.126-1.384.666-.667 1.079-1.335 1.384-2.126.296-.765.499-1.636.558-2.913.06-1.28.072-1.687.072-4.947s-.015-3.667-.072-4.947c-.06-1.277-.262-2.149-.558-2.913-.306-.789-.718-1.459-1.384-2.126C21.319 1.347 20.651.935 19.86.63c-.765-.297-1.636-.499-2.913-.558C15.667.012 15.26 0 12 0zm0 2.16c3.203 0 3.585.016 4.85.071 1.17.055 1.805.249 2.227.415.562.217.96.477 1.382.896.419.42.679.819.896 1.381.164.422.36 1.057.413 2.227.057 1.266.07 1.646.07 4.85s-.015 3.585-.074 4.85c-.061 1.17-.256 1.805-.421 2.227-.224.562-.479.96-.899 1.382-.419.419-.824.679-1.38.896-.42.164-1.065.36-2.235.413-1.274.057-1.649.07-4.859.07-3.211 0-3.586-.015-4.859-.074-1.171-.061-1.816-.256-2.236-.421-.569-.224-.96-.479-1.379-.899-.421-.419-.69-.824-.9-1.38-.165-.42-.359-1.065-.42-2.235-.045-1.26-.061-1.649-.061-4.844 0-3.196.016-3.586.061-4.861.061-1.17.255-1.814.42-2.234.21-.57.479-.96.9-1.381.419-.419.81-.689 1.379-.898.42-.166 1.051-.361 2.221-.421 1.275-.045 1.65-.06 4.859-.06l.045.03zm0 3.678c-3.405 0-6.162 2.76-6.162 6.162 0 3.405 2.76 6.162 6.162 6.162 3.405 0 6.162-2.76 6.162-6.162 0-3.405-2.76-6.162-6.162-6.162zM12 16c-2.21 0-4-1.79-4-4s1.79-4 4-4 4 1.79 4 4-1.79 4-4 4zm7.846-10.405c0 .795-.646 1.44-1.44 1.44-.795 0-1.44-.646-1.44-1.44 0-.794.646-1.439 1.44-1.439.793-.001 1.44.645 1.44 1.439z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/instapaper.svg b/assets/lib/simple-icons/icons/instapaper.svg
index 955a780b..3976c520 100644
--- a/assets/lib/simple-icons/icons/instapaper.svg
+++ b/assets/lib/simple-icons/icons/instapaper.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Instapaper icon</title><path d="M14.766 20.259c0 1.819.271 2.089 2.934 2.292V24H6.301v-1.449c2.666-.203 2.934-.473 2.934-2.292V3.708c0-1.784-.27-2.089-2.934-2.292V0h11.398v1.416c-2.662.203-2.934.506-2.934 2.292v16.551z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Instapaper</title><path d="M14.766 20.259c0 1.819.271 2.089 2.934 2.292V24H6.301v-1.449c2.666-.203 2.934-.473 2.934-2.292V3.708c0-1.784-.27-2.089-2.934-2.292V0h11.398v1.416c-2.662.203-2.934.506-2.934 2.292v16.551z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/instatus.svg b/assets/lib/simple-icons/icons/instatus.svg
new file mode 100644
index 00000000..d3b88f80
--- /dev/null
+++ b/assets/lib/simple-icons/icons/instatus.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Instatus</title><path d="m16.994 21.028c3.5843-1.91 5.471-5.759 5.0561-9.5637-1.3206 1.0851-2.6237 2.3203-3.8709 3.6906-2.0656 2.2694-3.7476 4.6559-4.9953 6.9817 1.2946-0.09715 2.5907-0.45868 3.8101-1.1086zm-13.394-2.5626c-1.3408 1.8191-2.3771 4.4991-1.3032 5.3066 1.5151 1.1394 8.404-2.0133 13.908-8.8051 5.504-6.7918 7.3265-13.796 4.879-14.873-1.1283-0.49644-3.486 1.083-4.8394 2.3943l0.58412 0.31415c1.332-0.85276 3.5528-1.7338 1.4995 1.9758-0.0097 0.01768-0.01962 0.03541-0.02949 0.05317-2.9067-2.2075-6.9471-2.662-10.379-0.8328-4.7026 2.506-6.4831 8.3499-3.9771 13.052 0.58979 1.1067 1.3644 2.0516 2.2655 2.8168-3.5586 2.7493-2.6905 0.35965-2.1925-0.8162z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/instructables.svg b/assets/lib/simple-icons/icons/instructables.svg
new file mode 100644
index 00000000..56fc7b6d
--- /dev/null
+++ b/assets/lib/simple-icons/icons/instructables.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Instructables</title><path d="M9.4174.0004c-.1655-.0025-.319.0073-.4493.0363-.902.201-1.2372 1.1122-1.6211 1.9531-.1036.2255-.192.107-.5576.9754-1.1487-.137-2.5594-.1066-3.4065-.2041.1402.4845.8319.198 1.295.2041.7587.0061 1.5447.2011 2.1115.2042.0335.2102.2134.4414.25.6486.1188.6917.0764 1.3407-.1126 2.005-.1828.649-1.2492 1.1886-1.499 2.0448-.1037.3535.0118.6551-.1375 1.0909-.1097.137-.3256.1702-.475.2707-1.0572 1.1914-1.6729 3.178-1.9745 4.9026.7252.3382 1.3467.0185 1.7032.2714.2163.061.0916-.2255.2714-.2041.137.0213.1306.1828.2707.204-.1127 1.027.0673 1.7308.0673 2.7912 1.1152.4814 2.3768.399 3.9551.4112-.0182.2042.3868.9602.0578 1.4569.4875.4966-.2407 2.1783.7587 2.221-.332.4874-.5579 1.0785-.5457 1.9073-.2407.1066-.0396-.2316-.2041-.2041-1.691-.0427-2.6844-.3078-4.4943-.2042.5058.2072 1.4444.119 2.1787.2714.0792.0122.055.125.0672.2041.2956-.1401 1.1029-.0304 1.633 0-.2376.125.3325.2468.3416 0 .457.0701.8287.5852 1.2248.6797 1.3072.3138 2.0447-.6313 2.8613-1.2224.128.2681.7553.0152 1.1575 0-.3352-.198-1.1365-.134-1.499 0 .1218-.9629-.3534-1.3285-.8166-1.7032.189-.1067.3958-.1948.5451-.341.0183-1.3407-.0546-1.7948-.1368-2.9953.7252-.1493 1.7613-.2437 2.6572-.4082-.317.969-.1404 1.444-.2714 2.7238.1676.0823.399.101.6124.1375-.6704.3595-1.0573 1.8947-.2042 2.3823-.0761.1736-.3655.1344-.6123.1374.0091.3565.8498-.1221.7492.341.457-.3687 3.1811-.0394 4.2902.0673-.1188-.6094-1.453-.1192-2.0442-.5457.7648-.4876.7768-1.9618-.0673-2.3823.646-.4296.2683-2.1969.4755-3.1993.6186-.2682 1.5905-.1801 2.1115-.5458-.0152-.8714-.1825-1.5873-.341-2.3156.2164-.1493.7495-.3351 1.0206-.2041.1493-.0122.146-.174.137-.3416.0609-.1645.201.1526.4082.0673.0091-.8136-.3684-1.2249-.7493-1.9074-.5728-1.0238-1.3196-2.0295-2.453-2.453-.9538-1.6363-1.9711-3.2054-4.1528-3.6106-.1219-.3078-.049-.8135-.0672-1.2248.3016-.265.564-.573.5457-1.158.8288-.3535 2.1297.0852 2.928 0-.128-.4206-.8656-.1555-1.3623-.2042-.527-.0518-1.0481-.2803-1.499 0-.131-.387-.3533-1.1057-.591-.929-.1402-.3382-.1313-.8657-.0917-1.3836-.847-.1737-1.7762-.4385-2.7238-.5452-.4228-.048-1.0288-.1665-1.5253-.1737zm-.382.2374c1.5448.134 3.1656.1919 4.427.6124.2164 1.551-.085 2.9803.1375 4.6318-1.6484-.2803-3.5102-.6189-5.177-.3416.0793-1.6302.1463-3.434.6124-4.9026zM8.627.5092c-.0945 1.5387-.396 2.8426-.4083 4.6312-.323.2437-.6734.46-1.0908.6124-.0366-.5698.021-1.3403.1369-1.77.0975.1067.2652.143.4755.137.5545-.64.28-1.7428-.0673-2.5198.2803-.3991.4908-.8714.954-1.0908zm2.2626.7903c-.2944-.0043-.5763.0233-.8308.0964.3322.0061.7194-.037.954.0667-.4753.2072-.7955.5667-.7498 1.295.7282 1.0115 1.9712-.2254 1.2247-1.2248.4754-.0335 1.3378.3292 1.9746.2714-.6947-.1943-1.6894-.4917-2.5727-.5047zm.356.3535c.297.041.3246.751.2421 1.0284-.32.387-.9866.1405-1.0902-.2708.1615-.0853-.0248-.5212.2707-.4755-.0822.515.1649.701.5458.7498.0944-.131.1797-.2713.204-.4755-.0578-.2346-.2832-.3048-.4082-.4755.0644-.0464.1218-.0716.1726-.0797a.2142.2142 0 0 1 .0631-.0012zm-3.5726.4225c.1189.4175.2135 1.1727.0673 1.77-1.039-.0245-.7224-1.581-.0673-1.77zm3.1327 0c.2255.003.481-.0274.475.2042-.0366.0975-.1067.1645-.2042.204-.0853-.14-.3287-.1248-.2708-.4082zm1.6925.0238c-.2755.0209-.5396.2472-.535.7957.2407.1188.4021.3232.8165.2714.6685-.5656.1777-1.1018-.2815-1.067zm.0107.0429c.2986.0213.5146.119.475.4755-.2194-.0945-.2739-.3567-.475-.4755zm1.3617.1375c.393.4326.4144 1.7184-.2042 1.9073-.0243-.5667-.061-1.4412.2042-1.9073zm-1.4938.069c.0266.002.0497.0214.0649.0678-.189.1036-.009.4084.0702.4785-.2681.0396-.302-.1527-.3416-.3416.016-.0594.1267-.2109.2065-.2047zm.1321.135c.2133-.0304.3043.0606.2708.2709-.2133.0335-.3012-.0575-.2708-.2708zm-3.4064.8166c-.0792.0122-.0581.1249-.0673.2041 1.5266.1828 2.7729.6487 4.0861.5451-.2133-.3504-.7098-.1736-1.0206-.204-.9446-.0946-1.8924-.4537-2.8613-.475-.0793.0091-.1217-.0154-.137-.0702zm2.093 1.9014c.9318.0446 2.0293.469 2.5412.6183.1401.0396.3231-.0427.4755 0 .4844.134 1.1974.4724 1.499.6826.844.5911 1.4262 1.807 1.9747 2.7911.195.3535.5148.6095.6123.8867.3017.8593.3501 1.7671.7493 2.5198l.0732.341c.2163.7587.4269 1.8193.5457 2.453-3.0287.4297-5.872.7495-8.3096 1.0207-2.0232-.3291-4.1683-.1735-5.9934-.341-.3017-2.3036.3993-4.5952.2713-6.9474.0122-.192.2227-.1856.2714-.341-.1737-.0092-.3507-.0122-.3416-.2042.198-2.1054 2.4071-3.9675 4.6985-3.3368.2376-.0366.305-.1155.5457-.1369a2.8444 2.8444 0 0 1 .3868-.006zM9.894 8.9997a1.6087 1.6087 0 0 0-.3136.0226c-.2255.3474-.1552.6615-.137 1.1581 1.1142 1.1912 1.8694-1.134.4506-1.1807zm5.0633.0173c-1.3532.0321-.3819 2.6965.6837 1.3003.253-.8074-.1368-1.2554-.545-1.295a1.1653 1.1653 0 0 0-.1387-.0053zm-2.3609.0297c-.2254-.0106-.472.067-.7034.247-.0853.4174.0887.9444.3416 1.2248.518.0426.9107-.0429 1.1575-.2714.0943-.727-.2996-1.177-.7957-1.2004zm-7.3062.1095c.3595 1.0939-.0454 2.523-.0667 3.6779-.5667-.0915-1.0694-.2464-1.7032-.2708.329-1.3955.6638-2.7885 1.7699-3.407zm4.8847.0673a.264.264 0 0 1 .1523.0702c.1615.1615-.0121.3349 0 .5451-.2772.067-.2741-.006-.6123 0 .0487-.2529-.116-.2922-.0673-.5451.1943.0229.3695-.088.5273-.0702zm2.2995.003c.5982-.0527.9245.8043-.103.7498-.0761-.2194-.2739-.3172-.341-.5457.1538-.1314.306-.192.444-.2041zm2.5793.013c.2693-.001.52.1634.52.5327-.2345.2742-.4719.5575-.9533.4082-.0305-.1645.1215-.1496.0667-.3416-.1341.003-.085.1863-.2708.1375-.0857-.461.291-.7355.6374-.7368zm3.107.2583c1.0421.5028 1.6454 1.4442 2.1115 2.5198-.4966.0426-.7891-.1185-1.295-.0667-.1035-.5759-.4474-.9112-.4748-1.5663.1797-.003.4021.0362.4082-.1375-.0487-.262-.3507-.4692-.5457-.2041-.0091-.2408-.195-.3045-.2041-.5452zM4.879 9.702c-.0883.2894-.0607.5207.2714.545.1067-.1919-.0181-.28.0702-.545zm5.7227.204c.003.2073-.1432.2651-.2041.4083-.384.0214-.7133-.015-.7499-.341.3626.0762.6737.0912.954-.0672zm2.5864 0v.341c-.2712.125-1.2094.2804-.9534-.204.2468.3077.7675.0337.9534-.137zm2.3162.2042c-.0275.387-.762.582-.954.2041.4113.1097.7072.0122.954-.204zm-6.332 1.3652c.1279.5028-.1341.6338-.2042 1.0909.9263.067 1.9806-.0213 2.791-.003.0428-.061.0824-.1223 0-.1375H9.5109c2.5534-.5271 4.2109-.3652 7.014-.2708.0763.2133-.0186.1795.0667.341-1.6149.326-3.251-.402-4.8323.0673 1.5631-.0518 3.1962.1641 4.9026.2708.0365-.3474.0883-.8317 0-1.2248-.2468-.064-.07.2929-.2042.3416-1.8647-.1402-4.6772-.125-7.0813.2041-.0944-.0883-.0666-.2957-.0666-.4755 1.4595-.2468 4.305.253 5.4477-.2041-1.7002.1036-3.7235-.0122-5.5852 0zm6.5432.0637c-.3249-.0107-.6745.0136-.8909.003.3108.3016 1.2095.0152 1.633.204-.1173-.1507-.4172-.1964-.742-.207zm3.8957.6153c.3183.0018.6615.0695.7986.2048-.46-.1585-.911.1672-1.295-.1375.1234-.0457.3054-.0683.4964-.0673zm.1505.325c.2297-.0027.459.023.5779.0839-.2072.1432-1.0789.3626-1.1581 0 .1204-.0503.3506-.0813.5802-.084zm.9641.244c.2443-.0384.3716.3498.3636.6564-.2529.134-.4389-.3077-.4755-.6124.0397-.0244.077-.0386.112-.044zm-17.2756.044c.4083 0 1.3406.0668 1.7032.341-.588-.0945-1.3833.0216-1.7032-.341zm16.8894.1369c.2133.2681.25.4813.2714.8165-.262-.0549-.2836-.7099-.2714-.8165zm-.9504.0672h.2708c.006.3139.171.463.1374.8165-.387-.0213-.332-.4843-.4082-.8165zm.6094 0c.0396.2133.3197.542.1369.7493-.1067-.1463-.3106-.5482-.137-.7493zm-16.039.1298c.4297.0108.9446.1147 1.057.3451-.5455-.0883-1.134-.1336-1.6337-.2707.0914-.0538.3189-.081.5767-.0744zm-.25.3433c.1167.0012.2099.028.219.1423-.1493.1706-.0765.5575-.3416.6124 0-.1128-.1888-.0394-.204-.137.0944-.1766.2498-.2954.204-.6123a1.524 1.524 0 0 1 .1226-.0054zm-.3933.0054c-.0183.2529-.1069.4354-.2714.5451-.0213-.2925-.006-.5512.2714-.5451zm1.2247.1339c.1158.1371.0973.5514-.0672.6124-.1432-.0762-.274-.649.0672-.6124zm.4083.0702c.0152.125.1767.4507 0 .5452-.0214-.1189-.3139-.5238 0-.5452zm14.5738 2.0413c.2255.0244.1064.393.1369.6124-2.3797.582-4.5644.7128-7.1635 1.0997l-1.2158-.0089c-1.7916.131-4.171.1646-5.856-.2041-.0334-.2407-.1007-.4446-.0672-.7493 2.2822-.1676 4.6439.3136 6.9474.1369 2.526-.195 4.9512-.7831 7.2182-.8867zm-.4083.1369c-.0548.0365-.1096.0703-.204.0672.006.198.0239.3837.2707.341.0091-.1676.0126-.329-.0667-.4082zm-2.6572.3416c-.0152.2437.0979.3562.3416.341.0518-.061.0728-.152.0667-.2708-.0792-.0823-.2407-.0794-.4083-.0702zM5.97 16.582c-.0457.2285.116.25.2714.2714.0548-.061.0763-.1526.0702-.2714zm6.9474.0673c-.1006.2132-.0033.2772.1369.4082.1736-.006.1339-.2285.1339-.4082zm-4.1129.0743c-.057-.0037-.1187.0145-.1773.0625-.0152.2438.0972.3563.341.341.1348-.185.0074-.3923-.1637-.4035zm8.8113.1964c.0092.521-.0824.5822-.0702 1.1581-1.0207.0701-1.4718-.0978-2.3828-.1374.3108-.9111 1.5511-.8714 2.453-1.0207zm-5.5822.6826c.0457.2468.0947.4935.0673.8165-.8684.0275-1.7373-.222-2.5203-.0666-.0762-.2133-.0061-.1554 0-.4083.6033-.4022 1.9137-.2288 2.453-.3416zm3.9064.6636c.1382-.0064.3265.0284.451.153h-.204c-.5694-.0172-.4774-.1424-.247-.153zm1.3824.0036c.1326-.008.2384.0107.2262.1493-.0762.0914-.5362-.0058-.6124-.1368.0945.0304.2537-.0045.3862-.0125zm-6.395.2154c.1815.0066.3368.0398.4236.138-.2468-.003-.5362.0369-.6123-.1368a2.6671 2.6671 0 0 1 .1886-.0012zm5.2935.063c.4243-.0022.8604.043 1.261.2792-.9171-.2042-2.0204.11-2.453-.2708.355.0442.7677-.006 1.192-.0083zm-6.0756.1756c.6793-.0043 1.6155.0968 2.0222.378-.972-.125-1.743.0215-2.587-.341.1402-.0222.3384-.0355.5648-.037zm5.5144.1714c.6914.0055 1.3525.0443 1.8919.2065-.1158.1798-.009.5853-.137.7499-.6367-.067-1.828.128-2.5196 0-.0366-.3779.0361-.6432.0666-.954.2339-.0023.4676-.0042.698-.0024zm-6.0119.1363c.5729.1036 1.9195.189 2.5197.2744-.0883.4936.1676.9445 0 1.295-.5972.3534-1.5266.378-2.3828.4754-.1463-.5362-.3167-1.411-.1369-2.0448zm6.9474 1.0909c.9537-.0427 1.4072.7652 1.2914 1.4294-.2072 1.2036-2.5014 1.4865-3.132.475.009-.7161.0033-1.4503.5456-1.633.064.4905-.2193.591-.204.8867.0578 1.2096 2.2818 1.3774 2.4524.2713.131-.8562-.6213-.8993-.9534-1.4294zm-.7558.2404c.0436-.0153.0947.015.1036.0607.0036.0042.0088.0046.0119.0101.0365.07.043.1458.0583.222.0091.0457-.0217.0765-.0613.0887a.9213.9213 0 0 1-.2041.0333c-.061.003-.1189-.0612-.0762-.119.0548-.0762.0884-.161.125-.2524a.0721.0721 0 0 1 .0428-.0434zm1.0296.3053c.265.006.5516.4539.4755 1.0206-.2773.4875-1.5542.5269-1.5664.341.7953.0914 1.0362-.3714 1.3622-.7492.0214-.2743-.442-.4174-.2713-.6124zm-.3636.1654c.1848-.0061.3668.2504.4308.447-.3108.2102-.5.5453-.954.6123-.1706-.1676-.4478-.2345-.4082-.6123.4692-.0397.4177-.1583.7498.0672.1493-.1432-.0335-.195 0-.4082.058-.0724.12-.104.1816-.106zm-5.2912.31c.8866.0245 1.1762.6398 1.292 1.429.0304.1889-.2531.064-.2714.204.0792.0336.1554.073.2041.137-.46.8927-3.1687 1.4504-2.7238-.4083.07 1.1761 1.779.9509 2.2483.2714.2255-.9568-.4384-1.0389-.7492-1.633zm-.4755.5452c.088.0907.2554.1019.2755.2625a.313.313 0 0 1-.0012.0785c-.131.128-.171.0061-.3416 0 .0366-.1005-.079-.3532.0673-.341zm.545 0c1.4017.5515-.1582 2.0504-1.2247 1.2277-.0944-.265-.3105-.9659.0673-1.0908.1188.198.1612.4758.1369.817.2986.4724 1.3837.3046 1.4294-.2713-.2803-.0762-.1315-.4784-.4088-.6826zm.0673.4755c.0945.0884.0672.2957.0703.4785-.3322.0426-.71.2373-.8868-.1375.4175.0305.4905-.28.8165-.341zm8.503.532c-.0694-.005-.1785.0148-.3308.0834.393.1713.5394-.0684.3309-.0834Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/integromat.svg b/assets/lib/simple-icons/icons/integromat.svg
new file mode 100644
index 00000000..b184d83b
--- /dev/null
+++ b/assets/lib/simple-icons/icons/integromat.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Integromat</title><path d="M12 0c-.681 0-1.349.057-2 .166v4.09a8.002 8.002 0 012-.253c.69 0 1.36.088 2 .253V.166C13.35.056 12.68 0 12 0zM8.002.683C3.342 2.332 0 6.78 0 12c0 6.623 5.377 12 12 12s12-5.377 12-12C24 6.78 20.658 2.332 15.999.683v4.392a7.997 7.997 0 11-7.997 0zM12 6.003c-.7 0-1.374.12-2 .342v9.32a5.98 5.98 0 002 .343c.7 0 1.374-.121 2-.342V6.345a5.977 5.977 0 00-2-.342z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/intel.svg b/assets/lib/simple-icons/icons/intel.svg
index ecc5d226..47b79bf9 100644
--- a/assets/lib/simple-icons/icons/intel.svg
+++ b/assets/lib/simple-icons/icons/intel.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Intel icon</title><path d="M7.07 10.8v3.877H5.837V9.804l2.547.002c1.08 0 1.449.764 1.449 1.456v3.415h-1.23v-3.408c0-.291-.149-.469-.513-.469H7.07zm8.389-.058c-.422 0-.748.216-.885.51-.077.167-.117.347-.118.53h1.898c-.023-.53-.263-1.04-.895-1.04zm-1.003 1.88c0 .629.393 1.095 1.094 1.095.544 0 .815-.15 1.131-.466l.762.729c-.487.481-1.001.773-1.902.773-1.18 0-2.31-.643-2.31-2.52 0-1.605.985-2.512 2.281-2.512 1.315 0 2.075 1.063 2.075 2.455v.443h-3.131v.003zm-2.268 2.047c-1.004 0-1.432-.699-1.432-1.391v-4.8h1.232v1.327h.928v.996h-.929v2.4c0 .284.135.44.429.44h.5v1.027h-.728zM4.739 9.131H3.497v-1.18h1.242v1.18zm.003 5.595c-.93-.088-1.246-.651-1.246-1.305V9.806H4.74v4.924l.002-.004zm14.805-.104c-.929-.09-1.243-.652-1.243-1.303V7.784h1.243v6.84-.002zm4.347-6.038C22.769 3.091 12.102 2.743 5.23 6.927v.462c6.865-3.528 16.604-3.508 17.491 1.55.296 1.675-.646 3.418-2.329 4.422v1.311c2.025-.742 4.105-3.147 3.502-6.088zm-12.496 9.61c-4.742.438-9.686-.251-10.377-3.957-.337-1.827.497-3.765 1.598-4.967v-.643C.632 10.37-.446 12.577.175 15.184c.792 3.345 5.035 5.239 11.509 4.609 2.563-.249 5.916-1.074 8.247-2.354v-1.816c-2.116 1.261-5.617 2.302-8.533 2.571zM20.984 8.15c0-.06-.037-.079-.116-.079h-.077v.17l.077.002c.079 0 .116-.025.116-.084V8.15zm.12.423h-.091c-.009 0-.018-.004-.021-.012l-.125-.213c-.003-.005-.013-.01-.019-.01h-.056v.212c0 .012-.009.025-.023.025h-.082c-.011 0-.021-.014-.021-.025v-.533c0-.029.012-.045.038-.048.05-.005.101-.006.152-.006.152 0 .246.046.246.188v.01c0 .09-.046.135-.114.158l.13.219c0 .006.005.012.005.018.002.007-.004.017-.019.017v.002-.002zm-.218-.709c-.226 0-.408.184-.408.41.001.227.186.409.411.408.225 0 .406-.182.409-.406-.002-.226-.185-.411-.412-.412zm0 .907c-.273 0-.495-.222-.495-.495s.222-.495.494-.495h.001c.271 0 .495.224.495.495 0 .274-.224.495-.495.495z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Intel</title><path d="M20.42 7.345v9.18h1.651v-9.18zM0 7.475v1.737h1.737V7.474zm9.78.352v6.053c0 .513.044.945.13 1.292.087.34.235.618.44.828.203.21.475.359.803.451.334.093.754.136 1.255.136h.216v-1.533c-.24 0-.445-.012-.593-.037a.672.672 0 0 1-.39-.173.693.693 0 0 1-.173-.377 4.002 4.002 0 0 1-.037-.606v-2.182h1.193v-1.416h-1.193V7.827zm-3.505 2.312c-.396 0-.76.08-1.082.241-.327.161-.6.384-.822.668l-.087.117v-.902H2.658v6.256h1.639v-3.214c.018-.588.16-1.02.433-1.299.29-.297.642-.445 1.044-.445.476 0 .841.149 1.082.433.235.284.359.686.359 1.2v3.324h1.663V12.97c.006-.89-.229-1.595-.686-2.09-.458-.495-1.1-.742-1.917-.742zm10.065.006a3.252 3.252 0 0 0-2.306.946c-.29.29-.525.637-.692 1.033a3.145 3.145 0 0 0-.254 1.273c0 .452.08.878.241 1.274.161.395.39.742.674 1.032.284.29.637.526 1.045.693.408.173.86.26 1.342.26 1.397 0 2.262-.637 2.782-1.23l-1.187-.904c-.248.297-.841.699-1.583.699-.464 0-.847-.105-1.138-.321a1.588 1.588 0 0 1-.593-.872l-.019-.056h4.915v-.587c0-.451-.08-.872-.235-1.267a3.393 3.393 0 0 0-.661-1.033 3.013 3.013 0 0 0-1.02-.692 3.345 3.345 0 0 0-1.311-.248zm-16.297.118v6.256h1.651v-6.256zm16.278 1.286c1.132 0 1.664.797 1.664 1.255l-3.32.006c0-.458.525-1.255 1.656-1.261zm7.073 3.814a.606.606 0 0 0-.606.606.606.606 0 0 0 .606.606.606.606 0 0 0 .606-.606.606.606 0 0 0-.606-.606zm-.008.105a.5.5 0 0 1 .002 0 .5.5 0 0 1 .5.501.5.5 0 0 1-.5.5.5.5 0 0 1-.5-.5.5.5 0 0 1 .498-.5zm-.233.155v.699h.13v-.285h.093l.173.285h.136l-.18-.297a.191.191 0 0 0 .118-.056c.03-.03.05-.074.05-.136 0-.068-.02-.117-.063-.154-.037-.038-.105-.056-.185-.056zm.13.099h.154c.019 0 .037.006.056.012a.064.064 0 0 1 .037.031c.013.013.012.031.012.056a.124.124 0 0 1-.012.055.164.164 0 0 1-.037.031c-.019.006-.037.013-.056.013h-.154Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/intellijidea.svg b/assets/lib/simple-icons/icons/intellijidea.svg
index 691b45d3..6cc5f0f2 100644
--- a/assets/lib/simple-icons/icons/intellijidea.svg
+++ b/assets/lib/simple-icons/icons/intellijidea.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>IntelliJ IDEA icon</title><path d="M0 0v24h24V0zm3.723 3.111h5v1.834h-1.39v6.277h1.39v1.834h-5v-1.834h1.444V4.945H3.723zm11.055 0H17v6.5c0 .612-.055 1.111-.222 1.556-.167.444-.39.777-.723 1.11-.277.279-.666.557-1.11.668a3.933 3.933 0 0 1-1.445.278c-.778 0-1.444-.167-1.944-.445a4.81 4.81 0 0 1-1.279-1.056l1.39-1.555c.277.334.555.555.833.722.277.167.611.278.945.278.389 0 .721-.111 1-.389.221-.278.333-.667.333-1.278zM2.222 19.5h9V21h-9z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>IntelliJ IDEA</title><path d="M0 0v24h24V0zm3.723 3.111h5v1.834h-1.39v6.277h1.39v1.834h-5v-1.834h1.444V4.945H3.723zm11.055 0H17v6.5c0 .612-.055 1.111-.222 1.556-.167.444-.39.777-.723 1.11-.277.279-.666.557-1.11.668a3.933 3.933 0 0 1-1.445.278c-.778 0-1.444-.167-1.944-.445a4.81 4.81 0 0 1-1.279-1.056l1.39-1.555c.277.334.555.555.833.722.277.167.611.278.945.278.389 0 .721-.111 1-.389.221-.278.333-.667.333-1.278zM2.222 19.5h9V21h-9z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/interactjs.svg b/assets/lib/simple-icons/icons/interactjs.svg
new file mode 100644
index 00000000..54ba0e62
--- /dev/null
+++ b/assets/lib/simple-icons/icons/interactjs.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>InteractJS</title><path d="M12.382.01C12.255.006 12.128 0 12 0A11.999 11.999 0 0 0 1.804 18.327l9.911-17.17zm7.097 19.686L11.201 5.121 2.788 19.689l.007.007h16.684zm.184 1.538H4.337a11.998 11.998 0 0 0 15.326 0zm2.917-3.568A11.999 11.999 0 0 0 12.382.01l.667 1.148zM12.383.009l-.001.001h.001V.009z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/intercom.svg b/assets/lib/simple-icons/icons/intercom.svg
index a5547f1f..3a0ec690 100644
--- a/assets/lib/simple-icons/icons/intercom.svg
+++ b/assets/lib/simple-icons/icons/intercom.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Intercom icon</title><path d="M21 0H3C1.343 0 0 1.343 0 3v18c0 1.658 1.343 3 3 3h18c1.658 0 3-1.342 3-3V3c0-1.657-1.342-3-3-3zm-5.801 4.399c0-.44.36-.8.802-.8.44 0 .8.36.8.8v10.688c0 .442-.36.801-.8.801-.443 0-.802-.359-.802-.801V4.399zM11.2 3.994c0-.44.357-.799.8-.799s.8.359.8.799v11.602c0 .44-.357.8-.8.8s-.8-.36-.8-.8V3.994zm-4 .405c0-.44.359-.8.799-.8.443 0 .802.36.802.8v10.688c0 .442-.36.801-.802.801-.44 0-.799-.359-.799-.801V4.399zM3.199 6c0-.442.36-.8.802-.8.44 0 .799.358.799.8v7.195c0 .441-.359.8-.799.8-.443 0-.802-.36-.802-.8V6zM20.52 18.202c-.123.105-3.086 2.593-8.52 2.593-5.433 0-8.397-2.486-8.521-2.593-.335-.288-.375-.792-.086-1.128.285-.334.79-.375 1.125-.09.047.041 2.693 2.211 7.481 2.211 4.848 0 7.456-2.186 7.479-2.207.334-.289.839-.25 1.128.086.289.336.25.84-.086 1.128zm.281-5.007c0 .441-.36.8-.801.8-.441 0-.801-.36-.801-.8V6c0-.442.361-.8.801-.8.441 0 .801.357.801.8v7.195z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Intercom</title><path d="M21 0H3C1.343 0 0 1.343 0 3v18c0 1.658 1.343 3 3 3h18c1.658 0 3-1.342 3-3V3c0-1.657-1.342-3-3-3zm-5.801 4.399c0-.44.36-.8.802-.8.44 0 .8.36.8.8v10.688c0 .442-.36.801-.8.801-.443 0-.802-.359-.802-.801V4.399zM11.2 3.994c0-.44.357-.799.8-.799s.8.359.8.799v11.602c0 .44-.357.8-.8.8s-.8-.36-.8-.8V3.994zm-4 .405c0-.44.359-.8.799-.8.443 0 .802.36.802.8v10.688c0 .442-.36.801-.802.801-.44 0-.799-.359-.799-.801V4.399zM3.199 6c0-.442.36-.8.802-.8.44 0 .799.358.799.8v7.195c0 .441-.359.8-.799.8-.443 0-.802-.36-.802-.8V6zM20.52 18.202c-.123.105-3.086 2.593-8.52 2.593-5.433 0-8.397-2.486-8.521-2.593-.335-.288-.375-.792-.086-1.128.285-.334.79-.375 1.125-.09.047.041 2.693 2.211 7.481 2.211 4.848 0 7.456-2.186 7.479-2.207.334-.289.839-.25 1.128.086.289.336.25.84-.086 1.128zm.281-5.007c0 .441-.36.8-.801.8-.441 0-.801-.36-.801-.8V6c0-.442.361-.8.801-.8.441 0 .801.357.801.8v7.195z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/intermarche.svg b/assets/lib/simple-icons/icons/intermarche.svg
new file mode 100644
index 00000000..785fb407
--- /dev/null
+++ b/assets/lib/simple-icons/icons/intermarche.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Intermarche</title><path d="m9.948 13.05.677 1.18h12.782l.15-1.18zm1.961-2.556a3.209 3.209 0 0 0-.694.071 1.72 1.72 0 0 0-.537-.07 2.699 2.699 0 0 0-1.007.168l-.215 1.53.317.552h.384l.254-1.834a.648.648 0 0 1 .2-.03c.17 0 .229.086.23.192l-.234 1.672h.782l.215-1.525a1 1 0 0 0 .008-.093l.03-.214a.646.646 0 0 1 .201-.029c.197 0 .246.115.227.25l-.22 1.608h.778l.215-1.524c.062-.442-.185-.72-.93-.72M8.88 11.88a.725.725 0 0 0 .438-.593l.012-.078h-.004c.062-.442-.185-.72-.93-.72a2.699 2.699 0 0 0-1.007.17v.003L7.1 12.741h.778l.104-.74h.2l1.466 2c.097.13.219.23.375.23h.208l-1.355-2.352zm-.32-.755-.01.084-.025.165a.27.27 0 0 1-.3.247h-.19l.01-.078.09-.638a.64.64 0 0 1 .202-.03c.197 0 .247.114.227.25zm-3.84 1.503c.014-.102-.023-.174-.145-.174h-.09c-.197 0-.247-.114-.228-.25l.165-1.178v-.015l.01-.078h.21a.058.058 0 0 1 .02 0c.113 0 .207-.115.231-.289H4.47l.122-.871c-.558.061-.815.32-.871.705l-.066.434-.006.042-.004.03-.14 1.04c-.061.432.17.707.876.72h.322l.016-.114m1.416-2.14a2.699 2.699 0 0 0-1.007.17l-.119.846-.068.509c-.06.43.175.705.877.718h.853l.015-.102c.015-.103-.021-.186-.143-.186H5.92c-.197 0-.246-.114-.227-.25l.025-.186h.244c.714-.01 1.03-.283 1.092-.713l.012-.079h-.004c.06-.44-.187-.719-.931-.719zm.166.642-.011.085-.027.155a.27.27 0 0 1-.3.247h-.191l.01-.078.09-.638a.642.642 0 0 1 .202-.029c.196 0 .245.115.226.25zm16.764-.642a2.696 2.696 0 0 0-1.005.17l-.12.846-.068.509c-.06.43.175.705.876.718h.854l.015-.103c.015-.103-.022-.185-.144-.185h-.625c-.196 0-.246-.114-.226-.25l.025-.186h.244c.713-.01 1.03-.283 1.092-.713l.012-.079h-.004c.061-.44-.186-.719-.93-.719zm.163.642-.01.085-.025.164a.271.271 0 0 1-.3.247h-.191l.01-.077.09-.639a.643.643 0 0 1 .202-.028c.196-.01.246.105.226.24zm-9.025-.632h-.665c-.116 0-.208.115-.233.29h.794c.197 0 .246.121.227.253l-.034.247h-.258c-.703.013-1.017.284-1.078.713l-.012.078h.007c-.06.44.187.719.933.719.342.008.684-.05 1.005-.17l.12-.847.075-.564c.06-.43-.175-.713-.876-.726zm.024 1.245-.09.645a.642.642 0 0 1-.201.03c-.196 0-.245-.115-.227-.25l.01-.085.026-.165a.27.27 0 0 1 .298-.248h.192l-.01.077zm3.16-.456.012-.079h.005c.06-.44-.187-.718-.93-.718a2.698 2.698 0 0 0-1.007.17v.003l-.293 2.08h.778l.104-.74h.198l.437.739h.778l-.513-.862a.725.725 0 0 0 .438-.593zm-.747-.165-.01.085-.039.163a.27.27 0 0 1-.3.247h-.19l.01-.078.09-.638a.64.64 0 0 1 .201-.029c.201.001.25.115.232.25zm2.604 1.33.018-.132a3.28 3.28 0 0 1-.647.073h-.06c-.196 0-.245-.115-.227-.254l.065-.479.018-.136.07-.477a.27.27 0 0 1 .296-.254h.06c.21-.002.42.02.624.067l.018-.137c.016-.114.027-.207-.127-.236a3.265 3.265 0 0 0-.537-.037c-.744 0-1.07.277-1.13.718l-.117.835c-.06.44.188.719.932.719.194 0 .388-.015.58-.048.085-.02.14-.058.165-.236m1.486-1.946c-.072 0-.143.002-.21.006l.1-.73c-.558.061-.815.32-.87.706l-.071.507-.247 1.76h.778l.254-1.834a.646.646 0 0 1 .2-.029c.197 0 .246.114.227.25l-.227 1.613h.778l.216-1.524c.062-.442-.186-.72-.932-.72M.865 11.51l.007-.055.243-1.684h-.78l-.27 1.843v.007l-.056.424c-.054.385.128.646.67.706l.18-1.239m22.771-1.53h-1.07l-.042.29h.878c.115 0 .208-.116.233-.29M2.274 12.741l.227-1.613c.019-.135-.03-.25-.227-.25a.64.64 0 0 0-.2.03l-.254 1.833h-.78l.293-2.079a2.69 2.69 0 0 1 1.006-.17c.745 0 .992.28.93.72l-.214 1.525h-.778"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/internetarchive.svg b/assets/lib/simple-icons/icons/internetarchive.svg
index dab99c2b..ef29b6fc 100644
--- a/assets/lib/simple-icons/icons/internetarchive.svg
+++ b/assets/lib/simple-icons/icons/internetarchive.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Internet Archive icon</title><path d="M22.61,24H1.39V22.91H22.61Zm-.8-3.18H2.23v1.51H21.81ZM21.58,3.66H2.1V5.75H21.58ZM11.84,0,1.64,2.39,2.23,3H21.46L22,2.39ZM3.71,20.21a3.44,3.44,0,0,0,1-.13c.16-1.74.25-4.9.25-6.87s-.09-5-.24-6.76a.18.18,0,0,0-.13-.15,3.56,3.56,0,0,0-.84-.1,3.69,3.69,0,0,0-.83.1.18.18,0,0,0-.13.15c-.16,1.76-.24,4.82-.24,6.76s.09,5.13.25,6.87A3.34,3.34,0,0,0,3.71,20.21Zm5.31,0a3.37,3.37,0,0,0,1-.13c.16-1.74.25-4.9.25-6.87s-.09-5-.24-6.76a.18.18,0,0,0-.13-.15A3.54,3.54,0,0,0,9,6.2a3.79,3.79,0,0,0-.84.1.18.18,0,0,0-.13.15c-.15,1.76-.24,4.82-.24,6.76s.09,5.13.25,6.87A3.36,3.36,0,0,0,9,20.21Zm6.15,0a3.37,3.37,0,0,0,1-.13c.16-1.74.25-4.9.25-6.87s-.08-5-.24-6.76A.17.17,0,0,0,16,6.3a3.54,3.54,0,0,0-.83-.1,3.62,3.62,0,0,0-.83.1.18.18,0,0,0-.14.15c-.15,1.76-.24,4.82-.24,6.76s.09,5.13.26,6.87A3.28,3.28,0,0,0,15.17,20.21Zm5.18,0a3.37,3.37,0,0,0,.95-.13c.16-1.74.25-4.9.25-6.87s-.08-5-.24-6.76a.18.18,0,0,0-.13-.15,3.54,3.54,0,0,0-.83-.1,3.79,3.79,0,0,0-.84.1.18.18,0,0,0-.13.15c-.15,1.76-.24,4.82-.24,6.76s.09,5.13.25,6.87A3.36,3.36,0,0,0,20.35,20.21Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Internet Archive</title><path d="M22.667 22.884V24H1.333v-1.116zm-.842-1.675v1.396H2.175v-1.396zM4.233 6.14l.234.118.118 1.882.117 3.058v2.941l-.117 3.666-.02 2.47-.332.098H3.062l-.352-.098-.136-2.47-.118-3.646v-2.941l.118-3.078.107-1.892.244-.107zm16.842 0l.235.118.117 1.882.117 3.058v2.941l-.117 3.666-.02 2.47-.332.098h-1.171l-.352-.098-.137-2.47-.117-3.646v-2.941l.117-3.078.108-1.892.244-.107zm-11.79 0l.235.118.117 1.882.117 3.058v2.941l-.117 3.666-.02 2.47-.331.098H8.114l-.352-.098-.136-2.47-.117-3.646v-2.941l.117-3.078.107-1.892.244-.107zm6.457 0l.234.118.117 1.882.118 3.058v2.941l-.118 3.666-.019 2.47-.332.098H14.57l-.351-.098-.137-2.47-.117-3.646v-2.941l.117-3.078.108-1.892.244-.107zm6.083-2.511V5.58H2.175V3.628zM11.798 0l10.307 2.347-.413.723H1.951l-.618-.587Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/internetexplorer.svg b/assets/lib/simple-icons/icons/internetexplorer.svg
index 57903476..b97933df 100644
--- a/assets/lib/simple-icons/icons/internetexplorer.svg
+++ b/assets/lib/simple-icons/icons/internetexplorer.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 24 24"><title>Internet Explorer icon</title><path d="M22.8 7.381c1.125-2.7 1.2-4.95-.15-6.3-1.5-1.499-5.1-1.05-8.924.75h-.45c-2.7 0-5.324.976-7.274 2.7-1.65 1.5-2.85 3.45-3.375 5.625.375-.45 2.475-2.925 4.875-4.275.075 0 .675-.375.675-.375-.075 0-1.2 1.125-1.425 1.35-5.25 5.4-8.324 13.574-5.924 15.973 1.574 1.575 4.424 1.2 7.724-.6 1.425.675 3 .975 4.724.975 2.25 0 4.35-.6 6.15-1.8 1.874-1.2 3.224-3.074 4.05-5.249h-5.85c-.75 1.425-2.475 2.4-4.275 2.4-2.55 0-4.65-2.1-4.724-4.5V13.83h15.298v-.225c0-.375.075-.825.075-1.124 0-1.8-.45-3.525-1.2-5.1zM2.477 22.38c-1.2-1.2-.824-3.524.6-6.299.675 1.875 1.8 3.525 3.225 4.725.45.375.975.75 1.5 1.05-2.4 1.274-4.35 1.5-5.325.524zm15.374-11.398H8.702v-.075c.15-2.325 2.324-4.35 4.874-4.35 2.4 0 4.35 1.875 4.5 4.35v.075zm4.574-4.2c-.45-.75-1.05-1.5-1.725-2.1a11.213 11.213 0 0 0-3.6-2.25c2.4-1.124 4.425-1.274 5.475-.224.825.975.75 2.624-.15 4.574 0 .075 0 .075 0 0 0 .075 0 .075 0 0z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Internet Explorer</title><path d="M22.8 7.381c1.125-2.7 1.2-4.95-.15-6.3-1.5-1.499-5.1-1.05-8.924.75h-.45c-2.7 0-5.324.976-7.274 2.7-1.65 1.5-2.85 3.45-3.375 5.625.375-.45 2.475-2.925 4.875-4.275.075 0 .675-.375.675-.375-.075 0-1.2 1.125-1.425 1.35-5.25 5.4-8.324 13.574-5.924 15.973 1.574 1.575 4.424 1.2 7.724-.6 1.425.675 3 .975 4.724.975 2.25 0 4.35-.6 6.15-1.8 1.874-1.2 3.224-3.074 4.05-5.249h-5.85c-.75 1.425-2.475 2.4-4.275 2.4-2.55 0-4.65-2.1-4.724-4.5V13.83h15.298v-.225c0-.375.075-.825.075-1.124 0-1.8-.45-3.525-1.2-5.1zM2.477 22.38c-1.2-1.2-.824-3.524.6-6.299.675 1.875 1.8 3.525 3.225 4.725.45.375.975.75 1.5 1.05-2.4 1.274-4.35 1.5-5.325.524zm15.374-11.398H8.702v-.075c.15-2.325 2.324-4.35 4.874-4.35 2.4 0 4.35 1.875 4.5 4.35v.075zm4.574-4.2c-.45-.75-1.05-1.5-1.725-2.1a11.213 11.213 0 0 0-3.6-2.25c2.4-1.124 4.425-1.274 5.475-.224.825.975.75 2.624-.15 4.574 0 .075 0 .075 0 0 0 .075 0 .075 0 0z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/intigriti.svg b/assets/lib/simple-icons/icons/intigriti.svg
new file mode 100644
index 00000000..74e388cf
--- /dev/null
+++ b/assets/lib/simple-icons/icons/intigriti.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Intigriti</title><path d="M19.9133 6.0364c-1.1056.574-3.7632 1.924-5.8999 3.0084-3.7738 1.9134-7.0267 3.593-7.1117 3.6674-.032.0213.0106.404.085.8611.574 3.4123 2.1473 6.4526 4.316 8.3555l.691.6165.6909-.5953c1.839-1.6158 3.3273-4.2202 4.0502-7.0585.1488-.5634.2764-1.3076.287-1.6477l.0213-.6166-2.9553-1.5308-.7335.372c-.3933.202-.7229.3934-.7229.4253 0 .0319.6698.3933 1.4883.7973l1.4882.7335-.0637.3827c-.3934 2.1686-1.6158 4.7517-2.9234 6.1868l-.606.6698-.4464-.4253c-.9248-.893-1.9347-2.615-2.5194-4.3053-.3295-.946-.7229-2.4343-.659-2.4875.0212-.0212 3.0402-1.5414 6.7077-3.391l6.6546-3.3699.2126.3508c.6697 1.0843.7229 2.5407.1382 3.7313-.6484 1.3181-1.754 1.9879-3.3698 2.0623l-.978.0425-.0638.3189c-.0319.1807-.0638.4784-.0638.6803 0 .319.032.3615.3827.4253.574.1063 1.7647-.032 2.4556-.287 1.6796-.6273 2.849-1.9135 3.3699-3.7313.4464-1.5627-.032-3.423-1.265-4.8475-.2127-.2445-.4465-.4464-.5103-.4464-.0744.0106-1.0312.4783-2.1473 1.0524zM1.3739 5.4836C.1833 6.8762-.2632 8.6196.1514 10.2354c.4677 1.8071 1.6583 3.136 3.3698 3.7737.691.2552 1.8816.3934 2.4556.287.4146-.085.4571-.202.319-1.031l-.0638-.3934-.978-.0425c-1.6265-.0744-2.7214-.7442-3.3805-2.0836-.574-1.148-.5315-2.5406.085-3.6143l.2658-.4571 3.8482 1.956 3.8588 1.956.7123-.3508c.3933-.202.7122-.404.7122-.4465 0-.0638-9.3441-4.805-9.4823-4.805-.0425 0-.2658.2233-.4996.4997zm6.3144-3.6144l-.2657.404.2338.0638c.691.1807 1.6903.9567 2.1048 1.637l.2127.3402-.5953.8824c-.5953.893-1.212 2.0304-1.212 2.2323 0 .0957.9568.6379 1.1375.6379.0426 0 .287-.404.5316-.8824.5315-1.0417.9567-1.6583 1.6583-2.4024l.4996-.5315.4465.4783c.7016.7548 1.2119 1.4883 1.6902 2.4237.2445.4678.4678.8824.489.9143.0638.0744 1.2013-.5422 1.2013-.6591 0-.1914-.6485-1.3713-1.2225-2.2111l-.5953-.8717.2232-.3508c.3295-.5316 1.2012-1.2757 1.754-1.499.2658-.1169.4784-.255.4784-.3082 0-.0638-.1063-.2445-.2445-.4146l-.2445-.2976-.5209.2445c-.3083.1488-.8717.5846-1.3394 1.0524l-.808.8079-.659-.606-.6485-.6165-.6484.6165-.6591.6166-.7548-.7654C9.3254 2.1882 8.2943 1.476 8.018 1.476c-.032 0-.1808.1807-.3296.3933z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/invision.svg b/assets/lib/simple-icons/icons/invision.svg
index 27a99513..15a82d9f 100644
--- a/assets/lib/simple-icons/icons/invision.svg
+++ b/assets/lib/simple-icons/icons/invision.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>InVision icon</title><path d="M21.825 0H2.175C.975 0 0 .975 0 2.175v19.65C0 23.025.975 24 2.175 24h19.65c1.2 0 2.175-.975 2.175-2.175V2.175C24 .975 23.025 0 21.825 0zM8.02 4.667c.798 0 1.468.63 1.468 1.44 0 .82-.67 1.444-1.468 1.444v.027c-.803 0-1.454-.65-1.454-1.455s.65-1.455 1.455-1.455zm9.816 13.815c-1.484 0-2.204-.885-2.204-2.09 0-.346.044-.713.15-1.08l.71-2.545c.088-.28.11-.54.11-.775 0-.82-.5-1.315-1.296-1.315-1.013 0-1.68.727-2.025 2.13l-1.38 5.535H9.487l.432-1.74c-.708 1.166-1.695 1.885-2.91 1.885-1.467 0-2.157-.842-2.157-2.113.004-.365.047-.73.13-1.085v.002l1.1-4.49H4.375l.518-1.905h4.1l-1.62 6.405c-.105.41-.15.75-.15.986 0 .41.202.53.517.604.195.04 1.725.012 2.56-1.84l1.06-4.25H9.637l.52-1.875h3.72l-.48 2.16c.647-1.2 1.937-2.355 3.212-2.355 1.35 0 2.475.975 2.475 2.82 0 .534-.08 1.065-.24 1.575l-.69 2.476c-.06.254-.104.465-.104.66 0 .434.18.645.494.645s.735-.24 1.2-1.56l.943.36c-.555 1.964-1.576 2.774-2.85 2.774z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>InVision</title><path d="M5.265 15.108a4.715 4.715 0 0 0-.124 1.036c0 1.215.658 2.021 2.058 2.021 1.16 0 2.102-.69 2.78-1.803l-.415 1.661h2.304l1.319-5.28c.329-1.338.966-2.032 1.934-2.032.761 0 1.235.473 1.235 1.255a2.46 2.46 0 0 1-.103.742l-.679 2.427a3.63 3.63 0 0 0-.144 1.03c0 1.151.679 1.996 2.099 1.996 1.214 0 2.182-.781 2.716-2.654l-.905-.35c-.453 1.255-.844 1.482-1.152 1.482-.308 0-.474-.206-.474-.618a2.737 2.737 0 0 1 .103-.638l.66-2.366a5.23 5.23 0 0 0 .226-1.5c0-1.771-1.07-2.695-2.368-2.695-1.214 0-2.449 1.096-3.066 2.249L13.721 9h-3.518l-.495 1.824h1.648l-1.014 4.055c-.797 1.77-2.26 1.799-2.443 1.758-.302-.068-.494-.183-.494-.576a3.847 3.847 0 0 1 .144-.942l1.544-6.124H5.184l-.493 1.824h1.625zm2.902-7.385a1.38 1.38 0 1 0-1.4-1.38 1.384 1.384 0 0 0 1.4 1.38zM0 0h24v24H0Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/invoiceninja.svg b/assets/lib/simple-icons/icons/invoiceninja.svg
index 735ac9b1..59c8a870 100644
--- a/assets/lib/simple-icons/icons/invoiceninja.svg
+++ b/assets/lib/simple-icons/icons/invoiceninja.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Invoice Ninja icon</title><path d="M16.247 10.326a1.164 1.164 0 11-2.328 0 1.164 1.164 0 012.328 0zm-6.288 0a1.164 1.164 0 11-2.329 0 1.164 1.164 0 012.329 0zm-.14 13.52c-4.712-.98-8.227-4.257-9.482-8.842-.421-1.537-.421-4.49 0-6.027C1.506 4.709 4.73 1.485 8.997.316c1.538-.421 4.49-.421 6.028 0 4.267 1.169 7.492 4.393 8.66 8.66.24.874.294 1.43.294 3.014 0 1.584-.054 2.14-.293 3.014-1.17 4.271-4.439 7.536-8.661 8.65-1.391.367-3.916.46-5.206.192zm6.64-9.315c-3.047-1.348-4.054-1.737-4.5-1.737-.446 0-1.433.38-4.38 1.684-2.091.926-3.828 1.76-3.86 1.79h16.663zm-9.873-.361c1.621-.729 3.06-1.387 3.196-1.464.258-.145.337-.09-5.285-3.682-.56-.358-1.023-.698-1.025-.65V15.564a790.1 790.1 0 003.114-1.394zm14.078-2.194V8.417c0-.11-1.676.993-3.496 2.12-3 1.854-3.281 2.06-3.004 2.185 1.345.611 6.42 2.862 6.5 2.872zm-8.169.11c.545.125.643.104 1.226-.263.349-.22.655-.419.681-.442.026-.024-.05-.181-.167-.35-.118-.168-.215-.5-.215-.739V9.86l-.569.21c-.726.267-2.28.27-3 .005l-.556-.205.013.452c.007.26-.088.563-.225.715-.232.256-.22.276.45.726.64.432.725.455 1.23.327a2.349 2.349 0 011.132-.002zm-4.23-2.65c-.105-.113-2.97-.954-3.033-.891-.03.03.504.414 1.186.854l1.24.8.34-.344c.186-.188.307-.377.268-.42zm9.76-.373c.473-.306.8-.555.728-.555-.155 0-2.877.804-3.027.894-.057.034.033.229.2.433l.304.37.47-.293c.257-.162.854-.544 1.326-.85zm-1.636-.555c2.11-.59 3.867-1.102 3.904-1.139H3.59c.187.187 7.779 2.195 8.323 2.202.41.005 2.014-.376 4.476-1.063z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Invoice Ninja</title><path d="M16.247 10.326a1.164 1.164 0 11-2.328 0 1.164 1.164 0 012.328 0zm-6.288 0a1.164 1.164 0 11-2.329 0 1.164 1.164 0 012.329 0zm-.14 13.52c-4.712-.98-8.227-4.257-9.482-8.842-.421-1.537-.421-4.49 0-6.027C1.506 4.709 4.73 1.485 8.997.316c1.538-.421 4.49-.421 6.028 0 4.267 1.169 7.492 4.393 8.66 8.66.24.874.294 1.43.294 3.014 0 1.584-.054 2.14-.293 3.014-1.17 4.271-4.439 7.536-8.661 8.65-1.391.367-3.916.46-5.206.192zm6.64-9.315c-3.047-1.348-4.054-1.737-4.5-1.737-.446 0-1.433.38-4.38 1.684-2.091.926-3.828 1.76-3.86 1.79h16.663zm-9.873-.361c1.621-.729 3.06-1.387 3.196-1.464.258-.145.337-.09-5.285-3.682-.56-.358-1.023-.698-1.025-.65V15.564a790.1 790.1 0 003.114-1.394zm14.078-2.194V8.417c0-.11-1.676.993-3.496 2.12-3 1.854-3.281 2.06-3.004 2.185 1.345.611 6.42 2.862 6.5 2.872zm-8.169.11c.545.125.643.104 1.226-.263.349-.22.655-.419.681-.442.026-.024-.05-.181-.167-.35-.118-.168-.215-.5-.215-.739V9.86l-.569.21c-.726.267-2.28.27-3 .005l-.556-.205.013.452c.007.26-.088.563-.225.715-.232.256-.22.276.45.726.64.432.725.455 1.23.327a2.349 2.349 0 011.132-.002zm-4.23-2.65c-.105-.113-2.97-.954-3.033-.891-.03.03.504.414 1.186.854l1.24.8.34-.344c.186-.188.307-.377.268-.42zm9.76-.373c.473-.306.8-.555.728-.555-.155 0-2.877.804-3.027.894-.057.034.033.229.2.433l.304.37.47-.293c.257-.162.854-.544 1.326-.85zm-1.636-.555c2.11-.59 3.867-1.102 3.904-1.139H3.59c.187.187 7.779 2.195 8.323 2.202.41.005 2.014-.376 4.476-1.063z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/iobroker.svg b/assets/lib/simple-icons/icons/iobroker.svg
index 850146b1..42323958 100644
--- a/assets/lib/simple-icons/icons/iobroker.svg
+++ b/assets/lib/simple-icons/icons/iobroker.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>ioBroker icon</title><path d="M12 0c-.61 0-1.201.044-1.787.133v3.285a8.943 8.943 0 013.574.004V.139A11.83 11.83 0 0012 0zM9.38.295C4.084 1.5.13 6.283.13 12 .129 18.628 5.44 24 12 24s11.871-5.372 11.871-12c0-5.717-3.953-10.499-9.246-11.705v3.34c3.575 1.113 6.18 4.44 6.18 8.365 0 4.83-3.949 8.76-8.8 8.76-4.85 0-8.804-3.93-8.804-8.76 0-3.924 2.605-7.247 6.18-8.365V.295zM12 4.137c-.616 0-1.212.068-1.783.2V19.53A7.887 7.887 0 0012 19.73c.616 0 1.211-.068 1.787-.2V4.343A7.65 7.65 0 0012 4.137Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ioBroker</title><path d="M12 0c-.61 0-1.201.044-1.787.133v3.285a8.943 8.943 0 013.574.004V.139A11.83 11.83 0 0012 0zM9.38.295C4.084 1.5.13 6.283.13 12 .129 18.628 5.44 24 12 24s11.871-5.372 11.871-12c0-5.717-3.953-10.499-9.246-11.705v3.34c3.575 1.113 6.18 4.44 6.18 8.365 0 4.83-3.949 8.76-8.8 8.76-4.85 0-8.804-3.93-8.804-8.76 0-3.924 2.605-7.247 6.18-8.365V.295zM12 4.137c-.616 0-1.212.068-1.783.2V19.53A7.887 7.887 0 0012 19.73c.616 0 1.211-.068 1.787-.2V4.343A7.65 7.65 0 0012 4.137Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ionic.svg b/assets/lib/simple-icons/icons/ionic.svg
index b5855ec4..77ed006d 100644
--- a/assets/lib/simple-icons/icons/ionic.svg
+++ b/assets/lib/simple-icons/icons/ionic.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Ionic icon</title><path d="M22.922 7.027l-.103-.23-.169.188c-.408.464-.928.82-1.505 1.036l-.159.061.066.155a9.745 9.745 0 0 1 .75 3.759c0 5.405-4.397 9.806-9.806 9.806-5.409 0-9.802-4.397-9.802-9.802 0-5.405 4.402-9.806 9.806-9.806 1.467 0 2.883.319 4.2.947l.155.075.066-.155a3.767 3.767 0 0 1 1.106-1.453l.197-.159-.225-.117A11.905 11.905 0 0 0 12.001.001c-6.619 0-12 5.381-12 12s5.381 12 12 12 12-5.381 12-12c0-1.73-.361-3.403-1.078-4.973zM12 6.53A5.476 5.476 0 0 0 6.53 12 5.476 5.476 0 0 0 12 17.47 5.476 5.476 0 0 0 17.47 12 5.479 5.479 0 0 0 12 6.53zm10.345-2.007a2.494 2.494 0 1 1-4.988 0 2.494 2.494 0 0 1 4.988 0z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Ionic</title><path d="M22.922 7.027l-.103-.23-.169.188c-.408.464-.928.82-1.505 1.036l-.159.061.066.155a9.745 9.745 0 0 1 .75 3.759c0 5.405-4.397 9.806-9.806 9.806-5.409 0-9.802-4.397-9.802-9.802 0-5.405 4.402-9.806 9.806-9.806 1.467 0 2.883.319 4.2.947l.155.075.066-.155a3.767 3.767 0 0 1 1.106-1.453l.197-.159-.225-.117A11.905 11.905 0 0 0 12.001.001c-6.619 0-12 5.381-12 12s5.381 12 12 12 12-5.381 12-12c0-1.73-.361-3.403-1.078-4.973zM12 6.53A5.476 5.476 0 0 0 6.53 12 5.476 5.476 0 0 0 12 17.47 5.476 5.476 0 0 0 17.47 12 5.479 5.479 0 0 0 12 6.53zm10.345-2.007a2.494 2.494 0 1 1-4.988 0 2.494 2.494 0 0 1 4.988 0z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ionos.svg b/assets/lib/simple-icons/icons/ionos.svg
new file mode 100644
index 00000000..5d381a5e
--- /dev/null
+++ b/assets/lib/simple-icons/icons/ionos.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Ionos</title><path d="M22.182 15.499a1.7634 1.7634 0 0 1-.3536-.0358 1.8319 1.8319 0 0 1-1.2086-.8632l-.0066-.012c-.1308-.2616-.0448-.5693.2-.7162a.5236.5236 0 0 1 .2689-.0743.5327.5327 0 0 1 .4632.272.558.558 0 0 0 .018.0299l.0564.0766.0757.0765a.7385.7385 0 0 0 .3453.167.7596.7596 0 0 0 .5954-.136.7206.7206 0 0 0 .299-.5386.7441.7441 0 0 0-.207-.578s-1.5994-1.6612-1.6712-1.7382a1.9604 1.9604 0 0 1-.1929-.229c-.2256-.3198-.2962-.697-.2614-1.0702a1.7361 1.7361 0 0 1 .2253-.7397s.0732-.124.0948-.1554c.0847-.1236.2515-.2834.3658-.3726a1.8813 1.8813 0 0 1 .3069-.1844 1.7494 1.7494 0 0 1 2.2815.7041.5186.5186 0 0 1 .0553.402.5298.5298 0 0 1-.2528.3263.5082.5082 0 0 1-.2593.0705.5283.5283 0 0 1-.46-.2706.6953.6953 0 0 0-.4656-.329.721.721 0 0 0-.5645.1269.688.688 0 0 0-.267.498.6998.6998 0 0 0 .1905.5398l1.6351 1.6862a1.8284 1.8284 0 0 1 .5071 1.3931c-.0465.5243-.3071.9994-.7152 1.3053a1.8425 1.8425 0 0 1-1.0984.369m-5.175-.0006a1.7608 1.7608 0 0 0 1.7585-1.7589v-3.4787a1.7587 1.7587 0 0 0-3.5173 0v3.4786a1.7608 1.7608 0 0 0 1.7587 1.7589m0-5.9342c.3777 0 .6968.319.6968.6967v3.4786a.6977.6977 0 0 1-.6968.6968.6894.6894 0 0 1-.6968-.6968v-3.4786a.6976.6976 0 0 1 .697-.6967m-7.8986.3224v5.0804a.5309.5309 0 0 0 1.0618 0V12.09Zm2.8802 2.0255V9.0328a.531.531 0 0 1 1.0619 0v5.0828zm1.053 2.9406v.1134a.533.533 0 0 1-1.0067.2408L9.1153 9.154v-.1212a.5261.5261 0 0 1 .3028-.4772.5253.5253 0 0 1 .7088.2475Zm-7.9067.6457a1.761 1.761 0 0 0 1.7586-1.7589v-3.4786a1.7587 1.7587 0 0 0-3.5173 0v3.4786a1.7609 1.7609 0 0 0 1.7587 1.7589m0-5.9342a.707.707 0 0 1 .6968.6967v3.4786a.6968.6968 0 1 1-1.3936 0v-3.4786a.6976.6976 0 0 1 .6968-.6967M0 14.9111a.5791.5791 0 1 0 1.1581 0V9.0803a.5791.5791 0 0 0-1.1582 0z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ios.svg b/assets/lib/simple-icons/icons/ios.svg
index b8b421f6..a1636976 100644
--- a/assets/lib/simple-icons/icons/ios.svg
+++ b/assets/lib/simple-icons/icons/ios.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>iOS icon</title><path d="M1.1 6.05C.486 6.05 0 6.53 0 7.13A1.08 1.08 0 0 0 1.1 8.21C1.72 8.21 2.21 7.73 2.21 7.13C2.21 6.53 1.72 6.05 1.1 6.05M8.71 6.07C5.35 6.07 3.25 8.36 3.25 12C3.25 15.67 5.35 17.95 8.71 17.95C12.05 17.95 14.16 15.67 14.16 12C14.16 8.36 12.05 6.07 8.71 6.07M19.55 6.07C17.05 6.07 15.27 7.45 15.27 9.5C15.27 11.13 16.28 12.15 18.4 12.64L19.89 13C21.34 13.33 21.93 13.81 21.93 14.64C21.93 15.6 20.96 16.28 19.58 16.28C18.17 16.28 17.11 15.59 17 14.53H15C15.08 16.65 16.82 17.95 19.46 17.95C22.25 17.95 24 16.58 24 14.4C24 12.69 23 11.72 20.68 11.19L19.35 10.89C17.94 10.55 17.36 10.1 17.36 9.34C17.36 8.38 18.24 7.74 19.54 7.74C20.85 7.74 21.75 8.39 21.85 9.46H23.81C23.76 7.44 22.09 6.07 19.55 6.07M8.71 7.82C10.75 7.82 12.06 9.45 12.06 12C12.06 14.57 10.75 16.2 8.71 16.2C6.65 16.2 5.35 14.57 5.35 12C5.35 9.45 6.65 7.82 8.71 7.82M.111 9.31V17.76H2.1V9.31H.11Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>iOS</title><path d="M1.1 6.05C.486 6.05 0 6.53 0 7.13A1.08 1.08 0 0 0 1.1 8.21C1.72 8.21 2.21 7.73 2.21 7.13C2.21 6.53 1.72 6.05 1.1 6.05M8.71 6.07C5.35 6.07 3.25 8.36 3.25 12C3.25 15.67 5.35 17.95 8.71 17.95C12.05 17.95 14.16 15.67 14.16 12C14.16 8.36 12.05 6.07 8.71 6.07M19.55 6.07C17.05 6.07 15.27 7.45 15.27 9.5C15.27 11.13 16.28 12.15 18.4 12.64L19.89 13C21.34 13.33 21.93 13.81 21.93 14.64C21.93 15.6 20.96 16.28 19.58 16.28C18.17 16.28 17.11 15.59 17 14.53H15C15.08 16.65 16.82 17.95 19.46 17.95C22.25 17.95 24 16.58 24 14.4C24 12.69 23 11.72 20.68 11.19L19.35 10.89C17.94 10.55 17.36 10.1 17.36 9.34C17.36 8.38 18.24 7.74 19.54 7.74C20.85 7.74 21.75 8.39 21.85 9.46H23.81C23.76 7.44 22.09 6.07 19.55 6.07M8.71 7.82C10.75 7.82 12.06 9.45 12.06 12C12.06 14.57 10.75 16.2 8.71 16.2C6.65 16.2 5.35 14.57 5.35 12C5.35 9.45 6.65 7.82 8.71 7.82M.111 9.31V17.76H2.1V9.31H.11Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/iota.svg b/assets/lib/simple-icons/icons/iota.svg
new file mode 100644
index 00000000..cc66028d
--- /dev/null
+++ b/assets/lib/simple-icons/icons/iota.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>IOTA</title><path d="M6.4459 18.8235a.7393.7393 0 10-.7417-.7393.7401.7401 0 00.7417.7393zm9.1863 2.218a1.1578 1.1578 0 10-1.1602-1.1578 1.1586 1.1586 0 001.1602 1.1578zm-4.3951.392a.9858.9858 0 10-.9882-.9849.9866.9866 0 00.9882.985zm2.494 2.07a1.1578 1.1578 0 10-1.161-1.1578 1.1586 1.1586 0 001.161 1.1578zm-4.5448-.3944a.9858.9858 0 10-.9873-.985.9866.9866 0 00.9873.985zm-1.7035-2.1676a.8625.8625 0 10-.8649-.8601.8633.8633 0 00.865.8601zm2.0492-1.6747a.8625.8625 0 10-.8634-.8657.8641.8641 0 00.8634.8657zm3.631-.296a.9858.9858 0 10-.9882-.985.9866.9866 0 00.9882.985zm-1.729-2.1428a.8625.8625 0 10-.8634-.8625.8641.8641 0 00.8633.8625zm-2.939.32a.7393.7393 0 10-.741-.7393.7401.7401 0 00.741.7394zm-2.5188-.32a.6161.6161 0 10-.6177-.616.6169.6169 0 00.6177.616zm-.0248-1.7003a.5417.5417 0 10-.5433-.5417.5425.5425 0 00.5433.5417zm2.0995.0248a.6161.6161 0 10-.6169-.616.6169.6169 0 00.617.616zm2.37-.4672a.7393.7393 0 10-.74-.7394.741.741 0 00.74.7394zm-.4688-1.9708a.6161.6161 0 10-.617-.616.6169.6169 0 00.617.616zm-1.9508.7386a.5417.5417 0 10-.544-.5417.5425.5425 0 00.544.5417zm-1.7779.2216a.4433.4433 0 10-.4448-.4433.4449.4449 0 00.4448.4433zm2.4452-6.5515a.8625.8625 0 10-.8649-.8625.8633.8633 0 00.865.8625zm2.2468-.0256a.7393.7393 0 10-.7409-.7385.7401.7401 0 00.741.7385zm-.42-2.61a.7393.7393 0 10-.741-.7394.741.741 0 00.741.7394zm-2.2468-.0008a.8625.8625 0 10-.865-.8618.8633.8633 0 00.865.8618zm-2.618.5913a.9858.9858 0 10-.9898-.985.9858.9858 0 00.9897.985zm.4192 2.6116a.9858.9858 0 10-.9874-.9858.9874.9874 0 00.9874.9858zM3.1861 9.093a1.1578 1.1578 0 10-1.161-1.1578 1.1594 1.1594 0 001.161 1.1578zm-1.8035 5.2465A1.3794 1.3794 0 100 12.9602a1.381 1.381 0 001.3826 1.3794zm2.9637-2.3644a1.1578 1.1578 0 10-1.1602-1.1578 1.1594 1.1594 0 001.1602 1.1578zm2.8653-1.4034a.9858.9858 0 10-.9882-.9858.9866.9866 0 00.9882.9858zm2.6172-.5921a.8625.8625 0 10-.8673-.8602.8625.8625 0 00.8673.8602zm2.2476.0008a.7393.7393 0 10-.741-.7393.7401.7401 0 00.741.7393zm.6913-2.4884a.6161.6161 0 10-.6177-.6153.6169.6169 0 00.6177.6153zm-.4192-2.6133a.6161.6161 0 10-.6185-.616.6169.6169 0 00.6185.616zm7.1612 11.4803a.6161.6161 0 10-.6178-.6153.6161.6161 0 00.6178.6153zM13.755 5.599a.5425.5425 0 10-.5433-.5416.5417.5417 0 00.5433.5416zm1.0378.8338a.4433.4433 0 10-.445-.4433.444.444 0 00.445.4433zm-.593 1.7739a.5425.5425 0 10-.5432-.5417.5425.5425 0 00.5433.5417zm-.2712 2.1675a.6161.6161 0 10-.6177-.616.6169.6169 0 00.6177.616zm.0248 4.6312a.6161.6161 0 10-.6177-.616.6169.6169 0 00.6177.616zm1.6787 1.1818a.5417.5417 0 10-.5433-.5417.5425.5425 0 00.5433.5417zm1.1602 1.281a.4433.4433 0 10-.444-.4433.444.444 0 00.444.4433zm1.309-.3472a.5417.5417 0 10-.5433-.5417.5417.5417 0 00.5433.5417zm-1.0586-1.6971a.6161.6161 0 10-.6177-.6153.6161.6161 0 00.6177.6153zm-1.7074-1.6507a.7393.7393 0 10-.7402-.7393.7401.7401 0 00.7402.7393zm5.5569 1.3802a.7393.7393 0 10-.741-.7393.741.741 0 00.741.7393zm-2.494-.9361a.7393.7393 0 10-.741-.7393.7401.7401 0 00.741.7393zm3.7286-.8378a.8625.8625 0 10-.8642-.8617.8633.8633 0 00.8642.8617zM16.5459 12a.8625.8625 0 10-.8633-.8625.8641.8641 0 00.8634.8625zm3.087.4185a.8625.8625 0 10-.8642-.8618.8633.8633 0 00.8642.8618zm3.383-1.4035a.9858.9858 0 10-.9874-.9857.9874.9874 0 00.9873.9857zm-2.4693-.961a.9858.9858 0 10-.9881-.9849.9866.9866 0 00.9881.985zm-3.0869-.4184a.9858.9858 0 10-.9874-.9857.9874.9874 0 00.9874.9857zm3.4822-2.4884a1.1578 1.1578 0 10-1.1602-1.1578 1.1594 1.1594 0 001.1602 1.1578zm-3.087-.4433a1.1578 1.1578 0 10-1.161-1.1578 1.1586 1.1586 0 001.161 1.1578zm1.1603 16.0355a1.3794 1.3794 0 10-1.3827-1.3778 1.3818 1.3818 0 001.3827 1.3778zm-1.5555-19.484a1.3794 1.3794 0 10-1.3834-1.3795 1.3818 1.3818 0 001.3834 1.3795z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ipfs.svg b/assets/lib/simple-icons/icons/ipfs.svg
index 6a8add97..ea32d6ec 100644
--- a/assets/lib/simple-icons/icons/ipfs.svg
+++ b/assets/lib/simple-icons/icons/ipfs.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>IPFS icon</title><path d="M12 0L1.608 6v12L12 24l10.392-6V6zm-1.073 1.445h.001a1.8 1.8 0 002.138 0l7.534 4.35a1.794 1.794 0 000 .403l-7.535 4.35a1.8 1.8 0 00-2.137 0l-7.536-4.35a1.795 1.795 0 000-.402zM21.324 7.4c.109.08.226.147.349.201v8.7a1.8 1.8 0 00-1.069 1.852l-7.535 4.35a1.8 1.8 0 00-.349-.2l-.009-8.653a1.8 1.8 0 001.07-1.851zm-18.648.048l7.535 4.35a1.8 1.8 0 001.069 1.852v8.7c-.124.054-.24.122-.349.202l-7.535-4.35a1.8 1.8 0 00-1.069-1.852v-8.7c.124-.054.24-.122.35-.202z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>IPFS</title><path d="M12 0L1.608 6v12L12 24l10.392-6V6zm-1.073 1.445h.001a1.8 1.8 0 002.138 0l7.534 4.35a1.794 1.794 0 000 .403l-7.535 4.35a1.8 1.8 0 00-2.137 0l-7.536-4.35a1.795 1.795 0 000-.402zM21.324 7.4c.109.08.226.147.349.201v8.7a1.8 1.8 0 00-1.069 1.852l-7.535 4.35a1.8 1.8 0 00-.349-.2l-.009-8.653a1.8 1.8 0 001.07-1.851zm-18.648.048l7.535 4.35a1.8 1.8 0 001.069 1.852v8.7c-.124.054-.24.122-.349.202l-7.535-4.35a1.8 1.8 0 00-1.069-1.852v-8.7c.124-.054.24-.122.35-.202z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/issuu.svg b/assets/lib/simple-icons/icons/issuu.svg
index 8a921b72..28b69513 100644
--- a/assets/lib/simple-icons/icons/issuu.svg
+++ b/assets/lib/simple-icons/icons/issuu.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Issuu icon</title><path d="M.996 0A.998.998 0 0 0 0 .996V12c0 6.628 5.372 12 12 12s12-5.372 12-12S18.628 0 12 0H.996zm11.17 3.582a8.333 8.333 0 0 1 8.254 8.41 8.333 8.333 0 0 1-8.41 8.252c-4.597-.045-8.296-3.81-8.254-8.41.045-4.6 3.81-8.296 8.41-8.252zm-.031 2.27a6.107 6.107 0 0 0-6.155 6.046 6.109 6.109 0 0 0 6.05 6.163 6.099 6.099 0 0 0 6.154-6.047 6.107 6.107 0 0 0-6.041-6.162h-.008zm-.02 3.013a3.098 3.098 0 0 1 3.063 3.123 3.088 3.088 0 0 1-3.121 3.06l.002-.001a3.091 3.091 0 0 1 .056-6.182z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Issuu</title><path d="M.996 0A.998.998 0 0 0 0 .996V12c0 6.628 5.372 12 12 12s12-5.372 12-12S18.628 0 12 0H.996zm11.17 3.582a8.333 8.333 0 0 1 8.254 8.41 8.333 8.333 0 0 1-8.41 8.252c-4.597-.045-8.296-3.81-8.254-8.41.045-4.6 3.81-8.296 8.41-8.252zm-.031 2.27a6.107 6.107 0 0 0-6.155 6.046 6.109 6.109 0 0 0 6.05 6.163 6.099 6.099 0 0 0 6.154-6.047 6.107 6.107 0 0 0-6.041-6.162h-.008zm-.02 3.013a3.098 3.098 0 0 1 3.063 3.123 3.088 3.088 0 0 1-3.121 3.06l.002-.001a3.091 3.091 0 0 1 .056-6.182z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/istio.svg b/assets/lib/simple-icons/icons/istio.svg
new file mode 100644
index 00000000..a0339c81
--- /dev/null
+++ b/assets/lib/simple-icons/icons/istio.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Istio</title><path d="M4 21 20 21 10 24zM4 20 10 19 10 8zM11 19 20 20 11 0z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/itch-dot-io.svg b/assets/lib/simple-icons/icons/itch-dot-io.svg
deleted file mode 100644
index 0892fccb..00000000
--- a/assets/lib/simple-icons/icons/itch-dot-io.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Itch.io icon</title><path d="M3.129 1.338c-1.047 0.622-3.109 2.991-3.129 3.612v1.029c0 1.304 1.219 2.45 2.325 2.45 1.329 0 2.436-1.101 2.436-2.408 0 1.307 1.069 2.408 2.398 2.408s2.364-1.101 2.364-2.408c0 1.307 1.137 2.408 2.466 2.408h0.024c1.329 0 2.466-1.101 2.466-2.408 0 1.307 1.035 2.408 2.364 2.408s2.398-1.101 2.398-2.408c0 1.307 1.107 2.408 2.436 2.408 1.107 0 2.325-1.146 2.325-2.45v-1.029c-0.020-0.621-2.082-2.991-3.129-3.612-3.254-0.114-5.51-0.134-8.871-0.133s-7.945 0.053-8.871 0.133zM9.506 7.815c-0.133 0.23-0.288 0.428-0.467 0.601l-0.001 0.001c-0.502 0.49-1.189 0.794-1.947 0.794-0.001 0-0.002 0-0.003 0-0.759 0-1.447-0.303-1.949-0.795l0 0c-0.182-0.178-0.32-0.368-0.446-0.59l-0.001 0c-0.126 0.222-0.302 0.412-0.485 0.59-0.502 0.491-1.19 0.794-1.949 0.794-0.001 0-0.002 0-0.003 0h0c-0.091 0-0.186-0.025-0.263-0.052-0.107 1.112-0.152 2.175-0.168 2.95l-0 0.004c-0.002 0.394-0.004 0.717-0.006 1.167 0.021 2.334-0.231 7.564 1.029 8.849 1.953 0.455 5.546 0.663 9.151 0.664h0.001c3.605-0.001 7.198-0.209 9.151-0.664 1.26-1.285 1.008-6.516 1.029-8.849-0.002-0.45-0.004-0.773-0.006-1.167l-0-0.004c-0.016-0.775-0.061-1.838-0.168-2.95-0.077 0.026-0.172 0.052-0.263 0.052-0.001 0-0.002 0-0.002 0-0.759 0-1.447-0.303-1.949-0.795l0.001 0c-0.182-0.178-0.358-0.368-0.485-0.59l-0.001-0c-0.127 0.222-0.265 0.412-0.446 0.59-0.502 0.491-1.19 0.795-1.948 0.795-0.001 0-0.002 0-0.003 0h0c-0.758 0-1.445-0.304-1.947-0.795-0.179-0.174-0.334-0.372-0.461-0.589l-0.007-0.013c-0.132 0.23-0.286 0.428-0.463 0.602l-0 0c-0.502 0.491-1.19 0.795-1.949 0.795-0.001 0-0.002 0-0.003 0h0c-0.026 0-0.053-0.001-0.079-0.002h-0.001c-0.026 0.001-0.053 0.002-0.080 0.002-0.001 0-0.002 0-0.003 0-0.759 0-1.447-0.303-1.949-0.795l0.001 0c-0.178-0.174-0.331-0.372-0.456-0.589l-0.007-0.013zM7.502 10.406l-0 0.001h0.001c0.794 0.002 1.498 0 2.372 0.953 0.687-0.072 1.406-0.108 2.125-0.107h0.001c0.719-0.001 1.437 0.035 2.125 0.107 0.873-0.953 1.578-0.952 2.372-0.953h0.001l-0-0.001c0.375 0 1.875 0 2.92 2.935l1.122 4.026c0.832 2.995-0.266 3.069-1.636 3.071-2.031-0.076-3.156-1.551-3.156-3.026-1.124 0.184-2.436 0.276-3.748 0.276h-0.001c-1.312 0-2.624-0.092-3.748-0.276 0 1.475-1.125 2.95-3.156 3.026-1.37-0.003-2.468-0.076-1.636-3.071l1.123-4.026c1.045-2.935 2.545-2.935 2.92-2.935zM12 12.713v0.001c-0.002 0.002-2.138 1.964-2.523 2.662l1.399-0.056v1.22c0 0.057 0.561 0.034 1.123 0.008h0.001c0.562 0.026 1.123 0.049 1.123-0.008v-1.22l1.399 0.056c-0.384-0.698-2.523-2.662-2.523-2.662v-0.001l-0 0z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/itchdotio.svg b/assets/lib/simple-icons/icons/itchdotio.svg
new file mode 100644
index 00000000..cc67541d
--- /dev/null
+++ b/assets/lib/simple-icons/icons/itchdotio.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Itch.io</title><path d="M3.13 1.338C2.08 1.96.02 4.328 0 4.95v1.03c0 1.303 1.22 2.45 2.325 2.45 1.33 0 2.436-1.102 2.436-2.41 0 1.308 1.07 2.41 2.4 2.41 1.328 0 2.362-1.102 2.362-2.41 0 1.308 1.137 2.41 2.466 2.41h.024c1.33 0 2.466-1.102 2.466-2.41 0 1.308 1.034 2.41 2.363 2.41 1.33 0 2.4-1.102 2.4-2.41 0 1.308 1.106 2.41 2.435 2.41C22.78 8.43 24 7.282 24 5.98V4.95c-.02-.62-2.082-2.99-3.13-3.612-3.253-.114-5.508-.134-8.87-.133-3.362 0-7.945.053-8.87.133zm6.376 6.477a2.74 2.74 0 0 1-.468.602c-.5.49-1.19.795-1.947.795a2.786 2.786 0 0 1-1.95-.795c-.182-.178-.32-.37-.446-.59-.127.222-.303.412-.486.59a2.788 2.788 0 0 1-1.95.795c-.092 0-.187-.025-.264-.052-.107 1.113-.152 2.176-.168 2.95v.005l-.006 1.167c.02 2.334-.23 7.564 1.03 8.85 1.952.454 5.545.662 9.15.663 3.605 0 7.198-.21 9.15-.664 1.26-1.284 1.01-6.514 1.03-8.848l-.006-1.167v-.004c-.016-.775-.06-1.838-.168-2.95-.077.026-.172.052-.263.052a2.788 2.788 0 0 1-1.95-.795c-.184-.178-.36-.368-.486-.59-.127.22-.265.412-.447.59a2.786 2.786 0 0 1-1.95.794c-.76 0-1.446-.303-1.948-.793a2.74 2.74 0 0 1-.468-.602 2.738 2.738 0 0 1-.463.602 2.787 2.787 0 0 1-1.95.794h-.16a2.787 2.787 0 0 1-1.95-.793 2.738 2.738 0 0 1-.464-.602zm-2.004 2.59v.002c.795.002 1.5 0 2.373.953.687-.072 1.406-.108 2.125-.107.72 0 1.438.035 2.125.107.873-.953 1.578-.95 2.372-.953.376 0 1.876 0 2.92 2.934l1.123 4.028c.832 2.995-.266 3.068-1.636 3.07-2.03-.075-3.156-1.55-3.156-3.025-1.124.184-2.436.276-3.748.277-1.312 0-2.624-.093-3.748-.277 0 1.475-1.125 2.95-3.156 3.026-1.37-.004-2.468-.077-1.636-3.072l1.122-4.027c1.045-2.934 2.545-2.934 2.92-2.934zM12 12.714c-.002.002-2.14 1.964-2.523 2.662l1.4-.056v1.22c0 .056.56.033 1.123.007.562.026 1.124.05 1.124-.008v-1.22l1.4.055C14.138 14.677 12 12.713 12 12.713z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/iterm2.svg b/assets/lib/simple-icons/icons/iterm2.svg
new file mode 100644
index 00000000..fd0ddb87
--- /dev/null
+++ b/assets/lib/simple-icons/icons/iterm2.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>iTerm2</title><path d="m7.806 3.845h2.563v5.126h-2.563zm-1.531 1.65c-.14-.104-.272-.183-.397-.239-.126-.056-.28-.084-.463-.084-.167 0-.298.034-.391.102-.094.067-.141.161-.141.28 0 .092.045.168.135.227.089.06.202.117.337.17.135.054.282.11.439.168.157.057.304.128.439.212.135.083.248.186.337.307.09.121.135.274.135.457 0 .255-.091.471-.272.648s-.435.289-.761.337v.878h-.478v-.866c-.207-.02-.412-.073-.615-.158-.203-.086-.378-.19-.526-.314l.311-.471c.171.115.344.209.519.28.176.072.367.108.574.108.191 0 .335-.036.433-.108.097-.071.146-.167.146-.286 0-.104-.045-.189-.135-.257-.089-.068-.202-.13-.337-.188s-.281-.116-.436-.173c-.155-.058-.3-.129-.436-.212-.135-.084-.247-.184-.337-.302-.09-.117-.134-.266-.134-.445 0-.258.087-.469.262-.633.176-.163.412-.264.711-.304v-.782h.478v.776c.211.024.391.078.54.161.149.084.286.187.409.311zm-2.165-2.442c-.456.244-.813.601-1.057 1.057s-.373.908-.373 2.154v11.472c0 1.246.129 1.698.373 2.154s.601.813 1.057 1.057.908.373 2.154.373h11.472c1.246 0 1.698-.129 2.154-.373s.813-.601 1.057-1.057.373-.908.373-2.154v-11.472c0-1.246-.129-1.698-.373-2.154s-.601-.813-1.057-1.057-.908-.373-2.154-.373h-11.472c-1.246 0-1.698.129-2.154.373zm2.199-2.121h11.382c1.87 0 2.548.195 3.231.56.684.366 1.22.902 1.586 1.586.365.683.56 1.361.56 3.231v11.382c0 1.87-.195 2.548-.56 3.231-.366.684-.902 1.22-1.586 1.586-.683.365-1.361.56-3.231.56h-11.382c-1.87 0-2.548-.195-3.231-.56-.684-.366-1.22-.902-1.586-1.586-.365-.683-.56-1.361-.56-3.231v-11.382c0-1.87.195-2.548.56-3.231.366-.684.902-1.22 1.586-1.586.683-.365 1.361-.56 3.231-.56zm-3.567-.216c-.874.467-1.559 1.152-2.026 2.026-.467.873-.716 1.739-.716 4.128v10.26c0 2.389.249 3.255.716 4.128.467.874 1.152 1.559 2.026 2.026.873.467 1.739.716 4.128.716h10.26c2.389 0 3.255-.249 4.128-.716.874-.467 1.559-1.152 2.026-2.026.467-.873.716-1.739.716-4.128v-10.26c0-2.389-.249-3.255-.716-4.128-.467-.874-1.152-1.559-2.026-2.026-.873-.467-1.739-.716-4.128-.716h-10.26c-2.389 0-3.255.249-4.128.716z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/itunes.svg b/assets/lib/simple-icons/icons/itunes.svg
index a49aa204..01e120e4 100644
--- a/assets/lib/simple-icons/icons/itunes.svg
+++ b/assets/lib/simple-icons/icons/itunes.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>iTunes icon</title><path d="M11.979,24c-2.483,0-4.898-0.777-6.954-2.262h0c-2.59-1.872-4.3-4.644-4.814-7.807 c-0.514-3.162,0.228-6.336,2.091-8.937c1.864-2.604,4.627-4.321,7.78-4.835c3.148-0.514,6.307,0.233,8.896,2.104 c2.59,1.872,4.3,4.644,4.815,7.807c0.514,3.162-0.228,6.336-2.091,8.938c-1.865,2.604-4.628,4.321-7.78,4.835 C13.273,23.948,12.623,24,11.979,24z M5.505,21.074c2.411,1.742,5.353,2.438,8.284,1.96c2.936-0.479,5.509-2.079,7.246-4.504 c3.583-5.004,2.445-12.004-2.538-15.604c-2.411-1.742-5.353-2.438-8.284-1.96C7.278,1.446,4.704,3.045,2.968,5.47 C-0.616,10.474,0.523,17.474,5.505,21.074L5.505,21.074z M16.111,17.522c0.731-0.214,1.246-0.734,1.458-1.468l0.062-0.216 l0.008-5.787c0.006-4.334,0-5.814-0.024-5.895c-0.025-0.086-0.066-0.157-0.118-0.214c-0.077-0.048-0.17-0.073-0.276-0.073 c-0.073,0-0.325,0.035-0.56,0.078c-1.041,0.19-7.176,1.411-7.281,1.45C9.218,5.458,9.057,5.6,8.981,5.751L8.916,5.879 c0,0-0.031,9.071-0.078,9.173c-0.071,0.155-0.23,0.303-0.376,0.35c-0.069,0.022-0.343,0.084-0.609,0.137 c-1.231,0.245-1.688,0.421-2.075,0.801c-0.22,0.216-0.382,0.51-0.453,0.819c-0.067,0.295-0.045,0.737,0.051,1.006 c0.1,0.281,0.262,0.521,0.473,0.71c0.192,0.148,0.419,0.258,0.674,0.324c0.563,0.144,1.618-0.016,2.158-0.328 c0.226-0.131,0.516-0.404,0.667-0.629c0.06-0.089,0.15-0.268,0.2-0.399c0.176-0.456,0.181-8.582,0.204-8.684 c0.038-0.174,0.157-0.301,0.32-0.344c0.147-0.039,6.055-1.207,6.222-1.23c0.146-0.02,0.284,0.027,0.36,0.12 c0.045,0.024,0.083,0.056,0.109,0.096c0.048,0.071,0.051,0.213,0.058,2.785c0.008,2.961,0.012,2.892-0.149,3.079 c-0.117,0.136-0.263,0.189-0.864,0.311c-0.914,0.187-1.226,0.275-1.576,0.446c-0.437,0.213-0.679,0.447-0.867,0.836 c-0.133,0.275-0.182,0.481-0.182,0.754c0.001,0.489,0.169,0.871,0.55,1.245c0.035,0.034,0.069,0.066,0.104,0.097 c0.192,0.148,0.387,0.238,0.633,0.294C14.84,17.73,15.594,17.673,16.111,17.522z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>iTunes</title><path d="M11.977 23.999c-2.483 0-4.898-.777-6.954-2.262a11.928 11.928 0 01-4.814-7.806A11.954 11.954 0 012.3 4.994 11.85 11.85 0 0110.08.159a11.831 11.831 0 018.896 2.104 11.933 11.933 0 014.815 7.807 11.958 11.958 0 01-2.091 8.937 11.855 11.855 0 01-7.78 4.835 12.17 12.17 0 01-1.943.157zm-6.474-2.926a11.022 11.022 0 008.284 1.96 11.044 11.044 0 007.246-4.504c3.583-5.003 2.445-12.003-2.538-15.603a11.022 11.022 0 00-8.284-1.96A11.046 11.046 0 002.966 5.47C-.618 10.474.521 17.473 5.503 21.073zm10.606-3.552a2.08 2.08 0 001.458-1.468l.062-.216.008-5.786c.006-4.334 0-5.814-.024-5.895a.535.535 0 00-.118-.214.514.514 0 00-.276-.073c-.073 0-.325.035-.56.078-1.041.19-7.176 1.411-7.281 1.45a.786.786 0 00-.399.354l-.065.128s-.031 9.07-.078 9.172a.7.7 0 01-.376.35 9.425 9.425 0 01-.609.137c-1.231.245-1.688.421-2.075.801-.22.216-.382.51-.453.82-.067.294-.045.736.051 1.005.1.281.262.521.473.71.192.148.419.258.674.324.563.144 1.618-.016 2.158-.328a2.36 2.36 0 00.667-.629c.06-.089.15-.268.2-.399.176-.456.181-8.581.204-8.683a.44.44 0 01.32-.344c.147-.04 6.055-1.207 6.222-1.23.146-.02.284.027.36.12a.29.29 0 01.109.096c.048.07.051.213.058 2.785.008 2.96.012 2.892-.149 3.079-.117.136-.263.189-.864.31-.914.188-1.226.276-1.576.447-.437.213-.679.446-.867.835a1.58 1.58 0 00-.182.754c.001.49.169.871.55 1.245.035.034.069.066.104.097.192.148.387.238.633.294.37.082 1.124.025 1.641-.126z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/iveco.svg b/assets/lib/simple-icons/icons/iveco.svg
index 7df59ee1..ce67600c 100644
--- a/assets/lib/simple-icons/icons/iveco.svg
+++ b/assets/lib/simple-icons/icons/iveco.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>IVECO icon</title><path d="M.24 14.402h1.433c.12 0 .239-.1.239-.243V9.87a.243.243 0 0 0-.244-.242H.24a.237.237 0 0 0-.24.24v4.294c0 .169.148.239.24.239m2.566-4.424l1.01 3.737c.064.25.244.435.391.53.17.11.338.156.61.156h1.119c.474 0 .833-.294.963-.794l.91-3.62a.431.431 0 0 0 .014-.108.238.238 0 0 0-.24-.25h-.827a.24.24 0 0 0-.235.182l-.718 3.135c-.022.108-.076.131-.134.131a.117.117 0 0 1-.112-.1l-.762-3.11c-.02-.157-.122-.239-.242-.239H3.03c-.188 0-.254.17-.243.273.001.022.013.043.019.077m7.728 1.49l-.002-.413c0-.15.116-.25.24-.25h1.7a.24.24 0 0 0 .238-.24l.001-.695a.243.243 0 0 0-.244-.242H9.57c-.468 0-.948.364-.948 1.024v2.79c0 .602.508.959.945.959h2.93c.124 0 .249-.093.243-.265v-.69a.24.24 0 0 0-.24-.24h-1.7c-.159 0-.266-.093-.266-.243v-.397h1.494a.242.242 0 0 0 .238-.251v-.61a.24.24 0 0 0-.244-.238h-1.488zm5.511-.664a11.9 11.9 0 0 1 1.283 0 .238.238 0 0 0 .239-.239v-.005l.005-.762a.239.239 0 0 0-.217-.238 12.611 12.611 0 0 0-.893-.024c-.42 0-.833.022-1.237.069l.025-.002c-.879.07-1.595.72-1.756 1.57a5.162 5.162 0 0 0-.074.82c0 .27.02.527.058.776a1.943 1.943 0 0 0 1.63 1.622l-.026-.004a9.788 9.788 0 0 0 2.303.053.239.239 0 0 0 .216-.236l-.001.017.002-.766a.239.239 0 0 0-.239-.239h-.007c-.239.012-.479.012-.722.007a12.965 12.965 0 0 1-.61-.021.675.675 0 0 1-.588-.594 6.287 6.287 0 0 1-.022-1.131.678.678 0 0 1 .631-.673M24 12.05c.003-.434-.06-.83-.178-1.195a1.916 1.916 0 0 0-1.59-1.285 9.213 9.213 0 0 0-1.085-.062c-.406 0-.76.01-1.156.06a1.932 1.932 0 0 0-1.6 1.392 3.792 3.792 0 0 0 .029 2.172 1.906 1.906 0 0 0 1.596 1.306c.342.037.684.054 1.037.054.443 0 .805 0 1.232-.058.85-.153 1.452-.752 1.613-1.511.065-.282.1-.57.102-.873m-1.91-.02c0 .222-.01.434-.037.65a.677.677 0 0 1-.62.565 8.625 8.625 0 0 1-.541.007.674.674 0 0 1-.664-.576 5.302 5.302 0 0 1-.014-1.337.677.677 0 0 1 .625-.601 8.615 8.615 0 0 1 .532-.004c.353 0 .643.268.675.612.03.223.044.452.044.684"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>IVECO</title><path d="M.24 14.402h1.433c.12 0 .239-.1.239-.243V9.87a.243.243 0 0 0-.244-.242H.24a.237.237 0 0 0-.24.24v4.294c0 .169.148.239.24.239m2.566-4.424l1.01 3.737c.064.25.244.435.391.53.17.11.338.156.61.156h1.119c.474 0 .833-.294.963-.794l.91-3.62a.431.431 0 0 0 .014-.108.238.238 0 0 0-.24-.25h-.827a.24.24 0 0 0-.235.182l-.718 3.135c-.022.108-.076.131-.134.131a.117.117 0 0 1-.112-.1l-.762-3.11c-.02-.157-.122-.239-.242-.239H3.03c-.188 0-.254.17-.243.273.001.022.013.043.019.077m7.728 1.49l-.002-.413c0-.15.116-.25.24-.25h1.7a.24.24 0 0 0 .238-.24l.001-.695a.243.243 0 0 0-.244-.242H9.57c-.468 0-.948.364-.948 1.024v2.79c0 .602.508.959.945.959h2.93c.124 0 .249-.093.243-.265v-.69a.24.24 0 0 0-.24-.24h-1.7c-.159 0-.266-.093-.266-.243v-.397h1.494a.242.242 0 0 0 .238-.251v-.61a.24.24 0 0 0-.244-.238h-1.488zm5.511-.664a11.9 11.9 0 0 1 1.283 0 .238.238 0 0 0 .239-.239v-.005l.005-.762a.239.239 0 0 0-.217-.238 12.611 12.611 0 0 0-.893-.024c-.42 0-.833.022-1.237.069l.025-.002c-.879.07-1.595.72-1.756 1.57a5.162 5.162 0 0 0-.074.82c0 .27.02.527.058.776a1.943 1.943 0 0 0 1.63 1.622l-.026-.004a9.788 9.788 0 0 0 2.303.053.239.239 0 0 0 .216-.236l-.001.017.002-.766a.239.239 0 0 0-.239-.239h-.007c-.239.012-.479.012-.722.007a12.965 12.965 0 0 1-.61-.021.675.675 0 0 1-.588-.594 6.287 6.287 0 0 1-.022-1.131.678.678 0 0 1 .631-.673M24 12.05c.003-.434-.06-.83-.178-1.195a1.916 1.916 0 0 0-1.59-1.285 9.213 9.213 0 0 0-1.085-.062c-.406 0-.76.01-1.156.06a1.932 1.932 0 0 0-1.6 1.392 3.792 3.792 0 0 0 .029 2.172 1.906 1.906 0 0 0 1.596 1.306c.342.037.684.054 1.037.054.443 0 .805 0 1.232-.058.85-.153 1.452-.752 1.613-1.511.065-.282.1-.57.102-.873m-1.91-.02c0 .222-.01.434-.037.65a.677.677 0 0 1-.62.565 8.625 8.625 0 0 1-.541.007.674.674 0 0 1-.664-.576 5.302 5.302 0 0 1-.014-1.337.677.677 0 0 1 .625-.601 8.615 8.615 0 0 1 .532-.004c.353 0 .643.268.675.612.03.223.044.452.044.684"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/jabber.svg b/assets/lib/simple-icons/icons/jabber.svg
index f99e961e..42033568 100644
--- a/assets/lib/simple-icons/icons/jabber.svg
+++ b/assets/lib/simple-icons/icons/jabber.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Jabber icon</title><path d="M9.597 11.737c0-.35-.065-.732-.268-1.025-.408-.588-1.283-.775-1.892-.405-.308.188-.48.515-.576.851-.191.668-.104 1.43.03 2.1.043.214.088.428.148.639.021.076.031.186.08.25.087.11.297.141.426.12.387-.065.291-.703.278-.974-.03-.634-.218-1.25-.036-1.881.076-.268.225-.568.494-.684.244-.105.49.023.586.261.156.385.117.83.215 1.23.033.137.07.272.131.399.018.037.043.113.094.108.126-.011.304-.22.398-.298.304-.25.616-.52.965-.705.165-.088.435-.23.603-.08a.612.612 0 0 1 .108.13c.198.31.002.55-.127.845-.166.38-.336.758-.577 1.098-.207.293-.49.549-.655.869-.107.205-.167.43-.123.663.036.188.181.301.373.257.143-.033.24-.156.322-.269.146-.202.281-.412.426-.615.28-.393.61-.76.846-1.183a3.41 3.41 0 0 0 .42-1.664c0-.474-.171-1.198-.723-1.298a.974.974 0 0 0-.326.01 1.432 1.432 0 0 0-.374.12 2.715 2.715 0 0 0-.818.637c-.146.16-.276.363-.449.495M9.078.016c-.435.058-.878.052-1.315.12-.838.129-1.64.389-2.425.703-.286.114-.568.241-.845.376-.103.05-.26.09-.343.17-.043.041-.039.139-.044.195-.014.156-.034.313-.05.47-.058.605-.1 1.229-.013 1.834.028.195.09.55.33.587.369.058.656-.397.837-.648.424-.586.905-1.132 1.6-1.394.817-.308 1.753-.381 2.618-.44 2.426-.167 5.078.277 6.865 2.064.254.254.495.524.7.82.8 1.159 1.223 2.477 1.427 3.86.096.65.161 1.308.013 1.955-.257 1.122-.932 2.1-1.706 2.931-.53.57-1.128 1.084-1.749 1.552-.347.261-.736.483-1.062.768-.375.329-.688.74-.925 1.179-.639 1.181-.81 2.602-.622 3.92.038.27.073.542.134.809.018.08.022.217.073.282.097.122.36.189.508.196.154.007.256-.11.294-.249.064-.236.026-.498-.012-.736-.076-.487-.147-.977-.125-1.471a3.71 3.71 0 0 1 1.026-2.425c.643-.673 1.512-1.061 2.243-1.625 1.474-1.136 2.794-2.668 3.301-4.492a5.194 5.194 0 0 0 .159-2.015c-.105-.849-.415-1.697-.708-2.497-.892-2.437-2.422-4.755-4.851-5.87-.964-.443-1.973-.645-3.016-.79-.49-.068-.98-.11-1.472-.132-.274-.012-.572-.042-.845-.006M5.277 15.796c-.473.068-.61.447-.523.876.112.548.543.965.97 1.295a6.03 6.03 0 0 0 3.884 1.238c.538-.023 1.124-.112 1.617-.34.265-.122.542-.563.181-.751a.59.59 0 0 0-.169-.051c-.157-.026-.333.041-.482.084-.263.075-.526.153-.797.196-.808.13-1.683-.055-2.352-.534-.542-.387-.98-.898-1.393-1.415-.253-.316-.482-.663-.936-.598M4.662 18.474c-.12.016-.259.011-.362.087-.215.158.022.476.135.62.328.417.76.763 1.192 1.068a7.832 7.832 0 0 0 4.03 1.442c.421.03.85 0 1.267-.07.152-.026.342-.037.482-.103.399-.186.284-.939-.072-1.106-.155-.073-.404.023-.567.046-.385.054-.771.06-1.158.05-1.015-.025-2.096-.338-2.98-.831a5.589 5.589 0 0 1-.966-.693c-.181-.16-.368-.42-.603-.502-.11-.037-.284-.023-.398-.008M4.903 20.73a.638.638 0 0 0-.413.236c-.078.088-.152.167-.197.278-.246.609.41 1.183.864 1.47.504.32 1.055.558 1.616.758 1.266.45 2.752.739 4.066.336.391-.12.778-.338 1.062-.634.16-.167.27-.419-.024-.526-.174-.063-.385.098-.543.162a4.57 4.57 0 0 1-1.158.312c-.527.064-1.001-.052-1.508-.179-.434-.108-.872-.217-1.291-.373a4.457 4.457 0 0 1-1.026-.513c-.094-.066-.206-.125-.282-.211-.25-.282-.439-.612-.707-.88-.116-.116-.281-.256-.459-.236"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Jabber</title><path d="M9.597 11.737c0-.35-.065-.732-.268-1.025-.408-.588-1.283-.775-1.892-.405-.308.188-.48.515-.576.851-.191.668-.104 1.43.03 2.1.043.214.088.428.148.639.021.076.031.186.08.25.087.11.297.141.426.12.387-.065.291-.703.278-.974-.03-.634-.218-1.25-.036-1.881.076-.268.225-.568.494-.684.244-.105.49.023.586.261.156.385.117.83.215 1.23.033.137.07.272.131.399.018.037.043.113.094.108.126-.011.304-.22.398-.298.304-.25.616-.52.965-.705.165-.088.435-.23.603-.08a.612.612 0 0 1 .108.13c.198.31.002.55-.127.845-.166.38-.336.758-.577 1.098-.207.293-.49.549-.655.869-.107.205-.167.43-.123.663.036.188.181.301.373.257.143-.033.24-.156.322-.269.146-.202.281-.412.426-.615.28-.393.61-.76.846-1.183a3.41 3.41 0 0 0 .42-1.664c0-.474-.171-1.198-.723-1.298a.974.974 0 0 0-.326.01 1.432 1.432 0 0 0-.374.12 2.715 2.715 0 0 0-.818.637c-.146.16-.276.363-.449.495M9.078.016c-.435.058-.878.052-1.315.12-.838.129-1.64.389-2.425.703-.286.114-.568.241-.845.376-.103.05-.26.09-.343.17-.043.041-.039.139-.044.195-.014.156-.034.313-.05.47-.058.605-.1 1.229-.013 1.834.028.195.09.55.33.587.369.058.656-.397.837-.648.424-.586.905-1.132 1.6-1.394.817-.308 1.753-.381 2.618-.44 2.426-.167 5.078.277 6.865 2.064.254.254.495.524.7.82.8 1.159 1.223 2.477 1.427 3.86.096.65.161 1.308.013 1.955-.257 1.122-.932 2.1-1.706 2.931-.53.57-1.128 1.084-1.749 1.552-.347.261-.736.483-1.062.768-.375.329-.688.74-.925 1.179-.639 1.181-.81 2.602-.622 3.92.038.27.073.542.134.809.018.08.022.217.073.282.097.122.36.189.508.196.154.007.256-.11.294-.249.064-.236.026-.498-.012-.736-.076-.487-.147-.977-.125-1.471a3.71 3.71 0 0 1 1.026-2.425c.643-.673 1.512-1.061 2.243-1.625 1.474-1.136 2.794-2.668 3.301-4.492a5.194 5.194 0 0 0 .159-2.015c-.105-.849-.415-1.697-.708-2.497-.892-2.437-2.422-4.755-4.851-5.87-.964-.443-1.973-.645-3.016-.79-.49-.068-.98-.11-1.472-.132-.274-.012-.572-.042-.845-.006M5.277 15.796c-.473.068-.61.447-.523.876.112.548.543.965.97 1.295a6.03 6.03 0 0 0 3.884 1.238c.538-.023 1.124-.112 1.617-.34.265-.122.542-.563.181-.751a.59.59 0 0 0-.169-.051c-.157-.026-.333.041-.482.084-.263.075-.526.153-.797.196-.808.13-1.683-.055-2.352-.534-.542-.387-.98-.898-1.393-1.415-.253-.316-.482-.663-.936-.598M4.662 18.474c-.12.016-.259.011-.362.087-.215.158.022.476.135.62.328.417.76.763 1.192 1.068a7.832 7.832 0 0 0 4.03 1.442c.421.03.85 0 1.267-.07.152-.026.342-.037.482-.103.399-.186.284-.939-.072-1.106-.155-.073-.404.023-.567.046-.385.054-.771.06-1.158.05-1.015-.025-2.096-.338-2.98-.831a5.589 5.589 0 0 1-.966-.693c-.181-.16-.368-.42-.603-.502-.11-.037-.284-.023-.398-.008M4.903 20.73a.638.638 0 0 0-.413.236c-.078.088-.152.167-.197.278-.246.609.41 1.183.864 1.47.504.32 1.055.558 1.616.758 1.266.45 2.752.739 4.066.336.391-.12.778-.338 1.062-.634.16-.167.27-.419-.024-.526-.174-.063-.385.098-.543.162a4.57 4.57 0 0 1-1.158.312c-.527.064-1.001-.052-1.508-.179-.434-.108-.872-.217-1.291-.373a4.457 4.457 0 0 1-1.026-.513c-.094-.066-.206-.125-.282-.211-.25-.282-.439-.612-.707-.88-.116-.116-.281-.256-.459-.236"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/jaguar.svg b/assets/lib/simple-icons/icons/jaguar.svg
new file mode 100644
index 00000000..e2f3bfa3
--- /dev/null
+++ b/assets/lib/simple-icons/icons/jaguar.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Jaguar</title><path d="M5.241 6.609a6.93 6.93 0 0 0-.293.01s-1.6.072-2.1.798c0 0-.085.098-.037.203 0 0 .01.03-.01.05 0 0-.27.24-.406.455-.048.078-.102.209 0 .3 0 0 .045.035.063.065.039.064.075.159.123.215.07.084.211.228.41.193.073-.013.09-.04.09-.04.1.099.26.096.26.096-.02-.064-.09-.188-.1-.263a.421.421 0 0 1 .015-.162.701.701 0 0 1 .145-.271c.054-.054.192-.115.303-.038.088.063.194.268.106.56 0 .022-.1.23-.205.26 0 0-.01.004-.03.004-.07 0-.2-.073-.2-.073s0 .018.015.094c.012.043.027.09.04.127 0 0-.025.046-.042.072-.025.045-.046.131.01.17 0 0 .23.157.455.171.154.01.212-.095.212-.095.114-.156.2-.29.32-.399.327-.3.786-.38.786-.38.03-.004.533-.144 1.386.539-.244.02-.534.078-.756.117-.632.113-1.037.71-1.155.952-.307.633.32.851.32.851.01-.006.6-.052.886-.683 0 0 .104-.279.383-.188.182.059 1.79.62 2.152.716 0 0 1.077.28 1.482-.215.649.213 1.257.316 2.85.11.277-.036.495-.027.495-.027.372.027.712.278.815.442.42.671.95 2.003 2.796 1.841l.835-.076c.51-.03.924-.05 1.345.172.183.096.285.131.596.428.425.404.816.842 1.336.603.185-.085.393-.415.393-.415a.598.598 0 0 0-.253-.419c.473.113 1.54.185 1.952-.536.107-.168.118-.318.078-.408-.113-.253-.426-.17-.426-.17-.148.03-.317.2-.568.274-.538.16-.968-.026-.968-.026-.829-.359-3.493-1.884-4.848-2.55 0 0-1.555-.78-3.839-1.684 0 0-4.148-1.823-7.212-1.77zm0 .136c3-.051 7.113 1.739 7.154 1.758v.001c.368.146.716.289 1.043.425l-.475-.188a43.23 43.23 0 0 0-1.828-.645c-1.544-.533-2.22-.627-2.267-.633a5.54 5.54 0 0 0-.256-.038l-.278-.032.154.249c-1.09-.771-2.395-.81-2.459-.812-.263 0-.492.075-.67.16l.089-.165-.216-.01a6.333 6.333 0 0 0-.901.018 5.1 5.1 0 0 1 .908-.088zm-.319.198c.095 0 .197.003.307.008l-.036.067c-.077.146-.385.448-.892.336 0 0 0 .226.555.307 0 0 .497.088 1.341.767 0 0-.403-.802-1.088-1.01 0 0-.086-.018-.044-.072 0 0 .404-.38.967-.38 0 0 1.754.038 2.869 1.204 0 0-.05-.203-.225-.49l-.073-.12s.067.008.25.038c0 0 .67.083 2.243.626 0 0 1.179.388 1.824.643.97.387 3.398 1.327 4.947 2.172.276.15 3.077 1.61 3.077 1.61.775.349 1.312.137 1.312.137.175-.066.492-.31.63-.172.071.071.081.167.047.26-.04.14-.24.328-.483.435-.255.114-.787.144-1.094.094 0 0-.596-.06-1.117-.605-.165-.172-.367-.367-.554-.559a1.038 1.038 0 0 0-.62-.333c-.35-.047-1.205-.07-1.526-.177-.215-.072-.474-.217-.819-.728-.166-.244-.283-.311-.509-.455 0 0 .173.138.271.312.142.252.213.435.29.57.077.135.164.254.295.36.164.131.266.156.443.185.17.028.742.023 1.232.016.483-.008.699.148.857.282.147.124.4.477.554.632.184.184.32.372.684.556.127.064.334.222.323.374-.164.164-.367.207-.855.076.035.034.29.303.727.176a.558.558 0 0 1-.396.15c-.458-.026-.906-.59-1.158-.798-.19-.158-.213-.197-.537-.422-.493-.341-1.598-.245-1.598-.245l-.812.042c-1.58.12-2.244-1.28-2.419-1.572a2.422 2.422 0 0 0-.168-.25c-.08-.108-.512-.668-.949-.852 0 0 .43.37.404.614 0 0-.178-.083-.662-.014-2.081.297-2.79-.224-2.79-.224.097-.417-.194-.845-.194-.845.16.05 1.184.396 2.155.2 0 0-1.581.008-2.69-.877 0 0 .69.865.526 1.431 0 0-.113.603-1.316.36-.129-.025-.28-.068-2.08-.568-.424-.127-.57.075-.647.197 0 .178-.213.386-.318.45-.558-.1-.336-.617-.336-.617-.35.502.017.724.133.74-.07.033-.135.058-.19.078 0 0-.457-.271-.202-.715.355-.62.717-.819 1.38-.88.29-.027.531-.048.715-.022.48.066.782.338 1.502.407-1.528-.45-1.532-1.335-1.537-1.352V8.5c-.085.292-.038.538.037.746-.02-.008-.355-.228-.483-.305-.548-.335-.982-.394-.982-.394-.182-.023-.266-.244-.266-.244-.01-.011-.013-.022-.02-.032-.252-.432-.502-.44-.502-.44a.836.836 0 0 1 .136.372c.01.055.014.157.014.187 0 .462-.54.607-.54.607-.372.473-.353.483-.436.495-.083.012-.265-.08-.265-.08-.014-.008-.018-.029-.016-.042 0-.029.028-.047.028-.047.07-.055.127-.11.127-.11.394-.403.441-.6.393-.861-.1-.524-.474-.463-.474-.463-.182.018-.256.168-.256.168a4.576 4.576 0 0 0-.195.392c-.08.176-.164.215-.207.223a.396.396 0 0 1-.065.003c-.127-.005-.223-.121-.223-.121-.01-.006-.01-.013-.016-.018-.116-.124-.032-.287-.032-.287.156-.363.46-.416.5-.421l.182-.026c.385-.065.567-.466.567-.466a2.99 2.99 0 0 0-.386.014c-.256.045-.343.346-.343.345-.216.05-.21-.136-.172-.193.034-.052.16-.275.991-.467 0 0 .314-.095.978-.092zm-.159.12c-.2 0-.305.112-.305.123 0 .006.027.009.07.01l.07.003a.79.79 0 0 0 .32-.083.422.422 0 0 0 .092-.052l-.245-.002zm.164.363v.004c.03.081.108.11.143.12v-.001c.163.05.309.138.437.241-.39-.218-.613-.261-.628-.264a1.609 1.609 0 0 1-.157-.032.987.987 0 0 0 .208-.068zm-1.364.05s-.05.16-.247.194c0 0-.077.018-.108.019l.021-.06c0-.012.051-.138.165-.15 0 0 .066-.004.169-.004zm-.683.233a.213.213 0 0 0 .056.047c-.135.057-.485.432-.485.432.177-.262.408-.458.41-.46 0-.003.01-.006.01-.009 0-.003.01-.007.01-.01zm.737.315c.038-.005.217-.012.3.27a.433.433 0 0 0-.14-.185.339.339 0 0 0-.254-.055.2.2 0 0 1 .094-.03zm-1.282 7.398v.873c0 .255-.056.426-.18.55-.165.162-.437.228-.84.228H0v.256h1.428c.677 0 1.156-.092 1.405-.347.143-.146.212-.329.212-.63v-.93zm2.688 0L3.37 17.33h.412l.348-.406h2.104l.35.406h.796l-1.656-1.907zm4.086 0c-.483 0-.772.056-1.03.2a.831.831 0 0 0-.432.75c0 .385.175.666.557.82.229.093.532.137.917.137h2.055v-.875h-.707v.62H9.336c-.366 0-.58-.053-.737-.173-.15-.115-.229-.289-.229-.525 0-.229.075-.4.215-.513.158-.128.365-.186.745-.186h1.774v-.255zm5.656 0v.924c0 .24-.03.393-.122.52-.154.217-.397.295-.896.295h-.06c-.476 0-.741-.078-.895-.294-.091-.128-.122-.273-.122-.521v-.923h-.71v.95c0 .246.027.44.15.603.202.264.574.416 1.6.416h.011c1.032 0 1.402-.152 1.604-.416.124-.163.15-.357.15-.603v-.95zm2.677 0l-1.654 1.907h.412l.349-.406h2.103l.35.406h.796l-1.656-1.907zm2.986 0v1.908h.71v-.661h.933l1.064.66H24l-1.117-.673c.266-.009.493-.05.667-.143a.52.52 0 0 0 .267-.472c0-.255-.114-.418-.321-.51-.185-.08-.413-.108-.866-.108zm.71.24h1.399c.266 0 .384.026.465.086.077.058.105.146.105.283v.036c0 .123-.03.223-.12.286-.09.062-.214.075-.441.075h-1.408zM5.18 15.7l.84.977H4.342zm12.419 0l.84.977h-1.68z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/jamboard.svg b/assets/lib/simple-icons/icons/jamboard.svg
new file mode 100644
index 00000000..1c9c2c75
--- /dev/null
+++ b/assets/lib/simple-icons/icons/jamboard.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Jamboard</title><path d="M12.143 0v7.877h7.783V0zm0 8.155v7.784h7.783V8.155zm-.28.005a7.926 7.923 0 0 0-7.789 7.917A7.926 7.923 0 0 0 12 24a7.926 7.923 0 0 0 7.918-7.78h-8.056Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/jameson.svg b/assets/lib/simple-icons/icons/jameson.svg
index 5a0fdb39..2aaee530 100644
--- a/assets/lib/simple-icons/icons/jameson.svg
+++ b/assets/lib/simple-icons/icons/jameson.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Jameson icon</title><path d="M18.81 17.564c-.405 1.031-1.007 2.505-1.683 3.574 0 .012 0 .024.013.012.737-.59 1.486-1.732 1.891-2.763.258-.651.823-2.002 1.044-2.223.013-.013 0-.025-.012-.037-.43-.123-1.339-.234-1.867-2.236 0 0-2.678-9.985-3.046-11.385-.295-1.094-.037-1.757.356-2.199.012-.012 0-.025-.012-.012-.712.22-1.191 1.29-.86 2.505.369 1.388 3.01 11.226 3.01 11.226.171.651.405 1.167.663 1.536.258.368.614.638.97.712.037.012.086.012.123.012.012 0 .024.025.012.037-.025.013-.037.037-.061.062-.172.208-.357.65-.553 1.154zM14.352.024l.012.05v.012c-.59.405-1.167 1.486-.835 2.727.368 1.388 1.94 7.246 2.493 9.285l.602 2.223c.368 1.4.897 2.174 1.621 2.272 0 0 .012 0 .012.013l.025.049v.012c-.368.369-.676 1.265-1.069 2.1-.393.848-1.215 3.415-4.36 4.619-3.427 1.302-6.902.479-8.364-1.941-.958-1.572-.725-3.734.835-4.606 1.351-.761 2.813-.258 3.366.86.528 1.08.16 2.235-.27 2.616-.087.074 0 .233.208.368.909.627 1.953.59 2.948.062 1.277-.676 1.744-1.842 1.068-4.323-.54-2.04-2.972-11.08-3.34-12.48-.332-1.24-1.376-1.89-2.088-1.94 0 0-.013 0-.013-.012l-.012-.05s0-.012.012-.012L14.39 0s.012 0 .012.012zM9.795 20.083c.16.086.356.11.54.073.013 0 .013-.012.013-.012a3.249 3.249 0 0 0-.172-2.493c-.369-.75-.91-1.192-1.523-1.4-.013 0-.013.012-.013.012.393.27.725.639.958 1.105.443.91.43 1.88.16 2.629a.06.06 0 0 0 .025.073Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Jameson</title><path d="M18.81 17.564c-.405 1.031-1.007 2.505-1.683 3.574 0 .012 0 .024.013.012.737-.59 1.486-1.732 1.891-2.763.258-.651.823-2.002 1.044-2.223.013-.013 0-.025-.012-.037-.43-.123-1.339-.234-1.867-2.236 0 0-2.678-9.985-3.046-11.385-.295-1.094-.037-1.757.356-2.199.012-.012 0-.025-.012-.012-.712.22-1.191 1.29-.86 2.505.369 1.388 3.01 11.226 3.01 11.226.171.651.405 1.167.663 1.536.258.368.614.638.97.712.037.012.086.012.123.012.012 0 .024.025.012.037-.025.013-.037.037-.061.062-.172.208-.357.65-.553 1.154zM14.352.024l.012.05v.012c-.59.405-1.167 1.486-.835 2.727.368 1.388 1.94 7.246 2.493 9.285l.602 2.223c.368 1.4.897 2.174 1.621 2.272 0 0 .012 0 .012.013l.025.049v.012c-.368.369-.676 1.265-1.069 2.1-.393.848-1.215 3.415-4.36 4.619-3.427 1.302-6.902.479-8.364-1.941-.958-1.572-.725-3.734.835-4.606 1.351-.761 2.813-.258 3.366.86.528 1.08.16 2.235-.27 2.616-.087.074 0 .233.208.368.909.627 1.953.59 2.948.062 1.277-.676 1.744-1.842 1.068-4.323-.54-2.04-2.972-11.08-3.34-12.48-.332-1.24-1.376-1.89-2.088-1.94 0 0-.013 0-.013-.012l-.012-.05s0-.012.012-.012L14.39 0s.012 0 .012.012zM9.795 20.083c.16.086.356.11.54.073.013 0 .013-.012.013-.012a3.249 3.249 0 0 0-.172-2.493c-.369-.75-.91-1.192-1.523-1.4-.013 0-.013.012-.013.012.393.27.725.639.958 1.105.443.91.43 1.88.16 2.629a.06.06 0 0 0 .025.073Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/jamstack.svg b/assets/lib/simple-icons/icons/jamstack.svg
new file mode 100644
index 00000000..d9ecaf9f
--- /dev/null
+++ b/assets/lib/simple-icons/icons/jamstack.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Jamstack</title><path d="M12 0C5.365 0 0 5.364 0 12s5.365 12 12 12 12-5.364 12-12V0zm.496 3.318h8.17v8.17h-8.17zm-9.168 9.178h8.16v8.149c-4.382-.257-7.904-3.767-8.16-8.149zm9.168.016h8.152a8.684 8.684 0 01-8.152 8.148z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/jasmine.svg b/assets/lib/simple-icons/icons/jasmine.svg
new file mode 100644
index 00000000..bda1b3ed
--- /dev/null
+++ b/assets/lib/simple-icons/icons/jasmine.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Jasmine</title><path d="M11.591 19.649h.771v-3.786h-.77zm-6.874-5.03l-.238-.733 3.6-1.17.238.735-3.6 1.17m4.645-5.762L7.138 5.796l.624-.453 2.224 3.062-.624.454m5.315.028l-.624-.454 2.225-3.062.624.453-2.225 3.063m4.592 5.78l-3.6-1.17.238-.734 3.6 1.17-.238.733M12 .001C5.383.001 0 5.384 0 11.998 0 18.617 5.383 24 12 24s12-5.382 12-12c0-6.617-5.383-12-12-12zm0 2.43c5.284 0 9.569 4.283 9.569 9.567 0 5.287-4.285 9.573-9.569 9.573-5.286 0-9.57-4.286-9.57-9.573 0-5.284 4.285-9.567 9.57-9.567m1.552 7.96l.575 1.768.747.242 4.736-1.538-.86-2.645-4.736 1.539-.462.635m.337 2.5l-1.504 1.093v.785l2.927 4.03 2.25-1.636-2.927-4.029-.746-.243m-2.275 1.093l-1.504-1.093-.747.243-2.927 4.029 2.25 1.635 2.928-4.029v-.785M9.873 12.16l.574-1.767-.462-.635-4.736-1.54-.86 2.646 4.737 1.54.747-.244m1.198-2.22h1.859l.462-.636v-4.98H10.61v4.98l.461.636"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/java.svg b/assets/lib/simple-icons/icons/java.svg
index 26fb365f..9ec302f6 100644
--- a/assets/lib/simple-icons/icons/java.svg
+++ b/assets/lib/simple-icons/icons/java.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Java icon</title><path d="M8.851 18.56s-.917.534.653.714c1.902.218 2.874.187 4.969-.211 0 0 .552.346 1.321.646-4.699 2.013-10.633-.118-6.943-1.149M8.276 15.933s-1.028.761.542.924c2.032.209 3.636.227 6.413-.308 0 0 .384.389.987.602-5.679 1.661-12.007.13-7.942-1.218M13.116 11.475c1.158 1.333-.304 2.533-.304 2.533s2.939-1.518 1.589-3.418c-1.261-1.772-2.228-2.652 3.007-5.688 0-.001-8.216 2.051-4.292 6.573M19.33 20.504s.679.559-.747.991c-2.712.822-11.288 1.069-13.669.033-.856-.373.75-.89 1.254-.998.527-.114.828-.093.828-.093-.953-.671-6.156 1.317-2.643 1.887 9.58 1.553 17.462-.7 14.977-1.82M9.292 13.21s-4.362 1.036-1.544 1.412c1.189.159 3.561.123 5.77-.062 1.806-.152 3.618-.477 3.618-.477s-.637.272-1.098.587c-4.429 1.165-12.986.623-10.522-.568 2.082-1.006 3.776-.892 3.776-.892M17.116 17.584c4.503-2.34 2.421-4.589.968-4.285-.355.074-.515.138-.515.138s.132-.207.385-.297c2.875-1.011 5.086 2.981-.928 4.562 0-.001.07-.062.09-.118M14.401 0s2.494 2.494-2.365 6.33c-3.896 3.077-.888 4.832-.001 6.836-2.274-2.053-3.943-3.858-2.824-5.539 1.644-2.469 6.197-3.665 5.19-7.627M9.734 23.924c4.322.277 10.959-.153 11.116-2.198 0 0-.302.775-3.572 1.391-3.688.694-8.239.613-10.937.168 0-.001.553.457 3.393.639"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Java</title><path d="M8.851 18.56s-.917.534.653.714c1.902.218 2.874.187 4.969-.211 0 0 .552.346 1.321.646-4.699 2.013-10.633-.118-6.943-1.149M8.276 15.933s-1.028.761.542.924c2.032.209 3.636.227 6.413-.308 0 0 .384.389.987.602-5.679 1.661-12.007.13-7.942-1.218M13.116 11.475c1.158 1.333-.304 2.533-.304 2.533s2.939-1.518 1.589-3.418c-1.261-1.772-2.228-2.652 3.007-5.688 0-.001-8.216 2.051-4.292 6.573M19.33 20.504s.679.559-.747.991c-2.712.822-11.288 1.069-13.669.033-.856-.373.75-.89 1.254-.998.527-.114.828-.093.828-.093-.953-.671-6.156 1.317-2.643 1.887 9.58 1.553 17.462-.7 14.977-1.82M9.292 13.21s-4.362 1.036-1.544 1.412c1.189.159 3.561.123 5.77-.062 1.806-.152 3.618-.477 3.618-.477s-.637.272-1.098.587c-4.429 1.165-12.986.623-10.522-.568 2.082-1.006 3.776-.892 3.776-.892M17.116 17.584c4.503-2.34 2.421-4.589.968-4.285-.355.074-.515.138-.515.138s.132-.207.385-.297c2.875-1.011 5.086 2.981-.928 4.562 0-.001.07-.062.09-.118M14.401 0s2.494 2.494-2.365 6.33c-3.896 3.077-.888 4.832-.001 6.836-2.274-2.053-3.943-3.858-2.824-5.539 1.644-2.469 6.197-3.665 5.19-7.627M9.734 23.924c4.322.277 10.959-.153 11.116-2.198 0 0-.302.775-3.572 1.391-3.688.694-8.239.613-10.937.168 0-.001.553.457 3.393.639"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/javascript.svg b/assets/lib/simple-icons/icons/javascript.svg
index aa284118..91e51623 100644
--- a/assets/lib/simple-icons/icons/javascript.svg
+++ b/assets/lib/simple-icons/icons/javascript.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>JavaScript icon</title><path d="M0 0h24v24H0V0zm22.034 18.276c-.175-1.095-.888-2.015-3.003-2.873-.736-.345-1.554-.585-1.797-1.14-.091-.33-.105-.51-.046-.705.15-.646.915-.84 1.515-.66.39.12.75.42.976.9 1.034-.676 1.034-.676 1.755-1.125-.27-.42-.404-.601-.586-.78-.63-.705-1.469-1.065-2.834-1.034l-.705.089c-.676.165-1.32.525-1.71 1.005-1.14 1.291-.811 3.541.569 4.471 1.365 1.02 3.361 1.244 3.616 2.205.24 1.17-.87 1.545-1.966 1.41-.811-.18-1.26-.586-1.755-1.336l-1.83 1.051c.21.48.45.689.81 1.109 1.74 1.756 6.09 1.666 6.871-1.004.029-.09.24-.705.074-1.65l.046.067zm-8.983-7.245h-2.248c0 1.938-.009 3.864-.009 5.805 0 1.232.063 2.363-.138 2.711-.33.689-1.18.601-1.566.48-.396-.196-.597-.466-.83-.855-.063-.105-.11-.196-.127-.196l-1.825 1.125c.305.63.75 1.172 1.324 1.517.855.51 2.004.675 3.207.405.783-.226 1.458-.691 1.811-1.411.51-.93.402-2.07.397-3.346.012-2.054 0-4.109 0-6.179l.004-.056z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>JavaScript</title><path d="M0 0h24v24H0V0zm22.034 18.276c-.175-1.095-.888-2.015-3.003-2.873-.736-.345-1.554-.585-1.797-1.14-.091-.33-.105-.51-.046-.705.15-.646.915-.84 1.515-.66.39.12.75.42.976.9 1.034-.676 1.034-.676 1.755-1.125-.27-.42-.404-.601-.586-.78-.63-.705-1.469-1.065-2.834-1.034l-.705.089c-.676.165-1.32.525-1.71 1.005-1.14 1.291-.811 3.541.569 4.471 1.365 1.02 3.361 1.244 3.616 2.205.24 1.17-.87 1.545-1.966 1.41-.811-.18-1.26-.586-1.755-1.336l-1.83 1.051c.21.48.45.689.81 1.109 1.74 1.756 6.09 1.666 6.871-1.004.029-.09.24-.705.074-1.65l.046.067zm-8.983-7.245h-2.248c0 1.938-.009 3.864-.009 5.805 0 1.232.063 2.363-.138 2.711-.33.689-1.18.601-1.566.48-.396-.196-.597-.466-.83-.855-.063-.105-.11-.196-.127-.196l-1.825 1.125c.305.63.75 1.172 1.324 1.517.855.51 2.004.675 3.207.405.783-.226 1.458-.691 1.811-1.411.51-.93.402-2.07.397-3.346.012-2.054 0-4.109 0-6.179l.004-.056z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/jbl.svg b/assets/lib/simple-icons/icons/jbl.svg
new file mode 100644
index 00000000..6a485523
--- /dev/null
+++ b/assets/lib/simple-icons/icons/jbl.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>JBL</title><path d="M0 5.2645l2.0221 4.5892 2.0217-4.5892zm2.0221 7.601c.6982 0 1.2656-.5655 1.2656-1.2606 0-.6985-.5674-1.2618-1.2656-1.2618-.7003 0-1.2661.5633-1.2661 1.2618 0 .6951.5658 1.2607 1.2661 1.2607zm-1.0937 3.361c0 .9572.862 2.509 3.3142 2.509 2.4529 0 3.3154-1.1872 3.3154-2.509V5.2645H5.3693l.0011 11.3428c0 .6196-.5037 1.1392-1.1261 1.1392-.6231 0-1.1279-.5045-1.1279-1.124l-.0016-2.3108H.9284zm8.2885 2.3119V5.2645h4.3745c.8441 0 2.187.693 2.187 2.1628v2.2611c0 .6612-.5798 1.8328-1.4412 1.8328.8614 0 1.4412.7422 1.4412 1.3045v3.9788c0 .6767-.5463 1.7339-2.187 1.7339zm3.3802-7.559c.7955 0 .9944-.134.9944-2.2147 0-2.0801-.199-2.246-.9944-2.246h-1.1948v4.4575zm.9944 3.8108c0-2.0812 0-2.6906-.8636-2.6906h-1.3256v5.3482l1.3255.0027c.8636 0 .8636-.5807.8636-2.6603zm3.779 3.7482H24v-4.2267h-2.1886l.0016 2.3107c0 .6196-.5047 1.1241-1.1273 1.1241-.622 0-1.1273-.5045-1.1273-1.124V5.2644h-2.188Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/jcb.svg b/assets/lib/simple-icons/icons/jcb.svg
index 01ce57fe..2b5fc900 100644
--- a/assets/lib/simple-icons/icons/jcb.svg
+++ b/assets/lib/simple-icons/icons/jcb.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>JCB icon</title><path d="M13.05 9.8643c.9723.0736 1.7257.3671 2.3545.6843v-1.31s-1.2577-.3162-2.4408-.368c-4.1256-.1849-5.295 1.4344-5.295 3.1292 0 1.6947 1.1694 3.3145 5.295 3.1296 1.1831-.0536 2.4408-.3694 2.4408-.3694v-1.3086c-.6193.3081-1.3826.6107-2.3545.683-1.6793.1272-2.6898-.6907-2.6898-2.1342 0-1.4448 1.0105-2.2613 2.6898-2.1354m7.685 4.1223c-.0513.0105-.1581.02-.215.02h-1.8005V12.376H20.52c.0568 0 .1636.01.2149.02a.8056.8056 0 01.6325.7951c0 .4162-.2872.721-.6325.796zm-2.0155-4.0374h1.6325c.059 0 .1454.0077.1772.0137.3376.0572.6256.3307.6256.7392 0 .409-.288.6815-.626.7392a1.571 1.571 0 01-.1773.0137h-1.6311V9.9506zm3.4994 1.9856v-.0364c.9133-.1331 1.4149-.726 1.4149-1.4199 0-.8828-.7343-1.3916-1.7293-1.4416-.0772-.0032-.203-.011-.3044-.011h-5.3323v5.9467h5.7548c1.13 0 1.9774-.6043 1.9774-1.5466 0-.8701-.7724-1.4222-1.781-1.4917zm-17.8644.6788c0 .8787-.5906 1.5311-1.6656 1.5311-.917 0-1.8174-.2726-2.6889-.6938V14.76s1.4021.383 3.191.383c2.9714 0 3.8374-1.125 3.8374-2.529V9.0266H4.3541v3.5876Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>JCB</title><path d="M13.05 9.8643c.9723.0736 1.7257.3671 2.3545.6843v-1.31s-1.2577-.3162-2.4408-.368c-4.1256-.1849-5.295 1.4344-5.295 3.1292 0 1.6947 1.1694 3.3145 5.295 3.1296 1.1831-.0536 2.4408-.3694 2.4408-.3694v-1.3086c-.6193.3081-1.3826.6107-2.3545.683-1.6793.1272-2.6898-.6907-2.6898-2.1342 0-1.4448 1.0105-2.2613 2.6898-2.1354m7.685 4.1223c-.0513.0105-.1581.02-.215.02h-1.8005V12.376H20.52c.0568 0 .1636.01.2149.02a.8056.8056 0 01.6325.7951c0 .4162-.2872.721-.6325.796zm-2.0155-4.0374h1.6325c.059 0 .1454.0077.1772.0137.3376.0572.6256.3307.6256.7392 0 .409-.288.6815-.626.7392a1.571 1.571 0 01-.1773.0137h-1.6311V9.9506zm3.4994 1.9856v-.0364c.9133-.1331 1.4149-.726 1.4149-1.4199 0-.8828-.7343-1.3916-1.7293-1.4416-.0772-.0032-.203-.011-.3044-.011h-5.3323v5.9467h5.7548c1.13 0 1.9774-.6043 1.9774-1.5466 0-.8701-.7724-1.4222-1.781-1.4917zm-17.8644.6788c0 .8787-.5906 1.5311-1.6656 1.5311-.917 0-1.8174-.2726-2.6889-.6938V14.76s1.4021.383 3.191.383c2.9714 0 3.8374-1.125 3.8374-2.529V9.0266H4.3541v3.5876Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/jeep.svg b/assets/lib/simple-icons/icons/jeep.svg
index ed7bd87e..e2bbcaef 100644
--- a/assets/lib/simple-icons/icons/jeep.svg
+++ b/assets/lib/simple-icons/icons/jeep.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Jeep icon</title><path d="M20.056 12.325c-.021 1.07.21 1.637 1.09 1.637.882 0 1.008-.965 1.008-1.7 0-.734-.168-1.447-1.091-1.447-.567 0-.986.44-1.007 1.51m-1.784 4.47v-7.24h1.805v.826c.065-.14.11-.236.251-.406.122-.147.462-.566 1.364-.566.902 0 2.308.63 2.308 2.853 0 1.72-.84 2.98-2.287 2.98-.797 0-1.154-.278-1.364-.441a1.098 1.098 0 0 1-.251-.252v2.245h-1.826M16.03 11.55c0-.525-.294-1.028-.966-1.028-.65 0-.88.461-.88 1.028zm-1.091-2.203c1.531 0 2.874.587 2.874 3.294h-3.63c0 .86.357 1.217.986 1.217.63 0 .84-.504.84-.504h1.783c0 .776-1.07 1.826-2.685 1.805-1.847 0-2.749-1.364-2.749-2.77s.797-3.042 2.58-3.042m-4.741 2.203c0-.525-.293-1.028-.965-1.028-.65 0-.881.461-.881 1.028zM9.106 9.346c1.532 0 2.874.587 2.874 3.294H8.35c0 .86.357 1.217.987 1.217.629 0 .839-.504.839-.504h1.783c0 .776-1.07 1.826-2.685 1.805-1.847 0-2.749-1.364-2.749-2.77s.798-3.042 2.58-3.042m-4.972-2.14h1.952v5.12c0 .88-.378 2.727-3.085 2.727-2.706 0-3-1.72-3-2.686v-.944h1.888v.923c0 .567.378 1.091 1.091 1.091.714 0 1.154-.398 1.154-1.07V7.206Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Jeep</title><path d="M4.13 7.21h1.949v5.114c0 .88-.378 2.725-3.082 2.725C.293 15.05 0 13.331 0 12.367v-.944h1.886v.923c0 .565.378 1.09 1.09 1.09.713 0 1.153-.399 1.153-1.07V7.21zm4.212 4.34c0-.567.23-1.028.88-1.028.671 0 .964.503.964 1.027H8.342zm.755-2.202c-1.782 0-2.579 1.635-2.579 3.04 0 1.404.902 2.766 2.746 2.766 1.614.021 2.683-1.027 2.683-1.802h-1.782s-.21.502-.838.502c-.629 0-.985-.356-.985-1.215h3.626c0-2.704-1.341-3.29-2.871-3.29m5.072 2.2c0-.566.23-1.027.88-1.027.671 0 .964.503.964 1.027H14.17zm.754-2.2c-1.781 0-2.578 1.634-2.578 3.038 0 1.405.902 2.767 2.746 2.767 1.614.021 2.683-1.027 2.683-1.802h-1.782s-.21.502-.838.502-.986-.356-.986-1.215h3.626c0-2.704-1.34-3.29-2.87-3.29m5.11 2.975c.022-1.068.441-1.508 1.007-1.508.922 0 1.09.712 1.09 1.446 0 .733-.126 1.697-1.006 1.697s-1.11-.565-1.09-1.635m.042 4.465v-2.243c.075.1.118.148.251.252.21.163.566.44 1.363.44 1.446 0 2.284-1.257 2.284-2.976 0-2.222-1.404-2.85-2.305-2.85-.901 0-1.24.418-1.362.565-.141.17-.187.266-.252.405v-.824h-1.803v7.231h1.824zm3.166-.838v.592h.104v-.234h.082c.056 0 .095.007.117.02.037.022.055.067.055.135v.047l.002.02.002.006.001.006h.098l-.004-.007a.572.572 0 0 1-.006-.075v-.044c0-.03-.011-.06-.032-.092a.144.144 0 0 0-.103-.057.234.234 0 0 0 .086-.029c.039-.025.058-.064.058-.117 0-.074-.03-.124-.091-.15a.456.456 0 0 0-.162-.02h-.207zm.319.093c.026.015.04.044.04.087 0 .046-.021.076-.062.092a.28.28 0 0 1-.099.014h-.094v-.215h.09c.057 0 .099.008.125.022m.28.587a.523.523 0 0 0 .158-.383.518.518 0 0 0-.158-.38.522.522 0 0 0-.382-.157.518.518 0 0 0-.38.157.518.518 0 0 0-.157.38c0 .15.052.278.156.383a.517.517 0 0 0 .381.159.52.52 0 0 0 .382-.16m-.71-.71c.091-.09.2-.136.328-.136s.238.045.328.136c.09.09.135.2.135.328 0 .13-.045.24-.134.33a.444.444 0 0 1-.329.137.443.443 0 0 1-.328-.136.454.454 0 0 1-.134-.33.45.45 0 0 1 .135-.329"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/jekyll.svg b/assets/lib/simple-icons/icons/jekyll.svg
index 4e13fa04..869225ce 100644
--- a/assets/lib/simple-icons/icons/jekyll.svg
+++ b/assets/lib/simple-icons/icons/jekyll.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Jekyll icon</title><path d="M8.073 24c-.348 0-.689-.063-1.02-.189-1.375-.525-2.104-2.02-1.726-3.402l-.015-.006.09-.226L12.399 2.01c.105-.27.057-.91.006-1.267-.016-.085-.016-.161.008-.24l.008-.023.006-.015V.458l.009-.019c.108-.292.45-.439 1.008-.439.673 0 1.602.21 2.551.573.797.307 1.523.689 2.033 1.075.602.45.842.854.707 1.2l-.031.045-.016.015c-.045.061-.09.12-.15.165-.314.271-.764.735-.84.945l-7.063 18.421-.016-.006c-.494.948-1.457 1.557-2.543 1.561H8.07l.003.006zm-2.187-3.718l-.02.05c-.447 1.201.162 2.557 1.364 3.018.271.105.551.154.837.154.971 0 1.83-.585 2.188-1.5l.027-.061 6.959-18.09c.146-.39.84-1.02.979-1.14l.016-.016c.012-.015.02-.015.02-.03 0-.06-.061-.27-.557-.645-.479-.36-1.154-.72-1.904-1.005-.868-.328-1.768-.539-2.368-.539-.39 0-.524.082-.545.126v.04c.016.104.147 1.035-.034 1.515l-6.962 18.12v.003zm8.95-11.507s-.964 1.109-1.843 1.509c-.88.398-1.529.293-2.32.756-.789.461-1.188 1.103-1.188 1.103L6.27 20.505c-.348.944.168 2.05 1.125 2.42.96.369 2.04-.12 2.412-1.056l5.029-13.094zM9.905 18.76c.104-.041.225 0 .266.105.042.104 0 .222-.105.264-.104.043-.225 0-.266-.104-.042-.097 0-.216.105-.265zm-1.014-1.802c-.152.068-.334 0-.397-.155-.07-.152 0-.334.154-.397.154-.07.335 0 .398.153.074.15.008.314-.155.39v.009zm.286-1.096c-.123-.288 0-.623.287-.758.285-.124.615 0 .75.285.121.289 0 .624-.285.757-.3.126-.629 0-.765-.285l.013.001zm2.426-2.258c.153-.074.335 0 .398.15.07.154 0 .336-.153.399-.155.07-.337 0-.399-.155-.074-.152 0-.334.154-.397v.003zm-1.293-1.379c.105-.042.226 0 .266.105.043.104 0 .226-.104.266-.104.042-.226 0-.265-.104-.044-.106.006-.227.103-.267zM13.681 1.14c.1-.261.993-.162 1.995.226.999.384 1.729.909 1.63 1.17-.104.264-.997.164-1.996-.221-1.005-.385-1.734-.91-1.632-1.176h.003z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Jekyll</title><path d="M8.073 24c-.348 0-.689-.063-1.02-.189-1.375-.525-2.104-2.02-1.726-3.402l-.015-.006.09-.226L12.399 2.01c.105-.27.057-.91.006-1.267-.016-.085-.016-.161.008-.24l.008-.023.006-.015V.458l.009-.019c.108-.292.45-.439 1.008-.439.673 0 1.602.21 2.551.573.797.307 1.523.689 2.033 1.075.602.45.842.854.707 1.2l-.031.045-.016.015c-.045.061-.09.12-.15.165-.314.271-.764.735-.84.945l-7.063 18.421-.016-.006c-.494.948-1.457 1.557-2.543 1.561H8.07l.003.006zm-2.187-3.718l-.02.05c-.447 1.201.162 2.557 1.364 3.018.271.105.551.154.837.154.971 0 1.83-.585 2.188-1.5l.027-.061 6.959-18.09c.146-.39.84-1.02.979-1.14l.016-.016c.012-.015.02-.015.02-.03 0-.06-.061-.27-.557-.645-.479-.36-1.154-.72-1.904-1.005-.868-.328-1.768-.539-2.368-.539-.39 0-.524.082-.545.126v.04c.016.104.147 1.035-.034 1.515l-6.962 18.12v.003zm8.95-11.507s-.964 1.109-1.843 1.509c-.88.398-1.529.293-2.32.756-.789.461-1.188 1.103-1.188 1.103L6.27 20.505c-.348.944.168 2.05 1.125 2.42.96.369 2.04-.12 2.412-1.056l5.029-13.094zM9.905 18.76c.104-.041.225 0 .266.105.042.104 0 .222-.105.264-.104.043-.225 0-.266-.104-.042-.097 0-.216.105-.265zm-1.014-1.802c-.152.068-.334 0-.397-.155-.07-.152 0-.334.154-.397.154-.07.335 0 .398.153.074.15.008.314-.155.39v.009zm.286-1.096c-.123-.288 0-.623.287-.758.285-.124.615 0 .75.285.121.289 0 .624-.285.757-.3.126-.629 0-.765-.285l.013.001zm2.426-2.258c.153-.074.335 0 .398.15.07.154 0 .336-.153.399-.155.07-.337 0-.399-.155-.074-.152 0-.334.154-.397v.003zm-1.293-1.379c.105-.042.226 0 .266.105.043.104 0 .226-.104.266-.104.042-.226 0-.265-.104-.044-.106.006-.227.103-.267zM13.681 1.14c.1-.261.993-.162 1.995.226.999.384 1.729.909 1.63 1.17-.104.264-.997.164-1.996-.221-1.005-.385-1.734-.91-1.632-1.176h.003z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/jellyfin.svg b/assets/lib/simple-icons/icons/jellyfin.svg
new file mode 100644
index 00000000..5242d8ed
--- /dev/null
+++ b/assets/lib/simple-icons/icons/jellyfin.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Jellyfin</title><path d="M12 .002C8.826.002-1.398 18.537.16 21.666c1.56 3.129 22.14 3.094 23.682 0C25.384 18.573 15.177 0 12 0zm7.76 18.949c-1.008 2.028-14.493 2.05-15.514 0C3.224 16.9 9.92 4.755 12.003 4.755c2.081 0 8.77 12.166 7.759 14.196zM12 9.198c-1.054 0-4.446 6.15-3.93 7.189.518 1.04 7.348 1.027 7.86 0 .511-1.027-2.874-7.19-3.93-7.19z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/jenkins.svg b/assets/lib/simple-icons/icons/jenkins.svg
index 0e2c5e9f..3a604d1e 100644
--- a/assets/lib/simple-icons/icons/jenkins.svg
+++ b/assets/lib/simple-icons/icons/jenkins.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Jenkins icon</title><path d="M2.873 24h-.975c-.025-.066-.049-.131-.07-.197-.215-.666-.594-1.49-.692-2.154-.146-.984.78-1.039 1.374-1.465.915-.66 1.635-1.025 2.627-1.621.295-.178 1.182-.623 1.281-.828.201-.408-.345-.982-.49-1.301-.225-.506-.345-.936-.376-1.434-.824-.131-1.455-.627-1.844-1.185-.63-.925-1.066-2.635-.525-3.936.045-.103.254-.305.285-.463.06-.309-.105-.72-.121-1.049-.06-1.692.285-3.15 1.426-3.66.463-1.84 2.113-2.453 3.673-3.367.581-.342 1.224-.562 1.89-.807 2.372-.877 6.028-.712 7.995.783.836.633 2.176 1.971 2.656 2.939 1.262 2.555 1.17 6.826.287 9.935-.121.421-.291 1.032-.533 1.533-.168.349-.689 1.05-.625 1.36.064.314 1.189 1.17 1.432 1.395.434.422 1.26.975 1.324 1.5.07.557-.248 1.336-.41 1.875-.217.721-.436 1.441-.654 2.131H2.871l.002.016zm11.104-3.541c-.545-.299-1.361-.621-2.065-.756-.869-.164-.779 1.188-.75 1.994.03.643.361 1.316.511 1.744.075.197.089.41.255.449.3.068 1.29-.326 1.575-.479.6-.328 1.064-.844 1.574-1.189.016-.17.016-.34.031-.508-.301-.148-.645-.258-1.096-.277.314-.15.75-.15 1.035-.332l.016-.193c-.496-.031-.689-.254-1.021-.436l-.065-.017zm7.455 2.936c.193-.619.359-1.221.465-1.752.059-.287.215-.918.178-1.176-.059-.459-.684-.799-1.004-1.086-.584-.525-.951-.975-1.561-1.469-.248.375-.779.615-.982.914 1.447-.689 1.709 2.625 1.141 3.689.09.33.391.451.514.736l-.086.166h1.289c.014 0 .031 0 .045.014l.001-.036zm-6.635-.012c-.049-.074-.1-.135-.15-.209l-.301.195h.451v.014zm2.771 0c.008-.209.018-.404.029-.598-.529.029-.824-.48-1.195-.527-.324-.045-.6.361-1.02.195-.096.105-.184.227-.285.316.154.18.295.375.424.584h.816c.014-.164.135-.285.299-.285.166 0 .285.121.285.27h.66l-.013.045zm2.116 0c-.314-.479-.947-.898-1.68-.555l-.031.541h1.711v.014zm-8.51 0l-.105-.344c-.225-.721-.359-1.26-.405-1.68-.914-.436-1.875-.871-2.654-1.426-.15-.105-1.109-1.35-1.23-1.305-1.739.676-3.359 1.859-4.814 2.984.256.557.48 1.141.69 1.74h8.505l.013.031zm8.265-2.113c-.029-.512-.164-1.561-.48-1.74-.66-.391-1.846.779-2.34.943.045.15.135.271.15.48.285-.074.645-.029.898.092-.299.029-.629.029-.824.164-.074.195.016.48-.029.764.689.197 1.5.303 2.385.332.164-.227.225-.645.211-1.082l.029.047zm-4.08-.36c-.045.375.045.51.119.943 1.26.391 1.035-1.74-.135-.959l.016.016zM8.761 19.5c-.45.457 1.271 1.082 1.814 1.115 0-.291.165-.564.135-.771-.649-.117-1.502-.041-1.945-.346l-.004.002zm5.565.215c0 .043-.061.029-.068.064.58.451 1.014.545 1.803.51.354-.262.67-.563 1.043-.807-.855.074-1.932.607-2.775.229l-.003.004zm3.42-17.727c-1.605-.906-4.35-1.591-6.076-.731-1.38.692-3.27 1.841-3.899 3.292.6 1.402-.166 2.686-.226 4.109-.018.758.36 1.42.391 2.243-.2.338-.825.38-1.26.356-.146-.729-.401-1.549-1.155-1.631-1.064-.115-1.845.765-1.891 1.684-.06 1.079.834 2.864 2.086 2.745.488-.046.608-.541 1.139-.541.285.57-.445.75-.523 1.155-.016.105.059.511.104.705.233.944.744 2.159 1.245 2.88.635.9 1.884 1.051 3.229 1.141.24-.525 1.125-.48 1.706-.346-.691-.27-1.336-.945-1.875-1.529-.615-.676-1.23-1.41-1.261-2.28 1.155 1.604 2.1 2.999 4.201 3.704 1.59.525 3.449-.254 4.664-1.109.51-.359.811-.93 1.17-1.439 1.35-1.936 1.98-4.71 1.846-7.395-.061-1.111-.061-2.221-.436-2.955-.389-.781-1.695-1.471-2.475-.781-.15-.764.629-1.229 1.545-.959-.66-.855-1.336-1.859-2.266-2.385l.017.067zm-4.164 12.908c.615 1.544 2.725 1.363 4.506 1.323-.084.194-.256.435-.465.515-.57.232-2.146.408-2.938-.012-.506-.271-.824-.873-1.102-1.227-.137-.172-.795-.608-.012-.609l.011.01zm.164-.871c.893.465 2.52.518 3.732.48.066.268.066.594.068.914-1.551.08-3.387-.304-3.795-1.395h-.005zm6.676-.585c-.473.9-1.145 1.897-2.539 1.928-.023-.284-.045-.735 0-.904 1.064-.103 1.727-.646 2.543-1.017l-.004-.007zm-.649-.667c-1.02.66-2.154 1.375-3.824 1.21-.352-.31-.486-1.001-.141-1.458.182.313.061.885.57.969.945.166 2.039-.578 2.73-.84.42-.712-.045-.975-.42-1.432-.781-.931-1.83-2.1-1.801-3.51.314-.225.346.345.391.449.404.961 1.424 2.176 2.174 3 .18.211.48.391.51.525.092.389-.254.854-.209 1.109l.02-.022zm-13.44-.675c-.314-.184-.393-.99-.768-1.01-.535-.03-.438 1.049-.436 1.679-.37-.329-.435-1.364-.164-1.89-.308-.15-.445.165-.618.285.22-1.59 2.34-.734 1.989.96l-.003-.024zM4.714 5.994c-.685.756-.54 2.174-.459 3.188 1.244-.785 2.898.06 2.883 1.395.595-.016.223-.744.115-1.215-.353-1.529.592-3.188.041-4.59-1.064.083-1.939.519-2.578 1.214l-.002.008zm9.12 1.113c.307.562.404 1.148.84 1.57.195.191.574.424.387.951-.045.121-.365.391-.551.45-.674.195-2.254.03-1.721-.81.563.015 1.314.359 1.732-.045-.314-.525-.885-1.53-.674-2.13l-.013.014zm6.199-.013h.068c.33.668.6 1.375 1.004 1.965-.27.629-2.053 1.19-2.023.057.389-.17 1.049-.035 1.395-.25-.193-.556-.48-1.006-.434-1.771l-.01-.001zm-6.928-1.617c-1.422-.33-2.131.592-2.56 1.553-.384-.094-.231-.615-.135-.883.255-.701 1.28-1.633 2.119-1.506.359.057.848.386.576.834v.002zM9.643 1.592c-1.56.44-3.56 1.574-4.2 2.974.495-.07.84-.321 1.33-.351.186-.016.428.074.641.015.424-.104.78-1.065 1.102-1.409.311-.346.685-.497.941-.811.166-.09.408-.074.42-.33-.074-.075-.15-.135-.233-.105v.017z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Jenkins</title><path d="M2.872 24h-.975a3.866 3.866 0 01-.07-.197c-.215-.666-.594-1.49-.692-2.154-.146-.984.78-1.039 1.374-1.465.915-.66 1.635-1.025 2.627-1.62.295-.179 1.182-.624 1.281-.829.201-.408-.345-.982-.49-1.3-.225-.507-.345-.937-.376-1.435-.824-.13-1.455-.627-1.844-1.185-.63-.925-1.066-2.635-.525-3.936.045-.103.254-.305.285-.463.06-.308-.105-.72-.12-1.048-.06-1.692.284-3.15 1.425-3.66.463-1.84 2.113-2.453 3.673-3.367.58-.342 1.224-.562 1.89-.807 2.372-.877 6.027-.712 7.994.783.836.633 2.176 1.97 2.656 2.939 1.262 2.555 1.17 6.825.287 9.934-.12.421-.29 1.032-.533 1.533-.168.35-.689 1.05-.625 1.36.064.314 1.19 1.17 1.432 1.395.434.422 1.26.975 1.324 1.5.07.557-.248 1.336-.41 1.875-.217.721-.436 1.441-.654 2.131H2.87zm11.104-3.54c-.545-.3-1.361-.622-2.065-.757-.87-.164-.78 1.188-.75 1.994.03.643.36 1.316.51 1.744.076.197.09.41.256.449.3.068 1.29-.326 1.575-.479.6-.328 1.064-.844 1.574-1.189.016-.17.016-.34.03-.508a2.648 2.648 0 00-1.095-.277c.314-.15.75-.15 1.035-.332l.016-.193c-.496-.03-.69-.254-1.021-.436zm7.454 2.935a17.78 17.78 0 00.465-1.752c.06-.287.215-.918.178-1.176-.059-.459-.684-.799-1.004-1.086-.584-.525-.95-.975-1.56-1.469-.249.375-.78.615-.983.914 1.447-.689 1.71 2.625 1.141 3.69.09.329.391.45.514.735l-.086.166h1.29c.013 0 .03 0 .044.014zm-6.634-.012c-.05-.074-.1-.135-.15-.209l-.301.195h.45zm2.77 0c.008-.209.018-.404.03-.598-.53.029-.825-.48-1.196-.527-.324-.045-.6.361-1.02.195-.095.105-.183.227-.284.316.154.18.295.375.424.584h.815c.014-.164.135-.285.3-.285.165 0 .284.121.284.27h.66zm2.116 0c-.314-.479-.947-.898-1.68-.555l-.03.541h1.71zm-8.51 0l-.104-.344c-.225-.72-.36-1.26-.405-1.68-.914-.436-1.875-.87-2.654-1.426-.15-.105-1.109-1.35-1.23-1.305-1.739.676-3.359 1.86-4.814 2.984.256.557.48 1.141.69 1.74h8.505zm8.265-2.113c-.029-.512-.164-1.56-.48-1.74-.66-.39-1.846.78-2.34.943.045.15.135.271.15.48.285-.074.645-.029.898.092-.299.03-.629.03-.824.164-.074.195.016.48-.029.764.69.197 1.5.303 2.385.332.164-.227.225-.645.211-1.082zm-4.08-.36c-.044.375.046.51.12.943 1.26.391 1.034-1.74-.135-.959zM8.76 19.5c-.45.457 1.27 1.082 1.814 1.115 0-.29.165-.564.135-.77-.65-.118-1.502-.042-1.945-.347zm5.565.215c0 .043-.061.03-.068.064.58.451 1.014.545 1.802.51.354-.262.67-.563 1.043-.807-.855.074-1.931.607-2.774.23zm3.42-17.726c-1.606-.906-4.35-1.591-6.076-.731-1.38.692-3.27 1.84-3.899 3.292.6 1.402-.166 2.686-.226 4.109-.018.757.36 1.42.391 2.242-.2.338-.825.38-1.26.356-.146-.729-.4-1.549-1.155-1.63-1.064-.116-1.845.764-1.89 1.683-.06 1.08.833 2.864 2.085 2.745.488-.046.608-.54 1.139-.54.285.57-.445.75-.523 1.154-.016.105.06.511.104.705.233.944.744 2.16 1.245 2.88.635.9 1.884 1.051 3.229 1.141.24-.525 1.125-.48 1.706-.346-.691-.27-1.336-.945-1.875-1.529-.615-.676-1.23-1.41-1.261-2.28 1.155 1.604 2.1 3 4.2 3.704 1.59.525 3.45-.254 4.664-1.109.51-.359.811-.93 1.17-1.439 1.35-1.936 1.98-4.71 1.846-7.394-.06-1.111-.06-2.221-.436-2.955-.389-.781-1.695-1.471-2.475-.781-.15-.764.63-1.23 1.545-.96-.66-.854-1.336-1.858-2.266-2.384zM13.58 14.896c.615 1.544 2.724 1.363 4.505 1.323-.084.194-.256.435-.465.515-.57.232-2.145.408-2.937-.012-.506-.27-.824-.873-1.102-1.227-.137-.172-.795-.608-.012-.609zm.164-.87c.893.464 2.52.517 3.731.48.066.267.066.593.068.913-1.55.08-3.386-.304-3.794-1.395h-.005zm6.675-.586c-.473.9-1.145 1.897-2.539 1.928-.023-.284-.045-.735 0-.904 1.064-.103 1.727-.646 2.543-1.017zm-.649-.667c-1.02.66-2.154 1.375-3.824 1.21-.351-.31-.485-1-.14-1.458.181.313.06.885.57.97.944.165 2.038-.579 2.73-.84.42-.713-.046-.976-.42-1.433-.782-.93-1.83-2.1-1.802-3.51.314-.224.346.346.391.45.404.96 1.424 2.175 2.174 3 .18.21.48.39.51.524.092.39-.254.854-.209 1.11zm-13.439-.675c-.314-.184-.393-.99-.768-1.01-.535-.03-.438 1.05-.436 1.68-.37-.33-.435-1.365-.164-1.89-.308-.15-.445.164-.618.284.22-1.59 2.34-.734 1.99.96zM4.713 5.995c-.685.756-.54 2.174-.459 3.188 1.244-.785 2.898.06 2.883 1.394.595-.016.223-.744.115-1.215-.353-1.528.592-3.187.041-4.59-1.064.084-1.939.52-2.578 1.215zm9.12 1.113c.307.562.404 1.148.84 1.57.195.19.574.424.387.95-.045.121-.365.391-.551.45-.674.195-2.254.03-1.721-.81.563.015 1.314.36 1.732-.045-.314-.524-.885-1.53-.674-2.13zm6.198-.013h.068c.33.668.6 1.375 1.004 1.965-.27.628-2.053 1.19-2.023.057.39-.17 1.05-.035 1.395-.25-.193-.556-.48-1.006-.434-1.771zm-6.927-1.617c-1.422-.33-2.131.592-2.56 1.553-.384-.094-.231-.615-.135-.883.255-.701 1.28-1.633 2.119-1.506.359.057.848.386.576.834zM9.642 1.593c-1.56.44-3.56 1.574-4.2 2.974.495-.07.84-.321 1.33-.351.186-.016.428.074.641.015.424-.104.78-1.065 1.102-1.41.31-.345.685-.496.94-.81.167-.09.409-.074.42-.33-.073-.075-.15-.135-.232-.105v.017z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/jenkinsx.svg b/assets/lib/simple-icons/icons/jenkinsx.svg
index a7cc9264..e7648912 100644
--- a/assets/lib/simple-icons/icons/jenkinsx.svg
+++ b/assets/lib/simple-icons/icons/jenkinsx.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Jenkins X icon</title><path d="M11.9988 3.4123c-.0652 0-.1328 0-.198.0024-1.7862.041-3.5242.5914-3.954 1.3566-1.7138.3259-3.1573 1.4314-3.9442 2.9304l-2.298-2.426-.1183 1.3977C1.31 6.35.4773 5.1286.0235 4.3778c-.1231.4442.2728 3.8864.3814 4.3306.1062.4369.8255 3.4398 1.376 3.389.0772-.0289.2244-.6348.4078-1.178l1.2601 2.344c.5866 2.3414 2.4863 4.1736 4.8616 4.666-.0507.2897-.0531.5866-.0338.8425.0507.6372.3017 1.6535 1.0428 1.7983a.8484.8484 0 00.3814-.0145c.4803-.128 1.021-.3982 1.5087-.6976.1255.058.263.0941.4103.0941h.7628a.973.973 0 00.4104-.0917c.4851.2994 1.0283.5673 1.5062.6977a.8482.8482 0 00.3814.0144c.741-.1448.9921-1.161 1.0428-1.7983.0193-.2535.017-.5528-.0338-.8425 2.3753-.4924 4.275-2.3246 4.8616-4.666l1.26-2.344c.1835.5432.3332 1.1467.408 1.178.5504.0508 1.2697-2.9521 1.376-3.389.1085-.4466.5044-3.8912.3813-4.333-.4538.7508-1.289 1.9746-1.4652 2.2956l-.1183-1.3976-2.298 2.426c-.7894-1.499-2.2329-2.6046-3.9443-2.9305-.4297-.7652-2.1677-1.3156-3.954-1.3566-.0651-.0024-.1303-.0024-.198-.0024zm0 .7483c1.9142.0169 3.8888.5962 3.7294 1.0283l-1.3445 3.6184c-.099.2631-.2317.5117-.5118.5117H10.1304c-.2824 0-.4152-.2486-.5117-.5117L8.2693 5.1865c-.1593-.4297 1.8153-1.0114 3.7295-1.026zM7.7697 5.3144a.3416.3416 0 00.0168.0531L9.1311 8.986c.169.4538.4538.8472.9921.8472h3.7512c.5383 0 .8231-.3934.992-.8472l1.3446-3.6185c.0073-.0169.0121-.0362.017-.053 2.281.5165 3.9997 2.566 3.9997 4.9967v1.4193c0 2.8146-2.0228 5.1754-4.6877 5.7065-.1086-.2366-.2704-.4345-.5045-.5552-.2776-.1448-.5842-.1328-.8714-.0217-.3018.1158-.6035.2775-.886.4345-.1424.0772-.2848.1593-.4248.239a.9548.9548 0 00-.4731-.1256h-.7628a.955.955 0 00-.4732.1255c-.14-.082-.2824-.1617-.4248-.239-.2824-.1569-.5817-.3186-.8859-.4344-.2872-.111-.5938-.1207-.8714.0217-.2341.1207-.3959.321-.5045.5552-2.6625-.531-4.6878-2.8919-4.6878-5.704v-1.4218c0-2.4308 1.7163-4.4802 3.9999-4.9968zm-7.389.4031L1.788 8.2931l.2583-1.948 1.6221 1.8563a5.6213 5.6213 0 00-.4103 2.1073v1.4218c0 .0821.0024.1618.0048.2438L1.8894 9.657l-.2245 1.4797C1.0011 9.2201.6535 7.7742.3808 5.7175zm23.2337 0c-.2679 2.0567-.6155 3.5026-1.2793 5.4192l-.227-1.4797-1.3734 2.3173c.0024-.082.0048-.1617.0048-.2438v-1.4218a5.5759 5.5759 0 00-.4128-2.1073l1.6222-1.8562.2582 1.948zM8.2694 9.8308c-.5432 0-1.038.2197-1.3929.577a1.9644 1.9644 0 00-.577 1.3952c0 .543.2198 1.038.577 1.3952.3549.3573.8473.577 1.3928.577.5456 0 1.038-.2197 1.3953-.577a1.9645 1.9645 0 00.5769-1.3952c0-.5432-.2221-1.038-.577-1.3952a1.9645 1.9645 0 00-1.3952-.577zm7.4612 0c-.5455 0-1.038.2197-1.3952.577a1.9644 1.9644 0 00-.5769 1.3952c0 .543.2221 1.038.577 1.3952.3572.3573.8496.577 1.3951.577.5432 0 1.038-.2197 1.3929-.577a1.9645 1.9645 0 00.577-1.3952c0-.5432-.2198-1.038-.577-1.3952-.3549-.3573-.8473-.577-1.3929-.577zm-7.4613.2559c.4756 0 .9028.1907 1.2142.502.3114.3115.502.7411.502 1.2143 0 .473-.193.9028-.502 1.2142a1.707 1.707 0 01-1.2142.502 1.7112 1.7112 0 01-1.2141-.502 1.7113 1.7113 0 01-.5022-1.2142c0-.4732.1908-.9028.5022-1.2142a1.7112 1.7112 0 011.2141-.5021zm7.4613 0c.4732 0 .9029.1907 1.2142.502.3114.3115.5022.7411.5022 1.2143 0 .473-.1908.9028-.5022 1.2142a1.707 1.707 0 01-1.2142.502 1.707 1.707 0 01-1.2141-.502 1.7113 1.7113 0 01-.5021-1.2142c0-.4732.1931-.9028.502-1.2142a1.707 1.707 0 011.2142-.5021zm-7.4613.3935c-.7314 0-1.3228.5913-1.3228 1.3228 0 .7314.5914 1.3228 1.3228 1.3228.7314 0 1.3252-.5914 1.3252-1.3228 0-.7315-.5938-1.3228-1.3252-1.3228zm7.4613 0c-.7314 0-1.3227.5913-1.3227 1.3228 0 .7314.5913 1.3228 1.3227 1.3228.7314 0 1.3229-.5914 1.3229-1.3228 0-.7315-.5915-1.3228-1.3229-1.3228zm-9.023 4.328l-.2535.2125c.35.3983 1.3445 1.3035 3.167 1.3035H14.3813c1.82 0 2.817-.9052 3.167-1.3035l-.2534-.2125c-.309.3525-1.2166 1.1877-2.9136 1.1877H9.6211c-1.6994 0-2.6046-.8352-2.9136-1.1877zm2.6914 2.4773c.0766-.0012.161.0146.2535.0501.2897.111.6662.3138 1.12.572a.9495.9495 0 00-.1206.466v.0627c-.2149-.0676-.507-.14-.8811-.2269.6204.391.432.2897.8497.4973-.4635.2752-.2535.1376-.898.6228.3935-.1304.7024-.2366.9294-.3283a.9562.9562 0 00.1496.4997c-.3693.2196-.8159.449-1.2335.56-.8393.2244-1.182-2.76-.169-2.7754zm5.2015 0c1.0115.0154.6708 2.9998-.1685 2.7754-.4152-.111-.8642-.3404-1.236-.56a.9854.9854 0 00.1497-.4708c.2173.0845.5045.1835.857.2994-.6252-.4683-.449-.3573-.8546-.5963v-.0483c.3621-.1786.21-.099.8063-.4755-.3331.0773-.601.1449-.8063.2052v-.041a.9494.9494 0 00-.1206-.466c.4562-.2582.8303-.461 1.12-.572.0923-.0355.1765-.0513.253-.0501"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Jenkins X</title><path d="M11.9988 3.4123c-.0652 0-.1328 0-.198.0024-1.7862.041-3.5242.5914-3.954 1.3566-1.7138.3259-3.1573 1.4314-3.9442 2.9304l-2.298-2.426-.1183 1.3977C1.31 6.35.4773 5.1286.0235 4.3778c-.1231.4442.2728 3.8864.3814 4.3306.1062.4369.8255 3.4398 1.376 3.389.0772-.0289.2244-.6348.4078-1.178l1.2601 2.344c.5866 2.3414 2.4863 4.1736 4.8616 4.666-.0507.2897-.0531.5866-.0338.8425.0507.6372.3017 1.6535 1.0428 1.7983a.8484.8484 0 00.3814-.0145c.4803-.128 1.021-.3982 1.5087-.6976.1255.058.263.0941.4103.0941h.7628a.973.973 0 00.4104-.0917c.4851.2994 1.0283.5673 1.5062.6977a.8482.8482 0 00.3814.0144c.741-.1448.9921-1.161 1.0428-1.7983.0193-.2535.017-.5528-.0338-.8425 2.3753-.4924 4.275-2.3246 4.8616-4.666l1.26-2.344c.1835.5432.3332 1.1467.408 1.178.5504.0508 1.2697-2.9521 1.376-3.389.1085-.4466.5044-3.8912.3813-4.333-.4538.7508-1.289 1.9746-1.4652 2.2956l-.1183-1.3976-2.298 2.426c-.7894-1.499-2.2329-2.6046-3.9443-2.9305-.4297-.7652-2.1677-1.3156-3.954-1.3566-.0651-.0024-.1303-.0024-.198-.0024zm0 .7483c1.9142.0169 3.8888.5962 3.7294 1.0283l-1.3445 3.6184c-.099.2631-.2317.5117-.5118.5117H10.1304c-.2824 0-.4152-.2486-.5117-.5117L8.2693 5.1865c-.1593-.4297 1.8153-1.0114 3.7295-1.026zM7.7697 5.3144a.3416.3416 0 00.0168.0531L9.1311 8.986c.169.4538.4538.8472.9921.8472h3.7512c.5383 0 .8231-.3934.992-.8472l1.3446-3.6185c.0073-.0169.0121-.0362.017-.053 2.281.5165 3.9997 2.566 3.9997 4.9967v1.4193c0 2.8146-2.0228 5.1754-4.6877 5.7065-.1086-.2366-.2704-.4345-.5045-.5552-.2776-.1448-.5842-.1328-.8714-.0217-.3018.1158-.6035.2775-.886.4345-.1424.0772-.2848.1593-.4248.239a.9548.9548 0 00-.4731-.1256h-.7628a.955.955 0 00-.4732.1255c-.14-.082-.2824-.1617-.4248-.239-.2824-.1569-.5817-.3186-.8859-.4344-.2872-.111-.5938-.1207-.8714.0217-.2341.1207-.3959.321-.5045.5552-2.6625-.531-4.6878-2.8919-4.6878-5.704v-1.4218c0-2.4308 1.7163-4.4802 3.9999-4.9968zm-7.389.4031L1.788 8.2931l.2583-1.948 1.6221 1.8563a5.6213 5.6213 0 00-.4103 2.1073v1.4218c0 .0821.0024.1618.0048.2438L1.8894 9.657l-.2245 1.4797C1.0011 9.2201.6535 7.7742.3808 5.7175zm23.2337 0c-.2679 2.0567-.6155 3.5026-1.2793 5.4192l-.227-1.4797-1.3734 2.3173c.0024-.082.0048-.1617.0048-.2438v-1.4218a5.5759 5.5759 0 00-.4128-2.1073l1.6222-1.8562.2582 1.948zM8.2694 9.8308c-.5432 0-1.038.2197-1.3929.577a1.9644 1.9644 0 00-.577 1.3952c0 .543.2198 1.038.577 1.3952.3549.3573.8473.577 1.3928.577.5456 0 1.038-.2197 1.3953-.577a1.9645 1.9645 0 00.5769-1.3952c0-.5432-.2221-1.038-.577-1.3952a1.9645 1.9645 0 00-1.3952-.577zm7.4612 0c-.5455 0-1.038.2197-1.3952.577a1.9644 1.9644 0 00-.5769 1.3952c0 .543.2221 1.038.577 1.3952.3572.3573.8496.577 1.3951.577.5432 0 1.038-.2197 1.3929-.577a1.9645 1.9645 0 00.577-1.3952c0-.5432-.2198-1.038-.577-1.3952-.3549-.3573-.8473-.577-1.3929-.577zm-7.4613.2559c.4756 0 .9028.1907 1.2142.502.3114.3115.502.7411.502 1.2143 0 .473-.193.9028-.502 1.2142a1.707 1.707 0 01-1.2142.502 1.7112 1.7112 0 01-1.2141-.502 1.7113 1.7113 0 01-.5022-1.2142c0-.4732.1908-.9028.5022-1.2142a1.7112 1.7112 0 011.2141-.5021zm7.4613 0c.4732 0 .9029.1907 1.2142.502.3114.3115.5022.7411.5022 1.2143 0 .473-.1908.9028-.5022 1.2142a1.707 1.707 0 01-1.2142.502 1.707 1.707 0 01-1.2141-.502 1.7113 1.7113 0 01-.5021-1.2142c0-.4732.1931-.9028.502-1.2142a1.707 1.707 0 011.2142-.5021zm-7.4613.3935c-.7314 0-1.3228.5913-1.3228 1.3228 0 .7314.5914 1.3228 1.3228 1.3228.7314 0 1.3252-.5914 1.3252-1.3228 0-.7315-.5938-1.3228-1.3252-1.3228zm7.4613 0c-.7314 0-1.3227.5913-1.3227 1.3228 0 .7314.5913 1.3228 1.3227 1.3228.7314 0 1.3229-.5914 1.3229-1.3228 0-.7315-.5915-1.3228-1.3229-1.3228zm-9.023 4.328l-.2535.2125c.35.3983 1.3445 1.3035 3.167 1.3035H14.3813c1.82 0 2.817-.9052 3.167-1.3035l-.2534-.2125c-.309.3525-1.2166 1.1877-2.9136 1.1877H9.6211c-1.6994 0-2.6046-.8352-2.9136-1.1877zm2.6914 2.4773c.0766-.0012.161.0146.2535.0501.2897.111.6662.3138 1.12.572a.9495.9495 0 00-.1206.466v.0627c-.2149-.0676-.507-.14-.8811-.2269.6204.391.432.2897.8497.4973-.4635.2752-.2535.1376-.898.6228.3935-.1304.7024-.2366.9294-.3283a.9562.9562 0 00.1496.4997c-.3693.2196-.8159.449-1.2335.56-.8393.2244-1.182-2.76-.169-2.7754zm5.2015 0c1.0115.0154.6708 2.9998-.1685 2.7754-.4152-.111-.8642-.3404-1.236-.56a.9854.9854 0 00.1497-.4708c.2173.0845.5045.1835.857.2994-.6252-.4683-.449-.3573-.8546-.5963v-.0483c.3621-.1786.21-.099.8063-.4755-.3331.0773-.601.1449-.8063.2052v-.041a.9494.9494 0 00-.1206-.466c.4562-.2582.8303-.461 1.12-.572.0923-.0355.1765-.0513.253-.0501"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/jest.svg b/assets/lib/simple-icons/icons/jest.svg
index ea2bdf76..3c36b3bb 100644
--- a/assets/lib/simple-icons/icons/jest.svg
+++ b/assets/lib/simple-icons/icons/jest.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 24 24"><title>Jest icon</title><path d="M22.251 11.82a3.117 3.117 0 0 0-2.328-3.01L22.911 0H8.104L11.1 8.838a3.116 3.116 0 0 0-2.244 2.988c0 1.043.52 1.967 1.313 2.536a8.279 8.279 0 0 1-1.084 1.244 8.14 8.14 0 0 1-2.55 1.647c-.834-.563-1.195-1.556-.869-2.446a3.11 3.11 0 0 0-.91-6.08 3.117 3.117 0 0 0-3.113 3.113c0 .848.347 1.626.903 2.182-.048.097-.097.195-.146.299-.465.959-.993 2.043-1.195 3.259-.403 2.432.257 4.384 1.849 5.489A5.093 5.093 0 0 0 5.999 24c1.827 0 3.682-.917 5.475-1.807 1.279-.632 2.599-1.292 3.898-1.612.48-.118.98-.187 1.508-.264 1.07-.153 2.175-.312 3.168-.89a4.482 4.482 0 0 0 2.182-3.091c.174-.994 0-1.994-.444-2.87.298-.48.465-1.042.465-1.647zm-1.355 0c0 .965-.785 1.75-1.75 1.75a1.753 1.753 0 0 1-1.085-3.126l.007-.007c.056-.042.118-.084.18-.125 0 0 .008 0 .008-.007.028-.014.055-.035.083-.05.007 0 .014-.006.021-.006.028-.014.063-.028.097-.042.035-.014.07-.027.098-.041.007 0 .013-.007.02-.007.028-.007.056-.021.084-.028.007 0 .02-.007.028-.007.034-.007.062-.014.097-.02h.007l.104-.022c.007 0 .02 0 .028-.007.028 0 .055-.007.083-.007h.035c.035 0 .07-.007.111-.007h.09c.028 0 .05 0 .077.007h.014c.055.007.111.014.167.028a1.766 1.766 0 0 1 1.396 1.723zM10.043 1.39h10.93l-2.509 7.4c-.104.02-.208.055-.312.09l-2.64-5.385-2.648 5.35c-.104-.034-.216-.055-.327-.076l-2.494-7.38zm4.968 9.825a3.083 3.083 0 0 0-.938-1.668l1.438-2.904 1.452 2.967c-.43.43-.743.98-.868 1.605H15.01zm-3.481-1.098c.034-.007.062-.014.097-.02h.02c.029-.008.056-.008.084-.015h.028c.028 0 .049-.007.076-.007h.271c.028 0 .049.007.07.007.014 0 .02 0 .035.007.027.007.048.007.076.014.007 0 .014 0 .028.007l.097.02h.007c.028.008.056.015.083.029.007 0 .014.007.028.007.021.007.049.014.07.027.007 0 .014.007.02.007.028.014.056.021.084.035h.007a.374.374 0 0 1 .09.049h.007c.028.014.056.034.084.048.007 0 .007.007.013.007.028.014.05.035.077.049l.007.007c.083.062.16.132.236.201l.007.007a1.747 1.747 0 0 1 .48 1.209 1.752 1.752 0 0 1-3.502 0 1.742 1.742 0 0 1 1.32-1.695zm-6.838-.049c.966 0 1.751.786 1.751 1.751s-.785 1.751-1.75 1.751-1.752-.785-1.752-1.75.786-1.752 1.751-1.752zm16.163 6.025a3.07 3.07 0 0 1-1.508 2.133c-.758.438-1.689.577-2.669.716a17.29 17.29 0 0 0-1.64.291c-1.445.355-2.834 1.05-4.182 1.717-1.724.854-3.35 1.66-4.857 1.66a3.645 3.645 0 0 1-2.154-.688c-1.529-1.056-1.453-3.036-1.272-4.12.167-1.015.632-1.966 1.077-2.877.028-.055.049-.104.077-.16.152.056.312.098.479.126-.264 1.473.486 2.994 1.946 3.745l.264.139.284-.104c1.216-.431 2.342-1.133 3.336-2.071a9.334 9.334 0 0 0 1.445-1.716c.16.027.32.034.48.034a3.117 3.117 0 0 0 3.008-2.327h1.167a3.109 3.109 0 0 0 3.01 2.327c.576 0 1.11-.16 1.57-.43.18.52.236 1.063.139 1.605z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Jest</title><path d="M22.251 11.82a3.117 3.117 0 0 0-2.328-3.01L22.911 0H8.104L11.1 8.838a3.116 3.116 0 0 0-2.244 2.988c0 1.043.52 1.967 1.313 2.536a8.279 8.279 0 0 1-1.084 1.244 8.14 8.14 0 0 1-2.55 1.647c-.834-.563-1.195-1.556-.869-2.446a3.11 3.11 0 0 0-.91-6.08 3.117 3.117 0 0 0-3.113 3.113c0 .848.347 1.626.903 2.182-.048.097-.097.195-.146.299-.465.959-.993 2.043-1.195 3.259-.403 2.432.257 4.384 1.849 5.489A5.093 5.093 0 0 0 5.999 24c1.827 0 3.682-.917 5.475-1.807 1.279-.632 2.599-1.292 3.898-1.612.48-.118.98-.187 1.508-.264 1.07-.153 2.175-.312 3.168-.89a4.482 4.482 0 0 0 2.182-3.091c.174-.994 0-1.994-.444-2.87.298-.48.465-1.042.465-1.647zm-1.355 0c0 .965-.785 1.75-1.75 1.75a1.753 1.753 0 0 1-1.085-3.126l.007-.007c.056-.042.118-.084.18-.125 0 0 .008 0 .008-.007.028-.014.055-.035.083-.05.007 0 .014-.006.021-.006.028-.014.063-.028.097-.042.035-.014.07-.027.098-.041.007 0 .013-.007.02-.007.028-.007.056-.021.084-.028.007 0 .02-.007.028-.007.034-.007.062-.014.097-.02h.007l.104-.022c.007 0 .02 0 .028-.007.028 0 .055-.007.083-.007h.035c.035 0 .07-.007.111-.007h.09c.028 0 .05 0 .077.007h.014c.055.007.111.014.167.028a1.766 1.766 0 0 1 1.396 1.723zM10.043 1.39h10.93l-2.509 7.4c-.104.02-.208.055-.312.09l-2.64-5.385-2.648 5.35c-.104-.034-.216-.055-.327-.076l-2.494-7.38zm4.968 9.825a3.083 3.083 0 0 0-.938-1.668l1.438-2.904 1.452 2.967c-.43.43-.743.98-.868 1.605H15.01zm-3.481-1.098c.034-.007.062-.014.097-.02h.02c.029-.008.056-.008.084-.015h.028c.028 0 .049-.007.076-.007h.271c.028 0 .049.007.07.007.014 0 .02 0 .035.007.027.007.048.007.076.014.007 0 .014 0 .028.007l.097.02h.007c.028.008.056.015.083.029.007 0 .014.007.028.007.021.007.049.014.07.027.007 0 .014.007.02.007.028.014.056.021.084.035h.007a.374.374 0 0 1 .09.049h.007c.028.014.056.034.084.048.007 0 .007.007.013.007.028.014.05.035.077.049l.007.007c.083.062.16.132.236.201l.007.007a1.747 1.747 0 0 1 .48 1.209 1.752 1.752 0 0 1-3.502 0 1.742 1.742 0 0 1 1.32-1.695zm-6.838-.049c.966 0 1.751.786 1.751 1.751s-.785 1.751-1.75 1.751-1.752-.785-1.752-1.75.786-1.752 1.751-1.752zm16.163 6.025a3.07 3.07 0 0 1-1.508 2.133c-.758.438-1.689.577-2.669.716a17.29 17.29 0 0 0-1.64.291c-1.445.355-2.834 1.05-4.182 1.717-1.724.854-3.35 1.66-4.857 1.66a3.645 3.645 0 0 1-2.154-.688c-1.529-1.056-1.453-3.036-1.272-4.12.167-1.015.632-1.966 1.077-2.877.028-.055.049-.104.077-.16.152.056.312.098.479.126-.264 1.473.486 2.994 1.946 3.745l.264.139.284-.104c1.216-.431 2.342-1.133 3.336-2.071a9.334 9.334 0 0 0 1.445-1.716c.16.027.32.034.48.034a3.117 3.117 0 0 0 3.008-2.327h1.167a3.109 3.109 0 0 0 3.01 2.327c.576 0 1.11-.16 1.57-.43.18.52.236 1.063.139 1.605z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/jet.svg b/assets/lib/simple-icons/icons/jet.svg
index 3c5c6970..f3fbf7f1 100644
--- a/assets/lib/simple-icons/icons/jet.svg
+++ b/assets/lib/simple-icons/icons/jet.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>JET icon</title><path d="M15.778 19.044c3.048-.498 4.755-.73 8.219-2.395L24 13.81c-3.228 3.225-9.249 5.146-15.07 5.098-.75-.01-1.948.017-2.246-.024 3.1.49 6.18.556 9.094.159M3.836 15.764c.75.003 1.805-.014 2.403-.394.535-.467.93-1.106 1.247-1.828l1.545-4.697-2.157.013-1.199 3.664c-.225 1.161-.943 1.566-1.483 1.483l-1.354-.097-.515 1.676 1.513.18m13.29-.104l1.672-5.074h2.44l.543-1.665-5.907-.01-.556 1.662H16.6l-1.73 5.077 2.257.01m-3.859-.024l.564-1.718h-3.204l.297-.909h2.668l.543-1.641h-2.661l.262-.81h3.08l.57-1.713-5.267.027-2.205 6.757 5.353.007m1.245-9.809c1.883-.072 3.743.083 5.969.277-2.192-.809-5.7-1.407-8.344-1.407-4.344 0-8.644 1.054-12.117 2.675L0 11.07c3.321-3.387 9.114-5.298 14.513-5.243"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>JET</title><path d="M15.778 19.044c3.048-.498 4.755-.73 8.219-2.395L24 13.81c-3.228 3.225-9.249 5.146-15.07 5.098-.75-.01-1.948.017-2.246-.024 3.1.49 6.18.556 9.094.159M3.836 15.764c.75.003 1.805-.014 2.403-.394.535-.467.93-1.106 1.247-1.828l1.545-4.697-2.157.013-1.199 3.664c-.225 1.161-.943 1.566-1.483 1.483l-1.354-.097-.515 1.676 1.513.18m13.29-.104l1.672-5.074h2.44l.543-1.665-5.907-.01-.556 1.662H16.6l-1.73 5.077 2.257.01m-3.859-.024l.564-1.718h-3.204l.297-.909h2.668l.543-1.641h-2.661l.262-.81h3.08l.57-1.713-5.267.027-2.205 6.757 5.353.007m1.245-9.809c1.883-.072 3.743.083 5.969.277-2.192-.809-5.7-1.407-8.344-1.407-4.344 0-8.644 1.054-12.117 2.675L0 11.07c3.321-3.387 9.114-5.298 14.513-5.243"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/jetbrains.svg b/assets/lib/simple-icons/icons/jetbrains.svg
index a3bd661e..29233481 100644
--- a/assets/lib/simple-icons/icons/jetbrains.svg
+++ b/assets/lib/simple-icons/icons/jetbrains.svg
@@ -1 +1 @@
-<svg role ="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>JetBrains icon</title><path d="M0 0h24v24H0V0zm2.1 21h9v-1.5h-9V21zM3.3 6.9h.3c.7-.1 1.2-.7 1.2-1.5V3H3.7v2.5c0 .4-.1.5-.4.5-.3 0-.5-.1-.6-.3l-.7.6c.3.5.8.7 1.3.6zm5 0V6H6.2v-.6H8v-.9H6.2v-.6h2.1V3H5.1v4h3.2zm1.3 0h1.1v-3h1.2V3H8.5v.9h1.2v3zm-4 3.8c0-.5-.3-.9-.8-.9.4-.1.6-.5.6-.9 0-.2-.1-.5-.2-.7-.3-.3-.7-.4-1.1-.4h-2v3.9h2c.9 0 1.5-.4 1.5-1zm-2.5-2h.7c.3 0 .5.1.5.3 0 .3-.2.4-.5.4h-.7v-.7zm0 2.1v-.7h.8c.4 0 .6.1.5.3 0 .2-.2.4-.5.4h-.8zm7.4-3L9 11.3l-.6-.9c.5-.2.8-.7.8-1.2 0-.3-.1-.7-.3-.9-.4-.4-.9-.5-1.3-.5H5.7v3.9h1.1v-1.2h.5l.8 1.2H9.9l.3-.7h1.5l.3.7h1.2l-1.6-4h-1.1zm-3 1.9h-.7v-.9h.7c.3 0 .6.1.6.5 0 .2-.2.4-.6.4zm3.9.5h-.8l.4-1.1.4 1.1zm1.9 1.5h1.1V7.8h-1.1v3.9zm4-1.8l-1.6-2.1h-1v3.9h1.1V9.6l1.7 2.2h.9v-4h-1.1v2.1zm3.1-.6c-.5-.1-.7-.2-.7-.4 0-.1.1-.2.4-.2.4 0 .8.2 1.1.4l.6-.8c-.5-.4-1-.5-1.6-.5-.9 0-1.5.6-1.5 1.3 0 .8.6 1 1.5 1.2.5.1.7.2.7.4s-.2.3-.5.3c-.5 0-.9-.2-1.3-.5l-.6.7c.5.4 1.2.6 1.8.6 1 0 1.6-.5 1.6-1.3 0-.7-.6-1-1.5-1.2z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>JetBrains</title><path d="M7.529 8.753h-.705v.941h.706c.376 0 .565-.188.565-.471-.001-.329-.236-.47-.566-.47zm-3.2.282c0-.235-.188-.329-.471-.329h-.705v.706h.659c.329-.047.517-.141.517-.377zm6.212 1.13h.847l-.423-1.083zm-6.588 0h-.847v.706h.847c.329 0 .518-.141.518-.376s-.189-.33-.518-.33zM0 0v24h24V0H0zm8.424 3.012h3.435v.941h-1.176v2.965H9.6V3.953H8.424v-.941zm-.236 0v.894h-2.07v.612H8v.847H6.118v.612h2.118v.941H5.082l-.047-3.906h3.153zm-2.635 7.623c0 .659-.565 1.082-1.459 1.082H2.071V7.812h2.023c.471 0 .847.141 1.082.329.142.141.236.377.236.659 0 .471-.235.706-.612.894.471.141.753.424.753.941zM2.682 5.647c.188.235.376.376.612.376.282 0 .424-.188.424-.565V2.965H4.8v2.494c0 .471-.141.847-.376 1.082s-.612.377-1.083.377c-.706.047-1.082-.236-1.364-.612l.705-.659zm8.377 15.341H2.071v-1.506h8.988v1.506zm.894-9.223l-.282-.706h-1.506l-.282.706h-1.13l.02-.047h-.679l-.8-1.176h-.47v1.176H5.741V7.812h1.835c.612 0 .988.141 1.271.424.235.235.329.518.329.894 0 .612-.329.988-.8 1.224l.605.878 1.465-3.419h1.035l1.647 3.953h-1.175zm2.4-.047h-1.082V7.812h1.082v3.906zm3.953 0h-.941L15.718 9.6v2.165h-1.082V7.812h.988l1.6 2.071V7.812h1.082v3.906zm1.929.047a2.488 2.488 0 0 1-1.835-.612l.612-.706c.376.329.8.471 1.271.471.282 0 .471-.094.471-.282s-.141-.235-.659-.376c-.847-.188-1.459-.424-1.459-1.224 0-.706.565-1.271 1.506-1.271.659 0 1.176.188 1.6.518l-.565.753c-.377-.236-.753-.377-1.083-.377-.282 0-.376.094-.376.235 0 .188.141.235.659.376.894.188 1.459.471 1.459 1.224-.001.8-.612 1.271-1.601 1.271z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/jetpackcompose.svg b/assets/lib/simple-icons/icons/jetpackcompose.svg
new file mode 100644
index 00000000..cf38e44c
--- /dev/null
+++ b/assets/lib/simple-icons/icons/jetpackcompose.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Jetpack Compose</title><path d="M12.135.003a2.577 2.577 0 0 0-1.42.344L2.55 5.06a2.577 2.577 0 0 0-.953.967l3.957 2.17a1.765 1.765 0 0 1 .603-.588l4.951-2.86a1.761 1.761 0 0 1 1.76 0l4.951 2.86a1.753 1.753 0 0 1 .526.46l3.921-2.265a2.577 2.577 0 0 0-.816-.744L13.291.347a2.577 2.577 0 0 0-1.152-.34Zm-.145 4.912a1.36 1.36 0 0 0-.68.182L6.36 7.953a1.345 1.345 0 0 0-.454.435l1.92 1.055a1.05 1.05 0 0 1 .31-.275l3.34-1.928a1.054 1.054 0 0 1 1.051 0l3.336 1.928a1.066 1.066 0 0 1 .238.199l.018-.01-.002-.002 1.877-1.08a1.353 1.353 0 0 0-.373-.322l-4.95-2.86a1.357 1.357 0 0 0-.68-.178Zm10.432 1.149-3.92 2.26a1.757 1.757 0 0 1 .2.812v5.715c0 .627-.332 1.21-.88 1.528l-4.95 2.86a1.761 1.761 0 0 1-.64.214v4.524a2.577 2.577 0 0 0 1.059-.313l8.162-4.713a2.577 2.577 0 0 0 1.289-2.23V7.297a2.577 2.577 0 0 0-.318-1.228Zm-20.937.238a2.577 2.577 0 0 0-.227.99v9.43c0 .918.491 1.767 1.293 2.229l8.162 4.713a2.57 2.57 0 0 0 1.225.336v-4.531a1.761 1.761 0 0 1-.833-.235L6.156 16.38a1.765 1.765 0 0 1-.877-1.528V9.136a1.776 1.776 0 0 1 .131-.676Zm16.67 2.223-1.89 1.092a1.058 1.058 0 0 1 .124.46v3.856c0 .378-.2.72-.526.907l-3.336 1.93a1.04 1.04 0 0 1-.295.107v2.17c.152-.027.304-.078.44-.157l4.949-2.859a1.36 1.36 0 0 0 .68-1.18V9.136a1.36 1.36 0 0 0-.147-.607Zm-12.387.13a1.36 1.36 0 0 0-.088.481v5.715a1.36 1.36 0 0 0 .68 1.18l4.95 2.86c.194.112.412.166.627.177v-2.174a1.054 1.054 0 0 1-.46-.123L8.14 14.843a1.054 1.054 0 0 1-.532-.908v-3.853a.99.99 0 0 1 .077-.38l-.034-.013z"/></svg>
diff --git a/assets/lib/simple-icons/icons/jfrog.svg b/assets/lib/simple-icons/icons/jfrog.svg
new file mode 100644
index 00000000..a2fdef51
--- /dev/null
+++ b/assets/lib/simple-icons/icons/jfrog.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>JFrog</title><path d="M10.655 15.631l-1.268.353c.11.32.2.893.2 1.665v3.795h1.421v-4.015c.265-.32.552-.474.86-.474.156 0 .277.033.409.11l.386-1.312a1.05 1.05 0 00-.53-.122 1.22 1.22 0 00-.463.09c-.265.131-.596.43-.805.715 0-.32-.077-.573-.21-.805zM5.76 13.757h-.154v7.676h1.477v-3.398h1.864v-1.268H7.082v-1.764H9.41l.088-.673c-1.4-.1-2.668-.32-3.738-.573zm-3.452 8.7l.684.796c.662-.265 1.49-.86 1.71-1.81.077-.308.1-.506.1-1.51v-6.165H3.308v6.33c0 .828-.032 1.136-.142 1.423-.144.32-.486.695-.86.938zm13.422-3.892c0 1.346-.264 1.92-.871 1.92a.782.782 0 01-.717-.464c-.11-.286-.176-.773-.176-1.434 0-.563.055-.96.143-1.268.11-.353.386-.574.728-.574.254 0 .474.11.606.298.199.265.287.76.287 1.522zm.87 2.206c.465-.551.674-1.225.674-2.195 0-.916-.187-1.544-.617-2.073-.464-.574-1.06-.85-1.831-.85-1.456 0-2.426 1.18-2.426 2.967 0 1.787.96 2.934 2.426 2.934.827.01 1.367-.297 1.775-.783zm4.038-3.177c0 .52-.31.805-.86.805-.497 0-.828-.23-.828-.805 0-.529.31-.838.838-.838.53 0 .85.31.85.838zm2.503-1.213l-.585-.937c-.33.31-.727.485-1.113.485-.177 0-.276-.022-.662-.12a3.282 3.282 0 00-.97-.145c-1.38 0-2.272.75-2.272 1.92 0 .837.375 1.367 1.158 1.576-.32.077-.662.243-.816.43a.79.79 0 00-.166.52c0 .176.044.33.11.463a.68.68 0 00.31.275c.253.1.66.166 1.29.177.33 0 .529.01.595.01.386.023.584.09.739.166.143.089.253.287.253.508 0 .22-.132.44-.341.573-.188.132-.497.188-.894.188-.65 0-1.014-.243-1.014-.695 0-.2.022-.243.066-.364h-1.301c-.055.11-.122.265-.122.573 0 .386.144.717.442 1.004.485.474 1.279.606 2.04.606.838 0 1.654-.198 2.128-.727.298-.331.43-.695.43-1.17 0-.507-.143-.893-.463-1.212-.375-.364-.805-.497-1.632-.508l-.761-.01c-.143 0-.232-.056-.232-.133 0-.154.199-.288.563-.464.11.01.143.01.21.01 1.146 0 1.984-.705 1.984-1.686 0-.375-.11-.662-.32-.927.177.022.232.033.364.033.375 0 .673-.12.982-.419zM5.384 7.085c-1.764.43-2.966 1.279-2.966 2.25 0 .606.463 1.157 1.224 1.587a2.155 2.155 0 01-.353-1.157c.01-1.004.794-1.941 2.095-2.68zM24 10.889c0-.64-.397-1.224-1.059-1.709.055.2.1.397.1.596 0 1.82-2.548 3.385-6.165 4.036.408.044.827.066 1.268.066 3.23-.01 5.856-1.345 5.856-2.989zm-2.084-.992c0-.673-.574-1.29-1.555-1.798.23.276.353.574.353.883 0 1.62-3.44 2.933-7.698 2.933-4.246 0-7.698-1.312-7.698-2.933 0-.21.055-.408.165-.596-.683.452-1.07.97-1.07 1.522 0 1.753 3.916 3.176 8.747 3.176 4.83 0 8.756-1.445 8.756-3.187zM18.1 9.81c-1.786 1.147-7.279 1.588-9.639.11-1.853-1.158-1.213-3-6.518-7.036-.694-.53.133-1.092.651-.728.518.364.044.453 1.092 1.5 2.117 2.118 2.095.21 2.426.938.706 1.51 2.25 3.032 2.25 3.032 1.555 1.015 2.79 1.235 5.084-.32 1.456-.981.86 1.566 4.423-.275 1.3-.673 1.246-.22 2.569-2.063.55-.76 1.6.585.408.772-.474.078-1.28.596-1.621 1.412-.496 1.224-.287 2.128-1.125 2.658zM8.196 6.7c-.44-.199-.904-.95-1.08-1.246.496-.486.297-1.29.01-1.732-.275-.44-.617-.32-.98-.727-.376-.41.142-1.467.617-.651 1.775 3.055 2.944 1.786 4.39 1.599 1.39-.177 2.624.584 3-1.566.065-.353.407-.43.44.143.033.585.254 1.996 1.015 2.173.76.187 1.378-.177 1.555-.375.176-.2.275-.177.353.33.077.497.275 1.192 1.345.42 2.195-1.566 1.566-2.173 2.426-2.58.485-.232 1.257.518.144 1.08-1.588.805-1.754 1.797-2.757 2.426-1.688 1.059-1.17.044-3.882-.342-1.048-.143-1.38 1.015-2.195.684-1.864-.772-3.177-.618-4.4.364zm5.879-5.657c.066.463.143.452.309.485.165.044.375-.22.375-.463.01-.254-.11-.408-.353-.397-.254.01-.342.132-.331.375zm8.16.827c.2.187.728.066.85-.078.32-.352.33-.562.165-.805-.165-.231-.507-.198-.85.056-.341.253-.275.727-.164.827zm-.143 2.338c-.165.22-.176.386-.055.507.132.132.397.242.585.1.187-.155.187-.376.033-.563-.166-.2-.386-.2-.563-.044zM5.352 1.45c.253.077.374.32.584.044.11-.133.12-.32-.023-.52-.088-.12-.507-.21-.683-.032-.177.177-.01.464.121.508zM.178 1.295c.463.287.76.717 1.114.33.121-.131.264-.363.01-.826C1.117.457.511.325.301.457c-.22.12-.485.618-.121.838zM4.447 3.49c.143.154.397.143.551.055.144-.088.121-.32-.022-.518-.088-.122-.353-.188-.53 0-.176.187-.098.352 0 .463z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/jfrogbintray.svg b/assets/lib/simple-icons/icons/jfrogbintray.svg
new file mode 100644
index 00000000..df73dd08
--- /dev/null
+++ b/assets/lib/simple-icons/icons/jfrogbintray.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>JFrog Bintray</title><path d="M2.617 22.316h18.766V24H2.617zm15.88-12.632l-5.655 5.655V3.249l1.744 1.743L15.79 3.79 12 0 8.21 3.79l1.204 1.203 1.744-1.804v12.15L5.504 9.686H7.97V8H2.617v5.354H4.3v-2.527L12 18.526l7.698-7.699v2.527h1.685V8H16.03v1.684z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/jinja.svg b/assets/lib/simple-icons/icons/jinja.svg
index f517b5ff..cb015ea7 100644
--- a/assets/lib/simple-icons/icons/jinja.svg
+++ b/assets/lib/simple-icons/icons/jinja.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Jinja icon</title><path d="M23.719.668l-.08.039s-4.563 2.175-8.244 2.652c-1.854.24-4.555.481-6.965.62a65.475 65.475 0 01-3.254.117c-.917.005-1.63-.032-1.95-.11a20.19 20.19 0 01-2.4-.732l-.252-.1.346 1.172-.92.809.248.437.44.033 1.052.131.162.514.635.057.318 1.078.092.006s1.338.115 1.762.115c.365 0 .93-.041 1.072-.05l.024.396.287.054v.315l-.799.71.156.028c-.14.01-.227.018-.5.03-.429.017-.934.02-1.203-.018-.586-.086-.709-.086-.709-.086H2.98l-.122.13-.046.446h.152l.055 1.111 2.933-.113-.205 3.682-.02.347-2.242-.127-.02-.761h.538l.057-.42.464-.106.223-.312-2.111-.51-1.705.506.465.388h.166l.025.334.494.028v.763l-.611.157.19.404.105.068v.825h.343v3.296l-.566.086.098 1.247.334.056-.055 2.342 1.803.033-.32-2.303 1.982-.048-.139 1.087-.25 1.032 2.608.033.027-2.28 1.322-.119-.072 1.293-.063.99h1.633l-.053-2.3.176.027.067-1.392h-.243l-.058-.34-.131-1.29.049-1.364h.295v-1.182l-.364.027.04-.806.431-.043.022-.352.172-.025.51-.389-1.827-.375-1.709.379.285.469.239-.02.054-.004.034.442.41-.02.004.674-1.526-.035.053-.877.059-.926v-1.213l.048-1.152 3.485-.178 4.156-.24.033.674-.152 1.949-.063 1.693-1.32-.023-.006-1.018.574-.021.028-.373.27-.041-.012-.057.152-.01.29-.388-2.01-.471-1.987.426.258.45.14-.01v.089h.246v.402l.524.008-.006.856h-.527l-.014.505.187.022-.021.978.394.02-.044 3.615-.524.108.016.423h.176v.985h.289l-.07 1.205-.112 1.314 2.17.057-.069-1.172-.138-.848-.022-.593 1.325-.024-.041 1.002-.008 1.33 1.033.082 1.252-.05.533-.157-.25-.76-.053-1-.08-.583 1.233-.045-.057.742-.006 1.515.738.069.631-.016.416-.13-.187-1.424-.049-.862.25-.027.006-.895.08-.017-.027-.43h-.303l-.049-.527-.023-2.692.222-.006v-.902l.096.014v-.461l-.334-.027.006-.836.57-.051-.033-.362.26-.021-.024-.117.58-.29-2.056-.413-1.881.38.232.432.223-.02.014.077h.203l.011.426.547-.006.035.773-1.671-.012-.211-1.457-.178-.826-.145-1.469.075-.746 3.847-.293.012-1.316.201-.05-.023-.38-.239-.138h-.037l-.357.05-.793.116a62.16 62.16 0 01-1.625.216l-.191.02-.014-.178-.785-.41.006-.275.271-.008.02-.672c.09-.006.352-.024.771-.062.484-.045 1.04-.105 1.361-.18.597-.14 1.452-.281 1.452-.281l.076-.012.408-1.108.805-.234.066-.184 1.78-.492.306-.252-.717-1.564.047-.236.344-.18.297-.906-.252-.223zM14.826 6.73l-.01.526.407.017-.016.32-.789.518-.086.258-1.86.09.01-.184.112-.181.01-.153.001-.228.067-.156.031-.16v-.092l.08-.323 2.043-.252zm-5.181.461l-.043.264.199.234-.014.387.176.27-.047.328.025.035-1.847.074.02-.152-.653-.354-.022-.345.291-.014.028-.598 1.887-.129zm4.015 8.5l1.258.082-.05 1.938.183 1.541-1.34-.047-.05-3.514zm-10.226.084l2.16.112L5.4 17.17v1.219l.137.523-2.09.098-.013-3.235zm15.377.01v3.256l-1.291.094-.051-1.723-.158-1.592 1.5-.035zm-11.495.076l1.538.006.017 2.996-1.43.026-.076-.928-.006-1.047-.043-1.053Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Jinja</title><path d="M23.718.668l-.08.04s-4.563 2.174-8.244 2.651c-1.854.24-4.554.481-6.964.62a65.472 65.472 0 0 1-3.254.117c-.917.005-1.63-.032-1.95-.11a20.19 20.19 0 0 1-2.4-.732l-.252-.1.346 1.172-.92.81.248.436.44.033 1.052.131.162.514.635.057.318 1.078.092.006s1.338.115 1.762.115c.365 0 .93-.04 1.072-.05l.024.396.287.054v.315l-.8.71.157.028c-.14.01-.227.018-.5.03-.43.017-.934.02-1.203-.018-.586-.086-.71-.086-.71-.086H2.98l-.122.13-.046.446h.152l.055 1.111 2.933-.113-.205 3.682-.02.347-2.242-.127-.02-.761h.538l.057-.42.464-.106.223-.312-2.111-.51-1.705.506.465.388h.166l.025.334.494.028v.763l-.611.157.19.404.105.068v.825h.343v3.296l-.566.086.098 1.247.334.056-.055 2.342 1.803.033-.32-2.303 1.982-.048-.14 1.087-.25 1.032 2.609.033.027-2.28 1.322-.12-.072 1.294-.063.99h1.633l-.053-2.3.176.027.067-1.392h-.243l-.058-.34-.131-1.29.049-1.364h.295v-1.182l-.364.027.04-.806.43-.043.023-.352.172-.025.51-.389-1.827-.375-1.71.379.286.469.239-.02.054-.004.034.442.41-.02.004.674-1.526-.035.053-.877.059-.926v-1.213l.048-1.152 3.485-.178 4.155-.24.033.674-.152 1.949-.063 1.693-1.32-.023-.006-1.018.574-.021.028-.373.27-.041-.012-.057.152-.01.29-.388-2.01-.471-1.986.426.258.45.14-.01v.089h.246v.402l.524.008-.006.856h-.527l-.014.505.187.022-.021.978.393.02-.044 3.615-.523.108.016.423h.176v.985h.289l-.07 1.205-.112 1.314 2.17.057-.07-1.172-.138-.848-.022-.593 1.325-.024-.04 1.002-.009 1.33 1.033.082 1.252-.05.533-.157-.25-.76-.053-1-.08-.583 1.233-.045-.057.742-.006 1.515.738.069.631-.016.416-.13-.187-1.424-.049-.862.25-.027.006-.895.08-.017-.027-.43h-.303l-.049-.527-.023-2.692.222-.006v-.902l.096.014v-.461l-.334-.027.006-.836.57-.051-.033-.362.26-.021-.024-.117.58-.29-2.056-.413-1.88.38.231.432.223-.02.014.077h.203l.011.426.547-.006.035.773-1.67-.012-.212-1.457-.178-.826-.145-1.469.075-.746 3.847-.293.012-1.316.201-.05-.023-.38-.239-.138h-.037l-.357.05-.793.116a62.157 62.157 0 0 1-1.625.216l-.19.02-.015-.178-.785-.41.006-.275.271-.008.02-.672c.09-.006.352-.024.771-.062.484-.045 1.04-.105 1.361-.18.597-.14 1.452-.28 1.452-.28l.076-.013.408-1.108.805-.234.066-.184 1.78-.492.306-.252-.717-1.564.047-.236.344-.18.297-.906-.252-.223zM14.825 6.73l-.01.526.407.017-.016.32-.789.518-.086.258-1.86.09.01-.184.112-.18.01-.154.001-.228.067-.156.031-.16v-.092l.08-.323zm-5.18.461l-.043.264.199.234-.014.387.176.27-.047.328.025.035-1.847.074.02-.152-.653-.354-.022-.345.29-.014.029-.598zm4.014 8.5l1.258.082-.05 1.938.183 1.54-1.34-.046-.05-3.514zm-10.225.084l2.16.112L5.4 17.17v1.219l.137.523-2.09.098zm15.376.01v3.256l-1.29.094-.052-1.723-.158-1.592zm-11.494.076l1.538.006.017 2.996-1.43.026-.076-.928-.006-1.047z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/jira.svg b/assets/lib/simple-icons/icons/jira.svg
index 5fa09ad3..417c09c5 100644
--- a/assets/lib/simple-icons/icons/jira.svg
+++ b/assets/lib/simple-icons/icons/jira.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Jira icon</title><path d="M23.323 11.33L13.001 1 12 0 4.225 7.775.67 11.33a.96.96 0 0 0 0 1.347l7.103 7.103L12 24l7.771-7.771.121-.121 3.431-3.431a.945.945 0 0 0 0-1.347zM12 15.551L8.449 12 12 8.453 15.548 12 12 15.551z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Jira</title><path d="M11.571 11.513H0a5.218 5.218 0 0 0 5.232 5.215h2.13v2.057A5.215 5.215 0 0 0 12.575 24V12.518a1.005 1.005 0 0 0-1.005-1.005zm5.723-5.756H5.736a5.215 5.215 0 0 0 5.215 5.214h2.129v2.058a5.218 5.218 0 0 0 5.215 5.214V6.758a1.001 1.001 0 0 0-1.001-1.001zM23.013 0H11.455a5.215 5.215 0 0 0 5.215 5.215h2.129v2.057A5.215 5.215 0 0 0 24 12.483V1.005A1.001 1.001 0 0 0 23.013 0Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/jirasoftware.svg b/assets/lib/simple-icons/icons/jirasoftware.svg
new file mode 100644
index 00000000..9e034082
--- /dev/null
+++ b/assets/lib/simple-icons/icons/jirasoftware.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Jira Software</title><path d="M12.004 0c-2.35 2.395-2.365 6.185.133 8.585l3.412 3.413-3.197 3.198a6.501 6.501 0 0 1 1.412 7.04l9.566-9.566a.95.95 0 0 0 0-1.344L12.004 0zm-1.748 1.74L.67 11.327a.95.95 0 0 0 0 1.344C4.45 16.44 8.22 20.244 12 24c2.295-2.298 2.395-6.096-.08-8.533l-3.47-3.469 3.2-3.2c-1.918-1.955-2.363-4.725-1.394-7.057z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/jitsi.svg b/assets/lib/simple-icons/icons/jitsi.svg
new file mode 100644
index 00000000..1e4a3dcf
--- /dev/null
+++ b/assets/lib/simple-icons/icons/jitsi.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Jitsi</title><path d="M18.948 7.828c-.638-.406-1.527-.346-1.8-.317l-.156.003c-.135-.058.004-.397.041-.753.051-.496-.131-1.177-.461-1.722-.159-.262-.216-.287-.098-.413.869-.928 1.005-1.956.729-2.812-.539-1.675-.648-1.939-.631-1.771.068.683-.084 1.637-.188 2.025-.148.55-.654 1.248-1.979 1.884-.311.149-1.565.74-1.788.998-.276.321-.344.644-.474 1.283-.138.676-.189 1.307-.027 2.03.031.141.063.246.081.329a.017.017 0 0 0-.002-.005c.037.147-.023.234-.105.286a1.455 1.455 0 0 1-.252.08l-.003.001c-.203.032-.398.067-.585.104-1.379.237-4.401.958-3.328 4.704.381 1.271 1.124 2.078 1.554 2.226l.015.005c.071.032.148.06.223.075.008.002.012.124-.004.296l-.011.074c-.06.434-.308 1.104-.673 1.113-.146.004-.79-.386-.972-.505-1.02-.67-1.384-1.048-2.108-1.129-.597-.067-1.939 1.093-1.968 3.549-.035 2.999.806 4.49.83 4.534.623-2.824 1.072-3.1 2.689-4.205.128-.087 1.647 1.191 2.012 1.184 1.827-.034 5.102.083 6.689-3.196.031-.063.549.474.595.473.019-.001 2.788-1.234 3.199-6.899.188-2.587-.536-3.206-1.044-3.529zm-2.172-1.846c.08.327.057.667-.041.947-.178.427-.45.651-.79.627a.812.812 0 0 1-.31-.11c-.378-.221-.583-.786-.422-1.225a.183.183 0 0 0 .01-.02c.042-.112.144-.237.275-.364.269-.238.797-.64.854-.64.072.002.341.443.424.785zm-.004-4.911c.006-.058.153.385.201.539.209.665.181.96.134 1.297-.122.858-.579 1.422-.924 1.766-.541.54-.668.618-.432.191.753-1.361.912-2.641 1.021-3.793zm-4.103 4.186c.097-.239.584-.503.989-.739.418-.244 1.747-.59 2.566-1.669.253-.333-.214 1.915-1.417 3.002-.406.367-1.522.557-2.485 1.242-.099.071.022-1.153.347-1.836zm-.258 1.993c.236-.196.664-.477 2.209-.987.191-.063.177.002.27.457.099.486.197.933 1.207 1.178.072.018-.328.772-.443.871-.225.36-1.415 1.392-1.919 1.294-.345-.067-1.087-.895-1.289-1.352-.145-.328-.405-1.154-.035-1.461zM8.11 11.537c.165-.783.783-1.18.801-1.196.313-.272.919-.518 1.55-.704.095-.025.154-.038.168-.041.39-.08.88-.213 1.204-.246.246-.025.549-.153.798.036.27.328.864.871 1.191.899.111.009.858-.224 2.083-1.321.153-.137.314-.272.484-.398l.049-.036c.376-.273.792-.5 1.244-.6.14-.031-.5.605.048 1.936.359.872 1.351 3.863 1.188 4.342-.097.286-.185.339-.432.225-.692-.321-1.544-1.269-3.181-1.908-1.319-.515-2.412-.503-3.12-.364-1.629.321-2.473 1.03-2.946 1.426-.072.061.701-.245 1.734-.362.936-.106 1.875-.004 3.037.786.742.621.561.573.226.666-1.28.356-3.719 1.092-4.57.968-.88-.129-1.966-2.388-1.556-4.108zm6.849 3.15c-1.028-1.225-2.201-1.604-2.948-1.654-.927-.062-1.594.057-2.226.267-.068.023 3.387-2.469 7.192.489.685.533 1.094.83 1.454 1.066.052.034-.917.29-1.081.336-1.575.261-2.008-.048-2.391-.504zm-.88.249c-.376.135-.903.321-1.477.499a61.891 61.891 0 0 1 1.477-.499zm-7.455 3.411c.06-.601.193-1.146.134-1.753-.001-.012 1.714 1.163 2.179 1.244.076.013-.801.812-1.697 1.188-.307-.04-.641-.428-.616-.679zm-1.882 4.935c-.092-.129-.694-2.51-.527-4.034.23-2.1 1.408-2.844 1.635-2.871.188-.022.56.1.386 2.198-.021.253 1.117 1.04 1.117 1.04-2.322 1.364-2.136 2.391-2.611 3.667zm4.754-2.535c-.117-.005-2.264-1.473-2.192-1.501 2.477-.964 2.656-2.467 2.827-2.849-.02-.032.484-.236 1.17-.491 1.104-.396 2.631-.891 3.158-1.086l.027-.008c.239-.069.249-.024.313.06.19.247.509.412.544.429.47.223 1.076.202 1.09.221.094.136.154 5.536-6.937 5.225zm7.31-2.681c-.021.001-.528-.472-.528-.472s.196-.427.295-.97c.08-.442.12-1.097.12-1.097s2.331-.278 2.435-1.082c.118-.918-.546-2.827-.645-3.139-.042-.132-.621-1.69-.706-2.093-.096-.454.087-1.187.36-1.294.643-.253 1.59.828 1.647 2.401.217 6.03-2.957 7.745-2.978 7.746z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/johndeere.svg b/assets/lib/simple-icons/icons/johndeere.svg
index f028146c..b8391f45 100644
--- a/assets/lib/simple-icons/icons/johndeere.svg
+++ b/assets/lib/simple-icons/icons/johndeere.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>John Deere icon</title><path d="M11.9985 1.1609c-3.457.0002-6.9828.7454-10.2957 2.3475C.5331 6.3093 0 9.1929 0 12.0069c0 2.806.5258 5.6572 1.6956 8.4841 3.3292 1.61 6.8415 2.3481 10.3041 2.3481 3.4644 0 6.9774-.738 10.3029-2.348C23.4723 17.6637 24 14.8127 24 12.0068c0-2.814-.5345-5.6976-1.7034-8.4985-3.3123-1.602-6.8372-2.3473-10.2969-2.3475h-.0006zm0 .916c3.4185 0 6.6966.7568 9.5728 2.1054.9712 2.4297 1.5026 5.0671 1.5026 7.8246 0 2.7508-.5279 5.3856-1.496 7.8096-2.8779 1.3506-6.1578 2.1073-9.5794 2.1073-3.4197 0-6.6996-.7567-9.5775-2.1073-.967-2.424-1.4967-5.0586-1.4967-7.8096 0-2.7574.5304-5.3947 1.502-7.8246 2.8783-1.3487 6.155-2.1055 9.5722-2.1055zm-.0006.687c-3.1279 0-6.2393.6677-9.0219 1.9239-.8997 2.3398-1.3586 4.7996-1.3586 7.319 0 2.5135.4581 4.968 1.3532 7.3066 2.783 1.258 5.8979 1.9227 9.0273 1.9227 3.131 0 6.2453-.6647 9.0279-1.9227l.0041-.003-.0006-.0006c-.6049-.9957-1.4173-1.7997-1.4261-1.8073-.01-.005-.1691-.0544-.1691-.0544-1.7246-.53-2.8551-.9283-3.3548-1.1872-.6876-.3571-1.41-1.2241-1.4895-1.3216-.8061-.0608-1.4729-.0478-2.1145.0299l-.4087.0531c-.7793.1006-1.584.2073-2.3726.0807-.525-.086-1.0346-.2537-1.5749-.4296-.8324-.2726-1.685-.5524-2.6594-.5509H5.421l.0167.0347c.2214.4306 1.0958 1.7369 2.191 2.096.2416.058.4165.1223.4923.1816 0 .0026.4192.8556.5335 1.0862-.6814-.3094-2.789-1.3813-4.4894-3.4504v-.003c0-.0276-.044-.43-.0532-.518 1.0126-.3778 3.2927-.597 3.5496-.6214l.0186-.0018.0083-.0203c.1361-1.1996.4201-2.1597.9524-3.2109.0153-.0317.0245-.0608.0245-.086a.1175.1175 0 0 0-.0132-.052c-.0298-.0566-.1026-.0675-.1057-.0675L6.9946 9.219a222.297 222.297 0 0 0-.1678-.5126c1.1184-.416 2.4974-.8055 3.2867-.9769.1334-.213.1708-.3286.1708-.4678 0-.1181-.0569-.219-.1708-.2963-.5595-.3794-2.3215-.1508-4.104.533-.004-.0073-.0037-.0092-.009-.0168.3701-.2769 1.0317-.688 1.5223-.916l.0191-.0107-.006-.0185c-.133-.4509-1.0038-.796-1.1017-.8311.002-.0153.0039-.0252.0054-.037.8852-.0605 1.4727.3536 1.652.6488l.009.0143.0173-.0053c.1136-.0367.5135-.1639.9464-.2151l.0257-.0012-.0072-.0263c-.1422-.7583-.8658-1.2647-1.1125-1.4172.007-.0123.0093-.017.0162-.0257.8546.0661 1.6439.8023 1.8217 1.4244l.0047.0167.018.0018c.2294.008.5074.0332.6936.0645l.0192.0036.0071-.0161a1.3133 1.3133 0 0 0 .1034-.5174c0-.5602-.3164-1.1606-.7056-1.5403.0076-.0107.011-.0207.0209-.0299 1.1227.426 1.4082 1.2351 1.4082 1.9884 0 .5273-.1398 1.0297-.23 1.3497l-.0376.1326 1.7649-.2133c-.1682.213-.5309.5922-1.2547.9918 0-.0038-.7462-.095-.7462-.095l-.0192-.003-.0065.0192c-.0501.154-.487 1.5335-.4894 2.5476 0 .376.1068.6676.3167.8687.374.3599.9933.3801 1.4262.3633 1.8404-.0673 3.2765.0457 4.2731.3406l.0592.0161.009-.0137c.0619-.0953.1105-.272.1105-.5061 0-.4443-.1781-1.1067-.7762-1.8558.0065-.0053.0067-.0092.0144-.0149.099.0547 1.7136.9716 1.9292 2.3558-.0378.0146-.7737.315-.7737.315l.0239.0238c.6822.7143.9176 1.5776 1.1065 2.2686.1503.5476.3298.897.5676 1.1024.2757.2378 1.32.7366 1.6335.883.2607.3705.7092 1.0643 1.0343 1.6019a20.315 20.315 0 0 0 1.067-6.5077c0-2.5195-.46-4.9795-1.3586-7.3191-2.7818-1.2561-5.896-1.9239-9.0237-1.9239Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>John Deere</title><path d="M11.9985 1.1609c-3.457.0002-6.9828.7454-10.2957 2.3475C.5331 6.3093 0 9.1929 0 12.0069c0 2.806.5258 5.6572 1.6956 8.4841 3.3292 1.61 6.8415 2.3481 10.3041 2.3481 3.4644 0 6.9774-.738 10.3029-2.348C23.4723 17.6637 24 14.8127 24 12.0068c0-2.814-.5345-5.6976-1.7034-8.4985-3.3123-1.602-6.8372-2.3473-10.2969-2.3475h-.0006zm0 .916c3.4185 0 6.6966.7568 9.5728 2.1054.9712 2.4297 1.5026 5.0671 1.5026 7.8246 0 2.7508-.5279 5.3856-1.496 7.8096-2.8779 1.3506-6.1578 2.1073-9.5794 2.1073-3.4197 0-6.6996-.7567-9.5775-2.1073-.967-2.424-1.4967-5.0586-1.4967-7.8096 0-2.7574.5304-5.3947 1.502-7.8246 2.8783-1.3487 6.155-2.1055 9.5722-2.1055zm-.0006.687c-3.1279 0-6.2393.6677-9.0219 1.9239-.8997 2.3398-1.3586 4.7996-1.3586 7.319 0 2.5135.4581 4.968 1.3532 7.3066 2.783 1.258 5.8979 1.9227 9.0273 1.9227 3.131 0 6.2453-.6647 9.0279-1.9227l.0041-.003-.0006-.0006c-.6049-.9957-1.4173-1.7997-1.4261-1.8073-.01-.005-.1691-.0544-.1691-.0544-1.7246-.53-2.8551-.9283-3.3548-1.1872-.6876-.3571-1.41-1.2241-1.4895-1.3216-.8061-.0608-1.4729-.0478-2.1145.0299l-.4087.0531c-.7793.1006-1.584.2073-2.3726.0807-.525-.086-1.0346-.2537-1.5749-.4296-.8324-.2726-1.685-.5524-2.6594-.5509H5.421l.0167.0347c.2214.4306 1.0958 1.7369 2.191 2.096.2416.058.4165.1223.4923.1816 0 .0026.4192.8556.5335 1.0862-.6814-.3094-2.789-1.3813-4.4894-3.4504v-.003c0-.0276-.044-.43-.0532-.518 1.0126-.3778 3.2927-.597 3.5496-.6214l.0186-.0018.0083-.0203c.1361-1.1996.4201-2.1597.9524-3.2109.0153-.0317.0245-.0608.0245-.086a.1175.1175 0 0 0-.0132-.052c-.0298-.0566-.1026-.0675-.1057-.0675L6.9946 9.219a222.297 222.297 0 0 0-.1678-.5126c1.1184-.416 2.4974-.8055 3.2867-.9769.1334-.213.1708-.3286.1708-.4678 0-.1181-.0569-.219-.1708-.2963-.5595-.3794-2.3215-.1508-4.104.533-.004-.0073-.0037-.0092-.009-.0168.3701-.2769 1.0317-.688 1.5223-.916l.0191-.0107-.006-.0185c-.133-.4509-1.0038-.796-1.1017-.8311.002-.0153.0039-.0252.0054-.037.8852-.0605 1.4727.3536 1.652.6488l.009.0143.0173-.0053c.1136-.0367.5135-.1639.9464-.2151l.0257-.0012-.0072-.0263c-.1422-.7583-.8658-1.2647-1.1125-1.4172.007-.0123.0093-.017.0162-.0257.8546.0661 1.6439.8023 1.8217 1.4244l.0047.0167.018.0018c.2294.008.5074.0332.6936.0645l.0192.0036.0071-.0161a1.3133 1.3133 0 0 0 .1034-.5174c0-.5602-.3164-1.1606-.7056-1.5403.0076-.0107.011-.0207.0209-.0299 1.1227.426 1.4082 1.2351 1.4082 1.9884 0 .5273-.1398 1.0297-.23 1.3497l-.0376.1326 1.7649-.2133c-.1682.213-.5309.5922-1.2547.9918 0-.0038-.7462-.095-.7462-.095l-.0192-.003-.0065.0192c-.0501.154-.487 1.5335-.4894 2.5476 0 .376.1068.6676.3167.8687.374.3599.9933.3801 1.4262.3633 1.8404-.0673 3.2765.0457 4.2731.3406l.0592.0161.009-.0137c.0619-.0953.1105-.272.1105-.5061 0-.4443-.1781-1.1067-.7762-1.8558.0065-.0053.0067-.0092.0144-.0149.099.0547 1.7136.9716 1.9292 2.3558-.0378.0146-.7737.315-.7737.315l.0239.0238c.6822.7143.9176 1.5776 1.1065 2.2686.1503.5476.3298.897.5676 1.1024.2757.2378 1.32.7366 1.6335.883.2607.3705.7092 1.0643 1.0343 1.6019a20.315 20.315 0 0 0 1.067-6.5077c0-2.5195-.46-4.9795-1.3586-7.3191-2.7818-1.2561-5.896-1.9239-9.0237-1.9239Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/joomla.svg b/assets/lib/simple-icons/icons/joomla.svg
index 758c1d26..b6c0421e 100644
--- a/assets/lib/simple-icons/icons/joomla.svg
+++ b/assets/lib/simple-icons/icons/joomla.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Joomla icon</title><path d="M16.719 14.759L14.22 17.26l-2.37 2.37-.462.466c-1.368 1.365-3.297 1.83-5.047 1.397-.327 1.424-1.604 2.49-3.13 2.49C1.438 23.983 0 22.547 0 20.772c0-1.518 1.055-2.789 2.469-3.123-.446-1.76.016-3.705 1.396-5.08l.179-.18 2.37 2.37-.184.181c-.769.779-.769 2.024 0 2.789.771.78 2.022.78 2.787 0l.465-.465 2.367-2.371 2.502-2.506 2.368 2.372zm.924 6.652c-1.822.563-3.885.12-5.328-1.318l-.18-.185 2.365-2.369.18.184c.771.768 2.018.768 2.787 0 .765-.765.769-2.01-.004-2.781l-.466-.465-2.365-2.37-2.502-2.503 2.37-2.369 2.499 2.505 2.367 2.37.464.464c1.365 1.36 1.846 3.278 1.411 5.021 1.56.224 2.759 1.56 2.759 3.18 0 1.784-1.439 3.21-3.209 3.21-1.545 0-2.851-1.096-3.135-2.565l-.013-.009zM6.975 9.461l2.508-2.505 2.37-2.369.462-.461C13.74 2.7 15.772 2.251 17.58 2.79c.212-1.561 1.555-2.775 3.179-2.775 1.772 0 3.211 1.437 3.211 3.209 0 1.631-1.216 2.978-2.79 3.186.519 1.799.068 3.816-1.35 5.234l-.182.184-2.369-2.369.184-.184c.769-.77.769-2.016 0-2.783-.766-.766-2.011-.768-2.781.003l-.462.461-2.37 2.369-2.505 2.502-2.37-2.366zm-2.653 2.647l-.461-.462C2.43 10.215 1.986 8.17 2.529 6.358 1.1 6.029.03 4.754.03 3.224.03 1.454 1.47.015 3.24.015c1.596 0 2.92 1.166 3.17 2.691 1.73-.405 3.626.065 4.979 1.415l.184.185-2.37 2.37-.183-.181c-.77-.765-2.016-.765-2.785 0-.771.781-.77 2.025-.005 2.79l.465.466 2.37 2.369 2.505 2.505-2.367 2.37-2.51-2.505-2.371-2.37v-.012z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Joomla</title><path d="M16.719 14.759L14.22 17.26l-2.37 2.37-.462.466c-1.368 1.365-3.297 1.83-5.047 1.397-.327 1.424-1.604 2.49-3.13 2.49C1.438 23.983 0 22.547 0 20.772c0-1.518 1.055-2.789 2.469-3.123-.446-1.76.016-3.705 1.396-5.08l.179-.18 2.37 2.37-.184.181c-.769.779-.769 2.024 0 2.789.771.78 2.022.78 2.787 0l.465-.465 2.367-2.371 2.502-2.506 2.368 2.372zm.924 6.652c-1.822.563-3.885.12-5.328-1.318l-.18-.185 2.365-2.369.18.184c.771.768 2.018.768 2.787 0 .765-.765.769-2.01-.004-2.781l-.466-.465-2.365-2.37-2.502-2.503 2.37-2.369 2.499 2.505 2.367 2.37.464.464c1.365 1.36 1.846 3.278 1.411 5.021 1.56.224 2.759 1.56 2.759 3.18 0 1.784-1.439 3.21-3.209 3.21-1.545 0-2.851-1.096-3.135-2.565l-.013-.009zM6.975 9.461l2.508-2.505 2.37-2.369.462-.461C13.74 2.7 15.772 2.251 17.58 2.79c.212-1.561 1.555-2.775 3.179-2.775 1.772 0 3.211 1.437 3.211 3.209 0 1.631-1.216 2.978-2.79 3.186.519 1.799.068 3.816-1.35 5.234l-.182.184-2.369-2.369.184-.184c.769-.77.769-2.016 0-2.783-.766-.766-2.011-.768-2.781.003l-.462.461-2.37 2.369-2.505 2.502-2.37-2.366zm-2.653 2.647l-.461-.462C2.43 10.215 1.986 8.17 2.529 6.358 1.1 6.029.03 4.754.03 3.224.03 1.454 1.47.015 3.24.015c1.596 0 2.92 1.166 3.17 2.691 1.73-.405 3.626.065 4.979 1.415l.184.185-2.37 2.37-.183-.181c-.77-.765-2.016-.765-2.785 0-.771.781-.77 2.025-.005 2.79l.465.466 2.37 2.369 2.505 2.505-2.367 2.37-2.51-2.505-2.371-2.37v-.012z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/joplin.svg b/assets/lib/simple-icons/icons/joplin.svg
new file mode 100644
index 00000000..f7753a3c
--- /dev/null
+++ b/assets/lib/simple-icons/icons/joplin.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Joplin</title><path d="m20.969 0h-8.904c-.084 0-.152.068-.152.152v2.827c0 .095.077.172.172.172h1.221c.493 0 .894.38.937.863v13.378h-.001l-.017.363-.05.282c-.011.044-.02.089-.033.132-.081.258-.208.497-.384.708-.007.007-.015.014-.021.021-.054.063-.11.123-.172.18-.063.057-.13.11-.2.16-.498.353-1.169.508-1.918.436-.955-.089-1.903-.523-2.669-1.22-.765-.696-1.242-1.558-1.34-2.427-.089-.778.144-1.462.655-1.927.002-.001.003-.002.004-.003.02-.018.041-.033.062-.05.366-.307.842-.493 1.387-.544.006 0 .012-.001.017-.002l.298-.014.35.017c.008 0 .016.002.024.003.499.05.993.199 1.462.425.01 0 .022.003.036.011.143.079.17-.005.174-.061v-4.256c0-.122-.085-.23-.203-.256-2.527-.556-5.005.022-6.754 1.615-1.528 1.389-2.267 3.395-2.027 5.502.213 1.876 1.176 3.679 2.712 5.076 1.497 1.362 3.402 2.213 5.368 2.399.271.025.543.038.809.038 1.877 0 3.619-.644 4.905-1.814 1.218-1.109 1.948-2.632 2.055-4.288l.01-10.866h.001v-2.955c.011-.513.429-.926.945-.926h1.221c.095 0 .172-.077.172-.172v-2.827c0-.084-.068-.152-.152-.152z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/jordan.svg b/assets/lib/simple-icons/icons/jordan.svg
new file mode 100644
index 00000000..1ca8b5f4
--- /dev/null
+++ b/assets/lib/simple-icons/icons/jordan.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Jordan</title><path d="M13.55 2.194v-.075c0-.35.113-.663.338-.938.225-.275.512-.412.862-.412s.663.112.938.337.425.525.45.9c.025.375-.088.688-.338.938s-.55.375-.9.375l-.225.075.075.112-.075.413-.15 1.2c.05.05.075.1.075.15l-.15.75c-.05.1-.1.175-.15.225l-.075.3a22.59 22.59 0 01-.45 1.575v.15c-.05.25-.087.45-.112.6-.025.15-.113.4-.263.75-.1.2-.1.525 0 .975l.075.075c0 .15.063.325.188.525s.187.375.187.525c.05 1-.025 1.85-.225 2.55l.15.45c.6.3.775.625.525.975l.375.15c.6.3 1.025.562 1.275.787.25.225.5.463.75.713.2.05.35.125.45.225l.225.075c1.05.7 2.1 1.55 3.15 2.55l.3.225v.075l-.075.15.225.15h.075c.15.1.25.15.3.15h.075c.05 0 .1-.025.15-.075l.15-.075c.1-.1.2-.175.3-.225h.3c.05 0 .05.025 0 .075l-.3.15-.375.45h.525l.525.075c.15-.05.275-.1.375-.15l.375-.225c.15-.05.3 0 .45.15h.075c.05.05.025.125-.075.225l-.9.825c-.25.2-.475.325-.675.375l-.975.675c-.05.05-.1.05-.15 0l-.225-.3-.15-.3-.188-.263-.225-.3-.187-.225-.15-.187-.3-.225c-.1 0-.2-.025-.3-.075l-.975-.75c-.15 0-.325-.075-.525-.225-.75-.65-1.25-1.05-1.5-1.2l-.45-.3-.9-.15c-.3-.05-.7-.2-1.2-.45l-.6-.3c-.4-.2-.675-.3-.825-.3l-.3-.15c-.2-.05-.35-.1-.45-.15l-.15-.15c-.1 0-.2.025-.3.075l-1.5.75-1.875.825c-.5.4-.975.725-1.425.975l-.825.375-1.275.9c-.1.1-.2.1-.3 0l-.15.15c-.15.05-.25.075-.3.075l-.3.15v.15H3.2l-.15.225c-.1.2-.2.312-.3.337-.1.025-.162.063-.187.113a.434.434 0 01-.075.112l-.15.15-.225.15-.338-.037-.45.075-.3.075c-.25.05-.45.012-.6-.113-.15-.125-.275-.312-.375-.562-.1-.15-.05-.275.15-.375l.075-.075c.05-.05.125-.075.225-.075h.45l.6-.225.3-.075c0-.1.025-.175.075-.225.05-.05.125-.075.225-.075v-.075a.666.666 0 01-.075-.3c-.05-.1-.063-.175-.037-.225.025-.05.05-.075.075-.075h.037l.075.225c.05.25.125.325.225.225l.075-.15c.05-.1.125-.15.225-.15l.15.15.15-.15-.075-.075c0-.05.025-.075.075-.075l.3-.3c.25-.3.55-.575.9-.825.7-.55 1.45-.975 2.25-1.275.25-.25.525-.375.825-.375.2-.35.5-.725.9-1.125.35-.25.6-.425.75-.525.1-.2.225-.3.375-.3h.075l.15-.15c.1-.05.175-.1.225-.15v-.375c0-.25.025-.45.075-.6.05-.15.175-.225.375-.225l.3-.3c-.1-.2-.15-.425-.15-.675h-.075c-.1-.15-.15-.3-.15-.45-.15-.25-.25-.45-.3-.6H9.65c-.05.15-.175.25-.375.3l-.075.15c-.2.35-.375.612-.525.787-.15.175-.425.388-.825.638-.25.25-.425.525-.525.825-.05.15-.05.3 0 .45l-.075.15h.075c0 .1.025.15.075.15h.075c.1.05.15.112.15.187s-.075.1-.225.075a.606.606 0 01-.337-.15c-.075-.075-.138-.112-.188-.112l-.225.225c-.1.15-.2.212-.3.187-.1-.025-.125-.062-.075-.112l.075-.075c.05-.1.05-.15 0-.15l-.6.15c-.05.05-.112.05-.187 0s-.063-.1.037-.15l.375-.15c0-.05-.025-.075-.075-.075-.2.1-.4.125-.6.075l-.375-.075-.075-.075c0-.05.025-.075.075-.075.2.05.45.025.75-.075l.525-.225.6-.675.075-.15c.2-.4.413-.763.638-1.088a3.68 3.68 0 01.712-.787l.075-.3c.1-.2.2-.375.3-.525.1-.15.225-.35.375-.6l.225-.3c.2-.3.425-.45.675-.45l.225-.225c.05-.05.075-.125.075-.225l.15-.15-.075-.075c-.3-.25-.45-.475-.45-.675-.05-.35.063-.65.338-.9s.55-.363.825-.338c.275.025.487.113.637.263l.15.15c.05 0 .075.025.075.075l.3.15v.225c.1.1.15.175.15.225.1-.15.25-.325.45-.525l.375-1.2c0-.2.05-.4.15-.6l.15-.225v-.15l.225-.9h.15l.225-.9a.933.933 0 000-.525l-.3-.75-.15-.6z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/jpeg.svg b/assets/lib/simple-icons/icons/jpeg.svg
new file mode 100644
index 00000000..38479229
--- /dev/null
+++ b/assets/lib/simple-icons/icons/jpeg.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>JPEG</title><path d="M8.559 20.407c-.63 0-1.08-.026-1.08-.026V17.22h1.073c1.19 0 1.95.33 1.95 1.426 0 .93-.329 1.76-1.943 1.76m.028-3.965H6.61V24h.87v-2.797h1.275c1.783 0 2.634-1.096 2.634-2.483 0-1.413-.871-2.279-2.8-2.279M13.37 20.571h3.063v-.812H13.37v-2.55h3.548v-.768H12.5v7.42h4.566v-.768H13.37zM21.485 19.938v.753h1.289v1.866c-.395.587-1.452.587-1.452.587-.805 0-1.454-.277-1.927-.838-.47-.558-.707-1.158-.707-2.06 0-.947.235-1.675.711-2.257.482-.583 1.15-.905 1.982-.905.427 0 .884.131 1.33.405l.538-.602c-.482-.396-1.096-.593-1.84-.593-1.11 0-2.005.361-2.656 1.08-.657.715-.99 1.668-.99 2.832s.305 2.043.9 2.745c.591.692 1.42 1.047 2.44 1.047.46 0 .932-.043 1.423-.197.378-.12.508-.216 1.075-.216v-3.647zM3.856 16.441h-.584v.768h.584v3.571c0 1.101.033 1.746-.345 2.124a1.267 1.267 0 01-.865.367c-1.362 0-1.412-1.091-1.412-1.091H.4c.08 1.942 2.362 1.813 2.362 1.813.607-.033 1.087-.233 1.462-.609.495-.499.507-1.422.507-2.192v-4.75zM17.352 0H3.063v14.282h8.266V8.271h6.023zM18.038 9.067h5.213v5.216h-5.213z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/jquery.svg b/assets/lib/simple-icons/icons/jquery.svg
index 5d119030..209c2505 100644
--- a/assets/lib/simple-icons/icons/jquery.svg
+++ b/assets/lib/simple-icons/icons/jquery.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>jQuery icon</title><path d="M1.534 5.874c-2.123 3.05-1.86 7.017-.237 10.256.037.079.078.154.118.229.023.052.049.1.077.149.013.028.031.057.047.083.026.052.054.102.081.152l.157.265c.029.049.057.097.09.146.055.094.12.187.177.281.026.039.05.078.079.117a6.36 6.36 0 0 0 .31.444c.078.107.156.211.24.315.027.038.057.076.085.114l.221.269c.027.031.054.067.083.099.098.118.202.233.306.349 0 .002.003.004.005.007a3.13 3.13 0 0 0 .424.44c.08.082.16.164.245.244l.101.097c.111.104.222.208.339.308.002 0 .003.002.005.003l.057.05c.102.089.205.178.31.26l.125.105c.085.068.173.133.26.2l.136.104c.093.07.192.139.287.207.035.025.07.05.106.073l.029.023.281.185.12.08c.147.094.293.183.438.271.042.021.084.044.123.068.108.062.22.125.329.183.06.034.122.063.184.094.075.042.153.083.233.125a.324.324 0 0 1 .056.023c.033.015.064.031.096.047.12.06.245.117.375.174.024.01.05.02.076.034.144.063.288.123.437.182.034.01.07.027.105.04.135.051.274.103.411.152l.05.018c.153.052.304.102.459.15.036.01.073.023.111.033.159.048.313.105.473.136 10.26 1.87 13.242-6.169 13.242-6.169-2.505 3.262-6.95 4.122-11.16 3.165-.156-.036-.312-.086-.469-.132a13.522 13.522 0 0 1-.567-.181l-.062-.024c-.136-.046-.267-.097-.4-.148a1.613 1.613 0 0 0-.11-.041c-.147-.059-.29-.12-.432-.183-.031-.01-.057-.024-.088-.036a23.41 23.41 0 0 1-.361-.17c-.037-.016-.07-.033-.106-.052-.094-.044-.188-.094-.28-.142a3.942 3.942 0 0 1-.187-.096c-.113-.06-.226-.125-.339-.187-.034-.024-.073-.044-.112-.066a15.902 15.902 0 0 1-.438-.269 2.104 2.104 0 0 1-.118-.079 6.002 6.002 0 0 1-.312-.206c-.035-.023-.067-.048-.103-.073a9.541 9.541 0 0 1-.294-.212c-.042-.034-.087-.066-.132-.1-.088-.069-.177-.135-.265-.208l-.118-.094a10.58 10.58 0 0 1-.334-.281.258.258 0 0 0-.037-.03l-.347-.316-.1-.094c-.082-.083-.166-.163-.25-.245l-.097-.1a9.07 9.07 0 0 1-.309-.323l-.015-.016c-.106-.116-.209-.234-.313-.354-.027-.031-.052-.064-.08-.097l-.226-.277a21.248 21.248 0 0 1-.34-.448C2.16 11.786 1.315 7.386 3.184 3.777M8.121 3.305c-1.539 2.209-1.452 5.163-.254 7.499a9.1 9.1 0 0 0 .677 1.132c.23.33.484.72.792.986.107.122.223.24.344.359l.09.09c.114.11.231.218.35.325l.015.013a9.855 9.855 0 0 0 .414.342c.034.023.063.05.096.073.14.108.281.212.427.315l.015.009c.062.045.128.086.198.13.028.018.06.042.09.06.106.068.21.132.317.197.017.007.032.016.048.023.09.055.188.108.282.157.033.02.065.035.099.054.067.033.133.068.197.102l.032.014c.135.066.273.128.408.19.034.013.063.024.092.038.111.048.224.094.335.137.05.017.097.037.144.052.102.038.209.073.31.108l.14.045c.146.045.294.104.448.129 7.92 1.313 9.754-4.787 9.754-4.787-1.651 2.376-4.846 3.508-8.251 2.624a8.03 8.03 0 0 1-.448-.13c-.048-.013-.09-.028-.136-.042-.104-.036-.211-.071-.312-.109l-.144-.054c-.112-.045-.226-.087-.335-.135-.034-.015-.065-.025-.091-.04-.14-.063-.281-.125-.417-.192l-.206-.107-.119-.06c-.092-.048-.177-.098-.265-.15a.62.62 0 0 1-.062-.034c-.106-.066-.216-.13-.317-.198-.034-.019-.065-.042-.097-.062l-.208-.136c-.144-.1-.285-.208-.427-.312-.032-.029-.063-.053-.094-.079-1.497-1.177-2.678-2.786-3.238-4.608-.59-1.894-.46-4.018.559-5.742M13.66 1.384c-.908 1.332-.995 2.986-.37 4.455.664 1.56 2.022 2.785 3.604 3.365.065.025.128.046.195.07l.088.027c.092.029.185.063.28.084 4.376.844 5.56-2.247 5.879-2.701-1.042 1.496-2.789 1.855-4.932 1.334a4.844 4.844 0 0 1-.516-.16 6.344 6.344 0 0 1-.617-.254 6.521 6.521 0 0 1-1.08-.66c-1.92-1.454-3.109-4.23-1.857-6.491"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>jQuery</title><path d="M1.525 5.87c-2.126 3.054-1.862 7.026-.237 10.269.037.079.078.154.118.229.023.052.049.1.077.15.013.027.031.056.047.082.026.052.054.102.081.152l.157.266c.03.049.057.097.09.146.056.094.12.187.178.281.026.04.05.078.079.117a6.368 6.368 0 00.31.445c.078.107.156.211.24.315.027.038.058.076.086.115l.22.269c.028.03.055.067.084.099.098.118.202.233.306.35l.005.006a3.134 3.134 0 00.425.44c.08.083.16.165.245.245l.101.097c.111.105.223.209.34.309.002 0 .003.002.005.003l.057.05c.102.089.205.178.31.26l.125.105c.085.068.174.133.26.2l.137.105c.093.07.192.139.287.207.035.025.07.05.106.073l.03.023.28.185.12.08c.148.094.294.184.44.272.041.02.084.044.123.068.108.062.22.125.329.183.06.034.122.063.184.094.075.042.153.083.234.125a.324.324 0 01.056.023c.033.015.064.031.096.047.12.06.245.118.375.175.024.01.05.02.076.034.144.063.289.123.438.182.034.01.07.027.105.04.135.051.274.103.411.152l.05.018c.154.052.305.102.46.15.036.01.073.023.111.033.16.048.314.105.474.137 10.273 1.872 13.258-6.177 13.258-6.177-2.508 3.266-6.958 4.127-11.174 3.169-.156-.036-.312-.086-.47-.132a13.539 13.539 0 01-.567-.182l-.062-.024c-.136-.046-.267-.097-.4-.148a1.615 1.615 0 00-.11-.04c-.148-.06-.29-.121-.433-.184-.031-.01-.057-.024-.088-.036a23.44 23.44 0 01-.362-.17 1.485 1.485 0 01-.106-.052c-.094-.044-.188-.095-.28-.143a3.947 3.947 0 01-.187-.096c-.114-.06-.227-.125-.34-.187-.034-.024-.073-.044-.112-.066a15.922 15.922 0 01-.439-.27 2.107 2.107 0 01-.118-.078 6.01 6.01 0 01-.312-.207c-.035-.023-.067-.048-.103-.073a9.553 9.553 0 01-.295-.212c-.042-.034-.087-.066-.132-.1-.088-.07-.177-.135-.265-.208l-.118-.095a10.593 10.593 0 01-.335-.28.258.258 0 00-.037-.031l-.347-.316-.1-.094c-.082-.084-.166-.164-.25-.246l-.098-.1a9.081 9.081 0 01-.309-.323l-.015-.016c-.106-.116-.21-.235-.313-.355-.027-.03-.053-.064-.08-.097l-.227-.277a21.275 21.275 0 01-.34-.449C2.152 11.79 1.306 7.384 3.177 3.771m4.943-.473c-1.54 2.211-1.454 5.169-.254 7.508a9.111 9.111 0 00.678 1.133c.23.33.484.721.793.988.107.122.223.24.344.36l.09.09c.114.11.232.217.35.325l.016.013a9.867 9.867 0 00.414.342c.034.023.063.05.096.073.14.108.282.212.428.316l.015.009c.062.045.128.086.198.13.028.018.06.042.09.06.106.068.21.132.318.197.017.007.032.016.048.023.09.055.188.108.282.157.033.02.065.035.1.054.066.033.132.068.197.102l.032.014c.135.067.273.129.408.19.034.014.063.025.092.039.111.048.224.094.336.137.05.017.097.037.144.052.102.038.21.073.31.108l.14.045c.147.045.295.104.449.13C22.164 17.206 24 11.098 24 11.098c-1.653 2.38-4.852 3.513-8.261 2.628a8.04 8.04 0 01-.449-.13c-.048-.014-.09-.029-.136-.043-.104-.036-.211-.07-.312-.109l-.144-.054c-.113-.045-.227-.087-.336-.135-.034-.015-.065-.025-.091-.04-.14-.063-.281-.125-.418-.192l-.206-.107-.119-.06a5.673 5.673 0 01-.265-.15.62.62 0 01-.062-.035c-.106-.066-.217-.13-.318-.198-.034-.019-.065-.042-.097-.062l-.208-.136c-.144-.1-.285-.208-.428-.313-.032-.029-.063-.053-.094-.079-1.499-1.178-2.681-2.79-3.242-4.613-.59-1.897-.46-4.023.56-5.75m4.292-.147c-.909 1.334-.996 2.99-.37 4.46.665 1.563 2.024 2.79 3.608 3.37.065.025.128.046.196.07l.088.027c.092.03.185.063.28.084 4.381.845 5.567-2.25 5.886-2.704-1.043 1.498-2.792 1.857-4.938 1.335a4.85 4.85 0 01-.516-.16 6.352 6.352 0 01-.618-.254 6.53 6.53 0 01-1.082-.66c-1.922-1.457-3.113-4.236-1.859-6.5"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/jrgroup.svg b/assets/lib/simple-icons/icons/jrgroup.svg
index d3f37974..70a56494 100644
--- a/assets/lib/simple-icons/icons/jrgroup.svg
+++ b/assets/lib/simple-icons/icons/jrgroup.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>JR Group icon</title><path d="M19.955 13.653h1.089c2.684 0 2.684-4.123 2.684-4.123s0-4.162-2.684-4.162H9.18v8.869c0 1.556-3.112 1.478-3.112 1.478s-3.073.116-3.073-1.478v-3.423H0v4.395c0 3.19 5.68 3.384 6.107 3.423.428 0 6.107-.194 6.107-3.423V8.363h7.896c.661 0 .661 1.167.661 1.167s0 1.167-.66 1.167h-6.069l5.952 7.702H24Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>JR Group</title><path d="M19.955 13.653h1.089c2.684 0 2.684-4.123 2.684-4.123s0-4.162-2.684-4.162H9.18v8.869c0 1.556-3.112 1.478-3.112 1.478s-3.073.116-3.073-1.478v-3.423H0v4.395c0 3.19 5.68 3.384 6.107 3.423.428 0 6.107-.194 6.107-3.423V8.363h7.896c.661 0 .661 1.167.661 1.167s0 1.167-.66 1.167h-6.069l5.952 7.702H24Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/jsdelivr.svg b/assets/lib/simple-icons/icons/jsdelivr.svg
index eb72be13..09623f3e 100644
--- a/assets/lib/simple-icons/icons/jsdelivr.svg
+++ b/assets/lib/simple-icons/icons/jsdelivr.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>jsDelivr icon</title><path d="M11.851 0L.811 4.02l1.56 14.7L11.85 24l9.6-5.28 1.74-14.76zm.062 4.622a6.668 6.75 0 0 1 2.666.572 12.507 12.507 0 0 0-2.59 1.95c-.045-.02-.092-.031-.138-.045a1.181 1.181 0 0 0-.346-.056c-.071 0-.141.01-.21.021a8.91 8.91 0 0 1-.615-2.318 6.668 6.75 0 0 1 1.171-.122 6.668 6.75 0 0 1 .062-.002zm-1.99.312a9.763 9.763 0 0 0 .69 2.504 1.213 1.213 0 0 0-.328.825 1.202 1.202 0 0 0 .18.63c-.937 1.294-1.656 2.803-1.905 4.31-.01.056-.013.11-.02.166-.282.09-.515.284-.656.54-.987-.333-1.885-.968-2.615-2.022a6.668 6.75 0 0 1-.026-.515 6.668 6.75 0 0 1 4.68-6.438zm5.507.709a6.668 6.75 0 0 1 2.53 2.9c-.377.953-1.049 1.892-1.893 2.727a1.242 1.242 0 0 0-.644-.184 1.243 1.243 0 0 0-.768.27c-.462-.354-.91-.737-1.318-1.168-.333-.35-.637-.73-.921-1.123.19-.215.31-.494.31-.802 0-.212-.061-.41-.159-.586 1.058-1.008 2.112-1.67 2.863-2.034zm-3.925 1.982a.624.624 0 0 1 .346.114.624.624 0 0 1 .292.524.624.624 0 0 1-.292.524.626.626 0 0 1-.346.113.634.634 0 0 1-.638-.637c0-.355.283-.638.638-.638zm-.441 1.771a1.205 1.205 0 0 0 .675.062c.036.05.075.097.112.148a11.438 11.438 0 0 0 .921 1.119 12.103 12.103 0 0 0 1.446 1.277c-.032.11-.054.224-.054.342a1.236 1.236 0 0 0 .066.38 9.91 9.91 0 0 1-2.118 1.042c-.087.029-.173.052-.261.078a7.735 7.735 0 0 1-1.87.332 1.15 1.15 0 0 0-.66-.773c.004-.024.005-.049.01-.073.219-1.333.873-2.73 1.733-3.934zm7.272.19a6.668 6.75 0 0 1 .245 1.786 6.668 6.75 0 0 1-.259 1.856 9.993 9.993 0 0 1-1.666-.63 1.243 1.243 0 0 0-.065-.713 9.434 9.434 0 0 0 1.745-2.3zm-2.913 2.101c.367 0 .657.291.657.658s-.291.657-.657.657c-.367 0-.658-.29-.658-.657s.29-.658.658-.658zm.837 1.59a10.79 10.79 0 0 0 1.802.688 6.668 6.75 0 0 1-6.149 4.157 6.668 6.75 0 0 1-.062-.004 6.668 6.75 0 0 1-.042 0c-.087-.042-.168-.08-.266-.129-.312-.154-.667-.352-.846-.5a3.796 3.796 0 0 1-1.294-2.03c.21-.111.38-.284.487-.495a8.428 8.428 0 0 0 1.96-.306 9.11 9.11 0 0 0 .513-.154 11.083 11.083 0 0 0 2.341-1.13c.205.143.452.23.719.23a1.248 1.248 0 0 0 .837-.328zm-10.707.116a5.761 5.761 0 0 0 2.212 1.298 1.146 1.146 0 0 0 .857.87 4.602 4.602 0 0 0 1.24 2.222 6.668 6.75 0 0 1-4.31-4.39zm3.327.464c.331 0 .595.263.595.596s-.264.595-.595.595a.59.59 0 0 1-.596-.595.591.591 0 0 1 .596-.596z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>jsDelivr</title><path d="M11.851 0L.811 4.02l1.56 14.7L11.85 24l9.6-5.28 1.74-14.76zm.062 4.622a6.668 6.75 0 0 1 2.666.572 12.507 12.507 0 0 0-2.59 1.95c-.045-.02-.092-.031-.138-.045a1.181 1.181 0 0 0-.346-.056c-.071 0-.141.01-.21.021a8.91 8.91 0 0 1-.615-2.318 6.668 6.75 0 0 1 1.171-.122 6.668 6.75 0 0 1 .062-.002zm-1.99.312a9.763 9.763 0 0 0 .69 2.504 1.213 1.213 0 0 0-.328.825 1.202 1.202 0 0 0 .18.63c-.937 1.294-1.656 2.803-1.905 4.31-.01.056-.013.11-.02.166-.282.09-.515.284-.656.54-.987-.333-1.885-.968-2.615-2.022a6.668 6.75 0 0 1-.026-.515 6.668 6.75 0 0 1 4.68-6.438zm5.507.709a6.668 6.75 0 0 1 2.53 2.9c-.377.953-1.049 1.892-1.893 2.727a1.242 1.242 0 0 0-.644-.184 1.243 1.243 0 0 0-.768.27c-.462-.354-.91-.737-1.318-1.168-.333-.35-.637-.73-.921-1.123.19-.215.31-.494.31-.802 0-.212-.061-.41-.159-.586 1.058-1.008 2.112-1.67 2.863-2.034zm-3.925 1.982a.624.624 0 0 1 .346.114.624.624 0 0 1 .292.524.624.624 0 0 1-.292.524.626.626 0 0 1-.346.113.634.634 0 0 1-.638-.637c0-.355.283-.638.638-.638zm-.441 1.771a1.205 1.205 0 0 0 .675.062c.036.05.075.097.112.148a11.438 11.438 0 0 0 .921 1.119 12.103 12.103 0 0 0 1.446 1.277c-.032.11-.054.224-.054.342a1.236 1.236 0 0 0 .066.38 9.91 9.91 0 0 1-2.118 1.042c-.087.029-.173.052-.261.078a7.735 7.735 0 0 1-1.87.332 1.15 1.15 0 0 0-.66-.773c.004-.024.005-.049.01-.073.219-1.333.873-2.73 1.733-3.934zm7.272.19a6.668 6.75 0 0 1 .245 1.786 6.668 6.75 0 0 1-.259 1.856 9.993 9.993 0 0 1-1.666-.63 1.243 1.243 0 0 0-.065-.713 9.434 9.434 0 0 0 1.745-2.3zm-2.913 2.101c.367 0 .657.291.657.658s-.291.657-.657.657c-.367 0-.658-.29-.658-.657s.29-.658.658-.658zm.837 1.59a10.79 10.79 0 0 0 1.802.688 6.668 6.75 0 0 1-6.149 4.157 6.668 6.75 0 0 1-.062-.004 6.668 6.75 0 0 1-.042 0c-.087-.042-.168-.08-.266-.129-.312-.154-.667-.352-.846-.5a3.796 3.796 0 0 1-1.294-2.03c.21-.111.38-.284.487-.495a8.428 8.428 0 0 0 1.96-.306 9.11 9.11 0 0 0 .513-.154 11.083 11.083 0 0 0 2.341-1.13c.205.143.452.23.719.23a1.248 1.248 0 0 0 .837-.328zm-10.707.116a5.761 5.761 0 0 0 2.212 1.298 1.146 1.146 0 0 0 .857.87 4.602 4.602 0 0 0 1.24 2.222 6.668 6.75 0 0 1-4.31-4.39zm3.327.464c.331 0 .595.263.595.596s-.264.595-.595.595a.59.59 0 0 1-.596-.595.591.591 0 0 1 .596-.596z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/jsfiddle.svg b/assets/lib/simple-icons/icons/jsfiddle.svg
index 3ca23818..d21786bb 100644
--- a/assets/lib/simple-icons/icons/jsfiddle.svg
+++ b/assets/lib/simple-icons/icons/jsfiddle.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>JSFiddle icon</title><path d="M13.9 3.602c-2.749 0-5.103 1.544-6.35 3.779-.536-.317-1.139-.54-1.806-.54-1.981 0-3.6 1.606-3.6 3.579 0 .263.063.513.118.762C.912 12.09 0 13.602 0 15.344c0 2.763 2.241 5.012 5.008 5.054a.421.421 0 00.008 0h14c2.746.017 4.984-2.206 4.984-4.937 0-1.946-1.153-3.602-2.799-4.41.003-.062.01-.115.01-.184 0-4.008-3.28-7.265-7.31-7.265zm0 .843c3.58 0 6.47 2.872 6.47 6.422 0 .115-.012.242-.02.387a.421.421 0 00.26.414 4.104 4.104 0 012.546 3.793 4.094 4.094 0 01-4.135 4.096.421.421 0 00-.003 0H5.02C2.702 19.52.844 17.653.844 15.344c0-1.545.834-2.883 2.08-3.62a.421.421 0 00.187-.49 2.701 2.701 0 01-.125-.814 2.741 2.741 0 012.758-2.736 2.75 2.75 0 011.686.576.421.421 0 00.636-.15A6.462 6.462 0 0113.9 4.444zm-5.33 6.877c-1.586 0-2.91 1.213-2.91 2.737 0 1.523 1.324 2.736 2.91 2.736 1.411 0 2.182-.931 2.496-1.266a.421.421 0 10-.613-.578c-.378.402-.819 1.002-1.883 1.002-1.162 0-2.068-.86-2.068-1.894 0-1.035.906-1.895 2.068-1.895.533 0 1.105.297 1.686.77.372.303.737.668 1.098 1.043a.421.421 0 00.085.123c.533.552 1.122 1.205 1.774 1.736.652.531 1.386.959 2.217.959 1.586 0 2.91-1.213 2.91-2.736 0-1.524-1.324-2.737-2.91-2.737-1.411 0-2.182.931-2.496 1.266a.421.421 0 10.613.578c.378-.402.819-1.002 1.883-1.002 1.162 0 2.068.86 2.068 1.895 0 1.034-.906 1.894-2.068 1.894-.533 0-1.105-.297-1.686-.77-.372-.303-.737-.67-1.098-1.044a.421.421 0 00-.085-.121c-.533-.552-1.122-1.208-1.774-1.739-.652-.53-1.386-.957-2.217-.957Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>JSFiddle</title><path d="M13.9 3.602c-2.749 0-5.103 1.544-6.35 3.779-.536-.317-1.139-.54-1.806-.54-1.981 0-3.6 1.606-3.6 3.579 0 .263.063.513.118.762C.912 12.09 0 13.602 0 15.344c0 2.763 2.241 5.012 5.008 5.054a.421.421 0 00.008 0h14c2.746.017 4.984-2.206 4.984-4.937 0-1.946-1.153-3.602-2.799-4.41.003-.062.01-.115.01-.184 0-4.008-3.28-7.265-7.31-7.265zm0 .843c3.58 0 6.47 2.872 6.47 6.422 0 .115-.012.242-.02.387a.421.421 0 00.26.414 4.104 4.104 0 012.546 3.793 4.094 4.094 0 01-4.135 4.096.421.421 0 00-.003 0H5.02C2.702 19.52.844 17.653.844 15.344c0-1.545.834-2.883 2.08-3.62a.421.421 0 00.187-.49 2.701 2.701 0 01-.125-.814 2.741 2.741 0 012.758-2.736 2.75 2.75 0 011.686.576.421.421 0 00.636-.15A6.462 6.462 0 0113.9 4.444zm-5.33 6.877c-1.586 0-2.91 1.213-2.91 2.737 0 1.523 1.324 2.736 2.91 2.736 1.411 0 2.182-.931 2.496-1.266a.421.421 0 10-.613-.578c-.378.402-.819 1.002-1.883 1.002-1.162 0-2.068-.86-2.068-1.894 0-1.035.906-1.895 2.068-1.895.533 0 1.105.297 1.686.77.372.303.737.668 1.098 1.043a.421.421 0 00.085.123c.533.552 1.122 1.205 1.774 1.736.652.531 1.386.959 2.217.959 1.586 0 2.91-1.213 2.91-2.736 0-1.524-1.324-2.737-2.91-2.737-1.411 0-2.182.931-2.496 1.266a.421.421 0 10.613.578c.378-.402.819-1.002 1.883-1.002 1.162 0 2.068.86 2.068 1.895 0 1.034-.906 1.894-2.068 1.894-.533 0-1.105-.297-1.686-.77-.372-.303-.737-.67-1.098-1.044a.421.421 0 00-.085-.121c-.533-.552-1.122-1.208-1.774-1.739-.652-.53-1.386-.957-2.217-.957Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/json.svg b/assets/lib/simple-icons/icons/json.svg
index 9f248ac7..6856229b 100644
--- a/assets/lib/simple-icons/icons/json.svg
+++ b/assets/lib/simple-icons/icons/json.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>JSON icon</title><path d="M12.043 23.968c.479-.004.953-.029 1.426-.094 1.08-.138 2.143-.433 3.146-.863 1.409-.602 2.698-1.471 3.793-2.543 1.003-.989 1.842-2.151 2.44-3.427.509-1.097.869-2.274 1.02-3.476.149-1.16.135-2.346-.045-3.499-.149-.96-.419-1.896-.793-2.788-.24-.561-.525-1.101-.854-1.617-1.168-1.837-2.861-3.314-4.81-4.301-.693-.355-1.423-.645-2.172-.869h-.005c.119.063.24.132.345.201.12.074.239.146.351.225.569.385 1.094.827 1.559 1.33 1.063 1.145 1.797 2.548 2.218 4.041.284.982.434 1.998.495 3.017.044.743.044 1.491-.047 2.229-.149 1.27-.554 2.51-1.228 3.596-.495.803-1.14 1.519-1.903 2.084-1.244.928-2.877 1.482-4.436 1.114-.254-.061-.51-.146-.748-.258-.271-.124-.54-.277-.779-.449-.465-.311-.885-.685-1.244-1.106-.435-.52-.794-1.111-1.049-1.747-.314-.806-.479-1.672-.494-2.54-.03-1.273.225-2.553.854-3.67.42-.744.989-1.396 1.663-1.918.225-.178.464-.333.704-.479l.016-.007c-.466-.105-.96-.151-1.441-.12-.418.029-.823.105-1.228.239-.359.12-.704.271-1.019.45-.255.149-.508.315-.733.495-.211.18-.42.359-.615.555-1.123 1.153-1.768 2.682-2.022 4.256-.15.973-.15 1.961-.091 2.951.105 1.394.391 2.786.945 4.061.344.794.793 1.527 1.348 2.173.854.987 1.934 1.753 3.132 2.231.675.271 1.394.465 2.113.54.074.015.149.015.209.015l-.021-.032zm-2.934-.398c-.164-.07-.314-.149-.45-.228-.149-.083-.3-.168-.449-.259-.585-.362-1.108-.787-1.589-1.275-1.094-1.138-1.827-2.567-2.247-4.081-.284-1.034-.435-2.102-.495-3.172-.044-.703-.029-1.393.046-2.082.135-1.257.495-2.501 1.124-3.58.449-.794 1.063-1.498 1.783-2.053.494-.374 1.049-.69 1.633-.9.824-.299 1.708-.389 2.563-.27.33.045.658.121.959.225.029 0 .029 0 .045.03.015.015.045.015.06.03.045.016.104.045.165.074.239.12.479.271.704.42.899.629 1.633 1.498 2.097 2.502.42.914.615 1.934.631 2.938.014 1.079-.18 2.157-.645 3.146-.555 1.184-1.498 2.188-2.638 2.832.09.03.18.045.271.075.225.044.449.074.688.074 1.468.045 2.892-.659 3.94-1.647.195-.18.375-.375.54-.585.225-.27.435-.539.614-.823.239-.375.435-.75.614-1.154.226-.539.404-1.094.509-1.664.196-1.004.211-2.022.149-3.026-.135-2.022-.673-4.045-1.842-5.724-.18-.254-.359-.494-.555-.719-.329-.375-.689-.719-1.063-1.034-.42-.345-.885-.659-1.363-.915-.493-.223-1.078-.447-1.692-.598l-.3-.06c-.209-.03-.42-.044-.634-.06-.325-.015-.669-.01-1.015.016-.704.045-1.412.16-2.112.337-3.356.866-6.292 3.205-7.855 6.308C.799 7.657.445 8.714.238 9.8c-.239 1.243-.27 2.523-.104 3.775.12 1.02.374 2.023.778 2.977.227.57.511 1.124.825 1.648 1.094 1.783 2.683 3.236 4.51 4.24.688.391 1.408.69 2.157.945.226.074.45.149.689.209l.016-.024z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>JSON</title><path d="M12.043 23.968c.479-.004.953-.029 1.426-.094a11.805 11.805 0 003.146-.863 12.404 12.404 0 003.793-2.542 11.977 11.977 0 002.44-3.427 11.794 11.794 0 001.02-3.476c.149-1.16.135-2.346-.045-3.499a11.96 11.96 0 00-.793-2.788 11.197 11.197 0 00-.854-1.617c-1.168-1.837-2.861-3.314-4.81-4.3a12.835 12.835 0 00-2.172-.87h-.005c.119.063.24.132.345.201.12.074.239.146.351.225a8.93 8.93 0 011.559 1.33c1.063 1.145 1.797 2.548 2.218 4.041.284.982.434 1.998.495 3.017.044.743.044 1.491-.047 2.229-.149 1.27-.554 2.51-1.228 3.596a7.475 7.475 0 01-1.903 2.084c-1.244.928-2.877 1.482-4.436 1.114a3.916 3.916 0 01-.748-.258 4.692 4.692 0 01-.779-.45 6.08 6.08 0 01-1.244-1.105 6.507 6.507 0 01-1.049-1.747 7.366 7.366 0 01-.494-2.54c-.03-1.273.225-2.553.854-3.67a6.43 6.43 0 011.663-1.918c.225-.178.464-.333.704-.479l.016-.007a5.121 5.121 0 00-1.441-.12 4.963 4.963 0 00-1.228.24c-.359.12-.704.27-1.019.45a6.146 6.146 0 00-.733.494c-.211.18-.42.36-.615.555-1.123 1.153-1.768 2.682-2.022 4.256-.15.973-.15 1.96-.091 2.95.105 1.395.391 2.787.945 4.062a8.518 8.518 0 001.348 2.173 8.14 8.14 0 003.132 2.23 7.934 7.934 0 002.113.54c.074.015.149.015.209.015zm-2.934-.398a4.102 4.102 0 01-.45-.228 8.5 8.5 0 01-2.038-1.534c-1.094-1.137-1.827-2.566-2.247-4.08a15.184 15.184 0 01-.495-3.172 12.14 12.14 0 01.046-2.082c.135-1.257.495-2.501 1.124-3.58a6.889 6.889 0 011.783-2.053 6.23 6.23 0 011.633-.9 5.363 5.363 0 013.522-.045c.029 0 .029 0 .045.03.015.015.045.015.06.03.045.016.104.045.165.074.239.12.479.271.704.42a6.294 6.294 0 012.097 2.502c.42.914.615 1.934.631 2.938.014 1.079-.18 2.157-.645 3.146a6.42 6.42 0 01-2.638 2.832c.09.03.18.045.271.075.225.044.449.074.688.074 1.468.045 2.892-.66 3.94-1.647.195-.18.375-.375.54-.585.225-.27.435-.54.614-.823.239-.375.435-.75.614-1.154a8.112 8.112 0 00.509-1.664c.196-1.004.211-2.022.149-3.026-.135-2.022-.673-4.045-1.842-5.724a9.054 9.054 0 00-.555-.719 9.868 9.868 0 00-1.063-1.034 8.477 8.477 0 00-1.363-.915 9.927 9.927 0 00-1.692-.598l-.3-.06c-.209-.03-.42-.044-.634-.06a8.453 8.453 0 00-1.015.016c-.704.045-1.412.16-2.112.337C5.799 1.227 2.863 3.566 1.3 6.67A11.834 11.834 0 00.238 9.801a11.81 11.81 0 00-.104 3.775c.12 1.02.374 2.023.778 2.977.227.57.511 1.124.825 1.648 1.094 1.783 2.683 3.236 4.51 4.24.688.39 1.408.69 2.157.944.226.074.45.15.689.21z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/jsonwebtokens.svg b/assets/lib/simple-icons/icons/jsonwebtokens.svg
index 0b122632..5f03d1e1 100644
--- a/assets/lib/simple-icons/icons/jsonwebtokens.svg
+++ b/assets/lib/simple-icons/icons/jsonwebtokens.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>JSON Web Tokens icon</title><path d="M10.2 0v6.456L12 8.928l1.8-2.472V0zm3.6 6.456v3.072l2.904-.96L20.52 3.36l-2.928-2.136zm2.904 2.112l-1.8 2.496 2.928.936 6.144-1.992-1.128-3.432zM17.832 12l-2.928.936 1.8 2.496 6.144 1.992 1.128-3.432zm-1.128 3.432l-2.904-.96v3.072l3.792 5.232 2.928-2.136zM13.8 17.544L12 15.072l-1.8 2.472V24h3.6zm-3.6 0v-3.072l-2.904.96L3.48 20.64l2.928 2.136zm-2.904-2.112l1.8-2.496L6.168 12 .024 13.992l1.128 3.432zM6.168 12l2.928-.936-1.8-2.496-6.144-1.992-1.128 3.432zm1.128-3.432l2.904.96V6.456L6.408 1.224 3.48 3.36Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>JSON Web Tokens</title><path d="M10.2 0v6.456L12 8.928l1.8-2.472V0zm3.6 6.456v3.072l2.904-.96L20.52 3.36l-2.928-2.136zm2.904 2.112l-1.8 2.496 2.928.936 6.144-1.992-1.128-3.432zM17.832 12l-2.928.936 1.8 2.496 6.144 1.992 1.128-3.432zm-1.128 3.432l-2.904-.96v3.072l3.792 5.232 2.928-2.136zM13.8 17.544L12 15.072l-1.8 2.472V24h3.6zm-3.6 0v-3.072l-2.904.96L3.48 20.64l2.928 2.136zm-2.904-2.112l1.8-2.496L6.168 12 .024 13.992l1.128 3.432zM6.168 12l2.928-.936-1.8-2.496-6.144-1.992-1.128 3.432zm1.128-3.432l2.904.96V6.456L6.408 1.224 3.48 3.36Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/jss.svg b/assets/lib/simple-icons/icons/jss.svg
new file mode 100644
index 00000000..06427c4f
--- /dev/null
+++ b/assets/lib/simple-icons/icons/jss.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>JSS</title><path d="M0 2.5v19h19.2v-1.95c.506.263 1.124.42 1.857.42 1.687 0 2.943-.877 2.943-2.475 0-1.483-.852-2.143-2.36-2.79l-.444-.19c-.762-.33-1.092-.546-1.092-1.078 0-.431.33-.761.85-.761.51 0 .838.215 1.142.76l1.383-.887c-.585-1.029-1.396-1.422-2.525-1.422-.715 0-1.312.207-1.754.555V2.5zm.36.359h18.48v9.182a2.266 2.266 0 00-.487 1.432c0 .654.176 1.152.486 1.552v2.537l-1.018.592c.232.456.57.864 1.018 1.177v1.81H.361zm14.188 8.268c-1.586 0-2.6 1.014-2.6 2.346 0 1.445.85 2.13 2.132 2.675l.443.19c.81.355 1.293.57 1.293 1.18 0 .508-.47.875-1.205.875-.876 0-1.371-.457-1.752-1.078l-1.443.839c.521 1.03 1.587 1.816 3.236 1.816 1.687 0 2.943-.876 2.943-2.475 0-1.483-.852-2.143-2.361-2.79l-.444-.19c-.762-.33-1.092-.546-1.092-1.078 0-.431.33-.761.85-.761.51 0 .838.215 1.143.76l1.382-.887c-.584-1.029-1.396-1.422-2.525-1.422zm-5.868.101v6.038c0 .888-.368 1.116-.951 1.116-.61 0-.864-.418-1.143-.913l-1.446.875c.419.886 1.242 1.622 2.664 1.622 1.574 0 2.652-.837 2.652-2.676v-6.062zm10.52 4.173c.345.295.781.532 1.286.747l.443.19c.81.355 1.293.57 1.293 1.18 0 .508-.47.875-1.206.875-.876 0-1.37-.457-1.752-1.078l-.064.037z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/julia.svg b/assets/lib/simple-icons/icons/julia.svg
new file mode 100644
index 00000000..b5138c49
--- /dev/null
+++ b/assets/lib/simple-icons/icons/julia.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Julia</title><path d="M11.138 17.569a5.569 5.569 0 1 1-11.138 0 5.569 5.569 0 1 1 11.138 0zm6.431-11.138a5.569 5.569 0 1 1-11.138 0 5.569 5.569 0 1 1 11.138 0zM24 17.569a5.569 5.569 0 1 1-11.138 0 5.569 5.569 0 1 1 11.138 0z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/junipernetworks.svg b/assets/lib/simple-icons/icons/junipernetworks.svg
new file mode 100644
index 00000000..3b549ab3
--- /dev/null
+++ b/assets/lib/simple-icons/icons/junipernetworks.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Juniper Networks</title><path d="M23.0864 13.1643c.0456 0 .0717-.0132.0717-.062 0-.0482-.0254-.0593-.0731-.0593h-.1023v.1213zm-.1037.0417v.1285h-.0445v-.334h.1487c.0846 0 .1172.0347.1172.1006 0 .054-.0229.0912-.0806.102l.0755.1314h-.0484l-.0746-.1285zm.0746-.2918a.2535.2535 0 0 0-.2533.2531c0 .1395.1136.2532.2533.2532a.2535.2535 0 0 0 .253-.2532.2534.2534 0 0 0-.253-.2531zm-.291.2531a.2912.2912 0 0 1 .291-.2908.291.291 0 0 1 .2905.2908.291.291 0 0 1-.2905.2907.2912.2912 0 0 1-.291-.2907zm-20.7445-.6602V8.8304h-.4212v3.6767c0 .8506.0337 1.5332-1.4404 1.5332A4.029 4.029 0 0 1 0 14.0369v.397a6.215 6.215 0 0 0 .1602.0022c1.7858 0 1.8616-.8002 1.8616-1.929zm15.5404-1.6972h3.1334c-.042-.918-.1011-1.7014-1.4404-1.7014-1.2887 0-1.6425.6992-1.693 1.7014zm1.7016-2.0889c1.794 0 1.853 1.2045 1.8447 2.4764h-3.5548c.0085 1.1204.2863 1.9544 1.7436 1.9544.775 0 1.1288-.2107 1.5079-.4886l.2357.3116c-.421.3117-.918.556-1.7436.556-1.8194 0-2.1565-1.053-2.1565-2.4091 0-1.356.3877-2.4007 2.123-2.4007zm-4.1484 2.7055c.7439 0 1.1135-.3625 1.1135-1.0949 0-.7322-.3988-1.0798-1.132-1.0798h-1.7285v2.1747zM15.109 8.839c1.0678 0 1.5519.5307 1.5519 1.474 0 .9497-.478 1.527-1.5578 1.527h-1.7348v1.5981h-.4124V8.839zm-2.9253 0v4.5991h-.4122V8.839zm-1.1939 4.5991h-.4296v-2.8134c0-.8086.0084-1.491-1.474-1.491-1.4743 0-1.4405.6824-1.4405 1.5331v2.7713h-.4212v-2.7713c0-1.1288.076-1.9289 1.8616-1.9289 1.7943 0 1.9037.8001 1.9037 1.8952zM2.7466 8.8304h.4297v2.8134c0 .8088-.0084 1.491 1.474 1.491 1.4742 0 1.4405-.6822 1.4405-1.533V8.8303h.4212v2.7713c0 1.1289-.0759 1.929-1.8616 1.929-1.7943 0-1.9038-.8001-1.9038-1.8952zm18.9675 1.8364v2.7713h.421v-2.7713c0-.8507-.0336-1.533 1.4407-1.533.1579 0 .298.0083.4242.023v-.4012a4.8535 4.8535 0 0 0-.4242-.0177c-1.7859 0-1.8617.8001-1.8617 1.929zm-.4315 4.3602c.1525.096.3017.1286.4542.1286.2624 0 .3789-.0737.3789-.2486 0-.18-.1508-.2057-.3789-.2468-.2743-.048-.4594-.0944-.4594-.3514 0-.2453.1577-.3413.4594-.3413.199 0 .3412.0447.4423.1132l-.072.1097c-.0908-.06-.2263-.0995-.3703-.0995-.228 0-.3257.0636-.3257.2144 0 .1612.132.192.3584.233.2776.0499.4782.091.4782.3635 0 .2521-.1612.3737-.5074.3737-.192 0-.3652-.0393-.5263-.1456zm-.7886-.4423l-.2538.2777v.396h-.132v-1.2703h.132v.7012l.643-.7012h.156l-.456.4989.5176.7715h-.1525l-.4543-.6738m-1.1006.0326c.18 0 .2914-.0549.2914-.2555 0-.1971-.108-.2485-.2965-.2485h-.4132v.504zm-.0377.1234h-.3806v.5178h-.132V13.988h.5486c.2948 0 .4286.1183.4286.3703 0 .2194-.1046.348-.3258.377l.3068.523h-.1439l-.3017-.5177m-.924-.1166c0-.3429-.1594-.528-.5058-.528-.3446 0-.5023.1851-.5023.528 0 .3446.1577.5298.5023.5298.3464 0 .5058-.1852.5058-.5298zm-.5058-.6566c.408 0 .6412.2024.6412.655 0 .4542-.2332.6565-.6412.6565-.4063 0-.6377-.2023-.6377-.6566 0-.4525.2314-.6549.6377-.6549zm-2.3571.0206l.3342 1.0508.3412-1.0508h.1166l.3394 1.0508.336-1.0508h.1303l-.408 1.2789h-.1165l-.343-1.0577-.341 1.0577h-.1183l-.4098-1.2789zm-1.392.1286v-.1286h1.0886v.1286h-.4766v1.1418h-.1355v-1.1418zm-.204-.1286v.1286h-.7046v.42h.6874v.127h-.6874v.4713h.7114v.1235h-.8468V13.988zm-2.0539 0l.7596 1.0475V13.988h.1303v1.2704h-.1235l-.7835-1.0784v1.0784h-.1303V13.988Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/junit5.svg b/assets/lib/simple-icons/icons/junit5.svg
new file mode 100644
index 00000000..24b8f49f
--- /dev/null
+++ b/assets/lib/simple-icons/icons/junit5.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>JUnit5</title><path d="M11.886 9.769c1.647 0 2.95.436 3.912 1.307.961.872 1.442 2.06 1.442 3.566 0 1.744-.548 3.107-1.643 4.09-1.088.977-2.638 1.465-4.65 1.465-1.826 0-3.26-.294-4.303-.883v-2.38a7.89 7.89 0 002.079.793c.782.186 1.509.28 2.18.28 1.184 0 2.086-.265 2.704-.794.619-.53.928-1.304.928-2.325 0-1.952-1.245-2.929-3.733-2.929-.35 0-.783.038-1.297.112-.514.067-.965.145-1.352.235l-1.174-.693.626-7.98H16.1v2.335H9.919l-.37 4.046c.262-.044.578-.096.95-.156.38-.06.843-.09 1.387-.09zM12 0C5.373 0 0 5.373 0 12a11.998 11.998 0 006.65 10.738v-3.675h.138c.01.004 4.86 2.466 8.021 0 3.163-2.468 1.62-5.785 1.08-6.557-.54-.771-3.317-2.083-5.708-1.851-2.391.231-2.391.308-2.391.308l.617-7.096 7.687-.074V.744A12 12 0 0011.999 0zm4.095.744V3.793l-7.688.074-.617 7.096s0-.077 2.391-.308c2.392-.232 5.169 1.08 5.708 1.851.54.772 2.083 4.089-1.08 6.557-3.16 2.467-8.013.004-8.02 0h-.14v3.675A12 12 0 0012 24c6.628 0 12-5.373 12-12A12.007 12.007 0 0016.35.83c-.085-.03-.17-.059-.255-.086zM6.299 22.556z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/jupyter.svg b/assets/lib/simple-icons/icons/jupyter.svg
index cec19cf0..9353854e 100644
--- a/assets/lib/simple-icons/icons/jupyter.svg
+++ b/assets/lib/simple-icons/icons/jupyter.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Jupyter icon</title><path d="M12.2 18.1c-3.8 0-7.2-1.4-9-3.4.7 1.8 1.9 3.4 3.5 4.5s3.5 1.7 5.5 1.7 3.9-.6 5.5-1.7 2.8-2.7 3.5-4.5c-1.8 2-5.2 3.4-9 3.4zM12.2 4.9c3.8 0 7.2 1.4 9 3.4-.7-1.8-1.9-3.4-3.5-4.5C16 2.6 14.1 2 12.2 2c-2 0-3.9.6-5.5 1.7-1.6 1.2-2.8 2.7-3.5 4.6 1.8-2.1 5.1-3.4 9-3.4zM19.2.10000000000000009A1.4 1.4 0 1 0 19.2 2.9 1.4 1.4 0 1 0 19.2.10000000000000009zM5.1 20.3A1.8 1.8 0 1 0 5.1 23.900000000000002 1.8 1.8 0 1 0 5.1 20.3zM3.6 2.3A1 1 0 1 0 3.6 4.3 1 1 0 1 0 3.6 2.3z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Jupyter</title><path d="M7.157 22.201A1.784 1.799 0 0 1 5.374 24a1.784 1.799 0 0 1-1.784-1.799 1.784 1.799 0 0 1 1.784-1.799 1.784 1.799 0 0 1 1.783 1.799zM20.582 1.427a1.415 1.427 0 0 1-1.415 1.428 1.415 1.427 0 0 1-1.416-1.428A1.415 1.427 0 0 1 19.167 0a1.415 1.427 0 0 1 1.415 1.427zM4.992 3.336A1.047 1.056 0 0 1 3.946 4.39a1.047 1.056 0 0 1-1.047-1.055A1.047 1.056 0 0 1 3.946 2.28a1.047 1.056 0 0 1 1.046 1.056zm7.336 1.517c3.769 0 7.06 1.38 8.768 3.424a9.363 9.363 0 0 0-3.393-4.547 9.238 9.238 0 0 0-5.377-1.728A9.238 9.238 0 0 0 6.95 3.73a9.363 9.363 0 0 0-3.394 4.547c1.713-2.04 5.004-3.424 8.772-3.424zm.001 13.295c-3.768 0-7.06-1.381-8.768-3.425a9.363 9.363 0 0 0 3.394 4.547A9.238 9.238 0 0 0 12.33 21a9.238 9.238 0 0 0 5.377-1.729 9.363 9.363 0 0 0 3.393-4.547c-1.712 2.044-5.003 3.425-8.772 3.425Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/justeat.svg b/assets/lib/simple-icons/icons/justeat.svg
index 41efe8ae..24330f3d 100644
--- a/assets/lib/simple-icons/icons/justeat.svg
+++ b/assets/lib/simple-icons/icons/justeat.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Just Eat icon</title><path d="M21.679 14.292l-.884 5.14c-.104.652-.151.673-.864.673h-.072c-.855 0-.869 0-.715-.948l.839-4.866h-1.506c-.582 0-.597 0-.46-.78.138-.779.138-.779.796-.779h4.628v.001c.596 0 .597 0 .462.78-.132.755-.136.779-.726.779h-1.498zM9.607 20.103H6.38c-1.195 0-1.205 0-.994-1.269l.848-4.925c.2-1.177.178-1.177 1.339-1.177h3.304c.595 0 .595.007.463.779-.133.773-.134.78-.785.78l-.002.001H7.846l-.229 1.345h2.065c.857 0 .857 0 .736.749-.106.712-.109.735-.679.735H7.372l-.229 1.422h2.786c.611 0 .611 0 .474.796-.134.74-.123.763-.735.764h-.061zm3.745-1.715l-.444.979c-.327.712-.322.735-1.045.735h-.072c-1.024 0-1.086-.06-.688-.886l2.767-5.736c.367-.748.352-.748 1.576-.748h.118c1.181.001 1.186.029 1.35.917l.981 5.505c.168.871.087.946-.769.948h-.042c-.795 0-.826 0-.933-.735l-.137-.979h-2.662zm.673-1.483h-.001v.002l.001-.002zm1.772 0l-.322-2.327c-.031-.212-.031-.212-.169-.212-.121 0-.121 0-.211.2l-1.07 2.339h1.772zM3.954 3.937c.814 0 .814.015.649.935l-.757 4.38c-.27 1.536-.933 2.817-2.605 3.359-.105.029-.407.121-.571.121-.164 0-.285-.091-.465-.557-.121-.316-.181-.468-.181-.618 0-.134.091-.256.391-.346 1.175-.361 1.566-.949 1.716-1.822l.668-3.892H1.597c-.587 0-.604-.025-.468-.793.136-.767.136-.767.799-.767h2.026zm6.831 0c.856 0 .893 0 .729.946l-.606 3.521c-.335 2.126-1.337 3.012-3.325 3.012-1.775 0-3.013-1.245-2.663-3.258l.609-3.554c.107-.673.129-.666.95-.666.843 0 .869-.005.716.943l-.578 3.385c-.153.917.186 1.515 1.181 1.515.995 0 1.271-.603 1.44-1.627l.611-3.543c.115-.669.132-.674.936-.674h-.001.001zm3.723 5.817c.652-.037.995-.318.995-.638 0-.381-.474-.52-1.1-.704-1.239-.381-2.341-.816-2.341-2.131 0-1.546 1.272-2.386 2.877-2.386.673 0 1.446.039 1.946.084.449.043.532.202.416.875-.115.673-.271.742-.643.709a17.73 17.73 0 0 0-1.761-.074c-.826.01-1.061.291-1.061.58 0 .351.322.55 1.087.749 1.421.413 2.354.973 2.354 2.197 0 1.438-1.07 2.278-2.783 2.346-.818.03-1.637-.015-2.446-.136-.546-.08-.565-.09-.429-.873.124-.715.142-.765.643-.704.965.117 1.593.143 2.246.105v.001zm8.932-5.817h.001c.597 0 .597 0 .461.78-.136.78-.136.78-.785.78h-1.438l-.885 5.139c-.107.673-.153.673-.935.673-.855 0-.869 0-.716-.948l.841-4.864h-1.508c-.582 0-.597-.001-.46-.78.138-.78.138-.78.795-.78h4.629z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Just Eat</title><path d="M11.196.232a1.376 1.376 0 0 1 1.528 0 33.157 33.157 0 0 1 3.384 2.438s.293.203.301-.14a5.367 5.367 0 0 1 .079-1.329.606.606 0 0 1 .562-.39s1.329.066 2.173.179c.377.05.671.352.711.73 0 0 .543 3.62.665 4.925 0 0 .105.664 1.067 1.79 0 0 1.953 2.735 2.18 3.259 0 0 .454.946-.523 1.074 0 0-1.783.18-1.955.22a.446.446 0 0 0-.39.484s-.094 6.296-.555 9.32c0 0-.121 1.2-.782 1.173 0 0-1.833-.059-2.259-.047 0 0-.183 0-.156-.246 0 0 .934-9.817.301-14.78 0 0-.028-.64-.516-.782 0 0-.445-.18-.871.391a15.574 15.574 0 0 0-2.9 8.86s-.05 1.563.188 1.953c0 0 .148.274.907.336l.96.13s.176 0 .16.233c0 0-.218 2.88-.28 3.393a1.018 1.018 0 0 1-.071.34s-.035.098-.336.086c0 0-4.236-.03-4.713 0 0 0-.2 0-.242-.105-.043-.106-.294-3.717-.286-4.229a.255.255 0 0 1 .149-.25 2.548 2.548 0 0 0 1.172-1.871c.052-.548.06-1.098.024-1.646 0 0 .156-5.522.195-6.41 0 0 .031-.3-.36-.355a.364.364 0 0 0-.437.27v.03c0 .032-.274 3.643-.223 5.081 0 0 .094.942-.558.961 0 0-.634.095-.665-.69 0 0 .047-3.542.203-5.292a.39.39 0 0 0-.348-.391.39.39 0 0 0-.437.316.065.065 0 0 0 0 .031s-.274 3.39-.223 5.179c0 0 .078.868-.614.836 0 0-.578.066-.61-.704 0 0 .157-4.85.2-5.224A.39.39 0 0 0 6.647 9h-.039a.391.391 0 0 0-.418.325.167.167 0 0 0 0 .035s-.258 5.8-.223 7.503c0 0-.023 1.751 1.27 2.462 0 0 .192.11.196.277 0 0 .145 3.076.277 4.069 0 0 .047.238-.164.238L4.291 24a.67.67 0 0 1-.665-.633 72.876 72.876 0 0 1-.601-9.829.5.5 0 0 0-.391-.535S.969 12.85.566 12.749a.692.692 0 0 1-.422-1.02A33.497 33.497 0 0 1 11.197.232Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/justgiving.svg b/assets/lib/simple-icons/icons/justgiving.svg
index 62f7d51d..db9c0e9b 100644
--- a/assets/lib/simple-icons/icons/justgiving.svg
+++ b/assets/lib/simple-icons/icons/justgiving.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>JustGiving icon</title><path d="M23.716 9.925H15.33l-4.898 4.919h6.727c-.885 1.975-2.865 3.061-5.16 3.061-3.104 0-5.639-2.67-5.639-5.771C6.36 9.02 8.896 6.42 12 6.42c1.134 0 2.189.295 3.061.871l4.542-4.561C17.541 1.031 14.893 0 12 0 5.37 0 0 5.367 0 12c0 6.623 5.37 12 12 12s12-5.115 12-11.738c0-.896-.103-1.35-.284-2.337z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>JustGiving</title><path d="M23.716 9.925H15.33l-4.898 4.919h6.727c-.885 1.975-2.865 3.061-5.16 3.061-3.104 0-5.639-2.67-5.639-5.771C6.36 9.02 8.896 6.42 12 6.42c1.134 0 2.189.295 3.061.871l4.542-4.561C17.541 1.031 14.893 0 12 0 5.37 0 0 5.367 0 12c0 6.623 5.37 12 12 12s12-5.115 12-11.738c0-.896-.103-1.35-.284-2.337z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/k3s.svg b/assets/lib/simple-icons/icons/k3s.svg
new file mode 100644
index 00000000..5513a881
--- /dev/null
+++ b/assets/lib/simple-icons/icons/k3s.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>K3s</title><path d="M21.46 2.172H2.54A2.548 2.548 0 0 0 0 4.712v14.575a2.548 2.548 0 0 0 2.54 2.54h18.92a2.548 2.548 0 0 0 2.54-2.54V4.713a2.548 2.548 0 0 0-2.54-2.54ZM10.14 16.465 5.524 19.15a1.235 1.235 0 1 1-1.242-2.137L8.9 14.33a1.235 1.235 0 1 1 1.241 2.136zm1.817-4.088h-.006a1.235 1.235 0 0 1-1.23-1.24l.023-5.32a1.236 1.236 0 0 1 1.236-1.23h.005a1.235 1.235 0 0 1 1.23 1.241l-.023 5.32a1.236 1.236 0 0 1-1.235 1.23zm8.17 6.32a1.235 1.235 0 0 1-1.688.453l-4.624-2.67a1.235 1.235 0 1 1 1.235-2.14l4.624 2.67a1.235 1.235 0 0 1 .452 1.688z"/></svg>
diff --git a/assets/lib/simple-icons/icons/kaggle.svg b/assets/lib/simple-icons/icons/kaggle.svg
index 0280a1fe..372d0865 100644
--- a/assets/lib/simple-icons/icons/kaggle.svg
+++ b/assets/lib/simple-icons/icons/kaggle.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Kaggle icon</title><path d="M18.825 23.859c-.022.092-.117.141-.281.141h-3.139c-.187 0-.351-.082-.492-.248l-5.178-6.589-1.448 1.374v5.111c0 .235-.117.352-.351.352H5.505c-.236 0-.354-.117-.354-.352V.353c0-.233.118-.353.354-.353h2.431c.234 0 .351.12.351.353v14.343l6.203-6.272c.165-.165.33-.246.495-.246h3.239c.144 0 .236.06.285.18.046.149.034.255-.036.315l-6.555 6.344 6.836 8.507c.095.104.117.208.07.358"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Kaggle</title><path d="M.1025 7.3475c-.0681 0-.1022.0341-.1022.102v6.752c0 .0681.034.1022.1022.1022h.7049c.068 0 .1022-.034.1022-.1023v-1.481l.4187-.3985 1.5016 1.91c.041.0477.0884.0716.143.0716h.9091c.0476 0 .0748-.0135.0817-.0407.0135-.041.0066-.075-.0206-.1023l-1.9816-2.4618 1.9002-1.8384c.0204-.0205.0237-.051.01-.092-.0137-.0339-.0408-.051-.0816-.051h-.9398c-.0477 0-.0953.024-.143.0716L.9096 11.607V7.4496c0-.0679-.0342-.102-.1022-.102zm18.0417 0c-.068 0-.102.0341-.102.102v6.752c0 .0681.034.102.102.102h.705c.068 0 .102-.034.102-.102v-6.752c0-.068-.034-.102-.102-.102zM5.961 9.6254c-.5653 0-1.11.1806-1.6343.5415-.0545.0545-.0648.102-.0307.143l.3676.5208c.0272.0477.0717.0545.133.0204.3948-.2722.783-.4086 1.1644-.4086.2927 0 .5158.0886.669.2656.1532.1771.2197.3917.1992.6436-.6606.0681-1.1545.1495-1.4813.245-.8308.2383-1.2461.6913-1.2461 1.3586 0 .4222.1533.7695.4598 1.0419.3132.2654.6845.3982 1.1134.3982.4698 0 .8545-.1125 1.1542-.3372v.1432c0 .0682.0374.102.1123.102h.7048c.068 0 .102-.0338.102-.102V11.372c0-.6604-.2245-1.1406-.6739-1.4403-.3065-.2043-.6776-.3063-1.1134-.3063zm4.3225 0c-.6742 0-1.195.2622-1.5627.7865-.3133.4359-.4699.9671-.4699 1.5936 0 .6604.1634 1.2087.4903 1.6444.3744.4972.892.7455 1.5526.7455.5313 0 .9567-.1327 1.2768-.3982v.531c0 .858-.4122 1.287-1.236 1.287-.361 0-.732-.1907-1.1132-.572a.098.098 0 00-.0716-.0306c-.034 0-.0613.0102-.0817.0307l-.4802.48c-.0408.0613-.0375.1124.0103.1532.1361.1157.2554.2129.3576.2911.102.0783.1905.1413.2656.189.354.1975.7284.2961 1.1235.2961.6808 0 1.207-.1925 1.5781-.577.3711-.3848.5567-.9484.5567-1.6903V9.8196c0-.068-.034-.102-.102-.102h-.705c-.0682 0-.1021.034-.1021.102v.2043c-.3471-.2657-.7763-.3985-1.287-.3985zm4.8021 0c-.6742 0-1.195.2622-1.5627.7865-.3132.4359-.4699.9671-.4699 1.5936 0 .6604.1633 1.2087.4903 1.6444.3744.4972.892.7455 1.5526.7455.5311 0 .9566-.1327 1.2768-.3982v.531c0 .858-.4122 1.287-1.236 1.287-.361 0-.732-.1907-1.1133-.572a.098.098 0 00-.0716-.0306c-.034 0-.0612.0102-.0816.0307l-.48.48c-.0409.0613-.0376.1124.01.1532.1363.1157.2555.2129.3576.2911.1021.0783.1906.1413.2657.189.354.1975.7285.2961 1.1237.2961.6808 0 1.2068-.1925 1.5781-.577.371-.3848.5565-.9484.5565-1.6903V9.8196c0-.068-.034-.102-.102-.102h-.7049c-.0682 0-.1022.034-.1022.102v.2043c-.3474-.2657-.7763-.3985-1.287-.3985zm6.7457 0c-.6537 0-1.185.211-1.5936.6332-.4427.4632-.664 1.0283-.664 1.6956 0 .7083.225 1.2905.6743 1.7467.463.463 1.042.6945 1.7366.6945.6467 0 1.2154-.1838 1.7057-.5515.0545-.041.0545-.0884 0-.143l-.4802-.4903c-.041-.0409-.0919-.0409-.1533 0-.2998.2112-.6368.3167-1.0112.3167-.4222 0-.7729-.119-1.052-.3576-.2452-.2248-.3882-.5038-.429-.8375h3.3197c.0679 0 .1022-.0341.1022-.1023l.01-.2244c.0341-.6878-.1668-1.26-.6025-1.7162-.4224-.4426-.9432-.664-1.5627-.664zm-.0206.7865c.3268 0 .6062.1056.8377.3166.2452.211.371.4734.378.7865h-2.4618c.0613-.3269.2077-.5925.4392-.7968.2313-.2042.5004-.3063.8069-.3063zm-11.4249.102c.6196 0 1.0146.2181 1.1848.6538v1.6854c-.1702.4358-.5755.6538-1.2155.6538-.3133 0-.5687-.0986-.7661-.2963-.2656-.2518-.3983-.6538-.3983-1.2053 0-.9941.3984-1.4914 1.1951-1.4914zm4.802 0c.6196 0 1.0148.2181 1.1851.6538h-.0002v1.6854c-.1703.4358-.5755.6538-1.2155.6538-.3132 0-.5686-.0986-.7661-.2963-.2655-.2518-.3983-.6538-.3983-1.2053 0-.9941.3983-1.4914 1.195-1.4914zm-8.3586 1.6547v1.0215c-.286.286-.6675.412-1.1441.3779-.1703-.0135-.32-.0663-.4493-.1582-.1294-.0919-.2045-.2129-.2249-.3627-.0341-.2657.1158-.47.4495-.6129.2452-.1088.7013-.1974 1.3688-.2656z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/kahoot.svg b/assets/lib/simple-icons/icons/kahoot.svg
new file mode 100644
index 00000000..d09c1733
--- /dev/null
+++ b/assets/lib/simple-icons/icons/kahoot.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Kahoot!</title><path d="M20.557 18.87l2.747-17.513L16.174 0zM.696 2.348v19.078l4.035.14-.035-6.679 2.487-2.4 2.626 9.078h3.565L10.087 9.722l4.957-5.444-3.496-1.339L4.73 9.443V1.322zm18.295 17.86l-.99 2.331L20.12 24l2.088-1.235-.887-2.556Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/kaios.svg b/assets/lib/simple-icons/icons/kaios.svg
index ed71eb60..27a0ec77 100644
--- a/assets/lib/simple-icons/icons/kaios.svg
+++ b/assets/lib/simple-icons/icons/kaios.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>KaiOS icon</title><path d="M4.47 0a2.81 2.81 0 0 0-2.84 2.78v18.43A2.8 2.8 0 0 0 4.47 24a2.8 2.8 0 0 0 2.85-2.78V2.78A2.83 2.83 0 0 0 4.47 0zm9.4 8.54a2.8 2.8 0 0 0-3.89-.66 2.68 2.68 0 0 0-.68 3.8l8 11.15a2.81 2.81 0 0 0 3.88.66 2.68 2.68 0 0 0 .74-3.72l-.06-.09-7.98-11.14zm3.65-1.18a3.71 3.71 0 0 0 3.74-3.67A3.71 3.71 0 0 0 17.52.02a3.71 3.71 0 0 0-3.75 3.67 3.71 3.71 0 0 0 3.75 3.67z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>KaiOS</title><path d="M17.3419.0001a3.6735 3.6735 0 0 0-3.647 3.6735 3.6727 3.6727 0 0 0 3.6735 3.6734 3.6735 3.6735 0 1 0-.0265-7.3469zM4.6233.16a2.7459 2.7459 0 0 0-2.7475 2.7473v18.167a2.7474 2.7474 0 1 0 5.4942 0V2.9071A2.749 2.749 0 0 0 4.6233.16zm6.9494 7.2078a2.729 2.729 0 0 0-2.237 4.2947l7.8107 11.1541a2.729 2.729 0 1 0 4.4706-3.1307L13.8062 8.5311a2.729 2.729 0 0 0-2.2335-1.1634z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/kakao.svg b/assets/lib/simple-icons/icons/kakao.svg
new file mode 100644
index 00000000..76bfafa6
--- /dev/null
+++ b/assets/lib/simple-icons/icons/kakao.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Kakao</title><path d="M3.0743 10.4403l.655.4728-1.6101 2.0192 1.8647 2.2373-.646.5004-2.201-2.6924zm-2.2376 5.102H0V8.5121l.8367-.182zm20.944-4.3837c-.4364 0-.7715.1637-1.0049.4912-.2338.3274-.3505.8064-.3505 1.437 0 .6247.1167 1.096.3505 1.4143.2334.3183.5685.4775 1.0049.4775.4423 0 .7804-.1593 1.0143-.4775.2332-.3182.35-.7896.35-1.4142 0-.6307-.1168-1.1097-.35-1.4371-.234-.3275-.572-.4912-1.0143-.4912m0-.673c.691 0 1.234.2245 1.6277.673.3944.4488.5916 1.0915.5916 1.9283 0 .8244-.1955 1.4583-.5868 1.901-.3909.4422-.9356.6637-1.6325.6637-.691 0-1.234-.2215-1.6277-.6638-.3944-.4426-.5916-1.0765-.5916-1.901 0-.8367.1984-1.4794.5957-1.9282.3973-.4485.9385-.673 1.6236-.673m-5.534 4.4658a1.496 1.496 0 0 0 .3576-.0456 2.8804 2.8804 0 0 0 .3713-.1181 2.0066 2.0066 0 0 0 .3488-.1774 2.0778 2.0778 0 0 0 .2895-.2229v-1.1641h-.8693c-.441 0-.7626.0758-.9645.2274-.2025.1516-.3031.391-.3031.7185 0 .5214.2563.7822.7697.7822m-1.5704-.7458c0-.5032.1682-.887.5045-1.1504.337-.2638.826-.396 1.4691-.396h.964v-.3182c0-.77-.3393-1.155-1.0185-1.155-.2184 0-.447.0304-.6869.091-.2398.0608-.4594.1365-.659.2274l-.2457-.5913c.2487-.1394.517-.2469.8047-.323.2878-.0754.5685-.1136.8414-.1136 1.176 0 1.7646.6276 1.7646 1.8826v3.1833h-.6188l-.1-.5457c-.2488.2001-.5134.3547-.796.464-.2817.1092-.55.1637-.8046.1637-.4429 0-.7899-.1258-1.0416-.3775-.2515-.2517-.3772-.5987-.3772-1.0413m-1.6508-3.7653l.655.4728-1.6095 2.0192 1.864 2.2373-.6454.5004-2.201-2.6924zm-2.237 5.102h-.8367V8.5121l.8368-.182zm-4.4936-.5909c.1148 0 .2339-.0151.3576-.0456a2.8794 2.8794 0 0 0 .3713-.1181 1.9842 1.9842 0 0 0 .3488-.1774 2.0477 2.0477 0 0 0 .29-.2229v-1.1641h-.8698c-.4404 0-.762.0758-.9645.2274-.202.1516-.3031.391-.3031.7185 0 .5214.2563.7822.7697.7822m-1.5704-.7458c0-.5032.1682-.887.5052-1.1504.3363-.2638.826-.396 1.4684-.396h.9646v-.3182c0-.77-.3399-1.155-1.019-1.155-.218 0-.4471.0304-.6863.091-.2398.0608-.4595.1365-.6597.2274l-.2457-.5913c.2487-.1394.517-.2469.8053-.323.2878-.0754.5684-.1136.8408-.1136 1.1766 0 1.7646.6276 1.7646 1.8826v3.1833h-.6182l-.1001-.5457c-.2487.2001-.514.3547-.7958.464-.282.1092-.5501.1637-.8053.1637-.4423 0-.7893-.1258-1.041-.3775-.2516-.2517-.3778-.5987-.3778-1.0413Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/kakaotalk.svg b/assets/lib/simple-icons/icons/kakaotalk.svg
new file mode 100644
index 00000000..8e9f9b12
--- /dev/null
+++ b/assets/lib/simple-icons/icons/kakaotalk.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>KakaoTalk</title><path d="M22.125 0H1.875C.8394 0 0 .8394 0 1.875v20.25C0 23.1606.8394 24 1.875 24h20.25C23.1606 24 24 23.1606 24 22.125V1.875C24 .8394 23.1606 0 22.125 0zM12 18.75c-.591 0-1.1697-.0413-1.7317-.1209-.5626.3965-3.813 2.6797-4.1198 2.7225 0 0-.1258.0489-.2328-.0141s-.0876-.2282-.0876-.2282c.0322-.2198.8426-3.0183.992-3.5333-2.7452-1.36-4.5701-3.7686-4.5701-6.5135C2.25 6.8168 6.6152 3.375 12 3.375s9.75 3.4418 9.75 7.6875c0 4.2457-4.3652 7.6875-9.75 7.6875zM8.0496 9.8672h-.8777v3.3417c0 .2963-.2523.5372-.5625.5372s-.5625-.2409-.5625-.5372V9.8672h-.8777c-.3044 0-.552-.2471-.552-.5508s.2477-.5508.552-.5508h2.8804c.3044 0 .552.2471.552.5508s-.2477.5508-.552.5508zm10.9879 2.9566a.558.558 0 0 1 .108.4167.5588.5588 0 0 1-.2183.371.5572.5572 0 0 1-.3383.1135.558.558 0 0 1-.4493-.2236l-1.3192-1.7479-.1952.1952v1.2273a.5635.5635 0 0 1-.5627.5628.563.563 0 0 1-.5625-.5625V9.3281c0-.3102.2523-.5625.5625-.5625s.5625.2523.5625.5625v1.209l1.5694-1.5694c.0807-.0807.1916-.1252.312-.1252.1404 0 .2814.0606.3871.1661.0985.0984.1573.2251.1654.3566.0082.1327-.036.2542-.1241.3425l-1.2818 1.2817 1.3845 1.8344zm-8.3502-3.5023c-.095-.2699-.3829-.5475-.7503-.5557-.3663.0083-.6542.2858-.749.5551l-1.3455 3.5415c-.1708.5305-.0217.7272.1333.7988a.8568.8568 0 0 0 .3576.0776c.2346 0 .4139-.0952.4678-.2481l.2787-.7297 1.7152.0001.2785.7292c.0541.1532.2335.2484.4681.2484a.8601.8601 0 0 0 .3576-.0775c.1551-.0713.3041-.2681.1329-.7999l-1.3449-3.5398zm-1.3116 2.4433l.5618-1.5961.5618 1.5961H9.3757zm5.9056 1.3836c0 .2843-.2418.5156-.5391.5156h-1.8047c-.2973 0-.5391-.2314-.5391-.5156V9.3281c0-.3102.2576-.5625.5742-.5625s.5742.2523.5742.5625v3.3047h1.1953c.2974 0 .5392.2314.5392.5156z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/kalilinux.svg b/assets/lib/simple-icons/icons/kalilinux.svg
new file mode 100644
index 00000000..f308f111
--- /dev/null
+++ b/assets/lib/simple-icons/icons/kalilinux.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Kali Linux</title><path d="M12.778 5.943s-1.97-.13-5.327.92c-3.42 1.07-5.36 2.587-5.36 2.587s5.098-2.847 10.852-3.008zm7.351 3.095l.257-.017s-1.468-1.78-4.278-2.648c1.58.642 2.954 1.493 4.021 2.665zm.42.74c.039-.068.166.217.263.337.004.024.01.039-.045.027-.005-.025-.013-.032-.013-.032s-.135-.08-.177-.137c-.041-.057-.049-.157-.028-.195zm3.448 8.479s.312-3.578-5.31-4.403a18.277 18.277 0 0 0-2.524-.187c-4.506.06-4.67-5.197-1.275-5.462 1.407-.116 3.087.643 4.73 1.408-.007.204.002.385.136.552.134.168.648.35.813.445.164.094.691.43 1.014.85.07-.131.654-.512.654-.512s-.14.003-.465-.119c-.326-.122-.713-.49-.722-.511-.01-.022-.015-.055.06-.07.059-.049-.072-.207-.13-.265-.058-.058-.445-.716-.454-.73-.009-.016-.012-.031-.04-.05-.085-.027-.46.04-.46.04s-.575-.283-.774-.893c.003.107-.099.224 0 .469-.3-.127-.558-.344-.762-.88-.12.305 0 .499 0 .499s-.707-.198-.82-.85c-.124.293 0 .469 0 .469s-1.153-.602-3.069-.61c-1.283-.118-1.55-2.374-1.43-2.754 0 0-1.85-.975-5.493-1.406-3.642-.43-6.628-.065-6.628-.065s6.45-.31 11.617 1.783c.176.785.704 2.094.989 2.723-.815.563-1.733 1.092-1.876 2.97-.143 1.878 1.472 3.53 3.474 3.58 1.9.102 3.214.116 4.806.942 1.52.84 2.766 3.4 2.89 5.703.132-1.709-.509-5.383-3.5-6.498 4.181.732 4.549 3.832 4.549 3.832zM12.68 5.663l-.15-.485s-2.484-.441-5.822-.204C3.37 5.211 0 6.38 0 6.38s6.896-1.735 12.68-.717Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/kaniko.svg b/assets/lib/simple-icons/icons/kaniko.svg
new file mode 100644
index 00000000..d3d4c8ef
--- /dev/null
+++ b/assets/lib/simple-icons/icons/kaniko.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Kaniko</title><path d="M2.783 0h18.434c1.352 0 2.478.963 2.73 2.24a17.127 17.127 0 0 1-3.2 4.42 16.918 16.918 0 0 1-8.399 4.605V3.304h-.696V11.4c-.976.169-1.965.253-2.956.252v.696c1.011 0 1.998.086 2.956.252v8.096h.696v-7.961a16.918 16.918 0 0 1 8.399 4.605 17.127 17.127 0 0 1 3.2 4.42 2.783 2.783 0 0 1-2.73 2.24H2.783A2.783 2.783 0 0 1 0 21.217V2.783A2.783 2.783 0 0 1 2.783 0Zm18.456 7.152A17.712 17.712 0 0 0 24 3.572v16.856a17.712 17.712 0 0 0-2.761-3.58 17.802 17.802 0 0 0-8.891-4.815v-.066a17.802 17.802 0 0 0 8.891-4.815Z"/></svg>
diff --git a/assets/lib/simple-icons/icons/karlsruherverkehrsverbund.svg b/assets/lib/simple-icons/icons/karlsruherverkehrsverbund.svg
new file mode 100644
index 00000000..b4f45474
--- /dev/null
+++ b/assets/lib/simple-icons/icons/karlsruherverkehrsverbund.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Karlsruher Verkehrsverbund</title><path d="M12.91 6.089c-2.491 2.4-6.153 4.238-11.265 4.3l-.397 1.745h22.316L24 10.388H9.309c2.984-1.01 4.688-2.676 6.56-4.3zm10.45 6.721c-5.723.013-8.441 2.712-10.095 5.101h2.49c2.6-3.296 5.827-3.428 7.196-3.442zm-22.307.475L0 17.887h1.236l.488-2.173 1.097 2.173H4.27l-1.34-2.368 2.23-2.234H3.575l-1.723 1.869.436-1.87zm4.237 0l.509 4.602h1.517l2.63-4.602h-1.32l-1.852 3.463-.265-3.463zm4.89 0l.503 4.602h1.54l2.62-4.602h-1.32l-1.852 3.463-.268-3.463Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/kasasmart.svg b/assets/lib/simple-icons/icons/kasasmart.svg
new file mode 100644
index 00000000..7bdf643c
--- /dev/null
+++ b/assets/lib/simple-icons/icons/kasasmart.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Kasa Smart</title><path d="M12 0c-.5 0-1 .25-1.5.75L7.97 3.28l8.83 8.83c1 1 1.5 2 1.5 3V24h3.3c1.6 0 2.4-.8 2.4-2.4v-8.85c0-1-.5-2-1.5-3l-9-9C13 .25 12.5 0 12 0zM6.9 4.34L2.89 8.37 9.6 15.1c1 1 1.5 2 1.5 3V24h5.7v-8.89c-.03-.83-.6-1.46-1.06-1.94L6.91 4.34zm-5.08 5.1l-.32.31c-1 1-1.5 2-1.5 3v8.85C0 23.2.8 24 2.4 24h7.2v-5.9c-.03-.8-.56-1.42-1.06-1.95Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/kashflow.svg b/assets/lib/simple-icons/icons/kashflow.svg
new file mode 100644
index 00000000..b183c706
--- /dev/null
+++ b/assets/lib/simple-icons/icons/kashflow.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>KashFlow</title><path d="M16.278 2.141l-.83 2.702C8.007.174 2.958 4.724 2.958 4.724-1.638 8.564.49 14.678.495 14.678 1.252-.016 14.24 8.943 14.24 8.943c-.237 1.066-.996 2.63-.972 2.654l8.508-1.256zm7.228 7.181C22.747 24.016 9.76 15.057 9.76 15.057c.332-1.066 1.02-2.654 1.02-2.607L2.27 13.66l5.451 8.2.83-2.702c7.441 4.669 12.49.119 12.49.119 4.597-3.84 2.464-9.954 2.464-9.954z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/kaspersky.svg b/assets/lib/simple-icons/icons/kaspersky.svg
index 0f806b05..1863ca24 100644
--- a/assets/lib/simple-icons/icons/kaspersky.svg
+++ b/assets/lib/simple-icons/icons/kaspersky.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Kaspersky icon</title><path d="M10.812 12.01c0 .909-.555 1.34-1.25 1.34H9.14v-.55h.392c.42 0 .7-.224.7-.795 0-.563-.265-.842-.712-.842-.43 0-.736.264-.736.83v2.284H8.2V10.69h.579V11h.08a.94.94 0 0 1 .777-.377c.641 0 1.176.466 1.176 1.387zm-3.804-.237l-.384-.039c-.303-.027-.462-.109-.462-.287 0-.21.205-.33.497-.33.302 0 .497.144.512.345h.555c-.023-.52-.423-.839-1.063-.839-.645 0-1.08.342-1.08.843 0 .42.264.691.866.75l.392.038c.237.023.396.07.396.299 0 .206-.147.354-.54.354-.36 0-.539-.164-.601-.385h-.601c.057.5.48.89 1.202.89.68 0 1.119-.358 1.119-.89-.004-.461-.31-.702-.808-.75zm6.044.753c-.089.21-.306.366-.617.366-.422 0-.737-.277-.737-.871 0-.566.29-.882.745-.882.404 0 .633.24.656.606h-1.04v.42h1.611v-.275c0-.766-.508-1.263-1.23-1.263-.672 0-1.317.46-1.317 1.394 0 .936.645 1.394 1.316 1.394.613 0 1.056-.38 1.192-.89zm-9.126-1.903c-.633 0-1.107.331-1.165.839h.621c.043-.186.213-.326.54-.326.419 0 .555.22.555.49v.908c-.237.271-.513.396-.788.396-.288 0-.485-.14-.485-.384 0-.238.155-.385.45-.385h.461v-.416h-.48c-.662 0-1.033.331-1.033.839 0 .474.356.831.946.831.33 0 .621-.132.84-.29h.08v.224h.579v-1.774c.016-.656-.43-.952-1.122-.952zM0 13.348h.579V9.712H0zm2.43-2.658h-.706L.883 11.8v.346l.864 1.202h.718L1.45 11.971zm20.93 0l-.473 1.051c-.117.253-.225.501-.26.669h-.082c-.035-.168-.148-.408-.264-.66l-.474-1.06h-.641l1.115 2.388-.551 1.202h.617L24 10.69zm-2.321 0h-.707l-.842 1.107v.345l.865 1.203h.719l-1.014-1.378zm-3.627 1.083l-.383-.039c-.304-.027-.462-.109-.462-.287 0-.21.205-.33.497-.33.302 0 .496.144.511.346h.555c-.023-.521-.422-.84-1.063-.84-.645 0-1.08.342-1.08.843 0 .42.265.691.866.75l.393.038c.236.023.396.07.396.299 0 .206-.148.354-.54.354-.361 0-.54-.164-.601-.385h-.603c.059.5.481.89 1.204.89.68 0 1.118-.358 1.118-.89 0-.461-.31-.702-.808-.75zm1.196 1.576h.578V9.712h-.578zM14.788 11h-.082v-.31h-.578v2.66h.578v-1.391c0-.473.218-.749.653-.749h.365v-.587h-.213c-.4 0-.571.153-.723.377z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Kaspersky</title><path d="M10.812 12.014c0 .91-.555 1.34-1.25 1.34h-.424v-.546h.392c.419 0 .698-.226.698-.794 0-.563-.264-.844-.71-.844-.43 0-.738.265-.738.833v2.282H8.2v-3.589h.58v.309h.082a.94.94 0 0 1 .776-.375c.64 0 1.174.463 1.174 1.384zm-3.804-.237l-.386-.039c-.304-.027-.464-.11-.464-.287 0-.21.204-.33.497-.33.303 0 .496.143.512.347h.557c-.022-.518-.424-.838-1.064-.838-.645 0-1.08.342-1.08.843 0 .42.264.69.865.75l.392.039c.237.022.397.072.397.298 0 .204-.15.352-.54.352-.361 0-.539-.163-.601-.382H5.49c.06.5.481.89 1.203.89.678 0 1.12-.359 1.12-.888 0-.469-.31-.706-.805-.755zm6.047.753c-.091.208-.308.366-.616.366-.425 0-.739-.276-.739-.871 0-.568.292-.882.744-.882.403 0 .634.242.657.606h-1.043v.42h1.61v-.277c0-.766-.507-1.262-1.23-1.262-.672 0-1.317.457-1.317 1.395 0 .937.645 1.395 1.318 1.395.615 0 1.054-.38 1.19-.89zm-9.127-1.9c-.634 0-1.108.33-1.163.838h.623c.044-.188.215-.325.54-.325.42 0 .557.22.557.49v.91c-.237.27-.513.397-.788.397-.287 0-.486-.138-.486-.386 0-.237.155-.386.452-.386h.464v-.419h-.48c-.662 0-1.031.331-1.031.838 0 .474.358.833.948.833.331 0 .623-.133.838-.292h.083v.226h.579v-1.776c0-.656-.447-.948-1.136-.948zM0 13.354h.579v-3.64H0zm2.432-2.658h-.706l-.844 1.108v.348l.866 1.202h.717L1.45 11.975zm20.928 0l-.474 1.053c-.116.254-.226.502-.259.667h-.083c-.033-.165-.148-.408-.264-.661l-.474-1.059h-.64l1.114 2.387-.552 1.202h.618L24 10.696zm-2.322 0h-.706l-.843 1.108v.348l.865 1.202h.717l-1.015-1.379zm-3.625 1.08l-.386-.038c-.303-.027-.463-.11-.463-.287 0-.21.204-.33.496-.33.303 0 .496.143.513.347h.557c-.022-.518-.425-.838-1.064-.838-.645 0-1.081.342-1.081.843 0 .42.265.69.866.75l.391.039c.237.022.397.072.397.298 0 .204-.149.352-.54.352-.36 0-.538-.163-.6-.382h-.603c.06.5.481.89 1.203.89.678 0 1.12-.359 1.12-.888 0-.469-.31-.706-.806-.755zm1.193 1.578h.58v-3.64h-.58zm-3.817-2.35h-.083v-.308h-.579v2.658h.579v-1.39c0-.474.219-.75.65-.75h.367v-.584h-.212c-.4 0-.57.15-.722.375z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/katacoda.svg b/assets/lib/simple-icons/icons/katacoda.svg
new file mode 100644
index 00000000..2959eb00
--- /dev/null
+++ b/assets/lib/simple-icons/icons/katacoda.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Katacoda</title><path d="M6.248 3.623a.926.926 0 00-.228.014c-.192.085-.35.463-.457 1.1-.186 1.094-.18 2.53.017 3.597l.05.262-.208-.182c-.23-.202-.622-.476-.807-.56a1.652 1.652 0 00-.957-.112 5.65 5.65 0 01-.363.055c-.34.04-.573.155-.834.414a1.71 1.71 0 00-.41.637c-.05.139-.057.189-.057.42.002.21.013.302.06.478.073.27.316.882.364.91.08.05.139.002.232-.2.105-.223.293-.444.43-.505.092-.043.24-.054.26-.021.015.024-.2.345-.436.654-.198.26-.258.385-.293.61-.078.51.19 1.074.612 1.279.254.124.383.146.795.146.37-.002.368-.001.619-.082a6.92 6.92 0 01.465-.135l.212-.05.018.046c.022.057.004.107-.111.32-.211.384-.243.425-.426.518-.44.229-1.054.33-1.361.225a3.43 3.43 0 00-.413-.09c-1.116-.174-1.183-.192-1.337-.334-.177-.163-.33-.504-.465-1.05-.046-.18-.09-.31-.096-.292l-.12.412c-.27.954-.315 1.05-.663 1.413a5.74 5.74 0 00-.303.33c-.041.058-.05.163-.016.185a.583.583 0 01.08.106c.072.12.606.643.815.802.253.194.393.269.807.432.722.285.896.318 1.978.38.396.025.736-.041.93-.183.046-.032.15-.083.234-.111.085-.026.234-.082.334-.121.098-.041.187-.074.196-.074.01 0 .05.149.09.33.04.183.08.346.089.36.007.016.026-.16.04-.39.025-.415.026-.42.085-.47l.059-.05.015.06c.01.034.032.13.05.214.049.203.146.44.24.59.084.129.359.472.373.46a5.202 5.202 0 00-.02-.36c-.015-.242-.017-.36-.002-.375.015-.015.059.036.133.158.527.86 1.424 1.722 2.387 2.295.95.566 2.434 1.126 3.845 1.453.333.076.91.188.973.188.02 0 .108.045.2.1.663.406 1.502.617 2.097.532.496-.071 1.106-.374 1.404-.7a.56.56 0 01.258-.161 6.48 6.48 0 001.068-.55c.44-.292.74-.58.96-.923a2.65 2.65 0 01.298-.347 5.15 5.15 0 001.12-1.73c.104-.273.218-.724.259-1.04a6.343 6.343 0 00-.023-1.365l-.038-.205.334-.318c1.226-1.174 1.973-2.355 2.237-3.541.093-.42.1-.884.013-1.051-.074-.144-.18-.123-.78.158-.86.405-1.337.55-1.98.607-.26.022-.694.003-.833-.04a.559.559 0 01-.14-.145c-.277-.381-.82-.934-1.243-1.278-.47-.376-1.142-.771-1.64-.96l-.19-.07.13-.073c.214-.12.628-.29.817-.334.098-.022.356-.067.578-.102l.404-.058-.49-.072c-1.012-.146-1.714-.207-2.443-.211-.274 0-.496-.006-.496-.01 0-.005.047-.063.103-.133.238-.283.408-.622.47-.937.016-.09.037-.286.046-.436l.016-.273-.163.218a2.495 2.495 0 01-.832.737c-.402.233-.77.335-1.502.418-1.56.174-2.654.333-3.144.457l-.205.052-.1-.07a19.734 19.734 0 01-.297-.21 9.984 9.984 0 00-1.96-1.143 7.619 7.619 0 01-1.032-.565c-.45-.28-.56-.325-.785-.334zm-.084.242c.02-.007.043-.004.08.002.044.007.136.037.2.063.067.026.265.137.439.246.464.29.716.427 1.12.607a9.07 9.07 0 011.642.938c.648.453.847.64 1.308 1.24.187.244.49.576.524.576.02 0-.15-.336-.344-.674a4.52 4.52 0 00-.404-.593c-.096-.116-.106-.106.156-.16l.158-.032.174.162c.093.09.253.216.35.282.195.128.35.28.488.47.122.168.15.225.27.58.119.344.157.434.198.45.08.026.13-.057.176-.29.096-.48.066-.75-.158-1.388a10.419 10.419 0 01-.152-.453c0-.018.907-.143 1.025-.141.024 0 .043.034.063.104.045.187.108.3.326.595.222.3.386.596.445.805.02.065.065.3.102.52.085.513.187.919.298 1.167.122.28.156.433.166.784.014.41.07.594.18.572.079-.015.205-.51.244-.97.048-.54.075-1.59.05-1.938-.034-.451-.034-1.217 0-1.237.014-.008.207-.02.429-.027l.408-.01.092.106c.135.157.178.259.178.42 0 .17.1.568.226.91.25.675.405 1.238.453 1.652a.95.95 0 01-.021.436c-.09.394-.121.66-.123 1.064-.003.418.017.537.097.58.166.087.363-.218.41-.642.01-.098.095-.473.186-.832.105-.427.173-.758.197-.948.029-.235.12-.85.205-1.353l.014-.084.26.176c.392.26.375.24.449.502.09.317.163.617.23.937.055.268.057.29.06 1.219 0 .84.005.955.038 1.027.026.057.052.082.084.082.072 0 .228-.163.313-.326.109-.205.139-.3.154-.473.017-.19.04-.314.133-.691.054-.218.08-.382.092-.578l.015-.272.098.13c.205.267.163.24.453.273.366.039.968.02 1.275-.041.497-.1.988-.276 1.623-.58.21-.1.39-.184.4-.184.014 0 .017.11.009.299-.033.81-.47 1.832-1.166 2.726-.436.562-1.25 1.407-1.274 1.325-.004-.016-.051-.144-.101-.284-.114-.317-.505-1.108-.536-1.08-.004.005.04.168.1.364.06.196.115.378.12.404.004.024.017.088.032.14.013.05.02.1.016.104-.024.024-.534.14-.832.19-.87.148-1.734.13-2.48-.045-.728-.17-1.364-.46-2.686-1.217-1.6-.92-2.058-1.113-2.97-1.252-.255-.04-.41-.05-.866-.05-.832-.003-1.47.084-2.71.362-.904.2-1.416.256-1.673.182-.117-.035-.131-.046-.22-.186-.053-.08-.115-.151-.14-.158-.034-.01-.055-.07-.12-.345-.113-.482-.11-.45-.078-.413.03.04.035.077-.098-.457a12.082 12.082 0 01-.322-1.742c-.035-.352-.035-1.596 0-1.97.082-.85.22-1.434.377-1.602.028-.03.046-.048.066-.055zm.37.973c.005.012.033.045.085.107.065.079.435.46.824.848.388.388.76.78.83.875.484.653.858 1.708.707 1.998-.093.183-.287.23-.47.113-.118-.074-.282-.284-.375-.482a2.926 2.926 0 01-.145-.424c-.041-.154-.075-.27-.08-.258l-.072.407c-.072.43-.103.882-.072 1.054.028.148.007.18-.063.098-.041-.05-.065-.12-.094-.281a31.518 31.518 0 00-.088-.463c-.056-.292-.05-.303-.11.304a6.308 6.308 0 01-.054.457c-.045.21-.196.39-.32.39-.1 0-.224-.07-.267-.15l-.045-.077.015.076c.02.106.124.332.172.37.057.047.245.038.35-.017a.573.573 0 00.25-.261c.037-.072.055-.09.084-.08.02.01.09.022.158.027.113.006.13.002.195-.057l.074-.066-.007-.338c-.005-.23 0-.34.015-.34.013 0 .024.009.024.018 0 .047.255.293.357.345A.632.632 0 009.049 9c.265-.194.293-.606.082-1.244a5.835 5.835 0 00-.553-1.123c-.276-.414-.89-.98-1.654-1.522-.15-.106-.308-.221-.35-.252-.034-.025-.047-.033-.04-.021zm9.333.12a.322.322 0 01-.035.105c-.057.124-.213.37-.31.476l-.071.084-.117-.115a.807.807 0 01-.115-.13c0-.008.084-.063.19-.124s.25-.155.32-.21a.666.666 0 01.138-.087zM3.734 7.942a1.83 1.83 0 01.512.016c.078.017.195.054.26.084.117.052.482.28.545.344.017.017.092.078.164.135.14.113.338.33.445.486.083.117.184.466.164.566-.015.092-.148.237-.38.42-.273.216-.35.333-.35.533 0 .185.108.447.27.664.056.072.056.078.019.118-.03.034-.056.04-.143.029-.146-.02-.34-.096-.404-.154-.046-.046-.054-.074-.065-.31l-.01-.257-.085.174c-.103.21-.112.373-.031.49.054.08.228.185.38.23l.102.032-.174-.012a.848.848 0 01-.574-.27c-.157-.156-.207-.258-.19-.378.02-.12.204-.468.352-.668.068-.09.137-.192.154-.227l.034-.066-.084.07a1.564 1.564 0 00-.163.153l-.193.222c-.324.368-.386.558-.26.809.124.242.508.516.772.55.218.029.228.034.228.09 0 .09.062.18.164.24.103.06.124.094.06.1a.35.35 0 00-.136.034 4.588 4.588 0 01-1.07.26c-.74.047-1.295-.446-1.254-1.114.013-.23.07-.36.283-.64.42-.552.795-1.207.93-1.628.144-.452.044-.782-.31-1.021-.118-.08-.123-.07.038-.104zm-.638.137c.043 0 .132.01.195.024.23.05.44.197.508.363.059.137.049.15-.086.14a.291.291 0 00-.217.047.937.937 0 00-.262.27c-.008.015.042 0 .112-.033.167-.077.375-.084.445-.012.068.067.047.142-.145.527l-.16.328-.072-.017a1.4 1.4 0 00-.215-.012.462.462 0 00-.26.065 1.35 1.35 0 00-.398.402.317.317 0 01-.06.086c-.024 0-.186-.47-.23-.664-.077-.353-.037-.652.138-.946.167-.283.52-.566.707-.568zM5.91 9.887c.033-.024.048.036.143.342l.09.285-.096.097a.573.573 0 00-.168.41v.104l-.125.02-.125.017-.086-.11c-.118-.154-.216-.368-.227-.503-.008-.105-.004-.116.075-.203.048-.053.158-.152.248-.22.089-.07.19-.155.228-.192.02-.021.032-.04.043-.047zm4.627.648a9.87 9.87 0 011.11.008c.139.013.37.046.519.074.703.137 1.175.348 2.564 1.143 2.014 1.154 2.807 1.424 4.19 1.424a6.56 6.56 0 001.816-.23c.13-.034.238-.06.24-.057.04.047.172.633.212.93.034.26.034.87 0 1.1a4.606 4.606 0 01-.213.827c-.244.64-.68 1.318-1.133 1.76l-.131.129-.172-.07-.232-.092c-.035-.014-.06-.041-.06-.061 0-.028-.003-.028-.022 0-.018.026-.022.028-.022.004 0-.015-.045-.071-.1-.12a3.952 3.952 0 01-.32-.36c-.268-.332-.493-.57-.693-.733-.124-.1-.157-.142-.194-.244a3.936 3.936 0 01-.17-.62l-.02-.122.167.082c.09.045.263.122.383.17.723.29 1.193.353 1.502.203.278-.135.647-.7.834-1.274l.066-.197.125-.027c.072-.016.17-.035.223-.041.05-.007.097-.02.1-.032.017-.024-.256-.185-.446-.261-.405-.166-.904-.231-1.281-.172-.246.04-.578.18-.807.334-.315.213-.654.644-.806 1.025l-.06.147-.017-.178a4.05 4.05 0 01.053-.89c.02-.12.03-.214.022-.21-.022.016-.144.353-.192.534a2.74 2.74 0 00-.013 1.378l.017.063-.084-.043c-.215-.107-.514-.186-.888-.234a1.979 1.979 0 00-.555-.01 3.761 3.761 0 00-.502.086c-.126.035-.347.092-.488.129a7.273 7.273 0 01-1.891.242c-.958-.002-1.504-.107-2.15-.416-.934-.45-1.9-1.24-3.018-2.48a22.018 22.018 0 00-1.344-1.327c-.305-.272-.4-.402-.476-.635-.053-.165-.045-.27.03-.36l.052-.056.056.086c.105.157.35.246.684.246.31 0 .725-.07 1.728-.293a13.633 13.633 0 011.48-.25l.327-.03zm-4.69.79c.048.004.082.019.096.046.02.033.017.1-.011.272-.035.213-.035.23 0 .308l.035.084-.092.196a6.64 6.64 0 00-.133.289l-.037.097-.055-.05c-.098-.092-.142-.216-.142-.397 0-.155-.005-.17-.057-.211-.032-.026-.07-.047-.084-.047a.202.202 0 01-.086-.045l-.056-.047.046-.082c.07-.124.305-.346.403-.38a.455.455 0 01.174-.032zm5.278.308c-.14 0-.28.01-.38.03-.262.053-.542.16-.974.372-.346.172-.615.328-.722.424-.011.009.053-.002.14-.023.09-.022.303-.062.477-.088.174-.024.342-.048.375-.055.05-.01.077.016.242.236.403.538.916 1.135 1.297 1.514.277.274.443.402.559.424.037.006.166.033.293.056.862.17 1.6.223 1.834.13.228-.088.66-.407 1.05-.766.12-.111.278-.25.35-.31.09-.071.113-.1.076-.09-.13.038-.314.06-.6.074-.337.015-.597-.013-.785-.082-.167-.064-.228-.112-.87-.696a9.217 9.217 0 00-.714-.607c-.22-.161-.54-.318-.69-.34a2.139 2.139 0 01-.24-.076 2.928 2.928 0 00-.343-.1 2.146 2.146 0 00-.375-.027zm-4.781.28l.066.058c.037.03.263.238.5.463.24.222.624.616.86.873.927 1.016 1.606 1.63 2.353 2.129 1.002.67 1.905.92 3.19.888.794-.017 1.389-.115 2.199-.357.699-.21 1.514-.12 2.1.236.317.194.557.418.91.854.343.424.438.509.716.648.13.068.252.126.27.133.048.015-.055.157-.283.396-.401.418-1.03.805-1.704 1.05a.524.524 0 00-.267.18c-.192.206-.47.385-.822.524-.6.238-1.267.156-2.088-.254-.275-.137-.336-.177-.43-.28a1.898 1.898 0 01-.176-.243l-.068-.125.014.11c.006.058.024.14.037.179.01.04.018.078.01.084-.023.024-1.395-.275-1.434-.314-.01-.01.005-.071.03-.141.056-.168.077-.374.04-.418-.041-.048-.157-.04-.277.02a.852.852 0 01-.313.08c-.113.013-.29.045-.392.076l-.19.052-.127-.042c-.263-.092-.903-.356-.896-.372a1.48 1.48 0 01.182-.146c.222-.163.439-.365.48-.443.04-.08.04-.204-.002-.24-.026-.02-.078-.015-.268.03a3.24 3.24 0 01-.384.069 2.47 2.47 0 00-.535.117.95.95 0 01-.483.049c-.16-.017-.183-.027-.392-.166a9.654 9.654 0 01-.85-.668l-.102-.094h.21c.193-.002.242-.01.538-.105.45-.144.654-.281.64-.434-.01-.083-.017-.086-.487-.144a4.665 4.665 0 01-.522-.098 4.231 4.231 0 00-.37-.086c-.151-.028-.27-.072-.513-.185a25.31 25.31 0 00-.44-.2c-.14-.054-.181-.11-.353-.457a3.124 3.124 0 00-.09-.172c-.012-.015-.18.18-.202.239-.014.03-.032.098-.047.152l-.028.098-.04-.131a2.516 2.516 0 01-.104-.69c0-.174.004-.194.039-.183.02.006.122.03.224.054.105.024.28.076.39.116.204.07.21.07.608.07.336 0 .438-.01.608-.05.435-.1.462-.154.164-.37a7.78 7.78 0 01-.326-.254 1.715 1.715 0 00-.5-.306 1.51 1.51 0 01-.238-.12c-.105-.07-.325-.3-.49-.511a1.495 1.495 0 00-.206-.221 1.797 1.797 0 00-.318-.184c-.03-.008.068-.242.242-.566zm4.802.247c.15.002.29.017.31.028.03.017.02.038-.071.16-.185.248-.28.607-.248.968.017.199.027.2-.164-.021a2.999 2.999 0 01-.446-.695c-.163-.34-.161-.33-.05-.36a2.06 2.06 0 01.67-.08zm.606.123c.006 0 .076.035.154.078.079.044.205.122.28.176l.14.098-.07.074c-.255.294-.283.767-.076 1.287.043.107.062.18.047.18-.042 0-.322-.142-.405-.203-.165-.124-.372-.354-.435-.48a.513.513 0 01-.065-.294c.002-.348.113-.642.31-.82a.848.848 0 01.12-.096zm-10.617.256c.008.009.045.09.082.182.128.309.28.504.469.6.145.073.443.145.785.189.5.065.715.104.883.158.29.09.783.06 1.18-.076.069-.024.124-.036.124-.026 0 .04-.241.237-.383.31-.463.245-1.168.33-1.656.21-.11-.028-.194-.044-.19-.035.02.03.617.213.817.248.194.033.442.033.586-.002.04-.011.034 0-.033.043a3.1 3.1 0 01-1.145.424 8.498 8.498 0 00-.472.09c-.242.054-.338.048-.623-.047-.35-.116-.66-.325-1.041-.695l-.225-.215.186-.19c.35-.367.4-.447.558-.93.046-.14.09-.248.098-.24zm4.338.174c.02-.015.044-.001.127.066.034.029.034.038.005.106a7 7 0 00-.22.812c-.052.244-.06.32-.063.71 0 .239.01.496.018.57l.017.134-.125.063c-.07.037-.17.078-.224.094a.68.68 0 00-.153.064c-.06.044-.152.075-.152.053a.24.24 0 01.04-.072.606.606 0 00.064-.123c.024-.068.148-.371.26-.64a.977.977 0 00.06-.155c-.002 0-.06.11-.125.246-.155.313-.36.622-.484.722-.207.17-.446.208-1.07.166-.69-.045-.91-.088-1.366-.254-.361-.13-.797-.314-.797-.335 0-.011.095.017.213.058.31.11.446.114.799.03.157-.04.398-.093.537-.124a4.14 4.14 0 00.426-.111c.372-.124.836-.4 1.133-.67.274-.255.678-.768.953-1.22.058-.096.116-.181.127-.19zm7.304.31c.009 0 .073.06.145.13.102.104.143.13.195.13.05 0 .09.023.153.09.087.087.088.09.085.256 0 .15-.008.18-.08.318-.143.272-.125.26-.441.272a3.808 3.808 0 01-.416-.01l-.137-.016.153-.185c.15-.187.302-.453.302-.527 0-.024-.04-.067-.097-.104-.055-.033-.098-.067-.098-.078 0-.01.054-.016.12-.016h.126l-.014-.13c-.006-.071-.004-.13.004-.13zm.752.74l.059.06c.033.034.128.162.213.288.148.22.153.23.105.246-.045.02-.623.024-.64.006a.595.595 0 01.08-.144 1.38 1.38 0 00.138-.3l.045-.155zm6.014.175c.015 0 .03.02.039.046.02.077.016.34-.006.354-.01.006-.027.066-.033.129-.06.46-.354.824-.732.9l-.075.014.05-.074c.09-.133.179-.343.196-.45.013-.104-.003-.378-.03-.42-.005-.01-.054-.02-.104-.02h-.092l.11-.071c.317-.205.655-.408.677-.408zm.223.187c.02-.022.21 0 .394.043.214.05.214.05.166.188-.183.518-.473.974-.693 1.087a.76.76 0 01-.414.047l-.084-.017.129-.092c.298-.22.484-.632.484-1.08 0-.087.007-.167.018-.176zm-1.36.772c.02.01.036.07.074.195.024.078.05.158.06.178.012.03-.014.025-.151-.032-.092-.037-.166-.075-.166-.086 0-.01.04-.08.09-.154.05-.074.074-.112.093-.101zm-2.066 1.375c-.011 0-.075.008-.14.017-.256.035-.508.14-.684.29l-.088.073.082.149c.159.292.412.563.654.71.14.083.137.076.043.407-.094.324-.09.32-.271.365-.13.033-.24.04-.553.04h-.393l-.222-.077c-.45-.16-.726-.37-.983-.756-.19-.28-.237-.33-.517-.53-.273-.191-.295-.23-.188-.317l.059-.047-.078-.002a.585.585 0 00-.541.36c-.048.13-.057.293-.022.36.035.064.05.053.106-.076a.687.687 0 01.128-.197c.094-.094.125-.091.297.018.246.159.402.315.582.588.096.145.206.298.243.34.087.102.27.254.363.304.04.022.15.105.24.186.09.08.22.174.293.207.15.07.477.172.762.242.357.085.773.05 1.039-.082l.1-.05.124.042c.445.152.95.07 1.235-.205.315-.303.432-.716.29-1.025-.051-.118-.212-.315-.255-.315-.01 0 .003.056.027.123.057.16.062.454.01.602a1.167 1.167 0 01-.266.427.957.957 0 01-.203.13c-.11.052-.143.056-.38.056-.242-.002-.275-.007-.432-.07a2.244 2.244 0 01-.307-.157l-.137-.091.05-.135c.028-.074.07-.23.099-.346l.049-.21.13-.05c.414-.148.69-.38.803-.675l.043-.116-.095-.086a1.954 1.954 0 00-.584-.328c-.14-.045-.44-.102-.512-.093z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/katana.svg b/assets/lib/simple-icons/icons/katana.svg
index b79e9768..30b284ce 100644
--- a/assets/lib/simple-icons/icons/katana.svg
+++ b/assets/lib/simple-icons/icons/katana.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Katana icon</title><path d="M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0zm.016 22.762H12c-5.95-.009-10.765-4.84-10.756-10.789.009-5.95 4.839-10.766 10.789-10.757 5.943.009 10.756 4.829 10.756 10.773 0 5.95-4.823 10.773-10.773 10.773zm9.475-10.857a5.562 5.562 0 0 1-9.142 3.214 6.331 6.331 0 0 0 3.251-2.062l.104.169c.339.584.568 1.226.676 1.893a6.281 6.281 0 0 0-.349-2.656 6.328 6.328 0 0 0-8.94-8.63 5.563 5.563 0 0 1 7.418 6.256 6.334 6.334 0 0 0-3.425-1.762l.093-.175a5.53 5.53 0 0 1 1.304-1.533 6.31 6.31 0 0 0-2.122 1.636 6.327 6.327 0 0 0-3.016 12.044 5.564 5.564 0 0 1 1.713-9.562 6.33 6.33 0 0 0 .185 3.818h-.186a5.535 5.535 0 0 1-1.98-.36 6.295 6.295 0 0 0 2.471 1.025 6.328 6.328 0 0 0 8.513 2.758 6.319 6.319 0 0 0 3.432-6.073zm-11.018-1.443a5.582 5.582 0 0 1 3.6.998 5.584 5.584 0 0 1-2.667 2.618 5.57 5.57 0 0 1-.933-3.616z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Katana</title><path d="M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0zm.016 22.762H12c-5.95-.009-10.765-4.84-10.756-10.789.009-5.95 4.839-10.766 10.789-10.757 5.943.009 10.756 4.829 10.756 10.773 0 5.95-4.823 10.773-10.773 10.773zm9.475-10.857a5.562 5.562 0 0 1-9.142 3.214 6.331 6.331 0 0 0 3.251-2.062l.104.169c.339.584.568 1.226.676 1.893a6.281 6.281 0 0 0-.349-2.656 6.328 6.328 0 0 0-8.94-8.63 5.563 5.563 0 0 1 7.418 6.256 6.334 6.334 0 0 0-3.425-1.762l.093-.175a5.53 5.53 0 0 1 1.304-1.533 6.31 6.31 0 0 0-2.122 1.636 6.327 6.327 0 0 0-3.016 12.044 5.564 5.564 0 0 1 1.713-9.562 6.33 6.33 0 0 0 .185 3.818h-.186a5.535 5.535 0 0 1-1.98-.36 6.295 6.295 0 0 0 2.471 1.025 6.328 6.328 0 0 0 8.513 2.758 6.319 6.319 0 0 0 3.432-6.073zm-11.018-1.443a5.582 5.582 0 0 1 3.6.998 5.584 5.584 0 0 1-2.667 2.618 5.57 5.57 0 0 1-.933-3.616z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/kaufland.svg b/assets/lib/simple-icons/icons/kaufland.svg
new file mode 100644
index 00000000..2887cb14
--- /dev/null
+++ b/assets/lib/simple-icons/icons/kaufland.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Kaufland</title><path d="M0 24h24V0H0zm23.008-.989H.989V.989h22.022zM3.773 3.776h7.651v7.65H3.773zm8.801 0v7.652l7.653-7.652zm-8.801 8.8h7.651v7.651H3.773zm8.801-.004v7.652h7.653z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/kde.svg b/assets/lib/simple-icons/icons/kde.svg
index 306db765..a11654e3 100644
--- a/assets/lib/simple-icons/icons/kde.svg
+++ b/assets/lib/simple-icons/icons/kde.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>KDE icon</title><path d="M13.881 0L9.89.382v16.435l3.949-.594V9.216l5.308 7.772 4.162-1.317-5.436-7.475 5.479-7.05L19.105.17 13.84 7.22zM4.834 4.005a.203.203 0 0 0-.123.059L3.145 5.63a.203.203 0 0 0-.03.248L4.949 8.9a7.84 7.84 0 0 0-.772 1.759l-3.367.7a.203.203 0 0 0-.162.199v2.215c0 .093.064.174.155.196l3.268.8a7.83 7.83 0 0 0 .801 2.03L2.98 19.683a.203.203 0 0 0 .027.254l1.566 1.567a.204.204 0 0 0 .249.03l2.964-1.8c.582.336 1.21.6 1.874.78l.692 3.325c.02.094.102.161.198.161h2.215a.202.202 0 0 0 .197-.155l.815-3.332a7.807 7.807 0 0 0 1.927-.811l2.922 1.915c.08.053.186.042.254-.026l1.567-1.566a.202.202 0 0 0 .03-.248l-1.067-1.758-.345.11a.12.12 0 0 1-.135-.047L17.371 15.8a6.347 6.347 0 1 1-8.255-8.674V5.488c-.401.14-.79.31-1.159.511l-.001-.002-2.99-1.96a.203.203 0 0 0-.132-.033Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>KDE</title><path d="M13.881 0L9.89.382v16.435l3.949-.594V9.216l5.308 7.772 4.162-1.317-5.436-7.475 5.479-7.05L19.105.17 13.84 7.22zM4.834 4.005a.203.203 0 0 0-.123.059L3.145 5.63a.203.203 0 0 0-.03.248L4.949 8.9a7.84 7.84 0 0 0-.772 1.759l-3.367.7a.203.203 0 0 0-.162.199v2.215c0 .093.064.174.155.196l3.268.8a7.83 7.83 0 0 0 .801 2.03L2.98 19.683a.203.203 0 0 0 .027.254l1.566 1.567a.204.204 0 0 0 .249.03l2.964-1.8c.582.336 1.21.6 1.874.78l.692 3.325c.02.094.102.161.198.161h2.215a.202.202 0 0 0 .197-.155l.815-3.332a7.807 7.807 0 0 0 1.927-.811l2.922 1.915c.08.053.186.042.254-.026l1.567-1.566a.202.202 0 0 0 .03-.248l-1.067-1.758-.345.11a.12.12 0 0 1-.135-.047L17.371 15.8a6.347 6.347 0 1 1-8.255-8.674V5.488c-.401.14-.79.31-1.159.511l-.001-.002-2.99-1.96a.203.203 0 0 0-.132-.033Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/kdenlive.svg b/assets/lib/simple-icons/icons/kdenlive.svg
new file mode 100644
index 00000000..6a2aaf44
--- /dev/null
+++ b/assets/lib/simple-icons/icons/kdenlive.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Kdenlive</title><path d="m8.727 1.554 2.727 4.334v16.558h1.091V5.889l2.728-4.335zm-6 4.948V9.8h7.091c.003-.83 0-1.672-.006-2.498 0-.383-.356-.732-.718-.8H2.727zm12.303.001c-.402.024-.835.41-.834.837l-.014 12.619c0 .57.767 1.065 1.207.727l8.28-6.331c.441-.335.44-1.12 0-1.455l-8.265-6.287a.553.553 0 0 0-.374-.11zM-.001 12v3.299h9.818V12zm4.363 5.497v3.3h5.455v-3.3z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/keepassxc.svg b/assets/lib/simple-icons/icons/keepassxc.svg
index df3a3d3a..5b2c74a5 100644
--- a/assets/lib/simple-icons/icons/keepassxc.svg
+++ b/assets/lib/simple-icons/icons/keepassxc.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>KeePassXC icon</title><path d="M12 0C5.378 0 0 5.378 0 12c0 6.623 5.378 12 12 12 6.623 0 12-5.377 12-12 0-6.622-5.377-12-12-12zm0 .791a11.203 11.203 0 0 1 11.209 11.21A11.202 11.202 0 0 1 12 23.208 11.203 11.203 0 0 1 .791 12 11.203 11.203 0 0 1 12.001.791zm0 1.871a9.356 9.356 0 0 0-1.705.162A1.746 1.746 0 0 0 12 4.95a1.746 1.746 0 0 0 1.706-2.126A9.342 9.342 0 0 0 12 2.662zM7.2 4a9.338 9.338 0 0 0-4.54 8 9.338 9.338 0 0 0 18.677 0 9.338 9.338 0 0 0-4.54-7.998 4.888 4.888 0 0 1-2.701 5.365l-.12 2.066 1.482 1.483-1.483 1.482.989.989-.989.988.12 1.857L12 20.328l-2.096-2.096V9.367A4.89 4.89 0 0 1 7.2 4zm3.4 6.543v6.99h.7v-6.99z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>KeePassXC</title><path d="M12 0C5.378 0 0 5.378 0 12c0 6.623 5.378 12 12 12 6.623 0 12-5.377 12-12 0-6.622-5.377-12-12-12zm0 .791a11.203 11.203 0 0 1 11.209 11.21A11.202 11.202 0 0 1 12 23.208 11.203 11.203 0 0 1 .791 12 11.203 11.203 0 0 1 12.001.791zm0 1.871a9.356 9.356 0 0 0-1.705.162A1.746 1.746 0 0 0 12 4.95a1.746 1.746 0 0 0 1.706-2.126A9.342 9.342 0 0 0 12 2.662zM7.2 4a9.338 9.338 0 0 0-4.54 8 9.338 9.338 0 0 0 18.677 0 9.338 9.338 0 0 0-4.54-7.998 4.888 4.888 0 0 1-2.701 5.365l-.12 2.066 1.482 1.483-1.483 1.482.989.989-.989.988.12 1.857L12 20.328l-2.096-2.096V9.367A4.89 4.89 0 0 1 7.2 4zm3.4 6.543v6.99h.7v-6.99z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/kentico.svg b/assets/lib/simple-icons/icons/kentico.svg
index 18410ab4..eb5d928c 100644
--- a/assets/lib/simple-icons/icons/kentico.svg
+++ b/assets/lib/simple-icons/icons/kentico.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Kentico icon</title><path d="M0 0v25h25V0H0zm14.5 8.8l3-3s2.2 1.3.9 2.6l-2.1 2.1c-1.2 1.1-2.9-.6-1.8-1.7zm-.8-3.3v3c0 1.5-2.5 1.5-2.5 0V4.3s2.5-.6 2.5 1.2zM8.4 6.7l2.1 2.1c1.1 1.1-.6 2.8-1.7 1.7l-3-3s1.3-2.1 2.6-.8zm-2.9 4.6h3c1.5 0 1.5 2.5 0 2.5H4.3c0-.1-.6-2.5 1.2-2.5zm5 4.9l-3 3s-2.2-1.3-.9-2.6l2.1-2.1c1.2-1.1 2.9.6 1.8 1.7zm3.2 4.5s-2.5.6-2.5-1.2v-3c0-1.5 2.5-1.5 2.5 0v4.2zm-1.2-6.4c-1 0-1.8-.8-1.8-1.8s.8-1.8 1.8-1.8 1.8.8 1.8 1.8-.8 1.8-1.8 1.8zm4.1 4l-2.1-2.1c-1.1-1.1.6-2.8 1.7-1.7l3 3s-1.3 2.1-2.6.8zm2.9-4.6h-3c-1.5 0-1.5-2.5 0-2.5h4.2c0 .1.6 2.5-1.2 2.5z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Kentico</title><path d="M0 0v24h24V0zm11.65 3.417c.698 0 1.566.216 1.566 1.279v2.72c0 1.5-2.433 1.533-2.433.018V3.63a.146.146 0 0 1 .118-.142c.15-.028.432-.072.75-.071zm5.508 1.76a.146.146 0 0 1 .079.026c.408.277 1.875 1.397.782 2.49L16.091 9.62c-1.06 1.06-2.803-.64-1.733-1.707l2.695-2.695a.146.146 0 0 1 .105-.041zm-10.27.4c.263.01.538.123.811.396l1.928 1.93c1.061 1.059-.64 2.803-1.707 1.73L5.226 6.94a.142.142 0 0 1-.018-.182c.209-.307.891-1.208 1.68-1.18zm5.104 4.65a1.773 1.773 0 0 1 .008 0A1.773 1.773 0 1 1 10.227 12a1.773 1.773 0 0 1 1.765-1.773zm-7.291.55h2.728c1.499 0 1.532 2.433.017 2.433h-3.81a.144.144 0 0 1-.142-.117c-.092-.48-.337-2.315 1.207-2.315zm11.859 0h3.802a.142.142 0 0 1 .142.117c.093.48.338 2.316-1.206 2.316h-2.72c-1.5 0-1.533-2.433-.018-2.433zm-1.238 3.24c.259.002.523.102.756.337l2.695 2.692a.146.146 0 0 1 .017.184c-.278.41-1.398 1.876-2.49.784l-1.929-1.93c-.829-.827.028-2.072.951-2.066zm-6.657.013c.93-.011 1.811 1.209.975 2.044l-2.694 2.692a.144.144 0 0 1-.184.018c-.408-.278-1.876-1.398-.783-2.49l1.928-1.93a1.08 1.08 0 0 1 .758-.334zm3.334 1.403c.608-.007 1.217.364 1.217 1.122v3.802a.144.144 0 0 1-.118.14c-.48.093-2.316.338-2.316-1.206v-2.72c0-.749.609-1.132 1.217-1.138z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/keras.svg b/assets/lib/simple-icons/icons/keras.svg
index 9cc0f958..f1bba42d 100644
--- a/assets/lib/simple-icons/icons/keras.svg
+++ b/assets/lib/simple-icons/icons/keras.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Keras icon</title><path d="M24 0H0v24h24V0zM8.45 5.16l.2.17v6.24l6.46-6.45h1.96l.2.4-5.14 5.1 5.47 7.94-.2.3h-1.94l-4.65-6.88-2.16 2.08v4.6l-.19.2H7l-.2-.2V5.33l.17-.17h1.48z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Keras</title><path d="M24 0H0v24h24V0zM8.45 5.16l.2.17v6.24l6.46-6.45h1.96l.2.4-5.14 5.1 5.47 7.94-.2.3h-1.94l-4.65-6.88-2.16 2.08v4.6l-.19.2H7l-.2-.2V5.33l.17-.17h1.48z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/keybase.svg b/assets/lib/simple-icons/icons/keybase.svg
index 0709ece0..f4c2ebb9 100644
--- a/assets/lib/simple-icons/icons/keybase.svg
+++ b/assets/lib/simple-icons/icons/keybase.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Keybase icon</title><path d="M10.446 21.371c0 .528-.428.953-.954.953-.525 0-.954-.425-.954-.953 0-.526.428-.954.953-.954.524 0 .951.431.951.955m5.922-.001c0 .528-.428.953-.955.953-.526 0-.952-.425-.952-.953 0-.526.423-.954.949-.954s.954.431.954.955M20.904 12.213l-.156-.204c-.046-.06-.096-.116-.143-.175-.045-.061-.094-.113-.141-.169-.104-.12-.209-.239-.319-.359l-.076-.08-.091-.099-.135-.131c-.015-.018-.032-.034-.05-.053-1.16-1.139-2.505-1.986-3.955-2.504l-.23-.078c.012-.027.024-.055.035-.083.41-1.064.367-2.223-.12-3.255-.491-1.035-1.356-1.8-2.438-2.16-.656-.216-1.23-.319-1.711-.305-.033-.105-.1-.577.496-1.848L10.663 0l-.287.399c-.33.455-.648.895-.945 1.328-.328-.345-.766-.552-1.245-.58L6.79 1.061h-.012c-.033-.003-.07-.003-.104-.003-.99 0-1.81.771-1.87 1.755l-.088 1.402v.003c-.061 1.029.727 1.915 1.755 1.979l1.002.061c-.065.84.073 1.62.405 2.306-1.346.562-2.586 1.401-3.66 2.484C.913 14.391.913 18.051.913 20.994v1.775l1.305-1.387c.266.93.652 1.807 1.145 2.615H5.06c-.833-1.114-1.419-2.426-1.68-3.848l1.913-2.03-.985 3.091 1.74-1.268c3.075-2.234 6.744-2.75 10.91-1.529 1.805.532 3.56.039 4.473-1.257l.104-.165c.091.498.141.998.141 1.496 0 1.563-.255 3.687-1.38 5.512h1.611c.776-1.563 1.181-3.432 1.181-5.512-.001-2.199-.786-4.421-2.184-6.274zM8.894 6.191c.123-1.002.578-1.949 1.23-2.97.025.05.054.097.084.144.264.398.713.625 1.199.605.217-.008.605.025 1.233.232.714.236 1.286.744 1.608 1.425s.349 1.442.079 2.149c-.173.445-.454.82-.806 1.109l-.408-.502-.002-.003c-.279-.341-.694-.535-1.134-.535-.335 0-.664.117-.925.33-.334.27-.514.66-.534 1.058-1.2-.541-1.8-1.643-1.628-3.041l.004-.001zm4.304 5.11l-.519.425c-.046.036-.095.053-.146.053-.066 0-.133-.03-.177-.085l-.111-.135c-.083-.1-.067-.25.034-.334l.51-.42-1.055-1.299c-.109-.133-.091-.33.044-.436.058-.048.126-.072.194-.072.091 0 .181.038.24.113l2.963 3.645c.109.135.09.33-.042.436-.039.029-.082.053-.126.063-.023.006-.045.009-.07.009-.09 0-.178-.04-.24-.113l-.295-.365-1.045.854c-.046.037-.1.055-.154.055-.068 0-.139-.03-.186-.09l-.477-.579c-.082-.102-.068-.252.035-.336l1.051-.857-.426-.533-.002.001zM7.753 4.866l-1.196-.075c-.255-.015-.45-.235-.435-.488l.09-1.401c.014-.245.216-.436.461-.436h.024l1.401.091c.123.006.236.06.317.152.083.094.123.21.116.336l-.007.101c-.32.567-.585 1.134-.773 1.72h.002zm12.524 11.481c-.565.805-1.687 1.081-2.924.718-3.886-1.141-7.396-.903-10.468.701l1.636-5.123-5.291 5.609c.099-3.762 2.453-6.966 5.758-8.311.471.373 1.034.66 1.673.841.16.044.322.074.48.102-.183.458-.119.997.21 1.407l.075.09c-.172.45-.105.975.221 1.374l.475.582c.266.325.659.513 1.079.513.321 0 .635-.111.886-.314l.285-.232c.174.074.367.113.566.113.113 0 .222-.01.33-.035.218-.05.424-.15.598-.291.623-.51.72-1.435.209-2.06l-1.67-2.056c.145-.117.281-.244.408-.381.135.037.271.078.4.12.266.097.533.198.795.315 1.005.445 1.954 1.1 2.771 1.897.029.03.059.055.085.083l.17.175c.038.039.076.079.111.12.079.085.16.175.239.267l.126.15c.045.053.086.104.13.16l.114.15c.04.051.079.102.117.154.838 1.149.987 2.329.404 3.157v.005zM7.719 4.115l-.835-.051.053-.835.834.051-.052.835z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Keybase</title><path d="M10.445 21.372a.953.953 0 1 1-.955-.954c.524 0 .951.43.951.955m5.923-.001a.953.953 0 1 1-.958-.954c.526 0 .954.43.954.955m4.544-9.16l-.156-.204c-.046-.06-.096-.116-.143-.175-.045-.06-.094-.113-.141-.169-.104-.12-.21-.239-.32-.359l-.075-.08-.091-.099-.135-.13c-.015-.019-.032-.035-.05-.054a10.87 10.87 0 0 0-3.955-2.504l-.23-.078.035-.083a4.109 4.109 0 0 0-.12-3.255 4.11 4.11 0 0 0-2.438-2.16c-.656-.216-1.23-.319-1.712-.305-.033-.105-.1-.577.496-1.848L10.662 0l-.287.399c-.33.455-.648.895-.945 1.328a1.857 1.857 0 0 0-1.245-.58L6.79 1.061h-.012c-.033-.003-.07-.003-.104-.003-.99 0-1.81.771-1.87 1.755l-.088 1.402v.003a1.876 1.876 0 0 0 1.755 1.98l1.002.06c-.065.84.073 1.62.405 2.306a11.28 11.28 0 0 0-3.66 2.484C.912 14.392.912 18.052.912 20.995v1.775l1.305-1.387c.266.93.652 1.807 1.145 2.615H5.06a9.197 9.197 0 0 1-1.68-3.848l1.913-2.03-.985 3.09 1.74-1.267c3.075-2.234 6.745-2.75 10.91-1.53 1.806.533 3.56.04 4.474-1.256l.104-.165c.09.498.14.998.14 1.496 0 1.563-.254 3.687-1.38 5.512h1.612c.776-1.563 1.181-3.432 1.181-5.512-.001-2.2-.786-4.421-2.184-6.274zM8.894 6.192c.122-1.002.577-1.949 1.23-2.97a1.36 1.36 0 0 0 1.283.749c.216-.008.604.025 1.233.232a2.706 2.706 0 0 1 1.608 1.425c.322.681.349 1.442.079 2.15a2.69 2.69 0 0 1-.806 1.108l-.408-.502-.002-.003a1.468 1.468 0 0 0-2.06-.205c-.334.27-.514.66-.534 1.058-1.2-.54-1.8-1.643-1.628-3.04zm4.304 5.11l-.52.425a.228.228 0 0 1-.323-.032l-.11-.135a.238.238 0 0 1 .034-.334l.51-.42-1.056-1.299a.307.307 0 0 1 .044-.436.303.303 0 0 1 .435.041l2.963 3.646a.309.309 0 0 1-.168.499.315.315 0 0 1-.31-.104l-.295-.365-1.045.854a.244.244 0 0 1-.154.055.237.237 0 0 1-.186-.09l-.477-.58a.24.24 0 0 1 .035-.335l1.05-.858-.425-.533zM7.752 4.866l-1.196-.075a.463.463 0 0 1-.435-.488l.09-1.4a.462.462 0 0 1 .461-.437h.024l1.401.091a.459.459 0 0 1 .433.488l-.007.101a9.27 9.27 0 0 0-.773 1.72zm12.525 11.482c-.565.805-1.687 1.08-2.924.718-3.886-1.141-7.397-.903-10.469.7l1.636-5.122-5.29 5.609c.098-3.762 2.452-6.967 5.757-8.312.471.373 1.034.66 1.673.841.16.044.322.074.48.102a1.41 1.41 0 0 0 .21 1.408l.075.09c-.172.45-.105.975.221 1.374l.476.582a1.39 1.39 0 0 0 1.079.513c.32 0 .635-.111.886-.314l.285-.232c.174.074.367.113.566.113a1.45 1.45 0 0 0 .928-.326c.623-.51.72-1.435.209-2.06l-1.67-2.057a4.07 4.07 0 0 0 .408-.38c.135.036.27.077.4.12.266.096.533.197.795.314a9.55 9.55 0 0 1 2.77 1.897c.03.03.06.055.086.083l.17.176c.038.039.076.079.11.12.08.085.16.175.24.267l.126.15c.045.053.086.104.13.16l.114.15c.04.05.079.102.117.154.838 1.149.987 2.329.404 3.157v.005zM7.718 4.115l-.835-.05.053-.836.834.051z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/keycdn.svg b/assets/lib/simple-icons/icons/keycdn.svg
index 74595953..43608da8 100644
--- a/assets/lib/simple-icons/icons/keycdn.svg
+++ b/assets/lib/simple-icons/icons/keycdn.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>KeyCDN icon</title><path d="M2.305 19.065c.226.01.454.04.667.12v-.003l.032.012 2.81-2.74.102.137c.146.2.3.38.464.56l.06.068c.043.043.077.086.12.13l.326.325.077.07.07.06c1.305 1.107 2.937 1.734 4.655 1.777 1.417.034 2.8-.326 4.01-1.04l.216.224c.25.266.507.533.756.8-1.495.96-3.23 1.442-5.017 1.4-2.01-.053-3.926-.774-5.463-2.063l.01-.016-1.803 1.777c.067.21.093.43.096.65 0 1.242-1.006 2.248-2.247 2.248S0 22.552 0 21.31c0-1.24 1.005-2.246 2.246-2.246h.058zM19.48 7.477c.885 1.452 1.323 3.127 1.28 4.828-.05 2.08-.833 4.063-2.208 5.618l.01.01 1.107 1.176c.446-.06.892.094 1.202.42.524.558.507 1.435-.052 1.967-.558.524-1.435.507-1.967-.052-.31-.326-.438-.782-.352-1.22-.514-.55-1.425-1.52-1.95-2.07l-.11-.12.128-.103c.335-.266.644-.558.928-.885 1.177-1.323 1.838-3.006 1.88-4.776.035-1.34-.283-2.653-.927-3.813l1.03-.98zM3.828 2.226c.395-.006.765.15 1.04.432.31.326.44.782.353 1.22L7.35 6.11l-.128.104c-.335.266-.644.558-.928.885-1.177 1.322-1.838 3.005-1.89 4.775-.034 1.34.283 2.654.928 3.822l-1.022.996c-.893-1.46-1.34-3.135-1.288-4.853.044-2.068.85-4.066 2.204-5.622L4.053 4.994c-.447.06-.893-.095-1.203-.42-.524-.56-.507-1.436.052-1.968.217-.204.497-.335.794-.37.044-.006.09-.007.133-.01zM21.753.442C22.993.442 24 1.448 24 2.69s-1.006 2.246-2.247 2.246c-.24.003-.474-.04-.7-.112l-.002.002-.033-.012-3.05 2.895-.102-.138c-.163-.215-.344-.43-.533-.627l-.034-.043-.266-.266-.12-.103-.077-.07-.06-.05-.077-.07c-1.297-1.09-2.92-1.71-4.62-1.752-1.418-.033-2.8.32-4.004 1.04l-.98-1.022c1.496-.962 3.23-1.443 5.017-1.4 2.01.052 3.927.773 5.464 2.07h.017l2.02-1.917c-.07-.216-.1-.443-.103-.67 0-1.242 1.006-2.248 2.247-2.248zM11.96 5.458c.254 0 .507.02.76.05 3.624.455 6.192 3.762 5.746 7.387-.455 3.625-3.762 6.193-7.387 5.747-3.626-.455-6.194-3.762-5.748-7.387.432-3.363 3.258-5.785 6.628-5.797zm-.1 2.84c-1.466.116-2.528 1.226-2.566 2.7.027 1.053.565 1.94 1.505 2.425l-.512 2.4h3.423l-.51-2.4c.935-.507 1.49-1.346 1.505-2.423-.02-1.522-1.198-2.668-2.706-2.706l-.14.004zm.052-.016h-.01H11.912z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>KeyCDN</title><path d="M2.3043 19.0607c.2259.01.4538.04.6667.12v-.003l.032.012 2.8091-2.7391.102.137c.146.1998.2999.3798.4638.5597l.06.068c.043.043.077.086.12.13l.3259.3249.077.07.07.06a7.4626 7.4626 0 004.6534 1.7753 7.5146 7.5146 0 004.0087-1.0396l.216.224c.2499.2658.5068.5327.7557.7997a8.8581 8.8581 0 01-5.0154 1.3995 8.8341 8.8341 0 01-5.4612-2.0623l.01-.015-1.8024 1.7764A2.2463 2.2463 0 110 21.305a2.2453 2.2453 0 012.2453-2.2453h.058zM19.4737 7.4765a8.8321 8.8321 0 011.2796 4.8264 8.7872 8.7872 0 01-2.2073 5.6152l.01.01 1.1066 1.1766c.4459-.06.8918.094 1.2017.4199a1.3935 1.3935 0 01-.052 1.9663 1.3935 1.3935 0 01-1.9664-.052 1.3826 1.3826 0 01-.3519-1.2196 336.5811 336.5811 0 00-1.9493-2.0693l-.11-.12.128-.103a6.9212 6.9212 0 00.9277-.8846 7.4256 7.4256 0 001.8793-4.7755 7.4376 7.4376 0 00-.9267-3.8118l1.0297-.9796zM3.8267 2.226c.395-.006.7648.15 1.0397.432.31.3258.4399.7817.353 1.2195L7.3475 6.111l-.128.104a6.9208 6.9208 0 00-.9276.8847 7.4906 7.4906 0 00-.9617 8.5942l-1.0217.9957A8.7602 8.7602 0 013.021 11.838c.044-2.0673.8498-4.0646 2.2033-5.6201L4.0517 4.9933a1.4005 1.4005 0 01-1.2026-.42 1.3955 1.3955 0 01.052-1.9673c.2169-.204.4968-.3349.7937-.3699.044-.006.09-.007.133-.01zM21.746.4427a2.2473 2.2473 0 11-.6998 4.3806l-.002.002-.033-.012-3.049 2.894-.102-.1379a7.1777 7.1777 0 00-.5328-.6268l-.034-.043-.2659-.2659-.12-.103-.077-.07-.06-.0499-.0769-.07a7.4556 7.4556 0 00-4.6185-1.7514A7.4336 7.4336 0 008.0724 5.629l-.9797-1.0216a8.8371 8.8371 0 015.0154-1.3996 8.7912 8.7912 0 015.4622 2.0694h.017l2.0194-1.9164A2.2463 2.2463 0 0121.75.4438zM11.956 5.4581c.254 0 .5069.02.7598.05 3.6228.4548 6.19 3.7608 5.7441 7.3846a6.6239 6.6239 0 01-7.3846 5.7451 6.6239 6.6239 0 01-5.7461-7.3846c.4318-3.3619 3.257-5.7831 6.6258-5.7951zm-.1 2.839c-1.4655.117-2.5271 1.2267-2.5651 2.6992.027 1.0537.5648 1.9394 1.5045 2.4252l-.5118 2.3993h3.4219l-.5099-2.3993c.9347-.5068 1.4896-1.3455 1.5046-2.4222-.02-1.5215-1.1977-2.6671-2.7052-2.7051l-.14.004zm.052-.015h-.01z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/kfc.svg b/assets/lib/simple-icons/icons/kfc.svg
new file mode 100644
index 00000000..b0543259
--- /dev/null
+++ b/assets/lib/simple-icons/icons/kfc.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>KFC</title><path d="M21.893 8.23c-4.187.001-5.249 2.365-5.42 3.97-.194 1.802 1.053 3.57 4.127 3.57 1.294 0 2.14-.225 2.44-.32a.215.215 0 00.147-.166l.173-.91a.184.184 0 00-.236-.21c-.336.106-.93.252-1.685.252-1.469 0-2.53-.882-2.395-2.4.13-1.47 1.121-2.59 2.485-2.59.82 0 1.183.43 1.156 1.003v.033a.184.184 0 00.182.193h.557c.086 0 .16-.06.18-.143l.39-1.76a.215.215 0 00-.15-.255 7.21 7.21 0 00-1.95-.266zm-20.157.116a.2.2 0 00-.195.156l-.108.484a.198.198 0 00.13.23l.033.01c.208.082.45.266.348.748l-.792 3.62c-.207.987-.542 1.19-.86 1.226h-.01a.2.2 0 00-.176.157l-.102.464a.192.192 0 00.187.233h3.487c.085 0 .159-.06.177-.142l.12-.543a.184.184 0 00-.112-.21l-.022-.01c-.177-.07-.418-.224-.356-.51l.405-1.85c1.389 2.535 1.848 3.266 3.514 3.265H8.91a.181.181 0 00.177-.142l.105-.47a.195.195 0 00-.186-.238c-.376-.006-.56-.093-.935-.575l-1.932-2.614 2.51-2.088c.337-.264.748-.338.976-.368l.022-.002a.185.185 0 00.163-.144l.103-.464a.184.184 0 00-.18-.223h-3.02a.199.199 0 00-.193.155l-.102.46a.2.2 0 00.138.235c.178.069.217.24.063.366L4.046 11.7l.44-2.014a.683.683 0 01.477-.487l.025-.008a.199.199 0 00.135-.147l.106-.477a.181.181 0 00-.177-.22zm8.88 0a.2.2 0 00-.194.156l-.107.483a.19.19 0 00.122.221l.02.008c.204.077.487.274.364.758l-1.21 5.48a.182.182 0 00.178.222h2.777c.086 0 .16-.06.179-.143l.12-.547a.174.174 0 00-.098-.196 1.558 1.558 0 01-.027-.013c-.176-.086-.438-.285-.35-.67.009-.05.27-1.24.27-1.24h2.362c.086 0 .16-.06.18-.143l.221-1a.183.183 0 00-.18-.224h-2.28l.427-1.94 1.592-.003c.515 0 .672.27.642.728l-.002.024a.184.184 0 00.183.205h.587c.086 0 .16-.06.178-.144l.4-1.8a.184.184 0 00-.18-.222z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/khanacademy.svg b/assets/lib/simple-icons/icons/khanacademy.svg
index b74edd3a..850fef9d 100644
--- a/assets/lib/simple-icons/icons/khanacademy.svg
+++ b/assets/lib/simple-icons/icons/khanacademy.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Khan Academy icon</title><path d="M21.724 4.973L13.418.328a3.214 3.214 0 0 0-2.828 0L2.276 4.973A3.05 3.05 0 0 0 .862 7.371v9.256a3.05 3.05 0 0 0 1.414 2.4l8.306 4.645a3.214 3.214 0 0 0 2.828 0l8.314-4.645a3.05 3.05 0 0 0 1.414-2.4V7.373a3.05 3.05 0 0 0-1.414-2.4zM12 4.921a2.571 2.571 0 1 1 .001 5.143A2.571 2.571 0 0 1 12 4.92zm3.094 13.627a9.119 9.119 0 0 1-3.103.549 8.972 8.972 0 0 1-3.076-.55 8.493 8.493 0 0 1-5.486-7.987v-.857c4.646.017 8.074 3.823 8.074 8.51v.198h.926v-.197c0-4.688 3.445-8.51 8.056-8.51.026.29.043.582.086.856a8.502 8.502 0 0 1-5.477 7.988z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Khan Academy</title><path d="M21.724 4.973L13.418.328a3.214 3.214 0 0 0-2.828 0L2.276 4.973A3.05 3.05 0 0 0 .862 7.371v9.256a3.05 3.05 0 0 0 1.414 2.4l8.306 4.645a3.214 3.214 0 0 0 2.828 0l8.314-4.645a3.05 3.05 0 0 0 1.414-2.4V7.373a3.05 3.05 0 0 0-1.414-2.4zM12 4.921a2.571 2.571 0 1 1 .001 5.143A2.571 2.571 0 0 1 12 4.92zm3.094 13.627a9.119 9.119 0 0 1-3.103.549 8.972 8.972 0 0 1-3.076-.55 8.493 8.493 0 0 1-5.486-7.987v-.857c4.646.017 8.074 3.823 8.074 8.51v.198h.926v-.197c0-4.688 3.445-8.51 8.056-8.51.026.29.043.582.086.856a8.502 8.502 0 0 1-5.477 7.988z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/khronosgroup.svg b/assets/lib/simple-icons/icons/khronosgroup.svg
index 357852cc..2f7a096f 100644
--- a/assets/lib/simple-icons/icons/khronosgroup.svg
+++ b/assets/lib/simple-icons/icons/khronosgroup.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Khronos Group icon</title><path d="M.511 12.946H0v-2.615h.511v2.615zm.008-1.299l.791-1.316h.571l-.839 1.298.839 1.316h-.57l-.792-1.298zm3.11.238v1.061h-.511v-2.615h.511v1.061h.843v-1.061h.511v2.615h-.51v-1.061h-.844zm3.37 1.061h-.511v-2.615h.621c.198 0 .345.006.442.021a.787.787 0 0 1 .587.358.82.82 0 0 1 .117.439.806.806 0 0 1-.167.515.743.743 0 0 1-.453.269l.653 1.014h-.609l-.678-1.212-.002 1.211zm0-1.34h.114c.208 0 .365-.037.474-.112a.377.377 0 0 0 .161-.328c0-.139-.045-.241-.136-.307-.09-.066-.231-.099-.422-.099h-.191v.846zm8.51 1.34h-.502v-2.615h.485L16.574 12v-1.669h.502v2.615h-.475l-1.092-1.72v1.72zm2.962-1.313a1.353 1.353 0 0 1 .228-.765c.129-.189.292-.333.487-.435a1.358 1.358 0 0 1 1.141-.053 1.37 1.37 0 0 1 .731.729 1.413 1.413 0 0 1 .005 1.04c-.065.164-.159.31-.283.436a1.327 1.327 0 0 1-.963.413c-.195 0-.374-.035-.54-.105a1.27 1.27 0 0 1-.436-.309 1.34 1.34 0 0 1-.37-.951zm.535-.018a.854.854 0 0 0 .221.58.83.83 0 0 0 .274.201.765.765 0 0 0 .316.071.762.762 0 0 0 .576-.244.847.847 0 0 0 .232-.608.78.78 0 0 0-.235-.569.764.764 0 0 0-.564-.236.799.799 0 0 0-.582.235.775.775 0 0 0-.238.57zm3.389.522l.469-.001v.037c0 .11.028.198.085.263a.286.286 0 0 0 .227.099.32.32 0 0 0 .241-.092.347.347 0 0 0 .089-.25c0-.168-.12-.289-.36-.362a1.981 1.981 0 0 1-.074-.023c-.203-.063-.354-.154-.452-.27a.665.665 0 0 1-.147-.443c0-.245.068-.443.204-.591a.702.702 0 0 1 .544-.223c.212 0 .381.066.506.198s.196.318.21.555h-.464v-.022a.271.271 0 0 0-.076-.2.268.268 0 0 0-.198-.076c-.084 0-.15.026-.199.079s-.072.124-.072.214c0 .039.005.072.015.101.01.03.026.056.048.079.049.054.155.103.316.15.072.019.127.035.165.049.179.061.312.148.398.262s.13.259.13.436c0 .27-.075.485-.225.649a.768.768 0 0 1-.595.245.733.733 0 0 1-.566-.236c-.141-.16-.215-.369-.219-.627zm-5.032 1.337l-.07.077a.334.334 0 0 0-.103-.065.292.292 0 0 0-.111-.021.26.26 0 0 0-.2.084c-.054.056-.08.124-.08.205s.027.15.08.205c.054.056.12.084.2.084a.29.29 0 0 0 .189-.067v-.173h-.155v-.102h.266v.336a.619.619 0 0 1-.147.085.436.436 0 0 1-.152.028.383.383 0 0 1-.395-.395.4.4 0 0 1 .233-.363.428.428 0 0 1 .32-.002.332.332 0 0 1 .125.084zm1.091-.094h.143a.83.83 0 0 1 .099.006.247.247 0 0 1 .068.022c.032.017.058.043.076.076s.028.072.028.114a.182.182 0 0 1-.048.128.213.213 0 0 1-.128.067l.229.31-.106.045-.252-.365v.347l-.112.009.003-.759zm.113.1v.238h.04c.048 0 .085-.01.112-.032a.112.112 0 0 0 .04-.09.106.106 0 0 0-.037-.087.181.181 0 0 0-.111-.03h-.044v.001zm1.738-.119a.377.377 0 0 1 .256.095.403.403 0 0 1-.097.665.39.39 0 0 1-.161.032.395.395 0 0 1-.257-.095.404.404 0 0 1-.138-.302.4.4 0 0 1 .254-.371.402.402 0 0 1 .143-.024zm0 .104a.26.26 0 0 0-.2.084c-.054.056-.08.124-.08.205s.027.15.08.205c.054.056.12.083.201.083a.284.284 0 0 0 .281-.289.279.279 0 0 0-.282-.288zm1.563-.095v.426c0 .09.012.154.035.191.023.036.062.054.117.054s.096-.017.12-.052.037-.092.037-.172v-.436l.108-.01v.473c0 .061-.004.108-.013.141s-.025.061-.045.085a.216.216 0 0 1-.087.059.318.318 0 0 1-.115.022c-.09 0-.159-.026-.203-.076-.045-.05-.067-.128-.067-.231v-.461l.113-.013zm1.515.01h.199c.085 0 .151.019.196.058.045.039.067.096.067.169 0 .07-.026.125-.077.167a.335.335 0 0 1-.213.061.832.832 0 0 1-.057-.003h-.003v.297l-.112.009v-.758zm.112.1v.25l.031.004a.433.433 0 0 0 .037.001c.054 0 .096-.01.124-.032a.114.114 0 0 0 .043-.096c0-.044-.013-.076-.039-.097-.026-.021-.067-.031-.123-.031h-.073v.001zm-12.03-.704c-.897-.032-2.123-.442-2.377-1.033-.219-.538-.001-1.165 1.034-1.61.615-.256 1.544-.328 2.261-.262 1.016.093 1.985.618 1.986.621v.737l-.001.049s-.315-.285-.709-.515c-.371-.217-.71-.369-1.384-.431-.158-.014-.426-.05-.861.01-.176.025-.423.043-.981.288a2.342 2.342 0 0 0-.476.285 2.953 2.953 0 0 0-.223.201c-.159.199-.243.349-.203.62.046.204.137.332.399.527.114.085.127.084.177.11.469.243.843.332 1.378.399m.03-2.294c.9-.004 2.176.356 2.507.937.291.528.156 1.162-.817 1.646-.578.28-1.496.389-2.219.351-1.026-.053-2.062-.54-2.063-.541l-.098-.735-.006-.049s.352.272.776.487c.399.201.758.341 1.438.376.159.009.431.032.857-.044.172-.031.417-.059.94-.325a1.98 1.98 0 0 0 .632-.512c.132-.205.196-.358.12-.626-.074-.201-.181-.325-.467-.51-.124-.08-.137-.079-.191-.103-.5-.223-.884-.297-1.428-.343"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Khronos Group</title><path d="M.511 12.946H0v-2.615h.511v2.615zm.008-1.299l.791-1.316h.571l-.839 1.298.839 1.316h-.57l-.792-1.298zm3.11.238v1.061h-.511v-2.615h.511v1.061h.843v-1.061h.511v2.615h-.51v-1.061h-.844zm3.37 1.061h-.511v-2.615h.621c.198 0 .345.006.442.021a.787.787 0 0 1 .587.358.82.82 0 0 1 .117.439.806.806 0 0 1-.167.515.743.743 0 0 1-.453.269l.653 1.014h-.609l-.678-1.212-.002 1.211zm0-1.34h.114c.208 0 .365-.037.474-.112a.377.377 0 0 0 .161-.328c0-.139-.045-.241-.136-.307-.09-.066-.231-.099-.422-.099h-.191v.846zm8.51 1.34h-.502v-2.615h.485L16.574 12v-1.669h.502v2.615h-.475l-1.092-1.72v1.72zm2.962-1.313a1.353 1.353 0 0 1 .228-.765c.129-.189.292-.333.487-.435a1.358 1.358 0 0 1 1.141-.053 1.37 1.37 0 0 1 .731.729 1.413 1.413 0 0 1 .005 1.04c-.065.164-.159.31-.283.436a1.327 1.327 0 0 1-.963.413c-.195 0-.374-.035-.54-.105a1.27 1.27 0 0 1-.436-.309 1.34 1.34 0 0 1-.37-.951zm.535-.018a.854.854 0 0 0 .221.58.83.83 0 0 0 .274.201.765.765 0 0 0 .316.071.762.762 0 0 0 .576-.244.847.847 0 0 0 .232-.608.78.78 0 0 0-.235-.569.764.764 0 0 0-.564-.236.799.799 0 0 0-.582.235.775.775 0 0 0-.238.57zm3.389.522l.469-.001v.037c0 .11.028.198.085.263a.286.286 0 0 0 .227.099.32.32 0 0 0 .241-.092.347.347 0 0 0 .089-.25c0-.168-.12-.289-.36-.362a1.981 1.981 0 0 1-.074-.023c-.203-.063-.354-.154-.452-.27a.665.665 0 0 1-.147-.443c0-.245.068-.443.204-.591a.702.702 0 0 1 .544-.223c.212 0 .381.066.506.198s.196.318.21.555h-.464v-.022a.271.271 0 0 0-.076-.2.268.268 0 0 0-.198-.076c-.084 0-.15.026-.199.079s-.072.124-.072.214c0 .039.005.072.015.101.01.03.026.056.048.079.049.054.155.103.316.15.072.019.127.035.165.049.179.061.312.148.398.262s.13.259.13.436c0 .27-.075.485-.225.649a.768.768 0 0 1-.595.245.733.733 0 0 1-.566-.236c-.141-.16-.215-.369-.219-.627zm-5.032 1.337l-.07.077a.334.334 0 0 0-.103-.065.292.292 0 0 0-.111-.021.26.26 0 0 0-.2.084c-.054.056-.08.124-.08.205s.027.15.08.205c.054.056.12.084.2.084a.29.29 0 0 0 .189-.067v-.173h-.155v-.102h.266v.336a.619.619 0 0 1-.147.085.436.436 0 0 1-.152.028.383.383 0 0 1-.395-.395.4.4 0 0 1 .233-.363.428.428 0 0 1 .32-.002.332.332 0 0 1 .125.084zm1.091-.094h.143a.83.83 0 0 1 .099.006.247.247 0 0 1 .068.022c.032.017.058.043.076.076s.028.072.028.114a.182.182 0 0 1-.048.128.213.213 0 0 1-.128.067l.229.31-.106.045-.252-.365v.347l-.112.009.003-.759zm.113.1v.238h.04c.048 0 .085-.01.112-.032a.112.112 0 0 0 .04-.09.106.106 0 0 0-.037-.087.181.181 0 0 0-.111-.03h-.044v.001zm1.738-.119a.377.377 0 0 1 .256.095.403.403 0 0 1-.097.665.39.39 0 0 1-.161.032.395.395 0 0 1-.257-.095.404.404 0 0 1-.138-.302.4.4 0 0 1 .254-.371.402.402 0 0 1 .143-.024zm0 .104a.26.26 0 0 0-.2.084c-.054.056-.08.124-.08.205s.027.15.08.205c.054.056.12.083.201.083a.284.284 0 0 0 .281-.289.279.279 0 0 0-.282-.288zm1.563-.095v.426c0 .09.012.154.035.191.023.036.062.054.117.054s.096-.017.12-.052.037-.092.037-.172v-.436l.108-.01v.473c0 .061-.004.108-.013.141s-.025.061-.045.085a.216.216 0 0 1-.087.059.318.318 0 0 1-.115.022c-.09 0-.159-.026-.203-.076-.045-.05-.067-.128-.067-.231v-.461l.113-.013zm1.515.01h.199c.085 0 .151.019.196.058.045.039.067.096.067.169 0 .07-.026.125-.077.167a.335.335 0 0 1-.213.061.832.832 0 0 1-.057-.003h-.003v.297l-.112.009v-.758zm.112.1v.25l.031.004a.433.433 0 0 0 .037.001c.054 0 .096-.01.124-.032a.114.114 0 0 0 .043-.096c0-.044-.013-.076-.039-.097-.026-.021-.067-.031-.123-.031h-.073v.001zm-12.03-.704c-.897-.032-2.123-.442-2.377-1.033-.219-.538-.001-1.165 1.034-1.61.615-.256 1.544-.328 2.261-.262 1.016.093 1.985.618 1.986.621v.737l-.001.049s-.315-.285-.709-.515c-.371-.217-.71-.369-1.384-.431-.158-.014-.426-.05-.861.01-.176.025-.423.043-.981.288a2.342 2.342 0 0 0-.476.285 2.953 2.953 0 0 0-.223.201c-.159.199-.243.349-.203.62.046.204.137.332.399.527.114.085.127.084.177.11.469.243.843.332 1.378.399m.03-2.294c.9-.004 2.176.356 2.507.937.291.528.156 1.162-.817 1.646-.578.28-1.496.389-2.219.351-1.026-.053-2.062-.54-2.063-.541l-.098-.735-.006-.049s.352.272.776.487c.399.201.758.341 1.438.376.159.009.431.032.857-.044.172-.031.417-.059.94-.325a1.98 1.98 0 0 0 .632-.512c.132-.205.196-.358.12-.626-.074-.201-.181-.325-.467-.51-.124-.08-.137-.079-.191-.103-.5-.223-.884-.297-1.428-.343"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/kia.svg b/assets/lib/simple-icons/icons/kia.svg
index cefdc2e2..c2369ea8 100644
--- a/assets/lib/simple-icons/icons/kia.svg
+++ b/assets/lib/simple-icons/icons/kia.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Kia icon</title><path d="M4.258 8.935l-.03.027v.305l.03.028h.194c.072 0 .127.055.127.126v5.503c0 .07.055.126.122.126h1.4a.125.125 0 0 0 .126-.126V12.61c0-.056.03-.084.068-.084.054 0 .08.042.096.07l1.653 2.315c.055.083.152.139.219.139h1.665c.068 0 .16-.09.084-.195l-2.107-2.98-.026-.07.026-.082 1.762-2.608c.046-.076-.013-.18-.097-.18H7.989c-.072 0-.164.055-.223.139l-1.375 1.94c-.042.067-.088.07-.093.07h-.003a.066.066 0 0 1-.068-.07V9.06a.124.124 0 0 0-.127-.124zm11.252 0l-.026.027v.305l.026.028h.168c.068 0 .127.04.127.11l-.017.071-1.817 5.421v.01a.119.119 0 0 0 .017.093c.004.005.004.01.008.013a.127.127 0 0 0 .084.037h1.417c.068 0 .14-.056.169-.126l1.205-3.798s.017-.057.064-.057c.046 0 .058.057.058.057l1.223 3.798c.025.07.097.126.168.126h1.413a.11.11 0 0 0 .097-.052.14.14 0 0 0 .017-.09c0-.003-.005-.007-.005-.01l-1.968-5.88c-.03-.07-.097-.083-.169-.083zm-4.68 0l-.012.027v.305l.012.028h.194c.071 0 .127.055.127.126v5.503c0 .07.055.126.126.126h1.438a.125.125 0 0 0 .126-.126V9.06a.124.124 0 0 0-.126-.124zM22.592 12c0 2.902-4.751 5.264-10.594 5.264-5.843 0-10.594-2.362-10.594-5.264 0-2.901 4.751-5.263 10.594-5.263C17.84 6.737 22.592 9.1 22.592 12m-2.116-4.265c-2.268-1.132-5.278-1.757-8.478-1.757s-6.21.625-8.474 1.757C1.248 8.872 0 10.385 0 12c0 1.615 1.248 3.13 3.524 4.267 2.264 1.132 5.274 1.755 8.474 1.755s6.21-.623 8.478-1.755C22.748 15.129 24 13.615 24 12c0-1.615-1.252-3.128-3.524-4.265Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Kia</title><path d="M13.923 14.175c0 .046.015.072.041.072a.123.123 0 0 0 .058-.024l7.48-4.854a.72.72 0 0 1 .432-.13h1.644c.252 0 .422.168.422.42v3.139c0 .38-.084.6-.42.801l-1.994 1.2a.137.137 0 0 1-.067.024c-.024 0-.048-.019-.048-.088v-3.663c0-.043-.012-.071-.041-.071a.113.113 0 0 0-.058.024l-5.466 3.551a.733.733 0 0 1-.42.127h-3.624c-.254 0-.422-.168-.422-.422V9.757c0-.033-.015-.064-.044-.064a.118.118 0 0 0-.057.024L7.732 11.88c-.036.024-.046.041-.046.058 0 .014.008.029.032.055l2.577 2.575c.034.034.058.06.058.089 0 .024-.039.043-.084.043H7.94c-.183 0-.324-.026-.423-.125l-1.562-1.56a.067.067 0 0 0-.048-.024.103.103 0 0 0-.048.015l-2.61 1.57a.72.72 0 0 1-.423.122H.425C.168 14.7 0 14.53 0 14.279v-3.08c0-.38.084-.6.422-.8L2.43 9.192a.103.103 0 0 1 .052-.016c.032 0 .048.03.048.1V13.4c0 .043.01.063.041.063a.144.144 0 0 0 .06-.024L9.407 9.36a.733.733 0 0 1 .446-.124h3.648c.252 0 .422.168.422.42l-.002 4.518z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/kibana.svg b/assets/lib/simple-icons/icons/kibana.svg
index ae93b744..90bf8da6 100644
--- a/assets/lib/simple-icons/icons/kibana.svg
+++ b/assets/lib/simple-icons/icons/kibana.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Kibana icon</title><path d="M21.04 23.99H4.18l9.88-11.86c4.23 2.76 6.98 7.04 6.98 11.86zm0-23.95H3.08v21.55z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Kibana</title><path d="M2.625 0v21.591L21.375 0zm10.864 12.47L3.477 24h17.522a18.755 18.755 0 0 0-7.51-11.53z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/kickstarter.svg b/assets/lib/simple-icons/icons/kickstarter.svg
index aaead595..a9933246 100644
--- a/assets/lib/simple-icons/icons/kickstarter.svg
+++ b/assets/lib/simple-icons/icons/kickstarter.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Kickstarter icon</title><path d="M7.168 0c-3.2 0-5.797 2.579-5.797 5.758v12.484C1.371 21.42 3.968 24 7.168 24c1.981 0 3.716-.978 4.768-2.479l.794.79c2.26 2.245 5.943 2.245 8.203 0a5.724 5.724 0 001.696-4.075 5.724 5.724 0 00-1.696-4.074l-2.182-2.168 2.182-2.156a5.724 5.724 0 001.696-4.074 5.724 5.724 0 00-1.696-4.074c-2.26-2.246-5.942-2.246-8.203 0l-.794.789A5.797 5.797 0 007.168 0Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Kickstarter</title><path d="M7.168 0c-3.2 0-5.797 2.579-5.797 5.758v12.484C1.371 21.42 3.968 24 7.168 24c1.981 0 3.716-.978 4.768-2.479l.794.79c2.26 2.245 5.943 2.245 8.203 0a5.724 5.724 0 001.696-4.075 5.724 5.724 0 00-1.696-4.074l-2.182-2.168 2.182-2.156a5.724 5.724 0 001.696-4.074 5.724 5.724 0 00-1.696-4.074c-2.26-2.246-5.942-2.246-8.203 0l-.794.789A5.797 5.797 0 007.168 0Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/kik.svg b/assets/lib/simple-icons/icons/kik.svg
index 8e55c2d0..3820d378 100644
--- a/assets/lib/simple-icons/icons/kik.svg
+++ b/assets/lib/simple-icons/icons/kik.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Kik icon</title><path d="M11.482 16.752c-.01.688-.56 1.242-1.238 1.242-.689 0-1.23-.541-1.244-1.23h-.016v-6.243H9v-.029c0-.693.556-1.256 1.237-1.256s1.236.563 1.236 1.258v.045h.016v6.225h-.016l.009-.012zm11.137-4.889c.75 0 1.381.618 1.381 1.377 0 .76-.631 1.375-1.381 1.375-.766 0-1.395-.615-1.395-1.379 0-.766.615-1.381 1.379-1.381l.016.008zm-2.084 4.186c.121.195.193.432.193.686 0 .703-.553 1.26-1.244 1.26-.463 0-.869-.256-1.08-.631l-2.053-2.746-.631.586v1.635h-.014c-.039.652-.57 1.168-1.225 1.168-.674 0-1.221-.553-1.221-1.238v-.025h-.016v-9.45h.027v-.047c0-.69.551-1.253 1.23-1.253.674 0 1.225.562 1.225 1.253v.07h.016l.01 4.597 2.311-2.261c.229-.255.559-.405.928-.405.689 0 1.248.57 1.248 1.26 0 .346-.133.646-.344.871l.012.015-1.621 1.605 2.281 3.061-.016.016-.016-.027zm-13.246 0c.12.195.195.432.195.686 0 .703-.555 1.26-1.244 1.26-.466 0-.871-.256-1.081-.631l-2.054-2.746-.63.586v1.631H2.46c-.036.654-.57 1.17-1.221 1.17-.676 0-1.225-.555-1.225-1.238v-.027H0V7.29h.031c-.004-.015-.004-.029-.004-.044 0-.69.551-1.252 1.23-1.252.675 0 1.225.559 1.225 1.25v.07h.016l.01 4.6 2.311-2.261c.23-.255.562-.405.931-.405.687 0 1.245.57 1.245 1.26 0 .33-.131.646-.346.871l.016.015-1.627 1.605 2.271 3.061-.016.016-.004-.027z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Kik</title><path d="M11.482 16.752c-.01.688-.56 1.242-1.238 1.242-.689 0-1.23-.541-1.244-1.23h-.016v-6.243H9v-.029c0-.693.556-1.256 1.237-1.256s1.236.563 1.236 1.258v.045h.016v6.225h-.016l.009-.012zm11.137-4.889c.75 0 1.381.618 1.381 1.377 0 .76-.631 1.375-1.381 1.375-.766 0-1.395-.615-1.395-1.379 0-.766.615-1.381 1.379-1.381l.016.008zm-2.084 4.186c.121.195.193.432.193.686 0 .703-.553 1.26-1.244 1.26-.463 0-.869-.256-1.08-.631l-2.053-2.746-.631.586v1.635h-.014c-.039.652-.57 1.168-1.225 1.168-.674 0-1.221-.553-1.221-1.238v-.025h-.016v-9.45h.027v-.047c0-.69.551-1.253 1.23-1.253.674 0 1.225.562 1.225 1.253v.07h.016l.01 4.597 2.311-2.261c.229-.255.559-.405.928-.405.689 0 1.248.57 1.248 1.26 0 .346-.133.646-.344.871l.012.015-1.621 1.605 2.281 3.061-.016.016-.016-.027zm-13.246 0c.12.195.195.432.195.686 0 .703-.555 1.26-1.244 1.26-.466 0-.871-.256-1.081-.631l-2.054-2.746-.63.586v1.631H2.46c-.036.654-.57 1.17-1.221 1.17-.676 0-1.225-.555-1.225-1.238v-.027H0V7.29h.031c-.004-.015-.004-.029-.004-.044 0-.69.551-1.252 1.23-1.252.675 0 1.225.559 1.225 1.25v.07h.016l.01 4.6 2.311-2.261c.23-.255.562-.405.931-.405.687 0 1.245.57 1.245 1.26 0 .33-.131.646-.346.871l.016.015-1.627 1.605 2.271 3.061-.016.016-.004-.027z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/kingstontechnology.svg b/assets/lib/simple-icons/icons/kingstontechnology.svg
new file mode 100644
index 00000000..99c15065
--- /dev/null
+++ b/assets/lib/simple-icons/icons/kingstontechnology.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Kingston Technology</title><path d="M14.123.0007c-.5442-.0038-1.0301.008-1.4389.0204C7.185.1697 4.2115 1.7057 4.2115 1.7057s-.2967.1988-.148.8428c0 0 .0993.7921.1983 1.139l.0494.0996c-.099.099-.4958.2973-.6445.4954-.3468.446-.0493 2.4772-.0493 2.4772.3468 2.1303.6938 2.5265.6938 2.5265s.4956.6436 1.1892 1.0895c.2973.1486.2477.4954.2477.4954L3.3203 24h16.3492l-3.4187-7.4808c.6936 0 2.1306.3464 2.9232-1.883.7432-2.1303 1.1397-5.3502 1.1893-6.2915.099-.9414-.0999-2.9233-.0503-3.4187 0-.1486.3473-.6442.3473-.9415.0496-.4459-.0006-.8418-.0996-1.585-.0496-.2972-.0983-.644-.1974-.9908-.0496-.2478-.0999-.3964-.298-.4955C17.91.1701 15.7555.0124 14.123.0007Zm-1.4389.4171c.545 0 5.1027-.0492 7.233.8922.1983.1486.0498.8915-.0493 1.2879-.0495.2972-.3967.3967-.3967.3967-.3468.099-.446.3464-.446.3464s.4458 4.3102.4954 4.4589c.0495.1981-.1485.1981-.5448.2477-.1982 0-2.4772.0493-2.4772.0493s-.4956-.0491-.446-.3464c0-.1981.0992-.595.1983-.595h.4461s.991.0497.6938-.0494l-1.0402-.2477s-.2483.0004-.3474.149c-.0495.1486-.297.9415-.297.9415s-.0002.0491.0493.0987c.0495.0495 2.5768 1.883 2.5768 1.883s-2.1311-.199-2.7752-.0503c-.644.1486-1.9813.8422-2.8235.9908-.8422.1487-3.9636.4955-4.1618.4955l-1.2386-5.35s-.1484-1.3375-1.5356-1.288c-1.0404.0495-1.189.2967-1.2386.3958-.099.1981 0 .3967 0 .3967l3.3693 5.7468s-2.2792-1.0896-3.171-2.3282c-.4954-.644-.9416-3.8645-.6444-4.4095.2973-.4954 2.1306-.8915 2.9233-.7925.3963.0496.7433.4452.9415.6929.0495.099.0985.0501.148.0996 0 0-.1982-1.2383-.9909-1.2879-1.1394-.099-2.3774.3464-2.3774.3464s-.0995-.0004-.149-.149c-.0496-.1982-.1984-1.2386-.1984-1.2386s.0495-.198.2477-.297c0 0 3.2209-1.4863 8.0265-1.4863zm.6435 1.4273c-.0704.003-.0987.0096-.0987.0096-2.0808.8423-3.765 2.675-3.765 2.5759.1981.0495.594 0 .594 0 1.8332-1.5854 3.4187-2.2295 3.4187-2.2295 1.3377 0 3.6165.7927 3.765.7432.0496 0 .0498-.2475-.0493-.297-.2477-.0496-.7433-.2973-1.6846-.4955-1.3748-.2973-1.9688-.316-2.1801-.3067Zm6.788 1.3972c.1981.0496.198.049.297.148.1486.0992.0991.3966 0 .4461-.099.0991-.1484-.0988-.7925-.0493 0 0 .2973-.5943.4955-.5448zm-4.8711.1016c-.3623-.0186-.8641.0469-1.4215.1955-.7431.1982-2.2294.9415-2.2294.9415.5945.2477 1.5861.3468 2.5275.4954 1.0404.0991 2.179-.446 2.179-.446-.0495-.1487-.3963-1.0408-.743-1.14-.0868-.0247-.1919-.0402-.3126-.0464zm.7867 7.4015c.7242.0174 1.5759.1012 2.449.3241 0 0 .4957.3964.4461.7432 0 0-3.567.198-4.9543-.9416 0 0 .852-.1548 2.0592-.1257zm-9.7383.176 1.5356 1.0403 2.5265 11.5429H3.9145Zm11.8032 1.4554a8.479 8.479 0 0 1 .7315.031s.2973.2475-.4954 1.0401c-.9909.9414-2.7256 1.6843-4.2615 1.288 0 0 .5664-2.351 4.0254-2.3591zm-8.0875 4.1918s3.1216 1.9323 3.617 2.6755l.3464 4.3108h-2.2787Zm5.3007 3.9634s1.8335 1.6852 2.3785 3.0229h-3.0713z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/kinopoisk.svg b/assets/lib/simple-icons/icons/kinopoisk.svg
new file mode 100644
index 00000000..173bedf1
--- /dev/null
+++ b/assets/lib/simple-icons/icons/kinopoisk.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>KinoPoisk</title><path d="M23.2732 16.1031c-2.266 6.226-9.1503 9.4362-15.3763 7.1701C1.6709 21.0072-1.5393 14.123.7268 7.897 2.9928 1.6709 9.877-1.5393 16.103.7268c6.226 2.266 9.4362 9.1503 7.1701 15.3763zm-9.864-3.5902c.2832-.7783-.118-1.6388-.8963-1.922-.7783-.2833-1.6388.118-1.922.8962-.2833.7783.118 1.6388.8962 1.922.7783.2833 1.6388-.118 1.922-.8962zm-4.357 3.2017c.5665-1.5565-.236-3.2776-1.7926-3.8441-1.5565-.5665-3.2775.236-3.844 1.7925-.5666 1.5565.236 3.2776 1.7925 3.8441s3.2775-.236 3.844-1.7925zm3.0773-8.455c.5665-1.5565-.236-3.2775-1.7925-3.844-1.5565-.5666-3.2776.236-3.8441 1.7925s.236 3.2775 1.7925 3.844c1.5565.5666 3.2776-.236 3.8441-1.7925zm8.455 3.0774c.5665-1.5565-.236-3.2776-1.7926-3.8441-1.5565-.5665-3.2775.236-3.844 1.7925-.5666 1.5565.236 3.2776 1.7925 3.8441s3.2775-.236 3.844-1.7925zm-3.0774 8.455c.5665-1.5566-.236-3.2777-1.7925-3.8442s-3.2776.236-3.8441 1.7926c-.5665 1.5565.236 3.2775 1.7925 3.844 1.5565.5666 3.2776-.236 3.8441-1.7925Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/kirby.svg b/assets/lib/simple-icons/icons/kirby.svg
index 48daac12..a7ddcf89 100644
--- a/assets/lib/simple-icons/icons/kirby.svg
+++ b/assets/lib/simple-icons/icons/kirby.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Kirby icon</title><path d="M16.571 12l-2.857 1.48v.234h2.857V16H7.43v-2.286h2.857v-.25L7.429 12V9.143L12 11.598l4.571-2.455M12 0l10.286 5.999V18L12 24 1.714 18.001V6zM2.857 6.682v10.636L12 22.651l9.143-5.333V6.682L12 1.349Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Kirby</title><path d="M16.571 12l-2.857 1.48v.234h2.857V16H7.43v-2.286h2.857v-.25L7.429 12V9.143L12 11.598l4.571-2.455M12 0l10.286 5.999V18L12 24 1.714 18.001V6zM2.857 6.682v10.636L12 22.651l9.143-5.333V6.682L12 1.349Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/kitsu.svg b/assets/lib/simple-icons/icons/kitsu.svg
new file mode 100644
index 00000000..dbccdd0e
--- /dev/null
+++ b/assets/lib/simple-icons/icons/kitsu.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Kitsu</title><path d="M1.429 5.441a12.478 12.478 0 0 0 1.916 2.056c.011.011.022.011.022.022.452.387 1.313.947 1.937 1.173 0 0 3.886 1.496 4.091 1.582a1.4 1.4 0 0 0 .237.075.694.694 0 0 0 .808-.549c.011-.065.022-.172.022-.248V5.161c.011-.667-.205-1.679-.398-2.239 0-.011-.011-.022-.011-.032A11.979 11.979 0 0 0 8.824.36L8.781.285a.697.697 0 0 0-.958-.162c-.054.032-.086.075-.129.119L7.608.36a4.743 4.743 0 0 0-.786 3.412 8.212 8.212 0 0 0-.775.463c-.043.032-.42.291-.71.56A4.803 4.803 0 0 0 1.87 4.3c-.043.011-.097.021-.14.032-.054.022-.107.043-.151.076a.702.702 0 0 0-.193.958l.043.075zM8.222 1.07c.366.614.678 1.249.925 1.917-.495.086-.98.215-1.453.388a3.918 3.918 0 0 1 .528-2.305zM4.658 5.463a7.467 7.467 0 0 0-.893 1.216 11.68 11.68 0 0 1-1.453-1.55 3.825 3.825 0 0 1 2.346.334zm13.048-.302a7.673 7.673 0 0 0-2.347-.474 7.583 7.583 0 0 0-3.811.818l-.215.108v3.918c0 .054 0 .258-.032.431a1.535 1.535 0 0 1-.646.98 1.545 1.545 0 0 1-1.152.247 2.618 2.618 0 0 1-.409-.118 747.6 747.6 0 0 1-3.402-1.313 8.9 8.9 0 0 0-.323-.129 30.597 30.597 0 0 0-3.822 3.832l-.075.086a.698.698 0 0 0 .538 1.098.676.676 0 0 0 .42-.118c.011-.011.022-.022.043-.032 1.313-.947 2.756-1.712 4.284-2.325a.7.7 0 0 1 .818.13.704.704 0 0 1 .054.915l-.237.388a20.277 20.277 0 0 0-1.97 4.306l-.032.129a.646.646 0 0 0 .108.538.713.713 0 0 0 .549.301.657.657 0 0 0 .42-.118c.054-.043.108-.086.151-.14l.043-.065a18.95 18.95 0 0 1 1.765-2.153 20.156 20.156 0 0 1 10.797-6.018c.032-.011.065-.011.097-.011.237.011.42.215.409.452a.424.424 0 0 1-.344.398c-3.908.829-10.948 5.469-8.483 12.208.043.108.075.172.129.269a.71.71 0 0 0 .538.301.742.742 0 0 0 .657-.398c.398-.754 1.152-1.593 3.326-2.497 6.061-2.508 7.062-6.093 7.17-8.364v-.129a7.716 7.716 0 0 0-5.016-7.451zm-6.083 17.762c-.56-1.669-.506-3.283.151-4.823 1.26 2.035 3.456 2.207 3.456 2.207-2.25.937-3.133 1.863-3.607 2.616z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/klarna.svg b/assets/lib/simple-icons/icons/klarna.svg
new file mode 100644
index 00000000..c12c2cef
--- /dev/null
+++ b/assets/lib/simple-icons/icons/klarna.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Klarna</title><path d="M4.592 2v20H0V2h4.592zm11.46 0c0 4.194-1.583 8.105-4.415 11.068l-.278.283L17.702 22h-5.668l-6.893-9.4 1.779-1.332c2.858-2.14 4.535-5.378 4.637-8.924L11.562 2h4.49zM21.5 17a2.5 2.5 0 110 5 2.5 2.5 0 010-5z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/klm.svg b/assets/lib/simple-icons/icons/klm.svg
index 37bfcdad..77ba4cc5 100644
--- a/assets/lib/simple-icons/icons/klm.svg
+++ b/assets/lib/simple-icons/icons/klm.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>KLM icon</title><path d="M6.75 13.034H4.5l-2.25 2.257v-2.257H0v6.018h2.25v-2.257l2.25 2.257h3l-3.375-3.385zm3 0H7.5v6.018h6v-1.518H9.75zm10.5 0l-1.125 3.385L18 13.034h-3.75v6.018h2.25v-4.514l1.5 4.514h2.25l1.5-4.514v4.514H24v-6.018zM10.5 9.649c.725 0 1.313-.589 1.313-1.316s-.588-1.317-1.313-1.317-1.312.589-1.312 1.317.587 1.316 1.312 1.316zm1.688-1.316c0 .727.588 1.316 1.312 1.316.725 0 1.313-.589 1.313-1.316s-.588-1.317-1.313-1.317-1.312.589-1.312 1.317zm2.999 0c0 .727.588 1.316 1.312 1.316.725 0 1.313-.589 1.313-1.316s-.588-1.317-1.313-1.317-1.312.589-1.312 1.317zm-6.375 0c0-.727-.588-1.317-1.313-1.317s-1.312.589-1.312 1.317.588 1.316 1.313 1.316 1.312-.589 1.312-1.316zM7.5 10.025h9v1.505h-9zm4.125-2.821h.75v-.752h.75V5.7h-.75v-.753h-.75V5.7h-.75v.752h.75z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>KLM</title><path d="M6.75 13.034H4.5l-2.25 2.257v-2.257H0v6.018h2.25v-2.257l2.25 2.257h3l-3.375-3.385zm3 0H7.5v6.018h6v-1.518H9.75zm10.5 0l-1.125 3.385L18 13.034h-3.75v6.018h2.25v-4.514l1.5 4.514h2.25l1.5-4.514v4.514H24v-6.018zM10.5 9.649c.725 0 1.313-.589 1.313-1.316s-.588-1.317-1.313-1.317-1.312.589-1.312 1.317.587 1.316 1.312 1.316zm1.688-1.316c0 .727.588 1.316 1.312 1.316.725 0 1.313-.589 1.313-1.316s-.588-1.317-1.313-1.317-1.312.589-1.312 1.317zm2.999 0c0 .727.588 1.316 1.312 1.316.725 0 1.313-.589 1.313-1.316s-.588-1.317-1.313-1.317-1.312.589-1.312 1.317zm-6.375 0c0-.727-.588-1.317-1.313-1.317s-1.312.589-1.312 1.317.588 1.316 1.313 1.316 1.312-.589 1.312-1.316zM7.5 10.025h9v1.505h-9zm4.125-2.821h.75v-.752h.75V5.7h-.75v-.753h-.75V5.7h-.75v.752h.75z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/klook.svg b/assets/lib/simple-icons/icons/klook.svg
new file mode 100644
index 00000000..02eca239
--- /dev/null
+++ b/assets/lib/simple-icons/icons/klook.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Klook</title><path d="M4.8 0A4.79 4.79 0 0 0 0 4.8v14.4C0 21.86 2.14 24 4.8 24h14.4c2.66 0 4.8-2.14 4.8-4.8V4.8C24 2.14 21.86 0 19.2 0H4.8zM12 3.449v.001c4.242 0 7.833 1.904 7.833 6.17 0 2.932-3.86 7.815-6.164 10.164-.99 1.008-2.32 1.036-3.338 0-2.303-2.349-6.164-7.232-6.164-10.164 0-4.162 3.476-6.171 7.833-6.171zm3.54 2.155l-5.05 4.96 5.05 4.956a1.84 1.84 0 0 0 0-2.634v-.001l-2.366-2.323 2.366-2.323a1.84 1.84 0 0 0 0-2.635zm-7.349.144v9.772a1.86 1.86 0 0 0 1.868-1.852V7.602a1.86 1.86 0 0 0-1.866-1.854h-.002z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/klout.svg b/assets/lib/simple-icons/icons/klout.svg
deleted file mode 100644
index eb4c24d2..00000000
--- a/assets/lib/simple-icons/icons/klout.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Klout icon</title><path d="M0 2.673v14.72h16.17L24 21.327V2.673H0zm9.827 8.42h-1.17l-2.88 4.054H2.35l3.94-5.265-3.638-5.07h3.336l2.66 3.885h1.18v2.397zm8.407 4.053l-2.88-4.053h-1.966v4.053h-2.73V4.812h2.734v3.885h1.965l2.658-3.885h3.33l-3.636 5.07 3.94 5.265h-3.416z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/knative.svg b/assets/lib/simple-icons/icons/knative.svg
new file mode 100644
index 00000000..3b537070
--- /dev/null
+++ b/assets/lib/simple-icons/icons/knative.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Knative</title><path d="m10.14 2.358 4.714 2.27-.915 1.584a.268.268 0 0 0-.032.182l.607 3.441a.263.263 0 0 0 .093.16l2.676 2.245c.048.041.11.064.174.064h1.878l.507 2.22a.492.492 0 0 1-.095.415l-5.237 6.567a.491.491 0 0 1-.383.184h-8.4a.491.491 0 0 1-.383-.184L.107 14.939a.492.492 0 0 1-.095-.415l1.869-8.189a.494.494 0 0 1 .266-.333l7.567-3.644a.49.49 0 0 1 .426 0ZM7.244 16.626h1.667v-2.429l.64-.784 1.822 3.213h1.965l-2.594-4.273 2.462-3.169h-2.065l-1.689 2.473c-.166.265-.342.53-.508.817h-.033v-3.29H7.244v7.442ZM19.281 2.352l2.975 1.083c.054.02.099.058.128.108l1.583 2.742c.029.05.039.108.029.165l-.55 3.118a.243.243 0 0 1-.083.145l-2.426 2.035a.245.245 0 0 1-.157.058h-3.166a.246.246 0 0 1-.158-.058l-2.425-2.035a.24.24 0 0 1-.084-.145l-.55-3.118a.244.244 0 0 1 .029-.165l1.583-2.742a.245.245 0 0 1 .129-.108l2.975-1.083a.243.243 0 0 1 .168 0Zm-.71 3.404c-.032-.092-.098-.137-.197-.137h-.487V8.57h.79V6.449c.088-.086.18-.153.278-.2a.694.694 0 0 1 .312-.072c.149 0 .261.045.338.136.076.091.114.218.114.382V8.57h.787V6.695c0-.164-.021-.315-.064-.452a.988.988 0 0 0-.192-.355.875.875 0 0 0-.313-.232 1.208 1.208 0 0 0-.697-.054 1.176 1.176 0 0 0-.436.203 1.956 1.956 0 0 0-.184.157l-.049-.206Z"/></svg>
diff --git a/assets/lib/simple-icons/icons/knowledgebase.svg b/assets/lib/simple-icons/icons/knowledgebase.svg
new file mode 100644
index 00000000..ac573257
--- /dev/null
+++ b/assets/lib/simple-icons/icons/knowledgebase.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>KnowledgeBase</title><path d="M20.1 5.52V1.5h-.18c-3.36.15-6.15 2.31-7.83 4.02l-.09.09-.09-.09C10.2 3.81 7.44 1.65 4.08 1.5H3.9v4.02H0v6.93c0 1.68.06 3.36.18 4.74a5.57 5.57 0 005.19 5.1c2.13.12 4.38.21 6.63.21s4.5-.09 6.63-.24a5.57 5.57 0 005.19-5.1c.12-1.38.18-3.06.18-4.74v-6.9zm0 6.93c0 1.59-.06 3.15-.18 4.41-.09.81-.75 1.47-1.56 1.5a90 90 0 01-12.72 0c-.81-.03-1.5-.69-1.56-1.5-.12-1.26-.18-2.85-.18-4.41V5.52c2.82.12 5.64 3.15 6.48 4.32L12 12.09l1.62-2.25c.84-1.2 3.66-4.2 6.48-4.32z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/known.svg b/assets/lib/simple-icons/icons/known.svg
index d6c59dd2..7fd45c06 100644
--- a/assets/lib/simple-icons/icons/known.svg
+++ b/assets/lib/simple-icons/icons/known.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Known icon</title><path d="M24 12c0 6.6-5.4 12-12 12S0 18.6 0 12 5.4 0 12 0s12 5.4 12 12zM12 1.8C6.3 1.8 1.8 6.3 1.8 12S6.3 22.2 12 22.2 22.2 17.7 22.2 12 17.7 1.8 12 1.8zm5.6 5.4l-.2.2c.1-.1.3-.2.4-.2h-.2zm.2 0h.5V5.3h-5.5v1.9h.9c.2 0 .3.1.3.3 0 .1 0 .2-.1.2l-3.8 3.8H10c-.1 0-.2-.1-.2-.2V7.9c0-.4.3-.7.7-.7h.8V5.3H5.4v1.9h.7c.4 0 .7.3.7.7v8.4c0 .4-.3.7-.7.7h-.7v2h5.9v-2h-.8c-.4 0-.7-.3-.7-.7v-1.4c0-.1 0-.2.1-.3l1.5-1.5s.1-.1.2-.1.2 0 .2.1l2.1 3.3v.2c0 .2-.1.3-.3.3h-.9v2H19v-2h-.7c-.2 0-.4-.1-.5-.3v-.1L14.1 11c0-.1-.1-.1-.1-.2s0-.2.1-.2l3.2-3.2c.2-.2.3-.2.5-.2z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Known</title><path d="M18.387 16.926h.604v1.936h-6.086v-1.936h.904s.333-.072.26-.386l-2.392-3.776-1.893 1.847v1.322c0 .653.324.993.687.993h.844v1.936H5.414v-1.936h.741c.364 0 .688-.34.688-.993V7.992c0-.364-.324-.855-.688-.855h-.741V5.201h5.901v1.936h-.844c-.363 0-.687.491-.687.855v3.83l4.087-4.144a.316.316 0 0 0-.219-.541h-.747V5.201H19v1.936h-.872c-.363 0-.867.176-1.225.525l-3.058 2.985 3.396 5.276c.304.434.772 1.003 1.146 1.003zM24 12c0 6.627-5.373 12-12 12S0 18.627 0 12 5.373 0 12 0s12 5.373 12 12zm-1.684 0c0-5.697-4.619-10.316-10.316-10.316C6.303 1.684 1.684 6.303 1.684 12c0 5.697 4.619 10.316 10.316 10.316 5.697 0 10.316-4.619 10.316-10.316z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ko-fi.svg b/assets/lib/simple-icons/icons/ko-fi.svg
deleted file mode 100644
index c335a1a4..00000000
--- a/assets/lib/simple-icons/icons/ko-fi.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Ko-fi icon</title><path d="M23.881 8.948c-.773-4.085-4.859-4.593-4.859-4.593H.723c-.604 0-.679.798-.679.798s-.082 7.324-.022 11.822c.164 2.424 2.586 2.672 2.586 2.672s8.267-.023 11.966-.049c2.438-.426 2.683-2.566 2.658-3.734 4.352.24 7.422-2.831 6.649-6.916zm-11.062 3.511c-1.246 1.453-4.011 3.976-4.011 3.976s-.121.119-.31.023c-.076-.057-.108-.09-.108-.09-.443-.441-3.368-3.049-4.034-3.954-.709-.965-1.041-2.7-.091-3.71.951-1.01 3.005-1.086 4.363.407 0 0 1.565-1.782 3.468-.963 1.904.82 1.832 3.011.723 4.311zm6.173.478c-.928.116-1.682.028-1.682.028V7.284h1.77s1.971.551 1.971 2.638c0 1.913-.985 2.667-2.059 3.015z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/koa.svg b/assets/lib/simple-icons/icons/koa.svg
new file mode 100644
index 00000000..4a99aae4
--- /dev/null
+++ b/assets/lib/simple-icons/icons/koa.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Koa</title><path d="M0 5.587v12.757h1.19v-4.099l.46-.527 3.147 4.626h1.19L2.33 12.97l2.773-3.13h-.17L1.19 14.058v-8.47zm11.039 4.185c-1.19 0-2.177.391-2.96 1.173-.77.783-1.156 1.883-1.156 3.3 0 1.418.374 2.467 1.122 3.147.749.68 1.718 1.02 2.909 1.02 1.202 0 2.188-.39 2.96-1.173.782-.783 1.173-1.883 1.173-3.3 0-1.417-.374-2.466-1.122-3.147-.749-.68-1.724-1.02-2.926-1.02zm8.896 0c-1.043 0-2.07.232-3.079.697l.068.12c.261-.148.67-.296 1.225-.443.567-.159 1.06-.238 1.48-.238.42 0 .76.057 1.02.17.26.102.442.227.545.374.102.148.18.3.238.46.068.147.09.272.068.374.007.97 0 1.988 0 2.976a9.269 9.269 0 00-.834-.034c-.306 0-.64.017-1.003.051-1.463.091-2.41.34-2.841.749-.215.204-.346.391-.391.561-.046.17-.068.329-.068.476 0 .136.011.273.034.409.193 1.292 1.003 1.939 2.432 1.939 1.225 0 2.115-.505 2.67-1.514v.357c0 .181.131.397.392.646.283.295.81.443 1.582.443H24v-.136h-.527l-.187-.034c-.136-.012-.272-.103-.409-.273-.124-.181-.187-.436-.187-.765v-5.698c0-.363-.147-.709-.442-1.038-.498-.557-1.564-.624-2.313-.63zm-8.862.136c.862 0 1.553.329 2.075.986.522.658.783 1.673.783 3.045 0 1.36-.284 2.427-.85 3.198-.568.76-1.282 1.14-2.144 1.14-.862 0-1.554-.33-2.075-.987-.522-.658-.783-1.667-.783-3.028 0-1.372.284-2.438.85-3.198.568-.77 1.282-1.156 2.144-1.156zm9.491 4.456c.318 0 .63.012.936.034v2.058c-.034.386-.295.789-.783 1.208a2.416 2.416 0 01-1.616.613c-.907 0-1.411-.601-1.513-1.803a3.155 3.155 0 01-.02-.307c0-.499.131-.89.392-1.173.26-.284.822-.477 1.684-.579.314-.038.64-.039.92-.05z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/koc.svg b/assets/lib/simple-icons/icons/koc.svg
new file mode 100644
index 00000000..dac278af
--- /dev/null
+++ b/assets/lib/simple-icons/icons/koc.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Koc</title><path d="M23.72 9.887c-1.313-3.731-5.036-3.932-5.414-3.943-1.667-.036-3.511.541-4.917 1.906-.568.506-.97 1.095-1.395 1.719-.426-.636-.828-1.213-1.395-1.719C9.204 6.485 7.36 5.908 5.694 5.944c-.39.011-4.114.211-5.414 3.943-.46 1.33-.354 3.06.331 4.33.686 1.46 2.329 2.66 4.066 2.543 1.253-.035 2.624-.824 3.132-2.107.426-1.141.296-2.377-.685-3.354.024.247.035.6-.213.918-.39.541-1.016.683-1.666.447-.568-.259-.78-.67-.721-1.212.035-.46.413-.812.803-.989.757-.33 1.454-.164 2.14.483 1.123 1.247 1.253 3.13 1.785 4.567.378 1.177.969 2.2 2.28 2.495.154.035.32.059.485.047.166 0 .331-.012.485-.047 1.312-.294 1.903-1.318 2.281-2.495.532-1.436.662-3.32 1.773-4.567.686-.647 1.383-.812 2.14-.483.39.177.756.53.803.989.06.541-.153.953-.72 1.212-.65.236-1.265.094-1.667-.447-.248-.318-.237-.671-.213-.918-.981.977-1.111 2.213-.686 3.354.509 1.283 1.88 2.072 3.133 2.107 1.725.118 3.368-1.07 4.054-2.542.674-1.271.78-3.001.32-4.331zm-2.637 4.449c-.792.694-1.844.894-2.695.506-.508-.248-.886-.683-1.004-1.154.72.718 2.02 1.071 3.203-.176 0 0 1.11-1.024.484-2.966-.319-.965-1.489-1.754-2.47-1.86-1.466-.235-2.837.259-3.794 1.589-1.123 1.73-1.265 3.66-2.092 5.59a.732.732 0 0 1-.721.448.732.732 0 0 1-.721-.447c-.816-1.919-.946-3.837-2.08-5.58-.958-1.33-2.341-1.824-3.795-1.588-.98.094-2.163.894-2.47 1.86-.627 1.941.484 2.965.484 2.965 1.194 1.248 2.483.883 3.204.177-.119.47-.485.906-1.005 1.153-.851.389-1.915.177-2.707-.506-1.17-1.153-1.347-2.636-.886-4.001.555-1.66 2.246-2.484 3.581-2.59 1.584-.141 3.77.824 4.645 2.484.201.376.627 1.365.627 1.365h2.222s.426-.989.626-1.365c.875-1.648 3.062-2.613 4.646-2.484 1.335.106 3.026.942 3.581 2.59.485 1.353.307 2.836-.863 3.99z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/kodi.svg b/assets/lib/simple-icons/icons/kodi.svg
index 7716b8d3..dc2ea8bf 100644
--- a/assets/lib/simple-icons/icons/kodi.svg
+++ b/assets/lib/simple-icons/icons/kodi.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Kodi icon</title><path d="M12.03.047c-.226 0-.452.107-.669.324-.922.922-1.842 1.845-2.763 2.768-.233.233-.455.48-.703.695-.31.267-.405.583-.399.988.02 1.399.008 2.799.008 4.198 0 1.453-.002 2.907 0 4.36 0 .11.002.223.03.327.087.337.303.393.546.15 1.31-1.31 2.618-2.622 3.928-3.933l4.449-4.453c.43-.431.43-.905 0-1.336L12.697.37c-.216-.217-.442-.324-.668-.324zm7.224 7.23c-.223 0-.445.104-.65.309L14.82 11.37c-.428.429-.427.895 0 1.322l3.76 3.766c.44.44.908.44 1.346.002 1.215-1.216 2.427-2.433 3.644-3.647.182-.18.353-.364.43-.615v-.33c-.077-.251-.246-.436-.428-.617-1.224-1.22-2.443-2.445-3.666-3.668-.205-.205-.429-.307-.652-.307zM4.18 7.611c-.086.014-.145.094-.207.157L.209 11.572c-.28.284-.278.677.004.96l2.043 2.046c.59.59 1.177 1.182 1.767 1.772.169.168.33.139.416-.084.044-.114.062-.242.063-.364.004-1.283.004-2.567.004-3.851h-.002V8.184c0-.085-.01-.169-.022-.252-.019-.135-.072-.258-.207-.309a.186.186 0 0 0-.095-.012zm7.908 6.838c-.224 0-.447.106-.656.315L7.66 18.537c-.433.434-.433.899.002 1.334 1.215 1.216 2.43 2.43 3.643 3.649.18.18.361.354.611.433h.33c.244-.069.423-.226.598-.402 1.222-1.23 2.45-2.453 3.676-3.68.43-.43.427-.905-.004-1.338l-3.772-3.773c-.208-.208-.432-.311-.656-.31z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Kodi</title><path d="M12.03.047c-.226 0-.452.107-.669.324-.922.922-1.842 1.845-2.763 2.768-.233.233-.455.48-.703.695-.31.267-.405.583-.399.988.02 1.399.008 2.799.008 4.198 0 1.453-.002 2.907 0 4.36 0 .11.002.223.03.327.087.337.303.393.546.15 1.31-1.31 2.618-2.622 3.928-3.933l4.449-4.453c.43-.431.43-.905 0-1.336L12.697.37c-.216-.217-.442-.324-.668-.324zm7.224 7.23c-.223 0-.445.104-.65.309L14.82 11.37c-.428.429-.427.895 0 1.322l3.76 3.766c.44.44.908.44 1.346.002 1.215-1.216 2.427-2.433 3.644-3.647.182-.18.353-.364.43-.615v-.33c-.077-.251-.246-.436-.428-.617-1.224-1.22-2.443-2.445-3.666-3.668-.205-.205-.429-.307-.652-.307zM4.18 7.611c-.086.014-.145.094-.207.157L.209 11.572c-.28.284-.278.677.004.96l2.043 2.046c.59.59 1.177 1.182 1.767 1.772.169.168.33.139.416-.084.044-.114.062-.242.063-.364.004-1.283.004-2.567.004-3.851h-.002V8.184c0-.085-.01-.169-.022-.252-.019-.135-.072-.258-.207-.309a.186.186 0 0 0-.095-.012zm7.908 6.838c-.224 0-.447.106-.656.315L7.66 18.537c-.433.434-.433.899.002 1.334 1.215 1.216 2.43 2.43 3.643 3.649.18.18.361.354.611.433h.33c.244-.069.423-.226.598-.402 1.222-1.23 2.45-2.453 3.676-3.68.43-.43.427-.905-.004-1.338l-3.772-3.773c-.208-.208-.432-.311-.656-.31z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/koding.svg b/assets/lib/simple-icons/icons/koding.svg
deleted file mode 100644
index 4173e95c..00000000
--- a/assets/lib/simple-icons/icons/koding.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Koding icon</title><path d="M.8 0H23v6H1V0zm0 9H18v6H.7V9zm0 9H23v6H1v-6z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/kofax.svg b/assets/lib/simple-icons/icons/kofax.svg
index 782fd84f..60f7641e 100644
--- a/assets/lib/simple-icons/icons/kofax.svg
+++ b/assets/lib/simple-icons/icons/kofax.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Kofax icon</title><path d="M1.38 12.94l.576-.5 1.273 1.698h1.835l-2.001-2.593 1.85-1.683h-1.82L1.38 11.545V9.862H0v4.276h1.38z M7.353 9.726c-1.455 0-2.683.5-2.683 2.274s1.228 2.274 2.683 2.274 2.684-.5 2.684-2.274-1.228-2.274-2.684-2.274zm0 3.593c-.728 0-1.228-.41-1.228-1.319 0-.894.5-1.319 1.228-1.319.743 0 1.228.425 1.228 1.32 0 .894-.5 1.318-1.228 1.318zM11.795 14.138v-1.653h2.365v-.925h-2.365v-.742h2.547v-.956h-3.926v4.276zM22.21 11.91l1.593-2.063h-1.638L21.407 11l-.758-1.153h-1.637l1.592 2.062-1.607 2.001-1.668-4.048h-1.683l-1.759 4.276h1.471l.243-.698h1.804l.242.698h2.896l.88-1.289.879 1.289H24zm-6.276.651l.576-1.622h.015l.577 1.622z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Kofax</title><path d="M1.38 12.94l.576-.5 1.273 1.698h1.835l-2.001-2.593 1.85-1.683h-1.82L1.38 11.545V9.862H0v4.276h1.38z M7.353 9.726c-1.455 0-2.683.5-2.683 2.274s1.228 2.274 2.683 2.274 2.684-.5 2.684-2.274-1.228-2.274-2.684-2.274zm0 3.593c-.728 0-1.228-.41-1.228-1.319 0-.894.5-1.319 1.228-1.319.743 0 1.228.425 1.228 1.32 0 .894-.5 1.318-1.228 1.318zM11.795 14.138v-1.653h2.365v-.925h-2.365v-.742h2.547v-.956h-3.926v4.276zM22.21 11.91l1.593-2.063h-1.638L21.407 11l-.758-1.153h-1.637l1.592 2.062-1.607 2.001-1.668-4.048h-1.683l-1.759 4.276h1.471l.243-.698h1.804l.242.698h2.896l.88-1.289.879 1.289H24zm-6.276.651l.576-1.622h.015l.577 1.622z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/kofi.svg b/assets/lib/simple-icons/icons/kofi.svg
new file mode 100644
index 00000000..1c209d97
--- /dev/null
+++ b/assets/lib/simple-icons/icons/kofi.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Ko-fi</title><path d="M23.881 8.948c-.773-4.085-4.859-4.593-4.859-4.593H.723c-.604 0-.679.798-.679.798s-.082 7.324-.022 11.822c.164 2.424 2.586 2.672 2.586 2.672s8.267-.023 11.966-.049c2.438-.426 2.683-2.566 2.658-3.734 4.352.24 7.422-2.831 6.649-6.916zm-11.062 3.511c-1.246 1.453-4.011 3.976-4.011 3.976s-.121.119-.31.023c-.076-.057-.108-.09-.108-.09-.443-.441-3.368-3.049-4.034-3.954-.709-.965-1.041-2.7-.091-3.71.951-1.01 3.005-1.086 4.363.407 0 0 1.565-1.782 3.468-.963 1.904.82 1.832 3.011.723 4.311zm6.173.478c-.928.116-1.682.028-1.682.028V7.284h1.77s1.971.551 1.971 2.638c0 1.913-.985 2.667-2.059 3.015z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/komoot.svg b/assets/lib/simple-icons/icons/komoot.svg
new file mode 100644
index 00000000..f5ef8b4e
--- /dev/null
+++ b/assets/lib/simple-icons/icons/komoot.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Komoot</title><path d="M9.8 14.829l2.2-3.43 2.2 3.43 5.962 5.962A11.946 11.946 0 0 1 12 24c-3.043 0-5.935-1.14-8.162-3.209zM0 12C0 5.385 5.385 0 12 0c6.62 0 12 5.385 12 12 0 2.663-.855 5.175-2.469 7.284l-6.018-6.018c.15-.412.226-.839.226-1.27A3.743 3.743 0 0 0 12 8.257a3.743 3.743 0 0 0-3.739 3.739c0 .431.075.858.226 1.27l-6.018 6.018A11.865 11.865 0 0 1 0 12Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/konami.svg b/assets/lib/simple-icons/icons/konami.svg
new file mode 100644
index 00000000..c02efa68
--- /dev/null
+++ b/assets/lib/simple-icons/icons/konami.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Konami</title><path d="m14.167 12.562.59-1.298a1.53 1.53 0 0 0 .062-.158h.012c.013.04.037.095.061.158l.575 1.298zm1.887 1.325h1.036l-1.635-3.537a.396.396 0 0 0-.359-.233h-.717c-.041 0-.041.04-.012.055.085.044.146.19.081.325l-1.582 3.39h.702l.39-.87h1.713zm-4.089-3.77v2.152c0 .107.004.174.008.269h-.008a6.068 6.068 0 0 0-.273-.348l-1.618-1.871c-.127-.147-.229-.202-.461-.202H8.79c-.037 0-.041.04-.013.055.123.056.22.123.22.345v3.37h.616v-2.425c0-.13-.004-.23-.008-.34h.008c.114.154.27.356.396.502l1.944 2.263h.322a.305.305 0 0 0 .306-.305v-3.465zm11.733 0h-.856c-.04 0-.045.04-.016.055.126.056.224.123.224.345v3.37H24v-3.465a.3.304 0 0 0-.302-.305m-1.386 3.77-.562-3.442a.401.401 0 0 0-.384-.328h-.53l-.921 2.144a1.866 1.866 0 0 0-.09.23h-.008a1.935 1.935 0 0 0-.081-.218l-.816-1.91a.401.401 0 0 0-.367-.246h-.807c-.04 0-.045.04-.016.055.11.048.192.131.155.34l-.55 3.375h.582l.367-2.382c.017-.118.041-.268.045-.344h.004c.037.1.086.218.139.34l1.015 2.386h.302l1.027-2.429c.057-.142.098-.245.126-.324h.004c.013.095.029.237.053.38l.38 2.373zm-16.205-.25c-.758 0-1.19-.739-1.19-1.59 0-.973.432-1.685 1.19-1.685s1.19.744 1.19 1.59c0 1.001-.432 1.686-1.19 1.686m0-3.66c-1.272 0-2.21.887-2.21 2.022 0 1.14.865 2.022 2.21 2.022 1.272 0 2.206-.883 2.206-2.022 0-1.135-.86-2.021-2.206-2.021M4.33 13.85c-.327-.07-.58-.225-.856-.506-.302-.309-1.387-1.586-1.387-1.586l1.729-1.642h-.934L1.305 11.66c-.07.067-.11.11-.147.154H1.15c.004-.051.004-.107.004-.158v-1.234a.3.304 0 0 0-.302-.305h-.82c-.036 0-.044.04-.012.055.123.056.22.123.22.345v3.37h.914V12.15c0-.047 0-.079-.004-.13h.008c.032.051.09.11.147.182 0 0 .962 1.131 1.064 1.238.407.427.978.578 1.957.483.053-.004.053-.06.004-.072"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/kong.svg b/assets/lib/simple-icons/icons/kong.svg
new file mode 100644
index 00000000..2440ecc3
--- /dev/null
+++ b/assets/lib/simple-icons/icons/kong.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Kong</title><path d="M7.88 18.96h4.405l2.286 2.876-.393.979h-5.69l.139-.979-1.341-2.117.594-.759Zm3.152-12.632 2.36-.004L24 18.97l-.824 3.845h-4.547l.283-1.083L9 9.912l2.032-3.584Zm4.17-5.144 4.932 3.876-.632.651.855 1.191v1.273l-2.458 2.004-4.135-4.884h-2.407l.969-1.777 2.876-2.334ZM4.852 13.597l3.44-2.989 4.565 5.494-1.296 2.012h-4.21l-2.912 3.822-.665.879H0v-4.689l3.517-4.529h1.335Z"/></svg>
diff --git a/assets/lib/simple-icons/icons/kongregate.svg b/assets/lib/simple-icons/icons/kongregate.svg
new file mode 100644
index 00000000..e4a50a9c
--- /dev/null
+++ b/assets/lib/simple-icons/icons/kongregate.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Kongregate</title><path d="M13.358 22.95v-3.736h1.551l.106-.141-3.877-5.851-3.172 3.264-.026 2.351.166.095 2.22 1.342.071 2.676H.141l.053-3.021 2.027-.715.106-.141V5.187l-.07-.141L0 4.165V.922h10.362v3.736h-2.22l-.106.141v7.014l7.472-6.802V4.87l-1.163-.352-1.163-.352V.922h10.75v3.736h-1.41l-.352.106-7.219 6.165 6.493 8.46.246.246 2.31.787v2.656l-10.642-.128z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/konva.svg b/assets/lib/simple-icons/icons/konva.svg
new file mode 100644
index 00000000..bcbb948f
--- /dev/null
+++ b/assets/lib/simple-icons/icons/konva.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Konva</title><path d="M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0zm1.391 18.541-.239-3.76-2.391-1.608.152 5.129-4.325.152-.173-13.409L10.5 4.98l.087 5.346 2.217-1.608.109-3.781 4.412.283-.348 4.586-2.608 1.608 2.673 1.174.913 5.694-4.564.259z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/kotlin.svg b/assets/lib/simple-icons/icons/kotlin.svg
index ac00bbe4..adf2975b 100644
--- a/assets/lib/simple-icons/icons/kotlin.svg
+++ b/assets/lib/simple-icons/icons/kotlin.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Kotlin icon</title><path d="M1.3 24l11.3-11.5L24 24zM0 0h12L0 12.5zM13.4 0L0 14v10l12-12L24 0z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Kotlin</title><path d="M24 24H0V0h24L12 12Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/krita.svg b/assets/lib/simple-icons/icons/krita.svg
index 7e43a30d..c3a0b6a2 100644
--- a/assets/lib/simple-icons/icons/krita.svg
+++ b/assets/lib/simple-icons/icons/krita.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Krita icon</title><path d="M.652.76a.625.625 0 00-.5.246c-.352.448-.035.898.362 1.262.206.189 1.77 1.794 3.428 3.527a11.054 11.054 0 011.815-1.983C3.667 2.515 1.694 1.266 1.461 1.1 1.201.914.917.762.652.76zm5.105 3.052c1.848 1.148 3.786 2.332 4.693 2.84 1.469.821 3.758 2.684 4.092 4.434.535.466 2.182 1.916 2.596 2.413.698-.211 1.518.133 2.06 1.12.866 1.583.227 3.747-1.968 4.988a5.42 5.42 0 01-.296.267l.296-.267c1.14-1.468-.714-2.44-1.175-3.864a2.06 2.06 0 01-.11-.78c-.533-.282-2.11-1.452-2.795-1.965-1.801.16-4.207-1.773-5.35-3.08-.7-.802-2.32-2.517-3.858-4.123a11.052 11.052 0 00-2.046 6.393A11.052 11.052 0 1012.948 1.136c-2.64.004-5.19.954-7.19 2.676zm8.71 7.552c-.515.126-.968.831-1.118 1.306-.038.115-.04.303.066.342.802.592 1.556 1.168 2.4 1.7.162-.393.746-.963 1.096-1.2zm-11.53 1.639c.812 1.898 5.798 7.17 12.06 2.695a2.07 2.07 0 00.114.715c.46 1.42 2.36 2.427 1.238 3.89-2.135 1.364-5 1.201-6.989.528-3.558-1.204-5.914-4.332-6.424-7.828zm13.782.7a.771.771 0 00-.065.049c-.004.003-.008.008-.011.008.003-.003.007-.008.01-.008.024-.015.044-.034.066-.048z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Krita</title><path d="M.652.76a.625.625 0 00-.5.246c-.352.448-.035.898.362 1.262.206.189 1.77 1.794 3.428 3.527a11.054 11.054 0 011.815-1.983C3.667 2.515 1.694 1.266 1.461 1.1 1.201.914.917.762.652.76zm5.105 3.052c1.848 1.148 3.786 2.332 4.693 2.84 1.469.821 3.758 2.684 4.092 4.434.535.466 2.182 1.916 2.596 2.413.698-.211 1.518.133 2.06 1.12.866 1.583.227 3.747-1.968 4.988a5.42 5.42 0 01-.296.267l.296-.267c1.14-1.468-.714-2.44-1.175-3.864a2.06 2.06 0 01-.11-.78c-.533-.282-2.11-1.452-2.795-1.965-1.801.16-4.207-1.773-5.35-3.08-.7-.802-2.32-2.517-3.858-4.123a11.052 11.052 0 00-2.046 6.393A11.052 11.052 0 1012.948 1.136c-2.64.004-5.19.954-7.19 2.676zm8.71 7.552c-.515.126-.968.831-1.118 1.306-.038.115-.04.303.066.342.802.592 1.556 1.168 2.4 1.7.162-.393.746-.963 1.096-1.2zm-11.53 1.639c.812 1.898 5.798 7.17 12.06 2.695a2.07 2.07 0 00.114.715c.46 1.42 2.36 2.427 1.238 3.89-2.135 1.364-5 1.201-6.989.528-3.558-1.204-5.914-4.332-6.424-7.828zm13.782.7a.771.771 0 00-.065.049c-.004.003-.008.008-.011.008.003-.003.007-.008.01-.008.024-.015.044-.034.066-.048z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ktm.svg b/assets/lib/simple-icons/icons/ktm.svg
new file mode 100644
index 00000000..3d898603
--- /dev/null
+++ b/assets/lib/simple-icons/icons/ktm.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>KTM</title><path d="M0 15.735h3.354l.843-2.06 1.55 2.06h7.225l2.234-2.081-.372 2.081h2.83L20 13.675l-.32 2.06h3.052L24 9.99h-3.068l-2.486 2.191.48-2.19h-2.942l-3.209 3.216 1.342-3.938h4.907l.225-1.003H6.381l-.378 1.003h4.732l-1.994 5.054-1.572-2.066L9.886 9.99H7.612l-2.787 2.23.938-2.23H2.44L0 15.735Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/kuaishou.svg b/assets/lib/simple-icons/icons/kuaishou.svg
new file mode 100644
index 00000000..d4b4beee
--- /dev/null
+++ b/assets/lib/simple-icons/icons/kuaishou.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Kuaishou</title><path d="M18.315 12.264c2.33 0 4.218 1.88 4.218 4.2V19.8c0 2.32-1.888 4.2-4.218 4.2h-6.202a4.218 4.218 0 0 1-4.023-2.938l-3.676 1.833a2.04 2.04 0 0 1-2.731-.903 2.015 2.015 0 0 1-.216-.907v-5.94a2.03 2.03 0 0 1 2.035-2.024 2.044 2.044 0 0 1 .919.218l3.673 1.85a4.218 4.218 0 0 1 4.02-2.925zm-.062 2.162h-6.078c-1.153 0-2.09.921-2.108 2.065v3.247c0 1.148.925 2.081 2.073 2.1h6.113c1.153 0 2.09-.922 2.109-2.065v-3.247a2.104 2.104 0 0 0-2.074-2.1zM4.18 15.72a.554.554 0 0 0-.555.542v3.734a.556.556 0 0 0 .798.496l.01-.004 3.463-1.756V17.51l-3.467-1.73a.557.557 0 0 0-.249-.06zM9.28 0a5.667 5.667 0 0 1 4.98 2.965 4.921 4.921 0 0 1 3.36-1.317c2.714 0 4.913 2.177 4.913 4.863 0 2.686-2.2 4.863-4.912 4.863a4.921 4.921 0 0 1-3.996-2.034 5.651 5.651 0 0 1-4.345 2.034c-3.131 0-5.67-2.546-5.67-5.687C3.61 2.546 6.149 0 9.28 0Zm8.34 3.926c-1.441 0-2.61 1.157-2.61 2.585s1.169 2.585 2.61 2.585c1.443 0 2.612-1.157 2.612-2.585s-1.169-2.585-2.611-2.585zM9.28 2.287a3.395 3.395 0 0 0-3.39 3.4c0 1.877 1.518 3.4 3.39 3.4a3.395 3.395 0 0 0 3.39-3.4c0-1.878-1.518-3.4-3.39-3.4z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/kubernetes.svg b/assets/lib/simple-icons/icons/kubernetes.svg
index 3e8f13fd..667f2d47 100644
--- a/assets/lib/simple-icons/icons/kubernetes.svg
+++ b/assets/lib/simple-icons/icons/kubernetes.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Kubernetes icon</title><path d="M10.204 14.35l.007.01-.999 2.413a5.171 5.171 0 0 1-2.075-2.597l2.578-.437.004.005a.44.44 0 0 1 .484.606zm-.833-2.129a.44.44 0 0 0 .173-.756l.002-.011L7.585 9.7a5.143 5.143 0 0 0-.73 3.255l2.514-.725.002-.009zm1.145-1.98a.44.44 0 0 0 .699-.337l.01-.005.15-2.62a5.144 5.144 0 0 0-3.01 1.442l2.147 1.523.004-.002zm.76 2.75l.723.349.722-.347.18-.78-.5-.623h-.804l-.5.623.179.779zm1.5-3.095a.44.44 0 0 0 .7.336l.008.003 2.134-1.513a5.188 5.188 0 0 0-2.992-1.442l.148 2.615.002.001zm10.876 5.97l-5.773 7.181a1.6 1.6 0 0 1-1.248.594l-9.261.003a1.6 1.6 0 0 1-1.247-.596l-5.776-7.18a1.583 1.583 0 0 1-.307-1.34L2.1 5.573c.108-.47.425-.864.863-1.073L11.305.513a1.606 1.606 0 0 1 1.385 0l8.345 3.985c.438.209.755.604.863 1.073l2.062 8.955c.108.47-.005.963-.308 1.34zm-3.289-2.057c-.042-.01-.103-.026-.145-.034-.174-.033-.315-.025-.479-.038-.35-.037-.638-.067-.895-.148-.105-.04-.18-.165-.216-.216l-.201-.059a6.45 6.45 0 0 0-.105-2.332 6.465 6.465 0 0 0-.936-2.163c.052-.047.15-.133.177-.159.008-.09.001-.183.094-.282.197-.185.444-.338.743-.522.142-.084.273-.137.415-.242.032-.024.076-.062.11-.089.24-.191.295-.52.123-.736-.172-.216-.506-.236-.745-.045-.034.027-.08.062-.111.088-.134.116-.217.23-.33.35-.246.25-.45.458-.673.609-.097.056-.239.037-.303.033l-.19.135a6.545 6.545 0 0 0-4.146-2.003l-.012-.223c-.065-.062-.143-.115-.163-.25-.022-.268.015-.557.057-.905.023-.163.061-.298.068-.475.001-.04-.001-.099-.001-.142 0-.306-.224-.555-.5-.555-.275 0-.499.249-.499.555l.001.014c0 .041-.002.092 0 .128.006.177.044.312.067.475.042.348.078.637.056.906a.545.545 0 0 1-.162.258l-.012.211a6.424 6.424 0 0 0-4.166 2.003 8.373 8.373 0 0 1-.18-.128c-.09.012-.18.04-.297-.029-.223-.15-.427-.358-.673-.608-.113-.12-.195-.234-.329-.349-.03-.026-.077-.062-.111-.088a.594.594 0 0 0-.348-.132.481.481 0 0 0-.398.176c-.172.216-.117.546.123.737l.007.005.104.083c.142.105.272.159.414.242.299.185.546.338.743.522.076.082.09.226.1.288l.16.143a6.462 6.462 0 0 0-1.02 4.506l-.208.06c-.055.072-.133.184-.215.217-.257.081-.546.11-.895.147-.164.014-.305.006-.48.039-.037.007-.09.02-.133.03l-.004.002-.007.002c-.295.071-.484.342-.423.608.061.267.349.429.645.365l.007-.001.01-.003.129-.029c.17-.046.294-.113.448-.172.33-.118.604-.217.87-.256.112-.009.23.069.288.101l.217-.037a6.5 6.5 0 0 0 2.88 3.596l-.09.218c.033.084.069.199.044.282-.097.252-.263.517-.452.813-.091.136-.185.242-.268.399-.02.037-.045.095-.064.134-.128.275-.034.591.213.71.248.12.556-.007.69-.282v-.002c.02-.039.046-.09.062-.127.07-.162.094-.301.144-.458.132-.332.205-.68.387-.897.05-.06.13-.082.215-.105l.113-.205a6.453 6.453 0 0 0 4.609.012l.106.192c.086.028.18.042.256.155.136.232.229.507.342.84.05.156.074.295.145.457.016.037.043.09.062.129.133.276.442.402.69.282.247-.118.341-.435.213-.71-.02-.039-.045-.096-.065-.134-.083-.156-.177-.261-.268-.398-.19-.296-.346-.541-.443-.793-.04-.13.007-.21.038-.294-.018-.022-.059-.144-.083-.202a6.499 6.499 0 0 0 2.88-3.622c.064.01.176.03.213.038.075-.05.144-.114.28-.104.266.039.54.138.87.256.154.06.277.128.448.173.036.01.088.019.13.028l.009.003.007.001c.297.064.584-.098.645-.365.06-.266-.128-.537-.423-.608zM16.4 9.701l-1.95 1.746v.005a.44.44 0 0 0 .173.757l.003.01 2.526.728a5.199 5.199 0 0 0-.108-1.674A5.208 5.208 0 0 0 16.4 9.7zm-4.013 5.325a.437.437 0 0 0-.404-.232.44.44 0 0 0-.372.233h-.002l-1.268 2.292a5.164 5.164 0 0 0 3.326.003l-1.27-2.296h-.01zm1.888-1.293a.44.44 0 0 0-.27.036.44.44 0 0 0-.214.572l-.003.004 1.01 2.438a5.15 5.15 0 0 0 2.081-2.615l-2.6-.44-.004.005z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Kubernetes</title><path d="M10.204 14.35l.007.01-.999 2.413a5.171 5.171 0 0 1-2.075-2.597l2.578-.437.004.005a.44.44 0 0 1 .484.606zm-.833-2.129a.44.44 0 0 0 .173-.756l.002-.011L7.585 9.7a5.143 5.143 0 0 0-.73 3.255l2.514-.725.002-.009zm1.145-1.98a.44.44 0 0 0 .699-.337l.01-.005.15-2.62a5.144 5.144 0 0 0-3.01 1.442l2.147 1.523.004-.002zm.76 2.75l.723.349.722-.347.18-.78-.5-.623h-.804l-.5.623.179.779zm1.5-3.095a.44.44 0 0 0 .7.336l.008.003 2.134-1.513a5.188 5.188 0 0 0-2.992-1.442l.148 2.615.002.001zm10.876 5.97l-5.773 7.181a1.6 1.6 0 0 1-1.248.594l-9.261.003a1.6 1.6 0 0 1-1.247-.596l-5.776-7.18a1.583 1.583 0 0 1-.307-1.34L2.1 5.573c.108-.47.425-.864.863-1.073L11.305.513a1.606 1.606 0 0 1 1.385 0l8.345 3.985c.438.209.755.604.863 1.073l2.062 8.955c.108.47-.005.963-.308 1.34zm-3.289-2.057c-.042-.01-.103-.026-.145-.034-.174-.033-.315-.025-.479-.038-.35-.037-.638-.067-.895-.148-.105-.04-.18-.165-.216-.216l-.201-.059a6.45 6.45 0 0 0-.105-2.332 6.465 6.465 0 0 0-.936-2.163c.052-.047.15-.133.177-.159.008-.09.001-.183.094-.282.197-.185.444-.338.743-.522.142-.084.273-.137.415-.242.032-.024.076-.062.11-.089.24-.191.295-.52.123-.736-.172-.216-.506-.236-.745-.045-.034.027-.08.062-.111.088-.134.116-.217.23-.33.35-.246.25-.45.458-.673.609-.097.056-.239.037-.303.033l-.19.135a6.545 6.545 0 0 0-4.146-2.003l-.012-.223c-.065-.062-.143-.115-.163-.25-.022-.268.015-.557.057-.905.023-.163.061-.298.068-.475.001-.04-.001-.099-.001-.142 0-.306-.224-.555-.5-.555-.275 0-.499.249-.499.555l.001.014c0 .041-.002.092 0 .128.006.177.044.312.067.475.042.348.078.637.056.906a.545.545 0 0 1-.162.258l-.012.211a6.424 6.424 0 0 0-4.166 2.003 8.373 8.373 0 0 1-.18-.128c-.09.012-.18.04-.297-.029-.223-.15-.427-.358-.673-.608-.113-.12-.195-.234-.329-.349-.03-.026-.077-.062-.111-.088a.594.594 0 0 0-.348-.132.481.481 0 0 0-.398.176c-.172.216-.117.546.123.737l.007.005.104.083c.142.105.272.159.414.242.299.185.546.338.743.522.076.082.09.226.1.288l.16.143a6.462 6.462 0 0 0-1.02 4.506l-.208.06c-.055.072-.133.184-.215.217-.257.081-.546.11-.895.147-.164.014-.305.006-.48.039-.037.007-.09.02-.133.03l-.004.002-.007.002c-.295.071-.484.342-.423.608.061.267.349.429.645.365l.007-.001.01-.003.129-.029c.17-.046.294-.113.448-.172.33-.118.604-.217.87-.256.112-.009.23.069.288.101l.217-.037a6.5 6.5 0 0 0 2.88 3.596l-.09.218c.033.084.069.199.044.282-.097.252-.263.517-.452.813-.091.136-.185.242-.268.399-.02.037-.045.095-.064.134-.128.275-.034.591.213.71.248.12.556-.007.69-.282v-.002c.02-.039.046-.09.062-.127.07-.162.094-.301.144-.458.132-.332.205-.68.387-.897.05-.06.13-.082.215-.105l.113-.205a6.453 6.453 0 0 0 4.609.012l.106.192c.086.028.18.042.256.155.136.232.229.507.342.84.05.156.074.295.145.457.016.037.043.09.062.129.133.276.442.402.69.282.247-.118.341-.435.213-.71-.02-.039-.045-.096-.065-.134-.083-.156-.177-.261-.268-.398-.19-.296-.346-.541-.443-.793-.04-.13.007-.21.038-.294-.018-.022-.059-.144-.083-.202a6.499 6.499 0 0 0 2.88-3.622c.064.01.176.03.213.038.075-.05.144-.114.28-.104.266.039.54.138.87.256.154.06.277.128.448.173.036.01.088.019.13.028l.009.003.007.001c.297.064.584-.098.645-.365.06-.266-.128-.537-.423-.608zM16.4 9.701l-1.95 1.746v.005a.44.44 0 0 0 .173.757l.003.01 2.526.728a5.199 5.199 0 0 0-.108-1.674A5.208 5.208 0 0 0 16.4 9.7zm-4.013 5.325a.437.437 0 0 0-.404-.232.44.44 0 0 0-.372.233h-.002l-1.268 2.292a5.164 5.164 0 0 0 3.326.003l-1.27-2.296h-.01zm1.888-1.293a.44.44 0 0 0-.27.036.44.44 0 0 0-.214.572l-.003.004 1.01 2.438a5.15 5.15 0 0 0 2.081-2.615l-2.6-.44-.004.005z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/kubuntu.svg b/assets/lib/simple-icons/icons/kubuntu.svg
new file mode 100644
index 00000000..ddabdfbb
--- /dev/null
+++ b/assets/lib/simple-icons/icons/kubuntu.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Kubuntu</title><path d="M21.257 14.292a.2065.2065 0 01.1097.2374l-.5765 1.5293a.2063.2063 0 01-.2033.155l-2.3369-.2283c-.0628.001-.1623-.008-.2776.1255-.0178.0207-.7472.9328-.9783 1.1832-.079.0708-.1067.1652-.0878.281l.5521 2.1962a.2064.2064 0 01-.098.2314l-1.513.8906a.2063.2063 0 01-.2556-.0418l-1.5494-1.7055c-.0516-.0555-.1551-.0994-.2271-.0759l-1.645.2391c-.0804.011-.1267.0635-.1603.1164l-.9938 2.0793a.2063.2063 0 01-.2353.089l-1.6687-.3945a.2065.2065 0 01-.1462-.1824.209.209 0 01.0105-.0815l.8812-3.244a.222.222 0 01.2828-.1373l.0033-.001a5.8423 5.8423 0 002.7168.2176c2.3222-.3696 4.1964-2.0953 4.756-4.3791l.011-.0407c.0277-.1194.1768-.1827.2963-.155 0 0 2.8684.9737 3.2936 1.0816a.2089.2089 0 01.0394.0143zM5.539 4.9898l.0001.0001a.2051.2051 0 01.0659.0489l2.392 2.3567a.222.222 0 01-.0186.3138l-.0008.0034A5.8422 5.8422 0 006.4594 9.976c-.8132 2.2063-.2244 4.685 1.494 6.29l.0353.0396c.0906.0827.0678.2335-.0148.3241 0 0-2.2452 2.0243-2.5472 2.3425a.2064.2064 0 01-.2924.007l-1.0521-1.2507a.2063.2063 0 01-.0358-.253l1.335-1.9253c.0297-.0553.0863-.1376.0262-.3035-.0092-.0256-.4482-1.108-.5536-1.432-.0232-.1035-.092-.1738-.2022-.214l-2.1789-.594a.2064.2064 0 01-.154-.1986l-.0368-1.7552a.2065.2065 0 01.1615-.2026l2.2384-.516c.0737-.0177.1625-.0866.1772-.1609l.5958-1.5517c.0298-.0755.0068-.1417-.023-.1968L4.111 6.5396a.2064.2064 0 01.0374-.2488l1.1602-1.2626a.2066.2066 0 01.2305-.0385zm10.4906-1.747a.2139.2139 0 01.0313.0147l1.5385.8455a.2065.2065 0 01.0947.2412l-.6793 2.198c-.0214.0727-.0062.1841.0508.234l1.046 1.2918c.0505.0636.1193.0767.182.0785l2.3-.2029a.2064.2064 0 01.1968.1567l.5134 1.6361a.2064.2064 0 01-.082.2189h-.0001a.205.205 0 01-.0753.0326l-3.244.8946a.222.222 0 01-.2624-.1729.012.012 0 01-.0025-.0024 5.8422 5.8422 0 00-1.201-2.4466c-1.5041-1.8073-3.9452-2.5368-6.1943-1.851l-.0402.0123c-.1169.0371-.248-.0597-.285-.1766 0 0-.6236-2.958-.7481-3.3786a.2063.2063 0 01.14-.2568l1.6093-.2858a.2063.2063 0 01.237.0955l.9929 2.1203c.033.0534.076.1436.2498.1744.0268.0048 1.1835.1658 1.5169.2366.1012.0316.1966.0073.2864-.068l1.6107-1.5916a.2064.2064 0 01.2177-.0486zM16.021.6955A11.9968 11.9968 0 007.794.763C1.5889 3.086-1.5582 9.9993.7647 16.2044c2.323 6.205 9.2362 9.3522 15.4413 7.0293 6.2051-2.3229 9.3522-9.2362 7.0293-15.4413A11.997 11.997 0 0016.021.6955z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/kuma.svg b/assets/lib/simple-icons/icons/kuma.svg
new file mode 100644
index 00000000..1f715f0d
--- /dev/null
+++ b/assets/lib/simple-icons/icons/kuma.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Kuma</title><path d="M19.02 0c-1.118 0-1.935.362-2.474.946A.189.189 0 0 1 16.35 1a16.824 16.824 0 0 0-2.634-.623.184.184 0 0 0-.205.158.181.181 0 0 0 .003.07c.186.699 1.305 5.133 2.205 8.51.544 2.043-.866 4.05-2.98 4.044h-1.31c-2.136 0-3.433-2.014-2.94-4.022.83-3.393 1.968-7.792 2.152-8.517a.183.183 0 0 0-.13-.226.177.177 0 0 0-.07-.005 14.358 14.358 0 0 0-3.048.698.188.188 0 0 1-.208-.056C6.646.398 5.806.003 4.643.003c-2.254 0-3.287 1.473-3.287 3.29 0 .952.905 2.24 1.766 3.253a.188.188 0 0 1 .034.18l-1.468 4.259a.034.034 0 0 0 0 .011c-.038.148-.604 2.662 3.699 6.661 1.286 1.2 5.77 5.52 6.576 6.293a.182.182 0 0 0 .251 0l6.774-6.293c4.648-4.334 3.54-6.672 3.54-6.672L20.882 6.27a.183.183 0 0 1 .028-.175c.733-.925 1.4-1.991 1.4-2.808C22.31 1.473 21.274 0 19.02 0Zm-8.025 7.132a.525.525 0 0 0-.527.524l.217 2.157v.003a.525.525 0 0 0 .526.524h1.755a.525.525 0 0 0 .524-.53l.208-2.154a.525.525 0 0 0-.526-.524z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/kyocera.svg b/assets/lib/simple-icons/icons/kyocera.svg
index 77bc7a0d..550db707 100644
--- a/assets/lib/simple-icons/icons/kyocera.svg
+++ b/assets/lib/simple-icons/icons/kyocera.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Kyocera icon</title><path d="M14.323 0L9.677 4.631h7.393V12l4.647-4.631V0zm2.747 12v7.369H9.677L14.323 24h7.394v-7.369zm0 0L9.677 4.631V19.37zm-7.393 7.369L2.283 12v7.369zM2.283 12l7.394-7.369H2.283Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Kyocera</title><path d="M9.677 4.645L2.323 12V4.645h7.354zm-7.354 14.71h7.355L2.323 12v7.355zm7.354 0L17.032 12 9.677 4.645v14.71zM21.677 0h-7.355L9.677 4.645h7.355V12l4.645-4.645V0zm-12 19.355L14.323 24h7.355v-7.355L17.032 12v7.355H9.677z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/labview.svg b/assets/lib/simple-icons/icons/labview.svg
index 3d8bd99a..bacef4ab 100644
--- a/assets/lib/simple-icons/icons/labview.svg
+++ b/assets/lib/simple-icons/icons/labview.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>LabVIEW icon</title><path d="M9.176 4.469a.817.817 0 00-.768.816v7.055a.816.816 0 001.182.73l7.058-3.527a.818.818 0 000-1.463L9.59 4.553a.808.808 0 00-.414-.084zm1.918 3.107h.638v.916h.916v.639h-.916v.918h-.638V9.13h-.918v-.639h.918v-.916zm-4.752 7.51v.367h.262c.086 0 .136.05.136.137v3.869h.41v-.273a2.6 2.6 0 00-.011-.256h.011s.281.603 1.028.603c.82 0 1.41-.646 1.41-1.635 0-.97-.522-1.642-1.361-1.642-.802 0-1.065.598-1.065.598H7.15s.012-.113.012-.256v-1.131c0-.267-.112-.381-.379-.381h-.441zm2.855 0v.387h.063c.118 0 .18.018.224.136l1.436 3.85h.467l1.437-3.85c.044-.118.105-.136.223-.136h.834v3.601h-.41v.385h1.25v-.385h-.418v-3.601h.418v-.387h-1.805c-.31 0-.404.056-.516.361l-1.076 2.942c-.08.223-.168.566-.168.566h-.011s-.088-.343-.168-.566L9.9 15.447c-.105-.298-.199-.361-.51-.361h-.193zm5.922 0v.387h.404v3.607c0 .268.112.379.38.379h1.89c.268 0 .379-.111.379-.379v-.435h-.404v.29c0 .094-.05.14-.137.14h-1.535c-.087 0-.137-.046-.137-.14v-1.484h1.64v-.387h-1.64v-1.591h1.492c.087 0 .137.043.137.136v.293h.41v-.435c0-.268-.112-.381-.379-.381h-2.5zM0 15.088v.385h.268c.086 0 .136.043.136.136v3.471c0 .268.112.379.38.379h1.81c.267 0 .379-.111.379-.379v-.435h-.41v.29c0 .094-.05.137-.137.137H.976c-.086 0-.136-.043-.136-.136v-3.47c0-.267-.112-.378-.38-.378H0zm18.334 0v.385h.076c.118 0 .197.018.229.136l1.002 3.85h.515l.897-3.047c.08-.28.156-.64.156-.64h.012s.067.366.142.646l.815 3.041h.515l1.008-3.85c.031-.118.106-.136.23-.136H24v-.385h-.193c-.311 0-.453.055-.528.36l-.76 3.015c-.055.224-.1.467-.1.467h-.01s-.039-.243-.1-.467l-.877-3.358h-.43l-.963 3.358c-.062.224-.12.467-.12.467h-.01s-.039-.243-.095-.467l-.757-3.016c-.075-.304-.219-.36-.53-.36h-.193zM4.637 16.256c-.274 0-1.02.094-1.02.53v.298h.404v-.2c0-.23.454-.273.61-.273.572 0 .808.23.808.883v.037h-.173c-.542 0-1.916.038-1.916 1.076 0 .622.54.926 1.062.926.784 0 1.046-.678 1.04-.678h.01s-.005.094-.005.23c0 .256.106.374.373.374h.43v-.367h-.262c-.087 0-.137-.044-.137-.137v-1.498c0-.672-.236-1.201-1.224-1.201zm3.527.387c.578 0 .988.49.988 1.255 0 .796-.452 1.262-1.006 1.262-.671 0-.996-.628-.996-1.256 0-.889.492-1.261 1.014-1.261zm-2.906 1.224h.181v.143c0 .54-.362 1.162-.959 1.162-.466 0-.695-.298-.695-.59 0-.703.982-.715 1.473-.715Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>LabVIEW</title><path d="M9.176 4.469a.817.817 0 00-.768.816v7.055a.816.816 0 001.182.73l7.058-3.527a.818.818 0 000-1.463L9.59 4.553a.808.808 0 00-.414-.084zm1.918 3.107h.638v.916h.916v.639h-.916v.918h-.638V9.13h-.918v-.639h.918v-.916zm-4.752 7.51v.367h.262c.086 0 .136.05.136.137v3.869h.41v-.273a2.6 2.6 0 00-.011-.256h.011s.281.603 1.028.603c.82 0 1.41-.646 1.41-1.635 0-.97-.522-1.642-1.361-1.642-.802 0-1.065.598-1.065.598H7.15s.012-.113.012-.256v-1.131c0-.267-.112-.381-.379-.381h-.441zm2.855 0v.387h.063c.118 0 .18.018.224.136l1.436 3.85h.467l1.437-3.85c.044-.118.105-.136.223-.136h.834v3.601h-.41v.385h1.25v-.385h-.418v-3.601h.418v-.387h-1.805c-.31 0-.404.056-.516.361l-1.076 2.942c-.08.223-.168.566-.168.566h-.011s-.088-.343-.168-.566L9.9 15.447c-.105-.298-.199-.361-.51-.361h-.193zm5.922 0v.387h.404v3.607c0 .268.112.379.38.379h1.89c.268 0 .379-.111.379-.379v-.435h-.404v.29c0 .094-.05.14-.137.14h-1.535c-.087 0-.137-.046-.137-.14v-1.484h1.64v-.387h-1.64v-1.591h1.492c.087 0 .137.043.137.136v.293h.41v-.435c0-.268-.112-.381-.379-.381h-2.5zM0 15.088v.385h.268c.086 0 .136.043.136.136v3.471c0 .268.112.379.38.379h1.81c.267 0 .379-.111.379-.379v-.435h-.41v.29c0 .094-.05.137-.137.137H.976c-.086 0-.136-.043-.136-.136v-3.47c0-.267-.112-.378-.38-.378H0zm18.334 0v.385h.076c.118 0 .197.018.229.136l1.002 3.85h.515l.897-3.047c.08-.28.156-.64.156-.64h.012s.067.366.142.646l.815 3.041h.515l1.008-3.85c.031-.118.106-.136.23-.136H24v-.385h-.193c-.311 0-.453.055-.528.36l-.76 3.015c-.055.224-.1.467-.1.467h-.01s-.039-.243-.1-.467l-.877-3.358h-.43l-.963 3.358c-.062.224-.12.467-.12.467h-.01s-.039-.243-.095-.467l-.757-3.016c-.075-.304-.219-.36-.53-.36h-.193zM4.637 16.256c-.274 0-1.02.094-1.02.53v.298h.404v-.2c0-.23.454-.273.61-.273.572 0 .808.23.808.883v.037h-.173c-.542 0-1.916.038-1.916 1.076 0 .622.54.926 1.062.926.784 0 1.046-.678 1.04-.678h.01s-.005.094-.005.23c0 .256.106.374.373.374h.43v-.367h-.262c-.087 0-.137-.044-.137-.137v-1.498c0-.672-.236-1.201-1.224-1.201zm3.527.387c.578 0 .988.49.988 1.255 0 .796-.452 1.262-1.006 1.262-.671 0-.996-.628-.996-1.256 0-.889.492-1.261 1.014-1.261zm-2.906 1.224h.181v.143c0 .54-.362 1.162-.959 1.162-.466 0-.695-.298-.695-.59 0-.703.982-.715 1.473-.715Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/lada.svg b/assets/lib/simple-icons/icons/lada.svg
new file mode 100644
index 00000000..9cc12298
--- /dev/null
+++ b/assets/lib/simple-icons/icons/lada.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Lada</title><path d="M17.036 15.426h-.007c-.133.032-.243-.046-.212-.107.122-.28.268-.68.294-.784.121-.417.076-.704-.293-1.012-.22-.18-.467-.352-.69-.511-.105-.094-.045-.185-.012-.217.064-.064.144-.117.206-.165.18-.135.291-.117.454-.1.252.034.503.071.754.115.243.05.293-.039.352-.209l.142-.425c.087-.244-.03-.298-.21-.302l-2.393-.093c-.202-.013-.283.048-.357.098-.36.26-.72.518-1.081.777-.187.126-.107.212-.06.298l.202.331c.162.264.1.337-.041.491-.108.11-.226.21-.35.299l-.043.03c-.37.262-.75.38-1.074.435-.776.107-1.505.123-2.148.134a33.809 33.809 0 0 1-4.277-.209.258.258 0 0 0-.268.149l-.22.48a.137.137 0 0 1-.173.07c-2.05-.729-3.343-1.8-3.343-2.993 0-1.649 2.467-3.065 5.987-3.67.072-.014.113.015.13.03.077.065.155.13.23.198.049.042.038.085.027.12l-1.879 4.105-.303.661c-.064.162.075.213.123.213 1.285.066 2.546.043 3.695-.07 1.26-.111 2.052-.383 3.03-.982a16.561 16.561 0 0 0 2.135-1.563c.372-.333.564-.519.805-.821.421-.542.504-1.08.173-1.688-.036-.084.06-.095.096-.09 3.194.657 5.384 2.004 5.384 3.557 0 1.453-1.92 2.725-4.785 3.42M9.135 9.118c.083.082.144.146.222.228.205.233.368.443.356.842-.006.254-.127.562-.298.86-.17.304-.373.589-.602.85-.335.4-.677.574-1.13.689-.082.016-.097-.054-.08-.097l1.412-3.349c.041-.073.102-.039.12-.023zm2.906-.293a2.23 2.23 0 0 0-.502-.794.568.568 0 0 1-.062-.071c-.014-.024-.04-.068-.01-.107.04-.046.091-.025.109-.015.134.064.592.322.838.984.199.534.07 1.064-.431 1.771-.657.926-1.223 1.623-2.526 2.147-.569.23-1.5.315-1.95.315-.156.002-.245-.017-.271-.076a.073.073 0 0 1 .002-.074c.042-.056.105-.047.16-.047.507 0 1.419-.173 1.966-.429 1.15-.539 1.724-1.258 2.213-1.948.33-.463.678-1.07.464-1.656m2.04.17c-.042-.297-.244-.555-.377-.726l-.105-.135c-.034-.04-.072-.085-.03-.13.067-.068.173.013.195.027.22.148.603.482.703 1.052.085.471.008 1.158-1.34 2.291-.073.06-.146.124-.223.192-.564.49-1.265 1.101-2.812 1.61-.536.175-1.551.303-2.414.303-.157 0-.301-.005-.43-.014-.144-.01-.187-.06-.198-.1a.073.073 0 0 1 .011-.064c.02-.026.06-.042.11-.043 1.442-.03 1.94-.12 2.803-.396 1.285-.412 2.22-1.173 2.889-1.79 1.338-1.233 1.26-1.782 1.219-2.077M12 7.02C5.372 7.02 0 9.249 0 12c0 2.75 5.372 4.98 12 4.98S24 14.75 24 12c0-2.75-5.372-4.98-12-4.98"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/lamborghini.svg b/assets/lib/simple-icons/icons/lamborghini.svg
index 3a78f7ed..475ab8b0 100644
--- a/assets/lib/simple-icons/icons/lamborghini.svg
+++ b/assets/lib/simple-icons/icons/lamborghini.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Lamborghini icon</title><path d="M11.865 0a31.57 31.57 0 0 0-3.712.245l-.272.037-.338.046c-.073.009-.18.026-.236.038a3.7 3.7 0 0 1-.206.036 7.728 7.728 0 0 0-.265.043l-.265.048c-.193.034-.763.15-1.051.215-1.064.238-2.245.594-2.73.824-.343.163-.772.506-.93.743a2.157 2.157 0 0 0-.287.777c-.029.158-.032.23-.034.832-.003.728.009 1.223.044 1.865.166 3.019.696 5.54 1.686 8a20.797 20.797 0 0 0 2.635 4.81c1 1.363 2.12 2.572 3.395 3.67.769.66 1.737 1.405 2.076 1.595.386.217.82.234 1.19.047.3-.153 1.382-.974 2.113-1.604a24.361 24.361 0 0 0 3.119-3.27c.51-.645 1.541-2.254 1.977-3.085 1.622-3.09 2.549-6.883 2.651-10.812.03-.642.045-1.224.03-1.529a4.107 4.107 0 0 0-.017-.228l.001-.397-.165-.343a1.683 1.683 0 0 0-.383-.533c-.196-.205-.372-.321-.783-.519-.997-.48-2.338-.858-3.958-1.118a25.346 25.346 0 0 0-1.552-.216l-.404-.048a7.685 7.685 0 0 0-.41-.037 41.827 41.827 0 0 0-1.988-.12 21.41 21.41 0 0 0-.931-.011zm.167.83c3.34-.007 6.128.436 8.399 1.332.84.33.99.433 1.16.792.128.27.13.31.094 1.691-.197 7.59-2.8 13.219-8.113 17.541-.644.525-1.316 1.003-1.484 1.056-.083.026-.235-.033-.483-.187-.492-.305-1.718-1.303-2.54-2.068-1.352-1.255-2.707-2.937-3.63-4.506-1.97-3.344-2.993-7.244-3.114-11.866-.035-1.35-.032-1.392.096-1.662.17-.357.322-.462 1.13-.777C5.777 1.303 8.132.9 11.357.837c.228-.004.453-.007.675-.007zm-.941.708l-.045.003c-.2.024-.448.206-.567.422-.273.495-.22 1.592.096 1.974.123.15.188.176.421.176.155 0 .334-.04.407-.093.073-.052.19-.207.26-.345.184-.36.188-1.265.007-1.668-.116-.257-.333-.443-.538-.466l-.022-.002h-.02zm1.094.06l-.017 1.233a59.48 59.48 0 0 0-.01 1.184.346.346 0 0 0 .02.06c.025.005.089.009.173.009h.182v-.529c0-.506.005-.527.126-.509.1.015.162.126.307.543l.182.524h.44l-.194-.564-.193-.565.158-.151c.193-.186.253-.456.17-.767-.091-.347-.322-.467-.891-.468zm2.376.06c-.505 0-.733.383-.73 1.228 0 .558.084.91.264 1.113.208.233.66.274.945.084.154-.102.252-.416.255-.808 0-.104-.004-.186-.018-.244-.033-.094-.13-.106-.407-.133l-.235-.023c-.041.024-.044.08-.044.204v.04l.001.018c.006.118.035.138.146.138.118 0 .146.03.146.154 0 .355-.28.512-.49.276-.288-.324-.223-1.56.087-1.66.13-.042.345.115.345.251 0 .052.072.08.205.08.234 0 .26-.079.118-.358a.605.605 0 0 0-.588-.36zm-5.199.038a2.322 2.322 0 0 0-.327.014l-.353.038-.016 1.249-.016 1.249.428-.042c.235-.024.49-.074.569-.111.241-.118.378-.366.383-.695.003-.23-.025-.329-.123-.429-.126-.128-.126-.13-.015-.316a.685.685 0 0 0 .024-.697c-.083-.163-.263-.249-.554-.26zm6.287.074v2.51l.205.024.206.025v-.557c0-.617-.019-.594.427-.519l.22.038v.556c0 .48.014.561.103.585.26.069.253.1.236-1.202l-.016-1.243-.161-.019-.162-.019v.968l-.25-.036c-.41-.058-.397-.04-.397-.562 0-.345-.02-.482-.073-.482a1.04 1.04 0 0 1-.206-.037l-.096-.027zm-7.408.032l-.2.024c-.197.023-.204.034-.357.541-.085.285-.19.626-.232.758l-.077.24-.191-.629c-.105-.346-.212-.652-.238-.68-.025-.028-.128-.033-.228-.01l-.182.04V3.31c0 1.165.005 1.223.113 1.223a.64.64 0 0 0 .19-.03c.058-.023.074-.14.06-.437a6.524 6.524 0 0 1 0-.643c.018-.22.036-.188.248.446l.229.685.212-.768.212-.767.009.36a.236.236 0 0 1 .003.14l.005.173c.014.578.03.667.107.637a.672.672 0 0 1 .204-.036c.108 0 .113-.058.113-1.246zm4.292.14l.248.033c.352.049.5.296.325.541-.08.11-.456.2-.53.125-.023-.024-.043-.192-.043-.372zm-1.462.025c.083.004.163.07.227.2.132.268.122 1.21-.016 1.425-.133.207-.305.207-.438 0-.076-.118-.11-.309-.122-.703-.015-.464 0-.571.105-.74.076-.125.161-.185.244-.182zm-2.007.11h.194c.235 0 .335.09.335.304 0 .19-.08.265-.338.315l-.19.037v-.328zm8.497.005a.083.083 0 0 0-.031.023v2.48l.162.025c.089.013.181.029.206.033.024.005.044-.541.044-1.215 0-.673-.02-1.235-.044-1.25a1.238 1.238 0 0 0-.206-.064zM5.582 2.3a.699.699 0 0 0-.137.025c-.18.05-.182.058-.4 1.025-.12.536-.256 1.13-.3 1.322l-.081.348.186-.04a1.36 1.36 0 0 0 .224-.063c.02-.012.055-.17.078-.352.045-.37.041-.364.334-.42l.213-.041.07.302c.07.296.076.301.258.266a.944.944 0 0 0 .21-.057c.03-.025-.528-2.253-.577-2.304-.01-.01-.039-.014-.078-.011zm12.771.018v1.226c0 .942.017 1.228.074 1.229.04 0 .132.017.204.037.128.035.13.026.147-.694l.016-.73.322.817c.176.45.362.842.411.871.234.14.24.106.224-1.18l-.016-1.24-.162-.043-.162-.044v.668c-.002.767-.008.764-.36-.14-.258-.662-.341-.778-.562-.778zm-14.6.539c-.012 0-.105.03-.207.065l-.185.066v.31l.017.988c.008.47.02.845.046 1.182.011.004.024.002.04-.005.057-.023.321-.122.588-.222.456-.169.485-.19.485-.354 0-.095-.009-.174-.02-.174-.011 0-.174.054-.362.12a5.96 5.96 0 0 1-.362.12c-.011 0-.02-.472-.02-1.048 0-.577-.01-1.048-.02-1.048zm16.502 0c-.011 0-.02.562-.02 1.249v1.249l.19.062c.106.035.198.065.206.069.008.003.015-.557.015-1.246V2.987l-.185-.066a1.991 1.991 0 0 0-.206-.065zm-10.948.206c.263.01.427.297.279.568-.063.115-.14.159-.303.173l-.219.018v-.356c0-.311.015-.36.124-.389a.406.406 0 0 1 .119-.014zm-3.852.003l.078.322c.043.18.057.265.041.316a.05.05 0 0 1-.02.037.13.13 0 0 1-.025.02c-.141.091-.238.063-.2-.06.02-.062.056-.23.08-.374zm6.879 1.66c-.555.013-1.034.17-1.306.446-.243.247-.27.51-.068.645.255.169.673.22 2.168.268 1.368.044 1.532.06 1.77.177.292.145.419.333.41.61-.006.23-.157.477-.293.477-.229 0-.989-.194-1.526-.39a5.355 5.355 0 0 0-.661-.205l-.038-.003c-.144.004-.318.121-.818.551-.22.189-.61.454-.867.59-.834.443-1.091.794-1.207 1.649-.063.463-.14.648-.499 1.187-.298.448-.508 1.05-.51 1.457 0 .197-.07.511-.184.839-.15.433-.184.627-.195 1.122-.012.514-.035.64-.163.879-.093.172-.166.43-.192.674-.037.36-.067.426-.33.74-.159.188-.289.375-.289.415 0 .022-.025.07-.063.128-.008.038-.026.065-.049.068a1 1 0 0 1-.066.083c-.224.26-.334.559-.24.654.049.05.089.034.157-.064.129-.188.203-.165.144.044-.034.12-.028.186.019.207.088.039.422-.014.597-.095.092-.043.16-.153.21-.34.04-.153.114-.327.164-.386.055-.066.101-.265.116-.506.022-.352.051-.431.25-.688.13-.166.267-.437.321-.632.053-.188.137-.423.188-.522.377-.74.62-1.168.663-1.168.13 0 .234.284.234.64 0 .28.024.386.094.426.085.048.086.073.009.228a1.978 1.978 0 0 0-.128.35c-.057.24-.245.497-.442.6-.09.048-.286.208-.436.357-.216.214-.273.31-.272.467.001.264.086.402.185.3.118-.12.172-.085.13.085-.038.154-.032.158.158.12.243-.05.463-.193.504-.327.017-.056.054-.142.082-.191.029-.05.137-.274.242-.5.13-.28.273-.478.453-.628.144-.12.3-.313.348-.428.139-.338.543-.628.543-.388 0 .14-.228.564-.394.733-.209.213-.37.499-.37.657 0 .139.082.18.147.075.064-.106.137-.064.105.06a.334.334 0 0 0-.007.035c.01.03.025.055.045.075.025.007.06.01.112.01.302 0 .587-.174.63-.385a1.5 1.5 0 0 1 .152-.375c.074-.124.1-.242.076-.341-.04-.161.068-.577.15-.577.06 0 .274.447.328.69a.823.823 0 0 0 .156.308c.108.121.155.128.683.098.547-.031.573-.04.715-.217.106-.134.156-.285.18-.547.042-.462.242-.776.7-1.104l.342-.244.084.134c.047.073.147.289.223.479.128.316.133.368.065.64-.041.164-.057.354-.036.423.022.07-.007.256-.065.42l-.045.128-.009.056a.61.61 0 0 0-.014.152l.103.11c.157.172.266.193.316.062.044-.12.155-.116.155.005 0 .127.115.08.248-.1.102-.14.103-.165.016-.416-.052-.148-.081-.315-.067-.371.014-.057 0-.219-.032-.36a2.63 2.63 0 0 1 .011-1.095c.057-.278.05-.339-.083-.63-.081-.177-.136-.334-.123-.347.014-.014.125.015.248.064.57.228 1.015.176 1.286-.15l.138-.167a.154.154 0 0 0 .004-.028l-.329-.03a6.802 6.802 0 0 1-.225-.025c-.199-.033-.286-.105-.604-.389-.294-.262-.304-.282-.273-.516.019-.139-.01-.442-.067-.701-.092-.422-.092-.483-.006-.784.051-.18.093-.407.093-.503 0-.29-.158-.736-.345-.973a1.535 1.535 0 0 1-.238-.462 1.843 1.843 0 0 0-.208-.458c-.136-.204-.14-.229-.059-.425a1.74 1.74 0 0 0 .086-.538c0-.287-.025-.359-.191-.551-.36-.418-.53-.457-2.25-.508-1.985-.06-2.297-.136-1.989-.483.126-.142.332-.138.76.014.469.166 1.042.207 1.377.099.288-.093.293-.088-.206-.194-.08-.017-.147-.06-.147-.097 0-.013.008-.022.021-.029.009-.018.051-.022.13-.013.036.002.078.006.128.013.769.104.897.112.897.053 0-.097-.516-.297-1.055-.408a3.533 3.533 0 0 0-.79-.074zm.213.491a.86.86 0 0 1 .232.054l.254.092-.182.003-.024.001-.031-.002a.627.627 0 0 1-.262-.05c-.103-.067-.08-.103.013-.098Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Lamborghini</title><path d="M11.865 0a31.57 31.57 0 0 0-3.712.245l-.272.037-.338.046c-.073.009-.18.026-.236.038a3.7 3.7 0 0 1-.206.036 7.728 7.728 0 0 0-.265.043l-.265.048c-.193.034-.763.15-1.051.215-1.064.238-2.245.594-2.73.824-.343.163-.772.506-.93.743a2.157 2.157 0 0 0-.287.777c-.029.158-.032.23-.034.832-.003.728.009 1.223.044 1.865.166 3.019.696 5.54 1.686 8a20.797 20.797 0 0 0 2.635 4.81c1 1.363 2.12 2.572 3.395 3.67.769.66 1.737 1.405 2.076 1.595.386.217.82.234 1.19.047.3-.153 1.382-.974 2.113-1.604a24.361 24.361 0 0 0 3.119-3.27c.51-.645 1.541-2.254 1.977-3.085 1.622-3.09 2.549-6.883 2.651-10.812.03-.642.045-1.224.03-1.529a4.107 4.107 0 0 0-.017-.228l.001-.397-.165-.343a1.683 1.683 0 0 0-.383-.533c-.196-.205-.372-.321-.783-.519-.997-.48-2.338-.858-3.958-1.118a25.346 25.346 0 0 0-1.552-.216l-.404-.048a7.685 7.685 0 0 0-.41-.037 41.827 41.827 0 0 0-1.988-.12 21.41 21.41 0 0 0-.931-.011zm.167.83c3.34-.007 6.128.436 8.399 1.332.84.33.99.433 1.16.792.128.27.13.31.094 1.691-.197 7.59-2.8 13.219-8.113 17.541-.644.525-1.316 1.003-1.484 1.056-.083.026-.235-.033-.483-.187-.492-.305-1.718-1.303-2.54-2.068-1.352-1.255-2.707-2.937-3.63-4.506-1.97-3.344-2.993-7.244-3.114-11.866-.035-1.35-.032-1.392.096-1.662.17-.357.322-.462 1.13-.777C5.777 1.303 8.132.9 11.357.837c.228-.004.453-.007.675-.007zm-.941.708l-.045.003c-.2.024-.448.206-.567.422-.273.495-.22 1.592.096 1.974.123.15.188.176.421.176.155 0 .334-.04.407-.093.073-.052.19-.207.26-.345.184-.36.188-1.265.007-1.668-.116-.257-.333-.443-.538-.466l-.022-.002h-.02zm1.094.06l-.017 1.233a59.48 59.48 0 0 0-.01 1.184.346.346 0 0 0 .02.06c.025.005.089.009.173.009h.182v-.529c0-.506.005-.527.126-.509.1.015.162.126.307.543l.182.524h.44l-.194-.564-.193-.565.158-.151c.193-.186.253-.456.17-.767-.091-.347-.322-.467-.891-.468zm2.376.06c-.505 0-.733.383-.73 1.228 0 .558.084.91.264 1.113.208.233.66.274.945.084.154-.102.252-.416.255-.808 0-.104-.004-.186-.018-.244-.033-.094-.13-.106-.407-.133l-.235-.023c-.041.024-.044.08-.044.204v.04l.001.018c.006.118.035.138.146.138.118 0 .146.03.146.154 0 .355-.28.512-.49.276-.288-.324-.223-1.56.087-1.66.13-.042.345.115.345.251 0 .052.072.08.205.08.234 0 .26-.079.118-.358a.605.605 0 0 0-.588-.36zm-5.199.038a2.322 2.322 0 0 0-.327.014l-.353.038-.032 2.498.428-.042c.235-.024.49-.074.569-.111.241-.118.378-.366.383-.695.003-.23-.025-.329-.123-.429-.126-.128-.126-.13-.015-.316a.685.685 0 0 0 .024-.697c-.083-.163-.263-.249-.554-.26zm6.287.074v2.51l.205.024.206.025v-.557c0-.617-.019-.594.427-.519l.22.038v.556c0 .48.014.561.103.585.26.069.253.1.236-1.202l-.016-1.243-.161-.019-.162-.019v.968l-.25-.036c-.41-.058-.397-.04-.397-.562 0-.345-.02-.482-.073-.482a1.04 1.04 0 0 1-.206-.037l-.096-.027zm-7.408.032l-.2.024c-.197.023-.204.034-.357.541-.085.285-.19.626-.232.758l-.077.24-.191-.629c-.105-.346-.212-.652-.238-.68-.025-.028-.128-.033-.228-.01l-.182.04V3.31c0 1.165.005 1.223.113 1.223a.64.64 0 0 0 .19-.03c.058-.023.074-.14.06-.437a6.524 6.524 0 0 1 0-.643c.018-.22.036-.188.248.446l.229.685.212-.768.212-.767.009.36a.236.236 0 0 1 .003.14l.005.173c.014.578.03.667.107.637a.672.672 0 0 1 .204-.036c.108 0 .113-.058.113-1.246zm4.292.14l.248.033c.352.049.5.296.325.541-.08.11-.456.2-.53.125-.023-.024-.043-.192-.043-.372zm-1.462.025c.083.004.163.07.227.2.132.268.122 1.21-.016 1.425-.133.207-.305.207-.438 0-.076-.118-.11-.309-.122-.703-.015-.464 0-.571.105-.74.076-.125.161-.185.244-.182zm-2.007.11h.194c.235 0 .335.09.335.304 0 .19-.08.265-.338.315l-.19.037v-.328zm8.497.005a.083.083 0 0 0-.031.023v2.48l.162.025c.089.013.181.029.206.033.024.005.044-.541.044-1.215 0-.673-.02-1.235-.044-1.25a1.238 1.238 0 0 0-.206-.064zM5.582 2.3a.699.699 0 0 0-.137.025c-.18.05-.182.058-.4 1.025-.12.536-.256 1.13-.3 1.322l-.081.348.186-.04a1.36 1.36 0 0 0 .224-.063c.02-.012.055-.17.078-.352.045-.37.041-.364.334-.42l.213-.041.07.302c.07.296.076.301.258.266a.944.944 0 0 0 .21-.057c.03-.025-.528-2.253-.577-2.304-.01-.01-.039-.014-.078-.011zm12.771.018v1.226c0 .942.017 1.228.074 1.229.04 0 .132.017.204.037.128.035.13.026.147-.694l.016-.73.322.817c.176.45.362.842.411.871.234.14.24.106.224-1.18l-.016-1.24-.162-.043-.162-.044v.668c-.002.767-.008.764-.36-.14-.258-.662-.341-.778-.562-.778zm-14.6.539c-.012 0-.105.03-.207.065l-.185.066v.31l.017.988c.008.47.02.845.046 1.182.011.004.024.002.04-.005.057-.023.321-.122.588-.222.456-.169.485-.19.485-.354 0-.095-.009-.174-.02-.174-.011 0-.174.054-.362.12a5.96 5.96 0 0 1-.362.12c-.011 0-.02-.472-.02-1.048 0-.577-.01-1.048-.02-1.048zm16.502 0c-.011 0-.02.562-.02 1.249v1.249l.19.062c.106.035.198.065.206.069.008.003.015-.557.015-1.246V2.987l-.185-.066a1.991 1.991 0 0 0-.206-.065zm-10.948.206c.263.01.427.297.279.568-.063.115-.14.159-.303.173l-.219.018v-.356c0-.311.015-.36.124-.389a.406.406 0 0 1 .119-.014zm-3.852.003l.078.322c.043.18.057.265.041.316a.05.05 0 0 1-.02.037.13.13 0 0 1-.025.02c-.141.091-.238.063-.2-.06.02-.062.056-.23.08-.374zm6.879 1.66c-.555.013-1.034.17-1.306.446-.243.247-.27.51-.068.645.255.169.673.22 2.168.268 1.368.044 1.532.06 1.77.177.292.145.419.333.41.61-.006.23-.157.477-.293.477-.229 0-.989-.194-1.526-.39a5.355 5.355 0 0 0-.661-.205l-.038-.003c-.144.004-.318.121-.818.551-.22.189-.61.454-.867.59-.834.443-1.091.794-1.207 1.649-.063.463-.14.648-.499 1.187-.298.448-.508 1.05-.51 1.457 0 .197-.07.511-.184.839-.15.433-.184.627-.195 1.122-.012.514-.035.64-.163.879-.093.172-.166.43-.192.674-.037.36-.067.426-.33.74-.159.188-.289.375-.289.415 0 .022-.025.07-.063.128-.008.038-.026.065-.049.068a1 1 0 0 1-.066.083c-.224.26-.334.559-.24.654.049.05.089.034.157-.064.129-.188.203-.165.144.044-.034.12-.028.186.019.207.088.039.422-.014.597-.095.092-.043.16-.153.21-.34.04-.153.114-.327.164-.386.055-.066.101-.265.116-.506.022-.352.051-.431.25-.688.13-.166.267-.437.321-.632.053-.188.137-.423.188-.522.377-.74.62-1.168.663-1.168.13 0 .234.284.234.64 0 .28.024.386.094.426.085.048.086.073.009.228a1.978 1.978 0 0 0-.128.35c-.057.24-.245.497-.442.6-.09.048-.286.208-.436.357-.216.214-.273.31-.272.467.001.264.086.402.185.3.118-.12.172-.085.13.085-.038.154-.032.158.158.12.243-.05.463-.193.504-.327.017-.056.054-.142.082-.191.029-.05.137-.274.242-.5.13-.28.273-.478.453-.628.144-.12.3-.313.348-.428.139-.338.543-.628.543-.388 0 .14-.228.564-.394.733-.209.213-.37.499-.37.657 0 .139.082.18.147.075.064-.106.137-.064.105.06a.334.334 0 0 0-.007.035c.01.03.025.055.045.075.025.007.06.01.112.01.302 0 .587-.174.63-.385a1.5 1.5 0 0 1 .152-.375c.074-.124.1-.242.076-.341-.04-.161.068-.577.15-.577.06 0 .274.447.328.69a.823.823 0 0 0 .156.308c.108.121.155.128.683.098.547-.031.573-.04.715-.217.106-.134.156-.285.18-.547.042-.462.242-.776.7-1.104l.342-.244.084.134c.047.073.147.289.223.479.128.316.133.368.065.64-.041.164-.057.354-.036.423.022.07-.007.256-.065.42l-.045.128-.009.056a.61.61 0 0 0-.014.152l.103.11c.157.172.266.193.316.062.044-.12.155-.116.155.005 0 .127.115.08.248-.1.102-.14.103-.165.016-.416-.052-.148-.081-.315-.067-.371.014-.057 0-.219-.032-.36a2.63 2.63 0 0 1 .011-1.095c.057-.278.05-.339-.083-.63-.081-.177-.136-.334-.123-.347.014-.014.125.015.248.064.57.228 1.015.176 1.286-.15l.138-.167a.154.154 0 0 0 .004-.028l-.329-.03a6.802 6.802 0 0 1-.225-.025c-.199-.033-.286-.105-.604-.389-.294-.262-.304-.282-.273-.516.019-.139-.01-.442-.067-.701-.092-.422-.092-.483-.006-.784.051-.18.093-.407.093-.503 0-.29-.158-.736-.345-.973a1.535 1.535 0 0 1-.238-.462 1.843 1.843 0 0 0-.208-.458c-.136-.204-.14-.229-.059-.425a1.74 1.74 0 0 0 .086-.538c0-.287-.025-.359-.191-.551-.36-.418-.53-.457-2.25-.508-1.985-.06-2.297-.136-1.989-.483.126-.142.332-.138.76.014.469.166 1.042.207 1.377.099.288-.093.293-.088-.206-.194-.08-.017-.147-.06-.147-.097 0-.013.008-.022.021-.029.009-.018.051-.022.13-.013.036.002.078.006.128.013.769.104.897.112.897.053 0-.097-.516-.297-1.055-.408a3.533 3.533 0 0 0-.79-.074zm.213.491a.86.86 0 0 1 .232.054l.254.092-.182.003-.024.001-.031-.002a.627.627 0 0 1-.262-.05c-.103-.067-.08-.103.013-.098Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/landrover.svg b/assets/lib/simple-icons/icons/landrover.svg
new file mode 100644
index 00000000..4c50b1fd
--- /dev/null
+++ b/assets/lib/simple-icons/icons/landrover.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Land Rover</title><path d="M10.182 11.491h.717l.625-1.85.365 1.85h.718l.978-2.858-.75.001-.522 1.554-.299-1.554h-1.01l-.025.074.05.048c.053.053.05.114.005.246l-.852 2.489zm3.749-2.489l-.853 2.49h1.259c.54 0 .847-.12 1.098-.387.313-.332.6-1.195.59-1.67-.009-.485-.322-.8-.98-.8H13.9l-.024.073.05.048c.052.053.05.114.004.246m.685.31h.313c.213 0 .33.071.333.236.002.106-.027.252-.137.565-.098.28-.176.443-.287.562-.088.094-.207.135-.478.135h-.261l.517-1.498zm4.066.347H16.78l-.247.68h1.318l-1.497.509-.093.243 2.157-.71.264-.722zM5.043 11.492h1.95l.236-.682H6.095l.75-2.176h-.979l-.024.074.049.048c.053.053.051.114.005.246l-.853 2.49zm2.153-.001h.83l.359-.632h.859l.008.632h.753l-.162-2.857H8.716l-.025.074.036.036c.06.058.035.142-.184.49l-1.347 2.257zm1.996-2.067h.026l.014.864h-.527l.487-.864zM8.01 12.11H6.776l-.025.074.05.05c.053.051.05.113.004.245l-.862 2.49h.788l.337-.989h.267l.296.988h.792l-.372-1.01a.76.76 0 0 0 .433-.194c.149-.136.252-.326.337-.607.124-.407.049-.64-.031-.76-.11-.164-.342-.287-.78-.287m.068 1.038c-.05.122-.104.151-.175.18a.845.845 0 0 1-.245.026H7.28l.205-.591h.455c.136 0 .192.07.194.152a.759.759 0 0 1-.057.233m10.436-1.038H17.28l-.024.074.05.05c.053.051.05.113.005.245l-.863 2.49h.789l.336-.988h.267l.297.987h.79l-.37-1.01a.758.758 0 0 0 .431-.194c.15-.136.253-.326.338-.607.124-.407.05-.64-.03-.76-.11-.164-.343-.287-.782-.287m.069 1.038c-.05.122-.104.151-.174.18a.849.849 0 0 1-.245.026h-.376l.203-.591h.455c.136 0 .192.07.193.152a.747.747 0 0 1-.056.233m1.367-4.742c-2.365-1.222-5.31-1.69-7.95-1.69s-5.585.468-7.95 1.69C2.72 9.093 1.035 10.331 1.035 12c0 1.669 1.686 2.907 3.015 3.594 2.365 1.222 5.31 1.69 7.95 1.69 2.64 0 5.585-.467 7.95-1.69 1.329-.687 3.015-1.925 3.015-3.594 0-1.67-1.685-2.907-3.015-3.594m-.12 6.954c-2.33 1.203-5.227 1.66-7.83 1.66-2.603 0-5.5-.457-7.83-1.66C2.939 14.721 1.3 13.546 1.3 12c0-1.548 1.638-2.722 2.87-3.359C6.5 7.438 9.398 6.981 12 6.981c2.603 0 5.5.456 7.83 1.66 1.233.637 2.87 1.81 2.87 3.36 0 1.547-1.638 2.721-2.87 3.359m.595-7.873C18.171 6.322 15.18 5.681 12 5.681c-3.179 0-6.17.641-8.425 1.806C2.24 8.177 0 9.681 0 12s2.24 3.823 3.575 4.513C5.829 17.678 8.821 18.32 12 18.32c3.18 0 6.171-.641 8.425-1.806C21.76 15.823 24 14.32 24 12c0-2.32-2.24-3.823-3.575-4.513m-.293 8.46C17.967 17.064 15.08 17.68 12 17.68s-5.966-.616-8.132-1.735C1.786 14.87.638 13.468.638 12c0-1.469 1.148-2.87 3.23-3.946C6.034 6.936 8.921 6.32 12 6.32c3.08 0 5.967.617 8.132 1.735 2.083 1.075 3.23 2.477 3.23 3.946 0 1.468-1.147 2.87-3.23 3.946m-9.41-3.87h-.091c-.539 0-.846.144-1.099.412-.314.333-.609 1.23-.603 1.706.006.484.32.82.978.82h.096c.54 0 .848-.145 1.1-.413.314-.333.603-1.23.597-1.706-.006-.484-.32-.82-.979-.82m.046 1.515c-.098.281-.175.462-.288.581-.09.094-.207.161-.48.161-.212 0-.33-.087-.33-.251-.002-.107.027-.268.141-.582.098-.28.175-.462.289-.581.088-.094.207-.161.478-.161.213 0 .331.087.33.25.003.108-.026.27-.14.583M6.035 12.48l-2.157.709-.263.723h1.902l.248-.681H4.446l1.497-.507.092-.244zm7.846-.369l-1.046 2.055h-.022l-.053-2.055h-.875l-.034.074.075.046c.073.051.093.103.102.246l.119 2.492h.975l1.573-2.858h-.814zm2.396 1.712l.219-.597H15.49l.156-.457h1.088l.24-.66H14.92l-.029.084.05.049c.053.051.05.112.004.246l-.855 2.48h1.92l.232-.663h-1.12l.164-.482h.991z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/laragon.svg b/assets/lib/simple-icons/icons/laragon.svg
new file mode 100644
index 00000000..36f87aad
--- /dev/null
+++ b/assets/lib/simple-icons/icons/laragon.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Laragon</title><path d="M12.843.979c-2.12-.096-3.477 1.439-3.477 1.439C2.52 2.5.791 8.429.75 8.552l-.248.74c-2.268 8.78 3.889 12.22 3.889 12.22.188.091.375-.066.375-.066.5-.31.252-.53.252-.53-1.43-1.742-1.595-5.864-1.596-5.899-.64-.532-1.248-1.318-1.111-2.342 0 0 .084-.51.584-.197 0 0 1.186.644 2.123.83-.001 0 .476.043.5.177 0 0 .374 1.752-.78 2.32.745.437 1.465.85 1.465.85.124 1.263.81 5.32.81 5.32.064.797.906.954.906.954.483.172 4.12.062 4.12.062 1.014-.044 1.062-.953 1.062-.953.015-.545.03-3.62.03-3.62.096-.575.766-.5.766-.5.703-.03.688.454.688.454-.017.515.045 3.496.045 3.496.03.858.781 1.125.781 1.125.488 0 .828-.004 1.365 0 .252.002 1.473 0 1.473 0 .55-.307 1.377-.969 1.377-.969 5.868-4.91 4.135-11.9 4.135-11.9C22.93 5.88 17.792 5.1 17.792 5.1c-.582-1.811-1.643-2.682-1.643-2.682-1.222-1.015-2.343-1.396-3.306-1.44zm5.006 4.273s1.845 3.08-1.727 7.86c.001.001-2.94 4.116-8.232 1.223 1.084.523 5.536 2.312 8.375-1.98 0 0 2.632-3.437 1.584-7.103zM6.703 8.868s1.296.036 1.341 1.82c0 0-1.02-2.668-3.271-.2 0 0 .404-1.729 1.93-1.62z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/laravel.svg b/assets/lib/simple-icons/icons/laravel.svg
index a523b552..b9b725d7 100644
--- a/assets/lib/simple-icons/icons/laravel.svg
+++ b/assets/lib/simple-icons/icons/laravel.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Laravel icon</title><path d="M23.644 5.43c.009.032.014.065.014.099v5.15c0 .135-.073.26-.189.326l-4.323 2.49v4.934c0 .135-.072.258-.188.326L9.931 23.95c-.021.012-.043.02-.066.027-.008.002-.016.008-.024.01-.063.018-.13.018-.192 0-.011-.002-.02-.008-.029-.012-.021-.008-.043-.014-.063-.025L.534 18.755c-.117-.068-.189-.191-.189-.326V2.974c0-.033.005-.066.014-.098.003-.012.01-.021.014-.032.006-.02.014-.04.023-.058.004-.013.015-.022.023-.033.012-.016.021-.031.033-.045.012-.01.025-.018.037-.027.014-.012.027-.024.041-.034h.001L5.044.05c.115-.067.259-.067.375 0l4.512 2.597h.002c.015.01.027.021.041.033.012.009.025.018.037.027.013.014.021.029.033.045.008.011.02.021.025.033.011.019.017.038.024.058.003.011.011.021.013.032.01.031.014.064.014.098v9.652l3.76-2.164V5.527c0-.033.005-.066.014-.098.003-.011.009-.021.013-.032.007-.02.014-.039.024-.059.007-.012.018-.021.025-.033.012-.015.021-.03.033-.043.012-.012.025-.02.037-.028.014-.011.026-.023.041-.032h.001l4.513-2.598c.116-.067.259-.067.375 0l4.513 2.598c.016.01.027.021.042.031.012.01.025.018.036.028.013.014.022.029.034.044.008.012.019.021.024.033.011.02.018.039.024.059.006.011.012.022.015.033zm-.74 5.032V6.179l-1.578.908-2.182 1.256v4.283l3.76-2.164zm-4.511 7.75v-4.287l-2.146 1.225-6.127 3.498v4.326l8.273-4.762zM1.095 3.624v14.588l8.273 4.762v-4.326l-4.322-2.445-.002-.003h-.002c-.014-.01-.025-.021-.04-.031-.011-.01-.024-.018-.035-.027l-.001-.002c-.013-.012-.021-.025-.031-.039-.01-.012-.021-.023-.028-.037h-.002c-.008-.014-.013-.031-.02-.047-.006-.016-.014-.027-.018-.043-.004-.018-.006-.037-.008-.057-.002-.014-.006-.027-.006-.041V5.789l-2.18-1.257-1.578-.908zM5.231.81l-3.76 2.164 3.76 2.164 3.758-2.164L5.231.81zm1.956 13.505l2.182-1.256V3.624l-1.58.909-2.182 1.256v9.435l1.58-.909zM18.769 3.364l-3.76 2.164 3.76 2.163 3.759-2.164-3.759-2.163zm-.376 4.979l-2.182-1.256-1.579-.908v4.283l2.182 1.256 1.579.908V8.343zm-8.65 9.654l5.514-3.148 2.756-1.572-3.757-2.163-4.324 2.489-3.941 2.27 3.752 2.124z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Laravel</title><path d="M23.642 5.43a.364.364 0 01.014.1v5.149c0 .135-.073.26-.189.326l-4.323 2.49v4.934a.378.378 0 01-.188.326L9.93 23.949a.316.316 0 01-.066.027c-.008.002-.016.008-.024.01a.348.348 0 01-.192 0c-.011-.002-.02-.008-.03-.012-.02-.008-.042-.014-.062-.025L.533 18.755a.376.376 0 01-.189-.326V2.974c0-.033.005-.066.014-.098.003-.012.01-.02.014-.032a.369.369 0 01.023-.058c.004-.013.015-.022.023-.033l.033-.045c.012-.01.025-.018.037-.027.014-.012.027-.024.041-.034H.53L5.043.05a.375.375 0 01.375 0L9.93 2.647h.002c.015.01.027.021.04.033l.038.027c.013.014.02.03.033.045.008.011.02.021.025.033.01.02.017.038.024.058.003.011.01.021.013.032.01.031.014.064.014.098v9.652l3.76-2.164V5.527c0-.033.004-.066.013-.098.003-.01.01-.02.013-.032a.487.487 0 01.024-.059c.007-.012.018-.02.025-.033.012-.015.021-.03.033-.043.012-.012.025-.02.037-.028.014-.01.026-.023.041-.032h.001l4.513-2.598a.375.375 0 01.375 0l4.513 2.598c.016.01.027.021.042.031.012.01.025.018.036.028.013.014.022.03.034.044.008.012.019.021.024.033.011.02.018.04.024.06.006.01.012.021.015.032zm-.74 5.032V6.179l-1.578.908-2.182 1.256v4.283zm-4.51 7.75v-4.287l-2.147 1.225-6.126 3.498v4.325zM1.093 3.624v14.588l8.273 4.761v-4.325l-4.322-2.445-.002-.003H5.04c-.014-.01-.025-.021-.04-.031-.011-.01-.024-.018-.035-.027l-.001-.002c-.013-.012-.021-.025-.031-.04-.01-.011-.021-.022-.028-.036h-.002c-.008-.014-.013-.031-.02-.047-.006-.016-.014-.027-.018-.043a.49.49 0 01-.008-.057c-.002-.014-.006-.027-.006-.041V5.789l-2.18-1.257zM5.23.81L1.47 2.974l3.76 2.164 3.758-2.164zm1.956 13.505l2.182-1.256V3.624l-1.58.91-2.182 1.255v9.435zm11.581-10.95l-3.76 2.163 3.76 2.163 3.759-2.164zm-.376 4.978L16.21 7.087 14.63 6.18v4.283l2.182 1.256 1.58.908zm-8.65 9.654l5.514-3.148 2.756-1.572-3.757-2.163-4.323 2.489-3.941 2.27z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/laravelhorizon.svg b/assets/lib/simple-icons/icons/laravelhorizon.svg
index a088dd7c..45089257 100644
--- a/assets/lib/simple-icons/icons/laravelhorizon.svg
+++ b/assets/lib/simple-icons/icons/laravelhorizon.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Laravel Horizon icon</title><path d="M20.486 3.516C15.8-1.171 8.202-1.172 3.516 3.513A11.963 11.963 0 0 0 0 11.998a11.975 11.975 0 0 0 4.2 9.13h.01a12 12 0 0 0 16.274-.642c4.687-4.685 4.688-12.283.002-16.97zM16 13.998c-4 0-4-4-8-4-2.5 0-3.44 1.565-4.765 2.74H3.23a8.801 8.801 0 0 1 17.54-1.48c-1.33 1.175-2.27 2.74-4.77 2.74z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Laravel Horizon</title><path d="M20.486 3.516C15.8-1.171 8.202-1.172 3.516 3.513A11.963 11.963 0 0 0 0 11.998a11.975 11.975 0 0 0 4.2 9.13h.01a12 12 0 0 0 16.274-.642c4.687-4.685 4.688-12.283.002-16.97zM16 13.998c-4 0-4-4-8-4-2.5 0-3.44 1.565-4.765 2.74H3.23a8.801 8.801 0 0 1 17.54-1.48c-1.33 1.175-2.27 2.74-4.77 2.74z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/laravelnova.svg b/assets/lib/simple-icons/icons/laravelnova.svg
index a70c001b..2bdfef28 100644
--- a/assets/lib/simple-icons/icons/laravelnova.svg
+++ b/assets/lib/simple-icons/icons/laravelnova.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Laravel Nova icon</title><path d="M21.333 4.319C16.56.386 9.453.632 4.973 5.057a7.571 7.571 0 0 0 0 10.8c3.018 2.982 7.912 2.982 10.931 0a3.245 3.245 0 0 0 0-4.628 3.342 3.342 0 0 0-4.685 0 1.114 1.114 0 0 1-1.561 0 1.082 1.082 0 0 1 0-1.543 5.57 5.57 0 0 1 7.808 0 5.408 5.408 0 0 1 0 7.714c-3.881 3.834-10.174 3.834-14.055 0a9.734 9.734 0 0 1-.015-13.87C5.596 1.35 8.638 0 12 0c3.75 0 7.105 1.68 9.333 4.319zm-.714 16.136A12.184 12.184 0 0 1 12 24a12.18 12.18 0 0 1-9.333-4.319c4.772 3.933 11.88 3.687 16.36-.738a7.571 7.571 0 0 0 0-10.8c-3.018-2.982-7.912-2.982-10.931 0a3.245 3.245 0 0 0 0 4.628 3.342 3.342 0 0 0 4.685 0 1.114 1.114 0 0 1 1.561 0 1.082 1.082 0 0 1 0 1.543 5.57 5.57 0 0 1-7.808 0 5.408 5.408 0 0 1 0-7.714c3.881-3.834 10.174-3.834 14.055 0a9.734 9.734 0 0 1 .03 13.855z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Laravel Nova</title><path d="M21.333 4.319C16.56.386 9.453.632 4.973 5.057a7.571 7.571 0 0 0 0 10.8c3.018 2.982 7.912 2.982 10.931 0a3.245 3.245 0 0 0 0-4.628 3.342 3.342 0 0 0-4.685 0 1.114 1.114 0 0 1-1.561 0 1.082 1.082 0 0 1 0-1.543 5.57 5.57 0 0 1 7.808 0 5.408 5.408 0 0 1 0 7.714c-3.881 3.834-10.174 3.834-14.055 0a9.734 9.734 0 0 1-.015-13.87C5.596 1.35 8.638 0 12 0c3.75 0 7.105 1.68 9.333 4.319zm-.714 16.136A12.184 12.184 0 0 1 12 24a12.18 12.18 0 0 1-9.333-4.319c4.772 3.933 11.88 3.687 16.36-.738a7.571 7.571 0 0 0 0-10.8c-3.018-2.982-7.912-2.982-10.931 0a3.245 3.245 0 0 0 0 4.628 3.342 3.342 0 0 0 4.685 0 1.114 1.114 0 0 1 1.561 0 1.082 1.082 0 0 1 0 1.543 5.57 5.57 0 0 1-7.808 0 5.408 5.408 0 0 1 0-7.714c3.881-3.834 10.174-3.834 14.055 0a9.734 9.734 0 0 1 .03 13.855z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/last-dot-fm.svg b/assets/lib/simple-icons/icons/last-dot-fm.svg
deleted file mode 100644
index beeb3e05..00000000
--- a/assets/lib/simple-icons/icons/last-dot-fm.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Last.fm icon</title><path d="M10.599 17.211l-.881-2.393s-1.433 1.596-3.579 1.596c-1.9 0-3.249-1.652-3.249-4.296 0-3.385 1.708-4.596 3.388-4.596 2.418 0 3.184 1.568 3.845 3.578l.871 2.751c.871 2.672 2.523 4.818 7.285 4.818 3.41 0 5.722-1.045 5.722-3.801 0-2.227-1.276-3.383-3.635-3.935l-1.757-.384c-1.217-.274-1.577-.771-1.577-1.597 0-.936.736-1.487 1.952-1.487 1.323 0 2.028.495 2.147 1.679l2.749-.33c-.225-2.479-1.937-3.494-4.745-3.494-2.479 0-4.897.936-4.897 3.934 0 1.873.902 3.058 3.185 3.605l1.862.443c1.397.33 1.863.916 1.863 1.713 0 1.021-.992 1.441-2.869 1.441-2.779 0-3.936-1.457-4.597-3.469l-.901-2.75c-1.156-3.574-3.004-4.896-6.669-4.896C2.147 5.327 0 7.879 0 12.235c0 4.179 2.147 6.445 6.003 6.445 3.108 0 4.596-1.457 4.596-1.457v-.012z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/lastdotfm.svg b/assets/lib/simple-icons/icons/lastdotfm.svg
new file mode 100644
index 00000000..e75fbec9
--- /dev/null
+++ b/assets/lib/simple-icons/icons/lastdotfm.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Last.fm</title><path d="M10.584 17.21l-.88-2.392s-1.43 1.594-3.573 1.594c-1.897 0-3.244-1.649-3.244-4.288 0-3.382 1.704-4.591 3.381-4.591 2.42 0 3.189 1.567 3.849 3.574l.88 2.749c.88 2.666 2.529 4.81 7.285 4.81 3.409 0 5.718-1.044 5.718-3.793 0-2.227-1.265-3.381-3.63-3.931l-1.758-.385c-1.21-.275-1.567-.77-1.567-1.595 0-.934.742-1.484 1.952-1.484 1.32 0 2.034.495 2.144 1.677l2.749-.33c-.22-2.474-1.924-3.492-4.729-3.492-2.474 0-4.893.935-4.893 3.932 0 1.87.907 3.051 3.189 3.601l1.87.44c1.402.33 1.869.907 1.869 1.704 0 1.017-.99 1.43-2.86 1.43-2.776 0-3.93-1.457-4.59-3.464l-.907-2.75c-1.155-3.573-2.997-4.893-6.653-4.893C2.144 5.333 0 7.89 0 12.233c0 4.18 2.144 6.434 5.993 6.434 3.106 0 4.591-1.457 4.591-1.457z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/lastpass.svg b/assets/lib/simple-icons/icons/lastpass.svg
index 75b6de27..c07218cb 100644
--- a/assets/lib/simple-icons/icons/lastpass.svg
+++ b/assets/lib/simple-icons/icons/lastpass.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>LastPass icon</title><path d="M22.629,6.857c0-0.379,0.304-0.686,0.686-0.686C23.693,6.171,24,6.483,24,6.857 v10.286c0,0.379-0.304,0.686-0.686,0.686c-0.379,0-0.686-0.312-0.686-0.686V6.857z M2.057,10.286c1.136,0,2.057,0.921,2.057,2.057 S3.193,14.4,2.057,14.4S0,13.479,0,12.343S0.921,10.286,2.057,10.286z M9.6,10.286c1.136,0,2.057,0.921,2.057,2.057 S10.736,14.4,9.6,14.4s-2.057-0.921-2.057-2.057S8.464,10.286,9.6,10.286z M17.143,10.286c1.136,0,2.057,0.921,2.057,2.057 S18.279,14.4,17.143,14.4s-2.057-0.921-2.057-2.057S16.007,10.286,17.143,10.286z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>LastPass</title><path d="M22.629,6.857c0-0.379,0.304-0.686,0.686-0.686C23.693,6.171,24,6.483,24,6.857 v10.286c0,0.379-0.304,0.686-0.686,0.686c-0.379,0-0.686-0.312-0.686-0.686V6.857z M2.057,10.286c1.136,0,2.057,0.921,2.057,2.057 S3.193,14.4,2.057,14.4S0,13.479,0,12.343S0.921,10.286,2.057,10.286z M9.6,10.286c1.136,0,2.057,0.921,2.057,2.057 S10.736,14.4,9.6,14.4s-2.057-0.921-2.057-2.057S8.464,10.286,9.6,10.286z M17.143,10.286c1.136,0,2.057,0.921,2.057,2.057 S18.279,14.4,17.143,14.4s-2.057-0.921-2.057-2.057S16.007,10.286,17.143,10.286z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/latex.svg b/assets/lib/simple-icons/icons/latex.svg
index f482fe42..8f805715 100644
--- a/assets/lib/simple-icons/icons/latex.svg
+++ b/assets/lib/simple-icons/icons/latex.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>LaTeX icon</title><path d="M2.176 2.813c.233.42.477.779.73 1.09h-.002a2.313 2.313 0 0 0-.357-.026 2.702 2.702 0 0 0-.791.13c.494.415.912.717 1.281.95.905.294 1.912.782 2.77 1.328.429.273.812.543 1.113.78.301.236.567.471.621.574.054.102-.001.139-.082.06-.081-.078-.302-.319-.6-.553a14.203 14.203 0 0 0-1.107-.775c-.775-.49-1.982-.96-2.715-1.414-.57-.182-1.182-.207-1.902.135.526.33.967.568 1.353.746 1.104.155 2.259.695 3.225 1.308.483.308.905.616 1.22.868.158.125.29.237.39.328.098.09.176.155.198.21.03.074-.02.104-.085.057-.032-.022-.085-.102-.182-.191a7.475 7.475 0 0 0-.385-.326c-.312-.25-.73-.553-1.21-.858-.894-.561-2.233-1.012-3.175-1.396-.601-.11-1.223-.06-1.904.389.449.2.837.35 1.182.464-.566.02-1.128.197-1.676.717.477.118.885.198 1.244.25-.44.09-.87.3-1.289.72.324.07.616.123.883.163-.329.159-.64.406-.924.783.373.03.703.042 1 .043-.36.166-.696.428-.996.85.533.026.979.024 1.363.002-.422.172-.812.464-1.144.969a11.66 11.66 0 0 0 1.629-.077l-.008.002c.99-.073 2.3.127 2.965.848.052.057-.024.118-.073.074-.648-.58-1.494-.827-2.892-.922-.544.15-1.047.447-1.461 1.075.535.007.981-.011 1.365-.047-.47.255-.871.643-1.137 1.304.483-.091.888-.19 1.237-.293-.363.265-.669.636-.873 1.194.324-.072.611-.146.87-.221a2.52 2.52 0 0 0-.513 1.096c.351-.13.655-.256.926-.38h.002c.283-.23.71-.457 1.289-.622.506-.145 1.082-.284 1.652-.301a3.63 3.63 0 0 1 .244 0c.1.003.063.104.006.103-.728-.008-1.302.132-1.873.295a9.8 9.8 0 0 0-1.318.526 2.5 2.5 0 0 0-.551 1.191c.495-.198.899-.388 1.238-.568-.311.333-.543.76-.635 1.357a11.794 11.794 0 0 0 1.442-.744c-.432.362-.764.844-.879 1.588a10.81 10.81 0 0 0 1.766-.957c-.184.372-.281.807-.235 1.35.762-.585 1.245-1.056 1.604-1.473a2.67 2.67 0 0 0 .076.885c.449-.772.897-1.093 1.353-1.358-.563.37-.464.671-.464 1.014.683-.72 1.636-1.483 1.927-1.961-.39.585-.547 1.14-.65 1.629-1.994 1.055-3.21 1.33-4.57 1.752.528.194 1.095.383.861.652l-.625.623c.399-.124.805-.3 1.158-.058-.034.327-.448.493-.8.683.62-.224.756-.173.92-.12.08.391-.203.602-.387.86 1.565-1.19 3.606-2.128 5.045-2.521 2.022-.681 4.632-1.39 5.341-3.117.235-.946.478-1.905.707-2.842-.111-.035-.245-.063-.35-.133a.655.655 0 0 1-.234-.299c-.252.066-.441.031-.56-.088-.118-.117-.168-.294-.203-.49-.204.042-.364.017-.47-.076-.114-.102-.17-.26-.198-.443l-.006-.041.037-.014a.84.84 0 0 0 .3-.195.256.256 0 0 0 .071-.225l-.006-.037.03-.016c.163-.093.346-.168.43-.279a.277.277 0 0 0 .05-.21.886.886 0 0 0-.154-.36l-.028-.04.04-.027c.118-.09.246-.176.31-.257.032-.041.046-.077.045-.11 0-.033-.015-.071-.065-.119l-.097-.094.135.006c.212.009.396-.006.539-.053a.5.5 0 0 0 .296-.224.455.455 0 0 1-.005-.074.455.455 0 0 1 .455-.455.455.455 0 0 1 .455.455.455.455 0 0 1-.022.132c.184.016.359.008.524-.064l.037-.012c.236-.084.333.045.72-.459-1.69-2.191-4.158-.632-4.978 1.625-.21.577-1.405.577-1.752-.002-1.37-2.95-5.531-6.067-9.072-7.216zm.732 1.091c.252-.009 1.13.453 1.31.52a23.6 23.6 0 0 1 1.567.967c.505.336.961.663 1.274.902.156.12.277.218.351.285.037.034.064.057.08.082a.079.079 0 0 1 .01.022.056.056 0 0 1-.004.045c-.01.02-.03.03-.043.03a.075.075 0 0 1-.027 0c-.057.001-.202-.163-.496-.415a23.427 23.427 0 0 0-2.758-1.826c-.504-.28-.956-.54-1.264-.612zM1.766 6.691c.812 0 1.89.365 2.931.92C5.74 8.168 6.74 8.83 7.223 9.39c.066.076-.019.123-.077.068-.52-.496-1.462-1.206-2.498-1.758-.637-.336-2.148-1.005-2.882-1.008zm-.428.967c1.116.015 2.348.446 3.432.996.541.275 1.024.57 1.396.832.372.263.673.523.734.657.062.133-.019.13-.086.054a4.404 4.404 0 0 0-.705-.627 11.496 11.496 0 0 0-1.384-.824c-.963-.482-2.284-.926-3.387-1.088zm.162.815c.066-.003.133 0 .201.006.822.071 1.719.366 2.533.748 1.087.509 2.035 1.157 2.434 1.666.035.045-.011.133-.078.064-.428-.44-1.32-1.132-2.397-1.637C3.28 8.9 1.91 8.45.93 8.541c.188-.024.373-.061.57-.068zm16.541.013c-.365.475-.53.425-.701.465.093.431.35.587.586.772 2.02-.372 4.29-.274 6.08-.225l-5.963-1.01-.002-.002zm-.803.494c-.19.077-.387.079-.584.06a.455.455 0 0 1-.39.224.455.455 0 0 1-.414-.268.616.616 0 0 1-.301.21 1.57 1.57 0 0 1-.492.054c.02.035.054.067.054.103a.275.275 0 0 1-.07.174c-.073.093-.188.172-.295.25a.946.946 0 0 1 .149.361.388.388 0 0 1-.07.284c-.106.14-.287.211-.438.295a.374.374 0 0 1-.092.267.886.886 0 0 1-.297.197c.027.157.074.283.154.354.086.076.212.104.426.049l.055-.016.01.055c.034.207.088.386.187.484.1.099.243.135.502.055l.049-.016.015.05a.53.53 0 0 0 .21.282c.087.06.25.112.36.147.798-.868 1.525-1.772 1.884-2.86-.225-.176-.508-.335-.612-.795zM1.44 9.348a6.683 6.683 0 0 1 2.77.64c.92.43 1.658.939 1.975 1.307.074.087-.02.122-.073.074a8.186 8.186 0 0 0-1.947-1.29c-.904-.416-2.196-.646-3.16-.718.145-.01.29-.014.435-.013zm.432.816c.61.02 1.24.155 1.807.352.756.262 1.42.614 1.746.98.044.05-.005.13-.072.07-.349-.304-.962-.694-1.707-.953-.575-.195-1.616-.367-2.27-.396.196-.021.293-.06.496-.053zm.893 1.781c.05 0 .103.004.156.008.424.034.886.133 1.342.406.043.026.049.136-.05.09-.856-.402-1.327-.489-2.458-.308.338-.113.652-.199 1.01-.196zm.416.784c.3.004.613.062.998.216.044.018.08.126-.033.094-.857-.243-1.167-.328-2.288.104.281-.229.62-.367 1.022-.403.1-.009.2-.013.3-.011zm1.459.681c.156 0 .311.009.46.026.053.005.055.102-.007.1a7.9 7.9 0 0 0-1.838.114c-.243.046-.422.044-1.404.46.286-.234.795-.451 1.386-.56.444-.08.934-.142 1.403-.14zm1.336.906c.035-.005.105.084.017.1-.73.136-1.244.268-1.795.455-.216.074-.579.207-1.242.588.259-.269.655-.494 1.213-.684a10.65 10.65 0 0 1 1.807-.459zm.31.508c.075-.012.099.087.022.102-1.217.24-1.76.556-2.541 1.144.503-.523 1.296-1.05 2.52-1.246zm.596.447a.095.095 0 0 1 .03 0c.06.011.069.089-.009.1-.872.13-1.479.555-2.257 1.332.295-.494 1.006-1.242 2.236-1.432zm.371.391c.046-.005.116.073.025.1-.193.056-.433.15-.67.3-.182.118-.302.202-.6.508.112-.245.299-.435.546-.591.246-.157.507-.293.699-.317z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>LaTeX</title><path d="M2.176 2.814c.233.42.476.78.73 1.09.247-.013 1.132.456 1.312.523.508.282 1.063.63 1.567.966.505.337.96.662 1.272.9.156.12.278.218.352.286a.483.483 0 01.078.082.08.08 0 01.01.021.06.06 0 01-.004.047.057.057 0 01-.04.03.077.077 0 01-.028 0c-.057 0-.203-.163-.497-.415a23.474 23.474 0 00-2.759-1.827c-.504-.28-.956-.542-1.264-.613a2.322 2.322 0 00-.36-.025 2.706 2.706 0 00-.788.133c.494.414.91.716 1.28.949-.57-.182-1.182-.21-1.902.133.526.329.967.567 1.354.745 1.103.156 2.258.696 3.224 1.309.483.307.904.615 1.219.867.157.125.29.237.39.328.098.091.174.154.197.21.03.073-.019.104-.084.058-.032-.022-.088-.102-.184-.191a7.35 7.35 0 00-.384-.327c-.312-.25-.729-.552-1.209-.857-.893-.562-2.232-1.013-3.173-1.397-.602-.11-1.225-.06-1.906.39.449.2.837.349 1.182.463.812 0 1.892.365 2.935.922 1.042.556 2.04 1.214 2.523 1.774.066.077-.016.126-.074.07-.52-.495-1.463-1.204-2.498-1.756-.639-.337-2.153-1.01-2.886-1.01l.004.002c-.567.02-1.13.195-1.679.716.477.118.885.196 1.244.249-.44.088-.87.3-1.289.722.324.07.616.122.882.162-.328.159-.639.404-.923.78.373.03.703.042 1 .044-.36.166-.696.43-.996.85.533.027.98.025 1.364.003-.422.172-.812.464-1.145.968.662.01 1.188-.022 1.628-.076l-.006.002c.99-.073 2.297.127 2.962.847.052.057-.024.118-.072.074-.648-.58-1.493-.827-2.89-.921h-.002c-.543.149-1.046.446-1.46 1.074.536.008.982-.013 1.366-.05-.469.257-.873.644-1.139 1.306.483-.092.888-.19 1.237-.292-.363.265-.668.636-.873 1.194.324-.072.612-.146.871-.221a2.519 2.519 0 00-.513 1.095c.352-.13.655-.254.926-.377-.257.3-.453.681-.55 1.19.495-.199.899-.388 1.238-.568-.31.333-.543.76-.635 1.356a11.816 11.816 0 001.442-.744c-.433.362-.764.843-.879 1.587.788-.348 1.339-.663 1.767-.955-.184.372-.282.806-.235 1.348.762-.584 1.243-1.056 1.602-1.473-.024.269-.003.56.077.884.546-.939 1.089-1.212 1.65-1.526-.895.451-.762.79-.762 1.184.683-.72 1.635-1.482 1.927-1.96-.39.585-.547 1.14-.65 1.63-1.993 1.054-3.207 1.329-4.568 1.75.528.194 1.093.383.859.652l-.624.622c.399-.124.805-.3 1.158-.059-.035.327-.447.492-.8.683.621-.224.756-.172.92-.12.081.393-.203.603-.388.862 1.565-1.19 3.606-2.13 5.044-2.522 2.022-.681 4.63-1.389 5.339-3.115l.712-2.847-.004.004c-.111-.034-.246-.063-.35-.133a.651.651 0 01-.235-.297c-.252.065-.44.03-.56-.088-.117-.117-.167-.296-.203-.491-.203.041-.362.016-.467-.077-.116-.101-.17-.26-.198-.444l-.008-.039.037-.015a.842.842 0 00.302-.194.257.257 0 00.07-.225l-.006-.037.03-.016c.163-.093.345-.169.428-.28a.274.274 0 00.053-.21.88.88 0 00-.155-.357l-.027-.04.04-.027c.118-.09.244-.179.308-.26.032-.04.048-.076.047-.11 0-.033-.015-.07-.064-.117l-.098-.094.135.006c.213.01.395-.007.538-.053a.504.504 0 00.274-.197c-.007-.033-.02-.063-.02-.098a.484.484 0 01.967 0c0 .044-.015.084-.026.125.177.014.347.01.507-.06l.002.001.035-.013c.236-.085.334.045.72-.456-1.69-2.19-4.157-.635-4.977 1.622-.21.576-1.405.578-1.751 0-1.37-2.95-5.53-6.068-9.07-7.218zm.86 2.145c.906.293 1.913.782 2.77 1.328.43.273.813.543 1.114.779.301.236.566.473.62.575.054.102 0 .14-.082.06-.081-.078-.303-.32-.6-.553-.298-.234-.68-.505-1.106-.777-.775-.49-1.982-.958-2.716-1.412zm-1.7 2.7c1.116.014 2.35.447 3.434.997.541.275 1.023.567 1.395.83.372.263.672.524.734.657.061.134-.02.13-.087.055a4.401 4.401 0 00-.704-.626 11.47 11.47 0 00-1.385-.826C3.76 8.264 2.439 7.82 1.336 7.66zm14.916.772a.381.381 0 100 .762.381.381 0 000-.762zM1.7 8.478c.822.072 1.72.368 2.534.75 1.086.509 2.035 1.158 2.434 1.667.035.045-.014.131-.08.062-.428-.44-1.322-1.131-2.397-1.635-.913-.421-2.282-.87-3.262-.78.251-.03.497-.088.771-.064zm16.339.01c-.366.475-.53.423-.703.464.094.43.35.586.585.77l-.06.012c2.315-.447 4.186-.286 6.139-.236l-5.961-1.01zm-.178 1.246h-.002l-.004.016.006-.016zm-.625-.757c-.183.074-.373.076-.563.059a.477.477 0 01-.42.26.483.483 0 01-.435-.278.609.609 0 01-.274.188c-.139.045-.308.057-.493.055.02.035.054.068.055.104a.273.273 0 01-.069.174c-.073.092-.189.17-.295.248.087.141.137.26.149.362a.39.39 0 01-.07.284c-.106.14-.288.21-.439.293a.374.374 0 01-.09.268.89.89 0 01-.297.198c.027.156.074.283.154.354.086.076.211.103.425.047l.055-.014.01.055c.033.207.088.385.187.483.1.099.244.135.503.055l.049-.015.016.048c.05.142.12.223.209.282.087.06.247.112.358.147.798-.869 1.525-1.772 1.884-2.86-.225-.177-.506-.338-.609-.797zm-16.23.386c1.165-.08 2.283.196 3.202.626.92.43 1.658.939 1.974 1.307.075.087-.019.12-.072.072a8.187 8.187 0 00-1.947-1.29c-.904-.414-2.193-.644-3.157-.715zm.864.802c.61.02 1.24.155 1.806.352.756.262 1.421.614 1.747.98.045.05-.007.127-.074.069-.349-.304-.961-.693-1.706-.951-.574-.195-1.613-.369-2.268-.397.197-.022.292-.06.495-.053zm1.05 1.788c.423.034.886.133 1.341.407.043.026.049.136-.049.09-.856-.402-1.326-.49-2.457-.31.386-.128.74-.221 1.164-.187zm-.04.788c.4-.035.784-.002 1.297.204.044.018.08.126-.033.094-.857-.243-1.167-.328-2.287.104.28-.229.622-.366 1.023-.402zm1.285.687c.317-.023.635-.026.934.006.052.006.055.105-.006.102a7.87 7.87 0 00-1.837.115c-.243.046-.423.043-1.405.458.287-.233.794-.452 1.385-.56a8.91 8.91 0 01.93-.12zm1.28.49c.099.003.062.104.006.103-.728-.01-1.304.132-1.875.295a9.78 9.78 0 00-1.318.525c.283-.23.713-.457 1.291-.622.579-.166 1.248-.326 1.896-.302zm.528.398c.036-.005.105.084.018.1-.73.137-1.244.267-1.794.454-.216.074-.58.207-1.243.587.26-.269.656-.492 1.213-.68.558-.19 1.196-.37 1.806-.46zm.311.507c.075-.012.097.087.02.102-1.217.241-1.76.556-2.54 1.144.504-.523 1.297-1.051 2.52-1.246zm.595.448c.087-.013.11.087.021.1-.872.13-1.477.553-2.255 1.33.295-.493 1.004-1.24 2.234-1.43zm.372.39c.046-.006.114.073.023.1a2.634 2.634 0 00-.669.3c-.182.118-.3.2-.597.507.111-.245.296-.434.542-.59.247-.157.509-.293.7-.317z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/launchpad.svg b/assets/lib/simple-icons/icons/launchpad.svg
index f9581856..e8ca4eb7 100644
--- a/assets/lib/simple-icons/icons/launchpad.svg
+++ b/assets/lib/simple-icons/icons/launchpad.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Launchpad icon</title><path d="M21.999 18.676l-4.432-2.556-4.783 2.764V24l9.215-5.324zM11.216 24v-5.119l-4.785-2.762-4.43 2.557L11.216 24zm.779-6.475l4.789-2.765V9.236l-4.785-2.76-4.783 2.76v5.527l4.781 2.761-.002.001zM1.22 6.682v10.641l4.432-2.559V9.239L1.219 6.68l.001.002zm19.615 1.121l-2.484 1.436v5.522l4.43 2.559V6.678l-1.946 1.125zM2.001 5.324l4.435 2.559 4.781-2.762V.003L2.001 5.324zm15.566 2.559l4.434-2.559L12.782 0v5.121l4.785 2.762z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Launchpad</title><path d="M21.999 18.676l-4.432-2.556-4.783 2.764V24l9.215-5.324zM11.216 24v-5.119l-4.785-2.762-4.43 2.557L11.216 24zm.779-6.475l4.789-2.765V9.236l-4.785-2.76-4.783 2.76v5.527l4.781 2.761-.002.001zM1.22 6.682v10.641l4.432-2.559V9.239L1.219 6.68l.001.002zm19.615 1.121l-2.484 1.436v5.522l4.43 2.559V6.678l-1.946 1.125zM2.001 5.324l4.435 2.559 4.781-2.762V.003L2.001 5.324zm15.566 2.559l4.434-2.559L12.782 0v5.121l4.785 2.762z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/lazarus.svg b/assets/lib/simple-icons/icons/lazarus.svg
new file mode 100644
index 00000000..dc940f16
--- /dev/null
+++ b/assets/lib/simple-icons/icons/lazarus.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Lazarus</title><path d="M11.457.447c0 .198.035.367.092.367.123 0 .51.715.592 1.092.053.288.053.288-.45.398-1.225.248-1.532 1.092-.694 2.383.276.417.276.436.245 1.588-.017 1.092 0 1.192.195 1.589.213.397.5.655 1 .854.419.159 1.94.081 2.349-.13.51-.247 1.224-1.091 1.53-1.588.235-.606.164-1.49-.193-2.284-.357-.724-1.225-1.688-1.94-2.085-.408-.228-.582-.377-.745-.685a4.493 4.369 0 0 0-.531-.754C12.518.755 11.681 0 11.579 0c-.038 0-.075.169-.075.367zm-6.33 1.688a6.127 5.958 0 0 0-.162 1.986c.054.437.027.556-.154.873-.377.676-.53 1.291-.49 2.383.029.725.083.964.287 1.291.46.894 1.123 1.291 2.144 1.589.664.129 1.225.083 1.735-.189 1.634-.715 1.94-1.986.624-3.276-.512-.596-.756-1.093-.756-1.49 0-.526-.255-1.191-.572-1.49-.255-.228-.337-.237-.837-.198a6.772 6.586 0 0 0-.797.12c-.234.055-.276.026-.429-.368a2.144 2.085 0 0 1-.173-.774c.027-.348-.195-.835-.378-.835-.045 0-.133.17-.193.378zm16.338 3.078c-.036.198-.02.377.054.457.063.072.122.347.133.615l.008.487-.327.01c-.674.018-.756.044-1.123.377a2.552 2.482 0 0 0-.49.804c-.091.248-.43 1.092-.796 1.688-.358.725-.654 1.49-.675 1.688-.122.755.317 1.291 1.328 1.887.46.228.664.248 1.327.248.674 0 .858-.037 1.327-.288.736-.347 1.124-.755 1.532-1.49.215-.436.246-.615.235-1.489-.01-1.092-.204-1.688-.704-2.383a4.084 3.972 0 0 1-.46-.993c-.194-.685-.909-1.986-1.123-1.986-.074 0-.154.13-.195.318zM.022 11.17c-.1.17.154 1.688.368 2.284.123.308.285.854.357 1.192.378 1.886 1.736 3.177 3.267 3.276 1.123.074 2.042-.248 2.553-.923.745-.874.867-1.688.357-2.383-.153-.189-.592-.526-.99-.775-.388-.238-1.123-.675-1.532-.963-1.327-.874-1.531-.933-1.735-1.092-.49-.13-.838-.028-1.226.348l-.357.317-.194-.317c-.1-.17-.194-.378-.194-.497 0-.1-.122-.288-.255-.437-.286-.268-.358-.288-.429-.159Zm13.274 2.284c-.654.169-1.327.417-1.634.566-.674.348-1.225.894-1.532 1.49-.173.436-.204.565-.153 1.489.054.834.037.963-.163 1.29-.215.457-.878 1.192-1.226 1.291-.112.046-.295.239-.418.408-.633.933.235 2.78 1.635 3.574.653.348 1.53.497 2.347.417 2.962-.268 6.126-1.092 8.373-2.085 1.532-.695 2.144-1.688 2.144-3.078-.028-1.49-.787-2.383-2.043-2.383-1 0-2.042-.616-2.45-1.49-.317-.615-.939-1.191-1.532-1.588-.326-.13-.653-.199-1.327-.229-.745-.026-1.02.02-2.042.288z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/lbry.svg b/assets/lib/simple-icons/icons/lbry.svg
new file mode 100644
index 00000000..bac6fdab
--- /dev/null
+++ b/assets/lib/simple-icons/icons/lbry.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>LBRY</title><path d="M23.3493 14.1894l.169-1.0651-1.0315-.1775.0676-.4142 1.4456.245-.2365 1.4795zm.152-5.495v1.1921l-11.7338 7.211-8.8425-4.3367.0169-.6677 8.7918 4.3282 11.1759-6.8644v-.4904L12.3592 3.9773.5917 11.2561v3.2547l11.142 5.5119 11.6322-7.135.33.5074-11.9284 7.3038L0 14.8828v-3.9563L12.3254 3.301z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/leaderprice.svg b/assets/lib/simple-icons/icons/leaderprice.svg
new file mode 100644
index 00000000..a02b886f
--- /dev/null
+++ b/assets/lib/simple-icons/icons/leaderprice.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Leader Price</title><path d="M1.836 7.574h-1.1v3.97h2.822v-.965H1.836zM17.08 9.943h1.794V9.15H17.08v-.636h1.987v-.941H15.99v3.97h3.106v-.936h-2.021v-.665zm-12.075 0H6.8V9.15H5.005v-.636h1.992v-.941H3.92v3.97h3.106v-.936H5.005zm17.314.217c.492-.208.815-.613.815-1.22v-.01c0-.391-.12-.7-.352-.927-.265-.27-.685-.43-1.293-.43h-1.877v3.971h1.1v-1.201h.483l.8 1.201h1.27zm-.29-1.153c0 .29-.217.472-.588.472h-.724v-.95h.719c.367 0 .593.16.593.473zm-8.731-1.433h-1.53v3.97h1.51c1.428 0 2.263-.849 2.263-1.997v-.01c-.005-1.148-.825-1.963-2.243-1.963zm1.11 1.992c0 .642-.44 1.004-1.096 1.004h-.448V8.553h.448c.656 0 1.095.367 1.095 1.004zM11.734 0 5.497 6.238h12.475zm-2.88 7.574-1.68 3.97h1.149l.28-.704h1.52l.289.704h1.172l-1.679-3.97zm.072 2.417.444-1.158.439 1.158zm-.781 5.248h.482l.8 1.202h1.27l-.946-1.385c.492-.207.815-.613.815-1.22v-.01c0-.39-.12-.7-.352-.926-.265-.27-.685-.43-1.293-.43H7.046v3.966h1.1zm0-1.813h.718c.367 0 .594.159.594.472v.01c0 .29-.217.473-.589.473h-.723zm-1.54.453v-.01c0-.878-.646-1.394-1.65-1.394h-1.7v3.966h1.1v-1.134H4.9c.984 0 1.708-.492 1.708-1.428zm-1.1.048c0 .314-.236.516-.626.516h-.526v-1.046h.516c.396 0 .637.183.637.52zm6.788-1.457H11.19v3.966h1.104zm2.634 4.091c.695 0 1.341-.342 1.737-.916l.024-.034-.892-.613-.025.034a1.02 1.02 0 0 1-1.862-.574 1.02 1.02 0 0 1 1.023-1.018c.338 0 .651.164.84.444l.024.034.892-.613-.024-.034a2.103 2.103 0 0 0-1.737-.912 2.108 2.108 0 0 0-2.103 2.104c0 1.153.94 2.098 2.103 2.098zm3.295-1.056v-.666h1.906v-.791h-1.906v-.637h2.103v-.936h-3.193v3.966h3.218v-.936zM11.735 24l6.237-6.238H5.497z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/leaflet.svg b/assets/lib/simple-icons/icons/leaflet.svg
index 50c561db..35b9f3a6 100644
--- a/assets/lib/simple-icons/icons/leaflet.svg
+++ b/assets/lib/simple-icons/icons/leaflet.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Leaflet icon</title><path d="M17.69 0c-.355.574-8.432 4.74-10.856 8.649-2.424 3.91-3.116 6.988-2.237 9.882.879 2.893 2.559 2.763 3.516 3.717.958.954 2.257 2.113 4.332 1.645 2.717-.613 5.335-2.426 6.638-7.508 1.302-5.082.448-9.533-.103-11.99A35.395 35.395 0 0 0 17.69 0zm-.138.858l-9.22 21.585-.574-.577Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Leaflet</title><path d="M17.69 0c-.355.574-8.432 4.74-10.856 8.649-2.424 3.91-3.116 6.988-2.237 9.882.879 2.893 2.559 2.763 3.516 3.717.958.954 2.257 2.113 4.332 1.645 2.717-.613 5.335-2.426 6.638-7.508 1.302-5.082.448-9.533-.103-11.99A35.395 35.395 0 0 0 17.69 0zm-.138.858l-9.22 21.585-.574-.577Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/leanpub.svg b/assets/lib/simple-icons/icons/leanpub.svg
new file mode 100644
index 00000000..085f2b59
--- /dev/null
+++ b/assets/lib/simple-icons/icons/leanpub.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Leanpub</title><path d="M22.19 5.284c-.806-.454-2.93-1.478-5.652-1.478-2.445 0-3.837.751-4.538 1.234-.701-.483-2.093-1.235-4.538-1.235-2.723 0-4.846 1.025-5.651 1.479L0 20.194h.054a6.933 6.933 0 002.957-.673c1.032-.487 2.66-1.06 4.602-1.06 2.364 0 3.71 1.056 4.387 1.733.678-.677 2.023-1.732 4.387-1.732 1.943 0 3.57.572 4.602 1.06a6.933 6.933 0 002.957.672H24zM20.934 17.78a12.167 12.167 0 00-2.875-.801c-.558-.081-1.12-.122-1.674-.122-1.571 0-2.991.392-4.22 1.165l-.166.103-.165-.103c-1.23-.773-2.65-1.165-4.222-1.165-.552 0-1.115.04-1.673.122-.949.137-1.916.407-2.875.801l-1.218.501L3.3 6.321l.108-.048c1.225-.542 2.797-.865 4.205-.865 1.745 0 3.22.556 4.387 1.652 1.168-1.096 2.642-1.652 4.386-1.652 1.409 0 2.98.323 4.206.865l.108.048 1.453 11.961zm-4.085-1.328a11.99 11.99 0 00-.464-.009c-1.627 0-3.103.402-4.386 1.194-1.283-.792-2.759-1.194-4.387-1.194-.572 0-1.155.043-1.732.126-.983.143-1.983.421-2.973.829l-.565.232 1.34-11.025c1.159-.492 2.618-.783 3.93-.783 1.705 0 3.131.562 4.24 1.672L12 7.64l.146-.146c1.07-1.07 2.433-1.629 4.055-1.669z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/leetcode.svg b/assets/lib/simple-icons/icons/leetcode.svg
index 0d738d1a..4f4ba3cf 100644
--- a/assets/lib/simple-icons/icons/leetcode.svg
+++ b/assets/lib/simple-icons/icons/leetcode.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>LeetCode icon</title><path d="M16.102 17.93l-2.697 2.607c-.466.467-1.111.662-1.823.662s-1.357-.195-1.824-.662l-4.332-4.363c-.467-.467-.702-1.15-.702-1.863s.235-1.357.702-1.824l4.319-4.38c.467-.467 1.125-.645 1.837-.645s1.357.195 1.823.662l2.697 2.606c.514.515 1.365.497 1.9-.038.535-.536.553-1.387.039-1.901l-2.609-2.636a5.055 5.055 0 0 0-2.445-1.337l2.467-2.503c.516-.514.498-1.366-.037-1.901-.535-.535-1.387-.552-1.902-.038l-10.1 10.101c-.981.982-1.494 2.337-1.494 3.835 0 1.498.513 2.895 1.494 3.875l4.347 4.361c.981.979 2.337 1.452 3.834 1.452s2.853-.512 3.835-1.494l2.609-2.637c.514-.514.496-1.365-.039-1.9s-1.386-.553-1.899-.039zM20.811 13.01H10.666c-.702 0-1.27.604-1.27 1.346s.568 1.346 1.27 1.346h10.145c.701 0 1.27-.604 1.27-1.346s-.569-1.346-1.27-1.346z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>LeetCode</title><path d="M13.483 0a1.374 1.374 0 0 0-.961.438L7.116 6.226l-3.854 4.126a5.266 5.266 0 0 0-1.209 2.104 5.35 5.35 0 0 0-.125.513 5.527 5.527 0 0 0 .062 2.362 5.83 5.83 0 0 0 .349 1.017 5.938 5.938 0 0 0 1.271 1.818l4.277 4.193.039.038c2.248 2.165 5.852 2.133 8.063-.074l2.396-2.392c.54-.54.54-1.414.003-1.955a1.378 1.378 0 0 0-1.951-.003l-2.396 2.392a3.021 3.021 0 0 1-4.205.038l-.02-.019-4.276-4.193c-.652-.64-.972-1.469-.948-2.263a2.68 2.68 0 0 1 .066-.523 2.545 2.545 0 0 1 .619-1.164L9.13 8.114c1.058-1.134 3.204-1.27 4.43-.278l3.501 2.831c.593.48 1.461.387 1.94-.207a1.384 1.384 0 0 0-.207-1.943l-3.5-2.831c-.8-.647-1.766-1.045-2.774-1.202l2.015-2.158A1.384 1.384 0 0 0 13.483 0zm-2.866 12.815a1.38 1.38 0 0 0-1.38 1.382 1.38 1.38 0 0 0 1.38 1.382H20.79a1.38 1.38 0 0 0 1.38-1.382 1.38 1.38 0 0 0-1.38-1.382z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/lemmy.svg b/assets/lib/simple-icons/icons/lemmy.svg
new file mode 100644
index 00000000..95579546
--- /dev/null
+++ b/assets/lib/simple-icons/icons/lemmy.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Lemmy</title><path d="M2.9595 4.2228a3.9132 3.9132 0 0 0-.332.019c-.8781.1012-1.67.5699-2.155 1.3862-.475.8-.5922 1.6809-.35 2.4971.2421.8162.8297 1.5575 1.6982 2.1449.0053.0035.0106.0076.0163.0114.746.4498 1.492.7431 2.2877.8994-.02.3318-.0272.6689-.006 1.0181.0634 1.0432.4368 2.0006.996 2.8492l-2.0061.8189a.4163.4163 0 0 0-.2276.2239.416.416 0 0 0 .0879.455.415.415 0 0 0 .2941.1231.4156.4156 0 0 0 .1595-.0312l2.2093-.9035c.408.4859.8695.9315 1.3723 1.318.0196.0151.0407.0264.0603.0423l-1.2918 1.7103a.416.416 0 0 0 .664.501l1.314-1.7385c.7185.4548 1.4782.7927 2.2294 1.0242.3833.7209 1.1379 1.1871 2.0202 1.1871.8907 0 1.6442-.501 2.0242-1.2072.744-.2347 1.4959-.5729 2.2073-1.0262l1.332 1.7606a.4157.4157 0 0 0 .7439-.1936.4165.4165 0 0 0-.0799-.3074l-1.3099-1.7345c.0083-.0075.0178-.0113.0261-.0188.4968-.3803.9549-.8175 1.3622-1.2939l2.155.8794a.4156.4156 0 0 0 .5412-.2276.4151.4151 0 0 0-.2273-.5432l-1.9438-.7928c.577-.8538.9697-1.8183 1.0504-2.8693.0268-.3507.0242-.6914.0079-1.0262.7905-.1572 1.5321-.4502 2.2737-.8974.0053-.0033.011-.0076.0163-.0113.8684-.5874 1.456-1.3287 1.6982-2.145.2421-.8161.125-1.697-.3501-2.497-.4849-.8163-1.2768-1.2852-2.155-1.3863a3.2175 3.2175 0 0 0-.332-.0189c-.7852-.0151-1.6231.229-2.4286.6942-.5926.342-1.1252.867-1.5433 1.4387-1.1699-.6703-2.6923-1.0476-4.5635-1.0785a15.5768 15.5768 0 0 0-.5111 0c-2.085.034-3.7537.43-5.0142 1.1449-.0033-.0038-.0045-.0114-.008-.0152-.4233-.5916-.973-1.1365-1.5835-1.489-.8055-.465-1.6434-.7083-2.4286-.6941Zm.2858.7365c.5568.042 1.1696.2358 1.7787.5875.485.28.9757.7554 1.346 1.2696a5.6875 5.6875 0 0 0-.4969.4085c-.9201.8516-1.4615 1.9597-1.668 3.2335-.6809-.1402-1.3183-.3945-1.984-.7948-.7553-.5128-1.2159-1.1225-1.4004-1.7445-.1851-.624-.1074-1.2712.2776-1.9196.3743-.63.9275-.9534 1.6118-1.0322a2.796 2.796 0 0 1 .5352-.0076Zm17.5094 0a2.797 2.797 0 0 1 .5353.0075c.6842.0786 1.2374.4021 1.6117 1.0322.385.6484.4627 1.2957.2776 1.9196-.1845.622-.645 1.2317-1.4004 1.7445-.6578.3955-1.2881.6472-1.9598.7888-.1942-1.2968-.7375-2.4338-1.666-3.302a5.5639 5.5639 0 0 0-.4709-.3923c.3645-.49.8287-.9428 1.2938-1.2113.6091-.3515 1.2219-.5454 1.7787-.5875ZM12.006 6.0036a14.832 14.832 0 0 1 .487 0c2.3901.0393 4.0848.67 5.1631 1.678 1.1501 1.0754 1.6423 2.6006 1.499 4.467-.1311 1.7079-1.2203 3.2281-2.652 4.324-.694.5313-1.4626.9354-2.2254 1.2294.0031-.0453.014-.0888.014-.1349.0029-1.1964-.9313-2.2133-2.2918-2.2133-1.3606 0-2.3222 1.0154-2.2918 2.2213.0013.0507.014.0972.0181.1471-.781-.2933-1.5696-.7013-2.2777-1.2456-1.4239-1.0945-2.4997-2.6129-2.6037-4.322-.1129-1.8567.3778-3.3382 1.5212-4.3965C7.5094 6.7 9.352 6.047 12.006 6.0036Zm-3.6419 6.8291c-.6053 0-1.0966.4903-1.0966 1.0966 0 .6063.4913 1.0986 1.0966 1.0986s1.0966-.4923 1.0966-1.0986c0-.6063-.4913-1.0966-1.0966-1.0966zm7.2819.0113c-.5998 0-1.0866.4859-1.0866 1.0866s.4868 1.0885 1.0866 1.0885c.5997 0 1.0865-.4878 1.0865-1.0885s-.4868-1.0866-1.0865-1.0866zM12 16.0835c1.0237 0 1.5654.638 1.5634 1.4829-.0018.7849-.6723 1.485-1.5634 1.485-.9167 0-1.54-.5629-1.5634-1.493-.0212-.8347.5397-1.4749 1.5634-1.4749Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/lenovo.svg b/assets/lib/simple-icons/icons/lenovo.svg
index 8ecb1b4e..c03719a4 100644
--- a/assets/lib/simple-icons/icons/lenovo.svg
+++ b/assets/lib/simple-icons/icons/lenovo.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Lenovo icon</title><path d="M20.254 11.421a.81.81 0 00-.815.866.839.839 0 00.827.867.816.816 0 00.815-.867A.838.838 0 0020.254 11.421zM13.744 11.421a.81.81 0 00-.815.866.839.839 0 00.827.867.816.816 0 00.815-.867A.838.838 0 0013.744 11.421zM6.733 11.369a.786.786 0 00-.651.307.987.987 0 00-.171.736L7.388 11.8A.709.709 0 006.733 11.369z M0,8v8H24V8Zm5.006,5.827H2.227v-4h.857v3.224H5.006Zm1.817-.621a1.289,1.289,0,0,0,.884-.326l.534.411a2.025,2.025,0,0,1-1.431.588A1.594,1.594,0,1,1,6.717,10.7a1.543,1.543,0,0,1,1.216.5,1.671,1.671,0,0,1,.37.86l-2.162.9A.937.937,0,0,0,6.823,13.206Zm4.883.621h-.845V12.075a.679.679,0,0,0-.712-.651.66.66,0,0,0-.7.651v1.752H8.606V10.748h.846v.441h0a1.278,1.278,0,0,1,1-.493,1.185,1.185,0,0,1,1.25,1.222Zm1.984.052a1.593,1.593,0,1,1,1.66-1.592A1.6,1.6,0,0,1,13.69,13.879Zm2.8-.053-1.267-3.078h.966l.764,2.1.764-2.1h.966l-1.267,3.078Zm3.711.053a1.593,1.593,0,1,1,1.66-1.592A1.6,1.6,0,0,1,20.2,13.879Zm2-.418H22.06v.366h-.085v-.366h-.137v-.077H22.2Zm.541.366h-.082v-.315l-.137.213H22.51l-.136-.213v.315h-.082v-.443h.09l.134.21.134-.21h.088Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Lenovo</title><path d="M21.044 12.288c0 .5-.343.867-.815.867-.464 0-.827-.38-.827-.867 0-.51.343-.868.815-.868.464 0 .827.381.827.868zm-14.305-.92a.787.787 0 0 0-.651.307.991.991 0 0 0-.172.738l1.479-.614a.708.708 0 0 0-.656-.43zm6.963.052c-.472 0-.816.358-.816.868 0 .486.364.867.828.867.472 0 .815-.368.815-.867 0-.487-.363-.868-.827-.868zM24 7.997v8.006H0V7.997h24zM5.01 13.05H3.088V9.825H2.23v4.003h2.78v-.777zm1.137-.094l2.163-.897a1.667 1.667 0 0 0-.37-.86c-.284-.33-.704-.505-1.216-.505-.931 0-1.633.686-1.633 1.593 0 .93.704 1.593 1.726 1.593.572 0 1.158-.272 1.432-.589l-.535-.411c-.357.264-.56.326-.885.326-.292 0-.52-.09-.682-.25zm5.57-1.039c0-.709-.507-1.223-1.252-1.223a1.28 1.28 0 0 0-1.005.494v-.442h-.846v3.081h.846v-1.753c0-.316.245-.651.698-.651.35 0 .712.243.712.651v1.753h.847v-1.91zm3.647.37c0-.904-.725-1.593-1.65-1.593-.933 0-1.663.7-1.663 1.593 0 .903.726 1.592 1.651 1.592.932 0 1.662-.7 1.662-1.592zm2.066 1.54l1.268-3.081h-.967l-.765 2.099-.765-2.1h-.966l1.268 3.081h.927zm4.449-1.54c0-.904-.725-1.593-1.65-1.593-.932 0-1.662.7-1.662 1.593 0 .903.725 1.592 1.65 1.592.932 0 1.662-.7 1.662-1.592z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/lens.svg b/assets/lib/simple-icons/icons/lens.svg
new file mode 100644
index 00000000..87739f98
--- /dev/null
+++ b/assets/lib/simple-icons/icons/lens.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Lens</title><path d="M9.255 3.5H3.5v4.255l3.75 4.715ZM3.5 8.955v7.125h5.665ZM19.545 3.5H10.02L8.87 8.635Zm-.9 17H20.5v-8.4l-4.32-2.105Zm-5.79-12.95 7.645 3.72v-7.4ZM3.5 16.825V20.5h6.88l2.875-3.675zm7.83 3.675h6.545l-1.51-6.435zM0 0h24v24H0Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/lerna.svg b/assets/lib/simple-icons/icons/lerna.svg
new file mode 100644
index 00000000..4cc1e561
--- /dev/null
+++ b/assets/lib/simple-icons/icons/lerna.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Lerna</title><path d="M18.218 20.493c-.056 0-.061-.026-.015-.128.04-.088.04-.15.005-.18-.036-.036-.103-.026-.2.026a.707.707 0 01-.231.077c-.047 0-.14-.067-.211-.144a2.643 2.643 0 00-.365-.313 1.749 1.749 0 01-.374-.38 1.636 1.636 0 00-.247-.298c-.061-.057-.195-.087-.334-.087-.143 0-.267-.036-.328-.093-.098-.087-.103-.087-.072.144l.03.231-.148-.17a.48.48 0 01-.15-.364c0-.144.037-.226.124-.313.072-.067.16-.103.205-.088.057.021.083-.005.083-.097 0-.077-.031-.129-.077-.129-.052 0-.077-.05-.077-.174 0-.093-.026-.247-.057-.334-.03-.087-.077-.159-.097-.159-.026 0-.057.026-.077.051-.016.031-.057.041-.083.02-.03-.02-.036-.153-.015-.333.026-.205.015-.329-.026-.38-.036-.041-.097-.062-.143-.041-.067.026-.072 0-.047-.144.02-.097.047-.262.062-.364.026-.17.015-.195-.092-.216a4.475 4.475 0 00-.324-.056 2.61 2.61 0 01-.436-.113 3.828 3.828 0 01-.647-.36c-.226-.154-.447-.308-.483-.349-.036-.041-.082-.077-.108-.077-.026 0-.123.072-.22.16-.093.086-.19.22-.206.297-.02.077-.051.241-.072.37-.026.154-.062.23-.113.23-.041 0-.103-.081-.139-.179a1.773 1.773 0 01-.066-.436c0-.14-.052-.355-.103-.478a2.501 2.501 0 00-.21-.375.738.738 0 00-.242-.205c-.072-.026-.318-.052-.544-.057a3.849 3.849 0 00-.724.062c-.17.036-.385.118-.478.18l-.17.113.165.03c.087.02.22.031.288.031.082 0 .205.077.344.226.118.123.267.241.328.262.062.02.144.118.19.22.041.104.067.222.052.263-.026.061-.041.061-.124-.01a.318.318 0 00-.174-.083c-.062 0-.093.098-.139.406-.046.334-.046.442.016.616a1.8 1.8 0 00.246.437c.098.128.308.308.488.405.174.098.375.195.452.216.108.026.205-.005.431-.149.267-.164.313-.18.524-.139.138.026.267.088.318.154a.411.411 0 01.093.16c0 .025-.041.025-.098-.006a.458.458 0 00-.185-.05c-.046 0-.067.02-.051.05.015.031.072.052.123.052.051 0 .164.036.252.082.087.046.205.139.267.21.056.072.102.2.102.278 0 .077-.02.149-.046.149s-.056-.031-.072-.072c-.015-.041-.077-.098-.133-.129-.088-.046-.113-.036-.185.103-.062.118-.067.175-.026.226.031.036.052.18.041.313-.01.139-.046.252-.082.267-.036.01-.067-.02-.067-.072a.38.38 0 00-.046-.17c-.04-.066-.061-.06-.144.011a.367.367 0 01-.195.087.5.5 0 01-.226-.087 3.195 3.195 0 00-.451-.23 4.115 4.115 0 01-.596-.324c-.149-.103-.36-.2-.467-.21-.16-.021-.221-.006-.298.081a.408.408 0 01-.257.113c-.087 0-.128.016-.092.031.036.015.061.046.061.072 0 .026-.03.046-.072.046-.04 0-.128-.046-.205-.108-.108-.087-.134-.149-.134-.328 0-.134.031-.247.077-.288.057-.046.062-.082.026-.128-.03-.036-.051-.082-.046-.108a.415.415 0 000-.113c-.005-.046-.062-.062-.175-.051-.138.015-.17 0-.185-.093a.35.35 0 00-.077-.164.47.47 0 00-.19-.077 1.657 1.657 0 01-.24-.062c-.062-.02-.13-.082-.145-.133-.015-.057-.005-.134.031-.175.036-.04.093-.072.134-.072.04 0 .072-.04.072-.097 0-.052-.077-.154-.165-.221a.947.947 0 00-.467-.16 1.8 1.8 0 01-.39-.081c-.052-.026-.103-.036-.124-.016a.239.239 0 00-.03.123.64.64 0 01-.057.216.558.558 0 01-.23.216c-.093.051-.186.077-.206.061-.016-.015-.005-.077.025-.133a.473.473 0 00.057-.185c0-.046-.03-.082-.062-.082a.787.787 0 00-.215.077 1.042 1.042 0 01-.385.082 9.4 9.4 0 01-.53-.005c-.164-.005-.318.005-.349.02-.03.016-.05.108-.05.206 0 .103-.088.339-.211.58-.144.277-.283.462-.437.58-.123.098-.226.19-.226.206 0 .015.046.046.103.061.056.016.103.005.103-.02 0-.026.025-.046.056-.046.03 0 .139-.057.241-.129a.746.746 0 01.375-.128c.113 0 .242.04.324.108.082.061.133.159.133.23 0 .124 0 .124-.138.037l-.139-.093.036.129c.02.071.046.149.051.18.01.03.052.128.093.225.04.098.066.216.051.267a.367.367 0 01-.092.15c-.052.04-.077.015-.124-.109-.051-.154-.061-.159-.123-.072-.046.067-.108.088-.205.067-.118-.02-.139-.01-.129.082.005.062.005.15 0 .2-.005.052-.046.093-.107.093-.077 0-.103-.036-.103-.128 0-.072-.02-.129-.041-.129-.02 0-.067.026-.103.062-.046.046-.108.046-.267 0-.113-.036-.236-.103-.272-.149a1.749 1.749 0 00-.272-.247c-.175-.133-.226-.148-.334-.107a6.272 6.272 0 01-.74.123c-.58.056-.631.056-1.011-.046a8.018 8.018 0 01-.652-.2 2.732 2.732 0 01-.483-.257 1.525 1.525 0 01-.334-.303 7.145 7.145 0 01-.2-.319 2.198 2.198 0 01-.159-.36c-.041-.117-.046-.323-.015-.62.025-.298.087-.54.174-.735.072-.164.242-.416.37-.565.128-.148.231-.292.231-.318 0-.026.072-.072.154-.108.082-.036.154-.092.154-.133 0-.041.093-.103.205-.134.113-.036.232-.108.257-.164.036-.067.108-.103.206-.103.082 0 .2-.046.256-.102a.366.366 0 01.221-.103c.062 0 .15-.02.19-.046.051-.031-.067-.113-.431-.283a4.716 4.716 0 01-.868-.539 6.65 6.65 0 01-.555-.508l-.19-.21v.19a1.2 1.2 0 01-.061.359c-.036.092-.072.17-.093.17-.02 0-.128-.309-.246-.684-.17-.534-.216-.76-.216-1.037 0-.195.036-.534.077-.745.041-.21.108-.518.139-.677.036-.165.077-.298.098-.298.02 0 .056.03.077.061.02.036.056.329.077.658.02.344.066.667.113.775.046.103.164.257.261.35.103.086.344.24.54.338.195.098.4.241.457.324.056.082.123.21.138.292l.036.15-.144-.114c-.077-.061-.174-.113-.215-.113a.926.926 0 01-.272-.102.948.948 0 00-.293-.103c-.072 0-.046.04.087.154.098.082.421.277.719.431a10.7 10.7 0 001.155.493 9.3 9.3 0 01.796.308c.129.067.247.082.426.062.134-.016.257-.046.273-.072.015-.026.097-.046.18-.046.081 0 .148-.02.148-.052 0-.025.072-.05.16-.05.087 0 .195-.037.236-.083.056-.057.133-.072.251-.051.118.02.18.01.21-.042.021-.04.134-.087.247-.102.113-.016.221-.067.247-.113.025-.046.113-.077.22-.077.119 0 .18-.026.18-.072 0-.041.072-.087.165-.108.092-.02.205-.046.256-.056.052-.016.088-.057.088-.093s.036-.082.082-.097a.746.746 0 01.2-.031c.067 0 .18-.057.252-.129a.693.693 0 01.318-.159c.098-.02.18-.051.18-.072 0-.02-.124-.118-.272-.215a5.724 5.724 0 00-.617-.34c-.19-.087-.41-.164-.487-.164-.077 0-.226.021-.334.047a1.25 1.25 0 00-.324.133c-.118.077-.128.077-.159 0a.2.2 0 01.02-.17c.031-.045.144-.153.263-.235a.754.754 0 00.272-.34c.051-.159.046-.21-.057-.405a2.51 2.51 0 00-.339-.462 1.197 1.197 0 00-.523-.344 10.259 10.259 0 00-.54-.17.917.917 0 00-.513-.005c-.149.031-.334.093-.41.134-.13.066-.15.066-.175-.01-.021-.057.061-.17.256-.36.267-.257.293-.293.293-.508 0-.154-.03-.262-.092-.324-.067-.067-.252-.113-.673-.159a6.17 6.17 0 00-1.099-.036c-.288.02-.632.067-.765.108-.21.062-.241.062-.241 0 0-.041.046-.103.102-.139.057-.036.103-.082.103-.102 0-.021-.134-.042-.298-.042-.164 0-.55.026-.857.057-.314.03-.611.072-.668.098-.056.025-.21.066-.339.097-.128.03-.277.072-.328.093-.067.025-.083.015-.052-.026 0-.031.067-.082.129-.108.061-.026.215-.123.349-.22.19-.14.395-.211 1.027-.365a26.85 26.85 0 001.109-.293c.195-.062.339-.139.375-.2.046-.082.036-.108-.062-.144-.067-.026-.293-.026-.503-.01-.21.02-.416.025-.452.015-.036-.01-.062-.041-.062-.067 0-.025.052-.077.113-.123a.489.489 0 01.252-.082c.077 0 .195-.02.262-.046s.462-.062.873-.077c.416-.016.811-.057.883-.093.072-.03.123-.082.113-.113-.01-.03-.087-.092-.17-.143-.082-.052-.323-.119-.534-.15a8.003 8.003 0 01-.462-.082c-.051-.015-.015-.056.108-.118.103-.051.288-.097.41-.097.124 0 .345-.005.484-.005.143 0 .528.077.873.18.338.097.81.246 1.057.328.257.087.498.139.575.123.088-.015.134-.061.134-.123 0-.051-.072-.18-.164-.277a1.485 1.485 0 00-.411-.308c-.134-.067-.293-.124-.35-.124-.056 0-.102-.02-.102-.046s.026-.067.062-.087a.502.502 0 01.225-.03c.093.004.196-.027.226-.068.047-.056.041-.108-.02-.22-.041-.083-.185-.226-.318-.314-.134-.087-.309-.159-.386-.159-.082 0-.143-.02-.143-.046s.082-.077.18-.113c.097-.036.18-.087.18-.118s-.124-.17-.273-.308a4.473 4.473 0 00-.73-.519c-.25-.144-.461-.293-.477-.329-.01-.04.036-.061.139-.061.087 0 .467.139.837.303.37.164.862.405 1.088.529.226.123.77.441 1.207.703.437.262 1.238.78 1.772 1.145s1.14.801 1.34.966c.2.164.508.457.688.647.174.19.375.462.441.606.088.19.108.297.083.405-.02.082-.077.175-.124.2-.066.041-.113.026-.215-.066-.098-.093-.129-.103-.129-.047 0 .042.124.144.267.226.15.083.39.221.534.319l.267.17.083-.114a.41.41 0 00.082-.18c0-.035.03-.066.072-.066.04 0 .087.036.102.082.016.046.031.154.031.241 0 .088-.02.195-.051.242-.031.05-.026.113.02.18.036.056.088.184.108.282.02.097.139.328.262.513s.344.457.488.601c.149.149.395.334.554.406.16.077.437.19.622.251.272.093.349.103.41.052a.77.77 0 01.165-.098c.061-.02.092 0 .103.082.01.072.056.118.133.129.072.01.113-.01.113-.052 0-.036.067-.108.149-.154.082-.046.16-.072.174-.056.016.015.016.061.006.097a.088.088 0 00.03.103c.031.02.103-.005.16-.057.066-.061.082-.107.046-.143-.031-.031-.052-.067-.052-.088 0-.02.047-.046.103-.061a.137.137 0 00.103-.134c0-.072-.031-.108-.103-.108-.056 0-.103-.02-.103-.05 0-.032.021-.052.047-.052.025 0 .061-.036.077-.077.015-.046-.02-.129-.083-.19a.53.53 0 00-.24-.129 4.403 4.403 0 01-.309-.036 9.864 9.864 0 01-.76-.123.97.97 0 01-.251-.077c-.016-.015-.067-.01-.113.016-.057.03-.119.02-.185-.026a.383.383 0 00-.185-.072.227.227 0 01-.15-.072c-.035-.041-.092-.062-.122-.051-.031.01-.108-.02-.16-.082-.05-.057-.123-.103-.154-.103-.03 0-.118-.062-.184-.144a2.62 2.62 0 01-.242-.339 1.144 1.144 0 01-.133-.513c-.016-.257.005-.365.118-.59.072-.155.164-.288.2-.304.036-.015.067-.066.067-.113 0-.051.062-.118.144-.159.123-.061.128-.072.04-.087a2.153 2.153 0 01-.328-.129c-.123-.061-.236-.138-.251-.174-.016-.036-.057-.067-.093-.067s-.092-.072-.128-.154c-.036-.087-.082-.154-.108-.154-.026 0-.057.02-.072.051-.015.026-.067.052-.113.052-.062 0-.067-.016-.02-.072.035-.041.046-.129.025-.206-.02-.071-.056-.133-.082-.133-.026 0-.046.026-.046.056 0 .031-.02.042-.052.021-.03-.015-.04-.164-.025-.329l.025-.297-.164-.026a.448.448 0 00-.257.026.156.156 0 01-.174-.016.494.494 0 00-.236-.072c-.088 0-.165-.03-.175-.061-.01-.031.051-.072.134-.088.082-.015.328-.118.549-.22.308-.15.375-.2.298-.226a.264.264 0 00-.165-.01c-.035.015-.061 0-.061-.026s.036-.077.077-.113c.04-.036.097-.052.123-.031.026.015.036-.03.02-.098-.015-.072 0-.128.031-.128s.067.02.088.051c.015.031.087.052.149.052.066 0 .205-.057.308-.129.102-.072.22-.128.262-.128.04 0 .077.041.077.087 0 .072.015.072.113-.02.061-.057.19-.144.277-.19a.756.756 0 01.236-.082c.041 0 .103-.036.139-.078a.56.56 0 01.236-.123.677.677 0 01.277-.02c.057.015.103.046.103.072 0 .025-.062.071-.139.107-.123.057-.138.098-.144.34-.005.174-.04.302-.092.359-.056.056-.087.067-.087.02 0-.036-.02-.051-.052-.036-.025.016-.05.098-.05.18 0 .118.03.16.127.185a.506.506 0 00.216 0c.077-.03.077-.041-.01-.103-.093-.067-.093-.072-.005-.108a.71.71 0 01.282-.005c.108.016.303.046.437.062.236.03.241.036.159.128a.57.57 0 01-.262.129.642.642 0 00-.277.138c-.088.093-.098.093-.098.02 0-.045-.015-.086-.041-.086a.431.431 0 00-.139.077.293.293 0 01-.215.046c-.093-.02-.118-.01-.118.056 0 .046.02.072.05.057.027-.016.068.01.093.061.026.052.041.19.036.308-.005.119-.036.252-.072.298-.036.041-.092.077-.123.077-.03 0-.092-.046-.133-.102-.041-.057-.108-.103-.154-.103a.403.403 0 01-.18-.077c-.077-.062-.108-.062-.139-.01a.301.301 0 00-.04.102c0 .02.071.118.158.221.088.103.231.22.314.262.082.041.184.067.226.051.05-.02.066-.066.04-.138-.025-.088-.015-.103.062-.088.052.01.093.047.082.077-.005.031.02.052.062.047a.467.467 0 00.19-.124c.067-.061.19-.18.277-.267.088-.087.185-.154.216-.154.03 0 .077-.046.108-.102a.216.216 0 01.17-.103c.066 0 .158-.036.215-.077a.406.406 0 01.2-.077.389.389 0 00.2-.077c.098-.072.098-.077 0-.103a1.012 1.012 0 01-.19-.082c-.05-.026-.118-.036-.154-.02-.036.015-.015-.006.036-.052.057-.046.129-.082.165-.082a.13.13 0 00.097-.057c.02-.03-.01-.102-.061-.159-.093-.102-.093-.108.061-.072.087.02.216.01.288-.015.097-.036.154-.118.215-.308.047-.144.108-.272.139-.293.03-.015.077-.005.108.026.03.03.072.056.092.056.02 0 .19-.149.38-.328.19-.18.406-.355.483-.38.077-.026.17-.031.205-.005.052.03.031.072-.077.164-.102.087-.133.144-.097.195.025.041.072.149.108.241a.526.526 0 01.01.344c-.026.098-.072.19-.098.206-.025.015-.051-.016-.051-.072 0-.057-.02-.118-.046-.134-.026-.015-.036.01-.026.062a.269.269 0 01-.056.195c-.072.093-.077.093-.083.01 0-.05-.025-.087-.05-.087-.032 0-.052.057-.052.123 0 .067.036.14.082.154.046.016.195.031.329.031.133 0 .261-.02.277-.046.015-.026 0-.062-.036-.072-.046-.02-.041-.04.02-.082.047-.03.18-.149.298-.262.15-.144.257-.205.365-.205.082 0 .149.015.149.03 0 .016-.057.078-.129.134-.097.077-.128.149-.128.308a.874.874 0 01-.051.303c-.031.057-.077.098-.103.098-.026 0-.051-.036-.051-.077s-.021-.077-.042-.077c-.02 0-.097.056-.164.128-.067.072-.17.128-.226.128-.082 0-.092.016-.04.062.035.036.06.123.06.195 0 .072.037.18.078.236a.397.397 0 01.077.17c0 .051-.036.061-.139.036a1.94 1.94 0 01-.195-.052l-.154-.056c-.056-.02-.205-.082-.329-.134-.138-.056-.277-.082-.359-.061a.928.928 0 00-.293.149c-.087.061-.344.164-.57.226-.226.061-.477.154-.565.21l-.148.098h.205a.871.871 0 00.375-.103.858.858 0 01.447-.103c.154 0 .287.02.302.046.016.026-.03.072-.102.103-.108.046-.123.087-.103.2.015.077.041.237.062.355a.927.927 0 010 .318c-.02.057-.057.103-.082.103-.026 0-.067-.052-.093-.113-.041-.108-.041-.108-.067.026-.015.092 0 .154.052.184.046.026.138.01.236-.036.087-.04.236-.138.334-.205.154-.118.164-.133.082-.195-.046-.036-.072-.087-.052-.123.021-.031 0-.108-.04-.17a.611.611 0 01-.062-.308c.005-.108.025-.21.046-.226.02-.02.092.041.17.129.071.087.153.164.174.164.02 0 .051-.062.072-.139l.036-.138.097.159a.79.79 0 00.154.195c.031.02.134-.015.221-.082.088-.067.2-.118.247-.113.046.005.149-.062.23-.144.078-.082.196-.149.263-.149a.698.698 0 00.287-.103.826.826 0 01.36-.102c.108 0 .195.02.195.051 0 .03-.036.051-.077.051s-.144.062-.231.144c-.154.139-.154.144-.082.344.04.113.077.257.077.319 0 .061-.01.148-.031.19-.016.046-.062.082-.103.082a.078.078 0 01-.077-.062c0-.036-.026-.015-.046.041a.746.746 0 00-.046.164c0 .036.046.062.113.062.061 0 .256.01.42.02l.309.021-.195-.077c-.108-.04-.19-.097-.19-.123 0-.026.03-.046.066-.051.036-.006.103 0 .144 0a.584.584 0 00.22-.047l.14-.051-.196-.175c-.107-.097-.174-.195-.154-.21.02-.02.129 0 .247.046.113.046.226.082.251.082.026 0 .134-.072.242-.159.108-.087.246-.246.303-.35a2.28 2.28 0 01.339-.43c.128-.134.272-.242.318-.242.046 0 .082.016.082.031a.646.646 0 01-.103.16.487.487 0 00-.102.2c0 .035.02.071.051.071.026 0 .118.098.206.21.087.119.154.268.154.335 0 .066-.021.118-.047.118-.025 0-.056-.02-.061-.046-.01-.026-.093-.062-.185-.083-.144-.03-.17-.02-.17.062 0 .077.057.113.237.154a.89.89 0 00.4.01.65.65 0 00.262-.149c.092-.102.092-.102-.015-.133-.062-.015-.113-.062-.113-.098 0-.036.04-.082.097-.097.052-.016.19-.123.303-.236.113-.113.247-.206.288-.206.046 0 .082.005.082.016 0 .01-.046.107-.103.215a1.027 1.027 0 00-.103.396c0 .159-.02.195-.102.195-.057 0-.118.03-.144.072-.02.04-.123.118-.22.18a.704.704 0 01-.299.107c-.071 0-.113.026-.097.067a.334.334 0 01-.02.18c-.037.097-.026.113.071.113.082 0 .134.046.175.143.051.134.056.134.061.021.006-.067-.05-.175-.128-.246-.092-.088-.113-.129-.056-.129.04 0 .102.03.133.067.03.036.092.164.134.282.071.206.071.216-.026.216a.55.55 0 01-.241-.092c-.113-.072-.247-.088-.704-.088-.442 0-.606.02-.744.098a1.582 1.582 0 01-.478.118c-.277.026-.298.036-.22.108.06.061.092.066.122.02.031-.051.083-.051.242.01.113.042.267.088.344.103.077.016.138.052.138.077 0 .026-.133.082-.297.129-.165.04-.36.097-.437.123-.077.026-.149.03-.164.01-.01-.02-.005-.067.02-.108.031-.051-.005-.108-.118-.19a8.266 8.266 0 00-.354-.246c-.108-.072-.216-.129-.246-.129-.031 0-.052.031-.052.067a.44.44 0 00.077.175c.052.072.113.103.18.082.087-.02.113.01.164.205.057.2.087.242.257.298.108.036.195.082.195.098 0 .02.118.061.262.092.144.031.339.062.431.062.098 0 .185-.02.2-.046.016-.026 0-.057-.03-.067-.031-.01-.041-.046-.02-.082.02-.036.133-.057.25-.057.119.005.304-.03.412-.082.154-.067.23-.072.354-.03.087.03.21.056.272.056.067 0 .149.046.19.102.062.088.103.098.324.057.138-.026.277-.051.302-.062.031-.01.144 0 .257.02l.35.068c.076.015.138.046.138.066 0 .02-.092.067-.205.103-.15.046-.206.087-.206.16 0 .056-.072.179-.159.282-.087.097-.185.18-.21.18-.026 0-.042-.047-.026-.103.026-.103.026-.103-.129-.01l-.154.092.17.144c.097.082.23.143.313.143a.56.56 0 00.241-.051c.067-.036.088-.087.067-.195-.025-.129-.02-.134.057-.072.046.041.22.087.38.103.195.02.292.056.292.102 0 .036-.092.103-.2.139a1.53 1.53 0 00-.354.18c-.123.092-.16.097-.195.04-.036-.056-.062-.056-.15-.004a.575.575 0 01-.256.066c-.103 0-.22-.056-.354-.18-.108-.097-.247-.179-.308-.179-.077 0-.098.026-.077.077.015.046.092.077.174.077.113 0 .154.026.17.113.015.062.036.195.051.298.015.097.005.21-.02.251-.037.057-.098.036-.309-.128-.143-.108-.262-.216-.262-.236 0-.02-.082-.051-.18-.072a.69.69 0 01-.297-.154c-.067-.067-.154-.164-.2-.216-.062-.072-.18-.102-.488-.128a3.359 3.359 0 01-.704-.134 6.591 6.591 0 01-.77-.354c-.257-.139-.57-.267-.693-.287a1.181 1.181 0 00-.426.02c-.118.03-.195.082-.185.113.01.03.18.098.375.144.195.046.493.123.662.174.17.052.334.118.37.144.036.026.087.031.113.016.03-.016.103-.006.17.03a.498.498 0 00.158.067c.026 0 .072.041.108.093.036.05.103.092.15.092.045 0 .097.056.112.128.016.072.067.129.103.129.04 0 .072.046.072.097 0 .052.036.113.082.129.056.02.077.072.056.164-.015.087 0 .144.052.16.051.02.061.071.046.148-.015.067-.01.123.02.123.031 0 .052.057.052.129 0 .072.02.128.046.128s.03.057.02.128c-.015.077 0 .129.031.129s.057.072.057.154c0 .108.026.154.082.154.046 0 .092.046.108.103a.142.142 0 00.128.102.492.492 0 00.2-.056c.098-.052.098-.057-.005-.185-.056-.072-.097-.144-.082-.154.01-.01.067.005.123.03.057.032.17.057.247.057.082 0 .22-.046.313-.103a.698.698 0 01.288-.102c.066 0 .19-.036.277-.077a.81.81 0 00.216-.15.622.622 0 01.236-.128c.128-.04.2-.04.277 0 .057.031.093.078.077.108-.015.026-.072.052-.123.052a.228.228 0 00-.154.072c-.046.05-.041.087.015.133a.621.621 0 01.134.236c.04.123.04.2.005.267-.03.052-.057.072-.057.041 0-.025-.036-.005-.077.052-.077.097-.077.097-.133.005-.046-.077-.067-.082-.103-.026a.335.335 0 00-.046.149c0 .057.092.098.308.144.231.046.334.051.416.005.056-.03.118-.046.133-.03.016.015-.025.05-.087.086a.594.594 0 01-.313.036c-.17-.02-.19-.015-.139.047.031.04.139.071.231.071.119 0 .221-.046.34-.154.092-.082.133-.143.087-.123a.14.14 0 01-.139-.04c-.046-.057-.005-.109.2-.263.144-.102.293-.205.334-.22.041-.016.077-.016.077-.006 0 .016-.036.093-.077.175a.752.752 0 00-.077.282c0 .072-.03.165-.072.195-.056.047-.077.047-.097-.005-.016-.046-.057-.036-.15.047a1.032 1.032 0 01-.277.169c-.154.051-.154.056-.154.431 0 .21-.015.4-.04.421-.026.026-.093-.015-.155-.087a.914.914 0 00-.313-.2 3.411 3.411 0 01-.437-.216 1.633 1.633 0 00-.441-.18c-.195-.03-.21-.025-.241.098-.021.087-.057.123-.108.103-.041-.016-.165.04-.267.123a1.22 1.22 0 01-.329.185c-.072.015-.149.015-.164 0-.02-.02.061-.113.174-.21.113-.098.206-.196.206-.222 0-.025-.036-.046-.077-.046s-.077-.025-.077-.056c0-.036-.057-.041-.165-.02a2.27 2.27 0 01-.446.025c-.154-.005-.303-.03-.324-.051-.02-.021.077-.052.22-.067.145-.016.273-.036.288-.052.016-.015-.05-.159-.148-.318a4.086 4.086 0 01-.314-.673c-.077-.21-.154-.37-.174-.359-.02.01-.052.092-.067.175-.02.092-.17.303-.375.518-.19.2-.405.396-.477.437a1.17 1.17 0 00-.252.185c-.108.102-.118.143-.087.37.02.153.01.328-.026.44a2.233 2.233 0 01-.21.412 1.4 1.4 0 00-.206.544c-.051.313-.046.334.123.703.098.21.231.545.298.74.067.195.16.416.206.488.046.071.128.21.174.308.052.113.206.262.411.4.2.134.385.221.483.226a.622.622 0 00.287-.082.57.57 0 01.252-.087c.077 0 .236.102.436.287.257.236.313.319.313.452 0 .087-.02.195-.046.236-.025.041-.056.067-.066.052a1.827 1.827 0 01-.083-.18l-.061-.154-.103.139c-.056.077-.149.138-.205.138-.088 0-.098.02-.072.144.02.077.046.205.061.282.016.077 0 .175-.036.216-.035.041-.092.077-.128.077-.036 0-.077-.051-.087-.113-.01-.072-.046-.108-.093-.092-.04.01-.149.03-.236.04-.144.021-.22-.025-.631-.374-.257-.22-.483-.431-.499-.467-.015-.036-.05-.072-.087-.072-.036 0-.149-.062-.257-.134-.154-.102-.21-.118-.267-.072-.04.036-.118.052-.174.036-.057-.015-.103-.01-.103.01 0 .021.026.062.062.098.046.046.036.062-.046.062a.442.442 0 01-.226-.093c-.093-.072-.108-.123-.083-.23a.694.694 0 01.134-.242.41.41 0 01.257-.103c.097 0 .144-.02.123-.056-.02-.031-.067-.041-.103-.031-.036.015-.097-.005-.128-.046a.207.207 0 00-.149-.072c-.051 0-.103-.067-.134-.165-.04-.128-.077-.164-.18-.164-.117 0-.128-.02-.128-.23 0-.196-.015-.232-.102-.232-.077 0-.103-.036-.103-.154 0-.103-.03-.16-.087-.17-.067-.01-.093.042-.118.221-.02.129-.01.488.025.796.031.308.103.663.154.78.057.134.19.293.34.412.148.118.302.19.39.19.076 0 .22-.036.318-.083.164-.077.195-.077.441.005.175.062.283.129.309.2a.207.207 0 00.164.124.407.407 0 01.236.144.48.48 0 01.113.246.45.45 0 01-.082.226c-.046.062-.103.113-.129.113-.025 0-.046-.056-.046-.123s-.04-.139-.087-.16c-.051-.02-.098-.01-.108.021a.58.58 0 01-.097.139c-.057.056-.134.072-.252.051-.154-.025-.164-.02-.118.067.03.051.051.154.051.22a.51.51 0 01-.108.263c-.056.072-.138.133-.18.133zm-.257-.36c.016 0 .026-.01.026-.025 0-.015-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .015.01.026.025.026zm.422-.118c.015-.05-.01-.133-.057-.184-.046-.052-.067-.103-.051-.118.015-.016-.02-.057-.082-.088-.088-.046-.134-.04-.237.02-.066.047-.123.103-.123.124 0 .02.057.067.123.098.108.05.129.04.16-.047.03-.097.035-.097.133.026.056.067.103.154.103.195.005.036.015.026.03-.026zm-.345.016c.036 0 .052-.016.036-.036-.02-.02-.05-.02-.066 0-.02.02-.005.036.03.036zm-.77-.257c.036 0 .052-.015.036-.036-.02-.02-.051-.02-.067 0-.02.02-.005.036.031.036zm.462 0c.016 0 .067-.046.118-.103a.49.49 0 00.088-.128c0-.015-.057-.026-.123-.026a.271.271 0 00-.19.083c-.057.066-.057.087.005.128.046.02.087.046.102.046zm-.693-.154c.016 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025-.015 0-.025.01-.025.025 0 .016.01.026.025.026zm.416 0a.568.568 0 00.123-.051c.052-.026.098-.077.098-.103 0-.026-.057-.051-.123-.051-.067 0-.139.02-.16.051a.12.12 0 000 .103c.021.025.047.051.062.051zm1.802-.103c.016-.087-.01-.154-.092-.22-.062-.052-.139-.088-.164-.077a.093.093 0 00-.057.066c-.005.026.041.057.108.067.062.01.118.036.123.067.005.026.01.072.02.097.006.026.021.067.026.088.01.02.026-.016.036-.088zm-.528.047c.056 0 .082-.01.066-.026-.015-.015-.061-.02-.097-.005-.041.015-.026.03.03.03zm-.432-.047c.036 0 .052-.015.036-.036-.02-.02-.051-.02-.067 0-.02.021-.005.036.031.036zm-1.006-.05c.036 0 .092-.032.123-.068.03-.036.041-.082.026-.102-.02-.02-.077-.036-.124-.036-.046 0-.107.02-.123.051a.12.12 0 000 .103.131.131 0 00.098.051zm1.468 0c.088 0 .108-.027.093-.145-.01-.082-.046-.138-.093-.138-.046 0-.082.056-.092.143-.015.113.005.14.092.14zm-.508-.052c.02 0 .051-.036.067-.082a.802.802 0 00.03-.103c0-.01-.046-.02-.102-.02-.057 0-.103.03-.103.066 0 .036.016.082.036.103.016.02.046.036.072.036zm.22 0c.098 0 .134-.026.134-.103 0-.067-.036-.103-.102-.103-.057 0-.103.01-.103.02 0 .011-.015.057-.03.104-.027.061 0 .082.102.082zm-1.586-.052c.01 0 .005-.036-.01-.077-.016-.04-.041-.066-.057-.056-.015.015-.01.051.01.077.021.03.047.056.057.056zm1.155 0c.026 0 .047-.046.047-.102 0-.057-.02-.103-.047-.103-.025 0-.061.02-.082.051a.12.12 0 000 .103c.02.026.057.051.082.051zm2.321-.005c.02 0 .041-.046.041-.102a.747.747 0 00-.077-.257c-.04-.082-.112-.154-.154-.154a.13.13 0 00-.107.077c-.016.04-.016.092 0 .108.015.015.066 0 .107-.036.052-.041.077-.047.077-.01 0 .03-.02.066-.05.087-.032.02-.016.082.04.154.046.077.103.133.123.133zm-3.204-.102c.098-.062.098-.077.031-.211-.072-.133-.067-.144.026-.144.056 0 .113-.02.128-.046.016-.026 0-.067-.03-.087-.037-.02-.073-.01-.083.02-.01.031-.056.062-.097.062-.052 0-.067-.03-.047-.103.016-.056.01-.144-.02-.19-.031-.046-.057-.067-.062-.04-.005.025-.01.112-.02.194-.005.077.01.144.04.144.032 0 .032.02-.01.041-.05.036-.05.057.01.108.052.041.068.108.047.195-.015.113-.01.118.087.057zm-.118-.509c-.015 0-.025-.01-.025-.025 0-.016.01-.026.025-.026.016 0 .026.01.026.026 0 .015-.01.025-.026.025zm-11.08.493c.015-.015.01-.087-.006-.159-.02-.072-.051-.134-.077-.134-.026 0-.056.036-.077.083-.015.04-.01.066.015.051.026-.015.062.02.083.077.02.062.046.098.061.082zm11.845.005a.133.133 0 00.072-.077c.01-.036-.026-.061-.087-.061-.057 0-.108.02-.108.04a.12.12 0 00.036.078c.015.02.056.03.087.02zm-.873-.036c.01 0 .047-.036.083-.077.035-.046.04-.077.01-.077-.031 0-.067.036-.082.077-.016.041-.02.077-.01.077zm.611-.046c.062-.02.118-.067.129-.103.015-.04-.02-.056-.098-.046-.061.01-.123.057-.128.103-.01.067.01.077.097.046zm-4.133-.03c.01-.011.01-.078-.005-.14-.016-.066-.108-.205-.206-.307-.097-.103-.19-.175-.205-.16-.02.02-.03.077-.03.134 0 .067.025.092.076.072.046-.02.093.005.113.056.02.052.077.154.134.231.056.077.107.129.123.113zm-7.903-.052c.072 0 .129-.026.118-.051-.005-.026-.066-.052-.133-.052s-.118.02-.118.052c0 .03.061.056.133.05zm.057-.026c-.036 0-.052-.015-.036-.036.02-.02.051-.02.067 0 .02.02.005.036-.031.036zm7.348.041a.276.276 0 00.164-.102c.036-.057.036-.108.005-.139a.473.473 0 00-.19-.082c-.108-.026-.144-.016-.144.04 0 .057.042.068.134.052.092-.02.123-.01.097.031-.02.03-.005.062.031.062.047 0 .047.015-.01.051-.056.036-.087.026-.113-.041-.02-.051-.036-.062-.041-.02 0 .035-.026.05-.051.035-.026-.015-.067 0-.088.031-.025.036-.015.046.02.026.032-.02.063-.01.063.02.015.026.061.047.123.036zm3.98.01c.01 0 .02-.01.02-.02a.352.352 0 00-.093-.092c-.082-.062-.082-.062-.02.02a.352.352 0 00.092.093zm1.458-.02c.082-.005.154-.015.154-.03a.31.31 0 00-.072-.114c-.041-.046-.082-.087-.103-.087-.02 0-.03.041-.036.092 0 .067-.01.072-.041.026-.02-.036-.082-.051-.128-.03-.047.02-.088.056-.088.081 0 .031.036.036.077.021.041-.015.077-.01.077.01s.072.036.16.031zm-13.069-.03c.016 0 .026-.011.026-.026 0-.016-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .015.01.025.025.025zm10.419 0c.01 0 .03-.057.041-.124a.301.301 0 00-.02-.195c-.026-.041-.042 0-.042.123 0 .108.01.195.021.195zm1.68-.011c.035-.01.076-.062.086-.113.01-.056-.005-.082-.051-.067-.036.01-.077.062-.087.113-.01.057.01.082.051.067zm.559.01c.036 0 .051-.015.036-.036-.02-.02-.052-.02-.067 0-.02.02-.005.036.03.036zm-11.338-.051c.02 0 .041-.02.041-.046a.84.84 0 00-.056-.19c-.047-.129-.062-.134-.103-.057-.036.062-.03.123.015.195.036.052.083.098.103.098zm-.087-.154c-.016 0-.026-.01-.026-.026 0-.015.01-.025.026-.025.015 0 .025.01.025.025 0 .016-.01.026-.025.026zm12.123.154c.041 0 .062-.02.046-.051-.015-.031-.066-.052-.108-.052-.04 0-.061.02-.046.052.016.025.067.05.108.05zm-13.35-.051c.01 0 .02-.01.02-.021a.352.352 0 00-.092-.092c-.082-.062-.082-.062-.02.02a.352.352 0 00.092.093zm.564-.067c.088-.041.108-.072.067-.118-.03-.036-.097-.052-.154-.036-.056.015-.118.051-.133.077-.016.03 0 .072.036.092.035.026.118.016.184-.015zm.329.067c.036 0 .051-.016.036-.036-.02-.02-.051-.02-.067 0-.02.02-.01.036.031.036zm6.496 0c.015 0 .025-.01.025-.026 0-.015-.01-.026-.025-.026-.016 0-.026.01-.026.026 0 .015.01.026.026.026zm7.163-.036c.056-.016.097-.057.097-.098a.07.07 0 00-.072-.072.197.197 0 00-.128.067c-.03.036-.046.082-.03.097.02.016.081.021.133.006zm-14.3-.036c0-.005.03-.047.071-.098.062-.082.057-.092-.067-.092-.082 0-.133.03-.133.072 0 .04.03.082.061.097.036.016.067.026.067.02zm6.983.02c.01 0 .02-.01.02-.02s-.026-.041-.062-.062c-.035-.02-.046-.015-.02.02.026.037.051.062.062.062zm.169-.077c.01-.01.005-.04-.015-.072-.021-.03-.083-.051-.15-.051-.107 0-.107.005.016.072.072.036.139.061.149.051zm-9.54-.025c.056 0 .097-.021.097-.042 0-.025-.062-.071-.133-.102-.093-.041-.129-.088-.108-.16.015-.066-.005-.102-.082-.123-.057-.015-.124-.015-.15 0-.025.016-.04.057-.04.098s.071.128.159.2c.087.072.205.129.256.129zm.41 0a.117.117 0 00.062-.031c.02-.02-.016-.067-.072-.108-.057-.041-.098-.103-.087-.134.01-.03-.016-.082-.057-.113-.04-.03-.128-.046-.195-.03-.082.015-.118.056-.118.133.005.108.005.108.046.005.041-.097.046-.097.046.016 0 .082.057.138.17.19.103.036.19.072.205.072zm1.417 0c.01 0 .026-.021.042-.047.015-.025.01-.061-.016-.077-.026-.015-.04.005-.04.047 0 .046.004.077.014.077zm1.253-.01c.098 0 .139-.011.088-.026a.528.528 0 00-.18 0c-.046.015-.01.025.092.025zm6.136.01c.016 0 .026-.01.026-.026s-.01-.026-.026-.026c-.015 0-.025.01-.025.026 0 .015.01.026.025.026zm3.6-.016c.02-.02.02-.051 0-.067-.02-.015-.036-.005-.036.036.005.031.02.047.036.031zm3.625.016c.077 0 .139-.021.139-.047 0-.025-.026-.061-.057-.082-.03-.02-.092 0-.138.046-.072.077-.072.083.056.083zm-14.285-.052c.026 0 .062-.025.077-.056.02-.031.02-.067.005-.082-.015-.016-.067-.016-.113.005-.046.015-.066.056-.051.082.02.03.056.051.082.051zm6.906 0c.016 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .015.01.025.025.025zm8.416-.072a.44.44 0 00.083-.241c0-.082-.026-.144-.067-.144a.213.213 0 00-.129.062.24.24 0 00-.061.149c0 .046.036.102.082.118.046.015.067.061.046.097-.02.031 0 .01.046-.04zm-17.91.02c.051 0 .046-.03-.03-.112a.444.444 0 01-.103-.154c0-.02.025-.041.056-.041.03 0 .041-.02.02-.052-.015-.03.016-.051.078-.051.061 0 .092-.02.077-.051-.02-.036-.067-.036-.134 0a.393.393 0 01-.215.036.98.98 0 01-.226-.077.457.457 0 00-.16-.062c-.025 0-.046.036-.046.077s.026.072.057.072a.582.582 0 01.133 0c.041.005.103.067.139.139.056.128.056.133-.062.102-.072-.015-.128-.02-.128-.01s.072.046.154.077c.092.03.144.036.123.005-.015-.026-.01-.051.016-.051.025 0 .077.036.112.077.036.04.098.077.14.077zm1.258-.004c.103 0 .231-.01.277-.031.083-.03.083-.036-.01-.072-.067-.026-.005-.041.175-.041.149 0 .262-.026.246-.051-.015-.026.052-.062.15-.077.097-.021.19-.057.21-.083.015-.025-.026-.05-.098-.05-.087 0-.16-.047-.22-.155-.052-.082-.109-.154-.134-.154-.026 0-.031.062-.016.139.016.077.01.159-.005.184-.015.026-.051.021-.072-.02-.036-.057-.046-.051-.046.015 0 .047.026.098.062.113.036.016.02.026-.031.016-.051-.005-.118-.067-.139-.129-.036-.097-.02-.128.072-.17.098-.045.093-.045-.04-.02-.114.02-.134.016-.078-.02.041-.026.062-.067.041-.082-.02-.02-.056-.02-.087 0a.152.152 0 00-.057.113c0 .066-.015.066-.077.02-.061-.051-.097-.046-.195.026-.113.082-.113.087-.005.051a.635.635 0 01.241 0c.072.02.134.057.134.082 0 .026-.051.036-.118.016-.082-.026-.098-.02-.046.015.04.026.056.087.04.134-.015.046-.06.087-.102.087-.041 0-.077-.02-.077-.051 0-.026.036-.036.077-.02.041.014.077.004.077-.027 0-.03-.087-.056-.195-.056a.53.53 0 00-.282.072c-.052.036-.093.082-.093.102 0 .021.051.057.113.083.067.02.205.046.308.04zm.663-.509c-.036 0-.052-.015-.036-.036.02-.02.051-.02.066 0 .02.021.006.036-.03.036zm1.463.514a.07.07 0 00.072-.072c0-.041.026-.092.056-.108.036-.026.047 0 .02.072-.02.072-.01.108.027.108.036 0 .092-.041.128-.093a.584.584 0 00.072-.123c0-.02-.093-.03-.206-.02-.113.005-.23.036-.261.066-.031.031-.042.083-.021.113a.16.16 0 00.113.057zm6.264 0c.016 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025-.015 0-.025.01-.025.025 0 .016.01.026.025.026zm.422-.005c.087.005.113-.02.113-.108 0-.062-.016-.087-.031-.051-.02.046-.047.04-.108-.021-.077-.077-.087-.077-.123.015-.036.093-.036.093-.041.006 0-.062-.036-.088-.093-.077-.051.01-.087.05-.087.092 0 .041.056.092.128.108.067.015.175.036.242.036zm3.635.005c.015 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025-.015 0-.026.01-.026.025 0 .016.01.026.026.026zm3.045-.01c.036-.005.062-.036.062-.062-.006-.03-.072-.092-.154-.144-.098-.061-.16-.072-.18-.036-.02.031.02.077.087.103.067.026.087.051.041.051-.067.005-.067.01 0 .057.041.02.103.036.144.03zm-14.68-.042c.025 0 .061-.02.082-.05.015-.032-.005-.037-.047-.021-.046.015-.082.04-.082.05 0 .011.02.021.046.021zm.97 0a.247.247 0 00.16-.077c.035-.04.05-.092.04-.102-.015-.016-.087 0-.159.025-.077.031-.133.077-.133.103 0 .03.04.051.092.051zm6.439-.01c.092.005.098 0 .036-.04a.492.492 0 00-.113-.052.04.04 0 00-.041.04c0 .027.056.047.118.052zm4.344-.03c.03-.047.057-.052.077-.01.02.03.057.056.087.056.026 0 .036-.026.016-.062-.026-.041-.01-.051.04-.03.042.015.078.004.078-.032 0-.03-.062-.061-.134-.061-.071 0-.148.02-.169.051a.225.225 0 00-.036.103c0 .03.02.02.041-.016zm4.416-.031a.226.226 0 00-.046-.165c-.041-.051-.082-.061-.118-.025-.036.036-.02.087.046.164.087.097.103.097.118.026zm-15.825.005c.02-.02.02-.052 0-.067-.021-.02-.036-.005-.036.036.005.036.02.051.036.03zm.42.015c.021 0 .067-.026.098-.062.03-.035.062-.082.062-.107 0-.026-.052-.031-.118-.01a.716.716 0 00-.134.05c-.01.011-.005.042.016.073.025.03.056.056.077.056zm7.816-.077a.528.528 0 00.046-.17c0-.035-.02-.05-.046-.035-.031.015-.052.092-.046.17 0 .122.005.128.046.035zm-8.139.026c.015 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .015.01.026.026.026zm6.778 0c.015 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .015.01.026.026.026zm.298-.016a.133.133 0 00.072-.077c.01-.036-.026-.061-.082-.061-.057 0-.119-.02-.134-.052-.015-.025-.067-.051-.108-.051-.04 0-.072.036-.072.077s.02.082.052.082c.025.005.072.01.097.01a.206.206 0 01.088.047c.02.025.061.036.087.025zm4.647-.113c.01-.071 0-.149-.016-.17-.02-.014-.05 0-.077.042-.025.041-.02.113.016.17.056.087.061.082.077-.042zm3.199.129c.092 0 .19-.036.23-.088a.585.585 0 00.073-.128c0-.02-.031-.041-.077-.041-.041 0-.108.046-.139.103-.036.056-.087.102-.113.102-.025 0-.02-.025.01-.061.036-.036.062-.082.062-.103 0-.02-.046-.041-.097-.041-.057 0-.113.026-.134.051-.02.031-.02.088-.005.129.015.046.092.077.19.077zm-18.09-.057c.01 0 0-.02-.016-.051a.435.435 0 00-.169-.108c-.098-.036-.118-.061-.067-.092.046-.031.052-.052.01-.077-.03-.02-.056-.01-.056.02 0 .041-.03.041-.113 0-.087-.04-.077-.02.041.077.082.072.2.154.257.18.051.03.108.051.113.051zm3.373-.046c.042-.036.067-.077.057-.087-.015-.016-.046-.01-.077.01-.03.02-.057.057-.057.087 0 .036.031.031.077-.01zm6.44.026c.01-.01 0-.041-.016-.072-.02-.03-.056-.057-.082-.057-.026 0-.02.031.015.072.031.041.072.067.083.057zm4.513.025c.03 0 .062-.01.062-.02s-.026-.093-.057-.18c-.03-.087-.077-.164-.103-.164-.025 0-.03.04-.01.087a.475.475 0 00.077.144c.026.03.026.072.01.092-.02.026-.01.041.021.041zm3.512-.092a.843.843 0 00.041-.123c0-.02-.066-.052-.154-.072-.092-.02-.18-.01-.215.02-.041.042-.041.072.005.119.046.046.077.04.138-.036.072-.093.077-.093.047-.006-.02.057-.006.113.036.14.04.035.077.02.102-.042zm-17.725.041c.026 0 .03-.036.015-.077s-.051-.062-.077-.046c-.025.015-.036.051-.015.077.02.026.051.046.077.046zm9.474 0c.015 0 .025-.01.025-.026 0-.015-.01-.025-.025-.025-.016 0-.026.01-.026.025 0 .016.01.026.026.026zm2.125-.072c.01-.025-.03-.087-.097-.138a.409.409 0 00-.185-.093c-.041 0-.072.03-.072.067 0 .036.077.103.164.144.098.036.18.046.19.02zm-10.197-.005a.54.54 0 00.164-.082c.03-.026.005-.046-.067-.046-.061 0-.113.025-.113.056s-.025.041-.051.02c-.03-.015-.051-.004-.051.026 0 .036.04.047.118.026zm9.51-.005c.04-.015.076-.082.076-.154s-.015-.123-.04-.123c-.021 0-.067.046-.103.102-.036.057-.052.129-.036.154.015.026.061.036.102.021zm3.61.03c.015 0 .015-.015-.006-.03-.015-.015.015-.077.067-.139a.358.358 0 00.097-.21c0-.077-.01-.087-.046-.036-.026.036-.061.072-.087.077-.026.005-.041.026-.031.046.005.02-.051.051-.123.072l-.139.036.118.092a.566.566 0 00.15.093zm-.114-.102c-.03 0-.005-.036.062-.082.061-.046.097-.108.082-.139-.02-.036-.01-.04.03-.015.047.03.042.062-.025.139-.051.056-.118.097-.149.097zm2.506.098c.046-.01.082-.041.082-.067 0-.026-.03-.051-.061-.051s-.072.03-.083.071c-.015.036.01.057.062.047zm-16.067-.057c.057 0 .16-.015.231-.036.093-.025.108-.046.062-.077a.118.118 0 00-.129.01.487.487 0 01-.164.077c-.103.021-.103.021 0 .026zm.822.01c.015 0 .025-.01.025-.025 0-.016-.01-.026-.025-.026-.016 0-.026.01-.026.026 0 .015.01.025.026.025zm1.91-.02c.02-.02.02-.051 0-.067-.02-.02-.036-.005-.036.036 0 .036.015.051.036.03zm.174.02c.026 0 .052-.051.057-.118.005-.092.01-.097.03-.02.016.051.047.087.078.077.025-.01.051-.036.046-.057-.005-.02-.005-.072-.005-.113 0-.051-.031-.066-.087-.04a.41.41 0 00-.15.112c-.03.041-.05.098-.035.118.005.02.04.041.066.041zm.278 0c.015 0 .025-.01.025-.025 0-.016-.01-.026-.025-.026-.016 0-.026.01-.026.026 0 .015.015.025.026.025zm4.626-.015c.016-.015.02-.062.005-.098-.015-.04-.03-.03-.03.031 0 .052.01.082.025.067zm.714.015c.015 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .015.016.025.026.025zm.118-.04c.015-.047.046-.052.123-.01.072.035.123.04.154.004a.094.094 0 00.016-.113c-.02-.03-.072-.046-.113-.03-.067.025-.067.01.005-.098.046-.072.061-.129.03-.129-.03 0-.05.021-.05.052 0 .025-.047.051-.098.051-.077 0-.098.036-.093.164 0 .098.016.144.026.108zm1.001.035a.04.04 0 00.041-.04c0-.026.01-.083.026-.119.02-.056-.026-.077-.175-.082-.112-.005-.22.015-.24.046-.021.03-.006.077.035.103.046.03.093.015.128-.031.031-.041.077-.077.098-.077.02 0 .01.03-.02.072-.047.056-.047.077.005.097.036.016.082.026.102.031zm.16.005c.035 0 .097-.056.128-.128.03-.072.04-.128.026-.128-.021 0-.077.036-.129.087-.051.046-.092.103-.092.128 0 .026.025.041.066.041zm.467-.036c.04-.015.077-.087.077-.154 0-.077-.031-.123-.077-.123-.052 0-.077.051-.077.154 0 .118.02.15.077.123zm5.396.036c.01 0 .021-.01.021-.02s-.026-.041-.062-.062c-.036-.02-.046-.015-.02.02.02.037.046.062.061.062zm-12.364-.071c.04-.026.04-.067 0-.165-.031-.072-.077-.128-.103-.128-.026 0-.041.046-.041.103 0 .056.036.102.082.102.046 0 .067.026.041.062-.02.036-.01.046.02.026zm4.416.02c.01 0 0-.02-.016-.051-.015-.031-.061-.052-.092-.052-.036 0-.03.02.015.052.047.025.088.046.093.051zm8.775-.056c.052-.042.057-.077.02-.113-.035-.036-.071-.036-.112.005-.031.03-.041.082-.02.113.025.04.056.036.112-.005zm-16.529.005a.409.409 0 00.195-.077c.093-.067.093-.077.01-.077-.05 0-.092.02-.092.046s-.046.036-.103.02c-.056-.015-.102 0-.102.031s.046.052.092.057zm.488 0c.02 0 .026-.031 0-.067a.305.305 0 01-.041-.113c0-.03.02-.067.051-.087.031-.02.041-.047.026-.057a.927.927 0 00-.18-.056c-.123-.026-.133-.02-.061.02.05.031.077.077.061.103-.015.026 0 .092.036.149.041.056.087.103.108.108zm1.597-.02a.679.679 0 00.308-.134c.062-.062.164-.154.236-.206l.129-.102h-.2c-.15 0-.19-.021-.17-.077.015-.042.005-.083-.02-.093-.026-.01-.006-.041.046-.077.087-.051.092-.046.071.077-.02.118-.015.128.057.067a.412.412 0 00.113-.216c.02-.082.051-.164.077-.174.026-.016.056-.005.077.025.015.031.01.052-.02.052-.031 0-.052.04-.052.087 0 .077.015.072.082-.026.046-.061.113-.113.15-.113.035 0 .092-.046.122-.097a.41.41 0 00.052-.134c0-.015-.026-.015-.057.005-.04.026-.046-.005-.02-.087.02-.067.025-.113.01-.098-.015.016-.051.083-.087.15-.041.076-.041.107-.006.087.031-.02.057-.01.057.015 0 .026-.02.062-.046.082-.026.016-.057 0-.072-.036-.016-.04-.041-.046-.067-.015-.02.03-.108.056-.185.062-.097.005-.133-.01-.108-.052.021-.036-.05.026-.154.129-.18.184-.184.2-.113.333.042.077.062.17.052.206-.01.036-.046.051-.077.03-.031-.02-.041.01-.016.078.02.066.01.107-.02.107-.031 0-.057-.02-.057-.051 0-.03-.025-.051-.056-.051a.416.416 0 00-.18.097c-.067.052-.103.113-.087.134.02.025.128.03.23.015zm.42-.822c-.04 0-.06-.021-.045-.047.015-.025.046-.03.077-.015.025.015.046.036.046.041-.005.015-.036.02-.077.02zm.355-.083c-.015 0-.025-.01-.025-.025 0-.016.01-.026.025-.026.016 0 .026.01.026.026 0 .015-.01.02-.026.025zm5.32.91c.056.004.097 0 .097-.011 0-.01-.035-.03-.077-.046-.04-.016-.087-.01-.097.01-.01.02.026.041.077.046zm7.866-.026c.021-.01.042-.057.042-.103 0-.072.01-.072.102.01.082.077.118.082.18.026.041-.036.077-.087.077-.113 0-.026-.056-.067-.123-.093-.093-.036-.17-.02-.303.047-.165.082-.175.097-.093.17.041.04.098.066.118.056zm.175-.185c-.02.02-.036.005-.036-.036 0-.041.016-.052.036-.036a.05.05 0 010 .072zm-16.775.174c.036 0 .05-.015.036-.036-.021-.02-.052-.02-.067 0-.02.021-.005.036.03.036zm.215 0c.026 0 .041-.036.041-.077 0-.04-.02-.077-.046-.077a.104.104 0 00-.077.047c-.015.025-.01.061.005.077.02.015.052.03.077.03zm.986-.005c.057 0 .082-.01.067-.025-.016-.016-.062-.021-.098-.006-.036.016-.025.026.031.031zm2.912.005c.061 0 .087-.02.066-.056-.02-.03-.066-.041-.107-.026-.042.016-.072 0-.072-.03 0-.031-.016-.047-.031-.026-.016.02-.016.056.005.087.02.03.082.051.139.051zm4.924-.015c.056.005.103-.015.103-.041 0-.026-.047-.046-.103-.046-.057 0-.103.02-.103.04 0 .021.046.042.103.047zm.714 0a.157.157 0 00.097-.082c.016-.052-.005-.062-.092-.031-.077.026-.103.02-.082-.02.02-.031 0-.057-.047-.057-.066 0-.072.015-.015.103.041.056.103.097.139.087zm5.94.015c.01 0 .021-.01.021-.02s-.026-.041-.061-.062c-.036-.02-.047-.015-.021.02.02.032.046.062.062.062zm.406 0c.016 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .015.01.025.025.025zm1.643 0c.098 0 .18-.015.18-.04 0-.021-.02-.073-.046-.109-.036-.056-.067-.056-.18.021a.507.507 0 00-.133.108c0 .01.082.02.18.02zm.344 0c.026 0 .047-.03.047-.072 0-.04-.036-.087-.082-.102-.047-.016-.098-.02-.108-.005-.016.015.005.061.04.102.026.041.078.077.103.077zM2.81 18.11c.03-.01.05-.05.04-.087-.01-.036.01-.082.047-.103.03-.02.046-.061.026-.092-.021-.03-.067-.041-.108-.026-.041.016-.062.047-.052.072.016.02.005.057-.025.072-.031.016-.036.067-.02.108.02.046.06.067.092.056zm1.078-.02c.036-.02.03-.041-.01-.051-.036-.01-.062-.042-.062-.067 0-.026.041-.046.087-.046.046 0 .072-.016.057-.031-.016-.016-.123 0-.242.036-.118.036-.21.082-.21.108 0 .025.036.04.077.04s.077-.025.077-.061c0-.041.03-.03.087.026.046.04.108.066.139.046zm6.747.02c.19-.015.385-.035.437-.04.082-.01.082-.021.01-.093-.067-.067-.088-.067-.123-.01-.026.04-.103.077-.18.087-.072.01-.15-.005-.164-.03-.016-.027-.062-.047-.108-.047-.041 0-.062.02-.047.046.016.026-.015.036-.071.02-.062-.015-.103 0-.103.037 0 .04.097.051.349.03zm.657.021c.01 0 .02-.026.02-.051 0-.031-.025-.052-.056-.052-.03 0-.04.02-.02.052.015.025.04.051.056.051zm5.156 0c.036 0 .051-.015.036-.036-.02-.02-.052-.02-.067 0-.02.02-.005.036.03.036zm-14.845-.077c.015-.015 0-.056-.036-.087-.036-.036-.062-.041-.062-.01 0 .03.016.066.036.087.016.02.046.02.062.01zm.287.026c.026 0 .01-.036-.036-.088-.046-.046-.102-.072-.123-.046-.02.02-.005.062.036.087.036.021.093.042.123.047zm1.104 0c.026 0 .057-.02.077-.047.016-.025.006-.061-.02-.082a.12.12 0 00-.103 0c-.03.016-.04.052-.02.082.01.021.04.047.066.047zm13.238 0c.02 0 .041-.047.041-.098 0-.056-.02-.087-.041-.072-.02.016-.041.057-.041.098 0 .04.02.072.041.072zm-14.799-.052c.01 0 .006-.066-.01-.154-.026-.128-.01-.159.093-.2.107-.046.102-.051-.077-.051-.19-.005-.196 0-.165.138a.79.79 0 00.088.206c.03.03.061.061.071.061zm.611 0c.016 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .015.01.025.025.025zm.262 0c.01 0 .02-.01.02-.02s-.025-.041-.06-.062c-.037-.02-.047-.015-.021.02.02.037.046.062.061.062zm.154 0c.047 0 .072-.025.062-.061a.144.144 0 00-.082-.082c-.03-.01-.062.015-.062.061s.036.082.082.082zm.74 0c.03 0 .051-.025.051-.051 0-.03-.02-.051-.051-.051a.051.051 0 00-.052.051c0 .026.026.051.052.051zm.796-.01c.025.005.149-.036.267-.082.118-.051.22-.123.22-.164 0-.057-.02-.057-.092.015a.34.34 0 01-.185.087c-.051 0-.077-.02-.056-.051.02-.03-.005-.036-.052-.02-.061.02-.066.046-.025.097.04.051.03.072-.036.092-.052.01-.072.026-.041.026zm.431.01c.026 0 .062-.025.082-.056.02-.031.067-.041.103-.026.041.016.082.005.103-.02.015-.026.077-.052.133-.052.067 0 .087-.02.067-.061-.02-.036-.016-.047.02-.026.031.02.047.072.026.113-.02.051-.005.067.051.046.047-.015.083-.046.083-.067 0-.02-.026-.061-.057-.092-.041-.041-.041-.067 0-.092.03-.021.051-.006.041.03-.01.036.026.072.077.083.057.01.093-.01.093-.062 0-.046-.026-.082-.057-.082-.03 0-.041-.02-.02-.052.015-.025.005-.051-.026-.051-.03 0-.041-.03-.02-.062.02-.036-.047.021-.144.124-.129.133-.2.174-.252.143a.289.289 0 00-.108-.046c-.02 0-.04.036-.04.082 0 .047-.047.093-.104.108-.056.016-.102.046-.102.072.005.026.025.046.051.046zm.236-.154c-.015 0-.025-.01-.025-.025 0-.016.01-.026.025-.026.016 0 .026.01.026.026 0 .015-.01.025-.026.025zm.154.118c.041-.015.077-.04.077-.051 0-.01-.036-.02-.077-.02-.04 0-.077.02-.077.05 0 .032.036.037.077.021zm6.68.036c.011 0 .078-.036.15-.082.071-.046.113-.103.097-.128-.015-.026-.082-.046-.149-.046-.066 0-.133.02-.149.046-.015.025-.015.082 0 .128.016.046.041.082.052.082zm6.476-.02c.02-.02.02-.052 0-.067-.02-.02-.036-.005-.036.036 0 .036.015.051.036.03zm.452.02c.015 0 .025-.01.025-.025 0-.016-.01-.026-.025-.026-.016 0-.026.01-.026.026 0 .015.01.025.026.025zm-5.828-.051c.035 0 .05-.015.035-.036-.02-.02-.05-.02-.066 0-.02.02-.005.036.03.036zm.174 0c.01 0 .016-.051 0-.108a.338.338 0 00-.051-.139c-.016-.015-.02.026-.005.098.01.067.025.134.025.139.01.005.02.01.031.01zm3.138 0c.015 0 .025-.01.025-.026 0-.015-.01-.025-.025-.025-.016 0-.026.01-.026.025 0 .016.01.026.026.026zm.718-.036a.281.281 0 00.139-.087.653.653 0 00.041-.226c0-.093-.01-.165-.026-.165-.015 0-.102.047-.195.103-.092.057-.143.103-.108.103.036 0 .072.03.088.072.02.051-.005.067-.082.046-.103-.02-.103-.015.015.056l.128.083-.154-.026c-.123-.02-.133-.015-.051.02.056.026.149.031.205.021zm1.438.036c.016 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025-.015 0-.026.01-.026.025 0 .01.01.026.026.026zm.103 0c.015 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025s-.026.01-.026.025c0 .01.01.026.026.026zm.755 0c.02 0 .061-.041.087-.092.036-.067.03-.113-.005-.15-.041-.04-.082-.025-.15.057-.066.082-.071.123-.03.149.036.015.077.03.098.036zm-17.284-.051c.01 0 .02-.026.02-.052 0-.03-.025-.051-.056-.051-.03 0-.041.02-.02.051.015.026.04.052.056.052zm.55-.031a.618.618 0 00.128-.052c.01-.01 0-.04-.02-.077-.027-.046-.052-.04-.083.021a.108.108 0 01-.128.051c-.057-.02-.072-.01-.047.031.026.036.088.046.15.026zm.43.03c.052 0 .067-.03.052-.082-.015-.046-.01-.066.015-.05.026.015.062.01.077-.016.016-.026-.01-.062-.056-.077-.051-.02-.108.005-.149.056-.036.052-.057.108-.041.129.01.02.056.04.103.04zm1.017 0c.01 0 .036-.025.052-.05.015-.032-.006-.052-.052-.052s-.066.02-.051.051c.02.026.041.052.051.052zm7.713-.02c.02-.02.02-.051 0-.067-.02-.02-.036-.005-.036.036 0 .041.015.052.036.031zm1.12.02c.015 0 .025-.01.025-.025 0-.015-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .015.01.02.025.026zm6.115 0c.01 0 .02-.01.02-.02s-.025-.041-.061-.062c-.036-.02-.047-.015-.02.021.02.03.045.062.06.062zm.097 0c.016 0 .026-.01.026-.025 0-.015-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .015.015.02.025.026zm-16.79-.05c.015 0 .025-.011.025-.026 0-.016-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .015.015.025.025.025zm1.18 0c.042 0 .077-.011.077-.021 0-.01-.035-.036-.077-.052-.04-.015-.077-.005-.077.02 0 .027.036.052.077.052zm7.549 0c.015 0 .025-.011.025-.026 0-.016-.01-.026-.025-.026-.016 0-.026.01-.026.026 0 .015.015.025.026.025zm2.002 0c.016 0 .026-.011.026-.026 0-.016-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .015.015.025.025.025zm.4 0c.026 0-.004-.052-.06-.114-.057-.061-.124-.092-.145-.072-.02.02.005.072.062.113a.407.407 0 00.144.072zm3.154-.021c.02-.02.02-.052 0-.067-.021-.02-.036-.005-.036.036 0 .036.015.051.036.03zm2.249.02c.015 0 .025-.01.025-.025 0-.016-.01-.026-.025-.026-.016 0-.026.01-.026.026 0 .015.015.025.026.025zm-7.05-.113c.148-.051.148-.056.046-.128-.062-.041-.144-.062-.185-.046-.041.015-.077.061-.077.097 0 .036.015.082.03.103.016.015.098.005.185-.026zm7.42-.025c.03-.047.045-.113.03-.154-.015-.041-.041-.072-.062-.072a.425.425 0 00-.133.077c-.098.077-.098.077 0 .149.092.072.113.072.164 0zm-16.36.036c.025 0 .046-.021.046-.047 0-.025-.026-.061-.057-.082-.03-.02-.066-.02-.082-.005-.015.015-.01.051.005.082.026.026.062.052.088.052zm1.15-.01a.325.325 0 00.164-.032c.036-.02.077-.138.098-.256.03-.185.02-.21-.046-.19-.041.015-.093.005-.113-.026-.02-.03.015-.133.072-.226.092-.149.097-.18.03-.236-.04-.036-.123-.046-.18-.03-.066.02-.102.01-.102-.032 0-.036.082-.154.185-.256.17-.175.185-.216.19-.504.005-.195-.016-.313-.052-.313-.03 0-.133.026-.23.057a3.51 3.51 0 00-.417.174c-.133.067-.37.216-.523.329a2.93 2.93 0 00-.493.483c-.113.148-.206.323-.206.385 0 .077.072.159.242.267.133.082.292.154.354.154s.128.02.149.051c.015.026.097.051.185.051.087 0 .149.02.149.047 0 .025.097.056.215.066.129.016.272.031.329.036zm6.778.01c.015 0 .026-.01.026-.026s-.01-.026-.026-.026-.026.01-.026.026c0 .015.016.026.026.026zm.103 0c.015 0 .025-.01.025-.026s-.01-.026-.025-.026c-.016 0-.026.01-.026.026 0 .015.015.026.026.026zm2.582 0c.021 0 .072-.021.108-.047.052-.03.041-.051-.036-.072-.072-.02-.108-.005-.108.047-.005.036.016.072.036.072zm2.963 0c.016 0 .026-.01.026-.026s-.01-.026-.026-.026c-.015 0-.025.01-.025.026 0 .015.01.026.025.026zM1.74 17.7c.042 0 .078-.005.078-.016 0-.01-.021-.025-.047-.04-.025-.016-.061-.011-.077.015-.02.025.005.04.047.04zm.206.02c.01 0 .02-.01.02-.02s-.025-.041-.061-.062c-.036-.02-.046-.015-.02.02.02.037.046.062.06.062zm.164 0c.02 0 .067-.02.108-.046.041-.026.057-.067.041-.098-.015-.025-.082-.061-.138-.077-.103-.025-.103-.025-.016.072.087.098.087.098-.005.067-.067-.026-.082-.02-.057.026.016.025.047.056.067.056zm1.808 0c.025 0 .051-.01.051-.02s-.026-.036-.051-.057c-.031-.015-.052-.005-.052.02 0 .026.026.057.052.057zm.852 0c.046 0 .067-.025.046-.051a.098.098 0 00-.082-.051c-.026 0-.046.02-.046.05 0 .027.036.052.082.052zm.863 0c.046 0 .128-.046.19-.108.056-.056.092-.118.077-.133-.016-.016-.098.03-.19.108-.103.087-.129.133-.077.133zm12.796 0c.01 0 .02-.01.02-.02s-.025-.041-.061-.062c-.036-.02-.047-.015-.02.02.02.037.045.062.06.062zm-17.243-.077c.015-.015 0-.056-.036-.092-.051-.052-.056-.046-.03.03.025.052.05.078.066.062zm2.86.026c.015 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025-.015 0-.026.01-.026.025 0 .01.01.026.026.026zm7.035 0c.015 0 .025-.01.025-.026 0-.015-.01-.025-.025-.025-.016 0-.026.01-.026.025 0 .01.01.026.026.026zm5.032 0c.015 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025-.015 0-.026.01-.026.025 0 .01.01.026.026.026zm.164-.02c.02-.021.02-.052 0-.067-.02-.021-.036-.006-.036.036 0 .035.016.05.036.03zm-11.83-.031c.01 0 .01-.062-.006-.14-.015-.076-.035-.112-.05-.076-.016.036-.011.097.004.144.02.036.041.072.052.072zm.42 0c.016 0 .026-.01.026-.026s-.01-.026-.025-.026c-.016 0-.026.01-.026.026 0 .015.01.026.026.026zm5.803 0c.015 0 .026-.01.026-.026s-.01-.026-.026-.026c-.015 0-.026.01-.026.026 0 .015.01.026.026.026zm.41-.067c.073-.031.124-.082.114-.113-.01-.026-.088-.052-.18-.057-.087-.005-.154.01-.144.026.01.015.031.072.046.118.026.072.052.077.165.026zm4.879.067c.015 0 .026-.01.026-.026s-.01-.026-.026-.026-.026.01-.026.026c0 .015.01.026.026.026zm-14.044-.052c.026 0 .051-.02.051-.051a.055.055 0 00-.05-.052.051.051 0 00-.052.052c0 .025.025.051.051.051zm8.452 0c.01 0 .02-.01.02-.02s-.025-.041-.061-.062c-.036-.02-.046-.015-.02.02.02.036.046.062.061.062zm-8.73-.051c.011 0 .021-.01.021-.02 0-.011-.025-.042-.061-.062-.036-.02-.046-.016-.02.02.02.036.045.062.06.062zm.17-.026c.016-.015 0-.051-.036-.087s-.061-.041-.061-.005c0 .03.015.067.036.087.015.015.046.015.061.005zm2.958.026c.041 0 .077-.02.077-.052 0-.025-.036-.035-.077-.02-.041.015-.077.041-.077.051 0 .01.036.02.077.02zm5.802 0c.016 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.025.01-.025.026s.01.026.025.026zm8.031-.016c.057-.01.077-.056.067-.143a.763.763 0 00-.067-.216c-.046-.082-.056-.082-.205.026l-.154.113.138.118c.072.072.175.113.221.102zm-8.513-.05c.087.004.097-.006.046-.068-.036-.04-.082-.061-.108-.046-.026.016-.046.046-.046.067 0 .02.046.04.108.046zm5.925-.006c.041 0 .077-.02.077-.041 0-.02-.036-.041-.077-.041-.04 0-.077.02-.077.04 0 .027.036.047.077.042zm.324-.02c.077-.031.077-.037-.005-.052-.052-.01-.093-.041-.093-.072 0-.03-.01-.046-.025-.03-.016.015-.016.061.005.107.02.052.066.067.118.046zm1.73.04c.016 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .015.01.026.026.026zm-15.97-.05c.016 0 .027-.011.027-.027 0-.015-.01-.025-.026-.025s-.026.01-.026.025c0 .016.01.026.026.026zm2.917 0c.041 0 .129-.047.2-.104a.696.696 0 00.19-.251c.037-.082.057-.18.047-.21-.01-.032-.087.01-.175.092-.082.082-.195.22-.246.308-.072.133-.072.164-.016.164zm11.651-.016c.041-.01.067-.134.077-.298.005-.154.026-.344.047-.426.03-.139.025-.144-.083-.082-.061.035-.128.102-.138.154-.016.051-.062.107-.103.123-.041.015-.103.015-.133-.005-.031-.02-.042-.01-.021.025.026.041-.01.062-.108.067-.133.005-.133.01-.02.031.082.015.102.036.061.062-.046.025-.03.046.041.066.057.016.098.01.083-.015-.016-.026.01-.057.056-.072.046-.015.067-.051.051-.077-.015-.026.031-.041.098-.041.072.005.128.026.128.051 0 .026-.046.057-.102.072-.057.016-.103.062-.103.103 0 .041.02.062.051.041.031-.015.052-.01.052.02 0 .031-.042.078-.093.108-.087.057-.087.057 0 .031.051-.015.087-.005.087.026 0 .03.036.051.072.036zM16.395 17c-.036 0-.051-.015-.036-.036.02-.02.052-.02.067 0 .02.02.005.036-.03.036zm-14.506.36c.016 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.025.01-.025.026s.01.026.025.026zm2.958-.005c.015.005.057-.052.087-.124.031-.071.036-.128.01-.128-.025 0-.082.036-.123.077a.321.321 0 01-.195.082c-.102.005-.097.01.036.046.082.021.17.042.185.047zm-3.522-.047c.015 0 .025-.01.025-.025 0-.016-.01-.026-.025-.026-.016 0-.026.01-.026.026 0 .015.01.025.026.025zm.102 0c.016 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .015.01.025.025.025zm.206 0c.015 0 .025-.01.025-.025 0-.016-.01-.026-.025-.026-.016 0-.026.01-.026.026 0 .015.01.025.026.025zm8.94 0c.01 0 .02-.01.02-.02s-.026-.041-.062-.062c-.036-.02-.046-.015-.02.02.02.037.046.062.061.062zm.287 0c.108 0 .195-.025.195-.05 0-.032-.062-.078-.133-.104a.848.848 0 00-.196-.051c-.035 0-.061.046-.061.103 0 .082.036.102.195.102zm4.842 0c.016 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .015.01.025.026.025zm.154 0c.016 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .015.01.025.026.025zm.164-.056c.006 0 .01-.03.01-.067 0-.051-.035-.061-.112-.04-.108.03-.108.03-.016.066.062.02.113.041.118.041zm2.1.005c.016 0 0-.046-.03-.103-.031-.056-.067-.102-.082-.102-.016 0 0 .046.03.102.031.057.067.103.083.103zm-16.713-.082c.025-.015.046-.046.046-.067 0-.02-.036-.04-.077-.04s-.077.014-.077.035c0 .02.015.051.03.067.021.02.052.02.078.005zm.277.03c.015 0 .026-.01.026-.025 0-.015-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .015.01.026.026.026zm16.231 0c.01 0 .02-.01.02-.02s-.025-.04-.06-.061c-.037-.021-.047-.016-.021.02.02.036.046.062.061.062zm-12.185-.05c.041 0 .108-.037.144-.083.062-.072.051-.082-.051-.061-.067.01-.134.046-.144.082-.015.03.01.061.051.061zm.062-.052c-.016 0-.026-.01-.026-.026 0-.015.01-.025.026-.025.015 0 .026.01.026.025 0 .016-.01.026-.026.026zm4.036.051c.026 0 .046-.01.046-.02s-.036-.046-.077-.082c-.067-.057-.072-.052-.046.02.015.046.051.082.077.082zm.38 0c.015 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026s-.026.01-.026.026c0 .015.01.025.026.025zm7.394 0c.015 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .015.01.025.026.025zm.775-.056c.041-.03.072-.149.072-.257 0-.108-.015-.205-.04-.22-.021-.016-.119.046-.216.133l-.175.16.144.122c.113.098.159.108.215.062zm-17.15-.01c.02-.02.02-.052 0-.067-.02-.02-.036-.005-.036.036.005.03.02.046.036.03zm.36 0c.02-.02.02-.052 0-.067-.021-.02-.036-.005-.036.036.005.03.02.046.035.03zm8.975 0a.669.669 0 01.21-.036c.088 0 .114-.02.093-.077-.015-.041-.092-.077-.164-.077-.108 0-.123.01-.057.056.062.041.041.046-.077.026-.087-.016-.123-.016-.087 0 .036.015.051.051.03.082-.025.041-.01.046.052.026zm7.143.015c.015 0 .025-.01.025-.026 0-.015-.01-.025-.025-.025-.016 0-.026.01-.026.025 0 .016.01.026.026.026zm-15.846-.051c.03 0 .056-.02.056-.052 0-.03-.01-.051-.02-.051s-.036.02-.057.051c-.02.026-.01.052.02.052zm3.142 0c.03 0 .087-.041.129-.093a.585.585 0 00.071-.128c0-.02-.03-.041-.071-.041-.042 0-.098.046-.129.097a.446.446 0 00-.051.129c0 .015.02.036.051.036zm4.442-.005c.005 0 .02-.026.03-.062.016-.041-.015-.072-.071-.072-.052-.005-.098.01-.098.036 0 .026.03.057.062.072.04.01.072.026.077.026zm.2.005c.01 0 .026-.031.041-.067.016-.036-.005-.067-.041-.067-.036 0-.056.031-.041.067.015.036.03.067.041.067zm6.285 0c.026 0 .036-.036.02-.077-.015-.041-.04-.077-.05-.077-.011 0-.021.036-.021.077.005.04.025.077.051.077zM1.12 17c.016 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .015.01.025.025.025zm3.076 0c.015 0 .041-.02.056-.051.016-.03.021-.051.006-.051-.016 0-.041.02-.057.051-.015.03-.02.051-.005.051zm13.304 0c.016 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .015.01.025.025.025zm.262 0c.01 0 .02-.02.02-.051 0-.03-.025-.051-.056-.051-.03 0-.04.02-.02.051.015.026.04.051.056.051zm.206 0c.01 0 .02-.01.02-.02s-.026-.041-.061-.062c-.036-.02-.047-.015-.021.02.02.037.046.062.062.062zM1.602 16.95c.01 0-.01-.036-.046-.077s-.077-.067-.093-.046c-.015.015.005.051.046.077a.49.49 0 00.093.046zm2.803 0c.01 0 .016-.062.016-.134 0-.077-.02-.112-.046-.087-.026.026-.031.087-.016.134.016.046.036.087.046.087zm.36 0c.015 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025-.015 0-.026.01-.026.025 0 .016.01.026.026.026zm1.397-.02c.015-.016 0-.067-.031-.119-.031-.051-.057-.077-.057-.061 0 .02.01.072.031.118.02.046.041.077.057.061zm-4.786-.031c.015 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .015.01.026.026.026zm.524-.005c.036 0 .077-.021.097-.052.02-.03.026-.061.016-.072a.798.798 0 00-.195-.046c-.175-.036-.175-.03-.077.067.05.056.123.103.159.103zm8.56 0c.056 0 .082-.01.066-.026-.015-.016-.061-.02-.097-.005-.041.015-.026.03.03.03zm5.37-.047a.355.355 0 00.047-.154c0-.051-.016-.04-.047.026a.493.493 0 00-.046.154c0 .026.02.015.046-.026zm-6.29 0c.016 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .015.01.025.025.025zm.632-.02c.015-.016 0-.057-.03-.098-.032-.04-.047-.082-.027-.102.016-.016.01-.062-.01-.098a.507.507 0 01-.061-.144 1.014 1.014 0 01-.016-.19c0-.061-.015-.123-.036-.138-.02-.016-.036.04-.03.123.004.082.025.17.04.2.016.03.01.067-.015.082-.026.016-.062-.005-.077-.051s-.051-.067-.082-.046c-.03.015-.051.061-.051.092 0 .041.015.036.046-.01.036-.057.051-.052.077.036.02.056.082.164.138.241.057.067.118.118.134.103zm-.118-.185c-.01 0-.036-.026-.057-.057-.02-.03-.02-.066-.01-.077.015-.015.036.01.057.057.02.041.025.077.01.077zm.734.2c.051.005.051-.02.01-.097a.301.301 0 00-.18-.134.513.513 0 00-.215-.005c-.062.015-.046.026.046.03.077.006.139.032.139.057 0 .026-.031.052-.067.057-.036.005-.005.025.062.046.082.02.17.041.205.046zm6.809.005c.01 0 .036-.02.056-.051.016-.03.005-.051-.02-.051-.031 0-.057.02-.057.051 0 .026.01.051.02.051zm-13.335-.066c.02-.021.02-.052 0-.067-.02-.02-.036-.005-.036.036 0 .03.015.046.036.03zm1.109-.047a.804.804 0 00.17-.118c.046-.046.025-.061-.088-.056-.082.005-.149.02-.149.046 0 .02-.036.041-.082.041-.067 0-.072.015-.02.077.05.051.087.057.169.01zm.575.062c.015 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025-.015 0-.026.01-.026.025 0 .016.01.026.026.026zm10.424 0c.015 0 .025-.01.025-.026 0-.015-.01-.025-.025-.025-.016 0-.026.01-.026.025 0 .016.01.026.026.026zm.975 0c.016 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025-.015 0-.025.01-.025.025 0 .016.01.026.025.026zm.75-.005c.02 0 .072-.057.118-.123a.6.6 0 00.082-.278.797.797 0 00-.036-.241c-.025-.072-.051-.056-.113.087a.542.542 0 01-.195.226c-.061.026-.113.077-.113.108 0 .03.052.092.113.139a.492.492 0 00.144.082zm-16.498-.098c.01-.03-.005-.082-.036-.118-.041-.04-.057-.036-.057.02 0 .042.016.098.036.119.02.02.046.01.057-.02zm8.714.052c.015 0 .025-.01.025-.026 0-.015-.01-.026-.025-.026-.016 0-.026.01-.026.026 0 .015.01.026.026.026zm-8.288-.062c.067-.01.128-.046.139-.087.015-.047-.016-.062-.093-.052-.067.01-.128.047-.138.088-.021.046.01.066.092.051zm1.818.01c.015 0 .025-.01.025-.025 0-.016-.01-.026-.025-.026-.016 0-.026.01-.026.026 0 .015.01.025.026.025zm.113-.015c.02-.02.02-.052 0-.067-.02-.02-.036-.005-.036.036 0 .03.015.046.036.03zm.55.015c.01 0 .035-.036.05-.077.016-.04.006-.077-.02-.077-.026 0-.051.036-.051.077s.01.077.02.077zm.26 0c.016 0 .027-.01.027-.025 0-.016-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .015.016.025.026.025zm1.362 0c.036 0 .051-.015.036-.036-.02-.02-.052-.02-.067 0-.02.02-.005.036.03.036zm1.915-.051a.57.57 0 00.113-.216c.015-.077.01-.149-.015-.164-.026-.015-.057.036-.072.113a2 2 0 01-.067.241c-.036.093-.03.093.041.026zm1.602.051c.015 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .015.016.025.026.025zm.257 0c.015 0 .025-.01.025-.025 0-.016-.01-.026-.025-.026-.016 0-.026.01-.026.026 0 .015.016.025.026.025zm5.648 0c.015 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .015.016.025.026.025zm.59-.01c.072 0 .098-.01.062-.026a.184.184 0 00-.128 0c-.031.016 0 .026.067.026zm-11.116-.041c.015 0 .025-.01.025-.026 0-.015-.01-.025-.025-.025-.016 0-.026.01-.026.025 0 .016.015.026.026.026zm11.322-.005c.015 0-.02-.031-.072-.072a.409.409 0 00-.195-.077c-.051 0-.092.01-.092.026 0 .015.077.046.164.071.097.026.185.047.195.052zm.087.005a.793.793 0 00.21-.103c.098-.061.18-.159.196-.241.015-.077.041-.175.051-.206.016-.05-.01-.046-.118.006a2.544 2.544 0 01-.344.133 3.551 3.551 0 00-.323.118c-.093.046-.129.041-.165-.015-.03-.046-.046-.052-.046-.016s.016.072.036.083c.02.01.134.035.247.05.18.027.19.027.077-.025l-.129-.056.129-.036c.097-.026.138-.01.164.056.02.052.026.129.005.17-.02.046-.015.082.01.082zm1.156-.015c.092.005.102 0 .04-.042a.349.349 0 00-.143-.05c-.036 0-.057.014-.041.04.015.026.077.046.144.052zM1.684 16.59c.015 0 .026-.01.026-.026s-.01-.026-.026-.026c-.015 0-.026.01-.026.026 0 .015.016.026.026.026zm2.578-.016c.02-.02.02-.051 0-.067-.02-.02-.036-.005-.036.036 0 .031.015.047.036.031zm.154 0c.02-.02.02-.051 0-.067-.02-.02-.036-.005-.036.036 0 .031.015.047.036.031zm1.412.016c.03 0 .036-.021.02-.052a.105.105 0 00-.082-.051c-.025 0-.036.02-.02.051.015.026.051.052.082.052zm4.02 0c.016 0 .026-.01.026-.026s-.01-.026-.026-.026c-.015 0-.025.01-.025.026 0 .015.015.026.025.026zm.889-.006c.005.006.01-.05.01-.118 0-.066-.036-.138-.082-.154-.046-.015-.118-.005-.154.031-.062.051-.062.067-.005.103.051.03.051.04-.01.051-.042.005-.01.026.076.046a.97.97 0 01.165.041zm5.078-.015c.02-.02.02-.051 0-.067-.02-.02-.036-.005-.036.036.005.036.02.052.036.031zm-13.92-.03c.01 0 .02-.011.02-.021 0-.01-.026-.041-.062-.062-.035-.02-.046-.015-.02.02.026.037.051.062.062.062zm3.132 0c.015 0 .025-.011.025-.026 0-.016-.01-.026-.025-.026-.016 0-.026.01-.026.026 0 .015.01.025.026.025zm.205 0c.016 0 .026-.011.026-.026 0-.016-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .015.01.025.025.025zm.221 0c.01 0 0-.021-.015-.052-.016-.03-.062-.051-.093-.051-.036 0-.03.02.016.05.04.027.082.052.092.052zm.585-.006c.047-.005.047-.01-.005-.03-.061-.026-.061-.037 0-.073.057-.036.057-.046.005-.046-.036 0-.056-.02-.04-.04.015-.021-.032-.042-.098-.037a.318.318 0 00-.165.041c-.025.02 0 .026.057.005.067-.025.087-.02.062.02-.026.042-.01.047.046.027.046-.016.077-.01.072.015a.22.22 0 000 .082c0 .02.03.036.066.036zm.278-.036c.164-.02.18-.03.102-.082-.046-.036-.072-.077-.051-.098.02-.02 0-.02-.041-.005-.041.016-.123-.005-.18-.046-.097-.077-.097-.077.01-.056.083.015.103 0 .083-.057-.02-.056-.041-.061-.067-.015-.026.04-.062.025-.113-.052-.067-.092-.082-.097-.108-.03-.015.046-.067.077-.108.066-.04-.01-.077.01-.077.036 0 .031.02.057.046.057.031.005.062.01.077.02.016.005.042.02.067.026.02.005.093.03.154.051.062.02.118.057.118.083 0 .025-.02.046-.051.046-.03 0-.051.02-.051.04 0 .021.087.026.19.016zm-.519-.318c-.015 0-.026-.01-.026-.026 0-.015.01-.026.026-.026.015 0 .026.01.026.026s-.016.026-.026.026zm.205-.02c-.04 0-.061-.021-.046-.042.016-.026.046-.03.077-.015.026.015.046.036.046.046 0 .005-.035.015-.077.01zm-4.287.328c.03 0 .051-.026.051-.051 0-.031-.02-.052-.051-.052a.051.051 0 000 .103zm.41 0a.6.6 0 00.124-.03c.046-.016.082-.052.082-.073 0-.02-.051-.051-.113-.067-.062-.015-.128-.02-.154-.005-.02.016-.026.057-.01.103.015.036.046.072.072.072zm-.025-.103c-.015 0-.026-.01-.026-.026 0-.015.01-.025.026-.025.015 0 .026.01.026.025 0 .016-.016.026-.026.026zm1.848.103c.016 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025-.015 0-.025.01-.025.025 0 .016.01.026.025.026zm.591 0c.03 0 .051-.026.051-.051 0-.031-.02-.052-.051-.052-.03 0-.051.02-.051.052 0 .025.02.05.051.05zm2.588 0c.144 0 .298-.02.339-.046.061-.041.061-.052-.026-.083-.056-.02-.17-.056-.251-.087a1.185 1.185 0 01-.293-.18c-.082-.066-.149-.154-.149-.195 0-.04-.01-.072-.02-.072a.788.788 0 00-.155.062c-.071.03-.128.077-.128.098 0 .02.02.051.046.066.026.016.057.072.072.129.02.087.01.092-.067.04-.051-.03-.082-.086-.066-.117.015-.036 0-.077-.026-.093-.03-.015-.067-.005-.087.026-.02.03.02.113.082.18.067.066.149.113.18.102.035-.015.112.02.174.077.077.062.19.093.375.093zm-.098-.051c-.015 0-.025-.01-.025-.026s.01-.026.025-.026c.016 0 .026.01.026.026 0 .015-.015.026-.026.026zm-.102-.052c-.016 0-.026-.01-.026-.026 0-.015.01-.025.026-.025.015 0 .025.01.025.025 0 .016-.015.026-.025.026zm-.103-.051c-.015 0-.026-.01-.026-.026 0-.015.01-.026.026-.026.015 0 .026.01.026.026s-.016.026-.026.026zm-.098-.052c-.01 0-.05-.04-.087-.092-.061-.082-.061-.082.02-.02.052.04.093.077.093.092s-.015.02-.026.02zm-.364-.205c-.016 0-.026-.01-.026-.026 0-.015.01-.025.026-.025.015 0 .026.01.026.025 0 .016-.016.026-.026.026zm.257-.103c-.016 0-.026-.01-.026-.025 0-.016.01-.026.026-.026.015 0 .025.01.025.026 0 .015-.015.025-.025.025zm1.34.498c.015-.015.02-.061.005-.097-.015-.041-.03-.03-.03.03-.006.057.004.083.025.067zm7.646.016c.015 0 .025-.01.025-.026 0-.015-.01-.025-.025-.025-.016 0-.026.01-.026.025 0 .016.01.026.026.026zm1.976 0c.031 0 .052-.01.052-.02 0-.011-.02-.037-.052-.057-.03-.016-.05-.005-.05.02 0 .031.02.057.05.057zm-12.606-.051c.016 0 .026-.01.026-.026s-.01-.026-.026-.026c-.015 0-.025.01-.025.026 0 .015.01.026.025.026zm.591 0c.026 0 .046-.01.046-.021 0-.01-.036-.036-.082-.051-.046-.016-.067-.01-.046.02.02.026.056.052.082.052zm1.001 0c.016 0 .026-.01.026-.026s-.01-.026-.026-.026c-.015 0-.025.01-.025.026 0 .015.01.026.025.026zm3.749 0c.015 0 .025-.01.025-.026s-.01-.026-.025-.026c-.016 0-.026.01-.026.026 0 .015.01.026.026.026zm5.448-.016c.02-.02.02-.051 0-.067-.02-.02-.036-.005-.036.036.005.031.02.047.036.031zm2.105.016c.02 0 .077-.036.128-.088.062-.056.093-.154.093-.292a.705.705 0 00-.046-.283c-.036-.056-.052-.046-.083.041a.312.312 0 01-.184.165c-.083.03-.15.071-.15.097 0 .026.047.093.103.149.057.056.103.128.103.154.005.03.02.057.036.057zm-13.458-.052c.015 0 .025-.01.025-.026 0-.015-.01-.025-.025-.025-.016 0-.026.01-.026.025 0 .016.01.026.026.026zm.77 0c.015 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025s-.026.01-.026.025c0 .016.01.026.026.026zm12.272 0c.016 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025-.015 0-.026.01-.026.025 0 .016.01.026.026.026zm-15.677-.072c.083-.005.119-.04.124-.133a.296.296 0 00-.062-.195c-.041-.041-.072-.052-.077-.031-.005.026 0 .061 0 .087.005.026-.026.03-.067.016-.056-.021-.072.005-.056.107l.02.144c0 .01.052.01.118.005zm.047-.061c-.031.02-.067.01-.088-.02-.02-.032-.025-.068-.015-.078.01-.01.051 0 .087.02.046.031.052.057.016.078zm2.721.04c.046-.045.046-.076 0-.122-.046-.047-.061-.036-.061.061 0 .098.015.108.061.062zm.144.016a.098.098 0 00.051-.082c0-.03-.02-.046-.051-.046-.026 0-.051.036-.051.082 0 .046.025.062.05.046zm.334.026c.015 0 .005-.046-.026-.103-.041-.082-.036-.113.046-.154.057-.03.221-.072.375-.097.262-.047.267-.047.067-.052a.687.687 0 01-.319-.087c-.061-.046-.113-.062-.113-.046 0 .02.042.066.093.102.067.052.072.067.015.072-.04 0-.113-.036-.164-.082-.051-.046-.113-.067-.144-.046-.03.02-.056.056-.056.082 0 .026.051.046.113.046.061 0 .092.016.072.036-.02.02-.077.036-.124.041-.046 0-.102-.02-.123-.051-.02-.03-.01-.077.02-.113.042-.051.031-.067-.035-.067-.062 0-.082.031-.062.103.016.056.005.103-.02.103-.026 0-.047.02-.047.05 0 .027.072.042.154.032.083-.01.154 0 .154.015 0 .016-.03.067-.061.108-.057.062-.052.062.02.01.067-.051.088-.046.113.016.01.046.036.082.052.082zm.375 0c.015 0 0-.036-.036-.077s-.047-.103-.026-.144c.03-.051.026-.051-.03-.005-.057.051-.057.077 0 .144.035.046.076.082.092.082zm2.423 0c.031 0 .057-.02.057-.052 0-.03-.01-.05-.02-.05-.011 0-.037.02-.057.05-.02.026-.01.052.02.052zm9.217 0c.016 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.025.01-.025.026s.015.026.025.026zM2.28 16.282c.03 0 .097-.025.154-.05.056-.032.097-.073.097-.098 0-.026-.056-.057-.128-.067-.072-.016-.113-.005-.103.015.016.02 0 .057-.025.072-.026.015-.052.057-.052.082 0 .026.026.046.057.046zm5.376-.005c.005 0 .087-.04.18-.097a.727.727 0 01.308-.103c.077 0 .143-.02.143-.051 0-.026-.107-.052-.246-.052a1.69 1.69 0 01-.442-.071 1.006 1.006 0 01-.297-.16c-.077-.072-.103-.072-.108-.015a.409.409 0 000 .113c.005.026-.016.026-.047.01-.03-.02-.035-.056-.02-.087.02-.036.01-.041-.03-.016a.084.084 0 00-.037.103c.016.036-.005.062-.04.062-.037 0-.057-.036-.042-.082.015-.057.005-.052-.036.01-.051.077-.036.118.087.241.083.082.18.15.216.15.062 0 .062-.011 0-.088-.062-.082-.062-.082.015-.02a.969.969 0 00.232.112c.087.02.154.041.164.041zm-.58-.251c-.016 0-.026-.01-.026-.026 0-.015.01-.026.026-.026.015 0 .025.01.025.026 0 .015-.01.026-.025.026zm3.26.256c.036 0 .052-.015.036-.035-.02-.021-.051-.021-.067 0-.02.02-.005.035.031.035zm.385 0c.047 0 .088-.077.108-.225a.895.895 0 000-.334c-.02-.062-.077-.108-.138-.108-.057 0-.088.026-.072.051.02.031-.031.057-.113.057-.108.005-.118.01-.041.03.056.016.159.072.23.129l.129.103-.149-.036c-.123-.031-.144-.026-.118.046.026.067-.01.087-.185.103l-.215.02.246.01c.133.006.241.026.236.047a.196.196 0 000 .077c.005.015.041.03.082.03zm6.794-.046c.01-.036.01-.077-.01-.097a.047.047 0 00-.062 0c-.016.015-.01.061.01.097.036.052.046.052.062 0zm-9.454-.051c.108-.02.119-.036.052-.051-.052-.01-.118 0-.144.03-.036.036 0 .041.092.02zm7.59.046c.015 0 .025-.01.025-.026 0-.015-.01-.025-.025-.025-.016 0-.026.01-.026.025 0 .016.01.026.026.026zm1.694 0c.016 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025-.015 0-.025.01-.025.025 0 .016.01.026.025.026zm-15.25-.051c.015 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026s-.026.01-.026.026.01.026.026.026zm3.44 0c.016 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.026.01-.026.026s.01.026.026.026zm4.57 0c.016 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.026.01-.026.026s.01.026.026.026zm5.982 0c.036 0 .052-.016.036-.036-.02-.02-.051-.02-.067 0-.02.02-.005.036.031.036zm1.104 0c.016 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.025.01-.025.026s.01.026.025.026zm-15.815-.052c.015 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .015.01.025.026.025zm4.056 0c.016 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .015.01.025.025.025zm10.963-.005c.016 0-.02-.03-.072-.072a.454.454 0 00-.23-.071c-.108.005-.098.015.071.071l.231.072zm-14.357-.051c.057 0 .083-.01.067-.026-.015-.015-.062-.02-.097-.005-.042.016-.026.026.03.031zm1.967-.015c.02-.021.02-.052 0-.067-.02-.02-.036-.005-.036.036 0 .036.015.051.036.03zm11.697.02c.01 0 .036-.026.057-.051.015-.031.005-.052-.02-.052-.027 0-.057.02-.057.052-.006.025.005.051.02.051zm.873-.005c.03 0 .103-.041.16-.092a.742.742 0 00.164-.2.557.557 0 00.061-.165c0-.03-.077-.01-.164.046-.123.077-.267.103-.55.108-.21.005-.344.015-.292.03.051.016.077.047.061.073-.015.025.005.046.047.046.04 0 .092-.02.107-.051.016-.026.067-.052.108-.052.041 0 .072.026.072.057 0 .03-.036.04-.077.025s-.077-.015-.077-.005c0 .016.077.062.164.098.093.051.19.082.216.082zM1.54 15.985a.184.184 0 000-.129c-.015-.036-.025-.005-.025.062 0 .072.01.103.025.067zm1.089.04c.056 0 .118-.02.133-.045.016-.026-.015-.072-.072-.103-.056-.031-.102-.046-.102-.031a.5.5 0 01-.031.103c-.026.051-.005.077.072.077zm1.828 0c.015 0 .026-.01.026-.025 0-.015-.01-.026-.026-.026s-.026.01-.026.026c0 .015.016.026.026.026zm1.438 0c.015 0 .025-.01.025-.025 0-.015-.01-.026-.025-.026-.016 0-.026.01-.026.026 0 .015.015.026.026.026zm.215-.02c.02-.02.02-.051 0-.067-.02-.02-.036-.005-.036.036 0 .036.016.052.036.031zm4.303.016c.057 0 .077-.016.041-.031-.036-.016-.051-.046-.036-.072.016-.026-.02-.046-.077-.046-.056 0-.107.02-.107.04a.12.12 0 00.035.078c.021.02.083.03.144.03zm-.102-.047c-.016 0-.026-.01-.026-.025 0-.016.01-.026.026-.026.015 0 .025.01.025.026 0 .015-.01.025-.025.025zm2.351-.128c.026-.113.031-.231.016-.267-.016-.036-.052-.067-.077-.067-.026 0-.052.077-.052.175 0 .097.016.215.036.267.026.077.041.051.077-.108zm4.791.18c.01 0 .02-.01.02-.02 0-.011-.025-.042-.061-.062-.036-.021-.046-.016-.02.02.02.036.05.062.061.062zm-15.507-.052c.01 0 .02-.02.02-.051 0-.03-.025-.051-.056-.051-.03 0-.041.02-.02.051.02.026.046.051.056.051zm.149 0c.04 0 .077-.025.077-.056 0-.03.02-.041.046-.026.026.016.062.005.082-.02.016-.031.016-.052-.01-.052-.02 0-.092.016-.16.031-.06.016-.112.051-.112.077 0 .026.036.046.077.046zm2.26 0c.015 0 .025-.01.025-.025 0-.016-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .015.016.025.026.025zm1.899 0c.015 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .015.016.025.026.025zm.575-.015c.02-.02.02-.051 0-.067-.02-.02-.036-.005-.036.036.005.031.02.046.036.031zm8.185.015c.036 0 .051-.015.036-.036-.02-.02-.051-.02-.067 0-.025.021-.01.036.031.036zm-9.068-.056c.056 0 .082-.01.067-.026-.016-.015-.062-.02-.098-.005-.04.016-.03.03.03.03zm2.198 0c.174.005.287-.026.4-.108.082-.062.154-.133.154-.154 0-.02-.056-.03-.123-.01a1.439 1.439 0 01-.421-.026c-.164-.03-.324-.082-.354-.113-.041-.041-.02-.051.072-.026.071.021.313.047.539.062.405.03.416.026.575-.128.092-.088.17-.165.17-.17 0-.005-.15-.005-.335.005-.21.01-.42-.01-.564-.061-.129-.041-.216-.057-.2-.031.015.026.01.051-.021.051s-.062.052-.077.108c-.02.072-.057.098-.108.077-.046-.015-.082-.01-.082.02 0 .031-.041.052-.093.052-.056.005-.066.015-.025.03.051.021.051.042.005.098-.031.041-.082.072-.108.072-.026 0-.036-.02-.02-.04.015-.026-.006-.042-.047-.042-.04 0-.066.041-.061.087.005.057.036.077.082.062.046-.02.061-.005.04.03-.02.037.016.073.109.093.077.016.164.041.195.052.03.01.164.01.298.01zm6.562.005c.036 0 .051-.015.036-.036-.02-.02-.051-.02-.067 0-.026.02-.01.036.031.036zm2.798 0c.016 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025-.015 0-.025.01-.025.025 0 .016.01.026.025.026zm-14.526-.072a.507.507 0 01.128-.03c.026 0 .047-.021.047-.047s-.052-.077-.113-.123c-.113-.072-.118-.067-.129.077-.01.118.005.149.067.123zm1.535.02c.016 0 .026-.01.026-.025 0-.015-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .015.01.026.025.026zm1.053 0c.036 0 .051-.015.036-.035-.02-.02-.051-.02-.067 0-.026.02-.01.036.031.036zm.59 0c.016 0 .026-.01.026-.025 0-.015-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .015.01.026.025.026zm8.386-.004c.01 0 0-.021-.016-.047a.74.74 0 00-.22-.138c-.103-.046-.211-.098-.237-.108-.025-.01-.025.005-.005.041.02.036.134.103.252.16.113.045.215.092.226.092zm1.114.005c.015 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .015.01.026.026.026zm.16-.016c.014-.015.02-.061.004-.097-.015-.041-.03-.031-.03.03-.006.057.004.088.025.067zm2.053-.061a.427.427 0 00.067-.252v-.16l-.129.145c-.107.123-.118.164-.066.251.056.108.061.108.128.016zm-16.026.025c.01 0 .02-.01.02-.02s-.025-.041-.06-.062c-.037-.02-.047-.015-.021.02.025.037.051.062.061.062zm.231 0c.031 0 .052-.02.052-.051 0-.03-.02-.051-.052-.051-.03 0-.051.02-.051.051 0 .03.02.051.051.051zm3.23 0c.03 0 .057-.02.057-.051 0-.03-.01-.051-.021-.051-.01 0-.036.02-.056.051-.021.03-.01.051.02.051zm.431-.015a.124.124 0 00.072-.072c.01-.03-.015-.051-.051-.051a.07.07 0 00-.072.072c0 .04.026.061.051.05zm.21 0c.042 0 .063-.02.047-.041a.09.09 0 00-.077-.041c-.03 0-.046.02-.046.04.005.021.036.042.077.042zm9.608.015c.01 0 .02-.02.02-.051 0-.026-.025-.051-.056-.051-.03 0-.04.025-.02.051.02.03.046.051.056.051zm2.105 0c.01 0 .021-.01.021-.02s-.026-.041-.062-.062c-.036-.02-.046-.015-.02.02.026.037.051.062.061.062zm-15.44-.051c.03 0 .087-.015.134-.03.046-.016.082-.047.082-.073 0-.025-.052-.036-.113-.03-.062.005-.123.035-.134.071-.01.031 0 .062.031.062zm1.787-.015c.02-.021.02-.052 0-.067-.02-.02-.036-.005-.036.036 0 .03.015.046.036.03zm.678.015c.025 0 .061-.036.077-.082a.803.803 0 00.03-.103c0-.01-.025-.02-.056-.02-.03 0-.041.025-.02.05.015.032.005.052-.02.052-.032 0-.057.026-.057.052 0 .03.02.051.046.051zm.185 0c.04 0 .077-.02.077-.051 0-.026-.036-.036-.077-.02-.041.014-.077.04-.077.05 0 .01.036.021.077.021zm1.412 0c.036 0 .051-.015.036-.036-.02-.02-.052-.02-.067 0-.02.02-.005.036.03.036zm.41 0c.036 0 .052-.015.036-.036-.02-.02-.05-.02-.066 0-.02.02-.005.036.03.036zm3.107 0c.015 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025-.015 0-.026.01-.026.025 0 .016.016.026.026.026zm-7.24-.082c.046-.016.082-.052.082-.082 0-.026-.026-.041-.061-.031a.13.13 0 00-.083.082c-.015.036.01.051.062.03zm1.91.015c.02-.02.02-.051 0-.067-.02-.02-.036-.005-.036.036 0 .031.016.047.036.031zm.611.016c.072 0 .077-.016.02-.077a.258.258 0 00-.174-.072c-.103.005-.103.01.005.03.062.01.103.047.088.072-.01.026.015.047.061.047zm.478 0c.01 0 0-.02-.016-.052a.13.13 0 00-.092-.051c-.036 0-.03.02.015.051.041.026.082.052.093.052zm1.289 0c.035 0 .05-.016.035-.036-.02-.02-.05-.02-.066 0-.02.02-.005.036.03.036zm3.209 0c.015 0 .025-.01.025-.026 0-.015-.01-.026-.025-.026-.016 0-.026.01-.026.026 0 .015.016.026.026.026zm1.206 0c.01 0-.03-.057-.097-.129-.067-.072-.139-.128-.164-.128-.026 0 .02.056.097.128.077.067.15.123.164.129zm3.261 0c.016 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .015.016.026.026.026zm-12.58-.052c.015 0 .025-.01.025-.025 0-.016-.01-.026-.025-.026-.016 0-.026.01-.026.026 0 .015.016.025.026.025zm.138-.02l.165-.067c.072-.026.087-.067.061-.16-.02-.092-.01-.117.036-.102.036.01.062.062.052.108-.01.046.02.082.061.082.041 0 .082-.041.082-.087 0-.077.01-.077.047-.016.025.042.066.057.087.031.02-.025.01-.056-.02-.067-.037-.01-.062-.05-.062-.087 0-.04.046-.056.133-.04.088.015.124.004.103-.032-.02-.03-.082-.051-.144-.046a.162.162 0 00-.133.098c-.016.051-.041.092-.062.092-.02 0-.051-.036-.072-.077-.025-.062-.046-.067-.133-.015-.057.036-.098.107-.093.164.005.062-.02.103-.061.103a.11.11 0 00-.098.072c-.01.056.005.066.051.046zm1.356.02c.041 0 .072-.02.072-.051 0-.026-.046-.051-.108-.051-.056 0-.092.025-.072.05.02.027.067.052.108.052zm.724-.015c.015-.016.02-.062.005-.098-.015-.04-.03-.03-.03.031-.006.057.004.087.025.067zm.406.015c.015 0 .025-.01.025-.025 0-.016-.01-.026-.025-.026-.016 0-.026.01-.026.026 0 .015.01.025.026.025zm1.324 0c.01 0 .031-.046.047-.102.02-.088.01-.093-.072-.052-.052.031-.098.067-.098.077 0 .016.02.01.052-.005.03-.015.05-.005.05.02 0 .026.011.062.021.062zm.237 0c.03 0 .056-.02.056-.051 0-.026-.01-.051-.02-.051s-.036.025-.057.05c-.02.032-.01.052.02.052zm.236 0c.01 0 .02-.01.02-.02s-.025-.041-.061-.062c-.036-.02-.046-.015-.02.02.025.037.05.062.06.062zm.23-.005c.073 0 .098-.01.063-.025a.184.184 0 00-.129 0c-.036.01-.005.025.067.025zm.386.005c.015 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .015.01.025.026.025zm8.627 0c.015 0 .025-.01.025-.025 0-.016-.01-.026-.025-.026-.016 0-.026.01-.026.026 0 .015.01.025.026.025zm.128 0c.03 0 .051-.03.051-.061 0-.041.016-.036.052.015.04.067.051.062.051-.01 0-.057-.036-.087-.103-.087-.056 0-.102.035-.102.077 0 .03.02.066.05.066zm.734-.005c.077 0 .206-.03.288-.072.077-.04.226-.17.328-.282.103-.113.19-.22.19-.241 0-.016-.04 0-.092.04a.598.598 0 00-.113.103.912.912 0 01-.18.108 1.643 1.643 0 01-.36.113c-.179.03-.19.041-.102.093.098.056.098.056 0 .092-.087.041-.082.046.041.046zm1.032-.01c.041 0 .062-.02.047-.041a.09.09 0 00-.077-.041c-.031 0-.047.02-.047.04 0 .021.036.042.077.042zm-13.14-.036c.016 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025-.015 0-.025.01-.025.025 0 .016.01.026.025.026zm.873 0c.016 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025-.015 0-.025.01-.025.025 0 .016.01.026.025.026zm.103 0c.015 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025s-.026.01-.026.025c0 .016.01.026.026.026zm.334 0c.025 0 .046-.02.046-.041 0-.02-.036-.041-.077-.041s-.062.02-.046.04c.015.021.051.042.077.042zm10.5-.01c.083 0 .124-.01.093-.026a.261.261 0 00-.154 0c-.052.015-.026.026.061.026zm1.13.01c.015 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025-.015 0-.026.01-.026.025 0 .016.01.026.026.026zm-14.537-.051c.01 0 .036-.02.057-.052.015-.025.005-.051-.02-.051-.032 0-.057.026-.057.051-.005.026.005.052.02.052zm.822 0c.015 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .015.016.026.026.026zm.308 0c.015 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .015.016.026.026.026zm.58 0c.02 0 .067-.02.103-.047.051-.03.03-.046-.062-.046-.072 0-.118.02-.102.046.015.026.046.047.061.047zm1.007 0c.01 0 .015-.036.015-.077 0-.042-.02-.062-.041-.047-.026.016-.03.047-.015.077.015.026.036.047.04.047zm1.283 0c.041 0 .088-.036.103-.077.015-.042.015-.077 0-.077s-.062.035-.103.077c-.066.066-.066.077 0 .077zm3.882 0c.036 0 .052-.016.036-.036-.015-.02-.051-.02-.066 0-.016.02-.006.036.03.036zm4.083 0c.015 0 .025-.01.025-.026 0-.015-.01-.026-.025-.026-.016 0-.026.01-.026.026.005.015.015.026.026.026zm.77 0c.015 0 .025-.01.025-.026 0-.015-.01-.026-.025-.026-.016 0-.026.01-.026.026.005.015.015.026.026.026zm-13.495-.072c.02-.02.02-.052 0-.067-.02-.02-.036-.005-.036.036 0 .036.016.051.036.03zm1.48.02c.015 0 .025-.01.025-.025 0-.016-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .015.01.025.025.025zm3.07-.036c.02-.01.026-.046.01-.072-.015-.025-.061-.046-.103-.046-.04 0-.071.02-.071.046s.03.057.061.072c.036.01.082.01.103 0zm9.032.036c.01 0 .02-.061.026-.138.005-.103-.005-.118-.041-.062-.036.051-.041.015-.02-.108.02-.133.014-.154-.021-.077-.047.103-.047.103-.057 0-.005-.056-.02-.077-.03-.04-.016.03.01.143.05.24.047.103.088.185.093.185zm1.941 0c.036 0 .051-.015.036-.036-.015-.02-.051-.02-.067 0-.015.02-.005.036.031.036zm-13.222-.051c.015 0 .025-.01.025-.026 0-.015-.01-.025-.025-.025-.016 0-.026.01-.026.025 0 .016.016.026.026.026zm1.52 0c.025 0 .036-.036.015-.077-.015-.041-.051-.062-.077-.046-.026.015-.03.051-.015.077a.104.104 0 00.077.046zm.431 0c.015 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025-.015 0-.026.01-.026.025 0 .016.016.026.026.026zm.95 0c.03 0 .056-.02.056-.051 0-.026-.01-.052-.02-.052s-.036.026-.057.052c-.02.025-.01.05.021.05zm3.338-.016c.097 0 .138-.01.092-.025a.355.355 0 00-.18 0c-.051.015-.01.025.088.025zm2.156-.061a.493.493 0 00.046-.154c0-.026-.02-.016-.046.026a.355.355 0 00-.046.154c.005.05.02.04.046-.026zm1.181.077c.036 0 .052-.016.036-.036-.02-.02-.051-.02-.067 0-.015.02-.005.036.031.036zm.848 0c.056 0 .077-.057.066-.216l-.01-.22-.026.205-.025.205-.036-.23-.036-.232-.01.247c.005.18.02.24.077.24zm.251 0c.01 0 .03-.067.041-.154.01-.082.005-.154-.02-.154-.02 0-.041.072-.041.154s.01.154.02.154zm.832-.036c.041-.015.077-.051.077-.077a.477.477 0 00-.057-.154 2.245 2.245 0 01-.123-.447c-.04-.21-.072-.282-.072-.19-.005.082-.015.21-.03.283-.021.107-.021.113.02.025.036-.077.046-.03.041.18 0 .154.01.313.031.344.02.036.072.051.113.036zm-.046-.087c-.01.01-.036-.041-.057-.113-.02-.077-.025-.15-.01-.16.01-.01.036.042.056.113.016.078.021.15.01.16zm.477.123c.031 0 .052-.026.052-.051 0-.031-.02-.052-.052-.052-.03 0-.051.02-.051.052 0 .025.026.05.051.05zM2.814 15.41c.046 0 .082-.01.082-.021 0-.01-.02-.036-.046-.051-.026-.016-.062-.005-.083.02-.02.026 0 .052.047.052zm.23 0c.032 0 .052-.026.052-.052 0-.03-.02-.051-.051-.051-.031 0-.052.02-.052.051 0 .026.026.052.052.052zm.18 0c.016 0 .026-.01.026-.026s-.01-.026-.026-.026c-.015 0-.025.01-.025.026.005.015.015.026.025.026zm1.212 0c.036 0 .052-.016.036-.036-.02-.02-.051-.02-.067 0-.025.02-.01.036.031.036zm1.623 0c.01 0 .02-.01.02-.021 0-.01-.04-.051-.092-.087-.082-.062-.082-.062-.02.02a.392.392 0 00.092.088zm4.21-.077a1.09 1.09 0 01.262-.077c.041 0 .108.035.154.077.041.04.098.077.129.077.03 0 .03-.042-.005-.098a.64.64 0 00-.16-.175c-.061-.04-.154-.061-.215-.04-.103.025-.098.035.04.066.124.026.134.036.037.041a.873.873 0 00-.267.082c-.082.041-.154.088-.154.103-.005.01.077-.015.18-.056zm2.321.077c.01 0 .01-.062-.005-.134-.015-.072.016-.267.062-.426a2.34 2.34 0 01.154-.396c.062-.092.062-.092.026.006-.02.056-.041.148-.052.205-.01.056-.04.17-.072.246a.785.785 0 00-.056.206c0 .036.036-.02.082-.118a1.54 1.54 0 00.103-.334c.015-.082.03-.21.04-.282a1.72 1.72 0 01.18-.422c.103-.184.144-.302.114-.323-.031-.02-.057-.015-.057.01 0 .02-.051.098-.108.17l-.108.128.108-.18c.057-.097.134-.18.175-.18.04 0 .067-.05.072-.112.005-.062-.016-.103-.041-.088-.026.016-.036.047-.02.067.01.02-.021.036-.073.036-.082 0-.087-.01-.025-.097.05-.072.056-.134.015-.257a1.403 1.403 0 00-.154-.303c-.051-.077-.134-.144-.18-.144-.046 0-.108-.041-.144-.087-.056-.077-.087-.077-.2-.026-.077.036-.123.041-.103.01.016-.03.01-.051-.02-.051a.682.682 0 00-.185.051c-.087.036-.123.036-.103 0 .016-.03.005-.051-.03-.051-.036 0-.237.098-.447.21-.21.114-.663.396-1.001.617-.34.22-.647.405-.683.405-.036 0-.083-.02-.093-.046-.015-.026.082-.133.216-.246a5.48 5.48 0 01.385-.298c.077-.051.133-.103.118-.118-.015-.016-.18.087-.375.22-.19.134-.303.196-.251.134.071-.082.077-.108.025-.108-.04 0 .02-.082.134-.18.113-.097.524-.364.909-.6.39-.231.708-.432.708-.442 0-.01-.051-.005-.113.01-.066.021-.04-.01.062-.071.097-.057.144-.103.103-.103-.057 0-.062-.016-.016-.041.036-.026-.015-.041-.128-.041-.185 0-.185 0-.052.051l.14.051-.211.093c-.119.051-.221.087-.231.077-.01-.01.05-.052.138-.087.113-.047.139-.077.093-.108a.29.29 0 00-.144-.041c-.062 0-.062.01-.01.04.056.037.05.052-.021.078-.051.02-.113.01-.144-.02-.04-.042-.025-.047.041-.021.067.025.088.02.062-.02-.02-.037.015-.083.103-.114.077-.03.174-.04.22-.02.047.015.062.01.036-.01-.02-.021.047-.067.154-.098l.196-.057-.226-.04c-.124-.021-.2-.057-.165-.078.031-.02-.108-.03-.313-.025a2.266 2.266 0 00-.596.092c-.123.041-.205.056-.19.036a.475.475 0 01.196-.082c.092-.02.138-.046.107-.057-.03-.01-.195.026-.36.082a2.432 2.432 0 01-.353.103c-.031 0 .015-.03.102-.067l.154-.066-.23-.041c-.206-.036-.216-.047-.103-.083.071-.02.174-.04.23-.04.103 0 .103 0 0 .04-.066.026-.071.047-.025.047.041 0 .123-.02.18-.047.087-.036.087-.046.01-.046-.051 0-.092-.025-.092-.046 0-.02-.155 0-.35.056-.19.057-.508.108-.708.119-.226.01-.324 0-.257-.026.056-.026.087-.046.067-.046-.02 0-.21.03-.421.072-.21.04-.437.097-.493.128-.077.041-.129.041-.195 0-.083-.057-.083-.057 0-.03.051.015.087.004.087-.021 0-.026.139-.077.308-.108.17-.036.298-.072.288-.082-.01-.01-.237.015-.504.061s-.498.103-.523.123c-.026.021.04.057.149.077.102.021.23.062.277.093.061.041.128.03.236-.026a2.28 2.28 0 01.365-.133c.123-.031.261-.041.328-.016.098.036.057.062-.251.165-.2.066-.365.143-.365.164 0 .02.015.041.041.041.026 0 .2-.067.4-.149.196-.082.427-.16.514-.174.087-.016.123-.01.082 0-.061.02-.061.03 0 .066.046.031.01.036-.108.02-.107-.015-.143-.01-.092.016.067.031.02.067-.216.16-.17.066-.308.143-.308.169 0 .03.036.036.093.015l.529-.21c.24-.093.503-.17.59-.17.103 0 .005.052-.298.154a5.864 5.864 0 00-.631.247l-.18.092.262.2c.144.108.349.33.452.488.102.16.226.38.272.498.056.15.067.237.03.303-.03.062-.03.103 0 .124.031.02.016.082-.05.159-.057.072-.119.118-.13.102-.014-.015-.045.031-.071.103l-.046.129.144-.134c.077-.077.24-.185.359-.246l.216-.113.55.092c.436.072.615.128.852.267.169.098.39.257.498.354.123.108.256.319.359.56.108.185.195.36.205.365zm-.01-.74c-.02.02-.036.005-.036-.036 0-.04.016-.051.036-.036.02.026.02.057 0 .072zm.041-.133c-.015 0-.025-.01-.025-.026 0-.015.01-.026.025-.026.016 0 .026.01.026.026 0 .01-.01.026-.026.026zm.046-.108c-.01.01-.02.005-.02-.016 0-.02.036-.102.077-.19a.51.51 0 01.103-.154c.015 0-.01.077-.062.17-.041.092-.087.18-.098.19zm-.534-.098c-.025.041-.05.057-.05.026 0-.026.02-.087.05-.128.026-.042.052-.052.052-.026s-.02.087-.052.128zm.077-.205c-.015 0-.025-.01-.025-.026 0-.015.01-.026.025-.026.016 0 .026.01.026.026s-.01.026-.026.026zm.047-.103c-.016 0-.01-.02.005-.051.015-.026.04-.052.056-.052s.01.026-.005.052c-.015.025-.041.051-.056.051zm.621 0c-.015 0-.026-.01-.026-.026 0-.015.01-.025.026-.025.015 0 .026.01.026.025 0 .016-.01.026-.026.026zm-1.094-.051c-.015 0 .031-.057.093-.129a.683.683 0 01.143-.128c.016 0-.03.057-.092.128a.57.57 0 01-.144.129zm.575-.103c-.01 0-.02-.01-.02-.02s.04-.052.092-.088c.082-.061.082-.061.02.02a.392.392 0 01-.092.088zm-1.304-.354c-.18.123-.195.128-.077.025.082-.071.257-.205.385-.292.18-.123.195-.129.077-.026a4.946 4.946 0 01-.385.293zm1.874.149c-.015 0-.025-.01-.025-.026 0-.015.01-.026.025-.026.016 0 .026.01.026.026 0 .015-.01.026-.026.026zm-1.489-.052c-.015 0-.025-.01-.025-.025 0-.016.01-.026.025-.026.016 0 .026.01.026.026 0 .015-.01.025-.026.025zm1.125 0c-.016 0-.01-.02.005-.051.015-.026.04-.051.056-.051s.01.025-.005.051c-.015.026-.04.051-.056.051zm-.91-.159l-.158.123.138-.148c.077-.083.15-.14.16-.124.01.016-.052.082-.14.15zm.55.108c-.015 0-.01-.02.005-.051.016-.026.041-.052.057-.052.015 0 .01.026-.005.052-.016.025-.041.051-.057.051zm.57-.205c-.015 0-.025-.01-.025-.026 0-.015.01-.026.025-.026.016 0 .026.01.026.026.005.015-.01.026-.026.026zm-.36-.052c-.015 0-.025-.01-.025-.025 0-.016.01-.026.026-.026.015 0 .025.01.025.026.006.015-.01.025-.025.025zm-1.437-.051c-.015 0-.026-.01-.026-.026 0-.015.01-.025.026-.025.015 0 .026.01.026.025.005.016-.01.026-.026.026zm.924 0c-.015 0-.025-.01-.025-.026 0-.015.01-.025.025-.025.016 0 .026.01.026.025.005.016-.01.026-.026.026zm-.821-.051c-.016 0-.026-.01-.026-.026s.01-.026.026-.026c.015 0 .025.01.025.026.006.015-.01.026-.025.026zm1.417 0c-.015 0 .041-.057.123-.129.082-.072.175-.128.2-.128.026 0-.03.056-.123.128a1.162 1.162 0 01-.2.129zm-.858-.103c-.015 0-.01-.02.006-.051.015-.026.04-.052.056-.052.015 0 .01.026-.005.052-.015.025-.041.05-.057.05zm-.22-.16l-.18.119.154-.134c.082-.072.175-.133.2-.133.026 0 .036.005.026.015-.015.01-.103.072-.2.134zm.744.109c-.015 0-.025-.01-.025-.026s.01-.026.025-.026c.016 0 .026.01.026.026 0 .015-.016.026-.026.026zm-.308-.108c-.03 0-.005-.036.051-.077.057-.041.15-.103.206-.134.056-.03.03.005-.051.077-.088.077-.18.134-.206.134zm.462-.047c-.025 0-.005-.03.052-.071a.406.406 0 01.149-.077c.025 0 .005.03-.052.071a.406.406 0 01-.149.077zm-.58-.133c-.072.026-.077.02-.03-.03.035-.037.076-.052.092-.037.02.02-.01.052-.062.067zm-2.357-.072c-.015 0 0-.036.036-.082.036-.046.298-.195.585-.334.283-.138.555-.251.596-.251.041 0-.108.082-.334.18a4.336 4.336 0 00-.631.333 1.408 1.408 0 01-.252.154zm2.526 0c-.015 0-.025-.01-.025-.026 0-.015.01-.025.025-.025.016 0 .026.01.026.025 0 .016-.015.026-.026.026zm-1.263-.103c-.056.031-.097.047-.097.031 0-.015.061-.061.133-.108.072-.046.118-.061.098-.03a.37.37 0 01-.134.107zm.237-.154c-.016 0-.026-.01-.026-.025 0-.016.01-.026.026-.026.015 0 .025.01.025.026 0 .015-.015.025-.025.025zm.282-.154c-.113.057-.205.093-.205.077 0-.015.092-.072.205-.128.113-.057.205-.092.205-.077a.82.82 0 01-.205.128zm-.18-.051c-.015 0-.025-.01-.025-.026 0-.015.01-.025.025-.025.016 0 .026.01.026.025 0 .016-.01.026-.026.026zm.103-.051c-.015 0-.026-.01-.026-.026 0-.015.01-.026.026-.026.015 0 .026.01.026.026 0 .015-.01.026-.026.026zm-.077-.103c-.036 0-.051-.015-.036-.036.02-.02.051-.02.067 0 .02.02.005.036-.031.036zm-.026-.205c-.015 0-.025-.01-.025-.026s.01-.026.025-.026c.016 0 .026.01.026.026 0 .015-.01.026-.026.026zm.103-.052c-.015 0-.026-.01-.026-.026 0-.015.01-.025.026-.025.015 0 .026.01.026.025 0 .016-.01.026-.026.026zm-.154-.051c-.016 0-.026-.01-.026-.026 0-.015.01-.026.026-.026.015 0 .026.01.026.026s-.01.026-.026.026zm.36-.031c-.119.026-.14.02-.078-.02.062-.047.046-.052-.077-.031l-.154.025.17-.077a.572.572 0 01.36-.04c.174.035.179.04.06.071-.071.02-.2.051-.282.072zm.046-.077c.056 0 .082-.01.066-.026-.015-.015-.061-.02-.097-.005-.041.016-.031.031.03.031zm-.663.056c-.015 0-.026-.01-.026-.025 0-.016.01-.026.026-.026s.026.01.026.026c0 .015-.01.025-.026.025zm-1.155-.056c-.052 0-.041-.015.025-.046.103-.046.103-.046 0-.052-.102-.005-.102-.005 0-.05a.546.546 0 01.18-.047c.046 0 .041.015-.025.046-.067.03-.078.046-.026.046.067.005.067.01 0 .057a.355.355 0 01-.154.046zm1.283.005c-.035 0-.05-.015-.035-.036.02-.02.05-.02.066 0 .02.02.005.036-.03.036zm.155-.056c-.047 0-.042-.016.025-.047a.546.546 0 01.18-.046c.046 0 .041.016-.026.046a.546.546 0 01-.18.047zm-1.828-.052c-.062 0-.072-.015-.031-.03.036-.016.082-.01.097.005.016.015-.015.03-.066.025zm3.789 3.723c.092-.082.277-.226.406-.318.133-.093.385-.237.56-.319.174-.082.42-.164.539-.185.154-.02.225-.061.24-.128.016-.051.006-.108-.015-.123-.025-.016-.05.015-.066.061-.016.052-.026-.128-.031-.395-.005-.267-.02-.467-.036-.452-.015.02-.036.175-.036.344-.005.17-.026.308-.046.308s-.036-.107-.031-.246a1.413 1.413 0 00-.03-.365c-.026-.082-.021-.113.02-.087.03.02.056.01.056-.015a.113.113 0 00-.046-.083c-.026-.015-.062.016-.082.072-.02.057-.057.103-.082.103-.026 0-.036-.062-.02-.144.015-.077.015-.113-.006-.077a.107.107 0 01-.092.062c-.036 0-.129.067-.206.149-.087.092-.128.174-.102.215.025.042.02.052-.026.026-.041-.026-.057-.005-.046.057.01.056-.01.087-.047.082-.035-.005-.143.108-.236.256-.092.15-.292.493-.436.76a6.42 6.42 0 00-.267.534c0 .021.072-.005.164-.092zm.786-.893c-.016 0-.026-.01-.026-.026s.01-.026.026-.026c.015 0 .025.01.025.026 0 .015-.015.026-.025.026zm-.257-.052c-.015 0-.026-.01-.026-.025 0-.016.01-.026.026-.026.015 0 .026.01.026.026 0 .015-.016.025-.026.025zm.519-.067c-.021.021-.036.006-.036-.035 0-.036.015-.052.036-.036a.05.05 0 010 .071zm-.211-.035c-.015 0-.026-.01-.026-.026s.01-.026.026-.026c.015 0 .026.01.026.026 0 .015-.01.026-.026.026zm-.205-.052c-.016 0-.026-.01-.026-.026 0-.015.01-.025.026-.025.015 0 .025.01.025.025 0 .016-.01.026-.025.026zm.924 0c-.016 0-.026-.01-.026-.026 0-.015.01-.025.026-.025.015 0 .026.01.026.025 0 .016-.01.026-.026.026zm-.642-.103c-.026.042-.051.052-.051.026s.02-.087.051-.128c.026-.041.051-.052.051-.026a.35.35 0 01-.051.128zm-.231 0c-.015 0-.026-.01-.026-.025 0-.016.01-.026.026-.026.015 0 .026.01.026.026 0 .015-.01.025-.026.025zm.416-.015c-.02.02-.036.005-.036-.036 0-.036.015-.051.036-.036a.05.05 0 010 .072zm.046-.139c-.015 0-.026-.01-.026-.025 0-.016.01-.026.026-.026s.026.01.026.026c0 .015-.016.025-.026.025zm.051-.205c-.015 0-.025-.01-.025-.026 0-.015.01-.025.025-.025.016 0 .026.01.026.025 0 .016-.015.026-.026.026zm.057-.118c-.02.02-.036.005-.036-.036 0-.036.015-.051.036-.036a.05.05 0 010 .072zm-.416 1.813c.015 0 .026-.01.026-.026s-.01-.026-.026-.026c-.015 0-.026.01-.026.026 0 .015.01.026.026.026zm.519-.016c.02-.02.02-.051 0-.067-.02-.02-.036-.005-.036.036.005.031.02.047.036.031zm1.694 0c.02-.02.02-.051 0-.067-.02-.02-.036-.005-.036.036.005.031.02.047.036.031zm-11.82-.036c.01 0 .056-.015.097-.03.047-.016.082-.057.082-.083 0-.03-.03-.025-.077.01-.04.036-.102.047-.138.026-.041-.026-.046-.015-.026.02.03.032.051.057.062.057zm2.11 0c.016 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .015.01.025.026.025zm.668 0c.015 0 .025-.01.025-.025 0-.016-.01-.026-.025-.026-.016 0-.026.01-.026.026 0 .015.01.025.026.025zm.539-.051a.388.388 0 00.128-.103c.016-.026-.015-.051-.072-.051-.056 0-.107.025-.107.056s-.021.041-.052.02c-.03-.02-.036 0-.02.047.02.062.051.067.123.03zm.436.051c.016 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .015.01.025.025.025zm2.645 0c.036 0 .051-.015.036-.036-.02-.02-.052-.02-.067 0-.026.02-.01.036.03.036zm3.106 0c.016 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .015.01.025.025.025zm.935-.195c.015-.149-.005-.241-.062-.298-.072-.072-.082-.061-.077.118 0 .144.016.175.052.118.036-.056.05-.035.061.103.005.164.005.164.026-.04zm.811.195c.016 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .015.01.025.026.025zm1.017 0c.061 0 .195-.02.293-.051.097-.026.308-.139.462-.247.19-.133.277-.226.267-.287-.01-.072.01-.082.092-.057.067.02.16 0 .236-.046l.257-.164c.072-.046.128-.062.128-.041 0 .025-.123.113-.272.195-.149.082-.287.174-.303.205-.02.031-.025.072-.01.093.015.02.051.04.087.04s.129-.06.216-.133c.082-.072.149-.154.144-.18-.005-.025.02-.03.061-.015.052.02.093-.02.134-.118.03-.082.087-.18.123-.226a.662.662 0 00.103-.226c.03-.133.026-.144-.046-.082-.072.057-.077.057-.047-.03.031-.088.026-.093-.061-.021-.077.056-.087.061-.036 0 .036-.041.061-.088.061-.113 0-.02-.046-.062-.102-.093-.082-.04-.103-.04-.093.01.005.036-.02.067-.061.067a.854.854 0 00-.247.072c-.092.041-.246.057-.344.041-.097-.015-.19-.005-.21.026-.02.03-.15.108-.298.175-.144.066-.324.123-.39.123-.103 0-.113.01-.052.051.057.036.057.051.01.051a.4.4 0 01-.153-.046c-.057-.03-.108-.02-.15.02-.05.057-.04.078.047.103.103.031.103.042.02.088-.072.04-.077.061-.02.097a.48.48 0 00.215.047c.093 0 .134.02.108.061-.025.041.005.046.113.02.082-.02.247-.092.365-.164.118-.072.216-.154.216-.18 0-.03.035-.04.082-.025.046.02.066.01.046-.02-.02-.036.015-.042.097-.021.093.02.206-.005.37-.103.134-.072.252-.123.262-.113.01.01-.077.077-.2.15a1.545 1.545 0 01-.442.163c-.128.021-.241.072-.267.124-.026.046-.164.149-.303.226-.138.077-.292.138-.334.138a.157.157 0 01-.123-.072c-.02-.036-.108-.082-.195-.097-.133-.026-.139-.02-.067.036.047.036.072.082.052.108-.02.02 0 .025.051.01.046-.016.103-.01.118.015.016.026 0 .052-.036.052-.051 0-.051.01.005.046.057.036.052.051-.025.072-.067.015-.047.03.056.036l.154.01-.17.046c-.092.026-.153.072-.138.098.015.036.077.056.144.056zm.087-.056c-.072 0-.097-.01-.061-.026a.184.184 0 01.128 0c.03.01 0 .026-.067.026zm.206-.046c-.036 0-.052-.016-.036-.036.02-.021.051-.021.066 0 .02.02.005.036-.03.036zm.184-.088c-.036.016-.066-.005-.066-.046s.03-.072.066-.072c.036 0 .067.02.067.046.005.026-.026.057-.067.072zm-.215-.02c-.062 0-.072-.016-.031-.031.036-.016.082-.016.097.005.016.015-.015.03-.066.026zm-.052-.103c-.061 0-.072-.015-.03-.03.036-.016.082-.016.097.004.016.016-.015.031-.067.026zm.185-.046c-.036 0-.051-.016-.036-.036.02-.02.052-.02.067 0 .02.02.005.036-.03.036zm-.087-.324c-.077.01-.077.005.005-.02.082-.02.082-.036.026-.077-.057-.036-.057-.046-.005-.031.036.01.066.041.066.067 0 .03-.04.056-.092.061zm-.272-.046c-.098 0-.139-.01-.093-.026a.528.528 0 01.18 0c.051.016.01.026-.087.026zm.996.005c-.062 0-.072-.015-.03-.03.035-.016.081-.016.097.004.015.016-.016.031-.067.026zm-.899-.149a.46.46 0 01-.2-.051c-.056-.036-.026-.041.103-.015.097.02.19.04.2.05.01.011-.036.016-.103.016zm.083-.102c-.016 0-.026-.01-.026-.026s.01-.026.026-.026c.015 0 .025.01.025.026 0 .015-.015.026-.025.026zm.128-.052c-.036 0-.051-.015-.036-.036.02-.02.051-.02.067 0 .02.02.005.036-.031.036zm.719-.205c-.036 0-.052-.016-.036-.036.02-.02.051-.02.067 0 .02.02.005.036-.031.036zm.744-.257c-.015 0-.025-.01-.025-.026 0-.015.01-.025.025-.025.016 0 .026.01.026.025 0 .016-.015.026-.026.026zm-.77 1.49c.016 0 .026-.011.026-.026 0-.016-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .015.01.025.026.025zm.38-.134c.093-.088.16-.185.149-.216-.01-.03-.087.041-.17.16l-.148.215zm-14.737.061c.113.005.206-.015.206-.046 0-.026-.031-.036-.072-.02-.041.015-.088-.01-.108-.057-.031-.082-.036-.082-.098 0-.036.051-.082.072-.097.057-.02-.021-.036-.01-.036.015 0 .026.097.051.205.051zm.93-.04c.03-.052.087-.078.138-.062.077.025.077.02.01-.026a.304.304 0 00-.138-.057c-.036 0-.062.052-.062.113 0 .103.005.108.052.031zm1.638.06c.035 0 .05-.015.035-.035-.02-.02-.05-.02-.066 0-.02.02-.005.036.03.036zm1.52 0c.01 0 .035-.02.05-.05.016-.031-.004-.052-.05-.052-.047 0-.067.02-.052.052.015.025.036.05.051.05zm-3.749-.086c.041-.016.072-.047.072-.072 0-.026-.03-.047-.072-.047-.041 0-.087.021-.103.047-.015.025-.015.056 0 .072.02.015.067.015.103 0zm2.721.036c.016 0 .026-.01.026-.026s-.01-.026-.026-.026c-.015 0-.025.01-.025.026 0 .015.01.026.025.026zm.196 0c.015 0 .04-.026.056-.052.015-.03.02-.051.005-.051s-.04.02-.056.051c-.016.026-.016.052-.005.052zm.575 0c.015 0 .025-.01.025-.026s-.01-.026-.025-.026c-.016 0-.026.01-.026.026 0 .015.01.026.026.026zm.975 0c.016 0 .026-.01.026-.026s-.01-.026-.026-.026c-.015 0-.025.01-.025.026 0 .015.01.026.025.026zm6.44-.103c.02-.072.04-.165.046-.21a.073.073 0 00-.072-.083c-.046 0-.067.03-.052.067.016.036.005.067-.025.067-.026 0-.052-.041-.052-.088 0-.077-.01-.077-.051-.015-.041.062-.051.062-.056-.026-.006-.102-.006-.102-.047 0-.04.098-.04.098-.077-.015-.02-.062-.056-.103-.082-.087-.026.015-.046.082-.046.143.005.108.005.108.046.01.041-.092.046-.092.046-.01 0 .052.036.129.082.17.062.061.078.061.083.01 0-.036.025-.02.046.036.026.056.046.072.046.041 0-.036.026-.062.057-.062.03 0 .05.042.056.093.01.056.026.041.051-.041zm.554-.046a.746.746 0 00-.005-.247c-.016-.041-.051-.072-.082-.072-.036 0-.041.031 0 .098.03.056.056.164.061.246.005.134.005.134.026-.025zm-12.416.071a.105.105 0 00.051-.082c0-.025-.02-.036-.051-.02-.026.015-.051.056-.051.082 0 .026.025.036.05.02zm3.41.026c.015 0 .04-.02.056-.051.015-.026.02-.052.005-.052s-.041.026-.056.052c-.016.025-.016.051-.006.051zm2.967-.02c.334-.02.427-.047.586-.17l.19-.149-.432-.03c-.267-.021-.503-.067-.61-.124-.16-.082-.17-.082-.108-.005.04.046.056.103.04.118-.02.02-.087.041-.148.046-.062.006-.129.016-.15.016-.02 0-.03.036-.02.082.005.041.031.092.057.113.025.02.025.01.005-.026s-.01-.061.02-.061c.031 0 .042-.026.021-.062-.02-.036-.015-.046.026-.02.03.02.046.056.03.087-.015.03 0 .051.036.051.052.005.052.01-.005.03-.061.027-.061.037 0 .078.036.03.247.041.462.026zm6.332.02c.015 0 .025-.01.025-.026 0-.015-.01-.025-.025-.025-.016 0-.026.01-.026.025 0 .016.015.026.026.026zm.8 0c.031 0 .042-.02.026-.046-.015-.026-.015-.082 0-.128.016-.047.057-.067.083-.052.025.016.01-.036-.042-.118a1.567 1.567 0 00-.159-.216c-.051-.056-.067-.056-.072 0-.005.036-.025.01-.046-.061-.03-.093-.04-.103-.046-.036-.005.051.036.164.082.257a1.1 1.1 0 01.098.251.96.96 0 00.015.118c.005.02.03.031.062.031zm-.02-.308a.392.392 0 01-.092-.087c-.062-.082-.062-.082.02-.02.052.04.088.076.088.092 0 .005-.006.015-.016.015zm-13.073.257c.056 0 .092-.02.072-.052-.016-.025-.067-.05-.108-.05-.041 0-.072.025-.072.05 0 .026.051.052.108.052zm.272 0c.01 0 .092-.036.185-.082.123-.062.154-.098.108-.139-.047-.041-.077-.036-.118.026-.031.046-.088.072-.124.061-.036-.01-.061.016-.061.062s0 .072.01.072zm.498 0c.026 0 .046-.02.046-.052 0-.025-.036-.05-.082-.05-.046 0-.067.025-.046.05.02.026.056.052.082.052zm2.383 0c.015 0 .025-.01.025-.026 0-.015-.01-.026-.025-.026-.016 0-.026.01-.026.026s.015.026.026.026zm1.278 0c.016 0 .041-.02.057-.052.015-.025.02-.05.005-.05-.016 0-.041.025-.057.05-.015.026-.02.052-.005.052zm.467 0c.016 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.025.01-.025.026s.015.026.025.026zm1.849 0c.015 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.026.01-.026.026s.016.026.026.026zm3.132 0c.016 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.025.01-.025.026s.015.026.025.026zM2.66 15.096c.056 0 .082-.01.066-.025-.015-.016-.061-.02-.097-.005-.041.015-.031.03.03.03zm3.892-.03c.02-.01.04-.047.04-.078 0-.03-.025-.035-.05-.02-.031.015-.072-.02-.098-.087-.036-.093-.046-.098-.051-.026 0 .051.025.123.061.16.031.045.077.066.098.05zm.524.035c.015 0 .025-.01.025-.025 0-.016-.01-.026-.025-.026-.016 0-.026.01-.026.026.005.015.015.025.026.025zm.544-.025c.056-.02.18-.098.267-.18.092-.082.149-.164.128-.18-.02-.02-.092-.015-.17 0-.102.026-.128.057-.107.134.015.056.005.103-.02.103-.026 0-.047-.026-.047-.052 0-.03-.03-.051-.072-.051a.154.154 0 00-.107.051c-.021.031-.021.087-.006.134.016.046.062.061.134.04zm6.234.025c.015 0 .025-.01.025-.025 0-.016-.01-.026-.025-.026-.016 0-.026.01-.026.026.005.015.015.025.026.025zm1.232 0c.015 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.026.01-.026.026.005.015.016.025.026.025zm.257 0c.015 0 .025-.01.025-.025 0-.016-.01-.026-.025-.026-.016 0-.026.01-.026.026.005.015.015.025.026.025zm-12.324-.05c.046 0 .077-.027.067-.057-.01-.031-.041-.057-.067-.057-.026 0-.056.026-.067.057-.01.03.02.056.067.056zm2.218-.016c.02-.02.02-.052 0-.067-.02-.02-.036-.005-.036.036 0 .03.016.046.036.03zm.586.015c.025 0 .046-.01.046-.02s-.036-.047-.077-.083c-.067-.056-.072-.05-.046.021.02.041.056.082.077.082zm.431 0c.015 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025-.015 0-.026.01-.026.025.005.016.016.026.026.026zm3.78 0c.035 0 .05-.015.035-.036-.02-.02-.051-.02-.067 0-.025.02-.01.036.031.036zm2.798 0c.015 0 .025-.01.025-.026 0-.015-.01-.025-.025-.025-.016 0-.026.01-.026.025 0 .016.01.026.026.026zm.93-.015c.015-.016.02-.062.004-.098-.015-.04-.03-.03-.03.031-.006.056.005.087.025.067zm-11.097-.036c.015 0 .025-.01.025-.026 0-.015-.01-.026-.025-.026-.016 0-.026.01-.026.026s.01.026.026.026zm.149 0c.046 0 .082-.02.082-.052 0-.025-.02-.05-.046-.05s-.062.025-.083.05c-.02.026 0 .052.047.052zm.77 0c.015 0 .046-.046.077-.103.046-.082.041-.097-.026-.072-.051.02-.077 0-.077-.056 0-.047-.025-.077-.061-.067a.144.144 0 00-.083.082c-.01.036.016.062.062.062s.082.036.082.077c.005.04.016.077.026.077zm.231 0c.026 0 .062-.02.082-.052.02-.03 0-.036-.046-.02-.041.015-.082.041-.082.051 0 .01.02.02.046.02zm.339 0c.041 0 .072-.01.072-.02 0-.011-.046-.032-.103-.047-.056-.015-.087-.005-.072.02.016.026.062.047.103.047zm2.927 0c.015 0 .025-.01.025-.026 0-.015-.01-.026-.025-.026-.016 0-.026.01-.026.026s.01.026.026.026zm.277 0c.03 0 .057-.02.057-.052 0-.025-.01-.05-.021-.05-.01 0-.036.025-.057.05-.02.026-.01.052.021.052zm6.244 0c.015 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.026.01-.026.026s.01.026.026.026zm3.851 0c.016 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.026.01-.026.026s.01.026.026.026zm-14.26-.052c.021 0 .067-.025.098-.061.036-.036.062-.082.062-.103 0-.02-.026-.041-.057-.041-.03 0-.036.026-.015.062.02.036.015.046-.02.02a.125.125 0 00-.114-.005c-.03.015-.04.051-.02.082.015.026.046.046.067.046zm9.921-.441c.144-.252.39-.627.544-.837.155-.206.314-.39.355-.406.04-.015.072-.051.072-.072 0-.025-.031-.046-.072-.046-.041 0-.139.057-.221.123-.082.067-.282.355-.452.637-.2.329-.323.493-.35.457-.025-.036-.03-.015-.01.046a.6.6 0 01-.046.293 1.412 1.412 0 00-.077.226c-.005.026.113-.164.257-.421zm2.075.441c.015 0 .025-.01.025-.025 0-.016-.01-.026-.025-.026-.016 0-.026.01-.026.026 0 .015.015.025.026.025zm.318-.066a.355.355 0 000-.18c-.015-.051-.026-.01-.026.092 0 .103.016.139.026.088zm-10.383.015c.016 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025-.015 0-.025.01-.025.025 0 .016.015.026.025.026zm1.772 0c.03 0 .051-.036.051-.082 0-.046-.02-.067-.051-.046a.098.098 0 00-.051.082c0 .026.025.046.05.046zm.277 0c.016 0 .041-.026.057-.051.015-.031.02-.052.005-.052-.016 0-.041.02-.057.052-.015.025-.015.051-.005.051zm-4.385-.051c.03 0 .057-.026.057-.052 0-.03-.01-.051-.021-.051-.01 0-.036.02-.057.051-.02.026-.01.052.021.052zm.205 0c.036 0 .052-.016.036-.036-.02-.02-.051-.02-.066 0-.02.02-.006.036.03.036zm.899 0c.015 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.026.01-.026.026.005.015.016.026.026.026zm1.13 0c.015 0 .025-.01.025-.026 0-.015-.01-.026-.025-.026-.016 0-.026.01-.026.026.005.015.015.026.026.026zm2.418 0c.036 0 .093-.036.129-.077.035-.041.056-.082.046-.082a.915.915 0 00-.16-.021c-.087-.01-.143.005-.143.046 0 .036.015.082.036.098.015.02.056.036.092.036zm7.548 0c.01 0 .005-.103-.01-.226-.026-.19-.01-.267.103-.462.077-.129.174-.257.226-.283.051-.025.092-.097.097-.154.005-.061-.015-.092-.046-.077-.036.02-.041-.005-.015-.082.025-.082.02-.103-.02-.077-.042.026-.052 0-.027-.087.021-.082.01-.124-.035-.129-.036 0-.103-.02-.155-.036-.066-.03-.097.016-.148.237a3.762 3.762 0 00-.072.641c0 .2-.016.355-.031.334a.158.158 0 00-.093-.046c-.035-.005-.061.01-.061.036 0 .026.04.072.092.103.052.03.072.051.052.051-.02 0 0 .062.046.128a.981.981 0 00.097.129zm.262-1.197c-.01.01-.036-.015-.051-.061a.606.606 0 01-.03-.144c0-.03.025-.005.05.062.031.066.042.133.031.143zm-.056 1.197c.01 0 .02-.01.02-.02 0-.011-.025-.042-.061-.062-.036-.021-.047-.016-.02.02.025.036.05.062.06.062zm-12.586-.052c.016 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.025.01-.025.026.005.015.015.025.025.025zm2.167-.015c.02-.02.02-.051 0-.067-.02-.02-.036-.005-.036.036.005.031.02.046.036.031zm.15-.02c.04-.016.076-.042.076-.052 0-.01-.036-.02-.077-.02s-.077.02-.077.05c0 .032.03.042.077.021zm.261.02c.02-.02.02-.051 0-.067-.02-.02-.036-.005-.036.036.005.031.02.046.036.031zm1.381.015c.01 0 .005-.036-.01-.077-.015-.04-.041-.066-.056-.056-.016.015-.01.051.01.077.02.03.046.056.056.056zm.206 0c.015 0 .025-.01.025-.025 0-.016-.01-.026-.025-.026-.016 0-.026.01-.026.026 0 .015.01.025.026.025zm2.644-.005c.195-.005.416-.051.524-.108a1.2 1.2 0 00.195-.107c0-.01-.144-.005-.318.005-.288.015-.36 0-.673-.165-.195-.097-.375-.17-.395-.154a.41.41 0 00-.098.129c-.046.082-.03.108.077.159.072.03.113.082.098.113-.016.03-.016.04.01.02.026-.02.087 0 .149.041.061.052.195.072.431.067zm-.488-.205a.503.503 0 01-.18-.082c-.076-.047-.092-.067-.03-.047.082.026.087.016.036-.04-.036-.047-.041-.088-.01-.103a.064.064 0 01.082.02c.015.026.05.041.071.031.021-.015.042.01.042.051 0 .041-.026.077-.057.077-.03 0-.02.021.02.052.042.02.052.04.026.04zm-.154-.2c.016 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .015.01.026.025.026zm-5.617.359c.025 0 .04-.02.04-.046a.115.115 0 00-.04-.077c-.026-.016-.041.005-.041.046s.02.077.04.077zm4.072 0c.015 0 .025-.01.025-.026 0-.015-.01-.025-.025-.025-.016 0-.026.01-.026.025 0 .016.015.026.026.026zm1.13 0c.015 0 .025-.01.025-.026 0-.015-.01-.025-.026-.025-.015 0-.025.01-.025.025 0 .016.015.026.025.026zm6.058 0c.016 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025-.015 0-.025.01-.025.025 0 .016.015.026.025.026zm.103 0c.016 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025-.015 0-.026.01-.026.025 0 .016.016.026.026.026zm.206 0c.015 0 .025-.01.025-.026 0-.015-.01-.025-.025-.025-.016 0-.026.01-.026.025 0 .016.015.026.026.026zm-7.78-.077A.105.105 0 007 14.583c0-.031-.021-.036-.052-.02-.025.015-.051.056-.051.081 0 .026.026.036.051.021zm.858-.01c.03-.01.072-.067.087-.124.015-.056.01-.097-.01-.097s-.088.015-.15.03c-.06.016-.112.062-.112.098a.1.1 0 00.067.088c.03.015.087.015.118.005zm.282.036c.02 0 .036-.047.031-.103-.005-.057-.036-.103-.072-.103a.068.068 0 00-.067.067c0 .036.016.082.036.103.016.02.046.036.072.036zm7.055 0c.016 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.025.01-.025.026-.005.01.01.026.025.026zm.257 0c.016 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.026.01-.026.026-.005.01.01.026.026.026zm-12.426-.052c.015 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026s-.026.01-.026.026c-.005.01.01.025.026.025zm.41 0c.016 0 .026-.01.026-.025 0-.016-.01-.026-.025-.026-.016 0-.026.01-.026.026-.005.01.01.025.026.025zm1.402 0c.057 0 .052-.02-.02-.077a.387.387 0 00-.175-.077c-.056 0-.051.02.02.077a.387.387 0 00.175.077zm.237 0c.015 0 .025-.01.025-.025 0-.016-.01-.026-.025-.026-.016 0-.026.01-.026.026 0 .01.015.025.026.025zm.113-.02c.02-.02.02-.052 0-.067-.02-.02-.036-.005-.036.036 0 .036.015.051.036.03zm1.581.02c.016 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .015.016.025.026.025zm.54 0a.055.055 0 00.05-.051.051.051 0 00-.05-.051c-.031 0-.052.02-.052.051 0 .026.026.051.051.051zm7.214 0c.015 0 .025-.01.025-.025 0-.016-.01-.026-.025-.026-.016 0-.026.01-.026.026 0 .015.015.025.026.025zm.205 0c.016 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .015.016.025.026.025zm1.366 0c.03 0 .041-.072.03-.164-.01-.103-.05-.164-.107-.175-.046-.005-.087.006-.087.031 0 .026.025.057.051.077.03.02.041.052.02.082a.109.109 0 000 .098.14.14 0 00.093.051zm-.03-.256c-.016 0-.026-.01-.026-.026 0-.015.01-.026.025-.026.016 0 .026.01.026.026 0 .015-.01.026-.026.026zm-11.523.128c.025-.077.01-.118-.072-.164-.062-.031-.134-.047-.16-.026-.03.02-.015.041.037.051.046.01.102.067.123.129.03.108.036.108.072.01zm.518.02c.052-.025.093-.077.093-.112 0-.042-.016-.042-.041-.01-.02.03-.067.05-.103.056l-.128.015c-.047.005-.042.02.01.057a.18.18 0 00.17-.005zm2.465.057c.026 0 .062-.036.082-.082a.105.105 0 00-.04-.129.289.289 0 00-.109-.046c-.02 0-.036.026-.036.052 0 .03.026.036.062.015.041-.026.051 0 .03.072-.025.067-.015.118.011.118zm7.78-.02c.02-.021.02-.052 0-.067-.021-.02-.037-.005-.037.036.005.036.016.051.036.03zm-9.613-.031c.04 0 .082-.02.097-.047.016-.025-.025-.04-.092-.04-.067.004-.113.025-.098.046a.13.13 0 00.093.04zm.56 0c.035 0 .03-.02-.016-.047-.067-.04-.061-.05.01-.082.052-.02.072-.066.057-.108-.02-.056-.041-.046-.093.042-.035.066-.05.133-.04.159.01.015.046.036.082.036zm.929 0c.015 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .015.016.026.026.026zm2.901-.031c.241-.02.467-.052.508-.072.042-.02-.061-.051-.236-.072a1.896 1.896 0 01-.441-.092c-.072-.031-.118-.083-.103-.103.015-.026-.005-.03-.051-.015a.193.193 0 00-.103.107c-.02.057-.005.067.072.047.056-.016.103-.021.103 0 0 .015-.072.056-.16.087-.118.04-.143.067-.092.103.036.02.267.03.503.01zm-.36-.031c-.071 0-.097-.01-.06-.026a.184.184 0 01.127 0c.036.016.006.026-.066.026zm5.418.062c.015 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .015.016.026.026.026zm1.078 0c.016 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .015.015.026.025.026zm-9.807-.052c.015 0 .025-.01.025-.025 0-.016-.01-.026-.025-.026-.016 0-.026.01-.026.026 0 .015.015.025.026.025zm.616 0c.015 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .015.016.025.026.025zm-2.285-.102a.384.384 0 00.051-.165c0-.046-.046-.113-.102-.144-.093-.05-.103-.04-.098.113.005.16.005.16.046.042.036-.119.041-.113.046.05.01.134.021.16.057.104zm.103.05c.03 0 .051-.05.051-.112 0-.092-.01-.103-.051-.036a.315.315 0 00-.052.118c.005.016.026.03.052.03zm1.13 0c.02 0 .081-.045.133-.102.051-.056.082-.113.072-.123-.01-.01-.072.036-.134.103-.061.066-.097.123-.072.123zm1.848-.025c.03-.015.051-.061.051-.097 0-.036-.056-.067-.128-.067-.072 0-.129.02-.129.046s.021.036.047.02c.025-.015.061.011.077.052.02.041.056.062.082.046zm-2.824-.025c.03 0 .051-.01.051-.021 0-.01-.02-.036-.051-.056-.031-.016-.052-.006-.052.02 0 .026.026.057.052.057zm.77 0c.036 0 .051-.016.036-.036-.02-.02-.052-.02-.067 0-.02.02-.005.036.03.036zm.75 0c.01 0 .02-.01.02-.021 0-.01-.026-.041-.062-.062-.035-.02-.046-.015-.02.021.02.036.051.062.062.062zm.724-.021c.02-.02.02-.051 0-.067-.021-.02-.036-.005-.036.036 0 .036.015.052.036.031zm.821 0c.046-.005.103-.056.134-.113.046-.097.046-.097-.031 0-.046.057-.082.072-.082.036s-.02-.051-.052-.03a.097.097 0 00-.051.076c0 .026.036.036.082.031zm3.096.01l.334-.005-.257-.072a5.236 5.236 0 01-.395-.128c-.077-.03-.128-.072-.113-.092.016-.021-.02-.031-.077-.016-.056.016-.103.041-.103.062 0 .02.016.056.041.087.021.03.083.082.14.113.056.03.25.056.43.051zm4.134.01c.015 0 .026-.01.026-.025 0-.015-.01-.026-.026-.026-.015 0-.026.01-.026.026.005.015.016.026.026.026zm-6.83-.05c.016 0 .026-.011.026-.026 0-.016-.01-.026-.025-.026-.016 0-.026.01-.026.026.005.015.015.025.026.025zm1.978 0c.036 0 .05-.016.036-.037-.021-.02-.052-.02-.067 0-.02.02-.005.036.03.036zm4.4-.18a6.69 6.69 0 01.144-.822c.03-.092.02-.087-.072.02-.092.103-.108.18-.098.565.006.242.016.35.026.237zm-10.685.128c.01 0 .02-.02.02-.051 0-.031-.026-.052-.056-.052-.031 0-.041.02-.02.052.02.025.045.05.056.05zm.102 0c.016 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025-.015 0-.025.01-.025.025 0 .016.01.026.025.026zm.252 0c.01 0 .02-.067.02-.149 0-.092-.036-.16-.087-.175a3.639 3.639 0 01-.174-.061c-.072-.031-.088-.01-.078.097.006.072.031.134.057.134.026 0 .03-.036.015-.082-.025-.067-.015-.072.036-.026.041.03.088.041.103.026.02-.02.036-.01.036.02 0 .031-.015.067-.036.077-.02.01-.01.016.026.005.036-.01.066.02.066.062 0 .041.006.072.016.072zm1.032 0c.015 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025-.015 0-.026.01-.026.025 0 .016.01.026.026.026zm.365-.016c.02-.02.02-.05 0-.066-.021-.02-.036-.005-.036.036.005.03.02.046.036.03zm1.581.016c.01 0 .036-.02.057-.051.015-.031.005-.052-.021-.052-.026 0-.056.02-.056.052 0 .03.01.05.02.05zm.822 0c.01 0 .036-.02.056-.051.016-.031.005-.052-.02-.052-.026 0-.057.02-.057.052 0 .03.01.05.02.05zm.878 0c.015 0 .025-.01.025-.026 0-.015-.01-.025-.025-.025-.016 0-.026.01-.026.025-.005.016.01.026.026.026zm-5.181-.067c.02-.02.02-.051 0-.067-.02-.02-.036-.005-.036.036 0 .031.015.047.036.031zm2.48.016c.025 0 .051-.021.051-.052a.051.051 0 00-.051-.051c-.031 0-.052.02-.052.051 0 .031.026.052.052.052zm2.08-.036c.04-.016.076-.036.076-.047 0-.01-.036-.025-.077-.046-.046-.015-.077 0-.077.046 0 .047.031.067.077.047zm7.984.036c.036 0 .051-.016.036-.036-.02-.02-.051-.02-.067 0-.02.02-.005.036.031.036zm-11.245-.052c.036 0 .051-.015.036-.036-.02-.02-.052-.02-.067 0-.02.02-.005.036.03.036zm1.304 0c.015 0 .041-.02.056-.051.016-.031.021-.052.006-.052-.016 0-.041.021-.057.052-.015.026-.02.051-.005.051zm1.422-.03a.104.104 0 00.047-.078c0-.025-.036-.03-.077-.015-.042.015-.062.051-.047.077.016.026.052.036.077.015zm1.202-.021c.051-.041.072-.041.087.01.016.041.041.026.082-.046.031-.062.047-.149.026-.195a.101.101 0 00-.113-.067c-.046.01-.108.072-.144.139-.036.066-.051.143-.036.17.02.025.062.02.098-.011zm-.051 0c-.016 0-.026-.01-.026-.026 0-.015.01-.026.026-.026.015 0 .025.01.025.026 0 .01-.01.026-.025.026zm.821.051c.016 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .01.01.025.026.025zm.17-.025c.046-.026.05-.057.015-.103-.03-.036-.036-.082-.015-.103.02-.02-.006-.02-.062 0-.087.036-.087.041-.01.098.046.036.066.082.046.102-.026.026-.01.031.026.005zm2.967.025c.01 0 .021-.01.021-.02s-.026-.041-.062-.062c-.036-.02-.046-.015-.02.02.02.037.046.062.061.062zm2.717 0c.015 0 .025-.01.025-.025 0-.016-.01-.026-.025-.026-.016 0-.026.01-.026.026 0 .01.01.025.026.025zm1.058-.061a.984.984 0 00.287-.196c.123-.133.144-.138.247-.071a.37.37 0 00.272.04.627.627 0 00.262-.128c.056-.051.138-.097.184-.097.047 0 .093-.031.108-.072.016-.041.129-.139.252-.216.123-.077.216-.154.195-.174a.1.1 0 00-.062-.031.284.284 0 01-.097-.041c-.041-.026-.082 0-.113.077-.026.066-.051.097-.051.072 0-.026-.052 0-.108.061-.057.062-.103.15-.103.195 0 .082-.005.082-.092 0-.052-.046-.113-.087-.134-.087-.02 0-.026.02-.01.041.015.026-.087.103-.226.175l-.257.133v-.123c0-.067.031-.123.062-.128.036 0 .01-.026-.052-.052-.077-.03-.113-.087-.113-.18 0-.071-.035-.143-.077-.159-.04-.015-.066-.046-.05-.072.014-.02-.027-.025-.088-.01-.082.02-.093.036-.041.057a.489.489 0 01.143.092c.057.057.057.067-.01.067-.046 0-.082-.02-.082-.051 0-.031-.03-.052-.072-.052-.04 0-.082-.046-.097-.103-.02-.071 0-.102.061-.102.052 0 .154-.057.226-.129a.717.717 0 00.134-.149c0-.01-.057-.035-.129-.056a.287.287 0 01-.18-.134c-.03-.056-.076-.092-.102-.071-.026.015-.051.051-.051.082 0 .03.02.036.046.02.025-.015.036.02.015.082-.02.072.005.134.067.18.051.036.072.072.046.072-.026 0-.077-.026-.113-.062a.259.259 0 01-.061-.164c0-.092-.01-.092-.144.036a.592.592 0 01-.185.139c-.02 0 .026-.062.103-.139.092-.087.123-.144.082-.16-.036-.01-.062-.045-.062-.071 0-.036.026-.036.067.005.036.03.082.041.103.026a.12.12 0 00.036-.077c0-.026-.042-.041-.098-.041a.236.236 0 00-.16.077c-.035.04-.045.097-.025.128.02.036-.01.046-.097.02-.072-.02-.134-.01-.134.016 0 .026.03.077.062.118.051.057.051.062-.01.041l-.18-.067c-.098-.035-.098-.035-.016.047.046.046.108.087.134.087.025 0 .067.041.087.087.02.052.041.113.046.134 0 .025.052.061.108.087.067.026.077.041.026.041a.355.355 0 01-.154-.046.182.182 0 01-.077-.139c0-.072-.041-.092-.206-.092-.159 0-.241-.036-.364-.154-.118-.113-.262-.18-.55-.247-.215-.051-.446-.138-.518-.195-.072-.056-.272-.123-.452-.154a2.455 2.455 0 01-.678-.241 3.25 3.25 0 01-.616-.442c-.16-.154-.318-.257-.406-.262-.118-.01-.144.005-.144.113 0 .088.021.118.072.103.047-.015.082.015.103.098.02.087.067.123.149.123.087 0 .118.025.113.113-.005.087.03.118.149.144.082.015.149.046.144.066-.006.02-.016.062-.016.088 0 .025.046.061.103.082.056.02.139.005.18-.031.061-.051.077-.041.077.072 0 .077.03.133.066.133.036 0 .098-.03.134-.061.051-.052.056-.046.03.02-.015.046-.004.103.026.118.031.02.113-.005.185-.051.123-.082.129-.077.113.01-.015.082.016.093.252.077.22-.015.282 0 .36.093.05.056.122.108.164.108.04 0 .061.015.04.03-.02.016-.071.016-.123-.005a1.17 1.17 0 00-.23-.056c-.078-.01-.144 0-.144.02s.035.088.077.139c.077.098.077.098.154 0 .066-.087.077-.087.107-.01.021.046.062.087.098.087.036 0 .082-.03.098-.062.015-.036.015 0 0 .077-.021.093-.01.144.03.144.036 0 .072-.046.088-.097.015-.057.061-.113.102-.129.057-.02.067-.005.041.072-.025.082-.01.103.077.103.062 0 .098.02.083.046-.016.026.005.072.046.108.04.036.103.046.133.026.041-.026.041-.006-.005.077-.046.087-.046.107 0 .077.041-.026.057-.006.046.056-.01.051.01.144.047.205.03.062.056.119.051.129-.005.01.01.005.03-.016.026-.02.021-.113-.01-.205a1.487 1.487 0 01-.05-.385c0-.18.015-.205.071-.144a.24.24 0 01.072.144c0 .041.03.103.072.133.046.036.082.041.103.01.015-.025.01-.066-.021-.081-.03-.016-.051-.072-.046-.119.005-.071.01-.077.04-.01.021.041.073.129.114.19.04.062.159.144.257.185.138.056.159.082.092.113-.051.02-.133-.01-.226-.098-.077-.071-.16-.133-.185-.133-.025 0-.046.02-.046.051 0 .031-.03.052-.067.052-.04 0-.072.066-.077.184a.77.77 0 01-.04.247c-.021.036-.016.046.004.02.026-.02.088 0 .139.047.051.046.092.061.092.036a.43.43 0 00-.082-.165c-.046-.061-.067-.149-.051-.19.015-.04.051-.077.082-.077.03 0 .051.031.051.062 0 .036.02.097.047.139.04.061.066.061.164-.026.092-.077.103-.082.046-.01-.062.082-.051.092.18.097.138.005.308.005.38 0 .123-.005.123-.005.025.052-.056.03-.236.061-.395.061-.164 0-.298.02-.298.041 0 .02.103.036.226.036.15 0 .247.031.298.087.062.077.056.083-.056.052-.119-.031-.124-.026-.036.036.071.051.133.056.246.015zm.046-.093c-.036 0-.052-.015-.036-.036.02-.02.051-.02.067 0 .015.02.005.036-.031.036zm-.026-.103c-.015 0-.026-.01-.026-.025 0-.016.01-.026.026-.026s.026.01.026.026c0 .015-.01.025-.026.025zm.462-.256c-.015 0-.025-.01-.025-.026 0-.015.01-.026.025-.026.016 0 .026.01.026.026 0 .015-.01.026-.026.026zm-1.694-.206c-.016 0-.026-.01-.026-.025 0-.016.01-.026.026-.026.015 0 .025.01.025.026 0 .015-.01.025-.025.025zm1.422 0c-.026 0-.062-.046-.072-.102-.015-.057-.02-.103-.01-.103s.046.046.072.103c.03.056.03.102.01.102zm-.293-.102c-.015 0-.025-.01-.025-.026 0-.015.01-.026.025-.026.016 0 .026.01.026.026 0 .015-.01.026-.026.026zm-.364-.103a.36.36 0 01-.149-.067c-.051-.04-.077-.097-.057-.128.021-.031.057-.046.088-.031a.058.058 0 01.02.077c-.015.026.016.067.062.098.051.025.067.046.036.05zm-.149-.154c.015 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025-.015 0-.026.01-.026.025 0 .016.01.026.026.026zm.565.154c-.016 0-.026-.01-.026-.026 0-.015.01-.025.026-.025.015 0 .025.01.025.025 0 .016-.01.026-.025.026zm1.643 0c-.015 0-.026-.01-.026-.026 0-.015.01-.025.026-.025.015 0 .026.01.026.025 0 .016-.01.026-.026.026zm-2.876-.205c-.01 0-.04-.026-.061-.062-.02-.036-.016-.046.02-.02.031.02.062.046.062.061s-.005.02-.02.02zm.514 0c-.015 0-.026-.01-.026-.026s.01-.026.026-.026c.015 0 .026.01.026.026 0 .015-.01.026-.026.026zm.616 0c-.01 0-.036-.026-.056-.057-.02-.03-.02-.067-.01-.077.015-.015.035.01.056.057.015.04.02.077.01.077zm-1.284-.155c-.04 0-.077-.01-.077-.02s.036-.036.077-.051c.041-.016.077-.006.077.02 0 .03-.036.051-.077.051zm1.33 0c-.015 0-.01-.025.005-.05.016-.032.041-.052.057-.052.015 0 .01.02-.005.051-.02.026-.046.051-.057.051zm-2.408-.564c-.015 0-.026-.01-.026-.026 0-.015.01-.026.026-.026.015 0 .026.01.026.026 0 .015-.01.026-.026.026zm8.714 1.663c.02-.102.03-.2.015-.21-.015-.016-.097 0-.185.03-.133.047-.184.042-.282-.03a.689.689 0 01-.175-.216c-.036-.082-.04-.241-.01-.452.031-.215.026-.308-.01-.272-.03.03-.062.21-.072.41-.015.34-.01.37.144.545.108.123.19.175.251.154.057-.015.124.02.185.103l.098.128zm-19.24.134c.015 0 .025-.01.025-.026 0-.015-.01-.026-.025-.026-.016 0-.026.01-.026.026s.01.026.026.026zm2.305 0c.016 0 .041-.026.057-.052.015-.03.02-.05.005-.05-.016 0-.041.02-.057.05-.02.026-.02.052-.005.052zm.673 0c.01 0 .02-.01.02-.02 0-.011-.025-.042-.061-.062-.036-.02-.046-.016-.02.02.025.036.05.062.06.062zm.462 0c.015 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.026.01-.026.026s.01.026.026.026zm.354 0c.01 0 .016-.036.016-.077s-.02-.062-.041-.046c-.026.015-.031.046-.016.077.01.025.031.046.041.046zm.699-.103c.097-.113.102-.128.025-.144a.208.208 0 00-.159.047c-.04.036-.077.087-.077.113 0 .03.036.02.077-.016.067-.056.072-.051.046.031-.02.077 0 .067.088-.03zm-4.842.051c.005 0 .01-.01.01-.02a.382.382 0 00-.082-.103c-.047-.046-.108-.082-.144-.077-.031 0-.005.046.067.103l.149.097zm.56 0c.004 0 .004-.056.004-.123 0-.092-.046-.144-.185-.2l-.754-.308c-.314-.128-.663-.283-.77-.35a3.915 3.915 0 01-.483-.348 4.797 4.797 0 01-.4-.36.813.813 0 01-.16-.23c-.02-.063-.056-.165-.077-.237l-.036-.129.077.134a.55.55 0 00.21.195c.073.036.124.082.103.108-.015.026.016.072.072.103.072.036.103.036.103 0 0-.031-.041-.057-.092-.057-.052 0-.067-.015-.042-.025.026-.01.21.056.411.154.195.097.37.164.375.159.005-.005.005-.041-.015-.072-.02-.031-.2-.134-.406-.226a2.52 2.52 0 01-.585-.39c-.118-.118-.216-.247-.216-.288 0-.036-.041-.149-.087-.252-.047-.097-.108-.18-.129-.18-.02 0-.04.021-.04.042 0 .026.045.22.102.441.056.221.092.416.077.442-.015.02.015.082.062.128.046.047.092.129.092.175a.598.598 0 00.092.21c.047.067.088.103.088.078 0-.026.082.03.18.123.097.092.164.195.143.22-.015.031-.01.037.02.021.026-.015.103.005.165.046.062.041.098.103.077.134-.02.036-.01.04.026.015.036-.02.102-.005.149.036.046.041.185.123.308.185s.246.092.277.077c.036-.02.041-.01.026.02-.02.031.015.072.072.088.061.02.123.02.138.005.016-.015.067 0 .113.041a.656.656 0 00.195.108c.072.02.113.015.113-.02 0-.031-.036-.057-.082-.057-.046 0-.067-.026-.041-.057.026-.036.098.01.216.139.149.164.174.18.149.082-.02-.097-.016-.108.046-.056.04.03.072.092.072.133 0 .041.025.072.056.072s.041-.046.02-.113c-.025-.097-.02-.092.062.026.057.072.103.138.108.138zm-.817-.43c-.02.02-.036.004-.036-.037 0-.036.015-.051.036-.036.02.026.02.057 0 .072zm-.267-.083c-.016 0-.026-.01-.026-.026 0-.015.01-.025.026-.025.015 0 .025.01.025.025 0 .016-.01.026-.025.026zm-.308-.154c-.016 0-.026-.01-.026-.026 0-.015.01-.025.026-.025.015 0 .025.01.025.025 0 .016-.01.026-.025.026zm-.154-.051c-.016 0-.026-.01-.026-.026 0-.015.01-.026.026-.026.015 0 .025.01.025.026 0 .015-.01.026-.025.026zm-.411-.257c-.016 0-.026-.01-.026-.026 0-.015.01-.025.026-.025.015 0 .026.01.026.025 0 .016-.01.026-.026.026zm-.616-.514c-.016 0-.026-.01-.026-.025 0-.016.01-.026.026-.026.015 0 .025.01.025.026 0 .015-.01.025-.025.025zm-.088-.128c-.015.015-.046-.01-.061-.062-.026-.071-.02-.077.03-.03.031.036.047.077.031.092zm7.22 1.587a.875.875 0 00.22-.124c.114-.087.114-.087.006-.118-.072-.02-.093-.051-.067-.097.03-.057.026-.057-.03 0-.062.056-.062.072.004.113.041.025.062.061.041.077-.02.015-.082.005-.138-.026-.087-.046-.113-.036-.154.041-.031.052-.036.113-.02.129.02.02.081.02.138.005zm1.289.03c.015 0 .025-.01.025-.025 0-.016-.01-.026-.025-.026-.016 0-.026.01-.026.026 0 .015.01.025.026.025zm4.734-.04a.261.261 0 000-.155c-.015-.051-.026-.02-.026.062 0 .087.01.128.026.092zm6.234.04c.036 0 .149-.092.256-.205.124-.133.221-.195.273-.174.061.025.082-.006.082-.134 0-.087.025-.21.056-.267.031-.056.046-.113.036-.123-.01-.01-.118.061-.236.164-.118.103-.2.205-.185.231.016.026-.051.154-.159.277-.103.129-.16.231-.123.231zm-14.511-.05c.015 0 .025-.011.025-.027 0-.015-.01-.025-.025-.025-.016 0-.026.01-.026.025 0 .016.01.026.026.026zm9.756 0c.015 0 .026-.011.026-.027 0-.015-.01-.025-.026-.025-.015 0-.026.01-.026.025 0 .016.01.026.026.026zm.334 0c.036 0 .051-.016.036-.037-.02-.02-.052-.02-.067 0-.02.02-.005.036.03.036zm-9.012-.052c.015 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.026.01-.026.026s.01.026.026.026zm2.824 0c.016 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.025.01-.025.026s.01.026.025.026zM3.183 13.9c.02-.02.02-.051 0-.067-.02-.02-.036-.005-.036.036 0 .036.016.051.036.03zm4.427.02c.025 0 .061-.035.077-.082.025-.072.02-.072-.047-.02-.04.036-.077.072-.077.082 0 .01.021.02.047.02zm.313 0c.03 0 .056-.025.056-.05 0-.032-.01-.052-.02-.052s-.036.02-.057.051c-.02.026-.01.051.02.051zm10.475-.025c.026-.016.051-.057.051-.082 0-.026-.025-.036-.051-.02a.105.105 0 00-.051.081c0 .026.025.036.05.02zm-11.836-.026c.016 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025-.015 0-.026.01-.026.025 0 .016.01.026.026.026zm2.876 0c.015 0 .025-.01.025-.026 0-.015-.01-.025-.025-.025-.016 0-.026.01-.026.025 0 .016.01.026.026.026zm-6.419-.051c.016 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .015.01.026.026.026zm5.15-.016c.052-.005.098-.036.098-.066 0-.031-.062-.062-.134-.062-.072 0-.102.01-.066.026.036.01.051.04.036.066-.016.026.015.041.066.036zm.283.016c.04 0 .108-.041.154-.093.067-.072.072-.108.025-.154-.035-.03-.087-.061-.123-.061-.03 0-.087.036-.123.077-.036.04-.051.113-.03.154.015.04.06.077.097.077zm5.248 0c.015 0 .025-.01.025-.026 0-.015-.01-.026-.025-.026-.016 0-.026.01-.026.026 0 .015.01.026.026.026zm2.798-.01c.098 0 .139-.01.087-.026a.528.528 0 00-.18 0c-.046.015-.005.025.093.025zm-7.471-.042c.015 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026s-.026.01-.026.026c0 .015.01.025.026.025zm6.444 0c.03 0 .057-.02.057-.051 0-.03-.01-.051-.021-.051-.01 0-.036.02-.056.051-.021.026-.01.051.02.051zm-12.806-.05c.01 0 .02-.011.02-.021 0-.01-.025-.042-.061-.062-.036-.02-.046-.016-.02.02.02.036.045.062.06.062zm.097 0c.016 0 .026-.011.026-.027 0-.015-.01-.025-.026-.025-.015 0-.025.01-.025.025 0 .016.01.026.025.026zm6.46-.078c.077-.051.123-.113.103-.133-.026-.026-.113-.021-.195.005-.134.04-.14.046-.031.051.108.005.113.015.051.092-.062.067-.051.067.072-.015zm.036-.077c-.036 0-.051-.015-.036-.036.02-.02.051-.02.067 0 .025.02.01.036-.031.036zm.293.139c.02-.02.02-.052 0-.067-.02-.02-.036-.005-.036.036 0 .03.015.046.036.03zm8.826.015c.01 0 .02-.02.02-.051 0-.031-.025-.052-.056-.052-.03 0-.04.02-.02.052.02.025.041.051.056.051zm4.54 0c.03 0 .056-.02.056-.051 0-.031-.01-.052-.02-.052s-.036.02-.057.052c-.02.025-.01.051.02.051zM7.64 13.664c.016 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .015.015.026.025.026zm.216-.057c.02-.04.041-.036.077.01.041.057.046.057.03 0-.01-.035-.04-.066-.066-.066-.025 0-.051.025-.061.056 0 .041.005.036.02 0zm2.039.057c.015 0 .313-.19.662-.421.35-.231.847-.534 1.12-.668.266-.133.518-.246.554-.246.036 0 .067-.026.067-.052 0-.03-.036-.066-.082-.082a.325.325 0 00-.211.031c-.072.03-.472.277-.883.544-.41.267-.863.575-1.001.693-.14.119-.242.2-.226.2zm4.729 0c.015 0 .025-.01.025-.026 0-.015-.01-.026-.025-.026-.016 0-.026.01-.026.026 0 .015.016.026.026.026zm2.901 0c.036 0 .051-.016.036-.036-.02-.02-.051-.02-.067 0-.02.02-.005.036.031.036zm5.284-.052a.227.227 0 00-.01-.128c-.016-.041-.052-.077-.083-.077-.03 0-.051.03-.051.067 0 .036.03.097.062.128.04.046.066.046.082.01zm-16.196-.051c.016 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025-.015 0-.025.01-.025.025 0 .016.015.026.025.026zm1.644 0c.046 0 .082-.01.082-.02s-.02-.036-.046-.052c-.026-.015-.062-.005-.083.02-.02.026 0 .052.047.052zm.539 0c.061 0 .097-.02.082-.046s-.005-.062.026-.082c.036-.026.036-.052 0-.098-.031-.036-.036-.082-.016-.103.02-.02-.01-.02-.061 0-.057.02-.072.047-.036.057.036.01.061.04.061.067 0 .025-.03.04-.061.03-.036-.01-.047-.005-.026.006.02.01.015.056-.02.092-.052.062-.042.077.05.077zm.724 0c.025 0 .046-.01.046-.02s-.036-.036-.082-.052c-.046-.015-.067-.01-.046.02.02.031.056.052.082.052zm8.21-.01c.072 0 .098-.01.062-.026a.184.184 0 00-.128 0c-.031.015 0 .026.066.026zm5.16.01c.016 0 .027-.01.027-.026 0-.015-.01-.025-.026-.025s-.026.01-.026.025c.005.016.016.026.026.026zm-14.387-.103c.041 0 .087-.015.103-.03.015-.016-.026-.067-.098-.103a.806.806 0 00-.164-.067c-.02 0 .01.026.056.057.052.03.077.077.062.102-.015.02.005.041.041.041zm9.16-.01c.14-.015.314-.067.39-.118.114-.072.13-.108.083-.164-.046-.057-.041-.067.026-.041.046.02.118.005.164-.031.062-.052.067-.072.01-.108-.056-.036-.056-.041 0-.041.036 0 .124-.062.195-.139.072-.077.129-.164.129-.205 0-.057-.031-.057-.144-.01-.077.03-.19.082-.252.107-.061.031-.143.041-.18.026-.046-.015-.066.02-.066.123 0 .123.02.15.128.154.103.005.108.01.026.031a.803.803 0 00-.216.082c-.061.031-.113.077-.113.108 0 .026.062.036.144.016.103-.026.123-.021.067.02-.041.03-.16.051-.257.051a.609.609 0 01-.251-.046c-.042-.025-.057-.067-.047-.087.016-.026-.01-.077-.056-.118-.072-.067-.077-.067-.052.01.016.046.006.092-.02.103-.036.01-.026.046.02.092.042.041.067.108.052.144-.026.051.026.062.22.041zm-9.714-.041c.015 0 .025-.01.025-.026 0-.015-.01-.025-.025-.025-.016 0-.026.01-.026.025.005.016.015.026.026.026zm14.223 0c.015 0 .062-.123.103-.277.046-.154.128-.34.19-.416.061-.077.123-.113.138-.088.02.031.067.026.129-.02.082-.057.087-.082.03-.149a.236.236 0 00-.174-.072c-.103.005-.103.01.005.03.062.011.118.047.118.073 0 .026-.061.036-.133.015-.098-.025-.124-.015-.098.026.02.036 0 .062-.062.062a.256.256 0 00-.159.061.256.256 0 00-.061.16.518.518 0 01-.098.225c-.056.072-.087.165-.067.21.026.073.036.073.072-.015.031-.082.041-.077.041.041 0 .072.016.134.026.134zm-1.232-.051c.015 0 .025-.01.025-.026 0-.015-.01-.026-.025-.026-.016 0-.026.01-.026.026.005.015.015.026.026.026zm1.006 0c.03 0 .051-.02.051-.052 0-.03-.02-.051-.05-.051-.032 0-.052.02-.052.051 0 .031.02.052.051.052zm.668 0c.056 0 .102-.02.102-.041a.129.129 0 00-.03-.072c-.016-.016-.062-.02-.103-.005-.041.015-.072.046-.072.071 0 .026.046.047.103.047zm-13.947-.052c.016 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.025.01-.025.026.005.015.015.025.025.025zm.463 0c.015 0 .025-.01.025-.025 0-.016-.01-.026-.025-.026-.016 0-.026.01-.026.026.005.015.015.025.026.025zm.852-.036c.041-.02.154-.092.252-.159.097-.067.21-.108.246-.092.041.015.175-.041.298-.129.123-.087.22-.185.215-.215-.005-.036.026-.057.078-.057.05.005.077-.01.061-.03-.015-.021.077-.103.206-.175.128-.072.23-.15.23-.16 0-.015-.05 0-.112.037-.062.036-.36.205-.658.385-.297.18-.621.395-.719.482-.097.083-.143.139-.097.113zm.59-.318c-.056.026-.03-.01.052-.082.082-.072.174-.129.205-.129s.005.036-.051.083a1.125 1.125 0 01-.206.128zm.36-.21c-.016 0-.026-.01-.026-.026s.01-.026.026-.026c.015 0 .026.01.026.026 0 .015-.016.025-.026.025zm2.352.564c.015 0 .04-.02.056-.051.015-.03.02-.051.005-.051s-.04.02-.056.05c-.016.027-.016.052-.005.052zm7.25 0c.01 0 .02-.01.02-.02s-.025-.041-.061-.062c-.036-.02-.046-.015-.02.02.025.037.05.062.061.062zm-7.312-.082c.03-.015.026-.056-.01-.097-.031-.042-.041-.098-.02-.14.025-.045.02-.05-.021-.014-.031.03-.041.102-.026.164.015.067.051.103.077.087zm1.458.03c.016 0 .026-.01.026-.025 0-.015-.01-.025-.026-.025-.015 0-.025.01-.025.025 0 .016.01.026.025.026zm6.45-.004c.046.005.138-.036.205-.093.067-.056.103-.102.077-.102-.026 0-.015-.036.015-.077.047-.052-.015-.047-.225.03l-.288.103-.18-.103c-.097-.056-.18-.087-.18-.066 0 .02.052.087.119.149a.52.52 0 00.246.128c.072.01.164.026.21.03zm-3.538-.098c.072-.056.077-.082.025-.113a.234.234 0 00-.113-.04c-.025 0-.02.03.01.066.032.036.042.087.021.113-.015.026.005.015.057-.026zm.113.052c.015 0 .025-.01.025-.026 0-.015-.01-.026-.025-.026-.016 0-.026.01-.026.026 0 .015.015.026.026.026zm-9.243-.052c.015 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .015.016.025.026.025zm6.039 0c.056 0 .097-.036.097-.077 0-.04-.02-.077-.046-.077a.562.562 0 00-.128.031c-.047.015-.067.051-.052.077.016.026.072.046.129.046zm.318-.01c.077-.005.144-.036.144-.062 0-.025-.016-.056-.041-.066-.026-.01-.093.02-.144.061-.098.077-.098.077.04.067zm.339.01c.056 0 .118-.025.138-.056.021-.031.006-.077-.035-.103a.2.2 0 00-.124-.03c-.03.01-.056.056-.066.102-.01.056.02.087.087.087zm3.62 0a.327.327 0 00.164-.082c.072-.056.082-.087.036-.108-.036-.015-.046-.051-.03-.087.02-.03-.006-.026-.052.01a.392.392 0 00-.087.093c0 .01.025.005.061-.016.041-.025.047-.015.016.031-.031.051-.057.046-.108-.02-.062-.083-.072-.083-.128.03-.062.113-.057.113.03.041.088-.071.093-.066.062.016-.015.056-.005.092.036.092zm2.988-.154c.047-.097.103-.23.129-.298.025-.066.066-.102.097-.087.026.016.052.005.052-.02 0-.031.046-.057.107-.057.057 0 .093-.026.072-.051-.015-.031-.082-.052-.149-.052-.061 0-.169.057-.236.124-.077.082-.123.205-.138.37l-.02.246zM1.16 13.1c.005 0 .01-.123.005-.267a1.05 1.05 0 00-.087-.421c-.046-.082-.082-.134-.087-.103 0 .03-.026.016-.052-.026-.046-.066-.05-.066-.046 0 0 .042.02.124.046.18.042.098.047.098.047.005 0-.056.015-.082.036-.066.015.015.04.164.051.323.01.16.03.313.051.339.016.015.031.036.036.036zm-.03-.324c-.021.02-.036.005-.036-.036 0-.035.015-.05.035-.035a.05.05 0 010 .071zm7.537.324c.016 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025-.015 0-.025.01-.025.025 0 .016.01.026.025.026zm5.52 0c.057 0 .108-.02.108-.046s-.03-.072-.072-.108c-.04-.036-.061-.093-.046-.129.015-.035.005-.082-.026-.097-.03-.015-.066-.01-.082.02a.123.123 0 00.01.119c.021.035.036.102.026.154-.02.056.01.087.082.087zm7.78 0c.015 0 .025-.01.025-.026 0-.015-.01-.025-.025-.025-.016 0-.026.01-.026.025 0 .016.015.026.026.026zM8.38 12.99c.01-.03.005-.067-.01-.082-.016-.016-.057-.01-.088.01-.046.026-.04.046.01.082.042.026.078.02.088-.01zm5.011.057c.016 0 .026-.01.026-.026s-.01-.026-.026-.026c-.015 0-.025.01-.025.026 0 .015.015.026.025.026zm.514 0c.041 0 .077-.026.077-.052 0-.03-.036-.051-.077-.051s-.077.02-.077.051c0 .026.036.052.077.052zm9.838-.083c.052-.051.098-.107.098-.133 0-.026-.057-.005-.129.04-.071.047-.113.109-.097.134.02.026.077.01.128-.04zm-10.085.031c.036 0 .067-.036.067-.077 0-.04-.03-.077-.072-.077-.04 0-.087.02-.102.046a.07.07 0 00.005.077c.015.02.066.031.102.031zm.755-.015c.031-.01.067-.057.077-.108.01-.051-.015-.087-.061-.087-.041 0-.093.02-.108.051a.12.12 0 000 .103c.015.036.056.051.092.04zm.344.015c.057 0 .098-.02.098-.046s-.03-.057-.062-.072a.271.271 0 00-.128 0c-.036.01-.051.046-.036.072.015.026.072.046.128.046zm2.953 0c.04 0 .072-.015.072-.04a.33.33 0 00-.057-.119c-.046-.067-.051-.062-.025.01.015.052.01.088-.016.088-.026 0-.072-.036-.108-.077-.036-.042-.046-.103-.025-.14.025-.04.015-.045-.02-.025-.032.02-.062.057-.062.082 0 .026.035.083.082.124.051.061.118.097.159.097zm-16.077-.051c.015 0 .025-.01.025-.026 0-.015-.01-.026-.025-.026-.016 0-.026.01-.026.026 0 .01.01.026.026.026zm6.341 0c.036 0 .052-.016.036-.036-.02-.02-.051-.02-.067 0-.02.02-.005.036.031.036zm13.176 0a.317.317 0 00.2-.103c.052-.056.077-.103.062-.103a1.01 1.01 0 00-.2.103c-.139.082-.15.103-.062.103zm-8.118-.052c.015 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .01.01.025.026.025zm.308 0c.077 0 .128-.03.128-.071 0-.041-.02-.088-.05-.108-.032-.02-.052-.088-.052-.154 0-.067-.031-.134-.072-.15-.041-.015-.087.011-.108.057-.02.052 0 .108.051.144.052.041.062.072.031.092a.141.141 0 00-.056.108c0 .052.051.082.128.082zm.514 0c.046 0 .077-.025.066-.056-.01-.03-.04-.056-.066-.056-.026 0-.057.025-.067.056-.01.03.02.056.067.056zm5.258 0c.03 0 .159-.128.287-.287.129-.16.236-.318.236-.36 0-.04-.02-.071-.04-.071a.145.145 0 00-.083.036.206.206 0 01-.087.046.636.636 0 01-.103.01c-.03.005-.046.026-.03.046.01.02-.006.067-.042.098-.036.036-.082.046-.108.025-.02-.02-.02-.005 0 .031.021.036.057.052.083.041.025-.015.056.01.072.052.02.046 0 .077-.052.077-.046 0-.061.025-.04.056.025.041-.006.052-.114.026-.118-.026-.133-.026-.056.02.051.031.077.077.061.103-.02.026-.01.046.016.051zm-2.948-.05c.041 0 .077-.011.077-.021 0-.01-.036-.036-.077-.052-.04-.015-.077-.005-.077.02 0 .026.036.052.077.052zm1.67 0c.035 0 .05-.016.035-.037-.02-.02-.051-.02-.067 0-.02.02-.005.036.031.036zm4.96-.016c.015-.016.02-.062.004-.098-.015-.04-.03-.03-.03.031 0 .056.01.082.025.067zm-9.171-.036c.056 0 .112-.02.128-.046.015-.026-.005-.072-.046-.108-.041-.036-.098-.046-.129-.031-.03.02-.051.067-.051.108 0 .04.041.077.098.077zm.734-.052c.025-.025.036-.082.015-.128-.015-.046-.067-.082-.108-.082-.04 0-.077.03-.077.067 0 .036.026.092.062.128.036.041.082.046.108.015zm7.26.031c.021-.02.021-.051 0-.066-.02-.021-.035-.006-.035.035 0 .036.015.052.035.031zm-8.554-.03c.056 0 .097-.026.097-.052 0-.03-.036-.051-.082-.051-.056 0-.072-.026-.051-.093.03-.082.026-.082-.051-.005-.047.046-.072.108-.052.139.02.03.082.061.139.061zm4.6-.006c.037 0 .078-.02.093-.046s.062-.036.108-.02c.041.015.077.005.077-.026 0-.03-.03-.057-.067-.057a.397.397 0 00-.17.077c-.056.042-.076.072-.04.072zm1.094-.046a.35.35 0 00.052-.128c0-.026-.02-.016-.052.025a.319.319 0 00-.051.129c0 .03.026.015.051-.026zm1.72.051c.016 0 .026-.01.026-.025 0-.016-.01-.026-.025-.026-.016 0-.026.01-.026.026 0 .01.01.025.026.025zm.17 0c.01 0-.005-.03-.036-.071a1.972 1.972 0 01-.16-.375 1.901 1.901 0 01-.102-.432c0-.071-.046-.22-.097-.333-.062-.144-.129-.21-.206-.216-.092-.005-.108.01-.082.139.015.082.051.21.077.282.026.072.051.2.051.288 0 .082.02.149.041.149s.067.05.098.112c.03.062.057.088.062.052 0-.036.02-.062.046-.062s.046.046.046.098c.005.051.062.159.123.23a.625.625 0 00.139.14zm-.329-.513c-.051 0-.072-.026-.056-.077.015-.041.005-.087-.02-.108-.026-.015-.052-.051-.052-.077 0-.026.02-.046.051-.046.026 0 .047.015.041.036-.005.02.016.092.052.154.061.097.056.118-.016.118zm-.092-.41c-.01 0-.036-.026-.057-.052-.015-.031-.005-.051.021-.051.026 0 .056.02.056.05 0 .027-.01.052-.02.052zm-.057-.155c-.015 0-.025-.01-.025-.026 0-.015.01-.025.025-.025.016 0 .026.01.026.025 0 .01-.01.026-.026.026zm0-.103c-.015 0-.025-.01-.025-.025 0-.016.01-.026.025-.026.016 0 .026.01.026.026 0 .01-.01.025-.026.025zm-.05-.102c-.016 0-.027-.01-.027-.026 0-.015.01-.026.026-.026.015 0 .026.01.026.026 0 .01-.01.026-.026.026zm-11.58 1.232c.036 0 .051-.015.036-.036-.02-.02-.051-.02-.067 0-.02.02-.005.036.031.036zm5.422 0c.067 0 .134-.026.154-.056.021-.031 0-.093-.04-.134-.062-.062-.103-.067-.185-.02-.062.036-.093.087-.077.133.015.041.082.077.148.077zm3.477-.005c.02 0 .036-.036.036-.087 0-.052-.072-.129-.16-.18-.087-.051-.18-.077-.205-.062-.026.016-.026.072.01.134.031.056.108.123.17.149.056.02.128.046.149.046zm1.556-.046c.01 0 .02-.026.02-.052 0-.03-.026-.05-.056-.05-.031 0-.041.02-.02.05.02.026.04.052.056.052zm1.38 0c.016 0 .026-.01.026-.026 0-.015-.01-.026-.025-.026-.016 0-.026.01-.026.026 0 .01.01.026.026.026zm-9.14-.052c.016 0 .026-.01.026-.025 0-.016-.01-.026-.025-.026-.016 0-.026.01-.026.026 0 .01.01.025.026.025zm1.49 0c.041 0 .077-.025.077-.05 0-.032-.02-.052-.051-.052-.026 0-.036-.041-.016-.088.02-.056.016-.071-.025-.046-.031.02-.062.082-.062.139 0 .051.036.097.077.097zm1.94-.005c.021.005.027-.02.011-.046-.015-.03-.092-.051-.17-.046l-.138.005.128.041.17.046zm3.036.005c.015 0 .04-.025.056-.05.015-.032.02-.052.005-.052s-.04.02-.056.051c-.016.026-.02.051-.005.051zm.677 0c.077 0 .195-.061.278-.148.082-.083.149-.2.149-.262 0-.072-.021-.098-.062-.072-.046.025-.041.01.005-.046a.265.265 0 00.036-.221c-.03-.118-.046-.123-.118-.067-.077.062-.077.056-.005-.062.056-.087.067-.164.036-.23a1.165 1.165 0 00-.144-.227c-.092-.118-.103-.118-.185-.04-.046.046-.113.087-.149.087-.036 0-.067.036-.067.077 0 .04.067.087.144.107.077.016.17.016.206-.005.036-.025.046-.015.025.02-.02.032-.087.062-.144.062-.107 0-.107 0-.01.078.057.04.077.077.052.077-.026 0-.006.035.05.077.098.071.098.077-.004.082a.66.66 0 01-.144 0c-.02-.005-.041.051-.041.118s.036.138.082.154c.046.015.134.02.195.005.062-.015.031.01-.061.051-.093.041-.19.067-.21.052-.027-.016-.057.036-.073.113a.427.427 0 00-.005.18c.026.02.098.035.164.04zm-6.151-.071c.159-.006.185-.016.133-.072-.046-.047-.102-.052-.195-.016-.072.026-.133.062-.133.072 0 .01.087.02.195.016zm1.314.02a.585.585 0 00.154-.03c.047-.016.083-.052.083-.078 0-.025-.072-.046-.154-.046-.103 0-.155.026-.155.077 0 .041.031.072.072.077zm2.316 0c.016 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025-.015 0-.026.01-.026.025 0 .01.01.02.026.026zm.59 0c.037 0 .052-.015.037-.036-.02-.02-.052-.02-.067 0-.016.02-.005.036.03.036zm1.485 0c.025 0 .061-.02.082-.051.015-.031-.005-.052-.046-.052-.047 0-.083.02-.083.052 0 .03.021.051.047.051zm-1.87-.051c.016 0 .026-.01.026-.026 0-.015-.01-.026-.025-.026-.016 0-.026.01-.026.026 0 .01.01.02.026.026zm4.067-.02c.02-.021.02-.052 0-.068-.02-.02-.036-.005-.036.036 0 .036.016.052.036.031zm.195.02c.016 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .01.01.02.025.026zm2.573 0c.01 0 .02-.01.02-.02 0-.011-.025-.042-.061-.062-.036-.021-.046-.016-.02.02.02.03.046.057.061.062zm-9.915-.067c.087.005.128-.015.128-.072 0-.051-.03-.072-.077-.051-.041.015-.077.005-.077-.026 0-.03-.02-.041-.051-.02-.031.015-.052.061-.052.092 0 .03.062.072.129.077zm2.464.01c.016 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .015.015.025.025.025zm1.988 0c.02 0 .04-.036.04-.082 0-.046.026-.067.052-.046.026.02.036.056.02.087-.02.03-.01.041.026.02.031-.02.062-.066.062-.102 0-.036-.082-.103-.175-.149-.17-.082-.18-.082-.21.026-.026.077-.005.128.056.18a.338.338 0 00.129.066zm.374 0c.016 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .015.015.025.025.025zm1.022 0c.016 0 .041-.025.057-.051.015-.031.02-.051.005-.051-.016 0-.041.02-.057.05-.015.032-.02.052-.005.052zm3.548-.03c.041-.016.077-.042.077-.052 0-.01-.036-.02-.077-.02-.04 0-.077.02-.077.05 0 .027.036.037.077.021zm-9.9-.037c.01-.01.031-.071.042-.133.02-.092.01-.103-.052-.057-.04.031-.061.093-.04.134.014.046.04.067.05.056zm-.01-.087c-.015 0-.025-.01-.025-.026 0-.015.01-.025.025-.025.016 0 .026.01.026.025 0 .016-.01.026-.026.026zm5.49.103c.015 0 .04-.026.056-.051.015-.031.02-.052.005-.052-.016 0-.041.02-.057.052-.015.03-.02.05-.005.05zm-4.668-.046c.067 0 .138-.026.159-.052.015-.03.01-.051-.01-.051s-.093-.015-.16-.03c-.087-.021-.112-.011-.112.05-.006.052.04.078.123.083zm3.44 0c.015 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .01.01.02.026.026zm.195 0a.13.13 0 00.108-.077c.015-.041.01-.077-.015-.077-.026 0-.072.036-.108.077-.052.061-.052.072.015.077zm2.11 0c.016 0 .042-.026.057-.052.016-.03.02-.051.005-.051s-.04.02-.056.051c-.016.026-.02.052-.005.052zm3.6 0c.041 0 .108-.052.154-.113.046-.062.057-.124.031-.134-.026-.01-.108.02-.18.072-.072.046-.118.108-.102.134.015.02.061.04.097.04zm-3.748-.052c.015 0 .025-.01.025-.025 0-.016-.01-.026-.025-.026-.016 0-.026.01-.026.026 0 .01.01.02.026.025zm-7.24-.051c.015 0 .025-.01.025-.026 0-.015-.01-.025-.025-.025-.016 0-.026.01-.026.025 0 .01.01.02.026.026zm1.088 0c.036 0 .067-.03.067-.067a.068.068 0 00-.067-.067.068.068 0 00-.067.067c0 .036.026.062.067.067zm4.093 0c.015 0 .04-.026.056-.051.016-.031.02-.052.005-.052s-.04.02-.056.052c-.016.025-.02.051-.005.051zm1.057 0c.026 0 .052-.02.052-.051 0-.026.03-.036.072-.02.04.014.087 0 .113-.037.025-.046.015-.056-.041-.03-.047.015-.093 0-.108-.037-.016-.036 0-.092.03-.123.042-.04.042-.056 0-.056-.03 0-.071.036-.087.082-.015.046-.02.103 0 .128.016.026.005.046-.025.046-.031 0-.057.02-.057.052 0 .02.026.04.051.046zm-4.903-.051c.066 0 .138-.02.149-.041.015-.021.01-.067-.01-.093a.248.248 0 00-.124-.082c-.051-.02-.097 0-.118.046a.476.476 0 00-.03.123c.004.02.06.041.133.047zm6.007 0c.016 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .01.01.02.025.026zm.18-.026a.292.292 0 00.067-.128c.015-.057.01-.093-.016-.077a.292.292 0 00-.066.128c-.016.051-.01.087.015.077zm-18.26-.026c.011 0 .031-.036.052-.077.015-.04.005-.077-.02-.077-.026 0-.052.036-.052.077s.01.072.02.077zm11.344-.02a.07.07 0 00.071-.072c0-.041-.025-.062-.05-.052a.124.124 0 00-.073.072c-.01.031.016.052.052.052zm4.775.015c.041 0 .087-.036.108-.082.02-.057.005-.077-.057-.062-.046.01-.097.047-.108.082-.01.036.016.062.057.062zm.447 0c.025 0 .051-.03.051-.072 0-.04-.036-.087-.082-.102-.046-.016-.098-.021-.113-.006-.016.016 0 .026.03.026.031 0 .057.016.052.036a.196.196 0 000 .077c.005.026.036.041.062.041zm.744 0c.016 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025-.015 0-.025.01-.025.025 0 .016.01.026.025.026zm1.078 0c.016 0 .026-.01.026-.026 0-.015-.01-.025-.025-.025-.016 0-.026.01-.026.025 0 .016.01.026.025.026zm.257-.01c.072-.01.129-.082.18-.231.041-.118.056-.236.036-.257-.02-.02-.057-.005-.082.03-.026.042-.098.062-.175.047-.118-.02-.128-.01-.103.108.016.072.031.174.031.226.005.067.041.087.113.077zm-.102-.298c-.016 0-.026-.01-.026-.026 0-.015.01-.025.026-.025.015 0 .025.01.025.025 0 .016-.01.026-.025.026zm-2.645.257c.036 0 .051-.016.036-.036-.02-.02-.051-.02-.067 0-.02.025-.005.036.031.036zm2.131 0c.015 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.026.01-.026.026s.01.026.026.026zm-17.87-.052c.016 0 .027-.01.027-.025 0-.016-.01-.026-.026-.026s-.026.01-.026.026c0 .015.01.025.026.025zm7.6-.113c.129-.061.221-.118.21-.128-.01-.01-.112.02-.23.067-.118.046-.21.103-.21.128 0 .026.102-.005.23-.067zm5.751.113c.016 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .015.01.025.025.025zm2.825 0c.015 0 .025-.01.025-.025 0-.016-.01-.026-.025-.026-.016 0-.026.01-.026.026 0 .015.01.025.026.025zm.852 0c.02 0 .036-.071.03-.154 0-.087-.02-.138-.035-.123-.016.016-.031.087-.031.154 0 .072.015.123.036.123zm-5.88-.082c.072-.025.072-.036-.005-.082-.046-.026-.097-.036-.112-.02-.016.015-.01.05.005.082.015.03.071.036.113.02zm.252.036c.016 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .01.01.02.025.025zm.288 0c.02 0 .056-.02.072-.046.015-.026.015-.082 0-.128-.016-.047-.062-.083-.098-.083a.153.153 0 00-.103.052c-.02.03-.005.087.031.128a.185.185 0 00.098.077zm4.154 0c.036 0 .051-.015.036-.036-.02-.02-.052-.02-.067 0-.02.02-.005.036.03.036zm.693 0c.015 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .01.01.02.026.025zm2.31 0c.011 0 .006-.036-.01-.077-.015-.04-.04-.067-.056-.056-.015.015-.01.051.01.077.02.03.046.051.057.056zM.915 11.918c.015 0 .025-.01.025-.026 0-.015-.01-.025-.025-.025-.016 0-.026.01-.026.025 0 .01.01.026.026.026zm13.17 0c.037 0 .052-.016.037-.036-.021-.02-.052-.02-.067 0-.02.02-.005.036.03.036zm2.979 0c.026 0 .051-.02.051-.051a.055.055 0 00-.051-.052.051.051 0 00-.051.052c0 .025.025.05.05.05zm-16.2-.087c.04-.016.061-.052.046-.077a.104.104 0 00-.077-.047c-.026 0-.047.036-.047.077 0 .047.031.067.077.047zm.164.015c.02-.02.02-.051 0-.067-.02-.02-.036-.005-.036.036 0 .036.015.052.036.031zm11.44.02c.016 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .015.01.026.025.026zm4.776 0c.01 0 .036-.02.05-.046.016-.025.006-.061-.02-.082-.03-.015-.051.005-.051.046s.005.083.02.083zm1.848 0c.016 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .015.01.026.026.026zm.18-.05a.35.35 0 00.051-.13c0-.025-.02-.015-.051.026a.35.35 0 00-.052.129c0 .026.026.015.052-.026zm-11.04-.011c.041-.016.2-.067.35-.113.148-.051.261-.103.246-.113-.016-.015-.15.015-.298.062a1.305 1.305 0 00-.324.138c-.036.031-.025.041.026.026zm3.615.005c.056 0 .082-.01.067-.026-.016-.015-.062-.02-.098-.005-.041.016-.026.031.03.031zm2.008.005c.015 0 .025-.01.025-.026 0-.015-.01-.025-.025-.025-.016 0-.026.01-.026.025 0 .016.01.026.026.026zm3.08 0c.016 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025-.015 0-.025.01-.025.025 0 .016.01.026.025.026zm.668 0c.015 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025-.015 0-.026.01-.026.025 0 .016.01.026.026.026zm.334 0c.036 0 .051-.015.036-.036-.02-.02-.052-.02-.067 0-.02.02-.005.036.03.036zm.282 0c.016 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025-.015 0-.025.01-.025.025 0 .016.01.026.025.026zm-9.217-.051c.036 0 .052-.016.036-.036-.02-.02-.051-.02-.067 0-.02.02-.005.036.031.036zm8.093-.016c.015-.015.02-.061.005-.097-.016-.041-.031-.03-.031.03-.005.057.01.083.026.067zm.713.016c.016 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.025.01-.025.026s.01.026.025.026zm1.094 0c.01 0 .01-.062-.01-.144a2.97 2.97 0 00-.087-.282c-.031-.077-.077-.139-.103-.139-.026 0-.01.067.03.154a.735.735 0 01.078.247c0 .05.015.112.036.133.015.015.04.03.056.03zm.252-.02c.02-.021.02-.052 0-.067-.02-.021-.036-.006-.036.035 0 .036.015.052.036.031zm-12.118-.14c.118-.061.215-.117.215-.128 0-.01-.03-.02-.067-.02-.036 0-.133.056-.22.128l-.154.128zm5.021.108c.016 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .015.01.025.025.025zm.103 0c.015 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .015.01.025.026.025zm.123 0c.031 0 .057-.02.057-.05 0-.032-.01-.052-.02-.052-.011 0-.037.02-.057.051-.02.026-.01.051.02.051zm.293-.005s.005-.03.005-.072c0-.04-.02-.077-.041-.077-.02 0-.051.021-.067.047-.015.025 0 .056.036.072.031.015.062.025.067.03zm5.448-.015c.02-.02.02-.051 0-.067-.02-.02-.036-.005-.036.036 0 .036.016.052.036.031zm1.017.02c.015 0 .025-.01.025-.025 0-.016-.01-.026-.025-.026-.016 0-.026.01-.026.026 0 .015.01.02.026.026zm-11.887-.05c.036 0 .051-.016.036-.037-.016-.02-.052-.02-.067 0-.02.016-.005.031.03.036zm6.71-.006c.006 0 .011-.01.011-.02 0-.016-.123-.15-.277-.303-.154-.155-.36-.401-.462-.555-.103-.154-.185-.329-.185-.395a.632.632 0 00-.051-.221c-.031-.057-.088-.098-.134-.098-.046 0-.123.052-.175.118-.066.082-.148.118-.287.118-.108 0-.2.026-.21.057-.01.03.02.056.071.056.052 0 .118-.02.154-.051.046-.036.062-.03.062.015 0 .042.051.021.128-.05.123-.114.134-.114.226-.032.052.046.113.185.134.298.02.123.077.241.133.283.057.04.087.092.072.118-.015.025-.005.046.026.046.03 0 .056.025.056.056s-.025.036-.061.016c-.036-.02-.047-.016-.02.025.02.031.056.047.081.031.026-.015.123.052.216.144.092.098.236.21.323.257.088.046.165.087.17.087zm4.304.005c.015 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025s-.026.01-.026.025c0 .01.01.026.026.026zm1.432-.02c.026-.01.067-.077.093-.15a.431.431 0 00-.016-.277c-.05-.143-.061-.143-.112-.046a.69.69 0 01-.098.134c-.02.02-.015.102.02.195.036.087.088.154.113.144zm-.513-.031c.01 0 .036-.026.056-.052.016-.03.006-.05-.02-.05-.026 0-.057.02-.057.05 0 .026.01.052.021.052zm-7.291-.057c.05 0 .082-.01.066-.025-.015-.016-.061-.02-.097-.005-.041.015-.031.025.03.03zm5.294.005c.015 0 .025-.01.025-.025 0-.016-.01-.026-.025-.026-.016 0-.026.01-.026.026 0 .01.01.025.026.025zm.729 0c.015 0 0-.03-.036-.071-.041-.052-.041-.083-.005-.108a.067.067 0 00.02-.093c-.02-.036-.046-.02-.072.041-.02.057-.015.129.016.165a.33.33 0 00.077.066zm.128 0c.026 0 .041-.02.041-.046a.115.115 0 00-.041-.077c-.026-.015-.041.005-.041.046-.005.041.015.072.041.077zm.17 0c.015 0 .025-.01.025-.025 0-.016-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .01.01.025.025.025zM.872 11.41c.01-.067-.005-.15-.041-.18-.052-.046-.057-.036-.031.036.02.051.036.133.04.18.006.046.021.03.032-.036zm9.463.097c.036 0 .052-.015.036-.036-.02-.02-.051-.02-.067 0-.02.02-.005.036.031.036zm1.782-.02c.02-.021.02-.052 0-.067-.02-.02-.036-.005-.036.036 0 .036.015.051.036.03zm10.12-.01c.016-.016 0-.052-.035-.088-.036-.036-.062-.041-.062-.005 0 .03.016.067.036.087.02.02.051.02.062.005zM7.41 11.444c.041 0 .237-.03.437-.077.195-.04.672-.133 1.052-.205.38-.067.755-.123.832-.123.077 0 .154-.026.175-.062.026-.046-.057-.051-.313-.025-.19.02-.58.082-.868.143a35.27 35.27 0 00-.724.15 6.275 6.275 0 00-.437.117c-.128.047-.195.082-.154.082zm1.9.01c.036 0 .052-.015.036-.035-.02-.02-.051-.02-.067 0-.02.015-.005.036.031.036zm1.181 0c.036 0 .052-.015.036-.035-.02-.02-.051-.02-.067 0-.02.015-.005.036.031.036zm.36-.004c.051 0 .04-.02-.026-.047a.493.493 0 00-.154-.046c-.03 0-.015.02.026.046a.355.355 0 00.154.047zm1.56 0c.032 0 .016-.026-.035-.057-.072-.04-.082-.072-.031-.128.046-.057.041-.077-.02-.103-.047-.015-.093-.077-.114-.128-.015-.052-.056-.098-.087-.098-.03 0-.04.016-.02.036.02.02.01.067-.026.103-.041.051-.041.067 0 .067.03 0 .056-.031.056-.062 0-.03.036-.01.083.056.046.067.066.134.05.15-.014.015-.004.06.027.097.03.036.087.067.118.067zm-4.97-.119c.108-.035.483-.133.832-.215.467-.108.6-.16.514-.185a.829.829 0 00-.2-.036c-.062-.005-.062.005-.011.041.051.03.03.051-.062.067-.072.015-.133.005-.133-.02 0-.026-.026-.047-.057-.047-.03 0-.04.02-.025.046s-.072.072-.2.103c-.124.03-.247.057-.268.057-.02 0-.005-.021.036-.052.067-.046.067-.051 0-.046a.546.546 0 00-.18.046c-.102.046-.102.046 0 .052.057.005.078.02.047.03-.03.01-.113 0-.18-.025-.087-.036-.097-.052-.036-.052.052 0 .093-.025.093-.056s.02-.041.051-.02c.026.015.051.01.051-.016 0-.026.283-.082.627-.128.344-.047.847-.103 1.12-.119.271-.015.497-.046.513-.061.015-.016-.308-.005-.72.015a32.3 32.3 0 01-1.052.041c-.2 0-.262.01-.18.031.113.03.103.041-.092.072-.123.02-.246.02-.272.005-.026-.015-.103-.02-.17 0-.087.02-.128.077-.149.195a2.394 2.394 0 01-.061.257c-.03.082-.016.087.164.02zm.093-.087c-.062 0-.072-.015-.031-.03.036-.016.082-.016.097.004.016.016-.01.026-.066.026zm11.455.154c.016 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .015.01.03.025.025zm.129 0c.036 0 .051-.015.036-.036-.02-.02-.052-.02-.067 0-.02.02-.005.036.03.036zm.277-.097c.077-.067.134-.175.134-.237a.422.422 0 00-.077-.21c-.057-.077-.077-.082-.077-.02 0 .04-.047 0-.103-.093-.057-.092-.123-.164-.154-.164-.026 0-.041.03-.026.072.016.04-.01.107-.062.159-.082.082-.082.092 0 .174.072.072.098.077.2.016.103-.067.109-.062.047.01-.036.046-.051.113-.03.144.025.04.015.051-.037.025-.04-.02-.04-.01.01.031.047.036.072.103.057.144-.01.046.036.026.118-.051zm-.303-.314c-.015 0-.026-.01-.026-.025 0-.016.01-.026.026-.026s.026.01.026.026c0 .015-.01.025-.026.025zm-10.424.36c.016 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025-.015 0-.025.01-.025.025 0 .016.01.026.025.026zm1.875 0c.051 0 .04-.016-.026-.046a.493.493 0 00-.154-.047c-.03 0-.015.021.026.047a.355.355 0 00.154.046zm.328 0c.057 0 .082-.01.067-.026-.015-.015-.062-.02-.098-.005-.04.016-.03.026.031.03zm.622 0c.077 0 .066-.016-.052-.067-.082-.036-.164-.056-.18-.046-.015.01.01.041.052.067a.405.405 0 00.18.046zm.2 0c.015 0 .04-.02.056-.051.016-.031.02-.052.005-.052s-.04.02-.056.052c-.015.03-.02.05-.005.05zm.282 0c.057 0 .108-.01.108-.02s-.036-.031-.077-.052c-.041-.015-.087-.005-.108.02-.015.031.02.052.077.052zm1.104 0c.016 0 .041-.02.057-.051.015-.031.02-.052.005-.052-.016 0-.041.02-.057.052-.015.03-.02.05-.005.05zm-3.44-.051c.056 0 .082-.01.067-.026-.016-.016-.062-.02-.098-.005-.041.015-.03.025.03.03zm1.083 0c.031 0 .016-.021-.025-.052a.35.35 0 00-.129-.051c-.03 0-.015.02.026.051.041.031.098.052.128.052zm6.419 0c.015 0 .026-.01.026-.026s-.01-.026-.026-.026-.026.01-.026.026c0 .015.01.026.026.026zm.99-.031a.672.672 0 00.201-.082.158.158 0 00.062-.113c0-.036-.046-.103-.103-.154-.056-.052-.103-.077-.103-.052 0 .02-.056-.02-.128-.092-.072-.077-.149-.134-.175-.134-.025 0-.061.046-.077.108a.215.215 0 01-.133.134c-.077.02-.093.046-.057.092.031.036.119.067.196.067.077 0 .184-.02.24-.046.098-.047.098-.047.006.03a.726.726 0 01-.154.098c-.041.015-.036.046.015.103.057.046.118.061.21.04zm-7.05-.02c.047 0 .062-.032.047-.078-.015-.04-.051-.061-.077-.046a.104.104 0 00-.046.077c0 .026.03.046.077.046zm5.803 0c.016 0 .026-.011.026-.026 0-.016-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .015.01.025.026.025zm.663-.011c.071-.005.133-.026.133-.046s-.026-.052-.051-.067c-.031-.015-.088.005-.134.046-.072.072-.067.077.052.067zm1.494.01c.015 0 .025-.01.025-.025 0-.016-.01-.026-.025-.026-.016 0-.026.01-.026.026 0 .015.01.025.026.025zm.873 0c.015 0 .025-.01.025-.025 0-.016-.01-.026-.025-.026-.016 0-.026.01-.026.026 0 .015.01.025.026.025zm.174-.025c.016-.016-.005-.052-.046-.077-.041-.026-.056-.047-.036-.047.02 0 .026-.025.01-.051-.015-.03-.056-.036-.082-.02-.03.02-.015.071.036.128.046.051.103.082.118.067zm2.09.025c.01 0 .016-.056.016-.123 0-.098-.021-.118-.103-.098-.098.026-.098.031-.016.124a.368.368 0 00.103.097zm-10.598-.092c.077-.062.092-.062.092 0 0 .04.031.02.057-.046.04-.088.082-.108.174-.083.072.02.124.005.124-.025 0-.031-.057-.057-.129-.057-.072 0-.144.036-.159.077-.015.041-.046.067-.072.052-.02-.016-.072.015-.108.066-.061.077-.056.077.02.016zm1.12.04c.03 0 .05-.02.05-.05 0-.031-.02-.052-.05-.052-.032 0-.052.02-.052.051 0 .031.02.052.051.052zm4.559-.025c.015-.015 0-.051-.036-.087s-.062-.041-.062-.01c0 .03.016.066.036.087.02.026.052.026.062.01zm1.68.026c.014 0 .025-.01.025-.026 0-.015-.01-.025-.026-.025-.015 0-.026.01-.026.025 0 .016.01.026.026.026zm-6.009-.052c.016 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .015.01.025.025.025zm4.416 0c.016 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .015.01.025.025.025zm.124-.061c.01-.03-.01-.072-.052-.093-.036-.025-.077-.035-.087-.025-.01.01.01.051.051.092.036.046.077.057.088.026zm2.341.061c.015 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .015.01.025.026.025zM.97 11.096c.041 0 .072-.036.072-.077 0-.04-.025-.077-.051-.077-.031 0-.052-.036-.052-.077 0-.04.021-.077.047-.077.025 0 .061-.092.082-.21.02-.118.015-.231-.016-.262-.03-.031-.077.067-.133.282-.046.185-.072.37-.051.416.015.041.061.082.102.082zm10.321-.02c.036 0 .052-.031.036-.067-.015-.036-.04-.067-.061-.067-.02 0-.036.031-.036.067 0 .036.025.067.061.067zm.15.02c.015 0 .025-.01.025-.025 0-.016-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .01.01.025.025.025zm5.57 0c.026 0 .062-.025.083-.061.02-.036.015-.047-.02-.02-.032.02-.062.01-.062-.027 0-.035-.016-.05-.031-.03-.016.02-.088.01-.154-.016-.098-.036-.113-.03-.093.031.016.041.062.067.098.051.036-.015.082-.005.097.021.026.026.057.051.082.051zm4.889 0c.03 0 .015-.036-.041-.077a.422.422 0 00-.21-.077.24.24 0 01-.17-.077c-.046-.056-.046-.102.005-.2.036-.067.18-.22.318-.339.19-.164.283-.21.38-.19a.41.41 0 00.195 0 .123.123 0 00.067-.108c0-.046-.015-.061-.041-.03-.02.03-.103.056-.18.061-.123.01-.133 0-.092-.087a.342.342 0 01.118-.123c.036-.016.02-.026-.03-.031-.052 0-.19.025-.299.056-.17.052-.21.046-.251-.01-.041-.057-.046-.051-.036.026.01.066-.026.113-.113.138-.103.031-.093.036.051.02.165-.02.17-.015.062.037-.093.046-.144.04-.221-.005-.082-.052-.098-.047-.098.036 0 .056.047.113.103.133a.35.35 0 00.206 0c.056-.015.113-.077.133-.133.015-.057.103-.14.185-.18.087-.046.164-.067.18-.057.015.016-.02.067-.077.118a2.729 2.729 0 01-.288.221 1.348 1.348 0 00-.313.344c-.103.175-.118.237-.077.319.04.072.108.102.23.102.098 0 .19.02.206.052.031.04.067.061.098.061zm-13.823-.051c.036 0 .051-.015.036-.036-.02-.02-.052-.02-.067 0-.02.02-.005.036.03.036zm4.575 0c.02 0 .051-.036.067-.082a.966.966 0 00.03-.247.526.526 0 00-.05-.241c-.042-.062-.052-.057-.052.041 0 .062-.02.118-.046.118s-.062.036-.077.082c-.026.072-.02.072.046.02.067-.056.072-.035.061.124-.01.103 0 .185.021.185zm6.234 0c.015 0 .025-.01.025-.026 0-.015-.01-.025-.025-.025-.016 0-.026.01-.026.025 0 .01.01.026.026.026zm-8.221-.051c.015 0 .04-.02.056-.052.016-.025.02-.051.005-.051s-.04.026-.056.051c-.015.026-.02.052-.005.052zm.339-.016c.056.005.108-.01.123-.025.01-.021-.03-.072-.092-.119-.108-.082-.113-.077-.124.026-.005.077.026.113.093.118zm.03-.036c-.01 0-.04-.025-.061-.061-.02-.036-.015-.047.02-.02.031.02.062.045.062.06 0 .016-.01.021-.02.021zm.524.005c.01-.036.01-.077-.01-.097a.047.047 0 00-.062 0c-.015.015-.01.061.01.097.032.052.047.052.062 0zm5.058.01c.02-.01.041-.046.041-.076 0-.026-.02-.036-.051-.02-.031.014-.057.004-.057-.021a.845.845 0 01-.01-.113.112.112 0 00-.077-.083c-.051-.02-.056 0-.015.077.051.093.04.103-.139.088-.154-.01-.17-.005-.098.036.052.03.129.04.165.025.04-.015.102.005.138.041.031.041.077.062.103.047zm.6.037c.037 0 .052-.016.037-.036-.02-.02-.052-.02-.067 0-.02.02-.005.036.03.036zm5.47-.006c.082 0 .21-.03.282-.071a.709.709 0 01.195-.077c.036 0 .051.025.03.056-.02.036-.015.046.027.02.03-.02.046-.061.025-.092-.02-.03-.01-.04.02-.02.032.02.14 0 .242-.047.103-.046.185-.087.185-.102 0-.01-.103-.02-.231-.02-.129 0-.221.02-.206.045.016.02-.071.077-.195.118-.118.042-.287.103-.375.129l-.154.051zm-13.644-.046c.036 0 .052-.02.036-.051-.015-.03-.082-.051-.144-.051-.092 0-.097.01-.036.05a.443.443 0 00.144.052zm2.65 0c.015 0 .04-.025.056-.051.016-.03.02-.051.005-.051s-.04.02-.056.05c-.015.027-.02.052-.005.052zm5.397 0c.01 0 .035-.025.056-.051.015-.03.005-.051-.02-.051-.026 0-.057.02-.057.05-.005.027.005.052.02.052zm-7.651-.051c.015 0 .025-.01.025-.026 0-.015-.01-.025-.025-.025-.016 0-.026.01-.026.025 0 .01.015.026.026.026zm1.13 0c.015 0 .025-.01.025-.026 0-.015-.01-.025-.026-.025-.015 0-.025.01-.025.025 0 .01.015.026.025.026zm.728-.02c.021-.021.021-.052 0-.067-.02-.02-.036-.005-.036.036 0 .035.016.05.036.03zm.642-.078c.02-.061.057-.113.077-.113.02 0 .02.047.005.103-.02.072 0 .103.062.103.051 0 .139-.057.205-.123.098-.103.103-.129.036-.155a.56.56 0 00-.246 0c-.113.021-.144.016-.098-.02.052-.036.036-.057-.077-.087a2.732 2.732 0 01-.323-.113 9.48 9.48 0 01-.503-.242 2.761 2.761 0 01-.534-.36c-.119-.107-.231-.184-.262-.179-.026.01-.01.052.03.098.047.046.072.092.057.108-.015.015.02.04.077.061.056.02.108.067.108.113 0 .057-.031.067-.113.041-.103-.03-.108-.03-.041.052.051.061.118.082.21.061.103-.02.134-.005.139.062 0 .046-.02.103-.051.118-.026.02 0 .046.056.067.062.02.154.01.21-.02.093-.052.103-.042.103.081 0 .129.01.134.2.108.15-.02.196-.01.18.036-.015.036.016.098.062.134.072.061.108.056.241-.021.139-.077.15-.082.123-.005-.015.046-.015.108.006.139.005.046.036.025.061-.047zm-.385-.128c-.02.02-.036.005-.036-.036 0-.036.016-.051.036-.036.02.026.02.057 0 .072zm-.755-.288c-.036 0-.051-.015-.036-.036.021-.02.052-.02.067 0 .026.021.01.036-.03.036zm1.566.514c.016 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025-.015 0-.025.01-.025.025.005.01.015.026.025.026zm3.508-.02c.138.004.164-.006.087-.031a2.166 2.166 0 00-.36-.067c-.24-.031-.246-.026-.087.03.093.031.257.062.36.067zm.99.02c.026 0 .052-.036.052-.077s-.01-.077-.02-.077-.031.036-.052.077c-.015.041-.01.077.02.077zm.134-.016c.016-.015.02-.061.005-.097-.015-.041-.03-.03-.03.03-.006.052.004.083.025.067zm2.763.016c.015 0 .025-.01.025-.026 0-.015-.01-.025-.025-.025-.016 0-.026.01-.026.025.005.01.015.026.026.026zm1.812-.046c.01-.036.01-.077-.01-.098a.047.047 0 00-.062 0c-.015.016-.01.062.01.098.037.051.047.051.062 0zm1.007.04c.107 0 .107-.004.01-.056a1.434 1.434 0 01-.231-.174.896.896 0 00-.267-.17c-.087-.036-.15-.036-.17-.005-.015.026.005.052.047.052.04 0 .174.082.292.18.113.097.257.174.319.174zM7.384 10.82c.056-.015.215-.056.354-.087.139-.031.36-.046.488-.031.164.015.19.015.082-.01-.123-.031-.062-.052.334-.103.267-.036.606-.082.744-.108l.257-.041-.21-.005a6.016 6.016 0 00-.745.067c-.298.04-.709.113-.92.154-.21.046-.405.108-.436.133-.036.046-.02.052.052.031zm.385.01c.072 0 .097-.01.061-.025a.184.184 0 00-.128 0c-.03.015 0 .025.067.025zm2.08.005c.056 0 .082-.01.066-.025-.015-.016-.061-.02-.097-.005-.041.015-.031.025.03.03zm5.442 0c.016 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .015.015.025.025.025zm1.433 0c.015 0 .041-.02.056-.051.016-.03.021-.051.006-.051-.016 0-.042.02-.057.051-.015.03-.015.051-.005.051zm.827-.01c.133-.01.21-.041.215-.092a.258.258 0 00-.025-.139c-.02-.03-.103-.077-.175-.092-.118-.031-.139-.016-.154.087-.01.072-.056.123-.108.128-.072.005-.072 0-.01-.015.051-.016.077-.067.067-.134-.01-.066-.057-.118-.118-.123-.067-.01-.124.03-.16.113-.051.113-.04.134.103.205.087.036.252.067.365.062zm1.401-.03c.077-.042.103-.088.083-.15a.599.599 0 00-.088-.159c-.04-.056-.061-.046-.092.041a.152.152 0 01-.134.103c-.087-.005-.087-.005 0-.03.052-.011.088-.042.088-.057 0-.02-.02-.067-.047-.103-.035-.056-.066-.051-.148.036l-.103.103.2.097c.113.057.185.118.164.139-.02.02.016.01.077-.02zm-2.326-.011c.016 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025-.015 0-.025.01-.025.025.005.016.015.026.025.026zm-6.341-.051c.036 0 .051-.016.036-.036-.02-.02-.052-.02-.067 0-.02.02-.005.036.03.036zm.95-.016c.04 0 .077-.02.077-.04 0-.021-.036-.042-.077-.042s-.077.02-.077.041c0 .02.036.041.077.041zm3.728.01c.015.006-.02-.03-.072-.071a.431.431 0 00-.139-.077c-.02 0-.04.02-.04.046s.05.056.117.072c.057.015.118.025.134.03zm1.201.006c.01 0 .036-.02.052-.047.015-.025.005-.061-.02-.082-.032-.015-.052.005-.052.046 0 .047.01.083.02.083zm.165-.016c.02-.02.02-.051 0-.066-.021-.021-.036-.006-.036.035.005.036.02.052.036.031zm2.1.016c.015 0 .025-.01.025-.026 0-.015-.01-.026-.025-.026-.016 0-.026.01-.026.026 0 .015.01.026.026.026zM7.415 10.68c.025 0 .046-.01.046-.02s-.036-.036-.082-.052c-.047-.015-.067-.01-.047.021.02.03.057.051.083.051zm1.36-.01c.144 0 .206-.01.144-.02s-.18-.01-.257 0c-.082.01-.03.02.113.02zM11 10.655c.015-.016 0-.057-.036-.088-.036-.036-.062-.04-.062-.01 0 .031.015.067.036.087.02.021.046.026.062.01zm4.77-.016c.01-.036.01-.077-.01-.097a.047.047 0 00-.062 0c-.015.015-.01.061.01.097.036.052.046.052.062 0zm.118.041c.03 0 .051-.02.051-.051 0-.03-.02-.051-.051-.051-.03 0-.051.02-.051.051 0 .03.02.051.051.051zm.154 0c.036 0 .051-.015.036-.036-.02-.02-.051-.02-.067 0-.025.021-.01.036.031.036zm-8.37-.072c.072-.015.38-.071.693-.128.314-.056.683-.123.822-.154l.257-.051-.308.015c-.17.01-.35.03-.4.051a.817.817 0 01-.309.01c-.16-.02-.19-.015-.113.021.077.036.046.046-.128.026-.144-.015-.19-.01-.129.015.083.031.062.047-.113.077a.89.89 0 01-.308.005c-.082-.025-.082-.02-.015.031.062.047.046.057-.077.031-.118-.026-.134-.02-.077.02.04.031.133.047.205.031zm1.746.006c.21 0 .298-.01.195-.02a2.41 2.41 0 00-.385 0c-.108.01-.026.02.19.02zm1.207.015c.015 0 .025-.01.025-.026 0-.015-.01-.025-.025-.025-.016 0-.026.01-.026.025 0 .016.01.026.026.026zm.154 0c.015 0 .025-.01.025-.026 0-.015-.01-.025-.025-.025-.016 0-.026.01-.026.025 0 .016.01.026.026.026zm3.743 0c.026 0 .036-.005.026-.015a1.364 1.364 0 00-.19-.098c-.093-.046-.165-.062-.165-.036 0 .026.062.067.14.093.076.025.163.05.19.056zm.57-.03c.041-.016.072-.057.062-.088-.01-.03-.082-.067-.154-.072-.098-.01-.139.005-.139.062 0 .046.026.082.056.082.031 0 .042-.026.021-.057-.02-.036-.01-.046.036-.03.041.015.067.05.062.082-.016.025.015.036.056.02zm.22-.011c.011-.03.057-.036.098-.02.057.02.072.01.047-.031-.02-.031-.083-.062-.139-.062-.056 0-.098.02-.098.041 0 .02.016.062.036.082.02.02.047.016.057-.01zm.294.041c.01 0 .02-.02.02-.051 0-.031-.026-.052-.056-.052-.031 0-.041.02-.02.052.02.03.045.051.056.051zm1.247 0a.213.213 0 00.21-.19c0-.041-.06-.067-.148-.067-.087 0-.16.031-.18.082-.015.047-.02.103 0 .129.016.025.072.046.118.046zm-.385-.051a.28.28 0 00.18-.062.213.213 0 00.062-.128c0-.036-.057-.067-.129-.067-.072 0-.149.041-.18.097a.446.446 0 00-.05.129c0 .02.05.03.117.03zm-9.263-.052c.026 0 .062-.02.077-.046s.113-.062.22-.082c.109-.02.237-.057.288-.087.052-.026.088-.062.072-.072-.01-.01-.133.01-.272.056a3.707 3.707 0 01-.277.077c-.016 0 .015-.025.067-.056.05-.031.077-.077.061-.103-.015-.026 0-.051.036-.051s.02-.026-.036-.046c-.056-.021-.123-.047-.154-.047-.026 0-.015.02.026.047.061.04.051.05-.052.056l-.128.005.128.046c.103.036.093.041-.077.026-.113-.01-.174-.01-.138.005.036.015.051.046.036.072-.016.026.025.051.087.051.067 0 .087.016.057.031-.036.016-.062.046-.062.072-.005.026.015.046.041.046zm2.778-.005c.072 0 .097-.01.062-.025a.184.184 0 00-.129 0c-.036.015-.005.025.067.025zm.39.005c.046 0 .036-.036-.036-.108-.056-.056-.118-.092-.133-.077-.016.016 0 .062.036.108.036.047.092.077.133.077zm.431 0c.036 0 .052-.015.036-.036-.02-.02-.05-.02-.066 0-.026.02-.01.036.03.036zm1.67 0c.015 0 .025-.01.025-.025 0-.016-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .015.01.025.025.025zm2.156 0c.015 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .015.01.025.026.025zm.144 0c.025 0 .03-.025.02-.061-.01-.036-.061-.072-.113-.082-.082-.016-.082-.006-.02.061.04.046.087.082.113.082zm1.304 0c.02 0 .092-.015.154-.03.062-.016.118-.062.118-.098 0-.041-.092-.072-.246-.087-.18-.016-.262 0-.308.056-.057.072-.062.072-.062-.005 0-.046-.041-.082-.093-.077-.05.005-.21-.01-.359-.036-.17-.026-.267-.02-.267.01 0 .026.036.062.077.083a.26.26 0 00.164-.006c.057-.02.072-.015.047.026-.02.03-.01.062.02.062s.108-.026.164-.057c.088-.046.103-.04.083.01-.02.052.03.072.18.083.123.005.225-.016.25-.052.032-.046.042-.036.042.026 0 .051.015.092.036.092zm2.424-.036c.056-.015.107-.061.107-.097 0-.036-.036-.072-.077-.072-.04 0-.077.01-.077.02s-.015.057-.03.098c-.021.062-.006.077.077.051zm-10.727-.015c.036 0 .051-.015.036-.036-.02-.02-.051-.02-.067 0-.02.02-.005.036.03.036zm2.798 0c.016 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025-.015 0-.025.01-.025.025 0 .016.01.026.025.026zm3.8 0c.016 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025-.015 0-.025.01-.025.025 0 .016.01.026.025.026zm.129 0c.025 0 .05-.02.05-.051 0-.031-.045-.072-.102-.103-.072-.036-.133-.041-.19-.005-.077.046-.067.051.052.051.077 0 .143.026.143.052-.005.035.016.056.047.056zm3.594 0c.036 0 .051-.015.036-.036-.02-.02-.051-.02-.067 0-.026.02-.01.036.031.036zm-4.03-.051c.015 0 .025-.01.025-.026 0-.015-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .015.01.026.026.026zm4.21-.005c.051-.01.102-.052.113-.088.015-.046-.01-.061-.067-.051-.051.01-.103.046-.113.087-.015.041.01.062.067.052zm1.643.005c.015 0 .025-.01.025-.026 0-.015-.01-.026-.025-.026-.016 0-.026.01-.026.026 0 .015.01.03.026.026zm1.232 0c.016 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .015.01.03.025.026zm.154 0c.016 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .015.01.03.025.026zm.92-.016c.03-.01.061-.056.071-.097.01-.062-.01-.072-.092-.052-.057.016-.108.047-.108.067 0 .02.015.051.036.072.02.015.062.02.092.01zm-14.322-.036c.016 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .015.01.03.025.025zm4.072-.046c.067-.036.108-.077.088-.092-.016-.016-.072.01-.119.061-.082.088-.082.088.031.031zm2.896.01c.052-.01.093-.056.093-.092 0-.046-.057-.072-.154-.072-.088 0-.154-.02-.154-.051 0-.031-.047-.052-.098-.052-.051 0-.113.031-.128.062-.016.036-.026.02-.016-.036.005-.062-.025-.108-.082-.118-.051-.01-.139.02-.19.067-.051.046-.082.118-.067.159.016.04.052.056.077.04.031-.02.026-.05-.02-.076-.051-.03-.041-.046.04-.046.063 0 .14.036.176.082.04.051.123.072.21.061.077-.01.134-.005.118.016-.01.02.005.046.041.061.036.01.108.006.154-.005zm2.84.041c.015 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026s-.026.01-.026.026c0 .01.01.025.026.025zm.344-.01c.061-.01.113-.04.103-.067-.006-.025-.042-.056-.083-.066-.04-.01-.087.02-.102.066-.026.062-.005.077.082.067zm2.865.01c.036 0 .051-.015.036-.036-.02-.02-.051-.02-.067 0-.02.021-.01.036.031.036zm-3.44-.05c.036 0 .051-.016.036-.037-.02-.02-.052-.02-.067 0-.02.02-.01.036.03.036zm.38-.016a.14.14 0 00.072-.088c.015-.046-.01-.061-.077-.04a.188.188 0 01-.165-.042c-.051-.056-.077-.056-.133-.005-.057.051-.052.067.04.082.062.01.134.041.16.067.03.02.072.03.103.026zm2.47.015c.015 0 .025-.01.025-.026 0-.015-.01-.025-.025-.025-.016 0-.026.01-.026.025 0 .01.01.026.026.026zm2.074 0c.03 0 .067-.02.082-.051.016-.031.01-.052-.02-.052-.031 0-.067.02-.082.052-.021.025-.01.051.02.051zM9.746 10.27c.056 0 .082-.01.066-.026-.015-.015-.061-.02-.097-.005-.041.015-.03.025.03.03zm.205 0c.057 0 .082-.01.067-.026-.016-.015-.062-.02-.098-.005-.04.015-.03.025.031.03zm3.805.005c.015 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .01.01.026.026.026zm.257 0c.015 0 .025-.01.025-.026 0-.015-.01-.026-.025-.026-.016 0-.026.01-.026.026 0 .01.01.026.026.026zm5.545 0c.016 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .01.01.026.025.026zm1.202 0c.026 0 .062-.02.082-.052.02-.03-.005-.036-.046-.02-.046.015-.082.04-.082.051 0 .01.02.02.046.02zm-13.746-.093c.108-.03.108-.03.015-.072-.082-.036-.077-.04.036-.025.077.01.19-.02.257-.072.118-.087.108-.087-.18-.02a1.55 1.55 0 00-.328.097c-.016.015.01.03.061.03.052 0 .077.021.062.047-.026.026.015.03.077.015zm2.044.041c.036 0 .051-.015.036-.036-.02-.02-.052-.02-.067 0-.026.021-.01.036.03.036zm.18 0c.015 0 .025-.01.025-.025 0-.016-.01-.026-.026-.026-.015 0-.025.01-.025.026-.005.01.01.025.025.025zm1.021-.005c.052 0 .082-.01.067-.025-.015-.016-.062-.02-.098-.005-.04.015-.03.025.031.03zm1.53-.04c.031-.032.041-.068.026-.088-.015-.015-.056-.015-.087.005-.031.02-.041.056-.026.087.026.031.051.031.087-.005zm-.04-.006c-.016 0-.026-.01-.026-.026 0-.015.01-.025.025-.025.016 0 .026.01.026.025 0 .01-.01.026-.026.026zm.63.046c.021 0 .083-.036.134-.072.093-.066.088-.071-.02-.133-.093-.051-.129-.046-.195.026-.077.082-.077.082.046.025.108-.051.118-.051.062.005-.036.036-.062.088-.062.108-.005.026.015.046.036.041zm4.607.005c.015 0 .025-.01.025-.025 0-.016-.01-.026-.025-.026-.016 0-.026.01-.026.026 0 .01.016.025.026.025zm.154 0c.015 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026s-.026.01-.026.026c0 .01.016.025.026.025zm3.106 0c.031 0 .052-.02.052-.046 0-.025-.02-.061-.052-.082-.03-.015-.05.005-.05.046s.025.082.05.082zm.154 0c.036 0 .052-.015.036-.036-.02-.02-.05-.02-.066 0-.02.021-.005.036.03.036zm2.337-.102c.082-.082.092-.118.036-.17-.036-.036-.062-.04-.057-.015a.66.66 0 01.005.097c-.005.026-.04.006-.082-.05-.072-.098-.077-.093-.077.03 0 .072.016.149.036.17.016.025.077-.006.139-.062zm.097.102c.01 0 .036-.036.052-.082.015-.046.01-.067-.02-.046-.026.015-.052.051-.052.082 0 .02.01.046.02.046zM8.38 10.085a.637.637 0 01.133-.242c.067-.071.108-.143.093-.159a.129.129 0 00-.072-.03c-.026 0-.03.025-.016.05.016.032.01.052-.02.052s-.087.072-.128.16c-.047.087-.062.184-.041.215.02.041.04.02.05-.046zm1.34.087c.036 0 .051-.015.036-.036-.02-.02-.051-.02-.067 0-.02.02-.005.036.031.036zm1.72 0c.016 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025-.015 0-.025.01-.025.025 0 .01.015.026.025.026zm.611 0c.016 0 .041-.02.057-.051.015-.031.02-.052.005-.052-.016 0-.041.02-.057.052-.015.025-.02.051-.005.051zm7.307 0c.01 0 .016-.01.016-.015a.521.521 0 00-.113-.113l-.113-.098.097.113a.521.521 0 00.113.113zm.745 0c.03 0 .036-.02.02-.051a.105.105 0 00-.082-.052c-.026 0-.036.02-.02.052.015.025.05.051.082.051zm-8.791-.051c.036 0 .051-.016.036-.036-.02-.02-.052-.02-.067 0-.02.02-.005.036.03.036zm2.336 0c.016 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .01.015.026.025.026zm1.669-.005c.056 0 .051-.01-.02-.052a1.995 1.995 0 01-.293-.257c-.108-.112-.2-.236-.2-.277a.079.079 0 00-.077-.077c-.047 0-.078-.046-.078-.128 0-.072-.01-.129-.025-.129a.816.816 0 00-.18.113c-.082.062-.164.098-.18.088-.015-.016 0-.103.031-.19.031-.088.041-.18.02-.2-.02-.021-.102.04-.184.133-.082.092-.149.21-.149.262a.48.48 0 00.108.23c.056.073.215.186.349.242.133.057.37.139.524.175.154.03.313.061.354.067zm1.643-.01a.326.326 0 00.139-.052c.02-.02-.026-.03-.103-.026-.077.005-.139.031-.139.052 0 .02.047.03.103.025zm.462 0c.057-.006.103-.026.103-.047 0-.02-.026-.041-.062-.041-.03 0-.123-.072-.205-.164a.612.612 0 01-.154-.267c-.005-.057 0-.15.005-.2.01-.078-.01-.088-.108-.057a.78.78 0 00-.185.087.168.168 0 00-.056.134c.005.066.01.066.03-.01.021-.072.052-.036.134.128.062.123.139.216.175.205.036-.005.056.016.051.052-.005.036.026.056.077.05.051-.01.087.016.087.063.01.04.052.071.108.066zm-.38-.345c-.015 0-.025-.01-.025-.025 0-.016.01-.026.025-.026.016 0 .026.01.026.026-.005.015-.015.025-.026.025zm-.051-.308c-.015 0-.026-.01-.026-.026 0-.015.01-.025.026-.025.015 0 .026.01.026.025-.005.016-.016.026-.026.026zm2.901.668c.03 0 .041-.02.026-.047-.016-.025 0-.056.036-.071.036-.01.046-.042.02-.067-.02-.026-.061-.01-.087.03a.492.492 0 00-.051.114c0 .02.025.04.056.04zm-12.426-.052c.036 0 .051-.015.036-.036-.02-.02-.052-.02-.067 0-.026.02-.01.036.03.036zm2.434-.005c.056 0 .082-.01.067-.025-.016-.016-.062-.021-.098-.006-.041.016-.03.031.03.031zm1.571.005c.036 0 .051-.015.036-.036-.02-.02-.051-.02-.067 0-.025.02-.01.036.031.036zm.508 0c.026 0 .062-.02.083-.051.02-.03 0-.036-.047-.02-.046.015-.082.04-.082.05 0 .011.02.021.046.021zm7.682 0c.041 0 .077-.01.077-.02s-.036-.031-.077-.052c-.041-.015-.077-.005-.077.021-.005.026.03.051.077.051zm-7.959-.051c.015 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025-.015 0-.026.01-.026.025-.005.01.01.026.026.026zm.97 0c.037 0 .103-.108.144-.246.041-.134.067-.268.047-.298-.016-.026-.057.036-.083.138a.797.797 0 01-.097.231c-.026.026-.031.016-.01-.015.02-.03.015-.072-.01-.092-.026-.016-.042 0-.037.036.005.035.031.097.057.138.036.057.026.067-.041.041-.052-.02-.077-.015-.057.016.005.025.052.051.088.051zm1.485-.051c.046-.047.035-.083-.052-.15a.52.52 0 01-.144-.2c-.02-.061-.056-.113-.077-.113-.025 0-.051.031-.066.062a.387.387 0 000 .154c.01.052.051.093.082.093.03 0 .087.05.128.107.052.083.082.093.129.047zm1.797.051c.097 0 .092-.015-.041-.154-.098-.103-.165-.139-.2-.103-.031.031-.021.088.04.154a.33.33 0 00.2.103zm.518-.015c.031-.01.062-.083.072-.154.016-.113-.005-.14-.092-.14-.062 0-.123.037-.139.078-.015.041 0 .113.036.154.036.046.087.072.123.062zm.262-.026c.016-.036.052-.051.077-.036.026.015.046.005.046-.02a.105.105 0 00-.05-.083c-.027-.015-.037-.072-.016-.118.03-.082.025-.082-.052 0a.358.358 0 00-.087.118c0 .016.026.016.057-.005.035-.026.046.005.025.087-.015.067-.015.093 0 .057zm2.362.041c.016 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025-.015 0-.025.01-.025.025 0 .016.01.026.025.026zm.411 0c.01 0 .02-.01.02-.02s-.025-.042-.061-.062c-.036-.02-.046-.016-.02.02.02.036.05.062.061.062zm.637 0c.036 0 .051-.015.036-.036-.02-.02-.052-.02-.067 0-.02.02-.005.036.03.036zM6.87 9.936c.144-.016.298-.041.355-.057.077-.02.082-.036.025-.072a.521.521 0 00-.226-.04l-.154.005.154.04c.113.031.077.037-.154.026-.17-.01-.251-.005-.18.01.124.026.124.031.026.072-.067.031-.015.036.154.016zm4.693.03c.026 0 .077-.035.113-.087.062-.077.062-.082-.046-.025-.061.036-.113.072-.113.087s.02.026.046.026zm.714-.02c.01-.01.01-.046-.01-.077-.02-.03-.057-.056-.087-.056-.036 0-.031.03.01.077.03.04.072.066.087.056zm1.268.02c.016 0 .026-.01.026-.025 0-.015-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .015.015.026.025.026zm6.188 0c.026 0 .051-.02.051-.05a.051.051 0 00-.051-.052c-.03 0-.051.02-.051.051 0 .031.025.052.051.052zm-8.765-.082c.051-.02.077-.046.061-.061-.015-.016-.056 0-.092.036-.046.046-.041.056.03.025zm.847.026c.02 0 .077-.03.128-.072.083-.061.083-.066-.04-.066-.078 0-.129.03-.129.071 0 .041.02.072.041.067zm.036-.046c-.015 0-.026-.01-.026-.026 0-.015.01-.025.026-.025.015 0 .026.01.026.025 0 .016-.01.026-.026.026zm7.086.051c.015 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .015.016.025.026.025zm.16 0c.01 0 .02-.01.02-.02s-.026-.041-.062-.062c-.036-.02-.046-.015-.02.02.02.037.051.062.061.062zm.312-.036c.036-.015.067-.046.067-.072 0-.025-.025-.046-.051-.046-.03 0-.051.02-.051.052 0 .025-.042.036-.093.02-.072-.02-.077-.02-.015.02.04.026.102.042.143.026zm.17.036a.055.055 0 00.051-.051.051.051 0 00-.051-.051c-.03 0-.051.02-.051.05 0 .027.025.052.05.052zm3.27-.02c.021-.02.021-.052 0-.067-.02-.02-.035-.005-.035.036 0 .036.015.051.036.03zm.145.02c.01 0 .036-.02.05-.051.016-.03-.004-.051-.05-.051-.047 0-.067.02-.052.05.02.027.041.052.052.052zM11.45 9.843c.021-.02.021-.051 0-.066-.02-.02-.035-.005-.035.036 0 .036.015.05.035.03zm11.179.02c.01 0 .046-.035.082-.076.052-.062.052-.077-.02-.077-.047 0-.083.036-.083.077s.01.077.021.077zm-12.472-.05c.015 0 .025-.01.025-.026 0-.015-.01-.026-.025-.026-.016 0-.026.01-.026.026 0 .015.01.026.026.026zm5.263 0c.03 0 .051-.01.051-.021 0-.01-.02-.036-.051-.056-.031-.016-.052-.006-.052.02 0 .03.026.057.052.057zm.59 0c.016 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .015.01.026.025.026zm1.376 0c.036 0 .15-.016.252-.031.103-.016.18-.052.164-.072-.015-.02.026-.026.088-.01.082.02.102.01.071-.036-.03-.047-.01-.057.067-.031.072.02.108.01.108-.026 0-.046-.072-.051-.246-.03-.134.02-.267.061-.298.097-.031.036-.113.062-.19.056-.077-.005-.129.016-.113.036a.157.157 0 00.097.047zm3.713-.006a.88.88 0 00.251-.046c.077-.03.047-.04-.113-.03-.118.005-.23.025-.251.046-.02.02.03.03.113.03zm.714.006c.015 0 .025-.01.025-.026 0-.015-.01-.026-.025-.026-.016 0-.026.01-.026.026 0 .015.01.026.026.026zM6.357 9.75c.082 0 .123-.01.092-.026a.261.261 0 00-.154 0c-.051.01-.02.026.062.026zm1.027.01c.015 0 .025-.01.025-.025 0-.016-.01-.026-.025-.026-.016 0-.026.01-.026.026 0 .015.01.025.026.025zm.128 0c.036 0 .051-.015.036-.036-.02-.02-.051-.02-.067 0-.02.02-.005.036.031.036zm3.26 0c.016 0 .026-.01.026-.025 0-.016-.01-.026-.025-.026-.016 0-.026.01-.026.026 0 .015.01.025.026.025zm1.413 0c.03 0 .056-.03.056-.072 0-.04.026-.082.062-.092.036-.01-.118-.118-.334-.236-.216-.118-.431-.267-.472-.329a.435.435 0 01-.077-.19c0-.041.036-.144.072-.22.066-.13.066-.144-.021-.196-.056-.03-.108-.03-.123-.005-.016.026-.016.082 0 .123.015.041-.02.129-.082.19-.103.103-.108.124-.036.175.072.051.072.067-.005.113-.067.046-.072.072-.026.123.036.036.133.062.216.062.087 0 .169.015.184.04.016.026 0 .062-.03.083-.036.02-.047.015-.026-.02.02-.031.01-.062-.02-.062-.031 0-.052.051-.042.113.016.097.047.113.185.102.093-.005.165.01.165.042 0 .03 0 .066.005.092 0 .02.036.056.077.082a.28.28 0 00.184.005c.072-.02.098-.015.072.02-.025.032-.015.057.016.057zm-.904-.616c-.015 0-.01-.026.005-.051.016-.031.041-.052.057-.052.015 0 .01.02-.005.052-.016.025-.042.051-.057.051zm4.627.616c.015 0 .025-.01.025-.025 0-.016-.01-.026-.025-.026-.016 0-.026.01-.026.026 0 .015.015.025.026.025zm3.399-.015c.02-.02.02-.052 0-.067-.02-.02-.036-.005-.036.036 0 .03.015.046.036.03zm1.556.015c.036 0 .051-.015.036-.036-.021-.02-.052-.02-.067 0-.02.02-.005.036.03.036zM6.074 9.71c.036 0 .052-.016.036-.036-.02-.02-.051-.02-.066 0-.016.02-.006.036.03.036zm.59-.01c.083 0 .124-.01.093-.026a.261.261 0 00-.154 0c-.051.015-.02.026.062.026zm2.05.01c.01 0 .061-.016.107-.03.067-.027.072-.042.016-.078-.051-.03-.036-.041.046-.03.062.01.108 0 .103-.016-.005-.016.077-.129.18-.247.107-.118.19-.23.19-.251 0-.02-.062-.041-.144-.046-.077-.006-.17.015-.206.046-.04.036-.046.072-.015.113.026.03.03.087.005.128a.103.103 0 01-.128.036c-.047-.02-.093-.005-.103.03-.01.037-.03.13-.051.206-.01.072-.01.139 0 .139zm.261-.154c-.015 0-.025-.01-.025-.026 0-.015.01-.026.025-.026.016 0 .026.01.026.026s-.01.026-.026.026zm2.368.154c.01 0 .02-.01.02-.02s-.025-.042-.061-.062c-.036-.02-.047-.016-.021.02.02.036.046.062.062.062zm.303 0c.015 0 .025-.01.025-.026 0-.015-.01-.025-.025-.025-.016 0-.026.01-.026.025 0 .016.015.026.026.026zm3.85 0c.006 0 .011-.03.011-.072 0-.041-.046-.087-.098-.098-.092-.025-.092-.02-.01.072.052.052.093.098.098.098zm.663 0c.016 0 .041-.02.057-.051.015-.031.02-.052.005-.052-.016 0-.041.02-.057.052-.015.03-.02.05-.005.05zm2.732 0c.01 0 .02-.01.02-.02s-.025-.042-.061-.062c-.036-.02-.046-.016-.02.02.02.036.045.062.06.062zm2.706-.01c.051.005.087-.016.087-.041 0-.026-.036-.062-.082-.077a.787.787 0 00-.205-.031c-.067 0-.124.02-.124.046s.052.056.113.072c.067.015.16.03.21.03zM6.28 9.648c.072 0 .097-.01.061-.025a.184.184 0 00-.128 0c-.03.015-.005.025.067.025zm.719 0c.097 0 .138-.01.087-.025a.355.355 0 00-.18 0c-.046.01-.005.025.093.025zm4.133.01c.016 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .015.01.026.026.026zm5.248-.092a.181.181 0 00-.072-.19.341.341 0 00-.133-.072c-.021 0-.036.052-.036.113 0 .093.01.103.05.036.047-.067.057-.067.104 0a.468.468 0 01.056.154c.005.041.02.02.03-.04zm.308.077c.02-.02.02-.051 0-.067-.02-.02-.036-.005-.036.036 0 .031.015.047.036.031zm2.372.016c.031 0 .067-.047.088-.103.02-.057.01-.134-.021-.17-.03-.036-.041-.082-.02-.102.02-.02.005-.036-.031-.036s-.052.03-.036.077c.015.04.01.087-.02.102-.026.016-.093 0-.15-.035a.564.564 0 01-.164-.196 8.687 8.687 0 01-.16-.43 2.153 2.153 0 01-.097-.422c0-.067.02-.175.046-.246.036-.098.031-.134-.03-.16-.041-.015-.062-.01-.047.016.016.025.016.087-.005.133-.025.062-.04.072-.072.02-.03-.05-.061-.045-.123.021-.046.047-.108.088-.133.088-.026 0-.046.025-.046.056 0 .03.046.046.102.03.057-.014.103-.01.103.016 0 .026-.062.057-.139.083-.108.03-.118.046-.046.061.051.01.082.051.072.082-.01.031-.051.062-.092.067-.042.005-.098.01-.129.01-.03.005-.067.047-.082.098-.02.077.01.087.175.082.107-.005.22-.01.246-.01.026-.005.041-.052.03-.108a.57.57 0 00-.045-.149c-.016-.026 0-.103.04-.175.067-.128.073-.118.134.2.036.186.129.453.2.601.103.2.175.283.293.319.087.03.15.077.139.113-.026.036-.01.067.02.067zM5.094 9.607c.03 0 .066-.02.082-.051.015-.031.01-.052-.02-.052-.032 0-.068.021-.083.052-.015.026-.005.051.02.051zm.826-.01c.098 0 .139-.01.093-.026a.355.355 0 00-.18 0c-.051.016-.01.026.087.026zm.74.005c.056 0 .082-.01.066-.026-.015-.015-.061-.02-.097-.005-.041.016-.026.031.03.031zm.826.005c.016 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .015.015.025.025.025zm.673 0c.01 0 .02-.01.02-.02s-.025-.041-.061-.062c-.036-.02-.046-.015-.02.02.02.037.05.062.061.062zm5.633-.092c.077-.077.092-.139.072-.236-.02-.088-.057-.124-.093-.098-.046.026-.046.041 0 .056.036.01.062.042.062.072 0 .026-.02.036-.051.02-.031-.015-.072.021-.098.088-.026.067-.03.139-.02.165.015.015.071-.01.128-.067zm-.092.04c-.016 0-.026-.01-.026-.025 0-.015.01-.026.026-.026.015 0 .025.01.025.026s-.01.026-.025.026zm.102-.102c-.015 0-.025-.01-.025-.026 0-.015.01-.025.025-.025.016 0 .026.01.026.025 0 .016-.01.026-.026.026zm4.596.154c.056 0 .103-.01.103-.02s-.047-.031-.103-.047c-.057-.015-.103-.005-.103.021 0 .026.046.046.103.046zM6.15 9.556c.016 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.025.01-.025.026s.015.026.025.026zm2.167-.016c.02-.02.02-.05 0-.066-.02-.02-.036-.005-.036.036 0 .03.016.046.036.03zm.283.016c.025 0 .04-.026.03-.062a.13.13 0 00-.082-.082c-.036-.01-.051.01-.03.062.02.046.056.082.082.082zm1.725-.02c.01-.011-.005-.062-.03-.119-.047-.077-.057-.077-.057-.01 0 .046.015.097.03.113.021.02.047.026.057.015zm7.225.02c.015 0 .025-.01.025-.026 0-.015-.01-.026-.025-.026-.016 0-.026.01-.026.026s.015.026.026.026zm-6.573-.052c.015 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .015.016.025.026.025zm4.683-.015c.02-.02.02-.051 0-.067-.02-.02-.036-.005-.036.036 0 .031.016.046.036.031zm2.3.01c.057 0 .083-.01.067-.025-.015-.016-.061-.02-.097-.005-.041.015-.031.03.03.03zm.54.005c.025 0 .061-.02.082-.05.02-.032-.005-.037-.046-.021-.042.015-.083.04-.083.051-.005.01.02.02.047.02zM5.638 9.448c.056 0 .082-.01.067-.026-.016-.015-.062-.02-.098-.005-.041.016-.03.026.03.031zm2.778.005c.015 0 .025-.01.025-.026 0-.015-.01-.025-.025-.025-.016 0-.026.01-.026.025 0 .016.01.026.026.026zm4.98 0c.016 0 .026-.01.026-.026 0-.015-.01-.025-.025-.025-.016 0-.026.01-.026.025 0 .016.01.026.026.026zm4.262 0c.016 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025-.015 0-.025.01-.025.025 0 .016.01.026.025.026zm.642 0c.031 0 .052-.01.052-.02s-.02-.036-.052-.057c-.025-.015-.051-.005-.051.02 0 .026.02.057.051.057zM5.31 9.381c.04-.01.21-.051.369-.082.164-.036.293-.072.293-.087 0-.016-.108-.01-.242.01-.133.02-.303.072-.37.113-.071.036-.092.062-.05.046zm.667.01c.097 0 .298-.015.436-.04l.257-.042h-.282c-.155 0-.35.016-.437.036l-.154.041zm9.474.01c.01 0 .02-.056.02-.128 0-.082-.051-.159-.128-.21-.072-.046-.144-.072-.16-.057-.015.016.031.113.108.21.077.104.15.186.16.186zm1.792 0c.01 0 .036-.02.056-.05.015-.031.005-.052-.02-.052-.026 0-.057.02-.057.051 0 .031.01.052.02.052zm.616-.004c.056 0 .082-.01.066-.026-.015-.015-.061-.02-.097-.005-.041.015-.03.026.03.03zm.236.005c.036 0 .051-.016.036-.036-.02-.02-.051-.02-.067 0-.026.02-.01.036.031.036zm.365 0c.03 0 .035-.02.02-.052a.105.105 0 00-.082-.05c-.026 0-.036.02-.02.05.015.026.05.052.082.052zM7.933 9.35c.03 0 .036-.02.02-.05a.105.105 0 00-.081-.052c-.031 0-.036.02-.021.051.015.026.051.051.082.051zm.339-.061c.036-.026.051-.113.046-.19a2.378 2.378 0 01-.02-.18c-.005-.02-.026-.03-.052-.01-.025.015-.04.097-.03.18.015.123.005.143-.067.118-.077-.031-.077-.026-.01.051.046.051.092.062.133.03zm.298.061c.015 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026s-.026.01-.026.026c0 .01.01.025.026.025zm2.613 0c.016 0 .042-.02.057-.05.015-.032.02-.052.005-.052s-.041.02-.056.051c-.021.026-.021.051-.006.051zm2.265 0c.01 0 .02-.01.02-.02s-.025-.041-.061-.062c-.036-.02-.046-.015-.02.02.025.032.05.062.06.062zm3.045-.005c.062 0 .056-.015-.026-.056a.655.655 0 01-.215-.247 1.098 1.098 0 00-.19-.256c-.042-.036-.093-.052-.108-.036-.016.015.077.159.21.313.139.16.283.282.329.282zM5.283 9.3c.016 0 .026-.01.026-.026 0-.015-.01-.025-.025-.025-.016 0-.026.01-.026.025 0 .01.01.026.026.026zm5.803 0c.015 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025-.015 0-.026.01-.026.025 0 .01.01.026.026.026zm3.646 0c.015 0 .025-.01.025-.026 0-.015-.01-.025-.025-.025-.016 0-.026.01-.026.025 0 .01.01.026.026.026zm2.757-.02c.062-.016.226-.057.365-.088.138-.03.241-.061.23-.066-.01-.01-.153-.031-.323-.047-.17-.015-.339-.01-.38.016-.04.025-.056.082-.036.133.02.057.062.072.144.052zm.478.02c.015 0 .025-.01.025-.026 0-.015-.01-.025-.025-.025-.016 0-.026.01-.026.025 0 .01.01.026.026.026zm.251-.005c.057 0 .082-.01.067-.026-.015-.015-.062-.02-.098-.005-.04.016-.03.026.031.031zM5.386 9.248c.016 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .01.01.026.025.026zm2.347-.005c.02 0 .04-.01.04-.026 0-.015-.06-.051-.133-.077-.077-.03-.123-.062-.107-.077.015-.015.123.02.24.082.119.062.232.092.247.077.021-.02-.015-.062-.066-.092a5.641 5.641 0 00-.308-.154c-.15-.067-.165-.083-.067-.062.077.015.144.02.144.005s-.108-.056-.247-.103c-.226-.071-.236-.071-.139 0 .057.047.067.072.026.052a33.597 33.597 0 00-.719-.236 13.272 13.272 0 00-1.15-.314 5.168 5.168 0 00-.744-.102c-.155 0-.216-.016-.17-.047.046-.025-.02-.036-.18-.025-.205.015-.22.01-.097-.026l.154-.041-.185-.005c-.103-.005-.2.015-.216.041-.015.026-.123.026-.246 0-.118-.026-.555-.03-.965-.02-.411.01-.863.035-1.002.056a1.285 1.285 0 00-.277.051c-.01.01.262.02.606.02.58 0 .631.011.657.098.02.077.062.093.19.077.087-.01.257-.03.37-.046.113-.015.308-.026.436-.03.216-.006.221-.01.077-.047-.082-.02.103-.026.411-.01.308.015.678.061.822.097.23.062.236.067.051.042-.113-.016-.318-.036-.462-.052-.22-.02-.206-.01.103.052.195.04.487.097.641.128.154.03.35.062.432.077.082.01.174.041.205.067.03.025.093.046.134.046.04 0 .297.087.564.19.267.103.534.195.596.205.057.01.149.041.205.072.047.031.113.062.129.057zm-.293-.206a.374.374 0 01-.133-.046 6.926 6.926 0 00-.627-.231 9.26 9.26 0 00-.893-.257c-.35-.072-.35-.072-.067-.046.154.015.503.098.77.18.267.082.606.21.745.277.138.062.23.118.205.123zm1.114.21c.021 0 .042-.03.042-.071 0-.041-.021-.087-.042-.098-.02-.015-.071-.005-.113.02-.066.042-.066.057 0 .098a.337.337 0 00.113.052zm.242 0c.067 0 .102-.035.102-.102 0-.067-.035-.103-.102-.103-.067 0-.103.036-.103.103s.036.103.103.103zm4.703 0c.01 0 .02-.025.02-.05 0-.031-.025-.052-.056-.052-.03 0-.04.02-.02.051.02.026.046.052.056.052zm3.194 0c.072 0 .123-.01.108-.02a1.022 1.022 0 00-.195-.077c-.15-.051-.164-.046-.108.02a.294.294 0 00.195.078zm3.066 0c.015 0 .025-.01.025-.025 0-.015-.01-.026-.025-.026-.016 0-.026.01-.026.026 0 .015.015.026.026.026zm.303 0c.097 0 .138-.02.107-.045a.559.559 0 00-.19-.083c-.118-.03-.138-.02-.107.047.015.05.087.082.19.082zm-8.981-.05c.015 0 .025-.01.025-.026s-.01-.026-.025-.026c-.016 0-.026.01-.026.026 0 .015.016.025.026.025zm2.83 0c.01 0 .045-.052.081-.119.052-.102.052-.108-.015-.051-.041.036-.093.046-.113.026-.02-.02-.02.005 0 .051.015.051.036.092.046.092zm.574-.047c.046-.025.139-.097.206-.159.061-.062.138-.098.164-.082.026.015.097.005.164-.02.098-.042.082-.047-.087-.037a.967.967 0 00-.344.103.493.493 0 00-.164.164c-.021.062-.006.067.061.031zm3.856.046c.077 0 .077-.01.01-.05a.353.353 0 00-.117-.052c-.02 0-.026.02-.01.051.015.026.066.051.117.051zM5.33 9.146c.015 0 .025-.011.025-.027 0-.015-.01-.025-.025-.025-.016 0-.026.01-.026.025 0 .01.015.026.026.026zm2.773 0c.015 0 .025-.011.025-.027 0-.015-.01-.025-.025-.025-.016 0-.026.01-.026.025 0 .01.015.026.026.026zm11.502 0c.015 0 .025-.011.025-.027 0-.015-.01-.025-.025-.025-.016 0-.026.01-.026.025 0 .01.015.026.026.026zm-6.039-.052c.026 0 .057-.031.072-.072.015-.041.015-.087-.005-.103a.148.148 0 00-.087-.03c-.031 0-.021.025.02.05.051.031.057.052.01.052-.036 0-.066.026-.066.051.01.026.03.052.056.052zm.185 0c.015 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026s-.026.01-.026.026c0 .01.016.026.026.026zm5.766 0c.02 0-.102-.139-.267-.308-.164-.17-.375-.34-.457-.38-.087-.041-.174-.067-.195-.052-.02.016-.026.057-.01.098.015.04.092.077.185.077.118 0 .215.067.431.282.149.154.293.283.313.283zm-3.764-.385c.036-.196.103-.432.14-.519.035-.087.081-.16.102-.154.02.005.046-.01.061-.03.016-.021.016-.027-.005-.016-.02.015-.061-.016-.097-.062-.062-.082-.082-.072-.257.103-.108.108-.241.195-.303.195a.31.31 0 01-.175-.062c-.056-.051-.061-.04-.03.052.025.082.015.113-.031.102-.041-.01-.072.047-.087.16-.016.138 0 .169.061.143.046-.02.087.005.098.057.015.072.03.061.072-.041l.051-.129.062.113c.036.062.082.103.107.088.026-.016.052-.098.052-.175 0-.077.03-.17.067-.2.056-.046.066.02.05.339l-.015.395zm-.616-.18c-.015 0-.025-.01-.025-.026 0-.015.01-.025.025-.025.016 0 .026.01.026.025 0 .016-.01.026-.026.026zm.154-.051c-.015 0-.025-.01-.025-.026s.01-.026.025-.026c.016 0 .026.01.026.026 0 .015-.01.026-.026.026zm-.154-.052c-.015 0-.025-.01-.025-.025 0-.016.01-.026.025-.026.016 0 .026.01.026.026 0 .015-.01.025-.026.025zm.206-.103c-.016 0-.026-.01-.026-.025 0-.016.01-.026.026-.026.015 0 .025.01.025.026 0 .015-.01.025-.025.025zm1.258.694a.3.3 0 00.066-.124.24.24 0 00-.02-.169c-.03-.051-.046-.041-.046.041 0 .062-.026.128-.052.144-.03.015-.04.056-.02.082.015.03.046.041.072.026zm.18.025c.015 0 .025-.01.025-.025 0-.016-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .015.015.025.025.025zm.354 0a.41.41 0 00.185-.051c.046-.03.05-.051.015-.051a.477.477 0 01-.149-.036c-.062-.026-.077-.016-.051.025.02.031.02.062 0 .062s-.067-.041-.103-.092c-.062-.083-.067-.077-.036.025.02.077.067.118.139.118zM8.077 8.97c.041-.005.082-.03.092-.066.01-.031-.174-.129-.405-.216a34.629 34.629 0 00-.889-.313c-.256-.082-.75-.21-1.104-.288a7.477 7.477 0 00-1.324-.164c-.452-.02-.683-.01-.683.026 0 .03.149.051.374.051.216 0 .791.077 1.366.19.611.118 1.202.267 1.54.385.304.108.643.241.756.298.113.056.23.103.277.097zm.436.021c.036 0 .083-.046.093-.103.02-.077 0-.102-.067-.102-.051 0-.108.02-.128.051a.12.12 0 000 .103c.02.025.061.051.102.051zm.38-.005c.041 0 .057-.03.036-.082a.562.562 0 01-.03-.129c0-.025-.031-.046-.072-.046-.041 0-.098.031-.134.072-.046.057-.041.082.03.128.057.031.13.057.17.057zm.658-.082c.128-.088.133-.088.025-.134-.056-.025-.144-.036-.19-.015-.066.025-.072.051-.025.133.051.098.061.098.19.016zm.98.087c.01 0-.02-.056-.066-.123a.4.4 0 00-.18-.15c-.057-.015-.103-.01-.098.006 0 .02.02.067.052.113.03.046.051.056.051.036 0-.02.051-.005.113.041a.76.76 0 00.128.077zm.601 0c.016 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025-.015 0-.026.01-.026.025 0 .016.01.026.026.026zm5.304-.005c.01 0 0-.02-.015-.051-.015-.031.005-.052.046-.052.046 0 .082-.04.082-.097 0-.062-.066-.134-.164-.18a1.154 1.154 0 00-.18-.082c-.01 0-.015.056-.015.128 0 .072.026.128.056.128.031 0 .041.021.026.047-.015.025.01.072.062.102.046.031.092.057.102.057zm-.092-.098c-.026 0-.036-.036-.02-.077.015-.04.04-.077.05-.077.011 0 .021.036.021.077s-.02.077-.051.077zm-7.168.052c.036 0 .067-.041.061-.093a.23.23 0 00-.051-.123c-.026-.02-.077-.02-.113-.01-.051.02-.056.051-.015.123.025.056.082.103.118.103zm4.857 0c.026 0 .036-.036.02-.077-.015-.041-.04-.077-.05-.077-.01 0-.021.036-.021.077 0 .04.02.077.051.077zm.509 0c.025 0 .077-.041.113-.088.061-.077.061-.082-.047-.025-.061.036-.113.072-.113.087s.021.026.047.026zm-3.564-.052c.015 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .015.01.025.026.025zm2.737 0c.03 0 .067-.025.087-.051.016-.03-.005-.087-.046-.128-.046-.047-.087-.057-.108-.026-.015.03-.01.051.02.051.032 0 .042.036.021.077-.015.041-.005.077.026.077zm1.607 0c.026 0 .046-.01.046-.02s-.036-.036-.082-.052c-.046-.015-.067-.01-.046.021.015.026.051.051.082.051zm-7.004-.056c.005 0-.005-.036-.02-.082-.016-.047-.17-.175-.34-.283-.169-.108-.328-.2-.354-.2-.025 0-.256-.092-.518-.2a11.843 11.843 0 00-1.166-.39c-.38-.103-.95-.242-1.258-.303-.385-.077-.524-.124-.436-.144.072-.016-.005-.026-.165-.02-.159.004-.282-.006-.272-.026.01-.021-.102-.031-.246-.026-.15.005-.4-.026-.565-.067-.262-.067-.323-.061-.54.01l-.24.083.215.005c.118 0 .231-.02.247-.047.015-.03.077-.05.133-.05.057 0 .098.02.098.04 0 .026.061.072.133.113a.55.55 0 01.18.154c.03.052.02.118-.02.175-.037.046-.144.097-.242.108-.097.01-.282.046-.41.082a1.286 1.286 0 00-.278.102c-.026.026.087.031.257.01.17-.02.765-.035 1.33-.035.837 0 1.134.02 1.617.113.324.061.786.164 1.027.236.241.067.668.21.95.313.282.108.596.221.693.262.098.03.185.067.19.067zm1.53.005c.016 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025-.015 0-.025.01-.025.025 0 .016.01.026.025.026zm3.708-.02c.02-.021.02-.052 0-.067-.02-.02-.036-.005-.036.036 0 .036.015.051.036.03zm3.61.02c.035 0 .05-.015.035-.036-.02-.02-.05-.02-.066 0-.02.02-.005.036.03.036zm.143 0c.031 0 .072-.026.088-.057.02-.03.02-.066.01-.077-.016-.015-.051.01-.087.057-.041.046-.041.077-.01.077zm2.373-.02c.113.005.19-.016.174-.042a.105.105 0 00-.082-.046c-.03 0-.087-.03-.123-.072-.041-.04-.072-.102-.072-.138 0-.047-.015-.052-.057-.01-.03.03-.087.046-.128.03-.041-.015-.072.005-.072.062 0 .051.036.118.077.149.041.03.175.061.283.066zm.36-.031c.035 0 .05-.016.035-.036-.02-.02-.051-.02-.067 0-.02.02-.005.03.031.036zm-11.4-.052c.025 0 .066-.036.092-.082.031-.056.057-.067.082-.026.02.031.077.057.134.057.056 0 .128-.067.17-.149.04-.082.06-.164.045-.18a.129.129 0 00-.071-.03c-.026 0-.031.02-.016.05.016.032.005.052-.025.052-.031 0-.052.041-.042.093.01.051-.01.087-.036.082-.025-.005-.112-.026-.184-.041-.108-.026-.139-.01-.16.072-.02.05-.01.097.01.102zm.98-.005c.021 0 .047-.046.062-.103.02-.077 0-.102-.067-.102-.051 0-.113.025-.128.056-.02.031-.005.077.036.103a.303.303 0 00.097.046zm2.296-.061c.01-.052-.02-.15-.062-.221-.046-.072-.128-.129-.185-.129-.056 0-.102.026-.102.052 0 .03.061.077.133.102.072.026.149.103.164.165.026.102.036.108.052.03zm5.17.061c.016 0 .026-.01.026-.026 0-.015-.01-.025-.025-.025-.016 0-.026.01-.026.025 0 .016.01.031.026.026zm2.825 0c.015 0 .025-.01.025-.026 0-.015-.01-.025-.025-.025-.016 0-.026.01-.026.025 0 .016.01.031.026.026zM9.32 8.683c.077 0 .097-.026.077-.103-.021-.082 0-.102.097-.102.067 0 .123-.021.123-.047 0-.025-.036-.061-.077-.077-.04-.015-.123.016-.18.072-.056.057-.123.103-.153.103-.031 0-.036.036-.021.077.015.041.077.072.134.077zm.62-.015c.109 0 .206-.021.222-.047.015-.025-.01-.03-.052-.01-.051.02-.082 0-.082-.046 0-.041-.036-.093-.082-.108-.062-.026-.072-.005-.051.067.02.066.005.102-.062.123-.046.01 0 .02.108.02zm4.422.01c.015 0 .041-.02.056-.052.016-.03.021-.05.006-.05-.016 0-.042.02-.057.05-.015.031-.02.052-.005.052zm.303-.072a.573.573 0 00.18-.205c.03-.072.046-.16.03-.196-.015-.036.01-.102.062-.143.046-.041.098-.067.103-.062.01.005.036.01.061.01.026 0 .098-.051.16-.113.092-.087.138-.097.205-.056.067.04.087.036.092-.041.005-.052-.02-.103-.056-.118-.036-.016-.144.01-.241.056a.725.725 0 01-.226.067 4.223 4.223 0 00-.298-.03c-.134-.011-.247-.011-.247 0 0 .01.062.05.139.091l.139.072-.113.062c-.062.03-.103.082-.083.108.021.025-.03.061-.102.082-.088.02-.118.051-.082.082.025.026.097.036.159.016.061-.021.097-.057.077-.083-.016-.025 0-.046.036-.046.046 0 .046-.015-.01-.051-.067-.046-.067-.052 0-.052a.471.471 0 00.205-.102.646.646 0 01.16-.103c.014 0 .03.03.03.077 0 .041-.01.067-.026.051-.015-.015-.067.01-.118.062-.051.046-.092.113-.092.149 0 .036-.057.149-.129.252-.072.102-.128.2-.128.215-.005.016.046-.01.113-.051zm2.629.02c.041-.036.067-.077.056-.087-.015-.01-.046-.01-.077.01-.03.021-.056.057-.056.088 0 .036.03.03.077-.01zm2.475.036c.02-.02.02-.051 0-.066-.02-.02-.036-.005-.036.036 0 .036.015.05.036.03zm-11.42-.036c.026 0 .026-.025.01-.05a.904.904 0 00-.236-.155c-.113-.056-.2-.092-.2-.077s.087.082.19.154c.108.072.21.128.236.128zm9.458-.015c.031-.01.041-.072.036-.139a.494.494 0 00-.056-.174.682.682 0 01-.072-.195.747.747 0 00-.2-.293c-.093-.082-.175-.139-.185-.128-.01.01.026.082.082.164.056.077.139.231.19.339.051.108.082.22.072.257-.01.03.005.087.036.123.03.036.067.051.097.046zm.92.015c.056 0 .082-.01.066-.025-.015-.016-.061-.02-.097-.005-.041.015-.031.025.03.03zm1.288 0c.016 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .015.01.025.025.025zm-11.553-.05c.015 0 .026-.011.026-.027 0-.015-.01-.025-.026-.025-.015 0-.026.01-.026.025 0 .016.01.026.026.026zm1.35-.073c.01-.051-.015-.113-.05-.133-.042-.026-.078-.02-.088.01-.01.03.015.087.051.133.067.072.072.072.087-.01zm1.259.072a.165.165 0 00.102-.036c.02-.02.01-.067-.02-.103-.031-.035-.077-.056-.103-.04-.026.015-.046.061-.046.102 0 .046.03.077.067.077zm2.68 0c.015 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025s-.026.01-.026.025c0 .016.01.026.026.026zm2.31 0c.016 0 .026-.01.026-.026 0-.015-.01-.025-.025-.025-.016 0-.026.01-.026.025 0 .016.01.026.026.026zm3.158 0c.036 0 .052-.015.036-.036-.02-.02-.05-.02-.066 0-.026.02-.005.036.03.036zM8.452 8.462a.124.124 0 00.072-.072c.01-.03-.175-.138-.406-.246a12.831 12.831 0 00-.94-.37 21.659 21.659 0 00-1.18-.35c-.37-.097-.807-.2-.976-.23-.17-.031-.35-.072-.4-.087-.052-.016-.093-.006-.093.025 0 .026.077.067.164.082.092.02.555.124 1.022.237.472.113 1.006.256 1.196.328.185.072.488.185.673.257.185.072.426.175.534.231a.938.938 0 01.236.16c.026.03.067.045.098.035zm.19.01c.03 0 .056-.025.056-.051 0-.03-.01-.051-.02-.051s-.036.02-.057.051c-.02.03-.01.051.02.051zm7.635-.015c.02-.02.02-.051 0-.067-.02-.02-.036-.005-.036.036 0 .036.016.052.036.031zm1.633.02c.015 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .015.01.02.026.026zm3.446 0c.01 0 .02-.01.02-.02s-.026-.041-.062-.062c-.035-.02-.046-.015-.02.02.02.032.046.057.062.063zm-12.514-.05c.026 0 .072-.037.108-.078.036-.04.051-.092.036-.108-.016-.015-.067-.015-.108 0a.13.13 0 00-.077.108c-.005.041.015.077.041.077zm5.304-.011c.02.005.052-.015.067-.046.02-.031-.051-.052-.19-.047-.205.006-.21.01-.067.047.088.025.17.046.19.046zm.35.01c.035 0 .05-.015.035-.036-.02-.02-.051-.02-.066 0-.02.02-.005.036.03.036zM.656 8.34c.082-.016.19-.051.231-.072.067-.036.067-.041 0-.041a.866.866 0 00-.23.072l-.155.072zm3.748.036c.016 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.025.01-.025.026s.01.026.025.026zm4.981-.072c.093-.041.108-.077.067-.123-.03-.036-.082-.067-.113-.062a.32.32 0 00-.133.046c-.057.036-.062.062-.01.124.05.056.092.061.19.015zm7-.062c.01-.077-.011-.164-.037-.19-.03-.03-.067-.04-.087-.02-.016.015 0 .102.036.19l.072.159zm1.575.134c.016 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .01.01.026.025.026zm3.03 0c.015 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .01.01.026.026.026zM4.097 8.323c.016 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .01.01.025.025.025zm3.749 0c.015 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026s-.026.01-.026.026c0 .01.01.025.026.025zm.79-.035c.01-.01.01-.031 0-.042a6.076 6.076 0 00-.313-.2c-.159-.097-.277-.195-.256-.215.02-.021.01-.026-.02-.006-.032.02-.155-.02-.273-.087-.118-.067-.195-.139-.175-.164.02-.026.01-.026-.02-.01-.031.02-.098.02-.139.005-.04-.016-.067-.057-.046-.088.02-.03.01-.04-.026-.015-.03.02-.123 0-.2-.041-.077-.041-.118-.077-.092-.082.025 0-.02-.046-.108-.098a1.669 1.669 0 00-.278-.133c-.087-.026-.107-.02-.077.025.026.041.016.057-.03.036-.041-.015-.067-.051-.057-.087.01-.036-.01-.046-.04-.03-.032.02-.273-.052-.54-.155a8.953 8.953 0 01-.678-.287.83.83 0 00-.282-.098c-.052 0-.21-.03-.36-.072A2.638 2.638 0 014.2 6.29a1.021 1.021 0 00-.41-.082c-.17 0-.232.015-.18.046.04.026.17.062.282.077.113.02.298.087.41.15.13.071.211.158.222.23.015.093-.02.129-.144.175-.087.03-.16.072-.16.092 0 .02.15.046.334.062.185.015.673.113 1.089.215.416.103 1.068.288 1.453.416.38.129.878.324 1.104.427.226.102.426.2.437.19zm-1.663-.945a.527.527 0 01-.18-.072c-.072-.041-.108-.072-.077-.072a.57.57 0 01.18.072c.072.04.103.072.077.072zm4.54.945c.01-.01 0-.042-.032-.072-.03-.031-.097-.036-.149-.016-.087.036-.087.041.031.072.072.02.139.026.15.016zm5.119.035c.01 0 .02-.056.02-.123s-.03-.133-.072-.149c-.061-.025-.061 0-.02.124.025.077.061.148.072.148zm4.724 0c.04 0 .071-.046.071-.102 0-.057-.03-.103-.071-.103-.042 0-.088.02-.108.051a.12.12 0 000 .103c.015.026.066.051.108.051zm-2.547-.05c.025 0 .03-.047.015-.109-.02-.077-.041-.087-.067-.04-.02.035-.03.081-.015.107.01.02.041.041.067.041zm1.432-.016a.326.326 0 00.139-.052c.02-.02-.015-.036-.072-.036-.062 0-.123.026-.139.052-.02.025.01.04.072.036zm.334.015c.01 0 .036-.036.051-.082.016-.046.01-.067-.02-.046-.026.015-.051.051-.051.082 0 .02.01.046.02.046zm.57 0c.015 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025-.015 0-.026.01-.026.025 0 .01.01.026.026.026zm-20.03-.056c.056 0 .081-.01.066-.026-.016-.015-.062-.02-.098-.005-.04.015-.03.026.031.03zm6.5-.005c.04 0-.005-.036-.103-.088a6.322 6.322 0 00-.375-.159c-.108-.041-.205-.056-.22-.046-.01.01.123.082.297.154.18.077.36.139.4.139zm1.427.01c.02 0 .067-.026.098-.062.036-.036.061-.082.061-.103 0-.02-.046-.04-.097-.04-.057 0-.113.02-.134.05a.12.12 0 000 .103c.02.026.052.052.072.052zm2.583 0c.03 0 .036-.026.02-.052a.105.105 0 00-.082-.05c-.03 0-.035.02-.02.05.015.026.056.052.082.052zm5.72 0c.016 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.025.01-.025.026s.01.026.025.026zm.616 0c.016 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.025.01-.025.026s.01.026.025.026zm-16.59-.057c.056 0 .082-.01.067-.025-.016-.016-.062-.02-.098-.005-.041.015-.03.025.03.03zm7.373.005c.026 0 .047-.01.047-.02s-.036-.036-.083-.051c-.046-.016-.066-.01-.046.02.02.026.057.051.082.051zm1.792-.005c.016 0-.05-.072-.148-.154a14.146 14.146 0 00-1.582-1.037c-.205-.113-.385-.19-.4-.175-.016.016.025.057.092.093s.39.241.724.457c.329.216.59.375.575.349-.015-.026-.015-.046.005-.046.016 0 .185.113.37.257.18.143.349.261.364.256zm-.79-.508c-.016 0-.026-.01-.026-.026 0-.015.01-.025.026-.025.015 0 .025.01.025.025 0 .016-.01.026-.025.026zm1.412.513c.025 0 .051-.01.051-.02s-.026-.036-.051-.057c-.031-.015-.052-.005-.052.021 0 .026.021.056.052.056zm9.74 0c.006 0 .016-.02.016-.05 0-.032-.041-.052-.092-.052-.077 0-.077.01-.01.051.04.026.081.051.087.051zm.247 0c.015 0 .01-.138-.005-.308-.03-.251-.02-.328.051-.405.046-.052.067-.108.041-.124-.025-.015-.102-.01-.17.01-.097.032-.127.073-.133.216-.005.098.021.196.052.216.046.03.046.041 0 .041s-.046.03 0 .123c.04.083.072.103.097.062.026-.036.041-.015.041.056 0 .062.01.113.026.113zm-.103-.667c-.015 0-.025-.01-.025-.026 0-.015.01-.025.025-.025.016 0 .026.01.026.025 0 .016-.01.026-.026.026zm-19.41.616c.016 0 .026-.01.026-.026 0-.015-.01-.025-.025-.025-.016 0-.026.01-.026.025 0 .016.01.026.026.026zm18.48 0c.011 0 .052-.041.088-.092.062-.082.062-.082-.02-.02-.052.04-.093.076-.093.092.005.01.016.02.026.02zm-17.94-.051c.036 0 .051-.016.036-.036-.02-.02-.052-.02-.067 0-.02.02-.005.036.03.036zm6.403-.005c.005 0 .01-.006.01-.016a.664.664 0 00-.174-.128 1.124 1.124 0 00-.21-.108c-.021 0 .015.041.081.098.067.05.16.107.2.123.047.015.088.03.093.03zm.298 0l.01-.093c.005-.077-.123-.159-.616-.38a72.947 72.947 0 00-1.114-.488 10.829 10.829 0 00-.848-.313l-.683-.215a16.162 16.162 0 00-.713-.206 3.754 3.754 0 00-.473-.103c-.04 0-.066.016-.046.031.015.016.175.062.354.103.18.041.478.123.663.18.185.056.493.164.683.236.246.092.328.149.282.18-.046.03-.036.036.03.015a.642.642 0 01.283.026c.103.03.36.123.57.21.21.082.663.298 1.002.478.339.185.616.339.616.339zm2.51.005c.037 0 .083-.016.098-.031.016-.02-.015-.098-.072-.18-.056-.082-.149-.149-.205-.149-.056 0-.098.016-.098.036 0 .02.021.072.047.108.03.051.056.051.077.015.02-.03.061-.056.092-.056.036 0 .03.026-.005.077-.036.041-.046.098-.03.128a.131.131 0 00.097.052zm2.727 0c.01 0 .031-.02.047-.041.015-.026-.006-.041-.047-.041-.04 0-.061.02-.046.04.016.021.036.042.046.042zm4.801 0c.031 0 .052-.01.052-.02 0-.011-.02-.037-.052-.057-.025-.016-.051-.005-.051.02 0 .026.02.057.051.057zm2.475 0h.118l-.118-.082c-.066-.047-.133-.067-.149-.052-.015.016 0 .031.031.031s.052.02.031.051c-.02.031.02.052.087.052zM1.874 8.015c.046 0 .103-.02.118-.051.016-.03.016-.051-.01-.051a.27.27 0 00-.118.051c-.067.041-.062.051.01.051zm.842-.005c.252 0 .503-.025.56-.046.061-.026-.118-.03-.437-.015-.297.015-.549.036-.56.046-.01.01.186.015.437.015zm11.245.005c.01 0 .021-.025.021-.051 0-.03-.026-.051-.057-.051-.03 0-.04.02-.02.051.02.026.041.051.056.051zm.303 0c.016 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .015.01.025.025.025zm3.697 0c.016 0 .067-.082.108-.18.041-.097.098-.179.129-.179.03 0 .04.02.03.041-.015.02-.005.072.021.113.036.062.051.056.077-.015.02-.052.062-.088.098-.088.036 0 .077-.046.092-.102.015-.057.01-.103-.015-.103-.02 0-.072.036-.108.077-.036.041-.098.067-.134.051-.036-.015-.149.02-.246.082-.098.057-.18.129-.18.154 0 .026.036.047.082.047.046 0 .067.02.046.051-.02.026-.02.051 0 .051zm2.44 0c.035 0 .05-.015.035-.036-.02-.02-.05-.02-.066 0-.02.021-.005.036.03.036zm.539 0c.015 0 .025-.01.025-.025 0-.016-.01-.026-.025-.026-.016 0-.026.01-.026.026 0 .015.01.025.026.025zm.796-.02c.128-.01.272-.036.318-.057a.477.477 0 00.164-.159.451.451 0 00.082-.185c0-.036-.061.01-.143.108a.768.768 0 01-.4.242l-.258.071zM2.095 7.964c.015 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025s-.026.01-.026.025c0 .016.01.026.026.026zm1.489 0c.015 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025-.015 0-.026.01-.026.025 0 .016.01.026.026.026zm7.445 0c.016 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025-.015 0-.025.01-.025.025 0 .016.01.026.025.026zm2.778 0c.01 0 .02-.026.02-.051 0-.031-.025-.052-.056-.052-.03 0-.04.02-.02.052.02.025.041.051.056.051zm2.46-.02c.118.005.128-.01.123-.18-.005-.103-.015-.15-.03-.098-.016.052-.042.088-.062.088-.02 0-.062-.026-.093-.057-.04-.041-.066-.036-.097.01-.02.036-.016.072.015.088.031.01.046.046.036.082-.01.036.03.061.108.067zm.344-.01c.026-.016.02-.073-.01-.13-.031-.056-.077-.097-.103-.097-.026 0-.051.031-.051.067 0 .036.025.092.061.128.031.031.077.047.103.031zm-6.018-.026c.015 0-.057-.072-.154-.165a24.187 24.187 0 00-.54-.477c-.2-.17-.585-.457-.857-.637s-.488-.334-.477-.344c.01-.01.102.03.205.092s.185.098.185.088c0-.016-.092-.082-.2-.16-.129-.087-.21-.112-.221-.071-.01.036-.231-.067-.555-.257-.292-.175-.544-.308-.56-.293-.015.016-.015.031 0 .041.01.01.309.195.658.411.35.216.667.39.703.39.036 0 .088.031.113.072.02.041.283.247.58.457.298.21.668.488.822.616.15.129.288.237.298.237zm.133.005c.01 0 .021-.01.021-.02 0-.011-.026-.042-.062-.062-.036-.021-.046-.016-.02.02.02.036.046.062.061.062zm3.461 0a.055.055 0 00.052-.052.051.051 0 00-.052-.051c-.03 0-.051.02-.051.051 0 .026.026.052.051.052zm.154 0c.036 0 .052-.016.036-.036-.02-.02-.051-.02-.066 0-.021.02-.006.036.03.036zm4.432-.02c.108-.011.185-.057.226-.134.04-.077.066-.093.082-.047.015.036.04.052.061.031.021-.02-.025-.092-.102-.164-.077-.072-.16-.134-.185-.134-.026 0-.026.036-.01.083.025.071.015.071-.077.025-.062-.03-.113-.082-.113-.108 0-.025.036-.05.077-.05.04 0 .077-.021.077-.052 0-.031-.036-.052-.077-.052s-.093.062-.108.139a.347.347 0 00.03.241c.047.077.052.113.006.124-.031.01-.057.04-.057.066 0 .031.077.041.17.031zm1.597.02c.015 0 .04-.02.056-.052.016-.03.02-.051.005-.051s-.04.02-.056.051c-.016.031-.02.052-.005.052zm.313 0c.015 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026s-.026.01-.026.026c0 .015.01.026.026.026zM6.716 7.86c.016 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .015.01.025.026.025zm6.907 0c.035 0 .05-.015.035-.036-.02-.02-.05-.02-.066 0-.02.02-.005.036.03.036zm2.095 0c.025 0 .061-.046.077-.107.015-.067.005-.098-.031-.088-.031.01-.067.057-.077.108-.01.046.005.087.03.087zm-6.48-.051c.01 0 .02-.01.02-.02s-.026-.042-.062-.062c-.036-.02-.046-.016-.02.02.02.036.046.062.061.062zm1.54 0a.518.518 0 00-.02-.128c-.016-.072-.052-.124-.083-.113-.03.01-.21-.082-.39-.21-.185-.13-.313-.206-.283-.175.026.03.211.184.411.344.195.154.36.282.365.282zm.149 0c.015 0 .025-.01.025-.026 0-.015-.01-.025-.025-.025-.016 0-.026.01-.026.025 0 .016.01.026.026.026zm3.075 0c.01 0 .036-.02.057-.051.015-.031.005-.052-.02-.052-.031 0-.057.02-.057.052 0 .03.01.051.02.051zm4.524 0c.016 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025-.015 0-.025.01-.025.025 0 .016.01.026.025.026zm-4.636-.051c.02 0 .035-.02.035-.047 0-.025-.025-.061-.05-.082a.115.115 0 00-.109.005c-.04.026-.036.047.01.077a.342.342 0 00.114.047zm-7.667-.057c.041 0 .062-.005.052-.015a3.71 3.71 0 00-.427-.134c-.22-.061-.41-.102-.426-.087-.015.01.144.072.35.128.21.057.41.108.451.108zm2.88 0c.016 0-.03-.04-.102-.097s-.108-.103-.087-.103c.02 0 .087.02.139.051.056.031.097.046.097.031s-.185-.133-.406-.267c-.226-.133-.405-.267-.4-.293.005-.025-.139-.133-.313-.246a6.528 6.528 0 00-.709-.36c-.21-.087-.416-.174-.452-.184-.051-.02-.04.03.031.17a.85.85 0 01.098.287c0 .066.092.118.349.195.19.056.657.267 1.037.462.38.195.703.354.719.354zm-.235-.2c-.026 0-.195-.082-.38-.18a14.926 14.926 0 00-.575-.287c-.14-.062-.231-.134-.21-.165.02-.036 0-.04-.068-.015-.072.026-.082.02-.04-.02.04-.042.215.03.667.282.334.19.621.349.631.364.01.01 0 .02-.025.02zm-.56-.467a.61.61 0 01-.205-.103c-.088-.057-.134-.098-.103-.098.026 0 .118.047.205.103.082.057.129.098.103.098zm-.837-.206c-.02 0-.082-.025-.139-.046-.056-.026-.087-.046-.066-.046.02 0 .071-.02.123-.036.067-.026.077-.016.046.036-.03.051-.02.061.046.036.052-.02.077-.016.057.015-.02.02-.046.046-.067.041zm.35-.046c-.027 0-.062-.02-.083-.051-.02-.031 0-.036.046-.02.041.015.082.04.082.05.006.01-.015.021-.046.021zm-.54-.103c-.015 0-.026-.01-.026-.025 0-.016.01-.026.026-.026.015 0 .026.01.026.026 0 .015-.016.025-.026.025zm.36-.005c-.031 0-.17-.056-.309-.123-.143-.067-.22-.123-.18-.123.042 0 .18.056.309.123.128.067.205.123.18.123zm-.463-.046c-.015 0-.025-.01-.025-.026 0-.015.01-.025.025-.025.016 0 .026.01.026.025 0 .016-.015.026-.026.026zm-.154-.205c-.015 0-.025-.01-.025-.026 0-.015.01-.026.025-.026.016 0 .026.01.026.026 0 .015-.015.026-.026.026zm2.414 1.283c.01 0 .02-.01.02-.02s-.026-.041-.061-.062c-.036-.02-.047-.015-.021.02.026.037.051.062.062.062zm7.702 0c.015 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026s-.026.01-.026.026c0 .015.01.025.026.025zm-2.26-.051c.016 0 .026-.01.026-.026 0-.015-.01-.025-.025-.025-.016 0-.026.01-.026.025 0 .016.01.026.026.026zm.319-.01a.164.164 0 00.108-.082c.01-.036-.02-.062-.088-.062-.061 0-.107.03-.107.082 0 .046.036.072.087.062zm5.597-.057a.248.248 0 00.056-.19c-.015-.092-.03-.077-.077.077-.046.165-.046.18.02.113zM3.07 7.605c.016 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .015.01.026.025.026zm6.214 0c.015 0 .025-.01.025-.026 0-.015-.01-.026-.025-.026-.016 0-.026.01-.026.026 0 .015.01.026.026.026zm1.833 0c.02 0 .04-.01.04-.02 0-.011-.086-.083-.194-.165l-.19-.144.149.164c.082.093.169.165.195.165zm2.223 0c.016 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .015.01.026.026.026zm.334 0c.026 0 .051-.02.051-.041a.449.449 0 00-.082-.155c-.046-.061-.103-.102-.128-.087a.104.104 0 00-.047.077c0 .026.036.046.077.046.042 0 .072.016.072.042a.196.196 0 000 .077c0 .025.026.04.057.04zm2.531-.031c.052-.02.077-.046.062-.062-.015-.015-.057 0-.092.036-.052.051-.042.057.03.026zm.324-.026c.04-.036.067-.072.056-.082-.01-.01-.056-.005-.102.01-.047.016-.072.057-.057.082.016.031.057.026.103-.01zm-9.043.005c.016 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .015.01.025.025.025zm7.549 0c.01 0 .02-.02.02-.051 0-.03-.026-.051-.056-.051-.031 0-.041.02-.02.05.02.027.045.052.056.052zm6.485-.025c.015-.016 0-.052-.036-.088s-.062-.04-.062-.01.016.067.036.087c.02.02.052.026.062.01zm-8.308-.026c.03 0 .051-.02.051-.046s-.02-.062-.051-.082c-.026-.016-.052.005-.052.046 0 .046.02.082.052.082zm2.172 0a.26.26 0 00.128-.046c.051-.031.041-.052-.046-.072-.062-.016-.134-.02-.16-.005-.025.015-.03.046-.015.077.016.03.062.046.093.046zm6.752 0c.062 0 .16-.046.216-.103.056-.056.102-.128.102-.154 0-.03-.015-.051-.04-.051-.021 0-.119.072-.216.154-.16.139-.165.154-.062.154zM7.178 7.399c.016 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .015.01.025.025.025zm11.744-.005c.036 0 .128-.077.195-.164l.128-.165-.18.113a.708.708 0 00-.195.165c-.01.03.01.056.052.051zM4.76 7.343c.056 0 .082-.01.067-.026-.016-.015-.062-.02-.098-.005-.041.015-.026.03.03.03zm-.252-.057c.082 0 .123-.01.093-.025a.261.261 0 00-.154 0c-.052.01-.021.025.061.025zm6.213.01c.016 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .015.015.026.025.026zm4.96 0c.057 0 .093-.025.072-.05-.015-.032-.066-.052-.107-.052-.041 0-.072.02-.072.051 0 .026.051.052.108.052zm5.207-.05c.016 0 .026-.011.026-.027 0-.015-.01-.025-.026-.025-.015 0-.025.01-.025.025 0 .016.015.026.025.026zm.426 0c.01 0 0-.021-.015-.052-.015-.031-.062-.052-.092-.052-.036 0-.031.021.015.052.046.025.087.051.092.051zm-10.788-.057c.005 0 .026-.02.041-.047.016-.025-.195-.205-.472-.4-.277-.195-.6-.41-.719-.488-.123-.077-.22-.133-.22-.123 0 .01.19.16.42.334.231.174.54.405.683.518.144.113.262.206.267.206zm3.759.005c.026 0 .062-.036.077-.082.015-.047.026-.093.015-.103a.897.897 0 00-.19-.051c-.123-.026-.159-.016-.133.025.02.031.072.062.113.062.04 0 .072.036.072.077 0 .036.02.072.046.072zm1.16-.005c.057 0 .083-.01.067-.026-.015-.015-.061-.02-.097-.005-.042.015-.031.026.03.03zm.57.005c.062 0 .062-.02-.015-.129-.051-.071-.128-.128-.17-.128-.056 0-.05.02.021.077.057.041.082.077.062.077-.02 0-.026.02-.005.051.02.026.066.052.107.052zM4.303 7.127c.113 0 .164-.01.118-.02a.462.462 0 00-.205 0c-.067.01-.026.02.087.02zm12.077.015c.067 0 .067-.015.015-.077-.036-.04-.082-.061-.108-.046-.025.016-.03.052-.015.077.015.026.067.046.108.046zm4.662 0c.016 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .015.015.025.025.025zM3.661 7.076c.154 0 .22-.01.139-.02a1.298 1.298 0 00-.283 0c-.072.01-.01.02.144.02zm5.628.015c.01 0 .02-.01.02-.02s-.025-.041-.061-.062c-.036-.02-.047-.015-.02.02.02.036.045.062.06.062zm3.41-.026c.03-.02.05-.092.05-.169 0-.072-.01-.123-.02-.113a.608.608 0 00-.051.164c-.02.103-.016.139.02.118zm2.746.026c.016 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025-.015 0-.025.01-.025.025 0 .016.01.026.025.026zm.2-.005c.057 0 .083-.01.067-.026-.015-.015-.061-.02-.097-.005-.041.016-.026.026.03.031zm2.47-.046c.016 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.025.01-.025.026s.01.026.025.026zm2.979 0c.04 0 .077-.02.077-.046s.015-.088.036-.14c.025-.06.015-.076-.026-.05a.467.467 0 00-.113.138c-.041.077-.036.098.026.098zm-11.96-.052c.01 0 .021-.01.021-.02s-.025-.041-.061-.062c-.036-.02-.047-.015-.02.02.02.037.045.062.06.062zm6.414 0c.015 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .015.016.025.026.025zm.128 0c.036 0 .052-.015.036-.036-.02-.02-.051-.02-.066 0-.02.021-.005.036.03.036zm.96 0c.006 0 .026-.025.047-.061.02-.036.02-.046-.005-.026-.02.02-.072 0-.113-.051-.057-.067-.067-.072-.057-.01.01.04.036.092.067.112.03.016.057.031.062.036zm-7.044-.05c.015 0 .025-.011.025-.027 0-.015-.01-.025-.025-.025-.016 0-.026.01-.026.025 0 .016.015.026.026.026zm4.318 0c.01 0 .005-.037-.01-.078-.016-.041-.052-.077-.082-.077-.031 0-.026.03.01.077.036.041.072.077.082.077zm4.16 0c.01 0 .004-.037-.011-.078s-.051-.077-.082-.077c-.031 0-.026.03.01.077.036.041.072.077.082.077zM9 6.88c.016 0-.04-.057-.128-.129a3.896 3.896 0 00-.334-.236c-.098-.056-.154-.077-.123-.046.03.03.17.138.308.23.139.098.262.18.277.18zm5.366.005c.015 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .015.01.026.026.026zm-6.033-.108c.015 0-.02-.036-.077-.082a3.7 3.7 0 00-.478-.257c-.205-.098-.37-.19-.37-.2 0-.016.052-.01.113.005.088.026.077.01-.036-.062a7.334 7.334 0 00-.446-.241c-.165-.082-.329-.185-.37-.231a.41.41 0 01-.087-.21.354.354 0 01.02-.19c.026-.042.005-.052-.061-.037-.052.016-.113 0-.134-.03-.02-.031-.056-.057-.087-.057-.031 0-.005.062.056.134a.55.55 0 01.108.277.266.266 0 01-.103.216c-.092.066-.087.071.103.077.113.005.36.066.55.138.19.072.359.144.374.16.016.015-.04.015-.123 0-.082-.021.113.102.437.272.318.18.595.313.61.318zm9.104-.046c.02 0 .02-.031 0-.062a4.479 4.479 0 01-.16-.426c-.082-.252-.107-.303-.092-.164.015.113.005.18-.026.164-.025-.016-.046-.016-.046.005 0 .02.062.139.139.262.082.118.164.22.185.22zm.344 0c.025 0 .051-.036.051-.082 0-.047-.026-.067-.051-.047a.098.098 0 00-.052.082c0 .021.026.047.052.047zM9.237 6.68c.01 0 .02-.01.02-.02s-.025-.041-.06-.062c-.037-.02-.047-.015-.021.02.02.037.046.062.061.062zm4.72 0c.015 0 .025-.01.025-.025 0-.016-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .01.01.025.025.025zm4.081 0c.026 0 .052-.01.052-.02s-.026-.036-.052-.057c-.03-.015-.05-.005-.05.02 0 .027.025.057.05.057zM9.386 6.63c.016 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025-.015 0-.025.01-.025.025 0 .016.01.026.025.026zm4.73-.015c.015-.016.02-.062.005-.098-.016-.041-.031-.03-.031.03-.005.057.01.083.025.068zm-2.065-.036c.016 0 .041-.026.057-.052.015-.03.02-.051.005-.051-.016 0-.041.02-.057.051-.015.026-.02.052-.005.052zm1.34 0c.016 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .015.01.026.025.026zm4.524 0c.01 0 .02-.036.02-.077s-.02-.077-.05-.077c-.026 0-.037.036-.021.077.02.04.041.077.051.077zM12.39 6.5c.129-.01.241-.02.257-.02.015-.006-.016-.032-.062-.057-.061-.036-.138-.031-.256.02l-.17.072zm.129-.026c-.016 0-.026-.01-.026-.026 0-.015.01-.025.026-.025.015 0 .025.01.025.025 0 .016-.01.026-.025.026zm4.554-.185c.02-.139.026-.257.016-.267-.01-.01-.072.03-.134.087-.092.088-.103.118-.046.185.036.041.046.077.025.077-.02 0-.005.036.031.088.067.071.077.05.108-.17zm.683.236c.015 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .015.01.025.026.025zm-9.448-.102c.015 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .015.01.026.026.026zm6.208-.016c.056-.005.108-.036.118-.072.01-.036-.02-.051-.082-.036a.348.348 0 01-.22-.036l-.124-.061.103.108c.061.061.154.102.205.097zm1.87-.01c.122-.01.235-.036.256-.057.02-.02.01-.025-.026-.005-.03.02-.067.016-.077-.01-.01-.026-.128-.036-.267-.02-.16.02-.226.046-.18.071.041.02.17.031.293.02zm-8.592-.026c.016 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .015.01.025.025.025zm.416 0c.01 0 .02-.01.02-.02a.352.352 0 00-.091-.093c-.083-.061-.083-.061-.021.02a.352.352 0 00.092.093zm10.044-.061a.372.372 0 00.118-.088c.016-.025-.04-.02-.123.01-.108.042-.236.042-.452 0-.164-.03-.323-.04-.349-.025-.03.015.123.056.334.087.21.031.426.036.472.016zm-10.562.01c.015 0 .025-.01.025-.026 0-.015-.01-.025-.025-.025-.016 0-.026.01-.026.025 0 .016.01.026.026.026zm4.508 0c.01 0 .108-.036.216-.082.174-.072.2-.072.287.01.088.082.098.082.098.005 0-.046.03-.087.062-.087.036 0 .005-.026-.062-.051-.092-.036-.185-.031-.344.03-.118.047-.231.103-.247.134-.02.02-.02.04-.01.04zm-3.199-.087c.016-.01-.01-.041-.051-.067-.041-.026-.098-.031-.123-.016-.026.016-.006.047.05.067.052.02.109.026.124.016zm-2.028-.016c.015 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .015.01.025.026.025zm1.027 0c.015 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026s-.026.01-.026.026c0 .015.01.025.026.025zm5.705-.015c.015-.016.02-.062.005-.098-.016-.04-.031-.03-.031.031-.005.057.01.087.026.067zm.4.01c.057 0 .082-.01.067-.026-.015-.015-.062-.02-.098-.005-.04.016-.03.031.031.031zM6.82 6.167c.015 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025s-.026.01-.026.025c0 .016.01.026.026.026zm1.607 0c.005 0 .01-.02.01-.046s-.087-.088-.195-.134a9.265 9.265 0 01-.724-.431 8.167 8.167 0 01-.693-.478c-.154-.133-.154-.138-.03-.108a.543.543 0 01.205.093c.04.036.107.077.143.097.036.021.062.016.062-.015 0-.026-.128-.123-.282-.21a1.636 1.636 0 01-.283-.185c0-.01.051 0 .113.03.108.052.113.052.02-.02-.05-.041-.117-.067-.138-.051-.026.015-.113-.01-.2-.057-.088-.046-.154-.092-.154-.108 0-.015.051 0 .113.031.061.03.092.036.061.005a4.964 4.964 0 00-.554-.318c-.278-.15-.514-.257-.524-.247-.01.01.082.108.21.216.129.108.268.262.309.344.046.082.066.195.05.247-.025.071.006.102.134.123.088.015.396.149.683.287.288.139.776.406 1.084.59.308.19.57.345.58.345zm6.624-.01c.036.005.056-.016.041-.036-.015-.026-.087-.057-.16-.072-.071-.016-.143-.005-.153.015-.016.02.026.052.092.062.062.015.144.03.18.03zm.241.01c.016 0 .026-.01.026-.026 0-.015-.01-.025-.026-.025-.015 0-.025.01-.025.025 0 .016.01.026.025.026zm1.361 0c.036 0 .051-.016.036-.036-.015-.02-.051-.02-.067 0-.02.02-.01.036.031.036zm1.992-.026c.016-.015 0-.051-.036-.087s-.061-.041-.061-.005c0 .03.015.067.036.087.02.015.046.02.061.005zM6.716 6.116c.016 0 .026-.01.026-.026s-.01-.026-.026-.026c-.015 0-.026.01-.026.026 0 .015.01.026.026.026zm.257 0c.026 0 .015-.021-.026-.052a.35.35 0 00-.128-.051c-.026 0-.016.02.026.051a.319.319 0 00.128.052zm2.105 0c.016 0 .026-.01.026-.026s-.01-.026-.026-.026c-.015 0-.025.01-.025.026 0 .015.01.026.025.026zm7.26 0c.093 0 .211-.021.263-.052a.454.454 0 00.149-.21.909.909 0 00.051-.298c-.005-.123-.01-.123-.046-.031a.69.69 0 00-.046.236c0 .072-.047.17-.093.21a.503.503 0 01-.241.088c-.082.005-.16.02-.175.036-.015.01.046.02.139.02zm-7.347-.057c.01 0 0-.02-.016-.046a1.527 1.527 0 00-.261-.21c-.129-.088-.247-.15-.257-.134-.016.015.097.108.246.205.15.103.278.185.288.185zm4.426.005c.03 0 .067-.03.082-.072a.08.08 0 01.103-.046c.046.015.092-.026.128-.113a.545.545 0 01.144-.21.388.388 0 01.2-.067c.062 0 .129-.026.144-.052a.126.126 0 00-.005-.113c-.026-.04-.056-.03-.098.026-.061.082-.066.082-.097 0-.026-.072-.057-.056-.164.103-.072.103-.165.19-.206.19a.079.079 0 00-.077.077c0 .041-.015.077-.04.077-.021 0-.068.046-.104.103-.04.061-.04.097-.01.097zm.745 0c.015 0 .025-.01.025-.026 0-.015-.01-.025-.025-.025-.016 0-.026.01-.026.025 0 .016.01.026.026.026zm2.67-.051c.015 0 .025-.01.025-.026 0-.015-.01-.026-.025-.026-.016 0-.026.01-.026.026s.01.026.026.026zm.102 0c.016 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.025.01-.025.026s.01.026.025.026zm1.459-.016c.067-.005.144-.066.19-.149.04-.077.056-.143.03-.143-.025 0-.107.066-.19.149-.138.149-.138.154-.03.143zm-5.726-.036c.016 0 .042-.02.057-.05.015-.032.02-.052.005-.052s-.041.02-.056.051c-.021.026-.021.051-.006.051zm.386-.05c.025 0 .071-.083.107-.18.031-.098.083-.18.108-.18.026 0 .046-.02.046-.052 0-.025-.036-.036-.077-.02-.04.015-.113.097-.154.174a.738.738 0 00-.077.2c0 .031.02.057.047.057zm-6.85-.052c.015 0 .025-.01.025-.026 0-.015-.01-.026-.025-.026-.016 0-.026.01-.026.026 0 .015.01.026.026.026zm1.232 0c.015 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .015.01.026.026.026zm.868 0c.026 0 .005-.031-.052-.072a.406.406 0 00-.148-.077c-.026 0-.006.03.05.072a.406.406 0 00.15.077zm8.74-.016c.015-.015.015-.077-.006-.138-.02-.057-.072-.108-.118-.103-.077 0-.077.005.005.051.052.031.093.088.093.134 0 .046.005.077.025.056zm.179-.046a.538.538 0 00.046-.241c0-.15-.01-.165-.077-.108a.247.247 0 00-.077.154c0 .051.016.134.031.18.026.066.041.072.077.015zm.436-.04l.057-.155a.318.318 0 00.015-.154c-.01-.057.01-.051.093.02.108.098.108.098.108-.005 0-.071-.041-.113-.129-.128-.072-.015-.144-.005-.159.026-.015.03-.062.036-.097.02-.052-.02-.052.005.005.113a.763.763 0 01.077.242c.005.066.015.077.03.02zm-3.584-.027c.016-.015 0-.051-.036-.087s-.061-.041-.061-.01c0 .03.015.067.036.087.02.02.046.026.061.01zm.36 0c.015-.015 0-.051-.036-.087s-.062-.041-.062-.01c0 .03.016.067.036.087.02.02.046.026.062.01zm3.476-.025c.015 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .015.01.026.026.026zM7.317 5.653c.02 0 .041-.01.041-.02a.712.712 0 00-.175-.123 1.645 1.645 0 00-.297-.139c-.072-.02-.006.036.133.123.144.087.277.16.298.16zm.698-.005c.01 0 0-.02-.015-.046a.375.375 0 00-.134-.103c-.072-.036-.097-.036-.097 0 0 .031.051.077.113.103.067.026.123.046.133.046zm.344 0c.026 0 .005-.03-.051-.077-.057-.04-.36-.23-.668-.416-.313-.185-.62-.375-.693-.41-.123-.072-.123-.072-.025.015.056.046.251.174.436.287.185.108.472.293.642.401.17.108.329.2.36.2zm-1.514-.046c.035 0 .05-.015.035-.036-.02-.02-.05-.02-.066 0-.02.02-.005.036.03.036zm7.589-.051c.077 0 .077-.005.01-.052a.353.353 0 00-.118-.051c-.02 0-.026.02-.01.051.015.026.072.052.118.052zm-6.742-.108c.025 0 .005-.036-.046-.077a.406.406 0 00-.15-.077c-.03 0-.004.036.047.077.051.04.118.077.149.077zm6.603-.15c.046 0 .113-.03.15-.076.035-.041.05-.087.04-.103-.015-.015-.082.02-.149.077-.097.077-.102.098-.04.103zm3.518-.014c.015-.016.02-.062.005-.098-.016-.041-.031-.03-.031.03-.005.057.01.088.025.068zM7.358 5.243c.036 0 .051-.016.036-.036-.02-.02-.051-.02-.067 0-.02.02-.005.036.031.036zm10.357-.165a1.7 1.7 0 00.067-.174c0-.01-.02-.02-.046-.02s-.088.06-.134.133c-.072.107-.077.143-.02.174.046.031.087 0 .133-.113zm-3.117.01c.036 0 .051-.015.036-.035-.02-.02-.051-.02-.067 0-.02.02-.005.036.031.036zm-8.036-.41c.016 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .015.01.026.026.026zm-.616-.462c.015 0 .026-.01.026-.026 0-.015-.01-.026-.026-.026-.015 0-.026.01-.026.026 0 .015.01.026.026.026zm-.103-.052c.016 0 .026-.01.026-.025 0-.016-.01-.026-.026-.026-.015 0-.025.01-.025.026 0 .015.01.025.025.025zm-.734-.262a.04.04 0 00.041-.04c0-.026-.077-.083-.175-.13a1.037 1.037 0 00-.215-.081c-.02 0 .036.056.133.123a.855.855 0 00.216.128z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/leroymerlin.svg b/assets/lib/simple-icons/icons/leroymerlin.svg
new file mode 100644
index 00000000..66931a28
--- /dev/null
+++ b/assets/lib/simple-icons/icons/leroymerlin.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Leroy Merlin</title><path d="M10.407 7.419c-.17-.164-.329-.323-.478-.468.707-.722 1.414-1.444 2.116-2.166.239.234.468.453.687.683.02.02.01.084-.01.119-.22.433-.438.866-.657 1.3-.02.04-.04.074-.07.139l.134-.055c.449-.204.902-.403 1.35-.612.074-.035.12-.035.184.03.2.199.403.393.583.567-.722.742-1.434 1.464-2.136 2.181-.18-.174-.349-.343-.513-.503.348-.353.707-.717 1.065-1.075l-.015-.03-.11.045-1.284.582c-.07.03-.12.04-.174-.025-.075-.09-.21-.164-.224-.258-.015-.095.074-.215.124-.32.18-.393.364-.786.528-1.194-.368.358-.737.712-1.1 1.06zm11.71 10.357c.01-.045.016-.06.016-.074.194-.683.388-1.365.577-2.047.01-.04.02-.104-.005-.13-.234-.238-.473-.467-.722-.706l-2.116 2.16c.15.145.319.31.493.484.463-.454.941-.917 1.4-1.36 0-.015 0 0-.006.015-.159.667-.313 1.335-.483 1.997-.044.18-.035.304.115.428.17.14.319.309.488.478L24 16.851c-.144-.14-.309-.3-.503-.494-.443.458-.901.926-1.38 1.42zm-7.956-6.582c.124-.13.269-.274.433-.443-.299-.294-.612-.593-.906-.877.164-.164.314-.318.478-.488.234.234.478.478.717.712.14-.144.284-.289.458-.463-.239-.234-.493-.473-.717-.692l.334-.358c.313.308.627.612.936.916.134-.135.274-.28.413-.424-.498-.487-1.006-.98-1.519-1.483l-2.11 2.156c.487.468.99.96 1.483 1.444zM3.187 15.102c-.155-.139-.29-.264-.409-.373.294-.314.588-.622.887-.941-.13-.12-.27-.254-.414-.389-.488.478-.985.966-1.473 1.44l2.15 2.15c.489-.477.987-.96 1.49-1.453-.15-.14-.29-.27-.434-.409-.304.294-.617.603-.916.897l-.463-.434c.249-.264.488-.522.737-.786-.14-.13-.284-.264-.468-.439zm5.258-6.647c-.07-.025-.115-.02-.165.035-.149.154-.308.304-.463.453-.02.02-.034.045-.06.075.38.124.743.239 1.111.358.264.085.553.13.787.27.229.139.408.373.602.572.1.104.194.214.294.328.2-.214.373-.398.553-.587-.24-.244-.498-.503-.747-.767a.39.39 0 0 1-.09-.16c-.09-.363-.174-.731-.264-1.095-.07-.294-.144-.592-.219-.906-.214.21-.413.403-.607.598-.02.02-.02.074-.01.11.04.148.084.293.124.442.06.214.12.428.185.667-.364-.149-.698-.268-1.031-.393zm11.193 3.998-.558-.542c-.697.712-1.399 1.434-2.116 2.166.478.468.976.95 1.47 1.429.154-.16.323-.329.507-.518-.294-.289-.602-.588-.911-.886.548-.568 1.085-1.116 1.608-1.649zm-17.532 6.33c.498-.484.986-.962 1.479-1.445-.174-.16-.344-.319-.518-.478-.289.279-.592.578-.906.881-.548-.562-1.09-1.115-1.633-1.673-.18.19-.354.369-.528.558.692.707 1.394 1.43 2.106 2.156zm18.842-4.995c-.697.712-1.4 1.434-2.102 2.15.16.16.339.34.533.529.697-.712 1.404-1.434 2.106-2.156-.159-.16-.343-.334-.537-.523zm-2.973-1.759c-.294.23-.612.299-.976.16-.154.478-.309.946-.463 1.424-.19-.185-.368-.354-.543-.538-.025-.03-.015-.105-.005-.15.125-.572.25-1.145.379-1.722.005-.02.005-.04-.01-.075-.374.388-.747.777-1.116 1.155l-.552-.538 2.086-2.16c.468.452.921.87 1.344 1.319.284.289.195.856-.144 1.125zm-.543-.97c-.154-.17-.333-.32-.498-.474-.154.16-.318.324-.493.503.1.105.205.22.31.329.02.025.039.05.064.064.045.035.09.07.14.09.159.07.338.02.442-.114.115-.14.14-.29.035-.399zm-8.086.084c0 .812-.762 1.543-1.608 1.543-.807 0-1.549-.746-1.549-1.558 0-.901.657-1.569 1.554-1.569a1.582 1.582 0 0 1 1.603 1.584zm-.747 0a1.603 1.603 0 0 0-.752-.837.581.581 0 0 0-.642.05c-.21.15-.329.354-.304.623.04.428.657.99 1.086.985.398-.005.757-.463.612-.821zm-1.045 2.276c-.17.18-.334.359-.503.533-.025.025-.095.015-.14.005-.538-.14-1.075-.284-1.613-.423a.218.218 0 0 0-.115-.005l1.096 1.125c-.18.194-.359.384-.523.558L3.59 13.091c.03-.035.05-.06.07-.08.338-.338.682-.672 1.02-1.006.225-.219.493-.333.812-.293.408.05.707.378.717.801.005.15-.02.304-.03.463.463.145.926.299 1.375.443zm-2.063-.826c-.134-.135-.304-.164-.443-.055-.154.12-.294.259-.443.393.189.175.363.339.552.513.08-.074.185-.169.284-.264.04-.04.08-.074.11-.12.104-.158.084-.323-.06-.467zm15.86 6.622H2.554c-.015-.015-.025-.03-.04-.045.04-.02.085-.03.115-.06 1.305-1.289 2.604-2.579 3.904-3.863l4.566-4.521c.264-.264.533-.518.796-.787.085-.085.13-.085.215 0 1.483 1.494 2.977 2.982 4.466 4.471 1.568 1.569 3.132 3.137 4.7 4.7a.78.78 0 0 0 .1.08c-.01.01-.015.02-.025.025z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/less.svg b/assets/lib/simple-icons/icons/less.svg
new file mode 100644
index 00000000..a24061ad
--- /dev/null
+++ b/assets/lib/simple-icons/icons/less.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Less</title><path d="M3.598 7.15a7.961 7.961 0 0 0-1.054.068c-.281.041-.52.124-.717.249a1.19 1.19 0 0 0-.45.497c-.098.208-.14.47-.14.802V10.3c0 .428-.084.732-.253.884-.169.166-.492.25-.984.25v1.16c.478 0 .815.083.984.249.169.166.253.47.253.912v1.548c0 .594.183 1.009.548 1.23.38.207.984.318 1.813.318v-1.078c-.393 0-.646-.07-.773-.194-.126-.124-.183-.373-.183-.746v-1.465c0-.373-.098-.663-.28-.87-.184-.208-.479-.374-.886-.484.393-.125.688-.29.871-.512.183-.22.281-.511.281-.87V9.167c0-.36.057-.608.183-.733.122-.12.412-.195.787-.2v4.547c0 .416.03.764.09 1.044.059.28.164.52.314.724.15.203.356.35.616.443.26.093.589.14.984.14.098 0 .205-.007.32-.02a5.336 5.336 0 0 0 .65-.107l-.036-.98c-.27.038-.492.057-.667.057-.353 0-.59-.092-.713-.276-.122-.183-.183-.534-.183-1.051V7.149H3.598zm16.818-.001v1.092c.393 0 .647.069.773.193.127.125.183.373.183.733v1.465c0 .359.098.65.28.87.184.222.479.387.872.512-.407.11-.702.276-.885.483-.183.208-.281.498-.281.871v1.465c0 .373-.057.622-.183.746-.126.125-.38.194-.773.194v1.078c.83 0 1.434-.11 1.813-.318.365-.221.548-.636.548-1.23v-1.548c0-.442.085-.746.253-.912.169-.166.506-.249.984-.249v-1.16c-.492 0-.815-.084-.984-.25-.168-.151-.253-.456-.253-.884V8.766c0-.332-.042-.594-.14-.801a1.19 1.19 0 0 0-.45-.498 1.828 1.828 0 0 0-.717-.249 7.252 7.252 0 0 0-1.04-.069zm-6.479 1.975c-.675 0-1.209.14-1.588.421-.38.281-.576.689-.576 1.209 0 .422.112.773.351 1.026s.618.478 1.152.688c.043.015.14.057.296.113.45.183.758.31.913.436a.592.592 0 0 1 .239.478c0 .224-.084.393-.253.506-.169.112-.408.168-.717.168-.295 0-.632-.056-.984-.155a3.901 3.901 0 0 1-.885-.337l-.14 1.04c.505.296 1.18.436 2.037.436.717 0 1.265-.155 1.659-.464.393-.309.59-.759.59-1.335 0-.436-.126-.787-.38-1.054-.252-.267-.632-.492-1.166-.689-.382-.15-.84-.277-1.209-.506a.465.465 0 0 1-.224-.421c0-.183.084-.324.239-.422.154-.098.365-.14.646-.14.506 0 1.026.126 1.574.379l.365-.956c-.562-.28-1.208-.421-1.939-.421zm4.512 0c-.675 0-1.21.14-1.589.421-.38.281-.576.689-.576 1.209 0 .422.112.773.351 1.026.24.253.619.478 1.153.688.042.015.14.057.295.113.45.183.759.31.914.436a.592.592 0 0 1 .238.478c0 .224-.084.393-.253.506-.168.112-.407.168-.716.168a3.72 3.72 0 0 1-.984-.155 3.904 3.904 0 0 1-.886-.337l-.14 1.04c.506.296 1.18.436 2.038.436.702 0 1.265-.155 1.686-.464.394-.309.59-.759.59-1.335 0-.436-.126-.787-.379-1.054s-.632-.492-1.166-.689c-.392-.153-.842-.277-1.209-.506a.465.465 0 0 1-.225-.421c0-.183.085-.324.24-.422.154-.098.364-.14.646-.14.506 0 1.026.126 1.574.379l.337-.956c-.562-.28-1.209-.421-1.94-.421zm-9.46.014c-.842 0-1.503.267-1.995.815-.492.548-.73 1.279-.73 2.192 0 .956.252 1.687.772 2.22.52.535 1.237.802 2.165.802.8 0 1.49-.183 2.08-.52l-.197-.984a3.66 3.66 0 0 1-1.813.492c-.492 0-.886-.155-1.167-.45-.28-.295-.435-.716-.45-1.25h3.852v-.591c0-.829-.225-1.49-.661-1.982-.45-.491-1.054-.744-1.855-.744zm-.013.983c.38 0 .674.127.885.38.211.253.323.618.323 1.082H7.67c.042-.492.182-.857.407-1.096.253-.239.548-.366.9-.366Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/letsencrypt.svg b/assets/lib/simple-icons/icons/letsencrypt.svg
index f9d4b3d9..6432a904 100644
--- a/assets/lib/simple-icons/icons/letsencrypt.svg
+++ b/assets/lib/simple-icons/icons/letsencrypt.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Let&apos;s Encrypt icon</title><path d="M18.197 24H5.804a.965.965 0 0 1-.962-.962V13.87c0-.529.433-.962.962-.962h1.164v-1.482c0-2.775 2.258-5.032 5.032-5.032s5.032 2.258 5.032 5.032v1.482h1.164c.529 0 .962.433.962.962v9.168a.965.965 0 0 1-.962.962zm-5.569-5.072A1.274 1.274 0 0 0 12 16.544a1.275 1.275 0 0 0-.628 2.384v1.242a.628.628 0 1 0 1.256 0v-1.242zm-2.774-6.02h4.293v-1.482c0-1.183-.963-2.146-2.146-2.146s-2.146.963-2.146 2.146v1.482zM4.547 11.542h-2.99a.878.878 0 1 1 0-1.756h2.99a.878.878 0 1 1 0 1.756zM6.654 6.838a.87.87 0 0 1-.557-.2L3.732 4.693a.878.878 0 1 1 1.116-1.357l2.365 1.945a.878.878 0 0 1-.559 1.556zM12 4.77a.878.878 0 0 1-.878-.878V.878a.878.878 0 1 1 1.756 0v3.014A.878.878 0 0 1 12 4.77zM17.346 6.838a.877.877 0 0 1-.559-1.556l2.365-1.945a.878.878 0 0 1 1.116 1.357l-2.365 1.945a.876.876 0 0 1-.557.2zM22.443 11.542h-3.019a.878.878 0 1 1 0-1.756h3.019a.878.878 0 1 1 0 1.756z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Let's Encrypt</title><path d="M11.9914 0a.8829.8829 0 00-.8718.817v3.0209A.8829.8829 0 0012 4.7207a.8829.8829 0 00.8803-.8803V.817a.8829.8829 0 00-.889-.817zm7.7048 3.1089a.8804.8804 0 00-.5214.1742l-2.374 1.9482a.8804.8804 0 00.5592 1.5622.8794.8794 0 00.5592-.2001l2.3714-1.9506a.8804.8804 0 00-.5944-1.534zm-15.3763.0133a.8829.8829 0 00-.611 1.5206l2.37 1.9506a.876.876 0 00.5606.2001v-.002a.8804.8804 0 00.5597-1.5602L4.8277 3.2831a.8829.8829 0 00-.5078-.161zm7.6598 3.2275a5.0456 5.0456 0 00-5.0262 5.0455v1.4876H5.787a.9672.9672 0 00-.9647.9643v9.1887a.9672.9672 0 00.9647.9643H18.213a.9672.9672 0 00.9643-.9643v-9.1907a.9672.9672 0 00-.9643-.9623h-1.1684v-1.4876a5.0456 5.0456 0 00-5.0649-5.0455zm.0127 2.8933a2.1522 2.1522 0 012.1593 2.1522v1.4876H9.8473v-1.4876a2.1522 2.1522 0 012.145-2.1522zm7.3812.5033a.8829.8829 0 10.0705 1.7632h3.0267a.8829.8829 0 000-1.7609H19.444a.8829.8829 0 00-.0705-.0023zm-17.8444.0023a.8829.8829 0 000 1.7609h2.9983a.8829.8829 0 000-1.7609zm10.4596 6.7746a1.2792 1.2792 0 01.641 2.3926v1.2453a.6298.6298 0 01-1.2595 0v-1.2453a1.2792 1.2792 0 01.6185-2.3926z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/letterboxd.svg b/assets/lib/simple-icons/icons/letterboxd.svg
index 539e1e74..760d5041 100644
--- a/assets/lib/simple-icons/icons/letterboxd.svg
+++ b/assets/lib/simple-icons/icons/letterboxd.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Letterboxd icon</title><path d="M8.29 16.752V7.2H6.546V4.8h6.328v2.4h-1.746v9.574h3.925v-2.618h2.839V19.2H6.545v-2.448h1.746zM0 12c0 6.628 5.372 12 12 12s12-5.372 12-12S18.628 0 12 0 0 5.372 0 12z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Letterboxd</title><path d="M8.29 16.752V7.2H6.546V4.8h6.328v2.4h-1.746v9.574h3.925v-2.618h2.839V19.2H6.545v-2.448h1.746zM0 12c0 6.628 5.372 12 12 12s12-5.372 12-12S18.628 0 12 0 0 5.372 0 12z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/levelsdotfyi.svg b/assets/lib/simple-icons/icons/levelsdotfyi.svg
new file mode 100644
index 00000000..d5759a9c
--- /dev/null
+++ b/assets/lib/simple-icons/icons/levelsdotfyi.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>levels.fyi</title><path d="M2.494 18.913h3.52v-3.52c0-.43.35-.78.781-.78h3.52v-3.52c0-.432.35-.783.781-.783h3.52V6.791c0-.432.35-.782.782-.782h3.519V2.49c0-.432.35-.782.782-.782h3.52c.43 0 .781.35.781.782v20.724c0 .432-.35.782-.782.782H2.494a.782.782 0 0 1-.782-.782v-3.52c0-.43.35-.78.782-.78ZM.172 15.928a.587.587 0 0 1 0-.83L15.102.168a.587.587 0 0 1 .83.83l-14.93 14.93c-.23.23-.6.23-.83 0Z"/></svg>
diff --git a/assets/lib/simple-icons/icons/lg.svg b/assets/lib/simple-icons/icons/lg.svg
index 3a2eeafe..ea85c175 100644
--- a/assets/lib/simple-icons/icons/lg.svg
+++ b/assets/lib/simple-icons/icons/lg.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>LG icon</title><path d="M5.287 6.714a5.286 5.286 0 1 0 0 10.572 5.287 5.287 0 0 0 0-10.572zm0 .86c.05 0 .156 0 .21.002v.413a14.621 14.621 0 0 0-.21-.003 3.986 3.986 0 0 0-2.836 1.175 3.982 3.982 0 0 0-1.175 2.836c0 1.072.417 2.08 1.175 2.836a3.986 3.986 0 0 0 2.836 1.175 4.019 4.019 0 0 0 4.003-3.741v-.06H6.552v-.41h2.981l.177-.001v.201a4.394 4.394 0 0 1-1.294 3.128 4.4 4.4 0 0 1-3.13 1.296c-1.18 0-2.291-.46-3.13-1.296a4.394 4.394 0 0 1-1.293-3.128 4.43 4.43 0 0 1 4.424-4.425zm16.062.878c-2.21 0-3.372 1.207-3.372 3.508 0 2.29 1.05 3.53 3.361 3.53 1.06 0 2.098-.27 2.662-.665v-3.316h-2.74v1.274h1.285v1.195c-.237.09-.699.181-1.139.181-1.42 0-1.895-.722-1.895-2.188 0-1.398.451-2.222 1.872-2.222.79 0 1.241.248 1.613.722l.982-.902c-.598-.857-1.647-1.117-2.629-1.117zm-8.413.102v6.834h4.85v-1.33h-3.27V8.553zM3.599 9.677a.635.635 0 1 1 0 1.27.635.635 0 0 1 0-1.27zm1.478.002h.42v4.22h1.052v.414H5.077z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>LG</title><path d="M5.286 6.714a5.286 5.286 0 100 10.572 5.287 5.287 0 000-10.572zm0 .86c.05 0 .156 0 .21.002v.413a14.622 14.621 0 00-.21-.003A3.986 3.986 0 002.45 9.161a3.982 3.982 0 00-1.175 2.836c0 1.072.417 2.08 1.175 2.836a3.986 3.986 0 002.836 1.175 4.02 4.019 0 004.003-3.741v-.06H6.551v-.41h2.981l.177-.001v.201a4.394 4.394 0 01-1.294 3.128 4.4 4.4 0 01-3.13 1.296c-1.18 0-2.29-.46-3.13-1.296a4.394 4.394 0 01-1.293-3.128 4.43 4.43 0 014.424-4.425zm16.063.878c-2.21 0-3.372 1.207-3.372 3.508 0 2.29 1.05 3.53 3.36 3.53 1.06 0 2.099-.27 2.663-.665v-3.316h-2.74v1.274h1.285v1.195c-.237.09-.7.181-1.14.181-1.42 0-1.894-.722-1.894-2.188 0-1.398.45-2.222 1.872-2.222.79 0 1.24.248 1.613.722l.982-.902c-.598-.857-1.647-1.117-2.63-1.117zm-8.413.102v6.834h4.85v-1.33h-3.27V8.553zM3.598 9.677a.635.635 0 110 1.27.635.635 0 010-1.27zm1.478.002h.42v4.22h1.052v.414H5.076z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/lgtm.svg b/assets/lib/simple-icons/icons/lgtm.svg
index f1247f67..e4121ec9 100644
--- a/assets/lib/simple-icons/icons/lgtm.svg
+++ b/assets/lib/simple-icons/icons/lgtm.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>LGTM icon</title><path d="M12.008 4.866c-2.914 0-5.377.679-6.995 2.11-.05-.088-.085-.163-.141-.253-.17-.273-.328-.583-.828-.89a2.699 2.699 0 0 0-1.014-.387 2.14 2.14 0 0 0-.47-.001l.099-.013c-.91 0-1.442.546-1.788 1.016-.344.47-.566.999-.71 1.577-.285 1.155-.289 2.651.81 3.767.575.588 1.251.863 1.863 1.027.118.032.223.04.336.063.399 1.892 1.58 3.492 3.158 4.381v.001h.002c.929.522 1.81.761 2.472 1.014.924.357 1.9.751 3.036.85l.06.006h.15c1.306 0 2.296-.527 3.152-.855.655-.25 1.54-.482 2.477-1.008a6.156 6.156 0 0 0 1.196-.88 6.759 6.759 0 0 0 1.967-3.45 3.913 3.913 0 0 0 2.19-1.15c1.098-1.115 1.094-2.611.809-3.766-.144-.578-.366-1.106-.71-1.577-.345-.47-.879-1.016-1.788-1.016l.1.013a2.14 2.14 0 0 0-.472.002 2.695 2.695 0 0 0-1.01.385c-.499.307-.658.616-.827.888-.055.089-.09.163-.139.249-1.617-1.426-4.076-2.103-6.985-2.103zm.023 1.37c3.557 0 6.013 1.065 7.057 2.97.63-.243 1.093-1.89 1.612-2.209.42-.26.665-.195.665-.195.95 0 1.93 2.797.712 4.032-.644.657-1.83.842-2.422.795-.045 1.906-1.155 3.626-2.624 4.45-.748.42-1.552.64-2.296.924-.921.352-1.786.763-2.662.763h-.092c-.872-.076-1.74-.407-2.662-.763-.744-.285-1.548-.51-2.296-.93-1.46-.824-2.571-2.54-2.616-4.445-.587.05-1.788-.132-2.436-.794-1.217-1.235-.238-4.032.712-4.032 0 0 .246-.064.666.195.521.321.987 1.984 1.62 2.214C6.013 7.3 8.47 6.236 12.032 6.236zm-3.876 2.33a3.053 3.053 0 1 0 0 6.105 3.053 3.053 0 0 0 0-6.105zm7.751 0a3.052 3.052 0 1 0 0 6.105 3.052 3.052 0 0 0 0-6.105zM8.591 10.28a1.357 1.357 0 0 1 0 2.713 1.356 1.356 0 0 1-1.313-1.694.57.57 0 0 0 1.098-.216.57.57 0 0 0-.547-.57 1.35 1.35 0 0 1 .762-.233zm6.888 0a1.357 1.357 0 0 1 0 2.713 1.356 1.356 0 0 1-1.314-1.694.57.57 0 1 0 .552-.785 1.35 1.35 0 0 1 .762-.234zM11.52 14.93c-.239.02-.377.146-.377.476 0 .21.138.365.378.365a.143.143 0 0 0 .033-.282c-.022-.005-.13-.044-.13-.136 0-.093 0-.125.183-.15.078-.012.116-.105.092-.18-.024-.075-.094-.1-.18-.093zm1.023 0c-.085-.006-.156.018-.18.093-.024.075.015.168.093.18.182.025.182.057.182.15 0 .092-.107.131-.13.136a.143.143 0 0 0 .033.282c.24 0 .379-.155.379-.365 0-.33-.139-.456-.377-.476z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>LGTM</title><path d="M12.008 4.866c-2.914 0-5.377.679-6.995 2.11-.05-.088-.085-.163-.141-.253-.17-.273-.328-.583-.828-.89a2.699 2.699 0 0 0-1.014-.387 2.14 2.14 0 0 0-.47-.001l.099-.013c-.91 0-1.442.546-1.788 1.016-.344.47-.566.999-.71 1.577-.285 1.155-.289 2.651.81 3.767.575.588 1.251.863 1.863 1.027.118.032.223.04.336.063.399 1.892 1.58 3.492 3.158 4.381v.001h.002c.929.522 1.81.761 2.472 1.014.924.357 1.9.751 3.036.85l.06.006h.15c1.306 0 2.296-.527 3.152-.855.655-.25 1.54-.482 2.477-1.008a6.156 6.156 0 0 0 1.196-.88 6.759 6.759 0 0 0 1.967-3.45 3.913 3.913 0 0 0 2.19-1.15c1.098-1.115 1.094-2.611.809-3.766-.144-.578-.366-1.106-.71-1.577-.345-.47-.879-1.016-1.788-1.016l.1.013a2.14 2.14 0 0 0-.472.002 2.695 2.695 0 0 0-1.01.385c-.499.307-.658.616-.827.888-.055.089-.09.163-.139.249-1.617-1.426-4.076-2.103-6.985-2.103zm.023 1.37c3.557 0 6.013 1.065 7.057 2.97.63-.243 1.093-1.89 1.612-2.209.42-.26.665-.195.665-.195.95 0 1.93 2.797.712 4.032-.644.657-1.83.842-2.422.795-.045 1.906-1.155 3.626-2.624 4.45-.748.42-1.552.64-2.296.924-.921.352-1.786.763-2.662.763h-.092c-.872-.076-1.74-.407-2.662-.763-.744-.285-1.548-.51-2.296-.93-1.46-.824-2.571-2.54-2.616-4.445-.587.05-1.788-.132-2.436-.794-1.217-1.235-.238-4.032.712-4.032 0 0 .246-.064.666.195.521.321.987 1.984 1.62 2.214C6.013 7.3 8.47 6.236 12.032 6.236zm-3.876 2.33a3.053 3.053 0 1 0 0 6.105 3.053 3.053 0 0 0 0-6.105zm7.751 0a3.052 3.052 0 1 0 0 6.105 3.052 3.052 0 0 0 0-6.105zM8.591 10.28a1.357 1.357 0 0 1 0 2.713 1.356 1.356 0 0 1-1.313-1.694.57.57 0 0 0 1.098-.216.57.57 0 0 0-.547-.57 1.35 1.35 0 0 1 .762-.233zm6.888 0a1.357 1.357 0 0 1 0 2.713 1.356 1.356 0 0 1-1.314-1.694.57.57 0 1 0 .552-.785 1.35 1.35 0 0 1 .762-.234zM11.52 14.93c-.239.02-.377.146-.377.476 0 .21.138.365.378.365a.143.143 0 0 0 .033-.282c-.022-.005-.13-.044-.13-.136 0-.093 0-.125.183-.15.078-.012.116-.105.092-.18-.024-.075-.094-.1-.18-.093zm1.023 0c-.085-.006-.156.018-.18.093-.024.075.015.168.093.18.182.025.182.057.182.15 0 .092-.107.131-.13.136a.143.143 0 0 0 .033.282c.24 0 .379-.155.379-.365 0-.33-.139-.456-.377-.476z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/liberapay.svg b/assets/lib/simple-icons/icons/liberapay.svg
index a6c7cd87..54044754 100644
--- a/assets/lib/simple-icons/icons/liberapay.svg
+++ b/assets/lib/simple-icons/icons/liberapay.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Liberapay icon</title><path d="M2.32 0A2.321 2.321 0 0 0 0 2.32v19.36A2.321 2.321 0 0 0 2.32 24h19.36A2.32 2.32 0 0 0 24 21.68V2.32A2.32 2.32 0 0 0 21.68 0zm9.208 3.98l-2.27 9.405a2.953 2.953 0 0 0-.073.539.853.853 0 0 0 .09.432.7.7 0 0 0 .334.302c.157.077.378.126.661.147l-.49 2.008c-.772 0-1.38-.1-1.82-.3-.441-.203-.757-.477-.947-.826a2.391 2.391 0 0 1-.278-1.2c.005-.452.068-.933.188-1.445l2.074-8.67zm3.9 3.888c.61 0 1.135.092 1.576.277.44.185.802.438 1.085.76.283.32.493.696.629 1.126.136.43.204.89.204 1.379v.001c0 .794-.13 1.52-.392 2.179a5.16 5.16 0 0 1-1.086 1.706 4.84 4.84 0 0 1-1.665 1.118c-.648.267-1.353.4-2.114.4-.37 0-.74-.033-1.11-.098l-.735 2.956H9.403l2.71-11.298c.435-.13.934-.248 1.494-.351a10.045 10.045 0 0 1 1.821-.155zm-.31 2.041a4.67 4.67 0 0 0-.98.098l-1.143 4.752c.185.044.413.065.685.065.425 0 .812-.079 1.16-.237a2.556 2.556 0 0 0 .89-.661c.244-.283.435-.623.571-1.02a4.03 4.03 0 0 0 .204-1.315c0-.468-.104-.865-.31-1.192-.207-.326-.566-.49-1.077-.49z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Liberapay</title><path d="M2.32 0A2.321 2.321 0 0 0 0 2.32v19.36A2.321 2.321 0 0 0 2.32 24h19.36A2.32 2.32 0 0 0 24 21.68V2.32A2.32 2.32 0 0 0 21.68 0zm9.208 3.98l-2.27 9.405a2.953 2.953 0 0 0-.073.539.853.853 0 0 0 .09.432.7.7 0 0 0 .334.302c.157.077.378.126.661.147l-.49 2.008c-.772 0-1.38-.1-1.82-.3-.441-.203-.757-.477-.947-.826a2.391 2.391 0 0 1-.278-1.2c.005-.452.068-.933.188-1.445l2.074-8.67zm3.9 3.888c.61 0 1.135.092 1.576.277.44.185.802.438 1.085.76.283.32.493.696.629 1.126.136.43.204.89.204 1.379v.001c0 .794-.13 1.52-.392 2.179a5.16 5.16 0 0 1-1.086 1.706 4.84 4.84 0 0 1-1.665 1.118c-.648.267-1.353.4-2.114.4-.37 0-.74-.033-1.11-.098l-.735 2.956H9.403l2.71-11.298c.435-.13.934-.248 1.494-.351a10.045 10.045 0 0 1 1.821-.155zm-.31 2.041a4.67 4.67 0 0 0-.98.098l-1.143 4.752c.185.044.413.065.685.065.425 0 .812-.079 1.16-.237a2.556 2.556 0 0 0 .89-.661c.244-.283.435-.623.571-1.02a4.03 4.03 0 0 0 .204-1.315c0-.468-.104-.865-.31-1.192-.207-.326-.566-.49-1.077-.49z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/librariesdotio.svg b/assets/lib/simple-icons/icons/librariesdotio.svg
new file mode 100644
index 00000000..3f09168c
--- /dev/null
+++ b/assets/lib/simple-icons/icons/librariesdotio.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Libraries.io</title><path d="M3.152 23.998c-1.164-.054-1.75.044-2.021-.48-.265-.306-.138-3.465-.185-4.694 1.702-1.365 3.42-2.688 5.145-4.025 0 2.892.147 8.186-.17 8.72-.27.56-1.33.474-2.77.479zm6.468-.62c-.304-.006-.171-6.048-.204-11.204 1.704-1.357 3.42-2.678 5.143-4.01-.028 5.924.123 14.775-.108 15.098-.334.71-1.064.543-2.467.585-1.094-.06-2.058.16-2.364-.469zm8.41.018c-.174-.33-.158-7.898-.104-15.204a500.566 500.566 0 015.12 3.977c-.027 1.216.103 11.184-.165 11.18-.28.47-.641.488-2.44.488-.933-.085-1.852.18-2.411-.441zM.979 15.564C.957 10.754.927 6.047.999 1.1c.028-.633.251-1.003.94-1.041.538-.07 3.012-.04 3.463.05a.867.867 0 01.624.65c.097 2.718.075 6.154.097 10.776-1.717 1.341-3.431 2.678-5.144 4.024zm8.458-6.656c-.048-2.518 0-7.016.03-7.696.077-1.552 1.087-1.115 2.41-1.2 1.977-.018 2.279.097 2.5.455.246.368.204 2.598.204 4.422-1.693 1.323-3.594 2.83-5.144 4.017zm13.583-.013c-1.706-1.338-3.353-2.633-5.064-3.964.015-1.322-.064-2.744.01-3.995.107-.54.257-.836 1.16-.866 1.118-.122 2.726-.09 3.419.142.524.124.52 1.379.485 5.226z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/librarything.svg b/assets/lib/simple-icons/icons/librarything.svg
index 9044a73e..49c1c179 100644
--- a/assets/lib/simple-icons/icons/librarything.svg
+++ b/assets/lib/simple-icons/icons/librarything.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>LibraryThing icon</title><path d="M10.4 4.78v-.43l-.03-.46c0-.13-.05-.33-.14-.6-.09-.26-.13-.49-.13-.69a.4.4 0 0 1 .17-.33l.35-.28a.94.94 0 0 1 .61-.18c.16 0 .41.02.77.07.31 0 .54-.07.7-.2l.37-.26c.17-.14.26-.29.26-.46 0-.29-.16-.52-.48-.7A2.52 2.52 0 0 0 11.63 0l-1.36.1c-.31 0-.9.07-1.77.21-.87.15-1.54.22-2.03.22-.2 0-.54-.04-1.02-.12A7.61 7.61 0 0 0 4.3.3l-.75.24c-.26.08-.38.2-.38.35l.06.3c.14.28.34.5.6.65l.27.14c.13.04.24.06.33.06.11 0 .28 0 .5-.03a1 1 0 0 1 .5.13l.37.33c.18.2.3.4.38.58.08.18.12.35.12.5 0 .12-.02.3-.07.57-.04.26-.06.47-.06.62 0 .2.05.49.15.86.1.37.15.68.15.92-.03.38-.04.75-.04 1.12v1.12c0 .29.03.66.07 1.12.04.46.07.83.07 1.1l-.07 1.37-.03 2.21-.1 1.81c0 .25.04.56.13.96.09.4.13.71.13.95 0 .25-.03.55-.1.93a3.56 3.56 0 0 0-.07 1.32c.03.17.03.3 0 .4a.8.8 0 0 1-.18.37l-.31.38c-.2.24-.43.43-.67.56-.24.13-.59.2-1.03.23-.45.02-.77.11-.97.28-.2.16-.3.29-.3.38 0 .57.53.85 1.6.85l.23-.03 1.92-.2c.32-.02.7-.03 1.12-.03h.4l1.2.03h3.2l.88-.08c.28-.03.53-.05.75-.05.29 0 .69.07 1.2.22.51.14.94.19 1.3.14l.38-.1c.24-.06.46-.1.69-.1l.45.06c.27.03.5.05.68.05.09 0 .24-.03.47-.07.55-.11.94-.32 1.16-.63.16-.22.24-.42.24-.62a5.27 5.27 0 0 1-.1-1.35c.1-.22.23-.44.36-.66.11-.29.2-.68.24-1.17.04-.5.08-.83.11-.99.04-.16.13-.42.29-.76.15-.34.23-.63.23-.87 0-.26-.06-.5-.17-.7-.1-.19-.25-.29-.43-.29-.11 0-.29.1-.53.3-.11.09-.2.25-.29.5-.07.23-.14.4-.18.49-.27.4-.53.78-.8 1.15a5.4 5.4 0 0 0-.33.62c-.23.47-.4.78-.54.96a4.3 4.3 0 0 1-.53.5c-.11.08-.22.2-.32.34s-.24.37-.41.68l-.57.3-.4.1c-.13.01-.31.07-.53.16-.23.08-.4.14-.5.16-.11.02-.26.03-.44.03-.2 0-.5-.03-.9-.1-.4-.06-.72-.1-.96-.1l-.7.04c-.8 0-1.4-.43-1.77-1.29a9.37 9.37 0 0 1-.48-4.67c.05-.36.08-.64.08-.86v-2.3l.03-.76c.03-.31.04-.53.04-.66a3.05 3.05 0 0 0-.17-1.06 1.77 1.77 0 0 1-.13-.56c0-.1.02-.26.06-.46.05-.2.07-.35.07-.46l-.03-.99c-.03-.42-.04-.75-.04-.99 0-.28.05-.63.14-1.05.09-.42.13-.76.13-1.02z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>LibraryThing</title><path d="M8.16 0h7.68c2.66 0 3.508 0 4.708.4 1.4.5 2.552 1.65 3.052 3.05.4 1.2.4 2.05.4 4.71v7.68c0 2.66 0 3.51-.4 4.71a5.04 5.04 0 0 1-3.05 3.05c-1.2.4-2.05.4-4.71.4H8.16c-2.66 0-3.51 0-4.71-.4A5.043 5.043 0 0 1 .4 20.55C0 19.35 0 18.5 0 15.84V8.16C0 5.5 0 4.65.4 3.45A5.04 5.04 0 0 1 3.45.4C4.65 0 5.5 0 8.16 0zm2.834 6.682v-.297l-.023-.321c0-.092-.03-.23-.091-.412a1.552 1.552 0 0 1-.092-.481c0-.092.038-.168.115-.23a5.55 5.55 0 0 0 .24-.194c.1-.084.24-.126.424-.126.107 0 .282.015.527.046.214 0 .374-.046.481-.138.046-.03.13-.091.252-.183s.183-.199.183-.32c0-.2-.11-.36-.332-.482-.221-.122-.5-.183-.836-.183l-.94.069c-.213 0-.618.05-1.214.149-.595.099-1.061.149-1.397.149a5.04 5.04 0 0 1-.7-.08 5.174 5.174 0 0 0-.79-.08c-.168.06-.34.118-.515.171-.176.053-.263.134-.263.24l.045.207c.092.198.23.35.413.458l.183.091c.092.03.168.046.23.046.075 0 .19-.007.343-.023.122 0 .237.03.343.092l.252.229c.123.137.21.271.264.4.053.13.08.249.08.356 0 .076-.015.206-.046.39a2.86 2.86 0 0 0-.046.434c0 .138.035.336.104.596.068.26.103.473.103.641-.016.26-.023.52-.023.78v.778c0 .198.015.458.046.779.03.32.045.572.045.755l-.045.962-.023 1.535-.07 1.26c0 .168.031.39.093.664.06.275.091.496.091.664 0 .168-.023.382-.069.642-.045.26-.068.465-.068.618 0 .076.007.176.023.298a.808.808 0 0 1 0 .275.56.56 0 0 1-.126.263 37.9 37.9 0 0 1-.218.264c-.137.168-.29.297-.458.389-.168.092-.405.145-.71.16-.306.016-.527.08-.665.195-.137.115-.206.202-.206.263 0 .397.367.596 1.1.596l.16-.023a35.207 35.207 0 0 1 1.317-.137c.222-.016.478-.023.768-.023h.275c.275.015.55.023.825.023h2.2c.213-.016.415-.035.606-.058a4.37 4.37 0 0 1 .516-.034c.198 0 .473.05.825.149.35.1.649.133.893.103.015 0 .103-.023.264-.069a1.69 1.69 0 0 1 .47-.068c.014 0 .118.011.308.034.191.023.348.034.47.034.061 0 .168-.015.32-.046.383-.076.65-.221.803-.435a.767.767 0 0 0 .16-.435 3.704 3.704 0 0 1-.069-.435 2.77 2.77 0 0 1 0-.504c.077-.153.16-.305.252-.458.077-.199.13-.47.16-.813.031-.344.058-.573.081-.687a2.79 2.79 0 0 1 .195-.527c.107-.237.16-.44.16-.607a.974.974 0 0 0-.114-.481c-.077-.138-.176-.206-.298-.206-.077 0-.199.068-.367.206-.076.06-.141.175-.195.343a2.778 2.778 0 0 1-.126.344c-.183.275-.366.542-.55.802a3.768 3.768 0 0 0-.229.435c-.152.32-.274.542-.366.664-.03.046-.153.16-.367.344a1.124 1.124 0 0 0-.217.24c-.07.1-.165.256-.287.47l-.39.206-.274.069a1.894 1.894 0 0 0-.367.114c-.152.061-.267.1-.343.115a1.571 1.571 0 0 1-.298.022c-.138 0-.344-.022-.619-.068a4.242 4.242 0 0 0-.664-.069l-.481.023c-.55 0-.955-.298-1.215-.893-.168-.382-.297-.978-.39-1.787a2.327 2.327 0 0 1-.022-.366c0-.123.008-.329.023-.619 0-.076.019-.237.057-.48a4.07 4.07 0 0 0 .057-.596v-1.604c0-.137.008-.313.023-.527.016-.213.023-.366.023-.458a2.14 2.14 0 0 0-.023-.343c0-.092-.03-.222-.091-.39a1.244 1.244 0 0 1-.092-.389c0-.076.015-.183.046-.32.03-.138.046-.245.046-.321 0-.168-.008-.397-.023-.688a13.83 13.83 0 0 1-.023-.687c0-.198.03-.442.092-.733a3.6 3.6 0 0 0 .091-.71z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/libreoffice.svg b/assets/lib/simple-icons/icons/libreoffice.svg
index 2672e573..abeee5c7 100644
--- a/assets/lib/simple-icons/icons/libreoffice.svg
+++ b/assets/lib/simple-icons/icons/libreoffice.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>LibreOffice icon</title><path d="M16.365 0a.597.597 0 00-.555.352.582.582 0 00.128.635l4.985 4.996a.605.605 0 00.635.133.59.59 0 00.363-.53V.577A.605.605 0 0021.335 0zM2.661 0a.59.59 0 00-.582.59v22.82a.59.59 0 00.582.59h18.67a.59.59 0 00.59-.59V8.716a.59.59 0 00-.17-.42L13.674.182a.59.59 0 00-.42-.181zm.59 1.184h9.754l7.733 7.77v13.863H3.251z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>LibreOffice</title><path d="M16.365 0a.597.597 0 00-.555.352.582.582 0 00.128.635l4.985 4.996a.605.605 0 00.635.133.59.59 0 00.363-.53V.577A.605.605 0 0021.335 0zM2.661 0a.59.59 0 00-.582.59v22.82a.59.59 0 00.582.59h18.67a.59.59 0 00.59-.59V8.716a.59.59 0 00-.17-.42L13.674.182a.59.59 0 00-.42-.181zm.59 1.184h9.754l7.733 7.77v13.863H3.251z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/libuv.svg b/assets/lib/simple-icons/icons/libuv.svg
index 7ada0f67..3358be26 100644
--- a/assets/lib/simple-icons/icons/libuv.svg
+++ b/assets/lib/simple-icons/icons/libuv.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>libuv icon</title><path d="M20.534 19.21c-.573.117-1.183.506-1.656.594-1.044.193-1.66.007-1.108-.22.8-.332 3.44-.415 3.716-2.374.276-1.96.083-2.843-.055-3.34a7.179 7.179 0 0 0-.351-.891 3.633 3.633 0 0 0-.134-.523 1.66 1.66 0 0 1-.074-.228s-.034-.241.076-.476c.098-.208.433-.659.456-1.095v-.08a.762.762 0 0 0-.008-.087l-.002-.026a.802.802 0 0 0-.374-.542c-.123-.082-.29-.107-.382-.224.073-.23.306-.313.404-.501.06-.167.011-.343-.081-.503-.178-.2-.528-.372-.842-.49-.393-.147-.792-.264-1.062-.475-.285-.152-.477-.445-.302-.833a.703.703 0 0 0 .064-.3v-.028c-.001-.02-.004-.037-.006-.055a.538.538 0 0 0-.008-.042l-.006-.024-.008-.027c-.072-.243-.453-.31-.59-.323-.307-.027-.506-.111-.67-.163.132.069.264.16.433.228.106.044.26.07.389.112 0 0 .239.048.304.214a.59.59 0 0 1 0 .403l-.01.027c-.024.073-.05.143-.056.215-.022.286.153.434.246.673.167.159.406.324.736.473.298.134.653.215.874.348.127.077.36.263.354.399-.004.104-.195.245-.272.348-.056.074-.083.171-.132.24-.043.069-.099.112-.162.112-.083 0-.271.032-.147.041.124.01.446.161.446.161.435.18.727.514.567.99-.134.399-.442.732-.463 1.17-.023.467.19.85.218 1.22.046.623-.043 1.051-.164 1.52-.056.218-.086.434-.136.647-.213.906-.76 1.299-1.5 1.718-.322.181-.666.516-1.01.622-.056.017-.141-.009-.192 0-.317.057-.602.215-.927.274-.306.057-.628.03-.991.121-.184.066-.42.165-.559.223-.213.097-.422.199-.631.3l-.693.396s-.386.224.042.059c.344-.134 1.527-.722 1.031-.377-.342.172-.527.416-.83.624 0 0-1.016.504-1.169.645-.167.155-.372.069-.507.22a1.19 1.19 0 0 1-.49.332c-.138.046-.294.35-.506.506-.211.156-.671.11-1.076.285a2.373 2.373 0 0 1-.824.177c-.04.004-.08.006-.116.007H9.56a1.553 1.553 0 0 1-.556-.096c-.169-.062-.231-.03-.193-.01.038.02.148.124.148.124-.472 0-.601-.315-.819-.548.1-.014.381.055.238-.028-.283-.135-.827-.145-.838-.47-.008-.255.11-.2.11-.2.197.346.809.38 1.254.375.83-.01 1.393-.466 1.937-.723a9.87 9.87 0 0 0 .382-.246v.004c.171-.112.345-.22.492-.355.256-.236.429-.543.655-.804a.697.697 0 0 1 .146-.153c.064-.06.132-.115.208-.164l.003.006.03-.02-.006-.01c.548-.311 1.058-.655 1.489-1.072l.003-.005c.062-.056.386-.418.542-.593.185-.246.318-.557.395-.87.028-.114.01-.251.054-.374.069-.19.242-.36.355-.548.117-.195.195-.408.273-.622.341-.938.736-1.685 1.473-2.191.355-.244.787-.402 1.037-.772a1.665 1.665 0 0 1-.703.408c-.811.267-1.338.95-1.603 1.385a5.167 5.167 0 0 0-.477 1.22 4.06 4.06 0 0 0-.355-1.395c-.16-.37-.303-.761-.6-.996 0 0-.011.001-.058-.027-.046-.027.767-.048.767-.048.143.006.287.026.434.045a.373.373 0 0 1 .103.006c.447.079.91-.088 1.2-.298.15-.11.412-.197.628-.256.004-.01.025-.02.08-.03 0 0 .33-.104.682-.2a3.27 3.27 0 0 0 .533-.175.779.779 0 0 0 .187-.162c.104-.127.106-.28.192-.498.085-.217.216-.386.218-.573.006-.611-.573-1.098-1.2-.772.617-.16 1.056.142.982.723-.092.716-1.172 1.248-1.829 1.518-.26.107-.565.243-.873.274-.443.045-.846-.05-1.227-.025-.49.032-.815.291-1.228.324-.355.028-.307-.212-.615-.239-.063-.036-.257 0-.45-.01-.532.14-.874-.103-1.309-.299-.314-.141-.648-.27-.982-.299-.838-.07-1.348.046-2.033-.027-.193-.02-.594-.045-.784-.116-.593-.222-1.047-.141-1.69-.15-.469-.007-.903-.032-1.196.02-.08.014-.16.034-.245.05-.628.109-1.583.166-1.555.721.046-.032.033-.118.109-.124-.003.102-.006.204.027.274-.365-.01-.58-.262-.573-.548.012-.487.796-.69 1.337-.822.542-.13 1.105-.284 1.5-.348-.947.139-1.95.228-2.673.572a.778.778 0 0 1-.021-.108c-.058-.263-.183-.666-.27-1.058-.102-.451.055-1.242.055-1.242l.004.004c.065-.402.148-.58.228-.821.172-.513.726-.674 1.114-.723a1.742 1.742 0 0 0-.668.901c-.017.137-.03.264-.039.377.294-.914 1.113-1.256 1.113-1.256l.262-.283-.003.013c.452-.438 1.05-.777 1.809-.798.383-.01.845.09.844.466 0 .212-.167.392-.393.491a.311.311 0 0 0 .183-.019l.235-.263c.078-.192.07-.435-.06-.581.346-.296.884.036.845.428.101-.085.163-.247.094-.375.465-.273.726.39 1.194.235-.044-.133-.27-.106-.338-.217.612-.087 1.15.128 1.764.08.038.033.08.066.124.1-1.149.126-.215.126-.215.126.147-.014.5-.038.638-.014.225.04.37-.014.569-.092.004.009.024.008.036-.014.103-.041.222-.086.373-.127a.98.98 0 0 0 .174-.042l.024-.005.004-.004c.079-.027.153-.06.216-.09.58-.279 1.06-.934 1.554-1.278.819-.569 1.595.134 2.165.59l-.004.006c.143.098.332.218.537.344.537.233 1.245.437 1.623.811.302.299.405.684.535 1.083.122.373.357.702.49 1.12a.163.163 0 0 0 .05-.092c-.004-.036-.01-.073 0-.097l.008.007a1.047 1.047 0 0 0-.043-.249c-.112-.229-.309-.49-.285-.693 0 0 .697.36 1.488.718.273.123.522.326.74.559l.063-.002a.136.136 0 0 0-.004.065c.384.43.657.944.752 1.24a4.416 4.416 0 0 0 .16.412h.001c.014.025.023.05.032.074.115.247.227.448.258.503.1.124.181.285.268.42a11.375 11.375 0 0 1-2.465 8.17c-.09.011-.214.032-.378.066zm-.718 1.12c-.549.18-1.11.516-1.467.55-1.076.102-1.27-.376-.41-.455.325-.03.805-.067 1.188-.248.564-.269 1.142-.529 1.528-.722-.264.306-.544.598-.839.875zm-11.735.052c-.092.03-.092-.015-.092-.015s-.165-.236-.19-.456c-.026-.218.03-.412.084-.44.055-.03.067.097.112.256.045.16.268.49.268.49.032.067-.09.134-.182.165zm.575.1c-.105.036-.105-.016-.105-.016s-.189-.269-.217-.519c-.03-.247.036-.468.099-.5.063-.035.076.11.127.29.051.183.307.558.307.558.036.077-.105.153-.211.188zm.194-.697c-.036-.313.048-.593.129-.636.08-.043.098.14.162.37.065.231.39.706.39.706.046.098-.134.194-.27.238-.135.044-.134-.02-.134-.02s-.24-.34-.277-.658zm4.669-3.587c.056-.05.116.056.226.176.11.122.5.313.5.313.063.046-.062.162-.164.232-.1.07-.117.03-.117.03s-.287-.136-.396-.321c-.108-.183-.106-.379-.05-.43zm-.924.492c.069-.065.143.073.281.229.14.16.631.414.631.414.08.06-.076.21-.203.3-.127.091-.148.038-.148.038s-.359-.182-.495-.423c-.136-.237-.136-.493-.066-.558zm-.825 1.11c-.122-.256-.111-.52-.04-.584.07-.064.138.083.266.255.131.175.602.467.602.467.075.067-.084.215-.212.301-.128.087-.147.03-.147.03s-.344-.21-.469-.47zm-.754.63c-.102-.269-.075-.54-.003-.6.073-.06.128.097.24.28.115.189.55.522.55.522.069.075-.094.214-.224.292-.129.078-.142.018-.142.018s-.318-.24-.421-.512zm-1.017 1.654c-.136.041-.134-.021-.134-.021s-.23-.331-.257-.637c-.026-.304.066-.574.148-.614.082-.041.094.136.15.358.059.225.37.686.37.686.043.094-.14.186-.277.228zm.275-1.059c-.066-.304-.002-.59.08-.642.082-.054.116.124.205.34.089.218.48.646.48.646.058.09-.125.21-.267.273-.14.062-.145-.004-.145-.004s-.286-.305-.353-.613zm3.688-7.155s.08.013.043.126c-.035.112-.042.46.066.61.11.15-.075.093-.219-.059-.144-.15-.246-.43-.215-.619 0 0-.008-.08.325-.058zm-.51.921c.176.195-.092.143-.316-.049-.223-.191-.406-.565-.39-.834 0 0-.022-.11.447-.13 0 0 .114.007.079.17-.033.163.006.65.18.843zm-1.19 1.016c1.017.067 1.747-.286 2.264-.647.136-.095.316-.326.546-.174-.098.203-.358.337-.573.448-.377.195-.712.365-1.146.473.732-.112 1.253-.417 1.8-.697.068.14.143.423.192.662h.008s.05.133.034.264c.003.063-.01.116-.055.146a.23.23 0 0 1-.055.052c-.2.13-.794.42-1.27.455-.016 0-.03.003-.046.004l-.035.01-.001-.006c-.432.05-.711.228-.16.137.553-.091 1.736-.292 1.305-.13h.002c-.538.21-1.245.415-1.938.348-.448-.043-.91-.263-1.31-.473-.397-.21-.775-.485-1.2-.573-.323-.067-.59.027-.873.075-.188.032-.45.108-.563-.01-.048-.056-.01-.115-.01-.115.108-.266.421-.423.682-.498.819-.235 1.611.198 2.401.25zm.23-.891c.171.248-.126.148-.353-.105-.227-.253-.38-.71-.323-1.017 0 0-.01-.13.529-.08 0 0 .129.025.066.206-.064.182-.09.747.08.996zm-1.084-.119c.169.283-.146.159-.376-.132-.23-.29-.367-.802-.284-1.136 0 0-.002-.144.58-.064 0 0 .137.035.057.232-.08.196-.145.818.023 1.1zm-1.12-.156c.172.286-.147.164-.38-.13-.234-.292-.376-.812-.293-1.155 0 0-.003-.145.585-.072 0 0 .14.034.059.236-.08.2-.143.836.029 1.121zm-1.027.323c.212.37-.159.213-.441-.166-.283-.379-.472-1.053-.397-1.5 0 0-.011-.19.662-.099 0 0 .161.042.081.306-.08.263-.116 1.089.095 1.46zm-1.09-.275c.211.323-.16.2-.441-.128-.282-.328-.467-.927-.389-1.332 0 0-.01-.171.665-.12 0 0 .162.032.08.272-.082.24-.125.985.085 1.308zm-1.154-.376c.149.277-.14.154-.345-.133-.205-.285-.318-.787-.232-1.115 0 0 .002-.14.54-.058 0 0 .127.035.046.226-.08.193-.158.802-.009 1.08zm-.88-.24c.14.221-.114.125-.303-.102-.189-.227-.308-.628-.248-.892 0 0-.005-.113.46-.053 0 0 .11.026.05.182-.06.154-.1.644.04.865zm-.925.16c.17.248-.126.149-.353-.105-.227-.254-.38-.71-.322-1.017 0 0-.01-.13.528-.08 0 0 .129.025.066.206-.064.182-.09.747.081.996zm-.746-.066c.175.195-.093.143-.316-.049-.224-.191-.407-.565-.39-.834 0 0-.023-.111.446-.13 0 0 .115.007.08.17-.034.163.005.65.18.843zm10.24 10.242c-.516.179-1.435.627-2.173 1.003-.177.008-.354.012-.533.012C5.69 23.423.577 18.31.577 12c0-4.888 3.07-9.057 7.387-10.688.022.02.045.04.07.058.048.039.129.059.17.109.057.067.033.203.058.287.075.259.235.497.501.691.04.029.114.043.148.08.074.085.052.227.108.324.06.102.16.226.284.321.067.052.169.08.232.143.052.05.066.14.103.216.1.204.362.44.488.653a.47.47 0 0 1 .041.088c.053.108.18.338.353.444 0 0 .018.319.336.682-.644-.035-1.265-.399-1.743-.037-.138-.15-.58-.269-.77-.058-.139-.242-.88-.398-1.025-.014-1.053-.472-2.325.202-2.734.878a2.86 2.86 0 0 0-.214.114 1.196 1.196 0 0 0-1.102.187c-.417.301-.853 1.65-.778 2.584.008.1.198.336.266.81.068.469.12.623.12.623-.093.162-.204.234-.219.423-.033.41.318.632.646.842.117.054.249.093.392.099.087.137.42.6.973.6l.04-.001c.211.177.431.225.28.006a.442.442 0 0 1-.034-.059.88.88 0 0 0 .334.13c.002 0 .054.013.097.013.015 0 .06 0 .076-.035s-.016-.072-.027-.084c-.044-.051-.094-.184-.131-.307.04.074.084.144.134.205.262.322.63.475.425.154a.957.957 0 0 1-.122-.392.95.95 0 0 0 .562.33c.235.223.528.315.352.077a.574.574 0 0 1-.091-.225c.142.17.382.389.676.389h.027c.202.136.371.158.22-.038a.692.692 0 0 1-.117-.33c.134.272.39.646.834.767.003 0 .08.022.143.022.049 0 .08-.013.094-.04.022-.038-.006-.083-.016-.098a1.094 1.094 0 0 1-.078-.16c.2.117.346.127.191-.063a.746.746 0 0 1-.14-.379c.108.29.329.695.764.96.003.002.081.04.168.04a.25.25 0 0 0 .112-.026.101.101 0 0 0 .053-.067c.022-.09-.063-.22-.071-.23a1.88 1.88 0 0 1-.134-.35l.003.003c.315.254.723.371.471.118-.153-.154-.212-.417-.217-.632.092.257.315.704.778.792.003 0 .075.014.128.014.029 0 .064-.003.077-.031.005-.012.007-.032-.014-.055a.817.817 0 0 1-.11-.251c.022.016.044.034.067.049.224.147.489.224.523.176.072.06.184.136.337.204.014.032.028.065.04.098 0 0 .07.198.098.305-.363-.094-.984-.276-1.446-.174-.365.08-1.317.606-1.086.976a.17.17 0 0 0 .057.056l.014.005a.962.962 0 0 0 .42.075l.061-.001a2.74 2.74 0 0 0 .442-.07c.254-.084.482-.034.482-.034l-.004.003c.181.02.372.084.569.185.212.107.5.285.573.373.132.16-.07.532-.146.761l-.013.042-.005.019a1.63 1.63 0 0 1-.039.1.42.42 0 0 1-.033-.047c-.072-.121-.11-.228-.148-.179-.038.05-.04.244.032.427a.496.496 0 0 0 .026.055c-.082.15-.182.307-.287.458a1.218 1.218 0 0 1-.204-.234c-.093-.16-.142-.3-.19-.235-.048.064-.05.322.042.565a.86.86 0 0 0 .123.213 5.25 5.25 0 0 1-.307.352 1.736 1.736 0 0 1-.276-.345c-.089-.178-.135-.33-.185-.265-.05.065-.06.338.024.603.034.108.094.207.152.287a16.61 16.61 0 0 1-.345.32 1.455 1.455 0 0 1-.178-.284c-.079-.192-.116-.355-.17-.293-.052.063-.075.347-.005.63.018.07.045.137.075.199-.12.107-.235.209-.34.3a1.261 1.261 0 0 1-.072-.183c-.062-.23-.085-.419-.146-.36-.061.056-.114.361-.069.685.004.032.01.062.017.093l-.03.026c-.069.06-.144.132-.222.21a1.239 1.239 0 0 1-.042-.164c-.04-.24-.045-.43-.108-.385-.062.045-.137.34-.122.67.002.051.008.103.017.155-.091.103-.182.209-.267.313A2.156 2.156 0 0 1 8 19.008c-.045-.25-.055-.45-.119-.401-.058.044-.122.312-.115.623-.064.047-.147.264-.15.51a.935.935 0 0 0 .035.246c-.042.058-.114.099-.164.17-.261.365-.155.8.409.896.173.532.61.79 1.282.797.09 0 .185-.03.273-.025.1.007.182.047.273.05.49.015.746-.14 1.118-.25.278-.08.564-.106.737-.173.265-.104.39-.389.6-.523.079-.05.226-.074.355-.15.11-.064.204-.18.3-.224.085-.038.225-.03.328-.074.17-.075.36-.235.573-.35a16.92 16.92 0 0 1 1.282-.622c.227-.1.467-.333.6-.348.158-.018.341.113.464.1.25.297.338.713.327 1.248.015.001.004.132.004.132s.087 1.148-1.705 1.768zM7.583.205c.188.052.397.159.197.477-.122-.131-.164-.304-.197-.477zm.358.42c.06-.105 0-.159.032-.222.539.07.585.448.352.984-.359-.121-.455-.361-.523-.605C7.86.72 7.904.69 7.94.625zm.588.106c.502.221.58.776.234 1.499a.94.94 0 0 1-.278-.274c-.053-.082-.127-.216-.11-.326.01-.075.07-.177.1-.261.089-.244.123-.463.054-.638zm2.403 2.105c-.009-.026.01-.025.031-.045.75.152.81.884.487 1.435-.152.261-.302.399-.536.326-.194-.06-.22-.217-.314-.324.382-.556.375-.966.332-1.392zm-.866-.55c-.004-.068-.016-.144.011-.21a.74.74 0 0 1 .27.07c.422.223.596 1.018.351 1.486-.105.2-.211.298-.408.241-.317-.09-.409-.45-.537-.599.346-.368.326-.692.313-.988zM9.05 1.287l.02-.01c.825.29 1.299.84.549 1.85-.286-.144-.447-.335-.521-.552-.044-.127-.078-.143-.048-.3.064-.341.085-.717 0-.988zm3.201 4.238l-.052.024c-.1.051-.206.082-.306.1-.62-.134-.807-.84-.807-.84.58-.256.907-.99.7-1.393.006-.015.02-.012.033-.01.263.117.54.311.673.522.256.399.331 1 .119 1.482-.095.022-.156.044-.232.07a.543.543 0 0 0-.04.012l-.07.026-.007.003-.011.004zm1-.501l-.122.104c-.036.068-.145.158-.284.217.11-.335.124-.691.132-.955.228.119.38.282.468.467l-.087.075a.62.62 0 0 0-.163-.194c.032.093.05.188.057.286zM12 .577c5.596 0 10.251 4.023 11.232 9.335a1.862 1.862 0 0 0-.358-.198c-.28-1.248-.882-2.037-2.118-2.487-.414-.151-.807-.326-1.216-.504.024-1.328-1.52-1.3-2.482-1.984-.418-.298-.893-.848-1.371-.95-.926-.197-1.495.448-2.042.899-.134-.146-.335-.29-.627-.42 0 0-.522-.744-.765-.884a.123.123 0 0 1-.034-.026c-.134-.063-.303-.098-.422-.177-.117-.077-.14-.26-.257-.348a1.08 1.08 0 0 0-.225-.122c-.095-.038-.256-.03-.351-.083-.117-.064-.127-.272-.211-.376a.842.842 0 0 0-.408-.273c-.08-.026-.198-.028-.27-.066-.079-.043-.098-.177-.16-.26-.143-.192-.384-.341-.66-.439-.06-.02-.139-.02-.182-.05-.051-.034-.057-.119-.088-.184C9.945.718 10.956.577 12 .577zm11.343 10.068c-.116-.199-.223-.39-.263-.559.08.052.148.11.212.172.02.128.036.257.051.387zM12 0a12 12 0 0 0-3.55.535.27.27 0 0 0-.044-.062c-.103-.1-.226-.177-.482-.112A.647.647 0 0 0 7.52.11l-.006.01c.025.233.058.468.235.629l-.003.028C3.22 2.494 0 6.87 0 12c0 6.628 5.372 12 12 12 6.627 0 12-5.372 12-12S18.627 0 12 0zM5.9 6.312s-.471.107-.6.942c0 0-.022.42.11.328-.111-.506.37-.735.48-.787.155-.069.283-.046.293.086.01.142-.152.205-.2.352.172-.098.558-.326.518-.623-.03-.218-.235-.412-.6-.298zm6.206.512c-.81-.475-2.907-.393-3.4-.43-.484-.038-.726.579-.726.579-.007.13.1-.02.1-.02.317-.57.595-.466.595-.466 1.003.293 1.182 1.767 1.224 2.108.041.34.127.119.127.119.097-.848-.52-1.882-.65-2.015-.13-.131-.007-.206.408-.09 1.247.35 1.364 2.349 1.44 2.59.075.242.122.01.122.01-.17-1.837-.868-2.29-1.054-2.543-.077-.105.554-.12.831.06 1.568 1.013 1.392 2.953 1.534 2.676.143-.283-.395-2.038-1.15-2.636-.152-.119.524.09.773.319 1.18 1.09 1.324 2.271 1.415 2.612.09.34.133.225.133.225.016-1.155-.899-2.617-1.722-3.098zm2.274-.804c.174-.094.379-.707.8-.452.314.189.463.236.463.236s-.219.062-.319.226-.218.29-.566.239c-.366-.055-.433.003-.617.033 0 0 .065-.187.239-.282zm-.673.49c.269.059.516.163.764.324.275.179.573.507.983.474.13-.01.368-.137.463-.2.12-.078.404-.263.328-.547-.034-.126-.184-.147-.273-.25-.124-.143-.12-.283-.218-.448.216.044.34.172.572.2a3.983 3.983 0 0 0-1.31-.797c.04-.022.065-.113.192-.15.115-.033.484.024.246-.025-.24-.067-.389.002-.546.1-.362.226-.656.745-1.037.971-.165.099-.327.076-.464.25.089.177.18.072.3.099zm2.838-.323c-.09.052.057.1.082.125.104.102.336.29.409.448.15.323.103.817-.164.996-.18.12-1.06.449-1.446.448-1.083-.001-1.193-1.191-1.855-1.594.012.114.095.353.19.476.372.486.727 1.487 1.773 1.32.37-.059 1.061-.314 1.339-.488.301-.188.525-.909.218-1.308-.138-.178-.467-.405-.546-.423z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>libuv</title><path d="M20.534 19.21c-.573.117-1.183.506-1.656.594-1.044.193-1.66.007-1.108-.22.8-.332 3.44-.415 3.716-2.374.276-1.96.083-2.843-.055-3.34a7.179 7.179 0 0 0-.351-.891 3.633 3.633 0 0 0-.134-.523 1.66 1.66 0 0 1-.074-.228s-.034-.241.076-.476c.098-.208.433-.659.456-1.095v-.08a.762.762 0 0 0-.008-.087l-.002-.026a.802.802 0 0 0-.374-.542c-.123-.082-.29-.107-.382-.224.073-.23.306-.313.404-.501.06-.167.011-.343-.081-.503-.178-.2-.528-.372-.842-.49-.393-.147-.792-.264-1.062-.475-.285-.152-.477-.445-.302-.833a.703.703 0 0 0 .064-.3v-.028c-.001-.02-.004-.037-.006-.055a.538.538 0 0 0-.008-.042l-.006-.024-.008-.027c-.072-.243-.453-.31-.59-.323-.307-.027-.506-.111-.67-.163.132.069.264.16.433.228.106.044.26.07.389.112 0 0 .239.048.304.214a.59.59 0 0 1 0 .403l-.01.027c-.024.073-.05.143-.056.215-.022.286.153.434.246.673.167.159.406.324.736.473.298.134.653.215.874.348.127.077.36.263.354.399-.004.104-.195.245-.272.348-.056.074-.083.171-.132.24-.043.069-.099.112-.162.112-.083 0-.271.032-.147.041.124.01.446.161.446.161.435.18.727.514.567.99-.134.399-.442.732-.463 1.17-.023.467.19.85.218 1.22.046.623-.043 1.051-.164 1.52-.056.218-.086.434-.136.647-.213.906-.76 1.299-1.5 1.718-.322.181-.666.516-1.01.622-.056.017-.141-.009-.192 0-.317.057-.602.215-.927.274-.306.057-.628.03-.991.121-.184.066-.42.165-.559.223-.213.097-.422.199-.631.3l-.693.396s-.386.224.042.059c.344-.134 1.527-.722 1.031-.377-.342.172-.527.416-.83.624 0 0-1.016.504-1.169.645-.167.155-.372.069-.507.22a1.19 1.19 0 0 1-.49.332c-.138.046-.294.35-.506.506-.211.156-.671.11-1.076.285a2.373 2.373 0 0 1-.824.177c-.04.004-.08.006-.116.007H9.56a1.553 1.553 0 0 1-.556-.096c-.169-.062-.231-.03-.193-.01.038.02.148.124.148.124-.472 0-.601-.315-.819-.548.1-.014.381.055.238-.028-.283-.135-.827-.145-.838-.47-.008-.255.11-.2.11-.2.197.346.809.38 1.254.375.83-.01 1.393-.466 1.937-.723a9.87 9.87 0 0 0 .382-.246v.004c.171-.112.345-.22.492-.355.256-.236.429-.543.655-.804a.697.697 0 0 1 .146-.153c.064-.06.132-.115.208-.164l.003.006.03-.02-.006-.01c.548-.311 1.058-.655 1.489-1.072l.003-.005c.062-.056.386-.418.542-.593.185-.246.318-.557.395-.87.028-.114.01-.251.054-.374.069-.19.242-.36.355-.548.117-.195.195-.408.273-.622.341-.938.736-1.685 1.473-2.191.355-.244.787-.402 1.037-.772a1.665 1.665 0 0 1-.703.408c-.811.267-1.338.95-1.603 1.385a5.167 5.167 0 0 0-.477 1.22 4.06 4.06 0 0 0-.355-1.395c-.16-.37-.303-.761-.6-.996 0 0-.011.001-.058-.027-.046-.027.767-.048.767-.048.143.006.287.026.434.045a.373.373 0 0 1 .103.006c.447.079.91-.088 1.2-.298.15-.11.412-.197.628-.256.004-.01.025-.02.08-.03 0 0 .33-.104.682-.2a3.27 3.27 0 0 0 .533-.175.779.779 0 0 0 .187-.162c.104-.127.106-.28.192-.498.085-.217.216-.386.218-.573.006-.611-.573-1.098-1.2-.772.617-.16 1.056.142.982.723-.092.716-1.172 1.248-1.829 1.518-.26.107-.565.243-.873.274-.443.045-.846-.05-1.227-.025-.49.032-.815.291-1.228.324-.355.028-.307-.212-.615-.239-.063-.036-.257 0-.45-.01-.532.14-.874-.103-1.309-.299-.314-.141-.648-.27-.982-.299-.838-.07-1.348.046-2.033-.027-.193-.02-.594-.045-.784-.116-.593-.222-1.047-.141-1.69-.15-.469-.007-.903-.032-1.196.02-.08.014-.16.034-.245.05-.628.109-1.583.166-1.555.721.046-.032.033-.118.109-.124-.003.102-.006.204.027.274-.365-.01-.58-.262-.573-.548.012-.487.796-.69 1.337-.822.542-.13 1.105-.284 1.5-.348-.947.139-1.95.228-2.673.572a.778.778 0 0 1-.021-.108c-.058-.263-.183-.666-.27-1.058-.102-.451.055-1.242.055-1.242l.004.004c.065-.402.148-.58.228-.821.172-.513.726-.674 1.114-.723a1.742 1.742 0 0 0-.668.901c-.017.137-.03.264-.039.377.294-.914 1.113-1.256 1.113-1.256l.262-.283-.003.013c.452-.438 1.05-.777 1.809-.798.383-.01.845.09.844.466 0 .212-.167.392-.393.491a.311.311 0 0 0 .183-.019l.235-.263c.078-.192.07-.435-.06-.581.346-.296.884.036.845.428.101-.085.163-.247.094-.375.465-.273.726.39 1.194.235-.044-.133-.27-.106-.338-.217.612-.087 1.15.128 1.764.08.038.033.08.066.124.1-1.149.126-.215.126-.215.126.147-.014.5-.038.638-.014.225.04.37-.014.569-.092.004.009.024.008.036-.014.103-.041.222-.086.373-.127a.98.98 0 0 0 .174-.042l.024-.005.004-.004c.079-.027.153-.06.216-.09.58-.279 1.06-.934 1.554-1.278.819-.569 1.595.134 2.165.59l-.004.006c.143.098.332.218.537.344.537.233 1.245.437 1.623.811.302.299.405.684.535 1.083.122.373.357.702.49 1.12a.163.163 0 0 0 .05-.092c-.004-.036-.01-.073 0-.097l.008.007a1.047 1.047 0 0 0-.043-.249c-.112-.229-.309-.49-.285-.693 0 0 .697.36 1.488.718.273.123.522.326.74.559l.063-.002a.136.136 0 0 0-.004.065c.384.43.657.944.752 1.24a4.416 4.416 0 0 0 .16.412h.001c.014.025.023.05.032.074.115.247.227.448.258.503.1.124.181.285.268.42a11.375 11.375 0 0 1-2.465 8.17c-.09.011-.214.032-.378.066zm-.718 1.12c-.549.18-1.11.516-1.467.55-1.076.102-1.27-.376-.41-.455.325-.03.805-.067 1.188-.248.564-.269 1.142-.529 1.528-.722-.264.306-.544.598-.839.875zm-11.735.052c-.092.03-.092-.015-.092-.015s-.165-.236-.19-.456c-.026-.218.03-.412.084-.44.055-.03.067.097.112.256.045.16.268.49.268.49.032.067-.09.134-.182.165zm.575.1c-.105.036-.105-.016-.105-.016s-.189-.269-.217-.519c-.03-.247.036-.468.099-.5.063-.035.076.11.127.29.051.183.307.558.307.558.036.077-.105.153-.211.188zm.194-.697c-.036-.313.048-.593.129-.636.08-.043.098.14.162.37.065.231.39.706.39.706.046.098-.134.194-.27.238-.135.044-.134-.02-.134-.02s-.24-.34-.277-.658zm4.669-3.587c.056-.05.116.056.226.176.11.122.5.313.5.313.063.046-.062.162-.164.232-.1.07-.117.03-.117.03s-.287-.136-.396-.321c-.108-.183-.106-.379-.05-.43zm-.924.492c.069-.065.143.073.281.229.14.16.631.414.631.414.08.06-.076.21-.203.3-.127.091-.148.038-.148.038s-.359-.182-.495-.423c-.136-.237-.136-.493-.066-.558zm-.825 1.11c-.122-.256-.111-.52-.04-.584.07-.064.138.083.266.255.131.175.602.467.602.467.075.067-.084.215-.212.301-.128.087-.147.03-.147.03s-.344-.21-.469-.47zm-.754.63c-.102-.269-.075-.54-.003-.6.073-.06.128.097.24.28.115.189.55.522.55.522.069.075-.094.214-.224.292-.129.078-.142.018-.142.018s-.318-.24-.421-.512zm-1.017 1.654c-.136.041-.134-.021-.134-.021s-.23-.331-.257-.637c-.026-.304.066-.574.148-.614.082-.041.094.136.15.358.059.225.37.686.37.686.043.094-.14.186-.277.228zm.275-1.059c-.066-.304-.002-.59.08-.642.082-.054.116.124.205.34.089.218.48.646.48.646.058.09-.125.21-.267.273-.14.062-.145-.004-.145-.004s-.286-.305-.353-.613zm3.688-7.155s.08.013.043.126c-.035.112-.042.46.066.61.11.15-.075.093-.219-.059-.144-.15-.246-.43-.215-.619 0 0-.008-.08.325-.058zm-.51.921c.176.195-.092.143-.316-.049-.223-.191-.406-.565-.39-.834 0 0-.022-.11.447-.13 0 0 .114.007.079.17-.033.163.006.65.18.843zm-1.19 1.016c1.017.067 1.747-.286 2.264-.647.136-.095.316-.326.546-.174-.098.203-.358.337-.573.448-.377.195-.712.365-1.146.473.732-.112 1.253-.417 1.8-.697.068.14.143.423.192.662h.008s.05.133.034.264c.003.063-.01.116-.055.146a.23.23 0 0 1-.055.052c-.2.13-.794.42-1.27.455-.016 0-.03.003-.046.004l-.035.01-.001-.006c-.432.05-.711.228-.16.137.553-.091 1.736-.292 1.305-.13h.002c-.538.21-1.245.415-1.938.348-.448-.043-.91-.263-1.31-.473-.397-.21-.775-.485-1.2-.573-.323-.067-.59.027-.873.075-.188.032-.45.108-.563-.01-.048-.056-.01-.115-.01-.115.108-.266.421-.423.682-.498.819-.235 1.611.198 2.401.25zm.23-.891c.171.248-.126.148-.353-.105-.227-.253-.38-.71-.323-1.017 0 0-.01-.13.529-.08 0 0 .129.025.066.206-.064.182-.09.747.08.996zm-1.084-.119c.169.283-.146.159-.376-.132-.23-.29-.367-.802-.284-1.136 0 0-.002-.144.58-.064 0 0 .137.035.057.232-.08.196-.145.818.023 1.1zm-1.12-.156c.172.286-.147.164-.38-.13-.234-.292-.376-.812-.293-1.155 0 0-.003-.145.585-.072 0 0 .14.034.059.236-.08.2-.143.836.029 1.121zm-1.027.323c.212.37-.159.213-.441-.166-.283-.379-.472-1.053-.397-1.5 0 0-.011-.19.662-.099 0 0 .161.042.081.306-.08.263-.116 1.089.095 1.46zm-1.09-.275c.211.323-.16.2-.441-.128-.282-.328-.467-.927-.389-1.332 0 0-.01-.171.665-.12 0 0 .162.032.08.272-.082.24-.125.985.085 1.308zm-1.154-.376c.149.277-.14.154-.345-.133-.205-.285-.318-.787-.232-1.115 0 0 .002-.14.54-.058 0 0 .127.035.046.226-.08.193-.158.802-.009 1.08zm-.88-.24c.14.221-.114.125-.303-.102-.189-.227-.308-.628-.248-.892 0 0-.005-.113.46-.053 0 0 .11.026.05.182-.06.154-.1.644.04.865zm-.925.16c.17.248-.126.149-.353-.105-.227-.254-.38-.71-.322-1.017 0 0-.01-.13.528-.08 0 0 .129.025.066.206-.064.182-.09.747.081.996zm-.746-.066c.175.195-.093.143-.316-.049-.224-.191-.407-.565-.39-.834 0 0-.023-.111.446-.13 0 0 .115.007.08.17-.034.163.005.65.18.843zm10.24 10.242c-.516.179-1.435.627-2.173 1.003-.177.008-.354.012-.533.012C5.69 23.423.577 18.31.577 12c0-4.888 3.07-9.057 7.387-10.688.022.02.045.04.07.058.048.039.129.059.17.109.057.067.033.203.058.287.075.259.235.497.501.691.04.029.114.043.148.08.074.085.052.227.108.324.06.102.16.226.284.321.067.052.169.08.232.143.052.05.066.14.103.216.1.204.362.44.488.653a.47.47 0 0 1 .041.088c.053.108.18.338.353.444 0 0 .018.319.336.682-.644-.035-1.265-.399-1.743-.037-.138-.15-.58-.269-.77-.058-.139-.242-.88-.398-1.025-.014-1.053-.472-2.325.202-2.734.878a2.86 2.86 0 0 0-.214.114 1.196 1.196 0 0 0-1.102.187c-.417.301-.853 1.65-.778 2.584.008.1.198.336.266.81.068.469.12.623.12.623-.093.162-.204.234-.219.423-.033.41.318.632.646.842.117.054.249.093.392.099.087.137.42.6.973.6l.04-.001c.211.177.431.225.28.006a.442.442 0 0 1-.034-.059.88.88 0 0 0 .334.13c.002 0 .054.013.097.013.015 0 .06 0 .076-.035s-.016-.072-.027-.084c-.044-.051-.094-.184-.131-.307.04.074.084.144.134.205.262.322.63.475.425.154a.957.957 0 0 1-.122-.392.95.95 0 0 0 .562.33c.235.223.528.315.352.077a.574.574 0 0 1-.091-.225c.142.17.382.389.676.389h.027c.202.136.371.158.22-.038a.692.692 0 0 1-.117-.33c.134.272.39.646.834.767.003 0 .08.022.143.022.049 0 .08-.013.094-.04.022-.038-.006-.083-.016-.098a1.094 1.094 0 0 1-.078-.16c.2.117.346.127.191-.063a.746.746 0 0 1-.14-.379c.108.29.329.695.764.96.003.002.081.04.168.04a.25.25 0 0 0 .112-.026.101.101 0 0 0 .053-.067c.022-.09-.063-.22-.071-.23a1.88 1.88 0 0 1-.134-.35l.003.003c.315.254.723.371.471.118-.153-.154-.212-.417-.217-.632.092.257.315.704.778.792.003 0 .075.014.128.014.029 0 .064-.003.077-.031.005-.012.007-.032-.014-.055a.817.817 0 0 1-.11-.251c.022.016.044.034.067.049.224.147.489.224.523.176.072.06.184.136.337.204.014.032.028.065.04.098 0 0 .07.198.098.305-.363-.094-.984-.276-1.446-.174-.365.08-1.317.606-1.086.976a.17.17 0 0 0 .057.056l.014.005a.962.962 0 0 0 .42.075l.061-.001a2.74 2.74 0 0 0 .442-.07c.254-.084.482-.034.482-.034l-.004.003c.181.02.372.084.569.185.212.107.5.285.573.373.132.16-.07.532-.146.761l-.013.042-.005.019a1.63 1.63 0 0 1-.039.1.42.42 0 0 1-.033-.047c-.072-.121-.11-.228-.148-.179-.038.05-.04.244.032.427a.496.496 0 0 0 .026.055c-.082.15-.182.307-.287.458a1.218 1.218 0 0 1-.204-.234c-.093-.16-.142-.3-.19-.235-.048.064-.05.322.042.565a.86.86 0 0 0 .123.213 5.25 5.25 0 0 1-.307.352 1.736 1.736 0 0 1-.276-.345c-.089-.178-.135-.33-.185-.265-.05.065-.06.338.024.603.034.108.094.207.152.287a16.61 16.61 0 0 1-.345.32 1.455 1.455 0 0 1-.178-.284c-.079-.192-.116-.355-.17-.293-.052.063-.075.347-.005.63.018.07.045.137.075.199-.12.107-.235.209-.34.3a1.261 1.261 0 0 1-.072-.183c-.062-.23-.085-.419-.146-.36-.061.056-.114.361-.069.685.004.032.01.062.017.093l-.03.026c-.069.06-.144.132-.222.21a1.239 1.239 0 0 1-.042-.164c-.04-.24-.045-.43-.108-.385-.062.045-.137.34-.122.67.002.051.008.103.017.155-.091.103-.182.209-.267.313A2.156 2.156 0 0 1 8 19.008c-.045-.25-.055-.45-.119-.401-.058.044-.122.312-.115.623-.064.047-.147.264-.15.51a.935.935 0 0 0 .035.246c-.042.058-.114.099-.164.17-.261.365-.155.8.409.896.173.532.61.79 1.282.797.09 0 .185-.03.273-.025.1.007.182.047.273.05.49.015.746-.14 1.118-.25.278-.08.564-.106.737-.173.265-.104.39-.389.6-.523.079-.05.226-.074.355-.15.11-.064.204-.18.3-.224.085-.038.225-.03.328-.074.17-.075.36-.235.573-.35a16.92 16.92 0 0 1 1.282-.622c.227-.1.467-.333.6-.348.158-.018.341.113.464.1.25.297.338.713.327 1.248.015.001.004.132.004.132s.087 1.148-1.705 1.768zM7.583.205c.188.052.397.159.197.477-.122-.131-.164-.304-.197-.477zm.358.42c.06-.105 0-.159.032-.222.539.07.585.448.352.984-.359-.121-.455-.361-.523-.605C7.86.72 7.904.69 7.94.625zm.588.106c.502.221.58.776.234 1.499a.94.94 0 0 1-.278-.274c-.053-.082-.127-.216-.11-.326.01-.075.07-.177.1-.261.089-.244.123-.463.054-.638zm2.403 2.105c-.009-.026.01-.025.031-.045.75.152.81.884.487 1.435-.152.261-.302.399-.536.326-.194-.06-.22-.217-.314-.324.382-.556.375-.966.332-1.392zm-.866-.55c-.004-.068-.016-.144.011-.21a.74.74 0 0 1 .27.07c.422.223.596 1.018.351 1.486-.105.2-.211.298-.408.241-.317-.09-.409-.45-.537-.599.346-.368.326-.692.313-.988zM9.05 1.287l.02-.01c.825.29 1.299.84.549 1.85-.286-.144-.447-.335-.521-.552-.044-.127-.078-.143-.048-.3.064-.341.085-.717 0-.988zm3.201 4.238l-.052.024c-.1.051-.206.082-.306.1-.62-.134-.807-.84-.807-.84.58-.256.907-.99.7-1.393.006-.015.02-.012.033-.01.263.117.54.311.673.522.256.399.331 1 .119 1.482-.095.022-.156.044-.232.07a.543.543 0 0 0-.04.012l-.07.026-.007.003-.011.004zm1-.501l-.122.104c-.036.068-.145.158-.284.217.11-.335.124-.691.132-.955.228.119.38.282.468.467l-.087.075a.62.62 0 0 0-.163-.194c.032.093.05.188.057.286zM12 .577c5.596 0 10.251 4.023 11.232 9.335a1.862 1.862 0 0 0-.358-.198c-.28-1.248-.882-2.037-2.118-2.487-.414-.151-.807-.326-1.216-.504.024-1.328-1.52-1.3-2.482-1.984-.418-.298-.893-.848-1.371-.95-.926-.197-1.495.448-2.042.899-.134-.146-.335-.29-.627-.42 0 0-.522-.744-.765-.884a.123.123 0 0 1-.034-.026c-.134-.063-.303-.098-.422-.177-.117-.077-.14-.26-.257-.348a1.08 1.08 0 0 0-.225-.122c-.095-.038-.256-.03-.351-.083-.117-.064-.127-.272-.211-.376a.842.842 0 0 0-.408-.273c-.08-.026-.198-.028-.27-.066-.079-.043-.098-.177-.16-.26-.143-.192-.384-.341-.66-.439-.06-.02-.139-.02-.182-.05-.051-.034-.057-.119-.088-.184C9.945.718 10.956.577 12 .577zm11.343 10.068c-.116-.199-.223-.39-.263-.559.08.052.148.11.212.172.02.128.036.257.051.387zM12 0a12 12 0 0 0-3.55.535.27.27 0 0 0-.044-.062c-.103-.1-.226-.177-.482-.112A.647.647 0 0 0 7.52.11l-.006.01c.025.233.058.468.235.629l-.003.028C3.22 2.494 0 6.87 0 12c0 6.628 5.372 12 12 12 6.627 0 12-5.372 12-12S18.627 0 12 0zM5.9 6.312s-.471.107-.6.942c0 0-.022.42.11.328-.111-.506.37-.735.48-.787.155-.069.283-.046.293.086.01.142-.152.205-.2.352.172-.098.558-.326.518-.623-.03-.218-.235-.412-.6-.298zm6.206.512c-.81-.475-2.907-.393-3.4-.43-.484-.038-.726.579-.726.579-.007.13.1-.02.1-.02.317-.57.595-.466.595-.466 1.003.293 1.182 1.767 1.224 2.108.041.34.127.119.127.119.097-.848-.52-1.882-.65-2.015-.13-.131-.007-.206.408-.09 1.247.35 1.364 2.349 1.44 2.59.075.242.122.01.122.01-.17-1.837-.868-2.29-1.054-2.543-.077-.105.554-.12.831.06 1.568 1.013 1.392 2.953 1.534 2.676.143-.283-.395-2.038-1.15-2.636-.152-.119.524.09.773.319 1.18 1.09 1.324 2.271 1.415 2.612.09.34.133.225.133.225.016-1.155-.899-2.617-1.722-3.098zm2.274-.804c.174-.094.379-.707.8-.452.314.189.463.236.463.236s-.219.062-.319.226-.218.29-.566.239c-.366-.055-.433.003-.617.033 0 0 .065-.187.239-.282zm-.673.49c.269.059.516.163.764.324.275.179.573.507.983.474.13-.01.368-.137.463-.2.12-.078.404-.263.328-.547-.034-.126-.184-.147-.273-.25-.124-.143-.12-.283-.218-.448.216.044.34.172.572.2a3.983 3.983 0 0 0-1.31-.797c.04-.022.065-.113.192-.15.115-.033.484.024.246-.025-.24-.067-.389.002-.546.1-.362.226-.656.745-1.037.971-.165.099-.327.076-.464.25.089.177.18.072.3.099zm2.838-.323c-.09.052.057.1.082.125.104.102.336.29.409.448.15.323.103.817-.164.996-.18.12-1.06.449-1.446.448-1.083-.001-1.193-1.191-1.855-1.594.012.114.095.353.19.476.372.486.727 1.487 1.773 1.32.37-.059 1.061-.314 1.339-.488.301-.188.525-.909.218-1.308-.138-.178-.467-.405-.546-.423z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/lichess.svg b/assets/lib/simple-icons/icons/lichess.svg
new file mode 100644
index 00000000..cc25518c
--- /dev/null
+++ b/assets/lib/simple-icons/icons/lichess.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Lichess</title><path d="M10.457 6.161a.237.237 0 0 0-.296.165c-.8 2.785 2.819 5.579 5.214 7.428.653.504 1.216.939 1.591 1.292 1.745 1.642 2.564 2.851 2.733 3.178a.24.24 0 0 0 .275.122c.047-.013 4.726-1.3 3.934-4.574a.257.257 0 0 0-.023-.06L18.204 3.407 18.93.295a.24.24 0 0 0-.262-.293c-1.7.201-3.115.435-4.5 1.425-4.844-.323-8.718.9-11.213 3.539C.334 7.737-.246 11.515.085 14.128c.763 5.655 5.191 8.631 9.081 9.532.993.229 1.974.34 2.923.34 3.344 0 6.297-1.381 7.946-3.85a.24.24 0 0 0-.372-.3c-3.411 3.527-9.002 4.134-13.296 1.444-4.485-2.81-6.202-8.41-3.91-12.749C4.741 4.221 8.801 2.362 13.888 3.31c.056.01.115 0 .165-.029l.335-.197c.926-.546 1.961-1.157 2.873-1.279l-.694 1.993a.243.243 0 0 0 .02.202l6.082 10.192c-.193 2.028-1.706 2.506-2.226 2.611-.287-.645-.814-1.364-2.306-2.803-.422-.407-1.21-.941-2.124-1.56-2.364-1.601-5.937-4.02-5.391-5.984a.239.239 0 0 0-.165-.295z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/lidl.svg b/assets/lib/simple-icons/icons/lidl.svg
new file mode 100644
index 00000000..6d8dbefd
--- /dev/null
+++ b/assets/lib/simple-icons/icons/lidl.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Lidl</title><path d="M0 0v24h24V0zm.209.209h23.582v23.582H.209zm11.789.625C5.83.834.83 5.834.83 12.002c0 6.168 5 11.168 11.168 11.168 6.167 0 11.167-5 11.168-11.166C23.165 5.837 18.166.837 12 .834zm.002.709c5.777 0 10.46 4.682 10.46 10.459v.004c-.004 5.773-4.686 10.452-10.46 10.453-5.777 0-10.46-4.68-10.46-10.457C1.54 6.225 6.222 1.543 12 1.543zM9.229 7.85c-.645 0-1.166.521-1.166 1.166v.004c0 1.044 1.261 1.567 1.999.829.738-.738.215-2-.829-1.999zM2.73 10.059v.71h.551v2.465h-.55v.713h4.644v-.65l.537-.54 1.486 1.491-.55.547.357.36 2.973-2.977v-.713l-.826.83-1.848-1.848-2.129 2.133v-.576l-1.904 1.06V10.77h.549v-.711zm8.905 0v.71h.549v2.465h-.555v.713h3.129c2.325 0 2.355-3.888.008-3.888zm4.963 0v.71h.55v2.465h-.55v.713h4.648v-1.943l-1.906 1.06V10.77h.55v-.711zm-2.43 1.21h.133c.687 0 .685 1.461.023 1.461h-.156v-1.46z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/lifx.svg b/assets/lib/simple-icons/icons/lifx.svg
new file mode 100644
index 00000000..9425239f
--- /dev/null
+++ b/assets/lib/simple-icons/icons/lifx.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>LIFX</title><path d="M3.128 8.2a3.11 3.11 0 0 0-2.212.92A3.148 3.148 0 0 0 0 11.347a3.144 3.144 0 0 0 .916 2.226l.27.266.014-.014a2.729 2.729 0 0 1 1.932-.795 2.739 2.739 0 0 1 1.931.795l.015.014.266-.27a3.157 3.157 0 0 0 .916-2.226c0-.806-.305-1.612-.916-2.226A3.139 3.139 0 0 0 3.128 8.2zm0 .725a2.39 2.39 0 0 1 1.701.707 2.431 2.431 0 0 1 .156 3.252 3.42 3.42 0 0 0-3.72 0 2.45 2.45 0 0 1-.544-1.537c0-.618.234-1.24.706-1.715a2.38 2.38 0 0 1 1.701-.707zm5.316.082v6.025h3.167v-1.487H9.928l.004-4.538zm4.247 0v6.022h1.487V9.007zm2.585 0v6.025h1.487V13.15h1.918v-1.41h-1.918v-1.228h3.047l.863 1.545-1.662 2.975h1.662l.813-1.53.696 1.53h1.779l-1.665-2.975L24 9.007h-1.779l-.735 1.686-.735-1.686zM3.128 13.75c-.518 0-1.04.202-1.438.6l.444.443a1.41 1.41 0 0 1 1.996 0l.443-.443c-.4-.398-.92-.6-1.445-.6zm0 1.324a.707.707 0 0 0-.507.213l.507.511.508-.511a.701.701 0 0 0-.508-.213Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/lighthouse.svg b/assets/lib/simple-icons/icons/lighthouse.svg
index 77bf2e10..392815b7 100644
--- a/assets/lib/simple-icons/icons/lighthouse.svg
+++ b/assets/lib/simple-icons/icons/lighthouse.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Lighthouse icon</title><path d="M12 0l5.5 3.5v5H20v3h-2.25l2 12.5H4.25l2-12.5H4v-3h2.5V3.53zm2.94 13.25l-6.22 2.26L8 20.04l7.5-2.75zM12 3.56L9.5 5.17V8.5h5V5.15Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Lighthouse</title><path d="M12 0l5.5 3.5v5H20v3h-2.25l2 12.5H4.25l2-12.5H4v-3h2.5V3.53zm2.94 13.25l-6.22 2.26L8 20.04l7.5-2.75zM12 3.56L9.5 5.17V8.5h5V5.15Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/line.svg b/assets/lib/simple-icons/icons/line.svg
index a4f374ee..9e4dc98c 100644
--- a/assets/lib/simple-icons/icons/line.svg
+++ b/assets/lib/simple-icons/icons/line.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Line icon</title><path d="M19.365 9.863c.349 0 .63.285.63.631 0 .345-.281.63-.63.63H17.61v1.125h1.755c.349 0 .63.283.63.63 0 .344-.281.629-.63.629h-2.386c-.345 0-.627-.285-.627-.629V8.108c0-.345.282-.63.63-.63h2.386c.346 0 .627.285.627.63 0 .349-.281.63-.63.63H17.61v1.125h1.755zm-3.855 3.016c0 .27-.174.51-.432.596-.064.021-.133.031-.199.031-.211 0-.391-.09-.51-.25l-2.443-3.317v2.94c0 .344-.279.629-.631.629-.346 0-.626-.285-.626-.629V8.108c0-.27.173-.51.43-.595.06-.023.136-.033.194-.033.195 0 .375.104.495.254l2.462 3.33V8.108c0-.345.282-.63.63-.63.345 0 .63.285.63.63v4.771zm-5.741 0c0 .344-.282.629-.631.629-.345 0-.627-.285-.627-.629V8.108c0-.345.282-.63.63-.63.346 0 .628.285.628.63v4.771zm-2.466.629H4.917c-.345 0-.63-.285-.63-.629V8.108c0-.345.285-.63.63-.63.348 0 .63.285.63.63v4.141h1.756c.348 0 .629.283.629.63 0 .344-.282.629-.629.629M24 10.314C24 4.943 18.615.572 12 .572S0 4.943 0 10.314c0 4.811 4.27 8.842 10.035 9.608.391.082.923.258 1.058.59.12.301.079.766.038 1.08l-.164 1.02c-.045.301-.24 1.186 1.049.645 1.291-.539 6.916-4.078 9.436-6.975C23.176 14.393 24 12.458 24 10.314"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>LINE</title><path d="M19.365 9.863c.349 0 .63.285.63.631 0 .345-.281.63-.63.63H17.61v1.125h1.755c.349 0 .63.283.63.63 0 .344-.281.629-.63.629h-2.386c-.345 0-.627-.285-.627-.629V8.108c0-.345.282-.63.63-.63h2.386c.346 0 .627.285.627.63 0 .349-.281.63-.63.63H17.61v1.125h1.755zm-3.855 3.016c0 .27-.174.51-.432.596-.064.021-.133.031-.199.031-.211 0-.391-.09-.51-.25l-2.443-3.317v2.94c0 .344-.279.629-.631.629-.346 0-.626-.285-.626-.629V8.108c0-.27.173-.51.43-.595.06-.023.136-.033.194-.033.195 0 .375.104.495.254l2.462 3.33V8.108c0-.345.282-.63.63-.63.345 0 .63.285.63.63v4.771zm-5.741 0c0 .344-.282.629-.631.629-.345 0-.627-.285-.627-.629V8.108c0-.345.282-.63.63-.63.346 0 .628.285.628.63v4.771zm-2.466.629H4.917c-.345 0-.63-.285-.63-.629V8.108c0-.345.285-.63.63-.63.348 0 .63.285.63.63v4.141h1.756c.348 0 .629.283.629.63 0 .344-.282.629-.629.629M24 10.314C24 4.943 18.615.572 12 .572S0 4.943 0 10.314c0 4.811 4.27 8.842 10.035 9.608.391.082.923.258 1.058.59.12.301.079.766.038 1.08l-.164 1.02c-.045.301-.24 1.186 1.049.645 1.291-.539 6.916-4.078 9.436-6.975C23.176 14.393 24 12.458 24 10.314"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/lineageos.svg b/assets/lib/simple-icons/icons/lineageos.svg
index 141084e9..0e028623 100644
--- a/assets/lib/simple-icons/icons/lineageos.svg
+++ b/assets/lib/simple-icons/icons/lineageos.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>LineageOS icon</title><path d="M21.6453 12.0573a2.404 2.404 0 00-1.803.7993l-.1382-.054a17.801 17.801 0 00-2.8667-.8594 4.8078 4.8078 0 00-9.6156 0h-.1322a17.7469 17.7469 0 00-2.7645.8353l-.1382.0541a2.404 2.404 0 10.5589 1.0697 16.599 16.599 0 012.5782-.7752 4.8078 4.8078 0 009.3572 0 16.557 16.557 0 012.5782.7692 2.404 2.404 0 102.3859-1.839zM2.414 15.6633a1.202 1.202 0 111.202-1.202 1.202 1.202 0 01-1.202 1.202zm9.6156 0a3.6059 3.6059 0 113.6059-3.606 3.6059 3.6059 0 01-3.6059 3.606zm9.6157 0a1.202 1.202 0 111.202-1.202 1.202 1.202 0 01-1.202 1.202zm-7.8127-3.606a1.803 1.803 0 11-1.803-1.8029 1.803 1.803 0 011.803 1.803Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>LineageOS</title><path d="M21.64526 12.05735a2.40391 2.40391 0 0 0-1.80293.7993l-.13823-.0541a17.80096 17.80096 0 0 0-2.86666-.8594 4.80782 4.80782 0 0 0-9.61565 0h-.13221a17.74687 17.74687 0 0 0-2.7645.83537l-.13822.05409a2.40391 2.40391 0 1 0 .5589 1.06974 16.599 16.599 0 0 1 2.5782-.77526 4.80782 4.80782 0 0 0 9.35722 0 16.55693 16.55693 0 0 1 2.5782.76925 2.40391 2.40391 0 1 0 2.38588-1.839zM2.41397 15.6632a1.20196 1.20196 0 1 1 1.20196-1.20195 1.20196 1.20196 0 0 1-1.20196 1.20195zm9.61565 0a3.60587 3.60587 0 1 1 3.60586-3.60586 3.60587 3.60587 0 0 1-3.60586 3.60586zm9.61564 0a1.20196 1.20196 0 1 1 1.20196-1.20195 1.20196 1.20196 0 0 1-1.20196 1.20195zm-7.81271-3.60586a1.80293 1.80293 0 1 1-1.80293-1.80294 1.80293 1.80293 0 0 1 1.80293 1.80294z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/linewebtoon.svg b/assets/lib/simple-icons/icons/linewebtoon.svg
deleted file mode 100644
index 31eadd3a..00000000
--- a/assets/lib/simple-icons/icons/linewebtoon.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 24 24"><title>LINE WEBTOON icon</title><path d="M15.023 15.26c.695 0 1.014-.404 1.014-1.051 0-.551-.308-1.01-.984-1.01-.58 0-.912.404-.912 1.016 0 .543.32 1.045.882 1.045zM10.135 15.447c.764 0 1.113-.443 1.113-1.154 0-.604-.338-1.109-1.082-1.109-.637 0-1.002.445-1.002 1.115 0 .597.352 1.148.971 1.148zM24 10.201l-3.15.029.83-9.686L1.958 3.605l1.686 6.248H0l3.734 11.488 8.713-1.283v3.396l10.113-4.641L24 10.201zm-9.104-3.594c0-.049.039-.092.088-.094l1.879-.125.446-.029c.524-.035 1.634.063 1.634 1.236 0 .83-.619 1.184-.619 1.184s.75.189.707 1.092c0 1.602-1.943 1.389-1.943 1.389l-.225-.006-1.908-.053a.089.089 0 0 1-.086-.09l.027-4.504zm-3.675.243c0-.047.039-.09.088-.092l3.064-.203a.08.08 0 0 1 .087.08v.943c0 .049-.039.09-.087.092l-1.9.08a.094.094 0 0 0-.088.09l-.005.394a.083.083 0 0 0 .086.084l1.646-.066a.082.082 0 0 1 .086.084l-.02 1.012a.089.089 0 0 1-.089.086h-1.63a.089.089 0 0 0-.088.088v.416c0 .047.039.088.088.088l1.87.033a.09.09 0 0 1 .087.09v.951a.084.084 0 0 1-.087.084l-3.063-.123a.09.09 0 0 1-.087-.09l.042-4.121zm-6.01.312l.975-.064a.101.101 0 0 1 .105.08l.458 2.205c.01.047.027.047.039 0l.576-2.281a.132.132 0 0 1 .108-.09l.921-.061a.108.108 0 0 1 .109.078l.564 2.342c.012.047.029.047.041 0l.6-2.424a.131.131 0 0 1 .108-.092l.996-.064c.048-.004.077.031.065.078l-1.09 4.104a.113.113 0 0 1-.109.082l-1.121-.031a.12.12 0 0 1-.109-.086l-.535-1.965c-.012-.047-.033-.047-.045 0l-.522 1.934a.12.12 0 0 1-.11.082l-1.109-.031a.123.123 0 0 1-.108-.088l-.873-3.618c-.011-.047.019-.088.066-.09zm-.288 9.623v-3.561a.089.089 0 0 0-.087-.088l-1.252-.029a.095.095 0 0 1-.091-.09l-.046-1.125a.082.082 0 0 1 .083-.086l4.047.096c.048 0 .087.041.085.088l-.022 1.088a.093.093 0 0 1-.089.088l-1.139.004a.09.09 0 0 0-.087.088v3.447c0 .049-.039.09-.087.092l-1.227.07a.08.08 0 0 1-.088-.082zm2.834-2.379c0-1.918 1.321-2.482 2.416-2.482s2.339.73 2.339 2.316c0 1.9-1.383 2.482-2.416 2.482-1.033.001-2.339-.724-2.339-2.316zm5.139-.115c0-1.746 1.166-2.238 2.162-2.238s2.129.664 2.129 2.107c0 1.729-1.259 2.26-2.198 2.26s-2.093-.68-2.093-2.129zm7.259 1.711a.175.175 0 0 1-.139-.064l-1.187-1.631c-.029-.039-.053-.031-.053.018v1.67c0 .047-.039.09-.086.092l-1.052.061a.082.082 0 0 1-.087-.082l.039-3.842c0-.047.039-.086.088-.084l.881.02a.2.2 0 0 1 .137.074l1.293 1.902c.027.041.051.033.051-.014l.032-1.846a.087.087 0 0 1 .089-.086l.963.029c.047 0 .085.041.083.09l-.138 3.555a.097.097 0 0 1-.091.092l-.823.046zM16.258 8.23l.724-.014s.47.018.47-.434c0-.357-.411-.33-.411-.33l-.782.008a.09.09 0 0 0-.088.088v.598a.083.083 0 0 0 .087.084zM16.229 10.191h.99c.024 0 .35-.051.35-.404 0-.293-.229-.402-.441-.398l-.898.029a.089.089 0 0 0-.087.09v.596a.086.086 0 0 0 .086.087z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/linkedin.svg b/assets/lib/simple-icons/icons/linkedin.svg
index 3dc9f68a..caa6e69d 100644
--- a/assets/lib/simple-icons/icons/linkedin.svg
+++ b/assets/lib/simple-icons/icons/linkedin.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>LinkedIn icon</title><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>LinkedIn</title><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/linkerd.svg b/assets/lib/simple-icons/icons/linkerd.svg
new file mode 100644
index 00000000..4b81684a
--- /dev/null
+++ b/assets/lib/simple-icons/icons/linkerd.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Linkerd</title><path d="M22.329 5.04v9.034l1.666.964V6.004l-1.666-.964ZM0 15.038l1.666-.964V5.04L0 6.004v9.034Zm8.165-.089 7.665 4.424V17.45l-7.176-4.142-.489.282v1.359Zm8.105 6.989-8.105-4.681v1.923l2.164 1.25-2.604 1.503a.263.263 0 0 0 0 .454l1.27.737 3-1.73 3 1.73 1.27-.737c.178-.093.178-.35.005-.449Zm6.059-11.511v8.012c0 .202.218.331.396.227l1.142-.657a.267.267 0 0 0 .133-.228V9.468l-1.671.959Zm-3.271 10.354 1.072-.623a.39.39 0 0 0 .198-.341v-8.233l-1.666.963v8.012c0 .198.218.326.396.222Zm-4.063 2.348 1.537-.885a.265.265 0 0 0 .134-.227v-8.318l-1.671.964v8.466Zm-7.532-.89L9 23.124v-8.461l-1.666-.964v8.313c0 .094.05.183.129.227Zm-3.598-2.076 1.072.623a.265.265 0 0 0 .396-.227v-8.017l-1.666-.963v8.238c0 .144.074.277.198.346ZM.198 18.048l1.072.623a.265.265 0 0 0 .396-.228v-8.016L0 9.468v8.239c0 .138.074.267.198.341ZM23.995 6.004l-1.666-.964-3 1.73-1.996-1.152 2.604-1.502a.264.264 0 0 0 0-.455l-1.077-.623a.403.403 0 0 0-.395 0l-2.803 1.616-1.996-1.151L16.27 2a.263.263 0 0 0 0-.454L15.193.923a.405.405 0 0 0-.396 0l-2.802 1.616L9.193.923a.405.405 0 0 0-.396 0l-1.077.623a.263.263 0 0 0 0 .454l14.6 8.432 1.665-.964-3-1.73 3.01-1.734ZM5.135 3.038l-1.072.623a.264.264 0 0 0 0 .455l14.599 8.431 1.666-.963L5.53 3.038a.403.403 0 0 0-.395 0ZM0 6.004l3 1.729-3 1.735 1.671.959 2.995-1.73 2.001 1.157-3 1.73 1.666.963 3-1.734 1.996 1.156-3 1.73L9 14.663l2.995-1.735 3 1.735 1.666-.964L1.666 5.04 0 6.004Z"/></svg>
diff --git a/assets/lib/simple-icons/icons/linkfire.svg b/assets/lib/simple-icons/icons/linkfire.svg
new file mode 100644
index 00000000..0fcc7aea
--- /dev/null
+++ b/assets/lib/simple-icons/icons/linkfire.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Linkfire</title><path d="M10.08 1.997A10.041 10.042 0 0 0 0 12.006a10.041 10.042 0 0 0 10.08 10 10.037 10.038 0 0 0 7.12-2.933c2.883-2.796 4.509-8.065 5.775-12.861l.038-.152.09-.343a.227.227 0 0 0-.038-.197.234.234 0 0 0-.185-.09h-1.711a.23.23 0 0 1-.215-.14.227.227 0 0 1 .053-.25l2.925-2.646v-.011a.23.23 0 0 0 .053-.246.23.23 0 0 0-.216-.143zm.385 4.645h3.847a1.686 1.686 0 0 1 1.682 1.686v3.844a1.686 1.686 0 0 1-1.682 1.686H10.47a1.686 1.686 0 0 1-1.684-1.686v-.722h1.442v.722a.246.246 0 0 0 .242.242h3.848a.242.242 0 0 0 .242-.242V8.324a.242.242 0 0 0-.242-.242H10.47a.242.242 0 0 0-.242.242v.722H8.784v-.718a1.686 1.686 0 0 1 1.684-1.686zM7.582 9.526h3.84a1.686 1.686 0 0 1 1.684 1.686v.718h-1.44v-.718a.242.242 0 0 0-.24-.242H7.577a.242.242 0 0 0-.242.242v3.847a.242.242 0 0 0 .242.242h3.847a.242.242 0 0 0 .241-.242v-.718h1.448v.718a1.686 1.686 0 0 1-1.686 1.682H7.582a1.686 1.686 0 0 1-1.69-1.682v-3.847a1.686 1.686 0 0 1 1.69-1.686z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/linktree.svg b/assets/lib/simple-icons/icons/linktree.svg
new file mode 100644
index 00000000..335b11a9
--- /dev/null
+++ b/assets/lib/simple-icons/icons/linktree.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Linktree</title><path d="M7.953 15.066c-.08.163-.08.324-.08.486.08.517.528.897 1.052.89h1.294v4.776c0 .486-.404.89-.89.89H6.577a.898.898 0 0 1-.889-.891v-4.774H.992c-.728 0-1.214-.729-.89-1.377l6.96-12.627a1.065 1.065 0 0 1 1.863 0l2.913 5.585-3.885 7.042zm15.945 0l-6.96-12.627a1.065 1.065 0 0 0-1.862 0l-2.995 5.586 3.885 7.04c.081.164.081.326.081.487-.08.517-.529.897-1.052.89h-1.296v4.776c.005.49.4.887.89.89h2.914a.9.9 0 0 0 .892-.89v-4.775h4.612c.73 0 1.214-.729.89-1.377Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/linode.svg b/assets/lib/simple-icons/icons/linode.svg
index 543ce1d6..c59cca18 100644
--- a/assets/lib/simple-icons/icons/linode.svg
+++ b/assets/lib/simple-icons/icons/linode.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Linode icon</title><path d="M22 10.68a.15.15 0 00-.07-.15l-3.26-1.82a.14.14 0 00-.14 0l-2.77 1.69a.17.17 0 00-.07.13v1.45l-1.13-.74a.14.14 0 00-.15 0l-1.62 1-.07-1.64a.19.19 0 00-.07-.12L11 9.39l1.51-.78a.16.16 0 00.08-.14l-.27-6.27a.16.16 0 00-.08-.13L8 0h-.1L2.08 1.81A.16.16 0 002 2l1.27 6.23a.22.22 0 000 .08L5.1 9.69l-1.26.6a.16.16 0 00-.08.17l1 4.7a.18.18 0 000 .07L6 16.37l-.8.49a.15.15 0 00-.06.16l.75 3.64a.11.11 0 000 .07l3 3.22a.14.14 0 00.2 0l3.92-3.12a.16.16 0 00.06-.12L13 18.59l1.32 1.1a.14.14 0 00.18 0l3.14-2.51a.24.24 0 00.06-.11l.09-1.57 1 .67a.14.14 0 00.17 0l2.57-2a.14.14 0 00.05-.1zm-9.62.15l.07 1.57.12 2.78-4.23 2.87-.66-4.53zm-.35-8.42l.25 5.91-5 2.59-.9-6.32zM3.54 8.12L2.33 2.26l3.74 2.32.93 6.2-1.58-1.2zM5 15.05l-.88-4.26 3.28 2.74.6 4.38-1.68-1.62zm1.14 5.51l-.65-3.14 2.89 2.85.47 3.16zm3 3l-.49-3.33 4-2.87.14 3.28zM13 18.2v-1.08a.16.16 0 00-.05-.11l-1.13-.92 1-.7a.14.14 0 00.06-.12v-.26l1.39 1.06v3.21zm4.44-1.2l-2.86 2.28v-3.22l3.07-2.2zm1.29-1.21l-.9-.63.09-1.59a.11.11 0 000-.06.1.1 0 000-.05l-1.93-1.27V10.8l3 1.89zm2.55-1.86L19 15.74l.26-3.06L21.69 11z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Linode</title><path d="M22.006 10.684a.15.15 0 0 0-.07-.15l-3.261-1.821a.14.14 0 0 0-.14 0l-2.771 1.69a.17.17 0 0 0-.07.13v1.451l-1.13-.74a.14.14 0 0 0-.15 0l-1.62 1-.071-1.64a.19.19 0 0 0-.07-.12l-1.65-1.09 1.51-.781a.16.16 0 0 0 .08-.14l-.27-6.272a.16.16 0 0 0-.08-.13L8 0h-.1L2.08 1.81A.16.16 0 0 0 2 2l1.27 6.233a.22.22 0 0 0 0 .08l1.83 1.38-1.26.6a.16.16 0 0 0-.08.17l1 4.702a.18.18 0 0 0 0 .07L6 16.375l-.8.49a.15.15 0 0 0-.06.16l.75 3.642a.11.11 0 0 0 0 .07l3.002 3.221a.14.14 0 0 0 .2 0l3.921-3.121a.16.16 0 0 0 .06-.12l-.07-2.12 1.32 1.1a.14.14 0 0 0 .18 0l3.142-2.511a.24.24 0 0 0 .06-.11l.09-1.57 1 .67a.14.14 0 0 0 .17 0l2.571-2.001a.14.14 0 0 0 .05-.1zm-9.623.15l.07 1.57.12 2.781-4.231 2.871-.66-4.532zm-.35-8.423l.25 5.912-5.002 2.59-.9-6.321zM3.54 8.123L2.33 2.26l3.74 2.32.931 6.203-1.58-1.2zM5 15.055l-.88-4.261 3.281 2.74.6 4.382-1.68-1.62zm1.14 5.512l-.65-3.141 2.892 2.85.47 3.162zm3.002 3l-.49-3.33 4.001-2.871.14 3.28zm3.861-5.36v-1.081a.16.16 0 0 0-.05-.11l-1.13-.92 1-.7a.14.14 0 0 0 .06-.12v-.261l1.39 1.06v3.211zm4.442-1.201l-2.861 2.28v-3.22l3.07-2.201zm1.29-1.21l-.9-.631.09-1.59a.11.11 0 0 0 0-.06.1.1 0 0 0 0-.05l-1.93-1.27v-1.391l3 1.89zm2.55-1.861l-2.28 1.81.26-3.06 2.431-1.681z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/linux.svg b/assets/lib/simple-icons/icons/linux.svg
index 3e1ee6b2..381d3d8a 100644
--- a/assets/lib/simple-icons/icons/linux.svg
+++ b/assets/lib/simple-icons/icons/linux.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Linux icon</title><path d="M12.503 0c-.155 0-.315.008-.479.021-4.227.333-3.106 4.807-3.17 6.298-.077 1.093-.3 1.954-1.051 3.021-.885 1.051-2.127 2.75-2.716 4.521-.278.832-.41 1.684-.287 2.489-.039.034-.076.068-.111.135-.26.268-.449.601-.662.839-.199.199-.485.267-.797.4-.313.136-.658.269-.864.681-.09.188-.136.393-.132.601 0 .199.027.401.055.536.058.399.116.729.039.97-.248.68-.279 1.146-.105 1.485.174.334.535.469.939.601.811.2 1.91.135 2.775.599.926.467 1.866.671 2.616.47.526-.115.97-.463 1.208-.945.587-.003 1.23-.269 2.26-.334.699-.058 1.574.267 2.578.199.025.135.063.199.114.334l.003.003c.391.778 1.113 1.132 1.884 1.071.771-.06 1.592-.536 2.257-1.306.631-.765 1.683-1.084 2.378-1.503.348-.199.629-.469.649-.853.023-.4-.199-.812-.714-1.377v-.097l-.003-.003c-.17-.2-.25-.535-.338-.926-.085-.401-.182-.786-.492-1.046h-.003c-.059-.054-.123-.067-.188-.135-.056-.038-.121-.062-.19-.064.431-1.278.264-2.55-.173-3.694-.533-1.41-1.465-2.638-2.175-3.483-.796-1.005-1.576-1.957-1.561-3.369.027-2.152.237-6.133-3.544-6.139zm.529 3.405h.013c.213 0 .396.062.584.198.191.135.33.332.439.533.105.259.158.459.166.724 0-.02.006-.04.006-.059v.104c-.002-.007-.004-.015-.004-.021l-.004-.024c-.002.243-.053.483-.15.706-.047.125-.119.24-.213.335-.029-.016-.057-.03-.088-.042-.105-.045-.199-.064-.285-.133-.071-.028-.145-.051-.219-.066.049-.059.145-.133.182-.198.053-.128.082-.264.088-.402v-.019c.002-.135-.018-.271-.061-.4-.045-.135-.101-.201-.183-.334-.084-.066-.167-.132-.267-.132h-.016c-.093 0-.176.03-.262.132-.095.094-.166.207-.205.334-.053.127-.084.264-.09.4v.019c.002.089.008.179.02.267-.193-.067-.438-.135-.607-.202-.01-.065-.016-.132-.018-.199v-.02c-.008-.264.043-.526.15-.769.082-.219.232-.406.43-.533.171-.129.379-.199.594-.199zm-2.962.059h.036c.142 0 .27.048.399.135.146.129.264.288.344.465.09.199.141.401.153.667v.004c.007.134.006.201-.002.266v.08c-.03.007-.056.018-.083.024-.152.055-.274.135-.393.2.012-.089.013-.179.003-.267v-.015c-.012-.133-.039-.199-.082-.333-.031-.102-.088-.193-.166-.267-.049-.045-.115-.068-.183-.064h-.021c-.071.006-.13.041-.186.132-.064.077-.105.171-.12.27-.027.108-.035.219-.023.331v.014c.012.135.037.201.081.334.045.134.097.2.165.268.011.009.021.018.034.024-.07.057-.117.07-.176.136-.037.028-.08.06-.131.068-.104-.125-.196-.26-.275-.402-.096-.21-.146-.438-.155-.667-.017-.226.011-.452.08-.668.055-.197.152-.379.283-.535.128-.133.26-.2.418-.2zm1.371 1.706c.331 0 .732.065 1.215.399.293.2.523.269 1.053.468h.003c.255.136.405.266.478.399v-.131c.073.147.078.318.016.47-.123.311-.516.644-1.064.843v.002c-.268.135-.501.333-.775.465-.276.135-.588.292-1.012.267-.152.008-.305-.015-.448-.067-.11-.06-.218-.126-.322-.198-.195-.135-.363-.332-.612-.465v-.005h-.005c-.4-.246-.616-.512-.686-.711-.069-.268-.005-.469.193-.6.224-.135.38-.271.483-.336.104-.074.143-.102.176-.131h.002v-.003c.169-.202.436-.469.839-.601.139-.036.294-.065.466-.065zm2.799 2.143c.359 1.417 1.197 3.475 1.736 4.473.286.534.855 1.659 1.102 3.024.156-.005.329.018.513.064.646-1.671-.546-3.467-1.089-3.966-.221-.201-.232-.335-.123-.335.589.534 1.365 1.572 1.646 2.757.129.535.159 1.104.021 1.67.067.028.135.061.205.067 1.032.534 1.413.938 1.23 1.537v-.043c-.061-.003-.12 0-.181 0h-.015c.151-.467-.182-.825-1.065-1.224-.915-.4-1.646-.336-1.771.465-.007.043-.012.066-.017.135-.068.023-.139.053-.209.064-.43.268-.662.669-.793 1.187-.13.533-.17 1.156-.205 1.869v.003c-.021.334-.171.838-.319 1.351-1.5 1.072-3.58 1.538-5.349.334-.111-.193-.246-.374-.402-.533-.074-.125-.168-.237-.275-.334.182 0 .338-.029.465-.067.145-.067.257-.188.314-.334.108-.267 0-.697-.345-1.163-.345-.467-.931-.995-1.788-1.521-.63-.399-.986-.87-1.15-1.396-.165-.534-.143-1.085-.015-1.645.245-1.07.873-2.11 1.274-2.763.107-.065.037.135-.408.974-.396.751-1.141 2.497-.122 3.854.038-.989.258-1.965.647-2.876.564-1.278 1.743-3.504 1.836-5.268.048.036.217.135.289.202.218.133.38.333.59.465.211.201.477.335.876.335.039.003.075.006.111.006.411 0 .729-.134.996-.268.29-.134.521-.334.74-.4h.005c.467-.135.836-.402 1.045-.7zm2.186 8.958c.037.601.343 1.245.882 1.377.588.134 1.434-.333 1.791-.765l.211-.009c.315-.008.577.01.847.267l.003.003c.208.199.305.531.391.876.085.401.154.78.409 1.066.486.527.645.906.636 1.14l.003-.006v.018l-.003-.012c-.015.262-.185.396-.498.595-.63.401-1.746.712-2.457 1.57-.618.737-1.371 1.139-2.036 1.191-.664.053-1.237-.2-1.574-.898l-.005-.003c-.21-.401-.12-1.025.056-1.69.176-.668.428-1.345.463-1.898.037-.714.076-1.335.195-1.814.12-.465.308-.797.641-.984l.045-.022zm-10.815.049h.01c.053 0 .105.005.157.014.376.055.706.333 1.023.752l.91 1.664.003.003c.243.533.754 1.064 1.189 1.638.434.598.77 1.131.729 1.57v.006c-.057.744-.479 1.148-1.125 1.294-.645.135-1.52.002-2.395-.464-.968-.536-2.118-.469-2.857-.602-.369-.066-.611-.201-.723-.401-.111-.199-.113-.601.123-1.23v-.003l.002-.003c.117-.334.03-.753-.027-1.119-.055-.401-.083-.709.043-.94.16-.334.396-.399.689-.533.295-.135.641-.202.916-.469h.002v-.003c.256-.268.445-.601.668-.838.19-.201.38-.336.663-.336zm7.159-9.074c-.435.201-.945.535-1.488.535-.542 0-.97-.267-1.279-.466-.155-.134-.28-.268-.374-.335-.164-.134-.144-.334-.074-.334.109.016.129.135.199.201.096.066.215.199.361.333.291.2.68.467 1.166.467.485 0 1.053-.267 1.398-.466.195-.135.445-.334.648-.467.156-.137.149-.268.279-.268.129.016.034.134-.147.333-.181.135-.461.335-.69.468v-.001zm-1.082-1.584V5.64c-.006-.019.013-.042.029-.05.074-.043.18-.027.26.004.063 0 .16.067.15.135-.006.049-.085.066-.135.066-.055 0-.092-.043-.141-.068-.052-.018-.146-.008-.163-.065zm-.551 0c-.02.058-.113.049-.166.066-.047.025-.086.068-.139.068-.051 0-.131-.019-.137-.068-.009-.066.088-.133.15-.133.081-.031.184-.047.259-.005.019.009.036.03.03.05v.021h.003z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Linux</title><path d="M12.504 0c-.155 0-.315.008-.48.021-4.226.333-3.105 4.807-3.17 6.298-.076 1.092-.3 1.953-1.05 3.02-.885 1.051-2.127 2.75-2.716 4.521-.278.832-.41 1.684-.287 2.489a.424.424 0 00-.11.135c-.26.268-.45.6-.663.839-.199.199-.485.267-.797.4-.313.136-.658.269-.864.68-.09.189-.136.394-.132.602 0 .199.027.4.055.536.058.399.116.728.04.97-.249.68-.28 1.145-.106 1.484.174.334.535.47.94.601.81.2 1.91.135 2.774.6.926.466 1.866.67 2.616.47.526-.116.97-.464 1.208-.946.587-.003 1.23-.269 2.26-.334.699-.058 1.574.267 2.577.2.025.134.063.198.114.333l.003.003c.391.778 1.113 1.132 1.884 1.071.771-.06 1.592-.536 2.257-1.306.631-.765 1.683-1.084 2.378-1.503.348-.199.629-.469.649-.853.023-.4-.2-.811-.714-1.376v-.097l-.003-.003c-.17-.2-.25-.535-.338-.926-.085-.401-.182-.786-.492-1.046h-.003c-.059-.054-.123-.067-.188-.135a.357.357 0 00-.19-.064c.431-1.278.264-2.55-.173-3.694-.533-1.41-1.465-2.638-2.175-3.483-.796-1.005-1.576-1.957-1.56-3.368.026-2.152.236-6.133-3.544-6.139zm.529 3.405h.013c.213 0 .396.062.584.198.19.135.33.332.438.533.105.259.158.459.166.724 0-.02.006-.04.006-.06v.105a.086.086 0 01-.004-.021l-.004-.024a1.807 1.807 0 01-.15.706.953.953 0 01-.213.335.71.71 0 00-.088-.042c-.104-.045-.198-.064-.284-.133a1.312 1.312 0 00-.22-.066c.05-.06.146-.133.183-.198.053-.128.082-.264.088-.402v-.02a1.21 1.21 0 00-.061-.4c-.045-.134-.101-.2-.183-.333-.084-.066-.167-.132-.267-.132h-.016c-.093 0-.176.03-.262.132a.8.8 0 00-.205.334 1.18 1.18 0 00-.09.4v.019c.002.089.008.179.02.267-.193-.067-.438-.135-.607-.202a1.635 1.635 0 01-.018-.2v-.02a1.772 1.772 0 01.15-.768c.082-.22.232-.406.43-.533a.985.985 0 01.594-.2zm-2.962.059h.036c.142 0 .27.048.399.135.146.129.264.288.344.465.09.199.14.4.153.667v.004c.007.134.006.2-.002.266v.08c-.03.007-.056.018-.083.024-.152.055-.274.135-.393.2.012-.09.013-.18.003-.267v-.015c-.012-.133-.04-.2-.082-.333a.613.613 0 00-.166-.267.248.248 0 00-.183-.064h-.021c-.071.006-.13.04-.186.132a.552.552 0 00-.12.27.944.944 0 00-.023.33v.015c.012.135.037.2.08.334.046.134.098.2.166.268.01.009.02.018.034.024-.07.057-.117.07-.176.136a.304.304 0 01-.131.068 2.62 2.62 0 01-.275-.402 1.772 1.772 0 01-.155-.667 1.759 1.759 0 01.08-.668 1.43 1.43 0 01.283-.535c.128-.133.26-.2.418-.2zm1.37 1.706c.332 0 .733.065 1.216.399.293.2.523.269 1.052.468h.003c.255.136.405.266.478.399v-.131a.571.571 0 01.016.47c-.123.31-.516.643-1.063.842v.002c-.268.135-.501.333-.775.465-.276.135-.588.292-1.012.267a1.139 1.139 0 01-.448-.067 3.566 3.566 0 01-.322-.198c-.195-.135-.363-.332-.612-.465v-.005h-.005c-.4-.246-.616-.512-.686-.71-.07-.268-.005-.47.193-.6.224-.135.38-.271.483-.336.104-.074.143-.102.176-.131h.002v-.003c.169-.202.436-.47.839-.601.139-.036.294-.065.466-.065zm2.8 2.142c.358 1.417 1.196 3.475 1.735 4.473.286.534.855 1.659 1.102 3.024.156-.005.33.018.513.064.646-1.671-.546-3.467-1.089-3.966-.22-.2-.232-.335-.123-.335.59.534 1.365 1.572 1.646 2.757.13.535.16 1.104.021 1.67.067.028.135.06.205.067 1.032.534 1.413.938 1.23 1.537v-.043c-.06-.003-.12 0-.18 0h-.016c.151-.467-.182-.825-1.065-1.224-.915-.4-1.646-.336-1.77.465-.008.043-.013.066-.018.135-.068.023-.139.053-.209.064-.43.268-.662.669-.793 1.187-.13.533-.17 1.156-.205 1.869v.003c-.02.334-.17.838-.319 1.35-1.5 1.072-3.58 1.538-5.348.334a2.645 2.645 0 00-.402-.533 1.45 1.45 0 00-.275-.333c.182 0 .338-.03.465-.067a.615.615 0 00.314-.334c.108-.267 0-.697-.345-1.163-.345-.467-.931-.995-1.788-1.521-.63-.4-.986-.87-1.15-1.396-.165-.534-.143-1.085-.015-1.645.245-1.07.873-2.11 1.274-2.763.107-.065.037.135-.408.974-.396.751-1.14 2.497-.122 3.854a8.123 8.123 0 01.647-2.876c.564-1.278 1.743-3.504 1.836-5.268.048.036.217.135.289.202.218.133.38.333.59.465.21.201.477.335.876.335.039.003.075.006.11.006.412 0 .73-.134.997-.268.29-.134.52-.334.74-.4h.005c.467-.135.835-.402 1.044-.7zm2.185 8.958c.037.6.343 1.245.882 1.377.588.134 1.434-.333 1.791-.765l.211-.01c.315-.007.577.01.847.268l.003.003c.208.199.305.53.391.876.085.4.154.78.409 1.066.486.527.645.906.636 1.14l.003-.007v.018l-.003-.012c-.015.262-.185.396-.498.595-.63.401-1.746.712-2.457 1.57-.618.737-1.37 1.14-2.036 1.191-.664.053-1.237-.2-1.574-.898l-.005-.003c-.21-.4-.12-1.025.056-1.69.176-.668.428-1.344.463-1.897.037-.714.076-1.335.195-1.814.12-.465.308-.797.641-.984l.045-.022zm-10.814.049h.01c.053 0 .105.005.157.014.376.055.706.333 1.023.752l.91 1.664.003.003c.243.533.754 1.064 1.189 1.637.434.598.77 1.131.729 1.57v.006c-.057.744-.48 1.148-1.125 1.294-.645.135-1.52.002-2.395-.464-.968-.536-2.118-.469-2.857-.602-.369-.066-.61-.2-.723-.4-.11-.2-.113-.602.123-1.23v-.004l.002-.003c.117-.334.03-.752-.027-1.118-.055-.401-.083-.71.043-.94.16-.334.396-.4.69-.533.294-.135.64-.202.915-.47h.002v-.002c.256-.268.445-.601.668-.838.19-.201.38-.336.663-.336zm7.159-9.074c-.435.201-.945.535-1.488.535-.542 0-.97-.267-1.28-.466-.154-.134-.28-.268-.373-.335-.164-.134-.144-.333-.074-.333.109.016.129.134.199.2.096.066.215.2.36.333.292.2.68.467 1.167.467.485 0 1.053-.267 1.398-.466.195-.135.445-.334.648-.467.156-.136.149-.267.279-.267.128.016.034.134-.147.332a8.097 8.097 0 01-.69.468zm-1.082-1.583V5.64c-.006-.02.013-.042.029-.05.074-.043.18-.027.26.004.063 0 .16.067.15.135-.006.049-.085.066-.135.066-.055 0-.092-.043-.141-.068-.052-.018-.146-.008-.163-.065zm-.551 0c-.02.058-.113.049-.166.066-.047.025-.086.068-.14.068-.05 0-.13-.02-.136-.068-.01-.066.088-.133.15-.133.08-.031.184-.047.259-.005.019.009.036.03.03.05v.02h.003z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/linuxcontainers.svg b/assets/lib/simple-icons/icons/linuxcontainers.svg
new file mode 100644
index 00000000..31c07c08
--- /dev/null
+++ b/assets/lib/simple-icons/icons/linuxcontainers.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Linux Containers</title><path d="M10.15 8.98l1.647.951-5.756 3.345.005-1.911L10.15 8.98zm1.723-1.001l-1.553.902 1.548.893.005-1.795zM6.028 5.33L6.025 6.4l.543.316 3.602 2.079 1.632-.948-2.19-1.279-3.231-1.887-.351-.203-.002.852zm.072-.983l.359.209 6.321 3.65 5.258 3.037 5.858-3.405L11.956.943 6.1 4.347zm6.002 12.602l-.005 1.924 5.858-3.404.005-1.924-5.858 3.404zm-.077-9.009l-.005 1.922 5.94 3.428.005-1.92-5.94-3.43zm-10.13.945l4.075 2.352 4.031-2.342-4.075-2.353-4.031 2.343zM24 7.982l-5.858 3.404-.015 3.982 5.858-3.404L24 7.982zm-12.048 10.04l.003-1.073L7.6 14.436l-1.565-.903v.001l-.939-.542L.015 10.06.01 11.979l11.94 6.895.002-.852zm5.935-4.605l-5.922-3.411-5.853 3.401 5.917 3.414 5.858-3.404zm6.072-1.238l-11.862 6.864-.01 4.013 11.863-6.894.009-3.983zM11.944 21.27l.005-2.227L.01 12.148 0 16.162l11.94 6.895.004-1.787zM.021 9.802L1.6 8.885.025 7.976.021 9.802zm5.832-3.39l.024-1.636.001-.296L.099 7.848l1.647.951 4.107-2.387zm.041 4.951L1.749 8.97l-.46.267-1.195.695 5.795 3.345.005-1.914z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/linuxfoundation.svg b/assets/lib/simple-icons/icons/linuxfoundation.svg
index 19c23a5a..50e76aeb 100644
--- a/assets/lib/simple-icons/icons/linuxfoundation.svg
+++ b/assets/lib/simple-icons/icons/linuxfoundation.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Linux Foundation icon</title><path d="M4.8 9.6v9.6h9.6V24H0V9.6h4.8zM24 0v24h-7.2v-4.8h2.4V4.8H4.8v2.4H0V0h24z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Linux Foundation</title><path d="M4.8 19.2h9.6V24H0V9.6h4.8v9.6zM0 0v7.2h4.8V4.822h14.4V19.2h-2.4V24H24V0H0z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/linuxmint.svg b/assets/lib/simple-icons/icons/linuxmint.svg
index 16250efb..a9dcf113 100644
--- a/assets/lib/simple-icons/icons/linuxmint.svg
+++ b/assets/lib/simple-icons/icons/linuxmint.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Linux Mint icon</title><path d="M0 1.693v4.193h1.828c1.276 0 1.502.865 1.502 2.058l.01 7.412c0 3.84 3.44 6.951 7.68 6.951h10.464c1.342 0 2.516-.83 2.516-2.108V8.706c0-3.84-3.44-6.95-7.683-6.95h-4.405v-.013L0 1.693zm5.723 2.566h2.102V14.82c0 1.413.984 2.51 2.139 2.51l7.17.03c1.496 0 2.661-1.01 2.661-2.206l-.012-5.607a1.2 1.2 0 0 0-.386-.91 1.224 1.224 0 0 0-.917-.384c-.374 0-.65.12-.918.384a1.2 1.2 0 0 0-.386.91v4.798h-2.223V9.548c0-.364-.124-.648-.389-.91a1.208 1.208 0 0 0-.917-.384c-.366 0-.647.12-.914.384-.265.262-.39.546-.39.91v4.798H10.12V9.548c0-.95.36-1.792 1.042-2.466a3.445 3.445 0 0 1 2.485-1.022c.937 0 1.752.345 2.413.97a3.448 3.448 0 0 1 2.42-.97c.954 0 1.803.348 2.485 1.022a3.385 3.385 0 0 1 1.041 2.466l.009 5.991c-.105 1.004-.539 1.894-1.28 2.637h-.002a4.367 4.367 0 0 1-3.174 1.314H9.574v-.038c-.976-.103-1.846-.519-2.57-1.217-.845-.825-1.281-1.846-1.281-3.01V4.26z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Linux Mint</title><path d="M0 1.693v4.193h1.828c1.276 0 1.502.865 1.502 2.058l.01 7.412c0 3.84 3.44 6.951 7.68 6.951h10.464c1.342 0 2.516-.83 2.516-2.108V8.706c0-3.84-3.44-6.95-7.683-6.95h-4.405v-.013L0 1.693zm5.723 2.566h2.102V14.82c0 1.413.984 2.51 2.139 2.51l7.17.03c1.496 0 2.661-1.01 2.661-2.206l-.012-5.607a1.2 1.2 0 0 0-.386-.91 1.224 1.224 0 0 0-.917-.384c-.374 0-.65.12-.918.384a1.2 1.2 0 0 0-.386.91v4.798h-2.223V9.548c0-.364-.124-.648-.389-.91a1.208 1.208 0 0 0-.917-.384c-.366 0-.647.12-.914.384-.265.262-.39.546-.39.91v4.798H10.12V9.548c0-.95.36-1.792 1.042-2.466a3.445 3.445 0 0 1 2.485-1.022c.937 0 1.752.345 2.413.97a3.448 3.448 0 0 1 2.42-.97c.954 0 1.803.348 2.485 1.022a3.385 3.385 0 0 1 1.041 2.466l.009 5.991c-.105 1.004-.539 1.894-1.28 2.637h-.002a4.367 4.367 0 0 1-3.174 1.314H9.574v-.038c-.976-.103-1.846-.519-2.57-1.217-.845-.825-1.281-1.846-1.281-3.01V4.26z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/lionair.svg b/assets/lib/simple-icons/icons/lionair.svg
new file mode 100644
index 00000000..650623dc
--- /dev/null
+++ b/assets/lib/simple-icons/icons/lionair.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Lion Air</title><path d="M22.4726 7.088h-.0965v.192l.0965.0962c.0712.971-.8655 1.5373-.8655 1.5373-.0153-.603-.4807-.6726-.4807-.6726-1.1311-.291-1.4421 1.0571-1.4421 1.0571-.1277 1.1309.673 1.1531.673 1.1531.4498.125.8651-.3842.8651-.3842v.192l-.0963.8649c-.2261.7658-1.2496.4804-1.2496.4804-.444-.1825-.4804.0963-.4804.0963.049 1.3386.6726 1.8258.6726 1.8258.733.358.673.4804.673.4804.1577.301-.1923.4807-.1923.4807-.3246.168-.3844.3842-.3844.3842-.1285.284.3844.8649.3844.8649.1914.0195.2885.3845.2885.3845-.0473.4682-.481.4804-.481.4804-.134.0857-.3841.8646-.3841.8646-.993 3.2198-4.3638 3.6777-5.0618 3.7387.0713.7728.077 1.7885-.3216 2.1226 0 0-.4228.5305-1.4418.1922 0 0 1.0585-.876.8649-3.2671 0 0-.3072-.0481-.4807-.096 0 0-.2323 3.74-2.2111 3.8433 0 0-.8855.0303-1.1534-.4805 0 0 2.1354-.6843 2.7878-3.5553l-.3842-.192s-1.3874 3.682-3.7495 3.7473c0 0-.8872.1255-1.4419-.9611 0 0 2.7694-.204 4.7104-3.1706l-.3845-.2882s-2.869 3.3155-5.287 2.786c0 0-1.6773-.366-1.6344-1.8254 0 0 3.2968 1.0983 6.537-1.5373l-.2883-.4804S7.53 19.8337 4.8805 19.3875c0 0-3.4866-.6666-2.4033-3.1708 0 0 3.5714 2.3604 8.171 1.153v-.5766s-8.8734.7561-9.1322-4.0358c0 0 .1133-1.2791.6724-1.3453 0 0 2.346 3.597 8.4599 4.7087v-.4805s-8.6145-2.96-8.6518-8.264c0 0 .0737-2.2096 1.8266-1.922 0 0 .1625 5.0857 7.0174 9.5134l.192-.3845S4.5817 10.5165 4.688 2.8598c0 0 .3761-3.8936 3.2685-2.5944 0 0-1.8978 8.1023 3.557 13.549 0 0 .7906-1.4944 3.076-1.4413 0 0 3.5413-.1446 3.9414 3.7479 0 0 .3068 3.757-3.7495 4.1317 0 0 .0364.1889.0751.4743 3.4649-.2468 4.0588-3.6449 4.0588-3.6449.5158-3.73-2.8837-4.9012-2.8837-4.9012-2.6751-1.0162-4.6147.9609-4.6147.9609-2.6016-2.1196-2.8834-6.3423-2.8834-6.3423l.673-.2882c-.846-.556-.4808-1.7295-.4808-1.7295.4404.3639 2.0188-.2882 2.0188-.2882-.2261-.8941.2882-1.0571.2882-1.0571.4605-.0637 2.6916 0 2.6916 0 0-.9295.673-.8647.673-.8647.2227.2488 1.0573.3842 1.0573.3842 1.3668.5815 1.25.6724 1.25.6724.0698.1633.1919.0963.1919.0963-.0147-.8148.8652-.4805.8652-.4805.0882.8697 2.4993 2.0178 2.4993 2.0178.3533.2381 0 .6726 0 .6726l.3844.2883h.3848l.192.096.961.0962c.3887.0926.2894.673.2894.673zm-7.114-2.114s-.534.2557-.1922.8647c0 0 .1494.2145.4807.3844 0 0-.681-1.1984.865-.8649 0 0-.3425-.6604-1.1535-.3842zm4.5182 1.3451h-.6727v.1922l.4804.4805.3848-.7687Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/liquibase.svg b/assets/lib/simple-icons/icons/liquibase.svg
new file mode 100644
index 00000000..92e92ec3
--- /dev/null
+++ b/assets/lib/simple-icons/icons/liquibase.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Liquibase</title><path d="M12.01884 0C6.64997 0 2.96561 1.92248 2.96477 3.64555c0 1.72307 3.7271 3.64555 9.05571 3.64555 5.32776 0 9.05407-1.92248 9.05407-3.64555S17.34745 0 12.01885 0Zm9.0557 6.45057c-1.60226 1.28266-3.48576 1.72252-7.33205 2.64446-5.3286 1.24155-10.81704 2.5238-10.81704 7.53195v.56035c2.00297-1.72282 5.60817-2.5234 9.13435-3.32441h.0016c4.40704-1.00153 9.01311-2.04399 9.01311-4.60732zm0 5.84927c-1.92272 1.56284-5.328 2.32433-8.6936 3.0852-4.64743 1.0419-9.45549 2.123-9.45549 5.0071 0 .64174.52143 1.3229 1.4828 1.92353 1.92356-1.28181 4.92803-2.0026 7.81212-2.68377 4.36724-1.04106 8.85418-2.12278 8.85418-4.80721zm0 5.64937c-1.88329 1.60227-5.2489 2.40461-8.49371 3.16548-2.36398.56206-4.76777 1.1223-6.45057 1.96286C7.65283 23.63961 9.69593 24 12.02048 24c5.28834 0 9.05407-1.88469 9.05407-3.64719z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/lit.svg b/assets/lib/simple-icons/icons/lit.svg
new file mode 100644
index 00000000..6afe310e
--- /dev/null
+++ b/assets/lib/simple-icons/icons/lit.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Lit</title><path d="M2.4 9.6l4.8 4.8V24l-4.8-4.8V9.6zm4.8-4.8v9.6L12 9.6V0L7.2 4.8zM12 9.6v9.6l4.8-4.8V4.8L12 9.6zm4.8 4.8V24l4.8-4.8V9.6l-4.8 4.8z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/litecoin.svg b/assets/lib/simple-icons/icons/litecoin.svg
index 9adc2746..1a2ccb03 100644
--- a/assets/lib/simple-icons/icons/litecoin.svg
+++ b/assets/lib/simple-icons/icons/litecoin.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Litecoin icon</title><path d="M12 0a12 12 0 1012 12A12 12 0 0012 0zm-.2617 3.6777h2.584a.3425.3425 0 01.33.4356l-2.0312 6.918 1.9062-.582-.4082 1.3847-1.9238.5605-1.248 4.213h6.6757a.3425.3425 0 01.3282.4374l-.582 2a.4586.4586 0 01-.4395.3301H6.7324l1.7227-5.8223-1.9063.5801.42-1.3613 1.9101-.58 2.4219-8.1798a.4557.4557 0 01.4375-.334Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Litecoin</title><path d="M12 0a12 12 0 1012 12A12 12 0 0012 0zm-.2617 3.6777h2.584a.3425.3425 0 01.33.4356l-2.0312 6.918 1.9062-.582-.4082 1.3847-1.9238.5605-1.248 4.213h6.6757a.3425.3425 0 01.3282.4374l-.582 2a.4586.4586 0 01-.4395.3301H6.7324l1.7227-5.8223-1.9063.5801.42-1.3613 1.9101-.58 2.4219-8.1798a.4557.4557 0 01.4375-.334Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/livechat.svg b/assets/lib/simple-icons/icons/livechat.svg
new file mode 100644
index 00000000..c3355611
--- /dev/null
+++ b/assets/lib/simple-icons/icons/livechat.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>LiveChat</title><path d="M23.849 14.91c-.24 2.94-2.73 5.22-5.7 5.19h-3.15l-6 3.9v-3.9l6-3.9h3.15c.93.03 1.71-.66 1.83-1.59.18-3 .18-6-.06-9-.06-.84-.75-1.47-1.56-1.53-2.04-.09-4.2-.18-6.36-.18s-4.32.06-6.36.21c-.84.06-1.5.69-1.56 1.53-.21 3-.24 6-.06 9 .09.93.9 1.59 1.83 1.56h3.15v3.9h-3.15a5.644 5.644 0 01-5.7-5.19c-.21-3.21-.18-6.39.06-9.6a5.57 5.57 0 015.19-5.1c2.1-.15 4.35-.21 6.6-.21s4.5.06 6.63.24a5.57 5.57 0 015.19 5.1c.21 3.18.24 6.39.03 9.57z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/livejournal.svg b/assets/lib/simple-icons/icons/livejournal.svg
index 50bffcb5..8bd6ebd4 100644
--- a/assets/lib/simple-icons/icons/livejournal.svg
+++ b/assets/lib/simple-icons/icons/livejournal.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>LiveJournal icon</title><path d="M18.09 14.696c-1.512.664-2.726 1.885-3.381 3.399l4.27.883-.886-4.282h-.003zM2.475 8.317L0 5.85C1.125 3.237 3.216 1.14 5.823 0h.006l2.469 2.463c1.368-.591 2.876-.921 4.463-.921C18.967 1.542 24 6.569 24 12.771 24 18.973 18.967 24 12.761 24 6.551 24 1.52 18.976 1.52 12.771c0-1.591.355-3.081.952-4.451l9.143 9.114c1.125-2.613 3.218-4.71 5.823-5.85l-9.135-9.12h-.008c-2.606 1.14-4.695 3.24-5.823 5.85l.003.003z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>LiveJournal</title><path d="M18.09 14.696c-1.512.664-2.726 1.885-3.381 3.399l4.27.883-.886-4.282h-.003zM2.475 8.317L0 5.85C1.125 3.237 3.216 1.14 5.823 0h.006l2.469 2.463c1.368-.591 2.876-.921 4.463-.921C18.967 1.542 24 6.569 24 12.771 24 18.973 18.967 24 12.761 24 6.551 24 1.52 18.976 1.52 12.771c0-1.591.355-3.081.952-4.451l9.143 9.114c1.125-2.613 3.218-4.71 5.823-5.85l-9.135-9.12h-.008c-2.606 1.14-4.695 3.24-5.823 5.85l.003.003z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/livestream.svg b/assets/lib/simple-icons/icons/livestream.svg
deleted file mode 100644
index 82a534fe..00000000
--- a/assets/lib/simple-icons/icons/livestream.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Livestream icon</title><path d="M20.987 6.248l.041.002.039.006.04.011.039.015.038.02.039.022.035.03.035.029.037.045.046.045.03.045.044.045.075.119.029.06.029.075.03.074.031.074.028.074.029.09.029.09.03.09.031.089.029.104.028.104.031.105.03.104.029.104.029.104.03.12.03.118.029.135.015.12.029.134.03.134.017.135.028.149.015.148.015.149.031.149.015.149.016.148.015.165.015.164.015.163.015.165.015.164.016.179.015.343.016.179.015.179.015.18.015.18.015.193.015.193.015.193.016.195.015.193v.388l.016.209.015.209v.403l.015.208v.611l.015.419.015.625v1.269l.015.373.03.269.046.179.043.119.047.104.059.09.045.044.045.045.044.045.062.029.089.046.089.029.096.03.142.029.193.011.269-.016h.1v2.253l-.239.029-.566.026-.61-.029-.448-.067-.344-.089-.254-.089-.237-.119-.236-.15-.208-.184-.134-.134-.136-.149-.17-.269-.15-.313-.119-.342-.082-.403-.054-.456-.015-.508v-1.938l-.015-.418v-.865l-.015-.402v-.287l-.016-.199v-.397l-.015-.194v-.193l-.008-.193-.015-.194-.014-.179-.003-.18-.015-.179-.015-.183v-.178l-.015-.18-.017-.179-.012-.179-.014-.17-.017-.17-.015-.164-.015-.169-.015-.16-.014-.163-.015-.164-.017-.15-.015-.148-.016-.158-.015-.141-.015-.135-.044-.278-.016-.134-.015-.135-.03-.125-.026-.135-.029-.118-.03-.12-.031-.119-.034-.103-.029-.104-.025-.103-.045-.09-.029-.104-.029-.089-.022-.09-.029-.089-.031-.09-.03-.074-.029-.076-.029-.074-.03-.059-.03-.061-.029-.06-.044-.06-.03-.045-.036-.045-.031-.044-.041-.03-.028-.029-.046-.03-.028-.015-.046-.016-.049-.012-.044-.016-.03-.015h-.03 2.552l-.051.031zM.008 3.082l1.169.021 1.089.026.97.015.851.03.73.029.642.029.567.03.506.029.463.046.418.044.387.046.357.044.329.046.313.044.283.061.27.059.252.059.24.06.223.06.209.06.194.075.194.059.179.074.163.076.166.074.148.074.164.074.148.09.135.09.135.09.119.088.119.09.119.09.119.09.104.09.104.104.104.09.105.104.09.104.09.104.104.105.09.104.09.104.074.104.09.105.074.119.074.104.074.119.075.12.074.119.074.12.06.119.061.119.074.119.06.119.06.119.06.119.06.12.045.118.048.12.06.135.05.118.06.135.06.119.044.119.061.135.054.135.044.119.051.134.045.12.045.133.045.135.045.135.045.134.044.135.03.134.045.135.039.135.029.133.039.135.029.135.041.134.029.134.045.135.029.119.045.135v.014l.029.12.031.127.029.134.029.135.03.119.03.135.029.133.045.12.029.134.03.119.03.135.029.119.029.119.03.12.03.119.029.12.03.119.03.119.029.119.029.119.03.119.03.119.014.12.03.104.046.223.029.105.029.104.03.104.022.104.029.104.016.104.029.104.03.104.015.104.029.105.03.09.03.097.015.089.03.09.015.09.015.089.015.09.015.075.016.09.015.085.016.075.014.074.016.078.024.074.015.074.015.075.015.068.016.06.023.074.023.061.016.065.015.06.016.06.015.06.015.06.015.06.015.045.03.051.015.045.015.045.016.044.029.046.015.044.038.075.015.038.03.061.015.029.015.03.015.029.016.03.015.015.015.015.015.015.016.015.015.016.029.016.016.004.015.015h.03-7.027l-.051-.015-.057-.016-.057-.014-.06-.016-.06-.015h-.016l-.052-.024-.056-.015-.057-.031-.061-.03-.044-.029-.06-.03-.045-.029-.061-.03-.044-.045-.044-.045-.061-.045-.045-.045-.06-.044-.06-.06-.06-.056-.044-.06-.061-.054-.06-.045-.06-.06-.061-.06-.044-.06-.062-.005-.059-.06-.045-.068-.054-.065-.119-.148-.059-.075-.045-.074-.061-.09-.059-.074-.061-.09-.06-.075-.06-.088-.06-.09-.06-.09-.061-.09-.059-.09-.061-.09-.06-.089-.06-.104-.059-.09-.046-.104-.06-.105-.06-.104-.06-.105-.061-.104-.059-.104-.06-.104-.06-.104-.061-.104-.059-.104-.061-.104-.059-.104-.061-.119-.06-.12-.06-.119-.061-.12-.059-.119-.061-.119-.059-.119-.06-.119-.135-.028-.049-.126-.059-.123-.061-.123-.059-.125-.064-.125-.06-.127-.06-.119-.064-.119-.06-.119-.063-.119-.06-.119-.06-.15-.06-.134-.063-.119-.063-.12-.06-.134-.063-.119-.061-.135-.06-.119-.06-.135-.06-.134-.06-.134-.058-.134-.059-.135-.061-.119-.059-.134-.059-.133-.059-.135-.06-.135-.06-.134-.119-.268-.06-.149-.06-.12-.059-.134-.061-.12-.06-.119-.073-.118-.06-.135-.074-.12-.06-.118-.074-.12-.061-.119-.059-.12-.06-.119-.06-.119-.059-.137-.12-.239-.06-.119-.061-.119-.074-.119-.074-.119-.135-.229-.058-.119-.074-.11-.076-.12-.059-.112-.061-.104-.125-.208-.074-.106-.061-.103-.058-.105-.061-.089-.06-.105-.063-.104-.066-.09-.059-.09-.074-.09-.076-.088-.059-.089-.075-.09-.088-.117-.067-.076-.069-.078-.059-.074-.058-.1-.074-.074-.066-.06-.075-.069-.062-.065-.075-.081-.065-.06-.065-.06-.068-.058-.067-.053-.069-.045-.07-.045L.672 3.4l-.075-.046-.06-.044-.074-.044-.067-.03-.068-.03-.07-.03-.071-.03-.068-.031-.059-.023L0 3.086h.008v-.004z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/livewire.svg b/assets/lib/simple-icons/icons/livewire.svg
new file mode 100644
index 00000000..0bfea59f
--- /dev/null
+++ b/assets/lib/simple-icons/icons/livewire.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Livewire</title><path d="M12.001 0C6.1735 0 1.4482 4.9569 1.4482 11.0723c0 2.0888.5518 4.0417 1.5098 5.709.2492.2796.544.4843.9649.4843 1.3388 0 1.2678-2.0644 2.6074-2.0644 1.3395 0 1.4111 2.0644 2.75 2.0644 1.3388 0 1.2659-2.0644 2.6054-2.0644.5845 0 .9278.3967 1.2403.8398-.2213-.2055-.4794-.3476-.8203-.3476-1.1956 0-1.3063 1.6771-2.2012 2.1406v4.5097c0 .9145.7418 1.6563 1.6562 1.6563.9145 0 1.6563-.7418 1.6563-1.6563v-5.8925c.308.4332.647.8144 1.2207.8144 1.3388 0 1.266-2.0644 2.6055-2.0644.465 0 .7734.2552 1.039.58-.1294-.0533-.2695-.0878-.4297-.0878-1.1582 0-1.296 1.574-2.1171 2.0937v2.4356c0 .823.6672 1.4902 1.4902 1.4902s1.4902-.6672 1.4902-1.4902V16.371c.3234.4657.6684.8945 1.2774.8945.7955 0 1.093-.7287 1.4843-1.3203.6878-1.4704 1.0743-3.1245 1.0743-4.873C22.5518 4.9569 17.8284 0 12.001 0zm-.5664 2.877c2.8797 0 5.2148 2.7836 5.2148 5.8066 0 3.023-1.5455 5.1504-5.2148 5.1504-3.6693 0-5.2149-2.1274-5.2149-5.1504S8.5548 2.877 11.4346 2.877zM10.0322 4.537a1.9554 2.1583 0 00-1.955 2.1582 1.9554 2.1583 0 001.955 2.1582 1.9554 2.1583 0 001.9551-2.1582 1.9554 2.1583 0 00-1.955-2.1582zm-.3261.664a.9777.9961 0 01.9785.9962.9777.9961 0 01-.9785.996.9777.9961 0 01-.9766-.996.9777.9961 0 01.9766-.9961zM6.7568 15.6935c-1.0746 0-1.2724 1.3542-1.9511 1.9648v1.7813c0 .823.6672 1.4902 1.4902 1.4902s1.4902-.6672 1.4902-1.4902v-3.1817c-.2643-.3237-.5767-.5644-1.0293-.5644Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/llvm.svg b/assets/lib/simple-icons/icons/llvm.svg
index 7aac058a..135f711a 100644
--- a/assets/lib/simple-icons/icons/llvm.svg
+++ b/assets/lib/simple-icons/icons/llvm.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>LLVM icon</title><path d="M20.83 2.976l-.085.095a16.246 16.246 0 00-1.19 1.487 5.773 5.773 0 00-.446.719 2.88 2.88 0 00-.249.597.497.497 0 00-.033.177v.004a.297.297 0 00-.21.29.3.3 0 00.187.284c.038.371.08 1.142.07 2.2l-.004.142a8.002 8.002 0 01-.434 2.327c-.016-.01-.03-.014-.04-.013-.03.003-.111.12-.19.251-.058.09-.119.195-.154.291a.37.37 0 00-.03.14.249.249 0 00.01.088c.01.037.022.058.022.058a6.837 6.837 0 01-.003.007.144.144 0 00-.028.067l-.012.029a6.837 6.837 0 01-.258.527l-.077.142a6.837 6.837 0 01-.07.115.157.157 0 00-.022-.014.16.16 0 00-.113.024c-.047.035-.151.194-.498.368-.118.059-.226.093-.32.114a14.102 14.102 0 00.248-2.07 5.072 5.072 0 00-.064-1.057c.003-.01.003-.017.003-.017l-.005.01a4.345 4.345 0 00-.104-.458 3.554 3.554 0 00-.724-1.385c-.631-.754-1.496-1.14-2.256-1.165l-.125-.002c0-.008 0-.015.002-.022.021-.098.024-.127-.087-.032a.872.872 0 00-.057.054c-.053.001-.101.004-.146.007a.716.716 0 01-.003-.108c.004-.076.024-.127-.087-.032a.553.553 0 00-.142.167c-.05.008-.08.015-.08.015l.045-.002-.047.008c-.016-.042-.053-.105-.048-.16.01-.118.043-.14-.037-.065-.098.09-.202.226-.22.299l-.096.03c-.018-.018-.074-.07-.086-.178-.013-.11-.012-.166-.08-.051a1.14 1.14 0 00-.13.349c-.032.015-.063.03-.093.046a.27.27 0 01-.057-.173c-.005-.144.04-.261-.067-.068a1.634 1.634 0 00-.146.406c-.036.025-.071.051-.105.079a2.7 2.7 0 01-.008-.17c-.002-.142.021-.295-.067-.025-.026.079-.053.192-.07.321-.404.385-.65.917-.644 1.572v.007c-.001.117.005.228.014.33.02.238.057.438.107.605-.095.13-.103.689-.01.818.073.104.496.35.586.399a.367.367 0 01.094.093c.115.188.115.567.027.762-.107.238.107.285.285.32.178.036.415-.023.463-.118.047-.095-.154-.309-.237-.748-.084-.439.13-.474.13-.474s.095.024.237.249c.11.175.227.313.336.413a.727.727 0 01-.201.172c.12.005.24-.051.304-.087a.77.77 0 00.071.045 1.015 1.015 0 01-.05.05.506.506 0 00.108-.022.295.295 0 00.084.022c.155.012.57-.368.57-.439 0-.018-.015-.04-.038-.063-.042-.045-.12-.1-.207-.177a1.03 1.03 0 01-.11-.116.723.723 0 01-.141-.374v-.01l-.003-.031s.007-.007.016-.02v.004l.004-.01c.052-.08.15-.379-.47-1.078a3.045 3.045 0 00-.924-.706c-.042-.472.15-.913.626-1.13l-.005.005.008-.006c.227-.102.517-.155.877-.136.69.036 1.22.359 1.59.845.514.712.738 1.78.575 2.856-.068.065-.055.075-.013.077a4.616 4.616 0 01-.055.273l-.027.015c-.123.074-.071.073 0 .092l-.006.02c-.02.065-.043.13-.066.193a.956.956 0 00-.087.03c-.135.053-.08.06-.012.091l.044.022c-.032.08-.066.16-.101.237a.746.746 0 00-.08.017c-.142.036-.088.05-.024.09a.52.52 0 01.04.027 6.784 6.784 0 01-.107.214.76.76 0 00-.153.025c-.14.036-.087.05-.023.09.034.02.06.041.081.059a8.022 8.022 0 01-.095.165l-.023.036a.59.59 0 00-.206.024c-.142.036-.088.05-.024.09a.67.67 0 01.104.079 8.61 8.61 0 01-.126.18.514.514 0 00-.23-.005c-.144.02-.092.04-.033.086.068.053.101.099.118.118l-.062.084c-.044-.058-.149-.124-.246-.193a.85.85 0 00-.29-.13c-.048 0-.199.268-1.017.197-.819-.071-.87-.15-.942-.15-.07 0-.223.057-.228.059l-.034-.02a11.031 11.031 0 01-.972-.674c-.464-.37-.72-.647-.72-.647s.137-.125-.047-.284a3.32 3.32 0 00-.338-.277 2.157 2.157 0 00-.242-.166 3.57 3.57 0 01-.088-.127 11.486 11.486 0 01-.363-.628 10.456 10.456 0 01-.25-.527c-.16-.36-.27-.682-.346-.964a5.621 5.621 0 01-.148-.923 2.257 2.257 0 01.004-.242.411.411 0 00.158-.323.411.411 0 00-.358-.407c-.204-.427-.982-1.477-3.882-3.68l-.127-.098.005.004-.036-.027c2.954 2.53 3.53 3.519 3.682 3.932a.411.411 0 00-.027.033 18.692 18.692 0 00-.018-.013c.018 0 .025-.005.025-.005s-.672-.546-1.787-1.23c-1.119-.687-1.749-.849-1.88-.877l-.027-.006s.206.19.174.285c-.01.032-.168.022-.421.028a3.948 3.948 0 00-.725.07 4.1 4.1 0 00-1.567.63C.237 7.783-.001 8.4-.001 8.4s.55-.768 1.58-1.305c-.014.337-.047 1.969.445 4.12.531 2.32 1.531 4.487 1.614 4.665.004.178.016.272.016.272s.148-1.79.756-3.647c.175.283.758 1.117 2.076 2.096 1.628 1.21 2.37 1.536 2.4 1.548.001.157.005.24.005.24s.005-.1.018-.263c.044-.065.298-.43.552-.67a3.58 3.58 0 01.54-.435c.032.11.063.204.093.276-.02-.097-.036-.19-.052-.282.107.01.538.066 1.206.393.343.168.609.395.798.595a.167.167 0 00-.014.006s.123.112.269.403a2.416 2.416 0 00-.73.084 2.913 2.913 0 00-.098-.189.484.484 0 00-.039-.135c-.027-.061-.095-.1-.164-.14a.397.397 0 00-.104-.073.225.225 0 01-.055-.073c-.084-.184-.798.012-.942.18-.175.204-.209.464-.14.608.021.045.07.082.138.11.002.221.137.75.404 1.134a4.964 4.964 0 01-.108-.667c-.009-.16 0-.274.015-.35.047.328.174.684.577 1.125-.248-.54-.22-.862-.195-1.144l.009-.044.006-.001c.036.263.142.534.482.964a.412.412 0 01-.014-.028l.014.021a1.626 1.626 0 01-.167-1.03l.008-.003c.046.03.091.07.134.126.128.172.188.349.212.47a.528.528 0 00.067.384c-.245.179-.485.346-.72.501-.23.149-.49.313-.757.47-.14.08-.279.158-.414.23l-.135-.077h.002l-.008-.004c-.97-.559-1.69-.932-2.518-1.082-.931-.167-1.787.283-1.983 1.082a1.284 1.284 0 00.552 1.38l.012.008c.013.01.026.017.04.026l.06.036h.002c.192.11.424.191.691.237l.028.005h.006a3.5 3.5 0 00.412.044c.975.047 2.156-.408 3.323-.982.1.054.202.108.306.166 2.547 1.403 4.098 1.585 6.154.728-.502.151-1.208.356-2.094.344a.05.05 0 00-.02-.006l.001.006a5.461 5.461 0 01-.648-.05v-.001l-.03-.003v-.003a.267.267 0 00-.001.002 6.25 6.25 0 01-1.556-.436 7.793 7.793 0 01-.745-.362 57.07 57.07 0 01-1.006-.569c.348-.178.692-.363 1.026-.545.355-.189.672-.362.918-.5l.009-.004.007-.001s.083-.018.16-.042c.17-.052.41-.149.695-.283.028.117.095.215.195.253.235.091.407.027.522-.102l.018-.01.047-.037c.05-.03.107-.067.156-.09a1.14 1.14 0 01.053-.022c.04-.01.078-.023.116-.037l.033-.01c-.145.297-.091.581-.091.581.043-.371.22-.608.392-.715.064-.027.13-.05.2-.067.064 0 .116.023.144.07.07.12.217.194.364.226.024.15-.045.404-.4.866l.09-.062.004-.003.072-.053c.143-.108.252-.21.334-.305a.97.97 0 00.191-.305c.012.2-.043.507-.311 1.036 0 0 .317-.276.514-.63.006.191-.01.443-.063.785.345-.673.325-1.085.239-1.326l-.01-.036a.433.433 0 00-.01-.065l.042-.057c.118-.166-.048-.344-.154-.415-.06-.04-.2-.154-.454-.157-.225-.27-.51-.15-.958.145a1.297 1.297 0 01-.166.093.725.725 0 00-.055-.117c.16-.096.326-.199.494-.308.317-.207.553-.416.728-.615.51-.517.69-1.02 1.21-1.446l-.013.001.06-.032c.854-.458 1.307-.547 1.339-.553l-.003.128.018-.125a1.795 1.795 0 01.481.344 2.12 2.12 0 01.362.487l.044.301s0-.117-.01-.33c.153-.152 1.02-1.044 1.724-2.467.694-1.404.944-2.523 1.017-2.924a18.19 18.19 0 01.665 2.466s-.002-.133-.031-.374c.097-.336.516-1.872.627-3.756.1-1.681-.065-2.78-.14-3.174.648.537.995 1.307.995 1.307s-.04-.163-.188-.437l.02.027s-.236-.455-.644-.905a6.45 6.45 0 00-.157-.172c-.432-.459-.854-.617-1.17-.672-.1-.02-.203-.03-.308-.03h-.019c-.125-.003-.201.002-.207-.026-.02-.095.11-.285.11-.285s-.177.046-.554.33c-.23.167-.52.41-.853.76a13.69 13.69 0 00-.89.995l-.075.095a.203.203 0 00-.023-.017c.076-.331.362-1.118 1.788-3.112zM11.92 14.09a.351.351 0 01.012.006l-.012-.006zm-.263 2.606c.088.044.19.106.303.194h-.005a.484.484 0 00-.155.07.956.956 0 01-.126-.224l-.017-.04zm-4.855 1.57c.132 0 .276.014.432.048l.02.005.017.004c.11.027.223.062.337.102l.057.021c.191.074.395.156.611.248.32.139.619.277.838.375l.183.088c-.221.106-.424.196-.577.261-1.014.416-1.83.536-2.338.391-.945-.269-.76-1.536.42-1.542z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>LLVM</title><path d="M20.83 2.978l-.086.095a16.245 16.245 0 0 0-1.19 1.487 5.773 5.773 0 0 0-.446.719 2.88 2.88 0 0 0-.249.596.497.497 0 0 0-.033.177v.004a.297.297 0 0 0-.21.29.3.3 0 0 0 .187.284c.038.371.08 1.142.07 2.2l-.004.142a8.001 8.001 0 0 1-.434 2.327c-.016-.01-.03-.014-.04-.013-.03.003-.11.12-.19.251-.058.09-.119.195-.154.291a.37.37 0 0 0-.03.14.249.249 0 0 0 .01.088c.01.037.022.058.022.058a6.836 6.836 0 0 1-.003.007.144.144 0 0 0-.028.067l-.012.029a6.836 6.836 0 0 1-.257.527l-.077.142a6.836 6.836 0 0 1-.07.115.157.157 0 0 0-.022-.014.16.16 0 0 0-.113.024c-.047.035-.151.194-.498.368a1.384 1.384 0 0 1-.32.114 14.1 14.1 0 0 0 .248-2.07 5.072 5.072 0 0 0-.064-1.057c.003-.01.003-.017.003-.017l-.005.01a4.345 4.345 0 0 0-.104-.458 3.554 3.554 0 0 0-.724-1.385c-.631-.754-1.496-1.14-2.256-1.165l-.125-.002c0-.008 0-.015.002-.022.02-.098.024-.127-.087-.032a.872.872 0 0 0-.057.054 2.986 2.986 0 0 0-.146.007.716.716 0 0 1-.003-.108c.004-.076.024-.127-.087-.032a.553.553 0 0 0-.142.167c-.05.008-.08.015-.08.015l.045-.002-.047.008c-.016-.042-.053-.105-.048-.16.01-.118.043-.14-.037-.065-.098.09-.202.226-.22.3l-.096.03c-.018-.019-.074-.07-.086-.179-.013-.11-.012-.166-.08-.05a1.14 1.14 0 0 0-.13.348c-.032.015-.063.03-.093.046a.27.27 0 0 1-.057-.173c-.005-.144.04-.26-.067-.068a1.634 1.634 0 0 0-.146.406 1.6 1.6 0 0 0-.105.08 2.7 2.7 0 0 1-.008-.17c-.002-.143.021-.296-.067-.026a1.832 1.832 0 0 0-.07.321c-.404.385-.65.917-.644 1.572v.007a3.42 3.42 0 0 0 .014.33c.02.238.057.438.107.605-.095.13-.103.689-.01.818.073.104.496.35.586.399a.367.367 0 0 1 .094.093c.115.188.115.567.027.762-.107.238.107.285.285.32.178.036.415-.023.463-.118.047-.095-.154-.31-.237-.748-.084-.439.13-.474.13-.474s.095.024.237.249c.11.175.227.313.336.413a.727.727 0 0 1-.201.172c.12.005.24-.051.304-.087a.77.77 0 0 0 .07.045 1.015 1.015 0 0 1-.05.05.506.506 0 0 0 .109-.022.295.295 0 0 0 .084.022c.155.012.57-.368.57-.439 0-.018-.015-.04-.038-.063-.042-.045-.12-.1-.207-.177a1.03 1.03 0 0 1-.11-.116.723.723 0 0 1-.141-.374v-.01l-.003-.031s.007-.007.016-.02v.004l.004-.01c.052-.08.15-.379-.47-1.078a3.045 3.045 0 0 0-.924-.706c-.042-.472.15-.913.626-1.13l-.005.005.008-.006c.227-.102.517-.155.877-.136.69.036 1.22.36 1.59.845.514.712.738 1.78.575 2.856-.068.065-.055.075-.013.077a4.616 4.616 0 0 1-.055.273l-.027.015c-.123.074-.071.073 0 .092l-.006.02a3.98 3.98 0 0 1-.066.193.956.956 0 0 0-.087.03c-.135.053-.08.06-.012.09l.044.023a5.62 5.62 0 0 1-.101.237.746.746 0 0 0-.08.017c-.142.036-.088.05-.024.09a.52.52 0 0 1 .04.027 6.783 6.783 0 0 1-.107.214.76.76 0 0 0-.153.025c-.14.036-.087.05-.023.09.034.02.06.04.08.059a8.021 8.021 0 0 1-.094.165l-.023.036a.59.59 0 0 0-.206.024c-.142.036-.088.05-.024.09a.67.67 0 0 1 .104.079 8.61 8.61 0 0 1-.126.18.514.514 0 0 0-.23-.005c-.144.02-.092.04-.033.086.068.053.1.099.118.118l-.062.084c-.044-.058-.15-.124-.246-.193a.85.85 0 0 0-.29-.13c-.048 0-.2.268-1.017.197-.819-.071-.87-.15-.942-.15a.978.978 0 0 0-.228.059l-.034-.02a11.03 11.03 0 0 1-.972-.674c-.464-.37-.72-.647-.72-.647s.137-.125-.047-.284a3.32 3.32 0 0 0-.338-.277 2.157 2.157 0 0 0-.242-.166 3.57 3.57 0 0 1-.088-.127 11.485 11.485 0 0 1-.363-.628 10.455 10.455 0 0 1-.25-.527c-.16-.36-.27-.682-.346-.964a5.62 5.62 0 0 1-.148-.923 2.257 2.257 0 0 1 .004-.242.411.411 0 0 0 .158-.323.411.411 0 0 0-.358-.407c-.204-.427-.982-1.477-3.881-3.68l-.127-.097.005.004-.036-.027C7.067 6.599 7.644 7.587 7.795 8a.411.411 0 0 0-.027.033 18.69 18.69 0 0 0-.018-.013c.018 0 .025-.005.025-.005s-.672-.546-1.787-1.23c-1.118-.687-1.748-.849-1.88-.877l-.026-.006s.206.19.174.285c-.01.032-.168.022-.421.028a3.948 3.948 0 0 0-.725.07 4.1 4.1 0 0 0-1.567.63C.238 7.785 0 8.401 0 8.401s.55-.768 1.58-1.305c-.014.337-.047 1.97.445 4.12.53 2.32 1.53 4.487 1.614 4.665.004.178.016.272.016.272s.148-1.79.756-3.647c.175.283.758 1.117 2.075 2.096 1.628 1.21 2.37 1.536 2.4 1.548.001.157.005.24.005.24s.005-.1.018-.263a4.69 4.69 0 0 1 .552-.67 3.58 3.58 0 0 1 .54-.435c.032.11.063.204.093.276-.02-.097-.036-.19-.052-.282.107.01.538.066 1.206.393.343.168.609.395.798.595a.167.167 0 0 0-.014.006s.123.112.269.403a2.416 2.416 0 0 0-.73.084 2.913 2.913 0 0 0-.098-.19.484.484 0 0 0-.039-.134c-.027-.061-.095-.1-.164-.14a.397.397 0 0 0-.104-.073.225.225 0 0 1-.055-.073c-.084-.184-.798.012-.942.18-.175.204-.209.464-.14.608.021.045.07.082.138.11.002.22.137.75.404 1.133a4.964 4.964 0 0 1-.108-.666c-.009-.16 0-.274.015-.35.047.328.174.684.577 1.124-.248-.54-.22-.861-.195-1.143l.01-.044.005-.001c.036.263.142.534.482.963a.412.412 0 0 1-.014-.028l.014.021a1.626 1.626 0 0 1-.167-1.03l.008-.002c.046.03.091.07.134.126.128.172.188.349.212.47a.528.528 0 0 0 .067.383 18.33 18.33 0 0 1-.72.501c-.23.15-.49.313-.757.47-.14.08-.279.158-.414.23l-.135-.077h.002l-.008-.004c-.97-.559-1.69-.932-2.518-1.082-.93-.166-1.786.283-1.982 1.082a1.284 1.284 0 0 0 .552 1.38l.012.008c.013.01.026.017.04.026l.06.036h.002a2.1 2.1 0 0 0 .69.237l.028.005h.006a3.5 3.5 0 0 0 .412.044c.975.047 2.156-.408 3.323-.982.1.054.202.108.306.166 2.547 1.403 4.098 1.585 6.154.728-.502.151-1.208.356-2.094.344a.05.05 0 0 0-.02-.006v.006a5.46 5.46 0 0 1-.647-.05l-.03-.004v-.003a.267.267 0 0 0-.001.002 6.25 6.25 0 0 1-1.556-.436 7.792 7.792 0 0 1-.745-.362 57.065 57.065 0 0 1-1.006-.569c.348-.178.692-.363 1.026-.545.355-.189.672-.362.918-.5l.009-.004h.007s.083-.019.16-.043c.17-.052.41-.149.695-.283.028.117.095.215.195.253.235.091.407.027.522-.102l.018-.01.047-.037c.05-.03.107-.067.156-.09a1.14 1.14 0 0 1 .053-.022c.04-.01.078-.023.116-.037l.033-.01c-.145.297-.091.581-.091.581.043-.37.22-.608.392-.715.064-.027.13-.05.2-.067.064 0 .116.023.144.07.07.12.217.194.364.226.024.15-.045.404-.4.866l.09-.062.004-.003.072-.053c.143-.108.252-.21.334-.305a.97.97 0 0 0 .19-.305c.013.2-.042.507-.31 1.036 0 0 .317-.276.514-.63.006.191-.01.443-.063.785.345-.673.325-1.085.239-1.326l-.01-.036a.433.433 0 0 0-.01-.065l.042-.057c.118-.166-.048-.344-.154-.414-.06-.04-.2-.154-.454-.157-.225-.27-.51-.15-.958.145a1.297 1.297 0 0 1-.166.092.725.725 0 0 0-.055-.116c.16-.096.326-.2.494-.308.317-.207.553-.416.728-.615.51-.517.69-1.02 1.21-1.446h-.013l.06-.031c.854-.458 1.306-.547 1.338-.553l-.003.128.018-.125a1.795 1.795 0 0 1 .481.344 2.12 2.12 0 0 1 .362.487l.044.3s0-.116-.01-.33c.153-.151 1.02-1.043 1.724-2.466.694-1.404.944-2.523 1.017-2.924a18.188 18.188 0 0 1 .665 2.466s-.002-.133-.03-.374c.096-.336.515-1.872.626-3.756.1-1.68-.065-2.78-.14-3.173.648.536.995 1.306.995 1.306s-.04-.163-.188-.437l.02.027s-.236-.455-.644-.904a6.45 6.45 0 0 0-.157-.172c-.432-.46-.854-.617-1.17-.672a1.57 1.57 0 0 0-.308-.03h-.019c-.125-.003-.2.002-.207-.026-.02-.095.11-.285.11-.285s-.177.046-.554.33c-.23.167-.52.41-.853.76a13.689 13.689 0 0 0-.89.994l-.075.095a.203.203 0 0 0-.023-.017c.076-.33.362-1.117 1.788-3.111zM11.92 14.09a.351.351 0 0 1 .012.006zm-.263 2.606c.088.044.19.106.303.194h-.005a.484.484 0 0 0-.155.07.956.956 0 0 1-.126-.224zm-4.855 1.57c.132 0 .276.013.432.047l.02.005.017.004c.11.027.223.062.337.102l.057.021c.191.074.395.156.611.248.32.14.62.277.838.375l.183.088c-.22.106-.424.196-.577.261-1.014.416-1.83.536-2.338.391-.944-.269-.76-1.536.42-1.542z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/lmms.svg b/assets/lib/simple-icons/icons/lmms.svg
index babac8c0..4b7e5f05 100644
--- a/assets/lib/simple-icons/icons/lmms.svg
+++ b/assets/lib/simple-icons/icons/lmms.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>LMMS icon</title><path d="M1.714 0A1.71 1.71 0 000 1.714v20.572C0 23.236.765 24 1.714 24h20.572A1.71 1.71 0 0024 22.286V1.714A1.71 1.71 0 0022.286 0zM12 3l9 5.143v10.286l-3 1.714-3-1.714V15l3-1.714V9.857L12 6.43 6 9.857v3.429L9 15v3.429l-3 1.714-3-1.714V8.143Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>LMMS</title><path d="M1.714 0A1.71 1.71 0 000 1.714v20.572C0 23.236.765 24 1.714 24h20.572A1.71 1.71 0 0024 22.286V1.714A1.71 1.71 0 0022.286 0zM12 3l9 5.143v10.286l-3 1.714-3-1.714V15l3-1.714V9.857L12 6.43 6 9.857v3.429L9 15v3.429l-3 1.714-3-1.714V8.143Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/lodash.svg b/assets/lib/simple-icons/icons/lodash.svg
new file mode 100644
index 00000000..9f40bea2
--- /dev/null
+++ b/assets/lib/simple-icons/icons/lodash.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Lodash</title><path d="m0 20.253h24v2.542h-24zm18.061-15.041.223.031c1.933-.071 3.885 1.006 4.882 2.674.844 1.566.976 3.458.712 5.187-.204 1.657-1.149 3.234-2.644 4.027-2.177 1.139-5.085 1.017-7.017-.59-1.994-1.942-2.461-5.136-1.444-7.678.711-2.207 3-3.661 5.288-3.63zm.234 1.8h-.183c-1.424-.03-2.777.915-3.285 2.237-.732 1.831-.732 4.17.691 5.695 1.17 1.434 3.458 1.597 4.882.438 1.525-1.312 1.83-3.59 1.322-5.451-.275-1.648-1.78-2.929-3.458-2.929zm-18.295-5.807h2.237v14.847h8.848v1.831h-11.085z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/logitech.svg b/assets/lib/simple-icons/icons/logitech.svg
index edf6acda..3d418f87 100644
--- a/assets/lib/simple-icons/icons/logitech.svg
+++ b/assets/lib/simple-icons/icons/logitech.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Logitech icon</title><path d="M24 5.098a1.35 1.35 0 0 1-1.35 1.35 1.35 1.35 0 0 1-1.352-1.35 1.35 1.35 0 0 1 1.351-1.351A1.35 1.35 0 0 1 24 5.097zM16.549 18.31a2.289 2.289 0 0 1-2.322-2.322H12.2c0 2.449 1.9 4.264 4.306 4.264s4.348-1.857 4.348-4.264H18.87c-.043 1.351-1.056 2.322-2.322 2.322zm5.108-2.828h1.984V7.377h-1.984zM0 15.483h1.984V4H0v11.483zm7.135-8.359c-2.449 0-4.307 1.858-4.307 4.264a4.27 4.27 0 0 0 4.307 4.306c2.406 0 4.306-1.858 4.306-4.264S9.583 7.124 7.135 7.124zm0 6.628c-1.31 0-2.322-1.013-2.322-2.364a2.289 2.289 0 0 1 2.322-2.322 2.289 2.289 0 0 1 2.321 2.322c0 1.309-.97 2.364-2.321 2.364zm13.635-4.77V7.377h-2.828c-.464-.21-.929-.253-1.393-.253-2.449 0-4.348 1.858-4.348 4.306 0 2.449 1.9 4.264 4.306 4.264s4.306-1.858 4.306-4.264c0-.844-.254-1.604-.676-2.195zm-4.221 4.77c-1.309 0-2.322-1.013-2.322-2.364a2.289 2.289 0 0 1 2.322-2.322 2.289 2.289 0 0 1 2.322 2.322c0 1.309-1.056 2.364-2.322 2.364Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Logitech</title><path d="M24 5.098a1.35 1.35 0 0 1-1.35 1.35 1.35 1.35 0 0 1-1.352-1.35 1.35 1.35 0 0 1 1.351-1.351A1.35 1.35 0 0 1 24 5.097zM16.549 18.31a2.289 2.289 0 0 1-2.322-2.322H12.2c0 2.449 1.9 4.264 4.306 4.264s4.348-1.857 4.348-4.264H18.87c-.043 1.351-1.056 2.322-2.322 2.322zm5.108-2.828h1.984V7.377h-1.984zM0 15.483h1.984V4H0v11.483zm7.135-8.359c-2.449 0-4.307 1.858-4.307 4.264a4.27 4.27 0 0 0 4.307 4.306c2.406 0 4.306-1.858 4.306-4.264S9.583 7.124 7.135 7.124zm0 6.628c-1.31 0-2.322-1.013-2.322-2.364a2.289 2.289 0 0 1 2.322-2.322 2.289 2.289 0 0 1 2.321 2.322c0 1.309-.97 2.364-2.321 2.364zm13.635-4.77V7.377h-2.828c-.464-.21-.929-.253-1.393-.253-2.449 0-4.348 1.858-4.348 4.306 0 2.449 1.9 4.264 4.306 4.264s4.306-1.858 4.306-4.264c0-.844-.254-1.604-.676-2.195zm-4.221 4.77c-1.309 0-2.322-1.013-2.322-2.364a2.289 2.289 0 0 1 2.322-2.322 2.289 2.289 0 0 1 2.322 2.322c0 1.309-1.056 2.364-2.322 2.364Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/logmein.svg b/assets/lib/simple-icons/icons/logmein.svg
index 1f8e3ebd..d71ab52f 100644
--- a/assets/lib/simple-icons/icons/logmein.svg
+++ b/assets/lib/simple-icons/icons/logmein.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>LogMeIn icon</title><path d="M12 0C5.372 0 0 5.373 0 12s5.372 12 12 12 12-5.373 12-12S18.628 0 12 0zM5.379 4.768h1.74c.147 0 .288.004.424.01a.376.376 0 01.303.152.684.684 0 01.11.364c.007.149.01.31.01.484v12.093c0 .176.004.37.01.587.006.216-.024.377-.091.485-.054.094-.174.17-.363.222a.754.754 0 01-.304.02 2.533 2.533 0 00-.323-.02H5.702c-.149 0-.286-.006-.415-.02a.572.572 0 01-.314-.12.48.48 0 01-.12-.304 4.164 4.164 0 01-.02-.424V6.203c0-.188-.004-.41-.01-.667-.007-.255.024-.437.09-.545a.595.595 0 01.264-.202c.04 0 .078-.004.11-.01a.536.536 0 01.092-.011zm10.527 3.687c.201-.008.386-.001.548.019.565.032 1.053.144 1.464.338.539.257.963.634 1.273 1.133.095.148.168.307.222.475.055.169.11.34.164.515.026.108.042.21.05.304.005.094.023.19.05.284 0 .08.007.134.02.16.027.19.04.385.04.587v5.661c0 .257-.004.503-.01.738-.008.237-.105.39-.294.456a.91.91 0 01-.283.04h-1.415c-.163 0-.307-.01-.435-.03a.418.418 0 01-.293-.173.613.613 0 01-.09-.313 8.825 8.825 0 01-.01-.416v-4.426c0-.5-.02-.961-.06-1.386-.042-.424-.163-.785-.365-1.082a1.427 1.427 0 00-.668-.51c-.186-.095-.488-.156-.827-.156-.397 0-.74.083-.912.207-.139.057-.26.124-.362.197-.433.31-.688.762-.77 1.354-.08.594-.123 1.261-.123 2.002v4.125c0 .121-.02.223-.06.304a.42.42 0 01-.323.262c-.149.027-.33.04-.545.04H10.88c-.15 0-.297-.006-.446-.02-.148-.013-.256-.06-.323-.142-.095-.12-.139-.294-.131-.525.006-.23.009-.446.009-.647V9.6c0-.147.004-.282.01-.403a.507.507 0 01.112-.305.24.24 0 01.132-.09c.06-.02.124-.037.191-.05h.102c.068-.014.138-.022.212-.022h1.06c.109 0 .214.005.316.012.1.006.19.023.271.05.095.04.16.1.193.181.03.072.03.147.054.24.056.23.118.486.291.508.08.01.159-.025.224-.09.031-.022.114-.11.14-.144.095-.114.28-.278.388-.346.078-.058.142-.1.202-.136.192-.134.483-.261.832-.36.014-.006.028-.012.042-.016.112-.036.225-.062.342-.077l.159-.029c.224-.038.442-.06.643-.068Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>LogMeIn</title><path d="M12 0C5.372 0 0 5.373 0 12s5.372 12 12 12 12-5.373 12-12S18.628 0 12 0zM5.379 4.768h1.74c.147 0 .288.004.424.01a.376.376 0 01.303.152.684.684 0 01.11.364c.007.149.01.31.01.484v12.093c0 .176.004.37.01.587.006.216-.024.377-.091.485-.054.094-.174.17-.363.222a.754.754 0 01-.304.02 2.533 2.533 0 00-.323-.02H5.702c-.149 0-.286-.006-.415-.02a.572.572 0 01-.314-.12.48.48 0 01-.12-.304 4.164 4.164 0 01-.02-.424V6.203c0-.188-.004-.41-.01-.667-.007-.255.024-.437.09-.545a.595.595 0 01.264-.202c.04 0 .078-.004.11-.01a.536.536 0 01.092-.011zm10.527 3.687c.201-.008.386-.001.548.019.565.032 1.053.144 1.464.338.539.257.963.634 1.273 1.133.095.148.168.307.222.475.055.169.11.34.164.515.026.108.042.21.05.304.005.094.023.19.05.284 0 .08.007.134.02.16.027.19.04.385.04.587v5.661c0 .257-.004.503-.01.738-.008.237-.105.39-.294.456a.91.91 0 01-.283.04h-1.415c-.163 0-.307-.01-.435-.03a.418.418 0 01-.293-.173.613.613 0 01-.09-.313 8.825 8.825 0 01-.01-.416v-4.426c0-.5-.02-.961-.06-1.386-.042-.424-.163-.785-.365-1.082a1.427 1.427 0 00-.668-.51c-.186-.095-.488-.156-.827-.156-.397 0-.74.083-.912.207-.139.057-.26.124-.362.197-.433.31-.688.762-.77 1.354-.08.594-.123 1.261-.123 2.002v4.125c0 .121-.02.223-.06.304a.42.42 0 01-.323.262c-.149.027-.33.04-.545.04H10.88c-.15 0-.297-.006-.446-.02-.148-.013-.256-.06-.323-.142-.095-.12-.139-.294-.131-.525.006-.23.009-.446.009-.647V9.6c0-.147.004-.282.01-.403a.507.507 0 01.112-.305.24.24 0 01.132-.09c.06-.02.124-.037.191-.05h.102c.068-.014.138-.022.212-.022h1.06c.109 0 .214.005.316.012.1.006.19.023.271.05.095.04.16.1.193.181.03.072.03.147.054.24.056.23.118.486.291.508.08.01.159-.025.224-.09.031-.022.114-.11.14-.144.095-.114.28-.278.388-.346.078-.058.142-.1.202-.136.192-.134.483-.261.832-.36.014-.006.028-.012.042-.016.112-.036.225-.062.342-.077l.159-.029c.224-.038.442-.06.643-.068Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/logstash.svg b/assets/lib/simple-icons/icons/logstash.svg
index 4d432cd2..fa1d0a70 100644
--- a/assets/lib/simple-icons/icons/logstash.svg
+++ b/assets/lib/simple-icons/icons/logstash.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Logstash icon</title><path d="M12.6 7.2V24c-5.2 0-10.8-4-10.8-9.3V0h3.6c3.8 0 7.2 3.4 7.2 7.2zm2.4 6V24h7.2V13.2z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Logstash</title><path d="M13.745 24h8.291v-9.164h-8.29zm-2.618 0h.437v-9.164h-9.6A9.163 9.163 0 0011.127 24m.438-9.164h-9.6V0h.873a8.727 8.727 0 018.727 8.727z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/looker.svg b/assets/lib/simple-icons/icons/looker.svg
new file mode 100644
index 00000000..bc393ecb
--- /dev/null
+++ b/assets/lib/simple-icons/icons/looker.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Looker</title><path d="M11.9475 0c-1.1598.0021-2.0982.944-2.096 2.1038a2.1 2.1 0 00.356 1.166l.895-.8959a.884.884 0 11.565.564l-.895.895c.9593.6478 2.2621.3953 2.91-.564.6478-.9593.3953-2.262-.564-2.91A2.096 2.096 0 0011.9475 0zm-.835 6.1128a3.2629 3.2629 0 00-.653-1.965l-1.164 1.162a1.667 1.667 0 01-.318 2.012l.632 1.5449a3.2819 3.2819 0 001.503-2.754zm-3.2499 1.666h-.03c-.9217.0009-1.6697-.7455-1.6707-1.6673-.001-.9217.7454-1.6697 1.6672-1.6707a1.669 1.669 0 01.9195.275l1.152-1.152c-1.4069-1.141-3.4724-.9257-4.6135.4811s-.9257 3.4723.481 4.6135a3.2799 3.2799 0 002.7275.6652l-.633-1.5439v-.001zm4.1279 1.3359c-.728 0-1.452.106-2.15.315l.922 2.2519c2.6872-.6819 5.4184.9438 6.1002 3.631.6818 2.6873-.9439 5.4184-3.6311 6.1002s-5.4184-.9439-6.1002-3.631c-.5682-2.2394.4655-4.5774 2.5041-5.6643l-.91-2.2449c-3.6908 1.808-5.2173 6.2657-3.4093 9.9567l.0005.001c1.808 3.6909 6.2657 5.2173 9.9567 3.4093l.001-.0005c3.6913-1.8071 5.2187-6.2645 3.4116-9.9558a7.4417 7.4417 0 00-6.6865-4.1696h-.008l-.001.001z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/loom.svg b/assets/lib/simple-icons/icons/loom.svg
index a8c39ea4..c5a81c79 100644
--- a/assets/lib/simple-icons/icons/loom.svg
+++ b/assets/lib/simple-icons/icons/loom.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Loom icon</title><path d="M19.4 4.64C18.02 1.82 15.15 0 12 0 8.76 0 5.98 1.89 4.64 4.6 1.82 5.98 0 8.85 0 12c0 3.24 1.89 6.02 4.6 7.36C5.98 22.18 8.85 24 12 24c3.24 0 6.02-1.89 7.36-4.61C22.18 18.02 24 15.15 24 12c0-3.24-1.89-6.02-4.6-7.36zM12 1.5c1.99 0 3.87.89 5.13 2.37-.45-.08-.91-.12-1.38-.12-3.34 0-6.21 1.99-7.52 4.86h-.01v.03C7.76 9.67 7.5 10.8 7.5 12c0 .46.04.93.12 1.38-1.47-1.26-2.37-3.14-2.37-5.13C5.25 4.53 8.28 1.5 12 1.5zM12 9c.89 0 1.71.18 2.49.48.33.81.51 1.65.51 2.52 0 .89-.18 1.72-.48 2.49-.81.33-1.65.51-2.52.51-.89 0-1.72-.18-2.49-.48C9.18 13.71 9 12.87 9 12c0-.89.18-1.73.48-2.49C10.29 9.18 11.13 9 12 9zM1.5 12c0-1.99.89-3.87 2.37-5.13-.08.45-.12.91-.12 1.38 0 3.34 1.99 6.21 4.86 7.52v.01h.03c1.03.46 2.16.72 3.36.72.47 0 .93-.04 1.38-.12-1.26 1.47-3.14 2.37-5.13 2.37-3.72 0-6.75-3.03-6.75-6.75zM12 22.5c-1.99 0-3.87-.89-5.13-2.37.45.07.91.12 1.38.12 3.34 0 6.21-1.99 7.52-4.86l.02-.03c.46-1.03.72-2.16.72-3.36 0-.47-.04-.93-.12-1.38 1.47 1.26 2.37 3.14 2.37 5.13-.01 3.72-3.04 6.75-6.76 6.75zm8.13-5.37c.08-.45.12-.92.12-1.38 0-3.35-1.99-6.21-4.86-7.52-.02-.02-.02-.02-.03-.02-1.03-.45-2.16-.71-3.36-.71-.47 0-.93.04-1.38.12 1.26-1.47 3.14-2.37 5.13-2.37 3.72 0 6.75 3.03 6.75 6.75 0 1.99-.89 3.87-2.37 5.13z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Loom</title><path d="M24 10.665h-7.018l6.078-3.509-1.335-2.312-6.078 3.509 3.508-6.077L16.843.94l-3.508 6.077V0h-2.67v7.018L7.156.94 4.844 2.275l3.509 6.077-6.078-3.508L.94 7.156l6.078 3.509H0v2.67h7.017L.94 16.844l1.335 2.313 6.077-3.508-3.509 6.077 2.312 1.335 3.509-6.078V24h2.67v-7.017l3.508 6.077 2.312-1.335-3.509-6.078 6.078 3.509 1.335-2.313-6.077-3.508h7.017v-2.67H24zm-12 4.966a3.645 3.645 0 1 1 0-7.29 3.645 3.645 0 0 1 0 7.29z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/loop.svg b/assets/lib/simple-icons/icons/loop.svg
index fd213471..8e4d95e6 100644
--- a/assets/lib/simple-icons/icons/loop.svg
+++ b/assets/lib/simple-icons/icons/loop.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Loop icon</title><path d="M12,0C5.371,0,0,5.371,0,12s5.371,12,12,12s12-5.371,12-12C24.011,5.371,18.629,0,12,0z M12.7,22.611 C6.837,22.611,2.089,17.863,2.089,12S6.837,1.389,12.7,1.389S23.311,6.137,23.311,12S18.563,22.611,12.7,22.611z M7.045,3.413 c-4.747,2.735-6.366,8.795-3.632,13.542c2.735,4.737,8.806,6.366,13.542,3.632c4.747-2.735,6.366-8.806,3.632-13.542 C17.852,2.297,11.792,0.678,7.045,3.413z M16.868,19.034c-4.08,2.352-9.287,0.952-11.639-3.118 c-2.352-4.08-0.952-9.287,3.118-11.639c4.08-2.352,9.287-0.952,11.639,3.118C22.337,11.464,20.948,16.682,16.868,19.034z M5.229,8.084c-2.166,3.741-0.875,8.532,2.866,10.687c3.741,2.166,8.532,0.875,10.698-2.866s0.875-8.532-2.866-10.687 C12.175,3.063,7.384,4.343,5.229,8.084z M18.071,14.702c-1.827,3.161-5.863,4.244-9.025,2.417 c-3.161-1.827-4.244-5.863-2.418-9.025s5.863-4.244,9.025-2.418C18.815,7.493,19.898,11.541,18.071,14.702z M6.093,12 c0,3.271,2.647,5.918,5.918,5.918s5.918-2.647,5.918-5.918s-2.647-5.918-5.918-5.918C8.74,6.082,6.093,8.729,6.093,12z M16.704,11.3c0,2.593-2.1,4.693-4.693,4.693s-4.693-2.1-4.693-4.693s2.1-4.693,4.693-4.693C14.593,6.607,16.704,8.707,16.704,11.3 z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Loop</title><path d="M12,0C5.371,0,0,5.371,0,12s5.371,12,12,12s12-5.371,12-12C24.011,5.371,18.629,0,12,0z M12.7,22.611 C6.837,22.611,2.089,17.863,2.089,12S6.837,1.389,12.7,1.389S23.311,6.137,23.311,12S18.563,22.611,12.7,22.611z M7.045,3.413 c-4.747,2.735-6.366,8.795-3.632,13.542c2.735,4.737,8.806,6.366,13.542,3.632c4.747-2.735,6.366-8.806,3.632-13.542 C17.852,2.297,11.792,0.678,7.045,3.413z M16.868,19.034c-4.08,2.352-9.287,0.952-11.639-3.118 c-2.352-4.08-0.952-9.287,3.118-11.639c4.08-2.352,9.287-0.952,11.639,3.118C22.337,11.464,20.948,16.682,16.868,19.034z M5.229,8.084c-2.166,3.741-0.875,8.532,2.866,10.687c3.741,2.166,8.532,0.875,10.698-2.866s0.875-8.532-2.866-10.687 C12.175,3.063,7.384,4.343,5.229,8.084z M18.071,14.702c-1.827,3.161-5.863,4.244-9.025,2.417 c-3.161-1.827-4.244-5.863-2.418-9.025s5.863-4.244,9.025-2.418C18.815,7.493,19.898,11.541,18.071,14.702z M6.093,12 c0,3.271,2.647,5.918,5.918,5.918s5.918-2.647,5.918-5.918s-2.647-5.918-5.918-5.918C8.74,6.082,6.093,8.729,6.093,12z M16.704,11.3c0,2.593-2.1,4.693-4.693,4.693s-4.693-2.1-4.693-4.693s2.1-4.693,4.693-4.693C14.593,6.607,16.704,8.707,16.704,11.3 z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/lospec.svg b/assets/lib/simple-icons/icons/lospec.svg
new file mode 100644
index 00000000..36090d05
--- /dev/null
+++ b/assets/lib/simple-icons/icons/lospec.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Lospec</title><path d="M4.23 0v24h15.541v-8.4004h-7.1719v3.5996H11.402V0z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/lotpolishairlines.svg b/assets/lib/simple-icons/icons/lotpolishairlines.svg
new file mode 100644
index 00000000..47abc2f4
--- /dev/null
+++ b/assets/lib/simple-icons/icons/lotpolishairlines.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>LOT Polish Airlines</title><path d="M12 0C5.3754 0 0 5.3754 0 12s5.3754 12 12 12 12-5.3754 12-12S18.6246 0 12 0zM.7445 12C.7445 5.7792 5.7792.7445 12 .7445c1.2871 0 2.511.2271 3.6593.6183L9.388 13.9306 1.2745 15.407A11.256 11.256 0 0 1 .7445 12zM12 23.2555c-4.9968 0-9.2366-3.2682-10.7003-7.7728h7.836l7.0788 6.9526c-1.2997.5174-2.7256.8202-4.2145.8202zm4.2271-.8328a2.246 2.246 0 0 0 .6309-1.5647c0-.7066-.328-1.3501-.8454-1.7539l-4.7319-3.6214h11.4195c-1.0346 3.1545-3.4194 5.7034-6.4731 6.94zm5.1609-8.0883h-2.7003l.2019.2902h.9211l.4669.5678h-5.0851c0-1.0094-.8202-1.8422-1.8423-1.8422-.101 0-.2019.0126-.2902.0252l-1.8297.2776 5.4006-8.9842c.2146-.3533.3281-.7571.3281-1.1861 0-.9085-.5047-1.7161-1.2492-2.0946C20.1009 2.9148 23.2555 7.0788 23.2555 12c0 1.1104-.164 2.1829-.4669 3.1924a1.7505 1.7505 0 0 1-1.4006-.858z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/lua.svg b/assets/lib/simple-icons/icons/lua.svg
index a18fc819..12b769b1 100644
--- a/assets/lib/simple-icons/icons/lua.svg
+++ b/assets/lib/simple-icons/icons/lua.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Lua icon</title><path d="M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Lua</title><path d="M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/lubuntu.svg b/assets/lib/simple-icons/icons/lubuntu.svg
index c669830f..7a49c0ba 100644
--- a/assets/lib/simple-icons/icons/lubuntu.svg
+++ b/assets/lib/simple-icons/icons/lubuntu.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Lubuntu icon</title><path d="M12 0C5.373 0 .001 5.374.001 12.001c0 .154.003.307.009.46 3.832-2.705 10.368-7.163 11.987-7.28.537-.68 2.37-1.22 2.704-1.209l-.957 1.198s-.03 1.224-.388 1.462c3.34 2.233 4.944 10.262 5.626 15.126A11.98 11.98 0 0024 12.001C24 5.374 18.629 0 12 0zm-.593 10.842c-.899.027-2.743 2.712-4.825 5.588-1.001 1.382-2.035 2.823-2.988 4.134A11.96 11.96 0 0012 24c2.347 0 4.537-.672 6.386-1.837-1.423-4.35-4.128-11.299-6.897-11.315a.394.394 0 00-.082-.006zM4.679 11.94c-.823-.007-2.86.701-4.607 1.375.178 1.632.681 3.166 1.447 4.535.35-.53.716-1.077 1.08-1.61 1.386-2.038 2.729-3.838 2.413-4.21-.056-.062-.171-.09-.333-.09zm2.165 1.025c-.664.1-3.064 3.09-4.97 5.478.31.487.653.948 1.028 1.384 1.96-3.21 4.153-6.707 4.035-6.851a.16.16 0 00-.093-.011Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Lubuntu</title><path d="M12 0C5.373 0 .001 5.374.001 12.001c0 .154.003.307.009.46 3.832-2.705 10.368-7.163 11.987-7.28.537-.68 2.37-1.22 2.704-1.209l-.957 1.198s-.03 1.224-.388 1.462c3.34 2.233 4.944 10.262 5.626 15.126A11.98 11.98 0 0024 12.001C24 5.374 18.629 0 12 0zm-.593 10.842c-.899.027-2.743 2.712-4.825 5.588-1.001 1.382-2.035 2.823-2.988 4.134A11.96 11.96 0 0012 24c2.347 0 4.537-.672 6.386-1.837-1.423-4.35-4.128-11.299-6.897-11.315a.394.394 0 00-.082-.006zM4.679 11.94c-.823-.007-2.86.701-4.607 1.375.178 1.632.681 3.166 1.447 4.535.35-.53.716-1.077 1.08-1.61 1.386-2.038 2.729-3.838 2.413-4.21-.056-.062-.171-.09-.333-.09zm2.165 1.025c-.664.1-3.064 3.09-4.97 5.478.31.487.653.948 1.028 1.384 1.96-3.21 4.153-6.707 4.035-6.851a.16.16 0 00-.093-.011Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/lufthansa.svg b/assets/lib/simple-icons/icons/lufthansa.svg
index 85858224..9830ecca 100644
--- a/assets/lib/simple-icons/icons/lufthansa.svg
+++ b/assets/lib/simple-icons/icons/lufthansa.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Lufthansa icon</title><path d="M24,12c0-6.648-5.352-12-12-12C5.376,0,0,5.352,0,12c0,6.624,5.376,12,12,12C18.648,24,24,18.624,24,12z M23.136,12c0,6.12-4.992,11.136-11.136,11.136C5.88,23.136,0.864,18.121,0.864,12C0.864,5.856,5.88,0.864,12,0.864 C18.144,0.864,23.136,5.856,23.136,12z M16.248,11.28c-0.264,0-0.6,0-1.032,0.024l0.312-0.528h0.504c1.8,0,3.144,0.096,4.368,0.312 l0.552-0.528c-1.368-0.24-3.024-0.384-4.704-0.384H15.84l0.264-0.504h0.456c1.752,0,3.336,0.144,4.872,0.432l0.576-0.552 c-1.728-0.336-3.576-0.503-5.568-0.503c-0.849,0.003-1.698,0.043-2.544,0.12c-0.96,2.063-2.496,3.264-4.224,3.24 C9,12.384,8.159,12.097,7.08,11.52l-1.008-0.576l0.312-0.288l2.328,1.008l0.504-0.384L4.512,9.144l-0.72,0.552L2.112,9l0.024,0.696 c2.256,1.032,3.192,1.608,5.568,3.312c3.096,2.208,5.856,3.408,9.696,4.176l1.008-0.96h-0.24c-2.544,0-4.824-0.84-6.144-2.256 c1.104-0.672,2.471-0.983,4.368-0.983c0.504,0,1.224,0.047,1.896,0.119l0.576-0.552c-0.9-0.11-1.805-0.166-2.712-0.168 c-0.609-0.001-1.217,0.023-1.824,0.072l0.432-0.528c0.511-0.03,1.024-0.046,1.536-0.048c1.272,0,2.112,0.048,3.072,0.192 l0.552-0.528C18.912,11.377,17.52,11.28,16.248,11.28z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Lufthansa</title><path d="M24,12c0-6.648-5.352-12-12-12C5.376,0,0,5.352,0,12c0,6.624,5.376,12,12,12C18.648,24,24,18.624,24,12z M23.136,12c0,6.12-4.992,11.136-11.136,11.136C5.88,23.136,0.864,18.121,0.864,12C0.864,5.856,5.88,0.864,12,0.864 C18.144,0.864,23.136,5.856,23.136,12z M16.248,11.28c-0.264,0-0.6,0-1.032,0.024l0.312-0.528h0.504c1.8,0,3.144,0.096,4.368,0.312 l0.552-0.528c-1.368-0.24-3.024-0.384-4.704-0.384H15.84l0.264-0.504h0.456c1.752,0,3.336,0.144,4.872,0.432l0.576-0.552 c-1.728-0.336-3.576-0.503-5.568-0.503c-0.849,0.003-1.698,0.043-2.544,0.12c-0.96,2.063-2.496,3.264-4.224,3.24 C9,12.384,8.159,12.097,7.08,11.52l-1.008-0.576l0.312-0.288l2.328,1.008l0.504-0.384L4.512,9.144l-0.72,0.552L2.112,9l0.024,0.696 c2.256,1.032,3.192,1.608,5.568,3.312c3.096,2.208,5.856,3.408,9.696,4.176l1.008-0.96h-0.24c-2.544,0-4.824-0.84-6.144-2.256 c1.104-0.672,2.471-0.983,4.368-0.983c0.504,0,1.224,0.047,1.896,0.119l0.576-0.552c-0.9-0.11-1.805-0.166-2.712-0.168 c-0.609-0.001-1.217,0.023-1.824,0.072l0.432-0.528c0.511-0.03,1.024-0.046,1.536-0.048c1.272,0,2.112,0.048,3.072,0.192 l0.552-0.528C18.912,11.377,17.52,11.28,16.248,11.28z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/lumen.svg b/assets/lib/simple-icons/icons/lumen.svg
index e0e1ed4a..fc6e8dbf 100644
--- a/assets/lib/simple-icons/icons/lumen.svg
+++ b/assets/lib/simple-icons/icons/lumen.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Lumen icon</title><path d="M11.652 0a.75.75 0 0 0-.342.072l-4.878 2.23a.75.75 0 1 0 .624 1.366l4.878-2.23A.75.75 0 0 0 11.652 0zm5.624.354a.75.75 0 0 0-.341.074L6.428 5.306a.75.75 0 0 0 .632 1.362L17.566 1.79a.75.75 0 0 0-.29-1.436zm0 3.002a.75.75 0 0 0-.341.074L6.428 8.308A.75.75 0 0 0 7.06 9.67l10.506-4.88a.75.75 0 0 0-.29-1.435zm0 3.002a.75.75 0 0 0-.341.074L6.428 11.31a.75.75 0 0 0 .632 1.361l10.506-4.878a.75.75 0 0 0-.29-1.435zm.009 3.002a.75.75 0 0 0-.342.07l-3.753 1.688a.75.75 0 0 0-.442.685v3.518a.75.75 0 0 0 .001.047h-1.503a.75.75 0 0 0 0-.047v-2.58a.75.75 0 0 0-.761-.761.75.75 0 0 0-.74.761v2.58a.75.75 0 0 0 .002.047h-.94a.461.461 0 0 0-.47.555l.19 1.14a.687.687 0 0 0 .656.556h2.28l-2.537.476a.375.375 0 1 0 .139.737l6.003-1.126a.375.375 0 0 0 .307-.41.625.625 0 0 0 .092-.232l.19-1.141a.461.461 0 0 0-.47-.555h-.94a.75.75 0 0 0 .002-.047v-3.033l3.31-1.49a.75.75 0 0 0-.274-1.438zm-2.292 9.384a.375.375 0 0 0-.063.007l-6.004 1.126a.375.375 0 1 0 .139.737l6.003-1.125a.375.375 0 0 0-.075-.745zm0 1.876a.375.375 0 0 0-.063.008l-6.004 1.125a.375.375 0 1 0 .139.737l6.003-1.125a.375.375 0 0 0-.075-.745zm-.743 1.876a.375.375 0 0 0-.064.006l-4.471.751a.375.375 0 1 0 .124.74l4.472-.75a.375.375 0 0 0-.061-.747z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Lumen</title><path d="M11.649 0a.75.75 0 00-.342.072l-4.878 2.23a.75.751 0 10.624 1.366l4.878-2.23A.75.75 0 0011.649 0zm5.624.354a.75.75 0 00-.341.074L6.425 5.306a.75.75 0 00.632 1.362L17.563 1.79a.75.75 0 00-.29-1.436zm0 3.002a.75.75 0 00-.341.074L6.425 8.31a.75.75 0 00.632 1.362l10.506-4.88a.75.75 0 00-.29-1.436zm0 3.002a.75.75 0 00-.341.074L6.425 11.311a.75.75 0 00.632 1.361l10.506-4.878a.75.75 0 00-.29-1.436zm.009 3.003a.75.75 0 00-.342.07l-3.753 1.688a.75.75 0 00-.442.685v3.518a.75.75 0 00.001.047h-1.503a.75.75 0 000-.047v-2.58a.75.75 0 00-.761-.761.75.75 0 00-.74.761v2.58a.75.75 0 00.002.047h-.94a.461.461 0 00-.47.555l.19 1.14a.687.687 0 00.656.557h2.28l-2.537.476a.375.375 0 10.139.737l6.003-1.126a.375.375 0 00.307-.41.625.625 0 00.092-.232l.19-1.142a.461.461 0 00-.47-.555h-.94a.75.75 0 00.002-.047V12.29l3.31-1.49a.75.75 0 00-.274-1.438zm-2.292 9.385a.375.375 0 00-.063.007l-6.004 1.126a.375.375 0 10.139.737l6.003-1.125a.375.375 0 00-.075-.745zm0 1.876a.375.375 0 00-.063.008l-6.004 1.125a.375.375 0 10.139.737l6.003-1.125a.375.375 0 00-.075-.745zm-.743 1.876a.375.375 0 00-.064.006l-4.471.751a.375.375 0 10.124.74l4.472-.75a.375.375 0 00-.061-.747z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/lunacy.svg b/assets/lib/simple-icons/icons/lunacy.svg
new file mode 100644
index 00000000..7176b310
--- /dev/null
+++ b/assets/lib/simple-icons/icons/lunacy.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Lunacy</title><path d="M12.031 6h-6v12h11.996v-6l-5.996 5.996Zm6.563 2.309a4.013 4.013 0 0 1-2.371-2.375 4.03 4.03 0 0 1-2.375 2.375 4.04 4.04 0 0 1 2.375 2.375 4.013 4.013 0 0 1 2.37-2.375ZM0 9.602c0-3.364 0-5.043.652-6.325A6.044 6.044 0 0 1 3.277.652C4.56 0 6.238 0 9.602 0h4.796c3.364 0 5.043 0 6.325.652a6.044 6.044 0 0 1 2.625 2.625C24 4.56 24 6.238 24 9.602v4.796c0 3.364 0 5.043-.652 6.325a6.044 6.044 0 0 1-2.625 2.625C19.44 24 17.762 24 14.398 24H9.602c-3.364 0-5.043 0-6.325-.652a6.044 6.044 0 0 1-2.625-2.625C0 19.44 0 17.762 0 14.398Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/lydia.svg b/assets/lib/simple-icons/icons/lydia.svg
new file mode 100644
index 00000000..b1835324
--- /dev/null
+++ b/assets/lib/simple-icons/icons/lydia.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Lydia</title><path d="M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0zm5.895 17.611a.421.421 0 01-.168.035h-1.155a.608.608 0 01-.56-.377l-4-9.613-3.991 9.607a.61.61 0 01-.56.377H6.273a.42.42 0 01-.385-.59L10.91 5.575a.793.793 0 01.726-.475h.748a.792.792 0 01.726.48l5.003 11.482a.42.42 0 01-.218.549z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/lyft.svg b/assets/lib/simple-icons/icons/lyft.svg
index 533ea151..51ea92bc 100644
--- a/assets/lib/simple-icons/icons/lyft.svg
+++ b/assets/lib/simple-icons/icons/lyft.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Lyft icon</title><path d="M24 11.122v-3.512h-1.253c-0.524-2.76-3.424-4.575-6.34-3.483-1.624 0.606-2.944 2.546-2.944 4.282v7.981h0.14c0.003 0 0.003 0 0.006 0s0.003 0 0.006 0c0.904-0.038 1.75-0.421 2.38-1.077 0.632-0.659 0.981-1.522 0.981-2.432h1.463v-3.515h-1.463v-0.966c0-0.375 0.199-0.726 0.527-0.907 0.899-0.501 1.815 0.143 1.815 0.995v3.22c0 1.273 0.48 2.456 1.352 3.331 0.834 0.834 1.964 1.314 3.179 1.352 0 0 0.003 0 0.003 0s0 0 0.003 0v0h0.143v-3.512c0 0 0 0 0 0-0.656-0.003-1.171-0.53-1.171-1.171v-0.585zM3.512 13.463v-9.366h-3.512v8.78c0 2.412 1.592 3.512 3.073 3.512v0c0.442 0 0.884-0.102 1.279-0.287 0.059-0.026 0.152-0.085 0.152-0.085s-0.088-0.094-0.126-0.135c-0.562-0.641-0.866-1.472-0.866-2.42zM9.073 12.375c0 0.146-0.070 0.287-0.19 0.369-0.471 0.331-0.981-0.003-0.981-0.451v-4.683h-3.512v5.854c0 1.613 1.314 2.927 2.927 2.927 0.697 0 1.373-0.249 1.902-0.702-0.056 0.433-0.293 0.79-0.691 1.039-0.372 0.234-0.858 0.357-1.402 0.357-0.562 0-1.133-0.132-1.651-0.38 0 0-0.094-0.044-0.211-0.111v3.12c0.781 0.316 1.639 0.483 2.467 0.483 1.311 0 2.508-0.41 3.372-1.156 0.969-0.834 1.481-2.055 1.481-3.527v-7.902h-3.512z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Lyft</title><path d="M4.38 15.883c.036.042.125.135.125.135s-.094.059-.152.086a3.046 3.046 0 0 1-1.28.286C1.593 16.39 0 15.29 0 12.878v-8.78h3.512v9.365c0 .95.306 1.781.867 2.42zM24 11.122V7.61h-1.253c-.524-2.76-3.425-4.574-6.341-3.484-1.624.607-2.943 2.548-2.943 4.282v7.979a1608.8 1608.8 0 0 0 .153 0 3.495 3.495 0 0 0 2.38-1.077c.632-.658.98-1.522.98-2.432h1.463V9.366h-1.463V8.4c0-.375.198-.726.526-.909.9-.5 1.815.143 1.815.996v3.22c0 1.273.48 2.456 1.354 3.329a4.666 4.666 0 0 0 3.178 1.351H24v-3.51a1.17 1.17 0 0 1-1.17-1.17v-.586H24zm-14.927 1.17a.585.585 0 0 1-1.17 0V7.61H4.39v5.853a2.928 2.928 0 0 0 4.83 2.224c-.055.433-.294.792-.69 1.04-.373.234-.857.357-1.402.357a3.83 3.83 0 0 1-1.65-.382s-.093-.044-.21-.11v3.119a6.65 6.65 0 0 0 2.468.484c1.312 0 2.51-.41 3.371-1.155.967-.836 1.478-2.056 1.478-3.528V7.61H9.073v4.683z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/maas.svg b/assets/lib/simple-icons/icons/maas.svg
index adf08cf9..3c63a84f 100644
--- a/assets/lib/simple-icons/icons/maas.svg
+++ b/assets/lib/simple-icons/icons/maas.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>MAAS icon</title><path d="M12 0C5.383 0 0 5.384 0 12s5.383 12 12 12 12-5.384 12-12S18.617 0 12 0zM6.343 6.257h11.314c.284 0 .514.23.514.515v.685c0 .285-.23.515-.514.515H6.343a.515.515 0 0 1-.515-.515v-.685c0-.284.23-.515.515-.515zm0 3.257h11.314c.284 0 .514.23.514.515v.685c0 .285-.23.515-.514.515H6.343a.515.515 0 0 1-.515-.515v-.685c0-.284.23-.515.515-.515zm0 3.257h11.314c.284 0 .514.23.514.515v.685c0 .285-.23.515-.514.515H6.343a.515.515 0 0 1-.514-.515v-.685c0-.284.23-.515.514-.515zm0 3.258h11.314c.284 0 .514.23.514.513v.687c0 .284-.23.515-.514.515H6.343a.515.515 0 0 1-.514-.515v-.687c0-.284.23-.513.514-.513z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>MAAS</title><path d="M12 0C5.383 0 0 5.384 0 12s5.383 12 12 12 12-5.384 12-12S18.617 0 12 0zM6.343 6.257h11.314c.284 0 .514.23.514.515v.685c0 .285-.23.515-.514.515H6.343a.515.515 0 0 1-.515-.515v-.685c0-.284.23-.515.515-.515zm0 3.257h11.314c.284 0 .514.23.514.515v.685c0 .285-.23.515-.514.515H6.343a.515.515 0 0 1-.515-.515v-.685c0-.284.23-.515.515-.515zm0 3.257h11.314c.284 0 .514.23.514.515v.685c0 .285-.23.515-.514.515H6.343a.515.515 0 0 1-.514-.515v-.685c0-.284.23-.515.514-.515zm0 3.258h11.314c.284 0 .514.23.514.513v.687c0 .284-.23.515-.514.515H6.343a.515.515 0 0 1-.514-.515v-.687c0-.284.23-.513.514-.513z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/macos.svg b/assets/lib/simple-icons/icons/macos.svg
new file mode 100644
index 00000000..87630c45
--- /dev/null
+++ b/assets/lib/simple-icons/icons/macos.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>macOS</title><path d="M0 14.727h.941v-2.453c0-.484.318-.835.771-.835.439 0 .71.276.71.722v2.566h.915V12.25c0-.48.31-.812.764-.812.46 0 .718.28.718.77v2.518h.94v-2.748c0-.801-.517-1.334-1.307-1.334-.578 0-1.054.31-1.247.805h-.023c-.147-.514-.552-.805-1.118-.805-.545 0-.968.306-1.142.771H.903v-.695H0v4.006zm7.82-.646c-.408 0-.68-.208-.68-.537 0-.318.26-.522.714-.552l.926-.057v.307c0 .483-.427.839-.96.839zm-.284.71c.514 0 1.017-.268 1.248-.703h.018v.639h.908v-2.76c0-.804-.647-1.33-1.64-1.33-1.021 0-1.66.537-1.701 1.285h.873c.06-.332.344-.548.79-.548.464 0 .748.242.748.662v.287l-1.058.06c-.976.061-1.524.488-1.524 1.199 0 .721.564 1.209 1.338 1.209zm6.305-2.642c-.065-.843-.719-1.512-1.777-1.512-1.164 0-1.92.805-1.92 2.087 0 1.3.756 2.082 1.928 2.082 1.005 0 1.697-.59 1.772-1.485h-.888c-.087.453-.397.725-.873.725-.597 0-.982-.483-.982-1.322 0-.824.381-1.323.975-1.323.502 0 .8.321.876.748h.889zm2.906-2.967c-1.591 0-2.589 1.085-2.589 2.82 0 1.735.998 2.816 2.59 2.816 1.586 0 2.584-1.081 2.584-2.816 0-1.735-.997-2.82-2.585-2.82zm0 .832c.971 0 1.591.77 1.591 1.988 0 1.213-.62 1.984-1.59 1.984-.976 0-1.592-.77-1.592-1.984 0-1.217.616-1.988 1.591-1.988zm2.982 3.178c.042 1.006.866 1.626 2.12 1.626 1.32 0 2.151-.65 2.151-1.686 0-.813-.469-1.27-1.576-1.523l-.627-.144c-.67-.158-.945-.37-.945-.733 0-.453.415-.756 1.032-.756.623 0 1.05.306 1.096.817h.93c-.023-.96-.817-1.61-2.019-1.61-1.187 0-2.03.653-2.03 1.62 0 .78.477 1.263 1.482 1.494l.707.166c.688.163.967.39.967.782 0 .454-.457.779-1.115.779-.665 0-1.167-.329-1.228-.832h-.945z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/macys.svg b/assets/lib/simple-icons/icons/macys.svg
index 30b4faec..876a67dd 100644
--- a/assets/lib/simple-icons/icons/macys.svg
+++ b/assets/lib/simple-icons/icons/macys.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Macy’s icon</title><path d="M12.015.624L9.19 9.293H0l7.445 5.384-2.819 8.673L12 17.986l7.422 5.393-2.835-8.713L24 9.292h-9.162L12.015.622v.002z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Macy's</title><path d="M12.015.624L9.19 9.293H0l7.445 5.384-2.819 8.673L12 17.986l7.422 5.393-2.835-8.713L24 9.292h-9.162L12.015.622v.002z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/magasinsu.svg b/assets/lib/simple-icons/icons/magasinsu.svg
new file mode 100644
index 00000000..35868512
--- /dev/null
+++ b/assets/lib/simple-icons/icons/magasinsu.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Magasins U</title><path d="M17.49 7.179h-3.51c-.642 0-.73.26-.73.654v5.7c-.044 1.305-.53 1.723-1.46 1.723-.956 0-1.444-.44-1.464-1.828V7.833c0-.393-.092-.654-.734-.654h-3.51v6.78c0 1.5.29 2.134.912 2.778.962 1 2.645 1.423 4.794 1.423 2.15 0 3.834-.422 4.798-1.423.62-.644.911-1.278.911-2.778zM14.26.906C8.425-.23 2.7 3.809 1.47 9.924.246 16.042 3.98 21.92 9.817 23.054c5.84 1.132 11.565-2.905 12.792-9.02C23.834 7.917 20.1 2.038 14.261.904m-2.465 21.384c-5.664 0-10.253-4.582-10.253-10.234 0-5.65 4.59-10.23 10.253-10.23 5.661 0 10.253 4.58 10.253 10.23 0 5.652-4.592 10.234-10.253 10.234M.026 11.136C-.4 17.289 4.367 22.646 10.869 23.2c-.348-.03-.699-.08-1.052-.147C3.981 21.92.244 16.04 1.471 9.924 2.69 3.85 8.346-.172 14.14.884c-.488-.094-.98-.16-1.486-.196C6.041.235.46 4.91.028 11.138M13.388.755a7.678 7.678 0 0 0-.774-.037 9.913 9.913 0 0 1 1.648.186c5.836 1.134 9.573 7.01 8.346 13.128-1.228 6.114-6.953 10.153-12.79 9.02a10.052 10.052 0 0 1-.767-.182c.992.306 2.06.473 3.183.473 1.126 0 1.996-.152 2.827-.34 3.604-.816 6.523-3.342 7.98-6.506.635-1.421.961-2.96.959-4.515-.001-6.26-4.916-10.743-10.613-11.226"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/magento.svg b/assets/lib/simple-icons/icons/magento.svg
index fe656cb9..9b8c52ff 100644
--- a/assets/lib/simple-icons/icons/magento.svg
+++ b/assets/lib/simple-icons/icons/magento.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Magento icon</title><path d="M12 24l-4.455-2.572v-12l2.97-1.715v12.001l1.485.902 1.485-.902V7.713l2.971 1.715v12L12 24zM22.391 6v12l-2.969 1.714V7.713L12 3.43 4.574 7.713v12.001L1.609 18V6L12 0l10.391 6z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Magento</title><path d="M12 24l-4.455-2.572v-12l2.97-1.715v12.001l1.485.902 1.485-.902V7.713l2.971 1.715v12L12 24zM22.391 6v12l-2.969 1.714V7.713L12 3.43 4.574 7.713v12.001L1.609 18V6L12 0l10.391 6z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/magisk.svg b/assets/lib/simple-icons/icons/magisk.svg
index d789a69d..5e0ef842 100644
--- a/assets/lib/simple-icons/icons/magisk.svg
+++ b/assets/lib/simple-icons/icons/magisk.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 24 24"><title>Magisk icon</title><path d="M10.857 14.458s.155.921-.034 2.952c-.236 2.546.97 6.59.97 6.59s1.645-4.052 1.358-6.67c-.236-2.152.107-2.904.034-2.803-1.264 1.746-2.328-.069-2.328-.069zM13.939 16.643c.206 1.591-.023 2.462-.32 4.164-.15.861 3.068-2.589 4.302-4.645.206-.343-1.18 1.337-2.551.137-.951-.832-1.114-1.085-1.853-1.808-.249-.244.277 1.014.423 2.151zM10.427 14.618c-.739.723-.903.976-1.853 1.808-1.371 1.2-2.757-.48-2.551-.137 1.234 2.057 4.452 5.506 4.302 4.645-.297-1.703-.526-2.574-.32-4.164.147-1.137.673-2.395.423-2.151zM13.593 11.779c1.504.434 2.088 2.523 3.606 2.781.314.053.667.148 1.079.128.77-.037 1.744-.472 3.045-2.318.385-.546-.955 3.514-4.313 3.563-2.46.036-2.747-2.408-4.387-2.482-.592-.027-.629-1.156-.629-1.156s.706-.774 1.598-.517zM10.407 11.767c-1.504.434-2.088 2.523-3.606 2.781-.314.053-.667.148-1.079.128-.77-.037-1.744-.472-3.045-2.318-.385-.546.955 3.514 4.313 3.563 2.46.036 2.747-2.408 4.387-2.482.592-.027.629-1.156.629-1.156s-.706-.774-1.598-.517zM16.033 11.747c1.513 1.146 1.062 2.408 1.911 2.048 2.859-1.212 2.359-7.434 2.128-6.682-1.303 4.242-4.143 4.48-6.876 2.528-.534-.381 1.985 1.459 2.837 2.105zM10.793 9.641C8.06 11.592 5.22 11.355 3.917 7.113c-.231-.752-.731 5.469 2.128 6.682.849.36.398-.902 1.911-2.048.852-.646 3.371-2.486 2.837-2.105zM16.319 10.225c3.3-.136 3.909-5.545 3.65-4.885-1.165 2.963-5.574 1.848-5.995 3.718-.083.367.747 1.233 2.345 1.167zM10.015 9.058c-.421-1.87-4.831-.755-5.995-3.718-.259-.66.35 4.749 3.65 4.885 1.599.066 2.428-.8 2.345-1.167zM13.768 8.234s1.794-.964 3.33-1.384c1.435-.393 2.512-1.359 2.631-2.38.089-.76-1.11-2.197-1.11-2.197s-.841 2.334-1.945 3.501c-1.201 1.27-.745 1.099-2.906 2.46zM7.315 5.774C6.211 4.607 5.37 2.273 5.37 2.273S4.171 3.709 4.26 4.47c.12 1.021 1.196 1.987 2.631 2.38 1.536.421 3.33 1.384 3.33 1.384-2.162-1.361-1.705-1.19-2.906-2.46zM13.55 8.086c1.943-1.594 2.976-3.673 4.657-5.949.317-.429-1.419-1.465-2.105-1.533S14.84 3.057 14.775 4.54c-.059 1.354-1.486 3.761-1.224 3.547zM9.214 4.539C9.149 3.056 8.573.535 7.887.603S5.465 1.707 5.782 2.136c1.681 2.276 2.713 4.356 4.657 5.949.261.214-1.165-2.193-1.224-3.547zM13.745 2.937c.137-1.098.631-1.9 1.613-2.574-.868-.29-1.591-.526-1.968-.217s-1.403 1.342-1.266 3.023.007 7.962.305 7.846c.16-4.302 1.522-5.538 1.316-8.077zM11.559 11.014c.297.116.167-6.165.305-7.846S10.976.454 10.598.145C10.221-.164 9.499.072 8.63.362c.983.674 1.476 1.476 1.613 2.574-.206 2.539 1.156 3.775 1.316 8.077z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Magisk</title><path d="M10.857 14.458s.155.921-.034 2.952c-.236 2.546.97 6.59.97 6.59s1.645-4.052 1.358-6.67c-.236-2.152.107-2.904.034-2.803-1.264 1.746-2.328-.069-2.328-.069zm3.082 2.185c.206 1.591-.023 2.462-.32 4.164-.15.861 3.068-2.589 4.302-4.645.206-.343-1.18 1.337-2.55.137-.952-.832-1.115-1.085-1.854-1.808-.249-.244.277 1.014.423 2.151zm-3.512-2.025c-.739.723-.903.976-1.853 1.808-1.371 1.2-2.757-.48-2.551-.137 1.234 2.057 4.452 5.506 4.302 4.645-.297-1.703-.526-2.574-.32-4.164.147-1.137.673-2.395.423-2.15zm3.166-2.839c1.504.434 2.088 2.523 3.606 2.781.314.053.667.148 1.08.128.77-.037 1.743-.472 3.044-2.318.385-.546-.955 3.514-4.313 3.563-2.46.036-2.747-2.408-4.387-2.482-.592-.027-.629-1.156-.629-1.156s.706-.774 1.598-.517zm-3.186-.012c-1.504.434-2.088 2.523-3.606 2.781-.314.053-.667.148-1.08.128-.77-.037-1.743-.472-3.044-2.318-.385-.546.955 3.514 4.313 3.563 2.46.036 2.747-2.408 4.387-2.482.592-.027.629-1.156.629-1.156s-.706-.774-1.598-.517zm5.626-.02c1.513 1.146 1.062 2.408 1.911 2.048 2.86-1.212 2.36-7.434 2.128-6.682-1.303 4.242-4.143 4.48-6.876 2.528-.534-.38 1.985 1.46 2.837 2.105zm-5.24-2.106C8.06 11.592 5.22 11.355 3.917 7.113c-.231-.752-.731 5.47 2.128 6.682.849.36.398-.902 1.91-2.048.853-.646 3.372-2.486 2.838-2.105zm5.526.584c3.3-.136 3.91-5.545 3.65-4.885-1.165 2.963-5.574 1.848-5.995 3.718-.083.367.747 1.233 2.345 1.167zm-6.304-1.167c-.421-1.87-4.831-.755-5.995-3.718-.26-.66.35 4.75 3.65 4.885 1.599.066 2.428-.8 2.345-1.167zm3.753-.824s1.794-.964 3.33-1.384c1.435-.393 2.512-1.359 2.631-2.38.09-.76-1.11-2.197-1.11-2.197s-.84 2.334-1.945 3.501c-1.2 1.27-.745 1.1-2.906 2.46zm-6.453-2.46c-1.104-1.167-1.945-3.5-1.945-3.5S4.17 3.708 4.26 4.47c.12 1.021 1.196 1.987 2.63 2.38 1.537.421 3.331 1.384 3.331 1.384-2.162-1.36-1.705-1.19-2.906-2.46zm6.235 2.312c1.943-1.594 2.976-3.673 4.657-5.949.317-.429-1.419-1.465-2.105-1.533-.686-.068-1.262 2.453-1.327 3.936-.059 1.354-1.486 3.761-1.224 3.547zM9.214 4.54C9.149 3.056 8.573.535 7.887.603 7.2.671 5.465 1.707 5.782 2.136c1.68 2.276 2.713 4.356 4.657 5.95.261.213-1.165-2.194-1.224-3.548zm4.531-1.602c.137-1.098.631-1.9 1.613-2.574-.868-.29-1.591-.526-1.968-.217-.377.309-1.403 1.342-1.266 3.023s.007 7.962.305 7.846c.16-4.302 1.522-5.538 1.316-8.077zm-2.186 8.077c.297.116.167-6.165.305-7.846.138-1.681-.888-2.714-1.266-3.023-.377-.309-1.1-.073-1.968.217.983.674 1.476 1.476 1.613 2.574-.206 2.54 1.156 3.775 1.316 8.077z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/mail-dot-ru.svg b/assets/lib/simple-icons/icons/mail-dot-ru.svg
deleted file mode 100644
index aa7342df..00000000
--- a/assets/lib/simple-icons/icons/mail-dot-ru.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Mail.Ru icon</title><path d="M11.585 5.267c1.834 0 3.558.811 4.824 2.08v.004c0-.609.41-1.068.979-1.068h.145c.891 0 1.073.842 1.073 1.109l.005 9.475c-.063.621.64.941 1.029.543 1.521-1.564 3.342-8.038-.946-11.79-3.996-3.497-9.357-2.921-12.209-.955-3.031 2.091-4.971 6.718-3.086 11.064 2.054 4.74 7.931 6.152 11.424 4.744 1.769-.715 2.586 1.676.749 2.457-2.776 1.184-10.502 1.064-14.11-5.188C-.977 13.521-.847 6.093 5.62 2.245 10.567-.698 17.09.117 21.022 4.224c4.111 4.294 3.872 12.334-.139 15.461-1.816 1.42-4.516.037-4.498-2.031l-.019-.678c-1.265 1.256-2.948 1.988-4.782 1.988-3.625 0-6.813-3.189-6.813-6.812 0-3.659 3.189-6.885 6.814-6.885zm4.561 6.623c-.137-2.653-2.106-4.249-4.484-4.249h-.09c-2.745 0-4.268 2.159-4.268 4.61 0 2.747 1.842 4.481 4.256 4.481 2.693 0 4.464-1.973 4.592-4.306l-.006-.536z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/mailchimp.svg b/assets/lib/simple-icons/icons/mailchimp.svg
index 620d2c30..d5731852 100644
--- a/assets/lib/simple-icons/icons/mailchimp.svg
+++ b/assets/lib/simple-icons/icons/mailchimp.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>MailChimp icon</title><path d="M17.98 11.341c.165-.021.332-.021.497 0 .089-.205.104-.558.024-.942-.12-.571-.28-.917-.613-.863-.333.054-.346.468-.226 1.039.067.321.186.596.319.766zM15.12 11.793c.239.105.385.174.442.114.037-.038.026-.11-.03-.203-.118-.193-.36-.388-.617-.497a1.677 1.677 0 0 0-1.634.196c-.16.117-.31.28-.29.378.008.032.031.056.087.064.132.015.591-.217 1.12-.25.374-.023.684.094.922.199zm-.48.274c-.31.05-.481.152-.591.247-.094.082-.152.173-.152.237l.024.057.051.02c.07 0 .228-.064.228-.064a1.975 1.975 0 0 1 1-.104c.155.018.23.028.263-.026.01-.015.023-.049-.008-.1-.073-.118-.387-.317-.814-.266zM17.015 13.073c.21.104.442.063.518-.09.076-.155-.034-.364-.245-.467-.21-.104-.442-.063-.518.09-.076.155.034.364.245.467zm1.355-1.186c-.171-.003-.314.185-.317.421-.004.235.131.428.302.431.171.003.314-.185.318-.42.003-.235-.132-.428-.303-.432zM6.866 16.13c-.042-.053-.112-.037-.18-.021a.646.646 0 0 1-.16.022.347.347 0 0 1-.292-.148c-.078-.12-.073-.299.012-.504l.04-.092c.138-.308.368-.825.11-1.317-.194-.37-.511-.602-.892-.65a1.145 1.145 0 0 0-.983.355c-.379.418-.438.988-.364 1.19.027.073.069.094.099.098.065.009.16-.038.22-.2l.017-.052c.026-.085.076-.243.157-.37a.688.688 0 0 1 .953-.2c.266.175.368.5.255.811-.059.161-.154.468-.133.72.043.512.357.717.638.74.274.01.466-.145.514-.258.03-.066.005-.107-.01-.125v.001zM22.691 15.194c-.01-.037-.078-.286-.172-.586l-.19-.51c.375-.563.381-1.066.332-1.35-.054-.353-.2-.654-.496-.964-.295-.312-.9-.63-1.75-.868l-.445-.124c-.002-.018-.023-1.053-.043-1.497-.013-.32-.041-.822-.196-1.315-.185-.669-.507-1.253-.91-1.627 1.11-1.152 1.803-2.422 1.801-3.511-.003-2.095-2.571-2.73-5.736-1.416l-.67.285a666.1 666.1 0 0 0-1.23-1.207C9.376-2.65-1.905 9.912 1.701 12.964l.789.668a3.885 3.885 0 0 0-.22 1.793c.085.84.517 1.644 1.218 2.266.665.59 1.54.965 2.389.964 1.403 3.24 4.61 5.228 8.37 5.34 4.034.12 7.42-1.776 8.84-5.182.093-.24.486-1.317.486-2.267 0-.956-.539-1.352-.882-1.352zm-16.503 2.55a1.94 1.94 0 0 1-.374.027c-1.218-.033-2.534-1.131-2.665-2.435-.145-1.44.59-2.548 1.89-2.81a2.22 2.22 0 0 1 .547-.04c.729.04 1.803.6 2.048 2.191.217 1.408-.128 2.843-1.446 3.068zm-1.36-6.08c-.81.157-1.524.617-1.96 1.252-.261-.218-.747-.64-.833-.804-.697-1.325.76-3.902 1.778-5.357C6.33 3.159 10.268.437 12.093.931c.296.084 1.278 1.224 1.278 1.224s-1.823 1.013-3.514 2.426c-2.278 1.757-3.999 4.311-5.03 7.083zm12.787 5.542a.072.072 0 0 0 .042-.071.067.067 0 0 0-.074-.06s-1.908.283-3.711-.379c.196-.639.718-.408 1.508-.344a11.01 11.01 0 0 0 3.64-.394c.816-.235 1.888-.698 2.722-1.356.28.618.38 1.298.38 1.298s.217-.039.399.073c.171.106.297.326.211.895-.175 1.063-.626 1.926-1.384 2.72a5.698 5.698 0 0 1-1.663 1.244 7.018 7.018 0 0 1-1.085.46c-2.858.935-5.784-.093-6.727-2.3a3.582 3.582 0 0 1-.19-.522c-.401-1.455-.06-3.2 1.007-4.299.065-.07.132-.153.132-.256 0-.087-.055-.178-.102-.243-.373-.542-1.666-1.466-1.406-3.254.186-1.285 1.308-2.189 2.353-2.135l.265.015c.453.027.848.085 1.222.101.624.027 1.185-.064 1.85-.619.224-.187.404-.35.708-.401.032-.005.111-.034.27-.026a.892.892 0 0 1 .456.146c.533.355.608 1.215.636 1.845.016.36.059 1.228.074 1.478.034.57.183.65.486.75.17.057.329.099.562.164.705.199 1.123.4 1.387.659.158.161.23.333.253.497.084.608-.47 1.359-1.938 2.041-1.605.746-3.55.935-4.895.785l-.471-.053c-1.076-.145-1.689 1.247-1.044 2.201.416.615 1.55 1.015 2.683 1.015 2.6 0 4.598-1.111 5.341-2.072l.06-.085c.036-.055.006-.085-.04-.054-.607.416-3.304 2.069-6.19 1.571 0 0-.35-.057-.67-.182-.254-.099-.786-.344-.85-.891 2.328.721 3.793.039 3.793.039zm-3.688-.436l.001.001v-.002zM9.473 6.74c.895-1.036 1.996-1.936 2.982-2.441.034-.017.07.02.052.053-.079.142-.23.447-.277.677a.04.04 0 0 0 .061.042c.614-.419 1.681-.868 2.618-.925.04-.003.06.049.027.074-.154.119-.293.258-.411.413a.04.04 0 0 0 .031.064c.657.005 1.584.235 2.188.575.04.023.012.102-.034.092-.914-.21-2.41-.37-3.964.01-1.387.339-2.446.862-3.218 1.425-.04.029-.086-.023-.055-.06z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>MailChimp</title><path d="M11.267 0C6.791-.015-1.82 10.246 1.397 12.964l.79.669a3.88 3.88 0 0 0-.22 1.792c.084.84.518 1.644 1.22 2.266.666.59 1.542.964 2.392.964 1.406 3.24 4.62 5.228 8.386 5.34 4.04.12 7.433-1.776 8.854-5.182.093-.24.488-1.316.488-2.267 0-.956-.54-1.352-.885-1.352-.01-.037-.078-.286-.172-.586-.093-.3-.19-.51-.19-.51.375-.563.382-1.065.332-1.35-.053-.353-.2-.653-.496-.964-.296-.311-.902-.63-1.753-.868l-.446-.124c-.002-.019-.024-1.053-.043-1.497-.014-.32-.042-.822-.197-1.315-.186-.668-.508-1.253-.911-1.627 1.112-1.152 1.806-2.422 1.804-3.511-.003-2.095-2.576-2.729-5.746-1.416l-.672.285A678.22 678.22 0 0 0 12.7.504C12.304.159 11.817.002 11.267 0zm.073.873c.166 0 .322.019.465.058.297.084 1.28 1.224 1.28 1.224s-1.826 1.013-3.52 2.426c-2.28 1.757-4.005 4.311-5.037 7.082-.811.158-1.526.618-1.963 1.253-.261-.218-.748-.64-.834-.804-.698-1.326.761-3.902 1.781-5.357C5.834 3.44 9.37.867 11.34.873zm3.286 3.273c.04-.002.06.05.028.074-.143.11-.299.26-.413.414a.04.04 0 0 0 .031.064c.659.004 1.587.235 2.192.574.041.023.012.103-.034.092-.915-.21-2.414-.369-3.97.01-1.39.34-2.45.863-3.224 1.426-.04.028-.086-.023-.055-.06.896-1.035 1.999-1.935 2.987-2.44.034-.018.07.019.052.052-.079.143-.23.447-.278.678-.007.035.032.063.062.042.615-.42 1.684-.868 2.622-.926zm3.023 3.205l.056.001a.896.896 0 0 1 .456.146c.534.355.61 1.216.638 1.845.015.36.059 1.229.074 1.478.034.571.184.651.487.751.17.057.33.098.563.164.706.198 1.125.4 1.39.658.157.162.23.333.253.497.083.608-.472 1.36-1.942 2.041-1.607.746-3.557.935-4.904.785l-.471-.053c-1.078-.145-1.693 1.247-1.046 2.201.417.615 1.552 1.015 2.688 1.015 2.604 0 4.605-1.111 5.35-2.072a.987.987 0 0 0 .06-.085c.036-.055.006-.085-.04-.054-.608.416-3.31 2.069-6.2 1.571 0 0-.351-.057-.672-.182-.255-.1-.788-.344-.853-.891 2.333.72 3.801.039 3.801.039a.072.072 0 0 0 .042-.072.067.067 0 0 0-.074-.06s-1.911.283-3.718-.378c.197-.64.72-.408 1.51-.345a11.045 11.045 0 0 0 3.647-.394c.818-.234 1.892-.697 2.727-1.356.281.618.38 1.299.38 1.299s.219-.04.4.073c.173.106.299.326.213.895-.176 1.063-.628 1.926-1.387 2.72a5.714 5.714 0 0 1-1.666 1.244c-.34.18-.704.334-1.087.46-2.863.935-5.794-.093-6.739-2.3a3.545 3.545 0 0 1-.189-.522c-.403-1.455-.06-3.2 1.008-4.299.065-.07.132-.153.132-.256 0-.087-.055-.179-.102-.243-.374-.543-1.669-1.466-1.409-3.254.187-1.284 1.31-2.189 2.357-2.135.089.004.177.01.266.015.453.027.85.085 1.223.1.625.028 1.187-.063 1.853-.618.225-.187.405-.35.71-.401.028-.005.092-.028.215-.028zm.022 2.18a.42.42 0 0 0-.06.005c-.335.054-.347.468-.228 1.04.068.32.187.595.32.765.175-.02.343-.022.498 0 .089-.205.104-.557.024-.942-.112-.535-.261-.872-.554-.868zm-3.66 1.546a1.724 1.724 0 0 0-1.016.326c-.16.117-.311.28-.29.378.008.032.031.056.088.063.131.015.592-.217 1.122-.25.374-.023.684.094.923.2.239.104.386.173.443.113.037-.038.026-.11-.031-.204-.118-.192-.36-.387-.618-.497a1.601 1.601 0 0 0-.621-.129zm4.082.81c-.171-.003-.313.186-.317.42-.004.236.131.43.303.432.172.003.314-.185.318-.42.004-.236-.132-.429-.304-.432zm-3.58.172c-.05 0-.102.002-.155.008-.311.05-.483.152-.593.247-.094.082-.152.173-.152.237a.075.075 0 0 0 .075.076c.07 0 .228-.063.228-.063a1.98 1.98 0 0 1 1.001-.104c.157.018.23.027.265-.026.01-.016.022-.049-.01-.1-.063-.103-.311-.269-.66-.275zm2.26.4c-.127 0-.235.051-.283.148-.075.154.035.363.246.466.21.104.443.063.52-.09.075-.155-.035-.364-.246-.467a.542.542 0 0 0-.237-.058zm-11.635.024c.048 0 .098 0 .149.003.73.04 1.806.6 2.052 2.19.217 1.41-.128 2.843-1.449 3.069-.123.02-.248.029-.374.026-1.22-.033-2.539-1.132-2.67-2.435-.145-1.44.591-2.548 1.894-2.811.117-.024.252-.04.398-.042zm-.07.927a1.144 1.144 0 0 0-.847.364c-.38.418-.439.988-.366 1.19.027.073.07.094.1.098.064.008.16-.039.22-.2a1.2 1.2 0 0 0 .017-.052 1.58 1.58 0 0 1 .157-.37.689.689 0 0 1 .955-.199c.266.174.369.5.255.81-.058.161-.154.469-.133.721.043.511.357.717.64.738.274.01.466-.143.515-.256.029-.067.005-.107-.011-.125-.043-.053-.113-.037-.18-.021a.638.638 0 0 1-.16.022.347.347 0 0 1-.294-.148c-.078-.12-.073-.3.013-.504.011-.028.025-.058.04-.092.138-.308.368-.825.11-1.317-.195-.37-.513-.602-.894-.65a1.135 1.135 0 0 0-.138-.01z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/maildotru.svg b/assets/lib/simple-icons/icons/maildotru.svg
new file mode 100644
index 00000000..0f76c32f
--- /dev/null
+++ b/assets/lib/simple-icons/icons/maildotru.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Mail.Ru</title><path d="M15.61 12c0 1.99-1.62 3.61-3.61 3.61-1.99 0-3.61-1.62-3.61-3.61 0-1.99 1.62-3.61 3.61-3.61 1.99 0 3.61 1.62 3.61 3.61M12 0C5.383 0 0 5.383 0 12s5.383 12 12 12c2.424 0 4.761-.722 6.76-2.087l.034-.024-1.617-1.879-.027.017A9.494 9.494 0 0 1 12 21.54c-5.26 0-9.54-4.28-9.54-9.54 0-5.26 4.28-9.54 9.54-9.54 5.26 0 9.54 4.28 9.54 9.54a9.63 9.63 0 0 1-.225 2.05c-.301 1.239-1.169 1.618-1.82 1.568-.654-.053-1.42-.52-1.426-1.661V12A6.076 6.076 0 0 0 12 5.93 6.076 6.076 0 0 0 5.93 12 6.076 6.076 0 0 0 12 18.07a6.02 6.02 0 0 0 4.3-1.792 3.9 3.9 0 0 0 3.32 1.805c.874 0 1.74-.292 2.437-.821.719-.547 1.256-1.336 1.553-2.285.047-.154.135-.504.135-.507l.002-.013c.175-.76.253-1.52.253-2.457 0-6.617-5.383-12-12-12"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/majorleaguehacking.svg b/assets/lib/simple-icons/icons/majorleaguehacking.svg
new file mode 100644
index 00000000..95dab185
--- /dev/null
+++ b/assets/lib/simple-icons/icons/majorleaguehacking.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Major League Hacking</title><path d="M23.769 6.947c.063 0 .119.02.16.063a.225.225 0 0 1 .071.161v7.778a.213.213 0 0 1-.07.161.222.222 0 0 1-.161.064H22.07a.228.228 0 0 1-.231-.224v-2.715a.206.206 0 0 0-.063-.154c-.042-.042-.091-.056-.162-.056h-2.377a.25.25 0 0 0-.161.056.212.212 0 0 0-.07.154v2.714c0 .147-.078.225-.232.225h-1.683c-.155 0-.232-.078-.232-.225V7.171c0-.147.077-.224.232-.224h1.683c.154 0 .231.077.231.224v2.63c0 .148.078.225.232.225h2.377c.064 0 .12-.021.162-.063a.222.222 0 0 0 .063-.162v-2.63a.21.21 0 0 1 .07-.161.222.222 0 0 1 .161-.063zm-8.374 6.207c.063 0 .119.02.154.063a.222.222 0 0 1 .063.161v1.55a.234.234 0 0 1-.063.161.206.206 0 0 1-.154.064h-5.45c-.154 0-.231-.078-.231-.225V7.171c0-.147.077-.224.231-.224h1.67c.154 0 .23.077.23.224v5.78a.19.19 0 0 0 .07.154c.043.042.099.056.162.056h3.318zm-7.75-6.102c.161.07.301.168.42.288.12.119.21.26.288.42.07.162.105.337.105.52v6.648a.206.206 0 0 1-.063.154.206.206 0 0 1-.154.064H6.649a.181.181 0 0 1-.148-.064.231.231 0 0 1-.056-.154V8.883H5.162v6.045a.231.231 0 0 1-.056.154.191.191 0 0 1-.147.064H3.514a.206.206 0 0 1-.155-.064.206.206 0 0 1-.063-.154V8.883H2.013v6.045c0 .147-.07.218-.218.218H.217c-.147 0-.217-.07-.217-.218V7.164c0-.147.07-.217.217-.217H7.12c.189 0 .357.035.526.105zm16.341 9.314c.007.007.007.014.007.02v.45c0 .028-.007.056-.014.084-.014.028-.028.049-.042.07a.146.146 0 0 1-.07.042c-.028.014-.056.014-.084.014h-.639a.352.352 0 0 1-.084-.014c-.028-.014-.049-.028-.07-.042a.146.146 0 0 1-.042-.07c-.014-.028-.014-.056-.014-.084v-.842c0-.028.007-.056.014-.084.007-.028.028-.05.042-.07a.146.146 0 0 1 .07-.042c.028-.014.056-.014.084-.014h.75c.008 0 .022 0 .022.007.007.007.007.014.007.02v.24c0 .006 0 .02-.007.02-.007.007-.014.007-.021.007h-.603c-.007 0-.021 0-.021.007-.007.007-.007.014-.007.021v.59c0 .007 0 .014.007.02.007.008.014.008.02.008h.358c.007 0 .014 0 .021-.007.007-.007.007-.014.007-.022v-.315c0-.007 0-.021.007-.021.007-.007.014-.007.021-.007h.253c.014 0 .021.007.028.014zm-1.466-.568c.028.014.05.028.07.042a.146.146 0 0 1 .042.07c.014.028.014.056.014.084v1.024c0 .007 0 .021-.007.021-.007.007-.014.007-.02.007h-.253c-.007 0-.014 0-.021-.007-.007-.007-.007-.014-.007-.02v-.892c0-.007 0-.014-.007-.02-.007-.008-.014-.008-.021-.008h-.358c-.007 0-.021 0-.021.007s-.007.014-.007.021v.891c0 .021-.014.035-.035.035h-.253a.034.034 0 0 1-.035-.035v-1.2c0-.02.014-.034.035-.034h.821c.014-.007.042 0 .063.014zM21.3 17.01c0 .021-.014.035-.035.035h-.253a.034.034 0 0 1-.035-.035v-1.2c0-.02.014-.034.035-.034h.253c.02 0 .035.014.035.035zm-.975-.701c-.007.007-.007.007 0 .014l.42.694c.008.007.008.014 0 .021-.006.007-.006.007-.02.007h-.302c-.007 0-.02 0-.028-.007l-.02-.02-.274-.492c-.007-.007-.007-.007-.007 0l-.148.161c-.007.007-.014.015-.014.029-.007.014-.007.02-.007.035v.266c0 .021-.014.035-.035.035h-.245c-.021 0-.035-.014-.035-.035v-1.2c0-.02.014-.034.035-.034h.252c.021 0 .035.014.035.035v.54l.47-.547a.097.097 0 0 1 .028-.021c.014-.007.021-.007.028-.007h.302c.007 0 .014 0 .014.007s0 .014-.007.02zm-1.648-.218c-.007.007-.007.014-.007.021v.59c0 .007 0 .014.007.02.007.008.014.008.02.008h.583c.007 0 .021 0 .021.007.007.007.007.014.007.02v.24c0 .006 0 .02-.007.02-.007.007-.014.007-.021.007h-.722a.352.352 0 0 1-.085-.014.617.617 0 0 1-.07-.042.146.146 0 0 1-.042-.07c-.014-.028-.014-.056-.014-.084v-.849c0-.028.007-.056.014-.084a.538.538 0 0 1 .042-.07.146.146 0 0 1 .07-.042c.028-.014.057-.014.085-.014h.722c.007 0 .021 0 .021.007.007.007.007.014.007.02v.24c0 .006 0 .02-.007.02-.007.007-.014.007-.021.007h-.582c-.007.035-.014.042-.021.042zm-.82-.315c.027 0 .055.007.083.014.028.014.05.028.07.042a.146.146 0 0 1 .043.07.351.351 0 0 1 .014.084v1.024c0 .007 0 .021-.007.021-.007.007-.014.007-.021.007h-.253c-.007 0-.021 0-.021-.007-.007-.007-.007-.014-.007-.02v-.324c0-.007 0-.02-.007-.02-.007-.008-.014-.008-.021-.008h-.358c-.007 0-.02 0-.02.007-.008.007-.008.014-.008.021v.323c0 .021-.014.035-.035.035h-.252c-.021 0-.035-.014-.035-.035v-1.024c0-.028.007-.056.014-.084a.617.617 0 0 1 .042-.07.146.146 0 0 1 .07-.042c.028-.014.056-.014.084-.014zm-.106.603v-.316h-.428v.316zm-1.066-.603c.007 0 .021 0 .021.007.007.007.007.014.007.02v1.2c0 .007 0 .021-.007.021-.007.007-.014.007-.021.007h-.253c-.007 0-.02 0-.02-.007-.008-.007-.008-.014-.008-.02v-.422c0-.007 0-.014-.007-.02-.007-.008-.014-.008-.02-.008h-.358c-.007 0-.021 0-.021.007-.007.007-.007.014-.007.021v.421c0 .021-.014.035-.035.035h-.253a.034.034 0 0 1-.035-.035v-1.2c0-.02.014-.034.035-.034h.253c.02 0 .035.014.035.035v.407c0 .02.014.035.035.035h.357c.007 0 .014 0 .021-.007.007-.007.007-.014.007-.021v-.407c0-.007 0-.021.007-.021.007-.007.014-.007.022-.007h.245zm-1.943.014c.007.007.007.014.007.02v.232c0 .007 0 .014-.007.021-.007.007-.014.007-.02.007h-.604c-.007 0-.007 0-.007.007v.197c0 .007 0 .007.007.007h.52c.006 0 .013 0 .02.007.007.007.007.014.007.02v.183c0 .007 0 .021-.007.021-.007.007-.014.007-.02.007h-.52c-.007 0-.007 0-.007.007v.197c0 .007 0 .007.007.007h.604c.006 0 .02 0 .02.007.007.007.007.014.007.02v.225c0 .007 0 .021-.007.021-.007.007-.014.007-.02.007h-.899a.034.034 0 0 1-.035-.035v-1.199c0-.007 0-.021.007-.021.007-.007.014-.007.021-.007h.898a.132.132 0 0 0 .028.042zm-1.255 0c.007.007.007.014.007.02v1.025a.352.352 0 0 1-.014.084c-.014.028-.028.049-.042.07a.146.146 0 0 1-.07.042c-.028.014-.056.014-.085.014h-.638a.352.352 0 0 1-.084-.014c-.028-.014-.049-.028-.07-.042a.146.146 0 0 1-.042-.07c-.014-.028-.014-.056-.014-.084v-1.024c0-.021.014-.035.035-.035h.252c.021 0 .035.014.035.035v.89c0 .008 0 .015.007.022.007.007.014.007.022.007h.357c.007 0 .014 0 .021-.007.007-.007.007-.014.007-.021v-.891c0-.007 0-.021.007-.021.007-.007.014-.007.021-.007h.253c.02-.007.028 0 .035.007zm-1.333.575c.007.007.007.014.007.02v.45a.352.352 0 0 1-.014.084c-.014.028-.028.049-.042.07a.146.146 0 0 1-.07.042c-.028.014-.056.014-.084.014h-.638a.352.352 0 0 1-.084-.014.478.478 0 0 1-.07-.042.146.146 0 0 1-.043-.07c-.014-.028-.014-.056-.014-.084v-.842c0-.028.007-.056.014-.084.007-.028.028-.05.042-.07a.146.146 0 0 1 .07-.042c.029-.014.057-.014.085-.014h.75c.007 0 .021 0 .021.007.007.007.007.014.007.02v.24c0 .006 0 .02-.007.02-.007.007-.014.007-.02.007h-.604c-.007 0-.021 0-.021.007-.007.007-.007.014-.007.021v.59c0 .007 0 .014.007.02.007.008.014.008.021.008h.358c.007 0 .014 0 .02-.007.008-.007.008-.014.008-.022v-.315c0-.007 0-.021.007-.021.007-.007.014-.007.02-.007h.253c.007 0 .021.007.028.014zm-1.55-.59c.028 0 .056.008.084.015.029.014.05.028.07.042a.146.146 0 0 1 .043.07.352.352 0 0 1 .014.084v1.024c0 .007 0 .021-.007.021-.007.007-.014.007-.021.007h-.26c-.007 0-.02 0-.02-.007-.008-.007-.008-.014-.008-.02v-.324c0-.007 0-.02-.007-.02-.007-.008-.014-.008-.02-.008h-.366c-.007 0-.02 0-.02.007-.008.007-.008.014-.008.021v.323c0 .021-.014.035-.035.035h-.252c-.021 0-.035-.014-.035-.035v-1.024c0-.028.007-.056.014-.084a.617.617 0 0 1 .042-.07.146.146 0 0 1 .07-.042c.028-.014.056-.014.084-.014zm-.112.604v-.316h-.428v.316zm-1.038-.59c.007.008.007.015.007.022v.231c0 .007 0 .014-.007.021-.007.007-.014.007-.02.007H8.83c-.007 0-.007 0-.007.007v.197c0 .007 0 .007.007.007h.519c.007 0 .014 0 .021.007.007.007.007.014.007.02v.183c0 .007 0 .021-.007.021-.007.007-.014.007-.021.007h-.52c-.006 0-.006 0-.006.007v.197c0 .007 0 .007.007.007h.604c.006 0 .02 0 .02.007.007.007.007.014.007.02v.225c0 .007 0 .021-.007.021-.007.007-.014.007-.02.007h-.899a.034.034 0 0 1-.035-.035v-1.199c0-.007 0-.021.007-.021.007-.007.014-.007.021-.007h.898a.132.132 0 0 0 .028.042zm-1.171.948c.007 0 .014 0 .02.007.008.007.008.014.008.02v.24c0 .006 0 .02-.007.02-.007.007-.014.007-.021.007h-.779a.034.034 0 0 1-.035-.035v-1.2c0-.02.014-.034.035-.034h.253c.02 0 .035.014.035.035v.89c0 .007 0 .015.007.022.007.007.014.007.021.007h.463zm-1.704.28c.007.007.007.014 0 .021-.007.007-.007.007-.021.007H6.27c-.007 0-.021 0-.028-.007l-.021-.02-.19-.345c0-.007-.006-.007-.013-.007H5.8c-.007 0-.007 0-.007.007v.337c0 .021-.014.035-.035.035h-.252c-.021 0-.036-.014-.036-.035v-1.2c0-.02.015-.034.036-.034h.82c.028 0 .056.007.084.014.028.014.05.028.07.042a.146.146 0 0 1 .043.07.178.178 0 0 1 .014.084v.477a.21.21 0 0 1-.043.126.23.23 0 0 1-.105.077h-.007c-.007 0-.007.007-.007.014v.007zm-.358-.947h-.435v.309h.435zm-1.241-.294c.028 0 .056.007.084.014.028.014.049.028.07.042a.146.146 0 0 1 .042.07.352.352 0 0 1 .014.084v.842c0 .028-.007.056-.014.084-.014.028-.028.049-.042.07a.146.146 0 0 1-.07.042c-.028.014-.056.014-.084.014h-.64c-.028 0-.056-.007-.084-.014-.028-.014-.049-.028-.07-.042a.146.146 0 0 1-.042-.07c-.014-.028-.014-.056-.014-.084v-.842c0-.028.007-.056.014-.084.007-.028.028-.05.042-.07a.146.146 0 0 1 .07-.042c.028-.014.056-.014.084-.014zm-.113.308H4.44v.653h.427zm-1.03-.294c.006.007.006.014.006.02v1.025c0 .028-.007.056-.014.084-.014.028-.028.049-.042.07a.146.146 0 0 1-.07.042c-.028.014-.056.014-.084.014h-.547a.352.352 0 0 1-.084-.014.538.538 0 0 1-.07-.042.146.146 0 0 1-.042-.07c-.014-.028-.014-.056-.014-.084v-.386c0-.021.014-.035.035-.035h.252c.021 0 .035.014.035.035v.26c0 .007 0 .014.007.02.007.008.014.008.021.008h.26c.007 0 .02 0 .02-.007.008-.007.008-.014.008-.021v-.891c0-.007 0-.021.007-.021.007-.007.014-.007.02-.007h.253c.021-.014.035-.007.042 0zm-1.354-.014c.028 0 .056.007.084.014.028.014.049.028.07.042a.146.146 0 0 1 .042.07.352.352 0 0 1 .014.084v1.024c0 .007 0 .021-.007.021-.007.007-.014.007-.02.007h-.253c-.007 0-.021 0-.021-.007-.007-.007-.007-.014-.007-.02v-.324c0-.007 0-.02-.007-.02-.007-.008-.014-.008-.021-.008h-.358c-.007 0-.021 0-.021.007-.007.007-.007.014-.007.021v.323c0 .021-.014.035-.035.035h-.253a.034.034 0 0 1-.035-.035v-1.024c0-.028.007-.056.014-.084a.617.617 0 0 1 .042-.07.146.146 0 0 1 .07-.042c.028-.014.057-.014.085-.014zm-.112.603v-.316h-.428v.316zm-1.158-.582c.028.014.05.028.07.042a.146.146 0 0 1 .043.07.352.352 0 0 1 .014.084v1.024c0 .007 0 .021-.007.021-.007.007-.014.007-.021.007h-.253c-.007 0-.014 0-.021-.007-.007-.007-.007-.014-.007-.02v-.927H.828v.926c0 .007 0 .021-.007.021-.007.007-.014.007-.021.007H.568c-.007 0-.021 0-.021-.007-.007-.007-.007-.014-.007-.02v-.927H.337v.926c0 .021-.014.035-.035.035H.049a.034.034 0 0 1-.035-.035v-1.2c0-.02.014-.034.035-.034h1.094c.021-.007.05 0 .07.014Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/makerbot.svg b/assets/lib/simple-icons/icons/makerbot.svg
index c8b2b709..d5663fdf 100644
--- a/assets/lib/simple-icons/icons/makerbot.svg
+++ b/assets/lib/simple-icons/icons/makerbot.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>MakerBot icon</title><path d="M23.055 7.328c-.604-1.428-1.47-2.714-2.569-3.813C19.382 2.414 18.1 1.551 16.672.944 15.189.315 13.619 0 12 0c-1.62 0-3.19.318-4.672.945-1.428.604-2.711 1.47-3.813 2.57C2.414 4.615 1.551 5.9.943 7.328.315 8.81 0 10.38 0 12c0 1.619.318 3.189.945 4.671.604 1.429 1.47 2.714 2.569 3.814 1.103 1.1 2.386 1.964 3.813 2.57C8.81 23.686 10.38 24 12 24c1.619 0 3.189-.314 4.671-.944 1.429-.601 2.711-1.471 3.814-2.564 1.1-1.095 1.964-2.386 2.57-3.811.63-1.47.944-3.045.944-4.665 0-1.619-.314-3.18-.944-4.664v-.024zM12 22.335C6.293 22.335 1.665 17.707 1.665 12S6.293 1.665 12 1.665 22.335 6.293 22.335 12 17.707 22.335 12 22.335zm3.242-18.214H8.757c-.922 0-1.7.324-2.333.975-.635.644-.953 1.425-.953 2.334v10.182c0 .449.135.81.4 1.095.267.269.615.42 1.051.42.445 0 .805-.135 1.079-.405.272-.271.409-.63.409-1.08V7.08h2.141v10.529c0 .445.131.806.391 1.08.259.273.611.411 1.059.411.446 0 .799-.138 1.059-.411.26-.274.39-.635.39-1.08V7.08h2.142v10.529c0 .445.135.806.408 1.08.275.273.635.411 1.08.411.435 0 .783-.141 1.05-.423.268-.28.401-.638.401-1.069V7.426c0-.91-.318-1.688-.953-2.336-.633-.648-1.41-.975-2.334-.975v.006z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>MakerBot</title><path d="M23.055 7.328c-.604-1.428-1.47-2.714-2.569-3.813C19.382 2.414 18.1 1.551 16.672.944 15.189.315 13.619 0 12 0c-1.62 0-3.19.318-4.672.945-1.428.604-2.711 1.47-3.813 2.57C2.414 4.615 1.551 5.9.943 7.328.315 8.81 0 10.38 0 12c0 1.619.318 3.189.945 4.671.604 1.429 1.47 2.714 2.569 3.814 1.103 1.1 2.386 1.964 3.813 2.57C8.81 23.686 10.38 24 12 24c1.619 0 3.189-.314 4.671-.944 1.429-.601 2.711-1.471 3.814-2.564 1.1-1.095 1.964-2.386 2.57-3.811.63-1.47.944-3.045.944-4.665 0-1.619-.314-3.18-.944-4.664v-.024zM12 22.335C6.293 22.335 1.665 17.707 1.665 12S6.293 1.665 12 1.665 22.335 6.293 22.335 12 17.707 22.335 12 22.335zm3.242-18.214H8.757c-.922 0-1.7.324-2.333.975-.635.644-.953 1.425-.953 2.334v10.182c0 .449.135.81.4 1.095.267.269.615.42 1.051.42.445 0 .805-.135 1.079-.405.272-.271.409-.63.409-1.08V7.08h2.141v10.529c0 .445.131.806.391 1.08.259.273.611.411 1.059.411.446 0 .799-.138 1.059-.411.26-.274.39-.635.39-1.08V7.08h2.142v10.529c0 .445.135.806.408 1.08.275.273.635.411 1.08.411.435 0 .783-.141 1.05-.423.268-.28.401-.638.401-1.069V7.426c0-.91-.318-1.688-.953-2.336-.633-.648-1.41-.975-2.334-.975v.006z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/mamp.svg b/assets/lib/simple-icons/icons/mamp.svg
new file mode 100644
index 00000000..c0873041
--- /dev/null
+++ b/assets/lib/simple-icons/icons/mamp.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>MAMP</title><path d="m.102 9.629c.245-1.695 2.139-6.979 7.454-7.98 3.137-.592 7.005 1.034 9.72 3.788-1.354.929-2.259 1.732-2.944 2.708.511 1.892 2.018 2.663 3.078 2.984-1.175-.711-1.917-1.381-2.376-2.812 2.513-2.988 5.205-3.954 5.432-3.978 2.102 1.677 3.586 4.735 3.532 7.955-.062 3.728-2.09 7.569-4.415 9.121-.318.151-1.053-.25-1.153-.687.476-1.105 1.601-3.795 1.74-5.806.131-1.928-1.146-3.061-2.219-1.667-1.489 2.494-2.139 5.592-2.789 8.934-1.095.313-2.952.392-3.756-.036-.101-2.068.381-5.601-.991-6.84-.588-.533-1.169-.285-1.562.205-.992 1.227-.972 4.414-.78 6.479-1.109.686-2.99.543-4.179.117-.477-3.245-1.597-7.202-2.512-10.23-.255 1.216-.379 2.664-.34 3.908-.611-.498-1.308-3.116-.94-6.163z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/man.svg b/assets/lib/simple-icons/icons/man.svg
index f6393235..f3639cd3 100644
--- a/assets/lib/simple-icons/icons/man.svg
+++ b/assets/lib/simple-icons/icons/man.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>MAN icon</title><path d="M10.979 14.943h2.05L15.46 18.7h-2.054l-.263-.409h-2.278l-.264.41H8.548zm1.025 1.568l-.458.711h.916l-.458-.712zM0 17.372C0 10.704 5.372 5.3 12 5.3s12 5.405 12 12.073c0 .449-.024.892-.072 1.328H22.58c.054-.435.082-.878.082-1.328 0-5.924-4.774-10.726-10.662-10.726-5.889 0-10.661 4.802-10.661 10.726 0 .45.027.893.08 1.328H.073A12.254 12.274 0 0 1 0 17.372zm2.237-2.43h1.83l1.22 1.228 1.22-1.227h1.831V18.7H6.363v-1.38l-1.075 1.082-1.076-1.082v1.38H2.237v-3.757zm13.42 0h1.927l2.17 1.62v-1.62h1.975V18.7h-1.942l-2.156-1.605V18.7h-1.975Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>MAN</title><path d="M10.979 14.943h2.05L15.46 18.7h-2.054l-.263-.409h-2.278l-.264.41H8.548zm1.025 1.568l-.458.711h.916l-.458-.712zM0 17.372C0 10.704 5.372 5.3 12 5.3s12 5.405 12 12.073c0 .449-.024.892-.072 1.328H22.58c.054-.435.082-.878.082-1.328 0-5.924-4.774-10.726-10.662-10.726-5.889 0-10.661 4.802-10.661 10.726 0 .45.027.893.08 1.328H.073A12.254 12.274 0 0 1 0 17.372zm2.237-2.43h1.83l1.22 1.228 1.22-1.227h1.831V18.7H6.363v-1.38l-1.075 1.082-1.076-1.082v1.38H2.237v-3.757zm13.42 0h1.927l2.17 1.62v-1.62h1.975V18.7h-1.942l-2.156-1.605V18.7h-1.975Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/manageiq.svg b/assets/lib/simple-icons/icons/manageiq.svg
index baa5dba1..a87e3d86 100644
--- a/assets/lib/simple-icons/icons/manageiq.svg
+++ b/assets/lib/simple-icons/icons/manageiq.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>ManageIQ icon</title><path d="M12.096.1l-.001.001A11.547 11.547 0 00.538 11.658c0 2.069.548 4.005 1.496 5.683l2.869-2.867a7.676 7.676 0 01-.54-2.816c0-4.261 3.47-7.73 7.732-7.73 4.261 0 7.732 3.469 7.732 7.73 0 4.262-3.47 7.732-7.732 7.732a7.67 7.67 0 01-2.6-.459L6.597 21.83a11.514 11.514 0 005.499 1.388c2.316 0 4.468-.686 6.275-1.856l2.393 2.392L24 20.512l-2.349-2.349a11.51 11.51 0 002-6.505C23.651 5.368 18.644.26 12.393.1c-.08-.003-.18 0-.297 0zm-.001 9.34c-1.226 0-2.215.991-2.215 2.217 0 1.225.99 2.216 2.215 2.216a2.215 2.215 0 100-4.432zm-4.241 3.368l-.214.214L0 20.662l3.239 3.24 7.855-7.856z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ManageIQ</title><path d="M12.095.1C5.718.094.544 5.26.538 11.637v.022c0 2.069.547 4.005 1.496 5.683l2.869-2.868a7.685 7.685 0 0 1-.54-2.815c0-4.262 3.47-7.73 7.732-7.73s7.732 3.468 7.732 7.73-3.47 7.732-7.732 7.732a7.685 7.685 0 0 1-2.6-.46L6.596 21.83a11.515 11.515 0 0 0 5.499 1.388c2.316 0 4.467-.686 6.275-1.856l2.393 2.392L24 20.512l-2.349-2.349c1.262-1.852 2-4.09 2-6.505C23.66 5.269 18.452.078 12.096.101L12.095.1zm0 9.34c-1.225 0-2.214.991-2.214 2.217s.989 2.215 2.214 2.215a2.216 2.216 0 1 0 0-4.432zm-4.24 3.368C7.57 13.09.273 20.39 0 20.662L3.24 23.9l7.855-7.855-3.24-3.238v.001z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/manjaro.svg b/assets/lib/simple-icons/icons/manjaro.svg
index 12497044..d99972e2 100644
--- a/assets/lib/simple-icons/icons/manjaro.svg
+++ b/assets/lib/simple-icons/icons/manjaro.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Manjaro icon</title><path d="M0 0v24h6.75V6.75h8.625V0H0zm8.625 8.625V24h6.75V8.625h-6.75zM17.25 0v24H24V0h-6.75z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Manjaro</title><path d="M0 0v24h6.75V6.75h8.625V0H0zm8.625 8.625V24h6.75V8.625h-6.75zM17.25 0v24H24V0h-6.75z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/mapbox.svg b/assets/lib/simple-icons/icons/mapbox.svg
index ac17d798..430ba3d3 100644
--- a/assets/lib/simple-icons/icons/mapbox.svg
+++ b/assets/lib/simple-icons/icons/mapbox.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Mapbox icon</title><path d="M12 0C5.372 0 0 5.372 0 12s5.372 12 12 12 12-5.372 12-12S18.628 0 12 0zm5.696 14.943c-4.103 4.103-11.433 2.794-11.433 2.794S4.94 10.421 9.057 6.304c2.281-2.281 6.061-2.187 8.45.189s2.471 6.168.189 8.45zm-4.319-7.91l-1.174 2.416-2.416 1.174 2.416 1.174 1.174 2.416 1.174-2.416 2.416-1.174-2.416-1.174-1.174-2.416z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Mapbox</title><path d="M12 0C5.372 0 0 5.372 0 12s5.372 12 12 12 12-5.372 12-12S18.628 0 12 0zm5.696 14.943c-4.103 4.103-11.433 2.794-11.433 2.794S4.94 10.421 9.057 6.304c2.281-2.281 6.061-2.187 8.45.189s2.471 6.168.189 8.45zm-4.319-7.91l-1.174 2.416-2.416 1.174 2.416 1.174 1.174 2.416 1.174-2.416 2.416-1.174-2.416-1.174-1.174-2.416z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/mariadb.svg b/assets/lib/simple-icons/icons/mariadb.svg
index c52dafbc..fe068e7b 100644
--- a/assets/lib/simple-icons/icons/mariadb.svg
+++ b/assets/lib/simple-icons/icons/mariadb.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>MariaDB icon</title><path d="M23.157 4.412c-.676.284-.79.31-1.673.372-.65.045-.757.057-1.212.209-.75.246-1.395.75-2.02 1.59-.296.398-1.249 1.913-1.249 1.988 0 .057-.65.998-.915 1.32-.574.713-1.08 1.079-2.14 1.59-.77.36-1.224.524-4.102 1.477-1.073.353-2.133.738-2.367.864-.852.449-1.515 1.036-2.203 1.938-1.003 1.32-.972 1.313-3.042.947a12.264 12.264 0 00-.675-.063c-.644-.05-1.023.044-1.332.334L0 17.193l.177.088c.094.05.353.234.561.398.215.17.461.347.55.391.088.044.17.088.183.101.012.013-.089.17-.228.353-.435.581-.593.871-.574 1.048.019.164.032.17.43.17.517-.006.826-.056 1.261-.208.65-.233 2.058-.94 2.784-1.4.776-.5 1.717-.998 1.956-1.042.082-.02.354-.07.594-.114.58-.107 1.464-.095 2.587.05.108.013.373.045.6.064.227.025.43.057.454.076.026.012.474.037.998.056.934.026 1.104.007 1.3-.189.126-.133.385-.631.498-.985.209-.643.417-.921.366-.492-.113.966-.322 1.692-.713 2.411-.259.499-.663 1.092-.934 1.395-.322.347-.315.36.088.315.619-.063 1.471-.397 2.096-.82.827-.562 1.647-1.691 2.19-3.03.107-.27.22-.22.183.083-.013.094-.038.315-.057.498l-.031.328.353-.202c.833-.48 1.414-1.262 2.127-2.884.227-.518.877-2.922 1.073-3.976a9.64 9.64 0 01.271-1.042c.127-.429.196-.555.48-.858.183-.19.625-.555.978-.808.72-.505.953-.75 1.187-1.205.208-.417.284-1.13.132-1.357-.132-.202-.284-.196-.763.006Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>MariaDB</title><path d="M23.157 4.412c-.676.284-.79.31-1.673.372-.65.045-.757.057-1.212.209-.75.246-1.395.75-2.02 1.59-.296.398-1.249 1.913-1.249 1.988 0 .057-.65.998-.915 1.32-.574.713-1.08 1.079-2.14 1.59-.77.36-1.224.524-4.102 1.477-1.073.353-2.133.738-2.367.864-.852.449-1.515 1.036-2.203 1.938-1.003 1.32-.972 1.313-3.042.947a12.264 12.264 0 00-.675-.063c-.644-.05-1.023.044-1.332.334L0 17.193l.177.088c.094.05.353.234.561.398.215.17.461.347.55.391.088.044.17.088.183.101.012.013-.089.17-.228.353-.435.581-.593.871-.574 1.048.019.164.032.17.43.17.517-.006.826-.056 1.261-.208.65-.233 2.058-.94 2.784-1.4.776-.5 1.717-.998 1.956-1.042.082-.02.354-.07.594-.114.58-.107 1.464-.095 2.587.05.108.013.373.045.6.064.227.025.43.057.454.076.026.012.474.037.998.056.934.026 1.104.007 1.3-.189.126-.133.385-.631.498-.985.209-.643.417-.921.366-.492-.113.966-.322 1.692-.713 2.411-.259.499-.663 1.092-.934 1.395-.322.347-.315.36.088.315.619-.063 1.471-.397 2.096-.82.827-.562 1.647-1.691 2.19-3.03.107-.27.22-.22.183.083-.013.094-.038.315-.057.498l-.031.328.353-.202c.833-.48 1.414-1.262 2.127-2.884.227-.518.877-2.922 1.073-3.976a9.64 9.64 0 01.271-1.042c.127-.429.196-.555.48-.858.183-.19.625-.555.978-.808.72-.505.953-.75 1.187-1.205.208-.417.284-1.13.132-1.357-.132-.202-.284-.196-.763.006Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/mariadbfoundation.svg b/assets/lib/simple-icons/icons/mariadbfoundation.svg
index 5267f0f2..09fbaba3 100644
--- a/assets/lib/simple-icons/icons/mariadbfoundation.svg
+++ b/assets/lib/simple-icons/icons/mariadbfoundation.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>MariaDB Foundation icon</title><path d="M23.475 4.031c-.369.013-.262.179-1.06.376-.805.198-1.78.077-2.646.441-2.267.95-2.634 4.624-5.335 6.045-1.77 1-3.576 1.229-5.19 1.735-1.295.52-2.101.864-3.051 1.683-.737.635-.917 1.252-1.687 2.05-.782 1.062-3.744.118-4.506 1.45.402.26.634.332 1.34.24-.146.276-1.074.64-.906 1.048 0 0 2.245.409 4.137-.733.882-.359 1.71-1.119 3.08-1.301 1.777-.236 3.778.373 5.925.544-.444.877-.902 1.395-1.391 2.119-.152.163.13.307.65.209.937-.232 1.615-.483 2.289-.949.878-.606 1.256-1.16 1.997-2.039.644 1.032 2.914 1.26 3.38.367-.867-.367-1.052-2.277-.755-3.101.35-.786.603-1.896.886-2.928.256-.93.413-2.349.718-3.075.365-.903 1.073-1.185 1.605-1.664.532-.479 1.06-.878 1.045-1.974-.006-.356-.19-.553-.525-.543zm-.573.445c.09.307.231.448.841.504-.089.774-.606 1.196-1.183 1.602-.509.356-1.066.7-1.424 1.258-.367.57-.951 2.23-1.52 4.159-.492 1.668-1.065 2.807-2.276 3.807-.15-.36.17-.568.03-.897-.175.496-.558 1.218-.789 1.66-.76 1.454-2.019 2.63-3.901 2.962.893-1.21 1.787-2.543 1.896-4.627-.4.087-.432 1.164-1.078 1.56-.415.045-.995-.05-1.573-.12-1.726-.203-3.465-.282-5.087.24-1.105.353-2.356 1.447-3.292 1.853-1.1.478-1.477.515-2.869.473-.174-.234 1.002-.536.936-1.047-.536-.058-.848.071-1.314-.14a.707.707 0 01.223-.24c.854-.59 3.278-.14 3.927-.777.401-.392.663-.804.935-1.204.265-.388.538-.765.953-1.105.154-.125.394-.341.571-.463.709-.484 1.51-.831 2.373-1.133 1.174-.413 2.361-.552 3.613-1.03.774-.296 1.508-.576 2.193-1.088.162-.121.407-.326.55-.465 2.22-2.192 2.361-5.177 5.415-5.49.37-.038.672-.026.948-.034.317-.01.597-.047.902-.218zm-.15.197c-.017 0-.049.015-.093.056-.265.272-.79.884-.98 1.454-.05.155.048.11.082.01.189-.584.788-1.226.971-1.42.045-.052.051-.099.02-.1zm.08.133c-.017.002-.046.022-.084.069-.224.306-.657.77-.766 1.36-.027.16.064.103.082-.001.106-.605.608-1.11.763-1.327.037-.058.036-.105.006-.101zm.098.12c-.017.004-.044.026-.077.076-.199.325-.46.699-.519 1.295-.013.162.073.097.083-.008.052-.612.379-1.032.515-1.262.032-.06.028-.107-.002-.1zm.107.091c-.018.005-.042.03-.071.082-.169.34-.328.6-.334 1.2.002.163.08.09.081-.015 0-.614.22-.925.335-1.166.026-.063.018-.11-.011-.1zm-2.064.294c-.526.013-.837.242-.938.68.432.375 1.338.074 1.177-.672a2.218 2.218 0 00-.24-.008Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>MariaDB Foundation</title><path d="M23.475 4.031c-.369.013-.262.179-1.06.376-.805.198-1.78.077-2.646.441-2.267.95-2.634 4.624-5.335 6.045-1.77 1-3.576 1.229-5.19 1.735-1.295.52-2.101.864-3.051 1.683-.737.635-.917 1.252-1.687 2.05-.782 1.062-3.744.118-4.506 1.45.402.26.634.332 1.34.24-.146.276-1.074.64-.906 1.048 0 0 2.245.409 4.137-.733.882-.359 1.71-1.119 3.08-1.301 1.777-.236 3.778.373 5.925.544-.444.877-.902 1.395-1.391 2.119-.152.163.13.307.65.209.937-.232 1.615-.483 2.289-.949.878-.606 1.256-1.16 1.997-2.039.644 1.032 2.914 1.26 3.38.367-.867-.367-1.052-2.277-.755-3.101.35-.786.603-1.896.886-2.928.256-.93.413-2.349.718-3.075.365-.903 1.073-1.185 1.605-1.664.532-.479 1.06-.878 1.045-1.974-.006-.356-.19-.553-.525-.543zm-.573.445c.09.307.231.448.841.504-.089.774-.606 1.196-1.183 1.602-.509.356-1.066.7-1.424 1.258-.367.57-.951 2.23-1.52 4.159-.492 1.668-1.065 2.807-2.276 3.807-.15-.36.17-.568.03-.897-.175.496-.558 1.218-.789 1.66-.76 1.454-2.019 2.63-3.901 2.962.893-1.21 1.787-2.543 1.896-4.627-.4.087-.432 1.164-1.078 1.56-.415.045-.995-.05-1.573-.12-1.726-.203-3.465-.282-5.087.24-1.105.353-2.356 1.447-3.292 1.853-1.1.478-1.477.515-2.869.473-.174-.234 1.002-.536.936-1.047-.536-.058-.848.071-1.314-.14a.707.707 0 01.223-.24c.854-.59 3.278-.14 3.927-.777.401-.392.663-.804.935-1.204.265-.388.538-.765.953-1.105.154-.125.394-.341.571-.463.709-.484 1.51-.831 2.373-1.133 1.174-.413 2.361-.552 3.613-1.03.774-.296 1.508-.576 2.193-1.088.162-.121.407-.326.55-.465 2.22-2.192 2.361-5.177 5.415-5.49.37-.038.672-.026.948-.034.317-.01.597-.047.902-.218zm-.15.197c-.017 0-.049.015-.093.056-.265.272-.79.884-.98 1.454-.05.155.048.11.082.01.189-.584.788-1.226.971-1.42.045-.052.051-.099.02-.1zm.08.133c-.017.002-.046.022-.084.069-.224.306-.657.77-.766 1.36-.027.16.064.103.082-.001.106-.605.608-1.11.763-1.327.037-.058.036-.105.006-.101zm.098.12c-.017.004-.044.026-.077.076-.199.325-.46.699-.519 1.295-.013.162.073.097.083-.008.052-.612.379-1.032.515-1.262.032-.06.028-.107-.002-.1zm.107.091c-.018.005-.042.03-.071.082-.169.34-.328.6-.334 1.2.002.163.08.09.081-.015 0-.614.22-.925.335-1.166.026-.063.018-.11-.011-.1zm-2.064.294c-.526.013-.837.242-.938.68.432.375 1.338.074 1.177-.672a2.218 2.218 0 00-.24-.008Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/markdown.svg b/assets/lib/simple-icons/icons/markdown.svg
index 3009973d..53130fa5 100644
--- a/assets/lib/simple-icons/icons/markdown.svg
+++ b/assets/lib/simple-icons/icons/markdown.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Markdown icon</title><path d="M22.269 19.385H1.731a1.73 1.73 0 0 1-1.73-1.73V6.345a1.73 1.73 0 0 1 1.73-1.73h20.538a1.73 1.73 0 0 1 1.73 1.73v11.308a1.73 1.73 0 0 1-1.73 1.731zm-16.5-3.462v-4.5l2.308 2.885 2.307-2.885v4.5h2.308V8.078h-2.308l-2.307 2.885-2.308-2.885H3.461v7.847zM21.231 12h-2.308V8.077h-2.307V12h-2.308l3.461 4.039z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Markdown</title><path d="M22.27 19.385H1.73A1.73 1.73 0 010 17.655V6.345a1.73 1.73 0 011.73-1.73h20.54A1.73 1.73 0 0124 6.345v11.308a1.73 1.73 0 01-1.73 1.731zM5.769 15.923v-4.5l2.308 2.885 2.307-2.885v4.5h2.308V8.078h-2.308l-2.307 2.885-2.308-2.885H3.46v7.847zM21.232 12h-2.309V8.077h-2.307V12h-2.308l3.461 4.039z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/marketo.svg b/assets/lib/simple-icons/icons/marketo.svg
index e2171036..c56a4586 100644
--- a/assets/lib/simple-icons/icons/marketo.svg
+++ b/assets/lib/simple-icons/icons/marketo.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Marketo icon</title><path d="M16.146 0v24l6.134-4.886V3.334zM13.293 18.758l-4.939 2.157V2.086l4.939 1.462zM1.721 18.205l3.78-.999V5.188l-3.762-.606z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Marketo</title><path d="M16.146 0v24l6.134-4.886V3.334zM13.293 18.758l-4.939 2.157V2.086l4.939 1.462zM1.721 18.205l3.78-.999V5.188l-3.762-.606z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/marriott.svg b/assets/lib/simple-icons/icons/marriott.svg
index bb86fe24..baab3051 100644
--- a/assets/lib/simple-icons/icons/marriott.svg
+++ b/assets/lib/simple-icons/icons/marriott.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Marriott icon</title><path d="M8.802 11.083l-1.178 2.41c-.8 1.425-1.931 3.167-3.646 3.603-.668.232-1.255.023-1.9-.023L0 20.476a1.626 1.626 0 0 0 .59.386c3.647 1.39 5.122-.1 8.722-8.238l3.403 7.249h4.53l-2.14-4.893 1.213-2.53 3.345 7.311 4.337.027-7.59-16.677-3.475 1.738 2.738 6.222-1.201 2.445L9.45 2.678l-3.7 1.877Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Marriott</title><path d="M8.802 11.083l-1.178 2.41c-.8 1.425-1.931 3.167-3.646 3.603-.668.232-1.255.023-1.9-.023L0 20.476a1.626 1.626 0 0 0 .59.386c3.647 1.39 5.122-.1 8.722-8.238l3.403 7.249h4.53l-2.14-4.893 1.213-2.53 3.345 7.311 4.337.027-7.59-16.677-3.475 1.738 2.738 6.222-1.201 2.445L9.45 2.678l-3.7 1.877Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/maserati.svg b/assets/lib/simple-icons/icons/maserati.svg
index 458c6123..f6ca6123 100644
--- a/assets/lib/simple-icons/icons/maserati.svg
+++ b/assets/lib/simple-icons/icons/maserati.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Maserati icon</title><path d="M18.243 17.475h-1.521c0 .894.58 1.301 1.505 1.098v-1.098zm.063-3.326c0-.22.11-3.09.8-5.349.737-2.478 2.243-3.953 2.133-4.094-.094-.141-1.317.11-2.259.753-.988.674-1.96 1.804-1.882 1.882.047.047.377-.22.973-.455.643-.235.925-.188.925-.188s-1.067 1.757-1.584 3.64c-.44 1.584-.675 3.638-.69 3.827zm-12.612 0c-.016-.22-.11-3.09-.8-5.349-.737-2.478-2.243-3.953-2.133-4.094.094-.141 1.317.11 2.243.753.988.674 1.96 1.804 1.882 1.882-.047.047-.376-.22-.972-.455-.643-.235-.91-.188-.91-.188s1.067 1.757 1.584 3.64c.44 1.584.675 3.638.675 3.827zm5.412-11.137c.612-1.192.721-2.98.878-3.012.141.031.267 1.82.863 3.012.565 1.13 1.788 2.07 1.726 2.196-.079.141-.77-.204-1.098-.36-.55-.252-.989-.456-.989-.456s-.22 2.855.47 5.49c.566 2.15 1.93 4.11 2.056 4.283H13.27c-.047-.094-.11-.189-.157-.267-.47-.831-.816-1.553-1.13-2.792-.33 1.24-.674 1.96-1.145 2.792a1.49 1.49 0 0 1-.157.267h-1.74c.125-.173 1.49-2.134 2.054-4.283.69-2.62.47-5.49.47-5.49s-.439.204-.988.455c-.345.157-1.02.502-1.113.377-.047-.126 1.176-1.083 1.74-2.212M5.742 17.475h1.522c0 .894-.58 1.301-1.522 1.098zm8.455.69c-.69.643-.69 1.788-.69 1.788H10.51s0-1.145-.69-1.788c-.487-.455-1.083-.55-1.083-.55-.392-.078-.392-.125-.392-.14h7.357s0 .062-.392.14a2.2 2.2 0 0 0-1.114.55M5.004 14.54h13.945v.534H5.004zm.016 1.961h13.945v.518H5.02zm.674-.988H18.29v.533H5.694zm4.69 6.321h3.2V24h-3.2zm-.517-1.459h4.235v1.051H9.867Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Maserati</title><path d="M9.678 21.213h4.67v.909h-4.67v-.909zm.87 2.787h2.93v-1.409h-2.93V24zm-.844-5.313c.575.523.881 1.28.83 2.056h2.944a2.575 2.575 0 0 1 .818-2.056H9.704zm-3.052-2.17v.683h10.696v-.683H6.652zm.478 3.087a3.833 3.833 0 0 0 1.74-.917H7.009l.121.917zm9.74 0l.121-.917h-1.86c.49.451 1.089.768 1.739.917zm-8.666-4.556A73.645 73.645 0 0 0 5.913 8.63c.644.102 1.283.237 1.913.405A18.885 18.885 0 0 0 3.51 5.583c1.226 2.378 2.378 5.987 2.965 9.465h1.73zm9.326 0c.587-3.478 1.74-7.087 2.961-9.465a18.877 18.877 0 0 0-4.308 3.452c.63-.169 1.268-.304 1.913-.405a65.966 65.966 0 0 0-2.292 6.418h1.726zM6.087 16.17h11.83v-.679H6.087v.679zm5.135-1.144c.312-.74.569-1.5.77-2.278.203.777.462 1.538.773 2.278h2.052c-1.743-2.87-2.234-6.665-2.343-10-.009-.343.13-.43.46-.283l1.053.474A15.501 15.501 0 0 1 11.991 0 15.494 15.494 0 0 1 10 5.217l1.052-.474c.33-.152.457-.06.457.283-.109 3.313-.6 7.109-2.34 10h2.053zm-5.135 3.191h11.83v-.678H6.087v.678z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/mastercard.svg b/assets/lib/simple-icons/icons/mastercard.svg
index 2f8fb99f..7fffc538 100644
--- a/assets/lib/simple-icons/icons/mastercard.svg
+++ b/assets/lib/simple-icons/icons/mastercard.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>MasterCard icon</title><path d="M11.343 18.031c.058.049.12.098.181.146-1.177.783-2.59 1.238-4.107 1.238C3.32 19.416 0 16.096 0 12c0-4.095 3.32-7.416 7.416-7.416 1.518 0 2.931.456 4.105 1.238-.06.051-.12.098-.165.15C9.6 7.489 8.595 9.688 8.595 12c0 2.311 1.001 4.51 2.748 6.031zm5.241-13.447c-1.52 0-2.931.456-4.105 1.238.06.051.12.098.165.15C14.4 7.489 15.405 9.688 15.405 12c0 2.31-1.001 4.507-2.748 6.031-.058.049-.12.098-.181.146 1.177.783 2.588 1.238 4.107 1.238C20.68 19.416 24 16.096 24 12c0-4.094-3.32-7.416-7.416-7.416zM12 6.174c-.096.075-.189.15-.28.231C10.156 7.764 9.169 9.765 9.169 12c0 2.236.987 4.236 2.551 5.595.09.08.185.158.28.232.096-.074.189-.152.28-.232 1.563-1.359 2.551-3.359 2.551-5.595 0-2.235-.987-4.236-2.551-5.595-.09-.08-.184-.156-.28-.231z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>MasterCard</title><path d="M11.343 18.031c.058.049.12.098.181.146-1.177.783-2.59 1.238-4.107 1.238C3.32 19.416 0 16.096 0 12c0-4.095 3.32-7.416 7.416-7.416 1.518 0 2.931.456 4.105 1.238-.06.051-.12.098-.165.15C9.6 7.489 8.595 9.688 8.595 12c0 2.311 1.001 4.51 2.748 6.031zm5.241-13.447c-1.52 0-2.931.456-4.105 1.238.06.051.12.098.165.15C14.4 7.489 15.405 9.688 15.405 12c0 2.31-1.001 4.507-2.748 6.031-.058.049-.12.098-.181.146 1.177.783 2.588 1.238 4.107 1.238C20.68 19.416 24 16.096 24 12c0-4.094-3.32-7.416-7.416-7.416zM12 6.174c-.096.075-.189.15-.28.231C10.156 7.764 9.169 9.765 9.169 12c0 2.236.987 4.236 2.551 5.595.09.08.185.158.28.232.096-.074.189-.152.28-.232 1.563-1.359 2.551-3.359 2.551-5.595 0-2.235-.987-4.236-2.551-5.595-.09-.08-.184-.156-.28-.231z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/mastercomfig.svg b/assets/lib/simple-icons/icons/mastercomfig.svg
new file mode 100644
index 00000000..0601b8c6
--- /dev/null
+++ b/assets/lib/simple-icons/icons/mastercomfig.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>mastercomfig</title><path d="M12 0C5.479 0 .174 5.304.174 11.826V24h1.337v-6.716C3.486 21.064 7.446 23.65 12 23.65c4.554 0 8.514-2.586 10.49-6.367V24h1.336V11.826h-1.337c0 5.798-4.69 10.489-10.489 10.489-5.798 0-10.49-4.691-10.49-10.49C1.51 6.028 6.203 1.338 12 1.338zm0 3.72a8.107 8.107 0 100 16.214 8.107 8.107 0 000-16.215zm0 1.336a6.77 6.77 0 110 13.538 6.77 6.77 0 010-13.538z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/mastodon.svg b/assets/lib/simple-icons/icons/mastodon.svg
index 79e1d804..19141c72 100644
--- a/assets/lib/simple-icons/icons/mastodon.svg
+++ b/assets/lib/simple-icons/icons/mastodon.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Mastodon icon</title><path d="M23.193 7.879c0-5.206-3.411-6.732-3.411-6.732C18.062.357 15.108.025 12.041 0h-.076c-3.068.025-6.02.357-7.74 1.147 0 0-3.411 1.526-3.411 6.732 0 1.192-.023 2.618.015 4.129.124 5.092.934 10.109 5.641 11.355 2.17.574 4.034.695 5.535.612 2.722-.15 4.25-.972 4.25-.972l-.09-1.975s-1.945.613-4.129.539c-2.165-.074-4.449-.233-4.799-2.891a5.499 5.499 0 0 1-.048-.745s2.125.52 4.817.643c1.646.075 3.19-.097 4.758-.283 3.007-.359 5.625-2.212 5.954-3.905.517-2.665.475-6.507.475-6.507zm-4.024 6.709h-2.497V8.469c0-1.29-.543-1.944-1.628-1.944-1.2 0-1.802.776-1.802 2.312v3.349h-2.483v-3.35c0-1.536-.602-2.312-1.802-2.312-1.085 0-1.628.655-1.628 1.944v6.119H4.832V8.284c0-1.289.328-2.313.987-3.07.68-.758 1.569-1.146 2.674-1.146 1.278 0 2.246.491 2.886 1.474L12 6.585l.622-1.043c.64-.983 1.608-1.474 2.886-1.474 1.104 0 1.994.388 2.674 1.146.658.757.986 1.781.986 3.07v6.304z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Mastodon</title><path d="M23.193 7.88c0-5.207-3.411-6.733-3.411-6.733C18.062.357 15.108.025 12.041 0h-.076c-3.069.025-6.02.357-7.74 1.147 0 0-3.412 1.526-3.412 6.732 0 1.193-.023 2.619.015 4.13.124 5.092.934 10.11 5.641 11.355 2.17.574 4.034.695 5.536.612 2.722-.15 4.25-.972 4.25-.972l-.09-1.975s-1.945.613-4.13.54c-2.165-.075-4.449-.234-4.799-2.892a5.5 5.5 0 0 1-.048-.745s2.125.52 4.818.643c1.646.075 3.19-.097 4.758-.283 3.007-.359 5.625-2.212 5.954-3.905.517-2.665.475-6.508.475-6.508zm-4.024 6.709h-2.497v-6.12c0-1.29-.543-1.944-1.628-1.944-1.2 0-1.802.776-1.802 2.313v3.349h-2.484v-3.35c0-1.537-.602-2.313-1.802-2.313-1.085 0-1.628.655-1.628 1.945v6.119H4.831V8.285c0-1.29.328-2.314.987-3.07.68-.759 1.57-1.147 2.674-1.147 1.278 0 2.246.491 2.886 1.474L12 6.585l.622-1.043c.64-.983 1.608-1.474 2.886-1.474 1.104 0 1.994.388 2.674 1.146.658.757.986 1.781.986 3.07v6.305z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/material-ui.svg b/assets/lib/simple-icons/icons/material-ui.svg
deleted file mode 100644
index a7c4b31e..00000000
--- a/assets/lib/simple-icons/icons/material-ui.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Material-UI icon</title><path d="M0 2.475v10.39l3 1.733V7.67l6 3.465 6-3.465v3.465l-6 3.463v3.464l6 3.463 9-5.195V9.402l-3 1.733v3.463l-6 3.464-3-1.732 6-3.465V2.475L9 7.67 0 2.475zm24 0l-3 1.73V7.67l3-1.732V2.474Z"/></svg>
diff --git a/assets/lib/simple-icons/icons/materialdesign.svg b/assets/lib/simple-icons/icons/materialdesign.svg
index 3d0011a7..9489fb6b 100644
--- a/assets/lib/simple-icons/icons/materialdesign.svg
+++ b/assets/lib/simple-icons/icons/materialdesign.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Material Design icon</title><path d="M12 0C5.377 0 0 5.377 0 12s5.377 12 12 12 12-5.377 12-12S18.623 0 12 0zm0 .75c2.871 0 5.482 1.082 7.469 2.85H4.53A11.197 11.197 0 0 1 12 .75zm-7.186 3.6h14.372L12 18.723 4.814 4.35zM3.6 4.53V19.47A11.197 11.197 0 0 1 .75 12c0-2.87 1.082-5.481 2.85-7.468zm16.8 0A11.197 11.197 0 0 1 23.25 12c0 2.871-1.082 5.482-2.85 7.469V4.53zM4.35 5.1l7.275 14.55H4.35V5.1zm15.3 0v14.55h-7.275L19.651 5.1zM4.533 20.4H19.469A11.197 11.197 0 0 1 12 23.25a11.197 11.197 0 0 1-7.468-2.85z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Material Design</title><path d="M12 0C5.377 0 0 5.377 0 12s5.377 12 12 12 12-5.377 12-12S18.623 0 12 0zm0 .75c2.871 0 5.482 1.082 7.469 2.85H4.53A11.197 11.197 0 0 1 12 .75zm-7.186 3.6h14.372L12 18.723 4.814 4.35zM3.6 4.53V19.47A11.197 11.197 0 0 1 .75 12c0-2.87 1.082-5.481 2.85-7.468zm16.8 0A11.197 11.197 0 0 1 23.25 12c0 2.871-1.082 5.482-2.85 7.469V4.53zM4.35 5.1l7.275 14.55H4.35V5.1zm15.3 0v14.55h-7.275L19.651 5.1zM4.533 20.4H19.469A11.197 11.197 0 0 1 12 23.25a11.197 11.197 0 0 1-7.468-2.85z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/materialdesignicons.svg b/assets/lib/simple-icons/icons/materialdesignicons.svg
index 244d1ebd..c896d299 100644
--- a/assets/lib/simple-icons/icons/materialdesignicons.svg
+++ b/assets/lib/simple-icons/icons/materialdesignicons.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Material Design Icons icon</title><path d="M0 0h7.2v2.4h9.6V0H24v7.2h-2.4v9.6H24V24h-7.2v-2.4H7.2V24H0v-7.2h2.4V7.2H0V0m16.8 7.2V4.8H7.2v2.4H4.8v9.6h2.4v2.4h9.6v-2.4h2.4V7.2h-2.4M2.4 2.4v2.4h2.4V2.4H2.4m16.8 0v2.4h2.4V2.4h-2.4M2.4 19.2v2.4h2.4v-2.4H2.4m16.8 0v2.4h2.4v-2.4z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Material Design Icons</title><path d="M0 0h7.2v2.4h9.6V0H24v7.2h-2.4v9.6H24V24h-7.2v-2.4H7.2V24H0v-7.2h2.4V7.2H0V0m16.8 7.2V4.8H7.2v2.4H4.8v9.6h2.4v2.4h9.6v-2.4h2.4V7.2M2.4 2.4v2.4h2.4V2.4m14.4 0v2.4h2.4V2.4M2.4 19.2v2.4h2.4v-2.4m14.4 0v2.4h2.4v-2.4z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/mathworks.svg b/assets/lib/simple-icons/icons/mathworks.svg
deleted file mode 100644
index f26ab3de..00000000
--- a/assets/lib/simple-icons/icons/mathworks.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 24 24"><title>Mathworks icon</title><path d="M4.323 16.248C3.13 15.354 1.64 14.31 0 13.118l5.814-2.236 2.385 1.789c-1.789 2.087-2.981 2.832-3.876 3.578zm15.95-6.26c-.447-1.193-.745-2.385-1.193-3.578-.447-1.342-.894-2.534-1.64-3.578-.298-.447-.894-1.491-1.64-1.491-.149 0-.298.149-.447.149-.447.149-1.043 1.043-1.193 1.64-.447.745-1.342 1.938-1.938 2.683-.149.298-.447.596-.596.745-.447.298-.894.745-1.491 1.043-.149 0-.298.149-.447.149-.447 0-.745.298-1.043.447-.447.447-.894 1.043-1.342 1.491 0 .149-.149.298-.298.447l2.236 1.64c1.64-1.938 3.578-3.876 4.919-7.602 0 0-.447 4.025-4.025 8.348-2.236 2.534-4.025 3.876-4.323 4.174 0 0 .596-.149 1.193.149 1.193.447 1.789 2.087 2.236 3.279.298.894.745 1.64 1.043 2.534 1.193-.298 1.938-.745 2.683-1.491s1.491-1.64 2.236-2.385c1.342-1.64 2.981-3.727 5.068-2.683.298.149.745.447.894.596.447.298.745.596 1.193 1.043.745.596 1.043 1.043 1.64 1.342-1.491-2.981-2.534-5.963-3.727-9.093z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/matomo.svg b/assets/lib/simple-icons/icons/matomo.svg
new file mode 100644
index 00000000..78d31f3f
--- /dev/null
+++ b/assets/lib/simple-icons/icons/matomo.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Matomo</title><path d="M6.664 15.37a3.336 3.336 0 0 1-3.332 3.332C1.495 18.702 0 17.208 0 15.37s1.495-3.333 3.332-3.333a3.338 3.338 0 0 1 3.332 3.333zm11.565-3.644a3.658 3.658 0 0 1-1.987.591 3.642 3.642 0 0 1-1.872-.529l.008.012a3.728 3.728 0 0 1-1.235-1.19l-2.612-3.693a.17.17 0 0 1-.027-.033A3.312 3.312 0 0 0 7.67 5.298a3.318 3.318 0 0 0-2.848 1.586.146.146 0 0 1-.021.028l-3.428 5.343a3.663 3.663 0 0 1 5.094 1.18.13.13 0 0 1 .015.018l2.756 3.869a3.305 3.305 0 0 0 2.699 1.38 3.31 3.31 0 0 0 2.711-1.379l.009-.013c.073-.103.137-.202.195-.305l1.442-2.255 1.935-3.024zm5.275 1.902l-.014-.028-.044-.066a1.109 1.109 0 0 0-.029-.044l-3.525-5.37c.024.168.052.335.052.51 0 .741-.219 1.457-.634 2.068l-2.803 4.38 1.416 2.179-.002.002a.131.131 0 0 1 .024.028 3.338 3.338 0 0 0 2.723 1.415A3.335 3.335 0 0 0 24 15.37c0-.613-.171-1.216-.496-1.742zm-7.262-1.666a3.336 3.336 0 0 0 3.332-3.333 3.336 3.336 0 0 0-3.332-3.332 3.336 3.336 0 0 0-3.332 3.332 3.338 3.338 0 0 0 3.332 3.333z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/matrix.svg b/assets/lib/simple-icons/icons/matrix.svg
index 9fa60239..bb182177 100644
--- a/assets/lib/simple-icons/icons/matrix.svg
+++ b/assets/lib/simple-icons/icons/matrix.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Matrix icon</title><path d="M.632.55v22.9H2.28V24H0V0h2.28v.55zm7.043 7.26v1.157h.033c.309-.443.683-.784 1.117-1.024.433-.245.936-.365 1.5-.365.54 0 1.033.107 1.481.314.448.208.785.582 1.02 1.108.254-.374.6-.706 1.034-.992.434-.287.95-.43 1.546-.43.453 0 .872.056 1.26.167.388.11.716.286.993.53.276.245.489.559.646.951.152.392.23.863.23 1.417v5.728h-2.349V11.52c0-.286-.01-.559-.032-.812a1.755 1.755 0 0 0-.18-.66 1.106 1.106 0 0 0-.438-.448c-.194-.11-.457-.166-.785-.166-.332 0-.6.064-.803.189a1.38 1.38 0 0 0-.48.499 1.946 1.946 0 0 0-.231.696 5.56 5.56 0 0 0-.06.785v4.768h-2.35v-4.8c0-.254-.004-.503-.018-.752a2.074 2.074 0 0 0-.143-.688 1.052 1.052 0 0 0-.415-.503c-.194-.125-.476-.19-.854-.19-.111 0-.259.024-.439.074-.18.051-.36.143-.53.282-.171.138-.319.337-.439.595-.12.259-.18.6-.18 1.02v4.966H5.46V7.81zm15.693 15.64V.55H21.72V0H24v24h-2.28v-.55z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Matrix</title><path d="M.632.55v22.9H2.28V24H0V0h2.28v.55zm7.043 7.26v1.157h.033c.309-.443.683-.784 1.117-1.024.433-.245.936-.365 1.5-.365.54 0 1.033.107 1.481.314.448.208.785.582 1.02 1.108.254-.374.6-.706 1.034-.992.434-.287.95-.43 1.546-.43.453 0 .872.056 1.26.167.388.11.716.286.993.53.276.245.489.559.646.951.152.392.23.863.23 1.417v5.728h-2.349V11.52c0-.286-.01-.559-.032-.812a1.755 1.755 0 0 0-.18-.66 1.106 1.106 0 0 0-.438-.448c-.194-.11-.457-.166-.785-.166-.332 0-.6.064-.803.189a1.38 1.38 0 0 0-.48.499 1.946 1.946 0 0 0-.231.696 5.56 5.56 0 0 0-.06.785v4.768h-2.35v-4.8c0-.254-.004-.503-.018-.752a2.074 2.074 0 0 0-.143-.688 1.052 1.052 0 0 0-.415-.503c-.194-.125-.476-.19-.854-.19-.111 0-.259.024-.439.074-.18.051-.36.143-.53.282-.171.138-.319.337-.439.595-.12.259-.18.6-.18 1.02v4.966H5.46V7.81zm15.693 15.64V.55H21.72V0H24v24h-2.28v-.55z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/matterdotjs.svg b/assets/lib/simple-icons/icons/matterdotjs.svg
new file mode 100644
index 00000000..dc65006b
--- /dev/null
+++ b/assets/lib/simple-icons/icons/matterdotjs.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Matter.js</title><path d="M19.494 9.614c-.152 0-.265.046-.333.121a.412.412 0 0 0-.114.296c0 .314.14.469.416.469.167 0 .288-.038.364-.114a.416.416 0 0 0 .11-.302c0-.314-.137-.47-.417-.47h-.023zm-17.341.038-1.078 1.866L0 13.383h2.85v-1.9l-.058-.722Zm18.086.015v3.394l.25-.461.022.007a2.232 2.232 0 0 0 .73.224.31.31 0 0 0 .179-.053c.049-.03.068-.065.068-.125 0-.065-.027-.114-.099-.155a1.298 1.298 0 0 0-.17-.091 2.811 2.811 0 0 1-.738-.39c-.151-.129-.227-.322-.227-.567a.757.757 0 0 1 .303-.625 1.196 1.196 0 0 1 .753-.227c.295 0 .53.076.704.212a.844.844 0 0 1 .302.587v.022l-.726.14-.008-.03c-.011-.114-.038-.185-.087-.238a.299.299 0 0 0-.223-.08.227.227 0 0 0-.163.057c-.045.042-.068.087-.068.129 0 .049.008.079.019.102a.254.254 0 0 0 .05.068l.075.064a.802.802 0 0 0 .094.053l.13.05c.04.026.147.075.313.15v-.01a1.392 1.392 0 0 1 .44.275c.116.114.177.28.177.489 0 .211-.098.4-.291.567a1.022 1.022 0 0 1-.492.227H24V9.667Zm-10.08.292-.726.215-.03.504-.333.045-.072.503h.39v1.124c0 .386.049.662.15.832.107.17.322.254.655.254a1.43 1.43 0 0 0 .704-.197l-.136-.446a1.574 1.574 0 0 1-.288.049c-.113 0-.196-.034-.242-.102-.05-.065-.072-.186-.072-.356v-1.162h.59l.091-.556h-.68zm1.903 0-.726.215-.03.504-.333.045-.076.503h.394v1.124c0 .386.049.662.15.832.103.17.323.254.655.254a1.415 1.415 0 0 0 .7-.197l-.136-.446a1.574 1.574 0 0 1-.287.049c-.114 0-.193-.034-.242-.102-.046-.065-.069-.186-.069-.356v-1.162h.59l.091-.556h-.68zm-7.862.67a.848.848 0 0 0-.677.332h-.02l-.071-.31-.598.076.053.757v1.891h.772v-2.001a.39.39 0 0 1 .306-.148c.182 0 .277.114.277.33v1.82h.768v-2.002a.378.378 0 0 1 .31-.148c.178 0 .265.114.265.33v1.82h.78v-1.783c0-.643-.262-.965-.78-.965a.897.897 0 0 0-.727.33c-.12-.22-.333-.33-.628-.33Zm3.61 0a2.244 2.244 0 0 0-.564.086 2.126 2.126 0 0 0-.473.174l.215.477a2.584 2.584 0 0 1 .666-.151c.137 0 .227.03.273.083.049.05.072.133.072.242v.2l-.44.076a1.389 1.389 0 0 0-.665.273c-.151.132-.227.33-.227.594 0 .503.242.757.726.757a.908.908 0 0 0 .742-.379h.019a.957.957 0 0 0 .386.379l.435-.413a.757.757 0 0 1-.167-.25 1.07 1.07 0 0 1-.034-.302v-.95a1.62 1.62 0 0 0-.03-.34.742.742 0 0 0-.113-.277.518.518 0 0 0-.292-.211 1.472 1.472 0 0 0-.492-.069zm6.337 0c-.39.007-.68.136-.881.382a1.612 1.612 0 0 0-.303 1.033c0 .93.393 1.392 1.173 1.392a2.005 2.005 0 0 0 1.003-.273l-.16-.472a2.085 2.085 0 0 1-.688.147c-.19 0-.318-.05-.393-.147a.757.757 0 0 1-.114-.45h1.04l.36-.05c0-.212-.004-.39-.015-.53-.03-.352-.114-.605-.242-.756-.16-.186-.405-.277-.742-.277zm2.683 0a.598.598 0 0 0-.378.155.866.866 0 0 0-.254.423h-.019l-.094-.556-.583.076.057.749v1.9h.768v-1.514c0-.19.053-.33.159-.428a.522.522 0 0 1 .355-.147.984.984 0 0 1 .273.049l.178-.605a.946.946 0 0 0-.432-.099h-.026zm3.05.018-.772.08v2.395a1.513 1.513 0 0 1-.053.507c-.034.087-.133.19-.295.31l.423.447a1.892 1.892 0 0 0 .56-.466 1.06 1.06 0 0 0 .137-.598zm1.43 0a1.162 1.162 0 0 0-.727.224.692.692 0 0 0-.28.575c0 .242.076.408.216.526a2.747 2.747 0 0 0 .719.386 1.699 1.699 0 0 1 .182.102c.079.045.12.113.12.189a.19.19 0 0 1-.09.174.367.367 0 0 1-.208.05 2.126 2.126 0 0 1-.73-.205l-.25.45c.329.19.654.288.983.288a1.135 1.135 0 0 0 .769-.235c.185-.163.272-.337.272-.533a.61.61 0 0 0-.163-.454 1.29 1.29 0 0 0-.416-.258 3.746 3.746 0 0 1-.325-.147l-.114-.05a1.022 1.022 0 0 1-.113-.06l-.08-.068a.31.31 0 0 1-.06-.08.375.375 0 0 1-.015-.125.22.22 0 0 1 .075-.166.284.284 0 0 1 .197-.072c.106 0 .19.038.253.099a.439.439 0 0 1 .103.242l.62-.118a.795.795 0 0 0-.265-.53 1.014 1.014 0 0 0-.673-.204Zm-7.204.58h.022c.118 0 .193.037.227.113.034.075.05.212.05.4h-.613a.829.829 0 0 1 .083-.381c.049-.084.125-.125.23-.133zm-6.103 1.01v.472a.47.47 0 0 1-.341.144c-.178 0-.265-.083-.265-.25 0-.113.05-.189.14-.242a1.4 1.4 0 0 1 .466-.125zm-4.295.128v1.007h.48v-.174zm14.094.064a.488.488 0 0 0-.454.489.488.488 0 0 0 .492.488.488.488 0 0 0 .484-.492.488.488 0 0 0-.488-.485.488.488 0 0 0-.037 0zm2.437.742v.257h.704a2.176 2.176 0 0 1-.704-.257z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/mattermost.svg b/assets/lib/simple-icons/icons/mattermost.svg
index e9f1d9e5..c56cbe5b 100644
--- a/assets/lib/simple-icons/icons/mattermost.svg
+++ b/assets/lib/simple-icons/icons/mattermost.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Mattermost icon</title><path d="M12.081 0C7.048-.034 2.339 3.125.637 8.153c-2.125 6.276 1.24 13.086 7.516 15.21 6.276 2.125 13.086-1.24 15.21-7.516 1.727-5.1-.172-10.552-4.311-13.557l.126 2.547c2.065 2.282 2.88 5.512 1.852 8.549-1.534 4.532-6.594 6.915-11.3 5.321-4.708-1.593-7.28-6.559-5.745-11.092 1.031-3.046 3.655-5.121 6.694-5.67l1.642-1.94A4.87 4.87 0 0 0 12.08 0zm3.528 1.094a.284.284 0 0 0-.123.024l-.004.001a.33.33 0 0 0-.109.071c-.145.142-.657.828-.657.828L13.6 3.4l-1.3 1.585-2.232 2.776s-1.024 1.278-.798 2.851c.226 1.574 1.396 2.34 2.304 2.648.907.307 2.302.408 3.438-.704 1.135-1.112 1.098-2.75 1.098-2.75l-.087-3.56-.07-2.05-.047-1.775s.01-.856-.02-1.057a.33.33 0 0 0-.035-.107l-.006-.012-.007-.011a.277.277 0 0 0-.229-.14z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Mattermost</title><path d="M12.081 0C7.048-.034 2.339 3.125.637 8.153c-2.125 6.276 1.24 13.086 7.516 15.21 6.276 2.125 13.086-1.24 15.21-7.516 1.727-5.1-.172-10.552-4.311-13.557l.126 2.547c2.065 2.282 2.88 5.512 1.852 8.549-1.534 4.532-6.594 6.915-11.3 5.321-4.708-1.593-7.28-6.559-5.745-11.092 1.031-3.046 3.655-5.121 6.694-5.67l1.642-1.94A4.87 4.87 0 0 0 12.08 0zm3.528 1.094a.284.284 0 0 0-.123.024l-.004.001a.33.33 0 0 0-.109.071c-.145.142-.657.828-.657.828L13.6 3.4l-1.3 1.585-2.232 2.776s-1.024 1.278-.798 2.851c.226 1.574 1.396 2.34 2.304 2.648.907.307 2.302.408 3.438-.704 1.135-1.112 1.098-2.75 1.098-2.75l-.087-3.56-.07-2.05-.047-1.775s.01-.856-.02-1.057a.33.33 0 0 0-.035-.107l-.006-.012-.007-.011a.277.277 0 0 0-.229-.14z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/matternet.svg b/assets/lib/simple-icons/icons/matternet.svg
index ef608d62..fea6cbbc 100644
--- a/assets/lib/simple-icons/icons/matternet.svg
+++ b/assets/lib/simple-icons/icons/matternet.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Matternet icon</title><path d="M19.229 4.18l-4.066 2.327V1.826L11.993 0 8.827 1.83v4.677L4.78 4.17 1.606 6v3.664L5.657 12l-4.054 2.343V18l3.165 1.831 4.044-2.338v4.681L11.983 24l3.174-1.831v-4.676l4.052 2.327 3.173-1.829v-3.646L18.339 12l4.058-2.336V6l-3.164-1.82h-.004zm.373 3.429V5.715l1.639.942v1.905l-1.636-.953h-.003zm1.638 9.286l-6.075-3.504 1.65-.945L21.239 15v1.896l.001-.001zm-6.827-3.95L12.763 12l6.452-3.726 1.641.944-6.446 3.727h.003zM3.134 9.219l1.641-.944L11.228 12l-1.639.945-6.455-3.726zm5.69 4.17l-6.075 3.508V15l4.435-2.555 1.641.945v-.001zM2.749 8.564V6.66l1.64-.945v1.898l-1.64.951zm9.627 0V1.55l1.641.937V7.61l-1.641.953v.001zm-2.402-.96V2.493l1.64-.944v7.004l-1.64-.949zm8.866-1.889v1.898l-6.456 3.734V9.442l6.456-3.727zm-7.228 3.724v1.897L5.153 7.609V5.715l6.46 3.721-.001.003zm-2.403 6.513l-4.435 2.555-1.64-.944 6.074-3.508v1.897zm.765-2.343l1.64-.945v7.453l-1.64.959v-7.467zm3.656 8.115l-1.639.954-1.64-.951 1.64-.946 1.639.946v-.003zm.394-.657l-1.648-.95v-7.441l1.648.944v7.458-.011zm6.831-3.504l-1.641.944-4.425-2.555v-1.897l6.075 3.508h-.009z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Matternet</title><path d="M19.229 4.18l-4.066 2.327V1.826L11.993 0 8.827 1.83v4.677L4.78 4.17 1.606 6v3.664L5.657 12l-4.054 2.343V18l3.165 1.831 4.044-2.338v4.681L11.983 24l3.174-1.831v-4.676l4.052 2.327 3.173-1.829v-3.646L18.339 12l4.058-2.336V6l-3.164-1.82h-.004zm.373 3.429V5.715l1.639.942v1.905l-1.636-.953h-.003zm1.638 9.286l-6.075-3.504 1.65-.945L21.239 15v1.896l.001-.001zm-6.827-3.95L12.763 12l6.452-3.726 1.641.944-6.446 3.727h.003zM3.134 9.219l1.641-.944L11.228 12l-1.639.945-6.455-3.726zm5.69 4.17l-6.075 3.508V15l4.435-2.555 1.641.945v-.001zM2.749 8.564V6.66l1.64-.945v1.898l-1.64.951zm9.627 0V1.55l1.641.937V7.61l-1.641.953v.001zm-2.402-.96V2.493l1.64-.944v7.004l-1.64-.949zm8.866-1.889v1.898l-6.456 3.734V9.442l6.456-3.727zm-7.228 3.724v1.897L5.153 7.609V5.715l6.46 3.721-.001.003zm-2.403 6.513l-4.435 2.555-1.64-.944 6.074-3.508v1.897zm.765-2.343l1.64-.945v7.453l-1.64.959v-7.467zm3.656 8.115l-1.639.954-1.64-.951 1.64-.946 1.639.946v-.003zm.394-.657l-1.648-.95v-7.441l1.648.944zm6.831-3.504l-1.641.944-4.425-2.555v-1.897l6.075 3.508h-.009z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/max.svg b/assets/lib/simple-icons/icons/max.svg
new file mode 100644
index 00000000..b6bcb287
--- /dev/null
+++ b/assets/lib/simple-icons/icons/max.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Max</title><path d="M1.769 0A1.77 1.77 0 0 0 0 1.769V22.23A1.77 1.77 0 0 0 1.769 24H22.23A1.77 1.77 0 0 0 24 22.231V1.77A1.77 1.77 0 0 0 22.231 0zm12.485 3.28a4.301 4.301 0 0 1 4.3 4.302 4.301 4.301 0 0 1-1.993 3.63 6.085 6.085 0 0 1 1.054 3.422 6.085 6.085 0 0 1-6.085 6.085 6.085 6.085 0 0 1-6.085-6.085 6.085 6.085 0 0 1 4.66-5.916 4.301 4.301 0 0 1-.152-1.136 4.301 4.301 0 0 1 4.301-4.301zm0 1.849a2.453 2.453 0 0 0-2.453 2.453 2.453 2.453 0 0 0 2.453 2.453 2.453 2.453 0 0 0 2.453-2.453 2.453 2.453 0 0 0-2.453-2.453zm-2.724 5.268a4.237 4.237 0 0 0-4.237 4.237 4.237 4.237 0 0 0 4.237 4.237 4.237 4.237 0 0 0 4.237-4.237 4.237 4.237 0 0 0-4.237-4.237zm.032 2.54a1.781 1.781 0 1 1 0 3.562 1.781 1.781 0 0 1 0-3.562Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/maxplanckgesellschaft.svg b/assets/lib/simple-icons/icons/maxplanckgesellschaft.svg
new file mode 100644
index 00000000..6600f0b0
--- /dev/null
+++ b/assets/lib/simple-icons/icons/maxplanckgesellschaft.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Max-Planck-Gesellschaft</title><path d="M12 0a12 12 0 1 0 12 12A12.011 12.011 0 0 0 12 0zm-.049.331A11.669 11.669 0 0 1 23.67 12 11.68 11.68 0 0 1 12 23.669 11.669 11.669 0 0 1 11.951.33zM12 1.464A10.56 10.56 0 0 0 1.45 12c0 3.371 1.715 6.617 4.503 8.64a1.543 1.543 0 0 0 .32.183.126.126 0 0 0 .126-.023l.034-.057a.114.114 0 0 0 .035-.092c0-.08-.103-.148-.24-.343a3.166 3.166 0 0 1-.537-1.725 2.526 2.526 0 0 1 .514-1.566c.423.446 1.337 1.246 1.314 1.989-.023.743-.789.777-.617 1.394.103.389.389.229.446.526.08.503.765.834 1.062.788.08-.011.138.046.275.194.137.15.708.183.937.138.228-.046.468.16.914.103.446-.057.697-.103.937-.103.24 0 2.572-.035 4.115.205.274.046.354-.08.24-.285-.56-.983-.64-1.806-.32-2.858.57.046 1.394.195 2.468-.457a1.257 1.257 0 0 0 .583-1.085c-.011-.24-.114-.537-.057-.766.057-.229.148-.308.24-.366.411-.297.114-.525.046-.548a.389.389 0 0 0 .125-.526c-.08-.08-.308-.709-.045-.834.262-.126.605-.206.925-.355a.514.514 0 0 0 .275-.685 124.62 124.62 0 0 0-1.029-2.4c-.16-.355-.057-.583-.103-.835-.046-.251-.308-.8-.491-1.234-.08-.194.434-.148.046-.868 0-.023.537-.229 0-.629a3.017 3.017 0 0 1-.686-.766.114.114 0 0 1 0-.148c.308-.274.32-.663-.012-.857-.331-.195-.514 0-.765.16-.08.057-.126.09-.218.057l-.205-.137c.308-.298.377-.595.354-.64-.023-.046-.526-.149-1.166.114l-.045-.034c.263-.446.114-.766.102-.79h-.011a9.257 9.257 0 0 1 1.417-1.519h.012c.022-.034.034-.069-.023-.103l-.115-.068A10.56 10.56 0 0 0 12 1.464zm-.073.316a10.206 10.206 0 0 1 4.805 1.169.046.046 0 0 1 .012.08 11.12 11.12 0 0 0-1.166 1.302 8.354 8.354 0 0 0-3.577-.8A8.491 8.491 0 0 0 3.531 12a8.24 8.24 0 0 0 2.046 5.508 2.64 2.64 0 0 0-.217 1.075 2.926 2.926 0 0 0 .377 1.451C3.268 18.07 1.783 15.097 1.783 12A10.206 10.206 0 0 1 11.926 1.78zm.28.266c-.034 0-.046.023-.057.046l-.103 1.142a.046.046 0 0 0 .046.046h.125c.023.011.046-.011.046-.034l.114-1.143a.057.057 0 0 0-.046-.057zm-1.686.111c-.006 0-.011 0-.017.003h-.137c-.023.011-.046.034-.035.057l.218 1.132c0 .034.023.045.057.045l.125-.023c.023 0 .046-.022.035-.045l-.217-1.132a.038.038 0 0 0-.03-.037zm3.514.106L13.59 3.36a.046.046 0 0 0 .034.069l.126.034a.057.057 0 0 0 .057-.034l.434-1.075a.046.046 0 0 0-.034-.068l-.137-.023zm-5.313.34a.046.046 0 0 0-.013.003l-.114.034a.046.046 0 0 0-.034.068l.514 1.04.057.023.126-.045a.046.046 0 0 0 .035-.069L8.766 2.63a.046.046 0 0 0-.045-.026zm6.913.134a.046.046 0 0 0-.034.017l-.743.949c-.023.023-.011.057.023.068l.126.046c.023.012.034 0 .057-.011l.743-.949a.057.057 0 0 0-.023-.068l-.126-.046a.046.046 0 0 0-.023-.006zm-8.592.639a.028.028 0 0 0-.025.007l-.114.068c-.034.012-.034.046-.011.07l.765.879c.012.023.034.023.057.011l.115-.068a.046.046 0 0 0 .011-.069l-.766-.88a.06.06 0 0 0-.032-.018zm4.93.498a8.137 8.137 0 0 1 .028 0 8.011 8.011 0 0 1 3.383.732 2.583 2.583 0 0 0-.469.297A7.211 7.211 0 0 0 12 4.32 7.691 7.691 0 0 0 4.32 12c0 1.84.571 3.451 1.691 4.8-.057.103-.148.24-.251.4h-.011A7.909 7.909 0 0 1 3.874 12a8.137 8.137 0 0 1 8.098-8.126zm-6.51.618l-.102.09a.057.057 0 0 0 0 .08l.971.675c.023.011.046.012.058-.011l.103-.08a.057.057 0 0 0 0-.08l-.972-.674zm10.177.191c.008 0 .014 0 .018.003.069.034-.091.64-.446.983-.354.342-.925.708-.982.697-.058-.012.194-.674.491-1.017.3-.365.8-.659.919-.666zm-3.616.025a6.491 6.491 0 0 1 2.56.526 3.577 3.577 0 0 0-.423.755c0-.218-.057-.389-.046-.526.012-.137-.582.103-1.108.948a2.274 2.274 0 0 0-.252.606c-.011-.32-.08-.56-.103-.56a1.84 1.84 0 0 0-.971 1.006 2.56 2.56 0 0 0-.126.388c-.023-.217-.08-.365-.103-.365-.023 0-.674.263-.982 1.017a1.76 1.76 0 0 0-.126.526c-.057-.263-.16-.423-.194-.389-.217.274-.652.4-.87 1.097a1.509 1.509 0 0 0-.079.48c-.091-.228-.229-.366-.263-.366s-.697.629-.8 1.246a1.806 1.806 0 0 0 .023.663c-.126-.206-.286-.343-.354-.549-.103.058-.652.572-.663 1.223a2.251 2.251 0 0 0 .08.697c-.183-.331-.434-.48-.469-.468-.034.011-.457.468-.548 1.268a1.349 1.349 0 0 0 .045.526c-.171-.194-.32-.297-.33-.286a2.56 2.56 0 0 0-.413 1.018A7.474 7.474 0 0 1 4.651 12c-.16-4.046 3.235-7.303 7.372-7.292zm4.571.618a2.023 2.023 0 0 1 .035 0c.091.011-.218.548-.755.777-.537.228-.971.285-1.017.263-.046-.023.469-.663.914-.858a2.023 2.023 0 0 1 .823-.182zm-2.643.316c.003 0 .004 0 .003.004-.011.045.24.754-.297 1.188a2.4 2.4 0 0 0-.64.732c-.057.102-.217-.572.194-1.212.236-.375.693-.71.74-.712zM4.15 5.89a.031.031 0 0 0-.024.018l-.08.103a.046.046 0 0 0 .023.08l1.12.435a.046.046 0 0 0 .045-.023l.092-.103c.023-.023.011-.057-.023-.069l-1.12-.434a.057.057 0 0 0-.033-.007zm13.44.1c.048 0 .09.014.124.044.297.298-.331.469-.206.697a3.509 3.509 0 0 0 .858.96c.137.115.16.355-.377.469-.538.114-2.697.674-3.84 1.886-1.429 1.508-2.332 3.463-2.457 3.2-.126-.263-.412-.32-.366-.4 2.045-3.52 5.257-6.298 6.011-6.766a.468.468 0 0 1 .254-.09zm-1.339.113l.183.126c.115.068.16.09.103.137C13.943 8.57 12 11.372 11.154 12.72c-.023.046-.068.034-.148.034-.903-.068-1.417 1.017-1.017 2.035-.046.205-.48.605-.515.628-.034.023-.114.16.034.149.15-.012.48-.366.618-.515.045.069.251.229.148.32a7.269 7.269 0 0 1-1.588 1.2c-.297.138.48.24 1.794-.948.08-.069.171.274.286.423-.229.743.331 2.183.24 2.628a.32.32 0 0 1-.32.309c-1.303.034-1.429-.034-2.092.16-.308.091-.228.297-.011.24.217-.057.526-.172 1.931-.08.355.011.743-.069.743-.652s-.411-2.102-.274-2.32a.789.789 0 0 0 .4.16c-.023.515.8 2.172.434 3.086-.137.343-.731.309-1.76.206-1.748-.172-2.32.206-2.354 0-.034-.229.183-.446.183-.937 0-.492-.755-1.44-1.269-1.977a2.229 2.229 0 0 0 .903-.218c.754-.354.903-1.154.926-1.188a1.257 1.257 0 0 0-.435-.046l.092-.046c.731-.4.925-1.257.891-1.268a1.943 1.943 0 0 0-.457-.034l.229-.08c.777-.309.994-1.177.971-1.212a1.84 1.84 0 0 0-.4-.046l.217-.091c.709-.354.96-1.154.926-1.177a1.2 1.2 0 0 0-.377-.046 2.709 2.709 0 0 0 .514-.171c.766-.332 1.017-1.063.983-1.097a1.246 1.246 0 0 0-.343-.057 3.943 3.943 0 0 0 .503-.15c.754-.25 1.051-.97 1.006-.982l-.423-.091a2.8 2.8 0 0 0 .754-.149c.812-.274 1.097-.766 1.12-.983a.686.686 0 0 0-.263-.091 3.349 3.349 0 0 0 .538-.138c.754-.308 1.074-1.062 1.097-1.12a3.349 3.349 0 0 0 .445-.182zm-1.28.5a2.057 2.057 0 0 1 .229.014c.034.023-.286.56-.811.766-.526.206-1.006.217-1.075.171-.057-.034.492-.651.937-.823a2.057 2.057 0 0 1 .72-.127zm-2.468.105c.057-.01.217.664 0 .984-.389.582-.412.377-.834.948-.023.023-.023-.743.125-1.074.24-.538.652-.846.709-.858zm-9.36.823l-.057.023a.617.617 0 0 1-.057.126.046.046 0 0 0 .034.069l1.2.171c.023 0 .045-.011.045-.034l.07-.115a.046.046 0 0 0-.035-.068zm10.289.233a1.874 1.874 0 0 1 .476.065c.058.022-.32.571-.88.742-.56.172-1.108.149-1.097.115.012-.035.469-.675.926-.835a1.874 1.874 0 0 1 .575-.087zm-2.152.019c.068-.012.194.651-.046 1.063-.194.343-.377.263-.708.765-.035.046-.126-.411.08-1.04a1.44 1.44 0 0 1 .674-.788zm6.96.673c.034.005.06.035.034.104-.114.331-1.04.629-.994.4.046-.229 0-.251.069-.263.068-.011.4-.126.857-.24a.085.085 0 0 1 .035-.001zm-1.368.317c.03 0 .05.004.054.016.034.091-.206.685-.537.8-.332.114-.537.103-.526.045a1.257 1.257 0 0 0 .057-.468c-.02-.12.739-.389.952-.393zm1.286.187a.091.091 0 0 1 .093.069c.423 1.017.595 1.291.56 1.805-.034.515.995 2.457 1.075 2.64.08.183.091.389 0 .48-.377.332-.949.355-1.178.56-.228.206-.17.286-.045.594.126.31.125.195-.126.263-.251.069-.468.663-1.006.56-.205-.034-.057.092.023.103.297.035.423-.057.526-.16.103-.103.252-.274.412-.331.16-.057.33-.057.342.068.012.126-.217.24-.308.286.114.057.445.217.16.411-.286.195-.526-.057-.56-.08-.035-.022-.194-.022-.149.035.046.057.595.148.515.251-.4.537-.07.858-.195 1.406-.126.549-.88.857-1.463.96-1.988.354-3.92-1.326-5.051-2.606.103-.24.091-.548-.012-.434-.102.114-.08.274-.32.331-.445.115-.65-.674-.788-.81-.549-.538-.766-1.304-.446-1.978.32-.674 1.029-.537 1.303-.126.274.412.194.8.388.949.195.148.55.023.618 0 .068-.023.194.491.914.468.72-.023.674-1.222.789-1.325.982-.96.48-1.818.297-2.012-.183-.194.114-.411.171-.423a1.486 1.486 0 0 0 1.074-.88s.96-.023 1.303-.708c.092-.183.378.171 1.018-.332a.091.091 0 0 1 .066-.034zm-8.085.015c.13-.046.188.654-.016 1.094-.206.445-.331.457-.571.731-.035.046-.206-.423-.046-1.006.16-.583.457-.64.606-.8a.07.07 0 0 1 .027-.02zm1.82.027c.247.007.444.077.53.084.137.011-.149.514-.754.731-.606.217-1.029.206-1.109.172-.023-.023.389-.72.846-.903a1.21 1.21 0 0 1 .486-.084zm-8.22.22a.046.046 0 0 0-.004 0l-1.235.115-.045.034-.035.137c0 .035.023.07.057.058l1.223-.115a.034.034 0 0 0 .035-.034.869.869 0 0 0 .045-.125.046.046 0 0 0-.04-.07zm11.806.203c.032.003.044.032.052.083a1.211 1.211 0 0 1-.297.858c-.262.285-.525.263-.663.297-.137.034-.091.263-.274.388-.251.172-.606-.057-.537-.16a4.994 4.994 0 0 1 1.314-1.257c.243-.15.352-.215.405-.21zm-6.622.724c.092 0 .24.365.24.674a1.177 1.177 0 0 1-.046.343c-.148.491-.445.708-.605.926a1.794 1.794 0 0 1-.183-.663 1.737 1.737 0 0 1 .594-1.28zm2.106.104a1.783 1.783 0 0 1 .294.021c.034.035-.217.629-.743.857a2.766 2.766 0 0 1-1.177.206c-.034-.023.503-.731.96-.948a1.783 1.783 0 0 1 .665-.136zm6.614.033c-.56.023-1.211.708-1.417.8-.206.091-.149.171-.023.125.126-.045.674-.537 1.223-.731.549-.194.411.206.571.183.16-.023-.034-.389-.354-.377zm-14.262.544a.07.07 0 0 0-.023.004l-1.19.412c-.022.011-.033.023-.033.045 0 .023-.012.092-.012.138a.046.046 0 0 0 .069.045l1.177-.411a.034.034 0 0 0 .034-.034c0-.046.012-.103.012-.15 0-.033-.013-.048-.034-.049zm14.388.004c-.046.012.045.252-.195.263-.525.034-.948.537-1.268.686a1.474 1.474 0 0 1-.434.16.035.035 0 0 0 .011.068c1.337.183 1.851.126 1.863.08.011-.045-.068-.137-.046-.194a1.291 1.291 0 0 0 .012-.629c-.023-.09.205-.034.205-.148 0-.114-.068-.297-.148-.286zm-.297.537a.091.091 0 0 1 .091.069 1.211 1.211 0 0 1 0 .457c-.023.103-.628.057-.948.023-.08 0-.206-.011.034-.16s.469-.32.823-.389zm-3.848.003c.121.01.24.169.248.34.034.412-.206.64-.446.823-.24.183-.354.503-.297.583a.171.171 0 0 0 .217-.103c.171-.377.686-.56.766-.766.08-.205.034-.503.023-.64-.012-.137.102-.137.182-.125.08.011.16.16.206.308.332.857-.491 1.372-.628 1.577-.138.206.125.789-.229 1.006-.457.286-.709-.251-.777-.354a.423.423 0 0 1-.057-.355c.034-.16.057-.377-.046-1.062-.046-.309.571-1.052.72-1.189a.151.151 0 0 1 .118-.043zm-5.855.169c.057.205.423.365.423.743a1.703 1.703 0 0 1-.583 1.234 2.023 2.023 0 0 1-.251-.869c-.023-.72.274-.971.41-1.108zm2.283.046a2 2 0 0 1 .197.011c.034.011-.206.617-.709.869-.503.251-1.177.285-1.154.228.023-.046.4-.731.846-.937a2 2 0 0 1 .82-.17zm-6.738.875a.057.057 0 0 0-.025.004l-1.074.72c-.023 0-.023.023-.023.046s.011.092.011.137a.057.057 0 0 0 .08.035l1.075-.709c.01-.011.022-.023.01-.034v-.149a.057.057 0 0 0-.054-.05zm9.195.438a.057.057 0 0 1 .06.047c.068.468 0 1.12-.411 1.028-.115-.023-.16-.24-.138-.331.023-.092.355-.595.457-.732a.057.057 0 0 1 .032-.012zm-3.26.012a2.103 2.103 0 0 1 .234.012c.057.022-.194.64-.663.868-.468.229-.743.103-1.223.252.035-.172.343-.743.812-.949a2.103 2.103 0 0 1 .84-.183zm-2.44.092c.206.103.446.388.468.937.023.548-.365.994-.525 1.074-.103-.423-.297-.503-.297-.914a2.057 2.057 0 0 1 .354-1.097zm4.152.227c-.347.016-.568.511-.518 1.041a.914.914 0 0 0 .583.812c.263.091.069.457.423.457.16 0 .194-.24.103-.275-.08-.034-.057.138-.16.115-.103-.023-.023-.149-.206-.343-.183-.194-.32-.137-.491-.411-.172-.275-.035-1.372.354-1.235.388.137.183.572.114.914-.068.343.286.32.32.24.034-.08-.126-.102-.16-.217-.034-.114.4-.868-.206-1.074a.42.42 0 0 0-.156-.024zm7.24.093a.079.079 0 0 0-.066.068 4.217 4.217 0 0 1-.08.606c-.046.206.137.457.411.308.274-.148.549-.33.834-.388.069-.011.08-.114.012-.114-.103 0-.515.183-.675.286-.16.102-.502.308-.48-.092.012-.149.103-.503.103-.606 0-.051-.028-.071-.058-.068zm-14.64.772a.046.046 0 0 0-.032.016l-.88.972c-.012.011-.023.034-.012.045a.625.625 0 0 1 .046.138.046.046 0 0 0 .08.023l.869-.96c.011-.012.011-.023.011-.046l-.034-.149a.046.046 0 0 0-.047-.039zm4.976.149a.72.72 0 0 1 .226.016c.023.023-.171.674-.674.937s-1.086.309-1.143.24c-.057-.069.172-.777.697-1.006.329-.142.675-.183.894-.187zm-2.523.264c.107.011.59.419.6.997a1.646 1.646 0 0 1-.388 1.052c-.149-.137-.469-.491-.503-.949v-.068c0-.492.217-.983.274-1.029.004-.003.01-.004.017-.003zm1.985 1.07c.133.003.217.018.204.03-.034.035-.206.663-.708.915a1.383 1.383 0 0 1-.995.148c.263-.297.206-.731.64-.937.279-.129.638-.159.86-.155zm-3.866.133a.057.057 0 0 0-.044.023l-.617 1.177c-.012.012 0 .035 0 .046l.08.137a.046.046 0 0 0 .08-.011l.617-1.166c0-.011.011-.023 0-.046l-.069-.137a.057.057 0 0 0-.047-.023zm7.66.829c.014.002.03.011.044.028 1.783 1.932 2.915 2.31 3.532 2.492.057.023.046.091.023.16-.286 1.005-.435 1.406 0 2.503.057.148.103.262-.023.24-.88-.16-1.075-.297-3.852-.069-.194.023.069-.388.035-.663.251-.034.663-.148.743-.56.08-.411-.24-.868-.206-.937.4-.766-.023-1.611-.354-3.04-.026-.103.012-.16.057-.154zm-6.873.5c-.017.003-.031.014-.031.031l-.331 1.372c-.012.023 0 .034 0 .046l.114.114a.046.046 0 0 0 .08-.012l.32-1.36c.011-.011 0-.023 0-.034l-.103-.137a.049.049 0 0 0-.049-.02zm2.489 2.851c.056.007.111.04.154.083.114.115-.08.32-.103.492-.08.022-.331.034-.274-.309.036-.214.13-.277.223-.266zm1.583.096c.155-.01.304.046.297.124-.035.492-.24 1.052.137 1.612.149.217-.594.251-.731-.32-.092-.423-.126-1.143.045-1.314a.394.394 0 0 1 .252-.102zm.962.04c.203-.002.475.028.546.05.115.034-.091.777.777 1.12.08.034-.011 1.006-1.28.686-.182-.046-.685-.846-.274-1.806.013-.034.11-.048.23-.05zm1.938.018c.23.031.238.746-.112.866-.674.229-.948-.56-.834-.731.114-.172.503.114.834-.103a.164.164 0 0 1 .112-.032zm-3.78.073c.128-.004.245.022.251.085.012.126-.126.617.034 1.165-.034.08-.525.046-.662-.32-.069-.308-.046-.72.057-.834.051-.057.191-.091.32-.096z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/maytag.svg b/assets/lib/simple-icons/icons/maytag.svg
new file mode 100644
index 00000000..f1cc00c3
--- /dev/null
+++ b/assets/lib/simple-icons/icons/maytag.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Maytag</title><path d="M22.167 9.864c-.714 0-1.193.194-1.513.465-.65.55-.648 1.373-.648 1.627 0 .297.025 1.285.61 1.784.338.286.72.396 1.312.396.62 0 .962-.407.962-.407h.026s.065.102.179.196c.105.085.256.16.256.16h.358s-.026-.249-.026-.716v-.662c0-.093.027-.159.081-.198a.483.483 0 0 1 .236-.073v-.31h-1.803v.31c.066 0 .272.008.348.056.077.048.15.09.15.262v.418c0 .134.036.266.036.266-.226.213-.731.242-.954.16-.343-.126-.532-.321-.532-1.635 0-.36-.025-1.078.281-1.409.178-.192.47-.23.678-.23.38 0 .622.11.794.47.075.159.246.561.246.561h.325l-.056-1.282c-.206-.082-.57-.209-1.346-.209zM.015 9.902v.345c.423 0 .582.077.582.287v2.843c0 .139-.05.238-.15.295-.099.056-.248.084-.447.084v.349h1.56v-.349c-.202 0-.344-.029-.428-.087-.083-.058-.125-.158-.125-.3v-2.7h.037l1.195 3.436h.579l1.047-3.435h.045v2.776c0 .108-.012.212-.118.268-.078.043-.274.042-.354.042v.349h3.526v-.349c-.09.002-.326-.016-.416-.054-.096-.04-.212-.159-.081-.58l.142-.462h1.303l.121.38c.15.465.195.595.078.66-.103.056-.303.056-.387.056v.349h2.064v-.35c-.045-.002-.158.002-.259-.07-.12-.096-.18-.268-.212-.367a68.88 68.88 0 0 1-.874-2.836 16.625 16.625 0 0 1-.155-.58H7.163l-1.03 3.099c-.08.24-.173.47-.28.6-.116.142-.297.155-.42.155-.279 0-.376-.05-.376-.31v-2.912c0-.21.16-.287.583-.287v-.345H3.659l-.749 2.623h-.037l-.878-2.623zm9.229 0v.345c.149 0 .262.017.33.049a.393.393 0 0 1 .171.192 74.949 74.949 0 0 1 1.026 2.23v.752a.281.281 0 0 1-.035.149.227.227 0 0 1-.113.087.709.709 0 0 1-.203.04 3.98 3.98 0 0 1-.283.01v.349h2.288v-.351a3.448 3.448 0 0 1-.14-.007.701.701 0 0 1-.212-.043.243.243 0 0 1-.118-.09.263.263 0 0 1-.037-.148v-.848l.816-1.78c.063-.147.167-.367.263-.434.096-.068.213-.064.41-.066.3-.002.357.04.405.104.042.057.052.184.051.363v2.669c0 .098-.053.17-.158.215a1.213 1.213 0 0 1-.403.064v.352h2.273v-.352a1.216 1.216 0 0 1-.403-.064c-.105-.045-.158-.117-.158-.215v-2.67c0-.178.009-.303.048-.358.047-.068.104-.108.404-.108.243 0 .338.006.413.066.12.096.21.31.275.457l.176.386h.294l-.067-1.345h-4.583v.349c.138 0 .272.02.315.113.058.125-.012.398-.167.786-.225.564-.389.956-.389.956H11.7l-.562-1.223c-.132-.287-.198-.464-.198-.53 0-.055.01-.105.33-.105v-.346zm8.309 0l-1.029 3.099c-.08.24-.167.44-.273.57a.468.468 0 0 1-.321.175v.359h1.424v-.349c-.09.002-.325-.016-.416-.054-.096-.04-.212-.159-.081-.58L17 12.66h1.3l.123.38c.15.465.194.595.077.66-.103.056-.303.056-.387.056v.349h2.065v-.35c-.046-.002-.159.002-.26-.07-.12-.096-.18-.268-.212-.367a70.46 70.46 0 0 1-.874-2.836c-.066-.24-.118-.424-.155-.58zm-10.247.66h.027l.475 1.761h-1.08zm10.39 0h.027l.475 1.761h-1.08Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/mazda.svg b/assets/lib/simple-icons/icons/mazda.svg
index b2a8855e..dbd17e85 100644
--- a/assets/lib/simple-icons/icons/mazda.svg
+++ b/assets/lib/simple-icons/icons/mazda.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Mazda icon</title><path d="M11.999 12.876c-.036 0-.105-.046-.222-.26a7.531 7.531 0 00-1.975-2.353A8.255 8.255 0 007.7 9.065a17.945 17.945 0 00-.345-.136c-1.012-.4-2.061-.813-3.035-1.377A8.982 8.982 0 014 7.362c.194-.34.42-.665.67-.962a6.055 6.055 0 011.253-1.131 7.126 7.126 0 011.618-.806c1.218-.434 2.677-.647 4.458-.649 1.783.002 3.241.215 4.459.65a7.097 7.097 0 011.619.805c.471.319.892.699 1.253 1.13.25.298.475.623.67.963-.103.064-.212.129-.32.192-.976.564-2.023.977-3.037 1.376l-.345.136a8.26 8.26 0 00-2.1 1.198 7.519 7.519 0 00-1.975 2.354c-.117.213-.187.259-.224.259m0 7.072c-1.544-.002-2.798-.129-3.83-.387-1.013-.252-1.855-.64-2.576-1.188a5.792 5.792 0 01-1.392-1.537 7.607 7.607 0 01-.81-1.768 10.298 10.298 0 01-.467-2.983c0-.674.047-1.313.135-1.901 1.106.596 2.153.895 3.08 1.16l.215.06c1.29.371 2.314.857 3.135 1.488.475.368.89.793 1.23 1.264.369.508.663 1.088.877 1.725.096.289.2.468.403.468.207 0 .308-.18.405-.468a6.124 6.124 0 012.107-2.988c.82-.632 1.845-1.118 3.135-1.489l.216-.06c.926-.265 1.973-.564 3.078-1.16.09.589.136 1.227.136 1.9 0 .458-.046 1.664-.465 2.984a7.626 7.626 0 01-.809 1.768 5.789 5.789 0 01-1.396 1.537c-.723.548-1.565.936-2.574 1.188-1.035.258-2.288.385-3.833.387m9.692-14.556c-1.909-2.05-4.99-2.99-9.692-2.995-4.7.005-7.781.944-9.69 2.994C.89 6.913 0 9.018 0 11.874c0 1.579.39 5.6 3.564 7.676 1.9 1.242 4.354 2.046 8.435 2.052 4.083-.006 6.536-.81 8.437-2.052C23.609 17.474 24 13.452 24 11.874c0-2.848-.897-4.968-2.31-6.483Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Mazda</title><path d="M11.999 12.876c-.036 0-.105-.046-.222-.26a7.531 7.531 0 00-1.975-2.353A8.255 8.255 0 007.7 9.065a17.945 17.945 0 00-.345-.136c-1.012-.4-2.061-.813-3.035-1.377A8.982 8.982 0 014 7.362c.194-.34.42-.665.67-.962a6.055 6.055 0 011.253-1.131 7.126 7.126 0 011.618-.806c1.218-.434 2.677-.647 4.458-.649 1.783.002 3.241.215 4.459.65a7.097 7.097 0 011.619.805c.471.319.892.699 1.253 1.13.25.298.475.623.67.963-.103.064-.212.129-.32.192-.976.564-2.023.977-3.037 1.376l-.345.136a8.26 8.26 0 00-2.1 1.198 7.519 7.519 0 00-1.975 2.354c-.117.213-.187.259-.224.259m0 7.072c-1.544-.002-2.798-.129-3.83-.387-1.013-.252-1.855-.64-2.576-1.188a5.792 5.792 0 01-1.392-1.537 7.607 7.607 0 01-.81-1.768 10.298 10.298 0 01-.467-2.983c0-.674.047-1.313.135-1.901 1.106.596 2.153.895 3.08 1.16l.215.06c1.29.371 2.314.857 3.135 1.488.475.368.89.793 1.23 1.264.369.508.663 1.088.877 1.725.096.289.2.468.403.468.207 0 .308-.18.405-.468a6.124 6.124 0 012.107-2.988c.82-.632 1.845-1.118 3.135-1.489l.216-.06c.926-.265 1.973-.564 3.078-1.16.09.589.136 1.227.136 1.9 0 .458-.046 1.664-.465 2.984a7.626 7.626 0 01-.809 1.768 5.789 5.789 0 01-1.396 1.537c-.723.548-1.565.936-2.574 1.188-1.035.258-2.288.385-3.833.387m9.692-14.556c-1.909-2.05-4.99-2.99-9.692-2.995-4.7.005-7.781.944-9.69 2.994C.89 6.913 0 9.018 0 11.874c0 1.579.39 5.6 3.564 7.676 1.9 1.242 4.354 2.046 8.435 2.052 4.083-.006 6.536-.81 8.437-2.052C23.609 17.474 24 13.452 24 11.874c0-2.848-.897-4.968-2.31-6.483Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/mcafee.svg b/assets/lib/simple-icons/icons/mcafee.svg
index 9281b3bd..f10cab7d 100644
--- a/assets/lib/simple-icons/icons/mcafee.svg
+++ b/assets/lib/simple-icons/icons/mcafee.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>McAfee icon</title><path d="M12 4.843L1.608.033v19.124L12 23.967l10.392-4.81V.033zm6.155 11.594l-6.126 2.835-6.127-2.835V6.704l6.127 2.834 6.126-2.834z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>McAfee</title><path d="M12 4.8233L1.5793 0v19.1767L12 24l10.4207-4.8233V0zm6.172 11.626l-6.143 2.8428-6.1438-2.8429V6.6894l6.1439 2.8418 6.1429-2.8418z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/mcdonalds.svg b/assets/lib/simple-icons/icons/mcdonalds.svg
index 6c24399b..7abd2737 100644
--- a/assets/lib/simple-icons/icons/mcdonalds.svg
+++ b/assets/lib/simple-icons/icons/mcdonalds.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>McDonald's icon</title><path d="M17.243 3.006c2.066 0 3.742 8.714 3.742 19.478H24c0-11.588-3.042-20.968-6.766-20.968-2.127 0-4.007 2.81-5.248 7.227-1.241-4.416-3.121-7.227-5.231-7.227C3.031 1.516 0 10.888 0 22.476h3.014c0-10.763 1.658-19.47 3.724-19.47 2.066 0 3.741 8.05 3.741 17.98h2.997c0-9.93 1.684-17.98 3.75-17.98Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>McDonald's</title><path d="M17.243 3.006c2.066 0 3.742 8.714 3.742 19.478H24c0-11.588-3.042-20.968-6.766-20.968-2.127 0-4.007 2.81-5.248 7.227-1.241-4.416-3.121-7.227-5.231-7.227C3.031 1.516 0 10.888 0 22.476h3.014c0-10.763 1.658-19.47 3.724-19.47 2.066 0 3.741 8.05 3.741 17.98h2.997c0-9.93 1.684-17.98 3.75-17.98Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/mclaren.svg b/assets/lib/simple-icons/icons/mclaren.svg
new file mode 100644
index 00000000..23d77a8e
--- /dev/null
+++ b/assets/lib/simple-icons/icons/mclaren.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>McLaren</title><path d="M19.062 11.713c3.305-2.139 7.748-2.208 2.564 1.248l.082-.11c1.467-2.016-1.522-1.563-2.578-1.166l-.068.028zM6.967 13.236h1.399v.549H6.747c-.686 0-.987-.206-.987-.754v-.123c0-.466.274-.768.96-.768h1.646v.549H6.967a.248.248 0 0 0-.247.247v.069a.246.246 0 0 0 .247.231zM9.6 11.864v1.371h.823v.549h-1.92v-1.92H9.6zm-5.198.247c.191-.154.427-.241.672-.247h.549v1.92H4.525v-.96l-1.056.96H2.468v-.96l-1.221.96H0l2.18-1.646c.206-.151.343-.274.699-.274h.686v.96l.837-.713zm9.312.206a.316.316 0 0 1 .343-.316h1.303v.549h-.686v1.234h-.96v-1.467zm6.431-.316c.823 0 1.111.178 1.111.782v1.001h-.96v-.686a.411.411 0 0 0-.411-.411h-.411v1.097h-.96v-1.783h1.631zm-7.487 0c.631 0 .919.261.919.699v.411c0 .507-.288.672-.987.672h-1.083c-.398 0-.686-.041-.837-.178a.495.495 0 0 1-.11-.315v-.069c0-.274.165-.535.686-.535h1.234c0-.123.014-.137-.137-.137h-1.646V12h1.961zm-.179 1.166v-.069h-.754a.07.07 0 0 0 0 .138h.686a.068.068 0 0 0 .068-.069zm5.02-1.166c.727 0 .878.219.878.521v.069c0 .329-.261.507-.686.507h-1.234c0 .123.123.137.274.137h1.508v.549H16.36c-.59 0-.864-.247-.864-.699v-.315c0-.521.288-.768.946-.768h1.057zm-.151.686a.07.07 0 0 0 0-.138h-.823a.07.07 0 0 0-.069.069v.069h.892z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/mdnwebdocs.svg b/assets/lib/simple-icons/icons/mdnwebdocs.svg
index 24f6f55b..c1722010 100644
--- a/assets/lib/simple-icons/icons/mdnwebdocs.svg
+++ b/assets/lib/simple-icons/icons/mdnwebdocs.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>MDN Web Docs icon</title><path d="M0 0v24h24V0zm10.564 4.969c.667-.047 1.001.066 1.59.242l.436.13.152.046.557.17c.365.099.748.105 1.115.017a2.033 2.033 0 011.48.174c.409.233.684.648.737 1.115.048.413.288.78.648.989.537.293 1.096.538 1.672.736.407.156.815.331 1.219.488.2.077.377.203.514.37a.87.87 0 01.197.49c.025.359.068.722.086 1.084h-.002c.028.5-.08.997-.317 1.439-.087.165-.183.321-.263.486a.616.616 0 01-.635.367.417.417 0 00-.277.09c-.246.161-.497.32-.75.471-.35.193-.77.216-1.141.06a5.36 5.36 0 00-1.908-.351 2.11 2.11 0 00-1.7.775 2.62 2.62 0 00-.38.77c-.223.55-.414 3.838-.414 4.676 0 0-3.161-.615-6.13-3.653l.774-2.03H5.4l1.754-1.856H4.14l1.752-1.858H3.029l3.188-3.383a7.349 7.349 0 013.549-1.95c.318-.055.576-.089.798-.104z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>MDN Web Docs</title><path d="m21.538 1.1-6.745 21.8h-2.77L18.77 1.1ZM24 1.1v21.8h-2.462V1.1Zm-12 0v21.8H9.538V1.1Zm-2.462 0L2.77 22.9H0L6.746 1.1Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/mdx.svg b/assets/lib/simple-icons/icons/mdx.svg
new file mode 100644
index 00000000..aace09b6
--- /dev/null
+++ b/assets/lib/simple-icons/icons/mdx.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>MDX</title><path d="M.79 7.12h22.42c.436 0 .79.355.79.792v8.176c0 .436-.354.79-.79.79H.79a.79.79 0 0 1-.79-.79V7.912a.79.79 0 0 1 .79-.791V7.12Zm2.507 7.605v-3.122l1.89 1.89L7.12 11.56v3.122h1.055v-5.67l-2.99 2.99L2.24 9.056v5.67h1.055v-.001Zm8.44-1.845-1.474-1.473-.746.746 2.747 2.747 2.745-2.747-.746-.746-1.473 1.473v-4h-1.054v4Zm10.041.987-2.175-2.175 2.22-2.22-.746-.746-2.22 2.22-2.22-2.22-.747.746 2.22 2.22-2.176 2.177.746.746 2.177-2.177 2.176 2.175.745-.746Z"/></svg>
diff --git a/assets/lib/simple-icons/icons/mediafire.svg b/assets/lib/simple-icons/icons/mediafire.svg
index 354da62b..98fdb4dd 100644
--- a/assets/lib/simple-icons/icons/mediafire.svg
+++ b/assets/lib/simple-icons/icons/mediafire.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>MediaFire icon</title><path d="M11.13 7.171c-.496.42 2.943-.458 2.6 1.239-.332 1.633-3.62-.343-7.223-.176-1.594.073-3.054.53-3.985 1.668.973-1.108 2.901-.844 2.398-.081-1.172 1.776-3.376.497-4.92 3.975.185-.4.685-1.196 2.843-1.526 1.586-.242 4.214-.016 5.054 1.297.924 1.444-3.759 1.28-1.167 1.573 3.593.406 6.299 3.31 9.813 3.311 4.55 0 7.422-2.324 7.457-6.146.063-6.923-9.101-8.318-12.87-5.134zm6.768 7.554c-1.195-.033-2.404-.512-3.364-.98-2.365-1.155-3.338-1.553-3.338-1.608 0-.067 1.42.484 3.813-.789 1.383-.735 1.432-1.377 2.89-1.505 1.73-.152 2.962 1.13 2.962 2.478 0 1.349-1.222 2.453-2.963 2.404z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>MediaFire</title><path d="M11.13 7.171c-.496.42 2.943-.458 2.6 1.239-.332 1.633-3.62-.343-7.223-.176-1.594.073-3.054.53-3.985 1.668.973-1.108 2.901-.844 2.398-.081-1.172 1.776-3.376.497-4.92 3.975.185-.4.685-1.196 2.843-1.526 1.586-.242 4.214-.016 5.054 1.297.924 1.444-3.759 1.28-1.167 1.573 3.593.406 6.299 3.31 9.813 3.311 4.55 0 7.422-2.324 7.457-6.146.063-6.923-9.101-8.318-12.87-5.134zm6.768 7.554c-1.195-.033-2.404-.512-3.364-.98-2.365-1.155-3.338-1.553-3.338-1.608 0-.067 1.42.484 3.813-.789 1.383-.735 1.432-1.377 2.89-1.505 1.73-.152 2.962 1.13 2.962 2.478 0 1.349-1.222 2.453-2.963 2.404z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/mediamarkt.svg b/assets/lib/simple-icons/icons/mediamarkt.svg
new file mode 100644
index 00000000..16d7e352
--- /dev/null
+++ b/assets/lib/simple-icons/icons/mediamarkt.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>MediaMarkt</title><path d="M19.829 22.075c-.064.192 2.63-2.76 2.63-2.76-.256-2.759-1.54-5.775-1.54-5.775-2.117-4.428-6.801-5.904-9.56-3.53-.129.065-.322.129-.45.193 2.118-2.952 6.93-2.695 10.075.963 0 0 1.412 1.732 2.438 4.363.257-.898.45-1.86.514-2.823-1.669-2.31-3.594-3.658-3.594-3.658-3.978-2.695-8.663-1.732-9.946 1.604-.129.193-.257.385-.321.578.385-3.594 4.684-5.84 9.176-4.3 0 0 2.182.835 4.428 2.631 0-.128-.064-.256-.128-.449-.257-.962-.578-1.86-1.027-2.695-2.567-1.155-4.877-1.347-4.877-1.347-4.877-.321-8.535 3.08-7.765 6.802v.513c-1.668-3.337.963-7.636 5.776-8.535 0 0 2.246-.385 5.005 0a11.844 11.844 0 0 0-2.374-1.989c-2.76.32-4.813 1.283-4.813 1.283-4.428 2.182-5.84 7.06-3.401 9.819.064.192.192.32.32.449-3.08-2.054-2.887-7.123.77-10.396 0 0 1.733-1.476 4.3-2.503C14.375.193 13.283 0 12.193 0 10.01 1.668 8.79 3.465 8.79 3.465c-2.759 4.171-1.604 9.113 1.99 10.268h.064c.128.064.192.128.32.192-3.657-.192-6.031-4.684-4.427-9.369 0 0 .77-2.053 2.374-4.171-.962.257-1.796.578-2.63 1.09-1.027 2.568-1.284 4.75-1.284 4.75-.321 4.94 3.016 8.599 6.61 7.893H12c.128 0 .257 0 .385-.065-3.273 1.669-7.444-1.026-8.406-5.903 0 0-.385-2.182 0-4.941-.77.77-1.476 1.604-2.054 2.63.321 2.696 1.284 4.685 1.284 4.685 2.181 4.492 6.994 5.968 9.754 3.401l.064-.064c.128-.064.256-.128.32-.257-1.989 3.145-6.994 3.016-10.203-.77 0 0-1.604-2.117-2.438-4.556 0-.064-.642 3.209-.642 3.209 1.604 1.925 3.658 3.529 3.658 3.529 3.979 2.695 8.663 1.668 9.946-1.668a1.39 1.39 0 0 0 .321-.514c-.385 3.594-4.684 5.84-9.176 4.236 0 0-1.99-.77-4.107-2.439 0 .064.064.193.064.257a15.14 15.14 0 0 0 1.091 2.823c2.438 1.027 4.62 1.22 4.62 1.22 4.877.32 8.47-3.08 7.765-6.674v-.514c1.54 3.337-1.09 7.508-5.84 8.47 0 0-2.117.386-4.748 0a11.229 11.229 0 0 0 2.117 1.798c2.76-.321 4.813-1.284 4.813-1.284 4.3-2.117 5.776-6.802 3.53-9.625-.065-.193-.193-.385-.321-.578 2.952 2.118 2.76 7.059-.899 10.267 0 0-1.796 1.476-4.427 2.567 1.026.321 2.117.578 3.208.642 2.246-1.733 3.594-3.658 3.594-3.658 2.76-4.17 1.604-9.112-1.925-10.267a1.04 1.04 0 0 0-.45-.257c3.722.193 6.032 4.685 4.428 9.37 0 0-.77 2.245-2.567 4.491.129 0 .257-.064.45-.128a17.58 17.58 0 0 0 2.566-.963c1.091-2.63 1.284-4.94 1.284-4.94.32-4.878-2.888-8.472-6.417-7.958-.129 0-.321-.064-.45-.064h-.128c3.273-1.412 7.316 1.219 8.214 5.968 0 0 .578 2.246.128 4.94-.064.386-.256.963-.577 1.54z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/mediatek.svg b/assets/lib/simple-icons/icons/mediatek.svg
new file mode 100644
index 00000000..f6d3d179
--- /dev/null
+++ b/assets/lib/simple-icons/icons/mediatek.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>MediaTek</title><path d="M3.863 8.996c-.296 0-.664.21-.815.467L.064 14.537c-.15.257-.029.467.267.467h19.805c.297 0 .665-.21.816-.467l2.983-5.074c.15-.257.03-.467-.268-.467zm3.41 1.975h1.09l-.232.402h-.776c-.238 0-.312.093-.312.338v.807h1.37l-.233.402H6.502v-1.197c0-.589.307-.752.771-.752zm1.444 0h.937c.703 0 1.002.27 1.002.959 0 .73-.301.99-.976.99h-.963zm7.832 0h1.09l-.233.402h-.775c-.239 0-.313.093-.313.338-.004.264-.002.539-.002.807h1.372l-.233.402h-1.678v-1.197c0-.589.308-.752.772-.752zm-11.567.004v.986l.569-.984.65-.002v1.941h-.547v-1.191l-.672 1.191h-.546v-1.191l-.688 1.19h-.535l1.121-1.938zm5.98 0h.546v1.941h-.545zm1.798 0h.781v1.941h-.553v-1.383l-.797 1.383h-.552zm1.256 0h1.714l-.232.404h-.504v1.537h-.533v-1.537h-.68zm3.873 0h.547v1.941h-.547zm1.345 0h.545l-.558.968-.002.004h.002l.558.969h-.545l-.56-.97zm-9.994.398v1.145h.297c.432 0 .567-.104.567-.586 0-.483-.135-.559-.567-.559zm-1.847.416h.87l-.185.318h-.86zm9.255 0h.872l-.186.318h-.86Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/mediatemple.svg b/assets/lib/simple-icons/icons/mediatemple.svg
index fdbbe98e..34772020 100644
--- a/assets/lib/simple-icons/icons/mediatemple.svg
+++ b/assets/lib/simple-icons/icons/mediatemple.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>MediaTemple icon</title><path d="M4.839 10.145v.57h.034c1.021-.615 2.07-.666 2.7-.666 1.695 0 2.28.479 2.49.66.39-.225 1.229-.676 2.685-.676 2.896 0 2.896 1.141 2.896 1.59v2.7H13.32v-2.384c0-.494 0-1.045-1.24-1.045-.612 0-1.242.187-1.463.46-.206.234-.291.446-.291.964v2.021H8.001v-2.303c0-.711.015-1.14-1.206-1.14-.615 0-1.242.162-1.48.405-.186.185-.307.379-.307.996v2.04H2.67v-4.2h2.16l.009.008zm16.431.929h-1.69v1.68c0 .593 0 .786.691.786.328 0 .618-.037.929-.096l.07-.009.22.854c-.817.15-1.711.166-1.966.166-.76 0-1.742-.111-2.105-.425-.309-.255-.346-.506-.346-1.141v-1.82h-1.145v-.877h1.144v-.827l2.52-.65v1.479h1.696v.877l-.018.003zM1.54 16.71C.615 15.313 0 13.65 0 11.979 0 10.005.775 8.4 1.561 7.27h.936c-.695 1.54-1.168 2.85-1.168 4.752 0 2.182.774 3.865 1.125 4.627.012 0 .034.045.034.061H1.54zm20.919-9.42C23.385 8.688 24 10.35 24 12.021c0 1.971-.776 3.58-1.561 4.709h-.936c.694-1.541 1.17-2.85 1.17-4.752 0-2.184-.777-3.863-1.129-4.629-.012-.01-.031-.049-.031-.06h.946z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>MediaTemple</title><path d="M4.839 10.145v.57h.034c1.021-.615 2.07-.666 2.7-.666 1.695 0 2.28.479 2.49.66.39-.225 1.229-.676 2.685-.676 2.896 0 2.896 1.141 2.896 1.59v2.7H13.32v-2.384c0-.494 0-1.045-1.24-1.045-.612 0-1.242.187-1.463.46-.206.234-.291.446-.291.964v2.021H8.001v-2.303c0-.711.015-1.14-1.206-1.14-.615 0-1.242.162-1.48.405-.186.185-.307.379-.307.996v2.04H2.67v-4.2h2.16l.009.008zm16.431.929h-1.69v1.68c0 .593 0 .786.691.786.328 0 .618-.037.929-.096l.07-.009.22.854c-.817.15-1.711.166-1.966.166-.76 0-1.742-.111-2.105-.425-.309-.255-.346-.506-.346-1.141v-1.82h-1.145v-.877h1.144v-.827l2.52-.65v1.479h1.696v.877l-.018.003zM1.54 16.71C.615 15.313 0 13.65 0 11.979 0 10.005.775 8.4 1.561 7.27h.936c-.695 1.54-1.168 2.85-1.168 4.752 0 2.182.774 3.865 1.125 4.627.012 0 .034.045.034.061H1.54zm20.919-9.42C23.385 8.688 24 10.35 24 12.021c0 1.971-.776 3.58-1.561 4.709h-.936c.694-1.541 1.17-2.85 1.17-4.752 0-2.184-.777-3.863-1.129-4.629-.012-.01-.031-.049-.031-.06h.946z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/medium.svg b/assets/lib/simple-icons/icons/medium.svg
index 6258a31b..e4eead02 100644
--- a/assets/lib/simple-icons/icons/medium.svg
+++ b/assets/lib/simple-icons/icons/medium.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Medium icon</title><path d="M0 0v24h24V0H0zm19.938 5.686L18.651 6.92a.376.376 0 0 0-.143.362v9.067a.376.376 0 0 0 .143.361l1.257 1.234v.271h-6.322v-.27l1.302-1.265c.128-.128.128-.165.128-.36V8.99l-3.62 9.195h-.49L6.69 8.99v6.163a.85.85 0 0 0 .233.707l1.694 2.054v.271H3.815v-.27L5.51 15.86a.82.82 0 0 0 .218-.707V8.027a.624.624 0 0 0-.203-.527L4.019 5.686v-.27h4.674l3.613 7.923 3.176-7.924h4.456v.271z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Medium</title><path d="M13.54 12a6.8 6.8 0 01-6.77 6.82A6.8 6.8 0 010 12a6.8 6.8 0 016.77-6.82A6.8 6.8 0 0113.54 12zM20.96 12c0 3.54-1.51 6.42-3.38 6.42-1.87 0-3.39-2.88-3.39-6.42s1.52-6.42 3.39-6.42 3.38 2.88 3.38 6.42M24 12c0 3.17-.53 5.75-1.19 5.75-.66 0-1.19-2.58-1.19-5.75s.53-5.75 1.19-5.75C23.47 6.25 24 8.83 24 12z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/meetup.svg b/assets/lib/simple-icons/icons/meetup.svg
index 19a0c5ca..79255e61 100644
--- a/assets/lib/simple-icons/icons/meetup.svg
+++ b/assets/lib/simple-icons/icons/meetup.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Meetup icon</title><path d="M6.9805.5547a.518.518 0 00-.1055.0117c-.2873.0619-.4704.3437-.4082.6309.0619.2868.344.47.6309.4082a.5327.5327 0 00.4082-.6328c-.0542-.251-.2782-.4206-.5254-.418zm6.455.6387a.9836.9836 0 00-.5136.1425c-.4698.2818-.6237.8898-.3418 1.3594.2822.4696.8919.6216 1.3613.3399.4698-.2821.6217-.8901.3399-1.3594a.9919.9919 0 00-.8458-.4824zm-3.0292 2.2363c-.9744.0047-1.9565.292-2.8204.8887-.8745.6041-1.4965 1.436-1.8476 2.3593-.5085.0689-1.0096.239-1.461.5508-1.4918 1.0307-1.886 3.0391-.9394 4.5625-1.2846 1.1762-1.5815 3.1356-.6055 4.6485.579.897 1.4882 1.437 2.4649 1.5976.018.732.238 1.466.6855 2.1133 1.224 1.7709 3.6526 2.2157 5.4238.9922.0677-.047.1198-.1061.1836-.1563.9872.8809 2.4708 1.0255 3.6075.2403.6065-.4189.9929-1.0292 1.162-1.6914.8895.0326 1.7956-.1935 2.584-.7383 1.8916-1.3067 2.3995-3.8615 1.1895-5.789.9713-.819 1.1798-2.2514.4336-3.3087-.3327-.4718-.8028-.7806-1.3164-.9336.0752-.984-.1704-1.9979-.7754-2.873-1.1792-1.7058-3.3327-2.3315-5.1953-1.6563a5.1058 5.1058 0 00-2.7735-.8066zm-5.6036.8164a.7589.7589 0 00-.4238.1348c-.3447.2383-.4317.7097-.1934 1.0546.2384.3447.7116.4317 1.0567.1934a.7574.7574 0 00.1933-1.0547.7581.7581 0 00-.6328-.3281zM20.797 6.617a.8419.8419 0 00-.4707.1505.8453.8453 0 101.1758.2148.8452.8452 0 00-.7051-.3652zm-8.1504 1.0274c.0629.0004.1244.0053.1816.0137.2286.0336.3655.119.4512.1875.1682.1342.2726.2412.4316.3926.2394.2275.4132.089.5332.0195.208-.1209.3692-.2181.9844-.207.6332.011 1.3626.2366 1.5137 1.3164.1682 1.1994-1.9656 4.2891-1.8164 5.7226.1054 1.0103 1.8146.2987 1.959 1.2207.1872 1.197-2.1353.752-2.666.4922-.832-.4077-1.337-1.3399-1.1211-2.2597.1612-.6882 1.7-3.4979 1.7578-3.9297.0587-.4404-.1773-.477-.3242-.4844-.1895-.0098-.3394.0808-.5254.3613-.1692.2558-2.082 4.0856-2.248 4.3985-.2969.5594-.6698.6938-1.045.6738-.5472-.0285-.7978-.3206-.7188-.8477.0467-.31 1.2594-3.0491 1.3223-3.4765.0387-.2643-.0132-.5452-.2754-.6797-.2625-.1346-.5713.0704-.664.2266-.128.2154-1.8482 4.7065-2.0313 5.039-.3168.576-.6508.7594-1.1523.7832-1.1862.0562-2.0656-.919-1.6778-2.1152.173-.5328 1.3159-4.5716 1.8946-5.5996C7.799 8.2015 8.8782 7.676 9.627 8c.3878.1679.9252.4377 1.084.5078.366.1622.7594-.2776.914-.4121.1549-.1345.3017-.2765.4902-.3574.1412-.0605.3426-.0947.5313-.0938zm10.8808 2.0567a.4683.4683 0 00-.0937.0117.4671.4671 0 00-.3594.5547.4696.4696 0 00.5567.3594c.2523-.0546.414-.3044.3593-.5567a.4696.4696 0 00-.4629-.3691zm-22.5195.8105a.9972.9972 0 00-.832.4336c-.3123.4553-.1977 1.0784.2578 1.3906.4555.3123 1.0783.1956 1.3906-.2597s.1977-1.0765-.2578-1.3887a.9992.9992 0 00-.5586-.1758zm21.295 2.0938a.635.635 0 00-.127.0136.6268.6268 0 00-.4805.7461.6278.6278 0 00.7461.4825c.3393-.0733.5558-.407.4824-.7461a.6295.6295 0 00-.621-.4961zM4.0624 18.703a.453.453 0 00-.0918.0117c-.2507.0543-.4117.3018-.3574.5528.054.251.302.4097.5527.3554a.4644.4644 0 00.3555-.5527.4655.4655 0 00-.459-.3672zm13.6758 1.5508a1.0444 1.0444 0 00-.584.1856c-.4758.3287-.5945.9813-.2656 1.457.3288.4756.9809.5943 1.457.2656.4758-.3287.5945-.9814.2656-1.457a1.0444 1.0444 0 00-.873-.4512zm-6.338 1.9004a.6427.6427 0 00-.3593.1152.6456.6456 0 00-.164.8985.6457.6457 0 00.8984.164.6456.6456 0 00.164-.8984.646.646 0 00-.539-.2793Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Meetup</title><path d="M6.98.555a.518.518 0 0 0-.105.011.53.53 0 1 0 .222 1.04.533.533 0 0 0 .409-.633.531.531 0 0 0-.526-.418zm6.455.638a.984.984 0 0 0-.514.143.99.99 0 1 0 1.02 1.699.99.99 0 0 0 .34-1.36.992.992 0 0 0-.846-.482zm-3.03 2.236a5.029 5.029 0 0 0-4.668 3.248 3.33 3.33 0 0 0-1.46.551 3.374 3.374 0 0 0-.94 4.562 3.634 3.634 0 0 0-.605 4.649 3.603 3.603 0 0 0 2.465 1.597c.018.732.238 1.466.686 2.114a3.9 3.9 0 0 0 5.423.992c.068-.047.12-.106.184-.157.987.881 2.47 1.026 3.607.24a2.91 2.91 0 0 0 1.162-1.69 4.238 4.238 0 0 0 2.584-.739 4.274 4.274 0 0 0 1.19-5.789 2.466 2.466 0 0 0 .433-3.308 2.448 2.448 0 0 0-1.316-.934 4.436 4.436 0 0 0-.776-2.873 4.467 4.467 0 0 0-5.195-1.656 5.106 5.106 0 0 0-2.773-.807zm-5.603.817a.759.759 0 0 0-.423.135.758.758 0 1 0 .863 1.248.757.757 0 0 0 .193-1.055.758.758 0 0 0-.633-.328zm15.994 2.37a.842.842 0 0 0-.47.151.845.845 0 1 0 1.175.215.845.845 0 0 0-.705-.365zm-8.15 1.028c.063 0 .124.005.182.014a.901.901 0 0 1 .45.187c.169.134.273.241.432.393.24.227.414.089.534.02.208-.122.369-.219.984-.208.633.011 1.363.237 1.514 1.317.168 1.199-1.966 4.289-1.817 5.722.106 1.01 1.815.299 1.96 1.22.186 1.198-2.136.753-2.667.493-.832-.408-1.337-1.34-1.12-2.26.16-.688 1.7-3.498 1.757-3.93.059-.44-.177-.476-.324-.484-.19-.01-.34.081-.526.362-.169.255-2.082 4.085-2.248 4.398-.296.56-.67.694-1.044.674-.548-.029-.798-.32-.72-.848.047-.31 1.26-3.049 1.323-3.476.039-.265-.013-.546-.275-.68-.263-.135-.572.07-.664.227-.128.215-1.848 4.706-2.032 5.038-.316.576-.65.76-1.152.784-1.186.056-2.065-.92-1.678-2.116.173-.532 1.316-4.571 1.895-5.599.389-.69 1.468-1.216 2.217-.892.387.167.925.437 1.084.507.366.163.759-.277.913-.412.155-.134.302-.276.49-.357.142-.06.343-.095.532-.094zm10.88 2.057a.468.468 0 0 0-.093.011.467.467 0 0 0-.36.555.47.47 0 0 0 .557.36.47.47 0 0 0 .36-.557.47.47 0 0 0-.464-.37zm-22.518.81a.997.997 0 0 0-.832.434 1 1 0 1 0 1.39-.258 1 1 0 0 0-.558-.176zm21.294 2.094a.635.635 0 0 0-.127.013.627.627 0 0 0-.48.746.628.628 0 0 0 .746.483.628.628 0 0 0 .482-.746.63.63 0 0 0-.621-.496zm-18.24 6.097a.453.453 0 0 0-.092.012.464.464 0 1 0 .195.908.464.464 0 0 0 .356-.553.465.465 0 0 0-.459-.367zm13.675 1.55a1.044 1.044 0 0 0-.583.187 1.047 1.047 0 1 0 1.456.265 1.044 1.044 0 0 0-.873-.451zM11.4 22.154a.643.643 0 0 0-.36.115.646.646 0 0 0-.164.899.646.646 0 0 0 .899.164.646.646 0 0 0 .164-.898.646.646 0 0 0-.54-.28z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/mega.svg b/assets/lib/simple-icons/icons/mega.svg
index 6e182eba..d66d6263 100644
--- a/assets/lib/simple-icons/icons/mega.svg
+++ b/assets/lib/simple-icons/icons/mega.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>MEGA icon</title><path d="M12 0C5.372 0 0 5.372 0 12s5.372 12 12 12 12-5.372 12-12S18.628 0 12 0zm6.23 16.244a.371.371 0 0 1-.373.372H16.29a.371.371 0 0 1-.372-.372v-4.828c0-.04-.046-.06-.08-.033l-3.32 3.32a.742.742 0 0 1-1.043 0l-3.32-3.32c-.027-.027-.08-.007-.08.033v4.828a.371.371 0 0 1-.372.372H6.136a.371.371 0 0 1-.372-.372V7.757c0-.206.166-.372.372-.372h1.076a.75.75 0 0 1 .525.22l4.13 4.13a.18.18 0 0 0 .26 0l4.13-4.13c.14-.14.325-.22.525-.22h1.075c.206 0 .372.166.372.372z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>MEGA</title><path d="M12 0C5.372 0 0 5.372 0 12s5.372 12 12 12 12-5.372 12-12S18.628 0 12 0zm6.23 16.244a.371.371 0 0 1-.373.372H16.29a.371.371 0 0 1-.372-.372v-4.828c0-.04-.046-.06-.08-.033l-3.32 3.32a.742.742 0 0 1-1.043 0l-3.32-3.32c-.027-.027-.08-.007-.08.033v4.828a.371.371 0 0 1-.372.372H6.136a.371.371 0 0 1-.372-.372V7.757c0-.206.166-.372.372-.372h1.076a.75.75 0 0 1 .525.22l4.13 4.13a.18.18 0 0 0 .26 0l4.13-4.13c.14-.14.325-.22.525-.22h1.075c.206 0 .372.166.372.372z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/mendeley.svg b/assets/lib/simple-icons/icons/mendeley.svg
index 8864d04d..9e659a0f 100644
--- a/assets/lib/simple-icons/icons/mendeley.svg
+++ b/assets/lib/simple-icons/icons/mendeley.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Mendeley icon</title><path d="M11.973 9.191h.019a2.349 2.349 0 011.5 4.155 1.803 1.803 0 01-.854.451 2.342 2.342 0 01-.647.092h-.019c-.224 0-.441-.033-.647-.092a1.808 1.808 0 01-.854-.451 2.34 2.34 0 01-.849-1.806 2.352 2.352 0 012.351-2.349m-9.948 9.45c1.262.158 2.382-.76 2.501-2.052a2.438 2.438 0 00-.213-1.233c-1.768-3.879 6.955-3.968 5.481-.307l-.01.016c-.697 1.115-.319 2.563.839 3.232.426.248.898.35 1.359.33.461.02.933-.082 1.359-.33 1.158-.67 1.536-2.117.839-3.232l-.01-.016c-1.474-3.661 7.25-3.572 5.48.307a2.44 2.44 0 00-.212 1.233c.12 1.292 1.239 2.21 2.502 2.052a2.339 2.339 0 001.421-.735s.587-.487.578-1.729c-.008-1.013-.578-1.574-.578-1.574a2.206 2.206 0 00-1.81-.644c-1.619-.036-1.859-1.304-1.402-3.694.168-.424.241-.878.226-1.332a3.408 3.408 0 00-2.125-3.287c-.039-.017-.078-.03-.118-.046a1.51 1.51 0 00-.134-.046 3.407 3.407 0 00-3.994 1.449c-.815.895-1.184 1.438-2.022 1.438-.797 0-1.208-.543-2.022-1.438a3.404 3.404 0 00-4.127-1.404c-.04.016-.079.029-.119.046A3.407 3.407 0 003.59 8.932c-.016.454.058.908.225 1.332.457 2.391.217 3.658-1.401 3.694-.793-.085-1.385.242-1.983.841-.6.598-.55 2.2 0 2.899.399.509.94.861 1.594.943"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Mendeley</title><path d="M12.0037 9.1684h.019a2.355 2.355 0 011.5038 4.1655 1.8076 1.8076 0 01-.8561.452 2.348 2.348 0 01-.6487.0923h-.019c-.2246 0-.4421-.033-.6487-.0922a1.8126 1.8126 0 01-.8561-.4521 2.346 2.346 0 01-.8511-1.8106 2.358 2.358 0 012.3569-2.355m-9.9731 9.474c1.2652.1583 2.388-.762 2.5073-2.0573a2.4442 2.4442 0 00-.2136-1.236c-1.7724-3.8889 6.9726-3.978 5.4949-.3078l-.01.016c-.6988 1.1178-.3198 2.5695.841 3.2402.4272.2486.9003.3508 1.3625.3308.4622.02.9354-.0822 1.3624-.3308 1.161-.6717 1.54-2.1224.8412-3.2402l-.01-.016c-1.4778-3.6703 7.2682-3.581 5.4938.3077a2.4462 2.4462 0 00-.2126 1.2361c.1203 1.2953 1.2422 2.2156 2.5083 2.0572a2.345 2.345 0 001.4246-.7368s.5885-.4883.5795-1.7334c-.008-1.0156-.5795-1.578-.5795-1.578a2.2116 2.2116 0 00-1.8145-.6456c-1.6231-.036-1.8637-1.3073-1.4056-3.7033.1685-.4251.2416-.8802.2266-1.3354a3.4166 3.4166 0 00-2.1304-3.2953c-.039-.017-.0782-.03-.1183-.0461a1.5138 1.5138 0 00-.1343-.0461 3.4156 3.4156 0 00-4.004 1.4526c-.8171.8973-1.187 1.4417-2.0272 1.4417-.799 0-1.211-.5444-2.0271-1.4417a3.4126 3.4126 0 00-4.1374-1.4075c-.0401.016-.0792.029-.1193.0461a3.4156 3.4156 0 00-2.1294 3.2953c-.016.4552.0582.9103.2256 1.3354.4581 2.397.2175 3.6672-1.4045 3.7033-.795-.0852-1.3885.2426-1.988.8431-.6016.5995-.5514 2.2056 0 2.9063.4.5103.9423.8632 1.598.9454"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/mercedes.svg b/assets/lib/simple-icons/icons/mercedes.svg
index b6c41581..84e7cad5 100644
--- a/assets/lib/simple-icons/icons/mercedes.svg
+++ b/assets/lib/simple-icons/icons/mercedes.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Mercedes icon</title><path d="M12.005 0c6.623 0 12 5.377 12 12s-5.377 12-12 12-12-5.377-12-12 5.377-12 12-12zM3.25 17.539a10.357 10.357 0 0 0 8.755 4.821c3.681 0 6.917-1.924 8.755-4.821l-8.755-3.336-8.755 3.336zm10.663-6.641l7.267 5.915A10.306 10.306 0 0 0 22.365 12c0-5.577-4.417-10.131-9.94-10.352l1.488 9.25zm-2.328-9.25C6.062 1.869 1.645 6.423 1.645 12c0 1.737.428 3.374 1.185 4.813l7.267-5.915 1.488-9.25z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Mercedes</title><path d="M12 0c6.623 0 12 5.377 12 12s-5.377 12-12 12S0 18.623 0 12 5.377 0 12 0zM3.245 17.539A10.357 10.357 0 0012 22.36c3.681 0 6.917-1.924 8.755-4.821L12 14.203zm10.663-6.641l7.267 5.915A10.306 10.306 0 0022.36 12c0-5.577-4.417-10.131-9.94-10.352zm-2.328-9.25C6.057 1.869 1.64 6.423 1.64 12c0 1.737.428 3.374 1.185 4.813l7.267-5.915z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/merck.svg b/assets/lib/simple-icons/icons/merck.svg
new file mode 100644
index 00000000..312445ad
--- /dev/null
+++ b/assets/lib/simple-icons/icons/merck.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Merck</title><path d="M6 6a6 6 0 0112 0zm0 12a6 6 0 016-6 6 6 0 01-6-6 6 6 0 000 12 a6 6 0 1012 0zm6-6a6 6 0 016 6 6 6 0 100-12c0 3.314-2.686 6-6 6"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/mercurial.svg b/assets/lib/simple-icons/icons/mercurial.svg
new file mode 100644
index 00000000..45202a35
--- /dev/null
+++ b/assets/lib/simple-icons/icons/mercurial.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Mercurial</title><path d="M13.8216.4314a10.2734 10.2734 0 0 0-1.422.0774c-7.083.8757-7.1976 8.3303-.9554 10.1015 7.0706 1.0703 2.8125 6.4047 2.2086 9.0945-.5415 2.4111 5.714 2.8074 8.6079-6.7688C23.9967 7.9324 20.6996.5375 13.8216.4314zm6.165 2.0953c-.0213.015.0002.066.1032.1748 1.01 1.0662 1.488 1.6912 2.4688 3.871 2.1907 4.8693-2.1648 12.5904-4.9951 14.1949-1.133.6421-2.568.7072-3.2275.6494-.4143-.036-.8177.4385-.5541.866.993 1.6114 3.5415.7206 5.72-.8322 2.1737-1.5493 3.6586-5.1331 4.0895-6.7171.6186-2.277.704-5.9062-.9593-8.9594-.9845-1.8072-1.9445-2.917-2.4906-3.2037-.0698-.0368-.1337-.0587-.155-.0437zm-13.7838.9554c-1.9467 3.1875-.2826 7.6562 4.7727 9.0905 6.6367 1.8846 1.3715 6.0926 1.5253 8.8959.1545 2.8028 5.7706 3.82 10.1988-3.5413.0536-.0891.1003-.1817.151-.2721-4.4262 7.3375-10.0304 6.3212-10.185 3.5214-.1539-2.8035 5.1114-7.0132-1.5253-8.8979-4.9023-1.3909-6.6137-5.634-4.9375-8.7965zm-.2304 2.9057c-.0678.0542-.0356.251.002.4866.1057.66.5196 1.8234 1.3347 2.8898 1.1057 1.4462 3.0177 2.0604 4.5005 2.5005 1.899.5634 2.3417 1.6578 2.5602 1.5234.2166-.1337.1632-1.3185-.4807-1.867-.6262-.5335-2.4769-.987-3.3704-1.1936C9.514 10.495 8.307 9.855 7.444 8.7612c-.863-1.0936-1.4403-2.3986-1.4717-2.3734zM2.8363 8.5904c-.5909-.0306-1.2788.1537-1.7617.5938-.549.5002-.7018 1.3363-.4866 2.014.0884.2783.3155.685.7925.7527.6369.0904.7673.3777 1.5194.2284.752-.1493 1.321-.7641 1.5491-1.4459.2612-.9433-.1284-1.4321-.717-1.867-.2206-.163-.5412-.2577-.8957-.276zm1.7895.7388c-.0482-.0289-.06.0299.0179.2443.3929 1.083-.3704 2.097-1.0288 2.5661-.6583.469-1.4924.247-1.8332.143-.341-.104-.5218.0143-.5065.1946.0087.101.092.221.2423.3178-.718-.3548-1.2561-1.088-1.3406-1.9603-.0444-.458.032-.885.2145-1.273-.2936.452-.4354.9885-.3794 1.567.1317 1.359 1.337 2.354 2.6952 2.2224.7147-.07 1.3579-.4514 1.7538-1.003.7892-.8576.7857-2.326.3733-2.7388-.0751-.1344-.1603-.2512-.2085-.28zm-1.1202.6276c.2173.0172.4146.1174.5462.3258.3794.6012-.3834 1.388-.9613 1.5392-.6124.1604-.8983.0048-.854-.8202.0276-.5155.5464-.9574 1.0467-1.0348a.9639.9639 0 0 1 .2224-.01zm18.6915.0298c.183.084.193 1.6217-.1092 2.737-.522 1.924-2.3254 4.9016-3.5334 6.28-.9264 1.0576-1.9623 1.499-3.2115 1.6843-2.5991.5065.158-3.82 2.0735-3.583 1.9155.237 3.9722-3.7315 4.437-6.155.1416-.738.2604-1.0015.3436-.9633zm-17.3667.6217c.014.0026.0246.0907.0357.2105-.0694 1.2463-1.2154 1.933-1.871 2.0239-.1768.0245-.4884.0113-.3395-.1231.0979-.0882.593-.0533 1.0407-.294.4474-.2407.9796-.7677 1.0745-1.5174.028-.2201.0456-.3025.0596-.2999zm3.9345.1112c.4061.1481.7337.3238 1.0566.423.5893.1805 1.2778.3457 1.7002.429.6572.1298 1.3422.4507 1.7497.586.6025.1997.8736.5768.852 1.0149-.0206.4376-.2303-.0553-.56-.276-.3111-.208-1.054-.6418-2.58-1.1421-1.2634-.4143-1.9051-.769-2.2185-1.0348zm14.908 2.1172c.1264.5153-.6948 4.0971-3.015 7.1243-.7777 1.0147-1.8407 1.7682-2.8899 2.294-.7741.388-1.3433.4632-2.0159.564-.5247.0787-.9144.0117-.8858-.3277.0375-.4468.567-.1635 1.3327-.3495 2.7515-.668 3.9457-2.0453 5.591-4.6317 1.281-2.0136 1.8405-4.2479 1.8828-4.6734zm-16.471 2.5304c-1.0004-.034-2.0805.3943-2.7469 1.2334-1.4419 1.8739-.3481 3.9568.0953 3.9643.4435.0074.7109.0702 1.16.3853.8876.3689 2.5196.136 3.273-.856.7536-.992.7777-2.36.4907-3.1858-.3512-1.0106-1.2719-1.5073-2.2722-1.5412zm2.4945 1.1638c-.0169.0077-.0174.0443.006.1152.622 1.8982.0475 3.3992-1.0249 4.1729-1.0515.7588-2.4974.8859-3.6545.286-.3397-.1761-.4804.0796-.3217.2264 2.9364 2.721 7.3564-1.0167 5.4102-4.3178-.164-.278-.3644-.5057-.4151-.4827zm-6.1153.3456a3.7751 3.7751 0 0 0-.4489 2.9534c.5275 2.0173 2.5906 3.225 4.6079 2.6972a3.7751 3.7751 0 0 0 2.419-1.9603A3.7751 3.7751 0 0 1 7.905 22.233c-2.0166.528-4.0794-.6786-4.6078-2.6952a3.7751 3.7751 0 0 1 .284-2.6614zm5.438.6098c.0599-.0072.1022.0754.1291.284.2837 2.1959-1.227 2.8104-1.72 2.9395-1.6646.4357-1.855-.621-.1529-1.1858.9128-.3029 1.4845-2.0066 1.7438-2.0377zm1.1937 1.581c.0214-.004.0165.0991-.006.2502-.2294 1.5421-1.6872 2.6788-2.9275 2.721-.2517.0259-.5818-.0826-.2741-.147.3738-.0786 2.5478-.6426 3.0586-2.431.0796-.2788.1276-.3893.149-.3933Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/messenger.svg b/assets/lib/simple-icons/icons/messenger.svg
index 55b32472..27c9a15d 100644
--- a/assets/lib/simple-icons/icons/messenger.svg
+++ b/assets/lib/simple-icons/icons/messenger.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Messenger icon</title><path d="M0 11.64C0 4.95 5.24 0 12 0s12 4.95 12 11.64-5.24 11.64-12 11.64c-1.21 0-2.38-.16-3.47-.46a.96.96 0 0 0-.64.05L5.5 23.92a.96.96 0 0 1-1.35-.85l-.07-2.14a.97.97 0 0 0-.32-.68A11.39 11.39 0 0 1 0 11.64zm8.32-2.19l-3.52 5.6c-.35.53.32 1.14.82.75l3.79-2.87c.26-.2.6-.2.87 0l2.8 2.1c.84.63 2.04.4 2.6-.48l3.52-5.6c.35-.53-.32-1.13-.82-.75l-3.79 2.87c-.25.2-.6.2-.86 0l-2.8-2.1a1.8 1.8 0 0 0-2.61.48z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Messenger</title><path d="M.001 11.639C.001 4.949 5.241 0 12.001 0S24 4.95 24 11.639c0 6.689-5.24 11.638-12 11.638-1.21 0-2.38-.16-3.47-.46a.96.96 0 00-.64.05l-2.39 1.05a.96.96 0 01-1.35-.85l-.07-2.14a.97.97 0 00-.32-.68A11.39 11.389 0 01.002 11.64zm8.32-2.19l-3.52 5.6c-.35.53.32 1.139.82.75l3.79-2.87c.26-.2.6-.2.87 0l2.8 2.1c.84.63 2.04.4 2.6-.48l3.52-5.6c.35-.53-.32-1.13-.82-.75l-3.79 2.87c-.25.2-.6.2-.86 0l-2.8-2.1a1.8 1.8 0 00-2.61.48z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/meta.svg b/assets/lib/simple-icons/icons/meta.svg
new file mode 100644
index 00000000..d9a1631d
--- /dev/null
+++ b/assets/lib/simple-icons/icons/meta.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Meta</title><path d="M6.915 4.03c-1.968 0-3.683 1.28-4.871 3.113C.704 9.208 0 11.883 0 14.449c0 .706.07 1.369.21 1.973a6.624 6.624 0 0 0 .265.86 5.297 5.297 0 0 0 .371.761c.696 1.159 1.818 1.927 3.593 1.927 1.497 0 2.633-.671 3.965-2.444.76-1.012 1.144-1.626 2.663-4.32l.756-1.339.186-.325c.061.1.121.196.183.3l2.152 3.595c.724 1.21 1.665 2.556 2.47 3.314 1.046.987 1.992 1.22 3.06 1.22 1.075 0 1.876-.355 2.455-.843a3.743 3.743 0 0 0 .81-.973c.542-.939.861-2.127.861-3.745 0-2.72-.681-5.357-2.084-7.45-1.282-1.912-2.957-2.93-4.716-2.93-1.047 0-2.088.467-3.053 1.308-.652.57-1.257 1.29-1.82 2.05-.69-.875-1.335-1.547-1.958-2.056-1.182-.966-2.315-1.303-3.454-1.303zm10.16 2.053c1.147 0 2.188.758 2.992 1.999 1.132 1.748 1.647 4.195 1.647 6.4 0 1.548-.368 2.9-1.839 2.9-.58 0-1.027-.23-1.664-1.004-.496-.601-1.343-1.878-2.832-4.358l-.617-1.028a44.908 44.908 0 0 0-1.255-1.98c.07-.109.141-.224.211-.327 1.12-1.667 2.118-2.602 3.358-2.602zm-10.201.553c1.265 0 2.058.791 2.675 1.446.307.327.737.871 1.234 1.579l-1.02 1.566c-.757 1.163-1.882 3.017-2.837 4.338-1.191 1.649-1.81 1.817-2.486 1.817-.524 0-1.038-.237-1.383-.794-.263-.426-.464-1.13-.464-2.046 0-2.221.63-4.535 1.66-6.088.454-.687.964-1.226 1.533-1.533a2.264 2.264 0 0 1 1.088-.285z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/metabase.svg b/assets/lib/simple-icons/icons/metabase.svg
new file mode 100644
index 00000000..44c7c4e5
--- /dev/null
+++ b/assets/lib/simple-icons/icons/metabase.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Metabase</title><path d="M5.385 6.136c0 .807-.644 1.461-1.438 1.461s-1.438-.654-1.438-1.461.644-1.461 1.438-1.461 1.438.654 1.438 1.461zm-1.438 2.63c-.794 0-1.438.654-1.438 1.461s.644 1.461 1.438 1.461 1.438-.654 1.438-1.461-.644-1.461-1.438-1.461zm5.465-2.63c0 .807-.644 1.461-1.438 1.461s-1.438-.654-1.438-1.461.644-1.461 1.438-1.461 1.438.654 1.438 1.461zm-.35 0c0-.613-.488-1.111-1.088-1.111s-1.088.499-1.088 1.111.488 1.111 1.088 1.111 1.088-.498 1.088-1.111zm-1.088 5.592c.794 0 1.438-.654 1.438-1.461s-.644-1.461-1.438-1.461-1.438.654-1.438 1.461.643 1.461 1.438 1.461zm5.464-5.592c0 .807-.644 1.461-1.438 1.461s-1.438-.654-1.438-1.461.644-1.461 1.438-1.461 1.438.654 1.438 1.461zm-.35 0c0-.613-.488-1.111-1.088-1.111s-1.088.498-1.088 1.111S11.4 7.247 12 7.247s1.088-.498 1.088-1.111zm.35-4.675c0 .807-.644 1.461-1.438 1.461s-1.438-.654-1.438-1.461S11.206 0 12 0s1.438.654 1.438 1.461zm-.35 0C13.088.848 12.6.35 12 .35s-1.088.498-1.088 1.111S11.4 2.572 12 2.572s1.088-.498 1.088-1.111zm.35 8.806c0 .807-.644 1.461-1.438 1.461s-1.438-.654-1.438-1.461.644-1.461 1.438-1.461 1.438.654 1.438 1.461zm-.35 0c0-.613-.488-1.111-1.088-1.111s-1.088.498-1.088 1.111.488 1.111 1.088 1.111 1.088-.499 1.088-1.111zm4.376-4.131c0 .807-.644 1.461-1.438 1.461s-1.438-.654-1.438-1.461.644-1.461 1.438-1.461 1.438.654 1.438 1.461zm-.35 0c0-.613-.488-1.111-1.088-1.111s-1.088.498-1.088 1.111.488 1.111 1.088 1.111 1.088-.498 1.088-1.111zm2.939 1.461c.794 0 1.438-.654 1.438-1.461s-.644-1.461-1.438-1.461-1.438.654-1.438 1.461.644 1.461 1.438 1.461zm-4.027 1.209c-.794 0-1.438.654-1.438 1.461s.644 1.461 1.438 1.461 1.438-.654 1.438-1.461-.643-1.461-1.438-1.461zm4.027 0c-.794 0-1.438.654-1.438 1.461s.644 1.461 1.438 1.461 1.438-.654 1.438-1.461-.644-1.461-1.438-1.461zM3.947 12.857a1.45 1.45 0 0 0-1.438 1.461c0 .807.644 1.461 1.438 1.461s1.438-.654 1.438-1.461a1.45 1.45 0 0 0-1.438-1.461zm5.465 1.5c0 .807-.644 1.461-1.438 1.461s-1.438-.654-1.438-1.461.644-1.461 1.438-1.461 1.438.655 1.438 1.461zm-.35 0c0-.613-.488-1.111-1.088-1.111s-1.088.498-1.088 1.111.488 1.111 1.088 1.111 1.088-.498 1.088-1.111zM12 12.896c-.794 0-1.438.654-1.438 1.461s.644 1.461 1.438 1.461 1.438-.654 1.438-1.461-.644-1.461-1.438-1.461zm5.464 1.461c0 .807-.644 1.461-1.438 1.461s-1.438-.654-1.438-1.461.644-1.461 1.438-1.461 1.438.655 1.438 1.461zm-.35 0c0-.613-.488-1.111-1.088-1.111s-1.088.498-1.088 1.111.488 1.111 1.088 1.111 1.088-.498 1.088-1.111zm2.939-1.461c-.794 0-1.438.654-1.438 1.461s.644 1.461 1.438 1.461 1.438-.654 1.438-1.461-.644-1.461-1.438-1.461zM3.947 16.948c-.794 0-1.438.654-1.438 1.461s.644 1.461 1.438 1.461 1.438-.654 1.438-1.461-.644-1.461-1.438-1.461zm5.465 1.5c0 .807-.644 1.461-1.438 1.461s-1.438-.654-1.438-1.461.644-1.461 1.438-1.461 1.438.654 1.438 1.461zm-.35 0c0-.613-.488-1.111-1.088-1.111s-1.088.498-1.088 1.111.488 1.111 1.088 1.111 1.088-.498 1.088-1.111zm4.376 0c0 .807-.644 1.461-1.438 1.461s-1.438-.654-1.438-1.461.644-1.461 1.438-1.461 1.438.654 1.438 1.461zm-.35 0c0-.613-.488-1.111-1.088-1.111s-1.088.498-1.088 1.111.488 1.111 1.088 1.111 1.088-.498 1.088-1.111zm.35 4.091c0 .807-.644 1.461-1.438 1.461s-1.438-.654-1.438-1.461.644-1.461 1.438-1.461 1.438.654 1.438 1.461zm-.35 0c0-.613-.488-1.111-1.088-1.111s-1.088.498-1.088 1.111S11.4 23.65 12 23.65s1.088-.498 1.088-1.111zm4.376-4.091c0 .807-.644 1.461-1.438 1.461s-1.438-.654-1.438-1.461.644-1.461 1.438-1.461 1.438.654 1.438 1.461zm-.35 0c0-.613-.488-1.111-1.088-1.111s-1.088.498-1.088 1.111.488 1.111 1.088 1.111 1.088-.498 1.088-1.111zm2.939-1.461c-.794 0-1.438.654-1.438 1.461s.644 1.461 1.438 1.461 1.438-.654 1.438-1.461-.644-1.461-1.438-1.461z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/metafilter.svg b/assets/lib/simple-icons/icons/metafilter.svg
new file mode 100644
index 00000000..e320c5b7
--- /dev/null
+++ b/assets/lib/simple-icons/icons/metafilter.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>MetaFilter</title><path d="M18.548 5.26l-.87 4.894h3.558l-.519 2.83h-3.592l-1.602 8.639h-2.857l3.586-19.248H24l-.537 2.885h-4.915zm-7.331-2.884L7.19 13.472V2.376H3.581L0 21.624h2.452L5.198 6.728l-.251 14.896h1.421l5.225-14.896-2.786 14.896h2.48l3.581-19.248h-3.651z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/meteor.svg b/assets/lib/simple-icons/icons/meteor.svg
index 4b18d39c..f5c04cad 100644
--- a/assets/lib/simple-icons/icons/meteor.svg
+++ b/assets/lib/simple-icons/icons/meteor.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Meteor icon</title><path d="M0 .234l21.912 20.537s.412.575-.124 1.151c-.535.576-1.236.083-1.236.083L0 .234zm6.508 2.058l17.01 15.638s.413.576-.123 1.152c-.534.576-1.235.083-1.235.083L6.508 2.292zM1.936 6.696l17.01 15.638s.412.576-.123 1.152-1.235.082-1.235.082L1.936 6.696zm10.073-2.635l11.886 10.927s.287.401-.087.805-.863.058-.863.058L12.009 4.061zm-8.567 7.737l11.886 10.926s.285.4-.088.803c-.375.403-.863.059-.863.059L3.442 11.798zm14.187-5.185l5.426 4.955s.142.188-.044.377c-.185.188-.428.027-.428.027l-4.954-5.358v-.001zM6.178 17.231l5.425 4.956s.144.188-.042.377-.427.026-.427.026l-4.956-5.359z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Meteor</title><path d="M0 .234l21.912 20.537s.412.575-.124 1.151c-.535.576-1.236.083-1.236.083L0 .234zm6.508 2.058l17.01 15.638s.413.576-.123 1.152c-.534.576-1.235.083-1.235.083L6.508 2.292zM1.936 6.696l17.01 15.638s.412.576-.123 1.152-1.235.082-1.235.082L1.936 6.696zm10.073-2.635l11.886 10.927s.287.401-.087.805-.863.058-.863.058L12.009 4.061zm-8.567 7.737l11.886 10.926s.285.4-.088.803c-.375.403-.863.059-.863.059L3.442 11.798zm14.187-5.185l5.426 4.955s.142.188-.044.377c-.185.188-.428.027-.428.027l-4.954-5.358v-.001zM6.178 17.231l5.425 4.956s.144.188-.042.377-.427.026-.427.026l-4.956-5.359z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/metro.svg b/assets/lib/simple-icons/icons/metro.svg
new file mode 100644
index 00000000..fc6329a0
--- /dev/null
+++ b/assets/lib/simple-icons/icons/metro.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Metro</title><path d="M12 0c-.655 0-1.31.143-1.807.43l-7.31 4.22c-.99.574-1.806 1.98-1.806 3.129v8.442c0 1.14.813 2.555 1.805 3.128l7.311 4.221c.994.573 2.619.573 3.612 0l7.311-4.22c.994-.574 1.807-1.982 1.807-3.129V7.779c0-1.14-.813-2.555-1.807-3.128L13.806.43C13.308.143 12.653 0 11.998 0zm.005 2.606c.29 0 .577.073.834.209l4.718 2.724-1.76 1.067L12 4.414 8.21 6.602 6.448 5.534l4.71-2.72c.26-.137.551-.21.847-.208zm7.577 4.237a.905.905 0 0 1 .909.9c-.001 2.472 0 5.432-.008 8.313a1.761 1.761 0 0 1-.84 1.46l-6.8 3.927a1.694 1.694 0 0 1-.843.215 1.7 1.7 0 0 1-.844-.215l-6.802-3.927a1.763 1.763 0 0 1-.842-1.46V7.75a.905.905 0 0 1 1.376-.765C7.188 8.381 9.626 9.835 12 11.3c2.375-1.443 4.757-2.897 7.115-4.322a.895.895 0 0 1 .467-.135zM5.32 9.355v6.632L12 19.844l6.682-3.857V9.355l-6.213 3.773a.899.899 0 0 1-.937 0Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/metrodelaciudaddemexico.svg b/assets/lib/simple-icons/icons/metrodelaciudaddemexico.svg
new file mode 100644
index 00000000..f1af123f
--- /dev/null
+++ b/assets/lib/simple-icons/icons/metrodelaciudaddemexico.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Metro de la Ciudad de M&#233;xico</title><path d="M3.965 8.704V24H.008V6.864h2.097c1.066 0 1.86.774 1.86 1.84m2.366-1.84c.268.521.521 1.315.521 1.84V24h3.685V8.704a1.784 1.784 0 0 0-1.84-1.84M17.4 24V8.704a1.795 1.795 0 0 0-1.844-1.84h-2.382c.269.521.269 1.315.269 1.84V24M.008 3.953V0h15.549c4.75 0 8.435 3.953 8.435 8.704V24h-3.685V8.704a4.735 4.735 0 0 0-4.75-4.75z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/metrodemadrid.svg b/assets/lib/simple-icons/icons/metrodemadrid.svg
new file mode 100644
index 00000000..c84d8e63
--- /dev/null
+++ b/assets/lib/simple-icons/icons/metrodemadrid.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Metro de Madrid</title><path d="M12 4.74L0 12l12 7.26L24 12 12 4.74zm0 2.905l3.45 2.087h-6.9L12 7.645zM7.2 10.64h.786l.606 1.77.564-1.77h.79v2.568h-.524l-.006-1.82-.627 1.82h-.432l-.632-1.805v1.805h-.526V10.64zm5.275.148h.51l.001.559h.371v.343h-.37v.92c0 .174.041.215.212.215a.69.69 0 0 0 .158-.014v.4a1.907 1.907 0 0 1-.298.018c-.313 0-.584-.073-.584-.443V11.69h-.307v-.341h.307v-.559zm5.222.303l1.5.908-1.5.908v-1.816zM6.3 11.094v1.812L4.8 12l1.498-.906zm8.455.203a.345.345 0 0 1 .11.017v.475a.81.81 0 0 0-.18-.018c-.37 0-.5.27-.5.598v.842h-.508v-1.863h.48l.006.345a.653.653 0 0 1 .592-.396zm1.127 0c.58 0 .957.39.957.982s-.377.98-.957.98c-.578 0-.953-.39-.953-.98 0-.593.375-.98.953-.982zm-4.738.002c.628 0 .932.532.896 1.103v.004h-1.334c.015.325.172.473.455.473.204 0 .368-.126.4-.24h.446c-.141.439-.445.625-.863.625-.581 0-.942-.407-.942-.98 0-.56.382-.985.942-.985zm-.012.383c-.322 0-.416.252-.422.396h.824c-.045-.262-.156-.396-.402-.396zm4.75 0c-.343 0-.445.3-.445.597 0 .295.102.596.445.596.349 0 .45-.3.45-.596 0-.3-.104-.597-.45-.597zM8.55 14.268h6.9L12 16.355l-3.451-2.087z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/metrodeparis.svg b/assets/lib/simple-icons/icons/metrodeparis.svg
index 0fcf8690..09081bb4 100644
--- a/assets/lib/simple-icons/icons/metrodeparis.svg
+++ b/assets/lib/simple-icons/icons/metrodeparis.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Métro de Paris icon</title><path d="M17.708 18.099c-.202.152-.44.228-.714.228-.242 0-.471-.076-.688-.228-.218-.152-.327-.373-.327-.66V9.626h-.023l-2.984 6.057a1.453 1.453 0 0 1-.385.505c-.145.112-.337.168-.578.168-.24 0-.433-.056-.577-.168a1.442 1.442 0 0 1-.385-.505L8.063 9.627H8.04v7.811a.748.748 0 0 1-.339.66 1.23 1.23 0 0 1-.7.229c-.275 0-.508-.076-.702-.228-.193-.152-.29-.373-.29-.66V6.958c0-.304.096-.589.29-.853.192-.264.537-.396 1.036-.396.37 0 .655.084.856.252.2.169.38.421.542.757l3.277 6.754h.024l3.253-6.754c.16-.336.342-.588.543-.757.2-.168.485-.252.855-.252.498 0 .844.132 1.036.396.193.265.29.55.29.854v10.478c0 .288-.101.509-.302.66zm-5.732 4.156c5.658 0 10.279-4.64 10.279-10.327 0-5.62-4.603-10.183-10.279-10.183-5.674 0-10.23 4.536-10.23 10.183 0 5.59 4.715 10.327 10.23 10.327zm0 1.745C5.495 24 0 18.48 0 11.928 0 5.315 5.34 0 11.976 0 18.613 0 24 5.34 24 11.928 24 18.577 18.6 24 11.976 24Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>M&#233;tro de Paris</title><path d="M17.708 18.099c-.202.152-.44.228-.714.228-.242 0-.471-.076-.688-.228-.218-.152-.327-.373-.327-.66V9.626h-.023l-2.984 6.057a1.453 1.453 0 0 1-.385.505c-.145.112-.337.168-.578.168-.24 0-.433-.056-.577-.168a1.442 1.442 0 0 1-.385-.505L8.063 9.627H8.04v7.811a.748.748 0 0 1-.339.66 1.23 1.23 0 0 1-.7.229c-.275 0-.508-.076-.702-.228-.193-.152-.29-.373-.29-.66V6.958c0-.304.096-.589.29-.853.192-.264.537-.396 1.036-.396.37 0 .655.084.856.252.2.169.38.421.542.757l3.277 6.754h.024l3.253-6.754c.16-.336.342-.588.543-.757.2-.168.485-.252.855-.252.498 0 .844.132 1.036.396.193.265.29.55.29.854v10.478c0 .288-.101.509-.302.66zm-5.732 4.156c5.658 0 10.279-4.64 10.279-10.327 0-5.62-4.603-10.183-10.279-10.183-5.674 0-10.23 4.536-10.23 10.183 0 5.59 4.715 10.327 10.23 10.327zm0 1.745C5.495 24 0 18.48 0 11.928 0 5.315 5.34 0 11.976 0 18.613 0 24 5.34 24 11.928 24 18.577 18.6 24 11.976 24Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/mewe.svg b/assets/lib/simple-icons/icons/mewe.svg
new file mode 100644
index 00000000..3d889863
--- /dev/null
+++ b/assets/lib/simple-icons/icons/mewe.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>MeWe</title><path d="M3.029 7.712a.768.768 0 100 1.536.768.768 0 000-1.536zm7.883 0a.768.768 0 100 1.536.768.768 0 000-1.536zm4.414 0a.768.768 0 100 1.536.768.768 0 000-1.536zm4.418 0a.768.768 0 100 1.537.768.768 0 000-1.537zm-4.447 2.307c-.27 0-.453.175-.54.428l-1.378 4.175-1.403-4.193a.546.546 0 00-.532-.392c-.296 0-.55.227-.55.523 0 .07.018.148.044.21l1.805 5.056c.105.279.296.444.558.444h.105c.261 0 .461-.165.557-.444l1.36-3.985 1.36 3.985c.096.279.288.444.55.444h.105c.261 0 .462-.174.558-.444l1.804-5.057a.617.617 0 00.052-.218.525.525 0 00-.531-.514c-.262 0-.445.166-.523.383l-1.404 4.202-1.377-4.175c-.079-.253-.27-.428-.541-.428zM.54 10.045a.538.538 0 00-.54.541v5.117c0 .297.227.523.523.523a.52.52 0 00.532-.523V12.05l1.482 2.224c.113.174.253.279.444.279.201 0 .34-.105.454-.28l1.49-2.24v3.661a.54.54 0 00.533.532.53.53 0 00.54-.532v-5.108a.538.538 0 00-.54-.54h-.114a.54.54 0 00-.488.278L3 13.227 1.15 10.333a.565.565 0 00-.497-.288zm8.368 1.439c-1.316 0-2.25 1.081-2.25 2.397v.018c0 1.42 1.03 2.389 2.363 2.389.715 0 1.239-.236 1.657-.61a.46.46 0 00.14-.323.415.415 0 00-.419-.427.391.391 0 00-.27.096 1.655 1.655 0 01-1.09.4c-.68 0-1.212-.418-1.325-1.168h2.885c.27 0 .497-.209.497-.505 0-1.064-.723-2.267-2.188-2.267zm12.904 0c-1.317 0-2.25 1.081-2.25 2.397v.018c0 1.42 1.029 2.389 2.363 2.389.715 0 1.238-.236 1.657-.61a.46.46 0 00.139-.323.415.415 0 00-.418-.427.392.392 0 00-.271.096 1.652 1.652 0 01-1.09.4c-.68 0-1.211-.418-1.325-1.168h2.886c.27 0 .497-.209.497-.505 0-1.064-.724-2.267-2.188-2.267zm-12.913.863c.698 0 1.099.532 1.169 1.212H7.705c.096-.715.549-1.212 1.194-1.212zm12.904 0c.697 0 1.098.532 1.168 1.212h-2.363c.096-.715.55-1.212 1.195-1.212z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/micro-dot-blog.svg b/assets/lib/simple-icons/icons/micro-dot-blog.svg
deleted file mode 100644
index b050ebd7..00000000
--- a/assets/lib/simple-icons/icons/micro-dot-blog.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Micro.blog icon</title><path d="M21.4 17.7c-2 2.6-1 4.8-.3 5.9.3.4-.1.4-.3.4a6 6 0 0 1-4-2.7c-.2-.1-.3-.2-.5-.1-1.4.4-2.8.7-4.3.6C5.4 21.8 0 17 0 11 0 5 5.4 0 12 0s12 4.9 12 11c0 2.5-1 4.8-2.6 6.7zM12 14l3.2 2.2a.4.4 0 0 0 .6-.4L14.6 12l3.1-2.4a.4.4 0 0 0-.2-.6h-3.9l-1.3-3.8a.4.4 0 0 0-.6 0L10.4 9h-4a.4.4 0 0 0-.1.7l3 2.4-1 3.7a.4.4 0 0 0 .5.4L12 14z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/microbit.svg b/assets/lib/simple-icons/icons/microbit.svg
index b5c5ba15..61c03a7f 100644
--- a/assets/lib/simple-icons/icons/microbit.svg
+++ b/assets/lib/simple-icons/icons/microbit.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>micro:bit icon</title><path d="M6.857 5.143A6.865 6.865 0 000 12a6.864 6.864 0 006.857 6.857h10.287A6.863 6.863 0 0024 12c0-3.781-3.075-6.857-6.856-6.857zm0 2.744h10.287A4.117 4.117 0 0121.257 12a4.119 4.119 0 01-4.113 4.116H6.857A4.12 4.12 0 012.743 12a4.118 4.118 0 014.114-4.113zm10.168 2.729a1.385 1.385 0 10.003 2.77 1.385 1.385 0 00-.003-2.77zm-10.166 0a1.385 1.385 0 10-.003 2.771 1.385 1.385 0 00.003-2.77Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>micro:bit</title><path d="M6.857 5.143A6.865 6.865 0 000 12a6.864 6.864 0 006.857 6.857h10.287A6.863 6.863 0 0024 12c0-3.781-3.075-6.857-6.856-6.857zm0 2.744h10.287A4.117 4.117 0 0121.257 12a4.119 4.119 0 01-4.113 4.116H6.857A4.12 4.12 0 012.743 12a4.118 4.118 0 014.114-4.113zm10.168 2.729a1.385 1.385 0 10.003 2.77 1.385 1.385 0 00-.003-2.77zm-10.166 0a1.385 1.385 0 10-.003 2.771 1.385 1.385 0 00.003-2.77Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/microdotblog.svg b/assets/lib/simple-icons/icons/microdotblog.svg
new file mode 100644
index 00000000..dc303ec6
--- /dev/null
+++ b/assets/lib/simple-icons/icons/microdotblog.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Micro.blog</title><path d="M12 0C5.4 0 0 4.9 0 10.95 0 17 5.4 21.9 12 21.9c1.4 0 2.85-.25 4.2-.7.15-.05.35 0 .45.1 1 1.35 2.55 2.3 4.25 2.7l.25-.1v-.3a4.65 4.65 0 01.2-5.9C22.9 15.85 24 13.5 24 10.95 24 4.9 18.55 0 12 0zm-.05 5.2c.15 0 .3.1.35.25L13.55 9l3.85.1c.15 0 .3.1.35.2.05.15 0 .3-.15.4L14.55 12l1.1 3.6c.05.15 0 .3-.15.4h-.4l-3.15-2.15L8.8 16h-.4c-.15-.1-.2-.25-.15-.4l1.1-3.6L6.3 9.7c-.15-.1-.2-.25-.15-.4.05-.1.2-.2.35-.2l3.85-.1 1.25-3.55c.05-.15.2-.25.35-.25z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/microgenetics.svg b/assets/lib/simple-icons/icons/microgenetics.svg
index 4b4ccad2..1307b7b2 100644
--- a/assets/lib/simple-icons/icons/microgenetics.svg
+++ b/assets/lib/simple-icons/icons/microgenetics.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Microgenetics icon</title><path d="M12.008 6c2.595 0 4.31 1.263 5.583 2.726l.248.293c.082.101.164.2.242.3.434.569.809 1.146 1.17 1.674.24.356.465.693.689 1.008l.227.32c.074.105.148.211.24.31.928 1.171 1.889 1.9 3.283 1.991.195-.845.301-1.721.301-2.621s-.105-1.776-.301-2.621c-1.395.091-2.355.819-3.301 1.991-.18-.246-.357-.51-.555-.796-.375-.566-.809-1.208-1.32-1.845 1.006-1.169 2.25-2.175 3.932-2.557C20.453 2.49 16.523 0 12.008 0c-4.5 0-8.44 2.49-10.49 6.173 1.681.384 2.923 1.388 3.931 2.556.086.09.168.18.249.285l.237.3c.479.615.914 1.245 1.305 1.845l.555.826.24.329c.074.104.165.21.239.315 1.051 1.439 2.115 2.43 3.75 2.43 1.65 0 2.701-.99 3.765-2.43l.375.555c.451.66.932 1.38 1.455 2.055-1.273 1.471-3 2.73-5.595 2.73-2.594 0-4.304-1.275-5.579-2.73l-.24-.3-.24-.3c-.435-.57-.81-1.154-1.17-1.68-.239-.36-.465-.69-.689-1.006l-.226-.33c-.074-.104-.149-.21-.24-.314C2.664 10.2 1.703 9.465.309 9.375c-.195.849-.3 1.725-.3 2.625s.102 1.776.29 2.621c1.398-.091 2.355-.819 3.295-1.991.172.246.354.51.544.796.375.566.806 1.208 1.313 1.845-1.009 1.169-2.253 2.175-3.93 2.557C3.566 21.51 7.494 24 12.008 24c4.515 0 8.441-2.49 10.49-6.173-1.68-.384-2.922-1.388-3.93-2.556-.086-.09-.17-.18-.25-.285l-.236-.3c-.48-.615-.916-1.245-1.305-1.845L16.223 12c-.074-.111-.154-.225-.23-.33-.078-.111-.154-.219-.232-.325-1.051-1.44-2.1-2.431-3.75-2.431s-2.699.99-3.75 2.431l-.375-.56c-.436-.669-.916-1.38-1.456-2.059C7.703 7.263 9.383 6 12.008 6"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Microgenetics</title><path d="M12.008 6c2.595 0 4.31 1.263 5.583 2.726l.248.293c.082.101.164.2.242.3.434.569.809 1.146 1.17 1.674.24.356.465.693.689 1.008l.227.32c.074.105.148.211.24.31.928 1.171 1.889 1.9 3.283 1.991.195-.845.301-1.721.301-2.621s-.105-1.776-.301-2.621c-1.395.091-2.355.819-3.301 1.991-.18-.246-.357-.51-.555-.796-.375-.566-.809-1.208-1.32-1.845 1.006-1.169 2.25-2.175 3.932-2.557C20.453 2.49 16.523 0 12.008 0c-4.5 0-8.44 2.49-10.49 6.173 1.681.384 2.923 1.388 3.931 2.556.086.09.168.18.249.285l.237.3c.479.615.914 1.245 1.305 1.845l.555.826.24.329c.074.104.165.21.239.315 1.051 1.439 2.115 2.43 3.75 2.43 1.65 0 2.701-.99 3.765-2.43l.375.555c.451.66.932 1.38 1.455 2.055-1.273 1.471-3 2.73-5.595 2.73-2.594 0-4.304-1.275-5.579-2.73l-.24-.3-.24-.3c-.435-.57-.81-1.154-1.17-1.68-.239-.36-.465-.69-.689-1.006l-.226-.33c-.074-.104-.149-.21-.24-.314C2.664 10.2 1.703 9.465.309 9.375c-.195.849-.3 1.725-.3 2.625s.102 1.776.29 2.621c1.398-.091 2.355-.819 3.295-1.991.172.246.354.51.544.796.375.566.806 1.208 1.313 1.845-1.009 1.169-2.253 2.175-3.93 2.557C3.566 21.51 7.494 24 12.008 24c4.515 0 8.441-2.49 10.49-6.173-1.68-.384-2.922-1.388-3.93-2.556-.086-.09-.17-.18-.25-.285l-.236-.3c-.48-.615-.916-1.245-1.305-1.845L16.223 12c-.074-.111-.154-.225-.23-.33-.078-.111-.154-.219-.232-.325-1.051-1.44-2.1-2.431-3.75-2.431s-2.699.99-3.75 2.431l-.375-.56c-.436-.669-.916-1.38-1.456-2.059C7.703 7.263 9.383 6 12.008 6"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/micropython.svg b/assets/lib/simple-icons/icons/micropython.svg
new file mode 100644
index 00000000..6baef4a5
--- /dev/null
+++ b/assets/lib/simple-icons/icons/micropython.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>MicroPython</title><path d="M0 0h11.509v18.737h.982V0H24v24h-5.263V5.263h-.983V24H6.246V5.263l-.983.035V24H0zm22.246 19.509h-1.404v2.386h1.404z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/microsoft.svg b/assets/lib/simple-icons/icons/microsoft.svg
index e0e09e9d..eeacf252 100644
--- a/assets/lib/simple-icons/icons/microsoft.svg
+++ b/assets/lib/simple-icons/icons/microsoft.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Microsoft icon</title><path d="M11.4 24H0V12.6h11.4V24zM24 24H12.6V12.6H24V24zM11.4 11.4H0V0h11.4v11.4zm12.6 0H12.6V0H24v11.4z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Microsoft</title><path d="M0 0v11.408h11.408V0zm12.594 0v11.408H24V0zM0 12.594V24h11.408V12.594zm12.594 0V24H24V12.594z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/microsoftacademic.svg b/assets/lib/simple-icons/icons/microsoftacademic.svg
index fcc1d15c..9332deb0 100644
--- a/assets/lib/simple-icons/icons/microsoftacademic.svg
+++ b/assets/lib/simple-icons/icons/microsoftacademic.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Microsoft Academic icon</title><path d="M19.056 23.992c-4.018-2.966-10.695-8.022-19-9.125l3.55-3.472c10.19 3.935 15.45 12.597 15.45 12.597zM.48 18.437l2.77-2.217C11.334 18.208 18.19 24 18.19 24 15.303 22.37 7.113 18.36.48 18.437zm2.543-8.042l9.25-8.23 1.992 1.153L9.78 8.41c4.83 3.983 10.19 8.22 9.71 15.127C14.734 16.799 9.127 11.98 3.024 10.395zm7.907-2.131L18.035 0c3.791 3.1 5.91 7.913 5.91 10.513-.309 3.322-3.558 11.35-3.858 12.236-.225-2.007 1.434-5.56-9.157-14.485z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Microsoft Academic</title><path d="M19.056 23.992c-4.018-2.966-10.695-8.022-19-9.125l3.55-3.472c10.19 3.935 15.45 12.597 15.45 12.597zM.48 18.437l2.77-2.217C11.334 18.208 18.19 24 18.19 24 15.303 22.37 7.113 18.36.48 18.437zm2.543-8.042l9.25-8.23 1.992 1.153L9.78 8.41c4.83 3.983 10.19 8.22 9.71 15.127C14.734 16.799 9.127 11.98 3.024 10.395zm7.907-2.131L18.035 0c3.791 3.1 5.91 7.913 5.91 10.513-.309 3.322-3.558 11.35-3.858 12.236-.225-2.007 1.434-5.56-9.157-14.485z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/microsoftaccess.svg b/assets/lib/simple-icons/icons/microsoftaccess.svg
index 612690c3..67ee7d03 100644
--- a/assets/lib/simple-icons/icons/microsoftaccess.svg
+++ b/assets/lib/simple-icons/icons/microsoftaccess.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Microsoft Access icon</title><path d="M15 .75q1.605 0 3.21.176.282.035.815.111.534.076 1.178.211.645.135 1.318.328.674.194 1.225.457.55.264.902.598.352.334.352.744v17.25q0 .41-.352.744-.351.334-.902.598-.55.263-1.225.457-.673.193-1.318.328-.644.135-1.178.217-.533.082-.814.105-1.606.176-3.211.176-1.617 0-3.21-.176-.282-.023-.815-.105-.534-.082-1.178-.217-.645-.135-1.318-.328-.674-.194-1.225-.457-.55-.264-.902-.598Q6 21.035 6 20.625V18H.996q-.41 0-.703-.293T0 17.004V6.996q0-.41.293-.703T.996 6H6V3.375q0-.41.352-.744.351-.334.902-.598.55-.263 1.225-.457.673-.193 1.318-.328.644-.135 1.178-.21.533-.077.814-.112Q13.383.75 15 .75zm0 1.5q-.762 0-1.7.053-.937.052-1.904.181-.966.13-1.88.346-.914.217-1.618.545.727.34 1.635.557.908.216 1.863.34.956.123 1.887.175.932.053 1.717.053t1.717-.053q.931-.052 1.887-.176.955-.123 1.863-.34.908-.216 1.635-.556-.704-.328-1.618-.545-.914-.217-1.88-.346-.967-.129-1.905-.181Q15.762 2.25 15 2.25zM4.723 14.145h2.543l.597 1.793h2.004l-2.87-7.876H5.038l-2.906 7.876h1.992zM22.5 20.379v-3.55q-.773.339-1.729.562-.955.222-1.962.357-1.008.135-1.993.193Q15.832 18 15 18q-.855 0-1.705-.053-.85-.052-1.693-.146-.27.199-.598.199H7.5v2.379q.34.27.914.48.574.211 1.272.364.697.152 1.459.252.761.1 1.482.164.72.064 1.342.088.62.023 1.031.023.41 0 1.031-.023.621-.024 1.342-.088.72-.065 1.482-.164.762-.1 1.46-.252.697-.153 1.27-.364.575-.21.915-.48zm0-5.227v-4.324q-.773.34-1.729.563-.955.222-1.962.357-1.008.135-1.993.193Q15.832 12 15 12q-.75 0-1.5-.041t-1.5-.111v4.5q.75.082 1.5.117t1.5.035q.434 0 1.055-.023.62-.024 1.33-.088.709-.065 1.459-.164.75-.1 1.441-.252.692-.153 1.272-.352.58-.2.943-.469zm0-6V4.828q-.773.34-1.729.563-.955.222-1.962.357-1.008.135-1.993.193Q15.832 6 15 6q-.832 0-1.816-.059-.985-.058-1.993-.193-1.007-.135-1.962-.357-.956-.223-1.729-.563V6h3.504q.41 0 .703.293t.293.703v3.352q.75.082 1.5.117t1.5.035q.434 0 1.055-.023.62-.024 1.33-.088.709-.065 1.459-.164.75-.1 1.441-.252.692-.153 1.266-.352.574-.2.949-.469zm-17.32 3.47l.808-2.45.785 2.45Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Microsoft Access</title><path d="M15 .75q1.605 0 3.21.176.282.035.815.111.534.076 1.178.211.645.135 1.318.328.674.194 1.225.457.55.264.902.598.352.334.352.744v17.25q0 .41-.352.744-.351.334-.902.598-.55.263-1.225.457-.673.193-1.318.328-.644.135-1.178.217-.533.082-.814.105-1.606.176-3.211.176-1.617 0-3.21-.176-.282-.023-.815-.105-.534-.082-1.178-.217-.645-.135-1.318-.328-.674-.194-1.225-.457-.55-.264-.902-.598Q6 21.035 6 20.625V18H.996q-.41 0-.703-.293T0 17.004V6.996q0-.41.293-.703T.996 6H6V3.375q0-.41.352-.744.351-.334.902-.598.55-.263 1.225-.457.673-.193 1.318-.328.644-.135 1.178-.21.533-.077.814-.112Q13.383.75 15 .75zm0 1.5q-.762 0-1.7.053-.937.052-1.904.181-.966.13-1.88.346-.914.217-1.618.545.727.34 1.635.557.908.216 1.863.34.956.123 1.887.175.932.053 1.717.053t1.717-.053q.931-.052 1.887-.176.955-.123 1.863-.34.908-.216 1.635-.556-.704-.328-1.618-.545-.914-.217-1.88-.346-.967-.129-1.905-.181Q15.762 2.25 15 2.25zM4.723 14.145h2.543l.597 1.793h2.004l-2.87-7.876H5.038l-2.906 7.876h1.992zM22.5 20.379v-3.55q-.773.339-1.729.562-.955.222-1.962.357-1.008.135-1.993.193Q15.832 18 15 18q-.855 0-1.705-.053-.85-.052-1.693-.146-.27.199-.598.199H7.5v2.379q.34.27.914.48.574.211 1.272.364.697.152 1.459.252.761.1 1.482.164.72.064 1.342.088.62.023 1.031.023.41 0 1.031-.023.621-.024 1.342-.088.72-.065 1.482-.164.762-.1 1.46-.252.697-.153 1.27-.364.575-.21.915-.48zm0-5.227v-4.324q-.773.34-1.729.563-.955.222-1.962.357-1.008.135-1.993.193Q15.832 12 15 12q-.75 0-1.5-.041t-1.5-.111v4.5q.75.082 1.5.117t1.5.035q.434 0 1.055-.023.62-.024 1.33-.088.709-.065 1.459-.164.75-.1 1.441-.252.692-.153 1.272-.352.58-.2.943-.469zm0-6V4.828q-.773.34-1.729.563-.955.222-1.962.357-1.008.135-1.993.193Q15.832 6 15 6q-.832 0-1.816-.059-.985-.058-1.993-.193-1.007-.135-1.962-.357-.956-.223-1.729-.563V6h3.504q.41 0 .703.293t.293.703v3.352q.75.082 1.5.117t1.5.035q.434 0 1.055-.023.62-.024 1.33-.088.709-.065 1.459-.164.75-.1 1.441-.252.692-.153 1.266-.352.574-.2.949-.469zm-17.32 3.47l.808-2.45.785 2.45Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/microsoftazure.svg b/assets/lib/simple-icons/icons/microsoftazure.svg
index d6d0d2c9..69a264e2 100644
--- a/assets/lib/simple-icons/icons/microsoftazure.svg
+++ b/assets/lib/simple-icons/icons/microsoftazure.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Microsoft Azure icon</title><path d="M5.483 21.3H24L14.025 4.013l-3.038 8.347 5.836 6.938L5.483 21.3zM13.23 2.7L6.105 8.677 0 19.253h5.505v.014L13.23 2.7z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Microsoft Azure</title><path d="M22.379 23.343a1.62 1.62 0 0 0 1.536-2.14v.002L17.35 1.76A1.62 1.62 0 0 0 15.816.657H8.184A1.62 1.62 0 0 0 6.65 1.76L.086 21.204a1.62 1.62 0 0 0 1.536 2.139h4.741a1.62 1.62 0 0 0 1.535-1.103l.977-2.892 4.947 3.675c.28.208.618.32.966.32m-3.084-12.531 3.624 10.739a.54.54 0 0 1-.51.713v-.001h-.03a.54.54 0 0 1-.322-.106l-9.287-6.9h4.853m6.313 7.006c.116-.326.13-.694.007-1.058L9.79 1.76a1.722 1.722 0 0 0-.007-.02h6.034a.54.54 0 0 1 .512.366l6.562 19.445a.54.54 0 0 1-.338.684"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/microsoftbing.svg b/assets/lib/simple-icons/icons/microsoftbing.svg
new file mode 100644
index 00000000..f5b787f1
--- /dev/null
+++ b/assets/lib/simple-icons/icons/microsoftbing.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Microsoft Bing</title><path d="M20.176 15.406a6.48 6.48 0 01-1.736 4.414c1.338-1.47.803-3.869-1.003-4.635-.862-.305-2.488-.85-3.367-1.158a1.834 1.834 0 01-.932-.818c-.381-.975-1.163-2.968-1.548-3.948-.095-.285-.31-.625-.265-.938.046-.598.724-1.003 1.276-.754l3.682 1.888c.621.292 1.305.692 1.796 1.172a6.486 6.486 0 012.097 4.777zm-1.44 1.888c-.264-1.194-1.135-1.744-2.216-2.028-1.527.902-4.853 2.878-6.952 4.13-1.103.68-2.13 1.35-2.919 1.242a2.866 2.866 0 01-2.77-2.325c-.012-.048-.008-.03-.001.01a6.4 6.4 0 00.947 2.653 6.498 6.498 0 005.486 3.022c1.908.062 3.536-1.153 5.099-2.096.292-.188.804-.496 1.332-.831l1.423-1.51c.553-.577.764-1.426.571-2.267zm-12.04 2.97c.422 0 .822-.1 1.173-.29.355-.215.964-.579 1.7-1.018L9.57 4.502c0-.99-.497-1.864-1.257-2.382-.08-.059-2.91-1.901-2.99-1.956-.605-.432-1.523.045-1.5.797v14.887l.417 2.36a2.488 2.488 0 002.455 2.056z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/microsoftedge.svg b/assets/lib/simple-icons/icons/microsoftedge.svg
index 49a45124..2b0cd038 100644
--- a/assets/lib/simple-icons/icons/microsoftedge.svg
+++ b/assets/lib/simple-icons/icons/microsoftedge.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Microsoft Edge icon</title><path d="M21.86 17.86q.14 0 .25.12.1.13.1.25t-.11.33l-.32.46-.43.53-.44.5q-.21.25-.38.42l-.22.23q-.58.53-1.34 1.04-.76.51-1.6.91-.86.4-1.74.64t-1.67.24q-.9 0-1.69-.28-.8-.28-1.48-.78-.68-.5-1.22-1.17-.53-.66-.92-1.44-.38-.77-.58-1.6-.2-.83-.2-1.67 0-1 .32-1.96.33-.97.87-1.8.14.95.55 1.77.41.82 1.02 1.5.6.68 1.38 1.21.78.54 1.64.9.86.36 1.77.56.92.2 1.8.2 1.12 0 2.18-.24 1.06-.23 2.06-.72l.2-.1.2-.05zm-15.5-1.27q0 1.1.27 2.15.27 1.06.78 2.03.51.96 1.24 1.77.74.82 1.66 1.4-1.47-.2-2.8-.74-1.33-.55-2.48-1.37-1.15-.83-2.08-1.9-.92-1.07-1.58-2.33T.36 14.94Q0 13.54 0 12.06q0-.81.32-1.49.31-.68.83-1.23.53-.55 1.2-.96.66-.4 1.35-.66.74-.27 1.5-.39.78-.12 1.55-.12.7 0 1.42.1.72.12 1.4.35.68.23 1.32.57.63.35 1.16.83-.35 0-.7.07-.33.07-.65.23v-.02q-.63.28-1.2.74-.57.46-1.05 1.04-.48.58-.87 1.26-.38.67-.65 1.39-.27.71-.42 1.44-.15.72-.15 1.38zM11.96.06q1.7 0 3.33.39 1.63.38 3.07 1.15 1.43.77 2.62 1.93 1.18 1.16 1.98 2.7.49.94.76 1.96.28 1 .28 2.08 0 .89-.23 1.7-.24.8-.69 1.48-.45.68-1.1 1.22-.64.53-1.45.88-.54.24-1.11.36-.58.13-1.16.13-.42 0-.97-.03-.54-.03-1.1-.12-.55-.1-1.05-.28-.5-.19-.84-.5-.12-.09-.23-.24-.1-.16-.1-.33 0-.15.16-.35.16-.2.35-.5.2-.28.36-.68.16-.4.16-.95 0-1.06-.4-1.96-.4-.91-1.06-1.64-.66-.74-1.52-1.28-.86-.55-1.79-.89-.84-.3-1.72-.44-.87-.14-1.76-.14-1.55 0-3.06.45T.94 7.55q.71-1.74 1.81-3.13 1.1-1.38 2.52-2.35Q6.68 1.1 8.37.58q1.7-.52 3.58-.52Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Microsoft Edge</title><path d="M21.86 17.86q.14 0 .25.12.1.13.1.25t-.11.33l-.32.46-.43.53-.44.5q-.21.25-.38.42l-.22.23q-.58.53-1.34 1.04-.76.51-1.6.91-.86.4-1.74.64t-1.67.24q-.9 0-1.69-.28-.8-.28-1.48-.78-.68-.5-1.22-1.17-.53-.66-.92-1.44-.38-.77-.58-1.6-.2-.83-.2-1.67 0-1 .32-1.96.33-.97.87-1.8.14.95.55 1.77.41.82 1.02 1.5.6.68 1.38 1.21.78.54 1.64.9.86.36 1.77.56.92.2 1.8.2 1.12 0 2.18-.24 1.06-.23 2.06-.72l.2-.1.2-.05zm-15.5-1.27q0 1.1.27 2.15.27 1.06.78 2.03.51.96 1.24 1.77.74.82 1.66 1.4-1.47-.2-2.8-.74-1.33-.55-2.48-1.37-1.15-.83-2.08-1.9-.92-1.07-1.58-2.33T.36 14.94Q0 13.54 0 12.06q0-.81.32-1.49.31-.68.83-1.23.53-.55 1.2-.96.66-.4 1.35-.66.74-.27 1.5-.39.78-.12 1.55-.12.7 0 1.42.1.72.12 1.4.35.68.23 1.32.57.63.35 1.16.83-.35 0-.7.07-.33.07-.65.23v-.02q-.63.28-1.2.74-.57.46-1.05 1.04-.48.58-.87 1.26-.38.67-.65 1.39-.27.71-.42 1.44-.15.72-.15 1.38zM11.96.06q1.7 0 3.33.39 1.63.38 3.07 1.15 1.43.77 2.62 1.93 1.18 1.16 1.98 2.7.49.94.76 1.96.28 1 .28 2.08 0 .89-.23 1.7-.24.8-.69 1.48-.45.68-1.1 1.22-.64.53-1.45.88-.54.24-1.11.36-.58.13-1.16.13-.42 0-.97-.03-.54-.03-1.1-.12-.55-.1-1.05-.28-.5-.19-.84-.5-.12-.09-.23-.24-.1-.16-.1-.33 0-.15.16-.35.16-.2.35-.5.2-.28.36-.68.16-.4.16-.95 0-1.06-.4-1.96-.4-.91-1.06-1.64-.66-.74-1.52-1.28-.86-.55-1.79-.89-.84-.3-1.72-.44-.87-.14-1.76-.14-1.55 0-3.06.45T.94 7.55q.71-1.74 1.81-3.13 1.1-1.38 2.52-2.35Q6.68 1.1 8.37.58q1.7-.52 3.58-.52Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/microsoftexcel.svg b/assets/lib/simple-icons/icons/microsoftexcel.svg
index 9185e954..9fc655db 100644
--- a/assets/lib/simple-icons/icons/microsoftexcel.svg
+++ b/assets/lib/simple-icons/icons/microsoftexcel.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Microsoft Excel icon</title><path d="M23 1.5q.41 0 .7.3.3.29.3.7v19q0 .41-.3.7-.29.3-.7.3H7q-.41 0-.7-.3-.3-.29-.3-.7V18H1q-.41 0-.7-.3-.3-.29-.3-.7V7q0-.41.3-.7Q.58 6 1 6h5V2.5q0-.41.3-.7.29-.3.7-.3zM6 13.28l1.42 2.66h2.14l-2.38-3.87 2.34-3.8H7.46l-1.3 2.4-.05.08-.04.09-.64-1.28-.66-1.29H2.59l2.27 3.82-2.48 3.85h2.16zM14.25 21v-3H7.5v3zm0-4.5v-3.75H12v3.75zm0-5.25V7.5H12v3.75zm0-5.25V3H7.5v3zm8.25 15v-3h-6.75v3zm0-4.5v-3.75h-6.75v3.75zm0-5.25V7.5h-6.75v3.75zm0-5.25V3h-6.75v3Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Microsoft Excel</title><path d="M23 1.5q.41 0 .7.3.3.29.3.7v19q0 .41-.3.7-.29.3-.7.3H7q-.41 0-.7-.3-.3-.29-.3-.7V18H1q-.41 0-.7-.3-.3-.29-.3-.7V7q0-.41.3-.7Q.58 6 1 6h5V2.5q0-.41.3-.7.29-.3.7-.3zM6 13.28l1.42 2.66h2.14l-2.38-3.87 2.34-3.8H7.46l-1.3 2.4-.05.08-.04.09-.64-1.28-.66-1.29H2.59l2.27 3.82-2.48 3.85h2.16zM14.25 21v-3H7.5v3zm0-4.5v-3.75H12v3.75zm0-5.25V7.5H12v3.75zm0-5.25V3H7.5v3zm8.25 15v-3h-6.75v3zm0-4.5v-3.75h-6.75v3.75zm0-5.25V7.5h-6.75v3.75zm0-5.25V3h-6.75v3Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/microsoftexchange.svg b/assets/lib/simple-icons/icons/microsoftexchange.svg
index a230e472..eee9a51c 100644
--- a/assets/lib/simple-icons/icons/microsoftexchange.svg
+++ b/assets/lib/simple-icons/icons/microsoftexchange.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Microsoft Exchange icon</title><path d="M24 7.875q0 .293-.117.58t-.317.486L20.496 12l3.07 3.059q.2.199.317.486.117.287.117.58V21q0 .316-.117.586-.117.27-.322.475-.206.205-.475.322-.27.117-.586.117h-4.875q-.293 0-.58-.117t-.486-.317l-3.059-3.07-3.059 3.07q-.199.2-.486.317-.287.117-.58.117H4.5q-.316 0-.586-.117-.27-.117-.475-.322-.205-.206-.322-.475Q3 21.316 3 21v-3H.996q-.41 0-.703-.293T0 17.004V6.996q0-.41.293-.703T.996 6H3V3q0-.316.117-.586.117-.27.322-.475.206-.205.475-.322.27-.117.586-.117h4.875q.293 0 .58.117t.486.317l3.059 3.07 3.059-3.07q.199-.2.486-.317.287-.117.58-.117H22.5q.316 0 .586.117.27.117.475.322.205.206.322.475Q24 2.684 24 3zM4.5 3v3h6.504q.41 0 .703.293t.293.703V5.625L9.375 3zM3.375 15.938h5.25v-1.583h-3.41v-1.593h3.047V11.18H5.215V9.656H8.46V8.062H3.375zm19.125.187L19.875 13.5h-3.691q-.247 0-.463.094-.217.094-.375.252-.159.158-.252.375-.094.216-.094.463v3.691L17.625 21H22.5zm0-8.25V3h-4.875L13.5 7.125v2.191q0 .774-.404 1.424-.405.65-1.096.99v5.274q0 .41-.293.703t-.703.293H4.5v3h4.875l4.125-4.125v-2.191q0-.563.21-1.05.212-.486.575-.849t.85-.574Q15.62 12 16.184 12h2.191Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Microsoft Exchange</title><path d="M23.226 4.258c.21 0 .39.077.544.23s.23.335.23.545v13.934c0 .21-.077.392-.23.545s-.335.23-.544.23h-9.291v3.967L0 21.278V2.795L13.935.29v3.967h9.29zM8.613 14.915l-2.383-.17v-1.813H8.6v-1.96H6.23v-1.9h2.383V7.126l-4.065.315v9.048l4.064.387v-1.96zm14.613-9.882h-9.291v.774h.472c.08 0 .147.016.2.048.173.111.206.172.423.363.251.228.574.542.804.78.113.117.17.188.17.212a.531.531 0 0 1-.085.194 5.234 5.234 0 0 1-.4.58c-.064.08-.104.121-.12.121-.04 0-.1-.038-.176-.115-.16-.155-.328-.377-.508-.52-.093-.076-.175-.115-.248-.115h-.532v3.375l1.645 1.609v.133l-.121.133c-.046.028-.08.06-.133.06a1.06 1.06 0 0 1-.242-.102c-.344-.17-.842-.484-1.15-.671v4.753c.065 0 .132-.006.2-.018s.127-.038.176-.078a6.14 6.14 0 0 0 .532-.496c.355-.383 2.14-2.201 2.528-2.601.037-.014.109-.015.133 0 .04.032.083.069.127.109a.19.19 0 0 1 .067.145c0 .016-.022.07-.067.163a17.521 17.521 0 0 1-1.41 2.268c-.354.484-.729.96-1.124 1.428-.107.123-.23.285-.363.399-.072.065-.149.119-.23.163s-.157.067-.23.067h-.338v.774h9.29V5.033zm-7.573 5.394c-.029-.045-.061-.08-.06-.133 0-.016.023-.068.072-.157.123-.223.3-.582.423-.786.298-.508.625-1.004.98-1.488s.722-.952 1.1-1.403c.131-.133.239-.284.406-.442.141-.14.288-.211.441-.211h3.038a.374.374 0 0 1 .399.399v3.169c.002.163-.073.244-.17.363-.185.21-.376.413-.574.61s-.39.402-.575.612c-.112.05-.128.016-.278-.067a6.659 6.659 0 0 1-.58-.405c-.081-.064-.121-.105-.121-.121 0-.04.038-.099.114-.175.155-.16.378-.329.52-.508.077-.093.115-.176.115-.248V7.524c.004-.077-.092-.173-.169-.169h-1.427c-.11.002-.248.013-.328.097a6.045 6.045 0 0 0-.532.496l-.496.52-2.032 2.08h-.133l-.133-.12zm2.31.908c.213.088.54.277.762.399.6.326 1.118.677 1.676 1.083.56.41 1.087.832 1.615 1.282.19.166.423.398.436.659v3.036a.375.375 0 0 1-.4.4h-3.17c-.163.002-.244-.074-.363-.17-.422-.368-.799-.781-1.221-1.15a.196.196 0 0 1-.024-.084c0-.032.03-.097.09-.193.115-.183.274-.417.405-.58.065-.082.105-.122.122-.122.04 0 .098.038.175.115.16.155.328.378.508.52.093.077.175.115.248.115h1.912c.077.004.173-.092.17-.17v-1.427a.894.894 0 0 0-.019-.175.288.288 0 0 0-.078-.151 6.376 6.376 0 0 0-.496-.533l-.52-.495-2.082-2.033v-.133l.121-.133c.046-.028.08-.06.133-.06z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/microsoftoffice.svg b/assets/lib/simple-icons/icons/microsoftoffice.svg
index 8911b005..5fd536cb 100644
--- a/assets/lib/simple-icons/icons/microsoftoffice.svg
+++ b/assets/lib/simple-icons/icons/microsoftoffice.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Microsoft Office icon</title><path d="M21.53 4.306V19.67q0 .807-.471 1.433-.472.627-1.253.85l-6.888 1.974q-.136.037-.291.055-.155.019-.292.019-.397 0-.72-.105-.322-.106-.657-.292l-4.505-2.544q-.248-.137-.391-.366-.143-.23-.143-.515 0-.434.304-.738.304-.305.739-.305h5.832V4.964l-4.38 1.563q-.534.187-.857.658-.322.472-.322 1.03v8.079q0 .496-.248.912-.249.416-.683.651l-2.072 1.13q-.286.148-.571.148-.497 0-.844-.347-.348-.347-.348-.844V6.564q0-.62.33-1.19.328-.572.874-.882L11.07.285q.248-.136.534-.21.285-.075.57-.075.212 0 .38.031.167.031.365.093l6.888 1.899q.384.111.7.329.317.217.547.52.23.305.353.67.125.367.125.764zM19.943 19.67V4.306q0-.273-.161-.478-.162-.204-.422-.279l-3.388-.93q-.397-.112-.794-.23-.397-.118-.794-.217v19.681l4.976-1.427q.26-.074.422-.28.161-.204.161-.477Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Microsoft Office</title><path d="M21.53 4.306v15.363q0 .807-.472 1.433-.472.627-1.253.85l-6.888 1.974q-.136.037-.29.055-.156.019-.293.019-.396 0-.72-.105-.321-.106-.656-.292l-4.505-2.544q-.248-.137-.391-.366-.143-.23-.143-.515 0-.434.304-.738.304-.305.739-.305h5.831V4.964l-4.38 1.563q-.533.187-.856.658-.322.472-.322 1.03v8.078q0 .496-.248.912-.25.416-.683.651l-2.072 1.13q-.286.148-.571.148-.497 0-.844-.347-.348-.347-.348-.844V6.563q0-.62.33-1.19.328-.571.874-.881L11.07.285q.248-.136.534-.21.285-.075.57-.075.211 0 .38.031.166.031.364.093l6.888 1.899q.384.11.7.329.317.217.547.52.23.305.353.67.125.367.125.764zm-1.588 15.363V4.306q0-.273-.16-.478-.163-.204-.423-.28l-3.388-.93q-.397-.111-.794-.23-.397-.117-.794-.216v19.68l4.976-1.427q.26-.074.422-.28.161-.204.161-.477z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/microsoftonedrive.svg b/assets/lib/simple-icons/icons/microsoftonedrive.svg
index ce95fda0..ab8c86e7 100644
--- a/assets/lib/simple-icons/icons/microsoftonedrive.svg
+++ b/assets/lib/simple-icons/icons/microsoftonedrive.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Microsoft OneDrive icon</title><path d="M19.453 9.95q.961.058 1.787.468.826.41 1.442 1.066.615.657.966 1.512.352.856.352 1.816 0 1.008-.387 1.893-.386.885-1.049 1.547-.662.662-1.546 1.049-.885.387-1.893.387H6q-1.242 0-2.332-.475-1.09-.475-1.904-1.29-.815-.814-1.29-1.903Q0 14.93 0 13.688q0-.985.31-1.887.311-.903.862-1.658.55-.756 1.324-1.325.774-.568 1.711-.861.434-.129.85-.187.416-.06.861-.082h.012q.515-.786 1.207-1.413.691-.627 1.5-1.066.808-.44 1.705-.668.896-.229 1.845-.229 1.278 0 2.456.417 1.177.416 2.144 1.16.967.744 1.658 1.78.692 1.038 1.008 2.28zm-7.265-4.137q-1.325 0-2.52.544-1.195.545-2.04 1.565.446.117.85.299.405.181.792.416l4.78 2.86 2.731-1.15q.27-.117.545-.204.276-.088.58-.147-.293-.937-.855-1.705-.563-.768-1.319-1.318-.755-.551-1.658-.856-.902-.304-1.886-.304zM2.414 16.395l9.914-4.184-3.832-2.297q-.586-.351-1.23-.539-.645-.188-1.325-.188-.914 0-1.722.364-.809.363-1.412.978-.604.616-.955 1.436-.352.82-.352 1.723 0 .703.234 1.423.235.721.68 1.284zm16.711 1.793q.563 0 1.078-.176.516-.176.961-.516l-7.23-4.324-10.301 4.336q.527.328 1.13.504.604.175 1.237.175zm3.012-1.852q.363-.727.363-1.523 0-.774-.293-1.407t-.791-1.072q-.498-.44-1.166-.68-.668-.24-1.406-.24-.422 0-.838.1t-.815.252q-.398.152-.785.334-.386.181-.761.345Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Microsoft OneDrive</title><path d="M19.453 9.95q.961.058 1.787.468.826.41 1.442 1.066.615.657.966 1.512.352.856.352 1.816 0 1.008-.387 1.893-.386.885-1.049 1.547-.662.662-1.546 1.049-.885.387-1.893.387H6q-1.242 0-2.332-.475-1.09-.475-1.904-1.29-.815-.814-1.29-1.903Q0 14.93 0 13.688q0-.985.31-1.887.311-.903.862-1.658.55-.756 1.324-1.325.774-.568 1.711-.861.434-.129.85-.187.416-.06.861-.082h.012q.515-.786 1.207-1.413.691-.627 1.5-1.066.808-.44 1.705-.668.896-.229 1.845-.229 1.278 0 2.456.417 1.177.416 2.144 1.16.967.744 1.658 1.78.692 1.038 1.008 2.28zm-7.265-4.137q-1.325 0-2.52.544-1.195.545-2.04 1.565.446.117.85.299.405.181.792.416l4.78 2.86 2.731-1.15q.27-.117.545-.204.276-.088.58-.147-.293-.937-.855-1.705-.563-.768-1.319-1.318-.755-.551-1.658-.856-.902-.304-1.886-.304zM2.414 16.395l9.914-4.184-3.832-2.297q-.586-.351-1.23-.539-.645-.188-1.325-.188-.914 0-1.722.364-.809.363-1.412.978-.604.616-.955 1.436-.352.82-.352 1.723 0 .703.234 1.423.235.721.68 1.284zm16.711 1.793q.563 0 1.078-.176.516-.176.961-.516l-7.23-4.324-10.301 4.336q.527.328 1.13.504.604.175 1.237.175zm3.012-1.852q.363-.727.363-1.523 0-.774-.293-1.407t-.791-1.072q-.498-.44-1.166-.68-.668-.24-1.406-.24-.422 0-.838.1t-.815.252q-.398.152-.785.334-.386.181-.761.345Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/microsoftonenote.svg b/assets/lib/simple-icons/icons/microsoftonenote.svg
index ba4fd48d..37bdbd32 100644
--- a/assets/lib/simple-icons/icons/microsoftonenote.svg
+++ b/assets/lib/simple-icons/icons/microsoftonenote.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Microsoft OneNote icon</title><path d="M23 1.5Q23.41 1.5 23.7 1.8 24 2.09 24 2.5V21.5Q24 21.91 23.7 22.2 23.41 22.5 23 22.5H7Q6.59 22.5 6.3 22.2 6 21.91 6 21.5V18H1Q0.59 18 0.3 17.7 0 17.41 0 17V7Q0 6.59 0.3 6.3 0.58 6 1 6H6V2.5Q6 2.09 6.3 1.8 6.59 1.5 7 1.5ZM4.56 11 7.39 15.93H9.18V8.07H7.44V13.1L4.71 8.07H2.82V15.93H4.56ZM22.5 21V18H19.5V21ZM22.5 16.5V13.5H19.5V16.5ZM22.5 12V9H19.5V12ZM22.5 7.5V3H7.5V6H11Q11.41 6 11.7 6.3 12 6.59 12 7V17Q12 17.41 11.7 17.7 11.41 18 11 18H7.5V21H18V7.5Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Microsoft OneNote</title><path d="M23 1.5Q23.41 1.5 23.7 1.8 24 2.09 24 2.5V21.5Q24 21.91 23.7 22.2 23.41 22.5 23 22.5H7Q6.59 22.5 6.3 22.2 6 21.91 6 21.5V18H1Q0.59 18 0.3 17.7 0 17.41 0 17V7Q0 6.59 0.3 6.3 0.58 6 1 6H6V2.5Q6 2.09 6.3 1.8 6.59 1.5 7 1.5ZM4.56 11 7.39 15.93H9.18V8.07H7.44V13.1L4.71 8.07H2.82V15.93H4.56ZM22.5 21V18H19.5V21ZM22.5 16.5V13.5H19.5V16.5ZM22.5 12V9H19.5V12ZM22.5 7.5V3H7.5V6H11Q11.41 6 11.7 6.3 12 6.59 12 7V17Q12 17.41 11.7 17.7 11.41 18 11 18H7.5V21H18V7.5Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/microsoftoutlook.svg b/assets/lib/simple-icons/icons/microsoftoutlook.svg
index 3b090a42..992d11e6 100644
--- a/assets/lib/simple-icons/icons/microsoftoutlook.svg
+++ b/assets/lib/simple-icons/icons/microsoftoutlook.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Microsoft Outlook icon</title><path d="M7.88 12.04q0 .45-.11.87-.1.41-.33.74-.22.33-.58.52-.37.2-.87.2t-.85-.2q-.35-.21-.57-.55-.22-.33-.33-.75-.1-.42-.1-.86t.1-.87q.1-.43.34-.76.22-.34.59-.54.36-.2.87-.2t.86.2q.35.21.57.55.22.34.31.77.1.43.1.88zM24 12v9.38q0 .46-.33.8-.33.32-.8.32H7.13q-.46 0-.8-.33-.32-.33-.32-.8V18H1q-.41 0-.7-.3-.3-.29-.3-.7V7q0-.41.3-.7Q.58 6 1 6h6.5V2.55q0-.44.3-.75.3-.3.75-.3h12.9q.44 0 .75.3.3.3.3.75V10.85l1.24.72h.01q.1.07.18.18.07.12.07.25zm-6-8.25v3h3v-3zm0 4.5v3h3v-3zm0 4.5v1.83l3.05-1.83zm-5.25-9v3h3.75v-3zm0 4.5v3h3.75v-3zm0 4.5v2.03l2.41 1.5 1.34-.8v-2.73zM9 3.75V6h2l.13.01.12.04v-2.3zM5.98 15.98q.9 0 1.6-.3.7-.32 1.19-.86.48-.55.73-1.28.25-.74.25-1.61 0-.83-.25-1.55-.24-.71-.71-1.24t-1.15-.83q-.68-.3-1.55-.3-.92 0-1.64.3-.71.3-1.2.85-.5.54-.75 1.3-.25.74-.25 1.63 0 .85.26 1.56.26.72.74 1.23.48.52 1.17.81.69.3 1.56.3zM7.5 21h12.39L12 16.08V17q0 .41-.3.7-.29.3-.7.3H7.5zm15-.13v-7.24l-5.9 3.54Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Microsoft Outlook</title><path d="M7.88 12.04q0 .45-.11.87-.1.41-.33.74-.22.33-.58.52-.37.2-.87.2t-.85-.2q-.35-.21-.57-.55-.22-.33-.33-.75-.1-.42-.1-.86t.1-.87q.1-.43.34-.76.22-.34.59-.54.36-.2.87-.2t.86.2q.35.21.57.55.22.34.31.77.1.43.1.88zM24 12v9.38q0 .46-.33.8-.33.32-.8.32H7.13q-.46 0-.8-.33-.32-.33-.32-.8V18H1q-.41 0-.7-.3-.3-.29-.3-.7V7q0-.41.3-.7Q.58 6 1 6h6.5V2.55q0-.44.3-.75.3-.3.75-.3h12.9q.44 0 .75.3.3.3.3.75V10.85l1.24.72h.01q.1.07.18.18.07.12.07.25zm-6-8.25v3h3v-3zm0 4.5v3h3v-3zm0 4.5v1.83l3.05-1.83zm-5.25-9v3h3.75v-3zm0 4.5v3h3.75v-3zm0 4.5v2.03l2.41 1.5 1.34-.8v-2.73zM9 3.75V6h2l.13.01.12.04v-2.3zM5.98 15.98q.9 0 1.6-.3.7-.32 1.19-.86.48-.55.73-1.28.25-.74.25-1.61 0-.83-.25-1.55-.24-.71-.71-1.24t-1.15-.83q-.68-.3-1.55-.3-.92 0-1.64.3-.71.3-1.2.85-.5.54-.75 1.3-.25.74-.25 1.63 0 .85.26 1.56.26.72.74 1.23.48.52 1.17.81.69.3 1.56.3zM7.5 21h12.39L12 16.08V17q0 .41-.3.7-.29.3-.7.3H7.5zm15-.13v-7.24l-5.9 3.54Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/microsoftpowerpoint.svg b/assets/lib/simple-icons/icons/microsoftpowerpoint.svg
index 7fba1249..294fbee3 100644
--- a/assets/lib/simple-icons/icons/microsoftpowerpoint.svg
+++ b/assets/lib/simple-icons/icons/microsoftpowerpoint.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Microsoft PowerPoint icon</title><path d="M13.5 1.5q1.453 0 2.795.375 1.342.375 2.508 1.06 1.166.686 2.12 1.641.956.955 1.641 2.121.686 1.166 1.061 2.508Q24 10.547 24 12q0 1.453-.375 2.795-.375 1.342-1.06 2.508-.686 1.166-1.641 2.12-.955.956-2.121 1.641-1.166.686-2.508 1.061-1.342.375-2.795.375-1.29 0-2.52-.305-1.23-.304-2.337-.884-1.108-.58-2.063-1.418-.955-.838-1.693-1.893H.997q-.411 0-.704-.293T0 17.004V6.996q0-.41.293-.703T.996 6h3.89q.739-1.055 1.694-1.893.955-.837 2.063-1.418 1.107-.58 2.337-.884Q12.21 1.5 13.5 1.5zm.75 1.535v8.215h8.215q-.14-1.64-.826-3.076-.686-1.436-1.782-2.531-1.095-1.096-2.537-1.782-1.441-.685-3.07-.826zm-5.262 7.57q0-.68-.228-1.166-.229-.486-.627-.79-.399-.305-.938-.446-.539-.14-1.172-.14H2.848v7.863h1.84v-2.742H5.93q.574 0 1.119-.17t.978-.493q.434-.322.698-.802.263-.48.263-1.114zM13.5 21q1.172 0 2.262-.287t2.056-.82q.967-.534 1.776-1.278.808-.744 1.418-1.664.61-.92.984-1.986.375-1.067.469-2.227h-9.703V3.035q-1.735.14-3.27.908T6.797 6h4.207q.41 0 .703.293t.293.703v10.008q0 .41-.293.703t-.703.293H6.797q.644.715 1.412 1.271.768.557 1.623.944.855.387 1.781.586Q12.54 21 13.5 21zM5.812 9.598q.575 0 .915.228.34.229.34.838 0 .27-.124.44-.123.17-.31.275-.188.105-.422.146-.234.041-.445.041H4.687V9.598Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Microsoft PowerPoint</title><path d="M13.5 1.5q1.453 0 2.795.375 1.342.375 2.508 1.06 1.166.686 2.12 1.641.956.955 1.641 2.121.686 1.166 1.061 2.508Q24 10.547 24 12q0 1.453-.375 2.795-.375 1.342-1.06 2.508-.686 1.166-1.641 2.12-.955.956-2.121 1.641-1.166.686-2.508 1.061-1.342.375-2.795.375-1.29 0-2.52-.305-1.23-.304-2.337-.884-1.108-.58-2.063-1.418-.955-.838-1.693-1.893H.997q-.411 0-.704-.293T0 17.004V6.996q0-.41.293-.703T.996 6h3.89q.739-1.055 1.694-1.893.955-.837 2.063-1.418 1.107-.58 2.337-.884Q12.21 1.5 13.5 1.5zm.75 1.535v8.215h8.215q-.14-1.64-.826-3.076-.686-1.436-1.782-2.531-1.095-1.096-2.537-1.782-1.441-.685-3.07-.826zm-5.262 7.57q0-.68-.228-1.166-.229-.486-.627-.79-.399-.305-.938-.446-.539-.14-1.172-.14H2.848v7.863h1.84v-2.742H5.93q.574 0 1.119-.17t.978-.493q.434-.322.698-.802.263-.48.263-1.114zM13.5 21q1.172 0 2.262-.287t2.056-.82q.967-.534 1.776-1.278.808-.744 1.418-1.664.61-.92.984-1.986.375-1.067.469-2.227h-9.703V3.035q-1.735.14-3.27.908T6.797 6h4.207q.41 0 .703.293t.293.703v10.008q0 .41-.293.703t-.703.293H6.797q.644.715 1.412 1.271.768.557 1.623.944.855.387 1.781.586Q12.54 21 13.5 21zM5.812 9.598q.575 0 .915.228.34.229.34.838 0 .27-.124.44-.123.17-.31.275-.188.105-.422.146-.234.041-.445.041H4.687V9.598Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/microsoftsharepoint.svg b/assets/lib/simple-icons/icons/microsoftsharepoint.svg
index 2b02ccae..394786a8 100644
--- a/assets/lib/simple-icons/icons/microsoftsharepoint.svg
+++ b/assets/lib/simple-icons/icons/microsoftsharepoint.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Microsoft SharePoint icon</title><path d="M24 13.5q0 1.242-.475 2.332-.474 1.09-1.289 1.904-.814.815-1.904 1.29-1.09.474-2.332.474-.762 0-1.523-.2-.106.997-.557 1.858-.451.862-1.154 1.494-.704.633-1.606.99-.902.358-1.91.358-1.09 0-2.045-.416-.955-.416-1.664-1.125-.709-.709-1.125-1.664Q6 19.84 6 18.75q0-.188.018-.375.017-.188.04-.375H.997q-.41 0-.703-.293T0 17.004V6.996q0-.41.293-.703T.996 6h3.54q.14-1.277.726-2.373.586-1.096 1.488-1.904Q7.652.914 8.807.457 9.96 0 11.25 0q1.395 0 2.625.533T16.02 1.98q.914.915 1.447 2.145T18 6.75q0 .188-.012.375-.011.188-.035.375 1.242 0 2.344.469 1.101.468 1.928 1.277.826.809 1.3 1.904Q24 12.246 24 13.5zm-12.75-12q-.973 0-1.857.34-.885.34-1.577.943-.691.604-1.154 1.43Q6.2 5.039 6.06 6h4.945q.41 0 .703.293t.293.703v4.945l.21-.035q.212-.75.61-1.424.399-.673.944-1.218.545-.545 1.213-.944.668-.398 1.43-.61.093-.503.093-.96 0-1.09-.416-2.045-.416-.955-1.125-1.664-.709-.709-1.664-1.125Q12.34 1.5 11.25 1.5zM6.117 15.902q.54 0 1.06-.111.522-.111.932-.37.41-.257.662-.679.252-.422.252-1.055 0-.632-.263-1.054-.264-.422-.662-.703-.399-.282-.856-.463l-.855-.34q-.399-.158-.662-.334-.264-.176-.264-.445 0-.2.14-.323.141-.123.335-.193.193-.07.404-.094.21-.023.351-.023.598 0 1.055.152.457.153.95.457V8.543q-.282-.082-.522-.14-.24-.06-.475-.1-.234-.041-.486-.059-.252-.017-.557-.017-.515 0-1.054.117-.54.117-.979.375-.44.258-.715.68-.275.421-.275 1.03 0 .598.263.997.264.398.663.68.398.28.855.474l.856.363q.398.17.662.358.263.187.263.457 0 .222-.123.351-.123.13-.31.2-.188.07-.393.087-.205.018-.369.018-.703 0-1.248-.234-.545-.235-1.107-.621v1.875q1.195.468 2.472.468zM11.25 22.5q.773 0 1.453-.293t1.19-.803q.51-.51.808-1.195.299-.686.299-1.459 0-.668-.223-1.277-.222-.61-.62-1.096-.4-.486-.95-.826-.55-.34-1.207-.48v1.933q0 .41-.293.703t-.703.293H7.57q-.07.375-.07.75 0 .773.293 1.459t.803 1.195q.51.51 1.195.803.686.293 1.459.293zM18 18q.926 0 1.746-.352.82-.351 1.436-.966.615-.616.966-1.43.352-.815.352-1.752 0-.926-.352-1.746-.351-.82-.966-1.436-.616-.615-1.436-.966Q18.926 9 18 9t-1.74.357q-.815.358-1.43.973t-.973 1.43q-.357.814-.357 1.74 0 .129.006.258t.017.258q.551.27 1.02.65t.838.855q.369.475.627 1.026.258.55.387 1.148Q17.18 18 18 18Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Microsoft SharePoint</title><path d="M24 13.5q0 1.242-.475 2.332-.474 1.09-1.289 1.904-.814.815-1.904 1.29-1.09.474-2.332.474-.762 0-1.523-.2-.106.997-.557 1.858-.451.862-1.154 1.494-.704.633-1.606.99-.902.358-1.91.358-1.09 0-2.045-.416-.955-.416-1.664-1.125-.709-.709-1.125-1.664Q6 19.84 6 18.75q0-.188.018-.375.017-.188.04-.375H.997q-.41 0-.703-.293T0 17.004V6.996q0-.41.293-.703T.996 6h3.54q.14-1.277.726-2.373.586-1.096 1.488-1.904Q7.652.914 8.807.457 9.96 0 11.25 0q1.395 0 2.625.533T16.02 1.98q.914.915 1.447 2.145T18 6.75q0 .188-.012.375-.011.188-.035.375 1.242 0 2.344.469 1.101.468 1.928 1.277.826.809 1.3 1.904Q24 12.246 24 13.5zm-12.75-12q-.973 0-1.857.34-.885.34-1.577.943-.691.604-1.154 1.43Q6.2 5.039 6.06 6h4.945q.41 0 .703.293t.293.703v4.945l.21-.035q.212-.75.61-1.424.399-.673.944-1.218.545-.545 1.213-.944.668-.398 1.43-.61.093-.503.093-.96 0-1.09-.416-2.045-.416-.955-1.125-1.664-.709-.709-1.664-1.125Q12.34 1.5 11.25 1.5zM6.117 15.902q.54 0 1.06-.111.522-.111.932-.37.41-.257.662-.679.252-.422.252-1.055 0-.632-.263-1.054-.264-.422-.662-.703-.399-.282-.856-.463l-.855-.34q-.399-.158-.662-.334-.264-.176-.264-.445 0-.2.14-.323.141-.123.335-.193.193-.07.404-.094.21-.023.351-.023.598 0 1.055.152.457.153.95.457V8.543q-.282-.082-.522-.14-.24-.06-.475-.1-.234-.041-.486-.059-.252-.017-.557-.017-.515 0-1.054.117-.54.117-.979.375-.44.258-.715.68-.275.421-.275 1.03 0 .598.263.997.264.398.663.68.398.28.855.474l.856.363q.398.17.662.358.263.187.263.457 0 .222-.123.351-.123.13-.31.2-.188.07-.393.087-.205.018-.369.018-.703 0-1.248-.234-.545-.235-1.107-.621v1.875q1.195.468 2.472.468zM11.25 22.5q.773 0 1.453-.293t1.19-.803q.51-.51.808-1.195.299-.686.299-1.459 0-.668-.223-1.277-.222-.61-.62-1.096-.4-.486-.95-.826-.55-.34-1.207-.48v1.933q0 .41-.293.703t-.703.293H7.57q-.07.375-.07.75 0 .773.293 1.459t.803 1.195q.51.51 1.195.803.686.293 1.459.293zM18 18q.926 0 1.746-.352.82-.351 1.436-.966.615-.616.966-1.43.352-.815.352-1.752 0-.926-.352-1.746-.351-.82-.966-1.436-.616-.615-1.436-.966Q18.926 9 18 9t-1.74.357q-.815.358-1.43.973t-.973 1.43q-.357.814-.357 1.74 0 .129.006.258t.017.258q.551.27 1.02.65t.838.855q.369.475.627 1.026.258.55.387 1.148Q17.18 18 18 18Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/microsoftsqlserver.svg b/assets/lib/simple-icons/icons/microsoftsqlserver.svg
index 83fd1adc..3b3da3fc 100644
--- a/assets/lib/simple-icons/icons/microsoftsqlserver.svg
+++ b/assets/lib/simple-icons/icons/microsoftsqlserver.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Microsoft SQL Server icon</title><path d="M4.724 2.505s-.08.127-.004.315c.046.116.186.256.34.404 0 0 1.615 1.576 1.813 1.804.895 1.033 1.284 2.05 1.32 3.453.022.9-.151 1.692-.573 2.613-.756 1.649-2.35 3.468-4.81 5.49l.36-.12c.233-.173.548-.359 1.292-.766 1.713-.936 3.636-1.798 5.999-2.686 3.399-1.277 8.99-2.776 12.172-3.263l.331-.051-.05-.08c-.292-.452-.49-.731-.73-1.027-.697-.863-1.542-1.567-2.577-2.146-1.422-.797-3.267-1.416-5.6-1.88a67.93 67.93 0 00-2.191-.375 209.29 209.29 0 01-3.924-.64c-.425-.075-1.06-.181-1.481-.272a9.404 9.404 0 01-.961-.258c-.268-.105-.645-.207-.726-.515zm.936.909c.003-.002.063.017.137.042.136.046.316.1.526.159.146.04.307.084.479.127.218.056.399.104.401.107.024.027.391 1.198.516 1.647.048.172.084.315.081.318a.789.789 0 01-.09-.14c-.424-.746-1.097-1.505-1.874-2.116a3.104 3.104 0 01-.176-.144zm1.79.494c.018-.001.099.012.195.034.619.136 1.725.35 2.435.47.119.02.216.04.216.047a.348.348 0 01-.098.062c-.119.06-.602.349-.763.457-.403.27-.766.559-1.03.821a5.4 5.4 0 01-.197.192c-.003 0-.022-.062-.041-.137a12.09 12.09 0 00-.65-1.779 1.801 1.801 0 01-.071-.165c0-.001 0-.002.004-.002zm3.147.598c.02.007.06.13.129.404a6.05 6.05 0 01.153 1.977l-.012.038-.187-.06c-.388-.124-1.02-.31-1.562-.46a6.625 6.625 0 01-.56-.17c0-.022.449-.471.642-.642.369-.326 1.362-1.098 1.397-1.087zm.25.036c.011-.01 1.504.248 2.182.378.506.097 1.237.25 1.281.269.022.008-.054.05-.297.16-.96.432-1.672.82-2.38 1.293-.186.124-.341.226-.344.226-.004 0-.006-.104-.006-.23 0-.69-.139-1.387-.391-1.976a.688.688 0 01-.045-.12zm3.86.764c.011.011-.038.306-.08.48-.132.54-.482 1.344-.914 2.099a2.26 2.26 0 01-.152.246 1.499 1.499 0 01-.219-.115c-.422-.247-.9-.48-1.425-.697a4.588 4.588 0 01-.278-.12c-.024-.022 1.143-.795 1.762-1.166.495-.297 1.292-.741 1.306-.727zm.276.043c.033 0 .695.18 1.037.283.853.255 1.837.614 2.475.904l.265.12-.187.043c-1.561.36-2.9.773-4.188 1.296-.107.044-.2.08-.207.08a.911.911 0 01.075-.185c.388-.823.638-1.687.703-2.42.006-.067.018-.121.027-.121zm-6.58 1.512c.01-.01.514.108.789.185.413.116 1.292.41 1.292.433 0 .004-.097.089-.215.188-.475.397-.934.813-1.483 1.343a5.27 5.27 0 01-.308.285c-.007 0-.01-.023-.006-.05.083-.611.065-1.395-.05-2.193a1.29 1.29 0 01-.02-.19zm10.61.01c.007.008-.234.385-.384.6-.22.314-.537.726-1.261 1.637l-.954 1.202a9.418 9.418 0 01-.269.333c-.003 0-.05-.066-.103-.146a7.584 7.584 0 00-1.47-1.625 9.59 9.59 0 00-.27-.218.427.427 0 01-.074-.063c0-.01.617-.274 1.088-.466a37.02 37.02 0 012.778-.99c.442-.135.912-.27.919-.264zm.278.073a.93.93 0 01.207.1 12.274 12.274 0 012.428 1.824c.194.19.667.683.66.687l-.363.029c-1.53.115-3.486.44-5.37.893-.128.03-.238.056-.246.056-.007 0 .133-.14.311-.312 1.107-1.063 1.611-1.734 2.205-2.934.088-.178.163-.333.166-.342h.002zm-8.088.83c.051.01.523.23.879.408.325.163.818.426.843.449.003.003-.17.093-.386.201-.683.342-1.268.664-1.878 1.037-.175.107-.32.194-.325.194-.015 0-.01-.013.088-.191a7.702 7.702 0 00.738-2.002c.014-.062.03-.1.041-.097zm-.475.084c.01.01-.112.46-.19.7a9.092 9.092 0 01-.835 1.808l-.09.147-.203-.197a2.671 2.671 0 00-.676-.5 1.009 1.009 0 01-.176-.102c0-.03.62-.593 1.098-.998.343-.29 1.064-.867 1.072-.858zm2.888 1.188l.177.115c.407.264.888.619 1.255.924.206.172.605.53.687.616l.044.047-.294.082a53.8 53.8 0 00-4.45 1.424c-.167.061-.31.112-.32.112-.021 0-.042.019.333-.326.96-.883 1.807-1.856 2.44-2.802zm-.759.19c.009.009-.492.71-.789 1.106-.356.473-.99 1.265-1.426 1.78a8.769 8.769 0 01-.346.397c-.01.003-.015-.05-.016-.133 0-.44-.112-.91-.308-1.308-.083-.168-.097-.208-.08-.224.068-.062 1.127-.666 1.794-1.023.459-.246 1.163-.604 1.171-.595zm-4.59 1.125a3.988 3.988 0 01.812.518c.008.005-.087.083-.21.172-.345.249-.87.644-1.173.886-.32.255-.331.263-.295.207.24-.367.36-.574.486-.84.113-.236.224-.516.304-.76a.675.675 0 01.077-.183zm1.223.96c.017-.003.04.028.139.175.207.31.366.722.407 1.058l.008.073-.497.192c-.89.346-1.711.687-2.266.94-.155.072-.428.202-.607.292-.179.09-.325.16-.325.156 0-.004.112-.089.25-.188 1.087-.79 2.025-1.654 2.732-2.519.075-.092.144-.172.153-.178a.016.016 0 01.006-.002zm-.564.14c.015.014-.401.484-.681.77-.7.715-1.396 1.275-2.256 1.821-.108.069-.206.13-.22.138-.023.014.008-.022.386-.434.238-.259.42-.474.628-.743.136-.177.162-.202.362-.346.537-.388 1.767-1.221 1.781-1.207zM9.925 0c-.08-.01-1.371.455-2.2.791-1.123.457-1.996.894-2.534 1.272-.2.14-.452.393-.488.49a.356.356 0 00-.021.123l.488.46 1.158.37L9.087 4l3.153.542.032-.27-.028-.005-.415-.066-.085-.148a27.702 27.702 0 01-1.177-2.325 12.264 12.264 0 01-.53-1.465C9.969.02 9.962.005 9.925 0zm-.061.186h.005c.003.003.017.105.032.225.062.508.176 1 .354 1.53.134.4.136.377-.024.332-.37-.103-2.032-.388-3.234-.555a8.796 8.796 0 01-.357-.053c-.015-.015.867-.477 1.258-.66.501-.232 1.867-.8 1.966-.819zM6.362 1.814l.141.048c.772.262 2.706.632 3.775.72.12.01.222.021.225.024.003.003-.1.058-.228.122-.515.258-1.083.573-1.476.819-.115.072-.22.13-.235.129a4.868 4.868 0 01-.17-.027l-.144-.023-.365-.355c-.641-.62-1.141-1.1-1.335-1.28zm-.143.114l.511.638c.282.35.564.699.626.774.063.075.111.138.108.14-.014.011-.74-.13-1.125-.219a8.532 8.532 0 01-.803-.212l-.2-.064.001-.049c.003-.245.312-.607.836-.976zm4.352.869c.015.001.032.032.077.131.124.272.51 1.008.603 1.15.03.047.08.05-.433-.033-1.23-.198-1.629-.265-1.629-.273a.36.36 0 01.083-.054 7.13 7.13 0 001.107-.767l.175-.147c.006-.005.012-.008.017-.007zm4.309 8.408l-4.808 1.568-4.18 1.846-1.17.31c-.298.282-.613.568-.948.86-.37.321-.716.612-.98.822a7.46 7.46 0 00-.953.945c-.332.414-.592.854-.704 1.193-.2.61-.103 1.228.285 1.798.495.728 1.48 1.468 2.625 1.972.585.256 1.57.588 2.31.774 1.233.312 3.614.65 4.926.7.266.01.62.01.637-.002.028-.019.233-.405.47-.89.806-1.646 1.389-3.19 1.703-4.508.19-.799.338-1.863.434-3.125.027-.354.037-1.533.016-1.934a13.564 13.564 0 00-.183-1.706.435.435 0 01-.012-.15c.014-.01.059-.025.65-.197zm-1.1.645c.045 0 .16 1.114.191 1.82.006.151.005.247-.004.247-.028 0-.615-.345-1.032-.606a28.716 28.716 0 01-1.162-.772c-.035-.028-.031-.029.266-.131.505-.174 1.704-.558 1.742-.558zm-2.448.803c.03 0 .115.047.315.172.75.47 1.766 1.035 2.2 1.225.136.06.151.036-.16.247-.662.45-1.486.892-2.497 1.342a7.59 7.59 0 01-.331.142.989.989 0 01.043-.2c.245-.905.383-1.82.387-2.554.002-.362.002-.364.037-.373h.006zm-.504.193c.021.022.006.834-.02 1.056a9.206 9.206 0 01-.418 1.837c-.014.017-.511-.468-.676-.66a4.918 4.918 0 01-.669-.973c-.082-.162-.214-.484-.202-.493.056-.04 1.971-.78 1.985-.767zm-2.375.936c.004 0 .008.001.01.004a.881.881 0 01.056.131c.116.315.376.782.602 1.08a6.247 6.247 0 001.017 1.06c.023.02.03.016-.562.24a48.53 48.53 0 01-2.294.8c-.327.106-.604.195-.615.2-.033.011-.023-.009.073-.158.427-.666 1.073-1.97 1.435-2.892.062-.16.122-.32.133-.356.015-.052.031-.07.08-.092a.149.149 0 01.065-.017zm-.728.3c.01.009-.174.398-.356.751-.351.686-.739 1.361-1.253 2.185l-.182.288c-.018.027-.026.018-.082-.094a3.307 3.307 0 01-.28-.842 3.39 3.39 0 01.02-1.083c.047-.227.045-.222.152-.276.462-.237 1.966-.942 1.981-.929zm6.268.255v.154a20.106 20.106 0 01-.255 2.992 9.362 9.362 0 01-1.898-.782c-.354-.194-.865-.507-.85-.522.003-.004.154-.083.334-.177.714-.37 1.395-.77 1.988-1.166.222-.148.555-.389.629-.454zM4.981 15.41c.015 0 .011.028-.012.161a4.137 4.137 0 00-.041.39c-.03.532.057.924.32 1.46.074.15.132.274.129.276-.027.023-2.43.726-3.186.933l-.435.12c-.027.008-.029.002-.02-.06.083-.533.49-1.232 1.058-1.82.378-.39.68-.622 1.195-.915a30.782 30.782 0 01.992-.545zm5.669 1.015c.002-.002.091.045.197.107.777.449 1.86.87 2.783 1.081l.084.02-.115.063c-.482.268-2.071.929-3.694 1.537a68.82 68.82 0 00-.513.194.314.314 0 01-.082.027c0-.004.067-.132.149-.286.456-.852.91-1.887 1.144-2.605.023-.073.044-.135.047-.138zm-.578.19a1.39 1.39 0 01-.063.169 23.534 23.534 0 01-1.261 2.54 9.009 9.009 0 01-.252.433c-.005 0-.114-.066-.244-.145-.77-.472-1.452-1.052-1.9-1.617l-.064-.08.332-.091a23.616 23.616 0 003.19-1.103c.142-.06.26-.109.262-.106zm3.59 1.253c.001 0 .002.001.002.003 0 .08-.183.828-.336 1.37-.128.453-.236.808-.435 1.437a8.533 8.533 0 01-.168.504 15.004 15.004 0 01-3-.841 7.964 7.964 0 01-.639-.283c-.006-.007.213-.11.486-.23 1.655-.721 3.369-1.543 3.955-1.896a.432.432 0 01.135-.064zm-8.287.283c.009.009-.454.671-1.1 1.576l-.587.823c-.097.139-.245.358-.329.488l-.153.236-.162-.137c-.191-.16-.525-.501-.677-.69-.312-.389-.523-.798-.607-1.174-.038-.174-.04-.262-.003-.273a176.26 176.26 0 011.934-.455l1.3-.305c.209-.05.382-.09.384-.089zm.465.178l.117.131a6.763 6.763 0 001.706 1.394c.115.066.202.124.195.128a281.967 281.967 0 01-4.33 1.53.858.858 0 01-.072-.048l-.067-.048.105-.152c.34-.493.768-1.035 1.705-2.162zm2.9 2.073c.003-.003.165.054.362.128.473.177.844.292 1.347.418.617.155 1.51.31 2.038.354.08.006.122.016.11.024-.025.016-.56.194-.953.318a258.526 258.526 0 01-4.636 1.363c-.035.007-.157-.025-.157-.04 0-.009.087-.119.193-.246a22.027 22.027 0 001.476-1.984 56.9 56.9 0 01.22-.335zm-.642.018c.005.005-.253.418-.706 1.132-.192.301-.409.645-.483.762-.075.118-.184.298-.242.4l-.107.185-.054-.014c-.13-.035-1.049-.36-1.291-.456-.301-.12-.615-.264-.846-.389-.289-.156-.655-.388-.627-.397l1.105-.302c1.592-.434 2.473-.683 3.05-.864.109-.033.199-.059.2-.057zm4.523 1.061h.006c.015.038-.575 1.67-.79 2.188-.049.116-.066.145-.092.143a55.54 55.54 0 01-1.433-.2c-.906-.138-2.423-.403-2.806-.49l-.089-.02.543-.122c1.164-.262 1.723-.403 2.29-.577a16.544 16.544 0 002.138-.824c.113-.052.21-.093.233-.098Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Microsoft SQL Server</title><path d="M4.724 2.505s-.08.127-.004.315c.046.116.186.256.34.404 0 0 1.615 1.576 1.813 1.804.895 1.033 1.284 2.05 1.32 3.453.022.9-.151 1.692-.573 2.613-.756 1.649-2.35 3.468-4.81 5.49l.36-.12c.233-.173.548-.359 1.292-.766 1.713-.936 3.636-1.798 5.999-2.686 3.399-1.277 8.99-2.776 12.172-3.263l.331-.051-.05-.08c-.292-.452-.49-.731-.73-1.027-.697-.863-1.542-1.567-2.577-2.146-1.422-.797-3.267-1.416-5.6-1.88a67.93 67.93 0 00-2.191-.375 209.29 209.29 0 01-3.924-.64c-.425-.075-1.06-.181-1.481-.272a9.404 9.404 0 01-.961-.258c-.268-.105-.645-.207-.726-.515zm.936.909c.003-.002.063.017.137.042.136.046.316.1.526.159.146.04.307.084.479.127.218.056.399.104.401.107.024.027.391 1.198.516 1.647.048.172.084.315.081.318a.789.789 0 01-.09-.14c-.424-.746-1.097-1.505-1.874-2.116a3.104 3.104 0 01-.176-.144zm1.79.494c.018-.001.099.012.195.034.619.136 1.725.35 2.435.47.119.02.216.04.216.047a.348.348 0 01-.098.062c-.119.06-.602.349-.763.457-.403.27-.766.559-1.03.821a5.4 5.4 0 01-.197.192c-.003 0-.022-.062-.041-.137a12.09 12.09 0 00-.65-1.779 1.801 1.801 0 01-.071-.165c0-.001 0-.002.004-.002zm3.147.598c.02.007.06.13.129.404a6.05 6.05 0 01.153 1.977l-.012.038-.187-.06c-.388-.124-1.02-.31-1.562-.46a6.625 6.625 0 01-.56-.17c0-.022.449-.471.642-.642.369-.326 1.362-1.098 1.397-1.087zm.25.036c.011-.01 1.504.248 2.182.378.506.097 1.237.25 1.281.269.022.008-.054.05-.297.16-.96.432-1.672.82-2.38 1.293-.186.124-.341.226-.344.226-.004 0-.006-.104-.006-.23 0-.69-.139-1.387-.391-1.976a.688.688 0 01-.045-.12zm3.86.764c.011.011-.038.306-.08.48-.132.54-.482 1.344-.914 2.099a2.26 2.26 0 01-.152.246 1.499 1.499 0 01-.219-.115c-.422-.247-.9-.48-1.425-.697a4.588 4.588 0 01-.278-.12c-.024-.022 1.143-.795 1.762-1.166.495-.297 1.292-.741 1.306-.727zm.276.043c.033 0 .695.18 1.037.283.853.255 1.837.614 2.475.904l.265.12-.187.043c-1.561.36-2.9.773-4.188 1.296-.107.044-.2.08-.207.08a.911.911 0 01.075-.185c.388-.823.638-1.687.703-2.42.006-.067.018-.121.027-.121zm-6.58 1.512c.01-.01.514.108.789.185.413.116 1.292.41 1.292.433 0 .004-.097.089-.215.188-.475.397-.934.813-1.483 1.343a5.27 5.27 0 01-.308.285c-.007 0-.01-.023-.006-.05.083-.611.065-1.395-.05-2.193a1.29 1.29 0 01-.02-.19zm10.61.01c.007.008-.234.385-.384.6-.22.314-.537.726-1.261 1.637l-.954 1.202a9.418 9.418 0 01-.269.333c-.003 0-.05-.066-.103-.146a7.584 7.584 0 00-1.47-1.625 9.59 9.59 0 00-.27-.218.427.427 0 01-.074-.063c0-.01.617-.274 1.088-.466a37.02 37.02 0 012.778-.99c.442-.135.912-.27.919-.264zm.278.073a.93.93 0 01.207.1 12.274 12.274 0 012.428 1.824c.194.19.667.683.66.687l-.363.029c-1.53.115-3.486.44-5.37.893-.128.03-.238.056-.246.056-.007 0 .133-.14.311-.312 1.107-1.063 1.611-1.734 2.205-2.934.088-.178.163-.333.166-.342h.002zm-8.088.83c.051.01.523.23.879.408.325.163.818.426.843.449.003.003-.17.093-.386.201-.683.342-1.268.664-1.878 1.037-.175.107-.32.194-.325.194-.015 0-.01-.013.088-.191a7.702 7.702 0 00.738-2.002c.014-.062.03-.1.041-.097zm-.475.084c.01.01-.112.46-.19.7a9.092 9.092 0 01-.835 1.808l-.09.147-.203-.197a2.671 2.671 0 00-.676-.5 1.009 1.009 0 01-.176-.102c0-.03.62-.593 1.098-.998.343-.29 1.064-.867 1.072-.858zm2.888 1.188l.177.115c.407.264.888.619 1.255.924.206.172.605.53.687.616l.044.047-.294.082a53.8 53.8 0 00-4.45 1.424c-.167.061-.31.112-.32.112-.021 0-.042.019.333-.326.96-.883 1.807-1.856 2.44-2.802zm-.759.19c.009.009-.492.71-.789 1.106-.356.473-.99 1.265-1.426 1.78a8.769 8.769 0 01-.346.397c-.01.003-.015-.05-.016-.133 0-.44-.112-.91-.308-1.308-.083-.168-.097-.208-.08-.224.068-.062 1.127-.666 1.794-1.023.459-.246 1.163-.604 1.171-.595zm-4.59 1.125a3.988 3.988 0 01.812.518c.008.005-.087.083-.21.172-.345.249-.87.644-1.173.886-.32.255-.331.263-.295.207.24-.367.36-.574.486-.84.113-.236.224-.516.304-.76a.675.675 0 01.077-.183zm1.223.96c.017-.003.04.028.139.175.207.31.366.722.407 1.058l.008.073-.497.192c-.89.346-1.711.687-2.266.94-.155.072-.428.202-.607.292-.179.09-.325.16-.325.156 0-.004.112-.089.25-.188 1.087-.79 2.025-1.654 2.732-2.519.075-.092.144-.172.153-.178a.016.016 0 01.006-.002zm-.564.14c.015.014-.401.484-.681.77-.7.715-1.396 1.275-2.256 1.821-.108.069-.206.13-.22.138-.023.014.008-.022.386-.434.238-.259.42-.474.628-.743.136-.177.162-.202.362-.346.537-.388 1.767-1.221 1.781-1.207zM9.925 0c-.08-.01-1.371.455-2.2.791-1.123.457-1.996.894-2.534 1.272-.2.14-.452.393-.488.49a.356.356 0 00-.021.123l.488.46 1.158.37L9.087 4l3.153.542.032-.27-.028-.005-.415-.066-.085-.148a27.702 27.702 0 01-1.177-2.325 12.264 12.264 0 01-.53-1.465C9.969.02 9.962.005 9.925 0zm-.061.186h.005c.003.003.017.105.032.225.062.508.176 1 .354 1.53.134.4.136.377-.024.332-.37-.103-2.032-.388-3.234-.555a8.796 8.796 0 01-.357-.053c-.015-.015.867-.477 1.258-.66.501-.232 1.867-.8 1.966-.819zM6.362 1.814l.141.048c.772.262 2.706.632 3.775.72.12.01.222.021.225.024.003.003-.1.058-.228.122-.515.258-1.083.573-1.476.819-.115.072-.22.13-.235.129a4.868 4.868 0 01-.17-.027l-.144-.023-.365-.355c-.641-.62-1.141-1.1-1.335-1.28zm-.143.114l.511.638c.282.35.564.699.626.774.063.075.111.138.108.14-.014.011-.74-.13-1.125-.219a8.532 8.532 0 01-.803-.212l-.2-.064.001-.049c.003-.245.312-.607.836-.976zm4.352.869c.015.001.032.032.077.131.124.272.51 1.008.603 1.15.03.047.08.05-.433-.033-1.23-.198-1.629-.265-1.629-.273a.36.36 0 01.083-.054 7.13 7.13 0 001.107-.767l.175-.147c.006-.005.012-.008.017-.007zm4.309 8.408l-4.808 1.568-4.18 1.846-1.17.31c-.298.282-.613.568-.948.86-.37.321-.716.612-.98.822a7.46 7.46 0 00-.953.945c-.332.414-.592.854-.704 1.193-.2.61-.103 1.228.285 1.798.495.728 1.48 1.468 2.625 1.972.585.256 1.57.588 2.31.774 1.233.312 3.614.65 4.926.7.266.01.62.01.637-.002.028-.019.233-.405.47-.89.806-1.646 1.389-3.19 1.703-4.508.19-.799.338-1.863.434-3.125.027-.354.037-1.533.016-1.934a13.564 13.564 0 00-.183-1.706.435.435 0 01-.012-.15c.014-.01.059-.025.65-.197zm-1.1.645c.045 0 .16 1.114.191 1.82.006.151.005.247-.004.247-.028 0-.615-.345-1.032-.606a28.716 28.716 0 01-1.162-.772c-.035-.028-.031-.029.266-.131.505-.174 1.704-.558 1.742-.558zm-2.448.803c.03 0 .115.047.315.172.75.47 1.766 1.035 2.2 1.225.136.06.151.036-.16.247-.662.45-1.486.892-2.497 1.342a7.59 7.59 0 01-.331.142.989.989 0 01.043-.2c.245-.905.383-1.82.387-2.554.002-.362.002-.364.037-.373h.006zm-.504.193c.021.022.006.834-.02 1.056a9.206 9.206 0 01-.418 1.837c-.014.017-.511-.468-.676-.66a4.918 4.918 0 01-.669-.973c-.082-.162-.214-.484-.202-.493.056-.04 1.971-.78 1.985-.767zm-2.375.936c.004 0 .008.001.01.004a.881.881 0 01.056.131c.116.315.376.782.602 1.08a6.247 6.247 0 001.017 1.06c.023.02.03.016-.562.24a48.53 48.53 0 01-2.294.8c-.327.106-.604.195-.615.2-.033.011-.023-.009.073-.158.427-.666 1.073-1.97 1.435-2.892.062-.16.122-.32.133-.356.015-.052.031-.07.08-.092a.149.149 0 01.065-.017zm-.728.3c.01.009-.174.398-.356.751-.351.686-.739 1.361-1.253 2.185l-.182.288c-.018.027-.026.018-.082-.094a3.307 3.307 0 01-.28-.842 3.39 3.39 0 01.02-1.083c.047-.227.045-.222.152-.276.462-.237 1.966-.942 1.981-.929zm6.268.255v.154a20.106 20.106 0 01-.255 2.992 9.362 9.362 0 01-1.898-.782c-.354-.194-.865-.507-.85-.522.003-.004.154-.083.334-.177.714-.37 1.395-.77 1.988-1.166.222-.148.555-.389.629-.454zM4.981 15.41c.015 0 .011.028-.012.161a4.137 4.137 0 00-.041.39c-.03.532.057.924.32 1.46.074.15.132.274.129.276-.027.023-2.43.726-3.186.933l-.435.12c-.027.008-.029.002-.02-.06.083-.533.49-1.232 1.058-1.82.378-.39.68-.622 1.195-.915a30.782 30.782 0 01.992-.545zm5.669 1.015c.002-.002.091.045.197.107.777.449 1.86.87 2.783 1.081l.084.02-.115.063c-.482.268-2.071.929-3.694 1.537a68.82 68.82 0 00-.513.194.314.314 0 01-.082.027c0-.004.067-.132.149-.286.456-.852.91-1.887 1.144-2.605.023-.073.044-.135.047-.138zm-.578.19a1.39 1.39 0 01-.063.169 23.534 23.534 0 01-1.261 2.54 9.009 9.009 0 01-.252.433c-.005 0-.114-.066-.244-.145-.77-.472-1.452-1.052-1.9-1.617l-.064-.08.332-.091a23.616 23.616 0 003.19-1.103c.142-.06.26-.109.262-.106zm3.59 1.253c.001 0 .002.001.002.003 0 .08-.183.828-.336 1.37-.128.453-.236.808-.435 1.437a8.533 8.533 0 01-.168.504 15.004 15.004 0 01-3-.841 7.964 7.964 0 01-.639-.283c-.006-.007.213-.11.486-.23 1.655-.721 3.369-1.543 3.955-1.896a.432.432 0 01.135-.064zm-8.287.283c.009.009-.454.671-1.1 1.576l-.587.823c-.097.139-.245.358-.329.488l-.153.236-.162-.137c-.191-.16-.525-.501-.677-.69-.312-.389-.523-.798-.607-1.174-.038-.174-.04-.262-.003-.273a176.26 176.26 0 011.934-.455l1.3-.305c.209-.05.382-.09.384-.089zm.465.178l.117.131a6.763 6.763 0 001.706 1.394c.115.066.202.124.195.128a281.967 281.967 0 01-4.33 1.53.858.858 0 01-.072-.048l-.067-.048.105-.152c.34-.493.768-1.035 1.705-2.162zm2.9 2.073c.003-.003.165.054.362.128.473.177.844.292 1.347.418.617.155 1.51.31 2.038.354.08.006.122.016.11.024-.025.016-.56.194-.953.318a258.526 258.526 0 01-4.636 1.363c-.035.007-.157-.025-.157-.04 0-.009.087-.119.193-.246a22.027 22.027 0 001.476-1.984 56.9 56.9 0 01.22-.335zm-.642.018c.005.005-.253.418-.706 1.132-.192.301-.409.645-.483.762-.075.118-.184.298-.242.4l-.107.185-.054-.014c-.13-.035-1.049-.36-1.291-.456-.301-.12-.615-.264-.846-.389-.289-.156-.655-.388-.627-.397l1.105-.302c1.592-.434 2.473-.683 3.05-.864.109-.033.199-.059.2-.057zm4.523 1.061h.006c.015.038-.575 1.67-.79 2.188-.049.116-.066.145-.092.143a55.54 55.54 0 01-1.433-.2c-.906-.138-2.423-.403-2.806-.49l-.089-.02.543-.122c1.164-.262 1.723-.403 2.29-.577a16.544 16.544 0 002.138-.824c.113-.052.21-.093.233-.098Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/microsoftteams.svg b/assets/lib/simple-icons/icons/microsoftteams.svg
index 602c8041..dcb88a29 100644
--- a/assets/lib/simple-icons/icons/microsoftteams.svg
+++ b/assets/lib/simple-icons/icons/microsoftteams.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Microsoft Teams icon</title><path d="M20.625 8.127q-.55 0-1.025-.205-.475-.205-.832-.563-.358-.357-.563-.832Q18 6.053 18 5.502q0-.54.205-1.02t.563-.837q.357-.358.832-.563.474-.205 1.025-.205.54 0 1.02.205t.837.563q.358.357.563.837.205.48.205 1.02 0 .55-.205 1.025-.205.475-.563.832-.357.358-.837.563-.48.205-1.02.205zm0-3.75q-.469 0-.797.328-.328.328-.328.797 0 .469.328.797.328.328.797.328.469 0 .797-.328.328-.328.328-.797 0-.469-.328-.797-.328-.328-.797-.328zM24 10.002v5.578q0 .774-.293 1.46-.293.685-.803 1.194-.51.51-1.195.803-.686.293-1.459.293-.445 0-.908-.105-.463-.106-.85-.329-.293.95-.855 1.729-.563.78-1.319 1.336-.756.557-1.67.861-.914.305-1.898.305-1.148 0-2.162-.398-1.014-.399-1.805-1.102-.79-.703-1.312-1.664t-.674-2.086h-5.8q-.411 0-.704-.293T0 16.881V6.873q0-.41.293-.703t.703-.293h8.59q-.34-.715-.34-1.5 0-.727.275-1.365.276-.639.75-1.114.475-.474 1.114-.75.638-.275 1.365-.275t1.365.275q.639.276 1.114.75.474.475.75 1.114.275.638.275 1.365t-.275 1.365q-.276.639-.75 1.113-.475.475-1.114.75-.638.276-1.365.276-.188 0-.375-.024-.188-.023-.375-.058v1.078h10.875q.469 0 .797.328.328.328.328.797zM12.75 2.373q-.41 0-.78.158-.368.158-.638.434-.27.275-.428.639-.158.363-.158.773 0 .41.158.78.159.368.428.638.27.27.639.428.369.158.779.158.41 0 .773-.158.364-.159.64-.428.274-.27.433-.639.158-.369.158-.779 0-.41-.158-.773-.159-.364-.434-.64-.275-.275-.639-.433-.363-.158-.773-.158zM6.937 9.814h2.25V7.94H2.814v1.875h2.25v6h1.875zm10.313 7.313v-6.75H12v6.504q0 .41-.293.703t-.703.293H8.309q.152.809.556 1.5.405.691.985 1.19.58.497 1.318.779.738.281 1.582.281.926 0 1.746-.352.82-.351 1.436-.966.615-.616.966-1.43.352-.815.352-1.752zm5.25-1.547v-5.203h-3.75v6.855q.305.305.691.452.387.146.809.146.469 0 .879-.176.41-.175.715-.48.304-.305.48-.715t.176-.879Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Microsoft Teams</title><path d="M20.625 8.127q-.55 0-1.025-.205-.475-.205-.832-.563-.358-.357-.563-.832Q18 6.053 18 5.502q0-.54.205-1.02t.563-.837q.357-.358.832-.563.474-.205 1.025-.205.54 0 1.02.205t.837.563q.358.357.563.837.205.48.205 1.02 0 .55-.205 1.025-.205.475-.563.832-.357.358-.837.563-.48.205-1.02.205zm0-3.75q-.469 0-.797.328-.328.328-.328.797 0 .469.328.797.328.328.797.328.469 0 .797-.328.328-.328.328-.797 0-.469-.328-.797-.328-.328-.797-.328zM24 10.002v5.578q0 .774-.293 1.46-.293.685-.803 1.194-.51.51-1.195.803-.686.293-1.459.293-.445 0-.908-.105-.463-.106-.85-.329-.293.95-.855 1.729-.563.78-1.319 1.336-.756.557-1.67.861-.914.305-1.898.305-1.148 0-2.162-.398-1.014-.399-1.805-1.102-.79-.703-1.312-1.664t-.674-2.086h-5.8q-.411 0-.704-.293T0 16.881V6.873q0-.41.293-.703t.703-.293h8.59q-.34-.715-.34-1.5 0-.727.275-1.365.276-.639.75-1.114.475-.474 1.114-.75.638-.275 1.365-.275t1.365.275q.639.276 1.114.75.474.475.75 1.114.275.638.275 1.365t-.275 1.365q-.276.639-.75 1.113-.475.475-1.114.75-.638.276-1.365.276-.188 0-.375-.024-.188-.023-.375-.058v1.078h10.875q.469 0 .797.328.328.328.328.797zM12.75 2.373q-.41 0-.78.158-.368.158-.638.434-.27.275-.428.639-.158.363-.158.773 0 .41.158.78.159.368.428.638.27.27.639.428.369.158.779.158.41 0 .773-.158.364-.159.64-.428.274-.27.433-.639.158-.369.158-.779 0-.41-.158-.773-.159-.364-.434-.64-.275-.275-.639-.433-.363-.158-.773-.158zM6.937 9.814h2.25V7.94H2.814v1.875h2.25v6h1.875zm10.313 7.313v-6.75H12v6.504q0 .41-.293.703t-.703.293H8.309q.152.809.556 1.5.405.691.985 1.19.58.497 1.318.779.738.281 1.582.281.926 0 1.746-.352.82-.351 1.436-.966.615-.616.966-1.43.352-.815.352-1.752zm5.25-1.547v-5.203h-3.75v6.855q.305.305.691.452.387.146.809.146.469 0 .879-.176.41-.175.715-.48.304-.305.48-.715t.176-.879Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/microsofttranslator.svg b/assets/lib/simple-icons/icons/microsofttranslator.svg
new file mode 100644
index 00000000..45af3534
--- /dev/null
+++ b/assets/lib/simple-icons/icons/microsofttranslator.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Microsoft Translator</title><path d="M3.2 0A3.193 3.193 0 0 0 0 3.2v17.6C0 22.573 1.427 24 3.2 24h17.6c1.773 0 3.2-1.427 3.2-3.2V3.2C24 1.427 22.573 0 20.8 0H3.2Zm11.113 4.002.049.002c1.052.209 1.438.376 1.438.62 0 .01-.004.034-.008.044l-.058.19c-.043.137-.11.345-.183.606.3-.106.556-.242.766-.407.426-.332.808-.437 1.059-.297a.411.411 0 0 1 .2.435c-.033.277-.322.671-1.017.86-.422.115-.821.2-1.215.266a9.147 9.147 0 0 0-.192 1.58 5.61 5.61 0 0 1 1.03-.266c-.112-.105-.328-.223-.554-.346-.06-.034-.205-.112-.205-.26 0-.016.006-.062.014-.078.04-.136.203-.152.322-.152.056 0 .128.003.216.015.68.033 1.102.19 1.288.474a.535.535 0 0 1 .088.296v.013c.766.081 1.412.374 1.83.836.333.369.509.832.508 1.34 0 .042-.003.084-.006.127-.12 2.178-2.942 2.996-3.062 3.03a.253.253 0 0 1-.052.007.35.35 0 0 1-.067-.012c-.102-.04-.306-.12-.306-.303.012-.12.08-.239.336-.268-.003-.003 2.311-.877 2.311-2.3 0-.059-.004-.12-.01-.183-.142-1.017-.705-1.548-1.722-1.621-.416.959-.862 1.766-1.327 2.404.145.223.307.422.482.586a.195.195 0 0 1 .035.237.446.446 0 0 1-.317.218c-.203.033-.421-.072-.657-.306-.026-.028-.055-.057-.08-.087-.822.867-1.535 1.053-1.992 1.053-.336 0-.552-.099-.61-.128-.258-.133-.54-.556-.542-1.17 0-.62.285-1.792 2.188-2.78a10.019 10.019 0 0 1-.013-.485c0-.411.025-.87.068-1.366a8.057 8.057 0 0 1-1.19-.033.223.223 0 0 1-.07-.022 1.708 1.708 0 0 1-.578-.483l-.08-.095c-.087-.1-.186-.215-.134-.361.019-.053.075-.144.237-.167-.005 0 .24-.041.432.11.05.037.09.083.136.133.083.094.143.163.216.172.065.009.297.034.622.034.165 0 .328-.008.488-.02.037-.306.086-.63.142-.967a.396.396 0 0 0-.219-.209c-.157-.062-.32-.128-.32-.287 0-.01.002-.032.005-.04.019-.158.188-.178.28-.19Zm-8.97 1.772 1.648 1.652c1.683-1.16 3.887-.807 5.013-.066-1.206.088-2.59.802-3.239 1.846l1.808 1.813h-5.23V5.774Zm10.812 2.533a5.66 5.66 0 0 0-.995.269c.027.414.097.802.205 1.156.39-.605.681-1.158.765-1.366.01-.02.017-.04.025-.059Zm-1.807.674c-.757.528-1.413 1.519-1.413 2.178l.001.059c.014.227.117.375.323.458.325.128.868-.271 1.512-1.099-.204-.435-.346-.971-.423-1.596Zm-6.47 3.434c.823 0 1.458.17 1.907.512.45.34.674.923.674 1.744 0 .216-.012.613-.032 1.184-.02.574-.032.955-.032 1.146.001.845.064 1.597.189 2.256l-1.089.041a2.738 2.738 0 0 1-.083-.647h-.07c-.57.52-1.343.78-2.325.78-.532 0-.99-.156-1.374-.469-.383-.314-.576-.878-.576-1.459 0-.715.196-1.33.744-1.832.654-.598 2.016-.868 3.509-.458.108.03.022-.24.022-.383 0-.571-.153-.952-.455-1.142-.302-.19-.762-.285-1.377-.285-.728 0-.666.147-1.37.327l-.177-.96c.695-.199 1.012-.355 1.914-.355Zm5.282 1.806h5.228v5.246l-1.645-1.652c-1.685 1.16-3.888.806-5.015.065 1.206-.087 2.591-.8 3.241-1.845L13.16 14.22Zm-5.038 1.624a2.57 2.57 0 0 0-.895.173c-.551.24-1.056.558-1.03 1.373.019.63.445 1.086 1.334 1.086.762 0 1.37-.191 1.825-.571a58.944 58.944 0 0 1-.036-1.9 3.685 3.685 0 0 0-1.198-.16Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/microsoftvisio.svg b/assets/lib/simple-icons/icons/microsoftvisio.svg
index aa2c90cb..53f4bc17 100644
--- a/assets/lib/simple-icons/icons/microsoftvisio.svg
+++ b/assets/lib/simple-icons/icons/microsoftvisio.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Microsoft Visio icon</title><path d="M24 7.609v9.556q0 .424-.302.726-.303.303-.726.303h-5.19q-.072 1.149-.556 2.135-.484.986-1.264 1.717-.78.732-1.803 1.15-1.022.417-2.159.417-1.016 0-1.96-.35-.943-.352-1.705-.969-.762-.617-1.295-1.47-.532-.852-.713-1.856H1.028q-.423 0-.726-.303Q0 18.363 0 17.94V7.609q0-.424.302-.726.303-.302.726-.302h5.238q-.072-.182-.072-.387 0-.424.302-.726L11.274.69q.303-.303.726-.303t.726.303l4.778 4.778q.302.302.302.726 0 .205-.072.387h5.238q.423 0 .726.302.302.302.302.726zM12 2.153l-4.04 4.04.387.388h3.012q.423 0 .726.302.302.302.302.726v2.238l3.653-3.653zM7.161 16.84l3.085-8.13H8.238q-.508 1.489-1.028 2.952-.52 1.464-1.004 2.964-.496-1.488-.992-2.958-.496-1.47-1.004-2.957H2.153l3.037 8.129zM12 22.065q.883 0 1.657-.333t1.355-.913q.58-.581.913-1.355.333-.774.333-1.658 0-.81-.302-1.548-.303-.738-.823-1.318-.52-.581-1.228-.944-.707-.363-1.518-.423v4.367q0 .423-.302.725-.303.303-.726.303H7.923q.206.677.593 1.246.387.568.92.98.532.41 1.185.64.653.23 1.379.23zm10.452-5.42V8.13h-6.158q-.133.133-.441.454-.309.32-.714.725-.405.406-.847.853-.441.448-.828.823-.387.375-.684.641-.296.266-.393.302v.097q.968.036 1.845.411t1.578.998q.702.623 1.186 1.446t.677 1.766Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Microsoft Visio</title><path d="M24 7.609v9.556q0 .424-.302.726-.303.303-.726.303h-5.19q-.072 1.149-.556 2.135-.484.986-1.264 1.717-.78.732-1.803 1.15-1.022.417-2.159.417-1.016 0-1.96-.35-.943-.352-1.705-.969-.762-.617-1.295-1.47-.532-.852-.713-1.856H1.028q-.423 0-.726-.303Q0 18.363 0 17.94V7.609q0-.424.302-.726.303-.302.726-.302h5.238q-.072-.182-.072-.387 0-.424.302-.726L11.274.69q.303-.303.726-.303t.726.303l4.778 4.778q.302.302.302.726 0 .205-.072.387h5.238q.423 0 .726.302.302.302.302.726zM12 2.153l-4.04 4.04.387.388h3.012q.423 0 .726.302.302.302.302.726v2.238l3.653-3.653zM7.161 16.84l3.085-8.13H8.238q-.508 1.489-1.028 2.952-.52 1.464-1.004 2.964-.496-1.488-.992-2.958-.496-1.47-1.004-2.957H2.153l3.037 8.129zM12 22.065q.883 0 1.657-.333t1.355-.913q.58-.581.913-1.355.333-.774.333-1.658 0-.81-.302-1.548-.303-.738-.823-1.318-.52-.581-1.228-.944-.707-.363-1.518-.423v4.367q0 .423-.302.725-.303.303-.726.303H7.923q.206.677.593 1.246.387.568.92.98.532.41 1.185.64.653.23 1.379.23zm10.452-5.42V8.13h-6.158q-.133.133-.441.454-.309.32-.714.725-.405.406-.847.853-.441.448-.828.823-.387.375-.684.641-.296.266-.393.302v.097q.968.036 1.845.411t1.578.998q.702.623 1.186 1.446t.677 1.766Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/microsoftword.svg b/assets/lib/simple-icons/icons/microsoftword.svg
index d51f089e..2838d910 100644
--- a/assets/lib/simple-icons/icons/microsoftword.svg
+++ b/assets/lib/simple-icons/icons/microsoftword.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Microsoft Word icon</title><path d="M23.004 1.5q.41 0 .703.293t.293.703v19.008q0 .41-.293.703t-.703.293H6.996q-.41 0-.703-.293T6 21.504V18H.996q-.41 0-.703-.293T0 17.004V6.996q0-.41.293-.703T.996 6H6V2.496q0-.41.293-.703t.703-.293zM6.035 11.203l1.442 4.735h1.64l1.57-7.876H9.036l-.937 4.653-1.325-4.5H5.38l-1.406 4.523-.938-4.675H1.312l1.57 7.874h1.641zM22.5 21v-3h-15v3zm0-4.5v-3.75H12v3.75zm0-5.25V7.5H12v3.75zm0-5.25V3h-15v3Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Microsoft Word</title><path d="M23.004 1.5q.41 0 .703.293t.293.703v19.008q0 .41-.293.703t-.703.293H6.996q-.41 0-.703-.293T6 21.504V18H.996q-.41 0-.703-.293T0 17.004V6.996q0-.41.293-.703T.996 6H6V2.496q0-.41.293-.703t.703-.293zM6.035 11.203l1.442 4.735h1.64l1.57-7.876H9.036l-.937 4.653-1.325-4.5H5.38l-1.406 4.523-.938-4.675H1.312l1.57 7.874h1.641zM22.5 21v-3h-15v3zm0-4.5v-3.75H12v3.75zm0-5.25V7.5H12v3.75zm0-5.25V3h-15v3Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/microstrategy.svg b/assets/lib/simple-icons/icons/microstrategy.svg
index 40a5f3c2..a1ff36e3 100644
--- a/assets/lib/simple-icons/icons/microstrategy.svg
+++ b/assets/lib/simple-icons/icons/microstrategy.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>MicroStrategy icon</title><path d="M9.103 2.596h5.811v18.808h-5.81zm-9.072 0h5.81v18.808H.032zm18.127 0v18.806h5.811V8.339z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>MicroStrategy</title><path d="M9.095 2.572h5.827v18.856H9.096zM0 2.572h5.825v18.856H.001zm18.174 0v18.854H24V8.33z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/midi.svg b/assets/lib/simple-icons/icons/midi.svg
index 73f13b22..b740316b 100644
--- a/assets/lib/simple-icons/icons/midi.svg
+++ b/assets/lib/simple-icons/icons/midi.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>MIDI icon</title><path d="M21.775 7.517H24v8.966h-2.225zm-8.562 0h6.506c.66 0 1.045.57 1.045 1.247v6.607c0 .84-.35 1.112-1.112 1.112h-6.439v-5.696h2.225v3.505h3.135V9.54h-5.36zm-3.235 0h2.19v8.966h-2.19zM0 7.517h7.854c.66 0 1.045.57 1.045 1.247v7.72H6.708V9.774H5.427v6.708H3.438V9.775H2.191v6.708H0Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>MIDI</title><path d="M21.775 7.517H24v8.966h-2.225zm-8.562 0h6.506c.66 0 1.045.57 1.045 1.247v6.607c0 .84-.35 1.112-1.112 1.112h-6.439v-5.696h2.225v3.505h3.135V9.54h-5.36zm-3.235 0h2.19v8.966h-2.19zM0 7.517h7.854c.66 0 1.045.57 1.045 1.247v7.72H6.708V9.774H5.427v6.708H3.438V9.775H2.191v6.708H0Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/minds.svg b/assets/lib/simple-icons/icons/minds.svg
index 4928e31e..8a56740a 100644
--- a/assets/lib/simple-icons/icons/minds.svg
+++ b/assets/lib/simple-icons/icons/minds.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Minds icon</title><path d="M15.495 18.38a.052.052 0 00.03-.033l.693-2.217 3.192-4.79a.052.052 0 00.003-.004.052.052 0 00.001-.002.052.052 0 00.001-.002.052.052 0 00.002-.005.052.052 0 000-.003.052.052 0 00.002-.003.052.052 0 000-.004.052.052 0 000-.005.052.052 0 000-.003.052.052 0 000-.003l-.416-6.946a.052.052 0 000-.001.052.052 0 00-.001-.005.052.052 0 000-.002.052.052 0 00-.003-.008.052.052 0 00-.002-.005.052.052 0 00-.002-.004.052.052 0 00-.003-.005.052.052 0 00-.003-.003.052.052 0 000-.001L14.818.018l-.001-.002a.052.052 0 00-.004-.003.052.052 0 00-.003-.002.052.052 0 00-.003-.002.052.052 0 00-.002-.001.052.052 0 00-.002-.001.052.052 0 00-.002-.001.052.052 0 00-.001 0 .052.052 0 000-.001.052.052 0 00-.002 0 .052.052 0 00-.002-.001.052.052 0 00-.001 0 .052.052 0 00-.005-.002.052.052 0 00-.004 0 .052.052 0 00-.002 0 .052.052 0 00-.001 0 .052.052 0 00-.001 0 .052.052 0 00-.003 0 .052.052 0 00-.001 0 .052.052 0 00-.001 0H9.22a.052.052 0 00-.003 0 .052.052 0 00-.004 0 .052.052 0 00-.004 0 .052.052 0 00-.003.001.052.052 0 00-.003.001.052.052 0 00-.005.002.052.052 0 00-.004.003.052.052 0 00-.004.002.052.052 0 00-.001 0 .052.052 0 00-.003.004.052.052 0 00-.001 0 .052.052 0 00-.003.003l-4.17 4.31a.052.052 0 00-.003.004.052.052 0 00-.006.009.052.052 0 00-.002.005.052.052 0 00-.002.008.052.052 0 000 .002.052.052 0 00-.001.003.052.052 0 000 .003l-.417 6.95a.052.052 0 000 .001.052.052 0 000 .001.052.052 0 000 .004.052.052 0 000 .004.052.052 0 000 .002.052.052 0 000 .005.052.052 0 00.001 0 .052.052 0 000 .003.052.052 0 00.001.002.052.052 0 00.001.002.052.052 0 00.001.002.052.052 0 00.001.001.052.052 0 00.002.003.052.052 0 00.001.003l3.194 4.79.692 2.214v.002a.052.052 0 000 .001.052.052 0 00.001.002.052.052 0 00.002.003.052.052 0 000 .001.052.052 0 00.001.002.052.052 0 000 .001.052.052 0 00.002.001.052.052 0 00.001.003.052.052 0 00.001.001.052.052 0 00.001.001.052.052 0 00.002.002.052.052 0 00.003.004.052.052 0 00.002.001.052.052 0 00.002.002.052.052 0 00.001 0 .052.052 0 00.003.003.052.052 0 00.001 0 .052.052 0 00.002.001.052.052 0 00.002.002.052.052 0 00.001 0 .052.052 0 00.001 0 .052.052 0 00.001.001.052.052 0 00.002 0 .052.052 0 00.001.001.052.052 0 00.001 0 .052.052 0 00.003.001.052.052 0 00.002 0 .052.052 0 000 .001.052.052 0 00.003 0 .052.052 0 00.002 0 .052.052 0 00.003.001.052.052 0 00.001 0 .052.052 0 00.002 0h6.952a.052.052 0 00.02-.004zm-.058-.1H8.89l7.201-2.095zm.618-2.193L8.62 18.249l2.703-5.677zm.068-.08l-4.733-3.516 5.139-4.124zm.11-.087l.4-7.54 2.668 2.936zm-7.699 2.27l-.646-2.069 3.231-3.36zm-.697-2.166l-3.094-4.64 6.456 1.143zm11.47-4.857l-2.655-2.92 2.256-3.717zm-7.974 1.236L9.3 5.284l7.187 2.983zm-.102.024l-6.507-1.152L9.198 5.31zm5.284-4.26l-7.2-2.99L14.748.152zm.095-.052L14.87.219l4.015 4.149zM4.694 11.14l.403-6.718 4.03.806zm4.473-6.01l-4.014-.803L9.167.18zm.104-.056V.103h5.376zm-.747 13.357v4.143l1.671-1.403zm.057 4.232l1.53.612 1.808.723-1.67-2.737zm3.5 1.335l3.338-1.335-1.67-1.402zm3.394-1.424v-4.143l-1.67 2.74zm-6.858-4.191L12 23.93l3.382-5.547z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Minds</title><path d="M15.496 18.381a.052.052 0 0 0 .03-.033l.693-2.217 3.192-4.791a.052.052 0 0 0 .003-.004.052.052 0 0 0 .001-.002.052.052 0 0 0 .001-.002.052.052 0 0 0 .002-.005.052.052 0 0 0 0-.003.052.052 0 0 0 .002-.003.052.052 0 0 0 0-.004.052.052 0 0 0 0-.005.052.052 0 0 0 0-.003.052.052 0 0 0 0-.003l-.416-6.947a.052.052 0 0 0 0-.001.052.052 0 0 0 0-.005.052.052 0 0 0 0-.002.052.052 0 0 0-.004-.008.052.052 0 0 0-.002-.005.052.052 0 0 0-.002-.004.052.052 0 0 0-.003-.005.052.052 0 0 0-.003-.003.052.052 0 0 0 0-.001L14.818.016V.014a.052.052 0 0 0-.005-.003.052.052 0 0 0-.003-.002.052.052 0 0 0-.003-.002.052.052 0 0 0-.002-.001.052.052 0 0 0-.002-.001.052.052 0 0 0-.002-.001.052.052 0 0 0 0-.001.052.052 0 0 0-.003 0 .052.052 0 0 0-.002-.001A.052.052 0 0 0 14.79 0a.052.052 0 0 0-.004 0 .052.052 0 0 0-.002 0 .052.052 0 0 0-.002 0 .052.052 0 0 0-.003 0 .052.052 0 0 0-.002 0H9.22a.052.052 0 0 0-.003 0 .052.052 0 0 0-.004 0 .052.052 0 0 0-.004 0 .052.052 0 0 0-.003.001.052.052 0 0 0-.003.001.052.052 0 0 0-.005.002.052.052 0 0 0-.004.003.052.052 0 0 0-.004.002.052.052 0 0 0-.001 0 .052.052 0 0 0-.003.004.052.052 0 0 0-.001 0 .052.052 0 0 0-.003.003L5.01 4.326a.052.052 0 0 0-.003.005.052.052 0 0 0-.006.009.052.052 0 0 0-.002.005.052.052 0 0 0-.002.008.052.052 0 0 0 0 .002.052.052 0 0 0-.001.003.052.052 0 0 0 0 .003l-.417 6.95a.052.052 0 0 0 0 .002.052.052 0 0 0 0 .005.052.052 0 0 0 0 .004.052.052 0 0 0 0 .002.052.052 0 0 0 0 .005.052.052 0 0 0 0 .003.052.052 0 0 0 .002.002.052.052 0 0 0 0 .002.052.052 0 0 0 .002.002.052.052 0 0 0 .003.004.052.052 0 0 0 0 .003l3.195 4.79.692 2.215v.002a.052.052 0 0 0 0 .001.052.052 0 0 0 .001.002.052.052 0 0 0 .002.003.052.052 0 0 0 0 .001.052.052 0 0 0 .001.002.052.052 0 0 0 0 .001.052.052 0 0 0 .002.001.052.052 0 0 0 .001.003.052.052 0 0 0 .001.001.052.052 0 0 0 .001.001.052.052 0 0 0 .002.002.052.052 0 0 0 .003.004.052.052 0 0 0 .002.001.052.052 0 0 0 .002.002.052.052 0 0 0 .001 0 .052.052 0 0 0 .003.003.052.052 0 0 0 .001 0 .052.052 0 0 0 .002.001.052.052 0 0 0 .002.002.052.052 0 0 0 .001 0 .052.052 0 0 0 .001 0 .052.052 0 0 0 .001.001.052.052 0 0 0 .002 0 .052.052 0 0 0 .001.001.052.052 0 0 0 .001 0 .052.052 0 0 0 .003.001.052.052 0 0 0 .002 0 .052.052 0 0 0 0 .001.052.052 0 0 0 .003 0 .052.052 0 0 0 .002 0 .052.052 0 0 0 .003.001.052.052 0 0 0 .001 0 .052.052 0 0 0 .002 0h6.954a.052.052 0 0 0 .02-.004zm-.058-.1H8.889l7.203-2.095zm.618-2.193L8.619 18.25l2.704-5.678zm.068-.08L11.39 12.49l5.14-4.125zm.11-.087l.4-7.542 2.668 2.937zm-7.7 2.27l-.647-2.07 3.232-3.36zm-.698-2.166l-3.094-4.641 6.457 1.143zm11.472-4.858l-2.655-2.92 2.256-3.718zm-7.975 1.236L9.3 5.283l7.188 2.983zm-.102.024l-6.508-1.152 4.475-5.966zm5.285-4.26L9.315 5.175 14.748.15zm.095-.053L14.87.217l4.015 4.15zM4.693 11.14l.403-6.72 4.03.807zm4.474-6.011l-4.015-.803L9.167.178zm.104-.056V.1h5.376zm-.748 13.36v4.143l1.672-1.403zm.057 4.232l1.53.612 1.81.723-1.67-2.737zM12.081 24l3.339-1.335-1.67-1.402zm3.395-1.424v-4.144l-1.67 2.74zm-6.86-4.192L12 23.932l3.383-5.548z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/minecraft.svg b/assets/lib/simple-icons/icons/minecraft.svg
new file mode 100644
index 00000000..1007b256
--- /dev/null
+++ b/assets/lib/simple-icons/icons/minecraft.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Minecraft</title><path d="M23.7397 10.0058l-2.4424.0023-.076.1198-.03-.1175h-2.4586l-.0599.136-.023-.136-2.4793.0023-.0438.1613-.0161-.1613-2.5023.0023-.023.265-.007-.265-2.5184.0046-.0092.242-.0254-.242-2.4954.0023-.016.1567-.0439-.1567H7.2673l-.0968.6705-.0553-.1382-.0254-.0024-.2096-.53-1.189.0024-.023.129-.0622-.129H4.431l-.03.1198-.0691-.1198-1.1659.0023-.136.523h-.3156l-.06.2282-.5506-.7512-1.1337.0023L0 13.0403l1.03.954h1.1244l.1774-.6706.0876.0968h.2995l.5.5737h1.1544l.023-.1082.0807.1082h1.1636l.0207-.1175.0737.1175h1.1751l.09-.629.3018.629h1.1889l.0138-.1451.0507.1451H11.03l.0093-.228.0276.228h2.4954l.023-.2511.0093.2511h1.2235l.0392-.175.0115.175h1.2097l.0506-.152.0139.152h1.1958l.0622-.1336.0185.1336h1.1843l.0714-.122.0208.122h1.175l.6798-.9677-.0323-.1544h.3756l.5346-.7396.4562 1.8594h1.152L24 13.0334l-.0184-.0737-.0738-.2535-.069-.2327s-.219-.712-.2466-.8065c-.0346-.1152-.0714-.2327-.1037-.3456l-.0046-.0184.4838-.583zm-2.325.1682h2.2005l.1567.493h-.6383l.0046.0162c.0254.1083.0554.2189.0853.3295.03.1129.0645.2258.0968.3433.0345.1152.069.235.106.3525.0368.1199.0737.2374.1083.3572.023.0737.0438.1451.0668.2189.023.0737.046.1497.0691.2235l.0692.228c.023.0761.0437.1522.0667.2282h-.9976l-.6268-2.2973h-.6405zm-.3548.0023l.1222.493h-1.295l.1175.56h1.3134l.136.553h-1.3342l.2466 1.182-.9954.0023-.5093-2.788zm-2.553.0023l.4816 2.788h-.9954l-.129-.8986h-.3733l.1221.8986h-.9954l-.3064-2.7857zm-2.5484.0023l.1037 1.0322h-.3272l.03.3111h.3272l.1451 1.4424h-.993l-.09-1.1751-.3686-.0092.076 1.1843h-.993l-.1037-2.7834zm-2.546.0023l.0138.493h-1.272l-.0299 1.719h1.3503l.016.5737h-2.364l.0945-2.7834zm-2.5438.0023l-.0208.493H9.56l-.0415.5692 1.3042.0023-.023.5369-1.3296.0023-.0437.6014 1.3456.0045-.0253.5738H8.387l.2926-2.7811zm-2.5392.0023l-.3226 2.781h-.9908l.1245-.8847-.3273-.0092.083-.5737-.3594-.007-.235 1.477H5.311l.5184-2.7811h.917l-.0806.5138.3157.0092-.076.5369.3548.0046L7.41 10.19zm-5.0346.0046h.9171l-.6475 2.7788h-.9884l.2972-1.1797H2.516l-.1543.5737h-.6406l.159-.5737h-.3595l-.3502 1.1797h-.97l.8917-2.7765h.8986l-.1475.5046.3134.0115L2 11.257h.6959l.1451-.5391h.318zm2.182.0046l-.546 2.7811h-.9885l.6175-2.7788zm12.1683.4217l.0391.3248-.341-.0023-.0437-.3202h-.4217l.0438.3525h.387l.0185.129h-.1936l.0715.5461h.2327l-.0184-.1843.3456-.0023.03.1866h.2373l-.083-.5414h-.1935l-.0162-.1314.3963-.0023-.0553-.3548zm-2.9286.0553l.0369.5737h.364l-.0438-.5737zm-1.1958 1.0046l.0184.5484-1.2166-.0023.0115-.4102h1.1774Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/minetest.svg b/assets/lib/simple-icons/icons/minetest.svg
index 9107497f..fc14fbb2 100644
--- a/assets/lib/simple-icons/icons/minetest.svg
+++ b/assets/lib/simple-icons/icons/minetest.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Minetest icon</title><path d="M23.69 12.436l-.406.24-2.31 1.355v.558l-1.087.667v1.11l-1.087.664v2.857l4.89-2.872v-4.044zm-.543.96v3.298l-3.803 2.234v-1.583l1.087-.666v-1.11l1.086-.666v-.551zm-3.77-7.854l-1.128.792v4.746l.139.08 1.004.577 1.03-.603V6.152zm.026.654l.475.278v4.339l-.49.286-.597-.344v-4.13zM6.215 0l-4.24 2.491V7.03l.136.08 2.907 1.708v2.205l.134.08 1.061.637 1.196-.717V8.816l2.662-1.565V2.327zm-.003.643l3.316 2V6.93L6.213 8.878 2.52 6.708V2.812zm.654 8.492v1.57l-.653.39-.651-.39V9.135l.651.383zm8.947 2.074l-7.88 4.54v1.434l.869.5v1.107l3.208 1.881 6.79-4.102v-1.166l1.087-.666v-1.15zm-.002.638l3.533 2.061v.515l-1.086.665v1.164l-6.251 3.777-2.66-1.56v-1.11l-.87-.5v-.785zm-2.98-9.03a.258.258 0 00-.143.038l-2.616 1.543v.64l2.753-1.624 3.529 2.067-4.317 2.533a.28.28 0 00-.001.48l3.23 1.92-7.058 4.069-7.067-4.175 3.202-1.89-.544-.32-3.337 1.97a.28.28 0 000 .48l7.608 4.494c.083.049.185.05.27 0l7.606-4.382a.28.28 0 00.003-.482l-3.235-1.922 4.32-2.535a.28.28 0 000-.48L12.96 2.853a.312.312 0 00-.13-.038zm4.207 2.427zm.1.104zm.033.137a.275.275 0 01-.136.237l-.407.24v.468l-3.515 2.062.542.322 3.38-1.983a.279.279 0 00.136-.24zm-14.128 8.17v1.1l-1.086-.665v3.978l6.412 3.82v-1.752l-.924-.555V18.47l-1.141-.666v-2.218zm.544.963l2.173 1.286v2.22l1.141.667V19.9l.925.554v.467L2.5 17.75v-2.681l1.087.666v-.49zM11.88 3.33l-1.809 1.065v.003l1.81-1.067zM3.79 8.095L.309 10.147v6.979L11.99 24l11.681-7.042v-6.7l-3.25-1.909v.64l2.707 1.59v6.062l-11.141 6.716L.85 16.805v-6.027l-.389-.23a.28.28 0 010-.48L3.8 8.098zm19.9 4.34l-.406.24-2.31 1.356v.558l-1.087.666v1.11l-1.087.665v2.857l4.89-2.872v-4.044zm-.543.96v3.3l-3.803 2.233v-1.584l1.086-.665v-1.11l1.087-.666v-.551zm-3.77-7.853l-1.129.792v4.746l.14.08 1.003.577 1.031-.603V6.152zm.025.654l.476.278v4.338l-.49.287-.597-.344v-4.13zM6.216 0l-4.24 2.491V7.03l.136.08L5.02 8.817v2.205l.134.08 1.06.637 1.197-.717V8.815l2.662-1.564V2.327zm-.003.643l3.316 2V6.93L6.214 8.878 2.52 6.708V2.812zm.654 8.492v1.57l-.653.39-.651-.39V9.135l.651.383zm8.947 2.074l-7.88 4.54v1.434l.869.5v1.107l3.208 1.881 6.79-4.102v-1.166l1.087-.666v-1.15zm-.002.638l3.533 2.061v.515l-1.087.665v1.164l-6.25 3.777-2.661-1.56v-1.11l-.87-.5v-.786zm-2.98-9.03a.258.258 0 00-.143.038l-2.616 1.543v.64l2.753-1.624 3.529 2.067-4.318 2.533a.28.28 0 000 .48l3.23 1.92-7.059 4.068-7.067-4.174 3.203-1.89-.544-.32-3.337 1.97a.28.28 0 000 .48L8.07 15.04c.084.05.186.05.27.001l7.607-4.382a.28.28 0 00.003-.482l-3.235-1.922 4.32-2.535a.28.28 0 000-.481L12.96 2.854a.31.31 0 00-.13-.038zm4.207 2.427zm.1.104zm.033.137a.275.275 0 01-.136.236l-.407.24v.47l-3.515 2.061.542.322 3.38-1.983a.279.279 0 00.136-.24zm0 .968v.137c0 .1-.052.191-.136.24l-.156.092 1.37.8v-.64zm3.252 1.897v.64l2.725 1.59v.512l-1.984 1.195-1.764 1.03-3.316-1.949v-.95c0-.098-.05-.19-.135-.24l-2.295-1.363-.543.319 2.43 1.444v.95c0 .1.052.192.137.242l3.586 2.107c.083.05.186.05.27.001l1.901-1.11h.004l1.709-1.03v.902l.001.026c.002.02.007.038.011.054.003.007.007.02.011.027.005.007.007.015.012.026l.014.023c.023.03.048.055.079.075l.022.015.026.011a.08.08 0 00.026.007.264.264 0 00.16-.007l.026-.011c.015-.007.034-.019.047-.027.007-.007.015-.01.022-.019.007-.007.011-.015.018-.018l.019-.023c.004-.007.011-.015.015-.023a.139.139 0 00.022-.05c.003-.008.004-.02.007-.027l.004-.027a.239.239 0 00.001-.026v-2.222c0-.1-.051-.192-.136-.242zm-17.38 5.305v1.1l-1.086-.665v3.978l6.412 3.819v-1.751l-.925-.555v-1.112l-1.14-.666v-2.218zm.544.963l2.173 1.286v2.22l1.14.667v1.107l.925.555v.467l-5.325-3.17v-2.681l1.087.666v-.49zM11.88 3.33l-1.808 1.065v.003l1.81-1.067zM3.792 8.095L.308 10.147v6.978L11.992 24l11.681-7.043v-6.699l-3.25-1.909v.64l2.707 1.59v6.062l-11.141 6.716L.852 16.805v-6.028l-.389-.23a.28.28 0 010-.48L3.8 8.1z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Minetest</title><path d="M23.69 12.436l-.406.24-2.31 1.355v.558l-1.087.667v1.11l-1.087.664v2.857l4.89-2.872v-4.044zm-.543.96v3.298l-3.803 2.234v-1.583l1.087-.666v-1.11l1.086-.666v-.551zm-3.77-7.854l-1.128.792v4.746l.139.08 1.004.577 1.03-.603V6.152zm.026.654l.475.278v4.339l-.49.286-.597-.344v-4.13zM6.215 0l-4.24 2.491V7.03l.136.08 2.907 1.708v2.205l.134.08 1.061.637 1.196-.717V8.816l2.662-1.565V2.327zm-.003.643l3.316 2V6.93L6.213 8.878 2.52 6.708V2.812zm.654 8.492v1.57l-.653.39-.651-.39V9.135l.651.383zm8.947 2.074l-7.88 4.54v1.434l.869.5v1.107l3.208 1.881 6.79-4.102v-1.166l1.087-.666v-1.15zm-.002.638l3.533 2.061v.515l-1.086.665v1.164l-6.251 3.777-2.66-1.56v-1.11l-.87-.5v-.785zm-2.98-9.03a.258.258 0 00-.143.038l-2.616 1.543v.64l2.753-1.624 3.529 2.067-4.317 2.533a.28.28 0 00-.001.48l3.23 1.92-7.058 4.069-7.067-4.175 3.202-1.89-.544-.32-3.337 1.97a.28.28 0 000 .48l7.608 4.494c.083.049.185.05.27 0l7.606-4.382a.28.28 0 00.003-.482l-3.235-1.922 4.32-2.535a.28.28 0 000-.48L12.96 2.853a.312.312 0 00-.13-.038zm4.207 2.427zm.1.104zm.033.137a.275.275 0 01-.136.237l-.407.24v.468l-3.515 2.062.542.322 3.38-1.983a.279.279 0 00.136-.24zm-14.128 8.17v1.1l-1.086-.665v3.978l6.412 3.82v-1.752l-.924-.555V18.47l-1.141-.666v-2.218zm.544.963l2.173 1.286v2.22l1.141.667V19.9l.925.554v.467L2.5 17.75v-2.681l1.087.666v-.49zM11.88 3.33l-1.809 1.065v.003l1.81-1.067zM3.79 8.095L.309 10.147v6.979L11.99 24l11.681-7.042v-6.7l-3.25-1.909v.64l2.707 1.59v6.062l-11.141 6.716L.85 16.805v-6.027l-.389-.23a.28.28 0 010-.48L3.8 8.098zm19.9 4.34l-.406.24-2.31 1.356v.558l-1.087.666v1.11l-1.087.665v2.857l4.89-2.872v-4.044zm-.543.96v3.3l-3.803 2.233v-1.584l1.086-.665v-1.11l1.087-.666v-.551zm-3.77-7.853l-1.129.792v4.746l.14.08 1.003.577 1.031-.603V6.152zm.025.654l.476.278v4.338l-.49.287-.597-.344v-4.13zM6.216 0l-4.24 2.491V7.03l.136.08L5.02 8.817v2.205l.134.08 1.06.637 1.197-.717V8.815l2.662-1.564V2.327zm-.003.643l3.316 2V6.93L6.214 8.878 2.52 6.708V2.812zm.654 8.492v1.57l-.653.39-.651-.39V9.135l.651.383zm8.947 2.074l-7.88 4.54v1.434l.869.5v1.107l3.208 1.881 6.79-4.102v-1.166l1.087-.666v-1.15zm-.002.638l3.533 2.061v.515l-1.087.665v1.164l-6.25 3.777-2.661-1.56v-1.11l-.87-.5v-.786zm-2.98-9.03a.258.258 0 00-.143.038l-2.616 1.543v.64l2.753-1.624 3.529 2.067-4.318 2.533a.28.28 0 000 .48l3.23 1.92-7.059 4.068-7.067-4.174 3.203-1.89-.544-.32-3.337 1.97a.28.28 0 000 .48L8.07 15.04c.084.05.186.05.27.001l7.607-4.382a.28.28 0 00.003-.482l-3.235-1.922 4.32-2.535a.28.28 0 000-.481L12.96 2.854a.31.31 0 00-.13-.038zm4.207 2.427zm.1.104zm.033.137a.275.275 0 01-.136.236l-.407.24v.47l-3.515 2.061.542.322 3.38-1.983a.279.279 0 00.136-.24zm0 .968v.137c0 .1-.052.191-.136.24l-.156.092 1.37.8v-.64zm3.252 1.897v.64l2.725 1.59v.512l-1.984 1.195-1.764 1.03-3.316-1.949v-.95c0-.098-.05-.19-.135-.24l-2.295-1.363-.543.319 2.43 1.444v.95c0 .1.052.192.137.242l3.586 2.107c.083.05.186.05.27.001l1.901-1.11h.004l1.709-1.03v.902l.001.026c.002.02.007.038.011.054.003.007.007.02.011.027.005.007.007.015.012.026l.014.023c.023.03.048.055.079.075l.022.015.026.011a.08.08 0 00.026.007.264.264 0 00.16-.007l.026-.011c.015-.007.034-.019.047-.027.007-.007.015-.01.022-.019.007-.007.011-.015.018-.018l.019-.023c.004-.007.011-.015.015-.023a.139.139 0 00.022-.05c.003-.008.004-.02.007-.027l.004-.027a.239.239 0 00.001-.026v-2.222c0-.1-.051-.192-.136-.242zm-17.38 5.305v1.1l-1.086-.665v3.978l6.412 3.819v-1.751l-.925-.555v-1.112l-1.14-.666v-2.218zm.544.963l2.173 1.286v2.22l1.14.667v1.107l.925.555v.467l-5.325-3.17v-2.681l1.087.666v-.49zM11.88 3.33l-1.808 1.065v.003l1.81-1.067zM3.792 8.095L.308 10.147v6.978L11.992 24l11.681-7.043v-6.699l-3.25-1.909v.64l2.707 1.59v6.062l-11.141 6.716L.852 16.805v-6.028l-.389-.23a.28.28 0 010-.48L3.8 8.1z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/mini.svg b/assets/lib/simple-icons/icons/mini.svg
new file mode 100644
index 00000000..a1e79cfb
--- /dev/null
+++ b/assets/lib/simple-icons/icons/mini.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Mini</title><path d="M0 9.1723h7.5563c.48-.749 1.1108-1.3428 1.8935-1.7828.7822-.4393 1.6314-.659 2.5484-.659.9163 0 1.7673.2203 2.5526.6615.7852.4412 1.4154 1.035 1.8892 1.7803H24l-.7483.7483h-6.3994a4.278 4.278 0 0 1 .299.8886h5.2333l-.7483.749h-4.3692c.0129.1932.019.3396.019.4393 0 .0997-.0061.2468-.019.44h3.4904l-.7489.7483h-2.8572a4.0661 4.0661 0 0 1-.299.8844h2.264l-.7582.7483H16.44c-.4738.7464-1.104 1.3421-1.8892 1.7858-.7853.4437-1.6363.6652-2.5526.6652-.917 0-1.7662-.2209-2.5484-.6627-.7827-.4425-1.4135-1.0388-1.8935-1.7883H5.6418l-.744-.7483h2.2597a4.093 4.093 0 0 1-.296-.8844H4.0062l-.7582-.7483h3.4898c-.0129-.1932-.019-.3403-.019-.44 0-.0997.0061-.2461.019-.4393h-4.36l-.7581-.749h5.2418a4.306 4.306 0 0 1 .296-.8886H.7483zm7.8437 1.0714c-.2382.5581-.3575 1.1428-.3575 1.7538 0 .6111.1193 1.1963.3575 1.7545.2381.5575.5594 1.0394.963 1.4443.4038.405.8838.7268 1.44.9662.5564.2393 1.1404.3587 1.7515.3587.6104 0 1.195-.1194 1.7532-.3587.5575-.2394 1.0388-.5613 1.4424-.9662.4037-.405.725-.8868.9656-1.4443.24-.5582.36-1.1434.36-1.7545 0-.611-.12-1.1957-.36-1.7538-.2406-.5582-.5619-1.0388-.9656-1.4425-.4036-.403-.8849-.7243-1.4424-.9637-.5582-.2393-1.1428-.3587-1.7532-.3587-.6111 0-1.1951.1194-1.7514.3587-.5563.2394-1.0363.5607-1.44.9637-.4037.4037-.725.8843-.9631 1.4425zm.5538 2.9421h.4677l-.0135-1.7729.5661 1.773.52-.0032.5557-1.7606v1.7637h.4991v-2.3766l-.7028-.0006-.603 1.8954-.6148-1.893-.6745-.0018zm3.133 0h.4953v-2.3766h-.4953zm1.0332 0h.477v-1.712l.9488 1.712h.5754v-2.3766h-.4677v1.7219l-.9489-1.7219h-.5846zm2.5483 0h.4862v-2.3766h-.4862z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/minutemailer.svg b/assets/lib/simple-icons/icons/minutemailer.svg
index 4b6c5189..d1eca583 100644
--- a/assets/lib/simple-icons/icons/minutemailer.svg
+++ b/assets/lib/simple-icons/icons/minutemailer.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Minutemailer icon</title><path d="M5.564 2.703l3.45 3.734-2.434 4.798 5.14-.921 2.34 5.646L24 2.926 5.564 2.703zm-.636 8.088l.957-.787-1.234.39-.126-.18.51-.495-.669.27C1.813 10.979 0 13.455 0 16.35c0 1.951.822 3.705 2.133 4.947-.563-.99-.885-2.134-.885-3.355 0-2.865 1.809-5.415 4.315-6.42l.315-.766-.75.331-.211-.285.011-.011zm4.364-1.97L10.89 6l9.398-2.201L9.292 8.821z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Minutemailer</title><path d="M17.187 19.181L24 4.755 0 12.386l9.196 1.963.043 4.896 2.759-2.617-2.147-2.076 7.336 4.63z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/miro.svg b/assets/lib/simple-icons/icons/miro.svg
new file mode 100644
index 00000000..f8a11806
--- /dev/null
+++ b/assets/lib/simple-icons/icons/miro.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Miro</title><path d="M17.392 0H13.9L17 4.808 10.444 0H6.949l3.102 6.3L3.494 0H0l3.05 8.131L0 24h3.494L10.05 6.985 6.949 24h3.494L17 5.494 13.899 24h3.493L24 3.672 17.392 0z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/mitsubishi.svg b/assets/lib/simple-icons/icons/mitsubishi.svg
index 7984e870..323210d1 100644
--- a/assets/lib/simple-icons/icons/mitsubishi.svg
+++ b/assets/lib/simple-icons/icons/mitsubishi.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Mitsubishi icon</title><path d="M8 22.38H0l4-6.92h8zm8 0h8l-4-6.92h-8zm0-13.84l-4-6.92-4 6.92 4 6.92Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Mitsubishi</title><path d="M8 22.38H0l4-6.92h8zm8 0h8l-4-6.92h-8zm0-13.84l-4-6.92-4 6.92 4 6.92Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/mix.svg b/assets/lib/simple-icons/icons/mix.svg
index 74c39b01..9a4f08d7 100644
--- a/assets/lib/simple-icons/icons/mix.svg
+++ b/assets/lib/simple-icons/icons/mix.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Mix icon</title><path d="M4.8 6.1v15.15c0 1.35-1.05 2.35-2.4 2.35-1.35 0-2.4-1.05-2.4-2.35V0h24v13.35c0 1.3-1.1 2.35-2.4 2.35-1.35 0-2.45-1.05-2.45-2.35v-1.2c0-1.35-1.05-2.35-2.4-2.35-1.137 0-2.121.803-2.35 1.875V15.5c0 1.35-1.1 2.35-2.4 2.35-1.35 0-2.4-1.05-2.4-2.35V6.25c0-1.3-1.1-2.35-2.4-2.35a2.4 2.4 0 0 0-2.4 2.2z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Mix</title><path d="M.001 0v21.61c0 1.32 1.074 2.39 2.4 2.39a2.396 2.396 0 0 0 2.402-2.39V8.54c0 .014-.005.026-.006.04V6.364a2.395 2.395 0 0 1 2.399-2.393 2.396 2.396 0 0 1 2.398 2.393v9.356a2.394 2.394 0 0 0 2.398 2.393 2.394 2.394 0 0 0 2.398-2.39v-3.692a2.398 2.398 0 0 1 2.385-2.078 2.4 2.4 0 0 1 2.41 2.389v1.214a2.397 2.397 0 0 0 2.408 2.389 2.399 2.399 0 0 0 2.406-2.39V.006a4.61 4.61 0 0 0-.145-.004c-1.31 0-2.558.264-3.693.74A9.449 9.449 0 0 1 23.841 0z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/mixcloud.svg b/assets/lib/simple-icons/icons/mixcloud.svg
index 3adfe69f..41a0cf2b 100644
--- a/assets/lib/simple-icons/icons/mixcloud.svg
+++ b/assets/lib/simple-icons/icons/mixcloud.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Mixcloud icon</title><path d="M21.95 19.062c-.154 0-.31-.045-.445-.135-.369-.25-.465-.75-.225-1.11.738-1.094 1.125-2.381 1.125-3.719s-.387-2.625-1.125-3.721c-.249-.368-.145-.866.216-1.106.375-.249.87-.146 1.108.214.917 1.365 1.396 2.97 1.396 4.62 0 1.648-.479 3.254-1.396 4.619-.135.239-.39.359-.645.359l-.009-.021zM19.66 17.768c-.153 0-.308-.045-.445-.139-.369-.239-.463-.734-.215-1.094.489-.721.747-1.545.747-2.43 0-.855-.258-1.695-.747-2.431-.248-.36-.154-.854.215-1.095s.857-.15 1.106.225c.669.99 1.021 2.145 1.021 3.314 0 1.201-.352 2.34-1.021 3.315-.146.24-.406.36-.661.36v-.025zm-3.73-7.153c-.314-3.197-3.016-5.699-6.3-5.699-2.721 0-5.13 1.748-5.995 4.283C1.588 9.501 0 11.269 0 13.4c0 2.344 1.912 4.254 4.26 4.254h10.908c1.964 0 3.566-1.594 3.566-3.557 0-1.706-1.2-3.129-2.805-3.48v-.002zm-.762 5.446H4.263c-1.466 0-2.669-1.191-2.669-2.658 0-1.465 1.193-2.658 2.669-2.658.71 0 1.381.285 1.886.781.3.314.811.314 1.125 0 .3-.301.3-.811 0-1.125-.555-.542-1.231-.931-1.965-1.111.75-1.665 2.43-2.774 4.305-2.774 2.609 0 4.74 2.129 4.74 4.738 0 .512-.075 1.006-.24 1.486-.135.42.09.869.51 1.02.074.03.165.045.24.045.33 0 .645-.211.75-.54.105-.315.18-.63.225-.96.734.285 1.26 1.005 1.26 1.83 0 1.096-.885 1.979-1.965 1.979l.034-.053z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Mixcloud</title><path d="M2.462 8.596l1.372 6.49h.319l1.372-6.49h2.462v6.808H6.742v-5.68l.232-.81h-.402l-1.43 6.49H2.854l-1.44-6.49h-.391l.222.81v5.68H0V8.596zM24 8.63v1.429L21.257 12 24 13.941v1.43l-3.235-2.329h-.348l-3.226 2.329v-1.43l2.734-1.94-2.733-1.942V8.63l3.225 2.338h.348zm-7.869 2.75v1.24H9.304v-1.24z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/mixer.svg b/assets/lib/simple-icons/icons/mixer.svg
deleted file mode 100644
index 3fabe216..00000000
--- a/assets/lib/simple-icons/icons/mixer.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Mixer icon</title><path d="M2.456 1.375a2.461 2.461 0 0 0-1.65.642C-.134 2.884-.21 4.348.553 5.38l4.917 6.59-4.946 6.65c-.762 1.032-.702 2.496.254 3.363a2.45 2.45 0 0 0 3.617-.344l6.904-9.28a.65.65 0 0 0 0-.763L4.423 2.361a2.432 2.432 0 0 0-1.967-.986zm19.089 0a2.432 2.432 0 0 0-1.968.986l-6.86 9.22a.65.65 0 0 0 0 .762l6.89 9.296a2.45 2.45 0 0 0 3.617.344c.956-.867 1.016-2.331.254-3.363l-4.947-6.65 4.917-6.59c.762-1.032.687-2.496-.254-3.363a2.459 2.459 0 0 0-1.65-.641z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/mlb.svg b/assets/lib/simple-icons/icons/mlb.svg
new file mode 100644
index 00000000..01bf2764
--- /dev/null
+++ b/assets/lib/simple-icons/icons/mlb.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>MLB</title><path d="M22.003 5.53a1.988 1.988 0 011.99 1.827l.007.177v8.927a2.007 2.007 0 01-1.848 2.002l-.15.006H2.002a2.003 2.003 0 01-1.42-.586 1.979 1.979 0 01-.575-1.245L0 16.46V7.535a1.994 1.994 0 01.583-1.427 2.016 2.016 0 011.242-.57l.176-.007h20.002zm-7.5.703H2.001a1.312 1.312 0 00-.926.375 1.299 1.299 0 00-.374.926v8.927a1.282 1.282 0 00.374.922c.246.245.579.383.926.384h8.116a92.275 92.275 0 00-.495-.843H8.66c0-2.402.812-3.73 1.784-3.995.133-.024.07-.68-.1-.88h-.561c-.09 0-.038-.169-.038-.169l.456-.972-.062-.266H8.455l1.383-.967c.064-2.55 2.68-2.748 4.255-1.686.937.62 1.008 1.849.937 2.698-.012.054-.244.018-.244.018s-.16.937.257.937h1.838c.749-.03 1.472.478 1.472.478l.176-.643-4.026-5.244zm7.5 0h-5.59l3.207 5.36.296.038.187.245v.229l.202.041.188.255v.221l.21.037.211.23v.51c.252.228.536.418.843.563.283.108.315.562.486.803.213.352.505.493.444.69-.143.526-.682 1.414-1.184 1.456h-1.986v.85h2.488a1.3 1.3 0 001.294-1.311V7.534h-.002a1.285 1.285 0 00-1.294-1.3zM4.022 14.404a.888.888 0 01-.638 1.513.879.879 0 01-.88-.888.888.888 0 011.518-.625z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/mobx.svg b/assets/lib/simple-icons/icons/mobx.svg
new file mode 100644
index 00000000..ddb98a80
--- /dev/null
+++ b/assets/lib/simple-icons/icons/mobx.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>MobX</title><path d="M1.402 0C.625 0 0 .625 0 1.402v21.196C0 23.375.625 24 1.402 24h21.196c.777 0 1.402-.625 1.402-1.402V1.402C24 .625 23.375 0 22.598 0zm2.882 5.465h3.038v13.068H4.284v-.986h1.863V6.45H4.284zm12.394 0h3.038v.985h-1.863v11.098h1.863v.986h-3.038zm-7.856 3.55h1.35c.108.441.234.914.378 1.418.153.495.31.99.472 1.485.171.486.342.958.513 1.417.171.46.333.869.486 1.229.153-.36.315-.77.486-1.229.171-.459.338-.931.5-1.417.17-.495.328-.99.472-1.485.153-.504.284-.977.392-1.418h1.296a34.295 34.295 0 0 1-1.242 3.78 56.44 56.44 0 0 1-1.364 3.24h-1.134a63.191 63.191 0 0 1-1.377-3.24 36.226 36.226 0 0 1-1.228-3.78Z"/></svg>
diff --git a/assets/lib/simple-icons/icons/mobxstatetree.svg b/assets/lib/simple-icons/icons/mobxstatetree.svg
new file mode 100644
index 00000000..954ab0ad
--- /dev/null
+++ b/assets/lib/simple-icons/icons/mobxstatetree.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>MobX-State-Tree</title><path d="M12.4359.5918c-.5327.0013-1.073.2715-1.432.8068L.3056 17.5528c-.9402 1.9806.4223 3.8737 2.2691 4.4105 3.469.7726 6.646-1.2927 6.646-1.2927 4.68-2.9945 7.7024-4.6851 7.7024-4.6851 3.7297-1.8907 6.9926.4293 6.9995.4342L13.8248 1.3986c-.3309-.54-.8563-.808-1.389-.8068zm.0043 1.6599c.4191-.0013.8326.2102 1.093.635 2.4662 3.6608 5.2689 7.4349 7.6288 11.1616 0 0-2.252-1.1721-5.19.3173 0 0-2.3795 1.3306-6.0622 3.687 0 0-2.4992 1.6244-5.229 1.0164-1.4534-.4224-2.5263-1.9125-1.7865-3.4711l8.4195-12.7111c.2825-.4212.7072-.6342 1.1264-.6351zM20.86 16.4169c-4.0347.0998-7.5355 3.8695-10.387 4.9836 4.3352 5.2103 17.3143-.9708 12.454-4.4241-.6166-.4203-1.315-.578-2.067-.5595zm-.0247 1.0159c.5446.003 1.04.1454 1.4567.4783 2.288 2.2856-6.3047 6.2616-9.9585 3.647 1.1813-.0912 5.5606-4.1413 8.5018-4.1253Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/mocha.svg b/assets/lib/simple-icons/icons/mocha.svg
index 5b2cfbd7..b37a7141 100644
--- a/assets/lib/simple-icons/icons/mocha.svg
+++ b/assets/lib/simple-icons/icons/mocha.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Mocha icon</title><path d="M13.325 0c-.907 1.116-2.442 2.302-.768 4.814.558.628.838 1.953.768 2.372 0 0 2.512-1.464.977-4.116-.907-1.395-1.326-2.582-.977-3.07zm-2.79 2.582c-.628.767-1.605 1.535-.489 3.279.35.349.489 1.256.489 1.535 0 0 1.673-.978.627-2.792-.628-.907-.906-1.743-.627-2.022zm-5.094 6a.699.699 0 0 0-.697.698c0 2.372.349 10.535 3.837 14.512.14.139.28.208.489.208h5.86c.21 0 .35-.069.489-.208 3.488-3.908 3.837-12.07 3.837-14.512a.7.7 0 0 0-.698-.699H12zm2.023 2.163h9.21c.349 0 .697.278.697.697 0 1.953-.348 7.465-2.72 10.326-.21.14-.35.208-.559.208H9.976a.633.633 0 0 1-.488-.208c-2.372-2.79-2.652-8.373-2.722-10.326 0-.35.28-.697.698-.697zm8.792 4.744s-.071.627-1.745 1.255c-2.303.837-6.348.28-6.348.28.349 1.465.906 2.86 1.743 3.907.07.14.28.209.419.209h3.489c.14 0 .279-.07.418-.209 1.186-1.395 1.745-3.558 2.024-5.442z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Mocha</title><path d="M13.325 0c-.907 1.116-2.442 2.302-.768 4.814.558.628.838 1.953.768 2.372 0 0 2.512-1.464.977-4.116-.907-1.395-1.326-2.582-.977-3.07zm-2.79 2.582c-.628.767-1.605 1.535-.489 3.279.35.349.489 1.256.489 1.535 0 0 1.673-.978.627-2.792-.628-.907-.906-1.743-.627-2.022zm-5.094 6a.699.699 0 0 0-.697.698c0 2.372.349 10.535 3.837 14.512.14.139.28.208.489.208h5.86c.21 0 .35-.069.489-.208 3.488-3.908 3.837-12.07 3.837-14.512a.7.7 0 0 0-.698-.699H12zm2.023 2.163h9.21c.349 0 .697.278.697.697 0 1.953-.348 7.465-2.72 10.326-.21.14-.35.208-.559.208H9.976a.633.633 0 0 1-.488-.208c-2.372-2.79-2.652-8.373-2.722-10.326 0-.35.28-.697.698-.697zm8.792 4.744s-.071.627-1.745 1.255c-2.303.837-6.348.28-6.348.28.349 1.465.906 2.86 1.743 3.907.07.14.28.209.419.209h3.489c.14 0 .279-.07.418-.209 1.186-1.395 1.745-3.558 2.024-5.442z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/modx.svg b/assets/lib/simple-icons/icons/modx.svg
new file mode 100644
index 00000000..8c83d9e0
--- /dev/null
+++ b/assets/lib/simple-icons/icons/modx.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>MODX</title><path d="M19.145 9.49l4.47-7.19H12.118l-1.24 2.023zM2.92 0v11.497l2.48 1.55 13.435-3.1zm18.16 24V12.503l-1.984-1.263-5.168 8.267zM5.165 14.053l-4.78 7.648h11.497L18.6 10.953Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/mojang.svg b/assets/lib/simple-icons/icons/mojang.svg
deleted file mode 100644
index 579d55dd..00000000
--- a/assets/lib/simple-icons/icons/mojang.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Mojang icon</title><path d="M6.912 0A6.913 6.913 0 000 6.912V24h17.088A6.912 6.912 0 0024 17.088V0h-4.992zm10.111 2.594c.566 0 1.024 2.505 1.024 3.07a1.024 1.024 0 11-2.047 0c0-.565.459-3.07 1.023-3.07zM14.41 5.498c.69.19 2.082 3.77 3.637 2.215 1.448-1.448 2.049 7.164 2.049 7.164l-2.05-1.022s.002-2.048-3.07-4.095c-3.809-2.54-8.189-.867-8.189 3.07 0 8.033 13.309 5.12 13.309 5.12s-.002 2.046-2.05 2.046H5.765c-2.047 0-2.05-2.047-2.05-2.047V7.713c0-2.048 2.05-2.049 2.05-2.049h4.093c2.048 0 4.096 2.049 4.096 2.049 0-1.49.117-2.098.328-2.205a.175.175 0 01.13-.01z"/></svg>
diff --git a/assets/lib/simple-icons/icons/mojangstudios.svg b/assets/lib/simple-icons/icons/mojangstudios.svg
new file mode 100644
index 00000000..b3a168c6
--- /dev/null
+++ b/assets/lib/simple-icons/icons/mojangstudios.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Mojang Studios</title><path d="M12.484 2.077a3.725 3.725 0 1 0 3.725 3.726 3.725 3.725 0 0 0-3.725-3.726zm-12.23.091a.182.182 0 0 0-.181.182v6.905a.182.182 0 0 0 .182.182h1.453a.182.182 0 0 0 .182-.182V4.44a.454.454 0 0 1 .455-.454h.454a.454.454 0 0 1 .454.454v2.994a.182.182 0 0 0 .182.182h1.453a.182.182 0 0 0 .182-.182V4.44a.454.454 0 0 1 .454-.454h.453a.454.454 0 0 1 .454.454l.002 4.816a.182.182 0 0 0 .182.182h1.453a.182.182 0 0 0 .182-.182V4.167a.182.182 0 0 0-.181-.182H7.34a.909.909 0 0 1-.908-.91l.001-.725a.182.182 0 0 0-.182-.182zm18.375 0a.182.182 0 0 0-.182.182v1.454a.182.182 0 0 0 .182.181h3.453v3.18a.454.454 0 0 1-.454.455h-1.363a1.82 1.82 0 0 1-1.81-1.655.18.18 0 0 0-.18-.162h-1.458a.18.18 0 0 0-.182.19 3.634 3.634 0 0 0 3.63 3.444H21.9a.182.182 0 0 0 .182-.182v-.727a.909.909 0 0 1 .908-.908h.727a.182.182 0 0 0 .182-.182V2.35a.182.182 0 0 0-.182-.182zm-6.152 1.817a1.817 1.817 0 0 1 1.824 1.818 1.82 1.82 0 0 1-1.817 1.817 1.817 1.817 0 0 1-.007-3.635zm-8.77 6.361a3.634 3.634 0 0 0-3.634 3.635v3.452a.182.182 0 0 0 .182.182h1.453a.182.182 0 0 0 .182-.182v-3.452a1.817 1.817 0 0 1 1.817-1.817h1.364a.454.454 0 0 1 .453.454v.909a.454.454 0 0 1-.454.454H3.071a.182.182 0 0 0-.181.182v1.453a.182.182 0 0 0 .181.182h2a.454.454 0 0 1 .453.454v1.181a.182.182 0 0 0 .182.182H7.16a.182.182 0 0 0 .182-.182v-5.088a.182.182 0 0 0-.182-.181l-.73-.003a.909.909 0 0 1-.906-.909v-.724a.182.182 0 0 0-.181-.181zm4.932 0a.182.182 0 0 0-.181.182v6.905a.182.182 0 0 0 .181.182h1.454a.182.182 0 0 0 .182-.182v-4.815a.454.454 0 0 1 .454-.454h2.726a.454.454 0 0 1 .454.454v4.815a.182.182 0 0 0 .182.182h1.454a.182.182 0 0 0 .181-.182v-5.088a.182.182 0 0 0-.181-.181l-.728-.001a.909.909 0 0 1-.908-.909v-.726a.182.182 0 0 0-.181-.182zm11.578 0c-1.557 0-2.955 1-3.412 2.489-.744 2.428.984 4.658 3.27 4.776a.18.18 0 0 0 .19-.183v-1.176a.454.454 0 0 1 .454-.454h.909a.454.454 0 0 1 .454.454v1.182a.182.182 0 0 0 .182.181h1.453a.182.182 0 0 0 .182-.181v-3.271a.182.182 0 0 0-.182-.182h-3.27a.182.182 0 0 0-.182.182v.96a.516.516 0 0 1-.606.51 1.175 1.175 0 0 1-.52-.226c-.587-.466-.883-1.285-.557-2.134a1.744 1.744 0 0 1 1.631-1.11h3.504a.182.182 0 0 0 .182-.181v-1.454a.182.182 0 0 0-.182-.182zM1.003 19.325c-.529 0-.922.32-.922.734 0 .361.162.575.586.759.11.039.25.096.306.113.247.072.257.196.216.308-.04.112-.205.16-.363.097-.11-.043-.283-.21-.295-.227a.083.083 0 0 0-.045-.027H.485a.082.082 0 0 0-.064.013l-.386.269a.083.083 0 0 0-.018.118c.223.288.55.44.93.44.567 0 .97-.35.97-.827 0-.313-.17-.536-.629-.73a8.734 8.734 0 0 0-.314-.129c-.203-.066-.213-.163-.179-.256s.17-.134.302-.081c.07.028.244.186.263.205a.097.097 0 0 0 .048.03.082.082 0 0 0 .067-.014l.383-.286a.083.083 0 0 0 .014-.119 1.093 1.093 0 0 0-.869-.39zm18.257 0a1.297 1.297 0 1 0 1.297 1.297 1.297 1.297 0 0 0-1.297-1.297zm3.825 0c-.528 0-.921.32-.921.734 0 .361.161.575.585.759.11.039.25.096.307.113.247.072.256.196.215.308-.04.112-.204.16-.363.097-.11-.043-.283-.21-.295-.227a.083.083 0 0 0-.045-.027.082.082 0 0 0-.065.013l-.385.269a.083.083 0 0 0-.019.118c.223.288.55.44.93.44.568 0 .971-.35.971-.827 0-.313-.17-.536-.63-.73a9.661 9.661 0 0 0-.313-.129c-.204-.066-.213-.163-.18-.256.034-.093.171-.134.302-.081.07.028.245.186.263.205a.097.097 0 0 0 .049.03.082.082 0 0 0 .066-.014l.383-.286a.083.083 0 0 0 .014-.119 1.093 1.093 0 0 0-.869-.39zm-19.443.066a.092.092 0 0 0-.092.092v.46a.092.092 0 0 0 .092.091h.55a.092.092 0 0 1 .092.092v1.635a.092.092 0 0 0 .092.092h.536a.092.092 0 0 0 .092-.092v-1.635a.092.092 0 0 1 .092-.092h.55a.092.092 0 0 0 .092-.092v-.459a.092.092 0 0 0-.092-.092zm3.878 0a.092.092 0 0 0-.092.092v1.292c0 .755.337 1.144 1.095 1.144.738 0 1.096-.41 1.096-1.147v-1.289a.092.092 0 0 0-.092-.092h-.525a.092.092 0 0 0-.092.092v1.223c0 .41-.112.553-.387.553-.274 0-.386-.143-.386-.553v-1.223a.092.092 0 0 0-.092-.092zm3.985 0a.092.092 0 0 0-.092.092v2.278a.092.092 0 0 0 .092.092h.764c.87 0 1.412-.473 1.412-1.238 0-.751-.522-1.224-1.409-1.224zm4.061 0a.092.092 0 0 0-.092.092v2.278c0 .051.041.092.092.092h.552a.092.092 0 0 0 .092-.092v-2.278a.092.092 0 0 0-.092-.092zm-3.363.63h.04c.467 0 .704.18.704.594 0 .428-.237.609-.71.609h-.034a.093.093 0 0 1-.094-.092v-1.02a.093.093 0 0 1 .094-.092zm7.052.022a.579.579 0 0 1 .584.58.58.58 0 0 1-.58.578.579.579 0 0 1-.004-1.158z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/moleculer.svg b/assets/lib/simple-icons/icons/moleculer.svg
index d1b12bd7..069c67e7 100644
--- a/assets/lib/simple-icons/icons/moleculer.svg
+++ b/assets/lib/simple-icons/icons/moleculer.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Moleculer icon</title><path d="M15.442.718a2.58 2.58 0 0 0-2.579 2.579 2.58 2.58 0 0 0 1.368 2.275L12.809 8.27a3.505 3.505 0 0 0-1.077-.172 3.505 3.505 0 0 0-3.505 3.505 3.505 3.505 0 0 0 .085.745l-2.83 1.036a2.97 2.97 0 0 0-2.513-1.39A2.97 2.97 0 0 0 0 14.962a2.97 2.97 0 0 0 2.97 2.97 2.97 2.97 0 0 0 2.969-2.97 2.97 2.97 0 0 0-.072-.634l2.716-1.193a3.505 3.505 0 0 0 3.15 1.972 3.505 3.505 0 0 0 2.129-.724l2.276 2.167a4.305 4.305 0 0 0-.749 2.426 4.305 4.305 0 0 0 4.306 4.305A4.305 4.305 0 0 0 24 18.977a4.305 4.305 0 0 0-4.305-4.305 4.305 4.305 0 0 0-2.718.969l-2.424-1.964a3.505 3.505 0 0 0 .684-2.074 3.505 3.505 0 0 0-1.521-2.89l1.204-2.891a2.58 2.58 0 0 0 .522.054 2.58 2.58 0 0 0 2.58-2.58 2.58 2.58 0 0 0-2.58-2.578Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Moleculer</title><path d="M15.442.718a2.58 2.58 0 0 0-2.579 2.579 2.58 2.58 0 0 0 1.368 2.275L12.809 8.27a3.505 3.505 0 0 0-1.077-.172 3.505 3.505 0 0 0-3.505 3.505 3.505 3.505 0 0 0 .085.745l-2.83 1.036a2.97 2.97 0 0 0-2.513-1.39A2.97 2.97 0 0 0 0 14.962a2.97 2.97 0 0 0 2.97 2.97 2.97 2.97 0 0 0 2.969-2.97 2.97 2.97 0 0 0-.072-.634l2.716-1.193a3.505 3.505 0 0 0 3.15 1.972 3.505 3.505 0 0 0 2.129-.724l2.276 2.167a4.305 4.305 0 0 0-.749 2.426 4.305 4.305 0 0 0 4.306 4.305A4.305 4.305 0 0 0 24 18.977a4.305 4.305 0 0 0-4.305-4.305 4.305 4.305 0 0 0-2.718.969l-2.424-1.964a3.505 3.505 0 0 0 .684-2.074 3.505 3.505 0 0 0-1.521-2.89l1.204-2.891a2.58 2.58 0 0 0 .522.054 2.58 2.58 0 0 0 2.58-2.58 2.58 2.58 0 0 0-2.58-2.578Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/momenteo.svg b/assets/lib/simple-icons/icons/momenteo.svg
new file mode 100644
index 00000000..934f8dd8
--- /dev/null
+++ b/assets/lib/simple-icons/icons/momenteo.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Momenteo</title><path d="M17.925 6.615c-.6.01-1.154.323-1.472.831-.348.41-3.163 3.98-4.142 5.22l.765.968c1.036-1.306 4.096-5.169 4.243-5.348a.765.765 0 011.265 0c.344.42 1.624 2.047 2.703 3.408.482.591.926 1.213 1.328 1.862.626 1.043-.395 2.02-.792 2.457l-3.254-4.098a.811.811 0 00-1.25-.016L14.2 15.836 7.548 7.447a1.774 1.774 0 00-3.02.024c-.059.067-1.706 2.156-2.989 3.776-.528.701-.956 1.33-1.178 1.7-1.048 1.75.441 3.462 1.239 4.165.174.16.399.257.636.272a.727.727 0 00.677-.368l3.145-3.97s2.882 3.644 3.227 4.07a.64.64 0 001.033-.005c.198-.253.76-.962 1.373-1.733l-.765-.964c-.548.69-1.021 1.286-1.127 1.426l-3.118-3.938a.811.811 0 00-1.25.016l-3.254 4.099c-.397-.438-1.416-1.415-.792-2.458a17.57 17.57 0 011.329-1.861c1.078-1.362 2.358-2.989 2.703-3.408a.765.765 0 011.264 0l7 8.823a.64.64 0 001.034.005c.345-.426 3.227-4.07 3.227-4.07l3.146 3.968a.727.727 0 00.675.367c.238-.015.463-.11.638-.272.797-.702 2.286-2.414 1.238-4.165-.222-.37-.65-1-1.179-1.7-1.282-1.621-2.929-3.71-2.989-3.777a1.774 1.774 0 00-1.546-.854z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/monero.svg b/assets/lib/simple-icons/icons/monero.svg
index 3e7f1f66..ef468d51 100644
--- a/assets/lib/simple-icons/icons/monero.svg
+++ b/assets/lib/simple-icons/icons/monero.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Monero icon</title><path d="M12 0C5.365 0 0 5.373 0 12.015c0 1.335.228 2.607.618 3.81h3.577V5.729L12 13.545l7.805-7.815v10.095h3.577c.389-1.203.618-2.475.618-3.81C24 5.375 18.635 0 12 0zm-1.788 15.307l-3.417-3.421v6.351H1.758C3.87 21.689 7.678 24 12 24s8.162-2.311 10.245-5.764h-5.04v-6.351l-3.386 3.421-1.788 1.79-1.814-1.79h-.005z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Monero</title><path d="M12 0C5.365 0 0 5.373 0 12.015c0 1.335.228 2.607.618 3.81h3.577V5.729L12 13.545l7.805-7.815v10.095h3.577c.389-1.203.618-2.475.618-3.81C24 5.375 18.635 0 12 0zm-1.788 15.307l-3.417-3.421v6.351H1.758C3.87 21.689 7.678 24 12 24s8.162-2.311 10.245-5.764h-5.04v-6.351l-3.386 3.421-1.788 1.79-1.814-1.79h-.005z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/moneygram.svg b/assets/lib/simple-icons/icons/moneygram.svg
new file mode 100644
index 00000000..63cef3f9
--- /dev/null
+++ b/assets/lib/simple-icons/icons/moneygram.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>MoneyGram</title><path d="M24 12c0 6.6274-5.3726 12-12 12S0 18.6274 0 12c0-1.8257.4071-3.5554 1.1374-5.1051C.6514 8.1257.433 9.3446.433 10.4863c0 5.4334 4.3868 6.2203 6.2537 6.2023 2.8371-.0257 6.1543-1.416 8.9485-3.9909l-.4714 2.6494c-.1054.606.2906 1.1392.8957 1.1426h.2503c.6274 0 1.0732-.5108 1.1863-1.1426l1.0063-5.6622c.12-.6283-.2932-1.14-.9214-1.14h-5.6726c-.6309 0-1.2077.3342-1.32.9677l-.0446.2554c-.09.6026.33 1.0569.9317 1.0569h2.9589a9.48 9.48 0 0 0-.1414.1388c-2.04 1.9312-4.5558 2.988-6.6403 2.988-2.0803 0-4.41-1.3123-4.41-4.2686C3.2426 3.5546 8.9906 0 12 0c6.6137 0 12 5.3726 12 12"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/mongodb.svg b/assets/lib/simple-icons/icons/mongodb.svg
index 0f595f10..a4c81748 100644
--- a/assets/lib/simple-icons/icons/mongodb.svg
+++ b/assets/lib/simple-icons/icons/mongodb.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>MongoDB icon</title><path d="M17.18 9.518c-1.263-5.56-4.242-7.387-4.562-8.086C12.266.939 11.885 0 11.885 0c-.002.019-.004.031-.005.049v.013h-.001c-.002.015-.003.025-.004.039v.015h-.002c0 .01-.002.018-.002.026v.026h-.003c-.001.008-.001.018-.003.025v.021h-.002c0 .007 0 .015-.002.021v.02h-.002c0 .01-.001.022-.002.032v.002c-.003.017-.006.034-.009.05v.008h-.002c-.001.004-.003.008-.003.012v.017h-.003v.022h-.005v.018h-.005v.021h-.004v.019h-.004v.017h-.006v.014h-.004v.018h-.004v.014h-.005v.013H11.8v.015h-.004c-.001.001-.001.003-.001.004v.01h-.003c-.001.002-.001.004-.001.006v.006h-.002c-.001.003-.002.008-.002.01-.003.007-.007.014-.01.021v.002c-.002.002-.004.005-.005.007v.008h-.004v.008h-.005v.008h-.003v.01h-.006v.014h-.004v.004h-.004v.008h-.004v.011h-.004v.008h-.006v.011h-.004v.008h-.005v.008h-.003v.01h-.005v.008h-.004v.006h-.004v.008h-.006V.76h-.004v.006h-.005v.008h-.004v.011h-.005v.004h-.003v.008h-.006v.004h-.004v.01h-.004v.004h-.004v.008h-.005v.006h-.003l-.002.004v.004h-.002c-.001.002-.002.002-.002.004v.001h-.001c-.001.003-.002.005-.004.007v.003h-.001c-.005.006-.008.012-.012.018v.001c-.002.002-.007.006-.009.01v.002h-.001c-.001.001-.003.002-.003.003v.003h-.002l-.003.003v.001h-.001c0 .001-.002.002-.003.004v.004h-.003l-.002.002v.002h-.002c0 .002-.002.002-.002.003v.003h-.004c0 .001-.001.002-.002.003V.92h-.003v.004h-.004V.93h-.004v.008h-.005V.93h-.005v.004h-.004V.94h-.005v.008h-.005v.004h-.004v.006h-.004v.004h-.004V.97h-.006v.004h-.004V.98h-.005v.004h-.004v.005h-.005v.01h-.002v.004h-.006v.005h-.004v.002h-.004v.004h-.005v.01h-.004v.004h-.005v.004h-.004v.006h-.005v.004h-.005v.004h-.004v.004h-.004v.01h-.004v.005h-.006v.004h-.004v.004h-.005v.006h-.004v.004h-.005v.007h-.004v.004h-.006V1.1h-.002v.004h-.004v.004h-.005v.004h-.004v.006h-.005v.004h-.003c-.001.001-.001.002-.001.002v.002h-.002l-.004.004s-.002.002-.004.003v.006h-.004v.005h-.004v.004h-.004v.004h-.003l-.003.003v.003h-.002l-.002.002v.003h-.002c-.005.006-.007.01-.014.016-.002.002-.008.007-.012.01-.012.008-.027.021-.039.032-.008.005-.016.012-.022.017v.001h-.001c-.016.013-.031.025-.049.039v.001c-.024.02-.047.039-.074.062V1.34h-.002c-.057.047-.117.1-.186.159V1.5h-.001c-.169.148-.37.338-.595.568l-.015.015-.004.004C9 3.494 6.857 6.426 6.631 11.164c-.02.392-.016.773.006 1.144v.009c.109 1.867.695 3.461 1.428 4.756v.001c.292.516.607.985.926 1.405v.001c1.102 1.455 2.227 2.317 2.514 2.526.441 1.023.4 2.779.4 2.779l.644.215s-.131-1.701.053-2.522c.057-.257.192-.476.349-.662.106-.075.42-.301.797-.645.018-.019.028-.036.044-.054 1.521-1.418 4.362-4.91 3.388-10.599z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>MongoDB</title><path d="M17.193 9.555c-1.264-5.58-4.252-7.414-4.573-8.115-.28-.394-.53-.954-.735-1.44-.036.495-.055.685-.523 1.184-.723.566-4.438 3.682-4.74 10.02-.282 5.912 4.27 9.435 4.888 9.884l.07.05A73.49 73.49 0 0111.91 24h.481c.114-1.032.284-2.056.51-3.07.417-.296.604-.463.85-.693a11.342 11.342 0 003.639-8.464c.01-.814-.103-1.662-.197-2.218zm-5.336 8.195s0-8.291.275-8.29c.213 0 .49 10.695.49 10.695-.381-.045-.765-1.76-.765-2.405z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/monkeytie.svg b/assets/lib/simple-icons/icons/monkeytie.svg
index 20356ab2..1b64d9c4 100644
--- a/assets/lib/simple-icons/icons/monkeytie.svg
+++ b/assets/lib/simple-icons/icons/monkeytie.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Monkey tie icon</title><path d="M20.001 0h-16C1.791 0 0 1.791 0 4.001v15.998C0 22.209 1.791 24 4.001 24h16C22.209 24 24 22.209 24 19.999V4.001C24 1.791 22.209 0 20.001 0zm-7.666 16.295l-.866-6.759-2.579 4.638-2.583-4.623-.858 6.744h-1.93l1.4-10.086H6.43L8.888 10.8l2.454-4.591h1.514l1.397 10.086h-1.918zm6.529-5.736h-1.585v3.257c0 1.095.087 1.151 1.096 1.151h.49l-.171 1.472h-1.293c-1.354 0-1.93-.95-1.93-1.89v-3.997h-1.027l.156-1.47h.855V7.504l1.79-.188v1.775h1.588v1.467h.031zm1.677 5.88h-1.484l.159-1.485h1.487l-.172 1.479.01.006z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>monkey tie</title><path d="M12.002 0C9.79 0 7.575.71 5.722 2.127a.472.472 0 00-.093.658.46.46 0 00.654.093 9.404 9.404 0 0111.44 0c.202.16.5.116.653-.093a.474.474 0 00-.093-.658A10.323 10.323 0 0012.003 0zm.03 3.11a11.947 11.947 0 00-5.966 1.608 13.784 13.784 0 00-4.83 4.747c-.303.536.444 1.021.8.497a12.816 12.816 0 014.494-4.43 11.015 11.015 0 015.5-1.481c1.905.003 3.78.507 5.432 1.462 1.71.977 3.26 2.457 4.503 4.45a.46.46 0 00.414.23.46.46 0 00.4-.252.461.461 0 00-.022-.474v-.002c-1.31-2.12-2.982-3.71-4.834-4.77A11.795 11.795 0 0012.03 3.11zM12 6.164a9.27 9.27 0 00-3.71.73c-1.643.706-2.97 1.88-4.064 3.343-1.096 1.46-1.97 3.213-2.73 5.102a.474.474 0 00.262.612c.375.134.552-.144.6-.267.985-2.46 2.16-4.624 3.697-6.14a8.28 8.28 0 012.6-1.784 8.415 8.415 0 013.34-.648 9.51 9.51 0 012.98.447 7.345 7.345 0 013.39 2.25c.898 1.057 1.557 2.423 1.917 4.09.172.83.255 1.675.255 2.524a9.204 9.204 0 01-.17 1.837.47.47 0 00.355.556.472.472 0 00.558-.36c.134-.67.2-1.351.19-2.033 0-.916-.09-1.827-.272-2.722a11.155 11.155 0 00-1.207-3.2 8.394 8.394 0 00-3.288-3.232c-1.358-.731-2.95-1.104-4.7-1.104zm.102 3.076a7.51 7.51 0 00-2.214.3 5.317 5.317 0 00-1.45.7 6.552 6.552 0 00-1.787 1.906c-.702 1.093-1.19 2.33-1.698 3.479a17.31 17.31 0 01-.793 1.626c-.27.478-.594.92-.964 1.314-.418.459.216 1.094.665.662v.002c.763-.78 1.28-1.754 1.75-2.776.348-.76.664-1.541 1.007-2.277.247-.543.53-1.065.846-1.567A5.4 5.4 0 019.2 10.865c.718-.425 1.603-.685 2.802-.685a5.82 5.82 0 012.565.538c.518.25.986.59 1.385 1.003.6.633 1.05 1.395 1.322 2.226a8.63 8.63 0 01.438 2.776c-.002.98-.145 1.955-.425 2.895a8.869 8.869 0 01-1.21 2.563.472.472 0 00.122.65.465.465 0 00.646-.11 9.887 9.887 0 001.34-2.836c.3-1.024.458-2.09.46-3.157a9.76 9.76 0 00-.385-2.753c-.39-1.317-1.084-2.5-2.128-3.363a5.768 5.768 0 00-1.824-1.008 7.525 7.525 0 00-2.204-.364zm-.094 3.083c-.726.01-1.425.27-1.986.73a3.712 3.712 0 00-1.23 1.779c-.116.358-.185.749-.283 1.189a8.902 8.902 0 01-.782 2.249c-.438.838-1.11 1.757-2.22 2.72a.474.474 0 00-.052.66c.168.198.465.22.66.05.7-.6 1.32-1.285 1.846-2.038a8.727 8.727 0 001.266-2.705c.11-.393.187-.754.254-1.065a8.48 8.48 0 01.19-.777c.168-.525.49-.988.922-1.33a2.264 2.264 0 011.405-.522c.31.005.617.077.898.213.458.23.84.57 1.12.996.282.414.44.9.45 1.402.02 1.09-.11 2.18-.397 3.234a9.355 9.355 0 01-2.403 4.09c-.18.186-.18.48.002.665.272.242.566.113.662-.005a10.309 10.309 0 002.642-4.495 12.48 12.48 0 00.438-3.49 3.37 3.37 0 00-.284-1.327 3.843 3.843 0 00-1.245-1.567 3.125 3.125 0 00-1.873-.656zm-.015 3.08a.468.468 0 00-.466.47h.002a7.5 7.5 0 01-.244 1.972 7.319 7.319 0 01-1.163 2.395c-.61.819-1.27 1.59-1.994 2.308a.474.474 0 00.015.667.468.468 0 00.662-.016c1.05-1.096 1.958-2.1 2.622-3.252a7.46 7.46 0 00.76-1.868c.186-.72.282-1.461.274-2.205a.47.47 0 00-.468-.47z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/monogram.svg b/assets/lib/simple-icons/icons/monogram.svg
deleted file mode 100644
index 8d2a4342..00000000
--- a/assets/lib/simple-icons/icons/monogram.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Monogram icon</title><path d="M23.158 0v23.503c0 .451-.533.668-.83.338L12 12.38 3.301 2.73.842 0h22.316zM11.029 13.46L1.672 23.841c-.297.33-.83.111-.83-.338V0l10.187 13.46z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/monoprix.svg b/assets/lib/simple-icons/icons/monoprix.svg
new file mode 100644
index 00000000..1ba425ce
--- /dev/null
+++ b/assets/lib/simple-icons/icons/monoprix.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Monoprix</title><path d="M21.072 8.042C21.072 3.612 16.981 0 12 0 6.991 0 2.928 3.612 2.928 8.042S6.99 16.085 12 16.085c.282 0 .564-.029.847-.043.62.339.747.706.761.988.142 1.608-2.44 5.08-4.303 6.49l.254.48c.113-.028 10.723-3.47 11.429-15.026.056-.283.07-.565.084-.875v-.043z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/monster.svg b/assets/lib/simple-icons/icons/monster.svg
index 304e57f4..6cde41d6 100644
--- a/assets/lib/simple-icons/icons/monster.svg
+++ b/assets/lib/simple-icons/icons/monster.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Monster icon</title><path d="M0 0V24H5.42V12.39L12 18.19L18.58 12.39V24H24V0L12 11.23L0 0Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Monster</title><path d="M0 0V24H5.42V12.39L12 18.19L18.58 12.39V24H24V0L12 11.23L0 0Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/monzo.svg b/assets/lib/simple-icons/icons/monzo.svg
index 71be16fe..a795cbda 100644
--- a/assets/lib/simple-icons/icons/monzo.svg
+++ b/assets/lib/simple-icons/icons/monzo.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Monzo icon</title><path d="M11.99 17.26H12l5.93-5.92v11.04a.45.45-180 0 0 .76.31l4.98-4.97a1.11 1.11-180 0 0 .32-.8V5.29l.01-.01-3.98-3.97a.44.44-180 0 0-.63 0L12 8.69l-7.41-7.4a.44.44-180 0 0-.63 0L0 5.28h.01H0v11.66a1.11 1.11-180 0 0 .32.79l4.97 4.98a.45.45-180 0 0 .76-.32l.01-11.06 5.93 5.94z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Monzo</title><path d="M4.244 1.174a.443.443 0 00-.271.13l-3.97 3.97-.001.001c3.884 3.882 8.093 8.092 11.748 11.748v-8.57L4.602 1.305a.443.443 0 00-.358-.131zm15.483 0a.443.443 0 00-.329.13L12.25 8.456v8.568L24 5.275c-1.316-1.322-2.647-2.648-3.97-3.97a.443.443 0 00-.301-.131zM0 5.979l.002 10.955c0 .294.118.577.326.785l4.973 4.976c.28.282.76.083.758-.314V12.037zm23.998.003l-6.06 6.061v10.338c-.004.399.48.6.76.314l4.974-4.976c.208-.208.326-.49.326-.785z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/moo.svg b/assets/lib/simple-icons/icons/moo.svg
index 1922a13d..0eff470a 100644
--- a/assets/lib/simple-icons/icons/moo.svg
+++ b/assets/lib/simple-icons/icons/moo.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Moo icon</title><path d="M11.964 24c-2.525 0-4.801-1.107-6.34-3.138-1.109-1.417-1.661-3.078-1.661-4.86 0-.555.06-1.109.185-1.602.299-1.785 1.59-4.678 3.93-8.678C9.805 2.767 11.215.554 11.289.554c.123-.246.308-.554.675-.554.372 0 .555.308.741.555 0 0 1.477 2.215 3.199 5.168 2.342 4 3.631 6.893 3.939 8.678.131.492.193 1.045.193 1.6 0 1.785-.555 3.445-1.65 4.861C16.766 22.834 14.424 24 11.964 24zm0-2.092c1.905 0 3.629-.861 4.801-2.341.799-1.044 1.229-2.337 1.229-3.69 0-.432-.059-.801-.123-1.229-.246-1.354-1.293-3.692-3.074-6.833-1.357-2.399-2.525-4.121-2.525-4.121l-.31-.433-.254.37s-1.171 1.785-2.521 4.125c-1.843 3.149-2.893 5.474-3.072 6.839-.061.431-.123.8-.123 1.229 0 1.355.429 2.587 1.229 3.693 1.11 1.538 2.831 2.399 4.74 2.399l.003-.008z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Moo</title><path d="M11.964 24c-2.525 0-4.801-1.107-6.34-3.138-1.109-1.417-1.661-3.078-1.661-4.86 0-.555.06-1.109.185-1.602.299-1.785 1.59-4.678 3.93-8.678C9.805 2.767 11.215.554 11.289.554c.123-.246.308-.554.675-.554.372 0 .555.308.741.555 0 0 1.477 2.215 3.199 5.168 2.342 4 3.631 6.893 3.939 8.678.131.492.193 1.045.193 1.6 0 1.785-.555 3.445-1.65 4.861C16.766 22.834 14.424 24 11.964 24zm0-2.092c1.905 0 3.629-.861 4.801-2.341.799-1.044 1.229-2.337 1.229-3.69 0-.432-.059-.801-.123-1.229-.246-1.354-1.293-3.692-3.074-6.833-1.357-2.399-2.525-4.121-2.525-4.121l-.31-.433-.254.37s-1.171 1.785-2.521 4.125c-1.843 3.149-2.893 5.474-3.072 6.839-.061.431-.123.8-.123 1.229 0 1.355.429 2.587 1.229 3.693 1.11 1.538 2.831 2.399 4.74 2.399l.003-.008z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/morrisons.svg b/assets/lib/simple-icons/icons/morrisons.svg
new file mode 100644
index 00000000..9eb7000b
--- /dev/null
+++ b/assets/lib/simple-icons/icons/morrisons.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Morrisons</title><path d="M11.514 11.486c0 .28-.224.523-.523.523a.511.511 0 0 1-.524-.523c0-.28.225-.523.524-.523.28 0 .504.243.523.523m2.318-2.112a.52.52 0 0 1-.505.523.519.519 0 0 1-.523-.504.52.52 0 0 1 .504-.524.507.507 0 0 1 .524.505m-1.234-1.57c0 .71-.617 1.103-.617 1.103s-.617-.393-.617-1.103.617-1.103.617-1.103.617.392.617 1.103M10 8.869s-.15.71.355 1.215c.505.505 1.215.337 1.215.337s.15-.71-.355-1.215C10.71 8.72 10 8.869 10 8.869m-.822 1.178c.616.355.654 1.065.654 1.065s-.654.337-1.271-.019c-.617-.355-.654-1.084-.654-1.084s.654-.317 1.27.038m-.317 2.336s.168.71.822.953c.673.243 1.253-.205 1.253-.205s-.15-.71-.823-.953c-.673-.243-1.252.205-1.252.205m4.448-.747c-.299.635-1.028.728-1.028.728s-.392-.616-.093-1.252c.299-.635 1.028-.729 1.028-.729s.392.598.093 1.253m2.785-1.608s-.654-.336-1.27.019c-.617.355-.655 1.084-.655 1.084s.654.336 1.271-.019c.617-.374.654-1.084.654-1.084m-1.757 3.308c-.672.243-1.252-.205-1.252-.205s.15-.71.823-.953c.672-.243 1.252.186 1.252.186s-.15.73-.823.972M5.607 17.28c-.86 0-1.514-.616-1.514-1.439 0-.822.655-1.44 1.514-1.44.86 0 1.514.618 1.514 1.44 0 .823-.654 1.44-1.514 1.44m0-2.15c-.392 0-.691.318-.691.729s.299.729.691.729c.393 0 .692-.318.692-.73 0-.41-.299-.728-.692-.728m6.804 2.056v-2.673a.04.04 0 0 0-.037-.037h-.73a.04.04 0 0 0-.037.037v2.673a.04.04 0 0 0 .038.037h.729a.04.04 0 0 0 .037-.037m4.449.093c-.86 0-1.514-.616-1.514-1.439 0-.822.654-1.44 1.514-1.44s1.514.618 1.514 1.44c0 .823-.654 1.44-1.514 1.44m0-2.15c-.393 0-.692.318-.692.729s.3.729.692.729c.392 0 .691-.318.691-.73 0-.41-.299-.728-.691-.728m4.486 2.056v-1.701c0-.71-.337-1.065-.99-1.065-.319 0-.636.13-.842.373v-.261a.04.04 0 0 0-.037-.038h-.71a.04.04 0 0 0-.038.038v2.654a.04.04 0 0 0 .037.037h.73a.04.04 0 0 0 .037-.037v-1.234c0-.112.018-.224.037-.317a.64.64 0 0 1 .617-.468c.243 0 .336.112.336.449v1.57a.04.04 0 0 0 .038.037h.729c.037 0 .056-.018.056-.037M3.7 17.224h-.748a.04.04 0 0 1-.037-.037c0-.841-.056-1.794-.094-2.094-.28.393-.523.823-.71 1.271 0 .02-.019.02-.037.02h-.411c-.02 0-.038 0-.038-.02a6.507 6.507 0 0 0-.71-1.27c-.019.299-.094 1.252-.094 2.093a.04.04 0 0 1-.037.037H.037A.04.04 0 0 1 0 17.187c0-1.14.075-2.636.28-3.402 0-.019.02-.019.038-.037h.58c.018 0 .018 0 .018.018.374.412.691.879.934 1.365a6.79 6.79 0 0 1 .935-1.365l.019-.018h.58a.04.04 0 0 1 .037.037c.186.766.28 2.262.28 3.402.037.019.019.037 0 .037m4.617-.037V16.12c0-.13.018-.261.056-.392a.662.662 0 0 1 .635-.486h.169l.018-.019v-.729a.04.04 0 0 0-.037-.037h-.094a.885.885 0 0 0-.747.411v-.336a.04.04 0 0 0-.038-.038h-.71a.04.04 0 0 0-.037.038v2.673a.04.04 0 0 0 .037.037h.73c0-.019.018-.037.018-.056m2 .037h-.73a.04.04 0 0 1-.037-.037v-2.673a.04.04 0 0 1 .038-.037h.71a.04.04 0 0 1 .037.037v.336a.984.984 0 0 1 .748-.41h.094a.04.04 0 0 1 .037.037v.71c0 .019 0 .019-.019.019 0 0-.018.018-.037 0h-.131a.66.66 0 0 0-.635.486c-.038.13-.057.261-.057.392v1.066c.02.056.02.074-.018.074.018 0 0 0 0 0m4.747-.86c0 .58-.43.898-1.158.898-.43 0-.767-.15-1.14-.412-.02 0-.02-.018-.02-.037v-.019l.318-.486c0-.018.02-.018.038-.018h.018c.318.205.543.299.823.299.187 0 .299-.056.299-.168v-.02c0-.13-.112-.186-.411-.28l-.112-.037c-.468-.13-.898-.336-.898-.86v-.018c0-.524.43-.86 1.103-.86.337 0 .654.093.954.261.018 0 .018.02.018.038v.019l-.28.542c0 .018-.019.018-.038.018h-.018c-.28-.13-.449-.187-.636-.187-.168 0-.28.075-.28.169v.018c0 .131.168.187.448.262l.094.037c.449.113.878.337.878.841m8.038-.86-.094-.037c-.28-.074-.448-.13-.448-.261v-.02c0-.111.112-.167.28-.167.187 0 .374.056.636.187h.018c.019 0 .019 0 .038-.02l.299-.485v-.019c0-.018 0-.018-.019-.037a1.925 1.925 0 0 0-.953-.262c-.673 0-1.103.318-1.103.86v.019c0 .523.43.729.897.86l.112.037c.28.093.412.15.412.28v.019c-.02.112-.113.168-.3.168-.28 0-.504-.093-.822-.299h-.019c-.018 0-.018 0-.037.019l-.318.486v.018c0 .02 0 .02.019.038.374.262.71.411 1.14.411.73 0 1.159-.318 1.159-.878v-.02c-.019-.522-.449-.747-.897-.896m-10.617-2c0 .28-.224.504-.505.504a.503.503 0 0 1-.504-.504c0-.28.224-.505.504-.505.28.019.505.224.505.505"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/moscowmetro.svg b/assets/lib/simple-icons/icons/moscowmetro.svg
index 86ce57fa..5cb8060b 100644
--- a/assets/lib/simple-icons/icons/moscowmetro.svg
+++ b/assets/lib/simple-icons/icons/moscowmetro.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Moscow Metro icon</title><path d="M16.603 11.85l-2.481-6.26-2.092 3.66-2.092-3.66-2.481 6.262H6.74v.941h3.736v-.941h-.553l.538-1.555 1.569 2.57 1.569-2.57.538 1.555h-.553v.941h3.751v-.941zm5.335-1.912A9.933 9.933 0 0 0 12 0C6.516 0 2.062 4.453 2.062 9.938c0 2.75 1.121 5.23 2.914 7.023a.804.804 0 0 0 1.375-.568.825.825 0 0 0-.239-.582 8.303 8.303 0 0 1-2.42-5.873c0-4.588 3.72-8.324 8.308-8.324 4.588 0 8.324 3.736 8.324 8.324a8.289 8.289 0 0 1-2.436 5.888l-7.024 7.023L12 24l7.039-7.039a9.891 9.891 0 0 0 2.899-7.023Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Moscow Metro</title><path d="M16.603 11.85l-2.481-6.26-2.092 3.66-2.092-3.66-2.481 6.262H6.74v.941h3.736v-.941h-.553l.538-1.555 1.569 2.57 1.569-2.57.538 1.555h-.553v.941h3.751v-.941zm5.335-1.912A9.933 9.933 0 0 0 12 0C6.516 0 2.062 4.453 2.062 9.938c0 2.75 1.121 5.23 2.914 7.023a.804.804 0 0 0 1.375-.568.825.825 0 0 0-.239-.582 8.303 8.303 0 0 1-2.42-5.873c0-4.588 3.72-8.324 8.308-8.324 4.588 0 8.324 3.736 8.324 8.324a8.289 8.289 0 0 1-2.436 5.888l-7.024 7.023L12 24l7.039-7.039a9.891 9.891 0 0 0 2.899-7.023Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/motorola.svg b/assets/lib/simple-icons/icons/motorola.svg
new file mode 100644
index 00000000..3e744bda
--- /dev/null
+++ b/assets/lib/simple-icons/icons/motorola.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Motorola</title><path d="M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12C24.002 5.375 18.632.002 12.007 0H12zm7.327 18.065s-.581-2.627-1.528-4.197c-.514-.857-1.308-1.553-2.368-1.532-.745 0-1.399.423-2.2 1.553-.469.77-.882 1.573-1.235 2.403 0 0-.29-.675-.63-1.343a8.038 8.038 0 0 0-.605-1.049c-.804-1.13-1.455-1.539-2.2-1.553-1.049-.021-1.854.675-2.364 1.528-.948 1.574-1.528 4.197-1.528 4.197h-.864l4.606-15.12 3.56 11.804.024.021.024-.021 3.56-11.804 4.61 15.113h-.862z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/mozilla.svg b/assets/lib/simple-icons/icons/mozilla.svg
index 4006ed1b..507eb669 100644
--- a/assets/lib/simple-icons/icons/mozilla.svg
+++ b/assets/lib/simple-icons/icons/mozilla.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Mozilla icon</title><path d="M0 24V0h24v24H0zM16.39 6.76l-.23.03-.22.04-.21.06-.2.07-.2.07-.19.09-.18.1-.17.11-.17.12-.16.13-.15.14-.14.15-.13.16-.13.17-.11.17-.11.19-.1.19-.09.21-.08-.22-.1-.21-.1-.2-.12-.19-.13-.17-.14-.16-.15-.15-.15-.14-.17-.13-.17-.11-.19-.11-.18-.09-.2-.08-.2-.07-.2-.06-.21-.05-.22-.04-.22-.02-.22-.02h-.43l-.21.02-.2.02-.2.03-.19.05-.18.05-.18.06-.18.07-.16.08-.17.08-.15.1-.15.1-.14.11-.14.12-.13.13-.12.13-.12.14-.11.15-.1.16L7 8.5V6.95H2.65v2.22h1.37v5.86H2.65v2.26h6.33v-2.26H7v-3.81l.01-.21.03-.2.03-.19.04-.18.05-.18.06-.16.07-.16.08-.14.09-.14.11-.12.11-.11.12-.1.14-.09.15-.08.15-.06.17-.05.19-.04.19-.02.21-.01h.17l.16.02.16.03.14.04.14.05.13.06.12.07.11.09.1.1.1.11.08.12.08.14.06.16.06.16.05.19.04.19.03.21.03.23.01.25v6.09h4.3v-2.26H13.7v-3.6l.01-.21.01-.21.02-.2.04-.19.04-.18.05-.18.06-.16.07-.16.08-.14.09-.14.1-.12.12-.11.12-.1.14-.09.14-.08.16-.06.17-.05.19-.04.19-.02.21-.01h.17l.16.02.16.03.14.04.14.05.13.06.12.07.11.09.1.1.09.11.09.12.08.14.06.16.06.16.05.19.04.19.03.21.03.23.01.25v6.09h4.3v-2.26h-1.37v-4.72l-.01-.36-.04-.33-.06-.32-.08-.3-.1-.28-.12-.26-.14-.24-.16-.23-.18-.2-.18-.19-.21-.16-.21-.15-.23-.13-.24-.12-.25-.09-.25-.08-.27-.06-.26-.04-.28-.03h-.52l-.23.02z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Mozilla</title><path d="M0 0v24h24V0zm10.13 6.706c1.481 0 2.858.706 3.352 2.224.565-1.377 1.73-2.224 3.353-2.224 1.87 0 3.565 1.13 3.565 3.564v4.765h1.412v2.26h-4.341v-5.86c0-1.8-.6-2.47-1.765-2.47-1.412 0-1.976 1.024-1.976 2.435V15h1.376v2.259h-4.341v-5.824c0-1.8-.6-2.47-1.765-2.47-1.412 0-1.976 1.024-1.976 2.435V15H9v2.259H2.647V15h1.377V9.176H2.647V6.918H6.99V8.47c.635-1.095 1.693-1.765 3.14-1.765z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/mozillafirefox.svg b/assets/lib/simple-icons/icons/mozillafirefox.svg
deleted file mode 100644
index 3762246e..00000000
--- a/assets/lib/simple-icons/icons/mozillafirefox.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Mozilla Firefox icon</title><path d="M8.855 7.333c.008 0 .004 0 0 0zM6.082 5.947c.007 0 .004 0 0 0zm16.59 2.14c-.5-1.203-1.514-2.503-2.31-2.914.648 1.27 1.023 2.544 1.166 3.495l.002.02c-1.302-3.246-3.51-4.555-5.314-7.404-.09-.145-.182-.289-.27-.441a3.51 3.51 0 01-.128-.238 2.097 2.097 0 01-.171-.456.03.03 0 00-.027-.03.038.038 0 00-.021 0l-.006.002a.037.037 0 00-.009.005.038.038 0 01.005-.007c-2.56 1.5-3.622 4.126-3.894 5.797a6.136 6.136 0 00-2.282.582.294.294 0 00-.146.366.29.29 0 00.392.169 5.567 5.567 0 011.988-.519l.067-.005A5.636 5.636 0 0112 6.5a5.79 5.79 0 011.652.229l.094.03a5.757 5.757 0 01.265.088 5.839 5.839 0 01.191.075c.052.02.103.041.154.063a5.676 5.676 0 01.235.111l.106.054a5.776 5.776 0 01.224.123 5.165 5.165 0 01.141.086 5.895 5.895 0 012.014 2.083c-.615-.432-1.716-.859-2.776-.674 4.142 2.07 3.03 9.201-2.71 8.932a5.113 5.113 0 01-1.498-.29 6.347 6.347 0 01-.339-.137 4.37 4.37 0 01-.194-.093c-1.406-.727-2.567-2.1-2.712-3.768 0 0 .531-1.981 3.806-1.981.354 0 1.366-.988 1.385-1.274-.005-.094-2.009-.891-2.79-1.66-.418-.412-.616-.61-.791-.76a3.436 3.436 0 00-.299-.225 5.335 5.335 0 01-.032-2.814c-1.183.539-2.103 1.39-2.772 2.142h-.006c-.456-.578-.424-2.486-.398-2.884-.006-.025-.34.174-.385.204a8.395 8.395 0 00-1.125.964 10.086 10.086 0 00-1.075 1.29v0A9.72 9.72 0 00.819 9.9c-.003.013-.11.482-.188 1.062a12.736 12.736 0 00-.037.27 7.724 7.724 0 00-.068.66l-.002.034a28.326 28.326 0 00-.023.383l-.001.06c0 6.358 5.156 11.513 11.516 11.513 5.695 0 10.424-4.135 11.35-9.566.02-.147.035-.295.052-.444.23-1.974-.025-4.05-.746-5.786zm-7.862 3.455z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/mozillathunderbird.svg b/assets/lib/simple-icons/icons/mozillathunderbird.svg
deleted file mode 100644
index b1f9c1e3..00000000
--- a/assets/lib/simple-icons/icons/mozillathunderbird.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Mozilla Thunderbird icon</title><path d="M23.7296 10.23c-.225-1.1996-.6936-2.3617-1.3308-3.4113-.1806-.3233-.4172-.6295-.6186-.9185-1.3495-1.8931-2.418-2.5304-2.6241-2.6429-.1874-.1312-.3749-.2624-.5623-.3748-1.7432-1.0872-2.8678-1.2371-2.8678-1.2371-.806-.3374-1.5932-.5248-2.1743-.6186-1.2558-.15-2.3055-.1312-3.2239 0 .15-.2624.2812-.356.3186-.3748.0232 0 .0166 0 0 0-.4498.0375-.9934.3374-1.4807.6373C9.503.6333 10.2153.2583 10.309.202h.0187C9.7655.1646 8.1723.5208 6.804 2.0391 2.549 3.8196 0 7.7183 0 11.973c0 3.224 1.2558 5.5482 2.6241 7.0852 1.2933 1.4058 2.7179 2.1555 3.3926 2.3617.0708.0279.225.0375.225.0375.0187-.0562-.8622-1.462-1.2559-3.149.7873.806 1.7245 1.4246 2.7741 1.537.1125.0188-.3749-.581-.8997-1.3682l.7123.2436 7.8161 2.6054c-.7685.7872-1.7994 1.5557-3.2052 2.2305 0 0 3.149-.2624 4.7047-2.0056-.6373 1.462-2.3805 2.2493-2.3805 2.2493 1.2746-.1875 4.6485-1.1809 6.7853-3.8612 2.4367-3.0365 3.1677-5.8856 2.4367-9.7093zm-6.223 7.1039c-.2436 1.1808-.7497 2.493-1.893 3.7487L1.7993 16.4904c-.3936-1.2558-.581-2.7178-.4686-4.4235.2437.4499.9747.8247 1.4245.8435-1.0496-2.343-.6373-3.955.15-5.0233a635.68 635.68 0 0 1 1.0309 1.5182v-.1125c.0187-.15.0375-.2624.075-.3748-.3562-.5249-.656-.9747-.881-1.2934.4311-.4873.9184-.8434 1.3496-1.0871.0187.2062.0562.3936.1124.6185.075.3187.0937.7873.0562 1.1622v-.0188c0 .075-.0187.15-.0374.225-.0188.075-.225.281-.2812.8247-.0562.581.15.8997.3561 1.1433.2437-.2249.6936-.7872 1.5183-1.1059.8247-.3373 1.3683-.8247 2.418-1.3495.6185-.3186 1.2745-.2812 2.0992-.2437 1.4808.2624 3.4301.7873 5.2483.881.4123.9747.581 2.3804.581 2.418 0 .1311.0188.2436.0188.356-3.224 1.2184-7.0102 2.6054-8.6034 3.0178-.1312.0375-1.5183-1.968-2.8116-3.88-.0187.0375-.0562.0563-.075.075-.0374.0375-.075.075-.0937.1125h-.1124c1.387 2.043 2.8678 4.161 3.0177 4.161 1.4058-.506 5.6044-1.9493 8.6596-2.9989-.0187 2.3055-.581 3.1677-.581 3.1677s.7685-.3 1.5557-1.0871c0 .6372-.1687 2.2867-1.4995 3.8799 0 0 .6935-.1874 1.4807-.5623Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/msi.svg b/assets/lib/simple-icons/icons/msi.svg
new file mode 100644
index 00000000..6261c842
--- /dev/null
+++ b/assets/lib/simple-icons/icons/msi.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>MSI</title><path d="M16.362 10.042c-1.044.56-2.193 1.05-3.7 1.142a4.26 4.26 0 0 1-2.321-.556c-.155-.09-.51-.26-.503-.457.011-.242.582-.303.816-.306 5.262-.178 6.29-2.472 6.286-2.563 0-.083-.09.011-.09.011-1.38 1.777-4.937 1.973-4.937 1.973-.877.121-1.761-.08-2.215-.529a.794.794 0 0 1-.215-.39c-.102.122-.17.25-.291.379-.114.128-.458.499-.484.06-.019-.325.076-.393.2-.586a5.178 5.178 0 0 1 .193-.276c.374-.49.684-.997 1.123-1.402.037-.038.11-.075.09-.11a6.221 6.221 0 0 0-3.624 4.166 6.508 6.508 0 0 0-.23 1.72c0 .62.082 1.209.21 1.75.258 1.073.56 1.817 1.033 2.66.155-.211.219-.491.306-.752.098-.276.166-.642.302-.87.321-.528 2.079-.396 1.599-.763a3.613 3.613 0 0 1-.397-.359 7.083 7.083 0 0 1-.673-.831c-.412-.582-.756-1.285-.79-2.2.469 1.21 1.18 2.222 2.313 2.774.378.182.813.378 1.323.367-1.341-.253-2.162-1.285-2.717-2.374-.087-.17-.208-.332-.25-.476a.4.4 0 0 1-.011-.189c.076-.336.484-.17.726-.083a8.489 8.489 0 0 0 3.602.438 6.678 6.678 0 0 0 1.874-.476c.545-.227 1.04-.518 1.452-.896m-2.34 2.657a8.001 8.001 0 0 1-2.4-.189 3.969 3.969 0 0 1-1.754-.865c-.181-.166-.295-.469-.597-.397-.026.22.151.378.272.514a3.507 3.507 0 0 0 1.573.896c.835.257 2.003.283 2.906.038M11.35 10.22c-.178 0-.771-.098-.786.098-.012.121.245.212.381.25.53.136 1.255.086 1.784.037a8.515 8.515 0 0 0 2.098-.465c.99-.362 1.795-.88 2.457-1.55.181-.18.162-.234-.034-.067a6.365 6.365 0 0 1-1.769 1.032c-1.172.472-2.517.665-4.131.665m6.576-6.717c.136.034.299.027.37.068.133.08.133.273.224.431-.54.091-.718-.302-.972-.585.091.007.227.052.378.086M7.325 16.57c-.393-.613-2.39-3.19-.832-6.989 2.128-5.178 7.88-3.772 8.421-3.557.064-.434.257-.884.764-.994a1.712 1.712 0 0 1 .612 0c-.522.193-1.077.427-1.05.976.022.49.52.835.936.91 0 0 .33.072.567-.075a.019.019 0 0 0 .016-.012c.064-.037.12-.075.204-.105a.979.979 0 0 1 .529-.023c.049.011.143.09.227.087.052 0 .136-.076.211-.087.2-.038.397.072.582.147.125.053.465.099.488.273.011.12-.178.264-.28.34a1.765 1.765 0 0 1-.423.23c.56-.045 1.682-.48 1.512.246-.015.076-.057.14-.042.178.578-.197.76-.685.673-1.372-.076.022-.14.17-.2.215v-.004c0-.196.01-.491-.125-.612.068.359-.121.53-.382.654a6.176 6.176 0 0 0-.695-.975c-.027.113-.012.26-.046.37a.518.518 0 0 0-.438-.351c-.129-.02-.272.022-.427 0-.2-.034-.431-.174-.446-.325-.027-.25.423-.367.65-.428.049.163.117.295.17.45a1.693 1.693 0 0 1 .964-.43c.102 0 .329.037.363.113.079.162-.129.355-.19.427-.037.038-.098.08-.079.102.39-.102.567-.355.84-.544.143.189.196.59.173.858.31-.303.318-.824.291-1.376a1.761 1.761 0 0 1 .749.597 1.943 1.943 0 0 0-.68-.756c-.1-.064-.228-.094-.303-.166-.068-.068-.151-.303-.242-.322-.113-.022-.265.11-.397.118-.238.019-.367-.144-.416-.378-.578.158-.8-.197-.937-.632-.023-.075-.023-.18-.06-.264-.042-.106-.273-.212-.394-.257a1.092 1.092 0 0 0-.548-.068c-.17.026-.294.113-.491.12-.476.027-.971-.18-1.357-.37A8.289 8.289 0 0 1 12.896.113c-.03-.038-.053-.094-.11-.113.125.385.348.707.556 1.005.639.915 1.47 1.58 2.283 2.215a1.308 1.308 0 0 1-.805-.208 4.165 4.165 0 0 1-.65-.416c-.85.726-2.548.81-3.916 1.134.567-.019 1.417.163 1.916.246h-.015c-2.389.094-4.449.794-5.877 2.147.37-.136.706-.306 1.118-.405-.59.537-1.171 1.096-1.644 1.75-.468.647-.967 1.33-.986 2.404.287-.28.578-.642.979-.847a13.108 13.108 0 0 0-.85 2.268c-.197.718-.492 1.913-.02 2.582.03-.238.03-.51.19-.624.28.661.76 1.996 2.26 3.319m5.68-14.095c.114.102.333.273.465.265.208 0 .314-.189.458-.272-.719-.321-1.388-.786-2.034-1.168.098.151.227.28.355.435.239.272.477.506.756.74m-8.05 5.16c.075.155 0 .366.011.517.234-.635.688-1.134 1.119-1.572.023-.026.087-.08.049-.072-.227.11-.355.314-.665.34-.174-.196-.174-.793.06-.922.288.087.477-.162.446-.427-.056-.423-.578-.707-.816-.877.125.159.367.303.423.537.02.083.015.242-.075.268-.133.038-.208-.11-.34-.09-.114.018-.167.219-.19.359a2.76 2.76 0 0 0-.03.529c0 .087.034.219-.03.283-.08-.038-.098-.136-.132-.215-.125-.276-.34-.647-.254-1.013.057-.023.163.007.2-.03.02-.227-.143-.443-.29-.586a.983.983 0 0 0-.926-.227c.211.038.68.068.684.302 0 .087-.102.212-.129.28-.166.408.023.93.22 1.194.113.152.28.295.181.575-.128-.008-.246-.09-.363-.155-.166-.095-.34-.185-.423-.329-.083-.162-.09-.325-.204-.446-.284-.321-.896-.544-1.342-.272.378-.011.73.011.877.26a1.119 1.119 0 0 1 .12.454c.008.068-.01.16.023.208.057.098.235.083.34.144.14.08.227.298.382.435a1.02 1.02 0 0 0 .133.102c.242.143.816.196.937.446m3.046 10.057c-.578.306-.914.907-.986 1.67.113-.302.43-.46.767-.615.216-.099.601-.197.662-.397.053-.155.037-.405-.038-.507-.083-.113-.227-.147-.405-.15m1.406 2.683a1.708 1.708 0 0 0-.907 1.38c.117-.28.424-.398.734-.53.189-.076.517-.162.578-.317.045-.125.045-.326-.023-.416-.064-.095-.283-.167-.382-.121m1.701 1.625c-.321.287-.506.88-.476 1.444.08-.321.325-.446.605-.631.162-.102.491-.261.552-.42a.469.469 0 0 0-.118-.461c-.181-.151-.453-.026-.567.072m2.627.567c-.313.276-.415.831-.34 1.432.076-.302.238-.45.454-.635.128-.113.332-.264.374-.42.068-.256-.208-.51-.491-.377m.544-6.085c.174.022.34.113.476.158.011-.049-.05-.071-.08-.098-.385-.329-1.277-.196-1.473.208.034.072.155.076.173.162.016.091-.117.223-.185.295-.177.193-.344.303-.544.439-.098.068-.185.181-.302.17.06-.238.189-.333.29-.537.076-.136.25-.499.152-.646-.057-.095-.355-.046-.4-.151-.039-.087.03-.197.079-.25.14-.151.43-.234.687-.287-.393 0-1.103.132-1.27.457-.113.22-.015.53.231.556.095.306-.151.684-.333.824a.344.344 0 0 1-.15.083c-.303.038-.22-.31-.296-.53-.026-.075-.075-.139-.12-.2-.084.783.086 1.554.264 2.17-.019-.215.015-.43.151-.495.31-.151.726.075 1.089.098.378.019.597-.212.858-.22.136 0 .234.092.359.061.087-.022.159-.181.234-.28a1.017 1.017 0 0 1 .265-.256c.359-.208.73.075.967.208-.211-.39-.914-.688-1.451-.428-.113.053-.204.193-.336.265-.205.121-.48.087-.745.076-.09-.008-.189.019-.26-.042.067-.34.392-.351.634-.499.348-.208.68-.525.718-1.02 0-.068-.026-.163.027-.227.049-.068.174-.076.29-.06m3.138 5.204c-.136-.17-.446-.125-.488.087-.038.215.151.438.284.574a1.126 1.126 0 0 0 .514.36c.011 0 .019.018.022 0a1.01 1.01 0 0 1-.215-.477c-.038-.211-.026-.43-.12-.548m.585-9.343c.359.026.847.14.979.348-.087-.284-.631-1.867-3.156-1.758.503.151 1.077.321 1.512.597.132.08.325.204.302.405-.026.223-.446.434-.748.457-.325.023-.575-.128-.764-.227.321.409.847.715 1.591.635-.018-.094-.143-.204-.09-.347.038-.099.2-.125.374-.114m2.086 6.04c-.098.023-.219.163-.208.302.02.19.254.28.465.265a1.175 1.175 0 0 0 .718-.291c-.396.102-.672-.34-.975-.276m.34-.922c.235-.34.31-.896.393-1.414.042-.276.08-.529.16-.733.09-.22.241-.393.294-.616.05-.216-.038-.37-.113-.548-.174-.4-.348-.798-.673-1.002-.386-.245-.987-.177-1.535-.132a18.282 18.282 0 0 0-.767.076 5.216 5.216 0 0 1-.794.064c-1.096-.02-1.727-.548-1.848-1.542 0 0 0-.012-.011-.008-.151.99.408 1.576 1.21 1.75.064.136.21.257.162.446-.053.227-.424.234-.684.2a1.425 1.425 0 0 1-.658-.28 3.383 3.383 0 0 1-.854-1 2.699 2.699 0 0 0 2.721 1.836c.48-.034.919-.14 1.3-.287-.555 0-1.292.019-1.451-.367a.503.503 0 0 1 .06-.438c.47.056.889-.046 1.282-.068a2.744 2.744 0 0 1 .96.117 1.22 1.22 0 0 1 .642.438c.272.4.303.987.204 1.561a7.181 7.181 0 0 1-.453 1.41c-.37.922-1.111 2.317-1.697 2.835-.703.593-1.584.937-2.608 1.202a6.66 6.66 0 0 1-1.323.208c-1.054.045-1.901-.102-2.46-.598a2.445 2.445 0 0 1-.605-.914 6.474 6.474 0 0 1-.363-3.04c-.038-.007-.064.035-.083.046-.03.03-.057.065-.09.091-.371.333-1.146.813-1.834.488a.635.635 0 0 1-.314-.288c-.189-.363.095-.676.314-.846.162-.125.382-.284.654-.216.162.038.416.246.416.416 0 .098-.223.28-.394.28-.177 0-.29-.144-.377-.227-.016-.027-.046-.087-.087-.06-.19.83.986.8 1.39.404.348-.34.48-1.062.163-1.52-.189-.264-.54-.366-.93-.31-.347.053-.812.152-1.028.314-.302.235-.34.726-.46 1.111a3.651 3.651 0 0 1-.454.972c-.027.038-.072.064-.065.11.465.03.862.15 1.002.487a.907.907 0 0 1 .038.465c-.065.302-.238.555-.102.915.226.597 1.092.71 1.36 1.254.114.223.091.537.235.756.177.269.597.238.986.303.22.045.439.09.605.192.321.19.332.632.718.768.23.075.43-.038.624-.091.15-.042.31-.064.453-.09.337-.054.582.026.9.12a1.406 1.406 0 0 0 .895 0c.257-.098.443-.276.643-.438.408-.325.809-.631 1.353-.805.552-.174 1.21-.261 1.512-.643a2.124 2.124 0 0 0 .302-.839c.14-.631.344-1.202.639-1.652.151-.226.37-.4.525-.623m1.24-4.12c-.087.117-.28.132-.408.212-.027.46.476-.02.408-.216m.19 2.192c-.186.121-.553-.064-.711.095-.084.605.653.159.729-.068 0-.015 0-.03-.023-.027"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/mta.svg b/assets/lib/simple-icons/icons/mta.svg
index 7500b0eb..8cf29824 100644
--- a/assets/lib/simple-icons/icons/mta.svg
+++ b/assets/lib/simple-icons/icons/mta.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>MTA icon</title><path d="M15.171 10.07l-1.293-.109v6.861l-1.926.34-.004-7.371-1.637-.145V6.944l4.86.85zm3.668 5.884l-1.142.198-.134-1-1.113.145-.14 1.1-1.473.26 1.458-8.651 1.385.24zm-1.48-2.492l-.305-2.642h-.068l-.31 2.682zM10.991 24c6.59 0 11.932-5.373 11.932-12 0-6.628-5.342-12-11.932-12C6.86 0 3.22 2.112 1.077 5.323l3.307.583.91 6.965c.003-.012.066-.004.066-.004l.998-6.615 3.309.58v10.735l-2.089.367V13.32s.078-1.987.032-2.327c0 0-.09.002-.092-.005l-1.246 7.18-2.075.366L2.672 10.8l-.092-.007c-.032.28.112 2.707.112 2.707v5.298l-1.364.24C3.498 22.044 7.016 24 10.991 24z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>MTA</title><path d="M15.171 10.07l-1.293-.109v6.861l-1.926.34-.004-7.371-1.637-.145V6.944l4.86.85zm3.668 5.884l-1.142.198-.134-1-1.113.145-.14 1.1-1.473.26 1.458-8.651 1.385.24zm-1.48-2.492l-.305-2.642h-.068l-.31 2.682zM10.991 24c6.59 0 11.932-5.373 11.932-12 0-6.628-5.342-12-11.932-12C6.86 0 3.22 2.112 1.077 5.323l3.307.583.91 6.965c.003-.012.066-.004.066-.004l.998-6.615 3.309.58v10.735l-2.089.367V13.32s.078-1.987.032-2.327c0 0-.09.002-.092-.005l-1.246 7.18-2.075.366L2.672 10.8l-.092-.007c-.032.28.112 2.707.112 2.707v5.298l-1.364.24C3.498 22.044 7.016 24 10.991 24z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/mtr.svg b/assets/lib/simple-icons/icons/mtr.svg
index 2938717d..6008d4db 100644
--- a/assets/lib/simple-icons/icons/mtr.svg
+++ b/assets/lib/simple-icons/icons/mtr.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>MTR icon</title><path d="M11.987 1.913c-1.9 0-3.693.321-5.298.883C2.756 4.268 0 7.826 0 12c0 4.147 2.756 7.706 6.689 9.204 1.632.562 3.425.883 5.325.883a16.74 16.74 0 0 0 5.27-.856C21.217 19.759 24 16.174 24 12.027V12c0-4.174-2.783-7.732-6.716-9.204a16.295 16.295 0 0 0-5.297-.883zM10.89 5.257h2.167v3.827c1.525-.402 2.702-1.766 2.782-3.399l2.168.027c-.16 2.73-2.22 4.95-4.897 5.378v1.793c2.676.428 4.736 2.675 4.924 5.404l-2.167.028c-.08-1.633-1.258-2.997-2.783-3.425v3.853h-2.167V14.89a3.775 3.775 0 0 0-2.81 3.425l-2.167-.028a5.868 5.868 0 0 1 4.923-5.404v-1.766C8.187 10.716 6.1 8.468 5.94 5.74l2.167-.027A3.711 3.711 0 0 0 10.89 9.11Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>MTR</title><path d="M11.987 1.913c-1.9 0-3.693.321-5.298.883C2.756 4.268 0 7.826 0 12c0 4.147 2.756 7.706 6.689 9.204 1.632.562 3.425.883 5.325.883a16.74 16.74 0 0 0 5.27-.856C21.217 19.759 24 16.174 24 12.027V12c0-4.174-2.783-7.732-6.716-9.204a16.295 16.295 0 0 0-5.297-.883zM10.89 5.257h2.167v3.827c1.525-.402 2.702-1.766 2.782-3.399l2.168.027c-.16 2.73-2.22 4.95-4.897 5.378v1.793c2.676.428 4.736 2.675 4.924 5.404l-2.167.028c-.08-1.633-1.258-2.997-2.783-3.425v3.853h-2.167V14.89a3.775 3.775 0 0 0-2.81 3.425l-2.167-.028a5.868 5.868 0 0 1 4.923-5.404v-1.766C8.187 10.716 6.1 8.468 5.94 5.74l2.167-.027A3.711 3.711 0 0 0 10.89 9.11Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/mui.svg b/assets/lib/simple-icons/icons/mui.svg
new file mode 100644
index 00000000..79a39ad0
--- /dev/null
+++ b/assets/lib/simple-icons/icons/mui.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>MUI</title><path d="M20.229 15.793a.666.666 0 0 0 .244-.243.666.666 0 0 0 .09-.333l.012-3.858a.666.666 0 0 1 .09-.333.666.666 0 0 1 .245-.243L23 9.58a.667.667 0 0 1 .333-.088.667.667 0 0 1 .333.09.667.667 0 0 1 .244.243.666.666 0 0 1 .089.333v7.014a.667.667 0 0 1-.335.578l-7.893 4.534a.666.666 0 0 1-.662 0l-6.194-3.542a.667.667 0 0 1-.246-.244.667.667 0 0 1-.09-.335v-3.537c0-.004.004-.006.008-.004s.008 0 .008-.005v-.004c0-.003.002-.005.004-.007l5.102-2.93c.004-.003.002-.01-.003-.01a.005.005 0 0 1-.004-.002.005.005 0 0 1-.001-.004l.01-3.467a.667.667 0 0 0-.333-.58.667.667 0 0 0-.667 0L8.912 9.799a.667.667 0 0 1-.665 0l-3.804-2.19a.667.667 0 0 0-.999.577v6.267a.667.667 0 0 1-.332.577.666.666 0 0 1-.332.09.667.667 0 0 1-.333-.088L.336 13.825a.667.667 0 0 1-.246-.244.667.667 0 0 1-.09-.336L.019 2.292a.667.667 0 0 1 .998-.577l7.23 4.153a.667.667 0 0 0 .665 0l7.228-4.153a.666.666 0 0 1 .333-.088.666.666 0 0 1 .333.09.667.667 0 0 1 .244.244.667.667 0 0 1 .088.333V13.25c0 .117-.03.232-.089.334a.667.667 0 0 1-.245.244l-3.785 2.18a.667.667 0 0 0-.245.245.666.666 0 0 0-.089.334.667.667 0 0 0 .09.334.666.666 0 0 0 .247.244l2.088 1.189a.67.67 0 0 0 .33.087.667.667 0 0 0 .332-.089l4.457-2.56Zm.438-9.828a.666.666 0 0 0 .09.335.666.666 0 0 0 .248.244.667.667 0 0 0 .67-.008l2.001-1.2a.666.666 0 0 0 .237-.243.667.667 0 0 0 .087-.329V2.32a.667.667 0 0 0-.091-.335.667.667 0 0 0-.584-.33.667.667 0 0 0-.334.094l-2 1.2a.666.666 0 0 0-.238.243.668.668 0 0 0-.086.329v2.445Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/mulesoft.svg b/assets/lib/simple-icons/icons/mulesoft.svg
new file mode 100644
index 00000000..2f3119f5
--- /dev/null
+++ b/assets/lib/simple-icons/icons/mulesoft.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Mulesoft</title><path d="M12 0C5.373 0 0 5.373 0 12c0 6.628 5.373 12 12 12 6.628 0 12-5.373 12-12S18.627 0 12 0zm0 1.055c6.045 0 10.945 4.9 10.945 10.945S18.045 22.945 12 22.945 1.055 18.045 1.055 12c0-6.044 4.9-10.945 10.945-10.945zM7.33 4.364s-2.993 1.647-3.96 5.25c-.647 2.224-.39 4.702.903 6.914a8.957 8.957 0 0 0 3.95 3.596l.802-3.062c-1.801-.85-3.11-2.571-3.11-4.79a5.647 5.647 0 0 1 .943-3.141l3.752 5.866h2.792l3.753-5.866a5.647 5.647 0 0 1 .943 3.14c0 2.22-1.308 3.94-3.109 4.791l.802 3.062a8.957 8.957 0 0 0 3.948-3.594c1.294-2.213 1.551-4.692.904-6.916l.002.003c-.966-3.603-3.96-5.251-3.96-5.251l-.336.527-4.341 6.797h-.003L7.656 4.876z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/muller.svg b/assets/lib/simple-icons/icons/muller.svg
new file mode 100644
index 00000000..529a59d6
--- /dev/null
+++ b/assets/lib/simple-icons/icons/muller.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>M&#252;ller</title><path d="M17.433 14.671c-.056-1.287-.138-2.808-.138-3.013 0-.623.097-2.252.21-2.64.138-.47.76-.582.76-1.133 0-.868-1.388-.91-1.996-.91-1.833 0-1.843.414-2.553 1.711-.5.914-1.067 2.584-1.496 2.487-.613-.138-1.471-2.405-1.956-3.217-.419-.704-.388-.98-2.012-.98-1.113 0-2.4.189-2.4.98 0 .567.792.664.93.95.153.322.209.75.209 1.578 0 2.002-.128 3.288-.24 4.447-.107 1.134-.94.486-.94 1.272 0 .72 1.261.76 1.747.76.54 0 2.027-.03 2.027-.816 0-.746-.889-.056-.889-1.532 0-.455-.138-2.283.291-2.283.25 0 .399.419.485.598l.802 1.797c.832 1.864.945 1.833 1.17 1.864.439.056.939-1.522 1.245-2.155.332-.705.777-1.92 1.205-1.92.486 0 .21 2.375.154 2.61-.097.444-.72.525-.72 1.01 0 .884 1.9.828 2.471.828.608 0 2.507.04 2.507-.884 0-.623-.832-.403-.873-1.409zm5.004-4.157c-.75.787-1.317 1.15-2.343 1.492 1.031.362 1.598.735 2.343 1.531 1.297 1.39 1.609 2.635 1.548 4.632v5.81h-5.827c-1.833.016-3.104-.31-4.498-1.536-.843-.74-1.241-1.307-1.66-2.35-.347 1.032-.715 1.604-1.511 2.35-1.39 1.312-2.748 1.65-4.647 1.537H.005v-5.811c-.05-1.772.312-3.12 1.553-4.504.766-.858 1.358-1.261 2.435-1.66-1.077-.382-1.67-.776-2.435-1.618C.29 9.003.015 7.68.005 5.842V.001h5.837c1.9-.016 3.15.29 4.534 1.542.848.77 1.241 1.368 1.624 2.446.429-1.083.848-1.675 1.726-2.446C15.105.343 16.386.052 18.158 0h5.827v5.841c.092 1.87-.225 3.284-1.548 4.672zm-.893-8.042h-3.79c-1.68-.04-2.88.22-4.197 1.317-.76.634-1.123 1.119-1.531 2.017-.383-.893-.736-1.378-1.471-2.017-1.312-1.138-2.41-1.297-4.259-1.317H2.512l-.005 3.784c-.02 1.532.169 2.599 1.088 3.87.669.925 1.22 1.384 2.252 1.87-1.037.505-1.588.98-2.252 1.924-.888 1.262-1.088 2.155-1.072 3.794v3.769h3.773c1.793-.01 2.957-.158 4.274-1.302.73-.639 1.083-1.124 1.456-2.017.413.898.78 1.378 1.542 2.017 1.312 1.093 2.446 1.378 4.187 1.312h3.789v-3.779c-.01-1.521-.082-2.568-.97-3.824-.685-.965-1.282-1.44-2.375-1.895 1.098-.47 1.69-.955 2.375-1.93.878-1.25.934-2.323.97-3.794z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/mumble.svg b/assets/lib/simple-icons/icons/mumble.svg
new file mode 100644
index 00000000..9942ad19
--- /dev/null
+++ b/assets/lib/simple-icons/icons/mumble.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Mumble</title><path d="M12 .08A12 11.92 0 000 12a12 11.92 0 0012 11.92A12 11.92 0 0024 12 12 11.92 0 0012 .08zM9.463 1.56c.393 0 .763.21.944.57-.013 1.409-.007 2.819-.008 4.23v.001c.013.303-.019.633.004.951.023.318.102.627.341.88.357.447.942.468 1.45.446h-.003.003c.736.093 1.468-.476 1.519-1.225v-.001c.013-1.74.008-3.479 0-5.218.115-.387.562-.669.973-.617h.006c1.457-.108 3.002.616 3.661 1.953l.001.002c.252.448.328 1.023.381 1.496v4.258a3.401 3.401 0 00-.757-.174l-.037-.004V9.389h-.022v-.193c0-.148-.13-.265-.285-.265h-.36a.305.305 0 00-.102.018c-.002-1.298.007-2.592-.01-3.895v-.001a2.212 2.212 0 00-.571-1.358c-.337-.368-.801-.606-1.33-.567l-.03.002v3.995c.104 1.115-.673 2.259-1.791 2.469-.742.09-1.498.028-2.252.047h-.002c-1.184.1-2.306-.88-2.39-2.06-.027-1.475-.004-2.952-.012-4.428v-.032h-.032c-.508-.006-.945.241-1.26.606a2.247 2.247 0 00-.534 1.319C6.94 6.383 6.95 7.71 6.948 9.04a.291.291 0 00-.156-.045H6.44c-.154 0-.28.118-.28.265v.122h-.007v-.217l-.036.004a3.394 3.394 0 00-.733.166V5.273c.007-.371.045-.734.139-1.117.401-1.573 2.014-2.627 3.604-2.588l.082.003.08.001h.003c.057-.01.114-.013.17-.013zM17.275 9h.36c.122 0 .217.088.217.196v10.736c0 .107-.095.196-.218.196h-.36c-.122 0-.217-.089-.217-.196V9.196c0-.108.095-.196.218-.196zM6.44 9.064h.353c.04 0 .079.011.11.03l.013.007a.186.186 0 01.035.028c.034.035.054.08.054.131v10.737c0 .108-.093.196-.212.196H6.44c-.12 0-.212-.088-.212-.196V9.26c0-.108.093-.196.212-.196zm11.567.118c.055.007.11.016.164.025 2.061.356 3.662 2.656 3.662 5.452 0 2.869-1.686 5.217-3.826 5.476zM6.09 9.241v10.952c-2.14-.259-3.826-2.607-3.826-5.476 0-2.775 1.578-5.063 3.618-5.444l.011-.002.034-.006c.054-.009.108-.017.163-.024zM17.92 19.883h.022v.326l.036-.004a3.35 3.35 0 00.371-.062.195.195 0 01-.09.173l-.002.001v.001s-.618.496-.947.707c-.314.187-.49.338-.758.455a1.718 1.718 0 01-.19.067.858.858 0 01-.14.032h-2.206a.134.134 0 01-.02-.002.68.68 0 00.052-.456h2.068s.127-.011.28-.085c.19-.091.39-.225.577-.347.209-.137.403-.283.607-.435.026-.02.05-.04.072-.06.148-.008.268-.12.268-.263zm-5.684.39c.487 0 .928.115 1.244.299.317.184.506.433.506.705 0 .271-.19.52-.506.705-.316.183-.757.299-1.244.299-.488 0-.93-.116-1.245-.3-.317-.183-.506-.433-.506-.704 0-.272.19-.521.506-.705.316-.184.757-.3 1.245-.3z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/musescore.svg b/assets/lib/simple-icons/icons/musescore.svg
index 07282067..befa8cb0 100644
--- a/assets/lib/simple-icons/icons/musescore.svg
+++ b/assets/lib/simple-icons/icons/musescore.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>MuseScore icon</title><path d="M11.777 23.997a11.989 11.989 0 0 1-8.98-4.296 12.013 12.013 0 0 1-2.406-4.655A12.1 12.1 0 0 1 .273 9.44a11.926 11.926 0 0 1 1.72-4.064 12.056 12.056 0 0 1 4.056-3.799 11.94 11.94 0 0 1 4.13-1.44 12.211 12.211 0 0 1 3.693.007c1.708.27 3.302.89 4.751 1.848.873.577 1.692 1.29 2.385 2.08a11.966 11.966 0 0 1 2.68 5.196c.402 1.718.416 3.556.039 5.291a12.004 12.004 0 0 1-4.024 6.643 12.013 12.013 0 0 1-4.655 2.407c-.743.195-1.499.316-2.29.367a17.83 17.83 0 0 1-.809.026l-.172-.003zm-6.924-6.684a.488.488 0 0 0 .23-.133.548.548 0 0 0 .139-.232c.013-.043.014-.178.018-2.363.004-2.12.005-2.327.018-2.438.033-.298.076-.51.146-.72.101-.303.224-.516.406-.705.14-.144.26-.232.434-.315a1.76 1.76 0 0 1 .504-.148c.114-.017.382-.024.493-.012a1.803 1.803 0 0 1 1.308.807c.166.25.271.528.327.866l.017.106.004 2.438c.004 2.324.005 2.44.019 2.485a.555.555 0 0 0 .133.226.5.5 0 0 0 .201.128c.052.019.068.021.167.021a.462.462 0 0 0 .37-.145.507.507 0 0 0 .149-.3c.006-.042.008-.774.008-2.407 0-1.542.003-2.375.008-2.428.047-.48.222-.889.523-1.225.183-.204.464-.39.73-.482.21-.074.394-.101.626-.095.304.01.55.066.8.186.284.136.514.341.668.597.178.294.28.662.299 1.083.002.053.013.491.023.973.022 1.002.024 1.063.04 1.238.072.787.307 1.426.711 1.935.087.11.311.333.417.417.435.344.944.555 1.532.634.177.024.507.03.68.012.797-.082 1.53-.463 2.015-1.046.373-.45.606-.99.704-1.64.046-.302.043-.143.046-2.506.003-2.417.007-2.223-.054-2.346a.484.484 0 0 0-.332-.251.584.584 0 0 0-.416.06c-.1.06-.19.183-.22.304-.009.031-.012.478-.016 2.22-.005 2.415 0 2.23-.055 2.51-.18.917-.81 1.522-1.73 1.66a2.358 2.358 0 0 1-.512-.008c-.464-.07-.84-.256-1.13-.557-.332-.345-.53-.816-.601-1.432-.018-.151-.026-.387-.043-1.212-.018-.853-.026-1.05-.047-1.24-.129-1.123-.68-1.983-1.548-2.417a2.773 2.773 0 0 0-1.121-.294c-.55-.035-1.136.12-1.671.441a2.949 2.949 0 0 0-.813.707l-.038.049-.028-.038a2.542 2.542 0 0 0-.235-.261c-.457-.433-1.1-.722-1.78-.8a3.877 3.877 0 0 0-.65-.001c-.635.07-1.141.286-1.559.666-.48.437-.795 1.103-.912 1.926-.056.393-.057.436-.054 2.915l.002 2.184.022.064a.525.525 0 0 0 .359.339c.078.02.188.02.267 0zm11.99-8.863a.687.687 0 0 0 .546-.505.849.849 0 0 0 .008-.3.685.685 0 0 0-.455-.516.678.678 0 0 0-.895.649c0 .055.005.11.012.142a.684.684 0 0 0 .783.53zm-2.667-.138a.495.495 0 0 0 .32-.265c.046-.092.06-.158.067-.343a2.224 2.224 0 0 1 .617-1.49 1.934 1.934 0 0 1 1.146-.587c.145-.022.434-.024.581-.004.307.043.58.143.822.3.244.16.474.4.634.663.202.333.326.763.327 1.127 0 .1.012.184.036.26a.507.507 0 0 0 .94.068c.053-.111.06-.15.059-.35 0-.198-.01-.318-.043-.514-.217-1.298-1.165-2.294-2.426-2.545a2.47 2.47 0 0 0-.625-.055 3.031 3.031 0 0 0-2.738 1.638 3.3 3.3 0 0 0-.366 1.43c-.01.265.037.418.167.544a.509.509 0 0 0 .482.123z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>MuseScore</title><path d="M11.777 23.997a11.989 11.989 0 0 1-8.98-4.296 12.013 12.013 0 0 1-2.406-4.655A12.1 12.1 0 0 1 .273 9.44a11.926 11.926 0 0 1 1.72-4.064 12.056 12.056 0 0 1 4.056-3.799 11.94 11.94 0 0 1 4.13-1.44 12.211 12.211 0 0 1 3.693.007c1.708.27 3.302.89 4.751 1.848.873.577 1.692 1.29 2.385 2.08a11.966 11.966 0 0 1 2.68 5.196c.402 1.718.416 3.556.039 5.291a12.004 12.004 0 0 1-4.024 6.643 12.013 12.013 0 0 1-4.655 2.407c-.743.195-1.499.316-2.29.367a17.83 17.83 0 0 1-.809.026l-.172-.003zm-6.924-6.684a.488.488 0 0 0 .23-.133.548.548 0 0 0 .139-.232c.013-.043.014-.178.018-2.363.004-2.12.005-2.327.018-2.438.033-.298.076-.51.146-.72.101-.303.224-.516.406-.705.14-.144.26-.232.434-.315a1.76 1.76 0 0 1 .504-.148c.114-.017.382-.024.493-.012a1.803 1.803 0 0 1 1.308.807c.166.25.271.528.327.866l.017.106.004 2.438c.004 2.324.005 2.44.019 2.485a.555.555 0 0 0 .133.226.5.5 0 0 0 .201.128c.052.019.068.021.167.021a.462.462 0 0 0 .37-.145.507.507 0 0 0 .149-.3c.006-.042.008-.774.008-2.407 0-1.542.003-2.375.008-2.428.047-.48.222-.889.523-1.225.183-.204.464-.39.73-.482.21-.074.394-.101.626-.095.304.01.55.066.8.186.284.136.514.341.668.597.178.294.28.662.299 1.083.002.053.013.491.023.973.022 1.002.024 1.063.04 1.238.072.787.307 1.426.711 1.935.087.11.311.333.417.417.435.344.944.555 1.532.634.177.024.507.03.68.012.797-.082 1.53-.463 2.015-1.046.373-.45.606-.99.704-1.64.046-.302.043-.143.046-2.506.003-2.417.007-2.223-.054-2.346a.484.484 0 0 0-.332-.251.584.584 0 0 0-.416.06c-.1.06-.19.183-.22.304-.009.031-.012.478-.016 2.22-.005 2.415 0 2.23-.055 2.51-.18.917-.81 1.522-1.73 1.66a2.358 2.358 0 0 1-.512-.008c-.464-.07-.84-.256-1.13-.557-.332-.345-.53-.816-.601-1.432-.018-.151-.026-.387-.043-1.212-.018-.853-.026-1.05-.047-1.24-.129-1.123-.68-1.983-1.548-2.417a2.773 2.773 0 0 0-1.121-.294c-.55-.035-1.136.12-1.671.441a2.949 2.949 0 0 0-.813.707l-.038.049-.028-.038a2.542 2.542 0 0 0-.235-.261c-.457-.433-1.1-.722-1.78-.8a3.877 3.877 0 0 0-.65-.001c-.635.07-1.141.286-1.559.666-.48.437-.795 1.103-.912 1.926-.056.393-.057.436-.054 2.915l.002 2.184.022.064a.525.525 0 0 0 .359.339c.078.02.188.02.267 0zm11.99-8.863a.687.687 0 0 0 .546-.505.849.849 0 0 0 .008-.3.685.685 0 0 0-.455-.516.678.678 0 0 0-.895.649c0 .055.005.11.012.142a.684.684 0 0 0 .783.53zm-2.667-.138a.495.495 0 0 0 .32-.265c.046-.092.06-.158.067-.343a2.224 2.224 0 0 1 .617-1.49 1.934 1.934 0 0 1 1.146-.587c.145-.022.434-.024.581-.004.307.043.58.143.822.3.244.16.474.4.634.663.202.333.326.763.327 1.127 0 .1.012.184.036.26a.507.507 0 0 0 .94.068c.053-.111.06-.15.059-.35 0-.198-.01-.318-.043-.514-.217-1.298-1.165-2.294-2.426-2.545a2.47 2.47 0 0 0-.625-.055 3.031 3.031 0 0 0-2.738 1.638 3.3 3.3 0 0 0-.366 1.43c-.01.265.037.418.167.544a.509.509 0 0 0 .482.123z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/musicbrainz.svg b/assets/lib/simple-icons/icons/musicbrainz.svg
index 1fab3358..877075a8 100644
--- a/assets/lib/simple-icons/icons/musicbrainz.svg
+++ b/assets/lib/simple-icons/icons/musicbrainz.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>MusicBrainz icon</title><path d="M11.582 0L1.418 5.832v12.336L11.582 24V10.01L7.1 12.668v3.664c.01.111.01.225 0 .336-.103.435-.54.804-1 1.111-.802.537-1.752.509-2.166-.111-.413-.62-.141-1.631.666-2.168.384-.28.863-.399 1.334-.332V6.619c0-.154.134-.252.226-.308L11.582 3zm.836 0v6.162c.574.03 1.14.16 1.668.387a2.225 2.225 0 0 0 1.656-.717 1.02 1.02 0 1 1 1.832-.803l.004.006a1.022 1.022 0 0 1-1.295 1.197c-.34.403-.792.698-1.297.85.34.263.641.576.891.928a1.04 1.04 0 0 1 .777.125c.768.486.568 1.657-.318 1.857-.886.2-1.574-.77-1.09-1.539.02-.03.042-.06.065-.09a3.598 3.598 0 0 0-1.436-1.166 4.142 4.142 0 0 0-1.457-.369v4.01c.855.06 1.256.493 1.555.834.227.256.356.39.578.402.323.018.568.008.806 0a5.44 5.44 0 0 1 .895.022c.94-.017 1.272-.226 1.605-.446a2.533 2.533 0 0 1 1.131-.463 1.027 1.027 0 0 1 .12-.263 1.04 1.04 0 0 1 .105-.137c.023-.025.047-.044.07-.066a4.775 4.775 0 0 1 0-2.405l-.012-.01a1.02 1.02 0 1 1 .692.272h-.057a4.288 4.288 0 0 0 0 1.877h.063a1.02 1.02 0 1 1-.545 1.883l-.047-.033a1 1 0 0 1-.352-.442 1.885 1.885 0 0 0-.814.354 3.03 3.03 0 0 1-.703.365c.757.555 1.772 1.6 2.199 2.299a1.03 1.03 0 0 1 .256-.033 1.02 1.02 0 1 1-.545 1.88l-.047-.03a1.017 1.017 0 0 1-.27-1.376.72.72 0 0 1 .051-.072c-.445-.775-2.026-2.28-2.46-2.387a4.037 4.037 0 0 0-1.31-.117c-.24.008-.513.018-.866 0-.515-.027-.783-.333-1.043-.629-.26-.296-.51-.56-1.055-.611V18.5a1.877 1.877 0 0 0 .426-.135.333.333 0 0 1 .058-.027c.56-.267 1.421-.91 2.096-2.447a1.02 1.02 0 0 1-.27-1.344 1.02 1.02 0 1 1 .915 1.54 6.273 6.273 0 0 1-1.432 2.136 1.785 1.785 0 0 1 .691.306.667.667 0 0 0 .37.168 3.31 3.31 0 0 0 .888-.222 1.02 1.02 0 0 1 1.787-.79v-.005a1.02 1.02 0 0 1-.773 1.683 1.022 1.022 0 0 1-.719-.287 3.935 3.935 0 0 1-1.168.287h-.05a1.313 1.313 0 0 1-.71-.275c-.262-.177-.51-.345-1.402-.12a2.098 2.098 0 0 1-.707.2V24l10.164-5.832V5.832zm4.154 4.904a.352.352 0 0 0-.197.639l.018.01c.163.1.378.053.484-.108v-.002a.352.352 0 0 0-.303-.539zm-4.99 1.928L7.082 9.5v2l4.5-2.668zm8.385.38a.352.352 0 0 0-.295.165v.002a.35.35 0 0 0 .096.473l.013.01a.357.357 0 0 0 .487-.108.352.352 0 0 0-.301-.541zM16.09 8.647a.352.352 0 0 0-.277.163.355.355 0 0 0 .296.54c.482 0 .463-.73-.02-.703zm3.877 2.477a.352.352 0 0 0-.295.164.35.35 0 0 0 .094.475l.015.01a.357.357 0 0 0 .485-.11.352.352 0 0 0-.3-.539zm-4.375 3.594a.352.352 0 0 0-.291.172.35.35 0 0 0-.04.265.352.352 0 1 0 .33-.437zm4.375.789a.352.352 0 0 0-.295.164v.002a.352.352 0 0 0 .094.473l.015.01a.357.357 0 0 0 .485-.108.352.352 0 0 0-.3-.54zm-2.803 2.488v.002a.347.347 0 0 0-.223.084.352.352 0 0 0 .23.62.347.347 0 0 0 .23-.085.348.348 0 0 0 .12-.24.353.353 0 0 0-.35-.38.347.347 0 0 0-.007 0Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>MusicBrainz</title><path d="M11.582 0L1.418 5.832v12.336L11.582 24V10.01L7.1 12.668v3.664c.01.111.01.225 0 .336-.103.435-.54.804-1 1.111-.802.537-1.752.509-2.166-.111-.413-.62-.141-1.631.666-2.168.384-.28.863-.399 1.334-.332V6.619c0-.154.134-.252.226-.308L11.582 3zm.836 0v6.162c.574.03 1.14.16 1.668.387a2.225 2.225 0 0 0 1.656-.717 1.02 1.02 0 1 1 1.832-.803l.004.006a1.022 1.022 0 0 1-1.295 1.197c-.34.403-.792.698-1.297.85.34.263.641.576.891.928a1.04 1.04 0 0 1 .777.125c.768.486.568 1.657-.318 1.857-.886.2-1.574-.77-1.09-1.539.02-.03.042-.06.065-.09a3.598 3.598 0 0 0-1.436-1.166 4.142 4.142 0 0 0-1.457-.369v4.01c.855.06 1.256.493 1.555.834.227.256.356.39.578.402.323.018.568.008.806 0a5.44 5.44 0 0 1 .895.022c.94-.017 1.272-.226 1.605-.446a2.533 2.533 0 0 1 1.131-.463 1.027 1.027 0 0 1 .12-.263 1.04 1.04 0 0 1 .105-.137c.023-.025.047-.044.07-.066a4.775 4.775 0 0 1 0-2.405l-.012-.01a1.02 1.02 0 1 1 .692.272h-.057a4.288 4.288 0 0 0 0 1.877h.063a1.02 1.02 0 1 1-.545 1.883l-.047-.033a1 1 0 0 1-.352-.442 1.885 1.885 0 0 0-.814.354 3.03 3.03 0 0 1-.703.365c.757.555 1.772 1.6 2.199 2.299a1.03 1.03 0 0 1 .256-.033 1.02 1.02 0 1 1-.545 1.88l-.047-.03a1.017 1.017 0 0 1-.27-1.376.72.72 0 0 1 .051-.072c-.445-.775-2.026-2.28-2.46-2.387a4.037 4.037 0 0 0-1.31-.117c-.24.008-.513.018-.866 0-.515-.027-.783-.333-1.043-.629-.26-.296-.51-.56-1.055-.611V18.5a1.877 1.877 0 0 0 .426-.135.333.333 0 0 1 .058-.027c.56-.267 1.421-.91 2.096-2.447a1.02 1.02 0 0 1-.27-1.344 1.02 1.02 0 1 1 .915 1.54 6.273 6.273 0 0 1-1.432 2.136 1.785 1.785 0 0 1 .691.306.667.667 0 0 0 .37.168 3.31 3.31 0 0 0 .888-.222 1.02 1.02 0 0 1 1.787-.79v-.005a1.02 1.02 0 0 1-.773 1.683 1.022 1.022 0 0 1-.719-.287 3.935 3.935 0 0 1-1.168.287h-.05a1.313 1.313 0 0 1-.71-.275c-.262-.177-.51-.345-1.402-.12a2.098 2.098 0 0 1-.707.2V24l10.164-5.832V5.832zm4.154 4.904a.352.352 0 0 0-.197.639l.018.01c.163.1.378.053.484-.108v-.002a.352.352 0 0 0-.303-.539zm-4.99 1.928L7.082 9.5v2l4.5-2.668zm8.385.38a.352.352 0 0 0-.295.165v.002a.35.35 0 0 0 .096.473l.013.01a.357.357 0 0 0 .487-.108.352.352 0 0 0-.301-.541zM16.09 8.647a.352.352 0 0 0-.277.163.355.355 0 0 0 .296.54c.482 0 .463-.73-.02-.703zm3.877 2.477a.352.352 0 0 0-.295.164.35.35 0 0 0 .094.475l.015.01a.357.357 0 0 0 .485-.11.352.352 0 0 0-.3-.539zm-4.375 3.594a.352.352 0 0 0-.291.172.35.35 0 0 0-.04.265.352.352 0 1 0 .33-.437zm4.375.789a.352.352 0 0 0-.295.164v.002a.352.352 0 0 0 .094.473l.015.01a.357.357 0 0 0 .485-.108.352.352 0 0 0-.3-.54zm-2.803 2.488v.002a.347.347 0 0 0-.223.084.352.352 0 0 0 .23.62.347.347 0 0 0 .23-.085.348.348 0 0 0 .12-.24.353.353 0 0 0-.35-.38.347.347 0 0 0-.007 0Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/mxlinux.svg b/assets/lib/simple-icons/icons/mxlinux.svg
index adcd8b67..7805a528 100644
--- a/assets/lib/simple-icons/icons/mxlinux.svg
+++ b/assets/lib/simple-icons/icons/mxlinux.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>MX Linux icon</title><path d="M12.001 13.301l3.277 3.819-.75.9-2.133-2.521-1.131-1.338.737-.86zM24 2.41v19.182c0 .655-.531 1.186-1.186 1.186H1.186A1.186 1.186 0 0 1 0 21.591V2.409c0-.655.531-1.186 1.186-1.186h21.628c.655 0 1.186.53 1.186 1.186zm-2.241 17.09l-2.116-2.542-2.115-2.541-.586.704-3.25-3.788 4.913-5.73-1.175-1.008-4.76 5.549-4.743-5.527-1.947 1.67 5 5.827-.73.851-1.24-1.465-3.384 4-3.385 4h19.518z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>MX Linux</title><path d="M12.001 13.301l3.277 3.819-.75.9-2.133-2.521-1.131-1.338.737-.86zM24 2.41v19.182c0 .655-.531 1.186-1.186 1.186H1.186A1.186 1.186 0 0 1 0 21.591V2.409c0-.655.531-1.186 1.186-1.186h21.628c.655 0 1.186.53 1.186 1.186zm-2.241 17.09l-2.116-2.542-2.115-2.541-.586.704-3.25-3.788 4.913-5.73-1.175-1.008-4.76 5.549-4.743-5.527-1.947 1.67 5 5.827-.73.851-1.24-1.465-3.384 4-3.385 4h19.518z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/myanimelist.svg b/assets/lib/simple-icons/icons/myanimelist.svg
new file mode 100644
index 00000000..1a097a4e
--- /dev/null
+++ b/assets/lib/simple-icons/icons/myanimelist.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>MyAnimeList</title><path d="M8.273 7.247v8.423l-2.103-.003v-5.216l-2.03 2.404-1.989-2.458-.02 5.285H.001L0 7.247h2.203l1.865 2.545 2.015-2.546 2.19.001zm8.628 2.069l.025 6.335h-2.365l-.008-2.871h-2.8c.07.499.21 1.266.417 1.779.155.381.298.751.583 1.128l-1.705 1.125c-.349-.636-.622-1.337-.878-2.082a9.296 9.296 0 0 1-.507-2.179c-.085-.75-.097-1.471.107-2.212a3.908 3.908 0 0 1 1.161-1.866c.313-.293.749-.5 1.1-.687.351-.187.743-.264 1.107-.359a7.405 7.405 0 0 1 1.191-.183c.398-.034 1.107-.066 2.39-.028l.545 1.749H14.51c-.593.008-.878.001-1.341.209a2.236 2.236 0 0 0-1.278 1.92l2.663.033.038-1.81h2.309zm3.992-2.099v6.627l3.107.032-.43 1.775h-4.807V7.187l2.13.03z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/myob.svg b/assets/lib/simple-icons/icons/myob.svg
new file mode 100644
index 00000000..a0f3e520
--- /dev/null
+++ b/assets/lib/simple-icons/icons/myob.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>MYOB</title><path d="M19.7695 7.0312c-.9023 0-1.0547.6094-1.0664.914v6.5977h.6328c.5157.0117.6328-.3164.6446-.5039v-.0234-.0234c.3984.4219.9492.6563 1.5703.6563 1.3476 0 2.4492-1.1719 2.4492-2.6953 0-1.547-1.1016-2.7188-2.4492-2.7188-.5977 0-1.125.2227-1.5117.6094V7.0313h-.2696zm.2696 4.9219c0-.8203.5859-1.4883 1.3125-1.4883.7382 0 1.3242.6445 1.3242 1.4883 0 .832-.586 1.4648-1.3242 1.4648-.7266 0-1.3125-.6562-1.3125-1.4648zm-6.961 0c0 1.5469 1.1602 2.707 2.5899 2.707 1.4414 0 2.6015-1.1601 2.6015-2.707 0-1.5586-1.1601-2.7422-2.6015-2.7422-1.4297 0-2.5899 1.1836-2.5899 2.7422zm1.3242 0c0-.8906.5743-1.5234 1.2657-1.5234.703 0 1.2773.6328 1.2773 1.5234 0 .8789-.5742 1.4883-1.2773 1.4883-.6914 0-1.2657-.6094-1.2657-1.4883zM3.961 9.949c-.3632-.457-.9375-.7382-1.6406-.7382C.9141 9.211 0 10.207 0 11.5312v3.0117h.4336c.293-.0234.8672-.164.8906-1.0312v-2.004c0-.5859.4102-.996.9961-.996.879 0 .961.7031.961.996v3.0352h.4335c.293-.0234.8672-.164.8907-1.0195v-2.0156c0-.586.4218-.9961.996-.9961.879 0 .9727.7031.9727.996v3.0352h.4336c.293-.0234.879-.164.8906-1.043v-1.9687c0-1.3594-.8437-2.3203-2.2968-2.3203-.668 0-1.2422.2813-1.6407.7383zm7.7461-.0233l-1.1133 3.0937-1.207-3.2109c-.1758-.5039-.6562-.4805-.6562-.4805H7.6992L9.75 14.379c0-.0117 0-.0117-.0117-.0117 0 0 .0117 0 .0117.0117s.0117.0234.0117.0234L9.75 14.379c.0703.1992.0469.3164-.0117.5156l-.0469.129c-.2344.5976-.5742.7617-1.289.7148v.0117l.4921 1.2187c.9258-.0234 1.6055-.328 2.0742-1.4765l2.461-6.164h-.9258c-.0469 0-.5742.0116-.7969.5976zm8.0625-2.8945c-.9023 0-1.0547.6093-1.0664.914v6.5977h.6328c.5157.0117.6328-.3164.6446-.504v-.0233-.0234c.3984.4218.9492.6562 1.5703.6562 1.3476 0 2.4492-1.1719 2.4492-2.6953 0-1.5469-1.1016-2.7188-2.4492-2.7188-.5977 0-1.125.2227-1.5117.6094V7.0313h-.2696zm.2696 4.9218c0-.8203.5859-1.4882 1.3125-1.4882.7382 0 1.3242.6445 1.3242 1.4882 0 .832-.586 1.4649-1.3242 1.4649-.7266 0-1.3125-.6563-1.3125-1.4649zm-6.961 0c0 1.547 1.1602 2.707 2.5899 2.707 1.4414 0 2.6015-1.16 2.6015-2.707 0-1.5586-1.1601-2.7421-2.6015-2.7421-1.4297 0-2.5899 1.1835-2.5899 2.7421zm1.3242 0c0-.8906.5743-1.5234 1.2657-1.5234.703 0 1.2773.6328 1.2773 1.5234 0 .879-.5742 1.4883-1.2773 1.4883-.6914 0-1.2657-.6094-1.2657-1.4883zM3.961 9.9492c-.3632-.457-.9375-.7382-1.6406-.7382C.9141 9.211 0 10.207 0 11.5313v3.0117h.4336c.293-.0234.8672-.164.8906-1.0313v-2.0039c0-.586.4102-.996.9961-.996.879 0 .961.703.961.996v3.0352h.4335c.293-.0234.8672-.164.8907-1.0195v-2.0157c0-.586.4218-.996.996-.996.879 0 .9727.703.9727.996v3.0352h.4336c.293-.0234.879-.164.8906-1.043v-1.9687c0-1.3594-.8437-2.3204-2.2968-2.3204-.668 0-1.2422.2813-1.6407.7383zm7.7461-.0234l-1.1133 3.0938-1.207-3.211c-.1758-.5039-.6562-.4804-.6562-.4804H7.6992L9.75 14.379c0-.0117 0-.0117-.0117-.0117 0 0 .0117 0 .0117.0117s.0117.0234.0117.0234L9.75 14.379c.0703.1992.0469.3164-.0117.5156l-.0469.1289c-.2344.5976-.5742.7617-1.289.7148v.0117l.4921 1.2188c.9258-.0234 1.6055-.3282 2.0742-1.4766l2.461-6.164h-.9258c-.0469 0-.5742.0117-.7969.5976z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/myspace.svg b/assets/lib/simple-icons/icons/myspace.svg
index b919c086..c33f7c4e 100644
--- a/assets/lib/simple-icons/icons/myspace.svg
+++ b/assets/lib/simple-icons/icons/myspace.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Myspace icon</title><path d="M19.803 12.274c2.108 0 3.818-1.703 3.818-3.804s-1.71-3.795-3.818-3.795c-2.109 0-3.818 1.71-3.818 3.81 0 2.101 1.709 3.811 3.818 3.811v-.022zm-8.603.705c1.897 0 3.436-1.533 3.436-3.424S13.098 6.13 11.2 6.13 7.764 7.676 7.764 9.566C7.764 11.457 9.299 13 11.2 13v-.021zm-7.8.635c1.71 0 3.093-1.38 3.093-3.081 0-1.704-1.395-3.084-3.105-3.084C1.681 7.449.3 8.829.3 10.539c0 1.7 1.387 3.078 3.095 3.078l.005-.003zm0 .705c-1.96 0-3.4 1.717-3.4 3.495v1.196c0 .17.138.31.31.31h6.18c.171 0 .309-.14.309-.31v-1.196c0-1.779-1.437-3.5-3.398-3.5l-.001.005zm7.8-.56c-2.179 0-3.78 1.915-3.78 3.891v1.331c0 .188.156.344.345.344h6.871c.188 0 .342-.155.342-.344V17.65c0-1.976-1.598-3.891-3.778-3.891zm8.603-.617c-2.422 0-4.197 2.126-4.197 4.323v1.477c0 .21.172.381.382.381h7.63c.21 0 .383-.171.383-.381v-1.477c-.001-2.197-1.776-4.323-4.198-4.323z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Myspace</title><path d="M19.802 12.274A3.811 3.811 0 0023.62 8.47c0-2.101-1.71-3.795-3.818-3.795a3.816 3.816 0 00-3.818 3.81 3.817 3.817 0 003.818 3.811zm-8.602.705a3.43 3.43 0 003.435-3.424A3.43 3.43 0 0011.2 6.13a3.44 3.44 0 00-3.436 3.436A3.436 3.436 0 0011.2 13zm-7.8.635c1.71 0 3.093-1.38 3.093-3.081 0-1.704-1.395-3.084-3.105-3.084A3.086 3.086 0 00.3 10.539c0 1.7 1.387 3.078 3.095 3.078zm0 .705c-1.96 0-3.4 1.717-3.4 3.495v1.196c0 .17.138.31.31.31h6.18a.31.31 0 00.309-.31v-1.196c0-1.779-1.437-3.5-3.398-3.5zm7.8-.56c-2.18 0-3.78 1.915-3.78 3.891v1.331c0 .188.156.344.345.344h6.87a.344.344 0 00.342-.344V17.65c0-1.976-1.598-3.891-3.777-3.891zm8.602-.617c-2.422 0-4.197 2.126-4.197 4.323v1.477c0 .21.172.381.382.381h7.63c.21 0 .383-.171.383-.381v-1.477c-.001-2.197-1.776-4.323-4.198-4.323z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/mysql.svg b/assets/lib/simple-icons/icons/mysql.svg
index 5ac2cadf..195caada 100644
--- a/assets/lib/simple-icons/icons/mysql.svg
+++ b/assets/lib/simple-icons/icons/mysql.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>MySQL icon</title><path d="M16.405 5.676c-.115 0-.193.014-.274.033v.013h.014c.054.104.146.18.214.273.054.107.1.214.154.32l.014-.015c.094-.066.14-.172.14-.333-.04-.047-.046-.094-.08-.14-.04-.067-.126-.1-.18-.153zM5.77 18.87h-.927c-.03-1.562-.123-3.03-.27-4.41h-.008l-1.41 4.41H2.45l-1.4-4.41h-.01c-.103 1.323-.168 2.793-.195 4.41H0c.055-1.966.192-3.81.41-5.53h1.15l1.335 4.064h.008L4.25 13.34h1.095c.242 2.015.384 3.86.428 5.53zm4.017-4.08c-.378 2.045-.876 3.533-1.492 4.46-.482.716-1.01 1.073-1.583 1.073-.153 0-.34-.046-.566-.138v-.494c.11.017.24.026.386.026.268 0 .483-.075.647-.222.197-.18.295-.382.295-.605 0-.155-.077-.47-.23-.944L6.23 14.79h.91l.727 2.36c.164.536.233.91.205 1.123.4-1.064.678-2.227.835-3.483h.88zM22.112 18.87h-2.63v-5.53h.885v4.85h1.745zM18.792 19.005l-1.016-.5c.09-.076.177-.158.255-.25.433-.506.648-1.258.648-2.253 0-1.83-.718-2.746-2.155-2.746-.704 0-1.254.232-1.65.697-.43.508-.646 1.256-.646 2.245 0 .972.19 1.686.574 2.14.35.41.877.615 1.583.615.264 0 .506-.033.725-.098l1.325.772.36-.622zM15.5 17.763c-.225-.36-.337-.94-.337-1.736 0-1.393.424-2.09 1.27-2.09.443 0 .77.167.977.5.224.362.336.936.336 1.723 0 1.404-.424 2.108-1.27 2.108-.445 0-.77-.167-.978-.5zM13.842 17.338c0 .47-.172.856-.516 1.156s-.803.45-1.384.45c-.543 0-1.064-.172-1.573-.515l.237-.476c.438.22.833.328 1.19.328.332 0 .593-.073.783-.22.188-.147.3-.354.3-.615 0-.33-.23-.61-.648-.845-.388-.213-1.163-.657-1.163-.657-.422-.307-.632-.636-.632-1.177 0-.45.157-.81.47-1.085.315-.278.72-.415 1.22-.415.512 0 .98.136 1.4.41l-.213.476c-.36-.152-.715-.23-1.064-.23-.283 0-.502.068-.654.206-.153.136-.248.31-.248.524 0 .328.234.61.666.85.393.215 1.187.67 1.187.67.433.305.648.63.648 1.168zM23.224 11.486c-.535-.014-.95.04-1.297.188-.1.04-.26.04-.274.167.055.053.063.14.11.214.08.134.218.313.346.407.14.11.28.216.427.31.26.16.555.255.81.416.145.094.293.213.44.313.073.05.12.14.214.172v-.02c-.046-.06-.06-.147-.105-.214-.067-.067-.134-.127-.2-.193-.194-.26-.435-.487-.695-.675-.214-.146-.682-.35-.77-.595l-.013-.014c.146-.013.32-.066.46-.106.227-.06.435-.047.67-.106.106-.027.213-.06.32-.094v-.06c-.12-.12-.21-.283-.334-.395-.34-.295-.717-.582-1.104-.823-.21-.134-.476-.22-.697-.334-.08-.04-.214-.06-.26-.127-.12-.146-.19-.34-.275-.514-.192-.368-.38-.775-.547-1.163-.12-.262-.193-.523-.34-.763-.69-1.137-1.437-1.826-2.586-2.5-.247-.14-.543-.2-.856-.274-.167-.008-.334-.02-.5-.027-.11-.047-.216-.174-.31-.235-.38-.24-1.364-.76-1.644-.072-.18.434.267.862.422 1.082.115.153.26.328.34.5.047.116.06.235.107.356.106.294.207.622.347.897.073.14.153.287.247.413.054.073.146.107.167.227-.094.136-.1.334-.154.5-.24.757-.146 1.693.194 2.25.107.166.362.534.703.393.3-.12.234-.5.32-.835.02-.08.007-.133.048-.187v.015c.094.188.188.367.274.555.206.328.566.668.867.895.16.12.287.328.487.402v-.02h-.015c-.043-.058-.1-.086-.154-.133-.12-.12-.255-.267-.35-.4-.28-.377-.527-.79-.747-1.218-.11-.21-.202-.436-.29-.643-.04-.08-.04-.2-.107-.24-.1.146-.247.273-.32.453-.127.288-.14.642-.188 1.01-.027.007-.014 0-.027.014-.214-.052-.287-.274-.367-.46-.2-.475-.233-1.238-.06-1.785.047-.14.247-.582.167-.716-.042-.127-.174-.2-.247-.303-.087-.124-.18-.285-.24-.427-.16-.374-.24-.788-.414-1.162-.08-.173-.22-.354-.334-.513-.127-.18-.267-.307-.368-.52-.033-.073-.08-.194-.027-.274.014-.054.042-.075.094-.09.088-.072.335.022.422.062.247.1.455.194.662.334.094.066.195.193.315.226h.14c.214.047.455.014.655.073.355.114.675.28.962.46.876.556 1.596 1.345 2.085 2.286.08.154.115.295.188.455.14.33.313.663.455.982.14.315.275.636.476.897.1.14.502.213.682.286.133.06.34.115.46.188.23.14.454.3.67.454.11.076.443.243.463.378z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>MySQL</title><path d="M16.405 5.501c-.115 0-.193.014-.274.033v.013h.014c.054.104.146.18.214.273.054.107.1.214.154.32l.014-.015c.094-.066.14-.172.14-.333-.04-.047-.046-.094-.08-.14-.04-.067-.126-.1-.18-.153zM5.77 18.695h-.927a50.854 50.854 0 00-.27-4.41h-.008l-1.41 4.41H2.45l-1.4-4.41h-.01a72.892 72.892 0 00-.195 4.41H0c.055-1.966.192-3.81.41-5.53h1.15l1.335 4.064h.008l1.347-4.064h1.095c.242 2.015.384 3.86.428 5.53zm4.017-4.08c-.378 2.045-.876 3.533-1.492 4.46-.482.716-1.01 1.073-1.583 1.073-.153 0-.34-.046-.566-.138v-.494c.11.017.24.026.386.026.268 0 .483-.075.647-.222.197-.18.295-.382.295-.605 0-.155-.077-.47-.23-.944L6.23 14.615h.91l.727 2.36c.164.536.233.91.205 1.123.4-1.064.678-2.227.835-3.483zm12.325 4.08h-2.63v-5.53h.885v4.85h1.745zm-3.32.135l-1.016-.5c.09-.076.177-.158.255-.25.433-.506.648-1.258.648-2.253 0-1.83-.718-2.746-2.155-2.746-.704 0-1.254.232-1.65.697-.43.508-.646 1.256-.646 2.245 0 .972.19 1.686.574 2.14.35.41.877.615 1.583.615.264 0 .506-.033.725-.098l1.325.772.36-.622zM15.5 17.588c-.225-.36-.337-.94-.337-1.736 0-1.393.424-2.09 1.27-2.09.443 0 .77.167.977.5.224.362.336.936.336 1.723 0 1.404-.424 2.108-1.27 2.108-.445 0-.77-.167-.978-.5zm-1.658-.425c0 .47-.172.856-.516 1.156-.344.3-.803.45-1.384.45-.543 0-1.064-.172-1.573-.515l.237-.476c.438.22.833.328 1.19.328.332 0 .593-.073.783-.22a.754.754 0 00.3-.615c0-.33-.23-.61-.648-.845-.388-.213-1.163-.657-1.163-.657-.422-.307-.632-.636-.632-1.177 0-.45.157-.81.47-1.085.315-.278.72-.415 1.22-.415.512 0 .98.136 1.4.41l-.213.476a2.726 2.726 0 00-1.064-.23c-.283 0-.502.068-.654.206a.685.685 0 00-.248.524c0 .328.234.61.666.85.393.215 1.187.67 1.187.67.433.305.648.63.648 1.168zm9.382-5.852c-.535-.014-.95.04-1.297.188-.1.04-.26.04-.274.167.055.053.063.14.11.214.08.134.218.313.346.407.14.11.28.216.427.31.26.16.555.255.81.416.145.094.293.213.44.313.073.05.12.14.214.172v-.02c-.046-.06-.06-.147-.105-.214-.067-.067-.134-.127-.2-.193a3.223 3.223 0 00-.695-.675c-.214-.146-.682-.35-.77-.595l-.013-.014c.146-.013.32-.066.46-.106.227-.06.435-.047.67-.106.106-.027.213-.06.32-.094v-.06c-.12-.12-.21-.283-.334-.395a8.867 8.867 0 00-1.104-.823c-.21-.134-.476-.22-.697-.334-.08-.04-.214-.06-.26-.127-.12-.146-.19-.34-.275-.514a17.69 17.69 0 01-.547-1.163c-.12-.262-.193-.523-.34-.763-.69-1.137-1.437-1.826-2.586-2.5-.247-.14-.543-.2-.856-.274-.167-.008-.334-.02-.5-.027-.11-.047-.216-.174-.31-.235-.38-.24-1.364-.76-1.644-.072-.18.434.267.862.422 1.082.115.153.26.328.34.5.047.116.06.235.107.356.106.294.207.622.347.897.073.14.153.287.247.413.054.073.146.107.167.227-.094.136-.1.334-.154.5-.24.757-.146 1.693.194 2.25.107.166.362.534.703.393.3-.12.234-.5.32-.835.02-.08.007-.133.048-.187v.015c.094.188.188.367.274.555.206.328.566.668.867.895.16.12.287.328.487.402v-.02h-.015c-.043-.058-.1-.086-.154-.133a3.445 3.445 0 01-.35-.4 8.76 8.76 0 01-.747-1.218c-.11-.21-.202-.436-.29-.643-.04-.08-.04-.2-.107-.24-.1.146-.247.273-.32.453-.127.288-.14.642-.188 1.01-.027.007-.014 0-.027.014-.214-.052-.287-.274-.367-.46-.2-.475-.233-1.238-.06-1.785.047-.14.247-.582.167-.716-.042-.127-.174-.2-.247-.303a2.478 2.478 0 01-.24-.427c-.16-.374-.24-.788-.414-1.162-.08-.173-.22-.354-.334-.513-.127-.18-.267-.307-.368-.52-.033-.073-.08-.194-.027-.274.014-.054.042-.075.094-.09.088-.072.335.022.422.062.247.1.455.194.662.334.094.066.195.193.315.226h.14c.214.047.455.014.655.073.355.114.675.28.962.46a5.953 5.953 0 012.085 2.286c.08.154.115.295.188.455.14.33.313.663.455.982.14.315.275.636.476.897.1.14.502.213.682.286.133.06.34.115.46.188.23.14.454.3.67.454.11.076.443.243.463.378z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/n26.svg b/assets/lib/simple-icons/icons/n26.svg
new file mode 100644
index 00000000..74b875e5
--- /dev/null
+++ b/assets/lib/simple-icons/icons/n26.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>N26</title><path d="M0 3.803v1.195h7.436V3.803H0zM12.69 7.29c-2.034 0-3.038 1.252-3.038 2.684 0 .234.027.468.092.728l1.393.135a3.697 3.697 0 0 1-.09-.793c0-1.072.71-1.586 1.598-1.586.866 0 1.507.485 1.507 1.652 0 1.186-.58 1.995-1.464 2.88-.925.923-2.4 2.027-3.112 2.534v1.092h6.135v-1.195h-4.168c.695-.48 1.69-1.279 2.133-1.72.502-.503 1.931-1.794 1.931-3.636 0-1.903-1.24-2.775-2.918-2.775zm8.34 0c-1.976 0-3.454 1.517-3.454 4.916 0 3.017 1.233 4.508 3.356 4.508 1.754 0 3.068-1.198 3.068-3.172 0-1.542-.823-3.066-2.793-3.066-1.1 0-1.884.51-2.281 1.263 0-1.78.62-3.33 2.094-3.33.937 0 1.309.538 1.507 1.422l1.366-.271c-.321-1.527-1.292-2.27-2.864-2.27zM.075 7.389v9.228h1.33v-6.312c0-.56-.013-.898-.039-1.223h.026c.136.372.298.699.539 1.123l3.732 6.412h1.69V7.39H6.04v6.31c0 .56.013.898.04 1.223h-.028a7.252 7.252 0 0 0-.537-1.123L1.783 7.389H.076zm20.817 4.185c1.114 0 1.744.822 1.744 1.992 0 1.256-.717 2.034-1.701 2.034-1.09 0-1.843-1.001-1.973-2.329.33-1.133 1.063-1.697 1.93-1.697zM0 19.008v1.19h7.436v-1.19H0z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/namebase.svg b/assets/lib/simple-icons/icons/namebase.svg
new file mode 100644
index 00000000..a04f13ca
--- /dev/null
+++ b/assets/lib/simple-icons/icons/namebase.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Namebase</title><path d="M23.0978 2.406c0 1.3288-1.0516 2.406-2.3488 2.406s-2.3487-1.0772-2.3487-2.406S19.4519 0 20.7491 0s2.3487 1.0772 2.3487 2.406zm-11.5089.5415C5.6868 2.9475.9022 7.8488.9022 13.8948V24h6.5764V13.8948c0-2.3254 1.8403-4.2105 4.1103-4.2105s4.1103 1.8851 4.1103 4.2105V24h6.5764V13.8948c0-6.046-4.7846-10.9473-10.6867-10.9473z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/namecheap.svg b/assets/lib/simple-icons/icons/namecheap.svg
new file mode 100644
index 00000000..e0ce27f8
--- /dev/null
+++ b/assets/lib/simple-icons/icons/namecheap.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Namecheap</title><path d="M17.295 17.484c.227.403.57.728.985.931-.309.15-.647.229-.99.232h-3.068a2.26 2.26 0 0 1-1.957-1.143L6.705 6.511a2.27 2.27 0 0 0-.974-.922c.309-.153.652-.233.997-.232h3.05c.81.003 1.558.438 1.959 1.143l5.558 10.984zm-9.329-7.392L6.269 6.755c-.209-.392-.582-.657-.984-.829-.204.165-.391.35-.522.581-.184.349-4.391 8.648-4.569 8.987a2.245 2.245 0 0 0 4.016 1.999l3.756-7.401zm15.846-1.593a2.245 2.245 0 0 0-1.162-2.955v-.001a2.243 2.243 0 0 0-.892-.187l-.003-.011c-.816 0-1.569.443-1.965 1.157l-3.749 7.414 1.689 3.323c.213.399.59.664.998.839.252-.2.473-.444.605-.742l4.479-8.837z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/nano.svg b/assets/lib/simple-icons/icons/nano.svg
new file mode 100644
index 00000000..92b92442
--- /dev/null
+++ b/assets/lib/simple-icons/icons/nano.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Nano</title><path d="M22.2864 6.8576c-.9453 0-1.7135.7665-1.7135 1.7136 0 1.2843-.4275 1.7136-1.7136 1.7136-.9453 0-1.7135.7664-1.7135 1.7135 0 1.2843-.4276 1.7136-1.7136 1.7136-.9453 0-1.7135.7664-1.7135 1.7135 0 .9454.7665 1.7136 1.7135 1.7136.9454 0 1.7136-.7665 1.7136-1.7136 0-1.2843.4275-1.7135 1.7135-1.7135.9454 0 1.7136-.7665 1.7136-1.7136 0-1.2843.4275-1.7135 1.7135-1.7135.9454 0 1.7136-.7666 1.7136-1.7136 0-.9454-.7682-1.7136-1.7136-1.7136zm-13.717.0017c-.9453 0-1.7135.7665-1.7135 1.7136 0 1.2843-.4275 1.7136-1.7135 1.7136-.9454 0-1.7136.7664-1.7136 1.7135 0 .947.77 1.7135 1.7153 1.7135S6.8576 12.9471 6.8576 12c0-1.2843.4293-1.7135 1.7136-1.7135s1.7136.4275 1.7136 1.7135c0 .947.7698 1.7135 1.7152 1.7135.9453 0 1.7135-.7664 1.7135-1.7135 0-.9454-.7664-1.7135-1.7169-1.7135-1.2843 0-1.7135-.4276-1.7135-1.7136 0-.9453-.7683-1.7136-1.7136-1.7136zm-6.8559 6.856A1.7136 1.7136 0 0 0 0 15.4287a1.7136 1.7136 0 0 0 1.7135 1.7136 1.7136 1.7136 0 0 0 1.7136-1.7136 1.7136 1.7136 0 0 0-1.7135-1.7136Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/nasa.svg b/assets/lib/simple-icons/icons/nasa.svg
new file mode 100644
index 00000000..8aff9ca5
--- /dev/null
+++ b/assets/lib/simple-icons/icons/nasa.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>NASA</title><path d="M4.344 13.598c.075.281.195.39.407.39.22 0 .335-.132.335-.39V8.804h1.379v4.794c0 .675-.088.968-.43 1.31-.247.248-.703.439-1.278.439-.464 0-.909-.154-1.192-.438-.249-.25-.386-.505-.599-1.311l-.846-3.196c-.074-.281-.194-.39-.406-.39-.22 0-.336.132-.336.39v4.794H0v-4.794c0-.675.088-.968.43-1.31.247-.248.703-.439 1.278-.439.464 0 .909.154 1.192.438.249.25.385.505.599 1.311zM22.575 15.196l-1.591-4.98a.415.415 0 00-.06-.132.226.226 0 00-.186-.082.226.226 0 00-.185.082.414.414 0 00-.06.132l-1.591 4.98h-1.425l1.739-5.44c.09-.283.22-.524.384-.684.282-.275.614-.419 1.138-.419.525 0 .857.144 1.139.42.164.16.294.4.384.683L24 15.196h-1.425zM15.531 15.196c.903 0 1.344-.192 1.692-.538.385-.383.569-.802.569-1.427 0-.553-.202-1.064-.51-1.37-.403-.4-.903-.527-1.719-.527h-1.142c-.436 0-.61-.053-.748-.188-.094-.093-.139-.23-.139-.393 0-.168.04-.334.156-.448.103-.1.243-.147.511-.147h3.301V8.804h-3.049c-.903 0-1.343.192-1.691.538-.385.383-.57.802-.57 1.427 0 .553.203 1.064.51 1.37.404.4.904.527 1.72.527h1.141c.437 0 .61.053.748.188.095.093.14.23.14.393 0 .169-.041.335-.157.448-.102.1-.242.147-.51.147h-3.405l-1.306-4.086c-.09-.283-.22-.524-.384-.684-.282-.275-.615-.419-1.139-.419s-.857.144-1.138.42c-.165.16-.294.4-.385.683l-1.738 5.44h1.424l1.592-4.98a.415.415 0 01.06-.132.226.226 0 01.185-.082c.082 0 .142.028.186.082a.413.413 0 01.06.132l1.591 4.98h4.144z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/nationalgrid.svg b/assets/lib/simple-icons/icons/nationalgrid.svg
new file mode 100644
index 00000000..a3a36e55
--- /dev/null
+++ b/assets/lib/simple-icons/icons/nationalgrid.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>National Grid</title><path d="M0 11.06h.292v.415h.01c.106-.289.426-.485.764-.485.673 0 .877.355.877.928v1.547H1.65v-1.5c0-.415-.135-.728-.608-.728-.464 0-.742.355-.75.825v1.403H0zm2.467.736c.027-.563.422-.806.969-.806.422 0 .88.13.88.774v1.277c0 .112.056.177.172.177.033 0 .07-.01.093-.019v.247a.8.8 0 01-.19.019c-.297 0-.343-.168-.343-.42h-.01c-.204.313-.412.49-.871.49-.44 0-.803-.22-.803-.704 0-.676.655-.699 1.285-.773.241-.028.375-.061.375-.327 0-.396-.282-.494-.625-.494-.362 0-.63.168-.64.56zm1.557.355h-.008c-.038.07-.168.093-.246.107-.497.088-1.113.084-1.113.554 0 .294.26.476.533.476.445 0 .84-.285.834-.755zm1.443-1.091h.487v.247h-.487v1.622c0 .19.028.302.236.317.084 0 .167-.005.25-.015v.252c-.088 0-.171.01-.26.01-.388 0-.523-.13-.518-.541v-1.645h-.418v-.247h.418v-.722h.292zm1.308 2.405V11.06h-.293v2.405zm0-2.857v-.47h-.293v.47zm2.702 1.655c0 .69-.398 1.272-1.13 1.272-.734 0-1.132-.583-1.132-1.272 0-.69.398-1.273 1.131-1.273s1.131.583 1.131 1.273m-1.97 0c0 .512.278 1.025.84 1.025.56 0 .838-.513.838-1.025 0-.513-.278-1.026-.839-1.026-.56 0-.839.513-.839 1.026m2.401-1.203h.293v.415h.01c.106-.289.425-.485.764-.485.673 0 .877.355.877.928v1.547h-.292v-1.5c0-.415-.135-.728-.608-.728-.464 0-.742.355-.751.825v1.403h-.293zm2.467.736c.029-.563.422-.806.97-.806.421 0 .88.13.88.774v1.277c0 .112.056.177.172.177a.27.27 0 00.093-.019v.247a.804.804 0 01-.19.019c-.298 0-.344-.168-.344-.42h-.009c-.204.313-.412.49-.872.49-.44 0-.802-.22-.802-.704 0-.676.654-.699 1.285-.773.24-.028.375-.061.375-.327 0-.396-.283-.494-.626-.494-.361 0-.63.168-.64.56zm1.558.355h-.01c-.036.07-.166.093-.245.107-.496.088-1.113.084-1.113.554 0 .294.26.476.534.476.445 0 .839-.285.834-.755zm1.33 1.314v-3.328h-.291v3.328zm2.839-2.48v2.35c0 .428-.033 1.141-1.248 1.141-.51 0-1.047-.219-1.075-.746h.704c.028.126.08.252.455.252.347 0 .514-.168.514-.569v-.298l-.009-.009c-.106.191-.269.373-.658.373-.593 0-1.062-.415-1.062-1.282 0-.857.482-1.277 1.024-1.277.46 0 .645.27.724.434h.01v-.368zm-1.197 1.944c.441 0 .552-.378.552-.718 0-.4-.195-.727-.557-.727-.24 0-.51.178-.51.755 0 .317.13.69.515.69zm1.753-1.943h.62v.429h.01c.135-.252.283-.495.678-.495.041 0 .083.005.125.01v.661c-.056-.009-.125-.009-.186-.009-.505 0-.598.317-.598.592v1.29h-.649zm2.526 2.478v-2.495h-.648v2.495zm-.802-3.461l.477.479.477-.48-.477-.478zM24 13.465h-.635v-.312h-.01c-.157.28-.444.377-.713.377-.732 0-1.039-.652-1.039-1.333 0-.857.482-1.277 1.025-1.277a.79.79 0 01.714.387h.009V10.12H24zm-1.196-.47c.413 0 .575-.346.575-.714 0-.396-.111-.797-.556-.797-.413 0-.552.369-.552.76 0 .294.115.75.533.75z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/nativescript.svg b/assets/lib/simple-icons/icons/nativescript.svg
index b920ac56..6a175595 100644
--- a/assets/lib/simple-icons/icons/nativescript.svg
+++ b/assets/lib/simple-icons/icons/nativescript.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>NativeScript icon</title><path d="M1.77 1.76A5.68 5.68 0 0 1 5.8 0h12.6c1.37 0 2.65.6 3.83 1.76A5.43 5.43 0 0 1 24 5.7v12.77c0 1.34-.56 2.58-1.68 3.73A5.77 5.77 0 0 1 18.25 24H5.87a6.3 6.3 0 0 1-4.1-1.57C.69 21.45.1 20.03 0 18.13V5.73a5.21 5.21 0 0 1 1.77-3.97zm6.25 8.3l7.93 10.06h2.12c.49-.06.88-.2 1.17-.43.3-.23.5-.56.64-1v-4.94c.08-.95.67-1.54 1.77-1.75-1.1-.4-1.69-1.02-1.77-1.86V5.42c-.12-.44-.33-.8-.64-1.07a1.83 1.83 0 0 0-1.09-.47H16v10.2L8.02 3.87H5.79c-.56.1-.97.3-1.25.6S4.08 5.25 4 5.9v4.85c-.35.69-.9 1.1-1.65 1.25.85.16 1.4.61 1.65 1.36v4.77c.02.55.2 1 .54 1.37.33.36.7.53 1.1.5H8l.02-9.94z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>NativeScript</title><path d="M1.77 1.76A5.68 5.68 0 0 1 5.8 0h12.6c1.37 0 2.65.6 3.83 1.76A5.43 5.43 0 0 1 24 5.7v12.77c0 1.34-.56 2.58-1.68 3.73A5.77 5.77 0 0 1 18.25 24H5.87a6.3 6.3 0 0 1-4.1-1.57C.69 21.45.1 20.03 0 18.13V5.73a5.21 5.21 0 0 1 1.77-3.97zm6.25 8.3l7.93 10.06h2.12c.49-.06.88-.2 1.17-.43.3-.23.5-.56.64-1v-4.94c.08-.95.67-1.54 1.77-1.75-1.1-.4-1.69-1.02-1.77-1.86V5.42c-.12-.44-.33-.8-.64-1.07a1.83 1.83 0 0 0-1.09-.47H16v10.2L8.02 3.87H5.79c-.56.1-.97.3-1.25.6S4.08 5.25 4 5.9v4.85c-.35.69-.9 1.1-1.65 1.25.85.16 1.4.61 1.65 1.36v4.77c.02.55.2 1 .54 1.37.33.36.7.53 1.1.5H8l.02-9.94z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/naver.svg b/assets/lib/simple-icons/icons/naver.svg
new file mode 100644
index 00000000..80e760a7
--- /dev/null
+++ b/assets/lib/simple-icons/icons/naver.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Naver</title><path d="M1.6 0S0 0 0 1.6v20.8S0 24 1.6 24h20.8s1.6 0 1.6-1.6V1.6S24 0 22.4 0zm3.415 5.6h4.78l4.425 6.458V5.6h4.765v12.8h-4.78L9.78 11.943V18.4H5.015Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/nba.svg b/assets/lib/simple-icons/icons/nba.svg
new file mode 100644
index 00000000..64aa0955
--- /dev/null
+++ b/assets/lib/simple-icons/icons/nba.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>NBA</title><path d="M9.19 0a2.486 2.486 0 0 0-2.485 2.484v19.029A2.488 2.488 0 0 0 9.19 24h5.615a2.493 2.493 0 0 0 2.49-2.487V2.484A2.488 2.488 0 0 0 14.81 0zm0 .584h3.21c-.62.237-.707.508-.73 1.366-.105.01-.325-.087-.25.434 0 0 .043.346.18.286-.133.918.023.99-.93 1.031l-.047.067c-.95.093-1.25-.027-2.05 1.603 0 0-.207.505-.268.714-.197.415-.674 1.328-.819 1.919-.046.2-.14.264-.01.553.185.417-.124.527.95.496V9.3s-.286.247-.346.398c-.061.147-.226.89-.22 1.237.019.917.767 1.683.992 2.597l.492.07c.282.634 1.495 2.355 1.743 2.582.057.159.365.355.545.551.149.141 1.025 1.1 2.054 1.692-.007-.001.164.344.249.618-.342.275.32.777.52 1.609.012.107-.19.222.114.495-.022 1.256-.402 1.918.241 2.266H9.191a1.9 1.9 0 0 1-1.9-1.901V2.486a1.9 1.9 0 0 1 1.9-1.902zm3.804.002h1.815a1.9 1.9 0 0 1 1.897 1.898v9.193a1.653 1.653 0 0 0-.22-.397c0-.255-.272-.249-.346-.344-.07-.081.067-.128-.407-.235-.09-.05-.158-.747-.158-.747-.07-.447-.229-.754-.467-1.227-.12-.243-.177-1.001-.305-1.386.071-1.767-.493-2.28-.95-2.569-.174-.11-.262-.191-.433-.29l-.005-.082c-.133-.126-.402-.264-.623-.362-.068-.07-.037-.22.01-.276.15-.02.348-.356.513-.703.129.009.174-.118.214-.19.138-.222.288-.413.096-.542.435-.777.154-1.301-.08-1.321-.095-.195-.26-.316-.551-.42zm.551 6.338c.06.319.34 1.929.456 2.187.123.259.535 1.05.73 1.54a1.69 1.69 0 0 0-1.294 1.646 1.692 1.692 0 0 0 1.693 1.691 1.692 1.692 0 0 0 1.576-1.066v8.59a1.887 1.887 0 0 1-1.598 1.877h-.017c.833-.502.319-1.46.16-2.022-.012-.033.014-.074.026-.1.045-.08-.045-.257-.045-.257-.098-.09-.127-.561-.182-.772-.089-.358.157-.971.157-1.18 0-.206-.156-.491-.445-.858-.069-.078-.276-1.86-.462-2.313-.258-.623-.339-.526-.64-1.266-.24-.525-.055-1.295-.59-3.085.005.006.12-.113.12-.113s-.422-1.55-.561-1.975c-.14-.426-.385-.456-.385-.456s.002-.172.012-.216c.02-.07.516-1.367.558-1.407.001-.03.717-.514.731-.445Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/nbb.svg b/assets/lib/simple-icons/icons/nbb.svg
index 4d1e4ac4..f712d0b8 100644
--- a/assets/lib/simple-icons/icons/nbb.svg
+++ b/assets/lib/simple-icons/icons/nbb.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>NBB icon</title><path d="M2.714 11.176h.02l.167 4.327h2.105L6.5 8.482H4.652l-.915 4.288h-.02L3.63 8.482H1.495L0 15.503h1.79zm7.254.649l.01-.02c.462-.098 1.219-.481 1.453-1.583.248-1.16-.362-1.74-1.59-1.74H7.007l-1.494 7.02h2.94c1.209 0 2.153-.619 2.458-2.025.295-1.416-.549-1.613-.944-1.652zm-1.052 1.504c-.099.462-.354.757-.787.757h-.345l.334-1.602h.354c.454 0 .542.373.444.845zm.472-2.753c-.108.511-.452.669-.708.669h-.295l.285-1.347h.266c.403 0 .55.225.452.678zm6.83 2.901c.295-1.416-.55-1.613-.944-1.652l.01-.02c.462-.098 1.219-.481 1.453-1.583.248-1.16-.362-1.74-1.591-1.74h-2.831l-1.495 7.02h2.94c1.21 0 2.153-.619 2.458-2.025zm-1.996-.148c-.098.462-.354.757-.787.757h-.344l.335-1.602h.354c.452 0 .54.373.442.845zm.472-2.753c-.108.511-.453.669-.708.669h-.294l.285-1.347h.266c.402 0 .55.225.45.678zm4.97-2.094h-2.951c.75.615.51 1.669.51 1.669H19.2l2.338 1.857-2.167 1.834h-2.72c-.117.568-.712 1.424-1.125 1.676h4.148L24 12.01z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>NBB</title><path d="M2.714 11.176h.02l.167 4.327h2.105L6.5 8.482H4.652l-.915 4.288h-.02L3.63 8.482H1.495L0 15.503h1.79zm7.254.649l.01-.02c.462-.098 1.219-.481 1.453-1.583.248-1.16-.362-1.74-1.59-1.74H7.007l-1.494 7.02h2.94c1.209 0 2.153-.619 2.458-2.025.295-1.416-.549-1.613-.944-1.652zm-1.052 1.504c-.099.462-.354.757-.787.757h-.345l.334-1.602h.354c.454 0 .542.373.444.845zm.472-2.753c-.108.511-.452.669-.708.669h-.295l.285-1.347h.266c.403 0 .55.225.452.678zm6.83 2.901c.295-1.416-.55-1.613-.944-1.652l.01-.02c.462-.098 1.219-.481 1.453-1.583.248-1.16-.362-1.74-1.591-1.74h-2.831l-1.495 7.02h2.94c1.21 0 2.153-.619 2.458-2.025zm-1.996-.148c-.098.462-.354.757-.787.757h-.344l.335-1.602h.354c.452 0 .54.373.442.845zm.472-2.753c-.108.511-.453.669-.708.669h-.294l.285-1.347h.266c.402 0 .55.225.45.678zm4.97-2.094h-2.951c.75.615.51 1.669.51 1.669H19.2l2.338 1.857-2.167 1.834h-2.72c-.117.568-.712 1.424-1.125 1.676h4.148L24 12.01z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ndr.svg b/assets/lib/simple-icons/icons/ndr.svg
index f4b18687..a5f6a558 100644
--- a/assets/lib/simple-icons/icons/ndr.svg
+++ b/assets/lib/simple-icons/icons/ndr.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>NDR icon</title><path d="M5.184 19.325l-3.137-5.648v5.649H0V9.64h2.149l3.267 6.025V9.641h2.047v9.684zm2.279-9.684V.537H8.61v9.104zm0 13.822v-4.138H8.61v4.138zM12.037 9.64c2.395 0 3.63 1.147 3.63 3.368v2.918c0 2.28-1.19 3.398-3.63 3.398H8.61V9.641zm-.19 7.855c1.163 0 1.728-.581 1.728-1.771v-2.498c0-1.176-.58-1.757-1.727-1.757h-1.03v6.026zm9.845 1.83l-1.728-3.718h-1.161v3.717h-2.15V9.641h3.384c2.381 0 3.513.944 3.513 2.962 0 1.335-.493 2.134-1.597 2.613L24 19.326zm-1.568-5.475c.857 0 1.365-.494 1.365-1.32 0-.858-.377-1.177-1.365-1.177H18.76v2.498h1.365z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>NDR</title><path d="M5.184 19.325l-3.137-5.648v5.649H0V9.64h2.149l3.267 6.025V9.641h2.047v9.684zm2.279-9.684V.537H8.61v9.104zm0 13.822v-4.138H8.61v4.138zM12.037 9.64c2.395 0 3.63 1.147 3.63 3.368v2.918c0 2.28-1.19 3.398-3.63 3.398H8.61V9.641zm-.19 7.855c1.163 0 1.728-.581 1.728-1.771v-2.498c0-1.176-.58-1.757-1.727-1.757h-1.03v6.026zm9.845 1.83l-1.728-3.718h-1.161v3.717h-2.15V9.641h3.384c2.381 0 3.513.944 3.513 2.962 0 1.335-.493 2.134-1.597 2.613L24 19.326zm-1.568-5.475c.857 0 1.365-.494 1.365-1.32 0-.858-.377-1.177-1.365-1.177H18.76v2.498h1.365z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/nec.svg b/assets/lib/simple-icons/icons/nec.svg
index 51011af3..f6264d7e 100644
--- a/assets/lib/simple-icons/icons/nec.svg
+++ b/assets/lib/simple-icons/icons/nec.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>NEC icon</title><path d="M.08 9.27H2c.44 0 .95.4 1.19.63l3.36 3.69V9.27H7.7v5.9h-2c-.36-.02-.71-.1-1.12-.49l-3.36-3.7v4.18H.08V9.27zM23.92 15.2c-1.37.19-2.75.2-4.14.09a6.21 6.21 0 01-2.34-.61c-.92-.48-1.22-1.54-1.2-2.5 0-.88.27-1.83 1.07-2.35A4.33 4.33 0 0119 9.27c1.62-.28 3.25-.22 4.84-.04v.84c-1.87-.36-3.85-.27-4.52.58a2.25 2.25 0 00-.48 1.5c0 .8.28 2 1.92 2.24 1.07.15 2.13.03 3.16-.15v.96zM12.2 14.28c.16 0 2.74.02 3.63 0v.88c-1.79.07-3.5.1-5.3.03-1.53-.06-1.8-.82-1.82-1.55V9.27h7.03v.84H11.2v1.5h4.15v.82h-4.15l.02 1.03c.02.57.3.78.99.82z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>NEC</title><path d="M21.496 8.8a13.892 13.892 0 0 0-2.453.198c-.6.11-1.165.223-1.693.57-.807.526-1.076 1.49-1.086 2.394-.012.98.283 2.06 1.21 2.54.735.384 1.537.552 2.355.624 1.397.118 2.792.1 4.171-.09v-.98c-1.04.19-2.107.31-3.184.152-1.652-.24-1.93-1.473-1.93-2.286 0-.451.06-.987.482-1.526.676-.865 2.667-.956 4.55-.59V8.95a22.777 22.777 0 0 0-2.422-.15zm-12.812.197v4.446c.03.744.295 1.518 1.834 1.581 1.814.075 3.54.045 5.334-.024v-.896c-.89.014-3.487.001-3.65 0-.704-.042-.973-.256-.998-.837a32.12 32.12 0 0 1-.02-1.055h4.177v-.834h-4.176V9.851h4.582v-.854zM0 8.997v5.999h1.146v-4.254l3.383 3.764c.41.404.763.478 1.122.49h2.015V8.997h-1.15v4.397l-3.39-3.757c-.232-.227-.753-.64-1.194-.64z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/neo4j.svg b/assets/lib/simple-icons/icons/neo4j.svg
index 72293715..6349ca49 100644
--- a/assets/lib/simple-icons/icons/neo4j.svg
+++ b/assets/lib/simple-icons/icons/neo4j.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Neo4j icon</title><path d="M22.717 8.417c-.014 2.959-2.412 5.321-5.391 5.309-2.946-.014-5.306-2.424-5.291-5.407.014-2.9 2.458-5.287 5.391-5.265 2.926.022 5.304 2.434 5.291 5.363zM9.813 24c-2.357.008-4.337-1.965-4.361-4.344-.024-2.33 1.955-4.33 4.295-4.34 2.438-.01 4.395 1.916 4.395 4.326.003 2.383-1.952 4.35-4.329 4.358zM8.923 2.84c0 1.562-1.286 2.847-2.841 2.839C4.533 5.672 3.221 4.35 3.246 2.82 3.271 1.268 4.588-.022 6.126 0c1.531.023 2.797 1.308 2.797 2.84zM21.9 11.948c-2.697 2.356-5 2.779-7.42 1.36-2.14-1.254-3.196-3.721-2.654-6.197.587-2.68 2.506-4.085 6.197-4.467C15.222.642 12.26.025 9.008.821c-.421.102-.241.261-.126.473.786 1.447.383 3.207-.942 4.151-1.325.943-3.126.755-4.218-.49-.322-.367-.427-.269-.654.063C.56 8.691.705 13.697 3.44 17.203c.492.631 1.027 1.219 1.691 1.71.75-3.208 3.394-4.251 5.519-3.888 2.593.442 4.002 2.602 3.758 5.787 3.516-.43 7.927-5.65 7.492-8.864zm-9.088-9.853c.462-.023.87.365.881.835.009.456-.347.827-.807.843-.506.017-.862-.32-.866-.818-.005-.476.328-.837.792-.86zM5.076 6.629c.48.009.853.401.832.876-.019.452-.398.804-.859.798-.46-.006-.821-.366-.828-.827-.007-.483.369-.855.855-.847zm-.721 3.099c.003-.451.374-.824.829-.835.461-.011.825.335.844.803.02.489-.337.878-.813.887-.473.007-.863-.381-.86-.855zm.515 2.371c.023-.46.396-.806.858-.797.479.01.822.391.802.891-.019.468-.384.813-.846.797-.478-.014-.838-.409-.814-.891zm1.992 3.034c-.5.007-.857-.345-.851-.838.006-.46.371-.832.818-.836.47-.004.873.391.869.853-.002.452-.371.813-.836.821zm3.831-12.11c-.469.012-.868-.38-.866-.849.002-.481.384-.84.876-.826.462.013.814.376.813.837-.001.449-.372.827-.823.838zm5.008 15.122c-.494-.004-.856-.375-.838-.858.018-.446.402-.81.855-.808.479.004.85.393.833.875-.015.462-.37.792-.85.791zm1.534-1.77c-.482.011-.872-.367-.866-.84.005-.462.363-.822.825-.833.485-.011.864.356.863.841.001.455-.362.821-.822.832z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Neo4j</title><path d="M6.201 0a3.035 3.035 0 00-2.694 4.425 10.399 10.399 0 00-2.249 6.46c0 3.365 1.603 6.358 4.086 8.258A4.511 4.511 0 009.84 24c1.914 0 3.62-1.21 4.254-3.016a10.383 10.383 0 007.941-9.818c1.78-3.163.06-7.152-3.463-8.027A10.378 10.378 0 008.45.997 3.015 3.015 0 006.201 0zm5.447.986c2.246 0 4.315.746 5.975 2.004a5.493 5.493 0 103.865 8.973 9.9 9.9 0 01-7.24 8.476c.566-2.69-1.313-5.016-3.663-5.398-2.175-.353-4.578.91-5.163 3.541a9.87 9.87 0 01-3.673-7.697c0-2.268.758-4.346 2.04-6.015A3.024 3.024 0 006.2 6.071a3.038 3.038 0 002.568-4.658 9.846 9.846 0 012.879-.427zm-.96.588a.812.812 0 00-.573 1.387.812.812 0 10.572-1.387zm2.128.748a.812.812 0 10.002 1.624.812.812 0 00-.002-1.624zM5.193 6.748a.812.812 0 10.002 1.624.812.812 0 00-.002-1.624zm.135 2.225a.812.812 0 00-.577 1.385.812.812 0 10.577-1.385zm.496 2.357a.812.812 0 10.002 1.624.812.812 0 00-.002-1.624zm1.114 2.115a.812.812 0 00-.573 1.387.812.812 0 10.572-1.387zm10.156 1.211a.812.812 0 00-.573 1.387.812.812 0 10.573-1.387zM15.62 16.4a.812.812 0 00-.576 1.386.812.812 0 10.576-1.386z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/neovim.svg b/assets/lib/simple-icons/icons/neovim.svg
index 7f7ef426..2975ba4e 100644
--- a/assets/lib/simple-icons/icons/neovim.svg
+++ b/assets/lib/simple-icons/icons/neovim.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Neovim icon</title><path d="M2.902,4.998l3.864,5.754v12.151l-4.207-4.198V5.344L2.902,4.998 M2.97,4.287L2.107,5.158v13.734l5.112,5.101 v-13.38L2.97,4.287L2.97,4.287z M21.858,5.207L16.676,0v13.331l4.335,6.519c0,0,0.882-0.957,0.882-0.957L21.858,5.207z M7.215,0.001 l13.29,20.28L16.786,24L3.489,3.765L7.215,0.001z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Neovim</title><path d="M2.214 4.954v13.615L7.655 24V10.314L3.312 3.845 2.214 4.954zm4.999 17.98l-4.557-4.548V5.136l.59-.596 3.967 5.908v12.485zm14.573-4.457l-.862.937-4.24-6.376V0l5.068 5.092.034 13.385zM7.431.001l12.998 19.835-3.637 3.637L3.787 3.683 7.43 0z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/nestjs.svg b/assets/lib/simple-icons/icons/nestjs.svg
new file mode 100644
index 00000000..eb4ca774
--- /dev/null
+++ b/assets/lib/simple-icons/icons/nestjs.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>NestJS</title><path d="M14.131.047c-.173 0-.334.037-.483.087.316.21.49.49.576.806.007.043.019.074.025.117a.681.681 0 0 1 .013.112c.024.545-.143.614-.26.936-.18.415-.13.861.086 1.22a.74.74 0 0 0 .074.137c-.235-1.568 1.073-1.803 1.314-2.293.019-.428-.334-.713-.613-.911a1.37 1.37 0 0 0-.732-.21zM16.102.4c-.024.143-.006.106-.012.18-.006.05-.006.112-.012.161-.013.05-.025.1-.044.149-.012.05-.03.1-.05.149l-.067.142c-.02.025-.031.05-.05.075l-.037.055a2.152 2.152 0 0 1-.093.124c-.037.038-.068.081-.112.112v.006c-.037.031-.074.068-.118.1-.13.099-.278.173-.415.266-.043.03-.087.056-.124.093a.906.906 0 0 0-.118.099c-.043.037-.074.074-.111.118-.031.037-.068.08-.093.124a1.582 1.582 0 0 0-.087.13c-.025.05-.043.093-.068.142-.019.05-.037.093-.05.143a2.007 2.007 0 0 0-.043.155c-.006.025-.006.056-.012.08-.007.025-.007.05-.013.075 0 .05-.006.105-.006.155 0 .037 0 .074.006.111 0 .05.006.1.019.155.006.05.018.1.03.15.02.049.032.098.05.148.013.03.031.062.044.087l-1.426-.552c-.241-.068-.477-.13-.719-.186l-.39-.093c-.372-.074-.75-.13-1.128-.167-.013 0-.019-.006-.031-.006A11.082 11.082 0 0 0 8.9 2.855c-.378.025-.756.074-1.134.136a12.45 12.45 0 0 0-.837.174l-.279.074c-.092.037-.18.08-.266.118l-.205.093c-.012.006-.024.006-.03.012-.063.031-.118.056-.174.087a2.738 2.738 0 0 0-.236.118c-.043.018-.086.043-.124.062a.559.559 0 0 1-.055.03c-.056.032-.112.063-.162.094a1.56 1.56 0 0 0-.148.093c-.044.03-.087.055-.124.086-.006.007-.013.007-.019.013-.037.025-.08.056-.118.087l-.012.012-.093.074c-.012.007-.025.019-.037.025-.031.025-.062.056-.093.08-.006.013-.019.02-.025.025-.037.038-.074.069-.111.106-.007 0-.007.006-.013.012a1.742 1.742 0 0 0-.111.106c-.007.006-.007.012-.013.012a1.454 1.454 0 0 0-.093.1c-.012.012-.03.024-.043.036a1.374 1.374 0 0 1-.106.112c-.006.012-.018.019-.024.03-.05.05-.093.1-.143.15l-.018.018c-.1.106-.205.211-.317.304-.111.1-.229.192-.347.273a3.777 3.777 0 0 1-.762.421c-.13.056-.267.106-.403.149-.26.056-.527.161-.756.18-.05 0-.105.012-.155.018l-.155.037-.149.056c-.05.019-.099.044-.148.068-.044.031-.093.056-.137.087a1.011 1.011 0 0 0-.124.106c-.043.03-.087.074-.124.111-.037.043-.074.08-.105.124-.031.05-.068.093-.093.143a1.092 1.092 0 0 0-.087.142c-.025.056-.05.106-.068.161-.019.05-.037.106-.056.161-.012.05-.025.1-.03.15 0 .005-.007.012-.007.018-.012.056-.012.13-.019.167C.006 7.95 0 7.986 0 8.03a.657.657 0 0 0 .074.31v.006c.019.037.044.075.069.112.024.037.05.074.08.111.031.031.068.069.106.1a.906.906 0 0 0 .117.099c.149.13.186.173.378.272.031.019.062.031.1.05.006 0 .012.006.018.006 0 .013 0 .019.006.031a1.272 1.272 0 0 0 .08.298c.02.037.032.074.05.111.007.013.013.025.02.031.024.05.049.093.073.137l.093.13c.031.037.069.08.106.118.037.037.074.068.118.105 0 0 .006.006.012.006.037.031.074.062.112.087a.986.986 0 0 0 .136.08c.043.025.093.05.142.069a.73.73 0 0 0 .124.043c.007.006.013.006.025.012.025.007.056.013.08.019-.018.335-.024.65.026.762.055.124.328-.254.6-.688-.036.428-.061.93 0 1.079.069.155.44-.329.763-.862 4.395-1.016 8.405 2.02 8.826 6.31-.08-.67-.905-1.041-1.283-.948-.186.458-.502 1.047-1.01 1.413.043-.41.025-.83-.062-1.24a4.009 4.009 0 0 1-.769 1.562c-.588.043-1.177-.242-1.487-.67-.025-.018-.031-.055-.05-.08-.018-.043-.037-.087-.05-.13a.515.515 0 0 1-.037-.13c-.006-.044-.006-.087-.006-.137v-.093a.992.992 0 0 1 .031-.13c.013-.043.025-.086.044-.13.024-.043.043-.087.074-.13.105-.298.105-.54-.087-.682a.706.706 0 0 0-.118-.062c-.024-.006-.055-.018-.08-.025l-.05-.018a.847.847 0 0 0-.13-.031.472.472 0 0 0-.13-.019 1.01 1.01 0 0 0-.136-.012c-.031 0-.062.006-.093.006a.484.484 0 0 0-.137.019c-.043.006-.086.012-.13.024a1.068 1.068 0 0 0-.13.044c-.043.018-.08.037-.124.056-.037.018-.074.043-.118.062-1.444.942-.582 3.148.403 3.787-.372.068-.75.148-.855.229l-.013.012c.267.161.546.298.837.416.397.13.818.247 1.004.297v.006a5.996 5.996 0 0 0 1.562.112c2.746-.192 4.996-2.281 5.405-5.033l.037.161c.019.112.043.23.056.347v.006c.012.056.018.112.025.162v.024c.006.056.012.112.012.162.006.068.012.136.012.204v.1c0 .03.007.067.007.098 0 .038-.007.075-.007.112v.087c0 .043-.006.08-.006.124 0 .025 0 .05-.006.08 0 .044-.006.087-.006.137-.006.018-.006.037-.006.055l-.02.143c0 .019 0 .037-.005.056-.007.062-.019.118-.025.18v.012l-.037.174v.018l-.037.167c0 .007-.007.02-.007.025a1.663 1.663 0 0 1-.043.168v.018c-.019.062-.037.118-.05.174-.006.006-.006.012-.006.012l-.056.186c-.024.062-.043.118-.068.18-.025.062-.043.124-.068.18-.025.062-.05.117-.074.18h-.007c-.024.055-.05.117-.08.173a.302.302 0 0 1-.019.043c-.006.006-.006.013-.012.019a5.867 5.867 0 0 1-1.742 2.082c-.05.031-.099.069-.149.106-.012.012-.03.018-.043.03a2.603 2.603 0 0 1-.136.094l.018.037h.007l.26-.037h.006c.161-.025.322-.056.483-.087.044-.006.093-.019.137-.031l.087-.019c.043-.006.086-.018.13-.024.037-.013.074-.02.111-.031.62-.15 1.221-.354 1.798-.595a9.926 9.926 0 0 1-3.85 3.142c.714-.05 1.426-.167 2.114-.366a9.903 9.903 0 0 0 5.857-4.68 9.893 9.893 0 0 1-1.667 3.986 9.758 9.758 0 0 0 1.655-1.376 9.824 9.824 0 0 0 2.61-5.268c.21.98.272 1.99.18 2.987 4.474-6.241.371-12.712-1.346-14.416-.006-.013-.012-.019-.012-.031-.006.006-.006.006-.006.012 0-.006 0-.006-.007-.012 0 .074-.006.148-.012.223a8.34 8.34 0 0 1-.062.415c-.03.136-.068.273-.105.41-.044.13-.093.266-.15.396a5.322 5.322 0 0 1-.185.378 4.735 4.735 0 0 1-.477.688c-.093.111-.192.21-.292.31a3.994 3.994 0 0 1-.18.155l-.142.124a3.459 3.459 0 0 1-.347.241 4.295 4.295 0 0 1-.366.211c-.13.062-.26.118-.39.174a4.364 4.364 0 0 1-.818.223c-.143.025-.285.037-.422.05a4.914 4.914 0 0 1-.297.012 4.66 4.66 0 0 1-.422-.025 3.137 3.137 0 0 1-.421-.062 3.136 3.136 0 0 1-.415-.105h-.007c.137-.013.273-.025.41-.05a4.493 4.493 0 0 0 .818-.223c.136-.05.266-.112.39-.174.13-.062.248-.13.372-.204.118-.08.235-.161.347-.248.112-.087.217-.18.316-.279.105-.093.198-.198.291-.304.093-.111.18-.223.26-.334.013-.019.026-.044.038-.062.062-.1.124-.199.18-.298a4.272 4.272 0 0 0 .334-.775c.044-.13.075-.266.106-.403.025-.142.05-.278.062-.415.012-.142.025-.285.025-.421 0-.1-.007-.199-.013-.298a6.726 6.726 0 0 0-.05-.415 4.493 4.493 0 0 0-.092-.415c-.044-.13-.087-.267-.137-.397-.05-.13-.111-.26-.173-.384-.069-.124-.137-.248-.211-.366a6.843 6.843 0 0 0-.248-.34c-.093-.106-.186-.212-.285-.317a3.878 3.878 0 0 0-.161-.155c-.28-.217-.57-.421-.862-.607a1.154 1.154 0 0 0-.124-.062 2.415 2.415 0 0 0-.589-.26Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/netapp.svg b/assets/lib/simple-icons/icons/netapp.svg
index b7fa0fe6..0e47de43 100644
--- a/assets/lib/simple-icons/icons/netapp.svg
+++ b/assets/lib/simple-icons/icons/netapp.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>NetApp icon</title><path d="M0 2v20h9.33V10h5.34v12H24V2Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>NetApp</title><path d="M0 2v20h9.33V10h5.34v12H24V2Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/netbsd.svg b/assets/lib/simple-icons/icons/netbsd.svg
new file mode 100644
index 00000000..511f066e
--- /dev/null
+++ b/assets/lib/simple-icons/icons/netbsd.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>NetBSD</title><path d="M22.686 10.681c0-.181.064-.336.193-.464a.634.634 0 0 1 .464-.193c.182 0 .336.065.465.193a.633.633 0 0 1 .192.464.635.635 0 0 1-.192.465.632.632 0 0 1-.465.193.634.634 0 0 1-.464-.193.634.634 0 0 1-.193-.465zm1.206 0a.53.53 0 0 0-.16-.388.53.53 0 0 0-.389-.16.53.53 0 0 0-.388.16.528.528 0 0 0-.161.388.53.53 0 0 0 .16.389.53.53 0 0 0 .39.161.529.529 0 0 0 .388-.161.53.53 0 0 0 .16-.389zm-.344.396-.207-.349h-.117v.349h-.114v-.808h.207c.194 0 .292.074.292.223 0 .104-.053.177-.157.22l.221.365zm-.324-.71v.27l.076.001c.075 0 .126-.01.151-.028.026-.02.04-.056.04-.11 0-.09-.059-.134-.175-.134h-.092m-3.892 3.28c0 .403.014.667.146.82.132.147.344.213.607.213 1.266 0 1.698-1.127 1.698-2.122 0-1.318-.695-2.1-2.02-2.1-.197 0-.336.036-.38.095-.044.058-.051.197-.051.424v2.67zm-1.046-2.319c0-.695-.015-.834-.352-.87l-.139-.015c-.073-.037-.073-.25.015-.257a30.521 30.521 0 0 1 1.96-.065c.6 0 1.2.059 1.706.241.958.344 1.485 1.208 1.485 2.122 0 .981-.468 1.771-1.31 2.188-.497.25-1.097.344-1.85.344-.345 0-.71-.044-.974-.044-.351 0-.724.008-1.141.022-.059-.044-.059-.22 0-.256l.226-.036c.33-.059.374-.11.374-.783v-2.59m-2.405 3.76c-.673 0-1.09-.19-1.244-.277-.139-.161-.234-.688-.234-1.186.051-.095.22-.102.278-.022.146.476.636 1.149 1.258 1.149.542 0 .79-.373.79-.74 0-.592-.555-.943-.994-1.163-.527-.263-1.098-.702-1.105-1.427 0-.827.636-1.398 1.697-1.398.242 0 .542.03.834.118.095.029.161.043.25.058.057.161.13.556.13 1.047-.036.087-.219.095-.285.022-.124-.374-.439-.908-.965-.908-.483 0-.747.315-.747.68 0 .337.3.645.666.835l.483.256c.454.242 1.032.666 1.032 1.471 0 .9-.74 1.486-1.844 1.486m-4.2-1.354c0 .57.072.93.643.93.542 0 .827-.418.827-1.01 0-.637-.366-1.084-1.068-1.084-.403 0-.403.007-.403.3v.864zm0-1.69c0 .19.007.204.387.204.63 0 .863-.402.863-.841 0-.637-.395-.952-.9-.952-.343 0-.35.06-.35.381zm-1.01-.71c0-.74-.015-.82-.322-.857l-.198-.03c-.066-.036-.08-.255.03-.263.555-.036 1.09-.065 1.821-.065.703 0 1.171.08 1.493.27.314.19.505.498.505.93 0 .615-.52.856-.747.915-.073.014-.146.044-.146.08 0 .022.037.044.103.059.578.124 1.068.504 1.075 1.214.007.673-.395 1.069-.856 1.23-.461.16-1.01.183-1.456.183-.263 0-.541-.03-.754-.03-.358 0-.717.008-1.134.022-.058-.044-.058-.234 0-.256l.213-.044c.329-.065.373-.117.373-.775v-2.584M9.038 12.44c-.095 0-.102.007-.102.168v1.097c0 .41 0 .864.512.864.102 0 .22-.051.307-.11.073.022.117.103.102.19-.204.22-.6.425-1.053.425-.607 0-.82-.351-.82-.834v-1.632c0-.154-.007-.168-.139-.168H7.62c-.08-.03-.103-.176-.044-.227.226-.08.431-.213.607-.33.132-.095.315-.248.541-.57.051-.03.183-.022.22.036v.549c0 .139.007.146.139.146h.651c.037.03.059.074.059.14 0 .08-.022.211-.095.256h-.66m-2.627.475c.103 0 .22-.015.3-.066.037-.022.051-.095.051-.168 0-.241-.139-.402-.388-.402-.307 0-.57.292-.57.526 0 .103.102.11.336.11zm-.483.322c-.168 0-.183.015-.183.132 0 .549.351 1.083 1.032 1.083.205 0 .483-.044.68-.38.08-.015.19.043.19.168-.3.622-.84.834-1.28.834-.988 0-1.522-.695-1.522-1.493 0-.922.666-1.64 1.58-1.64.762 0 1.171.491 1.171 1.055 0 .139-.036.241-.263.241H5.927m-1.255.49c0 .476 0 .937.014 1.179-.05.087-.256.168-.431.168-.008 0-.25-.373-.593-.798l-1.69-2.093c-.417-.527-.666-.826-.798-.936-.036.073-.036.197-.036.468v1.42c0 .593.029 1.141.11 1.339.065.154.234.198.424.234l.205.03c.058.058.044.212 0 .255a26.585 26.585 0 0 0-.98-.022c-.271 0-.542.008-.82.022-.044-.043-.059-.197 0-.256l.124-.022c.198-.044.337-.087.403-.241.073-.198.102-.746.102-1.34v-1.858c0-.402 0-.52-.051-.622-.051-.124-.161-.198-.417-.249l-.205-.029c-.051-.059-.044-.234.03-.256.343.014.709.022 1.009.022.249 0 .46-.008.615-.022.073.33.548.885 1.207 1.668l.614.725c.33.38.535.636.703.805.03-.073.03-.198.03-.33v-1.01c0-.592-.03-1.141-.11-1.339-.067-.153-.227-.197-.425-.234l-.198-.029c-.058-.059-.043-.212 0-.256.396.014.68.022.98.022.272 0 .535-.008.82-.022.044.044.059.197 0 .256l-.131.022c-.19.044-.33.088-.396.242-.08.197-.11.746-.11 1.339v1.749M21.537 3.59c-2.848-1.367-5.425-.715-8.306.148-2.902.868-5.482 1.337-8.381.154l.79 1.41.87 1.557.79 1.41c2.309.652 4.22-.194 6.271-1.22 2.463-1.23 4.688-2.337 7.502-1.696-2.378-1.19-4.534-.895-7.02-.22 2.434-1.24 4.726-2.204 7.484-1.543M13.16 20.478l-2.272-4.385H9.91l2.283 4.826s.23.455.724.203c.493-.25.245-.644.245-.644M4.634 4.025s-.068-.159-.26-.053c-.16.089-.077.253-.077.253l3.004 6.351h.728L4.634 4.025"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/netflix.svg b/assets/lib/simple-icons/icons/netflix.svg
index 0592aedf..920215bd 100644
--- a/assets/lib/simple-icons/icons/netflix.svg
+++ b/assets/lib/simple-icons/icons/netflix.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Netflix icon</title><path d="M5.39.004l4.75 13.46v-.007l.376 1.06c2.088 5.908 3.21 9.075 3.216 9.082.004 0 .32.02.702.04 1.156.05 2.59.18 3.676.31.25.03.466.04.48.03l-4.71-13.36-.436-1.23-2.423-6.85c-.46-1.3-.85-2.408-.87-2.45L10.12 0H5.395zM13.898.012l-.01 5.306-.008 5.306-.437-1.232V9.39l-.565 11.81c.555 1.567.852 2.403.855 2.407.004.004.32.024.702.042 1.157.05 2.59.18 3.68.31.25.03.467.04.48.03s.02-5.42.017-12.01L18.604.01h-4.706zM5.39.002v11.99c0 6.594.007 11.995.015 12.003s.416-.03.907-.086c.49-.06 1.17-.13 1.51-.16.518-.05 2.068-.15 2.248-.15.052 0 .056-.27.063-5.08l.008-5.08.38 1.06.13.376.57-11.8-.19-.546-.88-2.44-.03-.087H5.39z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Netflix</title><path d="M5.398 0v.006c3.028 8.556 5.37 15.175 8.348 23.596 2.344.058 4.85.398 4.854.398-2.8-7.924-5.923-16.747-8.487-24zm8.489 0v9.63L18.6 22.951c-.043-7.86-.004-15.913.002-22.95zM5.398 1.05V24c1.873-.225 2.81-.312 4.715-.398v-9.22z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/netlify.svg b/assets/lib/simple-icons/icons/netlify.svg
index 18b7bd35..cf0cc413 100644
--- a/assets/lib/simple-icons/icons/netlify.svg
+++ b/assets/lib/simple-icons/icons/netlify.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Netlify icon</title><path d="M16.934 8.519a1.044 1.044 0 0 1 .303.23l2.349-1.045-2.192-2.171-.491 2.954zM12.06 6.546a1.305 1.305 0 0 1 .209.574l3.497 1.482a1.044 1.044 0 0 1 .355-.177l.574-3.55-2.13-2.234-2.505 3.852v.053zm11.933 5.491l-3.748-3.748-2.548 1.044 6.264 2.662s.053.042.032.042zm-.627.606l-6.013-2.569a1.044 1.044 0 0 1-.7.407l-.647 3.957a1.044 1.044 0 0 1 .303.731l3.633.762 3.33-3.31v-.062zM15.4 9.25L12.132 7.86a1.2 1.2 0 0 1-1.044.543h-.199L8.185 12.58l7.225-3.132v.01a.887.887 0 0 1 0-.167.052.052 0 0 0-.01-.041zm3.967 7.308l-3.195-.658a1.096 1.096 0 0 1-.46.344l-.761 4.72 4.437-4.396s-.01.02-.021.02zm-4.469-.324a1.044 1.044 0 0 1-.616-.71l-5.95-1.222-.084.136 5.398 7.81.323-.324.919-5.67s.031.022.01.011zm-6.441-2.652l5.878 1.211a1.044 1.044 0 0 1 .824-.522l.637-3.894-.135-.115-7.308 3.132a1.817 1.817 0 0 1 .104.188zm-2.464.981l-.125-.125-2.537 1.044 1.232 1.222 1.399-2.172zm1.67.397a1.368 1.368 0 0 1-.563.125 1.389 1.389 0 0 1-.45-.073l-1.544 2.245 6.765 6.702 1.19-1.18zm-.95-2.641a1.702 1.702 0 0 1 .314 0 1.378 1.378 0 0 1 .344 0l2.735-4.25a1.19 1.19 0 0 1-.334-.824 1.242 1.242 0 0 1 0-.271l-3.32-1.535-2.672 2.6zm.303-7.402l3.237 1.378a1.242 1.242 0 0 1 .835-.282 1.357 1.357 0 0 1 .397.063l2.526-3.947L11.923.041 7.016 4.854s-.01.052 0 .063zm-1.21 8.164a1.566 1.566 0 0 1 .24-.334L3.278 8.613 0 11.797l5.804 1.284zm-.262.7L.533 12.735l2.203 2.235 2.777-1.18z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Netlify</title><path d="M17.3877 8.3286l-.0088-.0037c-.005-.002-.01-.0038-.0144-.0082a.0689.0689 0 0 1-.0176-.0582l.4839-2.9581 2.269 2.2696L17.74 8.574a.052.052 0 0 1-.0206.0037H17.71a.0647.0647 0 0 1-.0126-.0106 1.074 1.074 0 0 0-.3097-.2385zm3.291-.1802l2.4262 2.426c.5039.5045.7561.7562.8481 1.0479.0138.0431.025.0863.0338.1308l-5.798-2.4555a.4557.4557 0 0 0-.0093-.0038c-.0232-.0094-.0501-.02-.0501-.0439 0-.0237.0275-.035.0507-.0444l.0075-.0031zm3.2092 4.3833c-.1252.2354-.3693.4795-.7824.8932l-2.7353 2.7347-3.5377-.7367-.0188-.0038c-.0313-.005-.0645-.0107-.0645-.0388a1.0678 1.0678 0 0 0-.41-.7467c-.0144-.0144-.0106-.037-.0063-.0576 0-.003 0-.0063.0013-.0088l.6654-4.0848.0025-.0138c.0038-.0313.0094-.0676.0376-.0676a1.0829 1.0829 0 0 0 .726-.4162c.0056-.0063.0094-.0131.017-.0169.02-.0094.0437 0 .0644.0088l6.0402 2.555zm-4.1467 4.257l-4.498 4.4979.77-4.732.0012-.0063a.083.083 0 0 1 .0038-.0182c.0063-.015.0226-.0213.0382-.0275l.0075-.0031a1.158 1.158 0 0 0 .435-.3236c.015-.0176.0332-.0345.0564-.0376a.0563.0563 0 0 1 .0181 0l3.1672.651zm-5.45 5.4499l-.507.507-5.6052-8.1007a.2654.2654 0 0 0-.0062-.0088c-.0088-.012-.0182-.0238-.0163-.0376.0006-.01.0069-.0188.0138-.0263l.0062-.0081c.017-.025.0313-.05.047-.077l.0125-.0219.0019-.0019c.0087-.015.0169-.0294.0319-.0376.0131-.0063.0313-.0038.0457-.0006l6.2098 1.2807a.1027.1027 0 0 1 .0476.0206c.008.0081.01.017.0119.027a1.0998 1.0998 0 0 0 .6434.7354c.0175.0088.01.0282.002.0488a.149.149 0 0 0-.0095.0282c-.0782.4757-.7492 4.568-.9295 5.6728zm-1.059 1.0584c-.3737.37-.594.5659-.8432.6447a1.2519 1.2519 0 0 1-.7549 0c-.2916-.0926-.5439-.3442-1.0478-.8487l-5.629-5.629 1.4704-2.2802a.0938.0938 0 0 1 .025-.0294c.0157-.0113.0382-.0063.057 0a1.5235 1.5235 0 0 0 1.0253-.052c.0169-.0063.0338-.0106.0469.0013a.119.119 0 0 1 .0175.02l5.6327 8.174zm-8.8175-6.3756L3.1234 15.63l2.55-1.0879a.0526.0526 0 0 1 .0207-.0044c.0213 0 .0338.0213.045.0407a1.8214 1.8214 0 0 0 .0814.1152l.0082.01c.0075.0106.0025.0213-.005.0313l-1.4084 2.1864zm-1.8628-1.8628L.9183 13.4249c-.278-.2779-.4795-.4794-.6197-.6528l4.9674 1.0303a.5258.5258 0 0 0 .0187.003c.0307.005.0645.0107.0645.0395 0 .0313-.037.0457-.0682.0576l-.0144.0063zM.0132 11.932a1.2519 1.2519 0 0 1 .0563-.3098c.0927-.2917.3443-.5434.8488-1.0478l2.0906-2.0906a1361.7196 1361.7196 0 0 0 2.8955 4.1855c.017.0226.0357.0476.0163.0664-.0914.1008-.1828.211-.2473.3305a.1001.1001 0 0 1-.0313.0388c-.008.005-.0169.003-.0262.0013h-.0013l-5.6014-1.175zm3.5553-4.0078l2.811-2.811c.2641.1157 1.2256.522 2.0856.885.651.2754 1.2443.5258 1.4308.6071.0188.0076.0357.015.0439.0338.005.0113.0025.0257 0 .0376a1.2537 1.2537 0 0 0 .3273 1.1442c.0188.0188 0 .0457-.0163.0689l-.0088.0131-2.8542 4.421c-.0075.0124-.0144.023-.0269.0312-.015.0094-.0363.005-.0538.0006a1.4234 1.4234 0 0 0-.34-.0463c-.1026 0-.214.0188-.3266.0395h-.0007c-.0125.0019-.0238.0044-.0338-.0031a.1314.1314 0 0 1-.0281-.032zm3.3787-3.3788l3.6391-3.639c.504-.5039.7562-.7561 1.0478-.8481a1.2519 1.2519 0 0 1 .755 0c.2916.092.5438.3442 1.0477.848l.7887.7888-2.5882 4.0084a.097.097 0 0 1-.0257.03c-.0156.0107-.0375.0063-.0563 0a1.3126 1.3126 0 0 0-1.2018.2316c-.0169.0176-.042.0075-.0632-.0019-.338-.147-2.967-1.258-3.343-1.4177zm7.8278-2.3009l2.3898 2.3898-.5758 3.5665v.0094a.0845.0845 0 0 1-.005.0238c-.0063.0125-.0188.015-.0313.0188a1.1454 1.1454 0 0 0-.343.1709.0964.0964 0 0 0-.0125.0106c-.007.0075-.0138.0144-.025.0157a.0714.0714 0 0 1-.027-.0044l-3.6416-1.5473-.007-.0031c-.0231-.0094-.0506-.0207-.0506-.0445a1.3758 1.3758 0 0 0-.194-.5727c-.0176-.0288-.037-.0588-.022-.0883zm-2.461 5.3868l3.4138 1.446c.0188.0087.0394.0168.0476.0362a.0663.0663 0 0 1 0 .0357.848.848 0 0 0-.0188.1646v.0958c0 .0238-.0244.0338-.047.0432l-.0069.0025c-.5408.231-7.5924 3.238-7.603 3.238-.0107 0-.022 0-.0326-.0107-.0188-.0188 0-.0451.0169-.0689a.4757.4757 0 0 0 .0087-.0125l2.8054-4.344.005-.0074c.0163-.0263.035-.0557.0651-.0557l.0282.0043c.0638.0088.1202.017.1771.017.4257 0 .82-.2072 1.0579-.5615a.1001.1001 0 0 1 .0212-.025c.017-.0126.042-.0063.0614.0024zm-3.9095 5.7492l7.6863-3.278s.0113 0 .022.0106c.0419.042.0776.0701.112.0964l.0169.0107c.0156.0088.0313.0188.0325.035 0 .0063 0 .01-.0013.0157l-.6584 4.0447-.0025.0163c-.0044.0313-.0088.067-.0382.067a1.0822 1.0822 0 0 0-.8594.5301l-.0031.005c-.0088.0144-.017.0282-.0313.0357-.0131.0063-.03.0038-.0438.0006L8.5064 13.706c-.0063-.0013-.0952-.3249-.102-.3255z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/nette.svg b/assets/lib/simple-icons/icons/nette.svg
new file mode 100644
index 00000000..768955c6
--- /dev/null
+++ b/assets/lib/simple-icons/icons/nette.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Nette</title><path d="M6.244 14.334c-.341.243-.558.39-.65.443-.488.29-.934.437-1.338.437-.226 0-.446-.053-.663-.155a1.17 1.17 0 0 1-.486-.403.988.988 0 0 1-.162-.556c0-.292.099-.663.296-1.113.282-.658.433-1.01.452-1.057a.497.497 0 0 1-.015-.127 2.511 2.511 0 0 0-.268.127 7.1 7.1 0 0 0-.774.578 13.77 13.77 0 0 0-.691.676 6.005 6.005 0 0 0-.085 1.001c0 .253.015.507.043.761l-1.705.268A6.198 6.198 0 0 1 0 13.706c0-.292.028-.588.085-.889.056-.3.16-.638.309-1.014.104-.263.249-.592.437-.987l1.959-.324c-.122.301-.211.526-.267.677a9.26 9.26 0 0 0-.254.691c.47-.433.94-.767 1.409-1.001.376-.188.714-.282 1.015-.282.17 0 .343.032.522.098.178.066.307.17.387.311.08.141.12.309.12.507 0 .282-.08.629-.24 1.043-.188.47-.371.939-.549 1.409 0 .066.024.106.07.12a.49.49 0 0 0 .141.02c.189 0 .469-.098.841-.294a1.74 1.74 0 0 1-.052-.424c0-.226.032-.441.098-.648.066-.207.166-.423.297-.648.234-.386.564-.714.986-.987a3.45 3.45 0 0 1 1.339-.521c.17-.019.3-.029.395-.029.31 0 .587.052.831.156.244.103.446.272.606.507.094.15.141.301.141.45 0 .236-.117.466-.352.691-.169.16-.397.311-.684.451a6.777 6.777 0 0 1-.853.352c-.206.066-.498.147-.873.24.122.254.296.459.522.614.225.154.464.232.718.232.386 0 .771-.099 1.156-.296.018-.01.312-.195.883-.557a4.035 4.035 0 0 1 .096-.641l.047-.214 2.035-.121-.151.525a1.982 1.982 0 0 0-.092.529c0 .226.045.383.135.471.089.09.217.135.387.135.244 0 .563-.103.958-.31l.454-.274c.003-.075.009-.156.018-.241.014-.135.043-.303.084-.5l.048-.213 2.034-.122c-.048.17-.098.345-.151.525-.06.211-.092.388-.092.529 0 .226.045.383.135.471.089.09.218.135.387.135.245 0 .565-.103.959-.31l.294-.178a1.505 1.505 0 0 1-.013-.203c0-.226.034-.441.099-.648.066-.207.165-.423.296-.648.234-.386.564-.714.986-.987.424-.272.87-.447 1.339-.521.17-.019.302-.029.396-.029.309 0 .586.052.831.156.243.103.446.272.605.507.094.15.141.301.141.45 0 .236-.117.466-.352.691-.168.16-.396.311-.683.451a6.902 6.902 0 0 1-.853.352c-.207.066-.498.147-.874.24.122.254.296.459.522.614.226.154.465.232.718.232.386 0 .771-.099 1.156-.296.019-.01.338-.211.958-.606v.634c-.056.038-.281.198-.675.479a4.575 4.575 0 0 1-.72.437c-.47.207-.987.31-1.55.31-.375 0-.709-.045-1.001-.133a2.078 2.078 0 0 1-.803-.473 1.58 1.58 0 0 1-.357-.456c-.414.3-.732.513-.954.64-.497.281-.949.422-1.352.422-.227 0-.41-.014-.62-.113-.358-.15-.607-.345-.748-.584a1.504 1.504 0 0 1-.158-.397c-.435.316-.768.54-.997.672-.498.281-.949.422-1.353.422-.227 0-.41-.014-.62-.113-.358-.15-.606-.345-.748-.584a1.505 1.505 0 0 1-.177-.493c-.099.067-.307.216-.625.443a4.667 4.667 0 0 1-.719.437c-.47.207-.987.31-1.55.31-.377 0-.71-.045-1.001-.133a2.089 2.089 0 0 1-.804-.473 1.66 1.66 0 0 1-.224-.245zm2.832-2.574a.786.786 0 0 0 .013-.169c0-.244-.102-.366-.309-.366a.757.757 0 0 0-.155.028c-.282.066-.503.245-.663.536a1.885 1.885 0 0 0-.239.915c.395-.102.681-.206.859-.309.292-.16.456-.371.494-.635zm12.782 0a.715.715 0 0 0 .014-.169c0-.244-.103-.366-.31-.366a.768.768 0 0 0-.155.028c-.281.066-.503.245-.662.536-.16.291-.24.597-.24.915.395-.102.682-.206.86-.309.291-.16.455-.371.493-.635zm-10.838.043l.283-1.113.578-.028.549-1.509 2.085-.366-.591 1.776.944-.043-.253 1.057c-1.198.082-2.395.155-3.595.226zm3.877 0l.281-1.113.578-.028.549-1.509 2.086-.366-.592 1.776.944-.043-.253 1.057c-1.201.082-2.408.156-3.593.226z"/></svg>
diff --git a/assets/lib/simple-icons/icons/netto.svg b/assets/lib/simple-icons/icons/netto.svg
new file mode 100644
index 00000000..ade6b797
--- /dev/null
+++ b/assets/lib/simple-icons/icons/netto.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Netto</title><path d="M1.878 6.859a.708.708 0 0 0-.434.157.638.638 0 0 0-.228.397L.01 13.625a.633.633 0 0 0 .12.506.62.62 0 0 0 .47.217h20.24v.012c.18 0 .373-.012.553-.036a2.735 2.735 0 0 0 1.084-.35 2.66 2.66 0 0 0 .843-.794c.144-.217.265-.446.361-.686.096-.23.168-.47.217-.723.048-.24.084-.481.096-.734.012-.241 0-.494-.012-.747a2.32 2.32 0 0 0-.145-.602 1.554 1.554 0 0 0-.313-.505 2.07 2.07 0 0 0-.47-.374 2.123 2.123 0 0 0-.565-.216 5.148 5.148 0 0 0-.458-.085 6.125 6.125 0 0 0-.47-.024h-.192a4.234 4.234 0 0 0-.41.049c-.131.024-.264.048-.384.084a1.997 1.997 0 0 0-.374.143c-.12.06-.228.12-.337.194a3.082 3.082 0 0 0-.313.24c-.06.06-.132.12-.18.192l.024-.107a.633.633 0 0 0-.12-.507.62.62 0 0 0-.47-.216h-.602l.096-.53a.633.633 0 0 0-.12-.505.62.62 0 0 0-.47-.217h-.963a.708.708 0 0 0-.433.157.638.638 0 0 0-.23.397l-.133.699h-1.08l.095-.53a.633.633 0 0 0-.12-.506.62.62 0 0 0-.47-.217h-.963a.707.707 0 0 0-.433.157.639.639 0 0 0-.23.397l-.132.699h-.313a.707.707 0 0 0-.433.156.638.638 0 0 0-.229.397l-.036.205a1.803 1.803 0 0 0-.518-.481 2.168 2.168 0 0 0-.674-.253 3.455 3.455 0 0 0-.807-.085c-.096 0-.18 0-.277.011a3.202 3.202 0 0 0-.819.146 2.114 2.114 0 0 0-.385.143c-.12.06-.24.12-.348.194a2.98 2.98 0 0 0-.326.252 8.369 8.368 0 0 0-.29.3 3.58 3.58 0 0 0-.24.35c-.024.037-.036.073-.06.109 0 0 0 .012-.012 0-.012 0 0-.012 0-.012l.47-2.409a.633.633 0 0 0-.12-.505.62.62 0 0 0-.47-.216H5.658a.707.707 0 0 0-.433.157.638.638 0 0 0-.23.396l-.408 2.13-.494-2.141a.502.502 0 0 0-.096-.217.633.633 0 0 0-.145-.168.707.707 0 0 0-.433-.157zm-.012.458h1.469c.108 0 .217.084.24.192l.952 4.118c0 .011.024.011.024 0l.806-4.119a.243.243 0 0 1 .23-.192h1.07c.12 0 .18.084.17.192l-1.193 6.128a.243.243 0 0 1-.228.194H3.9a.257.257 0 0 1-.241-.194l-.94-4.056c0-.013-.022-.013-.022 0l-.795 4.056a.243.243 0 0 1-.23.194H.603c-.11 0-.18-.085-.158-.194L1.637 7.51a.243.243 0 0 1 .229-.192zm14.846.42h.963c.108 0 .18.085.157.194l-.205 1.035c0 .012 0 .012.012.012h1.132c.108 0 .18.084.156.193l-.132.674a.243.243 0 0 1-.23.192h-1.131c-.012 0-.012 0-.012.012l-.41 2.144c-.06.324.085.552.314.59.325.06.674.01.95 0 .013 0 .013.011.013.011l-.144.746c-.012.06-.036.109-.097.133-.132.072-.445.192-1.06.192-1.3 0-1.469-.95-1.3-1.842l.385-1.986c0-.013 0-.012-.012-.012h-1.963v.047c-.012 0-.012 0-.012.013l-.409 2.143c-.06.325.084.554.313.59.325.06.674.012.951 0 .012 0 .012.012.012.012l-.144.746c-.012.06-.036.11-.097.133-.132.072-.445.192-1.06.192-1.3 0-1.456-.95-1.3-1.842l.386-1.987c0-.012 0-.01-.012-.01h-.674c-.109 0-.18-.086-.157-.194l.132-.674a.243.243 0 0 1 .23-.193h.673c.012 0 .012 0 .012-.011l.205-1.048a.243.243 0 0 1 .23-.193h.962c.11 0 .18.085.157.194l-.205 1.035c0 .011 0 .011.012.011h1.964c.012 0 .012 0 .012-.012l.204-1.047a.243.243 0 0 1 .229-.193zm4.919 1.21c.25.003.508.037.752.09.674.157 1.095.614 1.155 1.3.073.917-.072 1.819-.577 2.602-.374.566-.94.879-1.602.95-.373.037-.758.049-1.132-.023-.915-.17-1.348-.734-1.348-1.818.024-.494.12-1.095.36-1.65.41-.938 1.157-1.396 2.144-1.444a2.91 2.91 0 0 1 .248-.007zm-12.086.008c.241-.004.49.016.725.07.818.145 1.252.77 1.155 1.674-.12.95-.77 1.276-1.54 1.312-.494.024-1.626.012-1.783.012 0 0-.011 0-.011.012-.025.47.096.855 1.035.867.855.013 1.24-.083 1.722-.216.012-.013.024 0 .024.011l-.169.844c-.012.071-.06.12-.132.143a5.77 5.77 0 0 1-2.12.23c-1.312-.084-1.745-.831-1.733-1.673a4.65 4.65 0 0 1 .36-1.758c.423-.987 1.205-1.457 2.228-1.517a3.14 3.14 0 0 1 .24-.01zM9.36 9.998a1.036 1.036 0 0 0-.884.472c-.157.24-.205.433-.23.554 0 0 .001.012.013.012h1.348c.314.012.47-.097.506-.373.048-.325-.12-.553-.397-.625a1.513 1.513 0 0 0-.356-.04zm12.043.05c-.372.007-.706.185-.85.628-.145.42-.23.879-.265 1.336-.05.506.24.759.794.747.35.012.638-.157.807-.53.217-.482.289-1 .289-1.517 0-.337-.145-.542-.397-.614a1.416 1.416 0 0 0-.378-.05zm-13.361 5.47c-.096 0-.144.072-.18.156l-.241.747-.253-.76c-.024-.071-.084-.131-.168-.131-.097 0-.157.06-.17.156l-.276 1.168a.334.334 0 0 0-.012.108c0 .097.084.169.18.169.12 0 .17-.096.193-.193l.145-.662.204.71c.024.073.073.157.157.157a.166.166 0 0 0 .157-.12c0-.012.012-.025.012-.037l.216-.71.157.662c.024.109.06.193.192.193a.208.208 0 0 0 .157-.193c0-.036-.012-.072-.024-.108l-.277-1.156c-.024-.084-.084-.156-.169-.156zm8.85.012a.19.19 0 0 0-.192.192c0 .109.084.18.193.18.096 0 .18-.083.18-.18 0-.108-.084-.192-.18-.192zm-1.517.012c-.133 0-.205.072-.205.204V16.9c0 .133.072.205.205.205h.35c.24 0 .433-.048.614-.23a.757.757 0 0 0 .24-.553.79.79 0 0 0-.47-.722c-.132-.06-.229-.06-.385-.06zm-4.443.012c-.096 0-.157.084-.157.168v1.24c0 .097.06.169.157.169.096 0 .156-.084.156-.17v-.3l.374.398c.048.048.084.084.144.084.096-.024.17-.096.17-.18 0-.06-.049-.11-.086-.145l-.325-.313.301-.217c.06-.036.11-.084.11-.156a.16.16 0 0 0-.158-.157c-.06 0-.096.036-.144.072l-.386.3v-.625c0-.096-.048-.168-.156-.168zm12.245.06c-.096 0-.156.072-.156.168v.204c-.096 0-.18.036-.18.145 0 .108.084.144.18.144v.674c0 .097.06.169.156.169.097 0 .157-.084.157-.17v-.673h.06c.084 0 .157-.06.157-.144 0-.097-.073-.145-.157-.145h-.06v-.205c0-.096-.06-.168-.157-.168zm-7.426.265c.256.008.467.163.467.445 0 .193-.12.373-.3.434a.667.667 0 0 1-.218.024h-.157v-.903zm1.888.072c-.205 0-.41.108-.41.337 0 .12.073.229.17.277.083.048.18.06.276.096.048.012.097.024.097.085 0 .048-.06.096-.11.096-.18 0-.192-.133-.336-.157-.084-.012-.17.049-.17.133 0 .204.302.3.47.3.24 0 .447-.132.447-.384.036-.23-.145-.301-.301-.338l-.157-.036c-.036-.012-.096-.024-.096-.072 0-.048.036-.084.084-.084.156-.012.18.084.313.084a.128.128 0 0 0 .108-.108c.012-.157-.253-.23-.385-.23zm1.144 0a.586.586 0 0 0-.578.578c0 .325.265.59.59.59.132.012.457-.096.457-.277a.16.16 0 0 0-.156-.157c-.108 0-.145.12-.301.12a.267.267 0 0 1-.265-.264c0-.156.12-.265.277-.265.144 0 .18.108.277.108a.16.16 0 0 0 .156-.156c0-.18-.313-.277-.457-.277zm-8.694.012a.143.143 0 0 0-.144.12.206.206 0 0 0-.013.085v.77c0 .097.06.169.157.169.096 0 .157-.085.157-.17v-.516c0-.05 0-.145.072-.145.06 0 .096.06.168.06.097.012.193-.072.193-.18 0-.11-.096-.193-.205-.193a.358.358 0 0 0-.24.096.156.156 0 0 0-.145-.096zm2.312 0a.586.586 0 0 0-.578.578c0 .313.265.59.59.59.06 0 .108-.012.168-.024.11-.024.277-.12.277-.253-.012-.084-.048-.12-.144-.12h-.024c-.012 0-.012 0-.024.012-.024.012-.036.024-.06.036a.195.195 0 0 1-.085.048c-.024.012-.06.012-.108.012H12.4a.34.34 0 0 1-.193-.084l-.012-.012.566-.253c.072-.036.12-.072.12-.145 0-.24-.277-.385-.48-.385zm1.107 0c-.313 0-.505.253-.505.542v.433c0 .097.06.169.156.169.097 0 .157-.085.157-.17v-.468c0-.11.072-.205.192-.205.073 0 .145.048.17.108a.404.404 0 0 1 .023.169v.396c0 .097.06.169.157.169.12.012.168-.072.168-.157v-.421a.534.534 0 0 0-.518-.566zm6.406 0a.591.591 0 0 0-.59.59c0 .325.277.566.59.566a.56.56 0 0 0 .578-.566.589.589 0 0 0-.578-.59zm2.336 0c-.313 0-.505.253-.505.542v.433c0 .097.06.169.156.169s.157-.085.157-.17v-.468c0-.11.072-.205.192-.205a.19.19 0 0 1 .169.108c.024.049.024.109.024.169v.396c0 .097.06.169.156.169.109.012.169-.072.169-.157v-.421a.534.534 0 0 0-.157-.41.522.522 0 0 0-.36-.156zm-13.136.012c-.325 0-.542.265-.542.578 0 .313.229.59.542.59.12 0 .23-.048.325-.132.024.072.072.12.156.12.11-.012.17-.084.17-.18v-.807c0-.097-.06-.17-.17-.17-.084 0-.132.037-.156.12a.454.454 0 0 0-.325-.12zm11.655 0c-.096 0-.156.084-.156.169v.42c0 .158.036.29.144.41a.522.522 0 0 0 .36.157c.314 0 .507-.253.507-.554v-.433c0-.097-.06-.17-.156-.17-.097 0-.157.085-.157.17v.456c0 .109-.072.205-.193.205a.189.189 0 0 1-.168-.11c-.024-.048-.024-.108-.024-.156v-.397c0-.096-.06-.168-.157-.168zm-3.876.012c-.097 0-.157.084-.157.169v.794c0 .097.06.169.157.169.096 0 .156-.084.156-.17v-.793c0-.097-.06-.17-.156-.17zm-4.468.24c.084 0 .144.037.18.097l.012.012-.517.217v-.024c0-.156.144-.301.325-.301zm-3.25.037a.287.287 0 0 1 .264.277c0 .145-.12.265-.265.265-.156 0-.265-.12-.265-.277 0-.144.12-.265.265-.265zm10.756.024c.143.005.248.13.248.265 0 .145-.12.265-.265.265-.144 0-.276-.108-.276-.253a.27.27 0 0 1 .264-.277h.03zm-5.496.036c-.096 0-.168.06-.168.157 0 .096.072.156.168.156h.313c.085 0 .17-.06.17-.156s-.073-.157-.17-.157z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/newbalance.svg b/assets/lib/simple-icons/icons/newbalance.svg
new file mode 100644
index 00000000..795de84b
--- /dev/null
+++ b/assets/lib/simple-icons/icons/newbalance.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>New Balance</title><path d="M12.169 10.306l1.111-1.937 3.774-.242.132-.236-3.488-.242.82-1.414h6.47c1.99 0 3.46.715 2.887 2.8-.17.638-.979 2.233-3.356 2.899.507.06 1.76.616 1.54 2.057-.384 2.558-3.69 3.774-5.533 3.774l-7.641.006-.38-1.48 4.005-.28.137-.237-4.346-.264-.467-1.755 6.178-.363.137-.231-11.096-.693.534-.925 11.948-.775.138-.231-3.504-.231m5 .385l1.1-.006c.738-.005 1.502-.34 1.783-1.018.259-.632-.088-1.171-.55-1.166h-1.067l-1.266 2.19zm-1.27 2.195l-1.326 2.305h1.265c.589 0 1.64-.292 1.964-1.128.302-.781-.253-1.177-.638-1.177h-1.266zM6.26 16.445l-.77 1.315L0 17.77l.534-.923 5.726-.402zm.385-10.216l4.417.006.336 1.248-5.276-.33.523-.924zm5 2.245l.484 1.832-7.542-.495.528-.92 6.53-.417zm-3.84 5.281l-.957 1.661-5.32-.302.534-.924 5.743-.435z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/newjapanprowrestling.svg b/assets/lib/simple-icons/icons/newjapanprowrestling.svg
new file mode 100644
index 00000000..6f085595
--- /dev/null
+++ b/assets/lib/simple-icons/icons/newjapanprowrestling.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>New Japan Pro-Wrestling</title><path d="M11.9512.086c-1.077-.0042-2.138.1536-3.2598.4765-3.1728.9132-6.0065 3.2281-7.4238 6.0645C.7026 7.7576.2748 9.104.084 10.3555c-.122.7997-.1093 2.422.0254 3.2988.204 1.3276.5618 2.4989 1.08 3.5371.613 1.2278 1.3377 2.2339 2.295 3.1875 2.0144 2.0068 4.5781 3.207 7.502 3.5098.516.0534 1.8752.0179 2.4784-.0645 4.4084-.602 8.0407-3.3656 9.6973-7.377 1.0647-2.578 1.1187-5.86.1406-8.5058-.214-.5792-.735-1.6407-1.0586-2.1562-1.1513-1.8339-2.7493-3.3111-4.6503-4.2989-1.1383-.5914-2.307-.9802-3.67-1.2187-.6734-.1179-1.3264-.1791-1.9726-.1817zM12 .293C18.4656.2929 23.7071 5.5344 23.707 12c.0001 6.4656-5.2414 11.7071-11.707 11.707C5.5344 23.7071.2929 18.4656.293 12 .2929 5.5344 5.5344.2929 12 .293zm-.0977.211c-.4362 0-.8606.0175-1.162.0526-3.219.3759-6.207 2.0933-8.1465 4.6836-.7784 1.0395-1.519 2.592-1.8594 3.9004-.2537.975-.316 1.5127-.3184 2.7285-.0026 1.1802.0278 1.5167.2324 2.5235.6782 3.336 2.987 6.3118 6.0957 7.8574 1.4303.7111 2.5641 1.0363 4.334 1.2441.4089.048 2.0231-.0161 2.5918-.1035 3.3062-.5077 6.2026-2.323 7.998-5.0097.4164-.623 1.0278-1.804 1.2676-2.4493.2159-.5805.4483-1.4988.5567-2.205.1189-.7733.1205-2.6195.0039-3.3711-.386-2.4888-1.4827-4.6625-3.2422-6.4258C18.4323 2.1042 16.1143.9698 13.418.584c-.3318-.0475-.8277-.0743-1.328-.08-.0626-.0006-.1252-.0001-.1876 0zm-.0214.1132c1.978-.005 3.6378.39 5.4082 1.2871 1.9472.9868 3.5574 2.4926 4.6386 4.3398 1.0733 1.8337 1.5503 3.5975 1.5528 5.7403.0022 1.9101-.3173 3.314-1.1192 4.9277-.9565 1.9248-2.1858 3.3401-3.9023 4.4922-2.1542 1.4459-5.0237 2.185-7.4942 1.9297-2.242-.2318-4.3124-1.0662-6.125-2.4668-.533-.412-1.4222-1.3038-1.8867-1.8945-.6793-.864-1.3476-2.0494-1.709-3.0274-.856-2.3164-.9417-5.0791-.2265-7.2637.166-.5073.5672-1.4967.7715-1.9023C3.2286 3.9208 6.1649 1.6685 9.4727.8867c.8634-.204 1.426-.267 2.4082-.2695zm.0742.211a10.468 10.468 0 0 0-1.5176.1054c-1.6792.241-3.2519.8494-4.7598 1.8457-1.314.8682-2.5774 2.1722-3.3593 3.4668-.4993.8265-1.0375 2.1287-1.2852 3.1094-.436 1.7261-.4038 3.7046.0879 5.5683.7758 2.9405 2.9217 5.577 5.6914 6.9903 1.4378.7336 2.6668 1.0765 4.496 1.2558.3503.0343.967.0269 1.4903-.0176 1.5456-.1313 2.83-.4865 4.2207-1.166 2.1851-1.0676 3.886-2.723 5.0176-4.8867.8483-1.6218 1.2116-3.1291 1.2149-5.0469.0036-1.8951-.3145-3.2833-1.127-4.9199-.934-1.8813-2.1112-3.227-3.8125-4.3633C16.4371 1.5171 14.1689.8347 11.9551.8281zm.668.4628c.0771.0005.1582.0076.2421.0215.3698.0613.4664.151.4961.461l.0235.2324h-.2325c-.2056 0-.233-.0101-.246-.1016-.0126-.088-.048-.1052-.2344-.1172-.1695-.0108-.2234.0016-.2461.0606-.0382.0995.0352.1418.3203.1796.4688.0622.627.211.627.5938 0 .3001-.0778.4681-.252.5508-.1808.0858-.6601.0936-.8945.0136-.1742-.0594-.3212-.2846-.3203-.4902.001-.1972.0589-.2439.2656-.209.1437.0243.1883.0545.1992.1309.0255.1777.543.2038.543.0273 0-.111-.105-.1606-.4121-.1953-.2952-.0333-.4671-.1434-.5235-.3398-.0551-.1923.0064-.5494.1113-.6543.1083-.1083.3017-.1657.5332-.164zm1.4921.1934c.0376-.0016.1994.0262.3926.0683.8259.1802.9297.2495.9297.6211 0 .3053-.152.7182-.2988.8145-.138.0903-.294.0911-.6192.0039a11.1334 11.1334 0 0 0-.2617-.0684c-.0053-.0002-.0352.124-.0664.2754-.061.295-.0752.3038-.3496.2246-.082-.0236-.1484-.0587-.1484-.0781s.0935-.4421.207-.9375c.1135-.4953.205-.91.205-.9219 0-.0016.004-.0017.0098-.002zm-3.1308.2597l.0312.1602c.0356.1899-.0029.2211-.3125.2637-.153.021-.2207.053-.2207.1015 0 .0569.041.0642.2188.039.1198-.0168.2527-.0417.2968-.0546.0671-.0196.0801.0063.0801.1602v.1836l-.2676.0527-.2675.0547.0332.1894c.0395.216.0059.257-.213.2578l-.1425.002-.0996-.6035c-.0551-.3315-.0934-.6098-.084-.6192.0094-.0093.2267-.0566.4824-.1035zm3.5605.3672c-.0357.0005-.0624.0055-.0742.0176-.0202.0207-.0426.0998-.0508.1738-.012.1102.0057.1391.0996.166.2444.0701.3667.0473.4239-.078.0462-.1015.0411-.1277-.0274-.1778-.0788-.0576-.2636-.1032-.371-.1016zm-5.1094.0332c.1902-.0004.2305.017.3282.1485.2447.3296.2873.7501.0957.9277-.1982.1837-.6005.2891-.8496.2227-.1057-.0283-.3126-.4266-.3457-.668-.0171-.1244-.006-.2444.0273-.3066.0784-.1464.4845-.3237.7441-.3243zm6.8028.0743c.1818-.0077.6077.1349.7851.2695.2143.1625.2729.3427.207.6367-.0637.2848-.4073.8958-.582 1.0332-.1536.1209-.3776.1207-.6914 0-.145-.0558-.3044-.1644-.4082-.2793-.1584-.1753-.1675-.2007-.1406-.3984.0647-.4746.5279-1.2056.7969-1.2578a.2675.2675 0 0 1 .0332-.004zm-9.1133.2578a.4542.4542 0 0 1 .0293 0c.1549.0048.2816.0887.3984.2539l.1192.1699-.1934.121c-.1915.1188-.1972.12-.2715.0333-.0732-.0852-.0797-.0855-.2148-.0059-.2115.1246-.2863.2246-.2559.3457.037.1472.3888.6309.459.6309.1087 0 .4434-.2506.4434-.332 0-.1066-.0715-.103-.2325.0117l-.1289.0937-.1191-.1738c-.0645-.0949-.1172-.187-.1172-.205 0-.036.6259-.4494.6797-.4493.0341.0001.2826.3589.3711.5352.0277.055.0508.1834.0508.2851 0 .2384-.1724.4412-.543.6387-.2828.1507-.3733.1686-.545.0996C6.7892 4.4225 6.17 3.5256 6.17 3.248c0-.1842.1325-.3588.414-.5468.2168-.1447.3925-.2197.5411-.2246zm2.2754.0898v.002a.0385.0385 0 0 0-.0098 0c-.0254.0035-.0788.0181-.1386.039-.1568.0547-.1744.1099-.0918.291.0524.1151.1446.1445.287.0899.1032-.0396.081-.2667-.041-.42-.0008-.001-.0033-.0018-.0058-.0019zm6.961.1895c-.056.0016-.106.0176-.1426.0507-.1368.1238-.3423.6268-.291.711.0469.077.3224.2323.412.2324.0296 0 .1259-.1174.2149-.2598.2247-.3592.254-.5113.1152-.6172-.104-.0793-.2155-.1196-.3086-.1171zm1.6933.3984c.0649 0 .8704.6498.92.7422.038.0709.0359.1423-.004.2754-.0644.215-.3438.541-.4648.541-.0602 0-.088.0321-.088.1074 0 .0595-.068.1997-.1523.3106-.0843.1108-.1788.2479-.209.3046-.0718.1355-.109.131-.3027-.039l-.1621-.1426.17-.2305c.1848-.2518.1783-.298-.0509-.4687l-.125-.0938-.125.1387c-.0683.0764-.1576.1886-.1992.248l-.0762.1075-.1835-.1465-.1836-.1445.6015-.7559c.331-.4154.6173-.7539.6348-.7539zm-12.5664.3203c.0175 0 .3142.3215.6601.7149l.629.7148-.1973.2031c-.1093.1113-.2294.2012-.2656.2012-.0363 0-.2852-.1165-.5528-.2598-.5222-.2795-.5226-.278-.0644.2422l.287.3242-.1503.1446c-.0825.08-.1693.1449-.1934.1445-.024-.0005-.3271-.3247-.6738-.7207l-.6309-.7188.1407-.1445c.2801-.2888.2994-.289.8418-.0058.2672.1395.4843.2421.4843.2285 0-.0136-.1487-.2007-.33-.416l-.3282-.3926.1563-.129c.0857-.0715.17-.1308.1875-.1308zm6.375.1856c.6706-.0037 1.4059.044 1.8476.1328 2.8455.5713 5.2931 2.6925 6.2364 5.4023.8627 2.4785.431 5.5672-1.0586 7.5625-.3526.4723-1.1346 1.2917-1.5703 1.6465-1.037.8444-2.2867 1.4302-3.6407 1.705-.4463.0907-.7341.1163-1.4511.131-.492.01-1.051-.0002-1.2403-.0235-.6397-.079-1.3257-.2293-1.7949-.3926-2.0118-.7002-3.853-2.3503-4.8105-4.3086-.3855-.7882-.6284-1.6879-.7325-2.7226-.3118-3.0993 1.067-6.0203 3.6641-7.7657 1.0734-.7213 2.087-1.099 3.4902-1.3027.278-.0403.6582-.062 1.0606-.0644zm.162.1386c-.6451.0038-1.3467.0508-1.744.1309-1.6264.3279-3.0926 1.1566-4.3028 2.4297-.5824.6127-.9884 1.1919-1.3672 1.955-.4796.9663-.7137 1.7695-.83 2.8438-.0704.6499-.0246 1.7769.0957 2.3828.4794 2.416 2.1868 4.6351 4.4257 5.75.7186.3578 1.7392.6595 2.668.7871.4517.062 1.9826.0245 2.4238-.0586 1.8616-.3504 3.3904-1.1617 4.623-2.457.6426-.6751.9852-1.1597 1.3673-1.9297.9571-1.9288 1.1321-4.3693.453-6.3144-.211-.605-.6904-1.5427-1.041-2.0352-.3464-.4869-1.1029-1.2924-1.5644-1.668-1.228-.9994-2.6176-1.5887-4.1836-1.7734-.2697-.0318-.6363-.0454-1.0234-.043zm6.0704.0528c-.0258.0032-.0508.0296-.0918.084-.0837.111-.0825.1121.0625.2363.172.1473.2864.161.3496.043.0462-.0863.0086-.1374-.2422-.3282-.0282-.0214-.0481-.0327-.0664-.0351a.0499.0499 0 0 0-.0117 0zm1.4668.4863l.3945.414c.217.2282.4383.4691.4903.5352l.0937.1211-.1758.1797-.1757.1797-.166-.1602c-.0906-.0883-.1788-.1601-.1973-.1601-.0185 0-.267.2148-.5528.4785l-.5195.4805-.1504-.1543c-.0823-.0849-.142-.176-.1328-.2012.0091-.0253.2331-.2488.498-.4961.265-.2474.4868-.4712.4942-.498.0071-.027-.0485-.1084-.125-.1817s-.1372-.1548-.1348-.1816c.0023-.0269.0837-.117.1817-.2012zm-8.7363.2012c.1829.0034.384.0516.5761.1562.2709.1474.4227.3257.5235.6113.0838.2375.0942.8316.0156.9102-.0801.0801-.3166.067-.4531-.0254-.065-.044-.2087-.1547-.3203-.246-.1116-.0915-.2966-.2063-.4102-.256-.2447-.1069-.5294-.406-.5723-.6015-.0751-.3424.2383-.5562.6407-.5488zm2.4316.0976a1.0885 1.0885 0 0 1 .0488 0c.1125.0025.2148.0245.295.0684.3064.1679.3463.5699.0879.8984-.0532.0676-.2958.2233-.5391.3457-.2433.1224-.4935.2762-.5547.3418-.1398.1502-.1682.1502-.248-.0058-.1804-.3525-.1204-1.0523.1132-1.3184.172-.196.5082-.3227.797-.33zm-3.918.2031c.0476 0 .0971.0015.1504.004.333.0167.8226.8903.6153 1.0976-.0726.0726-.2901.0657-.5176-.0176-.1008-.0369-.3721-.0873-.6035-.1113-.4962-.0514-.65-.1103-.6895-.2676-.0244-.0971.0076-.1482.1934-.3164.3102-.2809.5184-.3801.8515-.3867zm5.2598.0567c.1605 0 .3072.0403.504.1387.3169.1583.668.5066.625.6191-.041.1065-.3495.2486-.6974.3223-.3467.0735-.4294.0765-.6406.0156-.203-.0586-.3298-.2746-.33-.5606-.0002-.192.0216-.2443.1562-.3789.1353-.1353.1862-.1562.3828-.1562zm-10.7773.1523a.134.134 0 0 1 .0215 0c.1106.0093.2927.1683.7597.5606.4072.342.7402.6372.7402.6562 0 .0191-.0664.1004-.1484.1797l-.1484.1445-.748-.6191-.7462-.6191.0899-.129c.0725-.1018.1145-.1672.1797-.1738zm-.588.7207c.0141 0 .132.2156.2637.4805l.2403.4824h.5742c.3155 0 .5742.01.5742.0215 0 .0116-.0577.114-.127.2285l-.125.209h-.4824l-.4824.002.3184.205c.1746.1132.3256.2144.336.2246.0221.0223-.1856.3931-.2188.3907-.0126-.001-.3814-.2171-.8203-.4805-.439-.2634-.8076-.4872-.8184-.498-.0317-.0318.1897-.3954.2402-.3946.0253.0005.1574.0725.295.1602.1376.0876.2686.1601.291.1601.0223 0-.0455-.1588-.1524-.3535l-.1953-.3535.1309-.2441c.0717-.1326.1436-.239.1582-.2403zm13.0196.047a.9193.9193 0 0 1 .041 0 2.719 2.719 0 0 1 .1465.0077c.8078.0578.9529.5762.4453 1.584-.2305.4577-.4145.5753-.5586.3555-.1124-.1716-.0507-.3194.2754-.6602.3298-.3446.3926-.448.3926-.6387 0-.217-.1312-.3382-.3926-.3613-.3467-.0306-.6003.1184-.7812.459-.1759.3311-.264.4137-.5137.4844-.2402.0679-.2826.1566-.1524.3183.2105.2615.2163.3101.0547.4942-.1102.1251-.1409.1933-.1172.2656.0176.0535.0426.1732.0547.2656.0293.2215-.0784.2917-.578.379-.257.0448-.5346.1394-.8673.2949-.2696.126-.5304.2359-.5781.244-.1712.0294-.2764.2444-.2715.5548.0022.1574.0073.5961.0098.9746l.0058.6875-.1386.125c-.1616.147-.5918.2827-.797.252-.0795-.012-.209-.0489-.289-.082-.12-.0498-.1589-.0498-.2187 0-.1239.1027-.0887.3192.0722.455.3728.3144.4532.4112.4532.545 0 .1415.1337.2421.3242.2421.0827 0 .0878-.0213.0605-.2266-.03-.2261-.0293-.227.2012-.4394.1269-.1169.2448-.2682.2617-.336.0499-.1998.1543-.2775.5371-.3984.6272-.1981 1.1624-.1237 1.5254.211.2418.2228.3222.4685.291.9023-.0243.3384-.1522.641-.3457.8203-.1653.1532-.1953.1368-.1953-.0996 0-.1733-.0173-.2141-.1035-.2461-.181-.0672-.7138-.0893-.789-.0332-.0384.0286-.0914.166-.1172.3047-.0292.1565-.1094.3423-.211.4902-.1724.251-.4605.5047-.5136.4512-.0173-.0174-.0313-.2399-.0313-.4922 0-.4245-.0089-.4651-.1074-.545-.15-.1214-.3818-.1536-.711-.0995-.2188.0359-.3175.032-.4336-.0157-.1798-.0739-.2781-.0451-.3125.0918-.0224.0897.0716.7485.1465 1.0254.035.1292-.0431.1334-.2363.0157-.0773-.0472-.2797-.2392-.4492-.4278l-.3086-.3437-.3691-.0528c-.6671-.0943-1.1044-.4101-1.4102-1.0195-.0922-.1837-.209-.36-.2598-.3926-.1409-.0905-.3079.0128-.3808.2364-.0474.1452-.108.2108-.2969.3203-.1305.0757-.2986.2247-.375.33-.0764.1054-.1684.2038-.2031.2188-.0915.0394-.1902-.0615-.295-.2969-.1172-.2634-.1688-1.2899-.0761-1.5136.037-.0896.1974-.2433.4433-.422.2623-.1905.416-.3384.4786-.4609.0506-.0992.0846-.1887.0742-.1992-.0105-.0105-.1007.0457-.1992.125-.0985.0794-.329.215-.5118.3028-.3808.1825-.5028.1771-.7011-.0352l-.125-.1348-.0489.125c-.0265.069-.0608.1988-.078.2871-.0517.2643-.144.395-.4278.6133-.1484.1142-.4352.3842-.6367.5996-.2016.2155-.3977.3926-.4356.3926-.0797 0-.1074-.1912-.1543-1.0351-.045-.8107.0669-1.3145.3809-1.7051.2303-.2866.6233-.4554.9375-.4024.2347.0397.3144.1283.3144.3438 0 .4369.0938.4182.3242-.0645.19-.398.2678-.4788.5528-.5722.1803-.0591.352-.2146.2969-.2696-.0188-.0187-.1811-.0332-.3614-.0332-.2923 0-.329-.01-.3418-.0918-.0504-.3236-.0426-.321-.2597-.0976-.1337.1375-.2677.224-.4004.2597-.216.0582-.5875.2345-.7813.3711-.067.0473-.1575.086-.2012.086-.1308 0-.0554-.329.1348-.5938.0898-.125.2346-.3709.3223-.5449.2719-.54.4997-.7422.832-.7422.1517 0 .1726.0165.2383.1836.0396.101.0997.1836.1328.1836.12 0 .1546-.1636.1094-.5117-.113-.8709-.0217-1.3302.2949-1.4805.2857-.1355.4506-.0852 1.0313.3125.3505.2401.3932.2578.6445.2578.1479 0 .451-.045.6738-.0996.3111-.0763.5535-.1002 1.0469-.1035.612-.0037.6558.0023.918.125.5138.2406.6435.4459.5703.9004-.0253.1556-.0328.3015-.0176.3262.0786.1272-.054.36-.4219.7363-.257.263-.3774.418-.3594.4648.0216.0563.139.0731.586.0899.6013.0226.7231-.0035.8164-.1778.0521-.0974.0465-.1374-.039-.3046-.1195-.2334-.1812-1.0679-.1016-1.3633.0986-.3662.4848-.6467 1.1093-.8067.2165-.0554.3734-.065.6328-.039.817.0817.885.0714 1.504-.2246.4139-.198.5293-.251.6894-.2559zm4.4023.1347c.3 0 .648.4588.6504.8554.001.1616-.022.213-.162.336-.0908.0796-.1896.1363-.2188.127-.0292-.0094-.0941-.094-.1445-.1876-.077-.1427-.0817-.175-.0274-.209.0537-.0335.0553-.0649.0078-.1796-.0778-.1879-.1957-.2888-.2773-.2383-.0534.033-.0384.096.082.3574.2368.5138.1856.683-.2773.9297-.2775.1479-.3894.1216-.6524-.1504-.2259-.2336-.3457-.4835-.3457-.7227 0-.1132.3404-.4744.4219-.4472.026.0087.0915.0902.1445.1816.0906.1562.092.172.0196.252-.0725.08-.0706.0964.0253.2675.0562.1002.1362.189.1797.1973.1453.028.145-.1334-.0039-.4355-.0795-.1614-.1466-.3274-.1465-.3711.0005-.2471.4065-.5625.7247-.5625zm-13.5156.3672c-.1115-.0036-.2043.028-.2558.1015-.1045.1492-.0945.6178.0214.9278.081.2163.2639.44.3594.4394.0155 0 .157-.1154.3145-.2558.4129-.3684.4582-.6258.164-.92-.182-.182-.4176-.2872-.6035-.293zm10.4219.5664c.063.0045.142.0749.2637.2129.2875.326.2756.348-.2227.4355-.0694.0122-.161.0005-.205-.0254-.101-.0595-.1024-.234-.004-.4414.0593-.1248.105-.1866.168-.1816zm.3555 1a.078.078 0 0 1 .0136 0c.0366.0023.0895.0214.1817.0566.2648.1012.647.4413.7754.6895.105.203.1389.6304.0566.7128-.1076.1078-.3205.0963-.6055-.0332-.4965-.2256-.6093-.3979-.6093-.9218 0-.2413.021-.3417.086-.4219.0425-.0526.0642-.0787.1015-.082zm-.9492.037c.072.0025.1563.0472.248.1329.142.1327.289.5265.3008.8066.0063.1507-.0785.1895-.2696.125-.0504-.017-.177-.0763-.2832-.1328-.215-.1146-.2757-.2755-.2304-.6133.0285-.2128.1142-.3224.2343-.3183zM2.4863 8.625a.736.736 0 0 1 .504.1855c.2914.256.362.5862.1972.9239-.171.3502-.6218.521-.9648.3672-.5232-.2347-.6589-.8075-.2891-1.2168.1523-.1686.3514-.2557.5527-.2598zm18.9473.002c.2126.0028.427.0904.582.2714.089.104.1687.2576.1856.3575.0944.5588-.4486 1.0372-.9903.873-.4594-.1394-.6788-.6648-.457-1.0996.1363-.2672.4064-.4056.6797-.4023zm-12.789.1699c-.1498 0-.2735.009-.2735.0195 0 .0106.043.266.0937.5684.1894 1.1284.3796 1.3672 1.2696 1.5859.7732.19.8647.262.8281.666-.0177.1955-.0071.2984.041.3672.0568.0818.1543.1319.1543.08 0-.0088-.023-.082-.0508-.162-.038-.11-.0366-.1617.0059-.213.04-.048.0462-.1671.0234-.41-.0287-.3071-.0214-.3532.0684-.4747.0928-.1256.0957-.1536.045-.3984-.0344-.1654-.0435-.3972-.0235-.623.0305-.3445.0283-.3644-.084-.4766-.0976-.0977-.16-.1172-.373-.1172-.1933 0-.3225-.0342-.5294-.1387-.3208-.162-.8116-.2734-1.1953-.2734zm-6.1973.0625c-.3467.0262-.5894.4492-.4375.7578.1581.3328.6813.4101.9062.1113.19-.2348.1377-.6352-.1387-.7793-.0838-.0572-.1857-.0874-.287-.0898a.7507.7507 0 0 0-.043 0zm18.9375.002c-.3742.0128-.623.5-.4102.8085.1685.2647.5805.3482.8106.125.2322-.1958.254-.5957.0117-.789-.117-.0941-.2602-.152-.4121-.1446zm-6.0118.1874c.0063 0 .0101.0003.0118.002.0444.042-.2926 1.0344-.418 1.2304-.2426.3795-.6496.5088-1.2266.3887-.1135-.024-.2941-.0327-.4004-.0195l-.1933.0254.0273-.3086c.0285-.3192.0949-.5027.2188-.6055.0632-.0524.0722-.0368.0722.127 0 .2729.0642.4038.2715.541.3099.205.696.119.9453-.209.1168-.1534.1225-.56.0098-.7793-.0444-.0867-.0653-.173-.045-.1934.0395-.0394.6319-.1993.7266-.1992zm-6.6054.0235c.016 0 .1083.0224.2031.0507l.1719.0528-.0938.1562c-.0745.1264-.087.2039-.0644.3946.0648.5476.5584.8194 1.0683.5879.1818-.0826.4297-.3453.4297-.4551 0-.0292.0196-.0528.043-.0528.0928 0 .1768.1421.207.3516.0175.121.0421.2635.0547.3164.0214.0901-.0019.0989-.3594.127a75.8431 75.8431 0 0 0-.6113.0507c-.1261.0114-.2976.004-.3828-.0175-.323-.0815-.521-.3073-.625-.713-.0693-.2702-.0973-.8495-.041-.8495zm8.1758.0488c.122-.0007.2776.0998.4062.2851.1269.183.129.1896.129.918 0 .5025-.0176.7401-.0528.752-.0284.0095-.1641-.0862-.3028-.213-.3675-.3359-.4682-.595-.4316-1.1112.0155-.2189.0523-.4505.082-.5157.0355-.0779.0967-.1148.17-.1152zm-7.4141.1836c.0312 0 .068.0029.1133.0078.5132.0579.7403.5338.3652.7656-.2277.1407-.4132.1231-.6015-.0547-.1013-.0956-.1687-.2097-.1875-.3183-.0252-.1442-.0128-.1885.0917-.293.0802-.0802.1253-.1074.2188-.1074zm4.7187.0957a.1927.1927 0 0 1 .0215 0c.0492.002.0872.0247.1485.0703.0925.0688.1285.1386.1386.2734.0258.3416-.129.5428-.457.5957-.1242.02-.1742.0017-.2617-.0918-.0682-.0727-.1183-.193-.1328-.3222-.0198-.1757-.006-.2225.0918-.3203.063-.063.1998-.1405.3047-.172.0644-.0192.1099-.0306.1464-.0331zm-4.5722.1367c-.1218.0049-.2031.0804-.2031.1973 0 .2309.328.3019.4238.0918.0692-.152.0032-.267-.166-.2871a.3479.3479 0 0 0-.0547-.002zm8.3515.004c.052-.0007.1237.0182.2207.0526.4495.1595.9294.5877 1.125 1.004.2448.5205.2464 1.447.004 1.6894-.1503.1503-.2767.105-.6915-.246-.216-.183-.47-.3904-.5644-.463-.1919-.1476-.3421-.437-.3438-.6582-.0004-.0804.0312-.284.0704-.4531.0392-.1692.066-.4273.0586-.5742-.0125-.2507.0067-.35.121-.3516zm-3.9218.1269c-.1546 0-.2285.0784-.2285.2402 0 .092.0304.1408.1035.17.1152.0457.269.0173.3203-.0606.0517-.0786.0417-.2336-.0196-.295-.0302-.0302-.1102-.0546-.1757-.0546zm2.6582 1.2851c.1257 0 .4066.335.4472.5352.0528.2601.0383.7378-.0293 1.0234-.0712.3012-.228.6875-.2793.6875-.0201 0-.1187-.094-.2187-.211-.2766-.3235-.3157-.4936-.1973-.8359.0532-.1536.107-.399.1211-.5449.0593-.614.069-.6543.1563-.6543zm-15.6856.088l.2871.0253c.3525.0308 1.6593.1152 1.7832.1152.0816 0 .0905.0274.0782.2832l-.0137.2832-.5723.2247c-.3147.1231-.5833.2336-.5957.246-.0124.0125.2529.008.588-.0097l.6073-.0313-.0136.1993-.0137.2011-.873.0782c-.4794.043-.9592.0882-1.0665.0996l-.1953.0195.002-.3496v-.3496l.6933-.2285c.8011-.2648.7928-.2876-.1093-.295l-.586-.0039v-.2539zm21.002.3066c.0255 0 .051.0014.0761.002.2016.0045.3906.0285.4708.0722.2212.1207.2628.2347.2636.7226.0014.5377-.0844.7247-.3691.8106-.2347.0711-.6487.068-1.0527-.0059-.5222-.0956-.65-.1682-.713-.4004-.0588-.2172-.0323-.7133.047-.8613.0611-.1143.281-.2305.4355-.2305.1075 0 .1172.0163.1172.2012 0 .162-.0183.2054-.0918.2246-.1332.0348-.1986.2402-.1367.4277.0409.124.0813.1585.2187.1875.2444.0516.7341.032.8125-.0332.091-.0754.0929-.5184.002-.5937-.1308-.1085-.2309-.0374-.2461.1738l-.0157.1973-.2148-.0156-.2148-.0137v-.7715l.1386-.041c.1163-.034.2947-.0503.4727-.0508zm-15.8965.4296c.0365 0 .0892.0576.1172.127.1016.2526.2375.9145.2656 1.2969.0339.4608-.001.5518-.3574.9453-.1273.1405-.2921.3931-.3672.5605-.2057.4584-.3168.5502-.4629.3848-.1892-.2142-.4922-1.2249-.4922-1.6387 0-.2436.1795-.7056.3594-.9238.162-.1966.8537-.752.9375-.752zm11.6797.0957c.036-.0007.0773.015.127.043.1769.1.7345.852.8495 1.1465.1433.3673.1418.9035-.0039 1.2285-.1083.2418-.281.4219-.4023.4219-.0352 0-.2606-.1904-.502-.4238-.6047-.585-.6982-.7864-.539-1.1641.0412-.0977.131-.4035.1992-.6797.1036-.4192.1636-.5698.2715-.5723zm-14.67.8829c.0166 0 .0258.0003.0274.002.0263.0263.2487 1.0967.2305 1.1093-.0054.0037-.0977.0283-.2051.0547-.2198.054-.1855.1029-.3008-.42-.0617-.28-.1015-.3297-.209-.2617-.0517.0327-.0495.0985.0117.3946.0404.1952.0743.3617.0743.3691 0 .0249-.464.124-.4844.1035-.011-.011-.0563-.1883-.0996-.3945-.0754-.3585-.0834-.375-.2031-.375-.0689 0-.1368.019-.1504.041-.0138.0222.0155.2216.0644.4453.049.2238.0745.4199.0567.4356-.0442.039-.47.1797-.545.1797-.0333 0-.0605-.0125-.0605-.0274 0-.0148-.0749-.348-.164-.7402-.0892-.3922-.156-.7189-.1485-.7246.0324-.026 1.8587-.1898 2.1055-.1914zm4.8965.168c.0963 0 .1027.0111.2657.4824.0781.226.1684.3813.3086.5273.248.2583.3496.4098.3496.5195 0 .1172-.5891.9942-.668.9942-.035 0-.1306-.0917-.2129-.2051-.0822-.1134-.2527-.3768-.3789-.584-.2178-.3579-.2305-.3923-.2305-.6992 0-.5211.2808-1.0352.5664-1.0352zm12.6543.1855c.4139.0051 2.0053.093 2.0293.1172.0187.0186-.0773.712-.1015.7343-.006.0055-.3472.048-.7598.0938-.4125.0458-.7235.0916-.6894.1035.034.012.3518.0858.705.164.621.1376.6412.1468.6309.256-.0295.3103-.0645.4111-.1406.4062-.043-.0027-.5094-.143-1.0371-.3106-.5278-.1676-.9591-.3135-.959-.3261.0001-.0127.014-.13.0312-.2598l.0313-.2363.5605-.1036c.3086-.057.5391-.1117.5117-.121-.0273-.0093-.2537-.0426-.5039-.0743l-.455-.0566.0156-.1816c.0082-.0999.0224-.1905.0332-.2012.003-.003.0386-.0044.0976-.004zm-4.4902.0468c.0818-.0064.1913.0564.2715.1758.088.1309.1035.2164.1035.5332 0 .454-.0575.6327-.3965 1.2266-.1985.3479-.2768.4473-.3535.4473-.0542 0-.1195-.0271-.1445-.0606-.0251-.0334-.155-.2243-.289-.4238-.2149-.3197-.2414-.3806-.215-.5215.0476-.2536.1447-.4023.5274-.8086.1972-.2093.3736-.4248.3906-.4785.018-.0565.0564-.0866.1055-.0899zm-12.8105.7774c.0404 0 .1152.335.082.3672-.0217.021-.2044.1117-.4063.2012-.2018.0894-.3532.1635-.3359.164.0173.0007.2043-.0395.414-.0898.2098-.0503.3959-.0917.4141-.0918.0365-.0005.1447.1976.1914.3496.026.0844-.0245.124-.4043.3203-.2384.1232-.4273.229-.4199.2363.0077.0077.2157-.0503.461-.1289.2452-.0785.4533-.1345.4628-.125.0095.0095.0496.0937.088.1856l.0683.166-.7441.2344c-.4098.129-.8676.275-1.0176.3242-.15.049-.2877.0898-.3047.0898-.017 0-.0751-.1068-.129-.2363-.0537-.1295-.0976-.2605-.0976-.291 0-.0306.2283-.1632.5059-.295.2775-.1317.5039-.2456.5039-.2539 0-.008-.221.0444-.4922.1172s-.5277.1328-.5684.1328c-.0475 0-.108-.0931-.1718-.2597-.0546-.1424-.0922-.2652-.084-.2735.0163-.0163 1.9623-.8437 1.9844-.8437zm3.4199.2305c.1764-.0005.3497.1875.5293.5761.0878.19.262.5023.3867.6934.1434.2196.2266.398.2266.4844 0 .0751-.102.4588-.2266.8535-.1247.3947-.2406.796-.2559.8906-.0158.0986-.053.1719-.0879.1719-.0335 0-.214-.1816-.4023-.4024-.434-.5088-.7478-.934-.9023-1.2265-.1054-.1994-.12-.2837-.1192-.6426.0007-.3513.0192-.4518.125-.6797.2048-.4409.4845-.7182.7266-.7187zm10.4277.0859h.002c.0978.0051.2085.0822.3496.2285.4288.445.647 1.477.3379 1.5957-.1178.0452-.2852-.0597-.4102-.2578-.0832-.1318-.147-.1855-.2246-.1855-.1624 0-.1756.1073-.0527.4336.174.4622.19.6728.0722.916-.1205.2489-.3775.4863-.5273.4863-.0944 0-.123-.0434-.211-.3105-.056-.1704-.1819-.456-.2792-.6348-.2487-.4564-.2396-.5303.1386-1.1387.1737-.2794.3797-.6345.457-.789.119-.2375.222-.3504.3477-.3438zm3.0938.2813c.0428.0008 2.0343.59 2.0468.6054.0194.024-.2179.6325-.246.6309-.0155-.0007-.4624-.1786-.9922-.3965-.5299-.2179-.968-.4002-.9747-.4043-.0232-.0157.1371-.436.166-.4355zm-11.0957.2285c.0426 0 .138.088.2129.1953.2951.4223.4291.8924.4296 1.5137.0005.4326-.0022.4472-.1015.4472-.067 0-.209-.111-.4082-.3183-.3933-.4092-.5661-.7577-.5293-1.0684.0325-.2744.2879-.7695.3965-.7695zm1.873.0468c.0373 0 .3751.688.375.7637 0 .0743-.2225.2442-.3203.2442-.044 0-.1065-.0317-.1387-.0704-.0986-.1187-.1107-.5038-.0234-.7324.0432-.113.0906-.205.1074-.205zm2.0234.0235l.0645.1601c.1017.249.131.557.0645.6875-.0702.1377-.1964.1604-.3672.0664-.1704-.0937-.1583-.2075.0586-.5937zm1.7833.209c.0665.0006.123.0335.164.0996.089.143.1813.7855.1465 1.0175-.0388.2587-.2297.4769-.6172.707-.3592.2135-.3283.2028-.414.1485-.05-.0317-.0556-.1047-.0294-.332.0186-.1602.0395-.4259.047-.5899.0163-.3677.1514-.6712.3964-.8925.1175-.1062.221-.1587.3066-.1582zm-2.922.6386c.072 0 .311.0737.5294.1641.4088.1692.5633.182 1.0156.086.3233-.0688.3386.209.0273.4824-.2003.1756-.3233.1769-.828.002-.553-.1917-.791-.1852-1.4766.0448-.3009.101-.5625.1836-.5801.1836-.0177 0-.1013-.07-.1856-.1543-.2418-.2419-.273-.5356-.0566-.5332.0575.0005.1947.042.3047.0918.3197.145.456.1216.8086-.1386.2018-.149.3564-.2286.4414-.2286zm9.541.0098l.2911.1152.291.1153-.2773.5898c-.1527.325-.29.5907-.3047.5899-.0147-.001-.419-.217-.8984-.4805-.4794-.2636-.889-.4868-.9102-.4942-.0465-.0165.1081-.3535.1621-.3535.021 0 .3242.1433.6738.3184l.6348.3183.17-.3593zm-1.9413.543c.057-.0005.3789.1408.3789.1699 0 .0116-.0466.1014-.1016.1992-.055.0978-.0908.1862-.08.1953.0107.0091.3305.1985.709.4219.3784.2234.6937.41.7011.414.02.012-.2392.4294-.2656.4278-.0126-.0007-.3325-.2067-.711-.457l-.6894-.4551-.1309.162-.1308.1603-.168-.1231a19.1808 19.1808 0 0 0-.1797-.1328c-.011-.0077.6026-.919.6602-.9805.0008-.002.0045-.0019.0078-.002zm-16.416.1347l.1172.172c.064.094.1154.191.1152.2167-.0001.0257-.072.0963-.1602.1563-.088.06-.1601.1353-.1601.168 0 .075.2225.3417.2851.3417.0406 0 .6712-.42 1.0586-.705l.127-.0938.1113.1348c.0612.0748.1125.1521.1133.1718.0041.0893-.9609.8683-1.254 1.0118-.2616.1281-.3565.143-.5116.08-.1448-.0587-.3527-.2957-.498-.5644-.107-.1979-.1267-.2768-.1016-.4102.0373-.1992.2438-.4155.543-.5683zm12.5468.047c.112 0 .2921.263.3438.5038.069.3217.0625.5825-.0215.8652-.1128.38-.2991.5435-1.0996.963-.3925.2056-.7203.373-.7285.373-.008 0-.0266-.1905-.043-.4238-.0163-.2334-.0654-.5213-.1074-.6387-.1109-.31-.0406-.4453.3223-.6367.3412-.18.549-.3376.959-.7188.1707-.1588.3398-.287.375-.287zm-7.3027.0175c.0248 0 .052.0051.086.0117.2415.046.3856.1336.7187.4434.1698.158.3945.354.5.4355.3089.239.3425.4558.2012 1.3379-.0753.4698-.1084.5719-.1875.586-.0374.0066-.2731-.104-.5254-.2462-.6973-.3927-.9468-.573-1.0996-.791-.1243-.1772-.1416-.241-.1563-.5937-.022-.5256.0517-.837.2442-1.041.0995-.1055.1445-.1425.2187-.1426zm-3.207.9863l.1523.1485c.0842.0816.1543.1662.1543.1875 0 .0212-.1203.2196-.2676.4394-.4152.6197-.8428 1.3-.8261 1.3164.0083.008.3246-.282.703-.6445.3786-.3626.6993-.6613.713-.6621.0512-.0037.5573.4504.666.5976.1994.2703.1363.4734-.2637.8516-.1362.1288-.2928.2501-.3476.2676-.1315.0417-.3686-.0753-.5625-.2754-.0847-.0874-.1766-.1577-.2032-.1582-.0265-.0007-.1517.1136-.2793.2558L4.6738 20l-.3281-.379-.3281-.3769.1367-.1972c.0748-.1087.1336-.2156.1328-.2364-.0009-.0206-.0696-.1178-.1543-.2168l-.1543-.1796-.2226.0976-.2227.0977-.1719-.1934c-.0938-.1065-.1713-.2056-.1718-.2207-.0007-.015.4672-.1956 1.039-.4023zm13.6992.004c.1122 0 .258.0685.3809.1757.077.0672.0758.0772-.041.1992-.0926.0969-.1517.1203-.2344.0996-.0818-.0205-.1442.0058-.2442.1016-.1507.1444-.1701.2262-.0625.2676.04.0153.0805.0273.088.0273.0077 0 .1137-.0822.2362-.1836.2879-.238.4788-.2928.6993-.2011.4486.1865.7306.5279.6738.8164-.0354.1796-.24.4537-.4688.627-.1902.144-.4256.1739-.5937.076-.0527-.0306-.1752-.123-.2734-.205l-.1797-.1484.1699-.17.17-.1699c.0738.0673.1457.1367.2187.2051l.168-.1855c.1966-.2177.2084-.306.0527-.377-.1033-.047-.1348-.0317-.3399.1602-.3335.312-.542.3364-.8281.0957-.1743-.1467-.2773-.3372-.2773-.5118 0-.2565.4342-.6992.6855-.6992zm-8.2969.4687c.0397-.0022.083.0086.129.0332.2128.114.9687 1.2783.9687 1.4922 0 .162-.4541.2179-.791.0976-.4328-.1544-.5824-.3957-.584-.9355-.0013-.4244.1055-.6776.2773-.6875zm-5.7207.0918c-.026.003-.1191.0368-.2246.082-.2138.0916-.2166.0953-.1367.1836.0807.0892.0833.0894.2305-.08.082-.0945.1452-.179.1386-.1856-.0008-.0008-.0045-.0005-.0078 0zm8.5195.1289c.0134-.0006.0267.0011.0391.002.1661.012.2544.1718.252.4726-.0044.5001-.2665.846-.7305.9668-.3436.0895-.378.0883-.5742-.0098-.11-.055-.1646-.1163-.1738-.1953-.0245-.2094.4658-.8428.8476-1.0957.1333-.0883.2466-.1357.3399-.1406zm4.5625.1582c.0395.0025.0929.0466.1758.1426l.1524.1777-.2793.2226c-.3751.2985-.3628.2795-.2637.3692.084.076.1.0694.3867-.1738l.2989-.254.164.2032.166.2011-.2988.2364c-.164.1304-.2988.2631-.2988.2949 0 .0318.036.0912.08.1309.0742.0665.1076.0515.42-.1993.186-.1492.353-.2714.373-.2714.0419 0 .4143.4108.4102.453-.0023.0242-.7122.6061-1.0293.8438l-.1094.082-.2031-.289c-.6296-.8924-.9961-1.4301-.9961-1.461 0-.0276.4985-.4542.8164-.6992a.0506.0506 0 0 1 .0352-.0097zm-12.1757.5293c-.0197 0-.0908.0585-.1602.1308l-.127.1309.1954.164.1972.1622.127-.0899c.0704-.05.1289-.1188.1289-.1523 0-.0622-.2966-.3457-.3613-.3457zm1.2304.3945c.0892-.0058.4141.1806.4141.2441 0 .0173-.1205.4533-.2695.9688-.149.5155-.2672.9438-.2598.9512.007.0073.2154-.3369.461-.7657.5939-1.037.5051-.9454.7968-.8242.2317.0963.242.1077.2188.2422-.0386.2235-.0883.9902-.0645.9902.0119 0 .1096-.212.2188-.4707.1091-.2586.204-.475.209-.4824.0052-.0074.0956.0203.2011.0625.1446.0579.1845.0945.1621.1504-.0163.0409-.185.4984-.375 1.0156-.1899.5173-.359.953-.375.9688-.016.0159-.163-.0315-.3261-.1055-.1632-.074-.2987-.1376-.3028-.1426-.0042-.005.0376-.3296.0938-.7207.0561-.391.0972-.7195.0898-.7285-.0071-.009-.152.2607-.3203.5977-.1684.337-.312.6198-.3203.6289-.0154.0168-.7784-.3841-.877-.461-.0406-.0317-.0327-.103.0313-.289l.084-.248-.2246-.1446-.2246-.1445-.1915.164c-.2086.1786-.2278.1761-.4902-.0488l-.1504-.1289.8574-.6191c.4717-.3406.8848-.6366.918-.6563.0037-.0016.0099-.0016.0156-.002zm9.8008.0176c.2263.0007.5684.3795.5684.6289 0 .1005.023.1504.0664.1504.082 0 .2865.2048.5527.5508l.207.2675-.2265.1387-.2246.1387-.2324-.3184c-.1278-.1751-.2613-.3183-.297-.3183-.0356 0-.1496.0473-.2519.1054l-.1855.1075.2031.3574c.1122.1968.194.3755.1797.3984-.0258.0417-.3597.2246-.4102.2246-.0146 0-.234-.4285-.4863-.9511l-.457-.9493.1035-.078c.1842-.139.8013-.4534.8906-.4532zm-.0137.5078c-.0466-.0009-.1094.021-.1894.0645-.2535.1373-.2539.1404-.168.2714.0435.0663.0875.1192.0977.1192s.1007-.052.2012-.1153c.1872-.1182.2024-.1441.1543-.2695-.0174-.0452-.049-.0695-.0958-.0703zm-1.0293.0039l.3418 1.0254.3418 1.0234-.252.0957c-.1381.0529-.2744.0977-.3046.0977-.0302 0-.1681-.2272-.3047-.504-.1365-.2767-.2524-.4976-.2598-.4901-.007.007.0588.2456.1465.5312.0877.2856.1602.533.1602.5488 0 .0274-.4969.2344-.5625.2344-.0173 0-.0617-.0573-.0977-.127-.0992-.1919-.8554-1.8008-.8554-1.8203 0-.0228.2755-.1171.3418-.1171.0289 0 .1448.1856.2558.412.111.2265.2063.405.213.3985.0067-.0068-.0376-.1961-.0997-.4219-.0621-.2257-.1133-.4312-.1133-.457 0-.0437.4522-.232.4785-.1992.0066.0082.1104.1977.2305.4199.12.2222.2252.396.2344.3867.0092-.0092-.053-.2133-.1387-.4531l-.1562-.4356.2011-.0742zm-8.9492.1191c-.029-.0013-.0957.0488-.2148.1504-.1069.0913-.108.0963-.0235.1602.1234.0933.1624.0671.2266-.1504.0312-.1058.0407-.1585.0117-.1602zm2.8008.4747c.1232-.004.9073.1873 1 .248.0586.0384.1205.1227.1367.1875.052.207-.0105.7358-.1054.8984-.1236.2117-.2685.2514-.6387.1778-.3506-.0697-.3603-.0627-.4082.2695-.066.4576-.0456.438-.3809.3574-.1899-.0456-.1955-.0524-.166-.1894.0405-.1878.529-1.926.5469-1.9453.002-.0017.0074-.0037.0156-.004zm3.4863.2265c.2073-.0002.263.0188.373.129.1714.1713.3203.6603.3536 1.1581.0314.4705-.0394.6737-.2773.7871-.2156.1028-.6166.1367-.8047.0684-.086-.0312-.1937-.1088-.2403-.1719-.1216-.1646-.2218-.6898-.2226-1.1777-.0007-.3854.0095-.4326.1172-.5606.1355-.161.3536-.232.7011-.2324zm-1.6738.045c.5148 0 .5741.0092.6524.0956.1235.1365.1526.6833.0449.8477-.073.1114-.0745.1248 0 .207.0448.0495.0871.181.0957.3047.0084.1201.0216.3292.0312.463l.0176.242-.2344-.0136-.2343-.0136-.0332-.3438c-.0189-.1892-.0447-.3708-.0567-.4023-.0134-.0354-.1095-.0567-.252-.0567h-.2304v.8261h-.252c-.21 0-.2524-.0132-.252-.08.0006-.0442.0314-.5042.0684-1.0215.0372-.5172.068-.9665.0684-.998.0005-.0428.1443-.0567.5664-.0567zm-1.5254.2636c-.0138.0008-.0229.0018-.0254.0059-.0097.0156-.0315.1048-.0488.1972l-.0312.168.1992.045c.1096.0243.2143.0463.2324.0488.018.0027.054-.0352.08-.084.0262-.0488.047-.1379.047-.1992 0-.0974-.0293-.1185-.2305-.1583a1.3453 1.3453 0 0 0-.1836-.0234.3317.3317 0 0 0-.039 0zm3.125.1484c-.0974 0-.2158.0296-.2637.0645-.0811.0593-.0824.0933-.037.5117.0622.5746.1424.6538.5058.502l.164-.0684-.0253-.336c-.014-.1842-.0569-.4108-.0957-.5038-.0642-.1535-.0874-.17-.248-.17zm-1.5957.047c-.1519 0-.1582.0052-.1582.1835 0 .1786.0059.1836.1582.1836.0863 0 .1887-.014.2285-.0293.0422-.0162.0723-.08.0723-.1543 0-.1428-.0657-.1836-.3008-.1836zm2.8887.0566c.0033 0 .0073-.0005.0078 0 .0256.028.1572.3704.1465.3808-.0067.0064-.1322.0423-.2774.0801l-.2636.0703-.0254-.123a22.9115 22.9115 0 0 1-.041-.2012c-.012-.061.0389-.0956.2168-.1484.112-.0332.2098-.057.2363-.0586Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/newrelic.svg b/assets/lib/simple-icons/icons/newrelic.svg
index 56f2d0ab..bef8f7b8 100644
--- a/assets/lib/simple-icons/icons/newrelic.svg
+++ b/assets/lib/simple-icons/icons/newrelic.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>New Relic icon</title><path d="M11.9994 16.3548a4.354 4.354 0 1 1 4.354-4.354 4.3598 4.3598 0 0 1-4.354 4.354zm0-8.1333a3.7793 3.7793 0 1 0 3.7793 3.7792 3.7836 3.7836 0 0 0-3.7793-3.7792zm1.0289 10.9181a6.9722 6.9722 0 1 1 6.9737-6.9722 6.9808 6.9808 0 0 1-6.9737 6.9722zm0-13.3639a6.3974 6.3974 0 1 0 6.3989 6.3975 6.4046 6.4046 0 0 0-6.399-6.4032zm-2.1727 15.998c-5.3657 0-9.7571-2.9617-10.6782-7.2037C-.9521 9.3725 3.4307 3.991 9.9488 2.5727a15.0552 15.0552 0 0 1 3.193-.3463c5.3657 0 9.7571 2.9616 10.6782 7.2021.5504 2.5305-.171 5.1732-2.0319 7.445-1.8609 2.2719-4.5983 3.8684-7.7396 4.5524a15.0495 15.0495 0 0 1-3.193.3477zm2.2848-18.9682a14.479 14.479 0 0 0-3.0694.329C3.8632 4.484-.3241 9.5594.7392 14.448c.8622 3.9747 5.0295 6.7538 10.1164 6.7538a14.4833 14.4833 0 0 0 3.0708-.3334c3.0177-.6567 5.653-2.2029 7.4163-4.354 1.7631-2.1512 2.427-4.5984 1.9154-6.9593-.8636-3.9776-5.0236-6.7538-10.1163-6.7538Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>New Relic</title><path d="M11.9994 16.3548a4.354 4.354 0 1 1 4.354-4.354 4.3598 4.3598 0 0 1-4.354 4.354zm0-8.1333a3.7793 3.7793 0 1 0 3.7793 3.7792 3.7836 3.7836 0 0 0-3.7793-3.7792zm1.0289 10.9181a6.9722 6.9722 0 1 1 6.9737-6.9722 6.9808 6.9808 0 0 1-6.9737 6.9722zm0-13.3639a6.3974 6.3974 0 1 0 6.3989 6.3975 6.4046 6.4046 0 0 0-6.399-6.4032zm-2.1727 15.998c-5.3657 0-9.7571-2.9617-10.6782-7.2037C-.9521 9.3725 3.4307 3.991 9.9488 2.5727a15.0552 15.0552 0 0 1 3.193-.3463c5.3657 0 9.7571 2.9616 10.6782 7.2021.5504 2.5305-.171 5.1732-2.0319 7.445-1.8609 2.2719-4.5983 3.8684-7.7396 4.5524a15.0495 15.0495 0 0 1-3.193.3477zm2.2848-18.9682a14.479 14.479 0 0 0-3.0694.329C3.8632 4.484-.3241 9.5594.7392 14.448c.8622 3.9747 5.0295 6.7538 10.1164 6.7538a14.4833 14.4833 0 0 0 3.0708-.3334c3.0177-.6567 5.653-2.2029 7.4163-4.354 1.7631-2.1512 2.427-4.5984 1.9154-6.9593-.8636-3.9776-5.0236-6.7538-10.1163-6.7538Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/newyorktimes.svg b/assets/lib/simple-icons/icons/newyorktimes.svg
index 31fd9936..7cfc5f37 100644
--- a/assets/lib/simple-icons/icons/newyorktimes.svg
+++ b/assets/lib/simple-icons/icons/newyorktimes.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>New York Times icon</title><path d="M21.272,14.815h-0.098c-0.747,2.049-2.335,3.681-4.363,4.483v-4.483l2.444-2.182l-2.444-2.182V7.397 c2.138,0.006,3.885-1.703,3.927-3.84c0-2.629-2.509-3.556-3.927-3.556c-0.367-0.007-0.734,0.033-1.091,0.12v0.131h0.556 c0.801-0.141,1.565,0.394,1.706,1.195C17.99,1.491,17.996,1.537,18,1.583c-0.033,0.789-0.7,1.401-1.488,1.367 c-0.02-0.001-0.041-0.002-0.061-0.004c-2.444,0-5.323-1.985-8.454-1.985C5.547,0.83,3.448,2.692,3.284,5.139 C3.208,6.671,4.258,8.031,5.76,8.346v-0.12C5.301,7.931,5.041,7.407,5.084,6.862c0.074-1.015,0.957-1.779,1.973-1.705 C7.068,5.159,7.08,5.16,7.091,5.161c2.629,0,6.872,2.182,9.501,2.182h0.098v3.142l-2.444,2.182l2.444,2.182v4.549 c-0.978,0.322-2.003,0.481-3.033,0.469c-1.673,0.084-3.318-0.456-4.614-1.516l4.429-1.985V7.451l-6.196,2.727 c0.592-1.75,1.895-3.168,3.589-3.905V6.175c-4.516,1.004-8.138,4.243-8.138,8.705c0,5.193,4.025,9.12,9.818,9.12 c6.011,0,8.727-4.363,8.727-8.814V14.815z M8.858,18.186c-1.363-1.362-2.091-3.235-2.007-5.16c-0.016-0.88,0.109-1.756,0.371-2.596 l2.051-0.938v8.476L8.858,18.186z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>New York Times</title><path d="M21.272,14.815h-0.098c-0.747,2.049-2.335,3.681-4.363,4.483v-4.483l2.444-2.182l-2.444-2.182V7.397 c2.138,0.006,3.885-1.703,3.927-3.84c0-2.629-2.509-3.556-3.927-3.556c-0.367-0.007-0.734,0.033-1.091,0.12v0.131h0.556 c0.801-0.141,1.565,0.394,1.706,1.195C17.99,1.491,17.996,1.537,18,1.583c-0.033,0.789-0.7,1.401-1.488,1.367 c-0.02-0.001-0.041-0.002-0.061-0.004c-2.444,0-5.323-1.985-8.454-1.985C5.547,0.83,3.448,2.692,3.284,5.139 C3.208,6.671,4.258,8.031,5.76,8.346v-0.12C5.301,7.931,5.041,7.407,5.084,6.862c0.074-1.015,0.957-1.779,1.973-1.705 C7.068,5.159,7.08,5.16,7.091,5.161c2.629,0,6.872,2.182,9.501,2.182h0.098v3.142l-2.444,2.182l2.444,2.182v4.549 c-0.978,0.322-2.003,0.481-3.033,0.469c-1.673,0.084-3.318-0.456-4.614-1.516l4.429-1.985V7.451l-6.196,2.727 c0.592-1.75,1.895-3.168,3.589-3.905V6.175c-4.516,1.004-8.138,4.243-8.138,8.705c0,5.193,4.025,9.12,9.818,9.12 c6.011,0,8.727-4.363,8.727-8.814V14.815z M8.858,18.186c-1.363-1.362-2.091-3.235-2.007-5.16c-0.016-0.88,0.109-1.756,0.371-2.596 l2.051-0.938v8.476L8.858,18.186z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/next-dot-js.svg b/assets/lib/simple-icons/icons/next-dot-js.svg
deleted file mode 100644
index 162293ae..00000000
--- a/assets/lib/simple-icons/icons/next-dot-js.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Next.js icon</title><path d="M17.813 22.502c-.089.047-.084.066.005.021a.228.228 0 0 0 .07-.047c0-.016-.002-.014-.075.026zm.178-.094c-.042.033-.042.035.009.009.028-.014.052-.03.052-.035 0-.019-.012-.014-.061.026zm.117-.071c-.042.033-.042.035.009.009.028-.014.052-.03.052-.035 0-.019-.012-.014-.061.026zm.117-.07c-.042.033-.042.035.009.009.028-.014.052-.03.052-.035 0-.019-.012-.014-.061.026zm.162-.105c-.082.052-.108.087-.035.047.052-.03.136-.094.122-.096a.466.466 0 0 0-.087.049zM11.214.006c-.052.005-.216.021-.364.033-3.408.307-6.601 2.146-8.623 4.973a11.876 11.876 0 0 0-2.118 5.243c-.096.659-.108.854-.108 1.748s.012 1.088.108 1.748c.652 4.506 3.859 8.292 8.208 9.695.779.251 1.6.422 2.533.525.364.04 1.935.04 2.299 0 1.611-.178 2.977-.577 4.323-1.264.206-.106.246-.134.218-.157a231.73 231.73 0 0 1-1.954-2.62l-1.919-2.592-2.404-3.558a332.01 332.01 0 0 0-2.421-3.556c-.009-.002-.019 1.579-.023 3.509-.007 3.38-.009 3.516-.052 3.596a.424.424 0 0 1-.206.213c-.075.038-.141.045-.495.045H7.81l-.108-.068a.442.442 0 0 1-.157-.171l-.049-.106.005-4.703.007-4.705.073-.091a.637.637 0 0 1 .174-.143c.096-.047.134-.052.54-.052.479 0 .558.019.683.155a466.83 466.83 0 0 1 2.895 4.361c1.558 2.362 3.687 5.587 4.734 7.171l1.9 2.878.096-.063a12.34 12.34 0 0 0 2.465-2.163 11.94 11.94 0 0 0 2.824-6.134c.096-.659.108-.854.108-1.748s-.012-1.088-.108-1.748c-.652-4.506-3.859-8.292-8.208-9.695a12.552 12.552 0 0 0-2.498-.523c-.225-.023-1.776-.049-1.97-.03zm4.912 7.258a.471.471 0 0 1 .237.277c.019.061.023 1.365.019 4.304l-.007 4.218-.744-1.14-.746-1.14v-3.066c0-1.982.009-3.096.023-3.15a.484.484 0 0 1 .232-.296c.096-.049.131-.054.5-.054.347 0 .408.005.486.047z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/nextcloud.svg b/assets/lib/simple-icons/icons/nextcloud.svg
index c5fec3f2..b324c8af 100644
--- a/assets/lib/simple-icons/icons/nextcloud.svg
+++ b/assets/lib/simple-icons/icons/nextcloud.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Nextcloud icon</title><path d="M12.018 6.537c-2.5 0-4.6 1.712-5.241 4.015-.56-1.232-1.793-2.105-3.225-2.105A3.569 3.569 0 0 0 0 12a3.569 3.569 0 0 0 3.552 3.553c1.432 0 2.664-.874 3.224-2.106.641 2.304 2.742 4.016 5.242 4.016 2.487 0 4.576-1.693 5.231-3.977.569 1.21 1.783 2.067 3.198 2.067A3.568 3.568 0 0 0 24 12a3.569 3.569 0 0 0-3.553-3.553c-1.416 0-2.63.858-3.199 2.067-.654-2.284-2.743-3.978-5.23-3.977zm0 2.085c1.878 0 3.378 1.5 3.378 3.378 0 1.878-1.5 3.378-3.378 3.378A3.362 3.362 0 0 1 8.641 12c0-1.878 1.5-3.378 3.377-3.378zm-8.466 1.91c.822 0 1.467.645 1.467 1.468s-.644 1.467-1.467 1.468A1.452 1.452 0 0 1 2.085 12c0-.823.644-1.467 1.467-1.467zm16.895 0c.823 0 1.468.645 1.468 1.468s-.645 1.468-1.468 1.468A1.452 1.452 0 0 1 18.98 12c0-.823.644-1.467 1.467-1.467z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Nextcloud</title><path d="M12.018 6.537c-2.5 0-4.6 1.712-5.241 4.015-.56-1.232-1.793-2.105-3.225-2.105A3.569 3.569 0 0 0 0 12a3.569 3.569 0 0 0 3.552 3.553c1.432 0 2.664-.874 3.224-2.106.641 2.304 2.742 4.016 5.242 4.016 2.487 0 4.576-1.693 5.231-3.977.569 1.21 1.783 2.067 3.198 2.067A3.568 3.568 0 0 0 24 12a3.569 3.569 0 0 0-3.553-3.553c-1.416 0-2.63.858-3.199 2.067-.654-2.284-2.743-3.978-5.23-3.977zm0 2.085c1.878 0 3.378 1.5 3.378 3.378 0 1.878-1.5 3.378-3.378 3.378A3.362 3.362 0 0 1 8.641 12c0-1.878 1.5-3.378 3.377-3.378zm-8.466 1.91c.822 0 1.467.645 1.467 1.468s-.644 1.467-1.467 1.468A1.452 1.452 0 0 1 2.085 12c0-.823.644-1.467 1.467-1.467zm16.895 0c.823 0 1.468.645 1.468 1.468s-.645 1.468-1.468 1.468A1.452 1.452 0 0 1 18.98 12c0-.823.644-1.467 1.467-1.467z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/nextdoor.svg b/assets/lib/simple-icons/icons/nextdoor.svg
index 28785894..f12efd89 100644
--- a/assets/lib/simple-icons/icons/nextdoor.svg
+++ b/assets/lib/simple-icons/icons/nextdoor.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Nextdoor icon</title><path d="M23.993 9.816L12 2.473l-4.12 2.524V2.473H4.124v4.819L.004 9.816l1.961 3.202 2.16-1.315v9.826h15.749v-9.826l2.159 1.315 1.96-3.202"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Nextdoor</title><path d="M14.65 9.997a.069.069 0 0 0-.07.069v1.415c-.123-.177-.42-.37-.805-.37-.745 0-1.316.659-1.316 1.445 0 .787.571 1.447 1.316 1.447.386 0 .682-.194.806-.372v.221c0 .05.04.09.09.09h.607a.07.07 0 0 0 .07-.07v-3.806a.069.069 0 0 0-.07-.069zm-3.913.404a.07.07 0 0 0-.069.07c0 .779.064.7-.504.7a.09.09 0 0 0-.09.09v.486c0 .05.04.089.09.089h.504v1.136c0 .676.476 1.003 1.07 1.003.183 0 .32-.017.434-.046a.07.07 0 0 0 .052-.067v-.526a.07.07 0 0 0-.086-.066.984.984 0 0 1-.227.023c-.33 0-.476-.133-.476-.47v-.987h.608a.07.07 0 0 0 .07-.069v-.527a.069.069 0 0 0-.07-.069h-.608v-.701a.069.069 0 0 0-.069-.07zm-8.396.676c-.516 0-.955.236-1.201.598-.02.03-.055.095-.102.095-.226.002-.24-.276-.247-.524a.07.07 0 0 0-.069-.066l-.653-.004a.07.07 0 0 0-.069.07c.014.606.126 1.018.86 1.181.04.01.068.045.068.087v1.36c0 .037.03.068.069.068h.634a.07.07 0 0 0 .069-.07V12.47c0-.312.221-.667.64-.667.4 0 .642.355.642.667v1.404c0 .038.03.069.069.069h.634a.07.07 0 0 0 .069-.07v-1.508c0-.72-.616-1.287-1.413-1.287zm3.207.033c-.851 0-1.472.626-1.472 1.446 0 .876.65 1.431 1.483 1.447.655.012 1.09-.363 1.194-.494a.068.068 0 0 0-.015-.097l-.435-.34c-.047-.047-.084-.021-.112.001-.07.057-.203.22-.626.237-.37.015-.7-.205-.745-.576h2.03a.07.07 0 0 0 .069-.065c.006-.082.006-.142.006-.196 0-.897-.644-1.363-1.377-1.363zm11.652 0c-.812 0-1.472.637-1.472 1.446 0 .81.66 1.447 1.472 1.447.812 0 1.472-.638 1.472-1.447s-.66-1.446-1.472-1.446zm3.229 0c-.812 0-1.472.637-1.472 1.446 0 .81.66 1.447 1.472 1.447.812 0 1.472-.638 1.472-1.447s-.66-1.446-1.472-1.446zm3.314.028a.745.745 0 0 0-.695.476v-.374a.069.069 0 0 0-.069-.069h-.628a.069.069 0 0 0-.07.07v2.632a.07.07 0 0 0 .07.069h.628a.07.07 0 0 0 .07-.07v-1.255c0-.454.24-.737.604-.737.092 0 .175.013.26.035A.069.069 0 0 0 24 11.85v-.624a.07.07 0 0 0-.056-.068.938.938 0 0 0-.201-.02zm-16.666.033a.069.069 0 0 0-.058.108l.88 1.305L7 13.832a.07.07 0 0 0 .056.11h.745a.068.068 0 0 0 .056-.03l.564-.79.563.79a.069.069 0 0 0 .056.03h.74a.069.069 0 0 0 .057-.11l-.899-1.248.88-1.305a.069.069 0 0 0-.058-.108h-.738a.07.07 0 0 0-.058.03l-.548.818-.549-.817a.07.07 0 0 0-.057-.03zm-1.552.565c.286 0 .566.155.633.482h-1.31c.073-.338.392-.482.677-.482zm8.412.067c.42 0 .705.321.705.753 0 .433-.285.754-.705.754s-.705-.321-.705-.754c0-.432.285-.753.705-.753zm3.263.016c.403 0 .694.31.694.737s-.291.737-.694.737c-.403 0-.7-.31-.7-.737 0-.426.297-.737.7-.737zm3.229 0c.403 0 .694.31.694.737s-.291.737-.694.737c-.403 0-.7-.31-.7-.737 0-.426.297-.737.7-.737z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/nextdotjs.svg b/assets/lib/simple-icons/icons/nextdotjs.svg
new file mode 100644
index 00000000..9972859e
--- /dev/null
+++ b/assets/lib/simple-icons/icons/nextdotjs.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Next.js</title><path d="M11.5725 0c-.1763 0-.3098.0013-.3584.0067-.0516.0053-.2159.021-.3636.0328-3.4088.3073-6.6017 2.1463-8.624 4.9728C1.1004 6.584.3802 8.3666.1082 10.255c-.0962.659-.108.8537-.108 1.7474s.012 1.0884.108 1.7476c.652 4.506 3.8591 8.2919 8.2087 9.6945.7789.2511 1.6.4223 2.5337.5255.3636.04 1.9354.04 2.299 0 1.6117-.1783 2.9772-.577 4.3237-1.2643.2065-.1056.2464-.1337.2183-.1573-.0188-.0139-.8987-1.1938-1.9543-2.62l-1.919-2.592-2.4047-3.5583c-1.3231-1.9564-2.4117-3.556-2.4211-3.556-.0094-.0026-.0187 1.5787-.0235 3.509-.0067 3.3802-.0093 3.5162-.0516 3.596-.061.115-.108.1618-.2064.2134-.075.0374-.1408.0445-.495.0445h-.406l-.1078-.068a.4383.4383 0 01-.1572-.1712l-.0493-.1056.0053-4.703.0067-4.7054.0726-.0915c.0376-.0493.1174-.1125.1736-.143.0962-.047.1338-.0517.5396-.0517.4787 0 .5584.0187.6827.1547.0353.0377 1.3373 1.9987 2.895 4.3608a10760.433 10760.433 0 004.7344 7.1706l1.9002 2.8782.096-.0633c.8518-.5536 1.7525-1.3418 2.4657-2.1627 1.5179-1.7429 2.4963-3.868 2.8247-6.134.0961-.6591.1078-.854.1078-1.7475 0-.8937-.012-1.0884-.1078-1.7476-.6522-4.506-3.8592-8.2919-8.2087-9.6945-.7672-.2487-1.5836-.42-2.4985-.5232-.169-.0176-1.0835-.0366-1.6123-.037zm4.0685 7.217c.3473 0 .4082.0053.4857.047.1127.0562.204.1642.237.2767.0186.061.0234 1.3653.0186 4.3044l-.0067 4.2175-.7436-1.14-.7461-1.14v-3.066c0-1.982.0093-3.0963.0234-3.1502.0375-.1313.1196-.2346.2323-.2955.0961-.0494.1313-.054.4997-.054z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/nfc.svg b/assets/lib/simple-icons/icons/nfc.svg
index 6fa0f4f2..41f0fd29 100644
--- a/assets/lib/simple-icons/icons/nfc.svg
+++ b/assets/lib/simple-icons/icons/nfc.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>NFC icon</title><path d="M23.96 1.98A1.89 1.89 0 0022.14.2c-1.1-.07-4.66-.12-5.69-.12 1.83 1.26 2.08 3.64 2.26 8.06.1 2.62 0 11.8 0 12.2l-.05 2.5-9.63-9.64v-3l7.66 7.65c.02-1.52.04-3.5.04-5.3 0-1.76-.03-3.35-.08-4.2-.29-4.81-.74-7.07-3.25-7.96a7.88 7.88 0 00-2.68-.35c-1 0-7.87 0-8.87.05A1.85 1.85 0 00.05 1.9c-.06.98-.07 19.17 0 20.17.05.98.8 1.72 1.8 1.78 1.1.06 4.67.07 5.7.07-1.83-1.26-2.08-3.64-2.26-8.06-.1-2.62 0-11.8 0-12.2l.05-2.5 9.63 9.64v3L7.3 6.16c-.02 1.52-.04 3.5-.04 5.3 0 1.76.03 3.35.08 4.2.29 4.81.74 7.07 3.25 7.95.77.28 1.49.34 2.68.36 1 0 7.87 0 8.86-.05a1.85 1.85 0 001.82-1.81c.05-.98.06-19.13 0-20.12Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>NFC</title><path d="M23.958 1.98C23.895 1 23.143.256 22.145.197c-1.102-.066-4.668-.12-5.693-.12 1.832 1.264 2.082 3.644 2.255 8.066.101 2.62.01 11.799.002 12.188l-.049 2.504-9.628-9.63v-3.014l7.656 7.658c.02-1.516.04-3.492.04-5.299 0-1.76-.026-3.354-.076-4.193-.288-4.819-.737-7.077-3.253-7.962-.77-.27-1.487-.335-2.683-.351C9.728.032 2.848.037 1.854.091.8.147.09.914.042 1.9c-.048.977-.064 19.174 0 20.165.062.98.815 1.724 1.812 1.782 1.102.067 4.668.075 5.694.075-1.832-1.264-2.083-3.643-2.255-8.066-.1-2.62-.009-11.8 0-12.188l.047-2.504 9.629 9.63v3.013L7.312 6.152c-.02 1.514-.04 3.49-.04 5.298 0 1.76.026 3.354.077 4.192.288 4.82.736 7.077 3.252 7.962.77.271 1.487.337 2.683.352.987.012 7.868.006 8.861-.047 1.056-.056 1.765-.822 1.813-1.811.048-.976.064-19.127 0-20.118"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/nginx.svg b/assets/lib/simple-icons/icons/nginx.svg
index f8d56fac..5875410b 100644
--- a/assets/lib/simple-icons/icons/nginx.svg
+++ b/assets/lib/simple-icons/icons/nginx.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>NGINX icon</title><path d="M12 0L1.605 6v12L12 24l10.395-6V6L12 0zm6 16.59c0 .705-.646 1.29-1.529 1.29-.631 0-1.351-.255-1.801-.81l-6-7.141v6.66c0 .721-.57 1.29-1.274 1.29H7.32c-.721 0-1.29-.6-1.29-1.29V7.41c0-.705.63-1.29 1.5-1.29.646 0 1.38.255 1.83.81l5.97 7.141V7.41c0-.721.6-1.29 1.29-1.29h.075c.72 0 1.29.6 1.29 1.29v9.18H18z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>NGINX</title><path d="M12 0L1.605 6v12L12 24l10.395-6V6L12 0zm6 16.59c0 .705-.646 1.29-1.529 1.29-.631 0-1.351-.255-1.801-.81l-6-7.141v6.66c0 .721-.57 1.29-1.274 1.29H7.32c-.721 0-1.29-.6-1.29-1.29V7.41c0-.705.63-1.29 1.5-1.29.646 0 1.38.255 1.83.81l5.97 7.141V7.41c0-.721.6-1.29 1.29-1.29h.075c.72 0 1.29.6 1.29 1.29v9.18H18z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ngrok.svg b/assets/lib/simple-icons/icons/ngrok.svg
new file mode 100644
index 00000000..a708247a
--- /dev/null
+++ b/assets/lib/simple-icons/icons/ngrok.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ngrok</title><path d="M18.951 7.598v6.713h1.463v-1.69l1.61 1.69H24v-.08l-2.123-2.153 2.002-1.846v-.07H21.95l-1.537 1.496v-4.06zm-2.93 2.41a2.626 2.626 0 00-1.787.635 2.049 2.049 0 00-.703 1.556c-.002.75.311 1.287.7 1.643.526.478 1.221.626 1.767.623.666 0 1.34-.195 1.805-.62.521-.483.713-1.029.713-1.607 0-.73-.31-1.247-.71-1.603-.553-.475-1.202-.628-1.785-.627zm-9.062.039c-1.188-.005-2.1.977-2.104 2.25-.004 1.296.908 2.108 2.032 2.096.664.002.983-.244 1.308-.541v1.193h-1.37l-1.03 1.158v.2H9.66v-6.24H8.195v.435c-.381-.408-.772-.542-1.236-.551zm-4.805.11l-.691.786v-.771H0v4.15h1.463v-2.799c.547.002 1.023-.002 1.49-.003v2.802h1.465v-2.595c-.004-.547-.1-.819-.307-1.061a1.431 1.431 0 00-.914-.51zm8.114.005v4.15h1.468l.002-2.779h1.065l1.164-1.314v-.057h-1.598l-.635.715v-.715zm-2.946 1.115c.504 0 .96.444.948.948a.956.956 0 01-.948.945c-.523 0-.931-.403-.947-.945-.002-.52.443-.94.947-.948zm8.703.001c.525 0 .94.434.944.95-.027.544-.42.95-.944.95s-.934-.417-.95-.95a.955.955 0 01.95-.95z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/niconico.svg b/assets/lib/simple-icons/icons/niconico.svg
index d2dc25b1..13172587 100644
--- a/assets/lib/simple-icons/icons/niconico.svg
+++ b/assets/lib/simple-icons/icons/niconico.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>niconico icon</title><path d="M.4787 7.534v12.1279A2.0213 2.0213 0 0 0 2.5 21.6832h2.3888l1.323 2.0948a.4778.4778 0 0 0 .4043.2205.4778.4778 0 0 0 .441-.2205l1.323-2.0948h6.9828l1.323 2.0948a.4778.4778 0 0 0 .441.2205c.1838 0 .3308-.0735.4043-.2205l1.323-2.0948h2.6462a2.0213 2.0213 0 0 0 2.0213-2.0213V7.5339a2.0213 2.0213 0 0 0-2.0213-1.9845h-7.681l4.4468-4.4469L17.1637 0l-5.1452 5.1452L6.8 0 5.6973 1.1025l4.4102 4.4102H2.5367a2.0213 2.0213 0 0 0-2.058 2.058z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>niconico</title><path d="M.4787 7.534v12.1279A2.0213 2.0213 0 0 0 2.5 21.6832h2.3888l1.323 2.0948a.4778.4778 0 0 0 .4043.2205.4778.4778 0 0 0 .441-.2205l1.323-2.0948h6.9828l1.323 2.0948a.4778.4778 0 0 0 .441.2205c.1838 0 .3308-.0735.4043-.2205l1.323-2.0948h2.6462a2.0213 2.0213 0 0 0 2.0213-2.0213V7.5339a2.0213 2.0213 0 0 0-2.0213-1.9845h-7.681l4.4468-4.4469L17.1637 0l-5.1452 5.1452L6.8 0 5.6973 1.1025l4.4102 4.4102H2.5367a2.0213 2.0213 0 0 0-2.058 2.058z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/nike.svg b/assets/lib/simple-icons/icons/nike.svg
new file mode 100644
index 00000000..880dd177
--- /dev/null
+++ b/assets/lib/simple-icons/icons/nike.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Nike</title><path d="M24 7.8L6.442 15.276c-1.456.616-2.679.925-3.668.925-1.12 0-1.933-.392-2.437-1.177-.317-.504-.41-1.143-.28-1.918.13-.775.476-1.6 1.036-2.478.467-.71 1.232-1.643 2.297-2.8a6.122 6.122 0 00-.784 1.848c-.28 1.195-.028 2.072.756 2.632.373.261.886.392 1.54.392.522 0 1.11-.084 1.764-.252L24 7.8z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/nim.svg b/assets/lib/simple-icons/icons/nim.svg
index 7acc57d4..ef84ed42 100644
--- a/assets/lib/simple-icons/icons/nim.svg
+++ b/assets/lib/simple-icons/icons/nim.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Nim icon</title><path d="M12.095 2.9s-.92.778-1.857 1.55c-.964-.032-2.856.199-3.88.598C5.412 4.408 4.582 3.7 4.582 3.7s-.709 1.305-1.154 2.07c-.662.377-1.325.8-1.917 1.36C.824 6.84.026 6.482 0 6.471c.911 1.966 1.524 3.935 3.19 5.119 2.654-4.483 14.983-4.07 17.691-.025 1.75-.977 2.43-3.078 3.119-5.018-.075.026-1.012.362-1.619.61-.363-.423-1.217-1.072-1.702-1.385a96.008 96.008 0 00-1.131-2.122s-.794.632-1.715 1.322c-1.243-.246-2.747-.544-4.012-.47A52.988 52.988 0 0112.095 2.9z M.942 10.65l2.189 5.671c3.801 5.366 13.508 5.739 17.74.104 1.001-2.415 2.352-5.808 2.352-5.808-1.086 1.721-2.852 2.909-3.94 3.549-.774.453-2.558.727-2.558.727l-4.684-2.597-4.71 2.545s-1.761-.303-2.558-.701c-1.608-.919-2.69-2.004-3.83-3.49z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Nim</title><path d="M12.095 3.2s-.92.778-1.857 1.55c-.964-.032-2.856.199-3.88.598C5.412 4.708 4.582 4 4.582 4s-.709 1.305-1.154 2.07c-.662.377-1.325.8-1.917 1.36C.824 7.14.026 6.782 0 6.77c.911 1.967 1.524 3.936 3.19 5.12 2.654-4.483 14.983-4.07 17.691-.025 1.75-.977 2.43-3.078 3.119-5.018-.075.026-1.012.362-1.619.61-.363-.423-1.217-1.072-1.702-1.385a96.008 96.008 0 00-1.131-2.122s-.794.632-1.715 1.322c-1.243-.246-2.747-.544-4.012-.47A52.988 52.988 0 0112.095 3.2zM.942 10.95l2.189 5.67c3.801 5.367 13.508 5.74 17.74.105 1.001-2.415 2.352-5.808 2.352-5.808-1.086 1.72-2.852 2.909-3.94 3.549-.774.453-2.558.727-2.558.727l-4.684-2.597-4.71 2.545s-1.761-.303-2.558-.701c-1.608-.92-2.69-2.004-3.83-3.49z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/nintendo.svg b/assets/lib/simple-icons/icons/nintendo.svg
index ed09f42d..52d0163c 100644
--- a/assets/lib/simple-icons/icons/nintendo.svg
+++ b/assets/lib/simple-icons/icons/nintendo.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Nintendo icon</title><path d="M0 .6h7.1l9.85 15.9V.6H24v22.8h-7.04L7.06 7.5v15.9H0V.6"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Nintendo</title><path d="M0 .6h7.1l9.85 15.9V.6H24v22.8h-7.04L7.06 7.5v15.9H0V.6"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/nintendo3ds.svg b/assets/lib/simple-icons/icons/nintendo3ds.svg
index c2ea5fd2..76fbb94f 100644
--- a/assets/lib/simple-icons/icons/nintendo3ds.svg
+++ b/assets/lib/simple-icons/icons/nintendo3ds.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Nintendo 3DS icon</title><path d="M17.653 16.63a.712.712 0 1 0 1.424 0 .712.712 0 1 0-1.424 0m-9.45 4.238h7.575c.3 0 .524-.225.544-.524v-5.175c-.02-.282-.263-.525-.544-.507H8.203a.54.54 0 0 0-.544.525v5.156c0 .301.244.525.544.525zm13.051-3.525a.729.729 0 0 0 .73-.729.73.73 0 1 0-.73.729zm-1.443-.019a.714.714 0 1 0 .001 1.427.714.714 0 0 0-.001-1.427zm-.713-2.137a.712.712 0 1 0 1.424 0 .712.712 0 1 0-1.424 0M2.54 16.612a1.65 1.65 0 1 0 3.3 0 1.65 1.65 0 1 0-3.3 0M21.272 0H2.728A2.73 2.73 0 0 0-.01 2.72v18.542C.009 22.781 1.228 24 2.728 24h18.526a2.753 2.753 0 0 0 2.756-2.719V2.737C23.991 1.219 22.772 0 21.272 0zm1.913 21.281a1.92 1.92 0 0 1-1.912 1.912H2.728a1.92 1.92 0 0 1-1.913-1.912v-8.456h22.369v8.456zm0-9.694H.815v-8.85A1.92 1.92 0 0 1 2.728.824h18.544c1.049 0 1.912.863 1.912 1.913v8.85 M17.409 3.112H6.534c-.3 0-.544.263-.544.563V9.15c0 .3.226.563.544.563h10.875a.548.548 0 0 0 .544-.563V3.656a.543.543 0 0 0-.544-.544z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Nintendo 3DS</title><path d="M17.653 16.63a.712.712 0 1 0 1.424 0 .712.712 0 1 0-1.424 0m-9.45 4.238h7.575c.3 0 .524-.225.544-.524v-5.175c-.02-.282-.263-.525-.544-.507H8.203a.54.54 0 0 0-.544.525v5.156c0 .301.244.525.544.525zm13.051-3.525a.729.729 0 0 0 .73-.729.73.73 0 1 0-.73.729zm-1.443-.019a.714.714 0 1 0 .001 1.427.714.714 0 0 0-.001-1.427zm-.713-2.137a.712.712 0 1 0 1.424 0 .712.712 0 1 0-1.424 0M2.54 16.612a1.65 1.65 0 1 0 3.3 0 1.65 1.65 0 1 0-3.3 0M21.272 0H2.728A2.73 2.73 0 0 0-.01 2.72v18.542C.009 22.781 1.228 24 2.728 24h18.526a2.753 2.753 0 0 0 2.756-2.719V2.737C23.991 1.219 22.772 0 21.272 0zm1.913 21.281a1.92 1.92 0 0 1-1.912 1.912H2.728a1.92 1.92 0 0 1-1.913-1.912v-8.456h22.369v8.456zm0-9.694H.815v-8.85A1.92 1.92 0 0 1 2.728.824h18.544c1.049 0 1.912.863 1.912 1.913v8.85 M17.409 3.112H6.534c-.3 0-.544.263-.544.563V9.15c0 .3.226.563.544.563h10.875a.548.548 0 0 0 .544-.563V3.656a.543.543 0 0 0-.544-.544z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/nintendogamecube.svg b/assets/lib/simple-icons/icons/nintendogamecube.svg
index 6fff0b8c..4c3564c8 100644
--- a/assets/lib/simple-icons/icons/nintendogamecube.svg
+++ b/assets/lib/simple-icons/icons/nintendogamecube.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Nintendo GameCube icon</title><path d="M6.815 15.128l4.704 2.715V12.41L6.813 9.696v5.433zM4.79 16.296l6.73 3.883V24L1.48 18.207V6.617l3.31 1.91v7.77zM12 6.146L7.297 8.864 12 11.58l4.705-2.717L12 6.147zM12 3.813l5.66 3.275 3.31-1.91L12 0 1.973 5.79 5.28 7.697 12 3.813zm7.208 12.483v-3.948l-2.023 1.167v1.614l-4.704 2.715v.005-5.436L22.52 6.62v11.588l-10.04 5.795v-3.817l6.728-3.888z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Nintendo GameCube</title><path d="M6.816 15.126l4.703 2.715v-5.433L6.814 9.695v5.432zm-2.025 1.168l6.73 3.882v3.82L1.481 18.206V6.616l3.31 1.91v7.769zM12 6.145L7.298 8.863 12 11.579l4.704-2.717L12 6.146zm0-2.332l5.659 3.274 3.31-1.91L12 0 1.975 5.79 5.28 7.695zm7.207 12.48v-3.947l-2.023 1.167v1.614l-4.703 2.715v.005-5.436L22.518 6.62v11.587L12.48 24v-3.817l6.727-3.887z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/nintendonetwork.svg b/assets/lib/simple-icons/icons/nintendonetwork.svg
index 4b4f8459..35b88dc0 100644
--- a/assets/lib/simple-icons/icons/nintendonetwork.svg
+++ b/assets/lib/simple-icons/icons/nintendonetwork.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Nintendo Network icon</title><path d="M19.9645 8.6861a.645.645 0 0 1-.5193-.2664c-2.1109-2.893-5.5554-4.624-9.2154-4.624a11.4744 11.4744 0 0 0-4.6887.9864.6413.6413 0 0 1-.8493-.3375.6563.6563 0 0 1 .3325-.8593 12.7795 12.7795 0 0 1 5.2055-1.0946c4.0672 0 7.9003 1.9265 10.2527 5.1544a.66.66 0 0 1-.137.9128.6326.6326 0 0 1-.381.1282M.9023 8.9788c0-.4919.411-.8892.9178-.8892h2.3313c.2104 0 .3636-.0958.5566-.2291a9.2229 9.2229 0 0 1 5.2677-1.6339c5.01 0 9.0735 3.9415 9.0735 8.802v8.0771a.9078.9078 0 0 1-.9216.8942h-2.9551a.909.909 0 0 1-.924-.8942v-8.0771c0-2.289-1.9116-4.1457-4.274-4.1457-2.3599 0-4.2715 1.8555-4.2715 4.1457v8.0771A.909.909 0 0 1 4.779 24H1.824a.9078.9078 0 0 1-.9216-.8942V8.98M4.302 2.5915a14.5479 14.5479 0 0 1 5.98-1.274c4.822 0 9.0747 2.3288 11.6488 5.8792a.6397.6397 0 0 0 .9041.1408.67.67 0 0 0 .137-.9228C20.155 2.528 15.5162 0 10.281 0a15.7907 15.7907 0 0 0-6.502 1.3873.6625.6625 0 0 0-.33.8693.6401.6401 0 0 0 .8518.3362Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Nintendo Network</title><path d="M19.9645 8.6861a.645.645 0 0 1-.5193-.2664c-2.1109-2.893-5.5554-4.624-9.2154-4.624a11.4744 11.4744 0 0 0-4.6887.9864.6413.6413 0 0 1-.8493-.3375.6563.6563 0 0 1 .3325-.8593 12.7795 12.7795 0 0 1 5.2055-1.0946c4.0672 0 7.9003 1.9265 10.2527 5.1544a.66.66 0 0 1-.137.9128.6326.6326 0 0 1-.381.1282M.9023 8.9788c0-.4919.411-.8892.9178-.8892h2.3313c.2104 0 .3636-.0958.5566-.2291a9.2229 9.2229 0 0 1 5.2677-1.6339c5.01 0 9.0735 3.9415 9.0735 8.802v8.0771a.9078.9078 0 0 1-.9216.8942h-2.9551a.909.909 0 0 1-.924-.8942v-8.0771c0-2.289-1.9116-4.1457-4.274-4.1457-2.3599 0-4.2715 1.8555-4.2715 4.1457v8.0771A.909.909 0 0 1 4.779 24H1.824a.9078.9078 0 0 1-.9216-.8942V8.98M4.302 2.5915a14.5479 14.5479 0 0 1 5.98-1.274c4.822 0 9.0747 2.3288 11.6488 5.8792a.6397.6397 0 0 0 .9041.1408.67.67 0 0 0 .137-.9228C20.155 2.528 15.5162 0 10.281 0a15.7907 15.7907 0 0 0-6.502 1.3873.6625.6625 0 0 0-.33.8693.6401.6401 0 0 0 .8518.3362Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/nintendoswitch.svg b/assets/lib/simple-icons/icons/nintendoswitch.svg
index 98ba8d51..3f7fa716 100644
--- a/assets/lib/simple-icons/icons/nintendoswitch.svg
+++ b/assets/lib/simple-icons/icons/nintendoswitch.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Nintendo Switch icon</title><path d="M14.176 24h3.674c3.376 0 6.15-2.774 6.15-6.15V6.15C24 2.775 21.226 0 17.85 0H14.1c-.074 0-.15.074-.15.15v23.7c-.001.076.075.15.226.15zm4.574-13.199c1.351 0 2.399 1.125 2.399 2.398 0 1.352-1.125 2.4-2.399 2.4-1.35 0-2.4-1.049-2.4-2.4-.075-1.349 1.05-2.398 2.4-2.398zM11.4 0H6.15C2.775 0 0 2.775 0 6.15v11.7C0 21.226 2.775 24 6.15 24h5.25c.074 0 .15-.074.15-.149V.15c.001-.076-.075-.15-.15-.15zM9.676 22.051H6.15c-2.326 0-4.201-1.875-4.201-4.201V6.15c0-2.326 1.875-4.201 4.201-4.201H9.6l.076 20.102zM3.75 7.199c0 1.275.975 2.25 2.25 2.25s2.25-.975 2.25-2.25c0-1.273-.975-2.25-2.25-2.25s-2.25.977-2.25 2.25z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Nintendo Switch</title><path d="M14.176 24h3.674c3.376 0 6.15-2.774 6.15-6.15V6.15C24 2.775 21.226 0 17.85 0H14.1c-.074 0-.15.074-.15.15v23.7c-.001.076.075.15.226.15zm4.574-13.199c1.351 0 2.399 1.125 2.399 2.398 0 1.352-1.125 2.4-2.399 2.4-1.35 0-2.4-1.049-2.4-2.4-.075-1.349 1.05-2.398 2.4-2.398zM11.4 0H6.15C2.775 0 0 2.775 0 6.15v11.7C0 21.226 2.775 24 6.15 24h5.25c.074 0 .15-.074.15-.149V.15c.001-.076-.075-.15-.15-.15zM9.676 22.051H6.15c-2.326 0-4.201-1.875-4.201-4.201V6.15c0-2.326 1.875-4.201 4.201-4.201H9.6l.076 20.102zM3.75 7.199c0 1.275.975 2.25 2.25 2.25s2.25-.975 2.25-2.25c0-1.273-.975-2.25-2.25-2.25s-2.25.977-2.25 2.25z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/nissan.svg b/assets/lib/simple-icons/icons/nissan.svg
index f45c0c3b..50e547e4 100644
--- a/assets/lib/simple-icons/icons/nissan.svg
+++ b/assets/lib/simple-icons/icons/nissan.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Nissan icon</title><path d="M12.036 1.728c-4.896 0-9.024 3.24-10.224 7.632-.516.06-.768.096-.984.156-.684.156-.828.396-.828.888v3.324c0 .48.516.816.876.876.36.072.588.096.96.132h.004c1.24 4.35 5.329 7.536 10.196 7.536 4.866 0 8.965-3.196 10.195-7.543a8.07 8.07 0 00.893-.125c.36-.06.876-.396.876-.876v-3.324c0-.492-.144-.732-.828-.888-.206-.057-.451-.093-.919-.148a.074.074 0 01-.005-.032c-1.212-4.392-5.328-7.608-10.212-7.608zm.012 2.424c3.456 0 6.408 2.112 7.56 5.076 0 .012.012.024.012.024l.014.005c-2.49-.094-5.706-.197-7.634-.197-1.902 0-5.052.1-7.529.193l.005-.001c1.152-2.976 4.104-5.1 7.572-5.1zm-5.652 6.516h.648c.06 0 .072.024.072.072v2.52c0 .06-.012.084-.084.084H6.42c-.072 0-.084-.012-.084-.084v-2.52c0-.048.012-.072.06-.072zm2.148.012h1.92c.072 0 .096.012.096.072v.432c0 .06-.024.084-.096.072H8.58c-.084 0-.12.036-.132.12v.108c0 .06.036.108.12.12.216.036.912.084 1.176.108.468.048.816.132.912.576 0 .036.012.156.012.288 0 .084 0 .192-.024.288-.084.42-.396.504-.9.504h-1.98c-.072 0-.084-.012-.084-.084v-.42c0-.072.012-.084.084-.084h2.004c.084 0 .108-.024.12-.084v-.18c-.012-.048-.024-.12-.132-.132a35.656 35.656 0 01-1.332-.12c-.576-.06-.72-.3-.744-.516-.012-.072-.012-.168-.012-.252 0-.072 0-.18.012-.264.084-.372.36-.552.864-.552zm3.408 0h1.92c.072 0 .096.012.096.072v.432c0 .06-.024.084-.096.072h-1.884c-.084 0-.12.036-.132.12v.108c0 .06.024.108.12.12.216.036.912.084 1.164.108.468.048.816.132.912.576 0 .036.012.156.012.288 0 .084 0 .192-.024.288-.084.42-.396.504-.9.504h-1.968c-.072 0-.084-.012-.084-.084v-.42c0-.072.012-.084.084-.084h2.004c.084 0 .108-.024.12-.084v-.18c-.012-.048-.036-.12-.132-.132a35.65 35.65 0 01-1.332-.12c-.576-.06-.708-.3-.744-.516-.012-.072-.012-.168-.012-.252 0-.072 0-.18.012-.264.084-.372.36-.552.864-.552zm-9.324.012h.612c.456 0 .516-.012.684.228.132.216 1.2 1.86 1.2 1.86v-2.004c0-.06.012-.084.084-.084h.528c.072 0 .084.024.084.084v2.508c0 .072-.012.084-.084.084h-.72c-.42 0-.456 0-.6-.24-.288-.456-1.176-1.812-1.176-1.812v1.968c0 .072-.012.084-.084.084h-.528c-.072 0-.084-.012-.084-.084v-2.508c0-.06.012-.084.084-.084zm13.416 0c.132 0 .228 0 .264.012.432.012.36-.036.564.408.108.252.876 1.896.996 2.184.036.084.012.072-.084.072h-.66c-.036 0-.072-.012-.084-.048 0-.012-.084-.204-.204-.48h-1.548c-.12.276-.216.48-.216.48-.012.024-.036.048-.084.048h-.636c-.096 0-.132 0-.072-.12l.012-.024c.3-.66 1.008-2.244 1.008-2.244.144-.3.072-.276.48-.276.108-.012.132-.012.264-.012zm2.304 0h.612c.456 0 .516-.012.684.228.144.216 1.2 1.86 1.2 1.86v-2.004c0-.06.012-.084.084-.084h.528c.072 0 .084.024.084.084v2.508c0 .072-.012.084-.084.084h-.72c-.42 0-.456 0-.6-.24-.3-.456-1.176-1.812-1.176-1.812v1.968c0 .072-.012.084-.084.084h-.528c-.072 0-.084-.012-.084-.084v-2.508c0-.06.012-.084.084-.084zm-2.268.6c-.036 0-.072 0-.084.012-.036 0-.06.012-.072.036 0 .012-.192.468-.396.936h1.068c-.156-.396-.336-.792-.384-.924-.012-.036-.036-.048-.06-.048-.012-.012-.048-.012-.072-.012zm3.48 3.59c-.003.014-.024.047-.024.058-1.2 2.88-4.104 4.92-7.5 4.92-3.42 0-6.336-2.064-7.524-4.968l-.023-.007c2.176.11 4.994.223 7.511.223 2.538 0 5.376-.114 7.56-.225Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Nissan</title><path d="M20.576 14.955l-.01.028c-1.247 3.643-4.685 6.086-8.561 6.086-3.876 0-7.32-2.448-8.562-6.09l-.01-.029H.71v.329l1.133.133c.7.08.847.39 1.038.78l.048.096c1.638 3.495 5.204 5.752 9.08 5.752 3.877 0 7.443-2.257 9.081-5.747l.048-.095c.19-.39.338-.7 1.038-.781l1.134-.134v-.328zM3.443 9.012c1.247-3.643 4.686-6.09 8.562-6.09 3.876 0 7.319 2.447 8.562 6.09l.01.028h2.728v-.328l-1.134-.133c-.7-.081-.847-.39-1.038-.781l-.047-.096C19.448 4.217 15.88 1.96 12.005 1.96c-3.881 0-7.443 2.257-9.081 5.752l-.048.095c-.19.39-.338.7-1.038.781l-1.133.133v.329h2.724zm13.862 1.586l-1.743 2.795h.752l.31-.5h2.033l.31.5h.747l-1.743-2.795zm1.033 1.766h-1.395l.7-1.124zm2.81-1.066l2.071 2.095H24v-2.795h-.614v2.085l-2.062-2.085h-.795v2.795h.619zM0 13.393h.619v-2.095l2.076 2.095h.781v-2.795h-.619v2.085L.795 10.598H0zm4.843-2.795h.619v2.795h-.62zm4.486 2.204c-.02.005-.096.005-.124.005H6.743v.572h2.5c.019 0 .167 0 .195-.005.51-.048.743-.472.743-.843 0-.381-.243-.79-.705-.833-.09-.01-.166-.01-.2-.01H7.643a.83.83 0 0 1-.181-.014c-.129-.034-.176-.148-.176-.243 0-.086.047-.2.18-.238a.68.68 0 0 1 .172-.014h2.357v-.562H7.6c-.1 0-.176.004-.238.014a.792.792 0 0 0-.695.805c0 .343.214.743.685.81.086.009.205.009.258.009H9.2c.029 0 .1 0 .114.005.181.023.243.157.243.276a.262.262 0 0 1-.228.266zm4.657 0c-.02.005-.096.005-.129.005H11.4v.572h2.5c.019 0 .167 0 .195-.005.51-.048.743-.472.743-.843 0-.381-.243-.79-.705-.833-.09-.01-.166-.01-.2-.01H12.3a.83.83 0 0 1-.181-.014c-.129-.034-.176-.148-.176-.243 0-.086.047-.2.18-.238a.68.68 0 0 1 .172-.014h2.357v-.562h-2.395c-.1 0-.176.004-.238.014a.792.792 0 0 0-.695.805c0 .343.214.743.686.81.085.009.204.009.257.009h1.59c.029 0 .1 0 .114.005.181.023.243.157.243.276a.267.267 0 0 1-.228.266Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/nixos.svg b/assets/lib/simple-icons/icons/nixos.svg
index 64431f2e..40e5de84 100644
--- a/assets/lib/simple-icons/icons/nixos.svg
+++ b/assets/lib/simple-icons/icons/nixos.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>NixOS icon</title><path d="M7.352 1.592l-1.364.002L5.32 2.75l1.557 2.713-3.137-.008-1.32 2.34H14.11l-1.353-2.332-3.192-.006-2.214-3.865zm6.175 0l-2.687.025 5.846 10.127 1.341-2.34-1.59-2.765 2.24-3.85-.683-1.182h-1.336l-1.57 2.705-1.56-2.72zm6.887 4.195l-5.846 10.125 2.696-.008 1.601-2.76 4.453.016.682-1.183-.666-1.157-3.13-.008L21.778 8.1l-1.365-2.313zM9.432 8.086l-2.696.008-1.601 2.76-4.453-.016L0 12.02l.666 1.157 3.13.008-1.575 2.71 1.365 2.315L9.432 8.086zM7.33 12.25l-.006.01-.002-.004-1.342 2.34 1.59 2.765-2.24 3.85.684 1.182H7.35l.004-.006h.001l1.567-2.698 1.558 2.72 2.688-.026-.004-.006h.01L7.33 12.25zm2.55 3.93l1.354 2.332 3.192.006 2.215 3.865 1.363-.002.668-1.156-1.557-2.713 3.137.008 1.32-2.34H9.881Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>NixOS</title><path d="M7.352 1.592l-1.364.002L5.32 2.75l1.557 2.713-3.137-.008-1.32 2.34H14.11l-1.353-2.332-3.192-.006-2.214-3.865zm6.175 0l-2.687.025 5.846 10.127 1.341-2.34-1.59-2.765 2.24-3.85-.683-1.182h-1.336l-1.57 2.705-1.56-2.72zm6.887 4.195l-5.846 10.125 2.696-.008 1.601-2.76 4.453.016.682-1.183-.666-1.157-3.13-.008L21.778 8.1l-1.365-2.313zM9.432 8.086l-2.696.008-1.601 2.76-4.453-.016L0 12.02l.666 1.157 3.13.008-1.575 2.71 1.365 2.315L9.432 8.086zM7.33 12.25l-.006.01-.002-.004-1.342 2.34 1.59 2.765-2.24 3.85.684 1.182H7.35l.004-.006h.001l1.567-2.698 1.558 2.72 2.688-.026-.004-.006h.01L7.33 12.25zm2.55 3.93l1.354 2.332 3.192.006 2.215 3.865 1.363-.002.668-1.156-1.557-2.713 3.137.008 1.32-2.34H9.881Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/node-dot-js.svg b/assets/lib/simple-icons/icons/node-dot-js.svg
deleted file mode 100644
index d8e43252..00000000
--- a/assets/lib/simple-icons/icons/node-dot-js.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Node.js icon</title><path d="M11.998,24c-0.321,0-0.641-0.084-0.922-0.247l-2.936-1.737c-0.438-0.245-0.224-0.332-0.08-0.383 c0.585-0.203,0.703-0.25,1.328-0.604c0.065-0.037,0.151-0.023,0.218,0.017l2.256,1.339c0.082,0.045,0.197,0.045,0.272,0l8.795-5.076 c0.082-0.047,0.134-0.141,0.134-0.238V6.921c0-0.099-0.053-0.192-0.137-0.242l-8.791-5.072c-0.081-0.047-0.189-0.047-0.271,0 L3.075,6.68C2.99,6.729,2.936,6.825,2.936,6.921v10.15c0,0.097,0.054,0.189,0.139,0.235l2.409,1.392 c1.307,0.654,2.108-0.116,2.108-0.89V7.787c0-0.142,0.114-0.253,0.256-0.253h1.115c0.139,0,0.255,0.112,0.255,0.253v10.021 c0,1.745-0.95,2.745-2.604,2.745c-0.508,0-0.909,0-2.026-0.551L2.28,18.675c-0.57-0.329-0.922-0.945-0.922-1.604V6.921 c0-0.659,0.353-1.275,0.922-1.603l8.795-5.082c0.557-0.315,1.296-0.315,1.848,0l8.794,5.082c0.57,0.329,0.924,0.944,0.924,1.603 v10.15c0,0.659-0.354,1.273-0.924,1.604l-8.794,5.078C12.643,23.916,12.324,24,11.998,24z M19.099,13.993 c0-1.9-1.284-2.406-3.987-2.763c-2.731-0.361-3.009-0.548-3.009-1.187c0-0.528,0.235-1.233,2.258-1.233 c1.807,0,2.473,0.389,2.747,1.607c0.024,0.115,0.129,0.199,0.247,0.199h1.141c0.071,0,0.138-0.031,0.186-0.081 c0.048-0.054,0.074-0.123,0.067-0.196c-0.177-2.098-1.571-3.076-4.388-3.076c-2.508,0-4.004,1.058-4.004,2.833 c0,1.925,1.488,2.457,3.895,2.695c2.88,0.282,3.103,0.703,3.103,1.269c0,0.983-0.789,1.402-2.642,1.402 c-2.327,0-2.839-0.584-3.011-1.742c-0.02-0.124-0.126-0.215-0.253-0.215h-1.137c-0.141,0-0.254,0.112-0.254,0.253 c0,1.482,0.806,3.248,4.655,3.248C17.501,17.007,19.099,15.91,19.099,13.993z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/node-red.svg b/assets/lib/simple-icons/icons/node-red.svg
deleted file mode 100644
index 3c2aecd1..00000000
--- a/assets/lib/simple-icons/icons/node-red.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Node-RED icon</title><path d="M3 0C1.338 0 0 1.338 0 3v6.107h2.858c1.092 0 1.97.868 1.964 1.96v.021c.812-.095 1.312-.352 1.674-.683.416-.382.69-.91 1.016-1.499.325-.59.71-1.244 1.408-1.723.575-.395 1.355-.644 2.384-.686v-.45c0-1.092.88-1.976 1.972-1.976h7.893c1.091 0 1.974.884 1.974 1.976v1.942c0 1.091-.883 2.029-1.974 2.029h-7.893c-1.092 0-1.972-.938-1.972-2.03v-.453c-.853.037-1.408.236-1.798.504-.48.33-.774.802-1.086 1.368-.312.565-.63 1.22-1.222 1.763l-.077.069c3.071.415 4.465 1.555 5.651 2.593 1.39 1.215 2.476 2.275 6.3 2.288v-.46c0-1.092.894-1.946 1.986-1.946H24V3c0-1.662-1.338-3-3-3zm10.276 5.41c-.369 0-.687.268-.687.637v1.942c0 .368.318.636.687.636h7.892a.614.614 0 0 0 .635-.636V6.047a.614.614 0 0 0-.635-.636zM0 10.448v3.267h2.858a.696.696 0 0 0 .678-.69v-1.942c0-.368-.31-.635-.678-.635zm4.821 1.67v.907A1.965 1.965 0 0 1 2.858 15H0v6c0 1.662 1.338 3 3 3h18c1.662 0 3-1.338 3-3v-1.393h-2.942c-1.092 0-1.986-.913-1.986-2.005v-.445c-4.046-.032-5.598-1.333-6.983-2.544-1.437-1.257-2.751-2.431-7.268-2.496zM21.058 15a.644.644 0 0 0-.647.66v1.942c0 .368.278.612.647.612H24V15z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/nodedotjs.svg b/assets/lib/simple-icons/icons/nodedotjs.svg
new file mode 100644
index 00000000..281c8296
--- /dev/null
+++ b/assets/lib/simple-icons/icons/nodedotjs.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Node.js</title><path d="M11.998,24c-0.321,0-0.641-0.084-0.922-0.247l-2.936-1.737c-0.438-0.245-0.224-0.332-0.08-0.383 c0.585-0.203,0.703-0.25,1.328-0.604c0.065-0.037,0.151-0.023,0.218,0.017l2.256,1.339c0.082,0.045,0.197,0.045,0.272,0l8.795-5.076 c0.082-0.047,0.134-0.141,0.134-0.238V6.921c0-0.099-0.053-0.192-0.137-0.242l-8.791-5.072c-0.081-0.047-0.189-0.047-0.271,0 L3.075,6.68C2.99,6.729,2.936,6.825,2.936,6.921v10.15c0,0.097,0.054,0.189,0.139,0.235l2.409,1.392 c1.307,0.654,2.108-0.116,2.108-0.89V7.787c0-0.142,0.114-0.253,0.256-0.253h1.115c0.139,0,0.255,0.112,0.255,0.253v10.021 c0,1.745-0.95,2.745-2.604,2.745c-0.508,0-0.909,0-2.026-0.551L2.28,18.675c-0.57-0.329-0.922-0.945-0.922-1.604V6.921 c0-0.659,0.353-1.275,0.922-1.603l8.795-5.082c0.557-0.315,1.296-0.315,1.848,0l8.794,5.082c0.57,0.329,0.924,0.944,0.924,1.603 v10.15c0,0.659-0.354,1.273-0.924,1.604l-8.794,5.078C12.643,23.916,12.324,24,11.998,24z M19.099,13.993 c0-1.9-1.284-2.406-3.987-2.763c-2.731-0.361-3.009-0.548-3.009-1.187c0-0.528,0.235-1.233,2.258-1.233 c1.807,0,2.473,0.389,2.747,1.607c0.024,0.115,0.129,0.199,0.247,0.199h1.141c0.071,0,0.138-0.031,0.186-0.081 c0.048-0.054,0.074-0.123,0.067-0.196c-0.177-2.098-1.571-3.076-4.388-3.076c-2.508,0-4.004,1.058-4.004,2.833 c0,1.925,1.488,2.457,3.895,2.695c2.88,0.282,3.103,0.703,3.103,1.269c0,0.983-0.789,1.402-2.642,1.402 c-2.327,0-2.839-0.584-3.011-1.742c-0.02-0.124-0.126-0.215-0.253-0.215h-1.137c-0.141,0-0.254,0.112-0.254,0.253 c0,1.482,0.806,3.248,4.655,3.248C17.501,17.007,19.099,15.91,19.099,13.993z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/nodemon.svg b/assets/lib/simple-icons/icons/nodemon.svg
index c2f2e663..67b85723 100644
--- a/assets/lib/simple-icons/icons/nodemon.svg
+++ b/assets/lib/simple-icons/icons/nodemon.svg
@@ -1 +1 @@
-<svg viewBox="0 0 24 24" role="img" xmlns="http://www.w3.org/2000/svg"><title>Nodemon icon</title><path d="M22.33 7.851l-.716-.398c1.101-1.569 1.758-3.927.934-7.453 0 0-1.857 5.029-5.59 4.863l-4.37-2.431a1.171 1.171 0 0 0-.536-.15h-.101a1.183 1.183 0 0 0-.538.15L7.042 4.863C3.309 5.03 1.452 0 1.452 0c-.825 3.526-.166 5.884.934 7.453l-.716.398a1.133 1.133 0 0 0-.589.988l.022 14.591c0 .203.109.392.294.491a.58.58 0 0 0 .584 0l5.79-3.204c.366-.211.589-.582.589-.987v-6.817c0-.406.223-.783.588-.984l2.465-1.372a1.19 1.19 0 0 1 .59-.154c.2 0 .407.05.585.154l2.465 1.372c.365.201.588.578.588.984v6.817c0 .405.226.779.59.987l5.788 3.204a.59.59 0 0 0 .589 0 .564.564 0 0 0 .292-.491l.019-14.591a1.129 1.129 0 0 0-.589-.988z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Nodemon</title><path d="M22.33 7.851l-.716-.398c1.101-1.569 1.758-3.927.934-7.453 0 0-1.857 5.029-5.59 4.863l-4.37-2.431a1.171 1.171 0 0 0-.536-.15h-.101a1.183 1.183 0 0 0-.538.15L7.042 4.863C3.309 5.03 1.452 0 1.452 0c-.825 3.526-.166 5.884.934 7.453l-.716.398a1.133 1.133 0 0 0-.589.988l.022 14.591c0 .203.109.392.294.491a.58.58 0 0 0 .584 0l5.79-3.204c.366-.211.589-.582.589-.987v-6.817c0-.406.223-.783.588-.984l2.465-1.372a1.19 1.19 0 0 1 .59-.154c.2 0 .407.05.585.154l2.465 1.372c.365.201.588.578.588.984v6.817c0 .405.226.779.59.987l5.788 3.204a.59.59 0 0 0 .589 0 .564.564 0 0 0 .292-.491l.019-14.591a1.129 1.129 0 0 0-.589-.988z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/nodered.svg b/assets/lib/simple-icons/icons/nodered.svg
new file mode 100644
index 00000000..35fc3e53
--- /dev/null
+++ b/assets/lib/simple-icons/icons/nodered.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Node-RED</title><path d="M3 0C1.338 0 0 1.338 0 3v6.107h2.858c1.092 0 1.97.868 1.964 1.96v.021c.812-.095 1.312-.352 1.674-.683.416-.382.69-.91 1.016-1.499.325-.59.71-1.244 1.408-1.723.575-.395 1.355-.644 2.384-.686v-.45c0-1.092.88-1.976 1.972-1.976h7.893c1.091 0 1.974.884 1.974 1.976v1.942c0 1.091-.883 2.029-1.974 2.029h-7.893c-1.092 0-1.972-.938-1.972-2.03v-.453c-.853.037-1.408.236-1.798.504-.48.33-.774.802-1.086 1.368-.312.565-.63 1.22-1.222 1.763l-.077.069c3.071.415 4.465 1.555 5.651 2.593 1.39 1.215 2.476 2.275 6.3 2.288v-.46c0-1.092.894-1.946 1.986-1.946H24V3c0-1.662-1.338-3-3-3zm10.276 5.41c-.369 0-.687.268-.687.637v1.942c0 .368.318.636.687.636h7.892a.614.614 0 0 0 .635-.636V6.047a.614.614 0 0 0-.635-.636zM0 10.448v3.267h2.858a.696.696 0 0 0 .678-.69v-1.942c0-.368-.31-.635-.678-.635zm4.821 1.67v.907A1.965 1.965 0 0 1 2.858 15H0v6c0 1.662 1.338 3 3 3h18c1.662 0 3-1.338 3-3v-1.393h-2.942c-1.092 0-1.986-.913-1.986-2.005v-.445c-4.046-.032-5.598-1.333-6.983-2.544-1.437-1.257-2.751-2.431-7.268-2.496zM21.058 15a.644.644 0 0 0-.647.66v1.942c0 .368.278.612.647.612H24V15z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/nokia.svg b/assets/lib/simple-icons/icons/nokia.svg
index aea4968d..6447dcb0 100644
--- a/assets/lib/simple-icons/icons/nokia.svg
+++ b/assets/lib/simple-icons/icons/nokia.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Nokia icon</title><path d="M1.163 13.954H.008v-3.89h1.997l2.292 2.904v-2.904h1.155v3.89H3.495L1.163 11v2.954m9.814-1.203c0 .54-.097.727-.257.906-.244.266-.6.346-1.288.346H7.46c-.686 0-1.043-.08-1.288-.346-.16-.179-.256-.365-.256-.906v-1.5c0-.54.096-.726.256-.905.245-.266.602-.347 1.288-.347h1.972c.687 0 1.044.08 1.288.347.16.179.257.365.257.906v1.499m-1.593.267c.264 0 .356-.016.42-.073.059-.053.085-.121.085-.35v-1.187c0-.229-.026-.297-.085-.35-.064-.058-.156-.073-.42-.073H7.509c-.264 0-.357.015-.42.073-.06.053-.085.121-.085.35v1.187c0 .229.026.297.085.35.063.057.156.073.42.073h1.875m3.271-2.954v3.89h-1.207v-3.89h1.207m2.039 0h1.593l-2.15 1.82 2.425 2.07h-1.705l-2.202-2.029 2.039-1.86m2.09 0h1.207v3.889h-1.207m5.808 0l-.357-.678H19.9l-.353.678h-1.333l2.139-3.89h1.5l2.139 3.89h-1.4m-2.273-1.522h1.5l-.75-1.409-.75 1.409"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Nokia</title><path d="M1.156 13.954H0v-3.892h1.998l2.294 2.905v-2.905h1.156v3.892H3.489l-2.333-2.956v2.956m9.82-1.204c0 .54-.097.728-.257.907-.244.266-.6.346-1.289.346H7.457c-.686 0-1.044-.08-1.289-.346-.16-.18-.256-.365-.256-.907v-1.5c0-.54.096-.727.256-.906.245-.266.603-.347 1.289-.347H9.43c.688 0 1.045.08 1.29.347.16.18.256.365.256.907v1.5m-1.594.267c.264 0 .356-.017.42-.074.06-.053.086-.12.086-.35v-1.187c0-.23-.026-.297-.085-.35-.065-.059-.157-.074-.42-.074H7.505c-.264 0-.357.015-.42.074-.06.053-.085.12-.085.35v1.187c0 .23.026.297.085.35.063.057.156.074.42.074h1.876m3.273-2.956v3.892h-1.207v-3.892h1.207m2.04 0h1.595l-2.152 1.82 2.427 2.072h-1.706l-2.204-2.03 2.04-1.861m2.092 0h1.208v3.891h-1.208m5.812 0l-.357-.678h-2.337l-.353.678h-1.334l2.14-3.892h1.502L24 13.954h-1.4m-2.275-1.523h1.5l-.75-1.41-.75 1.41"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/norco.svg b/assets/lib/simple-icons/icons/norco.svg
new file mode 100644
index 00000000..886afed2
--- /dev/null
+++ b/assets/lib/simple-icons/icons/norco.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Norco</title><path d="M11.055 2.707a.971.971 0 00-.688.387L0 16.78h4.049l7.27-9.597 1.927 5.74 1.42-1.875-2.578-7.676a.983.983 0 00-1.033-.666zM19.95 7.22l-7.27 9.597-1.927-5.74-1.42 1.875 2.578 7.676a.987.987 0 001.72.28L24 7.218z"/></svg>
diff --git a/assets/lib/simple-icons/icons/nordvpn.svg b/assets/lib/simple-icons/icons/nordvpn.svg
new file mode 100644
index 00000000..49f135c4
--- /dev/null
+++ b/assets/lib/simple-icons/icons/nordvpn.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>NordVPN</title><path d="M2.2838 21.5414A11.9866 11.9866 0 010 14.4832C0 7.8418 5.3727 2.4586 12 2.4586c6.6279 0 12 5.3832 12 12.0246a11.9853 11.9853 0 01-2.2838 7.0582l-5.7636-9.3783-.5565.9419.5645 2.6186L12 8.9338l-2.45 4.1447.5707 2.6451-2.0764-3.5555-5.7605 9.3733z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/norwegian.svg b/assets/lib/simple-icons/icons/norwegian.svg
new file mode 100644
index 00000000..cfdc7ca0
--- /dev/null
+++ b/assets/lib/simple-icons/icons/norwegian.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Norwegian</title><path d="M23.6958 11.0552c-.4325-.2169-.859-.4105-1.3045-.6303.0553-.1311.0729-.2447.0321-.3742l-.1936-.2126-.2752.0452-.2839.15c-.0366-.0248-.1802-.0952-.2285-.1151l.2096-.1309c.3495-.2431.7134-.4703 1.054-.7381.3306-.2533.6697-.5067.8895-.8575.0524-.1034.1325-.2169.1005-.348l-.0641-.1121-.1062-.0596-.2287-.0903c-.1961-.0356-.4086-.0768-.6128-.07-.262.0132-.5183.0656-.773.1325-.3639.0975-.7774.2839-1.2243.5212-.4746.2518-.9158.5532-1.3598.8749-.067-.0962-.2038-.198-.3407-.182-.2315.051-.447.2315-.626.3814-.0905-.0112-.2123-.0457-.3029-.0568-.4032-.0655-.8298-.1106-1.2258-.1529-.3014-.0495-.6115-.0873-.9157-.1178-.2591-.0263-.4513-.07-.6974-.0568l-.3086.1688-.2184.2025.0058.083c.1544.0771.3276.0858.479.1498.4331.1063.6198.1637 1.1268.2825.2605.0611.3276.0873.594.1615.2649.1092.5226.2446.773.3581-.2581.1862-.6244.4367-.9201.6158l-.2199.1034-.2198-.0655c-.3392-.1485-.5983-.265-.8996-.3975l-.2883.0758-.0917.0495-.0699.1064.0626.1295c.1703.1761.3291.3508.5008.5212l-.0073.0059c-.1194-.0175-.2824-.0335-.4192-.0467-.1369-.0422-.2985-.0014-.4164.0801l.0146.1426c.2925.1329.6685.1987.9724.3268-5.325 2.3881-10.4741 3.4815-12.5049 3.2365-1.8242-.2198-1.6145-3.2508 1.2753-5.6704l-.757.0015c-3.641 2.8811-4.8872 6.3881-2.341 6.9064 2.8282.5741 8.586-1.2302 14.5229-4.2179.1495.0589.2871-.0412.4133-.0688.3201.0788.6532.1774.9768.2489l.1864-.0596.0364-.0524c-.0495-.1587-.2038-.2214-.3072-.348.3058-.0903.6057-.1965.9056-.2985.4658-.1601.8633-.3537 1.2869-.5459.2722.0306.5401.0394.8095.0452.2242.0102.4381 0 .6566.0335.179.0058.3217.0334.5037.064.5126.0973 1.0251.186 1.5329.2985.1952.0495.364.0844.5562.1295.1864-.0087.3319-.1267.4906-.2052L24 11.2153l-.3042-.1601zm-5.9365-.2548c-.3493.1849-.7351.3989-1.2476.626-.1325.0597-.2737.0947-.4279.0655l-.2127-.0291c-.2119-.2186-.449-.4343-.658-.6595l.1209-.067h.0465c.3563.1553.6744.3307 1.0337.4834l.3072-.0859c.4521-.279.801-.4989 1.2228-.7657.1427.0582.2053.0873.3422.1426-.1791.1063-.3567.198-.5271.2897zm.7741-1.0166l-.0773-.1325.019-.2664.0539-.0466c.0755-.0582.2389-.1644.3245-.2053l.0146.2563.0698.1296c-.1367.0873-.2662.1892-.4045.2649zm2.0358-.8299c-.1499.0961-.4643.3567-.4731.3684-.2388-.0292-.463-.0349-.6901-.0597l.0465-.0248c.3029-.2475.5708-.4076.9071-.6129.2983-.1806.7395-.4164 1.1035-.5707.3276-.1267.6609-.2315 1.0176-.2838.198-.0291.3945-.0452.5926.0188-.2169.048-.348.0859-.5824.1835-.2038.0844-.5284.2154-.7905.3436-.3872.1936-.7118.3697-1.1312.6376z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/notepadplusplus.svg b/assets/lib/simple-icons/icons/notepadplusplus.svg
new file mode 100644
index 00000000..c19a818b
--- /dev/null
+++ b/assets/lib/simple-icons/icons/notepadplusplus.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Notepad++</title><path d="M14.443 2.285c-.305.005-.6.06-.853.248-.256.168-.546.32-.723.578a6.273 6.273 0 00-.71 2.463c-1.009-.413-2.08-.716-3.177-.676a8.602 8.602 0 00-1.93.604c-1.26.657-2.058 1.943-2.53 3.246a6.84 6.84 0 00-.604 1.805c-.107.568-.322 1.115-.357 1.695-.002.394.029.788.023 1.182-.422.263-.926.245-1.398.328-.34-.008-.67-.18-1.014-.07-.36.172-.75.269-1.111.437-.087.51-.166 1.225.457 1.424 1.064-.002 2.132.002 3.195.021.192.98.38 1.99.898 2.86.613.987 1.213 2.025 2.147 2.75.888.593 2.02.617 3.039.441.387-.043.656-.35 1.004-.492.212-.126.527-.156.607-.428.698-1.13.163-2.531-.47-3.56-.403-.707-1.275-.853-2.018-.82-.436.065-.712.44-1.063.667-.388.235-.761.735-.468 1.186.251.473.561 1.107 1.193 1.074.399-.046.932-.136 1.106-.553.077-.505-.519-.748-.92-.838.019.247.045.494.07.743-.207-.143-.415-.28-.625-.418.128-.667.87-.65 1.38-.854.52.81 1.068 1.852.645 2.815-.489.612-1.37.535-2.054.375-.894-.137-1.487-.933-1.881-1.682-.594-1.035-1.323-2.145-1.196-3.387.417-.021.834-.02 1.25.004.398.094.752.438 1.182.27.922-.252 1.881-.1 2.822-.11.74-.052 1.484-.062 2.225-.031.268.073.411.4.72.38.358.12.558-.246.827-.4a17.954 17.954 0 011.79.002c.283.494.706 1.022 1.31 1.092.734.027 1.356-.493 1.753-1.064.52.117 1.082.282 1.586.021 1.095-.464 2.3-.464 3.43-.785v-.322c-.907-.61-2.027-.441-3.043-.695-.775-.133-1.562-.012-2.34-.022-.345-.236-.683-.509-1.119-.537-.134.059-.27.113-.404.168.356.04.728.12.994.38-.336-.02-.684-.004-1.002-.126-.428.157-.835.4-.902.894-.182-.255.083-.493.189-.72-.24-.507-.826-.768-.994-1.315a.289.289 0 01.48-.008c.234.345.426.715.573 1.104.217.013.435.027.654.045v-.25c-.109.045-.216.09-.322.142-.189-.412-.351-.837-.485-1.271.258.062.506.155.766.207 1.176-.184 2.439-.412 3.36-1.232.194-.2.542-.37.484-.698-.057-.474-.402-.841-.573-1.277.267-.101.535-.2.793-.32.918-.899 1.377-2.185 1.477-3.448-.092-.673-.282-1.413-.803-1.886-.95-.48-2.07-.324-3.035.025-.437.174-.76.527-1.123.813-.296-.066-.477-.41-.672-.633-.375-.64-.89-1.235-1.596-1.51-.293-.011-.608-.055-.914-.05zm.395.516c.59.02 1.109.506 1.443.972.222.37.524.682.885.916a5.218 5.218 0 01-.277 3.791c-.167.375-.519.605-.864.795-.91.267-1.874-.133-2.521-.783l.012-.094c-.458-.214-.537-.767-.616-1.21-.39-.893-.293-1.916-.006-2.823.212-.71.756-1.39 1.526-1.498a1.12 1.12 0 01.418-.066zm5.592 1.025c.616.002 1.29.28 1.44.926.48 1.112-.052 2.344-.688 3.273-.368.345-.792.627-1.137 1-.425-.844-1.359-1.219-2.223-1.437.16-.808.04-1.628.022-2.44.468-.835 1.44-1.154 2.326-1.304.084-.011.172-.018.26-.018zm.775 1.62a7.73 7.73 0 01-.523.138c-.125.181-.252.363-.381.545.141.372.636.718.984.38a1.297 1.297 0 00-.08-1.064c-.178-.318 0 0 0 0zm-11.988.046c.9-.011 1.793.272 2.601.653.38.153.353.6.438.933.065.26.14.516.217.774.126.383.292.78.62 1.037.546.418 1.108.867 1.794 1.025a2.425 2.425 0 001.787-.303c.45-.404.668-1.007 1.137-1.396.44.215.927.318 1.351.568.44.278.653.777.912 1.207.09.194.164.392.242.588-.786.782-1.936.988-2.974 1.23-.43.128-.829-.096-1.186-.304-.184.101-.367.209-.552.309a3.718 3.718 0 01-2.145.45 32.773 32.773 0 01-.55-.072c.084-.376.182-.749.259-1.127-.092.008-.277.02-.37.026-.31.476-.325 1.052-.263 1.597.015.207.028.413.037.62a1.573 1.573 0 01-.408-.932c.016-.391.065-.778.1-1.168-.41-.177-.571.292-.647.596 0 .168.012.335.024.502-.714.163-1.48.246-2.188.011-.514-.168-1.075-.182-1.557-.445-.016-.2-.033-.398-.054-.596-.141-.026-.282-.051-.422-.08-.189.507-.452 1.021-.424 1.575.095.365.401.634.629.925-.335.098-.791.022-1.016.334-.135.601.413.948.772 1.319-.516-.19-1.089-.463-1.266-1.03.26-.302.554-.57.881-.797-.471-.698-.676-1.743-.066-2.421-.118-.143-.257-.39-.477-.268-.172.162-.318.35-.484.52-.7.533-.976 1.386-1.399 2.12-.205-.007-.41-.013-.615-.013l-.01-.254a4.621 4.621 0 01-.023-1.014c.153-.596.418-1.158.568-1.755l.051-.194.086-.293c.452-1.231 1.008-2.494 2.012-3.379.642-.636 1.563-.81 2.396-1.07.06-.003.122-.007.182-.008zm5.12.496c-.38-.012-.738.145-.675.596-.055.394.323.572.592.76.602-.003.872-.686.707-1.178a1.264 1.264 0 00-.623-.178zm-8.064 5.79a1.865 1.865 0 00.225 1.622c-.391.203-.826.213-1.256.211-.09-.648.318-1.202.621-1.736.137-.03.275-.062.41-.098zm1.213.544c.353.101.773.09 1.051.358-.042.174-.083.348-.113.525a5.16 5.16 0 00-.654.465 1.747 1.747 0 01-.284-1.348zm7.168.324c.211.023.262.279.4.407.236.306.573.512.852.775-.67.018-1.475.102-1.88-.562-.271.074-.543.183-.684.445l-.4-.217c-.005-.25.004-.502.025-.752h.457c.412.003.824-.028 1.23-.096zm-5.306.147c.02.336.18.73-.07 1.02-.246-.021-.492-.041-.733-.084.326-.195.567-.505.674-.87zm2.51.117c.315.24.445.634.591.986-.938.036-1.878.023-2.814-.039.064-.31.17-.61.252-.916.655-.02 1.313 0 1.97-.03zm.826.535c.152.184.318.355.498.512.24-.277.775-.727.998-.193-.363.174-.813.305-.934.742l-.012.053c.076.381.178.756.307 1.123-.773-.505-.391-1.548-.857-2.237zm-10.815.293c-.02.295-.422.42-.373.727.091.29.21.57.354.838-.491-.023-.989.003-1.475-.088-.046-.256-.161-.635.11-.805.259-.16.47-.389.615-.658.255.04.516.036.77-.014zm.66.153c-.208.362-.461.81-.138 1.191l-.176.078a2.664 2.664 0 01-.361-.676c.102-.184.195-.374.28-.566.132-.006.263-.015.395-.027zm.518.086l.033.08.11-.047c-.04.227-.205.391-.346.562.233.014.296.764-.041.557a10.992 10.992 0 01-.127-.225c.024-.227-.012-.48.181-.648l.055-.067.086-.095.049-.117zm3.943.074c.347.082.895-.121 1.11.166.31.05.603.197.92.205 1.122-.329 2.316-.154 3.47-.154.006.1.02.298.028.398-.869.033-1.737.036-2.604.014-.452-.003-.881-.307-1.338-.17-.2.018-.424.229-.6.043-.28-.003-.562-.012-.843-.018-.045-.17-.1-.34-.143-.484zm-2.428.017c.375.05.849-.096 1.131.225l-.12.27c-.74-.036-1.48-.043-2.221-.065.151-.495.8-.404 1.21-.43zm15.87.016c.502-.022.98.166 1.478.215.003.207.065.428-.035.623-.608.116-1.185.383-1.81.398.011-.168.02-.336.023-.506l.287-.187.057-.543zm-1.61.014c.102 0 .205.004.307.01.229.044.396.227.588.347-.552.275-1.181.207-1.772.127-.456-.062-.93.022-1.377-.115l.125-.225c.708-.06 1.416-.151 2.13-.144zm-3.761.097c.217.002.434.006.652.006.022.22-.071.326-.28.319-.517.014-1.034.012-1.55-.018-.05-.306.34-.249.525-.295.217-.013.435-.014.653-.012zm-.516.647c.542 0 1.083.051 1.615.152.744-.097 1.494-.005 2.235-.135.306.024.95-.115.876.371-.349.042-.674-.177-1.027-.14-.694.043-1.393.107-2.08-.045-.787.165-1.591.088-2.387.137a17.27 17.27 0 00-.021-.305c.268-.03.546-.024.789-.035zm-10.418.012c.6 0 1.203.111 1.803.132l.125.143c-.808-.002-1.622.062-2.426-.022a13.543 13.543 0 01-.104-.209c.2-.032.402-.044.602-.044zm3.426.119c.34.003.683.008 1.025.002 1.337.016 2.672.035 4.006.125a6.16 6.16 0 00-.098.168c-1.304.043-2.606.02-3.91.015l-.822-.029c-.067-.094-.134-.19-.201-.281zm8.642.39c.43.192.857.393 1.305.543.259-.104.615-.671.826-.26-.328.305-.791.614-1.26.51-.36-.17-.59-.52-.87-.793zm-11.984.07l.33.05c.363.841.38 1.81.873 2.599.284.467.518.96.793 1.432.287.492.762.824 1.207 1.162.955.702 2.52.596 3.197-.438.427-.922-.104-1.898-.474-2.74-.634-.996-2.29-.238-2.242.848.364.218.767.663 1.222.384a10.497 10.497 0 01-.013-.533c.108.12.19.261.296.383-.255.329-.67.314-1.045.262-.151-.168-.307-.331-.46-.496-.188-1.083 1.193-1.994 2.11-1.446.655.42.838 1.228 1.099 1.91.301.821-.144 1.793-.924 2.159-.601.388-1.346.234-2.018.234-.917-.044-1.515-.793-2.117-1.387-.58-.712-.958-1.557-1.41-2.351a7.712 7.712 0 01-.424-2.031z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/notion.svg b/assets/lib/simple-icons/icons/notion.svg
index 2e29096f..2917f42e 100644
--- a/assets/lib/simple-icons/icons/notion.svg
+++ b/assets/lib/simple-icons/icons/notion.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Notion icon</title><path d="M4.459 4.208c.746.606 1.026.56 2.428.466l13.215-.793c.28 0 .047-.28-.046-.326L17.86 1.968c-.42-.326-.981-.7-2.055-.607L3.01 2.295c-.466.046-.56.28-.374.466zm.793 3.08v13.904c0 .747.373 1.027 1.214.98l14.523-.84c.841-.046.935-.56.935-1.167V6.354c0-.606-.233-.933-.748-.887l-15.177.887c-.56.047-.747.327-.747.933zm14.337.745c.093.42 0 .84-.42.888l-.7.14v10.264c-.608.327-1.168.514-1.635.514-.748 0-.935-.234-1.495-.933l-4.577-7.186v6.952L12.21 19s0 .84-1.168.84l-3.222.186c-.093-.186 0-.653.327-.746l.84-.233V9.854L7.822 9.76c-.094-.42.14-1.026.793-1.073l3.456-.233 4.764 7.279v-6.44l-1.215-.139c-.093-.514.28-.887.747-.933zM1.936 1.035l13.31-.98c1.634-.14 2.055-.047 3.082.7l4.249 2.986c.7.513.934.653.934 1.213v16.378c0 1.026-.373 1.634-1.68 1.726l-15.458.934c-.98.047-1.448-.093-1.962-.747l-3.129-4.06c-.56-.747-.793-1.306-.793-1.96V2.667c0-.839.374-1.54 1.447-1.632z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Notion</title><path d="M4.459 4.208c.746.606 1.026.56 2.428.466l13.215-.793c.28 0 .047-.28-.046-.326L17.86 1.968c-.42-.326-.981-.7-2.055-.607L3.01 2.295c-.466.046-.56.28-.374.466zm.793 3.08v13.904c0 .747.373 1.027 1.214.98l14.523-.84c.841-.046.935-.56.935-1.167V6.354c0-.606-.233-.933-.748-.887l-15.177.887c-.56.047-.747.327-.747.933zm14.337.745c.093.42 0 .84-.42.888l-.7.14v10.264c-.608.327-1.168.514-1.635.514-.748 0-.935-.234-1.495-.933l-4.577-7.186v6.952L12.21 19s0 .84-1.168.84l-3.222.186c-.093-.186 0-.653.327-.746l.84-.233V9.854L7.822 9.76c-.094-.42.14-1.026.793-1.073l3.456-.233 4.764 7.279v-6.44l-1.215-.139c-.093-.514.28-.887.747-.933zM1.936 1.035l13.31-.98c1.634-.14 2.055-.047 3.082.7l4.249 2.986c.7.513.934.653.934 1.213v16.378c0 1.026-.373 1.634-1.68 1.726l-15.458.934c-.98.047-1.448-.093-1.962-.747l-3.129-4.06c-.56-.747-.793-1.306-.793-1.96V2.667c0-.839.374-1.54 1.447-1.632z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/notist.svg b/assets/lib/simple-icons/icons/notist.svg
index 6a622829..d3d89fb3 100644
--- a/assets/lib/simple-icons/icons/notist.svg
+++ b/assets/lib/simple-icons/icons/notist.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Notist icon</title><path d="M5.934 3.801c-1.099.11-2.288.4-3.038.74-1.069.499-1.259.869-.909 1.868.36 1.04.19 2.308-1 7.505C.109 17.79-.04 18.6.01 19.32c.04.47.09.63.29.79.22.179.33.189 1.688.129 3.408-.17 4.057-.22 4.267-.34.24-.13.25-.2.44-1.758.32-2.868 1.788-7.155 3.027-8.894 1.06-1.479 2.359-2.128 3.098-1.549.78.62.76 1.559-.13 4.147-.68 1.999-.79 2.428-.909 3.617-.15 1.46.13 2.489.96 3.408.849.94 2.118 1.409 3.846 1.409 1.64 0 2.968-.41 4.377-1.339 1.29-.86 2.828-2.608 3.008-3.428.1-.41-.07-.859-.35-.969-.41-.15-.65-.04-1.389.63-.859.78-1.249.949-2.008.889-1.01-.08-1.45-.66-1.45-1.919 0-.899.09-1.349.65-3.317.79-2.728.93-3.967.58-5.027-.57-1.768-2.978-2.538-5.646-1.798-1.449.41-3.238 1.449-4.597 2.688-.38.34-.68.59-.68.56 0-.02.07-.35.16-.72.34-1.499.2-2.248-.479-2.598-.39-.2-1.599-.26-2.828-.13z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Notist</title><path d="M5.9327 3.8008c-1.099.11-2.288.4-3.038.74-1.069.499-1.259.869-.909 1.868.36 1.0401.19 2.3081-1.0001 7.5053-.878 3.876-1.027 4.686-.977 5.406.04.47.09.63.29.7901.22.179.33.189 1.688.129 3.408-.17 4.0571-.22 4.2671-.34.24-.13.25-.2.44-1.758.32-2.8681 1.788-7.1552 3.027-8.8942 1.0601-1.479 2.3591-2.128 3.0982-1.549.78.62.76 1.559-.13 4.147-.68 1.999-.79 2.428-.909 3.617-.15 1.4601.13 2.4891.96 3.4082.849.94 2.118 1.409 3.846 1.409 1.64 0 2.9681-.41 4.3771-1.339 1.29-.86 2.8281-2.608 3.0081-3.4281.1-.41-.07-.859-.35-.969-.41-.15-.65-.04-1.389.63-.859.78-1.249.949-2.008.889-1.0101-.08-1.4501-.66-1.4501-1.919 0-.899.09-1.349.65-3.3171.79-2.728.93-3.9671.58-5.0271-.57-1.768-2.978-2.538-5.6461-1.798-1.449.41-3.238 1.449-4.5971 2.688-.38.34-.68.59-.68.56 0-.02.07-.35.16-.72.34-1.499.2-2.248-.479-2.598-.39-.2-1.599-.26-2.8281-.13z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/nounproject.svg b/assets/lib/simple-icons/icons/nounproject.svg
new file mode 100644
index 00000000..6d0cd8e5
--- /dev/null
+++ b/assets/lib/simple-icons/icons/nounproject.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Noun Project</title><path d="M17.672 8.846H24v6.327h-6.328zM6.328 11.99a3.164 3.164 0 0 1-3.164 3.163A3.164 3.164 0 0 1 0 11.991a3.164 3.164 0 0 1 3.164-3.164 3.164 3.164 0 0 1 3.164 3.164m5.504 1.142l2.04 2.021 1.142-1.16-2.022-2.003 2.022-2.003-1.142-1.142-2.04 2.003L9.81 8.846 8.649 9.988l2.022 2.003-2.022 2.003 1.16 1.16Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/now.svg b/assets/lib/simple-icons/icons/now.svg
new file mode 100644
index 00000000..685553d3
--- /dev/null
+++ b/assets/lib/simple-icons/icons/now.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>NOW</title><path d="M8.8009 11.9974c0-.974.7878-1.7634 1.7596-1.7634.9718 0 1.7596.7895 1.7596 1.7634 0 .9738-.7878 1.7634-1.7596 1.7634-.9718 0-1.7596-.7896-1.7596-1.7634zm13.0277-2.896l-1.2166 2.4524-.7878-2.3188-.0015-.0003c-.1566-.4505-.5822-.7737-1.0829-.7737-.399 0-.7505.2054-.956.517-.5255.8015-1.0497 1.6094-1.5735 2.414l-.2785-1.956c-.0963-.6296-.6807-1.0587-1.3048-.9624-.6249.096-1.0538.6778-.958 1.304l.0488.328c-.6427-1.0749-1.8162-1.7945-3.1575-1.7945-1.353 0-2.5352.7324-3.174 1.823l.07-.3434c.1223-.6008-.2645-1.1873-.864-1.31-.5993-.1223-1.1848.265-1.307.8659l-.4763 2.3382-1.752-2.7177c-.198-.3042-.5399-.5053-.9284-.5053-.5317 0-.976.3765-1.084.879l-1.0217 5.012c-.1223.6007.257 1.1846.8575 1.3121.0747.0159.1556.0235.2291.024.5139.0036.9763-.3579 1.0844-.892l.4763-2.3383c.5924.9217 1.1845 1.844 1.779 2.7641.196.2777.5281.4662.9018.4662.5462 0 1.0002-.398 1.0915-.9219l.469-2.302c.2292 1.815 1.7755 3.2187 3.6488 3.2187 1.7257 0 3.1736-1.191 3.5705-2.7972l.2613 1.759c.0736.579.5474 1.0371 1.1411 1.0371.4272 0 .7756-.2445.9972-.5841l1.8844-2.8942.905 2.6645c.1622.4752.5808.8138 1.0961.8138.4788 0 .855-.288 1.0609-.7155l2.402-4.845c.2834-.568.0528-1.2551-.5123-1.5403-.5647-.285-1.2558-.0524-1.5379.5196Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/npm.svg b/assets/lib/simple-icons/icons/npm.svg
index 22897615..e04468d9 100644
--- a/assets/lib/simple-icons/icons/npm.svg
+++ b/assets/lib/simple-icons/icons/npm.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>NPM icon</title><path d="M0 7.334v8h6.666v1.332H12v-1.332h12v-8H0zm6.666 6.664H5.334v-4H3.999v4H1.335V8.667h5.331v5.331zm4 0v1.336H8.001V8.667h5.334v5.332h-2.669v-.001zm12.001 0h-1.33v-4h-1.336v4h-1.335v-4h-1.33v4h-2.671V8.667h8.002v5.331zM10.665 10H12v2.667h-1.335V10z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>npm</title><path d="M1.763 0C.786 0 0 .786 0 1.763v20.474C0 23.214.786 24 1.763 24h20.474c.977 0 1.763-.786 1.763-1.763V1.763C24 .786 23.214 0 22.237 0zM5.13 5.323l13.837.019-.009 13.836h-3.464l.01-10.382h-3.456L12.04 19.17H5.113z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/nrwl.svg b/assets/lib/simple-icons/icons/nrwl.svg
new file mode 100644
index 00000000..86c77cd1
--- /dev/null
+++ b/assets/lib/simple-icons/icons/nrwl.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Nrwl</title><path d="M3.357 8.258a3.424 3.424 0 00-.845.123l.054-.02a3.437 3.437 0 00-.841.346 3.437 3.437 0 00-.262.168 3.437 3.437 0 00-.11.078 3.424 3.424 0 00-.025.022 3.437 3.437 0 00-.01.005 3.424 3.424 0 00-.103.084 3.437 3.437 0 00-.115.104 3.437 3.437 0 00-.05.045 3.424 3.424 0 00-.08.08 3.424 3.424 0 00-.099.107 3.437 3.437 0 00-.03.034 3.424 3.424 0 00-.071.086 3.437 3.437 0 00-.034.04 3.424 3.424 0 00-.066.088 3.437 3.437 0 00-.006.008 3.424 3.424 0 00-.072.1 3.437 3.437 0 00-.014.02 3.424 3.424 0 00-.082.132 3.424 3.424 0 00-.074.127 3.437 3.437 0 00-.012.026 3.424 3.424 0 00-.062.12 3.424 3.424 0 00-.067.143 3.424 3.424 0 00-.054.135 3.437 3.437 0 00-.008.02 3.424 3.424 0 00-.131.437 3.424 3.424 0 00-.031.152 3.424 3.424 0 00-.026.149 3.437 3.437 0 000 .013 3.424 3.424 0 00-.027.303A3.424 3.424 0 000 11.68a3.437 3.437 0 000 .04 3.424 3.424 0 00.004.124A3.424 3.424 0 00.016 12a3.424 3.424 0 00.015.14 3.437 3.437 0 00.01.057 3.424 3.424 0 00.018.108 3.437 3.437 0 000 .004 3.424 3.424 0 00.025.123 3.437 3.437 0 00.037.15 3.437 3.437 0 00.096.297 3.437 3.437 0 00.056.144 3.437 3.437 0 00.432.745c.014.02.025.024.04.043a3.424 3.424 0 00.007.01 3.424 3.424 0 00.305.33l.011.013c.1.09.16.132.137.129.008.006.02.01.03.018a3.424 3.424 0 00.017.017.711.711 0 01-.205-.08.683.683 0 00-.39-.088.696.696 0 00-.608.947 1.993 1.993 0 01.564-.12 2.088 2.088 0 01.34.007 1.707 1.707 0 00.283.006c.05-.004.098-.01.147-.018a1.714 1.714 0 00.584-.203 3.424 3.424 0 00.437.17 4.43 4.43 0 002.989-.193.528.528 0 00.115-.076.179.179 0 00.076.03l1.789.169v.863H8.75v-.734l1.12.105-4.204-.754a.111.111 0 00-.014-.004c-.01-.1-.095-.172-.13-.218a.134.134 0 01-.03-.07 1.64 1.64 0 00-1.496-1.52.504.504 0 00-.18-.193.503.503 0 01-.187-.4.56.56 0 00-.498.44 1.393 1.393 0 01-.377-2.222 1.798 1.798 0 011.312-.563A1.824 1.824 0 015.83 10.96a.914.914 0 01-.543.32.904.904 0 00-.736.748c.35 0 .585.477 1.236.477a.59.59 0 00.547-.367.592.592 0 00.549.367 1.17 1.17 0 00.49-.106v2.002l1.377.327v-1.592l2.193 2.605H12.1v-4.89h-1.38v2.605L8.53 10.852H7.373v.427c-.283-.05-.556-.255-.65-.52a3.424 3.424 0 00-3.366-2.501zM22.109 9.96v4.414c0 1.186.766 1.336 1.485 1.336.219 0 .406-.02.406-.02v-1.03s-.078.007-.164.007c-.305 0-.375-.12-.375-.453V9.96zm-6.816 1.932a2.057 2.057 0 00-.709.128 1.253 1.253 0 00-.535.385v-.453h-1.285v3.79h1.347v-1.74c0-.316.081-.551.244-.704.164-.154.39-.23.678-.23a2.937 2.937 0 01.307.017v-1.193a2.057 2.057 0 00-.047 0zm.584.06l1.094 3.787h1.306l.477-1.736.45 1.736h1.306l1.094-3.787h-1.186l-.54 1.932-.52-1.932h-1.15l-.542 1.912-.512-1.912zm-12.281 2.14c.03 0 .07.016.117.027.092.023.17.02.15.108a.171.171 0 01-.332-.08c.01-.044.033-.056.065-.055z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/nubank.svg b/assets/lib/simple-icons/icons/nubank.svg
new file mode 100644
index 00000000..59be94a2
--- /dev/null
+++ b/assets/lib/simple-icons/icons/nubank.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Nubank</title><path d="M7.2795 5.4336c-1.1815 0-2.1846.4628-2.9432 1.252h-.002c-.0541-.0022-.1074-.002-.162-.002-1.5436 0-2.9925.8835-3.699 2.2559-.3088.5996-.4234 1.2442-.459 1.9003-.0321.589 0 1.1863 0 1.7696v5.6523H3.184s.0022-2.784 0-5.1777c-.0014-1.6112-.0118-3.0471 0-3.3418.056-1.3937.4372-2.3053 1.1484-3.0508 2.3585.0018 3.8852 1.6091 3.9705 4.168.0196.5874.0254 3.7304.0254 3.7304v3.672h3.1678v-4.965c0-1.5007.0127-2.8006-.0918-3.6952-.292-2.5-1.821-4.168-4.1248-4.168zm8.3903.3008l-3.166.0039v4.9648c0 1.5009-.0127 2.8007.0919 3.6953.2921 2.5001 1.821 4.168 4.1248 4.168 1.1815 0 2.1846-.4628 2.9432-1.252.0003-.0003.0016.0004.002 0 .0542.0023.1093.002.164.002 1.5435 0 2.9905-.8835 3.6971-2.2558.3088-.5997.4233-1.2442.459-1.9004.032-.5889 0-1.1862 0-1.7695V5.7383H20.816s-.0022 2.784 0 5.1777c.0015 1.6113.0119 3.047 0 3.3418-.056 1.3935-.4372 2.3053-1.1483 3.0508-2.3586-.0018-3.8853-1.6091-3.9706-4.168-.0196-.5874-.0273-2.0437-.0273-3.7324Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/nucleo.svg b/assets/lib/simple-icons/icons/nucleo.svg
index 0331623c..1c6a312a 100644
--- a/assets/lib/simple-icons/icons/nucleo.svg
+++ b/assets/lib/simple-icons/icons/nucleo.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Nucleo icon</title><path d="M7.247 22.499c1.488.661 3.058 1.075 4.794 1.075 1.736 0 3.39-.414 4.795-1.075-1.57-1.075-3.224-2.397-4.795-3.803-1.57 1.406-3.224 2.728-4.794 3.803zm14.715-4.63A11.75 11.75 0 0 0 23.532 12c0-1.736-.413-3.39-1.074-4.795-1.736 2.563-4.216 5.456-7.027 8.267-.579.579-1.24 1.24-1.902 1.819-.248-.248-.496-.496-.826-.744a20.637 20.637 0 0 0 1.901-1.902c3.059-3.058 5.622-6.117 7.275-8.68 1.901-2.893 2.397-4.712 1.57-5.621-.082-.166-.495-.331-.909-.331-.992 0-2.645.744-4.63 2.067-1.735-.992-3.72-1.654-5.869-1.654-2.15 0-4.133.579-5.87 1.654C4.189.757 2.535.013 1.543.013 1.046.013.716.178.468.426-1.516 2.41 4.684 10.1 9.313 14.728c5.456 5.456 10.913 9.259 13.227 9.259.496 0 .827-.165 1.075-.413.827-.827.33-2.728-1.57-5.622l-.083-.083zm.578-16.781c.083 0 .248 0 .331.082.248.248.165 1.323-1.488 3.968-.661-.909-1.488-1.818-2.48-2.48 1.653-.992 2.893-1.57 3.637-1.57zM2.7 5.138C1.294 2.906.88 1.501 1.212 1.17c.082-.082.248-.082.33-.082.744 0 1.984.578 3.638 1.57a17.58 17.58 0 0 0-2.48 2.48zM22.87 22.83c-.083.082-.248.082-.33.082-.745 0-1.985-.578-3.638-1.57.91-.662 1.819-1.488 2.48-2.48 1.653 2.645 1.736 3.72 1.488 3.968zm-12.152-5.374c-.744-.661-1.488-1.323-2.15-2.067-2.728-2.728-5.373-5.786-7.027-8.266C.881 8.61.468 10.264.468 11.917c0 2.15.578 4.134 1.57 5.87l-.082.082C.054 20.763-.442 22.582.385 23.491c.248.248.661.413 1.075.413 1.818 0 5.539-2.314 9.672-5.952a3.13 3.13 0 0 1-.413-.496zm-9.177 5.456c-.082 0-.248 0-.33-.082-.248-.248-.166-1.323 1.488-3.968.661.909 1.488 1.736 2.48 2.48-1.654.992-2.894 1.57-3.638 1.57z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Nucleo</title><path d="M12.025 0a3.868 3.868 0 00-1.964.525L1.354 5.55V6.5h15.853a3.9 3.9 0 003.463-2.115L13.922.508A3.868 3.868 0 0012.025 0zm9.81 5.072L13.91 18.801a3.9 3.9 0 00.1 4.056l6.734-3.908a3.865 3.865 0 001.914-3.35V5.55l-.822-.477zM1.46 7.848a3.9 3.9 0 00-.117.004l.017 7.787a3.868 3.868 0 001.946 3.334L12.008 24l.824-.475-7.926-13.73A3.9 3.9 0 001.46 7.848zM11.992 9.1a2.6 2.6 0 00-2.584 2.6 2.6 2.6 0 002.6 2.599 2.6 2.6 0 002.6-2.6 2.6 2.6 0 00-2.6-2.6 2.6 2.6 0 00-.016 0Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/nuget.svg b/assets/lib/simple-icons/icons/nuget.svg
index b9872791..4b4f17d0 100644
--- a/assets/lib/simple-icons/icons/nuget.svg
+++ b/assets/lib/simple-icons/icons/nuget.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>NuGet icon</title><path d="M17.67 21.633a3.995 3.995 0 1 1 0-7.99 3.995 3.995 0 0 1 0 7.99m-7.969-9.157a2.497 2.497 0 1 1 0-4.994 2.497 2.497 0 0 1 0 4.994m8.145-7.795h-6.667a6.156 6.156 0 0 0-6.154 6.155v6.667a6.154 6.154 0 0 0 6.154 6.154h6.667A6.154 6.154 0 0 0 24 17.503v-6.667a6.155 6.155 0 0 0-6.154-6.155M3.995 2.339a1.998 1.998 0 1 1-3.996 0 1.998 1.998 0 0 1 3.996 0"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>NuGet</title><path d="M1.998.342a1.997 1.997 0 1 0 0 3.995 1.997 1.997 0 0 0 0-3.995zm9.18 4.34a6.156 6.156 0 0 0-6.153 6.155v6.667c0 3.4 2.756 6.154 6.154 6.154h6.667c3.4 0 6.154-2.755 6.154-6.154v-6.667a6.154 6.154 0 0 0-6.154-6.155zm-1.477 2.8a2.496 2.496 0 1 1 0 4.993 2.496 2.496 0 0 1 0-4.993zm7.968 6.16a3.996 3.996 0 1 1-.002 7.992 3.996 3.996 0 0 1 .002-7.992z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/nuke.svg b/assets/lib/simple-icons/icons/nuke.svg
index e9cc6916..44c6b0e0 100644
--- a/assets/lib/simple-icons/icons/nuke.svg
+++ b/assets/lib/simple-icons/icons/nuke.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Nuke icon</title><path d="M12.293.004c6.625.162 11.865 5.664 11.703 12.29-.162 6.625-5.664 11.865-12.29 11.703C5.081 23.835-.159 18.333.003 11.707l.001-.025C.18 5.066 5.678-.158 12.293.004zm0 1.238c-5.941-.164-10.89 4.52-11.054 10.461s4.52 10.89 10.461 11.054c5.941.164 10.89-4.52 11.054-10.461l.001-.025c.15-5.932-4.53-10.866-10.462-11.029zm5.842 8.302h2.4c.976 0 .682-.873.682-.873a9.587 9.587 0 0 0-2.111-3.431l-.005.011a10.052 10.052 0 0 0-3.355-2.329.612.612 0 0 0-.894.622c-.044.802-.142 2.395-.142 2.395s.016.769-.627.769c-.813.011-1.489-.044-1.489-.044a2.314 2.314 0 0 1-1.255-.545L8.868 3.511a1.09 1.09 0 0 0-1.407-.196 9.758 9.758 0 0 0-4.713 5.384c-.256.714.333.806.731.806h6a2.086 2.086 0 0 1 1.68.627c.785.824 1.331 1.369 1.331 1.369s.48.54 1.26 1.358c.431.459.632 1.089.545 1.713 0 0-.295 5.744-.295 6-.027.398.038.993.769.775a9.756 9.756 0 0 0 5.618-4.424 1.091 1.091 0 0 0-.12-1.418l-2.471-2.607a2.303 2.303 0 0 1-.496-1.282s-.022-.682.033-1.489c.044-.643.802-.583.802-.583zm-2.362 1.374c-.475.469-1.484.229-2.22-.545-.736-.775-.924-1.801-.45-2.254.475-.453 1.502-.239 2.239.536.737.774.906 1.794.431 2.263z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Nuke</title><path d="M12.293.004c6.625.162 11.865 5.664 11.703 12.29-.162 6.625-5.664 11.865-12.29 11.703C5.081 23.835-.159 18.333.003 11.707l.001-.025C.18 5.066 5.678-.158 12.293.004zm0 1.238c-5.941-.164-10.89 4.52-11.054 10.461s4.52 10.89 10.461 11.054c5.941.164 10.89-4.52 11.054-10.461l.001-.025c.15-5.932-4.53-10.866-10.462-11.029zm5.842 8.302h2.4c.976 0 .682-.873.682-.873a9.587 9.587 0 0 0-2.111-3.431l-.005.011a10.052 10.052 0 0 0-3.355-2.329.612.612 0 0 0-.894.622c-.044.802-.142 2.395-.142 2.395s.016.769-.627.769c-.813.011-1.489-.044-1.489-.044a2.314 2.314 0 0 1-1.255-.545L8.868 3.511a1.09 1.09 0 0 0-1.407-.196 9.758 9.758 0 0 0-4.713 5.384c-.256.714.333.806.731.806h6a2.086 2.086 0 0 1 1.68.627c.785.824 1.331 1.369 1.331 1.369s.48.54 1.26 1.358c.431.459.632 1.089.545 1.713 0 0-.295 5.744-.295 6-.027.398.038.993.769.775a9.756 9.756 0 0 0 5.618-4.424 1.091 1.091 0 0 0-.12-1.418l-2.471-2.607a2.303 2.303 0 0 1-.496-1.282s-.022-.682.033-1.489c.044-.643.802-.583.802-.583zm-2.362 1.374c-.475.469-1.484.229-2.22-.545-.736-.775-.924-1.801-.45-2.254.475-.453 1.502-.239 2.239.536.737.774.906 1.794.431 2.263z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/numba.svg b/assets/lib/simple-icons/icons/numba.svg
new file mode 100644
index 00000000..2c026acd
--- /dev/null
+++ b/assets/lib/simple-icons/icons/numba.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Numba</title><path d="M16.419 15.204s7.235-5.335 4.305-8.786c-3.398-4.003-12.921 4.486-13.962 2.76-1.04-1.725 8.452-5.86 9.481-6.55.112-.075.144-.218.112-.383l1.099-.127-.685-.345.175-.685-.796.621C15.85 1.173 15.34.595 15.049.393c-1.035-.685-2.93-.52-5.685.86-2.756 1.38-9.147 5.685-5.877 10.51 2.93 4.306 11.35-3.094 12.756-1.9 1.205 1.035-8.095 7.411-8.095 7.411h3.965C11.43 18.999 8.148 24 8.148 24l11.934-8.621c-1.253-.186-3.663-.175-3.663-.175zM13.175.908a.776.776 0 01.823.716.776.776 0 01-.717.823.776.776 0 01-.823-.716.768.768 0 01.717-.823z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/numpy.svg b/assets/lib/simple-icons/icons/numpy.svg
new file mode 100644
index 00000000..5c8e8635
--- /dev/null
+++ b/assets/lib/simple-icons/icons/numpy.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>NumPy</title><path d="M10.315 4.876L6.3048 2.8517l-4.401 2.1965 4.1186 2.0683zm1.8381.9277l4.2045 2.1223-4.3622 2.1906-4.125-2.0718zm5.6153-2.9213l4.3193 2.1658-3.863 1.9402-4.2131-2.1252zm-1.859-.9329L12.021 0 8.1742 1.9193l4.0068 2.0208zm-3.0401 16.7443V24l4.7107-2.3507-.0053-5.3085zm4.7037-4.2057l-.0052-5.2528-4.6985 2.3356v5.2546zm5.6553-.9845v5.327l-4.0178 2.0052-.0029-5.3028zm0-1.8626V6.4214l-4.0253 2.001.0034 5.2633zM11.2062 11.571L8.0333 9.9756v6.895s-3.8804-8.2564-4.2399-8.998c-.0463-.0957-.2371-.2007-.2858-.2262C2.8118 7.2812.773 6.2485.773 6.2485V18.43l2.8204 1.5076v-6.3674s3.8392 7.3775 3.878 7.458c.0389.0807.4245.8582.8362 1.1314.5485.363 2.8992 1.7766 2.8992 1.7766z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/nutanix.svg b/assets/lib/simple-icons/icons/nutanix.svg
index 0918fbfb..ed5130b6 100644
--- a/assets/lib/simple-icons/icons/nutanix.svg
+++ b/assets/lib/simple-icons/icons/nutanix.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Nutanix icon</title><path d="M.393 3.617A.395.395 0 000 4.012c0 .12.054.225.139.297l8.507 7.404a.39.39 0 01-.013.588l-8.52 7.412a.393.393 0 00.28.67h4.86c.103 0 .195-.04.265-.104l9.17-7.98a.396.396 0 00.001-.596L5.518 3.721a.386.386 0 00-.264-.104H.393zm18.359 0a.389.389 0 00-.273.113l-4.717 4.106a.392.392 0 00-.04.564l2.428 2.114a.393.393 0 00.291.129.394.394 0 00.278-.118l7.127-6.203a.389.389 0 00.154-.31.395.395 0 00-.393-.395h-4.855zm-2.31 9.742c-.116 0-.22.05-.292.13l-2.427 2.113a.392.392 0 00.039.564l4.717 4.104c.07.07.166.113.273.113h4.855a.393.393 0 00.239-.705l-7.127-6.203a.393.393 0 00-.278-.116Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Nutanix</title><path d="M.394 3.617a.395.395 0 0 0-.393.395c0 .12.054.225.14.297l8.506 7.404a.39.39 0 0 1-.013.588l-8.52 7.412a.393.393 0 0 0 .28.67h4.86a.39.39 0 0 0 .265-.104l9.17-7.98a.396.396 0 0 0 0-.596L5.52 3.721a.386.386 0 0 0-.264-.104zm18.358 0a.389.389 0 0 0-.273.113l-4.716 4.106a.392.392 0 0 0-.04.564l2.427 2.114a.393.393 0 0 0 .291.13.394.394 0 0 0 .278-.119l7.127-6.203a.389.389 0 0 0 .154-.31.395.395 0 0 0-.393-.395zm-2.31 9.742c-.116 0-.22.05-.292.13l-2.426 2.113a.392.392 0 0 0 .039.564l4.716 4.104c.07.07.166.113.273.113h4.855a.393.393 0 0 0 .239-.705l-7.127-6.203a.393.393 0 0 0-.278-.116z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/nuxt-dot-js.svg b/assets/lib/simple-icons/icons/nuxt-dot-js.svg
deleted file mode 100644
index aa67e30a..00000000
--- a/assets/lib/simple-icons/icons/nuxt-dot-js.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Nuxt.js icon</title><path d="M19.724 20.272l.023-.045a.74.74 0 0 0 .053-.117l.002-.005a1.16 1.16 0 0 0 .054-.607l.001.007a1.795 1.795 0 0 0-.235-.623l.005.008-5.317-9.353-.812-1.42-.807 1.42-5.314 9.353a1.85 1.85 0 0 0-.204.604l-.001.011a1.257 1.257 0 0 0 .08.713l-.003-.008a.809.809 0 0 0 .05.102l-.002-.004c.16.275.5.602 1.25.602h9.898c.157 0 .925-.032 1.28-.637zm-6.227-9.316l4.859 8.548H8.64zm10.249 7.934L16.73 6.53c-.072-.13-.477-.787-1.182-.787-.317 0-.772.135-1.142.785l-.907 1.59.807 1.42 1.25-2.212 6.941 12.18h-2.64a1.187 1.187 0 0 1-.058.608l.003-.008a.772.772 0 0 1-.057.126l.002-.004-.023.045c-.355.605-1.122.637-1.272.637h4.129c.152 0 .917-.032 1.272-.637.157-.275.27-.737-.107-1.382zM7.304 20.307a.989.989 0 0 1-.045-.092l-.002-.006a1.228 1.228 0 0 1-.084-.712l-.001.007H1.501L9.93 4.672l2.767 4.864.802-1.42-2.412-4.249c-.067-.122-.475-.777-1.177-.777-.317 0-.772.137-1.142.787L.23 18.889c-.072.13-.425.812-.075 1.417.16.275.5.602 1.25.602h7.151c-.745 0-1.09-.322-1.25-.602z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/nuxtdotjs.svg b/assets/lib/simple-icons/icons/nuxtdotjs.svg
new file mode 100644
index 00000000..cdedb71e
--- /dev/null
+++ b/assets/lib/simple-icons/icons/nuxtdotjs.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Nuxt.js</title><path d="M9.078 3.965c-.588 0-1.177.289-1.514.867L.236 17.433c-.672 1.156.17 2.601 1.514 2.601h5.72a1.676 1.676 0 0 1-.35-2.117l5.547-9.513-2.076-3.572a1.734 1.734 0 0 0-1.513-.867zm7.407 2.922c-.487 0-.973.236-1.252.709L9.17 17.906c-.557.945.138 2.13 1.251 2.13h12.13c1.114 0 1.81-1.185 1.253-2.13l-6.067-10.31a1.437 1.437 0 0 0-1.252-.71z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/nvidia.svg b/assets/lib/simple-icons/icons/nvidia.svg
index 81968a10..2c7ff66f 100644
--- a/assets/lib/simple-icons/icons/nvidia.svg
+++ b/assets/lib/simple-icons/icons/nvidia.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 24 24"><title>NVIDIA icon</title><path d="M8.948 8.798v-1.43a6.7 6.7 0 0 1 .424-.018c3.922-.124 6.493 3.374 6.493 3.374s-2.774 3.851-5.75 3.851c-.398 0-.787-.062-1.158-.185v-4.346c1.528.185 1.837.857 2.747 2.385l2.04-1.714s-1.492-1.952-4-1.952a6.016 6.016 0 0 0-.796.035m0-4.735v2.138l.424-.027c5.45-.185 9.01 4.47 9.01 4.47s-4.08 4.964-8.33 4.964c-.37 0-.733-.035-1.095-.097v1.325c.3.035.61.062.91.062 3.957 0 6.82-2.023 9.593-4.408.459.371 2.34 1.263 2.73 1.652-2.633 2.208-8.772 3.984-12.253 3.984-.335 0-.653-.018-.971-.053v1.864H24V4.063zm0 10.326v1.131c-3.657-.654-4.673-4.46-4.673-4.46s1.758-1.944 4.673-2.262v1.237H8.94c-1.528-.186-2.73 1.245-2.73 1.245s.68 2.412 2.739 3.11M2.456 10.9s2.164-3.197 6.5-3.533V6.201C4.153 6.59 0 10.653 0 10.653s2.35 6.802 8.948 7.42v-1.237c-4.84-.6-6.492-5.936-6.492-5.936z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>NVIDIA</title><path d="M8.948 8.798v-1.43a6.7 6.7 0 0 1 .424-.018c3.922-.124 6.493 3.374 6.493 3.374s-2.774 3.851-5.75 3.851c-.398 0-.787-.062-1.158-.185v-4.346c1.528.185 1.837.857 2.747 2.385l2.04-1.714s-1.492-1.952-4-1.952a6.016 6.016 0 0 0-.796.035m0-4.735v2.138l.424-.027c5.45-.185 9.01 4.47 9.01 4.47s-4.08 4.964-8.33 4.964c-.37 0-.733-.035-1.095-.097v1.325c.3.035.61.062.91.062 3.957 0 6.82-2.023 9.593-4.408.459.371 2.34 1.263 2.73 1.652-2.633 2.208-8.772 3.984-12.253 3.984-.335 0-.653-.018-.971-.053v1.864H24V4.063zm0 10.326v1.131c-3.657-.654-4.673-4.46-4.673-4.46s1.758-1.944 4.673-2.262v1.237H8.94c-1.528-.186-2.73 1.245-2.73 1.245s.68 2.412 2.739 3.11M2.456 10.9s2.164-3.197 6.5-3.533V6.201C4.153 6.59 0 10.653 0 10.653s2.35 6.802 8.948 7.42v-1.237c-4.84-.6-6.492-5.936-6.492-5.936z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/nx.svg b/assets/lib/simple-icons/icons/nx.svg
new file mode 100644
index 00000000..93b0362a
--- /dev/null
+++ b/assets/lib/simple-icons/icons/nx.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Nx</title><path d="M11.987 14.138l-3.132 4.923-5.193-8.427-.012 8.822H0V4.544h3.691l5.247 8.833.005-3.998 3.044 4.759zm.601-5.761c.024-.048 0-3.784.008-3.833h-3.65c.002.059-.005 3.776-.003 3.833h3.645zm5.634 4.134a2.061 2.061 0 0 0-1.969 1.336 1.963 1.963 0 0 1 2.343-.739c.396.161.917.422 1.33.283a2.1 2.1 0 0 0-1.704-.88zm3.39 1.061c-.375-.13-.8-.277-1.109-.681-.06-.08-.116-.17-.176-.265a2.143 2.143 0 0 0-.533-.642c-.294-.216-.68-.322-1.18-.322a2.482 2.482 0 0 0-2.294 1.536 2.325 2.325 0 0 1 4.002.388.75.75 0 0 0 .836.334c.493-.105.46.36 1.203.518v-.133c-.003-.446-.246-.55-.75-.733zm2.024 1.266a.723.723 0 0 0 .347-.638c-.01-2.957-2.41-5.487-5.37-5.487a5.364 5.364 0 0 0-4.487 2.418c-.01-.026-1.522-2.39-1.538-2.418H8.943l3.463 5.423-3.379 5.32h3.54l1.54-2.366 1.568 2.366h3.541l-3.21-5.052a.7.7 0 0 1-.084-.32 2.69 2.69 0 0 1 2.69-2.691h.001c1.488 0 1.736.89 2.057 1.308.634.826 1.9.464 1.9 1.541a.707.707 0 0 0 1.066.596zm.35.133c-.173.372-.56.338-.755.639-.176.271.114.412.114.412s.337.156.538-.311c.104-.231.14-.488.103-.74z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/nzxt.svg b/assets/lib/simple-icons/icons/nzxt.svg
new file mode 100644
index 00000000..e01d4cab
--- /dev/null
+++ b/assets/lib/simple-icons/icons/nzxt.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>NZXT</title><path d="M1.763 8.936l2.101 3.04-.002-3.04h1.773v6.128H3.99l-2.218-3.227v3.227H0V8.936zm22.237 0v1.614h-1.612v4.514h-1.883V10.55h-1.611V8.936H24zm-9.598 0l.996 1.573 1.061-1.573h1.947l-1.98 3.034 2.013 3.094h-2.063l-1.005-1.558-.99 1.558h-2.015l1.975-3.038-2.004-3.09h2.065zm-2.652 0L9.327 13.51h2.372v1.554H6.573l2.379-4.584H6.704V8.936h5.046z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/observable.svg b/assets/lib/simple-icons/icons/observable.svg
new file mode 100644
index 00000000..4ac35887
--- /dev/null
+++ b/assets/lib/simple-icons/icons/observable.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Observable</title><path d="M12 20c-1.065 0-1.988-.232-2.77-.696a4.7 4.7 0 0 1-1.794-1.89 9.97 9.97 0 0 1-.916-2.53A13.613 13.613 0 0 1 6.23 12c0-.766.05-1.499.152-2.2.1-.699.285-1.41.556-2.132A6.803 6.803 0 0 1 7.98 5.79a4.725 4.725 0 0 1 1.668-1.293C10.337 4.165 11.12 4 12 4c1.065 0 1.988.232 2.77.696a4.7 4.7 0 0 1 1.794 1.89c.418.795.723 1.639.916 2.53.192.891.29 1.853.29 2.884 0 .766-.05 1.499-.152 2.2a9.812 9.812 0 0 1-.567 2.132 7.226 7.226 0 0 1-1.042 1.878c-.418.53-.97.962-1.657 1.293-.688.332-1.471.497-2.352.497zm2.037-5.882c.551-.554.858-1.32.848-2.118 0-.824-.276-1.53-.827-2.118C13.506 9.294 12.82 9 12 9c-.82 0-1.506.294-2.058.882A2.987 2.987 0 0 0 9.115 12c0 .824.276 1.53.827 2.118.552.588 1.238.882 2.058.882.82 0 1.5-.294 2.037-.882zM12 24c6.372 0 11.538-5.373 11.538-12S18.372 0 12 0 .462 5.373.462 12 5.628 24 12 24Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/obsidian.svg b/assets/lib/simple-icons/icons/obsidian.svg
new file mode 100644
index 00000000..0bd9467c
--- /dev/null
+++ b/assets/lib/simple-icons/icons/obsidian.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Obsidian</title><path d="M15.074 0C12.586 1.374 10.1 2.749 7.613 4.124l.823 4.266 6.365-5.015zm.172.059l-.269 3.314 4.497 2.752zm-.353 3.466L8.487 8.576l7.39 15.367 1.177-2.359L19.58 6.4c-.012-.009-4.688-2.875-4.688-2.875zm-7.425.779l-3.05 6.594L9.033 21.51l-.74-12.934-.012-.064zm1.025 4.688l.73 12.784L15.71 24Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/obsstudio.svg b/assets/lib/simple-icons/icons/obsstudio.svg
index 0eedefe7..9f4c85d2 100644
--- a/assets/lib/simple-icons/icons/obsstudio.svg
+++ b/assets/lib/simple-icons/icons/obsstudio.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>OBS Studio icon</title><path d="M12,24C5.383,24,0,18.617,0,12S5.383,0,12,0s12,5.383,12,12S18.617,24,12,24z M12,1.109 C5.995,1.109,1.11,5.995,1.11,12C1.11,18.005,5.995,22.89,12,22.89S22.89,18.005,22.89,12C22.89,5.995,18.005,1.109,12,1.109z M6.182,5.99c0.352-1.698,1.503-3.229,3.05-3.996c-0.269,0.273-0.595,0.483-0.844,0.78c-1.02,1.1-1.48,2.692-1.199,4.156 c0.355,2.235,2.455,4.06,4.732,4.028c1.765,0.079,3.485-0.937,4.348-2.468c1.848,0.063,3.645,1.017,4.7,2.548 c0.54,0.799,0.962,1.736,0.991,2.711c-0.342-1.295-1.202-2.446-2.375-3.095c-1.135-0.639-2.529-0.802-3.772-0.425 c-1.56,0.448-2.849,1.723-3.293,3.293c-0.377,1.25-0.216,2.628,0.377,3.772c-0.825,1.429-2.315,2.449-3.932,2.756 c-1.244,0.261-2.551,0.059-3.709-0.464c1.036,0.302,2.161,0.355,3.191-0.011c1.381-0.457,2.522-1.567,3.024-2.935 c0.556-1.49,0.345-3.261-0.591-4.54c-0.7-1.007-1.803-1.717-3.002-1.969c-0.38-0.068-0.764-0.098-1.148-0.134 c-0.611-1.231-0.834-2.66-0.528-3.996L6.182,5.99z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>OBS Studio</title><path d="M12,24C5.383,24,0,18.617,0,12S5.383,0,12,0s12,5.383,12,12S18.617,24,12,24z M12,1.109 C5.995,1.109,1.11,5.995,1.11,12C1.11,18.005,5.995,22.89,12,22.89S22.89,18.005,22.89,12C22.89,5.995,18.005,1.109,12,1.109z M6.182,5.99c0.352-1.698,1.503-3.229,3.05-3.996c-0.269,0.273-0.595,0.483-0.844,0.78c-1.02,1.1-1.48,2.692-1.199,4.156 c0.355,2.235,2.455,4.06,4.732,4.028c1.765,0.079,3.485-0.937,4.348-2.468c1.848,0.063,3.645,1.017,4.7,2.548 c0.54,0.799,0.962,1.736,0.991,2.711c-0.342-1.295-1.202-2.446-2.375-3.095c-1.135-0.639-2.529-0.802-3.772-0.425 c-1.56,0.448-2.849,1.723-3.293,3.293c-0.377,1.25-0.216,2.628,0.377,3.772c-0.825,1.429-2.315,2.449-3.932,2.756 c-1.244,0.261-2.551,0.059-3.709-0.464c1.036,0.302,2.161,0.355,3.191-0.011c1.381-0.457,2.522-1.567,3.024-2.935 c0.556-1.49,0.345-3.261-0.591-4.54c-0.7-1.007-1.803-1.717-3.002-1.969c-0.38-0.068-0.764-0.098-1.148-0.134 c-0.611-1.231-0.834-2.66-0.528-3.996L6.182,5.99z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ocaml.svg b/assets/lib/simple-icons/icons/ocaml.svg
index 2c3c47e7..1084bfe2 100644
--- a/assets/lib/simple-icons/icons/ocaml.svg
+++ b/assets/lib/simple-icons/icons/ocaml.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>OCaml icon</title><path d="M12.186 21.63c-.085-.169-.186-.523-.254-.675-.067-.135-.27-.506-.37-.625-.22-.253-.27-.27-.338-.607-.119-.574-.405-1.587-.76-2.295-.186-.372-.49-.676-.76-.946-.236-.236-.776-.624-.877-.607-.895.169-1.165 1.046-1.586 1.738-.237.388-.473.709-.659 1.114-.168.371-.152.793-.439 1.114a2.95 2.95 0 0 0-.624 1.097c-.034.084-.101.928-.186 1.13l1.317-.084c1.232.085.877.557 2.785.456l3.02-.101a5.372 5.372 0 0 0-.27-.709zm8.776-20.084H3.038a3.018 3.018 0 0 0-3.021 3.02v6.583c.439-.152 1.046-1.08 1.249-1.3.337-.388.405-.894.574-1.198.388-.709.455-1.215 1.333-1.215.405 0 .574.101.844.473.186.253.523.742.675 1.063.186.371.473.86.608.962.1.067.185.135.27.169.135.05.253-.051.354-.119.118-.1.169-.286.287-.556.169-.389.338-.827.439-.996.169-.27.236-.608.422-.76.27-.236.641-.253.742-.27.557-.118.81.27 1.08.507.186.168.422.489.608.91.135.338.304.66.388.845.068.185.237.49.338.86.101.321.337.574.439.743 0 0 .152.405 1.03.777a7.5 7.5 0 0 0 .81.286c.388.135.759.119 1.231.068.338 0 .524-.49.676-.878.084-.236.185-.894.236-1.08.05-.185-.085-.32.034-.49.135-.185.219-.202.286-.438.17-.523 1.114-.54 1.654-.54.456 0 .389.439 1.148.287.439-.085.86.05 1.317.185.388.102.76.22.979.473.135.169.489.996.135 1.03.033.033.067.118.118.151-.085.321-.422.085-.625.051-.253-.05-.439 0-.692.118-.439.186-1.063.169-1.451.49-.32.27-.32.86-.473 1.198 0 0-.422 1.063-1.316 1.721-.237.17-.692.574-1.671.726-.439.068-.86.068-1.317.05-.219-.016-.438-.016-.658-.016-.135 0-.574-.017-.557.034l-.05.118a.6.6 0 0 0 .033.169c.017.1.017.185.034.27 0 .185-.017.388 0 .574.017.388.169.742.186 1.147.017.439.236.912.455 1.266.085.135.203.152.254.32.067.186 0 .406.033.608.118.794.355 1.637.71 2.363v.017c.438-.067.894-.236 1.468-.32 1.063-.153 2.531-.085 3.476-.17 2.397-.219 3.697.98 5.84.49V4.567a3.043 3.043 0 0 0-3.038-3.021zm-8.945 14.177c0-.034 0-.034 0 0zM5.553 18.49c.169-.371.27-.777.405-1.148.135-.354.337-.86.692-1.046-.05-.05-.743-.068-.928-.085-.203-.017-.406-.05-.608-.084a22.96 22.96 0 0 1-1.148-.236c-.22-.051-.979-.321-1.13-.389-.389-.168-.642-.658-.929-.607-.185.034-.371.101-.49.287-.1.152-.134.422-.202.607-.084.203-.22.405-.32.608-.237.354-.625.675-.794 1.03-.033.084-.05.168-.084.253v4.067c.202.034.405.068.624.135 1.688.456 2.093.49 3.747.304l.152-.017c.118-.27.22-1.164.304-1.434.067-.22.152-.389.186-.591.033-.203 0-.405-.017-.59-.034-.49.354-.66.54-1.064z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>OCaml</title><path d="M12.178 21.637c-.085-.17-.187-.524-.255-.676-.067-.135-.27-.506-.37-.625-.22-.253-.27-.27-.338-.608-.12-.574-.405-1.588-.76-2.296-.187-.372-.49-.677-.761-.947-.236-.236-.777-.624-.878-.607-.895.169-1.166 1.046-1.587 1.739-.237.388-.473.71-.66 1.115-.167.371-.151.793-.439 1.115a2.952 2.952 0 00-.624 1.097c-.034.084-.101.929-.186 1.131l1.318-.084c1.233.085.877.557 2.787.456l3.022-.1a5.376 5.376 0 00-.27-.71zM20.96 1.539H3.023A3.02 3.02 0 000 4.56v6.587c.44-.152 1.047-1.08 1.25-1.3.337-.389.405-.895.574-1.2.389-.709.456-1.215 1.334-1.215.406 0 .575.1.845.473.186.253.523.743.675 1.064.186.371.474.86.609.962.1.068.185.136.27.17.135.05.253-.051.354-.12.118-.1.17-.286.287-.556.17-.39.339-.827.44-.997.169-.27.236-.608.422-.76.27-.236.641-.253.743-.27.557-.118.81.27 1.08.507.186.168.423.49.609.91.135.339.304.661.388.846.068.185.237.49.338.86.101.322.337.575.44.744 0 0 .152.406 1.03.778a7.505 7.505 0 00.81.286c.39.135.76.12 1.233.068.338 0 .524-.49.676-.878.084-.237.185-.895.236-1.081.05-.185-.085-.32.034-.49.135-.186.22-.203.287-.439.17-.523 1.114-.54 1.655-.54.456 0 .389.44 1.149.287.439-.085.86.05 1.318.185.388.102.76.22.98.473.134.17.489.997.134 1.031.033.033.067.118.118.151-.085.322-.422.085-.625.051-.253-.05-.44 0-.693.118-.439.187-1.063.17-1.452.49-.32.271-.32.861-.473 1.2 0 0-.422 1.063-1.317 1.722-.237.17-.692.574-1.672.726-.44.068-.86.068-1.318.05-.22-.016-.438-.016-.658-.016-.136 0-.575-.017-.558.034l-.05.119a.6.6 0 00.033.169c.017.1.017.185.034.27 0 .185-.017.388 0 .574.017.388.17.743.186 1.148.017.44.236.913.456 1.267.085.135.203.152.254.32.067.186 0 .406.033.609.118.794.355 1.638.71 2.364v.017c.439-.067.895-.236 1.47-.32 1.063-.153 2.532-.085 3.478-.17 2.399-.22 3.7.98 5.844.49V4.562a3.045 3.045 0 00-3.04-3.023zm-8.951 14.187c0-.034 0-.034 0 0zm-6.47 2.769c.17-.372.271-.778.406-1.15.135-.354.337-.86.693-1.046-.05-.05-.744-.068-.929-.085a7.406 7.406 0 01-.608-.084 22.976 22.976 0 01-1.15-.236c-.22-.051-.979-.322-1.13-.39-.39-.168-.642-.658-.93-.607-.185.034-.37.101-.49.287-.1.152-.134.423-.202.608-.084.203-.22.405-.32.608-.238.354-.626.676-.795 1.03-.033.085-.05.169-.084.254v4.07c.202.034.405.068.624.135 1.69.456 2.095.49 3.75.304l.152-.017c.118-.27.22-1.165.304-1.435.067-.22.153-.39.187-.591.033-.203 0-.406-.017-.59-.034-.491.354-.661.54-1.065z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/octanerender.svg b/assets/lib/simple-icons/icons/octanerender.svg
new file mode 100644
index 00000000..b2c12e16
--- /dev/null
+++ b/assets/lib/simple-icons/icons/octanerender.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Octane Render</title><path d="M11.71 0C8.24 3.9 6.92 6 6.64 9.14c-.01-.01-.03-.01-.04-.02-1.28-.73-2.3-2.22-2.91-3.73l-2.23.87c1.64 4.95 2.81 7.13 5.39 8.94-.02.01-.03.02-.05.03-1.27.74-3.07.89-4.68.66l-.36 2.37c5.11 1.06 7.59 1.15 10.46-.19v.06c0 1.47-.77 3.09-1.78 4.38L12.3 24c3.46-3.89 4.78-5.99 5.06-9.13.02.01.03.01.05.02 1.27.73 2.29 2.21 2.9 3.73l2.23-.87c-1.64-4.95-2.8-7.14-5.39-8.95.02-.01.03-.02.05-.03 1.27-.74 3.07-.88 4.68-.65l.36-2.38c-5.1-1.06-7.58-1.14-10.44.19v-.06c0-1.47.77-3.09 1.78-4.38L11.71 0zm.19 8.82a3.181 3.181 0 0 1 3.28 3.07 3.181 3.181 0 0 1-3.07 3.28 3.181 3.181 0 0 1-3.28-3.07 3.181 3.181 0 0 1 3.07-3.28z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/octave.svg b/assets/lib/simple-icons/icons/octave.svg
index f1ddb870..66010ce0 100644
--- a/assets/lib/simple-icons/icons/octave.svg
+++ b/assets/lib/simple-icons/icons/octave.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Octave icon</title><path d="M10.492.008C8.08-.082 5.837.723 4.21 2.492c-1.3 1.413-2.024 3.255-2.225 5.274h-.42C.702 7.766 0 8.468 0 9.33v4.74c0 .862.702 1.565 1.564 1.565h2.09a16.887 16.887 0 0 0 2.567 3.685c4.458 4.845 10.69 6.032 14.552 3.014h2.1c.577 0 1.05-.473 1.05-1.05V18.42a1.03 1.03 0 0 0-.257-.668c.857-3.431-.045-7.637-2.518-11.211.002-.017.01-.032.01-.049V4.48a.821.821 0 0 0-.816-.818H18.64C16.13 1.372 13.208.11 10.492.008zm1.748 2.178c1.78-.009 3.688.621 5.422 1.85a.796.796 0 0 0-.15.444v2.012c0 .448.368.819.816.819h2.014a.787.787 0 0 0 .392-.116c2.246 3.3 2.733 7.317 1.239 10.174H20.01c-.578 0-1.051.474-1.051 1.05v1.792c-2.989 1.3-7 .222-9.957-2.99a12.734 12.734 0 0 1-1.549-2.096c.256-.279.416-.647.416-1.055V9.33c0-.862-.702-1.564-1.564-1.564h-.409c.237-1.363.78-2.61 1.686-3.594 1.224-1.33 2.878-1.978 4.658-1.986zm6.088 2.01h2.014c.162 0 .283.122.283.284v2.012c0 .163-.12.285-.283.285h-2.014a.28.28 0 0 1-.285-.285V4.48a.28.28 0 0 1 .285-.285zM1.564 8.298h4.74c.577 0 1.032.455 1.032 1.031v4.74c0 .576-.455 1.032-1.031 1.032h-4.74A1.023 1.023 0 0 1 .532 14.07V9.33c0-.576.455-1.031 1.031-1.031zm18.446 9.603h2.863c.291 0 .52.226.52.518v2.863a.512.512 0 0 1-.52.518H20.01a.51.51 0 0 1-.518-.518V18.42a.51.51 0 0 1 .518-.518z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Octave</title><path d="M10.5.007c-2.414-.09-4.658.715-6.286 2.485C2.913 3.906 2.188 5.75 1.987 7.77h-.42C.703 7.77 0 8.473 0 9.335v4.743c0 .863.702 1.567 1.565 1.567h2.091a16.899 16.899 0 002.57 3.687c4.46 4.848 10.696 6.036 14.561 3.016h2.102c.577 0 1.05-.473 1.05-1.05V18.43a1.03 1.03 0 00-.257-.668c.858-3.433-.045-7.642-2.52-11.219.002-.017.01-.032.01-.049V4.482a.822.822 0 00-.816-.819h-1.703C16.142 1.372 13.218.11 10.5.007zm1.75 2.18c1.78-.01 3.69.62 5.425 1.85a.797.797 0 00-.15.445v2.013c0 .449.368.82.816.82h2.016a.788.788 0 00.392-.116c2.248 3.302 2.735 7.322 1.24 10.18h-1.964c-.579 0-1.052.475-1.052 1.051v1.794c-2.991 1.3-7.005.222-9.964-2.992a12.743 12.743 0 01-1.55-2.098c.256-.279.416-.647.416-1.056V9.335c0-.862-.702-1.565-1.565-1.565H5.9c.238-1.364.781-2.612 1.688-3.596 1.225-1.331 2.88-1.98 4.661-1.988zm6.091 2.01h2.016c.162 0 .283.123.283.285v2.013c0 .163-.12.285-.283.285H18.34a.28.28 0 01-.285-.285V4.482a.28.28 0 01.285-.285zM1.566 8.303h4.743c.578 0 1.033.456 1.033 1.032v4.743c0 .577-.455 1.033-1.032 1.033H1.567a1.024 1.024 0 01-1.034-1.032V9.335c0-.576.455-1.032 1.032-1.032zm18.459 9.61h2.865c.29 0 .52.226.52.518v2.865a.512.512 0 01-.52.519h-2.865a.51.51 0 01-.519-.519v-2.864a.51.51 0 01.519-.518z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/octopusdeploy.svg b/assets/lib/simple-icons/icons/octopusdeploy.svg
index c81e03e8..7d835656 100644
--- a/assets/lib/simple-icons/icons/octopusdeploy.svg
+++ b/assets/lib/simple-icons/icons/octopusdeploy.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Octopus Deploy icon</title><path d="M2.18 18.212c1.805-1.162 3.928-3.162 3.122-5.51-.437-1.282-1.046-2.379-1.127-3.762a8.478 8.478 0 0 1 .515-3.46C6.31 1.14 11.126-.917 15.481.389c4.03 1.216 6.808 5.893 5.119 9.973-.965 2.356-1.395 4.173.755 6.006.582.496 2 1.24 1.992 2.123 0 1.163-2.27-.244-2.522-.445.286.503 3.138 3.487 1.325 3.688-1.67.194-3.147-2.139-4.15-3.142-1.686-1.682-1.395 2.042-1.403 2.81 0 1.212-.868 3.676-2.41 2.072-1.27-1.321-.775-3.433-1.674-4.905-.968-1.612-2.58 1.612-2.983 2.2-.45.66-2.713 3.844-3.596 2.147-.725-1.38.434-3.538 1.007-4.785-.209.453-1.685 1.123-2.115 1.34a5.738 5.738 0 0 1-3.057.706c-2.267-.163-.527-1.368.387-1.96l.023-.005z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Octopus Deploy</title><path d="M2.18 18.212c1.805-1.162 3.928-3.162 3.122-5.51-.437-1.282-1.046-2.379-1.127-3.762a8.478 8.478 0 0 1 .515-3.46C6.31 1.14 11.126-.917 15.481.389c4.03 1.216 6.808 5.893 5.119 9.973-.965 2.356-1.395 4.173.755 6.006.582.496 2 1.24 1.992 2.123 0 1.163-2.27-.244-2.522-.445.286.503 3.138 3.487 1.325 3.688-1.67.194-3.147-2.139-4.15-3.142-1.686-1.682-1.395 2.042-1.403 2.81 0 1.212-.868 3.676-2.41 2.072-1.27-1.321-.775-3.433-1.674-4.905-.968-1.612-2.58 1.612-2.983 2.2-.45.66-2.713 3.844-3.596 2.147-.725-1.38.434-3.538 1.007-4.785-.209.453-1.685 1.123-2.115 1.34a5.738 5.738 0 0 1-3.057.706c-2.267-.163-.527-1.368.387-1.96l.023-.005z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/oculus.svg b/assets/lib/simple-icons/icons/oculus.svg
index 3acc89bd..36b89be9 100644
--- a/assets/lib/simple-icons/icons/oculus.svg
+++ b/assets/lib/simple-icons/icons/oculus.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Oculus icon</title><path d="M18.135 13.949c-.319.221-.675.355-1.057.416s-.761.049-1.142.049H8.063c-.382 0-.762.014-1.145-.049-.381-.063-.734-.195-1.057-.416-.643-.451-1.027-1.17-1.027-1.951 0-.796.387-1.515 1.029-1.95.314-.225.674-.359 1.049-.42s.75-.061 1.141-.061h7.875c.375 0 .765-.014 1.14.046s.735.194 1.051.405c.645.434 1.02 1.17 1.02 1.949 0 .78-.391 1.5-1.035 1.95l.031.032zm3.174-7.555c-.845-.678-1.812-1.146-2.865-1.398-.6-.146-1.203-.211-1.822-.23-.449-.015-.899-.01-1.364-.01H8.76c-.457 0-.915-.005-1.372.01-.618.021-1.222.083-1.825.23-1.051.254-2.025.723-2.865 1.4C.99 7.761 0 9.82 0 12c0 2.182.99 4.241 2.689 5.606.846.678 1.815 1.146 2.865 1.4.603.146 1.206.211 1.823.229.45.016.9.012 1.365.012h6.496c.449 0 .914.004 1.364-.012.615-.018 1.215-.082 1.814-.229 1.05-.256 2.011-.723 2.866-1.402C23.01 16.24 24 14.18 24 12c0-2.181-.99-4.241-2.691-5.606z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Oculus</title><path d="M18.135 13.949c-.319.221-.675.355-1.057.416s-.761.049-1.142.049H8.063c-.382 0-.762.014-1.145-.049-.381-.063-.734-.195-1.057-.416-.643-.451-1.027-1.17-1.027-1.951 0-.796.387-1.515 1.029-1.95.314-.225.674-.359 1.049-.42s.75-.061 1.141-.061h7.875c.375 0 .765-.014 1.14.046s.735.194 1.051.405c.645.434 1.02 1.17 1.02 1.949 0 .78-.391 1.5-1.035 1.95l.031.032zm3.174-7.555c-.845-.678-1.812-1.146-2.865-1.398-.6-.146-1.203-.211-1.822-.23-.449-.015-.899-.01-1.364-.01H8.76c-.457 0-.915-.005-1.372.01-.618.021-1.222.083-1.825.23-1.051.254-2.025.723-2.865 1.4C.99 7.761 0 9.82 0 12c0 2.182.99 4.241 2.689 5.606.846.678 1.815 1.146 2.865 1.4.603.146 1.206.211 1.823.229.45.016.9.012 1.365.012h6.496c.449 0 .914.004 1.364-.012.615-.018 1.215-.082 1.814-.229 1.05-.256 2.011-.723 2.866-1.402C23.01 16.24 24 14.18 24 12c0-2.181-.99-4.241-2.691-5.606z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/odnoklassniki.svg b/assets/lib/simple-icons/icons/odnoklassniki.svg
index 020c6bed..836c01a0 100644
--- a/assets/lib/simple-icons/icons/odnoklassniki.svg
+++ b/assets/lib/simple-icons/icons/odnoklassniki.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Odnoklassniki icon</title><path d="M14.505 17.44c1.275-.29 2.493-.794 3.6-1.49.834-.558 1.058-1.686.5-2.52-.536-.802-1.604-1.044-2.435-.553-2.55 1.595-5.79 1.595-8.34 0-.847-.534-1.965-.28-2.5.565 0 .002 0 .004-.002.005-.534.847-.28 1.966.567 2.5l.002.002c1.105.695 2.322 1.2 3.596 1.488l-3.465 3.465c-.707.695-.72 1.83-.028 2.537l.03.03c.344.354.81.53 1.274.53.465 0 .93-.176 1.275-.53L12 20.065l3.404 3.406c.72.695 1.87.676 2.566-.045.678-.703.678-1.818 0-2.52l-3.465-3.466zM12 12.388c3.42-.004 6.19-2.774 6.195-6.193C18.195 2.78 15.415 0 12 0S5.805 2.78 5.805 6.197c.005 3.42 2.776 6.19 6.195 6.192zm0-8.757c1.416.002 2.563 1.15 2.564 2.565 0 1.416-1.148 2.563-2.564 2.565-1.415-.002-2.562-1.148-2.565-2.564C9.437 4.78 10.585 3.633 12 3.63z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Odnoklassniki</title><path d="M12 0a6.2 6.2 0 0 0-6.194 6.195 6.2 6.2 0 0 0 6.195 6.192 6.2 6.2 0 0 0 6.193-6.192A6.2 6.2 0 0 0 12.001 0zm0 3.63a2.567 2.567 0 0 1 2.565 2.565 2.568 2.568 0 0 1-2.564 2.564 2.568 2.568 0 0 1-2.565-2.564 2.567 2.567 0 0 1 2.565-2.564zM6.807 12.6a1.814 1.814 0 0 0-.91 3.35 11.611 11.611 0 0 0 3.597 1.49l-3.462 3.463a1.815 1.815 0 0 0 2.567 2.566L12 20.066l3.405 3.403a1.813 1.813 0 0 0 2.564 0c.71-.709.71-1.858 0-2.566l-3.462-3.462a11.593 11.593 0 0 0 3.596-1.49 1.814 1.814 0 1 0-1.932-3.073 7.867 7.867 0 0 1-8.34 0c-.318-.2-.674-.29-1.024-.278z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/odysee.svg b/assets/lib/simple-icons/icons/odysee.svg
new file mode 100644
index 00000000..256f098b
--- /dev/null
+++ b/assets/lib/simple-icons/icons/odysee.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Odysee</title><path d="M11.965 0A12 12 0 0 0 0 12a12 12 0 0 0 12 12 12 12 0 0 0 12-12 12 12 0 0 0-3.209-8.167 7.272 7.272 0 0 1-.799 3.218c-.548.957-2.281 2.77-3.264 3.699a.723.723 0 0 0 .056 1.104c.996.74 2.658 2.151 2.788 3.422.176 1.835 1.6 4.02 1.675 4.159a.67.67 0 0 1-.105.327 12.067 12.067 0 0 1-2.03 1.898 2.435 2.435 0 0 1-.807.126c-1.944-.04-1.526-1.866-1.712-2.905s-.78-3.085-2.716-2.788c0 0 .484 4.243-1.489 5.546s-5.843 2.27-6.55-.408 2.46-2.384 2.684-2.384c.223 0 2.233-.632 1.267-2.53-.967-1.898-2.01-3.5-2.01-3.5a11.37 11.37 0 0 0-2.735 1.285 5.42 5.42 0 0 0-1.061.82c-1.065 1.104-2.19 1.713-2.954 1.358a1.368 1.368 0 0 1-.32-.221A11.926 11.926 0 0 1 .1 13.503c.43-.641 2.082-2.038 3.696-2.906 1.304-.702 2.737-.988 3.118-1.355-.671-2.235-1.882-5.703.832-7.33C9.881.634 12.69-.142 13.77 2.958c1.08 3.1.802 3.796 1.267 3.796.465 0 1.608.223 2.09-1.75.356-1.445.574-2.685 1.379-3.087A12 12 0 0 0 12 0a12 12 0 0 0-.035 0zm-.498 2.125c-.353-.019-.78.05-1.303.224 0 0-1.895.52-1.749 2.53.13 1.777 1.08 2.753 3.053 2.01 1.972-.737 2.31-1.264 1.824-2.753-.364-1.117-.765-1.956-1.825-2.011zm.48.726a.249.249 0 0 1 .183.07 1.58 1.58 0 0 1 .232.346.253.253 0 0 1-.197.37.253.253 0 0 1-.233-.131 1.559 1.559 0 0 0-.148-.232.256.256 0 0 1 0-.353.249.249 0 0 1 .163-.07zm3.529.152a.22.22 0 0 1 .192.103.22.22 0 0 1-.07.305.22.22 0 1 1-.122-.408zM12.609 4.27a.253.253 0 0 1 .227.133 1.5 1.5 0 0 1 .102.982.253.253 0 0 1-.246.205h-.049a.253.253 0 0 1-.2-.295 1.013 1.013 0 0 0-.071-.697.253.253 0 0 1 .237-.328zm-8.035.552a.12.12 0 0 1 .029.003.12.12 0 1 1-.147.091.12.12 0 0 1 .118-.094zm15.77 3.419.273.539.593.12-.539.275-.123.592-.272-.539-.592-.123.538-.272zm-17.767.535a.22.22 0 0 1 .193.104.22.22 0 0 1-.07.304.22.22 0 1 1-.123-.408zm16.004 2.79a.258.258 0 0 1 .062.007.258.258 0 1 1-.31.195.258.258 0 0 1 .248-.202zM4.914 16.115a.17.17 0 0 1 .165.14.17.17 0 0 1-.137.197.17.17 0 1 1-.028-.337zm9.769 4.094a.2.2 0 0 1 .036.004.2.2 0 1 1-.233.15.2.2 0 0 1 .197-.154z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ohdear.svg b/assets/lib/simple-icons/icons/ohdear.svg
new file mode 100644
index 00000000..7513c83a
--- /dev/null
+++ b/assets/lib/simple-icons/icons/ohdear.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Oh Dear</title><path d="m10.811 9.3333c2.5345 0 4.5966 1.9939 4.5966 4.4444 0 2.4506-2.0621 4.4444-4.5966 4.4444-2.2139 0-4.0673-1.5215-4.5007-3.5397h-6.3101v-1.7972h6.3072c0.42873-2.0242 2.285-3.5519 4.5036-3.5519zm7.3308-3.5556v3.8766c0.60102-0.38439 1.3334-0.586 2.1395-0.586 1.7157 0 3.7189 1.1521 3.7189 4.3993v4.4583h-1.8453v-4.4583c0-1.0234-0.25022-1.7562-0.74385-2.1787-0.38875-0.33283-0.84479-0.40252-1.1591-0.40252-0.96256 0-2.1102 0.44768-2.1102 2.5812v4.4583h-1.8453v-12.148zm-7.3308 5.3741c-1.4978 0-2.7159 1.178-2.7159 2.6259s1.218 2.6259 2.7159 2.6259c1.4975 0 2.7155-1.178 2.7155-2.6259s-1.218-2.6259-2.7155-2.6259z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/okcupid.svg b/assets/lib/simple-icons/icons/okcupid.svg
new file mode 100644
index 00000000..ab50caf4
--- /dev/null
+++ b/assets/lib/simple-icons/icons/okcupid.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>okcupid</title><path d="M11.287 5.336c-1.656 0-2.609.886-2.831 2.632l-.106.804a.275.275 0 01-.382.218c-.67-.294-1.472-.45-2.397-.45C2.24 8.54 0 10.794 0 14.146 0 16.933 1.738 18.6 4.65 18.6c1.213 0 2.275-.27 3.142-.766a.268.268 0 01.323.045c.452.44 1.108.688 1.906.688.74 0 1.281-.072 1.702-.228l.489-.18a.28.28 0 01.248.03c.371.234.84.378 1.456.378 1.138 0 1.927-.218 2.474-.535a.275.275 0 01.272-.005c.19.101.394.188.61.264.623.244 1.355.374 2.198.374 3.635 0 4.38-1.791 4.38-2.838 0-.515-.127-1.04-.473-1.435-.01-.013-.027-.023-.038-.04-.387-.539-1.147-.349-1.324-.701-.09-.181-.016-.494.59-.466 1.09.05 1.395-1.399 1.395-2.172 0-.954-.449-2.556-3.455-2.556-1.144 0-2.151.247-2.993.697-.08.039-.162.076-.241.116a.268.268 0 01-.298-.034c-.435-.379-1.115-.661-2.177-.661-.225 0-.432.012-.625.039a.275.275 0 01-.312-.31l.118-.888.097-.727a.277.277 0 00-.106-.257l-.582-.447c-.735-.563-1.656-.648-2.14-.648zm.013 1.545c.46 0 .92.115 1.2.33l-.773 5.784c1.956-2.712 2.136-2.876 3.122-2.876 1.036 0 1.397.296 1.397.887 0 .345-.098.575-.263.756-.246-.016-.493-.016-.69-.016-.345 0-.542.082-1.512 1.413L14.9 15.18c.082.132.164.247.345.247.148 0 .395-.017.592-.066.164.115.23.346.23.559 0 .772-.773 1.101-2.137 1.101-.64 0-.87-.23-1.216-.97L11.612 13.8l-.411 3.09c-.312.115-.821.131-1.167.131-.723 0-1.051-.295-1.051-.92 0-.181.032-.493.098-.937l.92-7c.132-1.036.477-1.283 1.299-1.283zm-5.716 3.204c2.383 0 3.221 1.184 3.221 2.943 0 2.482-1.512 4.026-4.141 4.026-1.874 0-3.107-.822-3.107-2.909 0-2.432 1.48-4.06 4.027-4.06zm14.718.017c1.561 0 1.939.477 1.939 1.101 0 .345-.115.543-.329.707-.377-.115-.772-.18-1.38-.18-1.184 0-1.857.69-1.857 2.169 0 1.084.328 1.479 1.199 1.479.493 0 1.068-.116 1.693-.345.23.115.345.443.345.69 0 .838-.756 1.331-2.613 1.331-1.988 0-3.057-.805-3.057-2.893 0-2.596 1.578-4.059 4.06-4.059zM5.452 11.68c-1.002 0-1.56 1.019-1.56 2.383 0 .986.279 1.43 1.084 1.43.903 0 1.594-.872 1.594-2.367 0-.969-.263-1.446-1.117-1.446z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/okta.svg b/assets/lib/simple-icons/icons/okta.svg
new file mode 100644
index 00000000..1b6258e0
--- /dev/null
+++ b/assets/lib/simple-icons/icons/okta.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Okta</title><path d="M12 0C5.389 0 0 5.35 0 12s5.35 12 12 12 12-5.35 12-12S18.611 0 12 0zm0 18c-3.325 0-6-2.675-6-6s2.675-6 6-6 6 2.675 6 6-2.675 6-6 6z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/oneplus.svg b/assets/lib/simple-icons/icons/oneplus.svg
index 94a9a00d..11c3131a 100644
--- a/assets/lib/simple-icons/icons/oneplus.svg
+++ b/assets/lib/simple-icons/icons/oneplus.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>OnePlus icon</title><path d="M0 3.74V24h20.26V12.428h-2.256v9.317H2.254V5.995h9.318V3.742zM18.004 0v3.74h-3.758v2.256h3.758v3.758h2.255V5.996H24V3.74h-3.758V0zm-6.45 18.756V8.862H9.562c0 .682-.228 1.189-.577 1.504-.367.297-.91.437-1.556.437h-.245v1.625h2.133v6.31h2.237z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>OnePlus</title><path d="M0 3.74V24h20.26V12.428h-2.256v9.317H2.254V5.995h9.318V3.742zM18.004 0v3.74h-3.758v2.256h3.758v3.758h2.255V5.996H24V3.74h-3.758V0zm-6.45 18.756V8.862H9.562c0 .682-.228 1.189-.577 1.504-.367.297-.91.437-1.556.437h-.245v1.625h2.133v6.31h2.237z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/onlyfans.svg b/assets/lib/simple-icons/icons/onlyfans.svg
new file mode 100644
index 00000000..a610c5d0
--- /dev/null
+++ b/assets/lib/simple-icons/icons/onlyfans.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>OnlyFans</title><path d="M12 0C5.373 0 0 5.373 0 12s5.372 12 12 12c6.627 0 12-5.373 12-12 0-6.628-5.373-12-12-12zm-.012 1.256c5.942-.007 10.755 4.805 10.755 10.741S17.93 22.746 11.995 22.745c-5.936 0-10.749-4.812-10.749-10.748 0-5.927 4.799-10.735 10.742-10.741zm-.32 4.567a4.496 4.496 0 0 0-3.164 1.299 4.338 4.338 0 0 0-1.317 3.117v.979l-.556 1.003v1.444a4.842 4.842 0 0 0 1.465 3.462 5.031 5.031 0 0 0 3.53 1.44h.896c1.316 0 2.58-.517 3.52-1.44a4.834 4.834 0 0 0 1.467-3.462V12.22l-.55-1.003v-.98a4.35 4.35 0 0 0-1.32-3.116 4.496 4.496 0 0 0-3.166-1.299zm0 1.97h.805a2.496 2.496 0 0 1 1.75.724c.465.452.728 1.073.73 1.722l.003 1.01h-5.77v-1.01c.002-.649.265-1.27.73-1.722a2.499 2.499 0 0 1 1.751-.725zm.464 5.196h.03c1.534-.023 1.95 2.104.519 2.66h-.086v1.156a.502.502 0 0 1-.232.426h-.511a.52.52 0 0 1-.24-.434V15.65c-1.43-.556-1.015-2.683.52-2.66Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/onlyoffice.svg b/assets/lib/simple-icons/icons/onlyoffice.svg
new file mode 100644
index 00000000..ffbf41c2
--- /dev/null
+++ b/assets/lib/simple-icons/icons/onlyoffice.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ONLYOFFICE</title><path d="M10.501 11.724.631 7.16c-.841-.399-.841-1.014 0-1.376l9.87-4.563c.841-.399 2.194-.399 2.998 0l9.87 4.563c.841.398.841 1.014 0 1.376l-9.87 4.563c-.841.362-2.194.362-2.998 0zm0 5.468-9.87-4.563c-.841-.399-.841-1.014 0-1.376l3.363-1.558 6.507 3.006c.841.398 2.194.398 2.998 0l6.507-3.006 3.363 1.558c.841.398.841 1.014 0 1.376l-9.87 4.563c-.841.398-2.194.398-2.998 0zm0 0.0001-9.87-4.563c-.841-.399-.841-1.014 0-1.376l3.363-1.558 6.507 3.006c.841.398 2.194.398 2.998 0l6.507-3.006 3.363 1.558c.841.398.841 1.014 0 1.376l-9.87 4.563c-.841.398-2.194.398-2.998 0zm0 5.613-9.87-4.563c-.841-.398-.841-1.014 0-1.376l3.436-1.593 6.398 2.97c.84.398 2.193.398 2.997 0l6.398-2.97 3.436 1.593c.841.399.841 1.014 0 1.376l-9.87 4.563c-.768.362-2.12.362-2.925 0z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/onnx.svg b/assets/lib/simple-icons/icons/onnx.svg
new file mode 100644
index 00000000..12c07089
--- /dev/null
+++ b/assets/lib/simple-icons/icons/onnx.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ONNX</title><path d="M23.0325 11.2963c-.0503 0-.1006 0-.1508.0126l-4.021-7.4387c.0754-.1383.1131-.289.1131-.4524 0-.5403-.4398-.9675-.9675-.9675-.2765 0-.5278.113-.7037.3015L9.286 1.156C9.2357.6785 8.821.3016 8.3184.3016c-.5277 0-.9675.4398-.9675.9675 0 .1634.0377.3141.113.4524l-6.245 8.9591c-.0753-.0251-.1633-.0377-.2513-.0377-.5403 0-.9675.4398-.9675.9676 0 .5403.4398.9675.9675.9675h.0377l3.3676 8.3309c-.0503.1257-.088.2639-.088.402 0 .5404.4398.9676.9676.9676.2764 0 .5277-.113.7036-.3015l10.1152.9926c.1005.4273.49.7288.9424.7288.5403 0 .9676-.4398.9676-.9675 0-.2388-.088-.465-.2262-.6283l5.1141-8.8712c.0503.0126.1005.0126.1634.0126.5403 0 .9675-.4398.9675-.9676 0-.5403-.4272-.98-.9675-.98zM17.2272 4.021c.1131.1508.2765.264.4524.3267l-1.533 11.5728c-.1005.0252-.1885.0503-.2764.1005L7.4513 8.708c.0251-.0754.0377-.1634.0377-.2514 0-.0628-.0126-.1256-.0126-.1884zm4.8754 8.5068l-5.177 3.556a1.105 1.105 0 0 0-.1256-.0753L18.3455 4.335h.0126l3.9456 7.288c-.1508.1759-.2388.3895-.2388.6408 0 .1005.0126.1885.0377.2638zM6.3832 7.5016c-.4649.0754-.8293.4775-.8293.955v.0628l-3.4555 2.0481 5.378-7.7026zm.3519 1.91c.1256-.0252.2513-.088.3518-.1634l8.356 7.2628c-.0377.113-.0628.2262-.0628.3518v.0503l-9.311 3.845c-.1382-.201-.3518-.3518-.6031-.402zm8.8963 8.1172c.1257.1382.3016.2513.5026.289l.465 4.046c-.201.1006-.3519.264-.4524.4524l-9.8136-.955zm1.1435.2136c.3267-.1633.5403-.49.5403-.867 0-.088-.0126-.1634-.0377-.2513l4.7372-3.2545-4.8 8.331zm.2513-14.3497l-9.889 4.31-.1131-.0755 1.2565-5.3906h.0377c.3393 0 .6409-.1759.8168-.4397l7.891 1.5706zM1.935 11.6105c0-.0629-.0126-.1257-.0126-.1885l3.9079-2.2995c.0754.0754.1633.1508.2638.201L4.8252 20.243l-3.2043-7.9036c.1885-.176.3142-.4398.3142-.7288Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/onstar.svg b/assets/lib/simple-icons/icons/onstar.svg
index 25aadd81..98b4c08c 100644
--- a/assets/lib/simple-icons/icons/onstar.svg
+++ b/assets/lib/simple-icons/icons/onstar.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>OnStar icon</title><path d="M12 0C5.372 0 0 5.372 0 12s5.372 12 12 12 12-5.372 12-12S18.628 0 12 0zm-.049.763c6.233 0 11.304 5.066 11.304 11.294 0 6.229-5.07 11.295-11.304 11.295-6.233 0-11.304-5.066-11.304-11.295C.647 5.83 5.718.763 11.951.763zm0 .287C5.877 1.05.936 5.988.936 12.057c0 6.07 4.941 11.008 11.015 11.008 6.074 0 11.016-4.938 11.016-11.008 0-6.069-4.942-11.007-11.016-11.007zm4.73 3.25l.582 1.7 1.8.064-1.44 1.078.495 1.729-1.472-1.034-1.494 1.004.53-1.717-1.418-1.108 1.8-.028zM7.99 7.11c2.892 0 4.967 2.155 4.967 4.82v.027c0 2.664-2.102 4.847-4.994 4.847s-4.967-2.156-4.967-4.82v-.027c0-2.665 2.102-4.848 4.994-4.848zm-.027 1.9c-1.66 0-2.812 1.313-2.812 2.92v.027c0 1.606 1.179 2.945 2.839 2.945s2.812-1.312 2.812-2.918v-.027c0-1.607-1.178-2.946-2.839-2.946zm9.976.322c1.54 0 2.437 1.018 2.437 2.665v4.646h-2.035V12.64c0-.964-.455-1.46-1.232-1.46-.776 0-1.272.496-1.272 1.46v4.003h-2.035V9.466h2.035v1.018c.469-.603 1.071-1.152 2.102-1.152Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>OnStar</title><path d="M12 0C5.372 0 0 5.372 0 12s5.372 12 12 12 12-5.372 12-12S18.628 0 12 0zm-.049.763c6.233 0 11.304 5.066 11.304 11.294 0 6.229-5.07 11.295-11.304 11.295-6.233 0-11.304-5.066-11.304-11.295C.647 5.83 5.718.763 11.951.763zm0 .287C5.877 1.05.936 5.988.936 12.057c0 6.07 4.941 11.008 11.015 11.008 6.074 0 11.016-4.938 11.016-11.008 0-6.069-4.942-11.007-11.016-11.007zm4.73 3.25l.582 1.7 1.8.064-1.44 1.078.495 1.729-1.472-1.034-1.494 1.004.53-1.717-1.418-1.108 1.8-.028zM7.99 7.11c2.892 0 4.967 2.155 4.967 4.82v.027c0 2.664-2.102 4.847-4.994 4.847s-4.967-2.156-4.967-4.82v-.027c0-2.665 2.102-4.848 4.994-4.848zm-.027 1.9c-1.66 0-2.812 1.313-2.812 2.92v.027c0 1.606 1.179 2.945 2.839 2.945s2.812-1.312 2.812-2.918v-.027c0-1.607-1.178-2.946-2.839-2.946zm9.976.322c1.54 0 2.437 1.018 2.437 2.665v4.646h-2.035V12.64c0-.964-.455-1.46-1.232-1.46-.776 0-1.272.496-1.272 1.46v4.003h-2.035V9.466h2.035v1.018c.469-.603 1.071-1.152 2.102-1.152Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/opel.svg b/assets/lib/simple-icons/icons/opel.svg
index 3f0721b4..8752a963 100644
--- a/assets/lib/simple-icons/icons/opel.svg
+++ b/assets/lib/simple-icons/icons/opel.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Opel icon</title><path d="M23.82,12.921L23.82,12.921l-2.256-0.143c0.021-0.256,0.031-0.516,0.031-0.777c0-5.302-4.298-9.6-9.6-9.6 c-4.588,0-8.423,3.218-9.373,7.52H0.851c-0.116,0-0.22,0.055-0.285,0.141l-0.527,0.728C0.014,10.819,0,10.857,0,10.899 c0,0.1,0.08,0.18,0.18,0.18l2.247,0.14C2.406,11.477,2.395,11.737,2.395,12c0,5.302,4.298,9.6,9.6,9.6 c4.588,0,8.423-3.218,9.374-7.52h1.78c0.116,0,0.22-0.055,0.285-0.141l0.527-0.728C23.986,13.181,24,13.143,24,13.101 C24,13.001,23.919,12.921,23.82,12.921z M11.995,20.245L11.995,20.245c-4.507,0-8.245-3.738-8.245-8.245 c0-0.234,0.011-0.467,0.031-0.696l6.899,0.43l-2.984,2.061c-0.04,0.028-0.067,0.075-0.067,0.128c0,0.086,0.07,0.156,0.156,0.156 h12.183C19.031,17.601,15.785,20.245,11.995,20.245z M20.21,12.692l-6.892-0.438l2.991-2.049c0.041-0.028,0.067-0.075,0.067-0.128 c0-0.086-0.07-0.156-0.156-0.156H4.022c0.937-3.521,4.183-6.165,7.973-6.165c0,0,0,0,0,0h0c0,0,0,0,0,0 c4.507,0,8.245,3.738,8.245,8.245C20.24,12.233,20.23,12.463,20.21,12.692z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Opel</title><path d="M23.7911 12.8922c-.124-.008-2.515-.16-2.529-.162.021-.257.033-.514.033-.771-.034-5.1489-4.2349-9.2969-9.3849-9.2629-4.306.028-8.0326 3.0015-9.0159 7.1939H.8373a.36.36 0 0 0-.285.139l-.514.73c-.094.113-.004.297.144.29.144.009 2.485.153 2.529.157a9.4481 9.4481 0 0 0-.033.771c-.001 5.15 4.1731 9.3256 9.3231 9.3266 4.3492.0008 8.1214-3.0051 9.0916-7.2446h2.056a.3574.3574 0 0 0 .285-.141l.529-.727c.0971-.126-.0099-.329-.1719-.299zM11.9683 3.7254c4.552.0044 8.2414 3.6929 8.2469 8.2449 0 .234-.013.465-.031.694l-6.8929-.437 2.992-2.056c.124-.079.061-.288-.087-.283H3.9914c.9507-3.6276 4.2268-6.1587 7.9769-6.1629zm0 16.4917c-4.5518-.0061-8.2399-3.6951-8.2449-8.2469 0-.234 0-.465.031-.694l6.8949.429-2.986 2.056c-.124.082-.06.29.09.285h12.1948c-.9491 3.631-4.2268 6.1657-7.9798 6.1709z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/openaccess.svg b/assets/lib/simple-icons/icons/openaccess.svg
index 3ce92476..17c94bb9 100644
--- a/assets/lib/simple-icons/icons/openaccess.svg
+++ b/assets/lib/simple-icons/icons/openaccess.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Open Access icon</title><path d="M18.972 13.487a7.56 7.56 0 0 0-.54-1.043V6.416a6.376 6.376 0 0 0-1.88-4.536A6.375 6.375 0 0 0 12.016 0h-.002a6.375 6.375 0 0 0-4.536 1.878 6.376 6.376 0 0 0-1.88 4.538v.877h2.57v-.877c0-1.027.4-1.993 1.127-2.72a3.822 3.822 0 0 1 2.72-1.126 3.852 3.852 0 0 1 3.847 3.846v3.508A7.52 7.52 0 0 0 12 8.866a7.54 7.54 0 0 0-5.35 2.216 7.54 7.54 0 0 0-2.217 5.35 7.54 7.54 0 0 0 2.216 5.35A7.54 7.54 0 0 0 12 24.002a7.54 7.54 0 0 0 5.35-2.216 7.54 7.54 0 0 0 2.217-5.351c0-1.021-.2-2.012-.595-2.946zM12 21.43c-2.755 0-4.997-2.242-4.997-4.997S9.245 11.436 12 11.436s4.997 2.241 4.997 4.997S14.755 21.43 12 21.43zm2.145-4.974a2.12 2.12 0 1 1-4.24 0 2.12 2.12 0 0 1 4.24 0z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Open Access</title><path d="M18.971 13.486a7.56 7.56 0 00-.54-1.043V6.415a6.375 6.375 0 00-1.88-4.535A6.374 6.374 0 0012.017 0h-.002a6.374 6.374 0 00-4.536 1.878 6.375 6.375 0 00-1.88 4.537v.877h2.57v-.877c0-1.026.4-1.992 1.127-2.72a3.822 3.822 0 012.72-1.125 3.852 3.852 0 013.847 3.845v3.508A7.52 7.52 0 0012 8.865a7.54 7.54 0 00-5.35 2.216 7.54 7.54 0 00-2.216 5.35 7.54 7.54 0 002.215 5.35A7.54 7.54 0 0012 24a7.54 7.54 0 005.35-2.216 7.54 7.54 0 002.216-5.35c0-1.021-.2-2.012-.595-2.946zM12 21.428a5.003 5.003 0 01-4.997-4.996A5.003 5.003 0 0112 11.435a5.002 5.002 0 014.997 4.997A5.002 5.002 0 0112 21.428zm2.145-4.973a2.12 2.12 0 11-4.24 0 2.12 2.12 0 014.24 0z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/openai.svg b/assets/lib/simple-icons/icons/openai.svg
new file mode 100644
index 00000000..ebbdab0e
--- /dev/null
+++ b/assets/lib/simple-icons/icons/openai.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>OpenAI</title><path d="M22.2819 9.8211a5.9847 5.9847 0 0 0-.5157-4.9108 6.0462 6.0462 0 0 0-6.5098-2.9A6.0651 6.0651 0 0 0 4.9807 4.1818a5.9847 5.9847 0 0 0-3.9977 2.9 6.0462 6.0462 0 0 0 .7427 7.0966 5.98 5.98 0 0 0 .511 4.9107 6.051 6.051 0 0 0 6.5146 2.9001A5.9847 5.9847 0 0 0 13.2599 24a6.0557 6.0557 0 0 0 5.7718-4.2058 5.9894 5.9894 0 0 0 3.9977-2.9001 6.0557 6.0557 0 0 0-.7475-7.0729zm-9.022 12.6081a4.4755 4.4755 0 0 1-2.8764-1.0408l.1419-.0804 4.7783-2.7582a.7948.7948 0 0 0 .3927-.6813v-6.7369l2.02 1.1686a.071.071 0 0 1 .038.052v5.5826a4.504 4.504 0 0 1-4.4945 4.4944zm-9.6607-4.1254a4.4708 4.4708 0 0 1-.5346-3.0137l.142.0852 4.783 2.7582a.7712.7712 0 0 0 .7806 0l5.8428-3.3685v2.3324a.0804.0804 0 0 1-.0332.0615L9.74 19.9502a4.4992 4.4992 0 0 1-6.1408-1.6464zM2.3408 7.8956a4.485 4.485 0 0 1 2.3655-1.9728V11.6a.7664.7664 0 0 0 .3879.6765l5.8144 3.3543-2.0201 1.1685a.0757.0757 0 0 1-.071 0l-4.8303-2.7865A4.504 4.504 0 0 1 2.3408 7.872zm16.5963 3.8558L13.1038 8.364 15.1192 7.2a.0757.0757 0 0 1 .071 0l4.8303 2.7913a4.4944 4.4944 0 0 1-.6765 8.1042v-5.6772a.79.79 0 0 0-.407-.667zm2.0107-3.0231l-.142-.0852-4.7735-2.7818a.7759.7759 0 0 0-.7854 0L9.409 9.2297V6.8974a.0662.0662 0 0 1 .0284-.0615l4.8303-2.7866a4.4992 4.4992 0 0 1 6.6802 4.66zM8.3065 12.863l-2.02-1.1638a.0804.0804 0 0 1-.038-.0567V6.0742a4.4992 4.4992 0 0 1 7.3757-3.4537l-.142.0805L8.704 5.459a.7948.7948 0 0 0-.3927.6813zm1.0976-2.3654l2.602-1.4998 2.6069 1.4998v2.9994l-2.5974 1.4997-2.6067-1.4997Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/openaigym.svg b/assets/lib/simple-icons/icons/openaigym.svg
new file mode 100644
index 00000000..d9b3ad20
--- /dev/null
+++ b/assets/lib/simple-icons/icons/openaigym.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>OpenAI Gym</title><path d="M24 9.736V9.72c0-.018-.009-.035-.009-.053-.008-.017-.008-.034-.017-.052 0-.009-.009-.009-.009-.017a.19.19 0 0 0-.026-.044v-.009c-.009-.017-.026-.026-.044-.043l-.008-.009c-.018-.009-.035-.026-.053-.035l-3.72-2.143V3.02c0-.018 0-.044-.008-.061V2.94a.124.124 0 0 0-.017-.052V2.88c-.01-.017-.018-.035-.027-.043 0-.01-.008-.01-.008-.01a.19.19 0 0 0-.035-.043c-.018-.008-.026-.026-.044-.034-.008 0-.008-.01-.017-.01l-.009-.008L16.055.476a.338.338 0 0 0-.34 0l-3.72 2.143L8.286.476a.338.338 0 0 0-.34 0L4.06 2.723c-.01 0-.01.01-.01.01-.008 0-.008.008-.017.008-.017.009-.026.026-.043.035a.153.153 0 0 0-.035.043l-.009.009c-.008.017-.017.026-.026.044v.008c-.009.018-.009.035-.017.052v.018c0 .017-.009.043-.009.06v4.296L.166 9.457c-.018.01-.035.026-.053.035l-.008.009-.044.043v.01c-.009.017-.017.025-.026.043 0 .008-.009.008-.009.017a.124.124 0 0 0-.017.052C0 9.684 0 9.701 0 9.72v4.521a.34.34 0 0 0 .166.296l3.72 2.143v4.295a.34.34 0 0 0 .165.296l3.885 2.248c.009.008.018.008.026.017 0 0 .009 0 .009.009.009 0 .017.008.026.008.009 0 .009 0 .018.01.008 0 .017 0 .026.008h.061a.35.35 0 0 0 .13-.026c.018-.009.026-.009.044-.018l3.72-2.143 3.72 2.143c.017.009.026.018.043.018a.35.35 0 0 0 .13.026h.062c.008 0 .017 0 .026-.009.008 0 .008 0 .017-.009.009 0 .018-.008.026-.008.009 0 .009 0 .009-.009.009 0 .017-.009.026-.017l3.885-2.248a.34.34 0 0 0 .166-.296V16.68l3.72-2.143a.34.34 0 0 0 .165-.296V9.754c.009-.01.009-.018.009-.018zM12.17 20.67s-.009 0-.009-.009c-.009-.008-.017-.008-.035-.017-.008 0-.017-.009-.026-.009-.009 0-.017-.009-.035-.009-.008 0-.026-.008-.035-.008h-.069c-.009 0-.026 0-.035.008-.009 0-.017 0-.035.01-.009 0-.017.008-.026.008-.009.009-.017.009-.035.017 0 0-.009 0-.009.009l-3.37 1.951v-3.702l3.545-2.047 3.545 2.047v3.702zM4.4 7.793c.017-.017.025-.026.034-.026.009-.008.018-.008.026-.017l.026-.026c.01-.009.018-.018.018-.026.009-.01.009-.018.017-.026.009-.01.009-.018.018-.027.008-.008.008-.017.008-.034 0-.01.01-.018.01-.035 0-.009 0-.018.008-.035V3.603L7.77 5.46v4.094L4.225 11.6 1.02 9.745zm7.596-4.381l3.545 2.047V9.16l-3.38-1.951s-.009 0-.009-.009c-.008-.009-.017-.009-.034-.017-.01 0-.018-.009-.027-.009-.008 0-.017-.009-.034-.009-.01 0-.018-.008-.035-.008h-.07c-.009 0-.026 0-.035.008-.008 0-.017 0-.035.009-.008 0-.017.009-.026.009-.008.008-.026.008-.035.017 0 0-.008 0-.008.009L8.45 9.16v-3.7zm0 12.675L8.45 14.04V9.945l3.546-2.047 3.545 2.047v4.095zm-7.431-3.903l3.206-1.856v3.947c0 .008 0 .017.008.035 0 .008.009.017.009.034 0 .01.009.018.009.035.008.009.008.018.017.026.009.01.009.018.018.027.008.008.017.017.017.026l.026.026c.009.009.018.017.026.017.009.009.018.018.026.018l.01.008 3.38 1.952-3.207 1.855-3.545-2.047zm11.325 6.15l-3.206-1.855 3.38-1.952.009-.008c.008-.009.017-.018.026-.018.008-.008.017-.008.026-.017l.026-.026c.009-.009.017-.018.017-.026.01-.01.01-.018.018-.027.009-.008.009-.017.017-.026.009-.008.009-.017.009-.035 0-.008.009-.017.009-.034 0-.01 0-.018.008-.035v-3.947l3.206 1.856v4.094zm3.885-6.734l-3.546-2.047V5.46l3.206-1.856V7.55c0 .008 0 .017.009.034 0 .01.009.018.009.035 0 .009.008.018.008.035.01.009.01.018.018.026.008.009.008.018.017.026.009.01.018.018.018.026.008.01.017.018.026.027.008.008.017.017.026.017.009.009.017.017.026.017l.009.01 3.38 1.95zM15.89 1.164l3.205 1.856-3.205 1.855-3.206-1.855zm-7.78 0l3.206 1.856L8.11 4.866 4.905 3.02zM.68 10.337l3.205 1.856v3.702L.68 14.04zM7.77 22.62l-3.205-1.855v-3.703l3.206 1.856zm11.665-1.846l-3.206 1.855v-3.702l3.206-1.856zm3.886-6.734l-3.206 1.855v-3.702l3.206-1.856Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/openapiinitiative.svg b/assets/lib/simple-icons/icons/openapiinitiative.svg
index bfad2e19..89206718 100644
--- a/assets/lib/simple-icons/icons/openapiinitiative.svg
+++ b/assets/lib/simple-icons/icons/openapiinitiative.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>OpenAPI Initiative icon</title><path d="M21.039 0a2.959 2.959 0 00-2.65 4.274l-6.447 6.447a2.96 2.96 0 101.335 1.336l6.447-6.447A2.959 2.959 0 1021.04 0zM10.628 2.745c-.072 0-.143.003-.214.004-.072.002-.143.002-.215.005-.447.018-.893.064-1.335.138l-.03.005-.185.033-.105.02a7.718 7.718 0 00-.289.062l-.032.008a10.69 10.69 0 00-2.55.95l-.155.089c-.063.034-.125.07-.187.105-.046.027-.093.051-.14.079H5.19l-.01.005-.036.02v.002l.111.184 3.15 5.23a4.168 4.168 0 01.38-.202 4.294 4.294 0 011.628-.413c.071-.004.143-.008.214-.008zm.428.01v6.333c.325.034.647.103.96.209l4.66-4.66c-.173-.12-.348-.237-.528-.347l-.026-.015c-.056-.035-.112-.067-.168-.1l-.098-.056-.099-.055a12.735 12.735 0 00-.171-.092l-.027-.014a10.628 10.628 0 00-1.425-.617c-.69-.241-1.403-.41-2.128-.505l-.089-.012-.09-.01a6.56 6.56 0 00-.17-.019l-.049-.004-.204-.017a6.44 6.44 0 00-.255-.015c-.031-.003-.062-.003-.093-.004zM4.782 4.498a9.92 9.92 0 00-1.36 1.062l4.461 4.461.018.018c.049-.04.098-.078.149-.116l-.011-.018zm-1.67 1.36c-.05.05-.098.103-.147.154l-.149.155c-.33.357-.63.73-.902 1.118l-.039.056a10.588 10.588 0 00-.216.326 10.6 10.6 0 00-1.65 5.276l-.006.215-.003.214h6.317c0-.072.007-.143.01-.214.005-.072.006-.144.013-.215.081-.822.399-1.625.952-2.3.045-.055.096-.106.144-.16.048-.052.093-.107.144-.158zm16.255 1.464l-4.663 4.663c.106.312.175.634.21.959h6.332l-.004-.094a11.579 11.579 0 00-.032-.456l-.005-.052a13.044 13.044 0 00-.026-.241v-.009l-.033-.24v-.009a10.618 10.618 0 00-.327-1.493l-.003-.01a15.839 15.839 0 00-.07-.228l-.01-.03a14.111 14.111 0 00-.069-.204l-.02-.055a5.65 5.65 0 00-.153-.405 7.84 7.84 0 00-.093-.227 16.67 16.67 0 00-.063-.144l-.037-.081a13.776 13.776 0 00-.08-.171l-.024-.052-.096-.194-.014-.027a11.2 11.2 0 00-.112-.212l-.004-.008a10.615 10.615 0 00-.604-.98zm-4.43 6.05c0 .071-.006.142-.01.214-.003.072-.005.143-.012.214a4.29 4.29 0 01-.952 2.301c-.045.055-.096.107-.144.16-.048.053-.093.108-.144.159l4.467 4.467c.051-.051.099-.104.148-.155.05-.052.1-.103.148-.155.331-.358.633-.733.905-1.122l.032-.046.098-.144.085-.13.04-.063a10.597 10.597 0 001.647-5.272c.003-.071.004-.143.006-.214.001-.071.004-.143.004-.214zM.01 13.8l.004.093.01.179.005.076.017.206.005.046c.007.076.015.153.024.228l.003.022a9.605 9.605 0 00.033.248c.072.505.182 1.005.327 1.497l.002.006c.022.077.047.154.071.23l.004.014.005.014a15.737 15.737 0 00.153.439l.03.08.059.148a7.702 7.702 0 00.093.228l.062.14.038.084.078.169.027.054a10.677 10.677 0 00.225.441l.025.043 5.408-3.258.02-.012a4.314 4.314 0 01-.395-1.414h-.025zm.505 2.846l-.206.058.002.005zm6.425-1.052l-5.415 3.262c.083.139.17.273.259.406l.008.014.004.005.008.014h.001c.007.012.014.022.022.032l.001.002v.001a10.634 10.634 0 00.298.417l.006.008a9.963 9.963 0 00.29.368l.033.04c.043.052.086.103.13.153l.057.065.112.127.064.069.029.031.083.09.035.035c.049.051.098.103.149.153L7.58 16.42a3.86 3.86 0 01-.285-.321 4.422 4.422 0 01-.356-.505zm6.416 1.111c-.05.04-.1.079-.15.116l.011.018 3.257 5.407c.151-.099.3-.2.446-.307.315-.232.62-.484.914-.756l-4.46-4.46zm-5.457.003l-.015.015-4.46 4.46a8.966 8.966 0 00.195.176c.022.02.043.04.065.058l.152.13a10.622 10.622 0 00.215.174l.023.017.191.148.008.005c.268.2.547.389.834.564l.03.018.164.097.101.057a5.458 5.458 0 00.27.148c.008.004.016.01.025.013.162.085.327.164.493.24l.158-.385 2.243-5.448.009-.02a4.328 4.328 0 01-.701-.467zm4.951.353c-.061.037-.124.07-.187.104a4.318 4.318 0 01-3.271.336c-.069-.02-.135-.047-.203-.071-.067-.024-.136-.044-.202-.072l-2.242 5.444-.088.213-.075.183v.001l.017.007a.137.137 0 00.019.007l.005.003c.052.021.106.04.159.06.067.027.133.053.2.077l.102.04c.702.247 1.43.42 2.168.518l.087.012.09.01.172.019a7.173 7.173 0 00.252.022c.023.001.048.001.071.003l.184.011.112.005a7.06 7.06 0 00.358.007h.05a10.667 10.667 0 001.793-.15l.185-.034.105-.02.109-.023.18-.04.032-.008a10.684 10.684 0 002.55-.95c.052-.028.104-.06.156-.089.063-.034.125-.07.187-.105.043-.024.087-.047.13-.073h.001l.002-.002.002-.001.002-.001.007-.004.042-.025-.11-.183-.11-.184zm3.262 5.414l-.042.025.042-.024zm-.05.029h-.001.002zm-.005.004h-.002z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>OpenAPI Initiative</title><path d="M21.039 0a2.959 2.959 0 00-2.65 4.274l-6.447 6.447a2.96 2.96 0 101.335 1.336l6.447-6.447A2.959 2.959 0 1021.04 0zM10.628 2.745c-.072 0-.143.003-.214.004-.072.002-.143.002-.215.005-.447.018-.893.064-1.335.138l-.03.005-.185.033-.105.02a7.718 7.718 0 00-.289.062l-.032.008a10.69 10.69 0 00-2.55.95l-.155.089c-.063.034-.125.07-.187.105-.046.027-.093.051-.14.079H5.19l-.01.005-.036.02v.002l.111.184 3.15 5.23a4.168 4.168 0 01.38-.202 4.294 4.294 0 011.628-.413c.071-.004.143-.008.214-.008zm.428.01v6.333c.325.034.647.103.96.209l4.66-4.66c-.173-.12-.348-.237-.528-.347l-.026-.015c-.056-.035-.112-.067-.168-.1l-.098-.056-.099-.055a12.735 12.735 0 00-.171-.092l-.027-.014a10.628 10.628 0 00-1.425-.617c-.69-.241-1.403-.41-2.128-.505l-.089-.012-.09-.01a6.56 6.56 0 00-.17-.019l-.049-.004-.204-.017a6.44 6.44 0 00-.255-.015c-.031-.003-.062-.003-.093-.004zM4.782 4.498a9.92 9.92 0 00-1.36 1.062l4.461 4.461.018.018c.049-.04.098-.078.149-.116l-.011-.018zm-1.67 1.36c-.05.05-.098.103-.147.154l-.149.155c-.33.357-.63.73-.902 1.118l-.039.056a10.588 10.588 0 00-.216.326 10.6 10.6 0 00-1.65 5.276l-.006.215-.003.214h6.317c0-.072.007-.143.01-.214.005-.072.006-.144.013-.215.081-.822.399-1.625.952-2.3.045-.055.096-.106.144-.16.048-.052.093-.107.144-.158zm16.255 1.464l-4.663 4.663c.106.312.175.634.21.959h6.332l-.004-.094a11.579 11.579 0 00-.032-.456l-.005-.052a13.044 13.044 0 00-.026-.241v-.009l-.033-.24v-.009a10.618 10.618 0 00-.327-1.493l-.003-.01a15.839 15.839 0 00-.07-.228l-.01-.03a14.111 14.111 0 00-.069-.204l-.02-.055a5.65 5.65 0 00-.153-.405 7.84 7.84 0 00-.093-.227 16.67 16.67 0 00-.063-.144l-.037-.081a13.776 13.776 0 00-.08-.171l-.024-.052-.096-.194-.014-.027a11.2 11.2 0 00-.112-.212l-.004-.008a10.615 10.615 0 00-.604-.98zm-4.43 6.05c0 .071-.006.142-.01.214-.003.072-.005.143-.012.214a4.29 4.29 0 01-.952 2.301c-.045.055-.096.107-.144.16-.048.053-.093.108-.144.159l4.467 4.467c.051-.051.099-.104.148-.155.05-.052.1-.103.148-.155.331-.358.633-.733.905-1.122l.032-.046.098-.144.085-.13.04-.063a10.597 10.597 0 001.647-5.272c.003-.071.004-.143.006-.214.001-.071.004-.143.004-.214zM.01 13.8l.004.093.01.179.005.076.017.206.005.046c.007.076.015.153.024.228l.003.022a9.605 9.605 0 00.033.248c.072.505.182 1.005.327 1.497l.002.006c.022.077.047.154.071.23l.004.014.005.014a15.737 15.737 0 00.153.439l.03.08.059.148a7.702 7.702 0 00.093.228l.062.14.038.084.078.169.027.054a10.677 10.677 0 00.225.441l.025.043 5.408-3.258.02-.012a4.314 4.314 0 01-.395-1.414h-.025zm.505 2.846l-.206.058.002.005zm6.425-1.052l-5.415 3.262c.083.139.17.273.259.406l.008.014.004.005.008.014h.001c.007.012.014.022.022.032l.001.002v.001a10.634 10.634 0 00.298.417l.006.008a9.963 9.963 0 00.29.368l.033.04c.043.052.086.103.13.153l.057.065.112.127.064.069.029.031.083.09.035.035c.049.051.098.103.149.153L7.58 16.42a3.86 3.86 0 01-.285-.321 4.422 4.422 0 01-.356-.505zm6.416 1.111c-.05.04-.1.079-.15.116l.011.018 3.257 5.407c.151-.099.3-.2.446-.307.315-.232.62-.484.914-.756l-4.46-4.46zm-5.457.003l-.015.015-4.46 4.46a8.966 8.966 0 00.195.176c.022.02.043.04.065.058l.152.13a10.622 10.622 0 00.215.174l.023.017.191.148.008.005c.268.2.547.389.834.564l.03.018.164.097.101.057a5.458 5.458 0 00.27.148c.008.004.016.01.025.013.162.085.327.164.493.24l.158-.385 2.243-5.448.009-.02a4.328 4.328 0 01-.701-.467zm4.951.353c-.061.037-.124.07-.187.104a4.318 4.318 0 01-3.271.336c-.069-.02-.135-.047-.203-.071-.067-.024-.136-.044-.202-.072l-2.242 5.444-.088.213-.075.183v.001l.017.007a.137.137 0 00.019.007l.005.003c.052.021.106.04.159.06.067.027.133.053.2.077l.102.04c.702.247 1.43.42 2.168.518l.087.012.09.01.172.019a7.173 7.173 0 00.252.022c.023.001.048.001.071.003l.184.011.112.005a7.06 7.06 0 00.358.007h.05a10.667 10.667 0 001.793-.15l.185-.034.105-.02.109-.023.18-.04.032-.008a10.684 10.684 0 002.55-.95c.052-.028.104-.06.156-.089.063-.034.125-.07.187-.105.043-.024.087-.047.13-.073h.001l.002-.002.002-.001.002-.001.007-.004.042-.025-.11-.183-.11-.184zm3.262 5.414l-.042.025.042-.024zm-.05.029zm-.005.004h-.002z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/openbadges.svg b/assets/lib/simple-icons/icons/openbadges.svg
index 3b8f892e..7101ef8b 100644
--- a/assets/lib/simple-icons/icons/openbadges.svg
+++ b/assets/lib/simple-icons/icons/openbadges.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Open Badges icon</title><path d="M18.43 18.584l-8.265-4.749 1.078-.641.719-.411.719.41 1.796 1.027 1.437.821 1.797 1.027 1.438.822 1.078.616zm-3.234 1.873l-8.24-4.774 1.797-1.027 8.24 4.75-1.797 1.051zm-3.209 1.848l-8.24-4.748 1.797-1.027 8.24 4.749zM3.03 14.246l8.24-4.748v2.079l-.719.41-1.797 1.027-1.438.821-1.796 1.027-1.437.822-1.053.615v-2.054zm0-3.722l8.24-4.749v2.08l-8.24 4.723v-2.054zm0-3.722l8.24-4.749v2.054L3.03 8.856V6.802zm9.677-4.749l1.797 1.027v9.523l-1.078-.616-.719-.41V2.052zm3.209 1.848l1.796 1.027v9.523l-1.797-1.027V3.901zm3.234 1.875l1.796 1.026v9.523l-1.796-1.027V5.775zm3.26.205l-1.49-.822-1.796-1.026-1.412-.847-1.797-1.027-1.437-.822L12.68.411 11.962 0l-.719.411-9.651 5.57v12.012l.718.41L11.987 24l1.438-.822 1.797-1.026 1.437-.821 1.797-1.027 1.437-.821 1.797-1.027.718-.411Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Open Badges</title><path d="M18.43 18.584l-8.265-4.749 1.078-.641.719-.411.719.41 1.796 1.027 1.437.821 1.797 1.027 1.438.822 1.078.616zm-3.234 1.873l-8.24-4.774 1.797-1.027 8.24 4.75-1.797 1.051zm-3.209 1.848l-8.24-4.748 1.797-1.027 8.24 4.749zM3.03 14.246l8.24-4.748v2.079l-.719.41-1.797 1.027-1.438.821-1.796 1.027-1.437.822-1.053.615v-2.054zm0-3.722l8.24-4.749v2.08l-8.24 4.723v-2.054zm0-3.722l8.24-4.749v2.054L3.03 8.856V6.802zm9.677-4.749l1.797 1.027v9.523l-1.078-.616-.719-.41V2.052zm3.209 1.848l1.796 1.027v9.523l-1.797-1.027V3.901zm3.234 1.875l1.796 1.026v9.523l-1.796-1.027V5.775zm3.26.205l-1.49-.822-1.796-1.026-1.412-.847-1.797-1.027-1.437-.822L12.68.411 11.962 0l-.719.411-9.651 5.57v12.012l.718.41L11.987 24l1.438-.822 1.797-1.026 1.437-.821 1.797-1.027 1.437-.821 1.797-1.027.718-.411Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/openbsd.svg b/assets/lib/simple-icons/icons/openbsd.svg
index c47dec9e..e78fbc7e 100644
--- a/assets/lib/simple-icons/icons/openbsd.svg
+++ b/assets/lib/simple-icons/icons/openbsd.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>OpenBSD icon</title><path d="M13.695 1.653c-.202.47-.146 1.02-.293 1.509-.034.112-.146.452-.308.429-.333-.048-.16-.688-.545-.7l.12.934c-.577.073-.498-.829-.733-1.195-.27-.423-.335.192-.317.38.011.122.036.242.05.363.026.21.032.393.005.603-.552-.007-.35-.733-.754-.844l.03.874c-.612-.005-.89-.557-1.159-1.025-.112-.196-.261-.574-.53-.453.126.544.423 1.064.454 1.63.007.145-.13.516-.333.448-.469-.158-.406-1.008-.796-1.231-.08-.045-.204-.006-.29-.002 0 .45.198.996.356 1.418.034.09.129.41-.069.403-.353-.01-.441-.695-.8-.615.044.185.153.335.215.513.037.109.106.219.126.332.044.247-.269.267-.432.22-.384-.114-.66-.428-.935-.703-.076-.076-.277-.344-.404-.222-.141.135.136.373.215.464.234.271.488.589.6.935.049.148.058.36-.09.462-.146.1-.384-.083-.502-.16-.362-.239-.721-.654-1.176-.664l-.107.271.29.392.752.845-.875-.362c.035.229.583.506.475.742-.064.14-.38.142-.505.124-.446-.064-.762-.396-1.177-.515-.366-.105-.298.18-.09.343.072.057.141.117.211.177.125.108.245.219.362.336.183.183.343.378.513.573l-.875-.03v.06l.845.392-.151.603c-.244 0-.442-.067-.664-.163-.151-.066-.31-.175-.482-.163-.206.014-.328.202-.19.377.206.263.62.412.883.617.1.078.247.212.133.345-.225.264-.832-.074-1.128.013v.06c.275.161.839.253 1 .549.128.231-.232.756-.487.736-.227-.019-.436-.275-.603-.41-.401-.322-.83-.7-1.298-.923-.801-.38-1.597.226-2.232.622.081.256.402-.017.603.029.271.061.477.313.651.513.84.968 1.543 2.064 1.857 3.319.083.33.224.725-.023 1.021-.066.08-.165.09-.238.155-.055.05-.052.118.023.141.138.043.34-.021.475-.054.443-.107.949-.346 1.15-.78.125-.271.169-.797.48-.905.068.29.394.673.363.965-.029.259-.302.56-.461.751-.057.068-.193.217-.112.315.082.097.25-.112.3-.16.229-.216.73-.558.865-.062.118.432-.261 1.13-.45 1.509-.054.105-.297.435-.202.553.11.135.338-.218.387-.282.19-.249.856-.987 1.21-.722.431.324.282.555.119.994-.046.123-.216.433-.1.55.111.114.258.01.315-.098.104-.197.383-.78.661-.631.175.093.441.251.543.425.158.272.02.815-.022 1.111-.024.17-.207.702-.055.825.14.113.254-.228.296-.312.149-.295.32-.597.54-.845.08-.089.192-.237.327-.212.7.131-.015.829.273 1.185.058.072.215.067.3.083l.362-.935c.184.07.455.095.591.248.114.128.137.344.17.506.092.454.142.896.084 1.357.057.042.148.138.225.088.097-.062.11-.315.143-.42.106-.332.269-.65.42-.965.099-.207.37-.427.565-.142.2.292.12.804.246 1.138.32-.158.355-.825.362-1.147l.415.061.25.513.45 1.297c.234-.09.16-.538.187-.754.035-.293.103-.882.318-1.1.086-.087.258-.095.37-.137.129.312.199.666.354.965.06.116.198.242.337.17.133-.068.128-.224.111-.35-.042-.313-.113-.62-.138-.936.598-.042.95.441 1.325.845.145.155.271.362.485.422l-.31-.905-.172-.845c.217-.09.676-.534.905-.47.34.097.6 1.046 1.023.823.18-.095.088-.257.003-.383-.126-.188-.506-.639-.465-.874.03-.175.324-.379.494-.377.391.006 1.071.304 1.297.618l.272-.03c-.04-.54-.85-.787-.966-1.328a.404.404 0 01.004-.172c.086-.347.294-.195.51-.102.067.029.213.103.269.02.06-.091-.048-.212-.087-.289-.082-.156-.156-.337-.122-.513.282.074.455.242.694.4.056.038.18.131.251.08.075-.056-.036-.167-.071-.208-.106-.123-.432-.42-.4-.6.022-.122.227-.252.31-.335.276-.276.59-.556.815-.875h.03c.532.621 2.203.186 1.99-.754-.132.019-.256.123-.392.077-.594-.205-.45-1.157-1.116-1.163-.049-.62-.298-1.24-.599-1.78-.138-.247-.424-.473-.525-.725-.055-.14-.046-.36-.052-.512.349-.054.177-.407.05-.603-.142-.218-.292-.477-.475-.66-.226-.227-.562-.374-.533-.758.027-.357.642-.311.747-.633-.183.008-.363.053-.543.083-.449.075-.527-.076-.317-.475.183-.349.474-.613.73-.905.083-.093.336-.306.205-.441-.107-.112-.286.058-.377.119-.333.22-.705.384-1.086.502-.113.035-.448.166-.486-.035-.051-.272.463-.322.395-.628-.205.049-.61.374-.807.223-.238-.18.111-.643.149-.856.038-.216-.136-.224-.258-.09-.043.048-.081.1-.12.15-.07.087-.126.17-.17.271-.494-.288.44-.623.265-.89-.063-.095-.179 0-.235.05-.117.102-.558.61-.654.237-.106-.412.108-.908.22-1.297.028-.102.159-.376.032-.449-.185-.106-.266.253-.31.359a2.333 2.333 0 01-.615.839c-.086.077-.232.225-.36.19-.187-.051-.188-.57-.182-.728.003-.075.045-.205-.028-.26-.096-.071-.147.072-.16.14-.048.222-.186.856-.515.44-.298-.376.163-1.157-.444-1.315l-.332 1.056c-.398-.087-.31-.656-.211-.966l-.181-.06a3.303 3.303 0 01-.112.362c-.16.451-.375.539-.541.03-.127-.388-.082-.807-.145-1.207-.025-.159-.04-.32-.198-.392zm.03.905c.153.364-.008.82.237 1.176.25.364.716.168 1.02.397.108.081.022.256-.007.358-.1.347-.278.604-.465.905.655-.335.875-1.29.965-1.96h.03c-.026.596-.007 1.182 0 1.779.003.27-.037.582.272.633V4.46c.323.093.808.502 1.159.381.179-.061.342-.277.467-.411.094-.102.175-.212.244-.332h.03l-.12.965-.302-.06.663.473.261.226-.2.294-.875.636c.637-.094.958-.564 1.418-.935-.15.63-.491 1.262-.332 1.93h.03l.362-1.448c.274.13.37.476.633.633.383.228.919-.204 1.267-.331-.227.322-.57.548-.633.965l-.272-.12c.236.606.519 1.19.62 1.84.093.594-.024 1.183.016 1.78.02.275.133.517.179.784-.563.191-.666.98-1.207 1.236.043-.188.11-.377.11-.573 0-.14-.066-.282-.03-.422.073-.277.314-.508.412-.784.152-.43.05-.835-.009-1.267l.301.03-.758-1.177-.376-.573.139-.392c-.762.586-1.867 1.188-1.87 2.293l.271-.091.09.664-.422.06v.06c.353.1.722.149 1.056.306.244.114.514.265.682.479.56.71.112 1.818-.31 2.473-.213.33-.594.634-.734.996.382-.092.577-.457.792-.754.091-.127.17-.303.325-.362.24-.09.32.354.371.512.065.2.218.546.18.755-.071.401-.415.662-.34 1.116.166-.202.217-.604.482-.702.17-.062.347.095.513.12.36.053.73-.082.996-.326.285-.263.48-.686.408-1.083-.043-.24-.177-.476-.16-.724.012-.2.148-.362.22-.543.173-.427.152-.912-.257-1.189a.86.86 0 00-.362-.138c.033-.222.264-.706.53-.418.188.202.29.558.396.81.389.918.392 2.006-.163 2.865-.394.61-1.02 1.11-1.548 1.6l-.21-.604h-.061c-.07.36.185.772.332 1.086-.33-.075-.645-.415-.996-.362.099.17.748.572.242.754.003.148-.11.25-.2.362-.201.248-.454.618-.766.724l-.573-1.508h-.03c.084.661.314 1.305.61 1.9.154.307.403.611.506.935-.187-.159-.306-.413-.466-.603a6.313 6.313 0 00-.952-.892c-.227-.177-.45-.376-.754-.345.345.31.868.475.835 1.056-.01.165-.193.237-.322.296-.339.155-.67.322-1.026.438-.098.032-.279.12-.382.087-.11-.037-.097-.277-.109-.369-.037-.285.121-1.028-.172-1.146-.128 1.01.132 1.929.21 2.926h-.03c-.17-.737-.439-1.558-.838-2.202-.11-.177-.343-.597-.579-.543l.62 1.086.013.46-.452.08-1.297.033c.047-.373.13-.746.2-1.116.014-.081.074-.326-.078-.326-.14 0-.169.408-.189.507-.108.542-.204 1.106-.205 1.66h-.03c0-.913-.41-1.73-.784-2.535-.104.155.041.377.086.543.099.371.113.737.065 1.116-.612-.118-1.275-.278-1.84-.543.149-.357.576-.889.573-1.267-.554.556-.804 1.335-1.086 2.052h-.03l.12-1.448-.21-1.237c-.132.133-.06.399-.04.573.033.275.015.688-.188.9-.112.117-.226.014-.346-.034-.335-.136-.582-.36-.875-.564-.104-.072-.293-.15-.28-.302.032-.433.656-.638.672-1.026-.72.31-1.062 1.088-1.629 1.57.186-.785.782-1.703.634-2.535-.152.084-.145.295-.185.453a4.324 4.324 0 01-.388.965c-.4-.231-.72-.623-.983-.996-.073-.102-.233-.26-.235-.392-.002-.128.145-.274.225-.362.244-.265.54-.465.872-.603-.237-.147-.706.2-.965.272.175-.37.65-.732.513-1.177-.393.307-.66.97-.935 1.388h-.03l-.574-1.267.754.271c.023-.27-.36-.373-.573-.422.126-.328.476-.578.392-.965h-.06c-.087.28-.269.759-.573.844l-.09-.482h-.03c-.119.253.029.447-.04.687-.037.125-.217.106-.28.222-.085.158-.092.37-.164.539-.172.407-.5.706-.904.874l-.037-.54.459-.515-.483.361c-.062-.161-.203-.465-.12-.633.073-.145.254-.24.362-.362l-.483.241c-.163-.422.135-.3.302-.603-.122.07-.325.2-.471.133-.187-.085-.384-.64-.464-.827l.512-.09v-.03c-.242.03-.626.12-.663-.211h.633v-.03l-.712-.08-.194-.252-.421-.543c.251-.075.683-.075.935 0-.368-.387-1.024.182-1.327-.453l.754-.15v-.03c-.234 0-.67.135-.874.028-.054-.028-.094-.075-.134-.12-.388-.438.48-.478.766-.44.55.076.975.452 1.358.833.194.193.473.538.754.595.278.055.51-.122.724-.263 0 .212-.022.422.15.573 0-.416.005-.857.07-1.267.023-.152.083-.352.263-.38.225-.034.531.309.693.44.002-.234-.175-.432-.319-.603-.396-.47-1.025-.914-1.58-1.177v-.03c.823.142 1.442.625 2.322.392v-.06l-1.026-.15c.043-.321.276-.734.203-1.057-.1-.44-.568-.644-.746-1.025.306.118.63.29.966.297.188.005.336-.098.512-.14.485-.113.766.123 1.086.446.088-.305-.15-.559-.334-.784-.186-.229-.35-.46-.57-.659-.267-.24-.662-.52-.815-.85.25.049.49.256.694.402.359.255.715.503 1.116.691.211.1.578.265.754.054l-.965-.362c.07-.101.17-.188.221-.302.138-.307-.104-.568-.191-.844.185.068.345.227.543.26.464.078.734-.47 1.086-.653L9.11 6.45c.201-.168.112-.494.078-.724-.099-.664-.493-1.251-.59-1.9h.03c.381.816.835 1.696 1.598 2.201l-.277-.363-.477-.723c.095-.037.188-.077.269-.142.528-.423.078-1.012.002-1.517h.03c.065.155.14.314.235.453.441.638 1.023.536 1.696.482l-.18 1.328h.03c.089-.283.258-.516.318-.815.11-.544-.006-1.084-.017-1.629h.03c.048.322.179.63.282.936.162.482.293 1.01.653 1.387l-.331-1.357c.958-.001 1.219-.647 1.236-1.509zm-.271 2.082l-.483 2.172c.372-.227.45-1.053.483-1.448h.03c.065.348.096.696.238 1.025.056.13.117.305.275.302l-.386-1.357zm-2.956.392c.006.771.387 1.473.24 2.262.146-.088.15-.295.152-.452.004-.365-.06-.723-.06-1.086h.03c.105.364.39 1.09.814 1.146-.05-.196-.211-.344-.319-.513-.238-.374-.472-1.13-.857-1.357zm6.184.332c-.336.526-.736 1.245-1.237 1.629v.03c.38-.068.791-.549.905-.905h.03c-.005.536-.251 1.105-.03 1.629h.03c.16-.543.077-1.184.215-1.75.043-.177.203-.473.087-.633zM14.69 6.57c-.178.402-.265.775-.634 1.056v.06c.265.07.45-.262.513-.482h.03c.026.203.05.624.272.694l-.149-.694zm-6.456.03c.065.743 1.063 1.244.935 2.052.16-.094.119-.269.065-.423-.112-.317-.298-.596-.427-.905.289.264.716.562 1.117.393l-.633-.263zm4.163.242c-.091.3-.347.886-.241 1.176h.06l.211-.724h.03c.075.273.153.687.483.724l-.483-1.176zm-2.021.754l.15 1.267h.061l-.03-.905c.197.137.463.474.724.362-.1-.11-.247-.129-.362-.222-.187-.151-.286-.482-.543-.502zm6.636.18c-.318.32-.584.539-1.025.664v.061c.261.075.514-.07.724-.211-.035.177-.26.64-.09.754l.289-.875zm1.539.624c.138.01.242.186.323.282.239.279.508.575.612.935-.697-.144-1.452-.045-2.142.12.154-.405.446-.834.785-1.1.115-.092.258-.25.422-.237zm-6.697.07l-.181.936c.151-.115.187-.481.211-.664l.272.302a1.058 1.058 0 00-.302-.573zm2.956.091l-.573.573.543-.392.09.543c.106-.154.05-.578-.06-.724zm-6.334.078a.252.252 0 00-.06.013v.03c.253.256.463.61.621.935.088.179.063.376.253.483-.015-.353-.166-.62-.302-.935.214.124.5.31.754.24v-.06c-.342-.152-.607-.281-.905-.518-.11-.088-.224-.2-.361-.188zm-2.082.284c.029.255.237.35.422.49a3.5 3.5 0 01.687.657c.127.166.205.452.37.573-.036-.444-.298-.966-.725-1.147v-.03c.434.084.867.246 1.297.06v-.06l-.513-.02zm14.027.09c.296.115.613.522.724.815l-.664-.09zm-7.3.03l-.271.514.301-.332.181.302zm5.95.712a.536.536 0 01.172.031c.365.143.267.9.19 1.188-.061.234-.17.495-.4.604-.167-.3-.415-.496-.724-.64-.154-.073-.41-.101-.517-.243-.103-.137-.208-.646-.068-.78.152-.147.57-.117.766-.117.163 0 .392-.051.581-.043zm-3.054.013l-.513.392.453-.241-.06.362c.128-.09.175-.371.12-.513zm4.404.18c.136.011.37-.002.47.1.331.34.145 1.25-.259 1.44l-.12-.695c.032.002.062 0 .09-.003v.003h.09l-.04-.013c.356-.085.295-.577-.051-.59l-.09-.03.049.032-.018.001v-.003h-.06l.01.011c-.023.005-.046.01-.071.02zm-1.538.122c-.062.063-.152.11-.198.187-.318.545.886.559.546-.03-.039-.068-.108-.111-.167-.157l-.121.06h-.06zm-6.335.12c0 .154-.03.31.12.392v-.301l.363.12zm-1.676.086c-.046.002-.092.005-.134.005.053.194.137.36.302.482l-.181-.392.362.03c-.07-.127-.211-.131-.349-.125zm3.685.011c-.09.01-.168.168-.169.325l.15-.271.182.12c-.05-.132-.109-.18-.163-.174zm-4.845.084l-.513.09.423.513-.241-.422.361-.06zm-2.655.42c-.307.013-.66.365-.904.515v.06l.875.302c-.018-.229-.315-.297-.513-.331l.603-.544a.386.386 0 00-.06-.002zm1.6.063l-1.237.332v.06l.663.238.393.275c-.043-.32-.383-.375-.604-.543.28-.053.66-.058.785-.362zm3.107.332c-.129.02-.23.12-.091.21zm.995.18l-.03.212c.094-.056.11-.105.09-.211zm1.357 0c-.117.035-.214.118-.09.212zm1.117.302l-.302.09v.121zm1.146.03v.362c.113-.11.113-.25 0-.362zm4.272.179c.425.004.846.395.75.847-.062.29-.242.605-.528.718-.149.06-.486.04-.498-.175-.01-.2.388-.478.468-.694-.558.427-.9.79-1.659.694v-.03c.447-.331.634-.895 1.059-1.224a.645.645 0 01.408-.136zm-9.943.032c-.146.076-.235.236-.272.393l.362.09-.2-.193zm-4.585.061l-1.147.603c.04.225.262.104.423.093.23-.015.657.06.784.27l.211-.03c-.054-.342-.546-.342-.814-.363.197-.2.48-.259.543-.573zm5.822.241l-.332.423.422.15-.302-.18c.063-.132.31-.247.212-.393zm-2.625.09l-.362.333c.142.047.468.233.573.09l-.392-.15zm7.813 0l.422.333v.06l-.392.211a.938.938 0 00.543-.211.883.883 0 00-.573-.392zm-9.683.121c-.183.41-.464.743-.784 1.056-.184.179-.471.346-.543.603L7.45 13.8l.694-.14c-.414-.296-1.14.033-1.539.21.275-.55.813-.769.935-1.418l-.03-.03zm5.701.03c-.13.043-.146.149-.18.272l.18.03zm1.237.212l.03.332a.503.503 0 00.272-.332l-.212.15zm-4.193.422c-.13.038-.2.131-.06.211zm5.34.181l-.031.422-.271-.18c.028.182.156.27.332.3l.03-.542zm-6.758.03c-.22.069-.596.692-.694.905.2-.008.895.018.996-.12l-.664-.091zm3.7.059c-.166.01-.327.105-.502.105-.507 0-1.34-.252-1.775.092-.396.314-.42.734-.669 1.132-.121.194-.336.325-.512.465-.065.052-.184.127-.159.227.03.122.238.187.34.233.228.105.477.187.724.238.131.027.328.022.44.103.204.148.135.653.163.876.227-.13.524-.52.633-.755-.241.073-.347.31-.513.483l-.09-.633c.705-.062 1.015-.833 1.43-1.296.253-.282.57-.405.893-.575-.19-.227-.455.013-.634.15-.479.37-.755.816-1.176 1.238l.241-.633h-.03c-.131.314-.288.65-.603.814l.12-.422h-.03c-.127.303-.27.452-.603.452l.301-.694h-.03l-.392.664-.12-.03.301-.573h-.03c-.152.244-.313.59-.633.512l.27-.512c-.15.118-.216.4-.394.471-.081.032-.235-.027-.202-.135.042-.14.272-.278.363-.397.31-.405.56-1.067 1.018-1.316.376-.205.947.054 1.358.05.235-.004.503-.084.573-.333a.427.427 0 00-.072-.001zm-7.591.092l-.03.181.12-.181zm14.875.029c.228.004.48.037.61.214.133.18.101.427.17.632.052-.216.046-1.024.477-.57.349.367.256 1.162-.087 1.502-.216.213-.735.343-.992.144-.393-.303-.494-.926-.608-1.378-.027-.109-.154-.36-.084-.461.058-.086.209-.08.3-.082.065 0 .138-.002.214-.001zm2.65.182c.569.103.615.907 1.117 1.147v.06c-.285.143-.38-.002-.573-.211l.211.392c-.233-.036-.283-.262-.422-.423l.21.453c-.346 0-.493-.057-.633-.392h-.03l.06.271-.214-.152.114-.39zm-4.735.03c-.123.036-.188.105-.09.212zm-4.163.242l.332.362.15-.362-.15.241zm3.047 0l-.03.452-.302-.18c-.017.198.288.424.453.512l-.06-.784zm-8.175.512c-.094.452-.417.859-.707 1.207-.138.166-.35.333-.41.543.5-.144 1.063-.652 1.6-.603-.138-.268-.783.103-1.026.15.196-.29.463-.542.59-.874.052-.14.086-.327-.047-.423zm6.998.272c-.23.036-.218.264-.271.452-.128-.127-.258-.303-.452-.271l.573.694zm-2.805.03l-.302.272-.03-.151h-.09l.03.392c.176-.03.358-.347.392-.513zm.815.483l-.151.392h-.03l-.242-.332.211.694h.03c.08-.202.365-.572.182-.754zm3.348.18l-.09.031.18.995c-.192-.168-.785-.942-1.025-.663.555.177.786.825 1.267 1.116l-.15-.573zm1.508.242c-.153.374.22.775.362 1.116-.392-.202-.74-.539-1.207-.543v.12c.672.06 1.03.747 1.569 1.057-.005-.563-.488-1.21-.664-1.75zm-6.123.453l-.212.03c.072.169.197.306.256.482.065.196.023.466.227.573.095-.212.327-.557.271-.784-.17.085-.252.268-.27.453h-.031zm-2.806.03c0 .592-.08 1.148-.241 1.72.21.007.32-.211.433-.363.225-.299.45-.628.804-.784v-.03c-.359-.047-.807.49-.935.784h-.03c.106-.41.2-.924.03-1.327zm5.31.03c-.244.093-.182.42-.182.633l-.693-.482c.038.123.136.16.228.245.18.167.337.557.586.6zm1.538.573c-.213.377.097 1.154.15 1.569h-.03c-.168-.355-.492-.649-.754-.935-.037-.04-.228-.301-.296-.192-.071.114.278.385.343.463.241.286.459.609.642.935.105.189.197.44.397.543-.15-.778-.39-1.586-.392-2.383zm-10.045.302c.223.066.35.219.362.452l-.694.483zm5.007.24l-.03.031c.147.405.293.742.364 1.177.034.202.013.465.179.603.17-.322.23-.695.385-1.026.09-.19.234-.356.188-.573-.29.143-.461.787-.543 1.086-.15-.399-.104-1.092-.543-1.297zm2.051.303c.341.677.594 1.314.785 2.05.212-.118.183-.329.18-.542-.005-.497.186-.99.152-1.478-.143.048-.168.194-.193.332-.06.329-.06.669-.14.995-.163-.38-.293-1.279-.784-1.357zm6.365.24l.453.665-.664-.302zM8.657 19.18c.647.057.205.652-.06.935zm8.296.724l.272.845c-.224-.157-.488-.414-.604-.664zm-5.502.455l.344.058-.272.965h-.03l-.06-.754zm2.85.174c.062 0 .121.013.169.053.163.138-.067.805-.141.977l-.332-.965c.086-.022.2-.063.304-.065Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>OpenBSD</title><path d="M13.695 1.653c-.202.47-.146 1.02-.293 1.509-.034.112-.146.452-.308.429-.333-.048-.16-.688-.545-.7l.12.934c-.577.073-.498-.829-.733-1.195-.27-.423-.335.192-.317.38.011.122.036.242.05.363.026.21.032.393.005.603-.552-.007-.35-.733-.754-.844l.03.874c-.612-.005-.89-.557-1.159-1.025-.112-.196-.261-.574-.53-.453.126.544.423 1.064.454 1.63.007.145-.13.516-.333.448-.469-.158-.406-1.008-.796-1.231-.08-.045-.204-.006-.29-.002 0 .45.198.996.356 1.418.034.09.129.41-.069.403-.353-.01-.441-.695-.8-.615.044.185.153.335.215.513.037.109.106.219.126.332.044.247-.269.267-.432.22-.384-.114-.66-.428-.935-.703-.076-.076-.277-.344-.404-.222-.141.135.136.373.215.464.234.271.488.589.6.935.049.148.058.36-.09.462-.146.1-.384-.083-.502-.16-.362-.239-.721-.654-1.176-.664l-.107.271.29.392.752.845-.875-.362c.035.229.583.506.475.742-.064.14-.38.142-.505.124-.446-.064-.762-.396-1.177-.515-.366-.105-.298.18-.09.343.072.057.141.117.211.177.125.108.245.219.362.336.183.183.343.378.513.573l-.875-.03v.06l.845.392-.151.603c-.244 0-.442-.067-.664-.163-.151-.066-.31-.175-.482-.163-.206.014-.328.202-.19.377.206.263.62.412.883.617.1.078.247.212.133.345-.225.264-.832-.074-1.128.013v.06c.275.161.839.253 1 .549.128.231-.232.756-.487.736-.227-.019-.436-.275-.603-.41-.401-.322-.83-.7-1.298-.923-.801-.38-1.597.226-2.232.622.081.256.402-.017.603.029.271.061.477.313.651.513.84.968 1.543 2.064 1.857 3.319.083.33.224.725-.023 1.021-.066.08-.165.09-.238.155-.055.05-.052.118.023.141.138.043.34-.021.475-.054.443-.107.949-.346 1.15-.78.125-.271.169-.797.48-.905.068.29.394.673.363.965-.029.259-.302.56-.461.751-.057.068-.193.217-.112.315.082.097.25-.112.3-.16.229-.216.73-.558.865-.062.118.432-.261 1.13-.45 1.509-.054.105-.297.435-.202.553.11.135.338-.218.387-.282.19-.249.856-.987 1.21-.722.431.324.282.555.119.994-.046.123-.216.433-.1.55.111.114.258.01.315-.098.104-.197.383-.78.661-.631.175.093.441.251.543.425.158.272.02.815-.022 1.111-.024.17-.207.702-.055.825.14.113.254-.228.296-.312.149-.295.32-.597.54-.845.08-.089.192-.237.327-.212.7.131-.015.829.273 1.185.058.072.215.067.3.083l.362-.935c.184.07.455.095.591.248.114.128.137.344.17.506.092.454.142.896.084 1.357.057.042.148.138.225.088.097-.062.11-.315.143-.42.106-.332.269-.65.42-.965.099-.207.37-.427.565-.142.2.292.12.804.246 1.138.32-.158.355-.825.362-1.147l.415.061.25.513.45 1.297c.234-.09.16-.538.187-.754.035-.293.103-.882.318-1.1.086-.087.258-.095.37-.137.129.312.199.666.354.965.06.116.198.242.337.17.133-.068.128-.224.111-.35-.042-.313-.113-.62-.138-.936.598-.042.95.441 1.325.845.145.155.271.362.485.422l-.31-.905-.172-.845c.217-.09.676-.534.905-.47.34.097.6 1.046 1.023.823.18-.095.088-.257.003-.383-.126-.188-.506-.639-.465-.874.03-.175.324-.379.494-.377.391.006 1.071.304 1.297.618l.272-.03c-.04-.54-.85-.787-.966-1.328a.404.404 0 01.004-.172c.086-.347.294-.195.51-.102.067.029.213.103.269.02.06-.091-.048-.212-.087-.289-.082-.156-.156-.337-.122-.513.282.074.455.242.694.4.056.038.18.131.251.08.075-.056-.036-.167-.071-.208-.106-.123-.432-.42-.4-.6.022-.122.227-.252.31-.335.276-.276.59-.556.815-.875h.03c.532.621 2.203.186 1.99-.754-.132.019-.256.123-.392.077-.594-.205-.45-1.157-1.116-1.163-.049-.62-.298-1.24-.599-1.78-.138-.247-.424-.473-.525-.725-.055-.14-.046-.36-.052-.512.349-.054.177-.407.05-.603-.142-.218-.292-.477-.475-.66-.226-.227-.562-.374-.533-.758.027-.357.642-.311.747-.633-.183.008-.363.053-.543.083-.449.075-.527-.076-.317-.475.183-.349.474-.613.73-.905.083-.093.336-.306.205-.441-.107-.112-.286.058-.377.119-.333.22-.705.384-1.086.502-.113.035-.448.166-.486-.035-.051-.272.463-.322.395-.628-.205.049-.61.374-.807.223-.238-.18.111-.643.149-.856.038-.216-.136-.224-.258-.09-.043.048-.081.1-.12.15-.07.087-.126.17-.17.271-.494-.288.44-.623.265-.89-.063-.095-.179 0-.235.05-.117.102-.558.61-.654.237-.106-.412.108-.908.22-1.297.028-.102.159-.376.032-.449-.185-.106-.266.253-.31.359a2.333 2.333 0 01-.615.839c-.086.077-.232.225-.36.19-.187-.051-.188-.57-.182-.728.003-.075.045-.205-.028-.26-.096-.071-.147.072-.16.14-.048.222-.186.856-.515.44-.298-.376.163-1.157-.444-1.315l-.332 1.056c-.398-.087-.31-.656-.211-.966l-.181-.06a3.303 3.303 0 01-.112.362c-.16.451-.375.539-.541.03-.127-.388-.082-.807-.145-1.207-.025-.159-.04-.32-.198-.392zm.03.905c.153.364-.008.82.237 1.176.25.364.716.168 1.02.397.108.081.022.256-.007.358-.1.347-.278.604-.465.905.655-.335.875-1.29.965-1.96h.03c-.026.596-.007 1.182 0 1.779.003.27-.037.582.272.633V4.46c.323.093.808.502 1.159.381.179-.061.342-.277.467-.411.094-.102.175-.212.244-.332h.03l-.12.965-.302-.06.663.473.261.226-.2.294-.875.636c.637-.094.958-.564 1.418-.935-.15.63-.491 1.262-.332 1.93h.03l.362-1.448c.274.13.37.476.633.633.383.228.919-.204 1.267-.331-.227.322-.57.548-.633.965l-.272-.12c.236.606.519 1.19.62 1.84.093.594-.024 1.183.016 1.78.02.275.133.517.179.784-.563.191-.666.98-1.207 1.236.043-.188.11-.377.11-.573 0-.14-.066-.282-.03-.422.073-.277.314-.508.412-.784.152-.43.05-.835-.009-1.267l.301.03-.758-1.177-.376-.573.139-.392c-.762.586-1.867 1.188-1.87 2.293l.271-.091.09.664-.422.06v.06c.353.1.722.149 1.056.306.244.114.514.265.682.479.56.71.112 1.818-.31 2.473-.213.33-.594.634-.734.996.382-.092.577-.457.792-.754.091-.127.17-.303.325-.362.24-.09.32.354.371.512.065.2.218.546.18.755-.071.401-.415.662-.34 1.116.166-.202.217-.604.482-.702.17-.062.347.095.513.12.36.053.73-.082.996-.326.285-.263.48-.686.408-1.083-.043-.24-.177-.476-.16-.724.012-.2.148-.362.22-.543.173-.427.152-.912-.257-1.189a.86.86 0 00-.362-.138c.033-.222.264-.706.53-.418.188.202.29.558.396.81.389.918.392 2.006-.163 2.865-.394.61-1.02 1.11-1.548 1.6l-.21-.604h-.061c-.07.36.185.772.332 1.086-.33-.075-.645-.415-.996-.362.099.17.748.572.242.754.003.148-.11.25-.2.362-.201.248-.454.618-.766.724l-.573-1.508h-.03c.084.661.314 1.305.61 1.9.154.307.403.611.506.935-.187-.159-.306-.413-.466-.603a6.313 6.313 0 00-.952-.892c-.227-.177-.45-.376-.754-.345.345.31.868.475.835 1.056-.01.165-.193.237-.322.296-.339.155-.67.322-1.026.438-.098.032-.279.12-.382.087-.11-.037-.097-.277-.109-.369-.037-.285.121-1.028-.172-1.146-.128 1.01.132 1.929.21 2.926h-.03c-.17-.737-.439-1.558-.838-2.202-.11-.177-.343-.597-.579-.543l.62 1.086.013.46-.452.08-1.297.033c.047-.373.13-.746.2-1.116.014-.081.074-.326-.078-.326-.14 0-.169.408-.189.507-.108.542-.204 1.106-.205 1.66h-.03c0-.913-.41-1.73-.784-2.535-.104.155.041.377.086.543.099.371.113.737.065 1.116-.612-.118-1.275-.278-1.84-.543.149-.357.576-.889.573-1.267-.554.556-.804 1.335-1.086 2.052h-.03l.12-1.448-.21-1.237c-.132.133-.06.399-.04.573.033.275.015.688-.188.9-.112.117-.226.014-.346-.034-.335-.136-.582-.36-.875-.564-.104-.072-.293-.15-.28-.302.032-.433.656-.638.672-1.026-.72.31-1.062 1.088-1.629 1.57.186-.785.782-1.703.634-2.535-.152.084-.145.295-.185.453a4.324 4.324 0 01-.388.965c-.4-.231-.72-.623-.983-.996-.073-.102-.233-.26-.235-.392-.002-.128.145-.274.225-.362.244-.265.54-.465.872-.603-.237-.147-.706.2-.965.272.175-.37.65-.732.513-1.177-.393.307-.66.97-.935 1.388h-.03l-.574-1.267.754.271c.023-.27-.36-.373-.573-.422.126-.328.476-.578.392-.965h-.06c-.087.28-.269.759-.573.844l-.09-.482h-.03c-.119.253.029.447-.04.687-.037.125-.217.106-.28.222-.085.158-.092.37-.164.539-.172.407-.5.706-.904.874l-.037-.54.459-.515-.483.361c-.062-.161-.203-.465-.12-.633.073-.145.254-.24.362-.362l-.483.241c-.163-.422.135-.3.302-.603-.122.07-.325.2-.471.133-.187-.085-.384-.64-.464-.827l.512-.09v-.03c-.242.03-.626.12-.663-.211h.633v-.03l-.712-.08-.194-.252-.421-.543c.251-.075.683-.075.935 0-.368-.387-1.024.182-1.327-.453l.754-.15v-.03c-.234 0-.67.135-.874.028-.054-.028-.094-.075-.134-.12-.388-.438.48-.478.766-.44.55.076.975.452 1.358.833.194.193.473.538.754.595.278.055.51-.122.724-.263 0 .212-.022.422.15.573 0-.416.005-.857.07-1.267.023-.152.083-.352.263-.38.225-.034.531.309.693.44.002-.234-.175-.432-.319-.603-.396-.47-1.025-.914-1.58-1.177v-.03c.823.142 1.442.625 2.322.392v-.06l-1.026-.15c.043-.321.276-.734.203-1.057-.1-.44-.568-.644-.746-1.025.306.118.63.29.966.297.188.005.336-.098.512-.14.485-.113.766.123 1.086.446.088-.305-.15-.559-.334-.784-.186-.229-.35-.46-.57-.659-.267-.24-.662-.52-.815-.85.25.049.49.256.694.402.359.255.715.503 1.116.691.211.1.578.265.754.054l-.965-.362c.07-.101.17-.188.221-.302.138-.307-.104-.568-.191-.844.185.068.345.227.543.26.464.078.734-.47 1.086-.653L9.11 6.45c.201-.168.112-.494.078-.724-.099-.664-.493-1.251-.59-1.9h.03c.381.816.835 1.696 1.598 2.201l-.277-.363-.477-.723c.095-.037.188-.077.269-.142.528-.423.078-1.012.002-1.517h.03c.065.155.14.314.235.453.441.638 1.023.536 1.696.482l-.18 1.328h.03c.089-.283.258-.516.318-.815.11-.544-.006-1.084-.017-1.629h.03c.048.322.179.63.282.936.162.482.293 1.01.653 1.387l-.331-1.357c.958-.001 1.219-.647 1.236-1.509zm-.271 2.082l-.483 2.172c.372-.227.45-1.053.483-1.448h.03c.065.348.096.696.238 1.025.056.13.117.305.275.302l-.386-1.357zm-2.956.392c.006.771.387 1.473.24 2.262.146-.088.15-.295.152-.452.004-.365-.06-.723-.06-1.086h.03c.105.364.39 1.09.814 1.146-.05-.196-.211-.344-.319-.513-.238-.374-.472-1.13-.857-1.357zm6.184.332c-.336.526-.736 1.245-1.237 1.629v.03c.38-.068.791-.549.905-.905h.03c-.005.536-.251 1.105-.03 1.629h.03c.16-.543.077-1.184.215-1.75.043-.177.203-.473.087-.633zM14.69 6.57c-.178.402-.265.775-.634 1.056v.06c.265.07.45-.262.513-.482h.03c.026.203.05.624.272.694l-.149-.694zm-6.456.03c.065.743 1.063 1.244.935 2.052.16-.094.119-.269.065-.423-.112-.317-.298-.596-.427-.905.289.264.716.562 1.117.393l-.633-.263zm4.163.242c-.091.3-.347.886-.241 1.176h.06l.211-.724h.03c.075.273.153.687.483.724l-.483-1.176zm-2.021.754l.15 1.267h.061l-.03-.905c.197.137.463.474.724.362-.1-.11-.247-.129-.362-.222-.187-.151-.286-.482-.543-.502zm6.636.18c-.318.32-.584.539-1.025.664v.061c.261.075.514-.07.724-.211-.035.177-.26.64-.09.754l.289-.875zm1.539.624c.138.01.242.186.323.282.239.279.508.575.612.935-.697-.144-1.452-.045-2.142.12.154-.405.446-.834.785-1.1.115-.092.258-.25.422-.237zm-6.697.07l-.181.936c.151-.115.187-.481.211-.664l.272.302a1.058 1.058 0 00-.302-.573zm2.956.091l-.573.573.543-.392.09.543c.106-.154.05-.578-.06-.724zm-6.334.078a.252.252 0 00-.06.013v.03c.253.256.463.61.621.935.088.179.063.376.253.483-.015-.353-.166-.62-.302-.935.214.124.5.31.754.24v-.06c-.342-.152-.607-.281-.905-.518-.11-.088-.224-.2-.361-.188zm-2.082.284c.029.255.237.35.422.49a3.5 3.5 0 01.687.657c.127.166.205.452.37.573-.036-.444-.298-.966-.725-1.147v-.03c.434.084.867.246 1.297.06v-.06l-.513-.02zm14.027.09c.296.115.613.522.724.815l-.664-.09zm-7.3.03l-.271.514.301-.332.181.302zm5.95.712a.536.536 0 01.172.031c.365.143.267.9.19 1.188-.061.234-.17.495-.4.604-.167-.3-.415-.496-.724-.64-.154-.073-.41-.101-.517-.243-.103-.137-.208-.646-.068-.78.152-.147.57-.117.766-.117.163 0 .392-.051.581-.043zm-3.054.013l-.513.392.453-.241-.06.362c.128-.09.175-.371.12-.513zm4.404.18c.136.011.37-.002.47.1.331.34.145 1.25-.259 1.44l-.12-.695c.032.002.062 0 .09-.003v.003h.09l-.04-.013c.356-.085.295-.577-.051-.59l-.09-.03.049.032-.018.001v-.003h-.06l.01.011c-.023.005-.046.01-.071.02zm-1.538.122c-.062.063-.152.11-.198.187-.318.545.886.559.546-.03-.039-.068-.108-.111-.167-.157l-.121.06h-.06zm-6.335.12c0 .154-.03.31.12.392v-.301l.363.12zm-1.676.086c-.046.002-.092.005-.134.005.053.194.137.36.302.482l-.181-.392.362.03c-.07-.127-.211-.131-.349-.125zm3.685.011c-.09.01-.168.168-.169.325l.15-.271.182.12c-.05-.132-.109-.18-.163-.174zm-4.845.084l-.513.09.423.513-.241-.422.361-.06zm-2.655.42c-.307.013-.66.365-.904.515v.06l.875.302c-.018-.229-.315-.297-.513-.331l.603-.544a.386.386 0 00-.06-.002zm1.6.063l-1.237.332v.06l.663.238.393.275c-.043-.32-.383-.375-.604-.543.28-.053.66-.058.785-.362zm3.107.332c-.129.02-.23.12-.091.21zm.995.18l-.03.212c.094-.056.11-.105.09-.211zm1.357 0c-.117.035-.214.118-.09.212zm1.117.302l-.302.09v.121zm1.146.03v.362c.113-.11.113-.25 0-.362zm4.272.179c.425.004.846.395.75.847-.062.29-.242.605-.528.718-.149.06-.486.04-.498-.175-.01-.2.388-.478.468-.694-.558.427-.9.79-1.659.694v-.03c.447-.331.634-.895 1.059-1.224a.645.645 0 01.408-.136zm-9.943.032c-.146.076-.235.236-.272.393l.362.09-.2-.193zm-4.585.061l-1.147.603c.04.225.262.104.423.093.23-.015.657.06.784.27l.211-.03c-.054-.342-.546-.342-.814-.363.197-.2.48-.259.543-.573zm5.822.241l-.332.423.422.15-.302-.18c.063-.132.31-.247.212-.393zm-2.625.09l-.362.333c.142.047.468.233.573.09l-.392-.15zm7.813 0l.422.333v.06l-.392.211a.938.938 0 00.543-.211.883.883 0 00-.573-.392zm-9.683.121c-.183.41-.464.743-.784 1.056-.184.179-.471.346-.543.603L7.45 13.8l.694-.14c-.414-.296-1.14.033-1.539.21.275-.55.813-.769.935-1.418l-.03-.03zm5.701.03c-.13.043-.146.149-.18.272l.18.03zm1.237.212l.03.332a.503.503 0 00.272-.332l-.212.15zm-4.193.422c-.13.038-.2.131-.06.211zm5.34.181l-.031.422-.271-.18c.028.182.156.27.332.3l.03-.542zm-6.758.03c-.22.069-.596.692-.694.905.2-.008.895.018.996-.12l-.664-.091zm3.7.059c-.166.01-.327.105-.502.105-.507 0-1.34-.252-1.775.092-.396.314-.42.734-.669 1.132-.121.194-.336.325-.512.465-.065.052-.184.127-.159.227.03.122.238.187.34.233.228.105.477.187.724.238.131.027.328.022.44.103.204.148.135.653.163.876.227-.13.524-.52.633-.755-.241.073-.347.31-.513.483l-.09-.633c.705-.062 1.015-.833 1.43-1.296.253-.282.57-.405.893-.575-.19-.227-.455.013-.634.15-.479.37-.755.816-1.176 1.238l.241-.633h-.03c-.131.314-.288.65-.603.814l.12-.422h-.03c-.127.303-.27.452-.603.452l.301-.694h-.03l-.392.664-.12-.03.301-.573h-.03c-.152.244-.313.59-.633.512l.27-.512c-.15.118-.216.4-.394.471-.081.032-.235-.027-.202-.135.042-.14.272-.278.363-.397.31-.405.56-1.067 1.018-1.316.376-.205.947.054 1.358.05.235-.004.503-.084.573-.333a.427.427 0 00-.072-.001zm-7.591.092l-.03.181.12-.181zm14.875.029c.228.004.48.037.61.214.133.18.101.427.17.632.052-.216.046-1.024.477-.57.349.367.256 1.162-.087 1.502-.216.213-.735.343-.992.144-.393-.303-.494-.926-.608-1.378-.027-.109-.154-.36-.084-.461.058-.086.209-.08.3-.082.065 0 .138-.002.214-.001zm2.65.182c.569.103.615.907 1.117 1.147v.06c-.285.143-.38-.002-.573-.211l.211.392c-.233-.036-.283-.262-.422-.423l.21.453c-.346 0-.493-.057-.633-.392h-.03l.06.271-.214-.152.114-.39zm-4.735.03c-.123.036-.188.105-.09.212zm-4.163.242l.332.362.15-.362-.15.241zm3.047 0l-.03.452-.302-.18c-.017.198.288.424.453.512l-.06-.784zm-8.175.512c-.094.452-.417.859-.707 1.207-.138.166-.35.333-.41.543.5-.144 1.063-.652 1.6-.603-.138-.268-.783.103-1.026.15.196-.29.463-.542.59-.874.052-.14.086-.327-.047-.423zm6.998.272c-.23.036-.218.264-.271.452-.128-.127-.258-.303-.452-.271l.573.694zm-2.805.03l-.302.272-.03-.151h-.09l.03.392c.176-.03.358-.347.392-.513zm.815.483l-.151.392h-.03l-.242-.332.211.694h.03c.08-.202.365-.572.182-.754zm3.348.18l-.09.031.18.995c-.192-.168-.785-.942-1.025-.663.555.177.786.825 1.267 1.116l-.15-.573zm1.508.242c-.153.374.22.775.362 1.116-.392-.202-.74-.539-1.207-.543v.12c.672.06 1.03.747 1.569 1.057-.005-.563-.488-1.21-.664-1.75zm-6.123.453l-.212.03c.072.169.197.306.256.482.065.196.023.466.227.573.095-.212.327-.557.271-.784-.17.085-.252.268-.27.453h-.031zm-2.806.03c0 .592-.08 1.148-.241 1.72.21.007.32-.211.433-.363.225-.299.45-.628.804-.784v-.03c-.359-.047-.807.49-.935.784h-.03c.106-.41.2-.924.03-1.327zm5.31.03c-.244.093-.182.42-.182.633l-.693-.482c.038.123.136.16.228.245.18.167.337.557.586.6zm1.538.573c-.213.377.097 1.154.15 1.569h-.03c-.168-.355-.492-.649-.754-.935-.037-.04-.228-.301-.296-.192-.071.114.278.385.343.463.241.286.459.609.642.935.105.189.197.44.397.543-.15-.778-.39-1.586-.392-2.383zm-10.045.302c.223.066.35.219.362.452l-.694.483zm5.007.24l-.03.031c.147.405.293.742.364 1.177.034.202.013.465.179.603.17-.322.23-.695.385-1.026.09-.19.234-.356.188-.573-.29.143-.461.787-.543 1.086-.15-.399-.104-1.092-.543-1.297zm2.051.303c.341.677.594 1.314.785 2.05.212-.118.183-.329.18-.542-.005-.497.186-.99.152-1.478-.143.048-.168.194-.193.332-.06.329-.06.669-.14.995-.163-.38-.293-1.279-.784-1.357zm6.365.24l.453.665-.664-.302zM8.657 19.18c.647.057.205.652-.06.935zm8.296.724l.272.845c-.224-.157-.488-.414-.604-.664zm-5.502.455l.344.058-.272.965h-.03l-.06-.754zm2.85.174c.062 0 .121.013.169.053.163.138-.067.805-.141.977l-.332-.965c.086-.022.2-.063.304-.065Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/openbugbounty.svg b/assets/lib/simple-icons/icons/openbugbounty.svg
new file mode 100644
index 00000000..8bdb457a
--- /dev/null
+++ b/assets/lib/simple-icons/icons/openbugbounty.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Open Bug Bounty</title><path d="M8.092 2.443a1.388 1.388 0 0 0-1.428 1.611c.42 2.567 2.11 4.115 3.58 4.998a14.12 14.12 0 0 0 .4 2.926H6.52a1.388 1.388 0 0 0 0 2.777h5.155c.39.767.85 1.475 1.37 2.108-1.816 1.36-3.516 3.734-4.34 4.983a1.388 1.388 0 1 0 2.316 1.531c1.376-2.08 3.15-4.046 4.09-4.604a8.208 8.208 0 0 0 3.757 1.416V6.492h-7.484c-.867-.588-1.753-1.506-1.979-2.886a1.388 1.388 0 0 0-1.313-1.163zM18.859 0c-2.971 0-5.501 1.967-6.577 4.765h6.577Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/opencollective.svg b/assets/lib/simple-icons/icons/opencollective.svg
index 1cdef842..70e5816e 100644
--- a/assets/lib/simple-icons/icons/opencollective.svg
+++ b/assets/lib/simple-icons/icons/opencollective.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Open Collective icon</title><path d="M21.86 5.17a11.94 11.94 0 0 1 0 13.66l-3.1-3.1a7.68 7.68 0 0 0 0-7.46l3.1-3.1zm-3.03-3.03l-3.1 3.1a7.71 7.71 0 1 0 0 13.51l3.1 3.11a12 12 0 1 1 0-19.73 M21.86 5.17a11.94 11.94 0 0 1 0 13.66l-3.1-3.1a7.68 7.68 0 0 0 0-7.46l3.1-3.1z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Open Collective</title><path d="M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12c2.54 0 4.894-.79 6.834-2.135l-3.107-3.109a7.715 7.715 0 1 1 0-13.512l3.107-3.109A11.943 11.943 0 0 0 12 0zm9.865 5.166l-3.109 3.107A7.67 7.67 0 0 1 19.715 12a7.682 7.682 0 0 1-.959 3.727l3.109 3.107A11.943 11.943 0 0 0 24 12c0-2.54-.79-4.894-2.135-6.834z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/opencontainersinitiative.svg b/assets/lib/simple-icons/icons/opencontainersinitiative.svg
index 1dee4e85..567c39f0 100644
--- a/assets/lib/simple-icons/icons/opencontainersinitiative.svg
+++ b/assets/lib/simple-icons/icons/opencontainersinitiative.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Open Containers Initiative icon</title><path d="M0 0v24h24V0zm20.547 20.431H3.448V3.573h17.104V20.43zm-5.155-9.979h3.436v8.255h-3.436zm0-5.16h3.436v3.436h-3.436zm-6.789 9.976V8.732h5.074v-3.44H5.164v13.415h8.513v-3.44Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Open Containers Initiative</title><path d="M0 0v24h24V0zm20.547 20.431H3.448V3.573h17.104V20.43zm-5.155-9.979h3.436v8.255h-3.436zm0-5.16h3.436v3.436h-3.436zm-6.789 9.976V8.732h5.074v-3.44H5.164v13.415h8.513v-3.44Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/opencv.svg b/assets/lib/simple-icons/icons/opencv.svg
new file mode 100644
index 00000000..b10543e1
--- /dev/null
+++ b/assets/lib/simple-icons/icons/opencv.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>OpenCV</title><path d="M11.8992.8525C8.735.8525 6.17 3.4175 6.17 6.5817c0 2.102 1.1321 3.9398 2.8198 4.9366l1.6412-2.7849c.0411-.0699.0176-.1593-.0495-.2048-.6233-.4227-1.0328-1.137-1.0328-1.947 0-1.298 1.0524-2.3504 2.3505-2.3504 1.2981 0 2.3505 1.0524 2.3505 2.3505 0 .8098-.4095 1.5242-1.0328 1.947-.0671.0454-.0907.1348-.0495.2047l1.6414 2.785c1.6878-.9969 2.8199-2.8346 2.8199-4.9367 0-3.1642-2.5653-5.7292-5.7295-5.7292zm-6.17 10.8366C2.565 11.6891 0 14.2541 0 17.4183c0 3.1642 2.565 5.7292 5.7292 5.7292 3.1798 0 5.8074-2.6995 5.7275-5.8762H8.2313c-.0847 0-.1513.0717-.1519.1564-.0082 1.266-1.0644 2.3411-2.3502 2.3411-1.2981 0-2.3505-1.0524-2.3505-2.3505 0-1.2982 1.0524-2.3505 2.3505-2.3505.34 0 .663.0724.9547.2022.0713.0318.1566.0077.1962-.0595l1.6464-2.7935c-.8273-.4636-1.7815-.7279-2.7973-.7279zm15.4424.7614l-1.6366 2.7878c-.041.07-.0172.1594.05.2048.624.4217 1.0348 1.1354 1.0363 1.9452.0022 1.298-1.0483 2.352-2.3465 2.3542-1.298.0023-2.3523-1.0482-2.3545-2.3462-.0015-.8098.4068-1.5248 1.0294-1.9486.067-.0457.0905-.1353.0492-.2051l-1.6464-2.7818c-1.6859.9998-2.8146 2.8394-2.811 4.9415.0056 3.1641 2.575 5.7248 5.7393 5.7192 3.1641-.0054 5.7246-2.575 5.7192-5.7392-.0037-2.1022-1.139-3.938-2.8284-4.9318z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/openfaas.svg b/assets/lib/simple-icons/icons/openfaas.svg
new file mode 100644
index 00000000..1fa59c19
--- /dev/null
+++ b/assets/lib/simple-icons/icons/openfaas.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>OpenFaaS</title><path d="M4.304 0A4.31 4.31 0 0 0 0 4.304v15.391A4.31 4.31 0 0 0 4.304 24h15.392A4.31 4.31 0 0 0 24 19.695V4.305A4.31 4.31 0 0 0 19.695 0zm-.006.776h15.398a3.532 3.532 0 0 1 3.528 3.528v15.391c0 .205-.019.409-.054.61-1.234-.015-1.858-.412-2.514-.834-.708-.454-1.51-.97-3.04-.97s-2.33.516-3.038.97c-.17.11-.338.217-.514.317a43.042 43.042 0 0 1-.775-1.907.806.806 0 0 1 .01-.739c.3-.489 1.23-.691 1.572-.729.361-.027 5.97-.555 6.306-7.153a.42.42 0 0 0-.72-.317c-.457.464-1.886 1.634-3 1.47a11.06 11.06 0 0 1-.693-.127c-1.425-.293-3.339-.685-4.972 1.72-1.633-2.406-3.548-2.012-4.972-1.72-.248.05-.48.098-.697.128-1.108.162-2.538-1.007-2.997-1.471a.42.42 0 0 0-.72.316c.336 6.58 5.914 7.124 6.304 7.153.086.012 1.1.16 1.48.717.15.237.184.529.092.793a19.35 19.35 0 0 1-.552 1.747c-.107-.065-.214-.13-.32-.198-.708-.454-1.51-.97-3.039-.97-1.53 0-2.332.516-3.04.97-.654.42-1.277.816-2.5.834a3.532 3.532 0 0 1-.055-.61V4.305A3.532 3.532 0 0 1 4.298.775zm4.474 2.108l-4.74 1.429 1.293 4.288 3.165-.955-.19 1.229 4.894.757.684-4.426-4.62-.715zm10.494.813l-4.938.348.315 4.466 4.938-.347Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/opengl.svg b/assets/lib/simple-icons/icons/opengl.svg
index d5759f33..7cc818a7 100644
--- a/assets/lib/simple-icons/icons/opengl.svg
+++ b/assets/lib/simple-icons/icons/opengl.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>OpenGL icon</title><path d="M7.921 11.382v.376h.009a.696.696 0 0 1 .362-.336c.165-.07.346-.105.543-.105.219 0 .411.039.574.118.163.079.298.185.406.319a1.4 1.4 0 0 1 .244.464c.055.175.082.361.082.558 0 .197-.027.383-.08.558a1.325 1.325 0 0 1-.241.459 1.126 1.126 0 0 1-.406.308 1.345 1.345 0 0 1-.568.113 1.457 1.457 0 0 1-.488-.091.984.984 0 0 1-.239-.132.722.722 0 0 1-.189-.207h-.009v1.432H7.45v-3.835h.471zm1.671.986a1.01 1.01 0 0 0-.159-.33.78.78 0 0 0-.274-.231.849.849 0 0 0-.392-.086c-.157 0-.29.03-.4.091a.783.783 0 0 0-.268.239.992.992 0 0 0-.151.335 1.577 1.577 0 0 0 .003.775.966.966 0 0 0 .156.335.785.785 0 0 0 .276.233c.113.059.25.088.411.088.161 0 .295-.03.402-.091a.744.744 0 0 0 .26-.241c.066-.1.113-.214.142-.343.029-.129.044-.261.044-.397a1.343 1.343 0 0 0-.05-.377zm2.951 1.611c-.213.157-.48.236-.803.236a1.5 1.5 0 0 1-.591-.107 1.17 1.17 0 0 1-.421-.301 1.272 1.272 0 0 1-.256-.461 2.157 2.157 0 0 1-.096-.585c0-.211.033-.404.099-.579.066-.175.159-.327.278-.456a1.25 1.25 0 0 1 .424-.3c.163-.072.342-.107.537-.107.253 0 .463.051.63.153.167.102.301.232.402.39.101.158.171.33.209.516.039.186.054.364.047.532h-2.127c-.004.121.011.237.044.345a.779.779 0 0 0 .159.289.778.778 0 0 0 .28.201c.113.05.247.075.401.075a.826.826 0 0 0 .486-.134.654.654 0 0 0 .25-.408h.462c-.064.31-.201.544-.414.701zm-.114-1.78a.792.792 0 0 0-.743-.477.827.827 0 0 0-.326.062.737.737 0 0 0-.249.169.81.81 0 0 0-.164.249.926.926 0 0 0-.071.302h1.628a.93.93 0 0 0-.075-.305zm1.327-.817v.44h.009c.195-.337.504-.505.928-.505.188 0 .344.025.469.075.125.05.226.12.304.21.077.09.132.196.163.32s.047.261.047.411v1.827h-.471v-1.879a.546.546 0 0 0-.154-.408.582.582 0 0 0-.424-.15.978.978 0 0 0-.372.065.696.696 0 0 0-.262.183.785.785 0 0 0-.157.276 1.096 1.096 0 0 0-.052.346v1.568h-.471v-2.777h.443zm5.174 2.747a1.67 1.67 0 0 1-.644.131c-.342 0-.649-.058-.922-.174a1.976 1.976 0 0 1-.691-.48 2.112 2.112 0 0 1-.431-.719c-.1-.275-.15-.572-.15-.89 0-.326.05-.629.15-.909.1-.279.243-.523.43-.731.187-.208.417-.371.69-.49a2.3 2.3 0 0 1 .922-.177c.229 0 .451.034.665.101.215.068.408.167.581.297a1.6 1.6 0 0 1 .634 1.144h-.937c-.058-.244-.171-.427-.338-.55a1 1 0 0 0-.606-.183c-.221 0-.408.042-.563.125s-.279.196-.375.337a1.444 1.444 0 0 0-.209.48 2.327 2.327 0 0 0 0 1.092c.044.173.114.329.21.468.096.139.221.25.375.333.154.084.342.125.563.125.325 0 .577-.08.754-.241.177-.16.281-.393.31-.698h-.987v-.717h1.872v2.358h-.623l-.1-.495a1.44 1.44 0 0 1-.58.463zM21.825 9.8v3.55H24v.809h-3.154V9.8h.979zM3.801 13.98c.053.03.107.059.164.085.267.124.578.186.933.186.355 0 .666-.062.933-.186s.491-.292.67-.503c.179-.211.314-.454.404-.728.09-.274.135-.56.135-.856 0-.297-.045-.582-.135-.856a2.135 2.135 0 0 0-.404-.728 1.966 1.966 0 0 0-.67-.506 2.17 2.17 0 0 0-.933-.189c-.355 0-.666.063-.933.189l-.03.015c1.425-1.199 4.034-2.001 7.017-2.001 2.512 0 4.765.516 6.263 1.412-1.635-1.501-4.566-2.555-7.918-2.556C4.162 6.757 0 9.103 0 11.999c0 2.895 4.161 5.243 9.294 5.244 3.338.001 6.262-1.051 7.901-2.541-1.498.89-3.741 1.397-6.244 1.397-3.078-.001-5.759-.856-7.15-2.119zm.395-3.638c.196-.104.43-.156.702-.156.272 0 .506.052.702.156.196.104.357.241.483.412.125.171.217.363.276.577a2.43 2.43 0 0 1 0 1.3c-.059.214-.15.406-.276.576a1.393 1.393 0 0 1-.483.412c-.197.104-.43.155-.702.155a1.49 1.49 0 0 1-.702-.155 1.402 1.402 0 0 1-.483-.412 1.765 1.765 0 0 1-.276-.576 2.43 2.43 0 0 1 0-1.3 1.74 1.74 0 0 1 .276-.577c.125-.171.286-.308.483-.412z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>OpenGL</title><path d="M7.921 11.382v.376h.009a.696.696 0 0 1 .362-.336c.165-.07.346-.105.543-.105.219 0 .411.039.574.118.163.079.298.185.406.319a1.4 1.4 0 0 1 .244.464c.055.175.082.361.082.558 0 .197-.027.383-.08.558a1.325 1.325 0 0 1-.241.459 1.126 1.126 0 0 1-.406.308 1.345 1.345 0 0 1-.568.113 1.457 1.457 0 0 1-.488-.091.984.984 0 0 1-.239-.132.722.722 0 0 1-.189-.207h-.009v1.432H7.45v-3.835h.471zm1.671.986a1.01 1.01 0 0 0-.159-.33.78.78 0 0 0-.274-.231.849.849 0 0 0-.392-.086c-.157 0-.29.03-.4.091a.783.783 0 0 0-.268.239.992.992 0 0 0-.151.335 1.577 1.577 0 0 0 .003.775.966.966 0 0 0 .156.335.785.785 0 0 0 .276.233c.113.059.25.088.411.088.161 0 .295-.03.402-.091a.744.744 0 0 0 .26-.241c.066-.1.113-.214.142-.343.029-.129.044-.261.044-.397a1.343 1.343 0 0 0-.05-.377zm2.951 1.611c-.213.157-.48.236-.803.236a1.5 1.5 0 0 1-.591-.107 1.17 1.17 0 0 1-.421-.301 1.272 1.272 0 0 1-.256-.461 2.157 2.157 0 0 1-.096-.585c0-.211.033-.404.099-.579.066-.175.159-.327.278-.456a1.25 1.25 0 0 1 .424-.3c.163-.072.342-.107.537-.107.253 0 .463.051.63.153.167.102.301.232.402.39.101.158.171.33.209.516.039.186.054.364.047.532h-2.127c-.004.121.011.237.044.345a.779.779 0 0 0 .159.289.778.778 0 0 0 .28.201c.113.05.247.075.401.075a.826.826 0 0 0 .486-.134.654.654 0 0 0 .25-.408h.462c-.064.31-.201.544-.414.701zm-.114-1.78a.792.792 0 0 0-.743-.477.827.827 0 0 0-.326.062.737.737 0 0 0-.249.169.81.81 0 0 0-.164.249.926.926 0 0 0-.071.302h1.628a.93.93 0 0 0-.075-.305zm1.327-.817v.44h.009c.195-.337.504-.505.928-.505.188 0 .344.025.469.075.125.05.226.12.304.21.077.09.132.196.163.32s.047.261.047.411v1.827h-.471v-1.879a.546.546 0 0 0-.154-.408.582.582 0 0 0-.424-.15.978.978 0 0 0-.372.065.696.696 0 0 0-.262.183.785.785 0 0 0-.157.276 1.096 1.096 0 0 0-.052.346v1.568h-.471v-2.777h.443zm5.174 2.747a1.67 1.67 0 0 1-.644.131c-.342 0-.649-.058-.922-.174a1.976 1.976 0 0 1-.691-.48 2.112 2.112 0 0 1-.431-.719c-.1-.275-.15-.572-.15-.89 0-.326.05-.629.15-.909.1-.279.243-.523.43-.731.187-.208.417-.371.69-.49a2.3 2.3 0 0 1 .922-.177c.229 0 .451.034.665.101.215.068.408.167.581.297a1.6 1.6 0 0 1 .634 1.144h-.937c-.058-.244-.171-.427-.338-.55a1 1 0 0 0-.606-.183c-.221 0-.408.042-.563.125s-.279.196-.375.337a1.444 1.444 0 0 0-.209.48 2.327 2.327 0 0 0 0 1.092c.044.173.114.329.21.468.096.139.221.25.375.333.154.084.342.125.563.125.325 0 .577-.08.754-.241.177-.16.281-.393.31-.698h-.987v-.717h1.872v2.358h-.623l-.1-.495a1.44 1.44 0 0 1-.58.463zM21.825 9.8v3.55H24v.809h-3.154V9.8h.979zM3.801 13.98c.053.03.107.059.164.085.267.124.578.186.933.186.355 0 .666-.062.933-.186s.491-.292.67-.503c.179-.211.314-.454.404-.728.09-.274.135-.56.135-.856 0-.297-.045-.582-.135-.856a2.135 2.135 0 0 0-.404-.728 1.966 1.966 0 0 0-.67-.506 2.17 2.17 0 0 0-.933-.189c-.355 0-.666.063-.933.189l-.03.015c1.425-1.199 4.034-2.001 7.017-2.001 2.512 0 4.765.516 6.263 1.412-1.635-1.501-4.566-2.555-7.918-2.556C4.162 6.757 0 9.103 0 11.999c0 2.895 4.161 5.243 9.294 5.244 3.338.001 6.262-1.051 7.901-2.541-1.498.89-3.741 1.397-6.244 1.397-3.078-.001-5.759-.856-7.15-2.119zm.395-3.638c.196-.104.43-.156.702-.156.272 0 .506.052.702.156.196.104.357.241.483.412.125.171.217.363.276.577a2.43 2.43 0 0 1 0 1.3c-.059.214-.15.406-.276.576a1.393 1.393 0 0 1-.483.412c-.197.104-.43.155-.702.155a1.49 1.49 0 0 1-.702-.155 1.402 1.402 0 0 1-.483-.412 1.765 1.765 0 0 1-.276-.576 2.43 2.43 0 0 1 0-1.3 1.74 1.74 0 0 1 .276-.577c.125-.171.286-.308.483-.412z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/openid.svg b/assets/lib/simple-icons/icons/openid.svg
index e304a6b1..b76212d1 100644
--- a/assets/lib/simple-icons/icons/openid.svg
+++ b/assets/lib/simple-icons/icons/openid.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>OpenID icon</title><path d="M14.54 .887L10.91 2.66V20.83C6.76 20.31 3.64 18.05 3.64 15.33C3.64 12.75 6.44 10.58 10.27 9.92V7.61C4.42 8.32 0 11.5 0 15.33C0 19.29 4.74 22.57 10.91 23.11L14.54 21.4V.886M15.18 7.61V9.92C16.61 10.17 17.89 10.62 18.94 11.23L16.97 12.34L24 13.87L23.5 8.66L21.63 9.72C19.89 8.66 17.67 7.91 15.18 7.61Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>OpenID</title><path d="M14.54.889l-3.63 1.773v18.17c-4.15-.52-7.27-2.78-7.27-5.5 0-2.58 2.8-4.75 6.63-5.41v-2.31C4.42 8.322 0 11.502 0 15.332c0 3.96 4.74 7.24 10.91 7.78l3.63-1.71V.888m.64 6.724v2.31c1.43.25 2.71.7 3.76 1.31l-1.97 1.11 7.03 1.53-.5-5.21-1.87 1.06c-1.74-1.06-3.96-1.81-6.45-2.11z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/openlayers.svg b/assets/lib/simple-icons/icons/openlayers.svg
new file mode 100644
index 00000000..1fd15f4d
--- /dev/null
+++ b/assets/lib/simple-icons/icons/openlayers.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Openlayers</title><path d="M23.7 13.08a3.498 3.498 0 0 1-1.119 1.619l-7.426 6.196a5.137 5.137 0 0 1-6.317 0L1.412 14.7a3.578 3.578 0 0 1-1.12-1.62 3.298 3.298 0 0 0 1.12 3.639l7.426 6.196a5.137 5.137 0 0 0 6.317 0l7.426-6.196a3.298 3.298 0 0 0 1.12-3.639M8.838 1.086a5.137 5.137 0 0 1 6.317 0l7.426 6.196a3.298 3.298 0 0 1 0 5.258l-7.426 6.187a5.137 5.137 0 0 1-6.317 0L1.412 12.53a3.298 3.298 0 0 1 0-5.248z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/openmined.svg b/assets/lib/simple-icons/icons/openmined.svg
new file mode 100644
index 00000000..79649892
--- /dev/null
+++ b/assets/lib/simple-icons/icons/openmined.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>OpenMined</title><path d="M12 0c-.486 0-.972.242-1.25.725L7.082 7.082.725 10.75a1.44 1.44 0 000 2.5l6.357 3.668 3.668 6.357a1.44 1.44 0 002.5 0l3.668-6.357 6.357-3.668c.967-.544.967-1.945 0-2.5l-6.357-3.668L13.25.725A1.429 1.429 0 0012 0zm.006 4.237l7.757 7.769-7.769 7.757-7.757-7.757zm-.012 3.112l-4.656 4.657 4.656 4.656 4.657-4.656z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/opennebula.svg b/assets/lib/simple-icons/icons/opennebula.svg
new file mode 100644
index 00000000..3a664a60
--- /dev/null
+++ b/assets/lib/simple-icons/icons/opennebula.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>OpenNebula</title><path d="M21.458 20.15v3.453s-.007.206-.087.283a.382.382 0 0 1-.294.113c-3.859-.005-7.718-.01-11.577-.003-1.576-.005-3.25-.173-4.532-1.117-.074-.08-.485-.289-.188-.259a91.722 91.722 0 0 0 14.367-1.92 92.308 92.308 0 0 0 2.31-.55zm-18.186.814c.206.302.36.766.71.898 5.88-.29 11.76-1.083 17.476-2.536v-3.391c-2.437 1.16-4.983 2.097-7.558 2.87a64.756 64.756 0 0 1-10.628 2.16zm-.66-1.886c.06.387.158.751.299 1.127 6.167-.726 12.276-2.236 17.925-4.864.207-.098.414-.198.62-.298v-3.278c-4.392 2.987-9.392 4.986-14.503 6.329-1.438.363-2.876.74-4.341.984zm10.85-6.692c-3.178 1.803-6.578 3.195-10.067 4.238-.257.14-.734.086-.732.469a5.21 5.21 0 0 0-.12 1.18c5.668-1.085 11.252-2.89 16.283-5.793a34.33 34.33 0 0 0 2.632-1.685V5.899c-2.213 2.657-5.019 4.774-7.997 6.487zM20.905.126c-.963.413-4.859 2.33-5.443 4.875-.236.323-.596-.08-.854-.163-2.209-1.091-5.008-.736-6.9.872C5.82 7.238 4.782 9.976 5.65 12.348c.136.279.277.653-.018.883-.35.243-.743.419-1.05.728-.625.527-1.17 1.204-1.5 1.926 5.184-1.574 10.26-3.834 14.504-7.283 1.423-1.183 2.757-2.503 3.87-3.982V.083c-.073-.154-.296-.067-.551.043z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/opensea.svg b/assets/lib/simple-icons/icons/opensea.svg
new file mode 100644
index 00000000..a26d986b
--- /dev/null
+++ b/assets/lib/simple-icons/icons/opensea.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>OpenSea</title><path d="M12 0C5.374 0 0 5.374 0 12s5.374 12 12 12 12-5.374 12-12S18.629 0 12 0ZM5.92 12.403l.051-.081 3.123-4.884a.107.107 0 0 1 .187.014c.52 1.169.972 2.623.76 3.528-.088.372-.335.876-.614 1.342a2.405 2.405 0 0 1-.117.199.106.106 0 0 1-.09.045H6.013a.106.106 0 0 1-.091-.163zm13.914 1.68a.109.109 0 0 1-.065.101c-.243.103-1.07.485-1.414.962-.878 1.222-1.548 2.97-3.048 2.97H9.053a4.019 4.019 0 0 1-4.013-4.028v-.072c0-.058.048-.106.108-.106h3.485c.07 0 .12.063.115.132-.026.226.017.459.125.67.206.42.636.682 1.099.682h1.726v-1.347H9.99a.11.11 0 0 1-.089-.173l.063-.09c.16-.231.391-.586.621-.992.156-.274.308-.566.43-.86.024-.052.043-.107.065-.16.033-.094.067-.182.091-.269a4.57 4.57 0 0 0 .065-.223c.057-.25.081-.514.081-.787 0-.108-.004-.221-.014-.327-.005-.117-.02-.235-.034-.352a3.415 3.415 0 0 0-.048-.312 6.494 6.494 0 0 0-.098-.468l-.014-.06c-.03-.108-.056-.21-.09-.317a11.824 11.824 0 0 0-.328-.972 5.212 5.212 0 0 0-.142-.355c-.072-.178-.146-.339-.213-.49a3.564 3.564 0 0 1-.094-.197 4.658 4.658 0 0 0-.103-.213c-.024-.053-.053-.104-.072-.152l-.211-.388c-.029-.053.019-.118.077-.101l1.32.357h.01l.173.05.192.054.07.019v-.783c0-.379.302-.686.679-.686a.66.66 0 0 1 .477.202.69.69 0 0 1 .2.484V6.65l.141.039c.01.005.022.01.031.017.034.024.084.062.147.11.05.038.103.086.165.137a10.351 10.351 0 0 1 .574.504c.214.199.454.432.684.691.065.074.127.146.192.226.062.079.132.156.19.232.079.104.16.212.235.324.033.053.074.108.105.161.096.142.178.288.257.435.034.067.067.141.096.213.089.197.159.396.202.598a.65.65 0 0 1 .029.132v.01c.014.057.019.12.024.184a2.057 2.057 0 0 1-.106.874c-.031.084-.06.17-.098.254-.075.17-.161.343-.264.502-.034.06-.075.122-.113.182-.043.063-.089.123-.127.18a3.89 3.89 0 0 1-.173.221c-.053.072-.106.144-.166.209-.081.098-.16.19-.245.278-.048.058-.1.118-.156.17-.052.06-.108.113-.156.161-.084.084-.15.147-.208.202l-.137.122a.102.102 0 0 1-.072.03h-1.051v1.346h1.322c.295 0 .576-.104.804-.298.077-.067.415-.36.816-.802a.094.094 0 0 1 .05-.03l3.65-1.057a.108.108 0 0 1 .138.103z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/opensearch.svg b/assets/lib/simple-icons/icons/opensearch.svg
new file mode 100644
index 00000000..02063bbd
--- /dev/null
+++ b/assets/lib/simple-icons/icons/opensearch.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>OpenSearch</title><path d="M23.1515 8.8125a.8484.8484 0 0 0-.8484.8485c0 6.982-5.6601 12.6421-12.6421 12.6421a.8485.8485 0 0 0 0 1.6969C17.5802 24 24 17.5802 24 9.661a.8485.8485 0 0 0-.8485-.8485Zm-5.121 5.4375c.816-1.3311 1.6051-3.1058 1.4498-5.5905-.3216-5.1468-4.9832-9.0512-9.3851-8.6281C8.372.1971 6.6025 1.6017 6.7598 4.1177c.0683 1.0934.6034 1.7386 1.473 2.2348.8279.4722 1.8914.7713 3.097 1.1104 1.4563.4096 3.1455.8697 4.4438 1.8265 1.5561 1.1467 2.6198 2.4759 2.2569 4.9606Zm-16.561-9C.6535 6.581-.1355 8.3558.0197 10.8405c.3216 5.1468 4.9832 9.0512 9.385 8.6281 1.7233-.1657 3.4927-1.5703 3.3355-4.0863-.0683-1.0934-.6034-1.7386-1.4731-2.2348-.8278-.4722-1.8913-.7713-3.0969-1.1104-1.4563-.4096-3.1455-.8697-4.4438-1.8265-1.5561-1.1467-2.6198-2.476-2.257-4.9606Z"/></svg>
diff --git a/assets/lib/simple-icons/icons/opensourceinitiative.svg b/assets/lib/simple-icons/icons/opensourceinitiative.svg
index ca38e8f0..186fa100 100644
--- a/assets/lib/simple-icons/icons/opensourceinitiative.svg
+++ b/assets/lib/simple-icons/icons/opensourceinitiative.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Open Source Initiative icon</title><path d="M-.102 12.53C.01 5.956 4.613 1.277 10.248.52c6.718-.9 12.371 3.67 13.456 9.735 1.03 5.75-2.13 11.133-7.339 13.263-.45.184-.697.082-.87-.373l-2.587-6.728c-.15-.392-.048-.64.34-.814 1.17-.532 1.901-1.423 2.095-2.7a3.46 3.46 0 0 0-3.122-3.98 3.463 3.463 0 0 0-3.75 2.89c-.253 1.598.536 3.084 2.027 3.76.464.214.556.418.377.892l-2.6 6.772c-.125.334-.4.45-.75.315a11.98 11.98 0 0 1-6.33-5.76c-1.206-2.383-1.22-4.247-1.297-5.263zm1.012-.092c.02.32.03.692.063 1.07.305 3.48 2.4 6.946 6.34 8.862.156.073.214.04.272-.11q1.082-2.84 2.178-5.68c.063-.16.03-.231-.116-.323-1.53-.963-2.29-2.348-2.207-4.163.048-1.045.45-1.96 1.152-2.725 1.452-1.583 3.727-1.927 5.59-.852a4.436 4.436 0 0 1 2.188 4.376c-.174 1.48-.934 2.609-2.212 3.378-.13.078-.17.14-.11.29q1.102 2.847 2.187 5.698c.058.15.116.184.27.11 1.72-.802 3.157-1.95 4.265-3.484 1.685-2.333 2.377-4.932 2.048-7.793-.663-5.687-5.78-10.397-12.368-9.584-5.135.63-9.453 4.96-9.54 10.93z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Open Source Initiative</title><path d="M11.959.447A11.938 11.938 0 000 12.407c0 5.576 3.874 10.097 7.783 11.114.193.05.392-.05.467-.234l2.771-6.822a.396.396 0 00-.246-.528C9.365 15.47 8.53 14.32 8.48 12.4c-.024-1.828 1.5-3.45 3.561-3.447 1.931.003 3.479 1.632 3.479 3.453 0 .966-.203 1.687-.575 2.238-.371.552-.922.951-1.695 1.239a.396.396 0 00-.23.515l2.685 6.903a.396.396 0 00.465.24C20.163 22.534 24 18.062 24 12.406 24 5.804 18.603.447 11.959.447zm0 .791c6.22 0 11.25 4.997 11.25 11.168 0 5.138-3.423 9.208-6.895 10.272L13.9 16.47c.703-.308 1.302-.79 1.702-1.384.477-.708.709-1.602.709-2.68 0-2.266-1.898-4.24-4.27-4.244-2.48-.004-4.382 1.976-4.352 4.25.023 1.995.934 3.492 2.451 4.13L7.648 22.66C4.251 21.592.791 17.458.791 12.406A11.13 11.13 0 0111.959 1.238zm10.617 20.149a1.03 1.03 0 000 2.058 1.03 1.03 0 000-2.058zm0 .162c.48 0 .865.388.865.867a.856.856 0 01-.271.623l-.172-.342a.847.847 0 00-.111-.178.263.263 0 00-.114-.084.301.301 0 00.17-.117.356.356 0 00.061-.21c0-.13-.038-.227-.113-.292-.076-.064-.192-.095-.346-.095h-.41v1.343h.181v-.568h.2c.072 0 .128.015.17.045a.48.48 0 01.129.18l.171.343.157.001a.878.878 0 01-.567.216.865.865 0 010-1.732zm-.26.322h.229c.088 0 .155.018.2.059.044.04.066.099.066.177 0 .079-.022.14-.067.18-.044.04-.111.06-.2.06h-.228z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/openssl.svg b/assets/lib/simple-icons/icons/openssl.svg
index 7ca2a1fe..7d094ef5 100644
--- a/assets/lib/simple-icons/icons/openssl.svg
+++ b/assets/lib/simple-icons/icons/openssl.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>OpenSSL icon</title><path d="M1.961,13.532c-0.303,0-0.575-0.052-0.818-0.157c-0.243-0.105-0.448-0.25-0.616-0.437 c-0.168-0.187-0.298-0.408-0.389-0.664C0.046,12.018,0,11.741,0,11.442c0-0.299,0.046-0.576,0.137-0.832 c0.091-0.256,0.221-0.477,0.389-0.664C0.695,9.759,0.9,9.613,1.143,9.508c0.243-0.105,0.516-0.157,0.818-0.157 c0.303,0,0.575,0.052,0.818,0.157c0.243,0.105,0.448,0.25,0.616,0.437c0.168,0.187,0.298,0.408,0.389,0.664 c0.091,0.256,0.137,0.533,0.137,0.832c0,0.299-0.046,0.576-0.137,0.832c-0.092,0.256-0.221,0.477-0.389,0.664 c-0.168,0.187-0.374,0.333-0.616,0.437C2.536,13.479,2.264,13.532,1.961,13.532z M1.961,13.089c0.235,0,0.443-0.042,0.622-0.126 s0.331-0.199,0.454-0.345c0.123-0.146,0.216-0.319,0.277-0.521c0.062-0.202,0.092-0.42,0.092-0.656 c0-0.235-0.031-0.454-0.092-0.656c-0.062-0.202-0.154-0.376-0.277-0.524c-0.123-0.148-0.275-0.263-0.454-0.347 S2.197,9.789,1.961,9.789c-0.235,0-0.443,0.042-0.622,0.126c-0.179,0.084-0.331,0.2-0.454,0.347 c-0.123,0.148-0.216,0.322-0.277,0.524c-0.062,0.202-0.092,0.42-0.092,0.656c0,0.235,0.031,0.454,0.092,0.656 c0.062,0.202,0.154,0.375,0.277,0.521c0.123,0.146,0.275,0.261,0.454,0.345C1.519,13.047,1.726,13.089,1.961,13.089z M4.455,10.551 h0.454v0.409H4.92c0.108-0.149,0.237-0.266,0.387-0.35c0.149-0.084,0.331-0.126,0.544-0.126c0.183,0,0.351,0.035,0.504,0.104 c0.153,0.069,0.284,0.168,0.392,0.297c0.108,0.129,0.193,0.289,0.255,0.479c0.062,0.191,0.092,0.405,0.092,0.644 c0,0.232-0.029,0.442-0.087,0.63c-0.058,0.189-0.141,0.349-0.249,0.482c-0.108,0.133-0.241,0.234-0.398,0.305 c-0.157,0.071-0.333,0.106-0.527,0.106c-0.198,0-0.37-0.032-0.516-0.095c-0.146-0.063-0.278-0.174-0.398-0.331H4.909v1.557H4.455 V10.551z M5.8,13.151c0.138,0,0.26-0.029,0.364-0.087c0.105-0.058,0.191-0.137,0.261-0.238c0.069-0.101,0.12-0.22,0.154-0.359 c0.034-0.138,0.05-0.289,0.05-0.454c0-0.161-0.017-0.311-0.05-0.451c-0.034-0.14-0.085-0.261-0.154-0.364 c-0.069-0.103-0.155-0.183-0.258-0.241c-0.103-0.058-0.223-0.087-0.361-0.087c-0.157,0-0.294,0.03-0.412,0.09 c-0.118,0.06-0.214,0.142-0.289,0.247c-0.075,0.105-0.131,0.226-0.168,0.364c-0.037,0.138-0.056,0.286-0.056,0.443 c0,0.157,0.017,0.305,0.05,0.443c0.034,0.138,0.087,0.259,0.16,0.361c0.073,0.103,0.167,0.184,0.283,0.244 C5.49,13.121,5.632,13.151,5.8,13.151z M8.837,13.526c-0.22,0-0.417-0.04-0.591-0.12c-0.174-0.08-0.32-0.19-0.44-0.328 c-0.12-0.138-0.211-0.3-0.275-0.485c-0.064-0.185-0.095-0.382-0.095-0.591c0-0.209,0.033-0.406,0.098-0.591 c0.065-0.185,0.159-0.346,0.28-0.485c0.121-0.138,0.266-0.247,0.434-0.328c0.168-0.08,0.355-0.12,0.56-0.12 c0.217,0,0.408,0.04,0.574,0.12c0.166,0.08,0.305,0.192,0.417,0.336c0.112,0.144,0.197,0.316,0.255,0.516 c0.058,0.2,0.087,0.419,0.087,0.658H7.901c0.007,0.146,0.034,0.282,0.078,0.409c0.045,0.127,0.106,0.237,0.185,0.331 c0.078,0.093,0.174,0.166,0.286,0.219c0.112,0.052,0.241,0.078,0.387,0.078c0.213,0,0.387-0.049,0.521-0.148 c0.134-0.099,0.228-0.247,0.28-0.445h0.443c-0.067,0.314-0.209,0.555-0.426,0.723C9.438,13.442,9.165,13.526,8.837,13.526z M8.809,10.837c-0.134,0-0.254,0.023-0.359,0.07c-0.105,0.047-0.193,0.112-0.266,0.196c-0.073,0.084-0.133,0.183-0.179,0.297 c-0.047,0.114-0.078,0.236-0.092,0.367h1.743c-0.015-0.291-0.094-0.519-0.238-0.684C9.273,10.919,9.07,10.837,8.809,10.837z M11.12,10.932h0.011c0.105-0.138,0.231-0.247,0.378-0.328c0.148-0.08,0.328-0.12,0.541-0.12c0.303,0,0.541,0.079,0.714,0.238 c0.174,0.159,0.261,0.389,0.261,0.692v2.034h-0.454v-1.995c0-0.191-0.058-0.336-0.174-0.437c-0.116-0.101-0.276-0.151-0.482-0.151 c-0.116,0-0.222,0.02-0.319,0.059c-0.097,0.039-0.181,0.093-0.252,0.163c-0.071,0.069-0.126,0.153-0.165,0.252 c-0.039,0.099-0.059,0.208-0.059,0.328v1.782h-0.454v-2.897h0.454V10.932z M15.409,13.53c-0.549,0-0.972-0.116-1.271-0.347 c-0.299-0.231-0.456-0.561-0.47-0.989h0.8c0.03,0.244,0.116,0.418,0.259,0.521c0.143,0.103,0.359,0.155,0.648,0.155 c0.105,0,0.205-0.009,0.299-0.028c0.094-0.019,0.177-0.049,0.248-0.09c0.071-0.041,0.129-0.095,0.172-0.161 c0.043-0.066,0.065-0.146,0.065-0.24c0-0.098-0.024-0.178-0.07-0.242c-0.047-0.064-0.114-0.117-0.2-0.161 c-0.086-0.043-0.191-0.081-0.313-0.113c-0.122-0.032-0.26-0.065-0.414-0.099c-0.18-0.041-0.354-0.087-0.521-0.138 c-0.167-0.051-0.314-0.119-0.44-0.206c-0.126-0.086-0.227-0.197-0.304-0.332c-0.077-0.135-0.116-0.308-0.116-0.518 c0-0.199,0.038-0.374,0.116-0.524c0.077-0.15,0.184-0.276,0.321-0.378c0.137-0.101,0.3-0.178,0.487-0.228 c0.188-0.051,0.394-0.076,0.62-0.076c0.454,0,0.82,0.107,1.096,0.321c0.276,0.214,0.429,0.526,0.459,0.935h-0.783 c-0.023-0.203-0.105-0.355-0.248-0.456c-0.143-0.101-0.319-0.152-0.53-0.152c-0.222,0-0.398,0.043-0.53,0.13 c-0.132,0.086-0.197,0.201-0.197,0.344c0,0.083,0.018,0.151,0.054,0.206c0.036,0.055,0.09,0.102,0.163,0.144 c0.073,0.041,0.164,0.077,0.273,0.107c0.109,0.03,0.238,0.062,0.389,0.096c0.207,0.045,0.401,0.095,0.583,0.149 c0.182,0.055,0.342,0.127,0.479,0.217c0.137,0.09,0.245,0.205,0.324,0.344c0.079,0.139,0.118,0.318,0.118,0.535 c0,0.203-0.039,0.384-0.118,0.544c-0.079,0.16-0.188,0.293-0.327,0.4c-0.139,0.107-0.304,0.189-0.496,0.245 C15.843,13.501,15.635,13.53,15.409,13.53z M19.168,13.53c-0.549,0-0.972-0.116-1.271-0.347s-0.456-0.561-0.47-0.989h0.8 c0.03,0.244,0.116,0.418,0.259,0.521c0.143,0.103,0.359,0.155,0.648,0.155c0.105,0,0.205-0.009,0.299-0.028 c0.094-0.019,0.177-0.049,0.248-0.09c0.071-0.041,0.129-0.095,0.172-0.161c0.043-0.066,0.065-0.146,0.065-0.24 c0-0.098-0.024-0.178-0.07-0.242c-0.047-0.064-0.114-0.117-0.2-0.161c-0.086-0.043-0.191-0.081-0.313-0.113 c-0.122-0.032-0.26-0.065-0.414-0.099c-0.18-0.041-0.354-0.087-0.521-0.138c-0.167-0.051-0.314-0.119-0.44-0.206 c-0.126-0.086-0.227-0.197-0.304-0.332c-0.077-0.135-0.116-0.308-0.116-0.518c0-0.199,0.038-0.374,0.116-0.524 c0.077-0.15,0.184-0.276,0.321-0.378c0.137-0.101,0.3-0.178,0.487-0.228c0.188-0.051,0.394-0.076,0.62-0.076 c0.454,0,0.82,0.107,1.096,0.321c0.276,0.214,0.429,0.526,0.459,0.935h-0.783c-0.023-0.203-0.105-0.355-0.248-0.456 c-0.143-0.101-0.319-0.152-0.53-0.152c-0.222,0-0.398,0.043-0.53,0.13c-0.132,0.086-0.197,0.201-0.197,0.344 c0,0.083,0.018,0.151,0.054,0.206c0.036,0.055,0.09,0.102,0.163,0.144c0.073,0.041,0.164,0.077,0.273,0.107 c0.109,0.03,0.238,0.062,0.389,0.096c0.207,0.045,0.401,0.095,0.583,0.149c0.182,0.055,0.342,0.127,0.479,0.217 c0.137,0.09,0.245,0.205,0.324,0.344c0.079,0.139,0.118,0.318,0.118,0.535c0,0.203-0.039,0.384-0.118,0.544 c-0.079,0.16-0.188,0.293-0.327,0.4c-0.139,0.107-0.304,0.189-0.496,0.245C19.602,13.501,19.393,13.53,19.168,13.53z M21.29,9.41 h0.817v3.347H24v0.682h-2.71V9.41z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>OpenSSL</title><path d="M1.961,13.532c-0.303,0-0.575-0.052-0.818-0.157c-0.243-0.105-0.448-0.25-0.616-0.437 c-0.168-0.187-0.298-0.408-0.389-0.664C0.046,12.018,0,11.741,0,11.442c0-0.299,0.046-0.576,0.137-0.832 c0.091-0.256,0.221-0.477,0.389-0.664C0.695,9.759,0.9,9.613,1.143,9.508c0.243-0.105,0.516-0.157,0.818-0.157 c0.303,0,0.575,0.052,0.818,0.157c0.243,0.105,0.448,0.25,0.616,0.437c0.168,0.187,0.298,0.408,0.389,0.664 c0.091,0.256,0.137,0.533,0.137,0.832c0,0.299-0.046,0.576-0.137,0.832c-0.092,0.256-0.221,0.477-0.389,0.664 c-0.168,0.187-0.374,0.333-0.616,0.437C2.536,13.479,2.264,13.532,1.961,13.532z M1.961,13.089c0.235,0,0.443-0.042,0.622-0.126 s0.331-0.199,0.454-0.345c0.123-0.146,0.216-0.319,0.277-0.521c0.062-0.202,0.092-0.42,0.092-0.656 c0-0.235-0.031-0.454-0.092-0.656c-0.062-0.202-0.154-0.376-0.277-0.524c-0.123-0.148-0.275-0.263-0.454-0.347 S2.197,9.789,1.961,9.789c-0.235,0-0.443,0.042-0.622,0.126c-0.179,0.084-0.331,0.2-0.454,0.347 c-0.123,0.148-0.216,0.322-0.277,0.524c-0.062,0.202-0.092,0.42-0.092,0.656c0,0.235,0.031,0.454,0.092,0.656 c0.062,0.202,0.154,0.375,0.277,0.521c0.123,0.146,0.275,0.261,0.454,0.345C1.519,13.047,1.726,13.089,1.961,13.089z M4.455,10.551 h0.454v0.409H4.92c0.108-0.149,0.237-0.266,0.387-0.35c0.149-0.084,0.331-0.126,0.544-0.126c0.183,0,0.351,0.035,0.504,0.104 c0.153,0.069,0.284,0.168,0.392,0.297c0.108,0.129,0.193,0.289,0.255,0.479c0.062,0.191,0.092,0.405,0.092,0.644 c0,0.232-0.029,0.442-0.087,0.63c-0.058,0.189-0.141,0.349-0.249,0.482c-0.108,0.133-0.241,0.234-0.398,0.305 c-0.157,0.071-0.333,0.106-0.527,0.106c-0.198,0-0.37-0.032-0.516-0.095c-0.146-0.063-0.278-0.174-0.398-0.331H4.909v1.557H4.455 V10.551z M5.8,13.151c0.138,0,0.26-0.029,0.364-0.087c0.105-0.058,0.191-0.137,0.261-0.238c0.069-0.101,0.12-0.22,0.154-0.359 c0.034-0.138,0.05-0.289,0.05-0.454c0-0.161-0.017-0.311-0.05-0.451c-0.034-0.14-0.085-0.261-0.154-0.364 c-0.069-0.103-0.155-0.183-0.258-0.241c-0.103-0.058-0.223-0.087-0.361-0.087c-0.157,0-0.294,0.03-0.412,0.09 c-0.118,0.06-0.214,0.142-0.289,0.247c-0.075,0.105-0.131,0.226-0.168,0.364c-0.037,0.138-0.056,0.286-0.056,0.443 c0,0.157,0.017,0.305,0.05,0.443c0.034,0.138,0.087,0.259,0.16,0.361c0.073,0.103,0.167,0.184,0.283,0.244 C5.49,13.121,5.632,13.151,5.8,13.151z M8.837,13.526c-0.22,0-0.417-0.04-0.591-0.12c-0.174-0.08-0.32-0.19-0.44-0.328 c-0.12-0.138-0.211-0.3-0.275-0.485c-0.064-0.185-0.095-0.382-0.095-0.591c0-0.209,0.033-0.406,0.098-0.591 c0.065-0.185,0.159-0.346,0.28-0.485c0.121-0.138,0.266-0.247,0.434-0.328c0.168-0.08,0.355-0.12,0.56-0.12 c0.217,0,0.408,0.04,0.574,0.12c0.166,0.08,0.305,0.192,0.417,0.336c0.112,0.144,0.197,0.316,0.255,0.516 c0.058,0.2,0.087,0.419,0.087,0.658H7.901c0.007,0.146,0.034,0.282,0.078,0.409c0.045,0.127,0.106,0.237,0.185,0.331 c0.078,0.093,0.174,0.166,0.286,0.219c0.112,0.052,0.241,0.078,0.387,0.078c0.213,0,0.387-0.049,0.521-0.148 c0.134-0.099,0.228-0.247,0.28-0.445h0.443c-0.067,0.314-0.209,0.555-0.426,0.723C9.438,13.442,9.165,13.526,8.837,13.526z M8.809,10.837c-0.134,0-0.254,0.023-0.359,0.07c-0.105,0.047-0.193,0.112-0.266,0.196c-0.073,0.084-0.133,0.183-0.179,0.297 c-0.047,0.114-0.078,0.236-0.092,0.367h1.743c-0.015-0.291-0.094-0.519-0.238-0.684C9.273,10.919,9.07,10.837,8.809,10.837z M11.12,10.932h0.011c0.105-0.138,0.231-0.247,0.378-0.328c0.148-0.08,0.328-0.12,0.541-0.12c0.303,0,0.541,0.079,0.714,0.238 c0.174,0.159,0.261,0.389,0.261,0.692v2.034h-0.454v-1.995c0-0.191-0.058-0.336-0.174-0.437c-0.116-0.101-0.276-0.151-0.482-0.151 c-0.116,0-0.222,0.02-0.319,0.059c-0.097,0.039-0.181,0.093-0.252,0.163c-0.071,0.069-0.126,0.153-0.165,0.252 c-0.039,0.099-0.059,0.208-0.059,0.328v1.782h-0.454v-2.897h0.454V10.932z M15.409,13.53c-0.549,0-0.972-0.116-1.271-0.347 c-0.299-0.231-0.456-0.561-0.47-0.989h0.8c0.03,0.244,0.116,0.418,0.259,0.521c0.143,0.103,0.359,0.155,0.648,0.155 c0.105,0,0.205-0.009,0.299-0.028c0.094-0.019,0.177-0.049,0.248-0.09c0.071-0.041,0.129-0.095,0.172-0.161 c0.043-0.066,0.065-0.146,0.065-0.24c0-0.098-0.024-0.178-0.07-0.242c-0.047-0.064-0.114-0.117-0.2-0.161 c-0.086-0.043-0.191-0.081-0.313-0.113c-0.122-0.032-0.26-0.065-0.414-0.099c-0.18-0.041-0.354-0.087-0.521-0.138 c-0.167-0.051-0.314-0.119-0.44-0.206c-0.126-0.086-0.227-0.197-0.304-0.332c-0.077-0.135-0.116-0.308-0.116-0.518 c0-0.199,0.038-0.374,0.116-0.524c0.077-0.15,0.184-0.276,0.321-0.378c0.137-0.101,0.3-0.178,0.487-0.228 c0.188-0.051,0.394-0.076,0.62-0.076c0.454,0,0.82,0.107,1.096,0.321c0.276,0.214,0.429,0.526,0.459,0.935h-0.783 c-0.023-0.203-0.105-0.355-0.248-0.456c-0.143-0.101-0.319-0.152-0.53-0.152c-0.222,0-0.398,0.043-0.53,0.13 c-0.132,0.086-0.197,0.201-0.197,0.344c0,0.083,0.018,0.151,0.054,0.206c0.036,0.055,0.09,0.102,0.163,0.144 c0.073,0.041,0.164,0.077,0.273,0.107c0.109,0.03,0.238,0.062,0.389,0.096c0.207,0.045,0.401,0.095,0.583,0.149 c0.182,0.055,0.342,0.127,0.479,0.217c0.137,0.09,0.245,0.205,0.324,0.344c0.079,0.139,0.118,0.318,0.118,0.535 c0,0.203-0.039,0.384-0.118,0.544c-0.079,0.16-0.188,0.293-0.327,0.4c-0.139,0.107-0.304,0.189-0.496,0.245 C15.843,13.501,15.635,13.53,15.409,13.53z M19.168,13.53c-0.549,0-0.972-0.116-1.271-0.347s-0.456-0.561-0.47-0.989h0.8 c0.03,0.244,0.116,0.418,0.259,0.521c0.143,0.103,0.359,0.155,0.648,0.155c0.105,0,0.205-0.009,0.299-0.028 c0.094-0.019,0.177-0.049,0.248-0.09c0.071-0.041,0.129-0.095,0.172-0.161c0.043-0.066,0.065-0.146,0.065-0.24 c0-0.098-0.024-0.178-0.07-0.242c-0.047-0.064-0.114-0.117-0.2-0.161c-0.086-0.043-0.191-0.081-0.313-0.113 c-0.122-0.032-0.26-0.065-0.414-0.099c-0.18-0.041-0.354-0.087-0.521-0.138c-0.167-0.051-0.314-0.119-0.44-0.206 c-0.126-0.086-0.227-0.197-0.304-0.332c-0.077-0.135-0.116-0.308-0.116-0.518c0-0.199,0.038-0.374,0.116-0.524 c0.077-0.15,0.184-0.276,0.321-0.378c0.137-0.101,0.3-0.178,0.487-0.228c0.188-0.051,0.394-0.076,0.62-0.076 c0.454,0,0.82,0.107,1.096,0.321c0.276,0.214,0.429,0.526,0.459,0.935h-0.783c-0.023-0.203-0.105-0.355-0.248-0.456 c-0.143-0.101-0.319-0.152-0.53-0.152c-0.222,0-0.398,0.043-0.53,0.13c-0.132,0.086-0.197,0.201-0.197,0.344 c0,0.083,0.018,0.151,0.054,0.206c0.036,0.055,0.09,0.102,0.163,0.144c0.073,0.041,0.164,0.077,0.273,0.107 c0.109,0.03,0.238,0.062,0.389,0.096c0.207,0.045,0.401,0.095,0.583,0.149c0.182,0.055,0.342,0.127,0.479,0.217 c0.137,0.09,0.245,0.205,0.324,0.344c0.079,0.139,0.118,0.318,0.118,0.535c0,0.203-0.039,0.384-0.118,0.544 c-0.079,0.16-0.188,0.293-0.327,0.4c-0.139,0.107-0.304,0.189-0.496,0.245C19.602,13.501,19.393,13.53,19.168,13.53z M21.29,9.41 h0.817v3.347H24v0.682h-2.71V9.41z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/openstack.svg b/assets/lib/simple-icons/icons/openstack.svg
index 83755312..45ff1021 100644
--- a/assets/lib/simple-icons/icons/openstack.svg
+++ b/assets/lib/simple-icons/icons/openstack.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>OpenStack icon</title><path d="M18.575 9.29h5.418v5.42h-5.418zM0 9.29h5.419v5.42H0zm18.575 7.827a1.207 1.207 0 0 1-1.206 1.206H6.623a1.207 1.207 0 0 1-1.205-1.206v-.858H0v5.252a2.236 2.236 0 0 0 2.229 2.23h19.53A2.237 2.237 0 0 0 24 21.512V16.26h-5.425zM21.763.258H2.233a2.236 2.236 0 0 0-2.23 2.23V7.74h5.419v-.858a1.206 1.206 0 0 1 1.205-1.206h10.746a1.206 1.206 0 0 1 1.205 1.206v.858H24V2.487A2.237 2.237 0 0 0 21.763.258Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>OpenStack</title><path d="M18.575 9.29h5.418v5.42h-5.418zM0 9.29h5.419v5.42H0zm18.575 7.827a1.207 1.207 0 0 1-1.206 1.206H6.623a1.207 1.207 0 0 1-1.205-1.206v-.858H0v5.252a2.236 2.236 0 0 0 2.229 2.23h19.53A2.237 2.237 0 0 0 24 21.512V16.26h-5.425zM21.763.258H2.233a2.236 2.236 0 0 0-2.23 2.23V7.74h5.419v-.858a1.206 1.206 0 0 1 1.205-1.206h10.746a1.206 1.206 0 0 1 1.205 1.206v.858H24V2.487A2.237 2.237 0 0 0 21.763.258Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/openstreetmap.svg b/assets/lib/simple-icons/icons/openstreetmap.svg
index fa326771..510b6cd2 100644
--- a/assets/lib/simple-icons/icons/openstreetmap.svg
+++ b/assets/lib/simple-icons/icons/openstreetmap.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 24 24"><title>OpenStreetMap icon</title><path d="M2.672 23.969c-.352-.089-.534-.234-1.471-1.168C.085 21.688.014 21.579.018 20.999c0-.645-.196-.414 3.368-3.986 3.6-3.608 3.415-3.451 4.064-3.449.302 0 .378.016.62.14l.277.14 1.744-1.744-.218-.343c-.425-.662-.825-1.629-1.006-2.429a7.657 7.657 0 0 1 1.479-6.44c2.49-3.12 6.959-3.812 10.26-1.588 1.812 1.218 2.99 3.099 3.328 5.314.07.467.07 1.579 0 2.074a7.554 7.554 0 0 1-2.205 4.402 6.712 6.712 0 0 1-1.943 1.401c-.959.483-1.775.71-2.881.803-1.573.131-3.32-.305-4.656-1.163l-.343-.218-1.744 1.744.14.28c.125.241.14.316.14.617.003.651.156.467-3.426 4.049-2.761 2.756-3.186 3.164-3.398 3.261-.271.125-.69.171-.945.106zM17.485 13.95a6.425 6.425 0 0 0 4.603-3.51c1.391-2.899.455-6.306-2.227-8.108-.638-.43-1.529-.794-2.367-.962-.581-.117-1.809-.104-2.414.025a6.593 6.593 0 0 0-2.452 1.064c-.444.315-1.177 1.048-1.487 1.487a6.384 6.384 0 0 0 .38 7.907 6.406 6.406 0 0 0 3.901 2.136c.509.078 1.542.058 2.065-.037zm-3.738 7.376a80.97 80.97 0 0 1-2.196-.651c-.025-.028 1.207-4.396 1.257-4.449.023-.026 4.242 1.152 4.414 1.236.062.026-.003.288-.525 2.102a398.513 398.513 0 0 0-.635 2.236c-.025.087-.069.156-.097.156-.028-.003-1.028-.287-2.219-.631zm2.912.524c0-.053 1.227-4.333 1.246-4.347.047-.034 4.324-1.23 4.341-1.211.019.019-1.199 4.337-1.23 4.36-.02.019-4.126 1.191-4.259 1.218-.054.011-.098 0-.098-.019zm-7.105-1.911c.846-.852 1.599-1.627 1.674-1.728.171-.218.405-.732.472-1.015.026-.118.053-.352.058-.522l.011-.307.182-.051c.103-.028.193-.044.202-.034.023.025-1.207 4.321-1.246 4.36-.02.016-.677.213-1.464.436l-1.425.405 1.537-1.542zm8.289-3.06a1.371 1.371 0 0 1-.059-.187l-.044-.156.156-.028c1.339-.227 2.776-.856 3.908-1.713.16-.125.252-.171.265-.134.054.165.272.95.265.959-.034.034-4.48 1.282-4.492 1.261zm-15.083-1.3c-.05-.039-1.179-3.866-1.264-4.29-.016-.084.146-.044 2.174.536 2.121.604 2.192.629 2.222.74.028.098.011.129-.125.223-.084.059-.769.724-1.523 1.479a63.877 63.877 0 0 1-1.39 1.367c-.016 0-.056-.025-.093-.054zm.821-4.378c-1.188-.343-2.164-.623-2.167-.626-.016-.012 1.261-4.433 1.285-4.46.022-.022 4.422 1.211 4.469 1.252.009.009-.269 1.017-.618 2.239-.576 2.02-.643 2.224-.723 2.22-.05-.003-1.059-.285-2.247-.626zm2.959.538c.012-.031.212-.723.444-1.534l.42-1.476.056.321c.093.556.265 1.188.464 1.741.106.296.187.539.181.545-.008.006-.332.101-.719.212-.389.109-.741.21-.786.224-.058.016-.075.006-.059-.034zM4.905 6.112c-1.187-.339-2.167-.635-2.18-.654-.04-.062-1.246-4.321-1.23-4.338.026-.025 4.31 1.204 4.351 1.246.047.051 1.28 4.379 1.246 4.376L4.91 6.113zm2.148-1.713l-.519-1.806-.078-.28 1.693-.483c.934-.265 1.724-.495 1.76-.508.034-.016-.083.14-.26.336A8.729 8.729 0 0 0 7.69 5.23a4.348 4.348 0 0 0-.132.561c0 .293-.115-.025-.505-1.39z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>OpenStreetMap</title><path d="M2.672 23.969c-.352-.089-.534-.234-1.471-1.168C.085 21.688.014 21.579.018 20.999c0-.645-.196-.414 3.368-3.986 3.6-3.608 3.415-3.451 4.064-3.449.302 0 .378.016.62.14l.277.14 1.744-1.744-.218-.343c-.425-.662-.825-1.629-1.006-2.429a7.657 7.657 0 0 1 1.479-6.44c2.49-3.12 6.959-3.812 10.26-1.588 1.812 1.218 2.99 3.099 3.328 5.314.07.467.07 1.579 0 2.074a7.554 7.554 0 0 1-2.205 4.402 6.712 6.712 0 0 1-1.943 1.401c-.959.483-1.775.71-2.881.803-1.573.131-3.32-.305-4.656-1.163l-.343-.218-1.744 1.744.14.28c.125.241.14.316.14.617.003.651.156.467-3.426 4.049-2.761 2.756-3.186 3.164-3.398 3.261-.271.125-.69.171-.945.106zM17.485 13.95a6.425 6.425 0 0 0 4.603-3.51c1.391-2.899.455-6.306-2.227-8.108-.638-.43-1.529-.794-2.367-.962-.581-.117-1.809-.104-2.414.025a6.593 6.593 0 0 0-2.452 1.064c-.444.315-1.177 1.048-1.487 1.487a6.384 6.384 0 0 0 .38 7.907 6.406 6.406 0 0 0 3.901 2.136c.509.078 1.542.058 2.065-.037zm-3.738 7.376a80.97 80.97 0 0 1-2.196-.651c-.025-.028 1.207-4.396 1.257-4.449.023-.026 4.242 1.152 4.414 1.236.062.026-.003.288-.525 2.102a398.513 398.513 0 0 0-.635 2.236c-.025.087-.069.156-.097.156-.028-.003-1.028-.287-2.219-.631zm2.912.524c0-.053 1.227-4.333 1.246-4.347.047-.034 4.324-1.23 4.341-1.211.019.019-1.199 4.337-1.23 4.36-.02.019-4.126 1.191-4.259 1.218-.054.011-.098 0-.098-.019zm-7.105-1.911c.846-.852 1.599-1.627 1.674-1.728.171-.218.405-.732.472-1.015.026-.118.053-.352.058-.522l.011-.307.182-.051c.103-.028.193-.044.202-.034.023.025-1.207 4.321-1.246 4.36-.02.016-.677.213-1.464.436l-1.425.405 1.537-1.542zm8.289-3.06a1.371 1.371 0 0 1-.059-.187l-.044-.156.156-.028c1.339-.227 2.776-.856 3.908-1.713.16-.125.252-.171.265-.134.054.165.272.95.265.959-.034.034-4.48 1.282-4.492 1.261zm-15.083-1.3c-.05-.039-1.179-3.866-1.264-4.29-.016-.084.146-.044 2.174.536 2.121.604 2.192.629 2.222.74.028.098.011.129-.125.223-.084.059-.769.724-1.523 1.479a63.877 63.877 0 0 1-1.39 1.367c-.016 0-.056-.025-.093-.054zm.821-4.378c-1.188-.343-2.164-.623-2.167-.626-.016-.012 1.261-4.433 1.285-4.46.022-.022 4.422 1.211 4.469 1.252.009.009-.269 1.017-.618 2.239-.576 2.02-.643 2.224-.723 2.22-.05-.003-1.059-.285-2.247-.626zm2.959.538c.012-.031.212-.723.444-1.534l.42-1.476.056.321c.093.556.265 1.188.464 1.741.106.296.187.539.181.545-.008.006-.332.101-.719.212-.389.109-.741.21-.786.224-.058.016-.075.006-.059-.034zM4.905 6.112c-1.187-.339-2.167-.635-2.18-.654-.04-.062-1.246-4.321-1.23-4.338.026-.025 4.31 1.204 4.351 1.246.047.051 1.28 4.379 1.246 4.376L4.91 6.113zm2.148-1.713l-.519-1.806-.078-.28 1.693-.483c.934-.265 1.724-.495 1.76-.508.034-.016-.083.14-.26.336A8.729 8.729 0 0 0 7.69 5.23a4.348 4.348 0 0 0-.132.561c0 .293-.115-.025-.505-1.39z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/opensuse.svg b/assets/lib/simple-icons/icons/opensuse.svg
index 948fa93b..8ac1e8d2 100644
--- a/assets/lib/simple-icons/icons/opensuse.svg
+++ b/assets/lib/simple-icons/icons/opensuse.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>openSUSE icon</title><path d="M21.51 8.107a.976.976 0 0 0-.708.264.993.993 0 0 0 .64 1.714.991.991 0 0 0 1.024-.954.992.992 0 0 0-.955-1.024zm.162 1.082c-.242 0-.438-.131-.438-.292 0-.163.196-.293.438-.293.243 0 .44.13.44.293 0 .16-.197.292-.44.292zm2.306 1.18c.007-.006.024-.02.022-.034-.055-.343-.565-2.004-.952-2.404-.106-.109-.191-.216-.364-.317-1.398-.814-4.713-1.306-4.869-1.328 0 0-.015-.004-.026.007-.009.008-.01.024-.01.024l-.015.764c-.339-.114-2.8-.91-5.108-.99C10.7 6.024 7.85 5.77 4.072 8.093l-.111.07C2.184 9.27.957 10.637.316 12.224c-.201.5-.472 1.628-.204 2.688.116.464.331.93.621 1.347.656.943 1.757 1.568 2.943 1.674 1.674.15 2.941-.602 3.392-2.01.31-.971 0-2.397-1.188-3.124-.967-.591-2.006-.457-2.609-.058-.523.347-.819.886-.814 1.477.012 1.05.917 1.608 1.567 1.61.189 0 .378-.033.592-.103a.921.921 0 0 0 .227-.1l.025-.015.015-.01-.005.003a.535.535 0 0 0 .217-.587.533.533 0 0 0-.612-.377l-.036.008-.05.015-.072.025c-.15.037-.262.04-.286.041-.076-.005-.45-.117-.45-.527v-.005c0-.151.06-.257.093-.314.117-.183.435-.362.866-.325.565.05.973.34 1.243.886.25.508.185 1.134-.17 1.592-.35.454-.976.647-1.809.557a2.48 2.48 0 0 1-1.946-1.327c-.389-.735-.41-1.607-.055-2.276.85-1.604 2.455-1.587 3.334-1.435 1.302.226 2.784 1.427 3.309 2.814.085.22.128.396.166.556l.057.24 1.47.718c.032.015.043.02.055.011.016-.011.007-.042.007-.042-.01-.033-.03-.063-.065-.475-.027-.365-.084-1.365.42-1.86.195-.195.492-.367.728-.423.964-.235 2.094-.073 3.163 1.164.553.64.823.93.959 1.061 0 0 .03.03.047.043.018.015.03.027.055.041.045.025 1.838.85 1.838.85s.022.011.037-.008c.016-.02.001-.038.001-.038-.012-.014-1.137-1.468-.937-2.665.158-.954.917-.867 1.967-.749.343.04.733.085 1.137.094 1.127.007 2.342-.201 3.09-.529.485-.21.794-.35.988-.526.07-.058.106-.152.143-.253l.027-.066c.031-.082.077-.254.097-.348.009-.042.018-.083-.016-.11-.032-.024-.104.02-.104.02-.329.198-1.15.573-1.919.589-.954.019-2.887-.966-3.087-1.07-.134-.32-.268-.639-.404-.957 1.383.911 2.53 1.415 3.408 1.492.977.088 1.74-.446 2.07-.668.043-.028.086-.06.126-.092zm-3.923-1.311c.014-.379.173-.73.45-.988a1.414 1.414 0 0 1 1.017-.38 1.423 1.423 0 0 1 1.37 1.468c-.015.379-.174.73-.45.987-.277.26-.638.394-1.019.381a1.424 1.424 0 0 1-1.368-1.468z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>openSUSE</title><path d="M10.724 0a12 12 0 0 0-9.448 4.623c1.464.391 2.5.727 2.81.832.005-.19.037-1.893.037-1.893s.004-.04.025-.06c.026-.026.065-.018.065-.018.385.056 8.602 1.274 12.066 3.292.427.25.638.517.902.786.958.99 2.223 5.108 2.359 5.957.005.033-.036.07-.054.083a5.177 5.177 0 0 1-.313.228c-.82.55-2.708 1.872-5.13 1.656-2.176-.193-5.018-1.44-8.445-3.699.336.79.668 1.58 1 2.371.497.258 5.287 2.7 7.651 2.651 1.904-.04 3.941-.968 4.756-1.458 0 0 .179-.108.257-.048.085.066.061.167.041.27-.05.234-.164.66-.242.863l-.065.165c-.093.25-.183.482-.356.625-.48.436-1.246.784-2.446 1.305-1.855.812-4.865 1.328-7.66 1.31-1.001-.022-1.968-.133-2.817-.232-1.743-.197-3.161-.357-4.026.269A12 12 0 0 0 10.724 24a12 12 0 0 0 12-12 12 12 0 0 0-12-12zM13.4 6.963a3.503 3.503 0 0 0-2.521.942 3.498 3.498 0 0 0-1.114 2.449 3.528 3.528 0 0 0 3.39 3.64 3.48 3.48 0 0 0 2.524-.946 3.504 3.504 0 0 0 1.114-2.446 3.527 3.527 0 0 0-3.393-3.64zm-.03 1.035a2.458 2.458 0 0 1 2.368 2.539 2.43 2.43 0 0 1-.774 1.706 2.456 2.456 0 0 1-1.762.659 2.461 2.461 0 0 1-2.364-2.542c.02-.655.3-1.26.777-1.707a2.419 2.419 0 0 1 1.756-.655zm.402 1.23c-.602 0-1.087.325-1.087.727 0 .4.485.725 1.087.725.6 0 1.088-.326 1.088-.725 0-.402-.487-.726-1.088-.726Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/opentelemetry.svg b/assets/lib/simple-icons/icons/opentelemetry.svg
new file mode 100644
index 00000000..606165cf
--- /dev/null
+++ b/assets/lib/simple-icons/icons/opentelemetry.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>OpenTelemetry</title><path d="M12.6974 13.1173c-1.0224 1.0224-1.0224 2.68 0 3.7024 1.0224 1.0224 2.68 1.0224 3.7024 0 1.0224-1.0223 1.0224-2.68 0-3.7024-1.0223-1.0223-2.68-1.0223-3.7024 0zm2.7677 2.7701c-.5063.5063-1.3267.5063-1.833 0s-.5063-1.3266 0-1.833c.5063-.5062 1.3267-.5062 1.833 0 .5063.504.5063 1.3267 0 1.833zM16.356.2355l-1.6041 1.6042c-.314.314-.314.83 0 1.144L21.015 9.247c.314.314.83.314 1.144 0l1.6042-1.6041c.314-.314.314-.83 0-1.144L17.4976.2354c-.314-.314-.8276-.314-1.1416 0zM5.1173 20.734c.2848-.2848.2848-.7497 0-1.0345l-.8155-.8155c-.2848-.2848-.7497-.2848-1.0345 0l-1.6845 1.6845-.0024.0024-.4625-.4625c-.2556-.2556-.6718-.2556-.925 0-.2556.2556-.2556.6718 0 .925l2.775 2.775c.2556.2556.6718.2556.925 0 .2532-.2556.2556-.6718 0-.925l-.4625-.4625.0024-.0024zm8.4856-15.893-3.5637 3.5637c-.3164.3164-.3164.8374 0 1.1538l2.2006 2.2005c1.5554-1.1197 3.7365-.981 5.1361.4187l1.7819-1.7818c.3164-.3165.3164-.8374 0-1.1538l-4.401-4.401c-.3165-.319-.8374-.319-1.1539 0zm-2.2881 7.8455-1.2999-1.2999c-.3043-.3043-.8033-.3043-1.1076 0l-4.5836 4.586c-.3042.3043-.3042.8033 0 1.1076l2.5973 2.5973c.3043.3043.8033.3043 1.1076 0l2.9478-2.9527c-.6231-1.2877-.5112-2.8431.3384-4.0383z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/openvpn.svg b/assets/lib/simple-icons/icons/openvpn.svg
index a464dd2f..198fea5d 100644
--- a/assets/lib/simple-icons/icons/openvpn.svg
+++ b/assets/lib/simple-icons/icons/openvpn.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>OpenVPN icon</title><path d="M12 .365C5.385.365 0 5.697 0 12.26c0 4.36 2.358 8.154 5.896 10.205l.77-5.076A7.046 7.046 0 0 1 4.82 12.67c0-3.897 3.18-7.076 7.13-7.076 3.948 0 7.126 3.179 7.126 7.076 0 1.847-.717 3.488-1.846 4.77l.77 5.078c3.59-2.051 6-5.899 6-10.258C24 5.697 18.615.365 12 .365zm-.05 8.156a3.786 3.786 0 0 0-3.796 3.795 3.738 3.738 0 0 0 2.461 3.54L9.13 23.65h5.64l-1.435-7.795c1.385-.564 2.41-1.898 2.41-3.539a3.786 3.786 0 0 0-3.795-3.795z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>OpenVPN</title><path d="M12 .357C5.385.357 0 5.69 0 12.254c0 4.36 2.358 8.153 5.896 10.204l.77-5.076a7.046 7.046 0 01-1.846-4.719c0-3.897 3.18-7.076 7.13-7.076 3.948 0 7.126 3.18 7.126 7.076 0 1.847-.717 3.488-1.846 4.77L18 22.51c3.59-2.05 6-5.899 6-10.258C24 5.69 18.615.357 12 .357zm-.05 8.157a3.786 3.786 0 00-3.796 3.795 3.738 3.738 0 002.461 3.54L9.13 23.643h5.64l-1.435-7.795c1.385-.564 2.41-1.898 2.41-3.54a3.786 3.786 0 00-3.795-3.794z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/openwrt.svg b/assets/lib/simple-icons/icons/openwrt.svg
new file mode 100644
index 00000000..71a93b5c
--- /dev/null
+++ b/assets/lib/simple-icons/icons/openwrt.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>OpenWrt</title><path d="m12 0c-3.906 0-7.4465 1.5949-10.006 4.1543l1.6953 1.6953c2.1278-2.1278 5.069-3.4395 8.3105-3.4395 3.2416 0 6.1833 1.3122 8.3105 3.4395l1.6953-1.6953c-2.56-2.5594-6.0999-4.1543-10.006-4.1543zm0 4.3203c-2.7091 0-5.1685 1.1138-6.9473 2.8926l1.6953 1.6953c1.346-1.346 3.2079-2.1777 5.252-2.1777 2.0435 0 3.9053 0.83172 5.252 2.1777l1.6953-1.6953c-1.7782-1.7782-4.2381-2.8926-6.9473-2.8926zm-7.7285 3.7559c-1.3295 1.6792-2.1113 3.7906-2.1113 6.084 0 5.4189 4.4216 9.8398 9.8398 9.8398 5.4183 0 9.8398-4.4209 9.8398-9.8398 0-2.2934-0.79833-4.4048-2.1113-6.084l-1.7129 1.7129c0.8974 1.2298 1.4297 2.7427 1.4297 4.3711 0 4.1053-3.34 7.4473-7.4453 7.4473-4.1052 0-7.4473-3.342-7.4473-7.4473 0-1.6284 0.53174-3.1413 1.4297-4.3711l-1.7109-1.7129zm7.7285 0.56641c-1.5128 0-2.8928 0.61633-3.9062 1.6133l1.6953 1.6953c1.2219-1.2195 3.2006-1.2195 4.4219 0l1.6953-1.6953c-1.0354-1.0361-2.4416-1.6176-3.9062-1.6133zm0 3.8887c-0.8997 0-1.6289 0.72911-1.6289 1.6289 0 0.8992 0.72921 1.6289 1.6289 1.6289 0.8998 0 1.6289-0.72971 1.6289-1.6289-0.0019-0.8992-0.72971-1.6277-1.6289-1.6289z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/openzfs.svg b/assets/lib/simple-icons/icons/openzfs.svg
new file mode 100644
index 00000000..f690a63d
--- /dev/null
+++ b/assets/lib/simple-icons/icons/openzfs.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>OpenZFS</title><path d="M19.3573 3.4035a.6337.6337 0 0 1-.9017 0 .64.64 0 0 1 0-.9043.6337.6337 0 0 1 .9017 0 .6287.6287 0 0 1 0 .9043m-.1407 17.8587c-.4348.4332-1.1383.4332-1.5731 0-.4349-.4396-.4349-1.1429 0-1.5762.4348-.4333 1.1447-.4333 1.5731 0a1.1038 1.1038 0 0 1 0 1.5762m-3.7218-2.1539c-.4348-.4333-.4348-1.1428 0-1.5698.4349-.4396 1.1447-.4396 1.5731 0 .4349.4332.4349 1.1428 0 1.5698-.4348.4396-1.1446.4396-1.5731 0m-.5755 2.1539c-.4349.4332-1.1447.4332-1.5732 0-.4348-.4396-.4348-1.1429 0-1.5762.4349-.4333 1.1447-.4333 1.5732 0 .4348.4333.4348 1.1429 0 1.5762m-3.7219-2.1539c-.4412-.4333-.4412-1.1428 0-1.5698a1.1032 1.1032 0 0 1 1.5732 0c.4348.4332.4348 1.1428 0 1.5698-.4349.4396-1.1447.4396-1.5732 0m-.5755 2.1539c-.4349.4332-1.1447.4332-1.5731 0-.4349-.4396-.4349-1.1429 0-1.5762.4348-.4333 1.1446-.4333 1.5731 0 .4349.4333.4349 1.1429 0 1.5762m-3.7282-2.1539c-.4349-.4333-.4349-1.1428 0-1.5698.4412-.4396 1.1447-.4396 1.5795 0 .4349.4332.4349 1.1428 0 1.5698-.4348.4333-1.1447.4396-1.5795 0m-.5692 2.1476c-.4348.4395-1.1446.4395-1.5731 0-.4412-.4333-.4412-1.1429 0-1.5699a1.1032 1.1032 0 0 1 1.5731 0c.4349.4333.4349 1.1429 0 1.5699M4.6043 2.5809c.2558-.2512.6587-.2512.908 0a.64.64 0 0 1 0 .9042c-.2493.2512-.6586.2512-.908 0-.243-.2512-.2494-.653 0-.9043M5.992 3.9686c.2494-.2512.6587-.2512.908 0a.64.64 0 0 1 0 .9042c-.2493.245-.6586.245-.908 0a.64.64 0 0 1 0-.9042m1.3877 1.3815c.2494-.245.6587-.245.908 0 .2495.2512.2495.6593 0 .9042-.2493.2512-.6586.2512-.908 0-.2494-.2449-.2494-.653 0-.9042m0-2.7693c.2494-.2511.6587-.2511.908 0a.64.64 0 0 1 0 .9043c-.2493.2512-.6586.2449-.908 0a.64.64 0 0 1 0-.9043m1.3877 4.157c.2494-.2449.6587-.2511.908 0a.64.64 0 0 1 0 .9043c-.2493.2511-.6586.2511-.908 0a.64.64 0 0 1 0-.9043m0-2.7692c.2494-.2512.6587-.2512.908 0a.64.64 0 0 1 0 .9042c-.2493.2512-.6586.2512-.908 0-.2494-.2511-.2494-.6593 0-.9042m1.3877-1.3878c.2494-.2511.6523-.2511.908 0a.64.64 0 0 1 0 .9043c-.2557.2512-.6586.2512-.908 0a.64.64 0 0 1 0-.9043m1.3877 4.157c.2494-.2511.6522-.2449.9016 0 .2494.2512.2494.6594 0 .9043-.243.2511-.6522.2511-.9016 0a.64.64 0 0 1 0-.9043m0-2.7692a.6337.6337 0 0 1 .9016 0c.2558.2449.2494.653 0 .9042-.2494.245-.6522.245-.9016 0-.2494-.2511-.2494-.6593 0-.9042m1.3877-1.3878a.6337.6337 0 0 1 .9016 0 .64.64 0 0 1 0 .9043.6337.6337 0 0 1-.9016 0 .64.64 0 0 1 0-.9043m.4284 12.8038c.4349-.4333 1.1447-.4333 1.5732 0 .4348.4396.4348 1.1429 0 1.5762-.4349.4332-1.1447.4332-1.5732 0-.4348-.4396-.4348-1.1429 0-1.5762m.4732-6.3924a.6337.6337 0 0 1-.9016 0c-.2494-.245-.2494-.6531 0-.9043a.6393.6393 0 0 1 .9016.0063c.2494.2449.2494.653 0 .898m0-2.7693a.6337.6337 0 0 1-.9016 0 .64.64 0 0 1 0-.9042.6337.6337 0 0 1 .9016 0 .64.64 0 0 1 0 .9042m-2.2893 3.2528c.2494-.245.6522-.245.9016 0 .2494.2511.2494.6593 0 .9042a.6337.6337 0 0 1-.9016 0 .64.64 0 0 1 0-.9042m-.339 3.7614c.4349-.4396 1.1447-.4396 1.5732 0a1.1038 1.1038 0 0 1 0 1.576c-.4349.4334-1.1383.4334-1.5732 0-.4348-.4395-.4348-1.1428 0-1.576m-.5691 2.1475c.4348.4396.4348 1.1429 0 1.5762-.4413.4332-1.1447.4332-1.5795 0-.4349-.4333-.4349-1.1429 0-1.5762.4348-.4333 1.1446-.4333 1.5795 0m-.4796-10.066c.2494-.2511.6523-.2511.908 0 .243.2513.243.6531 0 .9043-.2557.2512-.6586.2512-.908 0a.64.64 0 0 1 0-.9042m0 2.7755a.6394.6394 0 0 1 .9017-.0063c.2494.2512.2494.6593 0 .9105-.2494.245-.6523.245-.9017 0-.2494-.2512-.2494-.6593 0-.9042m4.163-1.3878a.6337.6337 0 0 1 .9017 0 .64.64 0 0 1 0 .9043.6337.6337 0 0 1-.9017 0 .64.64 0 0 1 0-.9043m0-2.7755c.2494-.2449.6523-.2449.9017 0 .2494.2512.2494.6594 0 .9043a.6337.6337 0 0 1-.9017 0c-.2494-.245-.2494-.6531 0-.9043m1.3877 1.3878a.6337.6337 0 0 1 .9017 0 .64.64 0 0 1 0 .9042.6337.6337 0 0 1-.9017 0 .64.64 0 0 1 0-.9042m0-2.7693a.6337.6337 0 0 1 .9017 0c.2494.245.2494.6531 0 .898a.6337.6337 0 0 1-.9017 0c-.2494-.2449-.2494-.653 0-.898m1.3877 1.3815c.2494-.2449.6523-.2449.9017 0a.64.64 0 0 1 0 .9043.6337.6337 0 0 1-.9017 0c-.2494-.245-.2494-.6531 0-.9043M24 1.8273C24 .8226 23.1878 0 22.171 0H1.8354C.825 0 0 .8163 0 1.8273V8.81h2.7242L0 15.19v6.9764C0 23.1711.8185 24 1.8353 24h20.3358C23.1815 24 24 23.1774 24 22.1664V15.19h-2.7242L24 8.81Z"/></svg>
diff --git a/assets/lib/simple-icons/icons/opera.svg b/assets/lib/simple-icons/icons/opera.svg
index 1729ce9a..d1194ee2 100644
--- a/assets/lib/simple-icons/icons/opera.svg
+++ b/assets/lib/simple-icons/icons/opera.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Opera icon</title><path d="M8.051 5.238c-1.328 1.566-2.186 3.883-2.246 6.48v.564c.061 2.598.918 4.912 2.246 6.479 1.721 2.236 4.279 3.654 7.139 3.654 1.756 0 3.4-.537 4.807-1.471C17.879 22.846 15.074 24 12 24c-.192 0-.383-.004-.57-.014C5.064 23.689 0 18.436 0 12 0 5.371 5.373 0 12 0h.045c3.055.012 5.84 1.166 7.953 3.055-1.408-.93-3.051-1.471-4.81-1.471-2.858 0-5.417 1.42-7.14 3.654h.003zM24 12c0 3.556-1.545 6.748-4.002 8.945-3.078 1.5-5.946.451-6.896-.205 3.023-.664 5.307-4.32 5.307-8.74 0-4.422-2.283-8.075-5.307-8.74.949-.654 3.818-1.703 6.896-.205C22.455 5.25 24 8.445 24 12z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Opera</title><path d="M8.051 5.238c-1.328 1.566-2.186 3.883-2.246 6.48v.564c.061 2.598.918 4.912 2.246 6.479 1.721 2.236 4.279 3.654 7.139 3.654 1.756 0 3.4-.537 4.807-1.471C17.879 22.846 15.074 24 12 24c-.192 0-.383-.004-.57-.014C5.064 23.689 0 18.436 0 12 0 5.371 5.373 0 12 0h.045c3.055.012 5.84 1.166 7.953 3.055-1.408-.93-3.051-1.471-4.81-1.471-2.858 0-5.417 1.42-7.14 3.654h.003zM24 12c0 3.556-1.545 6.748-4.002 8.945-3.078 1.5-5.946.451-6.896-.205 3.023-.664 5.307-4.32 5.307-8.74 0-4.422-2.283-8.075-5.307-8.74.949-.654 3.818-1.703 6.896-.205C22.455 5.25 24 8.445 24 12z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/opnsense.svg b/assets/lib/simple-icons/icons/opnsense.svg
new file mode 100644
index 00000000..e50a92dc
--- /dev/null
+++ b/assets/lib/simple-icons/icons/opnsense.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>OPNSense</title><path d="M18.419 11.08h5.259v1.847h-5.254l1.66.885v1.847l-5.111-2.732h-.005V11.08l5.111-2.737v1.847l-1.66.89zm.005 5.54l5.255 2.808v1.841c.01 1.453-1.176 2.744-2.655 2.731H.322v-4.573l5.252-2.808H2.119v-1.847h1.297v1.719l3.216-1.719h2.395v1.846l-3.453 1.847h12.85l-3.455-1.847v-1.846h2.4l3.216 1.719v-1.719h1.297v1.847h-3.458zM3.949 20.307v-.972l-1.83.979v1.84h18.905c.481-.004.848-.393.857-.879v-.96l-1.764-.943v.936H3.949zm-.033-6.496v1.847l5.111-2.732V11.08L3.916 8.343v1.847l1.665.89H.322v1.847h5.254l-1.66.884zM23.679 0v4.572L18.42 7.386h3.462v1.847h-1.303V7.508l-3.222 1.725h-2.39V7.386l3.451-1.847H5.578l3.449 1.847v1.847H6.638L3.416 7.508v1.725H2.119V7.386h3.459L.322 4.572V2.731C.3 1.291 1.495-.012 2.976 0h20.703zm-1.798 1.846H2.976c-.488.009-.847.394-.857.88v.962l1.797.962v-.957h16.168v.956l1.797-.962V1.846z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/opsgenie.svg b/assets/lib/simple-icons/icons/opsgenie.svg
index 1ece5a94..3c674de6 100644
--- a/assets/lib/simple-icons/icons/opsgenie.svg
+++ b/assets/lib/simple-icons/icons/opsgenie.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Opsgenie icon</title><path d="M12.002 0a5.988 5.988 0 1 1 0 11.975 5.988 5.988 0 0 1 0-11.975zm9.723 13.026h-.03l-4.527-2.242a.671.671 0 0 0-.876.268 22.408 22.408 0 0 1-4.306 5.217 22.407 22.407 0 0 1-4.286-5.2.671.671 0 0 0-.876-.269l-4.535 2.226h-.03a.671.671 0 0 0-.248.902 28.85 28.85 0 0 0 4.55 5.933l-.002.001c.024.025.05.048.075.072.335.335.676.664 1.027.981.081.074.165.144.247.217.315.278.632.555.96.82.144.117.295.227.441.341.277.216.552.434.837.639.44.318.888.625 1.346.917a.963.963 0 0 0 1.007.017c.487-.312.962-.64 1.428-.98.068-.05.132-.103.2-.153.358-.266.713-.537 1.06-.82.234-.19.46-.39.688-.588.17-.147.34-.291.506-.442.295-.268.58-.545.864-.825.061-.06.127-.118.188-.179l-.004-.002a28.852 28.852 0 0 0 4.565-5.949.671.671 0 0 0-.269-.902z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Opsgenie</title><path d="M12.002 0a5.988 5.988 0 1 1 0 11.975 5.988 5.988 0 0 1 0-11.975zm9.723 13.026h-.03l-4.527-2.242a.671.671 0 0 0-.876.268 22.408 22.408 0 0 1-4.306 5.217 22.407 22.407 0 0 1-4.286-5.2.671.671 0 0 0-.876-.269l-4.535 2.226h-.03a.671.671 0 0 0-.248.902 28.85 28.85 0 0 0 4.55 5.933l-.002.001c.024.025.05.048.075.072.335.335.676.664 1.027.981.081.074.165.144.247.217.315.278.632.555.96.82.144.117.295.227.441.341.277.216.552.434.837.639.44.318.888.625 1.346.917a.963.963 0 0 0 1.007.017c.487-.312.962-.64 1.428-.98.068-.05.132-.103.2-.153.358-.266.713-.537 1.06-.82.234-.19.46-.39.688-.588.17-.147.34-.291.506-.442.295-.268.58-.545.864-.825.061-.06.127-.118.188-.179l-.004-.002a28.852 28.852 0 0 0 4.565-5.949.671.671 0 0 0-.269-.902z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/opslevel.svg b/assets/lib/simple-icons/icons/opslevel.svg
index d2c7b6f1..da820935 100644
--- a/assets/lib/simple-icons/icons/opslevel.svg
+++ b/assets/lib/simple-icons/icons/opslevel.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>OpsLevel icon</title><path d="M11.998 0L7.3027 2.7168v2.045l-4.875 2.7929v5.0098L.338 13.7735v5.4355l4.6973 2.7187 1.662-.9629L12 24l5.3008-3.0352 1.664.963 4.6973-2.7188v-5.4356l-2.0898-1.207V7.5547l-4.877-2.793V2.7168L11.998 0zm0 1.1953l3.127 1.8125L12 4.8028l-3.125-1.797 3.123-1.8105zM8.3398 3.8945l3.1426 1.8067V9.377L8.3398 7.5547V3.8945zm7.3184 0v3.6602L12.5195 9.373V5.6992l3.1387-1.8047zm1.0371 2.0625l3.8418 2.1973v3.8125l-1.5723-.9102-4.6972 2.7168v5.4356l1.998 1.1562L12 22.8047l-4.2637-2.4395 1.9961-1.1562v-5.4356l-4.6972-2.7168-1.5704.9082V8.1543l3.838-2.1953v2.1953h.0019L12 10.8711l4.6953-2.7168V5.957zM5.0352 12.254l3.125 1.8085-3.125 1.7969-3.125-1.7969.5175-.3008 2.6075-1.5078zm13.9296 0l2.6075 1.5097.5156.2988-3.123 1.7969-3.125-1.7969 3.125-1.8086zM1.377 14.9491l3.1425 1.8086v3.6758L1.377 18.6113v-3.662zm7.3183 0v3.6621l-3.0371 1.7578-.1016.0606v-3.6738l3.1387-1.8067zm6.6094 0l3.1445 1.8086v3.6758l-.1074-.0645-3.0371-1.7578v-3.662zm7.3183 0v3.6621l-3.1386 1.8184v-3.6719l3.1386-1.8086z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>OpsLevel</title><path d="M11.998 0L7.3027 2.7168v2.045l-4.875 2.7929v5.0098L.338 13.7735v5.4355l4.6973 2.7187 1.662-.9629L12 24l5.3008-3.0352 1.664.963 4.6973-2.7188v-5.4356l-2.0898-1.207V7.5547l-4.877-2.793V2.7168L11.998 0zm0 1.1953l3.127 1.8125L12 4.8028l-3.125-1.797 3.123-1.8105zM8.3398 3.8945l3.1426 1.8067V9.377L8.3398 7.5547V3.8945zm7.3184 0v3.6602L12.5195 9.373V5.6992l3.1387-1.8047zm1.0371 2.0625l3.8418 2.1973v3.8125l-1.5723-.9102-4.6972 2.7168v5.4356l1.998 1.1562L12 22.8047l-4.2637-2.4395 1.9961-1.1562v-5.4356l-4.6972-2.7168-1.5704.9082V8.1543l3.838-2.1953v2.1953h.0019L12 10.8711l4.6953-2.7168V5.957zM5.0352 12.254l3.125 1.8085-3.125 1.7969-3.125-1.7969.5175-.3008 2.6075-1.5078zm13.9296 0l2.6075 1.5097.5156.2988-3.123 1.7969-3.125-1.7969 3.125-1.8086zM1.377 14.9491l3.1425 1.8086v3.6758L1.377 18.6113v-3.662zm7.3183 0v3.6621l-3.0371 1.7578-.1016.0606v-3.6738l3.1387-1.8067zm6.6094 0l3.1445 1.8086v3.6758l-.1074-.0645-3.0371-1.7578v-3.662zm7.3183 0v3.6621l-3.1386 1.8184v-3.6719l3.1386-1.8086z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/oracle.svg b/assets/lib/simple-icons/icons/oracle.svg
index 6ff7fb3c..a7b5a8d1 100644
--- a/assets/lib/simple-icons/icons/oracle.svg
+++ b/assets/lib/simple-icons/icons/oracle.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Oracle icon</title><path d="M16.412 4.412h-8.82a7.588 7.588 0 0 0-.008 15.176h8.828a7.588 7.588 0 0 0 0-15.176zm-.193 12.502H7.786a4.915 4.915 0 0 1 0-9.828h8.433a4.914 4.914 0 1 1 0 9.828z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Oracle</title><path d="M16.412 4.412h-8.82a7.588 7.588 0 0 0-.008 15.176h8.828a7.588 7.588 0 0 0 0-15.176zm-.193 12.502H7.786a4.915 4.915 0 0 1 0-9.828h8.433a4.914 4.914 0 1 1 0 9.828z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/orcid.svg b/assets/lib/simple-icons/icons/orcid.svg
index 4ce63494..129c604b 100644
--- a/assets/lib/simple-icons/icons/orcid.svg
+++ b/assets/lib/simple-icons/icons/orcid.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ORCID icon</title><path d="M12 0C5.372 0 0 5.372 0 12s5.372 12 12 12 12-5.372 12-12S18.628 0 12 0zM7.369 4.378c.525 0 .947.431.947.947s-.422.947-.947.947a.95.95 0 0 1-.947-.947c0-.525.422-.947.947-.947zm-.722 3.038h1.444v10.041H6.647V7.416zm3.562 0h3.9c3.712 0 5.344 2.653 5.344 5.025 0 2.578-2.016 5.025-5.325 5.025h-3.919V7.416zm1.444 1.303v7.444h2.297c3.272 0 4.022-2.484 4.022-3.722 0-2.016-1.284-3.722-4.097-3.722h-2.222z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ORCID</title><path d="M12 0C5.372 0 0 5.372 0 12s5.372 12 12 12 12-5.372 12-12S18.628 0 12 0zM7.369 4.378c.525 0 .947.431.947.947s-.422.947-.947.947a.95.95 0 0 1-.947-.947c0-.525.422-.947.947-.947zm-.722 3.038h1.444v10.041H6.647V7.416zm3.562 0h3.9c3.712 0 5.344 2.653 5.344 5.025 0 2.578-2.016 5.025-5.325 5.025h-3.919V7.416zm1.444 1.303v7.444h2.297c3.272 0 4.022-2.484 4.022-3.722 0-2.016-1.284-3.722-4.097-3.722h-2.222z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/oreilly.svg b/assets/lib/simple-icons/icons/oreilly.svg
new file mode 100644
index 00000000..530f6005
--- /dev/null
+++ b/assets/lib/simple-icons/icons/oreilly.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>O'Reilly</title><path d="M12.07 10.679v-.672H9.32v3.97h2.751v-.656H9.975v-1h2.002v-.657H9.975v-.985zm2.049 3.299v-3.971h.656v3.314h1.908v.657zm3.111 0v-3.971h.657v3.314h1.907v.657zm-4.456-3.971h.657v3.97h-.657zM1.079 11.023c-.25.25-.407.594-.407.985 0 .39.157.735.407 1a1.418 1.418 0 0 0 1.986 0c.25-.265.406-.61.406-1 0-.391-.156-.735-.407-.985a1.418 1.418 0 0 0-1.985 0M0 12.008c0-1.142.922-2.064 2.064-2.064 1.141 0 2.064.922 2.064 2.064a2.062 2.062 0 0 1-2.064 2.064A2.062 2.062 0 0 1 0 12.008Zm6.176-.344v-.985h1.329a.5.5 0 0 1 .5.485c0 .281-.234.5-.5.5zm1.657.61c.485-.141.829-.579.829-1.11 0-.642-.516-1.157-1.157-1.157H5.519v3.97h.657v-1.656h.922l.985 1.657h.782zM5.05 10.429a.477.477 0 0 1-.485.484.468.468 0 0 1-.484-.484c0-.266.203-.485.484-.485.266 0 .485.219.485.485zm17.684-.422h-.798l-1.016 1.47-1.016-1.47h-.813l1.485 2.157v1.814h.672v-1.814zm.781.813a.404.404 0 0 1-.406-.407c0-.219.172-.406.406-.406.22 0 .407.187.407.406a.414.414 0 0 1-.407.407m0-.892a.487.487 0 0 0-.484.485c0 .266.219.485.484.485a.487.487 0 0 0 .485-.485.487.487 0 0 0-.485-.485zm-.125.313h.203c.032 0 .063.031.063.063a.067.067 0 0 1-.063.062h-.203zm.344.063a.14.14 0 0 0-.14-.141h-.282v.5h.078v-.219h.14l.11.22h.094l-.11-.22a.15.15 0 0 0 .11-.14"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/org.svg b/assets/lib/simple-icons/icons/org.svg
new file mode 100644
index 00000000..84d7feaa
--- /dev/null
+++ b/assets/lib/simple-icons/icons/org.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Org</title><path d="M17.169 0c-.566.004-2.16 3.312-3.376 5.94a2.19 2.19 0 01-.408-1.267c-.03-.582-1.089.237-.936 1.275-.068-.035-1.26.227-1.26.23-.23-.93-.802-1.618-1.15-.563-.701 1.663-.88 2.984.115 4.585-.908 4.058-6.948 6.053-6.32 9.33.175.004 1.634 3.48 6.337 2.057 5.557-1.577 8.624 2.116 8.978 2.375.52.526-1.348-4.573-5.302-6.865-2.339-1.276-.87-3.474-.703-4.25 0 0 1.874 1.312 3.232-.692 1.227.316 2.05-.224 3.105.158.64.28 3.336.11 2.334-1.396-.148.129.07.27-.075.46-.043.056-.128.232-.408.315-.314.149-.83.27-1.43-.37-.434-.32-.748-.04-.992-.063.152-.098.577-.315 1.264-.315.388 0 .594.336.854.338.174 0 .685-.262.787-.365.63-.41.697-.278 1.012-.905.17-.759-.215-.92-.332-1.129-.032-.483-.436-.67-.919-.326-1.106-.198-2.192-.105-2.728-.15-1.175-.164-2.153-.786-2.153-.786.143-.19.075-.6-.842-.628-.315-.104-.45-.2-.745-.307.61-1.37.674-2.007 1.418-4.004.261-1.053 1.039-2.685.643-2.682zm-4.297 8.093c.03-.086.443.138.952.176.395.03.805.048 1.296-.025.03-.005.172.095-.15.194-.02.01-.062-.01-.065.196 0 .022-.01.04-.02.046-.15.152-.708.223-1.065.1-.436-.17-.482-.316-.517-.443-.305-.147-.47-.123-.43-.244zM9.685 10.2C8.86 9 8.929 8.36 8.96 7.256 7.961 8.288 6.855 8.3 5.18 8.58c-1.299.234-3.657 2.447-4.025 4.742-.043.608-.08 2.183.424 3.498.492 1.13.828 1.727 1.844 2.335-.882-3.169 5.296-5.33 6.263-8.955z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/origin.svg b/assets/lib/simple-icons/icons/origin.svg
index 91ce771a..a2a6bcbb 100644
--- a/assets/lib/simple-icons/icons/origin.svg
+++ b/assets/lib/simple-icons/icons/origin.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Origin icon</title><path d="M12.588 3.11c1.189.071 2.352.384 3.417.919 1.031.514 1.95 1.225 2.706 2.094.751.865 1.322 1.853 1.715 2.963.391 1.109.548 2.278.464 3.502-.033.636-.135 1.252-.306 1.848-.167.588-.393 1.159-.674 1.703-.439.849-.929 1.652-1.47 2.412-.538.759-1.125 1.465-1.762 2.118-.638.653-1.313 1.254-2.032 1.802-.719.544-1.471 1.038-2.254 1.479l-.037.026c-.033.018-.071.026-.109.023-.063-.015-.118-.048-.159-.097-.041-.05-.063-.111-.062-.173 0-.029.004-.059.012-.085.008-.023.021-.044.037-.062.277-.393.506-.806.686-1.235.181-.434.303-.885.368-1.359 0-.032-.015-.064-.038-.085-.021-.025-.053-.038-.085-.038-.264.032-.528.053-.795.062-.266.009-.532-.003-.796-.037-1.189-.071-2.353-.385-3.418-.918-1.031-.515-1.949-1.226-2.705-2.095-.754-.87-1.336-1.875-1.715-2.963-.394-1.123-.552-2.314-.465-3.502.033-.636.135-1.252.306-1.848.171-.598.396-1.155.675-1.68.439-.864.931-1.676 1.469-2.436.539-.757 1.125-1.464 1.761-2.118.639-.652 1.314-1.252 2.033-1.8.72-.546 1.47-1.039 2.253-1.479l.038-.025c.033-.02.07-.027.109-.025.065.016.119.051.158.098.043.051.062.106.062.174.001.027-.003.057-.012.084-.007.023-.02.043-.036.061-.273.386-.505.801-.687 1.237-.181.433-.3.885-.366 1.358 0 .033.012.063.036.086.022.024.054.037.085.037.262-.033.527-.053.795-.061.272-.009.536.003.798.035zm-.807 12.367c.922.079 1.838-.231 2.521-.855.72-.639 1.109-1.438 1.176-2.4.078-.928-.232-1.846-.856-2.535-.601-.708-1.472-1.131-2.4-1.162-.927-.078-1.845.232-2.534.855-.709.602-1.132 1.473-1.164 2.4-.078.926.228 1.842.846 2.535.628.725 1.432 1.115 2.411 1.162z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Origin</title><path d="M12.588 3.11a8.78 8.78 0 013.417.919 8.775 8.775 0 012.706 2.094 9.113 9.113 0 011.715 2.963 8.65 8.65 0 01.465 3.502 8.224 8.224 0 01-.307 1.848 9.174 9.174 0 01-.674 1.703 19.96 19.96 0 01-1.47 2.412 17.61 17.61 0 01-1.762 2.118 18.61 18.61 0 01-4.286 3.281l-.037.026a.196.196 0 01-.109.023.293.293 0 01-.159-.097.266.266 0 01-.062-.173c0-.029.004-.059.012-.085a.186.186 0 01.037-.062c.277-.393.506-.806.686-1.235a5.42 5.42 0 00.368-1.359.118.118 0 00-.038-.085.11.11 0 00-.085-.038 9.155 9.155 0 01-.795.062 4.926 4.926 0 01-.796-.037 8.818 8.818 0 01-6.123-3.013 9.089 9.089 0 01-1.715-2.963 8.662 8.662 0 01-.465-3.502 8.224 8.224 0 01.306-1.848 8.598 8.598 0 01.675-1.68c.439-.864.93-1.676 1.469-2.436a18.035 18.035 0 011.76-2.119A18.801 18.801 0 0111.609.05l.038-.025a.187.187 0 01.11-.025.295.295 0 01.157.098.255.255 0 01.062.174.244.244 0 01-.012.084.164.164 0 01-.036.061 6.447 6.447 0 00-.687 1.237c-.18.433-.3.885-.366 1.358 0 .033.012.063.036.086a.117.117 0 00.085.037c.262-.033.527-.053.795-.06.272-.01.536.002.798.034zm-.807 12.367a3.32 3.32 0 002.521-.855c.72-.64 1.11-1.438 1.176-2.4a3.357 3.357 0 00-.856-2.535 3.294 3.294 0 00-2.4-1.162 3.36 3.36 0 00-2.534.855 3.3 3.3 0 00-1.164 2.4 3.381 3.381 0 00.846 2.535c.628.725 1.432 1.115 2.411 1.162z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/osano.svg b/assets/lib/simple-icons/icons/osano.svg
new file mode 100644
index 00000000..aa5e9dbc
--- /dev/null
+++ b/assets/lib/simple-icons/icons/osano.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Osano</title><path d="M12 6.091A5.909 5.909 0 1017.909 12 5.91 5.91 0 0012 6.091M12 0A12 12 0 110 12 12 12 0 0112 0z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/oshkosh.svg b/assets/lib/simple-icons/icons/oshkosh.svg
index e1b51cb5..2ee24d1a 100644
--- a/assets/lib/simple-icons/icons/oshkosh.svg
+++ b/assets/lib/simple-icons/icons/oshkosh.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Oshkosh icon</title><path d="M8.925 9.864V7.232c0-.414.183-.517.449-.517h5.335c.265 0 .428.145.428.537v2.612h-1.57V8.657c0-.227 0-.29-.225-.29H10.72c-.246 0-.246.063-.246.27v1.227h-1.55zm4.641 4.979v.48c0 .226-.041.288-.224.288h-2.54c-.306 0-.327 0-.327-.289v-.479h-1.55v1.925c0 .413.163.517.428.517h5.335c.245 0 .449-.145.449-.538v-1.904h-1.57zm-2.036-1.905h.876v1.384h1.047V12.31c0-.087-.043-.433-.342-.433h-.534l.897-1.492h-1.111l-.833 1.297v-1.297h-.983v3.937h.983v-1.384zm11.466-1.072h-.898v-1.47h-1.004v3.915h1.004v-1.298h.898v1.298H24v-3.915h-1.004v1.47zm-18.34-.043v-.39h1.773v-1.037H3.886a.381.381 0 0 0-.385.367v1.73c0 .217.086.37.278.37h1.496v.432H3.5v1.016h2.564c.214 0 .364-.194.364-.41v-1.71a.362.362 0 0 0-.364-.368h-1.41zm14.07 0v-.39h1.772v-1.037h-2.542a.381.381 0 0 0-.385.367v1.73c0 .217.086.37.278.37h1.496v.432H17.57v1.016h2.564c.214 0 .363-.194.363-.41v-1.71a.362.362 0 0 0-.363-.368h-1.41zm-9.8.021H8.05v-1.448H7.024v3.915H8.05v-1.298h.876v1.298H9.95v-3.915H8.926v1.448zm-6.02-1.066v3.15c0 .21-.173.383-.383.383H.383A.384.384 0 0 1 0 13.928v-3.15c0-.21.172-.382.383-.382h2.14c.21 0 .383.172.383.382zm-1 .804a.17.17 0 0 0-.17-.17H1.17a.17.17 0 0 0-.17.17v1.542c0 .094.077.17.17.17h.567a.17.17 0 0 0 .17-.17v-1.542zm15.07-.804v3.15c0 .21-.173.383-.383.383h-2.14a.384.384 0 0 1-.383-.383v-3.15c0-.21.172-.382.383-.382h2.14c.21 0 .382.172.382.382zm-1 .804a.17.17 0 0 0-.17-.17h-.567a.17.17 0 0 0-.17.17v1.542c0 .094.076.17.17.17h.567a.17.17 0 0 0 .17-.17v-1.542z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Oshkosh</title><path d="M8.925 9.864V7.232c0-.414.183-.517.449-.517h5.335c.265 0 .428.145.428.537v2.612h-1.57V8.657c0-.227 0-.29-.225-.29H10.72c-.246 0-.246.063-.246.27v1.227h-1.55zm4.641 4.979v.48c0 .226-.041.288-.224.288h-2.54c-.306 0-.327 0-.327-.289v-.479h-1.55v1.925c0 .413.163.517.428.517h5.335c.245 0 .449-.145.449-.538v-1.904h-1.57zm-2.036-1.905h.876v1.384h1.047V12.31c0-.087-.043-.433-.342-.433h-.534l.897-1.492h-1.111l-.833 1.297v-1.297h-.983v3.937h.983v-1.384zm11.466-1.072h-.898v-1.47h-1.004v3.915h1.004v-1.298h.898v1.298H24v-3.915h-1.004v1.47zm-18.34-.043v-.39h1.773v-1.037H3.886a.381.381 0 0 0-.385.367v1.73c0 .217.086.37.278.37h1.496v.432H3.5v1.016h2.564c.214 0 .364-.194.364-.41v-1.71a.362.362 0 0 0-.364-.368h-1.41zm14.07 0v-.39h1.772v-1.037h-2.542a.381.381 0 0 0-.385.367v1.73c0 .217.086.37.278.37h1.496v.432H17.57v1.016h2.564c.214 0 .363-.194.363-.41v-1.71a.362.362 0 0 0-.363-.368h-1.41zm-9.8.021H8.05v-1.448H7.024v3.915H8.05v-1.298h.876v1.298H9.95v-3.915H8.926v1.448zm-6.02-1.066v3.15c0 .21-.173.383-.383.383H.383A.384.384 0 0 1 0 13.928v-3.15c0-.21.172-.382.383-.382h2.14c.21 0 .383.172.383.382zm-1 .804a.17.17 0 0 0-.17-.17H1.17a.17.17 0 0 0-.17.17v1.542c0 .094.077.17.17.17h.567a.17.17 0 0 0 .17-.17v-1.542zm15.07-.804v3.15c0 .21-.173.383-.383.383h-2.14a.384.384 0 0 1-.383-.383v-3.15c0-.21.172-.382.383-.382h2.14c.21 0 .382.172.382.382zm-1 .804a.17.17 0 0 0-.17-.17h-.567a.17.17 0 0 0-.17.17v1.542c0 .094.076.17.17.17h.567a.17.17 0 0 0 .17-.17v-1.542z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/osmc.svg b/assets/lib/simple-icons/icons/osmc.svg
index 7f23ed7a..40711c60 100644
--- a/assets/lib/simple-icons/icons/osmc.svg
+++ b/assets/lib/simple-icons/icons/osmc.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>OSMC icon</title><path d="M22.768 12.002c0 5.935-4.829 10.768-10.768 10.768-5.935-.005-10.763-4.833-10.763-10.768 0-5.94 4.828-10.767 10.768-10.767 5.934 0 10.763 4.828 10.763 10.767m.292-4.673a11.913 11.913 0 0 0-2.57-3.813 11.963 11.963 0 0 0-3.813-2.57A11.857 11.857 0 0 0 12.005 0a11.926 11.926 0 0 0-8.486 3.516A11.963 11.963 0 0 0 .948 7.33C.318 8.811.002 10.38.002 12.002s.316 3.192.942 4.673a11.913 11.913 0 0 0 2.57 3.813A11.963 11.963 0 0 0 12 24c1.619 0 3.191-.32 4.673-.942a11.913 11.913 0 0 0 3.813-2.57 11.963 11.963 0 0 0 3.512-8.486c0-1.623-.311-3.191-.938-4.673M8.566 14.631V9.263l2.574 2.684-2.574 2.684zM7.327 6.296v11.422l8.116-8.455v6.767c0 .343.279.618.617.618a.622.622 0 0 0 .622-.622v-9.74l-4.677 4.77-4.678-4.76z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>OSMC</title><path d="M22.768 12.002c0 5.935-4.829 10.768-10.768 10.768-5.935-.005-10.763-4.833-10.763-10.768 0-5.94 4.828-10.767 10.768-10.767 5.934 0 10.763 4.828 10.763 10.767m.292-4.673a11.913 11.913 0 0 0-2.57-3.813 11.963 11.963 0 0 0-3.813-2.57A11.857 11.857 0 0 0 12.005 0a11.926 11.926 0 0 0-8.486 3.516A11.963 11.963 0 0 0 .948 7.33C.318 8.811.002 10.38.002 12.002s.316 3.192.942 4.673a11.913 11.913 0 0 0 2.57 3.813A11.963 11.963 0 0 0 12 24c1.619 0 3.191-.32 4.673-.942a11.913 11.913 0 0 0 3.813-2.57 11.963 11.963 0 0 0 3.512-8.486c0-1.623-.311-3.191-.938-4.673M8.566 14.631V9.263l2.574 2.684-2.574 2.684zM7.327 6.296v11.422l8.116-8.455v6.767c0 .343.279.618.617.618a.622.622 0 0 0 .622-.622v-9.74l-4.677 4.77-4.678-4.76z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/osu.svg b/assets/lib/simple-icons/icons/osu.svg
new file mode 100644
index 00000000..bcbbcb61
--- /dev/null
+++ b/assets/lib/simple-icons/icons/osu.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>osu!</title><path d="M7.698 10.362c-.1855-.2184-.4189-.3905-.7002-.5162-.2813-.1257-.6104-.1885-.9874-.1885s-.7046.0628-.9829.1885-.5088.2978-.6912.5162c-.1827.2185-.3203.4773-.413.7765-.0928.2993-.1391.6194-.1391.9605 0 .3412.0463.6584.1391.9516.0927.2933.2303.5491.413.7675.1824.2185.4129.3891.6912.5116.2783.1226.6059.1841.9829.1841s.7061-.0615.9875-.1841c.2813-.1226.5146-.2931.7002-.5116.1855-.2184.3231-.4742.413-.7675.0897-.2931.1346-.6104.1346-.9516 0-.3411-.0449-.6612-.1346-.9605-.0899-.2992-.2276-.558-.4131-.7765zm-.965 2.8096c-.1467.2484-.3875.3725-.7227.3725-.3291 0-.567-.1241-.7136-.3725-.1467-.2483-.2199-.6059-.2199-1.0727s.0732-.8243.2199-1.0727c.1466-.2482.3844-.3725.7136-.3725.3352 0 .5759.1243.7227.3725.1466.2484.2199.6059.2199 1.0727.0001.4668-.0733.8245-.2199 1.0727zm11.8894-.8303-.0898-4.3896a4.5409 4.5409 0 0 1 .6912-.0539c.2334 0 .4668.0179.7002.0539l-.0898 4.3896c-.2096.0359-.41.0538-.6015.0538a3.4957 3.4957 0 0 1-.6103-.0538zm1.3196 1.4003c0 .2215-.0179.443-.0538.6643a4.2055 4.2055 0 0 1-.6553.0538 4.1414 4.1414 0 0 1-.6642-.0538 4.0882 4.0882 0 0 1-.0539-.6553c0-.2154.018-.4367.0539-.6643a4.0876 4.0876 0 0 1 .6552-.0538c.2155 0 .4368.018.6643.0538.0359.2276.0538.446.0538.6553zm-3.2226-4.0305c.2095 0 .422.018.6373.0539v4.4614c-.1916.0659-.4443.1302-.7585.193-.3141.0629-.6418.0943-.9829.0943-.3052 0-.5985-.024-.8798-.0718-.2813-.0479-.5282-.1495-.7405-.3052-.2125-.1555-.3815-.3829-.5072-.6823-.1257-.2991-.1885-.697-.1885-1.1938V9.765a3.8725 3.8725 0 0 1 .6373-.0539c.2094 0 .4219.018.6373.0539v2.4596c0 .2455.0194.4474.0584.6059.0388.1586.0988.2843.1795.377a.6606.6606 0 0 0 .3007.1974c.1197.0391.2603.0584.4219.0584.2214 0 .407-.0209.5566-.0628V9.765a3.8218 3.8218 0 0 1 .6284-.0539zm-4.3625 2.6841c.0538.1497.0808.3321.0808.5476 0 .2215-.0464.428-.1392.6194-.0928.1916-.2274.3577-.4039.4982-.1766.1407-.3905.2514-.6418.3322-.2514.0808-.5356.1212-.8528.1212a5.2984 5.2984 0 0 1-.395-.0135 3.1226 3.1226 0 0 1-.3456-.0448 4.0482 4.0482 0 0 1-.3277-.0763 3.9336 3.9336 0 0 1-.35-.1166 2.5768 2.5768 0 0 1 .0852-.4893 3.0737 3.0737 0 0 1 .1751-.4802c.1975.0779.3844.1362.561.1751.1765.039.3605.0584.5521.0584.0838 0 .175-.0075.2738-.0225a.9945.9945 0 0 0 .2737-.0808.6467.6467 0 0 0 .2109-.1526c.0569-.0628.0853-.145.0853-.2469 0-.1436-.0434-.2469-.1302-.3097-.0868-.0628-.208-.1181-.3636-.1661l-.5565-.1616c-.3352-.0956-.5969-.2379-.7855-.4263-.1885-.1886-.2827-.4713-.2827-.8484 0-.4547.163-.8108.4892-1.0682.3261-.2573.7705-.386 1.333-.386.2334 0 .4638.0211.6913.0629.2273.0419.4578.1048.6912.1885-.012.1557-.0419.3173-.0897.4847-.048.1676-.1048.3142-.1706.4398a3.58 3.58 0 0 0-.4757-.1571 2.18 2.18 0 0 0-.5477-.0673c-.2034 0-.3621.0314-.4758.0943-.1137.0629-.1705.1631-.1705.3007 0 .1317.0403.2244.1211.2783.0809.0538.1959.1048.3456.1526l.5117.1526c.1675.048.3187.1063.4533.1751.1347.0688.2498.1541.3456.2558.0958.1016.1707.2272.2246.3768zM12 0C5.3726 0 0 5.3726 0 12.0001 0 18.6273 5.3726 24 12 24c6.6275 0 12-5.3727 12-11.9999C24 5.3726 18.6275 0 12 0zm0 22.8c-5.9647 0-10.8-4.8354-10.8-10.7999C1.2 6.0353 6.0353 1.2 12 1.2s10.8 4.8353 10.8 10.8001C22.8 17.9646 17.9647 22.8 12 22.8z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/otto.svg b/assets/lib/simple-icons/icons/otto.svg
new file mode 100644
index 00000000..d3fd4d0c
--- /dev/null
+++ b/assets/lib/simple-icons/icons/otto.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Otto</title><path d="M20.893 7.95c-1.195 0-2.168.37-2.855 1.132.097-.265.149-.588.156-.968h-4.191c-.914 0-1.437.402-1.796 1.437l.185-1.437H8.157c-.775 0-1.307.37-1.5 1.096-.524-.84-1.457-1.26-2.636-1.26C1.779 7.95.32 9.246.059 12.01l-.033.35c-.228 2.47 1.067 3.69 3.08 3.69 2.243 0 3.702-1.307 3.963-4.072l.033-.348c.059-.634.015-1.185-.114-1.655h1.899l-.545 4.66c-.108.925.392 1.35 1.23 1.35.512 0 .686-.034.882-.066l.675-5.944h2.21l-.544 4.66c-.11.925.392 1.35 1.23 1.35.511 0 .685-.034.881-.066l.675-5.944h1.089c.376 0 .68-.087.915-.26-.342.604-.566 1.366-.654 2.296l-.032.348c-.229 2.471 1.066 3.69 3.08 3.69 2.243 0 3.701-1.306 3.962-4.07l.033-.349c.229-2.46-1.067-3.68-3.08-3.68zM4.86 11.477l-.022.262c-.152 1.872-.762 2.449-1.513 2.449-.675 0-1.153-.457-1.055-1.676l.021-.272c.153-1.862.762-2.45 1.513-2.45.664 0 1.154.468 1.056 1.687zm16.873 0-.022.262c-.153 1.872-.762 2.449-1.513 2.449-.675 0-1.154-.457-1.056-1.676l.022-.272c.152-1.862.762-2.45 1.513-2.45.664 0 1.154.468 1.056 1.687z"/></svg>
diff --git a/assets/lib/simple-icons/icons/overcast.svg b/assets/lib/simple-icons/icons/overcast.svg
index a842c2b6..d06f06f4 100644
--- a/assets/lib/simple-icons/icons/overcast.svg
+++ b/assets/lib/simple-icons/icons/overcast.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Overcast icon</title><path d="M12 24C5.389 24.018.017 18.671 0 12.061V12C0 5.35 5.351 0 12 0s12 5.35 12 12c0 6.649-5.351 12-12 12zm0-4.751l.9-.899-.9-3.45-.9 3.45.9.899zm-1.15-.05L10.4 20.9l1.05-1.052-.6-.649zm2.3 0l-.6.601 1.05 1.051-.45-1.652zm.85 3.102L12 20.3l-2 2.001c.65.1 1.3.199 2 .199s1.35-.05 2-.199zM12 1.5C6.201 1.5 1.5 6.201 1.5 12c-.008 4.468 2.825 8.446 7.051 9.899l2.25-8.35c-.511-.372-.809-.968-.801-1.6 0-1.101.9-2.001 2-2.001s2 .9 2 2.001c0 .649-.301 1.2-.801 1.6l2.25 8.35c4.227-1.453 7.06-5.432 7.051-9.899 0-5.799-4.701-10.5-10.5-10.5zm6.85 15.7c-.255.319-.714.385-1.049.15-.313-.207-.4-.628-.194-.941.014-.021.028-.04.044-.06 0 0 1.35-1.799 1.35-4.35s-1.35-4.35-1.35-4.35c-.239-.289-.198-.719.091-.957.02-.016.039-.031.06-.044.335-.235.794-.169 1.049.15.1.101 1.65 2.15 1.65 5.2S18.949 17.1 18.85 17.2zm-3.651-1.95c-.3-.3-.249-.85.051-1.15 0 0 .75-.799.75-2.1s-.75-2.051-.75-2.1c-.3-.301-.3-.801-.051-1.15.232-.303.666-.357.969-.125.029.022.056.047.082.074C16.301 8.75 17.5 10 17.5 12s-1.199 3.25-1.25 3.301c-.301.299-.75.25-1.051-.051zm-6.398 0c-.301.301-.75.35-1.051.051C7.699 15.199 6.5 14 6.5 12s1.199-3.199 1.25-3.301c.301-.299.801-.299 1.051.051.3.3.249.85-.051 1.15 0 .049-.75.799-.75 2.1s.75 2.1.75 2.1c.3.3.351.799.051 1.15zm-2.602 2.101c-.335.234-.794.169-1.05-.15C5.051 17.1 3.5 15.05 3.5 12s1.551-5.1 1.649-5.2c.256-.319.715-.386 1.05-.15.313.206.4.628.194.941-.013.02-.028.04-.043.059C6.35 7.65 5 9.449 5 12s1.35 4.35 1.35 4.35c.25.3.15.75-.151 1.001z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Overcast</title><path d="M12 24C5.389 24.018.017 18.671 0 12.061V12C0 5.35 5.351 0 12 0s12 5.35 12 12c0 6.649-5.351 12-12 12zm0-4.751l.9-.899-.9-3.45-.9 3.45.9.899zm-1.15-.05L10.4 20.9l1.05-1.052-.6-.649zm2.3 0l-.6.601 1.05 1.051-.45-1.652zm.85 3.102L12 20.3l-2 2.001c.65.1 1.3.199 2 .199s1.35-.05 2-.199zM12 1.5C6.201 1.5 1.5 6.201 1.5 12c-.008 4.468 2.825 8.446 7.051 9.899l2.25-8.35c-.511-.372-.809-.968-.801-1.6 0-1.101.9-2.001 2-2.001s2 .9 2 2.001c0 .649-.301 1.2-.801 1.6l2.25 8.35c4.227-1.453 7.06-5.432 7.051-9.899 0-5.799-4.701-10.5-10.5-10.5zm6.85 15.7c-.255.319-.714.385-1.049.15-.313-.207-.4-.628-.194-.941.014-.021.028-.04.044-.06 0 0 1.35-1.799 1.35-4.35s-1.35-4.35-1.35-4.35c-.239-.289-.198-.719.091-.957.02-.016.039-.031.06-.044.335-.235.794-.169 1.049.15.1.101 1.65 2.15 1.65 5.2S18.949 17.1 18.85 17.2zm-3.651-1.95c-.3-.3-.249-.85.051-1.15 0 0 .75-.799.75-2.1s-.75-2.051-.75-2.1c-.3-.301-.3-.801-.051-1.15.232-.303.666-.357.969-.125.029.022.056.047.082.074C16.301 8.75 17.5 10 17.5 12s-1.199 3.25-1.25 3.301c-.301.299-.75.25-1.051-.051zm-6.398 0c-.301.301-.75.35-1.051.051C7.699 15.199 6.5 14 6.5 12s1.199-3.199 1.25-3.301c.301-.299.801-.299 1.051.051.3.3.249.85-.051 1.15 0 .049-.75.799-.75 2.1s.75 2.1.75 2.1c.3.3.351.799.051 1.15zm-2.602 2.101c-.335.234-.794.169-1.05-.15C5.051 17.1 3.5 15.05 3.5 12s1.551-5.1 1.649-5.2c.256-.319.715-.386 1.05-.15.313.206.4.628.194.941-.013.02-.028.04-.043.059C6.35 7.65 5 9.449 5 12s1.35 4.35 1.35 4.35c.25.3.15.75-.151 1.001z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/overleaf.svg b/assets/lib/simple-icons/icons/overleaf.svg
index 17e7fcfb..1062127a 100644
--- a/assets/lib/simple-icons/icons/overleaf.svg
+++ b/assets/lib/simple-icons/icons/overleaf.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Overleaf icon</title><path d="M7.362 6.029a11.685 11.685 0 00-5.694 9.606 8.368 8.368 0 1011.355-7.823 7.724 7.724 0 00-2.97-.562 12.346 12.346 0 00-4.21 4.87 5.496 5.496 0 114.193 9.027 5.496 5.496 0 01-4.192-1.93 6.602 6.602 0 01-1.585-5.563c1.073-6.42 8.764-10.117 14.458-11.553a59.17 59.17 0 00-7.592 4.374c6.883 2.657 7.989-3.136 11.207-5.728C19.13-.507 7.379-.969 7.362 6.03z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Overleaf</title><path d="M22.3515.7484C19.1109-.5101 7.365-.982 7.3452 6.0266c-3.4272 2.194-5.6967 5.768-5.6967 9.598a8.373 8.373 0 0 0 13.1225 6.898 8.373 8.373 0 0 0-1.7668-14.7194c-.6062-.2339-1.9234-.6481-2.9753-.559-1.5007.9544-3.3308 2.9155-4.1949 4.8693 2.5894-3.082 7.5046-2.425 9.1937 1.2287 1.6892 3.6538-.9944 7.8237-5.0198 7.7998a5.4995 5.4995 0 0 1-4.1949-1.9328c-1.485-1.7483-1.8678-3.6444-1.5615-5.4975 1.057-6.4947 8.759-10.1894 14.486-11.6094-1.8677.989-5.2373 2.6134-7.5948 4.3837C18.015 9.1382 19.1308 3.345 22.3515.7484z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ovh.svg b/assets/lib/simple-icons/icons/ovh.svg
index 6bbac5d2..8e80d0eb 100644
--- a/assets/lib/simple-icons/icons/ovh.svg
+++ b/assets/lib/simple-icons/icons/ovh.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>OVH icon</title><path d="M19.881 10.095l2.563-4.45C23.434 7.389 24 9.404 24 11.555c0 2.88-1.017 5.523-2.71 7.594h-6.62l2.04-3.541h-2.696l3.176-5.513h2.691zm-2.32-5.243L9.333 19.14l.003.009H2.709C1.014 17.077 0 14.435 0 11.555c0-2.152.57-4.17 1.561-5.918L5.855 13.1 10.6 4.852h6.961z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>OVH</title><path d="M19.881 10.095l2.563-4.45C23.434 7.389 24 9.404 24 11.555c0 2.88-1.017 5.523-2.71 7.594h-6.62l2.04-3.541h-2.696l3.176-5.513h2.691zm-2.32-5.243L9.333 19.14l.003.009H2.709C1.014 17.077 0 14.435 0 11.555c0-2.152.57-4.17 1.561-5.918L5.855 13.1 10.6 4.852h6.961z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/owasp.svg b/assets/lib/simple-icons/icons/owasp.svg
new file mode 100644
index 00000000..d499ba67
--- /dev/null
+++ b/assets/lib/simple-icons/icons/owasp.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>OWASP</title><path d="M15.897 20.503c-.384 0-1.782-2.489-1.97-3.198-.393-1.486-.308-2.114-.285-2.314.072-.613.667-.92.703-1.748.01-.256.14-1.535.243-2.534a1.723 1.723 0 0 1-.733-.343c.676.908-.32 1.995-1.767 3.443-1.536 1.536-4.945 2.961-4.945 2.961s1.425-3.41 2.961-4.945c1.13-1.129 2.04-1.983 2.816-1.983.22 0 .427.067.627.216a1.722 1.722 0 0 1-.343-.733c-.999.103-2.278.232-2.534.244-.829.036-1.135.63-1.747.702-.07.008-.194.024-.388.024-.36 0-.963-.054-1.926-.31-.772-.203-3.648-1.84-3.14-2.045.26-.105 1.087-.176 2.175-.176 1.047 0 2.337.066 3.596.23 1.57.205 3.01.463 3.992.656.016-.053.035-.104.058-.154l-1.004-.48s-.8-.92-.715-.984a.02.02 0 0 1 .012-.003c.126 0 .767.733.829.816l.605.202-.284-.249s-.388-1.438-.287-1.472h.004c.106 0 .459 1.25.489 1.34.07.06.303.152.596.32l-.308-.79s.14-1.305.243-1.305h.003c.105.021-.02 1.089-.047 1.221l.51.783a1.31 1.31 0 0 1 .463-.082c.184 0 .374.036.558.107-.236-.502-.218-1.025.095-1.338a.84.84 0 0 1 .353-.209.462.462 0 0 1 .457-.383c.127 0 .254.05.352.148a.497.497 0 0 1 .147.335c.151-.311.329-.73.317-.867-.03-.307-.386-.852-.39-.857a.076.076 0 0 1 .064-.119c.025 0 .05.012.064.035.016.023.381.582.414.927.018.198-.21.696-.333.95a2.227 2.227 0 0 1 .873.874c.245-.12.715-.334.927-.334l.024.001c.345.033.904.399.927.414a.076.076 0 0 1-.084.128c-.005-.004-.55-.36-.857-.39h-.015c-.15 0-.552.171-.852.317.12.004.242.053.335.147a.482.482 0 0 1 .012.681.459.459 0 0 1-.247.128.845.845 0 0 1-.21.354.924.924 0 0 1-.67.255c-.212 0-.441-.055-.667-.16.132.343.142.708.025 1.02l.783.51c.095-.019.666-.088.993-.088.13 0 .222.011.228.04.02.106-1.305.247-1.305.247l-.79-.308c.168.293.26.527.32.596.091.03 1.374.392 1.34.493-.004.012-.026.017-.063.017-.283 0-1.41-.304-1.41-.304l-.248-.284.202.605c.087.065.876.755.813.841-.004.005-.009.007-.016.007-.139 0-.967-.722-.967-.722l-.481-1.004a1.18 1.18 0 0 1-.154.058c.193.982.451 2.422.656 3.992.335 2.569.26 5.261.054 5.77-.016.041-.042.06-.076.06M12 24C5.373 24 0 18.627 0 12S5.373 0 12 0s12 5.373 12 12-5.373 12-12 12m0-22.153C6.393 1.847 1.847 6.393 1.847 12S6.393 22.153 12 22.153 22.153 17.607 22.153 12 17.607 1.847 12 1.847Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/oxygen.svg b/assets/lib/simple-icons/icons/oxygen.svg
new file mode 100644
index 00000000..5cd57b9e
--- /dev/null
+++ b/assets/lib/simple-icons/icons/oxygen.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Oxygen</title><path d="M23.89 12c0-6.627-5.324-12-11.89-12S.109 5.373.109 12 5.433 24 12 24c2.014 0 3.91-.508 5.573-1.4.62.354 1.338.558 2.105.558 2.326 0 4.212-1.865 4.212-4.165 0-.946-.319-1.818-.857-2.517.552-1.383.857-2.894.857-4.476zm-21.402.005c0-5.448 4.269-9.864 9.535-9.864s9.535 4.416 9.535 9.864c0 1.07-.166 2.099-.471 3.063a4.23 4.23 0 0 0-1.408-.239c-2.326 0-4.212 1.865-4.212 4.165 0 .72.185 1.397.51 1.988a9.21 9.21 0 0 1-3.953.888c-5.267-.001-9.536-4.418-9.536-9.865zm17.191 9.864c-1.514.021-2.84-1.267-2.819-2.788 0-1.54 1.262-2.788 2.819-2.788 1.507-.025 2.843 1.27 2.819 2.788 0 1.54-1.263 2.788-2.819 2.788z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/oyo.svg b/assets/lib/simple-icons/icons/oyo.svg
new file mode 100644
index 00000000..1efc40b7
--- /dev/null
+++ b/assets/lib/simple-icons/icons/oyo.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>OYO</title><path d="M19.843 16.185C22.135 16.185 24 14.307 24 12c0-2.309-1.865-4.185-4.157-4.185-2.293 0-4.158 1.876-4.158 4.185 0 2.307 1.865 4.185 4.158 4.185zm0-5.677c.817 0 1.482.67 1.482 1.492s-.666 1.49-1.483 1.49A1.488 1.488 0 0 1 18.36 12c0-.824.665-1.493 1.482-1.493zM4.157 16.185c2.293 0 4.158-1.878 4.158-4.185 0-2.309-1.865-4.185-4.158-4.185C1.866 7.815 0 9.691 0 12c0 2.307 1.866 4.185 4.157 4.185zm0-5.677c.818 0 1.483.67 1.483 1.492s-.665 1.49-1.483 1.49A1.488 1.488 0 0 1 2.677 12c0-.824.664-1.493 1.48-1.493zm7.84-.094L10.722 7.87H7.733l2.791 5.564v2.62h2.948v-2.62l2.791-5.564h-2.99l-1.275 2.544Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/p5dotjs.svg b/assets/lib/simple-icons/icons/p5dotjs.svg
new file mode 100644
index 00000000..5be52be4
--- /dev/null
+++ b/assets/lib/simple-icons/icons/p5dotjs.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>p5.js</title><path d="M1.345 9.122v.784h.035c.07-.11.161-.22.274-.333a1.85 1.85 0 0 1 .416-.305 2.557 2.557 0 0 1 1.253-.31 2.632 2.632 0 0 1 1.964.854c.242.266.429.578.561.936.133.36.2.745.2 1.159 0 .413-.065.801-.194 1.163a2.856 2.856 0 0 1-.549.948 2.642 2.642 0 0 1-.866.644c-.34.16-.723.24-1.152.24-.398 0-.763-.083-1.094-.246a1.86 1.86 0 0 1-.766-.668h-.024v3.558H0V9.12zm3.276 2.785c0-.219-.034-.435-.1-.65a1.82 1.82 0 0 0-.298-.579 1.503 1.503 0 0 0-.503-.416 1.53 1.53 0 0 0-.714-.157 1.44 1.44 0 0 0-.691.163 1.77 1.77 0 0 0-.52.421 1.795 1.795 0 0 0-.328.585 1.97 1.97 0 0 0 0 1.305 1.807 1.807 0 0 0 .328.58 1.687 1.687 0 0 0 .52.414c.203.105.434.159.691.159a1.483 1.483 0 0 0 1.217-.586c.132-.171.231-.366.297-.585a2.248 2.248 0 0 0 .1-.654zm13.682-3.054v6.223c0 .335-.028.653-.082.952a2.018 2.018 0 0 1-.31.785 1.623 1.623 0 0 1-.62.532c-.262.132-.602.199-1.024.199a2.676 2.676 0 0 1-.35-.024 3.507 3.507 0 0 1-.281-.047l.117-1.192a1.762 1.762 0 0 0 .386.047.752.752 0 0 0 .397-.094.627.627 0 0 0 .234-.258c.055-.109.09-.235.105-.38.016-.144.024-.298.024-.461V8.853zm4.784 1.765a1.621 1.621 0 0 0-.514-.427 1.449 1.449 0 0 0-.714-.18c-.226 0-.432.046-.62.14a.483.483 0 0 0-.28.467.47.47 0 0 0 .31.462c.206.09.508.182.906.276.21.047.423.109.638.187.214.077.41.18.585.31a1.53 1.53 0 0 1 .427.48c.109.19.163.423.163.695 0 .344-.064.634-.192.872-.13.238-.301.43-.515.58a2.169 2.169 0 0 1-.75.32 3.884 3.884 0 0 1-.883.101 3.507 3.507 0 0 1-1.275-.24 2.694 2.694 0 0 1-1.03-.685l.925-.866a1.828 1.828 0 0 0 1.44.703c.1 0 .204-.012.31-.035a1.052 1.052 0 0 0 .29-.112.607.607 0 0 0 .218-.205.58.58 0 0 0 .081-.316.52.52 0 0 0-.32-.503c-.216-.1-.538-.202-.967-.303a4.635 4.635 0 0 1-.614-.182 2.004 2.004 0 0 1-.531-.292 1.35 1.35 0 0 1-.375-.451 1.42 1.42 0 0 1-.14-.667c0-.311.064-.58.192-.806a1.66 1.66 0 0 1 .51-.556c.21-.145.447-.252.713-.322a3.184 3.184 0 0 1 .819-.105c.405 0 .801.07 1.187.21.386.14.692.355.919.643zm-8.29 2.931l.837-.252.164.505-.833.283.517.734-.436.316-.544-.721-.53.701-.423-.322.517-.708-.84-.302.165-.506.843.271v-.872h.564v.872zm-2.887-2.644a2.309 2.309 0 0 0-.602-.819 2.679 2.679 0 0 0-.907-.509 3.517 3.517 0 0 0-1.13-.175c-.148 0-.313.008-.497.024a2.435 2.435 0 0 0-.474.082l.082-1.79h3.382V6.453H7.05l-.14 4.527a3.487 3.487 0 0 1 .426-.175 6.564 6.564 0 0 1 .491-.147 4.487 4.487 0 0 1 .515-.099 3.78 3.78 0 0 1 .497-.035c.227 0 .45.025.668.076.218.05.415.14.591.269.174.129.317.298.426.509.11.21.164.476.164.795 0 .25-.04.474-.123.673a1.413 1.413 0 0 1-.333.497 1.443 1.443 0 0 1-.49.304c-.19.07-.388.106-.598.106-.375 0-.698-.1-.972-.299a1.631 1.631 0 0 1-.584-.79l-.015.006-1.016.952c.205.335.47.616.797.838.475.324 1.06.486 1.754.486a3.417 3.417 0 0 0 1.17-.2 2.705 2.705 0 0 0 1.609-1.491c.16-.362.24-.773.24-1.233 0-.422-.072-.794-.216-1.118z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/packagist.svg b/assets/lib/simple-icons/icons/packagist.svg
new file mode 100644
index 00000000..e1b6db7a
--- /dev/null
+++ b/assets/lib/simple-icons/icons/packagist.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Packagist</title><path d="M13.214 23.975c-.098-.053-.329-.062-1.615-.062h-1.26l-.017-.088-.096-.431a3.622 3.622 0 0 1-.07-.354c.005-.007-.012-.056-.038-.107l-.048-.094-.547.085c-.301.046-.598.1-.659.116-.1.03-.11.03-.103.004.038-.14.044-.201.028-.266-.018-.07-.017-.072.238-.645.276-.622.266-.594.237-.634-.018-.025-.042-.02-.307.07-.159.05-.294.093-.301.09a16.82 16.82 0 0 1 .414-.732c.451-.773.566-.976.566-1.003 0-.01-.12-.146-.271-.304-.15-.157-.311-.329-.357-.384a.584.584 0 0 0-.112-.11c-.05-.017-.264-.231-.738-.734a16.196 16.196 0 0 0-.525-.542c-.062-.05-.077-.074-.107-.175a6.511 6.511 0 0 0-.291-.714l-.096-.201v-.178c0-.271-.056-.542-.277-1.331l-.054-.191-.087-.01c-.193-.017-.283-.123-.431-.504a6.231 6.231 0 0 0-.231-.472c-.1-.191-.221-.428-.271-.532l-.086-.185-.08-.01a.72.72 0 0 0-.361.05c-.12.05-.345.063-.618.037l-.399-.038-.199-.02-.107-.191c-.161-.284-.161-.285-.238-.324-.09-.046-.161-.046-.572 0l-.325.035-.245-.035c-.645-.094-.797-.166-.797-.375 0-.042-.045-.261-.102-.489-.13-.528-.218-1.126-.195-1.332.034-.294.273-.996.636-1.87l.142-.341.023-.547c.142-3.274.178-3.76.284-3.951.035-.062.468-.431.644-.552.335-.224 1.503-.8 2.802-1.379l.384-.171.195-.012.193-.01.522.329.521.329.423-.2.658-.308c.235-.108.236-.11.367-.253.184-.201.492-.566.592-.703.118-.161.395-.388.816-.672.147-.098.185-.116.569-.264l.231-.09h.49c.451 0 .502.003.655.037.358.078.652.193.686.267.022.05.07.08.187.12.14.048.311.168 1.224.863.489.373.472.366 1.539.719l.298.1.176.211c.201.241.358.404.404.419.07.022.485-.08 1.009-.249.266-.085.303-.093.351-.077.03.01.175.02.321.02.271.005.514.034 1.117.137.153.027.281.048.283.048.002 0 .244.419.537.933.293.512.61 1.048.705 1.192.167.249.174.264.189.375.026.191.08 1.008.09 1.309l.023.896c.02.843.036 1.04.09 1.154.093.199.276.747.572 1.719l.12.401.008.930-.14.728-.158.813-.016.083-.439.264-.441.265-.321-.016c-.179-.01-.335-.016-.349-.016-.03 0-.066.113-.135.411-.04.176-.042.178-.092.187l-.666.106c-.92.145-1.037.181-1.341.424-.264.211-.264.208-.556 1.681a16.97 16.97 0 0 1-.185.856c-.105.317-.941 1.708-1.246 2.074l-.165.199.064.228c.035.126.073.265.083.309.016.07.314 1.206.421 1.609l.038.14-.201-.084-.328-.136a.549.549 0 0 0-.13-.046c-.003.004.033.15.08.327.08.288.187.763.177.773-.003 0-.15-.008-.331-.022a6.185 6.185 0 0 0-.381-.02l-.055.005-.181.662c-.1.363-.184.664-.187.667-.01.007-.536-.02-1.005-.05-.54-.035-.7-.032-.836.017-.125.045-.241.05-.306.014l.002-.001zm1.957-.348c0-.026.023-.181.05-.345.027-.165.05-.337.05-.383 0-.056.013-.116.04-.175.02-.05.036-.09.033-.093-.002-.002-.368-.03-.813-.062-.637-.046-.86-.067-1.053-.103l-.244-.046-.58.072c-.414.05-.588.078-.607.095-.02.02-.201.042-.712.094-.376.038-.717.075-.756.083l-.072.013.004.083c.003.065.02.115.083.231.06.113.088.191.12.331.02.1.042.184.046.188.003.003.973.014 2.157.023 2.034.016 2.154.018 2.191.045.046.035.064.02.064-.05l-.001-.001zm-4.782-1.179c.873-.123 1.226-.168 1.572-.194.387-.028.897-.087 1.259-.143.057-.01.248-.02.424-.026l.321-.01.377.097.379.098.682.04c.377.023.687.04.69.036a2.93 2.93 0 0 0-.07-.229c-.042-.122-.11-.333-.155-.468l-.077-.244-.231-.072-.231-.073-.156.066-.156.065-1.776.057-1.774.058-.118-.06-.118-.057H9.8l-.269.597c-.148.328-.271.602-.276.609-.008.016-.124.03 1.134-.147zm6.127-1.036c0-.017-.431-1.435-.444-1.457-.007-.012-.05.024-.115.096l-.105.115.154.568.153.568.169.06c.181.064.191.067.191.05zm-6.788-.713l.191-.355-.057-.083c-.032-.046-.063-.08-.068-.073-.007.006-.142.238-.303.515s-.297.511-.302.517c-.004.01.072-.026.171-.075l.176-.09.192-.356zm2.957-.072c.106-.306.193-.562.193-.57a.856.856 0 0 0-.198-.075 3.495 3.495 0 0 1-.201-.066.578.578 0 0 1 .063-.11l.068-.104.405-.02c.706-.033 1.114-.155 1.51-.451.15-.11.214-.128.296-.085.07.04.12.128.106.191-.01.042-.028.056-.241.197-.201.13-.876.428-1.114.492-.136.035-.289.12-.323.181-.04.066-.159.92-.132.947.006.006 1.148-.04 1.33-.056.11-.008.117-.01.161-.067.024-.032.13-.153.238-.267.106-.113.301-.333.431-.488.13-.154.328-.381.437-.502.171-.189.263-.318.619-.857.878-1.324.937-1.441 1.003-1.969.045-.375.067-.447.214-.697.146-.249.294-.965.213-1.033-.072-.06-.153-.032-.427.15-.512.341-1.039.841-1.114 1.053-.034.095-.223.373-.285.418l-.519.369c-.582.414-.52.349-.849.879l-.11.174-.327.173-.328.171-.616.015c-1.23.028-1.288.022-1.943-.207l-.431-.153-.344-.303c-.191-.168-.53-.47-.754-.672l-.407-.368-.142-.321a28.99 28.99 0 0 1-.497-1.15c-.084-.226-.09-.231-.275-.428-.341-.361-.529-.757-.757-1.612-.045-.165-.078-.259-.1-.281-.018-.016-.028-.022-.023-.012.006.01 0 .046-.012.082-.157.441-.209.768-.249 1.559-.02.359-.02.351.096.983.225 1.226.296 1.5.409 1.565.04.024.165.146.291.286.341.376.448.485.604.61.285.231.735.71.901.961.04.06.102.14.135.177.15.163.462.6.899 1.259l.314.475.13-.007c.09-.006.329.012.74.054.336.035.635.064.665.065h.056l.191-.555zm-2.276.455a1.103 1.103 0 0 0-.122-.201c-.075-.107-.14-.195-.15-.191-.01.003-.138.268-.181.374-.01.031.341.044.453.018zm2.766-2.758c.046-.033.127-.055.376-.105.311-.06.375-.083.628-.211a.309.309 0 0 0 .092-.11.74.74 0 0 1 .11-.138c.04-.036.055-.062.055-.098 0-.078.227-.275 1.091-.946a.9.9 0 0 0 .245-.268c.074-.11.158-.211.263-.309.085-.08.291-.284.459-.451.168-.171.391-.376.497-.462a3.44 3.44 0 0 0 .241-.204c.03-.032.157-.106.335-.196.159-.08.295-.156.301-.168.018-.03.09-.06.508-.217.889-.331 1.479-.492 1.79-.492.08 0 .096-.052.067-.219-.068-.395-.296-.552-.808-.552h-.181l-.063-.067c-.06-.065-.067-.087-.124-.325-.115-.485-.185-.532-.742-.516-.435.013-.552.06-1.754.718-.602.331-1.035.702-1.543 1.33a.964.964 0 0 1-.11.123c-.311-.002-.303-.472.017-.949l.106-.157-.084-.035c-.236-.107-.532-.123-.74-.04-.291.116-1.023.525-1.117.622-.098.103-.187.106-.187.007 0-.122.114-.285.289-.411.04-.032.11-.088.153-.127a1.63 1.63 0 0 1 .435-.261c.147-.06.142-.052.09-.15-.14-.255-.525-.546-.915-.689-.05-.02-.169-.07-.263-.112-.221-.102-.331-.124-.672-.136-.244-.01-.283-.014-.267-.033.074-.09.311-.133.79-.144l.384-.01.248.11c.697.301.963.462 1.074.645.076.128.084.133.194.112.266-.05.518.032.765.249.135.12.184.13.274.063a.773.773 0 0 0 .273-.502c.035-.271-.06-1.136-.153-1.385-.07-.188-.057-.196.087-.046.171.178.171.178.326-.11.04-.076.103-.176.138-.221.291-.367.281-1.047-.017-1.347-.15-.15-.404-.291-.815-.446-.403-.155-.47-.211-.77-.628-.361-.506-.425-.567-.724-.708-.617-.293-2.101-.562-2.57-.467-.441.09-1.04.447-1.32.789-.175.213-.63.377-1.274.462-.84.108-1.254.828-1.041 1.806.04.191.038.189.165.034.405-.505 1.209-.976 1.93-1.13.575-.12 1.475-.126 2.01-.01l.096.022h-.144c-.75.01-1.904.257-2.722.584l-.176.07-.016.087c-.015.083-.022.093-.281.351-.536.539-.69.796-.775 1.286-.04.239.036.589.15.678.027.022.047.05.042.06a2.825 2.825 0 0 0-.026.225c-.076.845.323 1.866.96 2.453l.144.133.108-.09c.317-.259.859-.614.888-.582.043.05.034.09-.033.155-.085.082-.196.226-.496.642l-.259.361.007.104c.01.13.076.337.147.451.03.046.09.15.136.229.167.284.321.52.424.642.096.117.184.241.284.401.028.046.05.064.07.06.04-.01.09.026.279.204.186.171.083.122.845.408.823.309 1.131.369 1.465.286.09-.022.097-.022.168.015.09.047.09.047.163-.002v.005zm-6.348-3.82c.003-.003.02-.103.037-.225.017-.12.053-.286.08-.367l.193-.644c.177-.602.159-.55.178-.52.025.042.015-.01-.016-.074a1.69 1.69 0 0 1-.066-.171l-.034-.108.034-.588.034-.589-.055-.397a6.234 6.234 0 0 0-.064-.406c-.032-.032-.464.145-.599.245-.175.13-.401.679-.492 1.194-.12.694-.008 1.647.226 1.916.07.08.226.378.357.68l.034.077.075-.01a.347.347 0 0 0 .078-.013zm14.775-1.31c.126-.088.238-.177.246-.196.015-.037.213-1.099.281-1.507l.042-.257-.042-.447-.042-.446-.125-.48c-.124-.475-.128-.484-.264-.755-.216-.431-.194-.236-.379-3.358l-.035-.578-.053-.055c-.07-.075-.337-.458-.963-1.388a14.255 14.255 0 0 0-.546-.781 16.04 16.04 0 0 0-.821-.146c-.395-.055-.736-.025-1.055.094-.128.048-.14.05-.201.03-.138-.047-.293-.003-.569.164l-.145.087-.166-.221c-.191-.251-.194-.255-.57-.502-.64-.416-.716-.449-1.632-.692-.353-.094-.311-.062-.993-.742l-.535-.532-.585.008c-.989.015-1.482.06-1.6.142-.712.508-1.094.888-1.538 1.531l-.103.15-.386.184c-.422.203-1.034.392-1.201.369-.092-.012-.421-.18-.658-.341-.438-.291-.739-.326-1.088-.124-.284.163-.483.269-1.286.675-.861.437-.965.496-1.246.705l-.164.123-.143.288c-.311.626-.305.602-.321 1.415-.03 1.52-.035 2.008-.016 2.122.03.179.036.374.016.505-.028.171-.387 1.387-.585 1.977-.066.199-.135.52-.159.736-.01.07 0 .175.036.391.026.164.07.451.097.64.066.464.12.562.358.64.209.07.309.063.732-.045.793-.203.813-.197 1.134.378.078.137.112.184.143.193.105.03.725.01.866-.027l.194-.05.056-.015-.02-.096a2.414 2.414 0 0 1-.023-.624c.024-.268.064-.506.153-.889.004-.017-.006-.004-.022.03l-.03.06-.035-.157a1.876 1.876 0 0 0-.291-.672 6.435 6.435 0 0 1-.421-.87l-.093-.231.01-.161c.05-.718.224-1.186.597-1.595.227-.248.293-.351.325-.522.025-.13.106-.807.171-1.395l.057-.547.241-.715c.13-.394.231-.722.225-.728a9.003 9.003 0 0 0-.693-.321c-.124-.035-.412-.023-.632.027-.705.161-1.224.532-1.25.893-.007.08-.362.827-.395.828-.02 0-.074-.098-.093-.169-.02-.074-.012-.115.073-.351.032-.088.097-.307.145-.487.12-.443.14-.477.405-.599l.467-.221c.675-.325 1.657-.578 1.899-.49.143.05.359.226.552.446l.092.104-.09.246c-.458 1.266-.575 1.617-.606 1.823-.071.458-.066 1.465.008 1.695.058.188.054.195-.223.377-.477.316-.953.919-.973 1.233-.013.211.09.634.221.888.052.105.589.913.606.913.006 0 .03-.04.057-.09a1.9 1.9 0 0 1 .704-.773c.316-.204.317-.204.341-.313.161-.725.425-1.144.88-1.385l.197-.105-.095-.035c-.145-.053-.271-.143-.428-.308-.697-.733-.966-1.566-.688-2.127.02-.04.052-.122.072-.184.245-.755.931-1.164 1.842-1.101.896.063 1.294.296 1.618.94.311.624.294 1.191-.055 1.751l-.066.106.06-.058c.068-.063.766-.374.946-.421.268-.07.659-.03 1.894.193.499.09.584.125.823.341.05.048.09.076.09.064s-.01-.104-.025-.206c-.083-.617.034-1.401.269-1.786.284-.466 1.375-.883 1.974-.754.301.065.769.355 1.021.635.032.036.06.056.06.045 0-.01-.02-.325-.04-.699a11.12 11.12 0 0 1-.03-.689c.008-.006.144-.084.306-.174l.293-.161.052.04c.044.032.169.063.78.191l.763.164c.027.006.085.09.216.307.097.164.271.448.388.632.425.68.502.856.411.941-.093.087-.108.086-.169-.007-.03-.045-.201-.314-.379-.595a16.068 16.068 0 0 0-.351-.539c-.02-.02-.998-.346-1.487-.497-.239-.073-.492 1.151-.434 2.099.02.319.02.321.291.57.169.156.858 1.126.993 1.397l.067.136-.006.826-.005.825-.105.177c-.441.742-.694 1.021-.985 1.096-.161.04-.339.175-.324.241.005.022.013.154.02.291.006.167.016.253.027.253.01 0 .073-.01.14-.023.455-.087.958-.057 1.261.073.11.047.116.064.128.344.017.375.042.407.353.457.348.055.468.114.695.344l.128.13.462.002.462.002.245-.168zM9.954 3.808a13.19 13.19 0 0 0-.833-.494c-.338-.171-.351-.201-.117-.309.341-.157.474-.11.908.315.168.165.369.349.448.411.156.118.328.275.328.297 0 .027-.115.14-.14.14a8.7 8.7 0 0 1-.594-.36zm3.987.19a.518.518 0 0 1-.235-.191l-.042-.07.03-.068c.04-.095.076-.13.231-.231.074-.05.159-.11.188-.134.159-.14 1.179-.558 1.358-.558.1 0 .13.02.176.125a.63.63 0 0 0 .065.12c.05.056-.06.115-.341.179-.15.034-.502.176-.818.328l-.258.125-.148.201c-.08.11-.15.201-.15.201L13.94 4l.001-.002zm2.25 8.609c.117-.103.612-.334.898-.418.104-.03.171-.307.171-.72v-.234l-.092-.191c-.097-.201-.203-.378-.221-.371-.006.002-.203.251-.437.556l-.427.552.01.249.01.444c0 .225-.006.218.09.134l-.002-.001zm1.639-1.799l.344-.132.112-.169c.391-.592.512-.901.529-1.379l.01-.308-.228-.361c-.386-.607-.636-1.018-.722-1.187a.36.36 0 0 0-.062-.1c-.062-.04-.245.12-.458.401-.15.201-.226.254-.674.478-.592.295-.876.341-1.292.213a7.003 7.003 0 0 0-.552-.156c-.042 0 .133.206.294.347.126.11.221.161.346.181.191.03.547.231 1.094.612.303.214.261.133.291.55l.027.351.08.078c.1.098.214.251.381.51.07.112.13.205.132.205l.348-.134zm-1.719-3.119c.446-.164.704-.665.527-1.023-.194-.391-.634-.702-.998-.702-.425 0-.979.482-.979.853 0 .008.058-.038.127-.104.329-.311.692-.346 1.05-.105.385.258.469.77.173 1.064-.078.08-.067.08.1.02v-.003zm-7.704-.16a.963.963 0 0 1-.026-.396c.145-.778 1.09-1.005 1.51-.364l.064.1-.009-.129c-.069-.971-1.094-1.234-1.726-.443-.356.447-.299 1.13.105 1.274.103.036.107.034.08-.042h.002zm8.86-.527c.261-.439.226-1.053-.088-1.53-.421-.642-1.084-.841-1.806-.542-.559.231-.776.517-.825 1.081-.022.251-.012.281.058.176.238-.354.644-.547 1.094-.522.712.038 1.24.539 1.385 1.316l.034.183.008.04.04-.05a1.56 1.56 0 0 0 .1-.154v.002zm-1.431.09a.125.125 0 0 0 .04-.096.127.127 0 0 0-.04-.095.128.128 0 0 0-.096-.04c-.04 0-.07.013-.097.04a.13.13 0 0 0-.038.096c0 .123.146.185.233.098l-.002-.003zm-8.218-.209c.138-.773.732-1.289 1.48-1.289.485 0 .838.274 1.043.809.054.14.06.143.087.035.07-.274-.01-.848-.163-1.149-.26-.518-1.032-.779-1.751-.591-.415.106-.9.64-.997 1.097-.1.468-.038.849.191 1.167.077.108.077.108.11-.08v.001zm1.928 0a.128.128 0 0 0 .04-.096c0-.04-.013-.07-.04-.097-.027-.028-.056-.041-.096-.041s-.07.013-.096.04a.128.128 0 0 0-.04.097.136.136 0 0 0 .232.097z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/packer.svg b/assets/lib/simple-icons/icons/packer.svg
new file mode 100644
index 00000000..a6ece2af
--- /dev/null
+++ b/assets/lib/simple-icons/icons/packer.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Packer</title><path d="M7.844 0v3.38l5.75 3.32v10.148l2.705 1.552c1.676.967 3.045.388 3.045-1.285V9.668c-.014-1.687-1.382-3.832-3.059-4.799L7.844 0zM4.656 2.932v16.574L12.436 24V7.426l-7.78-4.494Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/paddypower.svg b/assets/lib/simple-icons/icons/paddypower.svg
new file mode 100644
index 00000000..7624ac6f
--- /dev/null
+++ b/assets/lib/simple-icons/icons/paddypower.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Paddy Power</title><path d="M15.014 3.713a18.383 18.383 0 0 0-1.626.084c-.816.082-1.714.245-2.53.408l.57 6.368.246 1.96.654 6.857 1.55-.083 1.796-.162v-.082l-.408-4.081v-.573a19.201 19.201 0 0 0 2.04-.408 10.164 10.164 0 0 0 1.633-.816 5.257 5.257 0 0 0 1.714-2.041 6.53 6.53 0 0 0 .409-2.774 4.751 4.751 0 0 0-2.858-4.082 7.347 7.347 0 0 0-2.694-.572 18.383 18.383 0 0 0-.496-.003zm-10.775.98a18.383 18.383 0 0 0-1.626.085A14.026 14.026 0 0 0 0 5.105l.572 6.366.163 1.96.654 6.857 1.551-.082 1.795-.164-.327-4.081v-.571a19.197 19.197 0 0 0 2.041-.408 10.164 10.164 0 0 0 1.633-.817 5.257 5.257 0 0 0 1.714-2.04 5.967 5.967 0 0 0 .408-2.695A4.653 4.653 0 0 0 7.43 5.267a7.347 7.347 0 0 0-2.695-.57 18.383 18.383 0 0 0-.496-.004zM15.1 6.731a1.233 1.233 0 0 1 .085.006 3.265 3.265 0 0 1 1.468.325 2.065 2.065 0 0 1 1.062 1.633 2.596 2.596 0 0 1-.164 1.143 1.861 1.861 0 0 1-.571.817 2.449 2.449 0 0 1-1.306.572 1.78 1.78 0 0 1-.653.081l-.409-4.49a1.233 1.233 0 0 1 .488-.087zm-10.942.98a1.233 1.233 0 0 1 .17.005 3.265 3.265 0 0 1 1.47.327 2.065 2.065 0 0 1 1.06 1.633 4.947 4.947 0 0 1-.163 1.143 1.861 1.861 0 0 1-.573.816 2.449 2.449 0 0 1-1.305.57 1.78 1.78 0 0 1-.653.082l-.408-4.49a1.233 1.233 0 0 1 .402-.086zm17.801 7.27A2.04 2.04 0 1 0 24 17.023a2.04 2.04 0 0 0-2.04-2.04z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/pagekit.svg b/assets/lib/simple-icons/icons/pagekit.svg
index d7bfec9d..b1c44811 100755..100644
--- a/assets/lib/simple-icons/icons/pagekit.svg
+++ b/assets/lib/simple-icons/icons/pagekit.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Pagekit icon</title><path d="M2.401 0v24h9.6v-3.527H5.929V3.526h12.146v13.421h-6.073v3.525H21.6V0H2.401z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Pagekit</title><path d="M2.401 0v24h9.6v-3.527H5.929V3.526h12.146v13.421h-6.073v3.525H21.6V0H2.401z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/pagerduty.svg b/assets/lib/simple-icons/icons/pagerduty.svg
index e28e95d4..13af329b 100644
--- a/assets/lib/simple-icons/icons/pagerduty.svg
+++ b/assets/lib/simple-icons/icons/pagerduty.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>PagerDuty icon</title><path d="M16.965 1.18C15.085.164 13.769 0 10.683 0H3.73v14.55h6.926c2.743 0 4.8-.164 6.61-1.37 1.975-1.303 3.004-3.484 3.004-6.007 0-2.716-1.262-4.896-3.305-5.994zm-5.5 10.326h-4.21V3.113l3.977-.027c3.62-.028 5.43 1.234 5.43 4.128 0 3.113-2.248 4.292-5.197 4.292zM3.73 17.61h3.525V24H3.73Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>PagerDuty</title><path d="M16.965 1.18C15.085.164 13.769 0 10.683 0H3.73v14.55h6.926c2.743 0 4.8-.164 6.61-1.37 1.975-1.303 3.004-3.484 3.004-6.007 0-2.716-1.262-4.896-3.305-5.994zm-5.5 10.326h-4.21V3.113l3.977-.027c3.62-.028 5.43 1.234 5.43 4.128 0 3.113-2.248 4.292-5.197 4.292zM3.73 17.61h3.525V24H3.73Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/pagespeedinsights.svg b/assets/lib/simple-icons/icons/pagespeedinsights.svg
new file mode 100644
index 00000000..74f22274
--- /dev/null
+++ b/assets/lib/simple-icons/icons/pagespeedinsights.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>PageSpeed Insights</title><path d="M22.363 1.636H1.635C.732 1.636 0 2.37.001 3.273L0 20.727v.003c0 .903.733 1.634 1.635 1.634h20.73c.904 0 1.635-.734 1.635-1.637V3.273c.016-.89-.76-1.64-1.637-1.637zM3.979 2.886c.492-.507 1.279.28.77.772-.491.508-1.278-.279-.77-.771zM1.8 2.89c.507-.509 1.28.265.772.771-.493.502-1.274-.28-.772-.771zm21.7 17.838c.012.611-.524 1.148-1.137 1.136H1.635A1.137 1.137 0 0 1 .5 20.727L.501 4.91H23.5v15.819zM11 16.159l5.946-4.577c.235-.2.576.129.389.372l-.002-.002-3.936 6.35a1.638 1.638 0 0 1-2.448.405c-.785-.668-.811-1.835.05-2.548zm4.763-.75c.09-.168 2.002-3.181 2.06-3.35 2.056 1.813 3.029 4.382 2.898 7.026h-3.819c.073-1.39-.29-2.678-1.139-3.676zm-8.679 3.682H3.278c-.357-7.022 7.148-11.735 13.39-7.92l-3.461 2.618c-3.3-.762-6.364 1.71-6.123 5.302z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/pagseguro.svg b/assets/lib/simple-icons/icons/pagseguro.svg
index 5ff5d088..4f7f756b 100644
--- a/assets/lib/simple-icons/icons/pagseguro.svg
+++ b/assets/lib/simple-icons/icons/pagseguro.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>PagSeguro icon</title><path d="M17.482 9.712c1.64 0 3.108.69 4.1 1.813.044-.388.087-.777.087-1.208C21.67 5.007 17.353.69 12 .69c-5.353 0-9.67 4.316-9.67 9.626 0 .345 0 .69.044 1.036a8.688 8.688 0 017.943-5.137c2.848 0 5.352 1.381 6.95 3.496h.215zm-7.122-2.72c-4.36 0-7.9 3.54-7.9 7.9s3.54 7.9 7.9 7.9c2.158 0 4.1-.864 5.525-2.245a5.53 5.53 0 01-3.928-5.31c0-2.676 1.9-4.92 4.446-5.438-1.468-1.684-3.626-2.806-6.043-2.806zM4.79 21.583A11.958 11.958 0 010 12C0 5.353 5.396 0 12 0s12 5.396 12 12-5.396 12-12 12c-1.554 0-3.022-.302-4.36-.82-1.079-.389-2.028-.907-2.849-1.597zm12.777-1.51a4.827 4.827 0 004.835-4.835 4.827 4.827 0 00-4.835-4.834 4.827 4.827 0 00-4.834 4.834 4.827 4.827 0 004.834 4.835Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>PagSeguro</title><path d="M17.482 9.712c1.64 0 3.108.69 4.1 1.813.044-.388.087-.777.087-1.208C21.67 5.007 17.353.69 12 .69c-5.353 0-9.67 4.316-9.67 9.626 0 .345 0 .69.044 1.036a8.688 8.688 0 017.943-5.137c2.848 0 5.352 1.381 6.95 3.496h.215zm-7.122-2.72c-4.36 0-7.9 3.54-7.9 7.9s3.54 7.9 7.9 7.9c2.158 0 4.1-.864 5.525-2.245a5.53 5.53 0 01-3.928-5.31c0-2.676 1.9-4.92 4.446-5.438-1.468-1.684-3.626-2.806-6.043-2.806zM4.79 21.583A11.958 11.958 0 010 12C0 5.353 5.396 0 12 0s12 5.396 12 12-5.396 12-12 12c-1.554 0-3.022-.302-4.36-.82-1.079-.389-2.028-.907-2.849-1.597zm12.777-1.51a4.827 4.827 0 004.835-4.835 4.827 4.827 0 00-4.835-4.834 4.827 4.827 0 00-4.834 4.834 4.827 4.827 0 004.834 4.835Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/palantir.svg b/assets/lib/simple-icons/icons/palantir.svg
index d7b03a8e..50be0dea 100644
--- a/assets/lib/simple-icons/icons/palantir.svg
+++ b/assets/lib/simple-icons/icons/palantir.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Palantir icon</title><path d="M20.147 18L12 21.178 3.853 18 2.5 20.343 12 24l9.5-3.657L20.147 18zM12 0a9.5 9.5 0 1 0 0 19 9.5 9.5 0 0 0 0-19zm0 16.078a6.568 6.568 0 1 1 0-13.136 6.568 6.568 0 0 1 0 13.136z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Palantir</title><path d="M20.147 18L12 21.178 3.853 18 2.5 20.343 12 24l9.5-3.657L20.147 18zM12 0a9.5 9.5 0 1 0 0 19 9.5 9.5 0 0 0 0-19zm0 16.078a6.568 6.568 0 1 1 0-13.136 6.568 6.568 0 0 1 0 13.136z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/paloaltosoftware.svg b/assets/lib/simple-icons/icons/paloaltosoftware.svg
index 84013643..092c4a76 100644
--- a/assets/lib/simple-icons/icons/paloaltosoftware.svg
+++ b/assets/lib/simple-icons/icons/paloaltosoftware.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Palo Alto Software icon</title><path d="M1.576 14.448l6.323-6.434 1.649-1.678a3.419 3.419 0 0 1 4.825 0l1.609 1.608 6.433 6.434.84-.84c.909-.839.909-2.237.07-3.146L13.603.742c-.91-.91-2.308-.91-3.217 0l-9.65 9.65c-.91.909-.91 2.307 0 3.216zm12.028-7.273c-.91-.91-2.308-.91-3.217 0l-8.042 8.042-1.608 1.608c-.91.91-.91 2.308 0 3.217l3.216 3.217c.91.909 2.308.909 3.217 0l4.825-4.826 4.826 4.826c.909.909 2.307.909 3.216 0l3.217-3.217c.91-.839.91-2.308.07-3.217z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Palo Alto Software</title><path d="M11.995.005c-.58 0-1.158.228-1.615.685L.685 10.385c-.913.913-.913 2.318 0 3.231l.842.843 8.01-8.15a3.435 3.435 0 0 1 4.847 0l8.079 8.08.842-.843c.914-.843.915-2.248.072-3.161L13.612.69a2.279 2.279 0 0 0-1.617-.685zm0 6.463c-.58 0-1.158.228-1.615.684L.685 16.848c-.913.913-.913 2.318 0 3.23l3.231 3.232c.914.913 2.318.913 3.232 0l4.847-4.846 4.848 4.846c.913.913 2.318.913 3.231 0l3.231-3.231c.914-.843.915-2.318.072-3.231l-9.765-9.696a2.279 2.279 0 0 0-1.617-.684z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/pandas.svg b/assets/lib/simple-icons/icons/pandas.svg
index 2f517342..1b55566f 100644
--- a/assets/lib/simple-icons/icons/pandas.svg
+++ b/assets/lib/simple-icons/icons/pandas.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>pandas icon</title><path d="M16.922 0h2.623v18.104h-2.623zm-4.126 12.94h2.623v2.57h-2.623zm0-7.037h2.623v5.446h-2.623zm0 11.197h2.623v5.446h-2.623zM4.456 5.896h2.622V24H4.455zm4.213 2.559h2.623v2.57H8.67zm0 4.151h2.623v5.447H8.67zm0-11.187h2.623v5.446H8.67Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>pandas</title><path d="M16.922 0h2.623v18.104h-2.623zm-4.126 12.94h2.623v2.57h-2.623zm0-7.037h2.623v5.446h-2.623zm0 11.197h2.623v5.446h-2.623zM4.456 5.896h2.622V24H4.455zm4.213 2.559h2.623v2.57H8.67zm0 4.151h2.623v5.447H8.67zm0-11.187h2.623v5.446H8.67Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/pandora.svg b/assets/lib/simple-icons/icons/pandora.svg
index 661cabb9..41b2413a 100644
--- a/assets/lib/simple-icons/icons/pandora.svg
+++ b/assets/lib/simple-icons/icons/pandora.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Pandora icon</title><path d="M1.882 0v24H8.32a1.085 1.085 0 001.085-1.085v-4.61h1.612c7.88 0 11.103-4.442 11.103-9.636C22.119 2.257 17.247 0 12.662 0H1.882Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Pandora</title><path d="M1.882 0v24H8.32a1.085 1.085 0 001.085-1.085v-4.61h1.612c7.88 0 11.103-4.442 11.103-9.636C22.119 2.257 17.247 0 12.662 0H1.882Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/pantheon.svg b/assets/lib/simple-icons/icons/pantheon.svg
index d770cc90..af21c07b 100644
--- a/assets/lib/simple-icons/icons/pantheon.svg
+++ b/assets/lib/simple-icons/icons/pantheon.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Pantheon icon</title><path d="M7.258 0l2.205 5.171H6.656l.929 2.276h5.689L7.258-.001zm-.169 7.973c-.315 0-.487 0-.629.456C6.289 8.974 6.27 10 6.27 12s.02 3.027.19 3.571c.142.456.314.456.629.456h3.585l-1.775-4.203h1.589l-.891-2.1h.427l.892 2.101h1.894l-1.637-3.853H7.09zm3.398 3.851l.001.002.003-.002h-.003zm1.089-3.851l.743 1.752h3.175c.069 0 .23-.085.23-.877s-.16-.876-.23-.876h-3.919zm.892 2.1l.743 1.752h2.632c.07 0 .23-.085.23-.877s-.16-.876-.23-.876h-3.376zM9.47 12.175l1.858 4.377H8.021l6.115 7.449-2.205-5.172h2.806l-.939-2.276h-1.302l-1.86-4.377H9.469zm1.594 0l.743 1.752h4.038c.07 0 .23-.085.23-.876s-.161-.877-.231-.877h-4.78zm.89 2.101l.745 1.751h2.797c.069 0 .23-.085.23-.876s-.163-.876-.231-.876h-3.54zm5.046.509a.718.718 0 0 0-.286.06l.005-.002a.744.744 0 0 0-.386.383l-.002.005a.682.682 0 0 0-.058.279v.007c0 .101.021.197.06.284l-.002-.004a.744.744 0 0 0 .383.386l.005.002a.71.71 0 0 0 .571-.002l-.005.002a.744.744 0 0 0 .386-.383l.002-.005a.71.71 0 0 0-.002-.571l.002.005a.744.744 0 0 0-.383-.386l-.005-.002a.705.705 0 0 0-.283-.058H17zm.002.129c.084 0 .164.017.237.049l-.004-.002a.608.608 0 0 1 .318.315l.002.004a.587.587 0 0 1-.002.47l.002-.004a.605.605 0 0 1-.315.318l-.004.002a.587.587 0 0 1-.47-.002l.004.002a.605.605 0 0 1-.318-.315l-.002-.004a.573.573 0 0 1-.047-.23v-.004h.001v-.005c0-.082.017-.16.048-.231l-.001.004a.605.605 0 0 1 .315-.318l.004-.001a.587.587 0 0 1 .233-.047h.001zm.073.178h-.006l-.027.001h.001-.321l-.001.001v.832h.153v-.341h.112l.207.341h.16l-.215-.353a.234.234 0 0 0 .142-.065.222.222 0 0 0 .057-.148l-.001-.018V15.328a.241.241 0 0 0-.072-.171.325.325 0 0 0-.189-.066zm-.201.136h.183a.199.199 0 0 1 .065.014h-.001c.019.008.034.02.046.035a.126.126 0 0 1 0 .129v-.001a.12.12 0 0 1-.045.035h-.001a.187.187 0 0 1-.063.014h-.184v-.227z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Pantheon</title><path d="M7.604 0L9.75 5.171H7.018l.904 2.276h5.535zm4.202 7.973l.724 1.752h3.09c.066 0 .223-.086.223-.877 0-.79-.157-.875-.224-.875zm-4.367 0c-.306 0-.474 0-.612.456-.166.544-.185 1.571-.185 3.57 0 2 .02 3.028.185 3.572.138.456.306.456.612.456h3.486l-1.727-4.202v.014l-.816-2.116h1.912l.884 2.119 1.826-.016-1.591-3.853zm5.235 2.1l.724 1.753h2.562c.068 0 .223-.086.223-.876s-.156-.876-.223-.876zm-3.742.076l2.633 6.403H8.346L14.297 24l-2.146-5.172h2.731l-.913-2.276H12.7l-2.634-6.403zm2.374 2.026l.724 1.752h3.93c.067 0 .223-.086.223-.876s-.155-.876-.223-.876zm.868 2.1l.723 1.752h2.722c.067 0 .223-.085.223-.875s-.156-.876-.223-.876zm4.624 1.2v.511h.103v-.391l.129.391h.096l.125-.391v.391h.107v-.511h-.15l-.127.394-.127-.394zm-.466 0v.092h.144v.42h.117v-.42h.144v-.092z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/paperspace.svg b/assets/lib/simple-icons/icons/paperspace.svg
new file mode 100644
index 00000000..6ca89692
--- /dev/null
+++ b/assets/lib/simple-icons/icons/paperspace.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Paperspace</title><path d="M23.832 10.848c0 3.04-1.883 6.402-4.471 8.879C16.774 22.202 13.275 24 10.093 24c-3.213 0-5.806-1.766-7.44-4.178C1.026 17.42.168 14.2.168 11.226c0-3.04 1.617-5.934 3.945-7.936C6.437 1.292 9.651 0 12.81 0c3.162 0 5.991 1.211 7.916 3.13 1.927 1.919 3.107 4.706 3.107 7.718Zm-11.023-9.69c-.446 0-.89.027-1.328.078.273-.02.547-.032.822-.034 2.931.017 5.67 1.04 7.58 2.725-1.77-1.753-4.154-2.768-7.074-2.768Zm-2.716 21.683a8.9 8.9 0 0 0 1.972-.23 9.39 9.39 0 0 1-1.844.192 8.132 8.132 0 0 1-4.128-1.11c1.125.732 2.445 1.148 4 1.148Zm9.052-18.02c-1.76-1.566-4.101-2.482-6.842-2.46-.91-.007-1.794.1-2.64.306.614-.096 1.25-.145 1.902-.145 2.748 0 5.439.772 7.36 2.208.388.29.75.615 1.083.97a8.986 8.986 0 0 0-.863-.88ZM10.22 21.643c.966 0 1.95-.178 2.922-.502-.928.24-1.869.369-2.785.369-1.347 0-2.56-.265-3.611-.736.99.557 2.138.869 3.474.869Zm8.01-15.986c-1.757-1.313-4.077-1.977-6.666-1.977-2.572 0-4.638.738-6.166 2.132-1.524 1.392-2.364 3.285-2.364 5.792 0 2.547.586 4.687 1.825 6.275 1.234 1.58 2.96 2.472 5.498 2.472 2.564 0 5.178-1.038 7.248-2.752 2.067-1.71 3.401-3.9 3.401-6.374 0-2.481-1.03-4.262-2.777-5.568Zm-9 .732h4.719c1.765 0 3.217 1.131 3.217 3.08 0 2.475-1.95 3.961-4.377 3.961H10.35l-.696 3.99H7.287L9.232 6.39Zm3.45 5.149c1.207 0 2.149-.62 2.149-1.874 0-.975-.757-1.377-1.595-1.377h-1.978l-.572 3.246h1.996v.005Z"/></svg>
diff --git a/assets/lib/simple-icons/icons/paritysubstrate.svg b/assets/lib/simple-icons/icons/paritysubstrate.svg
index e1d61c0d..3a257c7d 100644
--- a/assets/lib/simple-icons/icons/paritysubstrate.svg
+++ b/assets/lib/simple-icons/icons/paritysubstrate.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Parity Substrate icon</title><path d="M12.254 0L1.795 6.038l-.254-.152-.008.008v.652l.576-.33-.254-.144L12.313.034zm1.677.965L3.472 7.004l-.212-.128-1.727 1v.601l2.252-1.296-.211-.118 10.458-6.038zm1.677.966L5.148 7.969l-.169-.102-3.446 1.99v.56l3.93-2.27-.17-.093 10.45-6.039zm1.668.957l-6.512 3.777-.33-.186L8.57 7.554v.381L6.826 8.943l-.127-.076-5.166 2.972v.517l5.606-3.244-.127-.076 1.558-.898v.398l1.152.66L8.51 9.9l-.085-.051-6.885 3.98v.458l7.283-4.2-.084-.052 1.21-.703 1.178.686-2.55 1.465v.271L1.542 15.82v.407L8.58 12.16v.313l1.092.627-8.13 4.7v.178l.161.093 8.282-4.776 1.127.652-2.532 1.448v.33l-5.471 3.16.27.151 5.2-3.006v.381l3.414-1.973 1.024.593-1.008.584v.102l-7.19 4.15.23.126L12 15.98v.102l1.414-.813 1.118.643-1.82 1.059.16.093-.864.5v.144l-5.47 3.159.186.11 5.284-3.049v.144l1.305-.754.254.153 1.82-1.05v-.305l7.08-4.082v-.517l-7.071 4.09v-.186l-1.118-.643 8.19-4.726v-.457l-8.58 4.954-1.024-.593 2.532-1.473v-.34l7.071-4.072v-.407l-7.071 4.082v-.254l-1.143-.66 8.214-4.743-.008-.203-.153-.085-8.375 4.827-1.084-.618 2.54-1.474v-.372l5.505-3.176-.271-.152-5.242 3.023v-.313L11.975 9.51l-1.178-.686 8.376-4.835-.229-.127-8.358 4.835-1.144-.66 1.855-1.076-.347-.203 6.512-3.76zM11.983 10.5l1.084.627-1.211.703-1.33.762-1.084-.618zm1.389.813l1.152.66-2.558 1.466-1.135-.652L12 12.11zm9.087 2.134L12 19.486v.195l-3.743 2.16.135.084L12 19.842v.195l10.459-6.03zm0 1.931L12 21.417v.246L9.968 22.84l.101.05L12 21.782v.237l10.459-6.03zm0 1.94L12 23.347v.296l-.313.187.059.025.254-.144V24l10.459-6.03Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Parity Substrate</title><path d="M12.254 0L1.795 6.038l-.254-.152-.008.008v.652l.576-.33-.254-.144L12.313.034zm1.677.965L3.472 7.004l-.212-.128-1.727 1v.601l2.252-1.296-.211-.118 10.458-6.038zm1.677.966L5.148 7.969l-.169-.102-3.446 1.99v.56l3.93-2.27-.17-.093 10.45-6.039zm1.668.957l-6.512 3.777-.33-.186L8.57 7.554v.381L6.826 8.943l-.127-.076-5.166 2.972v.517l5.606-3.244-.127-.076 1.558-.898v.398l1.152.66L8.51 9.9l-.085-.051-6.885 3.98v.458l7.283-4.2-.084-.052 1.21-.703 1.178.686-2.55 1.465v.271L1.542 15.82v.407L8.58 12.16v.313l1.092.627-8.13 4.7v.178l.161.093 8.282-4.776 1.127.652-2.532 1.448v.33l-5.471 3.16.27.151 5.2-3.006v.381l3.414-1.973 1.024.593-1.008.584v.102l-7.19 4.15.23.126L12 15.98v.102l1.414-.813 1.118.643-1.82 1.059.16.093-.864.5v.144l-5.47 3.159.186.11 5.284-3.049v.144l1.305-.754.254.153 1.82-1.05v-.305l7.08-4.082v-.517l-7.071 4.09v-.186l-1.118-.643 8.19-4.726v-.457l-8.58 4.954-1.024-.593 2.532-1.473v-.34l7.071-4.072v-.407l-7.071 4.082v-.254l-1.143-.66 8.214-4.743-.008-.203-.153-.085-8.375 4.827-1.084-.618 2.54-1.474v-.372l5.505-3.176-.271-.152-5.242 3.023v-.313L11.975 9.51l-1.178-.686 8.376-4.835-.229-.127-8.358 4.835-1.144-.66 1.855-1.076-.347-.203 6.512-3.76zM11.983 10.5l1.084.627-1.211.703-1.33.762-1.084-.618zm1.389.813l1.152.66-2.558 1.466-1.135-.652L12 12.11zm9.087 2.134L12 19.486v.195l-3.743 2.16.135.084L12 19.842v.195l10.459-6.03zm0 1.931L12 21.417v.246L9.968 22.84l.101.05L12 21.782v.237l10.459-6.03zm0 1.94L12 23.347v.296l-.313.187.059.025.254-.144V24l10.459-6.03Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/parse-dot-ly.svg b/assets/lib/simple-icons/icons/parse-dot-ly.svg
deleted file mode 100644
index 176e566f..00000000
--- a/assets/lib/simple-icons/icons/parse-dot-ly.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Parse.ly icon</title><path d="M9.623,19.131c0-0.064,0-0.123-0.023-0.191c-0.103-0.741-0.375-1.449-0.796-2.07c-0.268-0.34-0.577-0.646-0.92-0.912 c-0.101-0.078-0.189-0.041-0.193,0.082l-0.087,1.281c0,0.123-0.147,0.128-0.184,0L6.849,15.52c-0.026-0.065-0.066-0.125-0.115-0.175 c-0.05-0.05-0.109-0.09-0.175-0.117c-0.382-0.131-0.773-0.236-1.169-0.315c-0.525-0.091-1.284-0.141-1.284-0.141 c-0.129,0-0.17,0.077-0.097,0.178l0.782,1.409c0.074,0.105,0,0.205-0.11,0.123l-1.703-1.368c-0.159-0.103-0.337-0.172-0.524-0.203 c-0.187-0.031-0.378-0.024-0.562,0.021c-0.377,0.059-0.92,0.173-0.92,0.173c-0.059,0.013-0.112,0.047-0.147,0.096 c-0.037,0.047-0.055,0.105-0.051,0.164c0,0,0.041,0.547,0.087,0.912c0.005,0.186,0.049,0.369,0.128,0.537 c0.079,0.168,0.192,0.319,0.332,0.443l1.772,1.254c0.11,0.073,0.032,0.182-0.087,0.137l-1.578-0.351 c-0.12-0.046-0.189,0-0.152,0.137c0,0,0.262,0.711,0.492,1.181c0.195,0.368,0.416,0.721,0.663,1.058 c0.044,0.055,0.098,0.1,0.16,0.133c0.062,0.034,0.129,0.055,0.199,0.063l1.905,0.046c0.124,0,0.156,0.141,0.041,0.178l-1.219,0.456 c-0.12,0.036-0.129,0.128-0.028,0.205c0.357,0.252,0.743,0.461,1.15,0.62c0.72,0.231,1.483,0.295,2.232,0.187 c0.557-0.078,1.106-0.208,1.638-0.388c-0.02-0.151-0.031-0.303-0.032-0.456c0.002-0.488,0.106-0.97,0.307-1.416 c0.2-0.446,0.493-0.845,0.858-1.173 M23.217,15.388c0.002-0.059-0.016-0.117-0.051-0.164c-0.036-0.049-0.088-0.083-0.147-0.096 c0,0-0.543-0.114-0.92-0.169c-0.183-0.045-0.373-0.053-0.559-0.022c-0.186,0.031-0.364,0.099-0.522,0.2l-1.703,1.368 c-0.101,0.082-0.184,0-0.11-0.123l0.778-1.409c0.078-0.1,0.037-0.182-0.092-0.178c0,0-0.759,0.05-1.284,0.141 c-0.396,0.079-0.787,0.184-1.169,0.315c-0.065,0.027-0.125,0.067-0.175,0.117c-0.05,0.05-0.089,0.109-0.115,0.175l-0.571,1.796 c-0.037,0.119-0.179,0.114-0.184,0l-0.092-1.281c0-0.123-0.087-0.16-0.189-0.082c-0.343,0.266-0.652,0.572-0.92,0.912 c-0.42,0.615-0.693,1.316-0.796,2.052c0,0.068,0,0.128,0,0.191c0.365,0.327,0.657,0.727,0.857,1.173 c0.2,0.446,0.303,0.929,0.303,1.417c-0.001,0.152-0.012,0.305-0.032,0.456c0.534,0.179,1.084,0.309,1.643,0.388 c0.749,0.108,1.512,0.044,2.232-0.187c0.408-0.16,0.794-0.368,1.15-0.62c0.101-0.077,0.092-0.169-0.028-0.205l-1.219-0.456 c-0.115-0.036-0.083-0.173,0.041-0.178l1.901-0.046c0.071-0.006,0.14-0.027,0.203-0.06c0.063-0.034,0.117-0.08,0.161-0.136 c0.227-0.328,0.431-0.671,0.612-1.026c0.235-0.456,0.497-1.181,0.497-1.181c0.037-0.118-0.032-0.182-0.152-0.137l-1.578,0.351 c-0.124,0.046-0.198-0.064-0.092-0.137l1.785-1.254c0.14-0.124,0.253-0.275,0.332-0.443c0.079-0.169,0.123-0.351,0.128-0.537 c0.046-0.378,0.087-0.912,0.087-0.912 M18.229,9.429c0-0.196-0.129-0.269-0.304-0.16l-1.841,0.994c-0.17,0.109-0.207-0.1-0.083-0.26 l1.758-2.325c0.064-0.091,0.107-0.195,0.126-0.305c0.018-0.11,0.012-0.222-0.02-0.329c-0.23-0.627-0.505-1.236-0.824-1.824 c-0.321-0.516-0.678-1.01-1.068-1.477c-0.124-0.155-0.276-0.128-0.341,0.059l-0.86,2.129c-0.064,0.187-0.226,0.182-0.221,0 l0.101-3.342c-0.002-0.237-0.094-0.465-0.258-0.638c0,0-0.511-0.511-0.92-0.884c-0.409-0.374-1.173-0.966-1.173-0.966 C12.22,0.036,12.117,0,12.012,0c-0.106,0-0.208,0.036-0.29,0.102c0,0-0.722,0.561-1.192,0.966c-0.469,0.406-0.92,0.88-0.92,0.88 c-0.166,0.166-0.264,0.387-0.276,0.62L9.439,5.91c0,0.201-0.156,0.205-0.226,0l-0.86-2.106c-0.06-0.187-0.216-0.214-0.341-0.055 C7.601,4.245,7.227,4.771,6.895,5.322C6.592,5.877,6.33,6.453,6.112,7.045C6.083,7.15,6.076,7.261,6.094,7.368 c0.017,0.108,0.058,0.211,0.12,0.301l1.767,2.334c0.124,0.16,0.087,0.369-0.087,0.26L6.052,9.27C5.882,9.16,5.74,9.233,5.744,9.429 c0.015,0.645,0.12,1.285,0.313,1.901c0.435,1.115,1.13,2.111,2.029,2.909c1.182,1.209,2.14,2.615,2.83,4.153 c0.702-0.225,1.457-0.225,2.158,0c0.688-1.534,1.639-2.938,2.812-4.149c0.823-0.731,1.479-1.628,1.924-2.63 c0.253-0.701,0.394-1.436,0.419-2.179 M14.308,21.721c0,0.451-0.135,0.892-0.388,1.266c-0.253,0.375-0.612,0.667-1.033,0.84 c-0.42,0.173-0.883,0.218-1.329,0.13c-0.446-0.088-0.856-0.305-1.178-0.624c-0.322-0.319-0.541-0.725-0.63-1.167 c-0.089-0.442-0.043-0.9,0.131-1.317c0.174-0.417,0.469-0.773,0.847-1.023c0.378-0.25,0.823-0.384,1.278-0.384 c0.61,0,1.195,0.24,1.627,0.668C14.066,20.536,14.308,21.116,14.308,21.721z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/parsedotly.svg b/assets/lib/simple-icons/icons/parsedotly.svg
new file mode 100644
index 00000000..b1642ddb
--- /dev/null
+++ b/assets/lib/simple-icons/icons/parsedotly.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Parse.ly</title><path d="M12.01 0a.459.459 0 0 0-.29.1s-.724.561-1.193.967c-.47.406-.922.886-.922.886a.926.926 0 0 0-.271.615l.108 3.344c0 .2-.157.205-.226 0l-.868-2.106c-.06-.187-.21-.214-.334-.054a12.945 12.945 0 0 0-1.121 1.573 12.61 12.61 0 0 0-.777 1.717.76.76 0 0 0 .1.624l1.762 2.341c.124.16.093.363-.082.253l-1.844-.994c-.17-.11-.312-.033-.307.163a6.85 6.85 0 0 0 .307 1.898 7.581 7.581 0 0 0 2.034 2.91 14.342 14.342 0 0 1 2.83 4.159 3.544 3.544 0 0 1 2.16 0 14.478 14.478 0 0 1 2.811-4.15 7.69 7.69 0 0 0 1.926-2.63c.252-.7.39-1.435.415-2.178v-.01c0-.195-.132-.271-.307-.162l-1.835.994c-.17.11-.215-.093-.09-.253l1.762-2.332a.714.714 0 0 0 .127-.298.762.762 0 0 0-.018-.335c-.23-.626-.504-1.23-.823-1.817a13.322 13.322 0 0 0-1.075-1.482c-.125-.155-.27-.124-.335.063l-.859 2.124c-.064.187-.23.183-.226 0l.1-3.335a.944.944 0 0 0-.253-.642s-.513-.512-.922-.886A25.168 25.168 0 0 0 12.299.1a.459.459 0 0 0-.29-.1zM4.108 14.77c-.129 0-.173.081-.1.182l.778 1.41c.073.105.002.2-.109.117L2.98 15.114a1.399 1.399 0 0 0-.524-.208 1.385 1.385 0 0 0-.56.028c-.378.059-.923.171-.923.171a.235.235 0 0 0-.144.09.258.258 0 0 0-.055.172s.045.549.09.913a1.338 1.338 0 0 0 .462.977l1.771 1.256c.11.073.03.181-.09.136l-1.582-.353c-.12-.045-.181-.001-.144.136 0 0 .258.714.488 1.184.195.368.413.721.66 1.058a.523.523 0 0 0 .162.126.535.535 0 0 0 .2.063l1.906.046c.125 0 .152.144.037.18l-1.22.452c-.12.037-.13.13-.028.208.357.253.75.465 1.157.624.72.231 1.484.289 2.233.18a8.986 8.986 0 0 0 1.636-.379 3.669 3.669 0 0 1-.036-.46 3.51 3.51 0 0 1 .307-1.42c.2-.446.494-.838.859-1.166h-.018a.558.558 0 0 0-.027-.19 4.887 4.887 0 0 0-.796-2.07 5.275 5.275 0 0 0-.913-.913c-.1-.077-.194-.042-.199.081l-.09 1.284c0 .123-.144.128-.18 0l-.57-1.799a.5.5 0 0 0-.29-.29 9.056 9.056 0 0 0-1.166-.315c-.524-.092-1.283-.145-1.283-.145zm15.783.028s-.76.044-1.284.136a9.184 9.184 0 0 0-1.175.316.523.523 0 0 0-.172.117.521.521 0 0 0-.117.172l-.57 1.8c-.037.118-.176.113-.18 0l-.091-1.285c0-.123-.089-.158-.19-.08a5.34 5.34 0 0 0-.922.912 4.829 4.829 0 0 0-.795 2.052v.19a3.469 3.469 0 0 1 1.157 2.594 3.585 3.585 0 0 1-.027.452 9.08 9.08 0 0 0 1.636.389 4.983 4.983 0 0 0 2.233-.19c.407-.16.791-.362 1.148-.615.1-.077.092-.171-.028-.208l-1.22-.452c-.115-.036-.079-.176.045-.18l1.899-.046a.549.549 0 0 0 .37-.198c.227-.328.425-.667.606-1.022.235-.456.497-1.184.497-1.184.037-.119-.034-.181-.154-.136l-1.573.353c-.124.046-.196-.063-.09-.136l1.78-1.256a1.338 1.338 0 0 0 .461-.976c.047-.379.091-.913.091-.913l-.009-.018a.258.258 0 0 0-.054-.163.248.248 0 0 0-.145-.1s-.544-.108-.922-.162a1.4 1.4 0 0 0-.56-.027c-.186.03-.366.097-.524.198l-1.7 1.374c-.101.082-.182-.003-.108-.126l.777-1.41c.078-.1.039-.177-.09-.172zm-7.883 4.646c-.455 0-.905.13-1.283.38a2.28 2.28 0 0 0-.85 1.021 2.268 2.268 0 0 0 .506 2.486 2.319 2.319 0 0 0 2.504.497 2.294 2.294 0 0 0 1.42-2.106c0-.604-.238-1.19-.67-1.618a2.305 2.305 0 0 0-1.627-.66z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/passport.svg b/assets/lib/simple-icons/icons/passport.svg
new file mode 100644
index 00000000..4e46f886
--- /dev/null
+++ b/assets/lib/simple-icons/icons/passport.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Passport</title><path d="M11.875 0A9.6 9.6 0 0 0 2.4 9.475h4.8A4.81 4.81 0 0 1 11.875 4.8zm.25 0v4.8A4.81 4.81 0 0 1 16.8 9.475h4.8A9.6 9.6 0 0 0 12.125 0zM2.4 9.725V24H12v-4.8H7.2V9.724zm9.6 9.474a9.599 9.599 0 0 0 9.6-9.474h-4.8A4.807 4.807 0 0 1 12 14.4z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/pastebin.svg b/assets/lib/simple-icons/icons/pastebin.svg
index 0f6fa289..14dfd23f 100644
--- a/assets/lib/simple-icons/icons/pastebin.svg
+++ b/assets/lib/simple-icons/icons/pastebin.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Pastebin icon</title><path d="M17.02 0a2.096 2.096 0 00-.723.123L2.623 5.003A2.101 2.101 0 001.35 7.69l5.324 14.916a2.101 2.101 0 002.685 1.272l7.746-2.765c.792-.307 1.345-.534 1.464-.608.543-.314.962-.817 1.964-2.334.904-1.362 1.859-3.323 2.097-4.28.24-.97.239-1.48-.502-3.675h.001l-3.147-8.82A2.102 2.102 0 0017.02 0zm-.084.414c.72-.031 1.4.403 1.657 1.12l3.147 8.82.008-.003c.271.763.497 1.415.526 1.54.102.433-.282 1.147-.737 1.35-.2.1-.71.293-1.142.429-1.397.464-2.05.879-2.458 1.548-.363.591-.315 1.18.16 2.377.462 1.142.533 1.864.225 2.4-.113.188-.301.322-1.354.733l-.002-.005-7.746 2.765a1.68 1.68 0 01-2.157-1.022L1.74 7.55a1.68 1.68 0 011.022-2.157L16.436.513c.165-.06.334-.092.5-.099zM15.9 2.25l-.708.515-.495.37.113.314.074.205.523-.316.4 1.112.403 1.123-.359.129-.337.12c.045.145.216.642.238.664l2.166-.779-.238-.663-.244.088-.443.16-.334-.93zm-3.29 1.182l-.709.515-.494.37.113.314.073.205.524-.316.4 1.112.403 1.123-.36.129-.337.121c.046.144.216.64.238.663l2.167-.778-.238-.663-.244.087-.443.16-.334-.93zM9.084 4.786a1.532 1.532 0 00-.8.223c-.732.448-.85 1.383-.332 2.558.337.776.873 1.218 1.462 1.215 1.345-.007 1.86-1.399 1.085-2.95-.307-.66-.837-1.036-1.415-1.046zm-.191.672c.168-.009.357.085.539.279.145.155.347.51.437.787.35.998.164 1.688-.414 1.546C8.854 7.93 8.21 6 8.62 5.585a.407.407 0 01.273-.127zm-3.765.75a1.532 1.532 0 00-.8.223c-.732.448-.85 1.382-.332 2.557.337.777.873 1.218 1.462 1.215 1.344-.007 1.86-1.398 1.085-2.95-.307-.66-.838-1.036-1.415-1.045zm-.192.672c.168-.01.358.085.54.278.145.155.347.51.437.787.35.999.164 1.689-.415 1.547-.6-.141-1.243-2.072-.834-2.485a.407.407 0 01.272-.127zm13.362.655a1.533 1.533 0 00-.8.223c-.732.448-.85 1.382-.332 2.558.337.776.873 1.218 1.462 1.215 1.345-.007 1.86-1.399 1.085-2.95-.307-.66-.837-1.036-1.415-1.046zm-.191.672c.168-.009.357.085.539.278.145.155.347.51.437.787.35.999.164 1.689-.414 1.547-.601-.141-1.244-2.072-.835-2.485a.407.407 0 01.273-.127zm-3.766.75a1.532 1.532 0 00-.8.222c-.73.448-.848 1.383-.331 2.558.337.776.873 1.218 1.462 1.215 1.344-.007 1.86-1.398 1.085-2.95-.307-.66-.838-1.036-1.416-1.045zm-.19.671c.167-.009.357.085.539.279.145.155.347.51.437.787.35.998.164 1.688-.415 1.547-.6-.142-1.244-2.072-.835-2.485a.408.408 0 01.273-.128zm-3.746.743a1.533 1.533 0 00-.8.223c-.732.448-.85 1.382-.332 2.557.337.777.873 1.219 1.462 1.216 1.345-.007 1.86-1.399 1.085-2.951-.307-.66-.838-1.036-1.415-1.045zm-.192.672c.169-.01.358.085.54.278.145.155.347.51.437.787.35.999.164 1.689-.414 1.547-.601-.141-1.244-2.072-.835-2.485a.407.407 0 01.272-.127zm-3.515.616l-.708.515-.495.369.113.314.074.206.524-.316.399 1.112.403 1.122-.359.13-.337.12c.045.145.216.641.238.663l2.166-.778-.238-.663-.244.088-.443.159-.334-.93zm15.664 1.33c.034 0 .049.047.064.135.023.11-.064.545-.195.957-.469 1.436-2.052 4.224-3.079 5.397l-.408.47.051-.667c.03-.567-.016-.812-.377-1.71-.496-1.263-.533-1.73-.158-2.31.341-.514 1.028-.907 2.448-1.371.72-.238 1.175-.463 1.385-.664.132-.145.207-.22.253-.235a.05.05 0 01.015-.003zm-6.429 1.477l-.708.515-.495.37.113.314.074.205.523-.316.4 1.112.403 1.123-.359.129-.337.12c.045.145.216.642.238.664l2.166-.779-.238-.662-.244.087-.443.16-.334-.93zm-3.579 1.33a1.532 1.532 0 00-.8.223c-.731.448-.849 1.382-.332 2.558.337.776.873 1.218 1.462 1.215 1.345-.007 1.86-1.399 1.086-2.95-.307-.66-.838-1.036-1.416-1.046zm-.191.672c.168-.009.358.085.54.279.144.154.346.51.437.787.35.998.164 1.688-.415 1.546-.6-.141-1.244-2.072-.835-2.485a.407.407 0 01.273-.127zm-3.515.616l-.71.515-.494.37.113.313.074.206.524-.316.4 1.112.403 1.122-.36.13-.337.12c.045.145.216.642.238.664l2.166-.779-.238-.663-.244.088-.443.16-.334-.93z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Pastebin</title><path d="M17.02 0a2.096 2.096 0 00-.722.123L2.624 5.003A2.1 2.1 0 001.35 7.69l5.324 14.915a2.101 2.101 0 002.685 1.272l7.746-2.765c.792-.307 1.345-.534 1.464-.608.543-.314.962-.817 1.964-2.334.904-1.362 1.859-3.323 2.097-4.28.24-.97.239-1.48-.502-3.674l-3.146-8.82A2.102 2.102 0 0017.02 0zm-.083.414c.72-.031 1.4.403 1.657 1.12l3.68 10.357c.103.433-.281 1.147-.736 1.35-.2.1-.71.293-1.142.429-1.397.463-2.05.878-2.458 1.547-.363.591-.315 1.18.16 2.377.462 1.142.533 1.864.225 2.4-.113.188-.301.322-1.354.733l-.002-.005-7.746 2.765a1.68 1.68 0 01-2.157-1.022L1.74 7.55a1.68 1.68 0 011.022-2.157L16.437.513c.165-.06.334-.092.5-.099zM15.9 2.25l-1.203.885.187.519.523-.316.803 2.235-.696.249c.045.145.216.642.238.664l2.166-.78-.238-.662-.687.248zm-3.29 1.182l-1.203.885.186.519.524-.316.803 2.235-.697.25c.046.144.216.64.238.663l2.167-.778-.238-.663-.687.247zM9.085 4.786c-.283 0-.56.076-.8.223-.732.448-.85 1.383-.332 2.558.337.776.873 1.218 1.462 1.215 1.345-.007 1.86-1.4 1.085-2.95-.307-.66-.837-1.036-1.415-1.046zm-.191.672c.168-.01.357.085.539.279.145.155.347.51.437.787.35.998.164 1.688-.414 1.546C8.855 7.93 8.21 6 8.62 5.585a.407.407 0 01.273-.127zm-3.765.75c-.283 0-.56.076-.8.223-.732.448-.85 1.382-.332 2.557.337.777.873 1.218 1.462 1.215 1.344-.007 1.86-1.398 1.085-2.95-.307-.66-.838-1.036-1.415-1.045zm-.192.672c.168-.01.358.085.54.278.145.155.347.51.437.787.35.999.164 1.689-.415 1.547-.6-.141-1.243-2.072-.834-2.485a.407.407 0 01.272-.127zm13.362.655c-.283 0-.56.076-.8.223-.732.448-.85 1.382-.332 2.558.337.776.873 1.218 1.462 1.215 1.345-.007 1.86-1.4 1.085-2.95-.307-.66-.837-1.036-1.415-1.046zm-.191.672c.168-.01.357.085.539.278.145.155.347.51.437.787.35.999.164 1.689-.414 1.547-.601-.141-1.244-2.072-.835-2.485a.407.407 0 01.273-.127zm-3.766.75a1.532 1.532 0 00-.8.222c-.73.448-.848 1.383-.331 2.558.337.776.873 1.218 1.462 1.215 1.344-.007 1.86-1.398 1.085-2.95-.307-.66-.838-1.036-1.416-1.045zm-.19.67c.167-.008.357.086.539.28.145.155.347.51.437.787.35.998.164 1.688-.415 1.547-.6-.142-1.244-2.072-.835-2.485a.408.408 0 01.273-.128zm-3.746.744c-.283-.001-.56.076-.8.223-.732.448-.85 1.382-.332 2.557.337.777.873 1.218 1.462 1.215 1.345-.007 1.86-1.398 1.085-2.95-.307-.66-.838-1.036-1.415-1.045zm-.192.672c.169-.01.358.085.54.278.145.155.347.51.437.787.35.999.164 1.689-.414 1.547-.601-.141-1.244-2.072-.835-2.485a.407.407 0 01.272-.127zm-3.515.616l-1.203.884.187.52.524-.316.802 2.233-.696.25c.045.145.216.641.238.663l2.166-.778-.238-.663-.687.247zm15.664 1.33c.034 0 .049.047.064.135.023.11-.064.545-.195.957-.47 1.435-2.052 4.223-3.08 5.396l-.407.47.05-.667c.03-.567-.015-.812-.376-1.71-.496-1.263-.533-1.73-.158-2.31.34-.514 1.028-.907 2.448-1.37.72-.238 1.175-.463 1.385-.664.132-.145.207-.22.253-.235a.048.048 0 01.015-.003zm-6.43 1.476l-1.202.885.187.52.523-.317.803 2.235-.696.25c.045.144.216.641.238.663l2.166-.779-.238-.662-.687.247-1.093-3.042zm-3.578 1.33c-.283 0-.56.077-.8.223-.731.448-.85 1.382-.332 2.558.337.776.873 1.218 1.462 1.215 1.345-.007 1.86-1.399 1.086-2.95-.307-.66-.838-1.036-1.416-1.046zm-.191.672c.168-.009.358.085.54.28.144.153.346.51.437.786.35.998.164 1.688-.415 1.546-.6-.14-1.244-2.072-.835-2.485a.407.407 0 01.273-.127zm-3.515.616l-1.204.885.187.52.524-.317.803 2.234-.697.25c.045.145.216.642.238.664l2.166-.779-.238-.663-.687.248-1.092-3.042z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/patreon.svg b/assets/lib/simple-icons/icons/patreon.svg
index 47cab8e3..7e9da740 100644
--- a/assets/lib/simple-icons/icons/patreon.svg
+++ b/assets/lib/simple-icons/icons/patreon.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Patreon icon</title><path d="M15.386.524c-4.764 0-8.64 3.876-8.64 8.64 0 4.75 3.876 8.613 8.64 8.613 4.75 0 8.614-3.864 8.614-8.613C24 4.4 20.136.524 15.386.524M.003 23.537h4.22V.524H.003"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Patreon</title><path d="M0 .48v23.04h4.22V.48zm15.385 0c-4.764 0-8.641 3.88-8.641 8.65 0 4.755 3.877 8.623 8.641 8.623 4.75 0 8.615-3.868 8.615-8.623C24 4.36 20.136.48 15.385.48z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/payoneer.svg b/assets/lib/simple-icons/icons/payoneer.svg
new file mode 100644
index 00000000..10a1117d
--- /dev/null
+++ b/assets/lib/simple-icons/icons/payoneer.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Payoneer</title><path d="M1.474 3.31c.234 1.802 1.035 5.642 1.398 7.263.095.459.201.853.298 1.013.501.865.907-.287.907-.287C5.644 6.616 3.17 3.597 2.38 2.787c-.139-.15-.384-.332-.608-.396-.32-.095-.374.086-.374.236.01.148.065.565.075.682zm21.835-1.463c.31.224 1.386 1.355 0 1.526-1.984.234-5.76.373-12.022 5.61C8.92 10.968 3.607 16.311.76 22.957a.181.181 0 01-.216.106c-.255-.074-.714-.352-.48-1.418.32-1.44 3.201-8.938 10.817-15.552 2.485-2.155 8.416-7.232 12.426-4.245z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/paypal.svg b/assets/lib/simple-icons/icons/paypal.svg
index 57e55602..535d1753 100644
--- a/assets/lib/simple-icons/icons/paypal.svg
+++ b/assets/lib/simple-icons/icons/paypal.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>PayPal icon</title><path d="M6.908 24H3.804c-.664 0-1.086-.529-.936-1.18l.149-.674h2.071c.666 0 1.336-.533 1.482-1.182l1.064-4.592c.15-.648.816-1.18 1.48-1.18h.883c3.789 0 6.734-.779 8.84-2.34s3.16-3.6 3.16-6.135c0-1.125-.195-2.055-.588-2.789 0-.016-.016-.031-.016-.046l.135.075c.75.465 1.32 1.064 1.711 1.814.404.75.598 1.68.598 2.791 0 2.535-1.049 4.574-3.164 6.135-2.1 1.545-5.055 2.324-8.834 2.324h-.9c-.66 0-1.334.525-1.484 1.186L8.39 22.812c-.149.645-.81 1.17-1.47 1.17L6.908 24zm-2.677-2.695H1.126c-.663 0-1.084-.529-.936-1.18L4.563 1.182C4.714.529 5.378 0 6.044 0h6.465c1.395 0 2.609.098 3.648.289 1.035.189 1.92.519 2.684.99.736.465 1.322 1.072 1.697 1.818.389.748.584 1.68.584 2.797 0 2.535-1.051 4.574-3.164 6.119-2.1 1.561-5.056 2.326-8.836 2.326h-.883c-.66 0-1.328.524-1.478 1.169L5.7 20.097c-.149.646-.817 1.172-1.485 1.172l.016.036zm7.446-17.369h-1.014c-.666 0-1.332.529-1.48 1.178l-.93 4.02c-.15.648.27 1.179.93 1.179h.766c1.664 0 2.97-.343 3.9-1.021.929-.686 1.395-1.654 1.395-2.912 0-.83-.301-1.445-.9-1.84-.6-.404-1.5-.605-2.686-.605l.019.001z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>PayPal</title><path d="M7.076 21.337H2.47a.641.641 0 0 1-.633-.74L4.944.901C5.026.382 5.474 0 5.998 0h7.46c2.57 0 4.578.543 5.69 1.81 1.01 1.15 1.304 2.42 1.012 4.287-.023.143-.047.288-.077.437-.983 5.05-4.349 6.797-8.647 6.797h-2.19c-.524 0-.968.382-1.05.9l-1.12 7.106zm14.146-14.42a3.35 3.35 0 0 0-.607-.541c-.013.076-.026.175-.041.254-.93 4.778-4.005 7.201-9.138 7.201h-2.19a.563.563 0 0 0-.556.479l-1.187 7.527h-.506l-.24 1.516a.56.56 0 0 0 .554.647h3.882c.46 0 .85-.334.922-.788.06-.26.76-4.852.816-5.09a.932.932 0 0 1 .923-.788h.58c3.76 0 6.705-1.528 7.565-5.946.36-1.847.174-3.388-.777-4.471z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/paytm.svg b/assets/lib/simple-icons/icons/paytm.svg
new file mode 100644
index 00000000..624b430f
--- /dev/null
+++ b/assets/lib/simple-icons/icons/paytm.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Paytm</title><path d="M15.85 8.167a.204.204 0 0 0-.04.004c-.68.19-.543 1.148-1.781 1.23h-.12a.23.23 0 0 0-.052.005h-.001a.24.24 0 0 0-.184.235v1.09c0 .134.106.241.237.241h.645v4.623c0 .132.104.238.233.238h1.058a.236.236 0 0 0 .233-.238v-4.623h.6c.13 0 .236-.107.236-.241v-1.09a.239.239 0 0 0-.236-.24h-.612V8.386a.218.218 0 0 0-.216-.22zm4.225 1.17c-.398 0-.762.15-1.042.395v-.124a.238.238 0 0 0-.234-.224h-1.07a.24.24 0 0 0-.236.242v5.92a.24.24 0 0 0 .236.242h1.07c.12 0 .217-.091.233-.209v-4.25a.393.393 0 0 1 .371-.408h.196a.41.41 0 0 1 .226.09.405.405 0 0 1 .145.319v4.074l.004.155a.24.24 0 0 0 .237.241h1.07a.239.239 0 0 0 .235-.23l-.001-4.246c0-.14.062-.266.174-.34a.419.419 0 0 1 .196-.068h.198c.23.02.37.2.37.408.005 1.396.004 2.8.004 4.224a.24.24 0 0 0 .237.241h1.07c.13 0 .236-.108.236-.241v-4.543c0-.31-.034-.442-.08-.577a1.601 1.601 0 0 0-1.51-1.09h-.015a1.58 1.58 0 0 0-1.152.5c-.291-.308-.7-.5-1.153-.5zM.232 9.4A.234.234 0 0 0 0 9.636v5.924c0 .132.096.238.216.241h1.09c.13 0 .237-.107.237-.24l.004-1.658H2.57c.857 0 1.453-.605 1.453-1.481v-1.538c0-.877-.596-1.484-1.453-1.484H.232zm9.032 0a.239.239 0 0 0-.237.241v2.47c0 .94.657 1.608 1.579 1.608h.675s.016 0 .037.004a.253.253 0 0 1 .222.253c0 .13-.096.235-.219.251l-.018.004-.303.006H9.739a.239.239 0 0 0-.236.24v1.09a.24.24 0 0 0 .236.242h1.75c.92 0 1.577-.669 1.577-1.608v-4.56a.239.239 0 0 0-.236-.24h-1.07a.239.239 0 0 0-.236.24c-.005.787 0 1.525 0 2.255a.253.253 0 0 1-.25.25h-.449a.253.253 0 0 1-.25-.255c.005-.754-.005-1.5-.005-2.25a.239.239 0 0 0-.236-.24zm-4.004.006a.232.232 0 0 0-.238.226v1.023c0 .132.113.24.252.24h1.413c.112.017.2.1.213.23v.14c-.013.124-.1.214-.207.224h-.7c-.93 0-1.594.63-1.594 1.515v1.269c0 .88.57 1.506 1.495 1.506h1.94c.348 0 .63-.27.63-.6v-4.136c0-1.004-.508-1.637-1.72-1.637zm-3.713 1.572h.678c.139 0 .25.115.25.256v.836a.253.253 0 0 1-.25.256h-.1c-.192.002-.386 0-.578 0zm4.67 1.977h.445c.139 0 .252.108.252.24v.932a.23.23 0 0 1-.014.076.25.25 0 0 1-.238.164h-.445a.247.247 0 0 1-.252-.24v-.933c0-.132.113-.239.252-.239Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/pcgamingwiki.svg b/assets/lib/simple-icons/icons/pcgamingwiki.svg
new file mode 100644
index 00000000..cd425f59
--- /dev/null
+++ b/assets/lib/simple-icons/icons/pcgamingwiki.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>PCGamingWiki</title><path d="M12.726 0L3.453 3.461v17.425L12.792 24l7.754-1.034-.002-.598V1.183zm-.742.991l-.02 21.948-7.988-2.527L3.95 3.964zm1.349.114l6.4.869v20.189l-6.404.796zm.33.366l.007 21.139 5.748-.727V2.228zm-2.152.263L8.251 2.91v4.924l3.279-.422zm-3.61 1.353L4.264 4.274v4.023l3.66-.408zm2.11.015a.738.738 0 01.51.22c.531.502.583 1.41.44 2.076-.128.596-.537 1.477-1.278 1.411-.132-.012-.395-.079-.469-.207L9.212 6.6l.078-.205c.285.122.546.211.839.04.283-.166.471-.503.578-.803.211-.588.211-1.382-.171-1.9-.465-.63-1.126-.3-1.442.288a3.036 3.036 0 00-.25.937 2.14 2.14 0 00.017.441c.02.168.107.341.086.511-.006.052-.037.085-.095.095-.345-.58-.157-1.508.102-2.081.185-.41.615-.824 1.057-.82zM6.427 4.105l-.394 1.098.397-.213-1.151 2.655-.002-.002.502-1.908-.324.155.446-1.634zm3.416.201a.28.28 0 01.106.018c.424.162.294.884.11 1.167-.097.151-.262.157-.424.157v.003c-.066-.24.238-.404.306-.588.04-.108-.002-.199-.045-.29-.102-.053-.186-.022-.223.083a1.341 1.341 0 01-.26.457 1.078 1.078 0 01.136-.846.376.376 0 01.294-.16zm-.138.148c-.04 0-.073.052-.073.114 0 .063.033.114.073.114.04 0 .072-.052.072-.114 0-.064-.033-.114-.072-.114zm.282 0c-.04 0-.072.052-.072.114 0 .063.033.114.072.114.04 0 .073-.052.073-.114 0-.064-.033-.114-.073-.114zm-.46.264c-.04 0-.072.053-.072.115 0 .063.033.114.073.114.04 0 .072-.053.072-.114 0-.064-.033-.115-.072-.115zm.573.06c-.04 0-.072.053-.072.115 0 .063.033.114.072.114.04 0 .073-.053.073-.114 0-.064-.033-.115-.073-.115zm-.396.339h.002c.01.014.01.028.004.041-.195.44-.387.881-.583 1.324-.018-.008-.029-.008-.035-.014a1.234 1.234 0 01-.161-.271c-.019-.038.002-.075.025-.106l.677-.904a.227.227 0 01.07-.07zm.305.015c-.04 0-.072.053-.072.114 0 .064.033.115.072.115.041 0 .073-.053.073-.115 0-.063-.033-.114-.073-.114zm-.18.223c-.04 0-.073.052-.073.114 0 .064.033.114.073.114.04 0 .072-.052.072-.114 0-.064-.033-.114-.072-.114zm4.285.295l4.992.156.002.401-4.994-.06zm-2.64 2.3l-3.225.4-.006 6.944 3.206.1zm-3.561.434l-3.628.339.025 6.341 3.594.207zm8.936.54c.33.004.648.287.832.782l1.367.008.033 1.279-1.406.06c-.227 1.04-1.36.943-1.618.058l-1.908.064-.004-1.405 1.846-.068c.229-.542.548-.783.858-.778zm.018.41a.64 1.072 0 00-.64 1.07.64 1.072 0 00.64 1.073.64 1.072 0 00.64-1.072.64 1.072 0 00-.64-1.072zm-11.359.332l.368.319 1.617-.058.01.128-1.67.062-.41-.353zm-.246.215a.173.173 0 01.015.346.173.173 0 01-.163-.101l-.467.02-.006-.128.467-.02a.175.175 0 01.154-.117zm4.985.265c.054.108-.002.307.111.333.153.036.174.075.211.218.017.064-.008.095.058.132.072.041.157.029.159.126.002.133-.056.114-.157.114-.037 0-.05.07-.052.097-.008.098.009.118.104.145.122.035.1.068.1.18 0 .056.011.025-.063.04-.118.022-.145.006-.139.14.009.161.277.03.2.26-.032.1-.195.023-.195.11 0 .11-.023.16.111.17.132.01.124.188.008.228-.07.025-.095-.002-.12.082-.024.085-.022.174-.053.26-.126.092-.24-.036-.24.173 0 .056-.012.097-.022.15-.019.104-.046.015-.12.038-.02-.025 0-.163 0-.196 0-.098-.033-.12-.145-.112-.006.12-.004.248-.1.335-.06-.04-.083-.1-.088-.168-.006-.134.004-.138-.134-.171a.865.865 0 00-.03.3c-.108.054-.125-.112-.125-.178 0-.056.023-.118-.047-.139-.07-.018-.095.017-.097.08-.004.127-.01.183-.11.253-.04-.111-.006-.304-.136-.34-.145-.036-.163-.142-.165-.28-.003-.151-.184-.007-.184-.17 0-.016-.013-.101 0-.114.06-.043.12.025.175.002.027-.074.037-.186-.043-.205-.083-.018-.161-.028-.143-.124.023-.118.002-.111.13-.12.098-.006.062-.107.065-.173-.129-.06-.182.016-.182-.154 0-.115-.009-.105.107-.105.1 0 .07-.035.07-.13 0-.106-.19-.013-.198-.158-.004-.062.02-.116.08-.138.106-.042.118-.048.123-.162.006-.165.115-.184.247-.25l-.002-.002c-.002-.106 0-.207.066-.294.124.004.102.2.104.296.212.105.1-.224.21-.317.157-.016-.012.331.143.327.101-.002.08-.05.078-.138-.002-.081.009-.162.079-.213.17.064.016.376.231.326 0-.132-.02-.293.12-.364zm-2.987.13a.172.172 0 01.178.168.172.172 0 01-.168.178.172.172 0 01-.16-.097l-.523.015a.171.171 0 01-.329-.067.172.172 0 01.167-.178v-.002a.175.175 0 01.168.116l.508-.014a.174.174 0 01.159-.118zm-1.206.253l1.475 2.15-.11.068-1.448-2.092-1.322.081-.004-.124zm1.501.157l-.008.186-.136.197a.173.173 0 01-.023.192v-.002a.173.173 0 01-.244.017.171.171 0 01-.016-.242.172.172 0 01.186-.05zM6.858 11a.168.168 0 01.144.073c.041.06.041.135.004.193l.527.786.002.203-.634-.917a.169.169 0 01-.18-.068l-.002.002a.173.173 0 01.043-.24.171.171 0 01.096-.032zm-.856.071a.173.173 0 01.014.346.173.173 0 01-.163-.102l-1.181.06-.006-.128 1.181-.06a.175.175 0 01.155-.116zm.361.683l.393.49a.166.166 0 01.085-.022c.095 0 .173.078.173.173a.175.175 0 01-.173.174.175.175 0 01-.174-.174c0-.016.004-.033.008-.05l-.361-.46-1.626.04-.004-.13zm-1.117.436h.002c.059.001.11.032.138.077l.992.027.39.474a.166.166 0 01.085-.023c.095 0 .174.079.174.174a.175.175 0 01-.174.174.175.175 0 01-.174-.174.21.21 0 01.009-.05l-.36-.445-.919-.027a.164.164 0 01-.159.124.166.166 0 01-.002-.33h-.002zm-.447.205c.06 0 .104.014.15.085.136.213.264.432.394.65.064.107.13.215.196.32.095.153.12.166.302.178.13.009.262.009.394.009.137 0 .133-.114.263-.102.111.106.111.242 0 .348-.124.008-.11-.12-.203-.12H5.9c-.197 0-.256.043-.358-.116l-.694-1.109h-.171V12.4c.048 0 .088-.004.123-.004zm1.5.34a.172.172 0 01.178.167.172.172 0 01-.167.178.172.172 0 01-.161-.097l-.459.01a.172.172 0 01-.328-.066.172.172 0 01.167-.178v-.002a.175.175 0 01.167.116l.444-.01a.174.174 0 01.16-.118zm.965.181a.171.171 0 11-.023.34l-.516.76-.136.001.543-.827a.172.172 0 01.132-.274zm-2.437.013a.166.166 0 010 .331.166.166 0 010-.331zm.364.563c.045 0 .089.017.123.051a.171.171 0 010 .245.17.17 0 01-.244 0 .198.198 0 01-.03-.042l-.147-.006-.163.228-.095-.09.2-.266.192.006a.181.181 0 01.043-.075.168.168 0 01.121-.05zm2.157.136c.06.001.129.013.17.013.006.058.01.11-.03.161-.071.002-.14-.029-.21-.035l-.123.17c.024.053.103.003.117.074-.02.085-.184.01-.24.019-.028-.09.174-.317.226-.39a.204.204 0 01.09-.012zm8.472.317v7.742l-1.452.174-.004-7.838zM4.337 15.563l-.004 2.125 1.692.231.01-2.234zm1.948.128v4.864l2.927.882v-5.554zm3.313.224l.013 5.745.2.062c.15-.515.42-.316.438.14l.386.115c.004-.543.473-.348.395.117l.357.133-.012-6.188-.263-.017c.058.571-.512.565-.421-.027l-.42-.027c.067.549-.508.534-.419-.035zm-4.614.235l.276.607.17-.31.396.897-1.292-.2zm.71.013c.091 0 .163.072.163.163a.162.162 0 01-.163.164.162.162 0 01-.163-.164c0-.09.072-.163.163-.163zm4.103.498l1.402.147v1.382l-1.402-.205zm-2.24.019c.178.012.347.048.484.178.308.294-.238.863.008 1.208.221-.213.217-.478.384-.703.166.213.31.641.283.912-.142.172-.256.27-.597.294.01.076-.037.149-.016.238.182.194.382.163.622.149.033.17-.139.695-.267.821-.26-.118-.394-.37-.539-.602a.64.64 0 00-.132.126c.035.267.372.606.328.842a.636.636 0 01-.365.07c-.128-.018-.18-.088-.21-.225-.069-.303.065-.677-.19-.894-.125.246-.09.518-.123.785-.2-.05-.345-.45-.384-.621.035-.205.142-.356.266-.515.058-.075.077-.15.04-.236-.015-.033-.013-.075-.042-.102-.18.031-.287.17-.41.29-.14-.145-.108-.69.003-.85a.601.601 0 01.467.12c.11-.108.116-.213.019-.325-.075-.085-.304-.184-.345-.271-.033-.13.21-.57.357-.563.161.238.256.507.31.788.056.023.105.044.17.031.032-.32-.04-.626-.141-.926.01-.01.016-.019.02-.019zm-3.23 1.305v2.12l1.708.417.019-2.284zm5.472.245l1.4.225v1.395l-1.4-.3zm-4.6.3l.014 1.398-.337-.432-.301-.066v-.598l.283.041zm.398.095a.08.08 0 01.013.002c.037.085.08.172.105.265.103.393.103.773-.118 1.144l-.002-.002c-.04-.077-.029-.135-.002-.203.064-.168.122-.34.11-.521a1.544 1.544 0 00-.096-.464 4.151 4.151 0 01-.068-.186c.015-.022.03-.037.058-.035zm-.143.145c.02.001.028.014.034.027.043.088.074.177.093.275.02.113.01.225.018.337.006.072-.016.143-.027.211a.267.267 0 01-.134.197v.002h-.002l.002-.002c-.006-.067.019-.127.033-.187.02-.09.052-.182.064-.273.017-.116-.02-.227-.05-.34l-.045-.154c-.008-.033-.014-.064.004-.093h.01zm-.123.162c.011 0 .021.002.033.005a.96.96 0 01.074.424c-.002.056-.023.106-.035.158-.01.039-.037.062-.07.08-.027-.027-.019-.051-.013-.078.017-.077.033-.151.035-.23.005-.12-.033-.232-.06-.35h-.002a.1.1 0 01.038-.009zm4.468.835l1.396.318v1.383l-1.396-.385z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/peakdesign.svg b/assets/lib/simple-icons/icons/peakdesign.svg
new file mode 100644
index 00000000..f1250cb9
--- /dev/null
+++ b/assets/lib/simple-icons/icons/peakdesign.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Peak Design</title><path d="m24 10.523-9.446 6.493-4.74-3.271 4.723-3.255 3.738 2.57 3.705-2.537zm-6.743 3.255-2.72-1.886-2.704 1.853 2.737 1.869zm-7.794-.284-3.738-2.57-3.706 2.554h-2.019l9.43-6.493 4.756 3.255zm-2.737-3.254 2.737 1.869 2.704-1.869-2.737-1.87z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/peertube.svg b/assets/lib/simple-icons/icons/peertube.svg
index 7c1fd36f..c34e315b 100644
--- a/assets/lib/simple-icons/icons/peertube.svg
+++ b/assets/lib/simple-icons/icons/peertube.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>PeerTube icon</title><path d="M3,0v12l9-6L3,0z M3,12v12l9-6L3,12z M12,6v12l9-6L12,6z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>PeerTube</title><path d="M12 6.545v10.91L20.727 12M3.273 12v12L12 17.455M3.273 0v12L12 6.545"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/pegasusairlines.svg b/assets/lib/simple-icons/icons/pegasusairlines.svg
new file mode 100644
index 00000000..90699c56
--- /dev/null
+++ b/assets/lib/simple-icons/icons/pegasusairlines.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Pegasus Airlines</title><path d="M10.5113 12.1013l-.5743 1.331H8.77l-.0493-.0901c-.3208.1335-.5936.1852-.9663.1852-.5925 0-1.0767-.4802-1.0767-1.0725 0-.0367.0004-.0731.0042-.1085.1518-1.3041 1.2565-2.3233 2.6013-2.3233.648 0 1.0171.1195 1.559.3832l-.1432.3418c-.0273.0667-.1053.1137-.1661.0842-.0643-.0292-.0496-.0689-.08-.1344-.0498-.1077-.1157-.1419-.1577-.1709-.2104-.1327-.3523-.1377-.4959-.1377-.3395 0-.6469.1272-.8821.337-.5085.4506-.8634 1.058-.9629 1.7978-.0438.2834.1802.5511.4678.5486.3227 0 .4995-.1865.6234-.4626l.2272-.5333c.0277-.0679-.0437-.1262-.0727-.13-.0487-.0189-.0808-.058-.0808-.1058 0-.0659.051-.1193.143-.1193l1.4158.0002c.0845-.0048.147.0872.113.1654-.0158.0401-.0473.0619-.1027.0687-.0997.0158-.1398.0582-.177.1453zm-3.9695-.6931a.1543.1543 0 0 0-.1314.0752c-.0485.0777-.0951.0859-.1759.0915l-.7152.0008.4796-1.1131h.8508c.0485-.0028.0746.0544.071.0821-.0017.0525.0231.0968.067.1159.0605.026.1348-.0118.1659-.0842l.2035-.4714h-2.701c-.092 0-.1468.0506-.1468.1163 0 .0481.0309.0884.0798.1073.042.0092.0983.0712.0752.1314l-1.2877 2.9854h2.9656l.1661-.3817c.0374-.076-.0232-.171-.1083-.1688a.1547.1547 0 0 0-.1314.0752c-.0535.0857-.118.1182-.2127.1182l-1.1895-.0008.5083-1.1807.7849.0006c.0468.0021.0659.0563.0638.0817-.0019.0523.0111.0968.0552.1157.0605.0258.135-.0118.1661-.0846l.1938-.4433c.0339-.0722-.0126-.1714-.0967-.1687zm-3.7169.7215h-.9761l-.4319 1.0146c-.0157.0281.0052.0631.0321.0743.0491.0187.08.0592.08.1069 0 .0661-.064.1195-.1432.1195H0l1.2982-3.0181c.0188-.0439-.0231-.0869-.0489-.0948-.0487-.0189-.08-.0592-.08-.1073 0-.0657.0643-.1191.1434-.1191.5136-.0003 1.7208-.0002 2.2211.0025.2461 0 .4636.1449.5543.3576.0519.1293.079.2692.079.4174 0 .2331-.0718.4495-.1934.6289-.2606.3862-.6877.6176-1.1488.6176zm.0168-1.613c-.0621-.0457-.205-.0606-.27-.0535l-.5476 1.2722.2138-.0013c.2719-.0019.4907-.1547.6412-.3998.1986-.3227.1818-.6887-.0374-.8176zm18.6699-.1285c.0552-.0067.0867-.0286.1027-.0687.0334-.0778-.0281-.1701-.1132-.1652l-1.3392-.0002-1.1658 2.7034a.4988.4988 0 0 1-.4577.3003c-.0403 0-.0876-.0128-.1249-.0216-.1258-.0334-.2219-.1436-.2219-.2986.0067-.1974.1262-.4812.1894-.6282l.7254-1.6735c.0372-.0874.0762-.1319.1762-.1476.0552-.0067.0867-.0286.1027-.0687.0334-.0777-.028-.17-.113-.1652h-1.4631c-.0789 0-.143.0533-.143.1193 0 .0479.0309.0882.0796.1071.0258.0077.0678.0512.0491.0945l-.5258 1.2178c-.1327.2845-.2091.6064-.2161.9381 0 .3233.1865.6037.4556.7422.2849.1367.6005.2137.9354.2137a2.3863 2.3863 0 0 0 2.2267-1.5181l.6624-1.5317c.0374-.0876.0786-.1334.1785-.1491zm1.1967-.3589c-.8626.0603-1.3988.6858-1.3482 1.4087.0181.2572.1119.4917.2553.6853 0 0 .6433.7727.6814.822.0223.0307.0827.1218.089.2116.0166.2392-.1042.4378-.4107.4594-.3559.025-.6517-.1283-.7807-.3578-.0202-.057-.0163-.1273-.0829-.1461-.0592-.0206-.1272.0202-.152.0909l-.1447.4132c.3229.2488.7532.3931 1.2955.354.8626-.0605 1.3988-.6858 1.348-1.4083-.0176-.2576-.1915-.4869-.3349-.6801-.1046-.1284-.4105-.4944-.5209-.6266-.0797-.1144-.1584-.2415-.1718-.3853-.0174-.2499.1537-.4655.4603-.4869.354-.025.6005.1228.7313.35.0198.0571.016.1273.0829.1461.0592.0206.127-.0202.1518-.0909l.143-.4064c-.3231-.2486-.7496-.3918-1.2917-.3528zm-5.6636.8504c-.067-.0189-.0631-.0891-.0831-.1461-.1308-.2272-.3773-.375-.7311-.35-.3068.0214-.4779.2371-.4607.4869.014.1437.092.2709.1722.3853.1119.1339.4147.4965.5205.6266.1438.1932.3173.4225.3353.6801.0504.7225-.4859 1.3478-1.3482 1.4083-.5424.0391-.9728-.1052-1.2957-.354l.0604-.1726h-1.3956c-.0792 0-.1419-.0527-.1419-.1186 0-.0479.0309-.0882.0796-.1069.0252-.0084.0656-.0475.0508-.0915l-.2308-.9879H11.528l-.6066.9827c-.0221.0454.0234.0855.0479.0941.0489.0189.0802.0588.0804.1069.0004.0657-.0634.1195-.1424.1199l-.6226.0015c-.0846.0042-.1492-.0882-.1138-.1659.0193-.046.0609-.063.1163-.0697.0781-.0126.1178-.0422.1543-.0968l1.8998-3.0053 1.1637-.0002c.079 0 .1428.0548.1428.1207 0 .0479-.0311.0882-.0798.1071-.021.0094-.0527.0311-.0517.0743l.7032 3.0205.0789-.2254c.0252-.0708.093-.1115.152-.0909.043.0151.0695.0554.0712.1054a.0869.0869 0 0 0 .012.0407c.1289.2295.4248.3828.7807.3578.3066-.0216.4273-.2203.4105-.4594-.0063-.0899-.0668-.181-.089-.2116-.038-.0493-.6811-.822-.6811-.822-.1434-.1936-.2373-.4281-.2553-.6853-.0506-.7229.4857-1.3484 1.3482-1.4087.5424-.039.9688.1042 1.2915.3528l-.1428.4067c-.0247.0704-.0928.1111-.1516.0905zm-4.562.8538l-.1919-.8304-.5125.8304h.7044z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/pelican.svg b/assets/lib/simple-icons/icons/pelican.svg
new file mode 100644
index 00000000..4df58d35
--- /dev/null
+++ b/assets/lib/simple-icons/icons/pelican.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Pelican</title><path d="M.9418 0c.342 1.0548 1.8764 2.1857 2.9063 2.6238 1.3134.5583 2.5984.6849 3.7501.8122.895.0963 1.7019.2014 2.3439.4998.1622.0726.3288.148.4688.2499.4586.3364.9464.9876 1.2813 1.4368.7186.9583.5858 1.7451 1.4375 2.2178.089.0492.1683.083.2813.125.271.1018.667.2273.8437-.1563a.788.788 0 00.0625-.1874c-.0712-.229-.321-.4327-.4687-.531-.2618-.171-.3735-.274-.5625-.4685-.3494-.3583-.348-.9508-.5938-1.3744.3092-.131 1.9392-.3597 2.2813-.3124.7313.0326 1.31.0782 1.75.531.1727.1365.2497.2567.4064.3749.011.009.0202.024.0312.0312.6933.5037 1.3388.6705 1.9063.8434.1496.0454.2988.1054.4375.1562.213.0763.4065.1594.5938.281.2222.1474.6089.542.625.8747-.5587-.1783-.207.0323-1.0313-.0312-.4019-.0456-.8058-.0647-1.2187-.0937-.6422-.0454-1.273-.1043-1.8751-.2187-.1002-.0184-.2146-.0388-.3125-.0625-.0766-.0163-.146-.011-.2188-.0312-.0018.0308 0 .0353 0 .0625-.0166.6292.4214.9586-.5938 2.1553-.009.0127-.0204.0167-.0312.0312-.2695.3147-1.657.9163-2.0938 1.0308-1.8593.3728-3.292-.828-5.5315-.2187-.7877.2928-1.3567 1.5756-1.7188 2.5302-.482 1.2677-.8758 2.7956-1.3126 4.3106-.2.6982-.4178 1.4015-.6562 2.0616-.575 1.584-1.3113 2.9428-2.4064 3.717-.1638.1256-.787.41-.8125.6248.404.2037 4.185.056 4.8127 0 2.5033-.2184 3.6468-1.7733 4.4689-3.9045.5659-1.462 1.065-3.9864 2.0313-5.3102.0128-.0182.0183-.015.0313-.0312.1456-.1967.327-.3691.5-.4998.0454-.0347.0775-.0648.125-.0937.0344-.0219.1566-.0592.3438-.0937 1.7357-.3074 9.3491-1.3474 9.844-6.872.051-.5581.0158-1.1588-.0937-1.8117-.0543-.3364-.115-.6653-.2187-1.0308-.2457-.8691-.7981-1.614-1.5313-2.2177-.1926-.16-.405-.3285-.625-.4686-.846-.54-1.8774-.921-2.969-1.1557-.7332-.1582-1.4874-.239-2.25-.25C9.8402.0326 6.3978.2075.9418 0zm1.625 4.2169c.0235.0382.0389.0574.0625.0937C4.2284 6.8382 6.239 6.8135 8.067 7.0281c.666.0782 1.317.1849 1.9063.4686.262.1235.5116.2649.75.4685-.0292-.131-.076-.2564-.125-.3748-.444-1.0763-1.6487-1.6661-2.6875-1.9679-1.3938-.4984-2.4038-.0181-5.344-1.4056zm1.4063 3.186c.0107.0528.0094.0946.0313.1563.2199.6346 1.0403 1.6503 2.0938 1.8741.4567.1636.315.1174 1.0938.0937 1.1406-.0581 1.692-.0793 2.5.25-.02-.0493-.0423-.1091-.0624-.1563C9.0074 8.175 8.2593 8.421 5.8794 8.2464c-1.0188-.3074-1.2587-.3415-1.9063-.8434z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/peloton.svg b/assets/lib/simple-icons/icons/peloton.svg
new file mode 100644
index 00000000..d9385810
--- /dev/null
+++ b/assets/lib/simple-icons/icons/peloton.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Peloton</title><path d="M17.7283 5.7642l1.7307-3.0066c.5045-.8803.2077-2.0077-.6725-2.5121-.8802-.5044-2.0077-.2077-2.5121.6725l-1.7407 3.0066c-3.699-1.167-7.843.3462-9.8606 3.8473-1.2857 2.2253-1.444 4.7869-.6626 7.032l3.2044-5.5583c.732-1.2759 1.9286-2.1858 3.3528-2.5715 1.4242-.3857 2.9078-.188 4.1836.5539 2.6308 1.523 3.5407 4.9055 2.0176 7.5363-1.523 2.6308-4.8957 3.5407-7.5364 2.0176l1.8396-3.1846c.8803.5044 2.0077.2077 2.5122-.6726.5044-.8802.2076-2.0077-.6726-2.512-.8802-.5045-2.0077-.2078-2.5121.6725l-5.855 10.1572c-.5044.8803-.2077 2.0077.6725 2.5121.8802.5044 2.0077.2077 2.5121-.6725L9.47 20.0754c3.699 1.167 7.843-.3462 9.8606-3.8473 2.0176-3.4913 1.256-7.833-1.6022-10.4639z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/penny.svg b/assets/lib/simple-icons/icons/penny.svg
new file mode 100644
index 00000000..19c2e35c
--- /dev/null
+++ b/assets/lib/simple-icons/icons/penny.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Penny</title><path d="M2.053 11.914h.368c.419 0 .675-.245.718-.556.043-.27-.154-.556-.547-.556H2.24zm18.611-.638.839-1.504h1.924l-2.908 4.399H18.56l.933-1.26-1.07-3.049-.727 4.309h-1.54l-.949-2.036-.342 2.036h-1.54l.745-4.4h1.582l.915 1.971.334-1.97h3.37l.393 1.504zm-7.21-1.504-.744 4.399h-1.54l-.949-2.036-.342 2.036h-1.54l.745-4.4h1.582l.915 1.971.334-1.97h1.539zM3.036 9.707c1.07 0 1.788.547 1.797 1.438l.23-1.373h3.49l-.188 1.112H6.517l-.094.523h1.668l-.188 1.104H6.235l-.094.548h1.873l-.188 1.112H4.32l.402-2.38c-.273.77-1.009 1.227-1.967 1.227h-.88l-.198 1.153H0l.753-4.464zM24 13.345c0 .523-.445.948-.992.948-.547 0-.992-.425-.992-.948 0-.523.445-.948.992-.948.556.008.992.425.992.948z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/pepsi.svg b/assets/lib/simple-icons/icons/pepsi.svg
index e92210a6..9ea41c09 100644
--- a/assets/lib/simple-icons/icons/pepsi.svg
+++ b/assets/lib/simple-icons/icons/pepsi.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Pepsi icon</title><path d="M12 0C8.93 0 5.86 1.17 3.517 3.514c-4.688 4.686-4.688 12.284 0 16.971 4.685 4.686 12.284 4.687 16.97 0 4.686-4.687 4.686-12.286-.002-16.97A11.958 11.958 0 0012.001 0zm0 .864c2.506 0 4.817.828 6.678 2.226a23.118 23.118 0 01-15.64 15.52A11.085 11.085 0 01.865 12C.865 5.85 5.85.864 12 .864zm9.342 5.08A11.082 11.082 0 0123.136 12c0 6.15-4.986 11.135-11.136 11.135a11.11 11.11 0 01-8.542-3.994c6.766-2.132 11.665-2.135 15.027-4.611 1.933-1.425 3.205-3.698 3.205-6.283 0-.802-.123-1.575-.348-2.303Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Pepsi</title><path d="M18.43 3.277A10.839 10.839 0 002.718 17.594c7.455-2.033 13.503-7 15.712-14.317M12 22.84a10.839 10.839 0 009.21-16.574 7.607 7.607 0 01-2.873 8.195c-3.285 2.416-8.06 2.432-14.649 4.494A10.817 10.817 0 0012 22.84M24 12A12 12 0 1112 0a12 12 0 0112 12"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/percy.svg b/assets/lib/simple-icons/icons/percy.svg
new file mode 100644
index 00000000..5864e610
--- /dev/null
+++ b/assets/lib/simple-icons/icons/percy.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Percy</title><path d="M13.235 2.4s.569 1.169.616 1.547c0 0-1.856-.646-4.458-.891 0 0 1.25.872 1.734 1.538 0 0-1.84-.093-4.586 0 0 0 1.561.634 2.252 1.215 0 0-3.26.331-5.103.862 0 0 2.076.73 2.652 1.276 0 0-2.648.754-5.316 2.294 0 0 1.482.26 2.642.766 0 0-1.478 1.033-3.668 3.852 0 0 1.62-.309 2.73-.222 0 0-1.407 1.644-2.141 4.158 0 0 .813-.518 1.602-.706 0 0 .084 2.998 1.724 3.478v-.002a.774.774 0 0 0 .225.034c.08 0 .163-.012.248-.036.52-.15.915-.663 1.37-1.256.15-.195.303-.395.466-.59.2-.284.438-.54.706-.762.58-.478 1.38-.84 2.358-.695 1.1.093 1.78 1.189 2.327 2.07.283.458.659 1.27 1.289 1.27.696 0 .94-.834 1.25-1.862.292-.97.726-1.891 1.29-2.732 1.085-1.617 2.474-2.495 4.14-3.36 1.595-.83 3.102-1.614 3.858-2.803.379-.594.567-1.325.558-2.169a6.966 6.966 0 0 0-.31-1.909c-.139-.455-.505-.902-.939-.72a3.417 3.417 0 0 1-1.151.256c-.858-.805-3.379-2.4-5.038-3.303 0 0 .202.592.482 1.699 0 0-1.787-1.396-3.81-2.296zm0 2.7 3.81.945-1.233.255zM9.957 6.67l4.571.354-1.388.46Zm6.955 1.082-.678.514-2.383.134zm-5.784.514-1.088.73-3.018-.287Zm4.505 1.206-1.105.617-3.002-.176zm-8.282.77-.679 1.312-2.982 1.313zm4.135.533-.77 1.265-3.853.942zm-5.845 2.354-.118 1.313L3.6 16.2zm11.31 3.151c-1.093 1.127-2.002 2.806-2.232 4.121.39.58.746.867 1.08.873h.012c.346 0 .575-.233.68-.693.077-.343.094-.813.114-1.36.029-.844.067-1.894.346-2.94zm-7.904 2.512c-1.018.011-2.008.83-2.506 1.532v.001c.283.64.587.953.925.953a.53.53 0 0 0 .082-.007c.46-.072.886-.963 1.242-1.825a19.8 19.8 0 0 0 .257-.654z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/perforce.svg b/assets/lib/simple-icons/icons/perforce.svg
new file mode 100644
index 00000000..d801be62
--- /dev/null
+++ b/assets/lib/simple-icons/icons/perforce.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Perforce</title><path d="M3.741 8.755c.164-.425.352-.834.573-1.219-.213-.196-.745-.613-.712-.646 2.774-3.322 6.391-4.32 9.59-3.74.655.09 1.31.246 1.956.483 4.583 1.702 6.898 6.75 5.18 11.284a9.33 9.33 0 0 1-.614 1.285c.254.22.81.63.778.663-3.077 3.641-7.177 4.484-10.589 3.47a11.18 11.18 0 0 1-.982-.295c-4.574-1.702-6.898-6.751-5.18-11.285zM19.371.982c-.581.556-1.277 1.227-1.62 1.53a11.886 11.886 0 0 0-1.727-.802C10.819-.221 5.337 1.964 2.317 6.03.738 8.364-.195 11.236.034 14.19c0 0 .009 5.556 5.14 8.83.417-.574.948-1.31 1.3-1.785a12.36 12.36 0 0 0 1.817.86c5.892 2.184 12.422-.606 14.557-6.228 0 0 1.563-3.428 1.048-7.176 0 0-.401-5.057-4.525-7.708z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/periscope.svg b/assets/lib/simple-icons/icons/periscope.svg
deleted file mode 100644
index 6f396c72..00000000
--- a/assets/lib/simple-icons/icons/periscope.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Periscope icon</title><path d="M12.135 24c1.875 0 9.314-8.439 9.314-14.096C21.449 4.49 17.22 0 12.135 0 6.78 0 2.551 4.488 2.551 9.904 2.551 15.56 9.99 24 12.135 24zM10.639 3.846c.485-.12.995-.185 1.524-.185 3 0 5.581 2.551 5.581 5.865 0 2.985-2.581 5.535-5.596 5.535-3.345 0-5.925-2.55-5.925-5.535 0-1.396.45-2.64 1.229-3.63v.03c0 1.245 1.006 2.234 2.25 2.234C10.948 8.161 12 7.14 12 5.896c0-.919-.56-1.708-1.359-2.053l-.002.003z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/perl.svg b/assets/lib/simple-icons/icons/perl.svg
index 9f50d8a8..27385be0 100644
--- a/assets/lib/simple-icons/icons/perl.svg
+++ b/assets/lib/simple-icons/icons/perl.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Perl icon</title><path d="M11.638 0c-.148 0-.207.689-.252 2.925-.058 2.86-.07 2.949-.51 3.914-.36.793-1.623 2.676-2.037 3.04-.373.328-1.183 1.56-1.58 2.401-.71 1.504-.659 3.52-.04 5.047.518 1.194 1.262 2.156 2.46 3.182.94.805 1.23.919 1.375.544.049-.128-.162-.572-.483-1.018-.313-.436-.843-1.362-1.178-2.059-1.382-2.926-.7-5.357.902-8.045.89-1.393 1.403-2.642 1.579-3.852.22-1.515.043-6.079-.236-6.079zm-.757 1.215c-.186 0-.228.26-.228 1.422 0 .782-.08 1.654-.177 1.938-.312.914-1.154 1.737-3.482 3.404-1.684 1.205-3.096 2.652-3.64 3.732-1.666 3.299-.195 7.311 3.42 9.333 1.613.902 2.966 1.253 2.966.768 0-.126-.054-.228-.121-.228s-.632-.332-1.254-.738c-2.69-1.755-3.947-3.927-3.747-6.482.15-1.91.873-3.08 3.796-6.135 2.522-2.636 2.69-2.97 2.693-5.304.001-1.42-.036-1.71-.226-1.71zm1.508.632c-.103.017-.14.905-.142 2.903l-.004 2.926-.744 2.812c-.83 2.54-.954 5.133-.345 7.725.558 2.202.796 2.638 1.567 2.857.343.098.89.355 1.216.572.736.49 1.395.435 2.715-.232 1.92-.97 3.209-2.222 4.067-3.953.745-1.648.856-3.71.068-5.35-.7-1.414-1.882-2.554-4.358-4.197-2.162-1.436-2.617-1.82-3.15-2.652-.322-.503-.369-.724-.308-1.444.04-.468.126-.978.192-1.134.101-.239.069-.268-.202-.182-.26.082-.34.027-.42-.286-.061-.245-.112-.372-.152-.365zm.714 4.586c.034-.007.135.113.252.306.144.237 1.022 1 1.952 1.697 2.888 2.189 5.27 4.378 4.087 8.2-.405 1.146-.99 2.07-1.963 3.098-.544.575-1.266 1.09-1.53 1.09-.047 0 .252-.43.664-.954 1.337-1.7 1.972-3.718 1.79-5.674-.168-1.796-1.557-3.975-3.753-5.89-.912-.796-1.518-1.536-1.512-1.846 0-.016.005-.025.013-.027zm-1.089 15.492c-.208-.006-.297.349-.297 1.121 0 .94.018.988.342.942.302-.042.347-.15.387-.899.032-.613-.019-.902-.183-1.039-.097-.08-.18-.123-.249-.125zm-1.052.28c-.124-.002-.226.14-.327.43-.085.245-.253.481-.373.527-.322.124-.264.55.075.55.162 0 .402-.109.534-.24.441-.442.579-.824.382-1.062-.111-.134-.206-.203-.29-.205zm2.074.063c-.312 0-.28.61.053 1.034.309.392.908.567.908.264 0-.252-.775-1.298-.961-1.298z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Perl</title><path d="M11.638 0c-.148 0-.207.689-.252 2.925-.058 2.86-.07 2.949-.51 3.914-.36.793-1.623 2.676-2.037 3.04-.373.328-1.183 1.56-1.58 2.401-.71 1.504-.659 3.52-.04 5.047.518 1.194 1.262 2.156 2.46 3.182.94.805 1.23.919 1.375.544.049-.128-.162-.572-.483-1.018-.313-.436-.843-1.362-1.178-2.059-1.382-2.926-.7-5.357.902-8.045.89-1.393 1.403-2.642 1.579-3.852.22-1.515.043-6.079-.236-6.079zm-.757 1.215c-.186 0-.228.26-.228 1.422 0 .782-.08 1.654-.177 1.938-.312.914-1.154 1.737-3.482 3.404-1.684 1.205-3.096 2.652-3.64 3.732-1.666 3.299-.195 7.311 3.42 9.333 1.613.902 2.966 1.253 2.966.768 0-.126-.054-.228-.121-.228s-.632-.332-1.254-.738c-2.69-1.755-3.947-3.927-3.747-6.482.15-1.91.873-3.08 3.796-6.135 2.522-2.636 2.69-2.97 2.693-5.304.001-1.42-.036-1.71-.226-1.71zm1.508.632c-.103.017-.14.905-.142 2.903l-.004 2.926-.744 2.812c-.83 2.54-.954 5.133-.345 7.725.558 2.202.796 2.638 1.567 2.857.343.098.89.355 1.216.572.736.49 1.395.435 2.715-.232 1.92-.97 3.209-2.222 4.067-3.953.745-1.648.856-3.71.068-5.35-.7-1.414-1.882-2.554-4.358-4.197-2.162-1.436-2.617-1.82-3.15-2.652-.322-.503-.369-.724-.308-1.444.04-.468.126-.978.192-1.134.101-.239.069-.268-.202-.182-.26.082-.34.027-.42-.286-.061-.245-.112-.372-.152-.365zm.714 4.586c.034-.007.135.113.252.306.144.237 1.022 1 1.952 1.697 2.888 2.189 5.27 4.378 4.087 8.2-.405 1.146-.99 2.07-1.963 3.098-.544.575-1.266 1.09-1.53 1.09-.047 0 .252-.43.664-.954 1.337-1.7 1.972-3.718 1.79-5.674-.168-1.796-1.557-3.975-3.753-5.89-.912-.796-1.518-1.536-1.512-1.846 0-.016.005-.025.013-.027zm-1.089 15.492c-.208-.006-.297.349-.297 1.121 0 .94.018.988.342.942.302-.042.347-.15.387-.899.032-.613-.019-.902-.183-1.039-.097-.08-.18-.123-.249-.125zm-1.052.28c-.124-.002-.226.14-.327.43-.085.245-.253.481-.373.527-.322.124-.264.55.075.55.162 0 .402-.109.534-.24.441-.442.579-.824.382-1.062-.111-.134-.206-.203-.29-.205zm2.074.063c-.312 0-.28.61.053 1.034.309.392.908.567.908.264 0-.252-.775-1.298-.961-1.298z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/personio.svg b/assets/lib/simple-icons/icons/personio.svg
new file mode 100644
index 00000000..1d62594b
--- /dev/null
+++ b/assets/lib/simple-icons/icons/personio.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Personio</title><path d="M21.603 24H2.47v-1.563h19.133Zm-6.167-4.044c.557.145 1.137-.244 1.303-.867.166-.624-.157-1.25-.713-1.39-.556-.142-1.137.24-1.304.865-.167.624.156 1.25.714 1.39zM22.37.676c-1.737-1.347-5.387-.43-8.145.576A41.707 41.705 0 0 0 5.64 5.625C3.624 6.985 1.135 8.987.748 10.814a1.43 1.43 0 0 0 .28 1.263c.505.59 1.354.576 1.516.568a.781.781 0 0 0 .51-1.368.783.783 0 0 0-.58-.193.877.877 0 0 1-.181-.016c.58-2.136 6.69-6.232 12.47-8.342 3.858-1.408 5.964-1.342 6.649-.81.284.22.433.487.23 1.062-.545 1.535-3.2 3.96-7.108 6.48-.725.467-1.434.898-2.11 1.29.544-1.92 1.1-3.88 1.582-5.561a.782.782 0 0 0-1.504-.43 2070.72 2070.634 0 0 0-2.002 7.05c-1.564.811-2.754 1.3-3.22 1.366a.783.783 0 0 0-1.025 1.095c.134.226.4.476.929.476.088 0 .177-.007.264-.02.54-.073 1.417-.395 2.485-.884-.758 2.702-1.373 4.975-1.407 5.282a.781.781 0 0 0 .69.858.668.668 0 0 0 .087 0 .783.783 0 0 0 .775-.685c.062-.38.822-3.133 1.746-6.42a58.241 58.239 0 0 0 4.01-2.401c5.435-3.587 7.007-5.917 7.362-7.241.277-1.02-.017-1.93-.825-2.557z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/petsathome.svg b/assets/lib/simple-icons/icons/petsathome.svg
new file mode 100644
index 00000000..92630f6c
--- /dev/null
+++ b/assets/lib/simple-icons/icons/petsathome.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Pets at Home</title><path d="M2.4 0A2.377 2.377 0 0 0 0 2.4v19.2C0 22.944 1.056 24 2.4 24h19.2c1.344 0 2.4-1.056 2.4-2.4V2.4C24 1.056 22.944 0 21.6 0Zm13.008 5.377v1.775h1.2v1.295h-1.2v1.969c0 .432.191.623.623.623.144 0 .289.001.385-.047l.191 1.295c-.24.144-.48.145-.912.145-1.104 0-1.87-.385-1.87-1.729V8.447h-.673V7.152h.672V5.615Zm-9.504 1.63c1.056 0 1.871.817 1.871 2.593 0 1.968-1.055 2.785-2.207 2.785-.384 0-.72-.05-1.103-.194v1.489l-1.584.289c.048.048.047-6.817.047-6.817H4.32l.096.672c.384-.384.816-.816 1.488-.816Zm4.752.05c1.584 0 2.305 1.2 2.305 2.687 0 .192 0 .336-.049.432H9.793c.096.816.575 1.152 1.295 1.152.576 0 1.152-.191 1.728-.527l.145 1.103c-.576.384-1.249.576-2.065.576-1.584 0-2.689-.815-2.689-2.687 0-1.68 1.057-2.736 2.45-2.736zm8.4.047c.72 0 1.393.144 1.92.384l-.193 1.2c-.576-.289-1.198-.481-1.726-.481-.384 0-.577.146-.577.338 0 .192.144.335.864.527 1.392.384 1.873.72 1.873 1.68.048 1.104-.721 1.728-2.113 1.728-.816 0-1.585-.24-2.16-.529l.193-1.199c.624.384 1.39.625 1.967.625.432 0 .671-.145.671-.385 0-.288-.143-.384-.863-.576-1.296-.336-1.873-.672-1.873-1.68 0-.96.722-1.632 2.018-1.632zM10.608 8.11c-.432 0-.766.385-.814 1.201h1.63c-.047-.816-.336-1.2-.816-1.2zm-5.183.385c-.336 0-.624.191-.912.527v1.97c.24.095.384.144.72.144.528 0 .96-.434.96-1.442.047-.816-.288-1.199-.768-1.199zM9.6 13.104v1.824c.24-.24.48-.383.816-.383.528 0 .768.335.768.863v1.969h-.817v-1.729c0-.192-.095-.335-.287-.335-.144 0-.336.096-.48.24v1.824h-.864v-4.129zm-2.784.48v1.008h.623v.72h-.623v1.055c0 .24.096.336.336.336.096 0 .144.001.192-.047l.095.721c-.096 0-.238.047-.478.047-.576 0-1.01-.24-1.01-.912v-1.2h-.383v-.72h.383v-.863zm5.952.96c.768 0 1.343.576 1.343 1.44 0 .912-.575 1.44-1.343 1.44s-1.344-.528-1.344-1.44c0-.912.576-1.44 1.344-1.44zm3.216 0c.384 0 .576.193.672.433.24-.24.528-.432.864-.432.528 0 .767.335.767.863v1.969h-.814v-1.729c0-.192-.097-.335-.29-.335-.143 0-.287.096-.431.24v1.824h-.863v-1.729c0-.192-.097-.335-.29-.335-.143 0-.287.096-.431.24v1.824h-.863v-2.785h.767l.047.385c.24-.24.53-.432.865-.432zm-11.978.038c.102-.004.206-.002.314.01.768 0 1.153.24 1.153.96v1.872l-.77-.047-.047-.338c-.24.24-.479.385-.863.385-.432 0-.77-.288-.77-.768 0-.672.48-.96 1.584-1.056v-.047c0-.24-.143-.336-.431-.336-.288 0-.624.095-.912.191l-.096-.625c.252-.108.532-.187.838-.201zm15.818.01c.864 0 1.248.623 1.248 1.44v.144h-1.68c.049.432.288.625.672.625.288 0 .625-.097.913-.29l.095.626a2.003 2.003 0 0 1-1.103.336c-.816 0-1.442-.434-1.442-1.442 0-.912.577-1.44 1.297-1.44zm0 .48c-.24 0-.383.191-.431.623h.863c0-.384-.192-.623-.432-.623zm-6.937.19a.468.468 0 0 0-.12.002c-.335 0-.527.288-.527.72s.192.768.528.768.529-.288.529-.768c0-.42-.148-.693-.41-.722zm-8.28.77c-.576.095-.718.289-.718.529 0 .192.095.287.287.287.144 0 .336-.096.48-.192-.048-.048-.049-.625-.049-.625z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/peugeot.svg b/assets/lib/simple-icons/icons/peugeot.svg
index 3cefe5e5..101e1dc2 100644
--- a/assets/lib/simple-icons/icons/peugeot.svg
+++ b/assets/lib/simple-icons/icons/peugeot.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Peugeot icon</title><path d="M23.444 22.188c-.45-1.321-2.252-4.655-3.664-6.547-.3-.42-.18-.631-.03-.751s.691-.601 1.321-1.291c.631-.721.781-1.532.33-2.703S19.51 6.962 19.21 6.061c-.36-1.051-.39-1.532-.18-2.102.24-.691.601-.721.901-.691.15 0 .27.15.27.24 0 .3.03.661.3 1.442.481 1.231 1.652 2.042 2.042 2.192.27.12.3-.09.3-.18-.03-.09-.42-1.622-.691-2.763-.3-1.201-.45-1.472-.721-1.712-.42-.42-1.081-.631-1.652-.601-1.231.06-1.802 1.231-1.862 1.351-.06.09-.09.18-.21.09-.36-.24-1.381-1.111-1.472-1.652-.06-.33-.12-.36-.42-.481C14.584.713 13.503.293 12.301.083c-.481-.09-.511-.12-1.051-.03-.961.18-1.532.39-2.252.781-.39.21-.45.36-.511.45-.12 0-.21.09-.33.15-.24.09-1.111.39-1.412.571-.18.12-.3.21-.18.45.18.36.661 1.141.901 1.351.12.12.481.21.541.21.09.03.15.03.18-.03s.03-.15.21-.27c.24-.18.661-.27.901-.3.18 0 .3-.03.39.06.09.06.3.3.39.511.06.24.03.3-.09.36s-.511.15-.961.18c-.45.03-.571-.09-.601-.12-.03-.03-.09-.06-.12 0-.06.09-.18.18-.36.27-.09.06-.15.15-.06.3.27.481.661 1.021.991 1.141.27.09.42 0 .721-.21.272-.208.452-.208.542-.148.09.06.24.21.21.33-.06.241-.57.812-.66.932-.09.12-.18.18-.33.09-.241-.12-3.755-1.952-4.235-2.132-.511-.21-.841-.24-1.351-.27-.42-.03-.961.03-1.291.09-.24.06-.39.15-.631.39-.33.3-.661.661-.691.991-.03.24.24.691.27.721.03.03.06.09.21.09.15-.03.481-.21.901-.12.39.06.42.36.42.601 0 .03.06.12.15.12.15 0 .39 0 .661.12.33.15.991.661 1.111.781.09.09.09.18-.09.18-.841.06-2.132.33-2.703.511-.42.15-.901.33-1.081.631-.21.33-.45.901-.511 1.291-.06.39.36.871.45.991.09.06.12.12.27.06.21-.12.691-.42 1.171-.45.3-.03.39.24.481.36.06.09.15.03.39-.03.45-.12 3.003-.09 3.904-.03.42.03.991.09 1.412.3.42.24 1.171.961 1.171.961s-1.021 1.682-1.562 2.703c-.511.931-.871 1.622-1.051 2.012-.18.36-.3.901-.27 1.291.06.601.06.901.06 1.171 0 .24-.24.27-.541.33-.45.12-1.321.18-2.012.36-.631.15-.871.3-.991.811-.09.39-.21 1.351-.24 1.802 0 .18 0 .27.21.21.12-.03.511-.09.991-.12.601-.06 1.231-.03 1.742-.03.931 0 3.634.15 3.814.18.24.03.27 0 .27-.18-.03-.21-.06-.901-.06-1.291 0-.42-.06-.811.3-1.231.36-.39 3.123-3.484 3.273-3.634.12-.12.21-.27.42-.09.21.18 2.493 1.832 2.943 2.162s.901.45 1.412.45c.39 0 .481.661.15.721-.33.06-.841.18-1.171.24-.541.12-.691.3-.871.661-.15.3-.3 1.802-.3 1.952 0 .09 0 .24.15.21.661-.12 1.712-.18 2.853-.15 1.291.03 2.553.15 2.733.15.18 0 .21 0 .3-.15.15-.27.661-.811 1.081-1.171.153-.12.153-.18.063-.45zm-4.985-9.1c-.33.12-.541 0-.691-.15-.15-.15-1.472-1.712-1.892-2.192-.21-.24-.36-.781.27-1.021.511-.18 1.472-.481 1.712-.631.27-.15.39-.27.42-.541.03-.27.03-.571.03-.661 0-.09.12-.18.21-.06.06.09.27.541.571 1.081.42.781.961 1.772 1.141 2.222.18.42.09.721-.18 1.021-.33.392-1.351.842-1.591.932z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Peugeot</title><path d="M12.0001 0c3.499 0 7.1308.2987 10.8171.9349.055 1.4778.1175 3.762.0126 5.7004-.2349 4.3217-1.1861 7.676-2.9943 10.5564-1.8026 2.872-4.5938 5.3416-7.8354 6.8083-3.2416-1.4667-6.0331-3.9362-7.8356-6.8083-1.808-2.8804-2.7594-6.2348-2.9941-10.5564-.1053-1.9383-.0427-4.2226.0124-5.7004C4.8691.2987 8.5011 0 12.0001 0zm0 .4163c-3.4494 0-6.9514.2933-10.4139.8722-.076 2.1923-.076 3.9367-.0005 5.3243.2305 4.248 1.1619 7.5394 2.9309 10.3575 1.7688 2.8179 4.421 5.1457 7.4835 6.5718 3.0622-1.4261 5.7147-3.7539 7.4835-6.5718 1.769-2.8182 2.7001-6.1095 2.9309-10.3575.0755-1.3876.0755-3.132-.0005-5.3243C18.9515.7096 15.4493.4163 12.0001.4163zM11.97 13.0361s.0681.4045.0888.5218c.0116.0665.0141.0843-.0027.1495-.0477.1695-.3633 1.59-.5385 2.6258-.0822.4767-.1533.9498-.1947 1.3546-.0234.23-.0158.2851.0449.4892.172.5767.8082 2.0834.9304 2.3581a.3288.3288 0 0 1 .0257.0951l.0459.3553c-.2038-.3081-1.3115-2.3458-1.7465-3.4742-.0513-.1329-.0612-.1984-.0044-.4428.3025-1.2962 1.1211-3.4992 1.3511-4.0324zm-1.6153-3.1317c.0312.0913.2909.9805.3107 1.1919.016.1174.0133.149-.0284.2614-.2276.606-.9159 2.1129-1.1814 2.6161-.059.1107-.1145.1828-.2256.2958-.2535.2582-.7386.7462-1.039 1.0192-.1091.0993-.1385.1841-.1607.3126-.0358.2063-.0713.5584-.0812.7402-.0086.1599.0173.2347.1064.3931.5294.9451 2.2966 3.1194 2.8001 3.576.0365.0331.0632.0553.1402.1065.074.0494.3154.2061.3154.2061a.085.085 0 0 1 .0239.0257l.0874.1539c-.2256-.1123-.5874-.2928-.7742-.3929a.7527.7527 0 0 1-.1249-.0845c-.5896-.4902-2.3963-2.6064-2.9277-3.49-.1325-.2206-.1461-.292-.1283-.5008.0333-.3887.0849-.8774.1301-1.0916.0274-.1292.0558-.2051.1547-.3192.7533-.8648 2.2059-2.7743 2.6293-3.5908.0471-.0924.0511-.1245.0521-.2117.0027-.253-.078-.7457-.0992-.8702a.2385.2385 0 0 1-.0025-.0591l.0228-.2877zm4.931-.4748c.0812.0377.2137.0801.2732.1502.9366.9784 1.6856 1.9929 1.8356 2.2603.0289.0514.0486.1028.0558.1616.1683 1.4269.0237 2.9385-.3201 4.2535-.0311.1186-.0659.1794-.1799.2651-.7607.5713-2.5689 2.0716-3.176 2.6297a.996.996 0 0 0-.1718.2088c-.153.2511-.3419.6012-.462.825-.1234-.2696-.3924-.9273-.4847-1.1931-.0301-.0867-.0355-.1322-.0037-.2483.1505-.5512.862-2.1538 1.0005-2.4436-.0018.0372.0063.1347-.0079.1693-.0624.1895-.445 1.4526-.5227 2.0003-.0173.1218-.0158.1547 0 .2743.0341.2557.1868.7247.1868.7247.0174-.0414.1887-.3836.309-.4774.7089-.6984 2.1971-1.9725 3.0499-2.6638.0958-.0776.1315-.1295.1528-.2767.1056-.7254.1362-2.0275.0726-2.9751a1.012 1.012 0 0 0-.1708-.5003c-.231-.3417-.5072-.6651-.926-1.0805a.4152.4152 0 0 1-.1157-.2187c-.1222-.6524-.3949-1.8453-.3949-1.8453zm-7.9201 1.5091a.3306.3306 0 0 1 .1794-.0067c.267.0642.8322.2029 1.2594.3123.06.0153.1347.0714.1666.1245l.093.1549a.1822.1822 0 0 1 .0059.1774 21.7947 21.7947 0 0 1-.3055.5651l-.0886.1583c-.1631.2896-.3254.5691-.4176.7161-.0607.0971-.0945.1401-.2026.1784-.4203.148-.9423.3249-1.2525.4255-.0634.0205-.0849.0591-.0726.1295.0222.1282.0938.5636.1212.6906.0101.0469.0476.0843.1172.0709.1834-.0348.6715-.1544.6715-.1544s-.1439.1332-.23.2117a.1456.1456 0 0 1-.0545.0324c-.133.0445-.4578.1356-.559.1579-.079.017-.1293-.0141-.1496-.1035 0 0-.1385-.59-.1885-.7907a1.552 1.552 0 0 0-.0254-.0872c-.0375-.1161-.1276-.3444-.1784-.464a.108.108 0 0 1-.0087-.044c.0015-.1366.0267-.4415.0267-.4415s.2989.2804.4435.3817c.0326.023.0521.0277.0921.0175.1987-.0511.6555-.2024.9062-.2962a.3475.3475 0 0 0 .1463-.1048c.2594-.3135.5846-.8013.7725-1.1692a.2194.2194 0 0 0 .0146-.1631l-.0405-.1334c-.0118-.039-.0531-.083-.0911-.0976a34.0249 34.0249 0 0 0-1.1999-.4329l.0489-.0155zm8.7416-3.7975a.407.407 0 0 1 .2994.0069c.7409.3113 1.9867 1.0437 2.6792 1.5596.0669.0499.0935.0843.1111.1648.1626.7402.2243 1.8845.1219 2.8478-.0074.0692-.0212.1107-.0573.1846-.4388.8981-.9326 1.7434-1.4524 2.3954.0078-.0807.0446-.4617.0471-.6834a.0765.0765 0 0 1 .0304-.0605 9.0576 9.0576 0 0 0 .304-.2468c.0365-.0316.0568-.0553.0758-.086.2117-.3425.5903-1.0595.7428-1.4909a.787.787 0 0 0 .0429-.3281c-.0489-.6011-.1431-1.434-.2836-1.9776a.3337.3337 0 0 0-.1703-.2147c-.1212-.0623-.3588-.1707-.9-.3879a.7631.7631 0 0 1-.2068-.1238c-.3549-.2985-.9097-.7459-1.2549-1.0034a.4301.4301 0 0 0-.3527-.0749 21.4993 21.4993 0 0 0-.7517.1856c-.0612.0166-.0854.018-.1486.0106-.1009-.0117-.3007-.0275-.382-.0336.5871-.2761 1.152-.5142 1.5057-.6437zM8.274 12.0001c-.1836.3024-.403.6236-.5689.8243a.1988.1988 0 0 1-.0834.0588 14.1489 14.1489 0 0 1-.7063.2382l1.3586-1.1213zm-2.4267-.397l-.1083.7484-.3685-.4329c.0671-.1455.2633-.2829.4768-.3155zm-.6866-1.6986l-.133.0838c-.0333.0212-.0424.0304-.0563.0595a2.6968 2.6968 0 0 1-.0856.1616c-.0091.0158-.0336.0403-.0466.0504a16.6112 16.6112 0 0 1-.4773.3533c-.0089.0062-.0202.0035-.0279-.004-.0165-.0166-.0859-.0954-.0982-.1139a.0823.0823 0 0 1-.0151-.0489 2.0329 2.0329 0 0 1 .0062-.1337c.0039-.0509.0185-.0751.0805-.1394.0693-.0719.1449-.1475.2243-.2251.1947-.1641.6863-.5633 1.5642-1.1904a.1927.1927 0 0 0 .0437-.0423c.0921-.1244.354-.4644.4186-.5452a.1928.1928 0 0 1 .0308-.0311 2.4849 2.4849 0 0 1 .2595-.1833c.2445-.1542.7181-.4354.9834-.5898l-.1007.124c-.0056.0055-.0111.0106-.0167.0163a42.2875 42.2875 0 0 0-.5625.4314c-.0286.0227-.04.0425-.0466.0783-.0227.1266-.0605.367-.0716.5001-.0032.039-.02.0583-.0597.0744-.173.0704-.3781.1445-.5439.211-.0356.0141-.0454.0195-.0664.0356-.0166.0128-.2369.2098-.2369.2098s.479-.1181.6547-.1579c.042-.0094.06-.0069.0987.0114.0363.0168.0967.0408.1286.0524.0489.018.0748.0172.1288.0054.1979-.0442.5308-.1233.708-.1695.0921-.024.1424-.0489.2204-.1035.0849-.0591.2999-.2205.2999-.2205s-.004.0285-.0069.0443a.0591.0591 0 0 1-.0161.0318 3.986 3.986 0 0 1-.1581.1777c-.0871.0902-.1392.1223-.2485.168-.5035.21-1.3638.5362-2.0091.7598-.0423.0148-.0606.0269-.0919.059-.0341.0346-.0795.085-.0795.085s.5262.0383.6868.0568c.0521.0059.0893.023.1291.0573.132.1137.5691.5641.6999.7205 0 0-1.2426.2068-1.8184.3499-.0711.0175-.1066.0628-.1227.1198-.0476.1675-.1599.7062-.1599.7062s-.04-.0128-.0958-.045c-.0383-.022-.0577-.0403-.0997-.0847-.1362-.144-.3601-.4198-.4677-.5796-.0316-.0472-.0449-.1072-.0054-.1554.1167-.1438.3512-.4062.4805-.5411.0138-.0146.0313-.04.0499-.0766.0498-.1032.1038-.3175.1282-.4139zm8.0217-2.8166a.1805.1805 0 0 1 .1083.0148l.2564.1228a.0935.0935 0 0 1 .0503.0628c.0348.1468.0775.3412.1061.5065a.2993.2993 0 0 1-.036.1994c-.1061.1846-.324.5166-.446.695-.0271.04-.0304.0885-.022.1361.0553.3059.2858 1.374.2858 1.374l-.1451-.1322a.2102.2102 0 0 1-.0602-.0917c-.1032-.3022-.2962-.9335-.385-1.2406a.1588.1588 0 0 1 .0299-.145c.1513-.1838.3717-.4778.5005-.6641.036-.0524.0479-.1102.0267-.1534a4.6142 4.6142 0 0 0-.1273-.2369.1058.1058 0 0 0-.0597-.0489l-.174-.0558a.1452.1452 0 0 0-.093.0017c-.3791.1376-.8889.336-1.2009.4655-.0457.019-.0644.0205-.1197.0121-.0903-.0133-.3534-.0605-.4825-.0847a.0344.0344 0 0 1-.023-.0511l.153-.2654a.1474.1474 0 0 1 .0955-.0704c.4922-.1123 1.143-.2413 1.7619-.3505zM7.7369 8.3065a.0544.0544 0 0 1 .0548.0326c.0309.072.0225.1523-.0074.2209-.0116.028-.0474.0551-.0767.0616l-.2456.0546a.0227.0227 0 0 1-.0274-.0237l.023-.2886a.04.04 0 0 1 .0365-.0366l.2428-.0208zm2.7941-1.8543a.0366.0366 0 0 1 .0321.0549l-.5987 1.032a.2643.2643 0 0 1-.1552.126l-1.1227.3516a1.6503 1.6503 0 0 1-.3761.0712c-.249.0188-.9886.042-.9886.042l.0162-.0351a.0741.0741 0 0 1 .038-.0368l.35-.1487a.169.169 0 0 0 .0666-.0502l.5405-.6661c.0289-.0356.0666-.0697.1069-.0909.357-.1881.992-.4705 1.4368-.6192a.5085.5085 0 0 1 .1426-.0235l.5116-.0072zm-.6002-1.1984c1.2389-.109 2.9153-.1386 4.5168-.0173a.837.837 0 0 1 .2638.064c.5247.2209 1.4556.7042 2.4906 1.2969a.7764.7764 0 0 1 .1281.0917c.2742.2419.9689.9535.9689.9535l-.2167-.043a.2282.2282 0 0 1-.0844-.0351c-.4383-.2948-1.0782-.6785-1.6145-.949a.5915.5915 0 0 0-.2034-.0598 14.6895 14.6895 0 0 0-.8443-.0618c-.1138-.0047-.1913-.0237-.3026-.0803-.2127-.108-.728-.342-.9847-.44-.1098-.042-.1658-.0519-.2734-.0502-.441.0064-1.4457.0385-1.9588.0704a.2445.2445 0 0 1-.0521-.0025l-.2445-.0383c.6935-.1196 2.4077-.2725 3.1172-.3098l-.2887-.0966a.596.596 0 0 0-.1728-.0299c-.9698-.0218-2.3036-.0178-3.4321.067a.6098.6098 0 0 0-.2021.0504c-.3228.1419-1.11.5692-1.8994 1.0081-.2546.1416-.529.2952-.7731.4326 0 0 .0985-.1268.1175-.1515.0168-.0215.0219-.0255.0447-.0403.1018-.0684.4109-.2678.5343-.3585.2377-.1794.6128-.4956.8364-.6916a.6677.6677 0 0 0 .1288-.1529c.0723-.1171.1513-.2441.1999-.3145.0414-.0611.1123-.1038.2006-.1117zM4.655 2.404c.306-.0316.477.0875.477.3975v.1715c0 .3172-.171.4455-.477.4774a71.2552 71.2552 0 0 0-1.269.144v.4687c-.0886.0109-.1774.0218-.266.0331V2.5814a70.6625 70.6625 0 0 1 1.535-.1774zm14.2032-.0491a71.245 71.245 0 0 1 2.022.2263v.2444a68.7666 68.7666 0 0 0-.8741-.105v1.2707a94.0383 94.0383 0 0 0-.2663-.0299V2.6906a68.3322 68.3322 0 0 0-.8815-.0914v-.2443zM7.6494 2.1558v.2441a71.8527 71.8527 0 0 0-1.6641.1223v.3731a68.5725 68.5725 0 0 1 1.48-.1107v.2444a70.5409 70.5409 0 0 0-1.48.1104v.4094a69.7002 69.7002 0 0 1 1.6641-.1223v.2441a70.9377 70.9377 0 0 0-1.9245.145v-1.515a70.5346 70.5346 0 0 1 1.9245-.1448zm8.6326.4149c0-.3397.1683-.4097.5476-.384.3332.023.6658.0479.9988.0756.3295.0272.5469.1198.5469.4665v.6765c0 .3402-.1878.4015-.5469.3719a72.5525 72.5525 0 0 0-.9988-.0754c-.3628-.0245-.5476-.0946-.5476-.4546v-.6765zm-2.5812-.5284c.6426.0153 1.285.0395 1.9274.0726v.2441a70.7366 70.7366 0 0 0-1.6666-.0657v.3728c.4943.0139.9884.0327 1.4823.0567v.2444a70.4407 70.4407 0 0 0-1.4822-.0566v.4092a69.1564 69.1564 0 0 1 1.6666.066v.2441a71.29 71.29 0 0 0-1.9274-.0726v-1.515zm-3.344-.0013v1.0958c0 .3467-.1819.4228-.5484.4341a68.0289 68.0289 0 0 0-.9573.0361c-.3401.0153-.5479-.0494-.5479-.3926V2.1186l.2606-.0133v1.142c0 .0694.0595.126.1385.1223a70.1195 70.1195 0 0 1 1.2547-.0475c.0795-.0022.1323-.063.1323-.1324v-1.142c.089-.0025.1781-.0047.2675-.0067zm6.3245.3802c-.0792-.0054-.1387.0502-.1387.1295v.7491c0 .0694.0595.1423.1387.1478.4321.0287.8638.0613 1.2954.0978.0691.0059.1382-.0576.1382-.1268v-.7493c0-.0791-.0691-.1445-.1382-.1505a70.1864 70.1864 0 0 0-1.2954-.0976zm-5.1721-.3976c.479-.0035.958-.0017 1.4368.0047v.2441a72.1473 72.1473 0 0 0-1.536-.004c-.0693.0007-.1387.0608-.1387.1302v.759c0 .0694.0693.1381.1387.1374.4593-.004.9183-.0032 1.3776.002v-.4094a66.592 66.592 0 0 0-.7994-.0042v-.2443c.3534 0 .7068.0027 1.0602.0079v.8976a71.1228 71.1228 0 0 0-1.4896-.0064c-.3635.0025-.5484-.0603-.5484-.4136v-.6602c0-.3299.1651-.4383.4988-.4408zm-6.7546.6162l-.0206.0004a70.2289 70.2289 0 0 0-1.348.1522V3.35a71.0344 71.0344 0 0 1 1.348-.152c.0689-.0074.138-.0704.138-.1364v-.3068c0-.0694-.0691-.1218-.138-.1146l.0206-.0004z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/pexels.svg b/assets/lib/simple-icons/icons/pexels.svg
index 928b980f..4c0dff1b 100644
--- a/assets/lib/simple-icons/icons/pexels.svg
+++ b/assets/lib/simple-icons/icons/pexels.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Pexels icon</title><path d="M1.5 0A1.5 1.5 0 000 1.5v21A1.5 1.5 0 001.5 24h21a1.5 1.5 0 001.5-1.5v-21A1.5 1.5 0 0022.5 0h-21zm6.75 6.75h5.2715a3.843 3.843 0 01.627 7.6348V17.25H8.25V6.75zm1.5 1.5v7.5h2.8984v-2.8145h.873a2.343 2.343 0 100-4.6855H9.75Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Pexels</title><path d="M1.5 0A1.5 1.5 0 000 1.5v21A1.5 1.5 0 001.5 24h21a1.5 1.5 0 001.5-1.5v-21A1.5 1.5 0 0022.5 0h-21zm6.75 6.75h5.2715a3.843 3.843 0 01.627 7.6348V17.25H8.25V6.75zm1.5 1.5v7.5h2.8984v-2.8145h.873a2.343 2.343 0 100-4.6855H9.75Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/pfsense.svg b/assets/lib/simple-icons/icons/pfsense.svg
new file mode 100644
index 00000000..1e530463
--- /dev/null
+++ b/assets/lib/simple-icons/icons/pfsense.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>pfSense</title><path d="M2.013 0C.898 0 0 .929 0 2.044v17.775L3.252 8.27h3.282L6.1 9.785h.063c.186-.217.433-.403.742-.62.31-.216.62-.402.96-.588.342-.186.713-.31 1.116-.433.402-.124.805-.155 1.208-.155.867 0 1.579.154 2.198.433.62.279 1.084.712 1.455 1.239.31.464.5 1.019.593 1.669.006.06.027.135.027.189.062.712-.031 1.518-.28 2.385a8.571 8.571 0 0 1-1.02 2.322 9.885 9.885 0 0 1-1.58 1.95 8.125 8.125 0 0 1-2.044 1.364 5.536 5.536 0 0 1-2.354.495 5.655 5.655 0 0 1-1.982-.34c-.588-.217-.99-.62-1.238-1.177h-.062L2.353 24h19.603A2.042 2.042 0 0 0 24 21.956V4.706c-.093-.03-.186-.06-.248-.092a2.771 2.771 0 0 0-.557-.062c-.557 0-1.022.124-1.394.372-.34.248-.65.743-.867 1.518l-.526 1.826h2.013l.495 1.58-1.3 1.27h-2.014l-2.446 8.67h-3.53l2.446-8.67h-1.455l.805-2.85h1.425l.557-2.044c.185-.619.403-1.238.681-1.795a4.996 4.996 0 0 1 1.053-1.487c.433-.434.99-.775 1.641-1.022.65-.248 1.487-.372 2.447-.372.248 0 .464 0 .712.031A2.082 2.082 0 0 0 21.988 0zm6.565 11.118c-.898 0-1.672.278-2.323.805-.65.526-1.083 1.239-1.331 2.106-.248.867-.217 1.579.155 2.105.31.557.929.805 1.858.805.898 0 1.672-.278 2.322-.805.65-.526 1.115-1.238 1.363-2.105.247-.867.185-1.58-.155-2.106-.34-.527-.991-.805-1.89-.805Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/phabricator.svg b/assets/lib/simple-icons/icons/phabricator.svg
index 13c945dc..2b37c36a 100644
--- a/assets/lib/simple-icons/icons/phabricator.svg
+++ b/assets/lib/simple-icons/icons/phabricator.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Phabricator icon</title><path d="M10.076 7.644c-.408.165-.48.196-.488.213-.014.034-.01.77.006 1.116l.015.295-.223.22-.223.219-.192-.005a26.198 26.198 0 0 0-1.125.003c-.127.012-.122.01-.15.075-.12.286-.37.91-.37.922 0 .008.016.035.034.06.043.059.459.472.69.688l.24.224.057.052.002.313.003.313-.383.384c-.38.379-.519.525-.575.606l-.028.042.21.495c.2.47.213.496.235.502.07.02.287.024.84.02l.578-.005.224.226.226.226v.328c0 .503.018.96.041 1.069l.008.037.495.21c.272.114.499.208.504.208.041 0 .556-.508.926-.914l.07-.079.321.005.32.005.392.39c.43.425.63.61.664.61.004 0 .228-.089.496-.196.413-.165.489-.198.495-.214.022-.053.019-.582-.006-1.118l-.014-.292.223-.221.223-.222.268.007c.33.009 1.03.003 1.108-.009a.195.195 0 0 0 .065-.019c.014-.014.396-.955.396-.974a.273.273 0 0 0-.048-.074c-.06-.074-.452-.462-.693-.686l-.231-.215-.047-.045-.004-.314-.004-.314.364-.362c.368-.366.522-.53.588-.621l.036-.05-.211-.493a7.793 7.793 0 0 0-.223-.5.6.6 0 0 0-.104-.017 19.066 19.066 0 0 0-1.136-.003l-.18.006-.23-.225-.23-.226v-.329c0-.526-.019-.978-.043-1.075l-.01-.037-.487-.207a13.455 13.455 0 0 0-.505-.207c-.022 0-.12.082-.244.204-.184.182-.411.415-.586.602l-.175.186-.315-.005-.315-.005-.33-.329c-.487-.483-.692-.67-.738-.668-.01 0-.234.088-.497.194zm2.063 2.938c.69.09 1.237.639 1.318 1.319.015.126.005.364-.02.483a1.541 1.541 0 0 1-1.301 1.204c-.087.013-.32.013-.408 0a1.537 1.537 0 0 1-1.219-.941 1.516 1.516 0 0 1 .893-1.984 1.68 1.68 0 0 1 .32-.08c.102-.015.305-.015.417 0zm-.551-7.91a9.29 9.29 0 0 0-3.033.652 9.226 9.226 0 0 0-2.93 1.873c-.129.122-4.872 4.884-4.941 4.96a2.813 2.813 0 0 0-.674 1.549c-.013.11-.013.474 0 .585a2.79 2.79 0 0 0 .602 1.46c.09.113.14.163 3.153 3.188 1.538 1.544 1.764 1.768 2.044 2.021a9.261 9.261 0 0 0 6.871 2.349 9.225 9.225 0 0 0 5.67-2.489c.175-.162 4.881-4.886 4.973-4.991.361-.412.59-.93.663-1.502.019-.157.019-.5-.001-.657a2.79 2.79 0 0 0-.662-1.502 779.59 779.59 0 0 0-4.953-4.967 9.228 9.228 0 0 0-4.145-2.266 9.499 9.499 0 0 0-1.68-.256 15.207 15.207 0 0 0-.957-.008zm.82 1.928c.754.04 1.507.2 2.253.484.272.103.716.316.995.476a7.445 7.445 0 0 1 3.235 3.774 7.45 7.45 0 0 1 .26 4.513 7.395 7.395 0 0 1-6.443 5.53c-.34.032-.838.042-1.144.02-1.744-.116-3.3-.781-4.57-1.953a7.412 7.412 0 0 1-2.32-6.37 7.38 7.38 0 0 1 1.56-3.704 7.374 7.374 0 0 1 3.532-2.436A7.373 7.373 0 0 1 12.41 4.6z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Phabricator</title><path d="M23.18 10.018l-4.426-4.449C17.053 3.782 14.66 2.665 12 2.665S6.947 3.783 5.246 5.568L.821 10.02a2.802 2.802 0 0 0 0 3.962l4.542 4.578c1.692 1.711 4.04 2.773 6.637 2.773s4.945-1.062 6.637-2.774l4.543-4.579a2.802 2.802 0 0 0 0-3.962zM12 19.384a7.384 7.384 0 1 1 0-14.768 7.384 7.384 0 0 1 0 14.768zm3.651-7.572l.999-1.014-.447-1.028H14.78l-.456-.45-.038-1.437-1.008-.431-1.01.998h-.624l-1.047-1.006-1.022.415.035 1.406-.444.443-1.444-.014-.409 1.023 1.034 1.01.006.633-.996 1.007.44 1.031 1.428-.002.456.453.016 1.422 1.068.447.965-1.009.636.01 1.028 1.011 1.044-.423-.043-1.409.442-.44 1.43.013.423-1.03-1.03-1-.009-.629zm-3.715 1.806a1.533 1.533 0 1 1 0-3.065 1.533 1.533 0 0 1 0 3.065z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/philipshue.svg b/assets/lib/simple-icons/icons/philipshue.svg
new file mode 100644
index 00000000..0c34dba4
--- /dev/null
+++ b/assets/lib/simple-icons/icons/philipshue.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Philips Hue</title><path d="M20.672 9.6c-2.043 0-3.505 1.386-3.682 3.416h-.664c-.247 0-.395.144-.395.384 0 .24.148.384.395.384h.661c.152 2.09 1.652 3.423 3.915 3.423.944 0 1.685-.144 2.332-.453.158-.075.337-.217.292-.471a.334.334 0 0 0-.15-.242c-.104-.065-.25-.072-.422-.02a7.93 7.93 0 0 0-.352.12c-.414.146-.771.273-1.599.273-1.75 0-2.908-1.023-2.952-2.605v-.025h5.444c.313 0 .492-.164.505-.463v-.058C23.994 9.865 21.452 9.6 20.672 9.6zm2.376 3.416h-5l.004-.035c.121-1.58 1.161-2.601 2.649-2.601 1.134 0 2.347.685 2.347 2.606zM9.542 10.221c0-.335-.195-.534-.52-.534s-.52.2-.52.534v2.795h1.04zm4.29 3.817c0 1.324-.948 2.361-2.16 2.361-1.433 0-2.13-.763-2.13-2.333v-.282h-1.04v.34c0 2.046.965 3.083 2.868 3.083 1.12 0 1.943-.486 2.443-1.445l.02-.036v.861c0 .334.193.534.519.534.325 0 .52-.2.52-.534v-2.803h-1.04zm.52-4.351c-.326 0-.52.2-.52.534v2.795h1.04v-2.795c0-.335-.195-.534-.52-.534zM3.645 9.6c-1.66 0-2.31 1.072-2.471 1.4l-.135.278V7.355c0-.347-.199-.562-.52-.562-.32 0-.519.215-.519.562v5.661h1.039v-.015c0-1.249.72-2.592 2.304-2.592 1.29 0 2.001.828 2.001 2.332v.275h1.04v-.246c0-2.044-.973-3.17-2.739-3.17zM0 16.558c0 .347.199.563.52.563.32 0 .519-.216.519-.563v-2.774H0zm5.344 0c0 .347.2.563.52.563s.52-.216.52-.563v-2.774h-1.04z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/phonepe.svg b/assets/lib/simple-icons/icons/phonepe.svg
new file mode 100644
index 00000000..c981c659
--- /dev/null
+++ b/assets/lib/simple-icons/icons/phonepe.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>PhonePe</title><path d="M10.206 9.941h2.949v4.692c-.402.201-.938.268-1.34.268-1.072 0-1.609-.536-1.609-1.743V9.941zm13.47 4.816c-1.523 6.449-7.985 10.442-14.433 8.919C2.794 22.154-1.199 15.691.324 9.243 1.847 2.794 8.309-1.199 14.757.324c6.449 1.523 10.442 7.985 8.919 14.433zm-6.231-5.888a.887.887 0 0 0-.871-.871h-1.609l-3.686-4.222c-.335-.402-.871-.536-1.407-.402l-1.274.401c-.201.067-.268.335-.134.469l4.021 3.82H6.386c-.201 0-.335.134-.335.335v.67c0 .469.402.871.871.871h.938v3.217c0 2.413 1.273 3.82 3.418 3.82.67 0 1.206-.067 1.877-.335v2.145c0 .603.469 1.072 1.072 1.072h.938a.432.432 0 0 0 .402-.402V9.874h1.542c.201 0 .335-.134.335-.335v-.67z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/photobucket.svg b/assets/lib/simple-icons/icons/photobucket.svg
new file mode 100644
index 00000000..b56ff634
--- /dev/null
+++ b/assets/lib/simple-icons/icons/photobucket.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Photobucket</title><path d="M17.924 11.451c.059.629.023.85-.168 1.042-.288.288-.656.312-.969.064-.127-.1-.269-.52-.322-.951a4.842 4.842 0 0 0-1.09-2.492c-.57-.692-2.005-1.407-2.822-1.407-.652 0-1.199-.361-1.199-.791 0-.266.507-.79.764-.79.104 0 .57.071 1.035.156 2.543.47 4.532 2.625 4.771 5.169zM24 12.05c0 6.531-.008 6.731-.288 7.01-.27.27-.479.287-3.453.287h-3.165l-1.002.504c-.551.277-1.406.6-1.901.716-1.123.265-3.071.257-4.204-.016-.474-.115-1.304-.433-1.844-.707l-.981-.498H3.82c-3.057 0-3.364-.023-3.581-.263-.215-.236-.239-.938-.239-7.09 0-7.624-.054-7.23 1.006-7.329.411-.039.512-.112.553-.406.086-.625.274-.719 1.448-.719 1.213 0 1.448.121 1.448.747v.402h1.302c1.215 0 1.381-.037 2.479-.558 1.515-.718 2.274-.892 3.908-.892 1.644 0 2.409.175 3.885.891l1.155.56h3.184c3.127 0 3.188.006 3.408.319.195.278.224 1.19.224 7.042zM2.587 4.545c0 .079.194.144.431.144s.431-.065.431-.144c0-.079-.194-.144-.431-.144s-.431.065-.431.144zm2.874 13.294c0-.039-.21-.346-.467-.683-2.108-2.761-2.184-7.023-.18-10.022l.626-.936-1.802-.04c-1.204-.028-1.867.014-2.001.125-.164.136-.2 1.14-.2 5.618 0 3.484.054 5.553.149 5.731.135.253.317.278 2.012.278 1.025 0 1.863-.032 1.863-.071zm13.183-9.197c-.517-1.033-2.026-2.573-3.061-3.125-2.068-1.102-4.809-1.102-6.877 0-1.166.622-2.586 2.127-3.17 3.36a7.258 7.258 0 0 0 3.454 9.704c1.532.731 2.931.922 4.535.62 1.072-.202 2.65-.986 3.494-1.737 2.453-2.18 3.124-5.825 1.625-8.822zm3.741 3.294l-.038-5.739-1.781-.041-1.781-.04.237.328c2.419 3.354 2.581 7.219.437 10.416-.348.519-.633.967-.633.996 0 .108 3.24.044 3.415-.067.142-.089.173-1.357.144-5.853z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/photocrowd.svg b/assets/lib/simple-icons/icons/photocrowd.svg
index 86a68633..a1e968bd 100644
--- a/assets/lib/simple-icons/icons/photocrowd.svg
+++ b/assets/lib/simple-icons/icons/photocrowd.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Photocrowd icon</title><path d="M2.182 0C.977 0 0 1.058 0 2.364v19.462C0 23.026.977 24 2.182 24h19.636A2.179 2.179 0 0 0 24 21.826V2.364C24 1.058 23.023 0 21.818 0zM12 3.49a1.022 1.022 0 1 1 0 2.045 1.022 1.022 0 0 1 0-2.044zM8.326 4.498a1.022 1.022 0 1 1-.142 2.039 1.022 1.022 0 0 1 .142-2.04zm7.347 0a1.02 1.02 0 0 1 .955 1.529 1.021 1.021 0 1 1-.955-1.53zm-10.23 2.74a1.02 1.02 0 1 1 .145 2.037 1.02 1.02 0 0 1-.145-2.036zm13.113 0a1.02 1.02 0 1 1-.142 2.036 1.02 1.02 0 0 1 .142-2.035zm-7.497.116a1.021 1.021 0 1 1 .119 2.039 1.021 1.021 0 0 1-.12-2.04zm3.687.88a1.021 1.021 0 1 1 .001 2.042 1.021 1.021 0 0 1 0-2.043zm-6.308 1.864a1.02 1.02 0 1 1-.119 2.04 1.02 1.02 0 0 1 .12-2.04zm3.561.88a1.023 1.023 0 1 1-.001 2.047 1.023 1.023 0 0 1 .001-2.047zm-7.488.002a1.022 1.022 0 1 1-.001 2.044 1.022 1.022 0 0 1 0-2.044zm14.977 0a1.02 1.02 0 1 1-.001 2.042 1.02 1.02 0 0 1 0-2.042zm-3.793.881a1.02 1.02 0 1 1-.119 2.038 1.02 1.02 0 0 1 .12-2.038zm-6.442 1.866a1.021 1.021 0 1 1-.001 2.042 1.021 1.021 0 0 1 0-2.042zm3.568.883a1.02 1.02 0 1 1 .12 2.038 1.02 1.02 0 0 1-.12-2.038zm-7.235.116a1.02 1.02 0 0 1 .44 1.904 1.022 1.022 0 1 1-.44-1.904zm12.827 0a1.022 1.022 0 1 1 .142 2.038 1.022 1.022 0 0 1-.142-2.038zm-10.229 2.74a1.021 1.021 0 1 1 .142 2.038 1.021 1.021 0 0 1-.142-2.038zm7.63 0a1.02 1.02 0 0 1 .44 1.904 1.022 1.022 0 1 1-.44-1.904zM12 18.463a1.022 1.022 0 1 1 0 2.045 1.022 1.022 0 0 1 0-2.045z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Photocrowd</title><path d="M2.182 0C.977 0 0 1.058 0 2.364v19.462C0 23.026.977 24 2.182 24h19.636A2.179 2.179 0 0 0 24 21.826V2.364C24 1.058 23.023 0 21.818 0zM12 3.49a1.022 1.022 0 1 1 0 2.045 1.022 1.022 0 0 1 0-2.044zM8.326 4.498a1.022 1.022 0 1 1-.142 2.039 1.022 1.022 0 0 1 .142-2.04zm7.347 0a1.02 1.02 0 0 1 .955 1.529 1.021 1.021 0 1 1-.955-1.53zm-10.23 2.74a1.02 1.02 0 1 1 .145 2.037 1.02 1.02 0 0 1-.145-2.036zm13.113 0a1.02 1.02 0 1 1-.142 2.036 1.02 1.02 0 0 1 .142-2.035zm-7.497.116a1.021 1.021 0 1 1 .119 2.039 1.021 1.021 0 0 1-.12-2.04zm3.687.88a1.021 1.021 0 1 1 .001 2.042 1.021 1.021 0 0 1 0-2.043zm-6.308 1.864a1.02 1.02 0 1 1-.119 2.04 1.02 1.02 0 0 1 .12-2.04zm3.561.88a1.023 1.023 0 1 1-.001 2.047 1.023 1.023 0 0 1 .001-2.047zm-7.488.002a1.022 1.022 0 1 1-.001 2.044 1.022 1.022 0 0 1 0-2.044zm14.977 0a1.02 1.02 0 1 1-.001 2.042 1.02 1.02 0 0 1 0-2.042zm-3.793.881a1.02 1.02 0 1 1-.119 2.038 1.02 1.02 0 0 1 .12-2.038zm-6.442 1.866a1.021 1.021 0 1 1-.001 2.042 1.021 1.021 0 0 1 0-2.042zm3.568.883a1.02 1.02 0 1 1 .12 2.038 1.02 1.02 0 0 1-.12-2.038zm-7.235.116a1.02 1.02 0 0 1 .44 1.904 1.022 1.022 0 1 1-.44-1.904zm12.827 0a1.022 1.022 0 1 1 .142 2.038 1.022 1.022 0 0 1-.142-2.038zm-10.229 2.74a1.021 1.021 0 1 1 .142 2.038 1.021 1.021 0 0 1-.142-2.038zm7.63 0a1.02 1.02 0 0 1 .44 1.904 1.022 1.022 0 1 1-.44-1.904zM12 18.463a1.022 1.022 0 1 1 0 2.045 1.022 1.022 0 0 1 0-2.045z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/photopea.svg b/assets/lib/simple-icons/icons/photopea.svg
new file mode 100644
index 00000000..a361a501
--- /dev/null
+++ b/assets/lib/simple-icons/icons/photopea.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Photopea</title><path d="M20.098 0A3.899 3.899 0 0 1 24 3.903v16.194A3.899 3.899 0 0 1 20.098 24H6.393l-.051-10.34v-.074c0-3.92 3.112-7.09 6.963-7.09 2.31 0 4.177 1.902 4.177 4.254 0 2.352-1.867 4.254-4.177 4.254-.77 0-1.393-.634-1.393-1.418 0-.783.623-1.418 1.393-1.418.769 0 1.392-.634 1.392-1.418 0-.784-.623-1.418-1.392-1.418-2.31 0-4.178 1.9-4.178 4.253 0 2.352 1.868 4.254 4.178 4.254 3.85 0 6.962-3.169 6.962-7.09 0-3.92-3.112-7.089-6.962-7.089-5.39 0-9.75 4.436-9.75 9.925v.086l.023 10.315A3.899 3.899 0 0 1 0 20.097V3.903A3.899 3.899 0 0 1 3.902 0z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/php.svg b/assets/lib/simple-icons/icons/php.svg
index 4201eece..a08156af 100644
--- a/assets/lib/simple-icons/icons/php.svg
+++ b/assets/lib/simple-icons/icons/php.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>PHP icon</title><path d="M7.01 10.207h-.944l-.515 2.648h.838c.556 0 .97-.105 1.242-.314.272-.21.455-.559.55-1.049.092-.47.05-.802-.124-.995-.175-.193-.523-.29-1.047-.29zM12 5.688C5.373 5.688 0 8.514 0 12s5.373 6.313 12 6.313S24 15.486 24 12c0-3.486-5.373-6.312-12-6.312zm-3.26 7.451c-.261.25-.575.438-.917.551-.336.108-.765.164-1.285.164H5.357l-.327 1.681H3.652l1.23-6.326h2.65c.797 0 1.378.209 1.744.628.366.418.476 1.002.33 1.752a2.836 2.836 0 0 1-.305.847c-.143.255-.33.49-.561.703zm4.024.715l.543-2.799c.063-.318.039-.536-.068-.651-.107-.116-.336-.174-.687-.174H11.46l-.704 3.625H9.388l1.23-6.327h1.367l-.327 1.682h1.218c.767 0 1.295.134 1.586.401s.378.7.263 1.299l-.572 2.944h-1.389zm7.597-2.265a2.782 2.782 0 0 1-.305.847c-.143.255-.33.49-.561.703a2.44 2.44 0 0 1-.917.551c-.336.108-.765.164-1.286.164h-1.18l-.327 1.682h-1.378l1.23-6.326h2.649c.797 0 1.378.209 1.744.628.366.417.477 1.001.331 1.751zM17.766 10.207h-.943l-.516 2.648h.838c.557 0 .971-.105 1.242-.314.272-.21.455-.559.551-1.049.092-.47.049-.802-.125-.995s-.524-.29-1.047-.29z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>PHP</title><path d="M7.01 10.207h-.944l-.515 2.648h.838c.556 0 .97-.105 1.242-.314.272-.21.455-.559.55-1.049.092-.47.05-.802-.124-.995-.175-.193-.523-.29-1.047-.29zM12 5.688C5.373 5.688 0 8.514 0 12s5.373 6.313 12 6.313S24 15.486 24 12c0-3.486-5.373-6.312-12-6.312zm-3.26 7.451c-.261.25-.575.438-.917.551-.336.108-.765.164-1.285.164H5.357l-.327 1.681H3.652l1.23-6.326h2.65c.797 0 1.378.209 1.744.628.366.418.476 1.002.33 1.752a2.836 2.836 0 0 1-.305.847c-.143.255-.33.49-.561.703zm4.024.715l.543-2.799c.063-.318.039-.536-.068-.651-.107-.116-.336-.174-.687-.174H11.46l-.704 3.625H9.388l1.23-6.327h1.367l-.327 1.682h1.218c.767 0 1.295.134 1.586.401s.378.7.263 1.299l-.572 2.944h-1.389zm7.597-2.265a2.782 2.782 0 0 1-.305.847c-.143.255-.33.49-.561.703a2.44 2.44 0 0 1-.917.551c-.336.108-.765.164-1.286.164h-1.18l-.327 1.682h-1.378l1.23-6.326h2.649c.797 0 1.378.209 1.744.628.366.417.477 1.001.331 1.751zM17.766 10.207h-.943l-.516 2.648h.838c.557 0 .971-.105 1.242-.314.272-.21.455-.559.551-1.049.092-.47.049-.802-.125-.995s-.524-.29-1.047-.29z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/phpmyadmin.svg b/assets/lib/simple-icons/icons/phpmyadmin.svg
new file mode 100644
index 00000000..9b23e406
--- /dev/null
+++ b/assets/lib/simple-icons/icons/phpmyadmin.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>phpMyAdmin</title><path d="M5.463 3.476C6.69 5.225 7.497 7.399 7.68 9.798a12.9 12.9 0 0 1-.672 5.254 4.29 4.29 0 0 1 2.969-1.523c.05-.004.099-.006.148-.008.08-.491.47-3.45-.977-6.68-1.068-2.386-3-3.16-3.685-3.365Zm1.777.037s2.406 1.066 3.326 5.547c.607 2.955.049 4.836-.402 5.773a7.347 7.347 0 0 1 4.506-1.994c.86-.065 1.695.02 2.482.233-.1-.741-.593-3.414-2.732-5.92-3.263-3.823-7.18-3.64-7.18-3.64Zm14.817 9.701-17.92 3.049a2.284 2.284 0 0 1 1.535 2.254 2.31 2.31 0 0 1-.106.61c.055-.027 2.689-1.275 6.342-2.034 3.238-.673 5.723-.36 6.285-.273a6.46 6.46 0 0 1 3.864-3.606zm-6.213 4.078c-2.318 0-4.641.495-6.614 1.166-2.868.976-2.951 1.348-5.55 1.043C1.844 19.286 0 18.386 0 18.386s2.406 1.97 4.914 2.127c1.986.125 3.505-.822 5.315-1.414 2.661-.871 4.511-.97 6.253-.975C19.361 18.116 24 19.353 24 19.353s-2.11-1.044-5.033-1.72a13.885 13.885 0 0 0-3.123-.34Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/phpstorm.svg b/assets/lib/simple-icons/icons/phpstorm.svg
new file mode 100644
index 00000000..f6bf42ed
--- /dev/null
+++ b/assets/lib/simple-icons/icons/phpstorm.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>PhpStorm</title><path d="M7.833 6.611v-.055c0-1-.667-1.5-1.778-1.5H4.389v3.056h1.722c1.111-.001 1.722-.668 1.722-1.501zM0 0v24h24V0H0zm2.167 3.111h4.056c2.389 0 3.833 1.389 3.833 3.445v.055c0 2.333-1.778 3.5-4.056 3.5H4.333v3H2.167v-10zM11.278 21h-9v-1.5h9V21zM18.5 10.222c0 2-1.5 3.111-3.667 3.111-1.5-.056-3-.611-4.222-1.667l1.278-1.556c.89.722 1.833 1.222 3 1.222.889 0 1.444-.333 1.444-.944v-.056c0-.555-.333-.833-2-1.277C12.333 8.555 11 8 11 6v-.056c0-1.833 1.444-3 3.5-3 1.444 0 2.723.444 3.723 1.278l-1.167 1.667c-.889-.611-1.777-1-2.611-1-.833 0-1.278.389-1.278.889v.056c0 .667.445.889 2.167 1.333 2 .556 3.167 1.278 3.167 3v.055z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/pi-hole.svg b/assets/lib/simple-icons/icons/pi-hole.svg
deleted file mode 100644
index cd4691cf..00000000
--- a/assets/lib/simple-icons/icons/pi-hole.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Pi-hole icon</title><path d="M9.375,8.782l-4.442,4.44c-1.451,1.45-1.451,3.803,0,5.253l4.442,4.439c1.45,1.449,3.799,1.449,5.249,0l4.442-4.439c1.451-1.45,1.452-3.803,0-5.253l-4.442-4.44C13.175,7.333,10.825,7.333,9.375,8.782z M10.595,7.38C7.597,7.06,4.577,4.794,4.338,0c4.652,0,7.14,2.754,7.38,7.118c0.88-5.234,5.003-4.621,5.003-4.621c0.196,2.966-2.24,4.765-5.003,4.914c-0.776-1.636-5.426-5.648-5.426-5.648C6.287,1.759,6.278,1.759,6.274,1.765C6.271,1.768,6.27,1.774,6.272,1.778C6.272,1.778,10.759,5.687,10.595,7.38 M11.994,17.684c-2.231,0.165-3.212,1.738-3.148,3.274c-0.003-0.036-0.007-0.07-0.009-0.107c-0.133-1.848,1.327-3.21,1.327-5.005c-0.172-2.322-1.869-3.287-3.462-3.133c0.101-0.012,0.204-0.022,0.313-0.028c1.848-0.133,3.212,1.327,5.005,1.327c2.082-0.157,3.074-1.537,3.146-2.969c0.022,1.75-1.331,3.079-1.331,4.81c0.165,2.23,1.736,3.21,3.271,3.148c-0.036,0.003-0.07,0.007-0.107,0.009C15.151,19.144,13.787,17.684,11.994,17.684z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/picardsurgeles.svg b/assets/lib/simple-icons/icons/picardsurgeles.svg
new file mode 100644
index 00000000..9166edb8
--- /dev/null
+++ b/assets/lib/simple-icons/icons/picardsurgeles.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Picard Surgel&#233;s</title><path d="M10.129 0 8.72.822c.08.149.501.88 1.337 1.368.007.003.575.35 1.172.472l.01.002V4.53l-.02-.001a5.286 5.286 0 0 1-2.248-.861c-.028-.016-1.112-.62-1.846-1.926l-1.413.829c.12.21.851 1.569.731 3.198 0 .008-.043.924-.385 1.745l-.017.037-.033-.02-1.552-.902-.027-.015.012-.029c.003-.006.257-.654.137-1.772-.002-.005-.158-.8-.463-1.321l-1.42.822c.08.15.416.836.23 1.607-.002.01-.223 1.186-1.449 1.636-.01.004-.3.125-.714.138v1.636c.168-.003.96-.034 1.692-.412a4.275 4.275 0 0 0 1.143-.85l.02-.019.022.014 1.559.895.035.02-.025.031c-.008.01-.73.922-1.655 1.414-.008.005-1.064.659-2.363.736l-.428.014v1.635a6.2 6.2 0 0 1 1.262.172c.045.007 1.606.282 2.89 1.675l.286.34.026.033-.036.022-1.572.901-.028.015-.017-.025c-.004-.005-.378-.503-1.294-.952-.007-.003-.792-.32-1.517-.32v1.64c.213.002 1.39.067 2 1.3.005.01.511 1.01-.07 2.083l1.417.814c.089-.15.52-.933.506-1.925 0-.008-.045-.85-.181-1.166l-.011-.029.026-.016 1.56-.91.032-.019.017.036c.003.007.31.71.393 1.737.002.011.119 1.172-.4 2.499-.012.026-.249.558-.346.723l1.42.827c.09-.18.584-1.083 1.72-1.855a5.628 5.628 0 0 1 2.373-.938l.02-.003v1.868l-.011.001c-.006.001-.574.078-1.437.65-.005.005-.732.548-1.07 1.19l1.415.823c.103-.173.686-1.058 1.865-1.103 1.18.045 1.763.93 1.865 1.103l1.415-.822c-.338-.643-1.064-1.186-1.07-1.19-.863-.573-1.432-.65-1.438-.65l-.01-.002V19.47l.02.002c1.39.2 2.365.932 2.373.938 1.136.772 1.63 1.674 1.721 1.855l1.42-.827a12.2 12.2 0 0 1-.346-.723c-.52-1.327-.402-2.488-.401-2.499.083-1.027.39-1.73.394-1.737l.016-.036.033.02 1.56.91.026.015-.013.029c-.136.315-.181 1.158-.181 1.165a3.913 3.913 0 0 0 .507 1.926l1.416-.814c-.581-1.072-.075-2.074-.07-2.083a2.278 2.278 0 0 1 2.001-1.3v-1.64c-.725 0-1.51.317-1.517.32-.916.449-1.29.947-1.294.952l-.018.025-.026-.015-1.573-.901-.036-.022.026-.032.286-.341c1.284-1.393 2.844-1.668 2.89-1.676a6.21 6.21 0 0 1 1.262-.17v-1.636l-.428-.013c-1.299-.077-2.355-.731-2.363-.736-.924-.493-1.647-1.405-1.655-1.414l-.025-.03.036-.022 1.558-.894.023-.014.018.02a4.27 4.27 0 0 0 1.144.85c.732.377 1.524.408 1.692.41V7.696a2.173 2.173 0 0 1-.714-.139c-1.226-.449-1.448-1.625-1.45-1.635-.186-.771.15-1.458.232-1.607l-1.42-.822c-.305.521-.462 1.316-.463 1.321-.12 1.118.134 1.766.136 1.772l.012.029-.027.015-1.552.902-.034.02-.015-.037c-.343-.821-.386-1.737-.386-1.745-.12-1.63.611-2.988.731-3.198l-1.413-.829c-.734 1.306-1.818 1.91-1.845 1.926a5.286 5.286 0 0 1-2.25.86l-.018.003V2.664l.01-.002c.596-.123 1.164-.469 1.17-.472A3.726 3.726 0 0 0 15.28.822L13.871 0c-.458.75-1.023.91-1.06.92a2.168 2.168 0 0 1-.811.181 2.164 2.164 0 0 1-.81-.181c-.038-.01-.603-.17-1.06-.92zM8.082 5.058l.056.037c.008.005.828.54 1.696.793.009.003.73.25 1.388.304l.016.001v.466h-.002L7.872 8.612l-.02-.012-.352-.2-.028-.016.013-.028c.004-.009.372-.878.454-1.442v-.006c.003-.006.172-.539.144-1.784zm7.835 0v.066c-.029 1.246.14 1.78.143 1.785v.006c.081.564.45 1.433.454 1.442l.013.028-.028.015-.352.2-.017.01-3.368-1.95v-.467h.016c.657-.056 1.38-.302 1.388-.305.869-.252 1.688-.788 1.696-.793zm-3.916 3.04 2.47 1.434.052.03-.052.031L12 11.033l-2.47-1.44-.053-.03.053-.03zM6.657 9.814l.37.211.018.01v.021l.012 3.9v.02l-.019.01-.355.196-.026.015-.018-.026c-.97-1.335-2.471-2.143-2.486-2.151l-.061-.034.062-.03c1.52-.723 2.475-2.102 2.485-2.116zm10.686 0 .019.026c.01.014.964 1.393 2.484 2.116l.062.03-.06.034c-.015.008-1.518.816-2.487 2.151l-.019.026-.026-.015-.354-.195-.018-.01v-.021l.011-3.9v-.02l.017-.01zm-8.626 1.232 2.503 1.446v2.886l-2.503-1.434zm6.566 0v2.898l-2.503 1.434v-2.886zM7.869 15.4l.018.01 3.35 1.943.001.001v.454h-.018c-.097 0-.582.09-.824.139a8.105 8.105 0 0 0-2.256.95l-.042.028-.01-.05a4.2 4.2 0 0 1 0-.423c.021-1.322-.588-2.8-.594-2.814l-.013-.03.03-.014.341-.185zm8.26 0 .018.009.343.185.029.015-.013.029c-.006.015-.615 1.492-.593 2.814.001.036.012.361 0 .422l-.012.05-.042-.028c-.01-.006-.95-.622-2.254-.95-.243-.048-.727-.138-.825-.138h-.018v-.454l.001-.001 3.35-1.943z"/></svg>
diff --git a/assets/lib/simple-icons/icons/picarto-dot-tv.svg b/assets/lib/simple-icons/icons/picarto-dot-tv.svg
deleted file mode 100644
index 37479f7f..00000000
--- a/assets/lib/simple-icons/icons/picarto-dot-tv.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Picarto.TV icon</title><path d="M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12c6.628 0 12-5.373 12-12S18.628 0 12 0zM7.08 4.182h2.781c.233 0 .42.21.42.47v14.696c0 .26-.187.47-.42.47h-2.78c-.233 0-.42-.21-.42-.47V4.652c0-.26.187-.47.42-.47zm4.664 0a.624.624 0 0 1 .326.091c.355.209 7.451 4.42 8.057 4.78a.604.604 0 0 1 0 1.039c-.436.264-7.558 4.495-8.074 4.789a.577.577 0 0 1-.873-.512v-1.812c0-1.712 2.962-2.201 3.398-2.465a.604.604 0 0 0 0-1.04c-.605-.36-3.398-.746-3.398-2.452V4.79c0-.334.251-.605.564-.61z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/picartodottv.svg b/assets/lib/simple-icons/icons/picartodottv.svg
new file mode 100644
index 00000000..ac651164
--- /dev/null
+++ b/assets/lib/simple-icons/icons/picartodottv.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Picarto.TV</title><path d="M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12c6.628 0 12-5.373 12-12S18.628 0 12 0zM7.08 4.182h2.781c.233 0 .42.21.42.47v14.696c0 .26-.187.47-.42.47h-2.78c-.233 0-.42-.21-.42-.47V4.652c0-.26.187-.47.42-.47zm4.664 0a.624.624 0 0 1 .326.091c.355.209 7.451 4.42 8.057 4.78a.604.604 0 0 1 0 1.039c-.436.264-7.558 4.495-8.074 4.789a.577.577 0 0 1-.873-.512v-1.812c0-1.712 2.962-2.201 3.398-2.465a.604.604 0 0 0 0-1.04c-.605-.36-3.398-.746-3.398-2.452V4.79c0-.334.251-.605.564-.61z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/picnic.svg b/assets/lib/simple-icons/icons/picnic.svg
new file mode 100644
index 00000000..8ad8b8a5
--- /dev/null
+++ b/assets/lib/simple-icons/icons/picnic.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Picnic</title><path d="M0 0v24h24V0zm17.492 4.481c.851 0 1.635.279 2.261.749.037.029.068.073.027.158-.054.12-.183.413-.416.757a3.834 3.834 0 0 1-.424.555c-.12.117-.12.103-.27.012a2.294 2.294 0 0 0-1.155-.324c-.934 0-1.712.624-1.712 1.655l.005.1c.066 1.034.888 1.603 1.817 1.547a2.27 2.27 0 0 0 .73-.175c.143-.062.314-.153.455-.242.122-.076.148-.116.27-.007.12.114.252.287.395.502.238.345.398.661.458.776.06.1.022.13-.013.16-.412.355-.89.617-1.44.764-.309.09-.64.138-.988.138a4.73 4.73 0 0 1-.288-.009l-.091-.007c-.864-.058-1.64-.371-2.226-.916-.032-.027-.064-.06-.09-.084-.616-.605-.995-1.468-.995-2.547 0-2.26 1.653-3.562 3.69-3.562zm-5.567.108h.15c.752 0 .785.043.837.082a.116.116 0 0 1 .038.073c.037.207.052 1.437.048 2.658.004 1.221-.011 2.438-.048 2.645 0 0-.002.045-.038.075-.052.041-.085.08-.838.083h-.149c-.754-.003-.788-.042-.833-.083-.043-.03-.044-.075-.044-.075-.035-.207-.051-1.424-.047-2.645-.004-1.221.012-2.451.047-2.658 0 0 .001-.04.044-.073.045-.04.079-.082.833-.082zm-5.388.001c2.328.047 3.63.92 3.657 2.908v.091c0 1.895-1.357 2.909-3.657 2.909a8.94 8.94 0 0 1-.44-.012c-.008.419-.017.738-.03.817 0 0-.007.044-.043.076-.05.039-.083.079-.836.082h-.149c-.754-.003-.786-.043-.835-.082-.04-.032-.042-.076-.042-.076-.048-1.232-.045-2.183-.045-3.346-.002-1.223.009-2.991.045-3.181.017-.094.082-.113.155-.125.307-.038 1.661-.072 2.22-.06zm-.175 1.85a4.57 4.57 0 0 0-.249.014v2.162c.154.012.295.025.587.019.951-.016 1.502-.343 1.513-1.083v-.03C8.203 6.781 7.65 6.455 6.7 6.44a5.676 5.676 0 0 0-.338 0zM11.999 11c.891 0 1.337 1.077.707 1.707-.63.63-1.707.184-1.707-.707 0-.55.451-1 1-1zm5.493 1.392a3.76 3.76 0 0 1 2.261.748c.037.028.068.076.027.161-.054.117-.183.409-.416.757-.135.21-.248.36-.424.554-.12.118-.12.104-.27.012a2.263 2.263 0 0 0-1.155-.323c-.934 0-1.712.622-1.712 1.654l.005.1c.066 1.032.888 1.607 1.817 1.544a2.23 2.23 0 0 0 .73-.173c.143-.06.314-.153.455-.24.122-.077.148-.118.27-.007.12.112.252.287.395.5.238.344.398.66.458.776.06.097.022.129-.013.161-.412.353-.89.613-1.44.764a3.57 3.57 0 0 1-1.276.13l-.091-.007c-.864-.06-1.64-.373-2.226-.916l-.09-.088c-.616-.603-.995-1.465-.995-2.544 0-2.26 1.653-3.563 3.69-3.563zm-12.453.148h.149c.753 0 .786.045.836.085.009.009.02.023.03.031.456.833.806 1.402 1.057 1.826.478.806.674 1.164.9 1.556a89.525 89.525 0 0 1 .048-3.337s.004-.046.042-.076c.051-.04.084-.084.836-.085h.15c.751 0 .781.045.831.085.042.03.043.076.043.076.035.202.05 2.093.048 3.312.002 1.222-.013 3.022-.048 3.228 0 0 0 .043-.043.074-.05.04-.08.084-.831.086h-.15c-.752-.002-.785-.047-.836-.086a.076.076 0 0 1-.026-.029c-.024-.03-1.9-3.123-1.962-3.225.003 1.22-.013 2.976-.047 3.18 0 0-.007.043-.042.074-.05.04-.083.084-.836.086h-.149c-.754-.002-.786-.047-.835-.086-.04-.031-.042-.074-.042-.074-.034-.206-.046-2.01-.045-3.232-.001-1.221.011-3.106.045-3.308 0 0 .001-.046.042-.076.05-.04.081-.084.835-.085zm6.886 1.256h.149c.753 0 .786.041.838.082.021.02.035.045.038.074.037.205.052 1.424.048 2.644.004 1.222-.011 2.439-.048 2.645 0 0-.002.043-.038.074-.052.04-.085.084-.838.086h-.149c-.754-.002-.788-.047-.833-.086a.102.102 0 0 1-.044-.074c-.035-.206-.051-1.423-.047-2.645-.004-1.22.012-2.44.047-2.644 0 0 .001-.042.044-.074.045-.04.079-.082.833-.082Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/picpay.svg b/assets/lib/simple-icons/icons/picpay.svg
new file mode 100644
index 00000000..fc54ac52
--- /dev/null
+++ b/assets/lib/simple-icons/icons/picpay.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>PicPay</title><path d="M16.463 1.587v7.537H24V1.587zm1.256 1.256h5.025v5.025h-5.025zm1.256 1.256v2.513h2.513V4.099zM3.77 5.355V8.53h3.376c2.142 0 3.358 1.04 3.358 2.939 0 1.947-1.216 3.011-3.358 3.011H3.769V8.53H0v13.884h3.769v-4.76h3.57c4.333 0 6.815-2.352 6.815-6.32 0-3.771-2.482-5.978-6.814-5.978Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/pihole.svg b/assets/lib/simple-icons/icons/pihole.svg
new file mode 100644
index 00000000..06814f5b
--- /dev/null
+++ b/assets/lib/simple-icons/icons/pihole.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Pi-hole</title><path d="M4.344 0c.238 4.792 3.256 7.056 6.252 7.376.165-1.692-4.319-5.6-4.319-5.6-.008-.011.009-.025.019-.014 0 0 4.648 4.01 5.423 5.645 2.762-.15 5.196-1.947 5-4.912 0 0-4.12-.613-5 4.618C11.48 2.753 8.993 0 4.344 0zM12 7.682v.002a3.68 3.68 0 0 0-2.591 1.077L4.94 13.227a3.683 3.683 0 0 0-.86 1.356 3.31 3.31 0 0 0-.237 1.255A3.681 3.681 0 0 0 4.92 18.45l4.464 4.466a3.69 3.69 0 0 0 2.251 1.06l.002.001c.093.01.187.015.28.017l-.1-.008c.06.003.117.009.177.009l-.077-.001L12 24l-.004-.005a3.68 3.68 0 0 0 2.61-1.077l4.469-4.465a3.683 3.683 0 0 0 1.006-1.888l.012-.063a3.682 3.682 0 0 0 .057-.541l.003-.061c0-.017.003-.05.004-.06h-.002a3.683 3.683 0 0 0-1.077-2.607l-4.466-4.468a3.694 3.694 0 0 0-1.564-.927l-.07-.02a3.43 3.43 0 0 0-.946-.133L12 7.682zm3.165 3.357c.023 1.748-1.33 3.078-1.33 4.806.164 2.227 1.733 3.207 3.266 3.146-.035.003-.068.007-.104.009-1.847.135-3.209-1.326-5.002-1.326-2.23.164-3.21 1.736-3.147 3.27l-.008-.104c-.133-1.847 1.328-3.21 1.328-5.002-.173-2.32-1.867-3.284-3.46-3.132.1-.011.203-.021.31-.027 1.847-.133 3.209 1.328 5.002 1.328 2.082-.155 3.074-1.536 3.145-2.968zM4.344 0c.238 4.792 3.256 7.056 6.252 7.376.165-1.692-4.319-5.6-4.319-5.6-.008-.011.009-.025.019-.014 0 0 4.648 4.01 5.423 5.645 2.762-.15 5.196-1.947 5-4.912 0 0-4.12-.613-5 4.618C11.48 2.753 8.993 0 4.344 0zM12 7.682v.002a3.68 3.68 0 0 0-2.591 1.077L4.94 13.227a3.683 3.683 0 0 0-.86 1.356 3.31 3.31 0 0 0-.237 1.255A3.681 3.681 0 0 0 4.92 18.45l4.464 4.466a3.69 3.69 0 0 0 2.251 1.06l.002.001c.093.01.187.015.28.017l-.1-.008c.06.003.117.009.177.009l-.077-.001L12 24l-.004-.005a3.68 3.68 0 0 0 2.61-1.077l4.469-4.465a3.683 3.683 0 0 0 1.006-1.888l.012-.063a3.682 3.682 0 0 0 .057-.541l.003-.061c0-.017.003-.05.004-.06h-.002a3.683 3.683 0 0 0-1.077-2.607l-4.466-4.468a3.694 3.694 0 0 0-1.564-.927l-.07-.02a3.43 3.43 0 0 0-.946-.133L12 7.682zm3.165 3.357c.023 1.748-1.33 3.078-1.33 4.806.164 2.227 1.733 3.207 3.266 3.146-.035.003-.068.007-.104.009-1.847.135-3.209-1.326-5.002-1.326-2.23.164-3.21 1.736-3.147 3.27l-.008-.104c-.133-1.847 1.328-3.21 1.328-5.002-.173-2.32-1.867-3.284-3.46-3.132.1-.011.203-.021.31-.027 1.847-.133 3.209 1.328 5.002 1.328 2.082-.155 3.074-1.536 3.145-2.968z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/pimcore.svg b/assets/lib/simple-icons/icons/pimcore.svg
new file mode 100644
index 00000000..5bc915f4
--- /dev/null
+++ b/assets/lib/simple-icons/icons/pimcore.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Pimcore</title><path d="M24 10.579c0 .262-.212.474-.474.474H22.19c-.047 0-.084.038-.084.084v.547H24v.158c0 .262-.212.474-.474.474h-1.421v.547c0 .046.038.084.084.084H24v.158c0 .261-.212.474-.474.474h-1.579a.4737.4737 0 01-.474-.474v-2.211c0-.261.212-.474.474-.474H24v.159m-5.589.474a.095.095 0 00-.095.095V12h1.421c.27 0 .487-.227.473-.5-.014-.253-.228-.448-.481-.448h-1.318m2.431.46c.005.44-.246.821-.614 1.004l.614 1.063h-.547c-.113 0-.217-.06-.273-.158l-.456-.789h-1.25v.474c0 .262-.212.474-.474.474h-.158v-2.684c0-.262.212-.474.474-.474h1.549c.61-.001 1.128.48 1.135 1.09m-5.368 1.435c.522 0 .947-.425.947-.947s-.425-.947-.947-.947c-.329 0-.619.169-.789.424l-.348.523.345.52c.17.257.461.427.792.427m0-2.526c.872 0 1.579.707 1.579 1.579s-.707 1.579-1.579 1.579c-.55 0-1.034-.281-1.316-.707l-.2-.3-.43.648c-.396.597-1.074.991-1.844.991-1.221 0-2.211-.99-2.211-2.211 0-1.221.99-2.211 2.211-2.211.767 0 1.442.39 1.839.983l.056.084-.379.573-.207-.313c-.284-.419-.764-.695-1.308-.695-.871 0-1.579.708-1.579 1.579s.708 1.579 1.579 1.579c.549 0 1.033-.281 1.316-.707l1.156-1.742c.282-.427.766-.709 1.317-.709m-7.393.13l-1.067 1.067a.0948.0948 0 01-.134 0l-1.065-1.065a.4468.4468 0 00-.763.316v2.711h.158c.261 0 .474-.212.474-.474v-1.69c0-.037.045-.056.072-.03l.856.856c.185.185.485.185.67 0l.856-.856a.0422.0422 0 01.072.03v2.163h.158c.261 0 .474-.212.474-.474v-2.242c0-.244-.198-.442-.442-.442h-.007c-.117 0-.229.047-.312.13m-4.134 3.028c.262 0 .474-.212.474-.474v-2.684h-.158c-.262 0-.474.212-.474.474v2.684h.158M2.039 12c.255 0 .475-.195.487-.45.013-.272-.204-.498-.473-.498H.726c-.052 0-.095.043-.095.095V12h1.408m-.015-1.579c.619 0 1.146.507 1.134 1.126-.011.601-.502 1.084-1.105 1.084H.632v.474c0 .261-.212.474-.474.474H0v-2.684c0-.262.212-.474.474-.474h1.55"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/pinboard.svg b/assets/lib/simple-icons/icons/pinboard.svg
index ea05b9f7..4a2e55d7 100644
--- a/assets/lib/simple-icons/icons/pinboard.svg
+++ b/assets/lib/simple-icons/icons/pinboard.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Pinboard icon</title><path d="M13.352 14.585l-4.509 4.614.72-4.062L3.428 7.57 0 7.753 7.58 0v2.953l7.214 6.646 4.513-1.105-4.689 4.982L24 24l-10.648-9.415z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Pinboard</title><path d="M13.352 14.585l-4.509 4.614.72-4.062L3.428 7.57 0 7.753 7.58 0v2.953l7.214 6.646 4.513-1.105-4.689 4.982L24 24l-10.648-9.415z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/pingdom.svg b/assets/lib/simple-icons/icons/pingdom.svg
index a45fc526..747cbe14 100644
--- a/assets/lib/simple-icons/icons/pingdom.svg
+++ b/assets/lib/simple-icons/icons/pingdom.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Pingdom icon</title><path d="M11.96 17.804l7.959-3.396-7.049 7.241c-.124-1.315-.432-2.61-.91-3.844v-.001zM24 11.118c-5.101-.236-10.208.414-15.087 1.92 1.024 1.073 1.881 2.292 2.535 3.621 4.042-2.25 9.646-5.123 12.552-5.531v-.015.005zm-12.574.275l.207-.06c1.538-.459 3.049-1.015 4.523-1.656 1.492-.585 2.896-1.38 4.159-2.367 1.345-1.069 2.355-2.499 2.915-4.122.12-.267.211-.549.267-.837-2.024 2.76-10.041 3.048-10.041 3.048l1.89-1.734C9.84 3.684 4.47 5.424 0 8.645c3.03.322 5.877 1.596 8.139 3.634 1.086-.336 2.196-.576 3.286-.879v-.006l.001-.001z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Pingdom</title><path d="M11.96 17.804l7.959-3.396-7.049 7.241c-.124-1.315-.432-2.61-.91-3.844v-.001zM24 11.118c-5.101-.236-10.208.414-15.087 1.92 1.024 1.073 1.881 2.292 2.535 3.621 4.042-2.25 9.646-5.123 12.552-5.531v-.015.005zm-12.574.275l.207-.06c1.538-.459 3.049-1.015 4.523-1.656 1.492-.585 2.896-1.38 4.159-2.367 1.345-1.069 2.355-2.499 2.915-4.122.12-.267.211-.549.267-.837-2.024 2.76-10.041 3.048-10.041 3.048l1.89-1.734C9.84 3.684 4.47 5.424 0 8.645c3.03.322 5.877 1.596 8.139 3.634 1.086-.336 2.196-.576 3.286-.879v-.006l.001-.001z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/pingup.svg b/assets/lib/simple-icons/icons/pingup.svg
deleted file mode 100644
index 8828f5c4..00000000
--- a/assets/lib/simple-icons/icons/pingup.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Pingup icon</title><path d="M13.667 0H1.721v24h7.536V9.717h-2.76c-.504 0-.65-.314-.32-.698l4.324-5.044c.327-.384.867-.384 1.195 0l4.324 5.044c.314.384.18.698-.33.698h-2.759v6.676h.73c6.225 0 8.617-4.309 8.617-8.481C22.291 3.906 19.666 0 13.667 0"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/pinterest.svg b/assets/lib/simple-icons/icons/pinterest.svg
index ad07407d..2ce115c6 100644
--- a/assets/lib/simple-icons/icons/pinterest.svg
+++ b/assets/lib/simple-icons/icons/pinterest.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Pinterest icon</title><path d="M12.017 0C5.396 0 .029 5.367.029 11.987c0 5.079 3.158 9.417 7.618 11.162-.105-.949-.199-2.403.041-3.439.219-.937 1.406-5.957 1.406-5.957s-.359-.72-.359-1.781c0-1.663.967-2.911 2.168-2.911 1.024 0 1.518.769 1.518 1.688 0 1.029-.653 2.567-.992 3.992-.285 1.193.6 2.165 1.775 2.165 2.128 0 3.768-2.245 3.768-5.487 0-2.861-2.063-4.869-5.008-4.869-3.41 0-5.409 2.562-5.409 5.199 0 1.033.394 2.143.889 2.741.099.12.112.225.085.345-.09.375-.293 1.199-.334 1.363-.053.225-.172.271-.401.165-1.495-.69-2.433-2.878-2.433-4.646 0-3.776 2.748-7.252 7.92-7.252 4.158 0 7.392 2.967 7.392 6.923 0 4.135-2.607 7.462-6.233 7.462-1.214 0-2.354-.629-2.758-1.379l-.749 2.848c-.269 1.045-1.004 2.352-1.498 3.146 1.123.345 2.306.535 3.55.535 6.607 0 11.985-5.365 11.985-11.987C23.97 5.39 18.592.026 11.985.026L12.017 0z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Pinterest</title><path d="M12.017 0C5.396 0 .029 5.367.029 11.987c0 5.079 3.158 9.417 7.618 11.162-.105-.949-.199-2.403.041-3.439.219-.937 1.406-5.957 1.406-5.957s-.359-.72-.359-1.781c0-1.663.967-2.911 2.168-2.911 1.024 0 1.518.769 1.518 1.688 0 1.029-.653 2.567-.992 3.992-.285 1.193.6 2.165 1.775 2.165 2.128 0 3.768-2.245 3.768-5.487 0-2.861-2.063-4.869-5.008-4.869-3.41 0-5.409 2.562-5.409 5.199 0 1.033.394 2.143.889 2.741.099.12.112.225.085.345-.09.375-.293 1.199-.334 1.363-.053.225-.172.271-.401.165-1.495-.69-2.433-2.878-2.433-4.646 0-3.776 2.748-7.252 7.92-7.252 4.158 0 7.392 2.967 7.392 6.923 0 4.135-2.607 7.462-6.233 7.462-1.214 0-2.354-.629-2.758-1.379l-.749 2.848c-.269 1.045-1.004 2.352-1.498 3.146 1.123.345 2.306.535 3.55.535 6.607 0 11.985-5.365 11.985-11.987C23.97 5.39 18.592.026 11.985.026L12.017 0z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/pioneerdj.svg b/assets/lib/simple-icons/icons/pioneerdj.svg
new file mode 100644
index 00000000..2ebc7efa
--- /dev/null
+++ b/assets/lib/simple-icons/icons/pioneerdj.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Pioneer DJ</title><path d="M15.46 5.569c1.474 1.144 1.715 2.695 1.107 4.319-.565 1.503-1.833 2.96-3.827 4.087-2.21 1.227-4.498 1.554-6.993 1.554H0L4.212 4.308h5.051c2.548 0 4.7.1 6.197 1.26zm-3.112 4.235c.33-.884.246-2.202-.34-2.906-.658-.782-1.673-.873-3.138-.873l-.716.016s-.616-.07-.866.49c-.153.35.064-.263-2.412 6.341-.326.876.452.919.452.919s2.794.17 5.132-1.448c.991-.685 1.577-1.705 1.888-2.539zm5.938-1.467L24 8.366l-2.892 7.731c-.944 2.518-2.896 3.595-6.812 3.595l-3.058-.04.731-1.746c4.427.21 5.225-1.76 5.365-2.139l1.846-4.966s.317-.884-.402-.884h-1.132Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/pivotaltracker.svg b/assets/lib/simple-icons/icons/pivotaltracker.svg
index 943c6fab..2a36379d 100644
--- a/assets/lib/simple-icons/icons/pivotaltracker.svg
+++ b/assets/lib/simple-icons/icons/pivotaltracker.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 24 24"><title>Pivotal Tracker icon</title><path d="M12.002 0c-6.617 0-12 5.382-12 11.998 0 6.618 5.384 12.002 12 12.002S24 18.616 24 11.998C24 5.382 18.619 0 12.002 0zm0 2.43a9.568 9.568 0 0 1 9.568 9.568c0 5.286-4.283 9.572-9.568 9.572-5.285 0-9.57-4.286-9.57-9.572 0-5.285 4.285-9.568 9.57-9.568zm-.135 1.31L8.822 5.498V5.5l2.68 4.64c.425-.113.888-.08 1.31.118l1.41-2.442-2.355-4.076zm4.17 2.256l-2.68 4.643c.325.324.52.749.557 1.195h2.816l2.356-4.076-3.049-1.762zM4.781 7.984v3.55h.002v-.03h5.36a1.904 1.904 0 0 1 .756-1.08L9.49 7.984H4.781zm2.487 4.182L4.912 16.24l3.049 1.762 2.682-4.645a1.929 1.929 0 0 1-.557-1.191H7.268zm6.59.33a1.904 1.904 0 0 1-.756 1.078l1.41 2.442h4.707v-3.52h-5.362zm-2.67 1.244l-1.41 2.442 2.353 4.076 3.049-1.76-2.68-4.64c-.425.114-.89.08-1.313-.118z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Pivotal Tracker</title><path d="M12.002 0c-6.617 0-12 5.382-12 11.998 0 6.618 5.384 12.002 12 12.002S24 18.616 24 11.998C24 5.382 18.619 0 12.002 0zm0 2.43a9.568 9.568 0 0 1 9.568 9.568c0 5.286-4.283 9.572-9.568 9.572-5.285 0-9.57-4.286-9.57-9.572 0-5.285 4.285-9.568 9.57-9.568zm-.135 1.31L8.822 5.498V5.5l2.68 4.64c.425-.113.888-.08 1.31.118l1.41-2.442-2.355-4.076zm4.17 2.256l-2.68 4.643c.325.324.52.749.557 1.195h2.816l2.356-4.076-3.049-1.762zM4.781 7.984v3.55h.002v-.03h5.36a1.904 1.904 0 0 1 .756-1.08L9.49 7.984H4.781zm2.487 4.182L4.912 16.24l3.049 1.762 2.682-4.645a1.929 1.929 0 0 1-.557-1.191H7.268zm6.59.33a1.904 1.904 0 0 1-.756 1.078l1.41 2.442h4.707v-3.52h-5.362zm-2.67 1.244l-1.41 2.442 2.353 4.076 3.049-1.76-2.68-4.64c-.425.114-.89.08-1.313-.118z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/piwigo.svg b/assets/lib/simple-icons/icons/piwigo.svg
index 61935738..541f799d 100644
--- a/assets/lib/simple-icons/icons/piwigo.svg
+++ b/assets/lib/simple-icons/icons/piwigo.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Piwigo icon</title><path d="M16.712 12.777A4.713 4.713 0 0112 17.49a4.713 4.713 0 01-4.713-4.713A4.713 4.713 0 0112 8.065a4.713 4.713 0 014.712 4.712zM19.112 0c-2.572.058-2.358 1.544-8.237 1.555h-4.15A5.947 5.947 0 00.777 7.502v10.55A5.947 5.947 0 006.725 24h10.55a5.947 5.947 0 005.948-5.947V4.08l-.008-.018c0-.014.004-.028.004-.043 0-2.227-1.88-4.02-4.108-4.02zm.09 2.545a1.409 1.409 0 011.407 1.41 1.409 1.409 0 01-1.408 1.408 1.409 1.409 0 01-1.41-1.408 1.409 1.409 0 011.41-1.41zM12 6.12a6.656 6.656 0 016.656 6.656A6.656 6.656 0 0112 19.434a6.656 6.656 0 01-6.656-6.657A6.656 6.656 0 0112 6.121z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Piwigo</title><path d="M16.712 12.777A4.713 4.713 0 0 1 12 17.49a4.713 4.713 0 0 1-4.713-4.713A4.713 4.713 0 0 1 12 8.066a4.713 4.713 0 0 1 4.712 4.711zm2.4-12.776c-2.572.058-2.358 1.544-8.237 1.555h-4.15A5.947 5.947 0 0 0 .777 7.503v10.55A5.947 5.947 0 0 0 6.725 24h10.55a5.947 5.947 0 0 0 5.948-5.947V4.081l-.008-.018c0-.014.004-.028.004-.043 0-2.227-1.88-4.02-4.108-4.02zm.09 2.545a1.409 1.409 0 0 1 1.407 1.41A1.409 1.409 0 0 1 19.2 5.364a1.409 1.409 0 0 1-1.41-1.408 1.409 1.409 0 0 1 1.41-1.41zM12 6.12a6.656 6.656 0 0 1 6.656 6.655A6.656 6.656 0 0 1 12 19.434a6.656 6.656 0 0 1-6.656-6.657A6.656 6.656 0 0 1 12 6.122z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/pix.svg b/assets/lib/simple-icons/icons/pix.svg
new file mode 100644
index 00000000..cda123f6
--- /dev/null
+++ b/assets/lib/simple-icons/icons/pix.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Pix</title><path d="M5.283 18.36a3.505 3.505 0 0 0 2.493-1.032l3.6-3.6a.684.684 0 0 1 .946 0l3.613 3.613a3.504 3.504 0 0 0 2.493 1.032h.71l-4.56 4.56a3.647 3.647 0 0 1-5.156 0L4.85 18.36ZM18.428 5.627a3.505 3.505 0 0 0-2.493 1.032l-3.613 3.614a.67.67 0 0 1-.946 0l-3.6-3.6A3.505 3.505 0 0 0 5.283 5.64h-.434l4.573-4.572a3.646 3.646 0 0 1 5.156 0l4.559 4.559ZM1.068 9.422 3.79 6.699h1.492a2.483 2.483 0 0 1 1.744.722l3.6 3.6a1.73 1.73 0 0 0 2.443 0l3.614-3.613a2.482 2.482 0 0 1 1.744-.723h1.767l2.737 2.737a3.646 3.646 0 0 1 0 5.156l-2.736 2.736h-1.768a2.482 2.482 0 0 1-1.744-.722l-3.613-3.613a1.77 1.77 0 0 0-2.444 0l-3.6 3.6a2.483 2.483 0 0 1-1.744.722H3.791l-2.723-2.723a3.646 3.646 0 0 1 0-5.156"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/pixabay.svg b/assets/lib/simple-icons/icons/pixabay.svg
index 1a2ff94d..5b0ca70a 100644
--- a/assets/lib/simple-icons/icons/pixabay.svg
+++ b/assets/lib/simple-icons/icons/pixabay.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Pixabay icon</title><path d="M5.627 10.234a.888.888 0 01-.887-.888H1.7c0 .49-.398.888-.888.888H0v9.447h15.56v-9.447H5.64zm-.886 2.796h-3.04v-1.323h3.04v1.323zm5.344 5.234a3.271 3.271 0 01-3.267-3.269c0-1.802 1.466-3.193 3.267-3.193s3.267 1.39 3.267 3.193a3.271 3.271 0 01-3.267 3.269zm1.756-3.269c0 .969-.788 1.757-1.756 1.757a1.759 1.759 0 01-1.756-1.757c0-.969.788-1.757 1.756-1.757s1.756.788 1.756 1.757zM24 9.501l-3.93 10.156-3.164-1.226V16.7l2.242.869 2.765-7.146L11.55 6.407l-.96 2.482h-1.73l1.769-4.57L24 9.501Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Pixabay</title><path d="M5.627 10.234a.888.888 0 01-.887-.888H1.7c0 .49-.398.888-.888.888H0v9.447h15.56v-9.447H5.64zm-.886 2.796h-3.04v-1.323h3.04v1.323zm5.344 5.234a3.271 3.271 0 01-3.267-3.269c0-1.802 1.466-3.193 3.267-3.193s3.267 1.39 3.267 3.193a3.271 3.271 0 01-3.267 3.269zm1.756-3.269c0 .969-.788 1.757-1.756 1.757a1.759 1.759 0 01-1.756-1.757c0-.969.788-1.757 1.756-1.757s1.756.788 1.756 1.757zM24 9.501l-3.93 10.156-3.164-1.226V16.7l2.242.869 2.765-7.146L11.55 6.407l-.96 2.482h-1.73l1.769-4.57L24 9.501Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/pixiv.svg b/assets/lib/simple-icons/icons/pixiv.svg
index 2ef7e9cb..7d18fa01 100644
--- a/assets/lib/simple-icons/icons/pixiv.svg
+++ b/assets/lib/simple-icons/icons/pixiv.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>pixiv icon</title><path d="M4.935 0A4.924 4.924 0 0 0 0 4.935v14.13A4.924 4.924 0 0 0 4.935 24h14.13A4.924 4.924 0 0 0 24 19.065V4.935A4.924 4.924 0 0 0 19.065 0zm7.81 4.547c2.181 0 4.058.676 5.399 1.847a6.118 6.118 0 0 1 2.116 4.66c.005 1.854-.88 3.476-2.257 4.563-1.375 1.092-3.225 1.697-5.258 1.697-2.314 0-4.46-.842-4.46-.842v2.718c.397.116 1.048.365.635.779H5.79c-.41-.41.19-.65.644-.779V7.666c-1.053.81-1.593 1.51-1.868 2.031.32 1.02-.284.969-.284.969l-1.09-1.73s3.868-4.39 9.553-4.39zm-.19.971c-1.423-.003-3.184.473-4.27 1.244v8.646c.988.487 2.484.832 4.26.832h.01c1.596 0 2.98-.593 3.93-1.533.952-.948 1.486-2.183 1.492-3.683-.005-1.54-.504-2.864-1.42-3.86-.918-.992-2.274-1.645-4.002-1.646Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>pixiv</title><path d="M4.935 0A4.924 4.924 0 0 0 0 4.935v14.13A4.924 4.924 0 0 0 4.935 24h14.13A4.924 4.924 0 0 0 24 19.065V4.935A4.924 4.924 0 0 0 19.065 0zm7.81 4.547c2.181 0 4.058.676 5.399 1.847a6.118 6.118 0 0 1 2.116 4.66c.005 1.854-.88 3.476-2.257 4.563-1.375 1.092-3.225 1.697-5.258 1.697-2.314 0-4.46-.842-4.46-.842v2.718c.397.116 1.048.365.635.779H5.79c-.41-.41.19-.65.644-.779V7.666c-1.053.81-1.593 1.51-1.868 2.031.32 1.02-.284.969-.284.969l-1.09-1.73s3.868-4.39 9.553-4.39zm-.19.971c-1.423-.003-3.184.473-4.27 1.244v8.646c.988.487 2.484.832 4.26.832h.01c1.596 0 2.98-.593 3.93-1.533.952-.948 1.486-2.183 1.492-3.683-.005-1.54-.504-2.864-1.42-3.86-.918-.992-2.274-1.645-4.002-1.646Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/pjsip.svg b/assets/lib/simple-icons/icons/pjsip.svg
deleted file mode 100644
index 8054244c..00000000
--- a/assets/lib/simple-icons/icons/pjsip.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>PJSIP icon</title><path d="M5.272 20.562H10.2l2.657 2.657c.873.874 2.114 1.039 2.782.371l7.951-7.951c.668-.668.503-1.909-.37-2.782L11.142.781C10.27-.093 9.029-.258 8.36.41L.41 8.36c-.668.668-.503 1.909.37 2.782l4.492 4.492zm2.142-2.142v-3.768l-.88-.88h.016l-2.507-2.507c-.873-.873-1.039-2.114-.371-2.782l4.811-4.811c.668-.668 1.909-.502 2.782.371l8.692 8.692c.873.873 1.039 2.114.371 2.782l-4.811 4.811c-.438.438-1.12.511-1.786.269a1.218 3.063 25.325 00.557-2.845 1.218 3.063 25.325 00-1.557.033 1.218 3.063 25.325 00-.931 1.252l-.618-.617zM5.172 11.24a1.628 1.628 0 002.302 0 1.628 1.628 0 000-2.302 1.628 1.628 0 00-2.303 0 1.628 1.628 0 000 2.302z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/pkgsrc.svg b/assets/lib/simple-icons/icons/pkgsrc.svg
new file mode 100644
index 00000000..1208e9bf
--- /dev/null
+++ b/assets/lib/simple-icons/icons/pkgsrc.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>pkgsrc</title><path d="m12.908 8.763 9.157-5.132L11.25 0 1.62 4.42Zm1.5 2.29 9-5.368-.948 11.84-8.191 6.382zM.593 6.712 1.619 18.79 11.922 24l-.12-12.788Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/planet.svg b/assets/lib/simple-icons/icons/planet.svg
new file mode 100644
index 00000000..13f9199d
--- /dev/null
+++ b/assets/lib/simple-icons/icons/planet.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Planet</title><path d="M12.891 6.582c-1.159 0-2.4.457-3.217 1.633h-.033a1.59 1.59 0 0 0-1.59-1.59h-.048v10.86a1.792 1.792 0 0 0 1.784 1.784v-4.703h.034c.343.571 1.29 1.536 3.185 1.536 2.857 0 4.572-2.352 4.572-4.638.002-2.416-1.616-4.882-4.687-4.882zm-.066 7.975c-1.714 0-3.07-1.388-3.07-3.217 0-1.666 1.242-3.2 3.023-3.2 1.845 0 3.103 1.616 3.103 3.233-.001 1.905-1.455 3.184-3.056 3.184zM12.001 24A12 12 0 1 1 24 12.001 12.013 12.013 0 0 1 12.001 24zm0-22.856a10.861 10.861 0 1 0 10.861 10.862 10.87 10.87 0 0 0-10.86-10.862z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/plangrid.svg b/assets/lib/simple-icons/icons/plangrid.svg
index 101936c8..5cd18368 100644
--- a/assets/lib/simple-icons/icons/plangrid.svg
+++ b/assets/lib/simple-icons/icons/plangrid.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>PlanGrid icon</title><path d="M16.6 0c2.6 0 4.262.009 5.828 1.574C23.99 3.141 24 4.794 24 7.401v9.2c0 2.6-.01 4.261-1.574 5.828C20.859 23.991 19.207 24 16.598 24h-9.2c-2.599 0-4.26-.009-5.827-1.574C.01 20.861 0 19.207 0 16.599v-9.2C0 4.8.01 3.138 1.574 1.572 3.141.01 4.793 0 7.4 0h9.201-.001zm4.398 11.151C20.57 6.578 16.684 3.002 12 3.002c-4.971 0-9 4.027-9 8.998 0 4.801 3.752 8.734 8.485 9h7.136c1.313-.003 2.375-1.066 2.379-2.381v-7.47l-.002.002zm-2.285 8.589c-.564 0-1.023-.46-1.023-1.024 0-.566.459-1.024 1.023-1.024.566 0 1.025.458 1.025 1.024 0 .564-.459 1.024-1.025 1.024zM12 18.949C8.163 18.945 5.055 15.836 5.051 12 5.055 8.164 8.163 5.055 12 5.051c3.836.004 6.945 3.113 6.949 6.949-.004 3.836-3.113 6.945-6.949 6.949z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>PlanGrid</title><path d="M16.6 0c2.6 0 4.262.009 5.828 1.574C23.99 3.141 24 4.794 24 7.401v9.2c0 2.6-.01 4.261-1.574 5.828C20.859 23.991 19.207 24 16.598 24h-9.2c-2.599 0-4.26-.009-5.827-1.574C.01 20.861 0 19.207 0 16.599v-9.2C0 4.8.01 3.138 1.574 1.572 3.141.01 4.793 0 7.4 0h9.201-.001zm4.398 11.151C20.57 6.578 16.684 3.002 12 3.002c-4.971 0-9 4.027-9 8.998 0 4.801 3.752 8.734 8.485 9h7.136c1.313-.003 2.375-1.066 2.379-2.381v-7.47l-.002.002zm-2.285 8.589c-.564 0-1.023-.46-1.023-1.024 0-.566.459-1.024 1.023-1.024.566 0 1.025.458 1.025 1.024 0 .564-.459 1.024-1.025 1.024zM12 18.949C8.163 18.945 5.055 15.836 5.051 12 5.055 8.164 8.163 5.055 12 5.051c3.836.004 6.945 3.113 6.949 6.949-.004 3.836-3.113 6.945-6.949 6.949z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/platformdotsh.svg b/assets/lib/simple-icons/icons/platformdotsh.svg
new file mode 100644
index 00000000..81f3cf6a
--- /dev/null
+++ b/assets/lib/simple-icons/icons/platformdotsh.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Platform.sh</title><path d="M24 0H0v9.541h24V0zM24 20.755H0V24h24v-3.245zM0 12.618h24v4.892H0v-4.892z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/platzi.svg b/assets/lib/simple-icons/icons/platzi.svg
index ce58a30e..6caee239 100644
--- a/assets/lib/simple-icons/icons/platzi.svg
+++ b/assets/lib/simple-icons/icons/platzi.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Platzi icon</title><path d="M10.64 1.127L2.487 9.282a3.842 3.842 0 000 5.436l8.155 8.155a3.842 3.842 0 005.436 0l2.719-2.718-2.719-2.718-2.718 2.718L5.204 12l8.155-8.155 5.437 5.437-5.437 5.436 2.718 2.719L21.514 12a3.842 3.842 0 000-5.437l-5.448-5.436a3.828 3.828 0 00-5.425 0Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Platzi</title><path d="M10.6392 1.127L2.486 9.282a3.842 3.842 0 000 5.4361l8.1552 8.1552a3.842 3.842 0 005.4361 0l2.719-2.718-2.719-2.7181-2.718 2.718-8.1562-8.1551 8.1552-8.1552 5.437 5.4371-5.437 5.4361 2.718 2.719 5.4371-5.437a3.842 3.842 0 000-5.4372l-5.448-5.436a3.828 3.828 0 00-5.4252 0z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/plausibleanalytics.svg b/assets/lib/simple-icons/icons/plausibleanalytics.svg
new file mode 100644
index 00000000..22bf257f
--- /dev/null
+++ b/assets/lib/simple-icons/icons/plausibleanalytics.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Plausible Analytics</title><path d="M12.1835.0017c-.6378-.0097-1.2884.022-1.7246.0996C8.601.424 7.035 1.2116 5.7384 2.4782 4.406 3.7806 3.582 5.299 3.1818 7.1929l-.1387.6445c-.0118 5.3872-.0233 10.7744-.035 16.1617.2914.0081.591-.0392.8416-.0606 2.348-.2868 4.3442-1.7083 5.4315-3.8651.2749-.5497.472-1.182.6094-1.9707.1135-.6691.1195-.8915.1016-4.3807l-.0176-3.6737.1425-.3574c.1972-.49.7425-1.0352 1.2324-1.2324l.3574-.1426 3.3457-.0058c1.8401 0 3.4545-.025 3.58-.0489.5854-.1135 1.2118-.6027 1.4628-1.1464.0717-.1494.1671-.4415.209-.6387.0657-.3286.0604-.4186-.0352-.789-.2987-1.0993-1.3503-2.6234-2.4257-3.5136C16.6247 1.1638 15.2798.4887 13.828.1482c-.3824-.0866-1.0067-.1368-1.6445-.1465zm8.5369 6.8006c-.0506.1798-.098.3662-.172.5215-.3358.7278-1.0382 1.2776-1.8221 1.4296-3.6737.0566-2.5392.0561-3.6737.0566l-3.248.0059-.2695.1074c-.3135.1262-.827.6397-.9531.9531l-.1074.2676.0175 3.576c.0149 2.8888.007 3.5821-.0605 4.125a8.9918 8.9918 0 0 0 1.5683.1386c4.9662.0001 8.992-4.0258 8.992-8.992a8.9918 8.9918 0 0 0-.2715-2.1893Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/playcanvas.svg b/assets/lib/simple-icons/icons/playcanvas.svg
new file mode 100644
index 00000000..35348b1f
--- /dev/null
+++ b/assets/lib/simple-icons/icons/playcanvas.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>PlayCanvas</title><path d="M6.115 0l-.002 3.414 5.823 3.41-5.82 3.414-.003 3.412 11.774-6.826zm11.77 10.35L6.113 17.174 17.887 24l-.002-3.414-5.82-3.412 5.822-3.412z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/player-dot-me.svg b/assets/lib/simple-icons/icons/player-dot-me.svg
deleted file mode 100755
index b809ef25..00000000
--- a/assets/lib/simple-icons/icons/player-dot-me.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Player.me icon</title><path d="M11.981 0a8.957 8.957 0 0 0-8.956 8.957v.363C3.283 15.828 10.082 24 10.082 24V13.205c-1.638-.747-2.756-2.369-2.756-4.253a4.66 4.66 0 1 1 6.152 4.416l-.033.01v4.427c4.296-.713 7.531-4.401 7.531-8.845A8.959 8.959 0 0 0 12.017.001h-.038.002z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/playerdotme.svg b/assets/lib/simple-icons/icons/playerdotme.svg
new file mode 100644
index 00000000..e35d2d26
--- /dev/null
+++ b/assets/lib/simple-icons/icons/playerdotme.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Player.me</title><path d="M11.981 0a8.957 8.957 0 0 0-8.956 8.957v.363C3.283 15.828 10.082 24 10.082 24V13.205c-1.638-.747-2.756-2.369-2.756-4.253a4.66 4.66 0 1 1 6.152 4.416l-.033.01v4.427c4.296-.713 7.531-4.401 7.531-8.845A8.959 8.959 0 0 0 12.017.001h-.038.002z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/playerfm.svg b/assets/lib/simple-icons/icons/playerfm.svg
index 361a339a..119db128 100644
--- a/assets/lib/simple-icons/icons/playerfm.svg
+++ b/assets/lib/simple-icons/icons/playerfm.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Player FM icon</title><path d="M11.976 0a12 12 0 00-.347.012c-.323.021-.771.063-1.129.11-3.29.448-6.096 2.1-7.993 4.56a12.027 12.027 0 00-1.22 1.94 12 12 0 00-.173.358c-.092.198-.179.4-.261.603a12 12 0 00-.288.788l-.045.143A12 12 0 000 11.986v.037A12 12 0 0012 24a12 12 0 0011.939-10.79l.003-.024A12 12 0 0024 12.018v-.048a12 12 0 00-.769-4.182c-.04-.105-.081-.21-.125-.313a12 12 0 00-.226-.507c-1.487-3.15-4.299-5.59-7.698-6.506-.76-.208-1.978-.39-2.813-.444A12 12 0 0012.024 0h-.048zm2.321 2.88c.166.001.377.056.675.159 1.782.611 3.773 2.157 4.856 3.764.752 1.118 1.337 2.428 1.337 2.987 0 .358-.35.681-.725.681-.35 0-.708-.305-.804-.68-.13-.525-.83-1.852-1.345-2.534-.917-1.205-2.332-2.262-3.72-2.777-.979-.367-1.232-.795-.778-1.336.152-.182.29-.267.504-.265zm-3.885 1.4c.26.001.495.056.7.165 1.31.664 1.24 2.568-.122 3.092-1.686.637-2.533 1.319-3.084 2.437-1.153 2.34-.21 5.1 2.123 6.218 1.712.821 3.668.533 5.03-.725.62-.576.961-1.074 1.267-1.878.428-1.126.917-1.545 1.79-1.545 1.119 0 1.887.943 1.66 2.026-.463 2.13-2.253 4.27-4.42 5.275-1.196.55-1.851.69-3.362.69-1.485 0-2.131-.131-3.284-.655-3.144-1.424-5.075-4.83-4.673-8.21a8.123 8.123 0 015.511-6.734c.315-.105.603-.157.864-.156zm3.463.96c.217.004.499.105.914.306 1.686.803 3.083 2.279 3.834 4.035.28.672.14 1.109-.41 1.283-.42.123-.7-.104-1.066-.864-.681-1.441-1.65-2.437-3.013-3.11-.795-.384-.891-.471-.97-.847-.035-.2 0-.314.184-.532.157-.184.31-.276.527-.271zm-.398 2.443c.23-.001.496.108.84.334.961.629 2.044 1.983 2.044 2.55 0 .289-.28.656-.559.725-.376.097-.646-.087-1.04-.707-.427-.655-.925-1.153-1.44-1.415-.446-.227-.577-.402-.577-.769a.58.58 0 01.245-.515.727.727 0 01.487-.203z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Player FM</title><path d="M11.976 0a12 12 0 00-.347.012c-.323.021-.771.063-1.129.11-3.29.448-6.096 2.1-7.993 4.56a12.027 12.027 0 00-1.22 1.94 12 12 0 00-.173.358c-.092.198-.179.4-.261.603a12 12 0 00-.288.788l-.045.143A12 12 0 000 11.986v.037A12 12 0 0012 24a12 12 0 0011.939-10.79l.003-.024A12 12 0 0024 12.018v-.048a12 12 0 00-.769-4.182c-.04-.105-.081-.21-.125-.313a12 12 0 00-.226-.507c-1.487-3.15-4.299-5.59-7.698-6.506-.76-.208-1.978-.39-2.813-.444A12 12 0 0012.024 0h-.048zm2.321 2.88c.166.001.377.056.675.159 1.782.611 3.773 2.157 4.856 3.764.752 1.118 1.337 2.428 1.337 2.987 0 .358-.35.681-.725.681-.35 0-.708-.305-.804-.68-.13-.525-.83-1.852-1.345-2.534-.917-1.205-2.332-2.262-3.72-2.777-.979-.367-1.232-.795-.778-1.336.152-.182.29-.267.504-.265zm-3.885 1.4c.26.001.495.056.7.165 1.31.664 1.24 2.568-.122 3.092-1.686.637-2.533 1.319-3.084 2.437-1.153 2.34-.21 5.1 2.123 6.218 1.712.821 3.668.533 5.03-.725.62-.576.961-1.074 1.267-1.878.428-1.126.917-1.545 1.79-1.545 1.119 0 1.887.943 1.66 2.026-.463 2.13-2.253 4.27-4.42 5.275-1.196.55-1.851.69-3.362.69-1.485 0-2.131-.131-3.284-.655-3.144-1.424-5.075-4.83-4.673-8.21a8.123 8.123 0 015.511-6.734c.315-.105.603-.157.864-.156zm3.463.96c.217.004.499.105.914.306 1.686.803 3.083 2.279 3.834 4.035.28.672.14 1.109-.41 1.283-.42.123-.7-.104-1.066-.864-.681-1.441-1.65-2.437-3.013-3.11-.795-.384-.891-.471-.97-.847-.035-.2 0-.314.184-.532.157-.184.31-.276.527-.271zm-.398 2.443c.23-.001.496.108.84.334.961.629 2.044 1.983 2.044 2.55 0 .289-.28.656-.559.725-.376.097-.646-.087-1.04-.707-.427-.655-.925-1.153-1.44-1.415-.446-.227-.577-.402-.577-.769a.58.58 0 01.245-.515.727.727 0 01.487-.203z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/playstation.svg b/assets/lib/simple-icons/icons/playstation.svg
index 3970243e..be337031 100644
--- a/assets/lib/simple-icons/icons/playstation.svg
+++ b/assets/lib/simple-icons/icons/playstation.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>PlayStation icon</title><path d="M8.985 2.596v17.548l3.915 1.261V6.688c0-.69.304-1.151.794-.991.636.181.76.814.76 1.505v5.876c2.441 1.193 4.362-.002 4.362-3.153 0-3.237-1.126-4.675-4.438-5.827-1.307-.448-3.728-1.186-5.391-1.502h-.002zm4.656 16.242l6.296-2.275c.715-.258.826-.625.246-.818-.586-.192-1.637-.139-2.357.123l-4.205 1.499v-2.385l.24-.085s1.201-.42 2.913-.615c1.696-.18 3.785.029 5.437.661 1.848.601 2.041 1.472 1.576 2.072s-1.622 1.036-1.622 1.036l-8.544 3.107v-2.297l.02-.023zM1.808 18.6c-1.9-.545-2.214-1.668-1.352-2.321.801-.585 2.159-1.051 2.159-1.051l5.616-2.013v2.313L4.206 17c-.705.271-.825.632-.239.826.586.195 1.637.15 2.343-.12L8.248 17v2.074c-.121.029-.256.044-.391.073-1.938.331-3.995.196-6.037-.479l-.012-.068z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>PlayStation</title><path d="M8.984 2.596v17.547l3.915 1.261V6.688c0-.69.304-1.151.794-.991.636.18.76.814.76 1.505v5.875c2.441 1.193 4.362-.002 4.362-3.152 0-3.237-1.126-4.675-4.438-5.827-1.307-.448-3.728-1.186-5.39-1.502zm4.656 16.241l6.296-2.275c.715-.258.826-.625.246-.818-.586-.192-1.637-.139-2.357.123l-4.205 1.5V14.98l.24-.085s1.201-.42 2.913-.615c1.696-.18 3.785.03 5.437.661 1.848.601 2.04 1.472 1.576 2.072-.465.6-1.622 1.036-1.622 1.036l-8.544 3.107V18.86zM1.807 18.6c-1.9-.545-2.214-1.668-1.352-2.32.801-.586 2.16-1.052 2.16-1.052l5.615-2.013v2.313L4.205 17c-.705.271-.825.632-.239.826.586.195 1.637.15 2.343-.12L8.247 17v2.074c-.12.03-.256.044-.39.073-1.939.331-3.996.196-6.038-.479z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/playstation2.svg b/assets/lib/simple-icons/icons/playstation2.svg
index 9f265209..b035cc90 100644
--- a/assets/lib/simple-icons/icons/playstation2.svg
+++ b/assets/lib/simple-icons/icons/playstation2.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>PlayStation 2 icon</title><path d="M7.46 13.779v.292h4.142v-3.85h3.796V9.93h-4.115v3.85zm16.248-3.558v1.62h-7.195v2.23H24v-.292h-7.168v-1.646H24V9.929h-7.487v.292zm-16.513 0v1.62H0v2.23h.292v-1.938H7.46V9.929H0v.292Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>PlayStation 2</title><path d="M7.46 13.779v.292h4.142v-3.85h3.796V9.93h-4.115v3.85zm16.248-3.558v1.62h-7.195v2.23H24v-.292h-7.168v-1.646H24V9.929h-7.487v.292zm-16.513 0v1.62H0v2.23h.292v-1.938H7.46V9.929H0v.292Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/playstation3.svg b/assets/lib/simple-icons/icons/playstation3.svg
index 1b47124d..7c0f4840 100644
--- a/assets/lib/simple-icons/icons/playstation3.svg
+++ b/assets/lib/simple-icons/icons/playstation3.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>PlayStation 3 icon</title><path d="M15.363 9.438h-3.148c-.97 0-1.447.6-1.447 1.38v2.366c0 .483-.228.83-.71.83H7.304c-.02 0-.035.017-.035.035v.47c0 .02.01.032.03.032h3.11c.97 0 1.45-.597 1.45-1.377V10.81c0-.484.225-.832.71-.832h2.782c.02 0 .04-.014.04-.033V9.47c0-.02-.02-.035-.04-.035zm-9.267 0H.038c-.022 0-.038.017-.038.035v.477c0 .02.016.036.038.036h5.694c.48 0 .71.347.71.83s-.228.83-.71.83H1.228c-.7 0-1.227.587-1.227 1.366v1.513c0 .02.02.037.04.037h1.03c.02 0 .04-.016.04-.037v-1.513c0-.48.28-.82.68-.82H6.1c.97 0 1.444-.595 1.444-1.375 0-.778-.473-1.38-1.442-1.38zm17.454 2.498c-.015-.015-.015-.04 0-.056.3-.25.45-.627.45-1.062 0-.778-.474-1.38-1.446-1.38h-6.057c-.02 0-.036.018-.036.038v.475c0 .02.02.04.04.04h5.7c.48 0 .715.35.715.83s-.23.83-.712.83h-5.7c-.02 0-.036.02-.036.04v.48c0 .02.016.034.037.034h5.7c.63.007.71.62.71.93v.06c0 .485-.23.833-.71.833h-5.7c-.02 0-.036.015-.036.034v.477c0 .02.015.037.036.037h6.05c.973 0 1.446-.645 1.446-1.38v-.057c0-.47-.15-.916-.45-1.19z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>PlayStation 3</title><path d="M15.362 9.433h-3.148c-.97 0-1.446.6-1.446 1.38v2.365c0 .483-.228.83-.71.83H7.304a.035.035 0 00-.035.035v.47c0 .02.01.032.03.032h3.11c.97 0 1.45-.597 1.45-1.377v-2.363c0-.484.224-.832.71-.832h2.781c.02 0 .04-.014.04-.033v-.475c0-.02-.02-.035-.04-.035zm-9.266 0H.038c-.022 0-.038.017-.038.035v.477c0 .02.016.036.038.036h5.694c.48 0 .71.347.71.83s-.228.83-.71.83H1.228c-.7 0-1.227.586-1.227 1.365v1.513c0 .02.02.037.04.037h1.03c.02 0 .04-.016.04-.037v-1.513c0-.48.28-.82.68-.82H6.1c.97 0 1.444-.594 1.444-1.374 0-.778-.473-1.38-1.442-1.38zm17.453 2.498a.04.04 0 010-.056c.3-.25.45-.627.45-1.062 0-.778-.474-1.38-1.446-1.38h-6.057c-.02 0-.036.018-.036.038v.475c0 .02.02.04.04.04h5.7c.48 0 .715.35.715.83s-.23.83-.712.83h-5.7c-.02 0-.036.02-.036.04v.48c0 .02.016.033.037.033h5.7c.63.007.71.62.71.93v.06c0 .485-.23.833-.71.833h-5.7c-.02 0-.036.015-.036.034v.477c0 .02.015.037.036.037h6.05c.973 0 1.446-.645 1.446-1.38v-.057c0-.47-.15-.916-.45-1.19z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/playstation4.svg b/assets/lib/simple-icons/icons/playstation4.svg
index 0656dafe..1b49f8de 100644
--- a/assets/lib/simple-icons/icons/playstation4.svg
+++ b/assets/lib/simple-icons/icons/playstation4.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>PlayStation 4 icon</title><path d="M12.305 13.18v-2.387c0-.487.227-.835.712-.835h2.99c.017 0 .035-.018.035-.036v-.475c0-.004 0-.008-.003-.012h-3.66c-.792.1-1.18.653-1.18 1.358v2.386c0 .483-.233.832-.71.832H7.335c-.018 0-.036.012-.036.036v.475c0 .02.01.035.023.04h3.584c.933-.025 1.393-.62 1.393-1.386zM.025 14.565h1.05c.013-.005.025-.02.025-.04v-1.52c0-.488.275-.824.676-.824H6.1c.974 0 1.446-.6 1.446-1.384 0-.706-.387-1.258-1.18-1.358H.006c0 .003-.006.005-.006.01v.475c0 .024.013.036.037.036h5.698c.484 0 .712.35.712.834s-.227.836-.712.836H1.227c-.7 0-1.226.592-1.226 1.373v1.52c0 .02.01.036.028.04zm16-.55h5.74c.017 0 .03.012.03.024v.483c0 .024.017.036.035.036h1.035c.018 0 .036-.01.036-.036v-.475c0-.018.02-.036.04-.036h1.028c.024 0 .036-.018.036-.036v-.484c0-.018-.01-.036-.035-.036h-1.03c-.02 0-.037-.017-.037-.035V9.958c0-.283-.104-.463-.28-.523h-.3c-.093.024-.195.067-.303.132l-6.182 3.817c-.24.15-.323.318-.263.445.048.104.185.182.454.182zm.896-.637l4.79-2.963c.03-.024.09-.018.09.048v2.963c0 .018-.015.036-.033.036H16.95c-.04 0-.06-.012-.065-.024-.006-.024.005-.042.036-.06z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>PlayStation 4</title><path d="M12.302 13.18v-2.387c0-.486.227-.834.712-.834h2.99c.017 0 .035-.018.035-.036v-.475c0-.004 0-.008-.003-.012h-3.66c-.792.1-1.18.653-1.18 1.357v2.386c0 .482-.233.831-.71.831H7.332c-.018 0-.036.012-.036.036v.475c0 .02.01.035.023.04h3.584c.933-.025 1.393-.62 1.393-1.385zM.024 14.564h1.05a.042.042 0 00.025-.04v-1.52c0-.487.275-.823.676-.823h4.323c.974 0 1.445-.6 1.445-1.384 0-.705-.386-1.257-1.18-1.357H.006c0 .003-.006.005-.006.01v.475c0 .024.013.036.037.036h5.697c.484 0 .712.35.712.833 0 .484-.227.836-.712.836H1.226c-.7 0-1.226.592-1.226 1.373v1.519c0 .02.01.036.028.04zm15.998-.55h5.738c.017 0 .03.012.03.024v.483c0 .024.017.036.035.036h1.035c.018 0 .036-.01.036-.036v-.475c0-.018.02-.036.04-.036h1.028c.024 0 .036-.018.036-.036v-.484c0-.018-.01-.036-.035-.036h-1.03c-.02 0-.037-.017-.037-.035V9.96c0-.283-.104-.463-.28-.523h-.3a1.153 1.153 0 00-.303.132l-6.18 3.815c-.24.15-.323.318-.263.445.048.104.185.182.454.182zm.895-.637l4.79-2.961c.03-.024.09-.018.09.048v2.961c0 .018-.016.036-.034.036h-4.817c-.04 0-.06-.012-.065-.024-.006-.024.005-.042.036-.06z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/playstation5.svg b/assets/lib/simple-icons/icons/playstation5.svg
new file mode 100644
index 00000000..f759402a
--- /dev/null
+++ b/assets/lib/simple-icons/icons/playstation5.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>PlayStation 5</title><path d="M10.4499 14.56905a1.38287 1.38287 0 001.38287-1.38287v-2.37841a.83315.83315 0 01.83416-.83315h2.68403a.03732.03732 0 00.03631-.03732V9.4612a.03631.03631 0 00-.0363-.0363H12.1172a1.38287 1.38287 0 00-1.38388 1.38286v2.38043a.83416.83416 0 01-.83315.83415H7.25347a.03631.03631 0 00-.03631.03632v.47608a.03631.03631 0 00.03631.03631zm6.04488-3.21156V9.4612a.03631.03631 0 01.0363-.0363h7.30772a.03732.03732 0 01.03732.0363v.47609a.03833.03833 0 01-.03732.03732h-6.20929a.03631.03631 0 00-.0363.03631v1.2356a.3954.3954 0 00.3964.39741h4.62267a1.46457 1.46457 0 010 2.9251h-6.0812a.03631.03631 0 01-.0363-.0363v-.47407a.03631.03631 0 01.0363-.03632h5.53047a.91586.91586 0 10-.00706-1.8307h-4.72656a.83315.83315 0 01-.83315-.83416m-10.84608.28645a.83466.83466 0 000-1.66932H.03654a.03732.03732 0 01-.03632-.03732V9.4612a.03631.03631 0 01.03632-.0363h6.1528a1.38388 1.38388 0 010 2.76673H1.9328a.83315.83315 0 00-.83315.83416v1.51299a.03631.03631 0 01-.03631.0363H.03654a.03631.03631 0 01-.03632-.04034v-1.51298a1.38287 1.38287 0 011.38388-1.37783Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/playstationvita.svg b/assets/lib/simple-icons/icons/playstationvita.svg
index 90dc77f4..cb65a227 100644
--- a/assets/lib/simple-icons/icons/playstationvita.svg
+++ b/assets/lib/simple-icons/icons/playstationvita.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>PlayStation Vita icon</title><path d="M3.176 12.216H1.274c-.26 0-.453.198-.453.538v1.235H0v-1.19c0-.668.42-1.119 1.014-1.119h1.924c.471-.018.584-.252.584-.592 0-.26-.13-.616-.584-.58H0v-.49h3.176c.832 0 1.16.481 1.16 1.07 0 .669-.328 1.128-1.16 1.128zm3.488-1.122v1.813c0 .663-.299 1.076-1.126 1.076H3.761v-.49h1.55c.318 0 .507-.258.507-.586v-1.813c0-.578.28-1.077 1.102-1.077h1.765v.49H7.158c-.412-.017-.494.32-.494.587zm4.84 2.904c-.331-.018-.47-.27-.532-.377-.063-.107-1.92-3.609-1.92-3.609h.924l1.538 2.855c.08.16.262.2.36.012l1.53-2.867h.577s-1.798 3.404-1.87 3.52c-.071.117-.276.484-.607.466zm3.005-3.972h.84v3.96h-.84zm3.77.46l.003 3.477h-.826V10.49l-1.57-.002v-.483L19.859 10l-.002.489zm3.235-.481c-.314.005-.51.354-.579.467-.071.116-1.873 3.527-1.873 3.527h.578l.44-.84h2.541l.454.84H24s-1.86-3.508-1.923-3.616c-.062-.107-.201-.36-.533-.378h-.03zm-.18.996c.078-.005.155.047.2.138l.825 1.525h-2.004l.818-1.538c.043-.082.102-.12.162-.125Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>PlayStation Vita</title><path d="M3.176 12.216H1.274c-.26 0-.453.198-.453.538v1.235H0v-1.19c0-.668.42-1.119 1.014-1.119h1.924c.471-.018.584-.252.584-.592 0-.26-.13-.616-.584-.58H0v-.49h3.176c.832 0 1.16.481 1.16 1.07 0 .669-.328 1.128-1.16 1.128zm3.488-1.122v1.813c0 .663-.299 1.076-1.126 1.076H3.761v-.49h1.55c.318 0 .507-.258.507-.586v-1.813c0-.578.28-1.077 1.102-1.077h1.765v.49H7.158c-.412-.017-.494.32-.494.587zm4.84 2.904c-.331-.018-.47-.27-.532-.377-.063-.107-1.92-3.609-1.92-3.609h.924l1.538 2.855c.08.16.262.2.36.012l1.53-2.867h.577s-1.798 3.404-1.87 3.52c-.071.117-.276.484-.607.466zm3.005-3.972h.84v3.96h-.84zm3.77.46l.003 3.477h-.826V10.49l-1.57-.002v-.483L19.859 10l-.002.489zm3.235-.481c-.314.005-.51.354-.579.467-.071.116-1.873 3.527-1.873 3.527h.578l.44-.84h2.541l.454.84H24s-1.86-3.508-1.923-3.616c-.062-.107-.201-.36-.533-.378h-.03zm-.18.996c.078-.005.155.047.2.138l.825 1.525h-2.004l.818-1.538c.043-.082.102-.12.162-.125Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/pleroma.svg b/assets/lib/simple-icons/icons/pleroma.svg
index c919df99..b85e10a0 100644
--- a/assets/lib/simple-icons/icons/pleroma.svg
+++ b/assets/lib/simple-icons/icons/pleroma.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Pleroma icon</title><path d="M6.36 0A1.868 1.868 0 004.49 1.868V24h5.964V0zm7.113 0v12h4.168a1.868 1.868 0 001.868-1.868V0zm0 18.036V24h4.168a1.868 1.868 0 001.868-1.868v-4.096Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Pleroma</title><path d="M6.36 0A1.868 1.868 0 004.49 1.868V24h5.964V0zm7.113 0v12h4.168a1.868 1.868 0 001.868-1.868V0zm0 18.036V24h4.168a1.868 1.868 0 001.868-1.868v-4.096Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/plesk.svg b/assets/lib/simple-icons/icons/plesk.svg
index 88a6cbe4..cf4ef399 100644
--- a/assets/lib/simple-icons/icons/plesk.svg
+++ b/assets/lib/simple-icons/icons/plesk.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Plesk icon</title><path d="M6.102 7.021v7.353h.736V7.02zm13.655.01v7.343h.735V7.032zm.735 4.633l2.479 2.71h1.019l-2.574-2.731L24 9.122h-.987zm-4.008-2.636c-.536 0-.972.125-1.31.378-.337.252-.505.609-.505 1.07 0 .26.049.474.148.642.1.168.226.306.38.415.154.108.328.198.522.267.194.07.39.134.59.19.175.049.342.1.5.152.158.052.297.117.418.194.12.077.216.17.286.278.07.109.104.244.104.405 0 .21-.095.388-.286.535-.19.147-.484.221-.88.221-.609 0-1.104-.245-1.485-.735l-.572.504c.286.315.59.54.913.678.322.136.693.204 1.11.204.272 0 .527-.033.766-.1a1.89 1.89 0 00.621-.294c.176-.13.316-.288.419-.478.102-.189.153-.402.153-.64 0-.26-.051-.474-.153-.646a1.46 1.46 0 00-.402-.436 2.284 2.284 0 00-.545-.289 13.019 13.019 0 00-.594-.205c-.161-.049-.317-.1-.467-.152a2.013 2.013 0 01-.397-.184.923.923 0 01-.275-.252.598.598 0 01-.104-.357c0-.203.075-.371.225-.504.15-.133.413-.2.787-.2.293 0 .546.055.759.163.213.109.41.278.594.51l.011.01.54-.494c-.272-.315-.556-.535-.853-.661a2.586 2.586 0 00-1.018-.19zm-14.688.041c-.588 0-1.187.095-1.796.284v7.626h.725v-2.72c.182.048.364.087.546.115a3.539 3.539 0 001.586-.11c.336-.102.635-.261.898-.478.263-.217.474-.494.636-.83.16-.336.241-.739.241-1.208 0-.385-.067-.742-.2-1.071a2.42 2.42 0 00-.572-.851 2.636 2.636 0 00-.898-.557c-.35-.133-.739-.2-1.166-.2zm8.886 0c-.322 0-.627.055-.914.163-.287.11-.54.275-.756.5a2.391 2.391 0 00-.515.845c-.126.34-.189.74-.189 1.202 0 .35.052.683.157.998.106.315.263.596.473.84.21.246.473.44.788.583.315.144.683.216 1.103.216.455 0 .844-.068 1.166-.205.322-.137.605-.338.85-.604l-.44-.462c-.204.224-.431.387-.683.488a2.226 2.226 0 01-.84.153c-.554 0-.992-.175-1.314-.526-.322-.35-.493-.822-.514-1.417h3.939c.013-.904-.176-1.592-.568-2.064-.392-.473-.973-.71-1.743-.71zm.031.62c.26 0 .487.04.683.121.196.08.355.187.478.32.122.133.217.295.284.484.066.189.1.392.1.609H9.074a2.126 2.126 0 01.494-1.103c.111-.126.264-.23.456-.31.193-.08.422-.12.688-.12zM1.86 9.7c.616 0 1.094.188 1.434.563.34.374.51.866.51 1.475 0 .659-.185 1.165-.552 1.518-.368.354-.863.53-1.486.53-.168 0-.342-.018-.52-.057a4.836 4.836 0 01-.52-.142V9.868c.182-.063.367-.107.557-.132.189-.024.38-.036.577-.036zm2.377 6.588v.692H8.66v-.692z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Plesk</title><path d="M6.102 7.021v7.353h.736V7.02zm13.655.01v7.343h.735V7.032zm.735 4.633l2.479 2.71h1.019l-2.574-2.731L24 9.122h-.987zm-4.008-2.636c-.536 0-.972.125-1.31.378-.337.252-.505.609-.505 1.07 0 .26.049.474.148.642.1.168.226.306.38.415.154.108.328.198.522.267.194.07.39.134.59.19.175.049.342.1.5.152.158.052.297.117.418.194.12.077.216.17.286.278.07.109.104.244.104.405 0 .21-.095.388-.286.535-.19.147-.484.221-.88.221-.609 0-1.104-.245-1.485-.735l-.572.504c.286.315.59.54.913.678.322.136.693.204 1.11.204.272 0 .527-.033.766-.1a1.89 1.89 0 00.621-.294c.176-.13.316-.288.419-.478.102-.189.153-.402.153-.64 0-.26-.051-.474-.153-.646a1.46 1.46 0 00-.402-.436 2.284 2.284 0 00-.545-.289 13.019 13.019 0 00-.594-.205c-.161-.049-.317-.1-.467-.152a2.013 2.013 0 01-.397-.184.923.923 0 01-.275-.252.598.598 0 01-.104-.357c0-.203.075-.371.225-.504.15-.133.413-.2.787-.2.293 0 .546.055.759.163.213.109.41.278.594.51l.011.01.54-.494c-.272-.315-.556-.535-.853-.661a2.586 2.586 0 00-1.018-.19zm-14.688.041c-.588 0-1.187.095-1.796.284v7.626h.725v-2.72c.182.048.364.087.546.115a3.539 3.539 0 001.586-.11c.336-.102.635-.261.898-.478.263-.217.474-.494.636-.83.16-.336.241-.739.241-1.208 0-.385-.067-.742-.2-1.071a2.42 2.42 0 00-.572-.851 2.636 2.636 0 00-.898-.557c-.35-.133-.739-.2-1.166-.2zm8.886 0c-.322 0-.627.055-.914.163-.287.11-.54.275-.756.5a2.391 2.391 0 00-.515.845c-.126.34-.189.74-.189 1.202 0 .35.052.683.157.998.106.315.263.596.473.84.21.246.473.44.788.583.315.144.683.216 1.103.216.455 0 .844-.068 1.166-.205.322-.137.605-.338.85-.604l-.44-.462c-.204.224-.431.387-.683.488a2.226 2.226 0 01-.84.153c-.554 0-.992-.175-1.314-.526-.322-.35-.493-.822-.514-1.417h3.939c.013-.904-.176-1.592-.568-2.064-.392-.473-.973-.71-1.743-.71zm.031.62c.26 0 .487.04.683.121.196.08.355.187.478.32.122.133.217.295.284.484.066.189.1.392.1.609H9.074a2.126 2.126 0 01.494-1.103c.111-.126.264-.23.456-.31.193-.08.422-.12.688-.12zM1.86 9.7c.616 0 1.094.188 1.434.563.34.374.51.866.51 1.475 0 .659-.185 1.165-.552 1.518-.368.354-.863.53-1.486.53-.168 0-.342-.018-.52-.057a4.836 4.836 0 01-.52-.142V9.868c.182-.063.367-.107.557-.132.189-.024.38-.036.577-.036zm2.377 6.588v.692H8.66v-.692z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/plex.svg b/assets/lib/simple-icons/icons/plex.svg
index d79adcfe..8e74c5e7 100644
--- a/assets/lib/simple-icons/icons/plex.svg
+++ b/assets/lib/simple-icons/icons/plex.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Plex icon</title><path d="M11.643 0H4.68l7.679 12L4.68 24h6.963l7.677-12-7.677-12"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Plex</title><path d="M11.643 0H4.68l7.679 12L4.68 24h6.963l7.677-12-7.677-12"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/plotly.svg b/assets/lib/simple-icons/icons/plotly.svg
new file mode 100644
index 00000000..fb7eaf6e
--- /dev/null
+++ b/assets/lib/simple-icons/icons/plotly.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Plotly</title><path d="M2.021 0C.967 0 .111.883.111 1.973v20.054c0 1.09.857 1.973 1.91 1.973H21.98c1.054 0 1.91-.884 1.91-1.973V1.973C23.89.883 23.034 0 21.98 0H2.02zM10.1 4.648a.72.72 0 0 1 .304.127 1.196 1.196 0 0 1 .356.373.212.212 0 0 1 .084.163c.165.388.135.857-.149 1.203-.19.232-.429.305-.648.263a.241.241 0 0 1-.096.04c-.41.13-.884-.218-.994-.663-.065-.26-.087-.674.076-.908a.367.367 0 0 1 .082-.086.917.917 0 0 1 .05-.264c.077-.214.256-.214.425-.148a.542.542 0 0 1 .09-.006 1.938 1.938 0 0 1 .158.008.277.277 0 0 1 .262-.102zm8.43 0c.098.012.204.06.304.127a1.196 1.196 0 0 1 .355.373.212.212 0 0 1 .084.163c.166.388.136.857-.148 1.203-.19.232-.43.305-.648.263a.241.241 0 0 1-.096.04c-.41.13-.885-.218-.994-.663-.065-.26-.087-.674.076-.908a.367.367 0 0 1 .082-.086.91.91 0 0 1 .049-.264c.077-.214.256-.214.424-.148a.57.57 0 0 1 .091-.006 1.938 1.938 0 0 1 .159.008.277.277 0 0 1 .261-.102zm-13.159.16c.224-.013.461.063.649.198a1.069 1.069 0 0 1 .23.223 1.518 1.518 0 0 1 .059.039c.341.244.312.679.074.992l-.004.008a.91.91 0 0 1-.897.558c-.302-.008-.611-.084-.82-.271-.2-.143-.34-.356-.332-.627a.131.131 0 0 1 .092-.127 1.042 1.042 0 0 1 .342-.6.704.704 0 0 1 .607-.393zm8.682.003c.224-.014.461.06.648.195a1.069 1.069 0 0 1 .229.224 1.518 1.518 0 0 1 .058.04c.342.244.315.679.076.992l-.005.006a.907.907 0 0 1-.895.558c-.302-.008-.614-.084-.822-.271a.73.73 0 0 1-.33-.627.131.131 0 0 1 .092-.125 1.04 1.04 0 0 1 .34-.6.705.705 0 0 1 .61-.393zm-8.282.496a.563.563 0 0 1 .034.04l.011.005a.126.126 0 0 1 .088.076.596.596 0 0 1 .225.125.659.659 0 0 0-.078-.135 1.161 1.161 0 0 0-.28-.111zm8.68 0a.563.563 0 0 1 .033.04l.012.005c.039.007.07.038.088.076a.596.596 0 0 1 .225.125.659.659 0 0 0-.079-.135 1.153 1.153 0 0 0-.279-.111zm-4.553.119a1.912 1.912 0 0 0-.005.295c.075-.042.081-.17.064-.262a.322.322 0 0 0-.059-.033zm8.428 0a1.943 1.943 0 0 0-.004.295c.076-.042.08-.17.063-.262l-.02-.014a.303.303 0 0 0-.039-.02zM5.55 5.65l-.086.028.01.04c.057-.032.133-.028.175.028a.435.435 0 0 0-.003-.057.335.335 0 0 1-.075-.023c-.008-.004-.014-.01-.021-.016zm8.68 0l-.086.028.011.04c.057-.032.134-.028.176.028a.435.435 0 0 0-.004-.057.335.335 0 0 1-.074-.023.153.153 0 0 1-.023-.016zm-9.032.088c.003.017.005.036.01.053a.888.888 0 0 0 .023.078c-.026-.029-.038-.073-.033-.13zm8.68.002a.866.866 0 0 0 .033.13c-.026-.029-.038-.072-.033-.13zm-3.18.02l-.011.017a.38.38 0 0 1-.13.237.183.183 0 0 0-.001.006.119.119 0 0 1-.04.119.9.9 0 0 1-.029.064 1.862 1.862 0 0 1-.148.285.572.572 0 0 0 .217-.205c.1-.156.147-.34.142-.523zm8.43 0l-.012.017a.378.378 0 0 1-.129.237c0 .001 0 .004-.002.006.013.043-.005.088-.039.119a1.163 1.163 0 0 1-.029.064 1.862 1.862 0 0 1-.148.285.566.566 0 0 0 .216-.205c.1-.156.148-.34.143-.523zm-9.961.039a1.314 1.314 0 0 0 .004.133c.017.185.078.383.219.513a.59.59 0 0 0 .086.067 1.038 1.038 0 0 1-.143-.278 2.565 2.565 0 0 1-.166-.435zm8.43 0a1.314 1.314 0 0 0 .004.133c.017.185.078.383.218.513a.59.59 0 0 0 .086.067 1.054 1.054 0 0 1-.142-.278 2.522 2.522 0 0 1-.166-.435zm-11.67.146a.434.434 0 0 1-.028.065l.036.068a.238.238 0 0 0-.008-.133zm8.681 0a.51.51 0 0 1-.029.065l.035.068a.241.241 0 0 0-.006-.133zm-9.09.41a.61.61 0 0 1-.18.038l-.013.015a.532.532 0 0 0 .229-.013.495.495 0 0 1-.035-.04zm8.68 0a.61.61 0 0 1-.18.038l-.013.015a.532.532 0 0 0 .228-.013.625.625 0 0 1-.035-.04zm-4.308 2.3a1.061 1.061 0 0 1 1.052 1.072v8.58c0 .592-.47 1.072-1.052 1.072-.583 0-1.055-.48-1.055-1.072v-8.58c0-.592.472-1.072 1.055-1.073zm8.431 0a1.062 1.062 0 0 1 1.053 1.072v8.58c0 .592-.47 1.072-1.053 1.072-.582 0-1.054-.48-1.054-1.072v-8.58c0-.592.472-1.072 1.054-1.073zm-12.95.105c.224-.013.461.06.649.195a1.075 1.075 0 0 1 .23.225 1.871 1.871 0 0 1 .059.039c.341.244.312.679.074.992l-.004.006a.91.91 0 0 1-.897.558c-.302-.007-.611-.083-.82-.271-.2-.142-.34-.354-.332-.625a.131.131 0 0 1 .092-.127 1.042 1.042 0 0 1 .342-.6.701.701 0 0 1 .607-.393zm8.682 0c.224-.013.461.06.648.195a1.075 1.075 0 0 1 .229.225 1.871 1.871 0 0 1 .058.039c.342.244.315.679.076.992l-.005.006a.907.907 0 0 1-.895.558c-.302-.007-.614-.083-.822-.271a.727.727 0 0 1-.33-.625.131.131 0 0 1 .092-.127 1.04 1.04 0 0 1 .34-.6.705.705 0 0 1 .61-.393zm-8.282.496a.567.567 0 0 1 .034.043l.011.002a.126.126 0 0 1 .088.076.599.599 0 0 1 .225.125.659.659 0 0 0-.078-.133 1.21 1.21 0 0 0-.28-.113zm8.68 0a.567.567 0 0 1 .033.043l.012.002c.039.007.07.038.088.076a.599.599 0 0 1 .225.125.659.659 0 0 0-.079-.133 1.2 1.2 0 0 0-.279-.113zM5.55 9.6l-.086.027.01.041c.057-.032.133-.029.175.027a.437.437 0 0 0-.003-.054.323.323 0 0 1-.075-.026c-.008-.004-.014-.01-.021-.015zm8.68 0l-.086.027.011.041c.057-.032.134-.029.176.027a.437.437 0 0 0-.004-.054.323.323 0 0 1-.074-.026.153.153 0 0 1-.023-.015zm-9.032.09a.575.575 0 0 0 .032.123.164.164 0 0 1-.032-.124zm8.68 0a.575.575 0 0 0 .031.123.169.169 0 0 1-.031-.124zm-7.951.206a.419.419 0 0 1-.028.063 18.358 18.358 0 0 1 .036.07.237.237 0 0 0-.008-.133zm8.681 0a.419.419 0 0 1-.029.063 18.358 18.358 0 0 1 .035.07.241.241 0 0 0-.006-.133zm-9.09.409a.627.627 0 0 1-.18.037v.002l-.013.015a.548.548 0 0 0 .229-.015.61.61 0 0 1-.035-.04zm8.68 0a.627.627 0 0 1-.18.037v.002l-.013.015a.548.548 0 0 0 .228-.015l-.035-.04zm-8.525 2.64c.582 0 1.053.48 1.053 1.073v4.289c0 .592-.47 1.072-1.053 1.072-.582 0-1.055-.48-1.055-1.072v-4.29c0-.592.473-1.072 1.055-1.072zm8.432 0c.581 0 1.054.48 1.054 1.073v4.289c0 .592-.473 1.072-1.054 1.072-.583 0-1.053-.48-1.053-1.072v-4.29c0-.592.47-1.072 1.053-1.072Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/pluralsight.svg b/assets/lib/simple-icons/icons/pluralsight.svg
index 49278652..1a19cd8a 100644
--- a/assets/lib/simple-icons/icons/pluralsight.svg
+++ b/assets/lib/simple-icons/icons/pluralsight.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Pluralsight icon</title><path d="M15.72 1.755C10.08-.301 3.811 2.625 1.771 8.25c-2.071 5.699.854 11.956 6.494 14.01 5.655 2.055 11.956-.87 14.01-6.51 2.057-5.67-.87-11.939-6.524-13.995h-.031zM12 24C5.4 24 0 18.6 0 12S5.4 0 12 0s12 5.4 12 12-5.4 12-12 12M8.926 5.805v12.391L19.68 12 8.926 5.805zm1.049 1.769L17.625 12l-7.65 4.426V7.574M6.449 7.155v9.689L14.85 12 6.449 7.155zm1.051 1.8L12.811 12 7.5 15.061V8.939"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Pluralsight</title><path d="M15.72 1.755C10.08-.301 3.811 2.625 1.771 8.25c-2.071 5.699.854 11.956 6.494 14.01 5.655 2.055 11.956-.87 14.01-6.51 2.057-5.67-.87-11.939-6.524-13.995h-.031zM12 24C5.4 24 0 18.6 0 12S5.4 0 12 0s12 5.4 12 12-5.4 12-12 12M8.926 5.805v12.391L19.68 12 8.926 5.805zm1.049 1.769L17.625 12l-7.65 4.426V7.574M6.449 7.155v9.689L14.85 12 6.449 7.155zm1.051 1.8L12.811 12 7.5 15.061V8.939"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/plurk.svg b/assets/lib/simple-icons/icons/plurk.svg
index d871b989..e1b2905c 100644
--- a/assets/lib/simple-icons/icons/plurk.svg
+++ b/assets/lib/simple-icons/icons/plurk.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Plurk icon</title><path d="M12.902 1.906a10.065 10.065 0 0 0-7.88 3.707 10.18 10.18 0 0 0-.283.357l.004-.003c.232-.196.473-.345.717-.445l.058-.023c.299-.112.602-.147.9-.088 1.44.289 2.19 2.609 1.675 5.183-.515 2.574-2.1 4.427-3.54 4.139-1.01-.202-1.678-1.405-1.812-2.992v-.005.052c-.003.132-.003.266 0 .4v.073l.002.059c.005.149.013.296.024.443.005.067.012.134.019.2a10.032 10.032 0 0 0 .961 3.443c.06.126.03.276-.078.363l-.277.226a.906.906 0 0 0-.29.97c0 .006.003.01.006.017a.955.955 0 0 0 .059.142l.05-.039.23-.174a.261.261 0 1 1 .316.416l-.245.186-.037.028 1.177 1.448a.91.91 0 0 0 1.275.131l.258-.21a.298.298 0 0 1 .374 0 10.05 10.05 0 0 0 6.527 2.181 10.042 10.042 0 0 0 5.572-1.855.298.298 0 0 1 .38.025l.163.156a.909.909 0 0 0 1.179.059l-.004-.004-.21-.197a.262.262 0 0 1 .358-.382l.225.21 1.26-1.326a.91.91 0 0 0-.033-1.282l-.263-.25a.297.297 0 0 1-.054-.36 10.06 10.06 0 0 0 1.103-6.671c.301-.278.853-.824 1.069-1.292.231-.502.29-1.02-.323-.792-.476.177-.842.291-1.286.19-1.417-3.593-4.847-6.193-8.851-6.4a9.71 9.71 0 0 0-.473-.014zM2.265 6.247a1.228 1.228 0 0 0-1.082 1.764 1.23 1.23 0 1 0 .754 2.236c.177-.124.306-.289.395-.47.186.342.46.627.778.823a5.59 5.59 0 0 0 .017.6c.102 1.228.62 2.16 1.401 2.316 1.114.223 2.34-1.21 2.738-3.2.399-1.99-.181-3.784-1.295-4.007-.434-.087-.885.08-1.298.432-.45.383-.854.988-1.14 1.73-.01-.002-.02-.003-.03-.007-.14-.04-.215-.131-.312-.152a1.23 1.23 0 0 0-.926-2.065zm2.862 1.244c.054 0 .107.004.16.015.726.143 1.104 1.312.844 2.608-.259 1.298-1.058 2.23-1.783 2.085-.493-.098-.824-.67-.905-1.433.181.07.37.113.56.122.527.024.871-.154 1.14-.513.346-.465.084-1.753-.374-1.92-.356-.13-.567.027-.884.05.16-.298.351-.544.557-.72.219-.185.453-.292.686-.295z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Plurk</title><path d="M12.9017 1.9056a10.0652 10.0652 0 00-7.8802 3.707 10.1803 10.1803 0 00-.283.357l.004-.003c.232-.196.473-.345.717-.445l.058-.023c.299-.112.602-.147.9-.088 1.4401.289 2.1901 2.6091 1.6751 5.1832-.515 2.574-2.1 4.4271-3.54 4.139-1.0101-.202-1.6781-1.405-1.8121-2.992v-.005.052c-.003.132-.003.266 0 .4v.073l.002.059c.005.149.013.296.024.443.005.067.012.134.019.2a10.0322 10.0322 0 00.961 3.4431c.06.126.03.276-.078.363l-.277.226a.906.906 0 00-.29.97c0 .006.003.01.006.017a.955.955 0 00.059.142l.05-.039.23-.174a.2612.2612 0 11.316.416l-.245.186-.037.028 1.177 1.4481a.91.91 0 001.275.131l.258-.21a.298.298 0 01.374 0 10.0502 10.0502 0 006.5272 2.181 10.0422 10.0422 0 005.5722-1.855.298.298 0 01.38.025l.163.156a.909.909 0 001.179.059l-.004-.004-.21-.197a.262.262 0 01.358-.382l.225.21 1.26-1.326a.91.91 0 00-.033-1.282l-.263-.25a.297.297 0 01-.054-.36 10.0602 10.0602 0 001.103-6.6712c.301-.278.853-.824 1.0691-1.292.231-.502.29-1.02-.323-.792-.476.177-.842.291-1.286.19-1.417-3.5932-4.8472-6.1932-8.8513-6.4002a9.7102 9.7102 0 00-.473-.014zM2.2645 6.2466a1.228 1.228 0 00-1.082 1.7641 1.23 1.23 0 10.754 2.236c.177-.124.306-.289.395-.47.186.342.46.627.778.823a5.5901 5.5901 0 00.017.6001c.102 1.228.62 2.16 1.401 2.316 1.114.223 2.34-1.21 2.738-3.2.3991-1.99-.181-3.7841-1.295-4.0071-.434-.087-.885.08-1.298.432-.45.383-.854.988-1.14 1.73-.01-.002-.02-.003-.03-.007-.14-.04-.215-.131-.312-.152a1.23 1.23 0 00-.926-2.065zm2.862 1.2441c.054 0 .107.004.16.015.726.143 1.104 1.312.844 2.608-.259 1.2981-1.058 2.2301-1.783 2.0851-.493-.098-.824-.67-.905-1.433.181.07.37.113.56.122.527.024.871-.154 1.14-.513.346-.465.084-1.753-.374-1.92-.356-.13-.567.027-.884.05.16-.298.351-.544.557-.72.219-.185.453-.292.686-.295z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/pluscodes.svg b/assets/lib/simple-icons/icons/pluscodes.svg
index 0315ab0e..cb66c915 100644
--- a/assets/lib/simple-icons/icons/pluscodes.svg
+++ b/assets/lib/simple-icons/icons/pluscodes.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Plus Codes icon</title><path d="M2.578 14.583A2.58 2.58 0 010 12a2.58 2.58 0 012.578-2.584A2.58 2.58 0 015.156 12a2.58 2.58 0 01-2.578 2.583zm9.486-9.377a2.58 2.58 0 01-2.579-2.584A2.58 2.58 0 0112.064.038a2.58 2.58 0 012.578 2.584 2.58 2.58 0 01-2.578 2.584zm9.358 9.377A2.58 2.58 0 0118.844 12a2.58 2.58 0 012.578-2.584A2.58 2.58 0 0124 12a2.58 2.58 0 01-2.578 2.583zm-6.78 6.795a2.58 2.58 0 01-2.578 2.584 2.58 2.58 0 01-2.579-2.584 2.58 2.58 0 012.579-2.584 2.58 2.58 0 012.578 2.584m-2.578-6.795A2.58 2.58 0 019.485 12a2.58 2.58 0 012.579-2.584A2.58 2.58 0 0114.642 12a2.58 2.58 0 01-2.578 2.583Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Plus Codes</title><path d="M12 0a2.4 2.4 0 00-2.4 2.4A2.4 2.4 0 0012 4.8a2.4 2.4 0 002.4-2.4A2.4 2.4 0 0012 0zM9.543 9.543v4.914h4.914V9.543zM2.4 9.6A2.4 2.4 0 000 12a2.4 2.4 0 002.4 2.4A2.4 2.4 0 004.8 12a2.4 2.4 0 00-2.4-2.4zm19.2 0a2.4 2.4 0 00-2.4 2.4 2.4 2.4 0 002.4 2.4A2.4 2.4 0 0024 12a2.4 2.4 0 00-2.4-2.4zM12 19.2a2.4 2.4 0 00-2.4 2.4A2.4 2.4 0 0012 24a2.4 2.4 0 002.4-2.4 2.4 2.4 0 00-2.4-2.4z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/pm2.svg b/assets/lib/simple-icons/icons/pm2.svg
new file mode 100644
index 00000000..26955309
--- /dev/null
+++ b/assets/lib/simple-icons/icons/pm2.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>PM2</title><path d="M10.43 3.223c-.83 1.386-.906 1.499-1.21 1.81-.633.654-1.417 1.003-2.415 1.074-.187.013-1.265.033-2.702.05-.638.008-.75.011-.766.028-.01.011-.185.274-.39.586l-.37.565.104.005c.056.003.443-.003.858-.011a93.159 93.163 0 011.335-.019c.572 0 .58 0 .667.03.246.084.393.306.355.533a.504.504 0 01-.394.42c-.104.027-.375.034-2.821.075-.426.007-.78.015-.784.02a30.5 30.5 0 00-.747 1.145c.004.004.405 0 .893-.007 3.13-.051 5.844-.092 6.6-.1.727-.008.995-.02 1.19-.054.54-.092.954-.297 1.31-.65.253-.252.475-.572.852-1.23.125-.217.262-.45.307-.52l.138-.223c.033-.054.07-.11.082-.125.033-.038.1-.146.14-.23.034-.07.534-.906.75-1.257.15-.242.232-.312.42-.355.26-.06.58.102.653.332.06.188.033.305-.136.59-1.21 2.035-1.65 2.764-1.887 3.123-.672 1.018-1.684 1.564-2.991 1.613-.105.003-.773.015-1.486.026l-2.052.031-1.591.027a1166.545 1166.596 0 01-3.102.048c-.502.005-.761.013-.78.022a.723.723 0 00-.12.186 2.87 2.87 0 00-.285.793.427.427 0 01-.039.132c-.024.007-.02.787.003.81a.41.41 0 01.04.135c.057.285.197.616.395.932l.092.147 1.316.008c.724.004 2.597.015 4.164.021 1.692.008 2.914.019 3.01.027.318.026.488.052.75.118a3.374 3.374 0 011.652.95c.255.264.38.44.941 1.339.366.584 1.455 2.363 1.494 2.44.142.28.05.571-.223.7a.588.588 0 01-.518.01c-.145-.072-.152-.08-.9-1.29a85.42 85.42 0 00-.512-.822 26.09 26.091 0 01-.344-.565c-.37-.62-.588-.93-.82-1.162a2.367 2.367 0 00-1.164-.627c-.286-.064-.338-.066-2.328-.077a590.763 590.789 0 00-3.215-.014c-.738 0-1.634-.005-1.99-.008-.517-.008-.647-.007-.647.007 0 .008.156.27.348.578l.348.56.332.003c2.407.019 2.53.02 2.619.037.194.04.309.123.386.28a.35.35 0 01.05.212.43.43 0 01-.143.342.568.568 0 01-.251.142c-.075.022-.142.024-1.214.02-.92-.003-1.134 0-1.126.013.04.072.695 1.125.704 1.135.008.007.592.016 1.508.021 1.23.008 1.527.013 1.673.03 1.105.13 1.942.603 2.573 1.457.117.158.248.366.912 1.44l.466.754h.714c.392 0 .714-.003.714-.007s-.257-.42-.57-.924a493.191 493.213 0 01-1.49-2.407 12.643 12.644 0 00-.274-.43 2.395 2.395 0 00-1.434-.97c-.252-.061-.428-.077-.874-.083-.446-.006-.522-.016-.646-.08a.552.552 0 01-.231-.227c-.033-.065-.037-.088-.037-.211 0-.127.003-.145.037-.208a.557.557 0 01.357-.275c.07-.021.13-.024.52-.024.345 0 .48.005.625.024.937.12 1.64.445 2.224 1.027.276.276.397.443.758 1.042.127.209.412.672.636 1.028l1.05 1.686.644 1.04h.905c.722 0 .905-.005.9-.018a23.922 23.923 0 00-.24-.39c-.46-.737-.493-.796-.513-.943-.027-.206.118-.419.345-.5a.548.548 0 01.6.134c.064.063.414.61.936 1.465l.156.255.178-.009a3.32 3.32 0 001.31-.325c.065-.03.125-.056.134-.059a3.149 3.149 0 001.078-.886 541.326 541.35 0 002.393-3.65c2.484-3.806 2.433-3.724 2.554-4.086a2.682 2.682 0 00-.115-2.016c-.048-.103-.838-1.387-2.263-3.683a536.842 536.866 0 00-2.253-3.617 2.936 2.936 0 00-1.1-.915 3.19 3.191 0 00-.902-.316c-.18-.033-.193-.036-.183-.052.004-.008-.106-.01-.292-.01l-.298.005-.265.44c-.588.98-.643 1.068-.726 1.151a.568.568 0 01-.309.169c-.222.04-.496-.093-.59-.287-.03-.057-.033-.084-.033-.204 0-.187-.009-.167.504-1.01a3.41 3.41 0 00.147-.254c0-.007-.29-.012-.71-.012h-.71l-.019.03a441.636 441.636 0 01-1.829 3.028c-.21.347-.468.776-.57.953-.231.396-.326.54-.49.744a4.123 4.123 0 01-.563.56c-.53.411-1.17.66-1.92.747-.361.042-.884.048-1.072.013a.576.576 0 01-.384-.276c-.033-.065-.037-.083-.037-.21 0-.12.004-.147.034-.21a.542.542 0 01.352-.279c.073-.02.16-.027.515-.037.264-.007.485-.02.578-.033a3.15 3.15 0 00.599-.15c.164-.065.396-.19.532-.288a2.87 2.87 0 00.53-.526c.056-.074.325-.509.599-.966.273-.458.8-1.334 1.171-1.947.37-.614.677-1.124.68-1.135.006-.016-.098-.018-.703-.018h-.708l-.622 1.035zm7.036.536c0 .01.005.02.012.022.005.001.101.149.212.327.506.81.692 1.117.72 1.194.036.1.04.231.008.323a.646.646 0 01-.24.262.543.543 0 01-.657-.088c-.08-.075-.165-.201-.46-.685-.11-.182-.214-.346-.229-.366-.016-.024-.022-.046-.016-.066.01-.031.56-.88.601-.925.027-.03.05-.03.05.003zM16.08 5.896c-.004.007 0 .013.005.016.012.004 1.003 1.593 1.574 2.523.48.778.696 1.127.88 1.413.301.469.413.687.526 1.026.115.342.16.653.147 1.005-.007.24-.03.39-.088.624-.102.4-.325.866-.61 1.278-.09.128-.273.322-.304.322-.01 0-.02.005-.02.012 0 .006-.039.025-.086.04a.633.633 0 01-.39-.012.661.661 0 01-.294-.283c-.032-.067-.034-.087-.029-.19.007-.14.036-.202.231-.503.25-.385.352-.596.424-.885.124-.49.063-.976-.184-1.46-.049-.095-.36-.606-.692-1.138a342.675 342.69 0 01-1.16-1.867c-.308-.496-.569-.918-.584-.938-.014-.021-.024-.045-.02-.054.01-.027.59-.907.62-.938.02-.022.03-.026.043-.016.01.008.015.02.01.026zm3.142.909a.59.59 0 01.26.188c.095.117 1.425 2.23 1.911 3.04.28.462.41.75.5 1.103.062.243.086.431.086.689 0 .343-.037.57-.145.897-.126.382-.217.553-.658 1.236-.16.25-.998 1.548-1.858 2.887l-1.862 2.89c-.163.253-.303.47-.31.485-.008.013-.019.023-.027.02a20.635 20.636 0 01-.625-1.006c0-.009.012-.033.025-.052a8337.117 8337.482 0 013.846-5.967c.205-.318.266-.429.343-.62a1.95 1.95 0 00.15-.84c-.014-.316-.077-.54-.254-.894-.13-.266-.255-.476-.562-.95-.125-.193-.269-.42-.319-.504a76.564 76.567 0 00-.486-.789c-.764-1.226-.755-1.21-.757-1.35 0-.118.04-.212.128-.307a.67.67 0 01.32-.184.633.633 0 01.294.027zm-4.54 1.215l.2.325c1.091 1.747 1.137 1.824 1.247 2.043.461.919.465 1.832.014 2.735-.096.19-.135.255-.767 1.236-.848 1.32-.947 1.47-.974 1.5-.022.022-.025.024-.025.003 0-.012-.533-.881-1.184-1.93a193.219 193.227 0 01-1.184-1.918c0-.007.554-.858 1.233-1.892a612.753 612.78 0 001.314-2.007.706.706 0 01.096-.127c.007 0 .02.014.03.033zm2.437 6.843a.675.675 0 01.277.26.469.469 0 01.041.153c.01.133-.024.21-.264.588a820.264 820.3 0 01-1.25 1.954l-.125.194c-.022.04-.026.042-.048.026a29.746 29.747 0 01-.605-.97c-.012-.03 1.237-1.975 1.327-2.068a.55.55 0 01.446-.182.436.436 0 01.201.045z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/pnpm.svg b/assets/lib/simple-icons/icons/pnpm.svg
new file mode 100644
index 00000000..332a8413
--- /dev/null
+++ b/assets/lib/simple-icons/icons/pnpm.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>pnpm</title><path d="M0 0v7.5h7.5V0zm8.25 0v7.5h7.498V0zm8.25 0v7.5H24V0zM8.25 8.25v7.5h7.498v-7.5zm8.25 0v7.5H24v-7.5zM0 16.5V24h7.5v-7.5zm8.25 0V24h7.498v-7.5zm8.25 0V24H24v-7.5z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/pocket.svg b/assets/lib/simple-icons/icons/pocket.svg
index 873d0914..ce6c98d2 100644
--- a/assets/lib/simple-icons/icons/pocket.svg
+++ b/assets/lib/simple-icons/icons/pocket.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Pocket icon</title><path d="M18.813 10.259l-5.646 5.419c-.32.305-.73.458-1.141.458-.41 0-.821-.153-1.141-.458l-5.646-5.419c-.657-.628-.677-1.671-.049-2.326.63-.657 1.671-.679 2.325-.05l4.511 4.322 4.517-4.322c.66-.631 1.697-.607 2.326.049.631.645.615 1.695-.045 2.326l-.011.001zm5.083-7.546c-.299-.858-1.125-1.436-2.041-1.436H2.179c-.9 0-1.717.564-2.037 1.405-.094.25-.142.511-.142.774v7.245l.084 1.441c.348 3.277 2.047 6.142 4.682 8.139.045.036.094.07.143.105l.03.023c1.411 1.03 2.989 1.728 4.694 2.072.786.158 1.591.24 2.389.24.739 0 1.481-.067 2.209-.204.088-.029.176-.045.264-.06.023 0 .049-.015.074-.029 1.633-.36 3.148-1.036 4.508-2.025l.029-.031.135-.105c2.627-1.995 4.324-4.862 4.686-8.148L24 10.678V3.445c0-.251-.031-.5-.121-.742l.017.01z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Pocket</title><path d="M18.813 10.259l-5.646 5.419c-.32.305-.73.458-1.141.458-.41 0-.821-.153-1.141-.458l-5.646-5.419c-.657-.628-.677-1.671-.049-2.326.63-.657 1.671-.679 2.325-.05l4.511 4.322 4.517-4.322c.66-.631 1.697-.607 2.326.049.631.645.615 1.695-.045 2.326l-.011.001zm5.083-7.546c-.299-.858-1.125-1.436-2.041-1.436H2.179c-.9 0-1.717.564-2.037 1.405-.094.25-.142.511-.142.774v7.245l.084 1.441c.348 3.277 2.047 6.142 4.682 8.139.045.036.094.07.143.105l.03.023c1.411 1.03 2.989 1.728 4.694 2.072.786.158 1.591.24 2.389.24.739 0 1.481-.067 2.209-.204.088-.029.176-.045.264-.06.023 0 .049-.015.074-.029 1.633-.36 3.148-1.036 4.508-2.025l.029-.031.135-.105c2.627-1.995 4.324-4.862 4.686-8.148L24 10.678V3.445c0-.251-.031-.5-.121-.742l.017.01z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/pocketcasts.svg b/assets/lib/simple-icons/icons/pocketcasts.svg
index e2ed016e..fb330885 100644
--- a/assets/lib/simple-icons/icons/pocketcasts.svg
+++ b/assets/lib/simple-icons/icons/pocketcasts.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Pocket Casts icon</title><path d="M12,0C5.372,0,0,5.372,0,12c0,6.628,5.372,12,12,12c6.628,0,12-5.372,12-12 C24,5.372,18.628,0,12,0z M15.564,12c0-1.968-1.596-3.564-3.564-3.564c-1.968,0-3.564,1.595-3.564,3.564 c0,1.968,1.595,3.564,3.564,3.564V17.6c-3.093,0-5.6-2.507-5.6-5.6c0-3.093,2.507-5.6,5.6-5.6c3.093,0,5.6,2.507,5.6,5.6H15.564z M19,12c0-3.866-3.134-7-7-7c-3.866,0-7,3.134-7,7c0,3.866,3.134,7,7,7v2.333c-5.155,0-9.333-4.179-9.333-9.333 c0-5.155,4.179-9.333,9.333-9.333c5.155,0,9.333,4.179,9.333,9.333H19z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Pocket Casts</title><path d="M12,0C5.372,0,0,5.372,0,12c0,6.628,5.372,12,12,12c6.628,0,12-5.372,12-12 C24,5.372,18.628,0,12,0z M15.564,12c0-1.968-1.596-3.564-3.564-3.564c-1.968,0-3.564,1.595-3.564,3.564 c0,1.968,1.595,3.564,3.564,3.564V17.6c-3.093,0-5.6-2.507-5.6-5.6c0-3.093,2.507-5.6,5.6-5.6c3.093,0,5.6,2.507,5.6,5.6H15.564z M19,12c0-3.866-3.134-7-7-7c-3.866,0-7,3.134-7,7c0,3.866,3.134,7,7,7v2.333c-5.155,0-9.333-4.179-9.333-9.333 c0-5.155,4.179-9.333,9.333-9.333c5.155,0,9.333,4.179,9.333,9.333H19z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/podcastaddict.svg b/assets/lib/simple-icons/icons/podcastaddict.svg
new file mode 100644
index 00000000..d0866bb8
--- /dev/null
+++ b/assets/lib/simple-icons/icons/podcastaddict.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Podcast Addict</title><path d="M5.36.037C2.41.037 0 2.447 0 5.397v13.207c0 2.95 2.41 5.36 5.36 5.36h13.28c2.945 0 5.36-2.41 5.36-5.36V5.396c0-2.95-2.415-5.36-5.36-5.36zm6.585 4.285a7.72 7.72 0 017.717 7.544l.005 7.896h-3.39v-1.326a7.68 7.68 0 01-4.327 1.326 7.777 7.777 0 01-2.384-.378v-4.63a3.647 3.647 0 002.416.91 3.666 3.666 0 003.599-2.97h-1.284a2.416 2.416 0 01-4.73-.66v-.031c0-1.095.728-2.023 1.728-2.316V8.403a3.67 3.67 0 00-2.975 3.6v6.852a7.72 7.72 0 013.625-14.533zm.031 1.87V7.43h.006a4.575 4.575 0 014.573 4.574v.01h1.237v-.01a5.81 5.81 0 00-5.81-5.81zm0 2.149v1.246h.006a2.413 2.413 0 012.415 2.416v.01h1.247v-.01a3.662 3.662 0 00-3.662-3.662zm0 2.252c-.78 0-1.409.629-1.409 1.41 0 .78.629 1.409 1.41 1.409.78 0 1.409-.629 1.409-1.41 0-.78-.629-1.409-1.41-1.409z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/podman.svg b/assets/lib/simple-icons/icons/podman.svg
new file mode 100644
index 00000000..a921cbb9
--- /dev/null
+++ b/assets/lib/simple-icons/icons/podman.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Podman</title><path d="M17.2.275L6.75.308a.259.259 0 0 0-.203.098L.056 8.602a.259.259 0 0 0-.05.219l2.356 10.194a.26.26 0 0 0 .14.174l9.43 4.511a.258.258 0 0 0 .224-.002l9.401-4.566a.259.259 0 0 0 .141-.175L23.993 8.75a.258.258 0 0 0-.051-.22L17.403.374A.259.259 0 0 0 17.2.275zm-.123.517l6.385 7.966-2.242 9.964-9.177 4.457-9.205-4.402L.54 8.827 6.875.824zM11.46 2.857c-.933 0-1.84.1-2.426.332h-.002c-1.554.569-2.725 2.105-3.074 3.952v.004c-.309 1.463-.392 2.703-.556 3.824-.07.481-.159.94-.283 1.387-.628.497-1.079 1.263-1.244 2.138v.004c-.116.547-.181 1.04-.237 1.5h-.644v.518h8.891c-.061.464-.122.996-.181 1.42H7.596v.517h7.939c-.242-.078-.486-.218-.756-.502h-.697l-.85.488-.232-.396.162-.092h-1.069c.113-.776.17-1.601.373-2.564v-.004c.22-1.164.96-2.112 1.895-2.453l.004-.002h.002c.318-.127.928-.205 1.543-.205.613 0 1.244.075 1.622.207.935.341 1.676 1.29 1.895 2.453v.004c.204.963.26 1.788.373 2.564h-.742l.162.092-.233.396-.85-.488h-.75c-.219.25-.474.412-.747.502h4.392v-.518h-.842c-.103-.743-.181-1.67-.382-2.623v-.002a4.14 4.14 0 0 0-.264-.863h1.863v-.517h-2.13a3.488 3.488 0 0 0-.8-.906h1.8v-.518H17.95a8.862 8.862 0 0 1-.193-.775h1.484v-.518h-1.576c-.013-.081-.027-.161-.039-.244-.164-1.12-.246-2.36-.555-3.824v-.004c-.348-1.848-1.52-3.383-3.075-3.952l-.002-.002h-.002c-.65-.227-1.596-.33-2.531-.33zm0 .386c.904 0 1.833.11 2.404.309h.002c1.4.514 2.5 1.934 2.826 3.666v.003c.303 1.436.385 2.66.552 3.805.076.515.173 1.013.315 1.505-.449-.135-1.05-.197-1.648-.197-.12 0-.236.003-.352.008l-1.863-1.865a2.17 2.17 0 0 0 .11-.246l2.13 1.23.13-.224-2.185-1.262c.016-.069.027-.14.036-.21l2.302.616.068-.248-2.354-.63c-.02-1.153-1.008-2.078-2.208-2.078-1.205 0-2.196.931-2.206 2.091l-2.303.617.066.25 2.252-.605c.01.076.024.151.041.224L7.436 11.24l.129.222 2.087-1.207c.034.089.074.176.12.258l-1.266 1.266a6.959 6.959 0 0 0-1.045-.075c-.603 0-1.186.064-1.578.22a2.668 2.668 0 0 0-.285.124c.076-.335.137-.675.187-1.021.168-1.144.248-2.37.551-3.805l.002-.001v-.002c.326-1.733 1.426-3.153 2.828-3.666h.002l.004-.002c.488-.194 1.381-.307 2.287-.307zM8.473 5.194a1.295 1.295 0 0 0-.965.502l-.117.153.306.236.12-.152a.923.923 0 0 1 .673-.352.92.92 0 0 1 .67.262l.139.134.271-.275-.136-.137a1.293 1.293 0 0 0-.961-.37zm6.39 0a1.289 1.289 0 0 0-.96.371l-.138.137.274.275.136-.134a.923.923 0 0 1 .672-.262.923.923 0 0 1 .674.352l.119.152.307-.236-.12-.153c-.23-.3-.587-.486-.964-.502zM8.53 6.708c-.642 0-1.164.538-1.164 1.19 0 .65.522 1.187 1.164 1.187.643 0 1.164-.536 1.164-1.188 0-.651-.521-1.19-1.164-1.19zm6.273 0c-.643 0-1.162.538-1.162 1.19 0 .65.52 1.187 1.162 1.187.643 0 1.164-.536 1.164-1.188 0-.651-.521-1.19-1.164-1.19zm-6.273.387c.428 0 .776.355.776.802 0 .447-.348.8-.776.8a.785.785 0 0 1-.775-.8c0-.035.002-.07.006-.103.07.191.248.318.445.318a.487.487 0 0 0 .477-.496.49.49 0 0 0-.383-.486.759.759 0 0 1 .23-.035zm6.273 0c.428 0 .777.355.777.802 0 .447-.349.8-.777.8a.785.785 0 0 1-.77-.9c.072.19.248.315.444.315a.486.486 0 0 0 .479-.496.491.491 0 0 0-.383-.484.755.755 0 0 1 .23-.037zm-3.08.716c1.012 0 1.819.775 1.819 1.723 0 .947-.807 1.722-1.819 1.722s-1.82-.775-1.82-1.722c0-.948.808-1.723 1.82-1.723zm-.002.528c-.142 0-.258.043-.355.076a.804.804 0 0 1-.232.054c-.107 0-.2.047-.268.127a.568.568 0 0 0-.104.207c-.04.134-.062.268-.08.315a.276.276 0 0 0 .032.25c.033.056.071.1.117.146.09.092.206.183.322.268.12.088.237.166.326.224l-.008.09c-.043.036-.14.102-.324.178a.533.533 0 0 1-.299.025.43.43 0 0 1-.236-.172c.015-.138.044-.293.068-.449l-.376-.095c-.05.238-.067.43-.094.64l.037.059c.143.224.318.344.506.392a.908.908 0 0 0 .52-.033 1.57 1.57 0 0 0 .444-.242c.088.067.244.174.446.242a.908.908 0 0 0 .52.033.868.868 0 0 0 .507-.392l.037-.059a6.292 6.292 0 0 0-.096-.637l-.377.092c.032.148.051.32.07.451a.434.434 0 0 1-.237.17.533.533 0 0 1-.3-.025c-.178-.068-.272-.14-.325-.178l-.006-.084c.09-.058.209-.137.336-.23.115-.085.231-.176.322-.268a.72.72 0 0 0 .117-.146.273.273 0 0 0 .031-.25c-.018-.047-.039-.181-.08-.315a.564.564 0 0 0-.103-.207.343.343 0 0 0-.268-.127.815.815 0 0 1-.234-.054c-.097-.033-.212-.076-.354-.076zm.002.386c.057 0 .134.024.23.057.09.03.208.07.337.076.04.102.06.237.09.338a.361.361 0 0 1-.041.045 2.66 2.66 0 0 1-.276.228c-.165.122-.271.188-.342.233a5.287 5.287 0 0 1-.34-.233 2.557 2.557 0 0 1-.275-.228.34.34 0 0 1-.04-.047c.035-.119.046-.234.089-.34.08.012.246-.042.336-.072a.837.837 0 0 1 .232-.057zm-3.234.61a.635.635 0 0 0-.611.517l1.084-.289a.614.614 0 0 0-.473-.228zm6.336 0a.61.61 0 0 0-.436.187c.352.096.69.184 1.033.275a.632.632 0 0 0-.597-.462zm-.623.607c-.007.035-.002.07-.002.103l.921.532a.648.648 0 0 0 .276-.313l-1.195-.322zm-5.086.05l-1.18.315c.078.15.207.264.362.316l.797-.46c.018-.059.015-.12.021-.17zm4.441.714l1.656 1.658a4.19 4.19 0 0 0-.826.146l-.95-1.647a2.51 2.51 0 0 0 .12-.157zm-3.646.03c.04.055.083.118.129.169l-.658 1.134a2.656 2.656 0 0 0-.276-.119l-.002-.002a3.3 3.3 0 0 0-.292-.082zm3.338.317l.892 1.547c-.623.251-1.149.725-1.523 1.33h-1.652c-.262-.75-.741-1.38-1.358-1.764l.623-1.082c.394.347.919.559 1.492.559a2.25 2.25 0 0 0 1.526-.59zM7.46 12.09c.574 0 1.167.073 1.518.195.867.319 1.555 1.203 1.76 2.285l.001.002v.002c.109.513.173.98.227 1.424H9.86a.386.386 0 0 0-.494 0H9.11a1.351 1.351 0 0 0-.078-.418.799.799 0 0 0 .569.238c.45 0 .814-.375.814-.828a.824.824 0 0 0-.814-.828.822.822 0 0 0-.791 1.016 1.495 1.495 0 0 0-1.18-.559c-.798 0-1.46.611-1.48 1.38h-.342a.386.386 0 0 0-.494 0H4.028c.054-.445.116-.912.224-1.425l.002-.002v-.002c.205-1.084.894-1.97 1.764-2.287h.002l.004-.002c.295-.117.863-.191 1.437-.19zm-1.91 1.105a.898.898 0 0 0-.67.348l-.119.154.307.237.119-.155a.525.525 0 0 1 .379-.197.52.52 0 0 1 .377.147l.138.136.272-.275-.137-.137a.895.895 0 0 0-.666-.258zm4.094 0a.9.9 0 0 0-.668.258l-.137.137.273.275.137-.136a.522.522 0 0 1 .377-.147.525.525 0 0 1 .379.197l.119.155.307-.237-.12-.154a.894.894 0 0 0-.667-.348zm4.222.735a.947.947 0 0 0-.707.365l-.117.154.306.237.12-.155a.568.568 0 0 1 .413-.213.571.571 0 0 1 .414.159l.14.136.27-.275-.138-.137a.942.942 0 0 0-.701-.271zm4.374 0a.942.942 0 0 0-.7.271l-.14.137.272.275.139-.136a.571.571 0 0 1 .414-.159.568.568 0 0 1 .414.213l.119.155.306-.237-.117-.154a.947.947 0 0 0-.707-.365zm-12.65.232a.824.824 0 0 0-.815.828c0 .453.365.828.814.828.45 0 .815-.375.815-.828a.824.824 0 0 0-.815-.828zm5.518.285h1.242a4.137 4.137 0 0 0-.263.864v.002c-.05.237-.092.464-.127.685h-.602a16.77 16.77 0 0 0-.236-1.5l-.002-.002c-.003-.016-.009-.032-.012-.049zm-5.519.102a.43.43 0 0 1 .426.441.43.43 0 0 1-.426.442c-.22 0-.4-.171-.422-.397a.298.298 0 0 0 .215.092.31.31 0 0 0 .305-.316.317.317 0 0 0-.129-.258c.01-.001.02-.004.031-.004zm4.014 0c.235 0 .427.193.427.441a.433.433 0 0 1-.427.442.427.427 0 0 1-.422-.405.3.3 0 0 0 .256.145.31.31 0 0 0 .304-.317.314.314 0 0 0-.207-.298c.023-.004.045-.008.069-.008zm4.304.414a.865.865 0 0 0-.856.87c0 .478.382.874.856.874a.868.868 0 0 0 .857-.873.867.867 0 0 0-.857-.871zm4.292 0a.867.867 0 0 0-.814 1.14 1.597 1.597 0 0 0-1.295-.652c-.846 0-1.546.65-1.568 1.463l-1.525.408.066.248 1.477-.394c.004.028.009.06.015.087l-1.418.817.131.222 1.367-.789c.235.552.801.94 1.455.94.66 0 1.233-.397 1.463-.957l1.398.806.13-.222-1.45-.836c.005-.025.008-.053.012-.078l1.511.404.067-.248-1.563-.418a1.438 1.438 0 0 0-.107-.5c.157.186.39.303.648.303a.867.867 0 0 0 .856-.873.865.865 0 0 0-.856-.871zm-10.567.043c.598 0 1.071.444 1.092.992h-.41c.007-.01.016-.02.023-.033a.24.24 0 0 0 .025-.22c-.005-.016-.021-.102-.05-.196a.416.416 0 0 0-.078-.156.282.282 0 0 0-.225-.108.499.499 0 0 1-.129-.031c-.062-.021-.142-.05-.248-.05-.106 0-.188.029-.25.05a.49.49 0 0 1-.127.031.29.29 0 0 0-.225.108.424.424 0 0 0-.08.156c-.029.094-.043.18-.048.195a.242.242 0 0 0 .023.22c.008.014.017.023.025.034h-.41c.02-.548.494-.992 1.092-.992zm6.275.344c.259 0 .47.211.47.484a.477.477 0 0 1-.47.486.472.472 0 0 1-.467-.453.322.322 0 0 0 .246.115c.18 0 .326-.15.326-.338a.34.34 0 0 0-.156-.289c.017-.002.033-.005.05-.005zm4.292 0c.26 0 .469.211.469.484 0 .272-.21.486-.469.486a.477.477 0 0 1-.47-.486c0-.016.002-.031.004-.047a.33.33 0 0 0 .312.24c.18 0 .326-.15.326-.338a.338.338 0 0 0-.256-.332.475.475 0 0 1 .084-.007zm-10.567.24c.021 0 .063.01.125.031.086.03.117.039.186.049.012.041.022.088.033.129a1.475 1.475 0 0 1-.168.138c-.038.028-.064.045-.088.061h-.176c-.024-.016-.052-.033-.09-.06a1.602 1.602 0 0 1-.168-.14l.034-.128c.107-.014.146-.04.185-.049a.504.504 0 0 1 .127-.031zm8.458.25c.661 0 1.184.502 1.184 1.113 0 .156-.035.304-.096.44l-.002-.024-.022-.156a2.443 2.443 0 0 0-.04-.24l-.377.093.044.274a.24.24 0 0 1-.115.074.299.299 0 0 1-.168-.014c-.087-.03-.132-.063-.18-.094.057-.037.13-.084.198-.134.08-.06.16-.123.226-.19a.542.542 0 0 0 .092-.111.245.245 0 0 0 .026-.225c-.008-.019-.022-.112-.053-.21a.444.444 0 0 0-.084-.163.286.286 0 0 0-.23-.107.566.566 0 0 1-.14-.037c-.065-.022-.152-.055-.263-.055-.11 0-.195.032-.262.055a.575.575 0 0 1-.14.037.294.294 0 0 0-.23.107.436.436 0 0 0-.083.162c-.03.1-.045.192-.052.211a.246.246 0 0 0 .025.225.534.534 0 0 0 .09.111c.066.067.146.13.226.19.068.05.138.095.194.132a.57.57 0 0 1-.18.096.305.305 0 0 1-.17.014.237.237 0 0 1-.111-.076c.008-.09.026-.177.04-.272l-.376-.094c-.032.146-.045.286-.063.409a1.052 1.052 0 0 1-.09-.428c0-.611.521-1.113 1.182-1.113zm0 .623c.026 0 .074.01.14.033.066.025.169.052.206.055l.035.156c-.04.04-.112.1-.184.152-.095.07-.14.095-.197.131-.056-.036-.1-.061-.195-.13a1.236 1.236 0 0 1-.184-.157l.035-.152a1.04 1.04 0 0 0 .206-.055.523.523 0 0 1 .138-.033zm-2.22.353a.43.43 0 0 0-.385.272l.656-.176a.416.416 0 0 0-.271-.096zm4.333 0a.414.414 0 0 0-.22.07l.603.16a.426.426 0 0 0-.383-.23zm-4.054.567l-.607.162a.436.436 0 0 0 .125.113zm3.925.002l.407.234a.443.443 0 0 0 .087-.102zm-1.986.234c.067.047.165.108.285.148a.68.68 0 0 0 .389.024.57.57 0 0 0 .232-.121 1.201 1.201 0 0 1-.904.394c-.356 0-.67-.145-.885-.375a.58.58 0 0 0 .207.102c.144.036.28.014.391-.024.12-.04.218-.1.285-.148zm-9.524 1.61v.517h6.214v-.518zm3.619 1.292v.517H15.3v-.517z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/poetry.svg b/assets/lib/simple-icons/icons/poetry.svg
new file mode 100644
index 00000000..a158c6d2
--- /dev/null
+++ b/assets/lib/simple-icons/icons/poetry.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Poetry</title><path d="M21.604 0a19.144 19.144 0 0 1-5.268 13.213L2.396 0l13.583 13.583a19.149 19.149 0 0 1-13.583 5.624V0h19.208Zm-1.911 17.297A24.455 24.455 0 0 1 7.189 24l-4.053-4.053a19.91 19.91 0 0 0 13.37-5.838l3.187 3.188Z"/></svg>
diff --git a/assets/lib/simple-icons/icons/pointy.svg b/assets/lib/simple-icons/icons/pointy.svg
new file mode 100644
index 00000000..2439b86f
--- /dev/null
+++ b/assets/lib/simple-icons/icons/pointy.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Pointy</title><path d="M8.076.025S4.52.234 2.833 2.751c-1.58 2.351-1.465 5.145-1.1 8.121C2.096 13.831 2.587 24 2.587 24c.002.003 11.235-11.526 11.23-11.506 1.75-1.805 2.408-4.468 2.395-5.961-.037-4.274-3.461-6.815-8.136-6.508zm.777 10.774c-1.991 0-3.604-1.632-3.604-3.645 0-2.015 1.614-3.649 3.604-3.649s3.642 1.512 3.642 3.527c0 2.011-1.652 3.767-3.642 3.767zm2.765-3.741a1.58 1.58 0 1 1-3.162 0 1.58 1.58 0 0 1 3.162 0zm10.879 1.431s-2.325.158-3.644.57c-1.317.413-2.502 1.076-2.502 1.076s.495-.852.705-2.361c.207-1.511-.14-2.652-.14-2.652l5.581 3.367Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/pokemon.svg b/assets/lib/simple-icons/icons/pokemon.svg
index 60251a9d..d19a290c 100644
--- a/assets/lib/simple-icons/icons/pokemon.svg
+++ b/assets/lib/simple-icons/icons/pokemon.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Pokémon icon</title><path d="M4.463 11.691c-.081-.436-.651-.676-1.217-.368l.146.498.23.737.104.335c.423-.272.85-.599.737-1.203zm-.562.67a56.82 56.82 0 0 0-.197-.636l-.059-.203a.54.54 0 0 1 .33.033c.053.026.146.084.166.196.047.25-.037.429-.24.608zm9.108-1.362a.774.774 0 1 0-.963 1.207l1.018-1.153a1.058 1.058 0 0 0-.055-.054zm-.961.812a.5.5 0 0 1 .618-.707zm7.551.225a.375.375 0 0 1 .013.105c-.01.215-.213.382-.454.37-.241-.008-.43-.191-.42-.405.007-.203.187-.362.409-.372a.712.712 0 0 0-.132-.017c-.405-.017-.735.27-.748.626-.017.38.289.692.686.709.406.015.735-.272.75-.651a.625.625 0 0 0-.103-.365m-12.255.436c0 .216-.197.39-.438.39-.242 0-.438-.173-.438-.39 0-.202.173-.368.394-.388a.736.736 0 0 0-.132-.012c-.404 0-.723.3-.723.656 0 .382.32.68.716.68.405 0 .723-.298.723-.68a.605.605 0 0 0-.119-.358c.01.03.017.065.017.102m14.768-2.185l-.18.739-.166-.82-2.218-.487.016 1.233.334.075-.024.223-.01-.007c-.414-.218-.927-.24-1.41-.058-.163.06-.314.143-.45.242l-.335-2.112h-1.475l-.04.244h-1.553l-.177 1.085-.13-.159a1.986 1.986 0 0 0-1.525-.73l1.318-.709-.918-1.37-1.663 1.913.287.35a2.19 2.19 0 0 0-.674.429L9.696 9.104l-.497.953.019-.916-2.226.712.057 1.196.379-.098.056.605c-.433-.193-.954-.19-1.436.014a2.12 2.12 0 0 0-.399.229 1.695 1.695 0 0 0-.077-1.058 1.904 1.904 0 0 0-.817-.9 1.958 1.958 0 0 0-.865-.308c-.77-.135-1.696.003-2.606.392a6.339 6.339 0 0 0-.928.483L0 10.634l.215.363.667 1.127s.204.346.205.345l.361-.177.05-.023 1.658 3.7.16.355.37-.118.896-.288.394-.125-.104-.4-.476-1.829c.137-.101.264-.209.383-.321-.027.219-.013.44.047.652.124.443.416.793.818.986.435.21.965.21 1.456.002.247-.104.467-.257.651-.439l.068.728 1.57-.231-.002-1.407 3.282 1.62v-1.57a3.335 3.335 0 0 0 1.347-.436l-.138.843 1.77.279.097-.637.461.854.283-.545.104.895 2.005.352-.106-.674a1.817 1.817 0 0 0 1.038-.198l-.08.718 1.336.189.01.547 1.39.438L24 10.745zm-7.839.81l.092-.097-.112.69-.289-.262zm-1.177-2.813l.487.661-1.39.689-.097-.146zm-9.202 5.091l.555 2.128-.898.287-1.841-4.112c-.1.053-.284.14-.455.223L.59 10.775c.266-.169.556-.319.865-.45.868-.369 1.697-.48 2.36-.362.233.027.481.095.7.24.298.168.525.406.657.711.32.74-.215 1.807-1.276 2.461zm4.126-.378c-.01.318-.127.634-.321.903a1.797 1.797 0 0 1-.749.605c-.779.33-1.557 0-1.764-.74-.203-.714.266-1.565 1.02-1.89.483-.202.966-.155 1.312.08.213.146.377.364.453.637a1.33 1.33 0 0 1 .049.406zm4.236 1.504l-3.254-1.629.006 1.707-.843.115-.059-.703c.26-.446.355-.972.22-1.454a1.526 1.526 0 0 0-.4-.68l-.121-1.433-.377.098-.017-.362 1.352-.404.083 1.396.997-1.4.974.927-1.362 1.436 1.28.507c.142.27.36.5.634.67.264.163.568.26.889.291v.918zm-1.69-2.36l-.454-.174.423-.41c-.019.188-.01.385.03.584zm3.542.427c-.312.259-.67.427-1.139.54a2.216 2.216 0 0 1-.302.051c-.747.073-1.374-.27-1.612-.826a1.191 1.191 0 0 1-.069-.209c-.11-.468-.016-.887.215-1.215a1.47 1.47 0 0 1 .235-.261 1.87 1.87 0 0 1 .812-.413c.712-.171 1.339.046 1.723.517l-1.355 1.444a.978.978 0 0 0 .345-.033c.323-.079.504-.25.663-.436l.542.486.164.15a3.016 3.016 0 0 1-.222.205zm2.877 1.927l-.294-1.954-.418 1.078-.625-1.348h-.007l-.246 1.56-1.041-.18.146-.87a4.17 4.17 0 0 0 .116-.114l.338-.348-.329-.294.35-2.073h1.05l.262 1.436.294-1.663h.752l.312 2.026c-.396.451-.59 1.06-.456 1.615a1.478 1.478 0 0 0 .865 1.035l.04.263zm2.595-.637a1.64 1.64 0 0 1-.377.2 1.397 1.397 0 0 1-.773.077 1.153 1.153 0 0 1-.448-.19 1.118 1.118 0 0 1-.43-.655c-.08-.336-.007-.696.174-1.012.091-.154.207-.298.344-.423.152-.137.33-.25.527-.325.459-.172.912-.112 1.23.116a1.08 1.08 0 0 1 .422.633c.098.406-.018.838-.274 1.187a1.75 1.75 0 0 1-.395.392zm2.343 1.841l-.77-.229-.066-2.838-.388 2.19-.84-.135.062-.63c.547-.464.838-1.195.679-1.856a1.457 1.457 0 0 0-.434-.744l.071-.743-.317-.085.02-.396 1.448.29.487 2.308.499-2.069 1.1.244z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Pok&#233;mon</title><path d="M4.463 11.691c-.081-.436-.651-.676-1.217-.368l.146.498.23.737.104.335c.423-.272.85-.599.737-1.203zm-.562.67a56.82 56.82 0 0 0-.197-.636l-.059-.203a.54.54 0 0 1 .33.033c.053.026.146.084.166.196.047.25-.037.429-.24.608zm9.108-1.362a.774.774 0 1 0-.963 1.207l1.018-1.153a1.058 1.058 0 0 0-.055-.054zm-.961.812a.5.5 0 0 1 .618-.707zm7.551.225a.375.375 0 0 1 .013.105c-.01.215-.213.382-.454.37-.241-.008-.43-.191-.42-.405.007-.203.187-.362.409-.372a.712.712 0 0 0-.132-.017c-.405-.017-.735.27-.748.626-.017.38.289.692.686.709.406.015.735-.272.75-.651a.625.625 0 0 0-.103-.365m-12.255.436c0 .216-.197.39-.438.39-.242 0-.438-.173-.438-.39 0-.202.173-.368.394-.388a.736.736 0 0 0-.132-.012c-.404 0-.723.3-.723.656 0 .382.32.68.716.68.405 0 .723-.298.723-.68a.605.605 0 0 0-.119-.358c.01.03.017.065.017.102m14.768-2.185l-.18.739-.166-.82-2.218-.487.016 1.233.334.075-.024.223-.01-.007c-.414-.218-.927-.24-1.41-.058-.163.06-.314.143-.45.242l-.335-2.112h-1.475l-.04.244h-1.553l-.177 1.085-.13-.159a1.986 1.986 0 0 0-1.525-.73l1.318-.709-.918-1.37-1.663 1.913.287.35a2.19 2.19 0 0 0-.674.429L9.696 9.104l-.497.953.019-.916-2.226.712.057 1.196.379-.098.056.605c-.433-.193-.954-.19-1.436.014a2.12 2.12 0 0 0-.399.229 1.695 1.695 0 0 0-.077-1.058 1.904 1.904 0 0 0-.817-.9 1.958 1.958 0 0 0-.865-.308c-.77-.135-1.696.003-2.606.392a6.339 6.339 0 0 0-.928.483L0 10.634l.215.363.667 1.127s.204.346.205.345l.361-.177.05-.023 1.658 3.7.16.355.37-.118.896-.288.394-.125-.104-.4-.476-1.829c.137-.101.264-.209.383-.321-.027.219-.013.44.047.652.124.443.416.793.818.986.435.21.965.21 1.456.002.247-.104.467-.257.651-.439l.068.728 1.57-.231-.002-1.407 3.282 1.62v-1.57a3.335 3.335 0 0 0 1.347-.436l-.138.843 1.77.279.097-.637.461.854.283-.545.104.895 2.005.352-.106-.674a1.817 1.817 0 0 0 1.038-.198l-.08.718 1.336.189.01.547 1.39.438L24 10.745zm-7.839.81l.092-.097-.112.69-.289-.262zm-1.177-2.813l.487.661-1.39.689-.097-.146zm-9.202 5.091l.555 2.128-.898.287-1.841-4.112c-.1.053-.284.14-.455.223L.59 10.775c.266-.169.556-.319.865-.45.868-.369 1.697-.48 2.36-.362.233.027.481.095.7.24.298.168.525.406.657.711.32.74-.215 1.807-1.276 2.461zm4.126-.378c-.01.318-.127.634-.321.903a1.797 1.797 0 0 1-.749.605c-.779.33-1.557 0-1.764-.74-.203-.714.266-1.565 1.02-1.89.483-.202.966-.155 1.312.08.213.146.377.364.453.637a1.33 1.33 0 0 1 .049.406zm4.236 1.504l-3.254-1.629.006 1.707-.843.115-.059-.703c.26-.446.355-.972.22-1.454a1.526 1.526 0 0 0-.4-.68l-.121-1.433-.377.098-.017-.362 1.352-.404.083 1.396.997-1.4.974.927-1.362 1.436 1.28.507c.142.27.36.5.634.67.264.163.568.26.889.291v.918zm-1.69-2.36l-.454-.174.423-.41c-.019.188-.01.385.03.584zm3.542.427c-.312.259-.67.427-1.139.54a2.216 2.216 0 0 1-.302.051c-.747.073-1.374-.27-1.612-.826a1.191 1.191 0 0 1-.069-.209c-.11-.468-.016-.887.215-1.215a1.47 1.47 0 0 1 .235-.261 1.87 1.87 0 0 1 .812-.413c.712-.171 1.339.046 1.723.517l-1.355 1.444a.978.978 0 0 0 .345-.033c.323-.079.504-.25.663-.436l.542.486.164.15a3.016 3.016 0 0 1-.222.205zm2.877 1.927l-.294-1.954-.418 1.078-.625-1.348h-.007l-.246 1.56-1.041-.18.146-.87a4.17 4.17 0 0 0 .116-.114l.338-.348-.329-.294.35-2.073h1.05l.262 1.436.294-1.663h.752l.312 2.026c-.396.451-.59 1.06-.456 1.615a1.478 1.478 0 0 0 .865 1.035l.04.263zm2.595-.637a1.64 1.64 0 0 1-.377.2 1.397 1.397 0 0 1-.773.077 1.153 1.153 0 0 1-.448-.19 1.118 1.118 0 0 1-.43-.655c-.08-.336-.007-.696.174-1.012.091-.154.207-.298.344-.423.152-.137.33-.25.527-.325.459-.172.912-.112 1.23.116a1.08 1.08 0 0 1 .422.633c.098.406-.018.838-.274 1.187a1.75 1.75 0 0 1-.395.392zm2.343 1.841l-.77-.229-.066-2.838-.388 2.19-.84-.135.062-.63c.547-.464.838-1.195.679-1.856a1.457 1.457 0 0 0-.434-.744l.071-.743-.317-.085.02-.396 1.448.29.487 2.308.499-2.069 1.1.244z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/polkadot.svg b/assets/lib/simple-icons/icons/polkadot.svg
new file mode 100644
index 00000000..d33c09e0
--- /dev/null
+++ b/assets/lib/simple-icons/icons/polkadot.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Polkadot</title><path d="M12 0C6.985 0 2.886 4.075 2.886 9.114a9.55 9.55 0 0 0 .482 2.966c.217.651.94 1.013 1.615.796.651-.217 1.013-.94.796-1.616a6.42 6.42 0 0 1-.362-2.338c.097-3.4 2.846-6.197 6.245-6.366 3.786-.193 6.92 2.821 6.92 6.558a6.579 6.579 0 0 1-6.196 6.559s-1.278.072-1.905.169c-.314.048-.555.096-.723.12-.073.024-.145-.048-.121-.12l.217-1.061 1.182-5.45a1.264 1.264 0 0 0-.965-1.494 1.264 1.264 0 0 0-1.495.964s-2.845 13.262-2.87 13.406c-.144.676.29 1.35.965 1.495.675.145 1.35-.289 1.495-.964.024-.145.41-1.905.41-1.905a3.203 3.203 0 0 1 2.7-2.508c.29-.048 1.423-.12 1.423-.12 4.702-.362 8.415-4.292 8.415-9.09C21.114 4.074 17.015 0 12 0Zm.651 20.978a1.518 1.518 0 0 0-1.808 1.181c-.17.82.337 1.64 1.181 1.809.82.168 1.64-.338 1.809-1.182.168-.844-.338-1.64-1.182-1.808z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/poly.svg b/assets/lib/simple-icons/icons/poly.svg
index 6cec1652..cecfbe48 100644
--- a/assets/lib/simple-icons/icons/poly.svg
+++ b/assets/lib/simple-icons/icons/poly.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Poly icon</title><path d="M8.569 16.102c-2.244 0-4.064-1.834-4.064-4.096s1.82-4.095 4.064-4.095c2.244 0 4.063 1.833 4.063 4.095 0 2.262-1.82 4.096-4.063 4.096zm11.019-5.671l-4.296 2.5.02-.118.012-.104.014-.173v-.013l.001-.012.009-.211.001-.232-.003-.168-.01-.24-.016-.22-.024-.239-.016-.13-.034-.233-.04-.228-.047-.223-.052-.219-.037-.135-.062-.211-.07-.207-.061-.168-.08-.2-.087-.195-.092-.19-.099-.189-.105-.185-.01-.015-.113-.183-.12-.18-.127-.176-.135-.175-.143-.172-.016-.02-.152-.17-.16-.168-.168-.167-.179-.166-.014-.013-.189-.165-.201-.166-.202-.158-.226-.167-.245-.172-.183-.124-.28-.181-.316-.197-.105-.063-.388-.23-.096-.057-.244-.142L1.705 0v3.175l4.296 2.5-.11.041-.096.042-.156.074-.012.006-.01.006-.186.098-.2.114-.142.087-.202.13-.181.124-.193.14-.106.08-.182.145-.175.149-.168.152-.162.155-.098.1-.15.16-.143.163-.114.14-.131.169-.125.172-.117.176-.112.18-.107.185-.01.017-.099.19-.094.194-.088.199-.082.204-.077.211-.009.025-.07.217-.065.223-.06.23-.053.24-.004.02-.047.246-.042.258-.034.256-.031.281-.026.299-.014.223-.016.334-.01.374-.003.125-.004.452V24l2.727-1.588v-5l.092.077.083.063.143.099.01.006.007.005.178.114.2.118.144.08.214.112.195.096.219.1.114.048.218.087.217.08.217.071.215.064.132.035.214.051.214.044.173.03.213.03.212.022.206.015.213.008h.227l.215-.008.216-.015.216-.022.22-.031.221-.039.02-.004.224-.047.226-.055.23-.065.233-.074.013-.004.238-.083.245-.093.233-.096.259-.115.272-.128.194-.097.298-.154.33-.18.102-.057.394-.225.094-.054.244-.142 8.697-5.06-2.728-1.588Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Poly</title><path d="M8.569 16.102c-2.244 0-4.064-1.834-4.064-4.096s1.82-4.095 4.064-4.095c2.244 0 4.063 1.833 4.063 4.095 0 2.262-1.82 4.096-4.063 4.096zm11.019-5.671l-4.296 2.5.02-.118.012-.104.014-.173v-.013l.001-.012.009-.211.001-.232-.003-.168-.01-.24-.016-.22-.024-.239-.016-.13-.034-.233-.04-.228-.047-.223-.052-.219-.037-.135-.062-.211-.07-.207-.061-.168-.08-.2-.087-.195-.092-.19-.099-.189-.105-.185-.01-.015-.113-.183-.12-.18-.127-.176-.135-.175-.143-.172-.016-.02-.152-.17-.16-.168-.168-.167-.179-.166-.014-.013-.189-.165-.201-.166-.202-.158-.226-.167-.245-.172-.183-.124-.28-.181-.316-.197-.105-.063-.388-.23-.096-.057-.244-.142L1.705 0v3.175l4.296 2.5-.11.041-.096.042-.156.074-.012.006-.01.006-.186.098-.2.114-.142.087-.202.13-.181.124-.193.14-.106.08-.182.145-.175.149-.168.152-.162.155-.098.1-.15.16-.143.163-.114.14-.131.169-.125.172-.117.176-.112.18-.107.185-.01.017-.099.19-.094.194-.088.199-.082.204-.077.211-.009.025-.07.217-.065.223-.06.23-.053.24-.004.02-.047.246-.042.258-.034.256-.031.281-.026.299-.014.223-.016.334-.01.374-.003.125-.004.452V24l2.727-1.588v-5l.092.077.083.063.143.099.01.006.007.005.178.114.2.118.144.08.214.112.195.096.219.1.114.048.218.087.217.08.217.071.215.064.132.035.214.051.214.044.173.03.213.03.212.022.206.015.213.008h.227l.215-.008.216-.015.216-.022.22-.031.221-.039.02-.004.224-.047.226-.055.23-.065.233-.074.013-.004.238-.083.245-.093.233-.096.259-.115.272-.128.194-.097.298-.154.33-.18.102-.057.394-.225.094-.054.244-.142 8.697-5.06-2.728-1.588Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/polymerproject.svg b/assets/lib/simple-icons/icons/polymerproject.svg
index 41ddc0b0..35616a39 100644
--- a/assets/lib/simple-icons/icons/polymerproject.svg
+++ b/assets/lib/simple-icons/icons/polymerproject.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Polymer Project icon</title><path d="M14.4 3.686L7.2 16.16 4.8 12l4.8-8.314H4.8L0 12l2.4 4.159 2.4 4.155h4.8l7.2-12.469L19.2 12l-4.8 8.314h4.8l2.4-4.155L24 12l-2.4-4.155-2.4-4.159Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Polymer Project</title><path d="M14.4 3.686L7.2 16.16 4.8 12l4.8-8.314H4.8L0 12l2.4 4.159 2.4 4.155h4.8l7.2-12.469L19.2 12l-4.8 8.314h4.8l2.4-4.155L24 12l-2.4-4.155-2.4-4.159Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/polywork.svg b/assets/lib/simple-icons/icons/polywork.svg
new file mode 100644
index 00000000..b17e6f93
--- /dev/null
+++ b/assets/lib/simple-icons/icons/polywork.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Polywork</title><path d="M19.125 0H4.875A4.865 4.865 0 0 0 0 4.875v14.25C0 21.825 2.175 24 4.875 24h6.6c2.7 0 4.875-2.175 4.875-4.875V16.65h2.775c2.7 0 4.875-2.175 4.875-4.875v-6.9C24 2.175 21.825 0 19.125 0zM16.5 1.275h2.625a3.6 3.6 0 0 1 3.6 3.6v2.7H16.5v-6.3zM15.075 9v6.45H8.85V9h6.225zM8.85 1.2h6.225v6.375H8.85V1.2zM1.275 4.8a3.6 3.6 0 0 1 3.6-3.6H7.5v6.375H1.275V4.8zM7.5 9v6.45H1.2V9h6.3zm0 13.725H4.8a3.6 3.6 0 0 1-3.6-3.6V16.8h6.3v5.925zm7.575-3.525a3.6 3.6 0 0 1-3.6 3.6H8.85v-5.925h6.225V19.2zm7.65-7.35a3.6 3.6 0 0 1-3.6 3.6H16.5V9h6.225v2.85z"/></svg>
diff --git a/assets/lib/simple-icons/icons/popos.svg b/assets/lib/simple-icons/icons/popos.svg
new file mode 100644
index 00000000..11d31c74
--- /dev/null
+++ b/assets/lib/simple-icons/icons/popos.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Pop!_OS</title><path d="M15.724 11.253c-.776 1.366-.932 1.5-1.153 1.411-.261-.104-.171-1.472.067-3.134.067-.464.183-.684.312-.796.186-.158.524-.165.752-.131.263.038.514.16.704.344.168.163.187.33.13.546-.094.344-.256.674-.411.996-.036.079-.358.689-.401.764zm-1.41 2.034a.57.57 0 0 0-.382.411.53.53 0 0 0 .146.52.451.451 0 0 0 .543.055.484.484 0 0 0 .208-.309c.08-.336-.093-.794-.514-.677zm-5.01-1.239c.154.656.138 1.377.006 1.896-.123.49-.458.93-.989 1.076-.466.13-1.009.035-1.341-.285-.548-.525-.868-1.758-.725-2.653.115-.718.503-1.638 1.352-1.678a1.11 1.11 0 0 1 .163.003c.866.078 1.34.808 1.534 1.641zm-1.153.35a.807.807 0 0 0-.205-.333c-.344-.314-.688.013-.748.386-.046.291.021.63.203.865a.588.588 0 0 0 .336.226.32.32 0 0 0 .144-.006c.162-.046.255-.215.298-.378a1.296 1.296 0 0 0-.028-.76zm4.8.132c-.333.508-1.34.876-1.772.844v.066c-.002 1.212.12 2.14-.413 2.25-.432.087-.418-.292-.45-.61-.129-1.235-.246-3.285-.296-4.526.035-.533.392-.86.764-.94.573-.123 1.185-.088 1.692.226 1.003.62 1.083 1.76.475 2.69zm-1.042-1.266c-.077-.24-.315-.584-.602-.541-.062.01-.165.038-.194.099-.069.142-.064 1.047.056 1.425.02.062.062.122.125.144.227.083.432-.195.525-.363a.972.972 0 0 0 .09-.764zM5.52 9.69c.135.61.107 1.234-.081 1.635-.376.795-1.001 1.427-1.865 1.74.248.647.5 1.288.748 1.935.138.35.269.732.149 1.076-.125.352-.612.45-.965.075-.68-.724-2.98-5.308-3.15-5.652-.145-.297-.36-.614-.355-.957.011-.516.808-1.037 1.191-1.305.535-.373 1.153-.628 1.814-.63.516 0 .956.142 1.347.392A2.698 2.698 0 0 1 5.52 9.69zm-1.833.763A2.533 2.533 0 0 0 2.864 9.2a.883.883 0 0 0-.277-.168c-.717-.235-.407.964-.29 1.266.162.424.407.96.735 1.28.072.07.157.134.255.153.149.03.287-.074.362-.195a.845.845 0 0 0 .1-.338 1.999 1.999 0 0 0-.063-.745zm18.128 5.574zm1.046-1.318c-.355-.05-.556-.117-.556-.355 0-.243.31-.379.6-.383.133-.003.308.02.478.101l.027.355h.421c0-.216.003-.344.003-.56-.328-.263-.586-.32-.949-.312-.45 0-1.058.267-1.058.804 0 .602.432.733.97.788.314.032.705.093.716.391 0 .328-.35.413-.687.413a1.21 1.21 0 0 1-.544-.142l-.03-.367h-.435c.003.076.001.51 0 .586.328.286.587.363 1.002.362.544 0 1.178-.178 1.182-.853-.002-.62-.561-.75-1.14-.828zm-1.045 1.318c0 .017 0 .015 0 0zm-.398-1.046c-.003.703-.432 1.406-1.378 1.406s-1.386-.692-1.386-1.398c0-.88.613-1.425 1.406-1.425.918.008 1.366.69 1.358 1.417zm-.478 0c.008-.475-.243-.962-.88-.973-.595 0-.928.413-.93.977 0 .49.273.95.918.95s.892-.499.892-.955zm-3.096.934H15.27a.223.223 0 0 0-.223.223v.02c0 .122.099.222.223.222h2.573a.223.223 0 0 0 .223-.223v-.019a.222.222 0 0 0-.223-.223z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/porsche.svg b/assets/lib/simple-icons/icons/porsche.svg
index 2e2a822c..756c3a52 100644
--- a/assets/lib/simple-icons/icons/porsche.svg
+++ b/assets/lib/simple-icons/icons/porsche.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Porsche icon</title><path d="M11.972 0A25.68 25.68 0 0 0 9.93.091a27.858 27.858 0 0 0-4.248.685 23.565 23.565 0 0 0-2.975.966l-.06.022s.118 7.243.21 10.831a9.934 9.934 0 0 0 .569 3.098 14.899 14.899 0 0 0 1.622 3.214A12.884 12.884 0 0 0 7.56 21.66a11.234 11.234 0 0 0 1.192.873 15.214 15.214 0 0 0 2.038 1.031c.233.098.436.192.62.255A4.58 4.58 0 0 0 12 24a4.58 4.58 0 0 0 .59-.182c.182-.063.387-.156.62-.255a15.22 15.22 0 0 0 2.037-1.031 11.25 11.25 0 0 0 1.194-.873 12.88 12.88 0 0 0 2.511-2.752 14.889 14.889 0 0 0 1.622-3.214 9.934 9.934 0 0 0 .57-3.098c.091-3.588.21-10.827.21-10.827a.635.635 0 0 0-.057-.026 23.564 23.564 0 0 0-2.976-.966 27.856 27.856 0 0 0-4.248-.684A26.068 26.068 0 0 0 12.031 0zm0 .361h.057c.679.008 1.288.03 1.963.09a26.585 26.585 0 0 1 4.084.663 22.53 22.53 0 0 1 2.861.937.619.619 0 0 1 .057.025l-.038 2.274a.113.113 0 0 0-.019-.01 22.55 22.55 0 0 0-2.86-.937 26.61 26.61 0 0 0-4.085-.662c-.675-.06-1.281-.1-1.96-.108h-.058c-.679.009-1.29.048-1.965.108a26.608 26.608 0 0 0-4.084.665 22.547 22.547 0 0 0-2.861.938.116.116 0 0 0-.02.01l-.038-2.281.058-.022a22.527 22.527 0 0 1 2.86-.937A26.581 26.581 0 0 1 10.01.45c.675-.06 1.284-.08 1.963-.089zm.288.216a16.633 16.633 0 0 0-.902.008c-.121.005-.288.109-.29.23l-.007.648c-.002.132.172.236.305.239.462.01.87.002 1.318.03.033.003.062.023.062.056l-.003.13a.042.042 0 0 1-.045.046c-.521 0-1.066-.025-1.593.017-.028.002-.027-.005-.028.023l-.024.384-.002.03a16.318 16.318 0 0 1 1.882 0 .32.32 0 0 0 .305-.262l.006-.627c0-.129-.158-.224-.261-.23-.442-.028-.945-.013-1.394-.025a.046.046 0 0 1-.044-.05l.009-.145c0-.028.019-.036.047-.037.444-.016 1.107.005 1.562.019a.072.072 0 0 0 .06-.07V.674c0-.017-.032-.067-.063-.068V.605a33.113 33.113 0 0 0-.9-.028zm-1.88.064c-.423.008-1.341.125-1.862.19L8.515 2.64v.023l.47-.06a.014.014 0 0 0 .01-.006.014.014 0 0 0 .003-.01v-.523l.947-.102c.083-.015.18.046.256.169a.88.88 0 0 1 .114.339l.467-.035c.01 0 .03 0 .028-.01a.988.988 0 0 0-.307-.663.316.316 0 0 0 .197-.31 4.34 4.34 0 0 0-.022-.564.32.32 0 0 0-.3-.247zm3.59.019a.404.404 0 0 0-.413.332l-.01 1.195a.312.312 0 0 0 .24.289c.61.057 1.21.112 1.89.215.011 0 .032-.007.032-.017v-.416c0-.009-.02-.028-.027-.03-.454-.057-1.053-.137-1.589-.193a.076.076 0 0 1-.058-.07v-.812c0-.034.05-.052.084-.05.529.044 1.056.14 1.584.197.014.002.036-.007.037-.021l.01-.382a.037.037 0 0 0-.029-.033 36.382 36.382 0 0 0-1.75-.204zm1.98.237c-.012 0-.022.014-.022.025-.006.274-.045 1.457-.053 1.772v.027c.155.027.326.048.453.074.014.002.035-.008.035-.022-.002-.207 0-.448-.004-.636 0-.013.006-.014.02-.012a31.392 31.392 0 0 1 1.102.22c.008 0 .052.007.052.03-.003.217-.007.4-.013.617a.041.041 0 0 0 .027.04c.145.033.283.067.42.1.037.008.043.001.044-.012.022-.451.03-1.174.036-1.784 0-.008-.003-.02-.01-.022-.153-.035-.297-.072-.453-.105-.014-.003-.022.02-.023.035-.015.223-.009.43-.026.652 0 .008 0 .012-.009.01-.37-.076-.765-.158-1.132-.227-.01-.002-.006-.02-.005-.031l.003-.653a.033.033 0 0 0-.026-.03 23.196 23.196 0 0 0-.417-.068zM7.934.92a.303.303 0 0 0-.037 0c-.543.086-1.089.201-1.64.32a.5.5 0 0 0-.23.143.322.322 0 0 0-.102.205l.004 1.118a.434.434 0 0 0 .106.266.24.24 0 0 0 .204.11 38.518 38.518 0 0 1 1.633-.323.497.497 0 0 0 .268-.166.362.362 0 0 0 .098-.23L8.236 1.2a.28.28 0 0 0-.11-.198.303.303 0 0 0-.191-.08zm2.157.197a.076.076 0 0 1 .08.069l.003.189a.172.172 0 0 1-.14.166l-1.062.104-.009-.008V1.23l.009-.004 1.111-.108a.076.076 0 0 1 .008 0zm-2.52.29a.167.167 0 0 1 .078.022.117.117 0 0 1 .054.106l-.009.704a.125.125 0 0 1-.049.105.291.291 0 0 1-.12.047 61.16 61.16 0 0 1-.997.19.106.106 0 0 1-.088-.017.133.133 0 0 1-.03-.1v-.726a.143.143 0 0 1 .04-.097.243.243 0 0 1 .12-.06c.29-.054.67-.129.968-.172a.167.167 0 0 1 .033-.002zm10.81 0l-.001.001c-.008 0-.008.012-.008.019-.014.606-.03 1.167-.035 1.773 0 .013.006.03.018.033a22.245 22.245 0 0 1 2.158.7c.032.011.031-.013.031-.022.003-.138.01-.278.003-.416a.041.041 0 0 0-.025-.033 16.602 16.602 0 0 0-1.66-.541.028.028 0 0 1-.019-.026l.008-.18c0-.008.014-.01.022-.008a21.848 21.848 0 0 1 1.67.542c.01.003.01-.01.01-.019a5.121 5.121 0 0 0 0-.468.029.029 0 0 0-.02-.026 21.457 21.457 0 0 0-1.638-.523c-.008-.002-.018-.01-.018-.018v-.192c0-.008.013-.013.021-.01.564.144 1.184.36 1.615.519.038.014.06.008.06-.027 0-.157.006-.168-.002-.324-.002-.02-.004-.04-.022-.047a21.383 21.383 0 0 0-2.169-.707zm-12.97.064a.365.365 0 0 0-.084.009c-.65.166-1.303.414-1.956.652a.063.063 0 0 0-.03.052V3.65l.003.33s.471-.177.573-.21c.013-.004.013-.017.013-.031l-.01-.52c0-.015.002-.037.016-.04l1.625-.502a.306.306 0 0 0 .138-.101.237.237 0 0 0 .052-.156l-.017-.683a.272.272 0 0 0-.119-.197.365.365 0 0 0-.204-.068zm-.286.496c.036-.01.07.031.072.063a1.86 1.86 0 0 1 .012.25c-.001.045-.066.097-.11.11l-1.184.386c-.011.004-.031 0-.031-.012l.002-.358c0-.017.02-.031.036-.036a10.796 10.796 0 0 1 1.203-.403zm6.967.981c.653.01 1.246.03 1.9.088a26.591 26.591 0 0 1 4.083.663 22.501 22.501 0 0 1 2.861.937.107.107 0 0 1 .014.007 89.441 89.441 0 0 0-.007.448h-8.851zm-.317.002l-.001 4.618H8.827c-.043-.004-.015-.023.015-.052a1.71 1.71 0 0 1 .715-.312c.022-.002.028-.014-.003-.054a.898.898 0 0 0-.93-.212.985.985 0 0 0-.624.603.04.04 0 0 1-.04.031 6.734 6.734 0 0 1-.47.013c-.025 0-.037-.032-.035-.056a.737.737 0 0 1 .343-.484 1.1 1.1 0 0 1 .519-.178.04.04 0 0 0 .02-.063.515.515 0 0 0-.105-.093.758.758 0 0 0-.504-.077 1.053 1.053 0 0 0-.948.964c-.01.06.006.074-.053.094-.112.038-.322.064-.434.088-.02.003-.05-.043-.045-.063a1.309 1.309 0 0 1 .244-.522 1.006 1.006 0 0 1 .342-.291c.026-.013.05-.044.026-.064-.253-.22-.771.012-.98.241a1.37 1.37 0 0 0-.275.91c0 .016.014.041 0 .047a4.942 4.942 0 0 1-.4.15c-.012.003-.014-.028-.016-.04a.93.93 0 0 1 .147-.677.661.661 0 0 1 .244-.241c.01-.006.008-.018 0-.028-.115-.149-.569-.042-.708.094-.32.312-.297.615-.312 1.097-.001.023-.03.111-.056.123a.57.57 0 0 1-.184.07c-.021.006-.023.014-.028-.007a.39.39 0 0 0-.57-.222.356.356 0 0 0-.077.532c.015.017.02.034-.003.041a.42.42 0 0 0-.275.534.336.336 0 0 0 .296.21.628.628 0 0 0 .37-.108.043.043 0 0 1 .06.01.386.386 0 0 0 .531.124c.162-.107.234-.273.114-.559-.007-.016.02-.046.034-.054a6.615 6.615 0 0 1 3.144-.88 1.78 1.78 0 0 1 .456.101.094.094 0 0 1 .023.008l.002.941a.19.19 0 0 1-.034.025 1.005 1.005 0 0 0-.432.55c-.004.017-.006.021-.035.024-.193.019-.399.047-.591.062-.011.002-.032-.019-.028-.03a1.87 1.87 0 0 1 .725-.908.057.057 0 0 0 .01-.067.375.375 0 0 0-.168-.093 1.087 1.087 0 0 0-.895.362 1.418 1.418 0 0 0-.312.875c-.001.022.003.058-.019.065-.124.039-.261.074-.39.11-.015.004-.035-.011-.038-.027a1.006 1.006 0 0 1 .486-1.03c.051-.04-.038-.102-.102-.102a.963.963 0 0 0-.913.53 1.301 1.301 0 0 0-.03.793c.003.023.019.063-.006.069-.079.019-.265.09-.323.108-.021.007-.035-.003-.047-.03a1.041 1.041 0 0 1-.021-.488 1.102 1.102 0 0 1 .268-.493c.008-.01.011-.032 0-.037a.54.54 0 0 0-.378-.025.74.74 0 0 0-.477.38c-.159.297-.118.583.051 1.005.008.02.018.058 0 .07l-.137.08c-.017.013-.032.002-.044-.015-.055-.078-.124-.202-.21-.24a.415.415 0 0 0-.428.035.406.406 0 0 0-.12.431.875.875 0 0 0 .1.152c.01.014-.001.036-.013.047-.059.052-.14.09-.188.14a.395.395 0 0 0-.01.471.365.365 0 0 0 .45.123 1.624 1.624 0 0 0 .232-.122c.027-.018.045-.051.07-.025a.546.546 0 0 0 .224.153.427.427 0 0 0 .354-.062.305.305 0 0 0 .168-.338.875.875 0 0 0-.143-.27c-.033-.035-.035-.033 0-.054a7.435 7.435 0 0 1 1.66-.724 5.024 5.024 0 0 1 1.69-.207h.046l.003 1.949H3.206c-.054-2.133-.116-5.51-.156-7.836a.113.113 0 0 1 .014-.007 22.499 22.499 0 0 1 2.86-.937 26.59 26.59 0 0 1 4.084-.663 23.38 23.38 0 0 1 1.768-.086zm-3.088.816a1.237 1.237 0 0 0-.693.232c-.286.188-.456.773-.49.982a.044.044 0 0 1-.04.036 5.998 5.998 0 0 0-.676.125c-.007.001-.012-.01-.012-.017a.983.983 0 0 1 .258-.59 3.506 3.506 0 0 1 .493-.396c.013-.011.004-.045-.012-.051a1.035 1.035 0 0 0-.797.012 1.129 1.129 0 0 0-.675.867 2.062 2.062 0 0 0-.029.41c.002.017-.03.018-.045.023-.246.077-.504.167-.71.236-.01.004-.039.002-.039-.01a1.168 1.168 0 0 1 .175-.655c.12-.195.343-.305.505-.469.011-.012.028-.044.011-.051-.41-.165-.797.004-1.124.375a1.395 1.395 0 0 0-.2 1.124c.009.036 0 .075-.019.083a1.805 1.805 0 0 1-.23.089.025.025 0 0 1-.033-.02c-.093-.296-.44-.238-.597-.148a.361.361 0 0 0-.139.489.031.031 0 0 1-.01.044.442.442 0 0 0-.205.596.352.352 0 0 0 .428.137 1.208 1.208 0 0 0 .246-.129.027.027 0 0 1 .03.004.393.393 0 0 0 .566.08c.115-.082.16-.096.204-.244a.39.39 0 0 0-.09-.3c-.012-.01-.001-.04.013-.047A9.692 9.692 0 0 1 8.947 5.51a2.35 2.35 0 0 1 1.446.553.072.072 0 0 0 .062.031.098.098 0 0 0 .054-.056.66.66 0 0 0-.204-.678 1.21 1.21 0 0 0-.612-.344c-.012-.003-.02-.029-.01-.037a.968.968 0 0 1 .335-.22 3.587 3.587 0 0 1 .605-.05c.014-.001.035-.015.03-.028a.606.606 0 0 0-.527-.4 1.325 1.325 0 0 0-.693.1 1.118 1.118 0 0 0-.5.553.036.036 0 0 1-.032.02 12.139 12.139 0 0 0-.594-.007c-.014 0-.035 0-.035-.014a.943.943 0 0 1 .255-.517 1.989 1.989 0 0 1 .68-.386c.019-.006.04-.036.029-.051a.549.549 0 0 0-.201-.17 1.237 1.237 0 0 0-.347-.041zm3.405 1.607h8.845c-.012.686-.025 1.433-.04 2.195h-8.805zM8.681 7.801l6.666.003a.016.016 0 0 1 .017.013l-.002 5.138a2.354 2.354 0 0 1-.143.764 3.327 3.327 0 0 1-1.44 1.725 3.468 3.468 0 0 1-1.74.491 3.512 3.512 0 0 1-2.26-.86 3.078 3.078 0 0 1-1.105-2.31L8.667 7.82c0-.013.001-.019.014-.019zm6.994.086h5.217c-.012.645-.025 1.296-.034 1.926h-5.183V8.318zm-6.839.071c-.013 0-.014.005-.014.018l.007 4.753a2.97 2.97 0 0 0 1.054 2.225 3.333 3.333 0 0 0 2.153.827 3.284 3.284 0 0 0 1.66-.473 3.193 3.193 0 0 0 1.374-1.66 2.28 2.28 0 0 0 .136-.734l.002-4.94a.015.015 0 0 0-.016-.014zm4.436.304a.101.101 0 0 1 .001 0 .11.11 0 0 1 .087.071l.242.715a.079.079 0 0 1-.003.07.066.066 0 0 1-.054.024.065.065 0 0 1-.063-.044l-.038-.125h-.33l-.036.128c-.01.04-.04.044-.071.044a.063.063 0 0 1-.044-.028.057.057 0 0 1-.01-.052l.232-.728a.101.101 0 0 1 .087-.075zm-.763.007a.226.226 0 0 1 .023 0 .232.232 0 0 1 .235.157.046.046 0 0 1-.031.059.053.053 0 0 1-.07-.02.166.166 0 0 0-.132-.09.151.151 0 0 0-.133.1.498.498 0 0 0-.055.222.524.524 0 0 0 .046.228.159.159 0 0 0 .154.102.233.233 0 0 0 .166-.243v-.039h-.135a.057.057 0 0 1-.059-.063c0-.023.007-.05.059-.05h.192c.064 0 .073.048.073.09a.792.792 0 0 1-.011.152.399.399 0 0 1-.15.236.301.301 0 0 1-.15.043.257.257 0 0 1-.227-.145.618.618 0 0 1-.073-.31.577.577 0 0 1 .08-.304.226.226 0 0 1 .198-.125zm-2.988.002a.318.318 0 0 1 .004 0c.183.002.243.111.243.15 0 .035-.061.08-.095.039a.2.2 0 0 0-.157-.068.143.143 0 0 0-.15.096.114.114 0 0 0 .094.135.61.61 0 0 1 .267.08h-.001a.202.202 0 0 1 .081.18.247.247 0 0 1-.067.175.327.327 0 0 1-.247.088.297.297 0 0 1-.263-.14c-.004-.01-.01-.063.034-.078a.084.084 0 0 1 .082.026.239.239 0 0 0 .156.063.223.223 0 0 0 .148-.05.105.105 0 0 0 .024-.116.219.219 0 0 0-.193-.098.25.25 0 0 1-.172-.07.25.25 0 0 1-.069-.196.219.219 0 0 1 .1-.163.318.318 0 0 1 .181-.053zm1.649 0a.06.06 0 0 1 .001 0 .06.06 0 0 1 .006 0h.355a.06.06 0 1 1 0 .12l-.114.002v.682a.063.063 0 0 1-.125 0v-.683h-.116a.06.06 0 0 1-.007-.12zm.56 0a.06.06 0 0 1 .001 0 .06.06 0 0 1 .006 0h.354a.06.06 0 1 1 0 .12l-.114.002v.682a.063.063 0 0 1-.125 0v-.683h-.115a.06.06 0 0 1-.007-.12zm2.74 0a.06.06 0 0 1 .002 0 .06.06 0 0 1 .006 0h.353a.06.06 0 1 1 0 .12l-.112.002v.682a.063.063 0 0 1-.125 0v-.683h-.116a.06.06 0 0 1-.007-.12zm-.677.004a.063.063 0 0 1 .012 0h.19a.364.364 0 0 1 .208.058.278.278 0 0 1 .108.206.235.235 0 0 1-.071.198.305.305 0 0 1-.117.075l-.02.007.158.2a.086.086 0 0 1 .023.056c-.002.032-.023.05-.06.05a.066.066 0 0 1-.056-.027l-.187-.258h-.117v.23a.059.059 0 0 1-.063.067.06.06 0 0 1-.062-.067v-.726a.073.073 0 0 1 .016-.05.063.063 0 0 1 .038-.019zm-3.87.002a.06.06 0 0 1 .003 0h.357a.06.06 0 0 1 0 .121h-.116v.684a.063.063 0 0 1-.125 0v-.684h-.116a.06.06 0 0 1-.003-.12zm.583 0a.063.063 0 0 1 .002 0 .063.063 0 0 1 .065.064v.471a.258.258 0 0 0 .037.151.146.146 0 0 0 .127.056.138.138 0 0 0 .125-.056.265.265 0 0 0 .035-.15V8.34h.001a.063.063 0 0 1 .125 0v.432a.474.474 0 0 1-.056.262.25.25 0 0 1-.228.104.26.26 0 0 1-.23-.104.456.456 0 0 1-.061-.262V8.34a.063.063 0 0 1 .058-.063zm3.354.115v.328h.13a.18.18 0 0 0 .2-.174.15.15 0 0 0-.051-.109.178.178 0 0 0-.13-.045zm-.584.015l-.136.469h.278zm-1.14 1.005c.011 0 .021.002.022.011.002.018-.016.029-.042.042a.206.206 0 0 0-.094.08.31.31 0 0 0-.039.163.115.115 0 0 0 .063.079.298.298 0 0 0 .142.028.502.502 0 0 0 .215-.063.581.581 0 0 1 .276-.02.341.341 0 0 1 .194.063c.024.017.02.038.011.04-.014.005-.029-.012-.044-.01a.674.674 0 0 0-.142.03c-.06.027-.087.037-.116.09a.099.099 0 0 0-.007.073c.01.024.035.04.04.057a.446.446 0 0 0 .064.125.205.205 0 0 0 .03.023 2.668 2.668 0 0 1 .282.243.26.26 0 0 1 .04.093c.003.012-.007.03-.018.025a.255.255 0 0 1-.036-.029.178.178 0 0 0-.053-.039.368.368 0 0 0-.176-.025c-.027 0-.081.024-.05.036a.357.357 0 0 1 .132.116.43.43 0 0 1 .107.31c0 .006-.012.01-.015.006a.359.359 0 0 0-.102-.109.324.324 0 0 0-.21-.062c-.015.001-.06 0-.055.014a1.19 1.19 0 0 1 .123.191.562.562 0 0 1 .039.276c-.001.005-.02.01-.023.005a.61.61 0 0 0-.077-.076.349.349 0 0 0-.094-.06.29.29 0 0 0-.204.028.325.325 0 0 0-.13.132.492.492 0 0 0-.062.205.46.46 0 0 0 .042.257.368.368 0 0 0 .19.164.955.955 0 0 0 .334.044c.139.005.278-.016.417-.02a1.943 1.943 0 0 1 .396.003.88.88 0 0 1 .3.12 2.64 2.64 0 0 1 .215.183c.008.006.026-.003.035-.009a.462.462 0 0 0 .131-.233.346.346 0 0 0-.056-.246c-.047-.085-.116-.18-.17-.27a2.962 2.962 0 0 1-.202-.296.305.305 0 0 1-.017-.221.238.238 0 0 1 .107-.128c.011-.007.022.006.017.021a.184.184 0 0 0-.008.112.32.32 0 0 0 .089.14c.013.01.047-.005.055-.021.018-.043.007-.11.023-.154a.619.619 0 0 1 .108-.226 1.47 1.47 0 0 1 .36-.196c.033-.019.054-.105.091-.091.037.013.017.1-.011.142-.04.062-.087.1-.131.156a1.536 1.536 0 0 0-.157.247.222.222 0 0 0-.029.137.14.14 0 0 0 .073.094c.022.01.05-.01.07-.025a.385.385 0 0 0 .097-.103c.023-.038.01-.089.032-.128.006-.009.03-.007.037 0a.139.139 0 0 1 .044.084.393.393 0 0 1-.01.113c-.003.008-.024.027-.031.045a.244.244 0 0 1-.02.04c-.036.063-.078.116-.125.126-.01.001-.017.021-.01.03a.391.391 0 0 0 .113.132.198.198 0 0 0 .152.01c.027-.008.048-.027.079-.037.013-.004.005.004.005.017a.27.27 0 0 1-.015.086.19.19 0 0 1-.075.083.395.395 0 0 1-.166.05c-.027.005-.068.025-.058.051a.256.256 0 0 0 .042.085.122.122 0 0 0 .08.039.205.205 0 0 0 .125-.036c.04-.026.061-.074.096-.108.007-.006.026 0 .026.01a.36.36 0 0 1-.041.158.497.497 0 0 1-.128.138c-.015.013-.033.029-.033.049a.2.2 0 0 0 .044.084.134.134 0 0 0 .083.054.269.269 0 0 0 .1 0c.013 0 .01.023-.001.031a.253.253 0 0 1-.117.068.25.25 0 0 1-.128.008c-.081-.02-.134-.05-.214-.073a.23.23 0 0 0-.135-.009.227.227 0 0 0-.106.083.133.133 0 0 0-.03.064c-.006.063.025.13.005.192a1.415 1.415 0 0 1-.081.234 1.314 1.314 0 0 1-.115.165c-.04.054-.093.074-.12.133a.638.638 0 0 1-.038.063.515.515 0 0 0-.058.229.452.452 0 0 0 .085.209l.153.237a.149.149 0 0 1 .009.083.088.088 0 0 1-.044.07.893.893 0 0 0-.419.527l-.002.013v.004a.106.106 0 0 1-.021.042.334.334 0 0 1-.19.096c-.055.015-.11.029-.165.046a.077.077 0 0 0-.044.031.08.08 0 0 0 .009.097.137.137 0 0 1 .03.071.063.063 0 0 1-.013.042.108.108 0 0 1-.028.022.865.865 0 0 1-.216.087c-.05.011-.086-.002-.07-.059a3.075 3.075 0 0 1 .098-.293.42.42 0 0 1 .133-.14 2.289 2.289 0 0 1 .212-.162.411.411 0 0 0 .119-.126 3.299 3.299 0 0 1 .19-.275.163.163 0 0 0 .029-.129.246.246 0 0 0-.142-.185 1.052 1.052 0 0 0-.085-.034.534.534 0 0 1-.246-.175.09.09 0 0 0-.062-.04c-.063.002-.081.09-.083.138a1.17 1.17 0 0 0 .004.212.18.18 0 0 1 .004.072.055.055 0 0 1-.039.034 2.74 2.74 0 0 0-.565.279.24.24 0 0 0-.063.07l-.017.029a.187.187 0 0 1-.223.08.5.5 0 0 0-.044-.011.094.094 0 0 0-.064.017.162.162 0 0 0-.041.036.06.06 0 0 0-.01.019v.006a.057.057 0 0 0 0 .008.07.07 0 0 0 .004.017l.022.06a.066.066 0 0 1-.038.096.881.881 0 0 1-.203.055c-.04.005-.075-.01-.065-.057a1.1 1.1 0 0 1 .07-.237.094.094 0 0 1 .057-.06.79.79 0 0 0 .179-.14.266.266 0 0 1 .169-.073.512.512 0 0 0 .262-.1 1.73 1.73 0 0 0 .225-.186.37.37 0 0 0-.006-.46l-.02-.035c-.019-.03-.03-.073-.046-.104a.24.24 0 0 1-.039-.104c0-.068.027-.133.031-.201a.024.024 0 0 0-.016-.025.488.488 0 0 0-.137-.03 2.677 2.677 0 0 1-.56.006 1.423 1.423 0 0 1-.39-.18c-.053-.033-.085-.07-.139-.101-.014-.008-.015-.005-.028.006a.672.672 0 0 1-.459.125h-.002a1.766 1.766 0 0 1-.294-.077c-.073-.027-.19-.074-.26-.015-.029.025-.022.06-.022.093a1.244 1.244 0 0 1-.01.305.038.038 0 0 0 .003.032.044.044 0 0 0 .006.006.136.136 0 0 0 .036.02l.01.004c.028.01.033.023.05.058a.196.196 0 0 1 .016.062.159.159 0 0 1-.003.062.544.544 0 0 1-.009.039.207.207 0 0 0 .008.135.115.115 0 0 0 .042.053.073.073 0 0 0 .01.004.063.063 0 0 0 .01.003.068.068 0 0 0 .01 0h.01a.074.074 0 0 0 .02-.008l.004-.002a.05.05 0 0 1 .035-.012.046.046 0 0 1 .01.003.08.08 0 0 1 .063.074.484.484 0 0 1-.046.221.058.058 0 0 1-.077.03l-.018-.007a.445.445 0 0 1-.14-.117.19.19 0 0 1-.049-.112.12.12 0 0 0-.028-.082.09.09 0 0 0-.032-.016.144.144 0 0 1-.07-.046.268.268 0 0 1-.052-.219 1.5 1.5 0 0 0-.046-.64.149.149 0 0 1 .002-.108l.016-.043a.148.148 0 0 1 .007-.016.06.06 0 0 1 .042-.032.167.167 0 0 1 .029-.003 1.516 1.516 0 0 0 .45-.07.152.152 0 0 1 .062-.01.89.89 0 0 0 .073.002c.03 0 .06-.027.024-.05a.847.847 0 0 1-.084-.087.046.046 0 0 0-.052-.022.072.072 0 0 0-.01.005l-.009.005a.098.098 0 0 1-.152-.029.824.824 0 0 1-.087-.202.555.555 0 0 0-.109-.238.235.235 0 0 0-.19-.063.216.216 0 0 0-.13.098l-.063.088a.144.144 0 0 0-.031.067.107.107 0 0 0 0 .016.14.14 0 0 0 .008.032.133.133 0 0 1-.039.154l-.094.075a.087.087 0 0 0-.03.06.527.527 0 0 1-.012.06.13.13 0 0 0-.003.045.088.088 0 0 0 .002.012.081.081 0 0 0 .031.04.156.156 0 0 1 .013.012.074.074 0 0 1 .012.017.06.06 0 0 1-.012.07.219.219 0 0 1-.024.021.753.753 0 0 1-.19.108.098.098 0 0 1-.026.006c-.038.003-.05-.026-.052-.06-.003-.044-.003-.089-.003-.134a.207.207 0 0 1 .057-.137.36.36 0 0 0 .072-.225.197.197 0 0 1 .04-.13.305.305 0 0 0 .057-.09.257.257 0 0 1 .039-.066 3.861 3.861 0 0 0 .281-.384c.054-.086.155-.192.237-.073a.357.357 0 0 0 .078.084 2.395 2.395 0 0 0 .259.164c.094.053.109-.042.125-.121v-.003a.331.331 0 0 1 .038-.092 1.26 1.26 0 0 1 .202-.247c.043-.038.105-.076.15-.113.018-.016.023-.018.03-.04.009-.022.024-.05.034-.078.01-.027.015-.055.024-.076a.344.344 0 0 0 .044-.098v-.003a.023.023 0 0 0 0-.005v-.007l-.003-.007a.05.05 0 0 0-.021-.024.18.18 0 0 0-.102-.026h-.003a.384.384 0 0 0-.148.031.106.106 0 0 0-.054.054.226.226 0 0 1-.042.063.098.098 0 0 1-.13.006c-.024-.016-.014-.043 0-.063a.414.414 0 0 0 .035-.05.042.042 0 0 0 .005-.025v-.004l-.002-.005a.031.031 0 0 0-.005-.006.046.046 0 0 0-.045-.007.98.98 0 0 0-.083.027.064.064 0 0 1-.094-.047.174.174 0 0 1-.003-.055.055.055 0 0 1 .04-.05c.02-.006.05-.017.046-.042a.079.079 0 0 1 0-.023.052.052 0 0 1 .012-.024.14.14 0 0 1 .03-.025 3.869 3.869 0 0 0 .32-.234.05.05 0 0 1 .064-.01l.01.006a.223.223 0 0 0 .151.02.046.046 0 0 0 .041-.03.025.025 0 0 0 0-.005v-.005l-.002-.006-.003-.004a.071.071 0 0 0-.035-.021l-.058-.021a.269.269 0 0 1-.052-.025.053.053 0 0 1-.025-.059c.023-.113.147-.114.241-.105h.004a.505.505 0 0 0 .14-.022c.06-.021.106-.067.163-.094.057-.027.117-.057.176-.08.018-.006.033-.002.049-.009a.091.091 0 0 0 .035-.025.965.965 0 0 1 .142-.163.822.822 0 0 1 .236-.092.107.107 0 0 1 .03-.006zm-.425.557a.219.219 0 0 0-.105.026c-.009.005-.015.016-.008.024.018.021.049.03.07.05a.16.16 0 0 1 .035.046c.009.019.024.04.033.06a1.296 1.296 0 0 1 .045.123 1.227 1.227 0 0 1 .05.209c.01.057.007.117.01.175v.081c-.001.023-.001.047-.003.07a1.143 1.143 0 0 0-.004.098v.08c.002.07.013.12.044.12a.18.18 0 0 0 .084-.019.175.175 0 0 0 .085-.148 2.026 2.026 0 0 0-.003-.576.51.51 0 0 0-.188-.362.219.219 0 0 0-.144-.057zm3.96.161h5.177c-.017.825-.034 1.6-.05 2.263h-5.13l.004-1.862zm-.006 2.544h5.123a9.697 9.697 0 0 1-.545 2.911 14.495 14.495 0 0 1-1.56 3.118 12.45 12.45 0 0 1-2.415 2.669 10.809 10.809 0 0 1-1.147.848 14.592 14.592 0 0 1-1.96.999c-.224.096-.418.186-.596.247-.193.065-.358.125-.474.156v-.115l.003-7.295a3.552 3.552 0 0 0 .316-.023c.005.015.016.057.031.1a.333.333 0 0 0 .219.166.317.317 0 0 0 .306-.107.373.373 0 0 0 .388.067.235.235 0 0 0 .175-.227.43.43 0 0 0-.033-.208l-.036-.066a3.925 3.925 0 0 0 .744-.41l.02-.006c.373-.094 1.872-.631 2.791-.643a3.28 3.28 0 0 1 1.627.39 2.792 2.792 0 0 1 .682.56c.006.009.013.028.037.032a.036.036 0 0 0 .034-.022 1.139 1.139 0 0 0 .079-.516c-.02-.282-.3-.486-.383-.57-.003-.003-.01-.021.02-.041a.674.674 0 0 1 .105-.085.983.983 0 0 1 .562-.212c.03.003.02-.04.012-.076-.058-.25-.415-.412-.79-.354a.963.963 0 0 0-.613.417c-.007.011-.042.027-.056.013a2.926 2.926 0 0 0-.369-.107c-.045-.01-.021-.044-.019-.05a1.003 1.003 0 0 1 .304-.337 1.125 1.125 0 0 1 .494-.224c.022 0 .022-.03.016-.04a.55.55 0 0 0-.375-.302.844.844 0 0 0-.78.14 1.397 1.397 0 0 0-.445.673c-.014.02-.018.036-.036.032-.099-.02-.345-.007-.367-.022-.015-.007-.012-.03-.009-.045a.91.91 0 0 1 .222-.38.882.882 0 0 1 .364-.286.055.055 0 0 0 .01-.094.98.98 0 0 0-1.22.263 2.192 2.192 0 0 0-.304.696c-.002.009-.017.036-.036.036l-.508.112-.083.019-.022.023a3.29 3.29 0 0 0 .497-1.65zm-12.45.085h5.19v.09a3.145 3.145 0 0 0 .837 2.098H3.556a9.74 9.74 0 0 1-.342-2.188zm.415 2.443h5.863a2.566 2.566 0 0 0 .112.1 3.897 3.897 0 0 0 2.17.898v1.21h-7.22a13.789 13.789 0 0 1-.8-1.827 10.401 10.401 0 0 1-.125-.38zm10.584.29l-.01.012h-.002l-.002-.002a3.29 3.29 0 0 0 .015-.01zm1.738.185a.911.911 0 0 0-.507.155.934.934 0 0 0-.392.41 2.65 2.65 0 0 0-.172.775.063.063 0 0 1-.038.035 2.897 2.897 0 0 0-.335.087.026.026 0 0 1-.023-.02 1.105 1.105 0 0 1 .15-.727.886.886 0 0 1 .218-.263.037.037 0 0 0-.017-.068.98.98 0 0 0-.648.114.888.888 0 0 0-.452.667 1.589 1.589 0 0 0 .042.594c0 .006.006.027-.016.031-.076.037-.282.145-.355.18-.005.002-.019.005-.022-.006a.58.58 0 0 0-.268-.358.526.526 0 0 0-.446.022.548.548 0 0 0-.216.224.375.375 0 0 0 .127.455c.006.006.017.02 0 .025-.09.049-.092.06-.16.161a.428.428 0 0 0 .052.45.465.465 0 0 0 .7.082c.004-.003.018.005.025.02a.548.548 0 0 0 .143.151.463.463 0 0 0 .455 0 .413.413 0 0 0 .21-.415.378.378 0 0 0-.111-.262c-.013-.016 0-.024.034-.046a5.404 5.404 0 0 1 1.96-.666 3.121 3.121 0 0 1 1.076.022 1.504 1.504 0 0 1 .629.312 2.841 2.841 0 0 1 .406.402.164.164 0 0 0 .117-.025.66.66 0 0 0 .014-.517 1.604 1.604 0 0 0-.384-.59c-.003-.002-.003-.013-.003-.02-.004-.03.015-.045.052-.079a1.211 1.211 0 0 1 .562-.297c.027-.002.038-.022.02-.053a.656.656 0 0 0-.808-.298h-.001a.916.916 0 0 0-.454.416c-.006.011-.022.05-.037.038-.09-.008-.242-.032-.331-.04-.041-.002-.025-.039-.024-.045a.744.744 0 0 1 .194-.316 1.176 1.176 0 0 1 .444-.318.021.021 0 0 0 .016-.031.627.627 0 0 0-.465-.229.81.81 0 0 0-.617.238 1.255 1.255 0 0 0-.337.74c-.009.023-.02.035-.037.035a2 2 0 0 1-.278.025c-.015-.004-.014-.02-.014-.036a.91.91 0 0 1 .101-.406 1.491 1.491 0 0 1 .55-.582c.036-.025.038-.076.026-.082a.911.911 0 0 0-.355-.071zM4.707 17.692h7.069v2.19H6.213a11.237 11.237 0 0 1-.898-1.181 16.446 16.446 0 0 1-.609-1.01zm10.076 1.176a.497.497 0 0 0-.273.069.982.982 0 0 0-.475.56 1.09 1.09 0 0 0 .012.571c.003.007.012.024-.002.03-.078.03-.136.065-.213.096-.004 0-.024.005-.028-.005a.631.631 0 0 1 .088-.736c.017-.015.027-.035-.008-.047a.588.588 0 0 0-.531.193.677.677 0 0 0-.117.659.922.922 0 0 0 .099.261c.003.005.03.021.014.028l-.15.115c-.003.003-.014.008-.019 0a.486.486 0 0 0-.29-.238.341.341 0 0 0-.317.088.361.361 0 0 0 .147.602c.007.003.017.012.005.02a.587.587 0 0 0-.19.212.377.377 0 0 0 .085.406.37.37 0 0 0 .29.089.605.605 0 0 0 .357-.313c.002-.003.021-.017.031-.006a.531.531 0 0 0 .264.2.324.324 0 0 0 .323-.065.35.35 0 0 0 .111-.4.61.61 0 0 0-.201-.216c-.013-.01-.003-.035.023-.055a2.972 2.972 0 0 1 1.402-.62 1.801 1.801 0 0 1 1.025.166 1.547 1.547 0 0 1 .337.267c.013.007.05.02.063.008a.397.397 0 0 0 .035-.548.654.654 0 0 0-.206-.165.043.043 0 0 1-.007-.015.906.906 0 0 1 .301-.393 1.382 1.382 0 0 1 .295-.143c.022-.006.018-.02.007-.047-.128-.293-.635-.304-.874-.15a1.088 1.088 0 0 0-.346.396c-.005.01-.012.04-.025.031l-.213-.064c-.004 0-.004-.024-.002-.028a1.115 1.115 0 0 1 .696-.565c.015-.006.01-.02.007-.028-.11-.268-.661-.245-.93-.074a1.167 1.167 0 0 0-.493.714c-.003.02.006.037-.007.04a1.239 1.239 0 0 1-.23.055.024.024 0 0 1-.022-.023.642.642 0 0 1 .067-.392 2 2 0 0 1 .324-.408.043.043 0 0 0-.003-.063.497.497 0 0 0-.236-.07zm-3.006 1.296v3.417c-.098-.032-.214-.074-.342-.117-.178-.06-.373-.151-.597-.247a14.587 14.587 0 0 1-1.96-1 10.816 10.816 0 0 1-1.147-.847 12.861 12.861 0 0 1-1.266-1.206h5.31z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Porsche</title><path d="M11.972 0A25.68 25.68 0 0 0 9.93.091a27.858 27.858 0 0 0-4.248.685 23.565 23.565 0 0 0-2.975.966l-.06.022s.118 7.243.21 10.831a9.934 9.934 0 0 0 .569 3.098 14.899 14.899 0 0 0 1.622 3.214A12.884 12.884 0 0 0 7.56 21.66a11.234 11.234 0 0 0 1.192.873 15.214 15.214 0 0 0 2.038 1.031c.233.098.436.192.62.255A4.58 4.58 0 0 0 12 24a4.58 4.58 0 0 0 .59-.182c.182-.063.387-.156.62-.255a15.22 15.22 0 0 0 2.037-1.031 11.25 11.25 0 0 0 1.194-.873 12.88 12.88 0 0 0 2.511-2.752 14.889 14.889 0 0 0 1.622-3.214 9.934 9.934 0 0 0 .57-3.098c.091-3.588.21-10.827.21-10.827a.635.635 0 0 0-.057-.026 23.564 23.564 0 0 0-2.976-.966 27.856 27.856 0 0 0-4.248-.684A26.068 26.068 0 0 0 12.031 0zm0 .361h.057c.679.008 1.288.03 1.963.09a26.585 26.585 0 0 1 4.084.663 22.53 22.53 0 0 1 2.861.937.619.619 0 0 1 .057.025l-.038 2.274a.113.113 0 0 0-.019-.01 22.55 22.55 0 0 0-2.86-.937 26.61 26.61 0 0 0-4.085-.662c-.675-.06-1.281-.1-1.96-.108h-.058c-.679.009-1.29.048-1.965.108a26.608 26.608 0 0 0-4.084.665 22.547 22.547 0 0 0-2.861.938.116.116 0 0 0-.02.01l-.038-2.281.058-.022a22.527 22.527 0 0 1 2.86-.937A26.581 26.581 0 0 1 10.01.45c.675-.06 1.284-.08 1.963-.089zm.288.216a16.633 16.633 0 0 0-.902.008c-.121.005-.288.109-.29.23l-.007.648c-.002.132.172.236.305.239.462.01.87.002 1.318.03.033.003.062.023.062.056l-.003.13a.042.042 0 0 1-.045.046c-.521 0-1.066-.025-1.593.017-.028.002-.027-.005-.028.023l-.024.384-.002.03a16.318 16.318 0 0 1 1.882 0 .32.32 0 0 0 .305-.262l.006-.627c0-.129-.158-.224-.261-.23-.442-.028-.945-.013-1.394-.025a.046.046 0 0 1-.044-.05l.009-.145c0-.028.019-.036.047-.037.444-.016 1.107.005 1.562.019a.072.072 0 0 0 .06-.07V.674c0-.017-.032-.067-.063-.068V.605a33.113 33.113 0 0 0-.9-.028zm-1.88.064c-.423.008-1.341.125-1.862.19L8.515 2.64v.023l.47-.06a.014.014 0 0 0 .01-.006.014.014 0 0 0 .003-.01v-.523l.947-.102c.083-.015.18.046.256.169a.88.88 0 0 1 .114.339l.467-.035c.01 0 .03 0 .028-.01a.988.988 0 0 0-.307-.663.316.316 0 0 0 .197-.31 4.34 4.34 0 0 0-.022-.564.32.32 0 0 0-.3-.247zm3.59.019a.404.404 0 0 0-.413.332l-.01 1.195a.312.312 0 0 0 .24.289c.61.057 1.21.112 1.89.215.011 0 .032-.007.032-.017v-.416c0-.009-.02-.028-.027-.03-.454-.057-1.053-.137-1.589-.193a.076.076 0 0 1-.058-.07v-.812c0-.034.05-.052.084-.05.529.044 1.056.14 1.584.197.014.002.036-.007.037-.021l.01-.382a.037.037 0 0 0-.029-.033 36.382 36.382 0 0 0-1.75-.204zm1.98.237c-.012 0-.022.014-.022.025-.006.274-.045 1.457-.053 1.772v.027c.155.027.326.048.453.074.014.002.035-.008.035-.022-.002-.207 0-.448-.004-.636 0-.013.006-.014.02-.012a31.392 31.392 0 0 1 1.102.22c.008 0 .052.007.052.03-.003.217-.007.4-.013.617a.041.041 0 0 0 .027.04c.145.033.283.067.42.1.037.008.043.001.044-.012.022-.451.03-1.174.036-1.784 0-.008-.003-.02-.01-.022-.153-.035-.297-.072-.453-.105-.014-.003-.022.02-.023.035-.015.223-.009.43-.026.652 0 .008 0 .012-.009.01-.37-.076-.765-.158-1.132-.227-.01-.002-.006-.02-.005-.031l.003-.653a.033.033 0 0 0-.026-.03 23.196 23.196 0 0 0-.417-.068zM7.934.92a.303.303 0 0 0-.037 0c-.543.086-1.089.201-1.64.32a.5.5 0 0 0-.23.143.322.322 0 0 0-.102.205l.004 1.118a.434.434 0 0 0 .106.266.24.24 0 0 0 .204.11 38.518 38.518 0 0 1 1.633-.323.497.497 0 0 0 .268-.166.362.362 0 0 0 .098-.23L8.236 1.2a.28.28 0 0 0-.11-.198.303.303 0 0 0-.191-.08zm2.157.197a.076.076 0 0 1 .08.069l.003.189a.172.172 0 0 1-.14.166l-1.062.104-.009-.008V1.23l.009-.004 1.111-.108a.076.076 0 0 1 .008 0zm-2.52.29a.167.167 0 0 1 .078.022.117.117 0 0 1 .054.106l-.009.704a.125.125 0 0 1-.049.105.291.291 0 0 1-.12.047 61.16 61.16 0 0 1-.997.19.106.106 0 0 1-.088-.017.133.133 0 0 1-.03-.1v-.726a.143.143 0 0 1 .04-.097.243.243 0 0 1 .12-.06c.29-.054.67-.129.968-.172a.167.167 0 0 1 .033-.002zm10.81 0l-.001.001c-.008 0-.008.012-.008.019-.014.606-.03 1.167-.035 1.773 0 .013.006.03.018.033a22.245 22.245 0 0 1 2.158.7c.032.011.031-.013.031-.022.003-.138.01-.278.003-.416a.041.041 0 0 0-.025-.033 16.602 16.602 0 0 0-1.66-.541.028.028 0 0 1-.019-.026l.008-.18c0-.008.014-.01.022-.008a21.848 21.848 0 0 1 1.67.542c.01.003.01-.01.01-.019a5.121 5.121 0 0 0 0-.468.029.029 0 0 0-.02-.026 21.457 21.457 0 0 0-1.638-.523c-.008-.002-.018-.01-.018-.018v-.192c0-.008.013-.013.021-.01.564.144 1.184.36 1.615.519.038.014.06.008.06-.027 0-.157.006-.168-.002-.324-.002-.02-.004-.04-.022-.047a21.383 21.383 0 0 0-2.169-.707zm-12.97.064a.365.365 0 0 0-.084.009c-.65.166-1.303.414-1.956.652a.063.063 0 0 0-.03.052V3.65l.003.33s.471-.177.573-.21c.013-.004.013-.017.013-.031l-.01-.52c0-.015.002-.037.016-.04l1.625-.502a.306.306 0 0 0 .138-.101.237.237 0 0 0 .052-.156l-.017-.683a.272.272 0 0 0-.119-.197.365.365 0 0 0-.204-.068zm-.286.496c.036-.01.07.031.072.063a1.86 1.86 0 0 1 .012.25c-.001.045-.066.097-.11.11l-1.184.386c-.011.004-.031 0-.031-.012l.002-.358c0-.017.02-.031.036-.036a10.796 10.796 0 0 1 1.203-.403zm6.967.981c.653.01 1.246.03 1.9.088a26.591 26.591 0 0 1 4.083.663 22.501 22.501 0 0 1 2.861.937.107.107 0 0 1 .014.007 89.441 89.441 0 0 0-.007.448h-8.851zm-.317.002l-.001 4.618H8.827c-.043-.004-.015-.023.015-.052a1.71 1.71 0 0 1 .715-.312c.022-.002.028-.014-.003-.054a.898.898 0 0 0-.93-.212.985.985 0 0 0-.624.603.04.04 0 0 1-.04.031 6.734 6.734 0 0 1-.47.013c-.025 0-.037-.032-.035-.056a.737.737 0 0 1 .343-.484 1.1 1.1 0 0 1 .519-.178.04.04 0 0 0 .02-.063.515.515 0 0 0-.105-.093.758.758 0 0 0-.504-.077 1.053 1.053 0 0 0-.948.964c-.01.06.006.074-.053.094-.112.038-.322.064-.434.088-.02.003-.05-.043-.045-.063a1.309 1.309 0 0 1 .244-.522 1.006 1.006 0 0 1 .342-.291c.026-.013.05-.044.026-.064-.253-.22-.771.012-.98.241a1.37 1.37 0 0 0-.275.91c0 .016.014.041 0 .047a4.942 4.942 0 0 1-.4.15c-.012.003-.014-.028-.016-.04a.93.93 0 0 1 .147-.677.661.661 0 0 1 .244-.241c.01-.006.008-.018 0-.028-.115-.149-.569-.042-.708.094-.32.312-.297.615-.312 1.097-.001.023-.03.111-.056.123a.57.57 0 0 1-.184.07c-.021.006-.023.014-.028-.007a.39.39 0 0 0-.57-.222.356.356 0 0 0-.077.532c.015.017.02.034-.003.041a.42.42 0 0 0-.275.534.336.336 0 0 0 .296.21.628.628 0 0 0 .37-.108.043.043 0 0 1 .06.01.386.386 0 0 0 .531.124c.162-.107.234-.273.114-.559-.007-.016.02-.046.034-.054a6.615 6.615 0 0 1 3.144-.88 1.78 1.78 0 0 1 .456.101.094.094 0 0 1 .023.008l.002.941a.19.19 0 0 1-.034.025 1.005 1.005 0 0 0-.432.55c-.004.017-.006.021-.035.024-.193.019-.399.047-.591.062-.011.002-.032-.019-.028-.03a1.87 1.87 0 0 1 .725-.908.057.057 0 0 0 .01-.067.375.375 0 0 0-.168-.093 1.087 1.087 0 0 0-.895.362 1.418 1.418 0 0 0-.312.875c-.001.022.003.058-.019.065-.124.039-.261.074-.39.11-.015.004-.035-.011-.038-.027a1.006 1.006 0 0 1 .486-1.03c.051-.04-.038-.102-.102-.102a.963.963 0 0 0-.913.53 1.301 1.301 0 0 0-.03.793c.003.023.019.063-.006.069-.079.019-.265.09-.323.108-.021.007-.035-.003-.047-.03a1.041 1.041 0 0 1-.021-.488 1.102 1.102 0 0 1 .268-.493c.008-.01.011-.032 0-.037a.54.54 0 0 0-.378-.025.74.74 0 0 0-.477.38c-.159.297-.118.583.051 1.005.008.02.018.058 0 .07l-.137.08c-.017.013-.032.002-.044-.015-.055-.078-.124-.202-.21-.24a.415.415 0 0 0-.428.035.406.406 0 0 0-.12.431.875.875 0 0 0 .1.152c.01.014-.001.036-.013.047-.059.052-.14.09-.188.14a.395.395 0 0 0-.01.471.365.365 0 0 0 .45.123 1.624 1.624 0 0 0 .232-.122c.027-.018.045-.051.07-.025a.546.546 0 0 0 .224.153.427.427 0 0 0 .354-.062.305.305 0 0 0 .168-.338.875.875 0 0 0-.143-.27c-.033-.035-.035-.033 0-.054a7.435 7.435 0 0 1 1.66-.724 5.024 5.024 0 0 1 1.69-.207h.046l.003 1.949H3.206c-.054-2.133-.116-5.51-.156-7.836a.113.113 0 0 1 .014-.007 22.499 22.499 0 0 1 2.86-.937 26.59 26.59 0 0 1 4.084-.663 23.38 23.38 0 0 1 1.768-.086zm-3.088.816a1.237 1.237 0 0 0-.693.232c-.286.188-.456.773-.49.982a.044.044 0 0 1-.04.036 5.998 5.998 0 0 0-.676.125c-.007.001-.012-.01-.012-.017a.983.983 0 0 1 .258-.59 3.506 3.506 0 0 1 .493-.396c.013-.011.004-.045-.012-.051a1.035 1.035 0 0 0-.797.012 1.129 1.129 0 0 0-.675.867 2.062 2.062 0 0 0-.029.41c.002.017-.03.018-.045.023-.246.077-.504.167-.71.236-.01.004-.039.002-.039-.01a1.168 1.168 0 0 1 .175-.655c.12-.195.343-.305.505-.469.011-.012.028-.044.011-.051-.41-.165-.797.004-1.124.375a1.395 1.395 0 0 0-.2 1.124c.009.036 0 .075-.019.083a1.805 1.805 0 0 1-.23.089.025.025 0 0 1-.033-.02c-.093-.296-.44-.238-.597-.148a.361.361 0 0 0-.139.489.031.031 0 0 1-.01.044.442.442 0 0 0-.205.596.352.352 0 0 0 .428.137 1.208 1.208 0 0 0 .246-.129.027.027 0 0 1 .03.004.393.393 0 0 0 .566.08c.115-.082.16-.096.204-.244a.39.39 0 0 0-.09-.3c-.012-.01-.001-.04.013-.047A9.692 9.692 0 0 1 8.947 5.51a2.35 2.35 0 0 1 1.446.553.072.072 0 0 0 .062.031.098.098 0 0 0 .054-.056.66.66 0 0 0-.204-.678 1.21 1.21 0 0 0-.612-.344c-.012-.003-.02-.029-.01-.037a.968.968 0 0 1 .335-.22 3.587 3.587 0 0 1 .605-.05c.014-.001.035-.015.03-.028a.606.606 0 0 0-.527-.4 1.325 1.325 0 0 0-.693.1 1.118 1.118 0 0 0-.5.553.036.036 0 0 1-.032.02 12.139 12.139 0 0 0-.594-.007c-.014 0-.035 0-.035-.014a.943.943 0 0 1 .255-.517 1.989 1.989 0 0 1 .68-.386c.019-.006.04-.036.029-.051a.549.549 0 0 0-.201-.17 1.237 1.237 0 0 0-.347-.041zm3.405 1.607h8.845c-.012.686-.025 1.433-.04 2.195h-8.805zM8.681 7.801l6.666.003a.016.016 0 0 1 .017.013l-.002 5.138a2.354 2.354 0 0 1-.143.764 3.327 3.327 0 0 1-1.44 1.725 3.468 3.468 0 0 1-1.74.491 3.512 3.512 0 0 1-2.26-.86 3.078 3.078 0 0 1-1.105-2.31L8.667 7.82c0-.013.001-.019.014-.019zm6.994.086h5.217c-.012.645-.025 1.296-.034 1.926h-5.183V8.318zm-6.839.071c-.013 0-.014.005-.014.018l.007 4.753a2.97 2.97 0 0 0 1.054 2.225 3.333 3.333 0 0 0 2.153.827 3.284 3.284 0 0 0 1.66-.473 3.193 3.193 0 0 0 1.374-1.66 2.28 2.28 0 0 0 .136-.734l.002-4.94a.015.015 0 0 0-.016-.014zm4.436.304a.101.101 0 0 1 .001 0 .11.11 0 0 1 .087.071l.242.715a.079.079 0 0 1-.003.07.066.066 0 0 1-.054.024.065.065 0 0 1-.063-.044l-.038-.125h-.33l-.036.128c-.01.04-.04.044-.071.044a.063.063 0 0 1-.044-.028.057.057 0 0 1-.01-.052l.232-.728a.101.101 0 0 1 .087-.075zm-.763.007a.226.226 0 0 1 .023 0 .232.232 0 0 1 .235.157.046.046 0 0 1-.031.059.053.053 0 0 1-.07-.02.166.166 0 0 0-.132-.09.151.151 0 0 0-.133.1.498.498 0 0 0-.055.222.524.524 0 0 0 .046.228.159.159 0 0 0 .154.102.233.233 0 0 0 .166-.243v-.039h-.135a.057.057 0 0 1-.059-.063c0-.023.007-.05.059-.05h.192c.064 0 .073.048.073.09a.792.792 0 0 1-.011.152.399.399 0 0 1-.15.236.301.301 0 0 1-.15.043.257.257 0 0 1-.227-.145.618.618 0 0 1-.073-.31.577.577 0 0 1 .08-.304.226.226 0 0 1 .198-.125zm-2.988.002a.318.318 0 0 1 .004 0c.183.002.243.111.243.15 0 .035-.061.08-.095.039a.2.2 0 0 0-.157-.068.143.143 0 0 0-.15.096.114.114 0 0 0 .094.135.61.61 0 0 1 .267.08h-.001a.202.202 0 0 1 .081.18.247.247 0 0 1-.067.175.327.327 0 0 1-.247.088.297.297 0 0 1-.263-.14c-.004-.01-.01-.063.034-.078a.084.084 0 0 1 .082.026.239.239 0 0 0 .156.063.223.223 0 0 0 .148-.05.105.105 0 0 0 .024-.116.219.219 0 0 0-.193-.098.25.25 0 0 1-.172-.07.25.25 0 0 1-.069-.196.219.219 0 0 1 .1-.163.318.318 0 0 1 .181-.053zm1.649 0a.06.06 0 0 1 .001 0 .06.06 0 0 1 .006 0h.355a.06.06 0 1 1 0 .12l-.114.002v.682a.063.063 0 0 1-.125 0v-.683h-.116a.06.06 0 0 1-.007-.12zm.56 0a.06.06 0 0 1 .001 0 .06.06 0 0 1 .006 0h.354a.06.06 0 1 1 0 .12l-.114.002v.682a.063.063 0 0 1-.125 0v-.683h-.115a.06.06 0 0 1-.007-.12zm2.74 0a.06.06 0 0 1 .002 0 .06.06 0 0 1 .006 0h.353a.06.06 0 1 1 0 .12l-.112.002v.682a.063.063 0 0 1-.125 0v-.683h-.116a.06.06 0 0 1-.007-.12zm-.677.004a.063.063 0 0 1 .012 0h.19a.364.364 0 0 1 .208.058.278.278 0 0 1 .108.206.235.235 0 0 1-.071.198.305.305 0 0 1-.117.075l-.02.007.158.2a.086.086 0 0 1 .023.056c-.002.032-.023.05-.06.05a.066.066 0 0 1-.056-.027l-.187-.258h-.117v.23a.059.059 0 0 1-.063.067.06.06 0 0 1-.062-.067v-.726a.073.073 0 0 1 .016-.05.063.063 0 0 1 .038-.019zm-3.87.002a.06.06 0 0 1 .003 0h.357a.06.06 0 0 1 0 .121h-.116v.684a.063.063 0 0 1-.125 0v-.684h-.116a.06.06 0 0 1-.003-.12zm.583 0a.063.063 0 0 1 .002 0 .063.063 0 0 1 .065.064v.471a.258.258 0 0 0 .037.151.146.146 0 0 0 .127.056.138.138 0 0 0 .125-.056.265.265 0 0 0 .035-.15V8.34h.001a.063.063 0 0 1 .125 0v.432a.474.474 0 0 1-.056.262.25.25 0 0 1-.228.104.26.26 0 0 1-.23-.104.456.456 0 0 1-.061-.262V8.34a.063.063 0 0 1 .058-.063zm3.354.115v.328h.13a.18.18 0 0 0 .2-.174.15.15 0 0 0-.051-.109.178.178 0 0 0-.13-.045zm-.584.015l-.136.469h.278zm-1.14 1.005c.011 0 .021.002.022.011.002.018-.016.029-.042.042a.206.206 0 0 0-.094.08.31.31 0 0 0-.039.163.115.115 0 0 0 .063.079.298.298 0 0 0 .142.028.502.502 0 0 0 .215-.063.581.581 0 0 1 .276-.02.341.341 0 0 1 .194.063c.024.017.02.038.011.04-.014.005-.029-.012-.044-.01a.674.674 0 0 0-.142.03c-.06.027-.087.037-.116.09a.099.099 0 0 0-.007.073c.01.024.035.04.04.057a.446.446 0 0 0 .064.125.205.205 0 0 0 .03.023 2.668 2.668 0 0 1 .282.243.26.26 0 0 1 .04.093c.003.012-.007.03-.018.025a.255.255 0 0 1-.036-.029.178.178 0 0 0-.053-.039.368.368 0 0 0-.176-.025c-.027 0-.081.024-.05.036a.357.357 0 0 1 .132.116.43.43 0 0 1 .107.31c0 .006-.012.01-.015.006a.359.359 0 0 0-.102-.109.324.324 0 0 0-.21-.062c-.015.001-.06 0-.055.014a1.19 1.19 0 0 1 .123.191.562.562 0 0 1 .039.276c-.001.005-.02.01-.023.005a.61.61 0 0 0-.077-.076.349.349 0 0 0-.094-.06.29.29 0 0 0-.204.028.325.325 0 0 0-.13.132.492.492 0 0 0-.062.205.46.46 0 0 0 .042.257.368.368 0 0 0 .19.164.955.955 0 0 0 .334.044c.139.005.278-.016.417-.02a1.943 1.943 0 0 1 .396.003.88.88 0 0 1 .3.12 2.64 2.64 0 0 1 .215.183c.008.006.026-.003.035-.009a.462.462 0 0 0 .131-.233.346.346 0 0 0-.056-.246c-.047-.085-.116-.18-.17-.27a2.962 2.962 0 0 1-.202-.296.305.305 0 0 1-.017-.221.238.238 0 0 1 .107-.128c.011-.007.022.006.017.021a.184.184 0 0 0-.008.112.32.32 0 0 0 .089.14c.013.01.047-.005.055-.021.018-.043.007-.11.023-.154a.619.619 0 0 1 .108-.226 1.47 1.47 0 0 1 .36-.196c.033-.019.054-.105.091-.091.037.013.017.1-.011.142-.04.062-.087.1-.131.156a1.536 1.536 0 0 0-.157.247.222.222 0 0 0-.029.137.14.14 0 0 0 .073.094c.022.01.05-.01.07-.025a.385.385 0 0 0 .097-.103c.023-.038.01-.089.032-.128.006-.009.03-.007.037 0a.139.139 0 0 1 .044.084.393.393 0 0 1-.01.113c-.003.008-.024.027-.031.045a.244.244 0 0 1-.02.04c-.036.063-.078.116-.125.126-.01.001-.017.021-.01.03a.391.391 0 0 0 .113.132.198.198 0 0 0 .152.01c.027-.008.048-.027.079-.037.013-.004.005.004.005.017a.27.27 0 0 1-.015.086.19.19 0 0 1-.075.083.395.395 0 0 1-.166.05c-.027.005-.068.025-.058.051a.256.256 0 0 0 .042.085.122.122 0 0 0 .08.039.205.205 0 0 0 .125-.036c.04-.026.061-.074.096-.108.007-.006.026 0 .026.01a.36.36 0 0 1-.041.158.497.497 0 0 1-.128.138c-.015.013-.033.029-.033.049a.2.2 0 0 0 .044.084.134.134 0 0 0 .083.054.269.269 0 0 0 .1 0c.013 0 .01.023-.001.031a.253.253 0 0 1-.117.068.25.25 0 0 1-.128.008c-.081-.02-.134-.05-.214-.073a.23.23 0 0 0-.135-.009.227.227 0 0 0-.106.083.133.133 0 0 0-.03.064c-.006.063.025.13.005.192a1.415 1.415 0 0 1-.081.234 1.314 1.314 0 0 1-.115.165c-.04.054-.093.074-.12.133a.638.638 0 0 1-.038.063.515.515 0 0 0-.058.229.452.452 0 0 0 .085.209l.153.237a.149.149 0 0 1 .009.083.088.088 0 0 1-.044.07.893.893 0 0 0-.419.527l-.002.013v.004a.106.106 0 0 1-.021.042.334.334 0 0 1-.19.096c-.055.015-.11.029-.165.046a.077.077 0 0 0-.044.031.08.08 0 0 0 .009.097.137.137 0 0 1 .03.071.063.063 0 0 1-.013.042.108.108 0 0 1-.028.022.865.865 0 0 1-.216.087c-.05.011-.086-.002-.07-.059a3.075 3.075 0 0 1 .098-.293.42.42 0 0 1 .133-.14 2.289 2.289 0 0 1 .212-.162.411.411 0 0 0 .119-.126 3.299 3.299 0 0 1 .19-.275.163.163 0 0 0 .029-.129.246.246 0 0 0-.142-.185 1.052 1.052 0 0 0-.085-.034.534.534 0 0 1-.246-.175.09.09 0 0 0-.062-.04c-.063.002-.081.09-.083.138a1.17 1.17 0 0 0 .004.212.18.18 0 0 1 .004.072.055.055 0 0 1-.039.034 2.74 2.74 0 0 0-.565.279.24.24 0 0 0-.063.07l-.017.029a.187.187 0 0 1-.223.08.5.5 0 0 0-.044-.011.094.094 0 0 0-.064.017.162.162 0 0 0-.041.036.06.06 0 0 0-.01.019v.006a.057.057 0 0 0 0 .008.07.07 0 0 0 .004.017l.022.06a.066.066 0 0 1-.038.096.881.881 0 0 1-.203.055c-.04.005-.075-.01-.065-.057a1.1 1.1 0 0 1 .07-.237.094.094 0 0 1 .057-.06.79.79 0 0 0 .179-.14.266.266 0 0 1 .169-.073.512.512 0 0 0 .262-.1 1.73 1.73 0 0 0 .225-.186.37.37 0 0 0-.006-.46l-.02-.035c-.019-.03-.03-.073-.046-.104a.24.24 0 0 1-.039-.104c0-.068.027-.133.031-.201a.024.024 0 0 0-.016-.025.488.488 0 0 0-.137-.03 2.677 2.677 0 0 1-.56.006 1.423 1.423 0 0 1-.39-.18c-.053-.033-.085-.07-.139-.101-.014-.008-.015-.005-.028.006a.672.672 0 0 1-.459.125h-.002a1.766 1.766 0 0 1-.294-.077c-.073-.027-.19-.074-.26-.015-.029.025-.022.06-.022.093a1.244 1.244 0 0 1-.01.305.038.038 0 0 0 .003.032.044.044 0 0 0 .006.006.136.136 0 0 0 .036.02l.01.004c.028.01.033.023.05.058a.196.196 0 0 1 .016.062.159.159 0 0 1-.003.062.544.544 0 0 1-.009.039.207.207 0 0 0 .008.135.115.115 0 0 0 .042.053.073.073 0 0 0 .01.004.063.063 0 0 0 .01.003.068.068 0 0 0 .01 0h.01a.074.074 0 0 0 .02-.008l.004-.002a.05.05 0 0 1 .035-.012.046.046 0 0 1 .01.003.08.08 0 0 1 .063.074.484.484 0 0 1-.046.221.058.058 0 0 1-.077.03l-.018-.007a.445.445 0 0 1-.14-.117.19.19 0 0 1-.049-.112.12.12 0 0 0-.028-.082.09.09 0 0 0-.032-.016.144.144 0 0 1-.07-.046.268.268 0 0 1-.052-.219 1.5 1.5 0 0 0-.046-.64.149.149 0 0 1 .002-.108l.016-.043a.148.148 0 0 1 .007-.016.06.06 0 0 1 .042-.032.167.167 0 0 1 .029-.003 1.516 1.516 0 0 0 .45-.07.152.152 0 0 1 .062-.01.89.89 0 0 0 .073.002c.03 0 .06-.027.024-.05a.847.847 0 0 1-.084-.087.046.046 0 0 0-.052-.022.072.072 0 0 0-.01.005l-.009.005a.098.098 0 0 1-.152-.029.824.824 0 0 1-.087-.202.555.555 0 0 0-.109-.238.235.235 0 0 0-.19-.063.216.216 0 0 0-.13.098l-.063.088a.144.144 0 0 0-.031.067.107.107 0 0 0 0 .016.14.14 0 0 0 .008.032.133.133 0 0 1-.039.154l-.094.075a.087.087 0 0 0-.03.06.527.527 0 0 1-.012.06.13.13 0 0 0-.003.045.088.088 0 0 0 .002.012.081.081 0 0 0 .031.04.156.156 0 0 1 .013.012.074.074 0 0 1 .012.017.06.06 0 0 1-.012.07.219.219 0 0 1-.024.021.753.753 0 0 1-.19.108.098.098 0 0 1-.026.006c-.038.003-.05-.026-.052-.06-.003-.044-.003-.089-.003-.134a.207.207 0 0 1 .057-.137.36.36 0 0 0 .072-.225.197.197 0 0 1 .04-.13.305.305 0 0 0 .057-.09.257.257 0 0 1 .039-.066 3.861 3.861 0 0 0 .281-.384c.054-.086.155-.192.237-.073a.357.357 0 0 0 .078.084 2.395 2.395 0 0 0 .259.164c.094.053.109-.042.125-.121v-.003a.331.331 0 0 1 .038-.092 1.26 1.26 0 0 1 .202-.247c.043-.038.105-.076.15-.113.018-.016.023-.018.03-.04.009-.022.024-.05.034-.078.01-.027.015-.055.024-.076a.344.344 0 0 0 .044-.098v-.003a.023.023 0 0 0 0-.005v-.007l-.003-.007a.05.05 0 0 0-.021-.024.18.18 0 0 0-.102-.026h-.003a.384.384 0 0 0-.148.031.106.106 0 0 0-.054.054.226.226 0 0 1-.042.063.098.098 0 0 1-.13.006c-.024-.016-.014-.043 0-.063a.414.414 0 0 0 .035-.05.042.042 0 0 0 .005-.025v-.004l-.002-.005a.031.031 0 0 0-.005-.006.046.046 0 0 0-.045-.007.98.98 0 0 0-.083.027.064.064 0 0 1-.094-.047.174.174 0 0 1-.003-.055.055.055 0 0 1 .04-.05c.02-.006.05-.017.046-.042a.079.079 0 0 1 0-.023.052.052 0 0 1 .012-.024.14.14 0 0 1 .03-.025 3.869 3.869 0 0 0 .32-.234.05.05 0 0 1 .064-.01l.01.006a.223.223 0 0 0 .151.02.046.046 0 0 0 .041-.03.025.025 0 0 0 0-.005v-.005l-.002-.006-.003-.004a.071.071 0 0 0-.035-.021l-.058-.021a.269.269 0 0 1-.052-.025.053.053 0 0 1-.025-.059c.023-.113.147-.114.241-.105h.004a.505.505 0 0 0 .14-.022c.06-.021.106-.067.163-.094.057-.027.117-.057.176-.08.018-.006.033-.002.049-.009a.091.091 0 0 0 .035-.025.965.965 0 0 1 .142-.163.822.822 0 0 1 .236-.092.107.107 0 0 1 .03-.006zm-.425.557a.219.219 0 0 0-.105.026c-.009.005-.015.016-.008.024.018.021.049.03.07.05a.16.16 0 0 1 .035.046c.009.019.024.04.033.06a1.296 1.296 0 0 1 .045.123 1.227 1.227 0 0 1 .05.209c.01.057.007.117.01.175v.081c-.001.023-.001.047-.003.07a1.143 1.143 0 0 0-.004.098v.08c.002.07.013.12.044.12a.18.18 0 0 0 .084-.019.175.175 0 0 0 .085-.148 2.026 2.026 0 0 0-.003-.576.51.51 0 0 0-.188-.362.219.219 0 0 0-.144-.057zm3.96.161h5.177c-.017.825-.034 1.6-.05 2.263h-5.13l.004-1.862zm-.006 2.544h5.123a9.697 9.697 0 0 1-.545 2.911 14.495 14.495 0 0 1-1.56 3.118 12.45 12.45 0 0 1-2.415 2.669 10.809 10.809 0 0 1-1.147.848 14.592 14.592 0 0 1-1.96.999c-.224.096-.418.186-.596.247-.193.065-.358.125-.474.156v-.115l.003-7.295a3.552 3.552 0 0 0 .316-.023c.005.015.016.057.031.1a.333.333 0 0 0 .219.166.317.317 0 0 0 .306-.107.373.373 0 0 0 .388.067.235.235 0 0 0 .175-.227.43.43 0 0 0-.033-.208l-.036-.066a3.925 3.925 0 0 0 .744-.41l.02-.006c.373-.094 1.872-.631 2.791-.643a3.28 3.28 0 0 1 1.627.39 2.792 2.792 0 0 1 .682.56c.006.009.013.028.037.032a.036.036 0 0 0 .034-.022 1.139 1.139 0 0 0 .079-.516c-.02-.282-.3-.486-.383-.57-.003-.003-.01-.021.02-.041a.674.674 0 0 1 .105-.085.983.983 0 0 1 .562-.212c.03.003.02-.04.012-.076-.058-.25-.415-.412-.79-.354a.963.963 0 0 0-.613.417c-.007.011-.042.027-.056.013a2.926 2.926 0 0 0-.369-.107c-.045-.01-.021-.044-.019-.05a1.003 1.003 0 0 1 .304-.337 1.125 1.125 0 0 1 .494-.224c.022 0 .022-.03.016-.04a.55.55 0 0 0-.375-.302.844.844 0 0 0-.78.14 1.397 1.397 0 0 0-.445.673c-.014.02-.018.036-.036.032-.099-.02-.345-.007-.367-.022-.015-.007-.012-.03-.009-.045a.91.91 0 0 1 .222-.38.882.882 0 0 1 .364-.286.055.055 0 0 0 .01-.094.98.98 0 0 0-1.22.263 2.192 2.192 0 0 0-.304.696c-.002.009-.017.036-.036.036l-.508.112-.083.019-.022.023a3.29 3.29 0 0 0 .497-1.65zm-12.45.085h5.19v.09a3.145 3.145 0 0 0 .837 2.098H3.556a9.74 9.74 0 0 1-.342-2.188zm.415 2.443h5.863a2.566 2.566 0 0 0 .112.1 3.897 3.897 0 0 0 2.17.898v1.21h-7.22a13.789 13.789 0 0 1-.8-1.827 10.401 10.401 0 0 1-.125-.38zm10.584.29l-.01.012h-.002l-.002-.002a3.29 3.29 0 0 0 .015-.01zm1.738.185a.911.911 0 0 0-.507.155.934.934 0 0 0-.392.41 2.65 2.65 0 0 0-.172.775.063.063 0 0 1-.038.035 2.897 2.897 0 0 0-.335.087.026.026 0 0 1-.023-.02 1.105 1.105 0 0 1 .15-.727.886.886 0 0 1 .218-.263.037.037 0 0 0-.017-.068.98.98 0 0 0-.648.114.888.888 0 0 0-.452.667 1.589 1.589 0 0 0 .042.594c0 .006.006.027-.016.031-.076.037-.282.145-.355.18-.005.002-.019.005-.022-.006a.58.58 0 0 0-.268-.358.526.526 0 0 0-.446.022.548.548 0 0 0-.216.224.375.375 0 0 0 .127.455c.006.006.017.02 0 .025-.09.049-.092.06-.16.161a.428.428 0 0 0 .052.45.465.465 0 0 0 .7.082c.004-.003.018.005.025.02a.548.548 0 0 0 .143.151.463.463 0 0 0 .455 0 .413.413 0 0 0 .21-.415.378.378 0 0 0-.111-.262c-.013-.016 0-.024.034-.046a5.404 5.404 0 0 1 1.96-.666 3.121 3.121 0 0 1 1.076.022 1.504 1.504 0 0 1 .629.312 2.841 2.841 0 0 1 .406.402.164.164 0 0 0 .117-.025.66.66 0 0 0 .014-.517 1.604 1.604 0 0 0-.384-.59c-.003-.002-.003-.013-.003-.02-.004-.03.015-.045.052-.079a1.211 1.211 0 0 1 .562-.297c.027-.002.038-.022.02-.053a.656.656 0 0 0-.808-.298h-.001a.916.916 0 0 0-.454.416c-.006.011-.022.05-.037.038-.09-.008-.242-.032-.331-.04-.041-.002-.025-.039-.024-.045a.744.744 0 0 1 .194-.316 1.176 1.176 0 0 1 .444-.318.021.021 0 0 0 .016-.031.627.627 0 0 0-.465-.229.81.81 0 0 0-.617.238 1.255 1.255 0 0 0-.337.74c-.009.023-.02.035-.037.035a2 2 0 0 1-.278.025c-.015-.004-.014-.02-.014-.036a.91.91 0 0 1 .101-.406 1.491 1.491 0 0 1 .55-.582c.036-.025.038-.076.026-.082a.911.911 0 0 0-.355-.071zM4.707 17.692h7.069v2.19H6.213a11.237 11.237 0 0 1-.898-1.181 16.446 16.446 0 0 1-.609-1.01zm10.076 1.176a.497.497 0 0 0-.273.069.982.982 0 0 0-.475.56 1.09 1.09 0 0 0 .012.571c.003.007.012.024-.002.03-.078.03-.136.065-.213.096-.004 0-.024.005-.028-.005a.631.631 0 0 1 .088-.736c.017-.015.027-.035-.008-.047a.588.588 0 0 0-.531.193.677.677 0 0 0-.117.659.922.922 0 0 0 .099.261c.003.005.03.021.014.028l-.15.115c-.003.003-.014.008-.019 0a.486.486 0 0 0-.29-.238.341.341 0 0 0-.317.088.361.361 0 0 0 .147.602c.007.003.017.012.005.02a.587.587 0 0 0-.19.212.377.377 0 0 0 .085.406.37.37 0 0 0 .29.089.605.605 0 0 0 .357-.313c.002-.003.021-.017.031-.006a.531.531 0 0 0 .264.2.324.324 0 0 0 .323-.065.35.35 0 0 0 .111-.4.61.61 0 0 0-.201-.216c-.013-.01-.003-.035.023-.055a2.972 2.972 0 0 1 1.402-.62 1.801 1.801 0 0 1 1.025.166 1.547 1.547 0 0 1 .337.267c.013.007.05.02.063.008a.397.397 0 0 0 .035-.548.654.654 0 0 0-.206-.165.043.043 0 0 1-.007-.015.906.906 0 0 1 .301-.393 1.382 1.382 0 0 1 .295-.143c.022-.006.018-.02.007-.047-.128-.293-.635-.304-.874-.15a1.088 1.088 0 0 0-.346.396c-.005.01-.012.04-.025.031l-.213-.064c-.004 0-.004-.024-.002-.028a1.115 1.115 0 0 1 .696-.565c.015-.006.01-.02.007-.028-.11-.268-.661-.245-.93-.074a1.167 1.167 0 0 0-.493.714c-.003.02.006.037-.007.04a1.239 1.239 0 0 1-.23.055.024.024 0 0 1-.022-.023.642.642 0 0 1 .067-.392 2 2 0 0 1 .324-.408.043.043 0 0 0-.003-.063.497.497 0 0 0-.236-.07zm-3.006 1.296v3.417c-.098-.032-.214-.074-.342-.117-.178-.06-.373-.151-.597-.247a14.587 14.587 0 0 1-1.96-1 10.816 10.816 0 0 1-1.147-.847 12.861 12.861 0 0 1-1.266-1.206h5.31z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/portainer.svg b/assets/lib/simple-icons/icons/portainer.svg
new file mode 100644
index 00000000..f82784b5
--- /dev/null
+++ b/assets/lib/simple-icons/icons/portainer.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Portainer</title><path d="M12.504 0v1.023l-.01-.015-6.106 3.526H3.417v.751h5.359v3.638h1.942V5.284h1.786v10.416c.027 0 .54-.01.751.091V5.285h.531v10.608c.293.147.55.312.751.54V5.286h6.046v-.75h-1.267l-6.061-3.5V0zm0 1.87v2.664H7.889zm.751.031l4.56 2.633h-4.56zM9.142 5.285h1.21v1.686h-1.21zm-4.736 2.73v1.951h1.942v-1.95zm2.19 0v1.951h1.941v-1.95zm-2.19 2.171v1.951h1.942v-1.95zm2.19 0v1.951h1.941v-1.95zm2.18 0v1.951h1.942v-1.95zM4.36 12.43a3.73 3.73 0 00-.494 1.851c0 1.227.604 2.308 1.52 2.986.239-.064.477-.1.724-.11.1 0 .165.01.266.019.284-1.191 1.383-1.988 2.665-1.988.724 0 1.438.201 1.924.668.229-.476.302-1.007.302-1.575 0-.65-.165-1.292-.494-1.85zm4.828 3.16c-1.21 0-2.226.844-2.492 1.97a.922.922 0 00-.275-.009 2.559 2.559 0 00-2.564 2.556 2.565 2.565 0 003.096 2.5A2.579 2.579 0 009.233 24c.862 0 1.622-.43 2.09-1.081a2.557 2.557 0 004.186-1.97c0-.567-.193-1.099-.504-1.52a2.557 2.557 0 00-3.866-2.94 2.574 2.574 0 00-1.951-.898z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/postcss.svg b/assets/lib/simple-icons/icons/postcss.svg
index 736ae883..0f7a16e8 100644
--- a/assets/lib/simple-icons/icons/postcss.svg
+++ b/assets/lib/simple-icons/icons/postcss.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>PostCSS icon</title><path d="M11.6266.008c-.235.008-.47.0322-.7053.0645-.2266.0246-.4533.0649-.672.0978-.2669.0323-.5341.0485-.8017.0812-.2512.0326-.5104.0813-.7613.122-.0893.0161-.1787.0484-.268.0644-.194.0406-.3966.057-.5912.122-.3479.106-.6966.228-1.0368.3573-.3162.13-.6241.2678-.9237.43-.3079.17-.5998.3725-.8914.5677-.2759.1866-.5508.3812-.8187.5921-.2586.2032-.502.4301-.7372.6574-.1293.1293-.235.2837-.3567.4297-.2023.2355-.4047.4623-.5993.7059-.1613.2032-.308.4138-.462.625-.275.3726-.5098.7705-.7284 1.1682-.0893.1623-.17.3246-.251.4865-.1216.2432-.2513.4788-.3646.7304-.0812.1705-.146.357-.1946.5435-.113.3978-.2266.8036-.332 1.2008-.0972.3572-.1217.7304-.1294 1.0955-.0083.3245.0241.641.0564.9655.0083.0813-.0399.1785.0568.2432-.0324.0893-.008.1385.04.1539-.056.0893.0246.1466-.0075.2279-.0083.0161.0247.0484.0401.0727 0 .0246-.0077.0569 0 .0812.0087.073.0408.146.0408.2272 0 .0567.0485.1218.0649.1787.0079.024 0 .0645-.0163.0808-.0486.0567-.0406.1053.0323.138.041.1052.0247.1538.0166.203.016.0728-.0083.0972 0 .1135.0647.13.0891.2757.0968.4216 0 .0326.0163.0653.0326.1057.008 0 0 .1542 0 .1542.04-.024.0732-.0323.1135-.0486.0246.1053.0485.2032.0809.2924.0406.0647.0408.0967.0247.1047.0324.146.0484.284.1047.422 0-.154-.0155-.308-.04-.4543.1132.0407.2105.0812.2754.0812.0083-.0246.0164-.0567.0248-.073-.0486-.0483-.0892-.1212-.1379-.1699.0162.0647 0 .0892 0 .1138-.0323-.0166-.0731-.0329-.1135-.0492.0324-.04.0649-.081.1135-.1294 0-.0733-.04-.1384-.1539-.13.0487-.0162.0973-.0402.1539-.0568.0893-.0483-.0081-.1375-.0081-.251.008-.1377-.0728-.2757-.0972-.422C.755 12.52.7632 12.1792.739 11.952c-.0487-.0407-.0892.0647-.0972.073.0247.1946.0486.3891.0646.584-.0483-.1623-.081-.3408-.1213-.5357-.0083.0569-.0162.081-.0162.1138-.04.04-.008.0894.0162.146-.0566-.0246-.1216-.016-.1216-.016v.2272c-.0807-.0813-.1048-.1462-.1457-.2035-.016-.0647-.0248-.1293-.0401-.194.0153-.0409 0-.065 0-.089a4.9287 4.9287 0 0 1-.0245-.1953c.008-.008-.0081-.1294-.0081-.1294.0647.008.1057.0153.146.0153-.081-.1047-.0247-.1698.0082-.2347.0162-.0326.073-.0401.0893-.0734.0647-.1217.1702-.2185.1702-.373 0-.073.025-.154.0326-.2273.0162-.138.0321-.2758.0398-.4137.0166-.1786.0001-.3573.041-.5276.0653-.2832.1462-.5675.2351-.8516.0647-.2032.1382-.397.2188-.6003.1216-.3165.235-.633.389-.9328.2186-.4384.4698-.8604.713-1.2902.154-.2678.316-.5194.4865-.7789.1617-.2515.3234-.5111.5103-.7467.2595-.3325.5432-.641.8591-.9168.3242-.2919.632-.592.9801-.8598a9.8482 9.8482 0 0 1 1.4415-.9256c.4135-.2186.8427-.3898 1.2722-.552.2756-.1053.5753-.154.8592-.2433.3239-.1056.648-.1537.9882-.162.2186-.008.4293-.0327.6479-.0571a16.277 16.277 0 0 0 .6-.0564.3469.3469 0 0 0-.0409.0645c-.0886.13-.1859.26-.2751.3896-.073.1056-.154.2191-.227.3244-.1299.171-.2676.3412-.389.5197-.1862.268-.3567.5437-.5513.8113-.194.2595-.4048.5032-.6074.7544-.2673.3492-.5186.706-.7858 1.0548-.2432.3325-.5016.6495-.7369.982-.2106.2916-.3973.6004-.5999.9-.2996.4464-.5993.8844-.8989 1.3309a83.6172 83.6172 0 0 1-.713 1.014c-.0163.0246-.0406.0319-.0646.0482-.0647.1053-.0647.1623-.0894.211-.0646.1215-.1292.2434-.2024.3573-.0407.0647-.0975.1212-.1461.1862-.008-.0973.1292-.1461.0645-.268-.04.0652-.081.1218-.1212.1868l-.0972.194c.0318.0242.0863.0408.034.0874-.0054-.019-.0327-.0318-.0532-.0473l-.0003-.0004a4.5465 4.5465 0 0 0-.1937.2925c.0486.0403.0726.0244.105-.0326.0292-.0586.0713-.1043.1092-.1542a2.28 2.28 0 0 1-.0417.0743.2946.2946 0 0 0 .0893-.0815c0 .0893-.0487.1621-.0893.235-.0324.0648-.1133.1138-.17.1621.008.008.0648.0327.0731.0408.073-.0246.0973-.0648.1057-.0408.0246-.0323.0484-.0566.0564-.0809.032-.0813.0807-.146.1617-.1787.0326-.0162.0568-.0405.0812-.0645.2432-.2518.4941-.495.7127-.763.3405-.414.6484-.8435.973-1.2653.1373-.1786.2997-.357.4453-.5276.024.1866.008.3649 0 .5357-.0246.3-.0405.6002-.0645.9081-.0083.1216-.0002.2432-.0085.3652 0 .0323-.0245.0567-.0245.0893 0 .081.0245.1704.0245.2517-.0246.3002-.0572.5919-.0815.892-.0083.0647.024.13.04.1869-.04.4378.0492.9007-.024 1.3632.0566-.0893.073-.1462.073-.2028.0077-.0487 0-.0973 0-.154v-.0811c.0077-.1463.0398-.3001.0238-.4464-.0162-.1622-.0164-.3162.0162-.4705.0163-.0647-.0077-.146.033-.2272v.1216c-.008.4618.0083.9246-.0564 1.387-.0083.0407.0244.114-.0649.1056-.0733.146.016.2516-.0646.3326-.0166.0162.0155.0893.0239.138-.0327.0975-.0327.0975.016.1056.008.1785.0246.3403.0323.5109.1293-.3079.0647-.6251.122-.9416.0079.1299.0163.2601.008.3974 0 .2115-.0083.4138-.0162.6247 0 .0407-.0083.0813-.0162.122-.0247.1139-.0321.2272-.0727.3325-.0324.0813-.016.2033-.016.3003v.3088c.0323.138-.0084.2108.016.2918-.0247.0816-.0325.1061-.0248.1304l.0248.1216c.1622-.0162.0892.1056.1539.1702-.0487.0653-.0323.0893-.0323.1223 0 .073-.0078.138-.016.211 0 .1865-.0082.373-.0082.5516 0 .0246.0081.0484.0081.0727 0 .0166-.008.2276-.008.2276.0161.024-.0002.0484-.0249.0727-.0077 0-.032-1.0303-.032-1.0303h-.1216c-.016.4864.0248.9244-.0645 1.3792-.0973.008-.1295.024-.2354.024-.2512 0-.5023-.0001-.7535.008-.2999 0-.5912.008-.8914.008-.1453 0-.2991.0167-.445.0167-.1947 0-.3972-.0248-.5912-.0248-.3002 0-.5919.0246-.8917.0326-.2186.008-.4371.008-.6557.0162-.1463.008-.2926.0157-.438.0323-.0646.008-.1214.032-.2024.0564-.0246 0-.0811-.008-.1294 0-.0816.0162-.1538.0649-.2354.0815-.1216.0246-.154.0564-.138.1783v.0812c-.0079.016.1784-.0248.1784-.0248-.0166 0-.0246.0487-.0492.0893.0652-.0246.1057-.0407.1464-.0567.1216.057.2268.0246.3237.0492.316.0807.64.114.9638.1457.211.0162.4135.0246.624.0323.2997.0162.5994.0326.899.0326.2512 0 .4944-.0245.745-.0245.348 0 .6971.016 1.0453.0245.073 0 .1541-.008.2351-.008h.5911c.5271-.016 1.0536-.0247 1.5804-.04.3002-.009.6078-.0247.9074-.033l.9237-.0248c.3565-.008.713-.008 1.0616-.0153.2672 0 .5264-.009.7943-.017.2992-.008.6071-.0322.907-.0483.1623-.008.3245-.0247.4865-.0408.1946-.016.3971-.04.5911-.0483.2919-.0166.5917-.0244.8836-.0408.3645-.024.7292-.0566 1.1017-.0649.3405-.016.6888-.008 1.0293-.016.3-.008.5996-.0246.9074-.0326l.5113-.0248s.34-.008.5102-.0245c.2916-.016.583-.0484.8748-.0564.186-.008.3726.0002.5589-.008.2996-.008.6075-.0248.9074-.0248.113 0 .2345.0168.3805.0248-.0647.057-.1053.0891-.154.1298.0324.008.0646.0247.0972.0408-.0486.0323-.089.0401-.129.0401-.0167.041-.033.057-.0493.1383h.1457c-.0566 0-.105.073-.1617.1216-.0646-.0166-.1219 0-.1542.0893.0567.032.0488.0564.0408.0893-.0973.032-.1701.0646-.1292.1698-.033.0161-.0734.0324-.114.0567-.0401.0647-.1133.081-.0973.1702.0327.008.0647.025.0894.0323-.0407.0162-.081.0404-.1216.0564-.1457.0893-.081.13-.0486.1706-.0246.0162-.0484.0324-.0727.0408.016.073.04.0893.0482.0893a2.7824 2.7824 0 0 0-.085.0678.1666.1666 0 0 1 .01-.0264h-.0325c0 .0149.003.0277.0052.0404-.0074.006-.0116.009-.0193.0153-.0246.073-.057.1052-.0893.1538-.0323.0487-.0487.114-.0893.1624-.17.187-.2917.4064-.5103.552-.0813.057-.154.1299-.227.2031-.1459.1377-.2754.292-.4293.422-.2023.1702-.4124.324-.6316.4783-.267.1865-.5342.3734-.8018.552-.1459.097-.308.1699-.462.2592-.154.0893-.2999.1705-.4538.2595-.0973.0647-.1865.1539-.2918.2031-.2673.114-.551.211-.8262.3166-.2679.114-.462.2107-.6645.2837-.1863.0647-.3809.1139-.5752.1539-.0646.0166-.138.0001-.211.009-.1379.0246-.2754.0574-.4134.0734-.3565.0486-.7129.081-1.069.1297-.211.0246-.4139.0647-.6245.0893-.1456.008-.2994-.008-.4453-.008-.1053 0-.2185.0248-.3241.009-.17-.0246-.3404-.0645-.5106-.0972-.04-.008-.0971-.0248-.1291-.008-.0647.0326-.1222-.016-.1872 0-.04.008-.0806-.0245-.1213-.0245-.0326-.008-.0731.009-.1138 0-.0892-.024-.17-.0566-.268-.0486-.0963.008-.194-.0405-.2986-.0645-.1463-.0326-.2832-.0645-.4298-.0975-.0563-.0162-.1047-.0407-.1617-.073-.2109 0-.3487-.008-.4783-.057-.1133-.04-.2185-.0969-.34-.0806-.032.008-.0565-.008-.0894-.008-.0246-.0326-.0484-.0975-.0724-.0975-.162.008-.2592-.1292-.3971-.1702-.0727-.0246-.1295-.1057-.2025-.13-.1786-.073-.3237-.2268-.5262-.2511-.0647-.008-.1296-.041-.2028-.065.0246.032.0402.0567.0648.0809-.2349-.114-.4537-.2433-.6726-.3652-.032-.008-.0562-.04-.0805-.0567l-.2189-.1473c-.1216.0246-.1701-.0244-.203-.0404-.2187-.1539-.4696-.2516-.6805-.4219-.0893-.0733-.194-.122-.2586-.2112-.114-.138-.2517-.235-.4056-.316-.1213-.0647-.2346-.138-.3479-.211-.057-.0406-.1138-.0893-.1138-.1786 0-.057-.0239-.1138-.0968-.0812-.0324-.0486-.0647-.1053-.1053-.1216-.0973-.04-.1622-.114-.2351-.1787-.073-.0647-.1292-.1538-.2185-.1862-.1622-.0647-.2597-.2026-.3567-.3162-.2272-.2679-.4297-.5603-.6403-.8435-.0163-.0246-.0487-.041-.073-.0652.0323.0893.073.1622.1134.2432-.0807-.0323-.1372-.0894-.1858-.146-.0083.008.5585.9412.5585.9412.0492.073.0893.1462.1379.2191-.1216.008-.2026-.057-.2432-.13-.0727-.1294-.1537-.2103-.3157-.1937-.016-.0573-.0324-.1223-.04-.1787a.6159.6159 0 0 1-.1142-.009c.114.1786.211.3327.3163.5112-.041-.0246-.0646-.0406-.0815-.0486.1456.154.251.3488.4372.4464.0407.1863.2513.2756.3.4542-.04-.008-.0735-.0164-.1142-.0248-.0646-.081-.1376-.1618-.2103-.251a.4071.4071 0 0 0 .0727.1457c.0973.1216.1867.2432.3.3488.0406.0413.0972.0575.0972.1305.0646.0323.0894.04.1134.04.0166.0494-.0075.1223.0894.106.0646.1216.1291.1215.2184.0812.1056.1056.1624.114.235.0492 0 .04.0082.0808.0082.1135.0323-.0162.0248-.0405.0248-.0812.04.0323.0645.0485.0805.0645.081.1139.1541.2191.2674.3084.154.13.2916.268.4369.3896.2839.2356.6006.4302.9162.6085.3892.2192.762.4545 1.1588.665.4778.252.9883.4227 1.5148.5443.1946.0407.381.0808.5758.129.1693.0494.3397.1225.51.1628.2592.0569.5265.1056.7857.1539.0564.008.114.0168.1787.0248.0723.0162.1614-.0164.1777.008.0406.0647.073.032.1216.024.0567-.0161.1215-.0161.1862-.0161.2269.008.4454.0564.6723.0404.0492 0 .122-.041.1627.04.0727-.0322.1134-.0323.1457-.04.0087.0727-.0002.0729-.0157.0808-.0166.008-.0407.016-.073.0404.2916.0567.567.0647.8096 0 .4218.0323.7864-.0162 1.135-.138.0323.0407.0567.0974.1053.0163.016-.0246.0564-.0328.089-.0408.0727-.0162.162-.0488.2266-.0248.0733.0246.0979-.0401.1542-.0401.0976 0 .1866-.008.2759-.0245.0486-.008.0972-.0323.1538-.0486a.3938.3938 0 0 0-.1786-.0411 7.2787 7.2787 0 0 1 .2758-.1292c-.0162.024-.0325.0561-.0645.0561h.1128c-.0247 0-.0569.073-.0972.1217.2913-.073.5585-.1379.818-.2032-.0892-.17.0971-.113.1621-.2106-.081.0246-.162.0485-.2432.0645.2755-.1376.559-.2592.8343-.3808-.04.0486-.0894.0732-.1617.1141.0486.008.081.008.1053.0153.1293.0409.0973-.0806.1376-.1539.154 0 .2185-.024.2915-.0486.081-.0246.162-.0488.2432-.0812.1293-.0567.2509-.1293.3805-.194.0247-.009.0649 0 .0975 0 .0893-.0573.1211-.1058.1454-.0978.114.0162.194-.0244.2266-.1291.0096-.007.0144-.0101.0232-.0166.0325.0715.0975.0794.2028.007-.065 0-.1299-.008-.1865-.0161-.006 0-.0081.004-.0115.006.0405-.03.0778-.0586.11-.0783.1779-.0973.3476-.1945.5262-.2918.0646 0 .0974.0001.1134-.008.106-.0493.203-.1054.3-.1624-.0246-.008-.0809-.04-.0809-.04a1.055 1.055 0 0 0 .154-.0409c.1939-.2278.4618-.3819.664-.5605.0894-.008.0894-.0322.0894-.0482.032-.0407.0647-.0893.1047-.122.1786-.1622.3725-.3001.5347-.4704.235-.2358.4617-.4795.6723-.731.194-.2272.3894-.454.5514-.7056.2269-.3488.4211-.706.6237-1.0714.146-.2592.2757-.5187.422-.7782.0152-.0246.048-.0571.0723-.0571.2186-.0246.438-.04.6485-.0645.0487-.008.1053-.0403.1539-.065-.0246-.0406-.0405-.089-.0646-.1297-.0326-.0493-.0811-.0893-.1137-.1386-.032-.04-.0566-.0892-.0809-.1376-.0246-.04-.0487-.0729-.073-.1141-.0493-.0893-.0976-.1785-.1386-.2752-.008-.0246-.0246-.0647-.016-.0893.1459-.3162.2027-.6567.3403-.9732.1377-.3245.1786-.6897.2433-1.0385.0566-.3325.089-.6652.129-.9977.0247-.2352.0573-.4625.065-.6977.0492-.3732.0324-.7223.0244-1.0714-.0079-.308-.0247-.6244-.04-.9329l-.0007-.001c-.0161-.3164-.0242-.6328-.0568-.949-.0566-.4301-.1133-.8684-.2106-1.2902-.073-.3488-.194-.6815-.316-1.014-.1539-.3895-.3078-.787-.5024-1.16-.3159-.6005-.729-1.1361-1.1099-1.6959-.2518-.3571-.5758-.6491-.819-1.0143-.1376-.2109-.3403-.389-.5429-.551-.3242-.2602-.6643-.4956-1.0045-.7225-.2593-.1786-.5184-.3489-.7943-.5031-.2186-.1222-.4535-.2195-.6804-.3251-.2593-.1216-.5106-.268-.8021-.3247-.0733-.0153-.138-.04-.211-.0645-.1862-.0647-.3644-.1377-.551-.1947-.2832-.0893-.5588-.1944-.8507-.2677-.2826-.073-.5744-.1214-.8663-.1623-.3239-.0477-.6559-.0645-.9804-.0962-.2106-.0246-.4211-.0487-.6237-.0567-.3079-.0161-.6237-.0161-.9315-.0241-.154-.008-.316-.0246-.4699-.0162zm.6941.94c.1056.0166.2033.0328.3003.041l.389.0246c.2916.0237.5832.0402.8745.0802.2432.0329.4866.0816.7378.122.5351.0892 1.0614.2353 1.5719.4055.2999.0973.5911.2273.8836.349.6558.2678 1.2799.5922 1.8956.9327.194.1056.308.2758.4532.43.211.2193.4218.4383.624.6652.2347.2679.4533.5438.6806.8197.2022.2432.4127.4865.6159.7304.0646.073.1138.1622.1698.2432.1293.1949.2754.3815.3887.5921.0807.1545.1295.3332.1862.5034.0806.2516.162.4948.2432.7463.0563.1866.1044.3819.145.5758.0327.1303.025.2679.065.3972.0492.1712 0 .3573.0492.5282.0077.0162.0155.0404.0241.0567.0324.032.0565.0648.0077.1134-.0077.008-.0077.04 0 .0645.0166-.016.0248-.0324.0411-.0567 0 .0162.0076.025.0076.0326 0 .032-.0083.0645 0 .0968 0 .0161.016.0401.0241.0567.0163-.0166.0323-.0246.0646-.0492.073.2762.0815.5518.0815.8357 0 .2678.0481.5357-.0649.7952.024-.0893-.0325-.1707-.008-.2517l.0032.002c-.0083 0-.0565-.0494-.0645-.0574-.0083.0246 0 .0485-.0163.0812-.0083-.024-.0648-.0157-.0648-.0398-.0083.1133.0484.2268.04.3404.0247-.0162.1218-.0246.1461-.0486.0083.008.0246.0161.0326.0161-.1622.122-.1215.2433-.0485.3818.016.032.0646.0967.016.1617-.016.0162.0083.0647.0162.1057h.0239v.0157l-.073.0245c-.0161-.0246-.1132-.0725-.1132-.1138v.4144c.081.0246.0811.1377.1134.1946a.2405.2405 0 0 0 .033-.0645l.008.008c-.0082.0487-.0162.0971-.0325.1461-.016.0727-.0324.1377-.0401.2106 0 .008.0156.0246.0156.0323-.0886.2032-.04.4298-.0724.6404-.0246.154 0 .3173-.0162.4793-.0166.138-.0495.2836-.0815.4216-.0083.0246-.0245.0326-.0646.0489.0161-.0973.0081-.1625-.008-.2517-.0088 0-.114-.0567-.1223-.0567 0 .1139.0647.2681.0893.3974-.0246-.008-.1217-.0649-.1294-.0649-.0166.0973-.0168.2273-.0248.3326-.0083.0813-.0807.154-.089.2432 0 .0493.0566.0814.0486.1627h.0645c0-.162.0734-.308.0734-.4786h.0238c.0083.0162.0328.0328.0248.0408-.0162.0893-.0494.1865-.0408.2758 0 .0487.0402.0972.0248.1539-.0166.0493-.0246.0976-.0329.1705-.0083-.0406-.0162-.0565-.0162-.0808-.008 0-.081-.008-.0894-.008-.0079.0487.057.0973.0486.138-.0079.008-.016.008-.0323.0161l-.2673-.3896a81.9295 81.9295 0 0 1-.6322-.9328 1.9488 1.9488 0 0 1-.1464-.2432c-.251-.4305-.5265-.8442-.8344-1.2416-.2346-.3-.4218-.6251-.6403-.9407-.202-.3002-.4046-.5925-.6071-.893-.073-.097-.162-.1862-.227-.2918-.2102-.3326-.397-.6734-.607-1.006-.1786-.276-.3727-.5439-.5592-.8115-.0647-.0893-.1294-.187-.1947-.2843-.0079-.0153-.016-.0314-.016-.0558-.0163-.1785-.0325-.3572-.0405-.5275 0-.1623.0163-.3244.0163-.495v-.1468c0-.0407.0076-.073.0076-.1138.0077-.008.016-.0243.024-.0323-.2348 0-.478-.009-.713 0-.154.008-.2348-.0573-.34-.1709-.308-.3488-.535-.7462-.8022-1.1193-.2512-.3572-.5105-.7063-.7698-1.0551-.2109-.2839-.4219-.5596-.6322-.8435-.2352-.3245-.4617-.649-.7049-.9736-.2919-.3891-.5918-.779-.8914-1.1682-.1385-.1786-.2924-.3488-.4464-.5357zm-.7518.4258c.0173.003.0337.0175.0499.0378.2186.2759.437.5598.6556.8357.1626.2032.3247.3972.4787.6084.1863.2598.3644.5194.551.779.2106.3.4212.6004.6237.9083.308.4547.5995.909.9074 1.3632.227.3325.4537.6573.6723.9899h-.4137c-.3806-.008-.7698-.0401-1.1503-.0241-.5185.0246-1.045.0813-1.5634.122-.6564.0568-1.3207.0644-1.9765.0644-.2355 0-.4703.033-.705.0492-.2838.0161-.5595.0324-.843.0401-.3326.0166-.6558.0246-.9883.033-.1866.008-.3808 0-.5833 0v-.002c.2586-.3572.5265-.7141.7857-1.079.081-.1062.1457-.2198.2266-.325.0247-.0327.0572-.049.0975-.0816l-.0081-.0153c.0323-.041.0645-.0739.0809-.106.0412-.0646.0658-.1379.098-.2109.008-.0153.0324-.0316.0324-.0316.1139.0567.1138-.0647.1539-.1056a5.568 5.568 0 0 0 .2106-.2514c.0486-.0647.0973-.1217.138-.1946.0078-.0246-.0165-.0646-.0249-.0975h-.0238c.0246-.016.0487-.0401.073-.0567.008 0 .008-.0002.0161-.008a4.632 4.632 0 0 1 .1457-.211c.097-.1293.2023-.2594.3156-.3727-.016.04-.0322.0808-.0485.1132.0083 0 .0083.008.0162.008.0973-.13.2027-.2516.3-.3818-.0083-.008-.0164-.016-.0248-.016-.04.0406-.0725.0813-.1132.122-.0079-.008-.0162-.0163-.0247-.0163.0815-.1056.1625-.211.2432-.3326.0162.0246.0325.0567.0645.1217.033-.081.0654-.1377.0894-.1947-.024.0246-.0562.0487-.0806.0734L9.998 3.504l.146-.2184c.154-.2193.3078-.4466.4617-.6658.057-.081.1294-.1457.1787-.227.154-.3078.3973-.5518.5833-.8356.0406-.0567.097-.1053.1457-.154.02-.0245.0382-.033.0554-.03zM9.2843 4.5345c-.0484.0323-.0893.0567-.1376.0893l-.0004.0004c-.0083.008-.0164.008-.0085.008.0083.04.0083.073.0163.1294.057-.0816.0971-.1463.1464-.211zm6.8378 3.3417c.0727 0 .1133.0247.154.0893.0726.1216.1456.2432.2265.3652.0083.016.0248.0399.0248.0645 0 .1785-.0002.3652.0077.5438.0077.1866.025.3651.0323.5517 0 .1866-.0164.3812-.0081.5758.0083.2762.0162.5602.0162.8435l.0013.0006v.0734c-.0079 0-.016.008-.0322.008-.0324-.1139-.0647-.2356-.1054-.3492-.0809-.2355-.1703-.4711-.3162-.6817-.1626-.227-.308-.462-.4705-.6975-.04-.0569-.0974-.1055-.146-.1538-.1703-.187-.3403-.3818-.559-.5194a6.6159 6.6159 0 0 0-1.013-.5198c-.0972-.04-.1863-.0894-.2833-.146h.194L15.2306 7.9c.2999-.008.5918-.008.8914-.0241zm-6.084.2116c.0587-.001.1174.0008.178.008-.1293.0653-.2594.1303-.3727.2113-.146.0973-.2831.227-.4294.3325-.1462.1053-.2758.2354-.3971.3734-.154.1862-.3242.3483-.4865.5269-.1139.1299-.243.2517-.34.3896-.1377.1786-.2594.3723-.389.5755.0406-.771.0894-1.5331.0567-2.312l.0007.0006c.3808-.0162.7451-.0407 1.1183-.057.291-.0163.591-.0249.8823-.0409.0608-.004.12-.008.1787-.008zm2.0326.4147c.2423.008.4854.008.7284.0241.1052.008.2026.0322.3.0645.1212.041.2508.0975.3644.154.1377.0738.2672.1545.3972.2438.2349.154.4537.3244.6886.4623.2269.138.405.3245.551.5357.1786.2513.3807.4786.4617.7868l.1213.5357c.0246.0973.0814.1945.057.3078-.041.2032-.0733.4143-.1056.6172-.016.0816-.0321.1632-.0238.2432.0153.2525-.0817.4709-.1787.698-.0326.073-.0813.1464-.1216.2273.0079.008.0565.0326.0645.0326l.073-.1457c.0084 0 .0084-.0002.0163.008-.0406.1133-.0728.2353-.1138.3489-.0967.2515-.194.5109-.3156.7541-.0647.138-.1785.2516-.2592.3818-.0807.1133-.1456.2351-.2266.3407-.073.0893-.1456.1786-.2432.2433-.2186.1622-.4456.3246-.6805.4545-.1456.0893-.316.1377-.478.1783l.0022-.001c-.2595.0647-.5264.1382-.7942.1706-.2266.0326-.4619.0245-.6968.0245-.2112 0-.4138-.008-.6244-.0245-.235-.024-.4699-.0486-.6968-.1542-.1948-.0893-.3971-.1701-.591-.2677-.1953-.0973-.3895-.2108-.5358-.3893-.1047-.1303-.2509-.2353-.3805-.3489a.3826.3826 0 0 0 .1702.235c-.0406.0488-.0974.0247-.1787-.1056-.024.0162-.0482.0246-.0645.0326.0246-.057.0487-.1137.073-.162-.0323-.0647-.073-.1382-.1053-.2035a6.823 6.823 0 0 1-.1865-.324c-.0162-.0247-.0162-.0488-.0323-.073-.0406-.0488-.0811-.0975-.1138-.1461-.0646-.097-.1211-.2024-.2021-.3 0 .0246.0081.0485.0081.0812-.0083 0-.0162.008-.0162.008l-.1705-.4137c-.008 0-.008-.0002-.016.008l.1453.5357c-.0079 0-.0158.008-.0244.008-.0237-.032-.048-.0646-.0646-.1047-.016-.0653-.065-.0654-.105-.041-.0246.0161-.0409.0731-.0326.0974.057.138.122.2758.1869.4138a.965.965 0 0 0 .0564.1379c.0083.0162.0326.032.0326.0564.0326.0647.0571.1295.0975.1868.073.0973.154.1945.2269.2918.0724.0973.1369.2033.2018.3003.008.0162.0324.0162.0401.0245.041.1216.1786.2107.2759.162.0246.1866.2268.2515.3077.4301a3.702 3.702 0 0 1-.2347-.1056c-.0083.008-.0083.016-.0166.0323.0973.0486.1947.0972.2833.1539.0816.0493.1625.0979.2354.1542.0973.0893.211.1385.348.1705-.0075-.0247-.0154-.0329-.0154-.0329.2266.1056.4618.2191.6397.3078-.8427.0166-1.742.0329-2.6739.0492 0-.154-.0081-.3003-.0081-.4545 0-.0647.0162-.1216.0077-.1865-.0246-.3726-.0247-.7464-.073-1.1115-.0483-.3892-.0484-.7707-.04-1.1608.0077-.2102-.0084-.4291-.0167-.6403 0-.2839.0002-.5602.0089-.8435 0-.0407.0162-.0732.0326-.1141h.0248c.0077.0166-.0001.0409.0153.0492.0246.0246.0652.0647.0815.0567.0483-.0326.1213-.0645.1376-.1138.04-.097.0567-.2027.0567-.3 0-.0727.0325-.1212.0645-.1702.0166-.0246.0248-.0485.0411-.0808-.0323-.0246-.0647-.0407-.1053-.073.0327-.0893.0245-.1949.146-.2432.0161-.008.0163-.0494.0249-.0734.0077-.0656.015-.1385.0238-.2031.016.0246.0247.0322.04.0483.0087-.0161.0167-.0248.0167-.0248 0-.032-.008-.097 0-.097.0973-.0161.0566-.1215.1053-.1701.0077-.009-.0081-.033-.0081-.0492 0-.0161-.0002-.0401.0077-.0401.113-.0246.097-.1462.1699-.2031.0246-.0162.0325-.0402.0649-.0812.0646.1133-.0488.1704-.0568.2513.1374-.081.1779-.2756.0969-.3325a.4815.4815 0 0 0 .0893-.0893c.0893-.0973.1861-.1864.2674-.2837.057-.0727.0894-.1621.146-.235.0327-.0407.0972-.073.1458-.0976.146-.0807.2834-.1698.3727-.3078.0162-.0162.0405-.0326.0645-.0489.0247-.0162.0732-.016.0812-.0404.0083-.016-.016-.0569-.0323-.0812.032-.0162.0648-.0485.1295-.0812-.0247.0487-.0323.0811-.0486.1138l.0398.0401c.0732-.0566.1865-.1212.2595-.1698 0-.008-.0404-.0401-.0404-.0401-.0484.0246-.1214.0648-.194.0975.0153-.0246.0153-.041.0244-.049.113-.073.2263-.1458.348-.203.2832-.1294.567-.2593.8506-.3809.0486-.0246.1141-.008.1705-.008.024 0 .04-.0001.0645-.008.1293-.0407.2594-.0812.389-.1138a.6768.6768 0 0 1 .1784-.024zm-.3153.1207c-.089.0409-.1618.073-.2348.1056h-.0003c0 .008-.0403.073-.0326.073.0406-.008.1297-.0729.1783-.0812.0243 0 .0569.008.0815.0166 0-.0326-.0001-.0655.0077-.1141zm5.858 1.3811c.081.1053.17.2031.2267.3078.1866.3411.4294.6334.6563.9416.1946.2679.3728.5598.5514.8357.2186.3325.429.6648.6478.9974.162.2518.3328.5034.5021.747.154.2185.3164.4297.4784.641.1373.1865.2833.3732.4209.5598.1622.2272.3242.454.4864.6733.0807.1133.17.2267.2586.3404.0493.0647.1219.1142.1705.1542a.0627.0627 0 0 1-.032-.008c.0247.0323.0402.0567.0568.073.0893.0487.0972.0973.0486.1705l.0006-.002c-.0079.0162-.0246.0326-.0323.0492-.0083-.0166-.0083-.0408-.0162-.0737-.0486.1302-.154.0652-.227.0652-.4371.008-.883.008-1.3207.008-.4212 0-.8504.0001-1.2716.008-.138 0-.284.0324-.422.0408-.3318.0161-.6641.0246-.9963.0323-.0247 0-.0484-.0401-.089-.0727-.008.0162-.025.0407-.049.073-.0087-.016-.0244-.0321-.0407-.0564a.4478.4478 0 0 1-.0248.0645h-.0235c-.0162-.1133-.0486-.2187-.0486-.3326 0-.2432.0246-.4861.0323-.73.0083-.1133 0-.2188 0-.3247.0327.0246.057.0412.0894.0649a.692.692 0 0 1 .0485-.0802s-.0162-.008-.0326-.0245c.0153-.008.0323-.0246.0323-.0326.0079-.0246.0245-.049.0245-.065 0-.057-.0165-.1055-.0245-.1538.0079 0 .0159.0001.0245-.008l.0482.2432h.0248c-.0326-.0563.0727-.1055-.0162-.1702-.008-.008.0077-.0569.0077-.0812-.0247-.0483-.04-.097-.0646-.162.008-.008.0324-.0162.0567-.0245-.0323-.0161-.0568-.0321-.0811-.0401.081-.0733.081-.114.008-.195.0167-.008.0327-.008.0327-.0153 0-.0733 0-.1461-.016-.2185-.0163-.0819.0247-.1786-.0972-.2279a.2307.2307 0 0 0 .0322.0645s-.0245.008-.0485.0248c-.1053-.0976-.0403-.228-.065-.3736.0567.0162.0973.0326.1377.0492-.0163-.0573-.0566-.122-.0809-.195h-.033v-.5357c0 .008.0568.008.0894.0166 0-.008.0076-.0164.0076-.0248-.0246-.0323-.0567-.0647-.089-.1053l.0162-.0162c-.0646-.0807-.0322-.1938-.0322-.2185v-.568c.0813.0814-.0401.1865.0812.2351v-.0808h-.0085c-.008-.1216-.008-.2432-.016-.3651h-.0161c-.0083.0166-.0083.0244-.0166.0408h-.016zm-13.6516.6635c-.0966.1136-.1859.2274-.2751.3404h-.001c.016.008.0401.0652.0568.0815.089-.1216.2106-.2757.3-.3896-.0084-.008-.0729-.0243-.0806-.0323zm-.5428.3978c-.0487.0727-.1698.2029-.2185.2758.008.008.097-.0324.105-.0238.0486-.073.0972-.1544.1458-.2276-.0159-.008-.024-.0166-.0323-.0245zm.0323.0245l.0003.0003v-.0006l-.0003.0003zm.1372.0968c-.0483.0333-.0967.074-.1454.1063.0162.016.0162.0247.0162.0408-.0646-.008-.0893.0245-.1216.1131-.008.0246-.0487.0325-.0893.0645-.008.0166-.0159.0575-.0323.0978l.0081.008a.1243.1243 0 0 1-.0404.0248c-.0487.0483-.1056.0893-.1542.1376-.008.0246-.016.0487-.016.073.0569-.0567.1539-.1623.2269-.2273l.0084.008c.0324-.0487.0567-.097.0894-.1457.0077.008.0077.0159.016.0245-.0246.0647-.0487.1375-.073.2025-.017.008-.0414.0246-.0414.0162-.0323.0246-.0567.0565-.0894.0808l-.1454.097c-.081.073-.162.1378-.2514.211-.0566.0893-.113.1703-.1783.2759.0976-.0246.1218.0166.1138.0978.1133.016.1215-.073.1539-.138.008-.0165.0162-.0493.0323-.0573.073-.0647.154-.1213.235-.1862.0163-.0162.0163-.0494.0163-.0734 0-.008-.041-.008-.0653-.0162.073-.0813.1784-.2185.2511-.3078.0407-.0246.0812-.0575.0812-.0818-.0066-.0745.032-.1036.0828-.1301-.0378.1753-.144.3252-.252.356.0323.0162.0647.0328.0893.0248.024-.008.0401-.0494.0564-.0734l.2185-.3162.0733-.122-.0323-.0326-.0003.001c-.0323.0567-.0648.1054-.0971.1624l-.0277-.014c.0009-.0005.0018-.001.0027-.002-.0326-.0246-.041-.0484-.041-.0564l.0003-.001c.0086-.0246.0247-.0487.041-.073.0161 0 .0402-.008.0402-.008.033-.0567.0329-.0974.0652-.146-.008-.008-.0164-.008-.0248-.0163zm14.0586.998l-.0007.0004c-.0006.002 0 .004-.0006.006.0006-.002.0005-.004.0013-.006zm-.0013.006a.229.229 0 0 0-.0072.0668c0-.0223.001-.0447.0072-.0668zm-.0072.1474v.008c.0083.008.009.008.016.0006-.0079 0-.0079.0002-.016-.008zm0 .0162c-.0237.008-.0483.008-.0809.0162.0397.0151.0791.0238.0809.0391zm0 .0554v.002l.0006-.0006c0-.0004-.0006-.0007-.0006-.001zm-1.1914 1.4219c-.0162.9249.0893 1.8333.2106 2.7502-.9153.0323-1.8474.0645-2.787.0972l.0003-.0003c.3642-.154.664-.3726.939-.6244.041-.0406.0814-.0808.1301-.1138.3405-.2106.5912-.5027.8184-.8272.2592-.3731.4294-.7952.6403-1.1927a.8439.8439 0 0 1 .0483-.089zm1.1343.0734a.5457.5457 0 0 1 .0326.0812c.04-.008.0567-.008.0727-.0162 0-.008-.0001-.0159.0081-.0245l-.0003-.0003c-.024-.008-.0562-.0238-.1132-.0401zm.0235.0737c-.001 0-.0031.002-.0072.006l.0003.001c.0077 0 .016.008.016.008l-.008-.009c0-.004 0-.006-.001-.006zm-16.535.0316c-.0161 0-.065.0246-.073.0326.0324.081.073.1704.1054.2517.0079-.008.0565-.0323.0645-.0323-.0325-.081-.0646-.1703-.0968-.252zm-.2275.3329c-.024.0407-.0484.0808-.04.1128 0 .0243.0402.0484.0648.073.0002-.008.0078-.0159.016-.0235-.016-.0569-.0241-.1057-.0407-.1624zm21.6571.008c0 .0161.008.0398 0 .0564zm-21.2358.1784c-.008 0-.0647.0243-.0727.0326.0646.1376.1293.284.194.4219l.0003-.0004c.0083 0 .073-.0323.073-.0323-.0652-.1385-.1053-.2926-.1946-.4219zm-.1617.3244c0 .032-.0408.024-.0408.0564-.048 0-.0886-.008-.1291-.008-.008.008.0243.0569.0326.0652h.1699c0-.041-.0078-.0731-.0078-.1138zm7.453.3162c.0894.138.179.2679.276.3972h.0003l-.0081.008c-.017-.008-.0414-.0161-.0574-.0323l-.1943-.2925c-.016-.024-.025-.0485-.0163-.0809zm9.043.4383l-.0003.0003c-.0079.0973-.0162.1703-.0162.2432 0 .0162.0164.0483.0248.0483.016.009.0482-.008.0645-.0153.008-.008.016-.0243.016-.0326-.0243-.0166-.048-.0245-.0726-.0414.1539-.081 0-.1215-.016-.2025zM3.4845 20.2004c.0884.0976.1777.195.2667.3006-.0487-.0246-.1054-.0407-.1294-.0734-.0567-.0647-.1051-.1378-.1618-.2025zm.34.2843c.0247.0406.0406.0893.0646.138-.1133-.008-.17-.057-.1376-.1217.0246-.008.0491-.008.073-.0162zm15.4349 1.2422c-.0653.0153-.114.0241-.154.0401-.0165.0326-.0329.0567-.0492.089.0083 0 .0164.008.0248.0162.0487-.0487.105-.089.1784-.1454zm-.4145.226c-.0892.057-.1862.1136-.2755.1702.008.008.008.0168.0166.0248.1133-.0243.2026-.0814.2918-.146l-.0003-.0007c-.0079-.0162-.0243-.033-.0326-.0483zm-3.9686 1.5425c-.3726.1053-.4944.1212-.535.0645.1864-.0246.3571-.0406.535-.0645zm-.5517.0727c.0083.0161.0083.0322.0162.0482-.0486 0-.081.0168-.1216.0245l-.0003-.0003c-.113.0246-.2346.0411-.3479.0574-.0407.008-.0893.0488-.1053-.0245-.0162.008-.0326.008-.0486.0166.04.1213.1378.0237.2188.0724-.1786.0246-.3479.0409-.5184.0649v-.0161c.0492-.008.1055-.0164.1539-.0248v-.0241c-.0807-.008-.1617-.0162-.2433-.0162-.0237 0-.0565.0328-.0808.0408-.0324.008-.0647.0162-.1053.0162-.1377.008-.275.008-.405.0161-.0083 0-.0246-.008-.0326-.008v-.0248c.5428-.0727 1.0773-.1455 1.6201-.2185zm-1.6932.2103v.0238a4.3587 4.3587 0 0 1-.4535.0486v-.0238c.154-.016.2996-.0326.4535-.0486z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>PostCSS</title><path d="M11.6266.008c-.235.008-.47.0322-.7053.0645-.2266.0246-.4533.0649-.672.0978-.2669.0323-.5341.0485-.8017.0812-.2512.0326-.5104.0813-.7613.122-.0893.0161-.1787.0484-.268.0644-.194.0406-.3966.057-.5912.122-.3479.106-.6966.228-1.0368.3573-.3162.13-.6241.2678-.9237.43-.3079.17-.5998.3725-.8914.5677-.2759.1866-.5508.3812-.8187.5921-.2586.2032-.502.4301-.7372.6574-.1293.1293-.235.2837-.3567.4297-.2023.2355-.4047.4623-.5993.7059-.1613.2032-.308.4138-.462.625-.275.3726-.5098.7705-.7284 1.1682-.0893.1623-.17.3246-.251.4865-.1216.2432-.2513.4788-.3646.7304-.0812.1705-.146.357-.1946.5435-.113.3978-.2266.8036-.332 1.2008-.0972.3572-.1217.7304-.1294 1.0955-.0083.3245.0241.641.0564.9655.0083.0813-.0399.1785.0568.2432-.0324.0893-.008.1385.04.1539-.056.0893.0246.1466-.0075.2279-.0083.0161.0247.0484.0401.0727 0 .0246-.0077.0569 0 .0812.0087.073.0408.146.0408.2272 0 .0567.0485.1218.0649.1787.0079.024 0 .0645-.0163.0808-.0486.0567-.0406.1053.0323.138.041.1052.0247.1538.0166.203.016.0728-.0083.0972 0 .1135.0647.13.0891.2757.0968.4216 0 .0326.0163.0653.0326.1057.008 0 0 .1542 0 .1542.04-.024.0732-.0323.1135-.0486.0246.1053.0485.2032.0809.2924.0406.0647.0408.0967.0247.1047.0324.146.0484.284.1047.422 0-.154-.0155-.308-.04-.4543.1132.0407.2105.0812.2754.0812.0083-.0246.0164-.0567.0248-.073-.0486-.0483-.0892-.1212-.1379-.1699.0162.0647 0 .0892 0 .1138-.0323-.0166-.0731-.0329-.1135-.0492.0324-.04.0649-.081.1135-.1294 0-.0733-.04-.1384-.1539-.13.0487-.0162.0973-.0402.1539-.0568.0893-.0483-.0081-.1375-.0081-.251.008-.1377-.0728-.2757-.0972-.422C.755 12.52.7632 12.1792.739 11.952c-.0487-.0407-.0892.0647-.0972.073.0247.1946.0486.3891.0646.584-.0483-.1623-.081-.3408-.1213-.5357-.0083.0569-.0162.081-.0162.1138-.04.04-.008.0894.0162.146-.0566-.0246-.1216-.016-.1216-.016v.2272c-.0807-.0813-.1048-.1462-.1457-.2035-.016-.0647-.0248-.1293-.0401-.194.0153-.0409 0-.065 0-.089a4.9287 4.9287 0 0 1-.0245-.1953c.008-.008-.0081-.1294-.0081-.1294.0647.008.1057.0153.146.0153-.081-.1047-.0247-.1698.0082-.2347.0162-.0326.073-.0401.0893-.0734.0647-.1217.1702-.2185.1702-.373 0-.073.025-.154.0326-.2273.0162-.138.0321-.2758.0398-.4137.0166-.1786.0001-.3573.041-.5276.0653-.2832.1462-.5675.2351-.8516.0647-.2032.1382-.397.2188-.6003.1216-.3165.235-.633.389-.9328.2186-.4384.4698-.8604.713-1.2902.154-.2678.316-.5194.4865-.7789.1617-.2515.3234-.5111.5103-.7467.2595-.3325.5432-.641.8591-.9168.3242-.2919.632-.592.9801-.8598a9.8482 9.8482 0 0 1 1.4415-.9256c.4135-.2186.8427-.3898 1.2722-.552.2756-.1053.5753-.154.8592-.2433.3239-.1056.648-.1537.9882-.162.2186-.008.4293-.0327.6479-.0571a16.277 16.277 0 0 0 .6-.0564.3469.3469 0 0 0-.0409.0645c-.0886.13-.1859.26-.2751.3896-.073.1056-.154.2191-.227.3244-.1299.171-.2676.3412-.389.5197-.1862.268-.3567.5437-.5513.8113-.194.2595-.4048.5032-.6074.7544-.2673.3492-.5186.706-.7858 1.0548-.2432.3325-.5016.6495-.7369.982-.2106.2916-.3973.6004-.5999.9-.2996.4464-.5993.8844-.8989 1.3309a83.6172 83.6172 0 0 1-.713 1.014c-.0163.0246-.0406.0319-.0646.0482-.0647.1053-.0647.1623-.0894.211-.0646.1215-.1292.2434-.2024.3573-.0407.0647-.0975.1212-.1461.1862-.008-.0973.1292-.1461.0645-.268-.04.0652-.081.1218-.1212.1868l-.0972.194c.0318.0242.0863.0408.034.0874-.0054-.019-.0327-.0318-.0532-.0473l-.0003-.0004a4.5465 4.5465 0 0 0-.1937.2925c.0486.0403.0726.0244.105-.0326.0292-.0586.0713-.1043.1092-.1542a2.28 2.28 0 0 1-.0417.0743.2946.2946 0 0 0 .0893-.0815c0 .0893-.0487.1621-.0893.235-.0324.0648-.1133.1138-.17.1621.008.008.0648.0327.0731.0408.073-.0246.0973-.0648.1057-.0408.0246-.0323.0484-.0566.0564-.0809.032-.0813.0807-.146.1617-.1787.0326-.0162.0568-.0405.0812-.0645.2432-.2518.4941-.495.7127-.763.3405-.414.6484-.8435.973-1.2653.1373-.1786.2997-.357.4453-.5276.024.1866.008.3649 0 .5357-.0246.3-.0405.6002-.0645.9081-.0083.1216-.0002.2432-.0085.3652 0 .0323-.0245.0567-.0245.0893 0 .081.0245.1704.0245.2517-.0246.3002-.0572.5919-.0815.892-.0083.0647.024.13.04.1869-.04.4378.0492.9007-.024 1.3632.0566-.0893.073-.1462.073-.2028.0077-.0487 0-.0973 0-.154v-.0811c.0077-.1463.0398-.3001.0238-.4464-.0162-.1622-.0164-.3162.0162-.4705.0163-.0647-.0077-.146.033-.2272v.1216c-.008.4618.0083.9246-.0564 1.387-.0083.0407.0244.114-.0649.1056-.0733.146.016.2516-.0646.3326-.0166.0162.0155.0893.0239.138-.0327.0975-.0327.0975.016.1056.008.1785.0246.3403.0323.5109.1293-.3079.0647-.6251.122-.9416.0079.1299.0163.2601.008.3974 0 .2115-.0083.4138-.0162.6247 0 .0407-.0083.0813-.0162.122-.0247.1139-.0321.2272-.0727.3325-.0324.0813-.016.2033-.016.3003v.3088c.0323.138-.0084.2108.016.2918-.0247.0816-.0325.1061-.0248.1304l.0248.1216c.1622-.0162.0892.1056.1539.1702-.0487.0653-.0323.0893-.0323.1223 0 .073-.0078.138-.016.211 0 .1865-.0082.373-.0082.5516 0 .0246.0081.0484.0081.0727 0 .0166-.008.2276-.008.2276.0161.024-.0002.0484-.0249.0727-.0077 0-.032-1.0303-.032-1.0303h-.1216c-.016.4864.0248.9244-.0645 1.3792-.0973.008-.1295.024-.2354.024-.2512 0-.5023-.0001-.7535.008-.2999 0-.5912.008-.8914.008-.1453 0-.2991.0167-.445.0167-.1947 0-.3972-.0248-.5912-.0248-.3002 0-.5919.0246-.8917.0326-.2186.008-.4371.008-.6557.0162-.1463.008-.2926.0157-.438.0323-.0646.008-.1214.032-.2024.0564-.0246 0-.0811-.008-.1294 0-.0816.0162-.1538.0649-.2354.0815-.1216.0246-.154.0564-.138.1783v.0812c-.0079.016.1784-.0248.1784-.0248-.0166 0-.0246.0487-.0492.0893.0652-.0246.1057-.0407.1464-.0567.1216.057.2268.0246.3237.0492.316.0807.64.114.9638.1457.211.0162.4135.0246.624.0323.2997.0162.5994.0326.899.0326.2512 0 .4944-.0245.745-.0245.348 0 .6971.016 1.0453.0245.073 0 .1541-.008.2351-.008h.5911c.5271-.016 1.0536-.0247 1.5804-.04.3002-.009.6078-.0247.9074-.033l.9237-.0248c.3565-.008.713-.008 1.0616-.0153.2672 0 .5264-.009.7943-.017.2992-.008.6071-.0322.907-.0483.1623-.008.3245-.0247.4865-.0408.1946-.016.3971-.04.5911-.0483.2919-.0166.5917-.0244.8836-.0408.3645-.024.7292-.0566 1.1017-.0649.3405-.016.6888-.008 1.0293-.016.3-.008.5996-.0246.9074-.0326l.5113-.0248s.34-.008.5102-.0245c.2916-.016.583-.0484.8748-.0564.186-.008.3726.0002.5589-.008.2996-.008.6075-.0248.9074-.0248.113 0 .2345.0168.3805.0248-.0647.057-.1053.0891-.154.1298.0324.008.0646.0247.0972.0408-.0486.0323-.089.0401-.129.0401-.0167.041-.033.057-.0493.1383h.1457c-.0566 0-.105.073-.1617.1216-.0646-.0166-.1219 0-.1542.0893.0567.032.0488.0564.0408.0893-.0973.032-.1701.0646-.1292.1698-.033.0161-.0734.0324-.114.0567-.0401.0647-.1133.081-.0973.1702.0327.008.0647.025.0894.0323-.0407.0162-.081.0404-.1216.0564-.1457.0893-.081.13-.0486.1706-.0246.0162-.0484.0324-.0727.0408.016.073.04.0893.0482.0893a2.7824 2.7824 0 0 0-.085.0678.1666.1666 0 0 1 .01-.0264h-.0325c0 .0149.003.0277.0052.0404-.0074.006-.0116.009-.0193.0153-.0246.073-.057.1052-.0893.1538-.0323.0487-.0487.114-.0893.1624-.17.187-.2917.4064-.5103.552-.0813.057-.154.1299-.227.2031-.1459.1377-.2754.292-.4293.422-.2023.1702-.4124.324-.6316.4783-.267.1865-.5342.3734-.8018.552-.1459.097-.308.1699-.462.2592-.154.0893-.2999.1705-.4538.2595-.0973.0647-.1865.1539-.2918.2031-.2673.114-.551.211-.8262.3166-.2679.114-.462.2107-.6645.2837-.1863.0647-.3809.1139-.5752.1539-.0646.0166-.138.0001-.211.009-.1379.0246-.2754.0574-.4134.0734-.3565.0486-.7129.081-1.069.1297-.211.0246-.4139.0647-.6245.0893-.1456.008-.2994-.008-.4453-.008-.1053 0-.2185.0248-.3241.009-.17-.0246-.3404-.0645-.5106-.0972-.04-.008-.0971-.0248-.1291-.008-.0647.0326-.1222-.016-.1872 0-.04.008-.0806-.0245-.1213-.0245-.0326-.008-.0731.009-.1138 0-.0892-.024-.17-.0566-.268-.0486-.0963.008-.194-.0405-.2986-.0645-.1463-.0326-.2832-.0645-.4298-.0975-.0563-.0162-.1047-.0407-.1617-.073-.2109 0-.3487-.008-.4783-.057-.1133-.04-.2185-.0969-.34-.0806-.032.008-.0565-.008-.0894-.008-.0246-.0326-.0484-.0975-.0724-.0975-.162.008-.2592-.1292-.3971-.1702-.0727-.0246-.1295-.1057-.2025-.13-.1786-.073-.3237-.2268-.5262-.2511-.0647-.008-.1296-.041-.2028-.065.0246.032.0402.0567.0648.0809-.2349-.114-.4537-.2433-.6726-.3652-.032-.008-.0562-.04-.0805-.0567l-.2189-.1473c-.1216.0246-.1701-.0244-.203-.0404-.2187-.1539-.4696-.2516-.6805-.4219-.0893-.0733-.194-.122-.2586-.2112-.114-.138-.2517-.235-.4056-.316-.1213-.0647-.2346-.138-.3479-.211-.057-.0406-.1138-.0893-.1138-.1786 0-.057-.0239-.1138-.0968-.0812-.0324-.0486-.0647-.1053-.1053-.1216-.0973-.04-.1622-.114-.2351-.1787-.073-.0647-.1292-.1538-.2185-.1862-.1622-.0647-.2597-.2026-.3567-.3162-.2272-.2679-.4297-.5603-.6403-.8435-.0163-.0246-.0487-.041-.073-.0652.0323.0893.073.1622.1134.2432-.0807-.0323-.1372-.0894-.1858-.146-.0083.008.5585.9412.5585.9412.0492.073.0893.1462.1379.2191-.1216.008-.2026-.057-.2432-.13-.0727-.1294-.1537-.2103-.3157-.1937-.016-.0573-.0324-.1223-.04-.1787a.6159.6159 0 0 1-.1142-.009c.114.1786.211.3327.3163.5112-.041-.0246-.0646-.0406-.0815-.0486.1456.154.251.3488.4372.4464.0407.1863.2513.2756.3.4542-.04-.008-.0735-.0164-.1142-.0248-.0646-.081-.1376-.1618-.2103-.251a.4071.4071 0 0 0 .0727.1457c.0973.1216.1867.2432.3.3488.0406.0413.0972.0575.0972.1305.0646.0323.0894.04.1134.04.0166.0494-.0075.1223.0894.106.0646.1216.1291.1215.2184.0812.1056.1056.1624.114.235.0492 0 .04.0082.0808.0082.1135.0323-.0162.0248-.0405.0248-.0812.04.0323.0645.0485.0805.0645.081.1139.1541.2191.2674.3084.154.13.2916.268.4369.3896.2839.2356.6006.4302.9162.6085.3892.2192.762.4545 1.1588.665.4778.252.9883.4227 1.5148.5443.1946.0407.381.0808.5758.129.1693.0494.3397.1225.51.1628.2592.0569.5265.1056.7857.1539.0564.008.114.0168.1787.0248.0723.0162.1614-.0164.1777.008.0406.0647.073.032.1216.024.0567-.0161.1215-.0161.1862-.0161.2269.008.4454.0564.6723.0404.0492 0 .122-.041.1627.04.0727-.0322.1134-.0323.1457-.04.0087.0727-.0002.0729-.0157.0808-.0166.008-.0407.016-.073.0404.2916.0567.567.0647.8096 0 .4218.0323.7864-.0162 1.135-.138.0323.0407.0567.0974.1053.0163.016-.0246.0564-.0328.089-.0408.0727-.0162.162-.0488.2266-.0248.0733.0246.0979-.0401.1542-.0401.0976 0 .1866-.008.2759-.0245.0486-.008.0972-.0323.1538-.0486a.3938.3938 0 0 0-.1786-.0411 7.2787 7.2787 0 0 1 .2758-.1292c-.0162.024-.0325.0561-.0645.0561h.1128c-.0247 0-.0569.073-.0972.1217.2913-.073.5585-.1379.818-.2032-.0892-.17.0971-.113.1621-.2106-.081.0246-.162.0485-.2432.0645.2755-.1376.559-.2592.8343-.3808-.04.0486-.0894.0732-.1617.1141.0486.008.081.008.1053.0153.1293.0409.0973-.0806.1376-.1539.154 0 .2185-.024.2915-.0486.081-.0246.162-.0488.2432-.0812.1293-.0567.2509-.1293.3805-.194.0247-.009.0649 0 .0975 0 .0893-.0573.1211-.1058.1454-.0978.114.0162.194-.0244.2266-.1291.0096-.007.0144-.0101.0232-.0166.0325.0715.0975.0794.2028.007-.065 0-.1299-.008-.1865-.0161-.006 0-.0081.004-.0115.006.0405-.03.0778-.0586.11-.0783.1779-.0973.3476-.1945.5262-.2918.0646 0 .0974.0001.1134-.008.106-.0493.203-.1054.3-.1624-.0246-.008-.0809-.04-.0809-.04a1.055 1.055 0 0 0 .154-.0409c.1939-.2278.4618-.3819.664-.5605.0894-.008.0894-.0322.0894-.0482.032-.0407.0647-.0893.1047-.122.1786-.1622.3725-.3001.5347-.4704.235-.2358.4617-.4795.6723-.731.194-.2272.3894-.454.5514-.7056.2269-.3488.4211-.706.6237-1.0714.146-.2592.2757-.5187.422-.7782.0152-.0246.048-.0571.0723-.0571.2186-.0246.438-.04.6485-.0645.0487-.008.1053-.0403.1539-.065-.0246-.0406-.0405-.089-.0646-.1297-.0326-.0493-.0811-.0893-.1137-.1386-.032-.04-.0566-.0892-.0809-.1376-.0246-.04-.0487-.0729-.073-.1141-.0493-.0893-.0976-.1785-.1386-.2752-.008-.0246-.0246-.0647-.016-.0893.1459-.3162.2027-.6567.3403-.9732.1377-.3245.1786-.6897.2433-1.0385.0566-.3325.089-.6652.129-.9977.0247-.2352.0573-.4625.065-.6977.0492-.3732.0324-.7223.0244-1.0714-.0079-.308-.0247-.6244-.04-.9329l-.0007-.001c-.0161-.3164-.0242-.6328-.0568-.949-.0566-.4301-.1133-.8684-.2106-1.2902-.073-.3488-.194-.6815-.316-1.014-.1539-.3895-.3078-.787-.5024-1.16-.3159-.6005-.729-1.1361-1.1099-1.6959-.2518-.3571-.5758-.6491-.819-1.0143-.1376-.2109-.3403-.389-.5429-.551-.3242-.2602-.6643-.4956-1.0045-.7225-.2593-.1786-.5184-.3489-.7943-.5031-.2186-.1222-.4535-.2195-.6804-.3251-.2593-.1216-.5106-.268-.8021-.3247-.0733-.0153-.138-.04-.211-.0645-.1862-.0647-.3644-.1377-.551-.1947-.2832-.0893-.5588-.1944-.8507-.2677-.2826-.073-.5744-.1214-.8663-.1623-.3239-.0477-.6559-.0645-.9804-.0962-.2106-.0246-.4211-.0487-.6237-.0567-.3079-.0161-.6237-.0161-.9315-.0241-.154-.008-.316-.0246-.4699-.0162zm.6941.94c.1056.0166.2033.0328.3003.041l.389.0246c.2916.0237.5832.0402.8745.0802.2432.0329.4866.0816.7378.122.5351.0892 1.0614.2353 1.5719.4055.2999.0973.5911.2273.8836.349.6558.2678 1.2799.5922 1.8956.9327.194.1056.308.2758.4532.43.211.2193.4218.4383.624.6652.2347.2679.4533.5438.6806.8197.2022.2432.4127.4865.6159.7304.0646.073.1138.1622.1698.2432.1293.1949.2754.3815.3887.5921.0807.1545.1295.3332.1862.5034.0806.2516.162.4948.2432.7463.0563.1866.1044.3819.145.5758.0327.1303.025.2679.065.3972.0492.1712 0 .3573.0492.5282.0077.0162.0155.0404.0241.0567.0324.032.0565.0648.0077.1134-.0077.008-.0077.04 0 .0645.0166-.016.0248-.0324.0411-.0567 0 .0162.0076.025.0076.0326 0 .032-.0083.0645 0 .0968 0 .0161.016.0401.0241.0567.0163-.0166.0323-.0246.0646-.0492.073.2762.0815.5518.0815.8357 0 .2678.0481.5357-.0649.7952.024-.0893-.0325-.1707-.008-.2517l.0032.002c-.0083 0-.0565-.0494-.0645-.0574-.0083.0246 0 .0485-.0163.0812-.0083-.024-.0648-.0157-.0648-.0398-.0083.1133.0484.2268.04.3404.0247-.0162.1218-.0246.1461-.0486.0083.008.0246.0161.0326.0161-.1622.122-.1215.2433-.0485.3818.016.032.0646.0967.016.1617-.016.0162.0083.0647.0162.1057h.0239v.0157l-.073.0245c-.0161-.0246-.1132-.0725-.1132-.1138v.4144c.081.0246.0811.1377.1134.1946a.2405.2405 0 0 0 .033-.0645l.008.008c-.0082.0487-.0162.0971-.0325.1461-.016.0727-.0324.1377-.0401.2106 0 .008.0156.0246.0156.0323-.0886.2032-.04.4298-.0724.6404-.0246.154 0 .3173-.0162.4793-.0166.138-.0495.2836-.0815.4216-.0083.0246-.0245.0326-.0646.0489.0161-.0973.0081-.1625-.008-.2517-.0088 0-.114-.0567-.1223-.0567 0 .1139.0647.2681.0893.3974-.0246-.008-.1217-.0649-.1294-.0649-.0166.0973-.0168.2273-.0248.3326-.0083.0813-.0807.154-.089.2432 0 .0493.0566.0814.0486.1627h.0645c0-.162.0734-.308.0734-.4786h.0238c.0083.0162.0328.0328.0248.0408-.0162.0893-.0494.1865-.0408.2758 0 .0487.0402.0972.0248.1539-.0166.0493-.0246.0976-.0329.1705-.0083-.0406-.0162-.0565-.0162-.0808-.008 0-.081-.008-.0894-.008-.0079.0487.057.0973.0486.138-.0079.008-.016.008-.0323.0161l-.2673-.3896a81.9295 81.9295 0 0 1-.6322-.9328 1.9488 1.9488 0 0 1-.1464-.2432c-.251-.4305-.5265-.8442-.8344-1.2416-.2346-.3-.4218-.6251-.6403-.9407-.202-.3002-.4046-.5925-.6071-.893-.073-.097-.162-.1862-.227-.2918-.2102-.3326-.397-.6734-.607-1.006-.1786-.276-.3727-.5439-.5592-.8115-.0647-.0893-.1294-.187-.1947-.2843-.0079-.0153-.016-.0314-.016-.0558-.0163-.1785-.0325-.3572-.0405-.5275 0-.1623.0163-.3244.0163-.495v-.1468c0-.0407.0076-.073.0076-.1138.0077-.008.016-.0243.024-.0323-.2348 0-.478-.009-.713 0-.154.008-.2348-.0573-.34-.1709-.308-.3488-.535-.7462-.8022-1.1193-.2512-.3572-.5105-.7063-.7698-1.0551-.2109-.2839-.4219-.5596-.6322-.8435-.2352-.3245-.4617-.649-.7049-.9736-.2919-.3891-.5918-.779-.8914-1.1682-.1385-.1786-.2924-.3488-.4464-.5357zm-.7518.4258c.0173.003.0337.0175.0499.0378.2186.2759.437.5598.6556.8357.1626.2032.3247.3972.4787.6084.1863.2598.3644.5194.551.779.2106.3.4212.6004.6237.9083.308.4547.5995.909.9074 1.3632.227.3325.4537.6573.6723.9899h-.4137c-.3806-.008-.7698-.0401-1.1503-.0241-.5185.0246-1.045.0813-1.5634.122-.6564.0568-1.3207.0644-1.9765.0644-.2355 0-.4703.033-.705.0492-.2838.0161-.5595.0324-.843.0401-.3326.0166-.6558.0246-.9883.033-.1866.008-.3808 0-.5833 0v-.002c.2586-.3572.5265-.7141.7857-1.079.081-.1062.1457-.2198.2266-.325.0247-.0327.0572-.049.0975-.0816l-.0081-.0153c.0323-.041.0645-.0739.0809-.106.0412-.0646.0658-.1379.098-.2109.008-.0153.0324-.0316.0324-.0316.1139.0567.1138-.0647.1539-.1056a5.568 5.568 0 0 0 .2106-.2514c.0486-.0647.0973-.1217.138-.1946.0078-.0246-.0165-.0646-.0249-.0975h-.0238c.0246-.016.0487-.0401.073-.0567.008 0 .008-.0002.0161-.008a4.632 4.632 0 0 1 .1457-.211c.097-.1293.2023-.2594.3156-.3727-.016.04-.0322.0808-.0485.1132.0083 0 .0083.008.0162.008.0973-.13.2027-.2516.3-.3818-.0083-.008-.0164-.016-.0248-.016-.04.0406-.0725.0813-.1132.122-.0079-.008-.0162-.0163-.0247-.0163.0815-.1056.1625-.211.2432-.3326.0162.0246.0325.0567.0645.1217.033-.081.0654-.1377.0894-.1947-.024.0246-.0562.0487-.0806.0734L9.998 3.504l.146-.2184c.154-.2193.3078-.4466.4617-.6658.057-.081.1294-.1457.1787-.227.154-.3078.3973-.5518.5833-.8356.0406-.0567.097-.1053.1457-.154.02-.0245.0382-.033.0554-.03zM9.2843 4.5345c-.0484.0323-.0893.0567-.1376.0893l-.0004.0004c-.0083.008-.0164.008-.0085.008.0083.04.0083.073.0163.1294.057-.0816.0971-.1463.1464-.211zm6.8378 3.3417c.0727 0 .1133.0247.154.0893.0726.1216.1456.2432.2265.3652.0083.016.0248.0399.0248.0645 0 .1785-.0002.3652.0077.5438.0077.1866.025.3651.0323.5517 0 .1866-.0164.3812-.0081.5758.0083.2762.0162.5602.0162.8435l.0013.0006v.0734c-.0079 0-.016.008-.0322.008-.0324-.1139-.0647-.2356-.1054-.3492-.0809-.2355-.1703-.4711-.3162-.6817-.1626-.227-.308-.462-.4705-.6975-.04-.0569-.0974-.1055-.146-.1538-.1703-.187-.3403-.3818-.559-.5194a6.6159 6.6159 0 0 0-1.013-.5198c-.0972-.04-.1863-.0894-.2833-.146h.194L15.2306 7.9c.2999-.008.5918-.008.8914-.0241zm-6.084.2116c.0587-.001.1174.0008.178.008-.1293.0653-.2594.1303-.3727.2113-.146.0973-.2831.227-.4294.3325-.1462.1053-.2758.2354-.3971.3734-.154.1862-.3242.3483-.4865.5269-.1139.1299-.243.2517-.34.3896-.1377.1786-.2594.3723-.389.5755.0406-.771.0894-1.5331.0567-2.312l.0007.0006c.3808-.0162.7451-.0407 1.1183-.057.291-.0163.591-.0249.8823-.0409.0608-.004.12-.008.1787-.008zm2.0326.4147c.2423.008.4854.008.7284.0241.1052.008.2026.0322.3.0645.1212.041.2508.0975.3644.154.1377.0738.2672.1545.3972.2438.2349.154.4537.3244.6886.4623.2269.138.405.3245.551.5357.1786.2513.3807.4786.4617.7868l.1213.5357c.0246.0973.0814.1945.057.3078-.041.2032-.0733.4143-.1056.6172-.016.0816-.0321.1632-.0238.2432.0153.2525-.0817.4709-.1787.698-.0326.073-.0813.1464-.1216.2273.0079.008.0565.0326.0645.0326l.073-.1457c.0084 0 .0084-.0002.0163.008-.0406.1133-.0728.2353-.1138.3489-.0967.2515-.194.5109-.3156.7541-.0647.138-.1785.2516-.2592.3818-.0807.1133-.1456.2351-.2266.3407-.073.0893-.1456.1786-.2432.2433-.2186.1622-.4456.3246-.6805.4545-.1456.0893-.316.1377-.478.1783l.0022-.001c-.2595.0647-.5264.1382-.7942.1706-.2266.0326-.4619.0245-.6968.0245-.2112 0-.4138-.008-.6244-.0245-.235-.024-.4699-.0486-.6968-.1542-.1948-.0893-.3971-.1701-.591-.2677-.1953-.0973-.3895-.2108-.5358-.3893-.1047-.1303-.2509-.2353-.3805-.3489a.3826.3826 0 0 0 .1702.235c-.0406.0488-.0974.0247-.1787-.1056-.024.0162-.0482.0246-.0645.0326.0246-.057.0487-.1137.073-.162-.0323-.0647-.073-.1382-.1053-.2035a6.823 6.823 0 0 1-.1865-.324c-.0162-.0247-.0162-.0488-.0323-.073-.0406-.0488-.0811-.0975-.1138-.1461-.0646-.097-.1211-.2024-.2021-.3 0 .0246.0081.0485.0081.0812-.0083 0-.0162.008-.0162.008l-.1705-.4137c-.008 0-.008-.0002-.016.008l.1453.5357c-.0079 0-.0158.008-.0244.008-.0237-.032-.048-.0646-.0646-.1047-.016-.0653-.065-.0654-.105-.041-.0246.0161-.0409.0731-.0326.0974.057.138.122.2758.1869.4138a.965.965 0 0 0 .0564.1379c.0083.0162.0326.032.0326.0564.0326.0647.0571.1295.0975.1868.073.0973.154.1945.2269.2918.0724.0973.1369.2033.2018.3003.008.0162.0324.0162.0401.0245.041.1216.1786.2107.2759.162.0246.1866.2268.2515.3077.4301a3.702 3.702 0 0 1-.2347-.1056c-.0083.008-.0083.016-.0166.0323.0973.0486.1947.0972.2833.1539.0816.0493.1625.0979.2354.1542.0973.0893.211.1385.348.1705-.0075-.0247-.0154-.0329-.0154-.0329.2266.1056.4618.2191.6397.3078-.8427.0166-1.742.0329-2.6739.0492 0-.154-.0081-.3003-.0081-.4545 0-.0647.0162-.1216.0077-.1865-.0246-.3726-.0247-.7464-.073-1.1115-.0483-.3892-.0484-.7707-.04-1.1608.0077-.2102-.0084-.4291-.0167-.6403 0-.2839.0002-.5602.0089-.8435 0-.0407.0162-.0732.0326-.1141h.0248c.0077.0166-.0001.0409.0153.0492.0246.0246.0652.0647.0815.0567.0483-.0326.1213-.0645.1376-.1138.04-.097.0567-.2027.0567-.3 0-.0727.0325-.1212.0645-.1702.0166-.0246.0248-.0485.0411-.0808-.0323-.0246-.0647-.0407-.1053-.073.0327-.0893.0245-.1949.146-.2432.0161-.008.0163-.0494.0249-.0734.0077-.0656.015-.1385.0238-.2031.016.0246.0247.0322.04.0483.0087-.0161.0167-.0248.0167-.0248 0-.032-.008-.097 0-.097.0973-.0161.0566-.1215.1053-.1701.0077-.009-.0081-.033-.0081-.0492 0-.0161-.0002-.0401.0077-.0401.113-.0246.097-.1462.1699-.2031.0246-.0162.0325-.0402.0649-.0812.0646.1133-.0488.1704-.0568.2513.1374-.081.1779-.2756.0969-.3325a.4815.4815 0 0 0 .0893-.0893c.0893-.0973.1861-.1864.2674-.2837.057-.0727.0894-.1621.146-.235.0327-.0407.0972-.073.1458-.0976.146-.0807.2834-.1698.3727-.3078.0162-.0162.0405-.0326.0645-.0489.0247-.0162.0732-.016.0812-.0404.0083-.016-.016-.0569-.0323-.0812.032-.0162.0648-.0485.1295-.0812-.0247.0487-.0323.0811-.0486.1138l.0398.0401c.0732-.0566.1865-.1212.2595-.1698 0-.008-.0404-.0401-.0404-.0401-.0484.0246-.1214.0648-.194.0975.0153-.0246.0153-.041.0244-.049.113-.073.2263-.1458.348-.203.2832-.1294.567-.2593.8506-.3809.0486-.0246.1141-.008.1705-.008.024 0 .04-.0001.0645-.008.1293-.0407.2594-.0812.389-.1138a.6768.6768 0 0 1 .1784-.024zm-.3153.1207c-.089.0409-.1618.073-.2348.1056h-.0003c0 .008-.0403.073-.0326.073.0406-.008.1297-.0729.1783-.0812.0243 0 .0569.008.0815.0166 0-.0326-.0001-.0655.0077-.1141zm5.858 1.3811c.081.1053.17.2031.2267.3078.1866.3411.4294.6334.6563.9416.1946.2679.3728.5598.5514.8357.2186.3325.429.6648.6478.9974.162.2518.3328.5034.5021.747.154.2185.3164.4297.4784.641.1373.1865.2833.3732.4209.5598.1622.2272.3242.454.4864.6733.0807.1133.17.2267.2586.3404.0493.0647.1219.1142.1705.1542a.0627.0627 0 0 1-.032-.008c.0247.0323.0402.0567.0568.073.0893.0487.0972.0973.0486.1705l.0006-.002c-.0079.0162-.0246.0326-.0323.0492-.0083-.0166-.0083-.0408-.0162-.0737-.0486.1302-.154.0652-.227.0652-.4371.008-.883.008-1.3207.008-.4212 0-.8504.0001-1.2716.008-.138 0-.284.0324-.422.0408-.3318.0161-.6641.0246-.9963.0323-.0247 0-.0484-.0401-.089-.0727-.008.0162-.025.0407-.049.073-.0087-.016-.0244-.0321-.0407-.0564a.4478.4478 0 0 1-.0248.0645h-.0235c-.0162-.1133-.0486-.2187-.0486-.3326 0-.2432.0246-.4861.0323-.73.0083-.1133 0-.2188 0-.3247.0327.0246.057.0412.0894.0649a.692.692 0 0 1 .0485-.0802s-.0162-.008-.0326-.0245c.0153-.008.0323-.0246.0323-.0326.0079-.0246.0245-.049.0245-.065 0-.057-.0165-.1055-.0245-.1538.0079 0 .0159.0001.0245-.008l.0482.2432h.0248c-.0326-.0563.0727-.1055-.0162-.1702-.008-.008.0077-.0569.0077-.0812-.0247-.0483-.04-.097-.0646-.162.008-.008.0324-.0162.0567-.0245-.0323-.0161-.0568-.0321-.0811-.0401.081-.0733.081-.114.008-.195.0167-.008.0327-.008.0327-.0153 0-.0733 0-.1461-.016-.2185-.0163-.0819.0247-.1786-.0972-.2279a.2307.2307 0 0 0 .0322.0645s-.0245.008-.0485.0248c-.1053-.0976-.0403-.228-.065-.3736.0567.0162.0973.0326.1377.0492-.0163-.0573-.0566-.122-.0809-.195h-.033v-.5357c0 .008.0568.008.0894.0166 0-.008.0076-.0164.0076-.0248-.0246-.0323-.0567-.0647-.089-.1053l.0162-.0162c-.0646-.0807-.0322-.1938-.0322-.2185v-.568c.0813.0814-.0401.1865.0812.2351v-.0808h-.0085c-.008-.1216-.008-.2432-.016-.3651h-.0161c-.0083.0166-.0083.0244-.0166.0408h-.016zm-13.6516.6635c-.0966.1136-.1859.2274-.2751.3404h-.001c.016.008.0401.0652.0568.0815.089-.1216.2106-.2757.3-.3896-.0084-.008-.0729-.0243-.0806-.0323zm-.5428.3978c-.0487.0727-.1698.2029-.2185.2758.008.008.097-.0324.105-.0238.0486-.073.0972-.1544.1458-.2276-.0159-.008-.024-.0166-.0323-.0245zm.0323.0245l.0003.0003v-.0006l-.0003.0003zm.1372.0968c-.0483.0333-.0967.074-.1454.1063.0162.016.0162.0247.0162.0408-.0646-.008-.0893.0245-.1216.1131-.008.0246-.0487.0325-.0893.0645-.008.0166-.0159.0575-.0323.0978l.0081.008a.1243.1243 0 0 1-.0404.0248c-.0487.0483-.1056.0893-.1542.1376-.008.0246-.016.0487-.016.073.0569-.0567.1539-.1623.2269-.2273l.0084.008c.0324-.0487.0567-.097.0894-.1457.0077.008.0077.0159.016.0245-.0246.0647-.0487.1375-.073.2025-.017.008-.0414.0246-.0414.0162-.0323.0246-.0567.0565-.0894.0808l-.1454.097c-.081.073-.162.1378-.2514.211-.0566.0893-.113.1703-.1783.2759.0976-.0246.1218.0166.1138.0978.1133.016.1215-.073.1539-.138.008-.0165.0162-.0493.0323-.0573.073-.0647.154-.1213.235-.1862.0163-.0162.0163-.0494.0163-.0734 0-.008-.041-.008-.0653-.0162.073-.0813.1784-.2185.2511-.3078.0407-.0246.0812-.0575.0812-.0818-.0066-.0745.032-.1036.0828-.1301-.0378.1753-.144.3252-.252.356.0323.0162.0647.0328.0893.0248.024-.008.0401-.0494.0564-.0734l.2185-.3162.0733-.122-.0323-.0326-.0003.001c-.0323.0567-.0648.1054-.0971.1624l-.0277-.014c.0009-.0005.0018-.001.0027-.002-.0326-.0246-.041-.0484-.041-.0564l.0003-.001c.0086-.0246.0247-.0487.041-.073.0161 0 .0402-.008.0402-.008.033-.0567.0329-.0974.0652-.146-.008-.008-.0164-.008-.0248-.0163zm14.0586.998l-.0007.0004c-.0006.002 0 .004-.0006.006.0006-.002.0005-.004.0013-.006zm-.0013.006a.229.229 0 0 0-.0072.0668c0-.0223.001-.0447.0072-.0668zm-.0072.1474v.008c.0083.008.009.008.016.0006-.0079 0-.0079.0002-.016-.008zm0 .0162c-.0237.008-.0483.008-.0809.0162.0397.0151.0791.0238.0809.0391zm0 .0554v.002l.0006-.0006c0-.0004-.0006-.0007-.0006-.001zm-1.1914 1.4219c-.0162.9249.0893 1.8333.2106 2.7502-.9153.0323-1.8474.0645-2.787.0972l.0003-.0003c.3642-.154.664-.3726.939-.6244.041-.0406.0814-.0808.1301-.1138.3405-.2106.5912-.5027.8184-.8272.2592-.3731.4294-.7952.6403-1.1927a.8439.8439 0 0 1 .0483-.089zm1.1343.0734a.5457.5457 0 0 1 .0326.0812c.04-.008.0567-.008.0727-.0162 0-.008-.0001-.0159.0081-.0245l-.0003-.0003c-.024-.008-.0562-.0238-.1132-.0401zm.0235.0737c-.001 0-.0031.002-.0072.006l.0003.001c.0077 0 .016.008.016.008l-.008-.009c0-.004 0-.006-.001-.006zm-16.535.0316c-.0161 0-.065.0246-.073.0326.0324.081.073.1704.1054.2517.0079-.008.0565-.0323.0645-.0323-.0325-.081-.0646-.1703-.0968-.252zm-.2275.3329c-.024.0407-.0484.0808-.04.1128 0 .0243.0402.0484.0648.073.0002-.008.0078-.0159.016-.0235-.016-.0569-.0241-.1057-.0407-.1624zm21.6571.008c0 .0161.008.0398 0 .0564zm-21.2358.1784c-.008 0-.0647.0243-.0727.0326.0646.1376.1293.284.194.4219l.0003-.0004c.0083 0 .073-.0323.073-.0323-.0652-.1385-.1053-.2926-.1946-.4219zm-.1617.3244c0 .032-.0408.024-.0408.0564-.048 0-.0886-.008-.1291-.008-.008.008.0243.0569.0326.0652h.1699c0-.041-.0078-.0731-.0078-.1138zm7.453.3162c.0894.138.179.2679.276.3972h.0003l-.0081.008c-.017-.008-.0414-.0161-.0574-.0323l-.1943-.2925c-.016-.024-.025-.0485-.0163-.0809zm9.043.4383l-.0003.0003c-.0079.0973-.0162.1703-.0162.2432 0 .0162.0164.0483.0248.0483.016.009.0482-.008.0645-.0153.008-.008.016-.0243.016-.0326-.0243-.0166-.048-.0245-.0726-.0414.1539-.081 0-.1215-.016-.2025zM3.4845 20.2004c.0884.0976.1777.195.2667.3006-.0487-.0246-.1054-.0407-.1294-.0734-.0567-.0647-.1051-.1378-.1618-.2025zm.34.2843c.0247.0406.0406.0893.0646.138-.1133-.008-.17-.057-.1376-.1217.0246-.008.0491-.008.073-.0162zm15.4349 1.2422c-.0653.0153-.114.0241-.154.0401-.0165.0326-.0329.0567-.0492.089.0083 0 .0164.008.0248.0162.0487-.0487.105-.089.1784-.1454zm-.4145.226c-.0892.057-.1862.1136-.2755.1702.008.008.008.0168.0166.0248.1133-.0243.2026-.0814.2918-.146l-.0003-.0007c-.0079-.0162-.0243-.033-.0326-.0483zm-3.9686 1.5425c-.3726.1053-.4944.1212-.535.0645.1864-.0246.3571-.0406.535-.0645zm-.5517.0727c.0083.0161.0083.0322.0162.0482-.0486 0-.081.0168-.1216.0245l-.0003-.0003c-.113.0246-.2346.0411-.3479.0574-.0407.008-.0893.0488-.1053-.0245-.0162.008-.0326.008-.0486.0166.04.1213.1378.0237.2188.0724-.1786.0246-.3479.0409-.5184.0649v-.0161c.0492-.008.1055-.0164.1539-.0248v-.0241c-.0807-.008-.1617-.0162-.2433-.0162-.0237 0-.0565.0328-.0808.0408-.0324.008-.0647.0162-.1053.0162-.1377.008-.275.008-.405.0161-.0083 0-.0246-.008-.0326-.008v-.0248c.5428-.0727 1.0773-.1455 1.6201-.2185zm-1.6932.2103v.0238a4.3587 4.3587 0 0 1-.4535.0486v-.0238c.154-.016.2996-.0326.4535-.0486z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/postgresql.svg b/assets/lib/simple-icons/icons/postgresql.svg
index b102a0e8..dcf75b72 100644
--- a/assets/lib/simple-icons/icons/postgresql.svg
+++ b/assets/lib/simple-icons/icons/postgresql.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>PostgreSQL icon</title><path d="M17.128 0a10.134 10.134 0 0 0-2.755.403l-.063.02A10.922 10.922 0 0 0 12.6.258C11.422.238 10.41.524 9.594 1 8.79.721 7.122.24 5.364.336 4.14.403 2.804.775 1.814 1.82.827 2.865.305 4.482.415 6.682c.03.607.203 1.597.49 2.879s.69 2.783 1.193 4.152c.503 1.37 1.054 2.6 1.915 3.436.43.419 1.022.771 1.72.742.49-.02.933-.235 1.315-.552.186.245.385.352.566.451.228.125.45.21.68.266.413.103 1.12.241 1.948.1.282-.047.579-.139.875-.27.011.33.024.653.037.98.041 1.036.067 1.993.378 2.832.05.137.187.843.727 1.466.54.624 1.598 1.013 2.803.755.85-.182 1.931-.51 2.649-1.532.71-1.01 1.03-2.459 1.093-4.809.016-.127.035-.235.055-.336l.169.015h.02c.907.041 1.891-.088 2.713-.47.728-.337 1.279-.678 1.68-1.283.1-.15.21-.331.24-.643s-.149-.8-.446-1.025c-.595-.452-.969-.28-1.37-.197a6.27 6.27 0 0 1-1.202.146c1.156-1.947 1.985-4.015 2.458-5.845.28-1.08.437-2.076.45-2.947.013-.871-.058-1.642-.58-2.309C21.36.6 19.067.024 17.293.004c-.055-.001-.11-.002-.165-.001zm-.047.64c1.678-.016 3.822.455 5.361 2.422.346.442.449 1.088.437 1.884-.013.795-.16 1.747-.429 2.79-.522 2.02-1.508 4.375-2.897 6.488a.756.756 0 0 0 .158.086c.29.12.951.223 2.27-.048.332-.07.575-.117.827.075a.52.52 0 0 1 .183.425.704.704 0 0 1-.13.336c-.255.383-.758.746-1.403 1.045-.571.266-1.39.405-2.116.413-.364.004-.7-.024-.985-.113l-.018-.007c-.11 1.06-.363 3.153-.528 4.108-.132.77-.363 1.382-.804 1.84-.44.458-1.063.734-1.901.914-1.038.223-1.795-.017-2.283-.428-.487-.41-.71-.954-.844-1.287-.092-.23-.14-.528-.186-.926-.046-.398-.08-.885-.103-1.434a51.426 51.426 0 0 1-.03-2.523 3.061 3.061 0 0 1-1.552.76c-.689.117-1.304.002-1.671-.09a2.276 2.276 0 0 1-.52-.201c-.17-.091-.332-.194-.44-.397a.56.56 0 0 1-.057-.381.61.61 0 0 1 .218-.331c.198-.161.46-.251.855-.333.719-.148.97-.249 1.123-.37.13-.104.277-.314.537-.622a1.16 1.16 0 0 1-.003-.041 2.96 2.96 0 0 1-1.33-.358c-.15.158-.916.968-1.85 2.092-.393.47-.827.74-1.285.759-.458.02-.872-.211-1.224-.552-.703-.683-1.264-1.858-1.753-3.186-.488-1.328-.885-2.807-1.167-4.067-.283-1.26-.45-2.276-.474-2.766-.105-2.082.382-3.485 1.217-4.37.836-.885 1.982-1.22 3.099-1.284 2.005-.115 3.909.584 4.294.734.742-.504 1.698-.818 2.892-.798a7.39 7.39 0 0 1 1.681.218l.02-.009a6.854 6.854 0 0 1 .739-.214A9.626 9.626 0 0 1 17.08.642zm.152.67h-.146a8.74 8.74 0 0 0-1.704.192c1.246.552 2.187 1.402 2.85 2.25a8.44 8.44 0 0 1 1.132 1.92c.11.264.184.487.226.66.021.087.035.16.04.236.002.038.004.077-.012.144 0 .003-.005.01-.006.013.03.876-.187 1.47-.213 2.306-.02.606.135 1.318.173 2.095.036.73-.052 1.532-.526 2.319.04.048.076.096.114.144 1.254-1.975 2.158-4.16 2.64-6.023.258-1.003.395-1.912.407-2.632.01-.72-.124-1.242-.295-1.46-1.342-1.716-3.158-2.153-4.68-2.165zm-4.79.256c-1.182.003-2.03.36-2.673.895-.663.553-1.108 1.31-1.4 2.085-.347.92-.466 1.81-.513 2.414l.013-.008c.357-.2.826-.4 1.328-.516.502-.115 1.043-.151 1.533.039s.895.637 1.042 1.315c.704 3.257-.219 4.468-.559 5.382a9.61 9.61 0 0 0-.331 1.013c.043-.01.086-.022.129-.026.24-.02.428.06.54.108.342.142.577.44.704.78.033.089.057.185.071.284a.336.336 0 0 1 .02.127 55.14 55.14 0 0 0 .013 3.738c.023.538.057 1.012.1 1.386.043.373.104.657.143.753.128.32.315.739.653 1.024.338.284.823.474 1.709.284.768-.165 1.242-.394 1.559-.723.316-.329.505-.787.626-1.488.181-1.05.545-4.095.589-4.668-.02-.432.044-.764.182-1.017.142-.26.362-.419.552-.505.095-.043.184-.072.257-.093a5.956 5.956 0 0 0-.243-.325 4.456 4.456 0 0 1-.666-1.099 8.296 8.296 0 0 0-.257-.483c-.133-.24-.301-.54-.477-.877-.352-.675-.735-1.493-.934-2.29-.198-.796-.227-1.62.281-2.201.45-.516 1.24-.73 2.426-.61-.035-.105-.056-.192-.115-.332a7.817 7.817 0 0 0-1.041-1.764c-1.005-1.285-2.632-2.559-5.146-2.6h-.115zm-6.642.052c-.127 0-.254.004-.38.011-1.01.058-1.965.351-2.648 1.075-.684.724-1.134 1.911-1.036 3.876.019.372.181 1.414.459 2.652.277 1.238.67 2.695 1.142 3.982.473 1.287 1.046 2.407 1.59 2.937.274.265.512.372.728.363.217-.01.478-.135.797-.518a43.244 43.244 0 0 1 1.81-2.048 3.497 3.497 0 0 1-1.167-3.15c.103-.739.117-1.43.105-1.976-.012-.532-.05-.886-.05-1.107a.336.336 0 0 1 0-.019v-.005l-.001-.006v-.001a9.893 9.893 0 0 1 .592-3.376c.28-.744.697-1.5 1.322-2.112-.614-.202-1.704-.51-2.884-.568a7.603 7.603 0 0 0-.38-.01zM18.199 6.9c-.679.009-1.06.184-1.26.413-.283.325-.31.895-.134 1.597.175.703.537 1.489.877 2.142.17.327.335.621.468.86.134.24.232.41.292.555.055.134.116.252.178.362.263-.555.31-1.1.283-1.668-.035-.703-.198-1.422-.174-2.15.027-.851.195-1.405.21-2.063a5.793 5.793 0 0 0-.74-.048zm-8.234.115a2.82 2.82 0 0 0-.616.074 4.665 4.665 0 0 0-1.153.449 2.417 2.417 0 0 0-.349.228l-.022.02c.006.146.035.5.047 1.021.012.57-.002 1.297-.112 2.084-.239 1.71 1.002 3.126 2.46 3.128.085-.351.225-.707.365-1.082.406-1.094 1.205-1.892.532-5.006-.11-.51-.328-.716-.628-.832a1.474 1.474 0 0 0-.524-.084zm7.917.204h.05c.066.002.127.009.18.022.054.012.1.03.138.055a.164.164 0 0 1 .075.11l-.001.008h.001-.001a.24.24 0 0 1-.035.135.668.668 0 0 1-.11.15.677.677 0 0 1-.386.212.59.59 0 0 1-.41-.103.608.608 0 0 1-.13-.118.26.26 0 0 1-.063-.127.17.17 0 0 1 .042-.128.384.384 0 0 1 .117-.09c.096-.054.226-.094.373-.116.055-.008.109-.012.16-.013zm-7.82.168c.053 0 .109.005.166.013.153.021.289.062.393.122a.446.446 0 0 1 .133.106.223.223 0 0 1 .054.17.302.302 0 0 1-.075.154.649.649 0 0 1-.143.13.64.64 0 0 1-.448.113.728.728 0 0 1-.42-.228.71.71 0 0 1-.118-.164.28.28 0 0 1-.041-.177c.015-.108.104-.164.191-.195a.866.866 0 0 1 .307-.04zm9.06 7.343l-.003.001c-.147.053-.268.075-.37.12a.452.452 0 0 0-.239.214c-.063.115-.117.319-.101.666a.51.51 0 0 0 .148.07c.171.052.458.086.778.081.638-.007 1.423-.156 1.84-.35a3.95 3.95 0 0 0 .943-.615h-.001c-1.393.288-2.18.211-2.663.012a1.315 1.315 0 0 1-.332-.2zm-8.031.094h-.021c-.053.005-.13.023-.279.188-.348.39-.47.635-.757.864-.287.228-.66.35-1.405.503-.236.048-.371.101-.461.144.029.024.026.03.07.053.109.06.249.113.362.142.32.08.846.173 1.395.08.549-.094 1.12-.357 1.607-1.04.084-.118.093-.292.024-.479-.07-.187-.223-.348-.331-.393a.653.653 0 0 0-.204-.06z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>PostgreSQL</title><path d="M23.5594 14.7228a.5269.5269 0 0 0-.0563-.1191c-.139-.2632-.4768-.3418-1.0074-.2321-1.6533.3411-2.2935.1312-2.5256-.0191 1.342-2.0482 2.445-4.522 3.0411-6.8297.2714-1.0507.7982-3.5237.1222-4.7316a1.5641 1.5641 0 0 0-.1509-.235C21.6931.9086 19.8007.0248 17.5099.0005c-1.4947-.0158-2.7705.3461-3.1161.4794a9.449 9.449 0 0 0-.5159-.0816 8.044 8.044 0 0 0-1.3114-.1278c-1.1822-.0184-2.2038.2642-3.0498.8406-.8573-.3211-4.7888-1.645-7.2219.0788C.9359 2.1526.3086 3.8733.4302 6.3043c.0409.818.5069 3.334 1.2423 5.7436.4598 1.5065.9387 2.7019 1.4334 3.582.553.9942 1.1259 1.5933 1.7143 1.7895.4474.1491 1.1327.1441 1.8581-.7279.8012-.9635 1.5903-1.8258 1.9446-2.2069.4351.2355.9064.3625 1.39.3772a.0569.0569 0 0 0 .0004.0041 11.0312 11.0312 0 0 0-.2472.3054c-.3389.4302-.4094.5197-1.5002.7443-.3102.064-1.1344.2339-1.1464.8115-.0025.1224.0329.2309.0919.3268.2269.4231.9216.6097 1.015.6331 1.3345.3335 2.5044.092 3.3714-.6787-.017 2.231.0775 4.4174.3454 5.0874.2212.5529.7618 1.9045 2.4692 1.9043.2505 0 .5263-.0291.8296-.0941 1.7819-.3821 2.5557-1.1696 2.855-2.9059.1503-.8707.4016-2.8753.5388-4.1012.0169-.0703.0357-.1207.057-.1362.0007-.0005.0697-.0471.4272.0307a.3673.3673 0 0 0 .0443.0068l.2539.0223.0149.001c.8468.0384 1.9114-.1426 2.5312-.4308.6438-.2988 1.8057-1.0323 1.5951-1.6698zM2.371 11.8765c-.7435-2.4358-1.1779-4.8851-1.2123-5.5719-.1086-2.1714.4171-3.6829 1.5623-4.4927 1.8367-1.2986 4.8398-.5408 6.108-.13-.0032.0032-.0066.0061-.0098.0094-2.0238 2.044-1.9758 5.536-1.9708 5.7495-.0002.0823.0066.1989.0162.3593.0348.5873.0996 1.6804-.0735 2.9184-.1609 1.1504.1937 2.2764.9728 3.0892.0806.0841.1648.1631.2518.2374-.3468.3714-1.1004 1.1926-1.9025 2.1576-.5677.6825-.9597.5517-1.0886.5087-.3919-.1307-.813-.5871-1.2381-1.3223-.4796-.839-.9635-2.0317-1.4155-3.5126zm6.0072 5.0871c-.1711-.0428-.3271-.1132-.4322-.1772.0889-.0394.2374-.0902.4833-.1409 1.2833-.2641 1.4815-.4506 1.9143-1.0002.0992-.126.2116-.2687.3673-.4426a.3549.3549 0 0 0 .0737-.1298c.1708-.1513.2724-.1099.4369-.0417.156.0646.3078.26.3695.4752.0291.1016.0619.2945-.0452.4444-.9043 1.2658-2.2216 1.2494-3.1676 1.0128zm2.094-3.988-.0525.141c-.133.3566-.2567.6881-.3334 1.003-.6674-.0021-1.3168-.2872-1.8105-.8024-.6279-.6551-.9131-1.5664-.7825-2.5004.1828-1.3079.1153-2.4468.079-3.0586-.005-.0857-.0095-.1607-.0122-.2199.2957-.2621 1.6659-.9962 2.6429-.7724.4459.1022.7176.4057.8305.928.5846 2.7038.0774 3.8307-.3302 4.7363-.084.1866-.1633.3629-.2311.5454zm7.3637 4.5725c-.0169.1768-.0358.376-.0618.5959l-.146.4383a.3547.3547 0 0 0-.0182.1077c-.0059.4747-.054.6489-.115.8693-.0634.2292-.1353.4891-.1794 1.0575-.11 1.4143-.8782 2.2267-2.4172 2.5565-1.5155.3251-1.7843-.4968-2.0212-1.2217a6.5824 6.5824 0 0 0-.0769-.2266c-.2154-.5858-.1911-1.4119-.1574-2.5551.0165-.5612-.0249-1.9013-.3302-2.6462.0044-.2932.0106-.5909.019-.8918a.3529.3529 0 0 0-.0153-.1126 1.4927 1.4927 0 0 0-.0439-.208c-.1226-.4283-.4213-.7866-.7797-.9351-.1424-.059-.4038-.1672-.7178-.0869.067-.276.1831-.5875.309-.9249l.0529-.142c.0595-.16.134-.3257.213-.5012.4265-.9476 1.0106-2.2453.3766-5.1772-.2374-1.0981-1.0304-1.6343-2.2324-1.5098-.7207.0746-1.3799.3654-1.7088.5321a5.6716 5.6716 0 0 0-.1958.1041c.0918-1.1064.4386-3.1741 1.7357-4.4823a4.0306 4.0306 0 0 1 .3033-.276.3532.3532 0 0 0 .1447-.0644c.7524-.5706 1.6945-.8506 2.802-.8325.4091.0067.8017.0339 1.1742.081 1.939.3544 3.2439 1.4468 4.0359 2.3827.8143.9623 1.2552 1.9315 1.4312 2.4543-1.3232-.1346-2.2234.1268-2.6797.779-.9926 1.4189.543 4.1729 1.2811 5.4964.1353.2426.2522.4522.2889.5413.2403.5825.5515.9713.7787 1.2552.0696.087.1372.1714.1885.245-.4008.1155-1.1208.3825-1.0552 1.717-.0123.1563-.0423.4469-.0834.8148-.0461.2077-.0702.4603-.0994.7662zm.8905-1.6211c-.0405-.8316.2691-.9185.5967-1.0105a2.8566 2.8566 0 0 0 .135-.0406 1.202 1.202 0 0 0 .1342.103c.5703.3765 1.5823.4213 3.0068.1344-.2016.1769-.5189.3994-.9533.6011-.4098.1903-1.0957.333-1.7473.3636-.7197.0336-1.0859-.0807-1.1721-.151zm.5695-9.2712c-.0059.3508-.0542.6692-.1054 1.0017-.055.3576-.112.7274-.1264 1.1762-.0142.4368.0404.8909.0932 1.3301.1066.887.216 1.8003-.2075 2.7014a3.5272 3.5272 0 0 1-.1876-.3856c-.0527-.1276-.1669-.3326-.3251-.6162-.6156-1.1041-2.0574-3.6896-1.3193-4.7446.3795-.5427 1.3408-.5661 2.1781-.463zm.2284 7.0137a12.3762 12.3762 0 0 0-.0853-.1074l-.0355-.0444c.7262-1.1995.5842-2.3862.4578-3.4385-.0519-.4318-.1009-.8396-.0885-1.2226.0129-.4061.0666-.7543.1185-1.0911.0639-.415.1288-.8443.1109-1.3505.0134-.0531.0188-.1158.0118-.1902-.0457-.4855-.5999-1.938-1.7294-3.253-.6076-.7073-1.4896-1.4972-2.6889-2.0395.5251-.1066 1.2328-.2035 2.0244-.1859 2.0515.0456 3.6746.8135 4.8242 2.2824a.908.908 0 0 1 .0667.1002c.7231 1.3556-.2762 6.2751-2.9867 10.5405zm-8.8166-6.1162c-.025.1794-.3089.4225-.6211.4225a.5821.5821 0 0 1-.0809-.0056c-.1873-.026-.3765-.144-.5059-.3156-.0458-.0605-.1203-.178-.1055-.2844.0055-.0401.0261-.0985.0925-.1488.1182-.0894.3518-.1226.6096-.0867.3163.0441.6426.1938.6113.4186zm7.9305-.4114c.0111.0792-.049.201-.1531.3102-.0683.0717-.212.1961-.4079.2232a.5456.5456 0 0 1-.075.0052c-.2935 0-.5414-.2344-.5607-.3717-.024-.1765.2641-.3106.5611-.352.297-.0414.6111.0088.6356.1851z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/postman.svg b/assets/lib/simple-icons/icons/postman.svg
index 9eb4e7f4..1a904d05 100644
--- a/assets/lib/simple-icons/icons/postman.svg
+++ b/assets/lib/simple-icons/icons/postman.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Postman icon</title><path d="M13.527.099C6.955-.744.942 3.9.099 10.473c-.843 6.572 3.8 12.584 10.373 13.428 6.573.843 12.587-3.801 13.428-10.374C24.744 6.955 20.101.943 13.527.099zm2.471 7.485a.855.855 0 0 0-.593.25l-4.453 4.453-.307-.307-.643-.643c4.389-4.376 5.18-4.418 5.996-3.753zm-4.863 4.861l4.44-4.44a.62.62 0 1 1 .847.903l-4.699 4.125-.588-.588zm.33.694l-1.1.238a.06.06 0 0 1-.067-.032.06.06 0 0 1 .01-.073l.645-.645.512.512zm-2.803-.459l1.172-1.172.879.878-1.979.426a.074.074 0 0 1-.085-.039.072.072 0 0 1 .013-.093zm-3.646 6.058a.076.076 0 0 1-.069-.083.077.077 0 0 1 .022-.046h.002l.946-.946 1.222 1.222-2.123-.147zm2.425-1.256a.228.228 0 0 0-.117.256l.203.865a.125.125 0 0 1-.211.117h-.003l-.934-.934-.294-.295 3.762-3.758 1.82-.393.874.874c-1.255 1.102-2.971 2.201-5.1 3.268zm5.279-3.428h-.002l-.839-.839 4.699-4.125a.952.952 0 0 0 .119-.127c-.148 1.345-2.029 3.245-3.977 5.091zm3.657-6.46l-.003-.002a1.822 1.822 0 0 1 2.459-2.684l-1.61 1.613a.119.119 0 0 0 0 .169l1.247 1.247a1.817 1.817 0 0 1-2.093-.343zm2.578 0a1.714 1.714 0 0 1-.271.218h-.001l-1.207-1.207 1.533-1.533c.661.72.637 1.832-.054 2.522zM18.855 6.05a.143.143 0 0 0-.053.157.416.416 0 0 1-.053.45.14.14 0 0 0 .023.197.141.141 0 0 0 .084.03.14.14 0 0 0 .106-.05.691.691 0 0 0 .087-.751.138.138 0 0 0-.194-.033z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Postman</title><path d="M13.527.099C6.955-.744.942 3.9.099 10.473c-.843 6.572 3.8 12.584 10.373 13.428 6.573.843 12.587-3.801 13.428-10.374C24.744 6.955 20.101.943 13.527.099zm2.471 7.485a.855.855 0 0 0-.593.25l-4.453 4.453-.307-.307-.643-.643c4.389-4.376 5.18-4.418 5.996-3.753zm-4.863 4.861l4.44-4.44a.62.62 0 1 1 .847.903l-4.699 4.125-.588-.588zm.33.694l-1.1.238a.06.06 0 0 1-.067-.032.06.06 0 0 1 .01-.073l.645-.645.512.512zm-2.803-.459l1.172-1.172.879.878-1.979.426a.074.074 0 0 1-.085-.039.072.072 0 0 1 .013-.093zm-3.646 6.058a.076.076 0 0 1-.069-.083.077.077 0 0 1 .022-.046h.002l.946-.946 1.222 1.222-2.123-.147zm2.425-1.256a.228.228 0 0 0-.117.256l.203.865a.125.125 0 0 1-.211.117h-.003l-.934-.934-.294-.295 3.762-3.758 1.82-.393.874.874c-1.255 1.102-2.971 2.201-5.1 3.268zm5.279-3.428h-.002l-.839-.839 4.699-4.125a.952.952 0 0 0 .119-.127c-.148 1.345-2.029 3.245-3.977 5.091zm3.657-6.46l-.003-.002a1.822 1.822 0 0 1 2.459-2.684l-1.61 1.613a.119.119 0 0 0 0 .169l1.247 1.247a1.817 1.817 0 0 1-2.093-.343zm2.578 0a1.714 1.714 0 0 1-.271.218h-.001l-1.207-1.207 1.533-1.533c.661.72.637 1.832-.054 2.522zM18.855 6.05a.143.143 0 0 0-.053.157.416.416 0 0 1-.053.45.14.14 0 0 0 .023.197.141.141 0 0 0 .084.03.14.14 0 0 0 .106-.05.691.691 0 0 0 .087-.751.138.138 0 0 0-.194-.033z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/postmates.svg b/assets/lib/simple-icons/icons/postmates.svg
new file mode 100644
index 00000000..bdae5438
--- /dev/null
+++ b/assets/lib/simple-icons/icons/postmates.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Postmates</title><path d="M2.545 14.954l.44-1.284-1.138.692-1.08-.88.342 1.35-1.109.74 1.35.143.396 1.338.492-1.263 1.352.087zm5.308-2.61l-1.14.692-1.08-.88.342 1.349-1.108.74 1.35.144.396 1.336.493-1.261 1.352.087-1.046-.924zm-1.328 4.864l-1.139.692-1.08-.881.342 1.35-1.108.74 1.35.144.396 1.338.492-1.263 1.353.087-1.046-.924zM15.95 6.744l.72.041a.123.122 0 0 0 .092-.032l1.78-1.67a.032.032 0 0 0-.02-.056l-.7-.04a.189.189 0 0 0-.14.05l-1.754 1.646a.035.035 0 0 0 .022.06zm7.55 3.377a3.1 3.098 0 0 0-4.976-.342l-1.108-.83c.277-.113.857-.368.896-.525.022-.093-.273-.158-.727-.187l2.079-1.896a.047.047 0 0 0 .009-.053l-.529-.996a.04.04 0 0 0-.063-.01l-2.163 1.97c-.646 0-1.796.085-2.127-.123-.528-.333-.59-.822-.785-.997-.195-.176-.415-.197-.462-.346a.015.015 0 0 1 .011-.019c.102-.026.67-.186.8-.58.129-.396-.135-.932-.18-1.016a.018.018 0 0 1 0-.02l.604-.527a.018.018 0 0 0-.013-.03l-.886.108a.015.015 0 0 1-.015 0c-.047-.062-.4-.484-1.121-.189-.842.34-.687 1.068-.687 1.068.112.753.374.902.8 1.148.012 0 .017.02 0 .027-.274.228-3.035 2.494-5.585 3.378a.05.05 0 0 0 0 .093c.738.32 2.952.147 3.606-.232a.016.016 0 0 1 .025.018c-.072.273-.458 1.873.147 2.37l.034.026-.82.578a.21.21 0 0 0 .147.38l.422-.047a1.216 1.216 0 0 0 .725-.34l.148-.14 1.193.886-.158 1.261a3.1 3.098 0 1 0 2.56 1.623l.305-.195a.748.748 0 0 0 1.218-.756l1.262-.37a.205.205 0 0 0 .147-.24l-.008-.041a.207.207 0 0 0-.203-.164h-1.071a.018.018 0 0 1-.015-.01l-.322-.727.64-3.762 1.034.767a3.1 3.098 0 1 0 5.224 0zm-8.594-2.228l1.46-.025.192.361c-.338.012-.69.039-1.033.082-.247.03-.545-.287-.634-.387a.02.02 0 0 1 .015-.03zm-2.214 2.185c.122-.204.831-1.384.92-1.787a.018.018 0 0 1 .03-.007c.471.55 1.468.866 1.545.885a.009.009 0 0 0 .008 0l1.28-.394.287.213-1.34 1.229a.918.918 0 0 0-.52-.228c-.77-.098-1.975.076-2.194.11a.016.016 0 0 1-.006-.021zm3.31 4.029a.76.76 0 0 0-.249.074l-.915-.7a.015.015 0 0 1 0-.019l.458-.948a.016.016 0 0 1 .03 0l.752 1.18zm-1.942-1.025l-.626-.468 1.2-1.1zm0-1.623l-.974.894-.977-.727a11.265 11.258 0 0 0 1.97-.16zm-.778 1.553l.643.478-.077.211a.286.286 0 0 0 .172.369l1.34.488.04.03a.753.752 0 0 0-.019.473l-.295.192a3.09 3.088 0 0 0-1.919-1.217zm-.208 1.661a2.46 2.458 0 0 1 1.465.925l-1.717 1.092zm.822 4.48a2.46 2.46 0 1 1-1.235-4.53l-.309 2.456a.214.214 0 0 0 .096.203.207.207 0 0 0 .223 0l2.089-1.328a2.462 2.46 0 0 1-.866 3.198zm1.83-8.045a.01.01 0 0 1 0-.01 1.329 1.328 0 0 0-.063-.518l1.133-1.033-.49 2.875zm6.486 2.751a2.46 2.458 0 0 1-3.418-3.362l1.95 1.452a.207.207 0 0 0 .237.008.196.196 0 0 0 .054-.05.208.208 0 0 0-.043-.295l-1.953-1.45a2.385 2.384 0 0 1 .526-.443 2.46 2.46 0 1 1 2.644 4.147Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/postwoman.svg b/assets/lib/simple-icons/icons/postwoman.svg
deleted file mode 100644
index 74332ed8..00000000
--- a/assets/lib/simple-icons/icons/postwoman.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Postwoman icon</title><path d="M2.534 9.287C2.534 15.46 7.56 24 12 24c4.18 0 9.466-8.539 9.466-14.713C21.467 3.113 17.228 0 12 0 6.772 0 2.534 3.113 2.534 9.287zm11.926 4.565a4.649 4.649 0 014.257-1.261 4.649 4.649 0 01-1.262 4.256 4.649 4.649 0 01-4.257 1.262 4.649 4.649 0 011.262-4.257zm-9.177-1.261a4.649 4.649 0 014.258 1.261 4.649 4.649 0 011.261 4.257 4.649 4.649 0 01-4.257-1.262 4.649 4.649 0 01-1.262-4.256z"/></svg>
diff --git a/assets/lib/simple-icons/icons/powerapps.svg b/assets/lib/simple-icons/icons/powerapps.svg
new file mode 100644
index 00000000..2a2bc8af
--- /dev/null
+++ b/assets/lib/simple-icons/icons/powerapps.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Power Apps</title><path d="m11.4818 22.3686-.6199.7085c-.3961.4527-1.1003.4527-1.4964 0L.246 12.6547a.9942.9942 0 0 1 0-1.3094L9.3656.9229c.3961-.4527 1.1003-.4527 1.4964 0l.6203.7089-3.1295 3.4134c-.5166.5635-.5166 1.4136 0 1.9776l4.2755 4.6637a.4606.4606 0 0 1 .001.626l-4.2765 4.6652c-.5156.5625-.5161 1.4131 0 1.9776l3.129 3.4133zm6.4767-4.8675-3.8068-4.1525c-.7041-.7696-.7041-1.9288-.001-2.6969l3.8077-4.153c.2783-.3043.6746-.4793 1.0865-.4841L14.327.8678c-.3942-.4301-1.0723-.4301-1.4665 0L8.7214 5.383a.9634.9634 0 0 0 0 1.3018l4.2756 4.6643a.9632.9632 0 0 1 0 1.3018l-4.2756 4.6643a.9634.9634 0 0 0 0 1.3018l4.139 4.5152c.3942.4301 1.0723.4301 1.4665 0l4.7177-5.1465c-.4115-.005-.8078-.1803-1.0861-.4846zm-3.4381-6.5118c-.5242.5718-.5242 1.4495 0 2.0213l3.8064 4.1524c.3958.4317 1.0764.4317 1.4721 0l3.8092-4.1555c.5226-.5701.5226-1.4451 0-2.0152l-3.8092-4.1555c-.3958-.4317-1.0764-.4317-1.4721 0l-3.8064 4.1525z"/></svg>
diff --git a/assets/lib/simple-icons/icons/powerautomate.svg b/assets/lib/simple-icons/icons/powerautomate.svg
new file mode 100644
index 00000000..122bb02f
--- /dev/null
+++ b/assets/lib/simple-icons/icons/powerautomate.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Power Automate</title><path d="M.258 4.142c-.579-.646-.12-1.672.747-1.672h14.139l-8.191 9.155L.258 4.142zM19.744 6.86l-3.629-4.056a1.002 1.002 0 0 0-.368-.257L7.289 12 .258 19.858c-.578.646-.12 1.672.748 1.672h5.613L19.744 6.86zm4 4.471-1.695-1.895-1.97-2.201L7.289 21.53h8.079c.285 0 .557-.122.748-.334l5.934-6.632 1.695-1.895c.34-.381.34-.957-.001-1.338z"/></svg>
diff --git a/assets/lib/simple-icons/icons/powerbi.svg b/assets/lib/simple-icons/icons/powerbi.svg
index f750ee78..6379bf67 100644
--- a/assets/lib/simple-icons/icons/powerbi.svg
+++ b/assets/lib/simple-icons/icons/powerbi.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Power BI icon</title><path d="M14.064 12.537c-.725 0-1.313.545-1.313 1.217v5.353c0 .672.589 1.217 1.314 1.217.726 0 1.314-.545 1.314-1.218v-5.352c0-.672-.589-1.217-1.315-1.217zm4.132-4.888c-.726 0-1.314.545-1.314 1.218V19.07c0 .672.59 1.217 1.314 1.217.726 0 1.314-.545 1.314-1.217V8.867c0-.673-.588-1.218-1.314-1.218zm-8.262 3.035c-.725 0-1.313.545-1.313 1.218v7.205c0 .672.589 1.217 1.315 1.217.725 0 1.313-.545 1.313-1.218v-7.205c0-.672-.589-1.217-1.315-1.217zm-4.13 4.398h-.001c-.726 0-1.314.546-1.314 1.218l.001 2.807c0 .672.588 1.217 1.314 1.217.726 0 1.314-.545 1.313-1.218V16.3c0-.673-.588-1.218-1.314-1.218zM24 6.3v9.163c0 1.447-1.27 2.624-2.831 2.624h-.484v-.897h.484c1.027 0 1.863-.775 1.863-1.727V6.3c0-.952-.836-1.726-1.863-1.726H2.831C1.804 4.574.968 5.348.968 6.3v9.163c0 .952.836 1.727 1.863 1.727h.484v.897H2.83C1.27 18.086 0 16.909 0 15.462V6.3c0-1.446 1.27-2.623 2.83-2.623h18.34C22.73 3.676 24 4.853 24 6.3Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Power BI</title><path d="M21 1v22a1 1 0 0 1-1 1h-3.5V7c0-.827-.673-1.5-1.5-1.5h-2V1a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1zm-6 5H9a1 1 0 0 0-1 1v4.5h2c.827 0 1.5.673 1.5 1.5v11H16V7a1 1 0 0 0-1-1zm-5 6H4a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h7V13a1 1 0 0 0-1-1z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/powers.svg b/assets/lib/simple-icons/icons/powers.svg
index baf25520..e0e44d01 100644
--- a/assets/lib/simple-icons/icons/powers.svg
+++ b/assets/lib/simple-icons/icons/powers.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>POWERS icon</title><path d="M12.31 12.347s-.008.73-.008 1.068c0 .34.339.544.777.544v.486h-2.988v-.486c.408 0 .79-.204.79-.544v-2.673c0-.545-.52-.557-.79-.595v-.466h2.55c1.042 0 2.403-.125 2.403 1.228 0 1.403-1.233 1.441-2.304 1.441zm-.017-2.212v1.559h.494c.35 0 .777-.063.777-.772 0-.749-.318-.795-.907-.795-.254 0-.364.008-.364.008zM12 4.551l12 7.45-12 7.448L0 12zm-8.645 7.45c2.764 1.713 7.373 4.575 8.645 5.364L20.644 12A7141.71 7141.71 0 0 0 12 6.636c-1.272.787-5.881 3.649-8.645 5.365Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>POWERS</title><path d="M12.31 12.347s-.008.73-.008 1.068c0 .34.339.544.777.544v.486h-2.988v-.486c.408 0 .79-.204.79-.544v-2.673c0-.545-.52-.557-.79-.595v-.466h2.55c1.042 0 2.403-.125 2.403 1.228 0 1.403-1.233 1.441-2.304 1.441zm-.017-2.212v1.559h.494c.35 0 .777-.063.777-.772 0-.749-.318-.795-.907-.795-.254 0-.364.008-.364.008zM12 4.551l12 7.45-12 7.448L0 12zm-8.645 7.45c2.764 1.713 7.373 4.575 8.645 5.364L20.644 12A7141.71 7141.71 0 0 0 12 6.636c-1.272.787-5.881 3.649-8.645 5.365Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/powershell.svg b/assets/lib/simple-icons/icons/powershell.svg
index 69e0186a..d3fc1d24 100644
--- a/assets/lib/simple-icons/icons/powershell.svg
+++ b/assets/lib/simple-icons/icons/powershell.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>PowerShell icon</title><path d="M23.181 3.077c.568 0 .923.463.792 1.035l-3.659 15.981c-.13.572-.697 1.035-1.265 1.035H.819c-.568 0-.923-.463-.792-1.035L3.686 4.112c.13-.572.697-1.035 1.265-1.035h18.23zm-8.375 9.345c.251-.394.227-.905-.09-1.243L9.122 5.228c-.38-.405-1.037-.407-1.466-.004-.429.403-.468 1.057-.088 1.461l4.662 4.96v.11l-7.42 5.373c-.45.327-.533.977-.187 1.453.346.476.991.597 1.44.27l8.229-5.909c.28-.197.438-.366.514-.52zm-2.796 4.399a.928.928 0 0 0-.934.923c0 .51.418.923.934.923h4.433a.928.928 0 0 0 .934-.923.928.928 0 0 0-.934-.923H12.01z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>PowerShell</title><path d="M23.181 2.974c.568 0 .923.463.792 1.035l-3.659 15.982c-.13.572-.697 1.035-1.265 1.035H.819c-.568 0-.923-.463-.792-1.035L3.686 4.009c.13-.572.697-1.035 1.265-1.035zm-8.375 9.346c.251-.394.227-.905-.09-1.243L9.122 5.125c-.38-.404-1.037-.407-1.466-.003-.429.402-.468 1.056-.088 1.46l4.662 4.96v.11l-7.42 5.374c-.45.327-.533.977-.187 1.453.346.476.991.597 1.44.27l8.229-5.91c.28-.196.438-.365.514-.52zm-2.796 4.399a.928.928 0 00-.934.923c0 .51.418.923.934.923h4.433a.928.928 0 00.934-.923.928.928 0 00-.934-.923z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/powervirtualagents.svg b/assets/lib/simple-icons/icons/powervirtualagents.svg
new file mode 100644
index 00000000..5533c663
--- /dev/null
+++ b/assets/lib/simple-icons/icons/powervirtualagents.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Power Virtual Agents</title><path d="M17.239 17.968c.272 0 .511-.105.717-.252a.985.985 0 0 1-.962.811H12.41a1 1 0 0 0-.707.293l-4.425 4.425a.75.75 0 0 1-1.28-.53v-3.188a1 1 0 0 0-1-1H1a1 1 0 0 1-1-1V7.531a1 1 0 0 1 1-1h4.498v4.998c0 .827.673 1.5 1.5 1.5h4.585c.133 0 .259.052.353.146l4.425 4.425c.237.238.548.368.878.368zm6.752-12.935H5.998v3.498h17.993V5.033zm0-3.726a.998.998 0 0 0-.972-.773H6.998a1 1 0 0 0-1 1v2.999h17.993V1.307zM5.998 9.031v2.498a1 1 0 0 0 1 1h4.584a1 1 0 0 1 .707.293l4.425 4.425a.75.75 0 0 0 1.28-.528v-3.19a1 1 0 0 1 1-1h4.014a.998.998 0 0 0 .986-.864L24 9.031H5.998z"/></svg>
diff --git a/assets/lib/simple-icons/icons/pr-dot-co.svg b/assets/lib/simple-icons/icons/pr-dot-co.svg
deleted file mode 100644
index c7f62ab7..00000000
--- a/assets/lib/simple-icons/icons/pr-dot-co.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>pr.co icon</title><path d="M11.9998 4.67c1.876 0 3.7518.7157 5.1832 2.1468l.0167.0167.0053.0055.0014.0015.0016.0014c.9304.9393 1.5546 2.0673 1.873 3.2602l1.7906-1.7905c.7157-.7157 1.8761-.7157 2.5916 0 .7157.7155.7157 1.8758 0 2.5913l-6.2802 6.2803c-1.4314 1.4314-3.3073 2.1468-5.1832 2.1468-1.8758 0-3.7517-.7154-5.1831-2.1468-.9442-.9442-1.5768-2.0816-1.898-3.285L3.128 15.6887c-.7154.716-1.8758.716-2.5915 0-.7153-.7155-.7153-1.8758 0-2.5915l6.2478-6.2477a4.8688 4.8688 0 01.0324-.0326h.0002-.0002.0002C8.248 5.3857 10.1239 4.67 11.9999 4.67zm2.5918 9.9216c1.431-1.4312 1.431-3.752 0-5.1832-1.4314-1.4312-3.7521-1.4312-5.1833 0v.0002c-1.4314 1.431-1.4314 3.752 0 5.1832 1.4312 1.4312 3.7517 1.431 5.1831 0h.0002Z"/></svg>
diff --git a/assets/lib/simple-icons/icons/prdotco.svg b/assets/lib/simple-icons/icons/prdotco.svg
new file mode 100644
index 00000000..3a2277c3
--- /dev/null
+++ b/assets/lib/simple-icons/icons/prdotco.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>pr.co</title><path d="M11.9998 4.67c1.876-.0025 3.7518.7157 5.1832 2.1468 1.026 1.0238 1.6037 2.1895 1.898 3.2853l1.7906-1.7905c.7157-.7157 1.8761-.7157 2.5916 0 .7157.7155.7157 1.8758 0 2.5913l-6.2802 6.2803c-1.4314 1.4314-3.3073 2.1469-5.1832 2.1469-1.8758 0-3.7517-.7155-5.1831-2.147-.9442-.944-1.5768-2.0815-1.898-3.2848L3.128 15.6886c-.7154.716-1.8758.716-2.5915 0-.7153-.7154-.7153-1.8758 0-2.5915 2.092-2.0933 4.1908-4.1889 5.9512-5.9502 1.6938-1.8595 3.7695-2.4746 5.5121-2.477zm2.5918 4.7384c-1.4314-1.4312-3.7521-1.4312-5.1834 0-1.4313 1.4312-1.4313 3.7522 0 5.1834 1.4313 1.4312 3.7518 1.431 5.1831-.0002 1.4313-1.4312 1.4313-3.752.0003-5.1832z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/pre-commit.svg b/assets/lib/simple-icons/icons/pre-commit.svg
deleted file mode 100644
index 1d1edce7..00000000
--- a/assets/lib/simple-icons/icons/pre-commit.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>pre-commit icon</title><path d="M23.355 10.444L13.556.645a2.2 2.2 0 0 0-3.112 0L.645 10.444a2.201 2.201 0 0 0 0 3.112l9.799 9.799a2.201 2.201 0 0 0 3.112 0l9.799-9.799a2.2 2.2 0 0 0 0-3.112zm-1.657 2.918l-8.337 8.337a1.922 1.922 0 0 1-1.362.563c-.493 0-.986-.188-1.362-.563L2.3 13.362A1.92 1.92 0 0 1 1.738 12c0-.514.2-.998.564-1.362l8.337-8.337c.363-.363.847-.563 1.361-.563s.998.2 1.362.564l8.337 8.337c.75.75.75 1.972-.001 2.723zM14.195 9.76c.094.173.142.399.142.678s-.047.505-.142.678c-.095.173-.22.306-.376.401a1.485 1.485 0 0 1-.542.191 4.033 4.033 0 0 1-.641.049h-1.504V9.119h1.504c.222 0 .435.017.641.049.205.033.386.097.542.191.156.095.281.228.376.401zm7.062 1.319L12.92 2.742c-.245-.245-.572-.381-.92-.381s-.675.135-.921.381l-8.337 8.337c-.245.246-.381.573-.381.921s.135.675.381.921l8.337 8.337a1.304 1.304 0 0 0 1.842 0l8.337-8.337a1.305 1.305 0 0 0-.001-1.842zm-5.213.4a2.437 2.437 0 0 1-.53.906 2.624 2.624 0 0 1-.943.635c-.386.16-.855.24-1.405.24h-2.034v3.155H9.197v-8.8h3.969c.55 0 1.019.08 1.405.24.386.16.7.372.943.635.242.263.419.563.53.9.111.337.166.686.166 1.048 0 .353-.055.7-.166 1.041z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/preact.svg b/assets/lib/simple-icons/icons/preact.svg
new file mode 100644
index 00000000..3b6dd3ad
--- /dev/null
+++ b/assets/lib/simple-icons/icons/preact.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Preact</title><path d="M 12,10.406 A 1.594,1.594 0 0 0 10.406,12 1.594,1.594 0 0 0 12,13.594 1.594,1.594 0 0 0 13.594,12 1.594,1.594 0 0 0 12,10.406 Z m 5.499,-4.33 a 2.998,2.998 0 0 1 0.643,0.054 1.668,1.668 0 0 1 0.48,0.172 1.085,1.085 0 0 1 0.29,0.235 1.032,1.032 0 0 1 0.185,0.315 1.454,1.454 0 0 1 0.084,0.452 c 0.007,0.195 -0.015,0.398 -0.058,0.603 -0.054,0.261 -0.14,0.521 -0.244,0.778 -0.137,0.334 -0.304,0.66 -0.49,0.978 -0.245,0.417 -0.52,0.818 -0.817,1.207 -0.145,0.191 -0.3,0.376 -0.455,0.561 -0.22,-0.238 -0.443,-0.472 -0.673,-0.7 a 23.61,23.61 0 0 0 -2.05,-1.797 l -0.23,0.296 0.23,-0.296 -0.018,-0.014 -0.461,0.592 0.018,0.014 a 22.864,22.864 0 0 1 1.984,1.74 c 0.241,0.237 0.475,0.48 0.703,0.73 -0.099,0.108 -0.194,0.22 -0.296,0.326 -0.099,0.104 -0.2,0.207 -0.301,0.308 l 0.53,0.53 c 0.106,-0.105 0.21,-0.212 0.313,-0.32 0.085,-0.088 0.164,-0.182 0.248,-0.272 0.065,0.078 0.135,0.152 0.198,0.231 a 13.317,13.317 0 0 1 0.909,1.262 c 0.211,0.336 0.404,0.681 0.564,1.036 a 5.23,5.23 0 0 1 0.293,0.806 3.019,3.019 0 0 1 0.102,0.637 c 0.008,0.178 -0.007,0.351 -0.05,0.508 -0.034,0.123 -0.087,0.239 -0.157,0.338 h -10e-4 c -0.068,0.098 -0.157,0.186 -0.26,0.256 -0.121,0.083 -0.264,0.146 -0.418,0.191 -0.188,0.054 -0.39,0.081 -0.6,0.09 -0.266,0.01 -0.538,-0.01 -0.814,-0.05 -0.357,-0.051 -0.713,-0.134 -1.067,-0.238 -0.464,-0.137 -0.92,-0.307 -1.369,-0.5 h -0.001 c -0.584,-0.253 -1.153,-0.543 -1.71,-0.86 L 12.708,16.26 c 0.578,-0.377 1.144,-0.77 1.686,-1.194 l -0.21,-0.27 0.211,0.27 0.018,-0.015 -0.463,-0.59 -0.017,0.014 c -0.695,0.542 -1.418,1.047 -2.168,1.505 A 18.53,18.53 0 0 1 9.938,16.963 C 9.465,17.182 8.984,17.378 8.494,17.539 A 8.68,8.68 0 0 1 7.352,17.835 C 7.066,17.887 6.781,17.921 6.499,17.925 6.277,17.928 6.061,17.912 5.856,17.87 5.681,17.834 5.518,17.778 5.376,17.698 5.265,17.635 5.166,17.556 5.086,17.464 5.007,17.373 4.944,17.265 4.901,17.149 4.85,17.012 4.823,16.857 4.817,16.696 a 2.54,2.54 0 0 1 0.058,-0.603 c 0.055,-0.261 0.14,-0.52 0.245,-0.777 a 7.704,7.704 0 0 1 0.49,-0.978 12.09,12.09 0 0 1 1.271,-1.767 c 0.232,0.251 0.469,0.497 0.712,0.737 a 23.645,23.645 0 0 0 2.02,1.765 l 0.461,-0.591 A 22.9,22.9 0 0 1 8.119,12.773 C 7.865,12.523 7.618,12.267 7.378,12.004 7.477,11.896 7.573,11.785 7.673,11.679 7.776,11.572 7.879,11.466 7.983,11.362 l -0.53,-0.53 C 7.345,10.94 7.238,11.05 7.132,11.16 7.047,11.249 6.967,11.343 6.884,11.433 6.829,11.367 6.77,11.305 6.715,11.238 6.386,10.832 6.077,10.411 5.799,9.975 5.585,9.637 5.391,9.292 5.228,8.935 5.102,8.66 4.995,8.38 4.92,8.097 4.863,7.882 4.826,7.669 4.818,7.46 A 1.67,1.67 0 0 1 4.868,6.953 C 4.902,6.829 4.955,6.714 5.025,6.614 H 5.026 C 5.094,6.516 5.184,6.428 5.286,6.358 A 1.446,1.446 0 0 1 5.705,6.168 C 5.892,6.113 6.094,6.086 6.304,6.078 a 4.545,4.545 0 0 1 0.814,0.048 7.708,7.708 0 0 1 1.067,0.24 12.092,12.092 0 0 1 1.369,0.5 17.248,17.248 0 0 1 1.736,0.874 24.003,24.003 0 0 0 -1.694,1.202 l 0.462,0.59 c 0.683,-0.534 1.393,-1.031 2.13,-1.484 0.594,-0.363 1.203,-0.697 1.83,-0.99 0.474,-0.222 0.956,-0.42 1.448,-0.583 A 8.816,8.816 0 0 1 16.612,6.172 C 16.91,6.116 17.207,6.08 17.499,6.076 Z m -0.01,-0.75 -0.001,0 C 17.142,5.331 16.804,5.373 16.474,5.434 A 9.546,9.546 0 0 0 15.229,5.763 14.202,14.202 0 0 0 13.7,6.379 C 13.117,6.651 12.554,6.961 12.004,7.289 11.883,7.216 11.761,7.144 11.637,7.074 11.06,6.745 10.466,6.442 9.852,6.177 9.38,5.974 8.897,5.792 8.397,5.646 8.017,5.534 7.625,5.442 7.225,5.384 6.916,5.34 6.599,5.316 6.275,5.329 6.021,5.339 5.759,5.372 5.499,5.446 5.281,5.51 5.063,5.602 4.863,5.74 A 1.774,1.774 0 0 0 4.146,6.754 C 4.078,7.001 4.059,7.251 4.069,7.491 a 3.728,3.728 0 0 0 0.127,0.798 6.016,6.016 0 0 0 0.351,0.959 9.548,9.548 0 0 0 0.62,1.128 14.203,14.203 0 0 0 0.967,1.335 c 0.08,0.098 0.166,0.19 0.248,0.286 C 6.193,12.219 6.007,12.443 5.83,12.676 5.519,13.084 5.226,13.51 4.963,13.958 A 8.44,8.44 0 0 0 4.425,15.033 5.28,5.28 0 0 0 4.142,15.941 C 4.089,16.19 4.059,16.453 4.069,16.723 a 2.182,2.182 0 0 0 0.13,0.688 v 10e-4 a 1.775,1.775 0 0 0 0.81,0.94 2.403,2.403 0 0 0 0.697,0.253 3.699,3.699 0 0 0 0.805,0.07 5.97,5.97 0 0 0 0.977,-0.102 l 10e-4,-0.001 a 9.412,9.412 0 0 0 1.24,-0.32 c 0.523,-0.173 1.031,-0.38 1.526,-0.61 0.599,-0.278 1.178,-0.593 1.742,-0.93 0.121,0.072 0.243,0.144 0.366,0.214 a 17.99,17.99 0 0 0 1.785,0.898 12.832,12.832 0 0 0 1.455,0.53 c 0.38,0.112 0.772,0.204 1.172,0.262 a 5.284,5.284 0 0 0 0.95,0.056 c 0.254,-0.01 0.516,-0.044 0.776,-0.118 0.218,-0.063 0.436,-0.156 0.636,-0.294 a 1.775,1.775 0 0 0 0.717,-1.014 c 0.068,-0.248 0.087,-0.497 0.077,-0.736 -0.011,-0.277 -0.06,-0.544 -0.127,-0.799 -0.085,-0.322 -0.202,-0.629 -0.335,-0.923 -0.178,-0.393 -0.387,-0.767 -0.612,-1.127 -0.294,-0.466 -0.618,-0.908 -0.959,-1.333 -0.09,-0.111 -0.188,-0.216 -0.28,-0.324 0.189,-0.222 0.374,-0.447 0.552,-0.679 0.311,-0.409 0.604,-0.835 0.867,-1.283 A 8.441,8.441 0 0 0 19.575,8.967 5.277,5.277 0 0 0 19.858,8.06 C 19.911,7.81 19.941,7.547 19.931,7.277 19.924,7.051 19.886,6.817 19.801,6.589 V 6.588 a 1.775,1.775 0 0 0 -0.81,-0.94 C 18.767,5.522 18.529,5.444 18.294,5.396 A 3.7,3.7 0 0 0 17.489,5.326 Z M 12,0 22.392,6 V 18 L 12,24 1.607,18 V 6 Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/precommit.svg b/assets/lib/simple-icons/icons/precommit.svg
new file mode 100644
index 00000000..8211f47d
--- /dev/null
+++ b/assets/lib/simple-icons/icons/precommit.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>pre-commit</title><path d="M12 0c-.563 0-1.127.215-1.557.645L.645 10.443c-.86.86-.86 2.254 0 3.114l9.798 9.798c.86.86 2.254.86 3.114 0l9.798-9.798c.86-.86.86-2.254 0-3.114L13.557.645A2.195 2.195 0 0012 0zm0 1.74c.493 0 .987.186 1.361.56L21.7 10.64c.75.75.75 1.973 0 2.722L13.361 21.7c-.374.375-.868.56-1.361.56s-.987-.185-1.361-.56L2.3 13.361a1.93 1.93 0 010-2.722L10.639 2.3c.374-.375.868-.56 1.361-.56zm0 .62c-.333 0-.664.127-.92.382L2.742 11.08a1.295 1.295 0 000 1.84l8.338 8.338a1.296 1.296 0 001.84 0l8.338-8.338a1.295 1.295 0 000-1.84L12.92 2.742A1.296 1.296 0 0012 2.36zM9.207 7.624h3.959c.55 0 1.015.079 1.4.238.385.16.7.371.942.633.241.262.417.561.527.897a3.34 3.34 0 010 2.084c-.11.34-.286.64-.527.902a2.628 2.628 0 01-.942.633c-.385.16-.85.238-1.4.238h-2.043v3.156H9.207zm1.916 1.484v2.657h1.514c.222 0 .434-.016.64-.05.207-.032.39-.097.547-.193.158-.095.284-.23.38-.404.094-.174.142-.401.142-.682 0-.28-.048-.507-.143-.681a1.053 1.053 0 00-.379-.404 1.513 1.513 0 00-.547-.194 4.056 4.056 0 00-.64-.049z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/premierleague.svg b/assets/lib/simple-icons/icons/premierleague.svg
new file mode 100644
index 00000000..6da7aa8a
--- /dev/null
+++ b/assets/lib/simple-icons/icons/premierleague.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Premier League</title><path d="M11.176 0s-.681 1.938-.867 2.527C9.844 2.202 8.386 1.194 7.78.775c.14.806.356 2.124.403 2.403-.124-.093-.821-.698-1.875-1.194.589.682 1.008 1.736 1.271 2.588a10.566 10.566 0 0 1 5.238-1.379c.977 0 1.94.14 2.854.403.093-.884.279-1.968.682-2.758-.915.728-1.474 1.503-1.551 1.596-.031-.186-.093-1.52-.17-2.434-.372.403-1.8 2.016-2.063 2.264C12.384 1.938 11.176 0 11.176 0zm1.674 3.86c-1.674 0-3.3.386-4.696 1.115.713.046 1.224.668 1.395 1.164-.558-.45-1.442-.667-1.985-.078-.511.589-.464 1.688.047 2.572-1.193-.605-1.194-2.185-.775-2.867A10.392 10.392 0 0 0 3.61 9.594l1.07.172c-1.24 1.426-2.107 3.953-2.107 5.146l1.75-.543c-.31 1.054-.401 4.602.653 6.385 0 0 1.38-.96 2.945-3.363.65 2.17.356 3.985 0 5.767 2.82 1.581 6.09.696 8.012-.683l.357 1.35c2.248-1.489 3.488-3.628 3.72-6.124l.837.93c1.286-3.829.28-6.883-1.565-9.502l-.078.637-.79-.87s.17-.077.31-.263c.03-.078-.046-.495-.371-.774-.31.078-.56.264-.684.45a3.222 3.222 0 0 0-.93-.543c.062.077.604.79.65 1.007.466.388 1.102.837 1.52 1.395-.34-.403-1.984-.497-2.728-.078 0 0-.744-.868-1.426-1.473-.14-.511.326-.96.326-.96s-.48-.03-.93.42c-.682-.512-1.55-.745-1.55-.745-.961.14-1.612.82-1.612.82.217.14.512.327.776.42.511.217 1.006.139 1.332.139.263 0 .636.078.636.078s.635.495 1.565 1.565c-1.426-.574-2.915.062-3.969-.45-1.24-.62-1.146-1.595-1.146-1.595s-.836-.11-.836-.141c0 0 .618-.82 1.548-1.1l-.464-.402c.558-.465 1.534-1.085 3.115-1.24 0 0 .683.262 2.11 1.285.232-.326.308-1.008.308-1.008.728.248 2.217 1.333 2.806 1.984-.325-.759-.559-1.223-.636-2.013-.357-.357-1.24-1.101-3.069-1.551.295.605.264 1.115.264 1.115-.34-.45-1.055-1.146-1.55-1.332-.295-.015-.605-.047-.93-.047zm3.271 7.068a4.323 4.323 0 0 0 1.256.697v1.348c-.465.403-1.985 1.675-3.008 1.566-.573-1.1-1.115-2.107-1.115-2.107s1.565-1.318 2.867-1.504zm2.975.031c.465 1.131.59 2.48.078 3.379-.28-.605-.636-.947-1.008-1.35v-1.347s.418-.264.93-.682zm-.977 3.395c.465.511.559 1.068.559 1.068-.202 1.131-.836 1.846-1.301 2.14.046-.821-.172-1.519-.172-1.519-.34.372-1.13.743-1.596.836l-.697-1.3c.822-.032 2.201-1.194 2.201-1.194l1.006-.031z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/prestashop.svg b/assets/lib/simple-icons/icons/prestashop.svg
index 14e56341..bdc47019 100644
--- a/assets/lib/simple-icons/icons/prestashop.svg
+++ b/assets/lib/simple-icons/icons/prestashop.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>PrestaShop icon</title><path d="M11.558 1.034C5.174 1.034 0 6.21 0 12.592c0 1.258.201 2.47.574 3.597l.002-.007a12.415 12.415 0 01.53-1.787l.011-.03c.085-.222.179-.442.277-.66l.084-.181c.08-.171.165-.34.253-.507.036-.068.07-.136.108-.203.02-.038.044-.073.064-.11.094-.166.19-.332.29-.493l.075-.114c.125-.195.256-.386.393-.573l.035-.05c.144-.193.295-.38.451-.563l.1-.118c.155-.177.315-.35.481-.517l.099-.097a10.321 10.321 0 01.546-.503c.74-2.48 3.005-4.285 5.686-4.285 1.079 0 2.152.31 3.071.873a6.017 6.017 0 012.211 2.407l.007.015.04.074v.003l.004.002a9.925 9.925 0 011.567 1.198c.04.037.081.071.12.109.002 0 .006.005.007.006l-.002-.006-.001-.004v-.003l.042-.084c.377-2.384 1.43-4.102 2.67-4.102.934 0 1.762.975 2.276 2.476l.005.016.001.002c.145.158.287.331.424.521l.007.01.021.067-.02-.078c-1.542-4.569-5.863-7.857-10.952-7.857zM9.927 5.477C7.586 5.52 5.34 7.132 4.574 9.365l-.012.034a10.14 10.14 0 011.315-.895c2.806-1.656 6.479-1.646 9.278.016-.895-1.653-2.631-2.819-4.5-3.004a5.14 5.14 0 00-.728-.039zm9.834.5a1.36 1.36 0 00-.39.067c-1.265.562-1.719 2.073-2.031 3.303l-.016.072c.365-.62.808-1.215 1.396-1.642.835-.687 2.105-.655 2.916.053.308.326.141.008.031-.22-.342-.75-1.025-1.653-1.906-1.634zM21.67 7.98zm-9.32.335l-1.07 3.27-.002.005-.006.002-4.498 1.112h-.009l4.456 1.087c.105.11.227.205.36.28h.002c.042.024.085.045.129.065l.01.005c.041.018.083.033.126.047l.021.008c.04.013.08.023.12.032l.033.008a1.677 1.677 0 00.318.033 1.546 1.546 0 001.43-.948c.08-.186.123-.39.123-.604v-.011l-.001-.012c-.001-.054-.004-.107-.01-.16l-.001-.002a1.506 1.506 0 00-.026-.153l-.001-.004a1.511 1.511 0 00-.096-.288v-.003a1.521 1.521 0 00-.348-.49v-.003zm3.148.626c.048 1.008.036 2.046-.1 3.057-.17 2.018-1.19 3.798-1.972 5.616l-.03.08-.035.086c1.51-1.522 3.17-3.04 3.969-5.082.383-.636.118-1.342-.115-1.976-.17-.877-1.069-1.278-1.717-1.781zm6.172.572l-.588 2.688a1.764 1.764 0 00-.047.2c-.002.02-.007.04-.01.06a1.76 1.76 0 00-.016.222l-.002.031h.003c0 .628.297 1.136.663 1.137a.41.41 0 00.182-.045l.027-.015a.537.537 0 00.07-.047c.013-.01.024-.022.036-.033a.752.752 0 00.137-.168l.03-.054a1.23 1.23 0 00.052-.108l.017-.04c.02-.053.038-.108.053-.166l.002-.002.001-.003.404-.451-.407-.456v.001l-.02-.063zm-4.381.856c.69 1.716.85 3.707.091 5.43-.49 1.368-1.587 2.463-1.874 3.905.73.115 1.468.176 2.21.186 2.166.029 4.332-.42 6.284-1.365-2.04-2.869-4.121-5.755-6.711-8.156zm-4.948.977a.583.583 0 110 1.166.583.583 0 010-1.166zm9.352.37c.138 0 .249.19.249.426s-.111.426-.249.426c-.137 0-.248-.19-.248-.426 0-.235.11-.426.248-.426zm-4.044.184c-.016.112-.033.209-.05.29l-.006.023c-.01.05-.022.094-.033.128-.48 1.417-1.275 2.52-2.36 3.697-.147.16-.301.32-.459.484a58.883 58.883 0 01-1.196 1.205c-.112.11-.259.261-.425.436-.103.287-.22.61-.318.95-.044-.016-.086-.031-.131-.049-2.108-.815-3.519-1.904-3.519-1.904s1.086 1.414 2.915 2.74c.177.129.351.24.522.339-.075 1.194.452 2.34 2.83 2.682a4.81 4.81 0 001.228.008l-.01-.029a.062.062 0 00-.004-.01s-.167-.133-.379-.377a3.842 3.842 0 01-.584-.897 3.382 3.382 0 01-.266-.862 3.176 3.176 0 01-.006-.972c.017-.12.04-.241.072-.366.093-.374.255-.772.507-1.192l.002-.003.241-.404c1.103-1.86 1.797-3.275 1.506-5.441a8.943 8.943 0 00-.078-.476zm4.668.576l.001.008-.001-.008zm.013.203l.003.036v.01c0 .013-.003.025-.003.038 0-.014.003-.028.003-.043 0-.014-.002-.026-.003-.04zm-.012.275v.001l-.002.01-.002.014.004-.025zm1.353 5.928c-2.553 1.138-5.44 1.44-8.192 1.007-.14 1.108.384 2.218 1.214 2.93l.012.01c2.703-.433 4.975-2.168 6.966-3.946z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>PrestaShop</title><path d="M11.558 1.034C5.174 1.034 0 6.21 0 12.592c0 1.258.201 2.47.574 3.597l.002-.007a12.415 12.415 0 01.53-1.787l.011-.03c.085-.222.179-.442.277-.66l.084-.181c.08-.171.165-.34.253-.507.036-.068.07-.136.108-.203.02-.038.044-.073.064-.11.094-.166.19-.332.29-.493l.075-.114c.125-.195.256-.386.393-.573l.035-.05c.144-.193.295-.38.451-.563l.1-.118c.155-.177.315-.35.481-.517l.099-.097a10.321 10.321 0 01.546-.503c.74-2.48 3.005-4.285 5.686-4.285 1.079 0 2.152.31 3.071.873a6.017 6.017 0 012.211 2.407l.007.015.04.074v.003l.004.002a9.925 9.925 0 011.567 1.198c.04.037.081.071.12.109.002 0 .006.005.007.006l-.002-.006-.001-.004v-.003l.042-.084c.377-2.384 1.43-4.102 2.67-4.102.934 0 1.762.975 2.276 2.476l.005.016.001.002c.145.158.287.331.424.521l.007.01.021.067-.02-.078c-1.542-4.569-5.863-7.857-10.952-7.857zM9.927 5.477C7.586 5.52 5.34 7.132 4.574 9.365l-.012.034a10.14 10.14 0 011.315-.895c2.806-1.656 6.479-1.646 9.278.016-.895-1.653-2.631-2.819-4.5-3.004a5.14 5.14 0 00-.728-.039zm9.834.5a1.36 1.36 0 00-.39.067c-1.265.562-1.719 2.073-2.031 3.303l-.016.072c.365-.62.808-1.215 1.396-1.642.835-.687 2.105-.655 2.916.053.308.326.141.008.031-.22-.342-.75-1.025-1.653-1.906-1.634zM21.67 7.98zm-9.32.335l-1.07 3.27-.002.005-.006.002-4.498 1.112h-.009l4.456 1.087c.105.11.227.205.36.28h.002c.042.024.085.045.129.065l.01.005c.041.018.083.033.126.047l.021.008c.04.013.08.023.12.032l.033.008a1.677 1.677 0 00.318.033 1.546 1.546 0 001.43-.948c.08-.186.123-.39.123-.604v-.011l-.001-.012c-.001-.054-.004-.107-.01-.16l-.001-.002a1.506 1.506 0 00-.026-.153l-.001-.004a1.511 1.511 0 00-.096-.288v-.003a1.521 1.521 0 00-.348-.49v-.003zm3.148.626c.048 1.008.036 2.046-.1 3.057-.17 2.018-1.19 3.798-1.972 5.616l-.03.08-.035.086c1.51-1.522 3.17-3.04 3.969-5.082.383-.636.118-1.342-.115-1.976-.17-.877-1.069-1.278-1.717-1.781zm6.172.572l-.588 2.688a1.764 1.764 0 00-.047.2c-.002.02-.007.04-.01.06a1.76 1.76 0 00-.016.222l-.002.031h.003c0 .628.297 1.136.663 1.137a.41.41 0 00.182-.045l.027-.015a.537.537 0 00.07-.047c.013-.01.024-.022.036-.033a.752.752 0 00.137-.168l.03-.054a1.23 1.23 0 00.052-.108l.017-.04c.02-.053.038-.108.053-.166l.002-.002.001-.003.404-.451-.407-.456v.001l-.02-.063zm-4.381.856c.69 1.716.85 3.707.091 5.43-.49 1.368-1.587 2.463-1.874 3.905.73.115 1.468.176 2.21.186 2.166.029 4.332-.42 6.284-1.365-2.04-2.869-4.121-5.755-6.711-8.156zm-4.948.977a.583.583 0 110 1.166.583.583 0 010-1.166zm9.352.37c.138 0 .249.19.249.426s-.111.426-.249.426c-.137 0-.248-.19-.248-.426 0-.235.11-.426.248-.426zm-4.044.184c-.016.112-.033.209-.05.29l-.006.023c-.01.05-.022.094-.033.128-.48 1.417-1.275 2.52-2.36 3.697-.147.16-.301.32-.459.484a58.883 58.883 0 01-1.196 1.205c-.112.11-.259.261-.425.436-.103.287-.22.61-.318.95-.044-.016-.086-.031-.131-.049-2.108-.815-3.519-1.904-3.519-1.904s1.086 1.414 2.915 2.74c.177.129.351.24.522.339-.075 1.194.452 2.34 2.83 2.682a4.81 4.81 0 001.228.008l-.01-.029a.062.062 0 00-.004-.01s-.167-.133-.379-.377a3.842 3.842 0 01-.584-.897 3.382 3.382 0 01-.266-.862 3.176 3.176 0 01-.006-.972c.017-.12.04-.241.072-.366.093-.374.255-.772.507-1.192l.002-.003.241-.404c1.103-1.86 1.797-3.275 1.506-5.441a8.943 8.943 0 00-.078-.476zm4.668.576zm.013.203l.003.036v.01c0 .013-.003.025-.003.038 0-.014.003-.028.003-.043 0-.014-.002-.026-.003-.04zm-.012.275v.001l-.002.01-.002.014.004-.025zm1.353 5.928c-2.553 1.138-5.44 1.44-8.192 1.007-.14 1.108.384 2.218 1.214 2.93l.012.01c2.703-.433 4.975-2.168 6.966-3.946z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/presto.svg b/assets/lib/simple-icons/icons/presto.svg
new file mode 100644
index 00000000..82629236
--- /dev/null
+++ b/assets/lib/simple-icons/icons/presto.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Presto</title><path d="M1.3716 0C.6184 0 .0009.618.0009 1.3724v21.256C.0009 23.3825.6184 24 1.3716 24h21.256c.7545 0 1.3715-.6175 1.3715-1.3716V1.3724c0-.754-.617-1.3724-1.3715-1.3724zm11.9596 4.4849a.854.854 0 0 1 .032 0 .854.854 0 0 1 .854.854.854.854 0 0 1-.854.854.854.854 0 0 1-.854-.854.854.854 0 0 1 .822-.854zm-4.4458.094a.7595.7595 0 0 1 .007 0 .7595.7595 0 0 1 .76.76.7595.7595 0 0 1-.76.759.7595.7595 0 0 1-.759-.759.7595.7595 0 0 1 .752-.76zm-4.4636.095a.6645.6645 0 0 1 .664.665.6645.6645 0 0 1-.664.664.6645.6645 0 0 1-.6649-.664.6645.6645 0 0 1 .665-.665zm11.1766 1.9513a.9486.9486 0 0 1 .949.949.9486.9486 0 0 1-.949.948.9486.9486 0 0 1-.949-.948.9486.9486 0 0 1 .949-.949zm-4.5026.094a.8545.8545 0 0 1 .032 0 .8545.8545 0 0 1 .8549.854.8545.8545 0 0 1-.8549.855.8545.8545 0 0 1-.8549-.855.8545.8545 0 0 1 .823-.854zm-4.4458.095a.7595.7595 0 0 1 .0071 0 .7595.7595 0 0 1 .76.759.7595.7595 0 0 1-.76.76.7595.7595 0 0 1-.759-.76.7595.7595 0 0 1 .752-.759zm11.167 1.9513a1.0436 1.0436 0 0 1 .0177 0 1.0436 1.0436 0 0 1 1.043 1.0431 1.0436 1.0436 0 0 1-1.043 1.044 1.0436 1.0436 0 0 1-1.044-1.044 1.0436 1.0436 0 0 1 1.0262-1.043zm-4.4539.095a.9486.9486 0 0 1 .949.949.9486.9486 0 0 1-.949.9481.9486.9486 0 0 1-.949-.948.9486.9486 0 0 1 .949-.949zm-4.4706.0941a.854.854 0 0 1 .8549.854.854.854 0 0 1-.855.854.854.854 0 0 1-.854-.854.854.854 0 0 1 .854-.854zM20.069 10.906a1.1386 1.1386 0 0 1 1.139 1.139 1.1386 1.1386 0 0 1-1.139 1.138 1.1386 1.1386 0 0 1-1.139-1.138 1.1386 1.1386 0 0 1 1.139-1.139zm-4.4698.095a1.0436 1.0436 0 0 1 1.0431 1.044 1.0436 1.0436 0 0 1-1.043 1.043 1.0436 1.0436 0 0 1-1.044-1.043 1.0436 1.0436 0 0 1 1.044-1.044zm-4.4715.094a.949.949 0 0 1 .9499.949.949.949 0 0 1-.9499.949.949.949 0 0 1-.949-.949.949.949 0 0 1 .949-.949zm6.706 2.0463a1.1386 1.1386 0 0 1 1.139 1.139 1.1386 1.1386 0 0 1-1.139 1.138 1.1386 1.1386 0 0 1-1.139-1.138 1.1386 1.1386 0 0 1 1.139-1.139zm-4.4884.095a1.0436 1.0436 0 0 1 .0177 0 1.0436 1.0436 0 0 1 1.044 1.043 1.0436 1.0436 0 0 1-1.044 1.044 1.0436 1.0436 0 0 1-1.044-1.044 1.0436 1.0436 0 0 1 1.0263-1.043zm-4.46.284a.7595.7595 0 0 1 .007 0 .7595.7595 0 0 1 .76.759.7595.7595 0 0 1-.76.76.7595.7595 0 0 1-.759-.76.7595.7595 0 0 1 .752-.759zm6.6793 1.8563a1.1386 1.1386 0 0 1 .0337 0 1.1386 1.1386 0 0 1 1.139 1.138 1.1386 1.1386 0 0 1-1.139 1.139 1.1386 1.1386 0 0 1-1.139-1.139 1.1386 1.1386 0 0 1 1.1053-1.138zm-8.9146.379a.7595.7595 0 0 1 .007 0 .7595.7595 0 0 1 .76.759.7595.7595 0 0 1-.76.76.7595.7595 0 0 1-.759-.76.7595.7595 0 0 1 .752-.759zm4.4706 0a.7595.7595 0 0 1 .0071 0 .7595.7595 0 0 1 .76.759.7595.7595 0 0 1-.76.76.7595.7595 0 0 1-.759-.76.7595.7595 0 0 1 .7519-.759zM4.4157 17.99a.7595.7595 0 0 1 .007 0 .7595.7595 0 0 1 .76.76.7595.7595 0 0 1-.76.759.7595.7595 0 0 1-.7599-.759.7595.7595 0 0 1 .7528-.76zm4.4697.0009a.7595.7595 0 0 1 .007 0 .7595.7595 0 0 1 .76.759.7595.7595 0 0 1-.76.76.7595.7595 0 0 1-.759-.76.7595.7595 0 0 1 .752-.759zm4.4777.0009a.7591.7591 0 0 1 .538.222c.2954.2963.2954.7773 0 1.0732a.7603.7603 0 0 1-1.075 0c-.296-.2959-.296-.777 0-1.0733a.7563.7563 0 0 1 .537-.222Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/prettier.svg b/assets/lib/simple-icons/icons/prettier.svg
index 018b3859..5f0950a9 100644
--- a/assets/lib/simple-icons/icons/prettier.svg
+++ b/assets/lib/simple-icons/icons/prettier.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Prettier icon</title><path d="M8.571 23.429A.571.571 0 0 1 8 24H2.286a.571.571 0 0 1 0-1.143H8c.316 0 .571.256.571.572zM8 20.57H6.857a.571.571 0 0 0 0 1.143H8a.571.571 0 0 0 0-1.143zm-5.714 1.143H4.57a.571.571 0 0 0 0-1.143H2.286a.571.571 0 0 0 0 1.143zM8 18.286H2.286a.571.571 0 0 0 0 1.143H8a.571.571 0 0 0 0-1.143zM16 16H5.714a.571.571 0 0 0 0 1.143H16A.571.571 0 0 0 16 16zM2.286 17.143h1.143a.571.571 0 0 0 0-1.143H2.286a.571.571 0 0 0 0 1.143zm17.143-3.429H16a.571.571 0 0 0 0 1.143h3.429a.571.571 0 0 0 0-1.143zM9.143 14.857h4.571a.571.571 0 0 0 0-1.143H9.143a.571.571 0 0 0 0 1.143zm-6.857 0h4.571a.571.571 0 0 0 0-1.143H2.286a.571.571 0 0 0 0 1.143zM20.57 11.43H11.43a.571.571 0 0 0 0 1.142h9.142a.571.571 0 0 0 0-1.142zM9.714 12a.571.571 0 0 0-.571-.571H5.714a.571.571 0 0 0 0 1.142h3.429A.571.571 0 0 0 9.714 12zm-7.428.571h1.143a.571.571 0 0 0 0-1.142H2.286a.571.571 0 0 0 0 1.142zm19.428-3.428H16a.571.571 0 0 0 0 1.143h5.714a.571.571 0 0 0 0-1.143zM2.286 10.286H8a.571.571 0 0 0 0-1.143H2.286a.571.571 0 0 0 0 1.143zm13.143-2.857c0 .315.255.571.571.571h5.714a.571.571 0 0 0 0-1.143H16a.571.571 0 0 0-.571.572zm-8.572-.572a.571.571 0 0 0 0 1.143H8a.571.571 0 0 0 0-1.143H6.857zM2.286 8H4.57a.571.571 0 0 0 0-1.143H2.286a.571.571 0 0 0 0 1.143zm16.571-2.857c0 .315.256.571.572.571h1.142a.571.571 0 0 0 0-1.143H19.43a.571.571 0 0 0-.572.572zm-1.143 0a.571.571 0 0 0-.571-.572H12.57a.571.571 0 0 0 0 1.143h4.572a.571.571 0 0 0 .571-.571zm-15.428.571h8a.571.571 0 0 0 0-1.143h-8a.571.571 0 0 0 0 1.143zm5.143-2.857c0 .316.255.572.571.572h11.429a.571.571 0 0 0 0-1.143H8a.571.571 0 0 0-.571.571zm-5.143.572h3.428a.571.571 0 0 0 0-1.143H2.286a.571.571 0 0 0 0 1.143zm0-2.286H16A.571.571 0 0 0 16 0H2.286a.571.571 0 0 0 0 1.143z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Prettier</title><path d="M8.571 23.429A.571.571 0 0 1 8 24H2.286a.571.571 0 0 1 0-1.143H8c.316 0 .571.256.571.572zM8 20.57H6.857a.571.571 0 0 0 0 1.143H8a.571.571 0 0 0 0-1.143zm-5.714 1.143H4.57a.571.571 0 0 0 0-1.143H2.286a.571.571 0 0 0 0 1.143zM8 18.286H2.286a.571.571 0 0 0 0 1.143H8a.571.571 0 0 0 0-1.143zM16 16H5.714a.571.571 0 0 0 0 1.143H16A.571.571 0 0 0 16 16zM2.286 17.143h1.143a.571.571 0 0 0 0-1.143H2.286a.571.571 0 0 0 0 1.143zm17.143-3.429H16a.571.571 0 0 0 0 1.143h3.429a.571.571 0 0 0 0-1.143zM9.143 14.857h4.571a.571.571 0 0 0 0-1.143H9.143a.571.571 0 0 0 0 1.143zm-6.857 0h4.571a.571.571 0 0 0 0-1.143H2.286a.571.571 0 0 0 0 1.143zM20.57 11.43H11.43a.571.571 0 0 0 0 1.142h9.142a.571.571 0 0 0 0-1.142zM9.714 12a.571.571 0 0 0-.571-.571H5.714a.571.571 0 0 0 0 1.142h3.429A.571.571 0 0 0 9.714 12zm-7.428.571h1.143a.571.571 0 0 0 0-1.142H2.286a.571.571 0 0 0 0 1.142zm19.428-3.428H16a.571.571 0 0 0 0 1.143h5.714a.571.571 0 0 0 0-1.143zM2.286 10.286H8a.571.571 0 0 0 0-1.143H2.286a.571.571 0 0 0 0 1.143zm13.143-2.857c0 .315.255.571.571.571h5.714a.571.571 0 0 0 0-1.143H16a.571.571 0 0 0-.571.572zm-8.572-.572a.571.571 0 0 0 0 1.143H8a.571.571 0 0 0 0-1.143H6.857zM2.286 8H4.57a.571.571 0 0 0 0-1.143H2.286a.571.571 0 0 0 0 1.143zm16.571-2.857c0 .315.256.571.572.571h1.142a.571.571 0 0 0 0-1.143H19.43a.571.571 0 0 0-.572.572zm-1.143 0a.571.571 0 0 0-.571-.572H12.57a.571.571 0 0 0 0 1.143h4.572a.571.571 0 0 0 .571-.571zm-15.428.571h8a.571.571 0 0 0 0-1.143h-8a.571.571 0 0 0 0 1.143zm5.143-2.857c0 .316.255.572.571.572h11.429a.571.571 0 0 0 0-1.143H8a.571.571 0 0 0-.571.571zm-5.143.572h3.428a.571.571 0 0 0 0-1.143H2.286a.571.571 0 0 0 0 1.143zm0-2.286H16A.571.571 0 0 0 16 0H2.286a.571.571 0 0 0 0 1.143z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/prezi.svg b/assets/lib/simple-icons/icons/prezi.svg
index 701ce45a..5c38bd11 100644
--- a/assets/lib/simple-icons/icons/prezi.svg
+++ b/assets/lib/simple-icons/icons/prezi.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Prezi icon</title><path d="M11.996 0c-.21 0-.42.005-.63.015l.134 2.547c.333-.02.66-.013.987 0L12.62.015A12.92 12.92 0 0011.996 0zm-1.89.148c-.413.067-.826.154-1.22.26l.667 2.467c.32-.086.64-.153.973-.206zm3.761 0l-.387 2.52c.334.054.66.12.974.207L15.1.408a12.652 12.652 0 00-1.233-.26zM7.699.795c-.393.154-.773.32-1.146.514l1.166 2.273c.294-.147.594-.28.894-.4zm8.608.007l-.92 2.38c.314.12.62.254.914.407l1.146-2.28c-.366-.187-.746-.36-1.14-.507zM5.46 1.935c-.353.227-.693.474-1.02.74l1.607 1.98c.26-.2.527-.4.807-.58zm13.062 0l-1.38 2.147c.28.18.547.374.8.58l1.62-1.973c-.333-.267-.68-.52-1.04-.754zm-6.528 1.56c-1.167 0-2.253.22-3.32.674a8.349 8.349 0 00-2.707 1.82 8.339 8.339 0 00-1.807 2.714c-.467 1.04-.674 2.14-.674 3.307 0 1.154.207 2.254.674 3.307a8.536 8.536 0 001.807 2.7 8.393 8.393 0 002.7 1.82 8.494 8.494 0 003.32.674 8.357 8.357 0 003.308-.673 8.748 8.748 0 002.714-1.82 8.462 8.462 0 001.806-2.7c.46-1.054.687-2.161.687-3.308a7.963 7.963 0 00-.68-3.307c-.413-1.04-1.04-1.934-1.807-2.714a8.633 8.633 0 00-2.713-1.82 8.358 8.358 0 00-3.308-.673zm8.495.027l-1.814 1.794c.234.24.46.487.674.753l1.98-1.62c-.26-.327-.547-.633-.84-.927zm-16.99.007c-.292.293-.566.6-.826.92l1.994 1.6c.2-.253.42-.493.653-.727zm8.489.667c1.066 0 2.073.193 3.033.606.947.4 1.76.96 2.474 1.68.72.72 1.28 1.548 1.68 2.474a7.7 7.7 0 01.627 3.054 7.67 7.67 0 01-.62 3.034c-.4.927-.96 1.76-1.68 2.48a7.748 7.748 0 01-2.474 1.68c-.96.4-1.967.607-3.034.607a7.848 7.848 0 01-3.033-.607c-.947-.4-1.76-.96-2.494-1.68a7.756 7.756 0 01-1.66-2.48 7.657 7.657 0 01-.607-3.034c0-1.073.193-2.08.607-3.054.386-.926.96-1.76 1.66-2.473a7.878 7.878 0 012.487-1.68 7.61 7.61 0 013.034-.607zm0 .686c-1.967 0-3.64.7-5.021 2.094-1.407 1.387-2.094 3.067-2.094 5.034 0 1.947.687 3.627 2.094 5 1.374 1.388 3.054 2.094 5.02 2.094 1.948 0 3.628-.706 5.021-2.093 1.394-1.374 2.074-3.054 2.074-5.001 0-1.967-.687-3.647-2.074-5.034-1.393-1.387-3.067-2.094-5.02-2.094zm10.074.587l-2.14 1.394c.187.273.347.56.494.853l2.273-1.167c-.187-.373-.4-.733-.627-1.08zm-20.136.007c-.226.353-.44.713-.633 1.093l2.274 1.16c.16-.306.326-.593.506-.873zm10.062.106c1.76 0 3.273.62 4.54 1.887 1.247 1.247 1.854 2.747 1.854 4.541 0 1.76-.607 3.274-1.854 4.52-1.26 1.248-2.78 1.868-4.54 1.868-1.774 0-3.294-.62-4.52-1.867-1.261-1.247-1.888-2.767-1.888-4.521 0-1.787.627-3.294 1.887-4.54 1.234-1.26 2.747-1.888 4.52-1.888zm0 .72c-1.567 0-2.927.547-4.04 1.66-1.121 1.121-1.661 2.461-1.661 4.041 0 1.567.54 2.907 1.66 4.028 1.12 1.12 2.474 1.68 4.04 1.68 1.58 0 2.908-.56 4.028-1.674 1.12-1.12 1.68-2.46 1.68-4.027 0-1.58-.56-2.927-1.68-4.04-1.12-1.12-2.44-1.667-4.027-1.667zM12 7.01c.086 0 .172.002.259.006 1.36.067 2.507.627 3.434 1.647.927 1.013 1.36 2.213 1.28 3.587-.047 1.387-.607 2.54-1.627 3.467-1.04.927-2.24 1.36-3.614 1.28-1.386-.08-2.54-.62-3.467-1.626-.913-1.04-1.34-2.234-1.28-3.628.08-1.373.62-2.527 1.66-3.447.944-.869 2.07-1.286 3.355-1.286zm11.2.68l-2.386.926c.12.3.22.614.306.934l2.467-.654c-.106-.413-.24-.813-.386-1.207zM.786 7.71c-.147.386-.28.78-.387 1.186l2.467.66c.087-.32.194-.633.307-.94zm11.222.133c-.16 0-.314.013-.467.026v8.262h.007c.14.033.3.033.46.033.16 0 .32 0 .46-.033h.006V7.869c-.153-.013-.306-.026-.466-.026zm-1.407.233a4.03 4.03 0 00-.927.467v6.907c.007.007.013.007.02.014.28.187.593.347.907.453zm2.814.007v7.841a3.978 3.978 0 00.926-.467v-6.9c-.293-.2-.6-.36-.926-.474zm-4.668 1.32a4.031 4.031 0 00-.907 2.594c0 .726.16 1.393.494 1.967.12.226.253.433.413.633zm6.521.013v5.174c.16-.193.294-.406.414-.613.32-.587.473-1.254.473-1.967 0-.987-.287-1.854-.887-2.594zm-15.129.707c-.06.414-.106.827-.126 1.247l2.547.133c.02-.333.053-.66.106-.987zm23.71 0l-2.52.4c.047.327.087.654.107.987v.007l2.547-.134v-.006c-.02-.427-.067-.84-.134-1.254zm-2.407 2.367c-.026.34-.06.674-.113 1l2.527.394c.067-.414.107-.834.133-1.26zm-18.876.013l-2.547.134c.02.42.067.827.127 1.227l2.52-.4a7.306 7.306 0 01-.1-.96zm18.563 1.947c-.087.32-.193.634-.307.94l2.387.914c.147-.393.28-.793.394-1.207zm-18.256.014l-2.467.653c.107.407.233.8.38 1.187l2.387-.9a12.78 12.78 0 01-.3-.94zm.7 1.827L1.3 17.458c.186.366.393.726.62 1.073l2.147-1.38c-.174-.274-.34-.56-.494-.86zm16.843.006a8.34 8.34 0 01-.494.854l2.14 1.393c.227-.353.44-.72.634-1.093zm-15.77 1.64l-1.98 1.614c.267.327.547.64.84.934l1.814-1.8a9.07 9.07 0 01-.673-.747zm14.683.014c-.2.26-.42.507-.654.733l1.8 1.807c.3-.3.58-.613.847-.94zm-13.276 1.4l-1.613 1.98c.327.267.667.514 1.02.74l1.4-2.133c-.28-.187-.546-.38-.807-.587zm11.882 0a8.39 8.39 0 01-.78.574l1.38 2.146c.354-.233.694-.48 1.02-.74zM7.706 20.425l-1.16 2.273c.373.187.76.36 1.153.514l.9-2.387a9.83 9.83 0 01-.893-.4zm8.588 0c-.293.146-.594.28-.9.393l.9 2.394c.4-.154.78-.327 1.16-.514zm-6.734.706l-.667 2.467c.4.107.807.194 1.22.26l.407-2.52a9.09 9.09 0 01-.96-.207zm4.887 0c-.32.087-.647.154-.973.207l.4 2.52a12.52 12.52 0 001.226-.26zm-2.94.307l-.147 2.547c.42.02.84.02 1.267 0l-.134-2.547c-.333.02-.66.02-.986 0Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Prezi</title><path d="M11.996 0c-.21 0-.42.005-.63.015l.134 2.547c.333-.02.66-.013.987 0L12.62.015A12.92 12.92 0 0011.996 0zm-1.89.148c-.413.067-.826.154-1.22.26l.667 2.467c.32-.086.64-.153.973-.206zm3.761 0l-.387 2.52c.334.054.66.12.974.207L15.1.408a12.652 12.652 0 00-1.233-.26zM7.699.795c-.393.154-.773.32-1.146.514l1.166 2.273c.294-.147.594-.28.894-.4zm8.608.007l-.92 2.38c.314.12.62.254.914.407l1.146-2.28c-.366-.187-.746-.36-1.14-.507zM5.46 1.935c-.353.227-.693.474-1.02.74l1.607 1.98c.26-.2.527-.4.807-.58zm13.062 0l-1.38 2.147c.28.18.547.374.8.58l1.62-1.973c-.333-.267-.68-.52-1.04-.754zm-6.528 1.56c-1.167 0-2.253.22-3.32.674a8.349 8.349 0 00-2.707 1.82 8.339 8.339 0 00-1.807 2.714c-.467 1.04-.674 2.14-.674 3.307 0 1.154.207 2.254.674 3.307a8.536 8.536 0 001.807 2.7 8.393 8.393 0 002.7 1.82 8.494 8.494 0 003.32.674 8.357 8.357 0 003.308-.673 8.748 8.748 0 002.714-1.82 8.462 8.462 0 001.806-2.7c.46-1.054.687-2.161.687-3.308a7.963 7.963 0 00-.68-3.307c-.413-1.04-1.04-1.934-1.807-2.714a8.633 8.633 0 00-2.713-1.82 8.358 8.358 0 00-3.308-.673zm8.495.027l-1.814 1.794c.234.24.46.487.674.753l1.98-1.62c-.26-.327-.547-.633-.84-.927zm-16.99.007c-.292.293-.566.6-.826.92l1.994 1.6c.2-.253.42-.493.653-.727zm8.489.667c1.066 0 2.073.193 3.033.606.947.4 1.76.96 2.474 1.68.72.72 1.28 1.548 1.68 2.474a7.7 7.7 0 01.627 3.054 7.67 7.67 0 01-.62 3.034c-.4.927-.96 1.76-1.68 2.48a7.748 7.748 0 01-2.474 1.68c-.96.4-1.967.607-3.034.607a7.848 7.848 0 01-3.033-.607c-.947-.4-1.76-.96-2.494-1.68a7.756 7.756 0 01-1.66-2.48 7.657 7.657 0 01-.607-3.034c0-1.073.193-2.08.607-3.054.386-.926.96-1.76 1.66-2.473a7.878 7.878 0 012.487-1.68 7.61 7.61 0 013.034-.607zm0 .686c-1.967 0-3.64.7-5.021 2.094-1.407 1.387-2.094 3.067-2.094 5.034 0 1.947.687 3.627 2.094 5 1.374 1.388 3.054 2.094 5.02 2.094 1.948 0 3.628-.706 5.021-2.093 1.394-1.374 2.074-3.054 2.074-5.001 0-1.967-.687-3.647-2.074-5.034-1.393-1.387-3.067-2.094-5.02-2.094zm10.074.587l-2.14 1.394c.187.273.347.56.494.853l2.273-1.167c-.187-.373-.4-.733-.627-1.08zm-20.136.007c-.226.353-.44.713-.633 1.093l2.274 1.16c.16-.306.326-.593.506-.873zm10.062.106c1.76 0 3.273.62 4.54 1.887 1.247 1.247 1.854 2.747 1.854 4.541 0 1.76-.607 3.274-1.854 4.52-1.26 1.248-2.78 1.868-4.54 1.868-1.774 0-3.294-.62-4.52-1.867-1.261-1.247-1.888-2.767-1.888-4.521 0-1.787.627-3.294 1.887-4.54 1.234-1.26 2.747-1.888 4.52-1.888zm0 .72c-1.567 0-2.927.547-4.04 1.66-1.121 1.121-1.661 2.461-1.661 4.041 0 1.567.54 2.907 1.66 4.028 1.12 1.12 2.474 1.68 4.04 1.68 1.58 0 2.908-.56 4.028-1.674 1.12-1.12 1.68-2.46 1.68-4.027 0-1.58-.56-2.927-1.68-4.04-1.12-1.12-2.44-1.667-4.027-1.667zM12 7.01c.086 0 .172.002.259.006 1.36.067 2.507.627 3.434 1.647.927 1.013 1.36 2.213 1.28 3.587-.047 1.387-.607 2.54-1.627 3.467-1.04.927-2.24 1.36-3.614 1.28-1.386-.08-2.54-.62-3.467-1.626-.913-1.04-1.34-2.234-1.28-3.628.08-1.373.62-2.527 1.66-3.447.944-.869 2.07-1.286 3.355-1.286zm11.2.68l-2.386.926c.12.3.22.614.306.934l2.467-.654c-.106-.413-.24-.813-.386-1.207zM.786 7.71c-.147.386-.28.78-.387 1.186l2.467.66c.087-.32.194-.633.307-.94zm11.222.133c-.16 0-.314.013-.467.026v8.262h.007c.14.033.3.033.46.033.16 0 .32 0 .46-.033h.006V7.869c-.153-.013-.306-.026-.466-.026zm-1.407.233a4.03 4.03 0 00-.927.467v6.907c.007.007.013.007.02.014.28.187.593.347.907.453zm2.814.007v7.841a3.978 3.978 0 00.926-.467v-6.9c-.293-.2-.6-.36-.926-.474zm-4.668 1.32a4.031 4.031 0 00-.907 2.594c0 .726.16 1.393.494 1.967.12.226.253.433.413.633zm6.521.013v5.174c.16-.193.294-.406.414-.613.32-.587.473-1.254.473-1.967 0-.987-.287-1.854-.887-2.594zm-15.129.707c-.06.414-.106.827-.126 1.247l2.547.133c.02-.333.053-.66.106-.987zm23.71 0l-2.52.4c.047.327.087.654.107.987v.007l2.547-.134v-.006c-.02-.427-.067-.84-.134-1.254zm-2.407 2.367c-.026.34-.06.674-.113 1l2.527.394c.067-.414.107-.834.133-1.26zm-18.876.013l-2.547.134c.02.42.067.827.127 1.227l2.52-.4a7.306 7.306 0 01-.1-.96zm18.563 1.947c-.087.32-.193.634-.307.94l2.387.914c.147-.393.28-.793.394-1.207zm-18.256.014l-2.467.653c.107.407.233.8.38 1.187l2.387-.9a12.78 12.78 0 01-.3-.94zm.7 1.827L1.3 17.458c.186.366.393.726.62 1.073l2.147-1.38c-.174-.274-.34-.56-.494-.86zm16.843.006a8.34 8.34 0 01-.494.854l2.14 1.393c.227-.353.44-.72.634-1.093zm-15.77 1.64l-1.98 1.614c.267.327.547.64.84.934l1.814-1.8a9.07 9.07 0 01-.673-.747zm14.683.014c-.2.26-.42.507-.654.733l1.8 1.807c.3-.3.58-.613.847-.94zm-13.276 1.4l-1.613 1.98c.327.267.667.514 1.02.74l1.4-2.133c-.28-.187-.546-.38-.807-.587zm11.882 0a8.39 8.39 0 01-.78.574l1.38 2.146c.354-.233.694-.48 1.02-.74zM7.706 20.425l-1.16 2.273c.373.187.76.36 1.153.514l.9-2.387a9.83 9.83 0 01-.893-.4zm8.588 0c-.293.146-.594.28-.9.393l.9 2.394c.4-.154.78-.327 1.16-.514zm-6.734.706l-.667 2.467c.4.107.807.194 1.22.26l.407-2.52a9.09 9.09 0 01-.96-.207zm4.887 0c-.32.087-.647.154-.973.207l.4 2.52a12.52 12.52 0 001.226-.26zm-2.94.307l-.147 2.547c.42.02.84.02 1.267 0l-.134-2.547c-.333.02-.66.02-.986 0Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/prime.svg b/assets/lib/simple-icons/icons/prime.svg
new file mode 100644
index 00000000..a6c3f780
--- /dev/null
+++ b/assets/lib/simple-icons/icons/prime.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Prime</title><path d="M22.787 15.292c-.336-.43-2.222-.204-3.069-.103-.257.031-.296-.193-.065-.356 1.504-1.056 3.968-.75 4.255-.397.288.357-.076 2.827-1.485 4.007-.217.18-.423.084-.327-.155.317-.792 1.027-2.566.69-2.996m-1.093 1.248c-2.627 1.94-6.437 2.97-9.717 2.97-4.597 0-8.737-1.7-11.87-4.528-.246-.222-.026-.525.27-.353 3.38 1.967 7.559 3.151 11.876 3.151a23.63 23.63 0 0 0 9.06-1.854c.444-.188.816.293.381.614m.482-5.038c-.761 0-1.346-.209-1.755-.626-.409-.418-.613-1.017-.613-1.797 0-.799.209-1.425.627-1.88.418-.454.998-.682 1.741-.682.572 0 1.019.138 1.341.415.323.276.484.645.484 1.105 0 .461-.174.81-.52 1.046-.348.237-.86.355-1.535.355-.35 0-.654-.034-.912-.101.037.411.161.706.373.884.212.178.533.268.963.268.172 0 .34-.011.502-.033a6.208 6.208 0 0 0 .733-.157.304.304 0 0 1 .046-.004c.104 0 .156.07.156.212v.424c0 .098-.013.167-.04.207a.341.341 0 0 1-.162.106 3.954 3.954 0 0 1-1.429.258m-.304-2.893c.314 0 .541-.048.682-.143.142-.095.212-.241.212-.438 0-.387-.23-.58-.69-.58-.59 0-.931.362-1.024 1.087.246.05.52.074.82.074m-9.84 2.755c-.08 0-.139-.018-.176-.055-.036-.037-.055-.096-.055-.175V6.886c0-.086.019-.146.055-.18.037-.034.096-.05.176-.05h.663c.141 0 .227.067.258.202l.074.249c.325-.215.619-.367.88-.456.26-.09.53-.134.806-.134.553 0 .943.197 1.17.59a3.77 3.77 0 0 1 .885-.452c.276-.092.562-.138.857-.138.43 0 .763.12 1 .36.236.239.354.574.354 1.004v3.253c0 .08-.017.138-.05.175-.034.037-.094.055-.18.055h-.885c-.08 0-.138-.018-.175-.055-.037-.037-.055-.096-.055-.175V8.176c0-.418-.188-.627-.562-.627-.332 0-.667.08-1.005.24v3.345c0 .08-.017.138-.05.175-.034.037-.094.055-.18.055h-.884c-.08 0-.139-.018-.176-.055-.036-.037-.055-.096-.055-.175V8.176c0-.418-.187-.627-.562-.627-.344 0-.682.083-1.013.249v3.336c0 .08-.017.138-.051.175-.034.037-.094.055-.18.055zM9.987 5.927c-.234 0-.42-.064-.562-.193-.142-.129-.212-.304-.212-.525 0-.221.07-.397.212-.526.141-.129.328-.193.562-.193.233 0 .42.064.562.193a.676.676 0 0 1 .212.526c0 .22-.07.396-.212.525-.141.129-.329.193-.562.193m-.443 5.437c-.08 0-.138-.019-.175-.055-.037-.037-.055-.096-.055-.176V6.886c0-.086.018-.146.055-.18.037-.034.096-.05.175-.05h.885c.086 0 .146.016.18.05s.05.094.05.18v4.247c0 .08-.017.139-.05.176-.034.036-.094.055-.18.055zm-3.681 0c-.08 0-.139-.018-.176-.055-.036-.037-.055-.096-.055-.175V6.886c0-.086.019-.146.055-.18.037-.034.096-.05.176-.05h.663c.141 0 .227.067.258.202l.12.497c.245-.27.477-.462.695-.575.219-.114.45-.17.696-.17h.13c.085 0 .147.016.183.05.037.034.056.094.056.18v.773c0 .08-.017.139-.051.176-.034.036-.094.055-.18.055a1.93 1.93 0 0 1-.166-.01 2.968 2.968 0 0 0-.258-.009c-.14 0-.313.02-.516.06-.202.04-.374.091-.515.152v3.097c0 .08-.018.138-.051.175-.034.037-.094.055-.18.055zM.344 13.262c-.08 0-.138-.017-.175-.05-.037-.034-.055-.095-.055-.18V6.886c0-.086.018-.146.055-.18.037-.034.095-.05.175-.05h.664c.14 0 .227.067.258.202l.064.24a2.03 2.03 0 0 1 .668-.424 2.13 2.13 0 0 1 .797-.157c.596 0 1.067.218 1.414.654.348.437.521 1.026.521 1.77 0 .51-.086.955-.258 1.336-.172.38-.405.674-.7.88a1.727 1.727 0 0 1-1.014.308c-.252 0-.491-.04-.719-.12a1.74 1.74 0 0 1-.58-.331v2.018c0 .085-.017.146-.05.18-.034.033-.095.05-.18.05zm2.018-2.81c.344 0 .597-.117.76-.35.163-.234.245-.603.245-1.106 0-.51-.08-.882-.24-1.115-.16-.234-.415-.35-.765-.35-.32 0-.62.083-.903.248v2.424c.27.166.571.249.903.249Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/primevideo.svg b/assets/lib/simple-icons/icons/primevideo.svg
new file mode 100644
index 00000000..3dffd474
--- /dev/null
+++ b/assets/lib/simple-icons/icons/primevideo.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Prime Video</title><path d="M0 9.508c0-.043.01-.073.028-.09.018-.017.047-.025.086-.025h.329c.07 0 .112.034.127.101l.032.119c.091-.088.202-.159.33-.21a1.04 1.04 0 0 1 .396-.079c.294 0 .528.109.7.326.171.217.257.51.257.88 0 .254-.042.475-.127.665-.086.19-.201.335-.347.437a.85.85 0 0 1-.502.154c-.125 0-.243-.02-.355-.06a.857.857 0 0 1-.288-.164v1.003c0 .043-.008.073-.025.09-.017.016-.046.025-.09.025H.115c-.04 0-.068-.009-.086-.025-.019-.017-.028-.047-.028-.09zm1.113.32a.868.868 0 0 0-.447.124v1.206a.834.834 0 0 0 .447.124c.17 0 .296-.058.376-.174.081-.117.121-.3.121-.55 0-.254-.04-.439-.118-.555-.08-.116-.206-.174-.379-.174zm2.248-.087c.121-.134.236-.23.344-.286a.733.733 0 0 1 .345-.085h.063c.043 0 .073.009.092.025.018.017.027.047.027.09v.385c0 .04-.008.068-.025.087-.017.018-.046.027-.089.027a.923.923 0 0 1-.082-.004 1.369 1.369 0 0 0-.383.025c-.1.02-.186.045-.256.076v1.54c0 .04-.008.069-.025.087-.016.018-.046.028-.089.028h-.437c-.04 0-.069-.01-.087-.028-.018-.018-.028-.047-.028-.087V9.508c0-.043.01-.073.028-.09.018-.017.047-.025.087-.025h.328c.07 0 .112.034.128.1zm1.526-.71a.396.396 0 0 1-.278-.096.338.338 0 0 1-.105-.262c0-.11.035-.197.105-.26a.395.395 0 0 1 .278-.097c.116 0 .208.032.278.096.07.064.105.151.105.261a.34.34 0 0 1-.105.262.396.396 0 0 1-.278.096zm-.333.477c0-.043.01-.073.027-.09.019-.017.048-.025.087-.025h.438c.043 0 .072.008.089.025s.025.047.025.09v2.113c0 .04-.008.069-.025.087-.017.018-.046.028-.09.028h-.437c-.04 0-.068-.01-.087-.028-.018-.018-.027-.047-.027-.087zm1.837.11c.161-.107.306-.183.435-.227.13-.045.263-.067.4-.067.273 0 .466.098.579.294.155-.104.3-.18.438-.225.137-.046.278-.069.424-.069.213 0 .377.06.495.179.117.12.175.286.175.5v1.618c0 .04-.008.069-.025.087-.017.019-.046.027-.089.027h-.438c-.04 0-.068-.008-.086-.027-.018-.018-.028-.047-.028-.087V10.15c0-.208-.092-.312-.278-.312-.164 0-.33.04-.497.119v1.664c0 .04-.008.069-.025.087-.017.019-.046.027-.09.027h-.437c-.04 0-.068-.008-.086-.027-.019-.018-.028-.047-.028-.087V10.15c0-.208-.093-.312-.278-.312-.17 0-.337.04-.502.123v1.66c0 .04-.008.069-.025.087-.017.019-.046.027-.089.027h-.438c-.039 0-.068-.008-.086-.027-.018-.018-.027-.047-.027-.087V9.508c0-.043.009-.073.027-.09.018-.017.047-.025.086-.025h.329c.07 0 .112.034.128.101zm4.387 1.16a1.81 1.81 0 0 1-.451-.05c.018.204.08.35.185.44.105.088.263.132.476.132.085 0 .168-.005.249-.016a3.08 3.08 0 0 0 .362-.078.143.143 0 0 1 .023-.002c.052 0 .078.035.078.105v.211c0 .049-.007.083-.02.103a.169.169 0 0 1-.08.053 1.953 1.953 0 0 1-.708.128c-.377 0-.666-.103-.868-.312-.203-.207-.304-.505-.304-.893 0-.398.104-.71.31-.935.207-.227.494-.34.862-.34.283 0 .504.069.664.206a.69.69 0 0 1 .24.55c0 .23-.087.403-.258.52-.172.119-.425.177-.76.177zm.064-.99c-.292 0-.46.18-.506.54.122.025.257.037.406.037.155 0 .267-.024.337-.071.07-.047.105-.12.105-.218 0-.193-.114-.289-.342-.289zm2.948 1.946a.21.21 0 0 1-.075-.011.119.119 0 0 1-.05-.037.274.274 0 0 1-.038-.071l-.777-2.04a1.863 1.863 0 0 1-.023-.063.162.162 0 0 1-.009-.05c0-.047.03-.07.091-.07h.454c.049 0 .084.01.107.028.023.018.04.049.052.092l.468 1.622.477-1.622a.175.175 0 0 1 .052-.092c.023-.018.058-.027.107-.027h.44c.061 0 .091.022.091.068a.16.16 0 0 1-.009.05l-.022.065-.777 2.039a.274.274 0 0 1-.039.07.122.122 0 0 1-.047.038.207.207 0 0 1-.078.01zm2.02-2.703a.393.393 0 0 1-.277-.097.338.338 0 0 1-.105-.26c0-.11.035-.198.105-.262a.393.393 0 0 1 .277-.096c.115 0 .207.032.277.096.07.064.104.151.104.261 0 .11-.034.197-.104.261a.393.393 0 0 1-.277.097zm-.218 2.703c-.04 0-.068-.01-.086-.028-.019-.018-.028-.047-.028-.087V9.507c0-.043.01-.072.028-.09.018-.016.047-.024.086-.024h.436c.042 0 .072.008.089.025.016.017.024.046.024.09v2.111c0 .04-.008.07-.024.087-.017.019-.047.028-.09.028zm1.948.05a.869.869 0 0 1-.513-.153.97.97 0 0 1-.334-.426 1.6 1.6 0 0 1-.116-.63c0-.38.09-.682.268-.91a.856.856 0 0 1 .709-.341.98.98 0 0 1 .622.206V8.458c0-.043.01-.073.027-.09.018-.016.047-.025.087-.025h.436c.042 0 .071.009.088.025.017.017.025.047.025.09v3.161c0 .04-.008.07-.025.087-.017.019-.046.028-.088.028h-.364a.135.135 0 0 1-.084-.023.137.137 0 0 1-.043-.078l-.027-.105a.958.958 0 0 1-.668.256zm.218-.504a.762.762 0 0 0 .418-.128v-1.21a.872.872 0 0 0-.45-.114c-.16 0-.28.06-.358.18-.08.121-.118.304-.118.548 0 .245.041.426.124.546.084.119.212.178.384.178zm2.588-.51c-.169 0-.315-.016-.44-.05.018.201.078.345.18.432.103.087.257.13.465.13.083 0 .164-.005.242-.016a2.997 2.997 0 0 0 .354-.076.135.135 0 0 1 .022-.002c.05 0 .075.035.075.103v.207c0 .048-.007.082-.02.101a.165.165 0 0 1-.077.052 1.895 1.895 0 0 1-.69.126c-.367 0-.65-.102-.846-.306-.197-.204-.296-.496-.296-.876 0-.39.1-.695.302-.917.202-.222.482-.333.84-.333.276 0 .492.068.647.203a.678.678 0 0 1 .234.539c0 .225-.084.395-.251.51-.168.115-.415.173-.74.173zm.063-.97c-.285 0-.45.176-.494.53.119.024.25.036.396.036.15 0 .26-.024.329-.07.068-.046.102-.117.102-.213 0-.19-.111-.284-.333-.284zm2.442 2.003c-.36 0-.642-.11-.845-.328-.203-.218-.304-.523-.304-.914 0-.388.101-.691.304-.91.203-.218.485-.327.845-.327s.642.109.845.327c.203.219.304.522.304.91 0 .39-.101.696-.304.914-.203.218-.485.328-.845.328zm0-.514c.318 0 .477-.242.477-.728 0-.483-.16-.724-.477-.724-.318 0-.477.241-.477.724 0 .486.16.728.477.728zm-6.844 1.886c.405-.306.944-.408 1.39-.408.418 0 .756.09.828.185.15.2-.039 1.584-.775 2.244-.112.102-.22.047-.17-.087.166-.442.536-1.436.36-1.677-.175-.242-1.158-.115-1.6-.058-.068.008-.107-.02-.112-.061v-.023c.004-.036.03-.078.079-.115zm-10.184-.172a.105.105 0 0 1 .106-.091c.027 0 .057.009.089.028a11.778 11.778 0 0 0 6.194 1.772c1.52 0 3.19-.34 4.726-1.043.232-.105.426.164.2.346-1.371 1.09-3.359 1.67-5.07 1.67-2.397 0-4.557-.956-6.191-2.547a.173.173 0 0 1-.054-.097Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/prisma.svg b/assets/lib/simple-icons/icons/prisma.svg
new file mode 100644
index 00000000..3d7bdc70
--- /dev/null
+++ b/assets/lib/simple-icons/icons/prisma.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Prisma</title><path d="M21.8068 18.2848L13.5528.7565c-.207-.4382-.639-.7273-1.1286-.7541-.5023-.0293-.9523.213-1.2062.6253L2.266 15.1271c-.2773.4518-.2718 1.0091.0158 1.4555l4.3759 6.7786c.2608.4046.7127.6388 1.1823.6388.1332 0 .267-.0188.3987-.0577l12.7019-3.7568c.3891-.1151.7072-.3904.8737-.7553s.1633-.7828-.0075-1.1454zm-1.8481.7519L9.1814 22.2242c-.3292.0975-.6448-.1873-.5756-.5194l3.8501-18.4386c.072-.3448.5486-.3996.699-.0803l7.1288 15.138c.1344.2856-.019.6224-.325.7128z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/prismic.svg b/assets/lib/simple-icons/icons/prismic.svg
index 7b6533b3..b2a8860b 100644
--- a/assets/lib/simple-icons/icons/prismic.svg
+++ b/assets/lib/simple-icons/icons/prismic.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Prismic icon</title><path d="M7.83 3.866H6.785a2.915 2.915 0 0 0-2.92 2.92v8.553a7.912 7.912 0 0 0 3.13 1.043 1.965 1.965 0 0 1-.21-.835V8.663c-.104-.104-.104-2.607 1.044-4.797zM20.24 7.829V6.786a2.915 2.915 0 0 0-2.92-2.92H8.872A7.912 7.912 0 0 0 7.83 6.995c.21-.209.522-.209.835-.209h6.78c.104 0 2.607 0 4.797 1.043zm-4.067 12.412h1.043a2.915 2.915 0 0 0 2.92-2.92V8.871a7.912 7.912 0 0 0-3.13-1.043c.21.209.21.521.21.834v6.78c0 .104 0 2.607-1.043 4.798zM3.761 16.173v1.043a2.915 2.915 0 0 0 2.92 2.92h8.448a7.912 7.912 0 0 0 1.043-3.129c-.208.209-.521.209-.834.209H8.56c-.104 0-2.607 0-4.797-1.043zM13.253.007h-7.51C2.614.007.007 2.614.007 5.743c0 0 .209 5.528 2.399 8.135.104.209.313.313.521.522V6.682a3.85 3.85 0 0 1 3.86-3.86h1.668c.313-.417.626-.73.939-1.042.939-.73 2.399-1.356 3.86-1.773zM23.996 13.253v-7.51c0-3.129-2.607-5.736-5.736-5.736 0 0-5.528.208-8.136 2.398a1.257 1.257 0 0 0-.521.522h7.718a3.85 3.85 0 0 1 3.859 3.859v1.669c.417.313.73.626 1.043.939.73.938 1.356 2.398 1.773 3.859zM10.75 23.995h7.51c3.128 0 5.736-2.607 5.736-5.736 0 0-.209-5.528-2.399-8.135-.104-.209-.313-.313-.521-.522v7.718a3.85 3.85 0 0 1-3.86 3.86h-1.668c-.313.417-.626.73-.939 1.042-.939.73-2.399 1.356-3.86 1.773zM.007 10.75v7.509c0 3.129 2.607 5.736 5.736 5.736 0 0 5.528-.208 8.136-2.398.208-.105.313-.313.521-.522H6.786a3.85 3.85 0 0 1-3.859-3.859v-1.669c-.417-.313-.73-.626-1.043-.939C1.05 13.67.424 12.21.007 10.75z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Prismic</title><path d="M7.7 0C5.033 0 4.066.278 3.09.8A5.447 5.447 0 0 0 .825 3.07c-.522.977-.8 1.947-.8 4.622v.998c0 .199.078.388.218.529l1.77 1.774a.15.15 0 0 0 .257-.106V8.019c0-2.006.208-2.733.6-3.467A4.088 4.088 0 0 1 4.568 2.85c.731-.392 1.457-.6 3.459-.6h2.164c.199 0 .39-.08.53-.221l1.77-1.772A.15.15 0 0 0 12.387 0zm7.605 0c-.2 0-.392.08-.532.22l-1.769 1.775a.147.147 0 0 0-.044.104c0 .083.068.15.15.15h2.862c2.002 0 2.728.21 3.46.601a4.089 4.089 0 0 1 1.698 1.702c.39.734.599 1.461.599 3.467v2.17c0 .198.078.39.218.53l1.77 1.774a.15.15 0 0 0 .257-.106V7.692c0-2.675-.278-3.645-.8-4.623A5.446 5.446 0 0 0 20.91.801C19.935.278 18.968 0 16.3 0zM6.761 3.75a2.995 2.995 0 0 0-2.993 2.999v5.691a.75.75 0 0 0 .219.529l1.77 1.776a.149.149 0 0 0 .255-.106v-7.14a1.5 1.5 0 0 1 .097-.53c.072-.2.188-.385.348-.545l2.308-2.421a.15.15 0 0 0-.11-.253zm4.802 0c-.2 0-.39.08-.53.22L9.26 5.744A.151.151 0 0 0 9.366 6h7.124c.186 0 .364.034.528.097.2.072.386.188.546.347l2.413 2.313a.15.15 0 0 0 .255-.108v-1.9a2.995 2.995 0 0 0-2.993-3zm6.573 5.463a.15.15 0 0 0-.15.15v7.139a1.5 1.5 0 0 1-.095.53 1.49 1.49 0 0 1-.348.546l-2.308 2.42a.15.15 0 0 0 .108.255h1.896a2.997 2.997 0 0 0 2.993-3.002v-5.69a.752.752 0 0 0-.219-.53l-1.77-1.774a.15.15 0 0 0-.107-.044zm-17.96 2.25a.15.15 0 0 0-.15.15v4.695c0 2.674.278 3.645.8 4.623a5.442 5.442 0 0 0 2.263 2.267c.976.522 1.943.802 4.612.802h.994c.2 0 .39-.08.53-.22l1.771-1.775a.149.149 0 0 0-.106-.255H8.027c-2.002 0-2.728-.208-3.46-.6a4.088 4.088 0 0 1-1.698-1.702c-.39-.734-.599-1.461-.599-3.467v-2.172a.749.749 0 0 0-.22-.528L.282 11.507a.15.15 0 0 0-.106-.044zm21.703 1.5a.15.15 0 0 0-.15.15v2.868c0 2.006-.208 2.733-.6 3.467a4.088 4.088 0 0 1-1.698 1.702c-.731.392-1.457.6-3.459.6h-2.164a.749.749 0 0 0-.532.22l-1.769 1.773a.151.151 0 0 0-.043.107c0 .083.065.15.148.15H16.3c2.67 0 3.636-.28 4.612-.802a5.442 5.442 0 0 0 2.263-2.267c.522-.978.8-1.948.8-4.623v-.998a.749.749 0 0 0-.22-.529l-1.769-1.774a.15.15 0 0 0-.106-.044zm-17.96 2.238a.15.15 0 0 0-.151.15v1.898a2.997 2.997 0 0 0 2.993 3.001h5.676c.2 0 .39-.08.53-.22l1.773-1.775a.146.146 0 0 0 .044-.104.15.15 0 0 0-.15-.15H7.51a1.48 1.48 0 0 1-.53-.098 1.49 1.49 0 0 1-.546-.347l-2.413-2.313a.147.147 0 0 0-.103-.042z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/privateinternetaccess.svg b/assets/lib/simple-icons/icons/privateinternetaccess.svg
new file mode 100644
index 00000000..ec39c269
--- /dev/null
+++ b/assets/lib/simple-icons/icons/privateinternetaccess.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Private Internet Access</title><path d="M11.998 0C7.6513 0 4.129 3.5034 4.129 7.8242v.8692h-.9747c-1.022 0-1.8496.8238-1.8496 1.8398v7.1816c.002.4784.0315.8267.2187 1.0801a.7482.7482 0 0 0 .3717.26c.1378.0425.2532.0629.3842.074.0783.0063.163.01.252.0098h1.5761c.0462.6196.077 1.285.1074 1.8828.0418.647.081 1.2944.1192 1.9414.0007.1005.0115.3301.1387.5508.125.2227.3877.4214.8125.418h3.9785l2.0664-2.1915h1.543L14.871 24h3.5684c.3073-.0014.5901.0066.834-.1484.243-.1585.3884-.46.459-.9844.0519-.3859.0826-1.1097.1073-1.8457.0008-.6137.0336-1.2722.0567-1.8985h1.5703c.1886-.0007.3493.008.53-.0197.1808-.0278.347-.098.472-.2322.197-.2234.2237-.542.2265-1.0195v-7.3184c-.0014-1.016-.8302-1.8391-1.8515-1.8398-.3235.0012-.65 0-.9747 0v-.8692C19.8691 3.5034 16.3455 0 11.9981 0zm-.0117 2.8652c2.6715 0 4.836 2.1607 4.836 4.8262v1.414H7.1484v-1.414c0-2.6655 2.1665-4.8262 4.838-4.8262zm-1.5879 1.7305a.8935.8935 0 0 0-.8945.8945.8935.8935 0 0 0 .8945.8926.8935.8935 0 0 0 .8926-.8926.8935.8935 0 0 0-.8926-.8945zm3.1758 0a.8935.8935 0 0 0-.8926.8945.8935.8935 0 0 0 .8926.8926.8935.8935 0 0 0 .8946-.8926.8935.8935 0 0 0-.8946-.8945zM9.957 7.6309v.5136h4.3125V7.631zm-5.5879 1.957h.25v9.1074h14.7852v.4902H4.5957v-.3203h-.2266zm15.0625 0h.252v9.2773h-.252zm-7.5312 3.4043c.7465 0 1.3627.537 1.5176 1.248h-.3848c-.1465-.5093-.5984-.8782-1.1328-.8789-.5344.0007-.985.3696-1.1309.879h-.3867c.1549-.7112.7711-1.2474 1.5176-1.2481zm-1.6309 1.5039h3.2344v2.4121h-3.2344zM21.957 19.375c-.0764.0035-.1565.0078-.2441.0078h-1.5703c-.0208.3892-.0358 1.004-.0567 1.6387h.3633c.8338.0007 1.5078-.6765 1.5078-1.5117zm-20.0273.002v.1347c0 .8338.6682 1.5098 1.4941 1.5098h.4903l-.1016-1.629H2.2539c-.1182 0-.2256-.0038-.3242-.0155Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/probot.svg b/assets/lib/simple-icons/icons/probot.svg
index 44bd341c..cc1c9947 100644
--- a/assets/lib/simple-icons/icons/probot.svg
+++ b/assets/lib/simple-icons/icons/probot.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Probot icon</title><path d="M12 .04a1.743 1.743 0 0 0-.537 3.401l-.631 2.579H2.456A2.456 2.456 0 0 0 0 8.476v13.029a2.456 2.456 0 0 0 2.456 2.456h19.088c1.356 0 2.456-1.1 2.456-2.456V8.476c0-1.356-1.1-2.456-2.456-2.456h-8.403l-.616-2.575A1.743 1.743 0 0 0 11.999.04zM3.933 7.881h16.136c1.101 0 1.994.893 1.994 1.994v10.117a1.994 1.994 0 0 1-1.994 1.994H3.933a1.994 1.994 0 0 1-1.994-1.994V9.875c0-1.101.893-1.994 1.994-1.994zm3.254 2.312a4.575 4.575 0 1 0 0 9.15 4.575 4.575 0 0 0 0-9.15zm9.743 0a4.575 4.575 0 1 0 0 9.15 4.575 4.575 0 0 0 0-9.15zm-9.743 1.07a3.506 3.506 0 1 1 0 7.011 3.506 3.506 0 0 1 0-7.011zm9.743 0a3.506 3.506 0 1 1 0 7.011 3.506 3.506 0 0 1 0-7.011zm-9.743 1.663a1.843 1.843 0 1 0 0 3.686 1.843 1.843 0 0 0 0-3.686zm9.743 0a1.843 1.843 0 1 0 0 3.686 1.843 1.843 0 0 0 0-3.686zm-6.927 6.5v2.159h.706v-2.159h-.706zm1.077 0v2.159h.705v-2.159h-.705zm1.076 0v2.159h.706v-2.159h-.706zm1.077 0v2.159h.706v-2.159h-.706zm1.077.03v2.1a1.08 1.08 0 0 0 .829-1.049v-.001c0-.51-.354-.937-.829-1.05zm-4.678.028a1.08 1.08 0 0 0-.731 1.021v.001c0 .474.306.876.731 1.021v-2.043z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Probot</title><path d="M12 .04a1.743 1.743 0 0 0-.537 3.401l-.631 2.579H2.456A2.456 2.456 0 0 0 0 8.476v13.029a2.456 2.456 0 0 0 2.456 2.456h19.088c1.356 0 2.456-1.1 2.456-2.456V8.476c0-1.356-1.1-2.456-2.456-2.456h-8.403l-.616-2.575A1.743 1.743 0 0 0 11.999.04zM3.933 7.881h16.136c1.101 0 1.994.893 1.994 1.994v10.117a1.994 1.994 0 0 1-1.994 1.994H3.933a1.994 1.994 0 0 1-1.994-1.994V9.875c0-1.101.893-1.994 1.994-1.994zm3.254 2.312a4.575 4.575 0 1 0 0 9.15 4.575 4.575 0 0 0 0-9.15zm9.743 0a4.575 4.575 0 1 0 0 9.15 4.575 4.575 0 0 0 0-9.15zm-9.743 1.07a3.506 3.506 0 1 1 0 7.011 3.506 3.506 0 0 1 0-7.011zm9.743 0a3.506 3.506 0 1 1 0 7.011 3.506 3.506 0 0 1 0-7.011zm-9.743 1.663a1.843 1.843 0 1 0 0 3.686 1.843 1.843 0 0 0 0-3.686zm9.743 0a1.843 1.843 0 1 0 0 3.686 1.843 1.843 0 0 0 0-3.686zm-6.927 6.5v2.159h.706v-2.159h-.706zm1.077 0v2.159h.705v-2.159h-.705zm1.076 0v2.159h.706v-2.159h-.706zm1.077 0v2.159h.706v-2.159h-.706zm1.077.03v2.1a1.08 1.08 0 0 0 .829-1.049v-.001c0-.51-.354-.937-.829-1.05zm-4.678.028a1.08 1.08 0 0 0-.731 1.021v.001c0 .474.306.876.731 1.021v-2.043z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/processingfoundation.svg b/assets/lib/simple-icons/icons/processingfoundation.svg
new file mode 100644
index 00000000..f86b00f8
--- /dev/null
+++ b/assets/lib/simple-icons/icons/processingfoundation.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Processing Foundation</title><path d="M11.999 0a12 12 0 100 24A12 12 0 0012 0zm1.183 5.255h.048c3.273 0 5.247 1.48 5.247 4.103 0 2.727-1.974 4.536-5.295 4.669v-1.742c1.837-.11 2.801-1.061 2.801-2.744 0-1.498-.957-2.442-2.8-2.516zm-1.773.026l.005 11.896c.779.052 1.583.18 2.26.337l-.269 1.324H6.788v-1.324a14.96 14.96 0 012.26-.337V6.993a14.71 14.71 0 01-2.26-.337V5.33h2.26c.64 0 1.469-.028 2.361-.05z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/processwire.svg b/assets/lib/simple-icons/icons/processwire.svg
index a99b2924..87f97b16 100644
--- a/assets/lib/simple-icons/icons/processwire.svg
+++ b/assets/lib/simple-icons/icons/processwire.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ProcessWire icon</title><path d="M21.939 5.27C21.211 4.183 20 2.941 18.784 2.137 16.258.407 13.332-.207 10.744.061c-2.699.291-5.01 1.308-6.91 3.004C2.074 4.637.912 6.559.4 8.392c-.518 1.833-.449 3.53-.264 4.808.195 1.297.841 2.929.841 2.929.132.313.315.44.41.493.472.258 1.247.031 1.842-.637.03-.041.046-.098.03-.146-.166-.639-.226-1.12-.285-1.492-.135-.736-.195-1.969-.105-3.109.045-.617.165-1.277.375-1.969.406-1.367 1.262-2.794 2.6-3.98 1.441-1.277 3.289-2.066 5.046-2.27.616-.074 1.788-.145 3.199.203.301.075 1.593.412 2.975 1.348 1.006.684 1.816 1.528 2.374 2.363.568.797 1.185 2.141 1.366 3.125.256 1.12.256 2.307.074 3.463-.225 1.158-.631 2.284-1.262 3.275-.435.768-1.337 1.783-2.403 2.545-.961.676-2.058 1.164-3.184 1.434-.57.135-1.142.221-1.728.24-.521.016-1.212 0-1.697-.082-.721-.115-.871-.299-1.036-.549 0 0-.115-.18-.147-.662.011-4.405.009-3.229.009-5.516 0-.646-.021-1.232-.015-1.764.03-.873.104-1.473.728-2.123.451-.479 1.082-.768 1.777-.768.211 0 .938.01 1.577.541.685.572.8 1.354.827 1.563.156 1.223-.652 2.134-.962 2.365-.384.288-.729.428-.962.51-.496.166-1.041.214-1.531.182-.075-.005-.143.044-.158.119l-.165.856c-.161.65.2.888.41.972.671.207 1.266.293 1.971.24 1.081-.076 2.147-.502 3.052-1.346.77-.732 1.209-1.635 1.359-2.645.15-1.121-.045-2.328-.556-3.35-.562-1.127-1.532-2.068-2.81-2.583-1.291-.508-2.318-.526-3.642-.188l-.015.005c-.86.296-1.596.661-2.362 1.452-.525.546-.955 1.207-1.217 1.953-.26.752-.33 1.313-.342 2.185-.016.646.015 1.246.015 1.808v3.701c0 1.184-.04 1.389 0 1.998.022.404.078.861.255 1.352.182.541.564 1.096.826 1.352.367.391.834.705 1.293.9 1.051.467 2.478.541 3.635.496.766-.029 1.536-.135 2.291-.314 1.51-.359 2.96-1.012 4.235-1.918 1.367-.963 2.555-2.277 3.211-3.393.841-1.326 1.385-2.814 1.668-4.343.255-1.532.243-3.103-.099-4.612-.27-1.4-.991-2.936-1.823-4.176l.038.037z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ProcessWire</title><path d="M21.939 5.27C21.211 4.183 20 2.941 18.784 2.137 16.258.407 13.332-.207 10.744.061c-2.699.291-5.01 1.308-6.91 3.004C2.074 4.637.912 6.559.4 8.392c-.518 1.833-.449 3.53-.264 4.808.195 1.297.841 2.929.841 2.929.132.313.315.44.41.493.472.258 1.247.031 1.842-.637.03-.041.046-.098.03-.146-.166-.639-.226-1.12-.285-1.492-.135-.736-.195-1.969-.105-3.109.045-.617.165-1.277.375-1.969.406-1.367 1.262-2.794 2.6-3.98 1.441-1.277 3.289-2.066 5.046-2.27.616-.074 1.788-.145 3.199.203.301.075 1.593.412 2.975 1.348 1.006.684 1.816 1.528 2.374 2.363.568.797 1.185 2.141 1.366 3.125.256 1.12.256 2.307.074 3.463-.225 1.158-.631 2.284-1.262 3.275-.435.768-1.337 1.783-2.403 2.545-.961.676-2.058 1.164-3.184 1.434-.57.135-1.142.221-1.728.24-.521.016-1.212 0-1.697-.082-.721-.115-.871-.299-1.036-.549 0 0-.115-.18-.147-.662.011-4.405.009-3.229.009-5.516 0-.646-.021-1.232-.015-1.764.03-.873.104-1.473.728-2.123.451-.479 1.082-.768 1.777-.768.211 0 .938.01 1.577.541.685.572.8 1.354.827 1.563.156 1.223-.652 2.134-.962 2.365-.384.288-.729.428-.962.51-.496.166-1.041.214-1.531.182-.075-.005-.143.044-.158.119l-.165.856c-.161.65.2.888.41.972.671.207 1.266.293 1.971.24 1.081-.076 2.147-.502 3.052-1.346.77-.732 1.209-1.635 1.359-2.645.15-1.121-.045-2.328-.556-3.35-.562-1.127-1.532-2.068-2.81-2.583-1.291-.508-2.318-.526-3.642-.188l-.015.005c-.86.296-1.596.661-2.362 1.452-.525.546-.955 1.207-1.217 1.953-.26.752-.33 1.313-.342 2.185-.016.646.015 1.246.015 1.808v3.701c0 1.184-.04 1.389 0 1.998.022.404.078.861.255 1.352.182.541.564 1.096.826 1.352.367.391.834.705 1.293.9 1.051.467 2.478.541 3.635.496.766-.029 1.536-.135 2.291-.314 1.51-.359 2.96-1.012 4.235-1.918 1.367-.963 2.555-2.277 3.211-3.393.841-1.326 1.385-2.814 1.668-4.343.255-1.532.243-3.103-.099-4.612-.27-1.4-.991-2.936-1.823-4.176l.038.037z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/producthunt.svg b/assets/lib/simple-icons/icons/producthunt.svg
index 117c904c..64b8cc4e 100644
--- a/assets/lib/simple-icons/icons/producthunt.svg
+++ b/assets/lib/simple-icons/icons/producthunt.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Product Hunt icon</title><path d="M13.604 8.4h-3.405V12h3.405c.995 0 1.801-.806 1.801-1.801 0-.993-.805-1.799-1.801-1.799zM12 0C5.372 0 0 5.372 0 12s5.372 12 12 12 12-5.372 12-12S18.628 0 12 0zm1.604 14.4h-3.405V18H7.801V6h5.804c2.319 0 4.2 1.88 4.2 4.199 0 2.321-1.881 4.201-4.201 4.201z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Product Hunt</title><path d="M13.604 8.4h-3.405V12h3.405c.995 0 1.801-.806 1.801-1.801 0-.993-.805-1.799-1.801-1.799zM12 0C5.372 0 0 5.372 0 12s5.372 12 12 12 12-5.372 12-12S18.628 0 12 0zm1.604 14.4h-3.405V18H7.801V6h5.804c2.319 0 4.2 1.88 4.2 4.199 0 2.321-1.881 4.201-4.201 4.201z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/progate.svg b/assets/lib/simple-icons/icons/progate.svg
new file mode 100644
index 00000000..5e1dcb01
--- /dev/null
+++ b/assets/lib/simple-icons/icons/progate.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Progate</title><path d="M10.056 24a17.14 17.14 0 01-3.457-.698c-1.244-.364-2.899-1-2.913-2.319 0-.946.54-1.755 1.675-2.477a15.827 15.827 0 011.6-.844 39.6 39.6 0 012.2-.928V4.98l-4.41-.476v12.652a.848.848 0 01-.895.846.85.85 0 01-.904-.846V3.496a.906.906 0 01.904-.903.8.8 0 01.096.014l6.198.67a.902.902 0 01.8.9v11.826a61.194 61.194 0 002.399-1.03c2.27-1.036 3.799-2.091 4.668-3.237 1.056-1.374 1.218-3.075 1.168-4.259a6.264 6.264 0 00-1.254-3.515 5.498 5.498 0 00-2.095-1.725 6.208 6.208 0 00-1.663-.486c-.6-.082-.896-.51-.864-.938.032-.427.384-.75.888-.8.863-.071 1.503.147 2.375.536a7.76 7.76 0 012.86 2.32 8.167 8.167 0 011.6 4.522 8.967 8.967 0 01-.485 3.481 7.36 7.36 0 01-1.088 1.966c-1.584 2.065-4.39 3.34-5.31 3.764-.868.4-2.8 1.2-3.18 1.352V23.1a.908.908 0 01-.31.682.918.918 0 01-.567.218zm-.896-5.318c-.552.2-1.4.512-1.72.66-.32.147-1.215.565-1.61.91-.1.085-.417.385-.339.629.078.244.446.374 1.904.766.518.14 1.125.274 1.765.4z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/progress.svg b/assets/lib/simple-icons/icons/progress.svg
new file mode 100644
index 00000000..628cfd90
--- /dev/null
+++ b/assets/lib/simple-icons/icons/progress.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Progress</title><path d="M23.235 6.825v11.997a.924.924 0 0 1-.419.725l-.393.235c-1.961 1.135-3.687 2.134-5.431 3.14V9.948L5.759 3.454C7.703 2.338 9.64 1.211 11.586.1a.927.927 0 0 1 .837 0l10.81 6.243v.482zm-8.741 4.562A9631.706 9631.706 0 0 0 6.8 6.943a.94.94 0 0 0-.837 0c-1.733 1.001-3.467 2-5.199 3.004l8.113 4.684V24c1.732-.999 3.46-2.006 5.197-2.995a.927.927 0 0 0 .419-.724zM.765 19.317l5.613 3.241V16.07Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/prometheus.svg b/assets/lib/simple-icons/icons/prometheus.svg
index c24e16a7..32a30255 100644
--- a/assets/lib/simple-icons/icons/prometheus.svg
+++ b/assets/lib/simple-icons/icons/prometheus.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Prometheus icon</title><path d="M12 0C5.373 0 0 5.372 0 12c0 6.627 5.373 12 12 12s12-5.373 12-12c0-6.628-5.373-12-12-12zm0 22.46c-1.885 0-3.414-1.26-3.414-2.814h6.828c0 1.553-1.528 2.813-3.414 2.813zm5.64-3.745H6.36v-2.046h11.28v2.046zm-.04-3.098H6.391c-.037-.043-.075-.086-.111-.13-1.155-1.401-1.427-2.133-1.69-2.879-.005-.025 1.4.287 2.395.511 0 0 .513.119 1.262.255-.72-.843-1.147-1.915-1.147-3.01 0-2.406 1.845-4.508 1.18-6.207.648.053 1.34 1.367 1.387 3.422.689-.951.977-2.69.977-3.755 0-1.103.727-2.385 1.454-2.429-.648 1.069.168 1.984.894 4.256.272.854.237 2.29.447 3.201.07-1.892.395-4.652 1.595-5.605-.529 1.2.079 2.702.494 3.424.671 1.164 1.078 2.047 1.078 3.716a4.642 4.642 0 01-1.11 2.996c.792-.149 1.34-.283 1.34-.283l2.573-.502s-.374 1.538-1.81 3.019z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Prometheus</title><path d="M12 0C5.373 0 0 5.372 0 12c0 6.627 5.373 12 12 12s12-5.373 12-12c0-6.628-5.373-12-12-12zm0 22.46c-1.885 0-3.414-1.26-3.414-2.814h6.828c0 1.553-1.528 2.813-3.414 2.813zm5.64-3.745H6.36v-2.046h11.28v2.046zm-.04-3.098H6.391c-.037-.043-.075-.086-.111-.13-1.155-1.401-1.427-2.133-1.69-2.879-.005-.025 1.4.287 2.395.511 0 0 .513.119 1.262.255-.72-.843-1.147-1.915-1.147-3.01 0-2.406 1.845-4.508 1.18-6.207.648.053 1.34 1.367 1.387 3.422.689-.951.977-2.69.977-3.755 0-1.103.727-2.385 1.454-2.429-.648 1.069.168 1.984.894 4.256.272.854.237 2.29.447 3.201.07-1.892.395-4.652 1.595-5.605-.529 1.2.079 2.702.494 3.424.671 1.164 1.078 2.047 1.078 3.716a4.642 4.642 0 01-1.11 2.996c.792-.149 1.34-.283 1.34-.283l2.573-.502s-.374 1.538-1.81 3.019z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/prosieben.svg b/assets/lib/simple-icons/icons/prosieben.svg
index c789f33a..1845a7c4 100644
--- a/assets/lib/simple-icons/icons/prosieben.svg
+++ b/assets/lib/simple-icons/icons/prosieben.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ProSieben icon</title><path d="M.24 0H23.68V6.64H.24M23.76 7.92V24H.24s2.88-7.84 10.48-12.48c7.12-4.4 13.04-3.6 13.04-3.6Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ProSieben</title><path d="M.24 0H23.68V6.64H.24M23.76 7.92V24H.24s2.88-7.84 10.48-12.48c7.12-4.4 13.04-3.6 13.04-3.6Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/proto-dot-io.svg b/assets/lib/simple-icons/icons/proto-dot-io.svg
deleted file mode 100644
index 93b9e014..00000000
--- a/assets/lib/simple-icons/icons/proto-dot-io.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Proto.io icon</title><path d="M12 11.997c-.728 0-1.316-.59-1.316-1.317S11.272 9.363 12 9.363s1.316.589 1.316 1.316-.588 1.318-1.316 1.318zm2.916-.021c0-2.828-1.109-5.397-2.916-7.298-1.807 1.9-2.916 4.47-2.916 7.298 0 1.297.234 2.535.66 3.683-.618.9-1.074 2.16-1.275 3.616.639-.767 1.422-1.306 2.292-1.591.363.555.78 1.096 1.239 1.574.461-.494.876-1.02 1.239-1.59.87.271 1.653.826 2.29 1.576-.199-1.456-.655-2.716-1.275-3.615.427-1.155.66-2.385.66-3.69l.002.037zM12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm0-22C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/protocols-dot-io.svg b/assets/lib/simple-icons/icons/protocols-dot-io.svg
deleted file mode 100644
index 780e15db..00000000
--- a/assets/lib/simple-icons/icons/protocols-dot-io.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>protocols.io icon</title><path d="M4.55.928c-.723.046-1.266.47-1.614 1.261a4.653 4.653 0 00-.215.6 11.006 11.006 0 00-.42 3.584c.052 1.007-.187 1.888-.6 2.797C.858 11.024.27 12.967.031 15.004c-.136 1.164.169 2.15 1.13 2.871.41.308.834.603 1.28.855 1.241.702 2.573 1.191 3.924 1.633a.825.825 0 01.297.162c1.12 1.033 2.423 1.75 3.846 2.276 1.011.373 2.005.364 3.015-.01 1.057-.391 2.089-.853 2.944-1.576.76-.642 1.612-1.011 2.527-1.334 1.307-.461 2.566-1.036 3.69-1.871.934-.695 1.413-1.596 1.298-2.778-.023-.238-.04-.476-.076-.712-.3-1.942-.888-3.802-1.705-5.58-.356-.776-.658-1.524-.441-2.403-.075-.856-.128-1.726-.233-2.588-.083-.687-.24-1.364-.574-1.982-.442-.821-1.126-1.164-2.037-1-.32.057-.642.144-.94.273-1.61.698-2.904 1.799-3.949 3.197-.101.137-.195.184-.369.182a190.37 190.37 0 00-3.328-.002c-.144.001-.241-.014-.334-.144-.623-.877-1.389-1.614-2.256-2.246-.735-.536-1.51-1-2.406-1.22a2.601 2.601 0 00-.783-.08zm.096 1.152c.087-.002.183.012.292.04.34.085.685.194.996.357 1.43.746 2.596 1.792 3.443 3.173.088.144.178.186.338.178.904-.042 1.806-.097 2.71-.103.62-.004 1.24.06 1.86.103.163.012.25-.04.336-.182.855-1.387 2.024-2.44 3.469-3.181.304-.156.64-.265.973-.348.431-.107.702.006.863.418.188.484.352.99.43 1.5.123.815.166 1.642.226 2.281-.037.648-.07 1.108-.086 1.569a.68.68 0 00.08.322 21.819 21.819 0 012.174 6.377c.073.416.077.85.064 1.273-.013.481-.324.812-.673 1.1-.873.72-1.888 1.188-2.926 1.602-.714.284-1.452.51-2.174.775-.15.055-.3.148-.418.258-1.224 1.13-2.625 1.94-4.26 2.285-.37.078-.804.014-1.174-.098-1.473-.445-2.788-1.18-3.892-2.27a.692.692 0 00-.272-.148c-1.35-.431-2.684-.905-3.931-1.588-.35-.19-.676-.42-1.014-.632-.81-.51-1.026-1.267-.893-2.166.355-2.387 1.131-4.632 2.235-6.772a.745.745 0 00.07-.375c-.106-1.522-.064-3.034.293-4.525.064-.265.162-.528.281-.774.146-.299.32-.442.58-.449zM13.867 8.8c-.354.04-.539.263-.719.72-.032.083-.06.167-.082.252-.196.782-.121 1.563-.025 2.352.108.89.498 1.492 1.367 1.832 1.379.54 2.11 1.645 2.442 3.047.08.343.148.688.228 1.068.39-.138.764-.265 1.135-.404.998-.373 1.972-.794 2.863-1.39.15-.1.224-.212.195-.393-.091-.586-.142-1.181-.273-1.758-.409-1.806-1.407-3.178-3.08-4.018-.61-.305-1.222-.614-1.861-.845a9.585 9.585 0 00-1.774-.444 1.586 1.586 0 00-.416-.02zM9.66 8.81a2.26 2.26 0 00-.264.035c-1.57.32-2.996.965-4.298 1.892-.489.348-.91.766-1.225 1.282-.727 1.193-1.073 2.5-1.152 3.886-.01.178.053.288.199.364.722.375 1.433.777 2.172 1.117.583.268 1.2.462 1.824.697.083-.39.15-.737.23-1.08.331-1.402 1.073-2.48 2.436-3.06.05-.021.093-.052.143-.069.723-.249 1.069-.77 1.185-1.516.143-.919.259-1.829-.03-2.736-.221-.7-.494-.872-1.22-.812zm2.594 7.502c-.96.045-1.653.137-2.274.505-.426.254-.559.555-.396.979.366.952.999 1.69 1.89 2.19.33.184.685.193 1.02.011.918-.499 1.554-1.252 1.928-2.22.14-.365.044-.626-.274-.864-.147-.11-.312-.219-.486-.266-.544-.146-1.096-.263-1.408-.335Z"/></svg>
diff --git a/assets/lib/simple-icons/icons/protocolsdotio.svg b/assets/lib/simple-icons/icons/protocolsdotio.svg
new file mode 100644
index 00000000..7b183674
--- /dev/null
+++ b/assets/lib/simple-icons/icons/protocolsdotio.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>protocols.io</title><path d="M4.55.927c-.723.046-1.266.47-1.614 1.261a4.653 4.653 0 0 0-.215.6 11.007 11.007 0 0 0-.42 3.585c.052 1.007-.187 1.888-.6 2.797C.858 11.024.27 12.967.03 15.004c-.136 1.164.169 2.15 1.13 2.871.41.308.834.603 1.28.855 1.24.702 2.573 1.192 3.924 1.634a.825.825 0 0 1 .297.162c1.12 1.033 2.423 1.75 3.846 2.276 1.011.373 2.005.364 3.016-.01 1.057-.391 2.089-.853 2.944-1.576.76-.642 1.612-1.011 2.527-1.334 1.307-.462 2.566-1.037 3.69-1.872.934-.695 1.413-1.596 1.298-2.778-.023-.238-.04-.476-.076-.712-.3-1.942-.888-3.802-1.705-5.58-.356-.776-.658-1.524-.441-2.403-.075-.856-.128-1.726-.233-2.588-.083-.687-.24-1.365-.574-1.983-.442-.82-1.126-1.164-2.037-1-.32.057-.642.144-.94.273-1.61.698-2.904 1.8-3.95 3.198-.1.137-.194.184-.368.182a190.382 190.382 0 0 0-3.329-.002c-.144 0-.24-.014-.334-.144-.623-.877-1.389-1.615-2.256-2.247-.735-.536-1.51-1-2.406-1.22a2.601 2.601 0 0 0-.783-.08zm.096 1.152c.087-.002.183.012.292.04a4.5 4.5 0 0 1 .996.357c1.43.747 2.596 1.793 3.443 3.174.088.144.178.186.338.178.904-.042 1.806-.097 2.71-.103.62-.004 1.24.06 1.86.103.164.012.25-.04.337-.182.855-1.387 2.024-2.44 3.469-3.182a4.55 4.55 0 0 1 .973-.348c.43-.107.702.006.863.418.188.484.352.99.43 1.5.123.816.166 1.643.226 2.282-.037.648-.07 1.108-.086 1.569a.68.68 0 0 0 .08.322 21.82 21.82 0 0 1 2.174 6.377c.073.416.077.85.064 1.273-.013.481-.324.812-.673 1.1-.873.72-1.888 1.188-2.926 1.602-.714.284-1.452.51-2.174.775-.15.055-.3.149-.418.259-1.224 1.13-2.625 1.94-4.26 2.285-.37.078-.805.014-1.175-.098-1.473-.445-2.788-1.18-3.892-2.27a.692.692 0 0 0-.272-.149c-1.35-.43-2.684-.905-3.931-1.588-.35-.19-.676-.42-1.014-.632-.81-.51-1.026-1.267-.893-2.166.355-2.387 1.13-4.632 2.235-6.772a.745.745 0 0 0 .07-.375c-.106-1.522-.064-3.034.293-4.525.064-.266.162-.529.281-.775.146-.299.32-.442.58-.449zm9.222 6.72c-.354.04-.54.264-.72.72-.031.084-.06.168-.081.253-.197.782-.122 1.563-.025 2.352.108.89.498 1.492 1.367 1.832 1.379.54 2.11 1.645 2.442 3.047.08.343.148.688.228 1.068.39-.138.764-.265 1.135-.404.998-.373 1.972-.794 2.863-1.39.15-.1.224-.212.195-.393-.091-.586-.142-1.18-.273-1.758-.409-1.806-1.407-3.178-3.08-4.018-.61-.305-1.222-.614-1.861-.845a9.586 9.586 0 0 0-1.774-.444 1.586 1.586 0 0 0-.416-.02zm-4.208.01a2.26 2.26 0 0 0-.264.036c-1.57.32-2.996.965-4.298 1.892-.489.348-.91.766-1.225 1.282-.727 1.193-1.073 2.5-1.152 3.886-.01.178.053.288.199.364.722.375 1.433.777 2.172 1.117.583.268 1.2.462 1.824.697.083-.39.15-.737.23-1.08.331-1.402 1.073-2.48 2.436-3.06.05-.02.093-.052.143-.069.723-.249 1.07-.77 1.185-1.516.143-.919.26-1.829-.03-2.736-.22-.7-.494-.872-1.22-.812zm2.594 7.503c-.96.045-1.653.137-2.274.505-.426.254-.559.555-.396.98.366.951 1 1.69 1.89 2.19.33.184.685.193 1.02.01.919-.498 1.555-1.252 1.929-2.22.14-.365.044-.626-.274-.864-.147-.11-.312-.219-.486-.266-.544-.146-1.097-.263-1.409-.335z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/protodotio.svg b/assets/lib/simple-icons/icons/protodotio.svg
new file mode 100644
index 00000000..2cc1ef55
--- /dev/null
+++ b/assets/lib/simple-icons/icons/protodotio.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Proto.io</title><path d="M12 11.997c-.728 0-1.316-.59-1.316-1.317S11.272 9.363 12 9.363s1.316.589 1.316 1.316-.588 1.318-1.316 1.318zm2.916-.021c0-2.828-1.109-5.397-2.916-7.298-1.807 1.9-2.916 4.47-2.916 7.298 0 1.297.234 2.535.66 3.683-.618.9-1.074 2.16-1.275 3.616.639-.767 1.422-1.306 2.292-1.591.363.555.78 1.096 1.239 1.574.461-.494.876-1.02 1.239-1.59.87.271 1.653.826 2.29 1.576-.199-1.456-.655-2.716-1.275-3.615.427-1.155.66-2.385.66-3.69l.002.037zM12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm0-22C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/protondb.svg b/assets/lib/simple-icons/icons/protondb.svg
new file mode 100644
index 00000000..74f0579e
--- /dev/null
+++ b/assets/lib/simple-icons/icons/protondb.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ProtonDB</title><path d="M1.744 0C.781 0 0 .781 0 1.744v20.512C0 23.219.781 24 1.744 24h20.512c.963 0 1.744-.782 1.744-1.74V1.744C24 .781 23.218 0 22.26 0zm14.729 2.205v.004c.37 0 .704.08.996.25 1.26.728 1.55 2.996.904 5.846 2.8.855 4.625 2.238 4.625 3.695 0 1.457-1.813 2.836-4.6 3.691.65 2.84.367 5.102-.894 5.83a2.03 2.03 0 01-1.012.25c-1.232 0-2.846-.869-4.478-2.384-1.633 1.525-3.245 2.404-4.477 2.404-.376 0-.712-.079-1.006-.25-1.26-.728-1.55-2.996-.904-5.846-2.8-.855-4.625-2.238-4.625-3.695 0-1.452 1.814-2.83 4.605-3.69-.65-2.84-.366-5.103.895-5.831a2.03 2.03 0 011.012-.25V3.23c-.206 0-.377.035-.514.118-.606.352-.866 1.687-.656 3.398.054.416.133.85.236 1.299.875-.22 1.838-.385 2.85-.492a21.401 21.401 0 011.851-2.24C9.82 3.962 8.446 3.227 7.518 3.227V2.225c1.231 0 2.846.87 4.478 2.384 1.633-1.525 3.245-2.404 4.477-2.404zm-.006 1.002c-.929.003-2.3.745-3.758 2.102.635.66 1.261 1.413 1.867 2.244 1.007.107 1.964.273 2.844.488.098-.455.181-.9.23-1.32.206-1.711-.059-3.04-.67-3.393a1.037 1.037 0 00-.513-.117zm-4.483 2.81c-.41.43-.824.91-1.23 1.438a26.105 26.105 0 012.478 0 17.822 17.822 0 00-1.248-1.437zM12 8.428c-.684 0-1.36.03-2.03.089a24.514 24.514 0 00-1.08 1.71c-.337.587-.648 1.188-.927 1.79.283.6.591 1.196.933 1.783.352.601.713 1.172 1.084 1.705.665.054 1.34.084 2.02.084.684 0 1.36-.03 2.03-.088a24.51 24.51 0 001.08-1.71c.332-.592.644-1.194.927-1.79a23.03 23.03 0 00-.933-1.785 25.587 25.587 0 00-1.086-1.705A25.016 25.016 0 0012 8.428zm-3.334.23c-.64.092-1.256.214-1.848.35.171.582.377 1.185.621 1.786a25.469 25.469 0 011.227-2.137zm6.658 0a23.32 23.32 0 011.23 2.127c.235-.597.442-1.194.608-1.77a18.82 18.82 0 00-1.838-.358zm2.81.62a22.088 22.088 0 01-.997 2.72c.415.938.753 1.85 1.008 2.73.435-.142.854-.287 1.24-.454 1.583-.674 2.61-1.57 2.625-2.27 0-.703-1.027-1.587-2.615-2.267a13.533 13.533 0 00-1.26-.459zm-12.282.006c-.435.142-.856.287-1.243.453-1.588.67-2.615 1.566-2.615 2.27s1.027 1.588 2.615 2.267c.391.167.812.318 1.252.46a22.04 22.04 0 01.996-2.717 21.563 21.563 0 01-1.005-2.733zm6.142.668A2.048 2.048 0 0114.043 12a2.048 2.048 0 01-2.049 2.049A2.048 2.048 0 019.947 12a2.048 2.048 0 012.047-2.049zm4.56 3.252c-.185.362-.374.723-.58 1.08a25.52 25.52 0 01-.646 1.06c.64-.092 1.261-.215 1.848-.357a18.93 18.93 0 00-.621-1.783zm-9.115.024c-.234.596-.439 1.192-.605 1.77.587.14 1.202.258 1.838.35a37.4 37.4 0 01-.647-1.044c-.21-.357-.4-.72-.586-1.076zm9.99 2.728c-.874.22-1.837.385-2.849.492a21.402 21.402 0 01-1.851 2.24c1.461 1.35 2.834 2.086 3.763 2.086.205 0 .377-.034.514-.117.606-.352.864-1.685.654-3.396-.054-.416-.133-.85-.23-1.305zm-10.845.01c-.098.454-.182.9-.23 1.32-.206 1.711.058 3.039.67 3.39.131.079.304.119.51.124.928 0 2.301-.743 3.763-2.102a21.53 21.53 0 01-1.867-2.244 21.806 21.806 0 01-2.846-.488zm4.18.586c.41.528.83 1.007 1.246 1.437.41-.43.831-.91 1.232-1.437a26.056 26.056 0 01-2.478 0z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/protonmail.svg b/assets/lib/simple-icons/icons/protonmail.svg
index 0acad388..6df8b104 100644
--- a/assets/lib/simple-icons/icons/protonmail.svg
+++ b/assets/lib/simple-icons/icons/protonmail.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ProtonMail icon</title><path d="M12 20.352s-1.096-.108-1.955-.705c-.86-.596-6.58-4.688-6.58-4.688v8.098S3.513 24 4.55 24h14.9c1.036 0 1.085-.942 1.085-.942v-8.1s-5.723 4.092-6.58 4.69c-.86.595-1.955.704-1.955.704zM12 .002S4.925-.23 3.465 7.624v5.35s.06.572 1.67 1.735c1.607 1.162 5.773 4.436 6.867 4.436 1.088 0 5.254-3.273 6.865-4.437 1.607-1.164 1.668-1.737 1.668-1.737v-5.35C19.075-.228 12 .004 12 .004zm4.846 10.536h-9.69V7.624C8.14 3.724 12 3.67 12 3.67s3.863.054 4.846 3.954v2.914z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ProtonMail</title><path d="M12 20.351s-1.096-.108-1.955-.705c-.86-.596-6.58-4.688-6.58-4.688v8.098S3.513 24 4.55 24h14.9c1.036 0 1.085-.942 1.085-.942v-8.1s-5.723 4.092-6.58 4.69c-.86.595-1.955.704-1.955.704zm0-20.35S4.925-.23 3.465 7.623v5.35s.06.572 1.67 1.735c1.607 1.162 5.773 4.436 6.867 4.436 1.088 0 5.254-3.273 6.865-4.437 1.607-1.164 1.668-1.737 1.668-1.737V7.62C19.075-.229 12 .003 12 .003zm4.846 10.536h-9.69V7.623C8.14 3.723 12 3.67 12 3.67s3.863.054 4.846 3.954z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/protonvpn.svg b/assets/lib/simple-icons/icons/protonvpn.svg
new file mode 100644
index 00000000..e257b015
--- /dev/null
+++ b/assets/lib/simple-icons/icons/protonvpn.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ProtonVPN</title><path d="M22.971 2.68a2.68 2.68 0 1 0-5.361 0v.082L5.927 6.534a2.68 2.68 0 1 0-2.218 4.187c.279-.004.555-.052.819-.142l7.673 9.69a2.68 2.68 0 1 0 4.211-.984l4.08-13.937a2.669 2.669 0 0 0 2.479-2.668zm-8.29 15.905c-.414.005-.82.107-1.187.296L5.998 9.393a2.66 2.66 0 0 0 .38-1.115L18.31 4.47c.124.14.263.267.415.379l-4.033 13.735h-.012z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/protools.svg b/assets/lib/simple-icons/icons/protools.svg
new file mode 100644
index 00000000..19e36874
--- /dev/null
+++ b/assets/lib/simple-icons/icons/protools.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Pro Tools</title><path d="M.505 15.452Q.27 14.63.14 13.762.01 12.891.01 12q0-2.49.94-4.673.94-2.184 2.572-3.804Q5.155 1.902 7.339.938 9.523 0 12.012 0q2.465 0 4.65.94 2.183.962 3.815 2.583 1.633 1.62 2.572 3.804.94 2.184.94 4.673 0 .869-.118 1.714-.118.846-.352 1.644.21.047.34.07l.13.024-1.363 3.429-.188-.012-.54-.106Q21.1 19.937 20.02 20.9q-1.057.987-2.325 1.668-1.268.68-2.724 1.056-1.433.376-2.96.376-1.55 0-3.005-.376-1.433-.375-2.7-1.068-1.269-.693-2.35-1.656-1.08-.963-1.878-2.16-.282.094-.434.117l-.153.024-1.48-3.382.118.012.376-.059zM22.744 12q0-2.23-.846-4.18-.845-1.95-2.301-3.405-1.456-1.456-3.429-2.301-1.949-.846-4.156-.846-2.231 0-4.18.846-1.973.845-3.429 2.3Q2.947 5.872 2.102 7.82 1.256 9.77 1.256 12q0 .751.106 1.491.106.74.317 1.444.892-.516 2.02-1.972 1.127-1.456 1.808-2.912.352-.728.916-1.597.54-.869 1.338-1.632.799-.763 1.855-1.256 1.057-.517 2.396-.517 1.315 0 2.419.587 1.103.587 1.913 1.35.81.764 1.304 1.492.516.727.657.986.165.282.47.94.329.633.728 1.361.4.728.822 1.433.423.68.798 1.033.259.258.564.446.305.188.61.329.212-.728.33-1.48.117-.751.117-1.526zM12.012 22.732q1.338 0 2.583-.305 1.268-.33 2.383-.916 1.116-.587 2.055-1.41.94-.821 1.668-1.83-.94-.494-2.173-1.645-1.233-1.15-2.5-3.358-.142-.235-.494-.94-.352-.704-.857-1.455-.505-.752-1.115-1.339t-1.268-.587q-.681 0-1.386.634-.704.61-1.303 1.386-.6.775-1.022 1.503-.423.704-.54.916-1.174 2.066-2.477 3.205-1.304 1.139-2.29 1.656.728 1.01 1.667 1.831.963.846 2.079 1.433 1.115.587 2.36.892 1.268.329 2.63.329z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/protractor.svg b/assets/lib/simple-icons/icons/protractor.svg
new file mode 100644
index 00000000..a75d5b5a
--- /dev/null
+++ b/assets/lib/simple-icons/icons/protractor.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Protractor</title><path d="M12 0C5.37 0 0 5.372 0 12s5.371 12 12 12c6.628 0 12-5.372 12-12S18.627 0 12 0zm-.273 3.789v1.71h.545v-1.71a9.055 9.055 0 015.961 2.468l-1.277 1.278.386.386 1.277-1.278a9.057 9.057 0 012.469 5.96h-1.71v.546h1.717v2.001H2.905v-2H4.62v-.546h-1.71a9.058 9.058 0 012.469-5.96L6.658 7.92l.386-.386-1.278-1.278a9.056 9.056 0 015.96-2.468zM12 6.965a5.912 5.912 0 00-5.913 5.912h11.824A5.91 5.91 0 0012 6.965z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/proxmox.svg b/assets/lib/simple-icons/icons/proxmox.svg
index 2e75aed1..395ffb8f 100644
--- a/assets/lib/simple-icons/icons/proxmox.svg
+++ b/assets/lib/simple-icons/icons/proxmox.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Proxmox icon</title><path d="M4.928 1.825c-1.09.553-1.09.64-.07 1.78 5.655 6.295 7.004 7.782 7.107 7.782.139.017 7.971-8.542 8.058-8.801.034-.07-.208-.312-.519-.536-.415-.312-.864-.433-1.712-.467-1.59-.104-2.144.242-4.115 2.455-.899 1.003-1.66 1.833-1.66 1.833-.017 0-.76-.813-1.642-1.798S8.473 2.1 8.127 1.91c-.796-.45-2.421-.484-3.2-.086zM1.297 4.367C.45 4.695 0 5.007 0 5.248c0 .121 1.331 1.678 2.94 3.459 1.625 1.78 2.939 3.268 2.939 3.302 0 .035-1.331 1.522-2.94 3.303C1.314 17.11.017 18.683.035 18.822c.086.467 1.504 1.055 2.541 1.055 1.678-.018 2.058-.312 5.603-4.202 1.78-1.954 3.233-3.614 3.233-3.666 0-.069-1.435-1.694-3.199-3.63-2.3-2.508-3.423-3.632-3.96-3.874-.812-.398-2.126-.467-2.956-.138zm18.467.12c-.502.26-1.764 1.505-3.943 3.891-1.763 1.937-3.199 3.562-3.199 3.631 0 .07 1.453 1.712 3.234 3.666 3.544 3.89 3.925 4.184 5.602 4.202 1.038 0 2.455-.588 2.542-1.055.017-.156-1.28-1.712-2.905-3.493-1.608-1.78-2.94-3.285-2.94-3.32 0-.034 1.332-1.539 2.94-3.32C22.72 6.91 24.017 5.352 24 5.214c-.087-.45-1.366-.968-2.473-1.038-.795-.034-1.21.035-1.763.312zM7.954 16.973c-2.144 2.369-3.908 4.374-3.943 4.46-.034.07.208.312.52.537.414.311.864.432 1.711.467 1.574.103 2.161-.26 4.15-2.508.864-.968 1.608-1.78 1.625-1.78s.761.812 1.643 1.798c2.023 2.248 2.559 2.576 4.132 2.49.848-.035 1.297-.156 1.712-.467.311-.225.553-.467.519-.536-.087-.26-7.92-8.819-8.058-8.801-.069 0-1.867 1.954-4.011 4.34z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Proxmox</title><path d="M4.928 1.825c-1.09.553-1.09.64-.07 1.78 5.655 6.295 7.004 7.782 7.107 7.782.139.017 7.971-8.542 8.058-8.801.034-.07-.208-.312-.519-.536-.415-.312-.864-.433-1.712-.467-1.59-.104-2.144.242-4.115 2.455-.899 1.003-1.66 1.833-1.66 1.833-.017 0-.76-.813-1.642-1.798S8.473 2.1 8.127 1.91c-.796-.45-2.421-.484-3.2-.086zM1.297 4.367C.45 4.695 0 5.007 0 5.248c0 .121 1.331 1.678 2.94 3.459 1.625 1.78 2.939 3.268 2.939 3.302 0 .035-1.331 1.522-2.94 3.303C1.314 17.11.017 18.683.035 18.822c.086.467 1.504 1.055 2.541 1.055 1.678-.018 2.058-.312 5.603-4.202 1.78-1.954 3.233-3.614 3.233-3.666 0-.069-1.435-1.694-3.199-3.63-2.3-2.508-3.423-3.632-3.96-3.874-.812-.398-2.126-.467-2.956-.138zm18.467.12c-.502.26-1.764 1.505-3.943 3.891-1.763 1.937-3.199 3.562-3.199 3.631 0 .07 1.453 1.712 3.234 3.666 3.544 3.89 3.925 4.184 5.602 4.202 1.038 0 2.455-.588 2.542-1.055.017-.156-1.28-1.712-2.905-3.493-1.608-1.78-2.94-3.285-2.94-3.32 0-.034 1.332-1.539 2.94-3.32C22.72 6.91 24.017 5.352 24 5.214c-.087-.45-1.366-.968-2.473-1.038-.795-.034-1.21.035-1.763.312zM7.954 16.973c-2.144 2.369-3.908 4.374-3.943 4.46-.034.07.208.312.52.537.414.311.864.432 1.711.467 1.574.103 2.161-.26 4.15-2.508.864-.968 1.608-1.78 1.625-1.78s.761.812 1.643 1.798c2.023 2.248 2.559 2.576 4.132 2.49.848-.035 1.297-.156 1.712-.467.311-.225.553-.467.519-.536-.087-.26-7.92-8.819-8.058-8.801-.069 0-1.867 1.954-4.011 4.34z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/pubg.svg b/assets/lib/simple-icons/icons/pubg.svg
new file mode 100644
index 00000000..219fcb06
--- /dev/null
+++ b/assets/lib/simple-icons/icons/pubg.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>PUBG</title><path d="M2.4719 5.02194a.10701.107 0 0 0-.042.0024c-.0096.0036-.0408.006-.0684.006a.34794.3479 0 0 0-.07922.0078c-.0245.0078-.0372.0078-.0876.0006-.04441-.006-.06482-.0067-.08332-.0018-.0192.0054-.0374.0048-.0782-.0018a1.20005 1.1999 0 0 0-.14933-.0084c-.0864 0-.0996.0012-.13201.0138a.30274.3027 0 0 1-.08101.0174.20503.205 0 0 0-.07451.018c-.0209.0108-.0346.0138-.048.0114-.0156-.003-.02691.0012-.06001.021-.0353.0216-.0432.024-.05571.018-.0264-.012-.0559-.0078-.09731.015-.06471.0354-.08341.0504-.10502.0827a1.76252 1.7623 0 0 1-.081.1021c-.06181.0738-.10862.1512-.10862.1806 0 .009.0048.0293.0102.0456.0102.0276.0102.03-.003.0684-.0114.0336-.012.0432-.0066.069.0053.0252.0042.0347-.0072.0696-.012.036-.0126.0427-.0054.0678.0132.0469.0138.0666.003.1033l-.0107.0347.0155.044a.41735.4173 0 0 1 .0186.0725.16442.1644 0 0 0 .0132.0473c.0096.018.0096.066 0 .0751-.0018.0024-.012-.0036-.0216-.0133-.021-.0203-.0216-.0179-.0078.0493l.0102.0492-.0132.0144a.10101.101 0 0 0-.0192.0341l-.0053.0199.0197-.0036.0198-.003.0042.045c.006.0768.0048.1027-.0072.1147-.0096.0094-.0102.016-.0053.064a2.77364 2.7733 0 0 1 .007.162c.0007.0594.0043.1208.0073.1357a.10901.109 0 0 1-.0024.057c-.0126.042-.0162.1062-.0084.1374a.068.068 0 0 1-.003.051c-.0084.021-.009.0282-.0024.048.0078.0234.006.045-.0066.0894-.006.021-.006.0373.0006.0835a1.01182 1.0117 0 0 1 .0084.1085.37575.3757 0 0 0 .0096.0799c.0078.0264.0072.03-.009.072-.0096.024-.0204.0456-.024.048a.15922.1592 0 0 1-.0384.0114c-.04441.009-.09602-.0042-.15602-.0397-.0246-.015-.04861-.027-.05281-.027-.0048 0-.0078.0078-.0078.0193 0 .0149-.0018.0173-.006.0108a.0543.0543 0 0 1-.006-.024c0-.0348-.0378-.0576-.04561-.0276-.0036.0144-.0042.0144-.0246.006-.0174-.0072-.0264-.008-.0528-.002-.04742.0109-.04922.0128-.03721.0385.0102.021.0102.0217 0 .0187a1.83383 1.8336 0 0 0-.07441-.0102c-.05641-.006-.06781-.006-.09301.003a.35794.3579 0 0 1-.0306.0096c-.0012 0-.0018-.009-.0018-.0198 0-.0192-.0013-.0198-.01801-.0173-.0145.0017-.0181.0005-.0181-.008 0-.0101-.0005-.0101-.0107-.001-.0181.016-.0253.012-.0253-.0145 0-.0198-.0017-.024-.0101-.0222-.00841.0018-.01151.009-.01271.0378-.0012.0198-.0041.0384-.0072.0414-.0036.0036-.015-.0012-.0293-.0107-.0199-.0139-.0254-.015-.0348-.009-.02711.0167-.04942.0695-.04992.118 0 .0127-.0036.0211-.0096.0235-.015.0054-.0264-.0133-.0204-.033a.40505.405 0 0 0 .0115-.0552c.006-.0378.006-.039-.0096-.0552a.09531.0953 0 0 0-.0192-.0168c-.0084 0-.0204.0288-.024.057l-.0036.03-.0259.0018c-.02101.0018-.02701.0048-.03121.0168-.0096.0246-.0072.0432.0103.0702l.0156.0252.0106-.024a.12572.1257 0 0 0 .0115-.0348c0-.0144.0036-.0133.0403.012.03121.0216.03171.0222.03171.051 0 .0258-.0024.0318-.018.045a.13352.1335 0 0 0-.0288.0354l-.0107.021-.0282-.0378c-.03911-.052-.06312-.0804-.06602-.0768-.0024.003.0024.0648.0132.1584.0053.0493.0048.072-.0031.129-.009.0648-.009.0732.0013.1254l.0102.0552-.0139.0301-.0137.03.0125.0264c.018.036.0173.0737-.0024.1128-.0137.0276-.0156.0365-.0137.0821a2.28028 2.28 0 0 1 0 .1111l-.0014.0593.0211.0174c.012.0097.0216.02.0216.0229 0 .003-.0101.006-.0221.0072L0 8.75294l.0247.0163a.19412.1941 0 0 0 .04011.0204c.0115.0024.0156.0077.0168.0221.0013.0144.0048.0192.0139.0192.0084 0 .0125-.0048.0137-.0168.0024-.0186.0019-.0186.0216-.0089.01921.0084.02531.0264.01391.0396-.0174.021-.0174.0252.0012.0317.012.0043.0186.0108.0186.018 0 .0096-.0018.0103-.015.0043-.0127-.0053-.0174-.0053-.024.0017-.0115.0115-.0216.0463-.0151.0504.0024.0014.0235-.0029.0463-.0096l.042-.0125.06842.021c.0636.0198.0708.0203.1002.0143a.08951.0895 0 0 1 .06121.0043c.0234.0084.03961.0101.07071.0072a3.73206 3.7316 0 0 1 .11232-.0072c.0396-.0013.0864-.0072.10381-.0127.0318-.0089.0324-.0089.07921.0096.054.0211.09181.0235.14402.0096a.34334.3433 0 0 1 .0726-.0089h.03961l.006.0264c.0042.0204.0042.0312-.0024.0456-.012.0293-.0096.063.0072.096.0173.0348.018.036.006.036-.0072 0-.009.0079-.009.033a.34994.3499 0 0 1-.0096.072c-.009.0347-.009.0414-.0006.0702.015.0504.0173.1183.006.1524-.0084.0247-.0084.0348-.0024.0739a.93171.9316 0 0 1 .009.087c.0012.024.0048.0426.0096.0455.0054.0036.0048.009-.0024.0235-.0053.0101-.0126.0173-.0156.0156-.0084-.0054-.0072.0005.0024.0204.0078.0144.0078.0197-.0006.0437-.009.024-.009.033-.0024.078.0096.0607.0102.0697.0042.1399-.0042.0462-.003.0594.0072.0924.0114.0342.0114.0408.0042.06a.37365.3736 0 0 0-.0174.138.36935.3693 0 0 1-.0066.0936c-.0114.0672-.009.1068.009.1542.0102.0276.0107.0318.003.0366-.0067.0036-.0084.0102-.0054.0246a.061.061 0 0 1-.0066.0396c-.0078.0156-.0096.0282-.0067.0564.0025.0204.0061.0703.0085.1116.003.0576.0078.0847.0192.1152l.0144.0396-.0133.0294-.0137.0289.0144.036a.34724.3472 0 0 1 .0192.0612c.0042.0252.0036.0257-.0132.0257l-.0168.0007.0156.0084c.0144.0077.0162.0125.0204.0641.0078.0888.0066.0991-.0084.1195-.0132.0173-.0138.0233-.0107.0653.003.0414.0023.0487-.0115.0756-.015.0288-.015.0319-.0108.1106.0036.0756.003.084-.0108.126-.0138.0413-.015.0533-.0138.144a1.38287 1.3827 0 0 0 .0078.1409c.0096.0583.0084.1368-.0013.18-.0113.0475-.0107.1519.0007.201.0066.03.0084.0727.0072.1891l-.0018.15.0192.0396c.0114.0234.0174.0438.0156.0516-.0018.0072.0012.021.0072.0312.0103.0174.0103.018-.01.0587-.0188.0379-.0205.045-.0212.101 0 .0527-.0024.0635-.016.0911l-.0164.0318.0096.0522a1.06263 1.0625 0 0 1 .0115.1308c.0012.0427.0048.0871.0084.0984.0048.0156.0041.024-.0024.0374-.006.01-.009.034-.009.0629a.44936.4493 0 0 1-.0073.0804c-.006.0288-.0053.039.0031.0648.0125.0372.0125.051.0017.0924-.0066.0264-.0072.0833-.0029.3288.003.1632.006.309.0067.324a.58807.588 0 0 1-.0014.048.20433.2043 0 0 0 .0048.051c.0048.0222.0048.0467 0 .0942a.36274.3627 0 0 0 .002.12c.0113.075.0106.1392-.002.1704-.0077.0199-.0089.03-.004.0468a.11931.1193 0 0 1 .004.0403l-.0017.0173-.08402.0024c-.0462.0013-.09961.0053-.11821.0096-.03.0067-.039.0067-.07201-.0031-.0414-.0113-.09241-.0096-.16802.006-.038.0084-.042.008-.06-.0031-.01871-.0101-.02231-.0107-.05602-.0031a.24433.2443 0 0 1-.13001-.0005l-.0343-.0096-.03901.0228-.039.0233.021.0019c.0126.0013.0205.0053.0205.0101a.15362.1536 0 0 1-.0163.0444c-.0005.0013-.0084-.0024-.0161-.0079-.0151-.0089-.0168-.0089-.05601.012-.0268.0144-.046.0204-.0568.0192-.02111-.003-.02111.0013-.002.024.0174.0204.0157.0228-.02681.0336l-.03.0077v-.0227c0-.02-.002-.0234-.0127-.0234-.0187 0-.04201.0564-.04851.1193-.006.0576-.0036.0739.0137.0955.015.0192.0144.0466-.0012.0821a.09501.095 0 0 0-.009.0547c.0018.0144.0054.0384.0073.0528a.12852.1285 0 0 1-.0036.0485c-.0103.0319-.0091.149.0024.192.0132.0493.012.0883-.0031.1183a.072.072 0 0 0-.009.0468.15872.1587 0 0 1-.0047.0533c-.0072.0295-.0072.033.0053.0595.0108.0222.015.0462.0204.1146.0067.0942.0127.111.042.1176a.057.057 0 0 1 .0276.015c.0096.0101.009.0108-.0084.015-.0245.0053-.0276.012-.0132.0307l.012.015.0096-.0193c.0096-.018.0108-.0186.03961-.015.0444.006.05761.0125.07391.0384.03.0474.07201.0678.12482.0594.0106-.0013.0252 0 .0317.0043.0072.004.0552.0065.12602.0077.102.0006.11761-.0006.15002-.0114.0468-.0163.1123-.018.13991-.0031.0168.009.0234.0096.0408.004.0114-.004.04131-.0064.06722-.006.0708.002.0762.0013.0996-.015l.02281-.015.0168.018c.009.0097.0204.018.0253.018.0065 0 .007.0253.0059.138-.0018.1285-.0012.1393.0102.1657.0156.0354.0156.048 0 .0834-.0114.0252-.012.0354-.0084.0804.0078.0912.0067.1164-.0053.1434-.0115.0253-.0115.0258.001.0426.012.0162.012.0187.0037.0456a.22233.2223 0 0 0 .0036.1308c.0102.0336.0114.045.006.0804a.94412.944 0 0 0-.006.102c0 .0607 0 .062-.015.0654-.0133.0032-.015.0073-.015.032a.42205.422 0 0 1-.006.0545c-.006.0307.0018.0972.0162.135a.49396.4939 0 0 1 .0168.066.47016.4701 0 0 0 .012.0527c.0042.0102.0024.0108-.0234.0072l-.0282-.0043.0078.0168a.12252.1225 0 0 0 .021.0331l.0144.0156-.024.0161a.10361.1036 0 0 0-.027.0247c-.0036.0103.0173.024.045.0293a.09371.0937 0 0 1 .03301.0126c.0108.008.0102.0084-.0102.009-.0156 0-.0258.0049-.0402.02l-.0187.0191.0115.057c.015.0726.015.0804-.0012.0912l-.0132.009.0173.0085c.0175.0084.0181.0096.0163.0456-.0018.0312.0013.045.0186.087a.868.8679 0 0 1 .0276.08c.0084.0335.021.0556.054.0964a.11931.1193 0 0 1 .02701.0504.0485.0485 0 0 0 .0228.0367 1.11454 1.1144 0 0 1 .06181.0521c.0642.0588.09961.084.12672.09a.16882.1688 0 0 1 .052.0271.14962.1496 0 0 0 .09431.0341c.0114 0 .03851.0084.06001.0187.0337.0156.0433.018.06901.0144a.29704.297 0 0 1 .039-.0029c.24134.0091.26894.0113.31204.0233a.20403.204 0 0 0 .09081.0091.25243.2524 0 0 1 .09052.0067c.0408.0096.0467.0096.0756.0013a.10301.103 0 0 1 .05701-.003c.0383.0083.12302.0066.16022-.0044.0559-.0156.12672-.0186.16682-.006.0324.0096.0373.0096.06241.0007a.10901.109 0 0 1 .0487-.0053.0652.0652 0 0 0 .04001-.0067c.0157-.0072.0217-.008.0325-.0024.0067.0043.0355.0079.06361.0084.0283 0 .05701.0036.06361.0072a.28994.2899 0 0 0 .06.0132c.10082.0144.10682.0144.13442 0a.0763.0763 0 0 1 .05331-.0094c.09671.012.15502.015.20483.012.0377-.0024.066-.0013.084.0036a.51706.517 0 0 0 .09302.0091c.0558.0012.0733-.0007.11271-.0133l.0463-.0143.01921.0132c.0252.018.07731.0221.10971.0091.0151-.0067.0247-.008.0259-.0036.0012.0031.01321.006.02701.006a.67738.6773 0 0 1 .07801.0091c.0467.0084.0587.0084.11872 0a1.09423 1.0941 0 0 1 .11781-.0091c.0485 0 .0521.0012.072.018l.02041.018.10321.0012c.17093.0019.18053.0024.19923.0101.0144.006.0216.0053.0401-.0029.0204-.009.027-.0096.05521-.0024a.16772.1677 0 0 0 .0588.0036 1.77652 1.7763 0 0 1 .06192-.0084c.0396-.0053.0586-.015.0696-.0354.0048-.0096.0125-.0138.024-.0138.02091 0 .01801.0107-.0084.0307l-.0192.0143.03291.0043c.09001.0114.10441.012.13752.0053.0288-.0053.0389-.0053.0612.0024.04081.0144.18243.0036.23043-.0174.0378-.0168.06061-.0192.09301-.009a.37525.3752 0 0 0 .06901.0083c.0264.0012.10622.004.17703.0077a2.05755 2.0573 0 0 0 .16982.0031c.0354-.003.042-.0053.0486-.018l.0072-.0144.0072.015c.0067.0144.0102.0156.0462.0156a.52406.524 0 0 1 .07982.0072c.0348.006.0451.0055.0648-.0024.0223-.0091.0252-.0091.04991.0024.0245.0114.0276.0114.051.0024.01981-.008.04931-.0096.13732-.0096h.11223v-.018c0-.0227.0054-.0227.0271 0 .0144.015.0221.018.0444.018a.17002.17 0 0 0 .0456-.0068c.01561-.006.02211-.0048.04201.0048l.0233.012.04391-.0144c.0492-.0168.07441-.0156.09961.0043.0192.0156.0396.015.08281-.0006.027-.0102.0353-.0156.0353-.0246 0-.0096.0024-.0107.0108-.0072.0055.003.05352.0053.10632.0053.06601 0 .10322.0024.11952.0084.0173.006.0384.0072.078.0043a5.53198 5.5313 0 0 1 .18773-.0068c.0739-.0012.13682-.0043.14042-.006a.0403.0403 0 0 0 .0108-.0168c.0048-.012.0053-.012.015.0067.0114.0222.0097.0215.0409.012.018-.0053.03171-.0056.06051.0006.0288.0053.0444.006.06721.0005.048-.0113.20053-.0125.22103-.0024.0131.0072.0209.0072.04.0019.018-.0053.0277-.0053.0391-.0005a.0357.0357 0 0 0 .03121.0005c.0096-.0036.0576-.0072.10742-.0091.0846-.0024.093-.0017.13381.0127.039.0138.0492.015.09841.0114a.48596.4859 0 0 0 .19073-.051c.0667-.0342.14531-.0594.18612-.0594.0414 0 .0739.0108.12602.042.0468.0288.0595.03.06.0072.0007-.0137.0019-.0127.0072.0084a.18532.1853 0 0 0 .0168.039c.0084.0127.0108.0133.0199.006.0053-.004.0096-.012.0096-.0162 0-.0103.003-.0103.02701-.002.0234.0092.08581-.0028.09111-.0172.0024-.0048-.0005-.0168-.006-.0264-.0096-.0168-.0096-.0174.0019-.014.0168.0054.10671.0164.13132.0164a.17642.1764 0 0 0 .0432-.0096l.0235-.0096v.0209c0 .0199.0005.0204.018.0168.01371-.0024.01801-.0012.01801.0067 0 .012.0084.0125.018.0007.0125-.0151.018-.0102.018.0149 0 .0199.0017.024.012.024.0107 0 .012-.0043.012-.0353 0-.0494.0103-.0571.04131-.032l.0235.0188.021-.0235a.12902.129 0 0 0 .03421-.0907c0-.0262.0127-.0449.027-.0389.0085.0031.0097.0077.006.0235a2.59702 2.5967 0 0 0-.009.0564c-.0024.0204-.006.0396-.0084.0426-.0017.003.0048.0131.015.0227l.0187.0175.01141-.0144c.0077-.0091.0113-.0234.0113-.0414v-.0282l.0192.0192c.0173.0173.0187.0204.0115.0354-.0067.015-.006.018.0125.036.0192.018.05881.0324.05881.0204 0-.0204-.0156-.0733-.0281-.0954-.0139-.024-.0144-.0282-.0079-.0486.0067-.0192.006-.0253-.0053-.0468a.10931.1093 0 0 1-.0127-.0366c0-.0091-.0048-.012-.0192-.014l-.0197-.0018.0204-.0107.0197-.0116.0235.023.0233.0226v-.033l.0264.0228.02701.0229-.0234.024-.024.024.024.0077c.0319.0096.036.009.036-.0048 0-.012.009-.015.0264-.0084.0163.006.0108.0197-.0137.0317-.0168.0091-.024.0168-.0271.0307-.0017.0096-.0053.0257-.0072.0353l-.0036.0168.0293-.0024c.0218-.0024.0415.0013.07461.0127l.0456.0156.17933-.0065c.22873-.0084.22503-.0091.28034.0043.0438.0108.0486.0108.0948.0013.04802-.0103.04932-.0103.06532.0017.0163.012.017.012.0367.0019.0222-.012.0773-.0137.15361-.0053a.16702.167 0 0 0 .08581-.0092c.04321-.0137.05821-.0137.09901.0024.0293.0115.23883.0133.30254.003.0396-.0066.06001-.0047.12842.0102.0137.0036.0161.002.0161-.0101 0-.0257.0084-.0307.0199-.012.0125.0223.0444.0283.0907.0187a.38305.383 0 0 1 .07062-.006.62088.6208 0 0 0 .0684-.003c.02-.003.03552-.0018.04402.003.0112.006.0155.0055.0268-.0053.0134-.012.0144-.0127.0367-.0031.018.0072.0341.0084.0804.0055a.45176.4517 0 0 1 .11472.0048c.031.0055.07661.0113.10061.0138l.04321.0043v-.0392l.026.0036a.22643.2264 0 0 1 .05511.0175c.0276.0127.0367.0137.12072.012.063-.0005.0972.0012.11331.0067.0192.0067.0264.0065.04801-.0012.024-.0084.0288-.0079.08761.0072.08101.0204.16802.0264.20403.0139a.14082.1408 0 0 1 .0828-.0043c.0091.0024.027 0 .04502-.0067.0385-.0134.0913-.0139.16502-.0013.0499.0092.0672.0092.13271.0025.06301-.006.08101-.006.11102.0012.0246.006.0427.0065.057.0029a.15502.155 0 0 1 .05102-.0013c.051.0067.61637.0133.64808.0079.0703-.012.0816-.012.11601-.0024.0304.0084.04001.0084.08201.0012a.35904.359 0 0 1 .07681-.0048.12632.1263 0 0 0 .05601-.0077c.0148-.0053.0311-.0084.03711-.006.0053.0024.05331.0067.10611.0096.05281.0024.11762.0084.14352.0132.04441.0084.04921.0079.07321-.003.0173-.0071.0264-.015.0264-.0222 0-.0072.0103-.0161.0307-.0264l.03-.015.0233.0253c.0156.0161.024.0216.024.0149 0-.0103.06001-.0107.35105-.0031.0462.0013.098-.0005.11401-.0036a.42905.429 0 0 1 .06001-.0072.10001.1 0 0 0 .04691-.0127c.0168-.0106.0173-.0106.05101.0036.0325.0139.04091.0144.15182.0144h.11831l.0245-.0257c.0133-.0139.0247-.0276.0247-.0307 0-.0209-.0614-.0605-.0943-.0605h-.0365c-.0134 0-.0187-.0024-.0156-.0067.0024-.0048.0173-.006.042-.0036a.29204.292 0 0 0 .06661-.0036.45846.4584 0 0 1 .05581-.0072.14552.1455 0 0 0 .0372-.0053c.0072-.0036.01-.0013.012.0096.0012.0107.0067.0144.0228.0173l.021.0036-.0222.0096c-.021.0096-.0227.0127-.0227.0343 0 .0132-.002.024-.0037.024a.19592.1959 0 0 1-.0324-.024.26503.265 0 0 0-.0312-.024c-.0012 0-.0006.018.0019.0401a.22933.2293 0 0 1 .0017.0468c-.0036.0084.0228.0211.0432.0211a.08601.086 0 0 0 .0336-.0096c.0173-.0091.0192-.0091.04871.0096.0186.0115.0353.018.04261.0156.0071-.0013.0222-.0055.0342-.0084.0132-.0036.06241-.0036.12292-.0007.0583.0024.11331.0024.13151-.0012a.38775.3877 0 0 1 .07201-.0036c.034.0007.04601-.0012.06401-.012l.0229-.0132.0253.0144c.021.012.0341.0151.07251.0151a.25653.2565 0 0 1 .08341.0125c.0354.0115.03841.012.07621.0024.04271-.0102.12432-.0138.15482-.006.012.0024.0331.0006.05711-.0048.03-.008.05101-.0084.10082-.0043a.55077.5507 0 0 1 .0881.0126c.026.0079.0294.0079.13872-.0174.0365-.0085.04611-.0085.06481-.002a.14872.1487 0 0 0 .08041.0036c.0103-.003.012-.0012.012.0156 0 .0156.0017.018.0072.0127.0053-.0053.04271-.0072.13152-.0072.0737 0 .13682-.003.15602-.0072a.33734.3373 0 0 1 .12121-.0017.09631.0963 0 0 0 .05401-.0048.072.072 0 0 1 .04661-.0048.07801.078 0 0 0 .04511-.0029c.0276-.0096.0408-.0101.05521-.0029a.30394.3039 0 0 0 .04391.0156c.0307.0103.0353.0101.06301.0013.039-.0128.24423-.017.26464-.0053.0107.006.024.006.0641 0 .04502-.006.05472-.006.08642.0035.033.0103.0379.0103.0648.0013.0367-.012.10752-.0145.15852-.0053.05521.0095.39665.006.43026-.0044.0234-.0072.0282-.0067.0613.0084.0323.0144.0419.0156.09472.0144a3.09878 3.0984 0 0 1 .12841.0007c.09241.0024.16572-.0115.18903-.036l.0163-.0174.0067.0138c.0091.0173.0312.0281.0593.0281.0156 0 .0223-.0024.0223-.0091 0-.0048.0031-.0091.006-.0091.0036 0 .006.0036.006.0072.0005.0192.0096.0235.0288.0133a.0604.0604 0 0 1 .0377-.0053.17642.1764 0 0 0 .05602-.0037c.036-.0067.0395-.0065.06.006.0191.012.0292.0139.08082.0134.0547-.0007.12071-.0128.13511-.024.0036-.0032.06241-.0053.13012-.0053.092-.0007.13272.001.15802.0076.048.0126.0666.0114.0971-.0065.0341-.0204.05932-.0174.13132.0133l.05401.0233.19203.0036c.10581.0024.25463.0072.33024.0107.12361.0067.14212.006.17572-.003.024-.006.04441-.0083.05701-.0052.0102.0024.07501.006.14402.0072.11001.0019.12431.0012.12431-.0072 0-.0156.0294-.0223.08161-.0187.0414.0036.05871.0017.10862-.0106.0552-.014.0708-.0151.21782-.0163.15542-.0013.15962-.0017.18783-.0163a.22253.2225 0 0 1 .069-.0192c.04442-.0048.05582-.0096.09422-.039a.15412.1541 0 0 1 .0486-.0234c.0235-.0036.03962-.0156.13562-.0984.024-.021.05001-.0427.05711-.0487a.0685.0685 0 0 0 .0173-.034c.0024-.0145.0134-.0337.0283-.0505a.22053.2205 0 0 0 .05281-.0996.57167.5716 0 0 1 .0257-.0715.18152.1815 0 0 0 .018-.0826c.0007-.0367.0024-.0422.0156-.0523.0134-.0103.014-.012.0043-.015-.0132-.0054-.0132-.0325.0013-.1002.0095-.0463.0095-.0535.0023-.06-.012-.0097-.0064-.053.0085-.063.0084-.0068.0089-.0102.0036-.0193-.0096-.015-.0096-.369-.0006-.4368.0053-.0408.0048-.0522-.0029-.072-.0084-.0216-.0084-.0253.003-.0493.0112-.0245.0112-.0275.0023-.051-.0077-.0197-.0096-.0491-.0096-.1367v-.1122l-.0192-.0019-.0192-.0019.0192-.0216c.021-.024.0252-.0564.0127-.0924-.006-.0156-.0048-.0222.0048-.042l.012-.0234-.0144-.0438c-.0168-.0493-.0156-.0744.0043-.0996.015-.0192.015-.0348-.0007-.081-.0096-.0294-.015-.0372-.0245-.0372-.0096 0-.0108-.0024-.0072-.0107.0029-.0053.0053-.0547.0053-.1093 0-.0547.0024-.1032.006-.108.003-.0048.0072-.032.009-.0595l.003-.0504.033-.0113c.06001-.021.10552-.0114.20403.0438l.033.0187.0036-.0205c.0036-.0204.0072-.0168.0144.0162.0079.036.0353.0516.0427.0234.0029-.0114.0067-.0138.0137-.0107.0197.0083.04922.0095.07872.0023.0252-.006.03-.0096.03-.021 0-.0078-.0024-.0162-.006-.018-.0031-.0018-.006-.006-.006-.009 0-.006.0269-.0041.0989.0065.0348.0055.04682.0048.06902-.0031.036-.0126.036-.0126.036.0114 0 .0192.0013.021.0114.015.0173-.0091.0245-.0072.0245.0067v.012l.0168-.0127.0163-.0132.0019.0247c.0019.0197.004.0245.0137.0245.0102 0 .0114-.004.0114-.0353 0-.0468.009-.054.0378-.03.0204.0168.0227.0173.036.009.0216-.015.04022-.0533.04562-.0966.0053-.0456.0138-.0587.0282-.0437.0084.0084.0089.0132.0029.0293a.15352.1535 0 0 0-.0067.042.14572.1457 0 0 1-.006.039c-.0053.0145-.0043.0187.01.0337a.07901.079 0 0 0 .0193.0168c.009 0 .0216-.03.0247-.0571l.0029-.03.0276-.0053c.0252-.0048.0288-.0079.0353-.0276.0067-.0204.006-.0245-.0091-.0504-.0091-.015-.0187-.0276-.021-.0276-.003 0-.0102.015-.0162.0336l-.0107.033-.035-.0246c-.0328-.024-.03401-.0257-.03401-.0516 0-.0227.003-.0293.0173-.042a.15502.155 0 0 0 .0307-.0353l.0132-.0211.0252.0348c.0144.0187.036.045.0473.0583l.0216.024.0006-.0254c0-.0233-.003-.0514-.018-.1606a.19972.1997 0 0 1 0-.066c.0127-.0534.0144-.132.0031-.1759-.0108-.0413-.0108-.042.0017-.0684.0162-.033.0162-.039.0012-.0715-.0162-.036-.015-.06.0043-.0972.0168-.0324.0204-.0677.0144-.1541a.45016.4501 0 0 1 .0024-.069c.0043-.036.0043-.036-.0144-.0467a.071.071 0 0 1-.0246-.023c-.006-.0101-.0043-.0113.0162-.0113l.0227-.0005-.0203-.0174a.15812.1581 0 0 0-.0408-.0246c-.0162-.0055-.0198-.0096-.0198-.024 0-.0134-.003-.0174-.012-.0174-.0096 0-.012.004-.012.018 0 .021-.0006.021-.0234.009-.0234-.012-.0264-.0233-.0113-.0427.0127-.0154.0127-.016.002-.024a.04.04 0 0 0-.0193-.0083c-.0043 0-.0077-.0053-.0077-.0125 0-.0096.0024-.0115.0107-.0084.0259.0107.0295.0096.039-.0108.0205-.0427.0133-.0475-.04371-.0283l-.0349.012-.05931-.0192c-.03841-.0126-.06841-.0186-.08591-.0173-.05761.0031-.07611.002-.10731-.0072-.0294-.009-.0374-.009-.09001-.0007a.42135.4213 0 0 1-.09481.006.19162.1916 0 0 0-.06601.0055c-.0408.0126-.06201.0114-.10032-.0067-.0401-.018-.0881-.0204-.14762-.006a.25013.2501 0 0 1-.108.006c-.0187-.003-.024-.0079-.0377-.0348a.13962.1396 0 0 1-.0163-.0533.08081.0808 0 0 0-.0096-.0379c-.0096-.0144-.0089-.0162.0107-.0486.0205-.0324.021-.0347.0133-.0534-.012-.0282-.0115-.1284.0005-.144.0115-.015.0115-.0264 0-.0264-.0156 0-.0096-.01.0077-.0138a.08841.0884 0 0 0 .0312-.015c.0127-.01.0134-.0133.0067-.0216a.0287.0287 0 0 0-.0192-.0096c-.0113 0-.0114-.0013-.0019-.0186.0156-.03.0013-.1014-.0204-.1014-.0084 0-.0125-.008-.0186-.0354-.0041-.0192-.006-.0414-.0035-.0492a.13962.1396 0 0 0 .006-.0288c.003-.0396.0106-.0787.0156-.0787.003 0 .0036-.0083.0017-.0179-.0031-.0144-.0017-.018.0067-.018.0096 0 .0096-.0013.0005-.015-.0132-.0204-.0127-.0211.0144-.0211.0199 0 .024-.002.024-.012 0-.0091-.0043-.012-.0173-.012-.0132 0-.018-.0031-.0174-.0107a.23483.2348 0 0 0-.0097-.047c-.0114-.0431-.0126-.0928-.0024-.1031.0048-.0048.0048-.009 0-.015-.0048-.0052-.0053-.0143-.0019-.027.0041-.0125.0031-.0276-.0029-.0467-.0126-.0426-.0096-.1422.0072-.209.0043-.018-.0043-.076-.0204-.1403-.0084-.0353-.0084-.0401.0013-.0677.01-.0276.01-.0391 0-.0734-.0025-.0076 0-.01.0107-.01h.0139l-.0012-.1392c-.0012-.1074-.0043-.1494-.012-.1806-.0084-.0336-.009-.0451-.003-.0672.0097-.0367.009-.066-.0018-.0876-.008-.0144-.0084-.0223-.003-.042.0054-.0204.0049-.03-.0035-.0534-.0096-.0265-.0096-.0306-.0007-.0493.0223-.0467.0253-.0732.0133-.1121a.15932.1593 0 0 1-.0073-.0679.47476.4747 0 0 0-.0019-.0864c-.0048-.0432-.0036-.0617.003-.087.0071-.0263.0071-.0413.0018-.0822-.006-.0437-.0053-.0533.0043-.0823.0103-.0288.0103-.0365.0036-.0617-.0156-.0612-.018-.102-.0096-.144.0048-.0228.0084-.075.0084-.1213 0-.0443 0-.0851.0007-.0899.0024-.0619-.0053-.2239-.0113-.2436-.0072-.0228-.0067-.0264.009-.057a.10401.104 0 0 0 .0145-.0654c-.002-.0396-.002-.0588.0006-.156.0031-.0955-.0102-.1615-.03782-.1897-.0162-.0174-.0168-.0192-.006-.0216.0162-.0041.0293-.0264.0342-.0564.0036-.0222.0024-.0252-.0102-.0294l-.0139-.0043.015-.004c.0107-.0032.0145-.008.0133-.0163a.8836.8835 0 0 1-.0072-.0594 1.08013 1.08 0 0 0-.0091-.0642c-.0031-.0114.0005-.0258.0126-.0498l.0162-.0342-.0067-.0678c-.0043-.0444-.0115-.0792-.0198-.099a.10081.1008 0 0 1-.009-.0618c.0047-.0378.0047-.027 0-.1152-.0032-.0565-.0018-.0805.006-.1098.0131-.0523.012-.0751-.0054-.108-.0198-.0374-.0192-.0534.006-.1104.03471-.078.039-.1063.039-.252v-.1308l-.024-.012c-.0138-.0072-.027-.0192-.03-.0276-.0084-.0223-.0072-.0614.0029-.095.0114-.0384.0114-.0816-.0006-.0984l-.009-.0132-.0114.0134-.0113.0137-.0007-.0187a.11971.1197 0 0 0-.0144-.0449l-.0144-.0264.0247-.0259c.0173-.0173.0216-.0252.015-.0252-.012 0-.021-.0365-.0133-.0492.0048-.0072.0096-.1637.0084-.2717a.62038.6203 0 0 1 .003-.0733c.0035-.024.004-.0246.0318-.028.08881-.011.12122-.011.16322-.0007a.23993.2399 0 0 0 .15462-.0115c.0374-.0156.03861-.0156.07201-.0072.0314.0084.13272.0163.22943.0174a.26003.26 0 0 0 .06771-.0078.08131.0813 0 0 1 .05471-.0012c.0245.0067.0324.0054.09721-.0149.06901-.0217.07031-.0216.09791-.012.04731.0161.06051.0173.06051.0072a.13362.1336 0 0 0-.0084-.03c-.0091-.0216-.0197-.0259-.04011-.015-.0096.0053-.0115.004-.0115-.0054 0-.0073.0067-.0139.018-.0181.021-.0072.0221-.012.0053-.033l-.012-.0156.0161-.015c.0216-.0204.0324-.0192.0324.003 0 .0138.0024.018.012.018.0096 0 .012-.0042.012-.018 0-.015.0036-.0192.0216-.027a.26593.2659 0 0 0 .04031-.0225l.0192-.0138-.024-.003-.024-.0036.0264-.0253.0264-.025-.0048-.0342a.34014.3401 0 0 1-.0029-.0648c.0067-.0797.0031-.1187-.0144-.1524-.0144-.0276-.0163-.0377-.0133-.0624a.12202.122 0 0 1 .0126-.0437c.012-.0187.0115-.0312-.0036-.0648-.012-.0271-.012-.03-.0031-.066.012-.0468.012-.0871.0005-.1567-.006-.0396-.0072-.0636-.003-.09.0107-.0715.018-.1327.018-.1555v-.0473l-.0157.0144a.50576.5057 0 0 0-.04561.0547c-.0168.0226-.0324.0406-.0341.0406-.0017 0-.0096-.0106-.0173-.0245-.008-.0133-.0206-.027-.029-.0307-.0126-.006-.0144-.0106-.0137-.0372 0-.0293.0012-.0312.0276-.0504a.24103.241 0 0 1 .0342-.0226c.0043-.002.0113.0106.018.0305.0067.018.0133.033.0156.033.0024 0 .0113-.0133.0204-.03.015-.027.0156-.0318.0091-.054-.0067-.0217-.0091-.024-.027-.024-.03351 0-.03831-.0042-.03831-.036 0-.0193-.0036-.033-.0114-.0427l-.0113-.0143-.0187.018c-.012.0107-.0173.021-.0149.027a.8324.8323 0 0 1 .0161.102c.0007.0102-.0024.0155-.0102.0167-.015.0031-.0216-.0084-.0216-.0384a.14102.141 0 0 0-.0282-.0852c-.0204-.0276-.0276-.0288-.05231-.0101-.0312.024-.0396.0173-.0396-.03 0-.0348-.0012-.0396-.0101-.0379-.0079.0014-.0115.0084-.0127.0247-.0024.0245-.0048.0264-.024.0125-.012-.0084-.0132-.0084-.0132.0014 0 .0077-.0036.0089-.018.0058-.0173-.0029-.018-.0024-.018.018 0 .018-.0019.0211-.0102.0174-.039-.0155-.04671-.016-.10921-.009a1.12344 1.1233 0 0 0-.07801.0103c-.0144.0036-.0144.003-.0048-.0108.0156-.0216.0126-.0336-.0091-.0408-.042-.0127-.05881-.0139-.07741-.0043-.024.012-.0222.012-.0246-.0041-.0031-.0228-.0254-.0204-.0374.0036a.10301.103 0 0 0-.0095.033c0 .0071-.0024.0143-.006.0162-.0036.0024-.006-.0043-.006-.015 0-.0227-.006-.0217-.06361.012a.40235.4023 0 0 1-.07861.0335c-.03721.0103-.042.0103-.07681.0014a1.17114 1.171 0 0 1-.08521-.0283l-.04741-.0187-.0101-.0461c-.0187-.0859-.0228-.1279-.0127-.1464.0107-.021.0107-.0367-.0006-.0739-.0115-.0372-.0067-.1517.0072-.1836.009-.0192.0084-.0257-.0072-.1037-.015-.0756-.0156-.0864-.0091-.1152a.16802.168 0 0 0 .0036-.0595l-.0043-.0276h.0198c.0246 0 .0126-.0096-.0198-.015l-.0216-.0036-.0031-.1062c-.002-.0582-.0006-.1146.0024-.1248.003-.0126.0017-.0318-.0036-.057a.21083.2108 0 0 1-.0053-.0714.17322.1732 0 0 0-.0067-.0678c-.0091-.0307-.0091-.0396-.0012-.0907.006-.0425.0067-.0635.0019-.0845-.0048-.021-.0048-.039.0013-.0708a1.33616 1.336 0 0 0 .0108-.1392c.0031-.0931.0024-.0974-.0125-.1374a.36054.3605 0 0 1-.021-.0937c-.0036-.0365-.0089-.0587-.0173-.0732a.08251.0825 0 0 1-.0116-.0473c.0013-.0228-.0029-.0336-.0221-.0624-.0211-.0324-.0228-.0367-.0163-.054.0115-.0319.008-.0504-.0216-.1063-.0293-.0552-.0377-.0648-.12362-.1325-.0257-.0204-.0672-.0542-.0924-.0746-.045-.0372-.12302-.0797-.14473-.0797a.11401.114 0 0 0-.0329.009.09901.099 0 0 1-.0816-.0006c-.0156-.0079-.0288-.009-.06302-.0053-.0337.0029-.0493.0017-.0667-.0055a.15072.1507 0 0 0-.10262 0c-.0233.009-.0281.009-.0581 0-.0439-.0127-.06962-.012-.10082.0024a.14122.1412 0 0 1-.04751.012.20283.2028 0 0 0-.05401.012c-.036.0127-.06961.015-.08401.006-.0072-.0048-.006-.0084.0084-.0233.0139-.0144.0151-.0174.006-.0156-.04921.0096-.04971.0096-.05161-.0108-.0017-.0187-.0024-.0192-.0276-.0175a.0653.0653 0 0 1-.04861-.0125c-.0216-.0144-.0222-.0144-.0354-.0036-.0096.0072-.0192.0096-.0336.0072a.0623.0623 0 0 0-.0324.0036c-.009.0048-.0138.004-.0192-.0024-.0055-.0067-.018-.008-.05821-.0048-.03841.0029-.05041.0017-.04741-.0031a.0165.0165 0 0 1 .0132-.0072c.0174 0 .008-.0096-.0252-.0259l-.0336-.0168-.03661.015a.48276.4827 0 0 1-.05941.0188c-.0228.004-.0228.004-.0234-.0158l-.0006-.0204-.0084.0192c-.008.0192-.0096.0199-.0426.0199a.51796.5179 0 0 0-.07201.0067c-.036.0065-.039.0058-.06541-.0098-.0264-.0156-.0318-.0161-.07441-.0132-.0408.0031-.04931.0019-.07561-.0113-.0282-.0144-.0318-.015-.11041-.0107-.07561.0035-.08401.003-.12602-.0109-.0413-.0137-.0533-.015-.14402-.0137a1.37187 1.3717 0 0 0-.14101.0077c-.05881.0096-.13872.009-.17713-.0012-.0432-.0107-.15532-.0107-.19802 0-.0252.0072-.06901.009-.18902.0079l-.15602-.0014-.0383.0187c-.0247.012-.04401.0173-.05231.0156a.0527.0527 0 0 0-.0312.0067c-.0173.0101-.018.0101-.05881-.0096-.0379-.0187-.04561-.0204-.10132-.021-.053-.0006-.0643-.0025-.092-.0169l-.0318-.0161-.04922.0101a.99062.9905 0 0 1-.13011.0115c-.04441.0012-.08831.0048-.09731.0084-.0126.0048-.0215.004-.03711-.0024-.0127-.0055-.0408-.0091-.06901-.0091a.40055.4005 0 0 1-.07801-.0072c-.026-.006-.0355-.0053-.06601.0041-.0349.0103-.05171.0103-.09971-.0017-.0258-.0067-.58447.0005-.63128.0077a.11561.1156 0 0 1-.04381-.0017c-.0132-.0048-.0288-.0043-.06061.0024a.21733.2173 0 0 1-.09061.0024c-.02702-.0036-.08833-.0053-.14164-.0036a1.38827 1.3881 0 0 1-.13921-.0019.26723.2672 0 0 0-.07401.0014.08131.0813 0 0 1-.05681-.0038c-.0223-.0077-.04321-.0096-.09741-.0084-.03821.0014-.07491.0054-.08211.009a.0501.0501 0 0 1-.05331-.0018c-.0151-.0113-.0319-.0113-.05831 0-.0168.0067-.04801.009-.13252.009h-.11111l-.0019.0188-.0017.0185-.0235-.021c-.0216-.0205-.0257-.0217-.05281-.0193a.16812.1681 0 0 0-.0408.0091c-.009.0048-.0173.0036-.0346-.0053l-.0235-.012-.04631.0149a.44616.4461 0 0 1-.05401.0144c-.0043 0-.0233-.0084-.042-.018-.0365-.0199-.0353-.0199-.09171.0012-.0235.0084-.0319.015-.0319.0227 0 .0102-.0019.0109-.0161.0049-.0096-.0036-.04131-.006-.07391-.0048-.10012.003-.11102.0017-.15172-.009-.0343-.009-.04561-.0097-.08641-.0037a2.17617 2.1759 0 0 1-.17773.0091c-.13322.0024-.14762.0053-.14822.027-.0006.0054-.006 0-.012-.0126l-.012-.0216-.0283.0084a.08841.0884 0 0 1-.05401.0024c-.036-.009-.04561-.0072-.05691.009-.0103.0138-.0101.0155.0012.042a.30304.303 0 0 1 .012.0306c0 .0012-.0077.0024-.018.0024-.021 0-.0216.0048-.0113.0643.0036.0209.0053.0396.0036.0413-.0013.0019-.0096 0-.0173-.0041-.024-.0108-.0331-.059-.0211-.1087a.8386.8385 0 0 0 .0125-.0564l.0031-.0192-.0373.0024c-.12832.0072-.13852.0072-.16192-.0019-.0192-.0077-.0264-.0084-.04621-.0017-.0192.0067-.0252.0067-.033 0-.008-.0067-.015-.0067-.0378-.0013-.0156.0042-.06841.008-.11822.0085-.0823.0012-.093 0-.12301-.0127-.0307-.0125-.03841-.0132-.09911-.0096-.07561.0048-.12242.0174-.19802.054-.15242.0734-.19383.0734-.32104.0024l-.033-.0185-.0031.0235c-.0024.0173-.0041.0204-.0077.012a.08201.082 0 0 1-.0043-.0254.0621.0621 0 0 0-.0144-.0312c-.012-.0144-.0156-.0149-.024-.0084-.0055.0043-.0096.012-.0096.0163 0 .0192-.0115.0067-.0132-.0144-.002-.0204-.0031-.0221-.0192-.0204a.16922.1692 0 0 0-.04621.0168c-.0282.0137-.03.0139-.06661.0053-.03193-.0072-.11344-.0101-.22686-.0089h-.0948c-.04502 0-.09792.0036-.12002.0084-.0408.0084-.04991.0077-.16142-.012a.09871.0987 0 0 0-.04691.0067c-.024.0094-.033.0094-.07971.0034-.0373-.0053-.05761-.0053-.06901-.0012-.0198.008-.0397.0084-.15422.0054-.04801-.0018-.09971-.0066-.11472-.0107-.0247-.0072-.0319-.0067-.063.003a.26213.2621 0 0 0-.0457.0174c-.0077.0043-.018.0036-.04002-.0048-.0236-.0084-.0344-.009-.0517-.0041a.0592.0592 0 0 1-.04392-.0036c-.0209-.0091-.0426-.0084-.1037.0017a.11651.1165 0 0 1-.04992-.006c-.022-.0077-.0557-.0096-.16852-.0096-.10631 0-.14102-.0017-.14282-.0077-.0019-.0036-.0036.0017-.0036.0132-.0007.0144-.003.0192-.009.0168a.10801.108 0 0 0-.081-.0007c-.0283.0096-.0324.0096-.06482.0007-.069-.0192-.12071-.0254-.15022-.0174a.69409.694 0 0 1-.0972.0114c-.05762.0029-.07602.0017-.10082-.0067-.028-.0096-.0324-.0096-.0533-.0005-.0192.0077-.0312.0084-.07732.0029a.51846.5184 0 0 1-.08099-.0144c-.024-.0072-.0289-.0067-.054.0043-.02.0089-.042.0125-.08242.0137-.0466.0007-.0593.0036-.0804.0156l-.0245.0144-.0264-.0132c-.0216-.0107-.03672-.0132-.07992-.0132-.0293 0-.0629-.003-.0749-.0072-.012-.0036-.027-.0053-.0325-.003-.0053.0025-.05212.0054-.10372.0066-.06961.0019-.10031 0-.11762-.006-.0228-.0077-.0247-.0077-.05.0096-.0203.0139-.03.0168-.0443.0139-.0101-.0019-.0276-.005-.03842-.0074-.0221-.0036-.0587.0091-.0504.0174.0036.0037.0036.0145.0006.0277a.21213.2121 0 0 0-.0053.0413v.02l.0347-.0265.0343-.0264.0017.0252c.0019.0228.0043.027.024.0372l.0223.0113-.0223.0018c-.021.0018-.0227.0036-.0227.0198 0 .0174-.0006.018-.0133.009a.077.077 0 0 0-.0384-.0096c-.057 0-.16272-.0282-.15071-.0402a.16352.1635 0 0 1 .0295-.0084c.0276-.0066.0607-.0289.0708-.048.0053-.0097.003-.015-.0161-.033a.21033.2103 0 0 0-.0331-.0271c-.0053-.003-.0593-.0053-.12-.0053-.09652 0-.11282.0018-.13613.012-.0312.0144-.0504.015-.0691.003a.077.077 0 0 0-.04012-.0084.18272.1827 0 0 1-.0511-.006c-.0139-.0036-.05522-.0066-.09302-.0066-.0378 0-.0738-.0007-.0805-.0007a.37875.3787 0 0 0-.05641.0067.21653.2165 0 0 1-.09001.0006c-.0346-.006-.05281-.006-.07011-.0013a.22103.221 0 0 1-.04931.0067c-.0215 0-.027-.0024-.0293-.0126-.0036-.012-.0042-.0126-.0107-.003-.0097.0126-.09792.0156-.14832.0042a.11301.113 0 0 0-.05641-.0013c-.0162.0043-.0253.0043-.0306-.0005-.006-.0048-.0078-.0043-.0078.0036 0 .012-.0246.018-.05281.0132a.23833.2383 0 0 0-.10081-.002.23603.236 0 0 1-.08701-.0016.37875.3787 0 0 0-.05641-.0067c-.0067 0-.0427.0007-.08041.0007-.0374 0-.07921.0029-.09311.0066a.19252.1925 0 0 1-.0485.0059.11071.1107 0 0 0-.04141.0084c-.0229.012-.039.0115-.07021-.003-.0235-.0102-.0396-.012-.13872-.012h-.11211l-.0288.0246a.23363.2336 0 0 0-.03071.03c-.0012.0024.0084.015.0216.0283a.11551.1155 0 0 0 .0547.0318c.02881.0072.03001.0084.02041.0186-.0091.0102-.0084.0108.0106.0108.0163.0006.0187.0018.0103.006-.0053.0036-.0281.0053-.051.0048-.05701-.0018-.13432.0072-.15002.0168-.0133.0084-.0138.0078-.0138-.009 0-.0162-.0017-.0181-.0223-.0198l-.0226-.0019.0221-.0113c.0199-.0103.0221-.0144.024-.0379l.0017-.0257.0348.0269.0343.027v-.0224a.18702.187 0 0 0-.0053-.0419c-.0036-.012-.0031-.021.0012-.0253.0041-.004.0012-.0083-.0115-.0125-.0161-.0067-.0336-.0062-.0773.0028-.0139.0024-.024-.0006-.04441-.0144-.0254-.0168-.0271-.0174-.0506-.009-.0173.006-.04731.0078-.11762.006-.0516-.0013-.09841-.0042-.10371-.0066-.0053-.0024-.0199-.0006-.0319.003-.01201.0042-.04561.0072-.07492.0067-.0439 0-.0576.0023-.0804.0137-.0156.0078-.02881.012-.03071.0096-.0089-.0144-.0504-.0253-.10131-.0264-.0396-.0013-.06191-.0048-.08161-.0138-.0247-.0108-.03-.0114-.05401-.0042a.50836.5083 0 0 1-.08041.0144c-.0444.0054-.0576.0048-.07811-.003-.0222-.0084-.027-.0084-.051 0-.03781.0133-.12422.0108-.21003-.0067-.0222-.004-.08461.005-.14042.02-.0324.009-.0366.009-.0648-.0007a.10801.108 0 0 0-.08102.0006c-.006.0024-.0084-.0024-.009-.0168 0-.0114-.0018-.0168-.0036-.0132-.0018.006-.0366.0078-.14281.0078-.11282 0-.14642.0018-.16863.0096a.11651.1165 0 0 1-.0498.006c-.06301-.0108-.08401-.0108-.10332-.0013-.0156.008-.024.0085-.0427.003-.0197-.0047-.0293-.004-.0533.0043-.02211.0084-.03241.009-.04011.0048a.26173.2617 0 0 0-.0456-.0173c-.03121-.0097-.03841-.0104-.06312-.003-.0233.0071-.0977.0113-.22012.012a.15352.1535 0 0 1-.04801-.006c-.0127-.0049-.0312-.0049-.0696.0005-.04682.006-.05592.006-.07992-.0036-.0156-.0054-.0347-.0091-.0437-.0072-.08882.018-.12142.0204-.16342.0125a.7917.7916 0 0 0-.12172-.0084h-.09431c-.13372-.0005-.19443.0019-.22663.009-.0374.009-.0386.0085-.0686-.0066a.15562.1556 0 0 0-.05211-.0156c-.012 0-.0487-.0005-.08161-.0005-.13392-.0012-.17052.0005-.21733.0108-.0347.0072-.0534.0149-.0624.0246-.01561.0162-.02341.0179-.02341.0054 0-.012-.0222-.0252-.0516-.03-.02161-.003-.02531-.0018-.03061.0102l-.0067.0138-.004-.0168c-.0043-.0163-.017-.0216-.024-.0103-.0019.003-.02.006-.03971.006a.32774.3277 0 0 0-.063.0067c-.02461.0066-.03001.0053-.06001-.0096-.0312-.0156-.0348-.0163-.09062-.012a.42165.4216 0 0 0-.1032.0192c-.03471.012-.05041.0144-.07202.0106a.30304.303 0 0 0-.0516-.0017c-.05941.0048-.16922.0013-.19203-.0067a.09471.0947 0 0 0-.0894.0086.10501.105 0 0 1-.04211.0149c-.009 0-.0408-.0107-.07131-.0233-.08401-.0355-.10872-.0384-.28804-.0355-.0871.0019-.16392.0007-.17232-.0024-.0077-.003-.072-.0067-.14332-.0077-.10751-.0024-.13631-.0014-.16992.0072-.0373.0089-.0413.0089-.0733-.0007-.02941-.0096-.05341-.0107-.16743-.009-.0732.0006-.14401 0-.15722-.0023zm3.44173.0588a.0123.0123 0 0 1 .006.0096c0 .0036-.0024.0042-.006.0024-.003-.0018-.006-.0067-.006-.0096 0-.0036.003-.0042.006-.0024zm3.34201.003c.0036 0 .0067.0024.0067.006 0 .003-.0013.006-.0024.006-.0019 0-.0048-.003-.0067-.006-.0017-.0036-.0005-.006.0024-.006zm10.66052.006.0312.0006-.0269.0144c-.0343.018-.03601.018-.03601 0 0-.0144.0019-.015.0317-.015zm-.11052.0007a.043.043 0 0 1 .029.0125c.0222.0246.021.0258-.0378.0276l-.0564.0018v-.015c0-.012.0043-.0162.0197-.021a.12752.1275 0 0 1 .0456-.006zm-.54706.0155c.006-.0067.0497-.0048.0497.0013 0 .003-.0036.0095-.0072.0137a.032.032 0 0 0-.0077.0198c0 .009-.0048.0126-.0192.0138-.021.0024-.0252-.0048-.0107-.0168.0083-.0072.0083-.009 0-.018-.005-.0053-.0073-.012-.005-.0138zm-4.45765.0056c.0063.0013.0193.0102.0473.0286l.0377.024-.0408.0072c-.0221.0042-.04971.0096-.06001.0114-.0192.0042-.0197.0042-.0161-.0132.0024-.012.0005-.0198-.006-.0252-.0053-.0048-.0096-.012-.0096-.0168 0-.0067.0053-.0048.021.0066l.021.0162v-.0216c0-.0123-.0008-.0187.0053-.0174zm-12.62456.003c.0004-.0005.0022.0007.0051.0034.0043.0042.006.009.0043.0108-.0019.0018-.0055-.0012-.0072-.0072-.0019-.0042-.0027-.0064-.0022-.007zm16.48183.0115c.0056.0003.0106.0033.0164.0093.0132.0126.0065.0204-.0174.0204-.0246 0-.033-.0108-.018-.0222.0074-.0051.0135-.0076.019-.0075zm-11.21928.0008c.0081.001.019.0057.038.015.0283.014.033.0187.033.0337v.0168l-.0258-.0174-.0252-.018-.0348.0174-.0343.0173-.0245-.016-.02531-.0163.0174-.0078a.11921.1192 0 0 1 .0331-.0078.0537.0537 0 0 0 .027-.009c.0078-.006.0133-.0088.02141-.008zm7.2814.0064c.003.0008.0027.0045.0007.0117-.0024.0078-.0072.0264-.0113.042a.16002.16 0 0 1-.0115.0324c-.0024.0018-.0127-.0024-.0235-.0102-.018-.0126-.0186-.0138-.0072-.018.008-.003.0139-.012.0163-.0246.0024-.012.0091-.0228.0173-.0264.0102-.0052.0163-.0076.0191-.0069zm2.12446.0105c.0246 0 .027.0012.0216.0102a.39015.3901 0 0 1-.0156.0228c-.0096.012-.0096.012-.0216-.0024-.0187-.0227-.015-.0307.0156-.0307zm-8.69817.0006c.033-.0006.0415.0013.0523.0126a.19902.199 0 0 1 .0246.042l.012.0288h-.0174c-.0163 0-.018-.0018-.018-.018v-.018l-.0588.0036c-.0468.003-.06241.0024-.07631-.0053-.0156-.008-.0233-.008-.06-.0007-.05472.0102-.09412.0102-.11932 0-.06481-.027.0029-.0533.078-.0306a.17872.1787 0 0 0 .11642-.003.18162.1816 0 0 1 .0666-.0114zm-.45706.0004c.006-.0007.0065.0026.0065.0093a.10521.1052 0 0 1-.0108.0293l-.0103.0187-.0233-.017-.0235-.0173.0204-.0084a.23483.2348 0 0 1 .041-.0146zm8.59416.002c.0036.0018.006.0084.006.0138 0 .009-.0013.009-.006.0012-.008-.012-.008-.0198 0-.015zm-10.16425.0013c.0018.003.0006.0107-.0024.0179-.0042.0114-.0096.0138-.0318.0138a.13282.1328 0 0 0-.04201.006c-.0084.003-.0156.0036-.0156.0006 0-.0107.0312-.033.0522-.0366.0324-.0066.0366-.0066.0396-.0018zm10.84713.001c.0043-.0005.0051.0022.006.008a.0427.0427 0 0 1-.0013.0197c-.0053.015-.0636.0186-.0636.0036 0-.0024.0144-.0107.0319-.0198a.13152.1315 0 0 1 .027-.0114zm6.62752.0071a.36124.3612 0 0 0-.082.0086.40995.4099 0 0 0-.27844.2148.37735.3773 0 0 0-.04271.1818c0 .2263.17782.4044.40515.4044.11231 0 .20232-.0372.28273-.1169.07801-.0768.11461-.1584.12052-.267a.39955.3995 0 0 0-.22133-.3805.42935.4293 0 0 0-.18392-.0453zm-15.32089.0068c.005-.003.0135.0024.0306.0132.0175.0114.03131.024.03131.0282 0 .0053-.0096.0096-.024.012a.30524.3052 0 0 0-.0384.0078c-.01381.0048-.01381.0042-.0097-.0234.0033-.0231.005-.0347.0101-.0378zm-2.5276.0018a.0123.0123 0 0 1 .006.0096c0 .0036-.0024.0042-.006.0024-.003-.0018-.006-.0067-.006-.0096 0-.0036.003-.0042.006-.0024zm8.89549.0276c.0053 0 .0103.0018.0103.0048 0 .0084-.0288.0366-.0377.0366-.0091 0-.0163-.012-.0163-.027 0-.0072.0125-.0114.0439-.0144zm2.04465.0126.0227.0067a.38935.3893 0 0 1 .024.0077.0633.0633 0 0 1-.0053.0168c-.0053.0114-.012.0156-.0247.0156-.0156 0-.0168-.0018-.0168-.0234zm-2.13596.0158c.0045.0017.0056.0066.0056.016 0 .0102-.0053.0173-.0187.0246-.0204.0102-.0264.0072-.0324-.0162-.0036-.0138-.0012-.0156.0192-.021.0139-.0036.0219-.0052.0263-.0034zm-5.84172.0014c.0054-.0032.0177.0011.0386.0116.0301.0156.0355.0204.0295.027a.0199.0199 0 0 1-.021.0053.0419.0419 0 0 0-.0258.003c-.0107.006-.0132.0043-.0192-.0143-.0063-.019-.0076-.0294-.0022-.0326zm14.88853.0183a.36575.3657 0 0 1 .08711.009c.14832.0437.24963.1877.23703.3365-.0071.0798-.0342.1393-.09061.1993-.15722.1661-.42415.1241-.52807-.083-.0593-.1193-.0341-.268.06241-.3666a.33974.3397 0 0 1 .14472-.0875.37285.3728 0 0 1 .08741-.0077zm-12.89879.0136c.004.0032.0047.0117.0047.0277 0 .0282-.0005.0294-.0113.0227a.077.077 0 0 1-.021-.024c-.0102-.016-.0102-.0167.0035-.0221.013-.0054.0202-.0075.024-.0043zm6.25017.041c.0072.0011.0108.0071.0108.0167 0 .0216-.0174.0198-.0198-.0018-.0019-.0138 0-.0168.0091-.015zm-8.39543.006a.0533.0533 0 0 1 .0184.0017.12962.1296 0 0 1 .0402.015l.018.0114-.0222-.0036c-.0204-.003-.0227-.0018-.0227.0096 0 .0102-.0037.0126-.0181.0126-.0162 0-.018-.0013-.012-.0114.0042-.0078.0042-.0132 0-.0156-.003-.0018-.006-.0078-.006-.0132 0-.0036.001-.0058.0044-.0064zm-.0224.0023c0 .0024-.012.0174-.027.033-.01921.0204-.02701.0342-.02701.0462 0 .0174-.0198.0408-.0467.0547-.01271.0065-.01451.0053-.02591-.021-.0138-.0331-.0108-.038.024-.0427.0276-.0036.027-.0036.018-.021-.0084-.0156-.0036-.0198.0402-.0378.03781-.0156.04441-.0174.04441-.0114zm14.90103.0504v.42h.09001v-.1757l.0306.0043a.13602.136 0 0 1 .04381.0132c.0192.012.04611.0516.07491.1086l.0247.0498h.10731l-.0396-.0679c-.0432-.0733-.0564-.0907-.0816-.1063l-.0168-.0102.0276-.0072c.1087-.0276.11161-.1896.0043-.2214-.0144-.0048-.06962-.0072-.14452-.0072zm.09001.0648.06241.0024c.05211.0012.06531.0036.07971.0144.0133.0102.0173.018.0187.039.0012.0222-.0007.0293-.0139.0413-.0144.0139-.0216.015-.0816.017l-.06532.0023v-.0582zm-15.21967.0027c.0046-.0033.0128-.0012.0276.0045l.0156.006-.0156.0204c-.0253.033-.033.0324-.033-.0024 0-.0162.0009-.025.0054-.0284zm4.47565.7427c.0156 0 .0199.0022.0199.0113 0 .0144-.0192.0216-.03601.0125-.0216-.012-.0139-.024.0161-.024zm.61567.001c.015.0014.0192.0048.0192.0144a.042.042 0 0 0 .008.0216c.0095.012.0028.0168-.024.0168-.024 0-.0283-.0053-.0139-.0197.008-.0079.008-.0096 0-.0127a.0153.0153 0 0 1-.009-.0125c0-.0072.0047-.009.0197-.0079zm2.31129.0707c.0207.0001.0377.0047.046.0133.0103.0115.0354.0595.0354.0684 0 .0014-.0067.0024-.015.0024-.012 0-.015-.0029-.015-.0137 0-.0079-.0012-.0156-.0031-.0168-.0012-.0019-.0245-.0013-.0521.0012-.0374.0036-.05601.0024-.07631-.0048a.10101.101 0 0 0-.05101-.0048c-.09541.0156-.11942.015-.15182-.006l-.0161-.0108.0137-.0108c.0168-.0139.0463-.0144.0936-.0019.04752.0127.08282.0115.12302-.0029a.19872.1987 0 0 1 .06861-.0128zm-.49106.0481a.29074.2907 0 0 1 .0347.0091c.0366.0113.0397.0113.0397 0 0-.0133.0089-.0115.0283.006l.0168.0144-.0163.0005c-.0156 0-.0168.0019-.0168.0228 0 .0223 0 .0228-.0221.0204-.018-.0017-.0259.0007-.0374.0134-.013.0137-.0149.0142-.028.0053-.0205-.0133-.018-.0192.009-.0235.0347-.0053.04132-.0113.027-.0245-.021-.0192-.0409-.0439-.0347-.0439zm7.52022.0151c.0016.0012.0013.0041-.0013.0084a.0079.0079 0 0 1-.0104.003c-.0036-.0025-.0029-.0054.002-.009.0047-.003.0082-.0036.0098-.0024zm-3.89618.0036c.0163-.0067.0192.0036.0053.018-.0107.0101-.0732.027-.0792.021-.0012-.0018-.0012-.0102.0013-.0187.0035-.0131.0071-.015.0323-.0155a.15502.155 0 0 0 .0402-.0048zm-2.15816.001c.0057-.001.0083.002.0134.008.0067.0083.006.0107-.0053.0198-.0127.009-.0127.0101-.0031.0161.0108.0067.0906.0014.10381-.0066.0031-.0018.006-.0011.006.0018 0 .0091-.0342.0192-.0762.0235-.0294.003-.0408.0012-.05282-.0067-.0144-.0096-.0156-.0096-.0222.0054l-.0067.015-.0162-.0149c-.0144-.0139-.018-.0144-.0347-.0084-.0157.0053-.024.0048-.0427-.0024a.0676.0676 0 0 0-.04752-.0036.0728.0728 0 0 1-.0413-.0013c-.0168-.0066-.0168-.0071.0132-.0138a.19562.1956 0 0 0 .0467-.018l.0163-.0106v.0154c0 .0156.0007.0156.04391.0156.03721 0 .04731-.0024.07321-.018.0177-.0101.0265-.0152.0322-.0162zm2.4579.0047c.0016.0007.0037.004.0057.0094.0017.0046.0012.007-.0024.0053a.0115.0115 0 0 1-.006-.0096c0-.0043.0011-.0059.0027-.005zm-16.51803.0003c.0139 0 .0139.0005.0031.0053a.07731.0773 0 0 1-.027.0054c-.01381 0-.01381-.0006-.003-.0054a.07731.0773 0 0 1 .027-.0053zm12.9759.0097c.0076.0002.018.0047.0355.0136.0079.0048.0149.0043.024 0 .0096-.0053.0192-.0048.0389.0007.0228.0072.0264.0101.0264.024 0 .0125-.0036.0168-.0161.0204a.0733.0733 0 0 0-.03.0161l-.0139.0127v-.042l-.024.0048-.04802.0107c-.024.0049-.024.0049-.024-.0126a.0741.0741 0 0 1 .012-.0353c.0067-.0087.0116-.013.0192-.013zm-9.37686.0083a.055.055 0 0 1 .0162.0053c.0187.0067.0198.0151.0036.024a.0217.0217 0 0 1-.024 0c-.0133-.0072-.0162-.0216-.0042-.0257a.0543.0543 0 0 1 .0084-.0036zm9.8145.0017a.47166.4716 0 0 1 .08202.012.25043.2504 0 0 1 .0463.0174l.018.009-.0228.0043c-.018.0036-.0312.0012-.06-.0115a.38275.3827 0 0 0-.04141-.0156c-.0032 0-.0049.0072-.0049.0156 0 .0156-.0012.0156-.0252.012a.09231.0923 0 0 1-.0336-.0113c-.0048-.0053-.0186-.0067-.04371-.0043-.0367.0036-.04501.0007-.039-.0156.0023-.0066.0102-.0077.0354-.0048.0227.0031.0341.0019.0372-.0036.0027-.0044.0247-.0053.05172-.0036zm-10.42488.0036c.0247-.0036.0295.0024.015.018-.0066.0072-.0077.012-.0035.0151.0036.0017.0066.0077.0066.0125 0 .006-.0072.0084-.024.0084-.0228 0-.0313-.0084-.0192-.0204.0024-.0024.0042-.0106.0042-.0173 0-.0103.0042-.0139.0209-.0163zm9.85592.0072c.0036.0019.0072.0067.0072.0108a.012.012 0 0 1-.0072.0103c-.0048.0017-.008-.0024-.008-.0103 0-.0077.0032-.012.008-.0106zm.0266.0004c.0023-.0013.0138.0012.0363.0063.03.0072.0312.0084.021.0168-.0102.009-.0126.0084-.0378-.0072-.0147-.0096-.0217-.0147-.0195-.0159zm-12.9733.0007c.0012.0017-.0067.007-.0232.0164l-.033.0192.0157.0132c.0209.018.0557.0233.0888.0144.04371-.012.07491-.0103.09602.006.0173.0125.0197.0132.0293.0041.0072-.0066.0253-.0106.0504-.012.04631-.0029.05231.0036.03241.0336-.0233.0343-.0252.0374-.0156.0319a.65878.6587 0 0 0 .0312-.0228c.0204-.0156.0216-.018.0127-.0253-.0091-.006-.006-.0078.0228-.0114a.17002.17 0 0 1 .04981 0l.0168.0043-.0168.0067-.0162.0065.036.0173.03601.0174.0324-.0126c.03661-.0149.08101-.0252.08582-.0204.0018.0019.003.0103.0036.0187v.0155l.0072-.0151c.0102-.0216.015-.024.0582-.024a.28173.2817 0 0 0 .06181-.0067c.0204-.0053.027-.004.0612.012.03661.0175.04021.0187.07802.0134.036-.0054.0414-.0048.0654.0089.02531.0144.03061.015.11882.0133.08401-.0013.09481 0 .12722.0126.027.0106.042.0132.0648.0106a.43595.4359 0 0 1 .07741.0019.24173.2417 0 0 0 .09122-.0036c.0559-.0113.18962-.0137.22943-.0036.0346.009.16612.006.21892-.0048.0197-.0036.08931-.006.17703-.0053l.14401.0012.036-.0168c.0198-.0096.04331-.0168.05291-.0163a.0581.0581 0 0 0 .0312-.0084c.0149-.0096.0168-.009.05281.009.0473.0234.09412.0337.11812.0258.0199-.0072.0487-.0012.0864.018.02281.012.02471.012.08702.0013a.8378.8377 0 0 1 .11771-.0097.45246.4524 0 0 0 .08331-.0053.08191.0819 0 0 1 .05101 0c.012.0041.0445.0077.0726.0089a.97252.9724 0 0 1 .08532.0067.11101.111 0 0 0 .0642-.0067c.02821-.0096.03361-.0101.05941-.0024.0234.0072.08101.0084.32824.0072.18723-.0012.30784-.0041.32044-.0084.0144-.0048.0294-.0041.05221.0007.024.0053.0378.0053.057.0005.01691-.0048.05461-.0053.11602-.003.06531.003.10061.0025.12652-.003.0516-.0113.12671-.0101.15532.0024.0199.0084.0294.009.0583.0036.0293-.0053.0384-.0048.05401.003.0307.0162.13372.0114.20273-.0095.0426-.0134.0714-.0144.0925-.0048.0108.0048.02101.0041.04131-.0031.0218-.0072.0432-.0084.10341-.0053.07201.0036.07801.0029.11642-.012a.36354.3635 0 0 1 .0581-.0174c.0156-.0018.018 0 .0199.0155l.0024.0173.05161-.0034a1.14114 1.141 0 0 0 .09772-.0127.28193.2819 0 0 1 .0924-.0041c.03601.004.05331.0036.07632-.0036.0276-.008.0306-.008.042.0017.0096.009.0137.0096.0233.0036.009-.0053.021-.006.04931-.0017a.39335.3933 0 0 0 .0671.0053 1.08733 1.0872 0 0 1 .07872.0043l.0486.0048.0144-.0192c.0144-.0199.0234-.0163.0234.0096 0 .0077.0006.0137.0018.0137a.44616.4461 0 0 0 .02882-.0084c.0216-.0067.063-.0077.20402-.0048.17162.003.17762.0024.20583-.0101.0348-.0151.0408-.0156.0642-.0036.0342.018.07561.0216.13022.012.0516-.0091.08221-.0067.11762.0096.0126.006.0192.0053.0354-.0031.0162-.009.0235-.0096.0432-.0041a.28083.2808 0 0 0 .13922-.0054c.03-.0102.0391-.0114.07031-.0054a.53967.5396 0 0 0 .08101.0066c.0335.0006.0486.0035.0575.0107a.10281.1028 0 0 0 .03241.0168c.0192.0067.0199.0067.0163-.0084l-.0043-.0156.07391.0019a4.26953 4.269 0 0 0 .16922-.0024l.09472-.0043-.0035.0204-.0043.021.0199-.0066a.12702.127 0 0 0 .0377-.0233c.0168-.0156.0228-.0174.0614-.0174a.54967.5496 0 0 0 .07442-.0061c.0269-.0053.0372-.0041.0665.006.0396.0139.09602.0156.14232.0048.0269-.006.0317-.0053.04261.0043.0114.0101.0143.0101.03471.0029.04561-.0161.06361-.018.11592-.009.0552.0097.0965.006.13061-.012.0235-.012.0295-.0114.06431.0037.0283.0125.0343.0132.20593.0101.14102-.003.18242-.0017.20402.0048a.33004.33 0 0 0 .0293.0084.0417.0417 0 0 0 .0013-.0137c0-.0259.0089-.0294.0233-.0096l.0144.0192.05161-.0048a.70369.7036 0 0 1 .07871-.0043.38755.3875 0 0 0 .06531-.0053c.0264-.0043.04031-.0043.0444 0 .0091.0089.0228.0084.0343-.0024.0084-.0072.0132-.0072.0365-.0007.0204.006.0391.0072.07201.0036.0343-.0041.06071-.0024.11642.0067a1.00982 1.0097 0 0 0 .10031.0113c.0257 0 .0281-.0012.03-.0168.0017-.0137.004-.0161.0197-.0144a.34594.3459 0 0 1 .05831.0173c.0384.0151.04441.0158.11642.012.06-.0029.0816-.0017.1032.0055.0204.0072.0307.0079.04132.003.021-.0095.0499-.0083.0926.0049.06892.021.17163.0257.20263.0101.0157-.0084.0247-.009.05411-.0036.0288.0053.03841.0048.05821-.0036.0282-.0125.10262-.0137.15542-.0024.0258.0053.06241.006.12672.003.0617-.0023.0984-.0018.11641.003a.09391.0939 0 0 0 .05471 0 .11961.1196 0 0 1 .05811-.0012c.0168.0043.14642.0072.32214.0084.24203.0013.29904 0 .32234-.0072.0259-.0077.0312-.0072.05951.0024a.10571.1057 0 0 0 .06411.006.95582.9557 0 0 1 .09731-.0053c.0347-.0007.07261-.0024.08461-.0053.0156-.0031.0312-.0014.05931.0082.036.012.042.0127.08641.0054a.29004.29 0 0 1 .09671 0c.0485.0073.04971.0073.07971-.0078.0384-.0197.05231-.0192.09901 0 .0457.0192.09251.021.15252.006a.21503.215 0 0 1 .07501-.0072c.0174.0019.06541.0054.10561.0072.06061.003.08161.0019.11282-.0066.0234-.0066.0462-.009.0594-.0066.015.003.027.0007.045-.0084.024-.012.0246-.012.03902-.0012.0133.0103.0306.0115.31504.012.16562 0 .31153.0019.32354.0043.0156.0024.0347 0 .0612-.009.033-.0114.04132-.012.05872-.006.0162.006.0253.006.0433 0 .0192-.0067.0257-.006.04322.0023.0293.0134.0557.012.093-.0053.03782-.0173.04312-.018.04312-.006 0 .0077.0041.009.0204.006.0115-.0024.0367 0 .06.006a.21203.212 0 0 0 .06542.0072c.13161-.0173.15732-.018.18082-.0072.0204.0096.0269.0101.0569.0041a.33844.3384 0 0 1 .05882-.0072.15052.1505 0 0 0 .0408-.006c.0108-.0041.0199-.0041.027 0 .0092.0048.0127.0036.018-.006.006-.0113.0073-.0113.0227-.0017a.09471.0947 0 0 1 .0206.0168c.003.0036.0106.0024.0226-.0043.0097-.0053.0194-.0077.0211-.0048.0096.015.0487.018.10681.0079.05041-.0084.06601-.009.11402-.0024.048.006.0595.006.0883-.0024.05642-.0163.05932-.0168.08522-.006.018.0072.0557.012.12781.0161.05641.0031.12542.0072.15422.0091.0504.003.0672 0 .11461-.0192.0072-.003.0103-.0013.0103.0053 0 .0115.024.0134.0341.0031.0055-.0053.0144-.0043.0374.006.0353.015.04901.0156.09461.0036a.22533.2253 0 0 1 .08001-.006.19322.1932 0 0 0 .08681-.009c.036-.0114.0456-.0126.07201-.0067.0307.0066.06141.0025.07801-.0114.0053-.0041.0127-.0041.0235 0a.07901.079 0 0 0 .06671-.0041c.0197-.0096.0233-.0096.0407-.0007.04741.0228.09001.0288.11342.0163.0174-.0096.22943-.0127.25803-.0043.0156.0048.0348.0043.06901-.0005.04021-.006.05101-.0053.07571.003a.13272.1327 0 0 0 .05101.0066l.07201-.0108c.04021-.006.05701-.006.08631 0 .05521.0113.41235.0101.45146-.0019.028-.0084.0306-.0084.0593.0067.0293.0144.0355.0156.15733.0173.15662.003.22002-.006.25383-.036.0144-.0125.022-.0161.024-.0106.004.0137.0257.0298.0444.0334.0306.006.0389.0043.0437-.0101.0036-.012.0043-.012.0096.0067.006.019.006.019.0235.01a.14502.145 0 0 1 .05162-.009.25103.251 0 0 0 .0564-.0065c.0204-.006.0252-.0053.05092.0096.027.0163.03.0168.0924.0133.04562-.0025.07442-.0073.09962-.017a.18902.189 0 0 1 .0631-.0125c.015 0 .04322 0 .06302-.0006.10381-.0024.16932.0013.19432.0102.036.0132.04511.0126.08901-.009.04441-.0216.04731-.0216.13682.0168l.054.0228.18603.0006c.12242.0006.19493.003.21173.0078.0163.0048.0432.006.075.003a.66858.6685 0 0 1 .10332.003c.05401.0072.07491.0053.13562-.0114.0258-.0078.0293-.0072.072.012.0246.0114.04562.021.04682.0222.0012.0006-.0024.012-.008.0258-.0126.0324-.012.036.0049.036.0318 0 .0426.009.0528.0444.0108.039.0084.0384-.0132-.0006-.0084-.0156-.018-.0288-.0216-.03-.0036-.0012-.0114.0053-.0174.0144-.0113.0173-.0133.0408-.0072.1128.0031.0348.0012.0456-.0084.0624-.0096.0156-.0102.0216-.0043.0288.004.0053.0072.036.0084.087.0012.066.0036.0876.018.135.0162.0546.0162.0582.0077.0828-.0077.0216-.0077.0282-.0013.048.0053.0162.008.0493.0067.108-.0019.0798-.0013.0858.0144.1242.0216.0516.0216.0636.0006.066-.0168.0019-.0168.0024-.0156.0408a1.13214 1.132 0 0 0 .0113.0984.44906.449 0 0 1 .006.1116c-.0036.0414-.0024.0576.0053.075.0091.0222.0084.0234-.0036.0366-.0107.0115-.0115.0156-.0053.027.0047.0078.0059.0234.0035.0409a1.23665 1.2365 0 0 0-.0072.0845c-.0067.1219-.0072.1135.0144.1327l.0192.0173-.0233.0036-.0235.0036.0096.0223c.0065.0156.0089.0365.0072.0756a18.88773 18.8854 0 0 0-.0024.186c-.0005.1147.0007.1344.0096.1524.0139.0264.0139.0444-.0019.0847-.0108.0281-.012.0396-.0084.078.0084.0786.0067.1272-.0048.1488-.0103.0186-.0103.0204.0012.036.0108.0156.0113.0186.0024.0552a.22963.2296 0 0 0 .0079.1313.08561.0856 0 0 1 .006.0444c-.0036.0192-.0161.2995-.0156.3427a.18612.1861 0 0 0 .0139.054.16652.1665 0 0 1 .0132.0684v.0384l.0216-.0036c.0192-.003.0221-.0018.0257.0102.0036.0132.0048.0522.0024.0522a.65998.6599 0 0 1-.0396-.012.26813.2681 0 0 0-.05281-.012c-.0127 0-.0144.0018-.0107.0162.0053.0227.0383.057.0503.0522.0293-.012.0319-.0114.0283.0102a.22933.2293 0 0 0 .0005.0534c.0036.0282.0024.0366-.0091.0576-.015.027-.0161.0384-.0144.1404.0013.054-.0005.075-.0091.096-.0067.018-.0107.0462-.0115.084a.854.8539 0 0 1-.0053.0853c-.0032.018-.0006.0444.0053.0732.0108.0547.0134.1932.0036.2316-.0084.033-.006.156.0048.231.0053.0366.0072.0942.0055.18l-.003.126.0167.0342c.0096.0192.0174.0444.0174.0564 0 .0127.0043.0276.0102.0336.0096.0108.0096.0132-.006.0403a.24303.243 0 0 0-.0306.1356c.0036.0324.0017.04-.0127.0689l-.0168.033.0108.066a.8006.8005 0 0 1 .0096.12c0 .0294.0024.0667.006.0822a.08161.0816 0 0 1-.0012.051.31254.3125 0 0 0-.0084.0707.7685.7684 0 0 1-.006.083.12762.1276 0 0 0 .006.0672c.0108.0306.0108.0336.0013.0672-.0097.0318-.0097.0606-.0044.3438.0036.1698.006.3198.0053.333a.56237.5623 0 0 0 0 .045c.0007.0115.0013.0715.0007.1327 0 .0617.0024.1248.006.1404.0096.042.0084.1187-.0024.1517a.12932.1293 0 0 0-.0048.0614.12672.1267 0 0 1-.006.0634c-.0091.0259-.0096.0391-.0041.09a.69569.6956 0 0 0 .0173.0991c.0133.0444.015.069.006.0924-.0043.012-.0036.024.0024.0444.006.021.0072.0492.0053.1061-.0031.0715-.0024.0804.0096.1075a.30904.309 0 0 1 .018.0552c.0048.0252.0048.0259-.012.0259-.0173 0-.0173.0005-.0173.0341 0 .0192.004.0576.009.0859a.68108.681 0 0 1 .0092.066 9.7559 9.7547 0 0 1-.0096.39c-.0036.0432-.0024.0528.006.0612.0106.0113.0067.0288-.0067.0288-.0072 0-.0084.004-.0048.0161.0019.0096.0053.1032.0067.2088.0024.1567.0048.1963.0126.2143.0103.024.0084.0474-.0072.1038-.0096.0318-.0096.0414-.0024.084.0096.0606.009.084-.0043.117-.0096.024-.0096.0264 0 .045.0091.0162.0096.0234.0043.0427-.0108.0383-.0077.1061.0053.1421.011.0282.0115.036.005.0648-.0037.018-.0073.0768-.008.1314 0 .0546-.0029.1213-.0054.1482-.0047.0432-.0035.054.0073.084a.36505.365 0 0 1 .0162.0751c.003.0288.0067.0408.0126.0408.0048 0 .0084.0012.0084.0024s.0017.0065.0036.012c.0024.0067.0007.0096-.006.0096-.0053 0-.0096.0048-.0096.012 0 .0107-.0029.012-.0252.0084a.38405.384 0 0 1-.0341-.006c-.0053-.0019-.0067.0005-.0043.0072a.0588.0588 0 0 1 .0036.0144c0 .0096.0365.048.0456.048.0103 0 .0103 0 .0019.033-.0053.021-.0048.033.0024.0582.015.0504.018.12.0067.1536-.0084.0233-.0091.0353-.0036.0732.0132.0912.0137.1067.0043.1296-.0115.0276-.0113.0504-.0007.066.0077.0107.0077.0156-.0012.0396-.0089.0252-.0089.0317 0 .0881.0084.0504.0091.0691.0031.1152-.006.048-.0053.0588.0041.0943.0139.0492.0139.0497.0007.0943-.0067.0233-.0108.0636-.012.117a1.84293 1.8427 0 0 1-.0072.12l-.0048.039-.0288.0053c-.024.0048-.0324.0036-.0583-.0084-.0264-.0125-.0329-.0133-.05041-.0072a.10991.1099 0 0 1-.0312.0072.0324.0324 0 0 0-.018.0053.0693.0693 0 0 1-.0276.009c-.0204.0037-.0221.0032-.0245-.0124-.0024-.0163-.0024-.0163-.0072-.0031-.0031.0096-.0091.0132-.0216.0132-.0091 0-.018.0024-.0199.0053-.0017.0024-.0293.0067-.06051.009-.05521.004-.05881.0037-.08471-.0113-.0252-.015-.0306-.0156-.07061-.012-.03861.0036-.04701.0024-.07031-.0096-.0247-.0133-.0324-.0138-.11652-.012-.078.0012-.0947 0-.12301-.0108-.0408-.0144-.19623-.0198-.25803-.008-.04931.0092-.17523.0097-.20703.0007-.0336-.0096-.14342-.0101-.18302-.0012-.0216.0048-.08701.0072-.19333.008h-.15962l-.0384.0179c-.0204.0096-.0467.018-.0576.018a.0717.0717 0 0 0-.03412.0096c-.0134.009-.0163.0084-.0403-.0053-.042-.0246-.08642-.0354-.12842-.0307-.0324.0032-.04201.002-.07441-.013l-.0365-.0163-.06241.0096a.92821.9281 0 0 1-.11882.01.55487.5548 0 0 0-.0876.0068c-.0228.0047-.0331.004-.04402-.0013-.0078-.004-.0364-.0084-.0647-.009a1.24775 1.2476 0 0 1-.09072-.0052c-.0307-.0037-.0467-.0025-.0707.0059-.0294.0096-.033.0096-.06252 0-.0276-.0091-.0624-.0101-.31924-.0096-.19132.0006-.29463.003-.30843.0077a.21533.2153 0 0 1-.06241.003.26843.2684 0 0 0-.07151.0032c-.022.0055-.04801.0055-.09961.0006-.04561-.0043-.08161-.0048-.10322-.0013-.072.012-.14801.0134-.17932.0032a.15252.1525 0 0 0-.065-.006.13012.1301 0 0 1-.06232-.0055c-.0384-.0133-.12531-.0077-.18722.0115-.05161.0161-.07441.018-.09651.0077-.0108-.0053-.0228-.0048-.05001.0024-.028.0072-.04661.0077-.08921.0036-.06141-.0067-.08111-.004-.13272.0161a.21553.2155 0 0 1-.0521.0144c-.0134 0-.0156-.0024-.0156-.018v-.018l-.0343.0031a3.68445 3.684 0 0 0-.09732.0134.50816.5081 0 0 1-.11511.0059c-.042-.0031-.05881-.002-.07801.0053-.0228.0096-.0247.0096-.0373-.0024-.0102-.0096-.0155-.0107-.024-.0067-.0071.0043-.0414.0036-.10501-.0012-.12842-.0096-.13972-.0091-.15412.0096-.0144.0173-.021.0192-.021.004 0-.022-.008-.0251-.039-.0155-.0235.0072-.04081.0084-.07801.0048-.0264-.0031-.10442-.0048-.17413-.0053-.11821 0-.12781.0005-.15541.0137l-.0293.0132-.0457-.0156c-.0366-.0125-.05161-.015-.07871-.012-.10302.0115-.11702.0115-.14572-.0013l-.0276-.0125-.0156.0126c-.0144.0114-.018.0114-.04381.004-.0413-.012-.10622-.0089-.14402.0061-.0282.0114-.0348.012-.05701.0053-.015-.004-.06671-.008-.12722-.0084a1.89633 1.8961 0 0 1-.15361-.0055c-.0343-.003-.05831-.0024-.07081.002-.018.0066-.0187.006-.0187-.0114 0-.0228-.015-.0228-.06301-.0006-.033.0156-.0383.0162-.06301.01-.0197-.0047-.0276-.0095-.0288-.0186-.0012-.01-.0048-.012-.018-.0095a.057.057 0 0 0-.0252.0107c-.0072.006-.04731.008-.19203.0073-.13372-.0007-.19072.0012-.21302.0067-.0311.0084-.10262.0036-.15542-.0101a.07991.0799 0 0 0-.05101.0024c-.0323.0096-.08531.0106-.11402.0024a.08081.0808 0 0 0-.0498.003c-.03652.0107-.23164.0068-.27604-.006-.027-.0076-.04031-.0066-.08641.008a.20673.2067 0 0 0-.0312.0126c-.0096.0053-.018.0048-.0373-.003a.10441.1044 0 0 0-.05511-.0068.12031.1203 0 0 1-.06001-.0067c-.027-.0095-.0307-.0095-.06901.0007-.0373.0096-.0438.0096-.07071.0013-.0235-.0067-.06381-.0092-.18142-.0092-.09731 0-.15182-.0024-.15182-.006 0-.0036-.0024-.006-.006-.006-.0031 0-.006.006-.006.0139 0 .0126-.0024.0132-.04321.0137a.53507.535 0 0 0-.06541.0053c-.0144.0024-.04561-.0012-.09661-.0113-.08641-.018-.09241-.0187-.11342-.008-.0253.0134-.15182.0182-.19332.0073-.04301-.0114-.05451-.0115-.07551-.0006-.0144.0077-.0246.0077-.07921 0a.69079.6907 0 0 1-.08101-.015c-.0156-.0048-.0264-.0036-.05601.0067a.26363.2636 0 0 1-.08631.012c-.0413 0-.05521.0023-.08041.0149l-.0307.0156-.0197-.012c-.029-.0163-.13642-.023-.30504-.0175-.07021.0024-.10021.0012-.12181-.0053-.0288-.0084-.0293-.0084-.05931.0108-.0283.018-.032.0192-.04941.012-.031-.0132-.0437-.0144-.06651-.0065-.0156.0053-.0204.0096-.0187.0168a.15972.1597 0 0 1-.0017.0461c-.0029.02-.004.0374-.0029.0384.0017.0017.0107-.0048.0564-.04l.018-.0145v.0307c0 .0257.0017.0305.0114.0305.006 0 .0173.0053.0253.012l.0143.0115-.0252.0005c-.0234 0-.0258.0013-.0258.0144 0 .0144-.0006.015-.0198.0067a.0724.0724 0 0 0-.0342-.0048.22853.2285 0 0 1-.05581-.0067c-.0276-.0065-.04441-.0077-.05471-.0036a.09031.0903 0 0 1-.0407.0007c-.0235-.0048-.024-.0055-.006-.006.0216-.0007.024-.0048.009-.0163-.009-.0067-.0097-.0077-.0018-.0101.0444-.0137.0713-.027.0857-.042.0091-.0096.0163-.0197.0163-.0227 0-.0025-.0115-.0157-.0253-.029l-.0257-.024-.12901-.0004c-.11581 0-.13142.0012-.15542.012-.0324.0149-.0348.0149-.06361 0a.0653.0653 0 0 0-.04321-.0084.09601.096 0 0 1-.04081-.0036c-.014-.0048-.05761-.0067-.11881-.0067-.23163.0024-.32004.0048-.33004.009-.0151.0073-.05111-.0012-.05341-.012-.0013-.0066-.009-.0023-.027.015l-.0254.0247-.0221-.0134c-.0221-.013-.05161-.0202-.10922-.027-.0233-.0023-.0413 0-.0732.0102-.03551.0114-.04561.0127-.06721.0072-.03-.0077-.03731-.003-.06791.0444-.0113.0174-.0221.0324-.0257.0343-.0096.006-.04031-.0055-.04201-.0156-.0024-.0113.006-.0133.0233-.0041.0096.0053.0134.003.0235-.0133.0252-.0407.0125-.0491-.0463-.0306l-.0317.0102-.06671-.0204c-.06171-.0187-.06961-.0198-.09901-.0132-.0275.0053-.0366.0048-.06471-.0053a.17072.1707 0 0 0-.10562-.0048.59537.5953 0 0 1-.093.008.52306.523 0 0 0-.09422.0095c-.027.008-.03.008-.069-.0084-.05401-.0222-.09252-.0258-.14402-.0132-.04751.0113-.06251.012-.18803.0067-.0749-.0036-.10001-.0024-.12891.0048a.15232.1523 0 0 1-.05281.006.10041.1004 0 0 0-.0432.0067c-.0234.009-.0276.0096-.04021.0019-.0114-.008-.0606-.0091-.30674-.0096-.16082 0-.30964-.002-.33004-.004a.12071.1207 0 0 0-.0677.0083c-.02601.0108-.03481.0113-.05281.006a.0667.0667 0 0 0-.0432 0 .0541.0541 0 0 1-.04321-.002c-.0307-.0131-.06361-.0106-.09742.006-.0346.0174-.036.018-.036.006 0-.0071-.0077-.009-.033-.009a.34534.3453 0 0 1-.07201-.0096c-.0346-.0091-.0412-.0091-.07021-.0006-.0521.0156-.11572.018-.15122.0067-.0257-.0084-.0365-.009-.0756-.0036-.08932.0132-.10562.0138-.12772.0043-.0276-.0114-.05231-.0114-.06791-.0006-.0106.0077-.0156.0077-.0396-.0012-.02521-.009-.03171-.009-.09002.0006-.048.008-.0701.0084-.09771.004-.0528-.0089-.08101-.007-.12242.0061-.0336.0102-.0396.0107-.0595.0031a.37845.3784 0 0 0-.13923-.0173.28123.2812 0 0 1-.07621-.0043c-.06121-.012-.13022-.0096-.16922.0053-.03.012-.033.012-.0396.0031-.006-.0084-.0102-.0091-.02161-.0036-.0114.0048-.0192.0036-.0378-.0053-.0192-.0101-.03061-.0113-.06001-.0084a2.58792 2.5876 0 0 1-.11462.0091c-.0624.0036-.0858.0077-.11821.0204-.0324.0125-.0432.0144-.06.0101-.03301-.0096-.04501-.0079-.04931.0091-.0035.0134-.0155.0216-.0155.0102a.0672.0672 0 0 0-.0138-.021l-.01321-.0168-.048.0132c-.04031.0107-.05641.012-.10272.0091-.0461-.0036-.0587-.0024-.08401.0072a.19832.1983 0 0 1-.0533.0138c-.0223.0024-.024.0013-.026-.0132l-.0016-.0156-.08762-.0012c-.09671-.0012-.14712.0055-.18842.024-.0271.0125-.0288.0125-.05831.003-.0281-.0095-.0317-.0095-.0497-.0005-.0216.0114-.06671.0126-.09242.0031a.19122.1912 0 0 0-.054-.0055.49876.4987 0 0 1-.06741-.0029c-.0353-.0055-.0557.0024-.0557.0204 0 .0132-.0017.0138-.02931.0084-.0158-.0036-.0187-.0067-.0187-.021 0-.0222-.012-.0227-.06131-.002-.0323.014-.0414.0151-.08031.0114a.20933.2093 0 0 0-.07391.0036c-.0276.0072-.0336.0067-.06771-.0053a.23723.2372 0 0 0-.0559-.0132h-.0173l.0257-.0264.0264-.027-.0226-.009c-.03201-.014-.16993-.0134-.20953 0-.0276.0096-.0283.01-.0264.0317.0012.0168.0053.0235.0187.0293l.0173.0085-.0475.021c-.09602.0426-.10972.0455-.10972.0227 0-.012-.003-.0149-.015-.0149-.0205 0-.0193-.006.0095-.033.03-.0294.0374-.042.0324-.057-.0029-.0089-.0089-.012-.024-.012-.0437 0-.0581.0132-.07201.066l-.0072.027-.0048-.0342c-.0036-.0293-.0066-.0348-.0216-.0408-.0113-.0048-.0288-.0055-.05461-.0024a.50276.5027 0 0 1-.08101.0031c-.036-.0017-.0474.0005-.0648.0107-.02581.015-.05222.0157-.10322.0032a.17902.179 0 0 0-.0636-.006c-.07382.0107-.09362.0107-.12302.0012-.0294-.0101-.0307-.0101-.06781.0053a.48926.4892 0 0 1-.0396.015c-.0013 0-.0018-.0097-.0018-.021v-.021h-.07922c-.0516 0-.0912.003-.11281.009-.0312.0084-.0347.0084-.0684-.004-.03241-.012-.03911-.0127-.08402-.006-.048.0066-.078.0047-.09121-.0054-.0043-.0036-.0156-.0019-.0283.0036-.0281.0113-.08572.0108-.13802-.0017l-.0408-.0101-.0036-.048c-.0041-.0587-.003-.1056.0036-.1344.0043-.0197-.0005-.1627-.009-.2527-.0018-.021-.0071-.0437-.012-.0504-.0114-.0161-.0107-.0276.0037-.0581.0101-.0235.012-.0396.012-.1447v-.1186l-.0223-.0271c-.01251-.0144-.02571-.027-.02931-.027-.0211-.0012-.05641.0462-.06541.0882l-.0042.0192-.0108-.0132-.0115-.0137-.0005.0233c0 .045-.0091.0144-.0096-.0341-.0007-.0636-.0084-.1423-.0156-.156-.0043-.0084-.0024-.0102.0101-.0102.0133 0 .015-.0024.015-.021 0-.027.009-.027.0187 0 .0071.0186.0102.0204.0342.0222l.0269.002-.0257.0317c-.0139.018-.0235.0336-.0216.036.0017.0019.0197 0 .0401-.0036.0199-.0036.03961-.0053.04441-.0036.006.0024.0103-.0048.0156-.0227.0053-.0217.0053-.0283-.003-.0427-.0133-.024-.012-.0318.0085-.0642.0173-.0276.018-.0288.0096-.0528-.0072-.0192-.0084-.0451-.0054-.1164.0035-.1116.0035-.116-.0025-.2071-.0041-.06-.0072-.0761-.0173-.09l-.0127-.0168.0156-.0234c.0133-.0198.0156-.0318.0187-.087.0024-.0372.0077-.0726.0132-.0858.0089-.0198.0089-.0258.0012-.0552-.0174-.0653-.0211-.1182-.0103-.1458.0084-.024.0084-.0288-.0005-.0624-.0084-.0294-.0096-.05-.0067-.1032.0024-.0374.0079-.0787.0133-.092.0078-.022.0078-.0292 0-.066-.0294-.1324-.0282-.1228-.0186-.1451a.10971.1097 0 0 0 .0024-.0756c-.0054-.015-.0048-.0156.0132-.0156.0149 0 .0173-.002.012-.0072-.0054-.0053-.0072-.0461-.0072-.1459 0-.1092-.002-.1457-.0096-.171-.0084-.0292-.0084-.0347.0005-.0671.0103-.0373.0084-.0636-.0067-.0876-.0065-.0096-.007-.0163-.0022-.0247.0089-.0173.0072-.0456-.0043-.0696-.0084-.0173-.009-.024-.003-.033.02221-.036.03071-.0875.01871-.1182-.009-.0233-.0126-.2266-.0042-.255.0048-.0167.0048-.036-.0007-.0732-.006-.0438-.0053-.054.003-.075.0102-.0252.0097-.027-.0042-.126-.006-.0396-.006-.0582 0-.0864.0108-.0533.0096-.4044-.0017-.4482-.0084-.0312-.008-.0336.0066-.0624.0143-.0288.0155-.0347.0174-.1596.0024-.1519-.0072-.2214-.036-.2515-.0187-.0197-.0192-.0221-.0036-.0264.0226-.006.0426-.0821.0209-.0821-.0048 0-.009-.0031-.009-.006 0-.0036.0049-.006.0107-.006.017 0 .02-.006.0103-.0204-.006-.008-.009-.0271-.009-.0523a.23153.2315 0 0 0-.0066-.0581c-.0053-.0156-.0036-.0228.0103-.05.0149-.0306.0156-.0352.0125-.0952-.0024-.048-.0072-.074-.0197-.1075-.0151-.0408-.0163-.0468-.0096-.0768a.15572.1557 0 0 0 0-.0667c-.0079-.0425-.0031-.1186.0106-.1709l.011-.0399-.0204-.0437-.0204-.0439.0137-.0365a4.37704 4.3765 0 0 0 .0312-.084l.0173-.0481-.001-.1771c-.0007-.099.0012-.1812.004-.186.0049-.0077.0073-.0696.0109-.2467a.29204.292 0 0 0-.0101-.0701c-.0108-.0343-.0108-.0379-.0014-.0607.0139-.0353.0146-.2586.0007-.2586a.0093.0093 0 0 1-.009-.009c0-.0052-.0071-.0125-.0155-.016l-.0151-.0073.015-.0079c.0145-.0077.0157-.0113.0157-.0466a.52596.5259 0 0 1 .0072-.08c.006-.0347.0053-.045-.0024-.0647-.0091-.0223-.0091-.0253.0024-.0499.0113-.0245.0113-.0276.0024-.051-.0079-.0198-.0096-.0492-.0096-.1374v-.1121h-.018c-.0228 0-.0228-.0053 0-.027.0149-.0143.018-.0222.018-.0443a.17012.1701 0 0 0-.0067-.0456c-.006-.0156-.0048-.0223.0048-.042l.012-.0235-.0144-.0437c-.0168-.0494-.0156-.0744.0043-.0996.0149-.0192.0149-.0348-.0007-.0811-.0096-.0293-.015-.0372-.0245-.0372-.0096 0-.0108-.0024-.0072-.0107.0029-.0054.0053-.0534.0053-.1062 0-.066.0024-.1032.0084-.1195.006-.0173.0072-.0384.0043-.078a5.39767 5.397 0 0 1-.0067-.1879c-.0012-.0737-.0041-.1368-.006-.1404a.0407.0407 0 0 0-.0168-.0106c-.01201-.005-.01201-.0055.0072-.0151.0173-.009.0192-.0127.015-.0264-.006-.0204-.0066-.0636-.0013-.0912.0038-.018.0026-.0228-.0106-.0319-.0139-.0106-.01681-.0106-.03911-.0017-.0317.0125-.0353.012-.0353-.006v-.0163l-.04031.0043a.45876.4587 0 0 0-.054.0072c-.0096.0024-.01371.0012-.01371-.0043.0005-.0161.0161-.0288.0437-.0365.0235-.006.0343-.0053.07151.003a.36034.3603 0 0 0 .05691.0102h.0139l-.0024-.0912c-.0019-.072-.0007-.0948.006-.108.0072-.0139.0077-.0216.0017-.0408-.006-.0187-.006-.027 0-.0379.0053-.0101.0053-.018.0007-.0312-.0036-.0101-.008-.0588-.0096-.1086-.0024-.0846-.002-.093.0125-.1338.0139-.039.015-.0493.0115-.0984-.0048-.0726-.0163-.1152-.0494-.1842-.0749-.159-.07901-.219-.019-.3187.0288-.0473.03-.0593.0077-.06-.0125 0-.0096-.0024.012-.0077.0367-.0103.0516-.0235.0403-.036a.027.027 0 0 0-.0187-.0096c-.0113 0-.0113-.0014-.0017-.0187a.072.072 0 0 0 .0053-.0461c-.0084-.0552-.0204-.0667-.0497-.0456-.0134.0089-.0139.0089-.0096-.006a.93462.9345 0 0 0 .0077-.0468c.003-.0271.0053-.0319.0187-.0348.0173-.0043.0173-.0163 0-.0552-.0115-.0259-.0103-.0367.0048-.054a.029.029 0 0 0 .0053-.0228c-.0017-.0072.0007-.0144.0067-.0174.0084-.0049.0089-.0073.0029-.0133-.0144-.0144-.009-.0233.0133-.0233.0167 0 .021-.0024.021-.012 0-.0091-.0043-.012-.0168-.012h-.0163l.0013-.0799.0023-.0852a.46306.463 0 0 0-.0072-.0523.25503.255 0 0 1-.0005-.0929c.0048-.0319.0053-.0547.0012-.0708a.27563.2756 0 0 1-.006-.0499c0-.0209.0024-.0269.0113-.0293.0096-.0024.0072-.006-.0144-.0264l-.0264-.024.0139-.0204c.0192-.0283.036-.1159.0281-.1453-.009-.0311-.0084-.033.0048-.0258.0168.0091.0168.0091.0253-.0233.0066-.0259.0095-.0293.0287-.0348.0192-.0053.02931-.0073.03041-.0057zm13.7687.0032a.0283.0283 0 0 0 .0174.0067c.015 0 .0259.0221.0163.0334-.0103.0127-.0174.0103-.0174-.006 0-.0173-.0096-.0216-.05161-.0216-.027 0-.0312-.0017-.0282-.0096.0024-.0072.0043-.0077.0084-.0017.0036.0067.0084.0067.0264 0 .0162-.0053.024-.006.0288-.0013zm-11.14717.0072a.061.061 0 0 1 .0013.0168c0 .018-.0006.0187-.0373.0281-.01321.0036-.01321.0031-.0024-.0053.0163-.012.0084-.0307-.0096-.0253-.02101.0066-.02571.0133-.01681.024.006.0073.006.009-.0012.009-.0096 0-.0204-.0084-.0377-.0293l-.012-.0139.018.0031c.0137.003.09-.003.0977-.0072zm15.65292.0113h.018c.0157 0 .0174.0019.0174.0187v.0187l.05591-.0043c.04441-.003.06121-.0019.07861.0053.0203.0084.0275.0084.08031-.0005.06301-.0108.09121-.0084.11522.0096.012.0096.0133.0132.0067.0204-.0132.0168-.03961.0173-.09651.0036-.05881-.0144-.06431-.0144-.14402.0096-.0624.0187-.096.0041-.11901-.0516zm-15.80094.0076c.0048 0 .0053.0044.0053.0134 0 .0145-.0018.015-.0313.015l-.03171-.0005.0269-.0144c.017-.009.0261-.0135.0308-.0135zm13.98202.0254a.0123.0123 0 0 1 .006.0097c0 .0036-.0024.0041-.006.0024-.0031-.0019-.006-.0067-.006-.0096 0-.0036.003-.0043.006-.0024zm-3.02347.0274c.001-.0002.0024.0018.0048.0056a.0399.0399 0 0 1 .006.0139c0 .003-.0024.003-.006.0012-.0031-.0019-.006-.0084-.006-.0139 0-.0044.0004-.0066.0013-.0068zm5.43347.4563c-.0027 0-.002.0033.0031.0096.0192.0259.0379.0432.0427.0403.0106-.0067.0036-.0204-.0174-.0355-.0149-.0097-.0246-.0147-.0282-.0144zm1.36117.054c.0066-.0005.01.0013.0076.003-.0017.0018-.0072.0025-.0113.0006-.0048-.0017-.0029-.0036.0036-.0036zm-19.96076.0483a.09101.091 0 0 0-.0257.008c-.02231.0085-.01341.0116.0173.0054.0103-.0022.0168-.0058.015-.0089-.0018-.003-.0033-.0045-.0066-.0045zm19.94405.1202c.004-.0013.0079.001.013.0062.0102.01.0088.0677-.002.1032-.012.04-.0113.0672.0036.1092a.25973.2597 0 0 1 .0127.07c.0005.0414-.0103.0565-.0559.0752l-.0293.0125v-.0179c0-.0156.0017-.0173.0187-.0173h.0185l-.0043-.0559c-.0036-.0437-.0024-.0605.0048-.078.0084-.0197.0084-.027 0-.0713-.0103-.0564-.0084-.099.0067-.1213.0053-.0087.0093-.0134.0133-.0144zm-.0567.3991.0307.0036c.0168.0024.0324.006.0353.009.0091.009-.0186.0373-.03652.0373-.0139 0-.0168-.0036-.0228-.0247zm-.22013.0379c.0192 0 .027.0024.027.0084 0 .0149-.0073.0276-.015.0276-.0096 0-.039-.0228-.039-.0307 0-.003.012-.0053.0269-.0053zm-4.9163.1453c-.0091.0008-.017.0053-.03422.0143-.0276.015-.0312.015-.0936.0114-.06122-.0042-.06662-.0036-.09772.0107a.24633.2463 0 0 0-.0559.0355c-.0252.0222-.07202.0373-.09532.0312-.0127-.003-.015-.0012-.015.009 0 .0072-.0025.0126-.0054.0126-.0116 0-.044.033-.068.0684a.94162.9415 0 0 1-.07422.0882c-.10341.108-.15432.2136-.15502.3246-.0005.0504-.0024.0606-.0144.0762-.0156.0216-.0168.0474-.0043.0852.0084.024.0084.0312.0007.06a.19802.198 0 0 0-.0053.0612.0637.0637 0 0 1-.0103.0492c-.0108.018-.0125.0264-.0089.0468a.30794.3079 0 0 1 .0043.0432c-.0019.0432-.0126.1651-.0156.1699-.0017.0024-.0036.0845-.0043.1817-.0006.1176-.0036.1884-.0084.2124-.009.0408-.0036.1891.0084.2251a.17102.171 0 0 1 .0067.0432c0 .012.0031.0293.0067.039.0031.009.0072.0522.0084.096.002.0714.0012.0798-.0077.0798-.0072 0-.0055.0036.0072.0139l.0174.0137-.0096.033c-.0096.0325-.0096.0337.0055.0707.015.0374.015.0379.006.0787-.0138.0595-.012.0979.0096.2304.0067.0379.006.0432-.006.066-.0138.0253-.0168.0487-.008.054.0092.006.0127.0607.006.0943a.23233.2323 0 0 0-.006.0384c0 .003.002.0276.0037.054l.0043.0642c.0006.0144.003.0168.0174.0168.015 0 .0174-.0024.0174-.0173 0-.0103.0024-.0193.0055-.021.009-.0054.012.0215.0067.0503-.0031.015-.0053.0288-.006.0312 0 .003-.006.0048-.0132.0048-.0438.0006-.048.0114-.0306.0738.0091.033.0091.0366 0 .0522-.0156.0258-.0132.0774.0041.111.0084.015.0132.0318.0114.0366a.0739.0739 0 0 0 .0012.03c.003.0162.0055.0204.0108.015.0108-.0107.016-.0077.016.009 0 .0126-.0023.015-.0112.0126-.0091-.0017-.012.0013-.015.0144-.0036.0199.0017.0373.0228.0708l.015.024-.0132.002c-.0096.0011-.0126.0052-.0114.0136a2.56562 2.5653 0 0 1 .0103.0691 2.28158 2.2813 0 0 0 .0175.099c.012.0547.0114.0827-.0006.0433-.0048-.0156-.012-.0283-.0168-.0283-.0126 0-.027.0247-.027.0463 0 .0173.0017.0197.015.0197.0127 0 .015.0031.015.0168a.16272.1627 0 0 1-.0096.0444c-.0084.0253-.0084.0293 0 .0463.018.0341.0096.0641-.0168.0593-.0174-.0036-.018-.0024-.0096.0133.0036.0071.0102.0095.0173.0077.0097-.0024.0128.0006.0157.0138.0091.0432.0227.09.0282.0966.0132.0162-.0162.1038-.0348.1038-.0067 0-.0084.003-.0055.0102a.19412.1941 0 0 1 .0072.033c.0029.0204.0017.0222-.0216.0342-.0276.0144-.0276.0144-.018.0318.0043.0072.0102.0366.015.0653.0067.045.0065.0577-.0013.0907a.29054.2905 0 0 0-.0077.0708.14722.1472 0 0 1-.003.0426c-.0025.006.0012.0366.008.069a1.15934 1.1592 0 0 1 .0178.1314c.0031.0396.0089.08.0125.0894.0055.0138.0043.0217-.0036.0385a.0667.0667 0 0 0-.0053.0413c.003.0156.0006.0271-.0097.0456a.18192.1819 0 0 0-.0161.0684c-.0024.0379-.0041.0439-.0139.0439-.0137 0-.0144.0113-.0019.0547.0067.0209.0096.0545.0096.0953 0 .054-.0024.069-.0161.105-.0156.0395-.0163.0462-.0132.114a.62688.6268 0 0 0 .0103.0949.0703.0703 0 0 1 0 .0444c-.0084.0245-.0007.0756.0186.1186.0114.0259.0114.0283.0017.059-.009.0293-.009.0353-.0005.0689.0132.0533.008.2287-.0084.2592-.008.0144-.0115.0336-.0115.0607a.23873.2387 0 0 1-.0067.058c-.0047.0152-.004.0212.0044.0337.008.012.009.0228.006.045a.09471.0947 0 0 0 .006.054c.008.0205.0084.0277.002.0467-.0109.0331-.0032.1603.0131.2078l.012.0365-.012.0367c-.015.0438-.0156.0702-.0036.1056.0091.024.0084.0282-.0013.0533-.007.0181-.0106.0457-.012.084a6.59721 6.5964 0 0 0-.001.0781.59537.5953 0 0 0 .0023.06l.0053.1008c.0012.0342.0036.0636.0053.0654.002.0013-.0048.0253-.0138.0534l-.0174.0504.0126.0283c.0113.0257.012.0312.0048.081-.0072.0551-.0041.099.0096.1386.0048.0132.0065.0257.0048.0288-.002.003-.0036.036-.0048.0732-.0013.0587-.0031.0713-.0151.0912l-.0137.0233.0144.0113a.54847.5484 0 0 0 .0282.0228l.0144.0114-.0156.0168c-.015.0156-.0156.0186-.0096.0366.0048.0138.0048.026 0 .0456-.0055.0223-.0053.0294.002.0408a.12572.1257 0 0 1 .0131.0403.16372.1637 0 0 0 .0186.0528c.0138.024.0144.0276.0077.0593a.18162.1816 0 0 0-.0043.0534c.0043.0253.0354.0733.07801.1206.024.0264.0348.0444.0373.06.0059.038.013.05.0293.05.0107 0 .0144.0023.012.009-.0024.0053.0072.018.0246.0341.0156.0144.04381.0403.06241.0583a.39475.3947 0 0 0 .09361.0617 1.27516 1.275 0 0 1 .07801.0427c.012.0091.0318.0144.06001.0168a.32804.328 0 0 1 .07861.0192c.0319.0137.03841.0144.06431.0084.0281-.006.0317-.0053.10501.0132.0133.0036.0318.0024.05701-.0036.03841-.009.09001-.0113.19013-.009a.48876.4887 0 0 0 .0854-.0042c.0257-.006.0317-.0048.06052.0091l.0317.0156.048-.0127c.069-.0192.0799-.0204.0883-.0138.0132.0108.07392.015.11642.0072.0336-.006.0468-.006.07501.0013.0313.0077.0354.0077.05531-.0025l.0216-.0114.0389.0216.039.0223.0307-.0101a.12902.129 0 0 1 .05201-.0072.15002.15 0 0 0 .05831-.0091c.04391-.0144.07991-.0108.11282.0113l.0223.0156.0449-.0101a.66638.6663 0 0 1 .11282-.0096c.05521 0 .07201-.0024.09071-.012.0168-.0084.0264-.0101.0341-.006.018.0101.0408.0065.06551-.0096l.024-.0163.0245.0283.0253.0281.10271-.003a3.58564 3.5852 0 0 0 .13672-.0066c.0186-.0024.0384-.0019.04381.0013.0067.004.0246.0005.05761-.0115.0264-.009.05701-.0168.06781-.0168a.13002.13 0 0 0 .04931-.016.22483.2248 0 0 1 .05811-.0205.11501.115 0 0 0 .04321-.0163c.0115-.009.021-.0113.0378-.009.0186.0023.0264 0 .04561-.0157a.40755.4075 0 0 1 .05941-.0377.16332.1633 0 0 0 .05881-.0523.59137.5913 0 0 1 .07561-.0786c.04631-.04.05471-.051.07921-.1.015-.0302.0324-.06.03841-.0662.008-.0096.0103-.0226.0103-.064 0-.0529.0072-.0769.0264-.0932.006-.0048.0096-.0173.0096-.0329a.53737.5373 0 0 1 .009-.0727c.0116-.0588.0073-.105-.0095-.1092-.0144-.004-.0144-.009.0007-.0228.0106-.0096.012-.018.012-.0834a1.35987 1.3597 0 0 0-.0077-.1236c-.0072-.0467-.0091-.0516-.0254-.06a.15102.151 0 0 1-.0202-.0107c-.0067-.0037.016-.0181.0389-.024.0336-.0097.0355-.0223.0133-.0805-.0157-.0402-.0174-.0522-.0138-.0756a1.24145 1.2413 0 0 0 .0113-.1843c0-.072 0-.072-.0283-.1404l-.0276-.069.0125-.0088c.0072-.0055.0163-.0115.0192-.0139.0036-.0024.0077-.0437.0096-.099.0024-.0647.006-.0995.0114-.1098.012-.0216.0133-.2508.0019-.285-.0067-.0193-.0072-.0558-.0036-.186.006-.2053.006-.2089 0-.288-.0048-.0625-.004-.0685.0084-.0925.0102-.0204.012-.0312.0084-.048-.0024-.012-.0048-.19-.006-.396-.0006-.2646-.0036-.3816-.0084-.3996-.008-.0282-.0053-.1236.006-.255a1.16364 1.1635 0 0 0 .006-.105 1.6623 1.6621 0 0 1-.0006-.144c.0036-.0397-.0053-.3193-.0114-.339-.0091-.03-.0072-.0847.003-.114.0115-.0324.0115-.0559 0-.0948-.0083-.027-.0083-.0348-.0012-.06.006-.0204.008-.054.0067-.1226-.0017-.0809-.0035-.0977-.0143-.1186-.0103-.0199-.015-.024-.0301-.024-.0156 0-.018-.0025-.018-.017 0-.0125-.004-.0192-.0162-.0252l-.0168-.0077.0174-.0036.0173-.0036-.0215-.0228c-.021-.0228-.0216-.0234-.0162-.0564a.53677.5367 0 0 1 .009-.0444c.0037-.0114.0032-.0114-.0191-.0024-.0384.015-.10201.0222-.21183.0234-.0768.0013-.1093-.0006-.12131-.0067-.0245-.012-.04501-.0095-.07671.0085-.0264.015-.0306.0156-.05161.0089a.49506.495 0 0 0-.07381-.0132c-.0408-.0048-.05521-.0041-.07681.003-.0144.0049-.0324.0078-.03961.006a1.54119 1.541 0 0 0-.10801-.0083l-.09481-.006-.0432.0233c-.06001.033-.10142.0319-.07921-.0017.009-.0144.0089-.015-.0096-.0187-.0343-.0067-.06071-.0036-.08111.0084-.018.0115-.024.012-.06721.0067-.04671-.006-.12962-.0013-.14522.0084a.12762.1276 0 0 0-.024.0312c-.0192.03-.0233.0276-.0281-.0192l-.0036-.033h-.0228c-.0288 0-.036.0096-.07681.1044-.0336.0792-.03841.1122-.0192.1362.0106.0132.0106.0138-.003.0342-.0167.024-.0186.0529-.0052.072.009.012.0084.0145-.0024.0294-.012.0174-.0216.0943-.0192.1519.0036.0907.0019.1728-.0053.2117-.0091.0534-.0048.0823.0144.1008l.0144.0139-.0168.0221c-.0163.0228-.0163.0235-.0077.0547.0096.0341.0072.1044-.0043.1337-.006.0156-.0043.0192.0186.0427.0179.0187.0306.0257.0486.0281.018.0024.0312.0096.04922.0276.0257.0254.0365.0302.0408.0175.0019-.0053.0149-.0017.0444.0115a.69159.6915 0 0 0 .04972.021c.0048.0011.0187.0354.0324.0798.0259.0845.0283.1133.0192.2346-.0036.0546-.0031.063.009.0911.0128.0293.0128.0319.0037.06-.0187.0552-.0132.1927.012.3019.008.0348.008.0413-.0006.0612a.15552.1555 0 0 0-.009.0487.26933.2693 0 0 1-.012.0648c-.0174.0564-.0163.1205.0028.1577.0091.0168.0138.033.012.0396-.0024.0072.0024.0223.0114.0384.0221.0379.021.051-.0053.051h-.0215l.0013.0582a.7624.7623 0 0 1-.0061.1128c-.0084.0576-.006.1056.0084.1723.0072.0317.008.0432.0019.0533-.0053.0101-.0053.0204.0007.0456a.10561.1056 0 0 1 0 .0643c-.008.034-.0072.0432.0096.0893.0096.0276.0096.03-.0031.066-.0156.0475-.0156.0739 0 .1273.0106.0377.0113.0461.0048.0852-.006.0365-.0053.0467.003.0713.0103.0294.0085.0396-.0035.0276-.0108-.0106-.0187-.0084-.0139.0031a.58457.5845 0 0 1 .0127.0456.32154.3215 0 0 0 .0173.0523c.0092.0173.0092.018-.0059.018-.015 0-.0156.0005-.0139.0372l.0017.0377.0396.0053.04032.0048-.0156.03c-.012.0235-.0156.0396-.0168.074-.0007.024-.0024.046-.0048.0496a.49616.4961 0 0 0-.0101.068c-.006.0628-.0174.0952-.0324.0952a.11071.1107 0 0 1-.024-.006c-.0139-.0053-.0156-.0048-.0127.0041.0096.032.0144.0648.0103.0751-.0041.0113-.0048.0113-.0204-.0013-.0168-.013-.0187-.013-.06141.0037-.01.004-.0095.002.005-.0168.009-.012.016-.0276.016-.0343 0-.012-.0035-.0125-.06051-.0125-.05401 0-.06301.002-.08641.0156-.0348.0204-.05401.018-.05331-.0067a.18002.18 0 0 1 .0047-.036l.0043-.018-.012.0144c-.0072.008-.0125.0173-.0125.0223 0 .0053-.0065.0084-.018.0084-.0174 0-.018-.0007-.018-.0288l-.0006-.0283-.012.0223c-.0072.0137-.0162.0227-.0228.0227a.0285.0285 0 0 0-.0192.0097c-.006.0077-.0144.0089-.03841.006a.09471.0947 0 0 0-.05641.0084c-.0336.0156-.0348.0149-.0456-.006-.008-.0151-.0125-.018-.0324-.018a.13552.1355 0 0 0-.04441.009.13202.132 0 0 1-.04021.009c-.0156 0-.018-.0017-.018-.0174 0-.017-.0006-.017-.04321-.0217a1.34947 1.3493 0 0 0-.08581-.0053c-.039-.0005-.042-.002-.0468-.0161-.008-.0211.0091-.0547.042-.086.0276-.0263.0342-.0426.0408-.1031.0031-.0293.002-.0413-.0067-.057a.18192.1819 0 0 1-.0144-.0431c-.0043-.0223-.004-.0223.0156-.0223.0234 0 .0222.0024.0234-.066a.98452.9844 0 0 1 .0053-.0907c.0043-.031.003-.0461-.0048-.069-.012-.036-.012-.0551 0-.0966a.12532.1253 0 0 0 .0053-.0581 7.89707 7.8961 0 0 1-.0091-.0696.56367.5636 0 0 0-.012-.0739c-.0067-.0257-.0053-.033.0077-.072.0168-.0466.0204-.1056.009-.141a.07791.0779 0 0 1 .0007-.045c.006-.0204.0053-.0312-.0013-.0533-.007-.0235-.007-.03-.0005-.0396.006-.0084.0072-.03.0048-.0888-.0017-.0427-.0036-.0859-.0036-.0955a1.71351 1.7133 0 0 1 .0043-.0912c.0041-.0677.0043-.0744-.0077-.0972-.0127-.024-.015-.0341-.0221-.1008-.0031-.03-.0024-.0317.015-.0408.021-.0107.0227-.0257.0083-.0605-.0077-.0192-.0089-.0355-.006-.0865a.60727.6072 0 0 1 .0108-.0858c.006-.0192.0053-.0258-.003-.0402a.10761.1076 0 0 1-.0102-.0492.23843.2384 0 0 0-.0053-.0516c-.0043-.0144-.0037-.024.0029-.036.0048-.0096.0084-.0336.0084-.0587a.26233.2623 0 0 1 .0067-.0625.0517.0517 0 0 0-.0006-.0414c-.0108-.0288-.0084-.2213.0036-.2796.0107-.0528.0107-.0816 0-.1236-.0162-.0618-.0173-.0913-.006-.1434.0096-.0468.0096-.0511 0-.0943-.012-.0497-.01-.078.0091-.1277.0107-.0288.0114-.0367.0053-.0708a.35734.3573 0 0 0-.0216-.072c-.0144-.0331-.0144-.0348-.0055-.0588.0084-.0216.0084-.0312.0024-.0654-.0102-.0606-.0036-.1873.0127-.243.0168-.0576.0173-.0998.0012-.132-.0096-.0194-.0108-.029-.0067-.0403.0072-.0199.0065-.0756-.0013-.096-.0112-.0283-.0095-.093.0031-.1213.0107-.0227.0107-.0294.0043-.0894a1.98304 1.9828 0 0 1-.0096-.1421 42.44693 42.4417 0 0 0-.0053-.174c-.0072-.1956-.0048-.1764-.0294-.2142l-.0229-.0342.0156-.03c.018-.036.0276-.1272.0156-.1494-.0067-.012-.0053-.0133.008-.0133h.015l-.0109-.0257c-.0102-.0234-.0108-.039-.0084-.1547.0024-.0967.0012-.1375-.0055-.1645-.0067-.0288-.0067-.0414-.0013-.063.0104-.0373.0104-.1218 0-.1638a.13252.1325 0 0 1-.0028-.0582.0757.0757 0 0 0-.0006-.0385.10801.108 0 0 1 0-.0467c.0036-.024.003-.036-.0036-.0493-.0096-.0197-.0072-.045.0108-.1116.0144-.0528.012-.0965-.008-.1416-.0197-.045-.0293-.0857-.0293-.1241 0-.0324-.0006-.0343-.015-.0343-.015 0-.015-.0005-.0067-.0173a.21553.2155 0 0 0 .0132-.0583c.0036-.0353.0072-.0437.0234-.0605a.10391.1039 0 0 1 .03662-.0228c.0096-.002.0293-.0067.0444-.0103.0306-.0084.0966-.0101.12131-.0036.0124.0036.0197.0013.0353-.0113.0168-.0144.0187-.0151.0127-.0036-.012.0216-.0091.0317.0091.0317a.31194.3119 0 0 1 .05041.0072c.03.006.03601.0053.04971-.003.0126-.0083.0319-.0102.11952-.0102.0996 0 .10441-.0005.12301-.0144.0138-.0101.0306-.015.06061-.018a.31874.3187 0 0 0 .05811-.0096c.0091-.0036.0168-.0053.0187-.0043.0012.0014-.0024.0127-.0072.0247-.0101.024-.0096.0247.0227.0024l.0162-.0115v.023l.0007.0226.024-.0286c.0137-.0156.0288-.0283.03361-.0283.0067 0 .0043.0053-.0072.0187-.0084.01-.0144.022-.0132.0257.0012.0036.0161.0072.0336.0084.03.0019.0317.003.0408.024a.14162.1416 0 0 0 .0211.0355c.012.0125.012.0144.0024.0377a.12952.1295 0 0 0-.0096.0384c0 .0084-.0053.0168-.015.0216-.0193.0103-.0193.0139.0047.0367l.02.0192-.0109.022a.25503.255 0 0 0-.018.0632c-.006.0353-.0055.0437.006.0768.018.054.0233.1397.0103.1764-.0096.0276-.0096.0306.0012.0617.0079.0235.0144.0336.0226.0348.02.0036.023.0108.012.0276-.012.018-.0125.0168.014.03.0191.0103.0198.0096.0311-.0036l.0108-.0137.0036.03a2.77734 2.777 0 0 0 .0072.0485c.002.015 0 .0199-.0127.0253l-.0149.007.0091-.018c.0053-.01.008-.0208.006-.024-.0048-.0076-.0228-.0076-.0312.0008-.0043.004-.0168.0012-.0432-.012-.0384-.02-.04082-.02-.03.0005.0053.0096.0053.0228 0 .0523-.004.0245-.0055.046-.0019.0576.0048.0168.0072.018.0353.0197.024.0013.0312.0043.0336.0127.0024.0096.0072.0106.0288.0084.0228-.0024.0307 0 .056.0173l.03.0204.04801-.0077c.0808-.0127.23681-.0204.26442-.0134a.14932.1493 0 0 0 .0494.0031.18352.1835 0 0 1 .06052.0053c.027.0074.0547.0086.13561.0055.10081-.0041.10131-.0041.11882-.0216.021-.0204.0319-.021.096-.0024.07332.0216.10872.0253.11832.0133.0067-.008.0067-.0133.0012-.0253-.012-.0264-.0084-.0372.0173-.0504.024-.012.03-.021.0173-.0252-.0047-.0017-.0047-.0096.0007-.0281.0041-.0168.0055-.0468.0024-.0871-.0031-.0485-.0019-.0684.006-.0947.0133-.045.012-.0786-.0029-.1074-.0113-.0228-.0113-.0264-.0029-.0468a.39365.3936 0 0 0 .0133-.0799c.003-.0467.0023-.0612-.006-.0768-.0049-.0107-.0073-.0228-.0054-.0264.0024-.0036.0036-.03.003-.0581-.002-.0398.0006-.059.01-.0866.0169-.048.0163-.0852-.0028-.1306-.0127-.0302-.015-.0422-.0115-.0643.0067-.042.0084-.1632.0024-.1788-.0031-.0079-.0084-.012-.012-.0096-.0048.0024-.0043 0 .0007-.009.0132-.0246.0288-.099.0233-.1098-.008-.015-.0065-.033.0048-.066.0101-.0276.0101-.03 0-.0475-.0132-.0233-.0127-.0341.0017-.0581.0108-.0173.012-.03.012-.1219v-.102l-.033-.0624c-.018-.0348-.033-.0672-.033-.0714 0-.0048-.006-.0096-.0132-.0107-.0084-.0013-.015-.009-.021-.0259-.0114-.0336-.0383-.0594-.1007-.096-.0336-.0198-.05832-.039-.06482-.0504-.012-.0198-.0187-.0222-.074-.0264a.19872.1987 0 0 1-.06112-.0156c-.0132-.0066-.0288-.0108-.0336-.009-.0048.0018-.0259-.003-.0468-.0114a.35534.3553 0 0 0-.08282-.0186.44816.4481 0 0 1-.078-.0132c-.0276-.0084-.04752-.009-.12002-.0054-.12602.0067-.15072.0067-.17523.0012-.0204-.0042-.0228-.003-.03.012-.0067.0138-.0133.0174-.0343.0204-.0192.0024-.03.0078-.0396.0192-.018.0234-.0245.0198-.0096-.0053.0168-.0283.0163-.0301-.009-.0385a.09151.0915 0 0 0-.0529-.0012c-.07322.0156-.08162.0156-.09722.0006l-.015-.0144-.0318.0168c-.0288.015-.0367.0168-.0703.0132a.89661.8965 0 0 1-.07324-.0103c-.0257-.0048-.0545-.0048-.11471.0013-.07251.0065-.08141.0059-.09941-.003-.018-.0091-.0204-.0091-.0254-.0014-.004.008-.0083.0085-.0226.003a.10451.1045 0 0 0-.044-.0017c-.03401.006-.17682.006-.22963 0-.0336-.0036-.0494-.0024-.0727.0054-.0264.009-.0324.009-.05872.0006-.0246-.0072-.072-.009-.25213-.009-.17642 0-.22873-.0018-.25503-.009-.0214-.0057-.0314-.0085-.04041-.0077zm-4.26724.0292a.08531.0853 0 0 0-.0307.0067c-.0222.0084-.0366.009-.0726.0048a2.08596 2.0857 0 0 0-.12002-.0078c-.06481-.003-.07921-.0018-.10511.0084-.03651.0138-.05701.0144-.10502.0018l-.0366-.009-.03.0192c-.036.0227-.0413.0318-.0413.0707a.09501.095 0 0 1-.012.0499c-.014.0234-.0151.0438-.0031.0648.0048.0084.0084.03.0089.048a.26603.266 0 0 0 .0067.057c.0053.0192.0048.0354-.0043.081-.006.0318-.0144.06-.02.0642-.0078.0067-.0071.0096.0054.0227.0132.0145.0139.0187.0163.1453.0012.072.0024.144.003.1608.0013.0312-.0107.1134-.0191.1296-.0024.0048-.0017.014.0012.02.0036.0066.0053.2087.0048.558-.0007.4926.0005.5526.0096.5922.0084.0365.0089.0504.0029.0804-.0072.0413-.0036.0605.0197.1001a.10721.1072 0 0 1 .0156.063c0 .0198.004.0498.0096.066a.09611.0961 0 0 1 .0043.0558c-.0041.0235-.008.0276-.0245.0324-.0168.0048-.0192.0079-.0156.018a.13722.1372 0 0 1 .003.0379c-.0006.0228.0013.0264.0186.036l.0199.0102-.0254.0053-.0245.0053.0113.0331c.006.0187.0096.036.0072.0396-.0024.0036-.0036.0235-.003.0439a.18672.1867 0 0 1-.0054.0547c-.0036.0089-.0072.0754-.0084.148-.0024.1314-.0036.1362-.024.1434-.003.0013.0012.0108.0102.0216a.10531.1053 0 0 1 .0204.039c.003.0162.009.0234.0324.036.024.0133.0306.0205.0384.0438.0114.0336.012.0499.0024.0499a.037.037 0 0 0-.0162.0053c-.0072.0043-.0055.0103.0077.0336.0091.0156.015.0293.0127.0319-.0019.0017-.012.0005-.0223-.0036-.0281-.0103-.0372-.0007-.0329.0377l.0029.0307-.03.0226c-.0168.012-.0312.0211-.033.0194-.0013-.0012.0047-.014.0133-.0283.0137-.021.0142-.0245.0053-.0204-.0258.0103-.033.0103-.0408-.0005-.008-.0103-.0096-.0103-.0396.0029-.021.009-.0378.0126-.0504.0102-.0162-.003-.0174-.0024-.008.0048.0114.009.0126.0168.0049.0324a.13042.1304 0 0 0-.0091.021c-.0017.006-.0126.0144-.024.0192-.018.0079-.0216.012-.0252.036a.20212.2021 0 0 0 0 .0504.15502.155 0 0 1-.0048.0534c-.0053.0223-.0072.0564-.0048.117.0024.0726.0013.0889-.0072.1057-.0096.018-.0096.021-.0006.0456.0107.0281.0102.0552-.003.1272-.0078.0396-.0073.0461.0023.0744.0091.024.0103.0384.0067.0672a.57487.5748 0 0 0-.0036.0432l.0024.114c.0012.0667.0053.1176.0102.1337.0072.0235.0102.0266.0348.0326.0288.0072.0354.0156.0253.034-.008.0157.0059.0457.024.0517.007.0024.012.006.0107.0079l-.0138.027-.012.0234.027.0252a.21323.2132 0 0 0 .057.0365c.03961.0144.04201.0173.03361.0384-.0067.0156-.006.0199.006.036.0096.0133.0187.0187.0307.0187.0215 0 .0167.0096-.008.015-.024.0052-.0264.0132-.0137.057.0084.03.0089.0408.0029.0593-.0096.033-.0084.051.0053.0684.015.0192.015.0216-.003.0893-.0138.0523-.015.065-.015.197.0007.0996.0031.1524.0089.18.012.054.0108.0738-.0043.1086-.0127.0294-.0125.0312-.0024.0624a.12702.127 0 0 1 .006.0564.08211.0821 0 0 0 .0036.0427c.006.015.006.025 0 .052-.0053.0265-.0053.0427 0 .0793.006.036.006.0624 0 .1236a8.9552 8.9541 0 0 1-.0103.1122c-.0024.0264-.0053.0348-.0125.0348-.0079 0-.0072.0019.0024.0084.0108.0084.0115.0174.0108.1818 0 .1111-.0031.188-.0079.2155-.0065.0365-.006.0497.0024.0888.0072.0372.0084.0707.006.1692-.0019.0707-.006.1284-.0103.1373-.0053.0115-.004.0204.0036.0414a.09331.0933 0 0 1 .0067.0474.14802.148 0 0 0 .006.0571c.0096.0336.0096.039.0007.0744-.0108.0439-.0125.1219-.003.1579.0097.0377.0108.2106.0013.2477-.0103.042-.0101.0679.0019.0973.0096.0227.009.0258-.0007.0443-.0084.015-.0096.0264-.0067.0493.0103.0714.0108.0851.0048.0966-.0053.0096-.0036.0161.0077.0336l.0151.0216-.021.0072c-.015.006-.0205.0106-.018.0173a.25273.2527 0 0 1 .0071.0487c.0031.0372.0043.0396.0247.051.0132.0066.0233.0172.0252.0263.0024.0108.0096.0168.0281.0228.0204.0067.0379.0253.0379.0403 0 .0065-.036.0024-.0516-.006a.09081.0908 0 0 0-.0336-.0091c-.03672 0-.03842.0581-.0024.0953.0204.021.0204.0223.015.0504a.8244.8243 0 0 1-.012.053c-.0068.0209-.006.0245.0095.0449l.0168.0222-.0161.0144c-.0091.0072-.0204.0138-.0253.0138-.0131 0-.01.0096.0157.0522.0281.0467.0293.0558.0084.0558h-.0156l.0173.0144c.0391.0324.0696.0366.0919.0125.0101-.0107.021-.015.04371-.0161.0271-.002.0312-.0036.0343-.0168.0024-.0096.0084-.0156.0161-.0168.0108-.002.0139.0019.0174.0197.0056.03.0337.0432.07261.0336.0211-.0053.0294-.0048.04321.0019a.0608.0608 0 0 0 .03911.0053c.012-.0019.04371.0013.07251.0072.04631.0101.05281.0101.07631.0013.0192-.0067.06171-.0103.16872-.0127.12482-.003.14522-.0024.16132.006.015.008.0264.0091.05521.0048.04801-.0065.37155-.0065.40445 0a.12572.1257 0 0 0 .06001-.004c.04931-.0138.35055-.0138.39375 0 .0222.0071.03901.0083.06901.004a1.87863 1.8784 0 0 1 .13332-.0053c.06301 0 .09651-.0024.10251-.0072.0065-.0053.0138-.006.0307-.0005.0167.0053.0317.0048.06351-.0013a.42505.425 0 0 1 .10332-.004c.051.003.066.0019.0947-.008.0265-.0095.04802-.012.09972-.0107.0365 0 .0701 0 .075-.0006a.15072.1507 0 0 1 .0287.003c.0127.0025.0294 0 .05112-.0083a.35274.3527 0 0 1 .075-.0162c.06532-.0053.09782-.018.14632-.0546a.53417.5341 0 0 1 .08281-.051c.07391-.0336.09311-.0456.11042-.0702l.018-.0252-.0173-.018h.0221c.0168 0 .0276-.0053.0499-.0247a.23013.2301 0 0 1 .042-.0305c.0106-.0048.0132-.012.0156-.0403.0019-.0257.0102-.0492.0336-.0972.0173-.0347.0312-.0701.0312-.0797a.08241.0824 0 0 1 .006-.0283c.0048-.0091.0036-.015-.0067-.0288-.0163-.0221-.008-.0427.0186-.0427.015 0 .018-.0029.0234-.0227a.24643.2464 0 0 0 .0067-.0564c0-.0293-.002-.0354-.0156-.0462-.0134-.0102-.0144-.0132-.006-.0162.0137-.0053.0144-.1344.0012-.1344-.0084 0-.0276-.0216-.0276-.0312 0-.0019.0048-.0055.0106-.0072.0151-.0048.0374-.0264.0374-.036a.067.067 0 0 0-.0126-.024l-.0133-.0162-.0167.0162-.0174.0168v-.033c0-.03.0012-.033.0168-.039.0144-.0053.0173-.0113.0246-.048.008-.039.0132-.1122.0127-.1794 0-.0168-.0013-.1086-.0019-.204-.0013-.1392 0-.1776.0067-.1915.0072-.015.0072-.0221-.0019-.0557-.009-.0324-.0096-.045-.0043-.0847.0137-.0953.0137-.1601.0012-.2004-.0144-.0461-.015-.078-.0024-.1152a.14632.1463 0 0 0 .006-.0684c-.006-.06-.006-.0581.002-.1457.0052-.0595.0052-.0894.0004-.1106-.0036-.016-.006-.0749-.0053-.132.0007-.0564-.0005-.1056-.0024-.1092-.0024-.0036 0-.0233.0053-.0437.0096-.0379.0084-.075-.0077-.2333a.20563.2056 0 0 1 .0072-.0703.26963.2696 0 0 0 .0096-.0607c-.0036-.1812-.006-.2297-.012-.2477-.0102-.0324-.0084-.2779.003-.3673.0095-.0738.009-.1008-.0037-.1596-.0072-.0312-.0072-.0312-.0306-.0312-.0222 0-.0234-.0012-.0234-.018s.0017-.018.0216-.018c.0187 0 .0211-.0017.0174-.0107a.35404.354 0 0 1-.009-.0613c-.0052-.069-.0162-.0864-.072-.114-.03-.015-.06001-.0402-.06001-.051 0-.0043-.0052-.012-.012-.018-.0066-.006-.012-.0156-.012-.021 0-.012-.05101-.0618-.08821-.0864l-.0253-.0168.0265-.0228.0257-.0228-.0245-.0108a.32354.3235 0 0 1-.06131-.0439.27473.2747 0 0 0-.05701-.0408c-.0216-.0089-.05691-.039-.06661-.057-.0035-.0071-.0023-.0167.0049-.0311.0096-.0204.0113-.0216.0413-.0216a.30074.3007 0 0 0 .0708-.012c.0348-.0108.0396-.0144.0396-.0276 0-.0108.012-.0264.042-.0559.0413-.0396.042-.0408.042-.0707 0-.0277.0024-.0337.033-.0709.0277-.0336.033-.0437.033-.0636 0-.021.0017-.0233.015-.0233.0205 0 .0193-.012-.0052-.0439l-.0204-.027.0132-.0126c.0252-.024.03-.0384.0192-.06-.0096-.0187-.0096-.0187.0043-.0187.0137 0 .0137-.0017.0113-.0329-.0024-.0312-.0019-.0336.0227-.0612l.0253-.0288-.0043-.0403c-.0029-.0312-.0013-.0449.006-.0612a.0533.0533 0 0 0 .0036-.0437.40505.405 0 0 1-.0067-.0799c-.0007-.0833-.0084-.1266-.0324-.1757-.0228-.0456-.027-.0787-.0156-.1099.0168-.0437.012-.1404-.0091-.1961-.0036-.0079-.0013-.0103.0107-.0103.0157 0 .0157 0 .0067-.0209-.0107-.027-.0107-.027.0067-.027.0085 0 .015-.0006.015-.0018 0-.0036-.066-.1669-.072-.1782-.0053-.0108-.0048-.012.0091-.012.0151 0 .0151-.0007.006-.018-.0113-.0223-.0114-.0276.0007-.0174.0156.0126.0264-.0085.0264-.0498a.17592.1759 0 0 1 .0096-.0576c.0161-.0374.0444-.1231.0444-.1339 0-.006-.0072-.0192-.0156-.0293l-.0163-.0187.0134-.0432c.0149-.0516.016-.0804.0029-.099-.0067-.0102-.0084-.0203-.006-.036.0036-.0203.0162-.2106.0173-.2711a16.61505 16.613 0 0 0-.0041-.312c-.0041-.251-.0036-.2899.0048-.324a.28654.2865 0 0 0 .0012-.137.09761.0976 0 0 1 .0005-.0629c.0072-.0264.0072-.039.0007-.0823-.0101-.0653-.0096-.1218.0005-.1566.0102-.0324.006-.0516-.0149-.0774-.0144-.0162-.015-.021-.0096-.0408.0031-.012.0079-.0264.0096-.0318.006-.0144-.06001-.1098-.11882-.171-.042-.0438-.0516-.051-.063-.0474-.0097.003-.0205-.0006-.036-.0107a.57657.5765 0 0 0-.05222-.03.16902.169 0 0 1-.0379-.0246c-.006-.0067-.0186-.0096-.0456-.0096-.0293 0-.0396-.0024-.04732-.0114-.0084-.0096-.0139-.0107-.0259-.006a.14772.1477 0 0 1-.0413.0053c-.0228 0-.0276.0019-.0324.015-.0031.0084-.0077.0151-.0101.0151-.0031 0-.0144-.0139-.0259-.03-.0173-.0253-.0233-.0295-.036-.0276a2.30878 2.3085 0 0 0-.057.0096 5.47618 5.4755 0 0 0-.09662.0161c-.03.0054-.0617.0084-.0701.0067-.0127-.0024-.0168 0-.0223.0132l-.0067.0162-.04612-.0198c-.05797-.0253-.13428-.036-.17678-.0253a.08841.0884 0 0 1-.05701-.0011c-.0313-.0096-.08101-.0108-.15302-.003-.0413.0042-.0475.0035-.05471-.006-.0072-.0097-.0106-.0102-.03651-.0037-.0192.0048-.05231.006-.10132.003-.0715-.0035-.0775-.003-.18142.0198-.0067.0019-.027-.0012-.0444-.0066-.0258-.0078-.0474-.009-.10621-.006-.06721.0037-.07501.003-.08641-.0071-.0126-.0108-.0127-.0108-.0246.0053-.0108.015-.0138.0163-.0438.0127a.23703.237 0 0 0-.07871.0067c-.05201.0113-.08331.0094-.13602-.0091-.041-.0144-.0727-.015-.10991-.0024-.027.009-.0288.009-.04561-.0036-.0162-.012-.0204-.0127-.04381-.0067-.042.0108-.20162.0084-.25683-.0036a.24163.2416 0 0 0-.0448-.0073zm-4.8953.0017c-.0158-.0026-.0228.0011-.0282.0098-.0042.0072-.0276.0264-.0516.0432-.0276.0186-.04321.033-.04081.0378.0102.027.0096.051-.0018.084a.21003.21 0 0 0-.0126.0522c0 .027.018.0966.03.1158l.0114.018-.0246.0252c-.018.0187-.0222.0258-.015.0258.0144 0 .0187.0253.0107.0576-.0047.018-.0053.0504-.003.0948a.52476.5247 0 0 1-.0017.0966c-.0042.0192-.0042.063-.0013.12.0085.141.0103.1596.0205.1747.012.0187.0114.0281-.003.0547-.0108.0202-.012.034-.012.1397l.0005.117.024.0258c.0199.0204.0259.024.035.0192.0203-.0108.04131-.0408.04911-.0715.0072-.0293.0072-.0293.018-.0168l.0107.0134.0007-.0206c0-.0426.0084-.0101.0096.0374.0013.0665.009.1373.0162.1462.0042.006.0018.0079-.0102.0079-.0138 0-.0156.0024-.0156.0221l-.0006.0228-.0114-.0144c-.0067-.0077-.012-.0173-.012-.0221 0-.006-.0079-.0084-.0276-.0084h-.0271l.0204-.0259c.0343-.0426.0348-.0413-.0161-.0389-.0439.0017-.0456.0024-.0516.0192-.0084.024-.0072.0401.0029.054.0127.0168.0115.0228-.009.0557-.01671.0276-.01731.03-.0095.0528.006.018.0072.0463.0053.1111-.0041.1075-.0041.1123.0025.2023.0042.0552.0078.0756.0155.0845.0133.0144.0127.0163-.003.0379-.0107.0144-.0137.0288-.0167.0821-.0031.0427-.0072.0708-.01441.084-.0084.0168-.0091.0235-.0036.039a.67478.6747 0 0 1 .0149.0745c.0072.0492.0072.0576-.0012.0792-.0084.022-.0084.0269.0007.06.0077.0282.0089.0492.006.1038-.0024.0372-.006.0702-.0084.0738-.0108.0156-.0108.0408.0012.096.0132.06.0156.0978.0077.1453a.11561.1156 0 0 0 .0019.0437c.0066.0174.006.018-.0127.018-.0144 0-.0168.0017-.0113.0072.0053.0053.0072.0456.0072.1434 0 .1074.0017.1416.0089.162.0084.024.0084.03 0 .0625-.0084.0293-.009.0413-.0036.0617.0043.0132.0096.0264.0127.0283.0036.0017.0036.0089 0 .0185a.08871.0887 0 0 0 .0029.069c.0067.0126.0079.021.0036.0289-.0221.0408-.0293.0888-.0185.1176.0089.0227.0125.2172.0048.246-.0048.0173-.0048.0372 0 .0684.0053.0365.0048.0492-.0031.0713a.13002.13 0 0 0-.006.0487c.0019.012.0067.0432.0103.0696.006.0377.006.0559.0005.0847-.0107.0533-.0096.3984.0013.4344.0078.0252.0072.0288-.0066.0564-.0132.0276-.0144.0365-.0168.15-.0031.1469.0066.2154.0336.246l.0168.0186-.018.015c-.014.012-.0187.0216-.0211.0438-.003.0234-.0017.0282.0067.0282.0053 0 .0096.0024.0096.006 0 .003-.0048.006-.0108.006-.0168 0-.0199.006-.0103.0204.006.0079.009.027.009.0528 0 .0216.0025.0468.006.0558.0049.0126.003.021-.009.0438a.11841.1184 0 0 0-.015.0642c0 .0534.0097.108.0246.144.0115.0276.012.0354.0067.0582-.0048.0186-.0048.0413 0 .0828.006.057.0048.0726-.0168.1758-.0024.0114.0012.0264.0125.0487.021.0413.0187.066-.0125.1387l-.0235.0538-.0005.1771c0 .0972-.0024.1836-.0054.192-.0042.0125-.0097.1661-.0085.249 0 .0133.0043.0383.0096.0558.0096.0293.0096.033-.0005.0612-.0108.0293-.0108.039-.0103.327 0 .0289.0108.1578.0163.1933a.36705.367 0 0 1-.0031.0737c-.0048.036-.0048.0552.0007.0744.0053.0199.0048.0336-.0007.0613-.0041.0191-.009.0786-.0107.132-.003.0923-.0025.0978.0126.1416a.47636.4763 0 0 1 .0192.0894c.0024.0264.0084.0528.0149.0642a.10651.1065 0 0 1 .0115.0474c0 .0204.0053.0354.0216.0624.0197.0318.0209.0366.0149.054-.0113.033-.0077.0486.0253.1074.02271.0408.03961.0624.05701.075a2.97507 2.9747 0 0 1 .10562.0846c.0522.0427.0973.0744.12781.0888.0444.0222.048.0227.07071.0156.0427-.0126.07201-.0138.09301-.003.0163.0083.0283.0095.06371.006.0336-.0032.0474-.002.0618.0052.02341.012.06302.012.09902 0 .0258-.009.0306-.009.0576 0 .03781.0126.05282.012.09782-.0019.09071-.0282.14762-.0396.16992-.0342l.0161.004-.0173.018-.0168.0174h.0197a.27793.2779 0 0 0 .054-.0083c.01871-.0046.07032-.01.11472-.0118a2.3899 2.3896 0 0 0 .10492-.0072c.0216-.003.0253-.0017.0324.012.0079.0137.009.0144.0216.006.009-.006.0408-.0091.11472-.0114.0557-.0024.11331-.0067.12841-.0096a.30524.3052 0 0 1 .06001-.0055c.0497.0012.17222-.0101.21603-.0204.045-.0108.084-.0126.084-.0036a.13522.1352 0 0 1-.009.0276l-.0083.021.0132-.0096a.0744.0744 0 0 1 .0346-.0091.21673.2167 0 0 0 .05112-.0091c.039-.012.0523-.0114.0816.0036.04932.0253.23163.0276.27964.003a.35164.3516 0 0 1 .06131-.0149.31724.3172 0 0 0 .07021-.0186l.0257-.0114.0115.0223c.0149.0288.04081.057.05041.054.0036-.0019.0106-.0144.0156-.0293a.53837.5383 0 0 1 .0149-.041c.0067-.0144.0067-.0137.0084.0067a.0592.0592 0 0 0 .0193.0378l.018.0168.05221-.0096c.06661-.0132.08581-.0127.09541 0 .0067.0096.0077.0096.0144-.0048.0067-.0151.0096-.0156.0467-.0156.0325.0005.04931-.0031.08531-.018a.44445.4444 0 0 1 .06601-.0228c.0288-.006.05821-.0216.09421-.0504a.19702.197 0 0 1 .05461-.0307.0637.0637 0 0 0 .0384-.0257.66218.6621 0 0 1 .04381-.0523c.05941-.0636.08531-.1001.08931-.1253a.09041.0904 0 0 1 .021-.0439c.0254-.0293.0313-.0444.03741-.0893a.25013.2501 0 0 1 .019-.0696c.0145-.0283.0145-.0336.0157-.1819.0006-.135.0024-.1584.0138-.198a.50276.5027 0 0 0 .0144-.12c.0036-.105.0041-.15.0024-.171a.91541.9153 0 0 1 .003-.078.31874.3187 0 0 0-.0085-.1153c-.0144-.0648-.0161-.1193-.0036-.1596.0072-.0245.0072-.0312 0-.0528a.11101.111 0 0 1-.0053-.048c.003-.016.0012-.0276-.006-.0377-.0084-.0133-.0084-.0168 0-.0373a.09411.0941 0 0 0 .006-.0504.15922.1592 0 0 1 .003-.051c.0066-.024.0203-.099.027-.1446a.08391.0839 0 0 0-.0091-.0534c-.0137-.0312-.0161-.069-.006-.0882.0043-.008.0079-.0582.0091-.1272a7.17858 7.1777 0 0 1 .006-.1956c.0036-.0732.0024-.0847-.0096-.1236l-.0139-.0427.0139-.0185c.0173-.0235.021-.0624.0096-.0996-.0048-.0168-.0072-.033-.0043-.036.0139-.0174.0181-.1494.0091-.282-.0048-.0739-.0041-.0854.0048-.0996a.0716.0716 0 0 1 .0163-.0204c.004-.0031.0067-.0367.0072-.0924.0005-.09.0072-.183.0144-.2124.0029-.0115.0005-.024-.006-.0384-.0096-.0206-.0096-.024 0-.0535.0089-.0293.0089-.0355.0005-.0773a.42535.4253 0 0 1-.0096-.06c0-.0091-.0079-.021-.021-.033-.015-.0128-.021-.0236-.021-.0349l.0005-.0168.0194.0221.019.0216.0108-.0576c.0091-.0485.0096-.0636.0043-.0912-.0096-.0449-.0096-.042-.0005-.07.0132-.0404.0011-.186-.0193-.2317-.0144-.0319-.015-.0373-.009-.066a.43155.4315 0 0 0 .0085-.0733.71199.7119 0 0 1 .0053-.0659c.006-.0319.0096-.2365.0055-.2833-.0031-.03-.006-.0372-.0156-.0396-.0127-.0036-.0096-.0162.0036-.0162.0053 0 .0089-.0156.012-.0528a.52336.5233 0 0 1 .0108-.0744c.0053-.0173.0043-.0276-.0041-.051-.0096-.0276-.0097-.0307-.0007-.0486.012-.0234.012-.036.0007-.063-.0067-.0168-.0091-.0467-.0091-.1272v-.105h-.015c-.0198 0-.0192-.006.003-.027.0162-.0156.018-.0204.0155-.0456a.11901.119 0 0 0-.0084-.039c-.0048-.0083-.0029-.0167.006-.0342.0115-.0235.0115-.0235-.0005-.06-.0168-.0487-.0156-.0727.003-.105l.0162-.0277-.0144-.0413c-.0096-.0276-.018-.0432-.0254-.045-.0089-.0025-.01-.006-.0059-.0217.0024-.0101.0041-.0521.003-.0936-.0013-.0569.0006-.0852.0083-.1157.0096-.036.0103-.0463.0031-.093a.47676.4767 0 0 1-.006-.0793c.003-.033.0012-.0936-.0036-.1656-.0036-.0485-.0053-.0557-.0168-.0605-.0126-.006-.0126-.0067.0067-.0163.0155-.0077.0191-.0125.0155-.0204-.0067-.0144-.0113-.2653-.0077-.3702a.8677.8676 0 0 0 .0005-.036.52166.5216 0 0 1-.0005-.033c-.0007-.0114-.0019-.0493-.003-.084-.0054-.1104-.0037-.1368.0095-.1668.0108-.0246.0115-.036.0091-.0942-.0043-.0738-.018-.1272-.04931-.1891-.0305-.0593-.05701-.141-.05701-.174 0-.0341.0163-.0816.042-.1217a.23673.2367 0 0 0 .0217-.0432c.003-.0134.0019-.0151-.0132-.0156-.0162-.0007-.0162-.0014.0036-.0048.04381-.0091.06481-.0384.0336-.0463-.0138-.0036-.0144-.0041-.006-.024.0084-.0197.0079-.033-.0048-.0732-.0067-.0216-.0187-.0245-.04021-.0096-.0133.0096-.0138.0096-.0102-.0024.006-.018.0168-.1032.0168-.1267a.17642.1764 0 0 0-.0097-.043l-.0096-.0235h.0199c.0192 0 .0197-.0012.0173-.018-.0017-.0144-.0005-.018.0079-.018.0101 0 .0101-.0007.0011-.0108-.0144-.0163-.0125-.0192.0108-.0192.017 0 .021-.0024.021-.012 0-.0108-.0042-.012-.0323-.012-.0427 0-.04991-.009-.0307-.0379.0187-.0264.0187-.0288.0019-.0444-.0216-.0192-.0379-.0257-.08471-.0336-.0365-.006-.04321-.0089-.04321-.0192 0-.0137.0048-.0137.07801-.0036.04681.0067.048.0067.06241-.0084.0144-.0144.0151-.0156.0048-.0252-.006-.006-.0233-.012-.042-.0137l-.0312-.003-.0053-.0282c-.0053-.0276-.006-.0283-.0306-.0324-.021-.003-.03-.0007-.05041.012a.17792.1779 0 0 0-.0246.018c0 .0017.0144.0072.0318.0132a.29124.2912 0 0 1 .0336.012c.0013.0012-.009.0168-.0234.0353-.024.0307-.027.033-.05101.033-.021 0-.0264-.0023-.033-.0155a.11251.1125 0 0 0-.0348-.0307l-.0258-.015.0288-.0198a.62308.623 0 0 0 .05581-.0444l.027-.0252-.045.0031a2.33189 2.3316 0 0 0-.10681.009.42725.4272 0 0 1-.12662-.0018c-.0474-.0067-.0732-.0079-.0972-.0036-.07742.0144-.07742.0144-.10672 0l-.029-.0133-.0233.0126a.11331.1133 0 0 1-.1057-.0012c-.021-.0106-.0353-.0132-.0797-.0132a.99512.995 0 0 0-.07202.0019.55907.559 0 0 1-.0571-.0024c-.03722-.0036-.0396-.003-.04672.0107a.0688.0688 0 0 1-.02.0217c-.0101.0067-.0113.0053-.0113-.0108 0-.0096-.0024-.018-.0053-.018-.0079 0-.0293.0312-.0373.054-.0053.0144-.0102.018-.024.018-.0131 0-.0174.003-.0174.012 0 .0096.0043.012.0187.012.0125 0 .0173.0024.015.0072a.28944.2894 0 0 0-.0073.018c-.0053.015-.024.0192-.0396.0084-.0186-.0133-.0226-.012-.0293.0084-.0096.0264-.0253.024-.0199-.0024.0031-.0187.002-.0216-.0149-.03-.0312-.0168-.039-.0133-.0343.015a.19522.1952 0 0 0 .012.0407c.0072.0139.006.0228-.0125.0847-.0199.0643-.0204.0708-.0139.0979.006.024.006.0329-.0017.054-.0156.0437-.0168.0564-.0067.1164a.39325.3932 0 0 1 .0053.0946.13772.1377 0 0 0 .0061.0626c.012.0341.0114.0473-.003.0804-.0222.0504-.0246.0786-.0102.1493.0113.0576.012.0696.0053.1068-.0101.06-.0089.1477.0024.1861a.13702.137 0 0 1 .006.0504.09331.0933 0 0 0 .0067.0467c.009.0259.009.0295.0005.039-.0077.0097-.0096.0475-.0096.3014 0 .1595-.0017.3-.004.3125-.0025.015 0 .0343.0088.06.0108.0319.0115.0408.0053.0552-.0053.0132-.0053.0228 0 .0408.0061.0199.0055.0271-.0023.0414-.0133.0258-.0114.0529.006.0894.018.0384.0174.0374.0053.0374-.0084 0-.0089.004-.0067.0221a.17602.176 0 0 1-.0053.0605.18832.1883 0 0 0-.006.0631c.0168.1267.0168.1387.0067.1704-.009.0264-.0096.0365-.0043.066.0134.0684.0151.1133.0048.1332-.012.0227-.012.0427 0 .0593.0084.0127.0084.0156-.0005.0396-.0096.0254-.0096.03 0 .0854.0096.0509.0096.0636.003.1085-.0078.0475-.0073.0533.0047.0948.012.0413.0127.0456.0036.0703-.0089.024-.0125.0684-.024.2746-.0029.048-.0017.0626.0091.0895.0113.0307.0113.033.0024.0403-.0084.006-.009.0096-.0036.0221.006.0127.0048.0192-.0048.0379-.0139.0269-.0139.0466-.0024.0953a.23763.2376 0 0 1 .0053.0781c-.0029.0372-.0012.0486.015.096.0155.0444.018.057.0126.0714-.0096.0282-.0079.0456.0053.0456.0163 0 .021.0102.0084.0173-.0336.02-.0335.02-.019.0667.0106.0373.0125.0516.0088.0984-.0029.0462-.0019.0594.0084.0864a.18402.184 0 0 1 .012.0522c0 .018-.0017.021-.0132.021-.0137 0-.0137.0019-.0156.0804-.0017.0918.006.1513.024.1873.012.024.012.0257.002.0557-.0097.0293-.0097.0319 0 .0468.0083.0127.0095.0228.006.0552a1.73181 1.7316 0 0 0-.006.0787 1.26936 1.2692 0 0 1-.006.0737c-.0037.0288-.0025.0367.006.0463.006.0067.0143.012.0191.012.0096 0 .0096.006.0017.0264-.004.0113-.0102.0156-.0209.0156-.0192 0-.0192.0107 0 .0593.0132.0319.015.0427.0113.0763a.22643.2264 0 0 0 .0036.0707c.0067.0289.0067.0349-.0053.066a.21673.2167 0 0 0-.0126.0529v.018l-.024-.0247a.25473.2547 0 0 0-.0264-.0245.09631.0963 0 0 0-.012.024c-.0139.0341-.0127.1481.0012.189.0089.0258.0125.03.0281.0318.0133.0019.021-.0017.03-.0132l.0127-.0156.0245.0583c.0355.0852.0355.0845.0157.0869-.012.0012-.0174.0055-.0186.0156-.0017.0132-.0036.0125-.0312-.0132-.0348-.0324-.0564-.0365-.0624-.012a.0593.0593 0 0 0 .0348.069.15252.1525 0 0 0 .0396.012l.0149.0006-.015.0048a.19132.1913 0 0 1-.0342.0055c-.0173.0007-.0197.003-.0257.0253a.09701.097 0 0 0 0 .0539.22033.2203 0 0 1 .0029.0672c-.0036.0324-.0024.042.0084.063.015.0294.0162.0685.003.1067a.11871.1187 0 0 0-.006.053c.0109.0725.0109.0929.0013.1217-.0096.0293-.0096.0307.0053.0643a.23253.2325 0 0 1 .015.0396c0 .0036-.0096.006-.0209.006h-.021v.0689a.49876.4987 0 0 0 .0095.108c.0096.0379.0096.0403-.0036.0744-.0113.0312-.0125.0396-.0067.0667.0091.0408.0085.0713-.0017.0906-.0067.0131-.0067.0179 0 .03.012.0216.0103.0882-.004.1512a.68238.6823 0 0 0-.014.108c-.0011.0438-.0035.0552-.0149.069a.67258.6725 0 0 0-.0293.0413c-.012.0193-.0205.0253-.032.0259-.0155 0-.0305.0096-.0744.0444-.0264.021-.033.0156-.033-.027 0-.0253.002-.0282.0205-.0366.0108-.0053.0216-.0156.0234-.0222.0017-.0072.0024-.0126.0012-.0126-.0048 0-.07441.0485-.07801.054-.0018.003-.021.006-.04261.006-.0427 0-.0444-.0024-.0293-.0384.0083-.02.0113-.0216.0329-.0216.0199 0 .0259-.0036.0384-.02.0187-.0244.0192-.0323.0019-.0532l-.0133-.0168-.03.0156c-.0264.0132-.0347.0144-.06901.0113a1.85753 1.8573 0 0 0-.09901-.0048 1.02543 1.0253 0 0 1-.09472-.0072l-.035-.0048-.018.0221c-.0173.0204-.0203.0216-.0533.0216-.03361 0-.03601.0013-.04501.018a.08331.0833 0 0 0-.009.0283c0 .0072-.0078.0137-.0222.0192-.04201.015-.05341.0113-.08642-.0253-.0162-.0186-.0342-.0347-.0402-.0366-.006-.0019-.015-.0113-.021-.0209-.0067-.0108-.024-.024-.04501-.0343l-.036-.0173a.11601.116 0 0 1 .0078-.0228.14732.1473 0 0 0 .009-.027c0-.0025-.012-.008-.027-.012-.02401-.0066-.02701-.0097-.03301-.0313a.8388.8387 0 0 0-.0096-.0346c-.0018-.0053.0054.0053.0162.024.0102.019.0216.0346.0246.0346.0024 0 .0102-.009.0174-.0197.0126-.0199.0126-.0384.0018-.1133-.003-.023-.0013-.0326.009-.0506.012-.0204.0126-.0226.0036-.0365a.0401.0401 0 0 1-.0067-.0288.0533.0533 0 0 0-.0035-.03c-.0053-.012-.0053-.0168.0006-.0228.006-.0053.0138-.0036.0373.0096.02401.0132.02871.0144.02401.006-.0085-.0163-.0427-.0468-.0427-.039 0 .004-.0024.0071-.006.0071-.0036 0-.006-.0204-.0053-.0497 0-.0456.0005-.0475.007-.0295l.0073.0198.0168-.0336.0168-.0342-.0156-.0438c-.0192-.0564-.0198-.075-.0012-.0756.0133 0 .0133 0 .0006-.006-.0108-.0053-.0133-.0156-.0198-.0768-.0072-.072-.0067-.078.0144-.1147.0066-.0112.0078-.0257.0053-.057-.003-.036-.0017-.0455.009-.0666.0115-.0221.0127-.033.0115-.1139-.0006-.0773.0006-.0936.0107-.1194.011-.0258.012-.0427.0115-.126 0-.0528-.0042-.1303-.0084-.1723-.0072-.0636-.0072-.0833-.0006-.117.012-.063.0132-.171.0024-.2238-.0072-.0347-.009-.0768-.0078-.186l.0013-.141-.0157-.033a.15532.1553 0 0 1-.0162-.0528.0755.0755 0 0 0-.009-.0336c-.0085-.0127-.0078-.0156.006-.0403.0215-.0389.0354-.0977.0275-.1193-.0066-.0199-.0005-.0493.018-.0859.0115-.0216.0115-.0245.002-.078-.0085-.048-.0157-.1608-.0151-.2261a2.62002 2.6197 0 0 1 .0156-.1753.09961.0996 0 0 0-.0067-.0582c-.0101-.0288-.0101-.0324-.0005-.0708.009-.0373.009-.0679.0036-.3288-.003-.1584-.006-.2976-.006-.309a.56247.5624 0 0 1 0-.0451c.0019-.0918-.0041-.2718-.0101-.309-.0079-.0462-.0031-.0936.0106-.1206.005-.0084.005-.021 0-.045-.0058-.0282-.0053-.036.0031-.0546.009-.0187.0103-.0324.0067-.0858a.62218.6221 0 0 0-.0156-.1026c-.0134-.0432-.015-.069-.006-.0924.0041-.012.0036-.0228-.0024-.0408-.006-.0187-.0079-.045-.0054-.1003.003-.0701.0018-.0773-.0126-.1157-.0204-.0528-.0204-.0703-.0007-.0703.0139 0 .015-.0017.015-.0317a.61258.6125 0 0 0-.0095-.0854.48436.4843 0 0 1-.0067-.1109c.0019-.0396.0007-.0648-.0053-.081-.0067-.0203-.0067-.0253.0017-.0342a.0269.0269 0 0 0 .0053-.0257c-.0022-.0084-.0005-.0643.0031-.1243l.0067-.1092-.018-.0163c-.0192-.0164-.0163-.0229.0113-.0229.006 0 .0115-.0007.0115-.0019a.50276.5027 0 0 0-.00843-.0281c-.006-.021-.0072-.0636-.0048-.1963.0029-.1644.0024-.1704-.0103-.1997l-.0132-.03.0168-.0487c.015-.0456.0156-.0504.009-.09-.0095-.057-.009-.0906.003-.12.009-.0233.009-.0257-.0012-.045-.0084-.0162-.009-.0227-.0036-.039.0108-.0312.0084-.1032-.0053-.1386-.0103-.0264-.0108-.0347-.0048-.0582.0036-.015.0072-.072.0077-.1266 0-.0547.003-.1206.0053-.147.0043-.0438.0038-.0516-.0106-.0893a.21193.2119 0 0 1-.0156-.0739c0-.0318-.0007-.033-.0134-.0293-.0077.0023-.0226.0053-.0334.0077-.0156.0024-.02281.009-.03191.027-.0132.0264-.0252.0276-.0281.003-.0014-.0114.0005-.0162.0072-.0162.0113 0 .0125-.021.0017-.0408l-.0077-.0132-.0204.021-.02041.021-.0343-.0336-.0341-.0336.0089-.0222a.11471.1147 0 0 1 .0173-.0306c.0074-.0072.0086-.006.0086.0102 0 .0187 0 .0187.0226.0132.0398-.009.0703-.0066.083.0072.0192.021.05691.0366.09652.0402l.0373.003-.0073-.0192a.10901.109 0 0 0-.024-.0354c-.0144-.0138-.018-.015-.0288-.0084-.0101.0066-.0144.0053-.0307-.0084-.0286-.024-.04301-.027-.10492-.0227l-.057.004-.009.0217c-.0096.0227-.0245.0427-.0324.0427-.0024 0-.0053-.0127-.0067-.029l-.0017-.0279-.02701.0011a2.33679 2.3365 0 0 0-.04501.0024.0573.0573 0 0 1-.0377-.0126c-.0175-.0126-.0182-.015-.0103-.024.0084-.0096.0072-.0107-.0161-.0138-.01921-.0024-.02881-.0006-.03671.006-.009.009-.0168.009-.06531.0024a.63278.6327 0 0 0-.0559-.0053c-.02931.0443-.05521.0605-.10632.0677l-.0281.0042-.0019-.0288-.0017-.0294-.0324.0012c-.03601.0018-.04201.0048-.03191.015.0043.0042.0072.009.0072.0114 0 .0024-.0252.006-.05571.0084-.0468.0036-.0595.0024-.0756-.006-.01681-.0084-.02281-.009-.03731-.0024-.016.006-.0203.0054-.0467-.0108-.02701-.0173-.02931-.0173-.04631-.009a.19532.1953 0 0 0-.0269.0168c-.0079.0072-.01801.0048-.07202-.0162-.0403-.016-.0647-.0246-.0804-.0272zm-4.21582.0046a.0543.0543 0 0 0-.03.008c-.009.0056-.0324.0085-.0595.0092H4.0208l-.0283.03c-.03841.0396-.05041.0786-.04491.1464a.60607.606 0 0 1-.0053.1188c-.0086.063-.0086.0733.0005.105.0156.0582.018.1224.0053.1614-.0096.0312-.0096.036-.0005.0702a.32804.328 0 0 1 .009.0768c-.0006.0222.0023.0456.006.0522.0083.0162.0083.045-.0006.054-.009.009-.0079.0414.0024.0534.0048.006.0072.024.0067.0492-.0007.0264.0017.0444.0077.0528.0084.0132.0077.0139-.0072.0139-.0127 0-.015.0024-.0115.0101.0096.0264.0096.0432 0 .0583-.0096.0137-.0096.018-.0024.0324.0043.009.0084.0377.0096.0641.0043.1459.0048.2424.0014.2623l-.0038.0227h.024c.0235 0 .024 0 .0134-.012-.011-.012-.0103-.012.0197-.012.0173 0 .0312.0013.0312.003a.20483.2048 0 0 1-.009.0247c-.0078.0187-.01019.0204-.021.0144-.0168-.009-.0487-.0053-.0547.006a.35874.3587 0 0 0-.012.0533c-.006.0355-.006.0475 0 .0631.0134.0312.0139.0467.0043.0845a.31924.3192 0 0 0 0 .1507c.0101.0437.0053.0845-.0139.117-.0084.0145-.0089.021-.0029.0486.0132.0613.0197.1344.0132.1512a.09101.091 0 0 0 .006.0756l.012.024h-.0163l-.0168.0007.0156.0137a.0728.0728 0 0 1 .02.0312c.0023.0096.0052.0223.0071.0276.0024.0084 0 .0108-.0115.0108-.0144 0-.0144.0013-.0186.0684-.003.0552-.0023.0733.0054.0912.0115.0276.0115.0403-.0005.0876-.0084.0312-.009.0523-.0053.1159.0065.1056.0065.114-.0019.1601-.0053.0295-.0053.0445-.0007.057.0072.0187.0096.0691.0067.1429a.53447.5344 0 0 0 .0024.0792c.003.0246.0017.0348-.0067.0474-.0106.0168-.01.0366.0024.0852.0084.033-.0017.1458-.0156.1692-.0084.015-.0084.018.0067.0467.0187.036.0204.0733.006.1213-.0084.0282-.0084.0342-.0007.0534a.36364.3636 0 0 1 .0156.0637c.0067.0413.006.042-.0089.0557-.012.0108-.0199.0127-.0355.0096-.0149-.0024-.0264 0-.04661.012-.0259.0151-.027.0174-.024.0384.0023.0199-.0007.0264-.0278.0607-.02931.0372-.03721.0557-.02451.0636.009.0053.0072.0312-.003.0516-.0073.0125-.0097.0413-.0114.1092-.0013.054-.0043.0965-.0084.1044-.0084.0156-.0096.0576-.0019.0845.0036.012.0036.0396-.0005.0756a.32854.3285 0 0 0 .0005.1032c.0084.0511.0091.0703.0043.1075-.0156.1075-.0168.144-.0067.174.0067.0187.0115.0523.0127.087.0012.0337.006.0673.012.0827a.11371.1137 0 0 1 .006.0578c-.003.0233-.0019.0336.0041.0384.0115.0096.0432-.0228.0384-.0403-.0024-.0101.002-.0137.0264-.0216.03601-.012.04751-.006.04751.0253 0 .021 0 .021-.0216.0167-.03-.0053-.0216.0048.0204.0264.04081.0204.08812.0613.10082.0864a.0707.0707 0 0 1 .0067.0427c-.003.0197-.0007.0269.0113.0413.0101.0127.0144.0235.0132.036-.0019.0173-.0036.0187-.027.0192-.0253.0007-.0258.0007-.0354-.0288l-.0096-.0293-.0173.0168c-.02591.0245-.03071.0466-.02301.0989a.7574.7573 0 0 1 .0084.0912c.0014.0367.0043.0505.0134.063l.012.0169-.0206.0613-.0204.0617.0067.0612c.0048.039.0125.0738.0221.096.0151.0354.0163.0576.0048.102-.0029.0102-.0005.0288.0054.0486.0085.0264.0097.0498.0073.1453-.0024.0755-.0013.1193.0036.132.009.0245.0017.0485-.0199.069l-.0173.0162.009.0347a.28323.2832 0 0 1 .0023.129c-.0101.0511-.0113.3324-.0017.3654.0107.036.0101.0745-.0013.0973-.0071.0132-.009.0293-.0071.057.0017.0282.0005.0378-.0053.0378-.0098 0-.0103-.0031.0053.036.0168.0427.0173.1205.0017.1668-.0101.0307-.0101.0336 0 .0667a.16272.1627 0 0 1 .0067.067 1.78522 1.785 0 0 0-.0072.1094c-.003.0648-.0019.0792.0067.0917.0089.0144.0089.0163-.0007.0307-.009.0137-.0096.0264-.0053.1092.0046.1104.0046.1301-.0007.2004a.37155.3715 0 0 0 .0067.1061c.0094.0493.0094.0535 0 .072-.009.018-.009.0235-.0007.0715.0084.0456.0084.0558.0005.0876-.0125.0516-.0113.0613.0108.0954l.0192.0307.002-.02c.0023-.021.0083-.0233.036-.0112.018.0072.0186.0084.01.0245-.0077.0151-.0072.0187.0091.048.0107.0192.018.0403.018.0534 0 .0253.0041.027.0257.0102a.0733.0733 0 0 1 .01871-.012c.0017 0 .006.0107.0096.0246a.50486.5048 0 0 0 .0101.033c.0024.006-.0024.0084-.0186.0084-.0167 0-.0215.0024-.0215.0107 0 .0193.0605.0421.12171.047.0504.0035.0552.003.08601-.0126l.0328-.0168.03911.0156c.0456.0192.0492.0192.08641.006.027-.0096.0312-.0096.06131-.0007.0407.0127.13552.0134.17942.002.0444-.012.11572-.012.12532 0 .0053.006.0187.009.0432.009a.30814.3081 0 0 1 .06131.0067c.0227.0053.028.0048.0546-.009.02401-.0133.03721-.0157.07732-.0157a.62338.6233 0 0 0 .0876-.0079c.03841-.0072.03901-.0077.05402-.0372.0156-.0317.0259-.0365.0288-.0137.0036.0221.0115.0252.0283.012l.0156-.0127-.018-.0096c-.0174-.009-.018-.01-.0144-.0378.0041-.0354.0168-.0672.0264-.0672.0125 0 .04681-.03.05701-.0492a.14132.1413 0 0 0 .0096-.0582c0-.0216.0024-.0444.006-.051.0036-.0072.0072-.0552.0078-.1147.0006-.091-.0006-.1067-.0132-.1493-.0168-.057-.018-.1014-.003-.1303.0096-.0187.0096-.024.0024-.0473a.19472.1947 0 0 1-.0042-.0703c.0042-.048-.0024-.078-.021-.0947-.0114-.0102-.0108-.0109.009-.0294.0204-.0192.0204-.0204.0186-.0643-.0013-.0307-.006-.0521-.0144-.069l-.0126-.0246.012-.0317c.0102-.0264.0108-.036.0053-.0648a2.98307 2.9827 0 0 1-.012-.09.37255.3725 0 0 0-.033-.1231c-.0035-.0084-.0011-.0101.0169-.0101.012 0 .0234-.0036.0264-.008.0024-.0035.0053-.0395.006-.0791.0018-.1219.006-.1843.0144-.2328.0072-.042.0066-.0552-.003-.12-.018-.1176-.018-.1147-.0006-.1694l.0156-.0502-.0102-.0379a.23803.238 0 0 1-.0084-.0768.7378.7377 0 0 0 .0012-.06 6.86615 6.8653 0 0 0-.0013-.0787.43335.4333 0 0 0-.012-.1042c-.0143-.0571-.015-.0654-.0023-.084.0072-.0108.0084-.0216.0054-.0403-.0024-.0144-.0054-.1001-.0067-.1915l-.003-.1662-.018-.0156c-.0257-.0234-.0226-.0378.0049-.0187.012.0085.0126.0085.0078-.0107a.54757.5475 0 0 0-.0342-.108c-.01501-.0336-.01561-.0348-.0042-.0432.015-.0115.0204-.0115.0204 0a.08001.08 0 0 0 .0096.0281c.0138.0264.021.0134.0168-.0306-.0042-.0347-.0053-.037-.021-.0407-.024-.0048-.027-.0192-.0078-.0348l.0162-.0127-.036-.016c-.04921-.0224-.05101-.0218-.04081.012.0102.034.0108.0376.003.0496-.0053.008-.0066.008-.012 0a.08601.086 0 0 1-.006-.0336c0-.0144-.0036-.028-.009-.0324-.0114-.0096-.006-.018.0114-.018a.22103.221 0 0 0 .0432-.0089l.03-.009-.0024-.0589c-.0018-.0438 0-.0642.0067-.081.009-.021.0107-.0222.0383-.0222a.42905.429 0 0 0 .05582-.006c.0234-.0048.0354-.003.0834.0132l.05701.0187.0252-.0133c.0234-.0126.0276-.0132.07442-.006.0606.0084.21722.0036.28403-.009.04-.0071.0527-.0078.08681-.0006.054.0108.39805.008.42245-.0036.0134-.0053.026-.006.05711-.0005.08451.0144.09601.0144.13802.004.027-.0066.051-.0088.072-.0066a.12612.1261 0 0 0 .05701-.0053c.0294-.0102.05171-.0114.06421-.0036.006.0043.0115.0024.0163-.0041.0067-.0096.0077-.0096.0186 0 .0107.0101.0131.0096.04671-.0036.0288-.0115.0396-.0199.0547-.042a.28814.2881 0 0 1 .02161-.0307c.0012-.0017.0252 0 .0521.0031l.04991.0067.039-.0373a.64088.6408 0 0 1 .07202-.0576.13132.1313 0 0 0 .0623-.0798.38935.3893 0 0 1 .0276-.0552.15802.158 0 0 0 .02531-.0702.13002.13 0 0 1 .0167-.0534c.0259-.0348.0319-.054.0319-.1013a.73179.7317 0 0 1 .0084-.095c.0077-.042.0077-.0563-.0013-.12a1.15134 1.1512 0 0 1-.0095-.126c0-.1067.0036-.1926.009-.2135.0042-.0168.0023-.0312-.0068-.06-.0137-.045-.016-.1476-.0046-.2167.006-.0372.0053-.0461-.0043-.0744-.0101-.0312-.0101-.0341-.0005-.0787.01731-.0766.02811-.2297.02041-.2909-.0043-.036-.0048-.087-.0007-.162.0084-.162.006-.4003-.0036-.4183-.0072-.0125-.0067-.0156.0019-.022.0089-.0068.0096-.0116.0036-.0428-.0054-.0257-.0054-.042-.0007-.058.0048-.02.0043-.0254-.006-.0392-.0113-.0162-.012-.0173-.0017-.042.0096-.024.0096-.0264-.0036-.0672-.012-.0366-.0132-.0504-.0107-.111.003-.069.003-.069-.012-.0768l-.015-.0077.0143-.0096a.0496.0496 0 0 1 .0222-.0103c.006 0 .0066-.0036.003-.0137-.0066-.018-.0054-.0547.003-.0924.006-.0264.0048-.038-.0048-.0751-.0132-.0497-.015-.0864-.0054-.111a.21073.2107 0 0 0 .006-.06.45806.458 0 0 1 .0084-.0827c.0054-.0216.0078-.042.006-.0456-.0024-.0031-.0048-.0331-.0066-.0672-.0012-.0336-.003-.0667-.003-.0734a.39375.3937 0 0 1 .0072-.0605c.0067-.0427.0067-.0533-.0024-.09-.009-.0367-.009-.0444-.0013-.0653a.15202.152 0 0 0 .003-.0902c-.004-.018-.0028-.033.0044-.0593.0084-.03.0089-.042.0029-.0768-.0096-.0564-.009-.108.0024-.1363.0084-.0216.0084-.0252-.0005-.0426-.012-.0234-.024-.1278-.0163-.1422.01151-.0221.01441-.1752.0048-.2418a1.29716 1.297 0 0 1-.0114-.1303c-.0024-.0582-.0048-.0702-.018-.093a.17502.175 0 0 0-.0276-.0372c-.009-.0078-.0126-.0187-.0126-.0347 0-.0217-.006-.0301-.0606-.0925-.03301-.0372-.06491-.0707-.07092-.0744-.0216-.0114-.0677-.0187-.0756-.012-.0053.0042-.0113 0-.0221-.0162-.0139-.021-.01921-.024-.06542-.0348a.41535.4153 0 0 0-.11341-.0102c-.0516.0013-.0696-.0012-.09961-.0114-.0355-.0126-.0384-.0126-.06191-.003-.0293.0114-.0485.012-.069.003-.01331-.006-.01731-.0048-.03781.012l-.0227.0187-.0157-.0187-.01561-.0192-.0485.0042a.37535.3753 0 0 0-.05761.0072c-.006.0024-.0127-.0042-.0204-.0192l-.0115-.0222-.0096.0144a.047.047 0 0 0-.01011.0222c0 .0084-.0439.0306-.0607.0312-.0053 0-.01991-.0072-.03241-.0156-.0216-.0144-.0247-.015-.0487-.0084-.03841.0108-.14763.0024-.16663-.0126a.07.07 0 0 0-.0422-.0114c-.0204 0-.0276-.0024-.0276-.009 0-.0072-.0041-.0084-.0156-.0053a.13102.131 0 0 1-.04801-.0037c-.0288-.0072-.0353-.0067-.05401.0018a.15122.1512 0 0 1-.0581.0102.33654.3365 0 0 0-.07082.0084c-.0264.0072-.0528.0078-.14041.003a12.81348 12.8119 0 0 0-.32104-.012 15.96897 15.967 0 0 0-.27604.0036c-.19092.003-.25633.0024-.28093-.0036-.0264-.006-.0378-.006-.06001 0-.0216.006-.08461.0078-.25933.0072-.21843-.0013-.23163-.0018-.24723-.0126a.054.054 0 0 0-.0287-.0112zm15.22088.0474c.0086.0011.0167.0043.0186.0088.0035.0102-.023.024-.0367.0187-.0084-.0037-.0108-.017-.0036-.0235.004-.004.0131-.0049.0216-.004zm.0434.001a.27473.2747 0 0 1 .0285 0c.04021.0018.04321.003.04501.0156.0013.0084.009.0168.018.021.015.0067.0144.0072-.0162.009-.042.0024-.0546-.0012-.0744-.0192-.0193-.018-.0214-.0248-.0009-.0264zm-1.97834.0064c.0056.0008.0104.0044.0116.0104.0005.0048-.0084.0168-.0204.0264l-.0223.0173.0036-.0197a.07721.0772 0 0 1 .0115-.0282.0175.0175 0 0 1 .016-.0062zm-6.83234.017a.0687.0687 0 0 0-.0245.0067.0453.0453 0 0 0-.0192.0245c-.0084.0234-.0091.0222.0072.0222.0192 0 .07611-.0174.07611-.0234 0-.009-.0281-.0306-.0396-.03zm-1.6275.0138c.0042-.0006.0117.004.0306.0173.0162.011.018.011.042.0019.03301-.0126.03421-.0126.03421.006v.0156l.051-.0042c.02831-.0024.05101-.0018.05101.0012-.0006.012-.0174.0252-.0408.0324-.0216.006-.0323.006-.069-.0024a2.02625 2.026 0 0 0-.06182-.0133c-.015-.003-.0187-.0059-.0162-.015.0024-.0083-.0013-.0125-.0126-.0155-.015-.0036-.0204-.0138-.012-.0222a.0057.0057 0 0 1 .0036-.0018zm-6.70083.0222c.0036 0 .0084.009.0101.0216.0043.0264.0019.0318-.0161.0318-.0096 0-.0163-.006-.0235-.021-.0053-.012-.0101-.0222-.0101-.024 0-.0018.012-.0042.0396-.0084zm17.33554.0012a.004.004 0 0 1 .0036.0012c.0013.0018-.0005.0067-.0043.0102-.004.0042-.0072.0048-.0072.0013 0-.0064.004-.012.008-.0127zm-15.57692.0004a.0336.0336 0 0 1 .016.0008.31474.3147 0 0 0 .0474.0054c.01501 0 .02641.0024.02521.0048a.24303.243 0 0 1-.03.0198c-.0264.0156-.0276.0156-.0402.0048-.02261-.0185-.02881-.0325-.01841-.0356zm11.46621 0a.15652.1565 0 0 1 .07201.0164l.0253.0132-.027.012c-.0325.0138-.0654.0192-.0865.0138-.0132-.003-.0156-.0072-.0156-.0252 0-.0156.003-.0222.0139-.0264a.0527.0527 0 0 1 .0179-.0038zm-9.10792.0098c.0168 0 .0209.0018.0192.0102-.0012.0072-.0084.0114-.0216.0126-.0163.0018-.0192 0-.0192-.0102s.0036-.0126.0216-.0126zm.36065.0013c.005-.0007.0087.002.0187.007a.18272.1827 0 0 0 .0461.012c.0414.006.048.0109.039.0277-.0084.0156-.0402.03-.0678.03-.0173 0-.0222-.003-.0282-.018-.0084-.0204-.0222-.03-.0432-.03-.01201 0-.01021-.0024.0102-.015.0144-.0088.0204-.013.0254-.0137zm13.10181.0467c.0024 0 .009.009.0144.0192a.27443.2744 0 0 0 .0198.033c.0084.012.0084.0132-.0036.0198-.015.0078-.07561.003-.08161-.0067-.0036-.0059.04321-.0653.05101-.0653zm-2.68573.013c.008-.0021.0174.0027.0307.0134l.0181.015-.024.0246c-.0216.0228-.04981.042-.06061.042-.0067 0 .0019-.0366.015-.0678.007-.0162.0131-.025.0208-.0272zm-10.23246.005h.0372l.0072.0282a.32814.3281 0 0 0 .0114.0396c.0036.0107.0024.0102-.021-.0018-.027-.0132-.0726-.0516-.0726-.0606 0-.003.0168-.0053.0378-.0053zm-4.63217.0137c.0035.0008.005.005.0071.0127a.10701.107 0 0 1 .0012.0312l-.0019.0173-.0192-.019c-.0233-.0223-.024-.0271-.006-.0355.01-.0051.0154-.0075.0187-.0067zm4.8553.0193.0019.018c.0013.0107.0108.027.024.0402l.0216.0228h-.0252c-.0216 0-.0264-.0024-.0342-.018-.0114-.0222-.0114-.03.0018-.048zm-4.841.0522c.0012.0048.012.0126.0245.0168.0156.0048.0247.0126.0288.0246.0079.0198.0096.0198-.0569 0l-.033-.0096.0173-.021c.0126-.0144.0181-.0174.0193-.0107zm17.59317.0198.0035.015c.0024.012.0065.015.0204.015.0234 0 .0264.012.0053.0227l-.0166.009.0168.0043c.012.003.0209.0126.0312.0336.0204.0396.0192.0427-.0103.0402-.0259-.0018-.0259-.0018-.03791-.0384a.28454.2845 0 0 0-.0216-.051c-.009-.0138-.009-.0162-.0005-.0324zm-2.81105.015c.0168 0 .03.0024.03.0053a.0115.0115 0 0 1-.006.0097c-.0031.0018-.006.009-.006.0156 0 .0096-.0043.0114-.024.0114-.021 0-.0252.0024-.036.0222-.0065.0126-.0114.0174-.0096.0107.0012-.0065.0048-.0215.0067-.033.0079-.0371.0126-.042.04501-.042zm-1.29376.015a.15012.1501 0 0 1 .0274.0252c.026.0264.03.0342.03.0547 0 .021-.0024.0245-.018.031-.016.0067-.018.0103-.018.0349v.027l-.0125-.0114c-.0204-.0174-.0473-.057-.0437-.063.0019-.003.0156-.0053.0306-.0053.0234 0 .0263-.0013.0227-.011a.12372.1237 0 0 1-.0072-.0209c-.0019-.006-.0089-.0102-.0187-.0102h-.0149l.0163-.0126c.0125-.0096.0144-.0144.0096-.0234-.0063-.0118-.0075-.0167-.0035-.015zm-13.42705.0395c.0036-.001.0059 0 .0059.0037a.0695.0695 0 0 1-.0163.021l-.0161.0168h.0221c.012 0 .0223.0018.0223.0042 0 .003-.012.0234-.027.0456l-.0265.0408-.0036-.0288a.72479.7247 0 0 0-.01861-.087c-.0023-.009-.0006-.009.0157-.003.015.006.0197.0054.0281-.0036a.0375.0375 0 0 1 .014-.0098zm17.59837.1015c.0126 0 .015.003.015.0186 0 .0162-.0013.018-.009.0114-.008-.006-.0114-.006-.0211.003-.0114.0102-.012.0102-.012.0006 0-.0187.012-.0336.027-.0336zm-2.98437.0192a.0707.0707 0 0 1 .0192.0192c.0114.015.0113.0173.0036.0318-.012.0216-.0228.0234-.0307.006-.0084-.018-.0019-.06.0077-.057zm-.06311.0228a.44415.4441 0 0 1 .0228.0222c.0113.0126.021.0246.021.027 0 .003-.0173.0048-.039.0048-.0324 0-.039-.0018-.039-.0102 0-.0084.0277-.0438.0342-.0438zm3.04637.0429c.0027.0013.004.0063.004.0147s.0085.0276.0187.0426c.0173.0252.0186.0288.012.0498a.20002.2 0 0 0-.0067.0264c0 .006.0228.0042.027-.0024a.0125.0125 0 0 1 .0103-.006c.0036 0 .0017.0048-.0036.0114-.0096.0107-.0096.012.0048.0234.0168.0126.015.0192-.0053.0192-.0072 0-.0168-.0072-.0228-.018-.0113-.0192-.045-.0456-.0504-.0396-.006.006.0264.0973.0432.1224.0132.0198.015.0276.0115.0486l-.0043.0252-.0174-.0168c-.0313-.03-.06062-.078-.05702-.093.0036-.0126-.0007-.036-.015-.0816a.17882.1788 0 0 1-.002-.0558l.0043-.0354h.0204c.0187 0 .0204-.0012.015-.0107-.004-.008-.0035-.0139.0006-.0181.0057-.0056.01-.0078.0127-.0063zm-3.04007.0296c.0088 0 .0157.0037.0196.011.009.0167.0077.0191-.0084.0149a.066.066 0 0 0-.0391.0096c-.0425.0216-.0456.0006-.0036-.0252a.0637.0637 0 0 1 .0315-.0103zm-8.67547.0235c.0036 0 .0041.0024.0024.006-.0019.003-.0067.006-.0096.006-.0036 0-.0043-.003-.0024-.006a.0123.0123 0 0 1 .0096-.006zm11.66914.2346c.0128-.0013.0145.0054.0145.0264 0 .0151-.0024.0271-.0048.0271-.003 0-.012-.0108-.0204-.0235-.0138-.0209-.0144-.024-.006-.0264a.11231.1123 0 0 1 .0167-.0037zm.08321.0355c.0049 0 .0093.003.0093.009 0 .0095-.0163.0191-.0223.0133-.0019-.0026-.0019-.008 0-.0134a.0141.0141 0 0 1 .013-.0089zm-8.21801.0196a.042.042 0 0 0-.0237.011c-.0138.0114-.0138.0126-.0043.0222.0091.009.0115.009.0264.0012.0192-.0115.0223-.0325.0043-.0343a.013.013 0 0 0-.0027-.0001zm8.062.023c.0045.0033.0161.0246.0363.0647l.0293.0607-.016.0161c-.0133.0134-.0163.0144-.0163.006 0-.006-.0048-.0101-.0113-.0101-.0096 0-.0103-.0036-.0084-.0288a.22453.2245 0 0 0-.0067-.0643c-.0087-.0324-.0113-.0473-.0069-.0442zm-.95443.0775c.008-.0008.0155.0007.0155.0054 0 .0137-.0084.0245-.018.0245-.0137 0-.0204-.0096-.0156-.021.0019-.0049.0101-.008.0181-.0089zm-4.45705.0002a.0299.0299 0 0 1 .019.005c.0127.0084-.0149.0204-.034.0156-.0157-.0036-.0158-.0041-.0049-.0125a.0397.0397 0 0 1 .02-.008zm4.48456.0085a.0253.0253 0 0 1 .0107.0008.09451.0945 0 0 1 .0186.006c.002.0012-.0036.0096-.0113.018-.0132.0137-.015.0137-.0187.0041-.007-.018-.0072-.0272.0008-.029zm.0597.0273c.0064-.0001.0123.0026.0123.0083 0 .0041-.0041.0113-.0091.0156-.0113.0096-.0247-.0007-.0192-.0144.0024-.006.0093-.0092.016-.0093zm-.24402.0316a.004.004 0 0 1 .0037.0014c.0012.0017-.0006.0065-.0043.01-.004.0042-.0072.0049-.0072.0013 0-.0064.004-.012.008-.0127zm-7.08048.0067c.0037.0017.0053.0077.0088.0197.0072.0259.0048.0319-.0138.0319-.009 0-.0163-.006-.0228-.0199-.0096-.0197-.0096-.0204.006-.0264.012-.0048.018-.0072.0218-.0053zm-3.2494.0027c.0017.0002.0034.0014.0056.0033.006.0053.0096.0187.0096.0347 0 .0246-.0014.0258-.0228.0313-.012.003-.024.0036-.0264.0017-.002-.0024.0036-.0204.0132-.0401.0112-.024.0157-.0316.0208-.0308zm5.98394.0073a.057.057 0 0 1 .033.0085c.0102.0079.0065.0084-.0366.0084-.04441 0-.04681-.0005-.03311-.0084a.076.076 0 0 1 .0367-.0085zm.16102.0253a.0433.0433 0 0 1 .0184.0072c.0144.0084.0138.0084-.0162.0091-.0414 0-.06071-.0072-.032-.0127a.14162.1416 0 0 1 .0298-.0036zm-.27144.0214c.0044 0 .007.0062.0089.0189.0019.0132.0053.015.0276.0168a.29504.295 0 0 0 .06721-.0072.48446.4844 0 0 1 .09181-.0096c.04751 0 .05111.0005.06721.018.0114.0113.0235.018.0343.018a.13232.1323 0 0 1 .04011.0096c.0228.009.0252.0125.04031.0576.021.0636.018.0888-.015.1301a.23053.2305 0 0 0-.0246.036c0 .0024.0053.0259.0127.0523.0106.0408.012.057.009.1193-.0035.0679-.003.0739.0102.0996.0072.0151.012.0312.0096.036a.30234.3023 0 0 0-.0108.0504 4.8954 4.8948 0 0 0-.0139.083c-.009.0516.0012.1536.0204.2112.0115.0341.0126.042.0053.0586-.0173.0434-.0216.0794-.0197.1706.0012.0492.0012.0497.0168.0497.0137 0 .015.0013.0077.0096-.0053.0067-.0133.0084-.0283.0053l-.0209-.0035.0043.06c.006.087.0048.216-.0024.2407a.0624.0624 0 0 0 .0005.0408c.0055.0156.0048.0293-.0005.0557a.22273.2227 0 0 0-.0043.0613.15932.1593 0 0 1-.0019.0486c-.0036.0156-.0024.036.0031.0629.0079.0379.0161.1674.0173.2748.0007.0276.0024.0499.0055.0499.0024 0 .0043.004.0043.0096 0 .0053.0053.0324.0126.0605.0067.0283.0114.0552.0102.06-.0017.0072-.102.0576-.18062.09-.021.0084-.0234.0084-.0342-.0012-.0113-.0101-.0133-.0101-.04862.0055-.0204.0089-.0384.015-.0396.0139-.0012-.002.0013-.0096.0048-.018.0173-.0391-.0192-.047-.063-.0134-.0156.0115-.0342.021-.042.021-.0222 0-.04502-.0222-.05222-.0515-.008-.0293-.0107-.0307-.0474-.0173-.0373.013-.04982.0113-.08042-.012-.0162-.012-.0288-.0182-.0312-.0146-.0019.0036-.0102.0091-.0186.012-.0127.0048-.018.0036-.0294-.0072-.0126-.012-.0138-.0186-.0168-.1092a2.18597 2.1857 0 0 0-.0072-.1301.27103.271 0 0 1 .0065-.081c.0091-.045.0096-.0517.0006-.081a.22833.2283 0 0 1-.0096-.0523.12852.1285 0 0 0-.0091-.0413c-.0084-.0204-.008-.0228.0029-.0367.0108-.0144.012-.0216.0084-.0821-.0031-.0576-.006-.0715-.0216-.1032-.0168-.0348-.0174-.0384-.0102-.063.0096-.0331.0091-.0325.0204-.0235.008.0067.0091.0048.0091-.0144 0-.0187-.0019-.0216-.0132-.0216-.016 0-.0504-.0198-.0653-.0378a.0587.0587 0 0 1-.0113-.03.0464.0464 0 0 0-.012-.0282l-.0125-.0126.0209-.0084c.0283-.012.0319-.0114.036.006.0055.0222.0133.0187.0336-.0168.0192-.033.0223-.0582.012-.0954a.0564.0564 0 0 1 .0024-.0432c.0084-.0198.008-.024-.0024-.0474-.0204-.0468-.0257-.0828-.015-.108a.18992.1899 0 0 0 .0092-.0576.16702.167 0 0 1 .0072-.0528c.0036-.009.009-.0588.0113-.1098.0019-.051.006-.0978.0084-.1044.004-.0096.0029-.0102-.0096-.0067-.008.0019-.0113.0019-.0077-.001.0036-.0025.0084-.0308.0107-.0625a.49036.4903 0 0 1 .0138-.09c.0072-.0247.0103-.0595.0108-.1405.0007-.0947-.0005-.1116-.0106-.1368-.0115-.0282-.0116-.0294-.0013-.0606.0096-.0282.0102-.0354.003-.06-.0071-.0258-.0066-.0293.0044-.0413a.34404.344 0 0 0 .021-.0283c.0091-.0144.0115-.0144.08341-.0156.05331-.0013.08041.0012.09541.0072.0282.012.04321.0072.06301-.0216.0087-.0126.0149-.0189.0193-.0189zm.34745.0069c.0144 0 .0264.0012.0264.0024 0 .0233-.04381.0317-.04981.0096-.0031-.0108 0-.012.0234-.012zm-2.95377.027c.0087-.0029.0134.004.018.0227.0029.012.004.0235.0024.0259-.006.0053-.0276-.0084-.0355-.0223-.0048-.0101-.0041-.0137.0048-.0204a.0368.0368 0 0 1 .0103-.006zm-6.30077.0222c.0066.0005.013.006.0253.0168.0197.018.0204.018.0427.0084.06651-.0293.06531-.0288.08261-.0173.0199.0125.11472.0178.14402.0077.0163-.006.0223-.0048.041.0067.0186.0113.02691.013.05331.0094a.32034.3203 0 0 0 .042-.0072c.01031-.0029.01081-.0017.0019.0156a.07841.0784 0 0 0-.0096.0247c0 .0132.02091.0048.04261-.018.0191-.0199.0234-.0223.0294-.015.0113.0133.01801.0107.01801-.0067 0-.0138.0017-.015.0168-.012.0089.0025.0306.02.0497.0409l.03361.0372-.0101.0173c-.0103.0168-.0103.018.0005.0367a.46046.4604 0 0 1 .0228.0521c.0096.0276.0096.036.0036.057-.0107.0373-.0144.0409-.0276.0289s-.0125-.0127-.0156.0396a1.10714 1.107 0 0 0 .0013.1632c.003.03.0018.0475-.0054.0679-.008.024-.0084.0312-.0014.0516.008.022.0074.024-.0034.03-.0108.006-.0108.0072-.002.0168.0169.0192.0248.0797.0157.1253-.0096.0475-.0096.0552-.0017.168.0048.0733.004.0888-.0031.1044-.0125.0247-.0067.0648.0163.105.022.0385.0233.0709.0048.0949-.0235.03-.0283.0552-.018.0917a.11101.111 0 0 1 .0024.0655c-.0054.0276-.0048.0373.0048.069.0089.0276.012.0547.0125.1122 0 .042.0036.0864.0079.0996.0066.0204.006.03-.0036.063-.0144.0516-.014.0702.004.099.0174.0282.0188.0342.0049.0288-.0161-.0067-.0053.0384.0163.0648l.018.0228-.024.0126a.10001.1 0 0 0-.0336.0276c-.0091.0138-.0096.018-.0014.0522.008.0324.008.0408.0007.0666-.012.0396-.012.0726-.0017.1519.0072.06.0101.0677.0226.0744.012.0067.0134.0107.0103.0293-.0041.0247.0048.054.0168.054.0048 0 .0108-.0096.0144-.0209.0053-.0173.0053-.021-.0017-.021-.0103 0-.0103.0023 0-.027.0066-.0173.0077-.0408.0053-.0859-.0041-.0708-.0041-.0708.04441-.0432l.0319.018v-.021c0-.0252.006-.0264.03001-.0048.0156.0145.0173.0192.0132.0348-.0036.0144-.0127.0217-.0403.0354l-.036.018.021.0036c.0145.0024.0205.006.0193.012-.0151.0636-.0156.0734-.006.09.006.0108.0077.0187.0036.0228-.0036.0036.0005.0187.0125.042.0103.0204.0187.0432.0187.0504 0 .0228-.0163.0408-.0367.0408a.12932.1293 0 0 0-.039.0091c-.02581.0107-.02931.0048-.02461-.0384.0036-.0276.003-.0288-.0161-.0354-.0294-.0107-.0384-.009-.0487.0108-.01681.0318-.01131.054.0216.096a.13322.1332 0 0 1 .0204.036c.0043.0186-.0132.048-.0347.0594-.0157.0084-.0174.0077-.05461-.0282-.036-.0347-.03961-.0366-.05521-.0307a.08431.0843 0 0 0-.0247.0126c-.0053.0043-.0125.0043-.0252-.0005-.01371-.006-.02331-.0053-.05101.0024-.027.0077-.036.0084-.0433.0029-.0053-.0053-.01681-.006-.03411-.0029a.99842.9983 0 0 1-.09121.006c-.036.0005-.07391.0041-.08351.0084-.0197.0077-.05811.0024-.11332-.0168-.03-.0103-.0396-.0115-.0648-.006-.04991.0107-.05331.0048-.03791-.0613.0031-.0138.0014-.016-.0209-.0227-.04801-.0144-.08471-.0595-.08471-.1044 0-.0156.0036-.0223.0151-.0283.0168-.0089.0192-.0216.006-.0401-.0084-.012-.0079-.0127.0156-.0163a.16372.1637 0 0 0 .0408-.0125c.0341-.0173.0336-.0096.0353-.416.0019-.367.0014-.3743-.0106-.3941-.0146-.0234-.0158-.0408-.0026-.0516.0084-.0072.0084-.0084-.0005-.015-.009-.0067-.009-.009.0017-.0306.012-.0227.012-.0234.0007-.0378-.0127-.0168-.0139-.0348-.0048-.0678.0053-.0192.0036-.0282-.0096-.0624l-.0163-.0396.0156-.0307c.02641-.0521.02591-.0941-.0029-.1637-.0067-.0163-.0067-.0235 0-.042.0048-.0134.009-.0523.0096-.0919.0017-.0617 0-.0725-.0133-.1027-.0114-.0262-.0131-.0365-.0083-.0485.003-.0084.0084-.0173.012-.0192.0036-.0024.0036-.0101-.0007-.0221a.12812.1281 0 0 1-.0017-.0494c.0053-.0389.0053-.0737 0-.0977-.003-.0144-.0007-.027.0107-.0497.01451-.03.01451-.0324.0061-.0595a.14592.1459 0 0 1-.0048-.0581c.0048-.036.0048-.0511.0012-.1183-.003-.0463-.0053-.0547-.0223-.078-.0204-.0276-.0204-.0307-.0029-.0912.0077-.0259.0113-.0319.0197-.0293.0091.0022.0103-.0014.0084-.0211a.08011.0801 0 0 1 .03961-.078c.0142-.0084.0214-.0127.028-.012zm.46265.0168c.0055 0 .0086.003.0074.0072-.0036.0107-.0168.0125-.0168.0024a.0095.0095 0 0 1 .0096-.0096zm5.85512.0224c.0017-.0005.0024.0021.0033.0076.0012.0072.0067.012.0132.012.0192 0 .03.0072.0396.0252.009.0173.009.018-.0048.0132a.60377.6037 0 0 0-.0438-.0115c-.0324-.0072-.0336-.0096-.0168-.0346.0048-.0076.0076-.0114.0093-.0119zm-3.215.0016c.0012 0 .0012.0077-.0007.018-.0036.0156-.0024.018.009.018.01021 0 .01261.0036.01261.018 0 .0161-.0012.018-.0113.012-.0079-.0043-.0134-.0043-.0156 0-.0019.003-.0079.006-.0127.006-.0072 0-.0084-.0043-.0053-.0199.0048-.0197.0192-.0521.024-.0521zm7.30831.0084c.0044.0015.0076.0084.0088.0204.0013.0137-.0012.0197-.0106.0252-.0235.0125-.032-.0067-.0146-.0336.0063-.0096.012-.0136.0166-.012zm-14.5358.0161c.0024-.0005.0072.0144.0108.0331.0084.039.0043.0684-.0108.0821-.0084.0079-.0629.0343-.0708.0343-.0012 0-.0024-.0067-.0024-.015 0-.0126.0031-.015.0187-.015h.0192l-.0044-.0528-.0036-.0533.0192-.0062a.42325.4232 0 0 1 .024-.0072zm20.65495.0027a.57757.5775 0 0 1 .07321.013c.04501.009.05221.0126.04921.021-.0017.006-.0013.0107.002.0107.0113.0006.0257.0174.022.0258-.003.0079-.0076.006-.0293-.0084l-.0258-.0173-.0258.012-.0264.0113-.0019-.0173c-.0024-.021-.0067-.0216-.0653-.0115-.021.0036-.04032.0054-.04212.0031-.0091-.0084.0096-.03.0318-.0373a.09201.092 0 0 1 .03841-.005zm-20.78796.0201c.0329-.006.0528-.006.0569 0 .0019.0036 0 .0168-.0041.03-.0067.0211-.0103.0247-.024.0247-.0132 0-.0187-.0043-.0252-.0204a.07901.079 0 0 0-.0163-.0253c-.006-.0034-.0025-.0064.0127-.009zm13.61968.0127c.0048 0 .009.0048.009.0113 0 .0216-.0078.0487-.0126.0451-.0031-.0019-.0053-.015-.0053-.03 0-.0192.0024-.0264.0091-.0264zm-2.97627.025c.0025-.001.0027.0007.0027.0043a.08151.0815 0 0 1-.0156.024l-.0156.0187h.0216c.012 0 .0216.0012.0216.003a.40085.4008 0 0 1-.0264.0426l-.0264.039-.0043-.0342a.47906.479 0 0 0-.012-.06c-.0084-.0288-.0077-.0293.0096-.0199.0091.0048.0156.0036.0283-.006a.10001.1 0 0 1 .0165-.0116zm-3.3045.005c.0024 0 .0149.0107.0276.024.0168.0168.0306.0252.0466.0281.0163.0024.0278.0096.04031.0254.0103.0113.018.0245.018.028 0 .0073-.0528.0301-.0576.0246a.09351.0935 0 0 1-.0067-.0281c-.0029-.0235-.004-.0247-.0202-.021-.0151.0035-.018.0013-.03001-.0222-.0156-.03-.0247-.0588-.018-.0588zm-4.40895.087a.0081.0081 0 0 1 .0058.0006c.0036.0024.0036.006-.0006.0101-.0078.0079-.0156.0019-.0096-.0072a.007.007 0 0 1 .0044-.0034zm4.53266.0966c.0028.0003.007.003.0143.0084a.13052.1305 0 0 1 .0245.021c.0067.0078.0043.009-.0204.009-.0288 0-.0336-.0067-.024-.0324.0015-.0043.003-.0063.0056-.006zm-.21873.0024c.0031 0 .0067.0036.008.0072a.22473.2247 0 0 1 .0059.036c.003.0281.003.0288-.0132.0288-.024 0-.0432-.0067-.0432-.0144 0-.0096.0355-.0576.0427-.0576zm-7.20618.0192c.0127.0017.0127.0053.0133.0947 0 .0841-.0013.0973-.0145.1338-.0096.0259-.0168.0379-.0197.0331-.0091-.0144-.0048-.0497.0101-.0816a.38885.3888 0 0 0 .015-.0348c0-.0013-.0066-.0024-.015-.0024-.0125 0-.015-.003-.015-.018 0-.0199.0114-.048.0193-.048.0029 0 .0036-.0024.0017-.006a.18002.18 0 0 1-.0053-.039c-.0019-.0313-.0012-.0337.0101-.0318zm13.60597.0107c.0048 0 .009.0013.009.0025 0 .0012-.0042.0036-.009.006-.0048.0017-.0091.0005-.0091-.0024 0-.0036.004-.006.009-.006zm-13.68868.0246c.0019-.0005.0028.0011.0028.005 0 .003-.0042.0072-.0096.009-.0084.003-.009.0024-.0024-.0053.0042-.0052.0072-.008.0092-.0087zm13.70148.0254c.0027 0-.0021.0052-.0123.0156-.0168.0173-.0173.0228-.006.0774.0024.0132.0012.0138-.0156.0103a.057.057 0 0 0-.0367.0053.26643.2664 0 0 1-.0204.0096c-.0024 0 .0102-.0498.0168-.0678.0043-.012.0163-.0222.0396-.0342.0211-.0108.0318-.0162.0347-.0162zm-6.39038.0168a.06.06 0 0 1 .0013.0174c0 .0163-.0019.018-.0187.018h-.0184l.0042.0528c.003.0414.0018.0576-.0053.0751-.008.0197-.008.027-.0007.0624.0114.0533.0114.0881-.0006.1133-.0126.0264-.0204.0307-.03071.0174-.0101-.015-.0095-.0587.0013-.0954a.16762.1676 0 0 0-.003-.1133c-.0168-.0475-.0162-.0943.0018-.111.0096-.0097.0528-.0325.069-.0367zm-4.27763.0354c.0036 0 .006.0012.006.0024 0 .0018-.0024.0048-.006.0067-.003.0017-.006.0005-.006-.0025 0-.0036.003-.0066.006-.0066zm.0377.003c.0027-.0006.0048.0018.0084.0066a.0453.0453 0 0 1 .0079.021.0653.0653 0 0 0 .0041.021c.0036.0096.0019.0091-.0125-.0024a.0672.0672 0 0 0-.0253-.0132c-.012 0-.0102-.006.0049-.0221.0063-.007.0097-.0104.0125-.011zm-.0818.0842c.0036.0018.006.0055.0069.0112.003.0144-.006.0228-.0187.018-.012-.0041-.0137-.024-.0024-.0281.0058-.0024.0106-.0027.0142-.001zm1.96324.016c.0114.0014.0162.0054.0162.0139 0 .015-.0222.0192-.0324.0067-.0107-.0127-.0024-.023.0162-.0206zm4.54396.0054c.0037.0005.0073.0057.0097.0157a.17952.1795 0 0 0 .0084.03c.0048.012.006.012.0306-.0108.0138-.0127.0264-.0228.027-.0216.0013.0012-.0017.015-.0067.0312-.0114.036-.0114.039 0 .039.0133 0 .0114.009-.006.0282l-.0143.0168-.0007-.0168c0-.0144-.0024-.0163-.021-.0163-.0203 0-.021-.0005-.021-.0221a.0544.0544 0 0 0-.0113-.0343c-.0084-.0096-.0103-.0161-.006-.0264.0033-.009.0073-.0132.0112-.0126zm-9.42517.0873c.0013-.0013.004 0 .0094.0033.0072.0048.009.009.0054.0115-.0042.0024-.0048.0113-.0024.0227.0042.021-.0048.056-.0186.0673-.0072.006-.0114.0048-.0222-.0053l-.0126-.0134h.0187c.0179 0 .019-.0017.0233-.0269a.16032.1603 0 0 0 0-.045c-.0014-.0086-.0021-.013-.0009-.0143zm1.20425.0621c.0036 0 .0043.0024.0024.006a.0137.0137 0 0 1-.0096.006c-.0036 0-.0041-.0029-.0024-.006a.0123.0123 0 0 1 .0096-.006zm20.49353.0576a.12282.1228 0 0 1 .006.0271c.0018.0221.0006.0293-.006.0293-.0037 0-.006-.0149-.0054-.0346 0-.0247.0017-.0307.0053-.0218zm-12.26151.0387a.0105.0105 0 0 1 .0089.0033c.0017.0019.0017.0072 0 .012-.0024.0067-.0053.0072-.0115.0019-.0048-.0036-.0067-.009-.0048-.012a.0103.0103 0 0 1 .0075-.0053zm12.26451.0237a.13102.131 0 0 1 .0173.0067c.0192.009.0276.0336.0276.081 0 .036-.0012.0383-.0192.0515a.29484.2948 0 0 1-.04201.0247l-.0226.0101v-.0181c0-.0161.0017-.018.0185-.018h.018l-.0043-.0473c-.0036-.0427 0-.0907.0067-.0907zm-12.25271.0091c.0013.0012-.0012.0173-.0053.0365-.0072.0319-.0067.0348.0029.0408.0307.0187.03.0174.0168.0468-.0084.0199-.0101.03-.006.0379.0043.0072.0036.018-.0012.0336-.0067.0197-.0101.0233-.0252.0233-.0113 0-.0168-.0029-.0168-.0096a.0613.0613 0 0 0-.0125-.0269l-.012-.0173h.0186c.0143 0 .0186-.0026.016-.0086a.19972.1997 0 0 1-.007-.0317.53657.5365 0 0 0-.0068-.0367c-.0017-.0101 0-.0132.0096-.0132.0134 0 .0156-.006.0048-.0168-.0048-.0048-.0029-.0132.008-.0336.0076-.0149.0149-.0257.016-.0245zm-6.5104.0043c.0084.0001.0127.0029.0147.0082.0066.0168.0037.0355-.0078.0583-.0084.0168-.0101.0276-.0066.0401a.19802.198 0 0 1 .0018.0523.11561.1156 0 0 0 .006.0576l.0096.0221-.0221.0211c-.012.0113-.024.021-.0264.021-.003 0-.0048.0162-.0048.036 0 .0311-.0013.036-.0115.036-.01561 0-.02041-.0162-.0101-.0366.0084-.0168.0084-.0173-.0067-.0173-.01371 0-.01441-.002-.01011-.017.0084-.0276.0041-.0581-.0127-.096-.0186-.0413-.0168-.054.0096-.0696.0096-.006.0168-.0137.0151-.0173-.0235-.0564-.0173-.0828.0221-.0924a.17592.1759 0 0 1 .04-.0067zm3.14138.0142a.0237.0237 0 0 1 .012.0134c.0114.0394.0102.079-.0025.079-.0029 0-.0066-.0125-.0089-.0288a1.01813 1.018 0 0 0-.0067-.0473c-.0024-.0156-.0012-.0192.006-.0163zm-6.06364.0144c.0036 0 .006.008.006.0168 0 .0096.0067.03.0144.0451l.0139.0281h-.0167c-.0175 0-.0173 0-.0173.0384 0 .0312.0034.0451.0178.0727a.17372.1737 0 0 1 .018.042c0 .0132-.0173.015-.0257.0024-.0163-.0223-.0223-.0013-.0163.0547.0024.028.0036.052.0024.0533-.0036.0041-.0132-.0264-.0204-.0648-.0053-.03-.0048-.0396.0031-.0583.0096-.0233.006-.0317-.0144-.0324-.006 0-.0043-.0048.006-.0156.015-.0161.0144-.0125.0192-.1253.0024-.0533.003-.057.0101-.057zm7.14828.0667c.0038-.0024.0136.0008.0316.0084l.0222.0096-.0168.0197c-.009.0108-.0186.0187-.021.0174-.0018-.0006-.0078-.0138-.0126-.0287-.0054-.0156-.0074-.024-.0034-.0264zm4.50015.0324c.003.0017.006.0101.006.018 0 .0161-.0102.0252-.0187.0168-.0077-.0079.0043-.0403.0127-.0348zm1.07834.045c.0053 0 .0077.0107.0077.036 0 .0198-.0024.036-.006.036-.003 0-.006-.0037-.0067-.0078l-.0013-.036c-.001-.0199.0007-.0283.0061-.0283zm-1.10474.066h.0216l-.0043.0527c-.0036.0451-.0024.0576.0084.0883.0065.0192.0114.0365.0096.0377-.0013.0013-.0091-.004-.0174-.0125-.0133-.0133-.0157-.021-.0157-.051a.25473.2547 0 0 0-.012-.0702.30244.3024 0 0 1-.012-.0403c0-.0024.0096-.0048.0216-.0048zm1.12034.0253a.017.017 0 0 1 .015.0142c.0013.008-.0024.0144-.0077.0168-.0144.0053-.021-.0005-.021-.018 0-.0125.0024-.0149.0138-.0132zm-11.62914.0106h.0216l-.0041.0223c-.0048.0288-.0036.0276-.0228.0192-.0115-.0053-.0156-.012-.0156-.0247 0-.0149.0017-.0168.0209-.0168zm6.05645 0c.0078 0 .0138.002.0138.0043a.08151.0815 0 0 1-.0144.0227l-.0144.0181.0173.0347.0181.035-.0162.0203c-.0084.0114-.018.0192-.021.018-.0024-.0019-.0066-.0162-.009-.0318a.12151.1215 0 0 0-.0126-.0408c-.0072-.0114-.0066-.0168.0084-.0467.0126-.0265.0192-.0337.03-.0337zm-2.25878.0268c.0056-.0002.0117.007.0095.0147-.0018.0036-.006.0041-.0107.0012-.0043-.0031-.0061-.0084-.0037-.0127a.0067.0067 0 0 1 .0049-.0032zm7.84417.0516a.0107.0107 0 0 1 .012.0051c.0017.0024-.0007.0102-.0056.0162-.0096.0138-.024.0043-.0173-.0114a.0156.0156 0 0 1 .0109-.0099zm1.96154.0087c-.003 0-.0063.0021-.0106.0067-.0091.009-.009.0114-.0007.0191.0101.0103.0276.006.0276-.0067a.0227.0227 0 0 0-.0084-.0155c-.0029-.0024-.0053-.0036-.0077-.0036zm-5.28925.039c.0132 0 .0137.0013.0101.0324-.0029.0222-.0024.0336.0031.0366.0101.0067.0017.0984-.0139.1452-.0132.0402-.0192.0463-.0252.024-.004-.0168.0024-.0402.0199-.075l.0125-.0252h-.018c-.018 0-.0186-.0006-.0144-.0227a.10931.1093 0 0 1 .0108-.0343c.0043-.0072.0053-.0253.0036-.0468-.0029-.033-.0024-.0342.0115-.0342zm-8.23532.0064c.0057.0027.0083.0116.0083.0272 0 .0288 0 .0288-.0319.006l-.0168-.012.0139-.0107c.0122-.0097.0209-.0133.0266-.0107zm8.1525.0296c.0036 0 .004.0024.0024.006-.002.003-.0067.006-.0096.006-.0036 0-.0043-.003-.0024-.006a.0123.0123 0 0 1 .0096-.006zm-8.1826.054a.15482.1548 0 0 1 .0173.03c.0187.0366.0187.042 0 .042-.0161 0-.027-.015-.027-.0384 0-.0144.0054-.0336.0097-.0336zm-.12582.0362c.0078 0 .0144.0025.013.007-.0043.0126-.0216.0203-.0294.0126-.0037-.0036-.0049-.0096-.003-.0132.0029-.0045.0118-.0067.0194-.0064zm10.99916.0267c.0023-.0008.0056.001.0116.0049a.07961.0796 0 0 1 .0198.0221c.0103.0199.0036.03-.0198.03-.018 0-.0204-.0017-.0204-.0168a.15282.1528 0 0 1 .0036-.03c.0019-.0063.003-.0096.0053-.0102zm-10.98195.0089c.008-.0003.015.0035.015.0116 0 .0161-.0127.024-.0288.018-.0115-.0043-.0127-.0072-.0072-.0173a.0252.0252 0 0 1 .021-.0123zm10.5759.0253c.0096.0013.0161.0053.0161.0108 0 .0115-.027.0156-.0336.0053-.0072-.012 0-.0178.0173-.016zm-8.78218.0108h.0276l-.0007.0223c0 .0221 0 .0228-.0096.0089-.0048-.0072-.0137-.0132-.0197-.0132a.0275.0275 0 0 1-.018-.009c-.0067-.0078-.0036-.009.0204-.009zm9.06301.06a.53407.534 0 0 1 .04561.0134c.0221.007.0408.0149.0408.0173 0 .0053-.0595.0132-.0756.0101-.008-.0012-.012-.0077-.0134-.0216-.001-.0101 0-.0192.0025-.0192zm-.18602.036a.13282.1328 0 0 1 .03.0216c.0144.0115.0264.0259.0264.0314 0 .0072.0048.0053.018-.008l.018-.0173v.0222c0 .0222-.0007.0222-.024.0222-.0204 0-.0259.003-.0355.0187l-.012.019-.012-.0203c-.0091-.0144-.0125-.0307-.0125-.0552 0-.0187.0017-.0343.0036-.0343zm.11902.0011c.0063-.003.0093.0048.0093.0243v.0257l-.012-.018c-.0084-.0126-.0096-.0198-.0048-.0252a.0245.0245 0 0 1 .0075-.0067zm-2.4261.0021c.0017-.0012.0049.0004.0109.004.0096.006.0103.0084.0031.0096-.0108.0024-.0108.0013-.0031.0235.0048.0132.0043.0228-.0024.039-.0113.0265-.0233.0318-.03721.0162-.0101-.0108-.0096-.0113.0084-.0113.0187 0 .0192-.0013.0199-.026a.46056.4605 0 0 0-.0007-.042c-.0005-.0076-.0005-.0118.0011-.013zm2.21687.1176c.0052-.0015.0106.0031.0182.0143.012.0187.0264.0756.0264.1063 0 .0168-.0041.0252-.0187.0372-.0103.0084-.0204.0156-.0233.0156-.0134 0-.0163-.0534-.0048-.0912.0053-.0187.0053-.0264 0-.0355-.008-.012-.0096-.0372-.003-.0432a.0123.0123 0 0 1 .0053-.0035zm-.0634.0174c.003 0 .004.004.0024.0089-.0024.0048-.0048.009-.006.009-.0013 0-.0024-.0042-.0024-.009s.0024-.009.006-.009zm-2.14067.0813a.08471.0847 0 0 1 .0067.0219.20132.2013 0 0 0 .0173.0432c.0132.0197.0132.0216-.0048.0216-.0144 0-.015.0012-.015.04 0 .0332.003.0452.018.0716.0162.0293.0167.0324.0078.0413-.009.0096-.0108.009-.0198-.003-.009-.012-.0107-.0126-.0138-.003-.006.0139-.0048.0559.0012.0823.0072.03-.003.0293-.0114-.0007-.0126-.048-.0138-.0768-.0036-.0972s.006-.0288-.0138-.0293c-.006 0-.0036-.0053.0072-.0168.0144-.0151.0156-.0187.0096-.0391-.0048-.0173-.0043-.0245.0036-.0365.0072-.0108.009-.0216.006-.042a.13282.1328 0 0 1 0-.044c.0021-.008.0033-.012.0048-.0104zm10.94065.0872c.0013.0013.0091.0168.018.0336l.0156.0319h-.018c-.018 0-.018 0-.018-.0343 0-.0187.0013-.0324.0024-.0312zm.0367.093.0036.036a.97762.9775 0 0 1 .0048.0577c.0006.0209-.0006.0226-.0168.0226-.015 0-.0174-.0023-.0204-.0226-.0024-.012-.0053-.0294-.008-.038-.0023-.012.0007-.0196.0169-.0352zm-15.4179.034c.0038.0018.0062.0086.0098.0218a.0653.0653 0 0 1 0 .0403l-.0066.0168-.0174-.03-.0168-.0294.0126-.0102c.0093-.0075.0146-.011.0184-.0093zm5.51528.0225c.0204 0 .0204.0005.0156.0186-.0072.024-.0067.0234-.0228.019-.0096-.0023-.0133-.0076-.0133-.0203 0-.0156.0019-.0173.0205-.0173zm-7.65235.028c.0012-.0021.0033-.0013.0069.0013a.073.073 0 0 1 .0156.0253c.009.0215.0053.027-.0115.016-.0089-.0053-.0125-.0137-.0125-.028a.0404.0404 0 0 1 .0013-.0146zm-2.92656.0757c.0018.0019.0024.0072.0006.0115-.0018.0048-.0036.0029-.0036-.0036-.0006-.0067.0013-.0103.003-.008zm10.65391.0232c.0047.0027.0067.0113.0067.0267v.0269l-.0216-.0168-.0216-.0161.0132-.0108c.011-.0091.0186-.0124.0233-.01zm-6.70882.0561c.0009-.0025.0142.008.0368.0305.0293.0294.0377.042.042.0631a.53337.5333 0 0 1 .0053.0558c0 .0253-.0012.0282-.009.0216a.0613.0613 0 0 1-.0126-.0294c-.0053-.0301-.0307-.0654-.0557-.0786l-.0216-.0115.0197-.0041c.0223-.0048.0235-.008.0072-.0283-.009-.0112-.0128-.0174-.0123-.019zm6.67942.0284c.004.0015.009.01.0168.0255.0168.0348.0168.039-.0019.039-.0186 0-.0293-.0233-.024-.0491.0027-.0118.0053-.017.0091-.0154zm-.12411.03c.0068.0007.0128.0033.012.0075-.0007.0031-.0049.0084-.0103.012-.0108.0067-.0253-.004-.0186-.015.0024-.004.01-.0052.0169-.0044zm1.03212.0105h.021v.1248l-.0253.0031a1.6943 1.6941 0 0 0-.0497.0077l-.0259.0043v-.0595l.0367-.0173c.0377-.0181.0384-.0205.0257-.0535-.003-.0079.0007-.0096.0175-.0096zm-10.21806.002c.0041-.0028.008-.0007.013.0052.0133.0174.0138.0467.0018.0942-.0156.06-.0156.0702-.0005.1134.0161.0456.0209.096.0106.1152-.0065.0127-.064.0475-.0778.048-.0031 0-.0048-.0084-.0048-.018 0-.016.0017-.018.0186-.018h.0191l-.0041-.0533c-.0036-.0415-.0024-.0576.0048-.0756.0084-.0199.0084-.0276.0005-.0733-.012-.0678-.0113-.0834.0036-.114.0067-.0134.011-.021.0152-.0239zm9.20644.0223c.0072.0003.0136.0021.0136.0051 0 .0151-.0084.0247-.0216.0247-.0102 0-.0144-.0036-.0144-.0108 0-.006.0017-.0132.0041-.015.0031-.003.0111-.0042.0183-.004zm8.36923.0146c.0055-.0004.0117.0069.0095.0146-.002.0036-.006.0041-.0107.0011-.0043-.0029-.0061-.0084-.0037-.0125a.0061.0061 0 0 1 .0049-.0032zm-5.36936.0092c.0005 0 .0065.0096.0137.021.0102.0174.0156.021.0319.021l.0197.0006-.0221.0204c-.0253.0234-.03791.027-.0319.0096.0031-.0102-.0012-.012-.03891-.0156-.0379-.0036-.0415-.0053-.0348-.0138.0067-.0072.0576-.0432.0624-.0432zm5.28265.004c.0031-.0024.0073.0005.0147.0074.0077.0065.0185.0125.024.0125.0067 0 .0101.0048.0101.015 0 .0162-.0053.018-.08231.024-.0365.0025-.0437.0018-.0437-.006 0-.012-.0013-.0114-.03671.0066-.04321.0216-.05521.018-.06171-.0168-.0031-.0163-.0036-.0307-.0013-.0331.0025-.0024.0133.0007.024.0067.0187.0096.0217.0101.0379.0012.012-.006.0198-.0072.024-.0031.0043.0043.0113.0036.0216-.0012.0144-.0067.0186-.0053.0384.0091l.0228.0156.0019-.0133c.0019-.0143.0035-.0222.0064-.0246zm-10.43459.029c.0022-.0013.0046 0 .0082.003a.0321.0321 0 0 1 .0091.021c0 .0187-.0168.0324-.0247.0204-.0066-.0108-.0066-.0133.0007-.0324.0027-.007.0047-.0107.0067-.012zm7.37861.0093c-.0055 0-.0116.0035-.0183.011-.0138.015-.008.0246.0144.0246.021 0 .027-.0077.018-.024-.004-.0075-.0087-.0113-.0141-.0116zm1.90414.0184c.0039-.001.01.0007.0189.0053.006.0035.0115.0101.0115.0155a.10501.105 0 0 0 .0125.033.09101.091 0 0 1 .0103.0402c-.002.0144-.0031.0133-.0107-.0107-.0085-.0253-.011-.027-.032-.029-.021-.0016-.0227-.0035-.0197-.0148a.13802.138 0 0 0 .0036-.0271c0-.0072.0016-.0112.0056-.0124zm-.04141.0533c.0077.0008.016.0124.022.0318.009.0317.0083.0888-.0013.0924-.0036.0012-.0096-.0151-.0137-.0355a2.52961 2.5293 0 0 1-.0127-.06c-.003-.0125-.0036-.024-.0019-.0257a.0093.0093 0 0 1 .0076-.003zm-13.62698.0008c.0055-.002.0143.001.028.0083.0168.0089.018.0113.018.0449 0 .0288.0024.0367.0127.0439a.36675.3667 0 0 1 .03891.04l.0264.0313-.0156.012-.0156.0127.0192.0089a.0717.0717 0 0 1 .0276.0258c.0108.0216.0108.0234-.003.0234-.0066 0-.0138.0024-.0155.006-.0079.0126-.0151.0053-.0151-.015 0-.0222-.0048-.0258-.0168-.0138-.0053.0053-.0072.0053-.0072-.0017a.026.026 0 0 1 .0067-.0156c.0048-.0048.0029-.0084-.0072-.0144-.0079-.0036-.0283-.0211-.0456-.0374-.03121-.0293-.03191-.0305-.03191-.0646 0-.0271.0019-.0355.009-.0355.0097 0 .0227-.0204.0169-.0264-.0079-.0077-.0199-.003-.0235.0096-.0017.0079-.0125.0216-.024.0307-.0187.0156-.0204.016-.024.006-.01131-.0355-.01371-.0384-.02701-.0312-.0102.0053-.012.0048-.0083-.002.0125-.0215.0168-.0233.0252-.0106a.025.025 0 0 0 .0245.0107c.0139-.0017.0163-.0048.018-.0246.0013-.0126.0036-.0196.0092-.0214zm14.86503.024a.0253.0253 0 0 1 .0075.004c.0091.0053.0199.0582.0139.0678-.0067.0114-.0294-.0293-.0294-.0533 0-.0145.002-.0201.008-.0185zm-11.62422.0238a.0461.0461 0 0 1 .0087.0006c.0132.0013.0162.0048.0168.0198a.29204.292 0 0 0 .0048.0414c.003.0173.0024.0222-.003.0204-.0138-.0048-.0282-.0312-.0312-.0576-.0022-.019-.0026-.024.004-.0246zm13.24263.0299c.0032 0 .0071.0027.012.0085.0052.0067.0095.0072.0155.0024.0091-.0072.0204.0096.0204.03 0 .015-.0168.0168-.0222.0036-.0031-.0084-.0048-.0084-.015.0012-.0102.0089-.0126.0089-.0168.0017a.0424.0424 0 0 1-.0024-.0384c.0024-.006.0051-.0089.0084-.0091zm-1.40387.0055c.0036 0 .0041.0024.0024.006-.0019.0031-.0065.006-.0096.006-.0036 0-.004-.0029-.0024-.006a.0123.0123 0 0 1 .0096-.006zm-.26284.0019.0211.0144a.18102.181 0 0 0 .036.018c.0103.0024.0187.0125.0288.036.0187.0413.018.0516-.0007.0281-.0126-.0161-.0197-.0192-.0509-.0221a.21303.213 0 0 1-.04152-.0072c-.0024-.0013-.0017-.0173.0012-.0348zm-7.3286.0278c.0036 0 .004.0024.0024.006-.0019.0031-.0067.006-.0096.006-.0036 0-.0041-.0029-.0024-.006a.0123.0123 0 0 1 .0096-.006zm7.355.108h.0134c.007 0 .0142.0048.016.0103a.41615.4161 0 0 0 .015.0372.08871.0887 0 0 1 .0084.054c-.0072.0516-.0096.0533-.0221.0197-.0108-.0281-.0108-.0324-.0024-.0444.0132-.0187.012-.0227-.0067-.0227-.0156 0-.0156 0-.0048-.012.0107-.012.0107-.0126-.0031-.027zm-14.78301.0008c.0016-.0011.0046.0016.0094.0076.0053.006.0048.0096-.0024.0156-.008.0067-.0091.0048-.0091-.0084 0-.0089.0005-.0137.0021-.0148zm.68278.0053a.0115.0115 0 0 0-.0097.0059c-.0048.0079.0024.0192.0096.015.0072-.0047.0072-.021 0-.021zm2.4358.012c.0036 0 .006.0011.006.0023 0 .0019-.0024.0048-.006.0067-.003.0017-.006.0005-.006-.0024 0-.0036.003-.0067.006-.0067zm14.51749 0c.0036 0 .0043.0023.0024.0059-.0019.0031-.0067.006-.0096.006-.0036 0-.0043-.0029-.0024-.006a.012.012 0 0 1 .0096-.006zm-5.82722.0299a.0053.0053 0 0 1 .0053.0053c0 .0073-.012.015-.0162.0109-.004-.0043.0036-.0163.0107-.0163zm-13.0439.0005c.006-.003.015.0004.0232.012.0113.0163.006.0295-.0115.0295-.0096 0-.0149-.0041-.0173-.015-.0036-.014-.0005-.0235.0056-.0266zm1.20744.0538a.0604.0604 0 0 1 .0286.008.30634.3063 0 0 0 .05691.0205c.0413.0114.04561.0114.05591.003.0053-.0052.0101-.0071.0101-.0035 0 .0029.0084.0149.0187.0264l.018.0204-.0348.004c-.0787.0097-.0804.0097-.0912-.01-.0067-.0115-.02541-.026-.05042-.0397-.0223-.0114-.0384-.0228-.0367-.0253.0036-.0035.014-.0047.025-.0039zm.8148.0009.0035.0127a.41435.4143 0 0 1 .0072.0408c.0036.0269.003.0288-.0187.0437a.08131.0813 0 0 1-.0539.0156c-.0173 0-.03121-.0012-.03121-.003 0-.006.0624-.084.0774-.0972zm-.49846.0148c.0025-.0011.0075.0005.017.0039a.16552.1655 0 0 0 .04501.0067c.0223 0 .0253.0017.0253.0137s.003.0138.0227.0138h.0235l-.0067.0293-.006.0301-.0281.0036c-.0235.003-.0367.0012-.0679-.0115-.021-.0084-.0461-.0156-.0552-.0156h-.01681l.0223-.0226c.0144-.0146.0221-.0283.0221-.0386 0-.0077.0003-.0116.0027-.0128zm.20233.0027a.042.042 0 0 1 .0356.015c.0126.0138.0173.015.0426.012.027-.0037.02881-.003.03781.0138.0048.0096.0072.0221.0053.027-.0047.0126-.0143.006-.0143-.009 0-.0162-.0204-.015-.0522.0036-.02271.0138-.03001.015-.06182.0114-.0204-.0024-.036-.0072-.036-.0107a.08801.088 0 0 0-.009-.024.0625.0625 0 0 1-.008-.0181c.0266-.0132.0454-.02.06-.021zm2.71213.0593c.0036 0 .0042.0024.0024.006-.0018.0031-.0066.006-.0097.006-.0036 0-.0041-.0029-.0024-.006a.0123.0123 0 0 1 .0097-.006zm14.51689.006c.0036 0 .004.0024.0024.006-.0019.0031-.0067.006-.0096.006-.0036 0-.0043-.0029-.0024-.006a.012.012 0 0 1 .0096-.006zm-17.33664.0063c-.0035 0-.0084.0025-.0128.0076-.0036.0048-.0048.0102-.0024.012.0041.0048.0197-.0067.0197-.0144 0-.0035-.0017-.005-.0045-.0052zm14.39838.001c.0084.0013.012.0067.012.0168 0 .0126-.003.0156-.0192.0168-.0161.0019-.0197 0-.0197-.009a.024.024 0 0 1 .027-.0246zm-10.4645.1014c.0031-.0016.0087.0012.01641.0089.0079.0079.0108.0084.0187.0019.0125-.0103.0216.0005.0192.022-.0024.0217-.0168.0229-.027.0025-.0073-.0144-.0078-.015-.0078-.0017 0 .0077-.0024.0137-.0053.0137-.008 0-.0103-.0048-.0158-.0288-.002-.0104-.0014-.0168.0016-.0185zm3.1191.0005c.0055.0013.0101.0043.0108.0072.0019.0072-.018.0192-.0235.0144-.0067-.0072.0031-.024.0127-.0216zm10.17765.0175c.0023-.0007.0073.0012.0153.0053.0199.0108.0348.084.0168.084-.0156 0-.0209-.0096-.024-.039a.20613.2061 0 0 0-.0079-.0408c-.0024-.0057-.0027-.0089-.0004-.0096zm-1.15145.1701c.0039.0024.0065.0084.0075.0177.0024.021-.0091.0366-.0204.027-.0103-.0084-.0108-.0307-.0013-.0402.0056-.0055.0105-.0068.0142-.0045zM7.24 12.05714c.0045-.0003.0081.0023.0153.0075.0163.012.0084.0168-.0252.0144l-.0292-.0018.018-.0101a.0627.0627 0 0 1 .0213-.01zm5.40737.156c.003.0019.0055.0083.0055.0182 0 .018-.0006.0187-.0096.0096-.0053-.0053-.0084-.0144-.0067-.0192.0033-.008.0073-.0106.0106-.0088zm1.75722.053h.0288c.0276.0006.0294.0017.0456.0264a.15302.153 0 0 1 .0163.03c0 .0017-.008.0036-.0175.0036-.0192 0-.042-.0156-.0605-.042zm-.11762.0183c.0047-.0008.0102.0015.015.0069.0067.0084-.0006.0347-.0096.0347-.0107 0-.0204-.0174-.0162-.0299.0021-.0069.0061-.0108.011-.0117zm-4.80939.0057h.0174c.015 0 .0181.0029.0205.0168.0024.015.0005.0168-.0115.0144-.0113-.0024-.0137 0-.0137.0132 0 .0204.0168.0276.0276.0125.0077-.0106.0084-.0106.0084.0013 0 .0107-.0348.0539-.039.0486a.8681.868 0 0 1-.0054-.0546zm3.1764.0012a.019.019 0 0 1 .0096.0132c.0017.0072-.0005.0101-.006.0084a.019.019 0 0 1-.0096-.0133c-.0019-.0071.0007-.0102.006-.0083zm1.58619.0077.002.0367c.0011.0269.0047.0396.0126.0466.0107.0097.0137.0085.0564-.0286a.57047.5704 0 0 1 .04852-.0396c.002 0 .0036.0072.0036.0168 0 .0101-.0096.0288-.024.0485-.0281.0379-.0293.0444-.0072.039.0247-.006.0379-.0138.0672-.0407.0235-.0216.0271-.0228.0288-.0127.0067.0463.0139.0487.05522.0204.0228-.0156.0312-.018.0511-.015a.17902.179 0 0 1 .0347.0073c.0085.0029.0104-.0007.0104-.024 0-.0151.0024-.0276.0053-.0276.0072 0 .0106.0113.0161.0509a.10081.1008 0 0 0 .018.0468c.0108.0127.0144.0247.0144.045 0 .0157.0031.0378.006.0498.0048.0163.0041.0259-.0012.0367-.0079.0144-.0084.1373-.0019.3408.0053.1596.0036.2148-.0091.2442-.0072.0168-.0072.0227.0019.0486.0084.0228.0103.0493.0103.1333 0 .1013-.0072.247-.0156.3197-.0036.0324-.0031.0355.0084.0384.012.0031.012.0041.0043.0204-.0115.0223-.0114.0576.0006.09.0067.0192.0084.038.006.0696-.003.0396-.0024.044.009.0504l.0126.0067-.0137.0144c-.0115.012-.0134.02-.012.0516l.0024.0787c.0012.0384.0024.0427.021.0587.0234.021.0335.0217.04552.0043l.0096-.0134v.0158a.12001.12 0 0 1-.006.0324c-.0048.0126-.0036.0226.006.0485.0133.0355.015.0648.006.0888-.004.012-.0036.0192.0036.03.0127.0192.009.0413-.0079.0439-.012.0019-.0132-.0007-.0132-.0408a.32004.32 0 0 0-.0029-.0528c-.0012-.0053-.0043-.0174-.006-.027-.003-.0133-.0072-.0162-.0216-.0162-.0115 0-.018.003-.018.0084a.15232.1523 0 0 1-.0127.036l-.012.0281.0126.0204c.0114.0187.012.0235.006.0576a.20593.2059 0 0 0-.003.0588.08611.0861 0 0 1-.0047.0427c-.0067.0161-.008.0377-.0048.093a2.4773 2.477 0 0 1-.0012.1787c-.0048.0979-.0043.108.0053.119a.0361.0361 0 0 0 .0216.0113c.0276 0 .045.0226.0546.0689.0036.018.003.0187-.0173.0163-.015-.002-.0205 0-.0205.006 0 .0048-.008.0144-.018.0216-.0156.012-.018.0173-.018.0432 0 .0264-.0024.0312-.0198.0444-.012.009-.0402.0197-.0714.0269a.57407.574 0 0 0-.06671.0192c-.0227.0101-.0341-.0012-.0341-.0341v-.0264h-.036a.13752.1375 0 0 0-.07201.018c-.0403.0204-.04501.0209-.07801.0106-.0254-.0083-.0276-.0124-.018-.037.003-.0084.0048-.0156.0036-.0156a.8322.8321 0 0 0-.08831.0377c-.0079.0048-.0113.0139-.0113.03 0 .0307-.0138.0283-.039-.006-.012-.0168-.0228-.0252-.0318-.0252-.0252-.0005-.05521-.0192-.07381-.0456-.0144-.0204-.0234-.0264-.04201-.0293-.0342-.0055-.05331-.0163-.05331-.0288 0-.0067.0083-.024.0185-.0391a.11501.115 0 0 0 .0216-.0552l.0024-.0276-.0096.0163c-.0053.0096-.0108.0168-.0126.0168-.0036 0 .0012-.0654.0072-.1099.0024-.0161.0067-.0221.0144-.0221.015 0 .03-.006.03-.012 0-.0031-.0077-.0067-.018-.0091l-.0174-.0036.0114-.0223a.09881.0988 0 0 0 .012-.0312.41445.4144 0 0 1 .0133-.0533c.0125-.0427.0124-.0451.0028-.0816-.0113-.0427-.0132-.1219-.0036-.153.0036-.0126.0067-.0968.008-.204.0011-.1477.0035-.1873.0107-.2048.0084-.0192.0084-.022-.002-.0346a.0477.0477 0 0 1-.0113-.0254.18192.1819 0 0 0-.012-.0413c-.0156-.0396-.0156-.0835.0007-.1152.0091-.0173.0107-.0259.006-.0307-.009-.0089-.0084-.0346.0024-.0605.008-.018.008-.0264.0024-.0475-.0096-.0346-.0084-.1092.0024-.144.008-.0245.008-.0276.0005-.0216-.0048.0036-.0096.006-.0102.0048a2.62072 2.6204 0 0 1 .0036-.1253c.0053-.1135.0048-.1273-.006-.1699-.0107-.042-.0107-.0504-.0036-.078.004-.0173.0077-.0624.0077-.1056a.7509.7508 0 0 1 .0072-.1122c.0055-.0294.0048-.0564-.0012-.1206-.0162-.1764-.015-.1938.015-.2382.0174-.0258.018-.0276.006-.0276-.0186 0-.0053-.0534.0192-.0798.0174-.018.0558-.0402.0696-.0402a.055.055 0 0 0 .024-.012c.0107-.0091.0198-.0108.0336-.0084.0162.0036.0227.0005.05042-.0252zm4.55116.0043a.0288.0288 0 0 0-.0196.0077c-.0192.0192-.0055.0319.0226.021.011-.0035.0158-.0095.0146-.0167-.0013-.008-.009-.012-.0176-.012zm-4.8062.0144c.009-.0031.04262.0017.04802.0067.0019.0017-.0072.012-.0192.0233-.0227.0204-.05161.027-.07021.015-.0156-.0096.006-.033.0414-.045zm-1.23835.0027a.0453.0453 0 0 1 .0207.0063c.0156.0079.0089.0173-.0127.0173-.018 0-.027-.0077-.021-.0178.0024-.004.007-.006.0129-.006zm-.0453.0297c.0031 0 .0053.0041.0053.009 0 .0095-.0163.0191-.0223.0126-.004-.0043.0096-.0216.0168-.0216zm-11.61844.009.0145.027a.35054.3505 0 0 1 .015.0312c0 .0029-.0066.0048-.015.0048-.0144 0-.015-.0019-.015-.0319zm8.40724.069h.018c.0173 0 .018.0006.018.03 0 .0162-.0013.03-.003.03a.16252.1625 0 0 1-.018-.03zm-8.36933.024.0024.057.0018.057h-.015c-.012 0-.0162-.0043-.02101-.0228-.0107-.0384-.0084-.0546.012-.0738a.22613.2261 0 0 1 .0198-.0174zm14.80922.042c.0036 0 .004.0024.0024.006-.002.003-.0067.006-.0096.006-.0036 0-.0041-.003-.0024-.006a.012.012 0 0 1 .0096-.006zm-9.16093.1755c.0062-.0005.0115.0036.0134.013.0029.0131-.008.0215-.0278.0215-.0132 0-.0132-.0006-.0041-.0186.0053-.01.0124-.0152.0187-.016zm-.19322.0465c.036 0 .0403.0012.0336.009-.0096.0114-.048.0114-.0636 0-.0101-.0078-.0077-.0085.03-.009zm6.20296.012c.0102 0 .012.0041.012.0282 0 .0258-.0007.0276-.0084.0168a.11811.1181 0 0 1-.012-.0288c-.0031-.0138-.0017-.0162.0084-.0162zm-11.68043.2756c.0027-.0039.007-.0031.013.0017a.0427.0427 0 0 0 .0215.0079c.0102 0 .0132.0041.0144.0227.0018.0217.0012.0229-.0102.0162-.0072-.0036-.0126-.0096-.0126-.0137 0-.0043-.003-.0024-.0066.003-.0107.0191-.0234.0126-.0234-.012 0-.0136.0012-.022.004-.0258zm11.73444.0125c.0025 0 .009.0067.0145.015.0096.0145.0096.015-.0048.015-.0103 0-.0156.0043-.018.0151-.0053.021-.0156.0187-.0156-.0043 0-.0173.0137-.0408.024-.0408zm-8.78968.049c.0033-.0013.0057.0036.013.0206.0126.0307.0114.0343-.006.0168-.015-.0149-.0187-.0269-.0107-.0341a.0127.0127 0 0 1 .0037-.0033zm-.0055.066a.0253.0253 0 0 1 .0083.0002c.0113.0013.0227.012.042.0403.0281.042.0281.042-.0067.0612-.0096.0053-.0101.0048-.0048-.006.0091-.0156.0084-.0427-.0005-.0427a.11071.1107 0 0 0-.0264.0072c-.015.0053-.0216.0053-.0283 0-.0072-.0067-.0072-.0106.0007-.0346.0059-.0176.009-.024.0157-.0254zm18.74371.0184c.004-.0021.007.0008.0099.0083a.10071.1007 0 0 1 .0036.0253c0 .0089.0053.025.0125.0365l.0127.021-.0168.0348c-.0144.03-.0186.0348-.0336.0348h-.0168l.0156-.0252.0156-.0246-.0162-.0342-.0162-.0336.0133-.0222c.007-.012.0123-.019.0165-.021zm-20.46332.0141c.0014.0015.0004.0051-.004.0096-.0036.0036-.0091.0048-.0115.0024-.0024-.0024-.0005-.0067.0043-.0096.0056-.0036.0097-.004.0112-.0024zm8.25231.0144c.0031 0 .0096.012.015.0271a.13002.13 0 0 0 .0217.0365c.0125.0115.0101.0192-.0103.0264-.0113.0048-.0144.0103-.0144.0283 0 .0173-.0017.0204-.0072.015-.0084-.0085-.0132-.1333-.0048-.1333zm2.327.066c.0045.0007.008.0024.01.0053.0053.008-.0017.0235-.012.0271-.012.0048-.0324-.0067-.0324-.0173 0-.01.0209-.0172.0344-.0151zm-8.7873.024c.0096 0 .01511.0036.01511.0091 0 .0053-.0053.009-.015.009s-.015-.0037-.015-.009c0-.0053.0053-.009.015-.009zm8.68418.005c.0023-.0013.0052-.0007.0087.001a.12071.1207 0 0 1 .0252.0254.27473.2747 0 0 1 .024.037c.0091.0174.0091.018-.0156.0408l-.0247.0235-.0132-.0156c-.0114-.0127-.0137-.0228-.0137-.0528 0-.0383.0024-.056.0093-.0593zm-10.39328.0557c.0017 0 .0019.0019.0019.0053 0 .0032-.0048.006-.0103.006-.009 0-.0096-.0012-.0017-.006.0056-.0035.0086-.0054.0102-.0054zm1.72871.0118c.0011-.0009.0074.0047.0159.0146a.20753.2075 0 0 1 .0307.0432.10471.1047 0 0 1 .0082.042c0 .0209-.0005.0216-.0066.009-.0035-.0071-.0114-.0133-.0179-.0133-.0079 0-.0108-.004-.0108-.0154 0-.0134-.0013-.0151-.009-.0084-.0054.004-.009.0173-.009.0306 0 .0306-.0084.0299-.0173-.0025a.16082.1608 0 0 0-.017-.0389l-.0089-.0144.0401.004c.03961.0044.04031.0044.0336-.0083a.0259.0259 0 0 0-.0226-.0125c-.012 0-.0146-.002-.0091-.0072.0048-.0048.0048-.0102.0005-.0192-.0009-.002-.001-.0028-.0008-.0031zm-.0381.0053c.0053 0 .0096.0025.0096.0061 0 .0031-.0024.006-.0053.006-.0038 0-.008-.003-.0098-.006-.0017-.0036.0007-.006.0054-.006zm18.6836.0948c.0043.0015.008.0093.013.0247.0114.0348.0096.0379-.0156.0276-.0324-.0137-.033-.0156-.0156-.0377.0084-.0108.0137-.016.018-.0146zm-20.48333.0136a.0388.0388 0 0 1 .0143.0057c.0127.006.02161.0283.02761.0619.0036.0221.003.0227-.0132.021-.0161-.0018-.0168-.0037-.0204-.0385a.17242.1724 0 0 0-.0077-.0432c-.0027-.0045-.003-.0067-.0006-.0069zm1.78162.0195c.0138.0007.0186.0048.0222.0187.0048.0168.02711.0456.03601.0456.0024 0 .0067-.012.0091-.0271.0017-.015.0053-.027.0077-.027.0019 0 .0084.0115.0139.0246l.0101.0247-.0233.009c-.0216.0092-.024.0114-.024.0313a.17122.1712 0 0 1-.0053.0401c-.0062.021-.0026.0301.025.057.0127.0126.0168.0205.0115.0222-.018.006-.0348-.006-.0504-.0347-.0096-.0162-.0192-.0301-.0223-.0301-.0024 0-.0072.0144-.0101.0312-.0053.0307-.006.0312-.01391.0175-.0066-.0114-.0066-.0211-.0012-.0456.0072-.0312.0031-.0571-.0106-.066a.14992.1499 0 0 1-.0254-.0307c-.0156-.0227-.0173-.0281-.0101-.0365.0113-.0144.0413-.0259.0612-.024zm.09782.0823c.0211 0 .0216.0005.012.0101-.0089.0096-.0089.0108 0 .021.0091.0102.0091.0107-.0029.0107-.0084 0-.0163-.0064-.0223-.0178-.012-.0235-.012-.024.0134-.024zm.0094.0661a.012.012 0 0 1 .0129.0053c.0017.0031-.0007.0084-.0053.0125-.005.004-.0091.006-.0091.004a.0732.0732 0 0 0-.0036-.0124c-.0021-.005.0008-.0085.005-.0095zm-3.03898.0063c.0043.0024.0066.0099.0056.0219-.0024.0264-.0138.0324-.0234.0113-.0054-.012-.0054-.0173.0006-.0247.007-.0084.013-.011.0174-.0087zm16.89788.014a.33534.3353 0 0 1-.0024.0259l-.0024.0252-.0175-.0091c-.0096-.0048-.0173-.0108-.0173-.0139 0-.004.03721-.0307.0396-.0281zm4.73099.0196c.003-.0019.0057-.001.0093.002a.0588.0588 0 0 1 .0126.0276c.0024.0127-.0013.0413-.009.0763-.0115.0466-.012.0593-.0068.0821.0036.015.0084.0324.0096.039.0024.0097-.0019.0145-.0216.0222-.0228.0096-.024.0096-.024-.0012a.17652.1765 0 0 1 .0091-.0384c.0084-.024.0084-.033 0-.0852-.0102-.063-.009-.0792.0096-.1099a.0459.0459 0 0 1 .0111-.0146zm-18.7169.0436.024.024a.20593.2059 0 0 1 .0235.0276c0 .0017-.015.0029-.033.0029-.03661 0-.04021-.0048-.02341-.0367zm13.96051.0245c.0187 0 .0204.002.0235.0223.006.0437.0137.0557.0365.0557.0168 0 .0211.0024.024.0156.0024.0096.0013.0187-.003.0228-.0054.0048-.006.0036-.0037-.0067.002-.0096.0007-.012-.0053-.0096-.0049.002-.0234.0013-.0414-.0012-.03-.0036-.0331-.0048-.0294-.0173a.0573.0573 0 0 0-.0044-.0307c-.0036-.0101-.009-.0252-.0113-.0346-.0048-.0158-.0043-.0163.0144-.0163zm.06341.1208a.018.018 0 0 1 .011.0071c.008.0091.0024.0187-.0125.024-.0067.0024-.012.0007-.0137-.0048-.0063-.0157.004-.028.0152-.0262zm-14.05593.0835c.004.0007.0075.0035.0075.0076 0 .0084-.012.0221-.0192.0221-.006 0-.0067-.0204-.0007-.0257a.0135.0135 0 0 1 .0124-.004zm18.7273.0264c.0022-.0027.0062-.0017.014.0004.0097.0024.018.0048.0193.0067.0012.0012-.0053.0132-.0144.027-.0288.0407-.057.054-.057.0263 0-.0126.003-.0149.018-.0149.0167 0 .018-.0012.018-.0247 0-.012 0-.0181.0022-.0206zm-3.70755.134c.0007-.0004.0017.0003.0027.002a.19402.194 0 0 1 .0115.0347.10771.1077 0 0 1 .0012.0414l-.0043.0163-.0072-.0204c-.008-.0216-.0093-.0716-.004-.0741zm.12931.122c.0032.0004.006.0041.0084.0113.0048.0144-.0005.024-.0126.024-.012 0-.0174-.0161-.0084-.0269.005-.006.0093-.0088.0125-.0084zm-4.31613.0173c.0024 0 .0103.0061.0168.0134.024.0264.0283.04.0156.054-.0102.0114-.0102.012.0013.0204a.039.039 0 0 0 .0167.0084c.003 0-.002.0084-.0103.0186-.0204.024-.0204.0486 0 .1103.0163.0499.0294.069.05831.0859.0192.0114.0245.0252.0192.0497l-.0043.0187-.0108-.0168c-.0103-.0144-.03-.0312-.03-.0247a.23303.233 0 0 0 .009.0283c.0145.0413.0126.048-.015.048-.0221 0-.0233-.0013-.0276-.0216a.22453.2245 0 0 1 0-.0571c.0031-.0293.0017-.0353-.0053-.0353-.0085 0-.0085-.002 0-.018l.0095-.018h-.021c-.0203 0-.021-.0007-.0155-.0151.0048-.012.0036-.0173-.0053-.0264-.0115-.0113-.0367-.072-.0367-.0876 0-.0067.0072-.0091.024-.0091.0132 0 .024-.0024.024-.0053a.10791.1079 0 0 0-.018-.0276c-.0096-.0127-.018-.0252-.018-.0281 0-.0114.0199-.0648.0235-.0648zm.10442 0c.0096 0 .0168.0053.0216.0163.006.0125.0055.0168-.0005.0204-.0144.0091-.0216.0053-.0283-.0132-.0084-.0245-.009-.0233.0072-.0233zm4.1188.0303c.0048-.0003.0123.0061.0245.016l.027.0223-.0156.004c-.0456.0126-.0444.0474.0048.1573.0125.0293.0173.0341.027.0312.0107-.003.0115-.0019.006.018a.09591.0959 0 0 0-.0043.0341c.002.012.0024.012.021-.0036l.0192-.016-.0036.0226c-.006.0378-.0127.051-.0246.0474-.0053-.0019-.018-.0048-.0282-.0072-.0103-.0019-.0276-.0144-.0402-.0288-.0186-.0204-.0234-.0226-.0288-.0156a.0568.0568 0 0 0-.006.0254c0 .013.0036.0173.0162.0202.0282.0072.05281.0254.07381.054l.021.0276.0043-.028c.0048-.0349.0108-.042.0108-.0134 0 .0115.003.029.006.0379l.0067.0162-.0547-.004a.52476.5247 0 0 1-.06302-.0073c-.0078-.003-.009.006-.009.06v.0636h-.0174c-.0168 0-.0173.0006-.0127.0192a.54657.5465 0 0 1 .0085.0456l.0036.0258-.0235-.0127c-.0187-.0091-.0252-.0173-.03-.0341-.0048-.0174-.0048-.0235.0019-.0271.0324-.018.0366-.0264.036-.072a.28233.2823 0 0 0-.0107-.0707.25443.2544 0 0 1-.0097-.065.16592.1659 0 0 0-.006-.0491c-.0036-.0067-.0079-.0372-.009-.0684-.0025-.0461-.0013-.0576.0066-.0641.0072-.006.012-.006.021-.0007.0145.0089.024.0089.0378-.002.0091-.0071.0103-.01.0043-.0172-.006-.0067-.0067-.0247-.0036-.068.0037-.0535.0047-.0728.0128-.0735zm-4.0742.018c.0067-.0016.0137.0021.0137.0088 0 .0048-.0036.0091-.0084.0091-.0103 0-.0168-.0084-.0115-.0144a.013.013 0 0 1 .0061-.0035zm3.9793.0119c.0096 0 .0126.0053.0156.0312.003.0226.0017.0329-.0043.0389-.0072.008-.0091.0048-.0127-.0216a.31704.317 0 0 0-.0072-.0396c-.0024-.006 0-.0091.0084-.0091zm-3.9768.0242c.0035-.0004.0053.002.004.007a.0204.0204 0 0 1-.0144.01c-.0096.002-.0101.0006-.003-.008a.0267.0267 0 0 1 .0134-.0092zm4.43755.0123c.0007-.0007.009.0024.0193.006a.0384.0384 0 0 1 .0246.0245c.0036.0102.006.0192.0048.0204-.003.0031-.05521-.022-.06601-.0324-.0108-.0096-.0108-.01.003-.0137.0071-.0024.0137-.004.0143-.0048zm-.30604.026c.0063-.0007.014.016.0157.0393.0013.0211-.0006.03-.0053.03-.0158 0-.0254-.0384-.0163-.0624.0016-.0045.0037-.0067.0059-.0069zm-2.25228.022c.0032 0 .0037.0043.002.0096a.7661.766 0 0 0-.0072.0528l-.004.042-.014-.03a.14852.1485 0 0 1-.0143-.0493c0-.016.0024-.019.0168-.0215a.30554.3055 0 0 0 .021-.0036zm-2.15966.0084.0024.0204a.08271.0827 0 0 0 .0107.033c.0109.0155.0109.0575-.0006.0995a.26503.265 0 0 0-.009.0494c0 .0185-.0085.0221-.0145.007a.25653.2565 0 0 1-.0036-.0503c0-.0486-.0036-.06-.0186-.06-.012 0-.0124.003.0222-.075zm4.47175.088c.0052.0008.0087.0035.0087.008 0 .0084-.0173.021-.0293.021-.0092 0-.0085-.0222.001-.0258a.039.039 0 0 1 .0197-.0032zm-.09631.023c-.006 0-.0089.0035-.0077.0095.0024.0126.0132.014.0156.0007.0012-.006-.0019-.0101-.008-.0101zm-3.2418.0937c.0077-.002.016.004.016.0144 0 .0156-.006.03-.0126.03-.0103 0-.0187-.0307-.0107-.0396a.0144.0144 0 0 1 .0071-.0048zm-1.14924.065a.0341.0341 0 0 1 .0216.0093c.0132.0126-.0127.0227-.0348.0144-.0072-.003-.0077-.006-.003-.015.0032-.006.0093-.0088.0162-.0087zm1.10713.0303.0097.0199c.0072.0156.0149.0216.034.0264l.0254.0065.0035.036a.91411.914 0 0 1 .0036.051c0 .0143-.0005.0143-.0077.0047-.0079-.0101-.009-.0096-.021.0091l-.0132.0204v-.024a.10601.106 0 0 0-.012-.045c-.0251-.0438-.0306-.06-.0263-.0828zm-1.08433.021c.0127 0 .015.0025.0132.0133-.0013.009-.0067.0144-.015.0156-.0116.0019-.0138-.0007-.0138-.0133s.003-.0155.0156-.0155zm-5.29535.0014c.001-.0006.0023.002.0047.0076a.07971.0797 0 0 1 .0053.027c0 .0138-.0005.0138-.0053.0032a.07761.0776 0 0 1-.0053-.0271c0-.007 0-.0104.0008-.0107zm-7.11288.0616c.003.0019.0074.0163.0098.0319a.15012.1501 0 0 0 .0132.0444c.0089.0156.0089.0186-.0067.0497-.0132.027-.0187.033-.0312.033-.0187 0-.0187-.004-.0006-.027l.0144-.018-.0173-.0341-.0175-.0348.015-.024c.0084-.014.018-.0228.021-.0211zm13.56997.0823c0-.0053.0017-.0013.0029.0096a.18762.1876 0 0 1 .0007.036l-.002.0161-.0133-.0216c-.0166-.0264-.0166-.0293-.0016-.0293.0072 0 .0127-.0041.0132-.0108zm4.0881.0324c.0036.0065.006.03.0065.0533a.36434.3643 0 0 1-.0048.0614c-.0048.0185-.0043.0197.0096.0197.015 0 .015.0007.0187.0703.0016.0389.0059.0924.0083.1186.003.0266.0048.0494.0036.0506-.0012.0012-.012-.0048-.0234-.014-.0173-.0131-.0204-.0186-.0144-.0251.0053-.0072.0031-.0084-.0144-.0084-.0288 0-.036-.0139-.0366-.0703-.0006-.0401.0005-.0437.0113-.0437.0235 0 .0288-.0091.0247-.0384-.0067-.0427.0024-.1879.0106-.174zm-.8868.0093c.0017.001.0021.0075.0021.02 0 .0144-.003.021-.009.021-.0109 0-.0115-.0068-.002-.027.0045-.0099.0072-.0147.0088-.0139zm-.06981.017c.0192 0 .0198 0 .009.012-.0107.0114-.01.012.0037.012h.0138l-.0133.0133c-.0155.0154-.0233.0106-.0287-.0182-.0036-.0185-.003-.0192.0156-.0192zm-3.15.06c.0144 0 .0173.0024.0173.015 0 .0204-.0161.0259-.0312.0101-.015-.0149-.0096-.0252.0139-.0252zm-6.32577.037c.0054-.0008.0122.002.0239.008.0168.0091.0168.0091.0077.0276-.0066.0133-.0106.017-.0156.012a.0261.0261 0 0 0-.0156-.0067.04.04 0 0 1-.018-.0053c-.0066-.004-.006-.0079.0024-.021.006-.009.0099-.0135.0152-.0146zm6.34378.017c.0036 0 .004.0025.0024.006a.0137.0137 0 0 1-.0096.006c-.0036 0-.0041-.003-.0024-.006a.0123.0123 0 0 1 .0096-.006zm-5.39627.012c.01 0 .0186.0037.0209.0097.0043.012-.0053.03-.0204.0384-.0168.009-.018.0084-.018-.0211 0-.0257.0007-.027.0173-.027zm-.63077.0128a.15952.1595 0 0 1-.0108.0226c-.0156.0314-.021.0338-.0348.0163a.064.064 0 0 0-.02881-.0197c-.015-.0036-.0108-.0055.0276-.0115a.8185.8184 0 0 0 .0467-.0077zm-7.55253.0106a.16202.162 0 0 1 .0133.0331c.0095.0307.0078.0319-.027.018l-.024-.0096.0168-.0227c.0089-.0128.0186-.021.0209-.0186zm12.35592.0128c.0053 0 .012.0024.0137.006.0048.008-.003.008-.0149 0-.008-.0048-.0077-.006.0012-.006zm-4.64527.0192c.0048 0 .0072.0036.0111.0107.006.0115.0048.012-.0252.012l-.0319-.0005.0211-.0114c.0132-.0072.0203-.0106.025-.0106zm8.51175.0048c.0192 0 .021.0012.021.018s-.0012.018-.0162.0144c-.0233-.0053-.0257-.0077-.0257-.021 0-.0091.0043-.0114.0209-.0114zm1.52789.012c.0093-.0006.0208.0063.0223.016.0017.0134-.0168.024-.0288.017-.0072-.0041-.008-.0228-.0019-.0294a.0136.0136 0 0 1 .0083-.0036zm-5.88333.0024a.11701.117 0 0 1 .03401.0091c.0293.0114.0234.0187-.0168.0187-.0216 0-.0396-.0013-.0396-.0032a.0667.0667 0 0 1 .008-.0156c.0035-.006.0073-.0091.0145-.0091zm4.60987.0096.0096.0312c.0091.0307.0067.0402-.0103.0408-.003 0-.0048.0024-.0048.0053 0 .011.0211.0127.0451.0043.021-.008.0252-.0072.0348.0006.0055.0055.0101.0133.0101.0173 0 .0115-.0264.017-.0413.0085-.0133-.0067-.0133-.0072-.0276.0347-.0019.0053-.0096.0049-.0319-.0035l-.0293-.0115-.0163.0197c-.0204.0259-.03961.0276-.03961.0031a.13332.1333 0 0 0-.012-.0432.14832.1483 0 0 1-.012-.0341c0-.0041.015-.0144.033-.0235.036-.018.0336-.0245-.0084-.0252-.04981-.0012.0138-.0228.0696-.024zm-8.58586.006.0199.0006-.0211.018c-.0168.0144-.0216.0162-.0227.0084-.0043-.018.004-.027.024-.027zm.33254.0045a.0103.0103 0 0 1 .0083.0106c0 .0106-.0156.022-.0281.0197-.0163-.0031-.0168-.0221-.0007-.0281a.0339.0339 0 0 1 .0206-.0021zm-2.24228.0016c.0034-.0008.0062-.0001.0062.0023 0 .0012-.0043.004-.0096.006-.0048.002-.0072.0012-.0054-.0024a.0143.0143 0 0 1 .0088-.0059zm7.41432.0064a.11301.113 0 0 1 .0208.0061c.0173.006.0186.0084.0186.0342 0 .0253.0023.0293.018.0384.0138.0077.018.0144.018.0288 0 .018 0 .018-.0174.0096-.0134-.0072-.0216-.021-.0374-.0587-.0113-.027-.0209-.0517-.022-.0541-.0014-.0031-.0017-.0045.0014-.0043zm.07.0115c.0036 0 .004.0024.0024.006a.0137.0137 0 0 1-.0096.006c-.0036 0-.0041-.0031-.0024-.006a.0124.0124 0 0 1 .0096-.006zm2.83726 0a.0113.0113 0 0 1 .0096.006c.0019.0031-.0005.006-.0053.006-.0053 0-.0097-.0031-.0097-.006 0-.0036.0024-.006.0053-.006zm1.36287.006c-.0138 0-.0198.0036-.0251.0156-.0084.018 0 .0264.027.0264.0143 0 .0162-.0019.0162-.021 0-.0193-.0013-.021-.018-.021zm-9.6571.066h.0223l-.018.0144c-.0163.0132-.0187.0132-.0223.0048-.0072-.0173-.0053-.0192.018-.0192zm-6.35408.012c.0032-.0007.0061 0 .0061.0024 0 .0012-.0043.004-.0096.006-.0048.0019-.0072.0012-.0055-.0024a.0143.0143 0 0 1 .0088-.0059zm-1.6576.0488c.0048-.0012.0088.0024.0134.0107.0084.0166.0072.06-.0031.0941a.17552.1755 0 0 0 .003.1164.19122.1912 0 0 1 .012.069c0 .0366-.0013.039-.0191.0522a.30194.3019 0 0 1-.042.0247l-.02281.0101v-.018c0-.0163.0017-.018.018-.018h.018l-.0036-.0595c-.0031-.0462-.0024-.063.0048-.0768.0077-.0162.0084-.024.0012-.0594-.012-.0612-.0108-.1038.0036-.1272.0068-.0111.012-.0171.0168-.0183zm10.45118.0097c.0091-.0019.0163.0091.0163.0285 0 .0216-.0139.0318-.0276.0204-.0114-.009-.0108-.0288.0019-.0426a.0192.0192 0 0 1 .0096-.0063zm7.3257.1275h.0473l-.009.0222c-.006.0144-.0085.0354-.0073.0624l.002.0408-.0133-.0162c-.0149-.0186-.0197-.0389-.0197-.0797zm-15.07175.0308c.0072-.0013.0147.0006.0226.0064.0089.0072.0096.012.0029.0438-.0041.0198-.0077.0372-.009.0384-.0006.0012-.0133-.0053-.027-.015a.69929.6992 0 0 1-.0276-.018c-.0041-.0031.0053-.0258.0173-.0408.0067-.0084.0136-.0134.0208-.0147zm14.94264.0113c.0048 0 .0091.0045.0091.0143 0 .0168-.0144.0317-.0209.0216-.0024-.0036-.0024-.0134-.0007-.0216.0024-.0093.008-.0142.0127-.0143zm.0276.1408.0114.0139a.12352.1235 0 0 1 .0186.0389.20473.2047 0 0 0 .018.045c.008.0138.0115.0313.0115.0582 0 .0283.0043.048.0144.072l.015.033h-.021c-.018 0-.0204-.0016-.0204-.0155 0-.0144-.0017-.0151-.0187-.0115l-.0192.0043.0043-.0427a.33154.3315 0 0 1 .0108-.0605c.0055-.0156.0036-.0204-.0096-.0367-.0132-.0156-.0156-.024-.0156-.0581zm-17.72388.0813a.13252.1325 0 0 1 .0373.0035c.0227.0048.0227.009.0023.042-.0216.034-.0353.0346-.0396.0005a.16272.1627 0 0 0-.0072-.036c-.0024-.0057-.0001-.0089.0072-.01zm-.23163.0358c.0307 0 .0307 0 .0264.0162a.0523.0523 0 0 1-.009.0222c-.006.006-.027-.008-.0397-.0258-.0089-.012-.0084-.0126.0223-.0126zm.06071.0991c.0066.0027.0101.0119.0132.0287.0053.0276.0106.0342.0185.0222.0113-.0186.042.0198.05331.0684.0043.0168.0038.0168-.0269-.0108-.021-.0186-.036-.0276-.0473-.0276-.01991 0-.04511-.0186-.05712-.0426-.009-.0168-.009-.0174.0132-.0288.0163-.0087.02631-.0123.03301-.0096zm10.72942.0339a.0128.0128 0 0 1 .0089.008c.0024.0049.0007.0133-.0029.0174-.006.0067-.0048.0096.0029.0144.0067.0036.0084.0096.006.018a.25303.253 0 0 0-.006.0523l-.0024.039.0247.0073.024.0072-.0228.0197c-.0247.0216-.0391.0252-.0391.0108a.14272.1427 0 0 0-.015-.039c-.018-.0354-.0198-.0642-.0042-.0707.0132-.0053.0173-.0554.0036-.0554-.0048 0-.0084-.0036-.0084-.0079 0-.0148.0185-.0245.0306-.0213zm-10.6437.1202c.006.0053-.0072.054-.01731.0642-.0091.0084-.0096.0077-.006-.0102.0036-.0168.0024-.0192-.0091-.0192-.0101 0-.0125-.0036-.0125-.018 0-.0156.0017-.0173.0101-.0132a.0184.0184 0 0 0 .0204-.0005c.006-.0036.0127-.0053.0144-.0031zm12.59684.1147c.0072-.0012.0116.0045.0116.0167 0 .0101-.0036.0144-.012.0144-.0138 0-.0198-.0204-.008-.0276a.0215.0215 0 0 1 .0083-.0035zm-12.51404.0437c.0019.0024-.0048.0198-.0144.0396-.0173.0348-.0187.0355-.03.0252-.009-.0077-.0096-.012-.0041-.0186.0048-.006.0048-.012 0-.0234-.0067-.0132-.0054-.0156.0066-.0204.0155-.006.0366-.0072.042-.0024zm11.27039.0093c.0048 0 .0028.0027-.0043.008-.0127.0096-.05061.0187-.05591.0132-.0019-.0019.0103-.0072.0259-.0126a.18752.1875 0 0 1 .0342-.0087zm9.43316.0951c.0042 0 .0107.0096.0143.021.0048.015.0048.021 0 .021a.14132.1413 0 0 0-.0204.0036c-.0126.0036-.0132.0024-.01-.0133.0066-.0287.0083-.0323.0162-.0323zm-20.57323.438c.0036 0 .006.0024.006.006a.006.006 0 0 1-.006.006c-.0031 0-.006-.0031-.006-.006a.006.006 0 0 1 .006-.006zm-.88551.472a.59177.5917 0 0 1 .0734.0128c.04401.0091.04861.0113.04331.0204-.0043.008-.0036.0108.0017.0108a.0408.0408 0 0 1 .0192.0091c.0091.0067.0103.0108.0048.0163-.0048.0048-.0125.003-.0312-.0096-.0221-.0144-.0252-.0151-.0408-.0072a.23643.2364 0 0 1-.0293.012c-.01271.004-.01391.0024-.01391-.0151v-.0192l-.0312.0041c-.0173.0019-.04201.0055-.05401.0072l-.0221.0036.0067-.0173c.0053-.0139.0125-.0192.031-.024a.12101.121 0 0 1 .0424-.004zm18.56909.3981c.0187 0 .0324.0012.0312.0024-.0012.0012-.0168.0091-.0336.018l-.0317.0156v-.018c0-.018 0-.018.0341-.018zm-.10772.002c.01.0013.0168.0067.0261.0167a.11471.1147 0 0 1 .0163.0204.60377.6037 0 0 1-.057.0053l-.05582.0048v-.0175c0-.0156.0029-.018.0257-.024.0216-.005.0347-.0073.04471-.0059zm-12.65256.004c.0013 0 .0054.004.0095.0091.0043.0053.0048.0091.0014.0091-.0031 0-.0074-.004-.0098-.009-.0017-.0049-.0024-.0092-.0012-.0092zm12.123.006c.0115 0 .0222.0031.024.006.0024.0036.0006.0107-.0043.0162a.0288.0288 0 0 0-.006.0204c.0012.0072-.0036.0113-.0168.0144-.0234.0048-.0288 0-.0192-.0156.006-.0096.006-.0144.0012-.0204-.0102-.0127-.0017-.021.021-.021zm-.62328.0304c.0081.0007.016.0044.0195.011.0036.006.0041.0125.0024.015-.006.0053-.0252.004-.0384-.003-.0096-.0049-.0107-.008-.0048-.0151.0048-.006.0133-.0085.0213-.008zm-11.21038.011c.0036-.006.006-.0024.0072.0108a.10961.1096 0 0 0 .0029.0198 1.01803 1.0179 0 0 0 .08281-.015c.0096-.0031.0115-.0007.0115.015 0 .021-.0156.048-.0276.048a.11931.1193 0 0 1-.0294-.0102c-.0174-.0084-.024-.009-.03301-.003-.0096.006-.0168.0054-.036 0-.0204-.0066-.024-.0102-.024-.024 0-.0133.004-.0186.0204-.0253a.07901.079 0 0 0 .0252-.016zm-.63808.0032c.0016.0009.0022.0055.003.014.002.0164.0048.0193.0223.0229a.20673.2067 0 0 0 .0437.0013c.02111-.002.02281-.0007.01681.0083-.0036.0067-.0077.008-.0101.0043-.0024-.0043-.0115-.0048-.0228-.0024-.0223.0048-.05831-.006-.06601-.0197-.0043-.0072-.003-.0134.0041-.0216.0048-.0053.0074-.008.009-.007zm-.32964.0109c.0021.0003.006.0039.0134.011.012.0114.0228.0151.0494.0163.01901.0006.05332.0024.07602.003.0541.0023.057.003.057.0102 0 .0031-.0077.006-.0168.006a.12672.1267 0 0 0-.0449.0144l-.0283.0137v-.0168c0-.0173 0-.0173-.03841-.0173a.12452.1245 0 0 0-.07131.018c-.0187.0096-.0379.018-.0427.018-.0137 0-.0161-.0175-.0036-.0253.0084-.0053.0096-.009.0048-.015-.006-.0079-.0197-.0077-.09172.002-.0397.0047-.017-.0085.0317-.0187.03791-.0077.04631-.0077.06792-.0006.0288.0102.0353.0084.0353-.0096 0-.0063.0002-.0095.0022-.0092zm1.41097.0032c.0046-.0007.0094.0016.0181.006l.018.0092-.018.0077a.11811.1181 0 0 1-.0307.0084c-.0214 0-.0209.0067.0038.0348.0132.015.0233.0283.0221.0293-.0012.0013-.0137-.0023-.0281-.007-.0324-.0115-.0468-.0115-.0494 0-.001.0071-.0058.006-.0226-.0049l-.02111-.0132.0168-.0017c.0144-.0019.0163-.0041.0163-.0253 0-.0227 0-.0234.0197-.0198.0156.0024.024 0 .03791-.012.008-.0072.0125-.0106.0173-.0114zm-3.96959.0031c.0245-.0067.11642-.006.11872.0007.0013.0024-.0114.0113-.0275.0185-.0163.0077-.0319.0168-.0336.0204-.0072.0108-.0156.0079-.02161-.0084-.0048-.0125-.0096-.015-.03-.015-.0283 0-.0319-.0095-.006-.0162zm3.1625.0041c.0199 0 .048.0113.048.0192 0 .0031.0024.0036.006.0019a.18632.1863 0 0 1 .0391-.0053c.03121-.002.03361-.0012.03171.01-.0017.0128-.0053.0128-.09461.0133-.08401 0-.09741-.0012-.13392-.0144-.0259-.0096-.0379-.0168-.033-.0197.0143-.0091.0498-.0048.0815.01a.38775.3877 0 0 0 .03481.015c.0014 0 .0024-.0067.0024-.015 0-.0124.0031-.015.018-.015zm.49556.0035a.063.063 0 0 1 .0213.0097c.0126.0072.0222.0139.021.015a.11501.115 0 0 1-.0331-.0018c-.03-.0036-.0307-.004-.021-.015.0049-.0055.0075-.0081.0118-.008zm.0763.0088c.0026.001.0044.0039.0044.0087a.0093.0093 0 0 1-.0091.0091c-.0096 0-.012-.0072-.0048-.0137.0033-.0036.0067-.0048.0093-.004zm7.46622.2581c.0036-.0032.0104.0006.021.0111.018.018.0217.0587.0097.1128-.0055.0257-.0115.0528-.0127.0605-.0024.0108-.0053.0134-.0144.0102-.0089-.0031-.0127 0-.0156.0113-.0036.015-.0163.021-.0228.0108-.0019-.0031.0036-.015.012-.0276.015-.0216.015-.0227.006-.0461-.0127-.032-.012-.0355.0053-.0355.0132 0 .015-.0024.0144-.0227a.50966.5096 0 0 0-.0048-.0541c-.0024-.0173-.002-.0276.0017-.0308zm1.46069.5756c.0006 0 .0012.012.0012.0271 0 .024-.0013.027-.0133.027-.025 0-.031-.0085-.0197-.0265.0084-.0132.024-.0264.0318-.0276zm-.12042.0374c.0053.0013.0096.0077.0154.0197.0173.036.012.045-.0264.045-.0168 0-.018.0012-.0144.0198.0036.0197.003.0204-.0318.036-.0552.0245-.063.0216-.0293-.0127.019-.0198.0299-.036.0317-.0498.0043-.0234.0114-.0347.0324-.0492.0106-.0072.0171-.0106.0226-.0091zm-.14662.0886c.0114 0 .0133.003.0138.024.0012.0276-.0072.03-.042.0156-.0276-.0113-.0306-.0197-.006-.0168.0174.0024.0204.0007.0204-.0102 0-.0091.0036-.0126.0138-.0126zm-6.78913.0011c.0035-.0009.006.0037.0084.014.0024.0084.0077.015.012.015.0048 0 .0125.0067.0173.0144.0091.0138.0091.0144-.0132.0228-.0226.009-.0226.0096-.0257.0456-.0013.0204-.0043.0384-.006.0402-.0019.0024-.0144-.0036-.0283-.0133-.02211-.0155-.02401-.019-.02451-.0443 0-.0234.0024-.0288.018-.0408a.10401.104 0 0 0 .0281-.0342c.006-.012.0104-.0184.0139-.0194zm-3.35802.0734c.0037.0024.0072.0087.008.0173.0013.0092-.0005.0164-.004.0164-.0085 0-.0175-.0192-.0145-.0288.0024-.0063.0066-.0075.0105-.005zm9.97313.006c.0258-.0006.027 0 .033.021.0103.0324.0012.036-.0408.0156-.0318-.015-.0348-.018-.0276-.0264.0053-.006.0198-.0096.0354-.0102zm-10.01153.0094a.028.028 0 0 1 .0117.0217c0 .0127-.0024.0151-.0133.0134-.0137-.002-.0203-.017-.0143-.0326.0027-.0072.0096-.0069.0159-.0025zm10.5348.0301c.0126 0 .015.003.015.0187v.0192l.0564-.0043c.04442-.0036.06122-.0024.07802.0048.0198.0084.0282.0084.081-.0007.06662-.0106.09492-.0077.11892.0134l.0168.0142-.024.0103c-.0253.0108-.0199.0113-.11951-.0107-.0288-.006-.0366-.0053-.07331.0067-.05271.0174-.09651.0215-.11632.0112-.0144-.0079-.0474-.06-.048-.0756 0-.0036.0067-.0072.015-.0072zm-.05161.0072c.006-.0012.0072.0055.0053.0288a.12872.1287 0 0 1-.0065.0336c-.002.0024-.0174-.0053-.0342-.0161-.04621-.03-.0396-.0384.0354-.0463zm-8.0094.0002c.0038.0004.0044.0044.0044.0125a.0333.0333 0 0 0 .0072.021c.0084.0085 0 .012-.0312.0145-.0187.0019-.021 0-.0227-.0134-.0013-.0124.0023-.0173.0179-.0252.0133-.0065.0204-.0099.0244-.0093zm-2.19016.0226c.0144 0 .0161.002.0161.0211v.0216l-.0221-.0043a.22333.2233 0 0 1-.024-.0053c-.0013-.0005.0017-.0077.006-.0168.0053-.012.012-.0162.024-.0162zm10.79203 0c.001 0 .012.006.0233.0134.0113.0077.021.0154.021.0173 0 .0053-.04571.0233-.05771.0233-.0067 0-.0084-.0029-.0053-.0106a.30774.3077 0 0 0 .0103-.0271c.0031-.0091.0072-.0163.0084-.0163zm.28663.008.0228.015c.0127.0079.0228.0168.0228.0192 0 .0053-.0216.012-.042.012a.0756.0756 0 0 0-.0324.0114l-.0173.012-.0355-.018c-.0288-.0144-.0346-.0204-.0346-.033 0-.0162.001-.0156.031.0048.0163.0113.0163.0114.0511-.006zm-8.9855.0041c.0018 0 .0067.0072.0107.0163.009.0197.0019.0257-.031.0257h-.0224l.0096-.0149c.009-.0139.0246-.0264.033-.027zm10.34547.0048c0 .0031-.0067.0108-.0138.0187-.0173.0161-.0762.0252-.0762.012 0-.0168.0114-.0264.0282-.0247a.0704.0704 0 0 0 .0318-.004c.0186-.0073.03-.008.03-.002zm.28324.0015c.0009 0 .0024.002.0048.0057a.0404.0404 0 0 1 .006.0139c0 .0031-.0024.0031-.006.0012-.0031-.0017-.006-.0084-.006-.0139 0-.0045.0004-.0067.0013-.0069zm-10.71272.011c.0058-.0021.0132.0044.0258.0182.009.0103.0096.0127.0024.0127-.0048 0-.012.0101-.0162.0227-.0053.0169-.0126.0253-.0258.0301-.0156.0053-.0174.0053-.0144-.0029a.41075.4107 0 0 0 .0133-.0475c.0053-.0204.0092-.031.015-.0332zm-2.14607.0302.0102.0126a.0485.0485 0 0 1 .0108.0245c0 .0096-.0048.0113-.0276.0113-.0288 0-.0288 0-.006-.0317zm-.09641.001a.0533.0533 0 0 1 .0268.005c.0066.0044.0006.0097-.0222.0211a.18902.189 0 0 1-.0373.0156c-.0101 0-.0065-.0288.005-.0354a.0607.0607 0 0 1 .0277-.0063zm2.17587.0027a.0495.0495 0 0 1-.0072.0149c-.006.0096-.0054.0144.006.03.0168.0228.0053.024-.018.0019l-.0168-.0161v.022c0 .012-.0018.0224-.0042.0224a.33334.3333 0 0 1-.04321-.0254c-.0438-.0286-.0486-.0233.0354-.0425.04801-.0107.04801-.0107.04801-.0072zm12.45554.0149c.0126 0 .0149.0029.0149.0187 0 .018.0007.0186.0228.0144.0403-.0067.0936-.0055.11591.0029.0168.006.0293.006.06001.0005a.51616.5161 0 0 1 .06721-.0067h.0282v.024c0 .0276-.0013.0276-.0498.015-.04742-.012-.08602-.0114-.12723.003a.25433.2543 0 0 1-.0696.012c-.0307 0-.036-.0017-.04752-.0168-.0127-.0163-.03-.0516-.03-.0619 0-.0031.0067-.0053.015-.0053zm-5.18934.024c.0031 0 .0077.004.0096.0096.0024.006.0007.0084-.0036.0072-.0091-.0031-.0137-.0168-.006-.0168zm3.34511.0004c.0009-.0001.0024.0017.0048.0057a.0393.0393 0 0 1 .006.0137c0 .0031-.0024.0031-.006.0013-.0031-.002-.006-.0085-.006-.0138 0-.0045.0002-.0068.0013-.007zm-10.19866.012c-.0021 0-.0041.0013-.0064.0039-.0066.0065-.0048.0347.003.0427.0102.01.0282.0088.0324-.002.0018-.0048-.0024-.0168-.0096-.027-.0091-.0124-.0144-.018-.0192-.0177z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/publons.svg b/assets/lib/simple-icons/icons/publons.svg
index 90e9ef6e..4d950e3a 100644
--- a/assets/lib/simple-icons/icons/publons.svg
+++ b/assets/lib/simple-icons/icons/publons.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Publons icon</title><path d="M0 0v24h24V0zm10.34 5.1c.083.014.114.096.156.158.054.354.1.71.154 1.065.157-.162.31-.328.49-.464.867-.666 2.05-.94 3.11-.63.72.21 1.315.72 1.756 1.316.187.263.348.547.45.855.198.582.225 1.206.198 1.815-.053 1.12-.433 2.244-1.169 3.103a4.029 4.029 0 01-2.616 1.41 4.418 4.418 0 01-2.188-.317c.019 1.01.032 2.018.038 3.028.021.465-.021.938.087 1.396.031.14.123.292.28.308.302.036.608.013.912.02.057 0 .13.037.126.101.004.186.009.373-.004.56-.046.092-.17.07-.255.072a44.358 44.358 0 00-4.437 0l-.07-.056c-.004-.22-.063-.467.034-.671.3-.035.606.02.904-.032.191-.048.268-.26.295-.434.04-.32.027-.642.042-.963V8.348c0-.156.006-.31-.008-.465a.888.888 0 00-.34-.656c-.203-.158-.438-.265-.662-.388-.082-.052-.181-.097-.229-.187a.985.985 0 01.008-.337c.056-.066.144-.086.219-.122.73-.315 1.456-.636 2.185-.952.17-.068.346-.144.533-.144zm1.99 1.146c-.053 0-.104 0-.156.013a2.12 2.12 0 00-1.493.86c.005 1.44 0 2.88.003 4.32.005.327.073.676.302.924.524.512 1.302.692 2.014.593.577-.096 1.037-.538 1.279-1.054.344-.736.395-1.571.335-2.371-.053-.655-.181-1.312-.449-1.915-.184-.407-.442-.793-.811-1.054a1.717 1.717 0 00-1.024-.313z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Publons</title><path d="M0 0v24h24V0zm10.34 5.1c.083.014.114.096.156.158.054.354.1.71.154 1.065.157-.162.31-.328.49-.464.867-.666 2.05-.94 3.11-.63.72.21 1.315.72 1.756 1.316.187.263.348.547.45.855.198.582.225 1.206.198 1.815-.053 1.12-.433 2.244-1.169 3.103a4.029 4.029 0 01-2.616 1.41 4.418 4.418 0 01-2.188-.317c.019 1.01.032 2.018.038 3.028.021.465-.021.938.087 1.396.031.14.123.292.28.308.302.036.608.013.912.02.057 0 .13.037.126.101.004.186.009.373-.004.56-.046.092-.17.07-.255.072a44.358 44.358 0 00-4.437 0l-.07-.056c-.004-.22-.063-.467.034-.671.3-.035.606.02.904-.032.191-.048.268-.26.295-.434.04-.32.027-.642.042-.963V8.348c0-.156.006-.31-.008-.465a.888.888 0 00-.34-.656c-.203-.158-.438-.265-.662-.388-.082-.052-.181-.097-.229-.187a.985.985 0 01.008-.337c.056-.066.144-.086.219-.122.73-.315 1.456-.636 2.185-.952.17-.068.346-.144.533-.144zm1.99 1.146c-.053 0-.104 0-.156.013a2.12 2.12 0 00-1.493.86c.005 1.44 0 2.88.003 4.32.005.327.073.676.302.924.524.512 1.302.692 2.014.593.577-.096 1.037-.538 1.279-1.054.344-.736.395-1.571.335-2.371-.053-.655-.181-1.312-.449-1.915-.184-.407-.442-.793-.811-1.054a1.717 1.717 0 00-1.024-.313z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/pubmed.svg b/assets/lib/simple-icons/icons/pubmed.svg
new file mode 100644
index 00000000..54c1295a
--- /dev/null
+++ b/assets/lib/simple-icons/icons/pubmed.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>PubMed</title><path d="M8.23 7.982l.006-1.005C7.846 1.417 5.096 0 5.096 0l.048 2.291C3.73 1.056 2.6 1.444 2.6 1.444l.118 15.307s4.218-1.796 5.428 5.505C10.238 13.535 21.401 24 21.401 24V9S10.52-.18 8.231 7.982zm9.79 9.941l-1.046-5.232-1.904 4.507h-.96l-1.72-4.301-1.046 5.04H9.321l2.093-9.39h.802l2.491 5.543 2.508-5.557h.869l2.075 9.39h-2.138z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/pug.svg b/assets/lib/simple-icons/icons/pug.svg
new file mode 100644
index 00000000..3e041c52
--- /dev/null
+++ b/assets/lib/simple-icons/icons/pug.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Pug</title><path d="M12.0938 4.6358c-2.0663 0-3.6817.204-4.9221.5704a6.4511 6.4511 0 0 0 .0918-.084c.0374-.0375-.0507-.0625-.2285-.0684-.5335-.0175-1.8672.1436-2.9904.7051-1.273.599-4.118 3.7446-4.0432 3.9318.075.1872 1.4594 1.3458 1.8712 1.795.2621.2995 1.0485 2.9592 1.7599 2.51.189-.131.2656-.651.33-1.2931.0582.4975.1155 1.013.1934 1.4805.1123.7488 1.087 1.3474 1.1993 2.0587.1391 1.0138.7614 1.7234 1.9805 2.174.4847.6681 1.2382.3299 1.801.6347.8984.4867 1.9091.2617 2.92.2617 1.0108 0 1.984.186 2.92-.3007.576-.2995 1.32.0311 1.8087-.5802 1.2254-.4494 1.8319-1.1633 1.9727-2.1895.1123-.7113 1.0479-1.3099 1.1602-2.0587.0633-.3799.1102-.802.1582-1.2032.0568.4994.13.9042.291 1.0157.674.4493 1.4978-2.2104 1.7599-2.5099.4118-.4492 1.7963-1.6078 1.8712-1.795.0748-.1872-2.8074-3.3327-4.0803-3.9318-1.1231-.5615-2.4568-.7226-2.9903-.705-.167.0054-.2454.0287-.2247.0624-1.1748-.308-2.6728-.4805-4.6095-.4805zm.0293.5c2.2035 0 3.8486.2253 5.01.6153.1335.0449.2387.098.3593.1465.6901.715 1.6233 1.831 2.0138 3.1173.0246.081.0405.1658.0625.248.0003.0013-.0003.0028 0 .004v.0039c.0453.77.3158 1.4169.2305 1.9903-.1536.9982-.2285 1.9726-.373 2.84l-.002.0039v.0039c-.0289.1922-.218.4762-.4786.8067-.2606.3305-.5955.7024-.6817 1.248v.006l-.0019.0038c-.1006.733-.4207 1.1997-1.17 1.5821.1252-.4447.2051-1.055.2051-1.963.0374-1.1231.0766-1.5722-.8594-2.6954-.7184-.9236-1.704-1.5746-2.793-1.8985-.1111-.3899-.7217-.836-1.551-.836-.8285 0-1.4147.422-1.5352.8204-1.1098.3182-2.116.9759-2.8458 1.9141-.936 1.1232-.8594 1.6097-.8594 2.6955 0 .9037.0795 1.5135.2031 1.961-.7697-.385-1.1078-.857-1.207-1.5802v-.0097c-.0875-.5541-.4371-.9235-.7071-1.254-.27-.3305-.4626-.6166-.4903-.8008l-.002-.004v-.0038c-.1444-.8669-.2196-1.8406-.373-2.838v-.002c-.0853-.5734.1833-1.2203.2285-1.9903v.0156c.0131-.1437.0173-.241.0254-.371.3604-1.1587 1.1531-2.1726 1.8048-2.8752a6.4135 6.4135 0 0 1 .7246-.289c1.1921-.3916 2.8593-.6153 5.0628-.6153zm-5.2092 3.805a1.6473 1.6473 0 0 0-1.6349 1.6484 1.6473 1.6473 0 0 0 1.6485 1.6466 1.6473 1.6473 0 0 0 .4415-.0606c.3487-.3747.7177-.7223 1.1113-1.041a1.6473 1.6473 0 0 0 .0938-.545 1.6473 1.6473 0 0 0-1.6466-1.6485 1.6473 1.6473 0 0 0-.0136 0zm10.2973 0a1.6473 1.6473 0 0 0-1.6368 1.6484 1.6473 1.6473 0 0 0 .1504.6836c.3125.2642.611.547.8945.8477a1.6473 1.6473 0 0 0 .6036.1153 1.6473 1.6473 0 0 0 1.6465-1.6466 1.6473 1.6473 0 0 0-1.6465-1.6485 1.6473 1.6473 0 0 0-.0117 0zm-9.8715.4863a.4118.4118 0 0 1 .4101.412.4118.4118 0 0 1-.4101.4122.4118.4118 0 0 1-.4122-.4121.4118.4118 0 0 1 .4122-.4121zm9.471 0a.4118.4118 0 0 1 .4122.412.4118.4118 0 0 1-.4121.4122.4118.4118 0 0 1-.4122-.4121.4118.4118 0 0 1 .4122-.4121zm-5.1095 1.4863a.1498.2995 17.23 0 1 .0293.004.1498.2995 17.23 0 1 .0547.33.1498.2995 17.23 0 1-.2325.2422.1498.2995 17.23 0 1-.0527-.33.1498.2995 17.23 0 1 .2012-.2462zm.6719.0215a.2995.1498 75.54 0 1 .205.254.2995.1498 75.54 0 1-.0703.328.2995.1498 75.54 0 1-.2207-.2519.2995.1498 75.54 0 1 .0703-.3281.2995.1498 75.54 0 1 .0157-.002zm-.3164.4766s.0358.226.1855.3008c.1498.0749.8614-.1504.8614-.1504-.337.262-.9727.263-.9727.338v.373c0 .4079.0263 1.4614-.0313 1.6856.8238.0045 2.09 1.1255 2.09 2.508v.0741c-.0375-1.3478-1.6091-2.4337-2.0958-2.4337-.4867 0-2.0603 1.0485-2.0978 2.4337v-.0742c0-1.3626 1.2326-2.47 2.0567-2.506-.0704-.5517-.0722-1.1372-.0722-1.6875v-.373c-.2145-.0954-.4322-.1714-.6563-.2364.1846.0326.371.0488.545.0488.1497-.0749.1875-.3008.1875-.3008zm-3.0412 1.3477a.1498.1498 0 0 1 .0078 0 .1498.1498 0 0 1 .1504.1504.1498.1498 0 0 1-.1504.1504.1498.1498 0 0 1-.1504-.1504.1498.1498 0 0 1 .1426-.1504zm1.1231 0a.1498.1498 0 0 1 .0078 0 .1498.1498 0 0 1 .1504.1504.1498.1498 0 0 1-.1504.1504.1498.1498 0 0 1-.1504-.1504.1498.1498 0 0 1 .1426-.1504zm3.67 0a.1498.1498 0 0 1 .0079 0 .1498.1498 0 0 1 .1504.1504.1498.1498 0 0 1-.1504.1504.1498.1498 0 0 1-.1504-.1504.1498.1498 0 0 1 .1426-.1504zm1.1232 0a.1498.1498 0 0 1 .0078 0 .1498.1498 0 0 1 .1504.1504.1498.1498 0 0 1-.1504.1504.1498.1498 0 0 1-.1504-.1504.1498.1498 0 0 1 .1426-.1504zm-5.6526.8985a.1498.1498 0 0 1 .0078 0 .1498.1498 0 0 1 .1484.1504.1498.1498 0 0 1-.1484.1504.1498.1498 0 0 1-.1504-.1504.1498.1498 0 0 1 .1426-.1504zm5.3908 0a.1498.1498 0 0 1 .006 0 .1498.1498 0 0 1 .1503.1504.1498.1498 0 0 1-.1504.1504.1498.1498 0 0 1-.1484-.1504.1498.1498 0 0 1 .1425-.1504Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/pulumi.svg b/assets/lib/simple-icons/icons/pulumi.svg
new file mode 100644
index 00000000..71f119bf
--- /dev/null
+++ b/assets/lib/simple-icons/icons/pulumi.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Pulumi</title><path d="M11.997 0C10.226 0 8.79.83 8.79 1.856c0 1.025 1.436 1.856 3.207 1.856 1.772 0 3.208-.831 3.208-1.856C15.205.83 13.77 0 11.997 0zM5.95 3.488c-1.772 0-3.208.83-3.208 1.856C2.742 6.369 4.178 7.2 5.95 7.2c1.771 0 3.207-.831 3.207-1.856 0-1.025-1.436-1.856-3.207-1.856zm12.103 0c-1.772 0-3.208.83-3.208 1.856 0 1.025 1.436 1.856 3.208 1.856 1.771 0 3.207-.831 3.207-1.856 0-1.025-1.436-1.856-3.207-1.856zm-6.056 3.495c-1.771 0-3.207.831-3.207 1.856 0 1.025 1.436 1.856 3.207 1.856 1.772 0 3.208-.83 3.208-1.856 0-1.025-1.436-1.856-3.208-1.856zm-10.127.67a1.157 1.157 0 0 0-.55.151c-.888.513-.89 2.172-.004 3.706.886 1.534 2.324 2.362 3.211 1.85.888-.513.89-2.171.003-3.706-.72-1.246-1.803-2.027-2.66-2zm20.257.004c-.857-.026-1.941.754-2.661 2-.886 1.535-.884 3.194.003 3.707.888.512 2.325-.316 3.211-1.85.886-1.534.885-3.193-.003-3.706a1.157 1.157 0 0 0-.55-.15zm-6.048 3.492c-.857-.026-1.94.754-2.66 2-.886 1.535-.885 3.194.003 3.706.887.513 2.325-.316 3.21-1.85.887-1.534.885-3.193-.003-3.706a1.157 1.157 0 0 0-.55-.15zm-8.16.001a1.157 1.157 0 0 0-.55.151c-.888.513-.89 2.172-.004 3.706.886 1.535 2.324 2.363 3.211 1.85.888-.512.89-2.171.003-3.705-.72-1.247-1.803-2.028-2.66-2.002zm-6.047 3.494a1.157 1.157 0 0 0-.55.151c-.888.513-.89 2.172-.004 3.706.886 1.534 2.324 2.362 3.212 1.85.887-.513.888-2.172.003-3.706-.72-1.246-1.804-2.027-2.661-2.001zm20.258.002c-.857-.026-1.941.755-2.66 2.001-.887 1.535-.885 3.193.003 3.706.887.512 2.325-.316 3.21-1.85.886-1.534.885-3.193-.003-3.706a1.157 1.157 0 0 0-.55-.15zm-6.047 3.492c-.858-.026-1.942.754-2.661 2-.886 1.535-.885 3.194.003 3.706.888.513 2.325-.315 3.21-1.85.887-1.533.885-3.193-.002-3.705a1.157 1.157 0 0 0-.55-.151zm-8.163.003a1.157 1.157 0 0 0-.55.151c-.887.513-.889 2.172-.003 3.706.886 1.534 2.323 2.363 3.211 1.85.888-.512.89-2.171.004-3.706-.72-1.246-1.804-2.027-2.662-2z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/puma.svg b/assets/lib/simple-icons/icons/puma.svg
new file mode 100644
index 00000000..3f9f3ee3
--- /dev/null
+++ b/assets/lib/simple-icons/icons/puma.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Puma</title><path d="M23.845 3.008c-.417-.533-1.146-.106-1.467.08-2.284 1.346-2.621 3.716-3.417 5.077-.626 1.09-1.652 1.89-2.58 1.952-.686.049-1.43-.084-2.168-.405-1.807-.781-2.78-1.792-3.017-1.97-.487-.37-4.23-4.015-7.28-4.164 0 0-.372-.75-.465-.763-.222-.025-.45.451-.616.501-.15.053-.413-.512-.565-.487-.153.02-.302.586-.6.877-.22.213-.486.2-.637.463-.052.096-.034.265-.093.42-.127.32-.551.354-.555.697 0 .381.357.454.669.72.248.212.265.362.554.461.258.088.632-.187.964-.088.277.081.543.14.602.423.054.256 0 .658-.34.613-.112-.015-.598-.174-1.198-.11-.725.077-1.553.309-1.634 1.11-.041.447.514.97 1.055.866.371-.071.196-.506.399-.716.267-.27 1.772.944 3.172.944.593 0 1.031-.15 1.467-.605.04-.029.093-.102.155-.11a.632.632 0 01.195.088c1.131.897 1.984 2.7 6.13 2.721.582.007 1.25.279 1.796.777.48.433.764 1.125 1.037 1.825.418 1.053 1.161 2.069 2.292 3.203.06.068.99.78 1.06.833.012.01.084.167.053.255-.02.69-.123 2.67 1.365 2.753.366.02.275-.231.275-.41-.005-.341-.065-.685.113-1.04.253-.478-.526-.709-.509-1.756.019-.784-.645-.651-.984-1.25-.19-.343-.368-.532-.35-.946.073-2.38-.517-3.948-.805-4.327-.227-.294-.423-.403-.207-.54 1.24-.815 1.525-1.574 1.525-1.574.66-1.541 1.256-2.945 2.075-3.57.166-.12.589-.44.852-.56.763-.362 1.173-.578 1.388-.788.356-.337.635-1.053.294-1.48z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/puppet.svg b/assets/lib/simple-icons/icons/puppet.svg
index 2e9c8164..da6a1415 100644
--- a/assets/lib/simple-icons/icons/puppet.svg
+++ b/assets/lib/simple-icons/icons/puppet.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Puppet icon</title><path d="M8.984 21.611H6.595v-2.388h2.39zM6.595 2.39h2.39v2.388h-2.39zm13.198 6.028h-5.48l.001-.002-2.941-2.941V0H4.207v7.166h5.48l2.938 2.938.002-.001v3.794l-.003-.003-2.94 2.94H4.207V24h7.166v-5.477l2.94-2.94h5.48V8.417"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Puppet</title><path d="M8.984 21.611H6.595v-2.388h2.39zM6.595 2.39h2.39v2.388h-2.39zm13.198 6.028h-5.48l.001-.002-2.941-2.941V0H4.207v7.166h5.48l2.938 2.938.002-.001v3.794l-.003-.003-2.94 2.94H4.207V24h7.166v-5.477l2.94-2.94h5.48V8.417"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/puppeteer.svg b/assets/lib/simple-icons/icons/puppeteer.svg
new file mode 100644
index 00000000..02b1f6cb
--- /dev/null
+++ b/assets/lib/simple-icons/icons/puppeteer.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Puppeteer</title><path d="M17.89 17.86h.397v.174h.028a.466.466 0 0 1 .619-.155l-.11.373a.364.364 0 0 0-.184-.043.288.288 0 0 0-.243.11.471.471 0 0 0-.082.29v.635h-.424zm-.26 1.048a.766.766 0 0 1-.27.28.741.741 0 0 1-.398.101.822.822 0 0 1-.3-.054.752.752 0 0 1-.237-.155.704.704 0 0 1-.214-.529c0-.1.018-.194.056-.282a.719.719 0 0 1 .156-.235.725.725 0 0 1 .529-.22.75.75 0 0 1 .302.056.642.642 0 0 1 .353.384.846.846 0 0 1 .037.402h-1.02c.02.09.063.156.127.198a.387.387 0 0 0 .214.062.345.345 0 0 0 .32-.18zm-.376-.54a.227.227 0 0 0-.03-.074.21.21 0 0 0-.058-.07.264.264 0 0 0-.093-.054.325.325 0 0 0-.43.198zm-1.242.54a.766.766 0 0 1-.27.28.741.741 0 0 1-.397.101.822.822 0 0 1-.3-.054.752.752 0 0 1-.237-.155.704.704 0 0 1-.215-.529c0-.1.019-.194.057-.282a.719.719 0 0 1 .155-.235.725.725 0 0 1 .529-.22c.115 0 .215.018.302.056a.642.642 0 0 1 .353.384.846.846 0 0 1 .037.402h-1.02c.02.09.063.156.127.198a.387.387 0 0 0 .215.062.345.345 0 0 0 .32-.18zm-.376-.54a.227.227 0 0 0-.028-.074.21.21 0 0 0-.06-.07.264.264 0 0 0-.093-.054.325.325 0 0 0-.43.198zm-1.918-.144l-.243-.004.004-.388.25.012-.007-.41.412.004-.016.39.367.02-.012.355-.365.008.013.47c-.012.092.022.145.027.194.08.1.137.068.137.068.02-.008.162-.027.177-.038l.04.388c-.138.082-.377.036-.377.036-.253-.037-.383-.217-.384-.293-.025-.068-.018-.21-.029-.29zm-.412.717c-.037.126-.172.218-.283.285a.772.772 0 0 1-.406.11.944.944 0 0 1-.32-.077c-.09-.038-.165-.113-.233-.18-.068-.065-.093-.142-.131-.23a.822.822 0 0 1-.045-.31c-.015-.194.126-.378.212-.505.28-.238.49-.22.49-.22.387-.075.696.288.718.437.03.086.022.18.022.28-.005.054 0 .05-.031.125h-1.037c.02.09.063.192.104.24.048.06.128.06.207.06.079 0 .163.002.214-.032.053-.034.172-.072.203-.125zm-.37-.558a.41.41 0 0 0-.04-.097c-.014-.026-.05-.046-.076-.066-.024-.023-.071-.037-.109-.05a.31.31 0 0 0-.121-.023.274.274 0 0 0-.168.053c-.057.037-.097.12-.123.19zm-2.34-.372h.028a.388.388 0 0 1 .147-.138.498.498 0 0 1 .254-.06.623.623 0 0 1 .467.207.696.696 0 0 1 .147.232c.036.09.053.19.053.3a.8.8 0 0 1-.053.3.729.729 0 0 1-.147.234.647.647 0 0 1-.467.203.518.518 0 0 1-.254-.056.409.409 0 0 1-.147-.142h-.028l.028.198v.565H10.2V17.86h.396zm.336.198a.34.34 0 0 0-.31.201.37.37 0 0 0-.026.141c0 .053.008.101.025.145a.362.362 0 0 0 .074.107c.032.028.068.05.107.068a.378.378 0 0 0 .257 0 .348.348 0 0 0 .108-.068.304.304 0 0 0 .073-.107.358.358 0 0 0 .028-.145.338.338 0 0 0-.336-.342zm-2.026-.198h.03a.388.388 0 0 1 .146-.138.498.498 0 0 1 .254-.06.623.623 0 0 1 .466.207.696.696 0 0 1 .147.232c.036.09.054.19.054.3a.8.8 0 0 1-.054.3.729.729 0 0 1-.147.234.647.647 0 0 1-.466.203.518.518 0 0 1-.254-.056.409.409 0 0 1-.147-.142h-.029l.03.198v.565H8.51V17.86h.395zm.337.198a.34.34 0 0 0-.31.201.37.37 0 0 0-.027.141c0 .053.01.101.026.145a.362.362 0 0 0 .073.107c.032.028.068.05.108.068a.378.378 0 0 0 .257 0 .348.348 0 0 0 .107-.068.303.303 0 0 0 .074-.107.358.358 0 0 0 .028-.145.338.338 0 0 0-.21-.316.32.32 0 0 0-.126-.026zm-1.433.86h-.028a.47.47 0 0 1-.424.22c-.174 0-.303-.055-.387-.167a.703.703 0 0 1-.128-.438v-.825h.424v.777c0 .076.018.138.054.187.036.047.091.07.167.07a.245.245 0 0 0 .217-.11.497.497 0 0 0 .077-.288v-.636h.424v1.385H7.81zm-2.594.175V17.22h.724a.82.82 0 0 1 .285.048.677.677 0 0 1 .23.136.589.589 0 0 1 .15.206.67.67 0 0 1 .053.27.657.657 0 0 1-.054.267.617.617 0 0 1-.379.342.818.818 0 0 1-.285.048h-.283v.707zm.738-1.125c.092 0 .16-.023.206-.068a.234.234 0 0 0 .068-.172.234.234 0 0 0-.068-.173c-.045-.045-.114-.068-.206-.068h-.297v.48zM18.04 2.758l-.594.05.236 2.932.626.363zm-12.016.01L5.728 6.01l.624-.3.266-2.89zm-.49 5.183l-.044.557-1.247 3.137c-.216.224-.308.514-.307.825L3.93 22.84c0 .669.49 1.16 1.158 1.16H18.82c.67 0 1.25-.444 1.25-1.11V12.485c0-.306-.1-.56-.286-.774L18.44 7.748l-.006-.068-.575.257.267 3.33H5.846l.237-2.615.226-.588L6.143 8l.002-.03zm13.112 2.34l.323.987c-.088-.014-.158-.006-.245-.01zm-13.316.232l-.084.744c-.058-.005-.12.005-.172.007zm-.18 1.134l13.67.008c.47 0 .853.344.853.815v.796H4.313v-.796c0-.47.364-.823.837-.823zm.135.553a.27.27 0 0 0-.272.27c0 .36.542.36.542 0a.27.27 0 0 0-.27-.27zm.92 0c-.36 0-.36.54 0 .54s.362-.54.002-.54zm.896 0c-.39-.034-.39.572 0 .538.33-.028.33-.51 0-.538zm-2.788 1.424h15.36v9.153c0 .595-.38.846-.853.845l-13.668-.004a.828.828 0 0 1-.84-.841zm1.883 4.42c.07-.117.07-.11.068-.186-.008-.073-.004-.076-.053-.135-.054-.054-.123-.138-.2-.134h-.387l-.02.55h.407c.122-.002.16-.084.185-.094zm-.185-.83a.58.58 0 0 1 .442.171c.11.117.164.273.164.465a.65.65 0 0 1-.16.462c-.117.12-.263.21-.43.203l-.4.008-.004.774-.412-.013-.005-2.088zm1.793 1.26l-.012-.624.366-.004.004 1.435-.36.004v-.122a.582.582 0 0 1-.432.15.557.557 0 0 1-.413-.156c-.103-.11-.13-.31-.123-.46l-.004-.847h.372l-.008.77a.328.328 0 0 0 .075.23.25.25 0 0 0 .198.09c.225 0 .336-.156.336-.468zm1.805.077a.36.36 0 0 0-.11-.272c-.07-.073-.115-.118-.218-.115-.1 0-.186.018-.266.094a.388.388 0 0 0-.116.293c0 .12.038.217.117.29.07.073.168.114.27.114.102.003.166-.053.238-.126.087-.094.06-.21.085-.278zm-.262-.76c.176 0 .333.11.466.245a.71.71 0 0 1 .197.515.7.7 0 0 1-.197.512c-.093.16-.31.255-.486.254-.16.005-.36-.066-.428-.197l.004.76-.4.006-.02-2.04.416-.02v.157c.126-.103.285-.2.448-.193zm2.002.764c-.014-.16-.044-.203-.117-.283-.072-.074-.117-.087-.22-.085-.1 0-.178-.005-.257.07a.388.388 0 0 0-.116.294c0 .12.038.217.116.29.07.073.168.114.27.114.102.003.154-.065.226-.137.073-.08.086-.175.098-.263zm-.318-.75c.177 0 .389.096.522.23a.712.712 0 0 1 .198.516.7.7 0 0 1-.198.512c-.105.15-.344.255-.522.254a.475.475 0 0 1-.392-.197v.75l-.405.01-.023-2.034h.428v.137c.126-.103.23-.183.392-.177zm1.268.576l.637-.008c-.017-.074-.063-.12-.124-.166a.357.357 0 0 0-.406.003c-.085.068-.054.056-.107.17zm.313-.575c.179-.003.425.078.552.203.133.13.157.308.166.512l-.031.125h-1.03c.02.095.044.186.104.244.059.056.153.07.234.07a.5.5 0 0 0 .383-.17l.316.141c-.046.14-.187.223-.304.296a.757.757 0 0 1-.408.094c-.184.003-.378-.116-.507-.247a.718.718 0 0 1-.2-.523c0-.21.094-.382.23-.518.13-.132.31-.232.495-.227zm1.673 1.127c.08-.003.11.002.178-.038l.04.388c-.107.063-.135.038-.26.042a.633.633 0 0 1-.416-.155c-.094-.09-.097-.26-.097-.443l-.012-.513-.243-.004.004-.388.25.012-.007-.41.412.004-.016.39.367.02-.012.355-.365.008.003.507c.002.155.042.225.175.225zm.75-.54h.654a.32.32 0 0 0-.12-.186.357.357 0 0 0-.407.003.3.3 0 0 0-.127.184zm.338-.587c.185 0 .368.092.5.22.133.13.173.295.183.5v.12h-1.03a.4.4 0 0 0 .12.228.31.31 0 0 0 .218.086c.155 0 .297-.06.367-.18l.3.15c-.05.13-.12.19-.238.262a.958.958 0 0 1-.452.125.712.712 0 0 1-.502-.224.77.77 0 0 1-.208-.542c0-.21.106-.382.24-.518.132-.132.316-.232.5-.227zm1.27.587h.654a.32.32 0 0 0-.12-.186.357.357 0 0 0-.407.003.3.3 0 0 0-.127.184zm.337-.587a.74.74 0 0 1 .5.22c.134.13.174.295.184.5v.12h-1.03a.4.4 0 0 0 .12.228.31.31 0 0 0 .217.086c.154 0 .297-.06.368-.18l.3.15c-.05.13-.12.19-.238.262a.957.957 0 0 1-.454.125.713.713 0 0 1-.5-.224.77.77 0 0 1-.208-.542c0-.21.106-.382.24-.518.13-.132.315-.232.5-.227zm1.938.04l-.067.364-.18-.023c-.322 0-.36.207-.36.595v.49l-.393.005.008-1.43h.365l-.004.22c.145-.17.215-.286.63-.22zM17.535 7.91l.02-.366 1.317-.687.007.396zM5.04 6.84l1.35.68-.008.393-1.314-.65zm7.21-1.748l4.839 2.448v.392l-4.851-2.46zM6.874 7.51l4.894-2.42-.007.374-4.893 2.444zm3.467-3.974L5.418 1.099 6.64.494l5.352 2.744L17.335.466l1.257.65-4.926 2.478c-.196.098-.13.388.067.486l4.838 2.42-1.22.622-5.353-2.697L6.62 7.129l-1.273-.634 4.998-2.483a.266.266 0 0 0-.004-.477zM5.059 1.888l.007-.377 4.607 2.276-.348.2zm9.648 2.077l-.41-.184 4.596-2.303-.028.412zm.422.306l4.124-2.07a.124.124 0 0 0 .07-.11v-.98c0-.046-.008-.136-.05-.157l-1.94-.94a.124.124 0 0 0-.113 0l-5.167 2.623a.123.123 0 0 1-.11 0L6.679.015a.124.124 0 0 0-.11 0L4.616.938c-.04.02-.02.11-.02.157v.995c0 .047.026.09.07.11l4.14 2.047L4.69 6.239c-.04.02-.108.062-.11.108l.017 1.034a.123.123 0 0 0 .068.113l1.933.986c.034.018.122.03.157.014l5.186-2.602a.124.124 0 0 1 .11 0l5.12 2.603a.124.124 0 0 0 .11 0l1.972-.954c.042-.02.103-.05.104-.096l-.007-1.033c0-.047-.047-.15-.09-.17z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/purescript.svg b/assets/lib/simple-icons/icons/purescript.svg
index 28aba902..b398ab69 100644
--- a/assets/lib/simple-icons/icons/purescript.svg
+++ b/assets/lib/simple-icons/icons/purescript.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>PureScript icon</title><path d="M19.16 4.6l-1.24 1.24 3.97 3.97-3.97 3.97 1.24 1.24 4.58-4.6a.87.87 0 000-1.23L19.16 4.6zM6.95 6.74l1.87 1.75h8.23l-1.87-1.75H6.95zm-2.1 2.24l-4.6 4.6a.87.87 0 000 1.23l4.6 4.59 1.23-1.24-3.97-3.97 3.97-3.97-1.24-1.24zm3.97 2.14l-1.87 1.76h8.23l1.87-1.76H8.82zm-1.87 4.39l1.87 1.75h8.23l-1.87-1.75H6.95z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>PureScript</title><path d="M19.166 4.6l-1.24 1.24 3.97 3.97-3.97 3.97 1.24 1.24 4.58-4.6a.87.87 0 0 0 0-1.23zM6.955 6.74l1.87 1.75h8.23l-1.87-1.75zm-2.1 2.24l-4.6 4.6a.87.87 0 0 0 0 1.23l4.6 4.59 1.23-1.24-3.97-3.97 3.97-3.97-1.24-1.24zm3.97 2.14l-1.87 1.76h8.23l1.87-1.76zm-1.87 4.39l1.87 1.75h8.23l-1.87-1.75z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/purgecss.svg b/assets/lib/simple-icons/icons/purgecss.svg
new file mode 100644
index 00000000..e3cabb05
--- /dev/null
+++ b/assets/lib/simple-icons/icons/purgecss.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>PurgeCSS</title><path d="M12 0C5.373 0 0 5.373 0 12a12 12 0 0 0 9.764 11.791c.048-1.003.052-2.55.047-9.967 0-5.484.003-9.995.013-10.023.028-.08 2.26-.042 2.678.047a4.903 4.903 0 0 1 3.078 2.08 4.834 4.834 0 0 1-.7 6.164c-.924.878-2.041 1.334-3.29 1.334-.225 0-.29.012-.305.068-.01.043-.02 2.418-.014 5.287v5.196A12 12 0 0 0 12 24c6.627 0 12-5.373 12-12S18.627 0 12 0zm-.691 4.31c-.013.004-.017.023-.02.063-.018.245-.023 8.358-.004 8.39.01.02.075-.014.145-.07 2.673-1.952 3.467-2.792 3.738-3.939.14-.746-.174-1.466-1.01-2.3-.699-.72-1.692-1.358-2.779-2.099-.038-.033-.058-.047-.07-.044z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/purism.svg b/assets/lib/simple-icons/icons/purism.svg
new file mode 100644
index 00000000..4ba59595
--- /dev/null
+++ b/assets/lib/simple-icons/icons/purism.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Purism</title><path d="M24 19.588H0V4.412h24zM2.824 16.765h18.352v-9.53H2.824Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/pusher.svg b/assets/lib/simple-icons/icons/pusher.svg
new file mode 100644
index 00000000..2c432a85
--- /dev/null
+++ b/assets/lib/simple-icons/icons/pusher.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Pusher</title><path d="M12 23.966v-6.0166a.0348.0348 0 01.0182-.031l7.7319-4.4645a.0348.0348 0 00.0181-.031v-1.711a.0356.0356 0 00-.0537-.031l-7.6608 4.423a.0356.0356 0 01-.0537-.031v-1.7117a.0356.0356 0 01.0181-.031l7.732-4.4645a.037.037 0 00.0181-.031v-1.711a.0363.0363 0 00-.0537-.031l-7.6608 4.4229a.0356.0356 0 01-.0537-.031v-1.711a.0348.0348 0 01.0181-.031l7.732-4.4622a.0356.0356 0 00.0181-.031V4.515a.0757.0757 0 00-.0356-.062L12.0356.0096a.0704.0704 0 00-.0712 0L10.5002.855a.0356.0356 0 000 .062L18.161 5.34a.0363.0363 0 010 .062l-1.4642.8452a.0757.0757 0 01-.0719 0L8.9286 1.8038a.0757.0757 0 00-.0757 0l-1.4597.8445a.0356.0356 0 000 .062l7.6593 4.4236a.0356.0356 0 010 .0621l-1.4634.8452a.0757.0757 0 01-.0757 0l-7.6926-4.444a.0757.0757 0 00-.0756 0l-1.5134.8762v15.0492a.0348.0348 0 00.0181.031l1.4816.8558a.0356.0356 0 00.0538-.031V5.433a.0356.0356 0 01.0537-.031l1.4824.8558a.0356.0356 0 01.0174.031v15.028a.0356.0356 0 00.0181.031l1.4816.8559a.0363.0363 0 00.0545-.0318V7.227a.0356.0356 0 01.0537-.031l1.4817.855a.0356.0356 0 01.0181.0311v15.0288a.037.037 0 00.0174.031l1.4862.855A.0356.0356 0 0012 23.966z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/pwa.svg b/assets/lib/simple-icons/icons/pwa.svg
new file mode 100644
index 00000000..181cba25
--- /dev/null
+++ b/assets/lib/simple-icons/icons/pwa.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>PWA</title><path d="M20.5967 7.482L24 16.518h-2.5098l-.5816-1.6184h-3.2452l.6933-1.7532h2.0019l-.95-2.6597 1.1881-3.0047zm-8.111 0l1.7722 5.8393L16.75 7.482h2.4154l-3.6433 9.036h-2.3833l-1.6395-5.2366-1.7196 5.2366h-2.377l-1.233-2.1161 1.2144-3.7415 1.342 2.6609 1.9029-5.8393h1.8566zm-8.7453 0c1.0635 0 1.8713.3055 2.4234.9166a2.647 2.647 0 01.2806.3684l-1.0753 3.3128-.3847 1.1854c-.352.1006-.7533.1509-1.204.1509H2.2928v3.102H0V7.482zm-.5816 1.7532h-.866v2.4276h.8597c.5577 0 .9406-.1194 1.1485-.3582.1896-.215.2845-.5058.2845-.8724 0-.364-.1079-.6544-.3235-.8714-.2157-.217-.5834-.3256-1.1032-.3256z"/></svg>
diff --git a/assets/lib/simple-icons/icons/pycharm.svg b/assets/lib/simple-icons/icons/pycharm.svg
new file mode 100644
index 00000000..ff564712
--- /dev/null
+++ b/assets/lib/simple-icons/icons/pycharm.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>PyCharm</title><path d="M7.833 6.666v-.055c0-1-.667-1.5-1.778-1.5H4.389v3.055h1.723c1.111 0 1.721-.666 1.721-1.5zM0 0v24h24V0H0zm2.223 3.167h4c2.389 0 3.833 1.389 3.833 3.445v.055c0 2.278-1.778 3.5-4.001 3.5H4.389v2.945H2.223V3.167zM11.277 21h-9v-1.5h9V21zm4.779-7.777c-2.944.055-5.111-2.223-5.111-5.057C10.944 5.333 13.056 3 16.111 3c1.889 0 3 .611 3.944 1.556l-1.389 1.61c-.778-.722-1.556-1.111-2.556-1.111-1.658 0-2.873 1.375-2.887 3.084.014 1.709 1.174 3.083 2.887 3.083 1.111 0 1.833-.445 2.61-1.167l1.39 1.389c-.999 1.112-2.166 1.779-4.054 1.779z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/pypi.svg b/assets/lib/simple-icons/icons/pypi.svg
index e519fa5d..3efd4b12 100644
--- a/assets/lib/simple-icons/icons/pypi.svg
+++ b/assets/lib/simple-icons/icons/pypi.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" role="img"><title>PyPI icon</title><path d="M23.922 13.58v3.912L20.55 18.72l-.078.055.052.037 3.45-1.256.026-.036v-3.997l-.053-.036-.025.092z M23.621 5.618l-3.04 1.107v3.912l3.339-1.215V5.509zM23.92 13.457V9.544l-3.336 1.215v3.913zM20.47 14.71V10.8L17.17 12v3.913zM17.034 19.996v-3.912l-3.313 1.206v3.912zM17.17 16.057v3.868l3.314-1.206V14.85l-3.314 1.206zm2.093 1.882c-.367.134-.663-.074-.663-.463s.296-.814.663-.947c.365-.133.662.075.662.464s-.297.814-.662.946z M13.225 9.315l.365-.132-3.285-1.197-3.323 1.21.102.037 3.184 1.16zM20.507 10.664V6.751L17.17 7.965v3.913zM17.058 11.918V8.005l-3.302 1.202v3.912zM13.643 9.246l-3.336 1.215v3.913l3.336-1.215zM6.907 13.165l3.322 1.209v-3.913L6.907 9.252z M10.34 7.873l3.281 1.193V5.198l-3.28-1.193zM20.507 2.715L17.19 3.922v3.913l3.317-1.207zM16.95 3.903L13.724 2.73l-3.269 1.19 3.225 1.174zM15.365 4.606l-1.624.592v3.868l3.317-1.207V3.991l-1.693.615zm-.391 2.778c-.367.134-.662-.074-.662-.464s.295-.813.662-.946c.366-.133.663.074.663.464s-.297.813-.663.946z M10.229 18.41v-3.914l-3.322-1.209V17.2zM13.678 17.182v-3.913l-3.371 1.227v3.913z M13.756 17.154l3.3-1.2V12.04l-3.3 1.2zM13.678 21.217l-3.371 1.227v-3.912h-.078v3.912l-3.322-1.209v-3.913l-.053-.058-.025-.06-3.336-1.21v-3.948l.034.013 3.287 1.196.015-.078-3.261-1.187 3.26-1.187v-.109L3.876 9.62l-.307-.112 3.26-1.188v.877l.079-.055V6.769l3.257 1.185.058-.061L7.084 6.75l-.102-.037 3.24-1.179v-.083L6.854 6.677v.018l-.025.018v1.523L3.44 9.47v.02l-.025.017v4.007l-3.39 1.233v.019L0 14.784v3.995l.025.037 3.4 1.237.008-.006.007.01 3.4 1.238.008-.006.006.01 3.4 1.237.014-.009.012.01 3.45-1.256.026-.037-.078-.027zM3.493 9.563l3.257 1.185-3.257 1.187V9.562zM3.4 19.96L.078 18.752v-3.913l2.361.86.96.349v3.913zm.015-3.99L.335 14.85l-.182-.066 3.262-1.187v2.374zm3.399 5.231l-3.321-1.209v-3.912l3.321 1.209v3.912zM23.791 5.434l-3.21-1.17v2.338zM20.387 2.643l-3.24-1.18-3.27 1.19 3.247 1.182z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>PyPI</title><path d="M23.922 13.58v3.912L20.55 18.72l-.078.055.052.037 3.45-1.256.026-.036v-3.997l-.053-.036-.025.092z M23.621 5.618l-3.04 1.107v3.912l3.339-1.215V5.509zM23.92 13.457V9.544l-3.336 1.215v3.913zM20.47 14.71V10.8L17.17 12v3.913zM17.034 19.996v-3.912l-3.313 1.206v3.912zM17.17 16.057v3.868l3.314-1.206V14.85l-3.314 1.206zm2.093 1.882c-.367.134-.663-.074-.663-.463s.296-.814.663-.947c.365-.133.662.075.662.464s-.297.814-.662.946z M13.225 9.315l.365-.132-3.285-1.197-3.323 1.21.102.037 3.184 1.16zM20.507 10.664V6.751L17.17 7.965v3.913zM17.058 11.918V8.005l-3.302 1.202v3.912zM13.643 9.246l-3.336 1.215v3.913l3.336-1.215zM6.907 13.165l3.322 1.209v-3.913L6.907 9.252z M10.34 7.873l3.281 1.193V5.198l-3.28-1.193zM20.507 2.715L17.19 3.922v3.913l3.317-1.207zM16.95 3.903L13.724 2.73l-3.269 1.19 3.225 1.174zM15.365 4.606l-1.624.592v3.868l3.317-1.207V3.991l-1.693.615zm-.391 2.778c-.367.134-.662-.074-.662-.464s.295-.813.662-.946c.366-.133.663.074.663.464s-.297.813-.663.946z M10.229 18.41v-3.914l-3.322-1.209V17.2zM13.678 17.182v-3.913l-3.371 1.227v3.913z M13.756 17.154l3.3-1.2V12.04l-3.3 1.2zM13.678 21.217l-3.371 1.227v-3.912h-.078v3.912l-3.322-1.209v-3.913l-.053-.058-.025-.06-3.336-1.21v-3.948l.034.013 3.287 1.196.015-.078-3.261-1.187 3.26-1.187v-.109L3.876 9.62l-.307-.112 3.26-1.188v.877l.079-.055V6.769l3.257 1.185.058-.061L7.084 6.75l-.102-.037 3.24-1.179v-.083L6.854 6.677v.018l-.025.018v1.523L3.44 9.47v.02l-.025.017v4.007l-3.39 1.233v.019L0 14.784v3.995l.025.037 3.4 1.237.008-.006.007.01 3.4 1.238.008-.006.006.01 3.4 1.237.014-.009.012.01 3.45-1.256.026-.037-.078-.027zM3.493 9.563l3.257 1.185-3.257 1.187V9.562zM3.4 19.96L.078 18.752v-3.913l2.361.86.96.349v3.913zm.015-3.99L.335 14.85l-.182-.066 3.262-1.187v2.374zm3.399 5.231l-3.321-1.209v-3.912l3.321 1.209v3.912zM23.791 5.434l-3.21-1.17v2.338zM20.387 2.643l-3.24-1.18-3.27 1.19 3.247 1.182z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/pypy.svg b/assets/lib/simple-icons/icons/pypy.svg
new file mode 100644
index 00000000..c7747e73
--- /dev/null
+++ b/assets/lib/simple-icons/icons/pypy.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>PyPy</title><path d="M12.947 0c-.099 0-.2.005-.3.016a2.706 2.706 0 0 0-1.27.447c-.164.009-.324.038-.488.053-1.78.279-3.037 1.197-3.92 2.286-1.702 2.515-1.711 6.092-1.481 8.471a6.55 6.55 0 0 1 1.86-3.765c.069-.069.15-.136.22-.217l.034-.034c.09-.078.18-.154.272-.228a8.87 8.87 0 0 1 .416-.309c.028-.014.056-.027.084-.055l.436-.273.03-.016.068-.035a4.99 4.99 0 0 1 .478-.225c.029-.014.07-.029.098-.043.127-.056.268-.098.395-.14-.002-.003-.006-.004-.008-.006l.022-.008a2.162 2.162 0 0 0-.268-.238 1.827 1.827 0 0 0-.731-.268 3.248 3.248 0 0 0-.829-.041 4.37 4.37 0 0 0-.799.115c.248-.102.497-.19.77-.242.279-.07.573-.111.88-.112.265 0 .55.036.82.135l.002.004c.028.014.042.015.07.03.07.028.155.069.225.11.01.006.017.013.026.018l.002.012c.14.084.268.196.394.323l.014.013c.004 0 .006 0 .01-.002a2.821 2.821 0 0 0 2.407.944l.254-.04h.041l.557-.114c1.867-.435 2.185-.507 3.135-1.036.4-.321.562-.548.63-.762.07-.217.055-.455.073-.797l-.002.01c-.001-.374-.282-.8-.696-1.22-.41-.417-.932-.824-1.366-1.196-.53-.374-.785-.718-1.031-.973a1.669 1.669 0 0 0-.63-.434A2.778 2.778 0 0 0 12.947 0zm2.362.934c.12.113.231.224.405.346l.008.004.005.006c.425.365.963.78 1.402 1.225.438.446.795.93.797 1.465v.004l-.002.006c-.017.319.008.589-.088.885-.096.297-.311.588-.754.94l-.012.01-.012.008a9.773 9.773 0 0 1-.584.303c1.232.485 2.467 1.071 3.808 2.118v-.002c1.21.937 2.345 2.057 3.49 3.74-.105-5.25-3.649-9.647-8.463-11.058zM8.534.98a11.576 11.576 0 0 0-2.155.897c-.07.038-.14.08-.209.12a11.768 11.768 0 0 0-5.942 10.02c.033 1.843.683 3.221 1.708 4.232 1.061 1.048 2.528 1.703 4.109 2.034 1.585.333 3.247.442 4.743.362a6.236 6.236 0 0 1-1.92-.692 11.15 11.15 0 0 1-.55-.322 12.475 12.475 0 0 1-.45-.338l-.295-.252a1.697 1.697 0 0 1-.225-.225 6.776 6.776 0 0 1-1.237-1.702c-.028-.056-.056-.126-.084-.182a6.412 6.412 0 0 1-.318-.858c-.104-.294-.318-.938-.489-2.003v-.006c-.299-2.347-.525-6.536 1.464-9.467l.004-.006.004-.006A6.873 6.873 0 0 1 8.534.98zm4.776 3.853c.059-.001.12 0 .182.004.492.043.87.282.856.55-.028.252-.434.436-.926.408-.492-.042-.872-.282-.858-.55.012-.233.336-.401.746-.412zm2.699 1.491c-.164.061-.451.142-.657.2 1.835 1.094 3.106 3.045 3.215 5.315l.004.068c.003.077.006.153.007.233v.04c0 .037-.005.072-.006.108.101 2.366-.31 3.562-1.291 5.62v.002c-.99 2.092-3.237 4.63-5.012 6.089 6.255-.14 11.293-5.145 11.494-11.384-1.22-1.9-2.408-3.086-3.696-4.084-1.43-1.117-2.725-1.7-4.058-2.207zm2.104 8.256c-.045.118-.087.238-.138.352-.029.056-.056.126-.084.182a6.537 6.537 0 0 1-1.462 1.927l-.295.252c-.14.112-.295.225-.45.338a5.13 5.13 0 0 1-.549.322c-.183.1-.375.185-.568.268v.002l-.016.006a6.555 6.555 0 0 1-.412.154c-2.013.742-5.2.867-8.166.244-1.63-.341-3.157-1.02-4.282-2.13a5.941 5.941 0 0 1-1.164-1.625C1.703 20.009 6.232 23.859 11.694 24c1.76-1.35 4.256-4.096 5.27-6.241v-.002c.598-1.253.97-2.146 1.15-3.178z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/pyscaffold.svg b/assets/lib/simple-icons/icons/pyscaffold.svg
new file mode 100644
index 00000000..b68d01a0
--- /dev/null
+++ b/assets/lib/simple-icons/icons/pyscaffold.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>PyScaffold</title><path d="M2.402 2.06C.357 2.06 0 5.626 0 5.626l5.36.996s-3.65.862-4.227 1.054c.167.456 1.701.623 1.701.623h5.434c.886 0 1.342-.815 1.342-.815h9.056c.193 0 1.366 0 1.366 1.582 0 1.583-1.366 1.777-1.366 1.777H7.787c-.175 0-1.577.258-2.765 1.361h.077v.11h-.184a5.18 5.18 0 00-1.352 2.327h4.57c.154-.072.27-.11.27-.11h10.208c1.819.003 3.51-.837 4.466-2.218h-.282v-.11h.331c.523-.907.865-2.176.874-3.068 0-3.73-2.84-5.527-4.72-5.527h-9.25c-.61-1.192-2.101-1.55-2.101-1.55h-.896l.316 1.096h-.283v4.02h.283c-.107.367-.212.736-.318 1.105l-.318-1.106h.261V3.155h-.26l.315-1.096zm.788 1.419a.557.557 0 01.566.56.553.553 0 01-.561.56c-.747.003-.752-1.117-.005-1.12zm2.019 8.726h.33v.108h-.33zm.44 0h.33v.108h-.33zm.439 0h.332v.108h-.331l-.001-.108zm.44 0h.33v.108h-.33zm.44 0h.33v.108h-.33zm.44 0h.33v.108h-.33zm.768 0v.108h-.327v-.11c.101.005.22.001.327.002zm.109 0h.33v.108h-.33zm.44 0h.33v.108h-.33zm.44 0h.33v.108h-.33zm.44 0h.33v.108h-.33zm.44 0h.33v.108h-.33zm.44 0h.329v.108h-.33l.001-.108zm.439 0h.33v.108h-.33zm.44 0h.33v.108h-.33zm.44 0h.329v.108h-.33l.001-.108zm.439 0h.33v.108h-.33zm.44 0h.33v.108h-.33zm.44 0h.33v.108h-.33zm.44 0h.329v.108h-.33l.001-.108zm.439 0h.33v.108h-.33v-.11zm.44 0h.33v.108h-.33v-.11zm.44 0h.33v.108h-.33v-.11zm.439 0h.33v.108h-.33zm.44 0h.33v.108h-.33zm.44 0h.33v.108h-.33zm.44 0h.329v.108h-.33l.001-.108zm.439 0h.33v.108h-.33zm.44 0h.33v.108h-.33zm.44 0h.33v.108h-.33zm.439 0h.33v.108h-.33zm.44 0h.33v.108h-.33zm.44 0h.33v.108h-.33zm.44 0h.329v.108h-.33l.001-.108zm.439 0h.33v.108h-.33zm.44 0h.33v.108h-.33zm.44 0h.33v.108h-.33zm.44 0h.329v.108h-.33l.001-.108zm.439 0h.33v.108h-.33zm.44 0h.33v.108h-.33v-.108zM3.52 14.812c-.015.061-.022.13-.036.193l.277-.192-.241-.001zm.543 0l-.622.43a7.27 7.27 0 00-.097.765l1.726-1.194zm1.306 0l-2.038 1.412c-.005.11-.019.208-.019.321 0 .184.017.351.03.524l3.262-2.256-1.235-.001zm1.532 0L3.354 17.27c.022.217.057.418.099.615 1.38-.925 2.753-1.89 4.123-2.838.09-.093.182-.17.273-.233-.314.001-.64-.001-.948-.002zm.404.627l-3.532 2.445h.992l2.337-1.62c.005-.284.073-.565.2-.825zm-.203 1.037l-2.039 1.408h1.003l1.149-.795a2.066 2.066 0 01-.113-.614zm.173.778l-.908.63h.843l.336-.233a1.539 1.539 0 01-.27-.398zm.397.517l-.163.113h.348c-.064-.041-.119-.055-.185-.113zm-4.186.283c.835 3.483 4.47 3.888 4.47 3.888h7.856c2.412 0 4.141-3.805 4.141-3.805-3.864.002-7.729-.007-11.593-.012 0 0-.092-.018-.224-.071H3.485zm9.045.099l.26 1h-.231v1.786h.23l-.259.98-.275-.98h.211v-1.787h-.21Z"/></svg>
diff --git a/assets/lib/simple-icons/icons/pytest.svg b/assets/lib/simple-icons/icons/pytest.svg
new file mode 100644
index 00000000..12500881
--- /dev/null
+++ b/assets/lib/simple-icons/icons/pytest.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Pytest</title><path d="M2.6152 0v.8867h3.8399V0zm5.0215 0v.8867h3.8418V0zm4.957 0v.8867h3.8418V0zm4.9356 0v.8867h3.8418V0zM2.4473 1.8945a.935.935 0 0 0-.9356.9356c0 .517.4185.9375.9356.9375h19.1054c.5171 0 .9356-.4204.9356-.9375a.935.935 0 0 0-.9356-.9356zm.168 2.8477V24H6.455V4.7422zm5.0214 0V20.543h3.8418V4.7422zm4.957 0V15.291h3.8497V4.7422zm4.9356 0v6.4941h3.8418V4.7422z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/python.svg b/assets/lib/simple-icons/icons/python.svg
index fafe048c..30587d81 100644
--- a/assets/lib/simple-icons/icons/python.svg
+++ b/assets/lib/simple-icons/icons/python.svg
@@ -1 +1 @@
-<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" role="img"><title>Python icon</title><path d="M14.31.18l.9.2.73.26.59.3.45.32.34.34.25.34.16.33.1.3.04.26.02.2-.01.13V8.5l-.05.63-.13.55-.21.46-.26.38-.3.31-.33.25-.35.19-.35.14-.33.1-.3.07-.26.04-.21.02H8.83l-.69.05-.59.14-.5.22-.41.27-.33.32-.27.35-.2.36-.15.37-.1.35-.07.32-.04.27-.02.21v3.06H3.23l-.21-.03-.28-.07-.32-.12-.35-.18-.36-.26-.36-.36-.35-.46-.32-.59-.28-.73-.21-.88-.14-1.05L0 11.97l.06-1.22.16-1.04.24-.87.32-.71.36-.57.4-.44.42-.33.42-.24.4-.16.36-.1.32-.05.24-.01h.16l.06.01h8.16v-.83H6.24l-.01-2.75-.02-.37.05-.34.11-.31.17-.28.25-.26.31-.23.38-.2.44-.18.51-.15.58-.12.64-.1.71-.06.77-.04.84-.02 1.27.05 1.07.13zm-6.3 1.98l-.23.33-.08.41.08.41.23.34.33.22.41.09.41-.09.33-.22.23-.34.08-.41-.08-.41-.23-.33-.33-.22-.41-.09-.41.09-.33.22zM21.1 6.11l.28.06.32.12.35.18.36.27.36.35.35.47.32.59.28.73.21.88.14 1.04.05 1.23-.06 1.23-.16 1.04-.24.86-.32.71-.36.57-.4.45-.42.33-.42.24-.4.16-.36.09-.32.05-.24.02-.16-.01h-8.22v.82h5.84l.01 2.76.02.36-.05.34-.11.31-.17.29-.25.25-.31.24-.38.2-.44.17-.51.15-.58.13-.64.09-.71.07-.77.04-.84.01-1.27-.04-1.07-.14-.9-.2-.73-.25-.59-.3-.45-.33-.34-.34-.25-.34-.16-.33-.1-.3-.04-.25-.02-.2.01-.13v-5.34l.05-.64.13-.54.21-.46.26-.38.3-.32.33-.24.35-.2.35-.14.33-.1.3-.06.26-.04.21-.02.13-.01h5.84l.69-.05.59-.14.5-.21.41-.28.33-.32.27-.35.2-.36.15-.36.1-.35.07-.32.04-.28.02-.21V6.07h2.09l.14.01.21.03zm-6.47 14.25l-.23.33-.08.41.08.41.23.33.33.23.41.08.41-.08.33-.23.23-.33.08-.41-.08-.41-.23-.33-.33-.23-.41-.08-.41.08-.33.23z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Python</title><path d="M14.25.18l.9.2.73.26.59.3.45.32.34.34.25.34.16.33.1.3.04.26.02.2-.01.13V8.5l-.05.63-.13.55-.21.46-.26.38-.3.31-.33.25-.35.19-.35.14-.33.1-.3.07-.26.04-.21.02H8.77l-.69.05-.59.14-.5.22-.41.27-.33.32-.27.35-.2.36-.15.37-.1.35-.07.32-.04.27-.02.21v3.06H3.17l-.21-.03-.28-.07-.32-.12-.35-.18-.36-.26-.36-.36-.35-.46-.32-.59-.28-.73-.21-.88-.14-1.05-.05-1.23.06-1.22.16-1.04.24-.87.32-.71.36-.57.4-.44.42-.33.42-.24.4-.16.36-.1.32-.05.24-.01h.16l.06.01h8.16v-.83H6.18l-.01-2.75-.02-.37.05-.34.11-.31.17-.28.25-.26.31-.23.38-.2.44-.18.51-.15.58-.12.64-.1.71-.06.77-.04.84-.02 1.27.05zm-6.3 1.98l-.23.33-.08.41.08.41.23.34.33.22.41.09.41-.09.33-.22.23-.34.08-.41-.08-.41-.23-.33-.33-.22-.41-.09-.41.09zm13.09 3.95l.28.06.32.12.35.18.36.27.36.35.35.47.32.59.28.73.21.88.14 1.04.05 1.23-.06 1.23-.16 1.04-.24.86-.32.71-.36.57-.4.45-.42.33-.42.24-.4.16-.36.09-.32.05-.24.02-.16-.01h-8.22v.82h5.84l.01 2.76.02.36-.05.34-.11.31-.17.29-.25.25-.31.24-.38.2-.44.17-.51.15-.58.13-.64.09-.71.07-.77.04-.84.01-1.27-.04-1.07-.14-.9-.2-.73-.25-.59-.3-.45-.33-.34-.34-.25-.34-.16-.33-.1-.3-.04-.25-.02-.2.01-.13v-5.34l.05-.64.13-.54.21-.46.26-.38.3-.32.33-.24.35-.2.35-.14.33-.1.3-.06.26-.04.21-.02.13-.01h5.84l.69-.05.59-.14.5-.21.41-.28.33-.32.27-.35.2-.36.15-.36.1-.35.07-.32.04-.28.02-.21V6.07h2.09l.14.01zm-6.47 14.25l-.23.33-.08.41.08.41.23.33.33.23.41.08.41-.08.33-.23.23-.33.08-.41-.08-.41-.23-.33-.33-.23-.41-.08-.41.08z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/pytorch.svg b/assets/lib/simple-icons/icons/pytorch.svg
index 2c1bc2c2..180e006b 100644
--- a/assets/lib/simple-icons/icons/pytorch.svg
+++ b/assets/lib/simple-icons/icons/pytorch.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>PyTorch icon</title><path d="M12.005.04l-7.03 7.03a9.832 9.832 0 0 0 0 13.975 9.833 9.833 0 0 0 13.976 0c3.97-3.887 3.972-10.171.084-13.976l-1.738 1.737c2.895 2.895 2.895 7.608 0 10.503-2.894 2.894-7.608 2.894-10.503 0C3.9 16.414 3.9 11.7 6.794 8.806l4.632-4.631.58-.663zm3.556 3.886a1.323 1.323 0 0 0-1.323 1.323 1.323 1.323 0 0 0 1.323 1.323 1.323 1.323 0 0 0 1.323-1.323 1.323 1.323 0 0 0-1.323-1.323z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>PyTorch</title><path d="M12.005 0L4.952 7.053a9.865 9.865 0 000 14.022 9.866 9.866 0 0014.022 0c3.984-3.9 3.986-10.205.085-14.023l-1.744 1.743c2.904 2.905 2.904 7.634 0 10.538s-7.634 2.904-10.538 0-2.904-7.634 0-10.538l4.647-4.646.582-.665zm3.568 3.899a1.327 1.327 0 00-1.327 1.327 1.327 1.327 0 001.327 1.328A1.327 1.327 0 0016.9 5.226 1.327 1.327 0 0015.573 3.9z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/pytorchlightning.svg b/assets/lib/simple-icons/icons/pytorchlightning.svg
new file mode 100644
index 00000000..9c0f2a23
--- /dev/null
+++ b/assets/lib/simple-icons/icons/pytorchlightning.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>PyTorch Lightning</title><path d="M12 0L1.75 6v12L12 24l10.25-6V6zm-1.775 18l1.08-4.657-2.428-2.397L13.79 6l-1.082 4.665 2.414 2.384z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/pyup.svg b/assets/lib/simple-icons/icons/pyup.svg
index f9d87a12..fa155d56 100644
--- a/assets/lib/simple-icons/icons/pyup.svg
+++ b/assets/lib/simple-icons/icons/pyup.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>PyUp icon</title><path d="M12 0L1.608 6v12l3.984 2.3v-12L12 4.6l6.408 3.7v7.4L12 19.4l-2.95-1.705v4.602L12 24l10.392-6V6zm0 8.593l-2.95 1.703v3.408L12 15.407l2.95-1.703v-3.408z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>PyUp</title><path d="M12 0L1.608 6v12l3.984 2.3v-12L12 4.6l6.408 3.7v7.4L12 19.4l-2.95-1.705v4.602L12 24l10.392-6V6zm0 8.593l-2.95 1.703v3.408L12 15.407l2.95-1.703v-3.408z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/qantas.svg b/assets/lib/simple-icons/icons/qantas.svg
index a7a5db3b..deab9248 100644
--- a/assets/lib/simple-icons/icons/qantas.svg
+++ b/assets/lib/simple-icons/icons/qantas.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Qantas icon</title><path d="M0 3.47l.218.572c1.925 5.006 5.566 2.689 10.415 7.139l.056.05c.652.599 1.1.044.888-.306a.76.76 0 0 1-.165-.532 6.7 6.7 0 0 1 2.606 1.369l-.06.126c-.366.73-3.959.421-4 1.943a.969.969 0 0 0 .607.923l.71.287a17.34 17.34 0 0 1 6.086 4.146.086.086 0 0 1-.063.147.079.079 0 0 1-.054-.018 17.32 17.32 0 0 0-8.173-3.61.467.467 0 0 1-.39-.41c-.548-5.089-5.575-5.434-7.492-8.705l5.313 13.94H24L9.979 6.449a10.022 10.022 0 0 0-7.045-2.98Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Qantas</title><path d="M0 3.47l.218.572c1.925 5.006 5.566 2.689 10.415 7.139l.056.05c.652.599 1.1.044.888-.306a.76.76 0 0 1-.165-.532 6.7 6.7 0 0 1 2.606 1.369l-.06.126c-.366.73-3.959.421-4 1.943a.969.969 0 0 0 .607.923l.71.287a17.34 17.34 0 0 1 6.086 4.146.086.086 0 0 1-.063.147.079.079 0 0 1-.054-.018 17.32 17.32 0 0 0-8.173-3.61.467.467 0 0 1-.39-.41c-.548-5.089-5.575-5.434-7.492-8.705l5.313 13.94H24L9.979 6.449a10.022 10.022 0 0 0-7.045-2.98Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/qatarairways.svg b/assets/lib/simple-icons/icons/qatarairways.svg
new file mode 100644
index 00000000..dd216f23
--- /dev/null
+++ b/assets/lib/simple-icons/icons/qatarairways.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Qatar Airways</title><path d="M18.633 13.143c.011.283.008.564-.006.84-2.752.11-5.362.274-5.362.462 0 .183 2.552.347 5.27.454a7.221 7.221 0 0 1-.186.924c-2.68.11-5.17.273-5.17.456 0 .174 2.326.33 4.897.44-.116.33-.25.647-.396.954-2.21.105-4.04.247-4.04.402 0 .145 1.595.279 3.609.38a9.968 9.968 0 0 1-.354.536c-.134.184-.274.369-.422.55-1.26.094-2.123.203-2.123.32 0 .1.616.193 1.568.276a9.055 9.055 0 0 1-1.856 1.414s-.854-.733-1.557-1.592c-.63-.764-1.96-2.78-2.271-3.229-.314-.451-.52-.585-.887-.453-.491.173-1.063.26-1.238.26-.176 0-.271-.067.025-.184.291-.118 1.45-.665 2.023-1.799.64-1.274.077-3.033.077-3.033-.216.94-.705 1.29-.705 1.29.159-.872-.014-1.664-.446-2.22l-.24 1.107s-.15-.01-.525.304c-.37.314-.474.77-.474.77.296.12.644-.176.644-.176-.446 1.685-1.093 3.054-1.562 3.78-.472.724-.856.998-1.33 1.19-.396.159-.529-.028-.529-.028a7.17 7.17 0 0 1-.878-.902s-.021-.04.05-.036c.196.003.54-.327.616-.467.084-.158.078-.277.033-.286-.04-.007-.115.119-.492.353-.37.236-.537.074-.665-.06-.093-.1 0-.232.057-.312.06-.074 2.025-3.736 7.222-7.588 6.822-5.045 11.171-6.405 11.42-6.505.166-.065.434-.15.496-.088.065.071.1.128.088.211-.008.082-.05.123-.363.262-2.62 1.154-5.674 3.073-7.408 4.191-2.136 1.04-4.172 2.525-4.245 2.561-.164.101-.046.25.058.188 3.6-2.397 7.826-4.03 12.498-5.368.22-.062.342-.062.382-.014a.377.377 0 0 1 .064.187c.006.084-.064.13-.258.206-5.011 1.864-8.71 3.592-11.091 5.194 0 0-.245.146-.248.318 0 .065.132.073.132.073 1.19.021 2.784.092 3.538.136 0 0-.104.384-.83.692-.56.24-1.077.202-1.592.204-.117 0-.21.112-.122.238.047.06 1.14 1.816 5.104 2.217m-9.09 3.693c-.539.193-1.177.296-1.437.296-.451 0-1.189.25-1.45.476a337.1 337.1 0 0 0 3.413-.069 58.21 58.21 0 0 1-.322-.472 1.552 1.552 0 0 0-.187-.236c-.01.003-.008 0-.016.005M2.92 8.682c1.43 0 4.068-.035 6.675-.095.297-.239.606-.477.928-.718-2.89-.073-6.003-.119-7.603-.119-.676 0-1.226.21-1.226.466 0 .257.55.465 1.226.465m.407-2.247c0 .202.433.366.965.366 1.631 0 5.267-.059 7.918-.15.198-.138.395-.279.591-.411a283.4 283.4 0 0 0-8.509-.171c-.532 0-.965.164-.965.366m11.784 5.069c.29.173.647.348 1.085.508 1.387-.07 2.28-.147 2.28-.23 0-.1-1.374-.195-3.365-.278m-13.018-.982c1.214 0 3.196-.023 5.36-.064.309-.298.642-.6.991-.906a352.416 352.416 0 0 0-6.351-.082c-.762 0-1.378.236-1.378.526 0 .29.616.526 1.378.526m13.8-2.448a30.5 30.5 0 0 0-.606.322c1.023-.055 1.67-.115 1.67-.179 0-.05-.402-.097-1.063-.143m-9.433-2.8c1.556 0 6.286-.116 6.286-.258 0-.145-4.732-.261-6.286-.261-.301 0-.547.116-.547.26 0 .143.246.26.547.26M16.645 9.95a.89.89 0 0 1-.095.218c.862-.054 1.391-.113 1.391-.173 0-.058-.479-.113-1.264-.165zm-5.878 8.619c-2.952-.077-6.2-.124-7.846-.124-.676 0-1.226.209-1.226.466 0 .256.55.465 1.226.465 1.735 0 5.237-.053 8.314-.137-.156-.22-.313-.445-.468-.67m1.402 1.905c-2.654-.09-6.254-.148-7.876-.148-.532 0-.965.164-.965.367 0 .2.433.364.965.364 1.702 0 5.575-.062 8.245-.161a13.13 13.13 0 0 1-.37-.422m-6.253 1.638c0 .142.246.262.547.262 1.554 0 6.286-.12 6.286-.262 0-.143-4.73-.258-6.286-.258-.301 0-.547.115-.547.258m-2.798-6.218c.028-.13.087-.274.205-.43-.017.02-.024.039-.006.007.106-.183.244-.41.419-.671-.814-.009-1.53-.014-2.093-.014-.808 0-1.465.25-1.465.558 0 .309.657.558 1.465.558.415 0 .915-.003 1.475-.008m1.2 1.748c-.198-.193-.862-.957-.943-1.03-.483-.003-.918-.006-1.28-.006-.762 0-1.378.234-1.378.527 0 .288.616.525 1.378.525.587 0 1.348-.007 2.223-.016m-.105-3.532c.243-.327.517-.692.839-1.084-1.427-.019-2.678-.03-3.556-.03-.827 0-1.495.254-1.495.567 0 .313.668.568 1.495.568.698 0 1.644-.007 2.717-.02m-2.57-1.771c.97 0 2.404-.015 4.025-.039.298-.327.607-.67.949-1.023a298.993 298.993 0 0 0-4.974-.052c-.808 0-1.465.246-1.465.556 0 .31.657.558 1.465.558Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/qemu.svg b/assets/lib/simple-icons/icons/qemu.svg
index 14e6c87d..dc522ea9 100644
--- a/assets/lib/simple-icons/icons/qemu.svg
+++ b/assets/lib/simple-icons/icons/qemu.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>QEMU icon</title><path d="M12.003.064C5.376.064 0 5.407 0 12s5.376 11.936 12.003 11.936c2.169 0 4.2-.57 5.955-1.57l.624 1.57h4.841l-1.893-4.679A11.845 11.845 0 0024 12C24 5.407 18.63.064 12.003.064zM8.818 2.03c.398.339.324.198.86.134.61-.397.893.942 1.147.195.748.097 1.542.34 2.25.584a3.447 3.447 0 011.859 1.128l-.014.007.35.463c.045.08.082.164.12.248.142 1.205 1.48 1.19 2.377 1.625.767.272 1.69.686 1.785 1.611-.193-.042-.941-.921-1.53-1.007a3.919 3.919 0 01-1.094-.255L14.86 6.38v-.007a3.035 3.035 0 01-.309-.053v.013l-2.927-.362c.048.033.1.077.148.12l3 .585v-.007l.209.053.839.188c.166.016.334.043.47.067.856.236 1.868.194 2.571.792-.184.352-1.21.153-1.719.108-.062-.012-.131-.023-.194-.034l-.034-.007c-.696-.113-1.411-.12-2.081.088h-.007a3.193 3.193 0 00-.671.302c-.968.563-2.164.767-2.967 1.577-.787.847-.739 2.012-.604 3.095h.033v.275c.013.095.028.19.04.282.41 2.19 1.5 4.2 1.84 6.412.065.843.203 1.932.309 2.618-.306-.091-.475-1.462-.544-1.007a38.196 38.196 0 00-3.565-5.25c-.853-1.004-1.697-2.06-2.712-2.894-.685-.528-.468-1.55-.537-2.302-.23-.926-.094-1.848.06-2.773.313-.963.418-1.968.846-2.893.653-.581.669-1.63 1.303-2.135.094.058.157.085.2.1l.068.008h.007c.09-.095-.888-1.116.02-.712.035-.537.854-.128.866-.597zm3.847 2.182c-.323.009-.574.13-.645.335-.114.33.273.755.866.96.594.205 1.168.109 1.282-.221.114-.33-.272-.762-.866-.967a1.842 1.842 0 00-.637-.107z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>QEMU</title><path d="M12.003.064C5.376.064 0 5.407 0 12s5.376 11.936 12.003 11.936c2.169 0 4.2-.57 5.955-1.57l.624 1.57h4.841l-1.893-4.679A11.845 11.845 0 0024 12C24 5.407 18.63.064 12.003.064zM8.818 2.03c.398.339.324.198.86.134.61-.397.893.942 1.147.195.748.097 1.542.34 2.25.584a3.447 3.447 0 011.859 1.128l-.014.007.35.463c.045.08.082.164.12.248.142 1.205 1.48 1.19 2.377 1.625.767.272 1.69.686 1.785 1.611-.193-.042-.941-.921-1.53-1.007a3.919 3.919 0 01-1.094-.255L14.86 6.38v-.007a3.035 3.035 0 01-.309-.053v.013l-2.927-.362c.048.033.1.077.148.12l3 .585v-.007l.209.053.839.188c.166.016.334.043.47.067.856.236 1.868.194 2.571.792-.184.352-1.21.153-1.719.108-.062-.012-.131-.023-.194-.034l-.034-.007c-.696-.113-1.411-.12-2.081.088h-.007a3.193 3.193 0 00-.671.302c-.968.563-2.164.767-2.967 1.577-.787.847-.739 2.012-.604 3.095h.033v.275c.013.095.028.19.04.282.41 2.19 1.5 4.2 1.84 6.412.065.843.203 1.932.309 2.618-.306-.091-.475-1.462-.544-1.007a38.196 38.196 0 00-3.565-5.25c-.853-1.004-1.697-2.06-2.712-2.894-.685-.528-.468-1.55-.537-2.302-.23-.926-.094-1.848.06-2.773.313-.963.418-1.968.846-2.893.653-.581.669-1.63 1.303-2.135.094.058.157.085.2.1l.068.008h.007c.09-.095-.888-1.116.02-.712.035-.537.854-.128.866-.597zm3.847 2.182c-.323.009-.574.13-.645.335-.114.33.273.755.866.96.594.205 1.168.109 1.282-.221.114-.33-.272-.762-.866-.967a1.842 1.842 0 00-.637-.107z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/qgis.svg b/assets/lib/simple-icons/icons/qgis.svg
index 2626b490..9ccbb240 100644
--- a/assets/lib/simple-icons/icons/qgis.svg
+++ b/assets/lib/simple-icons/icons/qgis.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Qgis icon</title><path d="M12.879 13.006v3.65l-3.004-3.048v-3.495h3.582l2.852 2.893h-3.43zm10.886 7.606V24h-3.654l-5.73-5.9v-3.55h3.354l6.03 6.062zm-10.828-1.448l3.372 3.371c-1.309.442-2.557.726-4.325.726C5.136 23.26 0 18.243 0 11.565 0 4.92 5.136 0 11.984 0 18.864 0 24 4.952 24 11.565c0 2.12-.523 4.076-1.457 5.759l-3.625-3.725a8.393 8.393 0 0 0 .24-2.005c0-4.291-3.148-7.527-7.1-7.527-3.954 0-7.248 3.236-7.248 7.527s3.33 7.6 7.247 7.6c.548 0 .661.017.88-.03z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Qgis</title><path d="M12.879 13.006v3.65l-3.004-3.048v-3.495h3.582l2.852 2.893h-3.43zm10.886 7.606V24h-3.654l-5.73-5.9v-3.55h3.354l6.03 6.062zm-10.828-1.448l3.372 3.371c-1.309.442-2.557.726-4.325.726C5.136 23.26 0 18.243 0 11.565 0 4.92 5.136 0 11.984 0 18.864 0 24 4.952 24 11.565c0 2.12-.523 4.076-1.457 5.759l-3.625-3.725a8.393 8.393 0 0 0 .24-2.005c0-4.291-3.148-7.527-7.1-7.527-3.954 0-7.248 3.236-7.248 7.527s3.33 7.6 7.247 7.6c.548 0 .661.017.88-.03z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/qi.svg b/assets/lib/simple-icons/icons/qi.svg
index 61eec24b..10aff80e 100644
--- a/assets/lib/simple-icons/icons/qi.svg
+++ b/assets/lib/simple-icons/icons/qi.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Qi icon</title><path d="M16.574 0a1.524 1.524 0 100 3.049 1.524 1.524 0 100-3.049zm-4.762 2.857a7.627 7.627 0 00-.01 15.246c.297 0 .296.293.296.293v2.65s.001 2.763 2.658 2.954c.295.01.295-.295.295-.295V3.785s0-.293-.295-.414a7.667 7.667 0 00-2.944-.514zM16.7 4.52c-.124-.02-.123.167-.123.386v11.147c0 .294-.002.528.293.297.01-.01.023-.019.033-.028a7.626 7.626 0 00-.03-11.709.41.41 0 00-.173-.093zm-4.765 1.386c.165 0 .164.164.164.164v8.82s0 .165-.164.165a4.577 4.577 0 010-9.148Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Qi</title><path d="M16.5742 0c-.8422 0-1.525.6826-1.525 1.5247 0 .8424.6828 1.525 1.525 1.525s1.5247-.6826 1.5247-1.525C18.0989.6826 17.4164 0 16.5742 0zm-4.6371 2.856c-1.7103.0124-3.4264.5973-4.8392 1.7828-3.2263 2.7071-3.6471 7.5175-.94 10.7439 1.4616 1.7419 3.5365 2.6653 5.6439 2.7208.2966 0 .2966.293.2966.293v2.65s.0002 2.7624 2.6567 2.9532c.2952.0103.2953-.295.2953-.295V3.7857s0-.2943-.295-.415a7.665 7.665 0 0 0-2.8183-.5147zm4.7479 1.662c-.1097-.0016-.1097.1789-.1097.3891v11.1466c0 .2941 0 .5266.2948.2954.0104-.009.0211-.0175.0318-.0266 3.2265-2.707 3.6474-7.5175.94-10.7437a7.5925 7.5925 0 0 0-.9713-.9659c-.083-.0656-.1427-.0941-.1856-.0948zm-4.7515 1.3885c.165 0 .165.1642.165.1642v8.8198s0 .1644-.165.1644c-1.2823-.0192-2.5496-.5735-3.4386-1.633-1.6245-1.936-1.3719-4.8217.5639-6.4464.8395-.7046 1.8582-1.0549 2.8747-1.069z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/qiita.svg b/assets/lib/simple-icons/icons/qiita.svg
index a78c4aaf..11746220 100644
--- a/assets/lib/simple-icons/icons/qiita.svg
+++ b/assets/lib/simple-icons/icons/qiita.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 24 24"><title>Qiita icon</title><path d="M7.883 11.615c0-1.92-1.474-3.904-3.974-3.904C1.987 7.71 0 9.183 0 11.679c0 1.92 1.474 3.905 3.973 3.905.801 0 1.602-.256 2.275-.736L7.402 16l.513-.512-1.09-1.088c.673-.736 1.058-1.696 1.058-2.785zm-3.974-3.2c1.827 0 3.269 1.408 3.269 3.232 0 1.569-1.218 3.233-3.237 3.233-2.018 0-3.236-1.632-3.236-3.2 0-2.049 1.634-3.265 3.204-3.265zm5.864 1.568h.673v5.44h-.673zm.32-.736a.574.574 0 0 1-.576-.576c0-.32.256-.576.576-.576.32 0 .577.256.577.576 0 .32-.256.576-.577.576zm2.724 0a.574.574 0 0 1-.577-.576c0-.32.257-.576.577-.576.32 0 .577.256.577.576 0 .32-.256.576-.577.576zm-.32.736h.673v5.44h-.673zm4.71 5.537c-1.25 0-1.987-.96-1.987-1.92V8.479h.673v1.504h2.371v.672h-2.37v2.977c0 .608.48 1.248 1.313 1.248.224 0 .449-.064.64-.192l.065-.032.32.576-.064.032c-.288.16-.64.256-.961.256zm4.454.032c-1.827 0-2.916-1.44-2.916-2.848 0-1.825 1.442-2.913 2.852-2.913.737 0 1.314.256 1.73.736v-.544H24v5.44h-.673v-.607c-.384.48-.961.736-1.666.736zm-.064-5.089c-1.09 0-2.18.832-2.18 2.24 0 1.089.834 2.177 2.244 2.177.64 0 1.282-.288 1.698-.8v-2.817a2.29 2.29 0 0 0-1.762-.8z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Qiita</title><path d="M3.57 8.343a3.653 3.653 0 0 0-1.376.269 3.585 3.585 0 0 0-1.14.738 3.503 3.503 0 0 0-.773 1.102A3.297 3.297 0 0 0 0 11.814a3.28 3.28 0 0 0 .281 1.357 3.535 3.535 0 0 0 .775 1.107A3.636 3.636 0 0 0 3.6 15.29a3.731 3.731 0 0 0 .987-.13 3.657 3.657 0 0 0 .888-.374l.687.698a.579.579 0 0 0 .824 0 .58.58 0 0 0 0-.817l-.624-.624a3.533 3.533 0 0 0 .613-1.022 3.282 3.282 0 0 0 .226-1.208 3.297 3.297 0 0 0-.282-1.362 3.488 3.488 0 0 0-.775-1.102A3.614 3.614 0 0 0 5 8.612a3.657 3.657 0 0 0-1.398-.27 3.653 3.653 0 0 0-.031 0zm11.306.185v1.484h-.765v1.063h.765v2.142c0 .419.053.761.159 1.028a1.56 1.56 0 0 0 .433.63 1.511 1.511 0 0 0 .643.317 2.676 2.676 0 0 0 .694.086h.853v-1.013h-.736a1.25 1.25 0 0 1-.352-.048.713.713 0 0 1-.291-.169.81.81 0 0 1-.2-.324 1.575 1.575 0 0 1-.074-.519v-2.13h1.666v-1.063h-1.66V8.528zM9.4 8.856a.69.69 0 0 0-.69.691.69.69 0 0 0 .69.69.69.69 0 0 0 .691-.69.69.69 0 0 0-.69-.691zm2.771 0a.69.69 0 0 0-.69.691.69.69 0 0 0 .69.69.69.69 0 0 0 .691-.69.69.69 0 0 0-.69-.691zm-8.6.538a2.324 2.324 0 0 1 .03 0 2.35 2.35 0 0 1 .93.187 2.346 2.346 0 0 1 1.264 1.28 2.463 2.463 0 0 1 .186.957 2.444 2.444 0 0 1-.186.957 2.384 2.384 0 0 1-.506.767 2.363 2.363 0 0 1-1.688.698 2.324 2.324 0 0 1-.93-.186 2.376 2.376 0 0 1-.755-.512 2.427 2.427 0 0 1-.699-1.723 2.44 2.44 0 0 1 .699-1.727 2.384 2.384 0 0 1 .756-.511 2.324 2.324 0 0 1 .898-.187zm17.648.773a2.69 2.69 0 0 0-1.02.201 2.49 2.49 0 0 0-.815.552 2.432 2.432 0 0 0-.525.814 2.678 2.678 0 0 0-.186.998 2.644 2.644 0 0 0 .186.997 2.485 2.485 0 0 0 .525.814 2.436 2.436 0 0 0 .815.546 2.697 2.697 0 0 0 1.059.2 2.42 2.42 0 0 0 .518-.056 2.524 2.524 0 0 0 .46-.146 2.426 2.426 0 0 0 .394-.213 2.394 2.394 0 0 0 .329-.263l.065.53H24v-4.829h-.976l-.068.533a2.498 2.498 0 0 0-.322-.26 2.25 2.25 0 0 0-.394-.217 2.616 2.616 0 0 0-.462-.145 2.404 2.404 0 0 0-.521-.056 2.69 2.69 0 0 0-.038 0zm-12.375.844v4.138h1.113V11.01zm2.77 0v4.138h1.114V11.01zm9.72.145a1.592 1.592 0 0 1 .024 0 1.557 1.557 0 0 1 1.098.445 1.495 1.495 0 0 1 .334.495 1.61 1.61 0 0 1 .121.631 1.632 1.632 0 0 1-.121.64 1.551 1.551 0 0 1-.331.498 1.47 1.47 0 0 1-.49.324 1.642 1.642 0 0 1-1.207 0 1.502 1.502 0 0 1-.493-.324 1.52 1.52 0 0 1-.333-.5 1.64 1.64 0 0 1-.122-.638 1.628 1.628 0 0 1 .12-.637 1.524 1.524 0 0 1 .328-.495 1.474 1.474 0 0 1 .49-.323 1.592 1.592 0 0 1 .581-.116z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/qiskit.svg b/assets/lib/simple-icons/icons/qiskit.svg
new file mode 100644
index 00000000..941ea987
--- /dev/null
+++ b/assets/lib/simple-icons/icons/qiskit.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Qiskit</title><path d="M11.9686 0v.0013C7.7636.0111 3.8602 2.222 1.6966 5.8438-.5206 9.5553-.5677 14.1722 1.5734 17.928c2.0288 3.5587 5.7249 5.821 9.7863 6.0365a6.1732 6.1732 0 001.3664-.005c3.9417-.2393 7.5325-2.4066 9.572-5.8207a11.9785 11.9785 0 001.6939-5.9703 1.3484 1.3484 0 00.008-.1258v-.0342a1.4017 1.4017 0 00-.006-.1104 11.9779 11.9779 0 00-1.4163-5.5598C20.5388 2.5261 16.6048.1057 12.2812.0033c-.08-.0019-.1598-.0013-.2396-.0016C12.019.0015 11.9898 0 11.9686 0zm.008.8395c1.2294.0012 2.0657.2743 2.0657.5136 0 .2398-.857.5483-2.0567.5483-1.1997 0-2.0908-.2911-2.0908-.531 0-.2346.823-.5168 1.9984-.529.0279-.0002.0555-.0018.0834-.002zm2.8741.368a11.2001 11.2001 0 014.9964 2.8353c-1.9678-.7539-4.8296-1.1702-7.6044-1.1992-1.3468 0-2.703.0898-3.9768.2587-.277-.3393-.757-.513-1.2469-.2737-.27.132-.4365.3398-.5178.5704-.8623.1802-1.6528.4022-2.3352.6632a11.1854 11.1854 0 014.916-2.8296c-.0059.0445-.01.09-.01.1379 0 1.2334 2.0224 1.336 2.9137 1.336.8912 0 2.8794-.1198 2.8794-1.336 0-.0569-.0059-.1107-.0143-.163zm-2.608 2.4411c4.789.0599 8.3098 1.1517 9.1259 2.2488.0245.0374.0496.0743.0736.112.07.1219.1071.2434.1071.363 0 .8254-1.7313 1.7052-4.4467 2.2304-1.5337-.2227-3.1837-.3483-4.8083-.363-.5957 0-1.1928.0175-1.7869.0448L8.2666 4.4024c.1364-.1666.2082-.3464.2307-.5246 1.1424-.1443 2.4018-.2292 3.7454-.2292zm-5.6933.5568c.159.3323.4872.5848.946.5738.0456.0028.0912.0028.1369 0l2.0644 3.551c-.9554.0639-1.894.1597-2.7865.2913-2.7422-.5285-4.4367-1.4293-4.4367-2.249 0-.0962.0263-.1932.072-.2904.0497-.0794.1014-.1573.153-.2353.5158-.6194 1.9017-1.2233 3.8509-1.6414zM22.095 7.1838a11.1321 11.1321 0 01.9992 3.3529c-.873-.6681-2.3136-1.2006-4.0417-1.584 1.46-.4478 2.5653-1.0446 3.0425-1.7689zm-20.1695.0315c.4884.7285 1.5982 1.3203 3.0449 1.7612-1.7294.3856-3.1592.9152-4.0297 1.5702.0658-.4965.1638-.993.299-1.4865.176-.6428.4074-1.2586.6858-1.845zM12.277 9.0277c.2927.0031.58.0103.8643.0194-.4443.0189-.8956.0322-1.361.0322a31.6185 31.6185 0 01-.8262-.0208l-.0044-.008a39.8672 39.8672 0 011.3272-.0228zm4.918.3801c3.6492.5526 5.954 1.6152 5.9974 2.5807 0 .0152-.0007.0305-.0007.0458-.0524.9623-2.3803 1.9992-5.943 2.5525-1.0469-.2007-2.1789-.3418-3.3325-.4189L12.38 11.5287l-.9443-1.6357c.109.0023.2182.0072.327.0084 1.8753 0 3.7715-.1718 5.4323-.4935zm-10.374.016c1.1798.2266 2.4668.375 3.7672.4394l1.1575 1.991 1.3102 2.2676a31.8296 31.8296 0 00-.813-.0235c-1.895 0-3.8113.1731-5.4852.4986-3.4614-.535-5.6997-1.5307-5.9126-2.4592a11.1137 11.1137 0 01-.0003-.2637c.2145-.9349 2.522-1.9192 5.9762-2.4501zm16.2693 4.0773a11.1764 11.1764 0 01-.9765 3.2946c-.4665-.7202-1.5352-1.302-2.9364-1.7384 1.679-.3871 3.064-.912 3.9129-1.5562zM.947 13.5205c.852.6529 2.2333 1.1731 3.89 1.5535-1.3891.4357-2.4439 1.009-2.921 1.7023a11.1813 11.1813 0 01-.969-3.2558zm11.2956 1.3658c.4403.0069.8654.0254 1.2831.0485l.0084.0144a39.6667 39.6667 0 01-1.7885.0401 39.3883 39.3883 0 01-1.435-.0421 31.1187 31.1187 0 011.932-.061zm5.0929.5226c2.6122.5393 4.2197 1.4099 4.2308 2.2183 0 .1156-.0357.233-.1034.3503-.0116.0183-.0241.0362-.0358.0545-.4058.6113-1.6971 1.2205-3.5647 1.6596-.1728-.2433-.4515-.4161-.8208-.4196a1.0459 1.0459 0 00-.1544 0l-2.078-3.57c.8675-.07 1.717-.1666 2.5263-.2931zm-10.6667.012c1.6028.2481 3.3467.3868 5.0597.4076.758 0 1.5198-.0228 2.2726-.0673l2.235 3.8875a1.0464 1.0464 0 00-.2005.3858c-1.2744.1865-2.7086.2995-4.2556.2995-4.7015-.0588-8.1788-1.0996-9.0873-2.1725a11.162 11.162 0 01-.1855-.2934c-.0323-.0807-.0497-.1612-.0508-.241.0106-.8 1.6375-1.6662 4.2124-2.2061zm13.2643 4.468c-.062.0623-.123.1254-.1868.1864a11.1477 11.1477 0 01-4.7213 2.6894c.0506-.1196.0797-.2446.0797-.375 0-.5564-.4856-1.0308-1.2513-1.3217a28.8077 28.8077 0 002.295-.2455c.2498.4144.7751.6624 1.3193.4078.3507-.164.5338-.4565.5794-.7658.6904-.164 1.326-.3566 1.886-.5755zm-15.7843.0482c1.5918.6106 3.7654.9958 6.0014 1.139-.7448.2871-1.2155.749-1.2155 1.2965v.017c0 .1298.03.2548.082.3748a11.1695 11.1695 0 01-4.8679-2.8273zm7.8709 1.596c1.3883 0 2.2625.4968 2.2796.8565.0123.2569-.4576.5739-1.2255.7348a11.2018 11.2018 0 01-2.1983-.008c-.7142-.1748-1.135-.4912-1.135-.7267 0-.3426.891-.8566 2.2792-.8566z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/qiwi.svg b/assets/lib/simple-icons/icons/qiwi.svg
index 36463c49..7486665b 100644
--- a/assets/lib/simple-icons/icons/qiwi.svg
+++ b/assets/lib/simple-icons/icons/qiwi.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>QIWI icon</title><path d="M11.064 0C5.17 0 .391 4.778.391 10.673c0 5.895 4.779 10.673 10.674 10.673 1.567 0 3.118-.293 5.398-.31 2.033 0 4.267.714 6.718 2.886.248.217.574-.062.357-.326-2.405-3.056-4.64-3.63-6.873-4.126-2.73-.606-4.126-2.126-5.104-3.817-.186-.341-.28-.279-.295.156-.018.639.03 1.278.14 1.908h-.326a7.066 7.066 0 01-7.06-7.06A7.065 7.065 0 0111.08 3.6a7.064 7.064 0 017.013 7.88c-.528-.093-1.537-.108-2.25-.046-.264.031-.233.155-.031.187 2.327.434 3.925 1.877 4.297 4.499.015.062.093.077.124.03a10.739 10.739 0 001.505-5.476C21.738 4.778 16.96 0 11.064 0zm7.644 15.077a.312.312 0 00-.306.157c-.124.218-.03.636.202 1.009.232.372.45.558.606.558.155 0 .294-.186.232-.667-.03-.264-.186-.868-.59-1.024-.047-.021-.101-.023-.144-.033zm-2.214 1.787c-.217 0-.388.076-.497.216-.279.341-.155.962.28 1.335.186.17.466.263.73.263a.816.816 0 00.635-.278c.249-.342.11-.808-.372-1.211-.248-.217-.527-.325-.776-.325Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>QIWI</title><path d="M11.064 0C5.17 0 .391 4.778.391 10.673c0 5.895 4.779 10.673 10.674 10.673 1.567 0 3.118-.293 5.398-.31 2.033 0 4.267.714 6.718 2.886.248.217.574-.062.357-.326-2.405-3.056-4.64-3.63-6.873-4.126-2.73-.606-4.126-2.126-5.104-3.817-.186-.341-.28-.279-.295.156-.018.639.03 1.278.14 1.908h-.326a7.066 7.066 0 01-7.06-7.06A7.065 7.065 0 0111.08 3.6a7.064 7.064 0 017.013 7.88c-.528-.093-1.537-.108-2.25-.046-.264.031-.233.155-.031.187 2.327.434 3.925 1.877 4.297 4.499.015.062.093.077.124.03a10.739 10.739 0 001.505-5.476C21.738 4.778 16.96 0 11.064 0zm7.644 15.077a.312.312 0 00-.306.157c-.124.218-.03.636.202 1.009.232.372.45.558.606.558.155 0 .294-.186.232-.667-.03-.264-.186-.868-.59-1.024-.047-.021-.101-.023-.144-.033zm-2.214 1.787c-.217 0-.388.076-.497.216-.279.341-.155.962.28 1.335.186.17.466.263.73.263a.816.816 0 00.635-.278c.249-.342.11-.808-.372-1.211-.248-.217-.527-.325-.776-.325Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/qt.svg b/assets/lib/simple-icons/icons/qt.svg
new file mode 100644
index 00000000..54955b8b
--- /dev/null
+++ b/assets/lib/simple-icons/icons/qt.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Qt</title><path d="M21.693 3.162H3.33L0 6.49v14.348h20.671L24 17.51V3.162zM12.785 18.4l-1.562.728-1.35-2.217c-.196.057-.499.09-.924.09-1.579 0-2.683-.425-3.305-1.276-.622-.85-.932-2.2-.932-4.033 0-1.84.319-3.206.949-4.098.63-.892 1.726-1.341 3.288-1.341 1.562 0 2.658.441 3.28 1.333.63.883.94 2.25.94 4.098 0 1.219-.13 2.2-.384 2.945-.261.752-.679 1.325-1.268 1.718zm4.736-1.587c-.858 0-1.447-.196-1.766-.59-.32-.392-.483-1.136-.483-2.232v-3.534H14.11V9.051h1.162V6.843h1.644V9.05h2.094v1.415h-2.094v3.346c0 .622.05 1.03.14 1.227.09.204.326.303.695.303l1.243-.05.073 1.326c-.67.13-1.186.196-1.546.196zm-8.58-9.08c-.95 0-1.604.311-1.963.94-.352.63-.532 1.629-.532 3.011 0 1.374.172 2.364.515 2.953.344.589 1.006.892 1.98.892.973 0 1.628-.295 1.971-.876.335-.58.507-1.57.507-2.953 0-1.39-.172-2.396-.523-3.026-.352-.63-1.006-.94-1.955-.94Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/qualcomm.svg b/assets/lib/simple-icons/icons/qualcomm.svg
index 7bb36d01..0d1bc463 100644
--- a/assets/lib/simple-icons/icons/qualcomm.svg
+++ b/assets/lib/simple-icons/icons/qualcomm.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 24 24"><title>Qualcomm icon</title><path d="M12 0C6.22933 0 1.5761 4.48645 1.5761 10.47394c0 6.00417 4.65323 10.47394 10.4239 10.47394.98402 0 1.93468-.13343 2.8353-.3836l1.13412 2.9187c.11675.31688.35025.51702.7672.51702h1.80125c.43364 0 .75052-.28353.55038-.83391l-1.46768-3.81932c2.88534-1.81793 4.80333-5.03683 4.80333-8.8895C22.4239 4.48644 17.77067 0 12 0m4.53648 16.5615l-1.31758-3.41904c-.11675-.28353-.35024-.55038-.85059-.55038h-1.71786c-.43363 0-.7672.28353-.56706.83391l1.73454 4.48645c-.56706.1501-1.18416.21682-1.81793.21682-4.2196 0-7.22168-3.31897-7.22168-7.65532C4.77832 6.1376 7.7804 2.81862 12 2.81862s7.22168 3.31898 7.22168 7.65532c0 2.5351-1.01737 4.70327-2.6852 6.08756"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Qualcomm</title><path d="M12 0C6.22933 0 1.5761 4.48645 1.5761 10.47394c0 6.00417 4.65323 10.47394 10.4239 10.47394.98402 0 1.93468-.13343 2.8353-.3836l1.13412 2.9187c.11675.31688.35025.51702.7672.51702h1.80125c.43364 0 .75052-.28353.55038-.83391l-1.46768-3.81932c2.88534-1.81793 4.80333-5.03683 4.80333-8.8895C22.4239 4.48644 17.77067 0 12 0m4.53648 16.5615l-1.31758-3.41904c-.11675-.28353-.35024-.55038-.85059-.55038h-1.71786c-.43363 0-.7672.28353-.56706.83391l1.73454 4.48645c-.56706.1501-1.18416.21682-1.81793.21682-4.2196 0-7.22168-3.31897-7.22168-7.65532C4.77832 6.1376 7.7804 2.81862 12 2.81862s7.22168 3.31898 7.22168 7.65532c0 2.5351-1.01737 4.70327-2.6852 6.08756"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/qualtrics.svg b/assets/lib/simple-icons/icons/qualtrics.svg
index 59223e12..3271e44d 100644
--- a/assets/lib/simple-icons/icons/qualtrics.svg
+++ b/assets/lib/simple-icons/icons/qualtrics.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Qualtrics icon</title><path d="M20.14 5.518l-2.695 9.538h-.034l-2.89-9.538H8.125l-2.19 3.893-2.318-3.893H.368l3.78 6.116L0 18.486h2.993l2.66-4.534 2.755 4.534h4.906v-8.99h.034q.102.564.195.966.093.402.175.744c.057.228.118.445.184.65.065.206.132.43.2.677l1.926 5.949h2.523l1.942-5.95q.213-.718.398-1.385a14.544 14.544 0 0 0 .32-1.506h.035v8.845H24V5.514zM7.373 11.651l3.383-5.616v11.118z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Qualtrics</title><path d="M20.14 5.518l-2.695 9.538h-.034l-2.89-9.538H8.125l-2.19 3.893-2.318-3.893H.368l3.78 6.116L0 18.486h2.993l2.66-4.534 2.755 4.534h4.906v-8.99h.034q.102.564.195.966.093.402.175.744c.057.228.118.445.184.65.065.206.132.43.2.677l1.926 5.949h2.523l1.942-5.95q.213-.718.398-1.385a14.544 14.544 0 0 0 .32-1.506h.035v8.845H24V5.514zM7.373 11.651l3.383-5.616v11.118z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/qualys.svg b/assets/lib/simple-icons/icons/qualys.svg
new file mode 100644
index 00000000..2f0bb40b
--- /dev/null
+++ b/assets/lib/simple-icons/icons/qualys.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Qualys</title><path d="M11.9986 0C5.4353 0 2.1382 3.5117 2.1382 3.5117s-.3775 2.5993-.1366 7.8332C2.3654 19.2513 11.999 24.0005 11.9999 24c.001-.0005 9.6347-4.7488 9.9985-12.6551.2408-5.2339-.1364-7.8332-.1364-7.8332S18.562 0 11.9986 0zm-.6782 2.9194a7.3657 7.3657 0 0 1 8.0454 7.3343 7.1158 7.1158 0 0 1-2.7712 5.6342c-1.1788-.108-2.4098-.4423-2.9676-.7605 1.4379-.9177 3.3036-2.7033 3.3036-4.8737a4.9361 4.9361 0 0 0-4.9305-4.9305c-2.7165 0-4.9266 2.2743-4.9266 5.0698 0 2.332 1.2355 4.1624 3.6718 5.4404 1.5943.8363 3.9724 1.449 6.4852 1.7723-.418.6225-1.533 1.686-2.1847 2.0462-3.0087-.4934-5.6513-1.5354-7.4578-3.0964-1.9323-1.6699-2.9536-3.8488-2.9536-6.3018a7.3657 7.3657 0 0 1 6.686-7.3343Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/quantcast.svg b/assets/lib/simple-icons/icons/quantcast.svg
index 812820de..c15802ef 100644
--- a/assets/lib/simple-icons/icons/quantcast.svg
+++ b/assets/lib/simple-icons/icons/quantcast.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Quantcast icon</title><path d="M15.11 20.474A10.024 10.024 0 0 0 19.737 12c0-5.523-4.419-10-9.869-10S0 6.477 0 12s4.418 10 9.868 10H24v-1.526h-8.89z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Quantcast</title><path d="M5.791 11.1c0-3.574 1.92-7.18 6.21-7.18 4.288 0 6.208 3.606 6.208 7.18 0 1.55-.362 3.106-1.121 4.371l-4.906-.005 1.507 2.601A6.607 6.607 0 0 1 12 18.28c-4.29 0-6.209-3.606-6.209-7.18m9.96 10.53L17.124 24h4.911l-2.607-4.496c2.36-2.14 3.57-5.283 3.57-8.404C22.998 5.584 19.221 0 12 0 4.78 0 1.002 5.584 1.002 11.1c0 5.515 3.778 11.1 10.998 11.1 1.377 0 2.627-.205 3.75-.572Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/quantconnect.svg b/assets/lib/simple-icons/icons/quantconnect.svg
new file mode 100644
index 00000000..d2cf4810
--- /dev/null
+++ b/assets/lib/simple-icons/icons/quantconnect.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>QuantConnect</title><path d="M24 12c0 6.6274-5.3726 12-12 12v-2.8065c5.0774 0 9.1935-4.116 9.1935-9.1934 0-5.0775-4.1161-9.1935-9.1935-9.1935S2.8065 6.9226 2.8065 12H0C0 5.3726 5.3726 0 12 0s12 5.3726 12 12zm-3.5446 0c0-4.6698-3.7856-8.4554-8.4554-8.4554v2.7973c3.1249 0 5.6581 2.5332 5.6581 5.6581 0 3.1249-2.5332 5.6581-5.6581 5.6581-3.1249 0-5.6581-2.5333-5.6581-5.6581H3.5446c0 4.6698 3.7856 8.4554 8.4554 8.4554S20.4554 16.6698 20.4554 12zM12 9.8819V7.0487c-2.7436 0-4.9677 2.2167-4.9677 4.9513 0 2.7345 2.2241 4.9513 4.9677 4.9513S16.9677 14.7345 16.9677 12h-2.8425c0 1.1698-.9515 2.1182-2.1252 2.1182S9.8748 13.1698 9.8748 12 10.8263 9.8819 12 9.8819z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/quantopian.svg b/assets/lib/simple-icons/icons/quantopian.svg
deleted file mode 100644
index 2f6a8c09..00000000
--- a/assets/lib/simple-icons/icons/quantopian.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Quantopian icon</title><path d="M14.5 12c0 1.103-.897 2-2 2h-1c-1.103 0-2-.897-2-2V9.5c0-1.103.897-2 2-2h1c1.103 0 2 .897 2 2zm-2-5.5h-1c-1.654 0-3 1.346-3 3V12c0 1.654 1.346 3 3 3v.5c0 .603.4 1.5 1.5 1.5h1v-1h-1c-.403 0-.494-.275-.5-.5V15c1.654 0 3-1.346 3-3V9.5c0-1.654-1.346-3-3-3M1 21.5v-19C1 1.673 1.673 1 2.5 1h19c.827 0 1.5.673 1.5 1.5v19c0 .827-.673 1.5-1.5 1.5h-19c-.827 0-1.5-.673-1.5-1.5zm23 0v-19C24 1.121 22.878 0 21.5 0h-19A2.503 2.503 0 000 2.5v19C0 22.878 1.121 24 2.5 24h19c1.378 0 2.5-1.122 2.5-2.5Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/quarkus.svg b/assets/lib/simple-icons/icons/quarkus.svg
index 3960ba32..44075de8 100644
--- a/assets/lib/simple-icons/icons/quarkus.svg
+++ b/assets/lib/simple-icons/icons/quarkus.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Quarkus icon</title><path d="M12.788 15.963l3.872-2.236v-4.47l-3.872 2.235v4.471zm.37.214L16.66 18.2v-4.043l-3.502 2.021zm3.291-7.714V4.42L12.947 6.44l3.502 2.022zm-3.872-1.808L8.704 8.891l3.873 2.236 3.872-2.236-3.872-2.236zm-.371-.214L8.704 4.42v4.043l3.502-2.022zm4.825 3.03v4.042l3.501-2.021-3.501-2.022zm-4.665 6.492v-4.471L8.494 9.256v4.471l3.872 2.236zM8.123 9.47L4.62 11.492l3.502 2.021V9.47zm.37 4.686v4.043l3.502-2.022-3.501-2.021z M20.007.134H3.979C1.79.134 0 1.902 0 4.064v15.832c0 2.161 1.79 3.93 3.979 3.93h10.976l-2.962-7.108-2.15 4.488H3.98c-.72 0-1.327-.6-1.327-1.31V4.064c0-.71.608-1.31 1.327-1.31h16.028c.719 0 1.327.6 1.327 1.31v15.832c0 .71-.608 1.31-1.327 1.31h-3.478l1.092 2.62h2.386c2.188 0 3.979-1.769 3.979-3.93V4.064c0-2.162-1.79-3.93-3.979-3.93z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Quarkus</title><path d="M3.981 0A3.993 3.993 0 0 0 0 3.981V20.02A3.993 3.993 0 0 0 3.981 24h10.983L12 16.8l-2.15 4.546H3.98c-.72 0-1.327-.608-1.327-1.327V3.98c0-.72.608-1.327 1.327-1.327h16.04c.72 0 1.327.608 1.327 1.327v16.04c0 .72-.608 1.327-1.327 1.327h-3.48L17.63 24h2.388A3.993 3.993 0 0 0 24 20.019V3.98A3.993 3.993 0 0 0 20.019 0zm4.324 4.217v3.858l3.341-1.93zm7.39 0l-3.341 1.929 3.34 1.929zM12 6.35L8.305 8.483 12 10.617l3.695-2.134zM8.104 8.832v4.266l3.695 2.133v-4.266zm7.792 0L12.2 10.965v4.266l3.695-2.133zm-8.146.204l-3.34 1.93 3.34 1.928zm8.5 0v3.858l3.34-1.929zm-8.146 4.47v3.859l3.341-1.93zm7.792 0l-3.341 1.93 3.34 1.929z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/quasar.svg b/assets/lib/simple-icons/icons/quasar.svg
new file mode 100644
index 00000000..fad04693
--- /dev/null
+++ b/assets/lib/simple-icons/icons/quasar.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Quasar</title><path d="M12 0a12 12 0 0 0-3.002.39v3.126a9.015 9.015 0 0 0-2.831 1.628 11.106 11.106 0 0 0 1.609 3.454c1.328-2.711 3.828-4.86 7.227-6.234V.397A12 12 0 0 0 11.999 0zm3.02 3.52a11.106 11.106 0 0 0-2.186 3.12c3.013-.204 6.124.886 9.012 3.143l1.704-.984A12 12 0 0 0 22.392 6a12 12 0 0 0-1.839-2.404l-2.706 1.563A9.014 9.014 0 0 0 15.02 3.52zm-11.567.078a12 12 0 0 0-1.846 2.403A12 12 0 0 0 .445 8.795l2.706 1.563a9.003 9.003 0 0 0-.005 3.266c1.273.332 2.546.444 3.796.334C5.258 11.45 4.647 8.21 5.157 4.58zM12 9.658A2.341 2.341 0 0 0 9.66 12 2.341 2.341 0 0 0 12 14.341 2.341 2.341 0 0 0 14.341 12a2.341 2.341 0 0 0-2.34-2.341zm6 .343c-.315 0-.63.014-.942.042 1.684 2.506 2.296 5.746 1.785 9.376l1.704.983a12 12 0 0 0 1.846-2.403 12 12 0 0 0 1.162-2.794l-2.706-1.563c.202-1.09.2-2.197.005-3.266a11.316 11.316 0 0 0-2.855-.375zM2.154 14.217l-1.704.984A12 12 0 0 0 1.608 18a12 12 0 0 0 1.839 2.404l2.706-1.563A9.015 9.015 0 0 0 8.98 20.48a11.106 11.106 0 0 0 2.187-3.12c-3.013.204-6.124-.886-9.012-3.143zm14.07 1.185c-1.329 2.711-3.828 4.86-7.227 6.234v1.967a12 12 0 0 0 3.004.397 12 12 0 0 0 3.001-.39v-3.126a9.015 9.015 0 0 0 2.831-1.628 11.106 11.106 0 0 0-1.609-3.454z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/qubesos.svg b/assets/lib/simple-icons/icons/qubesos.svg
new file mode 100644
index 00000000..d7031d07
--- /dev/null
+++ b/assets/lib/simple-icons/icons/qubesos.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Qubes OS</title><path d="M21.893 20.79l-2.289-1.332 1.547-.895a2.402 2.402 0 0 0 1.2-2.08V7.098l-.003-.059a2.402 2.402 0 0 0-1.198-2.027l-3.899-2.255-4.21-2.436a2.473 2.473 0 0 0-.237-.118L12.77.187l-.093-.036-.052-.019c-.028-.01-.057-.018-.085-.027l-.062-.019-.079-.02-.072-.017-.073-.013-.079-.013-.068-.008-.087-.008-.063-.004A10.324 10.324 0 0 0 11.9 0h-.03l-.082.001-.076.002-.093.007-.064.006c-.037.004-.073.01-.11.016-.014.004-.029.006-.044.009a3.266 3.266 0 0 0-.154.034 2.39 2.39 0 0 0-.602.245L5.536 3.277l-3 1.736a2.407 2.407 0 0 0-1.201 2.083v9.385a2.405 2.405 0 0 0 1.2 2.08l8.108 4.693a2.395 2.395 0 0 0 2.4.002l1.804-1.044 2.302 1.339c1.03.599 2.687.599 3.716 0l1.03-.6c1.027-.597 1.027-1.562-.002-2.161zm-10.71-2.695l-4.46-2.583a1.324 1.324 0 0 1-.66-1.143V9.206c0-.236.063-.464.177-.662l.002.001c.116-.2.282-.368.482-.485l4.459-2.58c.092-.053.189-.093.289-.122l.034-.01c.035-.01.07-.015.105-.022.023-.004.045-.01.068-.013.031-.004.062-.004.093-.006.028 0 .055-.004.083-.004.036 0 .073.004.11.007.02.002.038.002.058.005.037.005.074.014.11.022.018.004.037.007.055.012.04.011.077.025.115.04l.045.015c.052.022.104.047.154.076l4.46 2.58c.198.116.364.283.48.483l.002.003-.003.002c.116.201.177.43.177.661v5.161c0 .15-.028.295-.076.433a1.32 1.32 0 0 1-.583.71l-4.46 2.582a1.312 1.312 0 0 1-1.316 0z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/quest.svg b/assets/lib/simple-icons/icons/quest.svg
index e87a22c6..e53a51bc 100644
--- a/assets/lib/simple-icons/icons/quest.svg
+++ b/assets/lib/simple-icons/icons/quest.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Quest icon</title><path d="M3.12 8.76a3.241 3.241 0 00-3.117 3.355 3.241 3.241 0 003.354 3.115 3.201 3.201 0 001.791-.628l-.496-.362a.174.174 0 00-.187-.011c-.381.215-.821.335-1.293.324A2.522 2.522 0 01.727 12.16a2.51 2.51 0 015.011-.297 2.5 2.5 0 01-.43 1.59.179.179 0 00.042.246l.418.307c-.003.003-.09.123-.28.299-.192.178-.34.295-.34.295l.541.416c.068.052.161.052.227-.002a4.498 4.498 0 00.389-.371.183.183 0 00-.028-.272l-.506-.369c.48-.604.73-1.348.702-2.125A3.241 3.241 0 003.119 8.76zm18.112.687v1.293h-.271a.202.202 0 00-.203.201v.414h.474v2.28c0 1.087.553 1.6 1.485 1.6.53 0 .959-.184 1.283-.43l-.22-.358a.186.186 0 00-.25-.062 1.544 1.544 0 01-.759.209c-.502 0-.859-.297-.859-.973v-2.266h1.156a.173.173 0 00.174-.173v-.442h-1.33V9.63a.18.18 0 00-.182-.182h-.498zM7.438 10.74c-.1 0-.18.08-.18.18v2.432c0 1.283.917 1.89 1.963 1.89 1.04 0 1.965-.607 1.965-1.89v-2.436a.175.175 0 00-.176-.176h-.51v2.547c0 .895-.54 1.315-1.28 1.315s-1.283-.42-1.283-1.315V10.74h-.5zm6.605 0c-1.233 0-2.147.922-2.147 2.246 0 1.338.91 2.248 2.188 2.248.635 0 1.238-.16 1.777-.675l-.257-.329a.167.167 0 00-.235-.03c-.347.273-.769.435-1.244.435-.781 0-1.433-.479-1.53-1.41h3.288a.192.192 0 00.191-.188l.002-.068c-.01-1.316-.86-2.229-2.033-2.229zm4.414 0c-1.037 0-1.727.493-1.727 1.31 0 .645.457 1.077 1.43 1.196l.516.06c.612.074.904.283.904.63 0 .456-.462.699-1.193.699-.617 0-1.024-.152-1.334-.354a.196.196 0 00-.274.063l-.205.332c.548.415 1.248.553 1.805.553 1.165 0 1.904-.516 1.904-1.338 0-.708-.535-1.087-1.453-1.205l-.512-.065c-.566-.068-.88-.247-.88-.607 0-.42.406-.68 1.023-.68.492 0 .961.152 1.264.314a.18.18 0 00.242-.07l.123-.219a.18.18 0 00-.07-.244c-.408-.227-.962-.375-1.563-.375zm-4.428.602c.736 0 1.265.521 1.352 1.33h-2.776c.11-.781.625-1.33 1.424-1.33Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Quest</title><path d="M3.284 8.755c-.055 0-.11 0-.166.002-.096 0-.2.01-.296.029a3.225 3.225 0 0 0-2.82 3.325 3.243 3.243 0 0 0 3.354 3.115 3.211 3.211 0 0 0 1.79-.629l-.495-.362a.173.173 0 0 0-.19-.01c-.381.22-.82.334-1.296.324C1.86 14.521.784 13.463.717 12.16a2.519 2.519 0 0 1 2.744-2.62 2.518 2.518 0 0 1 2.276 2.324 2.525 2.525 0 0 1-.428 1.59.18.18 0 0 0 .038.249l.42.304c.485-.61.733-1.352.704-2.133a3.244 3.244 0 0 0-3.187-3.118zm2.482 5.251s-.095.124-.286.305c-.19.181-.343.296-.343.296l.553.41a.2.2 0 0 0 .229 0 3.338 3.338 0 0 0 .381-.372.177.177 0 0 0-.03-.267zm17.586-4.572c-.038 0-.076 0-.105.028a.198.198 0 0 0-.095.058.208.208 0 0 0-.067.085c-.01.029-.019.067-.028.105 0 .038 0 .076.019.114a.345.345 0 0 0 .067.096c.028.019.057.047.095.057.038.01.076.019.114.019.038 0 .076-.01.114-.02a.198.198 0 0 0 .096-.056c.019-.029.047-.058.057-.096a.479.479 0 0 0 .019-.114.412.412 0 0 0-.02-.114.225.225 0 0 0-.056-.086.903.903 0 0 0-.096-.057.477.477 0 0 0-.114-.02zm-2.124.01v1.295h-.277c-.114 0-.2.095-.2.2v.41h.477v2.276c0 1.086.552 1.601 1.486 1.601A2.08 2.08 0 0 0 24 14.797l-.22-.352a.186.186 0 0 0-.247-.067c-.228.124-.486.21-.762.21-.505 0-.857-.296-.857-.972v-2.267h1.152a.17.17 0 0 0 .172-.172v-.438h-1.334V9.624a.18.18 0 0 0-.18-.18zm2.124.037c.038 0 .067.01.095.02a.2.2 0 0 1 .077.047.203.203 0 0 1 .047.076c.01.029.02.057.02.096a.34.34 0 0 1-.02.095.207.207 0 0 1-.047.076.208.208 0 0 1-.077.048.338.338 0 0 1-.095.019.282.282 0 0 1-.095-.02.208.208 0 0 1-.076-.047.208.208 0 0 1-.048-.076c-.01-.038-.01-.067-.02-.095 0-.039.01-.067.02-.096a.207.207 0 0 1 .048-.076.208.208 0 0 1 .076-.048.282.282 0 0 1 .095-.019zm-.124.067v.333h.048V9.74h.057l.095.142h.058l-.096-.142a.464.464 0 0 0 .067-.029.087.087 0 0 0 .029-.067c0-.038-.01-.057-.03-.076a.19.19 0 0 0-.085-.019zm.067.038h.095s.01.01.02.01l.018.019c.01.01.01.019.01.028 0 .01 0 .02-.01.029 0 .01-.01.019-.019.019-.01.01-.019.01-.028.01h-.029v-.01h-.057zm-9.25 1.143c-1.23 0-2.144.924-2.144 2.249 0 1.343.915 2.248 2.191 2.248.639 0 1.239-.162 1.782-.677l-.257-.323a.177.177 0 0 0-.239-.029 1.99 1.99 0 0 1-1.248.438c-.78 0-1.438-.476-1.533-1.41h3.286a.19.19 0 0 0 .19-.19v-.067c-.009-1.315-.856-2.23-2.028-2.239zm-6.602.01a.18.18 0 0 0-.181.18v2.43c0 1.286.914 1.896 1.962 1.896 1.039 0 1.963-.61 1.963-1.896V10.91a.17.17 0 0 0-.172-.171h-.505v2.544c0 .895-.533 1.314-1.276 1.314s-1.286-.419-1.286-1.314v-2.544zm11.032 0c-1.039 0-1.725.495-1.725 1.315 0 .647.457 1.086 1.43 1.2l.514.057c.61.067.905.286.905.629 0 .457-.458.695-1.191.695-.62 0-1.02-.152-1.334-.352a.2.2 0 0 0-.276.066l-.21.334c.543.419 1.239.552 1.8.552 1.163 0 1.906-.523 1.906-1.343 0-.714-.533-1.095-1.448-1.21l-.514-.066c-.572-.067-.886-.248-.886-.61 0-.42.4-.676 1.019-.676.495 0 .962.152 1.267.314.086.047.19.019.238-.067l.134-.21a.184.184 0 0 0-.067-.247 3.263 3.263 0 0 0-1.562-.381zm-4.44.6c.734 0 1.267.524 1.353 1.334h-2.782c.105-.781.629-1.334 1.43-1.334z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/quickbooks.svg b/assets/lib/simple-icons/icons/quickbooks.svg
new file mode 100644
index 00000000..60c33be3
--- /dev/null
+++ b/assets/lib/simple-icons/icons/quickbooks.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>QuickBooks</title><path d="M12 0A12 12 0 0 0 0 12a12 12 0 0 0 12 12 12 12 0 0 0 12-12A12 12 0 0 0 12 0zm.642 4.1335c.9554 0 1.7296.776 1.7296 1.7332v9.0667h1.6c1.614 0 2.9275-1.3156 2.9275-2.933 0-1.6173-1.3136-2.9333-2.9276-2.9333h-.6654V7.3334h.6654c2.5722 0 4.6577 2.0897 4.6577 4.667 0 2.5774-2.0855 4.6666-4.6577 4.6666H12.642zM7.9837 7.333h3.3291v12.533c-.9555 0-1.73-.7759-1.73-1.7332V9.0662H7.9837c-1.6146 0-2.9277 1.316-2.9277 2.9334 0 1.6175 1.3131 2.9333 2.9277 2.9333h.6654v1.7332h-.6654c-2.5725 0-4.6577-2.0892-4.6577-4.6665 0-2.5771 2.0852-4.6666 4.6577-4.6666Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/quicklook.svg b/assets/lib/simple-icons/icons/quicklook.svg
new file mode 100644
index 00000000..0b3ad854
--- /dev/null
+++ b/assets/lib/simple-icons/icons/quicklook.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>QuickLook</title><path d="M18.814 11.913a4.786 4.786 0 0 1-4.786 4.786 4.786 4.786 0 0 1-4.786-4.786 4.786 4.786 0 0 1 4.786-4.786 4.786 4.786 0 0 1 4.786 4.786zm1.687 0a6.473 6.473 0 0 1-6.473 6.473 6.473 6.473 0 0 1-6.473-6.473 6.473 6.473 0 0 1 6.473-6.473 6.473 6.473 0 0 1 6.473 6.473zM7.155 1c-2.992.545-5.533 1.037-5.638 1.084a1.274 1.274 0 0 0-.352.298l-.158.205v18.819l.158.205c.088.111.246.246.352.299.24.111 11.095 2.09 11.481 2.09.322 0 .527-.094.756-.334.269-.287.286-.474.269-2.64l-.018-2.003h.293c1.03 0 2.447-.445 3.425-1.077.229-.146.434-.27.457-.27.023 0 .755.715 1.622 1.587.872.873 1.65 1.622 1.739 1.669.088.047.28.082.427.082.592 0 1.025-.416 1.025-.972 0-.17-.03-.38-.065-.474-.029-.088-.784-.89-1.668-1.78l-1.61-1.61.216-.322c1.154-1.716 1.458-4.075.785-6.095-.357-1.066-.837-1.827-1.692-2.688-1.124-1.13-2.29-1.745-3.835-2.014a6.683 6.683 0 0 0-.82-.088h-.299l.018-2.002c.017-2.143 0-2.313-.258-2.623-.222-.264-.439-.352-.825-.346-.188 0-2.787.451-5.785 1.001z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/quicktime.svg b/assets/lib/simple-icons/icons/quicktime.svg
index 6041ddf9..e5413243 100644
--- a/assets/lib/simple-icons/icons/quicktime.svg
+++ b/assets/lib/simple-icons/icons/quicktime.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>QuickTime icon</title><path d="M12 0A12 12 0 1 0 18.63 22L20.61 23.97H23.75L24 23.72V20.57L22 18.59A11.94 11.94 0 0 0 24 12A12 12 0 0 0 12 0M12 4.2A7.8 7.8 0 0 1 18.95 15.53L13.7 10.27A2.4 2.4 0 1 0 10.3 13.67L15.57 18.93A7.76 7.76 0 0 1 12 19.8A7.8 7.8 0 0 1 12 4.2Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>QuickTime</title><path d="M12.002 0a11.998 12 0 106.629 22l1.98 1.97h3.139l.25-.25v-3.15l-2-1.98A11.938 11.94 0 0024 12 11.998 12 0 0012.002 0m0 4.2a7.799 7.8 0 016.949 11.33l-5.25-5.26a2.404 2.404 0 10-3.4 3.4l5.27 5.26a7.759 7.76 0 01-3.57.87 7.799 7.8 0 010-15.6z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/quip.svg b/assets/lib/simple-icons/icons/quip.svg
index 5838c08a..cde1773b 100644
--- a/assets/lib/simple-icons/icons/quip.svg
+++ b/assets/lib/simple-icons/icons/quip.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Quip icon</title><path d="M22.154 22.154H12a10.06 10.06 0 01-7.4-3.201C2.66 16.89 1.69 14.19 1.868 11.35c.315-5.091 4.39-9.168 9.482-9.484.22-.014.44-.02.657-.02A10.058 10.059 0 0118.952 4.6a10.058 10.059 0 013.202 7.4zm-1.938-18.9C17.778.963 14.59-.186 11.236.024 5.218.399.398 5.219.024 11.237c-.207 3.353.94 6.543 3.231 8.98A12.047 12.048 0 0012 24h11.077c.51 0 .923-.413.923-.922V12a12.047 12.048 0 00-3.784-8.745m-4.062 11.976H7.846a.923.923 0 000 1.846h8.308a.923.923 0 000-1.846M7.846 8.77h8.308a.923.923 0 000-1.847H7.846a.923.923 0 000 1.847m-2.769 2.308a.923.923 0 000 1.845h13.846a.923.923 0 000-1.846H5.077Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Quip</title><path d="M22.154 22.154H12a10.06 10.06 0 01-7.4-3.201C2.66 16.89 1.69 14.19 1.868 11.35c.315-5.091 4.39-9.168 9.482-9.484.22-.014.44-.02.657-.02A10.058 10.059 0 0118.952 4.6a10.058 10.059 0 013.202 7.4zm-1.938-18.9C17.778.963 14.59-.186 11.236.024 5.218.399.398 5.219.024 11.237c-.207 3.353.94 6.543 3.231 8.98A12.047 12.048 0 0012 24h11.077c.51 0 .923-.413.923-.922V12a12.047 12.048 0 00-3.784-8.745m-4.062 11.976H7.846a.923.923 0 000 1.846h8.308a.923.923 0 000-1.846M7.846 8.77h8.308a.923.923 0 000-1.847H7.846a.923.923 0 000 1.847m-2.769 2.308a.923.923 0 000 1.845h13.846a.923.923 0 000-1.846H5.077Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/quora.svg b/assets/lib/simple-icons/icons/quora.svg
index ea177650..7d288820 100644
--- a/assets/lib/simple-icons/icons/quora.svg
+++ b/assets/lib/simple-icons/icons/quora.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Quora icon</title><path d="M12.738 18.701c-.831-1.635-1.805-3.287-3.708-3.287-.362 0-.727.061-1.059.209l-.646-1.289c.786-.678 2.058-1.214 3.693-1.214 2.544 0 3.851 1.229 4.888 2.792.613-1.335.904-3.14.904-5.375 0-5.582-1.744-8.447-5.822-8.447-4.018 0-5.757 2.865-5.757 8.447 0 5.553 1.739 8.389 5.757 8.389.64 0 1.22-.069 1.75-.225zm.996 1.947c-.881.237-1.817.366-2.743.366-5.352 0-10.59-4.269-10.59-10.478C.402 4.271 5.639 0 10.991 0c5.441 0 10.628 4.238 10.628 10.537 0 3.504-1.635 6.351-4.01 8.191.764 1.148 1.543 1.914 2.652 1.914 1.199 0 1.68-.915 1.77-1.649h1.557c.092.974-.402 5.007-4.766 5.007-2.652 0-4.047-1.528-5.096-3.328l.008-.024z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Quora</title><path d="M7.3799.9483A11.9628 11.9628 0 0 1 21.248 19.5397l2.4096 2.4225c.7322.7362.21 1.9905-.8272 1.9905l-10.7105.01a12.52 12.52 0 0 1-.304 0h-.02A11.9628 11.9628 0 0 1 7.3818.9503Zm7.3217 4.428a7.1717 7.1717 0 1 0-5.4873 13.2512 7.1717 7.1717 0 0 0 5.4883-13.2511Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/qwiklabs.svg b/assets/lib/simple-icons/icons/qwiklabs.svg
index a4b23998..0e6f33d0 100644
--- a/assets/lib/simple-icons/icons/qwiklabs.svg
+++ b/assets/lib/simple-icons/icons/qwiklabs.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 24 24"><title>Qwiklabs icon</title><path d="M14.346 18.205A6.464 6.464 0 0 0 12 5.72a6.462 6.462 0 0 0-2.346 12.485.69.69 0 0 0 .961-.623v-5.4a1.385 1.385 0 1 1 2.77 0v5.4a.692.692 0 0 0 .961.623zm.809 5.558C20.252 22.378 24 17.718 24 12.182c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.536 3.748 10.196 8.845 11.581a.7.7 0 0 0 .049.013l.059.016.001-.002a1.385 1.385 0 0 0 .635-2.695 9.231 9.231 0 1 1 4.824-.001 1.385 1.385 0 0 0 .635 2.695l.001.002.059-.016.049-.013z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Qwiklabs</title><path d="M14.346 18.205A6.464 6.464 0 0 0 12 5.72a6.462 6.462 0 0 0-2.346 12.485.69.69 0 0 0 .961-.623v-5.4a1.385 1.385 0 1 1 2.77 0v5.4a.692.692 0 0 0 .961.623zm.809 5.558C20.252 22.378 24 17.718 24 12.182c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.536 3.748 10.196 8.845 11.581a.7.7 0 0 0 .049.013l.059.016.001-.002a1.385 1.385 0 0 0 .635-2.695 9.231 9.231 0 1 1 4.824-.001 1.385 1.385 0 0 0 .635 2.695l.001.002.059-.016.049-.013z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/qzone.svg b/assets/lib/simple-icons/icons/qzone.svg
index 084c5f83..041bbd85 100644
--- a/assets/lib/simple-icons/icons/qzone.svg
+++ b/assets/lib/simple-icons/icons/qzone.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Qzone icon</title><path d="M23.985 9.202c-.032-.099-.127-.223-.334-.258-.207-.036-7.351-1.406-7.351-1.406s-.105-.022-.198-.07c-.092-.047-.127-.167-.127-.167S12.447.956 12.349.77C12.25.583 12.104.532 12 .532c-.104 0-.251.051-.349.238-.098.186-3.626 6.531-3.626 6.531s-.035.12-.128.167c-.092.047-.197.07-.197.07S.556 8.908.348 8.943c-.208.036-.302.16-.333.258a.477.477 0 0 0 .125.449l5.362 5.49s.072.08.119.172c.016.104.005.21.005.21s-1.189 7.242-1.22 7.45.075.369.159.43c.083.062.233.106.421.013.189-.093 6.812-3.261 6.812-3.261s.098-.044.201-.061c.103-.017.201.061.201.061s6.623 3.168 6.812 3.261c.188.094.338.049.421-.013a.463.463 0 0 0 .159-.43c-.021-.14-.93-5.677-.93-5.677.876-.54 1.425-1.039 1.849-1.747-2.594.969-6.006 1.717-9.415 1.866-.915.041-2.41.097-3.473-.015-.678-.071-1.17-.144-1.243-.438-.053-.215.054-.46.545-.831a2640.5 2640.5 0 0 1 2.861-2.155c1.285-.968 3.559-2.47 3.559-2.731 0-.285-2.144-.781-4.037-.781-1.945 0-2.275.132-2.811.168-.488.034-.769.005-.804-.138-.06-.248.183-.389.588-.568.709-.314 1.86-.594 1.984-.626.194-.052 3.082-.805 5.618-.535 1.318.14 3.244.668 3.244 1.276 0 .342-1.721 1.494-3.225 2.597-1.149.843-2.217 1.561-2.217 1.688 0 .342 3.533 1.241 6.689 1.01l.003-.022c.048-.092.119-.172.119-.172l5.362-5.49a.477.477 0 0 0 .127-.449z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Qzone</title><path d="M23.9868 9.2012c-.032-.099-.127-.223-.334-.258-.207-.036-7.352-1.4063-7.352-1.4063s-.105-.022-.198-.07c-.092-.047-.127-.167-.127-.167S12.4472.954 12.3491.7679c-.099-.187-.245-.238-.349-.238-.104 0-.251.051-.349.238C11.5531.954 8.0245 7.3 8.0245 7.3s-.035.12-.128.167c-.092.047-.197.07-.197.07S.5546 8.9071.3466 8.9421c-.208.036-.302.16-.333.258a.477.477 0 00.125.4491L5.5013 15.14s.072.08.119.172c.016.104.005.21.005.21s-1.1891 7.243-1.2201 7.451c-.031.208.075.369.159.4301.083.062.233.106.421.013.189-.093 6.813-3.2614 6.813-3.2614s.098-.044.201-.061c.103-.017.201.061.201.061s6.624 3.1684 6.813 3.2614c.188.094.338.049.421-.013a.463.463 0 00.159-.43c-.021-.14-.93-5.6778-.93-5.6778.876-.5401 1.4251-1.0392 1.8492-1.7473-2.5944.9692-6.0069 1.7173-9.4163 1.8663-.9152.041-2.4104.097-3.4735-.015-.6781-.071-1.1702-.144-1.2432-.438-.053-.2151.054-.4601.5451-.8312a2640.8625 2640.8625 0 012.8614-2.1553c1.2852-.9681 3.5595-2.4703 3.5595-2.7314 0-.285-2.1443-.781-4.0376-.781-1.9452 0-2.2753.132-2.8114.168-.488.034-.769.005-.804-.138-.06-.2481.183-.3891.588-.5682.7091-.314 1.8603-.594 1.9843-.626.194-.052 3.0824-.8051 5.6188-.5351 1.3181.14 3.2444.668 3.2444 1.2762 0 .342-1.7212 1.4942-3.2254 2.5973-1.1492.8431-2.2173 1.5612-2.2173 1.6883 0 .342 3.5334 1.2411 6.6899 1.01l.003-.022c.048-.092.119-.172.119-.172l5.3627-5.4907a.477.477 0 00.127-.449z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/r.svg b/assets/lib/simple-icons/icons/r.svg
index 10954fcc..39c03e1b 100644
--- a/assets/lib/simple-icons/icons/r.svg
+++ b/assets/lib/simple-icons/icons/r.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>R icon</title><path d="M12 18.82c-6.627 0-12-3.598-12-8.037s5.373-8.037 12-8.037 12 3.599 12 8.037-5.373 8.037-12 8.037zm1.837-12.932c-5.038 0-9.121 2.46-9.121 5.495s4.083 5.494 9.12 5.494 8.756-1.682 8.756-5.494-3.718-5.495-8.755-5.495zM18.275 15.194a9.038 9.038 0 0 1 1.149.433 2.221 2.221 0 0 1 .582.416 1.573 1.573 0 0 1 .266.383l2.863 4.826-4.627.002-2.163-4.063a5.229 5.229 0 0 0-.716-.982.753.753 0 0 0-.549-.25h-1.099v5.292l-4.093.001V7.737h8.221s3.744.067 3.744 3.63a3.822 3.822 0 0 1-3.578 3.827zm-1.78-4.526l-2.479-.001v2.298h2.479a1.134 1.134 0 0 0 1.148-1.17 1.07 1.07 0 0 0-1.148-1.127z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>R</title><path d="M12 2.746c-6.627 0-12 3.599-12 8.037 0 3.897 4.144 7.144 9.64 7.88V16.26c-2.924-.915-4.925-2.755-4.925-4.877 0-3.035 4.084-5.494 9.12-5.494 5.038 0 8.757 1.683 8.757 5.494 0 1.976-.999 3.379-2.662 4.272.09.066.174.128.258.216.169.149.25.363.372.544 2.128-1.45 3.44-3.437 3.44-5.631 0-4.44-5.373-8.038-12-8.038zm-2.111 4.99v13.516l4.093-.002-.002-5.291h1.1c.225 0 .321.066.549.25.272.22.715.982.715.982l2.164 4.063 4.627-.002-2.864-4.826s-.086-.193-.265-.383a2.22 2.22 0 00-.582-.416c-.422-.214-1.149-.434-1.149-.434s3.578-.264 3.578-3.826c0-3.562-3.744-3.63-3.744-3.63zm4.127 2.93l2.478.002s1.149-.062 1.149 1.127c0 1.165-1.149 1.17-1.149 1.17h-2.478zm1.754 6.119c-.494.049-1.012.079-1.54.088v1.807a16.622 16.622 0 002.37-.473l-.471-.891s-.108-.183-.248-.394c-.039-.054-.08-.098-.111-.137z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/r3.svg b/assets/lib/simple-icons/icons/r3.svg
new file mode 100644
index 00000000..14285b14
--- /dev/null
+++ b/assets/lib/simple-icons/icons/r3.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>R3</title><path d="M24 13.457c0 .841-.688 1.53-1.53 1.53-.842 0-1.53-.689-1.53-1.53a1.53 1.53 0 1 1 3.06 0zM6.147 2.853c-1.123 0-2.172.3-3.08.828v-.828H0v12.134h3.067V9a3.077 3.077 0 0 1 3.08-3.08l1.029-.007 2.105-3.06H6.147zm8.746 6.08 2.078-3.02v-3.06h-6.615l-2.104 3.06h4.99l-2.565 3.735 1.53 2.653a3.098 3.098 0 0 1 4.65 2.686c0 1.717-1.39 3.1-3.1 3.1-1.71 0-3.1-1.39-3.1-3.1h-3.06c0 3.4 2.76 6.16 6.154 6.16 3.4 0 6.16-2.76 6.16-6.16a6.162 6.162 0 0 0-5.018-6.054z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/rabbitmq.svg b/assets/lib/simple-icons/icons/rabbitmq.svg
index 1b45ad74..27285b73 100644
--- a/assets/lib/simple-icons/icons/rabbitmq.svg
+++ b/assets/lib/simple-icons/icons/rabbitmq.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>RabbitMQ icon</title><path d="M22.2,9.739h-7.09c-0.567-0.068-0.999-0.567-0.999-1.155v-7.44C14.112,0.51,13.597,0,12.968,0h-2.481 C9.852,0,9.342,0.515,9.342,1.145v7.518C9.311,9.23,8.843,9.687,8.281,9.739H6.424C5.878,9.672,5.456,9.214,5.42,8.662V1.145 C5.42,0.51,4.905,0,4.276,0H1.794C1.16,0,0.65,0.515,0.65,1.145v9.739v11.971C0.65,23.49,1.165,24,1.794,24h2.481h6.211h2.481 h9.238c0.635,0,1.144-0.515,1.144-1.145V10.884C23.345,10.249,22.835,9.739,22.2,9.739z M18.934,17.949 c0,0.635-0.515,1.145-1.144,1.145h-2.481c-0.635,0-1.144-0.515-1.144-1.145v-2.341c0-0.635,0.515-1.145,1.144-1.145h2.481 c0.635,0,1.144,0.515,1.144,1.145V17.949z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>RabbitMQ</title><path d="M23.035 9.601h-7.677a.956.956 0 01-.962-.962V.962a.956.956 0 00-.962-.956H10.56a.956.956 0 00-.962.956V8.64a.956.956 0 01-.962.962H5.762a.956.956 0 01-.961-.962V.962A.956.956 0 003.839 0H.959a.956.956 0 00-.956.962v22.076A.956.956 0 00.965 24h22.07a.956.956 0 00.962-.962V10.58a.956.956 0 00-.962-.98zm-3.86 8.152a1.437 1.437 0 01-1.437 1.443h-1.924a1.437 1.437 0 01-1.436-1.443v-1.917a1.437 1.437 0 011.436-1.443h1.924a1.437 1.437 0 011.437 1.443z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/racket.svg b/assets/lib/simple-icons/icons/racket.svg
new file mode 100644
index 00000000..1abfec7b
--- /dev/null
+++ b/assets/lib/simple-icons/icons/racket.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Racket</title><path d="M12 0a11.95 11.95 0 0 0-4.104.721c4.872 2.556 11.316 10.893 13.547 18.686A11.957 11.957 0 0 0 24 12c0-6.627-5.373-12-12-12zM4.093 2.974A11.971 11.971 0 0 0 0 12c0 3.026 1.12 5.789 2.968 7.9 1.629-4.894 4.691-9.611 7.313-12.246-1.872-2.016-3.968-3.618-6.188-4.68zm2.276 19.625A11.947 11.947 0 0 0 12 24c2.092 0 4.059-.536 5.772-1.478-.987-4.561-2.851-8.739-5.28-12.147-2.597 2.8-5.186 7.702-6.123 12.224z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/radar.svg b/assets/lib/simple-icons/icons/radar.svg
new file mode 100644
index 00000000..c59eb6d1
--- /dev/null
+++ b/assets/lib/simple-icons/icons/radar.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Radar</title><path d="M12 0L2.197 23.975 12 19.952 21.803 24z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/radiopublic.svg b/assets/lib/simple-icons/icons/radiopublic.svg
index c45eb515..67245f9a 100644
--- a/assets/lib/simple-icons/icons/radiopublic.svg
+++ b/assets/lib/simple-icons/icons/radiopublic.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>RadioPublic icon</title><path d="M13.938 4.073c3.256-.284 6.512-1.977 9.768-.536v19.889c-4.491-1.989-8.983 1.989-13.474 0v-3.151-.347c-3.313.27-6.625 1.987-9.938.539V.578c4.548 1.989 9.096-1.989 13.644 0zm2.48 10.797c.393-.086.784-.174 1.176-.259 1.735-.379 2.427-1.403 2.426-3.014V9c0-1.585-.447-2.59-2.556-2.135-1.176.257-2.35.543-3.527.645v12.968c.827-.072 1.654-.235 2.482-.414zm0-2.11V9.1l.467-.102c.58-.129.633.156.635.627v2.161c0 .401-.055.744-.635.872l-.466.102zm-9.887 4.35v-5.542l.522-.114c.504-.11.652.015.653.625v3.783c0 .575.094.834.224.946.828-.173 1.654-.323 2.481-.377v-.087c-.092-.15-.205-.385-.204-.944v-4.41c0-.962-.673-1.33-1.064-1.4.465-.272 1.101-.802 1.1-1.88V5.638c0-1.391-.764-2.126-2.276-1.805-1.305.272-2.612.606-3.918.718V17.52c.827-.072 1.654-.232 2.482-.409zm0-7.686V6.147c.186-.04.373-.08.56-.122.503-.11.615.041.615.599v1.76c0 .61-.185.824-.69.934l-.485.106z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>RadioPublic</title><path d="M13.793 4.0692c3.0122-.2832 6.0245-1.9773 9.037-.5353v19.892c-4.1555-1.9892-8.3106 1.989-12.4656 0l-.0002-3.1517v-.3473c-3.0646.271-6.1294 1.988-9.1941.5392V.5742c4.2077 1.989 8.4155-1.989 12.6229 0zm2.2949 10.7988c.3625-.0852.725-.1737 1.0875-.2584 1.6054-.3793 2.2448-1.403 2.244-3.015V8.9974c.0004-1.5849-.4136-2.591-2.3648-2.1348-1.0875.2563-2.1747.5422-3.2626.6441v12.9706c.7652-.0717 1.5303-.2347 2.2959-.414zm0-2.1095V9.0973c.1435-.0335.2875-.068.431-.1023.5373-.1282.5864.1568.5876.6274-.0004.7207-.0004 1.441 0 2.1618-.0004.401-.0507.7437-.5876.872a82.0824 82.0824 0 0 1-.431.1023zm-9.148 4.3506v-5.5437c.1609-.0373.3223-.0754.4833-.1134.4667-.1102.6033.0151.6041.6253v3.7832c.0009.5754.0872.8338.2072.9464.7656-.1732 1.5304-.3227 2.2955-.3772v-.0872c-.0855-.1507-.1902-.3854-.1893-.9435v-4.4106c.0008-.9632-.622-1.3306-.9842-1.401.4303-.2724 1.019-.8019 1.0182-1.8793V5.6334c0-1.3907-.7072-2.1254-2.1057-1.8048-1.208.2724-2.4167.6057-3.625.7183v12.9705c.7655-.0712 1.5307-.2313 2.2958-.4083zm0-7.688V6.1437a73.198 73.198 0 0 0 .5177-.1217c.466-.1101.5693.041.5697.5988v1.761c0 .6101-.1715.8239-.6386.934-.1496.0353-.2993.071-.4489.1053z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/rails.svg b/assets/lib/simple-icons/icons/rails.svg
deleted file mode 100644
index 12e02e17..00000000
--- a/assets/lib/simple-icons/icons/rails.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Rails icon</title><path d="M20.8848485 15.8107143v1.1635714h1.9818182c.4060606 0 1.1030303-.315 1.1272727-1.19571427v-.45c0-.75214286-.5818182-1.1957143-1.1272727-1.1957143h-.9878788v-.54h1.9575757v-1.17h-1.8787878c-.4848485 0-1.1333334.42428573-1.1333334 1.215v.405c0 .7907143.6424243 1.1957143 1.1333334 1.1957143 1.3636363.00642857-.3272728 0 .9333333 0v.56571428l-2.0060606.0064286zm-10.6181818-.28285716s1.060606-.09642857 1.060606-1.5492857c0-1.45285715-1.2848485-1.58785715-1.2848485-1.58785715H7.72727273v4.5835714H8.8909091v-1.1057143l1.0060606 1.1057142h1.7212121l-1.3515151-1.4464286zm-.44848488-.93857143H8.8909091v-1.0478571h.93333332s.26060608.1028572.26060608.5207143c0 .4178572-.26666668.5271429-.26666668.5271429zM14.2 12.4228572h-1.1818182c-.8424242 0-1.1272727.81-1.1272727 1.1957143v3.35571427h1.1818182v-.8035714h1.1090909v.8035714h1.1454545V13.6185715c0-.97714286-.8363636-1.1957143-1.1272727-1.1957143zm-.0181818 2.44928572h-1.1151515V13.76s0-.2507143.3696969-.2507143h.4060606c.3272728 0 .3333334.2507143.3333334.2507143v1.11214286h.0060606zm1.6848485-2.44928573h1.230303v4.5514285h-1.230303v-4.5514285zm2.9575757 3.375v-3.375H17.6v4.5514285h2.8787879v-1.1764285h-1.6545455zM.42424242 16.9742857h4.7878788S4.2969697 12.545 7.3272727 10.75142858c.66060607-.34071428 2.76363638-1.61357143 6.20606058 1.08642857.1090909-.09642857.2121212-.17357143.2121212-.17357143s-3.1515151-3.33642856-6.66060602-2.9635714c-1.76363636.16714284-3.93333333 1.87071427-5.2060606 4.12071427-1.27272726 2.25-1.45454546 4.1528571-1.45454546 4.1528571zM.42424242 16.9742857h4.7878788S4.2969697 12.545 7.3272727 10.75142858c.66060607-.34071428 2.76363638-1.61357143 6.20606058 1.08642857.1090909-.09642857.2121212-.17357143.2121212-.17357143s-3.1515151-3.33642856-6.66060602-2.9635714c-1.76363636.16714284-3.93333333 1.87071427-5.2060606 4.12071427-1.27272726 2.25-1.45454546 4.1528571-1.45454546 4.1528571zM.42424242 16.9742857h4.7878788S4.2969697 12.545 7.3272727 10.75142858c.66060607-.34071428 2.76363638-1.61357143 6.20606058 1.08642857.1090909-.09642857.2121212-.17357143.2121212-.17357143s-3.1515151-3.33642856-6.66060602-2.9635714c-1.76969696.16714284-3.93939393 1.87071427-5.2121212 4.12071427C.6 15.0714285.4242424 16.9742857.4242424 16.9742857zM10.4 9.0607143L10.4242424 8.63c-.0545454-.03214286-.2060606-.1092857-.58787876-.225l-.02424243.4242857c.2.0707143.3939394.14785716.5878788.2314286zM9.82424242 10.42357143l-.02424242.405c.2.00642857.4.03214286.6.07714286l.0242424-.3985715c-.2060606-.045-.4060606-.0707143-.59999998-.0835715zm-2.24242424-2.0057143h.06060606l-.12121212-.39214284c-.1878788 0-.38181818.0128571-.58181818.0385714l.1151515.3792857c.1757576-.0192857.35151517-.0257143.52727274-.0257143zm.2909091 2.3657143l.13939393.44357143c.1757576-.09.3515152-.16714286.5272728-.225l-.1333333-.42428572c-.2060606.06428572-.3818182.135-.5333333.2057143zM5.1212121 9.09285713l-.27272727-.44357142c-.15151515.0835715-.3090909.1735715-.47272727.2764286l.27878787.45c.15757576-.1028571.3090909-.1992857.46666667-.2828571zm1.24242424 2.89285716l.2909091.4628571c.1030303-.1607143.22424242-.3085715.35757575-.4564286L6.7393939 11.555c-.13939394.135-.26666667.28285714-.37575758.4307143zm-.87878788 2.07l.4909091.4114285C6 14.2164285 6.04242424 13.9657143 6.1030303 13.715l-.43636363-.36642857c-.07878788.23785714-.13333334.47571428-.1818182.70714286zM2.830303 11.0021428L2.4 10.60357142c-.15757576.1607143-.3090909.32142858-.44848485.48214287L2.41818182 11.51c.12727273-.17357143.26666666-.34714286.4121212-.50785714zM1 13.8757143l-.6969697-.27c-.1151515.27642856-.24242424.59785713-.3030303.77142856l.6969697.27C.77575758 14.42857143.9030303 14.11357143 1 13.8757143zm4.3939394 1.81285713c.0121212.34071428.04242424.61714286.07272727.81L6.1939394 16.775c-.05454546-.2507143-.10909092-.53357143-.14545455-.8357143l-.65454546-.25071427z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/railway.svg b/assets/lib/simple-icons/icons/railway.svg
new file mode 100644
index 00000000..92807562
--- /dev/null
+++ b/assets/lib/simple-icons/icons/railway.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Railway</title><path d="M.113 10.27A13.026 13.026 0 000 11.48h18.23c-.064-.125-.15-.237-.235-.347-3.117-4.027-4.793-3.677-7.19-3.78-.8-.034-1.34-.048-4.524-.048-1.704 0-3.555.005-5.358.01-.234.63-.459 1.24-.567 1.737h9.342v1.216H.113v.002zm18.26 2.426H.009c.02.326.05.645.094.961h16.955c.754 0 1.179-.429 1.315-.96zm-17.318 4.28s2.81 6.902 10.93 7.024c4.855 0 9.027-2.883 10.92-7.024H1.056zM11.988 0C7.5 0 3.593 2.466 1.531 6.108l4.75-.005v-.002c3.71 0 3.849.016 4.573.047l.448.016c1.563.052 3.485.22 4.996 1.364.82.621 2.007 1.99 2.712 2.965.654.902.842 1.94.396 2.934-.408.914-1.289 1.458-2.353 1.458H.391s.099.42.249.886h22.748A12.026 12.026 0 0024 12.005C24 5.377 18.621 0 11.988 0z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/rainmeter.svg b/assets/lib/simple-icons/icons/rainmeter.svg
new file mode 100644
index 00000000..d4b9607b
--- /dev/null
+++ b/assets/lib/simple-icons/icons/rainmeter.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Rainmeter</title><path d="M12.7 1.088L12 0l-.7 1.088c-.751 1.168-7.342 11.525-7.342 15.366C3.958 20.615 7.565 24 12 24s8.042-3.385 8.042-7.546c0-3.84-6.591-14.197-7.342-15.366zM12 22.335c-3.516 0-6.377-2.638-6.377-5.881C5.623 13.908 9.732 6.756 12 3.1c2.268 3.656 6.377 10.809 6.377 13.355 0 3.242-2.861 5.88-6.377 5.88zm4.957-6.017c0 2.548-2.22 4.615-4.957 4.615-2.737 0-4.957-2.067-4.957-4.615 0-.163.021-.347.058-.549 0 0 1.306-2.616 4.847 0 2.999 2.215 4.95 0 4.95 0 .038.202.059.386.059.549z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/rakuten.svg b/assets/lib/simple-icons/icons/rakuten.svg
new file mode 100644
index 00000000..1726fd66
--- /dev/null
+++ b/assets/lib/simple-icons/icons/rakuten.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Rakuten</title><path d="M23.277 21.3L3.939 24 .722 21.3h22.555zM7.6 19.276H3.939V0h6.052a6.653 6.653 0 0 1 6.65 6.646c0 2.234-1.108 4.204-2.799 5.418l5.418 7.211h-4.585l-4.486-5.979H7.6v5.98zm0-9.64h2.392a2.992 2.992 0 0 0 2.989-2.989 2.994 2.994 0 0 0-2.989-2.986H7.6v5.975z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ram.svg b/assets/lib/simple-icons/icons/ram.svg
new file mode 100644
index 00000000..aa6775d9
--- /dev/null
+++ b/assets/lib/simple-icons/icons/ram.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Ram</title><path d="M11.46 22.432l-.515-1.14h-.024l-.579 1.14h1.118zm.222.755h-1.556L9.792 24H7.344l1.791-3.359h3.627L14.494 24h-2.448l-.364-.813zm9.516-1.122h-.105L20.048 24h-1.492l-1.042-1.926-.099.001L17.406 24h-2.239v-3.359h3.522l.627 1.056h.03l.686-1.056h3.403V24h-2.239l.002-1.935zm-18.319.1h.467c.501 0 .647-.161.65-.322.007-.311-.052-.553-.625-.553h-.492v.875zm.512.703h-.499V24H.564v-3.359h3.358c1.761 0 2.48.29 2.566 1.037.043.372-.161 1.043-.977 1.11L6.728 24H4.265l-.874-1.132zM11.844.412c-2.642.003-5.658.155-6.66.24-1.093.093-1.289.164-1.29 1.087l-.009.838c-.008.658-.02 1.587-.02 2.633 0 1.704.101 3.717.226 5.373.134 1.761.24 3.152 2.458 4.475 1.704 1.016 4.668 2.484 4.697 2.498.171.085.565.275.699.327a.531.531 0 0 0 .126 0c.137-.054.572-.27.786-.366.021-.009 2.077-.95 4.608-2.459 2.218-1.323 2.324-2.714 2.459-4.476.125-1.656.226-3.67.226-5.374 0-1.045-.012-1.974-.02-2.632l-.008-.838c-.004-.813-.158-.993-1.291-1.087-1.002-.083-4.018-.238-6.66-.241h-.327v.002zM12.173 0c2.632.003 5.647.139 6.7.243 1.337.131 1.662.194 1.662 1.496 0 1.027.047 5.619-.199 8.875-.138 1.806-.257 3.365-2.658 4.798a50.914 50.914 0 0 1-4.71 2.487c-.311.138-.721.37-.804.387a.884.884 0 0 1-.312 0c-.092-.019-.593-.265-.786-.36-.193-.094-3.067-1.525-4.726-2.514-2.401-1.432-2.52-2.991-2.658-4.798-.247-3.256-.2-7.849-.2-8.875 0-1.302.325-1.365 1.662-1.496C6.197.139 9.212.003 11.844 0h.329zM8.279 2.312c1.95 0 2.955 1.664 3.532 2.876l-.181.991c-1.01-2.1-2.215-3.436-3.674-3.436-1.577 0-2.465 2.012-2.693 2.351.407-1.034 1.591-2.782 3.016-2.782zm10.343 2.783c-.229-.339-1.116-2.351-2.693-2.351-1.459 0-2.663 1.336-3.674 3.436l-.182-.992c.576-1.212 1.581-2.876 3.532-2.876 1.426 0 2.611 1.748 3.017 2.783zm-3.444 4.12c-.163.071-.288.117-.288.117l.098-.846.522-.684c.161.769.149 1.203-.332 1.413zm-6.374 0c-.481-.21-.493-.644-.332-1.414l.522.684.098.846s-.126-.045-.288-.116zm8.367-4.41c-1.276-.025-2.381.961-3.127 3.352l.419.264-.173.998-.952.338-.187 1.292.462-.587.649-.132-.289.778-.895.499-.318 2.084.12.783-.92.356v.001l-.844-.357.12-.783-.318-2.084-.895-.499-.288-.778.649.132.462.587-.188-1.292-.952-.338-.173-.998.418-.264c-.745-2.39-1.85-3.376-3.127-3.352-1.02.02-1.778 1.209-1.693 2.466l.885.105c.317 1.773.612 4.025 1.28 4.025.203 0 .212-.319.212-.577 0-.627-.378-1.38-.378-2.575 0-.552.179-1.027.587-1.027.277 0 .402.074.532.315-.11.818-.114 1.52.525 1.953.141.095.446.382.446.382s.525 2.067.557 2.205c.03.126.104.298.161.403l.666 1.163s.199 1.249.241 1.465c.105.533.648.579 1.091.583h.123c.444-.003.986-.049 1.091-.583.042-.215.241-1.465.241-1.465l.666-1.163c.057-.105.132-.277.161-.403.032-.138.558-2.205.558-2.205s.305-.287.446-.382c.638-.433.635-1.135.524-1.953.131-.241.255-.315.532-.315.408 0 .587.475.587 1.027 0 1.196-.378 1.948-.378 2.575 0 .259.008.577.212.577.667 0 .963-2.252 1.279-4.025l.885-.105c.086-1.257-.672-2.446-1.692-2.466zm-4.953-3.33c1.928 0 5.848.197 6.1.222.326.029.541.074.614.153.073.074.095.158.107.344.012.173.023.858.023.859.007.612.018 1.475.018 2.446 0 .57-.004 1.176-.014 1.791l.132.086c.011-.644.015-1.281.015-1.877 0-.972-.011-1.836-.018-2.448 0-.001-.011-.684-.023-.866-.012-.189-.038-.323-.146-.43-.136-.13-.366-.157-.695-.192-.265-.026-4.175-.222-6.113-.223-.278.002-.571-.003-.854-.003-2.323 0-5.419.21-5.675.226-.379.025-.58.033-.717.189-.106.13-.137.323-.144.513-.005.185-.007.786-.007.787-.007.611-.018 1.476-.018 2.448 0 .587.004 1.214.015 1.848l.132-.086c-.01-.604-.013-1.201-.013-1.762 0-.971.011-1.835.018-2.447 0-.001.002-.603.008-.784.004-.176.041-.348.113-.431.074-.096.236-.12.621-.141.257-.016 3.349-.226 5.665-.226l.856.004zm7.121 6.071l-.146.277s-.582.061-.602.061c-.281 2.239-1.19 4.63-2.183 4.63-.327 0-.336-.507-.336-1.111 0-.257.036-.486.076-.687-.106.197-.289.918-.289 1.534 0 .72.405 1.116 1.097 1.116.702 0 1.289-.343 1.673-.981-.248.686-.732 1.281-1.767 1.903a45.997 45.997 0 0 1-4.298 2.27c-.181.081-.416.187-.601.266-.17-.079-.333-.161-.47-.228-.025-.012-2.769-1.371-4.34-2.308-.969-.581-1.455-1.14-1.716-1.772.382.551.915.85 1.565.85.692 0 1.097-.396 1.097-1.116 0-.616-.182-1.337-.289-1.534.041.201.076.43.076.687 0 .603-.009 1.111-.336 1.111-.993 0-1.905-2.402-2.185-4.641l-.564-.058-.18-.336s-.033 1.075.003 1.78c.036.706.11 1.312.337 2.17.043.164.093.318.15.462.198.946.658 1.729 1.974 2.509 1.58.942 4.322 2.3 4.349 2.313.149.073.349.173.527.254.194-.081.459-.201.658-.29.021-.01 1.971-.883 4.312-2.278 1.458-.864 1.865-1.731 2.029-2.82.013-.05.027-.1.039-.152.194-.868.274-1.322.31-2.028.032-.606.031-1.591.03-1.853z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/rancher.svg b/assets/lib/simple-icons/icons/rancher.svg
index addde9c6..09244b51 100644
--- a/assets/lib/simple-icons/icons/rancher.svg
+++ b/assets/lib/simple-icons/icons/rancher.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Rancher icon</title><path d="M22.727 9.007a.713.713 0 01-.726.855h-1.542V8.798h.468a.883.883 0 00.875-.875v-.388c0-.477.12-.875.269-.875.139 0 .328.388.407.865l.249 1.482zm-3.49-1.253c.486 0 .874.388.894.885v4.555a.883.883 0 01-.875.875h-2.357a.883.883 0 01-.875-.875v-1.79a.871.871 0 00-.348.696v1.502c0 .477.397.875.875.875h1.531v2.327a.535.535 0 01-.537.538h-2.884a.535.535 0 01-.537-.538v-2.168a.535.535 0 00-.537-.537h-7.2a.535.535 0 00-.538.537v2.168a.535.535 0 01-.537.538H2.428a.535.535 0 01-.537-.538V10.58L.588 11.603c-.06.04-.14.04-.189-.02l-.368-.438a.135.135 0 01-.01-.159l1.91-2.914a.536.536 0 01.487-.318h10.165a.54.54 0 01.527.627l-.21 1.243a.54.54 0 00.528.626h2.039a.535.535 0 00.527-.437c-.13.04-.269.06-.418.06h-1.452c-.487 0-.815-.388-.736-.866l.249-1.482c.08-.477.258-.865.407-.865.15 0 .269.398.269.875v.229c.02-.01.05-.01.08-.01h4.843zm3.65-.537c0-.388.288-.557.556-.557.269 0 .557.17.557.557 0 .378-.288.547-.557.547-.268 0-.557-.17-.557-.547zm.984 0c0-.308-.2-.438-.418-.438-.219 0-.428.13-.428.438 0 .298.21.438.428.438.219-.01.418-.14.418-.438zm-.607-.279h.199c.1 0 .199.03.199.17 0 .08-.06.129-.13.149l.13.228h-.12l-.119-.218h-.05v.218h-.109v-.547zm.199.25c.05 0 .09-.03.09-.08 0-.06-.05-.07-.09-.07h-.1v.15h.1z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Rancher</title><path d="M22.727 9.007a.713.713 0 01-.726.855h-1.542V8.798h.468a.883.883 0 00.875-.875v-.388c0-.477.12-.875.269-.875.139 0 .328.388.407.865l.249 1.482zm-3.49-1.253c.486 0 .874.388.894.885v4.555a.883.883 0 01-.875.875h-2.357a.883.883 0 01-.875-.875v-1.79a.871.871 0 00-.348.696v1.502c0 .477.397.875.875.875h1.531v2.327a.535.535 0 01-.537.538h-2.884a.535.535 0 01-.537-.538v-2.168a.535.535 0 00-.537-.537h-7.2a.535.535 0 00-.538.537v2.168a.535.535 0 01-.537.538H2.428a.535.535 0 01-.537-.538V10.58L.588 11.603c-.06.04-.14.04-.189-.02l-.368-.438a.135.135 0 01-.01-.159l1.91-2.914a.536.536 0 01.487-.318h10.165a.54.54 0 01.527.627l-.21 1.243a.54.54 0 00.528.626h2.039a.535.535 0 00.527-.437c-.13.04-.269.06-.418.06h-1.452c-.487 0-.815-.388-.736-.866l.249-1.482c.08-.477.258-.865.407-.865.15 0 .269.398.269.875v.229c.02-.01.05-.01.08-.01h4.843zm3.65-.537c0-.388.288-.557.556-.557.269 0 .557.17.557.557 0 .378-.288.547-.557.547-.268 0-.557-.17-.557-.547zm.984 0c0-.308-.2-.438-.418-.438-.219 0-.428.13-.428.438 0 .298.21.438.428.438.219-.01.418-.14.418-.438zm-.607-.279h.199c.1 0 .199.03.199.17 0 .08-.06.129-.13.149l.13.228h-.12l-.119-.218h-.05v.218h-.109v-.547zm.199.25c.05 0 .09-.03.09-.08 0-.06-.05-.07-.09-.07h-.1v.15h.1z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/rarible.svg b/assets/lib/simple-icons/icons/rarible.svg
new file mode 100644
index 00000000..04accb82
--- /dev/null
+++ b/assets/lib/simple-icons/icons/rarible.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Rarible</title><path d="M4.8 0A4.79 4.79 0 000 4.8v14.4A4.79 4.79 0 004.8 24h14.4a4.79 4.79 0 004.8-4.8V4.8A4.79 4.79 0 0019.2 0zm1.32 7.68h8.202c2.06 0 3.666.44 3.666 2.334 0 1.137-.671 1.702-1.427 1.898.904.268 1.558 1 1.558 2.16v2.131h-3.451V14.18c0-.62-.37-.87-1-.87H9.572v2.893H6.12zm3.452 2.5v.834h4.155c.452 0 .726-.06.726-.416 0-.358-.274-.418-.726-.418z"/></svg>
diff --git a/assets/lib/simple-icons/icons/raspberrypi.svg b/assets/lib/simple-icons/icons/raspberrypi.svg
index 825a2174..1325a023 100644
--- a/assets/lib/simple-icons/icons/raspberrypi.svg
+++ b/assets/lib/simple-icons/icons/raspberrypi.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Raspberry Pi icon</title><path d="M16.111 17.338c-.857.989-1.334 2.79-.709 3.371.596.449 2.201.391 3.385-1.23.86-1.08.569-2.893.081-3.372-.73-.555-1.778.164-2.757 1.243v-.012zm-8.057.3c-.908-1.04-2.088-1.658-2.851-1.199-.51.382-.605 1.685.123 2.967 1.078 1.524 2.596 1.679 3.221 1.307.659-.488.3-2.137-.493-3.075zm4.105 3.145c-1.103-.026-2.798.439-2.776 1.032-.018.403 1.331 1.572 2.705 1.513 1.326.03 2.699-1.139 2.682-1.649-.004-.523-1.498-.927-2.607-.884l-.004-.012zm-.075-13.944c-1.275-.032-2.502.933-2.502 1.493-.004.68 1.008 1.376 2.51 1.394 1.543.01 2.518-.559 2.532-1.26.016-.794-1.394-1.639-2.518-1.627h-.022zm-3.071.532c-2.135-.345-3.913.9-3.842 3.192.07.884 4.63-3.041 3.843-3.177l-.001-.015zm9.749 3.251c.071-2.277-1.709-3.521-3.844-3.176-.787.135 3.772 4.061 3.844 3.176zm.364.824c-1.239-.329-.42 5.049.588 4.615 1.109-.869 1.466-3.446-.588-4.6v-.015zM4.228 16.121c1.007.45 1.827-4.929.589-4.6-2.053 1.153-1.698 3.73-.589 4.615v-.015zm9.415-5.948c-1.146.75-1.354 2.428-.461 3.746.891 1.318 2.543 1.813 3.691 1.078 1.146-.733 1.353-2.412.462-3.746-.892-1.333-2.545-1.813-3.692-1.063v-.015zm-3.096.135c-1.146-.734-2.799-.254-3.689 1.064-.892 1.334-.686 3.012.461 3.761s2.799.269 3.691-1.064c.885-1.318.675-2.997-.465-3.745l.002-.016zm4.369 7.162c-.009-1.393-1.252-2.518-2.781-2.502-1.527.016-2.761 1.139-2.754 2.532v.029c.01 1.394 1.254 2.517 2.783 2.502 1.527 0 2.756-1.138 2.742-2.517v-.029l.01-.015zm3.209-15.133c-2.307 1.184-3.652 2.128-4.389 2.938.377 1.498 2.344 1.558 3.063 1.512-.147-.06-.271-.149-.315-.269.18-.12.821-.016 1.268-.255-.171-.03-.252-.061-.329-.195.419-.135.875-.24 1.141-.465-.143 0-.278.03-.467-.09.377-.194.778-.359 1.095-.658-.196 0-.406 0-.466-.075.346-.21.635-.435.877-.704-.272.045-.39.016-.454-.03.261-.255.593-.479.749-.81-.203.076-.391.09-.522 0 .091-.194.47-.314.69-.779-.215.03-.441.046-.486 0 .098-.389.269-.613.435-.854-.457 0-1.15 0-1.117-.029l.283-.285c-.448-.12-.904.015-1.236.12-.149-.105 0-.255.185-.405-.39.061-.733.135-1.034.256-.164-.15.105-.285.24-.436-.599.12-.839.27-1.094.42-.18-.165-.015-.314.104-.449-.449.164-.674.374-.914.568-.09-.104-.209-.179-.06-.449-.314.18-.554.39-.734.629-.194-.134-.119-.299-.119-.449-.33.27-.54.54-.794.811-.061-.031-.105-.15-.135-.346-.779.75-1.889 2.623-.285 3.356 1.349-1.094 2.981-1.903 4.779-2.503l.041-.075zm-12.259 0c1.798.6 3.419 1.408 4.777 2.518 1.596-.75.493-2.623-.282-3.356-.041.194-.085.329-.135.359-.255-.27-.462-.54-.788-.81 0 .15.077.33-.117.45-.175-.239-.41-.45-.725-.63.149.256.025.33-.056.449-.24-.225-.465-.434-.899-.599.12.149.3.3.12.465-.239-.149-.494-.3-1.078-.42.135.149.404.3.238.45-.315-.122-.66-.212-1.035-.258.181.15.342.289.192.405-.345-.12-.806-.255-1.255-.135l.284.284c.03.037-.659.03-1.121.035.165.225.337.449.435.854-.045.045-.27.016-.483 0 .225.449.599.57.688.765-.135.096-.314.075-.523 0 .164.314.494.539.748.81-.074.044-.18.074-.464.037.239.26.524.494.869.704-.06.07-.271.069-.479.075.314.304.719.464 1.094.663-.195.136-.33.105-.465.105.255.225.72.329 1.139.464-.09.135-.164.165-.344.195.449.254 1.078.135 1.258.27-.045.119-.164.209-.314.27.719.045 2.697-.015 3.072-1.514-.736-.807-2.084-1.752-4.391-2.921l.04.016zM7.6.103c.236-.007.436.135.652.201.529-.17.65.063.91.159.577-.12.752.141 1.029.419l.322-.009c.869.507 1.305 1.536 1.457 2.065.152-.529.584-1.559 1.457-2.065l.321.007c.277-.283.453-.539 1.029-.418.261-.105.38-.33.911-.166.33-.104.62-.375 1.057-.045.368-.149.726-.195 1.045.09.495-.06.653.061.774.21.108 0 .809-.104 1.132.36.81-.09 1.064.464.774.988.165.255.337.494-.05.975.15.269.062.553-.27.913.091.374-.074.63-.374.839.06.51-.48.81-.629.914-.061.3-.181.584-.795.734-.089.449-.464.523-.824.614 1.185.675 2.188 1.558 2.188 3.731l.181.299c1.349.809 2.562 3.402.674 5.514-.119.659-.329 1.124-.511 1.648-.269 2.113-2.082 3.101-2.561 3.221-.689.525-1.438 1.02-2.442 1.363-.942.961-1.976 1.336-2.994 1.336h-.092c-1.033 0-2.063-.375-3.012-1.335-1.007-.344-1.754-.838-2.447-1.363-.479-.12-2.283-1.107-2.562-3.221-.187-.524-.394-1.004-.518-1.662-1.894-2.113-.681-4.705.666-5.515l.172-.3c0-2.172 1.005-3.057 2.188-3.73-.359-.09-.72-.165-.823-.615-.615-.15-.735-.434-.795-.734-.15-.105-.689-.404-.629-.928-.3-.211-.465-.465-.375-.854-.314-.346-.404-.645-.27-.915-.39-.479-.209-.733-.045-.974C3.236 1.329 3.491.76 4.3.85 4.614.385 5.32.491 5.423.491c.121-.15.285-.285.779-.225.314-.285.675-.24 1.049-.102.151-.12.286-.164.406-.164L7.6.103z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Raspberry Pi</title><path d="m19.8955 10.8961-.1726-.3028c.0068-2.1746-1.0022-3.061-2.1788-3.7348.356-.0938.7237-.1711.8245-.6182.6118-.1566.7397-.4398.8011-.7398.16-.1066.6955-.4061.6394-.9211.2998-.2069.4669-.4725.3819-.8487.3222-.3515.407-.6419.2702-.9096.3868-.4805.2152-.7295.05-.9817.2897-.5254.0341-1.0887-.7758-.9944-.3221-.4733-1.0244-.3659-1.133-.3637-.1215-.1519-.2819-.2821-.7755-.219-.3197-.2851-.6771-.2364-1.0458-.0964-.4378-.3403-.7275-.0675-1.0584.0356-.53-.1706-.6513.0631-.9117.1583-.5781-.1203-.7538.1416-1.0309.4182l-.3224-.0063c-.8719.5061-1.305 1.5366-1.4585 2.0664-.1536-.5299-.5858-1.5604-1.4575-2.0664l-.3223.0063C9.942.5014 9.7663.2394 9.1883.3597 8.9279.2646 8.807.0309 8.2766.2015c-.2172-.0677-.417-.2084-.6522-.2012l.0004.0002C7.5017.0041 7.369.049 7.2185.166c-.3688-.1401-.7262-.1887-1.0459.0964-.4936-.0631-.654.0671-.7756.219C5.2887.4791 4.5862.3717 4.264.845c-.8096-.0943-1.0655.4691-.7756.9944-.1653.2521-.3366.5013.05.9819-.1367.2677-.0519.5581.2703.9096-.085.3763.0822.6418.3819.8487-.0561.515.4795.8144.6394.9211.0614.3001.1894.5832.8011.7398.1008.4472.4685.5244.8245.6183-1.1766.6737-2.1856 1.56-2.1788 3.7348l-.1724.3028c-1.3491.8082-2.5629 3.4056-.6648 5.5167.124.6609.3319 1.1355.5171 1.6609.2769 2.117 2.0841 3.1082 2.5608 3.2255.6984.524 1.4423 1.0212 2.449 1.3696.949.964 1.977 1.3314 3.0107 1.3308.0152 0 .0306.0002.0457 0 1.0337.0006 2.0618-.3668 3.0107-1.3308 1.0067-.3483 1.7506-.8456 2.4491-1.3696.4766-.1173 2.2838-1.1085 2.5607-3.2255.1851-.5253.3931-1 .517-1.6609 1.8981-2.1113.6843-4.7089-.6649-5.517zm-1.0386-.3715c-.0704.8759-4.6354-3.0504-3.8472-3.1808 2.1391-.3558 3.9191.896 3.8472 3.1808zm-2.0155 4.3649c-1.1481.7409-2.8025.2626-3.6953-1.0681-.8928-1.3306-.6858-3.0101.4623-3.7509 1.1481-.7409 2.8025-.2627 3.6953 1.068.8927 1.3307.6858 3.0101-.4623 3.751zM13.6591 1.3721c.0396.1967.0843.321.1354.3577.2537-.272.4611-.5506.7878-.8123.0011.1537-.0776.3205.1169.4425.1752-.2356.4119-.4459.7263-.6244-.1514.2611-.026.3404.0554.4486.24-.2059.4681-.4144.9109-.5759-.121.1474-.2902.2914-.1108.4607.2473-.1544.496-.3086 1.0833-.4183-.1323.1475-.4059.295-.2401.4426.3104-.1186.6539-.2047 1.034-.2546-.182.1496-.3337.2963-.1846.4122.3323-.1022.7899-.2398 1.2372-.1212l-.2832.2849c-.0314.0382.6623.0297 1.1202.0364-.167.2321-.3375.4562-.437.8548.0454.0459.2723.0204.4862 0-.2194.4618-.6004.5783-.6893.776.134.1015.32.075.5232.006-.158.3254-.4892.5484-.7509.8123.0662.047.1818.075.4555.0425-.2418.257-.5339.492-.8802.7032.0614.0708.2722.0681.4678.0727-.3136.3069-.7173.466-1.0955.6668.1885.1288.3234.0988.4678.097-.2676.2198-.7225.3342-1.1448.4668.0803.1249.1607.1589.3324.194-.447.2473-1.0873.1343-1.2679.2607.0435.1243.1665.2053.3139.2728-.7197.0418-2.6879-.0262-3.0652-1.5156.7367-.8094 2.0813-1.7593 4.394-2.934-1.7994.6022-3.4229 1.405-4.7817 2.5096-1.5978-.7436-.4965-2.6197.283-3.3645zm-1.6126 5.3718c1.1329-.0123 2.5356.8325 2.53 1.6286-.005.7027-.9851 1.2715-2.5213 1.2607-1.5043-.0177-2.5172-.7148-2.5137-1.3957.003-.5603 1.2282-1.5263 2.505-1.4936zm-5.7646-.6006c.1717-.0351.252-.0692.3323-.194-.4223-.1327-.8772-.247-1.1448-.4668.1444.0018.2792.0318.4678-.097-.3783-.2008-.782-.3599-1.0956-.6668.1955-.0048.4064-.002.4677-.0728-.3462-.2113-.6383-.4463-.8801-.7033.2738.0325.3893.0045.4555-.0425-.2617-.264-.593-.487-.7509-.8123.2032.069.3892.0954.5232-.006-.089-.1977-.47-.3142-.6894-.776.214.0204.4409.0459.4863 0-.0994-.3985-.2698-.6226-.4369-.8547.4579-.0067 1.1516.0018 1.1202-.0364l-.2831-.2849c.4472-.1186.9049.019 1.2371.1213.1492-.1159-.0026-.2626-.1847-.4123.3801.05.7236.1361 1.034.2547.1659-.1476-.1076-.2951-.24-.4426.5872.1097.8361.2639 1.0833.4183.1794-.1694.0103-.3133-.1108-.4607.4428.1615.6709.37.911.5759.0814-.1082.2068-.1875.0554-.4486.3143.1785.5511.3888.7263.6244.1945-.122.1159-.2888.1169-.4426.3267.2618.534.5404.7879.8124.0511-.0366.0959-.161.1354-.3577.7794.7448 1.8807 2.6208.2831 3.3646-1.3589-1.1039-2.9817-1.9064-4.78-2.5086 2.3115 1.174 3.6556 2.1239 4.392 2.9328-.3773 1.4895-2.3455 1.5575-3.0651 1.5157.1473-.0676.2703-.1485.3139-.2728-.1806-.1264-.8209-.0134-1.2679-.2607zm2.8175 1.1334c.7881.1304-3.7769 4.0567-3.8472 3.1809-.0719-2.2846 1.7079-3.5367 3.8472-3.1809zm-4.847 8.7567c-1.1094-.8789-1.4668-3.4529.5901-4.6097 1.2394-.3273.4184 5.051-.5901 4.6097zm4.2656 4.5989c-.6257.3719-2.1452.2187-3.2252-1.3095-.7283-1.2823-.6345-2.5872-.123-2.9705.7648-.4589 1.9464.1609 2.8559 1.2003.7923.9405 1.1536 2.5927.4923 3.0797zm-1.2415-5.6086c-1.1481-.7409-1.3551-2.4203-.4623-3.7511.8928-1.3307 2.5472-1.8089 3.6952-1.068 1.1481.7409 1.3551 2.4203.4623 3.7509-.8926 1.3308-2.5471 1.809-3.6952 1.0682zm4.7948 8.2279c-1.3763.0584-2.7258-1.1105-2.7081-1.5157-.0206-.594 1.6758-1.0578 2.782-1.0306 1.1131-.0479 2.6068.3531 2.6097.8851.0184.5166-1.3547 1.6838-2.6836 1.6612zm2.7584-5.8578c.0081 1.3899-1.226 2.5225-2.7562 2.5299-1.5302.0073-2.7773-1.1135-2.7854-2.5033v-.0265c-.008-1.3899 1.2259-2.5226 2.7562-2.5299 1.5302-.0073 2.7773 1.1134 2.7853 2.5033a.7794.7794 0 0 1 .0001.0265zm3.855 2.0029c-1.186 1.6208-2.7916 1.684-3.3896 1.2325-.6255-.5811-.148-2.3854.7094-3.3747v-.0003c.9812-1.0912 2.0302-1.8037 2.7609-1.2469.4919.4828.7805 2.3008-.0807 3.3894zm1.0724-3.4301c-1.0086.4413-1.8298-4.9372-.5901-4.61 2.0568 1.1569 1.6994 3.731.5901 4.61zm-.0256-8.3279h.2985v-.5304h.2986c.1502 0 .2053.0624.2262.2052.0152.1088.0113.2395.0477.3253h.2984c-.0533-.0763-.0515-.2358-.0571-.3213-.0097-.1373-.0513-.2796-.1977-.3176v-.0037c.1502-.061.2149-.1807.2149-.341 0-.2048-.1539-.3738-.3974-.3738h-.732v1.3573zm.2985-1.1255h.3269c.1333 0 .2054.0573.2054.188 0 .1369-.0721.1942-.2054.1942H20.03v-.3822zm-1.0337.4633c0 .7009.5682 1.2694 1.2695 1.2694s1.2695-.5684 1.2695-1.2694c0-.7013-.5683-1.2697-1.2695-1.2697-.7013 0-1.2695.5684-1.2695 1.2697zm2.3275 0c0 .5845-.4737 1.058-1.058 1.058s-1.058-.4735-1.058-1.058c0-.5849.4737-1.058 1.058-1.058s1.058.4731 1.058 1.058z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ray.svg b/assets/lib/simple-icons/icons/ray.svg
new file mode 100644
index 00000000..04839083
--- /dev/null
+++ b/assets/lib/simple-icons/icons/ray.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Ray</title><path d="M16.153 12.826c-.63-.183-1.03.15-1.378.846-.58 1.13-1.643 1.644-2.888 1.594-1.245-.05-2.257-.63-2.788-1.776-.233-.498-.498-.664-1.046-.68-.93-.017-1.643.016-2.174 1.062-.631 1.261-2.258 1.693-3.619 1.261a3.234 3.234 0 0 1-2.257-3.22 3.198 3.198 0 0 1 2.29-3.02 3.276 3.276 0 0 1 3.702 1.327c.216.315.216.863.597.93.648.1 1.328.033 1.992.033.299 0 .316-.266.399-.465.58-1.295 1.61-1.959 2.987-1.975 1.361-.017 2.39.647 2.955 1.892.215.465.48.598.946.548.166-.017.332.016.498 0 .464-.083 1.062.282 1.344-.448.282-.73-.382-.913-.68-1.245-.847-.946-1.81-1.793-2.673-2.706-.415-.465-.763-.614-1.41-.415-1.876.614-3.619-.431-4.15-2.357-.448-1.676.714-3.535 2.44-3.917a3.293 3.293 0 0 1 3.95 2.457c.017.05.017.083.033.133.117.564.117 1.145-.132 1.626-.283.531-.133.83.249 1.195a152.61 152.61 0 0 1 3.286 3.27c.299.299.498.349.913.2 1.51-.565 2.97-.1 3.884 1.161a3.266 3.266 0 0 1-.067 3.801c-.896 1.195-2.357 1.643-3.834 1.079-.381-.15-.58-.1-.846.182a163.619 163.619 0 0 1-3.403 3.386c-.299.3-.415.532-.232.98a3.198 3.198 0 0 1-1.278 3.917A3.298 3.298 0 0 1 9.646 23c-1.062-1.062-1.228-2.688-.415-4.033a3.196 3.196 0 0 1 3.835-1.294c.498.182.78.083 1.145-.283 1.012-1.045 2.058-2.058 3.087-3.103.266-.266.68-.449.432-1.03-.233-.547-.631-.414-1.03-.431zM11.97 4.942c.913.016 1.643-.714 1.66-1.627v-.05a1.646 1.646 0 0 0-1.76-1.56 1.63 1.63 0 0 0-1.543 1.527 1.638 1.638 0 0 0 1.577 1.71zm.033 5.41a1.658 1.658 0 0 0-1.676 1.61v.084a1.73 1.73 0 0 0 1.643 1.66c.847.016 1.643-.78 1.677-1.627a1.648 1.648 0 0 0-1.577-1.71c-.017-.016-.05-.016-.067-.016zm7.088 1.694c.016.896.747 1.61 1.626 1.643a1.723 1.723 0 0 0 1.66-1.726 1.666 1.666 0 0 0-1.66-1.61 1.623 1.623 0 0 0-1.643 1.577c.017.05.017.083.017.116zM3.24 10.353a1.692 1.692 0 0 0-1.66 1.626c-.017.847.863 1.727 1.693 1.71a1.687 1.687 0 0 0 1.626-1.743 1.615 1.615 0 0 0-1.643-1.593Zm8.68 12c.98.033 1.71-.647 1.727-1.593a1.646 1.646 0 0 0-1.51-1.793 1.646 1.646 0 0 0-1.793 1.51v.233a1.609 1.609 0 0 0 1.543 1.66c0-.017.017-.017.033-.017z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/razer.svg b/assets/lib/simple-icons/icons/razer.svg
new file mode 100644
index 00000000..c42de46e
--- /dev/null
+++ b/assets/lib/simple-icons/icons/razer.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Razer</title><path d="M23.4 0a.385.385 0 00-.278.125L22.91.35l-.401.182a.711.711 0 00-.417 0 .305.305 0 01-.171 0 1.005 1.005 0 00-.567 0A.936.936 0 0021 .596a.877.877 0 00-.412.337l-.037.048a1.246 1.246 0 00-.898.684 1.07 1.07 0 00-.07.225 1.935 1.935 0 00-.337-.193 2.026 2.026 0 00-2.063.305 2.08 2.08 0 00-.69 2.139c.086.376.23.737.428 1.069.496.776 1.079 1.494 1.737 2.138.526.512.996 1.078 1.401 1.69l.053.096c.396.754.321 1.31-.219 1.647a1.358 1.358 0 01-.572.198 2.491 2.491 0 00-.144-2.07 2.342 2.342 0 00-.3-.406c-.79-.866-1.63-.674-1.962-.449a.385.385 0 00-.15.455l.027.058a.385.385 0 00.38.188 1.07 1.07 0 01.962.582c.23.384.23.862 0 1.246a4.812 4.812 0 01-.534-.535l-.07-.07-.037-.042a3.368 3.368 0 00-1.92-1.208 3.09 3.09 0 00-.406-1.455 4.368 4.368 0 00-1.358-1.48 2.673 2.673 0 00-.267-.16 3.085 3.085 0 00-2.251-2.717 2.7 2.7 0 00-2.968 1.139c-.053.086-.112.171-.165.267a12.26 12.26 0 00-1.038 2.78 11.64 11.64 0 01-.775 2.187l-.059.107c-.213.374-.406.583-.609.647a.406.406 0 01-.374-.064c-.203-.14-.155-.423 0-.973a3.33 3.33 0 00.128-.45c.07-.33-.005-.673-.203-.946a1.07 1.07 0 00-.786-.411c-.49-.018-.94.27-1.128.722l-.08.15a.968.968 0 00-.316-.46.936.936 0 00-.294-.129 1.016 1.016 0 00-.535-.198.342.342 0 01-.17-.053.711.711 0 00-.434-.097l-.326-.256-.144-.278c-.18-.35-.707-.238-.727.155a.385.385 0 00.032.727l.305.075.342.267c.026.14.093.268.192.37.043.04.072.092.086.149.058.184.167.347.315.47a.877.877 0 00.727.465h.06c.262.313.662.477 1.068.439a1.07 1.07 0 00.23-.054 1.935 1.935 0 000 .38 2.026 2.026 0 001.3 1.636 2.08 2.08 0 002.208-.481c.276-.26.51-.562.695-.893.422-.817.75-1.68.978-2.572.179-.711.433-1.401.76-2.058l.058-.096c.454-.722.973-.936 1.535-.637.18.096.338.231.46.396-.714.12-1.34.543-1.717 1.16-.084.146-.152.3-.203.46-.353 1.117.23 1.748.593 1.925.16.077.353.035.466-.102l.037-.053a.385.385 0 000-.423 1.07 1.07 0 010-1.128c.218-.384.627-.62 1.07-.615-.04.245-.1.486-.177.722l-.034.093a3.533 3.533 0 00-.084 2.324 3.09 3.09 0 00-1.07 1.07 4.368 4.368 0 00-.603 1.913 2.674 2.674 0 000 .31 3.085 3.085 0 00-1.23 3.31 2.7 2.7 0 002.47 2h.31a12.26 12.26 0 002.925-.493 11.64 11.64 0 012.283-.422h.117c.304-.037.61.035.866.203.102.09.152.224.134.358 0 .246-.289.348-.855.466a3.33 3.33 0 00-.45.117 1.192 1.192 0 00-.721.647 1.07 1.07 0 00.037.888c.229.435.704.683 1.193.62h.165a.968.968 0 00-.235.502.936.936 0 000 .364c-.019.183.013.368.091.535.03.054.045.115.043.176-.002.151.045.3.133.422l-.058.412-.166.262a.385.385 0 00.497.535c.287.265.74-.016.63-.39l-.085-.3.064-.433a.711.711 0 00.22-.353.305.305 0 01.085-.15c.131-.141.218-.318.252-.508a.936.936 0 00.122-.336.877.877 0 00-.085-.535v-.053c.134-.376.08-.794-.144-1.123a1.07 1.07 0 00-.16-.171c.115-.05.226-.11.33-.182a2.026 2.026 0 00.77-1.94 2.08 2.08 0 00-1.518-1.674 3.71 3.71 0 00-1.123-.155c-.919.043-1.83.19-2.716.438-.697.198-1.414.322-2.138.369h-.112c-.85-.032-1.294-.374-1.316-1.01-.007-.204.031-.407.113-.594.459.559 1.138.89 1.86.909.17 0 .338-.018.503-.054 1.144-.25 1.4-1.069 1.374-1.475a.385.385 0 00-.321-.353h-.064a.385.385 0 00-.353.235 1.07 1.07 0 01-.984.535 1.214 1.214 0 01-1.069-.631c.233-.088.473-.158.716-.209h.155a3.368 3.368 0 002.01-1.069c.449.243.95.372 1.46.374.679.01 1.35-.138 1.962-.433.094-.044.185-.094.273-.15a3.085 3.085 0 003.48-.587 2.7 2.7 0 00.498-3.139 6.884 6.884 0 00-.15-.273 12.259 12.259 0 00-1.887-2.288 11.64 11.64 0 01-1.508-1.764l-.064-.102a1.294 1.294 0 01-.257-.85.406.406 0 01.16-.267c.225-.107.444.08.83.508.1.118.21.228.326.331.25.225.584.334.92.3a1.07 1.07 0 00.748-.476c.263-.416.24-.951-.06-1.342l-.085-.145c.18.035.365.019.535-.048a.936.936 0 00.32-.197c.178-.076.33-.2.44-.359a.342.342 0 01.133-.123.711.711 0 00.3-.326l.384-.155h.31a.385.385 0 00.353-.577l-.005.01a.385.385 0 00-.118-.128A.385.385 0 0023.4 0zm.006.398l-.187.315.347.086-.395.005-.658.262a.262.262 0 01-.171.262c-.316.182-.198.321-.583.487-.08.032-.107.101-.256.176-.15.075-.407-.027-.535 0a.32.32 0 00-.203.535c.085.144.486.679.192 1.112a.711.711 0 01-1.107.102c-.368-.305-.866-1.214-1.577-.877-.71.336-.502 1.128-.085 1.796.882 1.39 2.705 2.673 3.523 4.277 1 2-1.107 4.336-3.673 3.117a2.326 2.326 0 01-.396.24c-1.069.535-2.512.578-3.395-.117-.395.941-1.79 1.182-2.031 1.24-.423.08-.832.22-1.214.418.487 1.614 2.47 1.454 2.908.427 0 0 .054.824-1.069 1.07a2.139 2.139 0 01-2.288-1.16c-.33.346-.507.81-.492 1.288.027.69.46 1.337 1.69 1.385 1.662.064 4.25-1.203 6.014-.669 1.344.335 1.723 2.065.642 2.93a2.732 2.732 0 01-1.23.385c-.182.01-.198.091-.181.145.016.053.117.053.278.053.582-.053 1.208.283.93 1.166-.043.123.155.352.117.534-.053.262-.112.203-.112.289-.07.412-.235.326-.337.679a.257.257 0 01-.203.208l-.101.706.112.38-.182-.321-.251.257.214-.332.101-.7a.262.262 0 01-.16-.267c0-.364-.182-.332-.128-.75.037-.085 0-.042 0-.31.016-.186.23-.341.272-.48.043-.14.054-.45-.369-.45-.198.006-.85.075-1.069-.39a.711.711 0 01.465-1.01c.45-.16 1.497-.123 1.556-.91.059-.785-.727-.999-1.513-.972-1.657.059-3.663 1.01-5.48.903-2.23-.128-3.198-3.133-.861-4.737a2.326 2.326 0 010-.465c.09-1.219.77-2.47 1.812-2.85-.593-.818-.128-2.149-.058-2.384.135-.4.213-.818.23-1.24-1.642-.37-2.497 1.411-1.824 2.304 0 0-.743-.369-.395-1.465a2.139 2.139 0 012.138-1.4 1.786 1.786 0 00-.871-1.07c-.61-.3-1.385-.267-2.043.77-.887 1.411-1.063 4.293-2.427 5.544-.961 1-2.652.463-2.86-.909a2.732 2.732 0 01.278-1.256c.08-.166.032-.214-.038-.23-.07-.016-.123.07-.187.214a.823.823 0 01-1.475.224c-.097-.107-.342.006-.535-.17-.192-.177-.128-.188-.192-.241-.321-.273-.16-.375-.418-.636a.257.257 0 01-.08-.284L.796 7.2.41 7.102h.38l-.102-.347.182.353.534.438a.262.262 0 01.31 0c.321.182.38.01.717.262.07.054.133.027.283.134.15.107.187.374.278.476a.32.32 0 00.572-.096c.086-.193.332-.77.866-.728.457.027.77.47.642.91-.091.47-.652 1.357 0 1.801.652.444 1.235-.134 1.604-.829.775-1.46.957-3.678 1.957-5.202 1.23-1.887 4.309-1.224 4.533 1.604.145.06.283.136.412.225 1.032.69 1.759 1.924 1.567 2.994 1.02-.129 1.919.957 2.09 1.138.28.328.606.612.968.845 1.165-1.23.037-2.865-1.07-2.732 0 0 .69-.46 1.466.39.61.728.666 1.772.139 2.561.465.113.956.034 1.363-.219.583-.353.925-1.07.353-2.138-.776-1.476-3.187-3.075-3.588-4.876-.384-1.333.928-2.528 2.219-2.021.38.21.705.51.946.871.102.155.166.134.214.086.048-.048-.005-.14-.096-.268a.823.823 0 01.534-1.39c.145-.027.161-.289.418-.374.256-.086.23-.016.31-.048.395-.15.406.043.759-.048.1-.038.212-.01.283.07l.68-.263zm-10.297 6.26c-.065.53-.348 1.647-.187 2.332.155.871.823.823 1.069.395.163-.332.2-.711.107-1.069a3.106 3.106 0 00-.984-1.636zm.256.872c.17.262.293.551.364.856a1.3 1.3 0 010 .759c-.086.187-.332.187-.423-.23-.04-.462-.02-.928.06-1.385zm1.727 2.661c-.517.012-.67.472-.47.82.207.31.521.534.882.63a3.106 3.106 0 001.908-.037c-.422-.32-1.25-1.123-1.903-1.342a1.255 1.255 0 00-.417-.07zm.088.401a.807.807 0 01.201.04c.429.197.83.45 1.192.753a2.82 2.82 0 01-.962-.107 1.3 1.3 0 01-.642-.396c-.095-.134-.036-.3.21-.29zm-2.285.183a1.54 1.54 0 00-.984.45 3.106 3.106 0 00-.936 1.673c.535-.203 1.604-.519 2.139-.973.663-.588.251-1.166-.22-1.15zm-.025.341c.188.008.276.217-.04.488a5.39 5.39 0 01-1.234.631c.134-.277.315-.528.534-.743a1.3 1.3 0 01.7-.374.284.284 0 01.04-.002z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/razorpay.svg b/assets/lib/simple-icons/icons/razorpay.svg
new file mode 100644
index 00000000..9744441d
--- /dev/null
+++ b/assets/lib/simple-icons/icons/razorpay.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Razorpay</title><path d="M22.436 0l-11.91 7.773-1.174 4.276 6.625-4.297L11.65 24h4.391l6.395-24zM14.26 10.098L3.389 17.166 1.564 24h9.008l3.688-13.902Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/react.svg b/assets/lib/simple-icons/icons/react.svg
index 5f98d088..60069956 100644
--- a/assets/lib/simple-icons/icons/react.svg
+++ b/assets/lib/simple-icons/icons/react.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>React icon</title><path d="M12 9.861A2.139 2.139 0 1 0 12 14.139 2.139 2.139 0 1 0 12 9.861zM6.008 16.255l-.472-.12C2.018 15.246 0 13.737 0 11.996s2.018-3.25 5.536-4.139l.472-.119.133.468a23.53 23.53 0 0 0 1.363 3.578l.101.213-.101.213a23.307 23.307 0 0 0-1.363 3.578l-.133.467zM5.317 8.95c-2.674.751-4.315 1.9-4.315 3.046 0 1.145 1.641 2.294 4.315 3.046a24.95 24.95 0 0 1 1.182-3.046A24.752 24.752 0 0 1 5.317 8.95zM17.992 16.255l-.133-.469a23.357 23.357 0 0 0-1.364-3.577l-.101-.213.101-.213a23.42 23.42 0 0 0 1.364-3.578l.133-.468.473.119c3.517.889 5.535 2.398 5.535 4.14s-2.018 3.25-5.535 4.139l-.473.12zm-.491-4.259c.48 1.039.877 2.06 1.182 3.046 2.675-.752 4.315-1.901 4.315-3.046 0-1.146-1.641-2.294-4.315-3.046a24.788 24.788 0 0 1-1.182 3.046zM5.31 8.945l-.133-.467C4.188 4.992 4.488 2.494 6 1.622c1.483-.856 3.864.155 6.359 2.716l.34.349-.34.349a23.552 23.552 0 0 0-2.422 2.967l-.135.193-.235.02a23.657 23.657 0 0 0-3.785.61l-.472.119zm1.896-6.63c-.268 0-.505.058-.705.173-.994.573-1.17 2.565-.485 5.253a25.122 25.122 0 0 1 3.233-.501 24.847 24.847 0 0 1 2.052-2.544c-1.56-1.519-3.037-2.381-4.095-2.381zM16.795 22.677c-.001 0-.001 0 0 0-1.425 0-3.255-1.073-5.154-3.023l-.34-.349.34-.349a23.53 23.53 0 0 0 2.421-2.968l.135-.193.234-.02a23.63 23.63 0 0 0 3.787-.609l.472-.119.134.468c.987 3.484.688 5.983-.824 6.854a2.38 2.38 0 0 1-1.205.308zm-4.096-3.381c1.56 1.519 3.037 2.381 4.095 2.381h.001c.267 0 .505-.058.704-.173.994-.573 1.171-2.566.485-5.254a25.02 25.02 0 0 1-3.234.501 24.674 24.674 0 0 1-2.051 2.545zM18.69 8.945l-.472-.119a23.479 23.479 0 0 0-3.787-.61l-.234-.02-.135-.193a23.414 23.414 0 0 0-2.421-2.967l-.34-.349.34-.349C14.135 1.778 16.515.767 18 1.622c1.512.872 1.812 3.37.824 6.855l-.134.468zM14.75 7.24c1.142.104 2.227.273 3.234.501.686-2.688.509-4.68-.485-5.253-.988-.571-2.845.304-4.8 2.208A24.849 24.849 0 0 1 14.75 7.24zM7.206 22.677A2.38 2.38 0 0 1 6 22.369c-1.512-.871-1.812-3.369-.823-6.854l.132-.468.472.119c1.155.291 2.429.496 3.785.609l.235.02.134.193a23.596 23.596 0 0 0 2.422 2.968l.34.349-.34.349c-1.898 1.95-3.728 3.023-5.151 3.023zm-1.19-6.427c-.686 2.688-.509 4.681.485 5.254.987.563 2.843-.305 4.8-2.208a24.998 24.998 0 0 1-2.052-2.545 24.976 24.976 0 0 1-3.233-.501zM12 16.878c-.823 0-1.669-.036-2.516-.106l-.235-.02-.135-.193a30.388 30.388 0 0 1-1.35-2.122 30.354 30.354 0 0 1-1.166-2.228l-.1-.213.1-.213a30.3 30.3 0 0 1 1.166-2.228c.414-.716.869-1.43 1.35-2.122l.135-.193.235-.02a29.785 29.785 0 0 1 5.033 0l.234.02.134.193a30.006 30.006 0 0 1 2.517 4.35l.101.213-.101.213a29.6 29.6 0 0 1-2.517 4.35l-.134.193-.234.02c-.847.07-1.694.106-2.517.106zm-2.197-1.084c1.48.111 2.914.111 4.395 0a29.006 29.006 0 0 0 2.196-3.798 28.585 28.585 0 0 0-2.197-3.798 29.031 29.031 0 0 0-4.394 0 28.477 28.477 0 0 0-2.197 3.798 29.114 29.114 0 0 0 2.197 3.798z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>React</title><path d="M14.23 12.004a2.236 2.236 0 0 1-2.235 2.236 2.236 2.236 0 0 1-2.236-2.236 2.236 2.236 0 0 1 2.235-2.236 2.236 2.236 0 0 1 2.236 2.236zm2.648-10.69c-1.346 0-3.107.96-4.888 2.622-1.78-1.653-3.542-2.602-4.887-2.602-.41 0-.783.093-1.106.278-1.375.793-1.683 3.264-.973 6.365C1.98 8.917 0 10.42 0 12.004c0 1.59 1.99 3.097 5.043 4.03-.704 3.113-.39 5.588.988 6.38.32.187.69.275 1.102.275 1.345 0 3.107-.96 4.888-2.624 1.78 1.654 3.542 2.603 4.887 2.603.41 0 .783-.09 1.106-.275 1.374-.792 1.683-3.263.973-6.365C22.02 15.096 24 13.59 24 12.004c0-1.59-1.99-3.097-5.043-4.032.704-3.11.39-5.587-.988-6.38-.318-.184-.688-.277-1.092-.278zm-.005 1.09v.006c.225 0 .406.044.558.127.666.382.955 1.835.73 3.704-.054.46-.142.945-.25 1.44-.96-.236-2.006-.417-3.107-.534-.66-.905-1.345-1.727-2.035-2.447 1.592-1.48 3.087-2.292 4.105-2.295zm-9.77.02c1.012 0 2.514.808 4.11 2.28-.686.72-1.37 1.537-2.02 2.442-1.107.117-2.154.298-3.113.538-.112-.49-.195-.964-.254-1.42-.23-1.868.054-3.32.714-3.707.19-.09.4-.127.563-.132zm4.882 3.05c.455.468.91.992 1.36 1.564-.44-.02-.89-.034-1.345-.034-.46 0-.915.01-1.36.034.44-.572.895-1.096 1.345-1.565zM12 8.1c.74 0 1.477.034 2.202.093.406.582.802 1.203 1.183 1.86.372.64.71 1.29 1.018 1.946-.308.655-.646 1.31-1.013 1.95-.38.66-.773 1.288-1.18 1.87-.728.063-1.466.098-2.21.098-.74 0-1.477-.035-2.202-.093-.406-.582-.802-1.204-1.183-1.86-.372-.64-.71-1.29-1.018-1.946.303-.657.646-1.313 1.013-1.954.38-.66.773-1.286 1.18-1.868.728-.064 1.466-.098 2.21-.098zm-3.635.254c-.24.377-.48.763-.704 1.16-.225.39-.435.782-.635 1.174-.265-.656-.49-1.31-.676-1.947.64-.15 1.315-.283 2.015-.386zm7.26 0c.695.103 1.365.23 2.006.387-.18.632-.405 1.282-.66 1.933-.2-.39-.41-.783-.64-1.174-.225-.392-.465-.774-.705-1.146zm3.063.675c.484.15.944.317 1.375.498 1.732.74 2.852 1.708 2.852 2.476-.005.768-1.125 1.74-2.857 2.475-.42.18-.88.342-1.355.493-.28-.958-.646-1.956-1.1-2.98.45-1.017.81-2.01 1.085-2.964zm-13.395.004c.278.96.645 1.957 1.1 2.98-.45 1.017-.812 2.01-1.086 2.964-.484-.15-.944-.318-1.37-.5-1.732-.737-2.852-1.706-2.852-2.474 0-.768 1.12-1.742 2.852-2.476.42-.18.88-.342 1.356-.494zm11.678 4.28c.265.657.49 1.312.676 1.948-.64.157-1.316.29-2.016.39.24-.375.48-.762.705-1.158.225-.39.435-.788.636-1.18zm-9.945.02c.2.392.41.783.64 1.175.23.39.465.772.705 1.143-.695-.102-1.365-.23-2.006-.386.18-.63.406-1.282.66-1.933zM17.92 16.32c.112.493.2.968.254 1.423.23 1.868-.054 3.32-.714 3.708-.147.09-.338.128-.563.128-1.012 0-2.514-.807-4.11-2.28.686-.72 1.37-1.536 2.02-2.44 1.107-.118 2.154-.3 3.113-.54zm-11.83.01c.96.234 2.006.415 3.107.532.66.905 1.345 1.727 2.035 2.446-1.595 1.483-3.092 2.295-4.11 2.295-.22-.005-.406-.05-.553-.132-.666-.38-.955-1.834-.73-3.703.054-.46.142-.944.25-1.438zm4.56.64c.44.02.89.034 1.345.034.46 0 .915-.01 1.36-.034-.44.572-.895 1.095-1.345 1.565-.455-.47-.91-.993-1.36-1.565z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/reactivex.svg b/assets/lib/simple-icons/icons/reactivex.svg
new file mode 100644
index 00000000..923633ff
--- /dev/null
+++ b/assets/lib/simple-icons/icons/reactivex.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ReactiveX</title><path d="M7.402 2.343c-2.224.984-3.615 2.583-4.4 3.747-.852 1.268-1.184 2.319-1.184 2.328-.002.036.005-.017 0 .019-.246.7-.473 1.798-.473 1.807-.265 1.344-.142 2.593-.142 2.612l.029.246a9.58 9.58 0 01.132-1.012c.019-.133.37-2.016 1.694-3.511.142-.218 1.675-2.233 4.495-2.233.606 0 1.24.094 1.874.283h.019c.038.01.87.313 1.173.464.284.142.786.36.795.36h.02c2.715 1.325 5.062 1.75 5.081 1.76.672.114 1.278.17 1.817.17 1.079 0 1.855-.236 2.262-.69.237-.26.307-.559.293-.814.019-.985-.785-2.044-1.467-2.754a10.868 10.868 0 00-1.542-1.344c-2.044-1.514-4.23-2.28-6.52-2.28-2.347.009-3.937.832-3.956.842zm7.419 2.659c.284 0 .511.227.511.51a.509.509 0 01-.511.512.509.509 0 01-.511-.511c0-.284.227-.511.511-.511zm-6.605-1.94c.075 0 .123.019.142.019l3.227 1.003-.123.255-1.543-.482c-.548-.17-1.12-.351-1.656-.52-.01 0-.028-.01-.047-.01-.02 0-.048 0-.067.01-.293.075-1.097.359-1.334.785a.481.481 0 00-.038.378c0 .01.17.54.596 1.088l2.14-.104 1.428-.066-.142.293-3.549.17c-.53-.643-.738-1.286-.738-1.286C6.181 3.554 8.083 3.07 8.083 3.07c.045-.001.09-.006.133-.01zm11.223 15.747c2.177-.946 3.104-2.584 3.104-2.584 2.035-2.772 1.344-5.697 1.344-5.697-1.296 2.82-2.48 3.596-2.48 3.596 3.19-4.854.02-7.788.02-7.788C22.723 9.1 21 12.468 21 12.468c-1.448 3.048-3.502 4.136-3.502 4.136 2.29.426 3.975-1.117 3.975-1.117-3.284 3.549-6.842 3.379-6.842 3.379 1.495 1.675 3.738 1.533 3.738 1.533-2.934.69-5.688-.284-7.95-2.167-.425-.35-.832-.73-1.21-1.136-.144-.15-.28-.31-.417-.464-.047 1.751 1.779 3.379 1.779 3.379-2.29-.947-3.34-3-3.34-3s-1.543-2.631-.426-5.631c1.107-2.962 4.419-3.626 4.504-3.645-.251-.117-.644-.292-.814-.367-.293-.142-1.145-.455-1.145-.455a6.397 6.397 0 00-1.798-.274c-2.792 0-4.277 2.11-4.277 2.11-1.316 1.477-1.628 3.388-1.628 3.388-.37 1.827.028 3.748.028 3.748s.038.151.048.217c.303.72.69 1.43 1.145 2.101 2.46 3.672 6.454 4.94 6.454 4.94 5.914 2.006 9.955-.946 9.955-.946 3.72-2.555 4.467-5.508 4.467-5.508-3.01 2.338-4.306 2.12-4.306 2.12zM1.307 14.948a12.545 12.545 0 01-.36-1.78c-.01-.098-.025-.207-.037-.302 0 0-.133-1.287.151-2.697 0 0 .01-.038.02-.095.036-.203.093-.407.132-.577.085-.37.208-.814.33-1.174 0 0 1.307-4.287 5.726-6.245 0 0 1.524-.805 3.823-.862-.162-.16-.349-.329-.51-.435-1.08-.72-2.688-.956-3.663.057-.293.303-.54.634-.814.937-.312.34-.69.624-1.126.785-.378.142-.757.114-1.145.18-.397.066-.804.208-1.126.464-.35.284-.492.662-.53 1.097-.038.341-.028.691-.047 1.032-.048 1.003-.37 1.287-1.089 1.845-.303.227-.558.53-.747.852-.568 1.003.34 2.044.388 3.057.01.208-.01.416-.085.615-.076.217-.228.36-.35.54-.171.236-.285.52-.237.813.047.293.199.568.34.823.275.455.616.862.975 1.25.012.016.038.04.054.052l-.073-.232z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/reactos.svg b/assets/lib/simple-icons/icons/reactos.svg
index f2bdc5b5..d58738ed 100644
--- a/assets/lib/simple-icons/icons/reactos.svg
+++ b/assets/lib/simple-icons/icons/reactos.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>ReactOS icon</title><path d="M20.21 24c-1.148-.007-2.477-.334-3.89-.915-2.823-1.163-6.04-3.372-9.036-6.367C4.289 13.723 2.075 10.505.913 7.68-.25 4.857-.383 2.36.988.989 2.358-.38 4.855-.248 7.679.915c.306.125.617.265.932.415-.331.113-.658.24-.974.383l-.141-.058C4.832.558 2.698.519 1.607 1.609.517 2.7.557 4.83 1.653 7.494c1.097 2.663 3.235 5.793 6.147 8.704 2.91 2.911 6.044 5.05 8.708 6.147 2.664 1.097 4.79 1.136 5.88.045 1.091-1.09 1.056-3.22-.041-5.884-.108-.263-.23-.531-.358-.803.134-.317.25-.642.354-.973.282.54.53 1.07.744 1.589 1.163 2.823 1.292 5.32-.079 6.691-.685.685-1.651.997-2.799.99zM3.79 24c-1.148.008-2.117-.305-2.802-.99-1.37-1.37-1.238-3.868-.075-6.691.235-.572.517-1.16.836-1.76.098.333.212.66.34.978a17.67 17.67 0 00-.436.969C.556 19.169.521 21.3 1.611 22.39c1.091 1.091 3.221 1.051 5.885-.045.922-.38 3.021-1.69 4.026-2.308.216.162.433.32.649.474-1.157.733-3.415 2.13-4.492 2.574-1.412.581-2.74.907-3.888.915zm9.753-4.458c-.214-.14-.429-.282-.645-.433a34.547 34.547 0 003.302-2.911c2.912-2.911 5.05-6.04 6.147-8.704 1.097-2.664 1.132-4.794.042-5.885-1.091-1.09-3.217-1.055-5.88.042l-.072.029a10.726 10.726 0 00-.99-.379c.295-.14.587-.272.874-.39 2.824-1.163 5.321-1.292 6.691.078s1.238 3.864.075 6.688c-1.162 2.823-3.376 6.046-6.37 9.04a35.747 35.747 0 01-3.174 2.825zm1.95 1.156c-.325-.17-1.798-1.073-2.135-1.273 1.002-.806 2.423-1.97 3.396-2.944 1.718-1.718 3.981-4.787 5.162-6.555-.008.111-.093 2.49-.105 2.6a9.802 9.802 0 01-6.318 8.172zm-6.928-.034c-3.407-1.308-6.043-4.71-6.287-8.198-.01-.151-.06-.399-.054-.984.007-.602.056-1.423.159-1.283 1.036 1.42 3.976 5.455 5.352 6.83.973.973 1.927 1.624 2.929 2.43a112.45 112.45 0 01-2.1 1.205zm3.43-2.208a33.27 33.27 0 01-3.443-3.01c-2.54-2.54-4.462-5.254-5.568-7.582 1.45-3.597 4.973-6.138 9.087-6.138 4.051 0 7.53 2.465 9.02 5.976-1.093 2.363-3.045 5.145-5.643 7.743a33.161 33.161 0 01-3.452 3.011z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ReactOS</title><path d="M20.21 24c-1.148-.007-2.477-.334-3.89-.915-2.823-1.163-6.04-3.372-9.036-6.367C4.289 13.723 2.075 10.505.913 7.68-.25 4.857-.383 2.36.988.989 2.358-.38 4.855-.248 7.679.915c.306.125.617.265.932.415-.331.113-.658.24-.974.383l-.141-.058C4.832.558 2.698.519 1.607 1.609.517 2.7.557 4.83 1.653 7.494c1.097 2.663 3.235 5.793 6.147 8.704 2.91 2.911 6.044 5.05 8.708 6.147 2.664 1.097 4.79 1.136 5.88.045 1.091-1.09 1.056-3.22-.041-5.884-.108-.263-.23-.531-.358-.803.134-.317.25-.642.354-.973.282.54.53 1.07.744 1.589 1.163 2.823 1.292 5.32-.079 6.691-.685.685-1.651.997-2.799.99zM3.79 24c-1.148.008-2.117-.305-2.802-.99-1.37-1.37-1.238-3.868-.075-6.691.235-.572.517-1.16.836-1.76.098.333.212.66.34.978a17.67 17.67 0 00-.436.969C.556 19.169.521 21.3 1.611 22.39c1.091 1.091 3.221 1.051 5.885-.045.922-.38 3.021-1.69 4.026-2.308.216.162.433.32.649.474-1.157.733-3.415 2.13-4.492 2.574-1.412.581-2.74.907-3.888.915zm9.753-4.458c-.214-.14-.429-.282-.645-.433a34.547 34.547 0 003.302-2.911c2.912-2.911 5.05-6.04 6.147-8.704 1.097-2.664 1.132-4.794.042-5.885-1.091-1.09-3.217-1.055-5.88.042l-.072.029a10.726 10.726 0 00-.99-.379c.295-.14.587-.272.874-.39 2.824-1.163 5.321-1.292 6.691.078s1.238 3.864.075 6.688c-1.162 2.823-3.376 6.046-6.37 9.04a35.747 35.747 0 01-3.174 2.825zm1.95 1.156c-.325-.17-1.798-1.073-2.135-1.273 1.002-.806 2.423-1.97 3.396-2.944 1.718-1.718 3.981-4.787 5.162-6.555-.008.111-.093 2.49-.105 2.6a9.802 9.802 0 01-6.318 8.172zm-6.928-.034c-3.407-1.308-6.043-4.71-6.287-8.198-.01-.151-.06-.399-.054-.984.007-.602.056-1.423.159-1.283 1.036 1.42 3.976 5.455 5.352 6.83.973.973 1.927 1.624 2.929 2.43a112.45 112.45 0 01-2.1 1.205zm3.43-2.208a33.27 33.27 0 01-3.443-3.01c-2.54-2.54-4.462-5.254-5.568-7.582 1.45-3.597 4.973-6.138 9.087-6.138 4.051 0 7.53 2.465 9.02 5.976-1.093 2.363-3.045 5.145-5.643 7.743a33.161 33.161 0 01-3.452 3.011z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/reactquery.svg b/assets/lib/simple-icons/icons/reactquery.svg
new file mode 100644
index 00000000..3ae2e47c
--- /dev/null
+++ b/assets/lib/simple-icons/icons/reactquery.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>React Query</title><path d="M6.9297 13.6875c.164-.0938.375-.0352.4687.1328l.0625.1055c.4805.8515.9805 1.6601 1.5 2.4258.6133.9023 1.3047 1.8164 2.0743 2.7421a.3455.3455 0 0 1-.0391.4844l-.0742.0664c-2.543 2.2227-4.1914 2.664-4.9532 1.332-.746-1.3046-.4765-3.6718.8086-7.1093a.3437.3437 0 0 1 .1524-.1797ZM17.75 16.3008c.1836-.0313.3594.086.3945.2695l.0196.1016c.6289 3.2851.1875 4.9297-1.3243 4.9297-1.4804 0-3.3593-1.4024-5.6484-4.2032a.3271.3271 0 0 1-.0742-.2226c0-.1875.1562-.3399.3437-.3399h.1211a32.9838 32.9838 0 0 0 2.8086-.0976c1.0703-.086 2.1914-.2305 3.3594-.4375zm.871-6.9766a.3528.3528 0 0 1 .4454-.211l.1016.0352c3.2617 1.1094 4.5039 2.332 3.7187 3.6641-.7656 1.3047-2.9922 2.254-6.6836 2.8477-.082.0117-.168-.004-.2383-.047-.168-.0976-.2265-.3085-.125-.4765l.0625-.1054c.504-.8438.957-1.6836 1.3672-2.5235.4766-.9883.9297-2.0508 1.3516-3.1836zM7.797 8.3398c.082-.0117.168.004.2383.047.168.0976.2265.3085.125.4765l-.0625.1054a34.0882 34.0882 0 0 0-1.3672 2.5235c-.4766.9883-.9297 2.0508-1.3516 3.1836a.3528.3528 0 0 1-.4453.211l-.1016-.0352c-3.2617-1.1094-4.5039-2.332-3.7187-3.6641.7656-1.3047 2.9922-2.254 6.6836-2.8477Zm5.2812-3.9843c2.543-2.2227 4.1914-2.664 4.9532-1.332.746 1.3046.4765 3.6718-.8086 7.1093a.3436.3436 0 0 1-.1524.1797c-.164.0938-.375.0352-.4687-.1328l-.0625-.1055c-.4805-.8515-.9805-1.6601-1.5-2.4258-.6133-.9023-1.3047-1.8164-2.0743-2.7421a.3455.3455 0 0 1 .0391-.4844Zm-5.793-2.082c1.4805 0 3.3633 1.4023 5.6485 4.203a.3488.3488 0 0 1 .0781.2188c-.0039.1914-.1562.3438-.3476.3438l-.1172-.004a34.5835 34.5835 0 0 0-2.8086.1016c-1.0742.086-2.1953.2305-3.3633.4375a.343.343 0 0 1-.3945-.2734l-.0196-.0977c-.629-3.2851-.1876-4.9297 1.3242-4.9297Zm2.8711 5.8124h3.6875a.638.638 0 0 1 .5508.3164l1.8477 3.2188a.6437.6437 0 0 1 0 .6289l-1.8477 3.2227a.638.638 0 0 1-.5507.3164h-3.6875c-.2266 0-.4375-.1211-.547-.3164L7.7579 12.25a.6437.6437 0 0 1 0-.629l1.8516-3.2187c.1093-.1953.3203-.3164.5468-.3164Zm3.2305.793a.638.638 0 0 1 .5508.3164l1.3906 2.4258a.6437.6437 0 0 1 0 .6289l-1.3906 2.4297a.638.638 0 0 1-.5508.3164h-2.7734c-.2266 0-.4375-.1211-.5469-.3164L8.672 12.25a.6437.6437 0 0 1 0-.629l1.3945-2.4257c.1094-.1953.3203-.3164.5469-.3164Zm-.4922.8672h-1.789c-.2266 0-.4336.1172-.547.3164l-.8983 1.5586a.6437.6437 0 0 0 0 .6289l.8984 1.5625a.6317.6317 0 0 0 .5469.3164h1.789a.6317.6317 0 0 0 .547-.3164l.8983-1.5625a.6437.6437 0 0 0 0-.629l-.8984-1.5585c-.1133-.1992-.3203-.3164-.5469-.3164Zm-.4765.8281c.2265 0 .4375.1211.5468.3164l.422.7305c.1132.1953.1132.4375 0 .6289l-.422.7344c-.1093.1953-.3203.3164-.5468.3164h-.836a.6317.6317 0 0 1-.5468-.3164l-.422-.7344c-.1132-.1914-.1132-.4336 0-.629l.422-.7304a.6317.6317 0 0 1 .5468-.3164zm-.418.8164a.548.548 0 0 0-.4727.2735c-.0976.168-.0976.375 0 .5468a.5444.5444 0 0 0 .4727.2696.5444.5444 0 0 0 .4727-.2696c.0976-.1718.0976-.3789 0-.5468A.548.548 0 0 0 12 11.3906Zm-4.4219.5469h.9805M18.9805 7.75c.3906-1.8945.4765-3.3438.2226-4.3984-.1484-.629-.4218-1.1368-.8398-1.5078-.4414-.3907-1-.582-1.625-.582-1.0352 0-2.1211.4726-3.2813 1.3671-.4726.3633-.9648.8047-1.4726 1.3164-.043-.0508-.086-.1015-.1367-.1445-1.4454-1.2852-2.6602-2.082-3.6993-2.3906-.6171-.1836-1.1953-.1993-1.7226-.0235-.5586.1875-1.004.5742-1.3164 1.1172-.5156.8945-.6524 2.0742-.461 3.5274.0782.5898.2149 1.2343.4024 1.9335a1.1187 1.1187 0 0 0-.2149.047C3.008 8.621 1.711 9.2694.9258 10.0155c-.4649.4414-.7695.9375-.8828 1.4805-.1133.5781 0 1.1562.3125 1.6992.5156.8945 1.4648 1.5977 2.8164 2.1563.543.2226 1.1562.4257 1.8437.6093a1.0227 1.0227 0 0 0-.0703.2266c-.3906 1.8906-.4765 3.3438-.2226 4.3945.1484.629.4257 1.1407.8398 1.5078.4414.3907 1 .582 1.625.582 1.0352 0 2.121-.4726 3.2813-1.3632.4765-.3711.9726-.8164 1.4882-1.336a1.2 1.2 0 0 0 .1953.2266c1.4454 1.2852 2.6602 2.082 3.6993 2.3906.6172.1836 1.1953.1993 1.7226.0235.5586-.1875 1.004-.5742 1.3164-1.1172.5157-.8945.6524-2.0742.461-3.5273-.082-.6133-.2227-1.2813-.4258-2.0118a1.2248 1.2248 0 0 0 .2383-.0468c1.828-.6094 3.125-1.2578 3.9101-2.004.4649-.4413.7696-.9374.8828-1.4804.1133-.5781 0-1.1563-.3125-1.6992-.5156-.8946-1.4648-1.5977-2.8164-2.1563-.5586-.2304-1.1953-.4414-1.9062-.625a.8647.8647 0 0 0 .0586-.1953z"/></svg>
diff --git a/assets/lib/simple-icons/icons/reactrouter.svg b/assets/lib/simple-icons/icons/reactrouter.svg
index 7f232752..b855c637 100644
--- a/assets/lib/simple-icons/icons/reactrouter.svg
+++ b/assets/lib/simple-icons/icons/reactrouter.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>React Router icon</title><path d="M12.118 5.466a2.306 2.306 0 00-.623.08c-.278.067-.702.332-.953.583-.41.423-.49.609-.662 1.469-.08.423.41 1.43.847 1.734.45.317 1.085.502 2.065.608 1.429.16 1.84.636 1.84 2.197 0 1.377-.385 1.747-1.96 1.906-1.707.172-2.58.834-2.765 2.117-.106.781.41 1.76 1.125 2.091 1.627.768 3.15-.198 3.467-2.196.211-1.284.622-1.642 1.998-1.747 1.588-.133 2.409-.675 2.713-1.787.278-1.02-.304-2.157-1.297-2.554-.264-.106-.873-.238-1.35-.291-1.495-.16-1.879-.424-2.038-1.39-.225-1.337-.317-1.562-.794-2.09a2.174 2.174 0 00-1.613-.73zm-4.785 4.36a2.145 2.145 0 00-.497.048c-1.469.318-2.17 2.051-1.35 3.295 1.178 1.774 3.944.953 3.97-1.177.012-1.193-.98-2.143-2.123-2.166zM2.089 14.19a2.22 2.22 0 00-.427.052c-2.158.476-2.237 3.626-.106 4.182.53.145.582.145 1.111.013 1.191-.318 1.866-1.456 1.549-2.607-.278-1.02-1.144-1.664-2.127-1.64zm19.824.008c-.233.002-.477.058-.784.162-1.39.477-1.866 2.092-.98 3.336.557.794 1.96 1.058 2.82.516 1.416-.874 1.363-3.057-.093-3.746-.38-.186-.663-.271-.963-.268z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>React Router</title><path d="M12.118 5.466a2.306 2.306 0 00-.623.08c-.278.067-.702.332-.953.583-.41.423-.49.609-.662 1.469-.08.423.41 1.43.847 1.734.45.317 1.085.502 2.065.608 1.429.16 1.84.636 1.84 2.197 0 1.377-.385 1.747-1.96 1.906-1.707.172-2.58.834-2.765 2.117-.106.781.41 1.76 1.125 2.091 1.627.768 3.15-.198 3.467-2.196.211-1.284.622-1.642 1.998-1.747 1.588-.133 2.409-.675 2.713-1.787.278-1.02-.304-2.157-1.297-2.554-.264-.106-.873-.238-1.35-.291-1.495-.16-1.879-.424-2.038-1.39-.225-1.337-.317-1.562-.794-2.09a2.174 2.174 0 00-1.613-.73zm-4.785 4.36a2.145 2.145 0 00-.497.048c-1.469.318-2.17 2.051-1.35 3.295 1.178 1.774 3.944.953 3.97-1.177.012-1.193-.98-2.143-2.123-2.166zM2.089 14.19a2.22 2.22 0 00-.427.052c-2.158.476-2.237 3.626-.106 4.182.53.145.582.145 1.111.013 1.191-.318 1.866-1.456 1.549-2.607-.278-1.02-1.144-1.664-2.127-1.64zm19.824.008c-.233.002-.477.058-.784.162-1.39.477-1.866 2.092-.98 3.336.557.794 1.96 1.058 2.82.516 1.416-.874 1.363-3.057-.093-3.746-.38-.186-.663-.271-.963-.268z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/reacttable.svg b/assets/lib/simple-icons/icons/reacttable.svg
new file mode 100644
index 00000000..e071a137
--- /dev/null
+++ b/assets/lib/simple-icons/icons/reacttable.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>React Table</title><path d="M16.738 1.263c.626 0 1.183.192 1.624.581.417.369.692.88.842 1.507.253 1.054.169 2.505-.222 4.398a1.105 1.105 0 01-.06.195c.712.187 1.347.395 1.906.626 1.352.559 2.301 1.264 2.817 2.158.313.542.427 1.12.31 1.696-.11.546-.415 1.04-.882 1.482-.784.745-2.08 1.396-3.91 2.002a1.1 1.1 0 01-.236.05c.201.729.343 1.4.424 2.013.193 1.452.056 2.629-.46 3.524-.314.543-.758.93-1.316 1.118-.528.177-1.107.16-1.725-.023-1.039-.308-2.253-1.106-3.696-2.39a1.1 1.1 0 01-.195-.228c-.516.521-1.013.966-1.491 1.335-1.16.894-2.247 1.364-3.28 1.364-.626 0-1.183-.19-1.624-.58-.417-.37-.692-.88-.842-1.507-.253-1.054-.169-2.506.222-4.398.016-.079.04-.154.072-.224-.687-.183-1.301-.386-1.844-.61C1.82 14.793.871 14.088.355 13.194c-.313-.542-.427-1.12-.31-1.697.11-.545.415-1.039.882-1.482.784-.744 2.08-1.396 3.91-2.002.071-.023.143-.039.215-.048a14.937 14.937 0 01-.403-1.936c-.193-1.452-.056-2.629.46-3.524.314-.543.758-.93 1.316-1.118.528-.177 1.107-.16 1.725.023 1.039.308 2.253 1.106 3.696 2.39.05.045.097.094.137.147.51-.515 1.002-.954 1.475-1.32 1.16-.893 2.247-1.364 3.28-1.364zM7.359 13.761a.342.342 0 00-.582.106c-1.284 3.436-1.554 5.806-.809 7.11.762 1.332 2.413.889 4.953-1.33l.077-.068.053-.059a.351.351 0 00-.016-.427 36.239 36.239 0 01-2.074-2.743 34.032 34.032 0 01-1.502-2.425l-.06-.106zm10.46 2.534l-.067.005c-1.169.206-2.29.352-3.363.437-.91.072-1.845.105-2.808.1h-.12l-.07.006a.343.343 0 00-.198.554C13.48 20.2 15.361 21.6 16.84 21.6c1.512 0 1.954-1.643 1.326-4.928l-.02-.1-.02-.066a.342.342 0 00-.374-.206zm-6.231-1.137H9.385l.252.44a.632.632 0 00.548.318h1.403v-.758zm3.087 0h-2.203v.758h1.403a.632.632 0 00.548-.317l.252-.441zM19 9.098a.355.355 0 00-.379.226 35.885 35.885 0 01-1.352 3.184 33.75 33.75 0 01-1.366 2.525l-.063.106-.03.064a.345.345 0 00.155.412.36.36 0 00.237.044c3.692-.595 5.92-1.543 6.687-2.846.784-1.332-.456-2.554-3.72-3.666l-.1-.033zm-11.118-.76l-.082.003c-3.692.595-5.92 1.543-6.687 2.846-.784 1.332.456 2.554 3.72 3.666l.1.033.069.016c.161.021.321-.07.379-.226a35.885 35.885 0 011.352-3.184 33.75 33.75 0 011.366-2.525l.063-.106.03-.064a.345.345 0 00-.155-.412.36.36 0 00-.237-.044zm3.707 5.051H8.37l.507.885h2.71v-.885zm4.102 0h-3.218v.885h2.71l.508-.885zm-4.102-1.768H7.862l-.073.128a.632.632 0 000 .628l.073.128h3.726v-.884zm4.61 0h-3.726v.884h3.726l.073-.128a.632.632 0 000-.628l-.073-.128zm-4.61-1.768h-2.71l-.508.884h3.218v-.884zm3.595 0h-2.711v.884h3.218l-.507-.884zm2.849-6.83c-.762-1.332-2.413-.889-4.953 1.33l-.077.068-.053.059a.351.351 0 00.016.427c.768.926 1.46 1.84 2.074 2.743.52.765 1.021 1.573 1.502 2.425l.06.106.04.058a.342.342 0 00.582-.106c1.284-3.436 1.554-5.806.809-7.11zm-6.444 5.188h-1.403a.632.632 0 00-.548.317l-.253.44h2.204v-.757zm2.287 0h-1.403v.757h2.204l-.253-.44a.632.632 0 00-.548-.317zM7.286 2.274c-1.511 0-1.953 1.642-1.326 4.928l.02.1.02.065c.06.146.214.235.375.207a35.507 35.507 0 013.363-.437 33.252 33.252 0 012.807-.1h.12l.07-.006a.343.343 0 00.198-.554c-2.286-2.802-4.168-4.203-5.647-4.203z"/></svg>
diff --git a/assets/lib/simple-icons/icons/readthedocs.svg b/assets/lib/simple-icons/icons/readthedocs.svg
index 2c87339a..fdf47940 100644
--- a/assets/lib/simple-icons/icons/readthedocs.svg
+++ b/assets/lib/simple-icons/icons/readthedocs.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Read the Docs icon</title><path d="M2.759 24l.664-.144c.207-.044.412-.085.619-.126.318-.062.637-.123.955-.182.24-.046.48-.085.721-.129l.055-.015c.25-.044.498-.09.747-.12l1.214-.179V-.001h-.042c-.63.004-1.256.016-1.884.036-.689.018-1.394.06-2.084.105-.299.021-.6.046-.899.07H2.78v23.784L2.759 24zM8.911.015v22.942c.861-.1 1.72-.182 2.582-.246 2.121-.161 4.248-.211 6.373-.151 1.128.034 2.253.099 3.374.192V1.503c-1.004-.229-2.012-.432-3.028-.607-1.968-.342-3.955-.581-5.947-.731C11.151.084 10.032.033 8.913.016h-.002zm10.763 14.797l-.046-.004-.561-.061c-1.399-.146-2.805-.242-4.207-.291-1.407-.045-2.815-.03-4.223.016h-.044c-.045 0-.091 0-.135-.016-.101-.03-.195-.074-.267-.149-.127-.136-.186-.315-.156-.495.008-.061.029-.105.054-.166.027-.044.063-.104.104-.134.043-.045.09-.075.143-.104.061-.03.121-.046.18-.061h.09c.195 0 .391-.016.57-.016 1.395-.029 2.773-.029 4.169.03 1.439.06 2.864.165 4.288.33l.151.015c.044.016.089.016.135.03.105.046.194.105.255.181.044.044.074.104.105.164.029.061.044.12.044.18.015.165-.044.33-.164.45-.046.046-.091.075-.135.105-.047.03-.105.044-.166.06-.03.016-.045.016-.089.016h-.047l-.048-.08zm.035-2.711c-.044 0-.044 0-.09-.006l-.555-.071c-1.395-.179-2.804-.3-4.198-.359-1.395-.075-2.805-.09-4.214-.06l-.046-.016c-.045-.015-.09-.015-.135-.029-.09-.03-.194-.09-.254-.166-.03-.045-.076-.104-.09-.148-.075-.166-.075-.361.014-.525.031-.061.061-.105.105-.15s.09-.09.15-.104c.061-.03.119-.06.18-.06l.09-.016.585-.015c1.396-.016 2.774.015 4.153.09 1.439.075 2.865.21 4.289.39l.149.016.091.014c.105.031.194.075.27.166.12.119.18.284.165.449 0 .061-.016.121-.045.165-.029.06-.061.104-.09.15-.03.044-.074.075-.136.12-.044.029-.104.045-.164.061l-.091.014H19.8l-.091.09zm0-2.711c-.044 0-.044 0-.09-.006l-.555-.08c-1.395-.19-2.789-.334-4.198-.428-1.395-.092-2.805-.135-4.214-.129h-.046l-.09-.016c-.059-.016-.104-.036-.164-.068-.15-.092-.256-.254-.285-.438 0-.061 0-.12.016-.18.014-.061.029-.117.059-.17.031-.054.076-.102.121-.144.074-.075.18-.126.285-.15.045-.011.089-.015.135-.015h.569c1.439.009 2.879.064 4.304.172 1.395.105 2.774.26 4.153.457l.15.021c.046.007.061.007.09.019.06.02.12.046.165.08.061.033.104.075.135.123.031.048.061.101.09.158.062.156.045.334-.029.479-.029.055-.061.105-.105.146-.075.074-.164.127-.27.15-.029.012-.046.012-.091.014l-.044.005h-.091zm0-2.712c-.044 0-.044 0-.09-.007l-.555-.09c-1.395-.225-2.789-.391-4.198-.496-1.395-.119-2.805-.179-4.214-.209h-.046l-.105-.014c-.061-.015-.115-.045-.165-.074-.053-.031-.099-.076-.14-.121-.036-.045-.068-.104-.094-.149-.02-.06-.037-.12-.044-.181-.016-.18.053-.371.181-.494.074-.075.176-.125.279-.15.045-.015.09-.015.135-.015.189 0 .38.005.57.008 1.437.034 2.871.113 4.304.246 1.387.119 2.77.3 4.145.524l.135.016c.04 0 .052 0 .09.014.062.016.112.046.165.076.046.029.09.074.125.119.091.135.135.301.105.465-.015.061-.031.105-.061.166-.03.045-.074.104-.12.135-.074.074-.165.119-.271.149h-.135l.004.082zm-15.67-.509c-.09 0-.181-.021-.271-.063-.194-.095-.314-.293-.329-.505 0-.057.015-.111.03-.165.014-.068.045-.133.09-.19.045-.065.104-.12.164-.162.077-.05.167-.076.241-.092l.48-.044c.659-.058 1.305-.105 1.949-.144h.06c.105.004.195.024.271.071.194.103.314.305.314.519 0 .055-.015.109-.029.161-.016.067-.045.132-.091.189-.044.075-.104.12-.165.165-.074.045-.15.074-.24.09-.104.015-.209.015-.314.03-.136.015-.286.015-.436.031l-1.168.088-.285.031c-.061.015-.122.015-.196.015l-.075-.025zm15.655-2.201l-.091-.01-.554-.1c-1.395-.234-2.805-.425-4.214-.564-1.395-.138-2.804-.225-4.214-.271h-.045l-.09-.018c-.061-.015-.105-.038-.165-.071-.045-.03-.091-.072-.135-.121-.12-.138-.165-.33-.12-.506.016-.061.045-.12.074-.18.031-.061.076-.105.121-.15.074-.076.18-.121.285-.15.045-.015.089-.015.135-.015l.584.015c1.395.061 2.774.15 4.154.301 1.439.148 2.864.359 4.288.6l.15.014c.046 0 .061 0 .09.016.06.015.12.045.165.074.135.105.225.256.239.421.016.06 0 .12-.015.181 0 .059-.029.119-.059.164-.031.045-.062.09-.105.135-.076.076-.181.12-.286.135l-.086.014h-.046l-.06.086zM4.022 3.199c-.086 0-.171-.019-.25-.056-.07-.033-.134-.079-.187-.137-.045-.053-.086-.112-.111-.181-.02-.049-.034-.101-.039-.156-.022-.214.078-.427.255-.546.078-.054.167-.086.26-.099.158-.014.314-.014.473-.029.65-.045 1.301-.075 1.949-.105h.048c.091.016.181.03.256.075.179.105.3.315.3.524 0 .061-.016.121-.03.166-.03.074-.06.135-.104.195-.047.06-.107.12-.182.15-.075.045-.165.075-.255.075-.104.014-.21.014-.33.014l-.449.031c-.405.029-.795.045-1.186.074l-.3.016c-.075.015-.134.015-.194.015l.076-.026z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Read the Docs</title><path d="M7.732 0a59.316 59.316 0 0 0-4.977.218V24a62.933 62.933 0 0 1 3.619-.687c.17-.028.34-.053.509-.078.215-.033.43-.066.644-.096l.205-.03zm1.18.003V22.96a61.042 61.042 0 0 1 12.333-.213V1.485A60.859 60.859 0 0 0 8.912.003zm1.707 1.81a.59.59 0 0 1 .015 0c3.06.088 6.125.404 9.167.95a.59.59 0 0 1 .476.686.59.59 0 0 1-.569.484.59.59 0 0 1-.116-.009 60.622 60.622 0 0 0-8.992-.931.59.59 0 0 1-.573-.607.59.59 0 0 1 .592-.572zm-4.212.028a.59.59 0 0 1 .578.565.59.59 0 0 1-.564.614 59.74 59.74 0 0 0-2.355.144.59.59 0 0 1-.04.002.59.59 0 0 1-.595-.542.59.59 0 0 1 .54-.635c.8-.065 1.6-.114 2.401-.148a.59.59 0 0 1 .035 0zm4.202 2.834a.59.59 0 0 1 .015 0 61.6 61.6 0 0 1 9.167.8.59.59 0 0 1 .488.677.59.59 0 0 1-.602.494.59.59 0 0 1-.076-.006 60.376 60.376 0 0 0-8.99-.786.59.59 0 0 1-.584-.596.59.59 0 0 1 .582-.583zm-4.211.097a.59.59 0 0 1 .587.555.59.59 0 0 1-.554.622c-.786.046-1.572.107-2.356.184a.59.59 0 0 1-.04.003.59.59 0 0 1-.603-.533.59.59 0 0 1 .53-.644c.8-.078 1.599-.14 2.4-.187a.59.59 0 0 1 .036 0zM10.6 7.535a.59.59 0 0 1 .015 0c3.06-.013 6.125.204 9.167.65a.59.59 0 0 1 .498.67.59.59 0 0 1-.593.504.59.59 0 0 1-.076-.006 60.142 60.142 0 0 0-8.992-.638.59.59 0 0 1-.592-.588.59.59 0 0 1 .573-.592zm1.153 2.846a61.093 61.093 0 0 1 8.02.515.59.59 0 0 1 .509.66.59.59 0 0 1-.586.514.59.59 0 0 1-.076-.005 59.982 59.982 0 0 0-8.99-.492.59.59 0 0 1-.603-.577.59.59 0 0 1 .578-.603c.382-.008.765-.012 1.148-.012zm1.139 2.832a60.92 60.92 0 0 1 6.871.394.59.59 0 0 1 .52.652.59.59 0 0 1-.577.523.59.59 0 0 1-.076-.004 59.936 59.936 0 0 0-8.991-.344.59.59 0 0 1-.61-.568.59.59 0 0 1 .567-.611c.765-.028 1.53-.042 2.296-.042z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/realm.svg b/assets/lib/simple-icons/icons/realm.svg
index d23862e0..88181570 100644
--- a/assets/lib/simple-icons/icons/realm.svg
+++ b/assets/lib/simple-icons/icons/realm.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Realm icon</title><path d="M12.004.059A12.122 12.122 0 0 0 3.52 3.564v.002C1.295 5.79.004 8.887.004 12.03c0 3.142 1.285 6.244 3.516 8.465l.001.002A12.168 12.168 0 0 0 12 24.002h.004c3.148 0 6.255-1.283 8.482-3.508l.002-.002a12.08 12.08 0 0 0 3.516-8.457v-.004c0-3.141-1.287-6.243-3.518-8.465A12.116 12.116 0 0 0 12.004.06zm0 1.336c.48 0 .96.046 1.435.113-2.03.566-3.765 1.622-5.554 1.949a7.352 7.352 0 0 1-2.225.045c1.826-1.338 4.084-2.107 6.344-2.107zm4.135 1.072c.173 0 .348.011.521.023a10.59 10.59 0 0 1 2.883 2.022c.092.091.173.194.262.289a10.278 10.278 0 0 1-4.442 1.178c-2.43.06-4.958-.794-7.69-.823a12.662 12.662 0 0 0-4.362.744c.32-.457.672-.893 1.062-1.293 1.223.322 2.5.39 3.748.164h.002c2.264-.412 4.133-1.625 6.049-2.08a8.342 8.342 0 0 1 1.967-.224zm4.535 3.404a10.87 10.87 0 0 1 1.433 2.824c-.435-.243-.884-.46-1.35-.644h-.001a11.305 11.305 0 0 0-6.62-.492h-.003c-1.489.344-2.841.967-4.154 1.523-.468.198-.933.383-1.399.553a10.83 10.83 0 0 0-1.445-.256h-.002a9.578 9.578 0 0 0-4.194.549 8.125 8.125 0 0 1-1.244-.535 10.9 10.9 0 0 1 .53-1.557c1.671-.877 3.552-1.364 5.433-1.344 2.445.026 4.992.89 7.738.822h.004a11.626 11.626 0 0 0 5.274-1.443zm-4.031 2.742c1.233 0 2.463.229 3.625.682a9.895 9.895 0 0 1 2.283 1.281c.036.252.064.504.082.758-.734-.187-1.488-.3-2.244-.328a10.28 10.28 0 0 0-3.201.38c-.697.198-1.353.463-1.989.759-1.087-.371-2.166-.86-3.277-1.336a35.107 35.107 0 0 0-1.324-.538c1.3-.552 2.554-1.113 3.834-1.41a9.968 9.968 0 0 1 2.21-.248zM5.877 10.676c.374-.016.75-.005 1.125.031 1.475.148 2.935.704 4.393 1.33.717.309 1.453.625 2.203.928-1.1.604-2.156 1.225-3.237 1.701-1.05-.394-2.131-.758-3.302-.918-1.835-.25-3.717.06-5.387.828a10.467 10.467 0 0 1-.32-2.3c.403-.3.828-.57 1.28-.79a8.264 8.264 0 0 1 3.245-.81zm14.463 1.666c.775.029 1.547.16 2.29.379a10.709 10.709 0 0 1-.304 1.894c-.67.438-1.383.807-2.139 1.08-1.828.657-3.85.79-5.75.373-.78-.17-1.557-.45-2.341-.75 1.889-.973 3.598-2.119 5.457-2.646h.002a8.954 8.954 0 0 1 2.785-.33zM5.508 15.006c.458-.016.916.005 1.369.066 2.354.322 4.617 1.718 7.275 2.301.357.078.717.134 1.078.178-.35.1-.698.21-1.043.332v.002h-.001c-1.283.462-2.455 1.042-3.637 1.388-2.151.625-4.443.54-6.543-.23a10.723 10.723 0 0 1-1.926-3.18 8.615 8.615 0 0 1 3.428-.857zm16.144 1.5c-.067.145-.133.291-.207.433-.221-.017-.442-.039-.664-.048.298-.112.584-.251.871-.385zm-1.7 1.703c.231-.001.464.007.696.016-.333.465-.696.912-1.105 1.324h-.002v.002c-1.966 1.963-4.754 3.113-7.535 3.113a10.814 10.814 0 0 1-5.793-1.725c1.57.189 3.173.065 4.71-.382h.003c1.332-.391 2.526-.987 3.71-1.414a16.091 16.091 0 0 1 5.315-.934z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Realm</title><path d="M12 .029a12.122 12.122 0 00-8.484 3.504v.003C1.291 5.76 0 8.855 0 11.998c0 3.142 1.285 6.244 3.516 8.465l.001.002a12.168 12.168 0 008.479 3.505H12c3.148 0 6.255-1.283 8.482-3.508l.002-.002A12.08 12.08 0 0024 12.005V12c0-3.14-1.287-6.242-3.518-8.464A12.116 12.116 0 0012 .03zm0 1.336c.48 0 .96.046 1.435.113-2.03.566-3.765 1.622-5.554 1.949a7.352 7.352 0 01-2.225.044C7.482 2.135 9.74 1.364 12 1.364zm4.135 1.072c.173 0 .348.01.521.023a10.59 10.59 0 012.883 2.022c.092.09.173.194.262.289a10.278 10.278 0 01-4.442 1.178c-2.43.06-4.958-.794-7.69-.823a12.662 12.662 0 00-4.362.744c.32-.457.672-.893 1.062-1.293 1.223.322 2.5.39 3.748.164h.002c2.264-.412 4.133-1.625 6.049-2.08a8.342 8.342 0 011.967-.225zM20.67 5.84a10.87 10.87 0 011.433 2.824 11.21 11.21 0 00-1.35-.644h-.001a11.305 11.305 0 00-6.62-.493h-.003c-1.489.345-2.841.968-4.154 1.524-.468.198-.933.383-1.399.553a10.83 10.83 0 00-1.445-.257h-.002a9.578 9.578 0 00-4.194.55 8.125 8.125 0 01-1.244-.536 10.9 10.9 0 01.53-1.557c1.671-.877 3.552-1.364 5.433-1.344 2.445.026 4.992.89 7.738.822h.004A11.626 11.626 0 0020.67 5.84zm-4.031 2.742c1.233 0 2.463.228 3.625.681a9.895 9.895 0 012.283 1.282c.036.252.064.504.082.758a10.71 10.71 0 00-2.244-.329 10.28 10.28 0 00-3.201.38c-.697.199-1.353.464-1.989.76-1.087-.371-2.166-.86-3.277-1.336a35.107 35.107 0 00-1.324-.538c1.3-.552 2.554-1.113 3.834-1.41a9.968 9.968 0 012.21-.248zM5.873 10.644c.374-.015.75-.004 1.125.032 1.475.148 2.935.704 4.393 1.33.717.309 1.453.625 2.203.928-1.1.604-2.156 1.225-3.237 1.7-1.05-.393-2.131-.757-3.302-.917-1.835-.25-3.717.06-5.387.828a10.467 10.467 0 01-.32-2.3c.403-.3.828-.57 1.28-.79a8.264 8.264 0 013.245-.81zm14.463 1.667c.775.029 1.547.16 2.29.379a10.709 10.709 0 01-.304 1.893c-.67.439-1.383.808-2.139 1.08-1.828.658-3.85.79-5.75.374-.78-.17-1.557-.45-2.341-.75 1.889-.973 3.598-2.12 5.457-2.646h.002a8.954 8.954 0 012.785-.33zM5.504 14.976a8.13 8.13 0 011.369.065c2.354.323 4.617 1.719 7.275 2.302.357.078.717.134 1.078.178-.35.1-.698.21-1.043.332v.002h-.001c-1.283.462-2.455 1.042-3.637 1.388-2.151.625-4.443.54-6.543-.23a10.723 10.723 0 01-1.926-3.18 8.615 8.615 0 013.428-.858zm16.144 1.5c-.067.145-.133.29-.207.433-.221-.017-.442-.04-.664-.048.298-.112.584-.251.871-.385zm-1.7 1.703a16.2 16.2 0 01.696.016c-.333.464-.696.911-1.105 1.323h-.002v.002c-1.966 1.963-4.754 3.113-7.535 3.113a10.814 10.814 0 01-5.793-1.725c1.57.19 3.173.065 4.71-.382h.003c1.332-.39 2.526-.987 3.71-1.414a16.091 16.091 0 015.315-.934z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/reason.svg b/assets/lib/simple-icons/icons/reason.svg
index 98397844..fe9f5d43 100644
--- a/assets/lib/simple-icons/icons/reason.svg
+++ b/assets/lib/simple-icons/icons/reason.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Reason icon</title><path d="M0 0v24h24V0H0zm11.52 21.89l-1.33-2.54H8.4v2.54H6v-9.2h4.13c2.44 0 3.83 1.19 3.83 3.24 0 1.39-.58 2.4-1.64 2.96l1.92 3h-2.72zm11.36 0H15.5v-9.2h7.24v1.92H17.9v1.72h4.38v1.9l-4.38.01v1.73h4.99v1.92zM11.68 16c0 .93-.56 1.43-1.53 1.43H8.4v-2.82h1.75c.97 0 1.53.49 1.53 1.4z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Reason</title><path d="M0 0v24h24V0H0zm11.52 21.89l-1.33-2.54H8.4v2.54H6v-9.2h4.13c2.44 0 3.83 1.19 3.83 3.24 0 1.39-.58 2.4-1.64 2.96l1.92 3h-2.72zm11.36 0H15.5v-9.2h7.24v1.92H17.9v1.72h4.38v1.9l-4.38.01v1.73h4.99v1.92zM11.68 16c0 .93-.56 1.43-1.53 1.43H8.4v-2.82h1.75c.97 0 1.53.49 1.53 1.4z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/reasonstudios.svg b/assets/lib/simple-icons/icons/reasonstudios.svg
index ea3429ad..d70937a8 100644
--- a/assets/lib/simple-icons/icons/reasonstudios.svg
+++ b/assets/lib/simple-icons/icons/reasonstudios.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Reason Studios icon</title><path d="M2.49,5.114l8.299-4.79c0.739-0.427,1.647-0.432,2.391-0.017l0.03,0.017 l8.299,4.79c0.74,0.427,1.2,1.212,1.211,2.065V7.21v9.58c0,0.854-0.451,1.644-1.184,2.08l-0.027,0.016l-8.299,4.79 c-0.739,0.427-1.647,0.432-2.391,0.017l-0.03-0.017l-8.299-4.79c-0.74-0.427-1.199-1.213-1.21-2.065V16.79V7.21 c0-0.854,0.45-1.644,1.184-2.08L2.49,5.114l8.299-4.79L2.49,5.114z M12,4.026L5.092,8.013v7.974L12,19.974V12l6.908-3.987L12,4.026 z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Reason Studios</title><path d="M2.49 5.114l8.3-4.79a2.421 2.421 0 012.39-.017l.03.017 8.299 4.79c.74.427 1.2 1.212 1.211 2.065V16.79c0 .854-.451 1.645-1.184 2.08l-.027.016-8.299 4.79a2.42 2.42 0 01-2.39.017l-.03-.017-8.3-4.79a2.421 2.421 0 01-1.21-2.065V7.21c0-.855.45-1.645 1.184-2.08l.026-.016 8.3-4.79zM12 4.026L5.092 8.013v7.974L12 19.974V12l6.908-3.987z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/redbubble.svg b/assets/lib/simple-icons/icons/redbubble.svg
index 12a1ff55..d710e2ea 100644
--- a/assets/lib/simple-icons/icons/redbubble.svg
+++ b/assets/lib/simple-icons/icons/redbubble.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Redbubble icon</title><path d="M16.633 16.324h-3.199a.321.321 0 0 1-.32-.322V7.974a.32.32 0 0 1 .32-.32H16.4c2.226 0 2.693 1.31 2.693 2.408 0 .636-.169 1.14-.504 1.511.816.337 1.256 1.096 1.256 2.194 0 1.601-1.201 2.557-3.212 2.557m-4.644 0H5.345a.32.32 0 0 1-.32-.322V7.974a.32.32 0 0 1 .32-.32h3.103c1.939 0 3.096 1.043 3.096 2.791 0 1.163-.585 2.077-1.527 2.448l2.21 2.897a.322.322 0 0 1-.24.533M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12c6.628 0 12-5.373 12-12S18.63 0 12.001 0"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Redbubble</title><path d="M16.633 16.324h-3.199a.321.321 0 0 1-.32-.322V7.974a.32.32 0 0 1 .32-.32H16.4c2.226 0 2.693 1.31 2.693 2.408 0 .636-.169 1.14-.504 1.511.816.337 1.256 1.096 1.256 2.194 0 1.601-1.201 2.557-3.212 2.557m-4.644 0H5.345a.32.32 0 0 1-.32-.322V7.974a.32.32 0 0 1 .32-.32h3.103c1.939 0 3.096 1.043 3.096 2.791 0 1.163-.585 2.077-1.527 2.448l2.21 2.897a.322.322 0 0 1-.24.533M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12c6.628 0 12-5.373 12-12S18.63 0 12.001 0"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/reddit.svg b/assets/lib/simple-icons/icons/reddit.svg
index 01ed4a29..7e4ddd18 100644
--- a/assets/lib/simple-icons/icons/reddit.svg
+++ b/assets/lib/simple-icons/icons/reddit.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Reddit icon</title><path d="M12 0A12 12 0 0 0 0 12a12 12 0 0 0 12 12 12 12 0 0 0 12-12A12 12 0 0 0 12 0zm5.01 4.744c.688 0 1.25.561 1.25 1.249a1.25 1.25 0 0 1-2.498.056l-2.597-.547-.8 3.747c1.824.07 3.48.632 4.674 1.488.308-.309.73-.491 1.207-.491.968 0 1.754.786 1.754 1.754 0 .716-.435 1.333-1.01 1.614a3.111 3.111 0 0 1 .042.52c0 2.694-3.13 4.87-7.004 4.87-3.874 0-7.004-2.176-7.004-4.87 0-.183.015-.366.043-.534A1.748 1.748 0 0 1 4.028 12c0-.968.786-1.754 1.754-1.754.463 0 .898.196 1.207.49 1.207-.883 2.878-1.43 4.744-1.487l.885-4.182a.342.342 0 0 1 .14-.197.35.35 0 0 1 .238-.042l2.906.617a1.214 1.214 0 0 1 1.108-.701zM9.25 12C8.561 12 8 12.562 8 13.25c0 .687.561 1.248 1.25 1.248.687 0 1.248-.561 1.248-1.249 0-.688-.561-1.249-1.249-1.249zm5.5 0c-.687 0-1.248.561-1.248 1.25 0 .687.561 1.248 1.249 1.248.688 0 1.249-.561 1.249-1.249 0-.687-.562-1.249-1.25-1.249zm-5.466 3.99a.327.327 0 0 0-.231.094.33.33 0 0 0 0 .463c.842.842 2.484.913 2.961.913.477 0 2.105-.056 2.961-.913a.361.361 0 0 0 .029-.463.33.33 0 0 0-.464 0c-.547.533-1.684.73-2.512.73-.828 0-1.979-.196-2.512-.73a.326.326 0 0 0-.232-.095z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Reddit</title><path d="M12 0A12 12 0 0 0 0 12a12 12 0 0 0 12 12 12 12 0 0 0 12-12A12 12 0 0 0 12 0zm5.01 4.744c.688 0 1.25.561 1.25 1.249a1.25 1.25 0 0 1-2.498.056l-2.597-.547-.8 3.747c1.824.07 3.48.632 4.674 1.488.308-.309.73-.491 1.207-.491.968 0 1.754.786 1.754 1.754 0 .716-.435 1.333-1.01 1.614a3.111 3.111 0 0 1 .042.52c0 2.694-3.13 4.87-7.004 4.87-3.874 0-7.004-2.176-7.004-4.87 0-.183.015-.366.043-.534A1.748 1.748 0 0 1 4.028 12c0-.968.786-1.754 1.754-1.754.463 0 .898.196 1.207.49 1.207-.883 2.878-1.43 4.744-1.487l.885-4.182a.342.342 0 0 1 .14-.197.35.35 0 0 1 .238-.042l2.906.617a1.214 1.214 0 0 1 1.108-.701zM9.25 12C8.561 12 8 12.562 8 13.25c0 .687.561 1.248 1.25 1.248.687 0 1.248-.561 1.248-1.249 0-.688-.561-1.249-1.249-1.249zm5.5 0c-.687 0-1.248.561-1.248 1.25 0 .687.561 1.248 1.249 1.248.688 0 1.249-.561 1.249-1.249 0-.687-.562-1.249-1.25-1.249zm-5.466 3.99a.327.327 0 0 0-.231.094.33.33 0 0 0 0 .463c.842.842 2.484.913 2.961.913.477 0 2.105-.056 2.961-.913a.361.361 0 0 0 .029-.463.33.33 0 0 0-.464 0c-.547.533-1.684.73-2.512.73-.828 0-1.979-.196-2.512-.73a.326.326 0 0 0-.232-.095z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/redhat.svg b/assets/lib/simple-icons/icons/redhat.svg
index 55db6c64..e9a23ca7 100644
--- a/assets/lib/simple-icons/icons/redhat.svg
+++ b/assets/lib/simple-icons/icons/redhat.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Red Hat icon</title><path d="M16.009 13.386c1.577 0 3.86-.326 3.86-2.202a1.765 1.765 0 0 0-.04-.431l-.94-4.08c-.216-.898-.406-1.305-1.982-2.093-1.223-.625-3.888-1.658-4.676-1.658-.733 0-.947.946-1.822.946-.842 0-1.467-.706-2.255-.706-.757 0-1.25.515-1.63 1.576 0 0-1.06 2.99-1.197 3.424a.81.81 0 0 0-.028.245c0 1.162 4.577 4.974 10.71 4.974m4.101-1.435c.218 1.032.218 1.14.218 1.277 0 1.765-1.984 2.745-4.593 2.745-5.895.004-11.06-3.451-11.06-5.734a2.326 2.326 0 0 1 .19-.925C2.746 9.415 0 9.794 0 12.217c0 3.969 9.405 8.861 16.851 8.861 5.71 0 7.149-2.582 7.149-4.62 0-1.605-1.387-3.425-3.887-4.512"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Red Hat</title><path d="M16.009 13.386c1.577 0 3.86-.326 3.86-2.202a1.765 1.765 0 0 0-.04-.431l-.94-4.08c-.216-.898-.406-1.305-1.982-2.093-1.223-.625-3.888-1.658-4.676-1.658-.733 0-.947.946-1.822.946-.842 0-1.467-.706-2.255-.706-.757 0-1.25.515-1.63 1.576 0 0-1.06 2.99-1.197 3.424a.81.81 0 0 0-.028.245c0 1.162 4.577 4.974 10.71 4.974m4.101-1.435c.218 1.032.218 1.14.218 1.277 0 1.765-1.984 2.745-4.593 2.745-5.895.004-11.06-3.451-11.06-5.734a2.326 2.326 0 0 1 .19-.925C2.746 9.415 0 9.794 0 12.217c0 3.969 9.405 8.861 16.851 8.861 5.71 0 7.149-2.582 7.149-4.62 0-1.605-1.387-3.425-3.887-4.512"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/redhatopenshift.svg b/assets/lib/simple-icons/icons/redhatopenshift.svg
index e08716e2..7cb67eff 100644
--- a/assets/lib/simple-icons/icons/redhatopenshift.svg
+++ b/assets/lib/simple-icons/icons/redhatopenshift.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Red Hat Open Shift icon</title><path d="M21.665,11.812c-0.11-1.377-0.476-2.724-1.08-3.966L24,6.599c-0.268-0.556-0.585-1.092-0.943-1.595 l-1.601,0.583c-3.534-4.95-10.412-6.098-15.363-2.565c-3.144,2.244-4.883,5.972-4.582,9.823l1.604-0.584 c0.051,0.615,0.153,1.224,0.305,1.822L0,15.335c0.338,1.339,0.922,2.604,1.721,3.731l1.812-0.659 c3.526,4.95,10.398,6.106,15.349,2.58c1.555-1.107,2.796-2.6,3.599-4.332c0.802-1.715,1.144-3.61,0.991-5.497L21.665,11.812z M16.925,9.177c0.687,1.227,0.998,2.629,0.895,4.032l1.809-0.657c-0.063,0.856-0.282,1.694-0.646,2.471 c-1.67,3.584-5.928,5.138-9.514,3.472c-0.782-0.365-1.491-0.87-2.092-1.49l-1.813,0.66c-0.979-1.01-1.64-2.285-1.903-3.667 l3.426-1.242c-0.121-0.624-0.159-1.262-0.111-1.896H6.97l-1.604,0.583c0.294-3.932,3.72-6.881,7.652-6.587 c0.868,0.065,1.716,0.288,2.504,0.658V5.508c0.778,0.364,1.483,0.867,2.082,1.483l1.599-0.582c0.002,0.002,0.004,0.003,0.006,0.005 c0.441,0.454,0.82,0.965,1.128,1.518L16.925,9.177z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Red Hat Open Shift</title><path d="M21.665,11.812c-0.11-1.377-0.476-2.724-1.08-3.966L24,6.599c-0.268-0.556-0.585-1.092-0.943-1.595 l-1.601,0.583c-3.534-4.95-10.412-6.098-15.363-2.565c-3.144,2.244-4.883,5.972-4.582,9.823l1.604-0.584 c0.051,0.615,0.153,1.224,0.305,1.822L0,15.335c0.338,1.339,0.922,2.604,1.721,3.731l1.812-0.659 c3.526,4.95,10.398,6.106,15.349,2.58c1.555-1.107,2.796-2.6,3.599-4.332c0.802-1.715,1.144-3.61,0.991-5.497L21.665,11.812z M16.925,9.177c0.687,1.227,0.998,2.629,0.895,4.032l1.809-0.657c-0.063,0.856-0.282,1.694-0.646,2.471 c-1.67,3.584-5.928,5.138-9.514,3.472c-0.782-0.365-1.491-0.87-2.092-1.49l-1.813,0.66c-0.979-1.01-1.64-2.285-1.903-3.667 l3.426-1.242c-0.121-0.624-0.159-1.262-0.111-1.896H6.97l-1.604,0.583c0.294-3.932,3.72-6.881,7.652-6.587 c0.868,0.065,1.716,0.288,2.504,0.658V5.508c0.778,0.364,1.483,0.867,2.082,1.483l1.599-0.582c0.002,0.002,0.004,0.003,0.006,0.005 c0.441,0.454,0.82,0.965,1.128,1.518L16.925,9.177z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/redis.svg b/assets/lib/simple-icons/icons/redis.svg
index 7376520c..e3ab9d25 100644
--- a/assets/lib/simple-icons/icons/redis.svg
+++ b/assets/lib/simple-icons/icons/redis.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Redis icon</title><path d="M10.5 2.661l.54.997-1.797.644 2.409.218.748 1.246.467-1.121 2.077-.208-1.61-.613.426-1.017-1.578.519zm6.905 2.077L13.76 6.182l3.292 1.298.353-.146 3.293-1.298zm-10.51.312a2.97 1.153 0 0 0-2.97 1.152 2.97 1.153 0 0 0 2.97 1.153 2.97 1.153 0 0 0 2.97-1.153 2.97 1.153 0 0 0-2.97-1.152zM24 6.805s-8.983 4.278-10.395 4.953c-1.226.561-1.901.561-3.261.094C8.318 11.022 0 7.241 0 7.241v1.038c0 .24.332.499.966.8 1.277.613 8.34 3.677 9.45 4.206 1.112.53 1.9.54 3.313-.197 1.412-.738 8.049-3.905 9.326-4.57.654-.342.945-.602.945-.84zm-10.042.602L8.39 8.26l3.884 1.61zM24 10.637s-8.983 4.279-10.395 4.954c-1.226.56-1.901.56-3.261.093C8.318 14.854 0 11.074 0 11.074v1.038c0 .238.332.498.966.8 1.277.612 8.34 3.676 9.45 4.205 1.112.53 1.9.54 3.313-.197 1.412-.737 8.049-3.905 9.326-4.57.654-.332.945-.602.945-.84zm0 3.842l-10.395 4.954c-1.226.56-1.901.56-3.261.094C8.318 18.696 0 14.916 0 14.916v1.038c0 .239.332.499.966.8 1.277.613 8.34 3.676 9.45 4.206 1.112.53 1.9.54 3.313-.198 1.412-.737 8.049-3.904 9.326-4.569.654-.343.945-.613.945-.841z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Redis</title><path d="M10.5 2.661l.54.997-1.797.644 2.409.218.748 1.246.467-1.121 2.077-.208-1.61-.613.426-1.017-1.578.519zm6.905 2.077L13.76 6.182l3.292 1.298.353-.146 3.293-1.298zm-10.51.312a2.97 1.153 0 0 0-2.97 1.152 2.97 1.153 0 0 0 2.97 1.153 2.97 1.153 0 0 0 2.97-1.153 2.97 1.153 0 0 0-2.97-1.152zM24 6.805s-8.983 4.278-10.395 4.953c-1.226.561-1.901.561-3.261.094C8.318 11.022 0 7.241 0 7.241v1.038c0 .24.332.499.966.8 1.277.613 8.34 3.677 9.45 4.206 1.112.53 1.9.54 3.313-.197 1.412-.738 8.049-3.905 9.326-4.57.654-.342.945-.602.945-.84zm-10.042.602L8.39 8.26l3.884 1.61zM24 10.637s-8.983 4.279-10.395 4.954c-1.226.56-1.901.56-3.261.093C8.318 14.854 0 11.074 0 11.074v1.038c0 .238.332.498.966.8 1.277.612 8.34 3.676 9.45 4.205 1.112.53 1.9.54 3.313-.197 1.412-.737 8.049-3.905 9.326-4.57.654-.332.945-.602.945-.84zm0 3.842l-10.395 4.954c-1.226.56-1.901.56-3.261.094C8.318 18.696 0 14.916 0 14.916v1.038c0 .239.332.499.966.8 1.277.613 8.34 3.676 9.45 4.206 1.112.53 1.9.54 3.313-.198 1.412-.737 8.049-3.904 9.326-4.569.654-.343.945-.613.945-.841z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/redmine.svg b/assets/lib/simple-icons/icons/redmine.svg
new file mode 100644
index 00000000..644894fa
--- /dev/null
+++ b/assets/lib/simple-icons/icons/redmine.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Redmine</title><path d="m1.092 15.088c.789.243 4.098 1.005 4.098 1.005.198.061.139.21.139.21-.228 1.798-.178 3.17-.178 3.644 0 .21-.153.18-.153.18h-4.83c-.209 0-.164-.19-.164-.19.04-.599.212-2.303.878-4.746 0 0 .033-.157.21-.103zm21.816 0c-.789.243-4.098 1.005-4.098 1.005-.198.061-.139.21-.139.21.228 1.798.178 3.17.178 3.644 0 .21.153.18.153.18h4.83c.21 0 .164-.19.164-.19-.04-.599-.212-2.303-.878-4.746 0 0-.034-.157-.21-.103zm-1.929-5.354-3.448 1.667c-.164.063-.082.212-.082.212.476 1.134.766 2.091.99 3.251.038.194.169.132.169.132l3.879-1.684s.116-.044.068-.193c-.172-.531-1.05-2.649-1.402-3.341 0 0-.062-.105-.174-.044zm-17.958 0 3.448 1.667c.164.063.082.212.082.212-.476 1.134-.766 2.091-.991 3.251-.037.194-.169.132-.169.132l-3.878-1.684s-.116-.044-.068-.193c.172-.531 1.05-2.649 1.402-3.341 0 0 .062-.105.174-.044zm4.085-4.368 2.302 2.681c.099.128-.032.222-.032.222-.923.498-1.59 1.25-2.161 2.111-.114.17-.236.046-.236.046l-2.917-2.184s-.126-.074-.016-.22c.854-1.134 1.63-1.934 2.871-2.689 0 0 .094-.089.189.033zm9.788 0-2.302 2.681c-.099.128.032.222.032.222.923.498 1.59 1.25 2.161 2.111.114.17.236.046.236.046l2.917-2.184s.126-.074.016-.22c-.854-1.134-1.63-1.934-2.871-2.689 0 0-.094-.089-.189.033zm-4.894 2.295c.388 0 1.105.037 1.444.093.177.03.221-.088.221-.088l1.449-3.028s.097-.114-.106-.188c-1.082-.396-1.657-.578-3.008-.578-1.335 0-1.926.182-3.008.578-.203.074-.106.188-.106.188l1.449 3.028s.044.118.221.088c.339-.056 1.056-.093 1.444-.093z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/redux.svg b/assets/lib/simple-icons/icons/redux.svg
index 8277976f..f0873b4d 100644
--- a/assets/lib/simple-icons/icons/redux.svg
+++ b/assets/lib/simple-icons/icons/redux.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Redux icon</title><path d="M16.633 16.504c.869-.075 1.543-.84 1.499-1.754-.046-.914-.795-1.648-1.708-1.648h-.061c-.943.031-1.678.824-1.648 1.769.03.479.226.869.494 1.153-1.048 2.038-2.621 3.536-5.004 4.795-1.603.838-3.296 1.154-4.944.929-1.378-.194-2.456-.81-3.116-1.798-.988-1.499-1.078-3.116-.255-4.734.601-1.169 1.499-2.023 2.099-2.443-.15-.389-.33-1.048-.42-1.542-4.436 3.177-3.985 7.521-2.637 9.574 1.004 1.498 3.057 2.456 5.304 2.456.599 0 1.229-.044 1.843-.194 3.896-.749 6.847-3.086 8.54-6.532l.014-.031zM21.981 12.758c-2.321-2.727-5.738-4.225-9.634-4.225h-.51c-.253-.554-.837-.899-1.497-.899h-.045c-.943 0-1.678.81-1.647 1.753.03.898.794 1.648 1.708 1.648h.074c.675-.03 1.259-.45 1.498-1.049h.555c2.309 0 4.495.674 6.488 1.992 1.527 1.004 2.622 2.322 3.236 3.896.538 1.288.509 2.547-.045 3.597-.854 1.647-2.293 2.517-4.195 2.517-1.199 0-2.367-.375-2.967-.644-.359.298-.959.793-1.394 1.093 1.318.598 2.652.943 3.94.943 2.922 0 5.093-1.647 5.918-3.236.898-1.798.824-4.824-1.469-7.416l-.014.03zM6.49 17.042c.029.899.793 1.648 1.708 1.648h.06c.959-.03 1.693-.823 1.648-1.768 0-.899-.779-1.647-1.693-1.647h-.061c-.06 0-.149 0-.225.029-1.243-2.098-1.768-4.346-1.572-6.771.119-1.828.719-3.417 1.797-4.735.899-1.124 2.592-1.679 3.746-1.708 3.236-.061 4.585 3.971 4.689 5.574l1.498.449c-.345-4.914-3.4-7.492-6.322-7.492-2.742 0-5.273 1.993-6.293 4.915-1.393 3.896-.479 7.641 1.229 10.638-.149.195-.239.539-.209.868z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Redux</title><path d="M16.634 16.504c.87-.075 1.543-.84 1.5-1.754-.047-.914-.796-1.648-1.709-1.648h-.061a1.71 1.71 0 00-1.648 1.769c.03.479.226.869.494 1.153-1.048 2.038-2.621 3.536-5.005 4.795-1.603.838-3.296 1.154-4.944.93-1.378-.195-2.456-.81-3.116-1.799-.988-1.499-1.078-3.116-.255-4.734.6-1.17 1.499-2.023 2.099-2.443a9.96 9.96 0 01-.42-1.543C-.868 14.408-.416 18.752.932 20.805c1.004 1.498 3.057 2.456 5.304 2.456.6 0 1.23-.044 1.843-.194 3.897-.749 6.848-3.086 8.541-6.532zm5.348-3.746c-2.32-2.728-5.738-4.226-9.634-4.226h-.51c-.253-.554-.837-.899-1.498-.899h-.045c-.943 0-1.678.81-1.647 1.753.03.898.794 1.648 1.708 1.648h.074a1.69 1.69 0 001.499-1.049h.555c2.309 0 4.495.674 6.488 1.992 1.527 1.005 2.622 2.323 3.237 3.897.538 1.288.509 2.547-.045 3.597-.855 1.647-2.294 2.517-4.196 2.517-1.199 0-2.367-.375-2.967-.644-.36.298-.96.793-1.394 1.093 1.318.598 2.652.943 3.94.943 2.922 0 5.094-1.647 5.919-3.236.898-1.798.824-4.824-1.47-7.416zM6.49 17.042c.03.899.793 1.648 1.708 1.648h.06a1.688 1.688 0 001.648-1.768c0-.9-.779-1.647-1.693-1.647h-.06c-.06 0-.15 0-.226.029-1.243-2.098-1.768-4.347-1.572-6.772.12-1.828.72-3.417 1.797-4.735.9-1.124 2.593-1.68 3.747-1.708 3.236-.061 4.585 3.971 4.689 5.574l1.498.45C17.741 3.197 14.686.62 11.764.62 9.02.62 6.49 2.613 5.47 5.535 4.077 9.43 4.991 13.177 6.7 16.174c-.15.195-.24.539-.21.868z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/reduxsaga.svg b/assets/lib/simple-icons/icons/reduxsaga.svg
new file mode 100644
index 00000000..2fdf8973
--- /dev/null
+++ b/assets/lib/simple-icons/icons/reduxsaga.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Redux-Saga</title><path d="M7.871 4.678a3.315 3.315 0 0 0-1.953.631C4.455 6.35 3.724 8.235 3.534 10.007c-.204 1.938.23 4.166 1.398 5.638-.194.57.193 1.202.793 1.268a.975.975 0 0 0 1.06-.713c.197-.66-.425-1.342-1.13-1.189-.982-1.321-1.29-3.038-1.186-4.653.125-1.576.683-3.255 1.985-4.245.81-.602 1.828-.622 2.65-.075 1.107.742 1.763 2.132 1.97 3.43l.51.199.551.288c-.198-1.888-1.097-3.866-2.576-4.774a3.149 3.149 0 0 0-1.688-.503zm9.515 3.946a8.752 8.752 0 0 0-3.056.526.968.968 0 0 0-1.246.27c-.394.505-.162 1.297.475 1.495.615.211 1.29-.284 1.265-.918a7.778 7.778 0 0 1 2.839-.403c1.575.07 3.665.654 4.626 2.148.076.119.165.404.521.4a.484.484 0 0 0 .422-.7c-.526-.99-1.522-1.725-2.636-2.194-.984-.412-2.095-.62-3.21-.624zm-11.06.717c-.455-.003-.93.296-.979.933.012 1.233 1.657 1.33 1.912.24 1.887-.271 3.894.584 5.3 1.717.973.77 1.852 1.993 2.072 3.083.162.071.61.265 1.002.306-.146-1.638-1.215-3.101-2.452-4.127-1.568-1.33-4.123-2.328-6.218-1.903a.912.912 0 0 0-.636-.249zm-3.418 1.86c-.866.609-1.65 1.36-2.185 2.282C.008 14.668-.312 16.24.4 17.499c.66 1.218 2.082 1.78 3.41 1.812a7.263 7.263 0 0 0 2.265-.297c2.104-.59 4.373-2.222 5.274-4.362a.964.964 0 0 0 .79-.705c.2-.72-.463-1.372-1.169-1.191-.686.175-.966 1.012-.522 1.54-.607 1.389-1.8 2.449-3.112 3.161-1.493.804-3.306 1.188-4.758.659-.93-.304-1.642-1.13-1.618-2.215 0-1.297.924-2.677 2.062-3.573-.118-.538-.107-.74-.114-1.128zm20.103 1.53a.938.938 0 0 0-.672.292c-.344.327-.364.902-.092 1.248-.546.823-1.508 1.384-2.455 1.706-1.855.613-4.111.503-5.798-.38a4.48 4.48 0 0 1-.99-.674c-.141-.128-.183-.157-.296-.188-.5-.105-.783.486-.457.808 1.269 1.189 3.037 1.706 4.744 1.777.664.024 1.33-.02 1.983-.14 1.622-.302 3.318-1.107 4.168-2.521.639-.072 1.038-.775.769-1.344a.958.958 0 0 0-.904-.584zm-8.746 4.514c-.83 1.12-2.646 1.45-4.75.723-.19.13-.302.214-.433.3-.13.087-.29.17-.607.366 2.558 1.032 5.444 1.076 6.739-1.082a3.39 3.39 0 0 1-.949-.307z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/redwoodjs.svg b/assets/lib/simple-icons/icons/redwoodjs.svg
new file mode 100644
index 00000000..2f0800b7
--- /dev/null
+++ b/assets/lib/simple-icons/icons/redwoodjs.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>RedwoodJS</title><path d="M6.989 3.47l4.66 3.181c.105.07.228.108.354.111a.634.634 0 0 0 .354-.111l4.664-3.192a.637.637 0 0 0-.089-1.087L12.272.065a.64.64 0 0 0-.56 0L7.067 2.372a.636.636 0 0 0-.078 1.098zm6.597 4.179c0 .211.104.408.276.528l3.736 2.553a.628.628 0 0 0 .776-.05l3.134-2.803a.637.637 0 0 0-.028-.973l-2.992-2.393a.635.635 0 0 0-.751-.029l-3.874 2.65a.644.644 0 0 0-.277.517zm-9.291 3.474a.64.64 0 0 1 .209.538.625.625 0 0 1-.315.485l-2.231 1.337a.63.63 0 0 1-.718-.049.64.64 0 0 1-.21-.693l.825-2.596a.63.63 0 0 1 1.023-.281l1.417 1.259zm12.1.271l-4.033-2.76a.634.634 0 0 0-.708 0l-4.033 2.76a.646.646 0 0 0-.276.485.664.664 0 0 0 .212.521l4.03 3.605a.635.635 0 0 0 .842 0l4.03-3.605a.647.647 0 0 0-.064-1.006zm-10.758-.713l-3.13-2.803a.648.648 0 0 1-.213-.503.626.626 0 0 1 .237-.481l2.992-2.407a.641.641 0 0 1 .754-.029l3.87 2.65a.639.639 0 0 1 0 1.07l-3.732 2.553a.633.633 0 0 1-.778-.05zm16.073 4.026l-3.187-1.908a.627.627 0 0 0-.744.071l-3.895 3.477a.644.644 0 0 0-.204.587.636.636 0 0 0 .388.483l5.404 2.19a.634.634 0 0 0 .815-.332l1.675-3.752a.64.64 0 0 0-.252-.816zm.442-4.561l.825 2.596h-.007a.635.635 0 0 1-.927.742l-2.234-1.337a.623.623 0 0 1-.305-.485.631.631 0 0 1 .209-.538l1.416-1.262a.63.63 0 0 1 1.023.284zm-11.82 6.786a.637.637 0 0 0-.202-.585L6.235 12.87a.627.627 0 0 0-.744-.071l-3.187 1.908a.648.648 0 0 0-.255.813l1.678 3.752a.632.632 0 0 0 .814.332l5.4-2.19a.637.637 0 0 0 .391-.482zm1.912 1.07l4.334 1.755c.212.091.358.29.382.521a.635.635 0 0 1-.269.596l-4.338 3.013A.625.625 0 0 1 12 24a.64.64 0 0 1-.354-.114l-4.334-3.013a.635.635 0 0 1 .124-1.117l4.334-1.755a.642.642 0 0 1 .474.001z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/reebok.svg b/assets/lib/simple-icons/icons/reebok.svg
new file mode 100644
index 00000000..ddffe899
--- /dev/null
+++ b/assets/lib/simple-icons/icons/reebok.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Reebok</title><path d="M14.991 11.48C17.744 10.38 19.458 9.748 24 8.64c-2.467.163-7.922.537-11.682 1.271l2.673 1.57m-8.56 3.651h3.6c.713-1.08 1.422-1.606 2.248-2.191a71.382 71.382 0 00-1.892-.701c-2.297 1.014-3.575 2.375-3.953 2.892m.709-3.928c-3.21 1.147-4.994 2.393-6.199 3.928h3.975c.387-.539 1.862-2.093 4.633-3.174a57.092 57.092 0 00-2.41-.754M8.79 8.788H0c8.862 1.6 13.133 3.66 20 6.572-.587-.439-10.051-6.013-11.209-6.572"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/relianceindustrieslimited.svg b/assets/lib/simple-icons/icons/relianceindustrieslimited.svg
new file mode 100644
index 00000000..3b471a74
--- /dev/null
+++ b/assets/lib/simple-icons/icons/relianceindustrieslimited.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Reliance Industries Limited</title><path d="M7.65 18.44c.717-1.506 1.356-3.046 1.661-4.787.119 1.818 1.2 3.435 1.72 5.177.199.842.214 1.714-.107 2.584-.349.948-.911 1.759-1.582 2.488C7.528 21.936 6.97 20.11 7.65 18.44zm11.547 3.765c-.825.623-1.902.716-2.744.311 0 0-.229-.093-.439-.34-1.6-1.868-3.215-3.725-4.828-5.583 1.431.264 3-.438 3.805-1.712.81-1.212.777-2.942.016-4.154-.916-1.324-2.695-1.758-4.19-1.555-2.588.373-4.447 2.722-5.026 5.182-.595 2.799-.166 5.44.761 7.932a6.87 6.87 0 0 0 .856 1.538c-2.727-1.215-5.137-3.45-6.402-6.457-1.4-3.232-1.372-7.324.294-10.606C2.608 4.225 4.923 1.876 7.789.884c1.157-.49 2.47-.746 3.81-.786h.716c1.91.057 3.838.55 5.435 1.466 3.548 1.807 6.232 6.3 6.244 10.314.123 4.153-1.674 7.915-4.797 10.327z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/renault.svg b/assets/lib/simple-icons/icons/renault.svg
index 4668ff2d..8869c92d 100644
--- a/assets/lib/simple-icons/icons/renault.svg
+++ b/assets/lib/simple-icons/icons/renault.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Renault icon</title><path d="M12 0c-.747 0-2.32.013-2.693.053-.347.04-.44.147-.64.4C8.4.813 6.107 4.68 4.92 6.827c-.867 1.546-2.227 4.24-2.347 4.533-.12.253-.173.467-.173.64 0 .187.053.4.173.64.28.627 1.147 2.333 2.347 4.533 1.253 2.28 3.52 6.054 3.76 6.387.253.347.427.36.653.387.347.026 1.854.053 2.667.053.867 0 2.44-.04 2.667-.053.213-.014.4-.04.653-.387.227-.32 2.667-4.387 3.76-6.387 1.053-1.92 2.213-4.226 2.347-4.533.146-.333.173-.507.173-.64 0-.107-.027-.333-.173-.64a105.647 105.647 0 00-2.347-4.533C17.813 4.547 15.56.773 15.307.44c-.254-.333-.4-.36-.627-.373h-.04C14.307.013 12.867 0 12 0zm2.347.92c.093 0 .146.013.16.04-.4.787-1.414 2.773-2.134 4.6a111.067 111.067 0 012.907 5.747c.16.346.24.52.24.693 0 .173-.08.347-.24.693-1.227 2.64-4.093 8.054-5.28 10.067-.12.2-.253.307-.347.307-.093 0-.146-.014-.16-.04.4-.787 1.414-2.774 2.134-4.6A111.062 111.062 0 018.72 12.68c-.16-.347-.24-.52-.24-.693 0-.174.08-.347.253-.694C9.933 8.653 12.8 3.24 14 1.227c.12-.2.253-.307.347-.307Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Renault</title><path d="M17.463 11.99l-4.097-7.692-.924 1.707 3.213 5.985-5.483 10.283L4.69 11.99 11.096 0H9.27L2.882 11.99 9.269 24h1.807zm3.655 0L14.711 0h-1.807L6.517 11.99l4.117 7.712.904-1.707-3.193-6.005 5.463-10.263L19.29 11.99 12.904 24h1.807Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/renovatebot.svg b/assets/lib/simple-icons/icons/renovatebot.svg
new file mode 100644
index 00000000..2a15653f
--- /dev/null
+++ b/assets/lib/simple-icons/icons/renovatebot.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>RenovateBot</title><path d="M12 0C5.372 0 0 5.372 0 12s5.372 12 12 12 12-5.371 12-12S18.63 0 12 0zM9.973 5.046L8.827 3.9l1.146-1.146 3.33 3.33-1.146 1.147-1.085-1.086L9.858 7.36 8.766 6.267 9.98 5.053zM6.445 3.933l1.147 1.146-1.147 1.144L5.3 5.077zM2.98 9.689L1.833 8.543l1.146-1.146 1.146 1.146zm2.283 2.323l-1.17-1.17 1.146-1.146 1.147 1.146L7.568 9.66l-1.123-1.12L5.3 7.391l1.146-1.146 2.27 2.269 1.143-1.144 1.062 1.062-1.18 1.181-3.438 3.439zm3.726 3.406a.35.35 0 01-.494 0l-1.58-1.578a.35.35 0 010-.494l6.668-6.669a.35.35 0 01.495 0l1.577 1.578a.35.35 0 010 .494zM19.81 19.01c-.24.248-.46.513-.76.7-.325.204-.951.15-1.22-.133-.127-.134-.263-.26-.392-.39-.877-.876-1.749-1.755-2.63-2.627-.274-.272-.433-.593-.347-.965.038-.157.134-.32.258-.504-.227-.225-.527-.549-.764-.802a1.687 1.687 0 01-.298-.42c-.236-.499-.096-.932.272-1.31.422-.43.853-.855 1.28-1.282l2.238-2.236c.045-.044.09-.084.13-.13.105-.13.105-.259.006-.39-.03-.04-.068-.075-.105-.112-.399-.399-.797-.797-1.196-1.193-.035-.036-.075-.07-.112-.106-.092-.082-.235-.077-.338-.005-.072.052-.138.115-.222.186l-.549-.535c.361-.6 1.163-.731 1.671-.258.504.467.99.952 1.458 1.454a1.132 1.132 0 01-.033 1.556l-.738.738-2.824 2.822a1.515 1.515 0 00-.085.09c-.159.175-.164.339.003.51.248.258.504.509.776.783.23-.164.457-.26.726-.256.305.005.553.122.764.333.52.523 1.043 1.043 1.564 1.564.464.464.911.942 1.394 1.385.392.36.525 1.064.073 1.533z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/renpy.svg b/assets/lib/simple-icons/icons/renpy.svg
new file mode 100644
index 00000000..241a2683
--- /dev/null
+++ b/assets/lib/simple-icons/icons/renpy.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Ren'Py</title><path d="M10.166 0S6.908 1.035 6.25 4.744C4.885 5.647 4.194 6.368 4.19 6.66c0 .023.02.042.031.063.115-.054 5.565-2.614 9.422-2.967a8.31 8.31 0 01.707-.03c1.8-.007 4.532.365 4.569.37-.063-.269-1.722-1.02-2.817-1.217C13.504.009 10.166 0 10.166 0zm8.754 4.096c-.039-.003-3.665-.261-5.342-.096-3.94.388-9.242 2.675-9.356 2.725.16.27 1.288.38 1.848.384-.085 1.63-.804 4.532-.674 4.553.09.014.295-.547.295-.547s-.105.322-.201.692c.404-.02.597-.04.851-.018.057.005.143.01.184.078.134-.26.137-.494.137-.494s.056.211.043.494c.096-.082.209-.316.209-.316s-.009.201-.018.324c.08.048.213.033.213.033a6.8 6.8 0 01-.092.592c-.062.312-.16.488-.4.803-.297.002-.617.244-.748.57-.02.17.246.37.246.37l-.39 1.896a1.743 1.743 0 00-.583.937s-.078.912-.013 1.23c.04.202 1 .846 1.671.89.397.025 1.19-.618 1.19-.618l.506-.049c.276.346.528.441.931.553l.11.34s-.182.149-.182.26c0 .11.197.214.197.214s-1.108.156-1.074 1.53c.018.728 1.01 1.074 1.824 1.105.855.033 2.012-.513 2.012-.513s.184.066.412.048c.262-.02.549-.205.549-.205s-.426.331-.436 1.268c-.002.25.172.537.364.7.114.095.3.17.412.171.173.001-.359-.495-.375-.813-.028-.541.69-.626 1.135-.626.471-.001 1.812.614 2.82.626 1.57.02 2.583-1.212 2.613-2.16.037-1.14-.951-1.834-1.304-2.21-.052-.233-.324-.722-.604-.782-.487-.104-.963.09-.963.09s-.112-.03-.223-.088c.794-1.087.876-1.977.887-2.728.032-2.214-1.539-3.268-1.762-3.39.371-.38.53-.64.622-.847a27.5 27.5 0 00-.18 1.051l.369-.326v.379s.44-.45.504-.914c.039.377.021.914.021.914s.552-.561.737-1.92c.035.862.066 1.508.066 1.508s.29-1.837.192-3.75c-.048-.928-.144-2.02-.47-2.746.825-.647 1.245-.959 1.227-1.16 0-.004-.007-.009-.007-.012zM10.504.25s.961.233 1.406.578c.737.573 1.562 1.75 1.562 1.75s-.98-1.165-1.625-1.625C11.451.67 10.504.25 10.504.25zm-.516.031s-.72.785-1 1.235c-.42.672-1 2.156-1 2.156s.358-1.511.766-2.156C9.064 1.024 9.988.28 9.988.28zm3.914 2.56c.813.013 1.465.054 1.465.054s-2.596.027-3.867.253C9.48 3.508 6.77 4.686 6.77 4.686S9.273 3.36 11.478 2.96c.638-.116 1.611-.132 2.424-.12zm-3.031 3.07s-.122.283-.23.552c-.056-.01-.112-.027-.165-.026.19-.26.395-.527.395-.527zm1.293.01s-.513 1.13-.598 2.433c.17-.534.299-.83.299-.83s-.064.815.12 1.425c.131-1.169.774-1.955.774-1.955s-.209.81-.12 1.37c.107-.826.398-1.69.398-1.69s-.187 1.808.209 2.64c.385-.368.718-1.193.718-1.193s.074.246.045.508c.506-.967.452-2.574.452-2.574s.122.406.26.998c-.19.13-.315.271-.315.271s.136-.113.326-.215c.08.347.155.75.223 1.176-.005 0-.009-.004-.014-.004-.62-.006-.944.26-1.047.594-.288.935.01 1.18.453 1.18.836-.001.961-1.149.961-1.149s.119.33.094.57c-.01.104-.102.274-.102.274l.336-.242s-.092-.74-.394-1.069c.145-.587.24-1.068.285-1.42.05.023.097.052.143.085.063.634.133 1.446.117 2.066.171-.286.31-.586.31-.586l.01.52s-.344.88-.906 2.033c-1.185.85-1.903 1.111-3.17 1.181-.478.027-1.305-.175-1.305-.175s-.556-1.118-1.037-1.106c-.288.007-.719.22-.719.22s-.542-1.166-.232-4.009c.041-.38.674-.928.674-.928s-.258.515-.414 1.284a5.42 5.42 0 01-.116.14s.093-.094.112-.115a5.608 5.608 0 00-.102.713c.123-.289.29-.541.29-.541s-.064.57.12.84c.355-.915.75-1.59 1.063-2.053.013-.003.028-.012.04-.014.053-.009.122.01.183.016a5.67 5.67 0 00-.354 1.531c-.886.086-1.043 1.293-1.043 1.293l.324.309s-.104-.216-.105-.34c.273.375.461.746 1.025.74 1.124-.013.951-1.56.951-1.56l.07.023s-.376-.51-1.171-.477l-.006.002a8.303 8.303 0 01.851-1.384c.128.051.16.068.252.115-.154.395-.29.859-.27 1.312.138-.467.311-.861.48-1.209l.074.037-.069-.048a9.273 9.273 0 01.567-1.012zm-.344.013s-.222.368-.42.863c-.08-.057-.105-.075-.219-.139.362-.464.639-.724.639-.724zm3.767.375l.067.644a.698.698 0 00-.117-.055c.031-.307.05-.59.05-.59zm-4.539 2.105c.068.002.135.05.17.123.05.1.024.214-.056.252-.08.04-.184-.01-.233-.111-.049-.1-.023-.214.057-.252a.133.133 0 01.062-.012zm4.04.106c.058.002.121.05.16.123.053.1.042.211-.024.25-.065.038-.162-.01-.215-.11-.053-.1-.042-.211.024-.25a.098.098 0 01.054-.013zm-3.83.714s-.004.734-.805.793c-.556.042-.805-.445-.805-.445l.106.04s.077-.066.156-.028c.089.043.097.168.097.168s.06.075.399.066c.633-.016.851-.594.851-.594zm3.824.102s-.145.637-.72.648c-.606.012-.48-.527-.48-.527s.058.343.5.379c.428.035.7-.5.7-.5zm-2.578 1.5c-.239-.003-.704.125-.704.125l.157.453-.016-.36s.347-.075.523-.077c.158-.003.47.054.47.054l-.063.406.25-.476s-.408-.123-.618-.125zm-2.915.318c.529-.084 1.037 1.046 1.133 1.166.174.217.616.38.672.696.064.359-.46.992-.46.992s-.046-.26-.212-.352c.102.179.102.446.102.446s-.103.755-1.406.976c-1.3.22-1.557-.389-1.557-.389s-.117-.312-.035-.691c-.157.168-.088.541-.088.541s-.828-.338-.943-.717c-.09-.295.188-.58.265-.879.133-.514.024-1.275.602-1.486.329-.12.848.067 1.093.022.285-.054.413-.257.834-.325zm.008.244c-.29.017-.447.375-.492.72-.049.374.14 1.124.14 1.124s-.104-.738-.046-1.101c.052-.33.177-.575.414-.579.446-.006.625.344.68.72.05.342.023 1.038.023 1.038s.095-.72.055-1.078c-.044-.382-.3-.87-.774-.844zm-1.726.227c-.355.066-.533.52-.532.941.002.478.547 1.317.547 1.317s-.414-.843-.414-1.297c0-.474.111-.744.407-.813.3-.069.584.2.734.563.129.312.101 1.008.101 1.008s.062-.714-.023-1.055c-.1-.402-.474-.728-.82-.664zm7.156.32c1.36.023 2.372 1.958 2.365 2.94-.014 2.137-.426 2.398-1.25 3.58-1.214 1.742-4.018 3.821-5.699 3.9-1.064.05-1.817-.482-1.814-.912.006-1.313.996-1.441.996-1.441 2.425-.29 2.477-.52 4.117-2.2 1.587-1.625 1.808-3.87.273-4.552l-.379-.135s.227-1.2 1.39-1.18zm-1.022.098l.028.178s-.382.309-.477.867l-.783-.373.016-.315c.56-.016 1.216-.357 1.216-.357zm-3.046.314l.347.067-.021.187zm.486.051s.339.052.508.055c.22.003.68-.055.68-.055l.017.457-.271.592-.977-.713zm-1.846.297c-.104 0-.188.106-.187.236 0 .13.084.235.187.235.104 0 .19-.104.19-.235 0-.13-.085-.237-.19-.236zm.059.078c.05 0 .091.043.092.096 0 .054-.041.098-.092.098s-.093-.044-.092-.098c0-.053.042-.096.092-.096zm-1.307.164a.153.153 0 00-.056.012c-.098.037-.14.166-.092.287.046.121.162.19.26.152.098-.035.14-.165.093-.287-.036-.097-.12-.164-.205-.164zm.05.059c.041-.004.08.02.097.06.02.051-.003.108-.051.125-.048.02-.102-.007-.121-.058-.02-.05.003-.105.05-.123a.087.087 0 01.026-.004zm4.423.037l.732.768.254.199.22-.586s.868.283.89 1.662l-1.127-.623-.077.182 1.19.695c-.02.162-.054.325-.108.49-.02-.03-.04-.068-.06-.072-.562.133-1.453.492-1.453.492l.008 1.834c-.154.166-.308.337-.461.49l-.073-2.515.207-.586c-.042-.06-.314-.449-.377-.702-.029-.118.033-.245.004-.363-.035-.144-.186-.246-.209-.392-.017-.117-.014-.308.067-.348.044-.022.127.027.127.076 0 .088-.08.096-.082.154-.008.193.19.343.23.532.025.113-.022.235.006.347.049.197.222.479.28.569l.519-1.465-.695-.748-.352.375zm-5.953.053s-.26.496-.182.736c.124.381 1.002.84 1.002.84s-.59.247-.437 1.148c.12.714 1.125.633 1.125.633s.048.538-.004.932c-.055.407-.383.845-.383.845s.408-.413.474-.828c.027-.166.018-.5.018-.5s.093.16.125.246c.07.188.14.582.14.582s-.017-.385-.054-.574a6.832 6.832 0 00-.207-.687l.363-.047s.08.25.344.285c.161.022.488.004.488.004s.004.3-.05.457c-.095.27-.47.75-.47.75s-.255.372-.456.426c-.265.07-.682.025-.682.025s-.82.69-1.275.69c-.424 0-1.418-.674-1.508-.823-.105-.173.014-.723.01-1.084-.005-.327.597-.949.597-.949l.42-1.96s-.294-.213-.25-.348c.157-.478.645-.489.645-.489zm4.613.166l.758.254-.778-.16zm-.36.57l1.725 1.818-.178.43.075 2.584c-1.202 1.182-3.051 1.203-3.051 1.203s-.202-.063-.217-.183c-.013-.106.158-.235.158-.235-.171-.552-.21-.736-.224-1.34l-.155-.144s.312-.425.448-.701c.088-.18.075-.327.072-.598 0 0 .373-.11.535-.215.251-.162.201-.385.201-.385s.262.06.602-.015a.89.89 0 00.678-.856c.01-.811-.883-.953-.883-.953zm-1.285.035a.273.273 0 00-.103.526.273.273 0 01.209-.45c.035.001.07.008.101.022a.273.273 0 00-.207-.098zm-1.148.227a.273.273 0 00-.273.273c0 .11.067.208.168.25a.273.273 0 01.21-.447c.035 0 .07.008.102.021a.273.273 0 00-.207-.097zm2.135.263s.699.024.857.76c.081.377-.301.828-.767.881-.111.013-.409-.037-.409-.037s-.054-.114-.154-.115c-.227-.003-.342.138-.72.185-.3.038-.386-.011-.575.022-.214.037-.267.207-.267.207s-.325.063-.524.066c-.771.014-.883-.294-.941-.74-.083-.634.486-.797.486-.797s.025.108.35.258l-.23.068.06.264-.215.066.027.287.254-.027.045.26.266-.012-.051-.303.227-.05.025-.442c.218.039.474.063.826.033.345-.028.602-.147.82-.28a.671.671 0 00-.056.269c0 .38.316.687.707.687.39 0 .707-.308.707-.687a.697.697 0 00-.87-.668c.075-.089.122-.155.122-.155zm3 .188l1.1.615c0 .028-.009.058-.01.086l-1.13-.644zm-2.807.037c.05.002.1.02.137.06l.01.01a.198.198 0 01-.008.28l-.477.447a.198.198 0 01-.279-.01l-.008-.01a.195.195 0 01.008-.277l.094-.09.033.074a.15.15 0 10.185.147.15.15 0 00-.125-.147l.01-.17.28-.261a.195.195 0 01.14-.053zm-.006.059a.15.15 0 10.016.3.15.15 0 00-.016-.3zm.244.34c.05.001.1.02.137.06l.01.01a.198.198 0 01-.008.28l-.476.446a.198.198 0 01-.28-.01l-.008-.01a.195.195 0 01.008-.277l.477-.447a.195.195 0 01.14-.053zm-.007.058a.15.15 0 10.002 0zm-3.008.047l.136.232-.109.024zm1.537.35a.081.081 0 00-.049.04l-.062.118a.087.087 0 00.035.117.088.088 0 00.117-.037l.06-.117a.085.085 0 00-.035-.116.089.089 0 00-.066-.006zm1.014.025a.15.15 0 10.002 0zm-1.483.057a.088.088 0 00-.05.043l-.061.117a.085.085 0 00.035.115.085.085 0 00.115-.035l.063-.12a.085.085 0 00-.037-.115.084.084 0 00-.065-.005zm5.397.357c.024.008.04.04.054.07a4.003 4.003 0 01-.285.608l-.765.279s-.015-.196-.028-.293c-.02-.148-.281-.172-.281-.172s.896-.376 1.305-.492zm-4.43.045c.06-.002.11.016.14.064.154.25-.203.55-.722.637-.66.111-.89-.2-.73-.437.09-.137.498-.035.675-.059.17-.023.455-.2.637-.205zm3.125.54c.077.01.193.031.197.124.007.138.028.414.028.414l.74-.27a7.746 7.746 0 01-.576.78l-.065-.365v.449c-.11.132-.216.258-.332.385zm-2.006.032c-.324.004-.646.04-.973.108-.128.183-.072.564-.072.564l2.133-.105s-.014-.334-.106-.487a5.44 5.44 0 00-.982-.08zm-.076.09c.263-.007.551.008.992.05.068.152.067.34.067.34l-1.934.087s-.014-.204.035-.387c.339-.053.577-.083.84-.09zm1.066.59s-.11.838-.023 1.32c-.462.113-1.205.137-1.828.11-.056-.511-.086-1.22-.086-1.22s-.08.55-.008 1.36c.714-.004 1.466-.006 2.031-.14-.067-.742-.086-1.43-.086-1.43zm-1.222.246s-.03.34-.028.512c.002.188.04.562.04.562s.045-.37.042-.555c-.002-.174-.054-.519-.054-.519zm.484.098s-.043.285-.043.43c0 .147.047.44.047.44s.028-.29.027-.437c0-.145-.031-.433-.031-.433zm-2.465.539l.133.105c-.003.25.006.502.098.79-.258-.034-.617-.217-.782-.45.298-.122.346-.167.551-.445zm8.694.078c.25.139.459.393.457.611-.003.254-.264-.15-.557-.404.233.249.397.632.215.637-.238.006-.255-.311-.602-.514-.184-.107-.496-.152-.496-.152s.371-.174.983-.178zm-1.073.273c.741-.002.851.642 1.137.64.313-.003.172-.28.172-.28s.106.151.21.136c0 0 1.301 1.029 1.321 1.989.022 1.08-1.257 2.173-2.312 2.164-1.381-.02-2.043-.67-3.008-.68-.725.034-1.213.328-1.227.727-.006.193.174.558.174.558s-.306-.258-.322-.527c-.041-.738.523-1.603 1.402-1.666.953-.11 1.383.232 2.613.322.48.035 1.162-.482 1.149-.766-.038-.823-1.73-.808-1.73-.808l.343-.309c-.023-1.231-.637-1.086-.637-1.086l.36-.406s.21-.007.355-.008zm-.808.516c.161-.025.325 0 .453.187.138.203.176.746.176.746s-.448.437-.735.547c-.01-.128-.007-.244-.023-.402-.013-.123-.172-.28-.362-.309v-.171c.175-.192.341-.392.49-.598zm-.563.674v1.513c-.136.058-.245.115-.414.172-.255.087-.544-.005-.805.063-.285.073-.53.26-.804.367-.409.16-.95.176-.95.176s1.708-.936 2.973-2.291zm.072.16c.127.025.282.153.288.256.012.26.022.344.03.504.158-.017.427-.262.427-.262s.042.256-.055.406c-.081.125-.349.271-.69.42zm.85.549s1.6.075 1.602.71c0 .4-.705.64-1.125.641-.571.002-1.54-.344-1.54-.344s.913-.39 1.032-.574c.097-.151.031-.433.031-.433z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/renren.svg b/assets/lib/simple-icons/icons/renren.svg
index b2044a3f..e77361bb 100644
--- a/assets/lib/simple-icons/icons/renren.svg
+++ b/assets/lib/simple-icons/icons/renren.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Renren icon</title><path d="M5.661 9.601V5.303a6.793 6.793 0 0 0-4.053 11.084c2.378-1.152 4.041-3.755 4.053-6.786zM6.793 13.715c-.423 1.752-1.687 3.249-3.262 4.244a6.759 6.759 0 0 0 3.261.833 6.771 6.771 0 0 0 3.262-.833c-1.575-.995-2.838-2.493-3.261-4.244zM11.977 7.613a6.789 6.789 0 0 0-4.052-2.31v4.265c0 3.044 1.666 5.662 4.051 6.817a6.766 6.766 0 0 1-1.607-4.386 6.754 6.754 0 0 1 1.608-4.386zM11.977 7.613c1.003 1.183 1.655 2.714 1.655 4.387s-.652 3.202-1.655 4.387l-.001-.001.001.001c2.378-1.151 4.087-3.755 4.099-6.786V5.303a6.9 6.9 0 0 0-4.099 2.31zM18.34 9.568c0 3.045 1.666 5.662 4.052 6.818A6.792 6.792 0 0 0 18.34 5.304v4.264zM17.208 13.715c-.423 1.752-1.687 3.249-3.262 4.244a6.759 6.759 0 0 0 3.261.833 6.771 6.771 0 0 0 3.262-.833c-1.574-.995-2.838-2.493-3.261-4.244z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Renren</title><path d="M5.66 9.553V5.254A6.794 6.794 0 0 0 1.606 16.34c2.379-1.152 4.042-3.755 4.054-6.787zm1.132 4.115c-.423 1.752-1.687 3.25-3.262 4.245a6.76 6.76 0 0 0 3.26.833 6.772 6.772 0 0 0 3.264-.833c-1.575-.996-2.84-2.494-3.262-4.245zm5.184-6.103a6.79 6.79 0 0 0-4.052-2.31V9.52c0 3.045 1.667 5.663 4.051 6.818a6.767 6.767 0 0 1-1.607-4.387 6.755 6.755 0 0 1 1.608-4.386zc1.003 1.183 1.655 2.714 1.655 4.387 0 1.674-.65 3.203-1.655 4.388 2.38-1.15 4.088-3.755 4.1-6.787V5.254a6.9 6.901 0 0 0-4.1 2.31zM18.34 9.52c0 3.046 1.667 5.663 4.053 6.82A6.793 6.793 0 0 0 18.34 5.255zm-1.132 4.148c-.423 1.752-1.687 3.25-3.263 4.245a6.76 6.76 0 0 0 3.262.833 6.772 6.772 0 0 0 3.263-.833c-1.575-.996-2.839-2.494-3.262-4.245z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/repl-dot-it.svg b/assets/lib/simple-icons/icons/repl-dot-it.svg
deleted file mode 100644
index 3fc18f79..00000000
--- a/assets/lib/simple-icons/icons/repl-dot-it.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>repl.it icon</title><path d="M12.265.002a11.911 11.911 0 00-2.437.204c13.876 1.704 10.27 17.94 1.717 17.819 0 0 12.453 1.625 11.673-10.215A11.911 11.911 0 0012.265.002zM8.213.827c-.2.002-.402.008-.61.016A11.856 11.856 0 00.146 13.608C2.93-.421 18.805 4.122 17.9 12.688c0 0 2.85-12.014-9.688-11.861zm1.454 5.035C6.002 5.886.691 7.45.816 16.344a12.013 12.013 0 002.897 4.33c.052.051.108.1.162.149a12.02 12.02 0 001.137.926c.061.044.12.092.181.135a11.93 11.93 0 001.312.779c.132.068.266.13.4.193a11.854 11.854 0 001.199.486c.1.034.195.077.297.109a11.874 11.874 0 001.49.353c.153.027.307.05.461.07a12.016 12.016 0 001.578.123l.06.003c.4 0 .792-.021 1.18-.06-13.949-3.327-8.645-18.924-.114-17.68 0 0-1.469-.41-3.389-.398zm2.436 2.762a3.355 3.355 0 103.354 3.356 3.355 3.355 0 00-3.354-3.356zm-5.95 2.192S2.82 23.09 16.172 23.196a11.978 11.978 0 007.743-9.992c.033-.319.043-.644.05-.97.001-.085.013-.168.013-.255 0-.371-.023-.737-.056-1.1-3.527 13.887-19.132 8.448-17.77-.063z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/replit.svg b/assets/lib/simple-icons/icons/replit.svg
new file mode 100644
index 00000000..6baba8e4
--- /dev/null
+++ b/assets/lib/simple-icons/icons/replit.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Replit</title><path d="M12.265.002a11.911 11.911 0 00-2.437.204c13.876 1.704 10.27 17.94 1.717 17.819 0 0 12.453 1.625 11.673-10.215A11.911 11.911 0 0012.265.002zM8.213.827c-.2.002-.402.008-.61.016A11.856 11.856 0 00.146 13.608C2.93-.421 18.805 4.122 17.9 12.688c0 0 2.85-12.014-9.688-11.861zm1.454 5.035C6.002 5.886.691 7.45.816 16.344a12.013 12.013 0 002.897 4.33c.052.051.108.1.162.149a12.02 12.02 0 001.137.926c.061.044.12.092.181.135a11.93 11.93 0 001.312.779c.132.068.266.13.4.193a11.854 11.854 0 001.199.486c.1.034.195.077.297.109a11.874 11.874 0 001.49.353c.153.027.307.05.461.07a12.016 12.016 0 001.578.123l.06.003c.4 0 .792-.021 1.18-.06-13.949-3.327-8.645-18.924-.114-17.68 0 0-1.469-.41-3.389-.398zm2.436 2.762a3.355 3.355 0 103.354 3.356 3.355 3.355 0 00-3.354-3.356zm-5.95 2.192S2.82 23.09 16.172 23.196a11.978 11.978 0 007.743-9.992c.033-.319.043-.644.05-.97.001-.085.013-.168.013-.255 0-.371-.023-.737-.056-1.1-3.527 13.887-19.132 8.448-17.77-.063z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/republicofgamers.svg b/assets/lib/simple-icons/icons/republicofgamers.svg
new file mode 100644
index 00000000..828ca245
--- /dev/null
+++ b/assets/lib/simple-icons/icons/republicofgamers.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Republic of Gamers</title><path d="M21.3906 5.5833c-1.3467.0115-3.4338.19541-5.9375.97657-1.6024.49851-3.916 2.74203-8.22459 6.90823-.56973.3204-2.67017-.8912-3.88085-1.461 0 0 1.9929 3.1699 2.70507 4.0957 1.06825 1.46 3.02735 2.3145 3.02735 2.3145-.17804-.1781-1.53019-1.6029-1.92188-2.4219-.24926-.3917.03418-.9624 1.95703-2.3867C10.86 12.3268 17.0569 7.09358 23.0391 5.66924c0 0-.601-.09488-1.6485-.08593V5.5833ZM24 7.7708c-2.0653.21366-4.06.81878-5.9473 1.70899C14.2783 11.2602 7.9043 15.8177 7.9043 15.8177c.28486.178.5706.3556.85546.498 3.06234 1.3531 7.58484 2.1716 8.43944 1.8867 2.3858-.7833 5.056-5.8026 5.875-8.1172 0 0-2.4933.9968-5.0215 2.1719-2.1009.9971-4.414 2.1368-4.414 2.1368l5.875-1.7813s-1.5676 3.7036-3.6328 4.1309c-2.0653.4273-5.6973-1.0332-5.6973-1.0332.2849-.2493 4.1302-3.0629 13.1035-6.73051.3917-.28487.6417-.74608.7129-1.20898V7.7708ZM0 11.2942c.35608.9615.8194 1.8525 1.35352 2.7071.64094.819 3.27477 1.4952 3.63086 1.5664C3.34638 14.4282 0 11.2942 0 11.2942Z"/></svg>
diff --git a/assets/lib/simple-icons/icons/rescript.svg b/assets/lib/simple-icons/icons/rescript.svg
new file mode 100644
index 00000000..5af438eb
--- /dev/null
+++ b/assets/lib/simple-icons/icons/rescript.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ReScript</title><path d="M23.29 1.8c-.3-.4-.6-.7-.9-.9-1.3-.9-2.899-.9-6.098-.9H7.696C4.498 0 2.9 0 1.8.8c-.4.3-.7.6-1 1C0 2.9 0 4.5 0 7.7v8.6c0 3.2 0 4.8.8 5.9.3.4.6.7.9.9 1.199.9 2.798.9 5.996.9h8.596c3.199 0 4.798 0 5.898-.8.4-.3.7-.6.9-.9.799-1.1.799-2.7.799-5.9V7.7c.2-3.2.2-4.8-.6-5.9ZM11.194 16.5c0 .2 0 .5-.1.8 0 .2-.1.3-.1.5-.1.1-.2.3-.4.5s-.4.3-.6.4c-.3.1-.7.1-1.399.1-.8 0-1.1 0-1.4-.1-.4-.2-.699-.5-.899-.9-.1-.3-.1-.7-.1-1.4v-8c0-.9 0-1.4.2-1.7.2-.3.4-.5.8-.7.3-.2.8-.2 1.699-.2h2.299zm5.097-4.9c-1.599 0-2.798-1.3-2.798-2.8 0-1.6 1.3-2.8 2.798-2.8 1.5 0 2.8 1.3 2.8 2.8 0 1.5-1.3 2.8-2.8 2.8z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/rescuetime.svg b/assets/lib/simple-icons/icons/rescuetime.svg
new file mode 100644
index 00000000..1a9f2ca6
--- /dev/null
+++ b/assets/lib/simple-icons/icons/rescuetime.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>RescueTime</title><path d="m24 7.626v8.749c0 .597-.485 1.092-1.091 1.092h-5.447v5.452c0 .596-.485 1.092-1.091 1.092h-8.742c-.596 0-1.091-.486-1.091-1.092v-5.452h-5.447c-.596 0-1.091-.485-1.091-1.092v-8.749c0-.597.485-1.092 1.091-1.092h5.447v-5.452c0-.596.485-1.092 1.091-1.092h8.742c.596 0 1.091.485 1.091 1.092v5.452h5.447c.596 0 1.091.495 1.091 1.092zm-3.325 4.339-2.192-1.649.333 1.042-4.891-.344c.152.304.243.638.243.992 0 .343-.081.667-.213.95l4.871-.364-.323 1.022zm-7.579.03-.495-8 1.021.324-1.647-2.185-1.647 2.195 1.04-.334-.454 8c0 .597.485 1.093 1.091 1.093.596 0 1.091-.486 1.091-1.093z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/researchgate.svg b/assets/lib/simple-icons/icons/researchgate.svg
index 97937d11..95500172 100644
--- a/assets/lib/simple-icons/icons/researchgate.svg
+++ b/assets/lib/simple-icons/icons/researchgate.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>ResearchGate icon</title><path d="M19.586 0c-.818 0-1.508.19-2.073.565-.563.377-.97.936-1.213 1.68a3.193 3.193 0 0 0-.112.437 8.365 8.365 0 0 0-.078.53 9 9 0 0 0-.05.727c-.01.282-.013.621-.013 1.016a31.121 31.123 0 0 0 .014 1.017 9 9 0 0 0 .05.727 7.946 7.946 0 0 0 .077.53h-.005a3.334 3.334 0 0 0 .113.438c.245.743.65 1.303 1.214 1.68.565.376 1.256.564 2.075.564.8 0 1.536-.213 2.105-.603.57-.39.94-.916 1.175-1.65.076-.235.135-.558.177-.93a10.9 10.9 0 0 0 .043-1.207v-.82c0-.095-.047-.142-.14-.142h-3.064c-.094 0-.14.047-.14.141v.956c0 .094.046.14.14.14h1.666c.056 0 .084.03.084.086 0 .36 0 .62-.036.865-.038.244-.1.447-.147.606-.108.385-.348.664-.638.876-.29.212-.738.35-1.227.35-.545 0-.901-.15-1.21-.353-.306-.203-.517-.454-.67-.915a3.136 3.136 0 0 1-.147-.762 17.366 17.367 0 0 1-.034-.656c-.01-.26-.014-.572-.014-.939a26.401 26.403 0 0 1 .014-.938 15.821 15.822 0 0 1 .035-.656 3.19 3.19 0 0 1 .148-.76 1.89 1.89 0 0 1 .742-1.01c.344-.244.593-.352 1.137-.352.508 0 .815.096 1.144.303.33.207.528.492.764.925.047.094.111.118.198.07l1.044-.43c.075-.048.09-.115.042-.199a3.549 3.549 0 0 0-.466-.742 3 3 0 0 0-.679-.607 3.313 3.313 0 0 0-.903-.41A4.068 4.068 0 0 0 19.586 0zM8.217 5.836c-1.69 0-3.036.086-4.297.086-1.146 0-2.291 0-3.007-.029v.831l1.088.2c.744.144 1.174.488 1.174 2.264v11.288c0 1.777-.43 2.12-1.174 2.263l-1.088.2v.832c.773-.029 2.12-.086 3.465-.086 1.29 0 2.951.057 3.667.086v-.831l-1.49-.2c-.773-.115-1.174-.487-1.174-2.264v-4.784c.688.057 1.29.057 2.206.057 1.748 3.123 3.41 5.472 4.355 6.56.86 1.032 2.177 1.691 3.839 1.691.487 0 1.003-.086 1.318-.23v-.744c-1.031 0-2.063-.716-2.808-1.518-1.26-1.376-2.95-3.582-4.355-6.074 2.32-.545 4.04-2.722 4.04-4.9 0-3.208-2.492-4.698-5.758-4.698zm-.515 1.29c2.406 0 3.839 1.26 3.839 3.552 0 2.263-1.547 3.782-4.097 3.782-.974 0-1.404-.03-2.063-.086v-7.19c.66-.059 1.547-.059 2.32-.059z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ResearchGate</title><path d="M19.586 0c-.818 0-1.508.19-2.073.565-.563.377-.97.936-1.213 1.68a3.193 3.193 0 0 0-.112.437 8.365 8.365 0 0 0-.078.53 9 9 0 0 0-.05.727c-.01.282-.013.621-.013 1.016a31.121 31.123 0 0 0 .014 1.017 9 9 0 0 0 .05.727 7.946 7.946 0 0 0 .077.53h-.005a3.334 3.334 0 0 0 .113.438c.245.743.65 1.303 1.214 1.68.565.376 1.256.564 2.075.564.8 0 1.536-.213 2.105-.603.57-.39.94-.916 1.175-1.65.076-.235.135-.558.177-.93a10.9 10.9 0 0 0 .043-1.207v-.82c0-.095-.047-.142-.14-.142h-3.064c-.094 0-.14.047-.14.141v.956c0 .094.046.14.14.14h1.666c.056 0 .084.03.084.086 0 .36 0 .62-.036.865-.038.244-.1.447-.147.606-.108.385-.348.664-.638.876-.29.212-.738.35-1.227.35-.545 0-.901-.15-1.21-.353-.306-.203-.517-.454-.67-.915a3.136 3.136 0 0 1-.147-.762 17.366 17.367 0 0 1-.034-.656c-.01-.26-.014-.572-.014-.939a26.401 26.403 0 0 1 .014-.938 15.821 15.822 0 0 1 .035-.656 3.19 3.19 0 0 1 .148-.76 1.89 1.89 0 0 1 .742-1.01c.344-.244.593-.352 1.137-.352.508 0 .815.096 1.144.303.33.207.528.492.764.925.047.094.111.118.198.07l1.044-.43c.075-.048.09-.115.042-.199a3.549 3.549 0 0 0-.466-.742 3 3 0 0 0-.679-.607 3.313 3.313 0 0 0-.903-.41A4.068 4.068 0 0 0 19.586 0zM8.217 5.836c-1.69 0-3.036.086-4.297.086-1.146 0-2.291 0-3.007-.029v.831l1.088.2c.744.144 1.174.488 1.174 2.264v11.288c0 1.777-.43 2.12-1.174 2.263l-1.088.2v.832c.773-.029 2.12-.086 3.465-.086 1.29 0 2.951.057 3.667.086v-.831l-1.49-.2c-.773-.115-1.174-.487-1.174-2.264v-4.784c.688.057 1.29.057 2.206.057 1.748 3.123 3.41 5.472 4.355 6.56.86 1.032 2.177 1.691 3.839 1.691.487 0 1.003-.086 1.318-.23v-.744c-1.031 0-2.063-.716-2.808-1.518-1.26-1.376-2.95-3.582-4.355-6.074 2.32-.545 4.04-2.722 4.04-4.9 0-3.208-2.492-4.698-5.758-4.698zm-.515 1.29c2.406 0 3.839 1.26 3.839 3.552 0 2.263-1.547 3.782-4.097 3.782-.974 0-1.404-.03-2.063-.086v-7.19c.66-.059 1.547-.059 2.32-.059z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/resurrectionremixos.svg b/assets/lib/simple-icons/icons/resurrectionremixos.svg
new file mode 100644
index 00000000..9b3fac59
--- /dev/null
+++ b/assets/lib/simple-icons/icons/resurrectionremixos.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Resurrection Remix OS</title><path d="M24 3.53l-9.952.078C9.142 3.647 6.994 8.265 0 16.345c1.569.753 3.323 1.24 4.338.119 1.703-1.883 4.275-5.48 7.154-8.346 1.793-1.784 6.01-.865 9.95-1.23 1.351-.125 2.41-2.48 2.558-3.359zm-.147 6.076l-7.326.044c-4.39 0-5.38 2.492-11.91 10.24 1.194.563 3.28.84 3.763.257 1.78-2.158 2.506-3.51 5.36-6.362 1.657-1.658 4.39-.687 7.86-1.01 1.267-.12 2.132-2.449 2.253-3.169z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/retroarch.svg b/assets/lib/simple-icons/icons/retroarch.svg
index 3b7c7315..9c35a820 100644
--- a/assets/lib/simple-icons/icons/retroarch.svg
+++ b/assets/lib/simple-icons/icons/retroarch.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>RetroArch icon</title><path d="M6.84 5.76L8.4 7.68H5.28l-.72 2.88H2.64l.72-2.88H1.44L0 13.44h3.84l-.48 1.92h3.36L4.2 18.24h2.82l2.34-2.88h5.28l2.34 2.88h2.82l-2.52-2.88h3.36l-.48-1.92H24l-1.44-5.76h-1.92l.72 2.88h-1.92l-.72-2.88H15.6l1.56-1.92h-2.04l-1.68 1.92h-2.88L8.88 5.76zm.24 3.84H9v1.92H7.08zm7.925 0h1.92v1.92h-1.92Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>RetroArch</title><path d="M6.84 5.76L8.4 7.68H5.28l-.72 2.88H2.64l.72-2.88H1.44L0 13.44h3.84l-.48 1.92h3.36L4.2 18.24h2.82l2.34-2.88h5.28l2.34 2.88h2.82l-2.52-2.88h3.36l-.48-1.92H24l-1.44-5.76h-1.92l.72 2.88h-1.92l-.72-2.88H15.6l1.56-1.92h-2.04l-1.68 1.92h-2.88L8.88 5.76zm.24 3.84H9v1.92H7.08zm7.925 0h1.92v1.92h-1.92Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/retropie.svg b/assets/lib/simple-icons/icons/retropie.svg
index 4c4f1fd4..d2296a43 100644
--- a/assets/lib/simple-icons/icons/retropie.svg
+++ b/assets/lib/simple-icons/icons/retropie.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>RetroPie icon</title><path d="M11.923 0a3.59 3.59 0 0 0-1.531 6.839c.04.475.18 2.156.315 3.874a1.356 1.356 0 0 1-.126.016c-.25.016-.499-.027-.748-.007-.32.024-.59.197-.914.197-.298 0-.608-.006-.88.136-.446.232-1.106.086-1.474.467-.298.308-.859.153-1.199.475-.088.083-.101.222-.213.26-.126.043-.257.07-.383.113-.247.083-.51.226-.607.486-.061.166.022.188-.146.257a1.38 1.38 0 0 0-.33.182c-.182.141-.231.336-.258.568-.002.017.003.315.003.314a.918.918 0 0 0-.221.256c-.133.235-.107.484-.009.728.107.264.198.364.209.636-.012.13.05.266.098.383.192.47.307.835.831.884l1.48 3.964C6.564 23.015 9.25 24 11.949 24c2.72 0 5.448-1.001 6.204-2.986l1.522-4.002c.327-.06.603-.178.726-.538.086-.189.174-.393.202-.6a.674.674 0 0 0-.01-.249c.062-.08.123-.15.167-.243.211-.445.162-.964-.268-1.25.114-.407-.014-.695-.385-.91-.188-.109-.29-.091-.347-.296-.053-.19-.14-.339-.307-.437-.215-.126-.458-.15-.684-.243-.093-.242-.33-.385-.565-.462-.195-.064-.398-.073-.594-.126-.203-.054-.317-.242-.524-.318-.225-.081-.463-.089-.698-.113-.253-.027-.43-.18-.669-.243-.253-.066-.502-.05-.758-.065-.258-.015-.476-.15-.73-.182-.202-.026-.403-.009-.606-.001a2.01 2.01 0 0 1-.474-.053c.136-1.721.266-3.391.3-3.843A3.59 3.59 0 0 0 11.924 0zm.95.826c.292-.007.684.158 1.009.518.518.573.59 1.257.332 1.397-.261.145-.741-.145-1.187-.529-.438-.388-.721-.863-.536-1.193.068-.123.207-.19.382-.193zM10.766 6.99a3.584 3.584 0 0 0 2.312 0c-.197 2.54-.459 5.87-.486 6.08-.014.083-.098.176-.218.242a1 1 0 0 1-.464.102c-.027 0-.664-.005-.68-.409-.032-.825-.342-4.563-.464-6.015zm2.371 3.856c.077.017.156.032.237.04.302.025.597-.048.899.015.137.028.25.101.385.134.168.04.339.047.511.043a1.68 1.68 0 0 1 .463.052c.164.044.273.156.43.204.352.106.793.02 1.095.254.059.045.08.113.145.148.068.036.143.061.218.082.13.035.265.046.396.074.151.032.311.082.43.178a.31.31 0 0 1 .12.197c.009.072.088.1.156.13.215.094.453.11.657.232a.46.46 0 0 1 .205.227l.006.02.002.006.01.044c.004.034.014.132.027.222.057.04.12.073.186.099.18.071.474.207.537.4a.208.208 0 0 1 .003.007l.004.023a.24.24 0 0 1-.001.124c-.02.075-.066.238-.095.366.105.077.228.133.317.23.046.05.081.11.1.172l.001.001.002.007.007.03c.046.185-.041.53-.136.636a2.1 2.1 0 0 0-.182.253.44.44 0 0 1 .054.166l.002.018v.016l-.001.029-.002.012-.003.018a2.249 2.249 0 0 1-.18.53c-.12.387-.574.307-.864.408-.028.154-.164.81-.284.965-.237.305-.633.282-.969.27a1.17 1.17 0 0 0-.503.089.668.668 0 0 0-.2.13c-.078.075-.09.155-.121.254-.108.352-.47.512-.795.543-.271.025-.509-.057-.772-.102a1.548 1.548 0 0 0-.773.058.87.87 0 0 0-.322.187c-.086.082-.154.173-.253.24a1.3 1.3 0 0 1-.735.211c-.261 0-.525-.066-.754-.2a1.485 1.485 0 0 0-.747-.183c-.255 0-.522.05-.747.183a1.49 1.49 0 0 1-.757.203c-.337 0-.694-.112-.926-.38-.182-.211-.457-.3-.72-.328-.378-.04-.718.123-1.09.123-.33 0-.713-.112-.889-.431-.067-.123-.067-.267-.17-.367-.135-.132-.33-.192-.509-.214-.354-.044-.702.068-1.03-.14a.586.586 0 0 1-.263-.372c-.023-.084-.161-.562-.18-.663-.029-.15-.484-.048-.637-.135-.138-.08-.208-.29-.253-.389-.044-.098-.18-.405-.19-.5l.006-.005c-.001-.012-.004-.023-.004-.036a.423.423 0 0 1 .104-.283.697.697 0 0 1-.199-.194c-.044-.085-.255-.454-.19-.64l.005-.004a.523.523 0 0 1 .18-.262c.069-.057.16-.1.237-.154a.476.476 0 0 1-.058-.054c-.1-.136-.081-.427.014-.566l.012-.02.002-.003.003-.002a.254.254 0 0 1 .029-.036c.117-.124.279-.185.437-.248a.931.931 0 0 0 .187-.097c.009-.088.003-.189.01-.246a.27.27 0 0 1 .093-.178c.16-.17.522-.23.707-.296a.817.817 0 0 0 .22-.108c.04-.03.036-.133.07-.18.09-.126.259-.19.408-.23.167-.045.342-.053.508-.1a.778.778 0 0 0 .233-.098c.055-.039.082-.113.146-.154.323-.205.74-.116 1.093-.237.125-.043.211-.136.341-.177.176-.056.37-.073.555-.064.164.008.334-.009.493-.05.142-.035.26-.11.408-.136.327-.057.652.03.98-.02.043.551.083 1.081.11 1.475-.67.17-1.125.495-1.125.87 0 .553.983 1 2.195 1 1.212 0 2.195-.447 2.195-1 0-.366-.435-.683-1.08-.858.034-.404.072-.866.123-1.508zm3.865 2.053c-.318 0-.626.059-.891.17-.375.157-.6.407-.634.703a.645.645 0 0 0 .022.252l.02.409.01.2.002.027a1.288 1.288 0 0 0-.347-.207 2.306 2.306 0 0 0-.892-.17c-.319 0-.627.058-.892.169-.375.157-.6.407-.633.703a.645.645 0 0 0 .023.258l.02.402.01.201a.467.467 0 0 0 .073.268l.026.044c.117.214.336.388.63.501.232.09.493.137.754.137.34 0 .662-.078.93-.226.324-.178.51-.436.526-.725a.7.7 0 0 1 .006-.074c.004-.03.008-.058.011-.119l.023-.416a.656.656 0 0 0 .026-.173c0-.016-.003-.032-.004-.049.116.106.263.195.438.262.233.09.493.137.755.137.34 0 .661-.078.93-.226.324-.179.51-.436.525-.725.002-.042.004-.056.006-.074a.948.948 0 0 0 .011-.12l.023-.41a.656.656 0 0 0 .026-.178c.001-.299-.192-.56-.543-.735a2.312 2.312 0 0 0-.99-.216zm0 .27a2.03 2.03 0 0 1 .862.183c.164.082.402.243.401.498 0 .09-.033.175-.092.254l-.134.116a1.033 1.033 0 0 1-.217.143c-.01.004-.018.01-.028.013a2.06 2.06 0 0 1-.788.149c-.293 0-.571-.056-.807-.16l-.025-.01a1.037 1.037 0 0 1-.207-.14l-.132-.114a.414.414 0 0 1-.09-.299c.023-.194.19-.366.47-.484.232-.098.505-.149.787-.149zm-1.212 1.266c.074.06.16.112.256.157.017.011.037.017.054.024.268.128.58.198.906.198.327 0 .642-.068.912-.196l.023-.013a1.34 1.34 0 0 0 .274-.164c-.006.08-.011.077-.016.177-.012.228-.198.399-.385.502a1.68 1.68 0 0 1-.8.193 1.85 1.85 0 0 1-.658-.119c-.192-.074-.389-.194-.49-.38-.059-.103-.061-.08-.067-.194a57.658 57.658 0 0 0-.009-.185zm-1.498.117a2.03 2.03 0 0 1 .862.184c.164.08.401.242.4.497a.42.42 0 0 1-.093.255l-.132.115a1.03 1.03 0 0 1-.213.14 2.053 2.053 0 0 1-.82.165 2.02 2.02 0 0 1-.802-.157l-.03-.013a1.032 1.032 0 0 1-.207-.139l-.133-.116a.413.413 0 0 1-.089-.297c.022-.195.19-.367.47-.485a2.04 2.04 0 0 1 .787-.149zm-1.212 1.266c.08.064.173.122.28.17l.033.013c.268.127.577.196.903.196.327 0 .642-.067.912-.196l.025-.014c.103-.047.194-.102.271-.163-.005.08-.01.078-.016.177-.011.228-.197.4-.385.502a1.665 1.665 0 0 1-.8.193 1.82 1.82 0 0 1-.657-.119c-.192-.074-.389-.194-.491-.38-.058-.104-.06-.08-.066-.194l-.01-.185zm-8.06 2.297c.097.063.205.11.318.14.408.11 1.054-.132 1.236.345.208.541.85.741 1.381.698.43-.035 1.06-.306 1.41.092.404.46 1.092.576 1.665.425.525-.138.91-.457 1.478-.238.627.24 1.206.454 1.853.102.455-.247.623-.592 1.215-.492.522.089 1.02.2 1.503-.104.352-.22.362-.73.783-.78.37-.044.731.044 1.083-.139h.002l-.036.094-1.013 2.66c-.328.863-1.097 1.584-2.223 2.087-1.048.467-2.372.725-3.728.725-1.347 0-2.656-.255-3.686-.717-1.11-.498-1.866-1.217-2.188-2.08L5.02 18.115Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>RetroPie</title><path d="M11.923 0a3.59 3.59 0 0 0-1.531 6.839c.04.475.18 2.156.315 3.874a1.356 1.356 0 0 1-.126.016c-.25.016-.499-.027-.748-.007-.32.024-.59.197-.914.197-.298 0-.608-.006-.88.136-.446.232-1.106.086-1.474.467-.298.308-.859.153-1.199.475-.088.083-.101.222-.213.26-.126.043-.257.07-.383.113-.247.083-.51.226-.607.486-.061.166.022.188-.146.257a1.38 1.38 0 0 0-.33.182c-.182.141-.231.336-.258.568-.002.017.003.315.003.314a.918.918 0 0 0-.221.256c-.133.235-.107.484-.009.728.107.264.198.364.209.636-.012.13.05.266.098.383.192.47.307.835.831.884l1.48 3.964C6.564 23.015 9.25 24 11.949 24c2.72 0 5.448-1.001 6.204-2.986l1.522-4.002c.327-.06.603-.178.726-.538.086-.189.174-.393.202-.6a.674.674 0 0 0-.01-.249c.062-.08.123-.15.167-.243.211-.445.162-.964-.268-1.25.114-.407-.014-.695-.385-.91-.188-.109-.29-.091-.347-.296-.053-.19-.14-.339-.307-.437-.215-.126-.458-.15-.684-.243-.093-.242-.33-.385-.565-.462-.195-.064-.398-.073-.594-.126-.203-.054-.317-.242-.524-.318-.225-.081-.463-.089-.698-.113-.253-.027-.43-.18-.669-.243-.253-.066-.502-.05-.758-.065-.258-.015-.476-.15-.73-.182-.202-.026-.403-.009-.606-.001a2.01 2.01 0 0 1-.474-.053c.136-1.721.266-3.391.3-3.843A3.59 3.59 0 0 0 11.924 0zm.95.826c.292-.007.684.158 1.009.518.518.573.59 1.257.332 1.397-.261.145-.741-.145-1.187-.529-.438-.388-.721-.863-.536-1.193.068-.123.207-.19.382-.193zM10.766 6.99a3.584 3.584 0 0 0 2.312 0c-.197 2.54-.459 5.87-.486 6.08-.014.083-.098.176-.218.242a1 1 0 0 1-.464.102c-.027 0-.664-.005-.68-.409-.032-.825-.342-4.563-.464-6.015zm2.371 3.856c.077.017.156.032.237.04.302.025.597-.048.899.015.137.028.25.101.385.134.168.04.339.047.511.043a1.68 1.68 0 0 1 .463.052c.164.044.273.156.43.204.352.106.793.02 1.095.254.059.045.08.113.145.148.068.036.143.061.218.082.13.035.265.046.396.074.151.032.311.082.43.178a.31.31 0 0 1 .12.197c.009.072.088.1.156.13.215.094.453.11.657.232a.46.46 0 0 1 .205.227l.006.02.002.006.01.044c.004.034.014.132.027.222.057.04.12.073.186.099.18.071.474.207.537.4a.208.208 0 0 1 .003.007l.004.023a.24.24 0 0 1-.001.124c-.02.075-.066.238-.095.366.105.077.228.133.317.23.046.05.081.11.1.172l.001.001.002.007.007.03c.046.185-.041.53-.136.636a2.1 2.1 0 0 0-.182.253.44.44 0 0 1 .054.166l.002.018v.016l-.001.029-.002.012-.003.018a2.249 2.249 0 0 1-.18.53c-.12.387-.574.307-.864.408-.028.154-.164.81-.284.965-.237.305-.633.282-.969.27a1.17 1.17 0 0 0-.503.089.668.668 0 0 0-.2.13c-.078.075-.09.155-.121.254-.108.352-.47.512-.795.543-.271.025-.509-.057-.772-.102a1.548 1.548 0 0 0-.773.058.87.87 0 0 0-.322.187c-.086.082-.154.173-.253.24a1.3 1.3 0 0 1-.735.211c-.261 0-.525-.066-.754-.2a1.485 1.485 0 0 0-.747-.183c-.255 0-.522.05-.747.183a1.49 1.49 0 0 1-.757.203c-.337 0-.694-.112-.926-.38-.182-.211-.457-.3-.72-.328-.378-.04-.718.123-1.09.123-.33 0-.713-.112-.889-.431-.067-.123-.067-.267-.17-.367-.135-.132-.33-.192-.509-.214-.354-.044-.702.068-1.03-.14a.586.586 0 0 1-.263-.372c-.023-.084-.161-.562-.18-.663-.029-.15-.484-.048-.637-.135-.138-.08-.208-.29-.253-.389-.044-.098-.18-.405-.19-.5l.006-.005c-.001-.012-.004-.023-.004-.036a.423.423 0 0 1 .104-.283.697.697 0 0 1-.199-.194c-.044-.085-.255-.454-.19-.64l.005-.004a.523.523 0 0 1 .18-.262c.069-.057.16-.1.237-.154a.476.476 0 0 1-.058-.054c-.1-.136-.081-.427.014-.566l.012-.02.002-.003.003-.002a.254.254 0 0 1 .029-.036c.117-.124.279-.185.437-.248a.931.931 0 0 0 .187-.097c.009-.088.003-.189.01-.246a.27.27 0 0 1 .093-.178c.16-.17.522-.23.707-.296a.817.817 0 0 0 .22-.108c.04-.03.036-.133.07-.18.09-.126.259-.19.408-.23.167-.045.342-.053.508-.1a.778.778 0 0 0 .233-.098c.055-.039.082-.113.146-.154.323-.205.74-.116 1.093-.237.125-.043.211-.136.341-.177.176-.056.37-.073.555-.064.164.008.334-.009.493-.05.142-.035.26-.11.408-.136.327-.057.652.03.98-.02.043.551.083 1.081.11 1.475-.67.17-1.125.495-1.125.87 0 .553.983 1 2.195 1 1.212 0 2.195-.447 2.195-1 0-.366-.435-.683-1.08-.858.034-.404.072-.866.123-1.508zm3.865 2.053c-.318 0-.626.059-.891.17-.375.157-.6.407-.634.703a.645.645 0 0 0 .022.252l.02.409.01.2.002.027a1.288 1.288 0 0 0-.347-.207 2.306 2.306 0 0 0-.892-.17c-.319 0-.627.058-.892.169-.375.157-.6.407-.633.703a.645.645 0 0 0 .023.258l.02.402.01.201a.467.467 0 0 0 .073.268l.026.044c.117.214.336.388.63.501.232.09.493.137.754.137.34 0 .662-.078.93-.226.324-.178.51-.436.526-.725a.7.7 0 0 1 .006-.074c.004-.03.008-.058.011-.119l.023-.416a.656.656 0 0 0 .026-.173c0-.016-.003-.032-.004-.049.116.106.263.195.438.262.233.09.493.137.755.137.34 0 .661-.078.93-.226.324-.179.51-.436.525-.725.002-.042.004-.056.006-.074a.948.948 0 0 0 .011-.12l.023-.41a.656.656 0 0 0 .026-.178c.001-.299-.192-.56-.543-.735a2.312 2.312 0 0 0-.99-.216zm0 .27a2.03 2.03 0 0 1 .862.183c.164.082.402.243.401.498 0 .09-.033.175-.092.254l-.134.116a1.033 1.033 0 0 1-.217.143c-.01.004-.018.01-.028.013a2.06 2.06 0 0 1-.788.149c-.293 0-.571-.056-.807-.16l-.025-.01a1.037 1.037 0 0 1-.207-.14l-.132-.114a.414.414 0 0 1-.09-.299c.023-.194.19-.366.47-.484.232-.098.505-.149.787-.149zm-1.212 1.266c.074.06.16.112.256.157.017.011.037.017.054.024.268.128.58.198.906.198.327 0 .642-.068.912-.196l.023-.013a1.34 1.34 0 0 0 .274-.164c-.006.08-.011.077-.016.177-.012.228-.198.399-.385.502a1.68 1.68 0 0 1-.8.193 1.85 1.85 0 0 1-.658-.119c-.192-.074-.389-.194-.49-.38-.059-.103-.061-.08-.067-.194a57.658 57.658 0 0 0-.009-.185zm-1.498.117a2.03 2.03 0 0 1 .862.184c.164.08.401.242.4.497a.42.42 0 0 1-.093.255l-.132.115a1.03 1.03 0 0 1-.213.14 2.053 2.053 0 0 1-.82.165 2.02 2.02 0 0 1-.802-.157l-.03-.013a1.032 1.032 0 0 1-.207-.139l-.133-.116a.413.413 0 0 1-.089-.297c.022-.195.19-.367.47-.485a2.04 2.04 0 0 1 .787-.149zm-1.212 1.266c.08.064.173.122.28.17l.033.013c.268.127.577.196.903.196.327 0 .642-.067.912-.196l.025-.014c.103-.047.194-.102.271-.163-.005.08-.01.078-.016.177-.011.228-.197.4-.385.502a1.665 1.665 0 0 1-.8.193 1.82 1.82 0 0 1-.657-.119c-.192-.074-.389-.194-.491-.38-.058-.104-.06-.08-.066-.194l-.01-.185zm-8.06 2.297c.097.063.205.11.318.14.408.11 1.054-.132 1.236.345.208.541.85.741 1.381.698.43-.035 1.06-.306 1.41.092.404.46 1.092.576 1.665.425.525-.138.91-.457 1.478-.238.627.24 1.206.454 1.853.102.455-.247.623-.592 1.215-.492.522.089 1.02.2 1.503-.104.352-.22.362-.73.783-.78.37-.044.731.044 1.083-.139h.002l-.036.094-1.013 2.66c-.328.863-1.097 1.584-2.223 2.087-1.048.467-2.372.725-3.728.725-1.347 0-2.656-.255-3.686-.717-1.11-.498-1.866-1.217-2.188-2.08L5.02 18.115Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/revealdotjs.svg b/assets/lib/simple-icons/icons/revealdotjs.svg
new file mode 100644
index 00000000..fe15d4e0
--- /dev/null
+++ b/assets/lib/simple-icons/icons/revealdotjs.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>reveal.js</title><path d="M4.271 1.352a.774.774 0 0 0-.787.775v19.761c0 .49.45.857.93.758l6.676-1.382-2.77-.614-3.675.762V2.607l3.101.686 2.777-.574-6.097-1.35a.774.774 0 0 0-.155-.017zm15.315.002L5.145 4.344v15.092l14.43 3.195a.774.774 0 0 0 .94-.758V2.111a.773.773 0 0 0-.93-.757zM2.984 4.79l-2.367.49A.774.774 0 0 0 0 6.04v11.639a.774.774 0 0 0 .607.754l2.377.525V4.791zm18.034.252V6.23l1.822.405v11.011l-1.822.377v1.186l2.365-.49A.774.774 0 0 0 24 17.96V6.322a.774.774 0 0 0-.607-.754l-2.375-.525z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/reverbnation.svg b/assets/lib/simple-icons/icons/reverbnation.svg
index cf18148c..605e5f6b 100644
--- a/assets/lib/simple-icons/icons/reverbnation.svg
+++ b/assets/lib/simple-icons/icons/reverbnation.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ReverbNation icon</title><path d="M24 9.324l-9.143-.03L11.971.57 9.143 9.294 0 9.324h.031l7.367 5.355-2.855 8.749h.029l7.459-5.386 7.396 5.386-2.855-8.73L24 9.315"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ReverbNation</title><path d="M24 9.324l-9.143-.03L11.971.57 9.143 9.294 0 9.324h.031l7.367 5.355-2.855 8.749h.029l7.459-5.386 7.396 5.386-2.855-8.73L24 9.315"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/revolut.svg b/assets/lib/simple-icons/icons/revolut.svg
new file mode 100644
index 00000000..6210fe17
--- /dev/null
+++ b/assets/lib/simple-icons/icons/revolut.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Revolut</title><path d="M21.408 20.114c.449.999-.003 2.261-.94 2.77-.536.292-1.15.563-1.763.715a14.797 14.797 0 0 1-3.084.401c-1.662 0-3.329-.952-4.047-2.11-.185.4-.855 1.203-2.03 1.581-.741.24-1.635.529-3.502.527-1.673-.001-2.627-.76-3.13-1.396-.804-1.012-.922-2.298-.765-3.164l.008-.042c.631-3.167 1.494-8.925 1.892-11.81l.004-.028c.108-.8.219-1.6.285-2.406.032-.406.054-.814.058-1.221.004-.385-.031-.77-.028-1.154.004-.363.063-.73.233-1.052A2.391 2.391 0 0 1 5.917.619c.587-.196 1.2-.275 1.811-.346A48.39 48.39 0 0 1 9.604.086 31.823 31.823 0 0 1 11.9 0c1.31-.001 2.63.02 3.921.287 1.316.271 2.646.79 3.684 1.699.711.623 1.276 1.408 1.7 2.268.372.758.523 1.555.613 2.164a9.047 9.047 0 0 1-.124 3.286 7.203 7.203 0 0 1-.953 2.215c-.494.768-1.129 1.465-1.937 2.128.492 1.43 1.776 4.222 2.604 6.067zM6.688 2.922c.032.53.036 1.064.013 1.596a23.53 23.53 0 0 1-.13 1.626c-.06.538-.132 1.075-.205 1.611l-.024.175c-.23 1.677-.471 3.352-.725 5.024a280.578 280.578 0 0 1-.866 5.255c-.139.816-.45 1.861-.024 2.64.38.695 1.354.78 2.034.71 2.474-.253 2.867-.803 2.867-.803-.493-.547-.064-3.039.432-6.388h1.759l1.84 5.567s.543 1.724 2.05 1.641c1.932-.106 3.353-.548 3.558-.793-.595-.332-2.296-4.585-3.222-7.708.448-.274.883-.571 1.294-.904.56-.457 1.08-.984 1.477-1.603a4.75 4.75 0 0 0 .63-1.453 5.72 5.72 0 0 0 .125-.842 6.494 6.494 0 0 0-.046-1.486c-.07-.472-.173-.997-.383-1.422-.392-.797-.946-1.492-1.701-1.936-1.275-.75-2.745-.892-4.177-.97a26.434 26.434 0 0 0-4.657.152c-.174.02-1.926.175-1.918.31zm4.734 2.155c-.296 2.085-.533 3.842-.96 6.577 1.153-.025 3.77.434 4.346-3.304.477-3.11-1.649-3.398-3.386-3.273Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/revue.svg b/assets/lib/simple-icons/icons/revue.svg
new file mode 100644
index 00000000..b13555ca
--- /dev/null
+++ b/assets/lib/simple-icons/icons/revue.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Revue</title><path d="M4.3 7.13c-1.62 0-3.42.871-4.196 2.558-.49 1.065.918 1.397.988 1.065.23-1.09 1.447-2.805 3.22-2.805.936 0 1.483.616 1.483 1.704 0 1.349-1.559 2.06-2.25 2.29.307-1.41.415-1.836.415-2.087 0-.554-.321-.646-.648-.646-.397 0-.684.29-.684.29.23.418-.159 1.904-.327 2.506-.203.73-.485 1.81-.661 2.496-.177.685 1.052.5 1.135.298.09-.22.326-1.027.54-1.876.358-.112.768-.27.768-.27.18 1.192 1.138 4.216 3.874 4.216 2.346 0 2.196-1.488 2.002-1.392-.235.118-.647.325-1.527.325-2.735 0-3.298-3.506-3.298-3.506s2.07-.873 2.07-2.644c0-1.774-1.445-2.521-2.903-2.521zM14.223 10c-.443 0-.781.383-.781.792 0 .674.552.693.542 1.236-.01.542-.876 2.082-1.46 2.082-.217 0-.251-.219-.251-.321 0-1.038.55-2.52.55-3.019 0-.47-.286-.59-.628-.59a.974.974 0 0 0-.703.287c.157.325.003 1.1-.172 1.846-.303.858-1.285 1.89-2.163 1.893-1.147.007-.98-1.2-.98-1.2s2.698.06 2.614-1.81c-.036-.787-.796-1.125-1.479-1.095-1.392.063-2.5 1.385-2.427 3.02.058 1.291 1.025 1.906 2.053 1.86.91-.04 1.59-.451 2.079-.93.064.537.402.937 1.049.937 1.687 0 3.021-2.429 3.021-3.935 0-.55-.289-1.052-.864-1.052zm8.326.117c-1.393.029-2.57 1.325-2.536 2.961.004.157.018.305.043.443-.18.236-.5.59-.789.59-.159 0-.218-.14-.218-.299 0-1.202.555-2.385.555-3.084 0-.424-.29-.546-.648-.546-.442 0-.688.288-.688.288.241.663-.616 3.641-1.518 3.641-.213 0-.25-.167-.25-.303 0-.893.551-2.388.551-3.057 0-.444-.296-.576-.646-.576-.414 0-.69.295-.69.295.298.572-.484 2.757-.484 3.39 0 .632.351 1.131.97 1.131 1.003 0 1.585-1.258 1.585-1.258s-.134 1.258 1.085 1.258c.625 0 1.122-.53 1.383-.884.321.602.95.897 1.803.88.612-.013 1.053-.189 1.393-.494.524-.472.175-1.195-.02-.982-.346.376-.781.664-1.263.674-.926.02-.814-1.161-.814-1.161s2.686.094 2.647-1.777c-.016-.788-.768-1.144-1.451-1.13zm-13.21.721c.165-.007.281.076.29.275.05 1.108-1.463 1.224-1.463 1.224.065-.542.574-1.472 1.174-1.499zm13.17.016c.184-.004.28.083.285.283.022 1.088-1.445 1.186-1.445 1.186.077-.54.496-1.455 1.16-1.469z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/rewe.svg b/assets/lib/simple-icons/icons/rewe.svg
new file mode 100644
index 00000000..0fa5563c
--- /dev/null
+++ b/assets/lib/simple-icons/icons/rewe.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>REWE</title><path d="M16.597 12.45h.025l.579-3.166c.066-.36.214-.488.63-.488h.58c.307 0 .481.118.481.395 0 .064-.009.135-.026.216l-1.278 5.285c-.078.357-.195.512-.635.512h-.696c-.396 0-.51-.138-.598-.495l-.799-3.449h-.015l-.807 3.455c-.081.363-.195.49-.588.49h-.697c-.449 0-.56-.145-.642-.497l-1.269-5.3c-.016-.082-.036-.153-.036-.216 0-.278.18-.396.49-.396h.69c.417 0 .57.126.635.488l.575 3.167h.015l.738-3.167c.085-.362.233-.488.63-.488h.653c.391 0 .543.126.63.488l.735 3.167zM.498 15.205c-.349 0-.498-.144-.498-.496V9.3c0-.355.15-.503.498-.503h1.835c1.984 0 2.736.747 2.736 2.02 0 .776-.42 1.425-1.35 1.75l1.467 2.025c.089.124.125.22.125.306 0 .205-.24.307-.508.307H3.72c-.32 0-.444-.126-.669-.49l-1.206-1.931h-.019v1.926c0 .353-.15.495-.51.495H.498zm19.479 0c-.35 0-.485-.127-.485-.478V9.285c0-.362.136-.49.485-.49h3.251c.356 0 .486.127.486.489v.462c0 .347-.13.478-.486.478h-1.867v1.061h1.583c.358 0 .484.13.484.49v.426c0 .348-.126.477-.485.477H21.36v1.095h2.143c.363 0 .497.133.497.49v.463c0 .351-.134.478-.497.478h-3.526zm-13.411 0c-.351 0-.498-.144-.498-.496V9.3c0-.355.147-.503.498-.503h3.211c.354 0 .504.149.504.503v.429c0 .347-.15.496-.504.496H7.928v1.06H9.49c.36 0 .511.146.511.507v.388c0 .35-.15.499-.51.499H7.927v1.094h2.131c.356 0 .51.146.51.512v.423c0 .352-.154.495-.51.495H6.566zM2.351 11.68c.557 0 .793-.234.793-.743s-.236-.745-.793-.745h-.526v1.488h.526Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/rezgo.svg b/assets/lib/simple-icons/icons/rezgo.svg
new file mode 100644
index 00000000..edeb29fd
--- /dev/null
+++ b/assets/lib/simple-icons/icons/rezgo.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Rezgo</title><path d="M10.147 16.705c-.015-3.076.004-6.175-.024-9.238 0-2.052.836-3.917 2.193-5.274A7.438 7.438 0 0 1 17.59 0c1.482.015 2.999.008 4.493.008v3.728c-1.494 0-3.012-.005-4.493.006a3.713 3.713 0 0 0-3.725 3.725c-.01 3.063.004 6.162.01 9.238zm-5.4-.633l-3.61.965c.845 3.15 3.287 5.236 6.274 6.253a13.74 13.74 0 0 0 4.026.704c1.385.039 2.78-.117 4.092-.469 3.31-.886 6.186-3 7.334-6.371l-3.538-1.199c-.699 2.053-2.574 3.374-4.76 3.96-.982.263-2.013.38-3.025.352a10 10 0 0 1-2.93-.514c-1.868-.636-3.378-1.87-3.862-3.681zM6.986 3.354a2.887 2.887 0 1 1-5.775 0 2.887 2.887 0 0 1 5.775 0Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/rhinoceros.svg b/assets/lib/simple-icons/icons/rhinoceros.svg
index 462a26ab..687a1824 100644
--- a/assets/lib/simple-icons/icons/rhinoceros.svg
+++ b/assets/lib/simple-icons/icons/rhinoceros.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Rhinoceros icon</title><path d="M11.879,15.199c-0.101-0.032-0.216-0.126-0.361-0.219c-0.144-0.093-0.318-0.184-0.386-0.268 c-0.068-0.084-0.031-0.161,0.029-0.218c0.06-0.056,0.143-0.092,0.262-0.065c0.119,0.027,0.272,0.116,0.418,0.212 c0.146,0.096,0.283,0.199,0.334,0.288c0.05,0.089,0.013,0.164-0.048,0.217c-0.044,0.038-0.101,0.065-0.168,0.065 C11.933,15.212,11.907,15.208,11.879,15.199 M10.794,14.327c-0.093,0.086-0.144,0.201-0.033,0.338 c0.111,0.137,0.385,0.297,0.636,0.469c0.252,0.172,0.481,0.357,0.665,0.42c0.184,0.063,0.323,0.006,0.403-0.096 c0.079-0.102,0.099-0.247-0.004-0.404c-0.102-0.157-0.327-0.325-0.564-0.481c-0.237-0.157-0.488-0.302-0.681-0.346 c-0.046-0.01-0.088-0.015-0.127-0.015C10.961,14.212,10.865,14.261,10.794,14.327 M16.058,19.305 c-0.058,0.041-0.106,0.113-0.093,0.185c0.012,0.072,0.084,0.146,0.173,0.255c0.089,0.109,0.195,0.255,0.264,0.335 c0.069,0.08,0.1,0.093,0.128,0.091c0.028-0.002,0.054-0.018,0.085-0.048c0.031-0.03,0.069-0.074,0.095-0.156 c0.026-0.082,0.041-0.204,0.002-0.316c-0.039-0.112-0.133-0.216-0.218-0.282c-0.085-0.067-0.162-0.096-0.236-0.106 c-0.016-0.002-0.032-0.003-0.048-0.003C16.156,19.259,16.104,19.273,16.058,19.305 M16.546,20.304 c-0.032-0.001-0.062-0.023-0.208-0.171c-0.146-0.148-0.409-0.423-0.573-0.642c-0.165-0.219-0.231-0.383-0.263-0.568 c-0.031-0.185-0.027-0.391,0.082-0.537c0.109-0.145,0.323-0.23,0.534-0.238c0.211-0.008,0.419,0.061,0.602,0.239 c0.183,0.179,0.34,0.468,0.383,0.732c0.042,0.265-0.03,0.505-0.125,0.692c-0.095,0.187-0.212,0.32-0.288,0.397 c-0.074,0.074-0.109,0.095-0.141,0.095C16.547,20.304,16.546,20.304,16.546,20.304 M13.291,10.137 c-0.084,0.009-0.193,0.111-0.415,0.293c-0.222,0.182-0.559,0.444-1.017,0.701c-0.458,0.256-1.038,0.507-1.509,0.733 c-0.471,0.226-0.832,0.429-1.005,0.712c-0.172,0.283-0.155,0.648,0.04,0.851c0.195,0.203,0.566,0.245,0.884,0.258 c0.317,0.013,0.58-0.002,0.826,0.087c0.246,0.09,0.475,0.284,0.764,0.515c0.289,0.231,0.637,0.499,0.926,0.562 c0.289,0.063,0.518-0.079,0.766-0.203c0.248-0.124,0.516-0.23,0.887-0.225c0.371,0.005,0.847,0.121,1.318,0.37 c0.471,0.249,0.938,0.63,1.184,0.867c0.246,0.236,0.272,0.327,0.245,0.362c-0.027,0.036-0.108,0.017-0.304-0.14 c-0.196-0.158-0.507-0.454-0.916-0.688c-0.409-0.234-0.916-0.405-1.399-0.391c-0.483,0.013-0.941,0.211-1.231,0.55 c-0.29,0.34-0.412,0.822-0.546,1.164c-0.134,0.342-0.279,0.543-0.47,0.617c-0.19,0.074-0.424,0.021-0.704-0.099 c-0.279-0.12-0.604-0.307-0.873-0.442c-0.269-0.136-0.484-0.221-0.62-0.353c-0.136-0.132-0.195-0.311-0.203-0.571 c-0.009-0.26,0.032-0.601,0.051-0.853c0.019-0.251,0.017-0.413-0.039-0.561c-0.055-0.147-0.164-0.28-0.233-0.349 c-0.069-0.069-0.098-0.075-0.112-0.058c-0.014,0.017-0.012,0.058,0.01,0.158c0.023,0.1,0.066,0.26,0.049,0.582 c-0.018,0.321-0.097,0.803-0.159,1.169c-0.062,0.367-0.107,0.618-0.02,0.809c0.087,0.191,0.307,0.321,0.707,0.54 c0.401,0.219,0.982,0.527,1.519,0.854c0.536,0.327,1.027,0.674,1.561,1.089c0.534,0.415,1.112,0.9,1.501,1.238 c0.388,0.339,0.588,0.532,0.742,0.591c0.154,0.058,0.263-0.018,0.307-0.139c0.044-0.121,0.023-0.285-0.014-0.429 c-0.037-0.144-0.091-0.266-0.24-0.46c-0.149-0.194-0.394-0.46-0.68-0.704c-0.286-0.243-0.613-0.463-0.803-0.614 c-0.19-0.151-0.242-0.233-0.212-0.258c0.03-0.026,0.141,0.004,0.303,0.107c0.162,0.104,0.374,0.281,0.611,0.459 c0.237,0.178,0.499,0.356,0.734,0.584c0.235,0.228,0.442,0.506,0.583,0.707c0.14,0.201,0.214,0.324,0.294,0.372 c0.08,0.048,0.166,0.021,0.277-0.05c0.111-0.071,0.249-0.186,0.427-0.355c0.178-0.169,0.397-0.393,0.551-0.634 c0.154-0.24,0.242-0.496,0.299-0.772c0.056-0.276,0.081-0.572,0.247-0.861c0.167-0.29,0.476-0.574,0.994-1.025 c0.518-0.451,1.244-1.07,1.891-1.665c0.647-0.595,1.216-1.165,1.695-1.802c0.479-0.637,0.87-1.342,1.068-1.743 c0.198-0.401,0.204-0.499,0.14-0.526c-0.064-0.028-0.198,0.015-0.611,0.312c-0.413,0.297-1.105,0.849-1.886,1.43 c-0.781,0.581-1.65,1.191-2.336,1.569c-0.686,0.378-1.189,0.524-1.55,0.562c-0.361,0.037-0.58-0.034-0.723-0.11 c-0.143-0.076-0.211-0.157-0.224-0.241c-0.013-0.084,0.029-0.169,0.135-0.275c0.106-0.106,0.277-0.232,0.446-0.392 c0.17-0.16,0.339-0.354,0.468-0.556c0.13-0.202,0.22-0.412,0.262-0.593c0.042-0.181,0.034-0.333-0.04-0.376 c-0.074-0.043-0.215,0.023-0.377,0.11c-0.161,0.086-0.343,0.193-0.593,0.301c-0.249,0.108-0.566,0.216-0.92,0.235 c-0.354,0.018-0.746-0.053-1.089-0.313c-0.342-0.26-0.635-0.709-0.866-1.147c-0.23-0.438-0.399-0.864-0.513-1.119 c-0.108-0.242-0.167-0.33-0.245-0.33C13.299,10.137,13.295,10.137,13.291,10.137 M6.483,3.12c-0.512,0.044-1.25,0.181-1.803,0.329 c-0.552,0.148-0.917,0.307-1.149,0.42C3.3,3.981,3.201,4.047,3.177,4.141c-0.024,0.095,0.027,0.218,0.16,0.436 c0.132,0.219,0.346,0.533,0.535,0.961c0.19,0.428,0.356,0.97,0.361,1.651c0.006,0.68-0.149,1.499-0.245,1.962 C3.892,9.614,3.855,9.72,3.761,9.77C3.667,9.82,3.516,9.813,3.235,9.749c-0.28-0.065-0.69-0.187-1.1-0.259 C1.726,9.418,1.317,9.397,1.014,9.452C0.71,9.508,0.51,9.641,0.369,9.82C0.228,10,0.145,10.227,0.087,10.57 C0.029,10.913-0.004,11.372,0,11.688c0.005,0.316,0.047,0.489,0.136,0.583c0.089,0.094,0.223,0.109,0.492,0.054 c0.269-0.055,0.672-0.18,1.224-0.215c0.553-0.035,1.255,0.02,1.94,0.202c0.685,0.182,1.352,0.491,1.95,0.929 c0.598,0.439,1.127,1.008,1.565,1.594c0.439,0.586,0.787,1.189,1.004,1.541c0.217,0.352,0.304,0.455,0.371,0.42 c0.068-0.035,0.118-0.207,0.145-0.417c0.028-0.209,0.033-0.456-0.02-0.848c-0.053-0.392-0.165-0.93-0.319-1.366 c-0.154-0.436-0.35-0.77-0.495-1.018c-0.146-0.247-0.242-0.407-0.245-0.51c-0.004-0.103,0.085-0.148,0.51-0.315 c0.425-0.167,1.186-0.457,1.958-0.808c0.772-0.351,1.557-0.764,2.042-1.106c0.486-0.341,0.674-0.611,0.724-0.937 c0.05-0.326-0.039-0.709-0.159-1.076c-0.12-0.367-0.272-0.717-0.53-1.193c-0.257-0.476-0.62-1.077-1.014-1.604 c-0.394-0.528-0.818-0.982-1.1-1.236C9.898,4.109,9.759,4.054,9.669,4.074c-0.09,0.02-0.13,0.114-0.167,0.47 C9.465,4.9,9.433,5.517,9.358,6.103C9.283,6.689,9.166,7.244,8.926,7.876c-0.239,0.632-0.601,1.342-0.99,1.982 c-0.388,0.641-0.804,1.212-1.054,1.462c-0.25,0.25-0.336,0.179-0.477,0.063c-0.141-0.116-0.337-0.275-0.486-0.4 c-0.149-0.125-0.253-0.214-0.273-0.293c-0.02-0.08,0.044-0.15,0.27-0.448c0.226-0.298,0.614-0.824,0.96-1.477 c0.346-0.653,0.649-1.432,0.796-2.283C7.82,5.632,7.811,4.709,7.767,4.145c-0.044-0.564-0.124-0.77-0.306-0.896 C7.324,3.154,7.129,3.103,6.823,3.103C6.722,3.103,6.61,3.109,6.483,3.12"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Rhinoceros</title><path d="M6.823 3.103c-.1 0-.213.006-.34.017-.511.044-1.25.18-1.802.329a6.269 6.269 0 0 0-1.15.42c-.231.112-.33.178-.354.273-.023.094.028.217.16.436s.346.533.535.961c.19.428.356.97.361 1.651.006.68-.149 1.5-.245 1.962-.096.462-.133.568-.227.618-.094.05-.245.044-.525-.021-.281-.065-.69-.187-1.1-.259-.41-.072-.819-.093-1.122-.038-.304.056-.504.189-.645.369-.14.18-.224.406-.282.75A6.957 6.957 0 0 0 0 11.687c.005.317.047.49.136.584.088.094.223.109.492.054s.672-.18 1.224-.215a6.302 6.302 0 0 1 1.94.202c.685.182 1.353.49 1.95.93.598.438 1.127 1.007 1.566 1.593.438.586.787 1.189 1.004 1.541.217.353.304.455.372.42.068-.035.117-.207.145-.417a3.141 3.141 0 0 0-.02-.848 7.467 7.467 0 0 0-.32-1.365 5.617 5.617 0 0 0-.495-1.018c-.146-.247-.241-.408-.245-.51-.004-.103.085-.148.51-.315.424-.167 1.185-.457 1.958-.808.772-.351 1.556-.764 2.042-1.106.486-.341.674-.61.724-.937.05-.326-.039-.71-.16-1.076a6.93 6.93 0 0 0-.529-1.193A13.696 13.696 0 0 0 11.28 5.6a9.187 9.187 0 0 0-1.1-1.236c-.282-.255-.421-.31-.51-.29-.09.02-.131.115-.168.47-.037.356-.07.973-.144 1.559a7.468 7.468 0 0 1-.432 1.773 12.543 12.543 0 0 1-.99 1.982c-.388.64-.803 1.212-1.054 1.462-.25.25-.336.18-.477.064l-.486-.4c-.15-.125-.253-.213-.273-.293-.02-.08.045-.15.27-.448.227-.299.615-.825.96-1.478a7.75 7.75 0 0 0 .796-2.282 10.1 10.1 0 0 0 .095-2.338c-.044-.564-.124-.77-.306-.896-.137-.095-.332-.146-.638-.146zm6.48 7.034h-.012c-.084.01-.192.112-.415.294a6.86 6.86 0 0 1-1.017.7c-.458.257-1.038.507-1.51.734-.47.226-.831.429-1.004.712-.172.283-.155.648.04.85.194.204.566.246.883.259.318.013.58-.002.826.087.246.09.475.285.764.516.288.23.637.498.925.561.289.063.518-.079.766-.202.249-.124.516-.23.888-.225.371.005.847.12 1.318.37.47.248.938.63 1.184.866.247.236.272.327.245.362-.028.036-.108.018-.304-.14-.196-.157-.508-.454-.917-.688-.41-.234-.916-.404-1.4-.391-.482.013-.94.21-1.23.55-.29.34-.412.822-.546 1.164-.133.341-.28.543-.47.617-.19.074-.424.02-.703-.099-.28-.12-.604-.307-.874-.442-.269-.136-.484-.22-.62-.353-.136-.132-.195-.31-.203-.571-.01-.26.032-.6.05-.853.02-.25.018-.413-.038-.56a1.079 1.079 0 0 0-.232-.35c-.07-.07-.099-.075-.113-.058-.014.017-.012.058.01.158.023.1.067.26.05.581-.019.321-.098.803-.16 1.17-.062.366-.107.618-.02.808.087.191.306.322.707.54.4.22.982.527 1.518.855.537.327 1.027.673 1.562 1.089.534.415 1.112.9 1.5 1.238.39.339.588.532.742.59.154.059.264-.018.307-.138.044-.12.023-.285-.014-.429a1.174 1.174 0 0 0-.24-.46 4.92 4.92 0 0 0-.68-.704c-.287-.243-.614-.463-.803-.614-.19-.151-.242-.233-.212-.259.03-.026.14.004.302.108.162.103.375.28.612.459.237.178.499.356.733.584.235.228.443.506.583.706.14.201.214.324.294.372.08.049.165.022.277-.05a3.03 3.03 0 0 0 .426-.355c.178-.169.398-.393.551-.633.154-.24.242-.496.299-.772.056-.276.08-.572.247-.862.167-.29.476-.574.994-1.025.518-.451 1.244-1.07 1.891-1.664.648-.595 1.216-1.165 1.696-1.802.479-.638.87-1.342 1.067-1.743.199-.4.205-.498.14-.526-.063-.027-.198.015-.61.313-.414.297-1.106.849-1.886 1.43-.781.58-1.65 1.19-2.336 1.569-.686.378-1.19.524-1.55.562-.361.037-.58-.034-.724-.11-.143-.077-.21-.158-.224-.241-.013-.084.03-.17.135-.275.106-.106.277-.232.447-.392.17-.16.338-.354.468-.556.13-.202.22-.411.261-.592.042-.181.034-.333-.04-.376-.074-.043-.215.023-.376.11-.162.086-.343.192-.593.3a2.683 2.683 0 0 1-.92.235 1.626 1.626 0 0 1-1.088-.313c-.343-.26-.635-.71-.866-1.147-.23-.438-.398-.865-.512-1.12-.108-.242-.168-.33-.246-.33zm-2.215 4.075a.422.422 0 0 0-.294.115c-.094.086-.145.2-.034.338.112.137.385.297.636.469.252.172.481.357.666.42.184.064.323.006.402-.096.08-.102.1-.247-.003-.404-.103-.157-.327-.325-.564-.481-.238-.157-.488-.302-.681-.346a.574.574 0 0 0-.128-.015zm.252.208c.025 0 .053.003.083.01.118.026.272.115.418.211.145.096.283.2.333.289.05.089.014.163-.048.216a.255.255 0 0 1-.247.053c-.1-.031-.216-.126-.36-.219-.145-.093-.319-.184-.387-.268-.068-.084-.031-.162.029-.218a.26.26 0 0 1 .18-.074zm4.778 3.728c.211-.008.42.06.602.24.183.178.34.467.383.732.042.265-.03.505-.125.692a1.58 1.58 0 0 1-.289.397c-.074.074-.109.095-.14.095h-.003c-.033-.001-.062-.023-.208-.171a7.39 7.39 0 0 1-.573-.642c-.165-.22-.232-.383-.263-.568-.032-.185-.027-.39.082-.536.109-.146.323-.23.534-.239zm.093 1.111a.258.258 0 0 0-.153.046c-.058.041-.105.113-.093.185.012.073.085.146.174.255.089.11.195.255.264.335.068.08.1.093.127.091.029-.002.054-.018.086-.048a.349.349 0 0 0 .094-.157.518.518 0 0 0 .002-.316.668.668 0 0 0-.218-.282.476.476 0 0 0-.283-.109z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/rider.svg b/assets/lib/simple-icons/icons/rider.svg
new file mode 100644
index 00000000..c1c1a5af
--- /dev/null
+++ b/assets/lib/simple-icons/icons/rider.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Rider</title><path d="M0 0v24h24V0zm7.031 3.113A4.063 4.063 0 0 1 9.72 4.14a3.23 3.23 0 0 1 .84 2.28A3.16 3.16 0 0 1 8.4 9.54l2.46 3.6H8.28L6.12 9.9H4.38v3.24H2.16V3.12c1.61-.004 3.281.009 4.871-.007zm5.509.007h3.96c3.18 0 5.34 2.16 5.34 5.04 0 2.82-2.16 5.04-5.34 5.04h-3.96zm4.069 1.976c-.607.01-1.235.004-1.849.004v6.06h1.74a2.882 2.882 0 0 0 3.06-3 2.897 2.897 0 0 0-2.951-3.064zM4.319 5.1v2.88H6.6c1.08 0 1.68-.6 1.68-1.44 0-.96-.66-1.44-1.74-1.44zM2.16 19.5h9V21h-9Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/rimacautomobili.svg b/assets/lib/simple-icons/icons/rimacautomobili.svg
new file mode 100644
index 00000000..929be4fe
--- /dev/null
+++ b/assets/lib/simple-icons/icons/rimacautomobili.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Rimac Automobili</title><path d="M21.422 1.317C18.428.488 15.194-.017 12.007 0 8.819-.017 5.586.487 2.594 1.317a.488.488 0 00-.342.455c0 7.95 2.976 17.802 9.479 22.142a.464.464 0 00.537 0c6.503-4.34 9.495-14.175 9.479-22.142.016-.21-.13-.39-.326-.455zM15.91 17.055c-1.025 1.723-2.244 3.267-3.691 4.454a.32.319 0 01-.407 0C7.845 18.241 5.537 12.47 4.658 6.893L3.65 6.356h7.479c2.407 0 2.715.78 2.715 1.35 0 .57-.308 1.35-2.714 1.35H8.934a.128.128 0 00-.13.13c0 .032.016.065.05.097l7.332 7.332.78.78zm1.333-2.65l-4.374-4.374c-.065-.065-.016-.162.065-.18l.862-.096c1.805-.195 2.845-1.106 2.845-2.244 0-1.317-1.398-2.049-3.723-2.049H4.446A24.735 24.733 0 014.268 3.3a.462.462 0 01.374-.487 32.298 32.296 0 017.3-.862h.13c2.39 0 4.878.293 7.301.862.227.049.39.26.373.487-.179 3.625-.99 7.593-2.503 11.104z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ring.svg b/assets/lib/simple-icons/icons/ring.svg
new file mode 100644
index 00000000..830cbc11
--- /dev/null
+++ b/assets/lib/simple-icons/icons/ring.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Ring</title><path d="M24 16.375a3.05 3.05 0 0 1-.246 1.231 3.114 3.114 0 0 1-1.672 1.66 3.068 3.068 0 0 1-1.225.247 3.695 3.695 0 0 1-.71-.073 4.05 4.05 0 0 1-.739-.218 3.184 3.184 0 0 1-.676-.37 2.02 2.02 0 0 1-.507-.515.46.46 0 0 1-.08-.275.442.442 0 0 1 .152-.346.504.504 0 0 1 .346-.138.553.553 0 0 1 .201.04.392.392 0 0 1 .186.17.046.046 0 0 0 .016.032l.064.065a1.806 1.806 0 0 0 .798.507 3.052 3.052 0 0 0 .943.154 2.12 2.12 0 0 0 .846-.17 2.189 2.189 0 0 0 1.16-1.16 2.115 2.115 0 0 0 .176-.841v-1.109a3.132 3.132 0 0 1-.985.637 3.089 3.089 0 0 1-1.193.234 3.046 3.046 0 0 1-1.231-.246 3.137 3.137 0 0 1-1.66-1.66 3.04 3.04 0 0 1-.247-1.232v-2.544a3.058 3.058 0 0 1 .247-1.225 3.154 3.154 0 0 1 .668-1 3.202 3.202 0 0 1 .986-.669 3.15 3.15 0 0 1 2.463 0 3.09 3.09 0 0 1 1.668 1.668 3.066 3.066 0 0 1 .246 1.225v5.92zm-.967-5.92a2.118 2.118 0 0 0-.17-.846 2.189 2.189 0 0 0-1.16-1.16 2.201 2.201 0 0 0-1.692 0 2.191 2.191 0 0 0-1.166 1.16 2.134 2.134 0 0 0-.168.845v2.531a2.133 2.133 0 0 0 .168.853 2.194 2.194 0 0 0 .468.693 2.171 2.171 0 0 0 .694.467 2.201 2.201 0 0 0 1.692 0 2.189 2.189 0 0 0 1.16-1.16 2.117 2.117 0 0 0 .174-.853zm-7.252 5.356a.435.435 0 0 1-.154.363.511.511 0 0 1-.66 0 .434.434 0 0 1-.153-.363v-5.356a2.118 2.118 0 0 0-.17-.846 2.189 2.189 0 0 0-1.16-1.16 2.201 2.201 0 0 0-1.692 0 2.19 2.19 0 0 0-1.16 1.16 2.127 2.127 0 0 0-.17.846v5.356a.434.434 0 0 1-.152.363.511.511 0 0 1-.661 0 .434.434 0 0 1-.153-.363v-5.356a3.058 3.058 0 0 1 .246-1.225 3.163 3.163 0 0 1 .67-1 3.202 3.202 0 0 1 .984-.669 3.15 3.15 0 0 1 2.464 0 3.091 3.091 0 0 1 1.667 1.668 3.066 3.066 0 0 1 .247 1.225zm-8.383 0a.435.435 0 0 1-.152.363.511.511 0 0 1-.662 0 .434.434 0 0 1-.152-.363V7.956a.435.435 0 0 1 .152-.363.512.512 0 0 1 .662 0 .436.436 0 0 1 .152.363zM4.982 8.44a.463.463 0 0 1-.145.338.483.483 0 0 1-.355.142.503.503 0 0 1-.339-.145l-.016-.017a.149.149 0 0 0-.032-.024.123.123 0 0 1-.033-.025 1.9 1.9 0 0 0-1.24-.43q-.871 0-1.363.595-.491.596-.492 1.693v5.243a.435.435 0 0 1-.153.363.525.525 0 0 1-.33.123.525.525 0 0 1-.33-.123.434.434 0 0 1-.153-.363v-5.243A4.362 4.362 0 0 1 .18 9.303a3.034 3.034 0 0 1 .53-1.031 2.546 2.546 0 0 1 .878-.706 2.763 2.763 0 0 1 1.231-.257 3.08 3.08 0 0 1 1.065.209 2.573 2.573 0 0 1 .934.58.48.48 0 0 1 .163.343zm2.76-3.128a.826.826 0 0 1-.826.827.826.826 0 0 1-.827-.827.826.826 0 0 1 .827-.826.826.826 0 0 1 .826.826Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/riot.svg b/assets/lib/simple-icons/icons/riot.svg
deleted file mode 100644
index bed5c8ac..00000000
--- a/assets/lib/simple-icons/icons/riot.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Riot icon</title><path d="M5.918 0c-2.067 0-3.76 1.623-3.76 3.63-.003 5.526.001 11.483 0 16.743 0 2.006 1.693 3.627 3.76 3.627 2.067 0 3.762-1.62 3.762-3.627v-3.071l1.984-.002 3.63 4.98c.673.924 1.746 1.419 2.836 1.419.686 0 1.378-.196 1.983-.603 1.564-1.054 1.943-3.13.846-4.635l-2.322-3.19c1.97-1.593 3.224-3.977 3.224-6.621 0-4.773-4.037-8.65-8.98-8.65zm1.42.603h5.543c4.63 0 8.38 3.613 8.38 8.047 0 2.444-1.156 4.652-2.98 6.136l-1.648-2.263c1.078-.97 1.768-2.338 1.768-3.873 0-2.942-2.48-5.322-5.52-5.322H9.367a3.215 3.215 0 0 0-.597-1.606A3.405 3.405 0 0 0 7.338.602zM9.365 3.93h3.516c2.727 0 4.919 2.115 4.919 4.719 0 1.335-.588 2.53-1.518 3.39l-.211-.29a3.463 3.463 0 0 0-2.2-1.36c.636-.34 1.071-.992 1.071-1.74 0-1.103-.933-1.994-2.061-1.994H9.079v3.992l2.706-.002a3.28 3.28 0 0 0-1.979 2.727l-3.587.004V6.93a3.515 3.515 0 0 0 1.7-.575 3.296 3.296 0 0 0 1.425-2.148c.017-.092.012-.184.02-.276zM2.759 4.959c.092.201.204.394.338.578.606.833 1.543 1.303 2.522 1.39v13.446c-.02.42.62.42.6 0v-6.395l3.59-.004c.054.555.238 1.106.594 1.595l.824 1.13-2.148.002v3.672c0 1.669-1.406 3.026-3.161 3.026-1.754 0-3.16-1.357-3.16-3.026-.002-5.124 0-10.7 0-15.414zm6.92 2.298h3.202c.814 0 1.459.629 1.459 1.393 0 .725-.588 1.34-1.357 1.39a1.595 1.595 0 0 1-.106.003l-3.197.002Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/riotgames.svg b/assets/lib/simple-icons/icons/riotgames.svg
index dedfe333..fd936c06 100644
--- a/assets/lib/simple-icons/icons/riotgames.svg
+++ b/assets/lib/simple-icons/icons/riotgames.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Riot Games icon</title><path d="M12.534 21.77l-1.09-2.81 10.52.54-.451 4.5zM15.06 0L.307 6.969 2.59 17.471H5.6l-.52-7.512.461-.144 1.81 7.656h3.126l-.116-9.15.462-.144 1.582 9.294h3.31l.78-11.053.462-.144.82 11.197h4.376l1.54-15.37Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Riot Games</title><path d="M12.534 21.77l-1.09-2.81 10.52.54-.451 4.5zM15.06 0L.307 6.969 2.59 17.471H5.6l-.52-7.512.461-.144 1.81 7.656h3.126l-.116-9.15.462-.144 1.582 9.294h3.31l.78-11.053.462-.144.82 11.197h4.376l1.54-15.37Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ripple.svg b/assets/lib/simple-icons/icons/ripple.svg
index ecb6fc86..cd5d2168 100644
--- a/assets/lib/simple-icons/icons/ripple.svg
+++ b/assets/lib/simple-icons/icons/ripple.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Ripple icon</title><path d="M20.55 14.65c-.846-.486-1.805-.632-2.752-.666-.79-.023-1.974-.541-1.974-1.985 0-1.072.868-1.94 1.985-1.985.947-.034 1.906-.18 2.752-.666A5.018 5.018 0 0022.4 2.502 5.04 5.04 0 0015.53.674a4.993 4.993 0 00-2.504 4.343c0 .97.35 1.861.79 2.696.372.699.553 1.996-.71 2.73-.948.54-2.132.202-2.719-.745-.496-.801-1.094-1.545-1.94-2.03C6.045 6.28 2.977 7.104 1.6 9.495A5.018 5.018 0 003.44 16.34a5.025 5.025 0 005.008 0c.846-.485 1.444-1.23 1.94-2.03.406-.654 1.433-1.489 2.718-.744.948.541 1.241 1.737.711 2.73-.44.823-.79 1.725-.79 2.695A5.011 5.011 0 0018.034 24a5.011 5.011 0 005.008-5.008 4.982 4.982 0 00-2.492-4.343z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Ripple</title><path d="M20.55 14.65c-.846-.486-1.805-.632-2.752-.666-.79-.023-1.974-.541-1.974-1.985 0-1.072.868-1.94 1.985-1.985.947-.034 1.906-.18 2.752-.666A5.018 5.018 0 0022.4 2.502 5.04 5.04 0 0015.53.674a4.993 4.993 0 00-2.504 4.343c0 .97.35 1.861.79 2.696.372.699.553 1.996-.71 2.73-.948.54-2.132.202-2.719-.745-.496-.801-1.094-1.545-1.94-2.03C6.045 6.28 2.977 7.104 1.6 9.495A5.018 5.018 0 003.44 16.34a5.025 5.025 0 005.008 0c.846-.485 1.444-1.23 1.94-2.03.406-.654 1.433-1.489 2.718-.744.948.541 1.241 1.737.711 2.73-.44.823-.79 1.725-.79 2.695A5.011 5.011 0 0018.034 24a5.011 5.011 0 005.008-5.008 4.982 4.982 0 00-2.492-4.343z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/riseup.svg b/assets/lib/simple-icons/icons/riseup.svg
index 092cc254..fe3f6222 100644
--- a/assets/lib/simple-icons/icons/riseup.svg
+++ b/assets/lib/simple-icons/icons/riseup.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Riseup icon</title><path d="M12.165 5.427s-.353-.685-.377-.78a82.888 82.888 0 0 1-.212-1.061l.236-.425.518-.779.753-.59.189-.07 1.813-.685.165-.165-.188-.284-.26-.141-.475-.122-1.19-.122-.925.01-.636.141-.565-.212-.707-.094L9.268.024 8.75 0l-.872.33L6.56 1.864l-.165.59-.094.52-.448.967-.283.92-.14.992v.212l-.684 1.038-.377.78V8.99l.118 2.29.212.826.424.755.542.495.235.968.895 1.982 1.06 1.275.07.07.377 1.912-1.295 2.36-.353.543-.33.213-.518-.071-.306.118-.353-.023-.236.188-.447-.118-.448-.07-.377.235-.094.401.26-.236.4-.07v.377l.635-.142.354.023.612.142s.542.023.636.023c.094 0 .66.118.66.118h.423l.212.118.306-.047.307.189h.47l.095-.307v-.165l.306.141.235.236.142.26.023-.307-.165-.377s-.117-.213-.212-.213c-.094 0-.447-.118-.447-.118l-.26.071-.258-.142-.283.119-.235-.119-.094-.235-.165-.071.141-.425.424-.968.565-.944.495-.59.188-.236s.236-.354.236-.448c0-.095.047-1.086.047-1.086l-.306-.637-.142-.52 2.732.662h.165l2.332 1.675.33.425.117 1.628-.047.378-.165.307-.188.188-.07.331-.095.165-.448.071-.423-.141-.26-.071h-.494l-.236.188-.117.26.023.283.141-.26.165-.165.142-.023-.024.236.165.142.4-.118h.189l.023.26.566.07.4-.07.306.094.448.118.164-.023.142-.094.141.448.07-.472-.117-.566-.26-.213.095-.354-.212-.401.024-1.487 1.177 1.393 1.555 1.227s1.06.377 1.154.377c.094 0 .824-.094.824-.094l.471-.778-.353-1.062.141-.355-.754-.99-1.596-1.626-.382-1.277.024-.874-.354-.92-.4-.732.235-.731-.188-1.062-.803-1.808.297-.05-.498-.862.323-.103-.569-.927.24-.128-.427-.7.14-.078-.516-.418.188-.098-1.342-.94z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Riseup</title><path d="M10.5 24l-1.485-9.007-8.961-1.738L8.16 9.06 7.045 0l6.495 6.414 8.271-3.861-4.093 8.16 6.228 6.673-9.024-1.372z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/roamresearch.svg b/assets/lib/simple-icons/icons/roamresearch.svg
new file mode 100644
index 00000000..8f5ddd29
--- /dev/null
+++ b/assets/lib/simple-icons/icons/roamresearch.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Roam Research</title><path d="M11.14.028C7.315.36 4.072 2.263 1.98 5.411.487 7.646-.232 10.589.067 13.211c.32 2.772 1.4 5.124 3.242 7.049 4.643 4.852 12.252 5.001 17.038.343 1.085-1.057 1.738-1.959 2.407-3.303a11.943 11.943 0 0 0-2.429-13.925C18.372 1.495 16.015.388 13.27.078c-.68-.083-1.56-.1-2.13-.05zm4.814 2.567c1.112.437 2.086 1.068 3.032 1.986.62.598 1.323 1.46 1.3 1.599-.016.072-1.626.725-1.792.725-.056 0-.078-.072-.078-.25 0-.138-.011-.248-.028-.248-.01 0-.758.459-1.654 1.023-.897.565-1.666 1.024-1.71 1.024-.05 0-.133-.061-.194-.139-.127-.16-.216-.171-.354-.044-.066.056-.1.166-.1.316v.226l-.824.46c-.46.249-.89.453-.968.453h-.144V8.161c0-.863.016-2.025.038-2.573.034-.99.04-1.007.155-1.007.117 0 .128-.028.155-.514.067-1.107.25-1.284 1.362-1.323l.514-.016.16-.233c.156-.226.167-.226.366-.171.116.028.46.15.764.271zm-7.05.011l.122.183.641-.006c.604 0 .659.011.902.15.355.21.482.497.526 1.145l.033.498.172.016.171.017.017 2.716.011 2.722-.232.138a3.024 3.024 0 0 0-.936.875l-.177.27h-5.24v-.325l-.592-.017-.598-.017-.398-.586c-.332-.493-.454-.626-.758-.825-.415-.265-.404-.193-.139-1.023.659-2.025 2.203-3.945 4.1-5.107.67-.409 1.932-.995 2.159-1.001.055-.005.155.078.216.177zm12.163 4.902c.354.686.725 1.588.725 1.765 0 .071-.1.149-.327.26-.326.154-.393.237-.393.503 0 .155-.166.36-.564.692l-.327.27h-.99v.333h-2.767v-.886l-.332-.42c-.183-.227-.332-.432-.332-.454 0-.022 1.073-.68 2.39-1.46 2.17-1.29 2.402-1.417 2.485-1.34.05.045.244.377.432.737zm-5.556 3.087c.243.354.454.664.46.686.01.027-.394.05-.892.05h-.918l-.2-.332c-.11-.183-.193-.36-.182-.388.028-.083 1.167-.708 1.234-.68.033.011.254.31.498.664zm-7.282 2.567c.254.398.442.741.415.769-.111.1-5.163 3.32-5.213 3.32-.155 0-.813-1.317-1.024-2.048-.249-.863-.265-.769.188-1.045.178-.111.371-.321.637-.703l.387-.548.603-.027.609-.028.017-.21.016-.205H7.77l.459.725zm1.815-.476c.066.122.127.249.127.288 0 .077-.996.686-1.057.647-.05-.028-.714-1.1-.714-1.15 0-.023.343-.028.758-.023l.758.017.128.221zm9.158-.044l.016.21.554.028c.597.027.525 0 1.184.481.011.006.06.194.11.41.095.425.128.459.493.547.288.072.293.133.072.78-.57 1.682-1.787 3.425-3.287 4.686-.642.542-.603.542-.559-.055.045-.614-.027-.935-.254-1.162-.26-.255-.526-.221-1.3.177-.51.26-.698.332-.897.332-.327 0-.631-.094-.825-.255l-.16-.127.393-.36c.42-.381.62-.73.525-.907-.16-.298-.453-.37-1.045-.26-.498.1-.864.105-1.013.028-.188-.105-.288-.376-.26-.741.028-.332.022-.343-.216-.62l-.238-.282v-1.765l.393-.271c.216-.144.559-.448.758-.675l.37-.404h5.17l.017.205zm-7.814 2.157v.758l-.276.282-.277.283.083.238c.1.282.105.52.022.674-.1.194-.293.222-.896.133a8.212 8.212 0 0 0-.764-.083c-.68 0-.703.482-.06 1.256.31.37.31.365-.084.564-.553.277-.902.25-1.389-.116-.41-.304-.647-.393-.968-.36-.21.017-.31.061-.443.2l-.177.177.006.686c0 .382-.011.691-.023.691-.06 0-1.023-.846-1.45-1.272-.442-.448-.995-1.123-.995-1.217 0-.044 1.516-.72 1.615-.72.034 0 .045.084.034.194-.011.105-.006.194.01.194.017 0 1.362-.747 2.989-1.66a204.276 204.276 0 0 1 3.005-1.66c.022 0 .038.343.038.758z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/roblox.svg b/assets/lib/simple-icons/icons/roblox.svg
new file mode 100644
index 00000000..0a51a5c6
--- /dev/null
+++ b/assets/lib/simple-icons/icons/roblox.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Roblox</title><path d="m13.383 14.341-3.726-.958.959-3.726 3.726.959-.96 3.726zM4.913 0 0 19.088 19.088 24 24 4.912 4.912 0z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/robotframework.svg b/assets/lib/simple-icons/icons/robotframework.svg
new file mode 100644
index 00000000..38aed76b
--- /dev/null
+++ b/assets/lib/simple-icons/icons/robotframework.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Robot Framework</title><path d="M4.9565 10.2246c0-1.8766 1.5257-3.4023 3.4-3.4023 1.8766 0 3.4024 1.5257 3.4024 3.4023 0 .6838-.5526 1.2364-1.2341 1.2364-.6818 0-1.2344-.5526-1.2344-1.2364 0-.513-.4185-.9296-.9338-.9296-.5129 0-.9317.4165-.9317.9296 0 .6838-.5523 1.2364-1.234 1.2364-.6818 0-1.2344-.5526-1.2344-1.2364m14.0868 5.717c0 .6842-.5524 1.2363-1.2341 1.2363H6.3575c-.6818 0-1.2344-.552-1.2344-1.2363 0-.6837.5526-1.2363 1.2344-1.2363h11.4517c.6817 0 1.234.5526 1.234 1.2363m-5.351-5.0244c-.3814-.5657-.2323-1.3328.3334-1.7143l2.8628-1.9334c.5613-.3902 1.3329-.2324 1.7144.3289.3815.5654.2323 1.3329-.3334 1.7144l-2.8628 1.9333c-.5442.3831-1.3348.2379-1.7144-.3289zm7.8393 7.6018a.8815.8815 0 0 1-.258.6227l-2.1277 2.1277a.8822.8822 0 0 1-.623.258H5.4772a.8822.8822 0 0 1-.623-.258l-2.1277-2.1277a.8815.8815 0 0 1-.258-.6227V5.4818a.8797.8797 0 0 1 .258-.6228l2.1277-2.1282a.8816.8816 0 0 1 .623-.2578h13.0456a.8816.8816 0 0 1 .623.2578l2.1277 2.1282a.8797.8797 0 0 1 .258.6228V18.519zm1.811-15.0835L20.5644.6577A2.2454 2.2454 0 0 0 18.9775 0H5.0207A2.2445 2.2445 0 0 0 3.433.658L.657 3.4359A2.2449 2.2449 0 0 0 0 5.0228v13.9547c0 .5953.2366 1.1667.6575 1.5872l2.778 2.7779c.421.421.9918.6573 1.5871.6573h13.9548a2.2448 2.2448 0 0 0 1.5872-.6573l2.7779-2.7779A2.2436 2.2436 0 0 0 24 18.9775V5.023a2.2451 2.2451 0 0 0-.6575-1.5875z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/rocketdotchat.svg b/assets/lib/simple-icons/icons/rocketdotchat.svg
new file mode 100644
index 00000000..514e28c6
--- /dev/null
+++ b/assets/lib/simple-icons/icons/rocketdotchat.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Rocket.Chat</title><path d="M22.915 8.321c-.642-.997-1.542-1.879-2.672-2.624-2.185-1.436-5.056-2.227-8.084-2.227-1.012 0-2.009.088-2.976.262a9.84 9.84 0 0 0-2.046-1.509C4.378.848 1.947 1.361.719 1.802a.59.59 0 0 0-.229.964c.866.894 2.299 2.66 1.946 4.267C1.067 8.431.324 10.117.324 11.872c0 1.789.742 3.475 2.112 4.873.352 1.607-1.081 3.374-1.947 4.268a.589.589 0 0 0 .229.963c1.228.442 3.659.955 6.418-.421a9.892 9.892 0 0 0 2.046-1.509c.968.174 1.964.262 2.976.262 3.029 0 5.9-.79 8.084-2.226 1.131-.744 2.031-1.626 2.672-2.624.715-1.11 1.077-2.306 1.077-3.552.001-1.279-.361-2.473-1.076-3.585zm-10.881 9.916c-1.309 0-2.558-.169-3.696-.474l-.832.8A7.609 7.609 0 0 1 5.972 19.7a6.033 6.033 0 0 1-2.17.613c.041-.073.078-.147.117-.221.833-1.531 1.059-2.907.674-4.128-1.363-1.071-2.181-2.442-2.181-3.935 0-3.427 4.308-6.206 9.621-6.206 5.313 0 9.622 2.779 9.622 6.206.001 3.429-4.307 6.208-9.621 6.208zM8.85 12.01c0 .777-.635 1.407-1.418 1.407-.783 0-1.418-.63-1.418-1.407s.635-1.407 1.418-1.407c.783 0 1.418.63 1.418 1.407zm4.563 0c0 .777-.635 1.407-1.418 1.407-.783 0-1.418-.63-1.418-1.407s.635-1.407 1.418-1.407c.783 0 1.418.63 1.418 1.407zm4.565 0c0 .777-.635 1.407-1.418 1.407-.783 0-1.418-.63-1.418-1.407s.635-1.407 1.418-1.407c.783 0 1.418.63 1.418 1.407z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/rocksdb.svg b/assets/lib/simple-icons/icons/rocksdb.svg
new file mode 100644
index 00000000..830b9272
--- /dev/null
+++ b/assets/lib/simple-icons/icons/rocksdb.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>RocksDB</title><path d="m19.299 2.519-2.102.985c.006.005.006.014.006.02a.81.81 0 0 0 .303.337c-2.557 1.32-3.643 3.104-3.643 3.104L4.09 12.228a1.183 1.183 0 0 1-1.598-.482 1.183 1.183 0 0 1 .483-1.596l2.771-1.492A2.226 2.226 0 0 0 6.912 6.84l-1.664.894-2.771 1.494a2.23 2.23 0 0 0 2.109 3.927l1.25-.674c-.09.493-.05 1.019.146 1.516.066.17.11.277.11.277.443.96-.14 1.713-.903 1.713h-.242l-.879 3.828a.93.93 0 0 0-.441-.255l-.438 1.802a.923.923 0 0 0 1.061-.521l1.992-3.578c2.522-.246 3.85-1.954 3.79-4.36 2.611.16 6.093-1.48 7.64-3.726 1.175 1.492 3.395 1.28 4.385.902l.19-.064a.93.93 0 0 0-.11.44l1.857-.02a.933.933 0 0 0-.94-.913h-.01l-3.192-.275-.73-1.914v-2.03a.982.982 0 0 0 .483.126c.527 0 .96-.406 1.01-.918l.764-.508-.035-1.03a.19.19 0 0 0-.192-.187l-.955-.014a.73.73 0 0 0-.898-.252zm.25.508c.166 0 .303.135.303.3a.305.305 0 0 1-.303.304.301.301 0 0 1-.295-.303c0-.166.13-.3.295-.3zM5.48 4.567a.528.528 0 0 0-.232.686l.127.22.924-.495-.12-.221a.528.528 0 0 0-.699-.19zm12.487.235c.156 0 .281.144.281.144s-.045.056-.115.096c.11.045.185.115.185.115s-.075.072-.185.117a.47.47 0 0 1 .115.094s-.125.147-.281.147c-.156 0-.281-.147-.281-.147s.044-.053.115-.094a.558.558 0 0 1-.186-.117s.075-.07.186-.115c-.07-.04-.115-.096-.115-.096s.125-.144.28-.144zm-1.461.693c.156 0 .281.145.281.145s-.045.05-.115.095c.11.046.185.116.185.116s-.075.07-.185.115c.07.04.115.095.115.095s-.125.147-.281.147c-.156 0-.281-.147-.281-.147s.045-.055.115-.095a.674.674 0 0 1-.186-.115s.075-.07.186-.116c-.07-.04-.115-.095-.115-.095s.125-.145.28-.145zm-9.9.05-.924.497.048.096c.09.17.137.352.141.533l.98-.53a2.125 2.125 0 0 0-.197-.501zm11.236.948c.156 0 .281.147.281.147s-.045.055-.115.095c.11.046.185.116.185.116s-.075.07-.185.115c.07.04.115.095.115.095s-.13.147-.281.147c-.156 0-.281-.147-.281-.147s.044-.055.115-.095a.674.674 0 0 1-.186-.115s.075-.07.186-.116c-.07-.04-.115-.095-.115-.095s.125-.147.28-.147zm-2.844.399c.156 0 .281.144.281.144s-.045.056-.115.096c.11.045.186.115.186.115s-.075.07-.186.115c.07.04.115.096.115.096s-.125.146-.281.146c-.156 0-.281-.146-.281-.146s.045-.056.115-.096c-.11-.045-.186-.115-.186-.115s.076-.07.186-.115c-.07-.04-.115-.096-.115-.096s.125-.144.281-.144zm7.807.18c-.015.004-.03.015-.045.025l.004-.004-2.711.972.326.866c.508-.13 1.286-.69 1.834-1.121a.94.94 0 0 0 .045.453L24 7.617a.932.932 0 0 0-1.195-.547zm-6.37.255c.156 0 .282.147.282.147s-.045.055-.115.095a.588.588 0 0 1 .185.116s-.075.07-.185.115c.07.04.115.095.115.095s-.126.147-.281.147c-.156 0-.282-.147-.282-.147s.045-.055.116-.095c-.111-.045-.186-.115-.186-.115s.075-.07.186-.116c-.07-.04-.116-.095-.116-.095s.126-.147.282-.147zm1.778.559c.156 0 .281.144.281.144s-.045.056-.115.096a.56.56 0 0 1 .185.115s-.075.072-.185.117a.47.47 0 0 1 .115.094s-.125.147-.281.147c-.156 0-.281-.147-.281-.147s.045-.053.115-.094c-.11-.045-.186-.117-.186-.117s.075-.07.186-.115c-.07-.04-.115-.096-.115-.096s.125-.144.28-.144zm-3.887.386c.156 0 .281.145.281.145s-.044.055-.115.096c.11.045.186.115.186.115s-.075.072-.186.117a.47.47 0 0 1 .115.094s-.125.146-.28.146c-.157 0-.282-.146-.282-.146s.045-.054.115-.094c-.11-.045-.185-.117-.185-.117s.075-.07.185-.115c-.07-.04-.115-.096-.115-.096s.125-.145.281-.145zm-1.904.25c.156 0 .281.147.281.147s-.045.055-.115.096c.11.045.185.115.185.115s-.075.07-.185.115c.07.04.115.096.115.096s-.125.146-.281.146c-.156 0-.281-.146-.281-.146s.045-.05.115-.096a.674.674 0 0 1-.186-.115s.075-.07.186-.115c-.07-.04-.115-.096-.115-.096s.125-.147.28-.147zm3.611.342c.156 0 .281.147.281.147s-.044.055-.115.095c.11.04.186.116.186.116s-.075.07-.186.115c.07.04.115.096.115.096s-.125.146-.28.146c-.157 0-.282-.146-.282-.146s.045-.056.115-.096c-.11-.045-.185-.115-.185-.115s.075-.07.185-.116c-.07-.04-.115-.095-.115-.095s.125-.147.281-.147zm-2.703.85c.156 0 .281.146.281.146s-.045.054-.115.094c.11.04.186.117.186.117s-.075.07-.186.116c.07.04.115.095.115.095s-.125.145-.28.145c-.157 0-.282-.145-.282-.145s.047-.055.117-.095c-.11-.046-.187-.116-.187-.116s.077-.072.187-.117a.506.506 0 0 1-.117-.094s.125-.146.281-.146zm-2.27.02c.156 0 .282.146.282.146s-.045.055-.115.096c.11.045.185.115.185.115s-.075.07-.185.115c.07.04.115.096.115.096s-.126.144-.281.144c-.156 0-.282-.144-.282-.144s.045-.056.116-.096c-.111-.045-.186-.115-.186-.115s.075-.07.186-.115c-.07-.04-.116-.096-.116-.096s.126-.147.282-.147zm3.758.306c.156 0 .282.146.282.146s-.045.056-.116.096c.11.045.186.115.186.115s-.075.07-.186.116c.07.04.116.095.116.095s-.126.145-.282.145c-.155 0-.28-.145-.28-.145s.044-.055.114-.095a.688.688 0 0 1-.185-.116s.075-.07.185-.115c-.07-.04-.115-.096-.115-.096s.126-.146.281-.146zm-5.662.322c.156 0 .281.145.281.145s-.044.055-.115.096c.11.04.186.115.186.115s-.075.07-.186.115c.07.04.116.096.116.096s-.126.146-.282.146c-.155 0-.281-.146-.281-.146s.045-.056.115-.096c-.11-.045-.185-.115-.185-.115s.075-.07.185-.115c-.07-.04-.115-.096-.115-.096s.126-.145.281-.145zm3.356.803c.155 0 .281.147.281.147s-.045.055-.115.095a.56.56 0 0 1 .185.115s-.075.07-.185.116c.07.04.115.095.115.095s-.126.145-.281.145c-.156 0-.282-.145-.282-.145s.045-.055.116-.095c-.11-.046-.186-.116-.186-.116s.075-.07.186-.115c-.07-.04-.116-.095-.116-.095s.126-.147.282-.147zm-1.848.262c.156 0 .281.146.281.146s-.045.054-.115.094a.49.49 0 0 1 .186.117s-.075.07-.186.115c.07.04.115.096.115.096s-.125.145-.28.145c-.157 0-.282-.145-.282-.145s.045-.055.115-.096c-.11-.045-.185-.115-.185-.115s.075-.072.185-.117c-.07-.04-.115-.094-.115-.094s.125-.146.281-.146zm-3.316.08c.155 0 .28.146.28.146s-.044.056-.114.096c.11.045.185.115.185.115s-.075.07-.185.115c.07.04.115.096.115.096s-.126.145-.281.145c-.156 0-.282-.145-.282-.145s.047-.055.118-.096a.72.72 0 0 1-.188-.115s.077-.07.188-.115c-.07-.04-.118-.096-.118-.096s.126-.146.282-.146zm16.646.527-5.705 1.428-2.23 2.53-3.25.08-1.227 2.814-3.193.834-2 1.824h16.093c.834 0 1.512-.68 1.512-1.514zm-15.053.217c.156 0 .282.144.282.144s-.045.056-.116.096c.11.04.186.115.186.115s-.075.07-.186.116c.07.04.116.095.116.095s-.126.147-.282.147c-.155 0-.28-.147-.28-.147s.044-.055.114-.095a.688.688 0 0 1-.185-.116s.075-.07.185-.115c-.07-.04-.115-.096-.115-.096s.126-.144.281-.144zm-1.898 1.014c.156 0 .281.146.281.146s-.047.056-.117.096a.72.72 0 0 1 .188.115s-.077.07-.188.115c.07.04.117.096.117.096s-.13.15-.281.145c-.156 0-.281-.145-.281-.145s.045-.056.115-.096c-.11-.045-.186-.115-.186-.115s.075-.07.186-.115c-.07-.04-.115-.096-.115-.096s.125-.146.281-.146zm1.582.552c.156 0 .281.147.281.147s-.045.055-.115.096c.11.045.186.115.186.115s-.075.07-.186.115c.07.04.115.096.115.096s-.125.144-.281.144c-.156 0-.281-.144-.281-.144s.045-.056.115-.096c-.11-.045-.186-.115-.186-.115s.075-.07.186-.115c-.07-.04-.115-.096-.115-.096s.125-.147.281-.147zm-1.086 1.256c.156 0 .281.147.281.147s-.045.055-.115.095c.11.04.186.116.186.116s-.075.07-.186.115c.07.04.115.096.115.096s-.125.144-.28.144c-.157 0-.282-.144-.282-.144s.045-.056.115-.096c-.11-.045-.186-.115-.186-.115s.076-.07.186-.116c-.07-.04-.115-.095-.115-.095s.125-.147.281-.147zm-3.203 1.155-2.709 2.325a.969.969 0 0 0-.205-.473L0 19.277a.928.928 0 0 0 1.195.192l2.649-1.201z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/rockylinux.svg b/assets/lib/simple-icons/icons/rockylinux.svg
new file mode 100644
index 00000000..af412a53
--- /dev/null
+++ b/assets/lib/simple-icons/icons/rockylinux.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Rocky Linux</title><path d="M23.332 15.957c.433-1.239.668-2.57.668-3.957 0-6.627-5.373-12-12-12S0 5.373 0 12c0 3.28 1.315 6.251 3.447 8.417L15.62 8.245l3.005 3.005zm-2.192 3.819l-5.52-5.52L6.975 22.9c1.528.706 3.23 1.1 5.025 1.1 3.661 0 6.94-1.64 9.14-4.224z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/roku.svg b/assets/lib/simple-icons/icons/roku.svg
index 8f22631b..17dde5e3 100644
--- a/assets/lib/simple-icons/icons/roku.svg
+++ b/assets/lib/simple-icons/icons/roku.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Roku icon</title><path d="M16.34 9.853l-2.254 2.254v-2.26H12.13v5.744h1.957v-2.33l2.353 2.33h2.46l-2.988-2.99 2.477-2.476v3.411c0 1.133.679 2.177 2.393 2.177.815 0 1.56-.462 1.922-.88l.88.759H24v-5.74h-1.951v3.718c-.22.384-.528.627-1.002.627-.482 0-.703-.286-.703-1.198V9.853zm-4.591 2.869A3.004 3.004 0 1 1 8.738 9.73a2.997 2.997 0 0 1 3.011 2.99m-3.011-1.57c-.518 0-.956.704-.956 1.572 0 .867.438 1.57.956 1.57.528 0 .968-.702.968-1.57 0-.869-.438-1.572-.968-1.572zm-2.206 4.447H4.313L2.55 13.153h-.594v2.44H0V8.26h2.8c1.616 0 2.935 1.1 2.935 2.45 0 .826-.505 1.562-1.273 2.013l2.07 2.875m-2.75-4.888A1.226 1.226 0 0 0 2.56 9.478h-.604v2.453h.605a1.225 1.225 0 0 0 1.22-1.221Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Roku</title><path d="M16.34 9.853l-2.254 2.254v-2.26H12.13v5.744h1.957v-2.33l2.353 2.33h2.46l-2.988-2.99 2.477-2.476v3.411c0 1.133.679 2.177 2.393 2.177.815 0 1.56-.462 1.922-.88l.88.759H24v-5.74h-1.951v3.718c-.22.384-.528.627-1.002.627-.482 0-.703-.286-.703-1.198V9.853zm-4.591 2.869A3.004 3.004 0 1 1 8.738 9.73a2.997 2.997 0 0 1 3.011 2.99m-3.011-1.57c-.518 0-.956.704-.956 1.572 0 .867.438 1.57.956 1.57.528 0 .968-.702.968-1.57 0-.869-.438-1.572-.968-1.572zm-2.206 4.447H4.313L2.55 13.153h-.594v2.44H0V8.26h2.8c1.616 0 2.935 1.1 2.935 2.45 0 .826-.505 1.562-1.273 2.013l2.07 2.875m-2.75-4.888A1.226 1.226 0 0 0 2.56 9.478h-.604v2.453h.605a1.225 1.225 0 0 0 1.22-1.221Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/rollsroyce.svg b/assets/lib/simple-icons/icons/rollsroyce.svg
new file mode 100644
index 00000000..61d098d8
--- /dev/null
+++ b/assets/lib/simple-icons/icons/rollsroyce.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Rolls-Royce</title><path d="M13.363 3.663H9.961v6.865c-.41.196-.857.368-1.341.511a7.94 7.94 0 0 1-.776.182V3.968s.06-1.041-.519-1.393v-.13h5.434c.244.297.463.697.604 1.218zm.958 9.391c2.465-1.182 3.652-3.262 3.674-5.646.015-1.622-.557-2.618-1.197-3.148a1.883 1.883 0 0 0-.117-.089 6.454 6.454 0 0 0-.612-1.618c.118.017.227.036.324.057 1.788.38 3.225 1.436 3.905 3.474.554 1.662.285 3.724-.904 5.377-.281.391-1.03 1.226-1.89 1.842-.156.112-.25.174-.414.277 1.077 1.726 1.608 2.717 2.295 4.6.6 1.644 1.055 3.83 1.117 4.344.15 1.223.515 1.32.599 1.345V24h-4.295v-.13c.132-.07 1.293-.546 1.299-2.367.006-1.337-.32-2.808-.914-4.46a22.925 22.925 0 0 0-1.277-2.829l-.014-.021a8.355 8.355 0 0 1-.872.321c-.223-.516-.45-.983-.707-1.459zm-4.36-.144v1.116c.325-.014 1.34-.096 2.254-.274.207.468.387.912.511 1.257l.017.048a26.3 26.3 0 0 1-1.23.166 33.2 33.2 0 0 1-1.552.131v7.21c0 .159.037 1.008.59 1.306V24H7.254v-.13c.538-.283.59-1.147.59-1.305v-9.27a18.96 18.96 0 0 0 2.118-.385zm.457-11.66l-.462-.007H5.662v10.575c.426-.019 2.013-.152 3.052-.46 3.465-1.025 5.12-3.447 5.146-6.293.015-1.655-.568-2.672-1.222-3.212-.407-.337-.946-.496-1.338-.554-.22-.044-.71-.05-.882-.05zM3.502 20.557V1.554S3.564.492 2.972.133V0h7.346c.613.001 1.415.063 1.907.17 1.824.387 3.291 1.464 3.985 3.544.565 1.696.291 3.8-.922 5.487-.287.4-1.05 1.25-1.93 1.88a6.998 6.998 0 0 1-.422.281c1.1 1.762 1.641 2.773 2.343 4.695.612 1.677 1.076 3.909 1.14 4.432.151 1.248.525 1.374.61 1.4v.132h-4.382l-.001-.133c.136-.072 1.32-.583 1.326-2.442.007-1.363-.326-2.865-.932-4.55a23.36 23.36 0 0 0-1.305-2.887l-.014-.022c-.582.265-1.812.624-2.61.775-.571.108-1.15.197-1.865.277-.623.07-1.227.111-1.584.134v7.384c0 .161.038 1.028.603 1.332v.132H2.9v-.132c.549-.29.603-1.17.603-1.332Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/rollup-dot-js.svg b/assets/lib/simple-icons/icons/rollup-dot-js.svg
deleted file mode 100644
index d943c69c..00000000
--- a/assets/lib/simple-icons/icons/rollup-dot-js.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>rollup.js icon</title><path d="M3.42 0a.37.37 0 0 0-.369.37v19.516c.577-1.488 1.557-3.617 3.138-6.53 5.7-10.48 6.447-11.537 9.416-11.537 1.56 0 3.134.704 4.152 1.955A7.962 7.962 0 0 0 13.102 0zm12.72 2.544c-1.19.01-2.257.466-2.698 1.498-.967 2.256 1.624 4.767 2.757 4.568 1.442-.255-.255-3.563-.255-3.563 2.205 4.156 1.697 2.884-2.29 6.7S5.596 23.62 5.002 23.958a.477.477 0 0 1-.08.043h15.637a.373.373 0 0 0 .33-.538l-4.088-8.092a.37.37 0 0 1 .144-.488A7.96 7.96 0 0 0 20.95 7.97c0-1.425-.373-2.761-1.03-3.92-.927-.952-2.43-1.516-3.779-1.506z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/rollupdotjs.svg b/assets/lib/simple-icons/icons/rollupdotjs.svg
new file mode 100644
index 00000000..c974ed80
--- /dev/null
+++ b/assets/lib/simple-icons/icons/rollupdotjs.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>rollup.js</title><path d="M3.42.0002a.37.37 0 00-.369.37V19.885c.577-1.488 1.557-3.6168 3.1378-6.5297C11.8885 2.876 12.6355 1.8191 15.6043 1.8191c1.56 0 3.1338.704 4.1518 1.9549A7.9616 7.9616 0 0013.1014.0002zM16.1393 2.544c-1.19.01-2.257.466-2.6979 1.498-.967 2.2558 1.624 4.7667 2.7569 4.5677 1.4419-.255-.255-3.5628-.255-3.5628 2.2049 4.1558 1.6969 2.8838-2.2899 6.6996C9.6666 15.5623 5.596 23.6188 5.002 23.9568a.477.477 0 01-.08.043H20.558a.373.373 0 00.33-.538l-4.0878-8.0915a.37.37 0 01.144-.488 7.9596 7.9596 0 004.0048-6.9126c0-1.4249-.373-2.7608-1.03-3.9198-.9269-.9519-2.4298-1.5159-3.7787-1.5059z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/rome.svg b/assets/lib/simple-icons/icons/rome.svg
new file mode 100644
index 00000000..a1c24ac7
--- /dev/null
+++ b/assets/lib/simple-icons/icons/rome.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Rome</title><path d="M12 0a16.941 16.941 0 00-2.283.154.63.63 0 00-.485.895l.172.361 1.338 2.8a.633.633 0 00.608.356 11.695 11.695 0 011.3 0 .632.632 0 00.608-.355l1.338-2.8.172-.362a.63.63 0 00-.485-.895A16.941 16.941 0 0012 0zm4.309 1.902a.629.629 0 00-.786.32l-.949 1.989a.629.629 0 00.36.863c3.193 1.134 5.466 4.063 5.466 7.498v.627H24v-.627c0-4.864-3.191-9.021-7.691-10.67zm-8.62.002C3.191 3.551 0 7.706 0 12.572v.627h3.6v-.627c0-3.435 2.275-6.364 5.466-7.498a.629.629 0 00.358-.863l-.95-1.986a.629.629 0 00-.785-.32zM12 5.714c-3.976 0-7.2 3.07-7.2 6.858V24h3.6V12.572c0-1.895 1.612-3.43 3.6-3.43s3.6 1.536 3.6 3.43V24h3.6V12.572c0-3.787-3.224-6.857-7.2-6.857zM0 14.4V24h3.6v-9.6zm20.4 0V24H24v-9.6z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/roots.svg b/assets/lib/simple-icons/icons/roots.svg
index 3aea3419..ab365f66 100644
--- a/assets/lib/simple-icons/icons/roots.svg
+++ b/assets/lib/simple-icons/icons/roots.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Roots icon</title><path d="M8.513 12.27L2.6 18.177a.244.244 0 0 1-.174.072l-.02-.001a.248.248 0 0 1-.178-.102 11.973 11.973 0 0 1-.889-1.452.247.247 0 0 1 .045-.287l5.638-5.628a9.403 9.403 0 0 0 2.776-6.694.245.245 0 0 1 .49 0v3.911a6 6 0 0 1-1.774 4.274zM18 .842a.242.242 0 0 0-.245 0 .246.246 0 0 0-.122.212v10.855a6 6 0 0 0 1.773 4.273l1.997 1.995a.246.246 0 0 0 .173.072l.021-.001a.256.256 0 0 0 .18-.102A11.902 11.902 0 0 0 24 11.21c0-4.255-2.298-8.228-6-10.367zM6.367 4.085V1.054A.244.244 0 0 0 6 .842C2.3 2.982 0 6.954 0 11.21c0 .34.018.705.056 1.115.01.094.072.174.161.208a.294.294 0 0 0 .084.014.245.245 0 0 0 .172-.071l4.123-4.118a5.999 5.999 0 0 0 1.771-4.273zm10.614 14.52a9.402 9.402 0 0 1-2.778-6.696V7.996a.245.245 0 1 0-.489 0 9.401 9.401 0 0 1-2.776 6.696l-5.915 5.905a.244.244 0 0 0-.071.193.243.243 0 0 0 .102.18A11.929 11.929 0 0 0 12 23.192a11.93 11.93 0 0 0 6.947-2.222.237.237 0 0 0 .1-.18.239.239 0 0 0-.068-.193l-1.998-1.992Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Roots</title><path d="M8.513 12.27L2.6 18.177a.244.244 0 0 1-.174.072l-.02-.001a.248.248 0 0 1-.178-.102 11.973 11.973 0 0 1-.889-1.452.247.247 0 0 1 .045-.287l5.638-5.628a9.403 9.403 0 0 0 2.776-6.694.245.245 0 0 1 .49 0v3.911a6 6 0 0 1-1.774 4.274zM18 .842a.242.242 0 0 0-.245 0 .246.246 0 0 0-.122.212v10.855a6 6 0 0 0 1.773 4.273l1.997 1.995a.246.246 0 0 0 .173.072l.021-.001a.256.256 0 0 0 .18-.102A11.902 11.902 0 0 0 24 11.21c0-4.255-2.298-8.228-6-10.367zM6.367 4.085V1.054A.244.244 0 0 0 6 .842C2.3 2.982 0 6.954 0 11.21c0 .34.018.705.056 1.115.01.094.072.174.161.208a.294.294 0 0 0 .084.014.245.245 0 0 0 .172-.071l4.123-4.118a5.999 5.999 0 0 0 1.771-4.273zm10.614 14.52a9.402 9.402 0 0 1-2.778-6.696V7.996a.245.245 0 1 0-.489 0 9.401 9.401 0 0 1-2.776 6.696l-5.915 5.905a.244.244 0 0 0-.071.193.243.243 0 0 0 .102.18A11.929 11.929 0 0 0 12 23.192a11.93 11.93 0 0 0 6.947-2.222.237.237 0 0 0 .1-.18.239.239 0 0 0-.068-.193l-1.998-1.992Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/rootsbedrock.svg b/assets/lib/simple-icons/icons/rootsbedrock.svg
new file mode 100644
index 00000000..bee0e74a
--- /dev/null
+++ b/assets/lib/simple-icons/icons/rootsbedrock.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Roots Bedrock</title><path d="M.4 0L0 .4v5.2l.343.343 11.314-1.886L12 4.4V8l11.52-1.92.48-.48V.4l-.4-.4zm.08 9.92L0 10.4v3.2l.343.343L12 12V8zM12 12v4l11.52-1.92.48-.48v-3.2l-.343-.343zM.48 17.92L0 18.4v5.2l.4.4h23.2l.4-.4v-5.2l-.343-.343-11.314 1.886L12 19.6V16L.48 17.92z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/rootssage.svg b/assets/lib/simple-icons/icons/rootssage.svg
new file mode 100644
index 00000000..ff562a3c
--- /dev/null
+++ b/assets/lib/simple-icons/icons/rootssage.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Roots Sage</title><path d="M7.384 4.232l1.71 5.075-4.478-3.136L0 9.403l1.753 5.2.01.03H7.3L2.82 17.77l1.754 5.2.01.03h5.705L12 17.925l1.7 5.045.01.03h5.707l1.763-5.23-4.48-3.137h5.537L24 9.403l-4.616-3.232-4.479 3.136 1.711-5.075L12 1zm.105 10.342l1.723-5.111h5.576l1.723 5.111-4.51 3.16z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ros.svg b/assets/lib/simple-icons/icons/ros.svg
new file mode 100644
index 00000000..49108a9b
--- /dev/null
+++ b/assets/lib/simple-icons/icons/ros.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ROS</title><path d="M2.807 0C1.353 0 .173 1.22.173 2.722c0 1.504 1.18 2.723 2.634 2.723 1.455 0 2.635-1.22 2.635-2.723S4.262 0 2.807 0zM12 0c-1.455 0-2.634 1.22-2.634 2.722 0 1.504 1.18 2.723 2.634 2.723 1.455 0 2.634-1.22 2.634-2.723S13.454 0 12 0zm9.193 0c-1.455 0-2.635 1.22-2.635 2.722 0 1.504 1.18 2.723 2.635 2.723 1.455 0 2.634-1.22 2.634-2.723S22.647 0 21.193 0zM2.807 9.277C1.353 9.277.173 10.497.173 12s1.18 2.722 2.634 2.722c1.455 0 2.635-1.219 2.635-2.722 0-1.504-1.18-2.723-2.635-2.723zm9.193 0c-1.455 0-2.634 1.22-2.634 2.723s1.18 2.722 2.634 2.722c1.455 0 2.634-1.219 2.634-2.722 0-1.504-1.18-2.723-2.634-2.723zm9.193 0c-1.455 0-2.635 1.22-2.635 2.723s1.18 2.722 2.635 2.722c1.455 0 2.634-1.219 2.634-2.722 0-1.504-1.18-2.723-2.634-2.723zM2.807 18.555c-1.454 0-2.634 1.22-2.634 2.722C.173 22.781 1.353 24 2.807 24c1.455 0 2.635-1.22 2.635-2.723s-1.18-2.722-2.635-2.722zm9.193 0c-1.455 0-2.634 1.22-2.634 2.722C9.366 22.781 10.546 24 12 24c1.455 0 2.634-1.22 2.634-2.723s-1.18-2.722-2.634-2.722zm9.193 0c-1.455 0-2.635 1.22-2.635 2.722 0 1.504 1.18 2.723 2.635 2.723 1.455 0 2.634-1.22 2.634-2.723s-1.18-2.722-2.634-2.722z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/rossmann.svg b/assets/lib/simple-icons/icons/rossmann.svg
new file mode 100644
index 00000000..32d498f5
--- /dev/null
+++ b/assets/lib/simple-icons/icons/rossmann.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Rossmann</title><path d="M20.5326 10.514c0-.032-.016-.048-.048-.048h-.2076c-.032 0-.048.016-.048.048v2.0453c0 .0479-.016.0639-.048.032-.1118-.112-1.9014-1.9974-1.9973-2.0933-.032-.032-.0479-.032-.0639-.032H17.96c-.032 0-.0479.016-.0479.048v2.924c0 .032.016.048.048.048h.2077c.032 0 .0479-.016.0479-.048V11.361c0-.08.048-.032.064-.016.1277.1438 1.8055 1.9014 1.9973 2.1092.032.032.0479.032.0639.032h.1278c.032 0 .048-.016.048-.048.016.016.016-2.9241.016-2.9241zm-16.3781-.1758c-.9108 0-1.6618.735-1.6618 1.6618 0 .9108.735 1.6618 1.6618 1.6618.9267 0 1.6617-.735 1.6617-1.6618s-.751-1.6618-1.6617-1.6618zm0 .2876c.4154 0 .783.1758 1.0226.4634h-.4794l.048-.0959c.048-.1118-.1438-.1917-.1918-.0798l-.0799.1917H3.1318a1.3312 1.3312 0 0 1 1.0227-.4794ZM2.7963 12c0-.2557.0799-.5113.2077-.719 0 0 1.2623.0479 1.2783.0479.016 0 .032 0 .048.032.016.016.1278.2876.1278.3036 0 .016 0 .0479-.048.0479H3.1798c-.08 0-.1598.0639-.1598.1438v.4634c0 .032.016.0639.032.0959.0319.0479.0958.0639.0958.0639.016 0 .016 0 .016-.016v-.5912c0-.016.016-.016.016-.016h.1278s.016 0 0 .016c-.048.0639-.064.1278-.064.2237 0 .1598.1279.2876.1599.3036 0 0 .016.016 0 .032 0 .016-.1279.2396-.1279.2396 0 .016-.016.032 0 .048l.5912.5912c-.5912-.096-1.0705-.6552-1.0705-1.3103Zm1.422 1.3582s-.5752-.5752-.6071-.6232c-.016-.016 0-.032 0-.032 0-.016.2077-.3994.2237-.4154.016-.016.032-.016.032-.016h.1278s.016 0 .016.016c-.016.016-.1918.3675-.1918.3835v.032c0 .016.6232.6231.6232.6231-.064.016-.1438.032-.2237.032zm.4475-.0959-.5433-.5433c-.016-.016 0-.032 0-.032l.1917-.3834c.016-.016.016-.016.032-.016h.3356c.016 0 .016.016.016.016l-.096.2077v.032l.1279.0799c.016.016.032 0 .032-.016l.1278-.3036c.016-.016.016-.016.032-.016h.1118s.016 0 .016.016-.0959.2237-.0959.2237v.032l.1278.0798c.016.016.032 0 .032-.016s.1438-.3195.1438-.3355c.032-.0799.016-.2237-.1438-.2237h-.1918c-.016 0-.032-.016-.032-.016v-.6391c0-.032.016-.032.032-.048.016 0 .3516-.0479.3516-.0479.1278.2077.2077.4474.2077.719.032.5273-.3196 1.0227-.815 1.2304zm2.1571-2.173a.432.432 0 0 1 .3675-.4315c.2077-.048.4634 0 .6072.1758.016.016.032.0479.048.0798.016.016.0319.032.0639.048h.0798c.016 0 .048-.016.048-.048 0-.0639-.016-.2716-.016-.3035 0-.048-.016-.048-.048-.064a1.3263 1.3263 0 0 0-.3355-.0958c-.2716-.048-.5592-.032-.8149.0799-.2397.0958-.4154.2876-.4794.5432-.0479.1918-.032.3995.064.5753.0958.1598.2396.2556.4154.3355.1758.08.3515.1438.5113.2077.2077.096.3835.1918.4314.3676.064.2237.032.4474-.1438.6071-.2396.2078-.8788.1758-1.1025-.1438-.032-.0639-.048-.0958-.1118-.0958-.032 0-.096 0-.096.048v.3355c0 .032 0 .0639.048.0798.064.032.1438.048.2077.08.1119.0319.2397.0479.3516.0638.783.08 1.3422-.3195 1.3422-.9906 0-.2397-.0959-.4794-.2876-.6232-.1758-.1278-.3835-.2077-.5912-.2716-.1119-.032-.2557-.08-.3516-.1438-.1438-.096-.2077-.2397-.2077-.4155m-4.458 2.3329c-.048-.064-.9268-1.1824-.9748-1.2463-.016-.032-.016-.048.048-.064.1278-.0479.5752-.2556.5912-.7829.016-.4474-.2876-.8469-.783-.8469H.048c-.032-.016-.0479 0-.0479.032v2.924c0 .032.016.048.048.048h.3674c.032 0 .048-.016.048-.048v-1.2303c0-.032.016-.048.048-.048H.735c.016 0 .048 0 .08.048.0319.032.9746 1.2623.9746 1.2623.016.032.048.032.064.032h.4473c.064 0 .08-.048.064-.0799zM.719 11.8881H.5113c-.016 0-.032-.032-.032-.0639v-1.0546c0-.032.016-.0479.048-.0479h.3196c.3355 0 .6551.0959.6551.5273 0 .2397-.1119.6392-.783.6392zM24 10.514c0-.032-.016-.048-.048-.048h-.2077c-.032 0-.0479.016-.0479.048v2.0453c0 .0479-.016.0639-.048.032-.1118-.112-1.9014-1.9974-1.9973-2.0933-.032-.032-.048-.032-.0639-.032h-.1598c-.032 0-.048.016-.048.048v2.924c0 .032.016.048.048.048h.2077c.032 0 .048-.016.048-.048V11.361c0-.08.048-.032.0639-.016.1278.1438 1.8056 1.9014 1.9973 2.1092.032.032.048.032.064.032h.1278c.032 0 .048-.016.048-.048C24 13.454 24 10.514 24 10.514Zm-14.8282.5752a.432.432 0 0 1 .3675-.4314c.2077-.048.4634 0 .6072.1758.016.016.032.0479.048.0798.0159.016.0319.032.0638.048h.064c.016 0 .0479-.016.0479-.048 0-.0639-.016-.2716-.016-.3035 0-.048-.016-.048-.048-.064-.0798-.0479-.1917-.0798-.3195-.1118-.2717-.048-.5593-.032-.815.0799-.2396.0958-.4154.2876-.4793.5433-.048.1917-.032.3994.064.5752.0958.1598.2396.2556.4154.3355.1757.08.3515.1438.5113.2078.2077.0958.3835.1917.4314.3675.064.2237.032.4474-.1438.6072-.2397.2077-.8788.1757-1.1025-.1438-.032-.064-.048-.096-.1119-.096-.032 0-.0958 0-.0958.048v.3356c0 .032 0 .0639.0479.0799.0639.032.1438.048.2077.0799.1119.032.2397.0479.3515.0639.783.0799 1.3423-.3196 1.3423-.9907 0-.2397-.096-.4794-.2877-.6232-.1757-.1278-.3835-.2077-.5912-.2716-.1118-.032-.2556-.0799-.3515-.1438-.1438-.08-.2077-.2237-.2077-.3995m7.2383 1.1345c.016.016 0 .048-.032.048h-.8468c-.032 0-.048-.016-.032-.048s.4155-.9587.4315-.9907c.016-.032.032-.032.0479 0 0 .032.4154.9747.4314.9907zm-.2237-1.6618c-.032-.0799-.0799-.0959-.1118-.0959h-.1279c-.016 0-.032 0-.0479.032-.016.032-1.2463 2.8922-1.2623 2.94-.016.032-.016.064.032.064h.2236c.016 0 .032 0 .048-.048.016-.0479.3515-.8149.3675-.8468.016-.032.048-.032.0799-.032h1.1185c.016 0 .048 0 .064.032 0 0 .3674.8309.3674.8469.016.032.032.0479.064.0479h.4154c.032 0 .048-.032.032-.064 0-.0159-1.2304-2.8122-1.2624-2.876zm-2.221-.0639c0-.032-.016-.032-.048-.032h-.1597c-.016 0-.032 0-.032.016-.016.016-.9268 2.1731-.9428 2.205-.016.032-.032.032-.0479 0 0-.0159-.9907-2.173-1.0066-2.189-.016-.016-.016-.032-.048-.032h-.1598c-.016 0-.032 0-.032.032 0 .016-.4633 2.956-.4633 2.956 0 .016 0 .048.032.048h.2077c.032 0 .0479-.016.0639-.048 0-.0319.3036-1.9813.3195-1.9973 0-.032.016-.032.032 0 .016.016.9268 2.0133.9268 2.0293 0 .016.016.016.032.016h.0958c.016 0 .016 0 .032-.016 0-.016.8468-1.9813.8628-2.0133.016-.032.016-.032.032 0 0 .016.3515 1.9814.3515 1.9973 0 .032.016.032.048.032h.3994c.032 0 .048-.032.048-.048-.032-.0798-.5433-2.94-.5433-2.956z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/rotaryinternational.svg b/assets/lib/simple-icons/icons/rotaryinternational.svg
new file mode 100644
index 00000000..b3e1afab
--- /dev/null
+++ b/assets/lib/simple-icons/icons/rotaryinternational.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Rotary International</title><path d="m6.781 18.095-.798.947-.249-.216.831-.914c-.132-.116-.232-.232-.349-.349l.183-.182c.316.299.598.531.93.813l-.165.2c-.117-.117-.25-.2-.383-.299m-1.595-2.359-1.297.748c.05.083.1.2.15.282l1.297-.764c-.067-.1-.1-.166-.15-.265m.83 1.195-.697.598.366-1.03c-.067-.082-.1-.15-.167-.232l-1.263.864c.05.082.133.166.183.249l.748-.532-.35 1.047c.067.066.117.182.217.249l1.163-.997c-.066-.066-.15-.132-.2-.215m1.696 1.86c.2.116.4.232.632.332l.133-.216c-.316-.166-.599-.349-.865-.515l-.847 1.246c.316.216.615.398.947.581l.133-.216-.681-.399.232-.332.45.266.132-.216a15.164 15.164 0 0 1-.465-.266l.2-.265zm4.222-4.667a2.149 2.149 0 0 1-2.144-2.143c0-1.179.964-2.142 2.144-2.142 1.18 0 2.144.963 2.144 2.142a2.15 2.15 0 0 1-2.144 2.143m.033-.698A1.44 1.44 0 0 0 13.397 12c0-.648-.45-1.213-1.081-1.379 0-.066-.034-.365-.034-.365h-.714s-.017.316-.017.382c-.593.18-.998.726-.997 1.345 0 .798.632 1.445 1.413 1.445M8.809 3.895v-.066c0-.382.282-.715.681-.731a.748.748 0 0 1 .815.68v.067a.757.757 0 0 1-.698.748c-.383.033-.748-.283-.798-.698m.282-.016a.46.46 0 0 0 .516.432c.25-.034.449-.233.449-.482.016-.017 0-.033 0-.05-.017-.266-.25-.449-.516-.432a.452.452 0 0 0-.432.481v.05h-.016zm3.125.365h-.299l.366-.78.332-.698.333.033.182.664.25.897c-.117-.016-.2-.033-.316-.05l-.083-.282a4.037 4.037 0 0 0-.632-.05l-.133.266zm.25-.515c.166 0 .315.033.465.05l-.083-.316-.1-.315-.15.315-.132.266zm-1.496-.664.133 1.229.315-.034-.132-1.212.481-.033-.016-.266c-.549.033-.765.05-1.313.133l.033.266.499-.083zm.05 16.608-.117.913-.432-.996c-.1-.017-.166-.05-.266-.067l-.35 1.479c.1.033.217.033.317.066l.182-.914.45 1.014c.099.016.215.05.331.05l.167-1.529c-.084-.016-.183 0-.283-.016m8.709-3.19-1.097-.597-.133.25 1.313.73.515-.914-.232-.116zm-1.662.233 1.496.499c-.034.05-.067.083-.1.132-.034.034-.05.067-.083.117l-.266-.1-.416.515.15.232c-.066.067-.133.15-.2.216l-.598-.98-.216-.365.233-.266zm.166.332.183.283.166.282.216-.282.05-.067-.615-.216zm-1.579 2.01c.066.117.1.248.1.382 0 .1-.017.216-.066.3a.742.742 0 0 1-1.33.066.125.125 0 0 0-.033-.067.652.652 0 0 1-.067-.299c.017-.265.133-.515.382-.647a.723.723 0 0 1 1.015.265m-.167.366a.485.485 0 0 0-.714-.432.457.457 0 0 0-.25.415c0 .083.017.166.067.233.017.016.033.05.05.066.15.166.399.216.598.1.05-.034.1-.067.133-.1.083-.05.116-.166.116-.282m.732-1.777.631.664-1.047-.315c-.083.066-.15.082-.216.149l.914 1.23c.083-.067.166-.134.233-.2l-.549-.73 1.064.315c.066-.066.183-.133.25-.216L17.45 17.43c-.1.066-.166.15-.232.216M23.917 12c0 .133.004.282-.013.399v.033l-.033.016a3.914 3.914 0 0 1-1.833.499c-.016.083-.082.68-.1.764.616.182 1.214.514 1.63.946l.016.034v.033a3.531 3.531 0 0 1-.2.747l-.016.034h-.034a3.602 3.602 0 0 1-1.878 0c-.033.082-.265.63-.282.714.548.349 1.03.83 1.313 1.328l.017.034-.017.033c-.083.2-.25.498-.399.681l-.016.033h-.034a3.844 3.844 0 0 1-1.811-.481l-.482.647c.449.465.798 1.063.93 1.645l.017.033-.016.016a2.855 2.855 0 0 1-.549.549l-.017.016-.05-.016c-.565-.15-1.163-.499-1.628-.947-.067.05-.549.415-.615.481.299.548.482 1.196.482 1.778v.082l-.034.017c-.182.133-.465.316-.681.399l-.016.016-.034-.016a3.913 3.913 0 0 1-1.33-1.329c-.082.033-.664.282-.73.316.082.315.132.63.132.946a3.4 3.4 0 0 1-.133.93v.034l-.033.016c-.2.083-.515.166-.748.2h-.033l-.016-.017a3.641 3.641 0 0 1-.948-1.628c-.083 0-.681.083-.764.1-.017.648-.183 1.312-.5 1.827l-.016.033h-.033c-.2.034-.548.034-.764 0h-.034l-.016-.033a3.89 3.89 0 0 1-.499-1.827c-.083-.017-.715-.1-.814-.1a3.776 3.776 0 0 1-.93 1.628l-.017.017h-.034a3.545 3.545 0 0 1-.748-.216l-.016-.017-.017-.033a3.43 3.43 0 0 1-.133-.947c0-.316.05-.631.133-.947-.083-.033-.631-.249-.698-.299a3.869 3.869 0 0 1-1.346 1.346l-.033.016-.034-.016c-.216-.1-.498-.25-.681-.399l-.017-.017v-.066c0-.581.183-1.229.482-1.794-.066-.05-.581-.432-.648-.498a3.849 3.849 0 0 1-1.629.93l-.033.017-.033-.017a4.287 4.287 0 0 1-.549-.548l-.016-.033.016-.033c.15-.582.499-1.163.948-1.628a76.46 76.46 0 0 0-.499-.648c-.565.316-1.23.498-1.811.481h-.034l-.016-.016a4.583 4.583 0 0 1-.4-.68l-.016-.034.017-.034a3.913 3.913 0 0 1 1.33-1.328c-.034-.083-.267-.648-.317-.714-.631.15-1.313.166-1.878 0l-.033-.017-.017-.033a3.534 3.534 0 0 1-.199-.748v-.033l.017-.033c.415-.432 1.014-.764 1.628-.947 0-.083-.1-.714-.116-.814-.648-.016-1.313-.182-1.828-.481l-.033-.017v-.033C0 12.232 0 12.082 0 11.95c0-.133 0-.266.017-.382v-.034l.033-.016a3.748 3.748 0 0 1 1.828-.482c.017-.083.1-.697.1-.78-.615-.183-1.213-.515-1.629-.947l-.017-.017V9.26a3.53 3.53 0 0 1 .2-.747l.016-.034.034-.016c.565-.166 1.246-.166 1.878 0 .033-.083.266-.631.299-.715-.565-.332-1.047-.813-1.33-1.328l-.016-.033.016-.034c.1-.199.25-.481.383-.664l.016-.033h.033c.599-.017 1.247.166 1.812.481.05-.066.432-.581.499-.647-.45-.465-.798-1.063-.931-1.644V3.81l.017-.033c.15-.183.382-.415.565-.548l.033-.017h.033c.582.15 1.18.498 1.63.947.066-.05.531-.415.598-.465-.316-.548-.5-1.196-.5-1.777v-.083l.034-.017a3.31 3.31 0 0 1 .665-.382l.016-.016.034.016c.515.283.997.781 1.33 1.329l.764-.316a3.088 3.088 0 0 1-.116-.946c0-.332.033-.648.132-.93V.539h.034c.2-.083.515-.166.748-.199h.033l.033.017c.432.415.765 1.013.948 1.628.083-.017.714-.083.797-.1.017-.648.183-1.312.5-1.81l.016-.034.033-.016c.233-.034.565-.034.781 0l.033.016.017.034c.316.514.482 1.162.482 1.81.1.016.715.1.798.116.183-.631.515-1.212.947-1.628l.017-.016.033.016c.233.034.548.117.748.2l.033.016.017.034c.088.302.133.615.133.93 0 .315-.05.647-.133.946l.764.316a3.91 3.91 0 0 1 1.33-1.329l.033-.017.033.017c.2.083.499.25.665.399l.033.016v.083c0 .582-.182 1.23-.481 1.777.066.05.565.432.631.499.466-.449 1.064-.798 1.646-.947l.033-.017.033.034c.183.132.416.381.549.548l.016.033-.016.033a3.692 3.692 0 0 1-.948 1.628c.05.066.416.564.482.63a3.906 3.906 0 0 1 1.828-.48h.034l.016.032c.15.183.316.465.383.665l.016.033-.016.033c-.3.515-.782.997-1.33 1.329.033.083.266.648.3.714.614-.15 1.312-.166 1.877 0h.033l.017.033c.083.2.166.515.2.748v.033l-.017.017c-.416.432-1.014.764-1.63.946.017.083.084.698.1.781.665.017 1.314.183 1.829.498l.033.017v.033c-.1.083-.083.216-.083.366M5.934 5.025l.98 1.096c.134.149.283.132.483-.034a7.342 7.342 0 0 1 4.537-1.544c1.695 0 3.29.581 4.554 1.544.199.15.348.167.481.034l.981-1.096c.116-.117.116-.283-.1-.466-1.645-1.278-3.69-2.076-5.917-2.076a9.507 9.507 0 0 0-5.9 2.077c-.215.182-.215.348-.099.465m.067 4.6c-.117-.066-.216-.15-.316-.116-.083.016-.133.1-.167.232-.465 1.578-.465 2.923 0 4.485.034.1.067.199.167.232.083.033.182 0 .332-.1l3.041-2.076c.117-.083.183-.182.183-.299 0-.116-.066-.215-.183-.298l-3.057-2.06zm.665-1.81c.016.116.132.166.249.216l3.324 1.61c.133.067.249.067.349.017.1-.066.15-.166.166-.315l.266-3.67c.017-.184-.017-.283-.067-.333-.066-.067-.166-.05-.266-.033-1.595.382-2.742 1.046-3.889 2.242-.116.1-.15.2-.133.266m.05 8.403c0 .067.05.15.117.233 1.146 1.196 2.293 1.86 3.888 2.242.1.033.2.05.267-.017.066-.05.1-.166.082-.332l-.266-3.687c-.016-.133-.066-.249-.166-.299-.1-.05-.216-.05-.349 0l-3.307 1.61c-.116.05-.233.117-.266.217v.033m5.219-1.86a2.375 2.375 0 1 0 0-4.75 2.375 2.375 0 1 0 0 4.75m1.014 4.268c.05.05.15.05.282.017 1.579-.382 2.742-1.046 3.873-2.242.066-.083.15-.166.116-.25-.017-.082-.1-.165-.25-.232l-3.323-1.61c-.133-.067-.25-.067-.35 0-.099.066-.149.166-.165.315l-.266 3.67c.016.117 0 .25.083.333m4.952-4.285c.1.066.216.15.316.1.067-.017.133-.1.166-.233.466-1.578.466-2.923 0-4.484-.033-.1-.066-.2-.15-.233-.082-.033-.182 0-.332.1l-3.041 2.076c-.117.083-.183.182-.183.299 0 .116.066.216.183.298l3.041 2.077zm-.681-6.594c0-.066-.034-.15-.116-.232-1.13-1.196-2.294-1.86-3.89-2.242-.083-.017-.199-.05-.266.016-.066.05-.1.167-.083.333l.266 3.687c.017.133.067.249.166.299.1.05.233.05.35-.017l3.323-1.594c.1-.05.233-.1.25-.216 0 0 .017-.017 0-.033M3.042 14.325l1.413-.415a.332.332 0 0 0 .232-.349c-.515-2.624.133-4.766 1.68-6.477.149-.116.165-.332.015-.498l-1.03-1.03c-.1-.116-.283-.116-.432.05-1.961 2.076-2.958 5.248-2.227 8.504.05.149.166.265.35.215m17.566.764-1.412-.481c-.067-.033-.266-.033-.366.216-1.147 2.74-3.806 4.617-6.897 4.617s-5.8-1.927-6.897-4.667a.306.306 0 0 0-.35-.183l-1.412.482c-.15.05-.25.183-.166.382a9.483 9.483 0 0 0 8.825 6.012c4.005 0 7.462-2.508 8.841-6.029.084-.166 0-.299-.166-.348m-1.628-9.484c-.133-.166-.366-.15-.433-.033l-1.03 1.03a.332.332 0 0 0 .017.498c1.545 1.71 2.193 3.836 1.678 6.477-.016.166.1.316.233.349l1.413.415c.182.05.316-.067.349-.216.748-3.271-.25-6.46-2.227-8.52m-3.308-.398.333-.632.88-.398c-.1-.066-.199-.116-.282-.166l-.598.282-.116-.664c-.133-.067-.2-.083-.333-.133l.183.963-.333.615.267.133zM14.028 19.44c-.432.1-.781.183-1.213.249l.033.25c.166-.034.316-.05.482-.067l.216 1.212.316-.067-.266-1.212c.166-.033.316-.083.482-.116zm-4.304.216v.083c-.017.199-.167.398-.383.432l.05.697a1.472 1.472 0 0 1-.332-.1l-.017-.664-.299-.133-.233.582c-.1-.034-.2-.067-.282-.117l.299-.714.033-.083.25-.581.68.266a.4.4 0 0 1 .234.332m-.283 0c-.017-.05-.033-.083-.083-.1l-.382-.133-.083.233-.034.083.35.133c.099.05.182-.05.215-.133.017-.017.033-.05.017-.083m4.587-15.13c-.116-.033-.216-.05-.35-.083l.25-.83.183-.598c.266.066.498.15.748.232.133.05.216.2.232.365.017.233-.1.482-.332.532l.083.664c-.1-.05-.183-.083-.3-.132l-.082-.582-.283-.083-.15.515zm.2-.797.332.116c.1.033.216-.116.216-.25 0-.066-.017-.115-.1-.132-.133-.05-.216-.066-.349-.1l-.066.233-.033.133zm-1.63 16.64.332.798c-.1 0-.199.016-.299.033l-.1-.25-.648.018-.066.265c-.1-.016-.2-.016-.3-.016l.283-.83.2-.632.016-.017.333-.016.016.033.233.614zm-.2.283-.116-.283-.116-.315-.1.315-.1.3.433-.017zm1.995-1.346.499 1.429.299-.1-.482-1.412c-.133.034-.2.05-.316.083M7.147 4.31l-.083-.15c.216-.132.449-.265.681-.382.266-.149.648.216.615.532a.32.32 0 0 1-.05.166l.549.399c-.1.05-.183.082-.3.149l-.482-.349-.266.15.283.465c-.116.066-.183.116-.299.183L7.147 4.31zm.332-.083.033.066.15.266.316-.166c.033-.016.05-.05.05-.1 0-.149-.1-.332-.25-.249-.1.067-.166.117-.299.183"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/rottentomatoes.svg b/assets/lib/simple-icons/icons/rottentomatoes.svg
new file mode 100644
index 00000000..b185734e
--- /dev/null
+++ b/assets/lib/simple-icons/icons/rottentomatoes.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Rotten Tomatoes</title><path d="M5.866 0L4.335 1.262l2.082 1.8c-2.629-.989-4.842 1.4-5.012 2.338 1.384-.323 2.24-.422 3.344-.335-7.042 4.634-4.978 13.148-1.434 16.094 5.784 4.612 13.77 3.202 17.91-1.316C27.26 13.363 22.993.65 10.86 2.766c.107-1.17.633-1.503 1.243-1.602-.89-1.493-3.67-.734-4.556 1.374C7.52 2.602 5.866 0 5.866 0zM4.422 7.217H6.9c2.673 0 2.898.012 3.55.202 1.06.307 1.868.973 2.313 1.904.05.106.092.206.13.305l7.623.008.027 2.912-2.745-.024v7.549l-2.982-.016v-7.522l-2.127.016a2.92 2.92 0 0 1-1.056 1.134c-.287.176-.3.19-.254.264.127.2 2.125 3.642 2.125 3.659l-3.39.019-2.013-3.376c-.034-.047-.122-.068-.344-.084l-.297-.02.037 3.48-3.075-.038zm3.016 2.288l.024.338c.014.186.024.729.024 1.206v.867l.582-.025c.32-.013.695-.049.833-.078.694-.146 1.048-.478 1.087-1.018.027-.378-.063-.636-.303-.87-.318-.309-.761-.416-1.733-.418Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/roundcube.svg b/assets/lib/simple-icons/icons/roundcube.svg
index 4703a589..f45cb734 100644
--- a/assets/lib/simple-icons/icons/roundcube.svg
+++ b/assets/lib/simple-icons/icons/roundcube.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Roundcube icon</title><path d="M19.9 8.6c0 1.2-.3 2.3-.7 3.3l.7-.4 3.4-2L20.6 8c-.3-4.5-4-8-8.6-8S3.7 3.5 3.4 8L.7 9.6l3.1 1.8.9.5c-.5-1-.7-2.1-.7-3.3C4 4.2 7.6.7 11.9.7c4.5 0 8 3.5 8 7.9zM.1 17.3L11.7 24v-7.4L.1 9.9zm12.2-.7V24l11.6-6.7V9.9z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Roundcube</title><path d="M12.002.072a8.302 8.302 0 0 0-8.266 7.512L.498 9.454l4.682 2.704A7.8 7.8 0 0 1 12.002.572a7.802 7.802 0 0 1 6.824 11.582l4.676-2.7-3.236-1.87A8.302 8.302 0 0 0 12.002.072zM0 9.742v7.399l11.75 6.787v-7.399L0 9.742zm24 0l-5.777 3.338-5.248 3.031h-.002l-.108.063-.615.355v7.399L24 17.14V9.744z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/rss.svg b/assets/lib/simple-icons/icons/rss.svg
index 1428e1a1..14a6f3f7 100644
--- a/assets/lib/simple-icons/icons/rss.svg
+++ b/assets/lib/simple-icons/icons/rss.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>RSS icon</title><path d="M19.199 24C19.199 13.467 10.533 4.8 0 4.8V0c13.165 0 24 10.835 24 24h-4.801zM3.291 17.415c1.814 0 3.293 1.479 3.293 3.295 0 1.813-1.485 3.29-3.301 3.29C1.47 24 0 22.526 0 20.71s1.475-3.294 3.291-3.295zM15.909 24h-4.665c0-6.169-5.075-11.245-11.244-11.245V8.09c8.727 0 15.909 7.184 15.909 15.91z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>RSS</title><path d="M19.199 24C19.199 13.467 10.533 4.8 0 4.8V0c13.165 0 24 10.835 24 24h-4.801zM3.291 17.415c1.814 0 3.293 1.479 3.293 3.295 0 1.813-1.485 3.29-3.301 3.29C1.47 24 0 22.526 0 20.71s1.475-3.294 3.291-3.295zM15.909 24h-4.665c0-6.169-5.075-11.245-11.244-11.245V8.09c8.727 0 15.909 7.184 15.909 15.91z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/rstudio.svg b/assets/lib/simple-icons/icons/rstudio.svg
index 635acf74..d921d2f2 100644
--- a/assets/lib/simple-icons/icons/rstudio.svg
+++ b/assets/lib/simple-icons/icons/rstudio.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>RStudio icon</title><path d="M12.178.002a12.002 12.002 0 0 0-8.662 3.515 12.002 12.002 0 0 0 0 16.97 12.002 12.002 0 0 0 16.97 0 12.002 12.002 0 0 0 0-16.97A12.002 12.002 0 0 0 12.179.002zM7.77 5.995c.562.128 1.05.217 1.663.217.921 0 1.863-.217 2.786-.217 1.79 0 3.45.814 3.45 2.8 0 1.54-.921 2.517-2.35 2.93l2.788 4.107h1.301v1.01h-1.986l-3.293-4.934h-1.757v3.924h1.718v1.01H7.77v-1.01h1.483V7.134L7.77 6.951v-.957zm4.466 1.012c-.596 0-1.213.053-1.864.127v3.798l.941.02c2.298.034 3.183-.85 3.183-2.026 0-1.376-.997-1.919-2.26-1.919z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>RStudio</title><path d="M12.178.002a12.002 12.002 0 0 0-8.662 3.515 12.002 12.002 0 0 0 0 16.97 12.002 12.002 0 0 0 16.97 0 12.002 12.002 0 0 0 0-16.97A12.002 12.002 0 0 0 12.179.002zM7.77 5.995c.562.128 1.05.217 1.663.217.921 0 1.863-.217 2.786-.217 1.79 0 3.45.814 3.45 2.8 0 1.54-.921 2.517-2.35 2.93l2.788 4.107h1.301v1.01h-1.986l-3.293-4.934h-1.757v3.924h1.718v1.01H7.77v-1.01h1.483V7.134L7.77 6.951v-.957zm4.466 1.012c-.596 0-1.213.053-1.864.127v3.798l.941.02c2.298.034 3.183-.85 3.183-2.026 0-1.376-.997-1.919-2.26-1.919z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/rte.svg b/assets/lib/simple-icons/icons/rte.svg
new file mode 100644
index 00000000..9180bfbb
--- /dev/null
+++ b/assets/lib/simple-icons/icons/rte.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>RT&#201;</title><path d="M1.983 12.857V9.038s.734-.018 1.615-.018c.131 0 .258.01.373.016 1.41.115 1.992.883 1.992 1.807 0 1.036-.82 1.819-1.992 1.986a3.5 3.5 0 0 1-.474.028zm2.84 1.244c1.736-.168 3.197-1.446 3.197-3.102 0-1.763-1.018-3.324-4.049-3.45a9.497 9.497 0 0 0-.393-.01c-2.098 0-3.537.1-3.537.1s.097 1.035.097 1.558v7.624C.138 17.522 0 18.26 0 18.26h2.118s-.135-.737-.135-1.577v-3.101l1.988 2.08 1.006 1.043c.62.677 1.702 1.555 1.702 1.555h2.8s-1.253-.878-1.835-1.438zm19.055-7.198a8.123 8.123 0 0 0-2.036-.284c-1.784 0-3.321.541-4.603 1.682l.02-1.261c1.36-.925 2.9-1.34 4.583-1.34.738 0 1.378.1 2.056.276l-.02.927M11.282 18.259s.117-.778.117-1.458V9.402h-.501c-.68 0-1.736 0-2.516.077l-.066-1.718h8.124l-.041 1.718c-.802-.077-1.838-.077-2.539-.077h-.617v7.399c0 .68.136 1.458.136 1.458h-2.097m10.419-1.524c-1.838 0-3.386-1.315-3.666-3.175h3.482c.385 0 1.222.082 1.222.082V12.1s-.822.061-1.28.061h-3.424c.347-1.822 1.845-3.08 3.666-3.08.96 0 2.139.438 2.139.438l.023-1.622s-.84-.318-2.162-.318c-3.063 0-5.741 2.34-5.741 5.32 0 3.223 2.678 5.4 5.74 5.4 1.44 0 2.3-.384 2.3-.384l-.04-1.676c-.001 0-1.062.496-2.26.496Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/rtl.svg b/assets/lib/simple-icons/icons/rtl.svg
new file mode 100644
index 00000000..1bbec742
--- /dev/null
+++ b/assets/lib/simple-icons/icons/rtl.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>RTL</title><path d="M0 9.953h7.812v4.094H0zm4.58 3.384h2.071l-1.308-.932.059-.006a.784.784 0 0 0 .569-.235.874.874 0 0 0 .252-.604c0-.164-.03-.299-.082-.416a.847.847 0 0 0-.211-.282.805.805 0 0 0-.294-.164 1.04 1.04 0 0 0-.328-.053H1.185l-.006 2.68h1.976v-.88h.405zm-.521-2.064c.088 0 .158.03.21.094a.339.339 0 0 1 .077.199.288.288 0 0 1-.076.205.283.283 0 0 1-.188.1h-.927v-.598zm4.035-1.32h7.812v4.094H8.094zm6.375 1.337v-.633H9.39v.633h1.496v2.047h2.111V11.29zm1.719-1.337H24v4.094h-7.812zm6.422 3.384v-.616h-2.903v-2.064h-2.258v2.68z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/rtlzwei.svg b/assets/lib/simple-icons/icons/rtlzwei.svg
index 4b6480a8..ed5cbc34 100644
--- a/assets/lib/simple-icons/icons/rtlzwei.svg
+++ b/assets/lib/simple-icons/icons/rtlzwei.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>RTLZWEI icon</title><path d="M0 0v24h7.38v-3.69H3.692L3.69 3.69h9.229V0H0zm16.61 0v3.69h3.7v16.62h-9.238V24H24V0h-7.39zm-.003 6.49l-3.689.717v9.227l3.69-.715V6.49zm-5.535 1.076l-3.69.715v9.229l3.69-.717V7.566z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>RTLZWEI</title><path d="M0 0v24h7.38v-3.69H3.692L3.69 3.69h9.229V0H0zm16.61 0v3.69h3.7v16.62h-9.238V24H24V0h-7.39zm-.003 6.49l-3.689.717v9.227l3.69-.715V6.49zm-5.535 1.076l-3.69.715v9.229l3.69-.717V7.566z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ruby.svg b/assets/lib/simple-icons/icons/ruby.svg
index 45530b82..8315f825 100644
--- a/assets/lib/simple-icons/icons/ruby.svg
+++ b/assets/lib/simple-icons/icons/ruby.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Ruby icon</title><path d="M20.156.083c3.033.525 3.893 2.598 3.829 4.77L24 4.822 22.635 22.71 4.89 23.926h.016C3.433 23.864.15 23.729 0 19.139l1.645-3 2.819 6.586.503 1.172 2.805-9.144-.03.007.016-.03 9.255 2.956-1.396-5.431-.99-3.9 8.82-.569-.615-.51L16.5 2.114 20.159.073l-.003.01zM0 19.089v.026-.029.003zM5.13 5.073c3.561-3.533 8.157-5.621 9.922-3.84 1.762 1.777-.105 6.105-3.673 9.636-3.563 3.532-8.103 5.734-9.864 3.957-1.766-1.777.045-6.217 3.612-9.75l.003-.003z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Ruby</title><path d="M20.156.083c3.033.525 3.893 2.598 3.829 4.77L24 4.822 22.635 22.71 4.89 23.926h.016C3.433 23.864.15 23.729 0 19.139l1.645-3 2.819 6.586.503 1.172 2.805-9.144-.03.007.016-.03 9.255 2.956-1.396-5.431-.99-3.9 8.82-.569-.615-.51L16.5 2.114 20.159.073l-.003.01zM0 19.089zM5.13 5.073c3.561-3.533 8.157-5.621 9.922-3.84 1.762 1.777-.105 6.105-3.673 9.636-3.563 3.532-8.103 5.734-9.864 3.957-1.766-1.777.045-6.217 3.612-9.75l.003-.003z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/rubygems.svg b/assets/lib/simple-icons/icons/rubygems.svg
index 3420b4bb..f9441c37 100644
--- a/assets/lib/simple-icons/icons/rubygems.svg
+++ b/assets/lib/simple-icons/icons/rubygems.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>RubyGems icon</title><path d="M7.81 7.9l-2.97 2.95 7.19 7.18 2.96-2.95 4.22-4.23-2.96-2.96v-.01H7.8zM12 0L1.53 6v12L12 24l10.47-6V6L12 0zm8.47 16.85L12 21.73l-8.47-4.88V7.12L12 2.24l8.47 4.88v9.73z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>RubyGems</title><path d="M7.81 7.9l-2.97 2.95 7.19 7.18 2.96-2.95 4.22-4.23-2.96-2.96v-.01H7.8zM12 0L1.53 6v12L12 24l10.47-6V6L12 0zm8.47 16.85L12 21.73l-8.47-4.88V7.12L12 2.24l8.47 4.88v9.73z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/rubyonrails.svg b/assets/lib/simple-icons/icons/rubyonrails.svg
new file mode 100644
index 00000000..1a7cfac2
--- /dev/null
+++ b/assets/lib/simple-icons/icons/rubyonrails.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Ruby on Rails</title><path d="M7.523 7.781c-.187 0-.382.011-.582.035l.116.358c.175-.018.351-.024.527-.024h.06l-.12-.369zm2.315.358l-.024.4c.2.067.394.138.588.217l.026-.404c-.055-.03-.208-.104-.59-.213zm-4.988.23a9.597 9.597 0 00-.473.26l.28.426c.157-.097.308-.19.466-.268L4.85 8.37zm2.89.022a5.602 5.602 0 00-.654.027c-.443.04-.909.169-1.38.375-1.418.618-2.878 1.918-3.833 3.51-.955 1.591-1.291 3-1.4 3.603-.037.202-.05.313-.05.313h4.79s-.057-.26-.096-.678a8.18 8.18 0 01-.033-.732c0-.55.055-1.203.244-1.858.047-.163.103-.328.168-.49.065-.162.14-.321.225-.479.17-.314.381-.618.646-.894s.584-.525.963-.736c.248-.12.698-.365 1.346-.489.216-.041.453-.07.713-.076.26-.005.542.012.845.06.606.097 1.298.32 2.075.74.388.211.798.47 1.228.788.11-.09.211-.162.211-.162s-.196-.197-.547-.486c-.35-.29-.853-.672-1.467-1.043-.306-.186-.642-.37-.998-.538a8.852 8.852 0 00-1.129-.44 7.48 7.48 0 00-1.226-.27 6.048 6.048 0 00-.64-.045zm2.086 1.65l-.023.383c.2.006.4.03.6.072l.025-.375a4.32 4.32 0 00-.602-.08zm-1.418.146c-.206.061-.381.127-.533.194l.139.418c.175-.085.351-.157.527-.211l-.133-.4zm-6.008.024c-.157.151-.31.303-.449.455l.467.4c.127-.163.267-.327.412-.478l-.43-.377zm4.34.898c-.14.128-.266.267-.375.407l.291.435c.103-.151.224-.29.358-.43l-.274-.412zm.989.787v4.323h1.164v-1.043L9.9 16.219h1.721l-1.351-1.364s1.06-.09 1.06-1.46c0-1.37-1.285-1.499-1.285-1.499H7.729zm5.292.032c-.842 0-1.126.763-1.126 1.127v3.164h1.181v-.758h1.11v.758h1.146v-3.164c0-.922-.838-1.127-1.129-1.127h-1.182zm2.85 0v4.29h1.23v-4.29h-1.23zm1.733 0v4.291h2.88v-1.11h-1.656v-3.181h-1.224zm4.359 0c-.485 0-1.133.399-1.133 1.144v.383c0 .746.642 1.127 1.133 1.127 1.364.006-.327 0 .933 0v.533l-2.005.006v1.098h1.982c.406 0 1.103-.297 1.127-1.127v-.424c0-.71-.581-1.129-1.127-1.129h-.988v-.508h1.957v-1.103h-1.88zM5.668 12.8a5.75 5.75 0 00-.182.666l.49.388c.025-.236.069-.472.13-.709l-.438-.345zm7.771.15h.407c.327 0 .334.236.334.236v1.05h-1.11v-1.05s0-.236.37-.236zm-4.546.031h.933s.262.097.262.49c0 .395-.268.499-.268.499h-.927v-.989zm-8.59.061c-.115.26-.242.563-.303.727l.697.255c.08-.206.206-.504.303-.728l-.697-.254zm5.092 1.963c.012.321.043.584.074.765l.726.26a8.003 8.003 0 01-.144-.787l-.656-.238z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/rubysinatra.svg b/assets/lib/simple-icons/icons/rubysinatra.svg
new file mode 100644
index 00000000..5242a018
--- /dev/null
+++ b/assets/lib/simple-icons/icons/rubysinatra.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Ruby Sinatra</title><path d="M5.224 10.525c-1.215.4-3.32 1.384-3.943 1.934-.069.06-.138.125-.207.194-.49.43-.76.851-.89 1.285A4.423 4.423 0 0 0 0 15.208c-.005.842.247 1.369.247 1.369.714 1.428 2.416 2.4 4.21 2.963 1.777.593 5.622.289 7.521.046 5.091-.684 8.389-1.657 10.319-3.237C23.924 15.042 24 13.644 24 13.127c0-.06-.007-.134-.02-.219-.032-.553-.258-1.62-1.49-2.38a2.96 2.96 0 0 0-.33-.197c-.125-.065-.25-.127-.375-.186l-.035-.027-.191-.078a12.313 12.313 0 0 0-.629-.264c-.515-.225-.971-.387-1.372-.477a69.929 69.929 0 0 1-.041-1.703c0-.7-.244-1.08-.441-1.277-.12-.119-.557-.265-.997-.4a19.118 19.118 0 0 0-.93-.287 4.657 4.657 0 0 0-.079-.027v.005l-.417-.12h-.001l-.448-.128a1.5 1.5 0 0 1-.094-.015l-.033-.01a2.161 2.161 0 0 0-.07-.02l-.028-.008a64.267 64.267 0 0 1-.641-.19 1.72 1.72 0 0 1-.091-.012v-.003a51.125 51.125 0 0 1-.213-.057v-.004a30.91 30.91 0 0 0-.32-.09v-.001a17.568 17.568 0 0 0-.669-.167 70.288 70.288 0 0 0-2.689-.502c-.182-.046-1.367-.152-1.367-.152a5.944 5.944 0 0 0-1.106.023 4.01 4.01 0 0 0-.779.19c-.113.024-.245.103-.383.216a1.363 1.363 0 0 0-.177.146l-.002.002a4.226 4.226 0 0 0-.125.12l-.007.008c-.217.217-.36.412-.454.584-.174.249-.304.479-.341.61-.032.119-.129.578-.228 1.044-.091.432-.184.871-.228 1.054-.048.2-.334.906-.601 1.567-.124.304-.243.598-.334.83Zm14.384.642c0-.06.076-.06.076.015 0 0 0 .016-.003.036a.092.092 0 0 1 .003.025c0 .03 0 .456-.03.957-.008.137-.02.281-.031.426-.011.144-.023.289-.03.425-.007.225-.008.431-.007.59.007.154.007.246.007.246v.106c0 .259-.152.593-.396.745l-.04.026h-.001l-.021.013c-.115.088-.251.166-.409.23-.22.106-.516.223-.942.339-.836.243-1.459.35-1.869.395-1.003.122-2.188.182-3.601.182-.29 0-1.414 0-1.687-.015-3.739-.106-5.988-1.23-5.988-2.036v-.106s.32-2.478.32-2.63c0-.151.09-.273.09-.182v.06c0 .03 0 .061.002.093.002.01.005.018.008.025.003.007.006.013.006.02.32 1.018 3.45 1.717 7.279 1.717h.638l.205-.003h.001c1.15-.012 3.818-.042 5.842-.954.35-.228.578-.456.578-.745z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/runkeeper.svg b/assets/lib/simple-icons/icons/runkeeper.svg
index 850c3c36..d10f28f0 100644
--- a/assets/lib/simple-icons/icons/runkeeper.svg
+++ b/assets/lib/simple-icons/icons/runkeeper.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Runkeeper icon</title><path d="M13.475 16.634c1.887-.257 3.258-1.114 4.537-2.57 1.5-1.757 1.93-4.112 1.327-6.34-.6-2.143-2.31-3.814-4.54-4.116-2.757-.426-5.618.9-7.638 2.704-.045.04-.165.126-.21.21-.21-.384-.482-.77-.77-1.07-.385-.557-1.24-1.458-1.285-1.5-.17-.214-.47-.257-.64-.342-.527-.113-.888-.29-1.114-.42-.012-.018-.027-.034-.045-.054L.914.824C.7.65.44.61.227.824c-.17.214-.214.472 0 .686L2.37 3.824l.02.02.03-.002c.077.136.348.362.453.83.045.21.166.466.377.767 0 0 1.506 1.625 2.108 2.725.558 1.114.693 1.46.768 1.67 0 .03-.557-.646-1.204-1.113-2.485 2.83-4.293 6.22-4.82 9.894-.557 3.765 1.506 4.76 3.043 4.714 1.234 0 3.81-1.325 5.18-4.623C9.65 15.5 9.44 11.81 8.1 8.6c1.28-1.294 3.644-2.83 5.948-2.785 1.716 0 2.575 1.49 2.696 1.627 1.324 2.394-.227 4.548-.227 4.548-.858 1.295-2.35 1.898-3.133 2.107-.587.166-1.702.12-1.973 0-.164-.045-.21-.136-.21-.256 0-.18.136-.255.256-.255.166 0 .256.12.256.256v.138c.437.12 1.28.03 1.627 0-.272-.644-.86-.987-1.643-.987h-.036c-1.01.008-1.823.833-1.815 1.844 0 .77.437 1.415 1.07 1.67.332.13 1.326.258 2.56.13zm-6.82-.427c-.86 3.772-3.256 5.1-3.9 4.884-.642-.213-.856-2.1.428-5.27.216-.47 1.5-3.427 3.172-5.27-.045.086.943 2.872.3 5.657zM23.186 16.938L24 13.85c.03-.256-.09-.557-.348-.6-.256-.043-.557.088-.586.344l-.81 2.977h-.095c-.017.022-.03.044-.044.066-.12.214-.346.558-.678.814-.256.214-.377.47-.377.47-.12.128-.978 2.83-3.673 2.957-3.18.128-3.81-3.427-3.855-3.727-.678.127-2.048-.174-2.606-.43.166 1.97 1.115 4.327 2.786 5.442 1.928 1.328 4.926 1.328 6.988 0 1.19-.815 1.973-1.843 2.484-3.172l.045-.11.015-.033c.016-.037.016-.074.046-.113v-.045c-.03 0 0-.257-.075-.513-.164-.683-.03-1.113-.03-1.24z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Runkeeper</title><path d="M2.429 10.42c-.52 0-1.091.318-1.45.619l.029.04c.556-.39 1.33-.644 1.544-.263.112.201-.079.607-.348.928.065-.142.022-.414-.353-.414-.624 0-1.851.826-1.851 1.672 0 .339.235.56.622.56 1.035 0 2.44-1.698 2.44-2.551 0-.301-.173-.59-.633-.59zm8.738.714v1.903h.454v-.306l.345-.229.628.535h.626l-.91-.764.891-.595h-.68l-.9.619v-1.163zm-7.464.19v1.712h.453v-.543h.98l.546.544h.58l-.589-.575a.773.773 0 0 0 .399-.196.485.485 0 0 0 .14-.357.495.495 0 0 0-.23-.433c-.152-.102-.363-.153-.634-.153zm-1.853.207c.297 0 .274.265.1.492l-.096.106c-.345.34-.664.52-.88.52v-.001c-.179 0-.265-.138-.22-.297.093-.33.69-.82 1.096-.82zm17.228.09a1.29 1.29 0 0 0-.012 0 1.251 1.251 0 0 0-.403.063.76.76 0 0 0-.292.166v-.172h-.45v1.902h.455v-.711a.778.778 0 0 0 .293.163 1.262 1.262 0 0 0 .397.061 1.29 1.29 0 0 0 .498-.092.816.816 0 0 0 .349-.26.648.648 0 0 0 0-.769.82.82 0 0 0-.349-.259 1.29 1.29 0 0 0-.486-.092zm-9.133 0a1.103 1.103 0 0 0-.011 0 .96.96 0 0 0-.44.096.71.71 0 0 0-.29.258v-.297h-.432v1.359h.454v-.568a.453.453 0 0 1 .081-.271.494.494 0 0 1 .22-.17.82.82 0 0 1 .312-.057.561.561 0 0 1 .261.06.441.441 0 0 1 .18.167.475.475 0 0 1 .065.248v.59h.456v-.663a.71.71 0 0 0-.117-.414.707.707 0 0 0-.314-.254 1.103 1.103 0 0 0-.425-.084zm6.667 0a1.487 1.487 0 0 0-.523.094.867.867 0 0 0-.364.263.594.594 0 0 0-.132.378.6.6 0 0 0 .133.385.849.849 0 0 0 .385.26c.168.061.366.092.594.091a2.573 2.573 0 0 0 .418-.03c.123-.02.256-.049.397-.085v-.33a5.593 5.593 0 0 1-.398.087 2.366 2.366 0 0 1-.4.03c-.178 0-.328-.024-.45-.073-.12-.049-.195-.12-.224-.213l1.569.003v-.078a.687.687 0 0 0-.131-.42.813.813 0 0 0-.36-.27 1.487 1.487 0 0 0-.514-.092zm7.388 0a1.465 1.465 0 0 0-.582.111c-.165.072-.279.167-.342.284v-.338h-.449v1.359h.454v-.5a.387.387 0 0 1 .144-.306.897.897 0 0 1 .357-.18 1.493 1.493 0 0 1 .418-.052zm-9.66 0a1.488 1.488 0 0 0-.524.094.87.87 0 0 0-.363.263.594.594 0 0 0-.133.378.601.601 0 0 0 .134.385.85.85 0 0 0 .385.26c.168.061.366.092.594.092a2.575 2.575 0 0 0 .418-.03c.123-.021.255-.05.397-.086v-.33a5.19 5.19 0 0 1-.398.087 2.367 2.367 0 0 1-.4.03c-.178 0-.328-.024-.45-.072-.12-.05-.195-.12-.224-.213l1.569.002v-.078a.687.687 0 0 0-.131-.42.813.813 0 0 0-.36-.27 1.488 1.488 0 0 0-.515-.092zm6.958 0a1.488 1.488 0 0 0-.523.094.87.87 0 0 0-.364.263.594.594 0 0 0-.132.378.601.601 0 0 0 .134.385.85.85 0 0 0 .385.26c.168.061.366.092.594.092a2.574 2.574 0 0 0 .418-.03c.123-.021.255-.05.397-.086v-.33c-.147.037-.28.067-.398.087a2.367 2.367 0 0 1-.4.03 1.23 1.23 0 0 1-.45-.072c-.12-.05-.195-.12-.224-.213l1.569.002v-.078a.687.687 0 0 0-.131-.42.813.813 0 0 0-.36-.27 1.488 1.488 0 0 0-.515-.092zm-17.142.057h1.15a.72.72 0 0 1 .304.054.183.183 0 0 1 .115.177c0 .08-.038.14-.115.176a.703.703 0 0 1-.304.056h-1.15zm3.837 0v.645a.359.359 0 0 1-.07.222.455.455 0 0 1-.197.146.75.75 0 0 1-.287.052.71.71 0 0 1-.279-.052.447.447 0 0 1-.192-.148.365.365 0 0 1-.07-.22v-.645h-.456v.645a.688.688 0 0 0 .123.407.781.781 0 0 0 .35.268c.15.063.327.095.53.095.204 0 .38-.032.532-.095a.786.786 0 0 0 .35-.268.687.687 0 0 0 .122-.407v-.645zm6.343.243c.14 0 .258.028.354.083a.345.345 0 0 1 .178.217h-1.09a.352.352 0 0 1 .188-.22c.1-.053.224-.08.37-.08zm2.272 0c.14 0 .258.028.355.083a.345.345 0 0 1 .177.217h-1.09a.352.352 0 0 1 .189-.22c.1-.053.223-.08.37-.08zm4.687 0c.14 0 .258.028.354.083a.345.345 0 0 1 .177.217h-1.089a.356.356 0 0 1 .188-.22c.1-.053.223-.08.37-.08zm-2.293.033a.866.866 0 0 1 .29.05.46.46 0 0 1 .203.143.331.331 0 0 1 .071.209.335.335 0 0 1-.07.211.458.458 0 0 1-.204.142.867.867 0 0 1-.312.05 1.004 1.004 0 0 1-.305-.044.52.52 0 0 1-.227-.137.313.313 0 0 1-.086-.222.305.305 0 0 1 .086-.22.541.541 0 0 1 .228-.135.981.981 0 0 1 .304-.047.866.866 0 0 1 .022 0z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/runkit.svg b/assets/lib/simple-icons/icons/runkit.svg
index 577f3bdb..fc7d0db9 100644
--- a/assets/lib/simple-icons/icons/runkit.svg
+++ b/assets/lib/simple-icons/icons/runkit.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>RunKit icon</title><path d="M23.97 14.8a3 3 0 0 1-1.47 3.02l-9 5.2a3 3 0 0 1-3 0l-9-5.2A3 3 0 0 1 .03 14.8l1.32-7.2a3 3 0 0 1 .98-1.82 2.96 2.96 0 0 1 .49-.35l7.55-4.37a3.01 3.01 0 0 1 3.28.02l7.53 4.35c.1.05.19.1.28.17a3 3 0 0 1 1.19 2zM14.43 4.03L6.71 5.62c-.43.08-.51.64-.14.86l5.6 3.23c.23.13.5.07.63-.19l1.58-3.6.53-1.22c.16-.35-.11-.75-.5-.67z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>RunKit</title><path d="M23.97 14.797a3 3 0 01-1.47 3.02l-9 5.2a3 3 0 01-3 0l-9-5.2a3 3 0 01-1.47-3.02l1.32-7.2a3 3 0 01.98-1.82 2.96 2.96 0 01.49-.35l7.55-4.37a3.01 3.01 0 013.28.02l7.53 4.35c.1.05.19.1.28.17a3 3 0 011.19 2zm-9.54-10.77l-7.72 1.59c-.43.08-.51.64-.14.86l5.6 3.23c.23.13.5.07.63-.19l1.58-3.6.53-1.22c.16-.35-.11-.75-.5-.67z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/rust.svg b/assets/lib/simple-icons/icons/rust.svg
index b500bbd9..b95ce42a 100644
--- a/assets/lib/simple-icons/icons/rust.svg
+++ b/assets/lib/simple-icons/icons/rust.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Rust icon</title><path d="M23.687 11.709l-.995-.616a13.559 13.559 0 0 0-.028-.29l.855-.797a.344.344 0 0 0-.114-.571l-1.093-.409a8.392 8.392 0 0 0-.086-.282l.682-.947a.342.342 0 0 0-.223-.538l-1.152-.187a9.243 9.243 0 0 0-.139-.259l.484-1.063c.05-.108.039-.234-.027-.332s-.178-.156-.297-.152l-1.17.041a6.662 6.662 0 0 0-.185-.224l.269-1.139a.343.343 0 0 0-.412-.412l-1.139.269a13.847 13.847 0 0 0-.225-.185l.041-1.17a.34.34 0 0 0-.484-.324l-1.063.485c-.086-.047-.172-.094-.259-.139l-.188-1.153a.344.344 0 0 0-.538-.223l-.948.682a8.383 8.383 0 0 0-.282-.085L14.562.596a.344.344 0 0 0-.571-.114l-.797.856a9.18 9.18 0 0 0-.29-.028l-.616-.995a.342.342 0 0 0-.582 0l-.616.995c-.097.008-.194.018-.29.028l-.798-.856a.342.342 0 0 0-.571.114l-.409 1.093c-.095.027-.188.056-.282.085l-.947-.682a.344.344 0 0 0-.538.223l-.188 1.153a9.243 9.243 0 0 0-.259.139l-1.063-.485a.342.342 0 0 0-.484.324l.041 1.17c-.076.06-.151.122-.225.185l-1.139-.269a.343.343 0 0 0-.412.412l.268 1.139c-.062.074-.124.149-.184.224l-1.17-.041a.342.342 0 0 0-.324.484l.485 1.063a9.055 9.055 0 0 0-.139.259l-1.152.187a.344.344 0 0 0-.223.538l.682.947c-.03.094-.058.187-.086.282L.59 9.435a.344.344 0 0 0-.114.571l.855.797a9.18 9.18 0 0 0-.028.29l-.995.616a.34.34 0 0 0 0 .582l.995.616c.008.097.018.194.028.29l-.855.798a.342.342 0 0 0 .114.571l1.093.409c.027.095.056.189.086.282l-.682.947a.341.341 0 0 0 .224.538l1.152.187c.045.087.091.173.139.259l-.485 1.063a.342.342 0 0 0 .324.484l1.169-.041c.061.076.122.151.185.225l-.268 1.14a.342.342 0 0 0 .412.411l1.139-.268c.074.063.149.124.225.184l-.041 1.17a.34.34 0 0 0 .484.323l1.063-.484c.086.048.172.094.259.139l.188 1.152a.344.344 0 0 0 .538.224l.947-.682c.094.03.187.059.282.086l.409 1.093a.341.341 0 0 0 .571.114l.798-.855c.096.011.193.02.29.029l.616.995a.343.343 0 0 0 .582 0l.616-.995c.097-.009.194-.018.29-.029l.797.855a.344.344 0 0 0 .571-.114l.409-1.093c.095-.027.189-.056.282-.086l.947.682a.341.341 0 0 0 .538-.224l.188-1.152c.087-.045.173-.092.259-.139l1.063.484a.343.343 0 0 0 .484-.323l-.041-1.17c.076-.06.151-.121.224-.184l1.139.268a.343.343 0 0 0 .412-.411l-.268-1.14c.062-.074.124-.149.184-.225l1.17.041a.34.34 0 0 0 .324-.484l-.484-1.063c.047-.086.094-.172.139-.259l1.152-.187a.344.344 0 0 0 .223-.538l-.682-.947.086-.282 1.093-.409a.342.342 0 0 0 .114-.571l-.855-.798c.01-.096.02-.193.028-.29l.995-.616a.34.34 0 0 0 0-.582zm-6.659 8.253a.705.705 0 0 1 .295-1.379.705.705 0 1 1-.296 1.379zm-.338-2.286a.641.641 0 0 0-.762.494l-.353 1.648c-1.09.495-2.3.77-3.575.77a8.63 8.63 0 0 1-3.65-.804l-.353-1.648a.64.64 0 0 0-.762-.493l-1.455.312a8.615 8.615 0 0 1-.752-.887h7.08c.08 0 .134-.014.134-.087v-2.505c0-.073-.053-.087-.134-.087h-2.071v-1.588h2.24c.204 0 1.093.058 1.377 1.194.089.349.284 1.486.418 1.85.133.408.675 1.223 1.253 1.223h3.528a.74.74 0 0 0 .128-.013 8.68 8.68 0 0 1-.802.941l-1.489-.32zm-9.793 2.252a.705.705 0 1 1-.296-1.379.705.705 0 0 1 .296 1.379zM4.211 9.036a.705.705 0 1 1-1.288.572.705.705 0 0 1 1.288-.572zm-.825 1.957l1.516-.674a.642.642 0 0 0 .326-.848l-.312-.706h1.228v5.534H3.667a8.668 8.668 0 0 1-.28-3.307zm6.652-.537V8.825h2.924c.151 0 1.066.175 1.066.859 0 .568-.702.772-1.279.772h-2.711zm10.626 1.468c0 .216-.008.431-.024.643h-.889c-.089 0-.125.058-.125.146v.408c0 .961-.542 1.17-1.017 1.223-.452.051-.953-.189-1.015-.466-.267-1.5-.711-1.821-1.413-2.374.871-.553 1.777-1.369 1.777-2.461 0-1.179-.809-1.922-1.36-2.287-.773-.51-1.629-.612-1.86-.612H5.545a8.658 8.658 0 0 1 4.847-2.736l1.084 1.137a.64.64 0 0 0 .907.021l1.212-1.16a8.668 8.668 0 0 1 5.931 4.224l-.83 1.875a.644.644 0 0 0 .326.848l1.598.71c.028.284.042.57.042.861zm-9.187-9.482a.703.703 0 1 1 .972 1.019.705.705 0 0 1-.972-1.019zm8.237 6.628c.157-.356.573-.516.928-.358a.705.705 0 1 1-.929.359z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Rust</title><path d="M23.8346 11.7033l-1.0073-.6236a13.7268 13.7268 0 00-.0283-.2936l.8656-.8069a.3483.3483 0 00-.1154-.578l-1.1066-.414a8.4958 8.4958 0 00-.087-.2856l.6904-.9587a.3462.3462 0 00-.2257-.5446l-1.1663-.1894a9.3574 9.3574 0 00-.1407-.2622l.49-1.0761a.3437.3437 0 00-.0274-.3361.3486.3486 0 00-.3006-.154l-1.1845.0416a6.7444 6.7444 0 00-.1873-.2268l.2723-1.153a.3472.3472 0 00-.417-.4172l-1.1532.2724a14.0183 14.0183 0 00-.2278-.1873l.0415-1.1845a.3442.3442 0 00-.49-.328l-1.076.491c-.0872-.0476-.1742-.0952-.2623-.1407l-.1903-1.1673A.3483.3483 0 0016.256.955l-.9597.6905a8.4867 8.4867 0 00-.2855-.086l-.414-1.1066a.3483.3483 0 00-.5781-.1154l-.8069.8666a9.2936 9.2936 0 00-.2936-.0284L12.2946.1683a.3462.3462 0 00-.5892 0l-.6236 1.0073a13.7383 13.7383 0 00-.2936.0284L9.9803.3374a.3462.3462 0 00-.578.1154l-.4141 1.1065c-.0962.0274-.1903.0567-.2855.086L7.744.955a.3483.3483 0 00-.5447.2258L7.009 2.348a9.3574 9.3574 0 00-.2622.1407l-1.0762-.491a.3462.3462 0 00-.49.328l.0416 1.1845a7.9826 7.9826 0 00-.2278.1873L3.8413 3.425a.3472.3472 0 00-.4171.4171l.2713 1.1531c-.0628.075-.1255.1509-.1863.2268l-1.1845-.0415a.3462.3462 0 00-.328.49l.491 1.0761a9.167 9.167 0 00-.1407.2622l-1.1662.1894a.3483.3483 0 00-.2258.5446l.6904.9587a13.303 13.303 0 00-.087.2855l-1.1065.414a.3483.3483 0 00-.1155.5781l.8656.807a9.2936 9.2936 0 00-.0283.2935l-1.0073.6236a.3442.3442 0 000 .5892l1.0073.6236c.008.0982.0182.1964.0283.2936l-.8656.8079a.3462.3462 0 00.1155.578l1.1065.4141c.0273.0962.0567.1914.087.2855l-.6904.9587a.3452.3452 0 00.2268.5447l1.1662.1893c.0456.088.0922.1751.1408.2622l-.491 1.0762a.3462.3462 0 00.328.49l1.1834-.0415c.0618.0769.1235.1528.1873.2277l-.2713 1.1541a.3462.3462 0 00.4171.4161l1.153-.2713c.075.0638.151.1255.2279.1863l-.0415 1.1845a.3442.3442 0 00.49.327l1.0761-.49c.087.0486.1741.0951.2622.1407l.1903 1.1662a.3483.3483 0 00.5447.2268l.9587-.6904a9.299 9.299 0 00.2855.087l.414 1.1066a.3452.3452 0 00.5781.1154l.8079-.8656c.0972.0111.1954.0203.2936.0294l.6236 1.0073a.3472.3472 0 00.5892 0l.6236-1.0073c.0982-.0091.1964-.0183.2936-.0294l.8069.8656a.3483.3483 0 00.578-.1154l.4141-1.1066a8.4626 8.4626 0 00.2855-.087l.9587.6904a.3452.3452 0 00.5447-.2268l.1903-1.1662c.088-.0456.1751-.0931.2622-.1407l1.0762.49a.3472.3472 0 00.49-.327l-.0415-1.1845a6.7267 6.7267 0 00.2267-.1863l1.1531.2713a.3472.3472 0 00.4171-.416l-.2713-1.1542c.0628-.0749.1255-.1508.1863-.2278l1.1845.0415a.3442.3442 0 00.328-.49l-.49-1.076c.0475-.0872.0951-.1742.1407-.2623l1.1662-.1893a.3483.3483 0 00.2258-.5447l-.6904-.9587.087-.2855 1.1066-.414a.3462.3462 0 00.1154-.5781l-.8656-.8079c.0101-.0972.0202-.1954.0283-.2936l1.0073-.6236a.3442.3442 0 000-.5892zm-6.7413 8.3551a.7138.7138 0 01.2986-1.396.714.714 0 11-.2997 1.396zm-.3422-2.3142a.649.649 0 00-.7715.5l-.3573 1.6685c-1.1035.501-2.3285.7795-3.6193.7795a8.7368 8.7368 0 01-3.6951-.814l-.3574-1.6684a.648.648 0 00-.7714-.499l-1.473.3158a8.7216 8.7216 0 01-.7613-.898h7.1676c.081 0 .1356-.0141.1356-.088v-2.536c0-.074-.0536-.0881-.1356-.0881h-2.0966v-1.6077h2.2677c.2065 0 1.1065.0587 1.394 1.2088.0901.3533.2875 1.5044.4232 1.8729.1346.413.6833 1.2381 1.2685 1.2381h3.5716a.7492.7492 0 00.1296-.0131 8.7874 8.7874 0 01-.8119.9526zM6.8369 20.024a.714.714 0 11-.2997-1.396.714.714 0 01.2997 1.396zM4.1177 8.9972a.7137.7137 0 11-1.304.5791.7137.7137 0 011.304-.579zm-.8352 1.9813l1.5347-.6824a.65.65 0 00.33-.8585l-.3158-.7147h1.2432v5.6025H3.5669a8.7753 8.7753 0 01-.2834-3.348zm6.7343-.5437V8.7836h2.9601c.153 0 1.0792.1772 1.0792.8697 0 .575-.7107.7815-1.2948.7815zm10.7574 1.4862c0 .2187-.008.4363-.0243.651h-.9c-.09 0-.1265.0586-.1265.1477v.413c0 .973-.5487 1.1846-1.0296 1.2382-.4576.0517-.9648-.1913-1.0275-.4717-.2704-1.5186-.7198-1.8436-1.4305-2.4034.8817-.5599 1.799-1.386 1.799-2.4915 0-1.1936-.819-1.9458-1.3769-2.3153-.7825-.5163-1.6491-.6195-1.883-.6195H5.4682a8.7651 8.7651 0 014.907-2.7699l1.0974 1.151a.648.648 0 00.9182.0213l1.227-1.1743a8.7753 8.7753 0 016.0044 4.2762l-.8403 1.8982a.652.652 0 00.33.8585l1.6178.7188c.0283.2875.0425.577.0425.8717zm-9.3006-9.5993a.7128.7128 0 11.984 1.0316.7137.7137 0 01-.984-1.0316zm8.3389 6.71a.7107.7107 0 01.9395-.3625.7137.7137 0 11-.9405.3635z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/rxdb.svg b/assets/lib/simple-icons/icons/rxdb.svg
new file mode 100644
index 00000000..c22f5843
--- /dev/null
+++ b/assets/lib/simple-icons/icons/rxdb.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>RxDB</title><path d="M11.096 3.452h1.15v-1.15h1.151v1.15h6.411v4.932H4.192V1.15h1.15V2.3h1.151V0h1.15v1.15h1.152v2.302h1.15V1.151h1.151v2.301zM4.192 14.466h15.616V9.534H4.192v4.932zm15.616 1.15H4.192v4.932h6.41v1.15h1.151v-1.15h1.151v2.301h1.15v-2.301h1.152v2.301h1.15V24h1.151v-2.301h1.15v1.15h1.151v-7.233z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ryanair.svg b/assets/lib/simple-icons/icons/ryanair.svg
index d8d5db2b..505568e4 100644
--- a/assets/lib/simple-icons/icons/ryanair.svg
+++ b/assets/lib/simple-icons/icons/ryanair.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Ryanair icon</title><path d="M9.847.008c-.718.047-1.464.288-1.986.81-.796.996-1.692 1.891-2.787 2.488a.3.3 0 0 1-.396 0c-.1-.299.198-.497.198-.696.1-.398.2-.895 0-1.393C4.478.72 3.583.62 2.886.72c-.298 0-.596.1-.994.2-.1 0-.3.098-.3.297.1.398-.098.897-.198 1.195-.1.2 0 .298 0 .597-.1 0 0 .099-.099.099 0 .497.697.298.995.596 0 .1.1.2.1.3.099.099.098.298.098.398C1.991 5.198.6 5.694.201 6.092-.396 6.888.7 7.187.7 7.585v.198c0 .497.198.797.198 1.195.398.995.994 1.89 1.591 2.885.2.299.4.696.698 1.193.1.2.197.398.396.498 1.99 1.99 4.676 3.183 6.467 5.172l1.195 1.493c.597.796 1.193 1.592 1.69 2.487.299.398.498.896.896 1.294.299-.1.1-.497.1-.696.099 0-.1-.001 0-.1-.1-.399-.3-.796-.4-1.194-.099-.1-.098-.198-.098-.198-.1-.497-.299-.995-.498-1.492-.398-.796-.695-1.692-1.193-2.487-.497-.796-1.193-1.593-2.089-2.19a5.537 5.537 0 0 1-1.593-1.394c-.597-.795-1.094-1.69-1.591-2.586-.2-.398-.298-.894-.597-1.292-.497-.696-1.59-1.095-1.69-1.89.1-.995.497-1.791 1.094-2.587 1.094-1.492 2.984-2.29 4.974-2.19 2.09-.1 4.08.797 6.368.896 1.193.1 2.486-.1 3.58-.398l.896-.298a9.874 9.874 0 0 0 2.686-1.393c.199-.1.198-.299.198-.398-.1-.1-.198 0-.297 0-.697.1-1.195.398-1.89.398h-1.095c-1.691-.199-3.284-.596-4.776-1.094C14.129.92 12.437.322 10.546.024a4.011 4.011 0 0 0-.7-.016zm.264 4.685c-.303.056-.51.28-.659.504a18.378 18.378 0 0 0-1.492 5.671c0 .2.001.498.2.597 0 .1.198.1.198 0 .796-1.89 1.195-3.78 2.29-5.57.099-.3.496-.598.197-.996-.099-.1-.199-.2-.398-.2a.88.88 0 0 0-.336-.006zm2.922.504c-.199 0-.197.1-.297.2-1.094 1.79-1.89 3.878-2.487 5.868-.299.895-.498 1.89-.3 2.786 0 .1.101.1.2.1.1 0 .2-.1.2-.199.596-2.387 1.988-4.577 3.083-6.766.199-.597.597-1.093.497-1.79-.199-.198-.597-.2-.896-.2zm6.568 0c-.398.1-.697.498-.797.796-.994 2.487-2.387 4.775-3.482 7.163-.795 2.188-1.79 4.279-1.89 6.666 0 .2 0 .398.2.597.1 0 .198.1.198 0 .299-.498.398-1.096.597-1.693.696-1.89 1.392-3.78 2.487-5.57 1.293-2.09 2.886-4.08 3.682-6.368.1-.398.298-.696.1-1.094-.2-.298-.597-.398-1.095-.497zm-3.284.099c-.398.1-.597.399-.796.697-.498 1.095-1.094 1.99-1.592 3.084-1.194 2.189-1.79 4.477-2.089 6.964 0 .299 0 .696.1.995.099 0 .299 0 .299-.1.199-.696.397-1.392.596-1.989.896-3.084 2.986-5.571 4.279-8.456.1-.2.298-.697 0-.896-.199-.1-.498-.2-.797-.3z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Ryanair</title><path d="M9.847.008c-.718.047-1.464.288-1.986.81-.796.996-1.692 1.891-2.787 2.488a.3.3 0 0 1-.396 0c-.1-.299.198-.497.198-.696.1-.398.2-.895 0-1.393C4.478.72 3.583.62 2.886.72c-.298 0-.596.1-.994.2-.1 0-.3.098-.3.297.1.398-.098.897-.198 1.195-.1.2 0 .298 0 .597-.1 0 0 .099-.099.099 0 .497.697.298.995.596 0 .1.1.2.1.3.099.099.098.298.098.398C1.991 5.198.6 5.694.201 6.092-.396 6.888.7 7.187.7 7.585v.198c0 .497.198.797.198 1.195.398.995.994 1.89 1.591 2.885.2.299.4.696.698 1.193.1.2.197.398.396.498 1.99 1.99 4.676 3.183 6.467 5.172l1.195 1.493c.597.796 1.193 1.592 1.69 2.487.299.398.498.896.896 1.294.299-.1.1-.497.1-.696.099 0-.1-.001 0-.1-.1-.399-.3-.796-.4-1.194-.099-.1-.098-.198-.098-.198-.1-.497-.299-.995-.498-1.492-.398-.796-.695-1.692-1.193-2.487-.497-.796-1.193-1.593-2.089-2.19a5.537 5.537 0 0 1-1.593-1.394c-.597-.795-1.094-1.69-1.591-2.586-.2-.398-.298-.894-.597-1.292-.497-.696-1.59-1.095-1.69-1.89.1-.995.497-1.791 1.094-2.587 1.094-1.492 2.984-2.29 4.974-2.19 2.09-.1 4.08.797 6.368.896 1.193.1 2.486-.1 3.58-.398l.896-.298a9.874 9.874 0 0 0 2.686-1.393c.199-.1.198-.299.198-.398-.1-.1-.198 0-.297 0-.697.1-1.195.398-1.89.398h-1.095c-1.691-.199-3.284-.596-4.776-1.094C14.129.92 12.437.322 10.546.024a4.011 4.011 0 0 0-.7-.016zm.264 4.685c-.303.056-.51.28-.659.504a18.378 18.378 0 0 0-1.492 5.671c0 .2.001.498.2.597 0 .1.198.1.198 0 .796-1.89 1.195-3.78 2.29-5.57.099-.3.496-.598.197-.996-.099-.1-.199-.2-.398-.2a.88.88 0 0 0-.336-.006zm2.922.504c-.199 0-.197.1-.297.2-1.094 1.79-1.89 3.878-2.487 5.868-.299.895-.498 1.89-.3 2.786 0 .1.101.1.2.1.1 0 .2-.1.2-.199.596-2.387 1.988-4.577 3.083-6.766.199-.597.597-1.093.497-1.79-.199-.198-.597-.2-.896-.2zm6.568 0c-.398.1-.697.498-.797.796-.994 2.487-2.387 4.775-3.482 7.163-.795 2.188-1.79 4.279-1.89 6.666 0 .2 0 .398.2.597.1 0 .198.1.198 0 .299-.498.398-1.096.597-1.693.696-1.89 1.392-3.78 2.487-5.57 1.293-2.09 2.886-4.08 3.682-6.368.1-.398.298-.696.1-1.094-.2-.298-.597-.398-1.095-.497zm-3.284.099c-.398.1-.597.399-.796.697-.498 1.095-1.094 1.99-1.592 3.084-1.194 2.189-1.79 4.477-2.089 6.964 0 .299 0 .696.1.995.099 0 .299 0 .299-.1.199-.696.397-1.392.596-1.989.896-3.084 2.986-5.571 4.279-8.456.1-.2.298-.697 0-.896-.199-.1-.498-.2-.797-.3z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/s7airlines.svg b/assets/lib/simple-icons/icons/s7airlines.svg
new file mode 100644
index 00000000..7fb3e60e
--- /dev/null
+++ b/assets/lib/simple-icons/icons/s7airlines.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>S7 Airlines</title><path d="M12.004 0C5.375 0 0 5.373 0 12.002 0 18.632 5.375 24 12.004 24 18.63 24 24 18.632 24 12.002 24 5.373 18.631 0 12.004 0zm-.875 5.739h1.705L12 7.825h-1.168c-1.255 0-2.061.004-2.496.148-.423.132-.735.29-.906.54-.157.202-.21.477-.21.716 0 .25.027.487.275.806.305.305.809.699 1.797 1.307 1.97 1.229 2.552 2.204 2.552 3.487 0 2.09-1.97 4.084-5.272 4.084-.992 0-2.377-.146-2.961-.332l-.307-.09c.12-.397.512-1.493.685-1.956l.31.078c.648.16 1.664.252 2.338.252 1.932 0 2.682-.872 2.682-1.638 0-.7-.382-1.084-2.299-2.246-1.796-1.11-2.417-2.076-2.417-3.409 0-1.6 1.03-2.818 2.522-3.399.888-.33 2.114-.434 4.004-.434zm2.959 0h5.871c.276 0 .329.195.223.407-.384.952-4.007 10.028-4.007 10.028h-2.421s2.861-7.291 3.336-8.377c-.33 0-.581.028-1.89.028h-1.947Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/sabanci.svg b/assets/lib/simple-icons/icons/sabanci.svg
new file mode 100644
index 00000000..1299b539
--- /dev/null
+++ b/assets/lib/simple-icons/icons/sabanci.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Sabanci</title><path d="M5.3877 8.88a15.8031 15.8031 0 0 0-1.5366.1053c-1.1437.1457-1.5395.6461-1.5395 1.8724 0 .9713.2576 1.44.9035 1.661.3132.1092.8498.155 1.7434.155h1.6998a8.7053 8.7053 0 0 1 .923.0194c.3787.0365.5629.2113.5629.5246 0 .5463-.2429.6-2.4283.6a8.499 8.499 0 0 1-1.1724-.0631c-.2768-.0656-.34-.1751-.3595-.6365H2.3386v.3595c0 .8766.2959 1.3186.988 1.4935.4516.1214 1.0785.1579 2.4723.1579a23.1753 23.1753 0 0 0 2.5834-.0925c1.1704-.1263 1.6125-.6312 1.6125-1.8672 0-.6386-.129-1.1-.3766-1.3768-.2865-.3302-.6651-.442-1.5879-.4856-.4978-.0195-.8668-.0294-.9713-.0294H5.308a3.181 3.181 0 0 1-.7284-.036.471.471 0 0 1-.4127-.4857c0-.34.1652-.4716.6265-.508.2866-.017 1.117-.046 1.6998-.046 1.2652 0 1.44.0752 1.44.6095h1.804c0-1.0612-.2037-1.4862-.8204-1.717-.4711-.1748-.9595-.211-2.7589-.211a15.8031 15.8031 0 0 0-.7702-.0033Zm11.2217.0446-3.4603 6.1508h2.1224l.59-1.0975h3.9677l.6071 1.0975h2.0493l-3.3678-6.1508Zm1.236 1.3185 1.3379 2.4553H16.534ZM0 12.0012a6.1532 6.1532 0 0 1 11.998-1.928 6.1556 6.1556 0 1 1 0 3.8536A6.1532 6.1532 0 0 1 0 12.0012Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/safari.svg b/assets/lib/simple-icons/icons/safari.svg
index a1ea2317..964ebbdd 100644
--- a/assets/lib/simple-icons/icons/safari.svg
+++ b/assets/lib/simple-icons/icons/safari.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Safari icon</title><path d="M12 24C5.373 24 0 18.627 0 12S5.373 0 12 0s12 5.373 12 12-5.373 12-12 12zm0-.75c6.213 0 11.25-5.037 11.25-11.25S18.213.75 12 .75.75 5.787.75 12 5.787 23.25 12 23.25zM12 2a.25.25 0 0 1 .25.25v1a.25.25 0 1 1-.5 0v-1A.25.25 0 0 1 12 2zm0 18.5a.25.25 0 0 1 .25.25v1a.25.25 0 1 1-.5 0v-1a.25.25 0 0 1 .25-.25zm7.071-15.571a.25.25 0 0 1 0 .353l-.707.708a.25.25 0 0 1-.354-.354l.708-.707a.25.25 0 0 1 .353 0zM5.99 18.01a.25.25 0 0 1 0 .354l-.708.707a.25.25 0 1 1-.353-.353l.707-.708a.25.25 0 0 1 .354 0zM4.929 4.93a.25.25 0 0 1 .353 0l.708.707a.25.25 0 0 1-.354.354l-.707-.708a.25.25 0 0 1 0-.353zM18.01 18.01a.25.25 0 0 1 .354 0l.707.708a.25.25 0 1 1-.353.353l-.708-.707a.25.25 0 0 1 0-.354zM2 12a.25.25 0 0 1 .25-.25h1a.25.25 0 1 1 0 .5h-1A.25.25 0 0 1 2 12zm18.5 0a.25.25 0 0 1 .25-.25h1a.25.25 0 1 1 0 .5h-1a.25.25 0 0 1-.25-.25zm-4.593-9.205a.25.25 0 0 1 .133.328l-.391.92a.25.25 0 1 1-.46-.195l.39-.92a.25.25 0 0 1 .328-.133zM8.68 19.825a.25.25 0 0 1 .132.327l-.39.92a.25.25 0 0 1-.46-.195l.39-.92a.25.25 0 0 1 .328-.133zM21.272 8.253a.25.25 0 0 1-.138.325l-.927.375a.25.25 0 1 1-.188-.464l.927-.374a.25.25 0 0 1 .326.138zm-17.153 6.93a.25.25 0 0 1-.138.326l-.927.374a.25.25 0 1 1-.188-.463l.927-.375a.25.25 0 0 1 .326.138zM8.254 2.728a.25.25 0 0 1 .325.138l.375.927a.25.25 0 0 1-.464.188l-.374-.927a.25.25 0 0 1 .138-.326zm6.93 17.153a.25.25 0 0 1 .326.138l.374.927a.25.25 0 1 1-.463.188l-.375-.927a.25.25 0 0 1 .138-.326zM2.795 8.093a.25.25 0 0 1 .328-.133l.92.391a.25.25 0 0 1-.195.46l-.92-.39a.25.25 0 0 1-.133-.328zm17.03 7.228a.25.25 0 0 1 .327-.132l.92.39a.25.25 0 1 1-.195.46l-.92-.39a.25.25 0 0 1-.133-.328zM12.879 12.879L11.12 11.12l-4.141 5.9 5.899-4.142zm6.192-7.95l-5.834 8.308-8.308 5.834 5.834-8.308 8.308-5.834z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Safari</title><path d="M12 24C5.373 24 0 18.627 0 12S5.373 0 12 0s12 5.373 12 12-5.373 12-12 12zm0-.75c6.213 0 11.25-5.037 11.25-11.25S18.213.75 12 .75.75 5.787.75 12 5.787 23.25 12 23.25zM12 2a.25.25 0 0 1 .25.25v1a.25.25 0 1 1-.5 0v-1A.25.25 0 0 1 12 2zm0 18.5a.25.25 0 0 1 .25.25v1a.25.25 0 1 1-.5 0v-1a.25.25 0 0 1 .25-.25zm7.071-15.571a.25.25 0 0 1 0 .353l-.707.708a.25.25 0 0 1-.354-.354l.708-.707a.25.25 0 0 1 .353 0zM5.99 18.01a.25.25 0 0 1 0 .354l-.708.707a.25.25 0 1 1-.353-.353l.707-.708a.25.25 0 0 1 .354 0zM4.929 4.93a.25.25 0 0 1 .353 0l.708.707a.25.25 0 0 1-.354.354l-.707-.708a.25.25 0 0 1 0-.353zM18.01 18.01a.25.25 0 0 1 .354 0l.707.708a.25.25 0 1 1-.353.353l-.708-.707a.25.25 0 0 1 0-.354zM2 12a.25.25 0 0 1 .25-.25h1a.25.25 0 1 1 0 .5h-1A.25.25 0 0 1 2 12zm18.5 0a.25.25 0 0 1 .25-.25h1a.25.25 0 1 1 0 .5h-1a.25.25 0 0 1-.25-.25zm-4.593-9.205a.25.25 0 0 1 .133.328l-.391.92a.25.25 0 1 1-.46-.195l.39-.92a.25.25 0 0 1 .328-.133zM8.68 19.825a.25.25 0 0 1 .132.327l-.39.92a.25.25 0 0 1-.46-.195l.39-.92a.25.25 0 0 1 .328-.133zM21.272 8.253a.25.25 0 0 1-.138.325l-.927.375a.25.25 0 1 1-.188-.464l.927-.374a.25.25 0 0 1 .326.138zm-17.153 6.93a.25.25 0 0 1-.138.326l-.927.374a.25.25 0 1 1-.188-.463l.927-.375a.25.25 0 0 1 .326.138zM8.254 2.728a.25.25 0 0 1 .325.138l.375.927a.25.25 0 0 1-.464.188l-.374-.927a.25.25 0 0 1 .138-.326zm6.93 17.153a.25.25 0 0 1 .326.138l.374.927a.25.25 0 1 1-.463.188l-.375-.927a.25.25 0 0 1 .138-.326zM2.795 8.093a.25.25 0 0 1 .328-.133l.92.391a.25.25 0 0 1-.195.46l-.92-.39a.25.25 0 0 1-.133-.328zm17.03 7.228a.25.25 0 0 1 .327-.132l.92.39a.25.25 0 1 1-.195.46l-.92-.39a.25.25 0 0 1-.133-.328zM12.879 12.879L11.12 11.12l-4.141 5.9 5.899-4.142zm6.192-7.95l-5.834 8.308-8.308 5.834 5.834-8.308 8.308-5.834z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/sahibinden.svg b/assets/lib/simple-icons/icons/sahibinden.svg
index cb2d608d..9dbd423c 100644
--- a/assets/lib/simple-icons/icons/sahibinden.svg
+++ b/assets/lib/simple-icons/icons/sahibinden.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Sahibinden icon</title><path d="M0 0v24h24V0zm11.517 4.723c.563-.007 1.13-.004 1.69.063 2.412.054 4.853 2.18 4.879 4.508h-3.319c.009-.694-.603-1.555-1.279-1.732-1.105-.269-2.46-.355-3.43.294-.738.445-1.065 1.672-.095 2.056 2.288 1.083 5.158.846 7.224 2.372 1.698 1.21 1.598 3.666.274 5.086-1.718 1.84-4.636 2.132-7.099 1.782-2.448-.117-4.755-2.245-4.819-4.562h3.311c-.056.832.638 1.557 1.46 1.822 1.27.275 2.726.358 3.93-.19.96-.323 1.024-1.544.284-2.103-1.595-.897-3.565-.924-5.297-1.518-2.012-.39-3.643-2.278-3.26-4.197.424-2.342 3.127-3.727 5.546-3.681z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Sahibinden</title><path d="M0 0v24h24V0zm11.517 4.723c.563-.007 1.13-.004 1.69.063 2.412.054 4.853 2.18 4.879 4.508h-3.319c.009-.694-.603-1.555-1.279-1.732-1.105-.269-2.46-.355-3.43.294-.738.445-1.065 1.672-.095 2.056 2.288 1.083 5.158.846 7.224 2.372 1.698 1.21 1.598 3.666.274 5.086-1.718 1.84-4.636 2.132-7.099 1.782-2.448-.117-4.755-2.245-4.819-4.562h3.311c-.056.832.638 1.557 1.46 1.822 1.27.275 2.726.358 3.93-.19.96-.323 1.024-1.544.284-2.103-1.595-.897-3.565-.924-5.297-1.518-2.012-.39-3.643-2.278-3.26-4.197.424-2.342 3.127-3.727 5.546-3.681z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/sailfishos.svg b/assets/lib/simple-icons/icons/sailfishos.svg
new file mode 100644
index 00000000..e67bc012
--- /dev/null
+++ b/assets/lib/simple-icons/icons/sailfishos.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Sailfish OS</title><path d="M23.98132 5.10497a.31172.31172 0 0 0-.40763-.17385l-2.3379.81527a24.35014 24.35014 0 0 1-3.1292.82126c-2.16405.39565-3.71666-1.3368-3.71666-1.3368a.3237.3237 0 0 0-.35968-.1019 4.83167 4.83167 0 0 0-.45559.17384 13.1462 13.1462 0 0 1 1.70247-4.7957c.10211-.10285.10211-.26881 0-.37166a.36567.36567 0 0 0-.40763-.1139 27.1736 27.1736 0 0 0-4.19623 2.60166c-2.87742 2.236-4.47798 4.51395-4.6758 6.7979-.14987 1.85833 1.07303 3.07524 2.24198 4.19623l.20382.19783a4.50795 4.50795 0 0 1-.28774 3.59077c-1.04306 2.30193-3.35699 4.31013-6.25838 5.39516-.91118.34768-1.6785.59946-1.6785.59946-.15467.05152-.24352.21354-.20381.37166A.3237.3237 0 0 0 .32056 24H.3985a34.28921 34.28921 0 0 0 6.59408-2.35588l.59947-.29974c3.71666-1.93026 5.70088-4.19623 5.92867-6.68999.15586-1.58857-.7853-2.65561-1.79838-3.59677 1.29483-1.79838 5.49107-3.2251 5.52104-3.2251l4.14228-1.43871c1.32481-.41962 2.3439-.82126 2.39785-.84524a.29973.29973 0 0 0 .17984-.41963zM12.9692 5.6265a10.23281 10.23281 0 0 0-3.51285 2.72755 3.29105 3.29105 0 0 1-.2278-1.54062c.15587-1.70846 1.98422-3.69268 2.26597-3.99241a29.92513 29.92513 0 0 1 2.7935-1.75643 12.8045 12.8045 0 0 0-1.3488 4.5619ZM5.25413 21.74602a10.61047 10.61047 0 0 0 3.51285-4.09432 5.74284 5.74284 0 0 0 .5575-2.87742 3.03927 3.03927 0 0 1 .86922 2.25997c-.2278 2.18205-2.92537 3.74065-2.94935 3.76462-.64742.3417-1.31282.65342-1.99022.94715zm7.60717-7.14558c-.14986 1.71446-1.24688 3.17715-2.74553 4.38806a4.0104 4.0104 0 0 0 .6774-1.88231c.15585-1.63653-.98912-2.7755-2.11011-3.86653-1.121-1.09102-2.18804-2.15806-2.06215-3.72266.15586-1.83435 1.30083-3.47088 2.69758-4.85564a5.2393 5.2393 0 0 0-.76132 2.1281c-.20382 2.00819 1.14497 3.24908 2.31392 4.3401 1.16895 1.09102 2.1101 1.96024 1.98422 3.47088zm-1.65451-4.0164a9.38757 9.38757 0 0 1-1.4507-1.57058c1.09702-1.75643 3.59677-2.9014 4.32812-3.19513a5.14938 5.14938 0 0 0 2.84744 1.39674c-.61145.2218-4.3401 1.53462-5.72486 3.36898z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/salesforce.svg b/assets/lib/simple-icons/icons/salesforce.svg
index 70000589..5922c5bc 100644
--- a/assets/lib/simple-icons/icons/salesforce.svg
+++ b/assets/lib/simple-icons/icons/salesforce.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Salesforce icon</title><path d="M10.005 5.416c.75-.796 1.845-1.306 3.046-1.306 1.56 0 2.954.9 3.689 2.205.63-.3 1.35-.45 2.101-.45 2.849 0 5.159 2.34 5.159 5.22s-2.311 5.22-5.176 5.22c-.345 0-.689-.044-1.02-.104-.645 1.17-1.875 1.95-3.3 1.95-.6 0-1.155-.15-1.65-.375-.659 1.546-2.189 2.624-3.975 2.624-1.859 0-3.45-1.169-4.05-2.819-.27.061-.54.075-.825.075-2.204 0-4.005-1.8-4.005-4.05 0-1.5.811-2.805 2.01-3.51-.255-.57-.39-1.2-.39-1.846 0-2.58 2.1-4.649 4.65-4.649 1.53 0 2.85.704 3.72 1.8"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Salesforce</title><path d="M10.006 5.415a4.195 4.195 0 013.045-1.306c1.56 0 2.954.9 3.69 2.205.63-.3 1.35-.45 2.1-.45 2.85 0 5.159 2.34 5.159 5.22s-2.31 5.22-5.176 5.22c-.345 0-.69-.044-1.02-.104a3.75 3.75 0 01-3.3 1.95c-.6 0-1.155-.15-1.65-.375A4.314 4.314 0 018.88 20.4a4.302 4.302 0 01-4.05-2.82c-.27.062-.54.076-.825.076-2.204 0-4.005-1.8-4.005-4.05 0-1.5.811-2.805 2.01-3.51-.255-.57-.39-1.2-.39-1.846 0-2.58 2.1-4.65 4.65-4.65 1.53 0 2.85.705 3.72 1.8"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/saltproject.svg b/assets/lib/simple-icons/icons/saltproject.svg
new file mode 100644
index 00000000..3c8adee3
--- /dev/null
+++ b/assets/lib/simple-icons/icons/saltproject.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Salt Project</title><path d="M0 12v10.56h12L18 12h6V1.44H12L6 12Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/saltstack.svg b/assets/lib/simple-icons/icons/saltstack.svg
deleted file mode 100644
index de65cff6..00000000
--- a/assets/lib/simple-icons/icons/saltstack.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>SaltStack icon</title><path d="M6.396 0L1.05.002v5.346h5.347V0zm5.94 2.697c-1.033 0-1.959.1-2.791.291v3.783c.645-.374 1.471-.568 2.5-.568 1.001 0 1.838.17 2.514.508 1.01.512 1.555 1.375 1.629 2.59h4.056c-.073-2.147-.874-3.783-2.394-4.912-1.522-1.127-3.36-1.692-5.514-1.692zM4.496 8.51c-.01.16-.023.322-.023.488 0 1.982.679 3.438 2.04 4.371.806.558 2.281 1.072 4.43 1.547l2.186.482c1.28.274 2.215.589 2.805.946.59.365.884.882.884 1.549 0 1.142-.603 1.922-1.806 2.341-.635.22-1.458.33-2.475.33-1.697 0-2.896-.417-3.596-1.248-.382-.457-.638-1.147-.767-2.07h-4.03c0 2.102.762 3.754 2.286 4.955C7.953 23.402 10.042 24 12.7 24c2.603 0 4.619-.609 6.045-1.828 1.427-1.22 2.14-2.751 2.14-4.596 0-1.8-.601-3.173-1.804-4.125-.776-.611-1.94-1.102-3.494-1.467l-3.543-.836c-1.367-.319-2.264-.596-2.686-.835-.655-.356-.982-.894-.982-1.616 0-.065.017-.124.021-.187H4.496zM21.92 21.844a1.077 1.077 0 000 2.152 1.077 1.077 0 000-2.152zm-.014.177a.898.898 0 01.014 0 .898.898 0 010 1.793.898.898 0 01-.014-1.793zm-.42.258v1.272h.221v-.49h.248l.256.49h.234v-.01l-.285-.531a.392.392 0 00.174-.133.356.356 0 00.06-.213.42.42 0 00-.033-.166.31.31 0 00-.088-.121.4.4 0 00-.144-.074.695.695 0 00-.195-.024h-.448zm.221.178h.227a.338.338 0 01.107.016.174.174 0 01.117.109.266.266 0 010 .176.175.175 0 01-.047.066.21.21 0 01-.072.045.314.314 0 01-.105.016h-.227v-.428z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/samsung.svg b/assets/lib/simple-icons/icons/samsung.svg
index b1406819..627cbf2c 100644
--- a/assets/lib/simple-icons/icons/samsung.svg
+++ b/assets/lib/simple-icons/icons/samsung.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 24 24"><title>Samsung icon</title><path d="M19.8166 10.2808l.0459 2.6934h-.023l-.7793-2.6934h-1.2837v3.3925h.8481l-.0458-2.785h.023l.8366 2.785h1.2264v-3.3925zm-16.149 0l-.6418 3.427h.9284l.4699-3.1175h.0229l.4585 3.1174h.9169l-.6304-3.4269zm5.1805 0l-.424 2.6132h-.023l-.424-2.6132H6.5788l-.0688 3.427h.8596l.023-3.0832h.0114l.573 3.0831h.8711l.5731-3.083h.023l.0228 3.083h.8596l-.0802-3.4269zm-7.2664 2.4527c.0343.0802.0229.1949.0114.2522-.0229.1146-.1031.2292-.3324.2292-.2177 0-.3438-.126-.3438-.3095v-.3323H0v.2636c0 .7679.6074.9971 1.2493.9971.6189 0 1.1346-.2178 1.2149-.7794.0458-.298.0114-.4928 0-.5616-.1605-.722-1.467-.9283-1.5588-1.3295-.0114-.0688-.0114-.1375 0-.1834.023-.1146.1032-.2292.3095-.2292.2063 0 .321.126.321.3095v.2063h.8595v-.2407c0-.745-.6762-.8596-1.1576-.8596-.6074 0-1.1117.2063-1.2034.7564-.023.149-.0344.2866.0114.4585.1376.7106 1.364.9169 1.5358 1.3524m11.152 0c.0343.0803.0228.1834.0114.2522-.023.1146-.1032.2292-.3324.2292-.2178 0-.3438-.126-.3438-.3095v-.3323h-.917v.2636c0 .7564.596.9857 1.2379.9857.6189 0 1.1232-.2063 1.2034-.7794.0459-.298.0115-.4814 0-.5616-.1375-.7106-1.4327-.9284-1.5243-1.318-.0115-.0688-.0115-.1376 0-.1835.0229-.1146.1031-.2292.3094-.2292.1948 0 .321.126.321.3095v.2063h.848v-.2407c0-.745-.6647-.8596-1.146-.8596-.6075 0-1.1004.1948-1.192.7564-.023.149-.023.2866.0114.4585.1376.7106 1.341.9054 1.513 1.3524m2.8882.4585c.2407 0 .3094-.1605.3323-.2522.0115-.0343.0115-.0917.0115-.126v-2.533h.871v2.4642c0 .0688 0 .1948-.0114.2292-.0573.6419-.5616.8482-1.192.8482-.6303 0-1.1346-.2063-1.192-.8482 0-.0344-.0114-.1604-.0114-.2292v-2.4642h.871v2.533c0 .0458 0 .0916.0115.126 0 .0917.0688.2522.3095.2522m7.1518-.0344c.2522 0 .3324-.1605.3553-.2522.0115-.0343.0115-.0917.0115-.126v-.4929h-.3553v-.5043H24v.917c0 .0687 0 .1145-.0115.2292-.0573.6303-.596.8481-1.2034.8481-.6075 0-1.1461-.2178-1.2034-.8481-.0115-.1147-.0115-.1605-.0115-.2293v-1.444c0-.0574.0115-.172.0115-.2293.0802-.6419.596-.8482 1.2034-.8482s1.1347.2063 1.2034.8482c.0115.1031.0115.2292.0115.2292v.1146h-.8596v-.1948s0-.0803-.0115-.1261c-.0114-.0802-.0802-.2521-.3438-.2521-.2521 0-.321.1604-.3438.2521-.0115.0458-.0115.1032-.0115.1605v1.5702c0 .0458 0 .0916.0115.126 0 .0917.0917.2522.3323.2522"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Samsung</title><path d="M19.8166 10.2808l.0459 2.6934h-.023l-.7793-2.6934h-1.2837v3.3925h.8481l-.0458-2.785h.023l.8366 2.785h1.2264v-3.3925zm-16.149 0l-.6418 3.427h.9284l.4699-3.1175h.0229l.4585 3.1174h.9169l-.6304-3.4269zm5.1805 0l-.424 2.6132h-.023l-.424-2.6132H6.5788l-.0688 3.427h.8596l.023-3.0832h.0114l.573 3.0831h.8711l.5731-3.083h.023l.0228 3.083h.8596l-.0802-3.4269zm-7.2664 2.4527c.0343.0802.0229.1949.0114.2522-.0229.1146-.1031.2292-.3324.2292-.2177 0-.3438-.126-.3438-.3095v-.3323H0v.2636c0 .7679.6074.9971 1.2493.9971.6189 0 1.1346-.2178 1.2149-.7794.0458-.298.0114-.4928 0-.5616-.1605-.722-1.467-.9283-1.5588-1.3295-.0114-.0688-.0114-.1375 0-.1834.023-.1146.1032-.2292.3095-.2292.2063 0 .321.126.321.3095v.2063h.8595v-.2407c0-.745-.6762-.8596-1.1576-.8596-.6074 0-1.1117.2063-1.2034.7564-.023.149-.0344.2866.0114.4585.1376.7106 1.364.9169 1.5358 1.3524m11.152 0c.0343.0803.0228.1834.0114.2522-.023.1146-.1032.2292-.3324.2292-.2178 0-.3438-.126-.3438-.3095v-.3323h-.917v.2636c0 .7564.596.9857 1.2379.9857.6189 0 1.1232-.2063 1.2034-.7794.0459-.298.0115-.4814 0-.5616-.1375-.7106-1.4327-.9284-1.5243-1.318-.0115-.0688-.0115-.1376 0-.1835.0229-.1146.1031-.2292.3094-.2292.1948 0 .321.126.321.3095v.2063h.848v-.2407c0-.745-.6647-.8596-1.146-.8596-.6075 0-1.1004.1948-1.192.7564-.023.149-.023.2866.0114.4585.1376.7106 1.341.9054 1.513 1.3524m2.8882.4585c.2407 0 .3094-.1605.3323-.2522.0115-.0343.0115-.0917.0115-.126v-2.533h.871v2.4642c0 .0688 0 .1948-.0114.2292-.0573.6419-.5616.8482-1.192.8482-.6303 0-1.1346-.2063-1.192-.8482 0-.0344-.0114-.1604-.0114-.2292v-2.4642h.871v2.533c0 .0458 0 .0916.0115.126 0 .0917.0688.2522.3095.2522m7.1518-.0344c.2522 0 .3324-.1605.3553-.2522.0115-.0343.0115-.0917.0115-.126v-.4929h-.3553v-.5043H24v.917c0 .0687 0 .1145-.0115.2292-.0573.6303-.596.8481-1.2034.8481-.6075 0-1.1461-.2178-1.2034-.8481-.0115-.1147-.0115-.1605-.0115-.2293v-1.444c0-.0574.0115-.172.0115-.2293.0802-.6419.596-.8482 1.2034-.8482s1.1347.2063 1.2034.8482c.0115.1031.0115.2292.0115.2292v.1146h-.8596v-.1948s0-.0803-.0115-.1261c-.0114-.0802-.0802-.2521-.3438-.2521-.2521 0-.321.1604-.3438.2521-.0115.0458-.0115.1032-.0115.1605v1.5702c0 .0458 0 .0916.0115.126 0 .0917.0917.2522.3323.2522"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/samsungpay.svg b/assets/lib/simple-icons/icons/samsungpay.svg
index 4e4b804e..6066a11f 100644
--- a/assets/lib/simple-icons/icons/samsungpay.svg
+++ b/assets/lib/simple-icons/icons/samsungpay.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Samsung Pay icon</title><path d="M23.978 10.702c-.133-3.828-1.139-6.909-3.408-8.592S14.89-.157 10.604.047C8.658.141 6.902.394 5.477.964c-1.47.59-2.606 1.421-3.437 2.578C.369 5.867-.148 9.377.035 13.422c.174 3.84 1.169 6.878 3.465 8.535 2.284 1.647 5.996 2.17 9.909 2.005 3.798-.16 6.883-1.167 8.535-3.466 1.649-2.295 2.175-5.683 2.034-9.794zM6.602 14.77h-.495v-1.063h.495c.946 0 1.636-.732 1.636-1.636 0-.903-.732-1.636-1.636-1.636H5.003a.13.13 0 0 0-.124.093v5.802h-1.03v-5.802c0-.638.517-1.155 1.155-1.155h1.599c1.49 0 2.725 1.208 2.725 2.698S8.175 14.77 6.602 14.77zm8.702.001H14.26v-2.78c-.021-.784-.853-1.565-1.739-1.565-.996 0-1.729.85-1.729 1.646 0 1.126.794 1.641 1.729 1.641h.368v1.058h-.368c-1.538-.001-2.785-.985-2.785-2.699 0-1.398 1.247-2.699 2.785-2.699 1.389 0 2.739 1.165 2.783 2.618v2.78zm1.324-5.221l1.361 2.788-.592 1.203-1.949-3.99h1.18zm1.261 6.971h-1.181l3.426-6.971h1.181l-3.426 6.971z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Samsung Pay</title><path d="m6.703 17.387.617-1.5-1.205-2.795h.724l.817 1.98.776-1.98h.711l-1.752 4.295Zm-2.492-1.295c-.708 0-1.445-.569-1.445-1.528 0-.975.712-1.531 1.455-1.531.387 0 .735.16.946.411v-.352h.677v2.94h-.677v-.382a1.222 1.222 0 0 1-.956.442Zm-4.206-.06v-3.666h1.258c.759 0 1.32.581 1.32 1.305 0 .728-.562 1.312-1.325 1.312H.69v1.05zm4.315-.562c.503 0 .88-.407.88-.914 0-.497-.377-.906-.88-.906a.886.886 0 0 0-.888.906c0 .512.386.914.888.914zM.69 14.348h.52c.408 0 .686-.3.686-.677a.66.66 0 0 0-.685-.672H.69Zm.557-4.063C.603 10.285 0 10.055 0 9.29v-.265h.92l.002.333c0 .187.13.31.344.31.228 0 .305-.117.333-.232a.44.44 0 0 0-.005-.252C1.417 8.74.198 8.538.049 7.837a1.192 1.192 0 0 1-.007-.463c.09-.56.588-.76 1.198-.76.485 0 1.156.114 1.156.861v.242h-.854v-.213c0-.187-.12-.31-.32-.31-.215 0-.289.122-.313.232a.435.435 0 0 0 .002.18c.098.401 1.4.615 1.545 1.333.014.072.044.266.002.562-.081.573-.59.784-1.21.784zm11.154-.018c-.638 0-1.234-.227-1.234-.984V9.02h.911v.328c0 .185.129.31.341.31.227 0 .303-.117.331-.23a.438.438 0 0 0-.005-.25c-.175-.44-1.382-.641-1.529-1.336a1.166 1.166 0 0 1-.008-.458c.09-.554.585-.753 1.188-.753.48 0 1.143.115 1.143.855v.24h-.846v-.212c0-.185-.116-.307-.315-.307-.212 0-.289.12-.313.23a.435.435 0 0 0 .005.176c.096.398 1.385.61 1.529 1.32.015.073.044.265.003.558-.081.567-.586.776-1.2.776zm3.224-.013c-.63 0-1.138-.21-1.198-.85a2.792 2.792 0 0 1-.008-.223V6.72h.867v2.538c0 .044 0 .093.008.13.017.085.092.248.331.248.238 0 .311-.163.328-.248a.718.718 0 0 0 .008-.13V6.72h.867v2.461a2.94 2.94 0 0 1-.008.224c-.06.64-.564.849-1.195.849zm7.156-.037c-.608 0-1.148-.221-1.205-.846a2.518 2.518 0 0 1-.014-.227V7.702c0-.061.009-.17.016-.227.077-.641.595-.846 1.203-.846.608 0 1.14.203 1.203.846.011.11.008.227.008.227v.114h-.864v-.193s0-.08-.01-.13c-.016-.075-.082-.25-.345-.25-.249 0-.322.166-.34.25a.816.816 0 0 0-.014.162v1.567a.89.89 0 0 0 .008.13c.016.092.104.25.352.25s.333-.158.349-.25a.722.722 0 0 0 .008-.13v-.497h-.352v-.5H24v.92c0 .064-.003.112-.013.226-.057.625-.598.846-1.206.846zm-19.745-.065.636-3.432h1.526l.633 3.432h-.922l-.456-3.114-.02.002-.47 3.112Zm3.48 0L6.59 6.72h1.4l.421 2.625h.021l.422-2.625h1.399l.075 3.432h-.857l-.02-3.083H9.43l-.573 3.083h-.87L7.414 7.07h-.018l-.021 3.083Zm11.268-.036V6.72h1.273l.79 2.693h.018l-.047-2.693h.851v3.396h-1.221l-.849-2.787h-.018l.047 2.787z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/sandisk.svg b/assets/lib/simple-icons/icons/sandisk.svg
new file mode 100644
index 00000000..b2662c55
--- /dev/null
+++ b/assets/lib/simple-icons/icons/sandisk.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>SanDisk</title><path d="M1.5371 9.668C.6161 9.668 0 10.192 0 10.996c0 .7876.5978 1.1214 1.3809 1.3614.4935.1515 1.08.3577 1.08.8438 0 .2895-.2643.625-.7968.625-.4096 0-.678-.1436-.834-.3086-.156-.1605-.3078-.3158-.4473-.6113-.015-.039-.0412-.0743-.0742-.0743H.0703c-.033 0-.0586.0258-.0586.0723v.8965c0 .036.0207.0864.0567.1074.4575.2685 1.0625.3706 1.5605.3691.885-.0045 1.5742-.5935 1.5742-1.537-.006-1.0141-.9347-1.1435-1.6758-1.3985-.6465-.222-.7812-.4094-.7812-.6719 0-.2835.264-.5703.8281-.5703.1965 0 .4037.0655.5957.1856.12.0735.2438.196.3848.4375.015.0255.0484.0449.0664.0449h.2031c.03-.003.041-.0226.041-.0586 0-.1455.004-.5366.004-.7676 0-.0405-.0269-.071-.0704-.086-.384-.1274-.7577-.1874-1.2617-.1874zm17.6387.0332s-.0645.0515-.0645.164c0 .1125.0645.1739.0645.1739h.4277c.051 0 .0723.026.0723.08v3.6895c0 .054-.0255.08-.0645.08h-.4062s-.0645.0591-.0645.1641.0645.1739.0645.1739l1.7656-.004s.0469-.0733.0469-.1738c0-.099-.0469-.1601-.0469-.1601h-.291c-.036 0-.0684-.0297-.0684-.0762v-.8574c.0825-.087.232-.2388.25-.2598.054-.054.1092-.0328.1407.0137.036.057.7076 1.0828.7226 1.1113.03.051.0136.0742-.0254.0742l-.211.004s-.0507.075-.0507.162c0 .087.0469.1641.0469.1641l1.7597.004s.0567-.0726.0567-.1641c0-.0916-.0645-.17-.0645-.17s-.0478.002-.1093.002c-.1996 0-.3564-.0618-.4434-.1953-.0405-.0585-1.0908-1.6676-1.1133-1.7051.2655-.369.4032-.504.6387-.627.156-.0825.4426-.1425.6601-.1425.003 0 .0508-.0417.0508-.1602 0-.1185-.0547-.1621-.0547-.1621h-1.0547c-.039 0-.091.0295-.127.082-.0224.033-.8512 1.2215-1.0702 1.541v-2.709c0-.066-.0407-.1171-.1172-.1171h-1.3203zm-4.2676.0039c-.0435 0-.0696.0284-.08.0644l-.1641.5586c-.0225.0645.0104.1172.0644.1172h.8438c.048 0 .0828-.0215.0918-.0605l.1953-.6036c.015-.051-.0184-.0761-.0664-.0761h-.8848zm-4.4238.0078s-.088.0565-.088.1855c0 .159.088.1953.088.1953h.6543c.9495 0 1.5449.6339 1.5449 1.879 0 1.3425-.5888 1.9257-1.6328 1.9257h-.4219c-.066 0-.1157-.0797-.1172-.1172 0-.2505-.002-1.823-.002-1.955 0-.6466-.4435-1.002-1.162-1.002-.483 0-.8265.2165-1.0215.584v-.4062c0-.0646-.0393-.0938-.0918-.0938H7.0195s-.08.0693-.08.1953c0 .135.08.1856.08.1856h.2715c.072 0 .1485.079.1485.166v2.3281c0 .048-.0668.1094-.1133.1094h-.2598l-.121.334c.7905 0 1.7343.002 1.7343.002s.0605-.0559.0605-.1759c0-.1125-.0586-.1601-.0586-.1601h-.207c-.0615 0-.1074-.0525-.1074-.1035v-1.8125c.171-.4636.5009-.7364.7754-.7364.258 0 .4219.1934.4219.4844 0 .1515-.002 1.7736-.002 2.039 0 .0736-.0555.129-.1035.129h-.2461s-.0684.0476-.0684.1601c0 .117.0684.1758.0684.1758h2.039c2.0312 0 2.5547-1.2178 2.5547-2.2558.0105-1.6321-1.1233-2.2598-2.5859-2.2598h-.7363zm13.1328 1.0195c-.102 0-.1887.0365-.2637.1055-.0795.0735-.1191.1668-.1191.2793 0 .108.0388.198.1093.2715.0736.0735.165.1093.2715.1093.105 0 .196-.0354.2696-.1074.0765-.0735.1152-.1659.1152-.2754.0015-.1005-.0378-.194-.1113-.2675a.366.366 0 0 0-.2715-.1153zm-18.543.0547c-.447 0-.8015.0498-1.166.1758-.0405.015-.0508.0554-.0508.1094 0 .1815-.0039.2817-.0039.4902 0 .0435.031.0684.0625.0684h.1914c.039 0 .073-.0201.1074-.0606.108-.141.2398-.254.3418-.3125.0945-.054.2492-.1133.4082-.1133.3706 0 .5254.269.5254.584v.4961c-1.3966-.0825-1.9687.3313-1.9687.9883 0 .7515.5188 1.0664 1.0273 1.0664.4636 0 .8085-.1768 1.002-.4453.0405.2355.1787.3945.3633.3945h.7285l.1191-.332h-.1074c-.2205-.0225-.2455-.1533-.25-.2988v-1.7774c0-.261-.092-.5596-.3125-.7441-.273-.2295-.671-.289-1.0176-.289zm18.5469.0176c.087 0 .1611.0322.2227.0937.0615.0645.0917.1357.0917.2227-.003.087-.0322.1616-.0937.2246a.3029.3029 0 0 1-.2227.0918.3029.3029 0 0 1-.2226-.0918c-.0615-.0615-.0918-.1376-.0918-.2246s.0303-.1597.0918-.2227c.0615-.0645.1376-.0937.2246-.0937zm-5.9746.039c-.573 0-1.1934.3267-1.1934 1.0333 0 .603.4897.9309.9082 1.0449.714.192.918.295.918.5996 0 .264-.2079.4219-.5664.4219-.36 0-.697-.2653-.8965-.7364-.03-.048-.051-.0664-.084-.0664-.099-.003-.2 0-.2285 0-.0285 0-.0586.014-.0586.0606v.6933c0 .054.0742.1133.0742.1133s.2065.1275.4375.207c.192.066.4283.1172.7598.1172.8415 0 1.2422-.5237 1.2422-1.1328 0-.5565-.3106-.8964-1.0156-1.0644-.678-.1635-.8164-.283-.8164-.5215 0-.2025.1767-.418.5293-.418.351 0 .678.2082.828.4512.021.033.0484.0469.0919.0469h.166a.046.046 0 0 0 .0469-.043v-.584c0-.039-.015-.0807-.0645-.0957-.258-.0765-.6476-.127-1.0781-.127zm-3.3633.0665s-.0781.073-.0781.1855c0 .1155.0781.1895.0781.1895s.3046.002.33.002c.0256 0 .045.0177.045.0507l-.0039 2.461c0 .054-.047.0937-.086.0937h-.3769s-.0723.0461-.0723.1601c0 .108.0723.172.0723.172h1.875s.0606-.0698.0606-.1778c-.003-.102-.0645-.1524-.0645-.1524l-.3828.004c-.0585 0-.0899-.0379-.0899-.0919 0 0-.0039-2.688-.0039-2.7675 0-.0795-.0276-.129-.1191-.129h-1.1836zm9.164 0v.4238h.1094v-.1524h.0235l.0254.002c.018 0 .03.0033.039.0078.015.0075.0248.0143.0293.0293a.1932.1932 0 0 1 .0078.0547c0 .0255.0049.0466.0079.0586h.1074l-.002-.0137v-.0644c0-.0435-.0135-.0758-.039-.0938a.1602.1602 0 0 0-.0625-.0234.1424.1424 0 0 0 .0742-.0274c.021-.018.0293-.045.0293-.0781 0-.048-.0211-.082-.0586-.1016-.0225-.0135-.051-.02-.084-.0214h-.207zm.1153.0722h.0273a.2603.2603 0 0 1 .0664.0078c.0225.0105.0333.0264.0333.0489-.003.024-.0085.0422-.0235.0527-.015.0105-.035.0137-.0605.0137h-.043v-.123zM5.4941 12.5898v.8125h-.002c-.141.1846-.3735.3418-.621.3418-.3225 0-.502-.1586-.502-.5156 0-.4125.1965-.6387 1.125-.6387z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/sanfranciscomunicipalrailway.svg b/assets/lib/simple-icons/icons/sanfranciscomunicipalrailway.svg
new file mode 100644
index 00000000..e1c8b4c3
--- /dev/null
+++ b/assets/lib/simple-icons/icons/sanfranciscomunicipalrailway.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>San Francisco Municipal Railway</title><path d="M16.62 15.698v-4.847s0-.232-.237-.232c-.225 0-.225.232-.225.232v6.678h-.924V9.925s-.022-1.154 1.15-1.154c1.153 0 1.153 1.153 1.153 1.153v4.156s0 1.618 1.616 1.618c1.615 0 1.615-1.618 1.615-1.618V6.448h.924v9.25s0 2.073-2.54 2.073c-2.532 0-2.532-2.073-2.532-2.073m-5.542-1.607V6.448h.925v6.71s-.023.233.23.233c.254 0 .23-.232.23-.232v-6.71h.923v7.631s.095 1.157-1.153 1.157c-1.247 0-1.155-1.146-1.155-1.146m-8.306 1.146L2.77 10.85s0-.232-.23-.232c-.232 0-.232.232-.232.232v6.678h-.922V9.925s0-1.154 1.154-1.154 1.154 1.153 1.154 1.153v4.156s0 1.618 1.613 1.618c1.618 0 1.618-1.618 1.618-1.618V9.925s-.02-1.154 1.15-1.154c1.158 0 1.158 1.153 1.158 1.153v7.605H8.31v-6.678s0-.232-.237-.232c-.225 0-.225.232-.225.232v4.386s-.03 2.534-2.542 2.534c-2.513 0-2.535-2.534-2.535-2.534m19.385-8.789H24V17.53h-1.843zM9.695 15.237V9.924s0-1.61-1.62-1.61c-1.612 0-1.612 1.61-1.612 1.61v4.156s0 1.157-1.156 1.157c-1.154 0-1.154-1.157-1.154-1.157V9.925s0-1.611-1.613-1.611c-1.616 0-1.616 1.61-1.616 1.61v7.605H0V8.771s0-2.543 2.54-2.543 2.54 2.543 2.54 2.543l.01 4.42s-.01.2.217.2c.242 0 .235-.232.235-.232V8.77s0-2.543 2.532-2.543c2.545 0 2.54 2.543 2.54 2.543l.005 5.31s-.075 1.617 1.613 1.617c1.69 0 1.614-1.618 1.614-1.618l.002-5.31s0-2.541 2.535-2.541c2.537 0 2.537 2.542 2.537 2.542l.008 4.388s-.008.232.225.232c.23 0 .23-.232.23-.232v-6.71h.924v7.631s0 1.157-1.154 1.157c-1.157 0-1.157-1.157-1.157-1.157V9.925s0-1.611-1.613-1.611c-1.611 0-1.611 1.61-1.611 1.61v5.313s0 2.534-2.54 2.534c-2.537 0-2.537-2.534-2.537-2.534Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/saopaulometro.svg b/assets/lib/simple-icons/icons/saopaulometro.svg
new file mode 100644
index 00000000..12d154cd
--- /dev/null
+++ b/assets/lib/simple-icons/icons/saopaulometro.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>S&#227;o Paulo Metro</title><path d="M13.366 6.543l5.092 5.456-5.092 5.456V6.543zM24 0v24H0V0h24zm-5.542 11.999l1.747-1.872L11.976 1.9l-8.227 8.228 1.747 1.871-1.747 1.871 8.227 8.229 8.228-8.229-1.746-1.871zm-7.87 5.455V6.543l-5.092 5.456 5.092 5.455z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/sap.svg b/assets/lib/simple-icons/icons/sap.svg
index b6a120bc..9b032ccc 100644
--- a/assets/lib/simple-icons/icons/sap.svg
+++ b/assets/lib/simple-icons/icons/sap.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 24 24"><title>SAP icon</title><path d="M0 6.064v11.872h12.13L24 6.064zm3.264 2.208h.005c.863.001 1.915.245 2.676.633l-.82 1.43c-.835-.404-1.255-.442-1.73-.467-.708-.038-1.064.215-1.069.488-.007.332.669.633 1.305.838.964.306 2.19.715 2.377 1.9L7.77 8.437h2.046l2.064 5.576-.007-5.575h2.37c2.257 0 3.318.764 3.318 2.519 0 1.575-1.09 2.514-2.936 2.514h-.763l-.01 2.094-3.588-.003-.25-.908c-.37.122-.787.189-1.23.189-.456 0-.885-.071-1.263-.2l-.358.919-2 .006.09-.462c-.029.025-.057.05-.087.074-.535.43-1.208.629-2.037.644l-.213.002a5.075 5.075 0 0 1-2.581-.675l.73-1.448c.79.467 1.286.572 1.956.558.347-.007.598-.07.761-.239a.557.557 0 0 0 .156-.369c.007-.376-.53-.553-1.185-.756-.531-.164-1.135-.389-1.606-.735-.559-.41-.825-.924-.812-1.65a1.99 1.99 0 0 1 .566-1.377c.519-.537 1.357-.863 2.363-.863zm10.597 1.67v1.904h.521c.694 0 1.247-.23 1.248-.964 0-.709-.554-.94-1.248-.94zm-5.087.767l-.748 2.362c.223.085.481.133.757.133.268 0 .52-.047.742-.126l-.736-2.37z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>SAP</title><path d="M0 6.064v11.872h12.13L24 6.064zm3.264 2.208h.005c.863.001 1.915.245 2.676.633l-.82 1.43c-.835-.404-1.255-.442-1.73-.467-.708-.038-1.064.215-1.069.488-.007.332.669.633 1.305.838.964.306 2.19.715 2.377 1.9L7.77 8.437h2.046l2.064 5.576-.007-5.575h2.37c2.257 0 3.318.764 3.318 2.519 0 1.575-1.09 2.514-2.936 2.514h-.763l-.01 2.094-3.588-.003-.25-.908c-.37.122-.787.189-1.23.189-.456 0-.885-.071-1.263-.2l-.358.919-2 .006.09-.462c-.029.025-.057.05-.087.074-.535.43-1.208.629-2.037.644l-.213.002a5.075 5.075 0 0 1-2.581-.675l.73-1.448c.79.467 1.286.572 1.956.558.347-.007.598-.07.761-.239a.557.557 0 0 0 .156-.369c.007-.376-.53-.553-1.185-.756-.531-.164-1.135-.389-1.606-.735-.559-.41-.825-.924-.812-1.65a1.99 1.99 0 0 1 .566-1.377c.519-.537 1.357-.863 2.363-.863zm10.597 1.67v1.904h.521c.694 0 1.247-.23 1.248-.964 0-.709-.554-.94-1.248-.94zm-5.087.767l-.748 2.362c.223.085.481.133.757.133.268 0 .52-.047.742-.126l-.736-2.37z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/sass.svg b/assets/lib/simple-icons/icons/sass.svg
index e2647c92..1a3eea2c 100644
--- a/assets/lib/simple-icons/icons/sass.svg
+++ b/assets/lib/simple-icons/icons/sass.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Sass icon</title><path d="M12 0c6.627 0 12 5.373 12 12s-5.373 12-12 12S0 18.627 0 12 5.373 0 12 0zM9.615 15.998c.175.645.156 1.248-.024 1.792l-.065.18c-.024.061-.052.12-.078.176-.14.29-.326.56-.555.81-.698.759-1.672 1.047-2.09.805-.45-.262-.226-1.335.584-2.19.871-.918 2.12-1.509 2.12-1.509v-.003l.108-.061zm9.911-10.861c-.542-2.133-4.077-2.834-7.422-1.645-1.989.707-4.144 1.818-5.693 3.267C4.568 8.48 4.275 9.98 4.396 10.607c.427 2.211 3.457 3.657 4.703 4.73v.006c-.367.18-3.056 1.529-3.686 2.925-.675 1.47.105 2.521.615 2.655 1.575.436 3.195-.36 4.065-1.649.84-1.261.766-2.881.404-3.676.496-.135 1.08-.195 1.83-.104 2.101.24 2.521 1.56 2.43 2.1-.09.539-.523.854-.674.944-.15.091-.195.12-.181.181.015.09.091.09.21.075.165-.03 1.096-.45 1.141-1.471.045-1.29-1.186-2.729-3.375-2.7-.9.016-1.471.091-1.875.256-.03-.045-.061-.075-.105-.105-1.35-1.455-3.855-2.475-3.75-4.41.03-.705.285-2.564 4.8-4.814 3.705-1.846 6.661-1.335 7.171-.21.733 1.604-1.576 4.59-5.431 5.024-1.47.165-2.235-.404-2.431-.615-.209-.225-.239-.24-.314-.194-.12.06-.045.255 0 .375.12.3.585.825 1.396 1.095.704.225 2.43.359 4.5-.45 2.324-.899 4.139-3.405 3.614-5.505l.073.067z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Sass</title><path d="M12 0c6.627 0 12 5.373 12 12s-5.373 12-12 12S0 18.627 0 12 5.373 0 12 0zM9.615 15.998c.175.645.156 1.248-.024 1.792l-.065.18c-.024.061-.052.12-.078.176-.14.29-.326.56-.555.81-.698.759-1.672 1.047-2.09.805-.45-.262-.226-1.335.584-2.19.871-.918 2.12-1.509 2.12-1.509v-.003l.108-.061zm9.911-10.861c-.542-2.133-4.077-2.834-7.422-1.645-1.989.707-4.144 1.818-5.693 3.267C4.568 8.48 4.275 9.98 4.396 10.607c.427 2.211 3.457 3.657 4.703 4.73v.006c-.367.18-3.056 1.529-3.686 2.925-.675 1.47.105 2.521.615 2.655 1.575.436 3.195-.36 4.065-1.649.84-1.261.766-2.881.404-3.676.496-.135 1.08-.195 1.83-.104 2.101.24 2.521 1.56 2.43 2.1-.09.539-.523.854-.674.944-.15.091-.195.12-.181.181.015.09.091.09.21.075.165-.03 1.096-.45 1.141-1.471.045-1.29-1.186-2.729-3.375-2.7-.9.016-1.471.091-1.875.256-.03-.045-.061-.075-.105-.105-1.35-1.455-3.855-2.475-3.75-4.41.03-.705.285-2.564 4.8-4.814 3.705-1.846 6.661-1.335 7.171-.21.733 1.604-1.576 4.59-5.431 5.024-1.47.165-2.235-.404-2.431-.615-.209-.225-.239-.24-.314-.194-.12.06-.045.255 0 .375.12.3.585.825 1.396 1.095.704.225 2.43.359 4.5-.45 2.324-.899 4.139-3.405 3.614-5.505l.073.067z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/sat-dot-1.svg b/assets/lib/simple-icons/icons/sat-dot-1.svg
deleted file mode 100644
index 58743260..00000000
--- a/assets/lib/simple-icons/icons/sat-dot-1.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Sat.1 icon</title><path d="M11.344.006c-.292.01-.586.028-.881.06C.37 1.154 3.963 16.69 4.492 18.205.527 9.78 2.859 4.5 4.61 2.712c.049-.05-.004-.136-.05-.095C.604 5.824.25 9.45.25 9.45c-.684 3.952 3.158 7.834 4.246 8.766-2.967-2-3.841-3.436-4.382-5.417-.016-.06-.118-.08-.113 0 .081 1.064.185 2.49 1.005 4.174.752.973 2.815 1.247 3.49 1.246h.003l-.003-.006c.883-3.249 2.674-8.92 5.495-12.74 2.728-3.538 4.83-4.65 5.403-4.905.048-.023.025-.077-.03-.114-.128-.082-1.979-.513-4.02-.448zM4.498 18.22c.715 1.21 2.93 4.546 6.976 5.7 1.382.277 5.618-.02 8.602-3.011.054-.053.007-.175-.106-.099-1.97 1.344-8.14 2.682-15.472-2.59zm0 0l-.003.002c-1.053.447-2.22.28-2.73.044-.065-.031-.125-.02-.09.044.748 1.264 1.166 1.7 2.11 2.545.051.053.104.04.08-.064-.01-.046-.189-1.342.63-2.565-.105.822-.206 3.105.692 3.711 1.058.722 2.147 1.414 4.084 1.829.076.018.145-.071.071-.11-3.166-1.546-3.912-3.474-4.845-5.433l.001-.003zM17.613 1.398c-.226.026-.462.215-1.016.552C9.973 6.36 5.058 17.035 4.498 18.216c0 0 11.07-2.39 17.856-9.29 1.06-1.085 1.138-.85.64-2.054-.239-.597-.866-1.813-1.95-3.036-.854-.955-1.97-1.703-2.466-2.01-.52-.316-.738-.454-.965-.428zM4.498 18.216c1.363.78 16.116 7.064 18.959-2.725.665-2.284.576-4.675.468-4.964-.022-.062-.073-.034-.076-.014-.35.516-1.828 2.42-5.78 4.495-4.242 2.111-10.229 2.906-13.57 3.208z"/></svg>
diff --git a/assets/lib/simple-icons/icons/sat1.svg b/assets/lib/simple-icons/icons/sat1.svg
new file mode 100644
index 00000000..d8b7dd43
--- /dev/null
+++ b/assets/lib/simple-icons/icons/sat1.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Sat.1</title><path d="M11.3437.0066c-.292.01-.586.028-.881.06-10.092 1.088-6.4994 16.6226-5.9704 18.1375-3.9647-8.4243-1.6329-13.7038.118-15.4917.049-.05-.004-.136-.05-.095C.6046 5.8241.2506 9.4498.2506 9.4498c-.684 3.9517 3.1578 7.8334 4.2457 8.7653C1.5295 16.2152.6556 14.7794.1146 12.7985c-.016-.06-.118-.08-.113 0 .081 1.064.185 2.4898 1.005 4.1737.7519.9729 2.8147 1.2469 3.4897 1.2459h.003l-.003-.006C5.3792 14.9634 7.17 9.2928 9.9908 5.473 12.7185 1.9356 14.8204.8237 15.3933.5687c.048-.023.025-.077-.03-.114-.128-.082-1.9788-.513-4.0196-.448zM4.4983 18.2191c.7149 1.2099 2.9297 4.5456 6.9754 5.6995 1.3818.277 5.6175-.02 8.6012-3.0108.054-.053.007-.175-.106-.099-1.9698 1.344-8.1393 2.6818-15.4706-2.5897zl-.003.002c-1.053.447-2.2199.28-2.7298.044-.065-.031-.125-.02-.09.044.748 1.2639 1.1659 1.6998 2.1098 2.5448.051.053.104.04.08-.064-.01-.046-.189-1.342.63-2.5648-.105.822-.206 3.1047.6919 3.7107 1.0579.7219 2.1468 1.4138 4.0836 1.8288.076.018.145-.071.071-.11-3.1657-1.5458-3.9116-3.4737-4.8445-5.4325zM17.612 1.3985c-.226.026-.462.215-1.0159.552C9.9728 6.36 5.0582 17.0342 4.4982 18.215c0 0 11.0691-2.3898 17.8545-9.2892 1.06-1.085 1.138-.85.64-2.0538-.239-.597-.866-1.8129-1.9499-3.0358-.8539-.9549-1.9698-1.7028-2.4658-2.0098-.52-.316-.7379-.454-.9649-.428zM4.4983 18.2151c1.3628.78 16.1146 7.0634 18.9573-2.7248.665-2.2838.576-4.6746.468-4.9636-.022-.062-.073-.034-.076-.014-.35.516-1.8279 2.4198-5.7795 4.4947C13.8265 17.1182 7.84 17.913 4.4993 18.215z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/saturn.svg b/assets/lib/simple-icons/icons/saturn.svg
new file mode 100644
index 00000000..3ed9147d
--- /dev/null
+++ b/assets/lib/simple-icons/icons/saturn.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Saturn</title><path d="M19.039 11.459c.001.015.022.244.03.407.006.113 0 .29 0 .3.003 0 .029.023.03.024 1.428 1.17 2.943 2.767 3.204 3.94.073.325.056.618-.072.868-.152.293-.439.503-.834.638-2.046.7-6.925-.642-10.907-2.609-2.845-1.406-5.342-3.081-7.032-4.719-1.57-1.523-1.995-2.71-1.59-3.427.155-.271.42-.472.776-.609 1.299-.507 3.788-.152 6.239.579-1.16.866-1.968 2.034-2.342 3.202l-.001.007a.051.051 0 0 1-.001.006c-.115 1.07 1.434 2.47 3 3.25-.002-.006.084.032.084.026-.002-.006-.015-.109-.017-.113-.366-2.66 1.648-6.64 3.765-7.513.136-.056.254-.09.27-.095l-.273-.027c-.074-.006-.148-.013-.228-.015a7.464 7.464 0 0 0-.272-.01 6.443 6.443 0 0 0-3.4.892C5.378 5.057 2.383 4.892 1.13 5.31c-.497.167-.833.418-1 .751-.174.35-.175.79-.002 1.306.57 1.704 3.058 4.032 6.211 6.099.457 2.407 2.615 4.875 5.703 5.204l.142.015a.278.278 0 0 1 .05 0 6.618 6.618 0 0 0-.173-.132c-.955-.736-1.813-1.949-2.107-3l.185.093.143.07c4.985 2.465 10.215 3.72 12.53 2.947.519-.174.9-.418 1.075-.768.167-.335.139-.78-.029-1.278-.436-1.3-2.304-3.284-4.675-5.052a5.003 5.003 0 0 0-.145-.107"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/saucelabs.svg b/assets/lib/simple-icons/icons/saucelabs.svg
index daa7e8bc..a0bc31c4 100644
--- a/assets/lib/simple-icons/icons/saucelabs.svg
+++ b/assets/lib/simple-icons/icons/saucelabs.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Sauce Labs icon</title><path d="M2.93 15.475l6.396.004-3.582 6.758C2.178 20.057.002 16.18 0 12 0 5.383 5.383 0 12 0c1.761 0 3.436.381 4.94 1.064L5.428 12.58h10.25l-7.539 7.614 3.115-5.876H3.795C3.455 13.164 3.477 12 3.477 12c.006-4.713 3.831-8.529 8.544-8.523.093 0 .187.002.28.005l1.094-1.099c-.455-.065-.915-.098-1.375-.098-5.356 0-9.73 4.357-9.73 9.715-.001 0-.061 1.719.64 3.475zM18.255 1.764C21.82 3.943 23.997 7.82 24 12c0 6.616-5.384 12-12 12-1.704.003-3.389-.36-4.941-1.065l11.426-11.513H8.205l7.656-7.616-3.115 5.876h7.46c.319 1.079.319 2.318.319 2.318-.008 4.714-3.834 8.529-8.547 8.522-.105 0-.21-.002-.314-.006l-1.084 1.096c5.314.777 10.256-2.901 11.032-8.218.067-.461.103-.928.103-1.395 0-1.189-.22-2.369-.647-3.479h-6.394l3.581-6.756z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Sauce Labs</title><path d="M2.93 15.475l6.396.004-3.582 6.758C2.178 20.057.002 16.18 0 12 0 5.383 5.383 0 12 0c1.761 0 3.436.381 4.94 1.064L5.428 12.58h10.25l-7.539 7.614 3.115-5.876H3.795C3.455 13.164 3.477 12 3.477 12c.006-4.713 3.831-8.529 8.544-8.523.093 0 .187.002.28.005l1.094-1.099c-.455-.065-.915-.098-1.375-.098-5.356 0-9.73 4.357-9.73 9.715-.001 0-.061 1.719.64 3.475zM18.255 1.764C21.82 3.943 23.997 7.82 24 12c0 6.616-5.384 12-12 12-1.704.003-3.389-.36-4.941-1.065l11.426-11.513H8.205l7.656-7.616-3.115 5.876h7.46c.319 1.079.319 2.318.319 2.318-.008 4.714-3.834 8.529-8.547 8.522-.105 0-.21-.002-.314-.006l-1.084 1.096c5.314.777 10.256-2.901 11.032-8.218.067-.461.103-.928.103-1.395 0-1.189-.22-2.369-.647-3.479h-6.394l3.581-6.756z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/scala.svg b/assets/lib/simple-icons/icons/scala.svg
index 769a3ee5..01940a77 100644
--- a/assets/lib/simple-icons/icons/scala.svg
+++ b/assets/lib/simple-icons/icons/scala.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Scala icon</title><path d="M4.589 24c4.537 0 13.81-1.516 14.821-3v-5.729c-.957 1.408-10.284 2.912-14.821 2.912V24zM4.589 16.365c4.537 0 13.81-1.516 14.821-3V7.636c-.957 1.408-10.284 2.912-14.821 2.912v5.817zM4.589 8.729c4.537 0 13.81-1.516 14.821-3V0C18.453 1.408 9.126 2.912 4.589 2.912v5.817z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Scala</title><path d="M4.589 24c4.537 0 13.81-1.516 14.821-3v-5.729c-.957 1.408-10.284 2.912-14.821 2.912V24zM4.589 16.365c4.537 0 13.81-1.516 14.821-3V7.636c-.957 1.408-10.284 2.912-14.821 2.912v5.817zM4.589 8.729c4.537 0 13.81-1.516 14.821-3V0C18.453 1.408 9.126 2.912 4.589 2.912v5.817z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/scaleway.svg b/assets/lib/simple-icons/icons/scaleway.svg
index aa0005db..054f2c01 100644
--- a/assets/lib/simple-icons/icons/scaleway.svg
+++ b/assets/lib/simple-icons/icons/scaleway.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Scaleway icon</title><path d="M16.61 11.11v5.72a1.77 1.77 0 0 1-1.54 1.69h-4a1.43 1.43 0 0 1-1.31-1.22 1.09 1.09 0 0 1 0-.18 1.37 1.37 0 0 1 1.37-1.36h1.74a1 1 0 0 0 1-1v-3.62a1.4 1.4 0 0 1 1.18-1.39h.17a1.37 1.37 0 0 1 1.39 1.36zm-6.46 1.74V9.26a1 1 0 0 1 1-1H13a1.37 1.37 0 0 0 1.37-1.37 1 1 0 0 0 0-.17 1.45 1.45 0 0 0-1.41-1.2H9a1.81 1.81 0 0 0-1.58 1.66v5.7a1.37 1.37 0 0 0 1.37 1.37H9a1.4 1.4 0 0 0 1.15-1.4zm12-4.29V20A4.53 4.53 0 0 1 18 24h-7.58a8.57 8.57 0 0 1-8.56-8.57V4.54A4.54 4.54 0 0 1 6.4 0h7.18a8.56 8.56 0 0 1 8.56 8.56zm-2.74 0a5.83 5.83 0 0 0-5.82-5.82H6.4a1.79 1.79 0 0 0-1.8 1.8v10.89a5.83 5.83 0 0 0 5.82 5.8h7.44a1.79 1.79 0 0 0 1.54-1.48z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Scaleway</title><path d="M16.605 11.11v5.72a1.77 1.77 0 01-1.54 1.69h-4a1.43 1.43 0 01-1.31-1.22 1.09 1.09 0 010-.18 1.37 1.37 0 011.37-1.36h1.74a1 1 0 001-1v-3.62a1.4 1.4 0 011.18-1.39h.17a1.37 1.37 0 011.39 1.36zm-6.46 1.74V9.26a1 1 0 011-1h1.85a1.37 1.37 0 001.37-1.37 1 1 0 000-.17 1.45 1.45 0 00-1.41-1.2h-3.96a1.81 1.81 0 00-1.58 1.66v5.7a1.37 1.37 0 001.37 1.37h.21a1.4 1.4 0 001.15-1.4zm12-4.29V20a4.53 4.53 0 01-4.15 4h-7.58a8.57 8.57 0 01-8.56-8.57V4.54A4.54 4.54 0 016.395 0h7.18a8.56 8.56 0 018.56 8.56zm-2.74 0a5.83 5.83 0 00-5.82-5.82h-7.19a1.79 1.79 0 00-1.8 1.8v10.89a5.83 5.83 0 005.82 5.8h7.44a1.79 1.79 0 001.54-1.48z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/scania.svg b/assets/lib/simple-icons/icons/scania.svg
index 68c127c0..26c073c0 100644
--- a/assets/lib/simple-icons/icons/scania.svg
+++ b/assets/lib/simple-icons/icons/scania.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Scania icon</title><path d="M12 .6c-2.167 0-4.264.667-6.019 1.888a32.768 32.768 0 0 1-2.167-.48A12.262 12.262 0 0 0 0 8.615a32.75 32.75 0 0 1 1.5 1.636c-.3705 4.3908 2.0301 8.5486 6.018 10.423.247.699.47 1.404.668 2.117a12.266 12.266 0 0 0 7.629 0c.197-.713.42-1.419.667-2.118 3.9876-1.8737 6.3882-6.0307 6.018-10.421.482-.563.982-1.11 1.5-1.636a12.261 12.261 0 0 0-3.814-6.609c-.716.185-1.439.345-2.167.481A10.535 10.535 0 0 0 12 .6zm0 .642c1.806 0 3.562.494 5.086 1.407a32.724 32.724 0 0 1-10.172 0A9.896 9.896 0 0 1 12 1.242zM3.994 2.715c.431.107.865.204 1.301.293a10.537 10.537 0 0 0-3.687 6.387c-.295-.332-.597-.659-.904-.98a11.619 11.619 0 0 1 3.29-5.7zm16.012 0a11.62 11.62 0 0 1 3.29 5.7c-.307.321-.609.648-.904.98a10.537 10.537 0 0 0-3.687-6.387c.436-.089.87-.186 1.301-.293zm-13.873.454a33.353 33.353 0 0 0 11.734 0 9.885 9.885 0 0 1 3.966 6.873 33.352 33.352 0 0 0-5.866 10.16 9.89 9.89 0 0 1-7.935 0 33.367 33.367 0 0 0-5.866-10.16 9.895 9.895 0 0 1 3.967-6.873zm6.018.867a.662.662 0 0 0-.448 1.132.652.652 0 0 0-.971.573.652.652 0 0 0 1.03.535c-.241.404-.606.944-1.13.944-.547 0-.811-.228-1.052-.633a.548.548 0 0 0 .318-.021c.316-.105.493-.423.404-.823-.079-.354-.456-.55-.799-.45a.637.637 0 0 0-.291.18.698.698 0 0 0 .064-.519c-.098-.349-.512-.628-.873-.574l1.415 3.475c-.073.078-.18.196-.256.329-.302-.153-.909-.379-1.514-.135a1.553 1.553 0 0 0-.522.349c-.45.45-.676 1.2-.793 1.731a8.3307 8.3307 0 0 0-.08.415c.188-.141.31-.23.424-.306.102-.068.2-.124.336-.194.247-.127.583-.264.886-.264.163 0 .347.043.472.148.045.037.405.543 1.114.729.666.175.68.287.69.377 0 0-.116.19-.367.365a2.685 2.685 0 0 0-.346-.445c-.331-.346-.862-.532-1.296-.529-.413.004-.718.192-1.526.192-.82 0-1.39-.207-1.81-.454-.302-.164-.52-.37-.723-.535.108.263.213.472.307.684.07.151.327.667.648.947.413.35.822.465 1.224.465.408 0 .81-.119 1.206-.236.39-.116.766-.228 1.142-.228.487 0 .752.163.964.294a6.196 6.196 0 0 1-.225.15c-.3.191-.539.262-.771.262-.286 0-.801-.15-1.25-.33a1.2368 1.2368 0 0 0-.006.102v.116c0 .253.041.557.326.85.123.125.275.222.454.29.187.07.407.105.646.117-.109.1-.211.194-.31.316-.24.296-.435.692-.435 1.202 0 .262.046.481.111.691.047.149.093.284.157.445l.212-.255c.004-.004.236-.278.555-.51a2.98 2.98 0 0 0-.326 1.325c0 1.012.563 1.834 1.332 2.48 0 0 .183.163.312.263-.003-.162 0-.267 0-.408 0-.493.08-1.448.405-2.025.035.135.075.334.11.558.045.298.081.641.081.94 0 .496-.072.863-.156 1.127-.098.304-.18.42-.255.547a3.34 3.34 0 0 0 .882-.09 2.3 2.3 0 0 0 1.72-1.555c.09-.283.136-.596.136-.94 0-.198-.018-.403-.046-.603l-.024-.16c.055.044.093.085.14.138.18.207.343.524.343 1.036 0 .175-.01.445-.084.749.174-.058.351-.163.52-.27.204-.13.397-.284.572-.46.48-.48.811-1.117.818-1.845.005-.475-.096-.855-.32-1.299-.024-.048-.052-.097-.077-.146.052.022.101.05.147.08.255.164.42.424.53.718.066.177.114.35.147.554.074-.09.162-.212.262-.385.201-.348.414-.883.414-1.647 0-.375-.049-.806-.22-1.255a2.883 2.883 0 0 0-.85-1.202c.2643.0287.511.146.7.333.125.126.223.28.313.452l.095.19c.009-.093.008-.123.01-.204-.02-1.351-.397-2.34-1.626-2.978l-.007-.004c.43-.488.638-1.038.783-1.63-.296-.075-.843-.138-1.673.25l1.32-3.254c-.362-.054-.775.225-.873.574a.695.695 0 0 0 .065.519.642.642 0 0 0-.292-.181c-.343-.1-.72.097-.8.451-.088.4.089.718.405.822.134.04.177.045.318.021-.241.405-.494.629-1.041.629-.524 0-.892-.535-1.133-.94 0 0 .246.122.385.122a.651.651 0 0 0 .645-.657.652.652 0 0 0-.645-.658.634.634 0 0 0-.33.093.694.694 0 0 0 .202-.481.651.651 0 0 0-.645-.658zm3.608 3.585h.147l-.047.14c-.151.447-.629 1.516-1.802 1.779l.005.022.05.247c.497-.092.817-.303 1.107-.555.742.361 1.242.961 1.42 1.76l.034.157a.668.668 0 0 0-.114-.1 1.345 1.345 0 0 0-.719-.194c-.262 0-.489.063-.602.102.186.159.337.297.471.431.41.411.677.803.837 1.235.12.326.18.67.18 1.048 0 .403-.072.772-.213 1.098-.011.026-.04.092-.052.127a.706.706 0 0 0-.044-.126c-.341-.72-.91-.872-1.328-.872-.07 0-.13.004-.184.008l.006.01c.278.428.698 1.075.698 1.87 0 .26-.048.516-.142.759a2.4 2.4 0 0 1-.55.83c-.118.117-.222.214-.397.333l-.1.071a.465.465 0 0 0 .02-.12c.024-.897-.475-1.61-1.272-1.827l.018.076c.087.353.186.752.186 1.292 0 .583-.145 1.066-.43 1.436a1.954 1.954 0 0 1-.688.556 2.23 2.23 0 0 1-.652.219l-.109.018c.011-.014.034-.063.045-.087a1.0898 1.0898 0 0 0 .054-.161c.124-.455.127-1.001.127-1.069 0-.845-.21-1.618-.336-2.08l-.026-.098c-.1.074-.166.14-.211.186l-.02.021c-.263.263-.455.723-.57 1.367-.035.197-.052.362-.07.537l-.013.195-.003.121s-.072-.08-.09-.098a4.643 4.643 0 0 1-.188-.204 3.207 3.207 0 0 1-.483-.71 2.495 2.495 0 0 1-.177-.482 2.302 2.302 0 0 1-.07-.561c0-1.062.641-1.774.918-2.058l-.09.016a3.31 3.31 0 0 0-.326.08 2.172 2.172 0 0 0-.546.252 3.171 3.171 0 0 0-.603.513s-.018-.083-.021-.107a2.518 2.518 0 0 1-.04-.391c0-.441.168-.833.5-1.163.312-.313.551-.413 1.265-.712l.218-.091-.314.043c-.438.062-.638.09-1.009.09-.525 0-.887-.107-1.106-.327a.75.75 0 0 1-.123-.158 1.549 1.549 0 0 1-.117-.243l.272.099c.054.017.117.036.17.05a1.9 1.9 0 0 0 .49.07c.444 0 .804-.194 1.24-.508.182-.13.336-.258.456-.378.182-.182.221-.28.222-.297-.008-.269-.016-.523-.951-.768a1.782 1.782 0 0 1-.913-.59.8119.8119 0 0 0-.063-.068 1.046 1.046 0 0 0-.682-.229c-.196 0-.409.043-.651.132a4.7942 4.7942 0 0 0-.395.166l-.108.05.036-.113c.04-.132.085-.252.144-.391.05-.118.1-.22.156-.314.184-.31.412-.522.676-.629.138-.056.288-.084.447-.084.385 0 .732.167.875.247.01.71.438 1.12.93 1.12a.856.856 0 0 0 .643-.275c.121-.122.196-.258.244-.366.039-.087.067-.15.07-.2l.005.001a.496.496 0 0 1 .211.132l.236-.21a1.118 1.118 0 0 0-.401-.264 1.424 1.424 0 0 0-.464-.098 1.68 1.68 0 0 0-.36.026c-.123.02-.222.048-.396.048a.693.693 0 0 1-.358-.09 1.73 1.73 0 0 1 .525-.535l.006-.004h3.817l.074.003a3.287 3.287 0 0 0-.747.655l.215.17c.498-.622 1.272-1.01 2.02-1.01v.001zm-.457.494c-.621.08-1.182.635-1.182.635l.127.27c.293-.062.521-.22.69-.389.248-.248.347-.437.365-.516zm-5.542.543l.138.038c.055.016.132.032.207.042l.036.006.007.035a.27.27 0 0 0 .072.144.302.302 0 0 0 .43 0 .297.297 0 0 0 .088-.196l.002-.048.047-.002a2.6025 2.6025 0 0 1 .22 0l.117.008-.018.07a.852.852 0 0 1-.228.425.609.609 0 0 1-.469.192.578.578 0 0 1-.41-.175.81.81 0 0 1-.219-.43l-.02-.109zm4.513 1.49l-.133.416c.085.098.148.19.2.267.146.214.238.41.29.614.05.2.056.392.056.57 0 .142-.015.285-.046.425-.022.101-.053.21-.079.293-.024.08-.079.226-.079.226s-.008-.165-.023-.255-.029-.186-.053-.264a1.437 1.437 0 0 0-.353-.604 1.41 1.41 0 0 0-.35-.253 1.821 1.821 0 0 0-.284-.118c.022.083.045.173.07.28.064.276.093.504.093.716 0 .337-.075.622-.232.871a1.323 1.323 0 0 1-.187.234 2.039 2.039 0 0 1-.386.316c.036-.06.065-.122.1-.193.042-.087.068-.18.087-.248.186-.657-.121-1.063-.37-1.312a2.3783 2.3783 0 0 0-.103-.098c-.004.092-.008.184-.014.277-.022.318-.08.68-.35.948a1.942 1.942 0 0 1-.139.13c-.052.042-.111.092-.19.14.033-.064.06-.096.11-.218a.97.97 0 0 0-.029-.78l-.34.183c.01.025.017.052.024.076a.71.71 0 0 1-.086.577c-.05.08-.115.16-.204.25-.079.077-.162.152-.235.218l-.156.141.139-.001c.15-.002.35-.01.563-.047.34-.062.605-.192.813-.4a1.34 1.34 0 0 0 .218-.287c-.01.11-.037.222-.084.34a2.265 2.265 0 0 1-.239.436c-.065.095-.138.2-.232.315l-.086.105.134-.02c.162-.023.323-.056.48-.098a1.742 1.742 0 0 0 1.078-.777c.1-.158.172-.323.218-.504a2.35 2.35 0 0 0 .066-.696c.03.052.057.109.083.172.054.136.09.29.11.47.01.112.016.235.016.385v.03c0 .144 0 .281-.011.436l-.011.152.103-.112c.134-.147.279-.315.427-.55a2.543 2.543 0 0 0 .332-1.978 2.31 2.31 0 0 0-.359-.76 3.15 3.15 0 0 0-.349-.417l-.018-.019zm-3.275.165a.5.5 0 0 0-.215.049c.273.029.341.113.467.238.066.067.129.138.194.204.12.12.231.219.436.219a.613.613 0 0 0 .157-.022.981.981 0 0 0 .305-.141.528.528 0 0 1-.203.041c-.511 0-.663-.588-1.14-.588h-.001zm-5.83.1c.06.038.186.127.365.2.167.07.343.135.55.184.278.065.586.097.94.097.326 0 .717-.052 1.162-.153.143-.032.292-.062.413-.062.215 0 .424.035.578.116.153.082.261.17.395.279a2.71 2.71 0 0 0-.48-.071c-.143-.01-.34.003-.465.022-.28.041-.525.114-.783.19l-.03.01c-.39.115-.759.224-1.123.224-.422 0-.803-.157-1.101-.455-.065-.065-.171-.17-.242-.27a1.994 1.994 0 0 1-.179-.31v-.001zm-3.061.567a32.694 32.694 0 0 1 5.084 8.805 9.895 9.895 0 0 1-5.086-8.647c0-.054 0-.106.002-.158zm19.786 0l.002.157a9.895 9.895 0 0 1-5.086 8.648 32.665 32.665 0 0 1 5.085-8.805h-.001zM8.313 21.007a10.535 10.535 0 0 0 7.375 0c-.14.423-.273.847-.396 1.274a11.616 11.616 0 0 1-6.583 0 33.2233 33.2233 0 0 0-.397-1.273l.001-.001z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Scania</title><path d="M12 .6c-2.167 0-4.264.667-6.019 1.888a32.768 32.768 0 0 1-2.167-.48A12.262 12.262 0 0 0 0 8.615a32.75 32.75 0 0 1 1.5 1.636c-.3705 4.3908 2.0301 8.5486 6.018 10.423.247.699.47 1.404.668 2.117a12.266 12.266 0 0 0 7.629 0c.197-.713.42-1.419.667-2.118 3.9876-1.8737 6.3882-6.0307 6.018-10.421.482-.563.982-1.11 1.5-1.636a12.261 12.261 0 0 0-3.814-6.609c-.716.185-1.439.345-2.167.481A10.535 10.535 0 0 0 12 .6zm0 .642c1.806 0 3.562.494 5.086 1.407a32.724 32.724 0 0 1-10.172 0A9.896 9.896 0 0 1 12 1.242zM3.994 2.715c.431.107.865.204 1.301.293a10.537 10.537 0 0 0-3.687 6.387c-.295-.332-.597-.659-.904-.98a11.619 11.619 0 0 1 3.29-5.7zm16.012 0a11.62 11.62 0 0 1 3.29 5.7c-.307.321-.609.648-.904.98a10.537 10.537 0 0 0-3.687-6.387c.436-.089.87-.186 1.301-.293zm-13.873.454a33.353 33.353 0 0 0 11.734 0 9.885 9.885 0 0 1 3.966 6.873 33.352 33.352 0 0 0-5.866 10.16 9.89 9.89 0 0 1-7.935 0 33.367 33.367 0 0 0-5.866-10.16 9.895 9.895 0 0 1 3.967-6.873zm6.018.867a.662.662 0 0 0-.448 1.132.652.652 0 0 0-.971.573.652.652 0 0 0 1.03.535c-.241.404-.606.944-1.13.944-.547 0-.811-.228-1.052-.633a.548.548 0 0 0 .318-.021c.316-.105.493-.423.404-.823-.079-.354-.456-.55-.799-.45a.637.637 0 0 0-.291.18.698.698 0 0 0 .064-.519c-.098-.349-.512-.628-.873-.574l1.415 3.475c-.073.078-.18.196-.256.329-.302-.153-.909-.379-1.514-.135a1.553 1.553 0 0 0-.522.349c-.45.45-.676 1.2-.793 1.731a8.3307 8.3307 0 0 0-.08.415c.188-.141.31-.23.424-.306.102-.068.2-.124.336-.194.247-.127.583-.264.886-.264.163 0 .347.043.472.148.045.037.405.543 1.114.729.666.175.68.287.69.377 0 0-.116.19-.367.365a2.685 2.685 0 0 0-.346-.445c-.331-.346-.862-.532-1.296-.529-.413.004-.718.192-1.526.192-.82 0-1.39-.207-1.81-.454-.302-.164-.52-.37-.723-.535.108.263.213.472.307.684.07.151.327.667.648.947.413.35.822.465 1.224.465.408 0 .81-.119 1.206-.236.39-.116.766-.228 1.142-.228.487 0 .752.163.964.294a6.196 6.196 0 0 1-.225.15c-.3.191-.539.262-.771.262-.286 0-.801-.15-1.25-.33a1.2368 1.2368 0 0 0-.006.102v.116c0 .253.041.557.326.85.123.125.275.222.454.29.187.07.407.105.646.117-.109.1-.211.194-.31.316-.24.296-.435.692-.435 1.202 0 .262.046.481.111.691.047.149.093.284.157.445l.212-.255c.004-.004.236-.278.555-.51a2.98 2.98 0 0 0-.326 1.325c0 1.012.563 1.834 1.332 2.48 0 0 .183.163.312.263-.003-.162 0-.267 0-.408 0-.493.08-1.448.405-2.025.035.135.075.334.11.558.045.298.081.641.081.94 0 .496-.072.863-.156 1.127-.098.304-.18.42-.255.547a3.34 3.34 0 0 0 .882-.09 2.3 2.3 0 0 0 1.72-1.555c.09-.283.136-.596.136-.94 0-.198-.018-.403-.046-.603l-.024-.16c.055.044.093.085.14.138.18.207.343.524.343 1.036 0 .175-.01.445-.084.749.174-.058.351-.163.52-.27.204-.13.397-.284.572-.46.48-.48.811-1.117.818-1.845.005-.475-.096-.855-.32-1.299-.024-.048-.052-.097-.077-.146.052.022.101.05.147.08.255.164.42.424.53.718.066.177.114.35.147.554.074-.09.162-.212.262-.385.201-.348.414-.883.414-1.647 0-.375-.049-.806-.22-1.255a2.883 2.883 0 0 0-.85-1.202c.2643.0287.511.146.7.333.125.126.223.28.313.452l.095.19c.009-.093.008-.123.01-.204-.02-1.351-.397-2.34-1.626-2.978l-.007-.004c.43-.488.638-1.038.783-1.63-.296-.075-.843-.138-1.673.25l1.32-3.254c-.362-.054-.775.225-.873.574a.695.695 0 0 0 .065.519.642.642 0 0 0-.292-.181c-.343-.1-.72.097-.8.451-.088.4.089.718.405.822.134.04.177.045.318.021-.241.405-.494.629-1.041.629-.524 0-.892-.535-1.133-.94 0 0 .246.122.385.122a.651.651 0 0 0 .645-.657.652.652 0 0 0-.645-.658.634.634 0 0 0-.33.093.694.694 0 0 0 .202-.481.651.651 0 0 0-.645-.658zm3.608 3.585h.147l-.047.14c-.151.447-.629 1.516-1.802 1.779l.005.022.05.247c.497-.092.817-.303 1.107-.555.742.361 1.242.961 1.42 1.76l.034.157a.668.668 0 0 0-.114-.1 1.345 1.345 0 0 0-.719-.194c-.262 0-.489.063-.602.102.186.159.337.297.471.431.41.411.677.803.837 1.235.12.326.18.67.18 1.048 0 .403-.072.772-.213 1.098-.011.026-.04.092-.052.127a.706.706 0 0 0-.044-.126c-.341-.72-.91-.872-1.328-.872-.07 0-.13.004-.184.008l.006.01c.278.428.698 1.075.698 1.87 0 .26-.048.516-.142.759a2.4 2.4 0 0 1-.55.83c-.118.117-.222.214-.397.333l-.1.071a.465.465 0 0 0 .02-.12c.024-.897-.475-1.61-1.272-1.827l.018.076c.087.353.186.752.186 1.292 0 .583-.145 1.066-.43 1.436a1.954 1.954 0 0 1-.688.556 2.23 2.23 0 0 1-.652.219l-.109.018c.011-.014.034-.063.045-.087a1.0898 1.0898 0 0 0 .054-.161c.124-.455.127-1.001.127-1.069 0-.845-.21-1.618-.336-2.08l-.026-.098c-.1.074-.166.14-.211.186l-.02.021c-.263.263-.455.723-.57 1.367-.035.197-.052.362-.07.537l-.013.195-.003.121s-.072-.08-.09-.098a4.643 4.643 0 0 1-.188-.204 3.207 3.207 0 0 1-.483-.71 2.495 2.495 0 0 1-.177-.482 2.302 2.302 0 0 1-.07-.561c0-1.062.641-1.774.918-2.058l-.09.016a3.31 3.31 0 0 0-.326.08 2.172 2.172 0 0 0-.546.252 3.171 3.171 0 0 0-.603.513s-.018-.083-.021-.107a2.518 2.518 0 0 1-.04-.391c0-.441.168-.833.5-1.163.312-.313.551-.413 1.265-.712l.218-.091-.314.043c-.438.062-.638.09-1.009.09-.525 0-.887-.107-1.106-.327a.75.75 0 0 1-.123-.158 1.549 1.549 0 0 1-.117-.243l.272.099c.054.017.117.036.17.05a1.9 1.9 0 0 0 .49.07c.444 0 .804-.194 1.24-.508.182-.13.336-.258.456-.378.182-.182.221-.28.222-.297-.008-.269-.016-.523-.951-.768a1.782 1.782 0 0 1-.913-.59.8119.8119 0 0 0-.063-.068 1.046 1.046 0 0 0-.682-.229c-.196 0-.409.043-.651.132a4.7942 4.7942 0 0 0-.395.166l-.108.05.036-.113c.04-.132.085-.252.144-.391.05-.118.1-.22.156-.314.184-.31.412-.522.676-.629.138-.056.288-.084.447-.084.385 0 .732.167.875.247.01.71.438 1.12.93 1.12a.856.856 0 0 0 .643-.275c.121-.122.196-.258.244-.366.039-.087.067-.15.07-.2l.005.001a.496.496 0 0 1 .211.132l.236-.21a1.118 1.118 0 0 0-.401-.264 1.424 1.424 0 0 0-.464-.098 1.68 1.68 0 0 0-.36.026c-.123.02-.222.048-.396.048a.693.693 0 0 1-.358-.09 1.73 1.73 0 0 1 .525-.535l.006-.004h3.817l.074.003a3.287 3.287 0 0 0-.747.655l.215.17c.498-.622 1.272-1.01 2.02-1.01v.001zm-.457.494c-.621.08-1.182.635-1.182.635l.127.27c.293-.062.521-.22.69-.389.248-.248.347-.437.365-.516zm-5.542.543l.138.038c.055.016.132.032.207.042l.036.006.007.035a.27.27 0 0 0 .072.144.302.302 0 0 0 .43 0 .297.297 0 0 0 .088-.196l.002-.048.047-.002a2.6025 2.6025 0 0 1 .22 0l.117.008-.018.07a.852.852 0 0 1-.228.425.609.609 0 0 1-.469.192.578.578 0 0 1-.41-.175.81.81 0 0 1-.219-.43l-.02-.109zm4.513 1.49l-.133.416c.085.098.148.19.2.267.146.214.238.41.29.614.05.2.056.392.056.57 0 .142-.015.285-.046.425-.022.101-.053.21-.079.293-.024.08-.079.226-.079.226s-.008-.165-.023-.255-.029-.186-.053-.264a1.437 1.437 0 0 0-.353-.604 1.41 1.41 0 0 0-.35-.253 1.821 1.821 0 0 0-.284-.118c.022.083.045.173.07.28.064.276.093.504.093.716 0 .337-.075.622-.232.871a1.323 1.323 0 0 1-.187.234 2.039 2.039 0 0 1-.386.316c.036-.06.065-.122.1-.193.042-.087.068-.18.087-.248.186-.657-.121-1.063-.37-1.312a2.3783 2.3783 0 0 0-.103-.098c-.004.092-.008.184-.014.277-.022.318-.08.68-.35.948a1.942 1.942 0 0 1-.139.13c-.052.042-.111.092-.19.14.033-.064.06-.096.11-.218a.97.97 0 0 0-.029-.78l-.34.183c.01.025.017.052.024.076a.71.71 0 0 1-.086.577c-.05.08-.115.16-.204.25-.079.077-.162.152-.235.218l-.156.141.139-.001c.15-.002.35-.01.563-.047.34-.062.605-.192.813-.4a1.34 1.34 0 0 0 .218-.287c-.01.11-.037.222-.084.34a2.265 2.265 0 0 1-.239.436c-.065.095-.138.2-.232.315l-.086.105.134-.02c.162-.023.323-.056.48-.098a1.742 1.742 0 0 0 1.078-.777c.1-.158.172-.323.218-.504a2.35 2.35 0 0 0 .066-.696c.03.052.057.109.083.172.054.136.09.29.11.47.01.112.016.235.016.385v.03c0 .144 0 .281-.011.436l-.011.152.103-.112c.134-.147.279-.315.427-.55a2.543 2.543 0 0 0 .332-1.978 2.31 2.31 0 0 0-.359-.76 3.15 3.15 0 0 0-.349-.417l-.018-.019zm-3.275.165a.5.5 0 0 0-.215.049c.273.029.341.113.467.238.066.067.129.138.194.204.12.12.231.219.436.219a.613.613 0 0 0 .157-.022.981.981 0 0 0 .305-.141.528.528 0 0 1-.203.041c-.511 0-.663-.588-1.14-.588h-.001zm-5.83.1c.06.038.186.127.365.2.167.07.343.135.55.184.278.065.586.097.94.097.326 0 .717-.052 1.162-.153.143-.032.292-.062.413-.062.215 0 .424.035.578.116.153.082.261.17.395.279a2.71 2.71 0 0 0-.48-.071c-.143-.01-.34.003-.465.022-.28.041-.525.114-.783.19l-.03.01c-.39.115-.759.224-1.123.224-.422 0-.803-.157-1.101-.455-.065-.065-.171-.17-.242-.27a1.994 1.994 0 0 1-.179-.31v-.001zm-3.061.567a32.694 32.694 0 0 1 5.084 8.805 9.895 9.895 0 0 1-5.086-8.647c0-.054 0-.106.002-.158zm19.786 0l.002.157a9.895 9.895 0 0 1-5.086 8.648 32.665 32.665 0 0 1 5.085-8.805h-.001zM8.313 21.007a10.535 10.535 0 0 0 7.375 0c-.14.423-.273.847-.396 1.274a11.616 11.616 0 0 1-6.583 0 33.2233 33.2233 0 0 0-.397-1.273l.001-.001z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/schneiderelectric.svg b/assets/lib/simple-icons/icons/schneiderelectric.svg
new file mode 100644
index 00000000..37a5f90a
--- /dev/null
+++ b/assets/lib/simple-icons/icons/schneiderelectric.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Schneider Electric</title><path d="M16.73.313c-3.56-.049-7.797 1.68-11.288 5.02-.87.83-1.607 1.725-2.28 2.642h3.042L5.497 9.99H1.864c-.346.636-.672 1.266-.922 1.906h4.307l-.687 2.016H.327c-.724 3.079-.262 5.953 1.559 7.777 3.54 3.538 11.01 2.292 16.591-3.048.977-.93 1.783-1.931 2.511-2.96h-3.906l.596-2.013h4.568c.334-.64.643-1.274.883-1.914h-4.992l.554-2.01h5.051c.623-2.917.132-5.62-1.638-7.39C20.76 1.01 18.867.34 16.73.312Zm-1.044 4.714h4.968l-.634 2.938h-3.002c-.323 0-.46.054-.592.201-.05.058-.07.115-.09.23l-1.639 6.22c-.385 2.179-3.065 4.359-6.555 4.359H3.288l.842-3.198h3.119a.984.984 0 0 0 .775-.347c.076-.09.177-.232.19-.377L9.509 9.62c.381-2.182 2.686-4.592 6.177-4.592Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/scikitlearn.svg b/assets/lib/simple-icons/icons/scikitlearn.svg
new file mode 100644
index 00000000..016b4836
--- /dev/null
+++ b/assets/lib/simple-icons/icons/scikitlearn.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>scikit-learn</title><path d="M15.601 5.53c-1.91.035-3.981.91-5.63 2.56-2.93 2.93-2.083 8.53-1.088 9.525.805.804 6.595 1.843 9.526-1.088a9.74 9.74 0 0 0 .584-.643c.043-.292.205-.66.489-1.106a1.848 1.848 0 0 1-.537.176c-.144.265-.37.55-.676.855-.354.335-.607.554-.76.656a.795.795 0 0 1-.437.152c-.35 0-.514-.308-.494-.924-.22.316-.425.549-.612.7a.914.914 0 0 1-.578.224c-.194 0-.36-.09-.496-.273a1.03 1.03 0 0 1-.193-.507 4.016 4.016 0 0 1-.726.583c-.224.132-.47.197-.74.197-.3 0-.543-.096-.727-.288a.978.978 0 0 1-.257-.524v.004c-.3.276-.564.48-.79.611a1.295 1.295 0 0 1-.649.197.693.693 0 0 1-.571-.275c-.145-.183-.218-.43-.218-.739 0-.464.101-1.02.302-1.67.201-.65.445-1.25.733-1.797l.842-.312a.21.21 0 0 1 .06-.013c.063 0 .116.047.157.14.04.095.061.221.061.38 0 .451-.104.888-.312 1.31-.207.422-.532.873-.974 1.352-.018.23-.027.388-.027.474 0 .193.036.345.106.458.071.113.165.169.282.169a.71.71 0 0 0 .382-.13c.132-.084.333-.26.602-.523.028-.418.187-.798.482-1.142.324-.38.685-.569 1.08-.569.206 0 .37.054.494.16a.524.524 0 0 1 .186.417c0 .458-.486.829-1.459 1.114.088.43.32.646.693.646a.807.807 0 0 0 .417-.117c.129-.076.321-.243.575-.497.032-.252.118-.495.259-.728.182-.3.416-.544.701-.73.285-.185.537-.278.756-.278.276 0 .47.127.58.381l.677-.374h.186l-.292.971c-.15.488-.226.823-.226 1.004 0 .19.067.285.202.285.086 0 .181-.045.285-.137.104-.092.25-.232.437-.42v.001c.143-.155.274-.32.392-.494-.19-.084-.285-.21-.285-.375 0-.17.058-.352.174-.545.116-.194.275-.29.479-.29.172 0 .258.088.258.265 0 .139-.05.338-.149.596.367-.04.687-.32.961-.842l.228-.01c1.059-2.438.828-5.075-.83-6.732-1.019-1.02-2.408-1.5-3.895-1.471zm4.725 8.203a8.938 8.938 0 0 1-1.333 2.151 1.09 1.09 0 0 0-.012.147c0 .168.047.309.14.423.092.113.206.17.34.17.296 0 .714-.264 1.254-.787-.001.04-.003.08-.003.121 0 .146.012.368.036.666l.733-.172c0-.2.003-.357.01-.474.01-.157.033-.33.066-.517.02-.11.07-.216.152-.315l.186-.216a5.276 5.276 0 0 1 .378-.397c.062-.055.116-.099.162-.13a.26.26 0 0 1 .123-.046c.055 0 .083.035.083.106 0 .07-.052.236-.156.497-.194.486-.292.848-.292 1.084 0 .175.046.314.136.418a.45.45 0 0 0 .358.155c.365 0 .803-.269 1.313-.808v-.381c-.361.426-.623.64-.784.64-.109 0-.163-.067-.163-.2 0-.1.065-.316.195-.65.19-.486.285-.836.285-1.048a.464.464 0 0 0-.112-.319.36.36 0 0 0-.282-.127c-.165 0-.354.077-.567.233-.213.156-.5.436-.863.84.053-.262.165-.622.335-1.08l-.809.156a6.54 6.54 0 0 0-.399 1.074c-.04.156-.07.316-.092.48a7.447 7.447 0 0 1-.49.45.38.38 0 0 1-.229.08.208.208 0 0 1-.174-.082.352.352 0 0 1-.064-.222c0-.1.019-.214.056-.343.038-.13.12-.373.249-.731l.308-.849zm-17.21-2.927c-.863-.016-1.67.263-2.261.854-1.352 1.352-1.07 3.827.631 5.527 1.7 1.701 4.95 1.21 5.527.632.467-.466 1.07-3.827-.631-5.527-.957-.957-2.158-1.465-3.267-1.486zm12.285.358h.166v.21H15.4zm.427 0h.166v.865l.46-.455h.195l-.364.362.428.684h-.198l-.357-.575-.164.166v.41h-.166zm1.016 0h.166v.21h-.166zm.481.122h.166v.288h.172v.135h-.172v.717c0 .037.006.062.02.075.012.013.037.02.074.02a.23.23 0 0 0 .078-.01v.141a.802.802 0 0 1-.136.014.23.23 0 0 1-.15-.043.15.15 0 0 1-.052-.123v-.79h-.141v-.136h.141zm-3.562.258c.081 0 .15.012.207.038.057.024.1.061.13.11s.045.106.045.173h-.176c-.006-.111-.075-.167-.208-.167a.285.285 0 0 0-.164.041.134.134 0 0 0-.06.117c0 .035.015.065.045.088.03.024.08.044.15.06l.16.039a.47.47 0 0 1 .224.105c.047.046.07.108.07.186a.3.3 0 0 1-.052.175.327.327 0 0 1-.152.116.585.585 0 0 1-.226.041c-.136 0-.24-.03-.309-.088-.069-.059-.105-.149-.109-.269h.176c.004.037.01.065.017.084a.166.166 0 0 0 .034.054c.044.043.112.065.204.065a.31.31 0 0 0 .177-.045.139.139 0 0 0 .067-.119.116.116 0 0 0-.038-.09.287.287 0 0 0-.124-.055l-.156-.038a1.248 1.248 0 0 1-.159-.05.359.359 0 0 1-.098-.061.22.22 0 0 1-.058-.083.32.32 0 0 1-.016-.108c0-.096.036-.174.109-.232a.45.45 0 0 1 .29-.087zm1.035 0a.46.46 0 0 1 .202.043.351.351 0 0 1 .187.212.577.577 0 0 1 .023.126h-.168a.256.256 0 0 0-.078-.168.242.242 0 0 0-.17-.06.248.248 0 0 0-.155.05.306.306 0 0 0-.1.144.662.662 0 0 0-.034.224.58.58 0 0 0 .035.214.299.299 0 0 0 .101.135.261.261 0 0 0 .157.048c.142 0 .227-.084.256-.252h.167a.519.519 0 0 1-.065.22.35.35 0 0 1-.146.138.464.464 0 0 1-.216.048.448.448 0 0 1-.246-.066.441.441 0 0 1-.161-.192.703.703 0 0 1-.057-.293c0-.085.01-.163.032-.233a.522.522 0 0 1 .095-.182.403.403 0 0 1 .15-.117.453.453 0 0 1 .191-.04zm.603.03h.166v1.046H15.4zm1.443 0h.166v1.046h-.166zm-5.05.618c-.08 0-.2.204-.356.611-.155.407-.308.977-.459 1.71.281-.312.509-.662.683-1.05.175-.387.262-.72.262-.999a.455.455 0 0 0-.036-.197c-.025-.05-.056-.075-.093-.075zm4.662 1.797c-.221 0-.431.188-.629.563-.197.376-.296.722-.296 1.038 0 .12.029.216.088.29a.273.273 0 0 0 .223.111c.221 0 .43-.188.625-.565.196-.377.294-.725.294-1.043a.457.457 0 0 0-.083-.29.269.269 0 0 0-.222-.104zm-2.848.007c-.146 0-.285.11-.417.333-.133.222-.2.51-.2.866.566-.159.849-.452.849-.881 0-.212-.077-.318-.232-.318Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/scipy.svg b/assets/lib/simple-icons/icons/scipy.svg
new file mode 100644
index 00000000..40cbf903
--- /dev/null
+++ b/assets/lib/simple-icons/icons/scipy.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>SciPy</title><path d="M15.697 13.496c-.784-1.072-1.982-1.519-3.694-1.88l-1.592-.375-1.201-.515c-.631-.446-1.17-1.634-1.017-2.681a3 3 0 0 1 3.386-2.526 2.962 2.962 0 0 1 1.962 1.155L15.35 9.05c1.033 1.33 2.195 1.727 3.459 1.098l.637-.27a.22.22 0 0 1 .278.087l.127.19a.311.311 0 0 0 .156.131.326.326 0 0 0 .33-.058l1.467-1.384c.257-.22.182-.422.182-.422l-.354-.806s-.097-.193-.431-.149l-1.968.181a.327.327 0 0 0-.27.411l.071.227c.014.047.014.1-.005.148a.219.219 0 0 1-.124.125l-.556.235c-.582.341-1.244.123-1.686-.417l-.505-.67-1.438-1.91a4.421 4.421 0 0 0-2.929-1.72C9.355 3.733 7.095 5.42 6.741 7.84c-.179 1.22.187 2.375.855 3.302.485.674 1.373 1.06 1.854 1.18l1.262.36 1.208.277c.166.04.634.155.91.255.256.092.845.31 1.324.701.572.582.875 1.413.746 2.284a2.744 2.744 0 0 1-4.897 1.255l-1.726-2.292a2.294 2.294 0 0 0-1.514-.89 2.31 2.31 0 0 0-1.708.439l-3.632 2.71A11.002 11.002 0 0 1 0 12C0 5.798 5.133.768 11.465.768c4.715 0 8.761 2.788 10.523 6.77l.581-.27.393-1.072.411.144-.353.96.98.337-.148.402-1.095-.382-.603.277c.5 1.262.778 2.632.778 4.066 0 6.203-5.135 11.232-11.467 11.232a11.526 11.526 0 0 1-9.26-4.61l3.721-2.788a.855.855 0 0 1 1.163.19l1.826 2.455a4.186 4.186 0 0 0 2.673 1.502c2.302.322 4.439-1.273 4.773-3.563a4.14 4.14 0 0 0-.664-2.922"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/scopus.svg b/assets/lib/simple-icons/icons/scopus.svg
index 59369d1a..364b71e4 100644
--- a/assets/lib/simple-icons/icons/scopus.svg
+++ b/assets/lib/simple-icons/icons/scopus.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Scopus icon</title><path d="M24 19.059l-.14-1.777c-1.426.772-2.945 1.076-4.465 1.076-3.319 0-5.96-2.782-5.96-6.475 0-3.903 2.595-6.31 5.633-6.31 1.917 0 3.39.303 4.792 1.075L24 4.895c-1.286-.608-2.337-.889-4.698-.889-4.534 0-7.97 3.53-7.97 8.017 0 5.12 4.09 7.924 7.9 7.924 1.916 0 3.506-.257 4.768-.888zm-14.954-3.46c0-2.22-1.964-3.225-3.857-4.347C3.716 10.364 2.15 9.756 2.15 8.12c0-1.215.889-2.548 2.642-2.548 1.519 0 2.57.234 3.903 1.029l.117-1.847c-1.239-.514-2.127-.748-4.137-.748C1.8 4.006.047 5.876.047 8.26c0 2.384 2.103 3.413 4.02 4.581 1.426.865 2.922 1.45 2.922 2.992 0 1.496-1.333 2.571-2.922 2.571-1.566 0-2.594-.35-3.786-1.075L0 19.176c1.215.56 2.454.818 4.16.818 2.385 0 4.885-1.473 4.885-4.395z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Scopus</title><path d="M24 19.059l-.14-1.777c-1.426.772-2.945 1.076-4.465 1.076-3.319 0-5.96-2.782-5.96-6.475 0-3.903 2.595-6.31 5.633-6.31 1.917 0 3.39.303 4.792 1.075L24 4.895c-1.286-.608-2.337-.889-4.698-.889-4.534 0-7.97 3.53-7.97 8.017 0 5.12 4.09 7.924 7.9 7.924 1.916 0 3.506-.257 4.768-.888zm-14.954-3.46c0-2.22-1.964-3.225-3.857-4.347C3.716 10.364 2.15 9.756 2.15 8.12c0-1.215.889-2.548 2.642-2.548 1.519 0 2.57.234 3.903 1.029l.117-1.847c-1.239-.514-2.127-.748-4.137-.748C1.8 4.006.047 5.876.047 8.26c0 2.384 2.103 3.413 4.02 4.581 1.426.865 2.922 1.45 2.922 2.992 0 1.496-1.333 2.571-2.922 2.571-1.566 0-2.594-.35-3.786-1.075L0 19.176c1.215.56 2.454.818 4.16.818 2.385 0 4.885-1.473 4.885-4.395z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/scpfoundation.svg b/assets/lib/simple-icons/icons/scpfoundation.svg
new file mode 100644
index 00000000..10770696
--- /dev/null
+++ b/assets/lib/simple-icons/icons/scpfoundation.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>SCP Foundation</title><path d="M11.577 5.064v.555l-.045.01c-.026 0-.148.015-.272.028a7.023 7.023 0 0 0-3.146 1.14A7.053 7.053 0 0 0 6.18 8.73a7.007 7.007 0 0 0-.507 6.893c.05.103.09.19.09.195 0 0-.236.145-.528.313a34.79 34.79 0 0 0-.544.317c-.014.01.013.063.196.38a8.68 8.68 0 0 0 .22.37 26.001 26.001 0 0 0 .55-.312c.297-.173.544-.313.55-.313.003 0 .052.063.106.14a7.057 7.057 0 0 0 1.801 1.74 7.258 7.258 0 0 0 1.69.826 6.992 6.992 0 0 0 4.41 0 7.228 7.228 0 0 0 1.69-.825 7.01 7.01 0 0 0 1.816-1.764c.063-.09.117-.162.12-.162.002 0 .244.138.536.306.292.17.539.31.548.314.013.01.064-.075.23-.362.192-.331.21-.371.195-.383-.01-.01-.255-.15-.546-.317a16.77 16.77 0 0 1-.527-.313s.036-.082.08-.174a7.033 7.033 0 0 0 .566-4.14 7.074 7.074 0 0 0-1.084-2.73 7.03 7.03 0 0 0-1.622-1.714 6.664 6.664 0 0 0-1.08-.663 6.834 6.834 0 0 0-2.378-.697l-.27-.028-.048-.01v-1.11h-.863zm0 3.102v1.25h-.492c-.285 0-.49 0-.487.01.01.032 1.428 2.775 1.432 2.775.004 0 1.42-2.743 1.434-2.774.002-.01-.213-.01-.51-.01h-.514V6.915h.05c.151 0 .606.076.912.152a5.304 5.304 0 0 1 1.137.42 5.64 5.64 0 0 1 1.165.755c.165.136.589.567.73.742.21.26.406.545.567.828.086.152.263.52.33.69a5.74 5.74 0 0 1 .115 3.918c-.096.29-.27.703-.294.703-.013 0-1.993-1.14-2.013-1.16-.013-.011.022-.08.223-.427.13-.228.24-.418.24-.424 0-.011.007-.011-.25-.022-.102 0-.195-.01-.204-.011-.01 0-.105-.01-.215-.01s-.224-.01-.254-.012c-.03 0-.126-.01-.216-.011-.088 0-.183-.01-.21-.011-.027 0-.134-.01-.237-.012-.104 0-.205-.01-.225-.01-.02 0-.118-.01-.22-.011-.102 0-.203-.01-.224-.011-.02 0-.13-.01-.243-.011-.112 0-.212-.01-.22-.011-.042-.01-.4-.018-.4-.012 0 0 .307.484.682 1.067l.843 1.31c.146.226.163.25.176.233.008-.011.124-.21.259-.443l.245-.424.032.019 1.013.584c.538.31.978.57.978.575 0 .016-.16.23-.29.39a8.634 8.634 0 0 1-.718.728 6.278 6.278 0 0 1-.76.54 7.585 7.585 0 0 1-.817.403 5.743 5.743 0 0 1-4.236 0c-.2-.08-.634-.292-.816-.403a6.23 6.23 0 0 1-.76-.54 8.363 8.363 0 0 1-.696-.7 4.14 4.14 0 0 1-.29-.383c.002 0 .443-.257.98-.567l1.01-.583.034-.021.235.407c.13.224.24.416.248.427.011.017.02.01.08-.086.036-.058.132-.21.213-.333l.267-.415c.114-.18.485-.756.583-.906l.242-.377.255-.396a.682.682 0 0 0 .058-.101c0-.01-.026-.01-.083-.01-.046 0-.15.01-.23.012-.08 0-.182.01-.226.01-.088.01-.239.014-.453.023-.075 0-.172.01-.216.01-.044 0-.14.01-.216.012-.137.01-.26.012-.45.022-.058 0-.212.01-.342.016-.13.01-.285.013-.342.016-.059 0-.153.01-.21.01-.263.014-.349.02-.349.027 0 0 .113.203.252.443l.253.437-.03.017c-.093.06-1.996 1.153-2.004 1.153-.013 0-.114-.214-.19-.406a5.79 5.79 0 0 1-.406-2.49 5.765 5.765 0 0 1 1.291-3.287c.143-.174.567-.606.732-.742.378-.313.73-.54 1.164-.756.4-.196.725-.317 1.137-.42.31-.077.733-.148.9-.15h.061zM8.531.806l-.168.964c-.088.513-.165.94-.17.947a.832.832 0 0 1-.164.077 10.594 10.594 0 0 0-6.498 8.22 2.255 2.255 0 0 1-.04.215c-.02.053-.064.467-.084.825a15.195 15.195 0 0 0 0 1.134c.013.235.033.455.066.736l.024.199-.043.04a44.252 44.252 0 0 1-.328.303l-.2.183c-.09.085-.106.1-.562.522-.198.18-.36.335-.364.34-.003 0 .132.246.299.536l1.738 3.01a200.286 200.286 0 0 0 1.446 2.484c.006 0 .091-.03.19-.066l.468-.171c.95-.348 1.182-.432 1.19-.432a.384.384 0 0 1 .075.053c.197.165.681.506 1 .704a11.19 11.19 0 0 0 1.898.926 10.64 10.64 0 0 0 4.967.593 10.69 10.69 0 0 0 2.583-.647c.106-.042.203-.078.215-.08.059-.01.404-.167.745-.34.553-.28 1.037-.58 1.545-.96l.208-.152.056.017.089.028a133.24 133.24 0 0 1 1.343.419c.015.01.077.025.14.043l.213.067a.612.612 0 0 0 .11.028c.013 0 3.486-6.017 3.482-6.027-.003-.01-.21-.182-1.076-.904l-.415-.347c-.02-.02-.02-.023.002-.18.12-.844.134-1.68.045-2.56a10.59 10.59 0 0 0-5.284-8.136 11.63 11.63 0 0 0-1.226-.6c-.05-.02-.092-.045-.094-.054-.003-.01-.104-.452-.223-.983l-.222-.984c-.005-.017-.18-.018-3.489-.018h-3.48Zm6.395.55a183.046 183.046 0 0 1 .426 1.832c.008.03.02.037.213.11.425.165.93.4 1.282.597a9.974 9.974 0 0 1 5.106 7.923c.035.432.042 1.199.012 1.558-.028.345-.081.75-.143 1.093l-.013.073.048.046a5.893 5.893 0 0 0 .255.219c.006.01.062.053.123.102l.214.177.41.344c.413.345.384.318.37.34-.004.01-.66 1.142-1.452 2.516-.867 1.503-1.45 2.5-1.458 2.5-.01 0-.095-.024-.191-.053l-.213-.064a44.667 44.667 0 0 1-.857-.262c-.012-.01-.043-.015-.07-.022-.027-.01-.058-.016-.07-.022-.012-.01-.055-.02-.097-.03l-.207-.062c-.13-.04-.132-.04-.16-.02l-.18.145c-.261.21-.743.56-.773.56a.77.77 0 0 0-.106.062 10.05 10.05 0 0 1-4.744 1.559 16.157 16.157 0 0 1-1.284 0c-1.405-.105-2.64-.443-3.845-1.05a10.14 10.14 0 0 1-1.764-1.131.565.565 0 0 0-.088-.066.995.995 0 0 1-.117-.095l-.104-.09-.05.01a5.057 5.057 0 0 0-.466.164 60.002 60.002 0 0 1-.528.195l-.529.193a2.303 2.303 0 0 1-.188.066c-.006 0-.666-1.134-1.466-2.52l-1.455-2.52.037-.031.214-.202.248-.233.173-.164c.056-.054.128-.12.16-.15l.1-.09a41.97 41.97 0 0 1 .41-.385l.072-.07-.015-.077a8.382 8.382 0 0 1-.118-1c0-.087-.006-.32-.01-.518A9.967 9.967 0 0 1 6.46 4.329a9.862 9.862 0 0 1 2.178-1.1c.124-.044.13-.048.138-.082.011-.043.081-.437.214-1.202l.103-.586.005-.024h2.91c2.765 0 2.912 0 2.918.018z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/scratch.svg b/assets/lib/simple-icons/icons/scratch.svg
new file mode 100644
index 00000000..f820a7ac
--- /dev/null
+++ b/assets/lib/simple-icons/icons/scratch.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Scratch</title><path d="M11.406 11.312c-.78-.123-1.198-.654-.99-2.295l.023-.198c.175-1.426.321-1.743.996-1.706.198.013.426.14.654.33.211.247.68.568.945 1.204.19.466.254.77.281 1.098l.042.402v-.002a.68.68 0 0 0 1.342-.007c.008-.044.176-4.365.176-4.436 0-.38-.302-.69-.68-.696a.685.685 0 0 0-.682.688c0 .009-.001.605-.014 1.206-.536-.592-1.223-1.123-1.994-1.17-2.058-.11-2.283 1.811-2.419 2.918l-.02.196c-.278 2.189.441 3.569 2.13 3.837 1.838.293 3.063.72 3.074 1.868.007.446-.224.903-.627 1.254a2.163 2.163 0 0 1-1.749.507 3.233 3.233 0 0 1-.539-.141c-.24-.136-.847-.51-1.154-.942-.26-.364-.35-.937-.378-1.3.004-.163.005-.27.005-.283a.69.69 0 0 0-.669-.703.689.689 0 0 0-.696.682c0 .013-.017 1.367-.066 2.183-.07 1.313 0 2.426 0 2.474.028.382.35.67.727.644a.681.681 0 0 0 .635-.733c0-.006-.033-.545-.029-1.29a5.21 5.21 0 0 0 1.938.773 3.451 3.451 0 0 0 2.856-.82c.713-.619 1.122-1.464 1.11-2.32-.024-2.555-2.865-3.004-4.228-3.222M14.174 0a5.51 5.51 0 0 0-2.724.723h-.112c-2.637 0-4.937 1.392-6.15 3.728-.728 1.393-.9 2.75-.999 3.579-.012.089-.018.17-.028.262-.12.974-.123 1.904-.01 2.772a5.824 5.824 0 0 0-.625 2.529v.016a58.919 58.919 0 0 1-.057 1.95 29.72 29.72 0 0 0-.008 2.94l.013.209C3.698 21.676 6.159 24 9.083 24a5.516 5.516 0 0 0 3.463-1.21 8.357 8.357 0 0 0 5.195-2.08c1.826-1.587 2.859-3.845 2.83-6.19-.013-1.362-.346-2.638-.978-3.763.117-1.273.221-4.996.221-5.03 0-3.103-2.484-5.67-5.539-5.727zm.056 2.675c1.642.03 2.978 1.412 2.978 3.081 0 .038-.145 4.497-.215 4.883a3.152 3.152 0 0 1-.203.69c.756.89 1.165 2 1.175 3.256.021 1.555-.681 3.076-1.926 4.16a5.763 5.763 0 0 1-3.8 1.444 5.986 5.986 0 0 1-.718-.048 3.386 3.386 0 0 1-.172.215 2.97 2.97 0 0 1-2.264 1.038c-1.573 0-2.897-1.255-3.013-2.856l-.008-.122a27.366 27.366 0 0 1 .005-2.662c.039-.679.06-1.831.062-2.08a3.124 3.124 0 0 1 .783-2.025c-.237-.835-.312-1.836-.167-3.02l.024-.212c.083-.695.208-1.72.72-2.7.765-1.473 2.168-2.318 3.848-2.318a4.568 4.568 0 0 1 .824.07c.546-.5 1.27-.81 2.067-.794Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/screencastify.svg b/assets/lib/simple-icons/icons/screencastify.svg
new file mode 100644
index 00000000..a39f980b
--- /dev/null
+++ b/assets/lib/simple-icons/icons/screencastify.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Screencastify</title><path d="M7.898 2.347c-.472.008-.914.38-.914.891v4.278H1.1c-.541 0-1.1.437-1.1.978v7.02c0 .54.559.907 1.1.907h5.884V7.533h6.408c.542 0 .926.437.926.979v1.623l3.667-2.095v7.927l-3.667-2.095v1.676c0 .541-.384.908-.926.908H6.984v4.313c0 .68.786 1.1 1.38.768l9.638-5.535 5.553-3.195c.593-.402.593-1.257 0-1.59l-5.553-3.194L8.364 2.47a.886.886 0 00-.466-.123z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/scribd.svg b/assets/lib/simple-icons/icons/scribd.svg
index f6d1c701..a3a48695 100644
--- a/assets/lib/simple-icons/icons/scribd.svg
+++ b/assets/lib/simple-icons/icons/scribd.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Scribd icon</title><path d="M14.839 21.059c0-2.123 1.572-3.939 3.543-4.307-.094-1.973-.924-3.328-2.219-4.343-1.305-1.016-3.121-1.785-5.088-2.557-2.13-.832-3.721-1.569-3.721-3.172 0-1.352 1.17-2.369 3.137-2.369 1.201 0 1.974.185 2.371.399 0 .093-.029.216-.09.309-.061.123-.09.276-.09.493 0 1.354.983 2.555 2.738 2.555 1.602 0 2.555-1.201 2.555-2.957 0-1.477-.832-2.77-2.188-3.663C14.409.555 12.487 0 10.312 0 8.06.155 6.123.985 4.77 2.217 3.415 3.447 2.615 5.111 2.615 7.08c0 2.187.77 3.603 2.031 4.683 1.262 1.077 3.078 1.846 5.265 2.616 2.372.764 3.757 1.561 3.757 3.137 0 1.59-1.385 2.551-3.572 2.551-1.141 0-2.124-.193-2.957-.764.219-.406.219-.813.219-1.201 0-1.143-1.006-2.568-2.764-2.568-1.56 0-2.73 1.201-2.73 2.957 0 1.471.93 2.867 2.445 3.844C5.794 23.354 7.88 24 10.132 24c1.982 0 3.768-.375 5.148-1.365-.21-.406-.39-.992-.39-1.607l-.051.031zm7.299 0c0 1.572-1.275 2.773-2.777 2.773-1.5 0-2.746-1.201-2.746-2.771 0-1.5 1.23-2.732 2.73-2.732 1.502 0 2.764 1.232 2.764 2.748l.029-.018z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Scribd</title><path d="M14.839 21.059c0-2.123 1.572-3.939 3.543-4.307-.094-1.973-.924-3.328-2.219-4.343-1.305-1.016-3.121-1.785-5.088-2.557-2.13-.832-3.721-1.569-3.721-3.172 0-1.352 1.17-2.369 3.137-2.369 1.201 0 1.974.185 2.371.399 0 .093-.029.216-.09.309-.061.123-.09.276-.09.493 0 1.354.983 2.555 2.738 2.555 1.602 0 2.555-1.201 2.555-2.957 0-1.477-.832-2.77-2.188-3.663C14.409.555 12.487 0 10.312 0 8.06.155 6.123.985 4.77 2.217 3.415 3.447 2.615 5.111 2.615 7.08c0 2.187.77 3.603 2.031 4.683 1.262 1.077 3.078 1.846 5.265 2.616 2.372.764 3.757 1.561 3.757 3.137 0 1.59-1.385 2.551-3.572 2.551-1.141 0-2.124-.193-2.957-.764.219-.406.219-.813.219-1.201 0-1.143-1.006-2.568-2.764-2.568-1.56 0-2.73 1.201-2.73 2.957 0 1.471.93 2.867 2.445 3.844C5.794 23.354 7.88 24 10.132 24c1.982 0 3.768-.375 5.148-1.365-.21-.406-.39-.992-.39-1.607l-.051.031zm7.299 0c0 1.572-1.275 2.773-2.777 2.773-1.5 0-2.746-1.201-2.746-2.771 0-1.5 1.23-2.732 2.73-2.732 1.502 0 2.764 1.232 2.764 2.748l.029-.018z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/scrimba.svg b/assets/lib/simple-icons/icons/scrimba.svg
new file mode 100644
index 00000000..c8a580e1
--- /dev/null
+++ b/assets/lib/simple-icons/icons/scrimba.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Scrimba</title><path d="M24 6.222a2.222 2.222 0 01-2.222 2.222h-8.89a2.222 2.222 0 010-4.444h8.89C23.005 4 24 4.995 24 6.222zm-7.333 9.334h-8.89a2.222 2.222 0 000 4.444h8.89a2.222 2.222 0 000-4.444zm0-5.778H13.11a2.222 2.222 0 000 4.444h3.556a2.222 2.222 0 000-4.444zM2.222 15.556a2.222 2.222 0 100 4.444 2.222 2.222 0 000-4.444z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/scrollreveal.svg b/assets/lib/simple-icons/icons/scrollreveal.svg
new file mode 100644
index 00000000..a8050936
--- /dev/null
+++ b/assets/lib/simple-icons/icons/scrollreveal.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ScrollReveal</title><path d="M1.714 2.857A1.71 1.71 0 0 0 0 4.571v6.858c0 .95.765 1.714 1.714 1.714a1.71 1.71 0 0 0 1.715-1.714V4.57a1.71 1.71 0 0 0-1.715-1.714zm6.857 0a1.71 1.71 0 0 0-1.714 1.714v1.143c0 .95.765 1.715 1.714 1.715a1.71 1.71 0 0 0 1.715-1.715V4.571A1.71 1.71 0 0 0 8.57 2.857zm6.858 0a1.71 1.71 0 0 0-1.715 1.714V19.43c0 .95.765 1.714 1.715 1.714a1.71 1.71 0 0 0 1.714-1.714V4.57a1.71 1.71 0 0 0-1.714-1.714zm6.857 0a1.71 1.71 0 0 0-1.715 1.714v6.858c0 .95.765 1.714 1.715 1.714A1.71 1.71 0 0 0 24 11.429V4.57a1.71 1.71 0 0 0-1.714-1.714zm-13.715 8a1.71 1.71 0 0 0-1.714 1.714v6.858c0 .95.765 1.714 1.714 1.714a1.71 1.71 0 0 0 1.715-1.714V12.57a1.71 1.71 0 0 0-1.715-1.714zm-6.857 5.714A1.71 1.71 0 0 0 0 18.286v1.143c0 .95.765 1.714 1.714 1.714a1.71 1.71 0 0 0 1.715-1.714v-1.143a1.71 1.71 0 0 0-1.715-1.715zm20.572 0a1.71 1.71 0 0 0-1.715 1.715v1.143c0 .95.765 1.714 1.715 1.714A1.71 1.71 0 0 0 24 19.429v-1.143a1.71 1.71 0 0 0-1.714-1.715Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/scrumalliance.svg b/assets/lib/simple-icons/icons/scrumalliance.svg
new file mode 100644
index 00000000..9ec762f7
--- /dev/null
+++ b/assets/lib/simple-icons/icons/scrumalliance.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Scrum Alliance</title><path d="M1.6113 7.6836a.2999.2999 0 1 0 .3398.254.2998.2998 0 0 0-.3398-.254zm.879.002a.325.325 0 0 0-.295.3242.325.325 0 0 0 .3262.3261.325.325 0 0 0 .3242-.3261.325.325 0 0 0-.3242-.3243.325.325 0 0 0-.0313 0zM.8261 8.078a.2746.2746 0 0 0-.2325.3106c.022.15.1608.2524.3106.2304a.2711.2711 0 0 0 .2305-.3086c-.0216-.1493-.1591-.2543-.3086-.2324zm2.086.375a.349.349 0 0 0 .3495.3496.349.349 0 0 0 .3477-.3496.3481.3481 0 0 0-.3487-.3469.3481.3481 0 0 0-.3486.347zm3.9648.0274c-.6133 0-1.17.3394-1.17.9883 0 .9991 1.3438.7344 1.3438 1.4355 0 .3597-.287.6113-.6914.6113-.2958 0-.6265-.0989-.5742-.3926l.0468-.2617h-.4004l-.0605.332c-.0956.5637.5359.7442.9316.7442.6438 0 1.1953-.3976 1.1953-1.0605 0-1.0373-1.3437-.7678-1.3437-1.4356 0-.3362.2964-.545.666-.545.2175 0 .5124.0716.4688.299l-.0391.2323h.4004l.0703-.3613c.0826-.4308-.4827-.586-.8437-.586zm-6.541.287a.2454.2454 0 0 0-.207.2774.2435.2435 0 0 0 .2772.2051.2431.2431 0 0 0 .207-.2754.2457.2457 0 0 0-.2773-.207zm3.3261.127a.3674.3674 0 0 0-.3105.416.3674.3674 0 0 0 .416.3106.3668.3668 0 0 0 .3105-.416.367.367 0 0 0-.416-.3106zm5.664.5332c-.7783 0-1.4003.6805-1.4003 1.457 0 .6254.4032 1.0528 1.0469 1.0528.5787 0 .914-.3555.914-.3555l-.121-.3554s-.3147.3125-.754.3125c-.4087 0-.6562-.2707-.6562-.6875 0-.554.4472-1.0274.9258-1.0274.2087 0 .4523.0852.4218.2793l-.0293.1621h.373l.0528-.2754c.0696-.4262-.4557-.5625-.7734-.5625zm7.625 0c-.4132 0-.7684.369-.873.582h-.0097c.0305-.085.0664-.2712.0664-.328 0-.128-.0662-.1973-.2403-.1973h-.496l-.0645.3554h.2734c.0695 0 .0868.0362.0781.0977l-.3476 1.9434h.4219l.1914-1.0704c.087-.4735.4044-.9667.8261-.9667.2437 0 .3145.1378.3145.332 0 .0805-.0183.1747-.0313.2695l-.2558 1.4356h.42l.1972-1.0957c.0784-.4594.3917-.9414.8008-.9414.2522 0 .3203.1372.3203.3457 0 .2272-.1856 1.0272-.1856 1.25 0 .4072.2867.4492.4824.4492.1043 0 .1875-.0078.1875-.0078l.0645-.3555s-.0446.0098-.1055.0098c-.1087 0-.1953-.0292-.1953-.209 0-.1895.1914-.9814.1914-1.2657 0-.4072-.2293-.6328-.6035-.6328-.3654 0-.6956.2555-.8652.582h-.0098c-.0217-.3788-.2005-.582-.5527-.582zm-4.9628.0274c-.3479 0-.6431.2976-.791.6387h-.0098c.0349-.1138.0781-.3448.0781-.4063 0-.1375-.0647-.2031-.2343-.2031h-.4961l-.0704.3535h.2754c.0739 0 .087.0486.0782.1055l-.3438 1.9375h.4219l.1562-.8907c.0956-.5493.4607-1.0859.8653-1.0859.0565 0 .0956.011.1172.0156l.084-.455a.7813.7813 0 0 0-.131-.0098zm.4922.0293l-.0664.3535h.3652l-.2031 1.166a1.5665 1.5665 0 0 0-.0313.3027c0 .45.2823.6309.6172.6309.4612 0 .7665-.3281.9102-.5742h.0078c-.0304.3599.1437.5254.4394.5254a2.838 2.838 0 0 0 .2012-.0078l.0645-.3555s-.0403.0098-.1055.0098c-.1086 0-.1953-.0386-.1953-.209a.937.937 0 0 1 .0136-.1465l.3047-1.6953h-.787l-.0665.3535h.3653l-.129.7344c-.0784.4545-.4357.9472-.875.9472-.2478 0-.33-.1273-.33-.336 0-.0756.0134-.174.0351-.2733l.252-1.4258zm-12.2871.086a.2255.2255 0 0 0-.1914.2558c.0178.1238.134.209.2578.1914a.2254.2254 0 0 0 .1914-.2559.2277.2277 0 0 0-.2578-.1914zm.2187.7773a.1912.1912 0 0 0-.1621.2168.193.193 0 0 0 .2188.162.1911.1911 0 0 0 .162-.2167.1936.1936 0 0 0-.2187-.1621zm.4941.6484a.166.166 0 0 0-.1406.1875.1642.1642 0 0 0 .1875.1387.1659.1659 0 0 0 .1407-.1875.1644.1644 0 0 0-.1876-.1387zm2.4864.2207c-.222 0-.4024.179-.4024.4004 0 .2219.1805.4023.4024.4023a.4027.4027 0 0 0 .4023-.4023c0-.2214-.1804-.4004-.4023-.4004zm-1.8106.0762a.157.157 0 0 0-.1445.1562.157.157 0 0 0 .1582.1582.157.157 0 0 0 .1563-.1582.157.157 0 0 0-.1563-.1562.1566.1566 0 0 0-.0137 0zm.672.0918a.4355.4355 0 0 0-.418.4355.4355.4355 0 1 0 .4355-.4355.4365.4365 0 0 0-.0176 0zm2.205.1757c-.2024 0-.3652.165-.3652.3672 0 .2028.1628.3672.3652.3672a.3673.3673 0 0 0 .3672-.3672.3677.3677 0 0 0-.3672-.3672zm-3.0645.5098a.4664.4664 0 0 0-.4668.4668c0 .2583.2087.4668.4668.4668a.4663.4663 0 0 0 .4668-.4668.4664.4664 0 0 0-.4668-.4668zm3.8575.3223a.3187.3187 0 0 0-.3184.3203c0 .1774.1414.3203.3184.3203a.32.32 0 0 0 .3203-.3203.3205.3205 0 0 0-.3203-.3203zm2.8125.4824l-1.5743 3.0547h-.3086l-.0488.2754h.9785l.0528-.2754h-.3477l.4395-.8574h1.1914l.1347.8574h-.3535l-.0469.2754h.9649l.0488-.2754h-.3086l-.4844-3.0547zm1.6835 0l-.0488.2656h.3926l-.4395 2.4668c-.013.0663-.0214.1323-.0214.1797 0 .3742.2561.4316.4257.4316.0697 0 .1524-.0136.1524-.0136l.0469-.2754s-.0334.0098-.1075.0098c-.1043 0-.209-.014-.209-.213 0-.0378.0089-.0995.0176-.1562l.4785-2.6953zm1.1622 0l-.0489.2656h.3907l-.4375 2.4668c-.0132.0663-.0235.1323-.0235.1797 0 .3742.2581.4316.4277.4316.0697 0 .1524-.0136.1524-.0136l.0469-.2754s-.0336.0098-.1075.0098c-.1045 0-.209-.014-.209-.213 0-.0378.0089-.0995.0176-.1562l.4766-2.6953zm1.6386 0l-.0742.4023h.336l.0742-.4023zM.957 13.1738a.4928.4928 0 0 0-.4922.4922c0 .2718.2208.4902.4922.4902a.4905.4905 0 0 0 .4922-.4902.4925.4925 0 0 0-.4922-.4922zm22.5762.039c-.2566 0-.4629.2294-.4629.5177 0 .288.2063.5175.4629.5175.2592 0 .4668-.2296.4668-.5175 0-.2883-.2076-.5176-.4668-.5176zm-15.3555.004h.0078s.0003.104.0176.2129l.209 1.3633H7.3906l.7031-1.3633c.0523-.109.084-.2129.084-.2129zm15.3555.0918c.2097 0 .3711.1847.3711.4219 0 .237-.1614.4218-.3711.4218-.2073 0-.3672-.1848-.3672-.4218 0-.2372.1599-.422.3672-.422zm-17.9453.0976a.2965.2965 0 0 0-.2969.297c0 .164.1326.2968.2969.2968s.2988-.1328.2988-.2969c0-.1643-.1345-.2968-.2988-.2968zm17.7871.0547v.5352h.0918v-.207h.08l.0919.207h.1015l-.0937-.1973c-.0117-.0242-.0176-.0293-.0176-.0293v-.0039c.0404-.0112.0898-.0583.0898-.1406 0-.0993-.0617-.164-.1542-.164zm.0918.0762h.0781c.0482 0 .0801.0327.0801.0879 0 .0568-.0319.0898-.08.0898h-.0782zm-9.1602.2285c-.4568 0-.7949.2461-.7949.2461l.0899.2617s.2971-.2226.6582-.2226c.3349 0 .4472.1746.4472.4258 0 .085-.0351.2695-.0351.2695h-.1426c-.6003 0-1.4844.1555-1.4844.918 0 .3836.2884.5976.6406.5976.5177 0 .8091-.5117.8047-.5117h.0078c-.0217.3174.14.4648.3965.4648.0783 0 .164-.0097.164-.0097l.049-.2656s-.0393.0097-.1134.0097c-.1 0-.205-.024-.205-.2226 0-.199.2187-1.0175.2187-1.297 0-.4593-.2836-.664-.7012-.664zm2.92 0c-.5395 0-.8878.4272-.9746.6309h-.0098c.0393-.0995.0742-.327.0742-.379 0-.1231-.0554-.1952-.2207-.1952h-.418l-.0488.2656h.2969c.0695 0 .0867.0467.0781.1035l-.3613 2.0137h.2949l.1973-1.0938c.0956-.5587.53-1.043 1-1.043.2435 0 .3789.1285.3789.3985 0 .2652-.2051 1.1269-.2051 1.3398 0 .36.2613.4082.418.4082.0738 0 .1601-.0097.1601-.0097l.0488-.2656s-.0397.0097-.1093.0097c-.1042 0-.209-.019-.209-.2226 0-.1895.205-1.0562.205-1.3496 0-.393-.2129-.6114-.5956-.6114zm2.5312 0c-.7264 0-1.3789.6491-1.3789 1.459 0 .6394.4078 1.0371 1.004 1.0371.5567 0 .8886-.3555.8886-.3555l-.0957-.2656s-.3127.332-.7695.332c-.4262 0-.7227-.2891-.7227-.7675 0-.6487.5301-1.1504 1.039-1.1504.2132 0 .5096.09.4747.3125l-.0313.1758h.2754l.043-.252c.0652-.3881-.4308-.5254-.7266-.5254zm2.3106 0c-.7395 0-1.2793.7156-1.2793 1.4922 0 .6015.392 1.004.9921 1.004.461 0 .8223-.3126.8223-.3126l-.0918-.2656s-.323.289-.7187.289c-.461 0-.6992-.3262-.6992-.7382 0-.1185.0214-.2188.0214-.2188h1.6797s.0606-.204.0606-.3886c0-.4973-.2477-.8614-.7871-.8614zm-10.0586.0567l-.047.2656h.3907l-.2773 1.5351c-.0088.0664-.0235.1265-.0235.1739 0 .3742.2624.418.4278.418.0608 0 .1523-.0098.1523-.0098l.0469-.2656s-.0355.0097-.1094.0097c-.1045 0-.207-.0238-.207-.2226 0-.0379.003-.0846.0117-.1368l.3223-1.7675zm10.0449.2129c.2873 0 .5.1855.5.5644 0 .0948-.0176.1797-.0176.1797H21.168c.1565-.4833.526-.7441.8867-.7441zm-16.6035.4238c-.139 0-.252.113-.252.252 0 .1387.113.25.252.25s.252-.1113.252-.25c0-.139-.113-.252-.252-.252zm9.0508.5293h.127l-.0216.1035c-.0954.412-.4389.9043-.8476.9043-.2916 0-.4141-.1753-.4141-.379 0-.5872.7908-.6288 1.1563-.6288zm-9.5684.4043c-.1198 0-.2188.0966-.2188.2168a.22.22 0 0 0 .2188.2187c.12 0 .2168-.0988.2168-.2187a.2164.2164 0 0 0-.2168-.2168zm-.8086.5137a.2077.2077 0 0 0-.207.207c0 .114.0932.205.207.205a.2044.2044 0 0 0 .205-.205.2062.2062 0 0 0-.205-.207Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/scrutinizerci.svg b/assets/lib/simple-icons/icons/scrutinizerci.svg
index 367cfb50..fa2dc94a 100644
--- a/assets/lib/simple-icons/icons/scrutinizerci.svg
+++ b/assets/lib/simple-icons/icons/scrutinizerci.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Scrutinizer CI icon</title><path d="M14.86 0L6.877.06a6.139 6.127 0 0 0-3.744 2.508 6.36 6.36 0 0 0-1.357 2.64l-.12.553-.119.857c-.06.799-.06 1.351.12 1.471h5.275c.06 0-.186-.246-.186-.672 0-.738.252-.924.552-1.23.552-.426 2.945-.12 4.728-.246 2.448 0 4.602-.06 4.848-.12 2.7-.427 5.03-2.388 5.522-4.536.12-.547.12-1.105.06-1.165C22.396 0 21.417 0 14.858 0zM9.192 9.007c-3.758-.015-7.47 0-7.53.06-.126.126-.06.798.06 1.35a5.64 5.64 0 0 0 1.843 2.761 7.549 7.549 0 0 0 3.312 1.59c.366.126 1.044.126 4.597.126 4.236 0 4.915.06 5.22.24a1.842 1.836 0 0 1 .372.372c.18.24.181.307.181.979 0 .672-.066.732-.186 1.044a1.47 1.47 0 0 1-.426.366c-.186.12-.307.119-4.357.179-4.67 0-5.155 0-6.319.432a6.445 6.433 0 0 0-2.46 1.35c-1.164 1.039-1.842 2.203-1.962 3.428l.06.611a283.022 282.613 0 0 0 15.404 0l.492-.12a4.543 4.537 0 0 0 .737-.245l.367-.18a7.735 7.723 0 0 0 3.499-4.297 8.407 8.395 0 0 0-.373-6.061 8.527 8.521 0 0 0-2.328-2.88 6.937 6.925 0 0 0-2.394-.984c-.246-.06-4.051-.106-7.81-.121z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Scrutinizer CI</title><path d="M14.862 0L6.879.06a6.139 6.127 0 00-3.744 2.508 6.36 6.36 0 00-1.357 2.64l-.12.553-.12.857c-.06.8-.06 1.351.12 1.471h5.276c.06 0-.186-.246-.186-.672 0-.738.252-.924.552-1.23.552-.426 2.945-.12 4.728-.246 2.448 0 4.602-.06 4.848-.12 2.7-.427 5.03-2.388 5.522-4.536.12-.547.12-1.105.06-1.165C22.398 0 21.418 0 14.86 0zM9.194 9.007c-3.758-.015-7.47 0-7.53.06-.126.126-.06.798.06 1.35a5.64 5.64 0 001.843 2.761 7.549 7.549 0 003.312 1.59c.366.126 1.044.126 4.597.126 4.236 0 4.915.06 5.22.24a1.842 1.836 0 01.372.372c.18.24.18.307.18.98 0 .671-.065.731-.185 1.043a1.47 1.47 0 01-.426.366c-.186.12-.307.12-4.357.18-4.67 0-5.155 0-6.32.431a6.445 6.433 0 00-2.46 1.35c-1.163 1.04-1.841 2.203-1.961 3.428l.06.611a283.022 282.613 0 0015.404 0l.492-.12a4.543 4.537 0 00.737-.245l.367-.18a7.735 7.723 0 003.499-4.297 8.407 8.395 0 00-.373-6.06 8.527 8.521 0 00-2.328-2.88 6.937 6.925 0 00-2.394-.985c-.246-.06-4.051-.106-7.81-.12z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/seagate.svg b/assets/lib/simple-icons/icons/seagate.svg
index a5832d32..6dfa6087 100644
--- a/assets/lib/simple-icons/icons/seagate.svg
+++ b/assets/lib/simple-icons/icons/seagate.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Seagate icon</title><path d="M8.315 1.735c.277-.166.554-.333.831-.443.111.277.277.554.388.83-.61.333-1.219.61-1.772.997-8.149 4.948-6.9 10.574-3.379 11.077 2.399.45 5.343-1.094 7.422-2.326 1.575-.985 2.99-1.926 2.99-3.046 0-.713-.824-1.053-1.495-.942-2.167.542-5.07 3.545-7.477 3.545-1.097 0-1.895-.842-1.772-1.828.154-1.843 1.891-3.229 3.49-4.154 2.585-1.696 6.02-3.199 9.082-3.046 7.647.264 12.227 9.815-.997 18.167-1.501.948-3.92 1.99-4.43 2.16-.222-.997-.554-1.994-.776-2.991 2.421-1.14 3.145-1.281 5.816-3.323 2.243-1.795 4.4-3.917 4.763-6.813.055-.664.055-1.274-.111-1.938-.901-3.09-5.07-6.275-12.905-1.052-.815.475-2.16 1.436-2.16 2.381 0 .222.166.499.388.554 1.204.516 3.881-2.192 6.535-3.102 2.08-.734 4.175.047 4.542 1.884.055.498.055.996-.11 1.44-.594 1.541-2.025 2.658-3.49 3.6-1.53.842-3.087 2.042-6.48 2.935-2.315.631-5.267.29-6.48-1.772-.499-.776-.72-1.717-.72-2.603.055-1.053.277-2.105.72-3.047.775-1.606 1.938-3.046 3.323-4.209a23.121 23.121 0 0 1 4.32-2.99z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Seagate</title><path d="M11.2279 22.6842c-.2642-1.0048-.5233-1.9919-.7764-2.9548.2734-.1324.4986-.2368.7965-.384 1.239-.528 2.4364-1.1329 3.5508-1.8929 1.3946-.9512 2.6975-2.0144 3.8322-3.2673.8904-.983 1.6324-2.0681 2.0558-3.3424.282-.8479.4202-1.7152.2962-2.6088-.103-.7409-.375-1.4175-.7962-2.0369-.5082-.747-1.1691-1.3149-1.9737-1.7209-1.0067-.5084-2.0802-.696-3.1976-.6628-.9912.0294-1.9456.2473-2.8748.5868C10.431 5.0247 8.863 5.9178 7.358 6.928c-.4391.2949-.8425.6364-1.1916 1.0376-.1904.2188-.3368.4606-.3985.7491-.1038.4872.1755.858.6724.8816.3477.0164.6577-.1181.9617-.262.9456-.4467 1.7992-1.049 2.6828-1.6.7256-.4527 1.458-.8945 2.255-1.2117.786-.313 1.5975-.4847 2.447-.3423.9257.1549 1.6704.5913 2.1225 1.4413.3168.5956.3421 1.2269.1754 1.871-.1903.733-.6147 1.3292-1.1168 1.8759-.6926.7545-1.49 1.3817-2.372 1.899-.924.5421-1.8403 1.1006-2.788 1.5986-1.1086.5827-2.2897.9958-3.4927 1.3446-1.0106.2934-2.0378.4258-3.0865.3328-.8788-.078-1.7068-.3332-2.4364-.8414-.659-.4593-1.1454-1.068-1.44-1.8192-.455-1.1608-.4317-2.3436-.1437-3.5352.3256-1.3464 1.008-2.5097 1.8502-3.5909.6395-.8209 1.3767-1.5472 2.1709-2.2152 1.1242-.9458 2.317-1.7969 3.5952-2.524.4327-.246.8736-.4777 1.285-.702l.4213.8667c-.3808.2048-.757.4008-1.1275.6072-1.5956.8886-3.0574 1.96-4.3596 3.2419-.707.6956-1.3047 1.4804-1.7574 2.3664-.4741.9285-.7285 1.9104-.6164 2.9584.1232 1.147.661 2.0288 1.7175 2.5579.6303.3158 1.303.4098 1.997.3947.9564-.0205 1.858-.2923 2.7487-.6108 1.3273-.475 2.5625-1.1374 3.7648-1.8638.7058-.4264 1.4094-.8594 2.0064-1.4363.315-.3047.6302-.6145.7914-1.0384.2862-.7533-.121-1.4058-.9281-1.4824-.4392-.0415-.8377.1044-1.2262.2842-1.026.4747-1.9486 1.125-2.9045 1.719-.7306.454-1.4693.8943-2.2732 1.2087-.5567.2175-1.1321.3535-1.7363.2843-1.0364-.1187-1.6846-.937-1.5719-1.9753.0886-.8158.4854-1.4814 1.0219-2.075.5934-.6566 1.2856-1.1949 2.0287-1.6697 1.141-.7293 2.299-1.428 3.5382-1.9832 1.4362-.6438 2.9097-1.1544 4.4904-1.2936 1.1439-.1006 2.2752-.0366 3.3912.2533.9863.2563 1.896.6732 2.7145 1.28.8112.6015 1.4645 1.347 1.959 2.2285.4462.7956.7005 1.6501.7756 2.5585.079.9561-.0343 1.8948-.3106 2.8077-.2695.89-.6313 1.7449-1.1264 2.5378-.6903 1.1051-1.5035 2.1103-2.4493 3.0074-.9636.9142-1.937 1.8156-3.034 2.572-1.4267.9841-2.9131 1.8594-4.5207 2.5189-.429.176-.8567.3563-1.3065.5436"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/seat.svg b/assets/lib/simple-icons/icons/seat.svg
index 4e4c01e4..174a64ff 100644
--- a/assets/lib/simple-icons/icons/seat.svg
+++ b/assets/lib/simple-icons/icons/seat.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>SEAT icon</title><path d="M0 10.325l23.98 4.46c-.021.657-.062 2.712-.103 3.903-.041 1.418-.35 2.281-.925 2.815-.801.72-1.747.884-4.007 1.007-5.219.288-10.54.247-17.219-.226-.699-.04-.966-.185-1.089-.267-.288-.205-.329-.431-.411-1.603-.062-.801-.164-3.123-.205-3.904 3.102.206 7.849.37 11.712.37.966 0 3.493.02 4.171.02.534 0 1.233-.143 1.582-.698L0 13.222zm.02-1.253c.021-.76.062-2.65.103-3.76.041-1.418.35-2.281.925-2.815.801-.72 1.747-.884 4.007-1.007 5.219-.288 10.54-.247 17.219.226.699.04.966.185 1.089.267.288.205.329.431.411 1.603.041.678.144 2.486.185 3.472-2.301-.123-6.206-.308-9.596-.35-3.39-.04-6.452.021-6.822.063-.74.102-1.089.452-1.192.595L24 10.634v2.568Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>SEAT</title><path d="M0 10.325l23.98 4.46c-.021.657-.062 2.712-.103 3.903-.041 1.418-.35 2.281-.925 2.815-.801.72-1.747.884-4.007 1.007-5.219.288-10.54.247-17.219-.226-.699-.04-.966-.185-1.089-.267-.288-.205-.329-.431-.411-1.603-.062-.801-.164-3.123-.205-3.904 3.102.206 7.849.37 11.712.37.966 0 3.493.02 4.171.02.534 0 1.233-.143 1.582-.698L0 13.222zm.02-1.253c.021-.76.062-2.65.103-3.76.041-1.418.35-2.281.925-2.815.801-.72 1.747-.884 4.007-1.007 5.219-.288 10.54-.247 17.219.226.699.04.966.185 1.089.267.288.205.329.431.411 1.603.041.678.144 2.486.185 3.472-2.301-.123-6.206-.308-9.596-.35-3.39-.04-6.452.021-6.822.063-.74.102-1.089.452-1.192.595L24 10.634v2.568Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/sefaria.svg b/assets/lib/simple-icons/icons/sefaria.svg
new file mode 100644
index 00000000..1188af67
--- /dev/null
+++ b/assets/lib/simple-icons/icons/sefaria.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Sefaria</title><path d="M19.615 15.412c-.62 2.915-2.733 4.152-7.425 4.152-11.54 0-7.45-9.28-5.84-11.186.678-.85 1.152-1.553 2.874-1.553h3.273c4.567 0 5.437.217 6.582 2.55.617 1.258.975 3.971.536 6.036m1.238-5.79c-.385-2.492-.889-5.202-3.052-6.706-1.31-.911-2.663-.981-4.177-.981-1.026 0-4.666-.041-6.257-.041C5.833 1.893 4.779.618 4.779 0 3.777 1.234 3.001 2.597 3.272 4.245c.244 1.484 1.261 2.433 2.75 2.622C4.338 9.25 2.81 11.994 2.881 14.9c.046 1.83.467 9.1 8.686 9.1h1.497c3.507 0 5.632-2.606 6.25-3.614 1.822-2.963 2.122-7.548 1.537-10.764Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/sega.svg b/assets/lib/simple-icons/icons/sega.svg
index 6b9049fe..4d01a0a5 100644
--- a/assets/lib/simple-icons/icons/sega.svg
+++ b/assets/lib/simple-icons/icons/sega.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Sega icon</title><path d="M21.229 4.14l-.006 3.33h-10.6c-.219 0-.397.181-.397.399 0 .221.18.399.397.399l2.76-.016c4.346 0 7.868 3.525 7.868 7.869 0 4.348-3.522 7.869-7.869 7.869L2.748 24l.005-3.375h10.635c2.487 0 4.504-2.016 4.504-4.504 0-2.49-2.017-4.506-4.506-4.506l-2.771-.03c-2.06 0-3.727-1.666-3.727-3.72 0-2.061 1.666-3.726 3.723-3.726h10.618zM2.763 19.843l-.004-3.331h10.609c.21 0 .383-.175.383-.387 0-.213-.173-.385-.384-.385h-2.744c-4.345 0-7.867-3.525-7.867-7.871S6.278 0 10.623 0l10.6.003.006 3.35-10.604.003c-2.49 0-4.5 2.019-4.5 4.507 0 2.489 2.024 4.504 4.515 4.504l2.775.03c2.055 0 3.72 1.668 3.72 3.724 0 2.055-1.665 3.719-3.72 3.719H2.765l-.002.003z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Sega</title><path d="M21.229 4.14l-.006 3.33h-10.6c-.219 0-.397.181-.397.399 0 .221.18.399.397.399l2.76-.016c4.346 0 7.868 3.525 7.868 7.869 0 4.348-3.522 7.869-7.869 7.869L2.748 24l.005-3.375h10.635c2.487 0 4.504-2.016 4.504-4.504 0-2.49-2.017-4.506-4.506-4.506l-2.771-.03c-2.06 0-3.727-1.666-3.727-3.72 0-2.061 1.666-3.726 3.723-3.726h10.618zM2.763 19.843l-.004-3.331h10.609c.21 0 .383-.175.383-.387 0-.213-.173-.385-.384-.385h-2.744c-4.345 0-7.867-3.525-7.867-7.871S6.278 0 10.623 0l10.6.003.006 3.35-10.604.003c-2.49 0-4.5 2.019-4.5 4.507 0 2.489 2.024 4.504 4.515 4.504l2.775.03c2.055 0 3.72 1.668 3.72 3.724 0 2.055-1.665 3.719-3.72 3.719H2.765l-.002.003z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/selenium.svg b/assets/lib/simple-icons/icons/selenium.svg
new file mode 100644
index 00000000..179c7bc2
--- /dev/null
+++ b/assets/lib/simple-icons/icons/selenium.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Selenium</title><path d="M23.174 3.468l-7.416 8.322a.228.228 0 0 1-.33 0l-3.786-3.9a.228.228 0 0 1 0-.282L12.872 6a.228.228 0 0 1 .366 0l2.106 2.346a.228.228 0 0 0 .342 0l5.94-8.094A.162.162 0 0 0 21.5 0H.716a.174.174 0 0 0-.174.174v23.652A.174.174 0 0 0 .716 24h22.566a.174.174 0 0 0 .174-.174V3.6a.162.162 0 0 0-.282-.132zM6.932 21.366a5.706 5.706 0 0 1-4.05-1.44.222.222 0 0 1 0-.288l.882-1.236a.222.222 0 0 1 .33-.036 4.338 4.338 0 0 0 2.964 1.158c1.158 0 1.722-.534 1.722-1.098 0-1.752-5.7-.552-5.7-4.278 0-1.65 1.428-3 3.756-3a5.568 5.568 0 0 1 3.708 1.242.222.222 0 0 1 0 .3l-.906 1.2a.222.222 0 0 1-.318.036 4.29 4.29 0 0 0-2.706-.936c-.906 0-1.41.402-1.41.996 0 1.572 5.688.522 5.688 4.2.006 1.812-1.284 3.18-3.96 3.18zm12.438-3.432a.192.192 0 0 1-.192.192h-5.202a.06.06 0 0 0-.06.066 1.986 1.986 0 0 0 2.106 1.638 3.264 3.264 0 0 0 1.8-.6.192.192 0 0 1 .276.042l.636.93a.198.198 0 0 1-.042.264 4.71 4.71 0 0 1-2.892.9 3.726 3.726 0 0 1-3.93-3.87 3.744 3.744 0 0 1 3.81-3.852c2.196 0 3.684 1.644 3.684 4.05zm-3.684-2.748a1.758 1.758 0 0 0-1.8 1.56.06.06 0 0 0 .06.066h3.492a.06.06 0 0 0 .06-.066 1.698 1.698 0 0 0-1.812-1.56Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/sellfy.svg b/assets/lib/simple-icons/icons/sellfy.svg
index 66f36350..bd1e98b0 100644
--- a/assets/lib/simple-icons/icons/sellfy.svg
+++ b/assets/lib/simple-icons/icons/sellfy.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Sellfy icon</title><path d="M23.179.818C15.533-.273 8.406-.273.8.818-.266 8.377-.266 15.424.8 22.946 4.511 23.491 8.22 24 12.005 24c3.748 0 7.459-.51 11.17-1.017 1.1-7.56 1.1-14.607 0-22.165h.004zm-11.54 18.314c-2.055 0-4.226-.689-5.179-1.199l.807-3.126c1.064.705 2.682 1.395 4.446 1.395 1.395 0 2.24-.436 2.24-1.305 0-.615-.435-.975-1.575-1.26l-2.279-.631c-2.416-.66-3.557-1.891-3.557-3.855 0-2.365 1.83-4.256 5.619-4.256 1.99 0 3.973.545 5.07 1.092l-.951 2.976c-1.104-.615-2.79-1.125-4.226-1.125-1.365 0-1.95.436-1.95 1.092 0 .619.404.87 1.291 1.092l2.488.734c2.566.736 3.707 1.966 3.707 3.885-.076 2.701-2.461 4.517-5.957 4.517l.006-.026z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Sellfy</title><path d="M23.179.818C15.533-.273 8.406-.273.8.818-.266 8.377-.266 15.424.8 22.946 4.511 23.491 8.22 24 12.005 24c3.748 0 7.459-.51 11.17-1.017 1.1-7.56 1.1-14.607 0-22.165h.004zm-11.54 18.314c-2.055 0-4.226-.689-5.179-1.199l.807-3.126c1.064.705 2.682 1.395 4.446 1.395 1.395 0 2.24-.436 2.24-1.305 0-.615-.435-.975-1.575-1.26l-2.279-.631c-2.416-.66-3.557-1.891-3.557-3.855 0-2.365 1.83-4.256 5.619-4.256 1.99 0 3.973.545 5.07 1.092l-.951 2.976c-1.104-.615-2.79-1.125-4.226-1.125-1.365 0-1.95.436-1.95 1.092 0 .619.404.87 1.291 1.092l2.488.734c2.566.736 3.707 1.966 3.707 3.885-.076 2.701-2.461 4.517-5.957 4.517l.006-.026z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/semanticrelease.svg b/assets/lib/simple-icons/icons/semanticrelease.svg
new file mode 100644
index 00000000..685da24c
--- /dev/null
+++ b/assets/lib/simple-icons/icons/semanticrelease.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>semantic-release</title><path d="M11.952 14.4a2.4 2.4 0 1 1 0-4.8 2.4 2.4 0 0 1 0 4.8zm0-.72a1.68 1.68 0 1 0 0-3.36 1.68 1.68 0 0 0 0 3.36zM8.304 3.12v1.728c.096.528 1.008 2.64 1.68 3.888C9.12 8.112 7.2 6.672 6.672 5.952a4.416 4.416 0 0 1-.816-1.392L2.448 6.48v4.128c.432.24 1.104.72 1.488.864.528.192 2.832.432 4.224.48-1.008.432-3.168 1.392-4.08 1.488-.768.144-1.296.048-1.632 0v4.08l3.312 1.872c.432-.192 1.152-.576 1.488-.816.432-.336 1.776-2.208 2.496-3.408-.096 1.056-.384 3.408-.72 4.272-.288.72-.624 1.104-.816 1.392L12 22.992l3.504-2.016c.048-.432.096-1.344 0-1.824-.048-.528-1.008-2.64-1.632-3.888.864.672 2.736 2.112 3.312 2.832.528.624.72 1.152.816 1.44l3.552-2.016v-4.032c-.384-.24-1.152-.72-1.632-.912-.48-.192-2.784-.432-4.176-.48 1.008-.48 3.168-1.392 4.08-1.488.864-.144 1.392-.048 1.728.048V6.48l-3.36-1.92-1.488.912c-.432.336-1.776 2.208-2.544 3.36.144-1.056.432-3.408.768-4.272.288-.72.624-1.152.864-1.392L12 1.008zM12 0l10.416 6v12L12 24 1.584 18V6z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/semanticuireact.svg b/assets/lib/simple-icons/icons/semanticuireact.svg
new file mode 100644
index 00000000..854ec27e
--- /dev/null
+++ b/assets/lib/simple-icons/icons/semanticuireact.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Semantic UI React</title><path d="M11.857 23.995C4.52 23.9-.237 17.431.012 11.775-.004 6.167 4.646.066 12.111 0c6.254.027 11.978 5.271 11.885 12.202-.072 6.813-5.84 11.973-12.14 11.793zm.175-4.92c.988.93 3.497 3.166 5.362 1.957 1.434-.93 1.157-3.975.75-5.5 1.597-.365 4.44-1.76 4.37-3.506-.078-2-2.615-3.057-4.408-3.545.347-1.495.913-4.317-.745-5.527-1.637-1.195-4.302.88-5.354 1.969-1.025-.879-3.361-3.096-5.22-2.046-1.46.824-1.513 3.087-.875 5.598-1.441.34-4.459 1.532-4.42 3.546.04 2.183 3.342 3.175 4.397 3.553-.495 1.639-.768 4.596.884 5.55 1.88 1.085 4.39-1.292 5.26-2.048zm-5.244-3.321c.126.039.216.054.362.113.035-.362.268-.685.486-.875-.221-.005-.544-.066-.615-.113.172-.562.439-1.357.657-1.782.25.375.393.674.6 1.1a3.35 3.35 0 0 1 .66-.68c-.645-1.294-1.514-2.837-1.896-4.38.227-.112.426-.116.618-.15.053-.324.162-.638.288-.95-.378-.003-.764.097-1.15.19-.525-1.693-.604-4.156.511-4.624 1.354-.48 3.525 1.331 4.052 2.013l-.337.351c.668-.123 1.305-.107 1.988.013a2.52 2.52 0 0 0-.358-.382c1.172-1.273 3.307-2.653 4.306-1.81.906.852.681 2.98.286 4.456-.466-.083-.72-.138-1.065-.194-.097.51-.163.523-.366.83.317.035.617.065 1.188.234-.19.624-.387 1.202-.662 1.776-.273-.415-.473-.829-.932-1.55l-.565.74c.725 1.284 1.45 2.526 2.143 4.79-.196.114-.309.103-.604.165a4.16 4.16 0 0 1-.333.96c.451-.087.794-.142 1.182-.233.4 1.242.676 3.872-.423 4.554-1.172.677-3.229-.943-4.141-1.918.086-.13.11-.172.26-.274-.594.062-1.29.082-1.779.044.13.108.169.163.207.245-1.43 1.496-3.372 2.559-4.275 1.822-.887-.724-.77-2.846-.293-4.481zm6.072 1.5c2.67-.512 3.576-3.241 2.114-4.976-.405-.48-1.479-1.024-2.257-1.275-1.523-.49-2.556-1.136-1.716-1.962.826-.81 2.851.083 3.182.503l1.155-1.49c-1.161-1.105-2.702-1.52-4.337-1.222C9.54 7.1 8.488 8.336 8.418 9.308c-.155 2.168.875 2.764 2.821 3.598 1.592.682 2.139.913 2.051 1.487-.246 1.618-2.867.959-3.977-.09l-1.361 1.58c1.696 1.405 3.33 1.653 4.908 1.371zM2.404 12.055c-.097-1.216 2.43-2.463 3.731-2.682.318.892.625 1.788 1.031 2.608-.412.86-.737 1.764-1.042 2.679-1.08-.236-3.616-1.31-3.72-2.605zm14.455-.082c.452-1.08.812-2.016 1.013-2.64 1.2.252 3.78 1.37 3.724 2.668-.061 1.442-2.362 2.165-3.703 2.669a29.043 29.043 0 0 0-1.034-2.697z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/semanticweb.svg b/assets/lib/simple-icons/icons/semanticweb.svg
index 827995d5..faa50cac 100644
--- a/assets/lib/simple-icons/icons/semanticweb.svg
+++ b/assets/lib/simple-icons/icons/semanticweb.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Semantic Web icon</title><path d="M21.602 0s-1.524 5.809-8.516 2.658c-.776-.35-.954-.444-.982-.469L2.074 6.301l10.043 4.896s.776-.326 2.026-.933C20.273 7.287 21.602 0 21.602 0zM1.59 8.486v10.448L10.947 24V13.242L1.59 8.486zm20.82 0l-9.357 4.756V24l9.357-5.066V8.486Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Semantic Web</title><path d="M21.602 0s-1.524 5.809-8.516 2.658c-.776-.35-.954-.444-.982-.469L2.074 6.301l10.043 4.896s.776-.326 2.026-.933C20.273 7.287 21.602 0 21.602 0zM1.59 8.486v10.448L10.947 24V13.242L1.59 8.486zm20.82 0l-9.357 4.756V24l9.357-5.066V8.486Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/semaphoreci.svg b/assets/lib/simple-icons/icons/semaphoreci.svg
index 1bd2f267..a5daf1cb 100644
--- a/assets/lib/simple-icons/icons/semaphoreci.svg
+++ b/assets/lib/simple-icons/icons/semaphoreci.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Semaphore CI icon</title><path d="M21.864 5.266a.595.595 0 01.61.257s.467.76.744 1.365c.275.604.542 1.453.542 1.453a.592.592 0 01-.208.628l-1.505 1.073a.757.757 0 00-.284.646s.084.573.096 1.066c.01.485-.04 1.045-.04 1.045a.752.752 0 00.316.628l1.561.993c.192.122.3.398.24.618 0 0-.222.862-.467 1.48-.242.62-.668 1.4-.668 1.4a.592.592 0 01-.595.287l-1.819-.337a.76.76 0 00-.66.245s-.381.489-.754.861c-.414.415-.997.857-.997.857a.76.76 0 00-.254.658l.306 1.824a.592.592 0 01-.298.59s-.79.412-1.414.645c-.623.233-1.488.44-1.488.44a.592.592 0 01-.61-.251l-.967-1.576a.756.756 0 00-.624-.328s-.496.04-.949.025c-.466-.015-.986-.09-.986-.09a.754.754 0 00-.646.281L8.97 23.555a.593.593 0 01-.628.207s-.85-.267-1.456-.543c-.605-.276-1.362-.74-1.362-.74a.592.592 0 01-.256-.61l.385-1.599c.08-.331.338-.796.579-1.037l3.98-3.993a3.7 3.7 0 005.026-5.025l3.988-3.989c.241-.24.705-.5 1.036-.579zM2.134 18.733a.595.595 0 01-.61-.257s-.467-.758-.743-1.364c-.276-.605-.543-1.453-.543-1.453a.592.592 0 01.207-.628l1.506-1.073a.757.757 0 00.283-.646s-.082-.573-.095-1.066c-.01-.485.04-1.046.04-1.046a.752.752 0 00-.316-.628L.303 9.58a.592.592 0 01-.241-.617S.285 8.1.528 7.48c.244-.617.67-1.4.67-1.4a.592.592 0 01.594-.286l1.819.337a.76.76 0 00.661-.244s.38-.489.753-.862c.414-.414.997-.855.997-.855a.76.76 0 00.254-.66L5.97 1.688a.592.592 0 01.298-.591S7.058.685 7.682.45C8.305.219 9.17.012 9.17.012a.592.592 0 01.612.25l.966 1.578a.756.756 0 00.624.326s.496-.039.949-.024c.466.015.986.091.986.091a.754.754 0 00.646-.283L15.028.445a.593.593 0 01.628-.208s.85.268 1.456.544c.605.275 1.362.74 1.362.74a.593.593 0 01.256.61l-.385 1.599a2.59 2.59 0 01-.578 1.036L13.786 8.76a3.7 3.7 0 00-5.026 5.026l-3.988 3.987c-.24.242-.705.5-1.036.58z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Semaphore CI</title><path d="m21.50314 13.2549-4.15781-4.22828a3.03814 3.03814 0 0 0-4.3591 0L9.6943 12.374a1.20701 1.20701 0 0 1-1.7213 0l-1.63096-1.6587 4.1578-4.22866a6.53247 6.53247 0 0 1 9.34234 0L24 10.71531zM8.82879 19.47925a6.52947 6.52947 0 0 1-4.67098-1.9657L0 13.295l2.48674-2.52872 4.15744 4.21816a3.05613 3.05613 0 0 0 4.3591 0l3.29191-3.34814a1.20701 1.20701 0 0 1 1.7213 0l1.63097 1.6587-4.14732 4.22866a6.5186 6.5186 0 0 1-4.67135 1.95558z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/semver.svg b/assets/lib/simple-icons/icons/semver.svg
new file mode 100644
index 00000000..288e2ed5
--- /dev/null
+++ b/assets/lib/simple-icons/icons/semver.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>SemVer</title><path d="M.357 9.024A12.07 12.07 0 002.97 19.867a12.051 12.051 0 0010.38 4.063c7.768-.703 13.086-9.799 9.517-16.8-.416-1.19-2.07-.368-1.903.596.287.7.526 1.421.713 2.155a9.983 9.983 0 01-3.926 10.25 9.965 9.965 0 01-14.807-3.809A9.984 9.984 0 014.44 5.448a9.968 9.968 0 014.85-3.044 9.868 9.868 0 017.02.631.333.333 0 01.155.429l-3.962 10.62c-.107.81-.69.786-.797 0l-2.38-7.37a1.572 1.572 0 00-.773-.988c-1.19-.56-3.093.667-2.379 2.155l3.914 10.441c.524 1.393 1.023 1.834 2.058 1.834s1.535-.44 2.058-1.834L20 3.94a1.036 1.036 0 00-.369-1.19C13.1-2.907 2.32.641.357 9.023z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/sencha.svg b/assets/lib/simple-icons/icons/sencha.svg
index 3331f5b3..acbe8675 100644
--- a/assets/lib/simple-icons/icons/sencha.svg
+++ b/assets/lib/simple-icons/icons/sencha.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Sencha icon</title><path d="M15.287,24c0.458-1.221,0.917-1.532,0.917-2.442c0-1.452-0.878-2.8-2.237-3.434 l-5.831-2.813C5.211,13.85,3.392,10.97,3.392,7.797c0-3.23,1.867-6.133,4.871-7.576L8.712,0C8.129,0.674,7.796,1.532,7.796,2.44 c0,1.453,0.878,2.801,2.237,3.435l5.831,2.813c2.926,1.462,4.744,4.342,4.744,7.514c0,3.23-1.867,6.133-4.871,7.577L15.287,24"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Sencha</title><path d="M15.287,24c0.458-1.221,0.917-1.532,0.917-2.442c0-1.452-0.878-2.8-2.237-3.434 l-5.831-2.813C5.211,13.85,3.392,10.97,3.392,7.797c0-3.23,1.867-6.133,4.871-7.576L8.712,0C8.129,0.674,7.796,1.532,7.796,2.44 c0,1.453,0.878,2.801,2.237,3.435l5.831,2.813c2.926,1.462,4.744,4.342,4.744,7.514c0,3.23-1.867,6.133-4.871,7.577L15.287,24"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/sennheiser.svg b/assets/lib/simple-icons/icons/sennheiser.svg
new file mode 100644
index 00000000..c0358e8e
--- /dev/null
+++ b/assets/lib/simple-icons/icons/sennheiser.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Sennheiser</title><path d="M0 3v18h24V3zm13.209 1.659c-1.428.548-2.799 1.757-3.905 4.182-.321.703-.925 2.062-1.2 2.67-2.224 4.882-3.364 5.932-6.72 5.932V4.35H13.15c.184-.011.235.25.06.309zm9.428 1.894V19.65H10.851c-.181.005-.227-.25-.055-.309 1.427-.548 2.798-1.757 3.904-4.182.321-.703.926-2.062 1.2-2.67 2.22-4.882 3.36-5.932 6.716-5.932z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/sensu.svg b/assets/lib/simple-icons/icons/sensu.svg
index 360a683c..a06c7da5 100644
--- a/assets/lib/simple-icons/icons/sensu.svg
+++ b/assets/lib/simple-icons/icons/sensu.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 24 24"><title>Sensu icon</title><path d="M24 12L12 0 0 12l12 12 12-12zM12 3.197l4.418 4.418c-1.445-.386-2.93-.586-4.418-.586s-2.974.199-4.418.588L12 3.196zM8.069 16.87c1.19-.658 2.534-1.008 3.931-1.008s2.741.35 3.931 1.008L12 20.804 8.069 16.87zm9.509-1.647c-1.697-1.08-3.636-1.622-5.578-1.622s-3.881.542-5.578 1.622l-3.103-3.101C5.822 10.284 8.834 9.29 12 9.29s6.178.994 8.681 2.832l-3.103 3.101z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Sensu</title><path d="M24 12L12 0 0 12l12 12 12-12zM12 3.197l4.418 4.418c-1.445-.386-2.93-.586-4.418-.586s-2.974.199-4.418.588L12 3.196zM8.069 16.87c1.19-.658 2.534-1.008 3.931-1.008s2.741.35 3.931 1.008L12 20.804 8.069 16.87zm9.509-1.647c-1.697-1.08-3.636-1.622-5.578-1.622s-3.881.542-5.578 1.622l-3.103-3.101C5.822 10.284 8.834 9.29 12 9.29s6.178.994 8.681 2.832l-3.103 3.101z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/sentry.svg b/assets/lib/simple-icons/icons/sentry.svg
index f64db6c7..11bb3c8a 100644
--- a/assets/lib/simple-icons/icons/sentry.svg
+++ b/assets/lib/simple-icons/icons/sentry.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Sentry icon</title><path d="M23.663 21.572c.449-.748.449-1.496 0-2.244l-9.72-16.897c-.447-.747-1.195-1.048-1.943-1.048s-1.495.449-1.943 1.048L6.916 7.963l.748.449c2.393 1.346 4.336 3.289 5.682 5.682 1.197 2.094 1.944 4.336 2.094 6.73h-2.243c-.149-1.945-.748-3.889-1.794-5.684-1.047-2.093-2.692-3.738-4.785-4.935l-.749-.447-2.99 5.084.747.449c1.944 1.195 3.29 3.139 3.589 5.383H2.28c-.149 0-.3-.15-.3-.15s-.148-.15 0-.299l1.348-2.393c-.449-.447-1.048-.748-1.646-.896L.336 19.329c-.449.748-.449 1.496 0 2.244.448.746 1.046 1.045 1.943 1.045h6.879v-.896c0-1.645-.449-3.141-1.196-4.637-.599-1.195-1.496-2.093-2.542-2.84L6.467 12.3c1.347 1.046 2.543 2.243 3.439 3.739 1.047 1.793 1.496 3.738 1.496 5.682v.896h5.831v-.896c0-2.99-.747-5.982-2.392-8.673-1.197-2.394-3.141-4.337-5.385-5.833L11.7 3.328c.151-.15.3-.15.3-.15.15 0 .15 0 .299.15l9.721 16.896c.148.148 0 .299 0 .299s-.15.15-.3.15h-2.243v1.795h2.243c.896.149 1.495-.15 1.943-.896z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Sentry</title><path d="M13.91 2.505c-.873-1.448-2.972-1.448-3.844 0L6.904 7.92a15.478 15.478 0 0 1 8.53 12.811h-2.221A13.301 13.301 0 0 0 5.784 9.814l-2.926 5.06a7.65 7.65 0 0 1 4.435 5.848H2.194a.365.365 0 0 1-.298-.534l1.413-2.402a5.16 5.16 0 0 0-1.614-.913L.296 19.275a2.182 2.182 0 0 0 .812 2.999 2.24 2.24 0 0 0 1.086.288h6.983a9.322 9.322 0 0 0-3.845-8.318l1.11-1.922a11.47 11.47 0 0 1 4.95 10.24h5.915a17.242 17.242 0 0 0-7.885-15.28l2.244-3.845a.37.37 0 0 1 .504-.13c.255.14 9.75 16.708 9.928 16.9a.365.365 0 0 1-.327.543h-2.287c.029.612.029 1.223 0 1.831h2.297a2.206 2.206 0 0 0 1.922-3.31z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/sepa.svg b/assets/lib/simple-icons/icons/sepa.svg
new file mode 100644
index 00000000..2f53cb44
--- /dev/null
+++ b/assets/lib/simple-icons/icons/sepa.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>SEPA</title><path d="M12.553 8.72v6.56h1.766v-1.694h1.052l.293-.01c.579-.009.907-.02.984-.033.656-.086 1.09-.418 1.3-.994.106-.29.16-.769.16-1.434 0-.553-.049-.968-.145-1.243-.185-.524-.548-.871-1.09-1.04-.236-.074-.58-.111-1.031-.111zm6.79 0l-1.971 6.56h1.826l.317-1.134h2.36l.337 1.133H24l-1.995-6.558zm-9.339.031a3.36 3.36 0 0 0-1.888.574 3.272 3.272 0 0 0-1.199 1.455h-.742l-.464.996h.969a3.17 3.17 0 0 0 .004.526h-.467l-.465.995H6.94a3.333 3.333 0 0 0 3.064 1.973 3.37 3.37 0 0 0 1.876-.564l.013-.009v-1.241l-.05.056a2.293 2.293 0 0 1-3.618-.215h2.396l.465-.995H7.838a2.356 2.356 0 0 1-.012-.526h3.505l.008-.017.438-.939.019-.04H8.154a2.308 2.308 0 0 1 1.963-1.108c.694 0 1.344.31 1.783.85l.028.035.409-.875-.015-.014a3.359 3.359 0 0 0-2.318-.917zm-7.2.004c-.439 0-.837.016-1.196.048-.43.034-.785.15-1.062.348a1.082 1.082 0 0 0-.41.565c-.086.248-.128.578-.128.99 0 .54.079.943.236 1.21.179.314.537.52 1.074.621.205.035.57.071 1.094.109.654.044 1.02.078 1.098.103.211.063.316.239.316.528a1.1 1.1 0 0 1-.037.315.48.48 0 0 1-.298.287c-.084.032-.281.048-.589.048h-.604a.963.963 0 0 1-.41-.09c-.164-.081-.246-.264-.246-.549v-.136H0c0 .533.04.915.118 1.143.142.412.435.685.879.82.362.11 1.003.164 1.922.164.551 0 .96-.025 1.228-.075.64-.12 1.05-.404 1.233-.853.101-.245.151-.632.151-1.16 0-.23-.01-.435-.033-.617a1.186 1.186 0 0 0-.355-.74c-.252-.242-.66-.392-1.22-.448-.177-.019-.62-.052-1.33-.1l-.331-.023a.768.768 0 0 1-.35-.094c-.124-.075-.185-.233-.185-.471 0-.264.07-.435.208-.514.139-.079.423-.118.852-.118.441 0 .71.068.808.205.063.092.095.272.095.542h1.642c.01-.145.016-.253.016-.326 0-.884-.357-1.421-1.072-1.613-.293-.079-.784-.119-1.473-.119zm17.894 1.27l.827 2.843h-1.63zm-6.38.13h1.116c.18 0 .294.004.342.01.24.042.393.157.456.345.045.134.067.34.067.617a2.9 2.9 0 0 1-.033.512c-.035.172-.105.287-.21.344-.076.042-.288.069-.637.082h-1.1Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/sequelize.svg b/assets/lib/simple-icons/icons/sequelize.svg
new file mode 100644
index 00000000..f8599b6c
--- /dev/null
+++ b/assets/lib/simple-icons/icons/sequelize.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Sequelize</title><path d="M12.0264 0 1.5947 5.9922v12.0156L12.0264 24l10.3789-5.9922V5.9922L12.0264 0zm-.0274 3.4844 7.4297 4.2266v8.5781l-7.4297 4.2266-7.3476-4.1817-.0801-8.623 7.4277-4.2266zm.0489.5898c-.9765.5627-1.9519 1.1274-2.9277 1.6914v.2539l2.6074 1.5234v.4824c.1355-.0781.2616-.1511.4023-.2324l.2559.1504v-.3359c.8844-.5068 1.8073-1.0412 2.5684-1.4805.0035-.1232.0027-.2534.0039-.373-.9703-.5596-1.9403-1.1197-2.9102-1.6797zM8.335 6.1387c-.9705.553-1.9312 1.1228-2.8926 1.6914v3.4023c.965.5553 1.9287 1.1127 2.8926 1.6699l.4023-.2324v-2.916c.8561-.4945 1.7522-1.0126 2.4902-1.4395v-.4843L8.335 6.1387zm7.4433.0879-2.8926 1.6699v.3379l2.6367 1.541v3.0664c.0854.0494.1705.0991.2559.1484l2.8926-1.6699V7.918l-2.8926-1.6914zm-3.6484 2.1445c-.9636.5584-1.9281 1.1151-2.8926 1.6719v3.4238c.965.5553 1.9287 1.1127 2.8926 1.6699l2.8926-1.6719v-3.4023l-2.8926-1.6914zm-6.1973 3.7227c-.1627.0962-.3275.1889-.4902.2852v3.4023c.9643.5571 1.9284 1.1145 2.8926 1.6719l.4023-.2324v-2.918c.1625-.0939.3086-.1787.4727-.2734-.1629-.0945-.3047-.1763-.4727-.2734v-.508l-.4023.2325c-.8251-.4771-1.6902-.976-2.4024-1.3867zm12.2481.0859-2.4023 1.3887c-.088-.0509-.1672-.0972-.2559-.1484v.334l-.4922.2852.4922.2871v3.0664c.0854.0494.1705.0991.2559.1484l2.8926-1.6719v-3.4023l-.4903-.2872zm-8.4688 2.1387c-.1581.0913-.3165.1821-.4746.2734v3.4238c.9637.5575 1.9282 1.1136 2.8926 1.6699l2.8926-1.6699v-3.4023l-.4902-.2871-2.4023 1.3887c-.8307-.4804-1.7013-.9829-2.4181-1.3965z"/></svg>
diff --git a/assets/lib/simple-icons/icons/serverfault.svg b/assets/lib/simple-icons/icons/serverfault.svg
index 81a0bbd6..573e7b96 100644
--- a/assets/lib/simple-icons/icons/serverfault.svg
+++ b/assets/lib/simple-icons/icons/serverfault.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Server Fault icon</title><path d="M24 18.185v2.274h-4.89v-2.274H24zm-24-.106h11.505v2.274H0v-2.279.005zm12.89 0h4.89v2.274h-4.89v-2.279.005zm6.221-3.607H24v2.274h-4.89l.001-2.274zM0 14.367h11.505v2.274H0v-2.274zm12.89 0h4.89v2.274h-4.89v-2.274zm6.221-3.346H24v2.273h-4.89l.001-2.273zM0 10.916h11.505v2.271H0v-2.271zm12.89 0h4.89v2.271h-4.89v-2.271zm6.22-3.609H24v2.279h-4.89V7.307zM0 7.206h11.505V9.48H0V7.201v.005zm12.89 0h4.89V9.48h-4.89V7.201v.005zm6.221-3.556H24v2.276h-4.89v-2.28l.001.004zM0 3.541h11.505v2.274H0V3.541zm12.89 0h4.89v2.274h-4.89V3.541z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Server Fault</title><path d="M24 18.185v2.274h-4.89v-2.274H24zm-24-.106h11.505v2.274H0zm12.89 0h4.89v2.274h-4.89zm6.221-3.607H24v2.274h-4.89l.001-2.274zM0 14.367h11.505v2.274H0v-2.274zm12.89 0h4.89v2.274h-4.89v-2.274zm6.221-3.346H24v2.273h-4.89l.001-2.273zM0 10.916h11.505v2.271H0v-2.271zm12.89 0h4.89v2.271h-4.89v-2.271zm6.22-3.609H24v2.279h-4.89V7.307zM0 7.206h11.505V9.48H0V7.201zm12.89 0h4.89V9.48h-4.89V7.201zm6.221-3.556H24v2.276h-4.89v-2.28l.001.004zM0 3.541h11.505v2.274H0V3.541zm12.89 0h4.89v2.274h-4.89V3.541z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/serverless.svg b/assets/lib/simple-icons/icons/serverless.svg
index bddce962..da488f20 100644
--- a/assets/lib/simple-icons/icons/serverless.svg
+++ b/assets/lib/simple-icons/icons/serverless.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Serverless icon</title><path d="M0 17.57h4.248l-1.316 3.974H0zm0-7.557h6.75l-1.316 3.974H0zm0-7.557h9.252L7.936 6.431H0zm13.44 0H24v3.975H12.123zM9.62 13.987l1.317-3.974H24v3.974zM8.436 17.57H24v3.975H7.119Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Serverless</title><path d="M0 17.57h4.248l-1.316 3.974H0zm0-7.557h6.75l-1.316 3.974H0zm0-7.557h9.252L7.936 6.431H0zm13.44 0H24v3.975H12.123zM9.62 13.987l1.317-3.974H24v3.974zM8.436 17.57H24v3.975H7.119Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/sfml.svg b/assets/lib/simple-icons/icons/sfml.svg
new file mode 100644
index 00000000..17f2b1dd
--- /dev/null
+++ b/assets/lib/simple-icons/icons/sfml.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>SFML</title><path d="M12.187.3336C11.1144.312 9.8776.863 7.9587 2.241L3.162 5.7258C.252 7.8401-.839 8.5272.6917 13.3288l1.8322 5.639c1.1115 3.4208 1.4278 4.6711 6.4675 4.6991H14.92c3.5969 0 4.884.085 6.4678-4.6991l1.8319-5.639c1.1115-3.421 1.5903-4.618-2.4703-7.603L15.953 2.241h-.0004C14.4069 1.1178 13.4026.358 12.187.3336zm-.1624 1.8837c.0652.0015.1303.0048.1953.01 1.0784.0831 1.6791.6384 2.3401 1.1186l.0193.0193-2.128 8.1684h-.9257L9.404 3.3652c.0067-.006.0118-.0137.0192-.0193.7741-.5944 1.5245-1.0708 2.4109-1.125l.1905-.0036zM16.128 4.489h.0008l.0896.0643 3.8771 2.8158c.9207.632 1.6776 1.2778 1.9282 2.3144.2542 1.0514-.0947 1.7946-.3472 2.5716l-2.1082 6.506c-.3166 1.0708-.699 1.9873-1.6073 2.5459-.9213.5666-1.7352.4693-2.5523.4693H8.568c-1.117.03-2.1064-.0413-2.9187-.7329-.8236-.7012-.982-1.5052-1.2344-2.2823l-2.1151-6.506c-.3745-1.0545-.6065-2.021-.1993-3.0087.4123-1 1.1262-1.397 1.7872-1.8773l3.8767-2.8158.0835-.0579.8358 3.208-.2121.1543-2.771 2.0058c-.5628.409-.667.5092-.7135.5465.012.0598.0363.2851.2379.8486l2.1279 6.5446c.1988.6723.2754.8034.2958.855.0652.0084.2856.0495.8743.0322h6.8853c.6295 0 .8264-.0174.8997-.0193.0264-.0569.1413-.252.3086-.8229l2.1281-6.551c.194-.5974.2404-.804.2571-.8615-.048-.0451-.2023-.2149-.6879-.5464l-2.803-2.0316-.2186-.1607.8358-3.208h-.0001z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/shadow.svg b/assets/lib/simple-icons/icons/shadow.svg
new file mode 100644
index 00000000..d5be1b3a
--- /dev/null
+++ b/assets/lib/simple-icons/icons/shadow.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Shadow</title><path d="M12 0C5.3727 0 0 5.3727 0 12c0 3.5145 1.511 6.6754 3.9181 8.8702a4.457 4.457 0 01-.1998-1.3238c0-2.4597 1.9938-4.4535 4.4536-4.4535 2.4596 0 4.4535 1.9938 4.4535 4.4535 0 1.9565-1.262 3.6171-3.016 4.2153C10.382 23.9178 11.1815 24 12 24c6.6273 0 12-5.3727 12-12S18.6273 0 12 0Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/shanghaimetro.svg b/assets/lib/simple-icons/icons/shanghaimetro.svg
index bda77cfd..f35e375b 100644
--- a/assets/lib/simple-icons/icons/shanghaimetro.svg
+++ b/assets/lib/simple-icons/icons/shanghaimetro.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Shanghai Metro icon</title><path d="M20.383 11.664h-1.716l-3.432-4.487-3.073 3.606L9.31 7.177l-3.513 4.487H3.63c.185-4.464 3.872-8.047 8.383-8.047 3.953 0 7.27 2.748 8.15 6.424h3.687C22.91 4.359 17.96.01 12 .01c-6.632 0-12 5.369-12 12 0 1.102.15 2.169.429 3.177h6.516l2.412-2.55 2.805 3.478 2.945-3.502 1.902 2.61h2.69c-1.287 2.967-4.256 5.495-7.699 5.495-2.84 0-5.357-1.681-6.875-3.942H.997C2.852 21.02 7.072 23.988 12 23.988c6.632 0 12-5.368 12-12 0-.116 0-.231-.012-.347l-3.605.023Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Shanghai Metro</title><path d="M20.383 11.664h-1.716l-3.432-4.487-3.073 3.606L9.31 7.177l-3.513 4.487H3.63c.185-4.464 3.872-8.047 8.383-8.047 3.953 0 7.27 2.748 8.15 6.424h3.687C22.91 4.359 17.96.01 12 .01c-6.632 0-12 5.369-12 12 0 1.102.15 2.169.429 3.177h6.516l2.412-2.55 2.805 3.478 2.945-3.502 1.902 2.61h2.69c-1.287 2.967-4.256 5.495-7.699 5.495-2.84 0-5.357-1.681-6.875-3.942H.997C2.852 21.02 7.072 23.988 12 23.988c6.632 0 12-5.368 12-12 0-.116 0-.231-.012-.347l-3.605.023Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/sharp.svg b/assets/lib/simple-icons/icons/sharp.svg
new file mode 100644
index 00000000..22ff3cc6
--- /dev/null
+++ b/assets/lib/simple-icons/icons/sharp.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>sharp</title><path d="M14.2209.0875v5.9613l-3.7433.5012v3.5233l3.7433-.5012v3.5735l3.492-.4672V9.1047L24 8.2634l-.4631-3.4613-5.824.7794V.0875zM6.287 1.145v5.9618L0 7.9483l.4634 3.4613 5.8514-.7834 3.4644-.4637V1.145zm3.5198 9.7185l-3.492.4675v3.578l-6.183.8276.4633 3.4613 5.8239-.7796v5.4942h3.492v-5.962l3.6114-.4834V13.944l-3.7156.4973zm13.73 1.7405l-5.824.779-3.492.4673v9.0179h3.492v-5.9618L24 16.0652Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/shazam.svg b/assets/lib/simple-icons/icons/shazam.svg
index 6db55c20..932c07a0 100644
--- a/assets/lib/simple-icons/icons/shazam.svg
+++ b/assets/lib/simple-icons/icons/shazam.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Shazam icon</title><path d="M12 0C5.373 0-.001 5.371-.001 12c0 6.625 5.374 12 12.001 12s12-5.375 12-12c0-6.629-5.373-12-12-12M9.872 16.736c-1.287 0-2.573-.426-3.561-1.281-1.214-1.049-1.934-2.479-2.029-4.024-.09-1.499.42-2.944 1.436-4.067C6.86 6.101 8.907 4.139 8.993 4.055c.555-.532 1.435-.511 1.966.045.53.557.512 1.439-.044 1.971-.021.02-2.061 1.976-3.137 3.164-.508.564-.764 1.283-.719 2.027.049.789.428 1.529 1.07 2.086.844.73 2.51.891 3.553-.043.619-.559 1.372-1.377 1.38-1.386.52-.567 1.4-.603 1.965-.081.565.52.603 1.402.083 1.969-.035.035-.852.924-1.572 1.572-1.005.902-2.336 1.357-3.666 1.357m8.41-.099c-1.143 1.262-3.189 3.225-3.276 3.309-.27.256-.615.385-.96.385-.368 0-.732-.145-1.006-.43-.531-.559-.512-1.439.044-1.971.021-.02 2.063-1.977 3.137-3.166.508-.563.764-1.283.719-2.027-.048-.789-.428-1.529-1.07-2.084-.844-.73-2.51-.893-3.552.044-.621.556-1.373 1.376-1.38 1.384-.521.566-1.399.604-1.966.084-.564-.521-.604-1.404-.082-1.971.034-.037.85-.926 1.571-1.573 1.979-1.778 5.221-1.813 7.227-.077 1.214 1.051 1.935 2.48 2.028 4.025.092 1.497-.419 2.945-1.434 4.068"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Shazam</title><path d="M12 0C5.373 0-.001 5.371-.001 12c0 6.625 5.374 12 12.001 12s12-5.375 12-12c0-6.629-5.373-12-12-12M9.872 16.736c-1.287 0-2.573-.426-3.561-1.281-1.214-1.049-1.934-2.479-2.029-4.024-.09-1.499.42-2.944 1.436-4.067C6.86 6.101 8.907 4.139 8.993 4.055c.555-.532 1.435-.511 1.966.045.53.557.512 1.439-.044 1.971-.021.02-2.061 1.976-3.137 3.164-.508.564-.764 1.283-.719 2.027.049.789.428 1.529 1.07 2.086.844.73 2.51.891 3.553-.043.619-.559 1.372-1.377 1.38-1.386.52-.567 1.4-.603 1.965-.081.565.52.603 1.402.083 1.969-.035.035-.852.924-1.572 1.572-1.005.902-2.336 1.357-3.666 1.357m8.41-.099c-1.143 1.262-3.189 3.225-3.276 3.309-.27.256-.615.385-.96.385-.368 0-.732-.145-1.006-.43-.531-.559-.512-1.439.044-1.971.021-.02 2.063-1.977 3.137-3.166.508-.563.764-1.283.719-2.027-.048-.789-.428-1.529-1.07-2.084-.844-.73-2.51-.893-3.552.044-.621.556-1.373 1.376-1.38 1.384-.521.566-1.399.604-1.966.084-.564-.521-.604-1.404-.082-1.971.034-.037.85-.926 1.571-1.573 1.979-1.778 5.221-1.813 7.227-.077 1.214 1.051 1.935 2.48 2.028 4.025.092 1.497-.419 2.945-1.434 4.068"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/shell.svg b/assets/lib/simple-icons/icons/shell.svg
index bbfe9dbe..d4aa2590 100644
--- a/assets/lib/simple-icons/icons/shell.svg
+++ b/assets/lib/simple-icons/icons/shell.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Shell icon</title><path d="M12 .863C5.34.863 0 6.251 0 12.98c0 .996.038 1.374.246 2.33l3.662 2.71.57 4.515h6.102l.326.227c.377.262.705.375 1.082.375.352 0 .732-.101 1.024-.313l.39-.289h6.094l.563-4.515 3.695-2.71c.208-.956.246-1.334.246-2.33C24 6.252 18.661.863 12 .863zm.996 2.258c.9 0 1.778.224 2.512.649l-2.465 12.548 3.42-12.062c1.059.36 1.863.941 2.508 1.814l.025.034-4.902 10.615 5.572-9.713.033.03c.758.708 1.247 1.567 1.492 2.648l-6.195 7.666 6.436-6.5.01.021c.253.563.417 1.36.417 1.996 0 .509-.024.712-.164 1.25l-3.554 2.602-.467 3.71h-4.475l-.517.395c-.199.158-.482.266-.682.266-.199 0-.483-.108-.682-.266l-.517-.394H6.322l-.445-3.61-3.627-2.666c-.11-.436-.16-.83-.16-1.261 0-.72.159-1.49.426-2.053l.013-.024 6.45 6.551L2.75 9.621c.25-1.063.874-2.09 1.64-2.713l5.542 9.776L4.979 6.1c.555-.814 1.45-1.455 2.546-1.827l3.424 12.069L8.355 3.816l.055-.03c.814-.45 1.598-.657 2.457-.657.195 0 .286.004.528.03l.587 13.05.46-13.059c.224-.025.309-.029.554-.029z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Shell</title><path d="M12 .863C5.34.863 0 6.251 0 12.98c0 .996.038 1.374.246 2.33l3.662 2.71.57 4.515h6.102l.326.227c.377.262.705.375 1.082.375.352 0 .732-.101 1.024-.313l.39-.289h6.094l.563-4.515 3.695-2.71c.208-.956.246-1.334.246-2.33C24 6.252 18.661.863 12 .863zm.996 2.258c.9 0 1.778.224 2.512.649l-2.465 12.548 3.42-12.062c1.059.36 1.863.941 2.508 1.814l.025.034-4.902 10.615 5.572-9.713.033.03c.758.708 1.247 1.567 1.492 2.648l-6.195 7.666 6.436-6.5.01.021c.253.563.417 1.36.417 1.996 0 .509-.024.712-.164 1.25l-3.554 2.602-.467 3.71h-4.475l-.517.395c-.199.158-.482.266-.682.266-.199 0-.483-.108-.682-.266l-.517-.394H6.322l-.445-3.61-3.627-2.666c-.11-.436-.16-.83-.16-1.261 0-.72.159-1.49.426-2.053l.013-.024 6.45 6.551L2.75 9.621c.25-1.063.874-2.09 1.64-2.713l5.542 9.776L4.979 6.1c.555-.814 1.45-1.455 2.546-1.827l3.424 12.069L8.355 3.816l.055-.03c.814-.45 1.598-.657 2.457-.657.195 0 .286.004.528.03l.587 13.05.46-13.059c.224-.025.309-.029.554-.029z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/shelly.svg b/assets/lib/simple-icons/icons/shelly.svg
new file mode 100644
index 00000000..0b094543
--- /dev/null
+++ b/assets/lib/simple-icons/icons/shelly.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Shelly</title><path d="M12 0C5.373 0 0 5.373 0 12a12 12 0 0 0 .033.88c1.07-.443 2.495-.679 4.322-.679h5.762c-.167.61-.548 1.087-1.142 1.436-.532.308-1.14.463-1.823.463h-.927c-.89 0-1.663.154-2.32.463-.859.403-1.286 1-1.286 1.789 0 .893.59 1.594 1.774 2.1a7.423 7.423 0 0 0 2.927.581c1.318 0 2.416-.29 3.297-.867 1.024-.664 1.535-1.616 1.535-2.857 0-.854-.325-2.08-.976-3.676-.65-1.597-.975-2.837-.975-3.723 0-2.79 2.305-4.233 6.916-4.324.641-.01 1.337-.005 1.916-.004.593 0 1.144.05 1.66.147A12 12 0 0 0 12 0zm4.758 5.691c-1.206 0-1.809.502-1.809 1.506 0 .514.356 1.665 1.067 3.451.71 1.787 1.064 3.186 1.064 4.198 0 2.166-1.202 3.791-3.607 4.875-1.794.797-3.892 1.197-6.297 1.197-1.268 0-2.442-.114-3.543-.316A12 12 0 0 0 12 24c6.627 0 12-5.373 12-12a12 12 0 0 0-.781-4.256 3.404 3.404 0 0 1-.832.77h-4.371l1.425-2.828a299.94 299.94 0 0 0-2.683.005Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/shenzhenmetro.svg b/assets/lib/simple-icons/icons/shenzhenmetro.svg
new file mode 100644
index 00000000..6a60c24a
--- /dev/null
+++ b/assets/lib/simple-icons/icons/shenzhenmetro.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Shenzhen Metro</title><path d="M.27 0v.155c0 4.69 3.033 8.751 7.331 10.434v2.736C3.303 14.99.271 19.019.271 23.768V24H4.36v-.232c0-2.459 1.278-4.623 3.24-5.934V24h3.165v-7.384c.408-.065.82-.098 1.234-.1.423 0 .834.038 1.235.1V24h3.165v-6.148c1.925 1.313 3.163 3.469 3.163 5.916V24h4.168v-.232c0-4.691-3.033-8.751-7.331-10.434V10.6c4.298-1.665 7.33-5.696 7.33-10.446V.001h-4.09v.154c0 2.458-1.277 4.622-3.24 5.934V0h-3.165v7.305c-.408.066-.821.1-1.235.103a8.11 8.11 0 0 1-1.234-.103V.001H7.6V6.07C5.675 4.757 4.438 2.602 4.438.154V.001zm10.495 11.358c.82.084 1.648.084 2.469.001v1.205a12.236 12.236 0 0 0-2.47 0z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/shieldsdotio.svg b/assets/lib/simple-icons/icons/shieldsdotio.svg
new file mode 100644
index 00000000..31dbdf14
--- /dev/null
+++ b/assets/lib/simple-icons/icons/shieldsdotio.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Shields.io</title><path d="M3.084 13.11a.93.93 0 01-.187-.548l.347-.03c.013.254.183.5.434.572.295.108.65.096.916-.08.18-.137.226-.446.04-.597-.19-.16-.447-.182-.676-.25-.284-.068-.596-.137-.802-.36a.686.686 0 01.036-.903c.247-.256.633-.309.972-.275.298.03.613.162.758.44.051.11.132.272.08.377-.109.02-.22.018-.33.03-.01-.253-.21-.494-.468-.514-.23-.038-.488-.03-.69.098-.17.12-.224.407-.046.544.155.123.359.146.543.2.322.075.679.135.92.382.243.265.23.708-.01.971-.244.281-.643.36-.998.329-.314-.018-.645-.124-.839-.386zm2.827.343v-.746c.006-.217-.018-.438.032-.652.065-.288.415-.433.68-.336.167.054.24.235.243.398.004.446 0 .891.001 1.337h.341v-.907c-.006-.245.021-.493-.04-.732-.058-.247-.307-.394-.547-.413a.787.787 0 00-.71.271v-.996h-.34v2.777h.34zm2.161-2.776h-.341v.392h.341v-.392zm0 .765h-.341v2.012h.341v-2.012zm.451 1.382c-.102-.401-.049-.883.255-1.186.373-.364 1.054-.318 1.362.108.166.224.203.517.19.789h-1.5c-.016.35.276.727.649.686a.56.56 0 00.49-.415l.353.043c-.085.42-.527.7-.943.653-.392-.008-.78-.282-.856-.678zm.327-.57h1.123c.016-.336-.317-.657-.657-.57a.584.584 0 00-.466.57zm2.235-1.577h-.34v2.777h.34v-2.777zm1.835 2.777zm-1.403-.736c-.062-.335-.015-.7.168-.99.226-.328.723-.442 1.056-.211.051.028.124.139.157.123v-.963h.338v2.776h-.316V13.2c-.171.296-.579.371-.877.236-.288-.124-.481-.413-.526-.718zm.325-.268c-.009.272.078.589.339.721a.496.496 0 00.665-.259c.109-.242.09-.518.047-.773-.052-.237-.248-.461-.504-.461a.513.513 0 00-.497.385c-.04.125-.048.257-.05.387zm2.14.942c.16.082.344.107.522.108.256-.004.535-.08.692-.297.161-.209.156-.544-.048-.723-.181-.135-.41-.176-.623-.238-.136-.05-.29-.057-.411-.142-.104-.062-.114-.213-.038-.301.11-.118.286-.129.437-.12.187-.007.372.137.387.328l.333-.046a.748.748 0 00-.102-.289c-.12-.178-.346-.247-.55-.269-.252-.023-.536.011-.727.194a.526.526 0 00.012.762c.185.136.418.18.635.24.13.043.276.054.386.141.114.093.079.274-.02.365-.134.118-.33.129-.499.103-.209-.014-.377-.203-.392-.408l-.337.054v-.001c.03.217.15.429.344.539zm7.102-2.284c-.46-.341-1.219-.134-1.405.417a1.861 1.861 0 00-.082.582c-.046.518.35 1.072.894 1.085.46.027.916-.322.97-.788.095-.452.016-1.005-.377-1.296zM24 9.938v4.122c0 .575-.337 1.072-.823 1.308a.963.963 0 01-.51.146h-6.138l-.041.002c-.02 0-.041 0-.062-.002H1.455A1.456 1.456 0 010 14.06V9.938c0-.802.652-1.454 1.455-1.454H22.667c.187 0 .362.054.51.146.486.236.823.733.823 1.308zm-7.03-.484H1.455a.485.485 0 00-.485.484v4.122c0 .267.217.484.485.484H16.48a.485.485 0 00.489-.445V9.454zm1.714 1.223h-.368v2.777h.368v-2.777zm3.022.642c-.273-.594-1.04-.83-1.633-.618-.572.19-.888.823-.855 1.4 0 .272.07.543.204.78.396.718 1.518.836 2.07.236.443-.474.489-1.227.214-1.798z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/shikimori.svg b/assets/lib/simple-icons/icons/shikimori.svg
new file mode 100644
index 00000000..ff42b7d0
--- /dev/null
+++ b/assets/lib/simple-icons/icons/shikimori.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Shikimori</title><path d="M2.8025.0025C2.7779.03 2.8332.1223 2.9834.3c.0981.1134.1594.2328.233.4444.0551.1594.1198.3157.1443.3464.0368.049.0396.037.0427-.1102V.8181l.218.3004c.331.4568.5365.6992.6744.7973.0706.046.1136.0919.0952.098-.049.0153-.4785-.2208-.6778-.374-.1012-.0767-.196-.1411-.2114-.1411-.0153 0-.0644-.0461-.1073-.1013-.0399-.0552-.1348-.1408-.2053-.1898-.1717-.1196-.3527-.2913-.3957-.374C2.763.7721 2.668.7323 2.668.7814c0 .049.245.377.435.5793.5825.6224 1.1776.932 2.7688 1.4287.3373.1043.6347.2085.6623.233.0246.0215.0737.0398.1074.0398.0306 0 .0795.0152.104.0305.0399.0245.0367.031-.0093.031-.0368 0-.0521.018-.046.0548.0092.0552.1595.1045.4477.1444.1287.0184.1593.0124.1593-.0244 0-.049-.0889-.083-.2207-.083-.049 0-.0858-.0151-.0858-.0304 0-.0184.031-.025.0708-.0188.0368.0092.1652.0306.2817.052.276.046.353.0768.353.135 0 .0644.0826.092.1377.046.0307-.0276.046-.0274.046-.0028 0 .0183.0151.0337.0304.0337.0184 0 .031-.0214.031-.046 0-.0582-.0309-.0586.4842.0212.3066.046.42.077.374.0923-.098.0368-.0428.0858.0952.0858.0705 0 .1195.0153.1195.0337 0 .0276.0704.0306.2452.0183.1594-.0123.2516-.0093.2639.0122.0122.0184.0643.0275.1195.0183.0521-.0092.1961.0034.3126.0248.3066.0583 1.1313.1044 2.977.1688 2.983.1042 5.157.3277 5.9726.6159.3617.1287.9075.4048 1.0087.509.1594.1686.2082.3066.1898.5334-.0092.1135-.0092.2149 0 .2241.089.089.2855-.0859.2855-.2545 0-.0338.0639-.1165.1467-.187.331-.2913.3803-.454.3436-1.1194-.0246-.4476-.031-.4782-.2302-1.1343-.2606-.8585-.3215-.9903-.6342-1.3214-.3679-.3863-.7023-.6072-1.1592-.7635-.1103-.0368-.3434-.1224-.5212-.1899-.2483-.098-.4262-.141-.788-.1931-.512-.0736-1.6126-.1256-1.956-.0919-.1226.0123-.6132 0-1.1498-.0337-.61-.0337-.984-.046-1.0729-.0277-.0766.0154-.2085.0274-.2944.0305-.1257 0-.1837.0187-.291.0984-.1257.092-.2149.1194-.5644.1777-.5641.092-.929.1653-1.0823.2175-.1196.0429-.3157.0706-.6192.089-.8309.0521-1.3029.0952-1.4071.129-.0706.0214-.3406.0274-.7913.0182-.5488-.0123-.6895-.006-.7171.0277-.0276.0306-.0155.0398.0581.0398.1809 0 1.7968.1258 1.8121.141.0154.0154-.273.003-1.0977-.0491-.2423-.0154-.4567-.0186-.472-.0094-.0583.0368-.4939.0307-.9108-.0122-.515-.0521-1.0115-.138-1.4714-.2545-.2146-.0521-.4662-.0916-.644-.1008-.328-.0153-.6778-.129-1.1714-.3773-.325-.1625-.3614-.1684-.3614-.0366v.1008L3.244.5331c-.0552-.0644-.1224-.1689-.15-.2302-.0552-.1165-.2609-.328-.2915-.3004zm.4584 3.1887c-.5697.0269-1.0938.4707-1.47 1.2628-.2238.4752-.2635.6593-.2789 1.291-.0122.4966-.0063.598.0642 1.0119.1503.8615.19.9625.5058 1.2721.3342.3312 1.1654.785 1.6284.8892.1594.0338.3464.0768.4139.0952.2575.0644.61.0885 1.4868.1008.8431.0153.9136.0125 1.027-.0427.0797-.0398.2486-.0707.4908-.089.2023-.0184.4165-.0459.4748-.0643.0582-.0153.1841-.0309.276-.0309.0951 0 .1903-.0182.2087-.0366.0735-.0735.4228-.1503.757-.1687.187-.0092.3621-.0273.3928-.0427.1011-.0551.052-.0859-.1135-.0675-.095.0092-.187.003-.2207-.0154-.0491-.0307-.034-.0335.0825-.0366.0766 0 .2269-.0093.3342-.0216.1655-.0153.1842-.0248.1382-.0585-.1134-.0828-.0153-.1041.4936-.1041.4568 0 .5886-.0215.4537-.0736-.0275-.0092-.1413-.0216-.2517-.0216-.1134-.003-.1624-.0119-.1134-.015.0521-.006.1628-.0277.2517-.043.0859-.0185.6255-.0399 1.1958-.046.5702-.0061 1.0542-.0124 1.0757-.0155.0276 0 .0338-.0215.0216-.0614-.0123-.043-.0061-.061.0276-.061.0245 0 .083-.049.129-.1073.0919-.1195.1161-.1137.156.0427l.0277.1012.2207.0094c.1748.0061.2333-.003.2916-.046.0398-.0306.1224-.0645.1837-.0768l.1135-.0216-.0183.1782c-.0184.144-.0152.1716.0215.1593.0246-.0092.1222-.0338.2203-.0553l.1749-.0337-.0675-.089c-.043-.0491-.1226-.098-.1931-.1163l-.1224-.031.1838-.006a4.812 4.812 0 0 1 .3004 0c.0644.003.1135-.0089.1135-.0272 0-.0184-.0182-.034-.0366-.037-.0215-.0031-.089-.0064-.1472-.0095-.0582-.006-.1564-.0398-.2147-.0735-.0582-.0368-.1317-.067-.1593-.067-.0307 0-.0553-.0157-.0553-.031 0-.0215.092-.0305.2545-.0244.2483.0092.2514.0091.2606.0919.0123.095.0122.095.0797.0675a.0498.0498 0 0 0 .0305-.0581c-.0184-.049.037-.0893.083-.0586.0183.0092.0918.0215.1593.0276.1655.0092.9718.0737 1.1803.0952.1103.0122.1593.0307.1593.0614 0 .0521.037.0549.083.0089.0245-.0245.1442-.021.4354.0066.3557.0337.4017.0425.4017.0946 0 .0368.0213.0556.0704.0586.0368 0 .1656.0121.2821.0244.1196.0123.2329.0181.2513.009.0214-.0062.0891-.0979.1504-.2021.1196-.1993.2208-.3253.2607-.3253.0153 0 .018.0219.0089.0464-.0123.0245-.003.046.0154.046.0215 0 .0338.0244.0277.052-.0061.0367.0213.0582.0919.0735.1134.0246.1657.0582.089.0582-.0276 0-.0525.0183-.0525.0398 0 .0215.1812.0984.4448.1842.2821.095.4444.1623.4444.1899 0 .0306-.095.0092-.3586-.0797-.6254-.2146-.898-.2606-.898-.1533 0 .046.0488.0676.285.1228.1532.0368.3002.0642.3248.0642.0214 0 .0798.0338.1289.0736.049.043.294.144.5638.233.273.092.5153.19.5644.233.049.0398.1349.0952.1931.1166.1932.0828.4693.3309.6778.6099.3005.4047.2973.3895.1317.3895-.0766 0-.2946-.0214-.4847-.046-.19-.0245-.429-.0461-.53-.0492-.2147-.0061-1.9684.0278-2.6245.0493l-.4449.0154-.0703-.1504c-.0398-.0828-.1533-.2298-.2545-.331-.1747-.1717-.1837-.175-.2236-.1167-.0245.0337-.1168.1626-.2057.2822l-.1622.2236-.1992.0065c-.1104 0-.2242.0031-.2517 0-.0675-.006-.0703.0305-.009.144l.0427.0857-.3126.0216c-.8524.0582-2.661.282-3.268.4078-.135.0276-.4203.049-.6778.052-.46.0061-.5028.0184-.794.187-.0522.0276-.0922.0339-.129.0155-.0337-.0215-.0643-.0154-.0858.0122-.0337.0398-.144.058-.9534.1439-.1778.0184-.475.0584-.665.089-.3312.0552-.3499.0552-.5246 0-.184-.0582-.7572-.135-1.2478-.1687l-.276-.0216-.1622.1472c-.092.0797-.218.2177-.2855.3066-.092.1257-.141.166-.1992.166-.1257 0-1.2448.1743-2.0573.3215-.8768.1594-1.2077.1904-1.4652.1382-.2668-.0551-.2701-.0583-.2578-.3956.0122-.2851.0093-.2941-.0643-.3309-.1686-.0858-.331-.0371-.5517.1622-.052.046-.1133.0675-.1992.0675-.0705-.003-.1993.0306-.3004.0797l-.181.083.009.1593c.006.0858-.0032.1868-.0216.2175-.0245.0368-.0306.1994-.0183.4692.0123.328.003.4476-.0398.607l-.052.1964.1471.2086c.2943.4139.503.7294.503.763 0 .0185.0916.1169.208.218.506.4446.7207.5642 1.2174.6685.5273.1134.6131.1072.9412-.0675.1502-.0828.3251-.1965.3895-.2578.0797-.0736.3067-.1931.742-.3863.6776-.3004.7631-.3342.7631-.2943 0 .0122.043.426.0952.9135.1073 1.024.1411 2.0052.0951 2.7595-.0368.5917-.0644.6743-.4814 1.4591-.6469 1.2172-1.4224 2.3947-2.008 3.0477-.1043.1196-.2636.325-.3525.4599-.1686.2544-.4815.595-.871.9445-.1317.1195-.2177.2206-.2085.2451.0092.0245.1046.0734.2119.1102.1042.0398.2052.083.2236.0984.049.049.1101.0303.337-.0924l.2207-.1223.0891.0614c.1073.0705.3006.0763.4631.015.0644-.0245.1932-.052.2883-.0581.19-.0184.3126-.0703.5118-.2236.0736-.0552.1687-.1073.2147-.1195.089-.0184.8585-.7976 1.2694-1.2881.1287-.1502.4506-.4905.7204-.7542.3771-.374.5457-.5148.7603-.6436.3096-.184.5548-.4076.5854-.5395.0123-.046.052-.1413.0919-.2118.095-.1625.2024-.5792.1748-.6835-.0092-.0429-.0552-.147-.1012-.233-.0797-.141-.0855-.1901-.1008-.5826-.0276-.6898-.138-1.0515-.4875-1.5941-.2023-.3127-.2516-.4231-.3773-.8278-.2085-.696-.2697-1.3493-.1655-1.8613.049-.2545.0735-.2883.279-.4078.1072-.0644.2484-.1656.3159-.227l.1256-.1162.5948-.0675c.328-.0398.6958-.0889.8123-.1134.1196-.0245.3831-.0797.5855-.1195.2054-.043.497-.1164.6473-.1655.1502-.0521.3616-.1137.472-.1383.2146-.049.9472-.1192.9717-.0946.0092.0092.0185.4476.0155.975 0 .8277-.0092 1.0515-.0797 1.6616-.1196 1.0455-.1442 1.3732-.1749 2.526-.0276 1.1466-.0365 1.1986-.2236 1.3335-.1349.0981-.2728.0802-.6806-.1007-.2023-.089-.6286-.264-.9505-.3928-.3189-.1288-.7727-.3277-1.0027-.4411-.233-.1165-.4232-.2028-.4232-.1936 0 .0092.1165.1595.2606.3342.144.1748.2606.325.2606.3342 0 .0092-.0274.0188-.0642.0188-.0552 0-.0584.006-.0155.0642.0276.0398.0369.101.0277.1654-.0123.0828-.0032.1106.058.1505.04.0276.1046.1041.1445.1716.0368.0643.1012.147.141.1776.04.0307.098.1044.1318.1627.0306.0582.1348.1654.233.239.098.0736.193.1687.2113.2086.0184.046.1077.1133.2119.1655.2422.1226.5975.4353.6557.5732.0338.0859.1015.1534.2977.2822.1564.1042.4321.3433.7387.6469.558.5518.5887.5703 1.0425.5427.2943-.0214.4416-.0768.6164-.2362.0705-.0644.1563-.1316.187-.15.0306-.0184.1072-.1072.1655-.1992.0582-.095.147-.1932.193-.2208.1288-.0766.3587-.402.3587-.5062 0-.1533.0582-.251.2606-.441.1778-.1656.2149-.2213.3253-.4941.1717-.417.2326-.6864.2878-1.223.0674-.6622.0616-1.4623-.015-1.962-.1257-.8156-.604-3.0876-.7481-3.5414-.1196-.377-.233-.8676-.233-1.0087 0-.0337.064-.0369.3155-.0215.23.0153.4108.0094.6745-.0305.3127-.046.4202-.049.7514-.0183.2115.0184.3923.0396.3984.0488.0245.0214.4968 1.5575.5765 1.8702.1656.6408.1688.687.2025 2.2996.0153.8431.0304 1.8426.0366 2.2228.0061.6407.0124.7111.089.9932.0981.3587.2054.5919.4261.9108.089.1257.2238.3464.3005.4874.1533.2852.3527.521.6103.7172.3372.2606.6652.4724.8676.5644.2422.1103.4382.2849.6314.5577.0797.1104.1932.2609.2545.3375.0613.0767.1378.1932.1716.2607.0582.1226.0766.1348.4078.233.1532.0459.5762.0548.8123.015.1318-.0216.1812-.052.3928-.2574.285-.276.42-.469.42-.607 0-.2146.0303-.279.156-.3281.0798-.0307.1196-.0673.1196-.1041 0-.1932-.2023-.9723-.3066-1.1747-.0674-.1349-.9471-1.324-1.686-2.2836-.7849-1.0148-1.061-1.4567-1.2234-1.935-.0521-.1624-.2481-1.2754-.3708-2.143-.0889-.6224-.2608-1.2386-.5306-1.9223-.092-.233-.1564-.4228-.141-.4228.0735 0 1.6526.4415 1.7445.4875.0583.0307.2974.159.5274.2878.23.1318.4537.2363.4935.2363.046 0 .239.1073.466.2606l.3895.2606.2025-.0155c.2912-.0276.346-.0398.4687-.1256.1748-.1196.2792-.138.4172-.0736.2667.1257.4507.1472.2883.0338-.2422-.1687-.2667-.2516-.1257-.4632.1687-.2575.1867-.2757.3614-.3646.279-.141.2976-.1745.3895-.6774.043-.2452.1011-.4848.1257-.5338.0705-.1472.0553-.2419-.0642-.3553-.0614-.0583-.1627-.1904-.2302-.2916-.095-.1472-.1223-.2175-.1223-.3248 0-.1196-.0124-.144-.1013-.1992a1.3114 1.3114 0 0 0-.218-.1074c-.1318-.046-.3369-.2635-.3093-.3248a2.3155 2.3155 0 0 0 .0337-.083c.0246-.0613-.2239-.1962-.4692-.2545-.2452-.0582-.2421-.0583-.1992-.1073.0215-.0276.0212-.1227.0028-.3005-.092-.84-.4321-1.4285-.9993-1.7259-.1226-.0644-.2299-.1288-.239-.1471-.0583-.089-.7818-.365-1.1803-.4477-.1257-.0245-.3744-.0857-.5522-.1378-.1778-.049-.4504-.1016-.6098-.12-.4568-.043-1.073-.147-1.2754-.2114-.1012-.0307-.3403-.0858-.5335-.1195-.1931-.0368-.3587-.0766-.368-.0919-.0122-.0184-.0858-.0156-.187.0028-.1164.0215-.2912.0217-.5671-.0028-.2177-.0215-.7573-.034-1.1957-.031-.6745.0031-.8585-.0057-1.2019-.0609-.2207-.0368-.518-.0646-.659-.0646-.3373-.0031-1.331-.1042-1.1531-.1196.0276 0 .1195-.0181.2053-.0365.141-.0307.1504-.0372.1228-.0985-.0306-.0644-.0458-.0673-.478-.0642-.368 0-.4539.0094-.4815.0492-.0306.0399-.0615.0428-.1964.0183-.144-.0306-.1533-.0368-.1073-.0736.049-.0368.0492-.046.0094-.0736-.0246-.0153-.0676-.031-.0952-.031-.0399 0-1.9562-.19-2.7533-.2727-.1564-.0184-.2941-.0365-.3033-.0488-.0092-.0092.0061-.0154.0337-.0154.0307 0 .052-.0124.052-.0277 0-.046-.156-.058-.3707-.0244-.1502.0215-.2303.0213-.2794-.0032-.0582-.0246-.0395-.0273.0924-.015.2912.0306.1683-.0401-.1383-.077-.1656-.0214-.3372-.043-.3801-.0491a.486.486 0 0 1-.1379-.046c-.0306-.0184-.3679-.0763-.748-.1284-.3802-.0521-.8065-.1291-.9506-.172-.4967-.141-.9532-.371-1.2169-.607l-.1382-.1224.0492-.1167c.1011-.2422.2299-.3832.4598-.4936.3158-.1533.46-.178 1.0762-.1964.561-.0122.693-.0365.6286-.1101-.0307-.043-.472-.1106-.6928-.1106-.138 0-.4815-.0674-.7973-.1594a1.2257 1.2257 0 0 0-.4003-.0488zm8.8497 2.9503a.3051.3051 0 0 0-.0675.0051c-.181.0307-.285.0734-.3769.15l-.0919.0736.1472.0033c.1564 0 .239-.0306.3525-.1317.0713-.0644.0838-.0963.0366-.1003zm5.7762.951c.0383-.0023.0814.0089.1626.0319.092.0276.193.0401.2236.031.0307-.0093.0674-.0033.0797.0182.0153.0276-.0305.0308-.1838.0155-.1349-.0154-.2025-.0126-.2025.0089 0 .0184.0368.04.0858.0492.2238.049.2607.0737.0675.0553-.1103-.0123-.276-.0213-.368-.0244-.1594 0-.1684.003-.1776.0797-.0092.0705-.0307.0856-.181.1163-.2053.0398-.1775.0428-.3308-.0277-.138-.0674-.4418-.141-.819-.1992-.141-.0215-.2112-.0396-.1621-.0427.0521 0 .3342.0307.6286.0736.5457.0767.6988.0919.6651.0582-.0092-.0092-.2483-.0644-.5334-.1196l-.5151-.1012.3004-.0033c.2637-.003.3098.0064.3895.0647.0675.049.1011.0583.1256.0337.0215-.0214.1133-.028.2574-.0187.1931.0153.2452.0095.3525-.0488.0628-.0322.0966-.0483.135-.0506zm-4.3466.5128c.0152-.0005.0284.0022.036.0099.0124.0092.0002.0306-.0243.0459-.0582.0368-.0828.037-.1073.0033-.0138-.0253.0499-.0575.0956-.059zm4.9869.09c.0057-.002.0158.0105.0342.0366.0214.0276.0673.052.098.052.049 0 .0524.006.0126.0305-.0245.0153-.0522.0276-.0614.0276-.0613-.0061-.0919-.0428-.0919-.098.0015-.0306.0027-.0468.0085-.0487zm-3.9515.1805c-.0613 0-.104.052-.104.1256 0 .0153.0702.0276.156.0276.1472 0 .1536-.003.1168-.052-.0613-.0797-.0983-.1012-.1688-.1012zm6.1901 1.8304c.0215-.0092.0738.012.1167.0426.0675.0521.0674.0584.0122.0553-.0858 0-.184-.0765-.1289-.098Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/shopify.svg b/assets/lib/simple-icons/icons/shopify.svg
index 5b028264..9a7d3777 100644
--- a/assets/lib/simple-icons/icons/shopify.svg
+++ b/assets/lib/simple-icons/icons/shopify.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Shopify icon</title><path d="M15.337 23.979l7.216-1.561s-2.604-17.613-2.625-17.73c-.018-.116-.114-.192-.211-.192s-1.929-.136-1.929-.136-1.275-1.274-1.439-1.411c-.045-.037-.075-.057-.121-.074l-.914 21.104h.023zM11.71 11.305s-.81-.424-1.774-.424c-1.447 0-1.504.906-1.504 1.141 0 1.232 3.24 1.715 3.24 4.629 0 2.295-1.44 3.76-3.406 3.76-2.354 0-3.54-1.465-3.54-1.465l.646-2.086s1.245 1.066 2.28 1.066c.675 0 .975-.545.975-.932 0-1.619-2.654-1.694-2.654-4.359-.034-2.237 1.571-4.416 4.827-4.416 1.257 0 1.875.361 1.875.361l-.945 2.715-.02.01zM11.17.83c.136 0 .271.038.405.135-.984.465-2.064 1.639-2.508 3.992-.656.213-1.293.405-1.889.578C7.697 3.75 8.951.84 11.17.84V.83zm1.235 2.949v.135c-.754.232-1.583.484-2.394.736.466-1.777 1.333-2.645 2.085-2.971.193.501.309 1.176.309 2.1zm.539-2.234c.694.074 1.141.867 1.429 1.755-.349.114-.735.231-1.158.366v-.252c0-.752-.096-1.371-.271-1.871v.002zm2.992 1.289c-.02 0-.06.021-.078.021s-.289.075-.714.21c-.423-1.233-1.176-2.37-2.508-2.37h-.115C12.135.209 11.669 0 11.265 0 8.159 0 6.675 3.877 6.21 5.846c-1.194.365-2.063.636-2.16.674-.675.213-.694.232-.772.87-.075.462-1.83 14.063-1.83 14.063L15.009 24l.927-21.166z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Shopify</title><path d="M15.337 23.979l7.216-1.561s-2.604-17.613-2.625-17.73c-.018-.116-.114-.192-.211-.192s-1.929-.136-1.929-.136-1.275-1.274-1.439-1.411c-.045-.037-.075-.057-.121-.074l-.914 21.104h.023zM11.71 11.305s-.81-.424-1.774-.424c-1.447 0-1.504.906-1.504 1.141 0 1.232 3.24 1.715 3.24 4.629 0 2.295-1.44 3.76-3.406 3.76-2.354 0-3.54-1.465-3.54-1.465l.646-2.086s1.245 1.066 2.28 1.066c.675 0 .975-.545.975-.932 0-1.619-2.654-1.694-2.654-4.359-.034-2.237 1.571-4.416 4.827-4.416 1.257 0 1.875.361 1.875.361l-.945 2.715-.02.01zM11.17.83c.136 0 .271.038.405.135-.984.465-2.064 1.639-2.508 3.992-.656.213-1.293.405-1.889.578C7.697 3.75 8.951.84 11.17.84V.83zm1.235 2.949v.135c-.754.232-1.583.484-2.394.736.466-1.777 1.333-2.645 2.085-2.971.193.501.309 1.176.309 2.1zm.539-2.234c.694.074 1.141.867 1.429 1.755-.349.114-.735.231-1.158.366v-.252c0-.752-.096-1.371-.271-1.871v.002zm2.992 1.289c-.02 0-.06.021-.078.021s-.289.075-.714.21c-.423-1.233-1.176-2.37-2.508-2.37h-.115C12.135.209 11.669 0 11.265 0 8.159 0 6.675 3.877 6.21 5.846c-1.194.365-2.063.636-2.16.674-.675.213-.694.232-.772.87-.075.462-1.83 14.063-1.83 14.063L15.009 24l.927-21.166z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/shopware.svg b/assets/lib/simple-icons/icons/shopware.svg
index d15d8552..f86523fd 100644
--- a/assets/lib/simple-icons/icons/shopware.svg
+++ b/assets/lib/simple-icons/icons/shopware.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Shopware icon</title><path d="M23.9477 10.8913a.1735.1735 0 00-.061-.1178c-2.5032-2.078-4.5288-2.9261-6.9905-2.9261-1.3127 0-2.32.2638-2.9916.7827-.5822.4492-.8896 1.0772-.8896 1.812 0 2.0605 2.5184 3.0003 5.4358 4.0883 1.5023.5604 3.057 1.1404 4.483 1.9319a.1626.1626 0 00.0828.0218.187.187 0 00.0589-.011c.0458-.0174.085-.0523.1025-.1002.545-1.3955.822-2.8673.822-4.374a13.082 13.082 0 00-.0523-1.1076zm-4.81 10.4791c-1.0423-.785-2.5795-1.3824-4.2061-2.0125-1.9362-.7501-4.132-1.6027-5.7803-2.913-1.8665-1.4871-2.7757-3.3623-2.7757-5.7324 0-2.1281.883-3.9466 2.5533-5.2614 1.873-1.474 4.7119-2.2546 8.2071-2.2546.966 0 1.8883.0589 2.743.1766a.1696.1696 0 00.1788-.098.17.17 0 00-.0414-.2007C17.814 1.0924 14.9664.0022 12.001.0022c-3.2052 0-6.2186 1.2472-8.4862 3.5148C1.2494 5.7825 0 8.796 0 11.999c0 3.2051 1.2472 6.2185 3.5149 8.484 2.2654 2.2654 5.2788 3.5148 8.4862 3.5148 2.5903 0 5.0564-.8133 7.1344-2.3505a.1714.1714 0 00.0697-.1374.1735.1735 0 00-.0676-.1395Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Shopware</title><path d="M23.9477 10.8913a.1735.1735 0 00-.061-.1178c-2.5032-2.078-4.5288-2.9261-6.9905-2.9261-1.3127 0-2.32.2638-2.9916.7827-.5822.4492-.8896 1.0772-.8896 1.812 0 2.0605 2.5184 3.0003 5.4358 4.0883 1.5023.5604 3.057 1.1404 4.483 1.9319a.1626.1626 0 00.0828.0218.187.187 0 00.0589-.011c.0458-.0174.085-.0523.1025-.1002.545-1.3955.822-2.8673.822-4.374a13.082 13.082 0 00-.0523-1.1076zm-4.81 10.4791c-1.0423-.785-2.5795-1.3824-4.2061-2.0125-1.9362-.7501-4.132-1.6027-5.7803-2.913-1.8665-1.4871-2.7757-3.3623-2.7757-5.7324 0-2.1281.883-3.9466 2.5533-5.2614 1.873-1.474 4.7119-2.2546 8.2071-2.2546.966 0 1.8883.0589 2.743.1766a.1696.1696 0 00.1788-.098.17.17 0 00-.0414-.2007C17.814 1.0924 14.9664.0022 12.001.0022c-3.2052 0-6.2186 1.2472-8.4862 3.5148C1.2494 5.7825 0 8.796 0 11.999c0 3.2051 1.2472 6.2185 3.5149 8.484 2.2654 2.2654 5.2788 3.5148 8.4862 3.5148 2.5903 0 5.0564-.8133 7.1344-2.3505a.1714.1714 0 00.0697-.1374.1735.1735 0 00-.0676-.1395Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/shotcut.svg b/assets/lib/simple-icons/icons/shotcut.svg
new file mode 100644
index 00000000..888640ae
--- /dev/null
+++ b/assets/lib/simple-icons/icons/shotcut.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Shotcut</title><path d="M0 0h6.667v24H0v-.889h5.778V.889H0V0zm7.556 0v24H24v-.889H8.444V.889H24V0H7.556zm1.388 22.611H24V1.389H8.944v21.222zM5.278 1.389H0v21.222h5.278V1.389z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/showpad.svg b/assets/lib/simple-icons/icons/showpad.svg
index d839f4ab..be69f482 100644
--- a/assets/lib/simple-icons/icons/showpad.svg
+++ b/assets/lib/simple-icons/icons/showpad.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Showpad icon</title><path d="M24 12V11.66l-.03-.24a5.48 5.48 0 0 0-4.88-4.89l-.24-.01h-.05l-.27-.01a5.45 5.45 0 0 0-3.88 1.6L12.8 9.97l1.35 1.36 1.35-1.35h-.01l.5-.51a3.55 3.55 0 0 1 2.53-1.05h.2l.16.01a3.58 3.58 0 0 1 3.2 3.19V12.35a3.58 3.58 0 0 1-2 2.84l-.03.02-.1.04-.07.03-.06.03-.11.04h-.03a3.58 3.58 0 0 1-3.69-.84l-.5-.5-3.37-3.36-5.38-5.39-1.35 1.35L0 12l1.35 1.35 5.39 5.39 1.34-1.35 3.37-3.37-1.34-1.35-3.37 3.37L2.7 12l4.04-4.04 2.02 2.02 5.39 5.39.5.5a5.46 5.46 0 0 0 5.65 1.3l.05-.01.16-.07.1-.04.11-.04.16-.07.05-.03a5.47 5.47 0 0 0 3.04-4.35v-.01l.02-.24v-.04V12H24z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Showpad</title><path d="M24 11.9872c0-.0894 0-.1787-.0128-.2808v-.0383c0-.0766-.0127-.1532-.0127-.2426v-.0128c-.2681-2.5787-2.3107-4.6085-4.8766-4.8766h-.0128c-.0766-.0128-.1532-.0128-.2426-.0128h-.0383c-.0893 0-.1787-.0128-.2808-.0128-1.4553 0-2.8468.5745-3.868 1.6086l-1.864 1.851 1.3533 1.3532 1.3404-1.3532h-.0128l.5107-.5105c.6638-.6766 1.583-1.0468 2.5276-1.0468h.2043c.051 0 .1021 0 .1532.0128h.0128c1.685.1787 3.0127 1.5063 3.1787 3.1787v.0128c0 .051.0128.1021.0128.1532v.4084c0 .0511-.0128.1022-.0128.1532-.1277 1.2255-.8809 2.2979-1.9787 2.834l-.0383.0129a.3813.3813 0 0 0-.1022.051l-.0766.0256-.0638.0255-.1149.0383-.0255.0128c-1.2894.4468-2.7192.1148-3.6894-.8554l-.4979-.4979-3.3702-3.3574-5.3617-5.3617-1.3532 1.3532L0 12l1.3532 1.3532 5.3872 5.3872 1.3532-1.3532 3.3702-3.3702-1.3532-1.3532-3.3702 3.3702L2.6936 12l4.0468-4.0468 2.017 2.0298 5.3873 5.3872.4979.4979c1.0212 1.034 2.4255 1.6085 3.8808 1.5957.6128 0 1.2128-.102 1.7872-.2936l.0511-.0128c.051-.0255.1149-.0383.166-.0638l.102-.0383.1022-.051.1532-.0767.051-.0255c1.698-.8298 2.8469-2.4766 3.0511-4.3532.0128-.0766.0128-.166.0128-.2425v-.3192z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/showtime.svg b/assets/lib/simple-icons/icons/showtime.svg
new file mode 100644
index 00000000..676caaf3
--- /dev/null
+++ b/assets/lib/simple-icons/icons/showtime.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Showtime</title><path d="M16.99 12.167c0-4.808 1.779-7.84 3.903-8.16C18.769 1.397 15.221 0 11.999 0 8.451 0 5.265 1.54 3.07 3.985c2.094.416 2.806 2.174 2.806 4.892H3.314c0-1.605-.334-2.436-1.284-2.436-.427 0-.758.217-.954.587-.027.06-.057.122-.084.184a2.115 2.115 0 0 0-.114.71c0 3.324 5.46 3.159 5.46 8.27 0 1.995-1.53 3.855-3.252 3.855C5.35 22.52 8.441 24 12 24c3.46 0 6.577-1.464 8.766-3.808-2.018-.509-3.776-3.413-3.776-8.025zm-1.142 7.921h-2.746V13.26h-2.967v6.83H7.384V4.327h2.746v6.348h2.972V4.327h2.746v15.761zM2.372 17.58c-1.32 0-2.399-2.32-2.372-5.8 1.905 1.72 3.681 2.11 3.681 4.145 0 .981-.543 1.655-1.309 1.655zM24 12.002c0 2.844-.896 5.409-2.1 5.409-1.445 0-2.181-2.703-2.181-5.498 0-2.654.771-5.308 2.181-5.308 1.676 0 2.1 4.102 2.1 5.397z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/shutterstock.svg b/assets/lib/simple-icons/icons/shutterstock.svg
new file mode 100644
index 00000000..0bd216bb
--- /dev/null
+++ b/assets/lib/simple-icons/icons/shutterstock.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Shutterstock</title><path d="M9.839 18.761h5.313a1.53 1.53 0 0 0 1.527-1.528v-5.76h5.237v5.76A6.767 6.767 0 0 1 15.152 24H9.839v-5.239M14.16 5.237H8.85a1.53 1.53 0 0 0-1.53 1.527v5.761H2.085V6.764A6.763 6.763 0 0 1 8.85 0h5.31v5.237Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/siemens.svg b/assets/lib/simple-icons/icons/siemens.svg
index 8f3fe2ec..ec60e7b1 100644
--- a/assets/lib/simple-icons/icons/siemens.svg
+++ b/assets/lib/simple-icons/icons/siemens.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Siemens icon</title><path d="M.086 13.761v-.722c.41.13.775.195 1.09.195.437 0 .654-.115.654-.347a.278.278 0 0 0-.096-.216c-.063-.063-.23-.148-.499-.258-.479-.198-.794-.365-.939-.507a.934.934 0 0 1-.283-.695c0-.36.139-.637.414-.825.27-.188.626-.28 1.062-.28.24 0 .589.043 1.045.133v.692a2.58 2.58 0 0 0-.945-.202c-.41 0-.613.112-.613.339 0 .084.04.15.124.205.067.042.257.134.565.273.446.197.742.368.891.516a.904.904 0 0 1 .264.673.992.992 0 0 1-.517.904c-.278.17-.64.256-1.083.256a4.88 4.88 0 0 1-1.134-.134zm3.31-3.592h1.018v3.65H3.395zm1.953 3.65v-3.65h2.616v.66H6.332v.826h1.422v.602H6.332v.866h1.675v.697zm3.325 0v-3.65h1.322l.917 2.333.943-2.333h1.257v3.65h-.969v-2.584l-1.07 2.622h-.631l-1.05-2.622v2.585h-.72zm5.373 0v-3.65h2.615v.66H15.03v.826h1.421v.602H15.03v.866h1.676v.697zm3.33 0v-3.65h1.18l1.255 2.445V10.17h.72v3.65H19.38l-1.285-2.475v2.476zm3.878-.058v-.722c.406.13.77.195 1.09.195.436 0 .653-.115.653-.347a.293.293 0 0 0-.091-.216c-.066-.063-.234-.148-.503-.258-.48-.196-.794-.364-.94-.507a.936.936 0 0 1-.284-.698c0-.359.138-.634.413-.822.272-.188.626-.28 1.061-.28.249 0 .566.038.956.116l.09.017v.692a2.583 2.583 0 0 0-.945-.202c-.409 0-.613.112-.613.339 0 .084.04.15.124.204.066.042.254.133.57.274.443.196.738.368.887.516a.903.903 0 0 1 .263.673c0 .396-.17.698-.51.904-.283.17-.644.256-1.089.256-.381 0-.76-.046-1.132-.134z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Siemens</title><path d="M1.478 10.016c.24 0 .59.046 1.046.14v.726a2.465 2.465 0 0 0-.946-.213c-.41 0-.615.118-.615.354 0 .088.041.16.124.216.069.045.258.14.568.286.446.208.743.388.89.541.176.182.264.417.264.705 0 .415-.172.73-.516.949-.279.176-.64.264-1.085.264-.375 0-.753-.046-1.133-.139v-.755c.41.135.774.203 1.09.203.437 0 .655-.121.655-.362a.302.302 0 0 0-.095-.227c-.065-.065-.232-.155-.5-.27-.481-.208-.795-.384-.94-.53a.999.999 0 0 1-.284-.73c0-.377.137-.666.413-.864.272-.196.626-.294 1.064-.294zm21.19 0c.246 0 .565.04.956.123l.09.016v.727a2.471 2.471 0 0 0-.948-.213c-.409 0-.612.118-.612.354 0 .088.04.16.123.216.066.043.256.139.57.286.443.208.74.388.889.541.176.182.264.417.264.705 0 .415-.172.73-.514.949-.28.176-.643.264-1.087.264-.376 0-.754-.046-1.134-.139v-.755c.407.135.77.203 1.09.203.437 0 .655-.121.655-.362 0-.09-.03-.166-.092-.227-.066-.065-.233-.155-.503-.27-.48-.206-.793-.382-.94-.53a.997.997 0 0 1-.284-.732c0-.376.137-.664.413-.862.272-.196.627-.294 1.064-.294zm-12.674.066l.92 2.444.942-2.444h1.257v3.825h-.968v-2.708l-1.072 2.747h-.632l-1.052-2.747v2.708H8.67v-3.825zm-5.587 0v3.825H3.386v-3.825zm3.554 0v.692H6.327v.864H7.75v.63H6.327v.908h1.677v.73h-2.66v-3.824zm8.707 0v.692h-1.634v.864h1.422v.63h-1.422v.908h1.677v.73H14.05v-3.824zm1.898 0l1.255 2.56v-2.56h.719v3.825h-1.15l-1.288-2.595v2.595h-.72v-3.825z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/signal.svg b/assets/lib/simple-icons/icons/signal.svg
index fb701794..5cb35b51 100644
--- a/assets/lib/simple-icons/icons/signal.svg
+++ b/assets/lib/simple-icons/icons/signal.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Signal icon</title><path d="M12.012 2.598c-5.22 0-9.452 3.9-9.452 8.709 0 3.016 1.219 5.301 3.155 6.774H5.71l.234 3.042v.004c0 .017 0 .031.004.046v.006c.024.144.15.255.301.255.053 0 .1-.015.144-.035l.011-.008L9.3 19.717c.854.196 1.767.299 2.71.299 5.22 0 9.452-3.899 9.452-8.71 0-4.81-4.233-8.709-9.454-8.709l.004.001zM10.39.72c.525-.065 1.061-.104 1.605-.104.38 0 .75.02 1.119.052l.057-.614C12.781.019 12.392 0 11.997 0c-.57 0-1.135.036-1.691.109l.083.612.001-.001zm3.797.094c.915.165 1.785.436 2.61.795l.252-.567c-.132-.056-.263-.112-.397-.165-.762-.3-1.551-.524-2.355-.671l-.11.608zm9.169 10.556c-.015.915-.155 1.806-.405 2.655l.59.175c.267-.903.416-1.854.431-2.831l-.616.001zM6.745 1.814c.811-.389 1.678-.698 2.586-.902L9.196.308c-.631.141-1.251.329-1.853.569-.297.117-.586.245-.867.381l.269.556zm13.65 1.399c-.706-.649-1.485-1.207-2.329-1.673l-.311.541c.811.445 1.561.981 2.224 1.596l.416-.462v-.002zm-5.244 18.838c.945-.24 1.845-.591 2.686-1.03l-.315-.533c-.786.413-1.631.738-2.521.967l.15.596zM3.677 4.005c.63-.638 1.347-1.2 2.13-1.675l-.327-.529c-.698.422-1.35.914-1.945 1.473-.102.094-.2.191-.3.289l.439.441.003.001zm19.48 11.28l-.568-.236c-.349.833-.803 1.614-1.354 2.332l.495.369c.577-.758 1.061-1.586 1.424-2.465h.003zM20.726 4.433c.606.675 1.122 1.425 1.534 2.228l.555-.275c-.435-.852-.979-1.645-1.627-2.366l-.465.413h.003zm2.554 3.003l-.568.244c.313.828.521 1.703.604 2.61l.615-.061c-.088-.956-.305-1.892-.651-2.793zM6.386 22.849l-.969.425-.332-1.025-.585.19.438 1.347c.029.083.09.151.167.188.041.017.083.026.126.026s.084-.009.123-.026l1.283-.563-.251-.562zm3.823-1.193c-.078-.016-.157-.027-.237-.041l-.465-.079c-.061-.009-.12 0-.172.023l-1.951.853.271.554 1.845-.803c.125.021.25.041.371.059.068.017.139.026.209.038l.129-.604zm3.728.02c-.633.104-1.281.156-1.942.156-.273 0-.525-.015-.772-.038l-.019.615c.251.024.511.04.791.04.698 0 1.383-.058 2.048-.166l-.104-.606-.002-.001zM1.517 7.116c.37-.825.852-1.598 1.425-2.302l-.47-.407c-.61.745-1.116 1.557-1.508 2.427l-.01.021.563.261zM20.532 18.21c-.612.651-1.31 1.229-2.07 1.728l.339.515c.806-.524 1.541-1.14 2.19-1.829l-.459-.414zM.97 14.551c-.188-.796-.293-1.676-.323-2.671H.031c.03 1.071.145 2.005.345 2.843l.594-.172zM.538 7.925c-.297.91-.468 1.853-.51 2.813l.615.03c.042-.923.209-1.816.487-2.662l-.592-.181zm4.199 13.26l-.59-1.815c-.02-.06-.056-.109-.105-.147-.232-.182-.449-.366-.66-.558l-.422.446c.194.184.408.362.629.541l.561 1.717.587-.184zm-2.105-3.292c-.591-.691-1.037-1.449-1.355-2.315l-.573.229c.041.107.083.216.126.322.33.796.771 1.509 1.342 2.175l.46-.411z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Signal</title><path d="m9.12.35.27 1.09a10.845 10.845 0 0 0-3.015 1.248l-.578-.964A11.955 11.955 0 0 1 9.12.35zm5.76 0-.27 1.09a10.845 10.845 0 0 1 3.015 1.248l.581-.964A11.955 11.955 0 0 0 14.88.35zM1.725 5.797A11.955 11.955 0 0 0 .351 9.119l1.09.27A10.845 10.845 0 0 1 2.69 6.374zm-.6 6.202a10.856 10.856 0 0 1 .122-1.63l-1.112-.168a12.043 12.043 0 0 0 0 3.596l1.112-.169A10.856 10.856 0 0 1 1.125 12zm17.078 10.275-.578-.964a10.845 10.845 0 0 1-3.011 1.247l.27 1.091a11.955 11.955 0 0 0 3.319-1.374zM22.875 12a10.856 10.856 0 0 1-.122 1.63l1.112.168a12.043 12.043 0 0 0 0-3.596l-1.112.169a10.856 10.856 0 0 1 .122 1.63zm.774 2.88-1.09-.27a10.845 10.845 0 0 1-1.248 3.015l.964.581a11.955 11.955 0 0 0 1.374-3.326zm-10.02 7.875a10.952 10.952 0 0 1-3.258 0l-.17 1.112a12.043 12.043 0 0 0 3.597 0zm7.125-4.303a10.914 10.914 0 0 1-2.304 2.302l.668.906a12.019 12.019 0 0 0 2.542-2.535zM18.45 3.245a10.914 10.914 0 0 1 2.304 2.304l.906-.675a12.019 12.019 0 0 0-2.535-2.535zM3.246 5.549A10.914 10.914 0 0 1 5.55 3.245l-.675-.906A12.019 12.019 0 0 0 2.34 4.874zm19.029.248-.964.577a10.845 10.845 0 0 1 1.247 3.011l1.091-.27a11.955 11.955 0 0 0-1.374-3.318zM10.371 1.246a10.952 10.952 0 0 1 3.258 0L13.8.134a12.043 12.043 0 0 0-3.597 0zM3.823 21.957 1.5 22.5l.542-2.323-1.095-.257-.542 2.323a1.125 1.125 0 0 0 1.352 1.352l2.321-.532zm-2.642-3.041 1.095.255.375-1.61a10.828 10.828 0 0 1-1.21-2.952l-1.09.27a11.91 11.91 0 0 0 1.106 2.852zm5.25 2.437-1.61.375.255 1.095 1.185-.275a11.91 11.91 0 0 0 2.851 1.106l.27-1.091a10.828 10.828 0 0 1-2.943-1.217zM12 2.25a9.75 9.75 0 0 0-8.25 14.938l-.938 4 4-.938A9.75 9.75 0 1 0 12 2.25z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/simkl.svg b/assets/lib/simple-icons/icons/simkl.svg
new file mode 100644
index 00000000..e620bdda
--- /dev/null
+++ b/assets/lib/simple-icons/icons/simkl.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Simkl</title><path d="M3.84 0A3.832 3.832 0 0 0 0 3.84v16.32A3.832 3.832 0 0 0 3.84 24h16.32A3.832 3.832 0 0 0 24 20.16V3.84A3.832 3.832 0 0 0 20.16 0zm8.567 4.11c2.074 0 3.538.061 4.393.186 1.127.168 1.94.46 2.438.877.672.578 1.009 1.613 1.009 3.104 0 .161-.004.417-.01.768h-4.234c-.014-.358-.039-.607-.074-.746-.098-.41-.42-.64-.966-.692-.484-.043-1.66-.066-3.53-.066-1.85 0-2.946.056-3.289.165-.385.133-.578.474-.578 1.024 0 .528.203.851.61.969.343.095 1.887.187 4.633.275 2.487.073 4.073.165 4.76.275.693.11 1.244.275 1.654.495.41.22.737.532.983.936.37.595.557 1.552.557 2.873 0 1.475-.182 2.557-.546 3.247-.364.683-.96 1.149-1.785 1.398-.812.25-3.05.374-6.71.374-2.226 0-3.832-.062-4.82-.187-1.204-.147-2.068-.434-2.593-.86-.567-.456-.903-1.1-1.008-1.93a10.522 10.522 0 0 1-.085-1.434v-.789H7.44c-.007.74.136 1.216.43 1.428.154.102.33.167.525.203.196.037.54.063 1.03.077a166.2 166.2 0 0 0 2.405.022c1.862-.007 2.94-.018 3.234-.033.553-.044.917-.12 1.092-.23.245-.161.368-.52.368-1.077 0-.38-.078-.648-.231-.802-.211-.212-.712-.325-1.503-.34-.547 0-1.688-.044-3.425-.132-1.794-.088-2.956-.14-3.488-.154-1.387-.044-2.364-.212-2.932-.505-.728-.373-1.205-1.01-1.429-1.91-.126-.498-.189-1.15-.189-1.956 0-1.698.309-2.895.925-3.59.462-.527 1.163-.875 2.102-1.044.848-.146 2.865-.22 6.053-.22z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/simpleanalytics.svg b/assets/lib/simple-icons/icons/simpleanalytics.svg
new file mode 100644
index 00000000..ac84af50
--- /dev/null
+++ b/assets/lib/simple-icons/icons/simpleanalytics.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Simple Analytics</title><path d="M1.019 13.019h3.849V24h-3.85zm8.943-6.68h3.85V24h-3.85zM19.132 0h3.85v24h-3.85z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/simpleicons.svg b/assets/lib/simple-icons/icons/simpleicons.svg
index ec6667f8..1fa7e0fd 100644
--- a/assets/lib/simple-icons/icons/simpleicons.svg
+++ b/assets/lib/simple-icons/icons/simpleicons.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Simple Icons icon</title><path d="M12 12v-1.5c-2.484 0-4.5-2.016-4.5-4.5S9.516 1.5 12 1.5s4.5 2.016 4.5 4.5H18c0-3.312-2.688-6-6-6S6 2.688 6 6s2.688 6 6 6zM15.037 12.826c2.858 1.678 3.816 5.355 2.138 8.214h1.68c.423-.954.642-1.987.643-3.03.003-4.144-3.352-7.505-7.494-7.51V12c1.066 0 2.113.286 3.033.826zM12.003 10.5H12h.003M6.828 21.04C6.3 20.148 6 19.11 6 18v-.03H4.5V18c-.002 1.047.218 2.084.645 3.04h1.683zM15 22.5v-6h1.5V15h-9v1.5H9v6H4.5V24h15v-1.5H15zm-1.5 0h-3v-6h3v6zM9.078 5.922C9.035 7.58 10.343 8.957 12 9c1.597-.04 2.88-1.326 2.922-2.922C14.965 4.42 13.656 3.043 12 3c-1.597.04-2.88 1.326-2.922 2.922zm4.422.08c0 .828-.672 1.5-1.5 1.5-.83 0-1.5-.673-1.5-1.502 0-.83.67-1.5 1.5-1.5.828 0 1.5.672 1.5 1.5z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Simple Icons</title><path d="M12 0C8.688 0 6 2.688 6 6s2.688 6 6 6c1.066 0 2.1171.2862 3.0371.8262 2.858 1.678 3.8167 5.3539 2.1387 8.2129h1.6797a7.4925 7.4925 0 0 0 .6425-3.0293c.003-4.144-3.356-7.5048-7.498-7.5098-2.484 0-4.5-2.016-4.5-4.5S9.516 1.5 12 1.5s4.5 2.016 4.5 4.5H18c0-3.312-2.688-6-6-6zm0 3c-1.597.04-2.8799 1.3259-2.9219 2.9219C9.0351 7.5799 10.343 8.957 12 9c1.597-.04 2.8799-1.3259 2.9219-2.9219C14.9649 4.4201 13.656 3.043 12 3zm0 1.5c.828 0 1.5.672 1.5 1.5v.002c0 .828-.672 1.5-1.5 1.5-.83 0-1.5-.673-1.5-1.502 0-.83.67-1.5 1.5-1.5zM7.5 15v1.5H9v6H4.5V24h15v-1.5H15v-6h1.5V15h-9zm3 1.5h3v6h-3v-6zm-6 1.4707V18a7.418 7.418 0 0 0 .6445 3.039h1.6836C6.3001 20.147 6 19.11 6 18v-.0293H4.5Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/simplenote.svg b/assets/lib/simple-icons/icons/simplenote.svg
new file mode 100644
index 00000000..a9898869
--- /dev/null
+++ b/assets/lib/simple-icons/icons/simplenote.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Simplenote</title><path d="M3.466 3.62c-.004.052-.014.104-.018.158-.406 4.626 2.747 8.548 8.03 9.994 2.024.553 5.374 2.018 5.06 5.599a5.063 5.063 0 0 1-1.803 3.46c-1.022.857-2.308 1.21-3.64 1.166C5.147 23.794 0 18.367 0 12.05c0-3.285 1.325-6.262 3.467-8.428zM9.82 1.032c.907-.762 2.056-1.078 3.235-1.027C18.996.27 24 5.67 24 11.936c0 2.855-1.001 5.478-2.667 7.536.332-4.908-2.94-8.897-8.59-10.441-2.337-.64-4.749-2.274-4.514-4.948A4.467 4.467 0 0 1 9.82 1.03z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/sinaweibo.svg b/assets/lib/simple-icons/icons/sinaweibo.svg
index 0a04c706..cd789f5a 100644
--- a/assets/lib/simple-icons/icons/sinaweibo.svg
+++ b/assets/lib/simple-icons/icons/sinaweibo.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Sina Weibo icon</title><path d="M10.098 20.323c-3.977.391-7.414-1.406-7.672-4.02-.259-2.609 2.759-5.047 6.74-5.441 3.979-.394 7.413 1.404 7.671 4.018.259 2.6-2.759 5.049-6.737 5.439l-.002.004zM9.05 17.219c-.384.616-1.208.884-1.829.602-.612-.279-.793-.991-.406-1.593.379-.595 1.176-.861 1.793-.601.622.263.82.972.442 1.592zm1.27-1.627c-.141.237-.449.353-.689.253-.236-.09-.313-.361-.177-.586.138-.227.436-.346.672-.24.239.09.315.36.18.601l.014-.028zm.176-2.719c-1.893-.493-4.033.45-4.857 2.118-.836 1.704-.026 3.591 1.886 4.21 1.983.64 4.318-.341 5.132-2.179.8-1.793-.201-3.642-2.161-4.149zm7.563-1.224c-.346-.105-.57-.18-.405-.615.375-.977.42-1.804 0-2.404-.781-1.112-2.915-1.053-5.364-.03 0 0-.766.331-.571-.271.376-1.217.315-2.224-.27-2.809-1.338-1.337-4.869.045-7.888 3.08C1.309 10.87 0 13.273 0 15.348c0 3.981 5.099 6.395 10.086 6.395 6.536 0 10.888-3.801 10.888-6.82 0-1.822-1.547-2.854-2.915-3.284v.01zm1.908-5.092c-.766-.856-1.908-1.187-2.96-.962-.436.09-.706.511-.616.932.09.42.511.691.932.602.511-.105 1.067.044 1.442.465.376.421.466.977.316 1.473-.136.406.089.856.51.992.405.119.857-.105.992-.512.33-1.021.12-2.178-.646-3.035l.03.045zm2.418-2.195c-1.576-1.757-3.905-2.419-6.054-1.968-.496.104-.812.587-.706 1.081.104.496.586.813 1.082.707 1.532-.331 3.185.15 4.296 1.383 1.112 1.246 1.429 2.943.947 4.416-.165.48.106 1.007.586 1.157.479.165.991-.104 1.157-.586.675-2.088.241-4.478-1.338-6.235l.03.045z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Sina Weibo</title><path d="M10.098 20.323c-3.977.391-7.414-1.406-7.672-4.02-.259-2.609 2.759-5.047 6.74-5.441 3.979-.394 7.413 1.404 7.671 4.018.259 2.6-2.759 5.049-6.737 5.439l-.002.004zM9.05 17.219c-.384.616-1.208.884-1.829.602-.612-.279-.793-.991-.406-1.593.379-.595 1.176-.861 1.793-.601.622.263.82.972.442 1.592zm1.27-1.627c-.141.237-.449.353-.689.253-.236-.09-.313-.361-.177-.586.138-.227.436-.346.672-.24.239.09.315.36.18.601l.014-.028zm.176-2.719c-1.893-.493-4.033.45-4.857 2.118-.836 1.704-.026 3.591 1.886 4.21 1.983.64 4.318-.341 5.132-2.179.8-1.793-.201-3.642-2.161-4.149zm7.563-1.224c-.346-.105-.57-.18-.405-.615.375-.977.42-1.804 0-2.404-.781-1.112-2.915-1.053-5.364-.03 0 0-.766.331-.571-.271.376-1.217.315-2.224-.27-2.809-1.338-1.337-4.869.045-7.888 3.08C1.309 10.87 0 13.273 0 15.348c0 3.981 5.099 6.395 10.086 6.395 6.536 0 10.888-3.801 10.888-6.82 0-1.822-1.547-2.854-2.915-3.284v.01zm1.908-5.092c-.766-.856-1.908-1.187-2.96-.962-.436.09-.706.511-.616.932.09.42.511.691.932.602.511-.105 1.067.044 1.442.465.376.421.466.977.316 1.473-.136.406.089.856.51.992.405.119.857-.105.992-.512.33-1.021.12-2.178-.646-3.035l.03.045zm2.418-2.195c-1.576-1.757-3.905-2.419-6.054-1.968-.496.104-.812.587-.706 1.081.104.496.586.813 1.082.707 1.532-.331 3.185.15 4.296 1.383 1.112 1.246 1.429 2.943.947 4.416-.165.48.106 1.007.586 1.157.479.165.991-.104 1.157-.586.675-2.088.241-4.478-1.338-6.235l.03.045z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/singlestore.svg b/assets/lib/simple-icons/icons/singlestore.svg
new file mode 100644
index 00000000..2d075d2a
--- /dev/null
+++ b/assets/lib/simple-icons/icons/singlestore.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>SingleStore</title><path d="M17.029 5.063c-.914-1.916-2.8-3.432-5.114-4.033C11.4.887 10.858.83 10.258.8c-.886 0-1.743.114-2.629.343-2.2.658-3.742 1.945-4.657 2.947C1.801 5.435 1.03 6.837.572 8.238c0 .029-.028.057-.028.115C.515 8.467.4 8.81.4 8.896c-.029.057-.029.143-.057.2l-.086.344c0 .028 0 .057-.028.086-.743 3.69.49 7.001 1.234 8.231.185.308.338.564.49.8C.27 9.403 5.116 5.035 10.63 4.92c2.886-.057 5.771 1.116 7.171 3.461-.086-1.287-.171-2.002-.771-3.318zM12.543 0c2.572.715 4.914 2.517 5.886 4.72 1.485 3.575 1.143 8.095-.486 10.784-1.371 2.203-3.485 3.375-5.914 3.347-3.771-.029-6.828-3.032-6.857-6.808 0-3.776 2.971-6.894 6.857-6.894.629 0 1.535.087 2.563.516 0 0-.739-.438-2.638-.732C6.497 4.218.058 8.353 1.544 17.878c2.057 3.662 6 6.15 10.485 6.122 6.6-.029 12-5.435 11.97-12.072C24 5.578 18.83.172 12.544 0z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/sitepoint.svg b/assets/lib/simple-icons/icons/sitepoint.svg
index ae222a9c..fc88f357 100644
--- a/assets/lib/simple-icons/icons/sitepoint.svg
+++ b/assets/lib/simple-icons/icons/sitepoint.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>SitePoint icon</title><path d="M2.471 10.533l1.771 1.688 5.598 5.141 2.4-2.291c.21-.297.194-.705-.046-.985L9.99 12.184l.01-.005-2.371-2.266c-.279-.314-.27-.78.021-1.079l6.39-6.076L11.146 0 2.475 8.238c-.664.633-.664 1.66 0 2.295h-.004zm19.056 2.937l-1.77-1.691-5.595-5.142-2.411 2.291c-.221.3-.207.705.045.985l2.205 1.891h-.006l2.369 2.265c.27.314.27.766-.029 1.064l-6.391 6.075L12.855 24l8.67-8.238c.664-.633.666-1.659 0-2.295l.002.003z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>SitePoint</title><path d="M2.471 10.533l1.771 1.688 5.598 5.141 2.4-2.291c.21-.297.194-.705-.046-.985L9.99 12.184l.01-.005-2.371-2.266c-.279-.314-.27-.78.021-1.079l6.39-6.076L11.146 0 2.475 8.238c-.664.633-.664 1.66 0 2.295h-.004zm19.056 2.937l-1.77-1.691-5.595-5.142-2.411 2.291c-.221.3-.207.705.045.985l2.205 1.891h-.006l2.369 2.265c.27.314.27.766-.029 1.064l-6.391 6.075L12.855 24l8.67-8.238c.664-.633.666-1.659 0-2.295l.002.003z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/sketch.svg b/assets/lib/simple-icons/icons/sketch.svg
index 2080efdb..5b688812 100644
--- a/assets/lib/simple-icons/icons/sketch.svg
+++ b/assets/lib/simple-icons/icons/sketch.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Sketch icon</title><path d="M12 1.25l6.75 6.637V2L12 1.25zm0 0l-6.05 7h12.1l-6.05-7zm0 0L5.25 2v5.887L12 1.25zM5.25 2L0 9l4.416-.68L5.25 2zM0 9l11.959 13.703.008-.014L4.443 9H0zm18.75-7l.834 6.32L24 9l-5.25-7zM24 9h-4.506l-7.523 13.69.029.06L24 9zM12 22.75l-.031-.057-.008.012.039.045zM5.436 9l6.533 13.686L18.564 9H5.436Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Sketch</title><path d="M12 1.25l6.75 6.637V2L12 1.25zm0 0l-6.05 7h12.1l-6.05-7zm0 0L5.25 2v5.887L12 1.25zM5.25 2L0 9l4.416-.68L5.25 2zM0 9l11.959 13.703.008-.014L4.443 9H0zm18.75-7l.834 6.32L24 9l-5.25-7zM24 9h-4.506l-7.523 13.69.029.06L24 9zM12 22.75l-.031-.057-.008.012.039.045zM5.436 9l6.533 13.686L18.564 9H5.436Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/sketchfab.svg b/assets/lib/simple-icons/icons/sketchfab.svg
new file mode 100644
index 00000000..be91a1ab
--- /dev/null
+++ b/assets/lib/simple-icons/icons/sketchfab.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Sketchfab</title><path d="M11.3 0A11.983 11.983 0 0 0 .037 11a13.656 13.656 0 0 0 0 2 11.983 11.983 0 0 0 11.29 11h1.346a12.045 12.045 0 0 0 11.3-11.36 13.836 13.836 0 0 0 0-1.7A12.049 12.049 0 0 0 12.674 0zM15 6.51l2.99 1.74s-6.064 3.24-6.084 3.24S5.812 8.27 5.8 8.26l2.994-1.77 2.992-1.76zm-6.476 5.126L11 13v5.92l-2.527-1.4-2.46-1.43v-5.76zm9.461 1.572v2.924L15.5 17.574 13 19.017v-6.024l2.489-1.345 2.5-1.355z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/sketchup.svg b/assets/lib/simple-icons/icons/sketchup.svg
new file mode 100644
index 00000000..35b1472d
--- /dev/null
+++ b/assets/lib/simple-icons/icons/sketchup.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>SketchUp</title><path d="M.968 9.027l7.717 4.428-.006 1.32-4.39-2.518-2.763 1.57 7.148 4.12.005 1.27-7.658-4.405c.02.516.488 2.106 1.383 3.337.91 1.247 1.946 1.776 1.946 1.776L11.428 24V11.849L.975 5.846zm22.064-3.8L15.22.723S13.982 0 12.008 0C9.952 0 8.76.746 8.76.746l-7.236 4.14 11.009 6.328V24l7.245-4.136s1.295-.715 2.279-2.414c.867-1.496.975-2.943.975-2.943zM11.251 7.308s1.615-.298 2.98.49l2.171 1.25s.003 1.097.003 2.736c0 1.313-1.112 2.674-1.112 2.674l.002-4.816zm6.402 10.562l-2.358 1.353v-1.269l1.835-1.05c1.748-1.26 2.037-3.117 2.037-3.761l-.007-5.705-5.006-2.881s-.76-.499-2.129-.499c-1.367 0-2.113.461-2.113.461L8.154 5.53l-1.11-.641L9.473 3.5s.95-.527 2.544-.527c1.462 0 2.6.571 2.6.571L20.27 6.81l-.007 6.226c.04.957-.406 3.296-2.61 4.835z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/skillshare.svg b/assets/lib/simple-icons/icons/skillshare.svg
index 496d22d1..4783b5bf 100644
--- a/assets/lib/simple-icons/icons/skillshare.svg
+++ b/assets/lib/simple-icons/icons/skillshare.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Skillshare icon</title><path d="M10.542 23.91c-2.14-.278-4.344-1.196-5.95-2.48C.98 18.545-.662 13.994.276 9.468c.405-1.952 1.45-4.008 2.79-5.487a11.637 11.637 0 0 1 3.509-2.688C8.338.398 10.027-.005 12.019-.005c1.432 0 2.579.187 3.897.636a12.012 12.012 0 0 1 7.458 7.458c.703 2.065.834 4.26.383 6.435-.357 1.72-1.283 3.65-2.425 5.05-.47.577-1.545 1.608-2.113 2.028a12.203 12.203 0 0 1-5.782 2.31c-.615.076-2.298.074-2.895-.003zm3.27-1.004a11.17 11.17 0 0 0 7.254-4.533c2.027-2.851 2.571-6.67 1.425-10.001-.27-.784-.937-2.086-1.424-2.775-.544-.77-1.888-2.115-2.659-2.66-.75-.529-2.031-1.174-2.902-1.462a11.065 11.065 0 0 0-9.498 1.212 11.498 11.498 0 0 0-3.29 3.288 11.068 11.068 0 0 0-1.21 9.498c.287.871.933 2.152 1.462 2.902.545.771 1.889 2.116 2.66 2.66.689.486 1.99 1.154 2.774 1.424 1.725.593 3.573.746 5.409.447zm-4.155-4.023a4.223 4.223 0 0 1-1.584-.58c-.431-.277-3.706-3.482-3.866-3.784-.182-.345.137-.97.594-1.16l.215-.09-.66-.673c-.363-.37-.707-.763-.763-.874-.128-.25-.134-.784-.011-1.022.05-.098.17-.245.267-.327.16-.136.174-.18.157-.516-.016-.3.01-.415.14-.639.187-.318.574-.536.953-.537.208 0 .265-.03.353-.185.234-.41.908-.558 1.42-.31l.276.133.139-.13c.186-.175.56-.326.807-.326.492 0 1.187.566 1.187.966 0 .475-.434.557-.862.163-.288-.265-.43-.293-.547-.107-.058.092.08.258.922 1.106.838.843.99 1.026.99 1.186a.49.49 0 0 1-.473.463c-.152 0-.402-.22-1.554-1.368-1.174-1.17-1.39-1.358-1.483-1.3-.253.16-.168.277 1.207 1.656.747.75 1.36 1.415 1.36 1.476 0 .132-.117.367-.215.432a.61.61 0 0 1-.255.047c-.16.001-.406-.218-1.716-1.524s-1.546-1.516-1.64-1.457c-.256.162-.172.275 1.326 1.78.814.817 1.498 1.548 1.52 1.625.042.14-.052.388-.179.473a.622.622 0 0 1-.259.048c-.163 0-.365-.176-1.448-1.26-1.04-1.042-1.285-1.258-1.415-1.244-.377.043-.244.212 1.693 2.153 1.679 1.682 1.895 1.921 1.895 2.096 0 .139-.05.237-.166.328-.302.238-.42.183-1.177-.55-.387-.373-.787-.732-.89-.796-.191-.12-.675-.169-.767-.076-.03.029.685.782 1.586 1.675 1.503 1.488 1.678 1.641 2.119 1.853.85.41 1.768.413 2.619.008 1.263-.6 1.962-2.064 1.618-3.388-.172-.659-.386-.977-1.256-1.869-1-1.025-1.23-1.306-1.474-1.797-.273-.55-.393-1.085-.393-1.756 0-.721.076-1.05.396-1.724.306-.646.94-1.32 1.57-1.67 1.236-.685 2.86-.628 4.04.142.235.153 1.082.949 2.136 2.006 1.567 1.572 1.747 1.773 1.747 1.956 0 .425-.348.898-.733.994-.148.038-.118.08.538.745.383.387.739.808.791.934.186.443.104.874-.232 1.222-.174.18-.195.244-.2.603-.006.317-.04.448-.163.629-.206.3-.547.486-.891.487-.242 0-.291.026-.41.21-.273.421-.986.568-1.446.297l-.23-.137-.165.157c-.365.348-.95.395-1.396.112-.359-.228-.625-.543-.625-.742 0-.175.256-.464.41-.464.148 0 .35.115.575.328.227.214.421.213.452-.005.017-.117-.17-.34-.928-1.103-.797-.803-.95-.986-.949-1.143a.61.61 0 0 1 .048-.255c.084-.127.325-.218.474-.18.081.02.74.63 1.464 1.354.725.725 1.363 1.318 1.42 1.318.161 0 .264-.16.19-.295-.035-.062-.646-.694-1.358-1.404-1.115-1.11-1.294-1.316-1.293-1.479a.61.61 0 0 1 .047-.259c.065-.097.3-.214.432-.214.062 0 .795.682 1.633 1.517 1.539 1.534 1.652 1.62 1.813 1.364.06-.094-.15-.33-1.456-1.64-1.349-1.352-1.526-1.553-1.526-1.729 0-.124.052-.248.138-.327.288-.269.371-.213 1.758 1.167 1.313 1.308 1.432 1.394 1.59 1.145.058-.094-.207-.386-1.835-2.019-1.774-1.78-1.903-1.925-1.903-2.132 0-.31.18-.46.527-.437.064.004.437.319.827.7.39.38.81.735.935.787.245.102.53.12.654.042.117-.075-3.127-3.267-3.546-3.489a3.012 3.012 0 0 0-4.163 1.383c-.201.434-.23.56-.255 1.12-.024.527-.006.693.107 1.027.202.597.381.843 1.29 1.773.984 1.008 1.172 1.241 1.423 1.778.702 1.501.404 3.233-.756 4.392-.884.884-2.084 1.3-3.276 1.136z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Skillshare</title><path d="M9.783 6.056a.768.768 0 0 0-.773.764c0 .421.346.763.773.763a.768.768 0 0 0 .772-.763.768.768 0 0 0-.772-.764zM1.895 8.1C.821 8.1.111 8.622.111 9.413c0 .634.381 1.06 1.048 1.225l.836.21c.248.078.348.2.347.39 0 .21-.21.327-.424.337-.31.014-.537-.154-.554-.422H0c.02.8.802 1.362 1.974 1.362 1.108 0 1.827-.513 1.827-1.382 0-.634-.399-1.034-1.057-1.208l-.81-.224c-.274-.081-.369-.202-.369-.372 0-.185.146-.294.335-.316.274-.032.486.087.486.382v.02H3.78v-.02h-.001c0-.834-.706-1.294-1.884-1.294zm2.485.116v4.19h1.318v-1.821l1.274 1.82h1.62l-1.629-2.201 1.604-1.977h-1.56l-1.309 1.76v-1.77zm4.744 0v4.19h1.318v-4.19zm2.084 0v4.191h3.218v-1.244h-1.892V8.217zm3.937 0v4.191h3.218v-1.244h-1.892V8.217zm-13.25 5.308c-1.074 0-1.784.522-1.784 1.312 0 .635.381 1.06 1.048 1.225l.836.21c.248.078.348.2.347.39 0 .21-.21.328-.424.338-.31.014-.537-.155-.554-.423H0c.02.8.802 1.362 1.974 1.362 1.108 0 1.827-.512 1.827-1.382 0-.634-.399-1.034-1.057-1.207l-.81-.225c-.274-.081-.369-.201-.369-.371 0-.186.146-.295.335-.317.274-.032.486.087.486.383v.019H3.78v-.02h-.001c0-.834-.706-1.294-1.884-1.294zm9.19.015c-1.215 0-1.986.953-1.986 2.202 0 1.257.72 2.202 1.968 2.201.58 0 1.1-.286 1.326-.702v.59h1.318v-4.179h-1.318v.599c-.225-.425-.702-.711-1.309-.711zm8.751 0c-1.36 0-2.253.832-2.253 2.202 0 1.396.875 2.202 2.296 2.202 1.11 0 1.951-.546 2.08-1.37h-1.3c-.113.26-.373.373-.78.373-.59 0-.954-.295-.98-.841h3.087c.026-.234.035-.364.035-.581 0-1.179-.884-1.985-2.185-1.985zm-2.87.043c-.51 0-1.005.32-1.152.945v-.876h-1.327v4.179h1.327v-1.613c0-.927.382-1.395 1.1-1.395a2.8 2.8 0 0 1 .393.025l.007-1.23a1.28 1.28 0 0 0-.347-.035zM4.38 13.65v4.191h1.3v-1.485h1.59v1.485h1.3V13.65h-1.3v1.505H5.68V13.65zm15.448.781c.564 0 .876.295.885.85H18.9c.008-.511.356-.85.927-.85zm-8.38.217c.66 0 .997.494.997 1.093 0 .607-.337 1.1-.997 1.1-.616 0-.997-.468-.997-1.1 0-.634.382-1.093.997-1.093zm11.78 1.741a.768.768 0 0 0-.772.764c0 .422.345.764.772.764a.768.768 0 0 0 .772-.764.768.768 0 0 0-.772-.764z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/skoda.svg b/assets/lib/simple-icons/icons/skoda.svg
index c2642b4a..6b36aa18 100644
--- a/assets/lib/simple-icons/icons/skoda.svg
+++ b/assets/lib/simple-icons/icons/skoda.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ŠKODA icon</title><path d="M11.9587 0C5.332.023-.0228 5.4147.0001 12.0416.0229 18.6685 5.4146 24.0229 12.0415 24c6.6268-.0228 11.9813-5.4143 11.9584-12.0412C23.9771 5.332 18.5856-.0228 11.9587.0001zm.0415 2.1343c2.6354 0 5.1128 1.0264 6.9761 2.8896C20.84 6.8873 21.8661 9.3647 21.8661 12c0 2.635-1.0262 5.1125-2.8898 6.9759-1.8633 1.8632-4.3407 2.8894-6.976 2.8894-2.6355 0-5.113-1.0262-6.9764-2.8894C3.1603 17.1125 2.1341 14.635 2.1341 12c0-2.6353 1.0262-5.1127 2.8898-6.9761 1.8633-1.8632 4.341-2.8896 6.9763-2.8896zm.1142 1.1936a8.7615 8.7615 0 0 0-2.523.3687h-.0002c-.079.0239-.1383.0563-.18.097-.0415.0405-.0642.0902-.0677.1406-.007.1009.0547.1973.143.2733h.0001c.7772.6649 1.8207 1.6606 2.5574 2.8952-.413.0084-.739-.2201-1.0197-.4892h-.0002c-.9956-.9475-2.0316-1.6227-2.8543-2.0848-.1488-.0832-.3106-.1218-.467-.032l-.0002.0002c-.9073.5276-1.5223 1.0269-2.2427 1.8623-.0675.0784-.0848.1612-.06.2292.0249.068.0834.1165.1487.1512.7708.4087 1.9748 1.1835 3.086 2.1856-.0976.063-.2136.0912-.3677.0694-.1777-.0252-.3974-.1082-.6588-.2452h-.0002c-1.0182-.535-1.9967-.8426-2.7428-1.0347-.1735-.0445-.3665.0051-.4594.1663-.4796.8333-.8098 1.828-.966 2.837v.0003c-.033.215.1155.4078.3286.445.8651.1514 2.0661.4305 3.1122 1.1123 1.046.6818 1.9382 1.7635 2.1934 3.533.02.1418-.0343.2725-.1335.3483-.0994.076-.2443.1003-.4196.018-.5214-.2443-1.0423-.488-1.5631-.7324v-.0002h-.0002c-.0574-.0265-.1244-.0508-.1945-.0508H4.3061c-.1881 0-.3296.0926-.388.2247-.0582.1321-.0322.2995.0902.4397.5892.6785 1.1295 1.4106 1.5915 2.1862.0457.077.115.116.2045.116h1.0725a.42.42 0 0 0 .2201-.0601c.337-.1977.674-.3948 1.0119-.5923h.0002l.0002-.0002c.0518-.031.103-.0306.1764-.0306h8.0845c.0452 0 .0842.0146.1111.0382.027.0235.0432.0552.0432.0981v.3978c0 .17.1533.3002.321.2742h.0002a5.0752 5.0752 0 0 0 2.6729-1.3127.3163.3163 0 0 0 0-.462 5.0725 5.0725 0 0 0-2.673-1.313h-.0001c-.1678-.026-.321.1046-.321.2745v.3637c0 .0433-.0179.0933-.0462.1298-.0284.0366-.0644.0586-.1027.0586-.0794 0-.1576.002-.2352 0h-.0006c-.1224-.002-.187-.072-.2237-.173-.0367-.1009-.0357-.2311-.0102-.323.5962-2.138.7426-3.4376.7356-4.3853-.0074-1.003-.033-2.009-.4867-3.337-.435-1.2713-.8395-2.5304-2.9465-4.4383-.1484-.1335-.3048-.2013-.5048-.2158a7.9719 7.9719 0 0 0-.589-.0218zm1.5278 9.7045c.6249 0 1.1322.5073 1.1322 1.1322 0 .6236-.5073 1.1312-1.1322 1.1312-.6246 0-1.1308-.5076-1.1308-1.1312 0-.6248.5063-1.1322 1.1308-1.1322z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>&#352;KODA</title><path d="M11.9587 0C5.332.023-.0228 5.4147.0001 12.0416.0229 18.6685 5.4146 24.0229 12.0415 24c6.6268-.0228 11.9813-5.4143 11.9584-12.0412C23.9771 5.332 18.5856-.0228 11.9587.0001zm.0415 2.1343c2.6354 0 5.1128 1.0264 6.9761 2.8896C20.84 6.8873 21.8661 9.3647 21.8661 12c0 2.635-1.0262 5.1125-2.8898 6.9759-1.8633 1.8632-4.3407 2.8894-6.976 2.8894-2.6355 0-5.113-1.0262-6.9764-2.8894C3.1603 17.1125 2.1341 14.635 2.1341 12c0-2.6353 1.0262-5.1127 2.8898-6.9761 1.8633-1.8632 4.341-2.8896 6.9763-2.8896zm.1142 1.1936a8.7615 8.7615 0 0 0-2.523.3687h-.0002c-.079.0239-.1383.0563-.18.097-.0415.0405-.0642.0902-.0677.1406-.007.1009.0547.1973.143.2733h.0001c.7772.6649 1.8207 1.6606 2.5574 2.8952-.413.0084-.739-.2201-1.0197-.4892h-.0002c-.9956-.9475-2.0316-1.6227-2.8543-2.0848-.1488-.0832-.3106-.1218-.467-.032l-.0002.0002c-.9073.5276-1.5223 1.0269-2.2427 1.8623-.0675.0784-.0848.1612-.06.2292.0249.068.0834.1165.1487.1512.7708.4087 1.9748 1.1835 3.086 2.1856-.0976.063-.2136.0912-.3677.0694-.1777-.0252-.3974-.1082-.6588-.2452h-.0002c-1.0182-.535-1.9967-.8426-2.7428-1.0347-.1735-.0445-.3665.0051-.4594.1663-.4796.8333-.8098 1.828-.966 2.837v.0003c-.033.215.1155.4078.3286.445.8651.1514 2.0661.4305 3.1122 1.1123 1.046.6818 1.9382 1.7635 2.1934 3.533.02.1418-.0343.2725-.1335.3483-.0994.076-.2443.1003-.4196.018-.5214-.2443-1.0423-.488-1.5631-.7324v-.0002h-.0002c-.0574-.0265-.1244-.0508-.1945-.0508H4.3061c-.1881 0-.3296.0926-.388.2247-.0582.1321-.0322.2995.0902.4397.5892.6785 1.1295 1.4106 1.5915 2.1862.0457.077.115.116.2045.116h1.0725a.42.42 0 0 0 .2201-.0601c.337-.1977.674-.3948 1.0119-.5923h.0002l.0002-.0002c.0518-.031.103-.0306.1764-.0306h8.0845c.0452 0 .0842.0146.1111.0382.027.0235.0432.0552.0432.0981v.3978c0 .17.1533.3002.321.2742h.0002a5.0752 5.0752 0 0 0 2.6729-1.3127.3163.3163 0 0 0 0-.462 5.0725 5.0725 0 0 0-2.673-1.313h-.0001c-.1678-.026-.321.1046-.321.2745v.3637c0 .0433-.0179.0933-.0462.1298-.0284.0366-.0644.0586-.1027.0586-.0794 0-.1576.002-.2352 0h-.0006c-.1224-.002-.187-.072-.2237-.173-.0367-.1009-.0357-.2311-.0102-.323.5962-2.138.7426-3.4376.7356-4.3853-.0074-1.003-.033-2.009-.4867-3.337-.435-1.2713-.8395-2.5304-2.9465-4.4383-.1484-.1335-.3048-.2013-.5048-.2158a7.9719 7.9719 0 0 0-.589-.0218zm1.5278 9.7045c.6249 0 1.1322.5073 1.1322 1.1322 0 .6236-.5073 1.1312-1.1322 1.1312-.6246 0-1.1308-.5076-1.1308-1.1312 0-.6248.5063-1.1322 1.1308-1.1322z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/sky.svg b/assets/lib/simple-icons/icons/sky.svg
new file mode 100644
index 00000000..8a30b2d3
--- /dev/null
+++ b/assets/lib/simple-icons/icons/sky.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Sky</title><path d="M7.387 13.656c0 1.423-.933 2.454-2.823 2.675-1.35.147-3.337-.025-4.294-.148-.025-.147-.074-.343-.074-.49 0-1.252.663-1.522 1.3-1.522.664 0 1.694.123 2.455.123.834 0 1.104-.295 1.104-.565 0-.368-.343-.515-1.006-.638l-1.767-.343C.785 12.453 0 11.423 0 10.343c0-1.325.933-2.454 2.798-2.65 1.398-.148 3.116.024 4.049.122.024.172.049.32.049.491 0 1.252-.663 1.522-1.276 1.522-.491 0-1.227-.099-2.086-.099-.884 0-1.227.246-1.227.54 0 .32.343.442.883.54l1.718.32c1.742.294 2.479 1.3 2.479 2.527m3.092 1.521c0 .761-.295 1.203-1.792 1.203-.196 0-.368-.025-.54-.05V6.22c0-.76.27-1.57 1.767-1.57.196 0 .393.024.565.049zm6.085 3.927c.197.098.59.22 1.105.245.859.025 1.325-.319 1.693-1.08L24 7.913a2.5 2.5 0 0 0-.957-.22c-.589 0-1.399.122-1.914 1.325l-1.497 3.534-2.945-4.81c-.196-.05-.662-.148-1.006-.148-1.03 0-1.62.393-2.233 1.031l-2.871 3.141 2.306 3.632c.418.663.982 1.006 1.89 1.006.589 0 1.104-.147 1.325-.245l-2.773-4.196 1.963-2.086 3.24 5.08Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/skyliner.svg b/assets/lib/simple-icons/icons/skyliner.svg
deleted file mode 100644
index 899e7099..00000000
--- a/assets/lib/simple-icons/icons/skyliner.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Skyliner icon</title><path d="M7.961 17.563c-.182-.037-.366.044-.461.203-.475 1.02-1.576 1.592-2.684 1.395-.203-1.108.373-2.213 1.397-2.681.204-.125.271-.392.146-.597-.067-.111-.182-.188-.311-.205-1.577-.297-3.193.262-4.252 1.469C.545 18.865.074 21.03.5 23.113c.031.185.175.329.359.359.498.081 1.002.12 1.508.12 1.834.102 3.625-.581 4.931-1.873.89-1.054 1.259-2.452 1.007-3.808-.021-.187-.161-.337-.345-.375l.001.027zM23.778.203c-.171-.169-.522-.089-.522-.089C22.621.04 21.98.003 21.339.001c-4.154-.043-8.153 1.576-11.106 4.497-.36.362-.7.742-1.02 1.139-1.402-.65-3.008-.709-4.455-.165-2.287.984-3.623 3.787-4.729 6.671-.087.224.025.476.249.562.144.055.304.031.425-.064 1.566-1.163 3.618-1.445 5.44-.749L5.6 13.856c-.05.184.026.377.187.479 1.466 1.096 2.767 2.395 3.863 3.857.103.163.298.239.482.188l1.963-.539c.719 1.826.436 3.893-.749 5.456-.148.188-.116.463.071.61.121.096.285.12.428.064 2.883-1.109 5.686-2.443 6.665-4.722.544-1.446.487-3.049-.161-4.451.395-.326.772-.672 1.133-1.036 3.381-3.44 5-8.241 4.392-13.026 0 0 .076-.352-.096-.524V.203zM21.339.87c.563 0 1.127.029 1.688.088.079.771.103 1.548.07 2.322-.611-.066-1.184-.34-1.623-.771-.438-.437-.713-1.009-.777-1.623.209-.011.422-.018.636-.018l.006.002zM10.846 5.112C13.262 2.716 16.438 1.24 19.828.94c.07.677.33 1.318.749 1.855l-2.698 2.697c-1.529-1.203-3.742-.939-4.946.59-1.005 1.278-1.005 3.078 0 4.356l-3.147 3.147c-.811-.785-1.689-1.498-2.626-2.131.662-2.394 1.932-4.58 3.686-6.342zm7.524 3.159c.001 1.469-1.188 2.66-2.657 2.66-1.469.002-2.659-1.188-2.66-2.656 0-1.47 1.189-2.66 2.657-2.661h.003c1.467 0 2.656 1.19 2.657 2.657zM1.314 11.269c.941-2.254 2.09-4.268 3.779-4.994 1.154-.428 2.428-.396 3.559.09C7.639 7.78 6.871 9.36 6.387 11.033c-1.645-.667-3.498-.581-5.074.233l.001.003zm8.891 6.19c-1.074-1.37-2.311-2.604-3.683-3.677l.395-1.434c1.845 1.275 3.444 2.874 4.722 4.718l-1.434.393zm7.508 1.425c-.727 1.698-2.737 2.848-4.989 3.789.811-1.578.893-3.432.225-5.074 1.677-.488 3.259-1.26 4.679-2.278.484 1.134.515 2.412.083 3.566l.002-.003zm-5.186-2.06c-.629-.937-1.34-1.816-2.123-2.628l3.147-3.148c1.528 1.203 3.743.939 4.945-.59 1.006-1.278 1.006-3.078 0-4.356l2.698-2.698c.535.418 1.177.677 1.85.75-.299 3.387-1.772 6.563-4.166 8.979-1.763 1.754-3.947 3.022-6.343 3.684l-.008.007z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/skynet.svg b/assets/lib/simple-icons/icons/skynet.svg
new file mode 100644
index 00000000..de95a2c7
--- /dev/null
+++ b/assets/lib/simple-icons/icons/skynet.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Skynet</title><path d="m-.0004 6.4602 21.3893 11.297c.561.2935.6633 1.0532.1999 1.4846h-.011a10.0399 10.0399 0 0 1-2.2335 1.5307c-6.912 3.4734-14.9917-1.838-14.5438-9.5605l2.8601 1.9752c.856 4.508 5.6187 7.1094 9.8742 5.3932zm8.6477 3.1509 14.3661 5.6785a.8704.8704 0 0 1 .5197 1.0466v.0182c-.1537.5377-.7668.7938-1.2575.5252zm5.2896-7.4375c2.7093-.2325 6.0946.7869 8.1116 3.3871 1.699 2.1951 2.0497 4.8772 1.9298 7.6465v-.007c-.0478.5874-.6494.9616-1.1975.745l-9.7652-3.8596 9.0656 2.4313a7.296 7.296 0 0 0-1.0677-4.5631c-2.9683-4.7678-9.9847-4.5344-12.6297.4201a7.5048 7.5048 0 0 0-.398.8831L5.5546 7.9614c.069-.1017.1417-.198.2144-.2962.1163-.2416.2417-.487.3798-.7268 1.6118-2.7911 4.3102-4.4338 7.1558-4.6973.2108-.0182.4215-.049.6323-.0672z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/skypack.svg b/assets/lib/simple-icons/icons/skypack.svg
new file mode 100644
index 00000000..bb8e7649
--- /dev/null
+++ b/assets/lib/simple-icons/icons/skypack.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Skypack</title><path d="m19.82 11.27-5.997-2.994 5.999-2.993c.28-.14.453-.42.453-.734a.815.815 0 0 0-.454-.735L12.366.087a.814.814 0 0 0-.733 0L4.178 3.814a.815.815 0 0 0-.453.735v7.454c0 .28.15.548.384.699l.07.034 5.998 2.994-5.999 2.993a.815.815 0 0 0-.453.734c0 .314.174.594.453.735l7.455 3.727a.814.814 0 0 0 .361.081.814.814 0 0 0 .361-.081l7.454-3.727c.28-.14.455-.42.455-.735v-7.454a.785.785 0 0 0-.443-.733zm-7.814-9.54 5.625 2.819-5.625 2.818L6.38 4.55zm-6.64 4.135 4.811 2.41-4.81 2.412zm1.014 6.138 5.626-2.819 5.625 2.82-5.625 2.818zm4.81 5.044v4.81l-4.81-2.41zm7.455 1.91-5.824 2.911v-5.625l5.824-2.912v5.625z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/skype.svg b/assets/lib/simple-icons/icons/skype.svg
index f82379bb..21e09316 100644
--- a/assets/lib/simple-icons/icons/skype.svg
+++ b/assets/lib/simple-icons/icons/skype.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Skype icon</title><path d="M12.069 18.874c-4.023 0-5.82-1.979-5.82-3.464 0-.765.561-1.296 1.333-1.296 1.723 0 1.273 2.477 4.487 2.477 1.641 0 2.55-.895 2.55-1.811 0-.551-.269-1.16-1.354-1.429l-3.576-.895c-2.88-.724-3.403-2.286-3.403-3.751 0-3.047 2.861-4.191 5.549-4.191 2.471 0 5.393 1.373 5.393 3.199 0 .784-.688 1.24-1.453 1.24-1.469 0-1.198-2.037-4.164-2.037-1.469 0-2.292.664-2.292 1.617s1.153 1.258 2.157 1.487l2.637.587c2.891.649 3.624 2.346 3.624 3.944 0 2.476-1.902 4.324-5.722 4.324m11.084-4.882l-.029.135-.044-.24c.015.045.044.074.059.12.12-.675.181-1.363.181-2.052 0-1.529-.301-3.012-.898-4.42-.569-1.348-1.395-2.562-2.427-3.596-1.049-1.033-2.247-1.856-3.595-2.426-1.318-.631-2.801-.93-4.328-.93-.72 0-1.444.07-2.143.204l.119.06-.239-.033.119-.025C8.91.274 7.829 0 6.731 0c-1.789 0-3.47.698-4.736 1.967C.729 3.235.032 4.923.032 6.716c0 1.143.292 2.265.844 3.258l.02-.124.041.239-.06-.115c-.114.645-.172 1.299-.172 1.955 0 1.53.3 3.017.884 4.416.568 1.362 1.378 2.576 2.427 3.609 1.034 1.05 2.247 1.857 3.595 2.442 1.394.6 2.877.898 4.404.898.659 0 1.334-.06 1.977-.179l-.119-.062.24.046-.135.03c1.002.569 2.126.871 3.294.871 1.783 0 3.459-.69 4.733-1.963 1.259-1.259 1.962-2.951 1.962-4.749 0-1.138-.299-2.262-.853-3.266"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Skype</title><path d="M12.069 18.874c-4.023 0-5.82-1.979-5.82-3.464 0-.765.561-1.296 1.333-1.296 1.723 0 1.273 2.477 4.487 2.477 1.641 0 2.55-.895 2.55-1.811 0-.551-.269-1.16-1.354-1.429l-3.576-.895c-2.88-.724-3.403-2.286-3.403-3.751 0-3.047 2.861-4.191 5.549-4.191 2.471 0 5.393 1.373 5.393 3.199 0 .784-.688 1.24-1.453 1.24-1.469 0-1.198-2.037-4.164-2.037-1.469 0-2.292.664-2.292 1.617s1.153 1.258 2.157 1.487l2.637.587c2.891.649 3.624 2.346 3.624 3.944 0 2.476-1.902 4.324-5.722 4.324m11.084-4.882l-.029.135-.044-.24c.015.045.044.074.059.12.12-.675.181-1.363.181-2.052 0-1.529-.301-3.012-.898-4.42-.569-1.348-1.395-2.562-2.427-3.596-1.049-1.033-2.247-1.856-3.595-2.426-1.318-.631-2.801-.93-4.328-.93-.72 0-1.444.07-2.143.204l.119.06-.239-.033.119-.025C8.91.274 7.829 0 6.731 0c-1.789 0-3.47.698-4.736 1.967C.729 3.235.032 4.923.032 6.716c0 1.143.292 2.265.844 3.258l.02-.124.041.239-.06-.115c-.114.645-.172 1.299-.172 1.955 0 1.53.3 3.017.884 4.416.568 1.362 1.378 2.576 2.427 3.609 1.034 1.05 2.247 1.857 3.595 2.442 1.394.6 2.877.898 4.404.898.659 0 1.334-.06 1.977-.179l-.119-.062.24.046-.135.03c1.002.569 2.126.871 3.294.871 1.783 0 3.459-.69 4.733-1.963 1.259-1.259 1.962-2.951 1.962-4.749 0-1.138-.299-2.262-.853-3.266"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/skypeforbusiness.svg b/assets/lib/simple-icons/icons/skypeforbusiness.svg
index aef7bf55..818390da 100644
--- a/assets/lib/simple-icons/icons/skypeforbusiness.svg
+++ b/assets/lib/simple-icons/icons/skypeforbusiness.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Skype for Business icon</title><path d="M14.04 10.92l-2.52-.56c-.96-.24-2.04-.52-2.04-1.44 0-.92.76-1.56 2.16-1.56 2.84 0 2.6 1.96 4 1.96.72 0 1.36-.4 1.36-1.16 0-1.76-2.8-3.08-5.2-3.08-2.56 0-5.28 1.08-5.28 4 0 1.4.48 2.92 3.24 3.64l3.44.88c1.04.24 1.36.84 1.36 1.36 0 .88-.92 1.84-2.48 1.84-3.08 0-2.64-2.44-4.28-2.44-.72 0-1.32.52-1.32 1.24 0 1.44 1.76 3.4 5.6 3.4 3.68 0 5.52-1.84 5.52-4.24-.04-1.6-.76-3.2-3.56-3.84zm9.08 3.04c.12-.64.16-1.28.16-1.96C23.28 5.76 18.24.72 12 .72c-.68 0-1.32.04-1.96.16C9.04.32 7.92 0 6.72 0 3 0 0 3 0 6.72c0 1.2.32 2.36.88 3.32-.12.64-.16 1.28-.16 1.96 0 6.24 5.04 11.28 11.28 11.28.68 0 1.32-.04 1.96-.16 1 .56 2.12.88 3.32.88C21 24 24 21 24 17.28c0-1.2-.32-2.36-.88-3.32zm-5.84 8.32c-.88 0-1.72-.24-2.48-.64l-.52-.32-.6.12c-.52.08-1.08.16-1.68.16a9.56 9.56 0 01-9.56-9.56c0-.56.04-1.12.16-1.68l.12-.6-.32-.52c-.44-.76-.64-1.6-.64-2.48 0-2.76 2.24-5 5-5 .88 0 1.72.24 2.48.64l.52.32.6-.12c.56-.08 1.12-.16 1.68-.16A9.56 9.56 0 0121.6 12c0 .56-.04 1.12-.16 1.68l-.12.6.32.52c.44.76.64 1.6.64 2.48 0 2.76-2.24 5-5 5Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Skype for Business</title><path d="M14.04 10.92l-2.52-.56c-.96-.24-2.04-.52-2.04-1.44 0-.92.76-1.56 2.16-1.56 2.84 0 2.6 1.96 4 1.96.72 0 1.36-.4 1.36-1.16 0-1.76-2.8-3.08-5.2-3.08-2.56 0-5.28 1.08-5.28 4 0 1.4.48 2.92 3.24 3.64l3.44.88c1.04.24 1.36.84 1.36 1.36 0 .88-.92 1.84-2.48 1.84-3.08 0-2.64-2.44-4.28-2.44-.72 0-1.32.52-1.32 1.24 0 1.44 1.76 3.4 5.6 3.4 3.68 0 5.52-1.84 5.52-4.24-.04-1.6-.76-3.2-3.56-3.84zm9.08 3.04c.12-.64.16-1.28.16-1.96C23.28 5.76 18.24.72 12 .72c-.68 0-1.32.04-1.96.16C9.04.32 7.92 0 6.72 0 3 0 0 3 0 6.72c0 1.2.32 2.36.88 3.32-.12.64-.16 1.28-.16 1.96 0 6.24 5.04 11.28 11.28 11.28.68 0 1.32-.04 1.96-.16 1 .56 2.12.88 3.32.88C21 24 24 21 24 17.28c0-1.2-.32-2.36-.88-3.32zm-5.84 8.32c-.88 0-1.72-.24-2.48-.64l-.52-.32-.6.12c-.52.08-1.08.16-1.68.16a9.56 9.56 0 01-9.56-9.56c0-.56.04-1.12.16-1.68l.12-.6-.32-.52c-.44-.76-.64-1.6-.64-2.48 0-2.76 2.24-5 5-5 .88 0 1.72.24 2.48.64l.52.32.6-.12c.56-.08 1.12-.16 1.68-.16A9.56 9.56 0 0121.6 12c0 .56-.04 1.12-.16 1.68l-.12.6.32.52c.44.76.64 1.6.64 2.48 0 2.76-2.24 5-5 5Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/slack.svg b/assets/lib/simple-icons/icons/slack.svg
index dbdf352b..004e2663 100644
--- a/assets/lib/simple-icons/icons/slack.svg
+++ b/assets/lib/simple-icons/icons/slack.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Slack icon</title><path d="M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zM6.313 15.165a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zM8.834 6.313a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zM18.956 8.834a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zM17.688 8.834a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zM15.165 18.956a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zM15.165 17.688a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Slack</title><path d="M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zM6.313 15.165a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zM8.834 6.313a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zM18.956 8.834a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zM17.688 8.834a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zM15.165 18.956a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zM15.165 17.688a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/slackware.svg b/assets/lib/simple-icons/icons/slackware.svg
index c2da04b4..611bf809 100644
--- a/assets/lib/simple-icons/icons/slackware.svg
+++ b/assets/lib/simple-icons/icons/slackware.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Slackware icon</title><path d="M12.924 1.453c-.584-.01-1.251 0-1.485.027-2.46.282-4.138 1.3-4.753 2.891-.218.552-.274 1.002-.243 1.772.048 1.209.419 2.004 1.262 2.742 1.225 1.06 2.98 1.508 5.998 1.508 2.737 0 3.71.413 3.916 1.675.313 1.867-1.57 3.07-4.414 2.827-1.878-.16-3.496-.912-4.223-1.967a7.772 7.772 0 01-.355-.621c-.382-.759-.64-.977-1.176-.977-.43.005-.732.165-.918.494l-.133.239V16.093l.137.297c.165.344.4.546.744.63.35.09.794-.036 1.42-.402l.5-.29.826.185c1.82.403 2.75.523 4.065.523 1.103.005 1.548-.046 2.455-.285 1.124-.297 1.974-.785 2.717-1.57.8-.844 1.15-1.853 1.097-3.147-.069-1.628-.695-2.698-2-3.414-.96-.525-2.292-.79-4.377-.88-2.042-.086-2.794-.155-3.515-.32-.51-.121-.785-.25-1.076-.515-.653-.589-.59-1.755.136-2.482.642-.637 1.511-.928 2.774-.928 1.432.005 2.393.27 3.412.955.185.127.721.62 1.193 1.092.886.902 1.135 1.082 1.506 1.082.244 0 .59-.163.732-.344.26-.329.303-.63.303-2.2 0-1.661-.043-1.91-.377-2.282-.387-.425-.848-.42-1.75.031l-.59.297-.63-.17c-1.496-.392-2.038-.477-3.178-.504zM0 14v9h24v-1H1v-8H0Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Slackware</title><path d="M12.924 1.228c-.584-.01-1.251 0-1.485.027-2.46.282-4.138 1.3-4.753 2.891-.218.552-.274 1.002-.243 1.772.048 1.21.419 2.004 1.262 2.742 1.225 1.06 2.98 1.508 5.998 1.508 2.737 0 3.71.413 3.916 1.675.313 1.867-1.57 3.07-4.414 2.827-1.878-.16-3.496-.912-4.223-1.967a7.772 7.772 0 01-.355-.62c-.382-.76-.64-.978-1.176-.978-.43.005-.732.165-.918.494l-.133.24v4.03l.137.296c.165.344.4.546.744.63.35.09.794-.036 1.42-.402l.5-.29.826.185c1.82.403 2.75.523 4.065.523 1.103.005 1.548-.046 2.455-.285 1.124-.297 1.974-.785 2.717-1.57.8-.844 1.15-1.853 1.097-3.147-.069-1.628-.695-2.698-2-3.414-.96-.525-2.292-.79-4.377-.88-2.042-.086-2.794-.155-3.515-.32-.51-.12-.785-.25-1.076-.515-.653-.589-.59-1.755.136-2.482.642-.637 1.511-.928 2.774-.928 1.432.005 2.393.27 3.412.955.185.127.721.62 1.193 1.092.886.902 1.135 1.082 1.506 1.082.244 0 .59-.163.732-.344.26-.329.303-.63.303-2.2 0-1.66-.043-1.91-.377-2.282-.387-.425-.848-.42-1.75.031l-.59.297-.63-.17c-1.496-.392-2.038-.477-3.178-.504zM0 13.775v9h24v-1H1v-8z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/slashdot.svg b/assets/lib/simple-icons/icons/slashdot.svg
index 09e84589..3ac16fd0 100644
--- a/assets/lib/simple-icons/icons/slashdot.svg
+++ b/assets/lib/simple-icons/icons/slashdot.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Slashdot icon</title><path d="M19.777 0L7.037 24H1.868L14.605 0h5.172zm2.354 19.801c0 2.268-1.841 4.105-4.109 4.105s-4.107-1.838-4.107-4.105 1.839-4.107 4.107-4.107 4.109 1.839 4.109 4.107z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Slashdot</title><path d="M19.777 0L7.037 24H1.868L14.605 0h5.172zm2.354 19.801c0 2.268-1.841 4.105-4.109 4.105s-4.107-1.838-4.107-4.105 1.839-4.107 4.107-4.107 4.109 1.839 4.109 4.107z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/slickpic.svg b/assets/lib/simple-icons/icons/slickpic.svg
index 3c40eca6..9e294b4e 100644
--- a/assets/lib/simple-icons/icons/slickpic.svg
+++ b/assets/lib/simple-icons/icons/slickpic.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>SlickPic icon</title><path d="M21.483 18.308L6.056 14.085l2.52-9.201L24 9.104l-2.517 9.204zm-13.414-5.37l12.263 3.354 1.654-6.033L9.72 6.9l-1.65 6.034v.004zM8.526 15.795l-4.891 1.311-1.625-6.045 4.146-1.11.501-1.835L0 9.902l2.478 9.215 9.178-2.467"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>SlickPic</title><path d="M21.483 18.308L6.056 14.085l2.52-9.201L24 9.104l-2.517 9.204zm-13.414-5.37l12.263 3.354 1.654-6.033L9.72 6.9l-1.65 6.034v.004zM8.526 15.795l-4.891 1.311-1.625-6.045 4.146-1.11.501-1.835L0 9.902l2.478 9.215 9.178-2.467"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/slides.svg b/assets/lib/simple-icons/icons/slides.svg
index 2a80463c..cb5b8888 100644
--- a/assets/lib/simple-icons/icons/slides.svg
+++ b/assets/lib/simple-icons/icons/slides.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Slides icon</title><path d="M0 0v24h24V0H0zm14.176 15.794c-.644.584-1.41.87-2.31.87-.9 0-1.664-.137-2.324-.406-.646-.27-.976-.525-.976-.78l-.076.095c0-.13.08-.324.244-.585.163-.26.31-.39.44-.39.014 0 .12.06.314.184.195.125.472.247.837.372.364.123.804.185 1.317.185.525 0 .945-.147 1.275-.44.33-.292.495-.69.495-1.19s-.15-.89-.436-1.17c-.285-.28-.87-.544-1.74-.79-.87-.25-1.5-.564-1.89-.946-.39-.386-.586-.968-.586-1.748s.3-1.435.9-1.962c.6-.54 1.38-.795 2.34-.795.675 0 1.26.074 1.785.254.524.165.78.36.78.555 0 .164-.075.39-.226.644-.15.27-.285.39-.39.39-.017 0-.09-.045-.257-.12-.435-.24-.93-.36-1.484-.36s-.976.105-1.29.33c-.3.225-.45.525-.45.885s.12.644.344.854.615.39 1.17.57c1.23.375 2.055.78 2.49 1.23.436.45.66 1.126.66 2.025.002.9-.312 1.65-.958 2.234z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Slides</title><path d="M0 0v24h24V0H0zm14.176 15.794c-.644.584-1.41.87-2.31.87-.9 0-1.664-.137-2.324-.406-.646-.27-.976-.525-.976-.78l-.076.095c0-.13.08-.324.244-.585.163-.26.31-.39.44-.39.014 0 .12.06.314.184.195.125.472.247.837.372.364.123.804.185 1.317.185.525 0 .945-.147 1.275-.44.33-.292.495-.69.495-1.19s-.15-.89-.436-1.17c-.285-.28-.87-.544-1.74-.79-.87-.25-1.5-.564-1.89-.946-.39-.386-.586-.968-.586-1.748s.3-1.435.9-1.962c.6-.54 1.38-.795 2.34-.795.675 0 1.26.074 1.785.254.524.165.78.36.78.555 0 .164-.075.39-.226.644-.15.27-.285.39-.39.39-.017 0-.09-.045-.257-.12-.435-.24-.93-.36-1.484-.36s-.976.105-1.29.33c-.3.225-.45.525-.45.885s.12.644.344.854.615.39 1.17.57c1.23.375 2.055.78 2.49 1.23.436.45.66 1.126.66 2.025.002.9-.312 1.65-.958 2.234z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/slideshare.svg b/assets/lib/simple-icons/icons/slideshare.svg
index d1c70375..4ed07566 100644
--- a/assets/lib/simple-icons/icons/slideshare.svg
+++ b/assets/lib/simple-icons/icons/slideshare.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>SlideShare icon</title><path d="M3.222.058c-1.46 0-2.162 1.127-2.162 2.287v7.883c-.53-.502-1.096-.15-1.058.295.038.439.59 1.546 1.436 2.517.843.968 1.924 1.776 2.94 2.268a11.19 11.19 0 0 0-.491 3.598c.09 1.096.378 1.95.903 2.75.918 1.407 2.32 1.985 3.674 1.985 1.209 0 2.494-.563 2.698-2.373v-4.694c1.308.552 3.47.363 4.47-.39.19-.14.326-.207.416-.113.095.09.106.166-.113.439a5.6 5.6 0 0 1-3.103 1.965l.008 2.72a2.532 2.532 0 0 0 2.543 2.446c1.64.015 2.48-.556 3.148-1.164.632-.567 1.399-1.754 1.558-3.243a10.128 10.128 0 0 0-.454-3.926 10.358 10.358 0 0 0 2.948-2.268c.63-.691 1.417-2.007 1.417-2.517 0-.51-.556-.782-1.036-.302V2.345c0-.824-.48-2.29-2.135-2.29zm.423 1.35H20.41c.756 0 1.171.28 1.171 1.224v8.904a8.73 8.73 0 0 1-3.556 1.534c-1.606.352-2.94.087-3.666.148-.718.06-1.428.529-1.296 1.791-.491-.155-1.236-.684-1.682-1.118-.438-.428-.87-.711-1.534-.692-1.013.03-1.663.102-2.57.011a9.656 9.656 0 0 1-4.838-1.787V2.628c0-.869.378-1.22 1.206-1.22zm4.497 4.988a2.993 2.993 0 1 0 0 5.987 2.993 2.993 0 0 0 0-5.983zm7.71 0a2.993 2.993 0 1 0 0 5.987 2.993 2.993 0 0 0 0-5.983z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>SlideShare</title><path d="M3.222.21C1.762.21 1.06 1.337 1.06 2.497v7.883c-.53-.502-1.096-.15-1.058.295.038.439.59 1.546 1.436 2.517.843.968 1.924 1.776 2.94 2.268a11.19 11.19 0 00-.491 3.598c.09 1.096.378 1.95.903 2.75.918 1.407 2.32 1.985 3.674 1.985 1.209 0 2.494-.563 2.698-2.373v-4.694c1.308.552 3.47.363 4.47-.39.19-.14.326-.207.416-.113.095.09.106.166-.113.439a5.6 5.6 0 01-3.103 1.965l.008 2.72a2.532 2.532 0 002.543 2.446c1.64.015 2.48-.556 3.148-1.164.632-.567 1.399-1.754 1.558-3.243a10.128 10.128 0 00-.454-3.926 10.358 10.358 0 002.948-2.268C23.213 12.5 24 11.185 24 10.675c0-.51-.556-.782-1.036-.302V2.497c0-.824-.48-2.29-2.135-2.29zm.423 1.35H20.41c.756 0 1.17.28 1.17 1.224v8.904a8.73 8.73 0 01-3.555 1.534c-1.606.352-2.94.087-3.666.148-.718.06-1.428.529-1.296 1.79-.491-.154-1.236-.683-1.682-1.117-.438-.428-.87-.711-1.534-.692-1.013.03-1.663.102-2.57.01a9.656 9.656 0 01-4.838-1.786V2.78c0-.87.378-1.22 1.206-1.22zm4.497 4.988a2.994 2.994 0 100 5.987 2.993 2.993 0 000-5.983zm7.71 0a2.994 2.994 0 100 5.987 2.993 2.993 0 000-5.983z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/smart.svg b/assets/lib/simple-icons/icons/smart.svg
index c2f06b8e..78bfafeb 100644
--- a/assets/lib/simple-icons/icons/smart.svg
+++ b/assets/lib/simple-icons/icons/smart.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>smart icon</title><path d="M17.048 2.611c.318 3.819.248 16.941.012 18.605-.016.125-.018.341.113.239A23.879 23.879 0 0 0 24 12.003c-1.467-3.684-3.722-6.74-6.604-9.258-.167-.147-.267-.229-.314-.229-.03 0-.04.03-.034.095M0 12.002c0 6.215 5.064 11.252 11.245 11.252 1.612 0 3.138-.35 4.332-.86.34-.146.32-.377.325-.478l.001-4.945c0-.244-.192-.139-.29-.087-2.292 1.228-4.374 1.15-4.374 1.15-3.416 0-6.032-2.797-6.032-6.03 0-3.306 2.671-6.055 6.049-6.055 1.788 0 3.19.56 4.385 1.164.106.054.256.042.263-.117l-.002-4.729s.023-.53-.42-.705C13.951.96 12.584.746 11.26.746A11.245 11.245 0 0 0 0 12.002Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>smart</title><path d="M17.048 2.611c.318 3.819.248 16.941.012 18.605-.016.125-.018.341.113.239A23.879 23.879 0 0 0 24 12.003c-1.467-3.684-3.722-6.74-6.604-9.258-.167-.147-.267-.229-.314-.229-.03 0-.04.03-.034.095M0 12.002c0 6.215 5.064 11.252 11.245 11.252 1.612 0 3.138-.35 4.332-.86.34-.146.32-.377.325-.478l.001-4.945c0-.244-.192-.139-.29-.087-2.292 1.228-4.374 1.15-4.374 1.15-3.416 0-6.032-2.797-6.032-6.03 0-3.306 2.671-6.055 6.049-6.055 1.788 0 3.19.56 4.385 1.164.106.054.256.042.263-.117l-.002-4.729s.023-.53-.42-.705C13.951.96 12.584.746 11.26.746A11.245 11.245 0 0 0 0 12.002Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/smartthings.svg b/assets/lib/simple-icons/icons/smartthings.svg
index 5289713f..f2e396e3 100644
--- a/assets/lib/simple-icons/icons/smartthings.svg
+++ b/assets/lib/simple-icons/icons/smartthings.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>SmartThings icon</title><path d="M11.51 0C8.338 0 5.034.537 2.694 2.694.5 5.174 0 8.464 0 11.525v.942c0 3.165.537 6.499 2.694 8.84C5.188 23.513 8.494 24 11.569 24h.854c3.18 0 6.528-.53 8.883-2.694C23.514 18.811 24 15.5 24 12.423v-.853c0-3.18-.53-6.528-2.694-8.876C18.826.494 15.544 0 12.482 0zM12 3.505c1.244 0 2.256.99 2.256 2.206 0 1.065-.685 1.976-1.715 2.181v1.59c1.48.214 2.528 1.43 2.528 2.934 0 1.654-1.377 3-3.07 3-1.692 0-3.068-1.346-3.068-3 0-.17.017-.335.045-.497l-1.536-.488a2.258 2.258 0 01-1.962 1.12c-.237 0-.471-.037-.698-.11-1.183-.375-1.833-1.622-1.449-2.78a2.246 2.246 0 012.146-1.524c.237 0 .471.036.698.108a2.23 2.23 0 011.313 1.098c.204.391.282.823.232 1.249l1.535.488c.44-.86 1.378-1.453 2.384-1.599V7.892c-1.029-.205-1.896-1.116-1.896-2.181 0-1.217 1.012-2.206 2.257-2.206zm0 .882c-.747 0-1.354.594-1.354 1.324 0 .73.607 1.324 1.354 1.324.746 0 1.354-.594 1.354-1.324 0-.73-.608-1.324-1.354-1.324zm6.522 3.75c.98 0 1.843.613 2.146 1.525.186.56.138 1.158-.135 1.683-.274.526-.74.915-1.314 1.096-.227.073-.461.11-.698.11a2.258 2.258 0 01-1.962-1.12l-.634.201-.278-.838.632-.202a2.21 2.21 0 011.546-2.347c.226-.072.46-.108.697-.108zM5.476 9.02c-.588 0-1.105.368-1.287.915-.23.694.159 1.442.869 1.668.136.043.277.065.419.065.588 0 1.105-.368 1.287-.915a1.29 1.29 0 00-.081-1.01 1.338 1.338 0 00-.788-.658 1.377 1.377 0 00-.42-.065zm13.045 0c-.142 0-.282.021-.419.065a1.32 1.32 0 00-.869 1.668c.182.547.7.915 1.287.915.142 0 .283-.022.42-.065.344-.11.623-.343.787-.659.165-.315.193-.673.082-1.009a1.348 1.348 0 00-1.288-.915zM12 10.474c-1.095 0-1.986.871-1.986 1.942 0 1.07.89 1.941 1.986 1.941 1.094 0 1.985-.87 1.985-1.94 0-1.072-.89-1.943-1.985-1.943zm-2.706 4.831l.73.519-.39.526c.709.757.801 1.925.16 2.787-.423.57-1.106.91-1.827.91-.478 0-.937-.147-1.325-.422a2.177 2.177 0 01-.499-3.082 2.28 2.28 0 012.76-.71zm5.41 0l.392.528a2.285 2.285 0 012.76.71 2.178 2.178 0 01-.499 3.082 2.275 2.275 0 01-1.325.421 2.28 2.28 0 01-1.827-.91 2.172 2.172 0 01.16-2.785l-.39-.527zm-6.734 1.21c-.433 0-.843.205-1.097.547-.44.59-.304 1.42.3 1.849a1.37 1.37 0 001.891-.293c.44-.59.305-1.42-.3-1.85a1.364 1.364 0 00-.794-.252zm8.059 0c-.287 0-.561.088-.795.254a1.307 1.307 0 00-.299 1.849 1.371 1.371 0 001.891.293 1.307 1.307 0 00.3-1.85 1.37 1.37 0 00-1.097-.545Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>SmartThings</title><path d="M11.51 0C8.338 0 5.034.537 2.694 2.694.5 5.174 0 8.464 0 11.525v.942c0 3.165.537 6.499 2.694 8.84C5.188 23.513 8.494 24 11.569 24h.854c3.18 0 6.528-.53 8.883-2.694C23.514 18.811 24 15.5 24 12.423v-.853c0-3.18-.53-6.528-2.694-8.876C18.826.494 15.544 0 12.482 0zM12 3.505c1.244 0 2.256.99 2.256 2.206 0 1.065-.685 1.976-1.715 2.181v1.59c1.48.214 2.528 1.43 2.528 2.934 0 1.654-1.377 3-3.07 3-1.692 0-3.068-1.346-3.068-3 0-.17.017-.335.045-.497l-1.536-.488a2.258 2.258 0 01-1.962 1.12c-.237 0-.471-.037-.698-.11-1.183-.375-1.833-1.622-1.449-2.78a2.246 2.246 0 012.146-1.524c.237 0 .471.036.698.108a2.23 2.23 0 011.313 1.098c.204.391.282.823.232 1.249l1.535.488c.44-.86 1.378-1.453 2.384-1.599V7.892c-1.029-.205-1.896-1.116-1.896-2.181 0-1.217 1.012-2.206 2.257-2.206zm0 .882c-.747 0-1.354.594-1.354 1.324 0 .73.607 1.324 1.354 1.324.746 0 1.354-.594 1.354-1.324 0-.73-.608-1.324-1.354-1.324zm6.522 3.75c.98 0 1.843.613 2.146 1.525.186.56.138 1.158-.135 1.683-.274.526-.74.915-1.314 1.096-.227.073-.461.11-.698.11a2.258 2.258 0 01-1.962-1.12l-.634.201-.278-.838.632-.202a2.21 2.21 0 011.546-2.347c.226-.072.46-.108.697-.108zM5.476 9.02c-.588 0-1.105.368-1.287.915-.23.694.159 1.442.869 1.668.136.043.277.065.419.065.588 0 1.105-.368 1.287-.915a1.29 1.29 0 00-.081-1.01 1.338 1.338 0 00-.788-.658 1.377 1.377 0 00-.42-.065zm13.045 0c-.142 0-.282.021-.419.065a1.32 1.32 0 00-.869 1.668c.182.547.7.915 1.287.915.142 0 .283-.022.42-.065.344-.11.623-.343.787-.659.165-.315.193-.673.082-1.009a1.348 1.348 0 00-1.288-.915zM12 10.474c-1.095 0-1.986.871-1.986 1.942 0 1.07.89 1.941 1.986 1.941 1.094 0 1.985-.87 1.985-1.94 0-1.072-.89-1.943-1.985-1.943zm-2.706 4.831l.73.519-.39.526c.709.757.801 1.925.16 2.787-.423.57-1.106.91-1.827.91-.478 0-.937-.147-1.325-.422a2.177 2.177 0 01-.499-3.082 2.28 2.28 0 012.76-.71zm5.41 0l.392.528a2.285 2.285 0 012.76.71 2.178 2.178 0 01-.499 3.082 2.275 2.275 0 01-1.325.421 2.28 2.28 0 01-1.827-.91 2.172 2.172 0 01.16-2.785l-.39-.527zm-6.734 1.21c-.433 0-.843.205-1.097.547-.44.59-.304 1.42.3 1.849a1.37 1.37 0 001.891-.293c.44-.59.305-1.42-.3-1.85a1.364 1.364 0 00-.794-.252zm8.059 0c-.287 0-.561.088-.795.254a1.307 1.307 0 00-.299 1.849 1.371 1.371 0 001.891.293 1.307 1.307 0 00.3-1.85 1.37 1.37 0 00-1.097-.545Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/smashdotgg.svg b/assets/lib/simple-icons/icons/smashdotgg.svg
new file mode 100644
index 00000000..915ad382
--- /dev/null
+++ b/assets/lib/simple-icons/icons/smashdotgg.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>smash.gg</title><path d="M18.01 4.32c-.622.044-1.096.236-1.41.574a1.438 1.438 0 00-.332.546c-.138.366-.134.288-.142 2.57-.008 2.096-.002 2.328.066 2.628.142.612.524 1.03 1.124 1.228.342.114.58.14 1.192.128.586-.01.686-.028.962-.17a1.35 1.35 0 00.496-.494l.074-.14-.004.6c-.006.686-.01.7-.176.784l-.088.046H16.5v2h1.986c1.976 0 2.386-.012 2.714-.072.98-.178 1.508-.71 1.62-1.628.012-.11.02-1.616.02-4.394V4.3h-2.76v.93l-.048-.114c-.17-.412-.48-.664-.932-.756-.226-.046-.736-.066-1.09-.04zm1.844 2.124a.41.41 0 01.128.15l.048.096v2.94l-.048.096a.392.392 0 01-.128.15c-.08.052-.088.054-.392.054-.292 0-.316-.002-.388-.046-.152-.096-.144.004-.15-1.68-.004-1.018.002-1.53.016-1.584.052-.196.16-.242.552-.236.268.006.284.008.362.06zM10.17 4.32c-.62.044-1.048.214-1.384.55-.16.16-.194.21-.282.392-.112.23-.172.448-.204.738-.016.128-.02.872-.016 2.29.008 2.048.008 2.104.05 2.28.096.412.218.648.464.89.294.29.604.434 1.112.51.312.046 1.084.042 1.33-.01.398-.082.72-.314.886-.64l.076-.15-.006.61c-.006.698-.01.71-.176.794l-.088.046H8.66v2.002l2.176-.008c1.594-.006 2.22-.014 2.344-.032.6-.09 1.094-.314 1.372-.628.186-.21.314-.478.394-.824.042-.18.042-.184.048-4.506L15 4.3h-2.76v.474l-.002.476-.039-.104c-.147-.416-.48-.692-.944-.786-.222-.046-.733-.064-1.086-.04zm1.844 2.124a.41.41 0 01.128.15l.048.096.006 1.396c.004.91-.002 1.436-.016 1.51-.026.142-.094.246-.194.296-.064.032-.122.038-.376.038-.34 0-.402-.02-.48-.15-.04-.068-.04-.098-.04-1.62 0-1.52 0-1.552.04-1.62a.336.336 0 01.13-.116c.084-.044.11-.046.382-.04.278.006.294.008.372.06zM2.64 9.11v9.11H0v1.2h2.64V24h3.84v-4.58H24v-1.2H6.48V0H2.64z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/smashingmagazine.svg b/assets/lib/simple-icons/icons/smashingmagazine.svg
index 58b0c2d1..c8273f60 100644
--- a/assets/lib/simple-icons/icons/smashingmagazine.svg
+++ b/assets/lib/simple-icons/icons/smashingmagazine.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Smashing Magazine icon</title><path d="M7.734 12.002c.766.524 1.662 1.01 2.708 1.443 1.785.742 2.985 1.387 3.601 1.936.615.547.928 1.248.928 2.104-.005 1.457-1.023 2.189-3.076 2.189-1.977 0-3.75-.627-5.326-1.875l-1.871 4.186c1.422.761 2.58 1.257 3.475 1.496l.141.033-1.798.416c-1.271.292-2.539-.503-2.832-1.771L.061 6.5c-.291-1.271.5-2.539 1.773-2.835l4.375-1.009c-.158.155-.307.316-.441.485l-.018.021c-.753.949-1.131 2.115-1.131 3.505 0 2.101 1.03 3.87 3.079 5.296l.046.029-.01.01zm10.358.072c-.84-.672-1.904-1.268-3.24-1.786-1.98-.784-3.271-1.41-3.871-1.872-.6-.465-.914-.981-.914-1.557 0-1.459.914-2.19 2.76-2.19 2.041 0 3.646.494 4.786 1.476l1.515-4.08c-1.095-.556-2.235-.96-3.405-1.216l-.06-.015c-.256-.061-.525-.12-.811-.164l2.625-.602c1.275-.285 2.535.511 2.836 1.771l3.63 15.647c.284 1.274-.51 2.551-1.784 2.835l-2.985.69c.824-1.051 1.245-2.34 1.245-3.87 0-1.575-.437-2.911-1.306-4.021-.285-.346-.615-.676-1.006-1.006l-.044-.029.029-.011z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Smashing Magazine</title><path d="M7.734 12.002c.766.524 1.662 1.01 2.708 1.443 1.785.742 2.985 1.387 3.601 1.936.615.547.928 1.248.928 2.104-.005 1.457-1.023 2.189-3.076 2.189-1.977 0-3.75-.627-5.326-1.875l-1.871 4.186c1.422.761 2.58 1.257 3.475 1.496l.141.033-1.798.416c-1.271.292-2.539-.503-2.832-1.771L.061 6.5c-.291-1.271.5-2.539 1.773-2.835l4.375-1.009c-.158.155-.307.316-.441.485l-.018.021c-.753.949-1.131 2.115-1.131 3.505 0 2.101 1.03 3.87 3.079 5.296l.046.029-.01.01zm10.358.072c-.84-.672-1.904-1.268-3.24-1.786-1.98-.784-3.271-1.41-3.871-1.872-.6-.465-.914-.981-.914-1.557 0-1.459.914-2.19 2.76-2.19 2.041 0 3.646.494 4.786 1.476l1.515-4.08c-1.095-.556-2.235-.96-3.405-1.216l-.06-.015c-.256-.061-.525-.12-.811-.164l2.625-.602c1.275-.285 2.535.511 2.836 1.771l3.63 15.647c.284 1.274-.51 2.551-1.784 2.835l-2.985.69c.824-1.051 1.245-2.34 1.245-3.87 0-1.575-.437-2.911-1.306-4.021-.285-.346-.615-.676-1.006-1.006l-.044-.029.029-.011z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/smrt.svg b/assets/lib/simple-icons/icons/smrt.svg
new file mode 100644
index 00000000..31c22f58
--- /dev/null
+++ b/assets/lib/simple-icons/icons/smrt.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>SMRT</title><path d="M2.6535 13.753c.8096 4.4368 4.677 7.8105 9.3392 7.8105 4.677 0 8.6171-4.0882 9.3967-8.5422h-2.5631c-.7499 3.0597-3.5506 6.0385-6.8334 6.0385-2.3686 0-4.4526-1.1984-5.727-2.999h5.292c.435 0 .8542-.2304 1.214-.7029l1.2895-1.8584c.121-.2305.3448-.3601.6145-.3601h7.54L24 10.8318H13.6117c-.2535 0-.48.144-.6148.3284l-1.7089 2.2932c-.1037.1728-.2852.288-.4946.288zm18.6783-3.5063c-.8096-4.4396-4.6468-7.8102-9.3242-7.8102-4.677 0-8.4993 3.9755-9.2786 8.4299h2.5634c.7496-3.0598 3.4322-5.9265 6.7302-5.9265 2.3686 0 4.452 1.1985 5.7263 2.9964h-5.3065c-.4348 0-.8545.2305-1.2143.7058l-1.2892 1.8581c-.121.2305-.3448.3604-.6148.3604h-7.54L0 13.1365h10.3883c.2535 0 .48-.144.6148-.3284l1.7089-2.3107c.1037-.1729.2852-.2881.4946-.2881z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/smugmug.svg b/assets/lib/simple-icons/icons/smugmug.svg
index 9176b95f..0969c85b 100644
--- a/assets/lib/simple-icons/icons/smugmug.svg
+++ b/assets/lib/simple-icons/icons/smugmug.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>SmugMug icon</title><path d="M18.31 0l-.35.01c-1.55.13-2.46 1.2-2.6 2.28-.15 1.2.65 2.4 2.58 2.28 2.15-.12 3.09-1.2 3.1-2.28.02-1.15-1-2.28-2.73-2.29zM7.21.34A2.66 2.66 0 004.56 2.6C4.41 3.73 5.12 4.87 7 4.85c2.23-.04 3.31-1.37 3.16-2.57-.12-1-1.09-1.92-2.94-1.94zm12.35 8.71a7 7 0 00-.4.02c-5.28.54-5.54.6-15.26.82C-.2 9.9.62 24 9.38 24c8.2 0 18.12-15.15 10.18-14.95zm-1.1 2.7c3.18-.07-2.9 9.53-8.8 9.56-7.46 0-6.44-8.8-5.18-8.85 8.67-.35 10.88-.64 13.98-.71Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>SmugMug</title><path d="M18.31 0l-.35.01c-1.55.13-2.46 1.2-2.6 2.28-.15 1.2.65 2.4 2.58 2.28 2.15-.12 3.09-1.2 3.1-2.28.02-1.15-1-2.28-2.73-2.29zM7.21.34A2.66 2.66 0 004.56 2.6C4.41 3.73 5.12 4.87 7 4.85c2.23-.04 3.31-1.37 3.16-2.57-.12-1-1.09-1.92-2.94-1.94zm12.35 8.71a7 7 0 00-.4.02c-5.28.54-5.54.6-15.26.82C-.2 9.9.62 24 9.38 24c8.2 0 18.12-15.15 10.18-14.95zm-1.1 2.7c3.18-.07-2.9 9.53-8.8 9.56-7.46 0-6.44-8.8-5.18-8.85 8.67-.35 10.88-.64 13.98-.71Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/snapchat.svg b/assets/lib/simple-icons/icons/snapchat.svg
index 0a01ff77..3110fbad 100644
--- a/assets/lib/simple-icons/icons/snapchat.svg
+++ b/assets/lib/simple-icons/icons/snapchat.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Snapchat icon</title><path d="M12.206.793c.99 0 4.347.276 5.93 3.821.529 1.193.403 3.219.299 4.847l-.003.06c-.012.18-.022.345-.03.51.075.045.203.09.401.09.3-.016.659-.12 1.033-.301.165-.088.344-.104.464-.104.182 0 .359.029.509.09.45.149.734.479.734.838.015.449-.39.839-1.213 1.168-.089.029-.209.075-.344.119-.45.135-1.139.36-1.333.81-.09.224-.061.524.12.868l.015.015c.06.136 1.526 3.475 4.791 4.014.255.044.435.27.42.509 0 .075-.015.149-.045.225-.24.569-1.273.988-3.146 1.271-.059.091-.12.375-.164.57-.029.179-.074.36-.134.553-.076.271-.27.405-.555.405h-.03c-.135 0-.313-.031-.538-.074-.36-.075-.765-.135-1.273-.135-.3 0-.599.015-.913.074-.6.104-1.123.464-1.723.884-.853.599-1.826 1.288-3.294 1.288-.06 0-.119-.015-.18-.015h-.149c-1.468 0-2.427-.675-3.279-1.288-.599-.42-1.107-.779-1.707-.884-.314-.045-.629-.074-.928-.074-.54 0-.958.089-1.272.149-.211.043-.391.074-.54.074-.374 0-.523-.224-.583-.42-.061-.192-.09-.389-.135-.567-.046-.181-.105-.494-.166-.57-1.918-.222-2.95-.642-3.189-1.226-.031-.063-.052-.15-.055-.225-.015-.243.165-.465.42-.509 3.264-.54 4.73-3.879 4.791-4.02l.016-.029c.18-.345.224-.645.119-.869-.195-.434-.884-.658-1.332-.809-.121-.029-.24-.074-.346-.119-1.107-.435-1.257-.93-1.197-1.273.09-.479.674-.793 1.168-.793.146 0 .27.029.383.074.42.194.789.3 1.104.3.234 0 .384-.06.465-.105l-.046-.569c-.098-1.626-.225-3.651.307-4.837C7.392 1.077 10.739.807 11.727.807l.419-.015h.06z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Snapchat</title><path d="M12.206.793c.99 0 4.347.276 5.93 3.821.529 1.193.403 3.219.299 4.847l-.003.06c-.012.18-.022.345-.03.51.075.045.203.09.401.09.3-.016.659-.12 1.033-.301.165-.088.344-.104.464-.104.182 0 .359.029.509.09.45.149.734.479.734.838.015.449-.39.839-1.213 1.168-.089.029-.209.075-.344.119-.45.135-1.139.36-1.333.81-.09.224-.061.524.12.868l.015.015c.06.136 1.526 3.475 4.791 4.014.255.044.435.27.42.509 0 .075-.015.149-.045.225-.24.569-1.273.988-3.146 1.271-.059.091-.12.375-.164.57-.029.179-.074.36-.134.553-.076.271-.27.405-.555.405h-.03c-.135 0-.313-.031-.538-.074-.36-.075-.765-.135-1.273-.135-.3 0-.599.015-.913.074-.6.104-1.123.464-1.723.884-.853.599-1.826 1.288-3.294 1.288-.06 0-.119-.015-.18-.015h-.149c-1.468 0-2.427-.675-3.279-1.288-.599-.42-1.107-.779-1.707-.884-.314-.045-.629-.074-.928-.074-.54 0-.958.089-1.272.149-.211.043-.391.074-.54.074-.374 0-.523-.224-.583-.42-.061-.192-.09-.389-.135-.567-.046-.181-.105-.494-.166-.57-1.918-.222-2.95-.642-3.189-1.226-.031-.063-.052-.15-.055-.225-.015-.243.165-.465.42-.509 3.264-.54 4.73-3.879 4.791-4.02l.016-.029c.18-.345.224-.645.119-.869-.195-.434-.884-.658-1.332-.809-.121-.029-.24-.074-.346-.119-1.107-.435-1.257-.93-1.197-1.273.09-.479.674-.793 1.168-.793.146 0 .27.029.383.074.42.194.789.3 1.104.3.234 0 .384-.06.465-.105l-.046-.569c-.098-1.626-.225-3.651.307-4.837C7.392 1.077 10.739.807 11.727.807l.419-.015h.06z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/snapcraft.svg b/assets/lib/simple-icons/icons/snapcraft.svg
index c97819e3..5a66b929 100644
--- a/assets/lib/simple-icons/icons/snapcraft.svg
+++ b/assets/lib/simple-icons/icons/snapcraft.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Snapcraft icon</title><path d="M13.804 13.367V5.69l5.292 2.362-5.292 5.315zM3.701 23.514l6.49-12.22 2.847 2.843L3.7 23.514zM0 .486l13.355 4.848v8.484L0 .486zM21.803 5.334H14.11L24 9.748z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Snapcraft</title><path d="M13.804 13.367V5.69l5.292 2.362-5.292 5.315zM3.701 23.514l6.49-12.22 2.847 2.843L3.7 23.514zM0 .486l13.355 4.848v8.484L0 .486zM21.803 5.334H14.11L24 9.748z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/snowflake.svg b/assets/lib/simple-icons/icons/snowflake.svg
new file mode 100644
index 00000000..27742797
--- /dev/null
+++ b/assets/lib/simple-icons/icons/snowflake.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Snowflake</title><path d="M24 3.459c0 .646-.418 1.18-1.141 1.18-.723 0-1.142-.534-1.142-1.18 0-.647.419-1.18 1.142-1.18.723 0 1.141.533 1.141 1.18zm-.228 0c0-.533-.38-.951-.913-.951s-.913.38-.913.95c0 .533.38.952.913.952.57 0 .913-.419.913-.951zm-1.37-.533h.495c.266 0 .456.152.456.38 0 .153-.076.229-.19.305l.19.266v.038h-.266l-.19-.266h-.229v.266h-.266zm.495.228h-.229v.267h.229c.114 0 .152-.038.152-.114.038-.077-.038-.153-.152-.153zM7.602 12.4c.038-.151.076-.304.076-.456 0-.114-.038-.228-.038-.342-.114-.343-.304-.647-.646-.838l-4.87-2.777c-.685-.38-1.56-.152-1.94.533-.381.685-.153 1.56.532 1.94l2.701 1.56-2.701 1.56c-.685.38-.913 1.256-.533 1.94.38.685 1.256.914 1.94.533l4.832-2.777c.343-.267.571-.533.647-.876zm1.332 2.626c-.266-.038-.57.038-.837.19l-4.832 2.777c-.685.38-.913 1.256-.532 1.94.38.686 1.255.914 1.94.533l2.701-1.56v3.12c0 .8.647 1.408 1.446 1.408.799 0 1.407-.647 1.407-1.408v-5.592c0-.761-.57-1.37-1.293-1.408zm4.946-6.088c.266.038.57-.038.837-.19l4.832-2.777c.685-.38.913-1.256.532-1.94-.38-.686-1.255-.914-1.94-.533l-2.701 1.56V1.975c0-.799-.647-1.408-1.446-1.408-.799 0-1.446.609-1.446 1.408V7.53c0 .76.609 1.37 1.332 1.407zM3.265 5.97l4.832 2.777c.266.152.533.19.837.19.723-.038 1.331-.684 1.331-1.407V1.975c0-.799-.646-1.408-1.407-1.408-.799 0-1.446.647-1.446 1.408v3.12l-2.701-1.56c-.685-.38-1.56-.152-1.94.533-.419.646-.19 1.521.494 1.902zm9.093 6.011a.412.412 0 00-.114-.266l-.57-.571a.346.346 0 00-.267-.114.412.412 0 00-.266.114l-.571.57a.411.411 0 00-.114.267c0 .076.038.19.114.267l.57.57a.345.345 0 00.267.114c.076 0 .19-.038.266-.114l.571-.57a.412.412 0 00.114-.267zm1.598.533L11.94 14.53c-.039.038-.153.114-.229.114h-.608a.411.411 0 01-.267-.114L8.82 12.514a.408.408 0 01-.076-.229v-.608c0-.076.038-.19.114-.267l2.016-2.016a.41.41 0 01.267-.114h.608a.41.41 0 01.267.114l2.016 2.016a.347.347 0 01.114.267v.608c-.076.077-.114.19-.19.229zm5.593 5.44l-4.832-2.777c-.266-.152-.57-.19-.837-.152-.723.038-1.332.684-1.332 1.408v5.554c0 .8.647 1.408 1.408 1.408.799 0 1.446-.647 1.446-1.408v-3.12l2.7 1.56c.686.38 1.561.152 1.941-.533.419-.646.19-1.521-.494-1.94zm2.549-7.533l-2.701 1.56 2.7 1.56c.686.38.914 1.256.533 1.94-.38.685-1.255.913-1.94.533l-4.832-2.778a1.644 1.644 0 01-.647-.798c-.037-.153-.076-.305-.076-.457 0-.114.039-.228.039-.342.114-.343.342-.647.646-.837l4.832-2.778c.685-.38 1.56-.152 1.94.533.457.609.19 1.484-.494 1.864"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/snowpack.svg b/assets/lib/simple-icons/icons/snowpack.svg
new file mode 100644
index 00000000..03f6d34b
--- /dev/null
+++ b/assets/lib/simple-icons/icons/snowpack.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Snowpack</title><path d="M23.8094 19.7512l-10.8-16.7999a1.2002 1.2002 0 00-2.0189 0L.1906 19.7512a1.2 1.2 0 00-.0439 1.224 1.2002 1.2002 0 001.0534.6247H22.8c.4391 0 .843-.2396 1.0534-.6251a1.1994 1.1994 0 00-.044-1.2236zM12 5.8193L15.202 10.8H12l-2.4 2.4-1.4272-1.4272z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/snyk.svg b/assets/lib/simple-icons/icons/snyk.svg
index 76920160..61139341 100644
--- a/assets/lib/simple-icons/icons/snyk.svg
+++ b/assets/lib/simple-icons/icons/snyk.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Snyk icon</title><path d="M17.097 13.344c.143-.37.06-2.117-.222-4.675l-.004-.04.904-2.431v-.05c0-1.06-1.374-3.9-2.186-5.41L15.192 0l-.84 5.854-.503.829-.125-.042c-.351-.118-1.042-.316-1.728-.316-.65 0-1.294.171-1.72.315l-.125.042-.504-.827L8.807 0l-.396.737c-.812 1.51-2.186 4.35-2.186 5.411v.05l.904 2.432-.004.039c-.283 2.558-.366 4.305-.222 4.674.13.332.642 1.041 1.072 1.605l-.619 5.724.617.442.576-5.329c.012.414.064 1.277.275 2.068l-.389 3.592L12 24l4.279-3.067.375-.268-.62-5.73c.428-.561.934-1.262 1.063-1.591zM15.59 2.298c.694 1.408 1.421 3.08 1.471 3.779l-.388 1.045c-.935-1.31-1.228-3.441-1.253-3.636zm-1.124 7.8c.84 0 .212.712.138.792h-1.587c.144-.18.69-.792 1.45-.792zm-.452 1.468a.178.178 0 0 1-.175.153.292.292 0 1 0 .441-.31h.504v.024a.662.662 0 0 1-1.325 0v-.025h.511l-.008.007c.039.038.06.093.052.15zM12.39 19.29c.097.064.2.115.306.156-.168.19-.399.287-.697.287-.299 0-.53-.097-.697-.288.107-.04.21-.092.306-.156a.573.573 0 0 0 .391.114c.103 0 .255 0 .391-.113zm-2.62-7.724a.178.178 0 0 1-.174.153.292.292 0 1 0 .441-.31h.504v.024a.662.662 0 0 1-1.326 0v-.025h.511l-.008.007c.039.038.06.093.052.15zm-.374-.676c-.074-.08-.702-.792.138-.792.759 0 1.305.612 1.45.792zM6.948 6.077c.05-.699.778-2.37 1.471-3.78l.185 1.29c-.07.48-.393 2.37-1.257 3.56zM9.473 18.09c-.373-1.02-.377-2.446-.377-2.507v-.097l-.06-.076c-.551-.683-1.477-1.9-1.616-2.257l-.005-.014c-.124-.43.1-2.997.268-4.513l.008-.066-.187-.502.07-.075c.476-.497.88-1.213 1.203-2.126L9 5.223l.118.82.807 1.326.22-.094c.009-.004.934-.4 1.851-.4H12v.44h-.004c-.812 0-1.669.36-1.677.363l-.571.246-.797-1.308c-.27.62-.585 1.137-.94 1.543l.129.347-.019.169c-.24 2.156-.348 4.044-.285 4.332.086.2.523.812 1 1.437l.748-.218 1.17-1.334.184 3.458c-.011.015-.28.393-.28.609 0 .235.344.541.685.786.005-.01.007-.02.013-.03.12-.212.275-.251.346-.087.04.092.028.369.028.369l.005.002v.328c-.013.027-.302.674-1.014.674-.275 0-.948-.089-1.248-.911zm2.536 2.409c-.527 0-1.297-.257-1.374-.952.029.001.057.003.086.003.06 0 .119-.003.177-.01.235.455.665.6 1.102.6.436 0 .865-.146 1.1-.6.059.007.119.01.18.01.029 0 .057-.002.085-.003-.076.695-.835.952-1.356.952zm2.956-5.09l-.061.077v.097c0 .06-.004 1.487-.377 2.507-.3.822-.973.91-1.248.91-.71 0-1.002-.658-1.014-.686V18l.005-.004s-.012-.276.028-.368c.07-.164.226-.126.346.088.006.009.009.02.013.03.34-.246.686-.552.686-.787 0-.216-.269-.593-.28-.61l.183-3.457 1.17 1.334 1.2.35c-.23.304-.463.6-.651.834zm-8.472-1.907c-.22-.563-.022-2.916.187-4.817l-.895-2.409v-.128c0-.312.095-.734.246-1.207-1.177.253-1.808.49-1.808.49v12.996l2.67 1.914.577-5.332c-.538-.718-.868-1.226-.977-1.507zm3.853-7.346c.446-.136 1.042-.27 1.65-.27.61 0 1.21.135 1.658.27l.276-.453.184-1.288s-1.288-.068-2.103-.068c-.759 0-1.467.026-2.125.07l.184 1.286zm7.623-1.217c.151.474.247.896.247 1.21v.127l-.895 2.409c.208 1.901.406 4.253.186 4.818-.109.279-.435.782-.968 1.493l.578 5.337 2.66-1.906V5.432s-.632-.24-1.808-.493Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Snyk</title><path d="M17.097 13.344c.143-.37.06-2.117-.222-4.675l-.004-.04.904-2.431v-.05c0-1.06-1.374-3.9-2.186-5.41L15.192 0l-.84 5.854-.503.829-.125-.042c-.351-.118-1.042-.316-1.728-.316-.65 0-1.294.171-1.72.315l-.125.042-.504-.827L8.807 0l-.396.737c-.812 1.51-2.186 4.35-2.186 5.411v.05l.904 2.432-.004.039c-.283 2.558-.366 4.305-.222 4.674.13.332.642 1.041 1.072 1.605l-.619 5.724.617.442.576-5.329c.012.414.064 1.277.275 2.068l-.389 3.592L12 24l4.279-3.067.375-.268-.62-5.73c.428-.561.934-1.262 1.063-1.591zM15.59 2.298c.694 1.408 1.421 3.08 1.471 3.779l-.388 1.045c-.935-1.31-1.228-3.441-1.253-3.636zm-1.124 7.8c.84 0 .212.712.138.792h-1.587c.144-.18.69-.792 1.45-.792zm-.452 1.468a.178.178 0 0 1-.175.153.292.292 0 1 0 .441-.31h.504v.024a.662.662 0 0 1-1.325 0v-.025h.511l-.008.007c.039.038.06.093.052.15zM12.39 19.29c.097.064.2.115.306.156-.168.19-.399.287-.697.287-.299 0-.53-.097-.697-.288.107-.04.21-.092.306-.156a.573.573 0 0 0 .391.114c.103 0 .255 0 .391-.113zm-2.62-7.724a.178.178 0 0 1-.174.153.292.292 0 1 0 .441-.31h.504v.024a.662.662 0 0 1-1.326 0v-.025h.511l-.008.007c.039.038.06.093.052.15zm-.374-.676c-.074-.08-.702-.792.138-.792.759 0 1.305.612 1.45.792zM6.948 6.077c.05-.699.778-2.37 1.471-3.78l.185 1.29c-.07.48-.393 2.37-1.257 3.56zM9.473 18.09c-.373-1.02-.377-2.446-.377-2.507v-.097l-.06-.076c-.551-.683-1.477-1.9-1.616-2.257l-.005-.014c-.124-.43.1-2.997.268-4.513l.008-.066-.187-.502.07-.075c.476-.497.88-1.213 1.203-2.126L9 5.223l.118.82.807 1.326.22-.094c.009-.004.934-.4 1.851-.4H12v.44h-.004c-.812 0-1.669.36-1.677.363l-.571.246-.797-1.308c-.27.62-.585 1.137-.94 1.543l.129.347-.019.169c-.24 2.156-.348 4.044-.285 4.332.086.2.523.812 1 1.437l.748-.218 1.17-1.334.184 3.458c-.011.015-.28.393-.28.609 0 .235.344.541.685.786.005-.01.007-.02.013-.03.12-.212.275-.251.346-.087.04.092.028.369.028.369l.005.002v.328c-.013.027-.302.674-1.014.674-.275 0-.948-.089-1.248-.911zm2.536 2.409c-.527 0-1.297-.257-1.374-.952.029.001.057.003.086.003.06 0 .119-.003.177-.01.235.455.665.6 1.102.6.436 0 .865-.146 1.1-.6.059.007.119.01.18.01.029 0 .057-.002.085-.003-.076.695-.835.952-1.356.952zm2.956-5.09l-.061.077v.097c0 .06-.004 1.487-.377 2.507-.3.822-.973.91-1.248.91-.71 0-1.002-.658-1.014-.686V18l.005-.004s-.012-.276.028-.368c.07-.164.226-.126.346.088.006.009.009.02.013.03.34-.246.686-.552.686-.787 0-.216-.269-.593-.28-.61l.183-3.457 1.17 1.334 1.2.35c-.23.304-.463.6-.651.834zm-8.472-1.907c-.22-.563-.022-2.916.187-4.817l-.895-2.409v-.128c0-.312.095-.734.246-1.207-1.177.253-1.808.49-1.808.49v12.996l2.67 1.914.577-5.332c-.538-.718-.868-1.226-.977-1.507zm3.853-7.346c.446-.136 1.042-.27 1.65-.27.61 0 1.21.135 1.658.27l.276-.453.184-1.288s-1.288-.068-2.103-.068c-.759 0-1.467.026-2.125.07l.184 1.286zm7.623-1.217c.151.474.247.896.247 1.21v.127l-.895 2.409c.208 1.901.406 4.253.186 4.818-.109.279-.435.782-.968 1.493l.578 5.337 2.66-1.906V5.432s-.632-.24-1.808-.493Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/socialblade.svg b/assets/lib/simple-icons/icons/socialblade.svg
new file mode 100644
index 00000000..310b8507
--- /dev/null
+++ b/assets/lib/simple-icons/icons/socialblade.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Social Blade</title><path d="M2.323 16.688H0v1.893h2.323v-1.893ZM5.935 13.591H3.613v4.99h2.322v-4.99ZM9.548 14.796H7.226v3.785h2.322v-3.785ZM13.161 13.935H10.84v4.646h2.322v-4.646ZM16.774 12.043h-2.322v6.538h2.322v-6.538ZM20.387 10.065h-2.323v8.516h2.323v-8.516ZM24 5.42h-2.323v13.16H24V5.42Z"/></svg>
diff --git a/assets/lib/simple-icons/icons/society6.svg b/assets/lib/simple-icons/icons/society6.svg
index 76a299ed..910b5f02 100644
--- a/assets/lib/simple-icons/icons/society6.svg
+++ b/assets/lib/simple-icons/icons/society6.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Society6 icon</title><path d="M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0zm7.928 4.966l.042.876-.916.157c-.705.194-1.32.465-1.843.813s-.966.73-1.33 1.148a6.147 6.147 0 0 0-.888 1.339l-.016.036c-.243.506-.459 1.04-.65 1.599a4.992 4.992 0 0 1 1.31-.812l.033-.012c.521-.223 1.141-.335 1.864-.335.839 0 1.543.296 2.111.884s.853 1.355.853 2.298c0 1.409-.541 2.628-1.624 3.659s-2.414 1.547-3.992 1.547c-1.255 0-2.256-.374-3.003-1.122s-1.12-1.743-1.12-2.981c0-2.363.84-4.387 2.52-6.073s3.895-2.692 6.65-3.023zM7.925 9.103c.435 0 .838.027 1.211.081.388.055.739.159 1.065.307l-.024-.01c.286.13.524.322.705.56l.003.004c.169.232.252.513.252.844s-.118.614-.356.852c-.237.238-.549.356-.933.356-.332 0-.607-.091-.828-.272s-.399-.394-.537-.642c-.137-.253-.247-.516-.327-.784s-.146-.493-.197-.674c-.401.024-.765.178-1.094.459s-.495.629-.495 1.046c0 .253.039.452.116.596s.184.265.311.358l.003.002c.162.115.348.217.544.296l.018.006c.151.069.431.177.714.279l.132.041c.778.288 1.365.635 1.76 1.038.321.328.509.742.569 1.241-.008-.117.117 1.109.018.183.002.056.006.113.006.171 0 .433-.097.847-.289 1.245s-.464.728-.818.992a4.26 4.26 0 0 1-1.336.646l-.03.007c-.516.147-1.172.221-1.967.221-.722 0-1.318-.061-1.789-.184s-.845-.282-1.12-.474c-.281-.193-.473-.398-.575-.617s-.155-.425-.155-.617c0-.349.125-.655.373-.916s.58-.391.991-.391c.344 0 .631.092.863.278.236.193.43.426.574.691l.006.012c.136.244.259.528.352.824l.009.032c.035.09.106.322.172.556l.034.139c.647 0 1.137-.144 1.469-.436s.498-.691.498-1.196c0-.222-.05-.408-.15-.558s-.234-.283-.399-.398c-.166-.108-.377-.213-.635-.315s-.513-.198-.765-.289c-.693-.246-1.24-.587-1.644-1.023s-.605-.978-.605-1.628v-.013c0-.391.093-.76.259-1.087l-.006.014c.17-.34.434-.654.794-.944.355-.276.804-.496 1.348-.661s1.179-.249 1.906-.249zm8.017 1.874c-.329 0-.64.066-.933.199s-.605.397-.934.792c-.04.183-.109.534-.21 1.055s-.152 1.162-.152 1.923c0 .778.123 1.384.365 1.82s.566.655.968.655c.626 0 1.168-.432 1.628-1.295h.002c.46-.864.69-1.912.69-3.144 0-.618-.134-1.108-.402-1.468s-.608-.538-1.022-.538z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Society6</title><path d="M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0zm7.928 4.966l.042.876-.916.157c-.705.194-1.32.465-1.843.813s-.966.73-1.33 1.148a6.147 6.147 0 0 0-.888 1.339l-.016.036c-.243.506-.459 1.04-.65 1.599a4.992 4.992 0 0 1 1.31-.812l.033-.012c.521-.223 1.141-.335 1.864-.335.839 0 1.543.296 2.111.884s.853 1.355.853 2.298c0 1.409-.541 2.628-1.624 3.659s-2.414 1.547-3.992 1.547c-1.255 0-2.256-.374-3.003-1.122s-1.12-1.743-1.12-2.981c0-2.363.84-4.387 2.52-6.073s3.895-2.692 6.65-3.023zM7.925 9.103c.435 0 .838.027 1.211.081.388.055.739.159 1.065.307l-.024-.01c.286.13.524.322.705.56l.003.004c.169.232.252.513.252.844s-.118.614-.356.852c-.237.238-.549.356-.933.356-.332 0-.607-.091-.828-.272s-.399-.394-.537-.642c-.137-.253-.247-.516-.327-.784s-.146-.493-.197-.674c-.401.024-.765.178-1.094.459s-.495.629-.495 1.046c0 .253.039.452.116.596s.184.265.311.358l.003.002c.162.115.348.217.544.296l.018.006c.151.069.431.177.714.279l.132.041c.778.288 1.365.635 1.76 1.038.321.328.509.742.569 1.241-.008-.117.117 1.109.018.183.002.056.006.113.006.171 0 .433-.097.847-.289 1.245s-.464.728-.818.992a4.26 4.26 0 0 1-1.336.646l-.03.007c-.516.147-1.172.221-1.967.221-.722 0-1.318-.061-1.789-.184s-.845-.282-1.12-.474c-.281-.193-.473-.398-.575-.617s-.155-.425-.155-.617c0-.349.125-.655.373-.916s.58-.391.991-.391c.344 0 .631.092.863.278.236.193.43.426.574.691l.006.012c.136.244.259.528.352.824l.009.032c.035.09.106.322.172.556l.034.139c.647 0 1.137-.144 1.469-.436s.498-.691.498-1.196c0-.222-.05-.408-.15-.558s-.234-.283-.399-.398c-.166-.108-.377-.213-.635-.315s-.513-.198-.765-.289c-.693-.246-1.24-.587-1.644-1.023s-.605-.978-.605-1.628v-.013c0-.391.093-.76.259-1.087l-.006.014c.17-.34.434-.654.794-.944.355-.276.804-.496 1.348-.661s1.179-.249 1.906-.249zm8.017 1.874c-.329 0-.64.066-.933.199s-.605.397-.934.792c-.04.183-.109.534-.21 1.055s-.152 1.162-.152 1.923c0 .778.123 1.384.365 1.82s.566.655.968.655c.626 0 1.168-.432 1.628-1.295h.002c.46-.864.69-1.912.69-3.144 0-.618-.134-1.108-.402-1.468s-.608-.538-1.022-.538z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/socket-dot-io.svg b/assets/lib/simple-icons/icons/socket-dot-io.svg
deleted file mode 100644
index 29a09b52..00000000
--- a/assets/lib/simple-icons/icons/socket-dot-io.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Socket.io icon</title><path d="M11.936.016a12.17 12.17 0 0 0-2.975.378C4.281 1.557.567 5.797.091 10.604c-.59 4.549 1.708 9.286 5.644 11.635 3.861 2.418 9.093 2.32 12.874-.223 3.397-2.206 5.512-6.228 5.386-10.285-.058-4.016-2.31-7.917-5.759-9.98C16.354.59 14.143.007 11.936.016zm-.063 1.696c4.945-.007 9.789 3.814 10.282 8.925.945 5.66-3.753 11.413-9.488 11.58-5.454.544-10.725-4.08-10.88-9.557C1.38 8.226 4.303 3.825 8.485 2.36a9.113 9.113 0 0 1 3.388-.647zm5.091 3.225c-2.687 2.085-5.26 4.308-7.889 6.457 1.203.017 2.412.016 3.621.01 1.41-2.165 2.859-4.301 4.268-6.467zm-5.665 7.654c-1.41 2.166-2.86 4.309-4.27 6.474 2.693-2.08 5.255-4.32 7.902-6.456a255.425 255.425 0 0 0-3.632-.018z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/socketdotio.svg b/assets/lib/simple-icons/icons/socketdotio.svg
new file mode 100644
index 00000000..41ac3d4d
--- /dev/null
+++ b/assets/lib/simple-icons/icons/socketdotio.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Socket.io</title><path d="M11.9362.0137a12.1694 12.1694 0 00-2.9748.378C4.2816 1.5547.5678 5.7944.0918 10.6012c-.59 4.5488 1.7079 9.2856 5.6437 11.6345 3.8608 2.4179 9.0926 2.3199 12.8734-.223 3.3969-2.206 5.5118-6.2277 5.3858-10.2845-.058-4.0159-2.31-7.9167-5.7588-9.9796C16.354.5876 14.1431.0047 11.9362.0137zm-.063 1.696c4.9448-.007 9.7886 3.8137 10.2815 8.9245.945 5.6597-3.7528 11.4125-9.4875 11.5795-5.4538.544-10.7245-4.0798-10.8795-9.5566-.407-4.4338 2.5159-8.8346 6.6977-10.2995a9.1126 9.1126 0 013.3878-.647zm5.0908 3.2248c-2.6869 2.0849-5.2598 4.3078-7.8886 6.4567 1.2029.017 2.4118.016 3.6208.01 1.41-2.165 2.8589-4.3008 4.2678-6.4667zm-5.6647 7.6536c-1.41 2.166-2.86 4.3088-4.2699 6.4737 2.693-2.0799 5.2548-4.3198 7.9017-6.4557a255.4132 255.4132 0 00-3.6318-.018z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/sogou.svg b/assets/lib/simple-icons/icons/sogou.svg
index 4b5a5638..54e7cd32 100644
--- a/assets/lib/simple-icons/icons/sogou.svg
+++ b/assets/lib/simple-icons/icons/sogou.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Sogou icon</title><path d="M16.801 22.74L17.79 24c1.561-.676 2.926-1.62 4.051-2.851l-.946-1.318c-1.11 1.289-2.475 2.279-4.08 2.909h-.014zM12 22.199c-5.775 0-10.455-4.619-10.455-10.35C1.545 6.15 6.225 1.53 12 1.53s10.456 4.65 10.456 10.35c0 2.55-.946 4.891-2.507 6.69l.945 1.261C22.801 17.729 24 14.939 24 11.88 24 5.295 18.63 0 12 0S0 5.311 0 11.85c0 6.57 5.37 11.88 12 11.88 1.71 0 3.33-.346 4.801-.99l-.961-1.26c-1.2.45-2.49.719-3.84.719zM18 12.646c-2.25-1.86-5.34-2.101-7.801-3.556-.75-.479-.148-1.395.602-1.425 2.699-.45 5.369.63 7.889 1.5l.151-2.655c-3.151-1.14-6.57-1.875-9.901-1.35-1.2.3-2.4.675-3.254 1.56-1.171 1.2-.961 3.36.389 4.32 2.236 1.755 5.176 2.011 7.621 3.36.96.39.555 1.68-.391 1.77-2.925.555-5.805-.721-8.325-2.1-.03 1.02-.06 2.01-.06 3 3.195 1.409 6.75 2.069 10.2 1.529 1.17-.225 2.37-.6 3.225-1.454 1.229-1.2 1.111-3.511-.33-4.5H18z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Sogou</title><path d="M16.801 22.74L17.79 24c1.561-.676 2.926-1.62 4.051-2.851l-.946-1.318c-1.11 1.289-2.475 2.279-4.08 2.909h-.014zM12 22.199c-5.775 0-10.455-4.619-10.455-10.35C1.545 6.15 6.225 1.53 12 1.53s10.456 4.65 10.456 10.35c0 2.55-.946 4.891-2.507 6.69l.945 1.261C22.801 17.729 24 14.939 24 11.88 24 5.295 18.63 0 12 0S0 5.311 0 11.85c0 6.57 5.37 11.88 12 11.88 1.71 0 3.33-.346 4.801-.99l-.961-1.26c-1.2.45-2.49.719-3.84.719zM18 12.646c-2.25-1.86-5.34-2.101-7.801-3.556-.75-.479-.148-1.395.602-1.425 2.699-.45 5.369.63 7.889 1.5l.151-2.655c-3.151-1.14-6.57-1.875-9.901-1.35-1.2.3-2.4.675-3.254 1.56-1.171 1.2-.961 3.36.389 4.32 2.236 1.755 5.176 2.011 7.621 3.36.96.39.555 1.68-.391 1.77-2.925.555-5.805-.721-8.325-2.1-.03 1.02-.06 2.01-.06 3 3.195 1.409 6.75 2.069 10.2 1.529 1.17-.225 2.37-.6 3.225-1.454 1.229-1.2 1.111-3.511-.33-4.5H18z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/solid.svg b/assets/lib/simple-icons/icons/solid.svg
new file mode 100644
index 00000000..c2737c48
--- /dev/null
+++ b/assets/lib/simple-icons/icons/solid.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Solid</title><path d="M11.558.788A9.082 9.082 0 0 0 9.776.99l-.453.15c-.906.303-1.656.755-2.1 1.348l-.301.452-2.035 3.528c.426-.387.974-.698 1.643-.894h.001l.613-.154h.001a8.82 8.82 0 0 1 1.777-.206c2.916-.053 6.033 1.148 8.423 2.36 2.317 1.175 3.888 2.32 3.987 2.39L24 5.518c-.082-.06-1.66-1.21-3.991-2.386-2.393-1.206-5.521-2.396-8.45-2.343zM8.924 5.366a8.634 8.634 0 0 0-1.745.203l-.606.151c-1.278.376-2.095 1.16-2.43 2.108-.334.948-.188 2.065.487 3.116.33.43.747.813 1.216 1.147L12.328 10h.001a6.943 6.943 0 0 1 6.013 1.013l2.844-.963c-.17-.124-1.663-1.2-3.91-2.34-2.379-1.206-5.479-2.396-8.352-2.344zm5.435 4.497a6.791 6.791 0 0 0-1.984.283L2.94 13.189 0 18.334l9.276-2.992a6.945 6.945 0 0 1 7.408 2.314v.001c.695.903.89 1.906.66 2.808l2.572-4.63c.595-1.041.45-2.225-.302-3.429a6.792 6.792 0 0 0-5.255-2.543zm-3.031 5.341a6.787 6.787 0 0 0-2.006.283L.008 18.492c.175.131 2.02 1.498 4.687 2.768 2.797 1.332 6.37 2.467 9.468 1.712l.454-.152h.002c1.278-.376 2.134-1.162 2.487-2.09.353-.93.207-2.004-.541-2.978a6.791 6.791 0 0 0-5.237-2.548z"/></svg>
diff --git a/assets/lib/simple-icons/icons/solidity.svg b/assets/lib/simple-icons/icons/solidity.svg
new file mode 100644
index 00000000..582fb9fb
--- /dev/null
+++ b/assets/lib/simple-icons/icons/solidity.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Solidity</title><path d="M4.409 6.608L7.981.255l3.572 6.353H4.409zM8.411 0l3.569 6.348L15.552 0H8.411zm4.036 17.392l3.572 6.354 3.575-6.354h-7.147zm-.608-10.284h-7.43l3.715 6.605 3.715-6.605zm.428-.25h7.428L15.982.255l-3.715 6.603zM15.589 24l-3.569-6.349L8.448 24h7.141zm-3.856-6.858H4.306l3.712 6.603 3.715-6.603zm.428-.25h7.433l-3.718-6.605-3.715 6.605z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/sololearn.svg b/assets/lib/simple-icons/icons/sololearn.svg
new file mode 100644
index 00000000..2adf67e9
--- /dev/null
+++ b/assets/lib/simple-icons/icons/sololearn.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Sololearn</title><path d="M18.621 16.084a8.483 8.483 0 0 1-2.922 6.427c-.603.53-.19 1.522.613 1.442a9.039 9.039 0 0 0 1.587-.3 8.32 8.32 0 0 0 5.787-5.887 8.555 8.555 0 0 0-8.258-10.832 9.012 9.012 0 0 0-1.045.06c-.794.1-.995 1.161-.29 1.542 2.701 1.452 4.53 4.285 4.53 7.548zM7.906 18.597a8.538 8.538 0 0 1-6.45-2.913c-.532-.6-1.527-.19-1.446.61a8.943 8.943 0 0 0 .3 1.582c.794 2.823 3.064 5.026 5.907 5.766 5.727 1.492 10.87-2.773 10.87-8.229 0-.35-.02-.7-.06-1.04-.1-.792-1.165-.992-1.547-.29a8.597 8.597 0 0 1-7.574 4.514zM5.382 7.916a8.483 8.483 0 0 1 2.924-6.427c.603-.531.19-1.522-.613-1.442a9.93 9.93 0 0 0-1.598.29A8.339 8.339 0 0 0 .31 6.224a8.555 8.555 0 0 0 8.258 10.832c.352 0 .704-.02 1.045-.06.794-.1.995-1.162.29-1.542a8.54 8.541 0 0 1-4.52-7.538zm10.72-2.513a8.538 8.538 0 0 1 6.45 2.913c.53.6 1.526.19 1.445-.61a8.945 8.945 0 0 0-.3-1.583C22.902 3.3 20.632 1.098 17.788.357 12.071-1.145 6.928 3.12 6.928 8.576c0 .35.02.7.06 1.041.1.791 1.168.991 1.549.29A8.58 8.58 0 0 1 16.1 5.404z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/solus.svg b/assets/lib/simple-icons/icons/solus.svg
index 7f79d282..8d187813 100644
--- a/assets/lib/simple-icons/icons/solus.svg
+++ b/assets/lib/simple-icons/icons/solus.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Solus icon</title><path d="M7.453 0c-.18.587-.369 1.167-.565 1.75A11.638 11.638 0 0 0 0 12.364a11.638 11.638 0 0 0 .516 3.403l-.339.598L0 16.73l.279.143a3.448 3.448 0 0 0 .741.222A11.638 11.638 0 0 0 2 18.868c4.034.343 8.55.512 12.446-.056 3.192-.463 5.94-1.423 7.735-3.117.252-.233.474-.474.674-.722.019-.038.037-.053.06-.076.011 0 .026-.037.038-.052.015 0 .03-.038.041-.057.008 0 .015-.038.023-.038.33-.444.587-.892.801-1.31l.181-.365-.365-.365a5.936 5.936 0 0 0-.361-.35A11.638 11.638 0 0 0 11.635.722a11.638 11.638 0 0 0-3.211.463C7.96.508 7.596.041 7.453 0zm.365 1.637C9.06 3.82 10.13 5.06 11.454 7.457c.132 1.524.67 9.45.727 10.181-.392-.037-2.485-.24-5.104-.515-1.43-.147-2.899-.316-4.092-.49l-1.9-.447c2.149-3.787 5.551-9.727 6.737-14.548zm4.543 6.18s4.991 3.927 7.092 8.73c-2.56 1.26-4.916 1.098-6.361 1.09 1.023-2.634 1.023-6.21-.73-9.82zm3.456 2.184a45.14 45.14 0 0 1 2.91.907c1.768.629 3.417 1.49 4.365 2.364a6.956 6.956 0 0 1-2.91 2.91c.151-1.495-.39-2.933-1.456-4.002-.787-.787-1.822-1.453-2.91-2.183zm6.707 6.478c-2.352 1.667-5.126 2.68-7.965 3.112a41.026 41.026 0 0 1-3.715.34h-.323a53.48 53.48 0 0 1-3.727 0 85.763 85.763 0 0 1-4.178-.23h-.003c2.555 3.255 6.993 4.893 11.092 4.102a11.367 11.367 0 0 0 4.498-1.852 11.638 11.638 0 0 0 .007 0c.312-.214.614-.444.903-.685a11.638 11.638 0 0 0 .038-.037 11.555 11.555 0 0 0 3.376-4.762zM2.511 19.584a11.638 11.638 0 0 0 .023.038c-.008 0-.015-.038-.023-.038z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Solus</title><path d="M7.453 0c-.18.587-.369 1.167-.565 1.75A11.638 11.638 0 0 0 0 12.364a11.638 11.638 0 0 0 .516 3.403l-.339.598L0 16.73l.279.143a3.448 3.448 0 0 0 .741.222A11.638 11.638 0 0 0 2 18.868c4.034.343 8.55.512 12.446-.056 3.192-.463 5.94-1.423 7.735-3.117.252-.233.474-.474.674-.722.019-.038.037-.053.06-.076.011 0 .026-.037.038-.052.015 0 .03-.038.041-.057.008 0 .015-.038.023-.038.33-.444.587-.892.801-1.31l.181-.365-.365-.365a5.936 5.936 0 0 0-.361-.35A11.638 11.638 0 0 0 11.635.722a11.638 11.638 0 0 0-3.211.463C7.96.508 7.596.041 7.453 0zm.365 1.637C9.06 3.82 10.13 5.06 11.454 7.457c.132 1.524.67 9.45.727 10.181-.392-.037-2.485-.24-5.104-.515-1.43-.147-2.899-.316-4.092-.49l-1.9-.447c2.149-3.787 5.551-9.727 6.737-14.548zm4.543 6.18s4.991 3.927 7.092 8.73c-2.56 1.26-4.916 1.098-6.361 1.09 1.023-2.634 1.023-6.21-.73-9.82zm3.456 2.184a45.14 45.14 0 0 1 2.91.907c1.768.629 3.417 1.49 4.365 2.364a6.956 6.956 0 0 1-2.91 2.91c.151-1.495-.39-2.933-1.456-4.002-.787-.787-1.822-1.453-2.91-2.183zm6.707 6.478c-2.352 1.667-5.126 2.68-7.965 3.112a41.026 41.026 0 0 1-3.715.34h-.323a53.48 53.48 0 0 1-3.727 0 85.763 85.763 0 0 1-4.178-.23h-.003c2.555 3.255 6.993 4.893 11.092 4.102a11.367 11.367 0 0 0 4.498-1.852 11.638 11.638 0 0 0 .007 0c.312-.214.614-.444.903-.685a11.638 11.638 0 0 0 .038-.037 11.555 11.555 0 0 0 3.376-4.762zM2.511 19.584a11.638 11.638 0 0 0 .023.038c-.008 0-.015-.038-.023-.038z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/sonarcloud.svg b/assets/lib/simple-icons/icons/sonarcloud.svg
index cda076d4..c57b1382 100644
--- a/assets/lib/simple-icons/icons/sonarcloud.svg
+++ b/assets/lib/simple-icons/icons/sonarcloud.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>SonarCloud icon</title><path d="M22.406 10.9a7.088 7.088 0 00-3.377-2.358v-.085c0-4.035-3.156-7.324-7.047-7.324-3.893 0-7.05 3.282-7.05 7.325v.1C2.081 9.492 0 12.268 0 15.542c0 4.035 3.159 7.325 7.05 7.325a6.907 6.907 0 004.952-2.108 6.885 6.885 0 004.947 2.108c3.884 0 7.051-3.282 7.051-7.325a7.572 7.572 0 00-1.594-4.643zM16.95 21.014c-2.903 0-5.267-2.456-5.267-5.474a.91.91 0 00-.89-.924.906.906 0 00-.892.925c0 1.368.367 2.651.994 3.748a5.156 5.156 0 01-3.845 1.733c-2.904 0-5.27-2.457-5.27-5.474 0-3.016 2.366-5.473 5.27-5.473.63 0 1.241.117 1.827.335.007 0 .013.007.02.007.203.071.489.21.578.287a.858.858 0 001.249-.1.942.942 0 00-.097-1.3c-.39-.342-.995-.575-1.144-.63a6.814 6.814 0 00-2.425-.443c-.113 0-.225 0-.338.007.12-2.916 2.433-5.247 5.27-5.247 2.903 0 5.267 2.456 5.267 5.474a5.569 5.569 0 01-2.215 4.463.948.948 0 00-.21 1.283c.171.25.45.39.727.39a.86.86 0 00.516-.172 7.381 7.381 0 002.709-4.02c2.035.785 3.449 2.829 3.449 5.139-.007 3.01-2.371 5.466-5.283 5.466z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>SonarCloud</title><path d="M22.406 10.9a7.088 7.088 0 00-3.377-2.358v-.085c0-4.035-3.156-7.324-7.047-7.324-3.893 0-7.05 3.282-7.05 7.325v.1C2.081 9.492 0 12.268 0 15.542c0 4.035 3.159 7.325 7.05 7.325a6.907 6.907 0 004.952-2.108 6.885 6.885 0 004.947 2.108c3.884 0 7.051-3.282 7.051-7.325a7.572 7.572 0 00-1.594-4.643zM16.95 21.014c-2.903 0-5.267-2.456-5.267-5.474a.91.91 0 00-.89-.924.906.906 0 00-.892.925c0 1.368.367 2.651.994 3.748a5.156 5.156 0 01-3.845 1.733c-2.904 0-5.27-2.457-5.27-5.474 0-3.016 2.366-5.473 5.27-5.473.63 0 1.241.117 1.827.335.007 0 .013.007.02.007.203.071.489.21.578.287a.858.858 0 001.249-.1.942.942 0 00-.097-1.3c-.39-.342-.995-.575-1.144-.63a6.814 6.814 0 00-2.425-.443c-.113 0-.225 0-.338.007.12-2.916 2.433-5.247 5.27-5.247 2.903 0 5.267 2.456 5.267 5.474a5.569 5.569 0 01-2.215 4.463.948.948 0 00-.21 1.283c.171.25.45.39.727.39a.86.86 0 00.516-.172 7.381 7.381 0 002.709-4.02c2.035.785 3.449 2.829 3.449 5.139-.007 3.01-2.371 5.466-5.283 5.466z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/sonarlint.svg b/assets/lib/simple-icons/icons/sonarlint.svg
index 60654c21..ce196cbe 100644
--- a/assets/lib/simple-icons/icons/sonarlint.svg
+++ b/assets/lib/simple-icons/icons/sonarlint.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>SonarLint icon</title><path d="M12.182.033c-.697-.01-1.399.008-1.787.063a12.054 12.054 0 00-6.88 3.414C1.226 5.8 0 8.754 0 12.004c0 3.298 1.26 6.283 3.611 8.568 1.833 1.779 3.991 2.871 6.53 3.293.79.127 2.731.144 3.527.024 2.647-.392 4.94-1.537 6.814-3.412 2.394-2.382 3.635-5.53 3.508-8.895-.12-3.135-1.295-5.842-3.502-8.055C18.673 1.72 16.514.603 13.94.145 13.57.08 12.878.043 12.182.033zm-.026 2.127c.38.007.764.033 1.15.082 2.129.272 4.113 1.255 5.663 2.805 1.88 1.881 2.875 4.286 2.875 6.951 0 2.647-.97 5.011-2.826 6.904-1.387 1.405-3.076 2.328-5.047 2.75-.863.187-2.538.229-3.407.096-2.164-.35-4.021-1.283-5.54-2.809-1.52-1.513-2.45-3.359-2.788-5.517-.096-.621-.096-2.28 0-2.865.38-2.255 1.292-4.02 2.871-5.577 1.92-1.888 4.39-2.867 7.05-2.82zm6.91 7.639c-.095-.023-.2-.013-.357.017-.253.049-.746.61-1.012 1.164-.452.929-.725 1.2-1.123 1.11-.277-.06-.705-.531-1.06-1.17-.38-.675-.447-.76-.743-.91-.602-.308-1.127 0-1.664.982-.373.67-.645.952-.964.994-.248.037-.27.024-.541-.26-.157-.162-.404-.523-.555-.8-.332-.621-.58-.815-1.05-.815-.833 0-1.177.254-1.665 1.23-.35.694-.645 1.085-.826 1.085-.296 0-.573-.324-1.043-1.235-.169-.331-.378-.675-.469-.765-.597-.633-1.7-.097-2.34 1.133-.138.265-.35.663-.47.886-.187.356-.217.47-.217.82 0 .495.085.645.332.585.235-.06.59-.452.957-1.06.506-.839 1.002-1.105 1.412-.755.205.175.41.573.5.983.084.41.441.855.797 1 .253.108.319.115.572.043.398-.103.778-.446 1.11-1.006.488-.82.916-1.093 1.453-.93.331.097.613.405.94 1.014.463.862.844 1.193 1.2 1.043.32-.139.627-.488.977-1.121.374-.682.742-.997 1.164-.997.422 0 .796.314 1.182.977.229.41.656.803.916.857.259.049.608-.055.837-.242.103-.09.34-.415.52-.722.856-1.454 1.404-1.4 2.314.222.217.386.586.7.748.639.109-.042.188-.507.133-.82-.054-.332-.777-1.893-1.115-2.387-.157-.23-.398-.507-.543-.615-.124-.097-.21-.152-.307-.174z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>SonarLint</title><path d="M12 0C5.412 0 0 5.342 0 12c0 6.66 5.411 12 12 12 6.59 0 12-5.41 12-12 0-6.658-5.41-12-12-12zm0 2.22A9.77 9.77 0 0 1 21.78 12 9.768 9.768 0 0 1 12 21.78 9.77 9.77 0 0 1 2.22 12 9.771 9.771 0 0 1 12 2.22zM5.203 9.988c-.763 0-1.179.763-1.456 1.387 0 0-.208.555-.347.763-.07.277-.486 1.18-.14 1.665.209.277.486-.139.694-.347.139-.208.418-.833.418-.833.346-.555.485-.832.831-.832.347 0 .555.278.832.902.347.625.695 1.388 1.458 1.388s1.179-.763 1.456-1.388c.278-.555.485-.902.832-.902s.556.278.833.902c.347.625.694 1.388 1.457 1.388.763 0 1.179-.763 1.456-1.388.278-.555.485-.902.832-.902s.556.278.833.902c.347.625.694 1.388 1.457 1.388.763 0 1.179-.763 1.456-1.388.277-.555.486-.902.833-.902s.555.278.832.902c0 0 .139.277.347.624.07.138.416.693.693.693.278 0 .347-.832.07-1.525-.278-.625-.485-1.11-.485-1.11-.347-.624-.694-1.387-1.457-1.387-.763 0-1.18.763-1.458 1.387-.277.555-.485.901-.831.901-.347 0-.555-.277-.832-.9-.347-.625-.695-1.388-1.458-1.388s-1.179.763-1.456 1.387c-.278.555-.485.901-.832.901s-.556-.277-.833-.9c-.347-.625-.694-1.388-1.457-1.388-.763 0-1.179.763-1.456 1.387-.278.555-.485.901-.832.901s-.556-.277-.833-.9c-.347-.625-.694-1.388-1.457-1.388z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/sonarqube.svg b/assets/lib/simple-icons/icons/sonarqube.svg
index 486eed8d..1ea28acb 100644
--- a/assets/lib/simple-icons/icons/sonarqube.svg
+++ b/assets/lib/simple-icons/icons/sonarqube.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>SonarQube icon</title><path d="M15.685.386l-.465.766c3.477 2.112 6.305 5.27 7.966 8.89L24 9.67C22.266 5.887 19.313 2.59 15.685.386zM8.462.91l-.305 1.075c6.89 1.976 12.384 7.64 13.997 14.421l1.085-.258C21.535 8.977 15.735 2.997 8.462.909zM0 2.667v1.342c10.963 0 19.883 8.795 19.883 19.605h1.342c0-11.55-9.522-20.947-21.225-20.947z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>SonarQube</title><path d="M15.685.386l-.465.766c3.477 2.112 6.305 5.27 7.966 8.89L24 9.67C22.266 5.887 19.313 2.59 15.685.386zM8.462.91l-.305 1.075c6.89 1.976 12.384 7.64 13.997 14.421l1.085-.258C21.535 8.977 15.735 2.997 8.462.909zM0 2.667v1.342c10.963 0 19.883 8.795 19.883 19.605h1.342c0-11.55-9.522-20.947-21.225-20.947z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/sonarsource.svg b/assets/lib/simple-icons/icons/sonarsource.svg
index db9831b2..fce5f217 100644
--- a/assets/lib/simple-icons/icons/sonarsource.svg
+++ b/assets/lib/simple-icons/icons/sonarsource.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>SonarSource icon</title><path d="M15.71.4l-.467.737c3.476 2.14 6.284 5.28 7.955 8.89L24 9.694c-1.671-3.81-4.68-7.086-8.29-9.292zM8.49.87l-.333 1.069c6.952 2.006 12.434 7.62 14.039 14.44l1.069-.268C21.527 8.958 15.778 2.942 8.49.87zM0 2.607v1.338c10.964 0 19.922 8.824 19.922 19.654h1.337C21.26 12.034 11.7 2.607 0 2.607z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>SonarSource</title><path d="M15.71.4l-.467.737c3.476 2.14 6.284 5.28 7.955 8.89L24 9.694c-1.671-3.81-4.68-7.086-8.29-9.292zM8.49.87l-.333 1.069c6.952 2.006 12.434 7.62 14.039 14.44l1.069-.268C21.527 8.958 15.778 2.942 8.49.87zM0 2.607v1.338c10.964 0 19.922 8.824 19.922 19.654h1.337C21.26 12.034 11.7 2.607 0 2.607z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/songkick.svg b/assets/lib/simple-icons/icons/songkick.svg
index f86c2ec0..6c05ac6c 100644
--- a/assets/lib/simple-icons/icons/songkick.svg
+++ b/assets/lib/simple-icons/icons/songkick.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Songkick icon</title><path d="M6.55 18.779c-1.855 0-3.372-.339-4.598-1.602l1.92-1.908c.63.631 1.74.853 2.715.853 1.186 0 1.739-.391 1.739-1.089 0-.291-.06-.529-.239-.717-.15-.154-.404-.273-.795-.324l-1.455-.205c-1.064-.152-1.891-.51-2.43-1.072-.555-.578-.84-1.395-.84-2.434C2.536 8.066 4.2 6.45 6.96 6.45c1.74 0 3.048.407 4.086 1.448L9.171 9.77c-.765-.766-1.77-.715-2.295-.715-1.039 0-1.465.597-1.465 1.125 0 .152.051.375.24.561.15.153.404.307.832.359l1.467.203c1.09.153 1.875.495 2.385 1.005.645.63.9 1.53.9 2.655 0 2.47-2.127 3.819-4.68 3.819l-.005-.003zM20.813 2.651C19.178 1.432 17.37.612 15.089.237v10.875l3.261-4.539h3.565l-4.095 5.72s.944 1.51 1.515 2.405c.586.899 1.139 1.14 1.965 1.14h.57v2.806h-.872c-1.812 0-2.9-.33-3.72-1.575-.504-.811-2.175-3.436-2.175-3.436v4.995H12.12V-.001H12c-3.852 0-6.509.931-8.811 2.652C-.132 5.137.001 8.451.001 11.997c0 3.547-.133 6.867 3.188 9.352C5.491 23.074 8.148 24 12 24s6.51-.927 8.812-2.651C24.131 18.865 24 15.544 24 11.997c0-3.546.132-6.859-3.188-9.346h.001z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Songkick</title><path d="M6.55 18.779c-1.855 0-3.372-.339-4.598-1.602l1.92-1.908c.63.631 1.74.853 2.715.853 1.186 0 1.739-.391 1.739-1.089 0-.291-.06-.529-.239-.717-.15-.154-.404-.273-.795-.324l-1.455-.205c-1.064-.152-1.891-.51-2.43-1.072-.555-.578-.84-1.395-.84-2.434C2.536 8.066 4.2 6.45 6.96 6.45c1.74 0 3.048.407 4.086 1.448L9.171 9.77c-.765-.766-1.77-.715-2.295-.715-1.039 0-1.465.597-1.465 1.125 0 .152.051.375.24.561.15.153.404.307.832.359l1.467.203c1.09.153 1.875.495 2.385 1.005.645.63.9 1.53.9 2.655 0 2.47-2.127 3.819-4.68 3.819l-.005-.003zM20.813 2.651C19.178 1.432 17.37.612 15.089.237v10.875l3.261-4.539h3.565l-4.095 5.72s.944 1.51 1.515 2.405c.586.899 1.139 1.14 1.965 1.14h.57v2.806h-.872c-1.812 0-2.9-.33-3.72-1.575-.504-.811-2.175-3.436-2.175-3.436v4.995H12.12V-.001H12c-3.852 0-6.509.931-8.811 2.652C-.132 5.137.001 8.451.001 11.997c0 3.547-.133 6.867 3.188 9.352C5.491 23.074 8.148 24 12 24s6.51-.927 8.812-2.651C24.131 18.865 24 15.544 24 11.997c0-3.546.132-6.859-3.188-9.346h.001z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/songoda.svg b/assets/lib/simple-icons/icons/songoda.svg
new file mode 100644
index 00000000..35da7ee9
--- /dev/null
+++ b/assets/lib/simple-icons/icons/songoda.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Songoda</title><path d="M23.23 4.917c-1.414-.156-6.227-.945-10.604-4.688a.968.968 0 0 0-1.251 0C6.997 3.967 2.185 4.76.77 4.917a.435.435 0 0 0-.385.463c.29 3.924 1.918 14.211 10.998 18.482.39.184.844.184 1.234 0 9.079-4.27 10.708-14.557 10.998-18.482a.435.435 0 0 0-.385-.463zm-1.704 2.016c-.581 4.255-2.54 11.442-9.126 14.896a.87.87 0 0 1-.807 0C5.006 18.373 3.048 11.19 2.47 6.935a.365.365 0 0 1 .285-.404 22.733 22.733 0 0 0 2.208-.596v3.38c0 .489.402.89.89.89.489 0 .89-.401.89-.89V5.279a22.335 22.335 0 0 0 4.989-2.87.44.44 0 0 1 .534 0c3.338 2.556 6.805 3.656 8.975 4.12.186.04.31.217.285.405zm-5.831 7.812c0 .923-.347 1.671-1.04 2.246-.687.574-1.572.86-2.654.86-1.362 0-2.407-.37-3.135-1.114-.374-.385-.56-.739-.56-1.063a.771.771 0 0 1 .28-.584c.185-.175.43-.262.733-.262.355 0 .655.167.9.501.4.55.971.824 1.71.824.449 0 .81-.099 1.083-.297.344-.251.515-.632.515-1.14 0-.545-.25-1.021-.75-1.43-.361-.294-.891-.606-1.59-.936-.855-.404-1.501-.86-1.938-1.365-.448-.514-.672-1.158-.672-1.93 0-1.003.398-1.77 1.196-2.298.599-.404 1.352-.606 2.26-.606.995 0 1.813.267 2.454.801.407.34.611.686.611 1.04 0 .27-.137.492-.41.667a1.131 1.131 0 0 1-.627.188c-.36 0-.623-.124-.785-.374-.291-.454-.71-.681-1.258-.681-.588 0-.978.24-1.17.718a1.99 1.99 0 0 0-.14.741c-.005.3.108.591.315.809.297.329.83.683 1.598 1.062.92.454 1.593.874 2.018 1.258.704.654 1.056 1.442 1.056 2.365z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/sonicwall.svg b/assets/lib/simple-icons/icons/sonicwall.svg
index 6f5fea12..5754f81b 100644
--- a/assets/lib/simple-icons/icons/sonicwall.svg
+++ b/assets/lib/simple-icons/icons/sonicwall.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>SonicWall icon</title><path d="M23.638 10.303h-.045v-.1h.045c.037 0 .055.019.055.051s-.018.05-.055.05zm.15-.05c0-.059-.038-.112-.127-.112h-.162v.364h.094v-.14h.035l.085.14h.11l-.104-.151a.102.102 0 00.068-.101m-.15.34a.267.267 0 110-.535.267.267 0 010 .535zm0-.574a.307.307 0 100 .614.307.307 0 000-.614m-7.7.1l-.621 1.846-.014.04-.013-.04-.611-1.854h-.497l-.611 1.854-.014.04-.013-.04-.62-1.846h-.616l.981 2.726h.505l.615-1.778.014-.038.013.038.615 1.778h.505l.982-2.726h-.6M1.033 11.355c-.615-.126-.732-.287-.732-.539v-.007c0-.267.254-.46.605-.46.293 0 .526.087.755.285l.021.018.006-.006v-.302a1.303 1.303 0 00-.775-.225c-.49 0-.86.305-.86.708v.008c0 .408.26.627.895.755.598.12.71.277.71.525v.007c0 .287-.257.487-.626.487-.36 0-.616-.106-.91-.378l-.021-.019-.005.005v.312c.283.212.574.309.924.309.522 0 .886-.302.886-.734v-.008c0-.395-.26-.616-.873-.74m10.083-1.23c-.4 0-.732.128-.998.387a1.282 1.282 0 00-.398.956c0 .36.11.667.329.922.261.301.618.452 1.07.452.239 0 .454-.045.647-.135.096-.044.184-.12.264-.183v-.336c-.242.273-.54.41-.894.41-.33 0-.603-.106-.82-.317a1.058 1.058 0 01-.324-.79 1.067 1.067 0 01.554-.963c.176-.1.367-.149.574-.149.189 0 .362.038.52.114.15.072.28.177.39.314v-.35c-.078-.065-.165-.143-.26-.19a1.465 1.465 0 00-.654-.143m6.602.713l.36.927-.074-.003a7.525 7.525 0 00-.65.008zm.903.96l-.645-1.68h-.524l-.64 1.715c-.63.117-1.037.392-.836.936.278.758 1.542 1.212 1.542 1.212s-1.253-.808-.604-1.332c.29-.234.803-.41 1.29-.536l.28.725h.536l-.321-.837c.411-.084.721-.124.721-.124s-.365-.045-.8-.08m3.57-1.678h-.517v2.714h1.547v-.493h-1.03V10.12m-2.095 0h-.517v2.714h1.547v-.493h-1.03V10.12M8.728 12.847h.256v-2.73h-.256v2.73m-1.01-.633l-1.82-2.095h-.06v2.734h.283v-2.07l1.805 2.07h.061v-2.734h-.27v2.095m-2.985-.176c-.095.169-.228.301-.398.398-.17.097-.355.145-.554.145-.3 0-.555-.105-.767-.316a1.05 1.05 0 01-.318-.775c0-.206.047-.394.143-.562a1.07 1.07 0 01.4-.401c.17-.1.351-.149.542-.149.194 0 .377.05.55.149a1.067 1.067 0 01.545.95c0 .206-.048.393-.143.561zm-.964-1.91c-.24 0-.464.06-.67.18-.207.119-.37.284-.49.495-.12.211-.18.44-.18.688 0 .371.132.687.395.949.262.26.584.392.966.392.377 0 .697-.132.959-.394.262-.263.393-.582.393-.96 0-.38-.131-.7-.394-.96a1.336 1.336 0 00-.979-.39"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>SonicWall</title><path d="M23.678 10.007a.31.31 0 0 0 .016.62.308.308 0 0 0 .306-.308.31.31 0 0 0-.302-.312.31.31 0 0 0-.02 0zm.016.043a.27.27 0 0 1 .27.269.27.27 0 1 1-.27-.27zm-9.503.053l-.614 1.863-.013.04-.013-.04-.624-1.855h-.619l.986 2.74h.508l.618-1.788.013-.037.013.037.619 1.787h.507l.986-2.74h-.603l-.622 1.856-.015.04-.013-.04-.613-1.863zm-5.48.006v2.743h.258V10.11zm-7.823 0a1.315 1.315 0 0 0-.038.002c-.481 0-.85.306-.85.712 0 .41.26.63.898.759.6.12.715.279.715.526 0 .288-.26.49-.631.49a1.228 1.228 0 0 1-.923-.37l-.02-.02v.313a1.477 1.477 0 0 0 .923.31c.524 0 .89-.302.89-.738.005-.393-.257-.614-.872-.738-.619-.127-.739-.288-.739-.541 0-.27.255-.464.608-.464a1.091 1.091 0 0 1 .759.287l.022.018v-.318a1.315 1.315 0 0 0-.742-.227zm4.92.002v2.747h.284v-2.081l1.813 2.08h.063v-2.746h-.272v2.106l-1.828-2.106zm11.672 0l-.642 1.721c-.637.117-1.051.393-.848.943.278.76 1.549 1.218 1.549 1.218s-1.285-.801-.613-1.34c.296-.238.819-.414 1.313-.54l.278.719h.541l-.322-.833c.403-.08.708-.122.708-.122s-.36-.043-.785-.077l-.653-1.69zm2.136 0v2.721h1.554v-.49h-1.034v-2.231zm2.106 0v2.721h1.555v-.49H22.24v-2.231zm-17.953.008a1.344 1.344 0 0 0-.042 0 1.327 1.327 0 0 0-.67.176 1.313 1.313 0 0 0-.491.499 1.377 1.377 0 0 0-.185.69 1.292 1.292 0 0 0 .397.953 1.318 1.318 0 0 0 .971.395 1.351 1.351 0 0 0 1.359-1.356 1.307 1.307 0 0 0-.397-.965 1.344 1.344 0 0 0-.942-.392zm7.3.002a1.381 1.381 0 0 0-.96.392 1.292 1.292 0 0 0-.4.96 1.377 1.377 0 0 0 .33.923 1.353 1.353 0 0 0 1.077.454 1.516 1.516 0 0 0 .65-.136 1.477 1.477 0 0 0 .265-.185v-.338a1.16 1.16 0 0 1-.899.412 1.134 1.134 0 0 1-.823-.325 1.067 1.067 0 0 1-.325-.794 1.097 1.097 0 0 1 .146-.565 1.073 1.073 0 0 1 .41-.402 1.156 1.156 0 0 1 .576-.15 1.196 1.196 0 0 1 .515.12 1.132 1.132 0 0 1 .4.314v-.35a1.477 1.477 0 0 0-.26-.185 1.477 1.477 0 0 0-.66-.145 1.381 1.381 0 0 0-.041 0zm12.661.009a.11.11 0 0 0-.012 0h-.162v.37h.094v-.142h.035l.085.142.11-.002-.103-.153a.103.103 0 0 0 .068-.102.11.11 0 0 0-.115-.113zm-.026.063a.048.048 0 0 1 .046.054c0 .032-.017.048-.054.048h-.046v-.101h.046a.048.048 0 0 1 .008 0zm-19.97.178a1.108 1.108 0 0 1 .006 0 1.093 1.093 0 0 1 .548.153 1.075 1.075 0 0 1 .405.399 1.097 1.097 0 0 1 .143.553 1.12 1.12 0 0 1-.143.564 1.047 1.047 0 0 1-.4.399 1.108 1.108 0 0 1-.553.145 1.087 1.087 0 0 1-1.091-1.095 1.119 1.119 0 0 1 .144-.564 1.108 1.108 0 0 1 .94-.554zm14.015.465l.368.931c-.032 0-.065-.003-.097-.004a7.414 7.414 0 0 0-.622.01h-.018z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/sonos.svg b/assets/lib/simple-icons/icons/sonos.svg
index 019cfca8..5655a145 100644
--- a/assets/lib/simple-icons/icons/sonos.svg
+++ b/assets/lib/simple-icons/icons/sonos.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Sonos icon</title><path d="M12.988 12.36l-2.813-2.634v4.429h.837V11.7l2.813 2.633V9.905h-.837zM6.464 9.665A2.3 2.3 0 0 0 4.13 12c0 1.257 1.077 2.334 2.334 2.334A2.3 2.3 0 0 0 8.798 12a2.3 2.3 0 0 0-2.334-2.334m0 3.83A1.482 1.482 0 0 1 4.968 12c0-.838.658-1.496 1.496-1.496S7.96 11.162 7.96 12s-.658 1.496-1.496 1.496M2.694 12c-.24-.18-.54-.3-.958-.419-.838-.24-.838-.479-.838-.598 0-.24.299-.48.718-.48.36 0 .658.18.778.24l.06.06.658-.479-.06-.06s-.538-.598-1.436-.598c-.419 0-.838.12-1.137.359-.3.24-.479.598-.479.958s.18.718.479.957c.24.18.538.3.957.42.838.239.838.478.838.598 0 .239-.299.478-.718.478-.359 0-.658-.18-.778-.239l-.06-.06-.658.479.06.06s.538.598 1.436.598c.42 0 .838-.12 1.137-.359.3-.24.48-.598.48-.957 0-.36-.18-.659-.48-.958m14.843-2.334A2.3 2.3 0 0 0 15.202 12a2.337 2.337 0 0 0 2.334 2.334A2.3 2.3 0 0 0 19.87 12a2.337 2.337 0 0 0-2.334-2.334m0 3.83A1.482 1.482 0 0 1 16.04 12c0-.838.658-1.496 1.496-1.496s1.496.658 1.496 1.496-.718 1.496-1.496 1.496m3.77-1.556c.24.18.54.3.958.42.838.239.838.478.838.598 0 .239-.299.478-.718.478-.36 0-.658-.18-.778-.239h-.06l-.658.479.06.06s.538.598 1.436.598c.419 0 .838-.12 1.137-.359s.479-.598.479-.958-.18-.718-.479-.957c-.24-.18-.538-.3-.957-.42-.838-.239-.838-.478-.838-.598 0-.239.299-.478.718-.478.359 0 .658.18.778.239l.06.06.658-.479-.06-.06s-.538-.598-1.436-.598c-.42 0-.838.12-1.137.359-.3.24-.48.598-.48.957-.059.36.12.659.48.898"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Sonos</title><path d="M12.988 12.36l-2.813-2.634v4.429h.837V11.7l2.813 2.633V9.905h-.837zM6.464 9.665A2.3 2.3 0 0 0 4.13 12c0 1.257 1.077 2.334 2.334 2.334A2.3 2.3 0 0 0 8.798 12a2.3 2.3 0 0 0-2.334-2.334m0 3.83A1.482 1.482 0 0 1 4.968 12c0-.838.658-1.496 1.496-1.496S7.96 11.162 7.96 12s-.658 1.496-1.496 1.496M2.694 12c-.24-.18-.54-.3-.958-.419-.838-.24-.838-.479-.838-.598 0-.24.299-.48.718-.48.36 0 .658.18.778.24l.06.06.658-.479-.06-.06s-.538-.598-1.436-.598c-.419 0-.838.12-1.137.359-.3.24-.479.598-.479.958s.18.718.479.957c.24.18.538.3.957.42.838.239.838.478.838.598 0 .239-.299.478-.718.478-.359 0-.658-.18-.778-.239l-.06-.06-.658.479.06.06s.538.598 1.436.598c.42 0 .838-.12 1.137-.359.3-.24.48-.598.48-.957 0-.36-.18-.659-.48-.958m14.843-2.334A2.3 2.3 0 0 0 15.202 12a2.337 2.337 0 0 0 2.334 2.334A2.3 2.3 0 0 0 19.87 12a2.337 2.337 0 0 0-2.334-2.334m0 3.83A1.482 1.482 0 0 1 16.04 12c0-.838.658-1.496 1.496-1.496s1.496.658 1.496 1.496-.718 1.496-1.496 1.496m3.77-1.556c.24.18.54.3.958.42.838.239.838.478.838.598 0 .239-.299.478-.718.478-.36 0-.658-.18-.778-.239h-.06l-.658.479.06.06s.538.598 1.436.598c.419 0 .838-.12 1.137-.359s.479-.598.479-.958-.18-.718-.479-.957c-.24-.18-.538-.3-.957-.42-.838-.239-.838-.478-.838-.598 0-.239.299-.478.718-.478.359 0 .658.18.778.239l.06.06.658-.479-.06-.06s-.538-.598-1.436-.598c-.42 0-.838.12-1.137.359-.3.24-.48.598-.48.957-.059.36.12.659.48.898"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/sony.svg b/assets/lib/simple-icons/icons/sony.svg
new file mode 100644
index 00000000..38d17e13
--- /dev/null
+++ b/assets/lib/simple-icons/icons/sony.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Sony</title><path d="M8.5505 9.8881c.921 0 1.6574.2303 2.2209.7423.3848.3485.5999.8454.5939 1.3665a1.9081 1.9081 0 0 1-.5939 1.3726c-.5272.4848-1.3483.7423-2.221.7423-.8725 0-1.6785-.2575-2.2148-.7423-.3908-.3485-.609-.8484-.603-1.3726 0-.518.2182-1.015.603-1.3665.5-.4545 1.3847-.7423 2.2149-.7423zm.003 3.6692c.4606 0 .8878-.1606 1.1878-.4575.2999-.2999.4332-.6605.4332-1.1029 0-.4242-.1484-.821-.4333-1.1029-.2938-.2908-.7332-.4545-1.1877-.4545s-.8938.1637-1.1907.4545c-.2848.2818-.4333.6787-.4333 1.103-.006.409.1485.806.4333 1.1029.2969.2939.7332.4575 1.1907.4575zm-4.8418-1.9665c.1605.0424.315.094.4666.1636a1.352 1.352 0 0 1 .3787.2576c.197.206.309.4817.306.7665a.9643.9643 0 0 1-.3787.7788 2.0662 2.0662 0 0 1-.709.3485 3.7231 3.7231 0 0 1-1.1938.1697c-.352 0-.5467-.0406-.8138-.0962l-.077-.016c-.294-.0666-.5817-.1575-.8575-.2787a.0695.0695 0 0 0-.0424-.0121c-.0454 0-.0818.0394-.0818.0848v.203H.1212v-1.4786h.5242a.7559.7559 0 0 0 .1363.418c.2121.2607.4394.3607.6575.4395.3666.1212.7514.1848 1.1362.1969.5526 0 .8756-.134.9455-.163l.009-.0037.0062-.0023c.0616-.0226.3119-.1143.3119-.3916 0-.2743-.2338-.334-.387-.373l-.022-.0058c-.1708-.046-.562-.0872-.9897-.1323l-.1526-.016c-.4848-.0515-.9696-.1273-1.1968-.1758-.4977-.1097-.6942-.2917-.816-.4045l-.0082-.0076A1.0192 1.0192 0 0 1 0 11.1608c0-.497.3394-.797.7575-.9817.4454-.2.9756-.288 1.4392-.288.8211.0031 1.4877.2697 1.727.394.097.0515.1455-.0121.1455-.0606v-.1484h.5272v1.2876h-.4727a.9056.9056 0 0 0-.2939-.4909 1.289 1.289 0 0 0-.297-.1787c-.3968-.1667-.821-.2515-1.2513-.2455-.4423 0-.8665.085-1.0786.2153-.1333.0818-.2.1848-.2.306 0 .1727.1454.2424.2182.2636.1967.0597.6328.103.972.1369.0736.0073.1426.0142.2036.0206.3272.0334 1.012.1243 1.315.2zm18.1673-.9966v-.4787H24v.4696h-.4757c-.1727 0-.2424.0334-.3727.1788l-1.4271 1.63a.098.098 0 0 0-.0182.0698v.7423a1.106 1.106 0 0 0 .0121.103.1496.1496 0 0 0 .1.0909.9368.9368 0 0 0 .1303.009h.4848v.4698h-2.5724v-.4697h.4606a.9343.9343 0 0 0 .1302-.0091.1627.1627 0 0 0 .1031-.091.5626.5626 0 0 0 .009-.1v-.7422c0-.0242 0-.0242-.0333-.0636a606.7592 606.7592 0 0 0-1.4119-1.6028c-.0758-.0788-.2061-.2061-.406-.2061h-.4576v-.4696h2.5876v.4696h-.3121c-.0697 0-.1182.0697-.0576.1455 0 0 .8696 1.0392.8787 1.0513.0091.0122.0152.0122.0273.003.0121-.009.8938-1.0453.8999-1.0543a.0912.0912 0 0 0-.0182-.1273.1095.1095 0 0 0-.0606-.0182zm-6.284-.0031h.4848c.2212 0 .2606.0848.2636.2909l.0273 1.5664-2.5815-2.324H11.944v.4697h.412c.297 0 .3182.1636.3182.309v2.2138c.0004.1285.0009.295-.1818.295h-.506v.4667h2.1634v-.4697h-.5273c-.212 0-.2211-.097-.2242-.303v-1.8816l2.9724 2.6511h.7575l-.0394-2.9966c.003-.218.0182-.2908.2424-.2908h.4726v-.4697H15.595Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/soundcharts.svg b/assets/lib/simple-icons/icons/soundcharts.svg
new file mode 100644
index 00000000..df3b6d0d
--- /dev/null
+++ b/assets/lib/simple-icons/icons/soundcharts.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Soundcharts</title><path d="M16.038 0h6.052v17.229h-.702v-4.333h-.413v4.333h-.29v-2.521h-.412v2.52h-.29v-4.04h-.413v4.04h-.289V13.98h-.414v3.25h-.33v-2.521h-.371v2.52h-.331v-3.791h-.413v3.792h-.289v-4.333h-.414v4.333h-.701c.02-5.73.02-11.457.02-17.229ZM8.995 7.624h6.01v9.605h-.66v-2.23h-.414v2.23h-.288v-3.5h-.414v3.5h-.289v-3.5h-.413v3.5h-.33v-2.77h-.372v2.77h-.331v-2.77h-.413v2.77h-.289V14.23h-.414v3h-.289v-3.793h-.412v3.793h-.703c.02-2.687.02-6.958.02-9.605zM7.28 12.896h-.414v4.29h-.288v-1.978h-.414v1.98h-.33v-2.772h-.372v2.77h-.33v-4.04h-.414v4.04H4.43v-2.228h-.414v2.229h-.289v-3.25h-.414v3.25h-.289v-3.75h-.412v3.75H1.91V11.54h6.011v5.646h-.66c.02-1.395.02-2.833.02-4.291zm5.969 5.5h.371V24h-.371Zm4.213 0h.33v5.52h-.33zm-7.436 5.396h-.33v-5.398h.33v5.397zm7.064-5.397v5.397h-.33v-5.398h.33zm-4.544 0h.33v5.23h-.33zm6.342 0h.33v5.23h-.33zm-9.894 0h.33v4.897h-.33v-4.898ZM19.92 23.25h-.33v-4.856h.33v4.855zm-9.17-.042h-.33v-4.833h.33zm4.254-.042h-.33v-4.79h.33v4.791zm-3.511-.374h-.372v-4.417h.372zm9.852.208h-.33v-4.625h.33zm-9.191-.208h-.33v-4.417h.33zm3.883-4.397h.331v4.417h-.33Zm-9.852 4.063v-4.082h.371v4.083h-.371Zm11.98-.042v-4.04h.371v4.041h-.371zM4.8 18.396h.33v4.25H4.8v-4.252Zm16.916 0h.372v4h-.372v-4.002ZM6.91 22.415v-4.04h.33v4.041h-.33Zm-1.426-.042v-3.998h.33v4h-.33Zm15.162 0h-.331v-3.998h.33v4zm-16.96-.04h-.33v-3.917h.33zm-.701-.23h-.372v-3.709h.372Zm10.967-3.709h.372v3.625h-.372zm-5.97 3.793h-.33v-3.793h.33zm-6.009-3.794h.33v3.584h-.33zm2.128 0h.33v3.584H4.1z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/soundcloud.svg b/assets/lib/simple-icons/icons/soundcloud.svg
index 04dc4969..8ef68962 100644
--- a/assets/lib/simple-icons/icons/soundcloud.svg
+++ b/assets/lib/simple-icons/icons/soundcloud.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>SoundCloud icon</title><path d="M1.175 12.225c-.051 0-.094.046-.101.1l-.233 2.154.233 2.105c.007.058.05.098.101.098.05 0 .09-.04.099-.098l.255-2.105-.27-2.154c0-.057-.045-.1-.09-.1m-.899.828c-.06 0-.091.037-.104.094L0 14.479l.165 1.308c0 .055.045.094.09.094s.089-.045.104-.104l.21-1.319-.21-1.334c0-.061-.044-.09-.09-.09m1.83-1.229c-.061 0-.12.045-.12.104l-.21 2.563.225 2.458c0 .06.045.12.119.12.061 0 .105-.061.121-.12l.254-2.474-.254-2.548c-.016-.06-.061-.12-.121-.12m.945-.089c-.075 0-.135.06-.15.135l-.193 2.64.21 2.544c.016.077.075.138.149.138.075 0 .135-.061.15-.15l.24-2.532-.24-2.623c0-.075-.06-.135-.135-.135l-.031-.017zm1.155.36c-.005-.09-.075-.149-.159-.149-.09 0-.158.06-.164.149l-.217 2.43.2 2.563c0 .09.075.157.159.157.074 0 .148-.068.148-.158l.227-2.563-.227-2.444.033.015zm.809-1.709c-.101 0-.18.09-.18.181l-.21 3.957.187 2.563c0 .09.08.164.18.164.094 0 .174-.09.18-.18l.209-2.563-.209-3.972c-.008-.104-.088-.18-.18-.18m.959-.914c-.105 0-.195.09-.203.194l-.18 4.872.165 2.548c0 .12.09.209.195.209.104 0 .194-.089.21-.209l.193-2.548-.192-4.856c-.016-.12-.105-.21-.21-.21m.989-.449c-.121 0-.211.089-.225.209l-.165 5.275.165 2.52c.014.119.104.225.225.225.119 0 .225-.105.225-.225l.195-2.52-.196-5.275c0-.12-.105-.225-.225-.225m1.245.045c0-.135-.105-.24-.24-.24-.119 0-.24.105-.24.24l-.149 5.441.149 2.503c.016.135.121.24.256.24s.24-.105.24-.24l.164-2.503-.164-5.456-.016.015zm.749-.134c-.135 0-.255.119-.255.254l-.15 5.322.15 2.473c0 .15.12.255.255.255s.255-.12.255-.27l.15-2.474-.165-5.307c0-.148-.12-.27-.271-.27m1.005.166c-.164 0-.284.135-.284.285l-.103 5.143.135 2.474c0 .149.119.277.284.277.149 0 .271-.12.284-.285l.121-2.443-.135-5.112c-.012-.164-.135-.285-.285-.285m1.184-.945c-.045-.029-.105-.044-.165-.044s-.119.015-.165.044c-.09.054-.149.15-.149.255v.061l-.104 6.048.115 2.449v.008c.008.06.03.135.074.18.058.061.142.104.234.104.08 0 .158-.044.209-.09.058-.06.091-.135.091-.225l.015-.24.117-2.203-.135-6.086c0-.104-.061-.193-.135-.239l-.002-.022zm1.006-.547c-.045-.045-.09-.061-.15-.061-.074 0-.149.016-.209.061-.075.061-.119.15-.119.24v.029l-.137 6.609.076 1.215.061 1.185c0 .164.148.314.328.314.181 0 .33-.15.33-.329l.15-2.414-.15-6.637c0-.12-.074-.221-.165-.277m8.934 3.777c-.405 0-.795.086-1.139.232-.24-2.654-2.46-4.736-5.188-4.736-.659 0-1.305.135-1.889.359-.225.09-.27.18-.285.359v9.368c.016.18.15.33.33.345h8.185C22.681 17.218 24 15.914 24 14.28s-1.319-2.952-2.938-2.952"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>SoundCloud</title><path d="M1.175 12.225c-.051 0-.094.046-.101.1l-.233 2.154.233 2.105c.007.058.05.098.101.098.05 0 .09-.04.099-.098l.255-2.105-.27-2.154c0-.057-.045-.1-.09-.1m-.899.828c-.06 0-.091.037-.104.094L0 14.479l.165 1.308c0 .055.045.094.09.094s.089-.045.104-.104l.21-1.319-.21-1.334c0-.061-.044-.09-.09-.09m1.83-1.229c-.061 0-.12.045-.12.104l-.21 2.563.225 2.458c0 .06.045.12.119.12.061 0 .105-.061.121-.12l.254-2.474-.254-2.548c-.016-.06-.061-.12-.121-.12m.945-.089c-.075 0-.135.06-.15.135l-.193 2.64.21 2.544c.016.077.075.138.149.138.075 0 .135-.061.15-.15l.24-2.532-.24-2.623c0-.075-.06-.135-.135-.135l-.031-.017zm1.155.36c-.005-.09-.075-.149-.159-.149-.09 0-.158.06-.164.149l-.217 2.43.2 2.563c0 .09.075.157.159.157.074 0 .148-.068.148-.158l.227-2.563-.227-2.444.033.015zm.809-1.709c-.101 0-.18.09-.18.181l-.21 3.957.187 2.563c0 .09.08.164.18.164.094 0 .174-.09.18-.18l.209-2.563-.209-3.972c-.008-.104-.088-.18-.18-.18m.959-.914c-.105 0-.195.09-.203.194l-.18 4.872.165 2.548c0 .12.09.209.195.209.104 0 .194-.089.21-.209l.193-2.548-.192-4.856c-.016-.12-.105-.21-.21-.21m.989-.449c-.121 0-.211.089-.225.209l-.165 5.275.165 2.52c.014.119.104.225.225.225.119 0 .225-.105.225-.225l.195-2.52-.196-5.275c0-.12-.105-.225-.225-.225m1.245.045c0-.135-.105-.24-.24-.24-.119 0-.24.105-.24.24l-.149 5.441.149 2.503c.016.135.121.24.256.24s.24-.105.24-.24l.164-2.503-.164-5.456-.016.015zm.749-.134c-.135 0-.255.119-.255.254l-.15 5.322.15 2.473c0 .15.12.255.255.255s.255-.12.255-.27l.15-2.474-.165-5.307c0-.148-.12-.27-.271-.27m1.005.166c-.164 0-.284.135-.284.285l-.103 5.143.135 2.474c0 .149.119.277.284.277.149 0 .271-.12.284-.285l.121-2.443-.135-5.112c-.012-.164-.135-.285-.285-.285m1.184-.945c-.045-.029-.105-.044-.165-.044s-.119.015-.165.044c-.09.054-.149.15-.149.255v.061l-.104 6.048.115 2.449v.008c.008.06.03.135.074.18.058.061.142.104.234.104.08 0 .158-.044.209-.09.058-.06.091-.135.091-.225l.015-.24.117-2.203-.135-6.086c0-.104-.061-.193-.135-.239l-.002-.022zm1.006-.547c-.045-.045-.09-.061-.15-.061-.074 0-.149.016-.209.061-.075.061-.119.15-.119.24v.029l-.137 6.609.076 1.215.061 1.185c0 .164.148.314.328.314.181 0 .33-.15.33-.329l.15-2.414-.15-6.637c0-.12-.074-.221-.165-.277m8.934 3.777c-.405 0-.795.086-1.139.232-.24-2.654-2.46-4.736-5.188-4.736-.659 0-1.305.135-1.889.359-.225.09-.27.18-.285.359v9.368c.016.18.15.33.33.345h8.185C22.681 17.218 24 15.914 24 14.28s-1.319-2.952-2.938-2.952"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/sourceengine.svg b/assets/lib/simple-icons/icons/sourceengine.svg
index bf734d3c..4da4253f 100644
--- a/assets/lib/simple-icons/icons/sourceengine.svg
+++ b/assets/lib/simple-icons/icons/sourceengine.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Source Engine icon</title><path d="M19.865.718h-.26L7.64.786C5.169.659 2.735 1.264.63 2.475l.002.002a1.211 1.211 0 00.578 2.274c.35 0 .662-.148.883-.383a10.321 10.321 0 018.818-.462c5.275 2.165 7.805 8.22 5.64 13.495a10.283 10.283 0 01-2.495 3.613l.01.013a1.21 1.21 0 101.63 1.69 12.638 12.638 0 003.04-4.419c.049-.118 4.952-12.061 4.964-12.093A3.992 3.992 0 0021.522.998c-.55-.226-1.064-.278-1.657-.28zM6.067 6.853c-2.635 0-5.342.807-5.342 3.941 0 2.16 1.946 2.849 3.893 3.277 2.422.522 3.823.878 3.823 1.899 0 1.188-1.235 1.568-2.208 1.568-1.33 0-2.564-.594-2.588-2.066H.44c.143 3.252 2.92 4.32 5.77 4.32 2.801 0 5.603-1.044 5.603-4.273 0-2.28-1.923-2.992-3.894-3.443-1.923-.451-3.823-.617-3.823-1.828 0-.997 1.116-1.14 1.877-1.14 1.21 0 2.207.357 2.302 1.662h3.205c-.26-3.015-2.73-3.917-5.413-3.917z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Source Engine</title><path d="M19.865.716h-.26L7.64.784a12.76 12.76 0 0 0-7.01 1.69l.002.001A1.211 1.211 0 0 0 1.21 4.75c.35 0 .662-.148.883-.383a10.321 10.321 0 0 1 8.818-.462c5.275 2.165 7.805 8.22 5.64 13.495a10.283 10.283 0 0 1-2.495 3.613l.01.013a1.21 1.21 0 1 0 1.63 1.69 12.638 12.638 0 0 0 3.04-4.419c.05-.118 4.952-12.06 4.964-12.093A3.992 3.992 0 0 0 21.522.996c-.55-.226-1.064-.278-1.657-.28zM6.067 6.851c-2.635 0-5.342.807-5.342 3.941 0 2.16 1.946 2.85 3.893 3.277 2.422.522 3.823.878 3.823 1.9 0 1.187-1.235 1.567-2.208 1.567-1.33 0-2.564-.594-2.588-2.066H.44c.143 3.252 2.92 4.32 5.77 4.32 2.801 0 5.603-1.044 5.603-4.273 0-2.28-1.923-2.992-3.894-3.443-1.923-.45-3.823-.617-3.823-1.828 0-.997 1.116-1.14 1.877-1.14 1.21 0 2.207.357 2.302 1.662h3.205c-.26-3.015-2.73-3.917-5.413-3.917z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/sourceforge.svg b/assets/lib/simple-icons/icons/sourceforge.svg
index 97a71dd9..ea16d6c8 100644
--- a/assets/lib/simple-icons/icons/sourceforge.svg
+++ b/assets/lib/simple-icons/icons/sourceforge.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>SourceForge icon</title><path d="M9.998 1.4648c-.088 0-.1761.0395-.2402.1036L.1016 11.2148c-.1361.1281-.1361.3444 0 .4805l9.1523 9.1348c.064.072.1522.1054.2402.1054.0881 0 .1743-.0414.2383-.1054l1.3692-1.3848c.136-.128.136-.3444 0-.4805l-7.172-7.1738a.4682.4682 0 010-.664l9.0782-9.0782c.1201-.12.1123-.2728.0723-.377-.04-.096-.1444-.207-.3125-.207H9.998zm4.5313 1.5918c-.088 0-.1762.0415-.2402.1055l-1.3926 1.3926c-.1361.128-.1361.3444 0 .4805l7.1719 7.1816c.088.088.1367.208.1367.3281 0 .1201-.0487.24-.1367.3281l-9.0782 9.0782c-.12.12-.1123.2728-.0722.377.04.096.1443.207.3125.207v-.0079H14c.088 0 .1762-.0316.2402-.0957l9.6563-9.6543c.072-.064.1035-.1521.1035-.2402 0-.088-.0395-.1762-.1035-.2402l-9.127-9.1348c-.064-.072-.1521-.1055-.2402-.1055zM11.4336 6.213c-.1125.005-.2164.1007-.211.2383.1442 2.2176-2.6425 2.7635-2.6425 6.246v.0235c0 2.1216 1.6026 3.8418 3.58 3.8418 1.9775 0 3.5782-1.7202 3.5782-3.8418v-.0234c0-.9848-.3679-1.9225-.7442-2.627-.072-.136-.2896-.087-.2656.041.6725 2.9943-1.0156 4.8507-1.0156 2.545 0-3.931-1.3943-5.7162-2.1309-6.3887a.2072.2072 0 00-.1484-.0547Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>SourceForge</title><path d="M9.998 1.4648c-.088 0-.1761.0395-.2402.1036L.1016 11.2148c-.1361.1281-.1361.3444 0 .4805l9.1523 9.1348c.064.072.1522.1054.2402.1054.0881 0 .1743-.0414.2383-.1054l1.3692-1.3848c.136-.128.136-.3444 0-.4805l-7.172-7.1738a.4682.4682 0 010-.664l9.0782-9.0782c.1201-.12.1123-.2728.0723-.377-.04-.096-.1444-.207-.3125-.207H9.998zm4.5313 1.5918c-.088 0-.1762.0415-.2402.1055l-1.3926 1.3926c-.1361.128-.1361.3444 0 .4805l7.1719 7.1816c.088.088.1367.208.1367.3281 0 .1201-.0487.24-.1367.3281l-9.0782 9.0782c-.12.12-.1123.2728-.0722.377.04.096.1443.207.3125.207v-.0079H14c.088 0 .1762-.0316.2402-.0957l9.6563-9.6543c.072-.064.1035-.1521.1035-.2402 0-.088-.0395-.1762-.1035-.2402l-9.127-9.1348c-.064-.072-.1521-.1055-.2402-.1055zM11.4336 6.213c-.1125.005-.2164.1007-.211.2383.1442 2.2176-2.6425 2.7635-2.6425 6.246v.0235c0 2.1216 1.6026 3.8418 3.58 3.8418 1.9775 0 3.5782-1.7202 3.5782-3.8418v-.0234c0-.9848-.3679-1.9225-.7442-2.627-.072-.136-.2896-.087-.2656.041.6725 2.9943-1.0156 4.8507-1.0156 2.545 0-3.931-1.3943-5.7162-2.1309-6.3887a.2072.2072 0 00-.1484-.0547Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/sourcegraph.svg b/assets/lib/simple-icons/icons/sourcegraph.svg
index bef45ddc..71bb3b69 100644
--- a/assets/lib/simple-icons/icons/sourcegraph.svg
+++ b/assets/lib/simple-icons/icons/sourcegraph.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Sourcegraph icon</title><path d="M9.341.002a2.56 2.56 0 0 0-.484.069C7.501.379 6.7 1.735 7.007 3.092L8.412 8.14 3.368 6.485C2.073 6.053.655 6.793.223 8.088c-.431 1.295.31 2.714 1.603 3.146l5.853 1.919-4.063 4.556a2.635 2.635 0 0 0-.618 1.666 2.474 2.474 0 0 0 2.467 2.466c.678 0 1.357-.308 1.85-.863l3.563-3.979 1.433 5.151A2.498 2.498 0 0 0 14.716 24h.001c.185 0 .431-.061.617-.123a2.514 2.514 0 0 0 1.726-3.084l-1.38-5.017 4.957 1.625c.309.062.556.123.802.123 1.111 0 2.036-.678 2.343-1.726.433-1.296-.308-2.714-1.603-3.146l-5.728-1.878 4.063-4.537c.925-1.048.863-2.59-.185-3.514-1.049-.926-2.59-.864-3.516.184l-3.571 4.006-1.424-5.178C11.494.655 10.462-.046 9.34.002z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Sourcegraph</title><path d="M9.4616.0014a2.4132 2.4132 0 00-.7215.085C7.4532.4385 6.695 1.7689 7.0476 3.0567l1.4312 5.2318-5.0803-1.681C2.131 6.1881.7645 6.8756.3454 8.1437c-.4188 1.2678.269 2.6354 1.535 3.0546h.0004l5.8776 1.9448-4.131 4.6646c-.8855.9996-.793 2.5278.2057 3.4135.9986.8856 2.5257.7932 3.4112-.206l3.6032-4.0682 1.4423 5.273c.3523 1.2878 1.6817 2.0462 2.9688 1.6935 1.288-.3527 2.0457-1.6823 1.6932-2.97l-1.4315-5.2324 5.081 1.6813c1.267.419 2.6337-.2685 3.0527-1.5365.42-1.268-.2675-2.6354-1.535-3.055l-5.878-1.9444 4.1306-4.6643c.8855-.9996.793-2.5276-.2056-3.4135-.999-.8863-2.5265-.7937-3.4113.2053v.0003l-3.6031 4.069-1.4427-5.2737C11.4225.7336 10.4911.0367 9.4616.0014z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/sourcetree.svg b/assets/lib/simple-icons/icons/sourcetree.svg
new file mode 100644
index 00000000..1f2d56c0
--- /dev/null
+++ b/assets/lib/simple-icons/icons/sourcetree.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Sourcetree</title><path d="M11.999 0C6.756 0 2.474 4.245 2.474 9.525c0 4.21 2.769 7.792 6.572 9.047v4.764c0 .37.295.664.664.664h4.506a.661.661 0 0 0 .664-.664v-4.764c.025-.008.049-.019.074-.027v.064c3.694-1.22 6.412-4.634 6.565-8.687.005-.124.007-.25.007-.375v-.022c0-.152-.006-.304-.013-.455C21.275 4.037 17.125 0 11.999 0Zm0 6.352a3.214 3.214 0 0 1 2.664 5.005v.002A3.218 3.218 0 0 1 12 12.775a3.212 3.212 0 0 1 0-6.424z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/southwestairlines.svg b/assets/lib/simple-icons/icons/southwestairlines.svg
new file mode 100644
index 00000000..07cd97ef
--- /dev/null
+++ b/assets/lib/simple-icons/icons/southwestairlines.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Southwest Airlines</title><path d="M22.163 2.419C21.038 1.219 19.35.58 17.437.58c-2.062 0-3.637.675-4.725 1.275 2.063 1.163 6.526 3.75 11.175 7.163.075-.45.113-.938.113-1.388-.038-2.175-.675-4.012-1.837-5.212zm1.35 8.212C18.186 6.244 15 4.031 11.55 1.97 10.612 1.406 8.775.58 6.675.58 4.688.581 3 1.22 1.837 2.42 1.087 3.206.563 4.18.262 5.38 3 7.294 10.462 12.656 18 18.581c2.512-2.362 4.613-5.1 5.512-7.95zM0 7.781c0 6.15 6.487 11.85 12 15.638 1.575-1.088 3.225-2.325 4.8-3.713A736.871 736.871 0 0 0 .15 6.131C.038 6.62 0 7.181 0 7.781Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/spacemacs.svg b/assets/lib/simple-icons/icons/spacemacs.svg
index a301c6c9..3b667c4c 100644
--- a/assets/lib/simple-icons/icons/spacemacs.svg
+++ b/assets/lib/simple-icons/icons/spacemacs.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Spacemacs icon</title><path d="M11.997.011c-1.79.015-3.452.397-4.968 1.093l.005-.002c3.638 2.026 6.955 5.634 8.932 8.241.398.534.753 1.006 1.078 1.434l.004-.019c.412-1.738-.313-5.239-1.518-7.331-.117-.203-.201-.379-.187-.392l.006.002.002-.007c.098.024 1.031.995 1.373 1.433.599.767.832 1.213 1.162 2.23.858 2.645 1.424 4.801 1.901 7.249.239 1.228.675 3.458.731 3.884.007.057-.009.128-.01.143a5.164 5.164 0 0 0-.29-.264c-.645-.568-1.924-1.417-3.183-2.114-1.57-.87-3.118-1.614-6.575-3.162-3.156-1.413-4.61-2.086-5.751-2.661l-1.024-.51c.12.301.249.624.399 1.005 0 0 1.933 1.08 2.174 1.408 0 0 2.322 4.367 3.353 6.955.767 1.949 1.634 4.264 2.155 4.904l.06.069c-1.026-.251-5.745-2.598-5.745-2.598-.518-4.399-1.969-9.61-3.855-14.94a7.259 7.259 0 0 1-.125-.271c.001-.015.141.121.311.303C4.313 8.13 8.368 9.98 12.675 10.775a16.48 16.48 0 0 0 3.533.223c-.307-.392-.64-.821-1.009-1.302-3.418-4.455-6.774-6.326-9.78-7.469-.079-.028-.154-.061-.231-.088A11.902 11.902 0 0 0 .669 8.071a11.97 11.97 0 0 0-.67 4.016l.003-.088c.033 5.018 3.129 9.616 8.052 11.33 1.335.465 2.696.68 4.032.67l-.088-.003c5.018-.033 9.616-3.129 11.33-8.052.465-1.335.68-2.696.67-4.032l-.003.088c-.033-5.018-3.129-9.616-8.052-11.33A11.966 11.966 0 0 0 11.911 0l.088.003zm6.133 6.11l-.002.007c-.001 0 0 0 0 0l.002-.007c.531.511 1.376 1.503 2.336 2.062.789.99 1.216 1.963 1.748 2.629-.219-.188-1.111-.972-1.111-.972s-1.378-1.305-2.141-2.153c-.293-.326-.32-.38-.478-.628-.062-.097-.275-.825-.354-.935h-.001l.002-.007z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Spacemacs</title><path d="M11.997.011c-1.79.015-3.452.397-4.968 1.093l.005-.002c3.638 2.026 6.955 5.634 8.932 8.241.398.534.753 1.006 1.078 1.434l.004-.019c.412-1.738-.313-5.239-1.518-7.331-.117-.203-.201-.379-.187-.392l.006.002.002-.007c.098.024 1.031.995 1.373 1.433.599.767.832 1.213 1.162 2.23.858 2.645 1.424 4.801 1.901 7.249.239 1.228.675 3.458.731 3.884.007.057-.009.128-.01.143a5.164 5.164 0 0 0-.29-.264c-.645-.568-1.924-1.417-3.183-2.114-1.57-.87-3.118-1.614-6.575-3.162-3.156-1.413-4.61-2.086-5.751-2.661l-1.024-.51c.12.301.249.624.399 1.005 0 0 1.933 1.08 2.174 1.408 0 0 2.322 4.367 3.353 6.955.767 1.949 1.634 4.264 2.155 4.904l.06.069c-1.026-.251-5.745-2.598-5.745-2.598-.518-4.399-1.969-9.61-3.855-14.94a7.259 7.259 0 0 1-.125-.271c.001-.015.141.121.311.303C4.313 8.13 8.368 9.98 12.675 10.775a16.48 16.48 0 0 0 3.533.223c-.307-.392-.64-.821-1.009-1.302-3.418-4.455-6.774-6.326-9.78-7.469-.079-.028-.154-.061-.231-.088A11.902 11.902 0 0 0 .669 8.071a11.97 11.97 0 0 0-.67 4.016l.003-.088c.033 5.018 3.129 9.616 8.052 11.33 1.335.465 2.696.68 4.032.67l-.088-.003c5.018-.033 9.616-3.129 11.33-8.052.465-1.335.68-2.696.67-4.032l-.003.088c-.033-5.018-3.129-9.616-8.052-11.33A11.966 11.966 0 0 0 11.911 0l.088.003zm6.133 6.11l-.002.007c-.001 0 0 0 0 0l.002-.007c.531.511 1.376 1.503 2.336 2.062.789.99 1.216 1.963 1.748 2.629-.219-.188-1.111-.972-1.111-.972s-1.378-1.305-2.141-2.153c-.293-.326-.32-.38-.478-.628-.062-.097-.275-.825-.354-.935h-.001l.002-.007z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/spacex.svg b/assets/lib/simple-icons/icons/spacex.svg
index bc85c646..c5b382a5 100644
--- a/assets/lib/simple-icons/icons/spacex.svg
+++ b/assets/lib/simple-icons/icons/spacex.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" role="img"><title>SpaceX icon</title><path d="M23.952 6.965c-.005-.002-.009-.006-.014-.006-.009 0-.016.006-.023.009C8.787 8.491 1.676 15.07 0 16.688l.223.35h2.644c6.872-6.908 16.156-9.201 21.065-9.956l.006.002c.004 0 .006-.004.01-.004.029-.006.052-.028.052-.059 0-.029-.021-.049-.048-.056z M.38 10.508l-.16.302 3.245 2.366a31.761 31.761 0 0 1 2.012-1.073L3.3 10.508H.38zM7.592 13.65c-.536.395-1.084.818-1.674 1.313l2.852 2.078h2.957l.123-.273-4.258-3.118z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>SpaceX</title><path d="M24 7.417C8.882 8.287 1.89 14.75.321 16.28L0 16.583h2.797C10.356 9.005 21.222 7.663 24 7.417zm-17.046 6.35c-.472.321-.945.68-1.398 1.02l2.457 1.796h2.778zM2.948 10.8H.189l3.25 2.381c.473-.321 1.02-.661 1.512-.945Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/spacy.svg b/assets/lib/simple-icons/icons/spacy.svg
new file mode 100644
index 00000000..667d23dc
--- /dev/null
+++ b/assets/lib/simple-icons/icons/spacy.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>spaCy</title><path d="M3.001 11.213c-.55-.065-.591-.803-1.297-.738-.342 0-.66.143-.66.457 0 .473.73.517 1.17.636.75.228 1.476.383 1.476 1.199 0 1.035-.811 1.394-1.884 1.394-.897 0-1.806-.318-1.806-1.142 0-.228.22-.407.432-.407.269 0 .363.114.457.301.208.367.44.563 1.019.563.367 0 .742-.139.742-.457 0-.452-.46-.55-.937-.66C.869 12.122.143 12 .057 11.062c-.09-1.598 3.242-1.659 3.433-.257-.004.253-.24.408-.489.408ZM6.964 9.81c1.171 0 1.835.979 1.835 2.186 0 1.211-.644 2.185-1.835 2.185-.66 0-1.072-.281-1.37-.713v1.598c0 .481-.155.714-.505.714-.428 0-.506-.273-.506-.714v-4.648c0-.379.159-.612.506-.612.326 0 .505.257.505.612v.13c.331-.416.71-.738 1.37-.738Zm-.277 3.54c.685 0 .991-.632.991-1.37 0-.722-.31-1.37-.991-1.37-.714 0-1.044.587-1.044 1.37 0 .762.335 1.37 1.044 1.37Zm2.907-2.398c0-.84.967-1.142 1.904-1.142 1.317 0 1.86.384 1.86 1.656v1.223c0 .29.179.869.179 1.044 0 .265-.244.432-.505.432-.29 0-.506-.342-.661-.587-.428.342-.881.587-1.574.587-.766 0-1.37-.453-1.37-1.199 0-.66.473-1.039 1.044-1.17 0 .004 1.835-.432 1.835-.436 0-.563-.2-.812-.791-.812-.522 0-.787.143-.991.457-.163.237-.143.379-.457.379-.253-.004-.473-.175-.473-.432Zm1.566 2.524c.803 0 1.142-.424 1.142-1.268v-.18c-.216.074-1.089.29-1.325.327-.253.049-.506.236-.506.534.008.326.342.587.689.587Zm5.9-5.26c1.134 0 2.361.677 2.361 1.753a.49.49 0 0 1-.481.506c-.371 0-.424-.2-.587-.481-.273-.502-.596-.836-1.297-.836-1.085-.008-1.57.921-1.57 2.079 0 1.167.404 2.007 1.525 2.007.746 0 1.158-.433 1.37-.991.086-.257.241-.506.563-.506.253 0 .506.257.506.534 0 1.142-1.167 1.933-2.365 1.933-1.313 0-2.055-.555-2.463-1.476a3.48 3.48 0 0 1-.326-1.525c-.009-1.77 1.023-2.997 2.764-2.997Zm6.483 1.594c.29 0 .457.188.457.481 0 .119-.094.355-.13.482l-1.395 3.665c-.31.795-.542 1.346-1.598 1.346-.502 0-.938-.045-.938-.481 0-.253.191-.38.457-.38.048 0 .13.025.179.025.077 0 .13.024.179.024.53 0 .604-.542.791-.917L20.2 10.724c-.078-.18-.131-.302-.131-.408 0-.294.229-.506.534-.506.343 0 .478.269.563.563l.889 2.642.889-2.442c.134-.379.147-.763.599-.763Z"/></svg>
diff --git a/assets/lib/simple-icons/icons/sparkar.svg b/assets/lib/simple-icons/icons/sparkar.svg
new file mode 100644
index 00000000..22078280
--- /dev/null
+++ b/assets/lib/simple-icons/icons/sparkar.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Spark AR</title><path d="M3.199 20.001L20.801 12v8.001L11.999 24l-8.8-3.999zm8.8 3.999zm-.001-24L3.199 3.999V12l17.602-8.001L11.998 0zM3.803 12.275l7.592 3.453 8.803-4.002-7.594-3.45-8.801 3.999z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/sparkasse.svg b/assets/lib/simple-icons/icons/sparkasse.svg
new file mode 100644
index 00000000..3b5df589
--- /dev/null
+++ b/assets/lib/simple-icons/icons/sparkasse.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Sparkasse</title><path d="M7.0602 12.3061v1.8455h14.175v6.7773c.0296 1.6615-1.4064 3.1066-3.0705 3.0705H5.8352c-1.6582.0306-3.1011-1.4121-3.0705-3.0705v-1.225H16.908v-1.8455H2.7648v-6.7773c-.0307-1.6579 1.4123-3.1012 3.0704-3.0704h12.3295c1.6641-.0363 3.1 1.4095 3.0705 3.0705v1.225H7.0602zm4.9241-6.1486c1.7003 0 3.0787-1.3784 3.0787-3.0787S13.6847 0 11.9843 0 8.9055 1.3784 8.9055 3.0788s1.3785 3.0787 3.0788 3.0787z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/sparkfun.svg b/assets/lib/simple-icons/icons/sparkfun.svg
index af50d2b7..82b5aab1 100644
--- a/assets/lib/simple-icons/icons/sparkfun.svg
+++ b/assets/lib/simple-icons/icons/sparkfun.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>SparkFun icon</title><path d="M17.805 3.852s.34 1.441-.746 1.64c-.754.133-1.973-.617-2.586-1.363-.758-.922-.66-1.649-.075-2.29.883-.98 2.399-.6 2.399-.6s-2.774-2.43-5.66-.438c-2.57 1.77-1.832 4.18.488 6.285 2.09 1.902.422 3.988-1.688 3.719-1.44-.184-2.03-1.344-1.687-2.055.3-.61 1.336-.984 1.336-.984s-1.191-.48-2.59.046c-1.262.473-2.297 1.512-2.215 4.122v12.078s1.301-1.602 2.832-3.235c1.711-1.84 2.492-3.082 4.25-2.937 3.328.207 5.735-1.274 7.371-3.645 3.141-4.562.68-9.66-1.43-10.343zm0 0"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>SparkFun</title><path d="M16.307 5.476c-.756.134-1.975-.615-2.59-1.362-.755-.922-.66-1.647-.071-2.29.883-.978 2.396-.6 2.396-.6s-2.772-2.432-5.658-.44c-2.571 1.77-1.833 4.183.487 6.288 2.09 1.902.42 3.988-1.686 3.717-1.443-.184-2.034-1.343-1.687-2.054.298-.608 1.335-.982 1.335-.982s-1.19-.484-2.592.044c-1.259.474-2.297 1.515-2.214 4.12V24s1.301-1.604 2.83-3.236c1.714-1.84 2.495-3.084 4.254-2.938 3.328.205 5.735-1.273 7.371-3.645 3.141-4.563.67-9.68-1.43-10.343 0 0 .34 1.438-.745 1.638z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/sparkpost.svg b/assets/lib/simple-icons/icons/sparkpost.svg
index fc593817..d43d9779 100644
--- a/assets/lib/simple-icons/icons/sparkpost.svg
+++ b/assets/lib/simple-icons/icons/sparkpost.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>SparkPost icon</title><path d="M16.2 9c-1.351.9-1.8 2.7-1.65 3.9-2.25-2.25 3.45-8.55-3-12.9C15.15 5.4 6 9.75 6 17.4c0 3 1.95 5.701 6 6.6 4.05-.898 6-3.6 6-6.6 0-4.5-2.7-6-1.8-8.4zM12 20.852c-1.8 0-3.45-1.5-3.45-3.451 0-1.801 1.5-3.45 3.45-3.45 1.8 0 3.45 1.5 3.45 3.45-.15 1.951-1.65 3.451-3.45 3.451z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>SparkPost</title><path d="M16.2 9c-1.351.9-1.8 2.7-1.65 3.9-2.25-2.25 3.45-8.55-3-12.9C15.15 5.4 6 9.75 6 17.4c0 3 1.95 5.701 6 6.6 4.05-.898 6-3.6 6-6.6 0-4.5-2.7-6-1.8-8.4zM12 20.852c-1.8 0-3.45-1.5-3.45-3.451 0-1.801 1.5-3.45 3.45-3.45 1.8 0 3.45 1.5 3.45 3.45-.15 1.951-1.65 3.451-3.45 3.451z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/spdx.svg b/assets/lib/simple-icons/icons/spdx.svg
index a4bab39a..b8e9b9e3 100644
--- a/assets/lib/simple-icons/icons/spdx.svg
+++ b/assets/lib/simple-icons/icons/spdx.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>SPDX icon</title><path d="M0 0v24H8.222l2.089-2.373 2.09-2.374V13.2H18.978l2.51-2.488L24 8.223V0H12zm5.2 5.2h13.791L12.2 12c-3.735 3.74-6.838 6.8-6.896 6.8-.057 0-.104-3.06-.104-6.8zm8.4 8.8v10H24V14h-5.2z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>SPDX</title><path d="M0 0v24H8.222l2.089-2.373 2.09-2.374V13.2H18.978l2.51-2.488L24 8.223V0H12zm5.2 5.2h13.791L12.2 12c-3.735 3.74-6.838 6.8-6.896 6.8-.057 0-.104-3.06-.104-6.8zm8.4 8.8v10H24V14h-5.2z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/speakerdeck.svg b/assets/lib/simple-icons/icons/speakerdeck.svg
index e7dff03b..7e27048d 100644
--- a/assets/lib/simple-icons/icons/speakerdeck.svg
+++ b/assets/lib/simple-icons/icons/speakerdeck.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Speaker Deck icon</title><path d="M11.2 13.598l.02-3.196-2.67 1.61M12.798 10.403l-.015 3.19 2.667-1.608M12.783 13.598v-.004l-.004.002M23.997 4.59c0-.878-.715-1.59-1.597-1.59H1.6C.717 3 0 3.713 0 4.59v14.82C0 20.288.715 21 1.6 21h20.8c.883 0 1.6-.713 1.6-1.59V4.59h-.003zm-6.434 9.54h-.014c0 .586-.466 1.052-1.05 1.065l.036-.016h-9.07c-.58-.01-1.05-.48-1.05-1.06H6.41V9.88h.01c0-.58.463-1.05 1.033-1.06h9.06c.57.017 1.05.48 1.05 1.067v4.244z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Speaker Deck</title><path d="M10.025 13.875H4.687a4.688 4.688 0 0 1 0-9.375h6.227a1.875 1.875 0 0 1 0 3.75H4.592a.937.937 0 1 0 0 1.875h5.337a4.687 4.687 0 1 1 0 9.375H1.875a1.875 1.875 0 0 1 0-3.75h8.15a.938.938 0 0 0 0-1.875zM13.97 19.5a5.635 5.635 0 0 0 2.396-3.75h3.026a.93.93 0 0 0 .921-.938V9.189a.93.93 0 0 0-.921-.938h-5.497c.438-.498.704-1.155.704-1.875s-.266-1.377-.704-1.875h6.418C22.35 4.5 24 6.179 24 8.25v7.5c0 2.071-1.65 3.75-3.687 3.75H13.97z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/spectrum.svg b/assets/lib/simple-icons/icons/spectrum.svg
index f55e4b95..94fe5da6 100644
--- a/assets/lib/simple-icons/icons/spectrum.svg
+++ b/assets/lib/simple-icons/icons/spectrum.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Spectrum icon</title><path d="M0 10.2A1.8 1.8 0 001.8 12h1.8a8.4 8.4 0 018.4 8.4v1.8a1.8 1.8 0 001.8 1.8h8.4a1.8 1.8 0 001.8-1.8v-1.8C24 9.133 14.867 0 3.6 0H1.8A1.8 1.8 0 000 1.8v8.4z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Spectrum</title><path d="M0 10.2A1.8 1.8 0 001.8 12h1.8a8.4 8.4 0 018.4 8.4v1.8a1.8 1.8 0 001.8 1.8h8.4a1.8 1.8 0 001.8-1.8v-1.8C24 9.133 14.867 0 3.6 0H1.8A1.8 1.8 0 000 1.8v8.4z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/speedtest.svg b/assets/lib/simple-icons/icons/speedtest.svg
new file mode 100644
index 00000000..e4ba7729
--- /dev/null
+++ b/assets/lib/simple-icons/icons/speedtest.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Speedtest</title><path d="M11.628 16.186l-2.047-2.14 6.791-5.953 1.21 1.302zm8.837 6.047c2.14-2.14 3.535-5.117 3.535-8.466 0-6.604-5.395-12-12-12s-12 5.396-12 12c0 3.35 1.302 6.326 3.535 8.466l1.674-1.675c-1.767-1.767-2.79-4.093-2.79-6.79A9.568 9.568 0 0 1 12 4.185a9.568 9.568 0 0 1 9.581 9.581c0 2.605-1.116 5.024-2.79 6.791Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/spinnaker.svg b/assets/lib/simple-icons/icons/spinnaker.svg
index 3bc02c0b..9ab9aa5b 100644
--- a/assets/lib/simple-icons/icons/spinnaker.svg
+++ b/assets/lib/simple-icons/icons/spinnaker.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Spinnaker icon</title><path d="M21.343 0C17.785 8.741 11.317 21.987.815 23.882c10.806 1.064 19.481-5.327 21.646-8.066C24.627 13.076 21.343 0 21.343 0zM.815 23.882L.8 23.88v.004l.015-.003zM17.182 5.8C15.409 10.988 10.477 18.547 5.4 20.39c.885.033 1.74-.019 2.561-.132 3.989-3.221 7.14-8.037 9.577-12.771-.193-.981-.356-1.687-.356-1.687z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Spinnaker</title><path d="M21.343 0C17.785 8.741 11.317 21.987.815 23.882c10.806 1.064 19.481-5.327 21.646-8.066C24.627 13.076 21.343 0 21.343 0zM.815 23.882L.8 23.88v.004l.015-.003zM17.182 5.8C15.409 10.988 10.477 18.547 5.4 20.39c.885.033 1.74-.019 2.561-.132 3.989-3.221 7.14-8.037 9.577-12.771-.193-.981-.356-1.687-.356-1.687z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/spinrilla.svg b/assets/lib/simple-icons/icons/spinrilla.svg
index c4c27cec..7dbbc156 100644
--- a/assets/lib/simple-icons/icons/spinrilla.svg
+++ b/assets/lib/simple-icons/icons/spinrilla.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Spinrilla icon</title><path d="M12 8.816a3.184 3.184 0 1 0 0 6.368 3.184 3.184 0 1 0 0-6.368zM12 0v3.918A8.082 8.082 0 0 0 3.918 12H0A12 12 0 0 1 12 0zm0 24v-3.918A8.082 8.082 0 0 0 20.082 12H24a12 12 0 0 1-12 12z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Spinrilla</title><path d="M12 8.816a3.184 3.184 0 1 0 0 6.368 3.184 3.184 0 1 0 0-6.368zM12 0v3.918A8.082 8.082 0 0 0 3.918 12H0A12 12 0 0 1 12 0zm0 24v-3.918A8.082 8.082 0 0 0 20.082 12H24a12 12 0 0 1-12 12z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/splunk.svg b/assets/lib/simple-icons/icons/splunk.svg
index aabe42ea..fde4ffb9 100644
--- a/assets/lib/simple-icons/icons/splunk.svg
+++ b/assets/lib/simple-icons/icons/splunk.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Splunk icon</title><path d="M23.348 11.911l-2.241-1.091v-.65L24 11.621v.593l-2.893 1.438v-.636zm-5.397 1.841h-.961v-5.31h.961v3.116h.102l1.28-1.481.723.31-1.23 1.316 1.453 1.809-.888.311-1.44-1.996zm-2.577-.002v-2.068a2.685 2.685 0 0 0-.026-.42.791.791 0 0 0-.09-.26c-.113-.202-.308-.304-.59-.304a.888.888 0 0 0-.461.113.673.673 0 0 0-.286.33 1.012 1.012 0 0 0-.07.263c-.012.13-.019.262-.017.395v1.95h-.961v-3.614h.961l.002.485c.185-.2.373-.348.566-.437.192-.089.418-.134.673-.134.286 0 .527.058.721.177a1.016 1.016 0 0 1 .475.665 1.972 1.972 0 0 1 .054.448c.002.1.004.22.004.358v2.053zm-4.115.002l-.002-.485a1.783 1.783 0 0 1-.565.437 1.597 1.597 0 0 1-.674.135c-.285 0-.524-.057-.72-.17a.972.972 0 0 1-.425-.504.75.75 0 0 1-.054-.167 1.918 1.918 0 0 1-.033-.199 2.033 2.033 0 0 1-.017-.258 15.516 15.516 0 0 1-.005-.355V10.13h.956v2.07c-.003.141.006.282.026.42.015.092.045.18.09.26.113.204.308.306.59.306.36 0 .606-.15.74-.449.035-.082.06-.168.074-.257.017-.134.024-.269.022-.403v-1.95h.955v3.624zM7.184 8.44h.955v5.31h-.955zM5.759 11.9c0-.396-.08-.708-.24-.937a.759.759 0 0 0-.657-.345.804.804 0 0 0-.693.366c-.171.245-.256.574-.253.99 0 .405.084.723.25.957a.796.796 0 0 0 .69.347.685.685 0 0 0 .433-.135.985.985 0 0 0 .277-.34c.071-.14.121-.292.147-.448.03-.151.043-.3.046-.455m1.01-.036c.003.266-.04.532-.129.786-.082.23-.204.441-.364.626-.31.361-.764.567-1.24.563a1.67 1.67 0 0 1-.313-.028 1.041 1.041 0 0 1-.275-.098 1.33 1.33 0 0 1-.257-.178 2.379 2.379 0 0 1-.265-.268v2.293h-.929v-5.425h.93l.004.529c.169-.212.353-.368.55-.468.197-.1.426-.15.688-.147a1.509 1.509 0 0 1 1.156.507c.148.166.259.361.33.571.08.236.12.485.115.737m-4.21.89a.946.946 0 0 1-.102.441 1.007 1.007 0 0 1-.282.345c-.13.1-.275.173-.43.22a1.8 1.8 0 0 1-.546.08 1.985 1.985 0 0 1-.637-.097 1.964 1.964 0 0 1-.563-.32l.312-.505c.15.126.284.217.405.275.115.057.24.087.368.087a.557.557 0 0 0 .373-.12.396.396 0 0 0 .14-.322.475.475 0 0 0-.12-.318 1.306 1.306 0 0 0-.187-.173 9.231 9.231 0 0 0-.308-.232 6.787 6.787 0 0 1-.281-.21 2.11 2.11 0 0 1-.252-.232 1.039 1.039 0 0 1-.18-.275.826.826 0 0 1-.069-.347.893.893 0 0 1 .094-.409.935.935 0 0 1 .255-.314 1.22 1.22 0 0 1 .39-.203c.16-.05.327-.074.494-.072.184 0 .368.026.545.076.174.05.338.123.488.219l-.282.454a1.05 1.05 0 0 0-.608-.201.504.504 0 0 0-.323.102.307.307 0 0 0-.126.253c0 .098.041.193.113.26.074.078.203.186.385.325.185.136.336.253.457.355.104.085.202.182.286.286.065.08.115.173.145.273a.808.808 0 0 1 .046.299Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Splunk</title><path d="M23.348 11.911l-2.241-1.091v-.65L24 11.621v.593l-2.893 1.438v-.636zm-5.397 1.841h-.961v-5.31h.961v3.116h.102l1.28-1.481.723.31-1.23 1.316 1.453 1.809-.888.311-1.44-1.996zm-2.577-.002v-2.068a2.685 2.685 0 0 0-.026-.42.791.791 0 0 0-.09-.26c-.113-.202-.308-.304-.59-.304a.888.888 0 0 0-.461.113.673.673 0 0 0-.286.33 1.012 1.012 0 0 0-.07.263c-.012.13-.019.262-.017.395v1.95h-.961v-3.614h.961l.002.485c.185-.2.373-.348.566-.437.192-.089.418-.134.673-.134.286 0 .527.058.721.177a1.016 1.016 0 0 1 .475.665 1.972 1.972 0 0 1 .054.448c.002.1.004.22.004.358v2.053zm-4.115.002l-.002-.485a1.783 1.783 0 0 1-.565.437 1.597 1.597 0 0 1-.674.135c-.285 0-.524-.057-.72-.17a.972.972 0 0 1-.425-.504.75.75 0 0 1-.054-.167 1.918 1.918 0 0 1-.033-.199 2.033 2.033 0 0 1-.017-.258 15.516 15.516 0 0 1-.005-.355V10.13h.956v2.07c-.003.141.006.282.026.42.015.092.045.18.09.26.113.204.308.306.59.306.36 0 .606-.15.74-.449.035-.082.06-.168.074-.257.017-.134.024-.269.022-.403v-1.95h.955v3.624zM7.184 8.44h.955v5.31h-.955zM5.759 11.9c0-.396-.08-.708-.24-.937a.759.759 0 0 0-.657-.345.804.804 0 0 0-.693.366c-.171.245-.256.574-.253.99 0 .405.084.723.25.957a.796.796 0 0 0 .69.347.685.685 0 0 0 .433-.135.985.985 0 0 0 .277-.34c.071-.14.121-.292.147-.448.03-.151.043-.3.046-.455m1.01-.036c.003.266-.04.532-.129.786-.082.23-.204.441-.364.626-.31.361-.764.567-1.24.563a1.67 1.67 0 0 1-.313-.028 1.041 1.041 0 0 1-.275-.098 1.33 1.33 0 0 1-.257-.178 2.379 2.379 0 0 1-.265-.268v2.293h-.929v-5.425h.93l.004.529c.169-.212.353-.368.55-.468.197-.1.426-.15.688-.147a1.509 1.509 0 0 1 1.156.507c.148.166.259.361.33.571.08.236.12.485.115.737m-4.21.89a.946.946 0 0 1-.102.441 1.007 1.007 0 0 1-.282.345c-.13.1-.275.173-.43.22a1.8 1.8 0 0 1-.546.08 1.985 1.985 0 0 1-.637-.097 1.964 1.964 0 0 1-.563-.32l.312-.505c.15.126.284.217.405.275.115.057.24.087.368.087a.557.557 0 0 0 .373-.12.396.396 0 0 0 .14-.322.475.475 0 0 0-.12-.318 1.306 1.306 0 0 0-.187-.173 9.231 9.231 0 0 0-.308-.232 6.787 6.787 0 0 1-.281-.21 2.11 2.11 0 0 1-.252-.232 1.039 1.039 0 0 1-.18-.275.826.826 0 0 1-.069-.347.893.893 0 0 1 .094-.409.935.935 0 0 1 .255-.314 1.22 1.22 0 0 1 .39-.203c.16-.05.327-.074.494-.072.184 0 .368.026.545.076.174.05.338.123.488.219l-.282.454a1.05 1.05 0 0 0-.608-.201.504.504 0 0 0-.323.102.307.307 0 0 0-.126.253c0 .098.041.193.113.26.074.078.203.186.385.325.185.136.336.253.457.355.104.085.202.182.286.286.065.08.115.173.145.273a.808.808 0 0 1 .046.299Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/spond.svg b/assets/lib/simple-icons/icons/spond.svg
new file mode 100644
index 00000000..2f145974
--- /dev/null
+++ b/assets/lib/simple-icons/icons/spond.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Spond</title><path d="M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0zm-1.403 2.281a3.767 3.767 0 00-.17 2.847c.61 1.79 2.336 2.772 4.069 3.213 2.633.672 4.715 1.388 5.892 2.502 1.037.982 1.435 2.416.803 4.618-.17.59-.486 1.124-.802 1.643-.125-.706-.424-1.411-.924-2.094-3.269-4.462-10.438-3.57-13.174-7.307-.803-1.096-.747-2.236.092-3.288.979-1.226 2.69-1.917 4.214-2.134zm3.163.11c.138-.01.281.002.43.036a9.835 9.835 0 017.076 6.318c-1.514-1.132-3.655-1.86-6.233-2.517-1.528-.39-2.3-1.087-2.542-1.798-.326-.956.308-1.98 1.27-2.04zM3.611 6.895c.125.706.424 1.412.924 2.094 3.269 4.462 10.438 3.57 13.174 7.307.803 1.095.747 2.236-.092 3.288-.979 1.226-2.69 1.916-4.214 2.133.427-.89.489-1.91.17-2.846-.61-1.79-2.336-2.772-4.069-3.213-2.633-.672-4.715-1.388-5.892-2.502-1.037-.982-1.435-2.416-.803-4.618.17-.59.486-1.124.802-1.643zm-.877 8.36c1.514 1.13 3.655 1.858 6.233 2.516 1.528.39 2.3 1.087 2.542 1.798.336.985-.347 2.042-1.357 2.042-.11 0-.225-.012-.342-.039a9.835 9.835 0 01-7.076-6.318z"/></svg>
diff --git a/assets/lib/simple-icons/icons/spotify.svg b/assets/lib/simple-icons/icons/spotify.svg
index aca3621c..8d4d095f 100644
--- a/assets/lib/simple-icons/icons/spotify.svg
+++ b/assets/lib/simple-icons/icons/spotify.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Spotify icon</title><path d="M12 0C5.4 0 0 5.4 0 12s5.4 12 12 12 12-5.4 12-12S18.66 0 12 0zm5.521 17.34c-.24.359-.66.48-1.021.24-2.82-1.74-6.36-2.101-10.561-1.141-.418.122-.779-.179-.899-.539-.12-.421.18-.78.54-.9 4.56-1.021 8.52-.6 11.64 1.32.42.18.479.659.301 1.02zm1.44-3.3c-.301.42-.841.6-1.262.3-3.239-1.98-8.159-2.58-11.939-1.38-.479.12-1.02-.12-1.14-.6-.12-.48.12-1.021.6-1.141C9.6 9.9 15 10.561 18.72 12.84c.361.181.54.78.241 1.2zm.12-3.36C15.24 8.4 8.82 8.16 5.16 9.301c-.6.179-1.2-.181-1.38-.721-.18-.601.18-1.2.72-1.381 4.26-1.26 11.28-1.02 15.721 1.621.539.3.719 1.02.419 1.56-.299.421-1.02.599-1.559.3z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Spotify</title><path d="M12 0C5.4 0 0 5.4 0 12s5.4 12 12 12 12-5.4 12-12S18.66 0 12 0zm5.521 17.34c-.24.359-.66.48-1.021.24-2.82-1.74-6.36-2.101-10.561-1.141-.418.122-.779-.179-.899-.539-.12-.421.18-.78.54-.9 4.56-1.021 8.52-.6 11.64 1.32.42.18.479.659.301 1.02zm1.44-3.3c-.301.42-.841.6-1.262.3-3.239-1.98-8.159-2.58-11.939-1.38-.479.12-1.02-.12-1.14-.6-.12-.48.12-1.021.6-1.141C9.6 9.9 15 10.561 18.72 12.84c.361.181.54.78.241 1.2zm.12-3.36C15.24 8.4 8.82 8.16 5.16 9.301c-.6.179-1.2-.181-1.38-.721-.18-.601.18-1.2.72-1.381 4.26-1.26 11.28-1.02 15.721 1.621.539.3.719 1.02.419 1.56-.299.421-1.02.599-1.559.3z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/spotlight.svg b/assets/lib/simple-icons/icons/spotlight.svg
index 9d71aea5..defd6cc5 100644
--- a/assets/lib/simple-icons/icons/spotlight.svg
+++ b/assets/lib/simple-icons/icons/spotlight.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Spotlight icon</title><path d="M15.126 6.408c.008.101.008.194 0 .295-.034.589-.295 1.027-.656 1.388a2.093 2.093 0 0 1-1.464.606 2.106 2.106 0 0 1-1.498-.572 2.126 2.126 0 0 1-.126-2.996l.101-.101c.353-.345.757-.547 1.372-.606a2.112 2.112 0 0 1 1.582.555c.396.37.64.884.69 1.431zm8.465 7.288l-.631 1.22a3.73 3.73 0 0 0-.37 1.144l-.21 1.363a3.692 3.692 0 0 1-2.003 2.752l-1.229.614c-.362.185-.69.421-.976.707l-.968.985a3.703 3.703 0 0 1-3.24 1.052l-1.355-.227a3.625 3.625 0 0 0-1.203 0l-1.355.227a3.71 3.71 0 0 1-3.24-1.052l-.968-.985a3.669 3.669 0 0 0-.976-.707l-1.229-.614a3.71 3.71 0 0 1-2.003-2.752l-.21-1.363a3.58 3.58 0 0 0-.37-1.144l-.64-1.22a3.68 3.68 0 0 1 0-3.4l.631-1.22a3.73 3.73 0 0 0 .37-1.144l.21-1.363a3.692 3.692 0 0 1 2.003-2.752l1.229-.614c.362-.185.69-.421.976-.707l.968-.976a3.703 3.703 0 0 1 3.24-1.052l1.355.227c.396.067.808.067 1.203 0l1.355-.227a3.71 3.71 0 0 1 3.24 1.052l.968.976c.286.286.614.53.976.707l1.229.614a3.71 3.71 0 0 1 2.003 2.752l.21 1.363c.059.404.185.791.37 1.144l.631 1.22a3.703 3.703 0 0 1 .008 3.4zm-7.287-7.33a3.045 3.045 0 0 0-.345-1.296 3.38 3.38 0 0 0-3.223-1.826c-.135.017-.252.025-.37.042a3.316 3.316 0 0 0-1.868 1.052 3.255 3.255 0 0 0-.841 2.44c.076.926.488 1.717 1.086 2.23.438.379.993.715 1.691.816 1.338.202 2.365-.328 3.029-1.052a3.24 3.24 0 0 0 .841-2.407zm-9.736 6.766c.244-.135.48-.278.715-.412-.084-.968-.16-2.011-.236-2.903.985-.412 1.683-1.212 1.994-2.339.252-.909.143-1.977-.32-2.575a1.533 1.533 0 0 0-.597-.488c-.404-.151-.892-.034-1.229.109a2.902 2.902 0 0 0-.522.303c-.32.227-.614.48-.884.774.286 2.491.572 5.108.85 7.657.076-.034.151-.076.227-.126zm.126-7.153c.017-.076.202-.185.269-.236a.857.857 0 0 1 .429-.16c.463-.017.572.379.597.825.017.236.017.471 0 .707-.059.783-.429 1.287-1.043 1.54-.05-.488-.084-1.077-.143-1.641-.025-.227-.059-.53-.093-.799-.008-.076-.017-.151-.017-.236zm-1.136 6.278a6.08 6.08 0 0 0-.421-1.212 4.559 4.559 0 0 1-.37-1.237c-.067-.597.05-1.119.429-1.397-.143-.463-.261-.917-.404-1.372-.825.438-1.397 1.229-1.397 2.407 0 .724.269 1.195.53 1.717.177.345.328.698.446 1.069.118.396.227.833.194 1.245-.067.791-.396 1.346-.825 1.818-.042.05-.185.168-.185.202.025.059.05.109.084.16.168.353.32.656.488 1.001.025.05.05.151.084.168s.101-.067.143-.118c.143-.151.278-.311.404-.48.698-.968 1.119-2.474.799-3.972zm2.777 1.674c.345-.976.673-1.986.926-3.012.076-.303.168-.614.227-.926.008-.034.034-.109 0-.126-.446.135-.909.252-1.346.396-.185 1.523-.64 2.878-1.153 4.148s-1.144 2.44-1.801 3.559c.808.875 1.834 1.54 2.962 2.095.202-.337.421-.665.614-1.01-.69-.421-1.405-.825-1.994-1.346a39.617 39.617 0 0 0 1.565-3.778zm2.625-2.684c-.286-.194-.64-.337-.951-.505-.623 2.39-1.456 4.594-2.255 6.833.278.151.547.32.833.471.539-1.043.867-2.163 1.296-3.299.21-.555.387-1.128.564-1.708s.353-1.186.513-1.792zm2.424 6.993v-.993c0-.227-.008-.48-.017-.875-.597.076-1.203.126-1.792.21-.025.328-.025.673-.042 1.018.261.017.673-.034.934-.034 0 .488 0 .909.008 1.321 0 .16.025.32-.017.454-.059.202-.269.328-.539.303-.311-.034-.555-.353-.69-.614-.463-.909-.311-2.407-.126-3.416a5.324 5.324 0 0 1 .732-1.927c.345-.547.816-1.001 1.489-1.195 0-.278-.017-.656-.034-.968-.008-.143 0-.32-.034-.396-.008-.008-.025.008-.034.008a3.66 3.66 0 0 0-1.128.64 4.8 4.8 0 0 0-1.22 1.414 5.505 5.505 0 0 0-.286.589c-.362.808-.53 1.742-.631 2.777-.076.791-.084 1.515.034 2.23.042.227.109.454.194.673.295.774.867 1.422 2.028 1.262.446-.059.808-.236 1.186-.396 0-.74-.017-1.515-.017-2.087zm3.559-4.477a22.049 22.049 0 0 1-.109-1.691c-.025-.783 0-1.54.042-2.322 0-.008 0-.008-.008-.008-.303.236-.648.48-.976.715a.418.418 0 0 0-.126.118.853.853 0 0 0 0 .202c-.008 1.128.059 2.322.084 3.332-.278.118-.555.269-.833.379a88.942 88.942 0 0 1-.261-3.408c-.37.126-.707.278-1.069.412.076.555.151 1.086.202 1.599.093.816.135 1.632.143 2.449 0 .236 0 .471-.017.707-.034.496-.025 1.001-.059 1.498-.076.959-.067 1.986-.067 2.895.194-.084.379-.194.572-.286.194-.084.379-.185.564-.295 0-.362.017-.648.025-.959.034-1.186.067-2.179.025-3.231.32-.151.64-.303.976-.446.227 1.355.682 2.541 1.094 3.753.345-.261.64-.572.968-.858a22.97 22.97 0 0 1-.614-1.919 13.182 13.182 0 0 1-.555-2.634zm2.583-3.787c.194-.076.37-.194.555-.286s.362-.194.539-.303c-.337-.968-.757-1.851-1.338-2.609a10.081 10.081 0 0 0-1.977-1.986c0-.017-.025 0-.025.008a7.414 7.414 0 0 0-.513.724c-.034.059-.151.21-.143.269.05.067.109.126.177.177.067.067.135.118.185.168.303.311.555.589.833.926.042.05.143.16.143.21a1.388 1.388 0 0 1-.076.269c-.135.48-.227.951-.311 1.456a12.46 12.46 0 0 0-.151 2.962c.076 1.052.278 2.003.505 2.928.109.454.244.909.412 1.346.126.328.252.656.396.951.05.101.076.219.16.295.286-.37.589-.724.867-1.094-.421-.749-.707-1.666-.926-2.617a6.908 6.908 0 0 1-.177-1.01c-.126-1.372-.177-2.861.194-4.157.295.429.522.892.673 1.372z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Spotlight</title><path d="M15.126 6.408c.008.101.008.194 0 .295-.034.589-.295 1.027-.656 1.388a2.093 2.093 0 0 1-1.464.606 2.106 2.106 0 0 1-1.498-.572 2.126 2.126 0 0 1-.126-2.996l.101-.101c.353-.345.757-.547 1.372-.606a2.112 2.112 0 0 1 1.582.555c.396.37.64.884.69 1.431zm8.465 7.288l-.631 1.22a3.73 3.73 0 0 0-.37 1.144l-.21 1.363a3.692 3.692 0 0 1-2.003 2.752l-1.229.614c-.362.185-.69.421-.976.707l-.968.985a3.703 3.703 0 0 1-3.24 1.052l-1.355-.227a3.625 3.625 0 0 0-1.203 0l-1.355.227a3.71 3.71 0 0 1-3.24-1.052l-.968-.985a3.669 3.669 0 0 0-.976-.707l-1.229-.614a3.71 3.71 0 0 1-2.003-2.752l-.21-1.363a3.58 3.58 0 0 0-.37-1.144l-.64-1.22a3.68 3.68 0 0 1 0-3.4l.631-1.22a3.73 3.73 0 0 0 .37-1.144l.21-1.363a3.692 3.692 0 0 1 2.003-2.752l1.229-.614c.362-.185.69-.421.976-.707l.968-.976a3.703 3.703 0 0 1 3.24-1.052l1.355.227c.396.067.808.067 1.203 0l1.355-.227a3.71 3.71 0 0 1 3.24 1.052l.968.976c.286.286.614.53.976.707l1.229.614a3.71 3.71 0 0 1 2.003 2.752l.21 1.363c.059.404.185.791.37 1.144l.631 1.22a3.703 3.703 0 0 1 .008 3.4zm-7.287-7.33a3.045 3.045 0 0 0-.345-1.296 3.38 3.38 0 0 0-3.223-1.826c-.135.017-.252.025-.37.042a3.316 3.316 0 0 0-1.868 1.052 3.255 3.255 0 0 0-.841 2.44c.076.926.488 1.717 1.086 2.23.438.379.993.715 1.691.816 1.338.202 2.365-.328 3.029-1.052a3.24 3.24 0 0 0 .841-2.407zm-9.736 6.766c.244-.135.48-.278.715-.412-.084-.968-.16-2.011-.236-2.903.985-.412 1.683-1.212 1.994-2.339.252-.909.143-1.977-.32-2.575a1.533 1.533 0 0 0-.597-.488c-.404-.151-.892-.034-1.229.109a2.902 2.902 0 0 0-.522.303c-.32.227-.614.48-.884.774.286 2.491.572 5.108.85 7.657.076-.034.151-.076.227-.126zm.126-7.153c.017-.076.202-.185.269-.236a.857.857 0 0 1 .429-.16c.463-.017.572.379.597.825.017.236.017.471 0 .707-.059.783-.429 1.287-1.043 1.54-.05-.488-.084-1.077-.143-1.641-.025-.227-.059-.53-.093-.799-.008-.076-.017-.151-.017-.236zm-1.136 6.278a6.08 6.08 0 0 0-.421-1.212 4.559 4.559 0 0 1-.37-1.237c-.067-.597.05-1.119.429-1.397-.143-.463-.261-.917-.404-1.372-.825.438-1.397 1.229-1.397 2.407 0 .724.269 1.195.53 1.717.177.345.328.698.446 1.069.118.396.227.833.194 1.245-.067.791-.396 1.346-.825 1.818-.042.05-.185.168-.185.202.025.059.05.109.084.16.168.353.32.656.488 1.001.025.05.05.151.084.168s.101-.067.143-.118c.143-.151.278-.311.404-.48.698-.968 1.119-2.474.799-3.972zm2.777 1.674c.345-.976.673-1.986.926-3.012.076-.303.168-.614.227-.926.008-.034.034-.109 0-.126-.446.135-.909.252-1.346.396-.185 1.523-.64 2.878-1.153 4.148s-1.144 2.44-1.801 3.559c.808.875 1.834 1.54 2.962 2.095.202-.337.421-.665.614-1.01-.69-.421-1.405-.825-1.994-1.346a39.617 39.617 0 0 0 1.565-3.778zm2.625-2.684c-.286-.194-.64-.337-.951-.505-.623 2.39-1.456 4.594-2.255 6.833.278.151.547.32.833.471.539-1.043.867-2.163 1.296-3.299.21-.555.387-1.128.564-1.708s.353-1.186.513-1.792zm2.424 6.993v-.993c0-.227-.008-.48-.017-.875-.597.076-1.203.126-1.792.21-.025.328-.025.673-.042 1.018.261.017.673-.034.934-.034 0 .488 0 .909.008 1.321 0 .16.025.32-.017.454-.059.202-.269.328-.539.303-.311-.034-.555-.353-.69-.614-.463-.909-.311-2.407-.126-3.416a5.324 5.324 0 0 1 .732-1.927c.345-.547.816-1.001 1.489-1.195 0-.278-.017-.656-.034-.968-.008-.143 0-.32-.034-.396-.008-.008-.025.008-.034.008a3.66 3.66 0 0 0-1.128.64 4.8 4.8 0 0 0-1.22 1.414 5.505 5.505 0 0 0-.286.589c-.362.808-.53 1.742-.631 2.777-.076.791-.084 1.515.034 2.23.042.227.109.454.194.673.295.774.867 1.422 2.028 1.262.446-.059.808-.236 1.186-.396 0-.74-.017-1.515-.017-2.087zm3.559-4.477a22.049 22.049 0 0 1-.109-1.691c-.025-.783 0-1.54.042-2.322 0-.008 0-.008-.008-.008-.303.236-.648.48-.976.715a.418.418 0 0 0-.126.118.853.853 0 0 0 0 .202c-.008 1.128.059 2.322.084 3.332-.278.118-.555.269-.833.379a88.942 88.942 0 0 1-.261-3.408c-.37.126-.707.278-1.069.412.076.555.151 1.086.202 1.599.093.816.135 1.632.143 2.449 0 .236 0 .471-.017.707-.034.496-.025 1.001-.059 1.498-.076.959-.067 1.986-.067 2.895.194-.084.379-.194.572-.286.194-.084.379-.185.564-.295 0-.362.017-.648.025-.959.034-1.186.067-2.179.025-3.231.32-.151.64-.303.976-.446.227 1.355.682 2.541 1.094 3.753.345-.261.64-.572.968-.858a22.97 22.97 0 0 1-.614-1.919 13.182 13.182 0 0 1-.555-2.634zm2.583-3.787c.194-.076.37-.194.555-.286s.362-.194.539-.303c-.337-.968-.757-1.851-1.338-2.609a10.081 10.081 0 0 0-1.977-1.986c0-.017-.025 0-.025.008a7.414 7.414 0 0 0-.513.724c-.034.059-.151.21-.143.269.05.067.109.126.177.177.067.067.135.118.185.168.303.311.555.589.833.926.042.05.143.16.143.21a1.388 1.388 0 0 1-.076.269c-.135.48-.227.951-.311 1.456a12.46 12.46 0 0 0-.151 2.962c.076 1.052.278 2.003.505 2.928.109.454.244.909.412 1.346.126.328.252.656.396.951.05.101.076.219.16.295.286-.37.589-.724.867-1.094-.421-.749-.707-1.666-.926-2.617a6.908 6.908 0 0 1-.177-1.01c-.126-1.372-.177-2.861.194-4.157.295.429.522.892.673 1.372z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/spreadshirt.svg b/assets/lib/simple-icons/icons/spreadshirt.svg
new file mode 100644
index 00000000..a1129ce0
--- /dev/null
+++ b/assets/lib/simple-icons/icons/spreadshirt.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Spreadshirt</title><path d="M12 6.306L7.796 2.102 0 9.898l12 12 12-12-7.796-7.796zm0 12L3.592 9.898l4.204-4.204L12 9.898l4.184-4.184 4.204 4.204"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/spreaker.svg b/assets/lib/simple-icons/icons/spreaker.svg
index 80e20287..7342dcba 100644
--- a/assets/lib/simple-icons/icons/spreaker.svg
+++ b/assets/lib/simple-icons/icons/spreaker.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Spreaker icon</title><path d="M14.615 0l-5.64 6.54L.529 4.718l8.68 7.372-8.537 7.463 8.411-1.984L14.843 24l.71-8.601 7.918-3.483-7.963-3.33L14.621 0h-.006z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Spreaker</title><path d="M14.615 0l-5.64 6.54L.529 4.718l8.68 7.372-8.537 7.463 8.411-1.984L14.843 24l.71-8.601 7.918-3.483-7.963-3.33L14.621 0h-.006z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/spring.svg b/assets/lib/simple-icons/icons/spring.svg
index 9798dab4..bfbd69d9 100644
--- a/assets/lib/simple-icons/icons/spring.svg
+++ b/assets/lib/simple-icons/icons/spring.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Spring icon</title><path d="M21.822 1.248c-.338.806-.766 1.57-1.281 2.272A12.045 12.045 0 0012.03 0C5.431 0 0 5.43 0 12.031c0 3.293 1.35 6.445 3.737 8.717l.444.393a12.041 12.041 0 007.75 2.83c6.275 0 11.55-4.911 11.997-11.172.328-3.065-.572-6.941-2.106-11.55zM5.447 20.817c-.194.24-.49.38-.8.38a1.033 1.033 0 01-1.028-1.03c0-.564.465-1.03 1.028-1.03a1.032 1.032 0 01.8 1.68zm16.325-3.602c-2.969 3.954-9.31 2.622-13.375 2.812 0 0-.722.044-1.447.162 0 0 .272-.115.625-.25 2.853-.992 4.203-1.185 5.937-2.075 3.266-1.66 6.494-5.293 7.166-9.072-1.244 3.636-5.012 6.76-8.447 8.03-2.353.867-6.603 1.71-6.603 1.71l-.172-.09c-2.894-1.408-2.981-7.672 2.278-9.694 2.303-.886 4.507-.4 6.994-.992 2.656-.63 5.728-2.622 6.978-5.219 1.4 4.154 3.085 10.658.066 14.678z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Spring</title><path d="M21.8537 1.4158a10.4504 10.4504 0 0 1-1.284 2.2471A11.9666 11.9666 0 1 0 3.8518 20.7757l.4445.3951a11.9543 11.9543 0 0 0 19.6316-8.2971c.3457-3.0126-.568-6.8649-2.0743-11.458zM5.5805 20.8745a1.0174 1.0174 0 1 1-.1482-1.4323 1.0396 1.0396 0 0 1 .1482 1.4323zm16.1991-3.5806c-2.9385 3.9263-9.2601 2.5928-13.2852 2.7904 0 0-.7161.0494-1.4323.1481 0 0 .2717-.1234.6174-.2469 2.8398-.9877 4.1732-1.1853 5.9018-2.0743 3.2349-1.6545 6.4698-5.2844 7.1118-9.0379-1.2347 3.6053-4.9881 6.7167-8.3959 7.9761-2.3459.8643-6.5685 1.7039-6.5685 1.7039l-.1729-.0988c-2.8645-1.4076-2.9632-7.6304 2.2718-9.6306 2.2966-.889 4.4696-.395 6.9637-.9877 2.6422-.6174 5.7043-2.5929 6.939-5.1857 1.3828 4.1732 3.062 10.643.0493 14.6434z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/spring_creators.svg b/assets/lib/simple-icons/icons/spring_creators.svg
new file mode 100644
index 00000000..6345d946
--- /dev/null
+++ b/assets/lib/simple-icons/icons/spring_creators.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Spring</title><path d="M8.563 24c-1.839 0-4.435-.537-7.028-2.87l2.035-2.262c3.636 3.273 7.425 1.98 8.595.888.078-.079.156-.153.234-.23-3.83-.373-6.629-3.086-6.822-3.277-2.933-2.889-3.6-6.808-1.512-8.93s6.015-1.522 8.95 1.357c.257.246 3.116 3.052 3.677 6.605a6.776 6.776 0 002.727-5.426 6.62 6.62 0 00-1.995-4.791c-1.334-1.303-3.222-2.02-5.306-2.02V0c2.88 0 5.519 1.024 7.43 2.882 1.881 1.83 2.917 4.304 2.917 6.973a9.831 9.831 0 01-6.116 9.086c-.416 1.1-1.12 2.117-2.106 3.04-.97.905-2.865 1.908-5.28 2.01-.13.007-.262.009-.4.009zM7.283 9.077c-.425 0-.79.115-1.046.375-.749.762-.275 2.904 1.48 4.633l.008.009c.025.024 2.771 2.687 6.025 2.414v-.005c.015-2.873-2.808-5.597-2.837-5.625l-.02-.019C9.85 9.832 8.37 9.077 7.283 9.077Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/springboot.svg b/assets/lib/simple-icons/icons/springboot.svg
new file mode 100644
index 00000000..7f2e01c5
--- /dev/null
+++ b/assets/lib/simple-icons/icons/springboot.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Spring Boot</title><path d="m23.693 10.7058-4.73-8.1844c-.4094-.7106-1.4166-1.2942-2.2402-1.2942H7.2725c-.819 0-1.8308.5836-2.2402 1.2942L.307 10.7058c-.4095.7106-.4095 1.873 0 2.5837l4.7252 8.189c.4094.7107 1.4166 1.2943 2.2402 1.2943h9.455c.819 0 1.826-.5836 2.2402-1.2942l4.7252-8.189c.4095-.7107.4095-1.8732 0-2.5838zM10.9763 5.7547c0-.5365.4377-.9742.9742-.9742s.9742.4377.9742.9742v5.8217c0 .5366-.4377.9742-.9742.9742s-.9742-.4376-.9742-.9742zm.9742 12.4294c-3.6427 0-6.6077-2.965-6.6077-6.6077.0047-2.0896.993-4.0521 2.6685-5.304a.8657.8657 0 0 1 1.2142.1788.8657.8657 0 0 1-.1788 1.2143c-2.1602 1.6048-2.612 4.6592-1.0072 6.8194 1.6049 2.1603 4.6593 2.612 6.8195 1.0072 1.2378-.9177 1.9673-2.372 1.9673-3.9157a4.8972 4.8972 0 0 0-1.9861-3.925c-.386-.2824-.466-.8284-.1836-1.2143.2824-.386.8283-.466 1.2143-.1835 1.6895 1.2471 2.6826 3.2238 2.6873 5.3228 0 3.6474-2.965 6.6077-6.6077 6.6077z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/springsecurity.svg b/assets/lib/simple-icons/icons/springsecurity.svg
new file mode 100644
index 00000000..5416ba26
--- /dev/null
+++ b/assets/lib/simple-icons/icons/springsecurity.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Spring Security</title><path d="M20.59 2.066 11.993 0 3.41 2.066v6.612h4.557a3.804 3.804 0 0 0 0 .954H3.41v3.106C3.41 19.867 11.994 24 11.994 24s8.582-4.133 8.582-11.258V9.635h-4.545a3.616 3.616 0 0 0 0-.954h4.558zM12 12.262h-.006a3.109 3.109 0 1 1 .006 0zm-.006-4.579a.804.804 0 0 0-.37 1.52v.208l.238.237v.159l.159.159v.159l-.14.14.15.246v.159l-.16.189.223.222.246-.246V9.218a.804.804 0 0 0-.346-1.535zm0 .836a.299.299 0 1 1 .298-.299.299.299 0 0 1-.298.3z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/sprint.svg b/assets/lib/simple-icons/icons/sprint.svg
deleted file mode 100644
index e9142b32..00000000
--- a/assets/lib/simple-icons/icons/sprint.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Sprint icon</title><path d="M2.13 23.995c5.493-1.808 13.457-6.02 18.996-9.782.465-.314.827-.607.827-1.118 0-.889-1.655-2.08-2.458-2.555-4.359 4.456-13.033 11.134-17.366 13.455M7.225 20.21c3.388-2.304 8.31-6.638 9.975-8.996.393-.554.683-.876.683-1.456 0-.952-1.128-1.65-1.94-2.135-1.946 4.51-6.316 10.125-8.718 12.587M9.816 16.682c2.344-2.967 4.188-6.454 4.188-8.958 0-1.308-.953-2.222-2.196-2.916.024 2.721-.934 9.101-1.992 11.874M10.312 13.82c.438-2.847.18-6.285-.379-8.442-.304-1.174-1.38-2.5-2.376-2.913 1.305 3.643 2.426 8.832 2.755 11.355M9.347 9.825C8.321 7.097 5.763 1.41 2 0c2.45 2.66 6.083 7.935 7.347 9.825"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/spyderide.svg b/assets/lib/simple-icons/icons/spyderide.svg
new file mode 100644
index 00000000..77226168
--- /dev/null
+++ b/assets/lib/simple-icons/icons/spyderide.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Spyder IDE</title><path d="M17.383.3s-.717 1.14-1.798 2.931l-6.274-.035a73.417 73.417 0 0 0-.353-2.74L8.05.59c.138.936.248 1.804.337 2.6h-.02a.524.524 0 0 0-.412.198l-4.377 5.48c-2.193.054-3.49-.07-3.49-.07L0 9.714s1.212.116 3.27.08l1.434 6.47c-1.812 1.535-3.169 2.362-3.169 2.362l.477.784s1.281-.779 3.024-2.225a.5.5 0 0 0 .086.053l6.6 3.249c-.01 2.007.058 3.214.058 3.214l.917-.052s-.07-1.265-.056-3.356l6.218-2.978a.526.526 0 0 0 .215-.19l.245.243c1.149 1.118 1.93 1.598 1.93 1.598l.477-.784s-.67-.406-1.767-1.472a18.93 18.93 0 0 1-.612-.623l1.422-6.16A116.35 116.35 0 0 1 24 8.718l-.306-.866s-1.224.434-3.162 1.183l-4.166-5.322A200.58 200.58 0 0 1 18.16.79zM9.419 4.256l5.532.032c-.586.981-1.237 2.09-1.932 3.297l-3.368.597a52.326 52.326 0 0 0-.232-3.926zm-.91.13c.192 2.06.225 3.46.23 4.087a52.221 52.221 0 0 1-3.766.339zm7.276.294l3.343 4.27a1.83 1.83 0 0 0-.656.086c-.451.14-.857.405-1.22.768-.24.24-.435.498-.582.776-.378.156-.765.317-1.165.485l-1.64-3.109c.692-1.2 1.34-2.304 1.92-3.276zm-2.666 3.824l1.68 3.184-.75.783a1.09 1.09 0 0 1-.122-.102l-1.313-1.313-1.418-1.417a2.9 2.9 0 0 0-.943-.627zM6.984 9.586l-.05.048-2.147 2.147-.448-2.02c.795-.032 1.68-.087 2.645-.175zm2.418.958c.22.051.418.158.576.313l1.312 1.313 1.418 1.418c.046.047.094.09.143.134l-.534.557-3.214-1.582zm-.938.091l-.31 2.247c-.86.98-1.732 1.847-2.549 2.59l-.465-2.1.247.247 2.766-2.766a1.17 1.17 0 0 1 .311-.218zm7.934 1.05l.004.038-.232.232-.087-.137zm2.724.696l-.634 2.743c-.42-.5-.873-1.071-1.334-1.715l.502-.503c.22.009.437-.028.625-.086.3-.093.58-.243.841-.439zm-3.747.033l.1.159a1.29 1.29 0 0 1-.374.126zM8.78 13.563l3.136 1.544a88.99 88.99 0 0 0-.178 4.207L5.9 16.44a33.523 33.523 0 0 0 2.879-2.877zm7.67.437a27.7 27.7 0 0 0 1.782 2.228l-.054.237-5.521 2.644c.025-1.18.078-2.547.18-4.047l.813-.85a3.159 3.159 0 0 0 2.8-.212z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/sqlite.svg b/assets/lib/simple-icons/icons/sqlite.svg
index 7fde5f0b..a776ea18 100644
--- a/assets/lib/simple-icons/icons/sqlite.svg
+++ b/assets/lib/simple-icons/icons/sqlite.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>SQLite icon</title><path d="M21.678.521c-1.032-.92-2.28-.55-3.513.544a8.71 8.71 0 0 0-.547.535c-2.109 2.237-4.066 6.38-4.674 9.544.237.48.422 1.093.544 1.561a13.044 13.044 0 0 1 .164.703s-.019-.071-.096-.296l-.05-.146a1.689 1.689 0 0 0-.033-.08c-.138-.32-.518-.995-.686-1.289-.143.423-.27.818-.376 1.176.484.884.778 2.4.778 2.4s-.025-.099-.147-.442c-.107-.303-.644-1.244-.772-1.464-.217.804-.304 1.346-.226 1.478.152.256.296.698.422 1.186.286 1.1.485 2.44.485 2.44l.017.224a22.41 22.41 0 0 0 .056 2.748c.095 1.146.273 2.13.5 2.657l.155-.084c-.334-1.038-.47-2.399-.41-3.967.09-2.398.642-5.29 1.661-8.304 1.723-4.55 4.113-8.201 6.3-9.945-1.993 1.8-4.692 7.63-5.5 9.788-.904 2.416-1.545 4.684-1.931 6.857.666-2.037 2.821-2.912 2.821-2.912s1.057-1.304 2.292-3.166c-.74.169-1.955.458-2.362.629-.6.251-.762.337-.762.337s1.945-1.184 3.613-1.72C21.695 7.9 24.195 2.767 21.678.521m-18.573.543A1.842 1.842 0 0 0 1.27 2.9v16.608a1.84 1.84 0 0 0 1.835 1.834h9.418a22.953 22.953 0 0 1-.052-2.707c-.006-.062-.011-.141-.016-.2a27.01 27.01 0 0 0-.473-2.378c-.121-.47-.275-.898-.369-1.057-.116-.197-.098-.31-.097-.432 0-.12.015-.245.037-.386a9.98 9.98 0 0 1 .234-1.045l.217-.028c-.017-.035-.014-.065-.031-.097l-.041-.381a32.8 32.8 0 0 1 .382-1.194l.2-.019c-.008-.016-.01-.038-.018-.053l-.043-.316c.63-3.28 2.587-7.443 4.8-9.791.066-.069.133-.128.198-.194Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>SQLite</title><path d="M21.678.521c-1.032-.92-2.28-.55-3.513.544a8.71 8.71 0 0 0-.547.535c-2.109 2.237-4.066 6.38-4.674 9.544.237.48.422 1.093.544 1.561a13.044 13.044 0 0 1 .164.703s-.019-.071-.096-.296l-.05-.146a1.689 1.689 0 0 0-.033-.08c-.138-.32-.518-.995-.686-1.289-.143.423-.27.818-.376 1.176.484.884.778 2.4.778 2.4s-.025-.099-.147-.442c-.107-.303-.644-1.244-.772-1.464-.217.804-.304 1.346-.226 1.478.152.256.296.698.422 1.186.286 1.1.485 2.44.485 2.44l.017.224a22.41 22.41 0 0 0 .056 2.748c.095 1.146.273 2.13.5 2.657l.155-.084c-.334-1.038-.47-2.399-.41-3.967.09-2.398.642-5.29 1.661-8.304 1.723-4.55 4.113-8.201 6.3-9.945-1.993 1.8-4.692 7.63-5.5 9.788-.904 2.416-1.545 4.684-1.931 6.857.666-2.037 2.821-2.912 2.821-2.912s1.057-1.304 2.292-3.166c-.74.169-1.955.458-2.362.629-.6.251-.762.337-.762.337s1.945-1.184 3.613-1.72C21.695 7.9 24.195 2.767 21.678.521m-18.573.543A1.842 1.842 0 0 0 1.27 2.9v16.608a1.84 1.84 0 0 0 1.835 1.834h9.418a22.953 22.953 0 0 1-.052-2.707c-.006-.062-.011-.141-.016-.2a27.01 27.01 0 0 0-.473-2.378c-.121-.47-.275-.898-.369-1.057-.116-.197-.098-.31-.097-.432 0-.12.015-.245.037-.386a9.98 9.98 0 0 1 .234-1.045l.217-.028c-.017-.035-.014-.065-.031-.097l-.041-.381a32.8 32.8 0 0 1 .382-1.194l.2-.019c-.008-.016-.01-.038-.018-.053l-.043-.316c.63-3.28 2.587-7.443 4.8-9.791.066-.069.133-.128.198-.194Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/square.svg b/assets/lib/simple-icons/icons/square.svg
index 5f752c16..f798f10d 100644
--- a/assets/lib/simple-icons/icons/square.svg
+++ b/assets/lib/simple-icons/icons/square.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Square icon</title><path d="M4.01 0A4.01 4.01 0 000 4.01v15.98c0 2.21 1.8 4 4.01 4.01h15.98C22.2 24 24 22.2 24 19.99V4A4.01 4.01 0 0019.99 0H4zm1.62 4.36h12.74c.7 0 1.26.57 1.26 1.27v12.74c0 .7-.56 1.27-1.26 1.27H5.63c-.7 0-1.26-.57-1.26-1.27V5.63a1.27 1.27 0 011.26-1.27zm3.83 4.35a.73.73 0 00-.73.73v5.09c0 .4.32.72.72.72h5.1a.73.73 0 00.73-.72V9.44a.73.73 0 00-.73-.73h-5.1Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Square</title><path d="M4.01 0A4.01 4.01 0 000 4.01v15.98c0 2.21 1.8 4 4.01 4.01h15.98C22.2 24 24 22.2 24 19.99V4A4.01 4.01 0 0019.99 0H4zm1.62 4.36h12.74c.7 0 1.26.57 1.26 1.27v12.74c0 .7-.56 1.27-1.26 1.27H5.63c-.7 0-1.26-.57-1.26-1.27V5.63a1.27 1.27 0 011.26-1.27zm3.83 4.35a.73.73 0 00-.73.73v5.09c0 .4.32.72.72.72h5.1a.73.73 0 00.73-.72V9.44a.73.73 0 00-.73-.73h-5.1Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/squareenix.svg b/assets/lib/simple-icons/icons/squareenix.svg
index 0a7cbc97..0e2996c9 100644
--- a/assets/lib/simple-icons/icons/squareenix.svg
+++ b/assets/lib/simple-icons/icons/squareenix.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Square Enix icon</title><path d="M1.723 0v24h20.554v-4.496H7.037V4.088h15.006V0zm9.751 9.46v4.497h8.584V9.459z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Square Enix</title><path d="M1.723 0v24h20.554v-4.496H7.037V4.088h15.006V0zm9.751 9.46v4.497h8.584V9.459z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/squarespace.svg b/assets/lib/simple-icons/icons/squarespace.svg
index fe15d6e6..f98104d6 100644
--- a/assets/lib/simple-icons/icons/squarespace.svg
+++ b/assets/lib/simple-icons/icons/squarespace.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Squarespace icon</title><path d="M22.655 8.719c-1.802-1.801-4.726-1.801-6.564 0l-7.351 7.35c-.45.45-.45 1.2 0 1.65.45.449 1.2.449 1.65 0l7.351-7.351c.899-.899 2.362-.899 3.264 0 .9.9.9 2.364 0 3.264l-7.239 7.239c.9.899 2.362.899 3.263 0l5.589-5.589c1.836-1.838 1.836-4.763.037-6.563zm-2.475 2.437c-.451-.45-1.201-.45-1.65 0l-7.354 7.389c-.9.899-2.361.899-3.262 0-.45-.45-1.2-.45-1.65 0s-.45 1.2 0 1.649c1.801 1.801 4.726 1.801 6.564 0l7.351-7.35c.449-.487.449-1.239.001-1.688zm-2.439-7.35c-1.801-1.801-4.726-1.801-6.564 0l-7.351 7.351c-.45.449-.45 1.199 0 1.649s1.2.45 1.65 0l7.395-7.351c.9-.899 2.371-.899 3.27 0 .451.45 1.201.45 1.65 0 .421-.487.421-1.199-.029-1.649h-.021zm-2.475 2.437c-.45-.45-1.2-.45-1.65 0l-7.351 7.389c-.899.9-2.363.9-3.265 0-.9-.899-.9-2.363 0-3.264l7.239-7.239c-.9-.9-2.362-.9-3.263 0L1.35 8.719c-1.8 1.8-1.8 4.725 0 6.563 1.801 1.801 4.725 1.801 6.564 0l7.35-7.351c.451-.488.451-1.238 0-1.688h.002z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Squarespace</title><path d="M22.655 8.719c-1.802-1.801-4.726-1.801-6.564 0l-7.351 7.35c-.45.45-.45 1.2 0 1.65.45.449 1.2.449 1.65 0l7.351-7.351c.899-.899 2.362-.899 3.264 0 .9.9.9 2.364 0 3.264l-7.239 7.239c.9.899 2.362.899 3.263 0l5.589-5.589c1.836-1.838 1.836-4.763.037-6.563zm-2.475 2.437c-.451-.45-1.201-.45-1.65 0l-7.354 7.389c-.9.899-2.361.899-3.262 0-.45-.45-1.2-.45-1.65 0s-.45 1.2 0 1.649c1.801 1.801 4.726 1.801 6.564 0l7.351-7.35c.449-.487.449-1.239.001-1.688zm-2.439-7.35c-1.801-1.801-4.726-1.801-6.564 0l-7.351 7.351c-.45.449-.45 1.199 0 1.649s1.2.45 1.65 0l7.395-7.351c.9-.899 2.371-.899 3.27 0 .451.45 1.201.45 1.65 0 .421-.487.421-1.199-.029-1.649h-.021zm-2.475 2.437c-.45-.45-1.2-.45-1.65 0l-7.351 7.389c-.899.9-2.363.9-3.265 0-.9-.899-.9-2.363 0-3.264l7.239-7.239c-.9-.9-2.362-.9-3.263 0L1.35 8.719c-1.8 1.8-1.8 4.725 0 6.563 1.801 1.801 4.725 1.801 6.564 0l7.35-7.351c.451-.488.451-1.238 0-1.688h.002z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ssrn.svg b/assets/lib/simple-icons/icons/ssrn.svg
index 0061f97e..49876b11 100644
--- a/assets/lib/simple-icons/icons/ssrn.svg
+++ b/assets/lib/simple-icons/icons/ssrn.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>SSRN icon</title><path d="M3.087 7.242c-1.704 0-2.878.996-2.878 2.395 0 .627.21 1.141.611 1.56.45.465.932.723 2.058 1.108 1.173.37 1.398.483 1.64.66.417.337.658.803.658 1.301 0 1.013-.964 1.833-2.154 1.833-.723 0-1.478-.29-1.945-.756-.353-.353-.594-.755-.803-1.366-.032-.08-.065-.128-.129-.128-.08 0-.145.08-.145.192 0 .129.065.499.177.852.097.338.161.563.161.595.097.482.113.498.241.611.338.257 1.334.498 2.074.498 1.848 0 3.166-1.173 3.166-2.813 0-1.205-.787-2.073-2.41-2.604-1.624-.53-1.705-.579-2.074-.98a1.476 1.476 0 0 1-.386-1.013c0-.868.707-1.495 1.688-1.495 1.173 0 2.266.691 2.572 1.64.08.257.112.305.209.305.064 0 .128-.08.128-.193 0-.048-.016-.16-.032-.29-.177-1.092-.193-1.14-.21-1.333 0-.225-.047-.322-.16-.322a.121.121 0 0 0-.064.032c-.16.129-.177.145-.257.145a.495.495 0 0 1-.129-.032c-.852-.354-.996-.402-1.607-.402zm5.256.032c-1.222 0-2.17.498-2.604 1.302l.096.659c.017.096.016.16.016.193 0 .257-.16.45-.369.498.048.499.257.933.61 1.286.45.466.933.724 2.058 1.11 1.158.385 1.399.482 1.64.658.418.322.659.804.659 1.302 0 1.013-.964 1.833-2.154 1.833-.723 0-1.48-.29-1.945-.755a2.82 2.82 0 0 1-.386-.483c-.096.225-.209.45-.338.643.097.45.113.483.242.579.337.257 1.334.498 2.073.498 1.833 0 3.167-1.173 3.167-2.813-.032-1.173-.836-2.025-2.46-2.572-1.64-.546-1.72-.578-2.073-.98a1.477 1.477 0 0 1-.386-1.013c0-.884.707-1.495 1.688-1.495 1.173 0 2.25.691 2.572 1.64.08.257.128.305.209.305.064 0 .129-.08.129-.193 0-.048-.017-.144-.033-.289-.177-1.093-.192-1.141-.209-1.334 0-.225-.048-.322-.16-.322-.032 0-.049.016-.065.032-.16.13-.176.145-.257.145-.032 0-.064-.016-.129-.032-.835-.37-.996-.402-1.591-.402zm4.662.177c-.306 0-.643.016-.98.032-.724.048-.724.048-1.062.048h-.128a.81.81 0 0 1 .048.306c.016.128.016.193.112.723l.113.707a1.1 1.1 0 0 1 .016.193.51.51 0 0 1-.145.37v2.524c.29.417.434.9.434 1.446 0 .627-.177 1.19-.482 1.656-.08.579-.29.723-.82.884-.128.032-.16.048-.16.129 0 .096.048.128.176.128.048 0 .21-.016.338-.032.225-.032.563-.048.884-.048.627 0 1.318.016 1.479.048.177.016.321.032.402.032.112 0 .209-.048.209-.128s-.08-.129-.241-.145c-.933-.096-1.238-.434-1.206-1.35v-2.38c.016-.224.048-.257.386-.24h.723c.29 0 .37.048.515.273.048.08.08.128.08.144l1.623 2.492c.66 1.013 1.238 1.399 2.042 1.399.482 0 .932-.129.932-.258 0-.048-.048-.096-.112-.096-.691.016-1.158-.37-1.977-1.624l-1.833-2.668c1.06-.547 1.64-1.318 1.64-2.299 0-.707-.29-1.334-.804-1.72-.514-.385-1.174-.546-2.202-.546zm10.802.112c-.08 0-.177.016-.322.033-.16.032-.321.048-.595.048-.385 0-1.028-.032-1.27-.048l-.289-.016c-.128 0-.193.048-.193.128 0 .096.049.145.193.177 1.254.177 1.367.466 1.334 3.536v3.15c0 .21-.016.258-.08.242-.032 0-.08-.048-.177-.16l-6.044-6.88c-.128-.145-.209-.193-.353-.193-.048 0-.129 0-.225.016h-.113c-.032 0-.321 0-.514-.016.08.048.16.112.24.16.58.434.933 1.174.933 1.977 0 .129-.016.258-.032.37v4.18l.16.24c.145.21.258.386.37.547v-4.71c0-.225.032-.289.129-.289.064 0 .08.016.16.096l5.546 6.366c.21.241.21.241.306.241.16 0 .209-.097.209-.386v-.128c.016-.386.016-.98.016-1.817v-4.276l.016-.417c-.016-1.592.048-1.753.659-1.913.096-.016.129-.049.129-.113 0-.08-.08-.145-.193-.145zm-11.156.338c.611 0 1.27.209 1.64.547.466.385.739 1.028.739 1.64 0 1.092-.691 1.767-1.849 1.767h-.739c-.434-.016-.466-.048-.466-.466V8.721c0-.45 0-.499.08-.611.097-.129.29-.209.595-.209z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>SSRN</title><path d="M3.087 7.242c-1.704 0-2.878.996-2.878 2.395 0 .627.21 1.141.611 1.56.45.465.932.723 2.058 1.108 1.173.37 1.398.483 1.64.66.417.337.658.803.658 1.301 0 1.013-.964 1.833-2.154 1.833-.723 0-1.478-.29-1.945-.756-.353-.353-.594-.755-.803-1.366-.032-.08-.065-.128-.129-.128-.08 0-.145.08-.145.192 0 .129.065.499.177.852.097.338.161.563.161.595.097.482.113.498.241.611.338.257 1.334.498 2.074.498 1.848 0 3.166-1.173 3.166-2.813 0-1.205-.787-2.073-2.41-2.604-1.624-.53-1.705-.579-2.074-.98a1.476 1.476 0 0 1-.386-1.013c0-.868.707-1.495 1.688-1.495 1.173 0 2.266.691 2.572 1.64.08.257.112.305.209.305.064 0 .128-.08.128-.193 0-.048-.016-.16-.032-.29-.177-1.092-.193-1.14-.21-1.333 0-.225-.047-.322-.16-.322a.121.121 0 0 0-.064.032c-.16.129-.177.145-.257.145a.495.495 0 0 1-.129-.032c-.852-.354-.996-.402-1.607-.402zm5.256.032c-1.222 0-2.17.498-2.604 1.302l.096.659c.017.096.016.16.016.193 0 .257-.16.45-.369.498.048.499.257.933.61 1.286.45.466.933.724 2.058 1.11 1.158.385 1.399.482 1.64.658.418.322.659.804.659 1.302 0 1.013-.964 1.833-2.154 1.833-.723 0-1.48-.29-1.945-.755a2.82 2.82 0 0 1-.386-.483c-.096.225-.209.45-.338.643.097.45.113.483.242.579.337.257 1.334.498 2.073.498 1.833 0 3.167-1.173 3.167-2.813-.032-1.173-.836-2.025-2.46-2.572-1.64-.546-1.72-.578-2.073-.98a1.477 1.477 0 0 1-.386-1.013c0-.884.707-1.495 1.688-1.495 1.173 0 2.25.691 2.572 1.64.08.257.128.305.209.305.064 0 .129-.08.129-.193 0-.048-.017-.144-.033-.289-.177-1.093-.192-1.141-.209-1.334 0-.225-.048-.322-.16-.322-.032 0-.049.016-.065.032-.16.13-.176.145-.257.145-.032 0-.064-.016-.129-.032-.835-.37-.996-.402-1.591-.402zm4.662.177c-.306 0-.643.016-.98.032-.724.048-.724.048-1.062.048h-.128a.81.81 0 0 1 .048.306c.016.128.016.193.112.723l.113.707a1.1 1.1 0 0 1 .016.193.51.51 0 0 1-.145.37v2.524c.29.417.434.9.434 1.446 0 .627-.177 1.19-.482 1.656-.08.579-.29.723-.82.884-.128.032-.16.048-.16.129 0 .096.048.128.176.128.048 0 .21-.016.338-.032.225-.032.563-.048.884-.048.627 0 1.318.016 1.479.048.177.016.321.032.402.032.112 0 .209-.048.209-.128s-.08-.129-.241-.145c-.933-.096-1.238-.434-1.206-1.35v-2.38c.016-.224.048-.257.386-.24h.723c.29 0 .37.048.515.273.048.08.08.128.08.144l1.623 2.492c.66 1.013 1.238 1.399 2.042 1.399.482 0 .932-.129.932-.258 0-.048-.048-.096-.112-.096-.691.016-1.158-.37-1.977-1.624l-1.833-2.668c1.06-.547 1.64-1.318 1.64-2.299 0-.707-.29-1.334-.804-1.72-.514-.385-1.174-.546-2.202-.546zm10.802.112c-.08 0-.177.016-.322.033-.16.032-.321.048-.595.048-.385 0-1.028-.032-1.27-.048l-.289-.016c-.128 0-.193.048-.193.128 0 .096.049.145.193.177 1.254.177 1.367.466 1.334 3.536v3.15c0 .21-.016.258-.08.242-.032 0-.08-.048-.177-.16l-6.044-6.88c-.128-.145-.209-.193-.353-.193-.048 0-.129 0-.225.016h-.113c-.032 0-.321 0-.514-.016.08.048.16.112.24.16.58.434.933 1.174.933 1.977 0 .129-.016.258-.032.37v4.18l.16.24c.145.21.258.386.37.547v-4.71c0-.225.032-.289.129-.289.064 0 .08.016.16.096l5.546 6.366c.21.241.21.241.306.241.16 0 .209-.097.209-.386v-.128c.016-.386.016-.98.016-1.817v-4.276l.016-.417c-.016-1.592.048-1.753.659-1.913.096-.016.129-.049.129-.113 0-.08-.08-.145-.193-.145zm-11.156.338c.611 0 1.27.209 1.64.547.466.385.739 1.028.739 1.64 0 1.092-.691 1.767-1.849 1.767h-.739c-.434-.016-.466-.048-.466-.466V8.721c0-.45 0-.499.08-.611.097-.129.29-.209.595-.209z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/stackbit.svg b/assets/lib/simple-icons/icons/stackbit.svg
index 46c871a7..2f6c5eb6 100644
--- a/assets/lib/simple-icons/icons/stackbit.svg
+++ b/assets/lib/simple-icons/icons/stackbit.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Stackbit icon</title><path d="M21.314 13.477l-9.213 5.13-9.396-5.13a.729.729 0 0 0-.993.294.729.729 0 0 0 .294.993l9.746 5.333c.22.128.497.128.717 0l9.562-5.333a.727.727 0 0 0 .276-.993.718.718 0 0 0-.993-.294zM3.845 10.075l8.256-4.67 9.195 5.314a.749.749 0 0 0 1.011-.276.749.749 0 0 0-.276-1.012L12.47 3.915a.749.749 0 0 0-.735 0L1.988 9.43c-.497.276-.497.993 0 1.288l9.746 5.516a.748.748 0 0 0 1.011-.276.749.749 0 0 0-.276-1.011zM.057 13.937v-3.678A2.258 2.258 0 0 1 1.216 8.07l9.745-5.517a2.25 2.25 0 0 1 2.28.019l9.562 5.516a2.296 2.296 0 0 1 1.14 2.17v3.678a2.288 2.288 0 0 1-1.176 2.188l-9.562 5.332a2.281 2.281 0 0 1-2.225 0l-9.746-5.332c-.81-.442-1.232-1.306-1.177-2.188z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Stackbit</title><path d="M10.9488 2.306L1.1706 7.9673c-.784.4493-1.2385 1.3261-1.1623 2.242v3.7743c-.0664.9275.406 1.8084 1.2066 2.2495l9.7782 5.4725a2.2606 2.2606 0 002.2305 0l9.5937-5.4725c.7883-.45 1.2477-1.329 1.1752-2.2495v-3.7744c.0683-.9116-.3846-1.7816-1.1623-2.2325l-9.5937-5.6615A2.2646 2.2646 0 0012.0845 2c-.3917 0-.7833.102-1.1357.306zm.7749 14.0366l-9.7782-5.6615a.745.745 0 01-.2884-.2951c-.1974-.3648-.0683-.824.2884-1.0259l9.7782-5.6615a.7242.7242 0 01.738 0l9.5936 5.6747c.353.2086.474.6702.2703 1.0314-.2037.3612-.6551.485-1.0082.2764l-9.2284-5.452-8.2765 4.7915 8.638 5.001c.3567.2053.483.6675.2823 1.032-.1361.2477-.3874.3868-.6462.3868a.7266.7266 0 01-.363-.0978zm.0147 3.963L1.9602 14.833a.707.707 0 01-.0815-.0457c-.3443-.2232-.4465-.6897-.2282-1.0419.2178-.352.6741-.4567 1.0182-.2334l9.4203 5.2708 9.2376-5.2708c.3566-.2033.8068-.0723 1.0055.2925.1987.365.0706.8252-.286 1.0285l-9.5937 5.4728a.7239.7239 0 01-.714 0z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/stackedit.svg b/assets/lib/simple-icons/icons/stackedit.svg
new file mode 100644
index 00000000..f342c43e
--- /dev/null
+++ b/assets/lib/simple-icons/icons/stackedit.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>StackEdit</title><path d="M6 0C2.689 0 0 2.689 0 6v12c0 3.311 2.689 6 6 6h12c3.311 0 6-2.689 6-6V6c0-3.311-2.689-6-6-6H6zm.227 1.871h11.546A3.98 3.98 0 0 1 21.75 5.85v11.545a3.978 3.978 0 0 1-3.977 3.976H6.227a3.978 3.978 0 0 1-3.977-3.976V5.85a3.98 3.98 0 0 1 3.977-3.98zm-.223 2.31V6.01H4.633V7.7h1.37v1.903h-1.37v1.689h1.37v1.828h1.4v-1.828h1.695v1.828h1.398v-1.828h1.371v-1.69h-1.37v-1.9h1.37V6.01h-1.37V4.182h-1.4V6.01H7.403V4.182H6.004zm1.398 3.52h1.696v1.903H7.402V7.7z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/stackexchange.svg b/assets/lib/simple-icons/icons/stackexchange.svg
index eed94d4b..b6e80af0 100644
--- a/assets/lib/simple-icons/icons/stackexchange.svg
+++ b/assets/lib/simple-icons/icons/stackexchange.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Stack Exchange icon</title><path d="M21.728 15.577v1.036c0 1.754-1.395 3.177-3.1 3.177h-.904L13.645 24v-4.21H5.371c-1.704 0-3.099-1.423-3.099-3.181v-1.032h19.456zM2.275 10.463h19.323v3.979H2.275v-3.979zm0-5.141h19.323v3.979H2.275V5.322zM18.575 0c1.681 0 3.023 1.42 3.023 3.178v1.034H2.275V3.178C2.275 1.422 3.67 0 5.375 0h13.2z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Stack Exchange</title><path d="M21.728 15.577v1.036c0 1.754-1.395 3.177-3.1 3.177h-.904L13.645 24v-4.21H5.371c-1.704 0-3.099-1.423-3.099-3.181v-1.032h19.456zM2.275 10.463h19.323v3.979H2.275v-3.979zm0-5.141h19.323v3.979H2.275V5.322zM18.575 0c1.681 0 3.023 1.42 3.023 3.178v1.034H2.275V3.178C2.275 1.422 3.67 0 5.375 0h13.2z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/stackoverflow.svg b/assets/lib/simple-icons/icons/stackoverflow.svg
index 40de6d8a..ab838082 100644
--- a/assets/lib/simple-icons/icons/stackoverflow.svg
+++ b/assets/lib/simple-icons/icons/stackoverflow.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Stack Overflow icon</title><path d="M18.986 21.865v-6.404h2.134V24H1.844v-8.539h2.13v6.404h15.012zM6.111 19.731H16.85v-2.137H6.111v2.137zm.259-4.852l10.48 2.189.451-2.07-10.478-2.187-.453 2.068zm1.359-5.056l9.705 4.53.903-1.95-9.706-4.53-.902 1.936v.014zm2.715-4.785l8.217 6.855 1.359-1.62-8.216-6.853-1.35 1.617-.01.001zM15.751 0l-1.746 1.294 6.405 8.604 1.746-1.294L15.749 0h.002z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Stack Overflow</title><path d="M15.725 0l-1.72 1.277 6.39 8.588 1.716-1.277L15.725 0zm-3.94 3.418l-1.369 1.644 8.225 6.85 1.369-1.644-8.225-6.85zm-3.15 4.465l-.905 1.94 9.702 4.517.904-1.94-9.701-4.517zm-1.85 4.86l-.44 2.093 10.473 2.201.44-2.092-10.473-2.203zM1.89 15.47V24h19.19v-8.53h-2.133v6.397H4.021v-6.396H1.89zm4.265 2.133v2.13h10.66v-2.13H6.154Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/stackpath.svg b/assets/lib/simple-icons/icons/stackpath.svg
index f1bcd4a5..af2eeffc 100644
--- a/assets/lib/simple-icons/icons/stackpath.svg
+++ b/assets/lib/simple-icons/icons/stackpath.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>StackPath icon</title><path d="M3.72 7.34C2.71 7.34 1.88 7.57 1.22 8.04C.559 8.5 .23 9.12 .23 9.88C.23 10.66 .506 11.26 1.06 11.67C1.61 12.09 2.46 12.47 3.6 12.83C4.15 13.03 4.53 13.21 4.74 13.39C4.96 13.56 5.06 13.81 5.06 14.13C5.06 14.41 4.96 14.64 4.74 14.81C4.53 15 4.2 15.08 3.77 15.08C3.2 15.08 2.77 14.96 2.5 14.74C2.2 14.5 2.06 14.14 2.06 13.62H.013L0 13.66C-.02 14.63 .346 15.37 1.1 15.89C1.85 16.41 2.74 16.66 3.77 16.66C4.79 16.66 5.61 16.44 6.23 16C6.85 15.54 7.17 14.91 7.17 14.12C7.17 13.33 6.91 12.72 6.39 12.27C5.86 11.82 5.09 11.44 4.06 11.14C3.39 10.89 2.94 10.69 2.69 10.53C2.45 10.37 2.33 10.16 2.33 9.9C2.33 9.62 2.45 9.39 2.69 9.21C2.93 9 3.26 8.92 3.69 8.92C4.12 8.92 4.46 9.04 4.7 9.26C4.95 9.5 5.07 9.78 5.07 10.14H7.11L7.12 10.11C7.15 9.3 6.83 8.63 6.19 8.11C5.55 7.59 4.73 7.34 3.72 7.34M8.5 7.4V16.58H10.65V13.43H11.95C13.04 13.43 13.9 13.16 14.54 12.6C15.18 12.05 15.5 11.32 15.5 10.42C15.5 9.5 15.18 8.79 14.54 8.23C13.9 7.67 13.04 7.4 11.95 7.4H8.5M18.11 7.4L14.93 16.59H16.92L20.18 7.4H18.11M21.93 7.4L18.75 16.59H20.74L24 7.4H21.93M10.65 9.04H11.95C12.41 9.04 12.77 9.17 13 9.43C13.25 9.69 13.37 10 13.37 10.43C13.37 10.83 13.25 11.16 13 11.41C12.77 11.67 12.41 11.79 11.95 11.79H10.65V9.04Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>StackPath</title><path d="M3.721 7.34c-1.01 0-1.84.23-2.5.7-.66.46-.99 1.08-.99 1.84 0 .78.276 1.38.83 1.79.55.42 1.4.8 2.54 1.16.55.2.93.38 1.14.56.22.17.32.42.32.74 0 .28-.1.51-.32.68-.21.19-.54.27-.97.27-.57 0-1-.12-1.27-.34-.3-.24-.44-.6-.44-1.12H.014l-.013.04c-.02.97.346 1.71 1.1 2.23.75.52 1.64.77 2.67.77 1.02 0 1.84-.22 2.46-.66.62-.46.94-1.09.94-1.88 0-.79-.26-1.4-.78-1.85-.53-.45-1.3-.83-2.33-1.13-.67-.25-1.12-.45-1.37-.61-.24-.16-.36-.37-.36-.63 0-.28.12-.51.36-.69.24-.21.57-.29 1-.29.43 0 .77.12 1.01.34.25.24.37.52.37.88h2.04l.01-.03c.03-.81-.29-1.48-.93-2-.64-.52-1.46-.77-2.47-.77m4.78.06v9.18h2.15v-3.15h1.3c1.09 0 1.95-.27 2.59-.83.64-.55.96-1.28.96-2.18 0-.92-.32-1.63-.96-2.19-.64-.56-1.5-.83-2.59-.83H8.5m9.609 0l-3.18 9.19h1.99l3.26-9.19m1.75 0l-3.18 9.19h1.99L24 7.4M10.65 9.04h1.3c.46 0 .82.13 1.05.39.25.26.37.57.37 1 0 .4-.12.73-.37.98-.23.26-.59.38-1.05.38h-1.3z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/stackshare.svg b/assets/lib/simple-icons/icons/stackshare.svg
index 406756ea..cfd0ce54 100644
--- a/assets/lib/simple-icons/icons/stackshare.svg
+++ b/assets/lib/simple-icons/icons/stackshare.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>StackShare icon</title><path d="M17.209 6.697c-.035-.274 0-.594 0-.594v-.01c.141-.714.771-1.254 1.525-1.254.005 0 .009.001.014.001h.002c.859 0 1.557.698 1.557 1.556s-.697 1.556-1.557 1.556c-.003 0-.006-.001-.009-.001h-.007c-.742-.001-1.38-.526-1.525-1.254zM24 1.54v20.92c0 .851-.646 1.54-1.443 1.54H1.444C.647 24 0 23.311 0 22.46V1.54C0 .69.647 0 1.444 0h21.113C23.354 0 24 .69 24 1.54zm-2.303 16.007c0-1.636-1.326-2.962-2.961-2.962-1.317 0-2.477.87-2.844 2.134h-1.758l-2.74-4.717-.002-.004.002-.004 2.736-4.709h1.748c.457 1.571 2.102 2.474 3.673 2.017 1.571-.457 2.475-2.102 2.017-3.673-.457-1.571-2.102-2.474-3.672-2.017a2.9638 2.9638 0 0 0-2.018 2.017h-2.665l-.026-.016-3.227 5.552-.025.042H8.018c-.457-1.571-2.102-2.474-3.673-2.016-1.571.458-2.474 2.102-2.017 3.673.458 1.571 2.103 2.474 3.673 2.017.973-.283 1.733-1.045 2.017-2.017h1.961l3.208 5.52.015-.009h2.69a2.9592 2.9592 0 0 0 2.842 2.134h.002c1.636 0 2.961-1.326 2.961-2.962zm-2.933-1.619c-.743.002-1.381.526-1.527 1.254-.004.029-.004.057-.007.085-.004.017-.015.029-.018.046-.041.301 0 .602 0 .602.173.842.995 1.383 1.837 1.209.573-.118 1.005-.548 1.164-1.088.065-.172.105-.356.105-.551 0-.859-.697-1.557-1.554-1.557zM5.2 10.417c-.858 0-1.556.698-1.556 1.557 0 .006.002.012.002.018 0 .003-.001.005-.001.008.001.854.693 1.547 1.548 1.548.541-.001 1.015-.278 1.292-.698.171-.249.272-.551.272-.875 0-.86-.698-1.558-1.557-1.558z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>StackShare</title><path d="M17.209 6.697c-.035-.274 0-.594 0-.594v-.01c.141-.714.771-1.254 1.525-1.254.005 0 .009.001.014.001h.002c.859 0 1.557.698 1.557 1.556s-.697 1.556-1.557 1.556c-.003 0-.006-.001-.009-.001h-.007c-.742-.001-1.38-.526-1.525-1.254zM24 1.54v20.92c0 .851-.646 1.54-1.443 1.54H1.444C.647 24 0 23.311 0 22.46V1.54C0 .69.647 0 1.444 0h21.113C23.354 0 24 .69 24 1.54zm-2.303 16.007c0-1.636-1.326-2.962-2.961-2.962-1.317 0-2.477.87-2.844 2.134h-1.758l-2.74-4.717-.002-.004.002-.004 2.736-4.709h1.748c.457 1.571 2.102 2.474 3.673 2.017 1.571-.457 2.475-2.102 2.017-3.673-.457-1.571-2.102-2.474-3.672-2.017a2.9638 2.9638 0 0 0-2.018 2.017h-2.665l-.026-.016-3.227 5.552-.025.042H8.018c-.457-1.571-2.102-2.474-3.673-2.016-1.571.458-2.474 2.102-2.017 3.673.458 1.571 2.103 2.474 3.673 2.017.973-.283 1.733-1.045 2.017-2.017h1.961l3.208 5.52.015-.009h2.69a2.9592 2.9592 0 0 0 2.842 2.134h.002c1.636 0 2.961-1.326 2.961-2.962zm-2.933-1.619c-.743.002-1.381.526-1.527 1.254-.004.029-.004.057-.007.085-.004.017-.015.029-.018.046-.041.301 0 .602 0 .602.173.842.995 1.383 1.837 1.209.573-.118 1.005-.548 1.164-1.088.065-.172.105-.356.105-.551 0-.859-.697-1.557-1.554-1.557zM5.2 10.417c-.858 0-1.556.698-1.556 1.557 0 .006.002.012.002.018 0 .003-.001.005-.001.008.001.854.693 1.547 1.548 1.548.541-.001 1.015-.278 1.292-.698.171-.249.272-.551.272-.875 0-.86-.698-1.558-1.557-1.558z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/stadia.svg b/assets/lib/simple-icons/icons/stadia.svg
index 51fb893c..287855a6 100644
--- a/assets/lib/simple-icons/icons/stadia.svg
+++ b/assets/lib/simple-icons/icons/stadia.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Stadia icon</title><path d="M.202 8.668a.482.482 0 0 0-.202.39v.006c0 .064.014.128.04.19l2.298 5.204c.102.23.364.343.602.259 1.504-.536 6.713-2.233 10.083-1.318 0 0-3.381.196-6.438 2.593a.48.48 0 0 0-.142.571l1.029 2.326.396.929c.094.22.395.247.528.047.713-1.074 1.916-1.611 3.072-2.08a17.647 17.647 0 0 1 3.679-1.05 15.993 15.993 0 0 1 4.07-.167.481.481 0 0 0 .503-.335l1.038-3.317a.48.48 0 0 0-.176-.531c-1.158-.838-5.741-3.654-13.802-2.523 0 0 6.878-3.951 15.61.39a.481.481 0 0 0 .673-.288l.915-2.925A.484.484 0 0 0 24 6.902v-.014a.48.48 0 0 0-.243-.41C22.66 5.858 18.95 4 13.846 4 9.934 4 5.203 5.09.202 8.668"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Stadia</title><path d="M6.5253 10.0302a18.279 18.279 0 0 1 15.7805.263c.263.1973.6575 0 .7233-.263l.9205-2.8273c.1315-.263 0-.6576-.3288-.789A22.3557 22.3557 0 0 0 .2788 8.6493a.6575.6575 0 0 0-.1972.8548l2.1698 4.7999c.1315.3287.526.526.8548.3945 2.4328-.9205 6.1807-1.841 9.9943-1.315-2.63.4602-4.6684 1.3807-6.3122 2.367a.6575.6575 0 0 0-.1972.8548L7.906 19.63c.1315.263.4603.3288.6575.1315.526-.526 1.052-.9205 1.5123-1.1835 2.104-1.1836 4.9972-2.1041 8.8765-1.9068a.6575.6575 0 0 0 .6576-.4603l.9862-2.9589c.1316-.263 0-.6575-.263-.789a20.0544 20.0544 0 0 0-13.8737-2.4328z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/staffbase.svg b/assets/lib/simple-icons/icons/staffbase.svg
index c8a3e9c9..feb16d87 100644
--- a/assets/lib/simple-icons/icons/staffbase.svg
+++ b/assets/lib/simple-icons/icons/staffbase.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Staffbase icon</title><path d="M11.847 20.095a7.805 7.805 0 01-6.286-3.238l1.714-1.238C8.323 17.048 10.037 18 11.847 18s3.523-.857 4.571-2.381l1.714 1.238a7.805 7.805 0 01-6.285 3.238zm.19-18c1.62 0 3.238.476 4.762 1.334l1.048.476 2.857-.572-.477 2.857c2.381 3.715 2.191 9.239-1.047 12.667a9.748 9.748 0 01-7.048 3.048 9.98 9.98 0 01-6.857-2.762c-3.905-3.81-4-10-.286-13.905 1.905-2.095 4.477-3.143 7.048-3.143m0-2.095C8.799 0 5.751 1.333 3.466 3.714c-4.572 4.762-4.477 12.381.285 16.953A11.91 11.91 0 0012.037 24c3.238 0 6.381-1.333 8.571-3.619 3.62-3.714 4.286-9.81 1.81-14.571l.38-2.096.477-2.952-2.952.571-2.19.381-.382-.19C15.941.476 14.037 0 12.037 0Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Staffbase</title><path d="M11.847 20.095a7.805 7.805 0 01-6.286-3.238l1.714-1.238C8.323 17.048 10.037 18 11.847 18s3.523-.857 4.571-2.381l1.714 1.238a7.805 7.805 0 01-6.285 3.238zm.19-18c1.62 0 3.238.476 4.762 1.334l1.048.476 2.857-.572-.477 2.857c2.381 3.715 2.191 9.239-1.047 12.667a9.748 9.748 0 01-7.048 3.048 9.98 9.98 0 01-6.857-2.762c-3.905-3.81-4-10-.286-13.905 1.905-2.095 4.477-3.143 7.048-3.143m0-2.095C8.799 0 5.751 1.333 3.466 3.714c-4.572 4.762-4.477 12.381.285 16.953A11.91 11.91 0 0012.037 24c3.238 0 6.381-1.333 8.571-3.619 3.62-3.714 4.286-9.81 1.81-14.571l.38-2.096.477-2.952-2.952.571-2.19.381-.382-.19C15.941.476 14.037 0 12.037 0Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/starbucks.svg b/assets/lib/simple-icons/icons/starbucks.svg
new file mode 100644
index 00000000..e0ec1465
--- /dev/null
+++ b/assets/lib/simple-icons/icons/starbucks.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Starbucks</title><path d="M13.2072 5.2801c-.1052-.0188-.6126-.104-1.2072-.104s-1.102.0848-1.2072.104c-.0605.0108-.0837-.0484-.0377-.0828.0417-.0308 1.2445-.9463 1.2445-.9463l1.244.9463c.0469.0344.024.0936-.0364.0828zm-2.0783 5.9446s-.0636.0228-.0804.0788c.252.1937.4257.6343.9515.6343s.6995-.4406.9511-.6343c-.0164-.0564-.08-.0788-.08-.0788s-.3293.0776-.8711.0776c-.5418 0-.8711-.0776-.8711-.0776zM12 10.4832c-.146 0-.178-.0552-.2777-.0548-.0948.0004-.2789.076-.319.1453a.1542.1542 0 00.0413.0948c.2129.032.309.1505.5558.1505.2469 0 .3425-.1185.5558-.1505a.1579.1579 0 00.0412-.0948c-.0396-.0692-.224-.1445-.3193-.1453-.1-.0008-.1324.0548-.2781.0548zm11.9868 2.27a11.964 11.964 0 01-.076.8528c-1.359.2249-1.8447-.986-3.2368-.9252.0832.2954.1508.5963.2029.9036 1.148-.0008 1.6105 1.0724 2.8878.9143-.0672.3281-.148.6519-.2413.9708-1.01.0992-1.3657-.9044-2.5345-.8767.0096.1664.0148.3345.0148.5041l-.0048.2805 2.2696.866a12.04 12.04 0 01-.3965.9479c-.6823-.0376-.9175-.9127-1.9555-.8431a9.0882 9.0882 0 01-.118.665c.9015-.0632 1.0955.7667 1.7414.834a12.2317 12.2317 0 01-.5302.8767c-.3826-.205-.7143-.8231-1.4398-.8612a8.6035 8.6035 0 00.195-.6994c-.6435 0-1.3794-.2509-1.9964-.8127.2-1.1388-1.5674-2.2984-1.5674-3.1324 0-.9059.4582-1.4073.4582-2.6285 0-.9063-.4402-1.8895-1.104-2.5614a2.2175 2.2175 0 00-.4114-.3309c.6098.7547 1.078 1.6494 1.078 2.6858 0 1.15-.535 1.757-.535 2.8186 0 1.0612 1.5526 1.9796 1.5526 3.074 0 .4305-.1377.851-.5914 1.677.697.6962 1.605 1.076 2.1908 1.076.19 0 .292-.058.3601-.2073a9.0925 9.0925 0 00.1665-.391c.631.0245.9199.5979 1.2692.8268-.1916.2573-.393.5057-.6038.7462-.234-.2593-.5486-.6954-1.0092-.8167a9.2087 9.2087 0 01-.2613.473c.3966.108.6679.5082.878.7715a12.1305 12.1305 0 01-.7075.6754c-.1532-.2384-.3917-.541-.659-.7042a8.3639 8.3639 0 01-.3077.391c.2272.154.4277.4313.5586.6574-.2833.2272-.5763.443-.8796.6446-.1496-1.2192-1.8138-2.0548-1.3653-3.4693-.1472.2493-.3229.561-.3229.9364 0 1.024 1.0908 1.8366 1.1776 2.8542-.226.1353-.4573.2625-.693.383-.0392-1.1185-1.194-2.3425-1.194-3.2604 0-1.0248 1.342-2.054 1.342-3.2636 0-1.2105-1.5485-2.0484-1.5485-3.1112 0-1.062.6586-1.673.6586-3.0343 0-.9972-.4738-2.0063-1.2056-2.651-.1297-.1144-.2573-.2052-.4106-.2849.6903.828 1.0904 1.579 1.0904 2.7186 0 1.2801-.7546 1.9908-.7546 3.244 0 1.2537 1.5197 1.9507 1.5197 3.1192 0 1.1684-1.4145 2.1532-1.4145 3.3536 0 1.092 1.2468 2.182 1.2653 3.4777a11.7704 11.7704 0 01-.8327.3257c.1584-1.3089-1.245-2.659-1.245-3.727 0-1.1676 1.4674-2.1712 1.4674-3.43 0-1.2597-1.4917-1.8451-1.4917-3.138 0-1.292.9151-2.0075.9151-3.4352 0-1.1129-.5494-2.1136-1.352-2.7338l-.0509-.0385c-.0756-.056-.138.0116-.0844.078.5682.7095.8719 1.427.8719 2.4894 0 1.306-1.0512 2.3673-1.0512 3.6325 0 1.4934 1.4117 1.9203 1.4117 3.1456 0 1.2248-1.5137 2.2048-1.5137 3.5053 0 1.206 1.4325 2.5445 1.1868 3.9366a11.6645 11.6645 0 01-.8743.192c.2689-1.7334-1.1364-2.9782-1.1364-4.1122 0-1.2277 1.5677-2.322 1.5677-3.5217 0-1.1316-1.1252-1.5014-1.2732-2.659-.0204-.158-.1473-.2753-.3221-.2461-.2285.0416-.5214.192-.9816.192-.4602 0-.753-.1508-.982-.192-.1744-.0288-.3013.0884-.3217.246-.1476 1.1577-1.2736 1.527-1.2736 2.659 0 1.1997 1.5681 2.2937 1.5681 3.5218 0 1.134-1.4053 2.3788-1.1368 4.1123a12.1233 12.1233 0 01-.8743-.1921c-.2457-1.3921 1.1872-2.7306 1.1872-3.9366 0-1.3005-1.5141-2.2805-1.5141-3.5053 0-1.2253 1.412-1.6522 1.412-3.1456 0-1.2652-1.0515-2.326-1.0515-3.6325 0-1.062.3037-1.7795.8723-2.4893.0532-.0665-.0088-.134-.0848-.078l-.0504.0384c-.802.6186-1.351 1.6193-1.351 2.7322 0 1.4277.9152 2.1431.9152 3.4352 0 1.2925-1.4917 1.878-1.4917 3.138 0 1.2588 1.4673 2.2624 1.4673 3.43 0 1.0684-1.4033 2.4181-1.2445 3.727a11.8995 11.8995 0 01-.833-.3257c.0188-1.2957 1.2648-2.3861 1.2648-3.4777 0-1.2004-1.4137-2.1852-1.4137-3.3536 0-1.1685 1.519-1.8655 1.519-3.1192 0-1.2532-.7543-1.9639-.7543-3.244 0-1.1396.3997-1.8907 1.09-2.7186-.1537.0797-.281.1705-.4102.285-.7318.6446-1.2052 1.6537-1.2052 2.651 0 1.3612.6586 1.9722.6586 3.0342 0 1.0628-1.5485 1.9007-1.5485 3.1112 0 1.2096 1.342 2.2392 1.342 3.2636 0 .9183-1.1556 2.1423-1.1944 3.2604a11.8754 11.8754 0 01-.693-.383c.0872-1.0176 1.1776-1.8303 1.1776-2.8542 0-.3754-.1753-.687-.323-.9364.4486 1.4145-1.2156 2.25-1.3652 3.4693a12.1204 12.1204 0 01-.8796-.6446c.1305-.2257.331-.5034.5586-.6575a7.9134 7.9134 0 01-.3077-.391c-.2677.1633-.5066.4659-.6594.7043a12.2459 12.2459 0 01-.707-.6754c.21-.2633.4813-.6635.8779-.7715a9.0433 9.0433 0 01-.2613-.473c-.4606.1213-.7755.5574-1.0092.8167a12.141 12.141 0 01-.6038-.7462c.3493-.229.6382-.8027 1.2688-.8267.0529.1312.1085.2617.1669.3909.068.1493.1705.2073.3601.2073.5858 0 1.4934-.3798 2.1908-1.076-.4537-.826-.5914-1.2465-.5914-1.677 0-1.094 1.5526-2.0124 1.5526-3.074 0-1.0615-.535-1.6686-.535-2.8186 0-1.0364.4682-1.9311 1.078-2.6858a2.2175 2.2175 0 00-.4114.331c-.6638.6722-1.104 1.655-1.104 2.5613 0 1.2212.4586 1.7226.4586 2.6285 0 .834-1.7679 1.9936-1.5678 3.1324-.617.5618-1.3529.8127-1.9967.8127a9.305 9.305 0 00.1949.6994c-.7251.0385-1.0568.6567-1.4398.8612a12.0872 12.0872 0 01-.5302-.8768c.6455-.0672.84-.897 1.7419-.8339a9.1275 9.1275 0 01-.1185-.665c-1.038-.0696-1.2732.8059-1.9555.8431a12.04 12.04 0 01-.3965-.948l2.27-.8659-.0048-.2805c0-.1696.0052-.3377.0144-.5041-1.1688-.0273-1.5246.976-2.5345.8767a12.106 12.106 0 01-.241-.9708c1.2766.158 1.7395-.9151 2.888-.9143a8.7482 8.7482 0 01.2024-.9036c-1.392-.0604-1.8779 1.1505-3.2364.9252a11.7352 11.7352 0 01-.076-.8527c1.5794.1764 2.1716-1.122 3.6097-.9632a8.4303 8.4303 0 01.471-.9963c-1.803-.317-2.4153 1.1908-4.0935.9591C.1813 5.2805 5.4844.0898 12 .0898S23.8187 5.2805 24 11.753c-1.6786.2317-2.2908-1.2757-4.0935-.9591.1773.32.335.6526.471.9963 1.4373-.1592 2.0295 1.1396 3.6093.9632zm-17.147-5.035c-.884-.3613-1.954-.278-2.868.309-.1416-.8504-.603-1.6058-1.26-2.0616-.0908-.0628-.1853-.0032-.1769.102.1389 1.7967-.9115 3.3569-2.2032 4.7282 1.3313.4001 2.4645-1.3141 4.1912-.7159a9.0364 9.0364 0 012.3168-2.3617zM12 6.6314c-1.1144 0-2.048.6303-2.2924 1.4446-.0188.0624.0068.1028.0788.0704.2005-.09.4285-.1333.6762-.1333.4546 0 .8551.1669 1.092.4574.1049.3457.1137.8463-.0048 1.132-.1872-.042-.2545-.1868-.4373-.1868-.1829 0-.3245.1284-.6347.1284-.3097 0-.346-.1465-.5498-.1465-.2396 0-.2837.247-.2837.5254 0 1.2417 1.1413 2.9503 2.3553 2.9503 1.2136 0 2.3549-1.7086 2.3549-2.9503 0-.2785-.0573-.517-.3077-.5494-.1249.09-.2397.1705-.5254.1705-.3102 0-.3958-.1284-.5783-.1284-.2204 0-.1984.465-.4601.491-.1745-.4194-.1829-.9572-.038-1.4362.2373-.2905.6374-.4574 1.092-.4574.2477 0 .4773.0437.6758.1333.0724.0324.0976-.0084.0788-.0704-.244-.8143-1.1772-1.4446-2.2916-1.4446zm1.7743 1.7815c-.2673 0-.5807.082-.7775.3013-.0204.0596-.0204.1484.0084.2077.4845-.166.9119-.1725 1.1184.0584.11-.1.1452-.19.1452-.2945 0-.1613-.164-.273-.4945-.273zm-3.8979.5674c.2337-.234.7263-.224 1.238-.0352.0225-.2545-.4333-.5326-.8887-.5326-.3309 0-.4945.1116-.4945.2733 0 .1044.0352.1949.1452.2945zm7.6804-4.2031c-.8799.0628-1.6442.3649-2.2624.8683.2625-.7443.5958-1.3953 1.0184-2.0264-1.1204.1189-2.0572.5286-2.7406 1.2289l-.535-1.4025 1.1876-1.0488-1.5902-.1125L12 .8053l-.635 1.479-1.5902.1124 1.1876 1.0488-.5346 1.4025c-.6838-.7003-1.6206-1.11-2.7402-1.2289.4218.6315.7551 1.2825 1.0176 2.0264-.6178-.5038-1.3821-.806-2.262-.8683.5278.6786.9955 1.402 1.342 2.18.0393.0876.1233.1164.2141.0712 1.2053-.599 2.5634-.936 4.0003-.936 1.437 0 2.7946.3374 4.0007.936.0908.0452.1748.0164.2136-.0712.347-.778.8147-1.5014 1.343-2.18zm1.9211 5.3035c1.7259-.5982 2.8595 1.1156 4.1908.7159-1.2917-1.3713-2.3417-2.9315-2.2028-4.7282.0084-.1052-.0865-.1652-.1769-.102-.6574.4558-1.1188 1.2112-1.26 2.0615-.9144-.587-1.984-.6706-2.868-.3089a9.0431 9.0431 0 012.317 2.3617z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/stardock.svg b/assets/lib/simple-icons/icons/stardock.svg
new file mode 100644
index 00000000..a603188a
--- /dev/null
+++ b/assets/lib/simple-icons/icons/stardock.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Stardock</title><path d="M22.337 3.28c-.108 0-.22.007-.336.017-1.553.129-3.886.917-6.557 2.217a7.326 7.326 0 0 0-3.71-.994c-4.124 0-7.478 3.354-7.478 7.496 0 .674.093 1.33.262 1.95-3.224 2.697-5.04 5.153-4.385 6.221.712 1.125 3.992.412 8.115-1.556a7.55 7.55 0 0 0 3.484.863c4.124 0 7.48-3.356 7.48-7.478 0-.544-.058-1.086-.17-1.592 3.504-2.867 5.529-5.491 4.816-6.615-.24-.375-.768-.545-1.521-.53Zm-4.324 1.708c-1.912.769-4.666 1.706-5.64 3.711-.564 1.143.371 2.436.84 3.035.47.62 1.35 2.174-.13 3.786-1.5 1.63-7.028 3.318-7.028 3.318 1.78-.843 4.91-2.06 5.396-4.16.375-1.593-1.142-2.493-1.555-3.205-.412-.712-.842-1.93 1.313-3.54 2.156-1.631 6.804-2.945 6.804-2.945Zm1.02.758c.67-.007 1.153.151 1.378.498.43.675-.207 1.95-1.556 3.393a7.514 7.514 0 0 0-2.323-3.393c.975-.318 1.832-.49 2.502-.498zM4.8 14.79a7.627 7.627 0 0 0 2.305 3.074c-1.762.525-3.074.524-3.467-.113-.394-.618.075-1.706 1.162-2.96z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/starlingbank.svg b/assets/lib/simple-icons/icons/starlingbank.svg
new file mode 100644
index 00000000..266936d3
--- /dev/null
+++ b/assets/lib/simple-icons/icons/starlingbank.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Starling Bank</title><path d="M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0zm2.738 3.822h.666v2.724h-.666a4.794 4.794 0 0 0-4.789 4.788V12H7.226v-.666c0-4.142 3.37-7.512 7.512-7.512zM14.05 12h2.723v.666c0 4.142-3.37 7.512-7.512 7.512h-.666v-2.724h.666a4.794 4.794 0 0 0 4.789-4.788z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/starship.svg b/assets/lib/simple-icons/icons/starship.svg
new file mode 100644
index 00000000..59941620
--- /dev/null
+++ b/assets/lib/simple-icons/icons/starship.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Starship</title><path d="M15.521 9.62a1.057 1.057 0 11-2.115 0 1.057 1.057 0 012.115 0zM24 12c0 6.627-5.373 12-12 12-.35 0-.697-.015-1.04-.044 2.019-1.89 2.548-5.061 2.548-5.061l-3.226-1.053s-1.499 3.23-5.599 3.67A11.98 11.98 0 010 12C0 5.373 5.373 0 12 0s12 5.373 12 12zM8.628 6.606c-1.23-.13-1.885-.83-2.03-2.031-.142 1.159-.77 1.88-2.032 2.031 1.168.227 1.83.918 2.031 2.032-.02-1.154.666-1.825 2.031-2.032zm7.786 5.207c1.11-2.483.392-4.252-1.233-6.246-2.043 1.5-3.759 3.023-3.636 5.149-1.375.675-2.261 1.206-3.147 2.289l2.779 1.103-.368 1.267 3.637 1.062.443-1.181 2.825.651c.014-1.496-.38-3.097-1.3-4.094z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/startrek.svg b/assets/lib/simple-icons/icons/startrek.svg
new file mode 100644
index 00000000..28fae151
--- /dev/null
+++ b/assets/lib/simple-icons/icons/startrek.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Star Trek</title><path d="M14.943 14.596c.094 0 .3.095.576.462a57.71 57.71 0 0 1 2.165 3.23c-1.627.646-3.595 1.01-5.684 1.01-.988 0-1.948-.097-2.856-.26 1.417-1.507 2.918-2.856 4.703-3.98.555-.278.819-.462 1.096-.462zm2.424-6.202c2.858 1.055 4.788 2.906 4.788 4.998 0 1.415-.881 2.73-2.338 3.755-.385-2.26-.898-4.477-1.644-6.616a38.69 38.69 0 0 0-.808-2.136zM7.73 8.077a38.965 38.965 0 0 0-1.096 3.288 56.361 56.361 0 0 0-1.327 6.404c-2.11-1.1-3.462-2.69-3.462-4.385.001-2.274 2.44-4.337 5.885-5.307zM12.463.086c-.095 0-.08-.007-.174.086a25.88 25.88 0 0 0-3.663 5.77C3.631 6.89 0 9.887 0 13.385c0 2.588 1.991 4.903 5.048 6.317a64.85 64.85 0 0 0-.347 4.01c0 .094.108.202.203.202h.086c.094 0 .08.007.173-.086a79.757 79.757 0 0 1 2.538-3.203c1.338.336 2.78.52 4.299.52 2.455 0 4.738-.48 6.635-1.298.46.772.908 1.555 1.385 2.395 0 .094.194.086.288.086a.175.175 0 0 0 .173-.173 69.569 69.569 0 0 0-.346-3.088c2.369-1.42 3.865-3.45 3.865-5.682 0-3.252-3.156-6.072-7.615-7.212a33.526 33.526 0 0 0-3.75-6c0-.094-.078-.087-.172-.087z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/starz.svg b/assets/lib/simple-icons/icons/starz.svg
new file mode 100644
index 00000000..75aa7d04
--- /dev/null
+++ b/assets/lib/simple-icons/icons/starz.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>STARZ</title><path d="M2.565 11.472c-.94-.223-1.274-.375-1.274-.809 0-.36.334-.59.83-.59.76 0 1.44.524 1.623.68l.487-.988a3.247 3.247 0 0 0-2.093-.729c-1.175 0-1.995.704-1.995 1.707 0 1.097.707 1.474 1.928 1.77 1.022.235 1.202.438 1.202.776 0 .4-.358.639-.911.639-.683 0-1.242-.261-1.884-.86L0 14.093a3.55 3.55 0 0 0 2.338.87c1.266 0 2.083-.68 2.083-1.77 0-.897-.537-1.4-1.856-1.721M24 9.134h-4.737v1.05h2.709l-2.942 4.682h4.91v-1.05h-2.882L24 9.133m-7.762 2.52h-.848v-1.469h.848c.625 0 .97.253.97.731 0 .475-.363.737-.97.737zm2.143-.767c0-.505-.183-.938-.528-1.254-.358-.327-.866-.5-1.469-.5h-2.159v5.733h1.165v-2.09h.83l1.204 2.09h1.336l-1.362-2.371c.857-.402.983-1.184.983-1.608m-9.2-1.753H4.62v1.051h1.698v4.681h1.165v-4.681h1.699v-1.05m1.157 3.787l.709-1.405.709 1.405zm-.982 1.945l.45-.894h2.48l.452.894h1.216l-2.907-5.759-2.891 5.76h1.2Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/statamic.svg b/assets/lib/simple-icons/icons/statamic.svg
index aef04db9..ed7ea322 100644
--- a/assets/lib/simple-icons/icons/statamic.svg
+++ b/assets/lib/simple-icons/icons/statamic.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Statamic icon</title><path d="M3.129 17.941c-.03-.213-.021-.713-.021-.713H2.82c-.662 0-.922-.267-.922-.93v-2.635c0-1.19-.278-1.481-.835-1.664v-.061c.557-.183.835-.486.835-1.676V7.638c0-.663.26-.87.92-.87h.285s.014-.457.045-.724c-.135-.018-.66-.03-.66-.03-1.334 0-1.709.646-1.709 1.979v2.391c0 .978-.569 1.109-.779 1.109v.95c.21 0 .765.132.765 1.094v2.406c0 1.334.374 1.964 1.709 1.964 0 0 .524.046.63.046l.025-.012zM2.318 12.59c.488 0 1.184.168 1.184 1.398v3.063c0 1.698.408 2.549 2.107 2.549h.765v-.908h-.39c-.84 0-1.154-.349-1.154-1.189v-3.359c0-1.515-.479-1.885-1.319-2.12v-.068c.84-.236 1.335-.623 1.335-2.138V6.466c0-.839.314-1.09 1.154-1.09h.389v-.974h-.75c-1.693 0-2.098.824-2.098 2.518v3.058c0 1.244-.689 1.425-1.185 1.425v1.198l-.038-.011zm11.487 3.898c.464-.131.854-.319 1.176-.565.32-.245.57-.548.75-.902.176-.355.266-.749.266-1.185 0-.379-.066-.705-.198-.974-.132-.271-.345-.506-.636-.712-.293-.206-.665-.391-1.118-.551-.452-.16-.999-.32-1.642-.479-.689-.175-1.166-.33-1.434-.465-.271-.14-.405-.362-.405-.672 0-.354.141-.614.423-.772.28-.166.627-.24 1.041-.24.445 0 .893.06 1.34.21.446.134.922.374 1.426.689l.945-1.425c-.551-.344-1.145-.615-1.779-.824-.63-.209-1.273-.3-1.904-.3-.51 0-.988.06-1.424.194-.435.136-.824.33-1.154.586-.332.254-.585.569-.766.929-.179.359-.27.78-.27 1.229 0 .344.06.629.181.885.119.254.299.465.554.659s.585.359 1.005.509c.42.15.914.301 1.499.436.778.18 1.319.345 1.648.51.33.149.495.39.495.705 0 .314-.135.568-.405.733s-.659.255-1.139.255c-1.064 0-2.174-.375-3.313-1.125l-.975 1.619c.271.181.57.346.915.495.345.15.704.271 1.079.375.375.105.765.181 1.17.24.404.06.779.074 1.139.074.569 0 1.08-.074 1.544-.209l-.034.068zm7.461-9.72c.66 0 .853.207.853.87v2.623c0 1.188.209 1.493 1.045 1.679v.052c-.836.185-1.045.476-1.045 1.663v2.643c0 .659-.192.929-.853.929h-.289s-.003.499-.031.71c.116 0 .575-.015.575-.015 1.335 0 1.643-.647 1.643-1.981v-2.398c0-.965.56-1.095.837-1.095v-.958c-.277 0-.837-.133-.837-1.109V7.993c0-1.334-.308-1.981-1.643-1.981 0 0-.47.015-.608.032.029.267.059.726.059.726h.285l.009-.002zM20.444 17.049v-3.063c0-1.229.697-1.397 1.185-1.397v-1.21c-.487 0-1.185-.168-1.185-1.413V6.918c0-1.697-.269-2.518-1.969-2.518h-.82v.975h.449c.84 0 1.086.25 1.086 1.091v3.349c0 1.514.419 1.9 1.259 2.136v.067c-.84.235-1.244.605-1.244 2.119v3.364c0 .843-.24 1.191-1.079 1.191h-.449v.908h.824c1.708 0 1.978-.853 1.978-2.552h-.035z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Statamic</title><path d="M19.78 21.639c1.754 0 2.398-.756 2.398-2.607v-3.62c0-1.722.837-2.704 1.641-3.17.242-.145.242-.483 0-.644-.836-.531-1.64-1.642-1.64-3.122v-3.54c0-1.996-.548-2.575-2.302-2.575H4.123c-1.754 0-2.301.58-2.301 2.575v3.556c0 1.48-.805 2.59-1.641 3.122a.377.377 0 0 0 0 .643c.804.451 1.64 1.433 1.64 3.17v3.605c0 1.85.645 2.607 2.399 2.607zm-7.82-3.299c-1.883 0-3.25-.563-4.522-1.673a.891.891 0 0 1-.29-.676.83.83 0 0 1 .193-.563l.403-.515c.193-.242.402-.354.643-.354.274 0 .531.112.805.29a5.331 5.331 0 0 0 2.993.884c.885 0 1.593-.37 1.593-1.126 0-1.963-6.533-.885-6.533-5.294 0-2.366 1.93-3.685 4.441-3.685 1.77 0 3.074.515 4.04 1.126.24.161.402.483.402.805 0 .193-.049.37-.161.53l-.29.435c-.21.29-.45.435-.756.435-.21 0-.435-.08-.676-.193a5.07 5.07 0 0 0-2.398-.564c-.95 0-1.513.515-1.513 1.046 0 2.012 6.534.918 6.534 5.198 0 2.414-1.947 3.894-4.908 3.894z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/staticman.svg b/assets/lib/simple-icons/icons/staticman.svg
deleted file mode 100644
index c98f0fb4..00000000
--- a/assets/lib/simple-icons/icons/staticman.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Staticman icon</title><path d="M17.17 3.046l-.063.002c-.067 0-.133.003-.2.006-.038.002-.078.006-.117.01-.05.003-.1.01-.152.015l-.123.015c-.053.008-.106.018-.16.028-.075.014-.15.03-.224.048-.027.008-.055.014-.083.02l-.174.05c-.01.004-.023.007-.035.01-1.054.333-1.955 1.055-2.51 2.05-.015.023-.03.047-.042.07-.01.023-.024.043-.036.066l-.016.037c-.3.595-.47 1.267-.47 1.978v.8c-.207 0-.373.165-.373.37s.168.373.373.373v2.868c-1.006.1-1.976.436-2.824.98-.243.156-.475.327-.69.508l-.01.01c-.004.003-.01.01-.014.012-.075.07-.146.135-.217.195-.19.162-.39.31-.6.443-.005.003-.007.007-.01.01-.26.16-.474.277-.678.37-.16.07-.322.128-.494.182l-.067.02c-.017.007-.035.012-.054.017-.505.155-1.03.235-1.57.235-1.39 0-2.685-.527-3.66-1.44.455.16.935.243 1.425.243 1.082 0 2.118-.412 2.904-1.13.143.684.444 1.327.878 1.877.196-.06.378-.12.553-.2.058-.026.118-.055.178-.086-.602-.676-.948-1.55-.96-2.463-.002-.16-.107-.3-.26-.35s-.32.007-.414.136c-.668.92-1.745 1.47-2.88 1.47-.998 0-1.957-.424-2.63-1.164-.113-.124-.294-.157-.443-.082s-.23.24-.198.405l.012.055v.003c.883 3.818 3.737 6.984 7.446 8.26.84.29 1.72.483 2.613.57l.037.002c.092 0 .18-.034.25-.096.078-.07.122-.17.122-.276v-1.985c0-.94.19-1.85.57-2.703.262-.588.607-1.132 1.027-1.62l-.407-.242.488.147 2.503.714c.132.06.267.115.404.166v-.8c-.63-.278-1.176-.684-1.59-1.193v-4.07h.15v1.01c0 .733.595 1.33 1.328 1.33h.532c.69 0 1.258-.53 1.323-1.202.004-.02.007-.042.007-.064 0-.18.145-.324.324-.324s.324.145.324.324c0 .022.003.043.006.064.064.674.633 1.203 1.323 1.203h.533c.733 0 1.33-.596 1.33-1.33v-1.01h.146v4.072c-.414.508-.96.914-1.59 1.192v.8c.138-.05.273-.106.404-.167l2.502-.715.005.006.505-.15-.42.248c.365.428.674.897.92 1.4.063.13.193.21.335.21h.022c.15-.01.28-.108.33-.25.103-.297.155-.61.155-.933 0-1.44-1.04-2.624-2.424-2.84V8.994c.206 0 .372-.167.372-.372s-.166-.37-.372-.37v-.8c0-.265-.025-.526-.07-.78-.002-.006 0-.012-.002-.018l-.014-.075-.005-.024c-.172-.837-.582-1.6-1.19-2.21-.268-.27-.57-.504-.893-.693-.033-.02-.067-.036-.1-.055l-.06-.033c-.052-.027-.103-.054-.154-.078-.018-.01-.036-.016-.054-.025-.088-.042-.177-.08-.266-.114-.036-.014-.07-.028-.108-.04-.04-.016-.082-.03-.123-.043-.044-.014-.09-.028-.134-.04-.037-.012-.074-.022-.11-.032-.078-.02-.156-.04-.236-.055-.025-.005-.05-.01-.075-.013-.06-.01-.122-.022-.183-.03-.035-.006-.07-.01-.107-.015l-.157-.016-.11-.008c-.06-.004-.122-.005-.183-.006l-.072-.003zm3.14 1.814s-.076.077-.214.21c-.068.067-.156.143-.254.232-.098.09-.214.185-.34.29-.09.07-.19.145-.29.22.36.723.945 1.193 1.602 1.274.012.12.018.243.018.366v.798h-2.615c-.046-.153-.186-.266-.355-.266H16.48c-.168 0-.31.113-.355.266H13.51v-.798c0-.398.064-.78.182-1.14.117.112.243.212.378.3.04.02.12.063.242.116.173.077.43.162.746.21.158.024.33.037.514.038.045 0 .094 0 .136-.003l.145-.01c.1-.003.193-.02.29-.03s.2-.035.3-.052c.1-.02.2-.048.302-.07.1-.03.202-.06.303-.092.1-.036.202-.07.3-.108.2-.076.398-.16.588-.252l.28-.14.272-.145c.175-.1.344-.198.5-.297.08-.047.155-.1.23-.146s.144-.092.21-.14c.132-.093.258-.173.364-.252.107-.078.203-.143.277-.202.15-.115.24-.178.24-.178zm-3.46 3.87h.64v.212h-.64V8.73zm-2.45.265h1.7v1.01c0 .323-.262.585-.584.585h-.532c-.323 0-.585-.262-.585-.585v-1.01zm3.84 0h1.7v1.01c0 .323-.262.585-.585.585h-.532c-.323 0-.585-.262-.585-.585v-1.01zm-2.99.16c-.234 0-.424.19-.424.424s.19.424.425.424.426-.19.426-.425c0-.07-.018-.132-.046-.19-.04.05-.1.083-.166.083-.117 0-.213-.095-.213-.213 0-.038.012-.073.03-.103l-.03-.003zm3.84 0c-.234 0-.425.19-.425.424s.19.424.425.424.425-.19.425-.425c0-.07-.017-.132-.046-.19-.04.05-.1.083-.168.083-.117 0-.213-.095-.213-.213 0-.038.01-.073.027-.103-.01 0-.02-.003-.028-.003zm-3.436 4.356c-.066.006-.13.03-.186.068-.1.07-.158.183-.158.304v2.02c0 .12.06.235.158.304.064.045.14.068.215.068.042 0 .084-.007.125-.022l1.364-.487 1.364.487c.04.015.083.022.125.022.077 0 .152-.023.216-.068.1-.07.158-.183.158-.304v-2.02c0-.12-.06-.235-.158-.304s-.225-.087-.34-.046l-1.363.487-1.363-.488c-.03-.01-.058-.017-.087-.02-.022-.002-.044-.003-.066 0zm.4.9l.744.266v.432l-.744.266v-.964zm2.233 0v.964l-.744-.266v-.432l.744-.266z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/statuspage.svg b/assets/lib/simple-icons/icons/statuspage.svg
index 548b60da..891c34f8 100644
--- a/assets/lib/simple-icons/icons/statuspage.svg
+++ b/assets/lib/simple-icons/icons/statuspage.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Statuspage icon</title><path d="M12.008 9.597a5.623 5.623 0 1 1 0 11.245 5.623 5.623 0 0 1 0-11.245zM.154 8.717l3.02 3.574a.639.639 0 0 0 .913.068c4.885-4.379 10.97-4.379 15.84 0a.642.642 0 0 0 .916-.068l3.006-3.574a.646.646 0 0 0-.075-.906c-7.1-6.204-16.462-6.204-23.555 0a.65.65 0 0 0-.065.906z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Statuspage</title><path d="M12.008 9.597a5.623 5.623 0 1 1 0 11.245 5.623 5.623 0 0 1 0-11.245zM.154 8.717l3.02 3.574a.639.639 0 0 0 .913.068c4.885-4.379 10.97-4.379 15.84 0a.642.642 0 0 0 .916-.068l3.006-3.574a.646.646 0 0 0-.075-.906c-7.1-6.204-16.462-6.204-23.555 0a.65.65 0 0 0-.065.906z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/statuspal.svg b/assets/lib/simple-icons/icons/statuspal.svg
new file mode 100644
index 00000000..5b67756c
--- /dev/null
+++ b/assets/lib/simple-icons/icons/statuspal.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Statuspal</title><path d="M14.275 9.296c0-1.242-1.02-2.25-2.275-2.25-1.256 0-2.275 1.008-2.275 2.25 0 .936.58 1.737 1.403 2.077L5.934 24c1.896-1.1 3.98-1.651 6.066-1.651 2.085 0 4.17.55 6.066 1.65l-5.194-12.626a2.251 2.251 0 001.403-2.077zm1.187 12.01A13.44 13.44 0 0012 20.849a13.44 13.44 0 00-3.463.457L12 13.389zM16.55 13.5a5.58 5.58 0 00-.723-7.535 5.732 5.732 0 00-7.654 0A5.58 5.58 0 007.45 13.5a6.167 6.167 0 01.143-8.716c2.446-2.379 6.368-2.379 8.813 0a6.167 6.167 0 01.144 8.716zm0 3c3.047-1.988 4.416-5.716 3.366-9.174C18.867 3.867 15.65 1.5 12 1.5c-3.65 0-6.869 2.367-7.917 5.826-1.049 3.458.32 7.186 3.367 9.174-3.481-2.029-5.16-6.111-4.096-9.968C4.417 2.675 7.96 0 12 0c4.042 0 7.583 2.675 8.646 6.532 1.063 3.857-.615 7.94-4.096 9.968z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/steam.svg b/assets/lib/simple-icons/icons/steam.svg
index 1a66672c..affefa51 100644
--- a/assets/lib/simple-icons/icons/steam.svg
+++ b/assets/lib/simple-icons/icons/steam.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Steam icon</title><path d="M11.979 0C5.678 0 .511 4.86.022 11.037l6.432 2.658c.545-.371 1.203-.59 1.912-.59.063 0 .125.004.188.006l2.861-4.142V8.91c0-2.495 2.028-4.524 4.524-4.524 2.494 0 4.524 2.031 4.524 4.527s-2.03 4.525-4.524 4.525h-.105l-4.076 2.911c0 .052.004.105.004.159 0 1.875-1.515 3.396-3.39 3.396-1.635 0-3.016-1.173-3.331-2.727L.436 15.27C1.862 20.307 6.486 24 11.979 24c6.627 0 11.999-5.373 11.999-12S18.605 0 11.979 0zM7.54 18.21l-1.473-.61c.262.543.714.999 1.314 1.25 1.297.539 2.793-.076 3.332-1.375.263-.63.264-1.319.005-1.949s-.75-1.121-1.377-1.383c-.624-.26-1.29-.249-1.878-.03l1.523.63c.956.4 1.409 1.5 1.009 2.455-.397.957-1.497 1.41-2.454 1.012H7.54zm11.415-9.303c0-1.662-1.353-3.015-3.015-3.015-1.665 0-3.015 1.353-3.015 3.015 0 1.665 1.35 3.015 3.015 3.015 1.663 0 3.015-1.35 3.015-3.015zm-5.273-.005c0-1.252 1.013-2.266 2.265-2.266 1.249 0 2.266 1.014 2.266 2.266 0 1.251-1.017 2.265-2.266 2.265-1.253 0-2.265-1.014-2.265-2.265z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Steam</title><path d="M11.979 0C5.678 0 .511 4.86.022 11.037l6.432 2.658c.545-.371 1.203-.59 1.912-.59.063 0 .125.004.188.006l2.861-4.142V8.91c0-2.495 2.028-4.524 4.524-4.524 2.494 0 4.524 2.031 4.524 4.527s-2.03 4.525-4.524 4.525h-.105l-4.076 2.911c0 .052.004.105.004.159 0 1.875-1.515 3.396-3.39 3.396-1.635 0-3.016-1.173-3.331-2.727L.436 15.27C1.862 20.307 6.486 24 11.979 24c6.627 0 11.999-5.373 11.999-12S18.605 0 11.979 0zM7.54 18.21l-1.473-.61c.262.543.714.999 1.314 1.25 1.297.539 2.793-.076 3.332-1.375.263-.63.264-1.319.005-1.949s-.75-1.121-1.377-1.383c-.624-.26-1.29-.249-1.878-.03l1.523.63c.956.4 1.409 1.5 1.009 2.455-.397.957-1.497 1.41-2.454 1.012H7.54zm11.415-9.303c0-1.662-1.353-3.015-3.015-3.015-1.665 0-3.015 1.353-3.015 3.015 0 1.665 1.35 3.015 3.015 3.015 1.663 0 3.015-1.35 3.015-3.015zm-5.273-.005c0-1.252 1.013-2.266 2.265-2.266 1.249 0 2.266 1.014 2.266 2.266 0 1.251-1.017 2.265-2.266 2.265-1.253 0-2.265-1.014-2.265-2.265z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/steamdb.svg b/assets/lib/simple-icons/icons/steamdb.svg
new file mode 100644
index 00000000..72e22d21
--- /dev/null
+++ b/assets/lib/simple-icons/icons/steamdb.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>SteamDB</title><path d="M11.981 0C5.72 0 .581 2.231.02 5.081l6.675 1.257c.544-.17 1.162-.244 1.8-.244l3.131-1.875c-.037-.469.244-.956.881-1.35.9-.581 2.307-.9 3.732-.9a8.582 8.582 0 012.812.412c2.1.713 2.569 2.082 1.069 3.057-.956.618-2.494.937-4.013.9l-4.125 1.48c-.037.3-.243.582-.637.845-1.106.712-3.263.88-4.8.356-.675-.225-1.125-.563-1.313-.9L.47 7.2c.431.675 1.125 1.294 2.025 1.838C.938 9.938 0 11.062 0 12.28c0 1.2.9 2.307 2.419 3.206C.9 16.37 0 17.476 0 18.675 0 21.619 5.363 24 12 24c6.619 0 12-2.381 12-5.325 0-1.2-.9-2.306-2.419-3.188C23.1 14.588 24 13.482 24 12.282c0-1.219-.938-2.362-2.512-3.262 1.556-.956 2.493-2.138 2.493-3.413 0-3.093-5.381-5.606-12-5.606zm4.275 2.663c-.975.018-1.912.225-2.512.618-1.031.675-.713 1.594.712 2.082 1.425.487 3.394.337 4.425-.338 1.032-.675.713-1.594-.712-2.062a6.376 6.376 0 00-1.913-.282zm.057.318c1.387 0 2.493.525 2.493 1.163 0 .637-1.106 1.162-2.493 1.162-1.388 0-2.494-.525-2.494-1.162 0-.638 1.106-1.163 2.494-1.163zM8.493 6.45c-.3.019-.58.038-.862.075l1.707.319a2.03.94 0 11-1.52 1.744l-1.668-.32c.188.17.45.32.806.45 1.2.413 2.888.282 3.75-.28.863-.563.6-1.35-.6-1.744-.487-.169-1.068-.244-1.612-.244zm11.944 3.113v1.743c0 2.063-3.787 3.732-8.437 3.732-4.669 0-8.437-1.67-8.437-3.732V9.581c2.156.994 5.137 1.613 8.418 1.613 3.3 0 6.3-.619 8.475-1.631zm0 6.487v1.65c0 2.063-3.787 3.731-8.437 3.731-4.669 0-8.437-1.668-8.437-3.731v-1.65c2.175.956 5.137 1.538 8.437 1.538s6.281-.582 8.438-1.538z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/steamworks.svg b/assets/lib/simple-icons/icons/steamworks.svg
index 770d52c9..1382562d 100644
--- a/assets/lib/simple-icons/icons/steamworks.svg
+++ b/assets/lib/simple-icons/icons/steamworks.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Steamworks icon</title><path d="M21.928 9.49v2.071h-1.503v1.503h1.503v-1.5H24V9.49zm-5.915.498v1.075h1.075V9.988zm2.326 2.572a.596.596 0 00-.382.144.497.497 0 00-.155.383.437.437 0 00.145.35.627.627 0 00.33.14l.103.015.112.02a1.071 1.071 0 01.163.037.366.366 0 01.102.065.34.34 0 01.1.268.353.353 0 01-.127.29.529.529 0 01-.347.105.736.736 0 01-.285-.05.747.747 0 01-.24-.175l-.098.102a.795.795 0 00.27.193.866.866 0 00.343.06.68.68 0 00.455-.144.508.508 0 00.175-.39.53.53 0 00-.043-.208.423.423 0 00-.12-.16.468.468 0 00-.13-.08.84.84 0 00-.2-.047l-.112-.02-.088-.013a.82.82 0 01-.152-.045.481.481 0 01-.123-.072.323.323 0 01-.095-.25.378.378 0 01.115-.287.442.442 0 01.313-.105.617.617 0 01.252.045.75.75 0 01.195.132l.09-.092a.713.713 0 00-.53-.21.596.596 0 00-.036 0zm-17.664.005a.673.673 0 00-.432.161.542.542 0 00-.175.42.516.516 0 00.132.375.602.602 0 00.359.157l.12.015.105.015a.278.278 0 01.172.076.23.23 0 01.05.155c0 .16-.11.237-.327.237a.783.783 0 01-.251-.037.47.47 0 01-.195-.123l-.233.24a.76.76 0 00.295.195 1.157 1.157 0 00.38.058.764.764 0 00.492-.156.53.53 0 00.193-.431.54.54 0 00-.143-.405.48.48 0 00-.145-.093.988.988 0 00-.21-.052l-.107-.015-.113-.015a.292.292 0 01-.167-.078.194.194 0 01-.058-.135.222.222 0 01.075-.172.305.305 0 01.213-.068.767.767 0 01.205.027.394.394 0 01.172.105l.228-.232a.72.72 0 00-.26-.17.977.977 0 00-.338-.053.673.673 0 00-.037 0zm12.091.003a.612.612 0 00-.238.05.645.645 0 00-.21.146.525.525 0 00-.097.134.607.607 0 00-.05.153 1.387 1.387 0 00-.02.19 8.383 8.383 0 000 .595 1.306 1.306 0 00.02.19.607.607 0 00.05.152.486.486 0 00.097.135.645.645 0 00.21.145.656.656 0 00.251.05.612.612 0 00.251-.05.645.645 0 00.21-.145.525.525 0 00.097-.135.606.606 0 00.05-.152 1.385 1.385 0 00.02-.19 8.36 8.36 0 000-.595 1.305 1.305 0 00-.02-.19.606.606 0 00-.05-.153.486.486 0 00-.097-.134.645.645 0 00-.21-.146.656.656 0 00-.25-.05.612.612 0 00-.014 0zm-10.949.015v.333H2.3v1.575h.36v-1.575h.482v-.333zm1.878 0v1.908h1.218v-.33h-.855v-.464h.727v-.333h-.727v-.448h.855v-.333zm2.298 0l-.673 1.908h.375l.113-.337h.655l.11.337h.377l-.675-1.908zm1.442 0v1.908h.36v-1.11l.355.722h.245l.352-.722v1.11h.36v-1.908h-.354l-.48 1.03-.483-1.03zm2.198 0l.46 1.908h.144l.437-1.66.435 1.66h.143l.46-1.908h-.147l-.39 1.658-.43-1.658H10.6l-.43 1.658-.39-1.658zm4.452 0v1.908h.14v-.882h.508l.44.882h.162l-.445-.882a.49.49 0 00.428-.516.486.486 0 00-.148-.374.55.55 0 00-.382-.136zm1.93 0v1.908h.14v-.515l.44-.553.593 1.068v-.002h.167l-.667-1.177.57-.728h-.168l-.935 1.192v-1.192zm3.188.033v.19h.026v-.128l.045.093h.024l.042-.093v.128h.028v-.19h-.028l-.055.118-.055-.118zm-.165.002v.025h.052v.163h.028v-.163h.052v-.025zm-6.26.08a.489.489 0 01.352.148.45.45 0 01.077.107.485.485 0 01.043.132 1.117 1.117 0 01.018.175 7.48 7.48 0 010 .556 1.117 1.117 0 01-.018.175.485.485 0 01-.043.132.506.506 0 01-.077.107.489.489 0 01-.7 0 .45.45 0 01-.078-.107.589.589 0 01-.042-.132 1.117 1.117 0 01-.018-.175 7.459 7.459 0 010-.556 1.117 1.117 0 01.018-.175.485.485 0 01.042-.132.506.506 0 01.078-.107.489.489 0 01.349-.148zm2.007.015a.433.433 0 01.28.098.35.35 0 01.11.289.358.358 0 01-.113.286.428.428 0 01-.294.098h-.543v-.77h.545a.433.433 0 01.015-.001zm-8.643.433l.228.692h-.46z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Steamworks</title><path d="M21.928 9.49v2.071h-1.503v1.503h1.503v-1.5H24V9.49zm-5.915.498v1.075h1.075V9.988zm2.326 2.572a.596.596 0 00-.382.144.497.497 0 00-.155.383.437.437 0 00.145.35.627.627 0 00.33.14l.103.015.112.02a1.071 1.071 0 01.163.037.366.366 0 01.102.065.34.34 0 01.1.268.353.353 0 01-.127.29.529.529 0 01-.347.105.736.736 0 01-.285-.05.747.747 0 01-.24-.175l-.098.102a.795.795 0 00.27.193.866.866 0 00.343.06.68.68 0 00.455-.144.508.508 0 00.175-.39.53.53 0 00-.043-.208.423.423 0 00-.12-.16.468.468 0 00-.13-.08.84.84 0 00-.2-.047l-.112-.02-.088-.013a.82.82 0 01-.152-.045.481.481 0 01-.123-.072.323.323 0 01-.095-.25.378.378 0 01.115-.287.442.442 0 01.313-.105.617.617 0 01.252.045.75.75 0 01.195.132l.09-.092a.713.713 0 00-.53-.21.596.596 0 00-.036 0zm-17.664.005a.673.673 0 00-.432.161.542.542 0 00-.175.42.516.516 0 00.132.375.602.602 0 00.359.157l.12.015.105.015a.278.278 0 01.172.076.23.23 0 01.05.155c0 .16-.11.237-.327.237a.783.783 0 01-.251-.037.47.47 0 01-.195-.123l-.233.24a.76.76 0 00.295.195 1.157 1.157 0 00.38.058.764.764 0 00.492-.156.53.53 0 00.193-.431.54.54 0 00-.143-.405.48.48 0 00-.145-.093.988.988 0 00-.21-.052l-.107-.015-.113-.015a.292.292 0 01-.167-.078.194.194 0 01-.058-.135.222.222 0 01.075-.172.305.305 0 01.213-.068.767.767 0 01.205.027.394.394 0 01.172.105l.228-.232a.72.72 0 00-.26-.17.977.977 0 00-.338-.053.673.673 0 00-.037 0zm12.091.003a.612.612 0 00-.238.05.645.645 0 00-.21.146.525.525 0 00-.097.134.607.607 0 00-.05.153 1.387 1.387 0 00-.02.19 8.383 8.383 0 000 .595 1.306 1.306 0 00.02.19.607.607 0 00.05.152.486.486 0 00.097.135.645.645 0 00.21.145.656.656 0 00.251.05.612.612 0 00.251-.05.645.645 0 00.21-.145.525.525 0 00.097-.135.606.606 0 00.05-.152 1.385 1.385 0 00.02-.19 8.36 8.36 0 000-.595 1.305 1.305 0 00-.02-.19.606.606 0 00-.05-.153.486.486 0 00-.097-.134.645.645 0 00-.21-.146.656.656 0 00-.25-.05.612.612 0 00-.014 0zm-10.949.015v.333H2.3v1.575h.36v-1.575h.482v-.333zm1.878 0v1.908h1.218v-.33h-.855v-.464h.727v-.333h-.727v-.448h.855v-.333zm2.298 0l-.673 1.908h.375l.113-.337h.655l.11.337h.377l-.675-1.908zm1.442 0v1.908h.36v-1.11l.355.722h.245l.352-.722v1.11h.36v-1.908h-.354l-.48 1.03-.483-1.03zm2.198 0l.46 1.908h.144l.437-1.66.435 1.66h.143l.46-1.908h-.147l-.39 1.658-.43-1.658H10.6l-.43 1.658-.39-1.658zm4.452 0v1.908h.14v-.882h.508l.44.882h.162l-.445-.882a.49.49 0 00.428-.516.486.486 0 00-.148-.374.55.55 0 00-.382-.136zm1.93 0v1.908h.14v-.515l.44-.553.593 1.068v-.002h.167l-.667-1.177.57-.728h-.168l-.935 1.192v-1.192zm3.188.033v.19h.026v-.128l.045.093h.024l.042-.093v.128h.028v-.19h-.028l-.055.118-.055-.118zm-.165.002v.025h.052v.163h.028v-.163h.052v-.025zm-6.26.08a.489.489 0 01.352.148.45.45 0 01.077.107.485.485 0 01.043.132 1.117 1.117 0 01.018.175 7.48 7.48 0 010 .556 1.117 1.117 0 01-.018.175.485.485 0 01-.043.132.506.506 0 01-.077.107.489.489 0 01-.7 0 .45.45 0 01-.078-.107.589.589 0 01-.042-.132 1.117 1.117 0 01-.018-.175 7.459 7.459 0 010-.556 1.117 1.117 0 01.018-.175.485.485 0 01.042-.132.506.506 0 01.078-.107.489.489 0 01.349-.148zm2.007.015a.433.433 0 01.28.098.35.35 0 01.11.289.358.358 0 01-.113.286.428.428 0 01-.294.098h-.543v-.77h.545a.433.433 0 01.015-.001zm-8.643.433l.228.692h-.46z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/steelseries.svg b/assets/lib/simple-icons/icons/steelseries.svg
new file mode 100644
index 00000000..65c51ac2
--- /dev/null
+++ b/assets/lib/simple-icons/icons/steelseries.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Steelseries</title><path d="M14.08008 0c-1.00234 0-1.8125.80893-1.8125 1.8086v2.57226c-4.01871.7444-7.19505 3.9119-7.93946 7.91992H1.8125c-1.001 0-1.8125.80698-1.8125 1.80664 0 .99833.8115 1.8086 1.8125 1.8086h2.51563C5.18077 20.5094 9.22875 24 14.08008 24 19.54884 24 24 19.56148 24 14.10742c0-4.83662-3.50067-8.87524-8.10742-9.72656V1.80859C15.89258.80893 15.08108 0 14.08008 0ZM4.69336 3.17578c-1.00368 0-1.8164.80955-1.8164 1.81055 0 .99966.81272 1.8125 1.8164 1.8125 1.001 0 1.8164-.81284 1.8164-1.8125 0-1.001-.8154-1.81055-1.8164-1.81055zm9.38672 4.65625c3.46809 0 6.29297 2.81398 6.29297 6.2754 0 3.46006-2.82488 6.27734-6.29297 6.27734-3.46943 0-6.29297-2.81728-6.29297-6.27735 0-3.4614 2.82354-6.27539 6.29297-6.27539zm-.01758 2.4043c-2.14634 0-3.89258 1.73986-3.89258 3.88086S11.91616 18 14.0625 18c2.14634 0 3.89258-1.74182 3.89258-3.88281 0-2.141-1.74624-3.88086-3.89258-3.88086zm0 2.7168c.6455 0 1.16797.51989 1.16797 1.16406 0 .64283-.52246 1.16797-1.16797 1.16797-.64417 0-1.16992-.52514-1.16992-1.16797 0-.64417.52575-1.16407 1.16992-1.16407z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/steem.svg b/assets/lib/simple-icons/icons/steem.svg
index cd1f93c2..a0ec530d 100644
--- a/assets/lib/simple-icons/icons/steem.svg
+++ b/assets/lib/simple-icons/icons/steem.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Steem icon</title><path d="M3.927 2.596c.264.045-.397 1.778-.028 3.76.318 1.697 4.313 8.275 4.148 10.529-.128 1.418-3.408 4.74-3.753 4.52-.377-.105.996-2.361.486-4.244C4.19 14.97.673 9.301.677 6.798c0-1.832 3.011-4.32 3.25-4.202zM11.44.005c.336.058-.506 2.271-.034 4.791.405 2.17 5.501 10.555 5.292 13.432-.166 1.809-4.348 6.043-4.789 5.76-.479-.131 1.271-3.008.622-5.406-.755-2.796-5.238-10.026-5.235-13.218 0-2.338 3.842-5.509 4.144-5.359zm7.754 2.591c.27.045-.393 1.778-.023 3.761.318 1.697 4.313 8.275 4.148 10.529-.125 1.418-3.408 4.74-3.754 4.52-.377-.105.996-2.361.488-4.244-.594-2.192-4.11-7.861-4.105-10.363 0-1.832 3.014-4.32 3.248-4.202h-.002z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Steem</title><path d="M17.683 16.148l-.114.114c-.235.236-.486.46-.748.666l-.298.235a.11.11 0 01-.176-.11l.12-.53a3.3 3.3 0 00-.084-1.746l-.064-.195a7.193 7.193 0 00-.257-.671l-1.387-3.27-.149-.445a2.08 2.08 0 01-.093-.425l-.025-.223a2.065 2.065 0 01.59-1.696l.115-.114a8.33 8.33 0 01.747-.666l.299-.235a.109.109 0 01.126-.007c.04.025.06.071.049.117l-.119.53a3.3 3.3 0 00.083 1.746l.064.195c.074.227.16.453.257.671l1.387 3.27.15.445c.045.138.077.28.093.425l.025.223a2.065 2.065 0 01-.591 1.696zm-3.997 1.073l-.146.147c-.296.297-.612.579-.941.838l-.39.307a.12.12 0 01-.192-.12l.154-.687a4.169 4.169 0 00-.105-2.205l-.08-.248a9.058 9.058 0 00-.325-.848L9.91 10.28l-.188-.56a2.608 2.608 0 01-.117-.532l-.032-.285a2.586 2.586 0 01.74-2.124l.146-.147c.296-.297.612-.579.941-.838l.39-.307a.119.119 0 01.138-.007.119.119 0 01.054.127l-.154.687a4.168 4.168 0 00.105 2.205l.08.248c.094.287.204.572.325.848l1.75 4.125.188.56c.057.173.097.352.117.532l.032.285a2.586 2.586 0 01-.74 2.124zM9 16.148l-.114.114c-.234.236-.486.46-.747.666l-.299.235a.11.11 0 01-.175-.11l.12-.53a3.3 3.3 0 00-.084-1.746l-.064-.195a7.181 7.181 0 00-.257-.671l-1.387-3.27-.15-.445a2.076 2.076 0 01-.093-.425l-.025-.223a2.065 2.065 0 01.591-1.696l.114-.114a8.34 8.34 0 01.748-.666l.298-.235a.109.109 0 01.127-.007c.04.025.059.071.049.117l-.12.53a3.3 3.3 0 00.084 1.746l.064.195c.074.227.16.453.257.671l1.387 3.27.149.445c.046.138.077.28.093.425l.025.223a2.065 2.065 0 01-.59 1.696zM12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/steemit.svg b/assets/lib/simple-icons/icons/steemit.svg
index a94d4f38..0077e18c 100644
--- a/assets/lib/simple-icons/icons/steemit.svg
+++ b/assets/lib/simple-icons/icons/steemit.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Steemit icon</title><path d="M20.982 7.246a9.659 9.659 0 0 0-3.4-2.202c.721-2.12 3.277-2.892 3.277-2.892A21.632 21.632 0 0 0 8.31.29a10.14 10.14 0 0 0-5.842 3.478 9.152 9.152 0 0 0 .991 12.984c.598.512 1.934 1.308 1.958 1.349-.876 2.226-3.678 2.835-3.678 2.835a23.335 23.335 0 0 0 8.676 2.917 18.256 18.256 0 0 0 4.17.05 10.598 10.598 0 0 0 6.34-3.12 9.525 9.525 0 0 0 .058-13.538zm-1.704 12.058a8.886 8.886 0 0 1-5.137 2.381 16.265 16.265 0 0 1-3.555-.016 16.9 16.9 0 0 1-4.22-1.154 6.277 6.277 0 0 0 1.5-2.145 1.652 1.652 0 0 0-.05-1.308 6.995 6.995 0 0 1 1.426-8.077 7.26 7.26 0 0 1 10.159.057 7.324 7.324 0 0 1-.123 10.262z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Steemit</title><path d="M20.982 7.246c-1-1-2.163-1.73-3.4-2.202.721-2.12 3.277-2.892 3.277-2.892S14.895-.944 8.31.29C6.114.64 4.008 1.988 2.468 3.768a9.152 9.152 0 0 0 .991 12.984c.598.512 1.934 1.308 1.958 1.349-.876 2.226-3.678 2.835-3.678 2.835s3.703 2.316 8.676 2.917c1.319.163 2.72.204 4.17.05 2.302-.188 4.596-1.406 6.34-3.12a9.525 9.525 0 0 0 .058-13.538zm-1.704 12.058c-1.41 1.382-3.515 2.26-5.137 2.381-1.147.114-2.376.13-3.555-.016-1.737-.212-2.99-.69-4.22-1.154.623-.601 1.246-1.43 1.5-2.145a1.652 1.652 0 0 0-.05-1.308 6.995 6.995 0 0 1 1.426-8.077 7.196 7.196 0 0 1 5.931-1.99 7.142 7.142 0 0 1 4.228 2.047c2.785 2.795 2.687 7.524-.123 10.262z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/steinberg.svg b/assets/lib/simple-icons/icons/steinberg.svg
index 03c73402..82b1b133 100644
--- a/assets/lib/simple-icons/icons/steinberg.svg
+++ b/assets/lib/simple-icons/icons/steinberg.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Steinberg icon</title><path d="M19.481,12.629c0.642-0.371,0.642-1.009,0-1.379l-4.769-2.754 c-0.642-0.371-1.195-0.052-1.195,0.69v5.507c0,0.741,0.553,1.06,1.195,0.69L19.481,12.629z M12.001,2.727 c5.121,0,9.273,4.152,9.273,9.273s-4.152,9.273-9.273,9.273S2.729,17.121,2.729,12S6.88,2.727,12.001,2.727 M12.001,0.002 C5.386,0.002,0.004,5.384,0.004,12c0,6.616,5.382,11.998,11.998,11.998S23.999,18.616,23.999,12 C23.999,5.384,18.617,0.002,12.001,0.002L12.001,0.002z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Steinberg</title><path d="M19.4807 12.6291c.6422-.371.6422-1.0092 0-1.3792L14.711 8.4954c-.6422-.371-1.1952-.052-1.1952.6901v5.508c0 .741.553 1.0601 1.1952.69zm-7.4812-9.9036c5.1219 0 9.2745 4.1526 9.2745 9.2745s-4.1526 9.2745-9.2745 9.2745S2.726 17.122 2.726 12s4.1516-9.2745 9.2735-9.2745m0-2.7255C5.3834 0 .0005 5.3829.0005 12s5.3829 12 12 12 11.999-5.3829 11.999-12-5.3829-12-12-12z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/stellar.svg b/assets/lib/simple-icons/icons/stellar.svg
index fbea48df..402b59b5 100644
--- a/assets/lib/simple-icons/icons/stellar.svg
+++ b/assets/lib/simple-icons/icons/stellar.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Stellar icon</title><path d="M12.283 1.851A10.154 10.154 0 001.846 12.002c0 .259.01.516.03.773A1.847 1.847 0 01.872 14.56L0 15.005v2.074l2.568-1.309.832-.424.82-.417 14.71-7.496 1.653-.842L24 4.85V2.776l-3.387 1.728-2.89 1.473-13.955 7.108a8.376 8.376 0 01-.07-1.086 8.313 8.313 0 0112.366-7.247l1.654-.843.247-.126a10.154 10.154 0 00-5.682-1.932zM24 6.925L5.055 16.571l-1.653.844L0 19.15v2.072L3.378 19.5l2.89-1.473 13.97-7.117a8.474 8.474 0 01.07 1.092A8.313 8.313 0 017.93 19.248l-.101.054-1.793.914a10.154 10.154 0 0016.119-8.214c0-.26-.01-.522-.03-.78a1.848 1.848 0 011.003-1.785L24 8.992Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Stellar</title><path d="M12.283 1.851A10.154 10.154 0 001.846 12.002c0 .259.01.516.03.773A1.847 1.847 0 01.872 14.56L0 15.005v2.074l2.568-1.309.832-.424.82-.417 14.71-7.496 1.653-.842L24 4.85V2.776l-3.387 1.728-2.89 1.473-13.955 7.108a8.376 8.376 0 01-.07-1.086 8.313 8.313 0 0112.366-7.247l1.654-.843.247-.126a10.154 10.154 0 00-5.682-1.932zM24 6.925L5.055 16.571l-1.653.844L0 19.15v2.072L3.378 19.5l2.89-1.473 13.97-7.117a8.474 8.474 0 01.07 1.092A8.313 8.313 0 017.93 19.248l-.101.054-1.793.914a10.154 10.154 0 0016.119-8.214c0-.26-.01-.522-.03-.78a1.848 1.848 0 011.003-1.785L24 8.992Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/stencyl.svg b/assets/lib/simple-icons/icons/stencyl.svg
index cd8b90d7..895e3693 100644
--- a/assets/lib/simple-icons/icons/stencyl.svg
+++ b/assets/lib/simple-icons/icons/stencyl.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Stencyl icon</title><path d="M14.36,2.675c-0.959,0.12-1.901,0.366-2.783,0.759L9.389,1.622l0.433,2.835 c-0.758,0.567-1.41,1.25-1.935,2.038L4.982,6l1.951,2.352c-0.31,0.817-0.502,1.677-0.589,2.548L3.374,12l2.952,1.099 c0.083,0.883,0.258,1.763,0.565,2.597l-1.894,2.283l2.819-0.426c0.541,0.811,1.229,1.518,2.025,2.08l-0.47,2.751l2.247-1.806 c0.864,0.333,1.78,0.523,2.705,0.597L15.372,24l1.059-2.846c1.418-0.144,2.841-0.46,4.103-1.144 c-0.229-1.019-0.468-2.035-0.692-3.055c-2.042,1.044-4.605,1.442-6.736,0.403c-1.763-0.896-2.773-2.842-2.911-4.785 c-0.152-2.15,0.502-4.51,2.314-5.801c1.724-1.192,4.024-1.208,5.964-0.586c0.428,0.149,0.836,0.353,1.224,0.603 c0.306-1.052,0.616-2.104,0.93-3.154c-1.32-0.674-2.811-0.98-4.291-1.044L15.372,0L14.36,2.675z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Stencyl</title><path d="M14.36,2.675c-0.959,0.12-1.901,0.366-2.783,0.759L9.389,1.622l0.433,2.835 c-0.758,0.567-1.41,1.25-1.935,2.038L4.982,6l1.951,2.352c-0.31,0.817-0.502,1.677-0.589,2.548L3.374,12l2.952,1.099 c0.083,0.883,0.258,1.763,0.565,2.597l-1.894,2.283l2.819-0.426c0.541,0.811,1.229,1.518,2.025,2.08l-0.47,2.751l2.247-1.806 c0.864,0.333,1.78,0.523,2.705,0.597L15.372,24l1.059-2.846c1.418-0.144,2.841-0.46,4.103-1.144 c-0.229-1.019-0.468-2.035-0.692-3.055c-2.042,1.044-4.605,1.442-6.736,0.403c-1.763-0.896-2.773-2.842-2.911-4.785 c-0.152-2.15,0.502-4.51,2.314-5.801c1.724-1.192,4.024-1.208,5.964-0.586c0.428,0.149,0.836,0.353,1.224,0.603 c0.306-1.052,0.616-2.104,0.93-3.154c-1.32-0.674-2.811-0.98-4.291-1.044L15.372,0L14.36,2.675z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/stimulus.svg b/assets/lib/simple-icons/icons/stimulus.svg
new file mode 100644
index 00000000..17f5a8f0
--- /dev/null
+++ b/assets/lib/simple-icons/icons/stimulus.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Stimulus</title><path d="M.704 0A.704.704 0 000 .704v2.824h5.648a3.064 3.064 0 011.312.36l3.232 1.9a.4.4 0 010 .712l-1.536.904a1.308 1.308 0 01-1.2 0l-1.2-.7a3.084 3.084 0 00-1.316-.36H0v4.236h4.94a3.028 3.028 0 001.316-.36l10.8-6.344a3.008 3.008 0 011.312-.36H24V.692A.704.704 0 0023.296 0zM19.06 6.352a3.084 3.084 0 00-1.316.36l-10.8 6.348a3.064 3.064 0 01-1.312.36H0v4.236h4.94a3.084 3.084 0 001.316-.36l10.8-6.348a3.064 3.064 0 011.312-.36H24V6.352h-3.376zm0 7.072a3.084 3.084 0 00-1.316.36l-10.8 6.344a3.008 3.008 0 01-1.312.36H0v2.824A.708.708 0 00.704 24h22.592a.708.708 0 00.704-.7v-2.824h-5.648a3.008 3.008 0 01-1.312-.36l-3.232-1.896a.4.4 0 010-.716l1.536-.9a1.308 1.308 0 011.2 0l1.2.696a3.028 3.028 0 001.316.36H24v-4.236h-3.376z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/stitcher.svg b/assets/lib/simple-icons/icons/stitcher.svg
index 36756c6c..009be134 100644
--- a/assets/lib/simple-icons/icons/stitcher.svg
+++ b/assets/lib/simple-icons/icons/stitcher.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Stitcher icon</title><path d="M17.98 6.938h-.359v10.125h.359V6.938zm-.745 1.125h-.36v7.875h.36V8.063zm-1.116 0H0v7.875h16.119V8.063zm7.881 0h-4.508v7.875H24V8.063zm-5.256 0h-.36v7.875h.36V8.063z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Stitcher</title><path d="M19.59 8.516H24v6.928h-4.41zM0 8.854h4.41v7.803H0zm4.914-1.328h4.388v8.572H4.914zm4.892.725h4.388v8.81H9.806zm4.892-1.312h4.388v9.158h-4.388Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/stmicroelectronics.svg b/assets/lib/simple-icons/icons/stmicroelectronics.svg
new file mode 100644
index 00000000..f6deb6b3
--- /dev/null
+++ b/assets/lib/simple-icons/icons/stmicroelectronics.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>STMicroelectronics</title><path d="M 23.818 5.61 L 6.402 5.61 C 5.125 5.609 3.968 6.362 3.452 7.529 L 0.014 15.811 C -0.036 15.931 0.052 16.063 0.182 16.061 L 8.046 16.061 C 8.601 16.061 8.848 15.523 8.412 15.093 L 5.524 12.388 C 4.008 10.9 4.658 7.45 7.81 7.45 L 23.206 7.45 C 23.283 7.451 23.352 7.402 23.378 7.329 L 23.987 5.857 C 23.996 5.835 24.001 5.811 24 5.787 C 23.997 5.689 23.917 5.61 23.818 5.61 M 22.082 9.826 L 19.126 9.826 C 18.932 9.825 18.756 9.94 18.681 10.118 L 15.369 18.118 C 15.355 18.144 15.347 18.173 15.347 18.202 C 15.348 18.302 15.429 18.383 15.529 18.381 L 16.632 18.381 C 17.93 18.387 19.105 17.613 19.612 16.418 L 22.244 10.063 C 22.252 10.042 22.257 10.019 22.257 9.996 C 22.253 9.902 22.176 9.828 22.082 9.826 M 16.271 10.005 C 16.271 9.905 16.189 9.825 16.089 9.825 L 7.706 9.825 C 7.251 9.825 6.853 10.38 7.335 10.825 L 10.104 13.404 C 10.104 13.404 11.224 14.437 10.984 15.916 C 10.778 17.219 9.889 18.016 9.241 18.302 C 9.208 18.31 9.196 18.351 9.219 18.376 C 9.23 18.387 9.246 18.392 9.261 18.388 L 12.489 18.388 C 12.683 18.39 12.859 18.275 12.934 18.095 L 16.256 10.068 C 16.266 10.049 16.271 10.027 16.271 10.005"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/stopstalk.svg b/assets/lib/simple-icons/icons/stopstalk.svg
new file mode 100644
index 00000000..be344c0e
--- /dev/null
+++ b/assets/lib/simple-icons/icons/stopstalk.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>StopStalk</title><path d="M12 0A12 12 0 000 12a12 12 0 0012 12 12 12 0 0012-12A12 12 0 0012 0zm-.049 2.953a9.046 9.046 0 01.049 0 9.046 9.046 0 013.46.688L13.57 6.42l2.72.047 1.14-1.703A9.046 9.046 0 0121.047 12 9.046 9.046 0 0112 21.047a9.046 9.046 0 01-2.916-.483l1.937-2.828-2.72-.047-1.258 1.88A9.046 9.046 0 012.953 12a9.046 9.046 0 018.998-9.047zm1.713 4.072a.55.55 0 00-.42.172c-.17.156-.266.248-.297.264-.653-.28-1.196-.42-1.662-.42-.653 0-1.213.219-1.664.639-.45.435-.684.994-.684 1.724 0 .638.204 1.26.577 1.866.388.606 1.024 1.429 1.957 2.455.373.42.7.808.965 1.166.264.342.404.638.404.902 0 .14-.063.264-.188.357a.756.756 0 01-.466.14c-.513 0-1.025-.483-1.538-1.462-.14-.28-.248-.45-.326-.527-.077-.078-.328-.11-.732-.11-.311 0-.465.063-.465.172 0 .016.03.156.092.42l.435 2.004c.016.14.048.217.11.248.046.031.14.047.279.047.358 0 .59-.077.684-.232.046-.078.11-.125.187-.125a.88.88 0 01.358.109 3.19 3.19 0 001.212.248c.653 0 1.243-.217 1.772-.621.528-.42.809-1.01.809-1.787 0-.669-.156-1.259-.467-1.787-.311-.529-.965-1.384-1.975-2.58-.87-1.026-1.305-1.711-1.305-2.069 0-.28.14-.42.436-.42.404 0 .87.405 1.383 1.213.248.389.42.606.498.653.093.062.279.078.574.078.264 0 .42 0 .482-.032.063-.03.094-.076.094-.154 0-.015-.016-.079-.031-.187l-.467-2.051c-.03-.14-.078-.22-.14-.266a9.706 9.706 0 00-.48-.047Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/storify.svg b/assets/lib/simple-icons/icons/storify.svg
deleted file mode 100644
index 6af7de88..00000000
--- a/assets/lib/simple-icons/icons/storify.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Storify icon</title><path d="M22.98 8.566c.32.607.563 1.275.732 2.005.17.73.264 1.495.285 2.292.02.795-.061 1.605-.24 2.416-.18.815-.447 1.611-.797 2.388s-.83 1.515-1.441 2.22c-.613.706-1.313 1.339-2.107 1.901-.781.554-1.74 1.034-2.85 1.409-1.111.39-2.326.645-3.646.795l-.299-.721c.074-.015.164-.045.299-.089.137-.046.375-.135.721-.301.359-.15.689-.329 1.02-.54.33-.21.689-.495 1.08-.87.404-.375.734-.779 1.02-1.215.285-.449.525-.99.721-1.649.195-.66.301-1.365.301-2.115 0-.721-.09-1.381-.285-2.01-.195-.631-.451-1.155-.766-1.621-.314-.449-.674-.885-1.049-1.289-.375-.405-.766-.795-1.141-1.155-.391-.36-.734-.735-1.066-1.095-.314-.361-.584-.766-.779-1.215-.195-.45-.3-.916-.3-1.41 0-.885.361-1.65 1.05-2.28.705-.646 1.664-.96 2.895-.96.361 0 .721.029 1.096.105.375.074.824.209 1.334.435.512.226.992.51 1.455.854.467.346.961.84 1.471 1.455.51.619.977 1.335 1.395 2.145l-.109.115zM1.02 15.451c-.319-.607-.563-1.275-.731-2.006-.169-.731-.265-1.494-.285-2.291-.021-.796.061-1.605.24-2.416.181-.816.445-1.612.795-2.388.352-.777.832-1.516 1.44-2.22.615-.705 1.315-1.34 2.109-1.9.78-.556 1.739-1.035 2.851-1.41C8.55.427 9.765.158 11.085.007l.299.711c-.063.014-.158.044-.285.08-.124.039-.359.135-.712.293-.35.156-.687.334-1.013.537-.322.202-.68.489-1.072.861s-.73.777-1.012 1.215c-.284.439-.521.985-.716 1.64-.196.654-.291 1.355-.291 2.107 0 .71.09 1.375.301 2 .195.625.449 1.162.765 1.613.315.466.675.885 1.05 1.307.375.419.766.794 1.141 1.154.375.359.734.734 1.05 1.096.329.375.585.779.78 1.214.195.45.299.915.299 1.41 0 .899-.359 1.666-1.049 2.296-.706.645-1.667.959-2.897.959-.359 0-.72-.03-1.095-.105-.375-.074-.825-.209-1.32-.435-.51-.226-.99-.51-1.47-.855-.466-.345-.96-.84-1.47-1.455-.51-.614-.975-1.334-1.396-2.144l.048-.055z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/storyblok.svg b/assets/lib/simple-icons/icons/storyblok.svg
new file mode 100644
index 00000000..c97f6630
--- /dev/null
+++ b/assets/lib/simple-icons/icons/storyblok.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Storyblok</title><path d="M13.953 11.462H9.088v2.34h4.748c.281 0 .538-.118.749-.305.187-.187.304-.468.304-.819a1.404 1.404 0 0 0-.257-.842c-.188-.234-.398-.374-.679-.374zm.164-2.83c.21-.14.304-.445.304-.843 0-.35-.094-.608-.257-.771a.935.935 0 0 0-.608-.234H9.088v2.105h4.374c.234 0 .468-.117.655-.257zM21.251 0H2.89c-.585 0-1.053.468-1.053 1.03v18.385c0 .562.468.912 1.03.912H5.58V24l3.368-3.65h12.304c.562 0 .913-.35.913-.935V1.053c0-.562-.351-1.03-.936-1.03zm-3.087 14.9a2.827 2.827 0 0 1-1.006 1.03c-.445.28-.936.538-1.497.655-.562.14-1.17.257-1.801.257H5.579v-13.1h9.403c.468 0 .866.094 1.24.305.351.187.679.444.936.748.524.64.806 1.443.795 2.27 0 .608-.164 1.192-.468 1.754a2.924 2.924 0 0 1-1.403 1.263c.748.21 1.333.585 1.778 1.123.42.561.631 1.286.631 2.199 0 .584-.117 1.076-.35 1.497z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/storybook.svg b/assets/lib/simple-icons/icons/storybook.svg
index bbe944ce..0096f3b8 100644
--- a/assets/lib/simple-icons/icons/storybook.svg
+++ b/assets/lib/simple-icons/icons/storybook.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Storybook icon</title><path d="M16.34.24l-.12 2.71a.18.18 0 0 0 .29.15l1.06-.8.9.7a.18.18 0 0 0 .28-.14L18.65.1l1.33-.1a1.2 1.2 0 0 1 1.28 1.2v21.6A1.2 1.2 0 0 1 20 24l-16.1-.72a1.2 1.2 0 0 1-1.15-1.16L2 2.32a1.2 1.2 0 0 1 1.13-1.27l13.2-.83.01.02zM13.27 9.3c0 .47 3.16.24 3.59-.08 0-3.2-1.72-4.89-4.86-4.89-3.15 0-4.9 1.72-4.9 4.29 0 4.45 6 4.53 6 6.96 0 .7-.32 1.1-1.05 1.1-.96 0-1.35-.49-1.3-2.16 0-.36-3.65-.48-3.77 0-.27 4.03 2.23 5.2 5.1 5.2 2.79 0 4.97-1.49 4.97-4.18 0-4.77-6.1-4.64-6.1-7 0-.97.72-1.1 1.13-1.1.45 0 1.25.07 1.19 1.87z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Storybook</title><path d="M16.71.243l-.12 2.71a.18.18 0 00.29.15l1.06-.8.9.7a.18.18 0 00.28-.14l-.1-2.76 1.33-.1a1.2 1.2 0 011.279 1.2v21.596a1.2 1.2 0 01-1.26 1.2l-16.096-.72a1.2 1.2 0 01-1.15-1.16l-.75-19.797a1.2 1.2 0 011.13-1.27L16.7.222zM13.64 9.3c0 .47 3.16.24 3.59-.08 0-3.2-1.72-4.89-4.859-4.89-3.15 0-4.899 1.72-4.899 4.29 0 4.45 5.999 4.53 5.999 6.959 0 .7-.32 1.1-1.05 1.1-.96 0-1.35-.49-1.3-2.16 0-.36-3.649-.48-3.769 0-.27 4.03 2.23 5.2 5.099 5.2 2.79 0 4.969-1.49 4.969-4.18 0-4.77-6.099-4.64-6.099-6.999 0-.97.72-1.1 1.13-1.1.45 0 1.25.07 1.19 1.87z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/strapi.svg b/assets/lib/simple-icons/icons/strapi.svg
index 2d2ac2b0..21e1883f 100644
--- a/assets/lib/simple-icons/icons/strapi.svg
+++ b/assets/lib/simple-icons/icons/strapi.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Strapi icon</title><path d="M17.295 10.554a.388.388 0 01-.195-.053l-1.527-.894a.39.39 0 01-.192-.334V7.508a.387.387 0 01.193-.335l1.534-.886a.384.384 0 01.385 0l1.538.88a.388.388 0 01.195.336v1.78a.387.387 0 01-.192.335l-1.535.885a.382.382 0 01-.204.05zm-1.14-1.503l1.146.67 1.148-.663V7.725l-1.15-.659-1.15.665zM5.252 13.545a.387.387 0 01-.194-.727l1.344-.774a.387.387 0 11.386.668l-1.344.777a.384.384 0 01-.192.056zm-.292 2.341a.385.385 0 01-.19-.727l2.578-1.477a.387.387 0 11.384.67l-2.585 1.483a.384.384 0 01-.186.05zm.417 1.926a.387.387 0 01-.19-.727l3.117-1.744a.387.387 0 11.378.673l-3.11 1.744a.38.38 0 01-.195.054zM12.956 1.99L11.043.827 1.375 6.421l.019 1.599 3.657 2.11L7.44 8.764l.522-2.541a.392.392 0 01.186-.258l8.414-4.845a.391.391 0 01.387 0l6.278 3.635a.382.382 0 01.194.334l-.012 7.268a.387.387 0 01-.195.335l-8.324 4.78a.388.388 0 01-.298.037l-2.526-.714-2.368 1.378v4.197l1.385.8 9.667-5.593v-2.248l.77-.503v2.972a.385.385 0 01-.191.336l-10.052 5.815a.384.384 0 01-.387 0L9.116 22.93a.385.385 0 01-.194-.334v-4.642a.385.385 0 01.192-.333l2.702-1.572a.385.385 0 01.3-.038l2.532.716 7.995-4.587.012-6.82-5.893-3.41-8.07 4.652-.526 2.528a.387.387 0 01-.187.257l-2.727 1.569a.388.388 0 01-.386 0L.826 8.59a.387.387 0 01-.194-.33L.6 6.207a.385.385 0 01.192-.338L10.854.054a.387.387 0 01.394 0l2.471 1.502z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Strapi</title><path d="M7.684 0v8.035h7.775c.28 0 .502.236.502.483v7.802h8.025V.502A.502.502 0 0023.484 0zm-.5.5L.086 7.607a.251.251 0 00.178.428h6.92zm.5 8.035v7.283c0 .278.224.502.502.502h7.275V9.018c0-.278-.224-.482-.502-.483zm8.277 8.285v6.928c0 .224.271.336.43.178l7.095-7.106z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/strava.svg b/assets/lib/simple-icons/icons/strava.svg
index 3172153b..e01de50e 100644
--- a/assets/lib/simple-icons/icons/strava.svg
+++ b/assets/lib/simple-icons/icons/strava.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Strava icon</title><path d="M15.387 17.944l-2.089-4.116h-3.065L15.387 24l5.15-10.172h-3.066m-7.008-5.599l2.836 5.598h4.172L10.463 0l-7 13.828h4.169"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Strava</title><path d="M15.387 17.944l-2.089-4.116h-3.065L15.387 24l5.15-10.172h-3.066m-7.008-5.599l2.836 5.598h4.172L10.463 0l-7 13.828h4.169"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/streamlit.svg b/assets/lib/simple-icons/icons/streamlit.svg
new file mode 100644
index 00000000..b0f70fca
--- /dev/null
+++ b/assets/lib/simple-icons/icons/streamlit.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Streamlit</title><path d="M16.673 11.32l6.862-3.618c.233-.136.554.12.442.387L20.463 17.1zm-8.556-.229l3.473-5.187c.203-.328.578-.316.793-.028l7.886 11.75zm-3.375 7.25c-.28 0-.835-.284-.993-.716l-3.72-9.46c-.118-.331.139-.614.48-.464l19.474 10.306c-.149.147-.453.337-.72.334z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/stripe.svg b/assets/lib/simple-icons/icons/stripe.svg
index 02cb0902..8ebadf74 100644
--- a/assets/lib/simple-icons/icons/stripe.svg
+++ b/assets/lib/simple-icons/icons/stripe.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Stripe icon</title><path d="M13.976 9.15c-2.172-.806-3.356-1.426-3.356-2.409 0-.831.683-1.305 1.901-1.305 2.227 0 4.515.858 6.09 1.631l.89-5.494C18.252.975 15.697 0 12.165 0 9.667 0 7.589.654 6.104 1.872 4.56 3.147 3.757 4.992 3.757 7.218c0 4.039 2.467 5.76 6.476 7.219 2.585.92 3.445 1.574 3.445 2.583 0 .98-.84 1.545-2.354 1.545-1.875 0-4.965-.921-6.99-2.109l-.9 5.555C5.175 22.99 8.385 24 11.714 24c2.641 0 4.843-.624 6.328-1.813 1.664-1.305 2.525-3.236 2.525-5.732 0-4.128-2.524-5.851-6.594-7.305h.003z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Stripe</title><path d="M13.976 9.15c-2.172-.806-3.356-1.426-3.356-2.409 0-.831.683-1.305 1.901-1.305 2.227 0 4.515.858 6.09 1.631l.89-5.494C18.252.975 15.697 0 12.165 0 9.667 0 7.589.654 6.104 1.872 4.56 3.147 3.757 4.992 3.757 7.218c0 4.039 2.467 5.76 6.476 7.219 2.585.92 3.445 1.574 3.445 2.583 0 .98-.84 1.545-2.354 1.545-1.875 0-4.965-.921-6.99-2.109l-.9 5.555C5.175 22.99 8.385 24 11.714 24c2.641 0 4.843-.624 6.328-1.813 1.664-1.305 2.525-3.236 2.525-5.732 0-4.128-2.524-5.851-6.594-7.305h.003z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/strongswan.svg b/assets/lib/simple-icons/icons/strongswan.svg
index 80ab2b91..b83db9f4 100644
--- a/assets/lib/simple-icons/icons/strongswan.svg
+++ b/assets/lib/simple-icons/icons/strongswan.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>strongSwan icon</title><path d="M19.565 5.106a4.69 4.69 0 00-.236.006c-.074 0-.148 0-.221.007-.506.111-1.072.246-1.438.634-.552.631-.442 1.69.202 2.222.885.79 1.72 1.657 2.29 2.708.624.965.731 2.259.16 3.274-.63 1.283-1.887 2.18-3.26 2.515.38.998.437 2.3.437 2.3s1.157-.32 1.64-.537c.545-.263 1.117-.507 1.55-.943.434-.295.75-.724 1.035-1.163.32-.512.612-1.048.862-1.595.157-.492.347-.98.374-1.505a6.174 6.174 0 00-.169-2.283c-.378-1.016-1.09-1.875-1.93-2.545.772-.008 1.547.03 2.317-.019.432 0 1.253-.42.544-.754-.385-.12-.782.09-1.16.109-.315-.139-.973-.324-.725-.776.288-.598-.153-1.082-.69-1.277-.484-.278-1.032-.379-1.582-.378zm-6.419.66c-1.18.034-2.404.178-3.425.823-1.054.695-1.908 1.677-2.554 2.757.032-.004.06-.005.07.002.017.01.112.027.213.037.201.024 1.527.4 1.591.451.08.064.656.343.71.343.094 0 .057-.057-.07-.114-.267-.114-.499-.256-.428-.256.131 0 .36.101.542.24.198.154.733.383.979.42.269.037.962.303 1.14.43.088.068.22.152.286.189a.58.58 0 01.145.1c.037.058.078.038.06-.03-.01-.033-.067-.09-.13-.124-.064-.034-.108-.08-.101-.1.007-.021-.135-.129-.32-.236-.182-.108-.34-.226-.35-.26-.014-.03-.034-.057-.047-.057a.467.467 0 01-.131-.1c-.061-.058-.101-.102-.091-.102.023 0 .296.175.32.206.036.043.238.134.265.117.017-.01.054.01.088.048.08.087.097.084.148-.02l.04-.088.07.09c.055.068.078.081.098.044a.172.172 0 00.03-.08c0-.034-.17-.121-.42-.212a1.009 1.009 0 01-.185-.105c-.128-.1-.01-.087.242.03.118.051.303.122.414.152.111.03.25.078.303.101.296.135.384.178.511.263a.515.515 0 00.212.094c.037 0 .078.023.088.05.013.027.034.044.047.034.014-.01.08.02.148.067.067.044.121.071.121.057 0-.01.024.014.054.054.04.057.064.068.094.044.03-.027.06-.017.105.03.033.037.08.064.107.061.04-.01.347.296.347.347 0 .01.064.064.144.117.078.054.152.111.165.132.014.016.04.033.058.033.016 0 .104.054.195.118.087.064.168.114.178.118.044.003.33.222.42.323.125.134.058.097-.188-.101-.333-.273-.535-.36-.535-.232 0 .033-.023.07-.05.084-.047.017-.047.027.003.08.067.075.141.088.08.014-.05-.06-.003-.064.071-.007.03.024.047.057.04.08-.01.024.01.034.051.021.067-.017.242.118.242.185 0 .017.209.168.465.33.454.29.67.45.535.404a.494.494 0 00-.108-.02c-.024 0-.091-.038-.145-.085-.094-.077-.235-.087-.188-.013.01.017-.01.03-.044.03-.04.003-.024.02.05.06.081.044.098.071.071.098-.027.027-.017.047.04.081.044.02.095.06.108.084.014.027.05.047.078.047.027 0 .064.037.087.084.02.044.047.074.064.068.014-.01.034.01.047.047.01.033.148.192.303.35.158.158.286.306.286.323 0 .03-.222.094-.276.077-.017-.003-.027.007-.027.027s-.03.02-.074.003-.077-.04-.074-.057c.003-.047-.06-.101-.145-.121-.11-.03-.094.016.054.151.125.111.128.121.06.138a.09.09 0 01-.022.003c.032.037.063.073.093.111.755-.6 1.66-1.235 1.777-2.276.154-1.283-.886-2.277-1.854-2.94-.592-.432-1-1.091-1.279-1.759-.287-.61-.007-1.883-.007-1.883s-1.418-.112-2.085-.123zm-10.75 2.81a4.102 4.102 0 01-.282.017c-.233.014-.24.014-.223.094.01.054.06.105.155.148.135.068.976.303 1.397.394.12.027.232.06.252.077.064.05.249.071.262.03.01-.026.064-.016.165.031.121.057.441.145.586.158.02.003.043.03.057.064.013.03.07.067.128.08.057.01.097.038.09.058-.016.047-.198.027-.232-.024-.02-.03-.033-.03-.054.003-.023.034-.063.034-.201.003-.098-.023-.175-.053-.175-.07 0-.054-.064-.024-.084.04-.014.037-.037.06-.054.047-.017-.01-.024-.03-.014-.043.007-.017-.107-.091-.262-.165-.219-.111-.407-.165-.912-.276a7.444 7.444 0 00-.65-.121c-.01.01.041.047.115.087.108.06.114.067.037.05-.148-.03-.111.01.094.102.131.057.185.097.172.13-.02.051.047.129.097.119.071-.014.111.007.121.06.017.094-.11.145-.265.108a5.732 5.732 0 00-.23-.047c-.056-.007-.208-.037-.336-.06a3.065 3.065 0 00-.37-.055 1.693 1.693 0 01-.282-.04c-.115-.027-.155-.024-.175.01-.017.027-.088.04-.182.037-.084-.003-.151.01-.151.023 0 .017.127.03.286.03.279 0 .353.014.353.068 0 .05-.121.064-.222.02-.078-.03-.111-.03-.172.007-.064.044-.084.04-.158-.007-.077-.05-.09-.05-.108-.007-.02.057-.13.054-.235-.003-.057-.03-.047-.04.08-.06.172-.027.169-.04-.013-.064-.09-.01-.158 0-.202.033-.06.044-.06.048-.003.051.094 0 .03.067-.064.067a.432.432 0 01-.151-.033C.33 9.72.317 9.72.324 9.754c.01.047-.111.053-.226.01-.037-.017-.057-.017-.043 0 .013.013 0 .043-.03.067-.044.034-.034.04.077.04.074 0 .188.01.259.024.074.013.124.01.124-.01 0-.044.236-.024.367.033.074.034.104.064.09.105-.01.047-.002.054.041.03.04-.023.074-.017.115.02.05.044.074.047.158.01.057-.023.117-.026.144-.01.024.014.152.03.28.034.272.007.373.027.44.08.027.02.081.045.125.048.131.017.239.044.34.08.128.051.7.179.716.162.007-.007-.057-.034-.14-.057-.085-.024-.152-.057-.152-.078 0-.033.097-.02.346.058.142.043.165.047.182.003.01-.027.037-.05.064-.05.027 0 .047-.024.047-.055 0-.027-.013-.04-.034-.03-.016.01-.033.003-.033-.013 0-.02.023-.037.05-.037.03 0 .05.03.05.08 0 .068.02.081.139.101.077.014.148.014.158.003.01-.01-.007-.017-.037-.017s-.057-.016-.057-.033c0-.044-.007-.044.296.03.141.037.35.074.46.088.327.03.435.063.892.265.225.103.468.203.678.283.003-.035.008-.07.013-.106-.124-.046-.24-.106-.247-.136-.01-.04.007-.044.091-.017l.176.052c-.017-.116.406.02.454-.112.028-.076-.691-.282-.664-.372.026-.09.387.062.465-.026.06-.067-.181-.212-.12-.291.04-.053.413.237.468.185.07-.068-.413-.337-.36-.432.041-.072.285.115.372.057.136-.09-.04-.044.066-.17.02-.024.051-.032.09-.032.007-.016.016-.031.024-.047l.058.002c.071-.003.088-.01.051-.03a.327.327 0 00-.08-.027c.005-.007.008-.013.011-.02l.002-.003a25.609 25.609 0 00-.68-.443l-.043-.013a2.61 2.61 0 00-.673-.115c-.333-.017-.333-.017-.152.027.438.101.976.28.976.32 0 .027-.023.037-.057.027-.4-.122-1.38-.39-1.42-.39a.148.148 0 01-.09-.034c-.02-.02-.139-.047-.27-.064a3.189 3.189 0 01-.377-.07c-.077-.025-.148-.038-.158-.028-.037.034.024.121.094.142.058.013.064.026.034.057-.03.03-.054.03-.098-.007-.03-.027-.063-.044-.07-.037-.03.027-.209-.037-.226-.081-.013-.037-.043-.044-.09-.03-.04.013-.081.007-.095-.014-.03-.047-.508-.138-.508-.097 0 .043-.212-.003-.242-.054-.03-.04-.094.03-.094.104 0 .064-.067.054-.242-.04a.603.603 0 00-.202-.078zm4.004.475c.322.097.377.105.377.057 0-.028-.35-.146-.632-.214.082.049.168.102.255.157zm-.255-.157c-.223-.134-.411-.236-.478-.244a.982.982 0 01-.212-.037c-.034-.02-.226.024-.226.054 0 .02.199.067.841.209l.075.018zm.935.6c.077.051.136.092.148.101.013.01.043.031.083.055l.155.007c.243.01.431.044.673.115.364.11.42.12.42.07 0-.03-.416-.168-.706-.232-.399-.088-.627-.139-.742-.17l-.03.053zm.23.156c-.16-.007-.14 0 .005.035l.095.023-.1-.058zm.1.058l.04.02c-.047.027-.29-.109-.437-.109l-.033.062c.304.079.947.257 1.254.35.033.01.057 0 .057-.027 0-.037-.464-.193-.88-.296zm-2.31-.95h-.038c-.03.002-.054.006-.065.013-.047.027.148.068.316.068.07-.003.088-.01.05-.03a.761.761 0 00-.264-.05zm-3.104.148c-.02 0-.024.014-.014.034.01.017.037.033.054.033.02 0 .024-.016.014-.033a.069.069 0 00-.054-.034zm.21.07H2.18c-.037 0-.047.01-.02.021.023.01.053.007.063-.003.01-.008.001-.015-.019-.017zm5.434.136c.005 0 .009 0 .013.003l-.096.045-.01-.005c-.058.042-.118.1-.148.1-.033 0 .067-.133.148-.1.033-.025.066-.044.093-.043zm-1.852.702c.027 0 .04.014.03.034-.01.017-.034.034-.054.034-.017 0-.03-.017-.03-.034 0-.02.023-.034.054-.034zm-4.962.34H.8c-.037 0-.047.01-.02.02.024.01.054.008.064-.002.01-.008.001-.015-.02-.017zm.214.088l.064.07c.034.04.094.081.135.091.037.014.151.054.245.091.145.057.195.06.283.03.084-.03.121-.026.161.007a.65.65 0 00.3.125c.047 0 .04-.014-.024-.064l-.08-.06.14.01a.396.396 0 01.193.05c.027.02.047.027.047.014 0-.014.02-.01.043.007.068.053.189.074.202.033.007-.023.078-.007.195.05.202.095.475.162.663.162.068 0 .232.024.36.054.39.088.693.145.963.182.144.02.346.067.454.104.252.088.323.101.3.06-.014-.016.002-.03.03-.03.03 0 .053.024.053.05 0 .031.02.041.058.028.037-.014.047-.01.03.017-.02.037.017.057.09.043.014 0 .024.01.024.027s.037.037.084.044a.16.16 0 00.06.003l-.024-.003.104-.213c-.07-.04-.18-.085-.305-.12a2.323 2.323 0 01-.33-.132c-.093-.047-.164-.067-.178-.047a.07.07 0 01-.057.034c-.023 0-.02-.017.003-.047.057-.067-.249-.165-.552-.172a4.065 4.065 0 01-.972-.141c-.212-.057-.34-.074-.353-.05-.014.02-.148.007-.39-.044-.202-.04-.438-.084-.522-.094a1.307 1.307 0 01-.202-.037A2.442 2.442 0 002 10.337a7.809 7.809 0 01-.791-.068zm5.153.981l.003.002c-.002.064 0 .128.003.192a.057.057 0 01-.031-.007c-.017-.01-.03-.003-.03.014 0 .008-.01.014-.024.017.142.019.283.03.444.035.303.007.609.104.552.171-.024.03-.027.047-.003.047a.07.07 0 00.057-.033c.013-.02.084 0 .178.047.088.043.236.104.33.13.212.061.383.149.383.193 0 .016.024.023.051.013.027-.013.05-.003.05.017 0 .047-.161.114-.205.084-.017-.01-.03-.003-.03.013 0 .017-.037.024-.084.014-.047-.007-.084-.027-.084-.044 0-.017-.01-.027-.024-.027-.074.014-.11-.007-.09-.044.016-.026.006-.03-.03-.016-.038.013-.058.003-.058-.027 0-.027-.024-.05-.054-.05-.027 0-.044.013-.03.03.023.04-.047.027-.3-.061a2.926 2.926 0 00-.454-.104c-.217-.03-.458-.074-.746-.135-.3.636-.585 1.279-.848 1.932-1.36 2.488-3.238 2.791-3.238 2.791v2.477c1.517-.004 3.034-.009 4.55-.016-.24-2.505 1.376-5.035 3.753-5.863a1.382 1.382 0 01-.177-.103c-.064-.044-.145-.07-.178-.06-.04.01-.165-.048-.323-.145a7.318 7.318 0 00-.306-.182 5.993 5.993 0 01-.505-.326c.08 0 .501.151.69.249.13.067.269.12.31.12a.48.48 0 01.191.075c.067.044.219.138.336.212.056.034.107.067.146.094.14-.047.283-.09.426-.125-.08-.036-.244-.116-.417-.198a6.752 6.752 0 00-.656-.276 3.048 3.048 0 01-.488-.212 10.887 10.887 0 00-.343-.182c-.07-.03-.192-.1-.27-.151a2.275 2.275 0 00-.235-.138c-.067-.027-.087-.054-.07-.094.017-.044.01-.05-.027-.027-.07.044-.121.044-.232.01l-.206-.06c-.084-.027-.1-.024-.09.016.01.047.289.169.447.195.067.01.209.085.42.222.065.04.088.064.051.051a4.883 4.883 0 00-.269-.08 9.769 9.769 0 01-1.094-.428c-.457-.202-.565-.236-.891-.266a3.413 3.413 0 01-.206-.032l-.025.05zm.421-.842l-.043.084c.065.03.182.034.196-.003.007-.02-.034-.047-.091-.057a.269.269 0 01-.062-.023zm1.529 1.754c.03 0 .092.024.249.076.212.074.366.155.992.529.057.033.145.1.199.148l.097.084h-.09c-.145 0-.811-.367-.811-.448 0-.02-.027-.043-.064-.05-.04-.01-.054 0-.037.027.02.03.007.03-.047.003-.081-.044-.098-.088-.02-.057.026.01.05.003.05-.014 0-.02-.03-.034-.067-.034-.037 0-.068-.016-.068-.033 0-.02-.02-.034-.04-.034a.82.82 0 01-.178-.067.844.844 0 00-.179-.068c-.023 0-.033-.016-.023-.033.012-.02.014-.03.037-.03z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>strongSwan</title><path d="M17.803 5.24a3.161 3.161 0 0 0-1.647.5c-.245.185-.54.52-.518 1.165.022.32.031.294.112.58.232.433.458.622.826.94.06.047.079.06.133.099.275.258.553.556.79.823.207.256.432.54.604.825.229.392.263.369.546.928.287.645.398 1.392.226 2.068a4.62 4.62 0 0 1-.88 1.646l.347 1.137.303-1.115.463.003.298 1.114.34-1.112h.466l-.554 1.662c.3-.39.528-.74.763-1.197l.409.07c.036-.093.079-.155.145-.183.04-.018.063-.032.19-.032.1-.001.216.016.253.095.013.035.028.064.023.183a3.68 3.68 0 0 1-.436.104c-.302.059-.427.105-.521.192a.44.44 0 0 0-.152.355c0 .11.02.184.07.26.079.122.19.197.344.23.1.022.302.018.393-.008a.86.86 0 0 0 .27-.138l.07-.053.056.173h.482l-.015-.03a1.143 1.143 0 0 1-.075-.22c-.012-.054-.014-.132-.015-.548 0-.401-.003-.497-.014-.552-.022-.112-.04-.16-.102-.216a.46.46 0 0 0-.257-.14 1.74 1.74 0 0 0-.494-.025c-.216.018-.42.11-.49.22 0 .002 0 .002-.002.003.734-1.491 1.002-3.19.274-4.696-.42-.92-1.036-1.522-1.751-2.102.71.009 1.367.094 2.033.02.167-.012.3-.02.455-.056a.624.624 0 0 1 .318-.073c.335-.116.376-.214.379-.292-.021-.181-.335-.323-.487-.393l-.96.202c-.057-.04-.835-.292-.83-.595.003-.122.13-.138.16-.433l.001-.263-.058-.298c-.063-.082-.425-.313-.626-.421-.241-.12-.386-.19-.562-.235a3.181 3.181 0 0 0-1.096-.171zm-6.332.657c-1.667-.01-3.283.509-4.457 1.83-.55.579-1.06 1.274-1.458 1.923.396.083.697.186 1.165.32.438.097.78.378 1.082.488l.09-.048c-1.001-.5-.685-.4-.284-.266.723.654 1.823.52 2.545 1.162l.243.14c.113-.04-.322-.275-.248-.282l.063.004c-.022-.001-.862-.533-.795-.53-.085-.145-.267-.225-.358-.308.227.073.587.375.732.428l.074-.063c.033-.029.005.135.141.165l.1-.165c.017-.026.087.146.131.157.03.008.004-.061.074-.111-.123-.079-.14-.075-.26-.138-.154-.029-.183-.042-.459-.238.29-.024.326.09.46.15.44.126.9.28 1.274.562l.033-.04c.017-.02.546.385.51.35l.065-.083c.012-.015.132.172.142.161l.06-.067c.252.226.276.377.528.551.16.075.54.373.79.528.505.45.711.64-.029.077-.166-.093-.617-.525-.528-.161.166.125.671.372.446.387.008.004.039.076.375.265.143.081.447.298.447.298l.014-.025.176.16c-.012-.012-.127-.013-.188-.022-.282-.22-.27-.194-.296-.193-.211.236.208.156.032.3.154.084.302.212.417.327.012.122.13.19.264.317s.285.315.389.41c.846-.389 1.315-.976 1.551-1.524.295-.756.245-1.02.086-1.586-.178-.557-.711-1.153-1.183-1.527-.25-.223-.495-.368-.878-.655-.69-.751-.954-1.401-1.019-1.966-.076-.516.06-.998.168-1.315-.7-.07-1.452-.15-2.065-.145a7.912 7.912 0 0 0-.162-.002zM5.556 9.65c-.08-.014-.157-.028-.229-.03a.338.338 0 0 0-.252.089c.13.015.26.03.398.074zm-.083.133l-.08.126c.219.023.314.015.515.04.19.05.542.15.71.207.016.013.088-.033.05-.054-.39-.174-.815-.208-1.195-.319zm-.08.126h-.169l.14.045zm-.028.045l-.031.065c.216.031.986.29 1.045.297.043.005.063-.048.025-.065-.134-.052-.317-.096-.508-.154a5.804 5.804 0 0 0-.531-.143zm-.031.065c-.21-.043-.326-.098-.578-.169-.258-.106-1.13-.252-.557.03.042.098-.506-.041-.341-.095-.06.002-.98-.273-.721-.092-.392-.14-.308-.129-.365.069-.2-.123-.331-.165-.466-.166-.08 0-.163.015-.262.037-.348-.063-.124-.019-.166.143.114.124.781.278.922.31.322.069 1.115.315 1.085.254-.282-.164.146.009.267.068.144.088.58.079.55.225a.353.353 0 0 1 .21.077c.123-.215.245-.432.422-.69zm-.528-.254c.067.07.14.053.232.078.066-.006.292-.018.336-.013-.017-.004-.23-.063-.568-.065zm-.408.075c.095.002.427.224.194.138-.243-.065-.326-.128-.21-.135a.034.034 0 0 1 .016-.003zm-2.675.011c-.034-.003-.056.08.119.104.054.008-.078-.093-.12-.104zm.22.07c-.03.021.03.068.363.128.274.05-.301-.129-.362-.128zm2.878.03c.04 0 .237.123.165.115-.236-.028-.255-.116-.165-.115zm-2.507.19c.229.144.31.17.052.134.147.097.48.15.348.306.055.027.201-.006.224.047.023.053.016.063-.101.13-.08.05-.49-.063-.683-.09-.22-.057-.376-.06-.594-.09-.468-.046-.003.087-.672.046-.545-.032-.193.11-.244.122-.1.137-.284-.069-.313-.044-.044.057-.01.187-.287.006L0 10.862c.397-.01.522.146.597-.035.17.013.3.096.354.133.054.037-.134.11-.016.095.101-.112.172.067.24.057.044 0 .12-.082.17-.088.021.006.079.098.13.093.043-.004.129-.07.149-.057.389.066.488.097.556.176.252-.012.55.164.963.209.981.336-.904-.193-1.462-.16-.188.017-.872-.13-.538.058.288.127.482.255.624.159.048-.026.894.356.338.019.12.017.227-.01.326.045.303.163.47.058.565.134.277.156.474.111.698.135.126.022.411.06.476.104.114.023.067.014.212.038l.102-.267c-.671-.075-.693-.112-1.543-.368l.014-.056c.209.068.343.1.52.127l.012-.094c.09.022.47.105.489.091-.215-.094-.2-.044-.163-.114.11-.033.557.165.613.139.156-.005.123.003.162.007.154-.415.171-.38.276-.654a2.276 2.276 0 0 1-.245-.109c-.089.042.196.142-.306-.008-.147-.1-.125-.145-.153-.002-.054-.037-.089-.005-.339-.193-.351-.122-1.261-.338-1.507-.336zm2.274 1.301l-.104.268c.212.02.167.005.303-.01.135-.014.471.118.621.191.088.057.095.074.363.167.147.025.574.242.876.316.036-.01.363.114.526.15.102.04.193.093.28.157.147.061.207.087.38.11.164.071-.018.024.201.117.24.123.358.242.442.267.104-.053.34-.12.38-.13-.172-.04-.438-.242-.817-.388-.623-.15-1.137-.55-1.71-.804l-.419-.113c-.038.003-.043.021-.044.05.394.123.534.162.677.235.182.16.322.185.351.221-.325-.097-.295-.085-.59-.174-.237-.078-.274-.133-.58-.227-.158-.049-.356-.166-.536-.233a2.167 2.167 0 0 0-.6-.17zm-.206.535C3.678 13.9 3.315 14.845 1.76 15.86c-.364.229-.778.4-1.21.427v2.467c1.51.002 3.019.001 4.528.006-.276-2.279 1.124-4.583 3.202-5.505-.38-.288-.39-.202-.451-.172-.248-.181-1.15-.677-1.16-.688-.1-.011-.36-.125-.398-.075-.025.055.13.072.187.084.225.041 1.242.664 1.32.792-.448.025-.81-.41-1.181-.505l.008-.118c-.236-.12-.415-.122-.481-.166-.08.146-1.016-.346-1.17-.341-.23.033-.213-.036-.572-.089zm.938-1.331c-.017 0-.007.01.056.041.053.019.515.205.256.143-.168.117.425.013.244.116-.398-.111.547.306.308.07-.093-.147-.131-.088-.193-.12-.183-.093-.297-.127-.414-.178-.03-.009-.216-.07-.257-.072zm.257.072m-4.575-.052c.13 0 .266.01.313.014.366-.045.425.12.107.088-.03-.002-.108-.073-.233.049-.074-.009-.126-.086-.212-.104.071.1.293.142-.131.088-.258-.114-.06-.137.156-.135zm.741.033c.05-.002.111.017.128.077-.257-.015-.21-.074-.128-.077zm8.753.28l-.003.001c-.122.08.05.232.385.348-.099-.138-.042-.143-.195-.193.067.172-.15-.155-.187-.156zm-5.734.12c-.23.14.486.301.387.255-.042-.173.399.174.217-.043-.26-.058-.11-.103-.203-.096-.158.066-.295-.098-.401-.115zm-2.067.017c.005 0 .01.002.016.005.023.014.052.05.093.072.01.037-.029.04-.069.029-.04-.01-.081-.033-.078-.045.011-.047.023-.062.038-.062zm.845.09c.016 0 .048.025.095.102-.097-.004-.126-.1-.095-.101zm7.412.046c-.084.073.188.295.27.145-.136-.126.054.123-.27-.145zm-3.99.003c-.277.065-.275.007.053.197.3.138-.003.095-.126.012.004.03.25.217.22.19.118.083.454.215.32.042.12-.15-.193-.162-.194-.184a.867.867 0 0 1-.28-.183c-.185.014.119-.06.007-.074zm-.007.074h.004c-.004-.002-.005-.002-.004 0zm.28.183c.028.007.048.003.055-.017-.04.007-.055.013-.055.017zm.28 2.852v.485h-.192v.242h.192l.008 1.018c.008.224.129.388.334.447.17.028.32.013.478-.028l-.004-.264a.733.733 0 0 1-.245.058c-.17-.01-.23-.035-.275-.203l-.005-1.03.53.002v-.242h-.527v-.485zm4.614.436a.7.7 0 0 0-.459.179l-.056.045v-.175h-.293v1.689h.293v-1.259l.064-.047a.9.9 0 0 1 .258-.136.571.571 0 0 1 .236 0c.06.017.11.058.138.113.047.092.05.125.054.754l.004.575h.292l-.003-.625c-.003-.606-.004-.628-.022-.7-.05-.205-.167-.34-.344-.393a.725.725 0 0 0-.162-.02zm11.251.002a.751.751 0 0 0-.306.068.896.896 0 0 0-.228.168l-.034.039v-.237h-.444v1.715h.477l-.003-.893c-.01-.438.226-.504.398-.511.195.006.274.14.28.332-.002.358.001.715.004 1.072H24l-.003-.65c-.003-.591-.005-.656-.018-.71a.462.462 0 0 0-.286-.337.778.778 0 0 0-.313-.056zm-13.111 0a.901.901 0 0 0-.198.02c-.3.082-.498.337-.54.699-.016.131-.006.355.02.468.04.173.1.284.214.399a.524.524 0 0 0 .147.114.794.794 0 0 0 .234.077c.08.013.265.004.345-.015a.678.678 0 0 0 .44-.35c.076-.15.097-.247.103-.475a1.144 1.144 0 0 0-.048-.432.694.694 0 0 0-.717-.505zm3.394.001a.67.67 0 0 0-.477.196.688.688 0 0 0-.176.266c-.073.18-.093.425-.053.662.05.3.21.497.444.56a.845.845 0 0 0 .446-.02c.091-.04.154-.093.225-.148l-.002.135a1.05 1.05 0 0 1-.018.182c-.027.11-.072.184-.163.23a.537.537 0 0 1-.297.055c-.196-.004-.364-.073-.488-.116l-.004.307c.1.024.21.047.295.057.185.023.381.012.514-.03.256-.06.425-.299.448-.67v-1.62h-.266l-.014.07-.077-.042c-.156-.074-.264-.073-.337-.074zm-7.03.003a.79.79 0 0 0-.213.025c-.193.057-.337.192-.38.357a.647.647 0 0 0-.013.137c0 .15.038.247.13.333.09.085.186.118.471.177.202.042.28.078.313.177.02.175.002.215-.107.283a.726.726 0 0 1-.242.042c-.15.014-.372-.071-.554-.218H6.02v.32c.11.056.23.098.355.128.1.026.382.015.452-.008.149-.048.3-.15.358-.261a.453.453 0 0 0 .06-.254c-.001-.257-.122-.39-.418-.459l-.216-.05a.583.583 0 0 1-.23-.095c-.045-.041-.069-.136-.052-.206.015-.06.05-.098.108-.133.177-.108.498-.048.722.13h.023v-.308a1.34 1.34 0 0 0-.337-.105 2.395 2.395 0 0 0-.21-.012zm2.676.042a.678.678 0 0 0-.395.175l-.093.08.001-.253H8.54l.004 1.686.285.002-.004-1.199a.915.915 0 0 1 .251-.162c.148-.053.195-.04.363-.023v-.305h-.13zm.965.204c.051 0 .103.007.154.022.14.044.237.162.283.343.025.1.032.37.013.482-.038.219-.14.361-.296.413a.447.447 0 0 1-.43-.08c-.113-.106-.163-.247-.171-.486-.01-.277.04-.463.155-.578a.421.421 0 0 1 .292-.116zm3.42.008h.042a.802.802 0 0 1 .336.098v.918l-.05.035a.803.803 0 0 1-.24.11.619.619 0 0 1-.28 0c-.118-.038-.19-.122-.232-.276a1.28 1.28 0 0 1-.03-.335c.016-.214.066-.34.174-.442a.374.374 0 0 1 .28-.108zm3.96.105c-1.014.897-1.887 1.096-2.407 1.228.247.696.34 1.51.289 2.245 1.596-.265 3.04-.904 4.076-2.083l-.43-.001-.31-1.098-.299 1.098-.46.001zm3.78.58c.007.002.007.028.004.129-.005.156-.019.204-.078.27a.455.455 0 0 1-.2.114c-.111.028-.212.005-.283-.065-.112-.112-.073-.274.079-.33.045-.017.08-.026.329-.083a3.467 3.467 0 0 0 .149-.035z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/stubhub.svg b/assets/lib/simple-icons/icons/stubhub.svg
index 1d41edb3..b367e8b1 100644
--- a/assets/lib/simple-icons/icons/stubhub.svg
+++ b/assets/lib/simple-icons/icons/stubhub.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>StubHub icon</title><path d="M23.78 6.566L.21 8.148c-.116.008-.21.107-.21.227V8.4l.725 6.884v.004c.003.036.006.07.006.11 0 .123-.016.243-.048.347L.344 16.84c-.04.122.026.182.146.134l1.805-.75c.002 0 .004 0 .006-.002h.003c.13-.05.27-.076.418-.076h.036l20.04 1.29c.127 0 .23-.097.243-.222L24 6.784v-.02c0-.11-.09-.198-.2-.198h-.02zm-19.245 3.68h.053c.823 0 1.25.304 1.275.892v.045h-.516l-.006-.04c-.027-.26-.273-.386-.753-.386h-.045c-.48.008-.717.152-.717.434v.08c.005.055.03.102.07.136.052.048.117.087.19.11l1.204.403-.007-.005.01.004c.18.057.34.163.46.306.108.138.175.313.175.502v.117c0 .287-.14.54-.36.695-.235.18-.575.268-.997.268s-.75-.093-.99-.268v-.002c-.218-.155-.36-.41-.36-.7v-.07h.516v.05c0 .146.063.255.21.346s.358.137.628.137.49-.048.637-.136.22-.2.22-.346v-.072c0-.167-.098-.277-.3-.344L3.935 12c-.195-.062-.35-.157-.45-.28-.1-.12-.16-.274-.16-.444v-.084c0-.616.403-.935 1.21-.943zm8.292.08h.518v1.448h1.588v-1.447h.52v3.47h-.522v-1.52h-1.585v1.52h-.518v-3.47zm-6.495.007h.5v.945h.535v.51h-.535v.89c0 .208.056.37.168.487l-.002.004c.087.09.202.15.334.17h.035v.485l-.047-.004h-.004c-.265-.016-.504-.13-.68-.308-.203-.21-.305-.492-.305-.834v-2.346zm11.913 0h.5v1.12c.155-.157.367-.24.633-.24.755 0 1.14.395 1.142 1.175v.283c0 .342-.103.624-.305.835s-.486.316-.836.316-.628-.105-.83-.315-.306-.494-.306-.834v-2.337zm-8.084.002h.5v1.12c.156-.16.368-.243.634-.243.76 0 1.14.396 1.144 1.176v.283c0 .342-.105.624-.307.835s-.483.316-.833.316-.627-.105-.83-.315-.307-.494-.307-.834v-2.335zm-2.395.945h.492v1.367c0 .258.04.442.113.545.07.095.204.146.387.146h.016c.185 0 .31-.047.385-.146s.115-.287.115-.545H9.27V11.28h.49v1.367c0 .417-.08.72-.23.902-.146.173-.385.264-.71.272h-.115c-.325-.008-.564-.098-.71-.273-.156-.18-.23-.486-.23-.903V11.28zm8.077 0h.492v1.367c0 .258.04.442.115.545.07.095.2.146.384.146h.025c.18 0 .306-.05.378-.146.075-.104.115-.287.115-.545h-.004V11.28h.49v1.367c0 .417-.083.728-.23.902s-.384.264-.71.272h-.12c-.324-.008-.563-.098-.71-.273-.155-.18-.228-.486-.228-.903V11.28zm-4.548.422c-.207 0-.37.05-.473.156s-.16.285-.16.53v.288c0 .208.062.366.17.486s.26.182.464.182c.203 0 .357-.056.47-.18s.17-.28.17-.488v-.283c0-.247-.056-.423-.163-.53s-.266-.16-.476-.16zm8.083 0c-.207 0-.37.05-.473.156s-.16.285-.16.53v.288c0 .208.06.366.166.486s.267.182.467.182.355-.06.47-.18.17-.285.17-.488v-.283c0-.247-.056-.423-.163-.53s-.267-.16-.477-.16z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>StubHub</title><path d="M23.78 6.566L.21 8.148c-.116.008-.21.107-.21.227V8.4l.725 6.884v.004c.003.036.006.07.006.11 0 .123-.016.243-.048.347L.344 16.84c-.04.122.026.182.146.134l1.805-.75c.002 0 .004 0 .006-.002h.003c.13-.05.27-.076.418-.076h.036l20.04 1.29c.127 0 .23-.097.243-.222L24 6.784v-.02c0-.11-.09-.198-.2-.198h-.02zm-19.245 3.68h.053c.823 0 1.25.304 1.275.892v.045h-.516l-.006-.04c-.027-.26-.273-.386-.753-.386h-.045c-.48.008-.717.152-.717.434v.08c.005.055.03.102.07.136.052.048.117.087.19.11l1.204.403-.007-.005.01.004c.18.057.34.163.46.306.108.138.175.313.175.502v.117c0 .287-.14.54-.36.695-.235.18-.575.268-.997.268s-.75-.093-.99-.268v-.002c-.218-.155-.36-.41-.36-.7v-.07h.516v.05c0 .146.063.255.21.346s.358.137.628.137.49-.048.637-.136.22-.2.22-.346v-.072c0-.167-.098-.277-.3-.344L3.935 12c-.195-.062-.35-.157-.45-.28-.1-.12-.16-.274-.16-.444v-.084c0-.616.403-.935 1.21-.943zm8.292.08h.518v1.448h1.588v-1.447h.52v3.47h-.522v-1.52h-1.585v1.52h-.518v-3.47zm-6.495.007h.5v.945h.535v.51h-.535v.89c0 .208.056.37.168.487l-.002.004c.087.09.202.15.334.17h.035v.485l-.047-.004h-.004c-.265-.016-.504-.13-.68-.308-.203-.21-.305-.492-.305-.834v-2.346zm11.913 0h.5v1.12c.155-.157.367-.24.633-.24.755 0 1.14.395 1.142 1.175v.283c0 .342-.103.624-.305.835s-.486.316-.836.316-.628-.105-.83-.315-.306-.494-.306-.834v-2.337zm-8.084.002h.5v1.12c.156-.16.368-.243.634-.243.76 0 1.14.396 1.144 1.176v.283c0 .342-.105.624-.307.835s-.483.316-.833.316-.627-.105-.83-.315-.307-.494-.307-.834v-2.335zm-2.395.945h.492v1.367c0 .258.04.442.113.545.07.095.204.146.387.146h.016c.185 0 .31-.047.385-.146s.115-.287.115-.545H9.27V11.28h.49v1.367c0 .417-.08.72-.23.902-.146.173-.385.264-.71.272h-.115c-.325-.008-.564-.098-.71-.273-.156-.18-.23-.486-.23-.903V11.28zm8.077 0h.492v1.367c0 .258.04.442.115.545.07.095.2.146.384.146h.025c.18 0 .306-.05.378-.146.075-.104.115-.287.115-.545h-.004V11.28h.49v1.367c0 .417-.083.728-.23.902s-.384.264-.71.272h-.12c-.324-.008-.563-.098-.71-.273-.155-.18-.228-.486-.228-.903V11.28zm-4.548.422c-.207 0-.37.05-.473.156s-.16.285-.16.53v.288c0 .208.062.366.17.486s.26.182.464.182c.203 0 .357-.056.47-.18s.17-.28.17-.488v-.283c0-.247-.056-.423-.163-.53s-.266-.16-.476-.16zm8.083 0c-.207 0-.37.05-.473.156s-.16.285-.16.53v.288c0 .208.06.366.166.486s.267.182.467.182.355-.06.47-.18.17-.285.17-.488v-.283c0-.247-.056-.423-.163-.53s-.267-.16-.477-.16z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/styled-components.svg b/assets/lib/simple-icons/icons/styled-components.svg
deleted file mode 100644
index 28dd269e..00000000
--- a/assets/lib/simple-icons/icons/styled-components.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>styled-components icon</title><path d="M16.214 6.762l-.075.391c-.116.741-.074.953.244 1.228l.307.254-.318 1.418c-.19.846-.423 1.555-.571 1.788-.127.201-.275.497-.307.656-.053.19-.233.381-.508.55-.243.138-.72.508-1.058.805-.27.243-.456.392-.557.456l-.33.261c-.106.17-.166.307-.189.411-.023.107-.01.178.024.23.033.05.09.085.168.107a.954.954 0 00.282.023 3 3 0 00.632-.112c.07-.019.125-.037.173-.053.074-.091.245-.263.548-.562.804-.793 1.111-1.227.794-1.11-.117.042-.064-.064.137-.276.424-.413.667-1.037 1.175-2.994.402-1.545.402-1.567.698-1.567.139 0 .532.024.532.024V6.762h-.902zm3.839 3.165c-.064 0-.17.096-.233.202-.116.19.021.306 1.767 1.396 1.037.657 1.873 1.217 1.852 1.26-.021.031-.868.582-1.883 1.217-1.842 1.142-1.852 1.153-1.683 1.386.212.275 0 .37 2.391-1.122L24 13.155v-.836l-1.937-1.196c-1.047-.656-1.957-1.185-2.01-1.196zm-16.085.117c-.053 0-.963.54-2.01 1.185L0 12.425v.836l1.947 1.217c1.08.666 1.99 1.217 2.032 1.217.042 0 .127-.096.212-.212.127-.201.02-.286-1.768-1.418C.72 12.996.54 12.848.71 12.732c.106-.074.91-.572 1.778-1.111 1.979-1.217 1.873-1.133 1.714-1.387-.063-.105-.17-.2-.233-.19zm8.684.023c-.292-.002-.92.443-2.8 1.978-.081.193-.088.326-.051.412.024.059.068.1.129.13.06.03.138.048.224.055.171.015.373-.012.536-.044l.11-.025a.386.386 0 01.144-.118c.116-.064.603-.508 1.09-.984.857-.868 1.058-1.26.709-1.387a.24.24 0 00-.09-.017zm2.196.603c-.257.007-.72.305-1.513.938-.398.323-.65.497-.785.533l-.524.414c-.197.36-.226.583-.174.706a.25.25 0 00.138.134.644.644 0 00.24.045 2.18 2.18 0 00.58-.085 3.466 3.466 0 00.291-.092l.029-.012.053-.028c.1-.129.33-.372.618-.652.91-.878 1.375-1.502 1.28-1.735-.043-.113-.117-.17-.233-.166zm-2.424 1.08c-.074.008-.24.136-.539.398-.432.382-.903.602-1.066.504a3.97 3.97 0 01-.114.024c-.166.033-.373.06-.558.045a.708.708 0 01-.252-.063.337.337 0 01-.168-.17c-.037-.09-.037-.202.005-.345l-.65.534-1.471 1.217V15.867l4.82-3.797a.41.41 0 01.016-.123c.037-.134.035-.202-.023-.196zm2.074.639c-.073 0-.195.103-.39.31-.265.283-.682.557-.903.613l-.034.018a2.191 2.191 0 01-.11.042c-.06.02-.138.044-.228.068-.18.049-.404.094-.604.089a.732.732 0 01-.275-.054.344.344 0 01-.184-.18c-.058-.139-.035-.334.092-.611L7.61 16.033v1.205h1.868l3.962-3.112c.103-.114.258-.27.467-.465.56-.519.687-.698.687-.963 0-.206-.023-.31-.096-.31zm.943 1.95l-.339.338c-.19.18-.529.402-.761.497l-.046.02-.003.005-.01.01c-.009.007-.013.008-.02.011a3.432 3.432 0 01-.282.093 3.058 3.058 0 01-.65.115 1.035 1.035 0 01-.31-.027.364.364 0 01-.218-.144c-.048-.074-.062-.173-.035-.295a1.11 1.11 0 01.095-.25l-3.197 2.526h4.252l.508-.582c.698-.814 1.016-1.396 1.016-1.894z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/styledcomponents.svg b/assets/lib/simple-icons/icons/styledcomponents.svg
new file mode 100644
index 00000000..f0562e2d
--- /dev/null
+++ b/assets/lib/simple-icons/icons/styledcomponents.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>styled-components</title><path d="M16.214 6.762l-.075.391c-.116.741-.074.953.244 1.228l.307.254-.318 1.418c-.19.846-.423 1.555-.571 1.788-.127.201-.275.497-.307.656-.053.19-.233.381-.508.55-.243.138-.72.508-1.058.805-.27.243-.456.392-.557.456l-.33.261c-.106.17-.166.307-.189.411-.023.107-.01.178.024.23.033.05.09.085.168.107a.954.954 0 00.282.023 3 3 0 00.632-.112c.07-.019.125-.037.173-.053.074-.091.245-.263.548-.562.804-.793 1.111-1.227.794-1.11-.117.042-.064-.064.137-.276.424-.413.667-1.037 1.175-2.994.402-1.545.402-1.567.698-1.567.139 0 .532.024.532.024V6.762h-.902zm3.839 3.165c-.064 0-.17.096-.233.202-.116.19.021.306 1.767 1.396 1.037.657 1.873 1.217 1.852 1.26-.021.031-.868.582-1.883 1.217-1.842 1.142-1.852 1.153-1.683 1.386.212.275 0 .37 2.391-1.122L24 13.155v-.836l-1.937-1.196c-1.047-.656-1.957-1.185-2.01-1.196zm-16.085.117c-.053 0-.963.54-2.01 1.185L0 12.425v.836l1.947 1.217c1.08.666 1.99 1.217 2.032 1.217.042 0 .127-.096.212-.212.127-.201.02-.286-1.768-1.418C.72 12.996.54 12.848.71 12.732c.106-.074.91-.572 1.778-1.111 1.979-1.217 1.873-1.133 1.714-1.387-.063-.105-.17-.2-.233-.19zm8.684.023c-.292-.002-.92.443-2.8 1.978-.081.193-.088.326-.051.412.024.059.068.1.129.13.06.03.138.048.224.055.171.015.373-.012.536-.044l.11-.025a.386.386 0 01.144-.118c.116-.064.603-.508 1.09-.984.857-.868 1.058-1.26.709-1.387a.24.24 0 00-.09-.017zm2.196.603c-.257.007-.72.305-1.513.938-.398.323-.65.497-.785.533l-.524.414c-.197.36-.226.583-.174.706a.25.25 0 00.138.134.644.644 0 00.24.045 2.18 2.18 0 00.58-.085 3.466 3.466 0 00.291-.092l.029-.012.053-.028c.1-.129.33-.372.618-.652.91-.878 1.375-1.502 1.28-1.735-.043-.113-.117-.17-.233-.166zm-2.424 1.08c-.074.008-.24.136-.539.398-.432.382-.903.602-1.066.504a3.97 3.97 0 01-.114.024c-.166.033-.373.06-.558.045a.708.708 0 01-.252-.063.337.337 0 01-.168-.17c-.037-.09-.037-.202.005-.345l-.65.534-1.471 1.217V15.867l4.82-3.797a.41.41 0 01.016-.123c.037-.134.035-.202-.023-.196zm2.074.639c-.073 0-.195.103-.39.31-.265.283-.682.557-.903.613l-.034.018a2.191 2.191 0 01-.11.042c-.06.02-.138.044-.228.068-.18.049-.404.094-.604.089a.732.732 0 01-.275-.054.344.344 0 01-.184-.18c-.058-.139-.035-.334.092-.611L7.61 16.033v1.205h1.868l3.962-3.112c.103-.114.258-.27.467-.465.56-.519.687-.698.687-.963 0-.206-.023-.31-.096-.31zm.943 1.95l-.339.338c-.19.18-.529.402-.761.497l-.046.02-.003.005-.01.01c-.009.007-.013.008-.02.011a3.432 3.432 0 01-.282.093 3.058 3.058 0 01-.65.115 1.035 1.035 0 01-.31-.027.364.364 0 01-.218-.144c-.048-.074-.062-.173-.035-.295a1.11 1.11 0 01.095-.25l-3.197 2.526h4.252l.508-.582c.698-.814 1.016-1.396 1.016-1.894z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/stylelint.svg b/assets/lib/simple-icons/icons/stylelint.svg
new file mode 100644
index 00000000..69306540
--- /dev/null
+++ b/assets/lib/simple-icons/icons/stylelint.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>stylelint</title><path d="M3.415.549L0 3.712 2.242 5.65.547 7.483l11.176 15.909h.114c-2.625-9.386-2.55-9.428-4.446-16.12l-.456.263c-.248.143-.451.026-.451-.26V4.084C5.98 2.321 5.586.958 5.47.549zm15.115 0c-.116.41-.51 1.772-1.014 3.535v3.191c0 .286-.203.403-.45.26l-.457-.264c-1.897 6.693-1.821 6.735-4.446 16.12-.017.07.06.09.114 0L23.453 7.484 21.757 5.65 24 3.712 20.585.549zm-11.496.75c-.118.007-.2.105-.2.271v5.127c0 .242.172.34.38.22l3.068-1.772a.336.336 0 01-.086-.222V3.287c0-.067.021-.129.056-.182L7.215 1.35a.333.333 0 00-.18-.051zm9.939 0a.331.331 0 00-.18.052l-3.038 1.753a.33.33 0 01.057.183v1.636a.335.335 0 01-.088.223l3.068 1.77c.21.122.38.023.38-.218V1.57c0-.166-.08-.264-.199-.27zm-6.35 1.863c-.101 0-.183.056-.183.125v1.636c0 .069.082.125.183.125h2.761c.101 0 .184-.056.184-.125V3.287c0-.07-.083-.125-.184-.125zm1.294 3.642a.829.829 0 00-.83.83.829.829 0 00.83.828.829.829 0 00.829-.829.829.829 0 00-.83-.829zm-.01 4.93a.829.829 0 00-.82.829.829.829 0 00.83.829.829.829 0 00.828-.83.829.829 0 00-.829-.828.829.829 0 00-.009 0zm.01 4.93a.829.829 0 00-.83.828.829.829 0 00.83.83.829.829 0 00.829-.83.829.829 0 00-.83-.829z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/styleshare.svg b/assets/lib/simple-icons/icons/styleshare.svg
index 715df271..625491f6 100644
--- a/assets/lib/simple-icons/icons/styleshare.svg
+++ b/assets/lib/simple-icons/icons/styleshare.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>StyleShare icon</title><path d="M14.752 7.22a2.04 2.04 0 0 0-2.049 2.048c0 .455.146.89.414 1.241l2.628 3.662c.31.537.124 1.242-.414 1.572-.538.311-1.241.125-1.572-.414a1.154 1.154 0 0 1 .372-1.551l.042-.021c.206-.145.269-.414.124-.621a.467.467 0 0 0-.373-.207.395.395 0 0 0-.207.063l-.041.021c-.951.6-1.262 1.861-.662 2.813.601.953 1.862 1.264 2.813.662.952-.6 1.263-1.861.662-2.813-.041-.063-.082-.104-.104-.166l-2.627-3.683a1.095 1.095 0 0 1-.145-.58c0-.641.517-1.138 1.138-1.138.62 0 1.138.517 1.138 1.138 0 .394-.207.745-.538.973-.021 0-.021.021-.041.021-.207.145-.27.414-.124.621.082.124.228.186.372.207a.4.4 0 0 0 .207-.062l.041-.021c.952-.6 1.263-1.862.662-2.814a2.027 2.027 0 0 0-1.716-.951zM14.752 15.311a.578.578 0 0 0 .579-.58.578.578 0 1 0-1.158 0c0 .332.268.58.579.58zM14.752 8.689a.578.578 0 0 0-.579.58.578.578 0 1 0 1.158 0c-.02-.331-.268-.58-.579-.58zM12 0C5.379 0 0 5.379 0 12c0 6.622 5.379 12 12 12s12-5.379 12-12S18.621 0 12 0zM9.269 17.357a2.613 2.613 0 0 1-2.627-2.605 2.62 2.62 0 0 1 1.593-2.421L7.138 10.8c-.848-1.18-.579-2.814.579-3.642s2.814-.58 3.641.579c.828 1.159.58 2.814-.579 3.642a2.58 2.58 0 0 1-.517.29l1.138 1.615a2.599 2.599 0 0 1-.703 3.619 2.49 2.49 0 0 1-1.428.454zm7.655-4.074c.808 1.199.497 2.813-.703 3.619s-2.814.498-3.621-.703a2.601 2.601 0 0 1 .704-3.621c.145-.104.289-.165.435-.248l-1.117-1.531a2.633 2.633 0 0 1 .579-3.662 2.634 2.634 0 0 1 3.662.58 2.635 2.635 0 0 1-.579 3.662 2.56 2.56 0 0 1-.518.29l1.158 1.614zM8.255 9.827a1.099 1.099 0 0 1-.145-.579c0-.641.517-1.138 1.138-1.138.642 0 1.138.517 1.138 1.138 0 .394-.207.766-.538.973l-.041.021c-.207.145-.269.414-.125.621.083.124.228.186.373.207a.403.403 0 0 0 .207-.062l.041-.021a2.055 2.055 0 0 0 .683-2.814 2.055 2.055 0 0 0-2.814-.684 2.069 2.069 0 0 0-.682 2.814c.042.063.083.125.124.166l2.627 3.663c.104.166.145.373.145.578 0 .643-.497 1.139-1.138 1.16a1.153 1.153 0 0 1-1.158-1.139c0-.393.207-.766.538-.973l.042-.02c.207-.146.269-.414.124-.621a.467.467 0 0 0-.373-.207.393.393 0 0 0-.207.063l-.042.021c-.952.599-1.262 1.863-.662 2.814s1.862 1.262 2.814.662c.6-.373.972-1.035.972-1.738 0-.455-.145-.889-.414-1.242L8.255 9.827zM9.269 15.311c.31 0 .579-.248.579-.58a.58.58 0 0 0-1.159 0c0 .332.249.58.58.58zM9.269 8.689a.575.575 0 0 0-.58.559c0 .311.249.58.559.58.311 0 .58-.249.58-.559a.562.562 0 0 0-.559-.58z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>StyleShare</title><path d="M14.752 7.22a2.04 2.04 0 0 0-2.049 2.048c0 .455.146.89.414 1.241l2.628 3.662c.31.537.124 1.242-.414 1.572-.538.311-1.241.125-1.572-.414a1.154 1.154 0 0 1 .372-1.551l.042-.021c.206-.145.269-.414.124-.621a.467.467 0 0 0-.373-.207.395.395 0 0 0-.207.063l-.041.021c-.951.6-1.262 1.861-.662 2.813.601.953 1.862 1.264 2.813.662.952-.6 1.263-1.861.662-2.813-.041-.063-.082-.104-.104-.166l-2.627-3.683a1.095 1.095 0 0 1-.145-.58c0-.641.517-1.138 1.138-1.138.62 0 1.138.517 1.138 1.138 0 .394-.207.745-.538.973-.021 0-.021.021-.041.021-.207.145-.27.414-.124.621.082.124.228.186.372.207a.4.4 0 0 0 .207-.062l.041-.021c.952-.6 1.263-1.862.662-2.814a2.027 2.027 0 0 0-1.716-.951zM14.752 15.311a.578.578 0 0 0 .579-.58.578.578 0 1 0-1.158 0c0 .332.268.58.579.58zM14.752 8.689a.578.578 0 0 0-.579.58.578.578 0 1 0 1.158 0c-.02-.331-.268-.58-.579-.58zM12 0C5.379 0 0 5.379 0 12c0 6.622 5.379 12 12 12s12-5.379 12-12S18.621 0 12 0zM9.269 17.357a2.613 2.613 0 0 1-2.627-2.605 2.62 2.62 0 0 1 1.593-2.421L7.138 10.8c-.848-1.18-.579-2.814.579-3.642s2.814-.58 3.641.579c.828 1.159.58 2.814-.579 3.642a2.58 2.58 0 0 1-.517.29l1.138 1.615a2.599 2.599 0 0 1-.703 3.619 2.49 2.49 0 0 1-1.428.454zm7.655-4.074c.808 1.199.497 2.813-.703 3.619s-2.814.498-3.621-.703a2.601 2.601 0 0 1 .704-3.621c.145-.104.289-.165.435-.248l-1.117-1.531a2.633 2.633 0 0 1 .579-3.662 2.634 2.634 0 0 1 3.662.58 2.635 2.635 0 0 1-.579 3.662 2.56 2.56 0 0 1-.518.29l1.158 1.614zM8.255 9.827a1.099 1.099 0 0 1-.145-.579c0-.641.517-1.138 1.138-1.138.642 0 1.138.517 1.138 1.138 0 .394-.207.766-.538.973l-.041.021c-.207.145-.269.414-.125.621.083.124.228.186.373.207a.403.403 0 0 0 .207-.062l.041-.021a2.055 2.055 0 0 0 .683-2.814 2.055 2.055 0 0 0-2.814-.684 2.069 2.069 0 0 0-.682 2.814c.042.063.083.125.124.166l2.627 3.663c.104.166.145.373.145.578 0 .643-.497 1.139-1.138 1.16a1.153 1.153 0 0 1-1.158-1.139c0-.393.207-.766.538-.973l.042-.02c.207-.146.269-.414.124-.621a.467.467 0 0 0-.373-.207.393.393 0 0 0-.207.063l-.042.021c-.952.599-1.262 1.863-.662 2.814s1.862 1.262 2.814.662c.6-.373.972-1.035.972-1.738 0-.455-.145-.889-.414-1.242L8.255 9.827zM9.269 15.311c.31 0 .579-.248.579-.58a.58.58 0 0 0-1.159 0c0 .332.249.58.58.58zM9.269 8.689a.575.575 0 0 0-.58.559c0 .311.249.58.559.58.311 0 .58-.249.58-.559a.562.562 0 0 0-.559-.58z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/stylus.svg b/assets/lib/simple-icons/icons/stylus.svg
index 30c8b54f..062da315 100644
--- a/assets/lib/simple-icons/icons/stylus.svg
+++ b/assets/lib/simple-icons/icons/stylus.svg
@@ -1 +1 @@
-<svg viewBox="0 0 24 24" role="img" xmlns="http://www.w3.org/2000/svg"><title>Stylus icon</title><path d="M13.672 8.86c-.446-.354-1.698.239-2.052 1.118-.445 1.117-1.105 2.747-1.752 3.461-.683.751-.751.171-.683-.262.158-1.02 1.153-3.382 1.697-4.048-.202-.299-1.52-.256-2.436 1.166-.342.537-1.123 2.326-1.99 3.736-.19.305-.428.092-.244-.622.207-.825.818-3.089 1.605-4.872 2.064-.409 4.255-.696 5.934-.702.226-.061.378-.263 0-.275-1.447-.049-3.62.122-5.653.379.391-.782.812-1.404 1.239-1.667-.464-.293-1.404-.177-1.941.617a10.55 10.55 0 0 0-.702 1.245c-1.49.232-2.766.494-3.413.739-.671.256-.598 1.068-.189.915.849-.317 1.996-.647 3.272-.94-.812 1.832-1.447 3.993-1.599 4.872-.379 2.137.946 2.124 1.593 1.282.702-.922 2.167-4.164 2.393-4.505.067-.116.159-.055.11.048-1.636 3.266-1.496 4.53-.171 4.249.598-.128 1.63-1.153 1.899-1.685.055-.128.171-.116.146-.061-1.038 2.693-2.356 4.872-3.241 5.556-.806.616-1.405-.721 1.446-2.638.422-.286.226-.677-.25-.543-1.471.232-5.683 1.569-7.533 2.851-.141.098-.269.177-.263.379.006.116.208.073.306.012 2.393-1.435 4.352-1.996 6.599-2.467.03.013.067.019.097.007.104-.025.098.03.031.073a3.992 3.992 0 0 1-.342.177c-1.514.592-2.43 1.898-2.106 2.564.275.574 1.758.366 2.46-.012 1.722-.934 2.973-2.766 3.828-5.293.745-2.241 1.685-4.78 1.905-4.854zm-9.976 7.235c.623-.745.696-1.514.214-2.943-.305-.903-.812-1.599-.44-2.161.397-.598 1.24-.018.538.781l.14.098c.843.098 1.258-1.056.629-1.386-1.661-.867-3.114.8-2.473 2.729.275.818.66 1.685.348 2.375-.268.592-.787.94-1.135.952-.727.037-.244-1.63.592-2.045.073-.036.177-.085.079-.207-1.031-.116-1.636.36-1.984 1.025-1.013 1.935 1.923 2.65 3.492.782zm19.981-2.064c-2.802-.366-8.845.122-11.513.831-.794.207-.574.628-.171.549.006 0 .177-.043.183-.043 2.192-.427 7.509-.8 10.61-.207.373.067 1.49-1.05.891-1.13zm-9.224-.329c.781-.391 1.941-2.809 2.704-4.133.055-.098.153-.019.098.048-1.929 3.321-1.111 3.706-.348 3.657 1.02-.061 1.96-1.526 2.167-1.856.086-.128.135-.024.086.068-.049.152-.226.421-.391.787-.232.519.012.72.214.812.317.153 1.184.055 1.318-.476-.866-.018 1.209-4.109 1.423-4.359-.58-.336-1.477.031-1.887.836-.872 1.728-1.605 3.12-2.063 3.144-.891.049 1.026-3.852 1.337-3.974-.189-.275-1.404-.159-2.082.891-.244.379-1.733 3.016-2.1 3.45-.647.769-.696.11-.513-.66.061-.262.165-.598.3-.97.427-.965.885-1.27 1.166-1.582 1.886-2.093 2.967-3.791 2.539-4.456-.378-.592-1.642-.33-2.454.891-1.496 2.241-2.875 5.311-3.052 6.716-.171 1.404.848 1.507 1.538 1.166zm7.375-3.297c.238.586.598 1.166.384 1.679-.177.439-.409.623-.665.665-.36.061-.263-1.068.354-1.404.055-.03.134-.177.061-.262-.781-.043-1.221.329-1.459.824-.69 1.447 1.563 1.843 2.668.421.439-.568.458-1.129.036-2.149-.268-.647-.677-1.129-.421-1.557.275-.451.934-.061.44.544l.11.061c.641.036.903-.818.415-1.032-1.288-.549-2.491.836-1.923 2.21zm-6.581-.812c.067-.153.11-.195.226-.452.671-1.477 1.514-3.034 2.094-3.76.36-.379.866.134-.049 1.538a14.17 14.17 0 0 1-1.813 2.265v.006c-.171.189-.324.348-.391.44-.049.061-.104.049-.067-.037z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Stylus</title><path d="M13.671 8.861c-.445-.354-1.697.239-2.05 1.118-.446 1.116-1.105 2.746-1.752 3.46-.683.75-.751.17-.683-.262.158-1.02 1.153-3.381 1.696-4.047-.202-.3-1.52-.256-2.435 1.166-.342.536-1.122 2.325-1.99 3.734-.19.305-.427.092-.243-.621.207-.825.818-3.089 1.604-4.871 2.064-.409 4.254-.696 5.933-.702.226-.06.377-.263 0-.275-1.447-.049-3.62.122-5.652.38.391-.782.812-1.404 1.239-1.667-.464-.293-1.404-.177-1.94.617a10.547 10.547 0 00-.702 1.244c-1.49.232-2.765.494-3.412.739-.671.256-.598 1.068-.19.915.85-.317 1.996-.647 3.272-.94-.812 1.831-1.447 3.992-1.599 4.87-.379 2.137.946 2.124 1.593 1.282.702-.922 2.166-4.163 2.392-4.504.067-.116.16-.055.11.048-1.635 3.265-1.496 4.529-.17 4.248.597-.128 1.629-1.153 1.897-1.684.055-.128.171-.116.146-.061-1.037 2.692-2.355 4.87-3.24 5.554-.805.616-1.404-.72 1.446-2.637.422-.286.226-.677-.25-.543-1.47.232-5.681 1.568-7.53 2.85-.142.098-.27.177-.264.379.006.116.208.073.306.012 2.393-1.435 4.351-1.995 6.597-2.466.03.013.067.019.097.007.104-.025.098.03.031.073a3.99 3.99 0 01-.342.177c-1.513.591-2.429 1.897-2.105 2.563.275.574 1.758.366 2.46-.012 1.72-.934 2.971-2.765 3.826-5.292.745-2.24 1.685-4.778 1.904-4.852zM3.7 16.094c.623-.745.696-1.514.214-2.942-.305-.903-.812-1.599-.44-2.16.397-.598 1.24-.019.538.78l.14.098c.842.098 1.257-1.056.628-1.386-1.66-.866-3.113.8-2.472 2.729.275.817.66 1.684.348 2.374-.268.592-.787.94-1.135.952-.726.037-.244-1.63.592-2.045.073-.036.177-.085.08-.207-1.032-.116-1.636.36-1.984 1.025-1.013 1.934 1.922 2.649 3.49.782zm19.974-2.064c-2.8-.366-8.842.122-11.509.831-.794.207-.574.628-.171.549.006 0 .177-.043.183-.043 2.191-.427 7.507-.8 10.607-.207.372.067 1.49-1.05.89-1.13zm-9.22-.329c.78-.39 1.94-2.808 2.702-4.131.055-.098.153-.02.098.048-1.928 3.32-1.11 3.705-.348 3.656 1.02-.061 1.96-1.526 2.167-1.856.086-.128.135-.024.086.068-.05.152-.226.421-.391.787-.232.519.012.72.214.812.317.153 1.183.055 1.317-.476-.865-.018 1.209-4.108 1.423-4.358-.58-.336-1.477.031-1.886.836-.872 1.727-1.605 3.119-2.063 3.143-.89.049 1.026-3.85 1.337-3.973-.19-.275-1.404-.159-2.082.89-.244.38-1.732 3.016-2.099 3.45-.647.769-.696.11-.513-.66.061-.262.165-.598.3-.97.427-.964.885-1.27 1.166-1.581 1.885-2.093 2.966-3.79 2.538-4.455-.378-.592-1.642-.33-2.453.89-1.496 2.241-2.874 5.31-3.051 6.715-.171 1.403.847 1.506 1.537 1.165zm7.372-3.296c.238.586.598 1.166.384 1.679-.177.439-.41.623-.665.665-.36.06-.263-1.068.354-1.404.055-.03.134-.177.06-.262-.78-.043-1.22.33-1.458.824-.69 1.447 1.563 1.842 2.667.42.44-.567.458-1.128.036-2.147-.267-.647-.676-1.13-.42-1.557.275-.45.933-.061.44.544l.11.06c.64.037.902-.817.414-1.03-1.287-.55-2.49.835-1.922 2.208zm-6.579-.811c.067-.153.11-.195.226-.452.67-1.477 1.514-3.033 2.093-3.759.36-.379.866.134-.049 1.538a14.165 14.165 0 01-1.812 2.264v.006c-.171.189-.324.348-.391.44-.049.06-.104.049-.067-.037z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/subaru.svg b/assets/lib/simple-icons/icons/subaru.svg
index 262aaf84..d1e300d7 100644
--- a/assets/lib/simple-icons/icons/subaru.svg
+++ b/assets/lib/simple-icons/icons/subaru.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Subaru icon</title><path d="M12 4.983c3.004 0 6.224.612 8.786 2.239C22.451 8.286 24 9.9 24 12.002c0 2.456-2.097 4.242-4.106 5.287-2.391 1.238-5.216 1.728-7.894 1.728-3.003 0-6.217-.605-8.78-2.238C1.556 15.714 0 14.101 0 12.003 0 9.536 2.092 7.757 4.106 6.71 6.504 5.474 9.323 4.983 12 4.983zm-.025.746c-2.793 0-5.802.523-8.225 1.983-1.524.912-3.03 2.347-3.03 4.253 0 2.239 2.04 3.806 3.864 4.706 2.258 1.102 4.897 1.53 7.391 1.53 2.798 0 5.809-.523 8.232-1.983 1.517-.918 3.029-2.346 3.029-4.253 0-2.243-2.035-3.813-3.864-4.705-2.258-1.104-4.898-1.53-7.397-1.53zm-10.54 4.686l4.597-.784 1.384-3.003L8.794 9.63l4.596.784-4.596.792-1.378 3.01-1.384-3.01zm10.106 2.289l2.028-.356.605-1.359.606 1.359 2.028.356-2.028.35-.606 1.36-.605-1.36zm4.196-3.621l2.028-.35.605-1.365.606 1.364 2.028.35-2.028.357-.606 1.36-.606-1.36zM13.57 15.51l2.02-.35.607-1.365.612 1.365 2.027.35-2.027.357-.612 1.36-.606-1.36zm-6.23.491l2.028-.35.612-1.366.605 1.366 2.028.35-2.028.357-.605 1.359-.612-1.359zm10.196-3.353l2.022-.357.605-1.359.612 1.359 2.028.357-2.028.35-.612 1.357-.606-1.357Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Subaru</title><path d="M12 4.983c3.004 0 6.224.612 8.786 2.239C22.451 8.286 24 9.9 24 12.002c0 2.456-2.097 4.242-4.106 5.287-2.391 1.238-5.216 1.728-7.894 1.728-3.003 0-6.217-.605-8.78-2.238C1.556 15.714 0 14.101 0 12.003 0 9.536 2.092 7.757 4.106 6.71 6.504 5.474 9.323 4.983 12 4.983zm-.025.746c-2.793 0-5.802.523-8.225 1.983-1.524.912-3.03 2.347-3.03 4.253 0 2.239 2.04 3.806 3.864 4.706 2.258 1.102 4.897 1.53 7.391 1.53 2.798 0 5.809-.523 8.232-1.983 1.517-.918 3.029-2.346 3.029-4.253 0-2.243-2.035-3.813-3.864-4.705-2.258-1.104-4.898-1.53-7.397-1.53zm-10.54 4.686l4.597-.784 1.384-3.003L8.794 9.63l4.596.784-4.596.792-1.378 3.01-1.384-3.01zm10.106 2.289l2.028-.356.605-1.359.606 1.359 2.028.356-2.028.35-.606 1.36-.605-1.36zm4.196-3.621l2.028-.35.605-1.365.606 1.364 2.028.35-2.028.357-.606 1.36-.606-1.36zM13.57 15.51l2.02-.35.607-1.365.612 1.365 2.027.35-2.027.357-.612 1.36-.606-1.36zm-6.23.491l2.028-.35.612-1.366.605 1.366 2.028.35-2.028.357-.605 1.359-.612-1.359zm10.196-3.353l2.022-.357.605-1.359.612 1.359 2.028.357-2.028.35-.612 1.357-.606-1.357Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/sublimetext.svg b/assets/lib/simple-icons/icons/sublimetext.svg
index 54a16fa0..8499dc4e 100644
--- a/assets/lib/simple-icons/icons/sublimetext.svg
+++ b/assets/lib/simple-icons/icons/sublimetext.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Sublime Text icon</title><path d="M21.24,12.06a.72.72,0,0,0-.46-.65L13.4,9.07l7.37-2.34a.73.73,0,0,0,.47-.66V.38A.35.35,0,0,0,20.77,0L3.23,5.58a.68.68,0,0,0-.47.64v5.7a.65.65,0,0,0,.46.62l7.46,2.37L3.22,17.27a.73.73,0,0,0-.46.66v5.69a.34.34,0,0,0,.46.36l17.56-5.57a.65.65,0,0,0,.46-.62Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Sublime Text</title><path d="M20.953.004a.397.397 0 0 0-.18.017L3.225 5.585c-.175.055-.323.214-.402.398a.42.42 0 0 0-.06.22v5.726a.42.42 0 0 0 .06.22c.079.183.227.341.402.397l7.454 2.364-7.454 2.363c-.255.08-.463.374-.463.655v5.688c0 .282.208.444.463.363l17.55-5.565c.237-.075.426-.336.452-.6.003-.022.013-.04.013-.065V12.06c0-.281-.208-.575-.463-.656L13.4 9.065l7.375-2.339c.255-.08.462-.375.462-.656V.384c0-.211-.117-.355-.283-.38z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/substack.svg b/assets/lib/simple-icons/icons/substack.svg
new file mode 100644
index 00000000..117bf5cf
--- /dev/null
+++ b/assets/lib/simple-icons/icons/substack.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Substack</title><path d="M22.539 8.242H1.46V5.406h21.08v2.836zM1.46 10.812V24L12 18.11 22.54 24V10.812H1.46zM22.54 0H1.46v2.836h21.08V0z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/subversion.svg b/assets/lib/simple-icons/icons/subversion.svg
index d0874d10..019a77de 100644
--- a/assets/lib/simple-icons/icons/subversion.svg
+++ b/assets/lib/simple-icons/icons/subversion.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Subversion icon</title><path d="M24 20.753v-6.306c-3.285 1.296-7.362 2.556-12.23 3.786-4.534 1.145-8.458 1.97-11.77 2.475v.045h24zM0 14.078v5.133c3.738-.55 7.116-1.206 10.13-1.967 2.962-.748 5.245-1.475 6.847-2.18 1.602-.703 2.34-1.297 2.22-1.78-.107-.42-.846-.635-2.217-.645-.703.01-1.67.06-2.904.15-1.236.09-2.774.234-4.61.426-2.85.304-5.216.537-7.1.694-.896.075-1.685.132-2.366.17zm1.035 2.95c.06 0 .114.025.16.07.046.046.07.103.07.166 0 .066-.024.12-.07.168-.047.045-.104.066-.164.066-.032 0-.064-.006-.092-.018-.03-.012-.054-.03-.075-.05-.023-.014-.04-.044-.05-.074 0-.015-.016-.045-.016-.09 0-.06.03-.12.075-.165s.105-.06.18-.06zm.81 0c.063 0 .117.025.165.07.045.046.066.103.066.166 0 .066-.022.12-.067.168-.06.045-.106.066-.18.066-.03 0-.06-.006-.09-.018s-.06-.03-.076-.05c-.03-.014-.045-.044-.06-.074-.015-.015-.015-.045-.015-.09 0-.06.014-.12.06-.165s.104-.06.164-.06zm-.81-1.51c.06 0 .114.022.16.07.046.045.07.1.07.165 0 .064-.024.12-.07.165s-.1.07-.164.07c-.065 0-.122-.024-.167-.07-.045-.045-.07-.102-.07-.165 0-.067.016-.123.06-.168s.106-.068.166-.068zm.81 0c.063 0 .117.022.165.07.045.045.066.1.066.165 0 .064-.022.12-.067.165-.06.045-.106.07-.18.07s-.12-.024-.166-.07c-.045-.045-.075-.102-.075-.165 0-.067.014-.123.06-.168s.104-.068.164-.068zM24 4.597V9.41c-1.635.1-3.68.277-6.138.534-2.49.27-4.52.48-6.093.615-1.576.15-2.713.226-3.41.24-1.363.03-2.09-.15-2.195-.554-.105-.45.705-1.05 2.445-1.77 1.74-.735 4.05-1.47 6.9-2.19 2.505-.63 5.34-1.185 8.49-1.65zm-.855-1.35c-3.255.605-6.627 1.35-10.114 2.23C7.587 6.852 3.244 8.22 0 9.573V3.248h23.146z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Subversion</title><path d="M24 20.753v-6.306c-3.285 1.296-7.362 2.556-12.23 3.786-4.534 1.145-8.458 1.97-11.77 2.475v.045h24zM0 14.078v5.133c3.738-.55 7.116-1.206 10.13-1.967 2.962-.748 5.245-1.475 6.847-2.18 1.602-.703 2.34-1.297 2.22-1.78-.107-.42-.846-.635-2.217-.645-.703.01-1.67.06-2.904.15-1.236.09-2.774.234-4.61.426-2.85.304-5.216.537-7.1.694-.896.075-1.685.132-2.366.17zm1.035 2.95c.06 0 .114.025.16.07.046.046.07.103.07.166 0 .066-.024.12-.07.168-.047.045-.104.066-.164.066-.032 0-.064-.006-.092-.018-.03-.012-.054-.03-.075-.05-.023-.014-.04-.044-.05-.074 0-.015-.016-.045-.016-.09 0-.06.03-.12.075-.165s.105-.06.18-.06zm.81 0c.063 0 .117.025.165.07.045.046.066.103.066.166 0 .066-.022.12-.067.168-.06.045-.106.066-.18.066-.03 0-.06-.006-.09-.018s-.06-.03-.076-.05c-.03-.014-.045-.044-.06-.074-.015-.015-.015-.045-.015-.09 0-.06.014-.12.06-.165s.104-.06.164-.06zm-.81-1.51c.06 0 .114.022.16.07.046.045.07.1.07.165 0 .064-.024.12-.07.165s-.1.07-.164.07c-.065 0-.122-.024-.167-.07-.045-.045-.07-.102-.07-.165 0-.067.016-.123.06-.168s.106-.068.166-.068zm.81 0c.063 0 .117.022.165.07.045.045.066.1.066.165 0 .064-.022.12-.067.165-.06.045-.106.07-.18.07s-.12-.024-.166-.07c-.045-.045-.075-.102-.075-.165 0-.067.014-.123.06-.168s.104-.068.164-.068zM24 4.597V9.41c-1.635.1-3.68.277-6.138.534-2.49.27-4.52.48-6.093.615-1.576.15-2.713.226-3.41.24-1.363.03-2.09-.15-2.195-.554-.105-.45.705-1.05 2.445-1.77 1.74-.735 4.05-1.47 6.9-2.19 2.505-.63 5.34-1.185 8.49-1.65zm-.855-1.35c-3.255.605-6.627 1.35-10.114 2.23C7.587 6.852 3.244 8.22 0 9.573V3.248h23.146z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/suckless.svg b/assets/lib/simple-icons/icons/suckless.svg
new file mode 100644
index 00000000..4c8d50bf
--- /dev/null
+++ b/assets/lib/simple-icons/icons/suckless.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>suckless</title><path d="M0 4h24v4H4v2h20v10H0v-4h20v-2H0z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/sumologic.svg b/assets/lib/simple-icons/icons/sumologic.svg
new file mode 100644
index 00000000..a0b04f1a
--- /dev/null
+++ b/assets/lib/simple-icons/icons/sumologic.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Sumo Logic</title><path d="M4.922 10.756v2.513h-.586v-.266c-.134.216-.379.341-.737.341-.595 0-.89-.308-.89-.799v-1.79h.64v1.62c0 .262.142.416.417.416.32 0 .516-.184.516-.52v-1.515zm4.161.757v1.756h-.64v-1.564c0-.3-.121-.483-.4-.483s-.441.208-.441.5v1.547h-.64v-1.564c0-.32-.134-.483-.4-.483-.283 0-.441.208-.441.5v1.547H5.48v-2.513h.595v.279c.146-.242.387-.362.716-.362.32 0 .561.133.699.37.17-.245.424-.37.753-.37.536 0 .84.32.84.84zm5.143 1.756h-.64V9.774h.64zm6.949 0h-.641v-2.513h.64zm-.654-2.892h.662v-.611h-.662zm3.055 2.035c-.263.279-.441.387-.683.387-.287 0-.49-.167-.582-.425v-.732c.095-.262.3-.428.59-.428.213 0 .383.074.654.328l.4-.395c-.321-.35-.633-.478-1.053-.478-.587 0-1.04.307-1.22.823v1.032c.175.516.62.82 1.203.82.453 0 .765-.15 1.115-.583zm-22.257-.69c-.175-.038-.3-.072-.37-.088-.088-.025-.154-.058-.188-.104v-.192c.059-.091.2-.15.396-.15.27 0 .457.063.753.296l.345-.416c-.35-.291-.649-.395-1.082-.395-.499 0-.844.204-.982.495v.632c.109.212.358.333.858.441.178.042.3.071.37.084.091.029.175.066.22.133v.22c-.062.1-.212.154-.407.154a.977.977 0 01-.408-.079 1.854 1.854 0 01-.454-.295L0 12.87c.4.353.736.474 1.215.474.512 0 .874-.196 1.011-.508V12.2c-.116-.237-.395-.362-.907-.479zm9.445-1.053c-.578 0-1.032.312-1.215.81v1.058c.183.5.641.811 1.215.811.574 0 1.028-.312 1.211-.807v-1.065c-.187-.495-.64-.807-1.21-.807zm.591 1.71c-.1.266-.312.424-.595.424s-.495-.158-.6-.424v-.741c.1-.266.313-.429.6-.429s.491.163.59.429zm4.585-1.71c-.578 0-1.032.312-1.219.81v1.058c.187.5.641.811 1.22.811.578 0 1.027-.312 1.21-.807v-1.065c-.183-.495-.636-.807-1.21-.807zm.591 1.71c-.1.266-.312.424-.59.424a.62.62 0 01-.6-.424v-.741c.1-.266.312-.429.6-.429.286 0 .49.163.59.429zm2.85-1.623v.279c-.162-.242-.416-.362-.765-.362-.475 0-.857.29-1.024.753v1.036c.163.462.545.749 1.024.749.32 0 .562-.108.732-.32v.2c0 .415-.241.61-.616.61-.278 0-.507-.082-.873-.299l-.313.462c.354.237.77.366 1.195.37.707 0 1.227-.378 1.227-1.086v-2.392zm-.079 1.527c-.095.237-.295.387-.545.387a.574.574 0 01-.545-.387v-.687a.572.572 0 01.545-.382c.254 0 .45.145.545.382z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/supabase.svg b/assets/lib/simple-icons/icons/supabase.svg
new file mode 100644
index 00000000..e986ff16
--- /dev/null
+++ b/assets/lib/simple-icons/icons/supabase.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Supabase</title><path d="M21.362 9.354H12V.396a.396.396 0 0 0-.716-.233L2.203 12.424l-.401.562a1.04 1.04 0 0 0 .836 1.659H12v8.959a.396.396 0 0 0 .716.233l9.081-12.261.401-.562a1.04 1.04 0 0 0-.836-1.66z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/supermicro.svg b/assets/lib/simple-icons/icons/supermicro.svg
new file mode 100644
index 00000000..f87e0d14
--- /dev/null
+++ b/assets/lib/simple-icons/icons/supermicro.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Supermicro</title><path d="M13.937 5.842c-.489-.007-.988.002-1.494.03-3.99.218-7.831 1.51-10.236 3.443-.469.379-1.18 1.133-1.453 1.543-.539.8-.754 1.444-.754 2.252 0 1.55 1.026 2.85 3.006 3.798 1.218.586 2.67.97 4.392 1.164 1.203.133 3.198.114 4.568-.046 3.963-.465 7.517-1.921 9.52-3.893.242-.242.77-.851.789-.914 0-.004.105.031.234.074.554.188 1.148-.078 1.398-.629.133-.28.121-.732-.023-1.025a1.149 1.149 0 0 0-.621-.57l-.188-.067v-.199c0-.855-.422-1.727-1.203-2.484-1.568-1.52-4.513-2.421-7.935-2.477Zm-.156.395c.638-.008 1.257.013 1.836.064 2.276.2 4.213.782 5.587 1.684.504.332 1.176 1.002 1.418 1.416.234.402.375.848.403 1.27l.02.331-.24.004a1.076 1.076 0 0 0-.823.41c-.196.25-.254.422-.25.778 0 .336.082.556.289.795l.129.144-.348.352c-.683.69-1.46 1.242-2.482 1.75-2.585 1.296-6.064 1.974-9.258 1.806-2.178-.113-3.916-.502-5.365-1.197-1.527-.73-2.478-1.723-2.72-2.82-.613-2.776 3.139-5.614 8.593-6.508a21.81 21.81 0 0 1 3.21-.28ZM23 7.784l-.01.002c-.03 0-.059 0-.088.01-.04.007-.079.026-.117.042a.44.44 0 0 0-.138.125c-.016.027-.035.052-.043.082a.35.35 0 0 0-.032.122.468.468 0 0 0 .016.152.436.436 0 0 0 .174.228.483.483 0 0 0 .187.067.456.456 0 0 0 .248-.047.408.408 0 0 0 .215-.281c.005-.035.013-.069.008-.104.001-.026-.006-.054-.01-.08a.435.435 0 0 0-.191-.26.485.485 0 0 0-.21-.058H23zm-.031.086h.06a.292.292 0 0 1 .112.033c.02.008.037.02.054.035.023.02.048.041.063.068a.3.3 0 0 1 .037.075c.012.027.013.057.02.086-.002.031.004.064-.004.095-.003.033-.018.062-.032.092-.006.019-.019.034-.029.05a.297.297 0 0 1-.076.075c-.017.015-.04.02-.059.03-.022.006-.044.016-.068.017-.006 0-.011 0-.018.002-.03 0-.061.004-.091-.002a.297.297 0 0 1-.154-.078.22.22 0 0 1-.044-.047c-.018-.02-.026-.045-.039-.068-.009-.02-.012-.042-.017-.063-.008-.027-.006-.056-.006-.084-.002-.039.01-.077.021-.113.014-.026.024-.054.043-.076.015-.024.039-.04.057-.059a.317.317 0 0 1 .066-.041c.023-.007.045-.018.069-.021a.141.141 0 0 1 .035-.006zm.047.12-.055.003h-.053l-.02.004-.019.002-.015.002-.016.001v.415h.094v-.17l.037.002.035.002.012.003.013.002.012.012.004.008.004.007.002.01.002.008.011.038.006.014.006.014h.104l-.006-.012-.008-.035-.01-.037-.006-.022-.006-.02-.007-.015-.008-.013-.01-.012-.01-.01-.015-.008-.014-.01v-.003l.012-.006.013-.006.012-.006.012-.008.01-.01.007-.013.006-.014.002-.02v-.019l-.002-.013-.002-.014-.008-.014-.008-.013-.01-.012-.01-.01-.015-.006-.015-.008-.018-.004-.018-.005-.029-.002zm-.055.07h.053l.017.005.016.006.014.012.01.01.001.007.004.01v.021l-.006.014-.005.01-.01.006-.01.01-.018.003-.013.008-.04.002h-.04v-.121l.013-.002zM4.203 10.318c-.071.004-.104.024-.104.054 0 .098-.058.102-.285.024a1.043 1.043 0 0 0-.703-.024.83.83 0 0 0-.574.825c0 .406.176.605.887 1.011.175.102.375.245.437.319.192.214.149.445-.094.547-.417.171-.863-.11-.94-.602-.024-.156-.032-.162-.157-.162h-.133v1.17h.133c.097 0 .137-.02.152-.074.02-.075.024-.075.262 0 .718.222 1.32-.048 1.445-.649.102-.48-.117-.775-.875-1.19-.57-.312-.73-.534-.52-.734a.436.436 0 0 1 .454-.117c.261.067.511.41.511.703 0 .055.032.07.137.07h.137V10.32h-.17zm15.046.584-.039.002c-.078 0-.12.023-.136.078-.024.074-.032.074-.149.012-.172-.086-.625-.106-.851-.032-.246.078-.551.364-.684.633-.086.176-.113.29-.125.555-.02.41.078.709.312.963.512.554 1.465.449 1.813-.2l.074-.144-.094-.074-.093-.078-.18.203c-.27.312-.524.379-.852.234-.32-.148-.48-.58-.398-1.088.086-.554.367-.812.797-.734.18.035.387.242.457.46.05.145.074.169.18.18l.125.012-.02-.246c-.061-.704-.058-.739-.137-.736zm-8.394.033v.14c0 .137.002.141.135.141.113 0 .144.02.176.102.023.054.039.45.039.875s-.016.818-.04.873c-.03.082-.062.101-.175.101-.129 0-.135.008-.135.137v.137h1.17v-.133c0-.129-.008-.137-.145-.148l-.148-.012-.012-.403c-.004-.218.004-.396.02-.392.015 0 .203.244.414.545l.379.543h1.523v-.137c0-.125-.012-.137-.11-.137-.19 0-.202-.043-.202-.703l.004-.603.347.779c.465 1.046.43 1.042.863.059l.329-.74.011.552c.004.305 0 .578-.008.606-.011.027-.082.05-.16.05-.129 0-.136.008-.136.137v.137h2.224v-.137c0-.125-.008-.137-.117-.137-.074 0-.129-.027-.156-.074-.043-.082-.055-1.635-.016-1.79.02-.067.055-.087.156-.087.125 0 .133-.008.133-.136v-.137h-1.865l-.34.77c-.187.425-.355.786-.37.802-.017.016-.189-.322-.384-.76l-.355-.793-.395-.011-.39-.012v.14c0 .125.008.137.117.137.094 0 .129.024.156.102.024.054.04.45.04.875s-.016.818-.04.873c-.027.082-.062.101-.164.101a.565.565 0 0 1-.254-.078c-.117-.07-.414-.432-.57-.697-.063-.11-.063-.11.078-.203.195-.129.281-.258.309-.473a.642.642 0 0 0-.329-.648c-.18-.102-.203-.106-.894-.117zm8.55 0v.137c0 .132.008.14.149.152l.145.012v1.912l-.145.012c-.14.011-.148.02-.148.148v.133h1.169v-.133c0-.129-.007-.137-.144-.148l-.149-.012-.011-.41c-.012-.488-.04-.5.453.195l.344.488.378.012.38.012v-.133c0-.125-.012-.137-.149-.156-.172-.032-.293-.149-.594-.575-.187-.265-.199-.29-.136-.33.039-.02.128-.09.199-.148.324-.277.238-.844-.157-1.055-.144-.074-.23-.086-.87-.097zm-14.876.008v.136c0 .13.008.137.133.137.086 0 .14.024.156.063.012.035.024.383.024.777 0 .937.058 1.111.449 1.318.125.067.227.082.508.082.48 0 .677-.101.86-.445.063-.117.079-.252.095-.955l.02-.82.237-.012c.223-.012.243-.004.266.078.04.149.027 1.658-.016 1.764-.027.078-.062.101-.156.101-.11 0-.117.012-.117.137v.137h1.133v-.133c0-.129-.008-.137-.145-.149l-.148-.011-.012-.38-.012-.376.23.002c.403.004.638-.127.766-.443.168-.403-.066-.844-.519-.97-.078-.019-.602-.038-1.164-.038H6.092v.133c0 .128.007.136.148.148l.145.012.011.734c.012.86-.012.947-.281 1.08-.27.129-.543.082-.676-.11-.062-.093-.07-.193-.07-.903v-.801l.148-.012c.137-.012.145-.02.145-.148v-.133h-.566Zm4.295 0v.133c0 .128.008.136.148.148l.145.012.012.933c.011 1.008.011.998-.196.998-.097 0-.11.016-.11.137v.137h1.9l.12-.39.118-.391h-.13c-.1 0-.14.027-.21.136-.156.254-.243.293-.63.293h-.347v-.78h.293c.203 0 .3.017.309.048.011.027.027.096.039.154.02.09.047.11.14.11h.118v-.975h.12c.094 0 .118-.012.098-.063a1.93 1.93 0 0 1-.023-.351v-.29H9.78Zm7.173.275c.035 0 .078.003.135.006l.246.012v1.912h-.254c-.234 0-.253-.008-.277-.098-.043-.152-.039-1.623.004-1.736.026-.073.043-.095.146-.096zm-6.353.03.352.015c.246.008.367.027.406.07a.472.472 0 0 1 .082.184c.023.117.02.129-.074.129-.078 0-.106.023-.125.105a.887.887 0 0 1-.04.157c-.007.035-.105.05-.308.05h-.293v-.355zm2.213.011a.35.35 0 0 1 .148.043c.18.082.27.363.176.543-.05.094-.238.191-.37.191h-.099v-.367c0-.367.012-.402.145-.41zm8.55 0a.35.35 0 0 1 .149.043c.113.05.215.215.215.344 0 .21-.2.39-.434.39-.066 0-.074-.035-.074-.367 0-.367.012-.402.144-.41zm-12.599.035h.133c.102 0 .16.032.238.125.09.11.106.153.09.313-.023.242-.117.344-.312.344h-.149v-.391z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/superuser.svg b/assets/lib/simple-icons/icons/superuser.svg
index f5eb75e6..f3294325 100644
--- a/assets/lib/simple-icons/icons/superuser.svg
+++ b/assets/lib/simple-icons/icons/superuser.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Super User icon</title><path d="M20.863 14.479c-1.48.421-2.489 1.287-2.489 2.716v4.081c0 3.048-2.907 2.714-6.517 2.714h-.555c-.225 0-.359-.084-.359-.28v-1.398c0-.194.12-.279.345-.279h.45c2.16 0 3.675.475 3.675-1.26v-3.917c0-1.199.84-2.88 2.521-3.493.119-.031.135-.085.135-.141s-.03-.139-.135-.195c-1.53-.7-2.521-1.844-2.521-3.217V5.385c0-1.707-1.5-3.412-3.659-3.412h-.451c-.225 0-.33-.084-.33-.279V.301c0-.195.15-.281.375-.281h.556c3.6 0 6.54 2.572 6.54 5.62v3.72c0 1.409 1.004 2.22 2.52 2.744.556.165.869.196.869.646v1.17c.03.256-.239.375-.914.57l-.056-.011zM8.092 23.97h-5.59c-.225 0-.336-.056-.336-.252V.279c0-.164.104-.279.33-.279H8.03c.226 0 .36.084.36.279v1.455c0 .195-.121.252-.346.252H5.572c-.305 0-.42.111-.42.307v19.41c0 .196.115.27.367.27h2.517c.226 0 .363.076.363.255v1.484c.029.166-.084.255-.308.255v.003zm4.875-13.034h-1.485c-.362 0-.642-.281-.642-.59V9.003c0-.335.307-.585.642-.585h1.485c.359 0 .642.277.642.585v1.343c0 .336-.31.588-.645.588l.003.002z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Super User</title><path d="M2.523 0c-.223 0-.336.111-.336.28v23.439c0 .196.113.252.336.252h5.594c.224 0 .335-.084.307-.252v-1.483c0-.167-.14-.252-.363-.252H5.543c-.252 0-.363-.083-.363-.279V2.293c0-.196.112-.307.42-.307h2.488c.224 0 .336-.056.336-.252V.28C8.424.084 8.284 0 8.06 0H2.523zm8.8.02c-.224 0-.364.083-.364.279v1.398c0 .196.112.28.336.28h.447c2.154 0 3.664 1.706 3.664 3.412v4.42c0 1.37.98 2.517 2.518 3.216.112.056.139.14.139.196 0 .056-.027.112-.14.14-1.677.616-2.517 2.294-2.517 3.496v3.916c0 1.735-1.51 1.258-3.664 1.258h-.447c-.224 0-.336.084-.336.28v1.398c0 .196.14.28.363.28h.56c3.609 0 6.516.335 6.516-2.714v-4.082c0-1.426 1.008-2.295 2.49-2.714.672-.196.95-.307.923-.56v-1.173c0-.447-.308-.477-.868-.644-1.51-.532-2.515-1.342-2.515-2.74V5.64c0-3.05-2.937-5.621-6.545-5.621h-.56zm.183 8.396c-.336 0-.645.252-.645.588v1.342c0 .307.281.588.645.588h1.482c.336 0 .643-.253.643-.588V9.004c0-.308-.28-.588-.643-.588h-1.482Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/surveymonkey.svg b/assets/lib/simple-icons/icons/surveymonkey.svg
new file mode 100644
index 00000000..49b56411
--- /dev/null
+++ b/assets/lib/simple-icons/icons/surveymonkey.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>SurveyMonkey</title><path d="M21.1627 13.1843a2.8517 2.8517 0 0 0-.6778.0841c-.8438-3.3181-3.5478-5.8376-6.9172-6.4452a8.3933 8.3933 0 0 0-.4407-.0668c.0259-.8255.0636-1.7791 1.2781-2.6369l-.1918-.4838s-2.3708.7349-2.6391 2.7598c-.1175-.5507-1.2209-1.2403-1.7673-1.3707l-.2717.4384s.7242.3621.9009 1.361c-3.3691.6056-6.0743 3.1229-6.9204 6.4398-1.5194-.376-3.056.5508-3.432 2.0703-.376 1.5194.5508 3.056 2.0703 3.432a2.8346 2.8346 0 0 0 1.7195-.1142 8.6821 8.6821 0 0 0 .9203 1.7123l2.3524-1.5852c-.6381-.8071-1.0206-1.9884-1.0873-3.1736-.07-1.2931.2446-2.5755 1.0701-3.3298 1.7016-1.4483 3.5561-.7877 4.7135.6002h.3114c1.1606-1.388 3.0173-2.0475 4.7135-.6002.8244.7543 1.1401 2.0378 1.0701 3.3298-.0656 1.1853-.4481 2.3664-1.0873 3.1736l2.3524 1.5852a8.6854 8.6854 0 0 0 .9224-1.7123c1.4551.5751 3.1009-.1384 3.676-1.5935s-.1384-3.1009-1.5935-3.676a2.8349 2.8349 0 0 0-1.0448-.1983zM2.7861 16.8482a.8362.8362 0 0 1 0-1.6724.8442.8442 0 0 1 .4688.1444c.0071.4391.0369.8776.0894 1.3136-.1472.1346-.3738.2329-.5582.2144zm18.4273 0a.8361.8361 0 0 1-.5582-.2155 12.679 12.679 0 0 0 .0894-1.3136.8352.8352 0 0 1 1.304.6929c.0078.4574-.3823.8581-.8352.8362z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/suse.svg b/assets/lib/simple-icons/icons/suse.svg
new file mode 100644
index 00000000..a4e474a1
--- /dev/null
+++ b/assets/lib/simple-icons/icons/suse.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>SUSE</title><path d="M22.6691 10.2274a.392.392 0 0 1-.4295 0c-.2108-.14-.2311-.4327-.061-.602a.3828.3828 0 0 1 .5515-.0002c.1698.1695.1492.4622-.061.6022m-1.12.8819c-.5308-.1245-.952-.5457-1.0768-1.0762-.2444-1.0419.6924-1.9787 1.7346-1.7346.5305.1241.952.545 1.0768 1.0759.2451 1.0425-.692 1.98-1.7346 1.7349zm-5.0114 4.374c.0394.1174.0898.2723.2057.3346.0064.0035.012.0066.019.0085.2128.0775.7598.0645.7598.0645h1.006c.086.0013.8419-.001.8228-.0854-.091-.4041-.5584-.4765-.9142-.688-.328-.1955-.6391-.417-.78-.7984-.0737-.1968-.0302-.6508.0965-.8162.0923-.1196.2285-.199.3749-.231.1622-.0347.3305-.0048.4927.0117.2.0203.3974.0565.5968.0813a7.4343 7.4343 0 0 0 1.1613.0596c.6403-.0177 1.2822-.1197 1.8892-.3266.4238-.1423.8413-.3346 1.2016-.6023.4095-.3044.3019-.2758-.1134-.2333-.4971.0508-.9987.0584-1.4974.0289-.4654-.027-.9245-.082-1.3454-.2981-.3314-.1711-.6162-.3425-.879-.6076-.0394-.04-.0639-.1568.0082-.2314.0698-.0724.2178-.0305.2632.0082.4584.3832 1.1422.6987 1.8501.733.3829.019.7553.026 1.1384.0095.1915-.0088.4804-.0076.6724-.0095.099-.0012.3692.0273.4197-.0778.0152-.0304.014-.0657.0127-.1-.0562-1.532-.1695-3.26-1.7727-3.9923-1.1962-.547-2.9895-1.3943-3.747-1.7458-.1755-.0834-.381.0486-.381.2442 0 .5117.026 1.247.0264 1.9162-.3629-.3696-.974-.6029-1.4397-.8169-.5289-.2425-1.0749-.4482-1.6305-.6212-1.1184-.3464-2.2758-.5597-3.44-.6753-1.3203-.1317-2.6628-.0685-3.9628.2-2.141.4438-4.2454 1.4734-5.8429 2.979-.9806.924-1.7501 2.2373-1.8021 3.5703-.0743 1.8867.4543 2.8997 1.4257 3.9439 1.5492 1.664 4.8835 1.8971 6.234-.0762.6076-.8883.7394-2.093.2984-3.075-.441-.9812-1.4546-1.6904-2.5292-1.7266-.834-.0276-1.7225.3965-2.0422 1.1676-.2438.5889-.1051 1.3165.339 1.7736.173.1785.4073.3245.6632.2673.1508-.0336.2768-.147.2997-.3.0336-.2257-.1638-.372-.2854-.5453-.2194-.3127-.175-.7823.0997-1.048.2317-.2244.5749-.2908.8974-.2898.3003.0006.6073.0543.8664.2057.3641.2143.606.6067.6898 1.0213.2499 1.239-.7574 2.2457-2.1232 2.3247-.6987.0413-1.4098-.1422-1.9552-.5813-1.3813-1.111-1.7197-3.3822-.141-4.5946 1.4988-1.1508 3.3908-.8542 4.5064-.2561.8927.4784 1.558 1.2612 2.0622 2.1266.253.4353.4686.8902.6686 1.352.1924.4442.3724.8918.7575 1.2172.2549.2159.5695.2083.9034.2083h1.9064c.259 0 .1959-.1727.0841-.287-.2527-.2584-.6158-.3168-.952-.4092-.7686-.2114-.6902-1.2289-.4775-1.2289.687 0 .7086.0206 1.3105.013.8685-.012 1.1314-.0625 1.8108.1886.3631.1346.712.4895.9397.814.119.171.218.3365.2736.5019Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/suzuki.svg b/assets/lib/simple-icons/icons/suzuki.svg
index afe927a8..ec495157 100644
--- a/assets/lib/simple-icons/icons/suzuki.svg
+++ b/assets/lib/simple-icons/icons/suzuki.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Suzuki icon</title><path d="M17.369 19.995C13.51 22.39 12 24 12 24L.105 15.705s5.003-3.715 9.186-.87l5.61 3.882.683-.453L.106 7.321s2.226-.65 6.524-3.315C10.49 1.609 12 0 12 0l11.895 8.296s-5.003 3.715-9.187.87L9.1 5.281l-.683.454L23.893 16.68s-2.224.649-6.524 3.315Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Suzuki</title><path d="M17.369 19.995C13.51 22.39 12 24 12 24L.105 15.705s5.003-3.715 9.186-.87l5.61 3.882.683-.453L.106 7.321s2.226-.65 6.524-3.315C10.49 1.609 12 0 12 0l11.895 8.296s-5.003 3.715-9.187.87L9.1 5.281l-.683.454L23.893 16.68s-2.224.649-6.524 3.315Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/svelte.svg b/assets/lib/simple-icons/icons/svelte.svg
index ce6a37d0..f6c55e8a 100644
--- a/assets/lib/simple-icons/icons/svelte.svg
+++ b/assets/lib/simple-icons/icons/svelte.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Svelte icon</title><path d="M20.68 3.17a7.3 7.3 0 0 0-9.8-2.1l-5.6 3.56a6.36 6.36 0 0 0-2.89 4.3 6.66 6.66 0 0 0 .67 4.33 6.14 6.14 0 0 0-.95 2.4 6.84 6.84 0 0 0 1.16 5.16 7.33 7.33 0 0 0 9.8 2.12l5.6-3.56a6.36 6.36 0 0 0 2.88-4.3 6.66 6.66 0 0 0-.67-4.32 6.79 6.79 0 0 0-.2-7.59zM10.32 21.13a4.43 4.43 0 0 1-4.76-1.77c-.65-.9-.89-2.01-.7-3.11l.11-.53.1-.33.3.2c.66.5 1.4.86 2.19 1.1l.2.07-.02.2c-.02.28.06.59.22.83.33.47.9.7 1.45.55.12-.04.24-.08.34-.14l5.58-3.56c.28-.18.46-.45.53-.77.06-.33-.02-.67-.2-.94-.33-.46-.9-.67-1.45-.53-.12.04-.25.09-.35.15l-2.11 1.34a4.43 4.43 0 0 1-5.9-1.28 4.1 4.1 0 0 1-.7-3.11A3.85 3.85 0 0 1 6.92 6.9l5.57-3.56c.35-.22.73-.38 1.14-.5 1.8-.47 3.7.24 4.76 1.76a4.12 4.12 0 0 1 .57 3.64l-.1.33-.29-.2a7.42 7.42 0 0 0-2.2-1.1l-.2-.06.02-.2c.02-.29-.06-.6-.22-.84-.33-.47-.9-.67-1.45-.53-.12.04-.24.08-.34.14L8.59 9.37c-.28.19-.46.45-.52.78-.06.32.02.67.2.93.32.47.9.67 1.44.53.13-.04.25-.08.35-.14l2.13-1.36c.35-.23.74-.4 1.14-.51 1.81-.47 3.7.24 4.76 1.77.65.9.9 2.01.72 3.1a3.85 3.85 0 0 1-1.75 2.6l-5.58 3.55a4.9 4.9 0 0 1-1.16.51z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Svelte</title><path d="M10.354 21.125a4.44 4.44 0 0 1-4.765-1.767 4.109 4.109 0 0 1-.703-3.107 3.898 3.898 0 0 1 .134-.522l.105-.321.287.21a7.21 7.21 0 0 0 2.186 1.092l.208.063-.02.208a1.253 1.253 0 0 0 .226.83 1.337 1.337 0 0 0 1.435.533 1.231 1.231 0 0 0 .343-.15l5.59-3.562a1.164 1.164 0 0 0 .524-.778 1.242 1.242 0 0 0-.211-.937 1.338 1.338 0 0 0-1.435-.533 1.23 1.23 0 0 0-.343.15l-2.133 1.36a4.078 4.078 0 0 1-1.135.499 4.44 4.44 0 0 1-4.765-1.766 4.108 4.108 0 0 1-.702-3.108 3.855 3.855 0 0 1 1.742-2.582l5.589-3.563a4.072 4.072 0 0 1 1.135-.499 4.44 4.44 0 0 1 4.765 1.767 4.109 4.109 0 0 1 .703 3.107 3.943 3.943 0 0 1-.134.522l-.105.321-.286-.21a7.204 7.204 0 0 0-2.187-1.093l-.208-.063.02-.207a1.255 1.255 0 0 0-.226-.831 1.337 1.337 0 0 0-1.435-.532 1.231 1.231 0 0 0-.343.15L8.62 9.368a1.162 1.162 0 0 0-.524.778 1.24 1.24 0 0 0 .211.937 1.338 1.338 0 0 0 1.435.533 1.235 1.235 0 0 0 .344-.151l2.132-1.36a4.067 4.067 0 0 1 1.135-.498 4.44 4.44 0 0 1 4.765 1.766 4.108 4.108 0 0 1 .702 3.108 3.857 3.857 0 0 1-1.742 2.583l-5.589 3.562a4.072 4.072 0 0 1-1.135.499m10.358-17.95C18.484-.015 14.082-.96 10.9 1.068L5.31 4.63a6.412 6.412 0 0 0-2.896 4.295 6.753 6.753 0 0 0 .666 4.336 6.43 6.43 0 0 0-.96 2.396 6.833 6.833 0 0 0 1.168 5.167c2.229 3.19 6.63 4.135 9.812 2.108l5.59-3.562a6.41 6.41 0 0 0 2.896-4.295 6.756 6.756 0 0 0-.665-4.336 6.429 6.429 0 0 0 .958-2.396 6.831 6.831 0 0 0-1.167-5.168Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/svg.svg b/assets/lib/simple-icons/icons/svg.svg
index 7fe4377d..1e3fa08c 100644
--- a/assets/lib/simple-icons/icons/svg.svg
+++ b/assets/lib/simple-icons/icons/svg.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>SVG icon</title><path d="M12 0c-1.497 0-2.749.965-3.248 2.17a3.45 3.45 0 00-.238 1.416 3.459 3.459 0 00-1.168-.834 3.508 3.508 0 00-1.463-.256 3.513 3.513 0 00-2.367 1.02c-1.06 1.058-1.263 2.625-.764 3.83.179.432.47.82.82 1.154a3.49 3.49 0 00-1.402.252C.965 9.251 0 10.502 0 12c0 1.497.965 2.749 2.17 3.248.437.181.924.25 1.414.236-.357.338-.65.732-.832 1.17-.499 1.205-.295 2.772.764 3.83 1.058 1.06 2.625 1.263 3.83.764.437-.181.83-.476 1.168-.832-.014.49.057.977.238 1.414C9.251 23.035 10.502 24 12 24c1.497 0 2.749-.965 3.248-2.17a3.45 3.45 0 00.238-1.416c.338.356.73.653 1.168.834 1.205.499 2.772.295 3.83-.764 1.06-1.058 1.263-2.625.764-3.83a3.459 3.459 0 00-.834-1.168 3.45 3.45 0 001.416-.238C23.035 14.749 24 13.498 24 12c0-1.497-.965-2.749-2.17-3.248a3.455 3.455 0 00-1.414-.236c.357-.338.65-.732.832-1.17.499-1.205.295-2.772-.764-3.83a3.513 3.513 0 00-2.367-1.02 3.508 3.508 0 00-1.463.256c-.437.181-.83.475-1.168.832a3.45 3.45 0 00-.238-1.414C14.749.965 13.498 0 12 0zm-.041 1.613a1.902 1.902 0 011.387 3.246v3.893L16.098 6A1.902 1.902 0 1118 7.902l-2.752 2.752h3.893a1.902 1.902 0 110 2.692h-3.893L18 16.098A1.902 1.902 0 1116.098 18l-2.752-2.752v3.893a1.902 1.902 0 11-2.692 0v-3.893L7.902 18A1.902 1.902 0 116 16.098l2.752-2.752H4.859a1.902 1.902 0 110-2.692h3.893L6 7.902A1.902 1.902 0 117.902 6l2.752 2.752V4.859a1.902 1.902 0 011.305-3.246z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>SVG</title><path d="M12 0c-1.497 0-2.749.965-3.248 2.17a3.45 3.45 0 00-.238 1.416 3.459 3.459 0 00-1.168-.834 3.508 3.508 0 00-1.463-.256 3.513 3.513 0 00-2.367 1.02c-1.06 1.058-1.263 2.625-.764 3.83.179.432.47.82.82 1.154a3.49 3.49 0 00-1.402.252C.965 9.251 0 10.502 0 12c0 1.497.965 2.749 2.17 3.248.437.181.924.25 1.414.236-.357.338-.65.732-.832 1.17-.499 1.205-.295 2.772.764 3.83 1.058 1.06 2.625 1.263 3.83.764.437-.181.83-.476 1.168-.832-.014.49.057.977.238 1.414C9.251 23.035 10.502 24 12 24c1.497 0 2.749-.965 3.248-2.17a3.45 3.45 0 00.238-1.416c.338.356.73.653 1.168.834 1.205.499 2.772.295 3.83-.764 1.06-1.058 1.263-2.625.764-3.83a3.459 3.459 0 00-.834-1.168 3.45 3.45 0 001.416-.238C23.035 14.749 24 13.498 24 12c0-1.497-.965-2.749-2.17-3.248a3.455 3.455 0 00-1.414-.236c.357-.338.65-.732.832-1.17.499-1.205.295-2.772-.764-3.83a3.513 3.513 0 00-2.367-1.02 3.508 3.508 0 00-1.463.256c-.437.181-.83.475-1.168.832a3.45 3.45 0 00-.238-1.414C14.749.965 13.498 0 12 0zm-.041 1.613a1.902 1.902 0 011.387 3.246v3.893L16.098 6A1.902 1.902 0 1118 7.902l-2.752 2.752h3.893a1.902 1.902 0 110 2.692h-3.893L18 16.098A1.902 1.902 0 1116.098 18l-2.752-2.752v3.893a1.902 1.902 0 11-2.692 0v-3.893L7.902 18A1.902 1.902 0 116 16.098l2.752-2.752H4.859a1.902 1.902 0 110-2.692h3.893L6 7.902A1.902 1.902 0 117.902 6l2.752 2.752V4.859a1.902 1.902 0 011.305-3.246z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/svgo.svg b/assets/lib/simple-icons/icons/svgo.svg
index 75bb0480..919fb9a7 100644
--- a/assets/lib/simple-icons/icons/svgo.svg
+++ b/assets/lib/simple-icons/icons/svgo.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>SVGO icon</title><path d="M11.152 0l-.27 1.48c-.644.068-1.271.194-1.876.373L8.192.589l-1.568.65.318 1.469c-.563.307-1.094.664-1.59 1.064l-1.237-.857-1.2 1.2.857 1.238c-.4.495-.757 1.026-1.064 1.589l-1.47-.318-.65 1.567 1.265.815a10.527 10.527 0 00-.372 1.876L0 11.152v1.696l1.48.27c.069.644.194 1.271.373 1.876l-1.264.814.65 1.568 1.469-.318c.307.563.664 1.094 1.064 1.59l-.857 1.237 1.2 1.2 1.238-.857c.495.4 1.026.757 1.589 1.064l-.318 1.47 1.568.65.814-1.264c.605.178 1.232.303 1.877.371L11.152 24h1.696l.27-1.48a10.531 10.531 0 001.876-.372l.814 1.263 1.568-.65-.318-1.469a10.596 10.596 0 001.59-1.064l1.237.857 1.2-1.2-.857-1.238c.4-.495.757-1.026 1.064-1.589l1.47.318.65-1.568-1.264-.814c.178-.605.304-1.232.371-1.877L24 12.848v-1.696l-1.48-.27a10.524 10.524 0 00-.373-1.876l1.264-.815-.65-1.567-1.469.318a10.596 10.596 0 00-1.064-1.59l.857-1.237-1.2-1.2-1.238.857c-.495-.4-1.026-.757-1.589-1.064l.318-1.47-1.568-.65-.814 1.264a10.536 10.536 0 00-1.877-.371L12.848 0zM12 2.805a9.196 9.196 0 110 18.392 9.196 9.196 0 010-18.392zm0 .968a8.227 8.227 0 100 16.454 8.227 8.227 0 000-16.454zm-.475 1.982a.644.644 0 01.644.643.644.644 0 01-.144.405l1.364 1.376a.805.805 0 01.514-.187.805.805 0 01.23.034l.383-.968a.644.644 0 01-.343-.569.644.644 0 01.644-.643.644.644 0 01.644.643.644.644 0 01-.644.644.644.644 0 01-.17-.024l-.384.97a.805.805 0 01.445.718.805.805 0 01-.805.805.805.805 0 01-.57-.238l-1.214 1.013a1.61 1.61 0 01.331.975 1.61 1.61 0 01-.486 1.152l.875.98a1.127 1.127 0 01.699-.243 1.127 1.127 0 011.126 1.126 1.127 1.127 0 01-.033.264l1.556.523a.805.805 0 01.729-.465.805.805 0 01.804.805.805.805 0 01-.804.804.805.805 0 01-.805-.804.805.805 0 01.028-.208l-1.55-.52a1.127 1.127 0 01-1.051.728 1.127 1.127 0 01-.526-.131l-.696 1.288a.805.805 0 01.362.67.805.805 0 01-.804.806.805.805 0 01-.805-.805.805.805 0 01.805-.805.805.805 0 01.319.066l.7-1.294a1.127 1.127 0 01-.482-.922 1.127 1.127 0 01.323-.789l-.876-.981a1.61 1.61 0 01-1.017.364 1.61 1.61 0 01-.883-.265l-.78 1.082a1.127 1.127 0 01.413.87 1.127 1.127 0 01-1.127 1.127 1.127 1.127 0 01-1.127-1.127 1.127 1.127 0 011.127-1.126 1.127 1.127 0 01.6.174l.78-1.083a1.61 1.61 0 01-.613-1.261 1.61 1.61 0 01.045-.368l-1.68-.473a.805.805 0 01-.75.52.805.805 0 01-.805-.804.805.805 0 01.804-.805.805.805 0 01.805.805.805.805 0 01-.014.15l1.677.471a1.61 1.61 0 011.528-1.106 1.61 1.61 0 011.188.527l1.214-1.013a.805.805 0 01-.145-.459.805.805 0 01.19-.52l-1.362-1.375a.644.644 0 01-.401.14.644.644 0 01-.644-.644.644.644 0 01.644-.643z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>SVGO</title><path d="M21.9685 9.5707a10.3841 10.3841 0 0 0-1.2419-2.851c.4116-.5796.8064-1.1723 1.1723-1.7999l-2.8271-2.8187c-.6432.3768-1.2527.7848-1.8491 1.2107a10.2604 10.2604 0 0 0-2.7599-1.1387c-.12-.72-.2676-1.4483-.4572-2.1731h-4.0054c-.1871.7104-.3275 1.4207-.4475 2.1311a10.302 10.302 0 0 0-2.845 1.1279c-.5724-.4068-1.1591-.798-1.7771-1.1579L2.1023 4.9282c.3408.582.7068 1.1375 1.0871 1.6799a10.3302 10.3302 0 0 0-1.3199 2.9878 25.065 25.065 0 0 0-1.8683.4032v4.0006c.5796.1512 1.1567.2736 1.7363.3792a10.327 10.327 0 0 0 1.2815 3.2602c-.3204.462-.6288.9372-.9168 1.4315l2.8283 2.8283c.48-.2784.9348-.5736 1.3811-.8808A10.3366 10.3366 0 0 0 9.6522 22.41c.0972.5304.2112 1.0607.348 1.5899h4.0006c.1416-.5436.2568-1.0859.36-1.6307a10.2988 10.2988 0 0 0 3.2566-1.4063c.4716.3264.96.642 1.4567.936l2.8271-2.8283c-.3144-.5364-.6528-1.0511-1.0043-1.5599a10.3406 10.3406 0 0 0 1.1999-3.109c.6336-.1116 1.2683-.24 1.9019-.4056v-3.997c-.6755-.1752-1.3534-.3132-2.0302-.4284zm-2.9147 5.1886c-.6873 1.9556-2.1612 3.5519-4.0522 4.399-1.8966.856-4.0703.8774-5.9901.0792-1.8862-.7889-3.4536-2.3813-4.1746-4.339-.7227-1.9308-.6184-4.0925.288-5.9445a7.6099 7.6099 0 0 1 3.8242-3.6466c1.9315-.8372 4.2099-.8069 6.1185.0816a7.5908 7.5908 0 0 1 3.643 3.5506c.8889 1.8067 1.0111 3.9209.3432 5.8197zm-1.6883-.1416c.069.3397.0197.6928-.1396 1.0006-.3857.7451-1.3023 1.0365-2.0474.6508-.7451-.3857-1.0365-1.3023-.6508-2.0474l-1.1999-.8964a2.076 2.076 0 0 1-2.4179.4368l-.96 1.4951c.3821.3619.5043.9206.3083 1.409-.2639.6575-1.0107.9765-1.6682.7127-.6575-.2639-.9765-1.0107-.7127-1.6682.2639-.6575 1.0107-.9765 1.6682-.7127l.96-1.4963a2.0736 2.0736 0 0 1-.7008-2.1215l-2.0627-.8087a.9598.9598 0 0 1-.873.3903c-.5275-.0534-.9118-.5243-.8583-1.0518.0534-.5275.5243-.9117 1.0518-.8583.5275.0534.9118.5243.8583 1.0518v.0204l2.0603.81c.5027-.9713 1.6739-1.3843 2.6747-.9432l.9695-1.6643a1.0355 1.0355 0 0 1-.2804-1.0488c.1638-.548.7408-.8594 1.2887-.6956.548.1638.8594.7408.6956 1.2887-.1638.548-.7408.8594-1.2887.6956l-.9731 1.6643c.8459.633 1.0815 1.8004.5472 2.7119l1.1999.8928a1.5195 1.5195 0 0 1 .7612-.404c.8222-.167 1.6241.3642 1.7911 1.1864h-.0013z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/swagger.svg b/assets/lib/simple-icons/icons/swagger.svg
index 97acf09b..8f831af5 100644
--- a/assets/lib/simple-icons/icons/swagger.svg
+++ b/assets/lib/simple-icons/icons/swagger.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Swagger icon</title><path d="M12 0C5.383 0 0 5.383 0 12s5.383 12 12 12c6.616 0 12-5.383 12-12S18.616 0 12 0zm0 1.144c5.995 0 10.856 4.86 10.856 10.856 0 5.995-4.86 10.856-10.856 10.856-5.996 0-10.856-4.86-10.856-10.856C1.144 6.004 6.004 1.144 12 1.144zM8.37 5.868a6.707 6.707 0 0 0-.423.005c-.983.056-1.573.517-1.735 1.472-.115.665-.096 1.348-.143 2.017-.013.35-.05.697-.115 1.038-.134.609-.397.798-1.016.83a2.65 2.65 0 0 0-.244.042v1.463c1.126.055 1.278.452 1.37 1.629.033.429-.013.858.015 1.287.018.406.073.808.156 1.2.259 1.075 1.307 1.435 2.575 1.218v-1.283c-.203 0-.383.005-.558 0-.43-.013-.591-.12-.632-.535-.056-.535-.042-1.08-.075-1.62-.064-1.001-.175-1.988-1.153-2.625.503-.37.868-.812.983-1.398.083-.41.134-.821.166-1.237.028-.415-.023-.84.014-1.25.06-.665.102-.937.9-.91.12 0 .235-.017.369-.027v-1.31c-.16 0-.31-.004-.454-.006zm7.593.009a4.247 4.247 0 0 0-.813.06v1.274c.245 0 .434 0 .623.005.328.004.577.13.61.494.032.332.031.669.064 1.006.065.669.101 1.347.217 2.007.102.544.475.95.941 1.283-.817.549-1.057 1.333-1.098 2.215-.023.604-.037 1.213-.069 1.822-.028.554-.222.734-.78.748-.157.004-.31.018-.484.028v1.305c.327 0 .627.019.927 0 .932-.055 1.495-.507 1.68-1.412.078-.498.124-1 .138-1.504.032-.461.028-.927.074-1.384.069-.715.397-1.01 1.112-1.057a.972.972 0 0 0 .199-.046v-1.463c-.12-.014-.204-.027-.291-.032-.536-.023-.804-.203-.937-.71a5.146 5.146 0 0 1-.152-.993c-.037-.618-.033-1.241-.074-1.86-.08-1.192-.794-1.753-1.887-1.786zm-6.89 5.28a.844.844 0 0 0-.083 1.684h.055a.83.83 0 0 0 .877-.78v-.046a.845.845 0 0 0-.83-.858zm2.911 0a.808.808 0 0 0-.834.78c0 .027 0 .05.004.078 0 .503.342.826.859.826.507 0 .826-.332.826-.853-.005-.503-.342-.836-.855-.831zm2.963 0a.861.861 0 0 0-.876.835c0 .47.378.849.849.849h.009c.425.074.853-.337.881-.83.023-.457-.392-.854-.863-.854z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Swagger</title><path d="M12 0C5.383 0 0 5.383 0 12s5.383 12 12 12c6.616 0 12-5.383 12-12S18.616 0 12 0zm0 1.144c5.995 0 10.856 4.86 10.856 10.856 0 5.995-4.86 10.856-10.856 10.856-5.996 0-10.856-4.86-10.856-10.856C1.144 6.004 6.004 1.144 12 1.144zM8.37 5.868a6.707 6.707 0 0 0-.423.005c-.983.056-1.573.517-1.735 1.472-.115.665-.096 1.348-.143 2.017-.013.35-.05.697-.115 1.038-.134.609-.397.798-1.016.83a2.65 2.65 0 0 0-.244.042v1.463c1.126.055 1.278.452 1.37 1.629.033.429-.013.858.015 1.287.018.406.073.808.156 1.2.259 1.075 1.307 1.435 2.575 1.218v-1.283c-.203 0-.383.005-.558 0-.43-.013-.591-.12-.632-.535-.056-.535-.042-1.08-.075-1.62-.064-1.001-.175-1.988-1.153-2.625.503-.37.868-.812.983-1.398.083-.41.134-.821.166-1.237.028-.415-.023-.84.014-1.25.06-.665.102-.937.9-.91.12 0 .235-.017.369-.027v-1.31c-.16 0-.31-.004-.454-.006zm7.593.009a4.247 4.247 0 0 0-.813.06v1.274c.245 0 .434 0 .623.005.328.004.577.13.61.494.032.332.031.669.064 1.006.065.669.101 1.347.217 2.007.102.544.475.95.941 1.283-.817.549-1.057 1.333-1.098 2.215-.023.604-.037 1.213-.069 1.822-.028.554-.222.734-.78.748-.157.004-.31.018-.484.028v1.305c.327 0 .627.019.927 0 .932-.055 1.495-.507 1.68-1.412.078-.498.124-1 .138-1.504.032-.461.028-.927.074-1.384.069-.715.397-1.01 1.112-1.057a.972.972 0 0 0 .199-.046v-1.463c-.12-.014-.204-.027-.291-.032-.536-.023-.804-.203-.937-.71a5.146 5.146 0 0 1-.152-.993c-.037-.618-.033-1.241-.074-1.86-.08-1.192-.794-1.753-1.887-1.786zm-6.89 5.28a.844.844 0 0 0-.083 1.684h.055a.83.83 0 0 0 .877-.78v-.046a.845.845 0 0 0-.83-.858zm2.911 0a.808.808 0 0 0-.834.78c0 .027 0 .05.004.078 0 .503.342.826.859.826.507 0 .826-.332.826-.853-.005-.503-.342-.836-.855-.831zm2.963 0a.861.861 0 0 0-.876.835c0 .47.378.849.849.849h.009c.425.074.853-.337.881-.83.023-.457-.392-.854-.863-.854z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/swarm.svg b/assets/lib/simple-icons/icons/swarm.svg
index 548dbe69..89be4406 100644
--- a/assets/lib/simple-icons/icons/swarm.svg
+++ b/assets/lib/simple-icons/icons/swarm.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Swarm icon</title><path d="M12.367 8.755l.004-.005c-.03-.058-.138-.3-.16-.364v-.002C8.828 1.474 1.314 1.72.128 4.81c-.91 2.373 3.072 8.026 12.24 3.945zM9.9 19.232c-.596-1.344-.922-2.8-.957-4.26-.964 1.49-1.69 2.987-2.176 4.104-.023.045-.38.93-.482 1.2-.13.33.045.734.383.854.273.104 1.165.42 1.22.45 1.14.374 2.716.84 4.456 1.126-1.035-.992-1.86-2.176-2.445-3.496v.022zM13.89 8.117c5.18-2.306 4.456-6.31 3.116-6.825-1.804-.693-5.08 1.974-3.205 6.62.016.033.09.17.09.205zM23.413 13.186v-.008c-.786-1.764-2.226-3.024-3.897-3.624-.168-.063-.34-.09-.51-.09-.87 0-1.707.723-1.785 1.626-.134 1.506.165 3.04.825 4.516.646 1.46 1.566 2.69 2.75 3.596.31.24.684.36 1.063.36.677 0 1.354-.36 1.623-1.005.688-1.65.722-3.586-.067-5.37zM19.482 20.918h-.004c-1.445-1.11-2.594-2.6-3.41-4.43-.826-1.86-1.164-3.738-1.004-5.586.045-.516.194-1.012.438-1.465l-.137.035c-.764.19-1.5.52-2.156.953-.95.625-1.788 1.55-2.15 2.646-.097.298-.17.62-.193.93-.116 1.48.126 3.01.77 4.462.626 1.404 1.562 2.574 2.687 3.465.684.547 1.92.89 2.93.89.95 0 1.887-.27 2.73-.704.263-.137.84-.493.878-.524-.5-.122-.973-.345-1.38-.66v-.012z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Swarm</title><path d="M16.358 1.216c-1.82.023-4.234 2.581-2.57 6.704.018.034.08.17.091.204h.003c5.172-2.298 4.45-6.287 3.112-6.8a1.71 1.71 0 0 0-.636-.108zM4.001 2.768c-1.867.027-3.392.81-3.874 2.06-.91 2.365 3.07 7.996 12.229 3.93l.004-.003a5.53 5.53 0 0 1-.16-.362C10.193 4.303 6.73 2.728 4 2.768zM15.51 9.432l-.138.034a7.08 7.08 0 0 0-2.153.951c-.949.624-1.786 1.549-2.147 2.641-.097.295-.17.618-.194.928a9.153 9.153 0 0 0 .77 4.451 9.165 9.165 0 0 0 2.681 3.46c.686.544 1.92.887 2.93.887.949 0 1.884-.282 2.725-.71.262-.133.841-.494.879-.52a3.847 3.847 0 0 1-1.378-.663c-1.447-1.107-2.594-2.595-3.409-4.423-.826-1.854-1.163-3.73-1.002-5.575a3.813 3.813 0 0 1 .436-1.46zm3.498.026c-.868 0-1.704.722-1.783 1.623-.132 1.503.166 3.033.824 4.51.648 1.453 1.567 2.683 2.749 3.586a1.73 1.73 0 0 0 1.06.346c.677 0 1.353-.36 1.621-1.002a6.74 6.74 0 0 0-.068-5.356 6.75 6.75 0 0 0-3.891-3.618 1.508 1.508 0 0 0-.512-.089zm-10.05 5.498a28.722 28.722 0 0 0-2.175 4.098c-.023.054-.378.932-.483 1.205a.676.676 0 0 0 .384.86c.273.107 1.164.43 1.22.449a28.93 28.93 0 0 0 4.453 1.12 11.15 11.15 0 0 1-2.442-3.48 11.136 11.136 0 0 1-.958-4.252z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/swc.svg b/assets/lib/simple-icons/icons/swc.svg
new file mode 100644
index 00000000..d4c5e307
--- /dev/null
+++ b/assets/lib/simple-icons/icons/swc.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>SWC</title><path d="M7.063 7.797a.99.99 0 0 0-.7 1.69l3.987 3.986a.42.42 0 0 1 .093.48.42.42 0 0 1-.408.272.44.44 0 0 1-.312-.13L4.135 8.509a2.405 2.405 0 0 0-1.711-.71c-.507 0-.99.152-1.395.436a2.443 2.443 0 0 0-.994 2.403c.084.487.32.934.678 1.293L2.25 13.47c.183.183.14.379.098.48a.422.422 0 0 1-.409.274h-.695a.987.987 0 1 0 0 1.976h.705c.507 0 .987-.149 1.393-.433a2.449 2.449 0 0 0 .994-2.405 2.403 2.403 0 0 0-.678-1.293l-1.54-1.54a.42.42 0 0 1-.096-.483.42.42 0 0 1 .408-.272c.116 0 .226.045.31.13l5.588 5.587a2.405 2.405 0 0 0 1.711.71 2.379 2.379 0 0 0 1.996-1.048l.342.34a2.404 2.404 0 0 0 1.71.711h.05a2.41 2.41 0 0 0 1.392-.435c.374-.265.664-.631.842-1.059.176-.43.232-.896.152-1.346a2.403 2.403 0 0 0-.677-1.293l-1.541-1.539a.42.42 0 0 1-.096-.482.422.422 0 0 1 .408-.274h1.053a2.402 2.402 0 0 0-.008.862c.084.487.32.934.678 1.293l3.562 3.562a2.406 2.406 0 0 0 1.711.711c1.316 0 2.39-1.07 2.387-2.389a.99.99 0 1 0-1.979 0 .409.409 0 0 1-.408.409.436.436 0 0 1-.31-.13l-3.563-3.562a.422.422 0 0 1-.097-.482.422.422 0 0 1 .408-.274h.593a.987.987 0 1 0 0-1.976h-4.027c-.507 0-.989.15-1.394.435a2.443 2.443 0 0 0-.994 2.403c.084.487.319.934.677 1.293l1.537 1.54a.42.42 0 0 1 .096.483.417.417 0 0 1-.406.271h-.05a.436.436 0 0 1-.311-.128l-2.022-2.02-.004-.006-3.984-3.982a.991.991 0 0 0-.7-.291zm-4.64.867c.416 0 .806.16 1.1.455l5.59 5.588c.247.247.575.383.924.383a1.29 1.29 0 0 0 1.209-.807c.205-.497.1-1.04-.281-1.422L6.976 8.875a.12.12 0 0 1 0-.174c.05-.05.127-.05.176 0l6.006 6.006c.247.247.575.383.924.383h.05a1.29 1.29 0 0 0 1.21-.807 1.288 1.288 0 0 0-.285-1.424l-1.541-1.54a1.53 1.53 0 0 1-.336-1.694 1.533 1.533 0 0 1 1.437-.959h4.027c.07 0 .124.054.124.123 0 .07-.054.123-.124.123h-.593a1.29 1.29 0 0 0-1.21.807 1.288 1.288 0 0 0 .286 1.424l3.562 3.564c.248.247.576.383.924.383.702 0 1.274-.571 1.274-1.273 0-.07.055-.124.125-.124.069 0 .123.054.123.124a1.52 1.52 0 0 1-1.522 1.519c-.415 0-.805-.16-1.1-.455l-3.562-3.563a1.53 1.53 0 0 1-.336-1.693 1.56 1.56 0 0 1 .586-.713h-2.584a1.29 1.29 0 0 0-1.209.807 1.284 1.284 0 0 0 .283 1.424l1.541 1.54a1.53 1.53 0 0 1 .336 1.694 1.53 1.53 0 0 1-1.435.959h-.051c-.415 0-.805-.16-1.1-.455l-1.422-1.42c.065.3.034.614-.09.916a1.53 1.53 0 0 1-1.435.959c-.415 0-.807-.16-1.102-.455L3.346 9.293a1.297 1.297 0 0 0-.924-.383 1.29 1.29 0 0 0-1.21.807 1.288 1.288 0 0 0 .284 1.424l1.54 1.54a1.53 1.53 0 0 1 .337 1.694 1.53 1.53 0 0 1-1.436.959h-.693c-.07 0-.123-.054-.123-.123s.054-.123.123-.123h.695a1.29 1.29 0 0 0 1.21-.807 1.284 1.284 0 0 0-.286-1.423l-1.539-1.541a1.53 1.53 0 0 1-.336-1.692c.245-.593.793-.96 1.436-.96z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/swift.svg b/assets/lib/simple-icons/icons/swift.svg
index 2e3703fa..ffaf098e 100644
--- a/assets/lib/simple-icons/icons/swift.svg
+++ b/assets/lib/simple-icons/icons/swift.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Swift icon</title><path d="M21.984 16.348c.056-.112.056-.224.112-.336 1.346-5.272-1.851-11.44-7.347-14.693 2.412 3.253 3.365 7.122 2.524 10.599-.056.28-.168.617-.28.897a5.173 5.173 0 0 1-.45-.28S11.104 9.17 5.273 3.282c-.169-.168 3.14 4.71 6.841 8.58-1.738-1.01-6.673-4.542-9.758-7.403.337.617.842 1.234 1.346 1.851 2.58 3.309 5.945 7.346 9.983 10.43-2.86 1.74-6.842 1.851-10.88 0-1.01-.448-1.85-1.009-2.804-1.682 1.682 2.636 4.318 5.048 7.459 6.337 3.757 1.627 7.57 1.515 10.318 0h.057c.112-.056.224-.112.336-.224 1.346-.673 3.982-1.402 5.44 1.402.392.785 1.121-2.86-1.626-6.225z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Swift</title><path d="M7.508 0c-.287 0-.573 0-.86.002-.241.002-.483.003-.724.01-.132.003-.263.009-.395.015A9.154 9.154 0 0 0 4.348.15 5.492 5.492 0 0 0 2.85.645 5.04 5.04 0 0 0 .645 2.848c-.245.48-.4.972-.495 1.5-.093.52-.122 1.05-.136 1.576a35.2 35.2 0 0 0-.012.724C0 6.935 0 7.221 0 7.508v8.984c0 .287 0 .575.002.862.002.24.005.481.012.722.014.526.043 1.057.136 1.576.095.528.25 1.02.495 1.5a5.03 5.03 0 0 0 2.205 2.203c.48.244.97.4 1.498.495.52.093 1.05.124 1.576.138.241.007.483.009.724.01.287.002.573.002.86.002h8.984c.287 0 .573 0 .86-.002.241-.001.483-.003.724-.01a10.523 10.523 0 0 0 1.578-.138 5.322 5.322 0 0 0 1.498-.495 5.035 5.035 0 0 0 2.203-2.203c.245-.48.4-.972.495-1.5.093-.52.124-1.05.138-1.576.007-.241.009-.481.01-.722.002-.287.002-.575.002-.862V7.508c0-.287 0-.573-.002-.86a33.662 33.662 0 0 0-.01-.724 10.5 10.5 0 0 0-.138-1.576 5.328 5.328 0 0 0-.495-1.5A5.039 5.039 0 0 0 21.152.645 5.32 5.32 0 0 0 19.654.15a10.493 10.493 0 0 0-1.578-.138 34.98 34.98 0 0 0-.722-.01C17.067 0 16.779 0 16.492 0H7.508zm6.035 3.41c4.114 2.47 6.545 7.162 5.549 11.131-.024.093-.05.181-.076.272l.002.001c2.062 2.538 1.5 5.258 1.236 4.745-1.072-2.086-3.066-1.568-4.088-1.043a6.803 6.803 0 0 1-.281.158l-.02.012-.002.002c-2.115 1.123-4.957 1.205-7.812-.022a12.568 12.568 0 0 1-5.64-4.838c.649.48 1.35.902 2.097 1.252 3.019 1.414 6.051 1.311 8.197-.002C9.651 12.73 7.101 9.67 5.146 7.191a10.628 10.628 0 0 1-1.005-1.384c2.34 2.142 6.038 4.83 7.365 5.576C8.69 8.408 6.208 4.743 6.324 4.86c4.436 4.47 8.528 6.996 8.528 6.996.154.085.27.154.36.213.085-.215.16-.437.224-.668.708-2.588-.09-5.548-1.893-7.992z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/swiggy.svg b/assets/lib/simple-icons/icons/swiggy.svg
new file mode 100644
index 00000000..1938e48a
--- /dev/null
+++ b/assets/lib/simple-icons/icons/swiggy.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Swiggy</title><path d="M12.034 24c-.376-.411-2.075-2.584-3.95-5.513-.547-.916-.901-1.63-.833-1.814.178-.48 3.355-.743 4.333-.308.298.132.29.307.29.409 0 .44-.022 1.619-.022 1.619a.441.441 0 1 0 .883-.002l-.005-2.939c0-.255-.278-.319-.331-.329-.511-.002-1.548-.006-2.661-.006-2.457 0-3.006.101-3.423-.172-.904-.591-2.383-4.577-2.417-6.819C3.849 4.964 5.723 2.225 8.362.868A8.13 8.13 0 0 1 12.026 0c4.177 0 7.617 3.153 8.075 7.209l.001.011c.084.981-5.321 1.189-6.39.904-.164-.044-.206-.212-.206-.284L13.5 4.996a.442.442 0 0 0-.884.002l.009 3.866a.33.33 0 0 0 .268.32l3.354-.001c1.79 0 2.542.207 3.042.588.333.254.461.739.349 1.37C18.633 16.755 12.273 23.71 12.034 24z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/swiper.svg b/assets/lib/simple-icons/icons/swiper.svg
new file mode 100644
index 00000000..10d9af38
--- /dev/null
+++ b/assets/lib/simple-icons/icons/swiper.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Swiper</title><path d="M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0zm4.884 17.908a4.328 4.328 0 0 1-1.092 1.488 4.817 4.817 0 0 1-1.644.936c-.632.216-1.308.324-2.028.324s-1.368-.1-1.944-.3c-.576-.2-1.088-.464-1.536-.792s-.832-.704-1.152-1.128a6.563 6.563 0 0 1-.768-1.284l1.68-1.008c.144.336.332.66.564.972.232.312.5.588.804.828a3.697 3.697 0 0 0 2.328.792c.4 0 .788-.056 1.164-.168.376-.112.708-.28.996-.504.288-.224.52-.5.696-.828.176-.328.264-.716.264-1.164 0-.432-.084-.804-.252-1.116a2.955 2.955 0 0 0-.684-.84 5 5 0 0 0-1.032-.672c-.4-.2-.832-.412-1.296-.636a44.725 44.725 0 0 1-1.644-.816 7.592 7.592 0 0 1-1.488-1.008 4.752 4.752 0 0 1-1.068-1.332c-.272-.504-.408-1.092-.408-1.764 0-.56.104-1.116.312-1.668a4.474 4.474 0 0 1 .912-1.476c.4-.432.9-.784 1.5-1.056s1.3-.408 2.1-.408c.592 0 1.14.076 1.644.228a5.98 5.98 0 0 1 2.412 1.38c.304.288.552.568.744.84l-1.512 1.224a4.172 4.172 0 0 0-1.284-1.188 4.204 4.204 0 0 0-.924-.408 3.634 3.634 0 0 0-1.08-.156c-.464 0-.868.072-1.212.216a2.692 2.692 0 0 0-.876.576c-.24.24-.42.516-.54.828-.12.312-.18.628-.18.948 0 .4.088.748.264 1.044.176.296.424.572.744.828s.712.504 1.176.744c.464.24.984.488 1.56.744.64.288 1.22.588 1.74.9.52.312.96.652 1.32 1.02.36.368.636.784.828 1.248.192.464.288 1.008.288 1.632 0 .736-.132 1.396-.396 1.98z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/symantec.svg b/assets/lib/simple-icons/icons/symantec.svg
index deafa341..79f17f0c 100644
--- a/assets/lib/simple-icons/icons/symantec.svg
+++ b/assets/lib/simple-icons/icons/symantec.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Symantec icon</title><path d="M22.877 0v.738h.738V0h-.738zm0 .738h-.738v.739h.738V.738zm0 .739v.738h.738v-.738h-.738zm-.738 0h-1.477v.738h-.738V3.69h-.738v.74h-1.479v.725A10.572 10.572 0 0011 2.77C5.136 2.77.385 7.52.385 13.385.385 19.248 5.136 24 11 24s10.615-4.752 10.615-10.615c0-2.56-.904-4.906-2.412-6.739h.72v-.738h.74V4.43h.737V3.69h.739v-.738H21.4v-.738h.739v-.738zM19.186 3.69v-.738h-.74v.738h.74zM11 6.154a7.193 7.193 0 014.033 1.23h-.28v.739h-.737c-1.927 2.409-2.414 3.466-3.182 5.414-.871-1.763-1.911-2.978-3.711-3.783l-.02-.006c-.327-.083-.493-.125-.718.19-.23.322-.092.613.183.955a35.212 35.212 0 00.586.703c.547.646 1.095 1.289 1.508 2.035.408.738.877 1.772 1.242 2.574.223.49.406.894.51 1.088.22.406.752.584.955.584.985-.117 1.08-.582 1.242-1.379l.057-.264c.336-1.574.771-3.203 2.824-5.158v-.736h.738V9.6h.74v-.295a7.193 7.193 0 011.26 4.08c0 3.99-3.24 7.23-7.23 7.23s-7.2-3.24-7.2-7.23 3.21-7.23 7.2-7.23z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Symantec</title><path d="M22.877 0v.738h.738V0h-.738zm0 .738h-.738v.739h.738V.738zm0 .739v.738h.738v-.738h-.738zm-.738 0h-1.477v.738h-.738V3.69h-.738v.74h-1.479v.725A10.572 10.572 0 0011 2.77C5.136 2.77.385 7.52.385 13.385.385 19.248 5.136 24 11 24s10.615-4.752 10.615-10.615c0-2.56-.904-4.906-2.412-6.739h.72v-.738h.74V4.43h.737V3.69h.739v-.738H21.4v-.738h.739v-.738zM19.186 3.69v-.738h-.74v.738h.74zM11 6.154a7.193 7.193 0 014.033 1.23h-.28v.739h-.737c-1.927 2.409-2.414 3.466-3.182 5.414-.871-1.763-1.911-2.978-3.711-3.783l-.02-.006c-.327-.083-.493-.125-.718.19-.23.322-.092.613.183.955a35.212 35.212 0 00.586.703c.547.646 1.095 1.289 1.508 2.035.408.738.877 1.772 1.242 2.574.223.49.406.894.51 1.088.22.406.752.584.955.584.985-.117 1.08-.582 1.242-1.379l.057-.264c.336-1.574.771-3.203 2.824-5.158v-.736h.738V9.6h.74v-.295a7.193 7.193 0 011.26 4.08c0 3.99-3.24 7.23-7.23 7.23s-7.2-3.24-7.2-7.23 3.21-7.23 7.2-7.23z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/symfony.svg b/assets/lib/simple-icons/icons/symfony.svg
index a3995a56..05cb4cb8 100644
--- a/assets/lib/simple-icons/icons/symfony.svg
+++ b/assets/lib/simple-icons/icons/symfony.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Symfony icon</title><path d="M24 12c0 6.628-5.372 12-12 12S0 18.628 0 12 5.372 0 12 0s12 5.372 12 12zm-6.753-7.561c-1.22.042-2.283.715-3.075 1.644-.878 1.02-1.461 2.229-1.881 3.461-.753-.614-1.332-1.414-2.539-1.761-.966-.297-2.015-.105-2.813.514-.41.319-.71.757-.861 1.254-.36 1.176.381 2.225.719 2.6l.737.79c.15.154.519.56.339 1.138-.193.631-.951 1.037-1.732.799-.348-.106-.848-.366-.734-.73.045-.15.152-.263.21-.391.052-.11.077-.194.095-.242.141-.465-.053-1.07-.551-1.223-.465-.143-.939-.03-1.125.566-.209.68.117 1.913 1.86 2.449 2.04.628 3.765-.484 4.009-1.932.153-.907-.255-1.582-1.006-2.447l-.612-.677c-.371-.37-.497-1.002-.114-1.485.324-.409.785-.584 1.539-.379 1.103.3 1.594 1.063 2.412 1.68-.338 1.11-.56 2.223-.759 3.222l-.123.746c-.585 3.07-1.033 4.757-2.194 5.726-.234.166-.57.416-1.073.434-.266.005-.352-.176-.355-.257-.006-.184.15-.271.255-.353.154-.083.39-.224.372-.674-.016-.532-.456-.994-1.094-.973-.477.017-1.203.465-1.176 1.286.028.85.819 1.485 2.012 1.444.638-.021 2.062-.281 3.464-1.949 1.633-1.911 2.09-4.101 2.434-5.706l.383-2.116c.213.024.441.042.69.048 2.032.044 3.049-1.01 3.064-1.776.01-.464-.304-.921-.744-.91-.386.009-.718.278-.806.654-.094.428.646.813.068 1.189-.41.266-1.146.452-2.184.3l.188-1.042c.386-1.976.859-4.407 2.661-4.467.132-.007.612.006.623.323.003.105-.022.134-.147.375-.115.155-.174.345-.168.537.017.504.4.836.957.816.743-.023.955-.748.945-1.119-.032-.874-.952-1.424-2.17-1.386z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Symfony</title><path d="M24 12c0 6.628-5.372 12-12 12S0 18.628 0 12 5.372 0 12 0s12 5.372 12 12zm-6.753-7.561c-1.22.042-2.283.715-3.075 1.644-.878 1.02-1.461 2.229-1.881 3.461-.753-.614-1.332-1.414-2.539-1.761-.966-.297-2.015-.105-2.813.514-.41.319-.71.757-.861 1.254-.36 1.176.381 2.225.719 2.6l.737.79c.15.154.519.56.339 1.138-.193.631-.951 1.037-1.732.799-.348-.106-.848-.366-.734-.73.045-.15.152-.263.21-.391.052-.11.077-.194.095-.242.141-.465-.053-1.07-.551-1.223-.465-.143-.939-.03-1.125.566-.209.68.117 1.913 1.86 2.449 2.04.628 3.765-.484 4.009-1.932.153-.907-.255-1.582-1.006-2.447l-.612-.677c-.371-.37-.497-1.002-.114-1.485.324-.409.785-.584 1.539-.379 1.103.3 1.594 1.063 2.412 1.68-.338 1.11-.56 2.223-.759 3.222l-.123.746c-.585 3.07-1.033 4.757-2.194 5.726-.234.166-.57.416-1.073.434-.266.005-.352-.176-.355-.257-.006-.184.15-.271.255-.353.154-.083.39-.224.372-.674-.016-.532-.456-.994-1.094-.973-.477.017-1.203.465-1.176 1.286.028.85.819 1.485 2.012 1.444.638-.021 2.062-.281 3.464-1.949 1.633-1.911 2.09-4.101 2.434-5.706l.383-2.116c.213.024.441.042.69.048 2.032.044 3.049-1.01 3.064-1.776.01-.464-.304-.921-.744-.91-.386.009-.718.278-.806.654-.094.428.646.813.068 1.189-.41.266-1.146.452-2.184.3l.188-1.042c.386-1.976.859-4.407 2.661-4.467.132-.007.612.006.623.323.003.105-.022.134-.147.375-.115.155-.174.345-.168.537.017.504.4.836.957.816.743-.023.955-.748.945-1.119-.032-.874-.952-1.424-2.17-1.386z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/symphony.svg b/assets/lib/simple-icons/icons/symphony.svg
index 6276ea07..ec2caa59 100644
--- a/assets/lib/simple-icons/icons/symphony.svg
+++ b/assets/lib/simple-icons/icons/symphony.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Symphony icon</title><path d="M20.471 8.118v-4.22c0-.864-.468-1.677-1.22-2.12C18.124 1.113 15.684 0 12 0S5.876 1.113 4.75 1.777a2.476 2.476 0 0 0-1.22 2.12v6.338l13.412 3.882v2.824c0 .382-.24.65-.648.849L12 19.941l-4.315-2.162c-.386-.188-.626-.456-.626-.838v-2.118L3.53 13.764v3.177c0 1.744 1 3.228 2.588 4.001L12 24l5.86-3.047c1.61-.784 2.61-2.268 2.61-4.011v-5.294L7.059 7.765V4.542C8.017 4.08 9.651 3.529 12 3.529c2.349 0 3.983.55 4.941 1.013v2.517l3.53 1.059z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Symphony</title><path d="M20.471 8.118v-4.22c0-.864-.468-1.677-1.22-2.12C18.124 1.113 15.684 0 12 0S5.876 1.113 4.75 1.777a2.476 2.476 0 0 0-1.22 2.12v6.338l13.412 3.882v2.824c0 .382-.24.65-.648.849L12 19.941l-4.315-2.162c-.386-.188-.626-.456-.626-.838v-2.118L3.53 13.764v3.177c0 1.744 1 3.228 2.588 4.001L12 24l5.86-3.047c1.61-.784 2.61-2.268 2.61-4.011v-5.294L7.059 7.765V4.542C8.017 4.08 9.651 3.529 12 3.529c2.349 0 3.983.55 4.941 1.013v2.517l3.53 1.059z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/sympy.svg b/assets/lib/simple-icons/icons/sympy.svg
new file mode 100644
index 00000000..98a40ab6
--- /dev/null
+++ b/assets/lib/simple-icons/icons/sympy.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>SymPy</title><path d="M9.836 17.793a.55.55 0 0 0 .087-.281c.004-.11-.024-.183-.083-.221-.054-.04-.122-.044-.202-.012a.51.51 0 0 0-.216.18.542.542 0 0 0-.094.293c-.008.224.064.37.215.44.156.067.338.06.546-.025.383-.154.697-.476.943-.966.24-.466.374-.953.4-1.458.162.948-.068 1.997-.646 2.765a2.99 2.99 0 0 1-.672.39l-1 .3a7.28 7.28 0 0 1-.493.082v-5.656c.828.222 1.664.468 2.272 1.015l-.045 1.278c-.042 1.188-.293 1.875-.75 2.06-.185.074-.337.076-.456.005a.554.554 0 0 0 .194-.19zm.366-11.578c-.128-.045-.388-.114-.55-.157-.234-.062-.537-.142-.696-.157a1.46 1.46 0 0 0-.48.03c-.073.02-.26.083-.041.16.124.047.31.096.517.15.158.043.456.122.633.154.25.045.484.017.595-.012.092-.024.246-.086.022-.168zm4.53-1.354c.255.04.521.08.783.135l.995.348-2.996.9-5.066 1.52-2.7-.81c.065-.183.153-.358.26-.52l2.832.835.575-.168-.405-.12-.363.106L6.08 6.33a2.33 2.33 0 0 1 .64-.602c1.519-.953 3.292-1.206 4.98-1.172l2.794.826-.363.106.406.12.575-.168-2.93-.866c.765.04 1.507.13 2.193.232zm-4.65 1.103c-.28-.074-.967-.255-1.708-.06-.74.194-.062.376.22.45.283.075.948.25 1.69.056.737-.193.084-.37-.203-.446zm3.748-.5l-.135-.035-.43.113-1.651-.438a.264.264 0 0 0-.172-.003c-.034.01-.04.01-.048.023-.073.105-.39.188-.455.205l-.06.016.134.036.06-.016c.05-.013.216-.058.343-.12l1.482.393-.426.11.135.037c.127-.038.453-.123.603-.163.15-.04.476-.124.62-.158zM8.62 9.542c.13.034.26.07.386.11.674.153 1.37.336 2.044.58.037-.47.166-.925.387-1.36.25-.49.567-.814.95-.968.208-.084.388-.09.54-.022.155.067.23.213.221.437a.536.536 0 0 1-.102.304.467.467 0 0 1-.207.168c-.08.032-.15.032-.21 0-.054-.04-.08-.118-.076-.233a.55.55 0 0 1 .087-.28.548.548 0 0 1 .195-.19c-.12-.07-.27-.069-.455.005-.46.185-.71.87-.751 2.06l-.01.303c.721.308 1.403.7 1.99 1.217v-.796c0-.282-.03-.312-.305-.227v-.178l.563-.24v1.682c.293.293.557.622.783.995.156.252.273.516.362.79.11-.193.166-.517.21-.796l.09-.55c.035-.225.082-.52.082-.659 0-.23-.074-.34-.188-.304-.156.05-.36.337-.465.864-.02.098-.02.104-.07.12-.02.006-.06.018-.06-.04 0-.13.212-.95.603-1.072.098-.03.29-.044.375.274.04-.12.168-.443.383-.51.113-.036.34-.038.34.255 0 .224-.12.343-.192.365-.102.032-.137-.067-.137-.14 0 0 0-.219.156-.326-.063-.06-.16-.03-.172-.027-.184.057-.29.407-.344.723l-.133.83c-.03.204-.074.465-.074.603 0 .3.106.335.184.31.164-.05.36-.336.465-.863.02-.098.023-.105.07-.12.027-.01.06-.018.06.04 0 .114-.2.947-.603 1.072-.102.032-.293.028-.37-.275-.039.11-.097.24-.174.344.2.673.242 1.392.284 2.095.01.148.017.294.027.439v.007c.01.342-.003.667-.036.977l1.57-.471V5.588L8.62 8.07zM2.73 8.306l-.146-.044.15.356a4.06 4.06 0 0 1-.005-.312zM8.274 19.32v-5.79a19.334 19.334 0 0 1-.462-.13c-1.38-.314-2.726-1.096-3.894-2.26a2.85 2.85 0 0 1-.182-.164l.656 1.547c.026.058.062.132.062.194 0 0 0 .075-.08.176l-2.213 2.888 2.434.741c1.385.42 1.984.265 2.143-1.781l.22.067-.247 2.884-4.895-1.49c-.132-.04-.22-.067-.22-.205 0-.038 0-.063.088-.174l2.1-2.76-2.197-5.207c0-.288.018-.283.23-.22l.93.285c.045-.488.157-.97.322-1.414L0 5.588v11.277l8.204 2.46zm0-9.862V8.07L5.66 7.286c-.06.33-.06.785.214 1.215.566.548 1.373.728 2.154.9zM3.398 5.661L2.19 5.304l.575-.168.406.12-.363.106.644.19c.1-.19.21-.37.332-.538l-.09-.024.06-.016.073-.02a3.84 3.84 0 0 1 1.798-1.342c1.04-.456 2.195-.733 3.538-.84l-.716-.25-8.062 2.82 2.798.84a4.59 4.59 0 0 1 .214-.52zm17.455.147a.145.145 0 0 0-.145.146.145.145 0 0 0 .145.145.145.145 0 0 0 .144-.146.14.14 0 0 0-.043-.103.139.139 0 0 0-.1-.042zm-.89 1.76a.106.106 0 0 1-.038.077.16.16 0 0 1-.108.04c-.078 0-.145-.053-.145-.116 0-.037.023-.063.037-.076a.16.16 0 0 1 .108-.04c.08 0 .145.053.145.115zm3.313 1.245c-.3 0-.397-.13-.53-.31a52.78 52.78 0 0 0-.319-.409c.21-.316.174-.683-.104-1-.226-.262-.407-.606-.58-.938-.195-.368-.395-.75-.648-1.003-.212-.212-.65-.45-1.177-.642-.864.145-1.588.158-2.5-.21-1.663-.703-3.578-1.106-5.693-1.2-2.47-.138-4.366.126-5.965.83l-.015.005C4.667 4.31 3.81 5.26 3.45 6.48a.075.075 0 0 1-.005.016c-.577 1.43-.584 3.342.7 4.385a.154.154 0 0 1 .012.012c1.125 1.124 2.418 1.876 3.74 2.176a21.66 21.66 0 0 0 .668.186c1.085.29 2.207.59 2.918 1.52.008.01.014.02.02.033.573 1.243.39 2.822-.455 3.93a.206.206 0 0 1-.03.03c-.634.508-1.57.807-2.855.912-.02.002-.04 0-.06-.006a150.044 150.044 0 0 1-2.6-.748c-.867-.254-1.762-.517-2.584-.743a6.03 6.03 0 0 1-.554-.17l.144.182c.225.286.566.718.714.845l.007.006c1.33 1.274 2.46 1.73 3.967 2.09 1.894.439 3.556.56 5.506-.273 1.633-1.02 2.37-2.447 2.316-4.49-.01-.145-.02-.292-.027-.439-.058-.99-.12-2.01-.632-2.843-1.16-1.907-3.398-2.64-5.434-3.103a.057.057 0 0 1-.014-.004c-.306-.098-.623-.168-.96-.243-.833-.186-1.696-.378-2.333-1.006a.123.123 0 0 1-.023-.028C5.303 8.26 5.212 7.7 5.34 7.13a2.753 2.753 0 0 1 1.2-1.696c2.454-1.542 5.506-1.329 7.89-.97l.354.056c.82.126 1.84.283 2.462.877a.172.172 0 0 1 .053.13c-.015.48.163.723.37 1.005.133.184.285.393.387.678.33.805 1.12.905 1.955 1.01.337.044.686.088 1 .183a.275.275 0 0 1 .035.015c.433.248.91.127 1.206-.128.093.118.262.335.284.365.13.176.278.374.624.41.005.087-.001.185-.006.28a3.58 3.58 0 0 0-.008.206h.259c0-.058.004-.122.008-.19.006-.096.011-.194.007-.288h.309L24 9.07v-.258zM5.666 19.418c0 .15-.322.27-.72.27-.4 0-.722-.12-.722-.27 0-.15.323-.27.72-.27.4 0 .723.12.723.27zm2.555.997c0 .235-.315.426-.703.426-.39 0-.704-.19-.704-.425 0-.236.315-.427.703-.427.388 0 .704.19.704.426zm3.534.108c0 .283-.343.513-.767.513s-.768-.23-.768-.512c0-.284.343-.514.767-.514s.768.228.768.513zm1.21-1.177c-.353 0-.64-.3-.64-.67 0-.37.287-.67.64-.67.353 0 .64.3.64.67a.655.655 0 0 1-.64.67zm.641-4.023c.37 0 .67.368.67.823 0 .455-.3.823-.67.823-.37 0-.67-.368-.67-.823 0-.455.3-.823.67-.823zm-1.402-2.926c.404 0 .73.34.73.762 0 .42-.326.762-.73.762-.404 0-.731-.34-.731-.762 0-.42.327-.762.731-.762zm-4.206-.853c0-.438.396-.792.884-.792s.884.355.884.792c0 .438-.395.793-.883.793s-.884-.354-.885-.792zM3.853 7.23c0-.286.246-.518.55-.518.302 0 .548.232.548.518 0 .286-.247.518-.55.518-.303 0-.548-.232-.548-.518zm1.574 1.943a.72.72 0 0 1 .73.708.72.72 0 0 1-.73.708.72.72 0 0 1-.73-.708.72.72 0 0 1 .73-.708zm.68-3.937c0 .252-.231.457-.517.457-.286 0-.518-.204-.518-.457 0-.252.232-.457.518-.457.286 0 .518.204.518.457zm1.7-1.088c0 .185-.191.336-.426.337-.236 0-.427-.15-.427-.336 0-.186.19-.336.426-.337.236.001.427.151.427.336zm1.95-.475c0 .168-.162.305-.364.305-.202 0-.366-.136-.366-.304 0-.169.163-.306.365-.306.202 0 .366.136.366.305zm2.178-.078c0 .135-.15.244-.335.244-.185 0-.335-.109-.336-.243 0-.136.15-.244.335-.244.185 0 .335.107.336.243zm1.592.382c-.144 0-.26-.1-.26-.226 0-.125.116-.226.26-.226.144 0 .26.101.26.226s-.117.226-.26.226zm2.11.118c0 .118-.12.213-.273.214-.15 0-.274-.095-.275-.213 0-.119.122-.214.274-.215.152 0 .275.095.275.214zm1.565.745c-.1 0-.183-.096-.183-.213 0-.118.082-.214.183-.214.1 0 .183.097.183.214 0 .117-.082.213-.183.213zm3.02 2.73a.358.358 0 0 1-.124.268.42.42 0 0 1-.28.104c-.223 0-.404-.167-.405-.372a.36.36 0 0 1 .123-.27.42.42 0 0 1 .28-.104c.224 0 .404.167.405.373h-.13zm1.035-1.616a.404.404 0 0 1-.403.405.405.405 0 0 1-.287-.69.405.405 0 0 1 .285-.118.4.4 0 0 1 .286.118.394.394 0 0 1 .12.285z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/synology.svg b/assets/lib/simple-icons/icons/synology.svg
index 5b9685d5..dd2aa9af 100644
--- a/assets/lib/simple-icons/icons/synology.svg
+++ b/assets/lib/simple-icons/icons/synology.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Synology icon</title><path d="M17.895 11.927a3.196 3.196 0 0 1 .394-1.53l-.008.017a2.677 2.677 0 0 1 1.075-1.108l.014-.007a3.181 3.181 0 0 1 1.523-.382h.05-.003q1.346 0 2.2.871.854.871.86 2.203c0 .895-.29 1.635-.867 2.226s-1.306.886-2.183.886c-.566 0-1.1-.137-1.571-.379l.019.009a2.535 2.535 0 0 1-1.115-1.067l-.007-.013q-.38-.708-.381-1.726zm1.593.083c0 .591.138 1.043.42 1.349a1.365 1.365 0 0 0 2.066.002l.001-.002c.275-.307.413-.764.413-1.357s-.138-1.033-.413-1.342a1.371 1.371 0 0 0-2.066-.001l-.001.002c-.281.306-.42.758-.42 1.345zm-1.602 2.941H16.33v-3.015c0-.635-.032-1.044-.101-1.234a.876.876 0 0 0-.328-.435l-.003-.002a.938.938 0 0 0-.521-.156h-.027.001-.012c-.27 0-.521.084-.727.228l.004-.003a1.115 1.115 0 0 0-.444.576l-.002.008c-.083.248-.121.696-.121 1.359v2.673H12.5V9.027h1.439v.867c.518-.656 1.167-.98 1.952-.98h.021c.335 0 .655.067.946.189l-.016-.006c.261.105.48.268.648.475l.002.003c.141.185.247.404.304.643l.002.012c.057.278.089.597.089.924l-.002.135v-.007zM6.413 9.028h1.654l1.412 4.204 1.376-4.204h1.611l-2.067 5.693-.38 1.038a4.158 4.158 0 0 1-.4.807l.01-.017a1.637 1.637 0 0 1-.422.443l-.005.003c-.17.113-.367.203-.578.26l-.014.003c-.232.064-.499.1-.774.1h-.025.001a4.13 4.13 0 0 1-.911-.105l.028.005-.129-1.229c.198.046.426.074.659.077h.002c.36 0 .628-.106.8-.318a2.27 2.27 0 0 0 .395-.807l.004-.016zM0 12.29l1.592-.149q.147.802.586 1.181.439.379 1.192.375c.528 0 .927-.113 1.197-.335.27-.222.4-.486.4-.782v-.024a.751.751 0 0 0-.167-.474l.001.001c-.113-.132-.309-.252-.59-.347-.193-.074-.631-.191-1.312-.365-.882-.216-1.496-.486-1.85-.804A2.147 2.147 0 0 1 .3 8.936v-.019V8.908c0-.431.132-.831.358-1.163l-.005.007a2.226 2.226 0 0 1 1.003-.826l.015-.005c.442-.184.973-.281 1.602-.281q1.529 0 2.304.676c.516.457.785 1.057.811 1.809l-1.649.055c-.073-.413-.219-.714-.452-.899-.233-.185-.579-.276-1.034-.276-.476 0-.85.098-1.118.298a.59.59 0 0 0-.261.49v.011-.001.002c0 .201.095.379.242.493l.001.001c.205.179.709.36 1.507.546.798.186 1.388.387 1.769.59.374.196.678.48.893.825l.006.01c.214.345.326.786.326 1.305 0 .489-.146.944-.396 1.325l.006-.009c-.264.408-.64.724-1.084.908l-.016.006c-.475.194-1.065.298-1.772.298-1.029 0-1.819-.241-2.373-.722-.554-.481-.879-1.177-.986-2.091z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Synology</title><path d="M13.44 8.927l-.889.37.056.117a.623.623 0 0 1 .212-.054c.05 0 .093.017.126.046.033.028.058.081.072.16.015.08.022.29.022.634v2.736c0 .189-.013.316-.042.381a.295.295 0 0 1-.118.142c-.053.031-.147.045-.286.045v.12h1.481v-.12c-.154 0-.261-.017-.32-.048a.29.29 0 0 1-.126-.142c-.026-.06-.04-.187-.04-.378V8.927zm-11.722.34c-.33 0-.608.05-.84.147-.233.1-.411.246-.534.436a1.083 1.083 0 0 0-.185.612c0 .338.131.627.393.864.184.167.507.309.968.422.358.091.587.153.688.191a.7.7 0 0 1 .31.183c.058.07.088.158.088.259 0 .155-.07.291-.21.41-.142.116-.35.176-.628.176-.262 0-.47-.066-.625-.197-.154-.132-.255-.339-.307-.619L0 12.23c.056.48.228.845.517 1.096.289.252.704.378 1.244.378.371 0 .68-.054.93-.156a1.263 1.263 0 0 0 .781-1.169 1.29 1.29 0 0 0-.171-.684 1.203 1.203 0 0 0-.472-.437c-.2-.107-.508-.21-.927-.31-.418-.098-.683-.193-.79-.286a.326.326 0 0 1 .009-.524c.14-.105.336-.156.586-.156.24 0 .422.049.542.145.122.097.199.256.237.471l.864-.028c-.013-.395-.154-.71-.425-.949-.271-.235-.674-.353-1.208-.353zm21.808.33a.475.475 0 1 0-.002.95.475.475 0 0 0 .002-.95zm0 .072a.4.4 0 0 1 .401.403c0 .116-.05.22-.128.294l-.086-.135a.396.396 0 0 0-.065-.078.212.212 0 0 0-.048-.03.2.2 0 0 0 .127-.057.144.144 0 0 0 .043-.109.178.178 0 0 0-.025-.091.125.125 0 0 0-.067-.055.309.309 0 0 0-.123-.02h-.266v.606h.08v-.268h.091c.02 0 .036.001.045.003.013.004.025.007.036.014.013.01.024.023.04.043.015.019.035.049.059.083l.08.125h.043a.396.396 0 0 1-.237.08.405.405 0 0 1-.404-.405c0-.224.18-.403.404-.403zm-.157.191h.191c.044 0 .077.01.097.027a.089.089 0 0 1 .03.07.09.09 0 0 1-.016.055.076.076 0 0 1-.047.035.196.196 0 0 1-.085.013h-.17zm-15.037.6c-.41 0-.752.17-1.023.514v-.455h-.754v3.105h.814v-1.401c0-.348.022-.583.063-.713a.583.583 0 0 1 .234-.306.666.666 0 0 1 .385-.118c.11 0 .208.028.287.082.08.054.135.13.17.229.037.099.054.314.054.646v1.581h.816V11.7a2.54 2.54 0 0 0-.046-.55.925.925 0 0 0-.16-.343.83.83 0 0 0-.341-.25 1.285 1.285 0 0 0-.499-.097zm2.65 0a1.7 1.7 0 0 0-.826.2 1.39 1.39 0 0 0-.571.586 1.684 1.684 0 0 0-.202.793c0 .356.068.657.202.904.134.25.33.438.588.566.259.129.53.194.814.194.46 0 .841-.156 1.144-.463.303-.31.455-.698.455-1.167 0-.465-.15-.85-.451-1.156-.3-.305-.683-.457-1.154-.457zm7.315.05c-.351 0-.64.108-.865.323a1.02 1.02 0 0 0-.336.77c0 .194.05.371.147.534.1.162.24.285.423.379-.223.187-.366.335-.429.44a.55.55 0 0 0-.092.271c0 .068.024.13.071.184.046.056.127.116.24.187a9.626 9.626 0 0 0-.329.355c-.113.145-.19.253-.226.336a.41.41 0 0 0-.034.157c0 .12.081.232.246.343.291.19.649.284 1.071.284.55 0 .996-.16 1.337-.477.232-.216.35-.45.35-.694a.613.613 0 0 0-.183-.45.838.838 0 0 0-.49-.227 8.478 8.478 0 0 0-.878-.053 4.257 4.257 0 0 1-.46-.027c-.105-.015-.177-.04-.212-.075-.038-.037-.056-.072-.056-.112a.37.37 0 0 1 .05-.159.868.868 0 0 1 .186-.221c.156.049.309.07.459.07.36 0 .648-.1.864-.301a.956.956 0 0 0 .323-.722c0-.247-.062-.45-.187-.61h.394c.097 0 .15-.002.167-.01a.056.056 0 0 0 .035-.025.289.289 0 0 0 .018-.12.214.214 0 0 0-.02-.105.083.083 0 0 0-.033-.028.83.83 0 0 0-.166-.008h-.639a1.307 1.307 0 0 0-.746-.21zm-2.752 0c-.252 0-.49.065-.714.194a1.437 1.437 0 0 0-.546.61 1.816 1.816 0 0 0-.205.825c0 .381.114.724.34 1.03a1.29 1.29 0 0 0 1.09.543c.28 0 .532-.07.76-.211.23-.14.409-.35.54-.627.13-.276.194-.55.194-.821 0-.385-.118-.725-.354-1.022a1.344 1.344 0 0 0-1.105-.522zm-12.182.009l1.174 3.113a1.193 1.193 0 0 1-.21.431c-.09.112-.23.167-.419.167-.102 0-.218-.013-.344-.04l.067.645c.152.033.307.052.464.052.155 0 .294-.019.418-.052a1.04 1.04 0 0 0 .31-.138.862.862 0 0 0 .224-.234 2.2 2.2 0 0 0 .205-.414l.199-.545 1.085-2.985h-.844l-.722 2.204-.74-2.204zm16.631.078v.122a.84.84 0 0 1 .245.091c.035.029.08.08.136.157.072.102.125.186.158.255l1.088 2.275-.213.526c-.079.194-.158.326-.236.393-.08.068-.15.104-.217.104a.878.878 0 0 1-.167-.05.924.924 0 0 0-.3-.07c-.105 0-.19.025-.25.084a.286.286 0 0 0-.092.22c0 .098.042.183.126.257a.457.457 0 0 0 .322.112c.18 0 .366-.072.56-.223.193-.15.35-.37.469-.664l1.226-3.014a1.6 1.6 0 0 1 .113-.254.55.55 0 0 1 .145-.146.473.473 0 0 1 .188-.053v-.122h-.978v.122c.093 0 .16.008.197.023a.172.172 0 0 1 .083.057.146.146 0 0 1 .023.087c0 .091-.019.18-.056.271l-.675 1.671-.737-1.53c-.074-.15-.11-.268-.11-.356a.21.21 0 0 1 .074-.16.346.346 0 0 1 .224-.063h.068v-.122zm-1.753.08c.175 0 .316.074.43.217.15.196.224.466.224.815 0 .265-.053.46-.16.584a.516.516 0 0 1-.41.188.528.528 0 0 1-.43-.216c-.149-.19-.223-.458-.223-.802 0-.268.054-.461.163-.59a.515.515 0 0 1 .406-.197zm-2.798.054c.242 0 .44.102.598.312.23.308.346.727.346 1.263 0 .429-.07.73-.209.905a.646.646 0 0 1-.528.264c-.286 0-.516-.161-.691-.477-.174-.32-.263-.695-.263-1.135 0-.272.037-.493.11-.669a.731.731 0 0 1 .285-.361.667.667 0 0 1 .352-.102zm-4.463.395c.216 0 .396.084.543.247.144.162.216.397.216.703 0 .311-.072.55-.216.712a.695.695 0 0 1-.543.248.695.695 0 0 1-.542-.248c-.147-.161-.22-.398-.22-.708 0-.308.073-.545.22-.707a.704.704 0 0 1 .542-.247zm6.66 2.498c.265.036.647.065 1.142.08.34.007.566.034.68.083.113.048.17.13.17.241 0 .157-.094.304-.282.442-.19.138-.48.208-.874.208-.414 0-.732-.07-.951-.204-.128-.078-.19-.168-.19-.277 0-.078.024-.169.076-.26a1.51 1.51 0 0 1 .228-.313z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/t-mobile.svg b/assets/lib/simple-icons/icons/t-mobile.svg
deleted file mode 100644
index d6c86844..00000000
--- a/assets/lib/simple-icons/icons/t-mobile.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>T-Mobile icon</title><path d="M2.342 0l-.26 8.52 1.3.196c.26-2.537.91-4.358 1.951-5.594C6.44 1.887 8.001 1.17 10.017 1.105v17.757c0 1.56-.195 2.536-.65 2.991-.39.39-1.041.65-1.952.715-.26 0-.716.066-1.366.066V24H17.95v-1.366c-.65 0-1.105 0-1.365-.066-.91-.065-1.561-.325-1.951-.715-.456-.455-.65-1.496-.65-2.991V1.172c2.015.064 3.576.714 4.682 2.015 1.105 1.236 1.756 3.057 1.95 5.593l1.302-.195L21.593 0zm-.26 11.057v4.878h4.877v-4.878H4.62zm14.894 0v4.878h4.878v-4.878h-2.081z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/tableau.svg b/assets/lib/simple-icons/icons/tableau.svg
index 6d902e67..0c24b37b 100644
--- a/assets/lib/simple-icons/icons/tableau.svg
+++ b/assets/lib/simple-icons/icons/tableau.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Tableau icon</title><path d="M11.654.174V2.377H9.682v.58h1.972V5.16h.696V2.957h1.97v-.58h-1.97V.174h-.348zm6.03 2.262l-.002 1.623v1.623h-2.957v.927h2.957v3.188H18.725l.011-1.582.02-1.576 1.465-.02 1.46-.01v-.927H18.728V2.436h-.522zm-12.407.06V5.686H2.291v.925H5.277V9.801h.985V6.61h3.013v-.925H6.262V2.496H5.77zm6.086 5.27v3.593H8.06v1.188h3.304v3.596h1.28v-3.596H15.953v-1.188H12.643V7.766h-.637zm9.721 1.55v2.221h-2.012v.811h2.012v2.261h.887v-2.261H24v-.811h-2.029V9.317h-.422zm-19.111.131V11.621H0v.621H1.973v2.194H2.64v-2.194h2v-.62H2.609V9.446h-.318zm15.709 4.516v3.254h-3.016v.927h3.016v3.217h1.072v-3.216H21.74v-.928H18.754v-3.254h-.533zm-12.463.008v3.246H2.262v.928h2.957v3.189H6.32v-3.189h2.955v-.928H6.32V13.97h-.55zm6.316 4.578l.002 1.103v1.1H9.566v.812h1.971v2.262h.928l.012-1.119.017-1.143H14.463v-.812h-2V18.549h-.465z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Tableau</title><path d="M11.654.174V2.377H9.682v.58h1.972V5.16h.696V2.957h1.97v-.58h-1.97V.174h-.348zm6.03 2.262l-.002 1.623v1.623h-2.957v.927h2.957v3.188H18.725l.011-1.582.02-1.576 1.465-.02 1.46-.01v-.927H18.728V2.436h-.522zm-12.407.06V5.686H2.291v.925H5.277V9.801h.985V6.61h3.013v-.925H6.262V2.496H5.77zm6.086 5.27v3.593H8.06v1.188h3.304v3.596h1.28v-3.596H15.953v-1.188H12.643V7.766h-.637zm9.721 1.55v2.221h-2.012v.811h2.012v2.261h.887v-2.261H24v-.811h-2.029V9.317h-.422zm-19.111.131V11.621H0v.621H1.973v2.194H2.64v-2.194h2v-.62H2.609V9.446h-.318zm15.709 4.516v3.254h-3.016v.927h3.016v3.217h1.072v-3.216H21.74v-.928H18.754v-3.254h-.533zm-12.463.008v3.246H2.262v.928h2.957v3.189H6.32v-3.189h2.955v-.928H6.32V13.97h-.55zm6.316 4.578l.002 1.103v1.1H9.566v.812h1.971v2.262h.928l.012-1.119.017-1.143H14.463v-.812h-2V18.549h-.465z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/tado.svg b/assets/lib/simple-icons/icons/tado.svg
new file mode 100644
index 00000000..90577e94
--- /dev/null
+++ b/assets/lib/simple-icons/icons/tado.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>tado&#176;</title><path d="M22.486 7.795a1.514 1.514 0 1 0 0 3.029 1.514 1.514 0 0 0 0-3.029zm-8.504.003v2.456c-.457-.344-.945-.563-1.686-.563-1.814 0-2.833 1.364-2.833 3.267 0 1.792 1.019 3.247 2.833 3.247 1.781 0 2.817-1.46 2.82-3.247v-5.16zM1.89 7.799l-1.124.378V9.69H0v.945h.757v3.873c0 .84.67 1.51 1.518 1.51h1.128v-.943h-.946a.566.566 0 0 1-.568-.566v-3.874h3.215V9.69H1.89zm20.596.375a1.135 1.135 0 1 1 0 2.27 1.135 1.135 0 0 1 0-2.27zM5.48 9.69v.946h1.906c.354 0 .549.277.549.54v.773l-1.322-.001c-1.134 0-2.267.769-2.267 2.08 0 1.307 1.13 2.087 2.265 2.087.953 0 1.326-.57 1.326-.57v.47H9.07v-4.864c0-.784-.667-1.461-1.51-1.461zm12.861.002c-1.808 0-2.835 1.369-2.835 3.237 0 1.911 1.027 3.276 2.835 3.276 1.787 0 2.828-1.36 2.828-3.276 0-1.863-1.046-3.237-2.828-3.237zm-6.046.95c1.14 0 1.68 1.185 1.68 2.316 0 1.117-.55 2.305-1.68 2.305-1.232 0-1.697-1.188-1.697-2.305 0-1.13.56-2.316 1.697-2.316zm6.046.005c1.12 0 1.703 1.18 1.703 2.3 0 1.117-.572 2.313-1.703 2.313-1.126 0-1.707-1.165-1.707-2.307 0-1.126.57-2.306 1.707-2.306zM6.614 12.9h1.322v1.207c0 .5-.373 1.062-1.323 1.062-.367 0-1.133-.19-1.133-1.134 0-.842.758-1.135 1.134-1.135Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/tails.svg b/assets/lib/simple-icons/icons/tails.svg
index 5b389981..729a51dd 100644
--- a/assets/lib/simple-icons/icons/tails.svg
+++ b/assets/lib/simple-icons/icons/tails.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 24 24"><title>Tails icon</title><path d="M21.356 11.162v3.98c0 .122-.081.154-.181.071l-2.032-1.682a.55.55 0 0 1-.181-.37v-.501l-.635-.516c-.68-.554-1.226-1.677-1.226-2.5 0-.822.549-1.036 1.226-.478l.635.516V9.18c0-.122.081-.154.181-.071l2.032 1.682c.1.082.181.248.181.37zm-2.993-1.265c-.358-.296-.648-.182-.648.253s.29 1.027.648 1.323l.599.486v-1.576l-.599-.486zM21.202 19.934l.013-.01a.334.334 0 0 0 .037-.036l.004-.004a.36.36 0 0 0 .032-.046l.007-.013a.299.299 0 0 0 .019-.042l.004-.01a.329.329 0 0 0 .013-.055v-.014l.003-.027.003-.152-5.223-4.28.022-12.91-.147-.111-.004-.003-.034-.02c-.007-.004-.014-.01-.022-.013l-.03-.01c-.01-.004-.02-.009-.03-.011l-.026-.004c-.013-.002-.026-.005-.039-.005H15.8l-.023.001c-.013 0-.025.001-.037.003l-.03.007c-.01.003-.021.005-.031.01-.01.003-.02.008-.029.012l-.029.015a.202.202 0 0 0-.014.01c-.012.004-.024.007-.035.013l-3.444 1.726.72.57.027 10.067-5.246-4.32-.003-5.241L7.623.328l-.001-.01a.283.283 0 0 0-.004-.035c-.001-.01-.002-.02-.005-.03L7.605.223C7.6.213 7.597.201 7.59.19L7.588.181l-.01-.015c-.006-.01-.012-.021-.02-.031L7.54.112A.354.354 0 0 0 7.466.05.294.294 0 0 0 7.44.035c-.01-.004-.02-.01-.03-.013a.365.365 0 0 0-.061-.016L7.314.002 7.294 0l-.009.001a.3.3 0 0 0-.036.004c-.01.001-.02.002-.03.005-.01.002-.019.006-.029.009a.286.286 0 0 0-.033.012l-.009.004L2.825 2.2l-.016.01a.336.336 0 0 0-.077.061.303.303 0 0 0-.053.078.402.402 0 0 0-.023.06.284.284 0 0 0-.01.065c-.001.006-.003.013-.002.02l.006 10.108v.02l.002.008c0 .015.003.03.006.044l.002.009.004.011a.32.32 0 0 0 .02.054v.001h.001c.009.018.02.034.031.05l.007.01.006.006a.31.31 0 0 0 .031.032l.006.006c.004.003.008.005.01.008.002 0 .003.003.005.004l4.7 3.909-.107 2.673v.038l.004.025.002.015c0 .005.002.01.004.015 0 .004.002.007.003.011l.001.005.003.01c.005.014.01.028.017.04v.002a.32.32 0 0 0 .031.049l.006.008.005.005a.342.342 0 0 0 .037.039l.005.003.003.002.003.004 5.317 4.212c.1.078.236.092.35.035l7.988-4 .004-.002a.321.321 0 0 0 .045-.029zM5.475 10.985L3.819 9.706v1.1l.844.585-1.392.698-.006-9.376 2.176-1.09.023 2.392-1.546-1.236v1.1l1.554 1.235.024 1.182L3.901 5.02v1.1l1.603 1.275-.006 1.283-1.573-1.257v1.1l1.58 1.256.01 1.187zm3.433 6.038l-5.309-4.365 3.668-1.837 5.309 4.365zM6.123 1.282l.733-.367.079 9.34-.733.366zM8.617 8.396l-.001-1.59L9.925 7.83l.001 1.591zM9.926 6.568l-1.31-1.025V3.952l1.309 1.025zM11.018 5.816c.507.646 1.026 1.907 1.026 3.073 0 1.165-.519 1.562-1.026 1.362V5.816z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Tails</title><path d="M21.356 11.162v3.98c0 .122-.081.154-.181.071l-2.032-1.682a.55.55 0 0 1-.181-.37v-.501l-.635-.516c-.68-.554-1.226-1.677-1.226-2.5 0-.822.549-1.036 1.226-.478l.635.516V9.18c0-.122.081-.154.181-.071l2.032 1.682c.1.082.181.248.181.37zm-2.993-1.265c-.358-.296-.648-.182-.648.253s.29 1.027.648 1.323l.599.486v-1.576l-.599-.486zM21.202 19.934l.013-.01a.334.334 0 0 0 .037-.036l.004-.004a.36.36 0 0 0 .032-.046l.007-.013a.299.299 0 0 0 .019-.042l.004-.01a.329.329 0 0 0 .013-.055v-.014l.003-.027.003-.152-5.223-4.28.022-12.91-.147-.111-.004-.003-.034-.02c-.007-.004-.014-.01-.022-.013l-.03-.01c-.01-.004-.02-.009-.03-.011l-.026-.004c-.013-.002-.026-.005-.039-.005H15.8l-.023.001c-.013 0-.025.001-.037.003l-.03.007c-.01.003-.021.005-.031.01-.01.003-.02.008-.029.012l-.029.015a.202.202 0 0 0-.014.01c-.012.004-.024.007-.035.013l-3.444 1.726.72.57.027 10.067-5.246-4.32-.003-5.241L7.623.328l-.001-.01a.283.283 0 0 0-.004-.035c-.001-.01-.002-.02-.005-.03L7.605.223C7.6.213 7.597.201 7.59.19L7.588.181l-.01-.015c-.006-.01-.012-.021-.02-.031L7.54.112A.354.354 0 0 0 7.466.05.294.294 0 0 0 7.44.035c-.01-.004-.02-.01-.03-.013a.365.365 0 0 0-.061-.016L7.314.002 7.294 0l-.009.001a.3.3 0 0 0-.036.004c-.01.001-.02.002-.03.005-.01.002-.019.006-.029.009a.286.286 0 0 0-.033.012l-.009.004L2.825 2.2l-.016.01a.336.336 0 0 0-.077.061.303.303 0 0 0-.053.078.402.402 0 0 0-.023.06.284.284 0 0 0-.01.065c-.001.006-.003.013-.002.02l.006 10.108v.02l.002.008c0 .015.003.03.006.044l.002.009.004.011a.32.32 0 0 0 .02.054v.001h.001c.009.018.02.034.031.05l.007.01.006.006a.31.31 0 0 0 .031.032l.006.006c.004.003.008.005.01.008.002 0 .003.003.005.004l4.7 3.909-.107 2.673v.038l.004.025.002.015c0 .005.002.01.004.015 0 .004.002.007.003.011l.001.005.003.01c.005.014.01.028.017.04v.002a.32.32 0 0 0 .031.049l.006.008.005.005a.342.342 0 0 0 .037.039l.005.003.003.002.003.004 5.317 4.212c.1.078.236.092.35.035l7.988-4 .004-.002a.321.321 0 0 0 .045-.029zM5.475 10.985L3.819 9.706v1.1l.844.585-1.392.698-.006-9.376 2.176-1.09.023 2.392-1.546-1.236v1.1l1.554 1.235.024 1.182L3.901 5.02v1.1l1.603 1.275-.006 1.283-1.573-1.257v1.1l1.58 1.256.01 1.187zm3.433 6.038l-5.309-4.365 3.668-1.837 5.309 4.365zM6.123 1.282l.733-.367.079 9.34-.733.366zM8.617 8.396l-.001-1.59L9.925 7.83l.001 1.591zM9.926 6.568l-1.31-1.025V3.952l1.309 1.025zM11.018 5.816c.507.646 1.026 1.907 1.026 3.073 0 1.165-.519 1.562-1.026 1.362V5.816z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/tailwindcss.svg b/assets/lib/simple-icons/icons/tailwindcss.svg
index 41e1ccc2..38b493fd 100644
--- a/assets/lib/simple-icons/icons/tailwindcss.svg
+++ b/assets/lib/simple-icons/icons/tailwindcss.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Tailwind CSS icon</title><path d="M12.001,4.8c-3.2,0-5.2,1.6-6,4.8c1.2-1.6,2.6-2.2,4.2-1.8c0.913,0.228,1.565,0.89,2.288,1.624 C13.666,10.618,15.027,12,18.001,12c3.2,0,5.2-1.6,6-4.8c-1.2,1.6-2.6,2.2-4.2,1.8c-0.913-0.228-1.565-0.89-2.288-1.624 C16.337,6.182,14.976,4.8,12.001,4.8z M6.001,12c-3.2,0-5.2,1.6-6,4.8c1.2-1.6,2.6-2.2,4.2-1.8c0.913,0.228,1.565,0.89,2.288,1.624 c1.177,1.194,2.538,2.576,5.512,2.576c3.2,0,5.2-1.6,6-4.8c-1.2,1.6-2.6,2.2-4.2,1.8c-0.913-0.228-1.565-0.89-2.288-1.624 C10.337,13.382,8.976,12,6.001,12z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Tailwind CSS</title><path d="M12.001,4.8c-3.2,0-5.2,1.6-6,4.8c1.2-1.6,2.6-2.2,4.2-1.8c0.913,0.228,1.565,0.89,2.288,1.624 C13.666,10.618,15.027,12,18.001,12c3.2,0,5.2-1.6,6-4.8c-1.2,1.6-2.6,2.2-4.2,1.8c-0.913-0.228-1.565-0.89-2.288-1.624 C16.337,6.182,14.976,4.8,12.001,4.8z M6.001,12c-3.2,0-5.2,1.6-6,4.8c1.2-1.6,2.6-2.2,4.2-1.8c0.913,0.228,1.565,0.89,2.288,1.624 c1.177,1.194,2.538,2.576,5.512,2.576c3.2,0,5.2-1.6,6-4.8c-1.2,1.6-2.6,2.2-4.2,1.8c-0.913-0.228-1.565-0.89-2.288-1.624 C10.337,13.382,8.976,12,6.001,12z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/talend.svg b/assets/lib/simple-icons/icons/talend.svg
index df97508d..8f294ca3 100644
--- a/assets/lib/simple-icons/icons/talend.svg
+++ b/assets/lib/simple-icons/icons/talend.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Talend icon</title><path d="M20.2822 7.6735c-.845 0-1.6054.2958-2.2392.7605l-4.6472-5.7035.0422-.0422c.2958-.3802.2113-.9295-.169-1.2252-.3802-.2957-.9294-.2112-1.2252.169-.2957.3802-.2112.9295.169 1.2252.2958.2112.676.2112.9717.0845l4.6473 5.7035c-.338.2957-.6337.676-.845 1.0561L3.7632 3.5755c.0845-.2957.1268-.5915.0845-.8872-.0845-.507-.338-.9717-.7604-1.2674-.4225-.2958-.9295-.4225-1.4364-.3803-.507.0845-.9718.338-1.2675.7605-.6337.845-.4647 2.0701.3802 2.7039.338.2534.7605.3802 1.1407.3802h.2535c.507-.0845.9717-.338 1.2675-.7605.0422-.0845.1267-.169.169-.2535L16.8179 9.955c-.169.3803-.2535.8027-.2958 1.2675H5.3264c-.0422-.2958-.2112-.5915-.4647-.8027-.507-.3803-1.2674-.2958-1.6477.2112-.3802.507-.2957 1.2674.2535 1.6477.507.3802 1.2674.2957 1.6477-.2113.1267-.169.2112-.3802.2112-.5492h11.238c0 .4647.1267.9295.338 1.352l-2.873 1.3941c-.0844-.1267-.2534-.2535-.5069-.2957-.4647-.1268-.9717.2112-1.0562.676-.1267.4647.2113.9717.676 1.0562.4647.1267.9717-.2113 1.0562-.676.0422-.169.0422-.2957 0-.4647l2.8728-1.3942c.2535.4225.5915.845.9717 1.1407l-3.7178 5.112c-.3802-.2535-.845-.3803-1.352-.2958-.5069.0845-.9716.338-1.2673.7605-.6338.845-.4648 2.0701.3802 2.7039.338.2535.7604.3802 1.1407.3802h.2535c.507-.0845.9717-.338 1.2674-.7605.2957-.4224.4225-.9294.3802-1.4364-.0422-.4647-.2535-.845-.5914-1.1407l3.7178-5.112c.5915.3802 1.2674.5915 2.0279.5915C22.31 15.1092 24 13.4615 24 11.3914c0-2.0702-1.69-3.7179-3.7178-3.7179M3.214 3.9557c-.2535.338-.6337.5493-1.0562.6338-.4225.0422-.845-.0423-1.183-.2958C.2568 3.7445.13 2.7305.637 2.0123c.2535-.3802.6337-.5914 1.0562-.676h.2112c.338 0 .676.1268.9717.338.3803.2535.5915.6338.676 1.0562.0423.4225-.0845.8872-.338 1.2252m11.3225 17.9976c-.2535.338-.6338.5915-1.0562.6338-.4225.0422-.845-.0423-1.183-.2958-.7182-.5492-.845-1.5631-.338-2.2814.2535-.338.6338-.5492 1.0562-.6337h.2113c.338 0 .676.1268.9717.338.338.2535.5492.6337.6337 1.0562.0845.4225-.0422.845-.2957 1.183Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Talend</title><path d="M10.875.025c-.41.043-1.233.19-1.795.324-.653.156-1.099.303-1.856.632A11.96 11.96 0 0 0 .974 7.23C.531 8.25.367 8.817.12 10.166c-.117.61-.121.722-.121 1.838s.004 1.228.121 1.838c.247 1.349.411 1.915.852 2.936a11.96 11.96 0 0 0 6.251 6.249c1.021.441 1.588.605 2.937.852.61.117.723.121 1.839.121s1.229-.004 1.839-.121c1.35-.247 1.916-.41 2.937-.852a11.96 11.96 0 0 0 6.25-6.249c.442-1.02.606-1.587.853-2.936.117-.61.121-.722.121-1.838s-.004-1.228-.121-1.838c-.247-1.35-.411-1.916-.852-2.936-1.315-3.062-3.842-5.415-7.06-6.582C15.513.483 14.764.302 13.95.15c-.645-.12-.822-.134-1.735-.147-.558-.008-1.163 0-1.34.022zm1.536 5.34.108.104v2.859h2.293l.073.117c.139.212.06.735-.134.934-.069.065-.194.073-1.155.073h-1.081l.013 3.49c.013 3.174.021 3.516.09 3.715.148.445.364.597.831.592.329 0 .597-.064 1.224-.302.381-.139.411-.143.485-.078.1.09.26.424.26.536 0 .143-.347.398-.926.68-.922.444-1.661.613-2.47.557-1.519-.104-2.367-.614-2.678-1.617-.087-.277-.09-.398-.104-3.931l-.013-3.642h-.554c-.618 0-.679-.026-.722-.311-.035-.203.1-.342.459-.467a6.057 6.057 0 0 0 2.496-1.717c.354-.415.48-.601.748-1.116.125-.237.272-.467.32-.506a.318.318 0 0 1 .437.03z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/talenthouse.svg b/assets/lib/simple-icons/icons/talenthouse.svg
new file mode 100644
index 00000000..304024a8
--- /dev/null
+++ b/assets/lib/simple-icons/icons/talenthouse.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Talenthouse</title><path d="M22.373 7.42V0H1.627v7.42h6.66V24h7.428V7.42h6.66zM12.31 0h-.623zm-.004 3.41V.618h8.865L17.652 3.41Zm-5.948 0L2.83.618h8.857V3.41H6.358zm-.608.308-3.503 2.76V.949ZM2.837 6.802l3.52-2.781h4.894L8.46 6.8H2.837Zm6.068.438 2.78-2.782v14.781l-1.602 2.046-1.183 1.51Zm.326 16.142.555-.706 2.216-2.825 2.77 3.535zm3.078-18.924 2.786 2.782v15.556l-2.786-3.556zM15.55 6.8l-2.8-2.78h4.904l3.519 2.78h-5.623Zm6.206-.322L18.25 3.71 21.744.963l.02-.015Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/tampermonkey.svg b/assets/lib/simple-icons/icons/tampermonkey.svg
new file mode 100644
index 00000000..05cc9498
--- /dev/null
+++ b/assets/lib/simple-icons/icons/tampermonkey.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Tampermonkey</title><path d="M5.955.002C3-.071.275 2.386.043 5.335c-.069 3.32-.011 6.646-.03 9.969.06 1.87-.276 3.873.715 5.573 1.083 2.076 3.456 3.288 5.77 3.105 4.003-.011 8.008.022 12.011-.017 2.953-.156 5.478-2.815 5.482-5.772-.007-4.235.023-8.473-.015-12.708C23.82 2.533 21.16.007 18.205.003c-4.083-.005-8.167 0-12.25-.002zm.447 12.683c2.333-.046 4.506 1.805 4.83 4.116.412 2.287-1.056 4.716-3.274 5.411-2.187.783-4.825-.268-5.874-2.341-1.137-2.039-.52-4.827 1.37-6.197a4.896 4.896 0 012.948-.99zm11.245 0c2.333-.046 4.505 1.805 4.829 4.116.413 2.287-1.056 4.716-3.273 5.411-2.188.783-4.825-.268-5.875-2.341-1.136-2.039-.52-4.827 1.37-6.197a4.896 4.896 0 012.949-.99z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/taobao.svg b/assets/lib/simple-icons/icons/taobao.svg
new file mode 100644
index 00000000..f35f4279
--- /dev/null
+++ b/assets/lib/simple-icons/icons/taobao.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Taobao</title><path d="M21.3099 9.9008c.5285 0 .9584.4284.9584.9589 0 .5276-.4299.958-.9584.958-.5276 0-.9585-.4304-.9585-.958 0-.5305.4309-.959.9585-.959zm2.3899 3.0462h-10.408v-.9595h4.15V9.7591h-2.8869v-.768h2.8868v-.9234h-2.508v.2034h-1.6418V5.3733h1.6418v.3497c.4945-.0607 1.463-.1814 2.5175-.2956v-.8257h1.8522v.6408c.9249-.0807 1.753-.1312 2.211-.1112 1.489.0716 2.4449.2816 2.485 1.273.0356.989-1.4244 1.9043-1.4244 1.9043l-.4509-.4338v.1929h-2.8116v.9233h3.229v.768h-3.229v2.2285h4.3873v.9595zM21.5259 7.299l-.0115-.0115s1.3722-.7595.3427-1.272c-.8633-.43-5.5346.3056-6.9234.6257v.6578h6.5922zM1.8822 6.4166c.5515 0 .9985-.449.9985-1 0-.5531-.447-.9995-.9985-.9995a.9984.9984 0 00-1.001.9995c0 .551.4463 1 1.001 1zm3.4094-.8596c.252-.4364.3717-.7195.3717-.7195l-1.466-.4123S3.6068 6.3546 2.5527 7.253c0 0 1.0195.5897 1.0095.5732a9.6444 9.6444 0 00.782-.8793c.2345-.1017.4585-.198.6794-.2876-.2715.487-.7094 1.219-1.1478 1.6809l.6178.5385s.4198-.4033.8792-.8907h.5246v.8993H3.8557v.7204h2.0416v1.7235c-.025 0-.0521 0-.0782-.002-.224-.0106-.5751-.0476-.7124-.265-.1678-.2636-.044-.7496-.0346-1.0457H3.6608l-.0496.026s-.517 2.3142 1.489 2.2621c1.8793.0521 2.9544-.523 3.4725-.9178l.2064.7645 1.1583-.4825-.785-1.9183-.941.292.1764.6574c-.2415.1809-.518.3157-.8187.4134V9.6076h1.995v-.7204h-1.995v-.8993h2.003v-.72h-3.557c.2565-.3111.4589-.5982.5095-.78L5.9058 6.32c2.6603-.9519 4.1408-.7886 4.1278.773v4.1128s.1568 1.4124-1.461 1.3107l-.8757-.188-.207.8307s3.7822 1.0812 4.0913-1.8246c.3096-2.9058-.0767-4.7576-.0767-4.7576s-.3451-2.6824-6.213-1.02zM.0582 12.1534l1.5867.9905c1.0967-2.3813 1.0265-2.0657 1.302-2.92.2832-.8737.3453-1.54-.1362-2.023-.6172-.6197-.6844-.6773-1.6017-1.3582L.5487 7.8562l1.2164.7576s.8141.4153.4274 1.1903c-.3617.7375-2.1343 2.3493-2.1343 2.3493zm19.94 6.8484s-.0186.523-.6704.523c-.5892 0-.6363-.4113-.6363-.4113-.2485.2996-.6207.4549-1.0696.4549-.7606 0-1.2961-.5135-1.2961-1.2896 0-.786.5576-1.28 1.3983-1.28.3832 0 .725.1462.9258.4037.0066-.0706.0136-.1362.0136-.1968 0-.5622-.3092-.8127-1.01-.8127-.3382 0-.6659.0486-1.0136.1408.1107-.219.1924-.3793.2971-.4574.1202-.0972.4294-.1408.9419-.1408 1.269 0 1.742.4259 1.742 1.4279v1.2024c0 .3161.033.4359.3772.4359zm-1.3272-.745c0-.4815-.2555-.747-.6378-.747-.4043 0-.6668.2825-.6668.7595 0 .467.2775.7615.6533.7615.3882 0 .6513-.275.6513-.774zm5.2706-.501c0 1.1528-.6924 1.8271-1.7786 1.8271-1.0957 0-1.7766-.6743-1.7766-1.8271 0-1.1584.6809-1.8252 1.7766-1.8252 1.0862 0 1.7786.6719 1.7786 1.8252zm-1.0867 0c0-.8693-.237-1.2997-.692-1.2997-.4734 0-.6938.4304-.6938 1.2997 0 .8662.2204 1.299.6939 1.299.467 0 .6919-.4328.6919-1.299zm-7.1313-.0441c0 1.1703-.6534 1.8567-1.5767 1.8567-.4233 0-.8056-.1633-1.0466-.47 0 0-.1082.4264-.6618.4264-.6884 0-.6644-.523-.6644-.523.3868.0165.3758-.2145.3758-.436v-2.8862c0-.3552-.0742-.4795-.4269-.4865.0136-.1072.0777-.5376.6789-.5376.8156 0 .7615.9149.7615.9149v.786c.229-.268.5516-.3942.9905-.3942.9624 0 1.5697.6447 1.5697 1.7495zm-1.0937.0806c0-.8983-.2716-1.3557-.7616-1.3557-.4393 0-.74.3968-.74 1.1047v.3602c0 .7205.3152 1.1168.7631 1.1168.477 0 .7385-.4134.7385-1.226zm-3.2425-.0365c0 1.1528-.688 1.8271-1.7806 1.8271-1.0937 0-1.7726-.6743-1.7726-1.8271 0-1.1584.6789-1.8252 1.7726-1.8252 1.0927 0 1.7806.6719 1.7806 1.8252zm-1.0832 0c0-.8693-.236-1.2997-.6974-1.2997-.467 0-.6874.4304-.6874 1.2997 0 .8662.2205 1.299.6874 1.299.469 0 .6974-.4328.6974-1.299zm-5.9895-2.716c-.268.0782-.7901.0972-1.5516.0972-.925 0-1.5391-.039-1.8543-.039-.5195 0-.7254.1342-.9088.6592.3006-.1017.6729-.1087 1.1353-.1087.3512 0 .4108.0431.4108.2941V18.846c0 .2821.1178.6789.7255.6789.7104 0 .8346-.526.8346-.526-.3552-.007-.4248-.1313-.4248-.4865V15.952c0-.2675.1012-.2795.471-.2795.1252 0 .2094.007.2605.007.545 0 .6883-.1047.9018-.6398zm3.1303 3.962s-.018.523-.6664.523c-.556 0-.6403-.4113-.6403-.4113-.248.2996-.6207.4549-1.0656.4549-.7655 0-1.2996-.5135-1.2996-1.2896 0-.786.557-1.28 1.3993-1.28.3843 0 .7274.1462.9258.4037.0036-.0706.0106-.1362.0106-.1968 0-.5622-.3051-.8127-1.007-.8127-.3382 0-.6669.0486-1.015.1408.1131-.219.1923-.3793.2945-.4574.1293-.0972.4329-.1408.9469-.1408 1.265 0 1.746.4259 1.746 1.4279v1.2024c0 .3161.0276.4359.3708.4359zm-1.3262-.745c0-.4815-.2555-.747-.6378-.747-.4013 0-.6668.2825-.6668.7595 0 .467.279.7615.6513.7615.3893 0 .6533-.275.6533-.774z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/tapas.svg b/assets/lib/simple-icons/icons/tapas.svg
index 35728019..7c27574a 100644
--- a/assets/lib/simple-icons/icons/tapas.svg
+++ b/assets/lib/simple-icons/icons/tapas.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 24 24"><title>Tapas icon</title><path d="M7.67 1.56c.282-.134.542-.338.81-.513.253-.163.54-.436.894-.33.103.296-.162.503-.331.662-.538.511-1.154.975-1.72 1.456A240.349 240.349 0 0 1 1.5 7.598a7.406 7.406 0 0 1-.612.445c-.183.118-.456.359-.71.165.071-.337.306-.567.512-.778.213-.216.414-.446.629-.66-.248-.427-.473-.821-.662-1.274-.186-.449-.378-.971-.38-1.554-.002-1.109.635-2.043 1.34-2.68C2.34.61 3.306.066 4.429.006 6.015-.078 6.933.71 7.67 1.56zm5.012 18.075v.198c-.278.01-.532-.01-.795-.016v-.198c.277-.008.535.006.795.016zm-1.59 0v.198c-.282-.012-.52.021-.792.018v-.198a9.53 9.53 0 0 1 .793-.018zm3.177.05c-.007.067.013.158-.017.199-.251-.02-.518-.024-.778-.033v-.198c.275.003.542.009.795.032zm-4.763 0v.199c-.274.002-.512.039-.795.032v-.197c.28.001.516-.036.795-.034zm5.555.034c.255.033.544.029.793.064.013.084-.014.129-.015.2-.255-.033-.544-.03-.794-.067a.703.703 0 0 0 .016-.197zm-7.142.065v.2c-.26.02-.517.046-.778.065-.022-.05-.018-.126-.017-.198.265-.024.521-.053.795-.067zm8.73.067c.269.023.537.048.793.082-.02.058-.004.148-.032.199-.25-.036-.518-.053-.778-.083-.01-.083.017-.128.017-.198zm-10.319.082c-.006.08.03.113.017.199-.259.022-.568.082-.793.082.012-.077-.02-.114-.018-.182.252-.045.529-.066.794-.099zm12.684.199c.012.084-.027.114-.017.196-.256-.044-.54-.063-.794-.114.01-.058.025-.109.017-.182.228.008.545.062.795.1zm-14.288 0c.06.022.033.133.05.196-.259.04-.517.08-.777.117a.68.68 0 0 1-.034-.197c.253-.038.515-.072.761-.116zm15.86.233a.628.628 0 0 1-.034.213c-.247-.055-.52-.083-.777-.132a.702.702 0 0 1 .034-.197c.263.032.503.09.776.116zm-17.414.016c.02.057.036.116.034.196-.263.04-.503.105-.778.133-.004-.073-.034-.12-.033-.197.275-.028.515-.092.777-.132zm18.208.132c.255.052.508.109.778.148-.004.072-.034.119-.034.197-.28-.021-.495-.11-.778-.133-.018-.041.016-.15.034-.212zM22.669 16.726c.156.092.47.098.595.246.099.115.144.486.182.744.203 1.296.287 2.808.332 4.219.008.266.016.583.016.891 0 .298.06.704 0 .91-.041.147-.24.194-.363.264a56.558 56.558 0 0 0-.065-2.843c-.124-.101-.444-.047-.464-.166-.044-.252.267-.09.447-.065-.045-1.272-.177-2.46-.33-3.623-.147-.074-.336-.105-.498-.164-.252.259-.636.939-1.223.81-.22-.047-.363-.342-.464-.545a3.243 3.243 0 0 1-.265-.744c-4.88-.936-11.589-1.016-16.502-.05-.153.655-.43 2.053-1.34 1.52a2.014 2.014 0 0 1-.81-.991 8.31 8.31 0 0 1-.547.133c-.192 1.084-.288 2.268-.346 3.489.166.01.416-.122.595-.1.004.066.028.114.033.18-.166.106-.437.105-.645.166a45.286 45.286 0 0 0-.066 2.976c-.08.022-.273-.122-.347-.213.064-2.301.179-4.553.363-6.732.28-.087.568-.17.844-.264-.04-.383-.117-.827.05-1.09.14-.224.531-.352.81-.432.99-.28 1.979-.05 2.63.413.14.102.247.239.396.299.025-.09-.094-.15-.149-.199-.567-.511-1.498-.958-2.612-.761-.348-1.09-.79-2.142-.794-3.538-.005-1.553.562-2.899 1.205-3.953.66-1.078 1.541-1.954 2.498-2.645a11.504 11.504 0 0 1 8.087-2.051c3.01.369 5.008 1.79 6.45 3.853.69.99 1.248 2.174 1.62 3.524.374 1.352.378 3.098-.05 4.53-1.383-.283-2.637.15-3.125 1.026-.004.015-.016.017-.016.033.498-.678 1.736-1.168 2.976-.86.328.082.746.2.908.43.224.317.122.989-.016 1.373zM16.22 9.382c.055.383.227.783.445.944.376.27.602.001.63-.38.035-.504-.174-1.1-.431-1.324-.105-.09-.299-.145-.412-.115-.256.065-.283.528-.232.875zm-8.649 1.092c-.033.556.16 1.277.529 1.472.43.227.633-.095.661-.495.045-.626-.273-1.714-.86-1.605-.25.047-.313.339-.33.628zm6.83 2.579c-.266.06-.633-.058-.926-.117a22.333 22.333 0 0 0-.91-.164c-.567-.088-1.344-.211-1.9.1-.198.11-.444.351-.465.662-.027.46.342.791.612.993.323.237.663.399 1.092.527.917.278 2.293.353 3.075.017.735-.316 1.706-1.062 1.72-2.05.01-.59-.272-1.119-.859-1.042-.65.085-.882.951-1.44 1.074z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Tapas</title><path d="M7.67 1.56c.282-.134.542-.338.81-.513.253-.163.54-.436.894-.33.103.296-.162.503-.331.662-.538.511-1.154.975-1.72 1.456A240.349 240.349 0 0 1 1.5 7.598a7.406 7.406 0 0 1-.612.445c-.183.118-.456.359-.71.165.071-.337.306-.567.512-.778.213-.216.414-.446.629-.66-.248-.427-.473-.821-.662-1.274-.186-.449-.378-.971-.38-1.554-.002-1.109.635-2.043 1.34-2.68C2.34.61 3.306.066 4.429.006 6.015-.078 6.933.71 7.67 1.56zm5.012 18.075v.198c-.278.01-.532-.01-.795-.016v-.198c.277-.008.535.006.795.016zm-1.59 0v.198c-.282-.012-.52.021-.792.018v-.198a9.53 9.53 0 0 1 .793-.018zm3.177.05c-.007.067.013.158-.017.199-.251-.02-.518-.024-.778-.033v-.198c.275.003.542.009.795.032zm-4.763 0v.199c-.274.002-.512.039-.795.032v-.197c.28.001.516-.036.795-.034zm5.555.034c.255.033.544.029.793.064.013.084-.014.129-.015.2-.255-.033-.544-.03-.794-.067a.703.703 0 0 0 .016-.197zm-7.142.065v.2c-.26.02-.517.046-.778.065-.022-.05-.018-.126-.017-.198.265-.024.521-.053.795-.067zm8.73.067c.269.023.537.048.793.082-.02.058-.004.148-.032.199-.25-.036-.518-.053-.778-.083-.01-.083.017-.128.017-.198zm-10.319.082c-.006.08.03.113.017.199-.259.022-.568.082-.793.082.012-.077-.02-.114-.018-.182.252-.045.529-.066.794-.099zm12.684.199c.012.084-.027.114-.017.196-.256-.044-.54-.063-.794-.114.01-.058.025-.109.017-.182.228.008.545.062.795.1zm-14.288 0c.06.022.033.133.05.196-.259.04-.517.08-.777.117a.68.68 0 0 1-.034-.197c.253-.038.515-.072.761-.116zm15.86.233a.628.628 0 0 1-.034.213c-.247-.055-.52-.083-.777-.132a.702.702 0 0 1 .034-.197c.263.032.503.09.776.116zm-17.414.016c.02.057.036.116.034.196-.263.04-.503.105-.778.133-.004-.073-.034-.12-.033-.197.275-.028.515-.092.777-.132zm18.208.132c.255.052.508.109.778.148-.004.072-.034.119-.034.197-.28-.021-.495-.11-.778-.133-.018-.041.016-.15.034-.212zM22.669 16.726c.156.092.47.098.595.246.099.115.144.486.182.744.203 1.296.287 2.808.332 4.219.008.266.016.583.016.891 0 .298.06.704 0 .91-.041.147-.24.194-.363.264a56.558 56.558 0 0 0-.065-2.843c-.124-.101-.444-.047-.464-.166-.044-.252.267-.09.447-.065-.045-1.272-.177-2.46-.33-3.623-.147-.074-.336-.105-.498-.164-.252.259-.636.939-1.223.81-.22-.047-.363-.342-.464-.545a3.243 3.243 0 0 1-.265-.744c-4.88-.936-11.589-1.016-16.502-.05-.153.655-.43 2.053-1.34 1.52a2.014 2.014 0 0 1-.81-.991 8.31 8.31 0 0 1-.547.133c-.192 1.084-.288 2.268-.346 3.489.166.01.416-.122.595-.1.004.066.028.114.033.18-.166.106-.437.105-.645.166a45.286 45.286 0 0 0-.066 2.976c-.08.022-.273-.122-.347-.213.064-2.301.179-4.553.363-6.732.28-.087.568-.17.844-.264-.04-.383-.117-.827.05-1.09.14-.224.531-.352.81-.432.99-.28 1.979-.05 2.63.413.14.102.247.239.396.299.025-.09-.094-.15-.149-.199-.567-.511-1.498-.958-2.612-.761-.348-1.09-.79-2.142-.794-3.538-.005-1.553.562-2.899 1.205-3.953.66-1.078 1.541-1.954 2.498-2.645a11.504 11.504 0 0 1 8.087-2.051c3.01.369 5.008 1.79 6.45 3.853.69.99 1.248 2.174 1.62 3.524.374 1.352.378 3.098-.05 4.53-1.383-.283-2.637.15-3.125 1.026-.004.015-.016.017-.016.033.498-.678 1.736-1.168 2.976-.86.328.082.746.2.908.43.224.317.122.989-.016 1.373zM16.22 9.382c.055.383.227.783.445.944.376.27.602.001.63-.38.035-.504-.174-1.1-.431-1.324-.105-.09-.299-.145-.412-.115-.256.065-.283.528-.232.875zm-8.649 1.092c-.033.556.16 1.277.529 1.472.43.227.633-.095.661-.495.045-.626-.273-1.714-.86-1.605-.25.047-.313.339-.33.628zm6.83 2.579c-.266.06-.633-.058-.926-.117a22.333 22.333 0 0 0-.91-.164c-.567-.088-1.344-.211-1.9.1-.198.11-.444.351-.465.662-.027.46.342.791.612.993.323.237.663.399 1.092.527.917.278 2.293.353 3.075.017.735-.316 1.706-1.062 1.72-2.05.01-.59-.272-1.119-.859-1.042-.65.085-.882.951-1.44 1.074z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/target.svg b/assets/lib/simple-icons/icons/target.svg
new file mode 100644
index 00000000..77e07f8b
--- /dev/null
+++ b/assets/lib/simple-icons/icons/target.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Target</title><path d="M12.0005 0C18.627 0 24 5.373 24 12.0005 24 18.627 18.627 24 11.9995 24 5.373 24 0 18.627 0 11.9995 0 5.373 5.373 0 12.0005 0zm0 19.826a7.8265 7.8265 0 10-.001-15.652C7.7133 4.2246 4.2653 7.7136 4.2653 12c0 4.2864 3.448 7.7754 7.7342 7.826h.001zm0-3.9853a3.8402 3.8402 0 110-7.6803c2.1204.0006 3.839 1.7197 3.839 3.8401s-1.7186 3.8396-3.839 3.8402z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/tasmota.svg b/assets/lib/simple-icons/icons/tasmota.svg
new file mode 100644
index 00000000..80b4b7f3
--- /dev/null
+++ b/assets/lib/simple-icons/icons/tasmota.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Tasmota</title><path d="M12 0L0 12l1.371 1.372L12 2.743l10.629 10.629L24 12 12 0zm0 8.463a7.41 7.41 0 0 0-2.64 14.334v-2.133a5.464 5.464 0 0 1 1.671-10.17V24h1.94V10.494a5.464 5.464 0 0 1 1.669 10.171v2.133A7.41 7.41 0 0 0 12 8.463z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/tata.svg b/assets/lib/simple-icons/icons/tata.svg
index c099ca7c..28713514 100644
--- a/assets/lib/simple-icons/icons/tata.svg
+++ b/assets/lib/simple-icons/icons/tata.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Tata icon</title><path d="M9.774 11.568c.193-1.322.168-2.013-1.768-1.906-2.223.124-4.476.265-7.849 1.027A5.63 5.63 0 0 0 0 12c0 1.52.618 2.99 1.787 4.254 1.06 1.144 2.556 2.095 4.326 2.752a15.48 15.48 0 0 0 2.014.588c.13-.527.959-3.907 1.616-7.823l.03-.202m14.07-.88c-3.372-.762-5.624-.902-7.846-1.026-1.937-.107-1.962.584-1.768 1.906l.046.298c.65 3.848 1.458 7.16 1.598 7.72C20.595 18.508 24 15.516 24 12c0-.443-.054-.88-.157-1.311m-.491-1.324a7.163 7.163 0 0 0-1.14-1.618c-1.06-1.144-2.555-2.095-4.325-2.752-1.784-.662-3.82-1.011-5.887-1.011-2.068 0-4.103.35-5.887 1.01-1.77.658-3.266 1.61-4.326 2.753A7.17 7.17 0 0 0 .648 9.366c2.304-.557 6.245-1.293 9.904-1.37.353-.008.596.105.756.307.196.248.18 1.128.175 1.522l-.104 10.18a18.507 18.507 0 0 0 1.244 0l-.104-10.18c-.005-.394-.02-1.274.175-1.522.16-.202.403-.315.756-.308 3.658.078 7.597.813 9.902 1.37z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Tata</title><path d="M9.774 11.568c.193-1.322.168-2.013-1.768-1.906-2.223.124-4.476.265-7.849 1.027A5.63 5.63 0 0 0 0 12c0 1.52.618 2.99 1.787 4.254 1.06 1.144 2.556 2.095 4.326 2.752a15.48 15.48 0 0 0 2.014.588c.13-.527.959-3.907 1.616-7.823l.03-.202m14.07-.88c-3.372-.762-5.624-.902-7.846-1.026-1.937-.107-1.962.584-1.768 1.906l.046.298c.65 3.848 1.458 7.16 1.598 7.72C20.595 18.508 24 15.516 24 12c0-.443-.054-.88-.157-1.311m-.491-1.324a7.163 7.163 0 0 0-1.14-1.618c-1.06-1.144-2.555-2.095-4.325-2.752-1.784-.662-3.82-1.011-5.887-1.011-2.068 0-4.103.35-5.887 1.01-1.77.658-3.266 1.61-4.326 2.753A7.17 7.17 0 0 0 .648 9.366c2.304-.557 6.245-1.293 9.904-1.37.353-.008.596.105.756.307.196.248.18 1.128.175 1.522l-.104 10.18a18.507 18.507 0 0 0 1.244 0l-.104-10.18c-.005-.394-.02-1.274.175-1.522.16-.202.403-.315.756-.308 3.658.078 7.597.813 9.902 1.37z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/tauri.svg b/assets/lib/simple-icons/icons/tauri.svg
new file mode 100644
index 00000000..73200eb4
--- /dev/null
+++ b/assets/lib/simple-icons/icons/tauri.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Tauri</title><path d="M15.657 17.282a8.7339 8.7339 0 0 0 3.0125-1.2251 8.728 8.728 0 0 0 3.2216-3.7452 8.7232 8.7232 0 0 0 .6717-4.8932 8.7247 8.7247 0 0 0-2.0931-4.474C19.3375 1.6857 17.8833.7753 16.264.3225a8.7358 8.7358 0 0 0-4.941.07 8.7318 8.7318 0 0 0-4.1117 2.7393 8.726 8.726 0 0 0-1.6336 2.9933 10.1908 10.1908 0 0 1 3.3484-.972 6.1356 6.1356 0 0 1 3.1666-2.2827 6.1387 6.1387 0 0 1 3.4721-.0492 6.1365 6.1365 0 0 1 2.9427 1.8425 6.1326 6.1326 0 0 1 1.4709 3.1439 6.1305 6.1305 0 0 1-.4721 3.4384 6.133 6.133 0 0 1-2.2638 2.6317 6.1312 6.1312 0 0 1-1.3123.6409c.0303.2471.046.4987.046.754a6.1166 6.1166 0 0 1-.3372 2.0094Zm-1.727-6.2691c1.263 0 2.2868-1.0234 2.2868-2.2857 0-1.2624-1.0238-2.2857-2.2868-2.2857s-2.2868 1.0233-2.2868 2.2857c0 1.2623 1.0238 2.2857 2.2868 2.2857ZM8.3665 6.7132a8.7342 8.7342 0 0 0-3.0365 1.23 8.7287 8.7287 0 0 0-3.2215 3.745 8.7235 8.7235 0 0 0-.6718 4.8932A8.7255 8.7255 0 0 0 3.53 21.0555a8.7318 8.7318 0 0 0 4.1877 2.6219 8.7364 8.7364 0 0 0 4.941-.0698 8.7326 8.7326 0 0 0 4.1117-2.7394 8.7258 8.7258 0 0 0 1.6363-3.0021 10.1905 10.1905 0 0 1-3.3497.9789 6.1569 6.1569 0 0 1-.2787.3596 6.1352 6.1352 0 0 1-2.8893 1.925 6.139 6.139 0 0 1-3.4721.0492 6.1363 6.1363 0 0 1-2.9427-1.8425 6.1317 6.1317 0 0 1-1.4709-3.1439 6.13 6.13 0 0 1 .472-3.4385 6.1338 6.1338 0 0 1 2.2639-2.6317 6.1372 6.1372 0 0 1 1.2865-.6318 6.1961 6.1961 0 0 1-.035-.6592c0-.7444.1327-1.458.376-2.118Zm1.6998 6.2738c-1.263 0-2.2868 1.0234-2.2868 2.2858 0 1.2623 1.0239 2.2856 2.2868 2.2856 1.263 0 2.2868-1.0233 2.2868-2.2856 0-1.2624-1.0238-2.2858-2.2868-2.2858Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/taxbuzz.svg b/assets/lib/simple-icons/icons/taxbuzz.svg
new file mode 100644
index 00000000..37117a43
--- /dev/null
+++ b/assets/lib/simple-icons/icons/taxbuzz.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>TaxBuzz</title><path d="M1.79 6.255c3.939-2.066 5.753.089 5.753.089-2.289-.952-5.753-.089-5.753-.089zm6.556.089c-1.245-1.204-.595-4.787-.595-4.787-1.754 3.27.595 4.787.595 4.787zm14.821 8.8s.312.728.505 1.606l-8.548 6.452-2.343-6.373c-.704.236-2.667.723-5.506.055-3.598-.847-3.835-1.516-4.995-2.319-1.16-.803-1.962-2.497-2.156-3.152-.193-.654-.208-1.918.297-2.825.505-.907 1.903-1.501 1.903-1.501s.818-.342 2.988-.446c2.172-.104 3.614.639 3.614.639s-.788-2.601-.238-4.727S10.903.829 10.903.829s1.606.416 2.943 2.602c.885 1.445 1.177 2.263 1.274 2.654 1.535-.355 3.389-1.046 5.349-2.304 0 0 .954 2.695 3.531 10.785l-.833.578zm-11.551-7.76l.55 1.412c4.765.238 7.938-2.453 7.938-2.453l-.327-.847c-4.177 2.84-8.161 1.888-8.161 1.888zm-.776-5.66s1.182 1.691 2.096 4.62c0 0 .981.085 1.762-.227-.001 0-1.506-4.237-3.858-4.393zm-.569 6.734l.557.112-.825-2.364c2.071.228 2.341.138 2.341.138-.424-1.959-1.84-4.675-1.84-4.675-.958.144-1.136 1.293-1.136 1.293-.703 3.267.903 5.496.903 5.496zm-8.942.602c6.69 1.16 9.968 3.769 9.968 3.769L9.891 9.033S8.469 7.505 5.209 7.436c-3.244-.067-3.88 1.624-3.88 1.624zm11.016 6.657l-.728-1.951c-4.62-3.2-10.354-4.504-10.354-4.504s-.156.19-.212 1.026c-.056.836.346 1.628.948 2.598s1.762 1.594 2.564 2.099c.803.505 2.839.978 4.616 1.12 1.787.14 3.166-.388 3.166-.388zm.579-4.705c5.337-.268 7.79-2.787 7.79-2.787l-.446-1.257c-3.345 2.869-7.879 2.497-7.879 2.497l.535 1.547zm.996 2.527c4.668-.788 7.344-3.479 7.344-3.479l-.387-1.189c-3.226 2.81-7.671 2.78-7.671 2.78l.714 1.888zm.967 2.713c3.925-1.527 7.024-4.382 7.024-4.382l-.39-1.137c-3.267 2.754-7.403 3.456-7.403 3.456l.769 2.063zm7.648-2.386l-.479-1.316c-2.341 2.33-6.946 4.393-6.946 4.393l.751 1.94 6.674-5.017zm-18.01 3.077c3.687 3.062 8.08.461 8.08.461-4.72 1.085-8.08-.461-8.08-.461z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/teamcity.svg b/assets/lib/simple-icons/icons/teamcity.svg
new file mode 100644
index 00000000..7d8ac5e2
--- /dev/null
+++ b/assets/lib/simple-icons/icons/teamcity.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>TeamCity</title><path d="m0 0v24h24v-24zm2.664 2.964h7.48v1.832h-2.748v7.196h-1.984v-7.196h-2.748zm9.328 18h-9v-1.5h9zm5.56391-9.21826a4.62 4.62 0 0 1 -2.03591.37426 4.556 4.556 0 0 1 -4.628-4.616v-.024a4.584 4.584 0 0 1 4.708-4.668 4.65561 4.65561 0 0 1 3.56 1.388l-1.264 1.456a3.33594 3.33594 0 0 0 -2.312-1.02 2.67116 2.67116 0 0 0 -2.616 2.8v.028a2.68058 2.68058 0 0 0 2.616 2.836 3.22606 3.22606 0 0 0 2.376-1.056l1.264 1.276a4.61947 4.61947 0 0 1 -1.66809 1.22573z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/teamspeak.svg b/assets/lib/simple-icons/icons/teamspeak.svg
index c96a8142..f9e4ca10 100644
--- a/assets/lib/simple-icons/icons/teamspeak.svg
+++ b/assets/lib/simple-icons/icons/teamspeak.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>TeamSpeak icon</title><path d="M21.604 18.594c-.009-.481-.222-1.262-.539-1.511a.246.246 0 00-.388.118 7.113 7.113 0 01-.346.875 6.373 6.373 0 01-1.568 2.209c-.84.777-1.84 1.331-2.817 1.725-.244.099-.485.187-.722.266l-.006.002c-.158.053-.314.101-.467.146l-.003.001-.22.063-.012.003c-.148.04-.292.078-.433.112l-.017.004-.192.045-.016.004c-.135.03-.264.058-.39.083l-.025.005a22.224 22.224 0 01-.52.093l-.028.004-.136.02-.017.004a23.763 23.763 0 01-.28.038l-.14.017a8.982 8.982 0 01-.543.05h-.004c-4.09.429 1.038 1.325 4.895.647l.026-.005a13.344 13.344 0 00.683-.142c.036-.01.074-.018.11-.027a6.64 6.64 0 001.387-.503c2.386-1.155 2.617-3.084 2.617-3.084.08-.366.12-.782.111-1.262m-10.28-2.832a1.768 1.768 0 00-.3-.535c-.446-.695-1.066-1.322-1.694-1.848a10.72 10.72 0 00-1.043-.792c-.807-.557-1.44-.88-1.44-.88h-.002c-.96-.48-1.836-.01-2.067 1.085a4.605 4.605 0 00.615 3.48c.46.738 1.169 1.088 2.018 1.167.53.05 1.063.079 1.595.117.433.01.865.04 1.286-.103.555-.188.983-.526 1.078-1.123a1.187 1.187 0 00-.045-.568m3.368 1.695c.606.08 1.211.178 1.822.213.82.048 1.44-.215 1.9-.71.575-.62.84-1.341.795-2.15-.045-.814-.759-1.295-1.725-1.127-.863.149-1.628.485-2.402.795-.684.273-1.326.602-1.828 1.068-.707.656-.306 1.525.822 1.798.202.049.41.076.616.113M0 12.532c.023-.375-.033-.812.038-1.248.119-.732.508-1.265 1.166-1.598.163-.082.262-.167.3-.369.286-1.572.917-3 1.85-4.296.107-.148.192-.25.055-.444-.175-.245-.05-.47.132-.675C4.856 2.428 6.44 1.336 8.323.755c4.493-1.386 8.453-.438 11.835 2.842.312.303.729.608.33 1.14-.066.088.052.166.103.235a10.426 10.426 0 011.895 4.4c.031.18.142.236.272.301.813.412 1.212 1.092 1.216 1.985.003.806.083 1.617-.052 2.419-.193 1.153-1.367 1.957-2.503 1.722-.345-.072-.436-.337-.434-.66.006-1.324.032-2.647 0-3.97-.085-3.555-1.69-6.233-4.8-7.942-5.201-2.86-11.874.31-13.02 6.141-.198 1.014-.164 2.032-.153 3.053.01.95 0 1.901-.024 2.851-.008.334-.204.522-.56.539-1.45.067-2.425-.854-2.428-2.304v-.975Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>TeamSpeak</title><path d="M21.604 18.594c-.009-.481-.222-1.262-.539-1.511a.246.246 0 00-.388.118 7.113 7.113 0 01-.346.875 6.373 6.373 0 01-1.568 2.209c-.84.777-1.84 1.331-2.817 1.725-.244.099-.485.187-.722.266l-.006.002c-.158.053-.314.101-.467.146l-.003.001-.22.063-.012.003c-.148.04-.292.078-.433.112l-.017.004-.192.045-.016.004c-.135.03-.264.058-.39.083l-.025.005a22.224 22.224 0 01-.52.093l-.028.004-.136.02-.017.004a23.763 23.763 0 01-.28.038l-.14.017a8.982 8.982 0 01-.543.05h-.004c-4.09.429 1.038 1.325 4.895.647l.026-.005a13.344 13.344 0 00.683-.142c.036-.01.074-.018.11-.027a6.64 6.64 0 001.387-.503c2.386-1.155 2.617-3.084 2.617-3.084.08-.366.12-.782.111-1.262m-10.28-2.832a1.768 1.768 0 00-.3-.535c-.446-.695-1.066-1.322-1.694-1.848a10.72 10.72 0 00-1.043-.792c-.807-.557-1.44-.88-1.44-.88h-.002c-.96-.48-1.836-.01-2.067 1.085a4.605 4.605 0 00.615 3.48c.46.738 1.169 1.088 2.018 1.167.53.05 1.063.079 1.595.117.433.01.865.04 1.286-.103.555-.188.983-.526 1.078-1.123a1.187 1.187 0 00-.045-.568m3.368 1.695c.606.08 1.211.178 1.822.213.82.048 1.44-.215 1.9-.71.575-.62.84-1.341.795-2.15-.045-.814-.759-1.295-1.725-1.127-.863.149-1.628.485-2.402.795-.684.273-1.326.602-1.828 1.068-.707.656-.306 1.525.822 1.798.202.049.41.076.616.113M0 12.532c.023-.375-.033-.812.038-1.248.119-.732.508-1.265 1.166-1.598.163-.082.262-.167.3-.369.286-1.572.917-3 1.85-4.296.107-.148.192-.25.055-.444-.175-.245-.05-.47.132-.675C4.856 2.428 6.44 1.336 8.323.755c4.493-1.386 8.453-.438 11.835 2.842.312.303.729.608.33 1.14-.066.088.052.166.103.235a10.426 10.426 0 011.895 4.4c.031.18.142.236.272.301.813.412 1.212 1.092 1.216 1.985.003.806.083 1.617-.052 2.419-.193 1.153-1.367 1.957-2.503 1.722-.345-.072-.436-.337-.434-.66.006-1.324.032-2.647 0-3.97-.085-3.555-1.69-6.233-4.8-7.942-5.201-2.86-11.874.31-13.02 6.141-.198 1.014-.164 2.032-.153 3.053.01.95 0 1.901-.024 2.851-.008.334-.204.522-.56.539-1.45.067-2.425-.854-2.428-2.304v-.975Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/teamviewer.svg b/assets/lib/simple-icons/icons/teamviewer.svg
index 0716db34..4388146f 100644
--- a/assets/lib/simple-icons/icons/teamviewer.svg
+++ b/assets/lib/simple-icons/icons/teamviewer.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>TeamViewer icon</title><path d="M22.597 24H1.406A1.41 1.41 0 0 1 0 22.594V1.406A1.41 1.41 0 0 1 1.406 0h21.191a1.41 1.41 0 0 1 1.406 1.406v21.188A1.41 1.41 0 0 1 22.597 24zM11.911 2.109c-5.405.047-9.763 4.482-9.802 9.89-.04 5.507 4.381 9.885 9.89 9.89 5.415.003 9.796-4.5 9.89-9.89.097-5.572-4.406-9.939-9.978-9.89zM9.65 8.633l-.889 2.159H15.3l-.889-2.159 6.642 3.365-6.642 3.365.889-2.159H8.761l.882 2.159-6.659-3.365z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>TeamViewer</title><path d="M22.597 24H1.406A1.41 1.41 0 0 1 0 22.594V1.406A1.41 1.41 0 0 1 1.406 0h21.191a1.41 1.41 0 0 1 1.406 1.406v21.188A1.41 1.41 0 0 1 22.597 24zM11.911 2.109c-5.405.047-9.763 4.482-9.802 9.89-.04 5.507 4.381 9.885 9.89 9.89 5.415.003 9.796-4.5 9.89-9.89.097-5.572-4.406-9.939-9.978-9.89zM9.65 8.633l-.889 2.159H15.3l-.889-2.159 6.642 3.365-6.642 3.365.889-2.159H8.761l.882 2.159-6.659-3.365z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ted.svg b/assets/lib/simple-icons/icons/ted.svg
index 520defa6..1634274b 100644
--- a/assets/lib/simple-icons/icons/ted.svg
+++ b/assets/lib/simple-icons/icons/ted.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>TED icon</title><path d="M2.431 9.886H0V7.665h7.53v2.221H5.1v6.45H2.431v-6.45zm5.514-2.221h7.31v2.221h-4.638v1.083h4.638v2.063h-4.638v1.08h4.638v2.225h-7.31V7.665zm10.43 6.451h1.046c1.664 0 1.907-1.352 1.907-2.166 0-.545-.179-2.063-2.115-2.063h-.854v4.23l.016-.001zm-2.67-6.451h4.384C22.98 7.665 24 9.8 24 11.985c0 2.66-1.409 4.351-4.434 4.351h-3.861V7.663v.002z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>TED</title><path d="M0 7.664v2.223h2.43v6.449H5.1v-6.45h2.43V7.665zm7.945 0v8.672h7.31v-2.223h-4.638v-1.08h4.637v-2.066h-4.637v-1.08h4.637V7.664zm7.759 0v8.672h3.863c3.024 0 4.433-1.688 4.433-4.349 0-2.185-1.021-4.323-3.912-4.323zm2.672 2.223h.85c1.931 0 2.102 1.518 2.102 2.063 0 .815-.243 2.163-1.907 2.163h-1.045z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/teespring.svg b/assets/lib/simple-icons/icons/teespring.svg
index a141099b..4854b3d8 100644
--- a/assets/lib/simple-icons/icons/teespring.svg
+++ b/assets/lib/simple-icons/icons/teespring.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Teespring icon</title><path d="M23.86.952c.029 0 .056.004.07.011.015.009.023.027.023.061L22.69 7.176v.029h-.059c-.009 0-.045 0-.104-.016h-.044c-.082-.014-.15-.028-.215-.044-.063-.015-.134-.015-.209-.015-.547-.09-1.085-.164-1.613-.225-.533-.06-1.063-.104-1.594-.135l-.374 7.861-.069-.12c0-.016-.016-.016-.016-.03l-.015-.016c-.016 0-.029 0-.044-.014-.016-.016-.016-.03-.016-.045-.03-.016-.06-.031-.074-.061-.016-.015-.046-.045-.075-.061-.09-.074-.18-.148-.284-.223-.119-.075-.224-.15-.329-.21l-.179-.089-.164-.09c-.016 0-.03 0-.045-.016l-.015-.029.344-8.203h.118c.12 0 .255 0 .39.014.134.016.283.016.418.016l.822.045c.269.016.537.045.806.075l.419.044.404.045h.091c.035 0 .09.016.148.029.076.016.165.03.254.03.091.016.165.016.21.046l.747-3.691c-.015 0-.036 0-.066-.015l-.12-.046c-.522-.104-1.061-.193-1.6-.283-.537-.074-1.079-.135-1.628-.179-.418-.046-.848-.075-1.285-.09-.426-.015-.866-.03-1.3-.03h-.792c0 .03 0 .061-.015.09l-.045.148-.043.14c-.016.089-.045.194-.086.284-.041.104-.074.193-.104.283-.097.18-.194.344-.296.493-.102.165-.206.313-.314.478-.25.3-.531.554-.844.777-.306.225-.643.404-1.001.538-.245.09-.499.165-.762.21-.254.045-.513.074-.776.074-.141 0-.284 0-.434-.016-.15-.014-.293-.029-.434-.059-.404-.074-.793-.209-1.158-.403-.366-.194-.698-.434-.992-.717-.165-.135-.299-.284-.419-.434-.11-.149-.224-.314-.333-.493l-.714.254-.718.269c-.485.164-.962.359-1.43.568-.463.209-.926.434-1.377.672l-.688.374c-.227.134-.456.254-.69.374v.014c0 .016-.01.016-.026.016l-.088.044-.037.029L3.263 8.85l.198-.105c.06-.03.134-.075.211-.105.486-.254.979-.478 1.48-.702.496-.209 1-.418 1.494-.612h.044l2.052 8.231c.329-.142.636-.263.924-.363.294-.102.567-.191.837-.269.514-.141 1.046-.247 1.591-.317.546-.064 1.092-.104 1.639-.104.283 0 .567.016.852.04.27.029.523.059.762.104.284.061.553.15.807.24.239.104.463.208.657.357.225.15.419.314.583.509.149.194.284.403.374.628.089.238.135.478.149.747 0 .269-.03.522-.09.762-.03.134-.074.254-.12.358-.06.12-.119.238-.193.344 0 .015 0 .03-.015.03-.016 0-.016.015-.016.029l-.045.045c-.015.015-.015.03-.015.045s0 .029.015.044l.03.062v.029l.015.029.09.195c.015.059.029.134.029.192.061.254.075.51.045.777-.03.285-.09.554-.179.808-.165.434-.419.807-.763 1.149-.357.345-.807.644-1.344.912-.42.225-.883.404-1.375.553-.508.149-1.061.283-1.674.389-.15.03-.284.06-.418.076l-.389.015-.253.028-.105-1.418v-.016h.045l.03-.015h.149l.06-.046h.18c.06 0 .104-.015.149-.015.283-.045.553-.09.807-.148.27-.062.523-.12.792-.195.269-.074.522-.149.762-.239.239-.073.464-.179.688-.283.254-.135.464-.269.643-.418.18-.149.329-.3.448-.449.075-.09.149-.193.195-.298.044-.104.074-.21.088-.329v-.225l-.119.09c-.015.015-.045.029-.074.044l-.104.047c-.21.134-.434.237-.673.343-.238.104-.493.209-.762.299-.254.09-.508.179-.777.239-.27.073-.538.135-.792.179-.284.045-.554.09-.821.119-.27.031-.538.061-.807.076h-.15c-.254 0-.493 0-.701-.03-.225-.015-.42-.061-.613-.104-.283-.075-.523-.181-.732-.314-.209-.135-.358-.298-.448-.508-.104-.18-.164-.389-.149-.628 0-.225.06-.448.165-.656.104-.195.254-.374.433-.539.18-.164.403-.313.657-.448.21-.104.434-.209.688-.284.238-.074.508-.164.791-.239.225-.059.479-.119.747-.164.27-.044.554-.074.867-.09.104-.015.224-.029.343-.029.121-.015.24-.015.375-.015h.447l.449.044c.134.016.268.03.402.061.135.029.254.045.374.074.075.015.149.045.209.061l.165.059h.014c.016 0 .031.016.031.016l.015.016.044.029-.029.029c-.135.314-.373.568-.747.747-.374.195-.628.314-.792.358h-.014c-.015-.015-.029-.029-.035-.029h-.434c-.138 0-.273 0-.406.015-.135.015-.264.015-.389.029-.279.03-.553.076-.818.12-.268.046-.516.119-.746.195-.145.044-.279.089-.404.148-.124.045-.238.091-.35.149-.063.03-.119.061-.175.09-.054.029-.104.06-.149.091-.029.029-.074.059-.119.089s-.086.074-.119.12c.014 0 .039 0 .06.014l.134.031v.029c.061.015.12.029.18.029.064 0 .135.015.209.015.064.016.127.021.19.021h.603c.254 0 .514-.015.785-.06.27-.041.55-.074.831-.13.284-.061.544-.126.792-.209.246-.076.486-.165.722-.254.134-.045.254-.105.358-.15.119-.06.225-.119.344-.18l.283-.163c.105-.062.225-.135.33-.209.164-.14.313-.314.463-.509.164-.194.239-.418.239-.663 0-.127-.016-.239-.06-.344-.03-.105-.09-.194-.18-.27-.074-.074-.164-.149-.254-.209s-.194-.119-.329-.164c-.254-.09-.523-.164-.808-.194-.268-.039-.508-.06-.731-.06-.075-.016-.149-.016-.239-.016h-.225c-.47 0-.938.035-1.405.105-.468.074-.927.164-1.38.299-.254.06-.5.134-.75.224-.254.104-.516.194-.796.313-.218.09-.444.18-.679.299l-.747.389-.045.03-2.065-8.561-.09.044-.094.045c-.502.223-.993.448-1.476.702-.488.254-.963.508-1.43.777l-.049.029L.046 4.828c0-.016.007-.022.024-.029l.115-.083c.031-.015.063-.036.096-.06.029-.022.053-.041.07-.061.014 0 .026 0 .033-.008h.012c.109-.061.225-.12.34-.194l.364-.224c.216-.119.44-.254.664-.374.24-.119.449-.254.674-.373.462-.238.925-.463 1.388-.672.479-.225.957-.434 1.42-.613.508-.194 1.001-.373 1.494-.537.493-.18 1.001-.344 1.523-.479l.046-.031v.046c.075.313.18.598.344.882.164.268.359.507.582.732.284.238.598.434.956.582.359.135.732.209 1.105.209.046 0 .09-.014.135-.014.037-.016.08-.016.126-.016.374-.03.739-.135 1.091-.314.35-.18.658-.402.922-.688.299-.328.523-.701.643-1.12.135-.418.18-.866.104-1.315l.045-.015 1.016-.044C15.723 0 16.051 0 16.395 0h.643c.553.016 1.091.045 1.629.074.537.031 1.077.09 1.613.15.522.06 1.03.135 1.538.224.51.09 1.003.194 1.511.329l.045.015.089.03.18.045c.06.015.12.029.164.059h.016c.015 0 .03.016.045.016l.029.015-.037-.005z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Teespring</title><path d="M15.78 8.348c-.77 0-1.396.615-1.396 1.37 0 1.075.406 2.058 1.075 2.813.277.312.598.584.956.807a5 5 0 0 0 .736-3.874c-.005-.029-.013-.058-.02-.087a1.392 1.392 0 0 0-1.35-1.029zm-8.612 3.958c.138.366.317.712.533 1.032.356-.223.678-.495.955-.807a4.221 4.221 0 0 0 1.076-2.813c0-.755-.626-1.37-1.397-1.37-.65 0-1.195.438-1.35 1.029-.006.029-.015.057-.02.086a5.002 5.002 0 0 0 .205 2.843zm15.501-.67L24 12.29a5.873 5.873 0 0 1-5.243 3.18 5.958 5.958 0 0 1-1.926-.32 6.745 6.745 0 0 1-4.774 1.963 6.742 6.742 0 0 1-4.774-1.964 5.943 5.943 0 0 1-1.926.32A5.87 5.87 0 0 1 0 12.054l1.362-.595a4.38 4.38 0 0 0 3.995 2.549c.324 0 .641-.036.946-.102a6.45 6.45 0 0 1-.945-3.367 6.512 6.512 0 0 1 .19-1.554c.328-1.208 1.45-2.098 2.786-2.098l.079.002c.08.002.162.008.242.016 1.444.157 2.565 1.357 2.565 2.814 0 1.958-.999 3.687-2.522 4.724a5.244 5.244 0 0 0 3.36 1.21 5.247 5.247 0 0 0 3.358-1.21c-1.523-1.037-2.522-2.767-2.522-4.724 0-1.458 1.122-2.658 2.564-2.814.08-.008.16-.014.242-.016l.08-.002a2.877 2.877 0 0 1 2.832 2.286 6.478 6.478 0 0 1-.8 4.733c.305.066.62.102.945.102 1.71 0 3.191-.967 3.91-2.372z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/tekton.svg b/assets/lib/simple-icons/icons/tekton.svg
new file mode 100644
index 00000000..4695572c
--- /dev/null
+++ b/assets/lib/simple-icons/icons/tekton.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Tekton</title><path d="M1.8823.0002a.924.924 0 0 0-.8906.6777A6.4647 6.4647 0 0 0 .8042 3.133a6.6196 6.6196 0 0 0 .7578 2.3672 7.283 7.283 0 0 0 .9062 1.3066 9.7647 9.7647 0 0 0-.125.7852 10.1225 10.1225 0 0 0-.0722 1.3594c.003.1862.008.375.0293.5644.0428.5405.5351 1.1816.871 1.5938a7.1354 7.1354 0 0 0 2.0255 1.7168.9098.9098 0 0 0 .0332.082c.0827.1763.1864.342.3105.4922a5.9281 5.9281 0 0 0-.5058 1.6738 8.1648 8.1648 0 0 0-.1739 1.3008 2.218 2.218 0 0 0-.4629.2832 2.6568 2.6568 0 0 0-.8457 1.2305 3.252 3.252 0 0 0-.1093.4101l-.2286-.0625-.0253.1602c-.116.7298-.0639 1.3615.2324 2.0058a1.4432 1.4432 0 0 0-.6934.293 1.2313 1.2313 0 0 0-.3535.459c-.1466.3298-.293.7136-.293 1.08 0 .2719.085.5437.2989.7208a.7112.7112 0 0 0 .4492.162h2.3691c.1405.3726.4097.7205.8067.8243.112.0274.2264.0439.3418.0469.122.006.2402.0078.3593.0078.3085.0061.6174.003.9258 0 .4825-.0061.9657-.0151 1.4512-.0274a.7688.7688 0 0 0 .6777-.4433.7727.7727 0 0 0 .6817.4433c.4824.0122.9647.0213 1.4472.0274.3085 0 .6174.003.9258 0a7.143 7.143 0 0 0 .3594-.0078 1.856 1.856 0 0 0 .3398-.047c.397-.1038.6673-.4485.8047-.8241h2.3926a.7059.7059 0 0 0 .4473-.1621c.2137-.1771.3007-.449.3007-.7207-.003-.3665-.1472-.7503-.2968-1.0801-.2107-.4673-.6103-.6878-1.0684-.752.2962-.6443.3485-1.276.2324-2.0058l-.0254-.1602-.205.0567c-.002-.008-.0053-.0194-.006-.0293a.3897.3897 0 0 0 .0255-.0508 6.936 6.936 0 0 1 .4512-.8887 8.6153 8.6153 0 0 1 .7421-1.0742 5.5548 5.5548 0 0 1 .459-.5078c.2901-.281.6561-.5155 1.0684-.543.289-.0199.576.0648.8066.2402.1741.1314.2594.2812.3418.4766.1374.3329.2224.6174.4942.877.4824.455 1.1993.464 1.7734.1953.449-.2107.8282-.5963.9473-1.088a1.326 1.326 0 0 0 .0312-.451c-.0946-.9193-.6603-1.7528-1.3535-2.336-.6321-.5314-1.4495-.92-2.2832-.9414-.7848-.0214-1.5592.221-2.2402.5996-1.1604.6443-2.0822 1.6912-2.7754 2.8515a7.8763 7.8763 0 0 0-.0938-.5254 6.231 6.231 0 0 0-.2363-1.0039 4.7875 4.7875 0 0 0-.17-.455 1.898 1.898 0 0 0 .25-.3282 4.2022 4.2022 0 0 0 .2169-.3984l.037-.084a7.1704 7.1704 0 0 0 2.0235-1.7148c.3451-.4214.8223-1.0458.8711-1.6016.0214-.1863.0282-.3779.0313-.5703a9.9704 9.9704 0 0 0-.0762-1.3828 11.9494 11.9494 0 0 0-.123-.748 7.288 7.288 0 0 0 .9042-1.3087 6.6098 6.6098 0 0 0 .7579-2.3652 6.5344 6.5344 0 0 0-.1836-2.455.9163.9163 0 0 0-.8887-.6817c-1.5636 0-2.914.6384-4.166 1.4629a7.3538 7.3538 0 0 0-7.6836 0C4.7952.6386 3.4458 0 1.8823 0zm.0176.92h.0742c.8673.4763 1.6438 1.4442 2.2149 2.4062a10.47 10.47 0 0 0-.3399.4629 8.0257 8.0257 0 0 0-.9746 2.0468c-.6993-.9405-1.5874-2.6692-.998-4.8984.0091-.003.0142-.0115.0234-.0176zm15.9082 0h.0723l.0214.0214c.5894 2.2293-.2987 3.956-.998 4.8965a7.9805 7.9805 0 0 0-1.0371-2.1406 5.536 5.536 0 0 0-.2735-.3711c.5711-.962 1.3476-1.9299 2.2149-2.4063zM3.187 1.0997c.7726.2077 1.4993.5828 2.1895 1.0195a7.1749 7.1749 0 0 0-.791.7383c-.1314-.2168-.2743-.4271-.4239-.6348a7.4915 7.4915 0 0 0-.9746-1.123zm13.4082 0a7.4917 7.4917 0 0 0-.9746 1.123c-.1496.2077-.2895.4219-.4238.6387a7.2142 7.2142 0 0 0-.791-.7422c.687-.4367 1.4168-.8119 2.1894-1.0195zm-6.8867.17v2.5937c-1.3864.0305-2.7484.4153-3.582 1.1543-.965.852-1.6093 2.3259-1.5391 3.1015.061.6932 1.1732 1.1678 2.6543 1.4121a1.3476 1.3476 0 0 0-.1524.4278 1.9363 1.9363 0 0 0 .002.6367 16.41 16.41 0 0 1-1.5137-.2442 14.9847 14.9847 0 0 1-2.3242-.6953.9417.9417 0 0 1-.0605-.2207S2.8803 6.585 4.4682 4.2092c1.2704-1.8995 3.2461-2.8814 5.2403-2.9395zm.3652 0c1.9605.0549 3.904 1.006 5.1836 2.8534 1.6551 2.3911 1.336 5.3106 1.336 5.3106a.8319.8319 0 0 1-.0528.2129c-.758.298-1.5392.5337-2.336.7031-.4489.0947-.9528.18-1.5116.2441a1.9483 1.9483 0 0 0 .0039-.6386 1.3514 1.3514 0 0 0-.1543-.4278c1.481-.2443 2.5932-.7139 2.6543-1.4101.0702-.7757-.5741-2.2515-1.5391-3.1035-.8367-.736-2.1976-1.1199-3.584-1.1504zm-.8535.7128a.2137.2137 0 0 0-.2168.2168c0 .1932.2345.289.3711.1524.1366-.1366.0389-.3692-.1543-.3692zm1.3418 0a.2176.2176 0 0 0-.2168.2168c0 .1932.2326.289.3691.1524.1366-.1366.0409-.3692-.1523-.3692zm-1.3418.955a.2176.2176 0 0 0-.2168.2169c0 .1932.2345.2909.3711.1543s.0389-.3711-.1543-.3711zm1.3418 0a.2176.2176 0 0 0-.2168.2169c0 .1932.2326.2909.3691.1543.1366-.1366.0409-.3711-.1523-.3711zm-3.5117 3.756c.3303.0024.6414.151.8535.4042.2221.2618.3451.5943.3437.9375a.2196.2196 0 0 1-.2207.2188.2196.2196 0 0 1-.2207-.2188.9864.9864 0 0 0-.2304-.6484.7096.7096 0 0 0-.5293-.2539.6638.6638 0 0 0-.379.1191.8426.8426 0 0 0-.287.3457.2166.2166 0 0 1-.2891.1036c-.1088-.0515-.157-.1803-.1055-.2891a1.3353 1.3353 0 0 1 .4375-.5234 1.1044 1.1044 0 0 1 .627-.1954zm5.6855 0c.2237 0 .441.068.625.1953.1884.1332.3397.3144.4375.5234a.2183.2183 0 0 1-.1054.289.2198.2198 0 0 1-.291-.1035.8427.8427 0 0 0-.2872-.3457.6638.6638 0 0 0-.3789-.1191.7046.7046 0 0 0-.5293.254.9864.9864 0 0 0-.2304.6483.2196.2196 0 0 1-.2207.2149.2196.2196 0 0 1-.2207-.2149 1.427 1.427 0 0 1 .3457-.9375 1.1282 1.1282 0 0 1 .8554-.4043zM9.8862 8.8927h.0098c.9741-.0092 2.1613.4358 2.2773 1.1504.113.684-.2644 1.1483-.8476 1.414-.8643.3207-1.1684-.0976-1.3028-.3633-.064-.1282-.0914-.1942-.125-.1972h-.0078c-.0274.0122-.0626.0723-.1328.1914-.1374.2412-.421.6026-1.0195.4804-.736-.2382-1.2642-.7344-1.1328-1.5253.119-.7146 1.307-1.1596 2.2812-1.1504zm.004.332c-.591 0-1.3048.1726-1.375.539-.1161.6078.7855.9005 1.3808.899.5952-.0016 1.487-.2943 1.371-.899-.0702-.3664-.786-.539-1.3769-.539zm-6.3829.9102a14.973 14.973 0 0 0 1.9961.5722 16.386 16.386 0 0 0 1.707.2676.8424.8424 0 0 0 .084.1523c.2688.4612.7292.7517 1.2422.9258-.2718.113-.4824.2914-.5312.5723a.6502.6502 0 0 0 .0332.332c0 .003.0039.0087.0039.0117a9.4685 9.4685 0 0 1-1.1817-.3164c-1.2123-.4183-2.2242-1.087-3.0273-2.0703a5.1977 5.1977 0 0 1-.3262-.4472zm12.7637.0039c-.0794.1068-.1614.2176-.25.3183-.455.5466-.9397 1.0516-1.5352 1.4395-.8245.5374-1.7539.8718-2.7402 1.0703a.6467.6467 0 0 0 .0332-.3574c-.0519-.2718-.2558-.4457-.5215-.5586.513-.1741.9715-.4678 1.2402-.9258a2.3064 2.3064 0 0 0 .0762-.1504 16.5172 16.5172 0 0 0 1.707-.2676 15.187 15.187 0 0 0 1.9903-.5683zm-6.3477 2.2265c.7513.002 1.4906.1452 1.338.4414-.0703.1374-.2546.2412-.4806.3145-.293.0366-.5913.0617-.8906.08a17.0875 17.0875 0 0 1-.8867-.08c-.2413-.0794-.4322-.1941-.4902-.3438-.1039-.2733.6589-.414 1.4101-.412zm9.6524.5098c.4672.0122.9528.1766 1.3925.4453-.455.1313-.8269.5012-1.0253.9531a1.8268 1.8268 0 0 0-.1309.4453 1.8991 1.8991 0 0 0-.7852-.2226.2515.2515 0 0 0-.037-.0762c-.2657-.3603-.3026-1.0327.0058-1.3809a.7229.7229 0 0 1 .0703-.0664 1.64 1.64 0 0 1 .1035-.08 2.6015 2.6015 0 0 1 .4063-.0176zm-1.1211.17a1.6561 1.6561 0 0 0-.1328.707c.0042.2725.071.5397.1972.7812a2.2462 2.2462 0 0 0-.6894.2754.1692.1692 0 0 0-.0547-.0352c-.171-.0732-.3174-.2405-.4121-.4023-.1038-.1802-.229-.5225-.0977-.7149 0-.003.002-.0028.002-.0058.1435-.0977.2881-.1902.4316-.2696a4.4099 4.4099 0 0 1 .7559-.3359zm-11.9942.203c.1863.0672.3721.1306.5645.1856a6.0804 6.0804 0 0 0 3.246.7168 5.9745 5.9745 0 0 0 1.4415-.2715 5.7607 5.7607 0 0 0 1.0547-.4453 9.3597 9.3597 0 0 0 .5644-.1856 3.743 3.743 0 0 1-1.9824 1.3711c.7176-.0916 1.4625-.276 2.0488-.621.3268.794.5109 1.8688.3399 3.2949-.0427.342-.096.6661-.1602.9746-.7329-.4093-1.7452-.0824-2.5117.3574-.0977-1.414-.403-2.455-.5312-2.8399-.1161-.3542-.5358-.2835-.545.0372.058.1557.0953.3596.129.5214.055.284.0998.5743.1425.8614.0702.4794.1442.9862.1777 1.4687.0062.1069.0126.2174.0157.3242a5.5158 5.5158 0 0 1-1.3828.0078c.003-.1099.0075-.2181.0136-.328.0153-.1955.04-.3956.0645-.588.0366-.3023.0803-.601.123-.9004.0459-.3023.0904-.607.1485-.9062.0213-.113.0504-.2691.084-.4004.006-.3237-.1811-.3295-.291-.3203-.1039.0091-.1803.0935-.2383.2676-.1344.4122-.414 1.421-.5118 2.7617-.8489-.565-1.5345-.7417-2.5117-.2988-.0672-.3146-.1213-.6489-.164-1-.1833-1.5422.0462-2.672.4218-3.4844.5803.4031 1.3302.6326 2.0723.7578a3.7398 3.7398 0 0 1-1.8223-1.3184zm14.8985.4825a.3674.3674 0 0 1 .2597.0976c.003 0 .0067.0028.0098.0059.4886.4764.8402 1.0798.9043 1.6875.0703.6993-1.0642 1.2473-1.5742.7617-.2901-.2748-.2683-.8067-.7324-1.2617a.1822.1822 0 0 0 .0195-.0801c.0214-.5925.4964-1.2384 1.1133-1.211zm-4.5918.3144a1.602 1.602 0 0 0 .1972.5547 1.481 1.481 0 0 0 .459.5039 5.1464 5.1464 0 0 0-.1445.1309c-.1527.1496-.299.3116-.4395.4765a.2593.2593 0 0 0-.1093-.0215c-.1772.0092-.354-.0728-.4883-.1796-.1436-.113-.3512-.3577-.336-.5684a7.122 7.122 0 0 1 .8614-.8965zm-1.2031 1.3496c.0984.1851.235.3476.4003.4766.1604.1277.348.215.5489.2558a9.5353 9.5353 0 0 0-.8496 1.3809 2.3558 2.3558 0 0 0-.6094-.7344 2.1061 2.1061 0 0 0-.2246-.1543 9.9204 9.9204 0 0 1 .7344-1.2246zM14.39 17.012c.5925.2748.9664.9011 1.0488 1.6035-.4794.1405-1.0044.3915-1.4472.6113.165-.6105.2864-1.2316.3633-1.8593a6.107 6.107 0 0 0 .0351-.3555zm-9.2617.0137c.0092.116.021.2307.0332.3437.0769.6278.1982 1.2508.3633 1.8614-.4367-.2169-.9485-.462-1.4219-.6055.0794-.6962.4421-1.3187 1.0254-1.5996zm1.8965 1.666c.5202.0206 1.0323.287 1.414.621.0214 1.472.3308 2.8553.5293 3.127.2016.2688.0938.754.0938.754s-2.602.0671-2.8555 0c-.2535-.0672-.555-.8145-.1367-1.2481.1954-.2015.4753-.251.7227-.248.507.1099.8366.4235 1.1816.8632-.0733-.7543-.4965-.9515-.7988-1.1347-.0977-.058-.1356-.0859-.1875-.1836a10.8387 10.8387 0 0 1-.8828-2.2852c.292-.2027.6077-.278.9199-.2656zm5.4687 0c.3119-.0124.628.063.92.2656a11.035 11.035 0 0 1-.879 2.2852c-.055.0977-.0928.1256-.1874.1836-.3024.1832-.7256.3804-.7989 1.1347.3451-.4397.6747-.7533 1.1817-.8632.2473-.003.5302.0465.7226.248.4184.4336.1168 1.1809-.1367 1.248-.2535.0672-2.8555 0-2.8555 0s-.1058-.4851.0957-.7539c.1986-.2717.51-1.655.5313-3.127.378-.334.8865-.6004 1.4062-.621zm-8.6601.3887c.4642.1221 1.2316.477 1.9004.828.1069.3146.226.6216.3574.924.045.1025.092.2056.1406.3066a1.4131 1.4131 0 0 0-.621.3691 1.3835 1.3835 0 0 0-.379.9063H2.8296c-.2413-.2016.0279-2.03 2.3945-.9551-.5222-.4153-1.412-.9712-1.3906-2.379zm11.8496 0c.0214 1.4077-.8676 1.9636-1.3867 2.3789 2.3636-1.075 2.6349.7535 2.3906.955h-2.4453a1.324 1.324 0 0 0-1.0176-1.246 9.3621 9.3621 0 0 0 .4766-1.2149c.6901-.3695 1.503-.7478 1.9824-.873zm-5.1856.412a9.7574 9.7574 0 0 1-.1796 1.7384c-.0398.2015-.1404.689-.2442.8691a1.4439 1.4439 0 0 0-.0781.1289c-.1487.0023-.2692.0013-.42.002a1.6751 1.6751 0 0 0-.0956-.1582 1.8492 1.8492 0 0 1-.0977-.2754 7.2305 7.2305 0 0 1-.1777-.793 10.22 10.22 0 0 1-.1387-1.5 4.8903 4.8903 0 0 0 1.4316-.0117Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/tele5.svg b/assets/lib/simple-icons/icons/tele5.svg
index 68799e01..540b186b 100644
--- a/assets/lib/simple-icons/icons/tele5.svg
+++ b/assets/lib/simple-icons/icons/tele5.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>TELE5 icon</title><path d="M6.441.682v12.894h9l-9.425 4.11a9.383 9.383 0 0 0 12.351 4.851v.002a9.383 9.383 0 0 0 4.85-12.353l-7.694 3.353V8.293h7.5V.682H6.441zM0 .688v5.216h5.453V.688H3.607v2.484h-.439V.688h-.88v2.484h-.442V.688H0zm2.727 5.689v2.236H.002v2.723h5.453V6.377H2.727zm.878 5.428v2.488h-.437v-2.486h-.88v2.486h-.442v-2.486H0v5.216h5.453v-5.218H3.605zM.002 17.467V23.2h2.732v-1.49h2.721v-2.703h-2.72v-1.54H.001z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>TELE5</title><path d="M6.441.682v12.894h9l-9.425 4.11a9.383 9.383 0 0012.351 4.85v.003a9.383 9.383 0 004.85-12.353l-7.694 3.353V8.293h7.5V.682zM.001.688v5.216h5.452V.688H3.607v2.484h-.439V.688h-.88v2.484h-.442V.688zm2.726 5.689v2.236H.002v2.723h5.453v-4.96zm.878 5.428v2.488h-.437v-2.486h-.88v2.486h-.442v-2.486H0v5.216h5.453v-5.218zM.002 17.467V23.2h2.732v-1.49h2.721v-2.703h-2.72v-1.54H.001z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/telegram.svg b/assets/lib/simple-icons/icons/telegram.svg
index 24e14e5a..c46b0ed7 100644
--- a/assets/lib/simple-icons/icons/telegram.svg
+++ b/assets/lib/simple-icons/icons/telegram.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Telegram icon</title><path d="M23.91 3.79L20.3 20.84c-.25 1.21-.98 1.5-2 .94l-5.5-4.07-2.66 2.57c-.3.3-.55.56-1.1.56-.72 0-.6-.27-.84-.95L6.3 13.7l-5.45-1.7c-1.18-.35-1.19-1.16.26-1.75l21.26-8.2c.97-.43 1.9.24 1.53 1.73z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Telegram</title><path d="M11.944 0A12 12 0 0 0 0 12a12 12 0 0 0 12 12 12 12 0 0 0 12-12A12 12 0 0 0 12 0a12 12 0 0 0-.056 0zm4.962 7.224c.1-.002.321.023.465.14a.506.506 0 0 1 .171.325c.016.093.036.306.02.472-.18 1.898-.962 6.502-1.36 8.627-.168.9-.499 1.201-.82 1.23-.696.065-1.225-.46-1.9-.902-1.056-.693-1.653-1.124-2.678-1.8-1.185-.78-.417-1.21.258-1.91.177-.184 3.247-2.977 3.307-3.23.007-.032.014-.15-.056-.212s-.174-.041-.249-.024c-.106.024-1.793 1.14-5.061 3.345-.48.33-.913.49-1.302.48-.428-.008-1.252-.241-1.865-.44-.752-.245-1.349-.374-1.297-.789.027-.216.325-.437.893-.663 3.498-1.524 5.83-2.529 6.998-3.014 3.332-1.386 4.025-1.627 4.476-1.635z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/telegraph.svg b/assets/lib/simple-icons/icons/telegraph.svg
new file mode 100644
index 00000000..116d1ad6
--- /dev/null
+++ b/assets/lib/simple-icons/icons/telegraph.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Telegraph</title><path d="M0 0v24h24V0H0zm6 6h12v3h-4.5v9h-3V9H6V6Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/temporal.svg b/assets/lib/simple-icons/icons/temporal.svg
new file mode 100644
index 00000000..5292f26e
--- /dev/null
+++ b/assets/lib/simple-icons/icons/temporal.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Temporal</title><path d="M16.206 7.794C15.64 3.546 14.204 0 12 0 9.796 0 8.361 3.546 7.794 7.794 3.546 8.36 0 9.796 0 12c0 2.204 3.546 3.639 7.794 4.206C8.36 20.453 9.796 24 12 24c2.204 0 3.639-3.546 4.206-7.794C20.454 15.64 24 14.204 24 12c0-2.204-3.547-3.64-7.794-4.206Zm-8.55 7.174c-4.069-.587-6.44-1.932-6.44-2.969 0-1.036 2.372-2.381 6.44-2.969-.09.98-.137 1.98-.137 2.97 0 .99.047 1.99.137 2.968zM12 1.215c1.036 0 2.381 2.372 2.969 6.44a32.718 32.718 0 0 0-5.938 0c.587-4.068 1.932-6.44 2.969-6.44Zm4.344 13.753c-.2.03-1.022.126-1.23.146-.02.209-.117 1.03-.145 1.23-.588 4.068-1.933 6.44-2.97 6.44-1.036 0-2.38-2.372-2.968-6.44-.03-.2-.126-1.022-.147-1.23a31.833 31.833 0 0 1 0-6.23 31.813 31.813 0 0 1 7.46.146c4.068.587 6.442 1.933 6.442 2.969-.001 1.036-2.374 2.382-6.442 2.97z"/></svg>
diff --git a/assets/lib/simple-icons/icons/tencentqq.svg b/assets/lib/simple-icons/icons/tencentqq.svg
index db1de521..b80e052f 100644
--- a/assets/lib/simple-icons/icons/tencentqq.svg
+++ b/assets/lib/simple-icons/icons/tencentqq.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 24 24"><title>Tencent QQ icon</title><path d="M21.395 15.035a39.548 39.548 0 0 0-.803-2.264l-1.079-2.695c.001-.032.014-.562.014-.836C19.526 4.632 17.351 0 12 0S4.474 4.632 4.474 9.241c0 .274.013.804.014.836l-1.08 2.695a38.97 38.97 0 0 0-.802 2.264c-1.021 3.283-.69 4.643-.438 4.673.54.065 2.103-2.472 2.103-2.472 0 1.469.756 3.387 2.394 4.771-.612.188-1.363.479-1.845.835-.434.32-.379.646-.301.778.343.578 5.883.369 7.482.189 1.6.18 7.14.389 7.483-.189.078-.132.132-.458-.301-.778-.483-.356-1.233-.646-1.846-.836 1.637-1.384 2.393-3.302 2.393-4.771 0 0 1.563 2.537 2.103 2.472.251-.03.581-1.39-.438-4.673zM12.662 4.846c.039-1.052.659-1.878 1.385-1.846s1.281.912 1.242 1.964c-.039 1.051-.659 1.878-1.385 1.846s-1.282-.912-1.242-1.964zM9.954 3c.725-.033 1.345.794 1.384 1.846.04 1.052-.517 1.931-1.242 1.963-.726.033-1.346-.794-1.385-1.845C8.672 3.912 9.228 3.033 9.954 3zM7.421 8.294c.194-.43 2.147-.908 4.566-.908h.026c2.418 0 4.372.479 4.566.908a.14.14 0 0 1 .014.061c0 .031-.01.059-.026.083-.163.238-2.333 1.416-4.553 1.416h-.026c-2.221 0-4.39-1.178-4.553-1.416a.136.136 0 0 1-.014-.144zm10.422 8.622c-.22 3.676-2.403 5.987-5.774 6.021h-.137c-3.37-.033-5.554-2.345-5.773-6.021-.081-1.35.001-2.496.147-3.43.318.063.638.122.958.176v3.506s1.658.334 3.318.103v-3.225c.488.027.96.04 1.406.034h.025c1.678.021 3.714-.204 5.683-.594.146.934.227 2.08.147 3.43zM10.48 5.804c.313-.041.542-.409.508-.825-.033-.415-.314-.72-.629-.679-.313.04-.541.409-.508.824.034.417.315.72.629.68zM14.479 5.156c.078.037.221.042.289-.146.035-.095.025-.165-.009-.214-.023-.033-.133-.118-.371-.176-.904-.22-1.341.384-1.405.499-.04.072-.012.176.056.227.067.051.139.037.179-.006.58-.628 1.21-.208 1.261-.184z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Tencent QQ</title><path d="M21.395 15.035a39.548 39.548 0 0 0-.803-2.264l-1.079-2.695c.001-.032.014-.562.014-.836C19.526 4.632 17.351 0 12 0S4.474 4.632 4.474 9.241c0 .274.013.804.014.836l-1.08 2.695a38.97 38.97 0 0 0-.802 2.264c-1.021 3.283-.69 4.643-.438 4.673.54.065 2.103-2.472 2.103-2.472 0 1.469.756 3.387 2.394 4.771-.612.188-1.363.479-1.845.835-.434.32-.379.646-.301.778.343.578 5.883.369 7.482.189 1.6.18 7.14.389 7.483-.189.078-.132.132-.458-.301-.778-.483-.356-1.233-.646-1.846-.836 1.637-1.384 2.393-3.302 2.393-4.771 0 0 1.563 2.537 2.103 2.472.251-.03.581-1.39-.438-4.673zM12.662 4.846c.039-1.052.659-1.878 1.385-1.846s1.281.912 1.242 1.964c-.039 1.051-.659 1.878-1.385 1.846s-1.282-.912-1.242-1.964zM9.954 3c.725-.033 1.345.794 1.384 1.846.04 1.052-.517 1.931-1.242 1.963-.726.033-1.346-.794-1.385-1.845C8.672 3.912 9.228 3.033 9.954 3zM7.421 8.294c.194-.43 2.147-.908 4.566-.908h.026c2.418 0 4.372.479 4.566.908a.14.14 0 0 1 .014.061c0 .031-.01.059-.026.083-.163.238-2.333 1.416-4.553 1.416h-.026c-2.221 0-4.39-1.178-4.553-1.416a.136.136 0 0 1-.014-.144zm10.422 8.622c-.22 3.676-2.403 5.987-5.774 6.021h-.137c-3.37-.033-5.554-2.345-5.773-6.021-.081-1.35.001-2.496.147-3.43.318.063.638.122.958.176v3.506s1.658.334 3.318.103v-3.225c.488.027.96.04 1.406.034h.025c1.678.021 3.714-.204 5.683-.594.146.934.227 2.08.147 3.43zM10.48 5.804c.313-.041.542-.409.508-.825-.033-.415-.314-.72-.629-.679-.313.04-.541.409-.508.824.034.417.315.72.629.68zM14.479 5.156c.078.037.221.042.289-.146.035-.095.025-.165-.009-.214-.023-.033-.133-.118-.371-.176-.904-.22-1.341.384-1.405.499-.04.072-.012.176.056.227.067.051.139.037.179-.006.58-.628 1.21-.208 1.261-.184z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/tencentweibo.svg b/assets/lib/simple-icons/icons/tencentweibo.svg
deleted file mode 100755
index be1bb084..00000000
--- a/assets/lib/simple-icons/icons/tencentweibo.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Tencent Weibo icon</title><path d="M4.252 23.936a.97.97 0 0 1-.474-.466c-.08-.167-.086-.222-.086-.653 0-.93.15-2.428.362-3.587.698-3.827 2.373-7.127 4.915-9.671l.574-.58-.074-.293c-.14-.561-.079-1.306.149-1.826.25-.564.784-1.142 1.3-1.416.134-.071.25-.127.253-.123.008 0 .066-.021.137-.049.07-.03.153-.061.189-.068.034-.006.095-.023.14-.034a2.93 2.93 0 0 1 1.341 0c.038.007.11.031.165.052.05.02.091.027.091.02 0-.01.172.072.375.177.61.315 1.03.75 1.317 1.362.222.465.273.704.271 1.248-.004.398-.017.506-.095.764-.182.605-.45 1.004-.965 1.456-.117.1-.25.202-.295.23a7.209 7.209 0 0 1-.54.268c-.011.005-.04.019-.068.03-.027.013-.091.026-.144.036a.562.562 0 0 0-.127.035c-.014.01-.119.026-.23.038-.111.01-.255.023-.32.033-.148.021-.609-.031-.872-.096a3.027 3.027 0 0 1-.623-.262l-.26-.137-.11.08c-.146.114-.835.85-1.186 1.27-2.335 2.805-3.652 6.45-3.827 10.62-.027.628-.052.913-.088 1.023-.072.193-.28.419-.472.512a.993.993 0 0 1-.723.007zm7.853-7.88a1.684 1.684 0 0 0-.307-.038 5.104 5.104 0 0 1-.839-.105c-.038-.007-.126-.021-.2-.035a.753.753 0 0 1-.166-.037.566.566 0 0 0-.122-.034 1.821 1.821 0 0 1-.23-.069.535.535 0 0 0-.147-.048 2.58 2.58 0 0 1-.28-.086 1.747 1.747 0 0 0-.28-.082c-.025.017-.34-.208-.418-.3-.212-.253-.29-.643-.182-.903.148-.343.504-.6.849-.609.116-.003.23.01.256.034.028.02.05.031.05.017 0-.013.036.004.083.035s.086.044.086.031c0-.014.022-.012.045.007.044.037.335.136.462.163.04.007.089.022.106.031s.08.029.143.037c.065.006.246.042.407.073.315.058 1.33.089 1.54.044.064-.014.197-.035.289-.044.096-.007.195-.024.223-.035.029-.01.1-.024.154-.034.14-.024.287-.057.393-.095.027-.011.12-.038.203-.063.084-.02.191-.057.238-.077.049-.019.11-.038.139-.045.023-.005.23-.1.46-.213a6.243 6.243 0 0 0 2.29-1.92c.275-.394.699-1.232.843-1.677.721-2.254.147-4.733-1.478-6.372a6.522 6.522 0 0 0-2.328-1.457 4.057 4.057 0 0 0-.412-.123 3.08 3.08 0 0 1-.246-.057 3.39 3.39 0 0 0-.188-.048 3.985 3.985 0 0 0-.479-.066 2.042 2.042 0 0 1-.273-.037c-.055-.02-.855-.013-1.06.007-.243.02-.396.044-.564.077a3.96 3.96 0 0 1-.257.052l-.171.038-.137.034a.608.608 0 0 0-.1.032.096.096 0 0 0-.057.027c-.015.016-.059.027-.099.027a.191.191 0 0 0-.114.041c-.023.024-.04.028-.04.013 0-.017-.024-.01-.05.015-.03.023-.052.03-.052.02 0-.014-.036-.005-.076.02-.045.02-.093.045-.113.048-.071.014-.729.348-.93.48-.462.29-.627.423-1.054.85-.533.53-.818.924-1.145 1.575a6.276 6.276 0 0 0-.581 3.931c.06.359.143.65.304 1.088.061.163.068.23.044.367-.098.55-.707.957-1.152.772-.065-.026-.12-.045-.12-.033 0 .037-.287-.2-.376-.312a1.87 1.87 0 0 1-.205-.42c-.469-1.301-.55-2.946-.216-4.368a8.318 8.318 0 0 1 1.587-3.222c.315-.39.991-1.053 1.358-1.337.274-.21.899-.622.944-.622.007 0 .13-.069.273-.155a2.15 2.15 0 0 1 .26-.136c0 .01.065-.018.147-.058.079-.042.16-.08.178-.082.02-.004.096-.035.171-.065.075-.036.136-.055.14-.048 0 .005.027-.007.058-.035.034-.024.06-.034.06-.02 0 .015.023.008.05-.017.027-.024.05-.03.05-.018 0 .014.025.007.052-.017s.051-.03.051-.016.025.006.052-.018c.027-.023.05-.033.05-.02 0 .01.043.003.096-.018.052-.02.12-.043.156-.05.054-.015.163-.04.246-.061a.887.887 0 0 0 .101-.032c.038-.01.124-.03.189-.04.065-.01.263-.042.437-.068.237-.038.537-.05 1.215-.043.492.007.945.021.998.031.058.012.172.031.254.041.086.015.214.038.29.059.079.016.192.04.257.052a.629.629 0 0 1 .154.037.23.23 0 0 0 .082.034c.1.024.16.04.17.045.006.007.017.01.035.012l.264.09c.134.044.246.084.255.084s.05.022.086.043c.037.02.08.037.096.04.014 0 .072.028.127.056.057.03.102.046.102.037 0-.024.742.379.949.516.105.072.22.148.252.164.347.212.861.643 1.283 1.077a8.174 8.174 0 0 1 2.154 4.07c.082.414.096.555.108 1.334.015.998-.024 1.392-.215 2.14-.402 1.574-1.23 2.908-2.541 4.098a10 10 0 0 1-1.22.882c-.18.108-1.044.537-1.044.52 0-.01-.033.004-.074.028-.045.024-.086.045-.096.045-.011 0-.125.04-.258.084-.128.045-.246.086-.255.086l-.069.028a.569.569 0 0 1-.137.037c-.167.035-.24.052-.269.069a.554.554 0 0 1-.145.037 3.77 3.77 0 0 0-.273.049 5.506 5.506 0 0 1-.715.089c-.575.045-.875.057-.889.04z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/tensorflow.svg b/assets/lib/simple-icons/icons/tensorflow.svg
index a149d938..9b8df1b9 100644
--- a/assets/lib/simple-icons/icons/tensorflow.svg
+++ b/assets/lib/simple-icons/icons/tensorflow.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>TensorFlow icon</title><path d="M19.6 12l.1 4.7-3.1-1.8v6.7L12.5 24V0l10.2 5.9v5.3l-6.1-3.6v2.7zM1.3 5.9L11.5 0v24l-4.1-2.4v-14l-6.1 3.6z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>TensorFlow</title><path d="M1.292 5.856L11.54 0v24l-4.095-2.378V7.603l-6.168 3.564.015-5.31zm21.43 5.311l-.014-5.31L12.46 0v24l4.095-2.378V14.87l3.092 1.788-.018-4.618-3.074-1.756V7.603l6.168 3.564z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/teradata.svg b/assets/lib/simple-icons/icons/teradata.svg
index ebf3f42c..70fceb38 100644
--- a/assets/lib/simple-icons/icons/teradata.svg
+++ b/assets/lib/simple-icons/icons/teradata.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Teradata icon</title><path d="M12 0C5 0 0 5.65 0 12.08C0 18.83 5 24 12 24S24 18.83 24 12.08C24 5.65 19 0 12 0M8.47 3.44H11.97V6.7H15.55V9.56H11.97V14.78C11.97 16.36 12.74 17.05 13.9 17.05C14.32 17.05 14.88 16.93 15.41 16.73C15.79 17.73 16.46 18.63 17.18 19.35A7 7 0 0 1 13.66 20.32C10.54 20.32 8.47 18.67 8.47 15.04V3.45Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Teradata</title><path d="M12 0C5 0 0 5.65 0 12.08C0 18.83 5 24 12 24S24 18.83 24 12.08C24 5.65 19 0 12 0M8.47 3.44H11.97V6.7H15.55V9.56H11.97V14.78C11.97 16.36 12.74 17.05 13.9 17.05C14.32 17.05 14.88 16.93 15.41 16.73C15.79 17.73 16.46 18.63 17.18 19.35A7 7 0 0 1 13.66 20.32C10.54 20.32 8.47 18.67 8.47 15.04V3.45Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/teratail.svg b/assets/lib/simple-icons/icons/teratail.svg
new file mode 100644
index 00000000..3d0f8924
--- /dev/null
+++ b/assets/lib/simple-icons/icons/teratail.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>teratail</title><path d="M9.81.968h4.375L24 23.032h-5.107L12.121 6.605h-.198L5.148 23.03H0Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/terraform.svg b/assets/lib/simple-icons/icons/terraform.svg
index b79b2c94..7aafae13 100644
--- a/assets/lib/simple-icons/icons/terraform.svg
+++ b/assets/lib/simple-icons/icons/terraform.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Terraform icon</title><path d="M8.283 4.265l7.433 3.776v7.551l-7.433-3.776V4.265zm8.248 3.776v7.551l7.436-3.776V4.265l-7.436 3.776zM.035.051v7.551l7.433 3.776V3.827L.035.051zm8.248 20.141l7.433 3.776V16.42l-7.433-3.776v7.548z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Terraform</title><path d="M1.44 0v7.575l6.561 3.79V3.787zm21.12 4.227l-6.561 3.791v7.574l6.56-3.787zM8.72 4.23v7.575l6.561 3.787V8.018zm0 8.405v7.575L15.28 24v-7.578z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/tesco.svg b/assets/lib/simple-icons/icons/tesco.svg
new file mode 100644
index 00000000..ee781585
--- /dev/null
+++ b/assets/lib/simple-icons/icons/tesco.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Tesco</title><path d="M11.621 8.7913c-1.0182 0-2.0126.3081-2.0126 1.3264 0 1.7523 3.0784.8285 3.0784 1.8941 0 .3552-.5446.4976-.9709.4976-.7814 0-1.3499-.1186-2.0366-.5212v.8764c.521.1657 1.208.2602 1.9894.2602 1.0656 0 2.0602-.2841 2.0602-1.3024 0-1.847-3.0787-1.0182-3.0787-1.9181 0-.3552.4974-.4972.9236-.4972.7341 0 1.5155.2131 1.9418.6157v-.9473h-.0473c-.5446-.1657-1.3026-.2842-1.8472-.2842zm9.7329 0c-1.6103.0237-2.7233.9236-2.7233 2.226 0 1.255 1.0184 2.1075 2.5103 2.1075 1.5865 0 2.6996-.8996 2.6996-2.202 0-1.2787-.9948-2.1315-2.4866-2.1315zm-4.31.024c-1.847 0-3.0547.8758-3.0547 2.2256 0 1.2314 1.1132 2.0603 2.7945 2.0603.5447 0 1.018-.071 1.5863-.213V11.846c-.4026.4262-.876.592-1.397.592-.9945 0-1.6578-.6154-1.6578-1.5153 0-.8762.7106-1.5157 1.6815-1.5157.5447 0 .9709.1893 1.3024.5208v-.9945c-.3552-.0947-.8052-.1181-1.2551-.1181zM.16 8.9334v.9945c.3552-.2605 1.0658-.3787 1.8472-.3787v2.6996c0 .4026-.0239.4971-.2133.7103h1.563c-.1658-.2132-.213-.3314-.213-.7103V9.5256h.0472c.6868 0 1.4917.1182 1.847.4023v-.9945zm5.3044 0c.1657.2131.1894.3318.1894.7107v2.6047c0 .4026-.0237.5208-.1894.7103h3.7654v-.971c-.521.379-1.492.3793-1.8945.3556h-.545v-1.113h.4028c.2842 0 .7576.0234 1.0418.1181v-.8287c-.2842.0947-.7813.1185-1.0418.1185h-.4027V9.5728h.5449c.4973 0 1.3496.095 1.6575.3791V8.9334zm15.7474.4973c.8288 0 1.3737.6869 1.3737 1.5394.0236.8288-.5212 1.5153-1.35 1.5153-.8525 0-1.397-.6865-1.397-1.5153 0-.8525.5445-1.5394 1.3733-1.5394zm-19.3703 4.689c-.4973 0-.8763.2602-1.0658.4496 0 0-.45.45-.7578.6158-.0237 0-.0237.0236 0 .0236h2.7945c.5446 0 .805-.1895 1.1366-.4736 0 0 .4736-.4497.8288-.5918.0236 0 .0236-.0236 0-.0236zm4.8068 0c-.4973 0-.876.2602-1.0418.4496 0 0-.45.45-.7579.6158-.0236 0-.0236.0236 0 .0236H7.643c.5447 0 .8051-.1895 1.1367-.4736 0 0 .4736-.4497.8051-.5918.0237 0 .0237-.0236 0-.0236zm4.7835 0c-.4736 0-.8523.2602-1.0418.4496 0 0-.45.45-.7578.6158-.0237 0-.0237.0236 0 .0236h2.794c.5447 0 .8056-.1895 1.1371-.4736 0 0 .4736-.4497.8051-.5918.0237 0 .0237-.0236 0-.0236zm4.8071 0c-.4736 0-.8523.2602-1.0417.4496 0 0-.45.45-.7579.6158-.0237 0-.0237.0236 0 .0236h2.7941c.5447 0 .8051-.1895 1.1367-.4736 0 0 .4736-.4497.805-.5918.0238 0 .0238-.0236 0-.0236zm4.8072 0c-.4736 0-.8523.2602-1.0654.4496 0 0-.45.45-.7579.6158-.0237 0-.0237.0236 0 .0236h2.8178c.5446 0 .805-.1895 1.1366-.4736 0 0 .4736-.4497.8051-.5918.0237 0 .0237-.0236 0-.0236z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/tesla.svg b/assets/lib/simple-icons/icons/tesla.svg
index 52a05846..77e66012 100644
--- a/assets/lib/simple-icons/icons/tesla.svg
+++ b/assets/lib/simple-icons/icons/tesla.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Tesla icon</title><path d="M12 5.362l2.475-3.026s4.245.09 8.471 2.054c-1.082 1.636-3.231 2.438-3.231 2.438-.146-1.439-1.154-1.79-4.354-1.79L12 24 8.619 5.034c-3.18 0-4.188.354-4.335 1.792 0 0-2.146-.795-3.229-2.43C5.28 2.431 9.525 2.34 9.525 2.34L12 5.362l-.004.002H12v-.002zm0-3.899c3.415-.03 7.326.528 11.328 2.28.535-.968.672-1.395.672-1.395C19.625.612 15.528.015 12 0 8.472.015 4.375.61 0 2.349c0 0 .195.525.672 1.396C4.674 1.989 8.585 1.435 12 1.46v.003z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Tesla</title><path d="M12 5.362l2.475-3.026s4.245.09 8.471 2.054c-1.082 1.636-3.231 2.438-3.231 2.438-.146-1.439-1.154-1.79-4.354-1.79L12 24 8.619 5.034c-3.18 0-4.188.354-4.335 1.792 0 0-2.146-.795-3.229-2.43C5.28 2.431 9.525 2.34 9.525 2.34L12 5.362l-.004.002H12v-.002zm0-3.899c3.415-.03 7.326.528 11.328 2.28.535-.968.672-1.395.672-1.395C19.625.612 15.528.015 12 0 8.472.015 4.375.61 0 2.349c0 0 .195.525.672 1.396C4.674 1.989 8.585 1.435 12 1.46v.003z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/testcafe.svg b/assets/lib/simple-icons/icons/testcafe.svg
new file mode 100644
index 00000000..2a8a320b
--- /dev/null
+++ b/assets/lib/simple-icons/icons/testcafe.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>TestCafe</title><path d="m20.315 4.319-8.69 8.719-3.31-3.322-2.069 2.076 5.379 5.398 10.76-10.796zM5.849 14.689 0 19.682h24l-5.864-4.991h-3.2l-1.024.896h3.584l3.072 2.815H3.417l3.072-2.815h2.688l-.896-.896z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/testin.svg b/assets/lib/simple-icons/icons/testin.svg
new file mode 100644
index 00000000..8ee49e36
--- /dev/null
+++ b/assets/lib/simple-icons/icons/testin.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Testin</title><path d="M5.052 9.923H3.067v5.232H1.985V9.923H0V8.841h5.052v1.082zm3.459 1.74c.413.788.326 1.696.326 1.696H5.31c.134.391.461.718 1.182.718h2.172v1.083H6.492c-1.028 0-1.587-.451-1.874-.829-.304-.399-.471-.936-.471-1.513 0-1.165.806-2.345 2.345-2.345.897-.001 1.616.421 2.019 1.19zm-.895.659c-.152-.35-.469-.767-1.124-.767-.74 0-1.046.411-1.173.767h2.297zm4.971-.05H10.89a.344.344 0 0 1-.344-.344.4.4 0 0 1 .118-.279.322.322 0 0 1 .224-.099h2.47v-1.082h-2.44c-.429 0-.75.147-1.018.415a1.486 1.486 0 0 0-.436 1.045c0 .787.64 1.427 1.427 1.427h1.697c.212 0 .384.17.384.378 0 .19-.157.344-.35.344H9.719v1.083h2.902c.79 0 1.433-.64 1.433-1.426 0-.806-.658-1.462-1.467-1.462zm3.839-3.427h-1.083v1.624h-1.26v1.083h1.26v1.533c0 1.086 1.118 2.075 2.345 2.075v-1.083c-.68 0-1.263-.546-1.263-.992v-1.533h1.265v-1.083h-1.265V8.845zm1.981 6.31h1.083v-4.691h-1.083v4.691zm.542-6.311a.54.54 0 1 0 0 1.081.54.54 0 0 0 0-1.081zm3.112 1.617c-1.02 0-1.849.825-1.849 1.838v2.856h1.083v-2.856c0-.417.344-.755.767-.755.44 0 .857.367.857.755v2.856H24v-2.856c0-.996-.888-1.838-1.939-1.838z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/testinglibrary.svg b/assets/lib/simple-icons/icons/testinglibrary.svg
new file mode 100644
index 00000000..45bf49c3
--- /dev/null
+++ b/assets/lib/simple-icons/icons/testinglibrary.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Testing Library</title><path d="M23.447 9.756c.028.05.053.113.078.186-.028-.06-.047-.129-.078-.186.592 2.304-1.95 5.003-5.13 4.239h.001c4.596-3.01 2.332-6.772.19-8.58-1.762-1.49-.721-1.95.021-1.95.237 0 .443.046.519.121l-.005-.004.006.004c-.018-1.433-5.066-1.11-.65 3.494 2.268 2.365-.408 7.596-3.596 3.618a.974.974 0 0 1-.071-.113c.515-.214.937-.795.937-1.753a2.383 2.383 0 0 0-.197-.986c.368-.75.707-1.647.707-2.77 0-2.684-1.742-5.076-4.18-5.076s-4.18 2.392-4.18 5.076c0 1.123.339 2.02.707 2.771a2.374 2.374 0 0 0-.197.988c0 .958.421 1.54.937 1.753a.985.985 0 0 1-.072.113C6.006 14.679 3.33 9.447 5.598 7.083c4.417-4.604-.633-4.926-.651-3.494l.008-.004c.078-.074.28-.12.515-.12.742 0 1.783.46.021 1.95-2.133 1.8-4.383 5.538.139 8.542.018.013.03.027.049.04-3.176.764-5.714-1.928-5.131-4.232l.004-.01c-.001.002-.002.005-.004.006l.001-.003-.003.007c-1.174 1.61-.606 5.779 3.778 6.168.019.003.035.009.054.012-4.36 1-3.048 7.02.021 6.056L4.388 22l.016-.003C2.27 21.652 2.11 19 3.176 18.087c1.172-1.006 2.519-.137 5.302-.932l.03-.004c-.03 2.446 2.352 3.76 1.103 5.16-1.316 1.473-3.112-.1-2.858-1.55l.006-.029-.004.008v-.004l-.004.012C5.65 22.598 7.044 24 8.61 24c.899 0 1.855-.462 2.429-1.567 1.214-2.337-2.385-6.432.96-6.432 3.344 0-.255 4.095.959 6.432.574 1.105 1.53 1.567 2.43 1.567 1.571 0 2.97-1.411 1.85-3.268l.005.021-.006-.017c.276 1.457-1.533 3.057-2.855 1.575-1.244-1.404 1.131-2.718 1.106-5.163 2.806.812 4.157-.072 5.334.94 1.066.911.906 3.564-1.228 3.91h.007c3.07.958 4.377-5.054.018-6.057l.005-.001c4.44-.362 5.009-4.573 3.822-6.184zm-20.238.39C3.072 7.9 5.019 6.073 5.62 5.565c.838-.707 1.165-1.272.998-1.727a.809.809 0 0 0-.656-.512 1.411 1.411 0 0 0-.573.03c.169-.082.365-.13.574-.13.475 0 .866.223.995.569.117.313.12 1.007-1.174 2.133-2.047 1.783-2.213 3.922-1.685 5.33.458 1.223 1.47 2.014 2.58 2.014.177 0 .355-.02.533-.057-.54.46-1.16.61-1.412.656-1.494-1.045-2.512-2.419-2.591-3.727zm5.208 6.873c-1.135.302-2.295.319-3.038.323-.924.006-1.655.01-2.333.593-.617.528-.873 1.594-.609 2.536.091.325.19.656.426.857.178.153.482.37.787.522l-.016-.004c.019.01.033.023.052.033-.993-.212-1.572-1.18-1.642-2.134-.088-1.205.602-2.728 2.832-3.055.354-.052.728-.083 1.101-.114.91-.076 1.85-.155 2.497-.54-.024.38-.046.788-.057.983zm.25-2.684c-.65.998-1.936 1.153-3.07 1.29-.32.038-.613.083-.883.138l-.356-.024c-1.801-.156-3.141-1.006-3.775-2.396a4.068 4.068 0 0 1-.353-2.055s.038-.376.108-.77c-.087 1.095.207 2.138.88 2.997a4.649 4.649 0 0 0 3.636 1.762c1.33 0 2.588-.59 3.545-1.663.33-.37.478-.398.516-.398.128.186.019.708-.247 1.119zm6.372-5.503c0 1.347-1.527 1.347-1.527 0s1.527-1.347 1.527 0zM13.234 3.34c0 .741-1.235.741-1.235 0 0-.74 1.235-.74 1.235 0zm-.258 8.156c0 .749-.06 1.356-.133 1.356s-.126-.605-.125-1.355c0-.75.062-1.356.133-1.356.07 0 .128.606.125 1.355zm-.952-1.614c.056 0 .1.73.1 1.631s-.044 1.631-.1 1.631-.1-.73-.1-1.63c0-.902.045-1.632.1-1.632zm-.193-8.21c0 .511-.849.511-.849 0s.85-.506.85 0zm-.587 4.22c0-.354.587-.351.587 0 0 .354-.587.354-.587 0zm.046 5.622c0 .768-.064 1.39-.137 1.39-.073 0-.132-.622-.131-1.389s.064-1.389.138-1.389c.074 0 .132.62.13 1.388zm0-7.495c0 .51-.849.51-.849 0s.849-.51.849 0zm-1.147-1.234c0 .353-.587.353-.587 0s.587-.353.587 0zm-.08 2.508c0 .255-.425.255-.425 0 0-.256.424-.256.424 0zm-1.1 3.54c0-1.347 1.528-1.347 1.528 0s-1.528 1.347-1.528 0zm5.327 9.088c-.078.74-.273 1.38-.446 1.946-.347 1.138-.622 2.036.242 3.002.363.407.829.622 1.346.622.64 0 1.278-.34 1.664-.889a1.97 1.97 0 0 0 .325-.844c.017.16.026.31.015.417a1.623 1.623 0 0 1-.197.646c-.336.595-1.063.98-1.85.98-.95 0-1.77-.532-2.253-1.459-.481-.927-.132-2.214.177-3.35.302-1.115.564-2.077.104-2.678-.263-.345-.727-.512-1.417-.512-.691 0-1.155.167-1.418.512-.46.6-.198 1.563.104 2.678.309 1.136.658 2.423.177 3.35-.482.927-1.303 1.459-2.252 1.459-.788 0-1.515-.385-1.851-.98a1.623 1.623 0 0 1-.182-1.058c.048.296.142.582.323.84.387.547 1.025.888 1.665.888.518 0 .984-.215 1.348-.622.862-.966.588-1.862.24-2.998-.173-.567-.369-1.21-.445-1.95-.1-.966.119-1.827.6-2.36.399-.441.967-.666 1.69-.666s1.293.224 1.69.665c.48.533.7 1.393.6 2.36zm3.029-4.647c1.11 0 2.122-.79 2.579-2.014.526-1.408.36-3.547-1.69-5.33-1.295-1.127-1.292-1.82-1.175-2.134.13-.345.52-.569.994-.569.193 0 .372.045.532.115l.011.004a1.466 1.466 0 0 0-.533-.018.809.809 0 0 0-.656.512c-.166.455.16 1.02.998 1.728.6.507 2.548 2.334 2.411 4.578-.08 1.308-1.097 2.682-2.591 3.727a3.072 3.072 0 0 1-1.412-.656c.177.038.356.057.532.057zm4.635 6.469c-.07.956-.65 1.922-1.645 2.134.015-.008.028-.018.042-.027.305-.153.608-.368.785-.52.235-.202.335-.533.426-.858.264-.942.008-2.008-.609-2.536-.678-.582-1.409-.587-2.333-.593-.743-.004-1.903-.021-3.04-.323-.01-.196-.03-.602-.054-.983.647.386 1.589.465 2.5.542.373.031.744.062 1.097.113 2.23.327 2.919 1.848 2.83 3.05zm-2.666-3.979c-.271-.056-.565-.1-.886-.14-1.135-.136-2.421-.291-3.07-1.29-.268-.41-.38-.93-.292-1.09a.145.145 0 0 1 .048-.009c.09 0 .238.073.511.379.957 1.073 2.217 1.663 3.546 1.663 1.414 0 2.774-.66 3.637-1.763.672-.858.965-1.9.88-2.994.07.393.107.77.107.77a4.068 4.068 0 0 1-.353 2.054c-.634 1.39-1.974 2.24-3.775 2.396l-.353.024zm-9.69-7.495a.236.236 0 0 1 .11.221.236.236 0 1 1-.47 0 .235.235 0 0 1 .36-.221zm4.295.443a.235.235 0 0 1-.11-.222.235.235 0 1 1 .469 0 .236.236 0 0 1-.359.222z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/tether.svg b/assets/lib/simple-icons/icons/tether.svg
new file mode 100644
index 00000000..758427f2
--- /dev/null
+++ b/assets/lib/simple-icons/icons/tether.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Tether</title><path d="M18.7538 10.5176c0 .6251-2.2379 1.1483-5.2381 1.2812l.0028.0007c-.0848.0064-.5233.0325-1.5012.0325-.7778 0-1.33-.0233-1.5237-.0325-3.0059-.1322-5.2495-.6555-5.2495-1.2819s2.2436-1.149 5.2495-1.2834v2.0442c.1965.0142.7594.0474 1.5372.0474.9334 0 1.4008-.0389 1.4849-.0466V9.2356c2.9994.1337 5.2381.657 5.2381 1.282zm5.19.5466L12.1248 22.389a.1803.1803 0 0 1-.2496 0L.0562 11.0635a.1781.1781 0 0 1-.0382-.2079l4.3762-9.1921a.1767.1767 0 0 1 .1626-.1026h14.8878a.1768.1768 0 0 1 .1612.1032l4.3762 9.1922a.1782.1782 0 0 1-.0382.2079zm-4.478-.4038c0-.8068-2.5515-1.4799-5.9473-1.6369V7.195h4.186V4.4055H6.3076V7.195h4.1852v1.8286c-3.4018.1562-5.9601.83-5.9601 1.6376 0 .8075 2.5583 1.4806 5.9601 1.6376v5.8618h3.025v-5.8639c3.394-.1563 5.948-.8295 5.948-1.6363z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/textpattern.svg b/assets/lib/simple-icons/icons/textpattern.svg
new file mode 100644
index 00000000..3cc712bb
--- /dev/null
+++ b/assets/lib/simple-icons/icons/textpattern.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Textpattern</title><path d="m3.638 10.8h-.559s-.918-.776-1.872-1.692-1.207-1.387-1.207-1.387v-.559l7.162-7.162h.559s.744.61 1.631 1.448 1.448 1.63 1.448 1.63v.559l-2.193 2.193 4.397 4.117s2.431-2.431 3.272-3.271 1.736-2.719 1.736-2.719l2.346-2.346.61-.413 3.032 3.033-.414.611-2.344 2.344s-1.606.684-2.718 1.737-3.34 3.34-3.34 3.34 1.933 2.146 4.057 4.27c2.146 2.146 4.484 4.271 4.651 4.426.334.309-.347 1.373-.906 2.027s-.857.697-1.247.901c-.39.205-.836-.051-.836-.051s-2.056-2.261-4.082-4.304c-1.975-1.991-4.559-4.349-4.559-4.349s-6.646 6.645-7.079 7.078c-.433.434-.597 1.089-.597 1.089l-.649.65s-.701-.396-1.553-1.255-1.182-1.487-1.182-1.487l.646-.646s.598-.084 1.088-.597 7.01-7.009 7.01-7.009l-4.119-4.398zm17.267 13.04c-.02-.019-.034-.033 0 0zm-3.456-15.084.453-.453c.86-.86 3.194-1.392 3.194-1.392l2.26-2.26.258-.381-2.682-2.682-.381.258-2.261 2.261s-.942 1.925-1.802 2.784l-.423.423-.03.03-12.887 12.887c-.491.492-1.147.655-1.147.655l-.409.41s.551.787 1.004 1.24c.453.454.765.647.765.647l.462-.475s.246-.573.737-1.065zm-4.656 1.406-3.798-3.577s-.626.197-1.088.815-.488 1.125-.066 1.547c.423.422 3.085 3.082 3.085 3.082zm2.642 2.818s-.714.181-1.097.746-.359.927.052 1.339c.412.412 2.378 2.199 3.888 3.718s3.746 3.864 4.004 4.04c.26.177.26.177.26.177s.389-.303.668-.702.627-.981.462-1.132c-.166-.152-1.828-1.669-4.027-3.81s-4.21-4.376-4.21-4.376zm-15.136-5.693v.339s.369.523 1.36 1.514 1.514 1.36 1.514 1.36h.339l-.091-.257s-.766-.399-1.615-1.249c-.85-.85-1.25-1.616-1.25-1.616s2.058-2.009 3.442-3.393c1.385-1.385 3.379-3.428 3.379-3.428s.737.429 1.587 1.279 1.279 1.586 1.279 1.586l.257.091v-.339s-.369-.523-1.36-1.514-1.514-1.36-1.514-1.36h-.339z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/thealgorithms.svg b/assets/lib/simple-icons/icons/thealgorithms.svg
new file mode 100644
index 00000000..5de5082e
--- /dev/null
+++ b/assets/lib/simple-icons/icons/thealgorithms.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>The Algorithms</title><path d="M8.226,19.857H1.353l1.79-4.225h4.812L13.308,3.21H7.564l-4.226,9.82h2.587c.18.3.511.51.887.51a1.04,1.04,0,0,0,1.038-1.037c0-.572-.467-1.023-1.038-1.023-.421,0-.767.24-.932.602H4.647l3.503-7.94h3.76L7.383,14.684l-4.766.03L0,20.79h8.842L10,18.263h3.835l1.278,2.526H24L15.985,3.211Zm2.27-2.586,1.384-3.023,1.503,3.023zm5.218,2.691-.872-1.759h2.737c.18.33.526.556.917.556a1.04,1.04,0,0,0,1.038-1.037,1.04,1.04,0,0,0-1.038-1.038c-.42,0-.782.256-.947.617H14.42l-2.09-4.06,1.534-3.369,1.729,3.519h.812c.165.346.526.601.932.601a1.04,1.04,0,0,0,1.038-1.037,1.04,1.04,0,0,0-1.038-1.038c-.436,0-.812.271-.962.662h-.3l-1.79-3.64,1.699-3.728,6.677,14.751Z"/></svg>
diff --git a/assets/lib/simple-icons/icons/theconversation.svg b/assets/lib/simple-icons/icons/theconversation.svg
new file mode 100644
index 00000000..efb9d3a2
--- /dev/null
+++ b/assets/lib/simple-icons/icons/theconversation.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>The Conversation</title><path d="M23.996 10.543c-.131-4.91-4.289-8.773-9.2-8.773H9.005a8.997 8.997 0 0 0-5.957 15.746L1.05 22.23l4.942-2.98c.95.36 1.964.524 3.012.524h6.024c5.04 0 9.099-4.156 8.969-9.23zm-8.937 5.958H9.07c-2.587 0-5.205-2.03-5.696-4.583a5.724 5.724 0 0 1 5.63-6.874h5.99c2.586 0 5.205 2.03 5.696 4.582.688 3.667-2.095 6.875-5.63 6.875z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/theirishtimes.svg b/assets/lib/simple-icons/icons/theirishtimes.svg
new file mode 100644
index 00000000..727a39b9
--- /dev/null
+++ b/assets/lib/simple-icons/icons/theirishtimes.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>The Irish Times</title><path d="M9.636 4.093V8.33h.42c.18-1.156.614-2.047 1.3-2.67.487-.448 1.27-.672 2.35-.672h1.197V17.22c0 .79-.043 1.28-.127 1.465-.116.263-.272.45-.473.557-.277.165-.642.246-1.096.246h-.518v.417h8.26v-.417h-.517c-.443 0-.793-.077-1.049-.228-.256-.15-.428-.327-.516-.528-.088-.203-.131-.706-.131-1.512V4.988h1.197c.743 0 1.264.07 1.56.208.532.254.95.595 1.256 1.023.305.427.584 1.13.834 2.11H24V4.093zM7.74 19.488c-.438 0-.787-.076-1.044-.227-.259-.15-.43-.328-.519-.529-.088-.202-.132-.705-.132-1.512V6.778c0-.79.041-1.278.127-1.464.114-.264.272-.45.472-.559.277-.162.641-.244 1.096-.244h.519v-.418H0v.418h.521c.441 0 .79.076 1.05.227.258.15.43.329.515.53.085.2.129.705.129 1.51v10.444c0 .79-.044 1.279-.128 1.465-.109.263-.264.45-.463.557-.28.164-.647.245-1.103.245H0v.418h8.26v-.418h-.52Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/themighty.svg b/assets/lib/simple-icons/icons/themighty.svg
index beeef19f..641bef3a 100644
--- a/assets/lib/simple-icons/icons/themighty.svg
+++ b/assets/lib/simple-icons/icons/themighty.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>The Mighty icon</title><path d="M19.178.001h-4.432L12.05 13.988 9.309.001H4.856c.216.219.334.634.39 1.072v21.21c0 .621-.105 1.383-.425 1.717 1.014-.214 2.307-.416 3.414-.611V9.375l2.489 12.375c.07.46.135 1.084-.021 1.198.847-.129 1.694-.252 2.544-.366-.105-.16-.064-.652-.005-1.061L15.696 9.15v13.095c1.054-.123 2.366-.24 3.47-.349l.012-.008c-.324-.328-.43-1.1-.43-1.724V1.726c0-.627.105-1.396.43-1.726v.001z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>The Mighty</title><path d="M19.178.001h-4.432L12.05 13.988 9.309.001H4.856c.216.219.334.634.39 1.072v21.21c0 .621-.105 1.383-.425 1.717 1.014-.214 2.307-.416 3.414-.611V9.375l2.489 12.375c.07.46.135 1.084-.021 1.198.847-.129 1.694-.252 2.544-.366-.105-.16-.064-.652-.005-1.061L15.696 9.15v13.095c1.054-.123 2.366-.24 3.47-.349l.012-.008c-.324-.328-.43-1.1-.43-1.724V1.726c0-.627.105-1.396.43-1.726v.001z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/themodelsresource.svg b/assets/lib/simple-icons/icons/themodelsresource.svg
new file mode 100644
index 00000000..7231b5f0
--- /dev/null
+++ b/assets/lib/simple-icons/icons/themodelsresource.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>The Models Resource</title><path d="M1.25 0C.557 0 0 .557 0 1.25v21.5C0 23.442.557 24 1.25 24h21.5c.692 0 1.25-.558 1.25-1.25V1.25C24 .557 23.442 0 22.75 0h-2.734c1.667 1.037 1.521 11.428 1.68 18.734.023 1.1.616 3.805.616 3.805s-1.702.913-3.15 1.373c-.652-2.478-.633-3.488-.633-3.488l-.181-10.67-.4-4.62c-2.156 3.08-3.445 6.123-3.987 8.007-1.442.915-1.92 1.09-2.957 1.384-1.056-.552-3.91-3.216-4.961-3.921 2.096 6.826 2.238 9.642 2.238 9.642s-2.231 1.759-2.797 1.606c-.232-.064-.495-.275-.507-.516-.183-3.672-.76-5.902-1.508-8.773C2.576 9.13.32 4.07.32 4.07c.948-.641 1.52-.883 2.836-1.265L11.61 11S16.073 3.616 17.104.906c0 0 2.244-.748 2.71-.906H1.25z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/themoviedatabase.svg b/assets/lib/simple-icons/icons/themoviedatabase.svg
index 6de2fbcd..cf81a3d9 100644
--- a/assets/lib/simple-icons/icons/themoviedatabase.svg
+++ b/assets/lib/simple-icons/icons/themoviedatabase.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>The Movie Database icon</title><path d="M19.491 21.899c2.106 0 3.531-1.424 3.531-3.531V3.531C23.022 1.425 21.598 0 19.491 0H4.509C2.403 0 .978 1.424.978 3.531V24l1.809-2.101V3.531a1.721 1.721 0 0 1 1.719-1.719h14.982c.949.002 1.718.77 1.719 1.719v14.837a1.721 1.721 0 0 1-1.719 1.719H6.92l-1.81 1.812-.011-.014zM8.787 11.466H7.09v5.698h1.697c3.793 0 3.793-5.698 0-5.698zm0 4.559h-.551v-3.419h.551c2.215 0 2.215 3.418 0 3.418zM8.456 10.389h1.139V5.83h1.418V4.699H7.037V5.83h1.419v4.559zM14.063 7.201l-1.971-2.502h-.366v5.785h1.156v-3.18l1.182 1.531 1.183-1.531-.008 3.18h1.156V4.699h-.36l-1.971 2.502zM15.983 14.315c.358-.247.51-.689.526-1.124.023-1.004-.606-1.729-1.617-1.729h-2.255v5.706h2.255a1.695 1.695 0 0 0 1.681-1.694v-.02-.008c0-.466-.231-.878-.585-1.127l-.004-.003zm-2.204-1.714h1.013c.327 0 .526.255.526.573a.533.533 0 0 1-.526.574h-1.013V12.6zm1.013 3.427h-1.013v-1.139h1.027c.309 0 .559.25.559.559v.014a.566.566 0 0 1-.566.566h-.001z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>The Movie Database</title><path d="M6.62 12a2.291 2.291 0 0 1 2.292-2.295h-.013A2.291 2.291 0 0 1 11.189 12a2.291 2.291 0 0 1-2.29 2.291h.013A2.291 2.291 0 0 1 6.62 12zm10.72-4.062h4.266a2.291 2.291 0 0 0 2.29-2.291 2.291 2.291 0 0 0-2.29-2.296H17.34a2.291 2.291 0 0 0-2.291 2.296 2.291 2.291 0 0 0 2.29 2.29zM2.688 20.645h8.285a2.291 2.291 0 0 0 2.291-2.292 2.291 2.291 0 0 0-2.29-2.295H2.687a2.291 2.291 0 0 0-2.291 2.295 2.291 2.291 0 0 0 2.29 2.292zm10.881-6.354h.81l1.894-4.586H15.19l-1.154 3.008h-.013l-1.135-3.008h-1.154zm4.208 0h1.011V9.705h-1.011zm2.878 0h3.235v-.93h-2.223v-.933h1.99v-.934h-1.99v-.855h2.107v-.934h-3.112zM1.31 7.941h1.01V4.247h1.31v-.895H0v.895h1.31zm3.747 0h1.011V5.959h1.958v1.984h1.011v-4.59h-1.01v1.711H6.061V3.351H5.057zm5.348 0h3.242v-.933H11.41v-.934h1.99v-.933h-1.99v-.856h2.107v-.934h-3.112zM.162 14.296h1.005v-3.52h.013l1.167 3.52h.765l1.206-3.52h.013v3.52h1.011v-4.59H3.82L2.755 12.7h-.013L1.686 9.705H.156zm14.534 6.353h1.641a3.188 3.188 0 0 0 .98-.149 2.531 2.531 0 0 0 .824-.437 2.123 2.123 0 0 0 .567-.713 2.193 2.193 0 0 0 .223-.983 2.399 2.399 0 0 0-.218-1.07 1.958 1.958 0 0 0-.586-.716 2.405 2.405 0 0 0-.873-.392 4.349 4.349 0 0 0-1.046-.13h-1.519zm1.013-3.656h.596a2.26 2.26 0 0 1 .606.08 1.514 1.514 0 0 1 .503.244 1.167 1.167 0 0 1 .34.412 1.28 1.28 0 0 1 .13.587 1.546 1.546 0 0 1-.13.658 1.127 1.127 0 0 1-.347.433 1.41 1.41 0 0 1-.518.238 2.797 2.797 0 0 1-.649.07h-.538zm4.686 3.656h1.88a2.997 2.997 0 0 0 .613-.064 1.735 1.735 0 0 0 .554-.214 1.221 1.221 0 0 0 .402-.39 1.105 1.105 0 0 0 .155-.606 1.188 1.188 0 0 0-.071-.415 1.01 1.01 0 0 0-.204-.34 1.087 1.087 0 0 0-.317-.24 1.297 1.297 0 0 0-.413-.13v-.012a1.203 1.203 0 0 0 .575-.366.962.962 0 0 0 .216-.648 1.081 1.081 0 0 0-.149-.603 1.022 1.022 0 0 0-.389-.354 1.673 1.673 0 0 0-.54-.169 4.463 4.463 0 0 0-.6-.041h-1.712zm1.011-3.734h.687a1.4 1.4 0 0 1 .24.022.748.748 0 0 1 .22.075.432.432 0 0 1 .16.147.418.418 0 0 1 .061.236.47.47 0 0 1-.055.233.433.433 0 0 1-.146.156.62.62 0 0 1-.204.084 1.058 1.058 0 0 1-.23.026h-.745zm0 1.835h.765a1.96 1.96 0 0 1 .266.02 1.015 1.015 0 0 1 .26.07.519.519 0 0 1 .204.152.406.406 0 0 1 .08.26.481.481 0 0 1-.06.253.519.519 0 0 1-.16.168.62.62 0 0 1-.217.09 1.155 1.155 0 0 1-.237.027H21.4z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/thenorthface.svg b/assets/lib/simple-icons/icons/thenorthface.svg
new file mode 100644
index 00000000..9a98069c
--- /dev/null
+++ b/assets/lib/simple-icons/icons/thenorthface.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>The North Face</title><path d="M15.816 6.36v3.36h.228a4.847 4.847 0 0 1 4.764 4.764v3.036H24v-3.132c0-4.428-3.6-8.028-8.028-8.028H15.9Zm-9.06.012v.6h1.008V9.72h.696V6.972h1.008v-.6zm2.964 0V9.72h.696v-1.5h1.308v1.5h.696V6.372h-.696v1.272h-1.308V6.372Zm3 0V9.72h2.4v-.588h-1.752v-.876h1.548v-.588h-1.548V6.96h1.752v-.588ZM4.644 10.14c-.444 0-1.608.192-1.608 1.752s1.164 1.752 1.608 1.752c.444 0 1.608-.192 1.608-1.752S5.088 10.14 4.644 10.14zM0 10.236v3.336h.648v-2.376H.66l1.368 2.376h.696v-3.336h-.648v2.316h-.012L.732 10.236Zm6.54 0 .012 3.336h.684v-1.308h.72c.516 0 .54.18.54.636 0 .348.024.516.072.672h.768v-.084c-.144-.048-.144-.168-.144-.66 0-.624-.144-.732-.42-.852.324-.108.516-.42.516-.792 0-.288-.168-.948-1.056-.948zm2.916 0v.588h1.02v2.748h.696v-2.748h1.008v-.588zm2.976 0v3.336h.696v-1.5h1.296v1.5h.696v-3.336h-.696v1.26h-1.296v-1.26zm3.372 0v3.348h.156c1.08 0 1.944.876 1.944 1.944v1.992h2.388v-2.988c-.012-2.316-1.86-4.2-4.152-4.296h-.252Zm-11.16.504c.372 0 .9.228.9 1.164 0 .936-.528 1.164-.9 1.164s-.912-.228-.912-1.164c0-.936.54-1.164.912-1.164zm2.58.072h.864c.408 0 .492.252.492.432 0 .324-.18.456-.54.456h-.816Zm3.684 3.204c-.876 0-1.572.612-1.572 1.812 0 1.188.648 1.8 1.56 1.8.864 0 1.344-.516 1.488-1.26h-.72c-.084.42-.36.648-.756.648-.612 0-.852-.552-.852-1.164 0-.972.504-1.2.852-1.2.588 0 .696.384.756.588v-.012h.72c-.036-.504-.456-1.212-1.476-1.212zm-6.696.084v3.432h.708v-1.44h1.512v-.612H4.92v-.768h1.728V14.1Zm3.228 0-1.224 3.432h.756l.228-.708h1.284l.216.708h.78L8.268 14.1Zm5.232 0v3.432h2.46v-.612h-1.8v-.888h1.596v-.6h-1.596v-.72h1.8V14.1Zm3.144.012v3.432h1.596v-1.992c0-.792-.648-1.44-1.44-1.44zm-7.98.768h.012l.42 1.356h-.876Zm-4.92.912a.927.927 0 0 0-.936.924c0 .528.432.924.936.924a.917.917 0 0 0 .924-.924.917.917 0 0 0-.924-.924zm0 .144c.42 0 .756.336.756.78 0 .456-.324.792-.756.792s-.768-.348-.768-.792c0-.444.336-.78.768-.78zm-.36.24v1.092h.168V16.8h.18l.3.468h.18l-.312-.48c.168-.024.288-.108.288-.3 0-.216-.132-.312-.384-.312zm.168.132h.228c.12 0 .24.024.24.168 0 .168-.144.18-.288.18h-.18z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/theregister.svg b/assets/lib/simple-icons/icons/theregister.svg
index 4942792a..34138251 100644
--- a/assets/lib/simple-icons/icons/theregister.svg
+++ b/assets/lib/simple-icons/icons/theregister.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>The Register icon</title><path d="M22.368,12.858c-0.846,0.639-1.719,1.243-2.612,1.818c-0.893,0.568-1.683,0.977-2.378,1.219 c-0.695,0.246-1.167,0.199-1.413-0.131c-0.23-0.417-0.242-1.028-0.028-1.826c0.21-0.802,0.508-1.628,0.893-2.485 c0.381-0.782,0.711-1.58,0.989-2.39c0.278-0.81,0.413-1.632,0.401-2.458c-0.012-0.826-0.266-1.648-0.758-2.47 c-0.433-0.671-1.08-1.175-1.941-1.509c-0.862-0.337-1.822-0.504-2.882-0.492c-1.06,0.012-2.112,0.206-3.148,0.58 C8.683,3.02,7.94,3.488,7.261,4.116c-0.675,0.627-1.207,1.409-1.6,2.346c-0.135,0.341-0.222,0.794-0.27,1.346 C5.34,8.356,5.312,8.852,5.308,9.297C5.304,9.742,5.3,9.976,5.304,9.996c-0.433,0.298-0.925,0.663-1.481,1.096 c-0.556,0.429-1.104,0.949-1.64,1.552c-0.564,0.663-1.044,1.326-1.437,1.973c-0.393,0.655-0.635,1.155-0.727,1.505 c-0.048,0.143-0.008,0.532,0.119,1.183c0.127,0.643,0.457,1.386,1.001,2.227s1.417,1.62,2.616,2.331 c0.012,0.012,0.044-0.012,0.091-0.067c0.052-0.052,0.079-0.079,0.083-0.087c-0.02-0.012-0.167-0.171-0.429-0.476 c-0.262-0.302-0.516-0.699-0.758-1.175c-0.246-0.484-0.345-0.993-0.31-1.521c0.048-0.731,0.512-1.398,1.394-2.005 c0.885-0.611,2.394-1.143,4.53-1.592c0.607-0.155,1.132-0.385,1.58-0.707c0.449-0.314,0.687-0.492,0.707-0.532 c-0.167,1.703,0.139,3.26,0.901,4.653c0.651,1.179,1.493,2.239,2.537,3.176l9.906-9.878L24,11.6 C23.528,11.969,22.988,12.39,22.368,12.858L22.368,12.858z M9.437,7.363c-0.155,0.413-0.31,0.826-0.465,1.243 C8.822,9.023,8.738,9.257,8.726,9.313C8.754,9.361,8.853,9.476,9.008,9.65C9.171,9.821,9.262,9.936,9.29,9.992 c0.012,0.099-0.044,0.337-0.171,0.707c-0.123,0.369-0.373,0.647-0.738,0.838c-0.48,0.179-0.929,0.214-1.346,0.103 c-0.417-0.103-0.75-0.242-1.008-0.413c-0.254-0.175-0.389-0.266-0.397-0.286L9.663,6.55l0.016,0.143 C9.671,6.728,9.592,6.951,9.437,7.363z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>The Register</title><path d="M22.368 12.858a42.543 42.543 0 0 1-2.612 1.818c-.893.568-1.683.977-2.378 1.22-.695.245-1.167.198-1.413-.132-.23-.417-.242-1.028-.028-1.826.21-.802.508-1.628.893-2.485.381-.782.711-1.58.99-2.39.277-.81.412-1.632.4-2.458-.012-.826-.266-1.648-.758-2.47-.433-.67-1.08-1.174-1.94-1.508-.863-.337-1.823-.504-2.883-.492a9.544 9.544 0 0 0-3.148.58 6.839 6.839 0 0 0-2.23 1.402c-.675.626-1.207 1.408-1.6 2.345-.134.341-.221.794-.27 1.346a17.953 17.953 0 0 0-.082 1.49c-.004.444-.008.678-.004.698-.433.298-.925.663-1.481 1.096-.556.43-1.104.95-1.64 1.552a15.423 15.423 0 0 0-1.437 1.973c-.393.655-.635 1.155-.727 1.505-.048.143-.008.532.119 1.183.127.643.457 1.386 1 2.227.545.841 1.418 1.62 2.617 2.331.012.012.044-.012.09-.067a.925.925 0 0 0 .084-.087 6.701 6.701 0 0 1-.43-.476c-.261-.302-.515-.699-.757-1.175a2.88 2.88 0 0 1-.31-1.52c.048-.732.512-1.399 1.394-2.006.885-.61 2.393-1.143 4.53-1.592.606-.155 1.131-.385 1.58-.707.448-.314.686-.492.706-.532-.167 1.703.14 3.26.901 4.653a12.107 12.107 0 0 0 2.537 3.176l9.906-9.878L24 11.6c-.472.37-1.012.79-1.632 1.258zM9.438 7.363c-.156.413-.31.826-.466 1.243-.15.417-.234.651-.246.707.028.048.127.163.282.337.163.171.254.286.282.342.012.1-.044.337-.17.707-.124.37-.374.647-.739.838-.48.18-.929.214-1.346.103-.417-.103-.75-.242-1.008-.413-.254-.175-.388-.266-.396-.286l4.032-4.39.016.142c-.008.035-.087.258-.242.67z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/thesoundsresource.svg b/assets/lib/simple-icons/icons/thesoundsresource.svg
new file mode 100644
index 00000000..17fd2172
--- /dev/null
+++ b/assets/lib/simple-icons/icons/thesoundsresource.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>The Sounds Resource</title><path d="M1.25 0C.557 0 0 .557 0 1.25v4.807c.003-.02.001-.04.006-.06.16-.7 1.27-1.914 3.219-3.589C4.028 1.718 6.149.275 8.348 0H1.25zm8.21 0c1.119.23 2.168 1.177 1.55 2.338-.357.67-1.87 1.872-2.947 2.156l-.708-.098c.16-.56 1.48-1.784 1.473-2.453-.004-.47-.617-.87-1.193-.841-.728.036-2.025.873-3.166 1.845-1.142.973-2.129 2.08-2.112 2.658.028.91 2.086 1.213 4.176 1.182 2.148-.032 2.382-.095 4.164.006 1.596.09 5.601 1.363 5.44 3.535a3.108 3.108 0 01-.362 1.272c.087-.004.153-.021.245-.022.558-.003 1.337.84 1.337.84l-1.955.486s-.207-.247-.332-.242c-.267.01-4.72 3.241-4.53 6.768.111 2.084 2.746 3.566 5.187 3.508 2.584-.062 6.062-1.033 6.171-4.698.057-1.885-1.71-3.145-3.529-2.95-.737.078-2.585.79-2.478 2.165.083 1.077.747 1.45.902 1.416.549-.118 1.453-.43 1.453-.43l.219.297c-.038.391-2.31 1.254-3.207 1.248-1.468-.01-1.821-1.74-1.635-2.728.34-1.808 4.57-3.007 6.322-2.961 3.288.086 4.041 2.53 4.041 2.53l.014.015V1.25C24 .557 23.442 0 22.75 0H9.46zM0 6.324V22.75C0 23.442.557 24 1.25 24h12.037l-.006-.014s-4.661-.659-4.861-3.933c-.168-2.745 2.402-5.515 2.44-5.555-2.062.668-4.418 1.118-5.292 1.104-1.717-.029-5.058-.58-5.054-2.313.002-1.322.912-3.015 2.593-3.103.262-.017.442.017.643.384-.613.607-1.081 1.068-1.045 1.918.052 1.216 1.85 1.551 2.815 1.766.727.163 2.28.508 4.748-.332 2.495-.85 3.544-1.898 3.523-3.3-.009-.558-.476-1.458-2.36-2.087-1.732-.579-2.191-.664-4.267-.633-1.954.03-1.897.019-3.504-.013-1.822-.037-2.51-.402-2.883-.582C.474 7.16.07 6.784 0 6.324zm24 13.123l-.014.01s-.199 1.26-3.314 2.916c-2.064 1.097-5.568 1.625-5.568 1.625l-.002.002h7.648c.692 0 1.25-.558 1.25-1.25v-3.303z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/thespritersresource.svg b/assets/lib/simple-icons/icons/thespritersresource.svg
new file mode 100644
index 00000000..9bb2ee66
--- /dev/null
+++ b/assets/lib/simple-icons/icons/thespritersresource.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>The Spriters Resource</title><path d="M1.25 0C.557 0 0 .557 0 1.25v6.674C4.756 2.364 9.47.04 12.879.066c1.472.011 3.551.87 3.46 2.747-.074 1.558-3.202 3.763-4.71 4.197L10.5 6.893c.075-.687 2.257-2.77 2.246-3.79-.006-.633-.976-1.38-1.853-1.318-2.047.145-8.146 5.276-8.059 6.944.07 1.356 3.274 1.823 6.46 1.775 3.276-.05 3.634-.116 6.352.01 2.129.098 8.24 2.02 8.293 5.39.039 2.465-2.673 4.325-6.326 5.776-3.402 1.351-8.208 2.291-9.789 2.265-2.62-.043-7.763-.901-7.758-3.543.004-2.015 1.494-4.58 3.907-4.732.399-.025.74.028 1.047.588-.934.925-1.683 1.592-1.627 2.888.08 1.855 3.02 2.501 4.492 2.829.435.096 3.397.582 6.767-.489 4.035-1.28 5.742-2.996 5.71-5.134-.014-.85-.923-2.285-3.563-3.149-2.374-.776-3.476-1.012-6.64-.965-2.98.045-5.872.109-8.263-.43-1.134-.255-1.875-.804-1.875-.804L0 10.982V22.75C0 23.442.557 24 1.25 24h21.5c.692 0 1.25-.558 1.25-1.25V1.25C24 .557 23.442 0 22.75 0H1.25z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/thewashingtonpost.svg b/assets/lib/simple-icons/icons/thewashingtonpost.svg
index 415a11c1..496a18b6 100644
--- a/assets/lib/simple-icons/icons/thewashingtonpost.svg
+++ b/assets/lib/simple-icons/icons/thewashingtonpost.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>The Washington Post icon</title><path d="M24 15.366V6.922l-2.188-1.998-2.426 2.569V5.66h-.357v2.236l-.571.595V6.589L16.65 4.924l-2.164 2.212.261.261.547-.547.69.619v2.093h-.119c-1.046 0-1.689.714-1.689 1.689 0 .5.072.737.143.904h.238a1.033 1.033 0 011.023-.833h.404v3.782c-1.26.428-1.998 1.522-2.14 3.02l.166.096c.57-.69 1.308-1.118 1.974-1.284v5.209l.048.023 2.26-2.069 1.07 1 .047-.025v-4.043c.476.142.904.475 1.213.904zm-2.426.523c-.571-.57-1.26-.88-2.165-.999V7.85l1.023-1.095 1.142 1.047zm-2.545 4.4l-.571-.523V8.825l.57-.571zm-5.78-6.017V7.04L11.06 4.9 8.8 7.255 6.399 4.9 4.115 7.302v-.785c0-2.021-1.26-1.688-1.26-2.997 0-.832.523-1.237 1.165-1.546l-.143-.142C1.927 2.522.88 3.544.88 4.662c0 1 .761 1.047.761 2.212v2.973C.214 9.847 0 11.18 0 11.703c0 .309.048.594.095.737h.19c.072-.404.31-.69.81-.69h.546v3.806l2.807 2.426 2.07-2.33 2.71 2.33zm-2.45 1.879l-1.927-1.642V7.73l.833-.832 1.094 1.094zm-4.424-.904l-.595.69-1.665-1.428V7.802l.904-.928L6.375 8.23Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>The Washington Post</title><path d="M24 15.366V6.922l-2.188-1.998-2.426 2.569V5.66h-.357v2.236l-.571.595V6.589L16.65 4.924l-2.164 2.212.261.261.547-.547.69.619v2.093h-.119c-1.046 0-1.689.714-1.689 1.689 0 .5.072.737.143.904h.238a1.033 1.033 0 011.023-.833h.404v3.782c-1.26.428-1.998 1.522-2.14 3.02l.166.096c.57-.69 1.308-1.118 1.974-1.284v5.209l.048.023 2.26-2.069 1.07 1 .047-.025v-4.043c.476.142.904.475 1.213.904zm-2.426.523c-.571-.57-1.26-.88-2.165-.999V7.85l1.023-1.095 1.142 1.047zm-2.545 4.4l-.571-.523V8.825l.57-.571zm-5.78-6.017V7.04L11.06 4.9 8.8 7.255 6.399 4.9 4.115 7.302v-.785c0-2.021-1.26-1.688-1.26-2.997 0-.832.523-1.237 1.165-1.546l-.143-.142C1.927 2.522.88 3.544.88 4.662c0 1 .761 1.047.761 2.212v2.973C.214 9.847 0 11.18 0 11.703c0 .309.048.594.095.737h.19c.072-.404.31-.69.81-.69h.546v3.806l2.807 2.426 2.07-2.33 2.71 2.33zm-2.45 1.879l-1.927-1.642V7.73l.833-.832 1.094 1.094zm-4.424-.904l-.595.69-1.665-1.428V7.802l.904-.928L6.375 8.23Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/thingiverse.svg b/assets/lib/simple-icons/icons/thingiverse.svg
new file mode 100644
index 00000000..60af4a1f
--- /dev/null
+++ b/assets/lib/simple-icons/icons/thingiverse.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Thingiverse</title><path d="M11.955.005C5.425-.152-.091 5.485.007 11.805c-.235 6.756 5.537 12.25 12.052 12.196C18.621 23.9 23.912 18.595 24 12.03 24.031 5.483 18.505-.18 11.955.005zm-.047 1.701a10.276 10.276 0 0 1 7.36 17.529 10.275 10.275 0 0 1-17.556-7.287C1.71 6.308 6.268 1.728 11.907 1.706zm-5.55 4.781c-.322 0-.358.033-.358.361v2.248c0 .351.04.391.398.391h3.823c.274 0 .274.004.274.265v9.736a.176.176 0 0 0 .051.146c.04.038.093.059.148.053h2.555c.247-.003.283-.035.283-.28v-9.32c0-.124.004-.239 0-.39s.055-.21.218-.21h3.9c.319.004.35-.032.35-.344V6.855c0-.34-.024-.363-.37-.363h-5.626z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/thinkpad.svg b/assets/lib/simple-icons/icons/thinkpad.svg
new file mode 100644
index 00000000..7660bfb8
--- /dev/null
+++ b/assets/lib/simple-icons/icons/thinkpad.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ThinkPad</title><path d="M7.002 7.891a.677.677 0 0 0-.106 1.05.699.699 0 0 0 1.066-.103.675.675 0 0 0 .117-.379l.001-.001a.676.676 0 0 0-.203-.483.701.701 0 0 0-.875-.084zm10.239.403a1.268 1.268 0 0 0-.881-.342h-1.466v8.195h1.148v-3.559h.318c.675 0 1.27-.68 1.27-1.337l-.001-2.106a1.222 1.222 0 0 0-.388-.851zm-.654 3.052c0 .334-.283.334-.543.334V8.87h.158c.301 0 .384.198.384.71v1.766zm4.162 4.798l.001-.001h-.001zm-1.384-6.666c-.848 0-1.376.407-1.376 1.103v1.283h1.078v-.934c.009-.289-.023-.708.31-.708.307 0 .256.506.256.724 0 1.639-1.65 1.023-1.65 2.308v2.207c0 .498.247.763.755.763.417 0 .614-.141.859-.532h.068a.979.979 0 0 0 .065.451h1.02v-5.559c-.001-.679-.536-1.106-1.385-1.106zm.304 5.561a.315.315 0 0 1-.317.293.298.298 0 0 1-.107-.011.287.287 0 0 1-.162-.134.257.257 0 0 1-.03-.101v-1.713c.003-.328.287-.517.613-.693h.003v2.359zm3.268-7.109v2.039h-.027a1.054 1.054 0 0 0-.842-.503c-.428 0-.809.247-.809.722v5.253c-.013.551.371.782.809.782.322-.038.612-.212.798-.477h.071v.396H24V7.93h-1.063zm-.001 6.992c-.013.352-.154.411-.326.411-.158 0-.29-.102-.29-.411v-4.168c0-.259.097-.384.29-.384.158 0 .313.039.326.391v4.161zM0 8.951h1.09v7.169h1.177V8.951h1.078V7.92H0zm5.504.518a.84.84 0 0 0-.799.475h-.046V7.905H3.604v8.224h1.064v-5.388c0-.174.046-.379.317-.379.245 0 .298.165.298.389v5.379H6.35v-5.602c0-.693-.116-1.059-.846-1.059zm1.352.083h1.06v6.583h-1.06zm3.448-.069a.883.883 0 0 0-.799.465h-.044v-.389H8.404v6.581h1.054v-5.334c0-.185.014-.43.342-.43.245 0 .282.22.282.43v5.336h1.068v-5.496c.001-.693.01-1.163-.846-1.163zm4.193.079H13.43l-.611 3.033h-.101V7.928h-1.065v8.215h1.065v-3.476h.101l.622 3.476h1.091l-.676-3.604z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/threadless.svg b/assets/lib/simple-icons/icons/threadless.svg
new file mode 100644
index 00000000..c93674c5
--- /dev/null
+++ b/assets/lib/simple-icons/icons/threadless.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Threadless</title><path d="M17.866 12.281c-.08-.188-.177-.734-.019-1.047.19.243.403.552.019 1.047zm-1.49-3.192c-.231.826-.262 2.255-.027 2.852.643-1.25.111-2.625.027-2.852zm-1.63 2.403c.05-1.249.05-2.138-.22-2.64-.228.678-.114 1.388.22 2.64zm.491 1.2c.422.553.654.257.716-.002-.538-2.057-.18-3.149.187-4.397 0 0-.002 0-.003-.002-.02-.014-1.055.404-1.164.448.833 1.335-.164 2.85.264 3.953zm5.03-.183c.741-.561.678-1.729.776-2.34a.024.024 0 01-.003 0s-1.154.444-1.291.498c.594.314.79.956.518 1.842zm-6.58-.155c.232.529.65.312.824.09-.231-.469-.292-.668-.41-1.041-.383.058-.674.363-.415.95zm4.882.362c.534-.533.817-1.614.836-2.18a.031.031 0 00-.003-.001s-1.085.416-1.19.458c.446.468.35 1.017-.048 1.697.117.14.3.092.405.027zm2.817-1.715c.05.496-.082.952-.225 1.179.459.053.754-.709.225-1.179zm-1.713.365c.004.366-.22.875-.22.875.462.31.673-.27.22-.875zm-2.103 1.275c-.392-.722-.262-1.492.089-2.044l-.002-.001-.492.184a4.115 4.115 0 01-.52 1.768c.094.282.796.418.925.094zm3.316.047c-.544.517-1.093.546-1.66.074-.298.423-.688.603-1.37.359-.395.311-1.159.318-1.574-.063-.419.636-1.078.551-1.497-.096-.271.516-.776.535-1.184.171-.37.452-.875.496-1.171.044-.129.437-.691.699-1.334.348-.2.36-.831.684-1.54.388-.928.883-1.681.729-1.666-1.276l-.38-.097s.046 1.276.032 1.422c-.016.455-.38.538-.498.573-.344.101-.656-.178-.7-.419-.16-.899-.332-1.924-.38-1.94-.234-.076-.45 2.15-1.068 2.647-.672.54-1.12.125-1.595-.178l-.409.433c-.169-.917-.29-1.79-.059-2.628-.3.077-.737-.055-.8-.267.214-.295.566-.288.759-.258.11-.359.138-.795.042-1.255.617.017.66.48.662.608a1.614 1.614 0 01-.093.559.683.683 0 01.644.011.41.41 0 01.216.33 1.665 1.665 0 01-.83.159c-.457 1.142.27 1.924.908 2.104.321-2.082.139-4.514.652-5.645-.001 0-.002 0-.003-.002l-2.04.804a4.19 4.19 0 00-.294 1.127c-.055.024-1.874.707-1.866.75.07.363.075.723 0 1.08l-.008.004c-.25.1-.541.177-.742.367-.164.155.22.293.328.324a.984.984 0 00.286.026.716.716 0 00.135-.02q-.025.093-.045.187a3.814 3.814 0 00-.082.759c-.014.565.085 1.13.186 1.682l.567-.223.104-.038c.145.093.295.178.461.233.358.116.739-.097 1.062-.222.451-.175.903-.351 1.35-.536a.622.622 0 00.238.214c.346.184.963-.186 1.248-.297l.222-.087a.709.709 0 00.24.244.53.53 0 00.337.052 1.002 1.002 0 00.189-.051c.327-.109.647-.244.967-.372.51.073.957-.144 1.465-.342l.05-.02c.23.055.446.033.663-.027.191-.053.384-.135.59-.218.284.244 1.006-.111 1.104-.15.366.273 1.084-.043 1.176-.097.247.274.568.426.953.292.209-.073.416-.15.623-.229.304.158.663.179 1 .091a4.515 4.515 0 00.45-.144c.178.052.354.085.542.076.318-.015.654-.198.946-.318.382.303 1.186.068 1.634-.133a2.434 2.434 0 001.401.146c.137-.026 1.687-.606 2.413-.91-.599.22-1.31.221-1.958-.13zM5.169 9.794l-.211 3.028c.318-.498.468-2.332.211-3.028zm7.725 3.156c.036.131.377.098.418-.105-.386-.557-.667-1.827.664-1.997-.207-1.118-.047-1.95.438-2.735a.015.015 0 01-.002-.002c-.016-.014-2.016.763-2.04.803a3.54 3.54 0 00-.51 1.639c.507-.028.73 1.298 1.032 2.397zm-6.095.993s.182.278.33.095c.155-.193-.116-1.998-.12-2.025h-.004c-.088.009-.226.083-.301.111l-.06.023a1.889 1.889 0 01.128.509c.058.466.027 1.287.027 1.287zm1.272-2.047c.403.5.542 1.04.346 1.724.253.356.447.314.741.023-.595-.405-.555-1.904.442-2.462a.425.425 0 00-.038.011c-.241.085-1.587.555-1.976.782-.008.003-.053.031-.077.046a1.965 1.965 0 01.352.081zm3.463 1.188c.137.08.551.031.652-.414-.21-.686-.257-.943-.354-1.385-.455.085-.697 1.565-.298 1.8zm-1.564.361c.176.105.774.153.847-.23-.205-1.618.497-2.497.941-2.642l-.033.01-.107.038-1.84.642c.765.448.8 1.629.192 2.182zm-.402-.287c.597-.633.351-1.314.076-1.35-.484.432-.396 1.128-.076 1.35zm13.072-2.192a.077.077 0 00.035-.01.03.03 0 00.01-.03c0-.014-.005-.023-.014-.026a.066.066 0 00-.038-.004l-.056.006.007.07zm1.352-.601c0-.003-.003-.005-.004-.008l-1.105.42a.33.33 0 11-.355-.093l-.556.211a1.473 1.473 0 01.088.194c.139.381.13.845-.086 1.347 1.464-.068 2.103-1.138 2.018-2.072zm-1.384.358a.275.275 0 11-.246.302.276.276 0 01.246-.303zm-.092.13l.032.307.055-.005-.013-.129.027-.004a.02.02 0 01.015.005.07.07 0 01.014.017l.076.098.064-.007-.096-.123a.02.02 0 000-.003.078.078 0 00.02-.011.081.081 0 00.03-.079.083.083 0 00-.045-.07.13.13 0 00-.067-.008z"/></svg>
diff --git a/assets/lib/simple-icons/icons/threedotjs.svg b/assets/lib/simple-icons/icons/threedotjs.svg
new file mode 100644
index 00000000..a7f18290
--- /dev/null
+++ b/assets/lib/simple-icons/icons/threedotjs.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Three.js</title><path d="M.38 0a.268.268 0 0 0-.256.332l2.894 11.716a.268.268 0 0 0 .01.04l2.89 11.708a.268.268 0 0 0 .447.128L23.802 7.15a.268.268 0 0 0-.112-.45l-5.784-1.667a.268.268 0 0 0-.123-.035L6.38 1.715a.268.268 0 0 0-.144-.04L.456.01A.268.268 0 0 0 .38 0zm.374.654L5.71 2.08 1.99 5.664zM6.61 2.34l4.864 1.4-3.65 3.515zm-.522.12l1.217 4.926-4.877-1.4zm6.28 1.538l4.878 1.404-3.662 3.53zm-.52.13l1.208 4.9-4.853-1.392zm6.3 1.534l4.947 1.424-3.715 3.574zm-.524.12l1.215 4.926-4.876-1.398zm-15.432.696l4.964 1.424-3.726 3.586zM8.047 8.15l4.877 1.4-3.66 3.527zm-.518.137l1.236 5.017-4.963-1.432zm6.274 1.535l4.965 1.425-3.73 3.586zm-.52.127l1.235 5.012-4.958-1.43zm-9.63 2.438l4.873 1.406-3.656 3.523zm5.854 1.687l4.863 1.403-3.648 3.51zm-.54.04l1.214 4.927-4.875-1.4zm-3.896 4.02l5.037 1.442-3.782 3.638z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/threema.svg b/assets/lib/simple-icons/icons/threema.svg
index 41a75d1d..f39652ca 100644
--- a/assets/lib/simple-icons/icons/threema.svg
+++ b/assets/lib/simple-icons/icons/threema.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Threema icon</title><path d="M13.755 22.243a1.756 1.756 0 11-3.512.002 1.756 1.756 0 013.512-.002zm-6.335 0a1.756 1.756 0 11-3.513.002 1.756 1.756 0 013.513-.002zm12.671 0a1.756 1.756 0 11-3.512.002 1.756 1.756 0 013.512-.002zM7.477 17.248l-5.171 1.293 1.105-4.42c-1.094-1.442-1.733-3.175-1.733-5.039C1.678 4.066 6.3 0 12 0c5.7 0 10.322 4.066 10.322 9.082 0 5.016-4.622 9.083-10.322 9.083a11.45 11.45 0 01-4.523-.917zm1.595-8.92h-.115a.47.47 0 00-.47.471v4.126c0 .26.21.471.47.471h6.086c.26 0 .47-.21.47-.47V8.798a.47.47 0 00-.47-.47h-.115v-1.17a2.927 2.927 0 00-2.93-2.924A2.926 2.926 0 009.073 7.16zm4.685 0h-3.514V7.16a1.756 1.756 0 013.514 0v1.17Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Threema</title><path d="M11.998 20.486a1.757 1.757 0 1 1 0 3.514 1.757 1.757 0 0 1 0-3.514zm-6.335 0a1.757 1.757 0 1 1 0 3.514 1.757 1.757 0 0 1 0-3.514zm12.671 0a1.757 1.757 0 1 1 0 3.514 1.757 1.757 0 0 1 0-3.514zM12 0c5.7 0 10.322 4.066 10.322 9.082 0 5.016-4.622 9.083-10.322 9.083a11.45 11.45 0 0 1-4.523-.917l-5.171 1.293 1.105-4.42c-1.094-1.442-1.733-3.175-1.733-5.039C1.678 4.066 6.3 0 12 0zm-.001 4.235A2.926 2.926 0 0 0 9.072 7.16v1.17h-.115a.47.47 0 0 0-.47.47v4.126c0 .26.21.471.47.471h6.086c.26 0 .47-.21.47-.47V8.798a.47.47 0 0 0-.47-.47h-.115v-1.17a2.927 2.927 0 0 0-2.93-2.924zm0 1.17c.972 0 1.758.786 1.758 1.754v1.17h-3.514v-1.17c0-.968.786-1.754 1.756-1.754z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/thumbtack.svg b/assets/lib/simple-icons/icons/thumbtack.svg
new file mode 100644
index 00000000..3b0eb080
--- /dev/null
+++ b/assets/lib/simple-icons/icons/thumbtack.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Thumbtack</title><path d="M6.18 6.38h11.69v2.68H6.17zm7.27 3.8v3.14c0 3.23-.02 3.74-.14 4.36a7.95 7.95 0 0 1-1.3 2.87c-.03 0-.78-1.35-.9-1.62-.17-.4-.3-.8-.4-1.25l-.09-.41-.02-5.78.16-.2a3.3 3.3 0 0 1 2.44-1.1zM12 0A12 12 0 0 0 0 12a12 12 0 0 0 12 12 12 12 0 0 0 12-12A12 12 0 0 0 12 0Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/thunderbird.svg b/assets/lib/simple-icons/icons/thunderbird.svg
new file mode 100644
index 00000000..6ad95a53
--- /dev/null
+++ b/assets/lib/simple-icons/icons/thunderbird.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Thunderbird</title><path d="M23.7296 10.23c-.225-1.1996-.6936-2.3617-1.3308-3.4113-.1806-.3233-.4172-.6295-.6186-.9185-1.3495-1.8931-2.418-2.5304-2.6241-2.6429-.1874-.1312-.3749-.2624-.5623-.3748-1.7432-1.0872-2.8678-1.2371-2.8678-1.2371-.806-.3374-1.5932-.5248-2.1743-.6186-1.2558-.15-2.3055-.1312-3.2239 0 .15-.2624.2812-.356.3186-.3748.0232 0 .0166 0 0 0-.4498.0375-.9934.3374-1.4807.6373C9.503.6333 10.2153.2583 10.309.202h.0187C9.7655.1646 8.1723.5208 6.804 2.0391 2.549 3.8196 0 7.7183 0 11.973c0 3.224 1.2558 5.5482 2.6241 7.0852 1.2933 1.4058 2.7179 2.1555 3.3926 2.3617.0708.0279.225.0375.225.0375.0187-.0562-.8622-1.462-1.2559-3.149.7873.806 1.7245 1.4246 2.7741 1.537.1125.0188-.3749-.581-.8997-1.3682l.7123.2436 7.8161 2.6054c-.7685.7872-1.7994 1.5557-3.2052 2.2305 0 0 3.149-.2624 4.7047-2.0056-.6373 1.462-2.3805 2.2493-2.3805 2.2493 1.2746-.1875 4.6485-1.1809 6.7853-3.8612 2.4367-3.0365 3.1677-5.8856 2.4367-9.7093zm-6.223 7.1039c-.2436 1.1808-.7497 2.493-1.893 3.7487L1.7993 16.4904c-.3936-1.2558-.581-2.7178-.4686-4.4235.2437.4499.9747.8247 1.4245.8435-1.0496-2.343-.6373-3.955.15-5.0233a635.68 635.68 0 0 1 1.0309 1.5182v-.1125c.0187-.15.0375-.2624.075-.3748-.3562-.5249-.656-.9747-.881-1.2934.4311-.4873.9184-.8434 1.3496-1.0871.0187.2062.0562.3936.1124.6185.075.3187.0937.7873.0562 1.1622v-.0188c0 .075-.0187.15-.0374.225-.0188.075-.225.281-.2812.8247-.0562.581.15.8997.3561 1.1433.2437-.2249.6936-.7872 1.5183-1.1059.8247-.3373 1.3683-.8247 2.418-1.3495.6185-.3186 1.2745-.2812 2.0992-.2437 1.4808.2624 3.4301.7873 5.2483.881.4123.9747.581 2.3804.581 2.418 0 .1311.0188.2436.0188.356-3.224 1.2184-7.0102 2.6054-8.6034 3.0178-.1312.0375-1.5183-1.968-2.8116-3.88-.0187.0375-.0562.0563-.075.075-.0374.0375-.075.075-.0937.1125h-.1124c1.387 2.043 2.8678 4.161 3.0177 4.161 1.4058-.506 5.6044-1.9493 8.6596-2.9989-.0187 2.3055-.581 3.1677-.581 3.1677s.7685-.3 1.5557-1.0871c0 .6372-.1687 2.2867-1.4995 3.8799 0 0 .6935-.1874 1.4807-.5623Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/thymeleaf.svg b/assets/lib/simple-icons/icons/thymeleaf.svg
new file mode 100644
index 00000000..fe18b610
--- /dev/null
+++ b/assets/lib/simple-icons/icons/thymeleaf.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Thymeleaf</title><path d="M1.727 0C.782 0 .02.761.02 1.707v20.586C.02 23.24.782 24 1.727 24h20.546c.945 0 1.707-.761 1.707-1.707V1.707C23.98.76 23.218 0 22.273 0H1.727zm18.714 3.273c-1.861 3.694-3.3 7.627-5.674 11.046-1.064 1.574-2.329 3.163-4.16 3.86-1.31.552-2.936.337-3.98-.647-.628-.523-.54-1.43-.173-2.075.96-1.224 2.34-2.02 3.59-2.915 3.842-2.625 7.446-5.654 10.397-9.27zm-1.693 1.25c-2.503 2.751-5.381 5.16-8.452 7.269l-.003.002-.003.003c-1.327.979-2.835 1.824-3.993 3.114-.349.333-.583 1.042-.537 1.481-.622-1.043-.8-2.614-.257-3.74.526-1.19 1.742-1.807 2.876-2.292 3.757-1.353 6.695-2.926 10.369-5.836z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ticketmaster.svg b/assets/lib/simple-icons/icons/ticketmaster.svg
new file mode 100644
index 00000000..529f349c
--- /dev/null
+++ b/assets/lib/simple-icons/icons/ticketmaster.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Ticketmaster</title><path d="M14.5153 11.3333c-.2454 0-.4826.0464-.716.1304l-.0776.4499c.2168-.105.4499-.1681.6912-.1681.1924 0 .4214.063.4214.2817 0 .063 0 .126-.0163.185h-.1923c-.5153 0-1.2924.0546-1.2924.7697 0 .3994.2699.6181.6502.6181.3026 0 .4909-.1388.679-.3828h.0082l-.0574.3324h.4624c.0491-.408.2576-1.2576.2576-1.5477 0-.5088-.3966-.6686-.818-.6686zm-.3805 1.8546c-.139 0-.2781-.0758-.2781-.2272 0-.3658.4418-.412.7076-.412h.1922c-.0857.349-.2125.6392-.6217.6392zm-8.647-.7826l.656 1.1947h-.6391l-.563-1.1647h-.0084L4.688 13.6h-.5546l.6731-3.2h.567l-.3767 1.8007h.0085l.7915-.798h.7366L5.488 12.4053zm3.8071.746c.0947 0 .1894-.0216.2562-.0517l-.0907.4485c-.0905.0216-.193.052-.2837.052-.3587 0-.6111-.1554-.6111-.5825 0-.1725.0316-.3407.067-.5175l.1498-.7506H8.4l.0828-.4228h.3824l.0907-.4574.5677-.2026-.1301.66h.4732l-.0828.4226h-.4734l-.193.9707a.9992.9992 0 00-.0236.2156c0 .1339.0826.2157.201.2157zm-8.4 0c.0947 0 .1894-.0216.2564-.0517l-.0906.4485c-.0908.0216-.1934.052-.284.052-.3587 0-.6111-.1554-.6111-.5825 0-.1725.0316-.3407.067-.5175l.1498-.7506H0l.0827-.4228h.3826l.0907-.4574.5675-.2026-.1302.66h.4734l-.0828.4226H.9107l-.1931.9707a1.004 1.004 0 00-.0237.2156c0 .1339.0828.2157.201.2157zm2.1018-.5521c0 .2816.0937.5633.4858.5633.1406 0 .3154-.0378.4644-.1093l-.0638.4459c-.1747.084-.3623.101-.5498.101-.5668 0-.9333-.3742-.9333-.9337 0-.757.5072-1.333 1.2956-1.333.213 0 .4176.0378.571.084l-.1406.4626c-.111-.0715-.26-.1093-.4176-.1093-.456 0-.7117.4205-.7117.8285zm-.4574-1.6433h-.61l.1276-.556h.6098l-.1274.556zm-.0956.408L1.9432 13.6h-.6099l.5006-2.236h.6098zm18.3563.7937c0 .164-.0199.3236-.0515.4836h-1.2524c.001-.1027.0094-.2168.0564-.387h.7276a.9136.9136 0 00.012-.1471c0-.2314-.1152-.3616-.3373-.3616-.3133 0-.4579.1904-.56.466a1.2249 1.2249 0 00-.0864.4297h-.0004l.0001.0063-.0002.012c0 .0208.0017.04.0026.0598h.0004c.0258.3406.2243.4686.5646.4686.2182 0 .4285-.0588.627-.1558l-.0677.446c-.2061.0672-.4324.122-.6507.122-.5873 0-.9841-.3029-.9841-.9464 0-.6726.4921-1.3204 1.1627-1.3204.504 0 .8373.2732.8373.8243zm1.773-.8243c.0755 0 .156.0042.227.0215l-.1247.5635a.7823.7823 0 00-.2272-.0344c-.4233 0-.628.3656-.704.7226l-.2137.9935h-.597l.4098-1.9183c.0177-.0946.0356-.1936.0535-.2968h.5702l-.0802.4174h.0089c.107-.241.401-.469.6773-.469zm1.1433.2631c0-.1183-.0707-.1763-.2142-.1763h-.239v.6255h.1018v-.2765h.0852l.1746.2765h.1082l-.178-.2765c.098 0 .1614-.0724.1614-.1727zm-.3514.093v-.1892h.1208c.0654 0 .129.0206.129.0915 0 .0812-.0507.0976-.129.0976h-.1208zM13.2 11.9398c0 .1977-.0497.4216-.0955.602L12.8804 13.6h-.5564l.2243-1.0796c.029-.1333.0706-.3399.0706-.473 0-.1635-.1205-.2667-.2616-.2667-.3862 0-.4817.4644-.5522.7656l-.22 1.0537h-.5564l.2242-1.0796c.0291-.1333.0707-.3399.0707-.473 0-.1635-.1205-.2667-.2616-.2667-.3779 0-.4817.4688-.5523.7656l-.22 1.0537h-.5564l.3903-1.9699c.0167-.086.0332-.1764.0457-.2453h.519l-.0498.297h.0082c.1496-.228.3944-.3485.656-.3485.2533 0 .5148.1548.544.4215h.0082c.1411-.2881.4526-.4215.7514-.4215.3197 0 .5937.271.5937.6066zM23.4668 11.2h-.0001a.5343.5343 0 00-.5334.5337.534.534 0 00.5334.533.5341.5341 0 00.5333-.533.5343.5343 0 00-.5332-.5337zm.0017.9872c-.2481 0-.4333-.198-.4333-.4535 0-.2556.1852-.4537.4332-.4537.2448 0 .4297.1981.4297.4537 0 .2555-.1849.4534-.4296.4535zm-5.4177.5328a1 1 0 00-.0236.2156c0 .1339.0828.2157.201.2157.0947 0 .1894-.0216.2563-.0517l-.0906.4485c-.0907.0216-.1932.052-.284.052-.3587 0-.6111-.1554-.6111-.5825 0-.1725.0317-.3407.067-.5175l.15-.7506h-.3825l.0827-.4228h.3827l.0906-.4574.5676-.2026-.13.66H18.8l-.0828.4226h-.4733l-.1931.9707zm-1.4036-1.3867c.216 0 .4364.0379.5528.0667l-.128.4247c-.0635-.033-.2267-.0792-.3941-.0792-.1762 0-.3967.0462-.3967.2186 0 .2734.767.3744.767.9042 0 .5636-.5157.7317-1.0226.7317-.2381 0-.4763-.0336-.6923-.1303l.128-.45c.1675.0883.335.1682.5642.1682.1984 0 .4056-.0632.4056-.2396 0-.3491-.767-.383-.767-.9254 0-.5088.5156-.6896.9831-.6896zm-8.3805.8243c0 .164-.02.3236-.0516.4836H6.9628c.001-.1027.0092-.2168.0565-.387h.7275a.9136.9136 0 00.012-.1471c0-.2314-.1152-.3616-.3373-.3616-.3134 0-.4579.1904-.56.466a1.2276 1.2276 0 00-.0864.4297h-.0004l.0001.0063-.0003.012c0 .0208.0018.04.0027.0598h.0005c.0255.3406.2243.4686.5644.4686.2182 0 .4286-.0588.627-.1558l-.0676.446c-.2062.0672-.4324.122-.6507.122-.5873 0-.9841-.3028-.9841-.9464 0-.6726.492-1.3204 1.1626-1.3204.504 0 .8374.2732.8374.8243z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/tidal.svg b/assets/lib/simple-icons/icons/tidal.svg
index c73fb89d..65623bb9 100644
--- a/assets/lib/simple-icons/icons/tidal.svg
+++ b/assets/lib/simple-icons/icons/tidal.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Tidal icon</title><path d="M12.012 3.992L8.008 7.996 4.004 3.992 0 7.996 4.004 12l4.004-4.004L12.012 12l-4.004 4.004 4.004 4.004 4.004-4.004L12.012 12l4.004-4.004-4.004-4.004zM16.042 7.996l3.979-3.979L24 7.996l-3.979 3.979z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Tidal</title><path d="M12.012 3.992L8.008 7.996 4.004 3.992 0 7.996 4.004 12l4.004-4.004L12.012 12l-4.004 4.004 4.004 4.004 4.004-4.004L12.012 12l4.004-4.004-4.004-4.004zM16.042 7.996l3.979-3.979L24 7.996l-3.979 3.979z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/tide.svg b/assets/lib/simple-icons/icons/tide.svg
index 2182d2f0..8cc817ed 100644
--- a/assets/lib/simple-icons/icons/tide.svg
+++ b/assets/lib/simple-icons/icons/tide.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Tide icon</title><path d="M18.694 12.509h3.393c-.206-.846-.883-1.272-1.647-1.272-.883 0-1.5.48-1.746 1.272zm1.746 4.48c-2.238 0-3.679-1.57-3.679-3.648 0-2.024 1.501-3.662 3.693-3.662 2.211 0 3.546 1.532 3.546 3.569 0 .273-.027.626-.027.672h-5.346c.206.886.87 1.465 1.853 1.465.844 0 1.461-.366 1.853-.932l1.421.872c-.677 1.025-1.76 1.665-3.314 1.665m-6.179-3.634a1.89 1.89 0 00-1.906-1.884c-1.036 0-1.84.846-1.84 1.884 0 1.052.804 1.884 1.84 1.884 1.09 0 1.906-.832 1.906-1.884zm-.026 2.956c-.492.386-1.256.613-2.046.613a3.546 3.546 0 01-3.533-3.569c0-2.024 1.62-3.608 3.533-3.608.79 0 1.554.246 2.046.626v-2.91h1.892v9.368h-1.892v-.52M7.796 9.814H5.904v7.01h1.892v-7.01m-2.922 0v1.697H2.91v2.816c0 .626.285.872.93.872H4.88v1.625H3.706c-1.853 0-2.69-.832-2.69-2.404v-2.91H0V9.814a1.01 1.01 0 001.01-1.012V8.01h1.892v1.804h1.972m3.124-1.657c0 .632-.511 1.145-1.142 1.145-.63 0-1.142-.513-1.142-1.145 0-.633.511-1.145 1.142-1.145a1.135 1.135 0 011.142 1.145Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Tide</title><path d="M18.694 12.509h3.393c-.206-.846-.883-1.272-1.647-1.272-.883 0-1.5.48-1.746 1.272zm1.746 4.48c-2.238 0-3.679-1.57-3.679-3.648 0-2.024 1.501-3.662 3.693-3.662 2.211 0 3.546 1.532 3.546 3.569 0 .273-.027.626-.027.672h-5.346c.206.886.87 1.465 1.853 1.465.844 0 1.461-.366 1.853-.932l1.421.872c-.677 1.025-1.76 1.665-3.314 1.665m-6.179-3.634a1.89 1.89 0 00-1.906-1.884c-1.036 0-1.84.846-1.84 1.884 0 1.052.804 1.884 1.84 1.884 1.09 0 1.906-.832 1.906-1.884zm-.026 2.956c-.492.386-1.256.613-2.046.613a3.546 3.546 0 01-3.533-3.569c0-2.024 1.62-3.608 3.533-3.608.79 0 1.554.246 2.046.626v-2.91h1.892v9.368h-1.892v-.52M7.796 9.814H5.904v7.01h1.892v-7.01m-2.922 0v1.697H2.91v2.816c0 .626.285.872.93.872H4.88v1.625H3.706c-1.853 0-2.69-.832-2.69-2.404v-2.91H0V9.814a1.01 1.01 0 001.01-1.012V8.01h1.892v1.804h1.972m3.124-1.657c0 .632-.511 1.145-1.142 1.145-.63 0-1.142-.513-1.142-1.145 0-.633.511-1.145 1.142-1.145a1.135 1.135 0 011.142 1.145Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/tietoevry.svg b/assets/lib/simple-icons/icons/tietoevry.svg
new file mode 100644
index 00000000..18bfe658
--- /dev/null
+++ b/assets/lib/simple-icons/icons/tietoevry.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>TietoEVRY</title><path d="M1 1.239v1.966H0v1.282h1v2.55c0 1.641.434 2.131 2.121 2.131.36 0 .72-.047 1.084-.059V7.654c-.174 0-.351.024-.514.024-.43 0-.709-.105-.709-.582v-2.61h1.223v-1.28H2.982L2.98 1.238zm3.744 0v1.427h1.98V1.24zm9.66 0v1.966h-1v1.282h1v2.55c0 1.641.434 2.131 2.12 2.131.36 0 .72-.047 1.085-.059V7.654c-.174 0-.352.024-.514.024-.43 0-.709-.105-.709-.582v-2.61h1.223v-1.28h-1.223l-.002-1.967zm-4.201 1.814a3.129 3.129 0 00-3.111 3.088c0 1.967 1.338 3.12 3.306 3.12 1.351 0 2.642-.588 3.004-1.944H11.55a1.183 1.183 0 01-1.128.644 1.27 1.27 0 01-1.35-1.334h4.435c.094-1.989-.99-3.572-3.156-3.572a3.129 3.129 0 00-.148-.002zm10.761 0a3.044 3.044 0 00-.158.002 3.104 3.104 0 103.193 3.11 3.044 3.044 0 00-3.035-3.112zm-16.22.152V9.11h1.98V3.205zm5.588 1.15a1.287 1.287 0 01.02 0 1.206 1.206 0 011.175 1.198H9.072a1.287 1.287 0 011.26-1.197zm10.474.17c.919 0 1.21.893 1.21 1.64 0 .745-.29 1.626-1.21 1.626-.919 0-1.197-.88-1.197-1.627 0-.746.278-1.638 1.197-1.638zM4.599 10.54a2.365 2.365 0 00-1.376.428 1.494 1.494 0 00-.327.701l-.683 2.361a.98.98 0 01-.334.656c-.469.282-1.426.301-1.34 1.336a5.366 5.366 0 00.428 1.547 1.165 1.165 0 01.068.69c-.03.201-.065.401-.105.601-.034.174-.114.55.004.692.117.142.34.13.607.097a15.92 15.92 0 003.322-.994 2.974 2.974 0 00.61-.344 1.624 1.624 0 00.488-1.002.393.393 0 00-.16-.414c-.124-.07-.293-.026-.55.045-.422.115-1.469.519-1.831.63-.147.044-.437.113-.549-.028-.186-.234.08-.967.24-1.375a1.512 1.512 0 011.178-.957c.282-.081.745-.229.933-.293a.849.849 0 00.594-.672c.132-.532-.272-.614-.64-.717-.528-.146-.858-.163-.627-.675a.525.525 0 01.388-.36c.21-.055 1.983-.338 2.688-.467.395-.072.53-.285.695-.627.359-.743-.089-.79-.451-.757-.817.075-2.13.314-2.691.396-.3.045-.101-.47-.45-.494a2.365 2.365 0 00-.129-.004zm11.067 1.149a5.006 5.006 0 00-1.707 1.136c-.045-.303-.052-.637-.36-.672a1.275 1.275 0 00-.68.18 1.102 1.102 0 00-.49.47l-.718 1.659a.13.13 0 01-.108.08.72.72 0 00-.539.45.623.623 0 00.123.657c-.142.384-.52 1.28-.52 1.28-.469 1.097-.438 1.478-.27 1.71a1.305 1.305 0 00.743.35c.272.045.48-.118.707-.48.336-.535 1.01-1.948 1.01-1.948a10.646 10.646 0 004.03 2.436s-1.423 1.967-1.628 3.054c0 0-.105.714.852.711a1.787 1.787 0 00.865-.22.467.467 0 00.219-.282.221.221 0 00-.022-.152.466.466 0 00-.097-.103c-.05-.05-.043-.113-.016-.186.527-1.54 2.67-4.155 3.125-4.722 1.206-1.503 3.433-3.843 3.592-4.03.288-.371.344-.593-.127-1.056-.423-.416-.705-.17-.912.045-.035.041-.994.996-2.004 2.162-.786.907-1.467 1.752-1.467 1.752a8.91 8.91 0 01.06-1.284c.049-.406.18-1.196.221-1.447.2-1.27-.58-1.321-.87-1.34-.306-.018-.451.146-.542.534a14.45 14.45 0 00-.357 4.31c.032.362.102.734.11.758l-.184.256a7.312 7.312 0 01-2.881-1.657A5.466 5.466 0 0016 15.557a2.539 2.539 0 001.332-2.346 1.695 1.695 0 00-1.667-1.523zm-4.625.205a.538.538 0 00-.514.337c-.254.436-.93 1.679-1.541 2.641a10.35 10.35 0 01-1.07 1.52s0-2.442-.031-2.653c-.1-.7-.467-.63-.74-.582-.708.12-.7.388-.733.615a33.16 33.16 0 00.066 3.41c.026.314-.024 1.42.616 1.51.481.068.94-.375 1.289-.76a19.636 19.636 0 001.564-2.01 37.079 37.079 0 001.787-2.763c.231-.408.218-.695-.31-1.092a.538.538 0 00-.383-.173zm4.513 1.306a.353.353 0 01.24.022c.295.16-.044.85-.61 1.271a2.985 2.985 0 01-1.638.678 6.203 6.203 0 01.995-1.295c.344-.345.732-.619 1.013-.676Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/tiktok.svg b/assets/lib/simple-icons/icons/tiktok.svg
index 5ae6b2e3..57ce3ae5 100644
--- a/assets/lib/simple-icons/icons/tiktok.svg
+++ b/assets/lib/simple-icons/icons/tiktok.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Tik Tok icon</title><path d="M12.53.02C13.84 0 15.14.01 16.44 0c.08 1.53.63 3.09 1.75 4.17 1.12 1.11 2.7 1.62 4.24 1.79v4.03c-1.44-.05-2.89-.35-4.2-.97-.57-.26-1.1-.59-1.62-.93-.01 2.92.01 5.84-.02 8.75-.08 1.4-.54 2.79-1.35 3.94-1.31 1.92-3.58 3.17-5.91 3.21-1.43.08-2.86-.31-4.08-1.03-2.02-1.19-3.44-3.37-3.65-5.71-.02-.5-.03-1-.01-1.49.18-1.9 1.12-3.72 2.58-4.96 1.66-1.44 3.98-2.13 6.15-1.72.02 1.48-.04 2.96-.04 4.44-.99-.32-2.15-.23-3.02.37-.63.41-1.11 1.04-1.36 1.75-.21.51-.15 1.07-.14 1.61.24 1.64 1.82 3.02 3.5 2.87 1.12-.01 2.19-.66 2.77-1.61.19-.33.4-.67.41-1.06.1-1.79.06-3.57.07-5.36.01-4.03-.01-8.05.02-12.07z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>TikTok</title><path d="M12.525.02c1.31-.02 2.61-.01 3.91-.02.08 1.53.63 3.09 1.75 4.17 1.12 1.11 2.7 1.62 4.24 1.79v4.03c-1.44-.05-2.89-.35-4.2-.97-.57-.26-1.1-.59-1.62-.93-.01 2.92.01 5.84-.02 8.75-.08 1.4-.54 2.79-1.35 3.94-1.31 1.92-3.58 3.17-5.91 3.21-1.43.08-2.86-.31-4.08-1.03-2.02-1.19-3.44-3.37-3.65-5.71-.02-.5-.03-1-.01-1.49.18-1.9 1.12-3.72 2.58-4.96 1.66-1.44 3.98-2.13 6.15-1.72.02 1.48-.04 2.96-.04 4.44-.99-.32-2.15-.23-3.02.37-.63.41-1.11 1.04-1.36 1.75-.21.51-.15 1.07-.14 1.61.24 1.64 1.82 3.02 3.5 2.87 1.12-.01 2.19-.66 2.77-1.61.19-.33.4-.67.41-1.06.1-1.79.06-3.57.07-5.36.01-4.03-.01-8.05.02-12.07z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/tile.svg b/assets/lib/simple-icons/icons/tile.svg
new file mode 100644
index 00000000..1fcf8dc6
--- /dev/null
+++ b/assets/lib/simple-icons/icons/tile.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Tile</title><path d="M7.486 8.483h1.617a.16.16 0 0 1 .15.15v9.706a.16.16 0 0 1-.15.15H7.486a.162.162 0 0 1-.15-.15V8.633c0-.075.075-.15.15-.15zm3.536-2.972h1.617c.076 0 .151.075.151.15v12.64c0 .075-.075.15-.15.15h-1.618a.162.162 0 0 1-.15-.15V5.66c0-.075.075-.15.15-.15zM5.68 8.483H1.918V5.66a.162.162 0 0 0-.15-.15H.15a.162.162 0 0 0-.15.15v7.787c0 2.746 2.257 5.003 5.003 5.003h.677c.075 0 .15-.075.15-.15v-1.618a.162.162 0 0 0-.15-.15h-.677a3.099 3.099 0 0 1-3.085-3.085v-3.084H5.68c.075 0 .15-.076.15-.15V8.595c0-.076-.075-.113-.15-.113zM22.533 9.95a5.018 5.018 0 0 0-7.035 0c-1.956 1.918-1.918 5.078 0 7.034 1.919 1.956 5.079 1.919 7.035 0a4.48 4.48 0 0 0 .865-1.166.08.08 0 0 0-.075-.075h-2.07l-.225.075c-1.279 1.129-3.235.978-4.363-.338-.339-.414-.602-.903-.678-1.43 0-.075.038-.113.113-.113h7.75c.075 0 .15-.075.15-.15v-.301a5.013 5.013 0 0 0-1.467-3.536zm-.903 2.257h-5.266c-.076 0-.113-.038-.113-.113a3.066 3.066 0 0 1 2.708-1.655c1.129 0 2.182.64 2.709 1.655 0 .038 0 .075-.038.113zM9.404 6.602a1.09 1.09 0 0 1-1.09 1.09 1.09 1.09 0 0 1-1.091-1.09 1.09 1.09 0 0 1 1.09-1.091 1.09 1.09 0 0 1 1.091 1.09Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/timescale.svg b/assets/lib/simple-icons/icons/timescale.svg
index 3b4f8718..b8e2234d 100644
--- a/assets/lib/simple-icons/icons/timescale.svg
+++ b/assets/lib/simple-icons/icons/timescale.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Timescale icon</title><path d="M5.537.763c-1.167.7-2.21 1.582-3.08 2.61L3.79 4.836a10.422 10.422 0 013.627-2.881zm13.028.085l-1.991 1.12a10.381 10.381 0 013.762 3.07l1.18-1.654a12.371 12.371 0 00-2.95-2.536zm-6.564.752a9.788 9.788 0 00-4.131.91l.59 1.011a8.542 8.542 0 013.541-.762c1.261 0 2.457.274 3.534.76l.59-1.012a9.81 9.81 0 00-4.124-.907zM11.4 3.535l-.55 6.626h.003l-.002.04c.003.111.013.216.033.318.01.112.043.227.097.342.114.289.298.505.516.607.05.04.105.075.158.111a.98.98 0 01.033.02v.004l6.68 3.596.348-.476-6.058-4.6c-.007 0-.01-.005-.014-.008L12 3.535zm1.423.052c.19.234.361.523.502.855 3.155.604 5.54 3.325 5.54 6.596 0 .877-.176 1.712-.484 2.48a3.7 3.7 0 01.52.76 7.314 7.314 0 00.754-3.24c0-3.868-2.99-7.05-6.832-7.45zm-2.284.095c-3.527.667-6.19 3.708-6.19 7.356 0 2.584 1.335 4.863 3.367 6.21a9.84 9.84 0 01.295-.743c-1.74-1.219-2.874-3.214-2.874-5.467 0-3.054 2.082-5.632 4.932-6.45.128-.351.289-.656.47-.906zm9.15 1.675l-.801.893a8.101 8.101 0 011.551 4.777c0 2.916-1.542 5.481-3.872 6.952.104.388.188.792.251 1.209 2.87-1.632 4.802-4.677 4.802-8.16a9.224 9.224 0 00-1.93-5.67zm-15.38.007a9.25 9.25 0 00-1.93 5.665c0 3.507 1.954 6.567 4.858 8.19.063-.418.144-.822.248-1.206-2.36-1.468-3.923-4.045-3.923-6.984 0-1.777.573-3.422 1.549-4.772zm9.314.043c.044.203.08.416.107.64a5.332 5.332 0 013.213 2.912l.577-.148a5.942 5.942 0 00-3.897-3.404zm-3.816.187a5.939 5.939 0 00-3.319 3.198l.58.148A5.324 5.324 0 019.73 6.257c.017-.227.04-.45.077-.663zM6.733 9.672l-.62.63.315.614 1.727.618.942-.618-.312-.923zm10.615 0l-2.048.321-.315.923.942.618 1.73-.618.315-.614zM6.1 11.869A5.824 5.824 0 008.42 15.7c.1-.17.204-.335.315-.493a5.252 5.252 0 01-2.038-3.34zm11.206 0c-.03.18-.071.355-.118.529.174.138.338.272.493.41.097-.302.174-.617.22-.94zm-15.679.217L0 14.158c.966 3.661 3.638 6.65 7.132 8.111a9.399 9.399 0 01-.05-1.031c0-.375.017-.747.05-1.111-3.024-1.563-5.166-4.544-5.505-8.041zm20.707.055c-.352 3.45-2.464 6.394-5.441 7.957.033.374.05.755.053 1.136 0 .377-.017.71-.05 1.005 3.506-1.488 6.175-4.522 7.104-8.223zm-6.544 2.617a5.31 5.31 0 01-.486.42c.11.158.218.322.318.493.265-.2.513-.42.74-.66a10.61 10.61 0 01-.572-.253zm1.502.559a6.9 6.9 0 01-1.25 1.156c.106.236.207.485.294.741a7.667 7.667 0 001.857-1.772 3.554 3.554 0 01-.9-.125zm-2.988.63l-2.303.913-2.307-.91-.587 1.435 2.448.946c-.134.46-.568.798-1.08.798-.034 0-.07-.004-.104-.007l-.5.686c.188.063.39.096.6.096.621 0 1.17-.289 1.52-.738a1.924 1.924 0 002.183.62l-.49-.67a1.122 1.122 0 01-1.26-.805l2.47-.926zm1.156 4.775c-1.09.377-2.256.58-3.476.58-1.17 0-2.29-.186-3.34-.534.231.88.59 1.654 1.05 2.262.743.134 1.509.207 2.294.207.835 0 1.65-.082 2.437-.236.453-.61.807-1.39 1.035-2.28z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Timescale</title><path d="M5.537.763c-1.167.7-2.21 1.582-3.08 2.61L3.79 4.836a10.422 10.422 0 013.627-2.881zm13.028.085l-1.991 1.12a10.381 10.381 0 013.762 3.07l1.18-1.654a12.371 12.371 0 00-2.95-2.536zm-6.564.752a9.788 9.788 0 00-4.131.91l.59 1.011a8.542 8.542 0 013.541-.762c1.261 0 2.457.274 3.534.76l.59-1.012a9.81 9.81 0 00-4.124-.907zM11.4 3.535l-.55 6.626h.003l-.002.04c.003.111.013.216.033.318.01.112.043.227.097.342.114.289.298.505.516.607.05.04.105.075.158.111a.98.98 0 01.033.02v.004l6.68 3.596.348-.476-6.058-4.6c-.007 0-.01-.005-.014-.008L12 3.535zm1.423.052c.19.234.361.523.502.855 3.155.604 5.54 3.325 5.54 6.596 0 .877-.176 1.712-.484 2.48a3.7 3.7 0 01.52.76 7.314 7.314 0 00.754-3.24c0-3.868-2.99-7.05-6.832-7.45zm-2.284.095c-3.527.667-6.19 3.708-6.19 7.356 0 2.584 1.335 4.863 3.367 6.21a9.84 9.84 0 01.295-.743c-1.74-1.219-2.874-3.214-2.874-5.467 0-3.054 2.082-5.632 4.932-6.45.128-.351.289-.656.47-.906zm9.15 1.675l-.801.893a8.101 8.101 0 011.551 4.777c0 2.916-1.542 5.481-3.872 6.952.104.388.188.792.251 1.209 2.87-1.632 4.802-4.677 4.802-8.16a9.224 9.224 0 00-1.93-5.67zm-15.38.007a9.25 9.25 0 00-1.93 5.665c0 3.507 1.954 6.567 4.858 8.19.063-.418.144-.822.248-1.206-2.36-1.468-3.923-4.045-3.923-6.984 0-1.777.573-3.422 1.549-4.772zm9.314.043c.044.203.08.416.107.64a5.332 5.332 0 013.213 2.912l.577-.148a5.942 5.942 0 00-3.897-3.404zm-3.816.187a5.939 5.939 0 00-3.319 3.198l.58.148A5.324 5.324 0 019.73 6.257c.017-.227.04-.45.077-.663zM6.733 9.672l-.62.63.315.614 1.727.618.942-.618-.312-.923zm10.615 0l-2.048.321-.315.923.942.618 1.73-.618.315-.614zM6.1 11.869A5.824 5.824 0 008.42 15.7c.1-.17.204-.335.315-.493a5.252 5.252 0 01-2.038-3.34zm11.206 0c-.03.18-.071.355-.118.529.174.138.338.272.493.41.097-.302.174-.617.22-.94zm-15.679.217L0 14.158c.966 3.661 3.638 6.65 7.132 8.111a9.399 9.399 0 01-.05-1.031c0-.375.017-.747.05-1.111-3.024-1.563-5.166-4.544-5.505-8.041zm20.707.055c-.352 3.45-2.464 6.394-5.441 7.957.033.374.05.755.053 1.136 0 .377-.017.71-.05 1.005 3.506-1.488 6.175-4.522 7.104-8.223zm-6.544 2.617a5.31 5.31 0 01-.486.42c.11.158.218.322.318.493.265-.2.513-.42.74-.66a10.61 10.61 0 01-.572-.253zm1.502.559a6.9 6.9 0 01-1.25 1.156c.106.236.207.485.294.741a7.667 7.667 0 001.857-1.772 3.554 3.554 0 01-.9-.125zm-2.988.63l-2.303.913-2.307-.91-.587 1.435 2.448.946c-.134.46-.568.798-1.08.798-.034 0-.07-.004-.104-.007l-.5.686c.188.063.39.096.6.096.621 0 1.17-.289 1.52-.738a1.924 1.924 0 002.183.62l-.49-.67a1.122 1.122 0 01-1.26-.805l2.47-.926zm1.156 4.775c-1.09.377-2.256.58-3.476.58-1.17 0-2.29-.186-3.34-.534.231.88.59 1.654 1.05 2.262.743.134 1.509.207 2.294.207.835 0 1.65-.082 2.437-.236.453-.61.807-1.39 1.035-2.28z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/tinder.svg b/assets/lib/simple-icons/icons/tinder.svg
index 133fd01d..193bdf09 100644
--- a/assets/lib/simple-icons/icons/tinder.svg
+++ b/assets/lib/simple-icons/icons/tinder.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Tinder icon</title><path d="M9.317 9.451c.045.073.123.12.212.12.06 0 .116-.021.158-.057l.015-.012c.39-.325.741-.66 1.071-1.017 3.209-3.483 1.335-7.759 1.32-7.799-.09-.21-.03-.459.15-.594.195-.135.435-.12.615.033 10.875 10.114 7.995 17.818 7.785 18.337-.87 3.141-4.335 5.414-8.444 5.53-.138.008-.242.008-.363.008-4.852 0-8.977-2.989-8.977-6.807v-.06c0-5.297 4.795-10.522 5.009-10.744.136-.149.345-.195.525-.105.18.076.297.255.291.451-.043 1.036.167 1.935.631 2.7v.015l.002.001z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Tinder</title><path d="M9.317 9.451c.045.073.123.12.212.12.06 0 .116-.021.158-.057l.015-.012c.39-.325.741-.66 1.071-1.017 3.209-3.483 1.335-7.759 1.32-7.799-.09-.21-.03-.459.15-.594.195-.135.435-.12.615.033 10.875 10.114 7.995 17.818 7.785 18.337-.87 3.141-4.335 5.414-8.444 5.53-.138.008-.242.008-.363.008-4.852 0-8.977-2.989-8.977-6.807v-.06c0-5.297 4.795-10.522 5.009-10.744.136-.149.345-.195.525-.105.18.076.297.255.291.451-.043 1.036.167 1.935.631 2.7v.015l.002.001z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/tinyletter.svg b/assets/lib/simple-icons/icons/tinyletter.svg
new file mode 100644
index 00000000..564ef6eb
--- /dev/null
+++ b/assets/lib/simple-icons/icons/tinyletter.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>TinyLetter</title><path d="M19.069 18.202h-4.913v3.207l-4.22-3.207H4.93a.643.643 0 01-.643-.642v-1.69l3.987-3.028L12 15.672l3.725-2.83 3.987 3.03v1.688a.643.643 0 01-.643.642zM7.213 12.035l-2.925 2.222V9.813zm12.499-2.222v4.444l-2.925-2.222zM4.932 5.61h2.735L12 9.128l4.338-3.518h2.73c.355 0 .644.288.644.642v1.946L12 14.058l-7.712-5.86V6.252c0-.354.289-.642.643-.642zm3.407-3.772c.356-.356.83-.553 1.335-.553.504 0 .978.197 1.334.553L12 2.83l.992-.992c.356-.356.83-.553 1.334-.553.505 0 .979.197 1.335.553.357.357.553.83.553 1.335 0 .494-.188.959-.53 1.313L12 7.473 8.317 4.486a1.89 1.89 0 01.022-2.648zm10.73 2.486h-1.787A3.167 3.167 0 0016.57.93C15.97.33 15.174 0 14.326 0c-.847 0-1.644.33-2.243.93L12 1.011 11.917.93C11.317.33 10.521 0 9.674 0 8.826 0 8.029.33 7.43.93a3.176 3.176 0 00-.711 3.394H4.93a1.93 1.93 0 00-1.928 1.928V17.56a1.93 1.93 0 001.928 1.928h4.572L15.44 24v-4.512h3.628a1.93 1.93 0 001.928-1.928V6.252a1.93 1.93 0 00-1.928-1.928"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/tmobile.svg b/assets/lib/simple-icons/icons/tmobile.svg
new file mode 100644
index 00000000..7a315388
--- /dev/null
+++ b/assets/lib/simple-icons/icons/tmobile.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>T-Mobile</title><path d="M6.722 15.84h-4.8v-4.8h4.791v4.8zM1.922 0v8.16H3.36v-.236c0-3.844 2.159-6.24 6.239-6.24h.237v17.279c0 2.396-.957 3.36-3.36 3.36h-.72V24h12.478v-1.676h-.72c-2.395 0-3.36-.957-3.36-3.361V1.676h.237c4.08 0 6.239 2.396 6.239 6.24v.236h1.439V0Zm15.356 15.84h4.8v-4.8h-4.791v4.8z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/tmux.svg b/assets/lib/simple-icons/icons/tmux.svg
new file mode 100644
index 00000000..34b2ea1b
--- /dev/null
+++ b/assets/lib/simple-icons/icons/tmux.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>tmux</title><path d="M24 2.251V10.5H12.45V0h9.3A2.251 2.251 0 0 1 24 2.251zM12.45 11.4H24v10.5h-.008A2.25 2.25 0 0 1 21.75 24H2.25a2.247 2.247 0 0 1-2.242-2.1H0V2.251A2.251 2.251 0 0 1 2.25 0h9.3v21.6h.9V11.4zm11.242 10.5H.308a1.948 1.948 0 0 0 1.942 1.8h19.5a1.95 1.95 0 0 0 1.942-1.8z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/todoist.svg b/assets/lib/simple-icons/icons/todoist.svg
index 7e6070c5..8b53ff6c 100644
--- a/assets/lib/simple-icons/icons/todoist.svg
+++ b/assets/lib/simple-icons/icons/todoist.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Todoist icon</title><path d="M21 0H3C1.35 0 0 1.35 0 3v3.858s3.854 2.24 4.098 2.38c.31.18.694.177 1.004 0 .26-.147 8.02-4.608 8.136-4.675.279-.161.58-.107.748-.01.164.097.606.348.84.48.232.134.221.502.013.622l-9.712 5.59c-.346.2-.69.204-1.048.002C3.478 10.907.998 9.463 0 8.882v2.02l4.098 2.38c.31.18.694.177 1.004 0 .26-.147 8.02-4.609 8.136-4.676.279-.16.58-.106.748-.008.164.096.606.347.84.48.232.133.221.5.013.62-.208.121-9.288 5.346-9.712 5.59-.346.2-.69.205-1.048.002C3.478 14.951.998 13.506 0 12.926v2.02l4.098 2.38c.31.18.694.177 1.004 0 .26-.147 8.02-4.609 8.136-4.676.279-.16.58-.106.748-.009.164.097.606.348.84.48.232.133.221.502.013.622l-9.712 5.59c-.346.199-.69.204-1.048.001C3.478 18.994.998 17.55 0 16.97V21c0 1.65 1.35 3 3 3h18c1.65 0 3-1.35 3-3V3c0-1.65-1.35-3-3-3z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Todoist</title><path d="M21 0H3C1.35 0 0 1.35 0 3v3.858s3.854 2.24 4.098 2.38c.31.18.694.177 1.004 0 .26-.147 8.02-4.608 8.136-4.675.279-.161.58-.107.748-.01.164.097.606.348.84.48.232.134.221.502.013.622l-9.712 5.59c-.346.2-.69.204-1.048.002C3.478 10.907.998 9.463 0 8.882v2.02l4.098 2.38c.31.18.694.177 1.004 0 .26-.147 8.02-4.609 8.136-4.676.279-.16.58-.106.748-.008.164.096.606.347.84.48.232.133.221.5.013.62-.208.121-9.288 5.346-9.712 5.59-.346.2-.69.205-1.048.002C3.478 14.951.998 13.506 0 12.926v2.02l4.098 2.38c.31.18.694.177 1.004 0 .26-.147 8.02-4.609 8.136-4.676.279-.16.58-.106.748-.009.164.097.606.348.84.48.232.133.221.502.013.622l-9.712 5.59c-.346.199-.69.204-1.048.001C3.478 18.994.998 17.55 0 16.97V21c0 1.65 1.35 3 3 3h18c1.65 0 3-1.35 3-3V3c0-1.65-1.35-3-3-3z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/toggl.svg b/assets/lib/simple-icons/icons/toggl.svg
index 065ea577..af37ab00 100644
--- a/assets/lib/simple-icons/icons/toggl.svg
+++ b/assets/lib/simple-icons/icons/toggl.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Toggl icon</title><path d="M12 0C5.373 0 0 5.37 0 12s5.373 12 12 12c6.63 0 12-5.37 12-12S18.63 0 12 0zm-.84 4.67h1.68v8.36h-1.68V4.67zM12 18.155c-3.24-.002-5.865-2.63-5.864-5.868 0-2.64 1.767-4.956 4.314-5.655v1.71c-1.628.64-2.698 2.21-2.695 3.96 0 2.345 1.903 4.244 4.248 4.243 2.344-.002 4.244-1.903 4.243-4.248 0-1.745-1.07-3.312-2.694-3.95V6.63c2.55.7 4.314 3.018 4.314 5.66 0 3.24-2.626 5.864-5.865 5.864z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Toggl</title><path d="M12 0C5.373 0 0 5.37 0 12s5.373 12 12 12c6.63 0 12-5.37 12-12S18.63 0 12 0zm-.84 4.67h1.68v8.36h-1.68V4.67zM12 18.155c-3.24-.002-5.865-2.63-5.864-5.868 0-2.64 1.767-4.956 4.314-5.655v1.71c-1.628.64-2.698 2.21-2.695 3.96 0 2.345 1.903 4.244 4.248 4.243 2.344-.002 4.244-1.903 4.243-4.248 0-1.745-1.07-3.312-2.694-3.95V6.63c2.55.7 4.314 3.018 4.314 5.66 0 3.24-2.626 5.864-5.865 5.864z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/tokyometro.svg b/assets/lib/simple-icons/icons/tokyometro.svg
new file mode 100644
index 00000000..d0e1733e
--- /dev/null
+++ b/assets/lib/simple-icons/icons/tokyometro.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Tokyo Metro</title><path d="M11.9832 18.2104c2.86.006 4.04-.949 4.043-2.392.003-1.7021-1.694-3.7822-2.923-5.0732 2.318-2.082 5.3251-3.622 6.5082-2.432 1.367 1.367.02 5.418-3.2131 9.8922l4.26 1.222c3.6132-6.4301 4.3802-12.7603 1.8901-14.4733-1.946-1.329-6.8521 1.337-10.5502 4.721-3.6871-3.398-8.5802-6.08-10.5323-4.759-2.5 1.704-1.748 8.0372 1.841 14.4803l4.2662-1.207C4.35 13.7033 3.02 9.6482 4.393 8.285c1.184-1.185 4.1861.365 6.5002 2.4561-1.237 1.286-2.9431 3.36-2.9451 5.0621-.003 1.444 1.176 2.402 4.035 2.408zm.004-2.34c-.947-.001-1.745-.242-1.743-1.0501 0-.748.637-1.88 1.75-3.106 1.11 1.23 1.739 2.364 1.738 3.113-.001.807-.8 1.045-1.745 1.044z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/tomorrowland.svg b/assets/lib/simple-icons/icons/tomorrowland.svg
index 513c94cd..db0890f2 100644
--- a/assets/lib/simple-icons/icons/tomorrowland.svg
+++ b/assets/lib/simple-icons/icons/tomorrowland.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Tomorrowland icon</title><path d="M11.97 0c-.009.01-.35.35-.747.758-.826.835-1.504 1.271-2.524 1.62-.582.205-.836.243-1.496.204-.427-.02-.883-.067-1-.115-.194-.058-.223-.04-.223.174 0 .33-.251 1.02-.523 1.437l-.234.35.244.3c.126.175.281.311.33.311.048 0 .31-.175.592-.389.738-.563 2.039-1.212 3.048-1.513.797-.253.99-.274 2.563-.274 1.573 0 1.766.021 2.563.274 1.01.3 2.31.95 3.048 1.513.282.214.544.39.592.39.049 0 .204-.137.33-.302l.244-.31-.283-.448a4.197 4.197 0 01-.416-.98c-.107-.437-.165-.523-.31-.494-.107.02-.534.057-.971.076-.621.03-.913.001-1.408-.164-1.03-.35-1.825-.845-2.641-1.67-.417-.417-.768-.758-.777-.748zm-.284 3.328a2.38 2.38 0 00-.317.022c-1.369.213-2.504.882-3.203 1.882l-.273.39.273.388c.301.437.805.873 1.805 1.572.825.583 1.583 1.408 1.787 1.97.097.243.193.438.232.428.03 0 .175-.251.32-.552.302-.641.846-1.225 1.73-1.846.96-.68 1.512-1.164 1.794-1.572l.264-.38-.291-.427a4.434 4.434 0 00-2.32-1.66c-.45-.126-1.267-.22-1.801-.215zm-7.502.031l-.475.524C3.059 4.6 2.155 5.99 1.902 6.66c-.63 1.7-.464 3.127.536 4.486.796 1.078 2.357 2.165 4.095 2.854.447.165.807.34.807.379 0 .029-.126.088-.291.127-.456.097-1.408.766-1.66 1.174-.185.29-.233.504-.223.96.01 1.35.97 2.526 2.834 3.477.602.301 1.184.553 1.291.553.32 0 1.108-.874 1.477-1.66.699-1.437 1-3.408.912-5.912-.078-2.272-.32-3.059-1.252-4.04-.272-.29-.827-.727-1.235-.97C6 6.117 4.465 4.738 4.243 3.64l-.06-.282zm15.634.094c-.036-.003-.047.037-.05.11-.01.96-1.728 2.525-4.961 4.525-.408.243-.963.68-1.235.97-.932.981-1.174 1.768-1.252 4.04-.087 2.504.213 4.475.912 5.912.37.786 1.157 1.66 1.477 1.66.107 0 .68-.242 1.271-.543 1.874-.951 2.844-2.137 2.854-3.486.01-.457-.038-.67-.223-.961-.252-.408-1.204-1.077-1.66-1.174-.165-.039-.29-.098-.29-.127 0-.039.36-.214.806-.379 1.738-.69 3.3-1.776 4.096-2.854 1-1.359 1.166-2.787.535-4.486-.262-.699-1.176-2.088-1.827-2.787-.267-.291-.393-.415-.453-.42zm-7.994.533l.274.004c.757.03 1.018.078 1.484.291.505.233 1.621 1.165 1.621 1.35 0 .126-1.183 1.02-1.746 1.31-.476.253-.632.282-1.457.282-.883 0-.951-.02-1.602-.37a7.076 7.076 0 01-1.156-.785l-.484-.418L9 5.36c.36-.447 1-.904 1.611-1.157.425-.178.634-.221 1.213-.217zm.188.19a1.362 1.362 0 00-.692.174c-1.34.708-.844 2.728.68 2.728 1.485 0 2.01-1.951.719-2.69a1.475 1.475 0 00-.707-.212zm-.282.635c.157-.001.3.096.387.287.214.456-.476.98-.767.591-.224-.281-.224-.466.01-.699a.543.543 0 01.37-.18zm-9.943 6.46c-.039-.019-.078.563-.078 1.291 0 2.593.67 4.428 2.379 6.467 1.466 1.748 4.282 3.612 7.058 4.65l.844.321.807-.32c4.165-1.65 7.416-4.34 8.717-7.223.534-1.165.7-1.933.748-3.477.029-.786.029-1.504-.01-1.591-.049-.127-.135-.078-.436.261-.359.408-.37.457-.427 1.301-.272 4.088-3.224 7.534-7.33 8.563-1 .252-3.311.225-4.33-.047-4.03-1.107-6.856-4.477-7.118-8.516-.058-.825-.078-.893-.398-1.262-.194-.213-.377-.408-.426-.418Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Tomorrowland</title><path d="M11.97 0c-.009.01-.35.35-.747.758-.826.835-1.504 1.271-2.524 1.62-.582.205-.836.243-1.496.204-.427-.02-.883-.067-1-.115-.194-.058-.223-.04-.223.174 0 .33-.251 1.02-.523 1.437l-.234.35.244.3c.126.175.281.311.33.311.048 0 .31-.175.592-.389.738-.563 2.039-1.212 3.048-1.513.797-.253.99-.274 2.563-.274 1.573 0 1.766.021 2.563.274 1.01.3 2.31.95 3.048 1.513.282.214.544.39.592.39.049 0 .204-.137.33-.302l.244-.31-.283-.448a4.197 4.197 0 01-.416-.98c-.107-.437-.165-.523-.31-.494-.107.02-.534.057-.971.076-.621.03-.913.001-1.408-.164-1.03-.35-1.825-.845-2.641-1.67-.417-.417-.768-.758-.777-.748zm-.284 3.328a2.38 2.38 0 00-.317.022c-1.369.213-2.504.882-3.203 1.882l-.273.39.273.388c.301.437.805.873 1.805 1.572.825.583 1.583 1.408 1.787 1.97.097.243.193.438.232.428.03 0 .175-.251.32-.552.302-.641.846-1.225 1.73-1.846.96-.68 1.512-1.164 1.794-1.572l.264-.38-.291-.427a4.434 4.434 0 00-2.32-1.66c-.45-.126-1.267-.22-1.801-.215zm-7.502.031l-.475.524C3.059 4.6 2.155 5.99 1.902 6.66c-.63 1.7-.464 3.127.536 4.486.796 1.078 2.357 2.165 4.095 2.854.447.165.807.34.807.379 0 .029-.126.088-.291.127-.456.097-1.408.766-1.66 1.174-.185.29-.233.504-.223.96.01 1.35.97 2.526 2.834 3.477.602.301 1.184.553 1.291.553.32 0 1.108-.874 1.477-1.66.699-1.437 1-3.408.912-5.912-.078-2.272-.32-3.059-1.252-4.04-.272-.29-.827-.727-1.235-.97C6 6.117 4.465 4.738 4.243 3.64l-.06-.282zm15.634.094c-.036-.003-.047.037-.05.11-.01.96-1.728 2.525-4.961 4.525-.408.243-.963.68-1.235.97-.932.981-1.174 1.768-1.252 4.04-.087 2.504.213 4.475.912 5.912.37.786 1.157 1.66 1.477 1.66.107 0 .68-.242 1.271-.543 1.874-.951 2.844-2.137 2.854-3.486.01-.457-.038-.67-.223-.961-.252-.408-1.204-1.077-1.66-1.174-.165-.039-.29-.098-.29-.127 0-.039.36-.214.806-.379 1.738-.69 3.3-1.776 4.096-2.854 1-1.359 1.166-2.787.535-4.486-.262-.699-1.176-2.088-1.827-2.787-.267-.291-.393-.415-.453-.42zm-7.994.533l.274.004c.757.03 1.018.078 1.484.291.505.233 1.621 1.165 1.621 1.35 0 .126-1.183 1.02-1.746 1.31-.476.253-.632.282-1.457.282-.883 0-.951-.02-1.602-.37a7.076 7.076 0 01-1.156-.785l-.484-.418L9 5.36c.36-.447 1-.904 1.611-1.157.425-.178.634-.221 1.213-.217zm.188.19a1.362 1.362 0 00-.692.174c-1.34.708-.844 2.728.68 2.728 1.485 0 2.01-1.951.719-2.69a1.475 1.475 0 00-.707-.212zm-.282.635c.157-.001.3.096.387.287.214.456-.476.98-.767.591-.224-.281-.224-.466.01-.699a.543.543 0 01.37-.18zm-9.943 6.46c-.039-.019-.078.563-.078 1.291 0 2.593.67 4.428 2.379 6.467 1.466 1.748 4.282 3.612 7.058 4.65l.844.321.807-.32c4.165-1.65 7.416-4.34 8.717-7.223.534-1.165.7-1.933.748-3.477.029-.786.029-1.504-.01-1.591-.049-.127-.135-.078-.436.261-.359.408-.37.457-.427 1.301-.272 4.088-3.224 7.534-7.33 8.563-1 .252-3.311.225-4.33-.047-4.03-1.107-6.856-4.477-7.118-8.516-.058-.825-.078-.893-.398-1.262-.194-.213-.377-.408-.426-.418Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/topcoder.svg b/assets/lib/simple-icons/icons/topcoder.svg
index 542446d1..93862f26 100644
--- a/assets/lib/simple-icons/icons/topcoder.svg
+++ b/assets/lib/simple-icons/icons/topcoder.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Topcoder icon</title><path d="M20.514 16.517c.192-.026.376-.112.542-.21.345-.201.646-.473.936-.75.226-.214.444-.436.653-.67.12-.146.256-.296.376-.451.105-.143.21-.285.315-.436.076-.115.15-.23.212-.35.33-.598.601-1.336.361-2.016-.031-.094-.076-.185-.121-.27-.091-.154-.211-.291-.331-.413-.21-.201-.468-.36-.723-.489-.376-.188-.781-.313-1.201-.406-.603-.137-1.205-.201-1.821-.226-.842-.041-1.684-.006-2.512.076.105.109.196.225.301.338.195.226.392.467.571.723.227.3.437.631.647.962.602.992 1.054 2.075 1.383 3.173.105.33.182.662.255 1.008.031.12.048.256.077.391l.08.016zm-18.585-.151c.052-.204.105-.412.16-.616.08-.301.176-.6.266-.896.069-.217.15-.429.227-.645.09-.225.185-.45.277-.676.033-.076.061-.153.098-.23.102-.215.211-.427.322-.637.135-.242.256-.481.391-.707.18-.316.377-.602.586-.888l.016-.015c-.331-.016-.677-.016-1.008-.016-.24 0-.496.016-.736.045-.166.016-.33.031-.496.061-.121.016-.24.045-.361.075-.586.15-1.248.421-1.533 1.007-.031.076-.061.151-.091.242-.032.12-.047.27-.047.406 0 .211.045.421.089.632.091.315.242.617.393.902.285.496.646.962 1.022 1.398l.481.525-.056.033zm18.151-.045c-.492-2.302-1.546-4.532-3.194-6.236l-.083-.086-.041-.04c-.2.014-.399.045-.603.074-2.154.332-4.26.918-6.285 1.715.168.045.336.09.507.15.706.226 1.413.466 2.108.723 2.421.902 4.755 2.029 6.998 3.322l.586.347.007.031zm-17.706-.139l.873-.843c.15-.143.15-.142.301-.28 1.533-1.354 3.318-2.375 5.18-3.217-.275-.076-.549-.136-.824-.195-1.053-.241-2.113-.437-3.188-.527-.084.121-.166.227-.247.346-.181.271-.354.527-.517.813-.15.24-.271.481-.392.723-.104.195-.21.391-.286.586-.029.045-.045.105-.06.15-.091.226-.195.451-.286.677-.074.181-.135.36-.195.541-.09.286-.18.557-.255.843-.046.15-.091.301-.12.45l.016-.067zm6.914-4.587c.21-.091.417-.175.628-.255.233-.094.466-.182.7-.269 1.023-.376 2.061-.692 3.113-.947.873-.211 1.744-.376 2.633-.511l.06-.016c-.241-.226-.496-.421-.752-.617-.481-.36-1.007-.662-1.563-.902-1.295-.556-2.723-.736-4.105-.48-.753.134-1.491.39-2.167.752-1.067.571-2 1.383-2.768 2.315l-.03.016.466.044.572.076c.813.135 1.594.301 2.391.48.301.076.587.151.873.227l-.051.087z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Topcoder</title><path d="M12.004 7.555c-1.87 0-3.88.979-5.559 2.678 1.741.384 3.587.997 5.046 1.662l.513.23c.204-.09.367-.163.513-.23 1.464-.667 3.318-1.282 5.064-1.667-1.645-1.796-3.508-2.673-5.577-2.673zm8.751 2.723c-.675.016-1.44.101-2.282.254.608.784 1.26 2 1.928 3.503a43.559 43.559 0 0 1 .981 2.4c.305-.06.58-.232.825-.542 1.393-1.761 2.038-3.366 1.708-4.349-.26-.776-1.152-1.19-2.515-1.258a8.77 8.77 0 0 0-.645-.008zm-17.506 0a8.844 8.844 0 0 0-.646.008c-1.365.068-2.258.481-2.518 1.258-.33.983.315 2.588 1.708 4.35.258.325.549.499.873.55.15-1.468 1.501-4.253 2.868-5.911a14.877 14.877 0 0 0-2.285-.254zm14.69.352c-1.184.197-3.63.971-5.15 1.638l-.036.017a10.22 10.22 0 0 1 1.798.599c1.268.55 1.504.694 5.169 3.06.206.134.37.227.587.32.194.084.383.143.566.174a42.717 42.717 0 0 0-1.316-3.092c-.46-.96-.906-1.758-1.323-2.338-.1-.14-.2-.266-.295-.378zm-11.866.004c-1.35 1.538-2.758 4.38-2.927 5.802.361-.061.79-.24 1.222-.49.317-.185.65-.394 1.054-.659.243-.16 1.153-.768 1.087-.724 1.939-1.29 3.253-1.982 4.678-2.288-1.589-.69-3.798-1.417-5.114-1.64z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/toptal.svg b/assets/lib/simple-icons/icons/toptal.svg
index 778a1997..edb6eb1e 100644
--- a/assets/lib/simple-icons/icons/toptal.svg
+++ b/assets/lib/simple-icons/icons/toptal.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Toptal icon</title><path d="M20.227 10.038L10.188 0l-2.04 2.04 3.773 3.769-8.155 8.153L13.807 24l2.039-2.039-3.772-3.771 8.16-8.152h-.007zM8.301 14.269l6.066-6.063 1.223 1.223-6.064 6.113-1.223-1.26-.002-.013z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Toptal</title><path d="M20.227 10.038L10.188 0l-2.04 2.04 3.773 3.769-8.155 8.153L13.807 24l2.039-2.039-3.772-3.771 8.16-8.152h-.007zM8.301 14.269l6.066-6.063 1.223 1.223-6.064 6.113-1.223-1.26-.002-.013z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/tor.svg b/assets/lib/simple-icons/icons/tor.svg
deleted file mode 100644
index 6e28fc4d..00000000
--- a/assets/lib/simple-icons/icons/tor.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" role="img"><title>Tor icon</title><path d="M17.578 12.201c-.76-.692-1.721-1.251-2.704-1.81-.446-.246-1.81-1.318-1.34-2.838l-.851-.358c1.342-2.078 3.085-4.134 5.229-6.056-1.721.581-3.24 1.476-4.379 3.062.67-1.407 1.765-2.793 2.972-4.201-1.654 1.185-3.084 2.525-3.979 4.313l.627-2.503c-.894 1.608-1.52 3.24-1.766 4.871l-1.317-.535-.223.178c1.162 2.078.559 3.174-.022 3.553-1.162.783-2.838 1.788-3.688 2.659-1.609 1.654-2.078 3.218-1.921 5.296.157 2.66 2.101 4.873 4.67 5.744 1.14.38 2.19.424 3.352.424 1.877 0 3.799-.491 5.207-1.676a6.551 6.551 0 0 0 2.369-5.027 6.875 6.875 0 0 0-2.236-5.096zm-3.553 8.872c-.09.402-.38.894-.737 1.341.134-.246.246-.492.313-.76.559-1.989.805-2.904.537-5.095-.045-.224-.135-.938-.471-1.721-.468-1.185-1.184-2.303-1.272-2.548-.157-.38-.38-1.989-.403-3.084.023.938.089 2.659.335 3.329.067.225.715 1.229 1.185 2.459.312.849.38 1.632.446 1.854.224 1.007-.045 2.705-.401 4.313-.111.581-.426 1.252-.828 1.766.225-.313.402-.715.537-1.185.269-.938.38-2.145.356-2.905-.021-.446-.222-1.407-.558-2.278-.201-.47-.492-.961-.692-1.297-.224-.335-.224-1.072-.313-1.921.021.916-.068 1.385.156 2.033.134.379.625.916.759 1.43.201.693.402 1.453.381 1.922 0 .536-.022 1.52-.269 2.593-.157.804-.515 1.497-1.095 1.943.246-.312.38-.625.447-.938.089-.469.111-.916.156-1.475a5.96 5.96 0 0 0-.111-1.721c-.179-.805-.469-1.608-.604-2.168.022.626.269 1.408.381 2.235.089.604.044 1.206.021 1.742-.021.627-.223 1.722-.492 2.258-.268-.112-.357-.269-.537-.491-.223-.291-.357-.604-.491-.962a5.043 5.043 0 0 1-.291-.915 3.071 3.071 0 0 1 .559-2.213c.469-.671.559-.716.715-1.497-.223.692-.379.759-.871 1.341-.559.647-.648 1.586-.648 2.346 0 .313.134.671.246 1.007.134.356.268.714.447.982.134.223.313.379.469.491-.581-.156-1.184-.379-1.564-.692-.938-.805-1.765-2.167-1.877-3.375-.089-.982.804-2.413 2.078-3.128 1.073-.626 1.318-1.319 1.542-2.459-.313.983-.626 1.833-1.654 2.348-1.475.804-2.235 2.1-2.167 3.352.112 1.586.737 2.682 2.011 3.554.291.2.693.401 1.118.559-1.587-.381-1.788-.604-2.324-1.229 0-.045-.134-.135-.134-.156-.715-.805-1.609-2.19-1.922-3.464-.112-.447-.224-.916-.089-1.363.581-2.101 1.854-2.905 3.128-3.775.313-.225.626-.426.916-.649.715-.559.894-2.012 1.05-2.838-.29 1.006-.603 2.258-1.162 2.659-.29.224-.648.402-.938.604-1.318.894-2.637 1.743-3.24 3.91-.134.56-.044.962.089 1.498.335 1.317 1.229 2.748 1.989 3.597l.134.135c.335.381.76.67 1.274.871a5.945 5.945 0 0 1-1.296-.469c-2.078-1.005-3.463-3.173-3.553-4.939-.179-3.597 1.542-4.647 3.151-5.966.894-.737 2.145-1.095 2.86-2.413.134-.291.224-.916.045-1.587-.067-.224-.402-1.028-.537-1.207l1.989.872c-.044.938-.067 1.698.112 2.391.2.76 1.184 1.854 1.586 3.129.783 2.41.583 5.561.023 8.019z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/torbrowser.svg b/assets/lib/simple-icons/icons/torbrowser.svg
new file mode 100644
index 00000000..1e4e810d
--- /dev/null
+++ b/assets/lib/simple-icons/icons/torbrowser.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Tor Browser</title><path d="M12 21.82v-1.46A8.36 8.36 0 0020.36 12 8.36 8.36 0 0012 3.64V2.18A9.83 9.83 0 0121.82 12 9.83 9.83 0 0112 21.82zm0-5.09A4.74 4.74 0 0016.73 12 4.74 4.74 0 0012 7.27V5.82A6.17 6.17 0 0118.18 12 6.17 6.17 0 0112 18.18zm0-7.27A2.54 2.54 0 0114.55 12 2.54 2.54 0 0112 14.54zM0 12a12 12 0 0012 12 12 12 0 0012-12A12 12 0 0012 0 12 12 0 000 12z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/torproject.svg b/assets/lib/simple-icons/icons/torproject.svg
new file mode 100644
index 00000000..2af1961e
--- /dev/null
+++ b/assets/lib/simple-icons/icons/torproject.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Tor Project</title><path d="M11.9124 17.1581zM17.9817 1.14a8.419 8.419 0 00-4.4695 3.1196A21.4277 21.4277 0 0116.512 0a12.4187 12.4187 0 00-3.9996 4.3595l.64-2.5497a14.6284 14.6284 0 00-1.8998 5.3494l1.1198.48a33.1264 33.1264 0 015.6094-6.4993zm.82 13.0686c-.82-1.5199-2.9197-3.0097-5.1295-4.3896-.51-.3-.61-1.4098-.53-1.8898l-.5099-.24a6.3693 6.3693 0 00.16 2.3898c.24.75.9999 1.5998 1.5198 2.7997a18.158 18.158 0 01.72 2.9197 13.1686 13.1686 0 01-.54 6.1193 4.2595 4.2595 0 01-1.4298 1.9198l-.24.16c4.1595.13 8.829-4.6295 5.9793-9.789zm-5.3995 4.7894a6.6193 6.6193 0 00-.42-1.9997 12.4087 12.4087 0 00-.7498-1.4399 6.2293 6.2293 0 01-.16-2.0698 6.9992 6.9992 0 00.32 1.9398 11.0788 11.0788 0 01.6899 1.2999 8.999 8.999 0 01.5899 2.2697 10.4289 10.4289 0 01-.35 2.9997 5.1094 5.1094 0 01-.4 1 4.8495 4.8495 0 00.7-1.52 12.4187 12.4187 0 00.36-4.4794 11.6087 11.6087 0 00-.46-1.8898c-.44-1.2-1.0699-2.2298-1.1499-2.4698a16.2082 16.2082 0 01-.39-3.3596 14.3084 14.3084 0 00.44 3.1197c.08.24.8 1.3798 1.2999 2.5797a7.4692 7.4692 0 01.48 1.7298 10.7188 10.7188 0 01-.53 5.1594 3.9996 3.9996 0 01-.35.82 3.7196 3.7196 0 00.8-1.41 16.1382 16.1382 0 000-8.109c-.42-1.2799-1.4099-2.3998-1.6499-3.1697a7.6792 7.6792 0 01-.08-2.3897l-2.1497-1c.56 1.44.6599 2.5598.08 2.9998-2.2598 1.8698-5.9994 3.9995-5.9994 7.1092 0 3.3196 1.9998 6.9092 7.0492 7.1792a12.9986 12.9986 0 01-1.6998-.56 3.4496 3.4496 0 01-1.3098-.8998l-.13-.14A9.339 9.339 0 016.233 18.658a2.7097 2.7097 0 01-.08-1.5199 6.6793 6.6793 0 013.2797-3.9995 10.099 10.099 0 00.9999-.61c.4699-.29.7699-1.5298 1.0798-2.5297-.16.77-.34 2.2598-1.0599 2.8197-.29.22-.6099.43-.9299.64-1.2798.8798-2.5397 1.6998-3.1696 3.8095a2.8197 2.8197 0 00.08 1.3799 9.319 9.319 0 001.9498 3.5096s.13.13.13.16a2.9997 2.9997 0 001.9397 1.1499c-.29-.16-.5299-.35-.7399-.48a4.3595 4.3595 0 01-1.9998-3.5996 3.6996 3.6996 0 012.1798-3.3896 3.5796 3.5796 0 001.6798-2.3798 3.1197 3.1197 0 01-1.5898 2.4998 3.9996 3.9996 0 00-2.0998 3.1696 5.6594 5.6594 0 001.8898 3.3996 4.0796 4.0796 0 001.5898.72 2.8897 2.8897 0 01-.4799-.5 4.9995 4.9995 0 01-.45-.9999 2.9997 2.9997 0 01-.27-.9999 3.5996 3.5996 0 01.64-2.3697 2.8397 2.8397 0 00.9-1.3499 2.8697 2.8697 0 01-.72 1.5099 2.9997 2.9997 0 00-.56 2.2397 4.0596 4.0596 0 00.29.93 3.9996 3.9996 0 00.51.9998c.18.21.26.37.5499.48a6.4793 6.4793 0 00.49-2.3498 9.519 9.519 0 000-1.7598c-.13-.7999-.4-1.5998-.4-2.2397.12.5899.43 1.3798.61 2.2097a5.6294 5.6294 0 01.11 1.7298c0 .56-.08 1-.16 1.4899a1.9998 1.9998 0 01-.45.9299 3.2097 3.2097 0 001.1099-1.9998 7.8991 7.8991 0 00.32-2.3598z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/toshiba.svg b/assets/lib/simple-icons/icons/toshiba.svg
index 5d214528..23304c21 100644
--- a/assets/lib/simple-icons/icons/toshiba.svg
+++ b/assets/lib/simple-icons/icons/toshiba.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Toshiba icon</title><path d="M5.174 10.172c-1.065 0-1.578.187-1.65 1.148a8.92 8.92 0 00-.022.68c0 .218.004.451.021.68.073.96.586 1.148 1.65 1.148 1.065 0 1.58-.188 1.653-1.148.018-.229.022-.462.022-.68 0-.217-.005-.451-.022-.68-.073-.96-.588-1.148-1.652-1.148zm3.79 0c-.41 0-.82.04-.985.121-.322.156-.545.38-.545 1.02 0 .375.1.654.293.796.281.21.553.23 1.31.27.305.016.47.078.47.34 0 .332-.294.332-.564.332-.28 0-.366-.025-.46-.096-.084-.063-.105-.176-.106-.348h-.95c0 .487.01.884.47 1.084.41.18 1.67.18 2.048.014.328-.145.563-.337.563-.994 0-.455-.091-.735-.44-.941-.248-.147-.945-.17-1.298-.192-.258-.016-.356-.11-.356-.338 0-.297.285-.308.53-.308.202 0 .34.018.439.105.038.039.086.099.088.307h.947c0-.408-.014-.848-.455-1.051-.175-.08-.587-.121-.998-.121zm2.206.062v3.532h.996v-1.362h1.156v1.362h.996v-3.532h-.996v1.29h-1.156v-1.29h-.996zm4.023 0v3.532h1.002v-3.532h-1.002zm1.891 0v3.532h1.887c.869 0 1.162-.376 1.162-.952 0-.401-.092-.755-.643-.894.444-.114.574-.379.574-.762 0-.776-.487-.924-1.181-.924h-1.799zm4.373 0l-1.068 3.532h1.037l.187-.655h1.16l.19.655H24l-1.07-3.532h-1.473zM0 10.236v.881h1.055v2.65H2.11v-2.65h1.055v-.88H0zm5.174.762c.418 0 .633.063.66.607.004.085.01.201.01.395 0 .195-.006.31-.01.395-.027.544-.242.607-.66.607-.418 0-.633-.063-.66-.607A7.674 7.674 0 014.506 12c0-.194.003-.31.008-.395.027-.544.242-.607.66-.607zm12.906.045h.69c.18 0 .293.085.293.291 0 .176-.112.285-.293.285h-.69v-.576zm4.111.064h.006l.354 1.22h-.713l.353-1.22zm-4.11 1.207h.689c.279 0 .337.124.337.323s-.11.32-.337.32h-.69v-.643z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Toshiba</title><path d="M5.174 10.172c-1.065 0-1.578.187-1.65 1.148a8.92 8.92 0 00-.022.68c0 .218.004.451.021.68.073.96.586 1.148 1.65 1.148 1.065 0 1.58-.188 1.653-1.148.018-.229.022-.462.022-.68 0-.217-.005-.451-.022-.68-.073-.96-.588-1.148-1.652-1.148zm3.79 0c-.41 0-.82.04-.985.121-.322.156-.545.38-.545 1.02 0 .375.1.654.293.796.281.21.553.23 1.31.27.305.016.47.078.47.34 0 .332-.294.332-.564.332-.28 0-.366-.025-.46-.096-.084-.063-.105-.176-.106-.348h-.95c0 .487.01.884.47 1.084.41.18 1.67.18 2.048.014.328-.145.563-.337.563-.994 0-.455-.091-.735-.44-.941-.248-.147-.945-.17-1.298-.192-.258-.016-.356-.11-.356-.338 0-.297.285-.308.53-.308.202 0 .34.018.439.105.038.039.086.099.088.307h.947c0-.408-.014-.848-.455-1.051-.175-.08-.587-.121-.998-.121zm2.206.062v3.532h.996v-1.362h1.156v1.362h.996v-3.532h-.996v1.29h-1.156v-1.29h-.996zm4.023 0v3.532h1.002v-3.532h-1.002zm1.891 0v3.532h1.887c.869 0 1.162-.376 1.162-.952 0-.401-.092-.755-.643-.894.444-.114.574-.379.574-.762 0-.776-.487-.924-1.181-.924h-1.799zm4.373 0l-1.068 3.532h1.037l.187-.655h1.16l.19.655H24l-1.07-3.532h-1.473zM0 10.236v.881h1.055v2.65H2.11v-2.65h1.055v-.88H0zm5.174.762c.418 0 .633.063.66.607.004.085.01.201.01.395 0 .195-.006.31-.01.395-.027.544-.242.607-.66.607-.418 0-.633-.063-.66-.607A7.674 7.674 0 014.506 12c0-.194.003-.31.008-.395.027-.544.242-.607.66-.607zm12.906.045h.69c.18 0 .293.085.293.291 0 .176-.112.285-.293.285h-.69v-.576zm4.111.064h.006l.354 1.22h-.713l.353-1.22zm-4.11 1.207h.689c.279 0 .337.124.337.323s-.11.32-.337.32h-.69v-.643z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/toyota.svg b/assets/lib/simple-icons/icons/toyota.svg
index e5f2b007..3e9381d5 100644
--- a/assets/lib/simple-icons/icons/toyota.svg
+++ b/assets/lib/simple-icons/icons/toyota.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Toyota icon</title><path d="M0 0v24h24V0zm12 6.552c4.532 0 8 2.337 8 5.448 0 3.009-3.38 5.448-8 5.448S4 15.01 4 12c0-3.111 3.468-5.448 8-5.448zm-.34.66c-1.137.032-2.215.226-3.154.568-.867.33-1.406.748-1.495 1.108-.167.672.616 1.512 3.134 1.786.167-1.71.674-3.156 1.516-3.462zm.68 0c.84.306 1.348 1.751 1.515 3.462 2.517-.274 3.3-1.114 3.133-1.786-.09-.362-.633-.783-1.508-1.113-.935-.34-2.009-.53-3.14-.563zM12 8.49c-.481 0-.99.824-1.18 2.241.362.023.755.035 1.18.035.424 0 .817-.012 1.18-.035-.19-1.417-.698-2.241-1.18-2.241zm-5.978.947a3.668 3.668 0 0 0-.842 2.367c0 2.647 2.907 4.854 6.49 4.982-.835-.321-1.587-1.877-1.587-4.812v-.095c-2.346-.318-3.992-1.226-4.061-2.442zm11.956 0c-.069 1.216-1.715 2.124-4.061 2.442v.095c0 2.808-.76 4.477-1.6 4.813 3.588-.124 6.503-2.332 6.503-4.983 0-.918-.307-1.71-.842-2.367zM13.26 11.95a14.92 14.92 0 0 1-2.518 0v.023c0 2.167.65 3.065 1.259 3.065.609 0 1.26-.898 1.26-3.065v-.023Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Toyota</title><path d="M12 3.848C5.223 3.848 0 7.298 0 12c0 4.702 5.224 8.152 12 8.152S24 16.702 24 12c0-4.702-5.223-8.152-12-8.152zm7.334 3.839c0 1.08-1.725 1.913-4.488 2.246-.26-2.58-1.005-4.279-1.963-4.913 2.948.184 6.45 1.227 6.45 2.667zM12 16.401c-.96 0-1.746-1.5-1.808-4.389.577.047 1.18.072 1.808.072.628 0 1.23-.025 1.807-.072-.061 2.89-.847 4.389-1.807 4.389zm0-6.308c-.59 0-1.155-.019-1.69-.054.261-1.728.92-3.15 1.69-3.15.77 0 1.428 1.422 1.689 3.15-.535.034-1.099.054-1.689.054zm-.882-5.075c-.956.633-1.706 2.333-1.964 4.915C6.391 9.6 4.665 8.767 4.665 7.687c0-1.44 3.504-2.49 6.453-2.669zM2.037 11.68a5.265 5.265 0 011.048-3.164c.27 1.547 2.522 2.881 5.972 3.37V12c0 3.772.879 6.203 2.087 6.97-5.107-.321-9.107-3.48-9.107-7.29zm10.823 7.29c1.207-.767 2.087-3.198 2.087-6.97v-.115c3.447-.488 5.704-1.826 5.972-3.37a5.26 5.26 0 011.049 3.165c-.004 3.81-4.008 6.969-9.109 7.29z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/tplink.svg b/assets/lib/simple-icons/icons/tplink.svg
new file mode 100644
index 00000000..b760ca37
--- /dev/null
+++ b/assets/lib/simple-icons/icons/tplink.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>TP-Link</title><path d="M15.185 0C10.218 0 6.25 3.984 6.25 8.903V10.8h4.99V8.903c0-2.135 1.736-3.863 3.946-3.863 2.187 0 3.708 1.536 3.708 3.815 0 2.257-1.64 3.912-3.827 3.912h-1.878v5.039h1.878c4.874 0 8.819-4.007 8.819-8.952C23.885 3.72 20.2 0 15.185 0zM.115 12.6v4.103c0 .624.523 1.248 1.236 1.248h4.753v4.801c0 .624.523 1.248 1.236 1.248h4.065V12.6Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/tqdm.svg b/assets/lib/simple-icons/icons/tqdm.svg
new file mode 100644
index 00000000..752b0be5
--- /dev/null
+++ b/assets/lib/simple-icons/icons/tqdm.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>tqdm</title><path d="M12 14.562a2.338 2.338 0 1 1 0-4.677 2.338 2.338 0 0 1 0 4.677zM12 0C5.392 0 .036 5.473.036 12.224c0 5.579 3.659 10.281 8.658 11.746.428.126.87-.162.962-.598l.141-.669c.086-.41-.169-.799-.57-.92-4.039-1.221-6.986-5.037-6.986-9.559 0-5.507 4.37-9.972 9.76-9.972s9.76 4.464 9.76 9.972c0 4.515-2.938 8.325-6.967 9.552-.4.122-.654.511-.567.919l.142.67c.093.437.535.723.963.596 4.986-1.474 8.633-6.169 8.633-11.738C23.964 5.473 18.608 0 12 0zm7.152 12.224c0-4.04-3.202-7.315-7.152-7.315s-7.152 3.275-7.152 7.315c0 3.191 1.999 5.903 4.786 6.902a.79.79 0 0 0 1.037-.582l.042-.199a.772.772 0 0 0-.489-.889c-2.118-.752-3.639-2.809-3.639-5.232 0-3.059 2.424-5.539 5.415-5.539s5.415 2.48 5.415 5.539c0 2.418-1.516 4.472-3.628 5.227a.772.772 0 0 0-.487.89l.042.199a.791.791 0 0 0 1.038.58c2.78-1.003 4.772-3.71 4.772-6.896z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/traefikmesh.svg b/assets/lib/simple-icons/icons/traefikmesh.svg
new file mode 100644
index 00000000..828147b7
--- /dev/null
+++ b/assets/lib/simple-icons/icons/traefikmesh.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Traefik Mesh</title><path d="m8.646 4.738.034.02 2.945 1.66a.66.66 0 0 0 .65 0l2.92-1.644a.992.992 0 0 1 1.008 1.71l-.033.02-1.688.952a.33.33 0 0 0 0 .574l4.555 2.57a.66.66 0 0 0 .65 0l2.815-1.59a.993.993 0 0 1 1.01 1.71l-.035.02-1.585.89a.33.33 0 0 0 0 .578l1.594.897a.992.993 0 0 1-.94 1.748l-.035-.02-2.826-1.591a.66.66 0 0 0-.65 0l-4.605 2.595a.33.33 0 0 0 0 .575l1.905 1.072a.993.993 0 0 1-.94 1.748l-.035-.018-3.133-1.767a.66.66 0 0 0-.65 0L8.416 19.23a.992.992 0 0 1-1.006-1.71l.033-.02 1.93-1.088a.33.33 0 0 0 0-.575l-4.564-2.572a.66.66 0 0 0-.65 0l-2.689 1.51a.993.993 0 0 1-1.005-1.711l.034-.018 1.452-.817a.33.33 0 0 0 0-.577l-1.45-.817a.992.992 0 0 1 .941-1.746l.033.018 2.685 1.515a.66.66 0 0 0 .65 0l4.607-2.596a.33.33 0 0 0 0-.576l-1.711-.963a.992.993 0 0 1 .94-1.748Zm2.977 4.324-4.609 2.59a.33.33 0 0 0 0 .58l4.563 2.57a.66.66 0 0 0 .65 0l4.606-2.595a.33.33 0 0 0 0-.577l-4.558-2.57a.66.66 0 0 0-.65 0z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/trainerroad.svg b/assets/lib/simple-icons/icons/trainerroad.svg
index af00f29c..c8611bda 100644
--- a/assets/lib/simple-icons/icons/trainerroad.svg
+++ b/assets/lib/simple-icons/icons/trainerroad.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 24 24"><title>TrainerRoad icon</title><path d="M3.489 2.392L1.281 14.558c.862-1.684 2.586-2.817 4.574-2.817h.007a5.08 5.08 0 0 1 2.894.9l-.017-.011a3.23 3.23 0 0 0 .878-1.336l.007-.023c.413-1.328-.787-5.473 3.662-5.538 2.222-.031 5.068 1.816 4.992 1.805-3.994-.614-5.263-.787-6.242 1.115-.889 1.726-.657 3.163-1.802 4.24-.979.923-3.32 1.534-4.048 1.383-.33-.069.837-.379 1.921-1.136a4.36 4.36 0 1 0 2.089 4.058l.001-.014c.251.145.489.294.711.444a5.146 5.146 0 0 1-3.087 3.967l-.034.013h9.235c-.733-1.264-3.514-5.267-9.87-6.403.783-.387 7.589-.197 13.546 5.381l3.304-18.192zm6.529 1.588c.592.019 1.176.177 1.664.294 1.338.32 2.533.674 2.372.747-.033.014-.586-.064-.816-.088a4.118 4.118 0 0 0-1.558.072l.028-.006c-2.099.503-2.857 2.962-3 3.183-.017.024-1.186-.6-1.274-1.826-.062-.894.258-1.752 1.525-2.224l.002.002a2.751 2.751 0 0 1 1.057-.154zm5.389 4.093c.651-.008 1.469.085 2.505.305a8.972 8.972 0 0 0-1.865 1.456l-.002.002c-1.07 1.098-2.061 2.566-1.691 3.379s2.652 1.826 4.3 2.92c.852.568 1.515 2.559 1.517 2.566-3.11-2.417-5.369-3.097-7.048-4.1-1.971-1.186-.712-4.058-.114-5.301.342-.704.964-1.209 2.397-1.227zM.759 17.427L0 21.608h3.904c-1.708-.717-2.93-2.284-3.143-4.157l-.002-.024z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>TrainerRoad</title><path d="M20.289 14.039c.157-.064.44-.199.51-.234 1.105-.56 1.92-1.222 2.42-1.966.527-.756.8-1.658.78-2.579 0-1.253-.456-2.193-1.398-2.874-.922-.668-2.225-.971-3.874-1.012H1.357L0 8.421h5.528c.014 0 .028.005.038.016a.02.02 0 01.004.019L2.785 16.85h3.668c.063 0 .12-.041.14-.102l2.759-8.303a.043.043 0 01.042-.024l2.823.001c.014 0 .028.005.038.015a.02.02 0 01.004.019L9.473 16.85h3.669c.064 0 .12-.042.14-.103l.742-2.26a.043.043 0 01.042-.024s2.452.005 2.452.003c.864 1.363 1.807 2.878 2.616 4.16l3.844-.002c.118 0 .19-.13.125-.229l-2.832-4.321c-.01-.022.013-.025.018-.035zm-.45-3.355c-.437.412-1.185.612-2.163.612h-2.583l.952-2.874 2.353.001c1.14.017 1.826.514 1.838 1.337.007.35-.138.688-.397.924z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/trakt.svg b/assets/lib/simple-icons/icons/trakt.svg
index 1aa2da2c..90f807f2 100644
--- a/assets/lib/simple-icons/icons/trakt.svg
+++ b/assets/lib/simple-icons/icons/trakt.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Trakt icon</title><path d="M12 24C5.385 24 0 18.615 0 12S5.385 0 12 0s12 5.385 12 12-5.385 12-12 12zm0-22.789C6.05 1.211 1.211 6.05 1.211 12S6.05 22.79 12 22.79 22.79 17.95 22.79 12 17.95 1.211 12 1.211zm-7.11 17.32c1.756 1.92 4.294 3.113 7.11 3.113 1.439 0 2.801-.313 4.027-.876l-6.697-6.68-4.44 4.443zm14.288-.067c1.541-1.71 2.484-3.99 2.484-6.466 0-3.885-2.287-7.215-5.568-8.76l-6.089 6.076 9.164 9.15h.009zm-9.877-8.429L4.227 15.09l-.679-.68 5.337-5.336 6.23-6.225c-.978-.328-2.02-.509-3.115-.509C6.663 2.337 2.337 6.663 2.337 12c0 2.172.713 4.178 1.939 5.801l5.056-5.055.359.329 7.245 7.245c.15-.082.285-.164.42-.266L9.33 12.05l-4.854 4.855-.679-.679 5.535-5.535.359.331 8.46 8.437c.135-.1.255-.215.375-.316L9.39 10.027l-.083.015-.006-.007zm3.047 1.028l-.678-.676 4.788-4.79.679.689-4.789 4.785v-.008zm4.542-6.578l-5.52 5.52-.68-.679 5.521-5.52.679.684v-.005z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Trakt</title><path d="M12 24C5.385 24 0 18.615 0 12S5.385 0 12 0s12 5.385 12 12-5.385 12-12 12zm0-22.789C6.05 1.211 1.211 6.05 1.211 12S6.05 22.79 12 22.79 22.79 17.95 22.79 12 17.95 1.211 12 1.211zm-7.11 17.32c1.756 1.92 4.294 3.113 7.11 3.113 1.439 0 2.801-.313 4.027-.876l-6.697-6.68-4.44 4.443zm14.288-.067c1.541-1.71 2.484-3.99 2.484-6.466 0-3.885-2.287-7.215-5.568-8.76l-6.089 6.076 9.164 9.15h.009zm-9.877-8.429L4.227 15.09l-.679-.68 5.337-5.336 6.23-6.225c-.978-.328-2.02-.509-3.115-.509C6.663 2.337 2.337 6.663 2.337 12c0 2.172.713 4.178 1.939 5.801l5.056-5.055.359.329 7.245 7.245c.15-.082.285-.164.42-.266L9.33 12.05l-4.854 4.855-.679-.679 5.535-5.535.359.331 8.46 8.437c.135-.1.255-.215.375-.316L9.39 10.027l-.083.015-.006-.007zm3.047 1.028l-.678-.676 4.788-4.79.679.689-4.789 4.785v-.008zm4.542-6.578l-5.52 5.52-.68-.679 5.521-5.52.679.684v-.005z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/transferwise.svg b/assets/lib/simple-icons/icons/transferwise.svg
new file mode 100644
index 00000000..03babcef
--- /dev/null
+++ b/assets/lib/simple-icons/icons/transferwise.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>TransferWise</title><path d="M9.871 24h3.11L23.127 0H3.694l3.748 6.291-6.571 6.283h11.361l1.068-2.517H7.03l3.792-3.783L8.61 2.516h10.337z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/transportforireland.svg b/assets/lib/simple-icons/icons/transportforireland.svg
index 9be5f9a0..138611ca 100644
--- a/assets/lib/simple-icons/icons/transportforireland.svg
+++ b/assets/lib/simple-icons/icons/transportforireland.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Transport for Ireland icon</title><path d="M0 0v12c0 6.62 5.38 12 12 12h12V11.978h-.022c0-6.62-5.38-11.978-12-11.978zm3.376 8.145h6.337v1.546h-2.33v6.12H5.706v-6.12h-2.33zm8.014 0h5.837V9.67h-4.138v1.633h3.659v1.546h-3.659v2.962H11.39zm7.535 0h1.678v7.666h-1.678Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Transport for Ireland</title><path d="M0 0v12c0 6.62 5.38 12 12 12h12V11.978h-.022c0-6.62-5.38-11.978-12-11.978zm3.376 8.145h6.337v1.546h-2.33v6.12H5.706v-6.12h-2.33zm8.014 0h5.837V9.67h-4.138v1.633h3.659v1.546h-3.659v2.962H11.39zm7.535 0h1.678v7.666h-1.678Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/transportforlondon.svg b/assets/lib/simple-icons/icons/transportforlondon.svg
index c1b5e809..a1bf0796 100644
--- a/assets/lib/simple-icons/icons/transportforlondon.svg
+++ b/assets/lib/simple-icons/icons/transportforlondon.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Transport for London icon</title><path d="M12 2.25a9.73 9.73 0 0 0-9.49 7.5H0v4.5h2.51a9.73 9.73 0 0 0 9.49 7.5c4.62 0 8.48-3.2 9.49-7.5H24v-4.5h-2.51A9.73 9.73 0 0 0 12 2.25zM12 6c2.5 0 4.66 1.56 5.56 3.75H6.44A6.02 6.02 0 0 1 12 6zm-5.56 8.25h11.12A6.02 6.02 0 0 1 12 18a6.02 6.02 0 0 1-5.56-3.75Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Transport for London</title><path d="M12 2.25a9.73 9.73 0 0 0-9.49 7.5H0v4.5h2.51a9.73 9.73 0 0 0 9.49 7.5c4.62 0 8.48-3.2 9.49-7.5H24v-4.5h-2.51A9.73 9.73 0 0 0 12 2.25zM12 6c2.5 0 4.66 1.56 5.56 3.75H6.44A6.02 6.02 0 0 1 12 6zm-5.56 8.25h11.12A6.02 6.02 0 0 1 12 18a6.02 6.02 0 0 1-5.56-3.75Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/travisci.svg b/assets/lib/simple-icons/icons/travisci.svg
index be43793a..c12bae8e 100644
--- a/assets/lib/simple-icons/icons/travisci.svg
+++ b/assets/lib/simple-icons/icons/travisci.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Travis CI icon</title><path d="M20.07 9.29v-.02c.01-.04.14-.95-.08-2.24a.16.16 0 0 0-.11-.13l-.35-.1c-.08-2.71-1.2-4-1.23-4.03 1 1.6.99 3.51.97 3.96L17.1 6.1h-.04a.2.2 0 0 0-.04 0h-.03l-.01.01-.03.02-.01.01-.15.14a8.99 8.99 0 0 0-1-4.47c.03.06.8 2.33.53 4.87a3.7 3.7 0 0 1-.26.2.17.17 0 0 0-.07.13 3.9 3.9 0 0 1-.4 1.55 39.29 39.29 0 0 0-5.35 0l-.01-.04a3.88 3.88 0 0 1-.38-1.5c0-.06-.02-.1-.07-.14a3.92 3.92 0 0 1-.27-.2c-.26-2.54.51-4.81.53-4.87a9 9 0 0 0-.99 4.47l-.15-.14-.01-.01-.03-.02-.03-.01h-.04-.04l-2.18.62a7.45 7.45 0 0 1 .97-3.96c-.03.04-1.15 1.32-1.23 4.03l-.35.1a.16.16 0 0 0-.11.13c-.22 1.3-.1 2.2-.09 2.24v.02l-.08.02a5 5 0 0 0-.96.4c.16-.06.32-.1.5-.15a16.12 16.12 0 0 1 2.55-.38l1.02-.08c1.38-.08 2.75-.1 4.13-.1a67.74 67.74 0 0 1 5.16.18 21.88 21.88 0 0 1 2.55.38c.17.04.33.09.5.15a4.9 4.9 0 0 0-.97-.4l-.09-.02zM8.76 8.7a22.58 22.58 0 0 0-2.68.5c-.02-.15-.1-.94.07-2.02l2.46-.7a7.31 7.31 0 0 0 .22 2.22h-.07zm.37-.04v-.08a7 7 0 0 1-.2-1.96c.16.15.38.34.6.5.02.22.08.87.37 1.47l-.77.07zm7.58-.08v.08a29.2 29.2 0 0 0-.77-.07c.3-.6.35-1.25.37-1.48.22-.15.44-.34.6-.5.02.44 0 1.23-.2 1.97zm3.05.62a16.19 16.19 0 0 0-2.67-.5H17l.02-.03a7.2 7.2 0 0 0 .2-2.19l2.46.7a8.1 8.1 0 0 1 .07 2.02zm-2.96 6.04c.7-.02 1.07-.23 1.42-.06 0-.02-.11-.35-.6-.29a1 1 0 0 0 .07-.5c-.07-.81-.53-1.45-1.05-1.44-.51.02-.84.7-.82 1.5.03.81.47.8.98.79zm-.2-1.77a.26.26 0 1 1 0 .53.26.26 0 0 1 0-.53zm-7.84 1.91h.32c.52 0 .94.04.94-.77-.01-.8-.37-1.46-.88-1.46-.52 0-1.02.67-.99 1.48.01.21.04.36.1.47-.46.12-.58.4-.59.41.28-.15.6-.13 1.1-.13zm.45-1.72a.26.26 0 0 1 .01.53.26.26 0 1 1-.01-.53zm14.73-5.2a4.57 4.57 0 0 0-.04-.26l-.06-.27-.02-.06-.05-.04a4.68 4.68 0 0 0-.87-.53c-.25-.11-.5-.22-.76-.31a10.8 10.8 0 0 0-3.56-4.96 9.3 9.3 0 0 0-11.33 0A10.83 10.83 0 0 0 3.7 7l-.75.31c-.3.15-.6.31-.88.53l-.05.04-.02.06a3.02 3.02 0 0 0-.1.53 6.1 6.1 0 0 0-.02 1.57 6.71 6.71 0 0 0 .47 1.78l.06.13.04.06.04.07.03.05.06.03a4 4 0 0 0 .16.08l.16.07.08.04c-.7.65-1.47 1.5-2.14 2.55L0 16.21l1.18-1.03c.02-.02 1-.87 2.66-1.84l.02.19c-.1.05-.63.32-.78.45-.26.21-.27.54-.2 1.16.03.31.15.92.31 1.48.28.97.48 1.14.65 1.18.08.02.19.03.3.03.32 0 .72-.07.99-.14.3.96.75 1.83 1.28 2.6-.03 0-.05 0-.08.02l-1.82-.85-.8-.35.47.73c.04.05.84 1.3 1.5 2.15a3.6 3.6 0 0 0 3.05 1.6c.2 0 .4 0 .6-.03l1.1-.13a7.46 7.46 0 0 0 6.6-.67c.66-.15 1.4-.33 1.76-.43l.2-.05c.51-.12 1.36-.32 1.81-1.22l1.2-2.33.36-.65-.68.3c-.04.01-.9.39-1.34.62-.02 0-.03.02-.05.03.36-.74.54-1.33.6-1.56.26.06.63.05.9.05.13 0 .27-.02.36-.04.17-.05.31-.17.57-1.16.15-.58.26-1.21.28-1.53.06-.64.04-.97-.21-1.19-.13-.1-.5-.3-.7-.4l.01-.07.15.03.18-.65a7.02 7.02 0 0 1 .51-.21l.16-.07.16-.08.06-.03.03-.05.05-.07.03-.06.06-.13a4.09 4.09 0 0 0 .28-.75 6.24 6.24 0 0 0 .17-2.6zM3.68 11.27a27 27 0 0 1 .85-.17c-.26.17-.5.36-.75.55l-.1-.38zm5.9-.28c-.36.25-.76.57-1.15.96-.87.09-1.73.2-2.59.34 1.1-.51 2.37-.98 3.74-1.3zm-1.61 1.46c-.13.15-.24.3-.36.47l-.68.97 1-.66s.64-.43 1.67-.93a46 46 0 0 1 4.26-.12c-.2.16-.41.32-.63.45l-.73.44c-.46.06-.86.17-.88.18a.1.1 0 0 0-.04.01.17.17 0 0 0-.07.1l-.75 2.45-3.98.89-1.26-.88-.36-2.96c.71-.13 1.66-.28 2.8-.4zm5.4.6c.07-.01 1.45-.18 3.08-.74 1.82.14 3.3.36 4.31.54l-.36 2.52-1.26.88-3.98-.45-.74-2.44a.16.16 0 0 0-.11-.11c-.03-.01-.52-.15-1.04-.2h.1zm1.92-2.34c-.23.3-.55.67-.94 1.03a46.5 46.5 0 0 0-3.59.04 17.64 17.64 0 0 1 4.65-1.23l-.12.16zM3.97 17.36c-.2-.2-.56-1.55-.64-2.27-.06-.58-.02-.71.04-.76.07-.06.33-.2.55-.33l.3 2.46c0 .04.03.09.07.11l.62.44.08.25c-.26.07-.78.15-1.02.1zm10.04 4.66l-.38.05h-.27l.23-.51.43.46zm-.71 1.5a5.95 5.95 0 0 1-1.98-.22l.14-.02c.06 0 1.23-.16 1.76-.94h.18l.25-.01c.2-.02.39-.05.58-.09l.06.06c.4.4.9.62 1.43.66-.77.31-1.6.5-2.42.55zm7.29-6.38c-.23.75-.5 1.4-.81 2h-.22c-.24 0-.48-.02-.75-.04l-1.43-.15-1.46-1.16-.06-.05a.6.6 0 0 0-.45-.18c-.2 0-.51.08-1.26.3.39-.29.4-.66.4-.66s-.56.51-1.44.62c-.89.12-1.58-.42-1.58-.42.03.09.07.3.27.48a6.6 6.6 0 0 0-1.05-.04c-.54.03-1.3.86-1.85 1.69l-2.04.62c-.9-1.23-1.34-2.5-1.38-2.63l-.05-.15.23.16.56.4.2.13c.02.02.05.03.09.03h.04l5.2-1.17c.07 0 .11-.05.13-.1l.74-2.46a2.45 2.45 0 0 1 .68 0l.76 2.53c.02.06.08.1.15.11l.35.04 4.89.56c.04 0 .08 0 .12-.03l.49-.34.45-.32.17-.12-.09.35zm-1.16.12l-5.08-.58-.76-2.51a.17.17 0 0 0-.13-.12 3.34 3.34 0 0 0-.5-.05c-.14 0-.3.02-.5.05a.17.17 0 0 0-.12.12l-.75 2.45-5.04 1.12-2-1.4-.4-3.18.26-.15.42-.08.37 3c0 .05.03.1.07.12l1.38.96c.02.02.06.03.09.03h.04l4.15-.92.04-.02a.16.16 0 0 0 .08-.1l.75-2.46c.2-.05.7-.17 1.16-.17.45 0 .96.12 1.17.17l.74 2.46c.02.07.08.11.14.12l4.15.47c.04 0 .08 0 .12-.03l1.37-.96a.17.17 0 0 0 .07-.11l.37-2.58.69.15-.41 2.84-1.95 1.36zm3.07-3.3c.06.05.1.18.05.79a6.93 6.93 0 0 1-.57 2.25c-.21.04-.66 0-.93-.07l.1-.47.47-.33a.16.16 0 0 0 .07-.11l.34-2.34.47.28zm-.57-1.33c-.73-.16-2.33-.48-4.52-.7.72-.3 1.45-.68 2.1-1.15 1.3.18 2.26.38 2.78.5l-.36 1.35zm1.53-2.66a7.05 7.05 0 0 1-.43 1.63l-.05.1-.02.04-.07.04-.15.06-.15.07.26-.97a25.1 25.1 0 0 0-1.59-.34l.1-.02a4.3 4.3 0 0 0 .86-.32.9.9 0 0 0 .24-.19c-.96.32-2.96.17-4.73 0a48.05 48.05 0 0 0-4.87-.29c-1.64 0-3.26.12-4.88.28-1.77.19-3.76.33-4.73.01.07.08.16.14.25.19l.27.14a4.47 4.47 0 0 0 .8.23c-.87.16-1.38.3-1.44.31l.27 1.02-.02.02-.28-.13-.15-.07-.07-.04-.02-.04-.05-.1a5.3 5.3 0 0 1-.43-1.63 7.16 7.16 0 0 1 .01-1.87c.22-.18.46-.34.71-.5a16.84 16.84 0 0 1 2.21-1l.47-.16a10.27 10.27 0 0 0-1.58.38A9.47 9.47 0 0 1 12.92.55c3.8 0 7.27 2.47 8.72 6.27a12.29 12.29 0 0 0-1.57-.38 22.77 22.77 0 0 1 1.81.73c.29.13.58.28.85.44.26.14.5.3.72.49l.03.17.02.24a7.2 7.2 0 0 1-.04 1.46zm-11.6-5.55h-1.44V2.38h5.1v2.04h-1.45v-.6h-.33v2.76h.5v1.54H11.7V6.58h.5V3.82h-.33v.6z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Travis CI</title><path d="M9.32 13.025a.485.485 0 1 1-.97 0c0-.446-.167-.758-.406-.758-.239 0-.405.312-.405.758a.485.485 0 1 1-.97 0c0-1.187.713-1.728 1.375-1.728s1.376.541 1.376 1.728zm6.017.485a.485.485 0 0 0 .485-.485c0-.446.167-.758.405-.758s.405.312.405.758a.485.485 0 1 0 .97 0c0-1.187-.713-1.728-1.375-1.728s-1.375.541-1.375 1.728c0 .268.217.485.485.485zm7.967-4.454l-.191 2.459a.801.801 0 0 1-.367.623.852.852 0 0 1-.46.13 1.07 1.07 0 0 1-.366-.068c-.271-.101-.544-.192-.817-.285a8.978 8.978 0 0 1-.094 1.614c-.04.242-.092.471-.138.707a.485.485 0 0 1-.024.125 19.471 19.471 0 0 1-1.033 3.513l.033-.02.897-.537c.193-.137.599-.122.815.1a.645.645 0 0 1 .173.577.743.743 0 0 1-.053.159c-.061.135-.319.706-.866 1.906-.675 1.483-2.06 1.77-2.121 1.782.001.001-.907.214-1.879.44C15.458 23.419 13.87 24 12.087 24c-1.84 0-3.448-.58-4.787-1.713l-1.924-.45c-.041-.008-1.427-.294-2.103-1.778l-.87-1.914c-.005-.019-.05-.158-.053-.177-.009-.625.621-.914 1.023-.632l.858.512c.006.003.074.043.171.085a20.443 20.443 0 0 1-.982-3.444c-.063-.317-.129-.63-.183-.96a8.937 8.937 0 0 1-.09-1.7c-.357.118-.713.24-1.066.372-.292.109-.593.087-.827-.062a.802.802 0 0 1-.366-.621L.695 9.055c-.036-.475.305-.969.794-1.152l.3-.117c.225-.089.505-.198.837-.318C3.65 3.124 7.566 0 12.041 0c4.516 0 8.438 3.158 9.434 7.549.472.153.843.281 1.036.355.492.183.833.677.793 1.152zm-4.612 8.973c.369-.815.678-1.708.93-2.67l-.997.713a.952.952 0 0 1-.655.166l-4.467-.47a.96.96 0 0 1-.821-.698l-.558-1.923a2.482 2.482 0 0 0-.244 0l-.56 1.93a.955.955 0 0 1-.82.691l-4.471.471a.951.951 0 0 1-.642-.162l-.723-.503c.231.889.506 1.708.824 2.451.609-.028 1.207-.069 1.209-.069.001 0 .434-.039.788-.332l1.061-.885c.148-.165.652-.465 1.33-.271.196.055.495.146.815.243.062.019.12.05.17.092.532.445 1.832.445 2.365.002a.481.481 0 0 1 .168-.091c.337-.103.631-.192.823-.247.68-.193 1.182.108 1.374.314l1.016.843c.353.294.785.332.789.332-.001.001.658.045 1.296.073zm-6.605 5.001a6.42 6.42 0 0 0 1.949-.313c-.932-.209-1.555-1.019-1.588-1.062l-.406-.542-.407.543c-.031.043-.641.842-1.558 1.06.63.196 1.295.314 2.01.314zm6.941-4.016a63.622 63.622 0 0 1-1.701-.089 2.519 2.519 0 0 1-1.339-.554l-1.065-.888c-.055-.051-.187-.152-.442-.083-.176.05-.436.13-.717.216-.878.655-2.567.655-3.443-.003a43.693 43.693 0 0 0-.709-.212c-.258-.076-.386.03-.411.052l-1.097.918a2.523 2.523 0 0 1-1.341.553s-.872.059-1.594.085h-.002l-.106.004a2.41 2.41 0 0 1-1.341-.343l-.018-.01.453.996c.463 1.017 1.389 1.225 1.427 1.232.014.004 2.754.646 3.822.889.781.174 1.447-.696 1.454-.705l.795-1.061c.183-.245.594-.245.776 0l.796 1.061c.007.009.682.881 1.455.705 1.067-.243 3.807-.886 3.807-.886a2.193 2.193 0 0 0 1.442-1.236l.452-.993-.026.015a2.27 2.27 0 0 1-1.327.337zm1.096-7.412a28.286 28.286 0 0 0-15.998-.075 8.025 8.025 0 0 0 .067 1.845c.045.275.1.535.152.8l1.591 1.108 4.461-.476.642-2.243a.488.488 0 0 1 .395-.345 3.855 3.855 0 0 1 1.135.003.482.482 0 0 1 .394.344l.652 2.245 4.462.468 1.864-1.336c.036-.19.079-.374.111-.568a7.89 7.89 0 0 0 .072-1.77zm2.214-2.623c-.005-.034-.073-.133-.165-.167l-.004-.001c-.22-.083-.68-.242-1.256-.423l-.007-.005c-.955-.299-2.771-.823-4.267-.99a.485.485 0 0 1 .108-.964c1.192.134 2.529.466 3.637.787C19.298 3.552 15.913.97 12.041.97c-3.832 0-7.207 2.549-8.318 6.165a20.252 20.252 0 0 1 3.27-.705.484.484 0 1 1 .121.962 19.235 19.235 0 0 0-3.909.899l-.005.004c-.432.149-.785.288-1.056.394l-.315.123c-.094.035-.162.135-.167.175l.177 2.264a29.36 29.36 0 0 1 10.164-1.817c3.442 0 6.881.607 10.157 1.82l.178-2.275zm-8.534-5.986h-3.539a.485.485 0 0 0-.485.485v.811a.485.485 0 1 0 .97 0v-.326h.746v3.308h-.521a.485.485 0 1 0 0 .97h2.061a.485.485 0 1 0 0-.97h-.57V3.963h.853v.326a.485.485 0 1 0 .97 0v-.811a.485.485 0 0 0-.485-.485z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/treehouse.svg b/assets/lib/simple-icons/icons/treehouse.svg
index 9d803201..3ea5ef76 100644
--- a/assets/lib/simple-icons/icons/treehouse.svg
+++ b/assets/lib/simple-icons/icons/treehouse.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Treehouse icon</title><path d="M20.537 4.118c-.806-.453-2.092.278-2.871 1.635L16.25 8.215a3.104 3.104 0 0 0 .21 3.18l.041.062c.653.94 1.535 1.808 1.823 2.118a1.613 1.613 0 0 1-.739 2.654 1.603 1.603 0 0 1-2.025-1.747c.045-.35-.067-.927-.574-1.489-.506-.563-1.54.5-1.874 1.61l-.016.061c-.334 1.094-.546 2.05-.482 2.143.037.06.072.12.105.182a1.81 1.81 0 0 1-3.196 1.701 1.806 1.806 0 0 1 .747-2.446l.121-.061c.065-.03.26-.486.423-1.032l.301-.987c.019-.047.033-.107.045-.168l.897-3.19-.957 1.96c-.112-.363-.3-.38-.709-.091-.243.183-.653.531-.85.669-.365.273-.685.788-.851 1.109a1.313 1.313 0 0 1-.41.5c-.684.564-1.687.456-2.234-.227a1.591 1.591 0 0 1 .912-2.552c.409-.092 1.777-.927 2.596-1.52.152-.106.274-.197.38-.304l2.203-1.67-1.914 1.032s-.196-.016-.426.017c-.698.075-1.428.182-1.564.35a.999.999 0 0 1-.29.272c-.637.456-1.519.32-1.989-.317A1.437 1.437 0 0 1 6.29 8.04c.259-.183.577-.274.865-.274.518.016 1.87.29 2.993.092l.288-.045c1.14-.196 2.476-1.186 3.024-2.187l1.184-2.067c.653-1.139.608-2.384-.105-2.795l-1.323-.76c-.653-.363-1.715-.363-2.354 0L2.004 4.97C1.337 5.319.805 6.23.805 6.975v9.744c0 .744.532 1.656 1.178 2.02l8.85 4.983c.652.365 1.716.365 2.354 0l8.826-4.983c.653-.368 1.184-1.276 1.184-2.02v-9.76c0-.744-.531-1.653-1.169-2.02l-1.46-.823"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Treehouse</title><path d="M20.3981 4.3857c-.8211-.448-2.0902.2986-2.8367 1.6423l-1.4183 2.3888c-.5226.9704-.448 2.1648.224 3.1353l.0746.0747c.6718.8958 1.493 1.7916 1.7916 2.0902.1493.1493.2986.3732.3732.6718.224.8212-.224 1.717-1.1197 1.941-.8212.2239-1.717-.224-1.941-1.1198-.0746-.224-.0746-.448-.0746-.5972.0747-.3733-.0746-.8958-.5972-1.493-.5225-.5226-1.493.5225-1.8662 1.5676v.0747c-.2986 1.045-.5226 2.0155-.448 2.0902 0 .0746.0747.0746.0747.1493.448.8958.1493 1.9409-.7465 2.3888-.8958.4479-1.9409.1493-2.3888-.7465-.4479-.8958-.1493-1.941.7465-2.3888.0747 0 .0747-.0747.1493-.0747.0747 0 .224-.4479.448-1.0451.1492-.5225.2239-.7465.2985-.9704.0747-.2986.224-1.0451.1493-1.3437-.0746-.3733-.4479-.3733-.8211-.1493-.224.1493-.6719.5225-.8212.6718-.3732.2986-.6718.7465-.8211 1.1198-.0747.1493-.224.3732-.3733.5225-.6718.5226-1.6423.4479-2.2395-.224-.5225-.6718-.4479-1.6422.224-2.2394.224-.1494.4479-.2987.6718-.2987.3733-.0746 1.717-.8958 2.5381-1.493.1493-.0746.3733-.2986.448-.3732.2239-.2986 0-.5226-.224-.5226-.6719.0747-1.4184.1493-1.5677.3733-.0746.0746-.1493.224-.2986.2986-.5972.4479-1.493.2986-1.9409-.2986-.4479-.5972-.2986-1.493.2986-1.9409.224-.224.5972-.2986.8212-.2986.5225 0 1.8662.2986 2.9113.0746l.2986-.0746c1.1198-.224 2.4635-1.1944 2.986-2.1649 0 0 .5226-.8958 1.1198-2.0155.6718-1.1198.5972-2.3888-.0747-2.762l-1.269-.7466c-.6719-.3732-1.6423-.3732-2.3142 0L2.1835 5.207C1.5117 5.58.9891 6.4758.9891 7.2223v9.5552c0 .7465.5226 1.6423 1.1944 2.0156L10.843 23.72c.6719.3732 1.717.3732 2.3142 0l8.6594-4.927c.6718-.3732 1.1944-1.269 1.1944-2.0155V7.2224c0-.7465-.5226-1.6423-1.1944-2.0156 0 0-.5972-.3732-1.4184-.8211z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/trello.svg b/assets/lib/simple-icons/icons/trello.svg
index 7bd8dc81..aa0121e3 100644
--- a/assets/lib/simple-icons/icons/trello.svg
+++ b/assets/lib/simple-icons/icons/trello.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Trello icon</title><path d="M21 0H3C1.343 0 0 1.343 0 3v18c0 1.656 1.343 3 3 3h18c1.656 0 3-1.344 3-3V3c0-1.657-1.344-3-3-3zM10.44 18.18c0 .795-.645 1.44-1.44 1.44H4.56c-.795 0-1.44-.646-1.44-1.44V4.56c0-.795.645-1.44 1.44-1.44H9c.795 0 1.44.645 1.44 1.44v13.62zm10.44-6c0 .794-.645 1.44-1.44 1.44H15c-.795 0-1.44-.646-1.44-1.44V4.56c0-.795.646-1.44 1.44-1.44h4.44c.795 0 1.44.645 1.44 1.44v7.62z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Trello</title><path d="M21.147 0H2.853A2.86 2.86 0 000 2.853v18.294A2.86 2.86 0 002.853 24h18.294A2.86 2.86 0 0024 21.147V2.853A2.86 2.86 0 0021.147 0zM10.34 17.287a.953.953 0 01-.953.953h-4a.954.954 0 01-.954-.953V5.38a.953.953 0 01.954-.953h4a.954.954 0 01.953.953zm9.233-5.467a.944.944 0 01-.953.947h-4a.947.947 0 01-.953-.947V5.38a.953.953 0 01.953-.953h4a.954.954 0 01.953.953z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/trendmicro.svg b/assets/lib/simple-icons/icons/trendmicro.svg
index 59aef0da..40402def 100644
--- a/assets/lib/simple-icons/icons/trendmicro.svg
+++ b/assets/lib/simple-icons/icons/trendmicro.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Trend Micro icon</title><path d="M12 0C5.38 0 0 5.37 0 12C0 14.45 .734 16.72 2 18.62C1.5 17.45 1.58 15.94 2.19 14.29L2.2 14.25L2.25 14.12L2.3 14L2.32 13.95C2.54 13.4 2.82 12.83 3.16 12.26C3.21 12.16 3.25 12.07 3.3 12L1.86 12L2.21 11.21C3.4 10.88 5.38 10.22 7.27 8.39L7.32 8.39H8.32L7.03 11.14L9.1 11.14L8.72 11.96L6.66 11.96S5.69 13.9 5.36 15.28C5.11 16.82 5.36 18 6.74 18.41C7.59 18.67 8.66 18.61 9.81 18.29C12.5 17.45 15.34 15.62 17.43 13.18C20.87 9.19 20.94 5.1 17.58 4.05C15.43 3.38 12.39 4.13 9.58 5.8C13.08 3.54 16.94 2.5 19.59 3.31C20.09 3.46 20.53 3.68 20.89 3.94A11.97 11.97 0 0 0 12 0M22.17 5.63C23 7.81 21.97 11.07 19.2 14.29C15.04 19.13 8.47 22.05 4.5 20.83A4.46 4.46 0 0 1 3.24 20.21A11.96 11.96 0 0 0 12 24C18.63 24 24 18.63 24 12C24 9.66 23.33 7.5 22.17 5.63Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Trend Micro</title><path d="M12 0C5.38 0 0 5.37 0 12C0 14.45 .734 16.72 2 18.62C1.5 17.45 1.58 15.94 2.19 14.29L2.2 14.25L2.25 14.12L2.3 14L2.32 13.95C2.54 13.4 2.82 12.83 3.16 12.26C3.21 12.16 3.25 12.07 3.3 12L1.86 12L2.21 11.21C3.4 10.88 5.38 10.22 7.27 8.39L7.32 8.39H8.32L7.03 11.14L9.1 11.14L8.72 11.96L6.66 11.96S5.69 13.9 5.36 15.28C5.11 16.82 5.36 18 6.74 18.41C7.59 18.67 8.66 18.61 9.81 18.29C12.5 17.45 15.34 15.62 17.43 13.18C20.87 9.19 20.94 5.1 17.58 4.05C15.43 3.38 12.39 4.13 9.58 5.8C13.08 3.54 16.94 2.5 19.59 3.31C20.09 3.46 20.53 3.68 20.89 3.94A11.97 11.97 0 0 0 12 0M22.17 5.63C23 7.81 21.97 11.07 19.2 14.29C15.04 19.13 8.47 22.05 4.5 20.83A4.46 4.46 0 0 1 3.24 20.21A11.96 11.96 0 0 0 12 24C18.63 24 24 18.63 24 12C24 9.66 23.33 7.5 22.17 5.63Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/treyarch.svg b/assets/lib/simple-icons/icons/treyarch.svg
new file mode 100644
index 00000000..7e7eb66b
--- /dev/null
+++ b/assets/lib/simple-icons/icons/treyarch.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Treyarch</title><path d="M2.313 23.017C.576 22.764-.232 21.704.058 20.061a6.643 6.643 0 0 1 .88-2.288c1.328-2.123 3.2-3.896 5.3-5.016.556-.297 1.881-.863 2.02-.863.03 0 .106.232.167.516.095.442.19.64.67 1.397.308.485.587.908.62.941.085.085.164-.471.164-1.153v-.572l.25.463c.294.542.588.98.743 1.109.06.05.006-.1-.122-.333-.982-1.793-1.62-4.265-1.622-6.286-.002-2.003.488-3.555 1.417-4.488.444-.446.813-.628 1.35-.667 1-.072 1.748.635 2.235 2.113.08.247.13.467.108.488-.022.023-.04-.003-.04-.058 0-.053-.133-.37-.295-.703-.332-.682-.786-1.219-1.187-1.402-.257-.118-.759-.166-.844-.082-.023.023.133.23.347.46.482.514.865 1.27 1.099 2.165.151.58.176.826.203 2.042.058 2.547-.35 4.406-1.289 5.861-.396.616-.456.554-.083-.087.154-.265.272-.564.295-.752.022-.172.026-.313.011-.313s-.11.148-.212.329c-.164.292-.21.33-.405.33h-.22l.134.215.134.217-.598.788c-.496.654-.916 1.19-1.179 1.503-.047.055-.741-1.063-1.084-1.745a6.541 6.541 0 0 0-.197-.375c-.047-.053-1.217.549-1.728.889-1.559 1.037-2.59 2.74-2.16 3.57.318.614 1.731.37 3.166-.55.181-.115.556-.393.833-.616.277-.223.568-.406.646-.406.081 0 .297-.146.502-.34.197-.186.374-.324.392-.306.06.061-1.838 1.857-2.473 2.34-1.562 1.185-2.92 1.643-3.876 1.306-.265-.094-.272-.093-.27.05.002.223.23.674.403.799.152.11.148.11-.174.067-.974-.134-1.547-.72-1.548-1.583 0-.385.213-1.165.477-1.74.595-1.298 2.396-3.08 3.694-3.653.296-.13.418-.248.824-.787.372-.496.453-.642.374-.673-.128-.049-.332.03-1.307.513-2.741 1.355-4.636 3.4-5.194 5.605-.231.916-.078 1.967.366 2.507l.153.187-.031-.814c-.026-.681-.009-.904.107-1.362.136-.539.492-1.363.7-1.622.076-.093.069-.054-.024.137-.397.82-.532 1.769-.344 2.416.305 1.051 1.716 1.562 3.24 1.173 1.04-.265 2.373-1.01 3.749-2.096.9-.71 2.84-2.689 3.375-3.44 1.631-2.296 2.48-5.781 2.15-8.84-.261-2.422-1.335-4.097-2.825-4.405a4.576 4.576 0 0 1-.62-.177c-.22-.088-.24-.11-.132-.153.335-.13 1.167-.046 1.701.175.09.038.112.03.078-.026-.094-.152-.54-.29-1.093-.338l-.56-.049.461-.01.461-.012-.259-.137c-.208-.11-.327-.128-.609-.095-.695.082-1.577.512-2.201 1.074-.431.389-.197.015.298-.476 1.1-1.088 2.587-1.296 4.117-.574.573.27 1.346 1 1.706 1.61.443.754.77 1.763.945 2.918.19 1.254.056 4-.267 5.48l-.118.54.631.208c.61.2 1.675.653 1.634.694-.01.011-.36-.11-.775-.268-.415-.159-.768-.275-.784-.258-.076.075 1.393 1.451 1.906 1.786 1.974 1.286 3.3 2.717 3.524 3.804.023.11-.032.027-.122-.184-.396-.93-1.05-1.723-2.146-2.605-1.376-1.107-2.975-2.005-3.94-2.213-.449-.097-.182.074.558.36 1.925.74 3.764 2.121 4.814 3.617.762 1.085.872 2.134.263 2.506-.325.198-1.153.183-2.036-.038-.589-.148-2.732-.934-2.679-.983.01-.008.226.038.48.103 1.368.36 2.145-.015 2.057-.994-.116-1.275-1.615-2.72-3.596-3.466-.231-.087-.427-.15-.434-.14a45.97 45.97 0 0 1-1.034 1.788l-.514.847.156.273a2 2 0 0 1 .202.602c.08.581.244.85.737 1.213 1.082.795 2.677 1.561 3.92 1.882.337.087.55.16.472.162-.188.004-1.284-.287-1.736-.462-1.087-.42-2.078-.994-3.483-2.017-.696-.506-.962-.667-1.001-.604-.064.103.116.267 1.027.938 1.96 1.444 4.675 2.543 6.282 2.543.992 0 1.62-.34 1.981-1.073a2.88 2.88 0 0 0 .256-.84l.051-.425.092.296c.099.32.13 1.549.048 1.877-.05.195-.048.195.08-.034.524-.927.54-2.254.043-3.38a9.99 9.99 0 0 0-.494-.9c-.407-.665-.165-.407.389.413.95 1.407 1.38 2.8 1.197 3.87a3.259 3.259 0 0 1-.239.774c-.31.605-.987 1.113-1.783 1.337-.483.136-1.965.121-2.657-.026-2.165-.463-4.985-2.04-6.989-3.908l-.365-.34-.658.639c-1.713 1.66-3.34 2.755-4.841 3.258-.647.216-1.636.411-2.53.499-.81.079-1.024.078-1.583-.003zM12.97 10.99c.393-1.77.336-3.854-.135-4.908-.61-1.367-1.746-.996-2.083.68-.154.766-.19 1.6-.112 2.55.063.764.213 1.789.3 2.04.02.06.277.082.98.082h.951zm6.514 9.62a.591.591 0 0 1 .23 0c.064.014.012.03-.115.03-.126 0-.178-.016-.115-.03zm2.637-2.227c0-.182.013-.248.028-.148.015.1.015.248 0 .33-.016.08-.029-.001-.028-.183zM7.786 10c-.268-1.136-.324-1.7-.288-2.866.025-.78.072-1.22.174-1.63.137-.549.468-1.535.503-1.5.01.009-.005.147-.034.303-.03.16-.024.394.012.537.051.2.034.366-.08.802-.19.72-.258 2.574-.128 3.452.048.324.078.618.067.655a4.22 4.22 0 0 0-.019.51c.001.245-.008.445-.02.445-.01 0-.095-.319-.187-.708z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/triller.svg b/assets/lib/simple-icons/icons/triller.svg
new file mode 100644
index 00000000..14b2a5c9
--- /dev/null
+++ b/assets/lib/simple-icons/icons/triller.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Triller</title><path d="M15.548 5.216L7.005 20.012l-.29-.167 8.54-14.788a9.365 9.365 0 0 0-6.07-.906L2.73 15.333l-.609 1.055a9.34 9.34 0 0 0 3.818 4.806l-1.522 2.64.289.166 2.303-3.987h-.002a9.367 9.367 0 0 0 6.068.905l6.321-10.945.287.167-6.168 10.683-.964 1.67a9.322 9.322 0 0 0 7.55-7.555 9.267 9.267 0 0 0-.413-4.802l2.299-3.982-.29-.167L20.14 8.68a9.343 9.343 0 0 0-3.816-4.806zm-5.842-2.64a9.324 9.324 0 0 0-7.132 12.359L8.893 3.989l.292.162L11.483.167 11.193 0z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/trino.svg b/assets/lib/simple-icons/icons/trino.svg
new file mode 100644
index 00000000..e960ed22
--- /dev/null
+++ b/assets/lib/simple-icons/icons/trino.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Trino</title><path d="M14.124 16.8529a.1615.1615 0 1 1 .1576.1614.1577.1577 0 0 1-.1576-.1614zm-5.607-.1576a.1614.1614 0 1 0 0 .3228.1614.1614 0 0 0 0-.3228zm10.1341-.6648v1.9869c-.031.5788-.524 1.0237-1.1029.9954h-.3843a5.0596 5.0596 0 0 1-1.1298 1.7178.3192.3192 0 0 0 0 .465l.2382.2191a.3036.3036 0 0 1 .0385.4304c-1.126 1.3835-2.9669 2.1521-5.0498 2.1521a6.575 6.575 0 0 1-4.8192-1.8985c-.0029-.0032-.0059-.0063-.0087-.0096a.6302.6302 0 0 1 .0548-.8896c.137-.1265.1371-.3462 0-.4727a4.944 4.944 0 0 1-1.126-1.714h-.3497c-.5797.0284-1.0737-.416-1.1068-.9954v-1.9869c.0351-.5779.5286-1.02 1.1068-.9915h.2728a5.7648 5.7648 0 0 1 2.0791-3.0936c-.4227-1.0991-1.1529-3.2551-1.226-5.0075C6.0229 4.4705 6.2189.078 7.8253.001c1.6064-.0768 1.3719 4.0275 1.0991 6.6946a32.732 32.732 0 0 0-.123 4.4503 6.994 6.994 0 0 1 2.4826-.4304 7.2414 7.2414 0 0 1 1.7371.2075c.2614-1.2682.8762-3.574 2.0292-5.1958 1.6717-2.352 3.4357-4.7808 4.6116-4.1006 1.176.6802-.3074 3.1398-1.3297 4.4272-1.0222 1.2874-2.7862 3.2089-3.3742 4.2274-.2114.3843-.4304.8032-.5956 1.1529a5.7375 5.7375 0 0 1 2.9169 3.6125h.073v-2.3058a.3075.3075 0 0 0-.1806-.2844.9148.9148 0 0 1-.5573-.8148 1.0184 1.0184 0 0 1 .9045-.9044c.5593-.0598 1.061.3452 1.1208.9044a.9187.9187 0 0 1-.5534.8148.3074.3074 0 0 0-.1691.2844v2.1522a.3113.3113 0 0 0 .1691.2805.9724.9724 0 0 1 .5648.857zm-1.0222-3.9737a.4345.4345 0 0 0 .4612-.4151.4151.4151 0 1 0-.4612.4151zm-.4227 3.4779c.0978.4794.148.9672.1498 1.4565v.3651h.4113a.3228.3228 0 0 0 .3228-.319v-1.0069c-.0111-.2967-.2733-.5256-.5688-.4957h-.3151zm-3.7278-4.481.611.2383a36.6046 36.6046 0 0 1 2.3828-3.8661c1.2874-1.7255 2.3365-3.5817 1.8715-3.8699-.465-.2883-1.6179 1.2297-2.7708 3.109a34.8978 34.8978 0 0 0-2.0945 4.3887zm-4.0544.6726.0154 1.3335c-.0039.2007.1881.3587.3843.3152a6.4317 6.4317 0 0 1 1.4565-.1653 5.995 5.995 0 0 1 1.4527.1729c.1956.0398.3853-.1153.3843-.3151v-1.3412a.319.319 0 0 0-.2421-.3113 6.664 6.664 0 0 0-1.6026-.1845 6.7093 6.7093 0 0 0-1.6025.1845.3188.3188 0 0 0-.246.3113zm1.7063 6.8637v.3843a.6878.6878 0 0 1-.4996.269c-.3074 0-.538-.4189-.538-.4189a.073.073 0 0 0-.1-.0307l-.0024.0013a.0693.0693 0 0 0-.0245.0947c.0115.0231.2806.4957.6649.4957a.7144.7144 0 0 0 .3843-.1268.3267.3267 0 0 1 .3612 0 .8332.8332 0 0 0 .4727.1345.957.957 0 0 0 .6572-.4803.0692.0692 0 0 0-.0269-.0961.0692.0692 0 0 0-.0999.0269c0 .0231-.2191.3843-.5419.4074a.8036.8036 0 0 1-.5765-.269v-.3843a.3154.3154 0 0 1 .1268-.2537c.196-.1499.415-.3958.415-.4919a.538.538 0 0 0-.5764-.4189c-.3766 0-.6533.2498-.6533.4573 0 .1345.2536.3382.4227.4612a.3226.3226 0 0 1 .1346.2383zM7.783 11.6455l.5765-.3074c-.0192-1.126-.0346-3.1436 0-4.5425.0538-2.0368.1537-4.5732-.5226-4.5463S6.6877 4.2285 6.949 7.007a33.0562 33.0562 0 0 0 .834 4.6385zm-3.305 5.3919a.319.319 0 0 0 .319.319h.3997a3.046 3.046 0 0 1 0-.3651 7.546 7.546 0 0 1 .1461-1.4565c-.0493.0002-.34.0005-.3866-.0021a.4881.4881 0 0 0-.4781.4979v1.0068zm.9184 1.4718a5.3254 5.3254 0 0 1-.123-.5573.3228.3228 0 0 0-.319-.2728h-.4957c.0007.0163-.0015.34.0009.355a.5188.5188 0 0 0 .5526.4827l.3842-.0076zm10.1265 2.917-.0884-.0807a.3229.3229 0 0 0-.3843-.0269 6.9823 6.9823 0 0 1-3.8046 1.0068 6.995 6.995 0 0 1-3.7932-1.0068.3228.3228 0 0 0-.3843.0269l-.0884.0807a.3154.3154 0 0 0 0 .4573 6.0305 6.0305 0 0 0 4.2927 1.5988 6.0453 6.0453 0 0 0 4.2889-1.5988.315.315 0 0 0-.0384-.4573zm1.4488-4.4158c0-2.4557-1.1529-4.3273-3.0245-5.2266-.2081-.1022-.4673.0594-.465.2921v1.3297a.3269.3269 0 0 0 .2037.296c1.7332.7109 2.9284 2.1866 2.9284 3.8776 0 2.2712-2.1559 3.8085-5.3419 3.8085-3.1859 0-5.3419-1.5411-5.3419-3.8085 0-1.691 1.1952-3.1667 2.9284-3.8776a.319.319 0 0 0 .2037-.296v-1.322c.0048-.2315-.2536-.3963-.4612-.2921-1.887.8839-3.0399 2.767-3.0399 5.2073 0 2.9899 2.2866 4.996 5.7108 4.996 3.4282.0001 5.6994-2.0098 5.6994-4.9844zm-8.6084-.538h-.0038a.5842.5842 0 1 0 .0038 0zm5.1614.5919c.0063.3226.2615.5789.584.5725a.5842.5842 0 1 0-.584-.5725zm4.5692.6225h-.4996a.3227.3227 0 0 0-.3151.2728c-.0346.173-.0768.3766-.1268.5573.0163.0007.3861-.0014.4012.0009a.5188.5188 0 0 0 .5366-.5004l.0037-.3306z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/tripadvisor.svg b/assets/lib/simple-icons/icons/tripadvisor.svg
index 62ea1be1..e30a07b4 100644
--- a/assets/lib/simple-icons/icons/tripadvisor.svg
+++ b/assets/lib/simple-icons/icons/tripadvisor.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Tripadvisor icon</title><path d="M12.006 4.295c-2.67 0-5.338.784-7.645 2.353H0l1.963 2.135a5.997 5.997 0 0 0 4.04 10.43 5.976 5.976 0 0 0 4.075-1.6L12 19.705l1.922-2.09a5.972 5.972 0 0 0 4.072 1.598 6 6 0 0 0 6-5.998 5.982 5.982 0 0 0-1.957-4.432L24 6.648h-4.35a13.573 13.573 0 0 0-7.644-2.353zM12 6.255c1.531 0 3.063.303 4.504.903C13.943 8.138 12 10.43 12 13.1c0-2.671-1.942-4.962-4.504-5.942A11.72 11.72 0 0 1 12 6.256zM6.002 9.157a4.059 4.059 0 1 1 0 8.118 4.059 4.059 0 0 1 0-8.118zm11.992.002a4.057 4.057 0 1 1 .003 8.115 4.057 4.057 0 0 1-.003-8.115zm-11.992 1.93a2.128 2.128 0 0 0 0 4.256 2.128 2.128 0 0 0 0-4.256zm11.992 0a2.128 2.128 0 0 0 0 4.256 2.128 2.128 0 0 0 0-4.256z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Tripadvisor</title><path d="M12.006 4.295c-2.67 0-5.338.784-7.645 2.353H0l1.963 2.135a5.997 5.997 0 0 0 4.04 10.43 5.976 5.976 0 0 0 4.075-1.6L12 19.705l1.922-2.09a5.972 5.972 0 0 0 4.072 1.598 6 6 0 0 0 6-5.998 5.982 5.982 0 0 0-1.957-4.432L24 6.648h-4.35a13.573 13.573 0 0 0-7.644-2.353zM12 6.255c1.531 0 3.063.303 4.504.903C13.943 8.138 12 10.43 12 13.1c0-2.671-1.942-4.962-4.504-5.942A11.72 11.72 0 0 1 12 6.256zM6.002 9.157a4.059 4.059 0 1 1 0 8.118 4.059 4.059 0 0 1 0-8.118zm11.992.002a4.057 4.057 0 1 1 .003 8.115 4.057 4.057 0 0 1-.003-8.115zm-11.992 1.93a2.128 2.128 0 0 0 0 4.256 2.128 2.128 0 0 0 0-4.256zm11.992 0a2.128 2.128 0 0 0 0 4.256 2.128 2.128 0 0 0 0-4.256z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/tripdotcom.svg b/assets/lib/simple-icons/icons/tripdotcom.svg
new file mode 100644
index 00000000..41fa2521
--- /dev/null
+++ b/assets/lib/simple-icons/icons/tripdotcom.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Trip.com</title><path d="M17.834 9.002c-.68 0-1.29.31-1.707.799v-.514h-1.708v8.348h1.897v-2.923c.416.344.943.551 1.518.551 1.677 0 3.036-1.401 3.036-3.13s-1.36-3.13-3.036-3.13zm-.19 4.516c-.733 0-1.328-.62-1.328-1.385s.595-1.385 1.328-1.385c.734 0 1.328.62 1.328 1.385s-.594 1.385-1.328 1.385zm6.356.607a1.138 1.138 0 1 1-2.277 0 1.138 1.138 0 0 1 2.277 0zM13.205 7.428a1.062 1.062 0 1 1-2.125 0 1.062 1.062 0 0 1 2.125 0zm-2.011 1.859h1.897v5.692h-1.897V9.287zM6.83 8.225H4.364v6.754H2.466V8.225H0V6.63h6.83v1.594zm3.035 1.033c.13 0 .255.012.38.03v1.74a1.55 1.55 0 0 0-.297-.031c-.88 0-1.594.612-1.594 1.593v2.389H6.451V9.287h1.707v.9c.363-.558.991-.93 1.707-.93z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/trove.svg b/assets/lib/simple-icons/icons/trove.svg
new file mode 100644
index 00000000..e1f41ec9
--- /dev/null
+++ b/assets/lib/simple-icons/icons/trove.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Trove</title><path d="M11.922 8.43c-1.393.035-2.506 1.213-2.486 2.606a2.534 2.534 0 0 0 1.763 2.392l.25-1.123a1.424 1.424 0 0 1-.875-1.307c0-.883.816-1.594 1.72-1.396.56.122.994.58 1.095 1.143a1.419 1.419 0 0 1-.854 1.558l.25 1.123a2.537 2.537 0 0 0 1.764-2.428 2.557 2.557 0 0 0-2.627-2.568zM.189 8.5a.138.138 0 0 0-.136.137v.776c0 .07.058.134.136.134h1.016v3.797a.14.14 0 0 0 .135.135h.853a.141.141 0 0 0 .137-.135V9.547h1.016a.136.136 0 0 0 .136-.134v-.776a.138.138 0 0 0-.136-.137zm4.504 0a.136.136 0 0 0-.134.137v4.707c0 .071.056.137.134.137h.846a.143.143 0 0 0 .137-.137v-1.812h.49l.945 1.884a.13.13 0 0 0 .114.065h.947c.12 0 .17-.115.121-.207l-.975-1.807c.62-.249 1.053-.775 1.053-1.43 0-.846-.697-1.537-1.55-1.537zm10.356 0c-.107 0-.164.094-.121.186l2.218 4.787a.136.136 0 0 0 .122.078h.072c.057 0 .1-.035.12-.078l2.233-4.787c.043-.092-.014-.186-.12-.186h-.946a.14.14 0 0 0-.121.079l-1.174 2.597h-.043L16.115 8.58a.14.14 0 0 0-.12-.079zm5.805 0a.138.138 0 0 0-.137.137v4.707c0 .071.058.137.137.137h2.943a.136.136 0 0 0 .135-.137v-.775a.134.134 0 0 0-.135-.135h-1.97v-.96h1.622a.134.134 0 0 0 .135-.136v-.775a.14.14 0 0 0-.135-.135h-1.623v-.88h1.97a.134.134 0 0 0 .136-.135v-.776a.136.136 0 0 0-.135-.137zM5.676 9.518h1.053c.291 0 .539.242.539.541 0 .299-.248.568-.54.568H5.677zM.135 14.526A.134.134 0 0 0 0 14.66v.775c0 .071.056.135.135.135h10.588l.232-1.045zm12.896 0 .233 1.045h10.601a.134.134 0 0 0 .135-.135v-.775a.134.134 0 0 0-.135-.135z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/truenas.svg b/assets/lib/simple-icons/icons/truenas.svg
new file mode 100644
index 00000000..603b8368
--- /dev/null
+++ b/assets/lib/simple-icons/icons/truenas.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>TrueNAS</title><path d="M24 10.049v5.114l-10.949 6.324v-5.114L24 10.049zm-24 0v5.114l10.956 6.324v-5.114L0 10.049zm12.004-.605l-4.433 2.559 4.433 2.559 4.429-2.559-4.429-2.559zm10.952-1.207l-9.905-5.723v5.118l5.473 3.164 4.432-2.559zm-12-.605V2.513L1.044 8.236l4.432 2.555 5.48-3.159z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/trulia.svg b/assets/lib/simple-icons/icons/trulia.svg
index a85db1fa..ffce2fcf 100644
--- a/assets/lib/simple-icons/icons/trulia.svg
+++ b/assets/lib/simple-icons/icons/trulia.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Trulia icon</title><path d="M12 0C8.19.021 5.729 2.58 5.729 6.445c0 3.201 2.088 5.94 3.277 10.1.684 2.385 1.052 5.303 1.242 7.455h3.504c.192-2.152.558-5.07 1.241-7.455 1.189-4.16 3.277-6.898 3.277-10.1C18.271 2.58 15.81.021 12 0zm.02 9.852c-1.584 0-2.869-1.286-2.869-2.869 0-1.582 1.285-2.867 2.869-2.867 1.585 0 2.869 1.283 2.869 2.867s-1.285 2.869-2.869 2.869z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>trulia</title><path d="M17.6958 8.9368a.6678.6678 0 0 0 .095 1.329.6678.6678 0 0 0 .6678-.668.6678.6678 0 0 0-.7628-.661zm-4.3956.2812v1.121h.7513v3.4726h-.7513v1.121h2.6262v-1.121h-.7513V9.218Zm-12.549.121v1.3814H.0001v1.1281h.7513v1.0852c0 1.1799.9502 2.1362 2.1226 2.1362a2.1126 2.1126 0 0 0 .4608-.0507v-1.115a1.1025 1.1025 0 0 1-.3837.0685c-.5958 0-1.0789-.4689-1.0789-1.047v-1.0772H3.335v-1.1281H1.872V9.339Zm20.92 1.2609c-1.1147-.005-2.0196.9806-2.019 2.1905.0005 1.21.9043 2.1952 2.019 2.1905.0292 0 .0598-.0009.0877-.002.4221-.0111.8757-.2098 1.113-.488v.4218H24v-4.2458h-1.1275l-.0005.4236c-.2385-.2791-.692-.477-1.113-.4879-.0292-.002-.0585-.002-.0878-.002zm-14.8245.0473c-.5173.003-.9275.153-1.2964.654l-.2277-.64h-1.098v1.1271h.5195v3.1444h1.118v-2.1983a.9887.9887 0 0 1 .9851-.9906h.339v-1.0966Zm9.6549.047v1.1172h.7513v3.121h1.8736v-1.117h-.7514l.001-3.1212zm-8.2605.0298v2.2125c0 1.1773.9494 2.1315 2.1195 2.1315s2.1193-.9525 2.1193-2.1298v-2.214h-1.1186v2.2539a1.0018 1.0018 0 1 1-2.001 0v-2.254zm13.5857.9717c.5932 0 1.074.5008 1.0746 1.1191.0005.6184-.4814 1.1192-1.0746 1.1192-.5933 0-1.0742-.5008-1.075-1.1192-.0008-.6183.4817-1.1191 1.075-1.1191z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/trustedshops.svg b/assets/lib/simple-icons/icons/trustedshops.svg
new file mode 100644
index 00000000..e2e69364
--- /dev/null
+++ b/assets/lib/simple-icons/icons/trustedshops.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Trusted Shops</title><path d="M15.187 14.332c-1.1 1.626-2.63 3.108-4.687 3.108-2.175 0-3.442-1.362-3.442-3.562 0-3.561 2.63-7.052 6.335-7.052 1.242 0 2.916.502 2.916 2.009 0 2.7-4.231 3.609-6.311 4.135-.072.457-.143.908-.143 1.362 0 .933.501 1.793 1.53 1.793 1.338 0 2.412-1.29 3.203-2.247zm-1.148-5.808c0-.55-.31-.978-.884-.978-1.722 0-2.608 3.346-2.94 4.66 1.601-.48 3.824-1.794 3.824-3.682zM12 0a12 12 0 1 0 12 11.997A11.997 11.997 0 0 0 12 0zm-.1 19.523a7.563 7.563 0 1 1 7.564-7.563 7.563 7.563 0 0 1-7.563 7.56Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/trustpilot.svg b/assets/lib/simple-icons/icons/trustpilot.svg
index 4942d6fa..89619a69 100644
--- a/assets/lib/simple-icons/icons/trustpilot.svg
+++ b/assets/lib/simple-icons/icons/trustpilot.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Trustpilot icon</title><path d="M12,17.964l5.214-1.321l2.179,6.714L12,17.964z M24,9.286h-9.179L12,0.643L9.179,9.286 H0l7.429,5.357l-2.821,8.643l7.429-5.357l4.571-3.286L24,9.286L24,9.286L24,9.286L24,9.286z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Trustpilot</title><path d="M17.227 16.67l2.19 6.742-7.413-5.388 5.223-1.354zM24 9.31h-9.165L12.005.589l-2.84 8.723L0 9.3l7.422 5.397-2.84 8.714 7.422-5.388 4.583-3.326L24 9.311z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/tryhackme.svg b/assets/lib/simple-icons/icons/tryhackme.svg
new file mode 100644
index 00000000..bd6b08ef
--- /dev/null
+++ b/assets/lib/simple-icons/icons/tryhackme.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>TryHackMe</title><path d="M10.705 0C7.54 0 4.902 2.285 4.349 5.291a4.525 4.525 0 0 0-4.107 4.5 4.525 4.525 0 0 0 4.52 4.52h6.761a.625.625 0 1 0 0-1.25H4.761a3.273 3.273 0 0 1-3.27-3.27A3.273 3.273 0 0 1 6.59 7.08a.625.625 0 0 0 .7-1.035 4.488 4.488 0 0 0-1.68-.69 5.223 5.223 0 0 1 5.096-4.104 5.221 5.221 0 0 1 5.174 4.57 4.489 4.489 0 0 0-.488.305.625.625 0 1 0 .731 1.013 3.245 3.245 0 0 1 1.912-.616 3.278 3.278 0 0 1 3.203 2.61.625.625 0 0 0 1.225-.251 4.533 4.533 0 0 0-4.428-3.61 4.54 4.54 0 0 0-.958.105C16.556 2.328 13.9 0 10.705 0zm5.192 10.64a.925.925 0 0 0-.462.108.913.913 0 0 0-.313.29 1.27 1.27 0 0 0-.175.427 2.39 2.39 0 0 0-.054.514c0 .181.018.353.054.517.036.164.095.307.175.43a.899.899 0 0 0 .313.297c.127.073.281.11.462.11.18 0 .334-.037.46-.11a.897.897 0 0 0 .309-.296c.08-.124.137-.267.173-.431.036-.164.054-.336.054-.517 0-.18-.018-.352-.054-.514a1.271 1.271 0 0 0-.173-.426.901.901 0 0 0-.309-.291.917.917 0 0 0-.46-.108zm6.486 0a.925.925 0 0 0-.462.108.913.913 0 0 0-.313.29 1.27 1.27 0 0 0-.175.427 2.39 2.39 0 0 0-.053.514c0 .181.017.353.053.517.036.164.095.307.175.43a.899.899 0 0 0 .313.297c.127.073.281.11.462.11.18 0 .334-.037.46-.11a.897.897 0 0 0 .31-.296c.078-.124.136-.267.172-.431.036-.164.054-.336.054-.517 0-.18-.018-.352-.054-.514a1.271 1.271 0 0 0-.173-.426.901.901 0 0 0-.308-.291.916.916 0 0 0-.461-.108zm-8.537.068l-.84.618.313.43.476-.368v1.877h.603v-2.557zm6.486 0l-.841.618.314.43.477-.368v1.877h.603v-2.557zm-4.435.445c.08 0 .143.028.193.084.05.057.087.127.114.21.026.083.044.173.054.269a2.541 2.541 0 0 1 0 .533c-.01.097-.028.187-.054.27a.584.584 0 0 1-.114.21.243.243 0 0 1-.193.085.248.248 0 0 1-.195-.086.584.584 0 0 1-.118-.209 1.245 1.245 0 0 1-.056-.27 2.645 2.645 0 0 1 0-.533c.01-.096.029-.186.056-.27a.583.583 0 0 1 .118-.209.25.25 0 0 1 .195-.084zm6.486 0c.08 0 .144.028.193.084.05.057.087.127.114.21.027.083.044.173.054.269a2.541 2.541 0 0 1 0 .533c-.01.097-.027.187-.054.27a.584.584 0 0 1-.114.21.243.243 0 0 1-.193.085.249.249 0 0 1-.195-.086.581.581 0 0 1-.117-.209 1.245 1.245 0 0 1-.056-.27 2.642 2.642 0 0 1 0-.533c.01-.096.028-.186.056-.27a.58.58 0 0 1 .117-.209.25.25 0 0 1 .195-.084zm-2.191 3.51a.93.93 0 0 0-.463.109.908.908 0 0 0-.312.291c-.08.122-.139.263-.175.426a2.383 2.383 0 0 0-.054.514c0 .18.018.353.054.516.036.164.094.308.175.432a.91.91 0 0 0 .312.296.92.92 0 0 0 .463.11c.18 0 .333-.037.46-.11a.892.892 0 0 0 .308-.296 1.32 1.32 0 0 0 .174-.432c.036-.163.054-.335.054-.516 0-.18-.018-.352-.054-.514a1.274 1.274 0 0 0-.174-.426.89.89 0 0 0-.309-.291.918.918 0 0 0-.46-.108zm-6.402.07l-.841.617.314.43.476-.369v1.878h.604v-2.557zm2.125 0l-.841.617.314.43.477-.369v1.878h.603v-2.557zm2.116 0l-.84.617.313.43.477-.369v1.878h.603v-2.557zm2.16.443c.08 0 .144.028.194.085a.605.605 0 0 1 .114.21c.026.083.044.172.053.269a2.639 2.639 0 0 1 0 .532 1.28 1.28 0 0 1-.053.27.585.585 0 0 1-.114.21.244.244 0 0 1-.193.085.25.25 0 0 1-.196-.085.589.589 0 0 1-.117-.21 1.245 1.245 0 0 1-.056-.27 2.597 2.597 0 0 1 0-.532c.01-.097.028-.186.056-.27a.589.589 0 0 1 .117-.209.249.249 0 0 1 .196-.085zm-6.729 3.073a.676.676 0 0 0-.335.078.661.661 0 0 0-.227.211.91.91 0 0 0-.127.31c-.027.118-.04.242-.04.373s.013.256.04.375a.93.93 0 0 0 .127.313.65.65 0 0 0 .227.215c.092.053.204.08.335.08a.655.655 0 0 0 .334-.08.65.65 0 0 0 .225-.215c.057-.09.1-.194.125-.313a1.75 1.75 0 0 0 .04-.375c0-.13-.014-.255-.04-.373a.931.931 0 0 0-.125-.31.658.658 0 0 0-.225-.21.667.667 0 0 0-.334-.08zm3.086 0a.675.675 0 0 0-.336.078.661.661 0 0 0-.226.211.907.907 0 0 0-.127.31 1.69 1.69 0 0 0-.04.373c0 .131.013.256.04.375a.928.928 0 0 0 .127.313c.058.09.134.162.226.215.093.053.205.08.336.08a.655.655 0 0 0 .334-.08.65.65 0 0 0 .224-.215c.058-.09.1-.194.126-.313a1.752 1.752 0 0 0 0-.748.94.94 0 0 0-.126-.31.657.657 0 0 0-.224-.21.667.667 0 0 0-.334-.08zm5.108 0a.675.675 0 0 0-.336.078.661.661 0 0 0-.226.211.91.91 0 0 0-.127.31c-.027.118-.04.242-.04.373s.013.256.04.375a.931.931 0 0 0 .127.313c.058.09.134.162.226.215.093.053.205.08.336.08.13 0 .243-.027.334-.08a.65.65 0 0 0 .224-.215c.058-.09.1-.194.126-.313a1.75 1.75 0 0 0 .04-.375c0-.13-.014-.255-.04-.373a.943.943 0 0 0-.126-.31.657.657 0 0 0-.224-.21.668.668 0 0 0-.334-.08zm-6.658.05l-.61.448.227.311.346-.266v1.362h.438v-1.856zm3.068 0l-.61.448.227.311.346-.266v1.362h.438v-1.856zm5.108 0l-.611.448.228.311.346-.266v1.362h.438v-1.856zm-9.712.322c.058 0 .105.02.14.062a.421.421 0 0 1 .083.151.96.96 0 0 1 .04.196 1.932 1.932 0 0 1 0 .386.954.954 0 0 1-.04.197.421.421 0 0 1-.083.152.176.176 0 0 1-.14.061.18.18 0 0 1-.141-.06.427.427 0 0 1-.085-.153.887.887 0 0 1-.041-.197 1.96 1.96 0 0 1 0-.386.893.893 0 0 1 .04-.196.42.42 0 0 1 .086-.151.181.181 0 0 1 .141-.062zm3.086 0c.058 0 .104.02.14.062a.421.421 0 0 1 .082.151.94.94 0 0 1 .04.196 1.906 1.906 0 0 1 0 .386.93.93 0 0 1-.04.197.421.421 0 0 1-.082.152.176.176 0 0 1-.14.061.18.18 0 0 1-.141-.06.42.42 0 0 1-.086-.153.846.846 0 0 1-.04-.197 1.965 1.965 0 0 1-.011-.195c0-.057.004-.121.01-.191a.849.849 0 0 1 .041-.196.42.42 0 0 1 .086-.151.182.182 0 0 1 .141-.062zm5.108 0c.058 0 .104.02.14.062a.421.421 0 0 1 .082.151.92.92 0 0 1 .04.196 1.963 1.963 0 0 1 0 .386.943.943 0 0 1-.04.197.421.421 0 0 1-.082.152.177.177 0 0 1-.14.061.18.18 0 0 1-.142-.06.437.437 0 0 1-.085-.153.95.95 0 0 1-.04-.197 1.965 1.965 0 0 1-.011-.195c0-.057.004-.121.01-.191a.959.959 0 0 1 .04-.196.47.47 0 0 1 .086-.151.181.181 0 0 1 .142-.062zm-1.684 1.814a.675.675 0 0 0-.336.079.66.66 0 0 0-.227.21.91.91 0 0 0-.127.31 1.731 1.731 0 0 0 0 .748.939.939 0 0 0 .127.314c.059.09.134.162.227.215.093.053.205.08.336.08a.66.66 0 0 0 .334-.08.648.648 0 0 0 .224-.215c.058-.09.1-.195.126-.314a1.737 1.737 0 0 0-.001-.747.928.928 0 0 0-.125-.31.65.65 0 0 0-.224-.211.668.668 0 0 0-.334-.079zm3.063 0a.676.676 0 0 0-.336.079.664.664 0 0 0-.227.21.906.906 0 0 0-.127.31 1.74 1.74 0 0 0 0 .748.936.936 0 0 0 .127.314.66.66 0 0 0 .227.215c.092.053.204.08.336.08a.654.654 0 0 0 .334-.08.648.648 0 0 0 .223-.215c.058-.09.1-.195.126-.314a1.74 1.74 0 0 0 0-.747.928.928 0 0 0-.126-.31.65.65 0 0 0-.223-.211.666.666 0 0 0-.334-.079zm-1.545.05l-.611.448.228.312.346-.267v1.363h.438v-1.856zm-1.518.323c.057 0 .104.02.14.061a.42.42 0 0 1 .082.152.91.91 0 0 1 .04.195 1.966 1.966 0 0 1 0 .387.951.951 0 0 1-.04.197.421.421 0 0 1-.082.152.177.177 0 0 1-.14.06.18.18 0 0 1-.142-.06.428.428 0 0 1-.085-.152.914.914 0 0 1-.04-.197 1.96 1.96 0 0 1-.011-.195c0-.058.003-.122.01-.192a.923.923 0 0 1 .041-.195c.02-.06.048-.11.085-.152a.181.181 0 0 1 .142-.061zm3.063 0c.057 0 .104.02.14.061a.42.42 0 0 1 .082.152.94.94 0 0 1 .04.195 1.91 1.91 0 0 1 0 .387.93.93 0 0 1-.04.197.422.422 0 0 1-.083.152.175.175 0 0 1-.14.06.18.18 0 0 1-.141-.06.423.423 0 0 1-.085-.152.907.907 0 0 1-.04-.197 1.95 1.95 0 0 1 0-.387.915.915 0 0 1 .04-.195c.02-.06.048-.11.085-.152a.182.182 0 0 1 .142-.061zm-9.713.185a.465.465 0 0 0-.232.055.456.456 0 0 0-.157.146.627.627 0 0 0-.089.215 1.168 1.168 0 0 0-.027.259c0 .09.009.177.027.26a.648.648 0 0 0 .089.216c.04.063.093.112.157.149a.459.459 0 0 0 .232.056c.09 0 .168-.02.231-.056a.45.45 0 0 0 .156-.149.67.67 0 0 0 .087-.217 1.218 1.218 0 0 0 0-.518.647.647 0 0 0-.087-.215.448.448 0 0 0-.156-.146.458.458 0 0 0-.23-.055zm1.052.035l-.423.31.158.217.24-.185v.944h.303v-1.286zm-1.052.224c.04 0 .073.014.097.042a.284.284 0 0 1 .057.105.69.69 0 0 1 .028.136c.004.049.007.092.007.133 0 .04-.003.086-.007.135a.684.684 0 0 1-.028.136.285.285 0 0 1-.057.105.123.123 0 0 1-.097.043.125.125 0 0 1-.098-.043.298.298 0 0 1-.059-.105.612.612 0 0 1-.028-.136 1.39 1.39 0 0 1 0-.268.62.62 0 0 1 .028-.136.297.297 0 0 1 .06-.105.125.125 0 0 1 .097-.042zm3.775 1.394a.463.463 0 0 0-.232.054.452.452 0 0 0-.157.146.621.621 0 0 0-.088.214 1.19 1.19 0 0 0 0 .519.641.641 0 0 0 .088.217.46.46 0 0 0 .157.15.458.458 0 0 0 .232.054.454.454 0 0 0 .232-.055.45.45 0 0 0 .155-.149.664.664 0 0 0 .087-.217 1.189 1.189 0 0 0 0-.519.642.642 0 0 0-.087-.214.446.446 0 0 0-.155-.146.459.459 0 0 0-.232-.054zm1.052.034l-.423.31.158.216.24-.185v.945h.303V22.68zm-1.052.223c.04 0 .073.014.098.043a.3.3 0 0 1 .057.105.643.643 0 0 1 .027.135 1.31 1.31 0 0 1 0 .268.654.654 0 0 1-.027.137.307.307 0 0 1-.057.105.124.124 0 0 1-.098.042.125.125 0 0 1-.098-.042.293.293 0 0 1-.059-.105.618.618 0 0 1-.028-.137 1.364 1.364 0 0 1 0-.268.612.612 0 0 1 .028-.135.287.287 0 0 1 .06-.105.123.123 0 0 1 .097-.043z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/tryitonline.svg b/assets/lib/simple-icons/icons/tryitonline.svg
index 2101c676..d08b3e54 100644
--- a/assets/lib/simple-icons/icons/tryitonline.svg
+++ b/assets/lib/simple-icons/icons/tryitonline.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Try It Online icon</title><path d="M.75 6a.75.75 0 100 1.5H4.5v9.75a.75.75 0 101.5 0V7.5h17.25a.75.75 0 100-1.5zm10.5 3a.75.75 0 00-.75.75v7.5a.75.75 0 101.5 0v-7.5a.75.75 0 00-.75-.75zm8.25 0a4.51 4.51 0 00-4.5 4.5c0 2.48 2.02 4.5 4.5 4.5s4.5-2.02 4.5-4.5S21.98 9 19.5 9zm0 1.5c1.67 0 3 1.33 3 3s-1.33 3-3 3-3-1.33-3-3 1.33-3 3-3Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Try It Online</title><path d="M.75 6a.75.75 0 100 1.5H4.5v9.75a.75.75 0 101.5 0V7.5h17.25a.75.75 0 100-1.5zm10.5 3a.75.75 0 00-.75.75v7.5a.75.75 0 101.5 0v-7.5a.75.75 0 00-.75-.75zm8.25 0a4.51 4.51 0 00-4.5 4.5c0 2.48 2.02 4.5 4.5 4.5s4.5-2.02 4.5-4.5S21.98 9 19.5 9zm0 1.5c1.67 0 3 1.33 3 3s-1.33 3-3 3-3-1.33-3-3 1.33-3 3-3Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/tsnode.svg b/assets/lib/simple-icons/icons/tsnode.svg
new file mode 100644
index 00000000..5cc1aadb
--- /dev/null
+++ b/assets/lib/simple-icons/icons/tsnode.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ts-node</title><path d="M11.999 0c-.196 0-.392.05-.568.153L2.026 5.58a1.135 1.135 0 00-.568.983V17.43c0 .406.216.781.568.984l5.787 3.344v-7.344H4.748v-1.943h8.342v1.943h-3.065v8.622l1.406.812c.351.203.784.203 1.136 0l2.317-1.338a3.958 3.958 0 01-1.195-1.413l1.801-1.042c.361.59.806 1.06 1.48 1.25l2.174-1.256c-.127-.568-.698-.823-1.584-1.21l-.553-.238c-1.596-.68-2.655-1.532-2.655-3.334 0-1.658 1.265-2.922 3.24-2.922 1.406 0 2.417.49 3.144 1.77l-1.723 1.105c-.379-.68-.79-.948-1.421-.948-.648 0-1.06.41-1.06.948 0 .663.412.932 1.36 1.343l.553.237c1.336.573 2.255 1.155 2.676 2.107l.853-.493c.352-.203.568-.578.568-.984V6.565c0-.406-.216-.782-.568-.984L12.567.153A1.134 1.134 0 0011.999 0z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/tubi.svg b/assets/lib/simple-icons/icons/tubi.svg
new file mode 100644
index 00000000..2c40a434
--- /dev/null
+++ b/assets/lib/simple-icons/icons/tubi.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Tubi</title><path d="M23.7692 9.6906h-1.6154v7.159c0 .1276.1034.231.2308.231h1.3846a.2309.2309 0 0 0 .2308-.231v-6.928a.2309.2309 0 0 0-.2308-.231m-6.2307 5.5425c-1.0196 0-1.8462-.8271-1.8462-1.8475 0-1.0203.8266-1.8475 1.8462-1.8475s1.8461.8272 1.8461 1.8475c0 1.0204-.8265 1.8475-1.8461 1.8475m0-5.5425c-.542 0-1.0566.117-1.5203.327v-.0001a.2307.2307 0 0 1-.3259-.2104V7.1503a.2309.2309 0 0 0-.2308-.2309h-1.6153v6.4662c0 2.0407 1.653 3.695 3.6923 3.695 2.0392 0 3.6923-1.6543 3.6923-3.695 0-2.0406-1.653-3.695-3.6923-3.695m-12.1189 6.689.0002.0002-.6948-1.2052-.0004.0002a.2307.2307 0 0 0-.2925-.096 1.8389 1.8389 0 0 1-.7398.1543c-1.0196 0-1.8462-.8272-1.8462-1.8475v-1.6165c0-.1276.1034-.231.2308-.231h2.3077a.2309.2309 0 0 0 .2308-.231V9.9217a.2309.2309 0 0 0-.2308-.231H2.077a.2309.2309 0 0 1-.2307-.2309V7.1503a.2309.2309 0 0 0-.2308-.2309H0v6.4662c0 2.0407 1.6531 3.695 3.6923 3.695.5849 0 1.138-.136 1.6295-.3783a.231.231 0 0 0 .0978-.3227m7.2727-6.689h-1.6154v3.695c0 1.0203-.8266 1.8475-1.8462 1.8475s-1.8461-.8272-1.8461-1.8475v-3.464a.2309.2309 0 0 0-.2308-.231H5.5384v3.695c0 2.0407 1.6531 3.695 3.6923 3.695s3.6923-1.6543 3.6923-3.695v-3.464a.2309.2309 0 0 0-.2307-.231m10.3846-2.7712c-.5099 0-.9231.4135-.9231.9237s.4132.9238.923.9238c.5099 0 .9232-.4136.9232-.9238s-.4133-.9237-.9231-.9237"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/tui.svg b/assets/lib/simple-icons/icons/tui.svg
index 34c1f680..4476a53d 100644
--- a/assets/lib/simple-icons/icons/tui.svg
+++ b/assets/lib/simple-icons/icons/tui.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>TUI icon</title><path d="M 24,4.5167394 A 2.1169833,2.1169833 0 0 1 21.883017,6.6337226 2.1169833,2.1169833 0 0 1 19.766033,4.5167394 2.1169833,2.1169833 0 0 1 21.883017,2.3997561 2.1169833,2.1169833 0 0 1 24,4.5167394 Z M 1.1397405,7.7475086 H 6.8452135 C 7.4094414,7.7475086 7.8258416,7.9246762 7.9917247,8.7191088 8.1767914,9.6026898 8.1045702,10.217699 7.1058868,10.287663 L 5.3150273,10.419692 C 6.6330638,18.749954 14.342674,21.465019 18.537145,12.492666 19.232274,11.007618 19.459093,10.737917 20.219673,10.926369 21.251081,11.182529 21.392138,11.716288 20.896746,13.209235 17.273274,24.265846 5.0780515,25.375118 2.685725,10.604759 L 1.2311454,10.709706 C 0.04626669,10.79434 0,9.7956558 0,9.2404558 0,8.1413397 0.40737258,7.7475086 1.1397405,7.7475086 Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>TUI</title><path d="M24 4.5167a2.117 2.117 0 01-2.117 2.117 2.117 2.117 0 01-2.117-2.117 2.117 2.117 0 012.117-2.117A2.117 2.117 0 0124 4.5168zM1.1397 7.7475h5.7055c.5642 0 .9806.1772 1.1465.9716.185.8836.1129 1.4986-.8858 1.5686l-1.7909.132c1.318 8.3303 9.0277 11.0453 13.2221 2.073.6952-1.485.922-1.7548 1.6826-1.5663 1.0314.2561 1.1724.7899.677 2.2828-3.6234 11.0566-15.8186 12.166-18.211-2.6044l-1.4546.105C.0463 10.7942 0 9.7956 0 9.2404c0-1.0992.4074-1.493 1.1397-1.493z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/tumblr.svg b/assets/lib/simple-icons/icons/tumblr.svg
index 46811dde..c6547f8a 100644
--- a/assets/lib/simple-icons/icons/tumblr.svg
+++ b/assets/lib/simple-icons/icons/tumblr.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Tumblr icon</title><path d="M14.563 24c-5.093 0-7.031-3.756-7.031-6.411V9.747H5.116V6.648c3.63-1.313 4.512-4.596 4.71-6.469C9.84.051 9.941 0 9.999 0h3.517v6.114h4.801v3.633h-4.82v7.47c.016 1.001.375 2.371 2.207 2.371h.09c.631-.02 1.486-.205 1.936-.419l1.156 3.425c-.436.636-2.4 1.374-4.156 1.404h-.178l.011.002z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Tumblr</title><path d="M14.563 24c-5.093 0-7.031-3.756-7.031-6.411V9.747H5.116V6.648c3.63-1.313 4.512-4.596 4.71-6.469C9.84.051 9.941 0 9.999 0h3.517v6.114h4.801v3.633h-4.82v7.47c.016 1.001.375 2.371 2.207 2.371h.09c.631-.02 1.486-.205 1.936-.419l1.156 3.425c-.436.636-2.4 1.374-4.156 1.404h-.178l.011.002z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/tunein.svg b/assets/lib/simple-icons/icons/tunein.svg
new file mode 100644
index 00000000..9530e5ca
--- /dev/null
+++ b/assets/lib/simple-icons/icons/tunein.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>TuneIn</title><path d="M7.66 11.398v.742c0 .105-.11.105-.11.105h-.847s-.11 0-.11.11v4.03c0 .11-.105.11-.105.11h-.855c-.106 0-.106-.11-.106-.11v-4.03s0-.11-.109-.11h-.844c-.105 0-.105-.105-.105-.105v-.742c0-.106.105-.106.105-.106H7.66v.106m15.458-7.52H12.301c-.68 0-.836.16-.836.816v2.414c0 .493 0 .493-.492.493H.813C.137 7.6 0 7.737 0 8.425v5.41c0 1.754 0 3.508.023 5.266 0 .922.102 1.02 1.04 1.02H9.89c.664 0 1.32.01 1.984-.01.48-.006.669-.202.669-.682v-2.56c0-.468 0-.468.469-.468h10.195c.633 0 .793-.152.793-.78V4.736c0-.7-.164-.86-.883-.86zm-11.64 14.625c0 .5-.013.5-.525.5-3.148 0-6.293 0-9.445.008-.32 0-.43-.078-.43-.418.016-3.16.008-6.324 0-9.48-.008-.34.086-.446.442-.446 3.187.012 6.363.008 9.55.008.117 0 .23.015.4.023 0 .18 0 .32.01.442-.003 3.113-.003 6.242-.003 9.363zm7.69-5.844c0 .102-.104.102-.104.102h-2.57c-.106 0-.106-.102-.106-.102v-.72c0-.1.105-.1.105-.1h.617s.102 0 .102-.102V8.659s0-.101-.102-.101h-.515c-.102 0-.102-.102-.102-.102v-.82c0-.106.102-.106.102-.106h2.367c.102 0 .102.106.102.106v.715c0 .105-.102.105-.102.105h-.516s-.101 0-.101.102v3.074s0 .105.1.105h.618c.106 0 .106.102.106.102z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/turborepo.svg b/assets/lib/simple-icons/icons/turborepo.svg
new file mode 100644
index 00000000..646d4984
--- /dev/null
+++ b/assets/lib/simple-icons/icons/turborepo.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Turborepo</title><path d="M6.155 12.058c0 .503.095.967.285 1.392.19.424.447.793.771 1.106.324.313.699.56 1.123.738.437.168.895.252 1.375.252.481 0 .934-.084 1.359-.252a3.578 3.578 0 0 0 1.14-.738 3.37 3.37 0 0 0 1.073-2.498 3.371 3.371 0 0 0-1.073-2.498 3.356 3.356 0 0 0-1.14-.721 3.463 3.463 0 0 0-1.359-.269c-.48 0-.938.09-1.374.269-.425.167-.8.408-1.124.72a3.52 3.52 0 0 0-.771 1.107 3.37 3.37 0 0 0-.285 1.392Zm-3.437 0c0-.939.173-1.81.52-2.616a6.524 6.524 0 0 1 1.441-2.13 6.503 6.503 0 0 1 2.197-1.408c.86-.346 1.805-.52 2.833-.52 1.018 0 1.957.174 2.817.52a6.47 6.47 0 0 1 2.213 1.409 6.542 6.542 0 0 1 1.979 4.745c0 .939-.173 1.816-.52 2.632a6.45 6.45 0 0 1-1.459 2.113 6.678 6.678 0 0 1-2.213 1.425c-.86.335-1.8.503-2.817.503-1.028 0-1.973-.168-2.833-.503a6.717 6.717 0 0 1-2.197-1.425 6.572 6.572 0 0 1-1.442-2.113 6.663 6.663 0 0 1-.52-2.632ZM10.144.008c-2.76-.096-5.52.76-7.805 2.569l1.523.857C5.67 2.1 7.955 1.53 10.144 1.625V.007Zm8.09 3.616C16.331 1.625 13.856.388 11.191.102V1.72a10.725 10.725 0 0 1 5.901 3.046l1.142-1.142Zm3.427 7.805c-.095-2.475-1.047-4.95-2.665-7.043l-1.142 1.142c1.332 1.808 2.094 3.807 2.189 5.9h1.618Zm-2.665 8.185c1.618-2.094 2.57-4.568 2.665-7.043h-1.618c-.095 2.094-.857 4.093-2.19 5.901l1.143 1.142Zm-7.805 4.284c2.57-.286 5.14-1.523 7.043-3.522l-1.142-1.142c-1.618 1.713-3.712 2.76-5.901 3.046v1.618Zm-8.852-2.475a11.867 11.867 0 0 0 7.805 2.57v-1.618c-2.19.095-4.378-.476-6.282-1.809l-1.523.857Z"/></svg>
diff --git a/assets/lib/simple-icons/icons/turbosquid.svg b/assets/lib/simple-icons/icons/turbosquid.svg
new file mode 100644
index 00000000..7ea4cd89
--- /dev/null
+++ b/assets/lib/simple-icons/icons/turbosquid.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>TurboSquid</title><path d="M11.909.01C9.832.153 7.89 1.617 7.89 1.617s4.235-1.383 5.42.752c.861 1.552-.133 3.989-1.67 6.6-1.418-1.212-5.21-4.035-8.73-3.038C-1.528 7.187.43 13.176.43 13.176S.45 8.632 2.803 8.14c1.71-.358 3.673 1.364 5.63 3.664-1.567 1.005-5.368 3.815-5.526 7.545C2.705 24.048 8.883 24 8.883 24s-4.224-1.424-3.955-3.863c.196-1.773 2.403-3.148 5.149-4.338.451 1.833 1.894 6.393 5.316 7.701 4.313 1.648 6.176-4.37 6.176-4.37s-2.627 3.662-4.816 2.647c-1.59-.737-2.189-3.308-2.448-6.343 1.845.127 6.536.137 8.811-2.785 2.867-3.681-2.158-7.353-2.158-7.353s2.597 3.687.976 5.5c-1.178 1.317-3.755 1.103-6.66.417.689-1.753 2.146-6.31.129-9.423C14.45.32 13.155-.074 11.909.01zm-1.266 2.487c-.547 0-1.097.072-1.557.162.78.292 1.413.754 1.862 1.361a3.578 3.578 0 01.646 1.524c.234-.536.407-1.024.524-1.475a1.254 1.254 0 00-.186-1.039 1.234 1.233 0 00-.93-.523c-.119-.008-.24-.01-.359-.01zm9.713 4.283c-.032.849-.263 1.606-.691 2.228a3.492 3.491 0 01-1.219 1.098 10.375 10.374 0 001.115.065c.142 0 .283-.003.418-.01a1.203 1.203 0 00.912-.502 1.283 1.283 0 00.198-1.065c-.164-.657-.459-1.302-.733-1.814zM3.362 9.626a1.23 1.23 0 00-1.143.802c-.245.629-.378 1.33-.451 1.91.785-1.018 1.825-1.582 2.967-1.582a3.438 3.438 0 01.494.036 9.569 9.569 0 00-1.211-.965 1.185 1.185 0 00-.656-.201zm12.953 8.546c.12.576.26 1.076.424 1.512a1.21 1.21 0 001.135.795 1.247 1.247 0 00.666-.202c.559-.362 1.07-.848 1.463-1.273a4.358 4.358 0 01-1.211.178 3.472 3.472 0 01-2.477-1.01zm-8.168.428a9.79 9.79 0 00-1.272.877 1.24 1.24 0 00-.449.95 1.269 1.269 0 00.451.981c.51.431 1.122.78 1.64 1.03-.465-.707-.711-1.46-.724-2.221a3.605 3.604 0 01.354-1.617z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/turkishairlines.svg b/assets/lib/simple-icons/icons/turkishairlines.svg
index 67220493..54dda18d 100644
--- a/assets/lib/simple-icons/icons/turkishairlines.svg
+++ b/assets/lib/simple-icons/icons/turkishairlines.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Turkish Airlines icon</title><path d="M.168 13.988c.272 1.623.86 3.115 1.69 4.423 3.095-.863 5.817-2.495 6.785-6.132 1.065-4.003-.15-8.199-3.057-10.422C1.626 4.364-.657 9.077.168 13.988m23.664-3.975c1.098 6.534-3.308 12.722-9.844 13.819-1.1.185-2.19.214-3.245.103a12.023 12.023 0 0 1-8.46-4.892l19.428-5.57c.279-.08.207-.349-.024-.333l-8.145.569c1.148-1.108 2.021-2.467 1.915-4.345-.214-3.043-3.311-6.013-9.071-7.967a12.016 12.016 0 0 1 6.87-1.333c5.228.548 9.663 4.512 10.576 9.95"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Turkish Airlines</title><path d="M.168 13.988c.272 1.623.86 3.115 1.69 4.423 3.095-.863 5.817-2.495 6.785-6.132 1.065-4.003-.15-8.199-3.057-10.422C1.626 4.364-.657 9.077.168 13.988m23.664-3.975c1.098 6.534-3.308 12.722-9.844 13.819-1.1.185-2.19.214-3.245.103a12.023 12.023 0 0 1-8.46-4.892l19.428-5.57c.279-.08.207-.349-.024-.333l-8.145.569c1.148-1.108 2.021-2.467 1.915-4.345-.214-3.043-3.311-6.013-9.071-7.967a12.016 12.016 0 0 1 6.87-1.333c5.228.548 9.663 4.512 10.576 9.95"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/tutanota.svg b/assets/lib/simple-icons/icons/tutanota.svg
new file mode 100644
index 00000000..cf0ae286
--- /dev/null
+++ b/assets/lib/simple-icons/icons/tutanota.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Tutanota</title><path d="M2.158.934C.978.934.025 1.895.023 3.08.017 9.74.005 16.413 0 23.066c.793-.297 1.67-.56 2.56-.918 6.188-2.485 11.249-4.598 11.253-6.983a1.66 1.66 0 0 0-.016-.23c-.32-2.356-5.916-3.087-5.908-4.166a.37.37 0 0 1 .05-.177c.673-1.184 3.336-1.128 4.316-1.212.982-.085 3.285-.067 3.397-.773a.44.44 0 0 0 .005-.065c.003-.656-1.584-.913-1.584-.913s1.925.29 1.92 1.042a.445.445 0 0 1-.015.114c-.207.81-1.901.962-3.021 1.017-1.06.054-2.673.175-2.679.695 0 .03.005.062.015.095.253.76 6.167 1.127 9.95 3.102 2.178 1.136 3.26 3.004 3.757 4.974V3.08A2.14 2.14 0 0 0 21.866.934H2.158Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/tvtime.svg b/assets/lib/simple-icons/icons/tvtime.svg
new file mode 100644
index 00000000..87dbd17b
--- /dev/null
+++ b/assets/lib/simple-icons/icons/tvtime.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>TV Time</title><path d="M0 0v24h24V0zm4.8 4.8h14.4v4.8h-4.8v9.6H9.6V9.6H4.8Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/twilio.svg b/assets/lib/simple-icons/icons/twilio.svg
index 028d4d39..2b8f075d 100644
--- a/assets/lib/simple-icons/icons/twilio.svg
+++ b/assets/lib/simple-icons/icons/twilio.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Twilio icon</title><path d="M12 0C5.381-.008.008 5.352 0 11.971V12c0 6.64 5.359 12 12 12 6.64 0 12-5.36 12-12 0-6.641-5.36-12-12-12zm0 20.801c-4.846.015-8.786-3.904-8.801-8.75V12c-.014-4.846 3.904-8.786 8.75-8.801H12c4.847-.014 8.786 3.904 8.801 8.75V12c.015 4.847-3.904 8.786-8.75 8.801H12zm5.44-11.76c0 1.359-1.12 2.479-2.481 2.479-1.366-.007-2.472-1.113-2.479-2.479 0-1.361 1.12-2.481 2.479-2.481 1.361 0 2.481 1.12 2.481 2.481zm0 5.919c0 1.36-1.12 2.48-2.481 2.48-1.367-.008-2.473-1.114-2.479-2.48 0-1.359 1.12-2.479 2.479-2.479 1.361-.001 2.481 1.12 2.481 2.479zm-5.919 0c0 1.36-1.12 2.48-2.479 2.48-1.368-.007-2.475-1.113-2.481-2.48 0-1.359 1.12-2.479 2.481-2.479 1.358-.001 2.479 1.12 2.479 2.479zm0-5.919c0 1.359-1.12 2.479-2.479 2.479-1.367-.007-2.475-1.112-2.481-2.479 0-1.361 1.12-2.481 2.481-2.481 1.358 0 2.479 1.12 2.479 2.481z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Twilio</title><path d="M12 0C5.381-.008.008 5.352 0 11.971V12c0 6.64 5.359 12 12 12 6.64 0 12-5.36 12-12 0-6.641-5.36-12-12-12zm0 20.801c-4.846.015-8.786-3.904-8.801-8.75V12c-.014-4.846 3.904-8.786 8.75-8.801H12c4.847-.014 8.786 3.904 8.801 8.75V12c.015 4.847-3.904 8.786-8.75 8.801H12zm5.44-11.76c0 1.359-1.12 2.479-2.481 2.479-1.366-.007-2.472-1.113-2.479-2.479 0-1.361 1.12-2.481 2.479-2.481 1.361 0 2.481 1.12 2.481 2.481zm0 5.919c0 1.36-1.12 2.48-2.481 2.48-1.367-.008-2.473-1.114-2.479-2.48 0-1.359 1.12-2.479 2.479-2.479 1.361-.001 2.481 1.12 2.481 2.479zm-5.919 0c0 1.36-1.12 2.48-2.479 2.48-1.368-.007-2.475-1.113-2.481-2.48 0-1.359 1.12-2.479 2.481-2.479 1.358-.001 2.479 1.12 2.479 2.479zm0-5.919c0 1.359-1.12 2.479-2.479 2.479-1.367-.007-2.475-1.112-2.481-2.479 0-1.361 1.12-2.481 2.481-2.481 1.358 0 2.479 1.12 2.479 2.481z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/twitch.svg b/assets/lib/simple-icons/icons/twitch.svg
index b4ff31f2..8aaa4a9a 100644
--- a/assets/lib/simple-icons/icons/twitch.svg
+++ b/assets/lib/simple-icons/icons/twitch.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Twitch icon</title><path d="M11.571 4.714h1.715v5.143H11.57zm4.715 0H18v5.143h-1.714zM6 0L1.714 4.286v15.428h5.143V24l4.286-4.286h3.428L22.286 12V0zm14.571 11.143l-3.428 3.428h-3.429l-3 3v-3H6.857V1.714h13.714Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Twitch</title><path d="M11.571 4.714h1.715v5.143H11.57zm4.715 0H18v5.143h-1.714zM6 0L1.714 4.286v15.428h5.143V24l4.286-4.286h3.428L22.286 12V0zm14.571 11.143l-3.428 3.428h-3.429l-3 3v-3H6.857V1.714h13.714Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/twitter.svg b/assets/lib/simple-icons/icons/twitter.svg
index af5b7c34..45bd20c1 100644
--- a/assets/lib/simple-icons/icons/twitter.svg
+++ b/assets/lib/simple-icons/icons/twitter.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Twitter icon</title><path d="M23.954 4.569c-.885.389-1.83.654-2.825.775 1.014-.611 1.794-1.574 2.163-2.723-.951.555-2.005.959-3.127 1.184-.896-.959-2.173-1.559-3.591-1.559-2.717 0-4.92 2.203-4.92 4.917 0 .39.045.765.127 1.124C7.691 8.094 4.066 6.13 1.64 3.161c-.427.722-.666 1.561-.666 2.475 0 1.71.87 3.213 2.188 4.096-.807-.026-1.566-.248-2.228-.616v.061c0 2.385 1.693 4.374 3.946 4.827-.413.111-.849.171-1.296.171-.314 0-.615-.03-.916-.086.631 1.953 2.445 3.377 4.604 3.417-1.68 1.319-3.809 2.105-6.102 2.105-.39 0-.779-.023-1.17-.067 2.189 1.394 4.768 2.209 7.557 2.209 9.054 0 13.999-7.496 13.999-13.986 0-.209 0-.42-.015-.63.961-.689 1.8-1.56 2.46-2.548l-.047-.02z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Twitter</title><path d="M23.953 4.57a10 10 0 01-2.825.775 4.958 4.958 0 002.163-2.723c-.951.555-2.005.959-3.127 1.184a4.92 4.92 0 00-8.384 4.482C7.69 8.095 4.067 6.13 1.64 3.162a4.822 4.822 0 00-.666 2.475c0 1.71.87 3.213 2.188 4.096a4.904 4.904 0 01-2.228-.616v.06a4.923 4.923 0 003.946 4.827 4.996 4.996 0 01-2.212.085 4.936 4.936 0 004.604 3.417 9.867 9.867 0 01-6.102 2.105c-.39 0-.779-.023-1.17-.067a13.995 13.995 0 007.557 2.209c9.053 0 13.998-7.496 13.998-13.985 0-.21 0-.42-.015-.63A9.935 9.935 0 0024 4.59z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/twoo.svg b/assets/lib/simple-icons/icons/twoo.svg
index 6dded592..0840bf6a 100644
--- a/assets/lib/simple-icons/icons/twoo.svg
+++ b/assets/lib/simple-icons/icons/twoo.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Twoo icon</title><path d="M10.116 16.877c.064-.054.129-.109.189-.168-1.209 1.176-2.756 1.756-4.291 1.735h-.023c-1.545-.025-3.08-.656-4.245-1.894-.733-.78-1.233-1.708-1.507-2.691v-.007c-.604-2.199-.065-4.674 1.605-6.406 2.346-2.434 6.072-2.492 8.459-.205l1.215 1.275.543.57 4.228 4.484h.018c.045.046.09.076.119.121.855.779 2.162.75 2.986-.105.869-.9.9-2.37.047-3.285-.092-.105-.197-.195-.303-.27l-.24-.166c-.824-.449-1.875-.3-2.58.42-.105.105-.195.226-.27.346-.301.465-.406 1.02-.346 1.561l-1.514-1.529-1.756-1.665c.286-.563.657-1.095 1.114-1.569.105-.105.211-.21.318-.307-.064.055-.129.111-.189.168 1.209-1.176 2.756-1.754 4.291-1.734h.023c1.545.025 3.08.656 4.246 1.895.732.779 1.232 1.707 1.506 2.693v.006c.605 2.197.066 4.676-1.605 6.405-2.346 2.434-6.072 2.494-8.459.205l-1.214-1.286-.543-.581-4.225-4.501-.004-.015c-.016 0-.016-.015-.016-.015-.045-.046-.09-.09-.121-.136-.854-.78-2.16-.765-2.984.105-.87.9-.9 2.37-.045 3.271.09.105.195.18.3.27l.24.15c.825.436 1.876.3 2.58-.436.105-.104.196-.225.271-.345.301-.465.404-1.034.345-1.575l1.515 1.561 1.758 1.771c-.285.564-.657 1.096-1.115 1.569-.104.105-.21.21-.318.306l-.003.004z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Twoo</title><path d="M10.116 16.877c.064-.054.129-.109.189-.168-1.209 1.176-2.756 1.756-4.291 1.735h-.023c-1.545-.025-3.08-.656-4.245-1.894-.733-.78-1.233-1.708-1.507-2.691v-.007c-.604-2.199-.065-4.674 1.605-6.406 2.346-2.434 6.072-2.492 8.459-.205l1.215 1.275.543.57 4.228 4.484h.018c.045.046.09.076.119.121.855.779 2.162.75 2.986-.105.869-.9.9-2.37.047-3.285-.092-.105-.197-.195-.303-.27l-.24-.166c-.824-.449-1.875-.3-2.58.42-.105.105-.195.226-.27.346-.301.465-.406 1.02-.346 1.561l-1.514-1.529-1.756-1.665c.286-.563.657-1.095 1.114-1.569.105-.105.211-.21.318-.307-.064.055-.129.111-.189.168 1.209-1.176 2.756-1.754 4.291-1.734h.023c1.545.025 3.08.656 4.246 1.895.732.779 1.232 1.707 1.506 2.693v.006c.605 2.197.066 4.676-1.605 6.405-2.346 2.434-6.072 2.494-8.459.205l-1.214-1.286-.543-.581-4.225-4.501-.004-.015c-.016 0-.016-.015-.016-.015-.045-.046-.09-.09-.121-.136-.854-.78-2.16-.765-2.984.105-.87.9-.9 2.37-.045 3.271.09.105.195.18.3.27l.24.15c.825.436 1.876.3 2.58-.436.105-.104.196-.225.271-.345.301-.465.404-1.034.345-1.575l1.515 1.561 1.758 1.771c-.285.564-.657 1.096-1.115 1.569-.104.105-.21.21-.318.306l-.003.004z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/typeform.svg b/assets/lib/simple-icons/icons/typeform.svg
new file mode 100644
index 00000000..f022f913
--- /dev/null
+++ b/assets/lib/simple-icons/icons/typeform.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Typeform</title><path d="M15.502 13.035c-.5 0-.756-.411-.756-.917 0-.505.252-.894.756-.894.513 0 .756.407.756.894-.004.515-.261.917-.756.917Zm-4.888-1.81c.292 0 .414.17.414.317 0 .357-.365.514-1.126.536 0-.442.253-.854.712-.854Zm-3.241 1.81c-.473 0-.67-.384-.67-.917 0-.527.202-.894.67-.894.477 0 .702.38.702.894 0 .537-.234.917-.702.917Zm-3.997-2.334h-.738l1.224 2.808c-.234.519-.36.648-.522.648-.171 0-.333-.138-.45-.259l-.324.43c.22.232.522.366.832.366.387 0 .685-.224.856-.626l1.413-3.371h-.725l-.738 2.012-.828-2.008Zm19.553.523c.36 0 .432.246.432.823v1.516H24v-1.914c0-.689-.473-.988-.91-.988-.386 0-.742.241-.94.688a.901.901 0 0 0-.891-.688c-.365 0-.73.232-.927.666v-.626h-.64v2.857h.64v-1.22c0-.617.324-1.114.765-1.114.36 0 .427.246.427.823v1.516h.64l-.005-1.225c0-.617.329-1.114.77-1.114Zm-5.1-.523h-.324v2.857h.639v-1.095c0-.693.306-1.163.76-1.163.118 0 .217.005.325.05l.099-.676c-.081-.009-.153-.018-.225-.018-.45 0-.774.309-.964.707V10.7h-.31Zm-2.327-.045c-.846 0-1.418.644-1.418 1.458 0 .845.58 1.475 1.418 1.475.85 0 1.431-.648 1.431-1.475-.004-.818-.594-1.458-1.431-1.458Zm-4.852 2.38c-.333 0-.581-.17-.685-.515.847-.036 1.675-.242 1.675-.988 0-.43-.423-.872-1.03-.872-.82 0-1.374.666-1.374 1.457 0 .828.545 1.476 1.36 1.476.567 0 .927-.228 1.21-.559l-.31-.42c-.329.335-.531.42-.846.42Zm-3.151-2.38c-.324 0-.648.188-.774.483v-.438h-.64v3.98h.64v-1.422c.135.205.445.34.72.34.85 0 1.3-.631 1.3-1.48-.004-.841-.445-1.463-1.246-1.463Zm-4.483-1.1H0v.622h1.18v3.38h.67v-3.38h1.166v-.622Zm9.502 1.145h-.383v.572h.383v2.285h.639v-2.285h.621v-.572h-.621v-.447c0-.286.117-.385.382-.385.1 0 .19.027.311.068l.144-.537c-.117-.067-.351-.094-.504-.094-.612 0-.972.367-.972 1.002v.393Z"/></svg>
diff --git a/assets/lib/simple-icons/icons/typescript.svg b/assets/lib/simple-icons/icons/typescript.svg
index a99640bc..e8beb740 100644
--- a/assets/lib/simple-icons/icons/typescript.svg
+++ b/assets/lib/simple-icons/icons/typescript.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>TypeScript icon</title><path d="M0 12v12h24V0H0zm19.341-.956c.61.152 1.074.423 1.501.865.221.236.549.666.575.77.008.03-1.036.73-1.668 1.123-.023.015-.115-.084-.217-.236-.31-.45-.633-.644-1.128-.678-.728-.05-1.196.331-1.192.967a.88.88 0 0 0 .102.45c.16.331.458.53 1.39.933 1.719.74 2.454 1.227 2.911 1.92.51.773.625 2.008.278 2.926-.38.998-1.325 1.676-2.655 1.9-.411.073-1.386.062-1.828-.018-.964-.172-1.878-.648-2.442-1.273-.221-.243-.652-.88-.625-.925.011-.016.11-.077.22-.141.108-.061.511-.294.892-.515l.69-.4.145.214c.202.308.643.731.91.872.766.404 1.817.347 2.335-.118a.883.883 0 0 0 .313-.72c0-.278-.035-.4-.18-.61-.186-.266-.567-.49-1.649-.96-1.238-.533-1.771-.864-2.259-1.39a3.165 3.165 0 0 1-.659-1.2c-.091-.339-.114-1.189-.042-1.531.255-1.197 1.158-2.03 2.461-2.278.423-.08 1.406-.05 1.821.053zm-5.634 1.002l.008.983H10.59v8.876H8.38v-8.876H5.258v-.964c0-.534.011-.98.026-.99.012-.016 1.913-.024 4.217-.02l4.195.012z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>TypeScript</title><path d="M1.125 0C.502 0 0 .502 0 1.125v21.75C0 23.498.502 24 1.125 24h21.75c.623 0 1.125-.502 1.125-1.125V1.125C24 .502 23.498 0 22.875 0zm17.363 9.75c.612 0 1.154.037 1.627.111a6.38 6.38 0 0 1 1.306.34v2.458a3.95 3.95 0 0 0-.643-.361 5.093 5.093 0 0 0-.717-.26 5.453 5.453 0 0 0-1.426-.2c-.3 0-.573.028-.819.086a2.1 2.1 0 0 0-.623.242c-.17.104-.3.229-.393.374a.888.888 0 0 0-.14.49c0 .196.053.373.156.529.104.156.252.304.443.444s.423.276.696.41c.273.135.582.274.926.416.47.197.892.407 1.266.628.374.222.695.473.963.753.268.279.472.598.614.957.142.359.214.776.214 1.253 0 .657-.125 1.21-.373 1.656a3.033 3.033 0 0 1-1.012 1.085 4.38 4.38 0 0 1-1.487.596c-.566.12-1.163.18-1.79.18a9.916 9.916 0 0 1-1.84-.164 5.544 5.544 0 0 1-1.512-.493v-2.63a5.033 5.033 0 0 0 3.237 1.2c.333 0 .624-.03.872-.09.249-.06.456-.144.623-.25.166-.108.29-.234.373-.38a1.023 1.023 0 0 0-.074-1.089 2.12 2.12 0 0 0-.537-.5 5.597 5.597 0 0 0-.807-.444 27.72 27.72 0 0 0-1.007-.436c-.918-.383-1.602-.852-2.053-1.405-.45-.553-.676-1.222-.676-2.005 0-.614.123-1.141.369-1.582.246-.441.58-.804 1.004-1.089a4.494 4.494 0 0 1 1.47-.629 7.536 7.536 0 0 1 1.77-.201zm-15.113.188h9.563v2.166H9.506v9.646H6.789v-9.646H3.375z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/typo3.svg b/assets/lib/simple-icons/icons/typo3.svg
index 1addd98f..280bf6b3 100644
--- a/assets/lib/simple-icons/icons/typo3.svg
+++ b/assets/lib/simple-icons/icons/typo3.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>TYPO3 icon</title><path d="M18.08 16.539c-.356.105-.64.144-1.012.144-3.048 0-7.524-10.652-7.524-14.197 0-1.305.31-1.74.745-2.114C6.56.808 2.082 2.177.651 3.917c-.31.436-.497 1.12-.497 1.99C.154 11.442 6.06 24 10.228 24c1.928 0 5.178-3.168 7.852-7.46M16.134 0c3.855 0 7.713.622 7.713 2.798 0 4.415-2.8 9.765-4.23 9.765-2.549 0-5.72-7.09-5.72-10.635C13.897.31 14.518 0 16.134 0"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>TYPO3</title><path d="M18.08 16.539c-.356.105-.64.144-1.012.144-3.048 0-7.524-10.652-7.524-14.197 0-1.305.31-1.74.745-2.114C6.56.808 2.082 2.177.651 3.917c-.31.436-.497 1.12-.497 1.99C.154 11.442 6.06 24 10.228 24c1.928 0 5.178-3.168 7.852-7.46M16.134 0c3.855 0 7.713.622 7.713 2.798 0 4.415-2.8 9.765-4.23 9.765-2.549 0-5.72-7.09-5.72-10.635C13.897.31 14.518 0 16.134 0"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/uber.svg b/assets/lib/simple-icons/icons/uber.svg
index 6e978f64..08e1bbb2 100644
--- a/assets/lib/simple-icons/icons/uber.svg
+++ b/assets/lib/simple-icons/icons/uber.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Uber icon</title><path d="M0 7.97V12.93C0 14.8 1.3 16.03 3 16.03C3.83 16.03 4.56 15.71 5.09 15.16V15.9H6.27V7.97H5.08V12.86C5.08 14.12 4.23 14.97 3.14 14.97C2.03 14.97 1.19 14.14 1.19 12.86V7.97H0M7.44 7.97V15.9H8.57V15.17A2.88 2.88 0 0 0 10.63 16.03A3 3 0 0 0 13.66 13A3 3 0 0 0 10.63 10A2.86 2.86 0 0 0 8.58 10.86V7.97H7.44M17.31 10C15.62 10 14.34 11.38 14.34 13C14.34 14.73 15.68 16 17.41 16C18.47 16 19.33 15.56 19.9 14.79L19.08 14.17C18.65 14.75 18.08 15 17.41 15C16.44 15 15.66 14.32 15.5 13.38H20.2V13C20.2 11.29 18.97 10 17.31 10M23.6 10.08C22.97 10.08 22.5 10.37 22.22 10.83V10.12H21.09V15.9H22.23V12.61C22.23 11.72 22.78 11.14 23.53 11.14H24V10.07H23.6M17.29 11C18.14 11 18.85 11.59 19.04 12.47H15.5C15.73 11.59 16.44 11 17.29 11M10.55 11C11.64 11 12.53 11.9 12.53 13C12.53 14.13 11.64 15 10.55 15A2 2 0 0 1 8.56 13A2 2 0 0 1 10.55 11Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Uber</title><path d="M0 7.97v4.958c0 1.867 1.302 3.101 3 3.101.826 0 1.562-.316 2.094-.87v.736H6.27V7.97H5.082v4.888c0 1.257-.85 2.106-1.947 2.106-1.11 0-1.946-.827-1.946-2.106V7.971H0zm7.44 0v7.925h1.13v-.725c.521.532 1.257.86 2.06.86a3.006 3.006 0 0 0 3.034-3.01 3.01 3.01 0 0 0-3.033-3.024 2.86 2.86 0 0 0-2.049.861V7.971H7.439zm9.869 2.038c-1.687 0-2.965 1.37-2.965 3 0 1.72 1.334 3.01 3.066 3.01 1.053 0 1.913-.463 2.49-1.233l-.826-.611c-.43.577-.996.847-1.664.847-.973 0-1.753-.7-1.912-1.64h4.697v-.373c0-1.72-1.222-3-2.886-3zm6.295.068c-.634 0-1.098.294-1.381.758v-.713h-1.131v5.774h1.142V12.61c0-.894.544-1.47 1.291-1.47H24v-1.065h-.396zm-6.319.928c.85 0 1.564.588 1.756 1.47H15.52c.203-.882.916-1.47 1.765-1.47zm-6.732.012c1.086 0 1.98.883 1.98 2.004a1.993 1.993 0 0 1-1.98 2.001A1.989 1.989 0 0 1 8.56 13.02a1.99 1.99 0 0 1 1.992-2.004z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ubereats.svg b/assets/lib/simple-icons/icons/ubereats.svg
index d109190b..c8f60fe0 100644
--- a/assets/lib/simple-icons/icons/ubereats.svg
+++ b/assets/lib/simple-icons/icons/ubereats.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Uber Eats icon</title><path d="M0 2.75V7.84C0 9.76 1.34 11.03 3.08 11.03C3.93 11.03 4.69 10.7 5.23 10.13V10.89H6.44V2.75H5.22V7.77C5.22 9.06 4.35 9.93 3.22 9.93C2.08 9.93 1.22 9.08 1.22 7.77V2.75H0M7.35 2.75V10.89H8.5V10.14A2.96 2.96 0 0 0 10.63 11.03A3.09 3.09 0 0 0 13.74 7.93A3.09 3.09 0 0 0 10.63 4.83C9.8 4.83 9.06 5.17 8.5 5.71V2.75H7.35M17.26 4.84C15.5 4.84 14.21 6.25 14.21 7.92C14.21 9.69 15.58 11 17.36 11C18.44 11 19.33 10.54 19.92 9.75L19.07 9.12C18.63 9.71 18.05 10 17.36 10C16.36 10 15.56 9.27 15.4 8.31H20.22V7.92C20.22 6.16 18.97 4.84 17.26 4.84M23.45 4.91C22.8 4.91 22.33 5.21 22.04 5.69V4.96H20.87V10.89H22.05V7.5C22.05 6.6 22.61 6 23.37 6H23.86V4.91H23.45M17.23 5.86C18.11 5.86 18.84 6.47 19.04 7.38H15.42C15.63 6.47 16.36 5.86 17.23 5.86M10.55 5.88C11.66 5.88 12.58 6.78 12.58 7.93C12.58 9.07 11.66 10 10.55 10A2.04 2.04 0 0 1 8.5 7.93C8.5 6.78 9.42 5.88 10.55 5.88M0 12.96V21.1H5.72V19.71H1.55V17.69H5.61V16.34H1.55V14.35H5.72V12.96H0M14.56 13.38V15.09H13.4V16.45H14.56V19.65C14.56 20.46 15.13 21.1 16.16 21.1H17.8V19.74H16.66C16.31 19.74 16.09 19.58 16.09 19.26V16.45H17.8V15.09H16.09V13.38H14.56M9.32 14.94C7.53 14.94 6.12 16.34 6.12 18.1C6.12 19.85 7.53 21.25 9.32 21.25C10.04 21.25 10.71 21 11.24 20.56V21.1H12.76V15.09H11.24V15.63A2.96 2.96 0 0 0 9.32 14.94M21.04 14.94C19.45 14.94 18.34 15.59 18.34 16.86C18.34 17.73 18.95 18.3 20.27 18.58L21.72 18.92C22.29 19.03 22.44 19.18 22.44 19.42C22.44 19.79 22 20.03 21.31 20.03C20.44 20.03 19.94 19.83 19.74 19.17H18.21C18.43 20.42 19.36 21.25 21.26 21.25C23 21.25 24 20.42 24 19.26C24 18.44 23.42 17.83 22.19 17.57L20.9 17.3C20.15 17.16 19.91 17 19.91 16.74C19.91 16.38 20.27 16.16 20.94 16.16C21.66 16.16 22.19 16.36 22.34 17H23.86C23.78 15.77 22.87 14.94 21.04 14.94M9.45 16.26C10.46 16.26 11.27 17.07 11.27 18.1S10.46 19.93 9.45 19.93A1.82 1.82 0 0 1 7.62 18.1C7.62 17.07 8.45 16.26 9.45 16.26Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Uber Eats</title><path d="M0 2.8645v4.9972c0 1.8834 1.3315 3.1297 3.0835 3.1297a2.9652 2.9652 0 0 0 2.1502-.876v.7425H6.445V2.8645H5.223v4.9339c0 1.2642-.8696 2.1198-1.9954 2.122-1.1386-.0023-1.997-.834-1.997-2.122V2.8645zm7.3625 0v7.9934h1.163v-.7318a2.9915 2.9915 0 0 0 2.1177.876c1.714.048 3.1295-1.3283 3.1295-3.0429s-1.4155-3.091-3.1295-3.0429a2.9674 2.9674 0 0 0-2.107.876V2.8645zm9.8857 2.0561c-1.6752-.0074-3.0369 1.3492-3.0356 3.0245 0 1.7366 1.3732 3.0373 3.1537 3.0373a3.123 3.123 0 0 0 2.5578-1.2438l-.8495-.6177a2.0498 2.0498 0 0 1-1.7083.8585c-.9763.0126-1.8147-.6915-1.971-1.6553h4.818v-.379c0-1.734-1.254-3.0238-2.9638-3.0245zm6.1632.0667a1.5943 1.5943 0 0 0-1.376.7657v-.7186h-1.163v5.8235h1.1741V7.5465c0-.9023.5581-1.4847 1.3268-1.4847h.4949V4.9886c-.1576.0013-.3186-.0009-.4568-.0013zm-6.2034.944a1.844 1.844 0 0 1 1.8337 1.486H15.424a1.844 1.844 0 0 1 1.784-1.486zm-6.6589.0056c1.1223-.0084 2.0365.8992 2.0364 2.0215-.0026 1.1203-.914 2.0258-2.0343 2.021a2.0151 2.0151 0 0 1-1.4159-.5987A2.0152 2.0152 0 0 1 8.55 7.9592a2.0152 2.0152 0 0 1 .5838-1.422 2.0152 2.0152 0 0 1 1.4153-.6003zM0 12.9864v7.9716h5.7222v-1.3666H1.5458v-1.971h4.0647v-1.314H1.5458v-1.9556h4.1764v-1.3644zm14.5608.4097v1.6861h-1.1519v1.338h1.1545v3.143c0 .7927.5712 1.4209 1.6005 1.4209h1.6425L17.8 19.646h-1.1412c-.3482 0-.5714-.1509-.5714-.464v-2.7683H17.8v-1.3316h-1.7062v-1.686zm-5.2974 1.5275c-1.7348-.0103-3.141 1.4035-3.1214 3.1382.0196 1.7346 1.4575 3.1163 3.1915 3.0668a2.9915 2.9915 0 0 0 1.912-.6655v.532h1.5175v-5.9129h-1.509v.5257a3.0047 3.0047 0 0 0-1.9205-.6835c-.0244-.0007-.0492-.0006-.0701-.0008zm11.771.0077c-1.5855 0-2.7002.6437-2.7002 1.8854 0 .8607.6132 1.4213 1.936 1.695l1.4478.3286c.5694.1095.7224.2585.7224.4906 0 .3701-.438.6022-1.1279.6022-.876 0-1.3774-.1907-1.5723-.8477h-1.533c.219 1.2307 1.1563 2.05 3.0484 2.05h.0022c1.752 0 2.7422-.819 2.7422-1.9534 0-.8059-.5847-1.4084-1.8089-1.6668l-1.2943-.2605c-.7511-.1358-.988-.2738-.988-.5454 0-.357.3616-.5757 1.0295-.5757.7227 0 1.2527.1925 1.406.8473h1.5175c-.0854-1.2286-.9899-2.0497-2.8273-2.0497zM9.467 16.1815c1.0092.0096 1.8188.8369 1.8067 1.8461.0014 1.0046-.8198 1.816-1.8243 1.8025-1.0075-.0048-1.8203-.8256-1.8155-1.833.0048-1.0076.8255-1.8204 1.833-1.8156z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ubiquiti.svg b/assets/lib/simple-icons/icons/ubiquiti.svg
new file mode 100644
index 00000000..89817246
--- /dev/null
+++ b/assets/lib/simple-icons/icons/ubiquiti.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Ubiquiti</title><path d="M5.331 3.987H4.012v-1.32h1.32zm7.605 16.001c-1.78-.08-3.15-.532-4.21-1.185.718 3.118 3.405 4.65 3.535 4.723l.792.437c6.063-.405 9.611-4.318 9.611-9.436v-1.109c-1.441 4.7-4.795 6.793-9.728 6.57M4.006 9.605h1.332v2.94h1.336V7.627H8.01v9.612C8.009 21.8 12 24 12 24c-6.705 0-10.664-4.065-10.664-9.473V3.65H2.67v7.274h1.336zM2.67 1.334H1.336V0H2.67zm2.661 6.953h-1.32v-1.32h1.32zm1.334-1.98h-1.32v-1.32h1.32zm1.343-1.66H6.674v-1.32h1.335zM6.674 2.654H5.338v-1.32h1.336zM22.147 13.26l.517-1.688V.015c-6.045 0-6.674 2.317-6.674 4.531V17.24c0 .657-.064 1.354-.197 2.037 3.205-.583 5.296-2.565 6.354-6.016Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ubisoft.svg b/assets/lib/simple-icons/icons/ubisoft.svg
index 5a5d2ee5..c1c69620 100644
--- a/assets/lib/simple-icons/icons/ubisoft.svg
+++ b/assets/lib/simple-icons/icons/ubisoft.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Ubisoft icon</title><path d="M23.561 11.989C23.301-.304 6.953-4.89.655 6.634c.282.206.661.477.943.672a11.748 11.748 0 0 0-.976 3.068 11.886 11.886 0 0 0-.184 2.071c0 6.374 5.182 11.556 11.567 11.556s11.556-5.171 11.556-11.556v-.455zM3.29 14.048c-.152 1.247-.054 1.637-.054 1.789l-.282.098c-.108-.206-.369-.932-.488-1.908-.304-3.718 2.233-7.068 6.103-7.697 3.545-.52 6.938 1.68 7.729 4.759l-.282.098c-.087-.087-.228-.336-.77-.878-4.282-4.282-11.003-2.32-11.957 3.74zm11.003 2.082a3.145 3.145 0 0 1-2.591 1.355 3.151 3.151 0 0 1-3.155-3.155 3.159 3.159 0 0 1 2.927-3.144c1.019-.043 1.973.51 2.417 1.398a2.58 2.58 0 0 1-.455 2.949c.293.206.575.401.856.596zm6.58.119c-1.669 3.783-5.106 5.767-8.77 5.713-7.035-.347-9.084-8.466-4.38-11.393l.206.206c-.076.108-.358.325-.791 1.182-.51 1.041-.672 2.081-.607 2.732.369 5.67 8.315 6.83 11.046 1.214C21.057 8.217 11.821.401 3.625 6.374l-.184-.184c2.157-3.382 6.374-4.889 10.396-3.881 6.147 1.55 9.453 7.957 7.035 13.941z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Ubisoft</title><path d="M23.561 11.988C23.301-.304 6.954-4.89.656 6.634c.282.206.661.477.943.672a11.747 11.747 0 00-.976 3.067 11.885 11.885 0 00-.184 2.071C.439 18.818 5.621 24 12.005 24c6.385 0 11.556-5.17 11.556-11.556v-.455zm-20.27 2.06c-.152 1.246-.054 1.636-.054 1.788l-.282.098c-.108-.206-.37-.932-.488-1.908C2.163 10.308 4.7 6.96 8.57 6.33c3.544-.52 6.937 1.68 7.728 4.758l-.282.098c-.087-.087-.228-.336-.77-.878-4.281-4.281-11.002-2.32-11.956 3.74zm11.002 2.081a3.145 3.145 0 01-2.59 1.355 3.15 3.15 0 01-3.155-3.155 3.159 3.159 0 012.927-3.144c1.018-.043 1.972.51 2.416 1.398a2.58 2.58 0 01-.455 2.95c.293.205.575.4.856.595zm6.58.12c-1.669 3.782-5.106 5.766-8.77 5.712-7.034-.347-9.083-8.466-4.38-11.393l.207.206c-.076.108-.358.325-.791 1.182-.51 1.041-.672 2.081-.607 2.732.369 5.67 8.314 6.83 11.045 1.214C21.057 8.217 11.822.401 3.626 6.374l-.184-.184C5.599 2.808 9.816 1.3 13.837 2.309c6.147 1.55 9.453 7.956 7.035 13.94z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ublockorigin.svg b/assets/lib/simple-icons/icons/ublockorigin.svg
index 0cf35f73..e4470ba5 100644
--- a/assets/lib/simple-icons/icons/ublockorigin.svg
+++ b/assets/lib/simple-icons/icons/ublockorigin.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>uBlock Origin icon</title><path d="M12 0C7.502 3 6.002 3 1.5 3c0 15.002 0 15.002 10.5 21 10.5-5.998 10.5-5.998 10.5-21-4.498 0-5.998 0-10.5-3zM5.956 7.472h1.512v4.536c0 1.322.19 1.508 1.512 1.508 1.323 0 1.512-.19 1.512-1.512V7.472H12v.767a3.75 3.75 0 012.268-.767 3.79 3.79 0 013.776 3.78 3.79 3.79 0 01-3.78 3.775 3.765 3.764 0 01-2.684-1.133c-.464.77-1.315 1.133-2.6 1.133-2.079 0-3.024-.944-3.024-3.023zm8.308 1.512A2.254 2.254 0 0012 11.252a2.254 2.254 0 002.268 2.264 2.254 2.254 0 002.264-2.268 2.254 2.254 0 00-2.268-2.264z" /></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>uBlock Origin</title><path d="M12 0C7.502 3 6.002 3 1.5 3c0 15.002 0 15.002 10.5 21 10.5-5.998 10.5-5.998 10.5-21-4.498 0-5.998 0-10.5-3zM5.956 7.472h1.512v4.536c0 1.322.19 1.508 1.512 1.508 1.323 0 1.512-.19 1.512-1.512V7.472H12v.767a3.75 3.75 0 012.268-.767 3.79 3.79 0 013.776 3.78 3.79 3.79 0 01-3.78 3.775 3.765 3.764 0 01-2.684-1.133c-.464.77-1.315 1.133-2.6 1.133-2.079 0-3.024-.944-3.024-3.023zm8.308 1.512A2.254 2.254 0 0012 11.252a2.254 2.254 0 002.268 2.264 2.254 2.254 0 002.264-2.268 2.254 2.254 0 00-2.268-2.264z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ubuntu.svg b/assets/lib/simple-icons/icons/ubuntu.svg
index a7092e60..a2917063 100644
--- a/assets/lib/simple-icons/icons/ubuntu.svg
+++ b/assets/lib/simple-icons/icons/ubuntu.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Ubuntu icon</title><path d="M12 0c6.623 0 12 5.377 12 12s-5.377 12-12 12S0 18.623 0 12 5.377 0 12 0zm3.279 17.68c-.766.441-1.029 1.422-.586 2.189.441.765 1.422 1.028 2.188.584.766-.441 1.029-1.422.585-2.189-.441-.765-1.421-1.028-2.187-.584zm-3.279-1c-.705 0-1.373-.157-1.971-.435L8.916 18.24c.93.459 1.978.721 3.084.721.646 0 1.268-.091 1.86-.256.104-.643.485-1.234 1.095-1.587.609-.351 1.313-.386 1.92-.156 1.186-1.163 1.957-2.749 2.07-4.515l-2.285-.033c-.21 2.391-2.215 4.266-4.66 4.266zM7.32 12c0-1.583.787-2.981 1.99-3.83L8.14 6.209c-1.404.93-2.445 2.369-2.881 4.035.506.404.83 1.034.83 1.74 0 .704-.324 1.319-.83 1.739.436 1.665 1.477 3.104 2.881 4.034l1.17-1.965C8.107 14.97 7.32 13.574 7.32 12zm-3.48-1.602c-.885 0-1.602.717-1.602 1.602s.717 1.602 1.602 1.602S5.441 12.885 5.441 12s-.716-1.602-1.601-1.602zM12 7.32c2.445 0 4.45 1.875 4.66 4.265l2.285-.034c-.113-1.765-.885-3.35-2.07-4.516-.609.232-1.313.194-1.92-.154-.609-.352-.99-.945-1.095-1.591-.594-.16-1.214-.25-1.86-.25-1.11 0-2.155.26-3.084.72l1.113 1.995c.6-.279 1.268-.435 1.971-.435zm3.279-1.001c.765.442 1.746.181 2.189-.585.441-.765.181-1.746-.588-2.19-.765-.44-1.746-.179-2.189.589-.441.764-.18 1.744.588 2.186z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Ubuntu</title><path d="M12 0c6.623 0 12 5.377 12 12s-5.377 12-12 12S0 18.623 0 12 5.377 0 12 0zm3.279 17.68c-.766.441-1.029 1.422-.586 2.189.441.765 1.422 1.028 2.188.584.766-.441 1.029-1.422.585-2.189-.441-.765-1.421-1.028-2.187-.584zm-3.279-1c-.705 0-1.373-.157-1.971-.435L8.916 18.24c.93.459 1.978.721 3.084.721.646 0 1.268-.091 1.86-.256.104-.643.485-1.234 1.095-1.587.609-.351 1.313-.386 1.92-.156 1.186-1.163 1.957-2.749 2.07-4.515l-2.285-.033c-.21 2.391-2.215 4.266-4.66 4.266zM7.32 12c0-1.583.787-2.981 1.99-3.83L8.14 6.209c-1.404.93-2.445 2.369-2.881 4.035.506.404.83 1.034.83 1.74 0 .704-.324 1.319-.83 1.739.436 1.665 1.477 3.104 2.881 4.034l1.17-1.965C8.107 14.97 7.32 13.574 7.32 12zm-3.48-1.602c-.885 0-1.602.717-1.602 1.602s.717 1.602 1.602 1.602S5.441 12.885 5.441 12s-.716-1.602-1.601-1.602zM12 7.32c2.445 0 4.45 1.875 4.66 4.265l2.285-.034c-.113-1.765-.885-3.35-2.07-4.516-.609.232-1.313.194-1.92-.154-.609-.352-.99-.945-1.095-1.591-.594-.16-1.214-.25-1.86-.25-1.11 0-2.155.26-3.084.72l1.113 1.995c.6-.279 1.268-.435 1.971-.435zm3.279-1.001c.765.442 1.746.181 2.189-.585.441-.765.181-1.746-.588-2.19-.765-.44-1.746-.179-2.189.589-.441.764-.18 1.744.588 2.186z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/udacity.svg b/assets/lib/simple-icons/icons/udacity.svg
index 956d66f0..d1c2f1fe 100644
--- a/assets/lib/simple-icons/icons/udacity.svg
+++ b/assets/lib/simple-icons/icons/udacity.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Udacity icon</title><path d="M8.01.138L0 4.68v10.458c-.015 4.803 3.915 8.71 8.775 8.725 1.604.004 3.115-.418 4.414-1.154l6.487-3.686c2.561-1.306 4.313-3.946 4.323-6.991V1.096L22.409.18l-6.503 3.631v11.373c-.003.482-.025.836-.153 1.435-.216.915-.521 1.561-.574 1.665-.511-.03-1.546-.314-2.386-.81-.42-.24-.914-.601-1.364-1.021-.3-.285-.556-.615-.78-.945-.24-.345-.435-.704-.585-1.079-.165-.391-.284-.78-.375-1.185-.09-.421-.104-.855-.104-1.275L9.6 1.051 8.01.143V.138zm3.687 21.583c-.436.179-.889.316-1.35.41-.477.094-.916.141-1.403.141-.488 0-.978-.053-1.452-.151-.461-.092-.915-.234-1.35-.417-.424-.179-.836-.404-1.219-.659-.99-.691-1.5-1.291-1.941-1.936-.26-.39-.48-.795-.66-1.215-.183-.435-.322-.886-.416-1.335-.09-.465-.104-.961-.104-1.439V5.58l6-3.621V11.97c0 3.806 2.819 6.979 6.45 7.747-.135.165-.24.331-.391.48-.33.322-.675.624-1.064.877-.375.257-.645.465-1.065.644l-.035.003zm10.405-8.408c-.087.404-.211.803-.375 1.186-.439.955-1.148 1.77-1.74 2.294-1.216 1.101-2.725 1.44-2.898 1.44.362-.948.608-1.965.611-3.039V4.725L22.204 2l.003 10.009c0 .431-.018.879-.105 1.296v.008z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Udacity</title><path d="M8 0L0 4.8v9.6C0 20.8 4.8 24 8.8 24c1.348 0 2.786-.362 4.1-1.088l6.303-3.633C21.687 18.155 24 15.64 24 11.2V.8L22.4 0 16 4v10.4c0 1.6-.3 2.898-.785 3.948-2.002-.257-5.615-1.597-5.615-7.15V.802zm0 1.76v9.44c0 5.342 3.346 7.9 6.313 8.597-1.618 1.99-4.025 2.603-5.512 2.603-2.4 0-7.2-1.6-7.2-8V5.6zm14.4.04v9.4c0 5.45-3.482 6.84-5.504 7.132.446-1.14.704-2.45.704-3.932V4.8z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/udemy.svg b/assets/lib/simple-icons/icons/udemy.svg
index 3a75935b..efa25d64 100644
--- a/assets/lib/simple-icons/icons/udemy.svg
+++ b/assets/lib/simple-icons/icons/udemy.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Udemy icon</title><path d="M23.58 13.38a.66.66 0 0 0-.28-.14c-.6.61-1.35 1.25-2 1.68-.31.2-.7.3-.95.3-.59 0-.84-.55-.91-1.44a54.8 54.8 0 0 1-.17-4.83c0-2.26-.52-3.8-1.88-3.92l-.18-.01c-.83 0-1.24.43-1.77 1.52-.46.94-1.17 2.3-2.48 4.9a34.72 34.72 0 0 1-3.5 5.58c-.31.38-.55.64-.78.8a.8.8 0 0 1-.44.14c-.43 0-.75-.36-.85-1.21a5.46 5.46 0 0 1-.04-.69c0-1.75.66-4.6 1.8-8.78.83-3.05.48-5.13-1.34-5.13h-.03c-.41 0-.75.16-1.08.42-.33.25-.65.81-.96 1.56-.34.84-2.42 5.03-5.74 7.2-.04.81.42 1.63 1.37 1.73.85.08 1.46-.28 2.24-.81l-.16.73a31.56 31.56 0 0 0-.5 2.6c-.46 4.2 1.47 6.27 3.74 6.27.38 0 .76-.05 1.13-.15 2.5-.63 4.9-3.51 7.75-10.13a18.8 18.8 0 0 0-.01 2.02c.19 3.8 1.68 4.93 3.8 4.93 1.6 0 3.09-.83 3.85-1.87a3.7 3.7 0 0 0 .79-2.19c-.02-.49-.17-.88-.42-1.08z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Udemy</title><path d="M12 0L5.81 3.573v3.574l6.189-3.574 6.191 3.574V3.573zM5.81 10.148v8.144c0 1.85.589 3.243 1.741 4.234S10.177 24 11.973 24s3.269-.482 4.448-1.474c1.179-.991 1.768-2.439 1.768-4.314v-8.064h-3.242v7.85c0 2.036-1.509 3.055-2.948 3.055-1.428 0-2.947-.991-2.947-3.027v-7.878z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ufc.svg b/assets/lib/simple-icons/icons/ufc.svg
new file mode 100644
index 00000000..639f5adf
--- /dev/null
+++ b/assets/lib/simple-icons/icons/ufc.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>UFC</title><path d="M6.308 7.843h2.797s-1.86 6.639-1.951 6.998c-.177.69-.353 1.316-2.043 1.316-2.037 0-3.22-.007-3.777 0-.698.007-1.521-.633-1.296-1.464l1.91-6.85H4.8S3.2 13.553 3.166 13.7c-.029.148-.19.557.698.564.64.014.69-.155.803-.564.268-.922 1.64-5.857 1.64-5.857zm10.272 0l-.507 1.824H9.986l.507-1.824zm-8.404 8.314l1.459-5.244h6.086l-.507 1.823h-3.262l-.95 3.421zm11.47-5.385c-.26.957-.493 1.774-.754 2.738-.05.17-.162.416-.127.57.078.367 1.29.226 1.726.226h1.945c-.155.612-.33 1.21-.5 1.81h-4.63c-.676-.064-1.557-.353-1.472-1.226.028-.274.156-.584.24-.887a1189.7 1189.7 0 001.24-4.463c.176-.648.317-1.197.83-1.457.333-.17.861-.218 1.255-.24H24c-.162.606-.331 1.211-.5 1.81h-2.643c-.317 0-.669-.036-.845.084-.19.141-.295.775-.366 1.035z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/uikit.svg b/assets/lib/simple-icons/icons/uikit.svg
index 3122d678..2020085e 100755..100644
--- a/assets/lib/simple-icons/icons/uikit.svg
+++ b/assets/lib/simple-icons/icons/uikit.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>UIkit icon</title><path d="M17.697 3.292l-4.109 2.489 4.738 2.696v7.077l-6.365 3.538-6.258-3.538v-5.485L1.596 7.956V18l10.219 6 10.589-6V6.002l-4.707-2.71zm-1.904-.989L11.813 0 7.665 2.568l4.032 2.218 4.096-2.483z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>UIkit</title><path d="M17.697 3.292l-4.109 2.489 4.738 2.696v7.077l-6.365 3.538-6.258-3.538v-5.485L1.596 7.956V18l10.219 6 10.589-6V6.002l-4.707-2.71zm-1.904-.989L11.813 0 7.665 2.568l4.032 2.218 4.096-2.483z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ulule.svg b/assets/lib/simple-icons/icons/ulule.svg
index 1809e7cc..5cc0a51d 100644
--- a/assets/lib/simple-icons/icons/ulule.svg
+++ b/assets/lib/simple-icons/icons/ulule.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Ulule icon</title><path d="M12 0A11.992 11.992 0 001.676 5.884l-.822-.822a.499.499 0 00-.707 0A.5.5 0 000 5.416V12c0 6.627 5.372 12 12 12 6.627 0 12-5.373 12-12V5.416a.5.5 0 00-.854-.354l-.823.822A11.992 11.992 0 0012 0zM6.814 7.626a5.526 5.526 0 014.971 3.095 2.739 2.739 0 00.13 3.754.122.122 0 00.17 0 2.738 2.738 0 00.13-3.754 5.526 5.526 0 015.411-3.077c2.702.214 4.876 2.41 5.064 5.113a5.528 5.528 0 01-10.419 2.944.304.304 0 00-.542 0 5.528 5.528 0 01-10.42-2.944c.189-2.703 2.363-4.9 5.064-5.113.148-.012.295-.018.44-.018zm-.42 1.22a3.501 3.496 0 00-.235.008c-.013.16-.116.262-.248.388l-.052.05c-.117.113-.335.323-.333.7a.875.875 0 00.856.858c.485-.003.88-.383.882-.85.002-.325-.137-.523-.347-.722-.143-.13-.289-.281-.308-.422a3.501 3.496 0 00-.214-.01zm11.211 0a3.501 3.495 0 00-.235.008c-.013.16-.117.262-.249.388l-.051.05c-.118.113-.336.323-.334.7a.875.875 0 00.856.858c.485-.003.88-.383.882-.85.002-.325-.136-.523-.347-.723-.143-.13-.288-.28-.307-.42a3.501 3.495 0 00-.215-.011zM6.093 8.86a3.501 3.496 0 00-3.2 3.48 3.501 3.496 0 003.502 3.496 3.501 3.496 0 003.5-3.496 3.501 3.496 0 00-3.033-3.46 2.393 2.393 0 11-2.86 2.362A2.386 2.386 0 016.093 8.86zm11.816 0a2.386 2.386 0 012.088 2.382 2.391 2.391 0 11-4.784-.033 2.393 2.393 0 011.92-2.328 3.501 3.495 0 00-3.03 3.46 3.501 3.495 0 003.502 3.495 3.501 3.495 0 003.501-3.496 3.501 3.495 0 00-3.197-3.48Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Ulule</title><path d="M12 0A11.992 11.992 0 001.676 5.884l-.822-.822a.499.499 0 00-.707 0A.5.5 0 000 5.416V12c0 6.627 5.372 12 12 12 6.627 0 12-5.373 12-12V5.416a.5.5 0 00-.854-.354l-.823.822A11.992 11.992 0 0012 0zM6.814 7.626a5.526 5.526 0 014.971 3.095 2.739 2.739 0 00.13 3.754.122.122 0 00.17 0 2.738 2.738 0 00.13-3.754 5.526 5.526 0 015.411-3.077c2.702.214 4.876 2.41 5.064 5.113a5.528 5.528 0 01-10.419 2.944.304.304 0 00-.542 0 5.528 5.528 0 01-10.42-2.944c.189-2.703 2.363-4.9 5.064-5.113.148-.012.295-.018.44-.018zm-.42 1.22a3.501 3.496 0 00-.235.008c-.013.16-.116.262-.248.388l-.052.05c-.117.113-.335.323-.333.7a.875.875 0 00.856.858c.485-.003.88-.383.882-.85.002-.325-.137-.523-.347-.722-.143-.13-.289-.281-.308-.422a3.501 3.496 0 00-.214-.01zm11.211 0a3.501 3.495 0 00-.235.008c-.013.16-.117.262-.249.388l-.051.05c-.118.113-.336.323-.334.7a.875.875 0 00.856.858c.485-.003.88-.383.882-.85.002-.325-.136-.523-.347-.723-.143-.13-.288-.28-.307-.42a3.501 3.495 0 00-.215-.011zM6.093 8.86a3.501 3.496 0 00-3.2 3.48 3.501 3.496 0 003.502 3.496 3.501 3.496 0 003.5-3.496 3.501 3.496 0 00-3.033-3.46 2.393 2.393 0 11-2.86 2.362A2.386 2.386 0 016.093 8.86zm11.816 0a2.386 2.386 0 012.088 2.382 2.391 2.391 0 11-4.784-.033 2.393 2.393 0 011.92-2.328 3.501 3.495 0 00-3.03 3.46 3.501 3.495 0 003.502 3.495 3.501 3.495 0 003.501-3.496 3.501 3.495 0 00-3.197-3.48Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/umbraco.svg b/assets/lib/simple-icons/icons/umbraco.svg
index a2265fe1..582c432a 100644
--- a/assets/lib/simple-icons/icons/umbraco.svg
+++ b/assets/lib/simple-icons/icons/umbraco.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Umbraco icon</title><path d="M0 12C0 5.522 5.363.319 12 .319S24 5.522 24 12c0 6.476-5.363 11.681-12 11.681S0 18.477 0 12zm11.734 3.98c-1.168 0-2.123-.104-2.76-.211-.744-.158-1.223-.584-1.541-1.168-.266-.586-.424-1.539-.371-2.814 0-.689.053-1.327.104-1.965.108-.636.16-1.167.267-1.594l.105-.424v-.052c0-.105-.105-.213-.212-.213l-1.54-.212h-.052c-.105 0-.213.105-.266.16 0 .104-.053.159-.104.371-.108.478-.161.902-.267 1.486-.109.685-.163 1.378-.159 2.071 0 0-.053.159 0 1.434s.266 2.283.69 3.08c.425.742 1.116 1.326 2.124 1.645 1.01.32 2.389.479 4.142.479h.213c1.753 0 3.132-.158 4.14-.479 1.01-.318 1.701-.902 2.126-1.645.425-.795.638-1.805.69-3.08.053-1.275 0-1.434 0-1.434 0-.743-.104-1.435-.16-2.069-.105-.638-.158-1.063-.266-1.487-.053-.212-.053-.319-.105-.371 0-.107-.105-.16-.266-.16h-.053l-1.54.212c-.105 0-.213.107-.213.213v.052l.106.424c.106.427.158.957.266 1.593.105.639.105 1.275.105 1.965 0 1.275-.104 2.177-.371 2.814-.266.586-.795 1.01-1.539 1.168-.639.16-1.594.213-2.762.213h-.531v-.002z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Umbraco</title><path d="M0 11.982A12 12 0 1 1 12 24 12 12 0 0 1 0 11.982zm11.756 4.11a11.856 11.856 0 0 1-2.773-.25 2.12 2.12 0 0 1-1.514-1.218q-.41-.943-.396-2.895a18.419 18.419 0 0 1 .127-2.04q.118-.988.236-1.629l.082-.425a.201.201 0 0 0 0-.038.244.244 0 0 0-.201-.236l-1.544-.246H5.74a.243.243 0 0 0-.235.189 6.517 6.517 0 0 0-.089.409c-.088.455-.17.9-.26 1.548a19.99 19.99 0 0 0-.176 2.12 11.165 11.165 0 0 0 0 1.486q.05 1.977.675 3.155.626 1.179 2.106 1.695 1.482.517 4.135.506h.22q2.655.01 4.134-.506 1.478-.518 2.1-1.695.623-1.178.678-3.147a11.165 11.165 0 0 0 0-1.485 19.99 19.99 0 0 0-.176-2.121 30.014 30.014 0 0 0-.26-1.548 6.724 6.724 0 0 0-.088-.41.243.243 0 0 0-.236-.188h-.04l-1.548.242a.236.236 0 0 0-.203.236.201.201 0 0 0 0 .037l.081.426q.118.643.236 1.63a18.709 18.709 0 0 1 .126 2.039q.019 1.95-.396 2.892a2.12 2.12 0 0 1-1.502 1.22 11.82 11.82 0 0 1-2.769.247Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/unacademy.svg b/assets/lib/simple-icons/icons/unacademy.svg
new file mode 100644
index 00000000..e5152b6a
--- /dev/null
+++ b/assets/lib/simple-icons/icons/unacademy.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Unacademy</title><path d="M.715 2.188a.696.696 0 00-.711.713H0l.002.027c-.01.306.03.658.123 1.081.905 5.546 5.875 9.788 11.87 9.788 5.935 0 10.864-4.157 11.84-9.622.126-.512.177-.921.162-1.273a.696.696 0 00-.713-.714zm11.243 13.82c-2.967 0-5.432 2.079-5.92 4.81a2.287 2.287 0 00-.08.638c0 .201.15.356.355.356h11.285a.348.348 0 00.356-.356h.002v-.014a2.21 2.21 0 00-.063-.54c-.453-2.774-2.938-4.894-5.935-4.894z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/underarmour.svg b/assets/lib/simple-icons/icons/underarmour.svg
new file mode 100644
index 00000000..c247a342
--- /dev/null
+++ b/assets/lib/simple-icons/icons/underarmour.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Under Armour</title><path d="M15.954 12c-.089.066-.195.142-.324.233-.826.585-2.023.985-3.58.985h-.104c-1.556 0-2.755-.4-3.58-.985A36.43 36.43 0 018.042 12c.09-.067.196-.143.324-.234.825-.584 2.024-.985 3.58-.985h.104c1.557 0 2.756.401 3.58.985.129.09.235.167.325.234M24 7.181s-.709-.541-2.95-1.365c-1.968-.721-3.452-.883-3.452-.883l.006 4.243c0 .598-.162 1.143-.618 1.765-1.672-.61-3.254-.985-4.981-.985-1.728 0-3.308.375-4.98.985-.457-.619-.62-1.168-.62-1.765l.007-4.243s-1.494.16-3.463.883C.709 6.642 0 7.181 0 7.181c.093 1.926 1.78 3.638 4.435 4.82C1.777 13.18.09 14.887 0 16.818c0 0 .709.54 2.949 1.365 1.968.721 3.453.883 3.453.883l-.007-4.244c0-.597.164-1.143.619-1.764 1.672.61 3.252.983 4.98.983 1.727 0 3.309-.374 4.98-.983.457.62.62 1.167.62 1.764l-.006 4.244s1.484-.16 3.452-.883c2.241-.826 2.95-1.365 2.95-1.365-.093-1.927-1.78-3.64-4.435-4.819 2.657-1.182 4.343-2.888 4.435-4.82"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/underscoredotjs.svg b/assets/lib/simple-icons/icons/underscoredotjs.svg
new file mode 100644
index 00000000..5d5ba717
--- /dev/null
+++ b/assets/lib/simple-icons/icons/underscoredotjs.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Underscore.js</title><path d="M13.704 9.96a1.244 1.244 0 0 0-.3.047 1.016 1.016 0 0 0-.696.586c-.074.16-.08.202-.08.613 0 .413.006.453.08.61a1.047 1.047 0 0 0 .478.508c.158.076.204.085.507.085.452 0 .564-.025.564-.125 0-.076-.003-.076-.143-.052-.277.045-.652.027-.8-.04-.286-.13-.476-.424-.512-.798-.061-.597.155-1.057.579-1.214.183-.067.545-.067.752.003.133.045.167.05.188.015.067-.107-.005-.155-.304-.21a1.545 1.545 0 0 0-.313-.026zm-2.227.01a.692.692 0 0 0-.16.017.765.765 0 0 0-.469.358.745.745 0 0 0-.033.244c0 .314.142.46.646.653.512.2.603.28.603.55 0 .42-.515.59-1.213.4-.064-.016-.07-.011-.062.068.01.08.026.093.178.125.242.05.634.047.817-.005.182-.055.362-.2.42-.34a.835.835 0 0 0 .042-.277c0-.3-.14-.453-.562-.615-.55-.212-.687-.316-.693-.537a.4.4 0 0 1 .216-.403c.116-.066.173-.08.354-.08.116 0 .296.027.393.056.183.055.228.043.23-.064 0-.074-.43-.154-.706-.15zm4.233 0a1.044 1.044 0 0 0-.226.02c-.507.106-.8.55-.8 1.201 0 .453.142.817.4 1.024.205.16.326.196.68.196.258-.004.329-.016.457-.078.383-.188.593-.59.593-1.14 0-.549-.216-.957-.593-1.13a1.39 1.39 0 0 0-.51-.094zm7.536.001a1.027 1.027 0 0 0-.257.026.707.707 0 0 0-.41.307.78.78 0 0 0 0 .563c.07.13.263.252.64.391.48.182.629.36.543.645-.069.23-.32.37-.657.37a2.087 2.087 0 0 1-.527-.076c-.094-.02-.1-.018-.1.054 0 .12.155.16.61.16.354 0 .388-.007.537-.086a.605.605 0 0 0 .29-.793c-.08-.177-.229-.277-.677-.45-.426-.162-.533-.262-.533-.5 0-.194.07-.303.248-.395.152-.08.48-.08.71-.003.16.055.166.055.206 0 .061-.085.052-.097-.12-.15a1.907 1.907 0 0 0-.503-.063Zm-18.367.04v2.39l.48-.013c.423-.012.5-.02.666-.09.48-.196.67-.559.643-1.214-.02-.506-.17-.77-.535-.95-.2-.1-.204-.1-.728-.11Zm4.08 0v2.382h.152V11.36h.593l.304.517c.296.509.305.518.405.518h.1l-.097-.176a18.403 18.403 0 0 0-.32-.537l-.216-.362.15-.076a.64.64 0 0 0 .335-.737c-.049-.204-.11-.293-.277-.39-.133-.08-.16-.08-.633-.09zm-8.958.01.009.903c.01.876.013.912.08 1.05.157.32.463.472.888.442.37-.024.583-.155.733-.449.07-.134.075-.158.083-1.043l.013-.904h-.19v.843c0 .52-.012.892-.032.968-.05.178-.254.362-.454.41-.31.077-.653-.017-.8-.217-.134-.18-.144-.264-.144-1.155v-.85H.095Zm2.44 0v2.373h.152l.005-1.054.01-1.056.7 1.052c.637.96.71 1.058.786 1.058h.083V10.02h-.154v2.084l-.693-1.04c-.67-1.014-.695-1.043-.79-1.046Zm4.657 0v2.373h1.31v-.152H7.251l.007-.513.01-.508.54-.009.54-.007v-.152h-1.1l.01-.45.01-.447.572-.008c.544-.007.568-.01.568-.067 0-.06-.02-.06-.653-.06zm10.173 0v2.373h.152V11.36h.602l.3.517c.29.5.302.516.4.518.05 0 .097-.005.097-.018 0-.008-.14-.25-.307-.535a5.972 5.972 0 0 1-.298-.525 1.248 1.248 0 0 1 .133-.073c.234-.12.35-.313.35-.594a.6.6 0 0 0-.453-.6 3.688 3.688 0 0 0-.542-.03zm1.947 0v2.373h1.31v-.152h-1.126v-1.037h1.067v-.152h-1.067v-.912h.564c.542 0 .563-.003.563-.06 0-.058-.02-.06-.653-.06zm2.59 0v1.264c0 1.079-.008 1.283-.048 1.368-.066.137-.17.183-.4.177-.172-.004-.193.003-.193.054 0 .084.133.13.33.11.206-.02.334-.097.413-.25.06-.12.064-.17.073-1.427l.01-1.297h-.091zm-12.7.11.33.021c.18.013.373.037.432.055.325.097.44.54.21.8-.129.142-.31.2-.674.2h-.295v-.538zm-3.885.013a4.267 4.267 0 0 1 .376.03c.43.047.667.197.803.498.061.133.07.204.07.52 0 .34-.006.377-.085.54a1.008 1.008 0 0 1-.21.28c-.182.16-.35.208-.775.222l-.375.016v-1.034c0-.57.01-1.043.022-1.052.013-.015.077-.02.174-.02zm12.387 0c.09 0 .213.01.346.026.295.034.432.107.503.26.12.263.036.556-.196.69-.11.06-.175.072-.483.081l-.36.012v-.515c0-.282.01-.526.023-.536.012-.013.073-.02.165-.018zm-1.858 0a1.197 1.197 0 0 1 .334.044.873.873 0 0 1 .458.472c.058.14.067.23.067.532 0 .401-.045.573-.21.79-.21.274-.703.36-1.06.188-.334-.16-.462-.44-.46-.993 0-.288.014-.38.07-.523.077-.194.296-.42.467-.472a1.14 1.14 0 0 1 .333-.036zm5.352 1.98c-.052 0-.072.018-.097.07-.048.11.01.232.11.232.098 0 .147-.066.134-.19-.01-.087-.02-.1-.107-.11a.379.379 0 0 0-.04-.001zm-9.082 1.308c-6.59 0-11.99.01-11.999.02a1.2 1.2 0 0 0-.021.305v.283H24v-.608z"/></svg>
diff --git a/assets/lib/simple-icons/icons/undertale.svg b/assets/lib/simple-icons/icons/undertale.svg
new file mode 100644
index 00000000..a1bb38b5
--- /dev/null
+++ b/assets/lib/simple-icons/icons/undertale.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Undertale</title><path d="M3 0v1.5H1.5V3H0v12h3v3h3v3h3v3h6v-3h3v-3h3v-3h3V3h-1.5V1.5H21V0h-3v1.5h-3V3h-1.5v3h-3V3H9V1.5H6V0z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/unicode.svg b/assets/lib/simple-icons/icons/unicode.svg
index 8584008e..ef33b412 100644
--- a/assets/lib/simple-icons/icons/unicode.svg
+++ b/assets/lib/simple-icons/icons/unicode.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Unicode icon</title><path d="M.2 0a.2.2 0 00-.2.2v23.6c0 .11.09.2.2.2h23.6a.2.2 0 00.2-.2V.2a.2.2 0 00-.2-.2H.2zm19.488 5.27A1.312 1.312 0 0121 6.582a1.312 1.312 0 01-1.313 1.313 1.312 1.312 0 01-1.31-1.313 1.312 1.312 0 011.31-1.312zM3.15 6.05h1.996c.102 0 .153.05.153.151v7.49c0 .912.222 1.644.666 2.188.444.546 1.121.816 2.033.816.38 0 .729-.048 1.047-.15.316-.102.59-.272.824-.506.234-.236.419-.546.553-.932.134-.386.2-.869.2-1.453V6.223c0-.014.003-.024.005-.035l-.006-.004c0-.09.045-.133.133-.133h2.682c.076 0 .126.01.152.027.026.018.05.054.076.104.228.418.499.906.809 1.464.31.558.629 1.14.959 1.749l.998 1.843c.334.62.647 1.206.94 1.758.291.552.549 1.045.77 1.475.223.432.39.768.505 1.008h.02c0-.126-.005-.27-.01-.428a25.728 25.728 0 01-.02-.57c-.006-.223-.014-.493-.02-.81-.008-.315-.01-.696-.01-1.14v-3.21c0-.103.056-.153.17-.153H20.6c.114 0 .171.058.171.172v9.03c0 .113-.063.17-.189.17h-2.414c-.114 0-.198-.046-.248-.134a173.907 173.907 0 00-1.623-3.021 232.322 232.322 0 01-2.121-3.946 96.063 96.063 0 01-.883-1.718 37.59 37.59 0 01-.371-.768v4.815c0 .888-.13 1.643-.39 2.271-.26.628-.611 1.141-1.055 1.541a4.112 4.112 0 01-1.588.873 6.848 6.848 0 01-1.97.277 6.42 6.42 0 01-2.032-.304 4.196 4.196 0 01-1.559-.903c-.43-.4-.76-.903-.988-1.511-.228-.608-.342-1.325-.342-2.149v-7.64c0-.114.05-.172.152-.172Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Unicode</title><path d="M.2 0a.2.2 0 00-.2.2v23.6c0 .11.09.2.2.2h23.6a.2.2 0 00.2-.2V.2a.2.2 0 00-.2-.2H.2zm19.488 5.27A1.312 1.312 0 0121 6.582a1.312 1.312 0 01-1.313 1.313 1.312 1.312 0 01-1.31-1.313 1.312 1.312 0 011.31-1.312zM3.15 6.05h1.996c.102 0 .153.05.153.151v7.49c0 .912.222 1.644.666 2.188.444.546 1.121.816 2.033.816.38 0 .729-.048 1.047-.15.316-.102.59-.272.824-.506.234-.236.419-.546.553-.932.134-.386.2-.869.2-1.453V6.223c0-.014.003-.024.005-.035l-.006-.004c0-.09.045-.133.133-.133h2.682c.076 0 .126.01.152.027.026.018.05.054.076.104.228.418.499.906.809 1.464.31.558.629 1.14.959 1.749l.998 1.843c.334.62.647 1.206.94 1.758.291.552.549 1.045.77 1.475.223.432.39.768.505 1.008h.02c0-.126-.005-.27-.01-.428a25.728 25.728 0 01-.02-.57c-.006-.223-.014-.493-.02-.81-.008-.315-.01-.696-.01-1.14v-3.21c0-.103.056-.153.17-.153H20.6c.114 0 .171.058.171.172v9.03c0 .113-.063.17-.189.17h-2.414c-.114 0-.198-.046-.248-.134a173.907 173.907 0 00-1.623-3.021 232.322 232.322 0 01-2.121-3.946 96.063 96.063 0 01-.883-1.718 37.59 37.59 0 01-.371-.768v4.815c0 .888-.13 1.643-.39 2.271-.26.628-.611 1.141-1.055 1.541a4.112 4.112 0 01-1.588.873 6.848 6.848 0 01-1.97.277 6.42 6.42 0 01-2.032-.304 4.196 4.196 0 01-1.559-.903c-.43-.4-.76-.903-.988-1.511-.228-.608-.342-1.325-.342-2.149v-7.64c0-.114.05-.172.152-.172Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/unilever.svg b/assets/lib/simple-icons/icons/unilever.svg
new file mode 100644
index 00000000..baabb38b
--- /dev/null
+++ b/assets/lib/simple-icons/icons/unilever.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Unilever</title><path d="M21.436 6.6255c.1147.8467 1.392 1.99 1.746 1.9613.2344-.0191.3205-1.105.3205-1.9613 0-.488.0287-.8754-.2296-.9616-.4114.8276-1.4878.995-1.837.9616zm.0717-.378c.928 0 1.7747-.7414 1.7747-1.392 0-.3014-.1435-.555-.507-.598.0622.0813.0909.1388.0909.287 0 .4928-.7463 1.0333-1.5595 1.0333-.2966 0-.3827.2057-.3827.311-.0048.2583.2344.3588.5836.3588zm-.1962-1.0045c-.1243 0-.3013 0-.4018-.1962-.0335-.0621-.0478-.1387-.0622-.22-.0239-.1244-.0478-.2488-.1435-.3157.153.0478.3062.0478.4353.0478.4019 0 .7846-.2775 1.0811-.2775.1962 0 .2536.1244.2536.2488.0096.3923-.7893.7128-1.1529.7128h-.0096zM1.373 12.232c.3014 0 .2392-1.856.732-1.856.1148 0 .1482.1147.1482.263 0 .421-.2057 1.0333-.2057 1.373 0 .1722.0479.2296.1244.2248.2153 0 .5884-2.0427.952-2.0427.1148 0 .1722.1149.1722.2344 0 .4258-.5454 1.66-.5454 2.0044 0 .0574.024.1005.0575.1005.2248 0 .6697-.9615.8132-1.4447.0813-.2488.1866-.3827.287-.3827.0909 0 .1722.1005.1722.3062 0 .4831-.4449 1.612-.8371 2.3727-.3014.5884-.775 1.4351-.775 1.9087 0 .2392.0478.4927.3875.7893-.5693-.0335-.8037-.0909-1.0142-.5358-.952 1.8944 1.7605 1.7126.8324 3.3965-.1674-.3014-1.5069-.6123-1.5069-2.3775 0-1.526 1.3347-2.4158 1.3347-3.0473 0-.1243-.043-.2296-.1579-.33-.2966-.2488-.3013-.4545-.5358-.4545-.1674 0-.373.3923-.1626.7415.0718.1148.1387.1818.1387.2966 0 .2487-.3922.9185-.6697.9137-.2774 0-.488-.6841-.488-1.7891 0-.9807.2249-1.971.4976-1.971.0813 0 .1004.0575.1004.1244 0 .1148-.0335.3492-.0335.7415.0048.4162.0957.4497.1818.4401zm2.2723 2.612c.3731 0 .684-.2775.684-.8898v-.909c0-.3492.0288-.7414.2584-1.0141-.0287.1148-.0287.2392-.0287.354 0 .7654.421 1.2916.421 2.033 0 .2775-.0814.4258-.2918.421-.2057 0-.1866-.1865-.2344-.1865-.0335 0-.091.1148-.091.2392 0 .1817.1388.4783.5024.4831.3205 0 .5788-.2918.5788-.6219 0-.8036-.6219-1.6934-.6219-2.5497 0-.3731.1005-.6219.177-.818 0 1.77 1.5069 3.0616 1.5069 3.803 0 .1675-.1244.3014-.311.3014-.2057 0-.3013-.1626-.3013-.287 0-.0622-.0096-.0813-.0335-.0813-.0526 0-.2153.177-.2153.4114 0 .2966.2392.6506.684.6506.5072 0 .7846-.4306.7846-.8133 0-.9376-1.8274-2.3536-1.8274-3.87 0-.2583.043-.6793.2296-.9998-1.1768.7558-1.5403 1.7652-1.5403 2.6502 0 .7654-.0287 1.148-.421 1.148-.2057 0-.2583-.1865-.33-.1865-.0527 0-.0814.1627-.0814.2057.0096.3349.244.5167.488.5167h.0143v.0095zM19.8334 4.6401c-.1722 0-.4545.1866-.6793.1866-.2823-.0048-.201-.3588-.5119-.3588-.067 0-.1483.0191-.2296.0622-.6458.3253-1.1481.201-1.263.2775-.0286.0143-.0525.0382-.0621.0908 0 .6698.7128 1.703 1.8991 1.703.8133 0 1.4974-.2774 1.4974-.7319 0-.397-.3827-1.2294-.6506-1.2294zm-.7415 1.3012c-.6554 0-1.086-.354-1.0811-.5884 0-.0287.0191-.0478.0526-.0478.1052 0 .3923.1435.7654.2057.4353.0717.6697.0813.7845.0813.1148 0 .1674.0287.1674.0622 0 .11-.2965.287-.6888.287zM3.8318 18.2069c-.2918.0718-.7654.5358-.7654 1.2677 0 .8706.9376 2.2149 2.478 2.2149 1.3011 0 1.6216-.8994 1.6216-1.507 0-1.3441-.8276-2.2913-1.9087-2.2913-.5884 0-1.1146.4305-1.1146 1.062 0 .5931.4449 1.4733 1.5069 1.4733.4975 0 .794-.3587.794-.7653 0-.4019-.3635-.952-.8993-.952-.1626 0-.2774.1052-.2774.2774 0 .2153.2966.421.665.4258.0908 0 .1626-.0191.196-.0335.0192.024.024.067.024.1053 0 .2057-.1962.33-.4975.33-.4545 0-.8898-.3396-.8898-.8754 0-.3205.2775-.5501.6793-.5501.794 0 1.2677.708 1.2677 1.4064 0 .6315-.3492.9998-1.062.995-1.4351.0048-2.124-1.2868-1.8178-2.5832zm11.0552 2.8368c-.091-.1723-.0192-.4689-.287-.4689-.1818 0-.1962.1436-.2153.2584-.3875-.11-.708-.1675-.995-.1675-.2057 0-.3827.0287-.5358.0814-.1005-.1818-.5406-.5262-.9233-.6506-.1483.8036-.8706 1.435-1.9422 1.526-.0621.5262-.4736.6601-.794.6601-.2297.0048-.598-.0765-.6172-.1674-.1243-.7558-.6984-1.1816-.9471-1.282.0095.0813.019.1674.019.2487 0 .641-.44 1.0429-1.258 1.0429-.1244 0-.2966-.0096-.421-.0335.9376 1.0428 1.6073.6601 2.0427.8563C8.582 23.2059 9.046 24 10.8734 24c.665 0 1.3443-.2583 1.7891-.5453.0814.2678.3588.507.8133.507.775 0 1.2103-.2392 1.2103-.4353 0-.0526-.0048-.134-.1388-.134s-.1148.0336-.5405.0336c-.4928-.0048-1.2964-.1962-1.6743-1.0573-.067-.1435-.1722-.1435-.2057-.1435-.2488 0-.6315.885-2.2006.885-.6553.0048-.9615-.244-.9615-.3013 0-.0096 0-.0192.0335-.0192.0622 0 .3062.0287.6075.0287.9903 0 1.7892-.4544 2.2723-.9806.1674-.1866.2488-.2153.3923-.2153.1244 0 .2583.11.3205.2774.22.5693.7271 1.0238 1.282 1.0238.751 0 .7606-1.282.9376-1.3443a.344.344 0 00.1053.0192c.0909 0 .2344-.067.2344-.2344 0-.1818-.22-.2297-.2631-.3205zm-1.215.9615c-.1962-.0048-.354-.1627-.354-.3588 0-.201.1578-.3588.354-.3588.196 0 .3587.1627.3587.3588a.3583.3583 0 01-.3588.3588zm6.4245-5.1808c-1.3108 0-.9711 1.148-2.502 1.4973-.2822.0622-.3635.153-.3635.2775 0 .2344.1292.5357.2918.5357.665 0 1.703-1.3825 1.8896-1.3825v-.009c.0784.0046.1577.0117.153.1956 0 .5023-1.4446 1.1577-1.4446 1.5165 0 .2152.5118.6697 1.0094.6697.7223.0048 1.3681-1.4734 1.5212-1.4734.1196 0 .1626.086.1626.177 0 .4018-.488 1.1863-1.3442 1.526-.177.0717-.2057.153-.2057.2153 0 .1961.2248.4879.4305.4879.2488 0 1.9231-1.459 1.9231-2.6358 0-1.105-.7989-1.5978-1.5212-1.5978zm.6027 1.2677a.5738.5738 0 01-.263-.067c-.1149-.0526-.3206-.2248-.3206-.488 0-.2391.134-.3396.2583-.3396.3827 0 .7846.3397.7893.6076 0 .2152-.2057.287-.464.287zM3.7265 6.8742c0 .1962.1579.354.354.3588.1962 0 .354-.1626.354-.3588 0-.1961-.1626-.354-.354-.354-.1913.0048-.3588.1627-.3588.354h.0048zm-.464-.7989c0 .1962.1579.354.354.354.1961 0 .3588-.1626.3588-.3587 0-.1962-.1627-.3588-.3588-.3588s-.354.1722-.354.3635zm-.3205 2.435c-.2057.0526-.6315.3013-.6315.7462 0 .3205.2536.5262.5597.5262.1627 0 .2775-.0334.3493-.0909-.2488-.2391-.3397-.507-.3397-.775 0-.177.0287-.2917.0622-.4065zm-2.1862.1291c-.0095.043-.0095.091-.0095.134 0 .421.2152.6506.5118.6506.22 0 .4832-.134.7128-.4258-.0957.0191-.2153.0287-.3205.0287-.3205 0-.684-.0909-.8946-.3875zm-.311.799c0 .6744.2058.995.5694.9997.287 0 .6697-.2057 1.1241-.598-.3492.0814-.617.134-.8563.1388C.9615 9.974.7176 9.8497.445 9.4383zm2.3106-3.5688c.043-.1435.0814-.3205.0814-.5166 0-.4258-.1962-1.0763-.8037-1.0763-.3492 0-.598.2774-.598.6075 0 .708.708.9902 1.3203.9854zm.4497.8994c-.1148-.153-.0718-.2918-.1435-.3636-.043-.043-.1674-.043-.33-.0622a2.2396 2.2396 0 00-.1962-.0095c-.2918 0-.641.0382-1.0333.287-.7702.488-.6602 1.3107-.7798 1.5117-.0143.0287-.0287.0621-.0287.1004 0 .0813.091.1722.1723.1674.0717 0 .1148-.0191.153-.0191.2153 0 .4593.1483.799.153.2056 0 .4448-.0621.7462-.2152.641-.3205.8898-1.1146.8898-1.2485 0-.1675-.134-.1483-.2488-.3014zM1.9948 8.118c-.2918 0-.6123-.3636-.6123-.6936 0-.177.134-.4019.2296-.4019.0335 0 .0574.024.0574.091.0526.4352.3445.684.6076.8131.0287.024.0478.024.0478.0431 0 .0526-.1674.1435-.33.1483zm.8372-.5501c-.311 0-.5597-.4736-.5597-.7415 0-.1674.1004-.1866.2296-.1866.0622 0 .0909.0096.1387.0335.0766.043.0766.2153.177.354.0622.0813.2296.1818.2296.2535 0 .1244-.0717.287-.2152.287zm.8515.2105c-.1962.2296-.4019.6218-.4019 1.0285 0 .4783.2966.8802.7559.8802.4353 0 .641-.3732.641-.7559-.0048-.6027-.5454-1.0237-.995-1.1528zM1.7748 6.0658s-.2584.1961-.5789.1961c-.3827 0-.684-.287-.684-.684 0-.2775.1435-.5598.4735-.7033-.0095.0526-.0095.0957-.0095.1531-.0048.5023.2774.8898.7989 1.038zM17.4893 9.022c0 .2057.1722.378.378.3732.2056 0 .373-.1675.373-.3732s-.1674-.3731-.373-.3731c-.2105 0-.378.1722-.378.3731zm.024 1.1242c0 .2296.1817.421.421.421a.4216.4216 0 00.4209-.421.4216.4216 0 00-.421-.421c-.2296.0096-.421.1914-.421.421zm-1.282.7606c0 .3444.2726.6171.617.6171.3397 0 .6171-.2774.6171-.617s-.2774-.6172-.617-.6172c-.3397.0048-.6172.2775-.6172.6171zm.33-1.2629c0 .1961.1579.354.354.3588.1961 0 .3588-.1627.3588-.3588s-.1627-.3588-.3588-.3588c-.1914 0-.3492.1627-.3492.3636l-.0048-.0048zm-1.1672.7176c0 .1961.1578.354.354.354s.3587-.1579.3587-.354-.1626-.354-.3587-.354c-.1914 0-.3493.1626-.354.354zm.9184-2.0905c0 .3061.2631.5692.5693.5692s.5693-.2583.5693-.5692-.2584-.5693-.5693-.5693c-.311 0-.5693.2631-.5693.5693zm.665-1.0907c0 .1818.1483.3444.3444.3396a.341.341 0 00.3397-.3396.341.341 0 00-.3397-.3397c-.1913.0048-.3492.1531-.3444.3397zm-1.6121.8563c0 .1818.1483.3444.33.3396a.341.341 0 00.3397-.3396.341.341 0 00-.3397-.3397c-.177.0048-.33.1531-.33.3397zm-.0431 1.1624c0 .3062.2392.5502.5358.5454a.542.542 0 00.5453-.5454.542.542 0 00-.5453-.5453c-.2966-.0048-.5406.2344-.5358.5453zm-1.1242.5645c0 .2727.2296.5023.5023.507.2775 0 .507-.2295.507-.507 0-.2775-.2343-.507-.507-.507-.2679 0-.5023.2248-.5023.507zm.3014-1.2581c0 .1961.1579.354.354.354s.3588-.1627.3588-.3588-.1627-.3588-.3588-.3588c-.1914-.0048-.3492.1579-.3492.3588h-.0048v.0048zm3.1333 2.7506c0-.177.1627-.33.335-.33.196 0 .3443.1482.3443.33 0 .2057-.153.3492-.3492.3445a.3312.3312 0 01-.33-.3445zm.3014 9.3666c.0718-.0622.091-.1627.091-.2583v-.2057c0-.2584-.3924-.4114-.9281-.4114-.6506 0-.9998.2918-.9998.4161v.4114c0 .1723.3875.3445.8802.3445.3779 0 .7271-.1005.9567-.2966zm.4638.0958c-.2297.1771-.775.5787-1.674.5835-.4832 0-.6937-.1531-.7655-.1531-.0909 0-.1865.0909-.287.2057-.2105.2487-.488.7128-.488 1.2246 0 .354.2727.708.7894.7128 1.6695 0 2.9133-1.0428 2.9133-1.8896.0047-.4796-.2828-.6856-.4882-.6839zm-.8417 1.6359c-.2248.153-.5262.2774-.971.2822.0717-.2152.1243-.4353.1243-.6506 0-.0717-.0096-.1243-.0191-.2057h.1148c.6984-.0047 1.0045-.2822 1.0572-.2774.043 0 .1004.024.1004.1866 0 .196-.0909.4544-.4066.6649zm1.1529-9.1322c0 .2153.067.4784.2966.4832.1865 0 .3492-.287.3492-.598 0-.3587-.0622-.6314-.0622-.775 0-.0621.0287-.0908.0622-.0908.134.0095.2631.3779.4018.3779.1627 0 .4019-.2966.4975-.2966.0287 0 .0335.0335.0335.043 0 .134-.2057.4306-.2057.5502 0 .1004.5119.1148.5119.2057 0 .134-.5406.134-.7989.2487-.2488.1053-.4018.2392-.4018.421s.1817.2153.4353.2153c.598 0 1.0141-.3205 1.148-.3205.0288 0 .048.0239.048.043 0 .091-.3015.3827-.3015.5119 0 .1483.5502.33.5502.421-.0096.0286-.043.0334-.1053.0334-.1004 0-.2487-.0287-.3683-.0287-.0718 0-.134.0096-.1627.043-.0622.067.024.5454-.1052.5454-.1148 0-.421-1.0524-1.105-1.0524-.1005 0-.1675.0813-.1675.2153 0 .354.3444.7654.6745.9615.1483.1005.4019.1961.4019.2535 0 .1053-.5693.0096-.5693.1866 0 .1579.067.4018.067.5454 0 .043-.0096.0956-.0622.1004-.1053 0-.3684-.488-.4927-.488-.1053 0-.3397.2919-.4354.2919-.0239 0-.043-.0287-.043-.0526 0-.2057.33-.6698.33-1.1242 0-.2153-.0286-.6793-.287-.6793-.2152 0-.4544.3396-.5597.6745-.0622.1961-.0191.952-.1626.952-.134 0-.1005-.5071-.2775-.5071-.134 0-.4162.2392-.5166.2392-.0191 0-.0335-.0096-.0335-.0287 0-.1053.2583-.4545.2583-.5262 0-.134-.5884-.1531-.5884-.2584 0-.0622.2296-.1052.445-.1435.4544-.0813 1.124-.4114 1.124-.8754 0-.5166-.4974-.7415-.8275-.952-.1674-.1052-.3588-.1961-.3588-.2679 0-.0717.2153-.0717.3014-.0717.134 0 .2679-.0096.2679-.1148 0-.0813-.0191-.2392-.0191-.3636 0-.0909.0095-.1626.043-.1626.134 0 .3205.4353.4114.4353.1435 0 .3397-.3588.4736-.3588.043 0 .0574.024.0574.1053-.0048.3348-.1722.7127-.1722 1.0332zm-4.2528-2.607c.1005.7557 1.1194.3778 1.1194 1.2915 0 .134-.0334.3301-.0334.4975 0 .1962.0239.3636.1722.3636.153 0 .1865-.1053.1865-.2488s-.0335-.3205-.0335-.421c0-.3109.2249-.3826.3588-.3826.3397 0 .5932.3444 1.1099.3492-.1149.5692-1.2917.421-1.2917 1.0428 0 .3062.3062.3875.512.3875.1865 0 .2487-.0287.2487-.1865 0-.091-.0192-.1866-.0192-.2488 0-.0335.0287-.0718.0718-.0718.1961 0 1.1529.732 1.1529.952 0 .2057-1.0142.4114-1.3108.4114-.0909 0-.1052-.0622-.1052-.0957 0-.0622.153-.2487.153-.3587 0-.0814-.1339-.134-.4927-.134-.1674 0-.2966.0191-.2966.153 0 .2393.3875.5359.3875.756 0 .177-.1052.287-.3922.287-.2392 0-.6028-.1866-.6028-.4976 0-.2487.2583-.4975.2583-.6506 0-.043-.0335-.1148-.1387-.1148-.33 0-.421.8755-1.5882.9711.1866-.1674.3492-.3587.3492-.7414 0-.1866-.043-.3397-.043-.5454 0-.2679.1243-.4018.3013-.4018.3301 0 .4928.4688.708.4688.1148 0 .2392-.1053.2392-.268 0-.6792-1.3012-.5787-1.3012-1.5307-.0095-.2679.0861-.5884.3205-1.0333zm2.9947 5.5538c.0622.1005.0909.1962.0909.287 0 .2488-.1675.4832-.1675.7415 0 .2966.2296.5358.5597.5358.3636 0 .6171-.2918.6171-.641-.0048-.4784-.4353-.8802-1.1002-.9233zm-2.9516.5693c.0909.0909.1148.1818.1148.2679 0 .134-.0622.2774-.0622.4257 0 .2153.1579.4019.3875.4019.2488 0 .421-.1962.421-.4258.0048-.3348-.3397-.6697-.8563-.6697h-.0048zm.2153-1.0524c.4114.0574.5118.1961.5118.311 0 .196-.177.2582-.3492.2582-.1244 0-.2679-.0287-.421-.0287-.196 0-.3922.043-.5549.2296.1148.024.287.1005.287.2775 0 .5166-1.435.0909-1.435 1.416 0 .708.7318 1.4734 1.8417 1.4686.5692 0 .9376-.1866.9376-.4018 0-.1675-.3014-.0527-.3014-.1962 0-.0622.1053-.177.1053-.2774 0-.043-.0335-.1244-.1053-.1244-.1626 0-.464.2583-1.0811.2631-.4832 0-.952-.2775-.952-.6506 0-.0813.0335-.1244.091-.1244.0525 0 .1243.0335.1817.0335.0526 0 .0622-.0335.0622-.134s0-.373.1674-.373.4927.6266 1.727.6266c.4066 0 1.2007-.0813 1.4973-.3492-.0096.9807-.775 2.2723-2.3823 2.2723-1.6648 0-2.5593-1.3395-2.5593-2.5689 0-1.3633 1.1146-2.6023 2.6406-2.6023.3922 0 .7175.1387.7175.3013 0 .2488-.5836.1005-.6266.3732zm.971-.4688c.1244.1483.1675.311.1627.4544 0 .3827-.2918.775-.2918 1.1481 0 .5023.33.8132.7845.8132.4975 0 .7846-.421.7846-.8754 0-.6601-.5023-1.3586-1.44-1.5403zm.6794 1.4112c-.1244-.0096-.2153-.1005-.2153-.2249 0-.067.043-.177.0574-.263.0191-.1197-.0096-.225.0622-.225.1626 0 .33.2584.33.445 0 .1435-.0908.2679-.2343.2679zM8.9504 5.5109c-.4545.0095-.8755.3827-1.1625.8897a1.697 1.697 0 00.0287-.3061c0-.6937-.3731-1.3203-1.0763-1.3203-.5693 0-1.086.33-1.3012.971.0622-.067.2488-.1817.4018-.1817.177 0 .2297.153.2297.3923 0 .1626-.0383.3492-.1005.5262-.11.2918-.3062.3827-.4114.3827-.4449 0-.244-.732-.4688-.732-.1866 0-.2392.3923-.2392.5454 0 .507.33 1.0428 1.062 1.0428.775 0 1.215-.3683 1.6887-.8658.0908.5358.3827 1.4542 1.1672 1.4542.4257 0 .7319-.354.7654-.7653-.0574.0526-.134.0956-.2249.0956-.1626 0-.196-.2296-.196-.4353 0-.33.0956-.684.2487-.684.0813 0 .1243.0526.1435.2917.0143.1866 0 .3923.1148.3923s.1866-.3683.1866-.6171c0-.574-.268-1.0763-.8563-1.0763zM6.3097 7.233c-.0765 0-.0956-.0717-.1004-.134 0-.3491.3827-1.9086.6601-1.9086.067 0 .091.0526.091.1243 0 .2775-.3493 1.9183-.6507 1.9183zm1.1864-.665c-.2296.2584-.354.3636-.4544.3636-.0527.0048-.1053-.086-.1053-.1913 0-.1914.134-.9041.4018-.9041.1053 0 .177.196.177.373 0 .134 0 .244-.019.3589zm.5214.6172c-.0909.0048-.1387-.1435-.1578-.464.1435-.2392.2392-.3445.33-.3445.0383 0 .0718.0335.0718.1866v.0048h.0048c0 .311-.1483.6219-.2488.617zm.4784.5405c-.0574 0-.1004-.0813-.0957-.2679 0-.4831.311-1.3633.4975-1.3633.0527 0 .0718.1244.0718.2392 0 .5357-.2488 1.392-.4736 1.392zm-1.215.1866c-.3828 0-.4019.464-.4019 1.4016-.287-.617-.7558-1.2724-1.3107-1.2724-.3732 0-.5167.2487-.5167.684 0 .091.0096.2297.024.3014.043-.153.1865-.2153.3635-.2153.3827 0 .8467.2966 1.1529.6937-.3492-.0622-.6889-.1244-.9711-.1244-.177 0-.3397.0191-.4736.0813-.2583.1148-.6075.4975-.6075 1.0764 0 .0909.0095.1818.0239.2918.311-.6937 1.1385-1.0094 1.6743-1.0094.1052 0 .1818.0096.2535.0191-.2774.2488-.3396.6841-.3588.9807-.0095.1435-.0621.153-.1626.1483 0 .2966.2296.732.2296.952 0 .0813-.043.153-.0909.1674 0 .3875.3875.6745.3875.9233 0 .0621-.0191.1148-.043.1435.0287.1578.4592.4353.5118.5645.067.1578.1483.196.1962.196.153 0 .3922-.177.3922-.3396 0-.0526-.043-.1148-.0813-.1435-.1674-.1243-.2583-.3922-.33-.5692-.0623 0-.1436-.024-.1723-.1292-.0478-.1866-.0526-.5262-.1244-.732-.1148-.0286-.1674-.0717-.1674-.3109 0-.1148.0718-.5692.0718-.7319-.0527 0-.1244-.0334-.1244-.1435 0-.287.287-.507.3635-.8754.5071.378.6267.7558.6267 1.0955 0 .177-.0287.3492-.0622.507.3732-.1865.9376-.464.9376-1.0237 0-.33-.153-.6936-1.1576-.8371.311-.1148.7032-.177 1.0333-.177.5692 0 .904.1818.971.5836.1149-.177.2058-.3827.2058-.5693 0-.4353-.3636-.7223-.8276-.7223-.5454 0-1.0238.287-1.5404.6267.2344-.4832.3923-.7654.6793-.7654.043 0 .0909.0095.1387.0191-.0957-.3827-.5023-.7702-.7128-.7654zm15.0209 6.4246c.4449 0 .7989.5836.7989 1.258 0 .7224-.3397 1.507-.9424 2.0475-.0096-1.2007-1.483-.818-1.483-1.6934 0-.3732.2679-.622.5884-.622.287 0 .5023.0814.6745.2393-.1626-.1531-.2392-.3636-.2392-.5693-.0048-.3492.2105-.6601.6028-.6601zm-6.616-9.1178c-.0717-.1149-.3396-.177-.464-.177-.3922 0-.6601.2774-.7127.5262-.0335-.091-.0622-.1962-.0622-.3014 0-.3923.2679-.8754.9185-.8754.5692 0 .7893.2966.8706.2966.0909 0 .177-.091.2488-.091.0956 0 .1004.1484.1004.2584 0 .354-.1626.971-.5645 1.2007-.0717-.153-.2152-.3205-.4449-.4257-.0621-.0287-.0908-.0814-.0908-.134.0047-.1052.0956-.2296.2009-.2774zm-1.3442.6505c.2297.2297.4354.3206.6841.3206.1005 0 .2153-.0287.2775-.0287.0813 0 .1387.0334.1387.1004 0 .1005-.0909.2583-.1961.3492.1052.0479.2296.0574.3444.0622.507 0 1.0859-.3205 1.0859-1.1242.1052.1388.1722.4354.1722.5693 0 .9711-.7128 1.3442-1.373 1.3442-.4305 0-.641-.1435-.6983-.1435-.1675 0-.158.3397-.2775.33-.2057-.0334-.3923-.4878-.3923-.971 0-.287.0766-.598.2392-.818h-.0048v.0095zM6.7116.201c0-.0526-.268-.1052-.6315-.1052-.5788 0-.4975.4831-.9424.4783-.464 0-.3492-.4975-.9376-.4975-.3588 0-.684.0622-.684.1436 0 .1004.421.0574.421.354 0 .3109-.8994.4018-.8994.5883 0 .0575.067.091.1578.091.1962 0 .5071-.091.732-.091.1243 0 .2391.024.2391.1436 0 .2248-.4831.6218-.4831.8036 0 .0574.0478.067.0909.0718.177 0 .4831-.4545.7654-.4545.4736 0 .1578 1.0046.421 1.0094.2678 0 .153-.9902.5357-.9902.311 0 .5501.684.7558.684.0527 0 .0957-.043.0957-.1052 0-.1866-.2679-.5693-.2679-.818 0-.1531.1053-.2249.2488-.2249.2057 0 .4784.1244.6267.1244.0526 0 .1052-.0191.1052-.0813 0-.2153-.7941-.4449-.7941-.7223C6.2763.33 6.7164.33 6.7116.2009zm2.0953.909c0 .1578.5597.5022.8228.507.153 0 .196-.2057.196-.421 0-.2679-.1147-.2774-.3491-.2774-.2966.0048-.6697.086-.6697.1913zm.928 1.7651c0-.5358-1.4447-1.5069-1.4638-1.923 0-.0383.0191-.0766.0526-.11C8.5725.5787 9.601.3922 9.601.1673c0-.1148-.2153-.1148-.3206-.1148-.8275 0-2.0426.3014-2.0426.598 0 .3061 1.0859 1.038 1.0859 1.4064 0 .1005-.0622.134-.1626.1387-.3014 0-.9616-.3635-1.2725-.3635-.1435 0-.1962.0956-.1962.2392 0 .421.5023 1.2342.5023 1.4733 0 .0288-.0095.0622-.043.0622-.1627 0-.9185-.8897-1.1864-.8897-.0957 0-.1052.134-.1052.33v.3014c0 .2057-.0096.33-.1053.33-.2296 0-.3396-.6505-.5597-.6505-.2296 0-.2774 1.1577-.4975 1.1529-.2583 0-.0335-1.2725-.287-1.2725-.2775 0-.5884.8467-.7845.8467-.0718 0-.091-.0717-.091-.134 0-.2582.1532-.6792.1532-.928 0-.1243-.0335-.196-.1436-.196-.2774 0-.885.4448-1.1146.4448-.0334 0-.0813-.0191-.0813-.0526 0-.2153.9711-.8898.9711-1.196 0-.2965-1.3394-.1004-1.3394-.4353 0-.287.952-.5788.952-.8754 0-.2583-1.1338-.3731-1.5691-.3731C.8372.0096.55.0718.55.2248c0 .2297 1.2007.3062 1.2007.5023s-1.239.7224-1.239 1.0237c0 .2632 1.7461.024 1.7461.2966 0 .3014-1.526 1.6122-1.526 2.0475 0 .1004.067.1387.1722.1435.464 0 1.6648-.8802 1.9948-.8802.1149 0 .1244.1387.1244.263 0 .2345-.0813.5885-.0813.8468 0 .2057.0574.3444.2296.3492.33 0 .6315-.5597.8563-.5597.287 0 .1148 1.6456.5501 1.6504.3636 0 .5167-1.7843.7463-1.7843s.421.5118.6267.5118c.2679 0 .1435-.8993.4305-.8993.311 0 1.2007 1.0763 1.5978 1.0716.1243 0 .1674-.1005.1674-.2249 0-.4736-.6602-1.5403-.6602-1.88 0-.0909.024-.1148.1244-.1148.3492 0 1.3586.4784 1.8418.4784.1817.0191.2774-.0718.2822-.1914zm-8.142-.5166c0 .177-.6792.775-.9184.775-.0909 0-.1148-.1053-.1148-.2058 0-.177.0813-.4257.177-.507.1148-.1053.3827-.1579.5884-.1579.1292 0 .2679.024.2679.0957zm6.5538.9185c0 .3061 1.1194 1.8417 1.325 1.837.177 0 .311-.311.311-.579 0-.0717-.0191-.1434-.0526-.196-.1626-.2249-1.2916-1.1147-1.5403-1.1147-.024-.0047-.0479.0192-.0431.0527zM23.5073.1722c-.445 0-.5215-.1387-.8228-.1387-.3636 0-.622.2487-.622.6219 0 .1244.0431.3205.0431.5788 0 .3157-.0622.6075-.3396.6075-.2535 0-.354-.1674-.354-.3635 0-.354.1866-.5932.1866-.8276 0-.4258-.5262-.5501-1.0764-.5501-.6601 0-1.373.177-1.373.2678 0 .1531.952.0622 1.6218.9185-.4353.0096-1.282.2057-1.282.3205 0 .1435 1.5164.3062 1.5164.9376.0048.4162-.3301.4593-.4593.464-.5022 0-.7701-.5118-.904-.5118a.0704.0704 0 00-.0718.0718c0 .0813.0717.2918.0717.5166 0 .5693-.6314.6315-.6314.7463 0 .043.0191.0622.0909.0717a9.153 9.153 0 001.3825.1053c1.612 0 2.9324-.5023 2.9324-1.9087 0-.775-.2392-1.0238-.2392-1.4017 0-.1244.0909-.3827.33-.5262zm-2.2867 3.0473c-.1004 0-.2152 0-.33-.0096 1.0428-.1674 1.6217-.7702 1.6217-1.5643.2344.067.3779.3062.373.5597 0 .464-.4448 1.0142-1.6647 1.0142zM22.6893.794c-.1292-.0048-.2297-.0957-.2297-.22 0-.1292.1053-.2201.2297-.2249a.2246.2246 0 01.2248.2248c0 .1244-.1005.2249-.2248.2201zm.5597 11.5814c-.4162 0-.6602.732-1.0668.775.2583-1.0716 1.3203-1.6217 1.3203-2.6215 0-1.1337-.952-1.5308-1.349-1.7843-.665-.9376-1.1386-1.6791-2.2053-1.6791-.4545 0-.7415.0813-1.0524.0813-.6028-.0048-.7894-.2344-.8324-.2344-.0096 0-.0191.0096-.0191.043 0 .8276.4353 2.7268 2.3535 2.7268 1.0238 0 1.4639-.3923 1.703-.3923.2584 0 1.086.2823 1.086 1.2294 0 .5262-.4162 1.062-.5693 1.062-.1483.0048-.3062-.2344-.3062-.488 0-.2822.1531-.7988.1531-1.1193 0-.1196-.0191-.177-.0909-.177-.1626 0-.928.4784-.928 1.0955 0 .5262.775.8467 1.0668.9998-.2918.4831-.4688.794-.6124 1.239 0-.335-.3205-1.019-.421-1.306-.4927-1.3395-.6649-1.5882-1.679-1.703.153.5358 1.8991 1.8274 1.8991 3.1477 0 .0813-.0095.1961-.0191.2392-.5262-1.5404-1.4303-1.8944-1.7604-2.2723-.5358-.5884-.2296-1.1577-1.086-1.4782.0527.0718.0718.1627.0718.2583 0 .2823-.1626.641-.1626.8898 0 .928 1.0907.6506 1.7221 1.1577.622.5023.9711 1.3203 1.2294 2.2292.2488-.397.3923-.8802.8372-.8802.287 0 .3827.3588.3827.6075 0 .0526 0 .1005-.0096.134.4258-.3636.6506-.952.6506-1.3443 0-.263-.0909-.4353-.3061-.4353zm-1.66-3.4969c-.0909 0-.2631-.0478-.378-.0478-.306 0-.5213.421-.6792.421-.0574 0-.0813-.0527-.0813-.1005 0-.1722.3013-.378.3013-.4927 0-.0814-.1291-.1053-.1817-.1053-.3062 0-.732.4162-.9711.4162-.043 0-.1005-.024-.1005-.0813 0-.1148.3205-.2775.3205-.4019 0-.11-.1387-.1339-.2296-.1339-.1483 0-.4449.0813-.6315.0813-.1004 0-.1817-.0191-.1817-.1004 0-.1818.5788-.0622.5788-.2775 0-.1052-.1818-.3014-.1818-.4018 0-.0383.0478-.067.0909-.067.2057 0 .421.5597.6602.5597.1052 0 .1339-.0813.1339-.1961s-.024-.1722-.024-.2727c0-.1052.0431-.134.0766-.134.1483 0 .2823.8037.6937.8037.1817-.0048.0526-.4927.2152-.4927.1005 0 .1244.1435.134.2248.043.5262.5166.5454.5166.732 0 .019-.0287.067-.0813.067zM17.0062.0574c-.598 0-1.0333.2918-1.2677.2918-.1387.0096-.354-.3492-.464-.3492-.043 0-.091.0909-.091.2392 0 .1004 0 .4114-.1052.4114-.2152 0-1.0428-.6123-1.0428-.3923 0 .2057.5501.8324.5501.995s-.5453.311-.5453.421c0 .1961.5836.2296.5836.4832 0 .2487-.6076.4449-.6076.6266 0 .1483.6076.0479.6076.2297 0 .1865-.445.8132-.445.9902 0 .0478.0097.0478.048.0478.1674.0048.6792-.5788.7988-.5788.1435 0 .1722.3444.1961.555.0192.1004.0335.1147.0814.1147.1052 0 .2774-.4114.3922-.4114.1675 0 .6267.4688 1.3825.4736 1.0764 0 2.0953-.7558 2.0953-2.0953 0-1.2916-.9089-2.0522-2.167-2.0522zm-1.526 2.875c-.0287 0-.043-.0335-.043-.0813l-.0192-.354c0-.0335-.0192-.0717-.0622-.0717-.1053 0-.311-.0096-.3731-.0096-.043 0-.0622-.0096-.0622-.0287.0095-.067.3635-.3205.3683-.378 0-.1004-.3492-.287-.3492-.3922 0-.0191.0191-.0287.043-.0287.1005 0 .2632.0335.4019.0335.1148 0 .134-.4975.22-.4975.0622 0 .1723.4688.2631.4688.1149 0 .3301-.134.421-.134.0192 0 .0335.0096.0335.0287 0 .0622-.2248.3014-.2248.378 0 .0813.5023.1817.5023.2487 0 .0909-.5071.0813-.5071.1627 0 .0574.1818.3061.1818.3874 0 .0192-.0096.0287-.0287.0287-.0718 0-.3493-.1243-.4306-.1243-.1004 0-.2583.3635-.3348.3635zm1.5451.7702c-.6267 0-1.0333-.311-1.0333-.4736 0-.0813.0526-.134.1244-.134.1961 0 .6267.2967.7654.2967.0335 0 .0622-.0192.0622-.0718 0-.1626-.153-.4257-.153-.5597 0-.0335.0286-.0622.0812-.0622.2392 0 .5932.1005.7893.1005.0622 0 .0814-.0335.0814-.0718 0-.1961-.5789-.5788-.5789-.6936 0-.1053.7224-.2679.7224-.4353 0-.177-.9807-.0527-.9807-.2249 0-.1243.1866-.3396.1866-.4353 0-.043-.0335-.0622-.0957-.0622-.0813 0-.507.1675-.6888.1675-.091 0-.1962-.0192-.1962-.1436 0-.2057.3492-.4257.8946-.4257.8802 0 1.4064.6075 1.4064 1.6217-.0048 1.2868-.8993 1.6073-1.3873 1.6073zm-6.037 15.4228c0 .0813-.0288.1674-.1005.2583-.0957-.177-.3732-.2679-.4975-.2679-.9185 0-.5693 1.3299-1.55 1.3299-.4114 0-.4448-.0526-.598-.0526-.0621 0-.1004.0287-.1004.0813 0 .2296.33.7989 1.2438.8037.9185 0 1.7987-.5597 1.7987-1.2582 0-.1148-.0287-.2392-.0814-.3635.0335-.0527.1244-.091.2057-.091.1436 0 .2153.158.354.1627.1436 0 .2488-.1052.2488-.2487 0-.1148-.0622-.1962-.1674-.2488.0717-.0526.1243-.1435.1243-.2392 0-.153-.1052-.2918-.287-.2918-.0813 0-.134.0287-.1961.0861-.0191-.1578-.1053-.311-.2775-.311-.134 0-.2344.0958-.2344.2536.0192.1244.1148.2392.1148.397zm-2.8703-.6458c-.0622 0-.1435.0095-.2296.0095-.0813 0-.1962-.0191-.268-.0813-.1434-.1244-.1865-.794-.4544-1.196-.2918-.4448-.6123-.5692-1.0524-.5692-.311 0-.6601.1674-.6601.421 0 .153.086.2583.6505.4066.7128.1818 1.0764.5597 1.1434 1.0142.0717.4353.1578.7893.33.971.2249.2536.665.4689 1.0381.4689.3205 0 .5788-.1053.5788-.4019 0-.3205-.4353-1.0428-1.0763-1.0428zm.4736.9806c-.2679 0-.6697-.287-.6697-.4449 0-.1339.1243-.2057.2248-.2057.2248 0 .6267.2727.6267.5071-.0048.0622-.0479.1388-.1818.1435zm2.1335-3.9226c-.4114-.1483-.5932-.3875-.6745-.8563-.2009.2727-.2966.531-.2966.684 0 .6028.8276.6124.8276 1.0142-.0048.2344-.421.4736-.971.4784-.6411-.0048-1.0716-.1053-1.4735-.507-.1052-.1149-.153-.2154-.287-.2154-.153 0-.2153.268-.2153.5071 0 .8754.8324 1.9087 1.99 1.9087 1.4448-.0048 2.0045-.9998 2.0045-1.8034 0-.4688-.11-.9137-.9042-1.2103zm-.4257 2.4397c-.1148 0-.1387-.0718-.1387-.1722 0-.0814.0287-.2344.0287-.3492 0-.3158.1196-.2919.4257-.4306h-.0048c.2153-.1004.2966-.2344.3636-.2344.0813 0 .153.0526.153.177 0 .464-.507 1.0094-.8275 1.0094zM7.7736 12.519c0-.5692 1.3538-.8754 1.3538-1.5786 0-.1148-.043-.3205-.1244-.4736.4736.2631.8228.6984.8228 1.0524 0 .6171-.641.8994-.641 1.282 0 .445.684.512.684 1.0716 0 .4545-.6505.9807-.6505 1.5691 0 .4592.3205.8324.8132.8898-.1627.0335-.3014.0622-.4545.0622-.8993 0-1.8274-.7415-1.8274-1.6217 0-.4353.1866-.818.4736-1.0955.2488.2153.5023.354.665.354.1435 0 .2057-.0718.2057-.177-.0096-.3253-1.3155-.6362-1.3203-1.3347zM5.219 16.2743c-.0335-.3205-.3253-.5597-.622-.5215-.1147.0144-.2248.0574-.2965.1196-.0813-.2679-.3301-.4975-.6745-.4449-.311.0527-.5167.3158-.4832.6506.0048.0574.024.1148.0478.177 0 0-.0526.0096-.0908.0144-.2584.0478-.5454.311-.4975.6506.0382.3061.3205.5358.641.4975.1148-.0144.2248-.043.2966-.091.0717.2871.3061.4689.6266.4258.3301-.043.5502-.3013.5167-.6314-.0096-.0909-.0287-.1435-.0526-.2057 0 0 .043-.0048.0765-.0096.3205-.0622.5406-.3205.5119-.6314zm-1.2486.6697c-.1866.024-.354-.11-.378-.2966s.1101-.354.2967-.378c.1913-.0238.3588.1149.3779.2967.024.1865-.11.354-.2966.3779z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/unitedairlines.svg b/assets/lib/simple-icons/icons/unitedairlines.svg
index 9319bc62..2958b7ce 100644
--- a/assets/lib/simple-icons/icons/unitedairlines.svg
+++ b/assets/lib/simple-icons/icons/unitedairlines.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>United Airlines icon</title><path d="M5.327 3.067c8.654 0 15.695 7.068 15.695 15.754 0 1.762-.298 3.515-.875 5.179H24V0H0v4.003l.019-.007a15.569 15.569 0 0 1 5.308-.929M0 10.534c.975-1.389 1.116-2.983.26-3.761a1.56 1.56 0 0 0-.26-.19zm5.027-5.057c-.863-.99-2.3-1.33-3.969-1.092l-.135.02a7.873 7.873 0 0 0-.386.077C.28 4.542.104 4.6 0 4.64v.5a8.47 8.47 0 0 1 .505-.37c.333-.07.656-.116.968-.136C.99 4.91.434 5.283 0 5.627v.385l.015.009s1.224-.969 2.196-1.386c.234.017.458.05.672.099A14.624 14.624 0 0 0 .284 6.168c.15.088.285.199.303.213.019-.012 1.427-.892 2.977-1.42.21.096.413.216.589.351-1.688.474-3.31 1.321-3.31 1.321.092.106.172.221.242.344l.029-.011c1.727-.74 3.562-1.118 3.562-1.118.143.196.262.416.352.658 0 0-1.647.188-3.765.868.093.292.119.512.119.515 0 0 1.997-.447 3.839-.497.026.296.016.628-.026.969-1.09-.058-3.69.08-3.791.089 0 0-.01.374-.107.726 0 0 1.899.061 3.626.383a8.406 8.406 0 0 1-.507 1.22c-1.15-.346-2.897-.766-3.357-.871a5.64 5.64 0 0 1-.453.88s2.134.93 2.953 1.386h.002v.001c-.356.532-1.06 1.277-1.06 1.277a73.343 73.343 0 0 0-.58-.43L.005 11.685 0 11.68v1.765l1.107 1.292c-.364.294-.736.562-1.107.802v1.053l.041-.026a15.948 15.948 0 0 0 1.492-1.151c3.819-3.323 5.383-7.773 3.495-9.94m4.701.184C7.917 3.221 5.08 3.57 4.234 3.688c-.929.13-1.631.334-1.631.334.207.019.49.056.694.097.15-.036 1.454-.333 2.402-.209h.003c-.697.076-1.647.363-1.746.394h-.002a3.154 3.154 0 0 1 .663.3c.102-.026 1.392-.369 2.623-.393 0 0 .455.202.893.503-1.59-.006-2.907.3-2.942.308.186.165.371.364.537.603 1.744-.262 3.248-.148 3.248-.148s.204.25.296.383a5 5 0 0 1 .327.563c-1.779-.208-3.48-.059-3.482-.059.118.303.197.627.24.968.197-.002 1.704.001 3.623.346.062.44.068.912.02 1.41a25.761 25.761 0 0 0-3.622-.65c-.035.43-.116.877-.242 1.336.192.045 2.317.552 3.506 1.034a12.226 12.226 0 0 1-.707 1.76c-.958-.472-3.307-1.39-3.307-1.39a12.625 12.625 0 0 1-.858 1.588s2.014 1.15 2.984 1.786a18.19 18.19 0 0 1-1.511 1.875c-.704-.63-2.464-1.994-2.597-2.097a25.338 25.338 0 0 1-1.496 1.596l2.112 2.422-.06.053c-.458.38-.95.736-1.366 1.022-.361.245-.66.435-.762.501a302.864 302.864 0 0 1-1.615-2.596c-.152.113-.305.22-.458.326v4.539c.248-.12.497-.244.745-.376a18.882 18.882 0 0 0 3.422-2.19 21.666 21.666 0 0 0 2.125-1.93 18.942 18.942 0 0 0 2.2-2.704c2.329-3.438 2.952-7.023 1.236-9.333m3.701.829a3.523 3.523 0 0 0-.4-.468 4.523 4.523 0 0 0-.4-.344c-1.502-1.133-4.268-1.7-4.268-1.7.264.141.484.285.485.286.013.004 1.128.283 2.117.767 0 0-.9-.204-1.476-.284.238.21.465.45.664.703 0 0 1.835.335 2.64.776 0 0 .386.397.701 1.093-1.257-.51-2.682-.777-2.682-.777.19.424.325.878.408 1.35 0 0 1.566.383 2.742.948.102.559.14 1.136.118 1.72a21.613 21.613 0 0 0-2.77-1.134 9.298 9.298 0 0 1-.287 1.865s1.898.847 2.75 1.362a13.329 13.329 0 0 1-.77 2.201c-1.299-.844-2.673-1.594-2.673-1.594-.346.83-1.195 2.187-1.195 2.187.022.015 1.436.986 2.52 1.847a20.88 20.88 0 0 1-1.807 2.346 304.27 304.27 0 0 0-2.312-2.068 22.358 22.358 0 0 1-2.095 2.12l2.008 2.273c-1.302 1.074-2.601 1.887-2.601 1.887L3.17 21.47s-1.18.897-3.17 1.84V24h6.537c7.297-5.52 9.886-13.415 6.892-17.511M12.967 24c1.704-1.905 3.155-4.147 4.027-6.547.757-2.082 1.169-4.625.5-6.887a6.312 6.312 0 0 0-.155-.45 5.429 5.429 0 0 0-.794-1.415 15.18 15.18 0 0 0-2.749-2.413c.15.191.285.389.402.589 0 0 1.231.913 1.946 1.84-.917-.652-1.436-.917-1.503-.95l-.008-.004c.348.859.453 1.57.453 1.57s1.088.568 2.067 1.416c.136.627.192 1.27.183 1.913-.987-.869-2.13-1.547-2.13-1.547a11.7 11.7 0 0 1-.284 2.204s1.079.683 2.13 1.64c0 0-.302 1.358-.789 2.424a26.291 26.291 0 0 0-2.069-1.726s-.5 1.305-1.312 2.616a61.394 61.394 0 0 1 1.959 1.789 21.41 21.41 0 0 1-1.943 2.57v.001l-1.807-1.798a23.958 23.958 0 0 1-2.392 2.55c.04.046.404.45.553.615zm3.213 0h.902c2.567-3.792 2.696-7.153 2.696-7.797 0-1.216-.204-2.334-.546-3.219 0 0-.532-1.375-1.362-2.6a11.694 11.694 0 0 1 .377 1.413c.163.273.9 1.572.999 3.001v.004s-.52-.729-.907-1.19a12.068 12.068 0 0 1-.28 2.33s.772.894 1.117 1.47c0 0-.235 1.258-.738 2.462-.512-.745-1.166-1.468-1.166-1.468a19.217 19.217 0 0 1-1.406 2.778s.978 1.144 1.192 1.47c-.287.484-.567.905-.878 1.346m3.27 0c.194-.525.369-1.085.512-1.654a15.228 15.228 0 0 0 .28-5.658c-.069.998-.243 1.873-.243 1.873.041.132.114.349.147.482v.001a17.79 17.79 0 0 1-.575 2.995c-.131-.484-.307-.95-.318-.98h-.001c-.353.94-.881 2.05-1.361 2.941Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>United Airlines</title><path d="M5.327 3.067c8.654 0 15.695 7.068 15.695 15.754 0 1.762-.298 3.515-.875 5.179H24V0H0v4.003l.019-.007a15.569 15.569 0 0 1 5.308-.929M0 10.534c.975-1.389 1.116-2.983.26-3.761a1.56 1.56 0 0 0-.26-.19zm5.027-5.057c-.863-.99-2.3-1.33-3.969-1.092l-.135.02a7.873 7.873 0 0 0-.386.077C.28 4.542.104 4.6 0 4.64v.5a8.47 8.47 0 0 1 .505-.37c.333-.07.656-.116.968-.136C.99 4.91.434 5.283 0 5.627v.385l.015.009s1.224-.969 2.196-1.386c.234.017.458.05.672.099A14.624 14.624 0 0 0 .284 6.168c.15.088.285.199.303.213.019-.012 1.427-.892 2.977-1.42.21.096.413.216.589.351-1.688.474-3.31 1.321-3.31 1.321.092.106.172.221.242.344l.029-.011c1.727-.74 3.562-1.118 3.562-1.118.143.196.262.416.352.658 0 0-1.647.188-3.765.868.093.292.119.512.119.515 0 0 1.997-.447 3.839-.497.026.296.016.628-.026.969-1.09-.058-3.69.08-3.791.089 0 0-.01.374-.107.726 0 0 1.899.061 3.626.383a8.406 8.406 0 0 1-.507 1.22c-1.15-.346-2.897-.766-3.357-.871a5.64 5.64 0 0 1-.453.88s2.134.93 2.953 1.386h.002v.001c-.356.532-1.06 1.277-1.06 1.277a73.343 73.343 0 0 0-.58-.43L.005 11.685 0 11.68v1.765l1.107 1.292c-.364.294-.736.562-1.107.802v1.053l.041-.026a15.948 15.948 0 0 0 1.492-1.151c3.819-3.323 5.383-7.773 3.495-9.94m4.701.184C7.917 3.221 5.08 3.57 4.234 3.688c-.929.13-1.631.334-1.631.334.207.019.49.056.694.097.15-.036 1.454-.333 2.402-.209h.003c-.697.076-1.647.363-1.746.394h-.002a3.154 3.154 0 0 1 .663.3c.102-.026 1.392-.369 2.623-.393 0 0 .455.202.893.503-1.59-.006-2.907.3-2.942.308.186.165.371.364.537.603 1.744-.262 3.248-.148 3.248-.148s.204.25.296.383a5 5 0 0 1 .327.563c-1.779-.208-3.48-.059-3.482-.059.118.303.197.627.24.968.197-.002 1.704.001 3.623.346.062.44.068.912.02 1.41a25.761 25.761 0 0 0-3.622-.65c-.035.43-.116.877-.242 1.336.192.045 2.317.552 3.506 1.034a12.226 12.226 0 0 1-.707 1.76c-.958-.472-3.307-1.39-3.307-1.39a12.625 12.625 0 0 1-.858 1.588s2.014 1.15 2.984 1.786a18.19 18.19 0 0 1-1.511 1.875c-.704-.63-2.464-1.994-2.597-2.097a25.338 25.338 0 0 1-1.496 1.596l2.112 2.422-.06.053c-.458.38-.95.736-1.366 1.022-.361.245-.66.435-.762.501a302.864 302.864 0 0 1-1.615-2.596c-.152.113-.305.22-.458.326v4.539c.248-.12.497-.244.745-.376a18.882 18.882 0 0 0 3.422-2.19 21.666 21.666 0 0 0 2.125-1.93 18.942 18.942 0 0 0 2.2-2.704c2.329-3.438 2.952-7.023 1.236-9.333m3.701.829a3.523 3.523 0 0 0-.4-.468 4.523 4.523 0 0 0-.4-.344c-1.502-1.133-4.268-1.7-4.268-1.7.264.141.484.285.485.286.013.004 1.128.283 2.117.767 0 0-.9-.204-1.476-.284.238.21.465.45.664.703 0 0 1.835.335 2.64.776 0 0 .386.397.701 1.093-1.257-.51-2.682-.777-2.682-.777.19.424.325.878.408 1.35 0 0 1.566.383 2.742.948.102.559.14 1.136.118 1.72a21.613 21.613 0 0 0-2.77-1.134 9.298 9.298 0 0 1-.287 1.865s1.898.847 2.75 1.362a13.329 13.329 0 0 1-.77 2.201c-1.299-.844-2.673-1.594-2.673-1.594-.346.83-1.195 2.187-1.195 2.187.022.015 1.436.986 2.52 1.847a20.88 20.88 0 0 1-1.807 2.346 304.27 304.27 0 0 0-2.312-2.068 22.358 22.358 0 0 1-2.095 2.12l2.008 2.273c-1.302 1.074-2.601 1.887-2.601 1.887L3.17 21.47s-1.18.897-3.17 1.84V24h6.537c7.297-5.52 9.886-13.415 6.892-17.511M12.967 24c1.704-1.905 3.155-4.147 4.027-6.547.757-2.082 1.169-4.625.5-6.887a6.312 6.312 0 0 0-.155-.45 5.429 5.429 0 0 0-.794-1.415 15.18 15.18 0 0 0-2.749-2.413c.15.191.285.389.402.589 0 0 1.231.913 1.946 1.84-.917-.652-1.436-.917-1.503-.95l-.008-.004c.348.859.453 1.57.453 1.57s1.088.568 2.067 1.416c.136.627.192 1.27.183 1.913-.987-.869-2.13-1.547-2.13-1.547a11.7 11.7 0 0 1-.284 2.204s1.079.683 2.13 1.64c0 0-.302 1.358-.789 2.424a26.291 26.291 0 0 0-2.069-1.726s-.5 1.305-1.312 2.616a61.394 61.394 0 0 1 1.959 1.789 21.41 21.41 0 0 1-1.943 2.57v.001l-1.807-1.798a23.958 23.958 0 0 1-2.392 2.55c.04.046.404.45.553.615zm3.213 0h.902c2.567-3.792 2.696-7.153 2.696-7.797 0-1.216-.204-2.334-.546-3.219 0 0-.532-1.375-1.362-2.6a11.694 11.694 0 0 1 .377 1.413c.163.273.9 1.572.999 3.001v.004s-.52-.729-.907-1.19a12.068 12.068 0 0 1-.28 2.33s.772.894 1.117 1.47c0 0-.235 1.258-.738 2.462-.512-.745-1.166-1.468-1.166-1.468a19.217 19.217 0 0 1-1.406 2.778s.978 1.144 1.192 1.47c-.287.484-.567.905-.878 1.346m3.27 0c.194-.525.369-1.085.512-1.654a15.228 15.228 0 0 0 .28-5.658c-.069.998-.243 1.873-.243 1.873.041.132.114.349.147.482v.001a17.79 17.79 0 0 1-.575 2.995c-.131-.484-.307-.95-.318-.98h-.001c-.353.94-.881 2.05-1.361 2.941Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/unity.svg b/assets/lib/simple-icons/icons/unity.svg
index 781b2d1b..a373b95a 100644
--- a/assets/lib/simple-icons/icons/unity.svg
+++ b/assets/lib/simple-icons/icons/unity.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Unity icon</title><path d="M19.9 19.2L15.6 12l4.3-7.2L22 12l-2.1 7.2zm-9.5-.7L5 13.2h8.6l4.3 7.2-7.5-1.9zm0-13.1l7.5-1.9-4.3 7.2H4.9c0 .1 5.5-5.3 5.5-5.3zm11-5.4l-9.8 2.5L10.1 5H7.2L0 12l7.2 7h2.9l1.4 2.5 9.8 2.5 2.6-9.5-1.4-2.5L24 9.5 21.4 0z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Unity</title><path d="m12.9288 4.2939 3.7997 2.1929c.1366.077.1415.2905 0 .3675l-4.515 2.6076a.4192.4192 0 0 1-.4246 0L7.274 6.8543c-.139-.0745-.1415-.293 0-.3675l3.7972-2.193V0L1.3758 5.5977V16.793l3.7177-2.1456v-4.3858c-.0025-.1565.1813-.2682.318-.1838l4.5148 2.6076a.4252.4252 0 0 1 .2136.3676v5.2127c.0025.1565-.1813.2682-.3179.1838l-3.7996-2.1929-3.7178 2.1457L12 24l9.6954-5.5977-3.7178-2.1457-3.7996 2.1929c-.1341.082-.3229-.0248-.3179-.1838V13.053c0-.1565.087-.2956.2136-.3676l4.5149-2.6076c.134-.082.3228.0224.3179.1838v4.3858l3.7177 2.1456V5.5977L12.9288 0Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/unraid.svg b/assets/lib/simple-icons/icons/unraid.svg
new file mode 100644
index 00000000..98609b05
--- /dev/null
+++ b/assets/lib/simple-icons/icons/unraid.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Unraid</title><path d="M11.406 8.528h1.17v6.926h-1.17zM1.17 15.454H0V8.528h1.17zm4.534.828h1.17v2.645h-1.17zm-2.86-2.969h1.169v4.282h-1.17zm5.703 0h1.17v4.282h-1.17zM22.83 8.528H24v6.926h-1.17zm-4.534-.81h-1.17V5.073h1.17zm2.86 2.95h-1.169V6.406h1.17zm-5.72 0h-1.17V6.406h1.17z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/unrealengine.svg b/assets/lib/simple-icons/icons/unrealengine.svg
index 7e23f2ff..330d7637 100644
--- a/assets/lib/simple-icons/icons/unrealengine.svg
+++ b/assets/lib/simple-icons/icons/unrealengine.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Unreal Engine icon</title><path d="M11.999 0C5.427 0 .1 5.373.1 12c0 6.628 5.327 12 11.899 12 6.571 0 11.899-5.372 11.899-12 0-6.627-5.328-12-11.9-12zm0 .528c3.038 0 5.895 1.194 8.043 3.36A11.446 11.446 0 0 1 23.374 12c0 3.064-1.183 5.945-3.332 8.112A11.254 11.254 0 0 1 12 23.472a11.253 11.253 0 0 1-8.044-3.36A11.447 11.447 0 0 1 .623 12c0-3.064 1.184-5.945 3.332-8.112A11.252 11.252 0 0 1 12 .528zm-.595 4.223c-1.938.52-3.732 1.516-6.123 4.258-2.392 2.742-1.938 5.006-1.938 5.006s.66-1.558 2.247-3.199c.752-.777 1.314-1.037 1.698-1.038a.598.598 0 0 1 .632.602v5.567c0 .55-.354.669-.68.663-.279-.005-.537-.102-.537-.102 1.63 2.368 5.526 2.7 5.526 2.7l1.711-1.828.04.035 1.568 1.336c2.866-1.703 4.248-4.86 4.248-4.86-1.279 1.353-2.094 1.669-2.578 1.667-.429-.003-.597-.255-.597-.255-.023-.117-.063-1.81-.078-3.505-.014-1.756-.001-3.513.087-3.518.494-.929 2.073-2.802 2.073-2.802-2.948.581-4.556 2.513-4.556 2.513-.475-.374-1.444-.311-1.444-.311.454.25.907.976.907 1.578v5.92s-.99.873-1.752.873c-.451 0-.729-.247-.881-.449a1.182 1.182 0 0 1-.15-.258V8.033a.634.634 0 0 1-.363.123c-.162 0-.33-.082-.444-.32-.086-.18-.141-.45-.141-.842 0-1.35 1.525-2.243 1.525-2.243z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Unreal Engine</title><path d="M12 0a12 12 0 1012 12A12 12 0 0012 0zm0 23.52A11.52 11.52 0 1123.52 12 11.52 11.52 0 0112 23.52zm7.13-9.791c-.206.997-1.126 3.557-4.06 4.942l-1.179-1.325-1.988 2a7.338 7.338 0 01-5.804-2.978 2.859 2.859 0 00.65.123c.326.006.678-.114.678-.66v-5.394a.89.89 0 00-1.116-.89c-.92.212-1.656 2.509-1.656 2.509a7.304 7.304 0 012.528-5.597 7.408 7.408 0 013.73-1.721c-1.006.573-1.57 1.507-1.57 2.29 0 1.262.76 1.109.984.923v7.28a1.157 1.157 0 00.148.256 1.075 1.075 0 00.88.445c.76 0 1.747-.868 1.747-.868V9.172c0-.6-.452-1.324-.905-1.572 0 0 .838-.149 1.484.346a5.537 5.537 0 01.387-.425c1.508-1.48 2.929-1.902 4.112-2.112 0 0-2.151 1.69-2.151 3.96 0 1.687.043 5.801.043 5.801.799.771 1.986-.342 3.059-1.441Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/unsplash.svg b/assets/lib/simple-icons/icons/unsplash.svg
index c0c9e552..bea663f5 100644
--- a/assets/lib/simple-icons/icons/unsplash.svg
+++ b/assets/lib/simple-icons/icons/unsplash.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Unsplash icon</title><path d="M7.5 6.75V0h9v6.75h-9zm9 3.75H24V24H0V10.5h7.5v6.75h9V10.5z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Unsplash</title><path d="M7.5 6.75V0h9v6.75h-9zm9 3.75H24V24H0V10.5h7.5v6.75h9V10.5z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/untangle.svg b/assets/lib/simple-icons/icons/untangle.svg
index ec7537ef..5cdc19b9 100644
--- a/assets/lib/simple-icons/icons/untangle.svg
+++ b/assets/lib/simple-icons/icons/untangle.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Untangle icon</title><path d="M3.362 0A3.371 3.371 0 000 3.362v1.73c.014-.001.025-.005.04-.004 1.101.021 2.029.786 2.523 2.008.518 1.282.623 2.637.724 3.948l.086 1.348c.05.903.103 1.837.234 2.752l.077.474.16-.002.077-.476c.143-.86.249-1.736.351-2.583l.12-1.085c.134-1.29.273-2.623.684-3.883l.033-.102c.124-.396.296-.938.847-1.097.687-.197 1.233.163 1.45.582.594 1.143.717 2.433.836 3.681l.082.812.121 1.226c.081.888.165 1.806.345 2.698h.16l.115-.638.064-.37.113-.642c.118-.68.24-1.382.412-2.066l.053-.23c.114-.504.258-1.131.775-1.465.362-.234.691-.284.977-.15.815.384 1.13 2.127 1.233 2.7l.024.13.111.574c.136.706.275 1.438.483 2.15l.022.08c.06.205.12.415.208.62l.086.2.299-.96c.342-1.19.769-2.673 2.233-2.396.848.16 1.122.969 1.323 1.559l.085.243.07.209c.177.542.505 1.552 1.227 1.512.761-.042 1.53-.116 2.272-.189.725-.07 1.475-.142 2.216-.184.22-.013.434-.022.649-.033V3.362A3.372 3.372 0 0020.638 0zM0 6.25v14.388A3.372 3.372 0 003.362 24h17.276A3.372 3.372 0 0024 20.638v-3.703c-1.315.064-2.602.169-3.849.286l-.31.032c-.689.074-1.547.165-2.101-.157-.731-.426-1.028-1.057-1.291-1.72l-.119-.378c-.092-.321-.207-.721-.364-.986l-.073-.124-.102.196a7.8 7.8 0 00-.407 1.013l-.064.203c-.18.59-.555 1.817-1.29 2.119-.303.125-.644.075-1.015-.149-.641-.387-.838-1.098-.996-1.668l-.026-.088c-.2-.718-.344-1.457-.483-2.17l-.106-.54-.08-.432-.166-.774h-.12c-.177.691-.315 1.403-.429 2.089-.158.954-.322 1.941-.646 2.886-.266.773-.721 1.085-1.392.952-.593-.117-.754-.68-.86-1.052-.34-1.193-.46-2.442-.575-3.65l-.122-1.197c-.1-.866-.203-1.76-.368-2.655l-.023-.129c-.048-.258-.101-.552-.173-.828l-.076-.295-.08.294c-.126.463-.2.945-.273 1.41l-.017.108a73.463 73.463 0 00-.347 2.652 69.26 69.26 0 01-.365 2.75l-.031.251c-.07.594-.202 1.7-.795 2.13-.25.181-.566.221-.937.123-1.189-.32-1.26-1.731-1.308-2.666l-.023-.37-.12-1.753c-.07-1.181-.143-2.402-.348-3.597l-.005-.025c-.12-.698-.246-1.418-.61-2.077-.359-.521-1.06-.69-1.06-.69Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Untangle</title><path d="M3.362 0A3.371 3.371 0 000 3.362v1.73c.014-.001.025-.005.04-.004 1.101.021 2.029.786 2.523 2.008.518 1.282.623 2.637.724 3.948l.086 1.348c.05.903.103 1.837.234 2.752l.077.474.16-.002.077-.476c.143-.86.249-1.736.351-2.583l.12-1.085c.134-1.29.273-2.623.684-3.883l.033-.102c.124-.396.296-.938.847-1.097.687-.197 1.233.163 1.45.582.594 1.143.717 2.433.836 3.681l.082.812.121 1.226c.081.888.165 1.806.345 2.698h.16l.115-.638.064-.37.113-.642c.118-.68.24-1.382.412-2.066l.053-.23c.114-.504.258-1.131.775-1.465.362-.234.691-.284.977-.15.815.384 1.13 2.127 1.233 2.7l.024.13.111.574c.136.706.275 1.438.483 2.15l.022.08c.06.205.12.415.208.62l.086.2.299-.96c.342-1.19.769-2.673 2.233-2.396.848.16 1.122.969 1.323 1.559l.085.243.07.209c.177.542.505 1.552 1.227 1.512.761-.042 1.53-.116 2.272-.189.725-.07 1.475-.142 2.216-.184.22-.013.434-.022.649-.033V3.362A3.372 3.372 0 0020.638 0zM0 6.25v14.388A3.372 3.372 0 003.362 24h17.276A3.372 3.372 0 0024 20.638v-3.703c-1.315.064-2.602.169-3.849.286l-.31.032c-.689.074-1.547.165-2.101-.157-.731-.426-1.028-1.057-1.291-1.72l-.119-.378c-.092-.321-.207-.721-.364-.986l-.073-.124-.102.196a7.8 7.8 0 00-.407 1.013l-.064.203c-.18.59-.555 1.817-1.29 2.119-.303.125-.644.075-1.015-.149-.641-.387-.838-1.098-.996-1.668l-.026-.088c-.2-.718-.344-1.457-.483-2.17l-.106-.54-.08-.432-.166-.774h-.12c-.177.691-.315 1.403-.429 2.089-.158.954-.322 1.941-.646 2.886-.266.773-.721 1.085-1.392.952-.593-.117-.754-.68-.86-1.052-.34-1.193-.46-2.442-.575-3.65l-.122-1.197c-.1-.866-.203-1.76-.368-2.655l-.023-.129c-.048-.258-.101-.552-.173-.828l-.076-.295-.08.294c-.126.463-.2.945-.273 1.41l-.017.108a73.463 73.463 0 00-.347 2.652 69.26 69.26 0 01-.365 2.75l-.031.251c-.07.594-.202 1.7-.795 2.13-.25.181-.566.221-.937.123-1.189-.32-1.26-1.731-1.308-2.666l-.023-.37-.12-1.753c-.07-1.181-.143-2.402-.348-3.597l-.005-.025c-.12-.698-.246-1.418-.61-2.077-.359-.521-1.06-.69-1.06-.69Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/untappd.svg b/assets/lib/simple-icons/icons/untappd.svg
index cccaee8f..8ce2c4f7 100644
--- a/assets/lib/simple-icons/icons/untappd.svg
+++ b/assets/lib/simple-icons/icons/untappd.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Untappd icon</title><path d="M11 13.299l-5.824 8.133c-.298.416-.8.635-1.308.572-.578-.072-1.374-.289-2.195-.879S.392 19.849.139 19.323a1.402 1.402 0 0 1 .122-1.425l5.824-8.133a3.066 3.066 0 0 1 1.062-.927l1.146-.604c.23-.121.436-.283.608-.478.556-.631 2.049-2.284 4.696-4.957l.046-.212a.134.134 0 0 1 .096-.1l.146-.037a.135.135 0 0 0 .101-.141l-.015-.18a.13.13 0 0 1 .125-.142c.176-.005.518.046 1.001.393s.64.656.692.824a.13.13 0 0 1-.095.164l-.175.044a.133.133 0 0 0-.101.141l.012.15a.131.131 0 0 1-.063.123l-.186.112c-1.679 3.369-2.764 5.316-3.183 6.046a2.157 2.157 0 0 0-.257.73l-.205 1.281A3.074 3.074 0 0 1 11 13.3zm12.739 4.598l-5.824-8.133a3.066 3.066 0 0 0-1.062-.927l-1.146-.605a2.138 2.138 0 0 1-.608-.478 50.504 50.504 0 0 0-.587-.654.089.089 0 0 0-.142.018 97.261 97.261 0 0 1-1.745 3.223 1.42 1.42 0 0 0-.171.485 3.518 3.518 0 0 0 0 1.103l.01.064c.075.471.259.918.536 1.305l5.824 8.133c.296.413.79.635 1.294.574a4.759 4.759 0 0 0 2.209-.881 4.762 4.762 0 0 0 1.533-1.802 1.4 1.4 0 0 0-.122-1.425zM8.306 3.366l.175.044a.134.134 0 0 1 .101.141l-.012.15a.13.13 0 0 0 .063.123l.186.112c.311.623.599 1.194.869 1.721.026.051.091.06.129.019.437-.469.964-1.025 1.585-1.668a.137.137 0 0 0 .003-.19c-.315-.322-.645-.659-1.002-1.02l-.046-.212a.13.13 0 0 0-.096-.099l-.146-.037a.135.135 0 0 1-.101-.141l.015-.18a.13.13 0 0 0-.123-.142c-.175-.005-.518.045-1.002.393-.483.347-.64.656-.692.824a.13.13 0 0 0 .095.164z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Untappd</title><path d="M11 13.299l-5.824 8.133c-.298.416-.8.635-1.308.572-.578-.072-1.374-.289-2.195-.879S.392 19.849.139 19.323a1.402 1.402 0 0 1 .122-1.425l5.824-8.133a3.066 3.066 0 0 1 1.062-.927l1.146-.604c.23-.121.436-.283.608-.478.556-.631 2.049-2.284 4.696-4.957l.046-.212a.134.134 0 0 1 .096-.1l.146-.037a.135.135 0 0 0 .101-.141l-.015-.18a.13.13 0 0 1 .125-.142c.176-.005.518.046 1.001.393s.64.656.692.824a.13.13 0 0 1-.095.164l-.175.044a.133.133 0 0 0-.101.141l.012.15a.131.131 0 0 1-.063.123l-.186.112c-1.679 3.369-2.764 5.316-3.183 6.046a2.157 2.157 0 0 0-.257.73l-.205 1.281A3.074 3.074 0 0 1 11 13.3zm12.739 4.598l-5.824-8.133a3.066 3.066 0 0 0-1.062-.927l-1.146-.605a2.138 2.138 0 0 1-.608-.478 50.504 50.504 0 0 0-.587-.654.089.089 0 0 0-.142.018 97.261 97.261 0 0 1-1.745 3.223 1.42 1.42 0 0 0-.171.485 3.518 3.518 0 0 0 0 1.103l.01.064c.075.471.259.918.536 1.305l5.824 8.133c.296.413.79.635 1.294.574a4.759 4.759 0 0 0 2.209-.881 4.762 4.762 0 0 0 1.533-1.802 1.4 1.4 0 0 0-.122-1.425zM8.306 3.366l.175.044a.134.134 0 0 1 .101.141l-.012.15a.13.13 0 0 0 .063.123l.186.112c.311.623.599 1.194.869 1.721.026.051.091.06.129.019.437-.469.964-1.025 1.585-1.668a.137.137 0 0 0 .003-.19c-.315-.322-.645-.659-1.002-1.02l-.046-.212a.13.13 0 0 0-.096-.099l-.146-.037a.135.135 0 0 1-.101-.141l.015-.18a.13.13 0 0 0-.123-.142c-.175-.005-.518.045-1.002.393-.483.347-.64.656-.692.824a.13.13 0 0 0 .095.164z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/upcloud.svg b/assets/lib/simple-icons/icons/upcloud.svg
new file mode 100644
index 00000000..bae90b9f
--- /dev/null
+++ b/assets/lib/simple-icons/icons/upcloud.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>UpCloud</title><path d="M22.1155 12.9964a1.8845 1.8845 0 110 3.769H8.6643V11.87h.888v4.0072h12.5849a1.0078 1.0078 0 00.9964-.9964 1.0317 1.0317 0 00-1.0397-.9964H10.397v-.888zm-8.6859-5.7617H8.6643v1.9927h.888V8.1011h3.899a1.0078 1.0078 0 01.9964.9964 1.0653 1.0653 0 01-1.018 1.0397H1.8845a1.8845 1.8845 0 100 3.769h5.8917v-.8881H1.8845a.9964.9964 0 010-1.9928h11.5668a1.8999 1.8999 0 001.8844-1.8845 1.9375 1.9375 0 00-1.9061-1.9061z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/uplabs.svg b/assets/lib/simple-icons/icons/uplabs.svg
index 87596164..cd7881ed 100644
--- a/assets/lib/simple-icons/icons/uplabs.svg
+++ b/assets/lib/simple-icons/icons/uplabs.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>UpLabs icon</title><path d="M9.804 19.205c-.112-.111-.186-.26-.297-.372-.889-.894-2.259-1.34-4.11-1.34-1.816 0-3.186.446-4.075 1.34-.111.112-.185.223-.296.372zm2.88-.044V5.164h2.959V6.9c.406-.702.887-1.219 1.479-1.588a4.057 4.057 0 0 1 2.034-.517c1.516 0 2.7.517 3.55 1.514.85.997 1.294 2.4 1.294 4.173 0 1.736-.444 3.102-1.294 4.136-.85 1.034-1.997 1.551-3.402 1.551-.851 0-1.554-.147-2.145-.48-.592-.295-1.11-.812-1.516-1.477.037.259.073.554.073.886 0 .296.037.665.037 1.071v2.955h-3.069zm2.81-8.679c0 .96.222 1.699.703 2.253.481.517 1.147.812 1.96.812.85 0 1.516-.258 1.96-.812.48-.517.703-1.293.703-2.253 0-.96-.222-1.699-.703-2.253-.48-.554-1.146-.812-1.997-.812-.813 0-1.479.295-1.96.85-.444.48-.665 1.255-.665 2.215zM7.73 5.201v5.577c0 .923-.185 1.588-.555 1.994-.37.406-.961.628-1.775.628-.813 0-1.405-.185-1.775-.591-.37-.407-.555-1.071-.555-2.031V5.2H0v5.577c0 1.661.333 2.88.998 3.767.111.11.185.258.296.369.888.886 2.256 1.33 4.105 1.33 1.812 0 3.18-.444 4.068-1.33.11-.111.185-.222.296-.37.665-.886.998-2.142.998-3.766V5.2Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>UpLabs</title><path d="M9.804 19.205c-.112-.111-.186-.26-.297-.372-.889-.894-2.259-1.34-4.11-1.34-1.816 0-3.186.446-4.075 1.34-.111.112-.185.223-.296.372zm2.88-.044V5.164h2.959V6.9c.406-.702.887-1.219 1.479-1.588a4.057 4.057 0 0 1 2.034-.517c1.516 0 2.7.517 3.55 1.514.85.997 1.294 2.4 1.294 4.173 0 1.736-.444 3.102-1.294 4.136-.85 1.034-1.997 1.551-3.402 1.551-.851 0-1.554-.147-2.145-.48-.592-.295-1.11-.812-1.516-1.477.037.259.073.554.073.886 0 .296.037.665.037 1.071v2.955h-3.069zm2.81-8.679c0 .96.222 1.699.703 2.253.481.517 1.147.812 1.96.812.85 0 1.516-.258 1.96-.812.48-.517.703-1.293.703-2.253 0-.96-.222-1.699-.703-2.253-.48-.554-1.146-.812-1.997-.812-.813 0-1.479.295-1.96.85-.444.48-.665 1.255-.665 2.215zM7.73 5.201v5.577c0 .923-.185 1.588-.555 1.994-.37.406-.961.628-1.775.628-.813 0-1.405-.185-1.775-.591-.37-.407-.555-1.071-.555-2.031V5.2H0v5.577c0 1.661.333 2.88.998 3.767.111.11.185.258.296.369.888.886 2.256 1.33 4.105 1.33 1.812 0 3.18-.444 4.068-1.33.11-.111.185-.222.296-.37.665-.886.998-2.142.998-3.766V5.2Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/uploaded.svg b/assets/lib/simple-icons/icons/uploaded.svg
index b62084ee..7d64147e 100644
--- a/assets/lib/simple-icons/icons/uploaded.svg
+++ b/assets/lib/simple-icons/icons/uploaded.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Uploaded icon</title><path d="m14.651 13.862c0 2.5477-2.0653 4.613-4.613 4.613-2.5477 0-4.613-2.0653-4.613-4.613 0-6.1507 9.226-6.1507 9.226 0zm3.497 6.04c-1.33 1.334-3.109 3.957-8.119 4.095-5.451 0.148-9.959-4.484-9.978-10.282-0.01-2.945 0.774-4.659 2.82-6.792 1.224-1.278 7.004-6.923 7.004-6.923 2.052 2.052 0.96 4.873-0.108 5.93l-3.732 3.705c-0.47 0.465-1.968 1.925-1.931 4.444 0.045 3.202 2.51 5.85 5.799 5.8 2.632-0.042 3.756-1.356 4.376-1.98l3.841-3.828c1.103-1.093 3.77-2.027 5.829 5e-3z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Uploaded</title><path d="m14.651 13.862c0 2.5477-2.0653 4.613-4.613 4.613-2.5477 0-4.613-2.0653-4.613-4.613 0-6.1507 9.226-6.1507 9.226 0zm3.497 6.04c-1.33 1.334-3.109 3.957-8.119 4.095-5.451 0.148-9.959-4.484-9.978-10.282-0.01-2.945 0.774-4.659 2.82-6.792 1.224-1.278 7.004-6.923 7.004-6.923 2.052 2.052 0.96 4.873-0.108 5.93l-3.732 3.705c-0.47 0.465-1.968 1.925-1.931 4.444 0.045 3.202 2.51 5.85 5.799 5.8 2.632-0.042 3.756-1.356 4.376-1.98l3.841-3.828c1.103-1.093 3.77-2.027 5.829 5e-3z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ups.svg b/assets/lib/simple-icons/icons/ups.svg
new file mode 100644
index 00000000..91fc58f9
--- /dev/null
+++ b/assets/lib/simple-icons/icons/ups.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>UPS</title><path d="M11.668 14.544l-.028-5.226c.138-.055.387-.111.608-.111.995 0 1.41.774 1.41 2.682 0 1.853-.47 2.765-1.438 2.765-.22 0-.441-.055-.552-.11zM3.124 7.438c4.203-3.843 9.29-4.866 14.018-4.866 1.3 0 2.544.083 3.76.194h-.028v11.253c0 2.184-.774 3.926-2.295 5.171-1.355 1.134-5.447 2.959-6.581 3.456-1.161-.525-5.253-2.378-6.581-3.456-1.493-1.244-2.295-3.014-2.295-5.171V7.438zm12.664 2.599c.028.912.276 1.576 1.687 2.406.747.442 1.051.747 1.051 1.272 0 .581-.387.94-1.023.94-.553 0-1.189-.304-1.631-.691v1.576c.553.304 1.217.525 1.88.525 1.687 0 2.433-1.189 2.461-2.267.028-.995-.249-1.742-1.659-2.571-.608-.387-1.134-.636-1.106-1.244 0-.581.525-.802.995-.802.581 0 1.161.332 1.521.691V8.378c-.304-.221-.94-.581-1.88-.553-1.135.028-2.296.829-2.296 2.212zm-5.834 9.484h1.714l-.028-3.594c.166.028.415.083.774.083 1.908 0 2.986-1.687 2.986-4.175 0-2.461-1.106-4.009-3.152-4.009-.94 0-1.687.221-2.295.608v11.087zm-5.945-6.166c0 1.797.829 2.71 2.516 2.71 1.051 0 1.908-.249 2.571-.691V7.991H7.41v6.387c-.194.138-.47.221-.802.221-.774 0-.885-.719-.885-1.189V7.991H4.009v5.364zM22.12 2.295v11.723c0 2.516-.94 4.645-2.765 6.111-1.549 1.3-6.332 3.429-7.355 3.871-1.023-.442-5.806-2.571-7.355-3.843-1.797-1.465-2.765-3.594-2.765-6.111V2.295C4.756.747 8.074 0 12 0s7.244.747 10.12 2.295zm-.304.221c-2.71-1.465-6-2.184-9.788-2.184s-7.079.746-9.788 2.184v11.502c0 2.433.912 4.452 2.627 5.862 1.576 1.3 6.581 3.484 7.161 3.76.581-.249 5.585-2.433 7.161-3.733 1.714-1.41 2.627-3.429 2.627-5.862V2.516zm-2.433 20.295c0 .47-.387.829-.829.829a.831.831 0 0 1-.829-.829c0-.47.387-.829.829-.829.441 0 .801.359.829.829zm-.166 0a.679.679 0 0 0-.664-.691c-.359 0-.664.332-.664.691 0 .359.304.664.664.664a.673.673 0 0 0 .664-.664zm-.553.055c.028.055.304.442.304.442h-.221s-.276-.387-.276-.415h-.028v.415h-.194v-.995l.304-.028c.249 0 .332.166.332.304s-.083.25-.221.277zm.027-.276c0-.055 0-.138-.166-.138h-.083v.304h.028c.194 0 .221-.083.221-.166z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/upstash.svg b/assets/lib/simple-icons/icons/upstash.svg
new file mode 100644
index 00000000..6a0e00b8
--- /dev/null
+++ b/assets/lib/simple-icons/icons/upstash.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Upstash</title><path d="M13.8027 0C11.193 0 8.583.9952 6.5918 2.9863c-3.9823 3.9823-3.9823 10.4396 0 14.4219 1.9911 1.9911 5.2198 1.9911 7.211 0 1.991-1.9911 1.991-5.2198 0-7.211L12 12c.9956.9956.9956 2.6098 0 3.6055-.9956.9955-2.6099.9955-3.6055 0-2.9866-2.9868-2.9866-7.8297 0-10.8164 2.9868-2.9868 7.8297-2.9868 10.8164 0l1.8028-1.8028C19.0225.9952 16.4125 0 13.8027 0zM12 12c-.9956-.9956-.9956-2.6098 0-3.6055.9956-.9955 2.6098-.9955 3.6055 0 2.9867 2.9868 2.9867 7.8297 0 10.8164-2.9867 2.9868-7.8297 2.9868-10.8164 0l-1.8028 1.8028c3.9823 3.9822 10.4396 3.9822 14.4219 0 3.9823-3.9824 3.9823-10.4396 0-14.4219-.9956-.9956-2.3006-1.4922-3.6055-1.4922-1.3048 0-2.6099.4966-3.6054 1.4922-1.9912 1.9912-1.9912 5.2198 0 7.211z"/></svg>
diff --git a/assets/lib/simple-icons/icons/uptobox.svg b/assets/lib/simple-icons/icons/uptobox.svg
new file mode 100644
index 00000000..f751d39c
--- /dev/null
+++ b/assets/lib/simple-icons/icons/uptobox.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Uptobox</title><path d="M20.803 9.948c0 .037.17.49.37.992l.377.927-.36.917c-.585 1.504-.595 1.362.095 1.333.568-.028.596-.038.69-.33.161-.464.237-.473.407-.048l.152.397h.747c.416 0 .737-.028.718-.075-.274-.558-.832-2.062-.832-2.241 0-.067.151-.511.331-.984.18-.463.331-.88.331-.908 0-.028-.236-.047-.539-.028-.52.028-.539.038-.643.36-.132.397-.246.387-.388-.03-.104-.302-.104-.302-.775-.33-.378-.02-.68.01-.68.047zm-3.243.103c-.142.152-.16.435-.16 1.977 0 1.617.018 1.815.17 1.947.141.133.396.16 1.418.16 1.626 0 1.531.124 1.531-2.126 0-2.26.095-2.128-1.55-2.128-1.097 0-1.277.02-1.41.17zm1.541 2.014c0 .899-.019 1.04-.15 1.012-.077-.02-.143-.057-.143-.104.01-.038.01-.492.01-1.012 0-.775.028-.945.141-.945.114 0 .142.18.142 1.05zm-5.2-.056v2.127h1.408c1.712 0 1.665.029 1.646-1.125-.003-.173 0-.562-.052-.741-.046-.16-.124-.1-.125-.254-.002-.132.08-.131.12-.258.05-.158.037-.455.037-.62.01-.964-.009-1.06-.188-1.153-.104-.057-.747-.104-1.513-.104H13.9zm1.683-.653c-.038.369-.303.369-.34 0-.039-.274.15-.491.292-.35.048.048.067.199.048.35zm.02 1.41c0 .264-.039.33-.19.33-.142 0-.19-.066-.19-.265 0-.302.066-.397.256-.397.075 0 .123.114.123.33zm-4.947-2.715c-.142.152-.16.435-.16 1.977 0 1.617.018 1.815.17 1.947.141.133.387.16 1.361.16 1.021 0 1.201-.018 1.333-.17.142-.15.161-.434.161-1.975 0-1.617-.019-1.816-.17-1.948-.142-.132-.388-.16-1.362-.16-1.02 0-1.2.018-1.333.17zm1.541 2.014c0 .965-.009 1.03-.189 1.03s-.189-.065-.189-1.03c0-.737.038-1.05.123-1.078.227-.075.255.048.255 1.078zm-5.106-2.042a.145.145 0 0 1-.142.142c-.113 0-.14.123-.14.52s.027.52.14.52c.123 0 .142.217.142 1.352 0 .927.038 1.39.114 1.466.075.075.51.113 1.324.113 1.626 0 1.607.02 1.57-1.494l-.03-1.106H8.748l-.028.775c-.02.615-.057.785-.16.785-.115 0-.143-.18-.143-.945v-.937l.832-.028.823-.028v-.946c-.56-.017-1.146-.04-1.694-.061-.057-.02-.074-.13-.09-.158-.114-.208-1.195-.17-1.195.03zm-3.687 1.986v2.137l.67-.03.672-.027.02-.757.01-.756.708-.028c.388-.02.756-.076.822-.133.17-.132.17-2.26.01-2.42-.076-.076-.548-.114-1.513-.114h-1.4zm1.74-.936c.085.217-.02.51-.18.51-.18 0-.274-.36-.142-.52.151-.18.246-.18.321.01zm-5.144.784c0 2.45-.114 2.28 1.626 2.28 1.588 0 1.494.15 1.494-2.346V9.87l-.68.03-.682.027-.01 1.485c0 1.03-.037 1.522-.113 1.598-.18.18-.217-.02-.236-1.617l-.028-1.466-.68-.028-.69-.028z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/upwork.svg b/assets/lib/simple-icons/icons/upwork.svg
index 0ca6209d..5416f7d2 100644
--- a/assets/lib/simple-icons/icons/upwork.svg
+++ b/assets/lib/simple-icons/icons/upwork.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Upwork icon</title><path d="M18.561 13.158c-1.102 0-2.135-.467-3.074-1.227l.228-1.076.008-.042c.207-1.143.849-3.06 2.839-3.06 1.492 0 2.703 1.212 2.703 2.703-.001 1.489-1.212 2.702-2.704 2.702zm0-8.14c-2.539 0-4.51 1.649-5.31 4.366-1.22-1.834-2.148-4.036-2.687-5.892H7.828v7.112c-.002 1.406-1.141 2.546-2.547 2.548-1.405-.002-2.543-1.143-2.545-2.548V3.492H0v7.112c0 2.914 2.37 5.303 5.281 5.303 2.913 0 5.283-2.389 5.283-5.303v-1.19c.529 1.107 1.182 2.229 1.974 3.221l-1.673 7.873h2.797l1.213-5.71c1.063.679 2.285 1.109 3.686 1.109 3 0 5.439-2.452 5.439-5.45 0-3-2.439-5.439-5.439-5.439z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Upwork</title><path d="M18.561 13.158c-1.102 0-2.135-.467-3.074-1.227l.228-1.076.008-.042c.207-1.143.849-3.06 2.839-3.06 1.492 0 2.703 1.212 2.703 2.703-.001 1.489-1.212 2.702-2.704 2.702zm0-8.14c-2.539 0-4.51 1.649-5.31 4.366-1.22-1.834-2.148-4.036-2.687-5.892H7.828v7.112c-.002 1.406-1.141 2.546-2.547 2.548-1.405-.002-2.543-1.143-2.545-2.548V3.492H0v7.112c0 2.914 2.37 5.303 5.281 5.303 2.913 0 5.283-2.389 5.283-5.303v-1.19c.529 1.107 1.182 2.229 1.974 3.221l-1.673 7.873h2.797l1.213-5.71c1.063.679 2.285 1.109 3.686 1.109 3 0 5.439-2.452 5.439-5.45 0-3-2.439-5.439-5.439-5.439z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/usps.svg b/assets/lib/simple-icons/icons/usps.svg
new file mode 100644
index 00000000..bae93a51
--- /dev/null
+++ b/assets/lib/simple-icons/icons/usps.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>USPS</title><path d="M3.145 4.577L0 19.423h20.855L24 4.577H3.145zm-.157 3.806h9.436c.157 0 5.064 0 5.159.975H9.09l1.321 4.026c1.51-.723 5.222-2.233 7.455-2.328.944-.031 1.321.126 1.132.252-.126.063-1.038.189-1.761.377-1.258.315-1.321.315-2.642.755-1.478.503-2.705 1.069-4.53 1.919L.723 18.983l2.265-10.6zm16.483 1.698c-.535-.094-2.768.063-3.334.063-.126 0-.472.031-.472-.063 0-.063.126-.063.377-.094s1.006-.157 1.258-.283c.063-.063.22-.157.315-.252.031-.063.063-.094.157-.094h1.164c.755 0 1.195.094 1.132.723-.031.315-.472 1.132-.629 1.384-.063.094-.189.189-.157 0 .126-.503.597-1.321.189-1.384zm.88 8.902H2.076s17.363-6.794 17.552-6.92c0 0 1.541-2.076.629-2.925-.283-.283-.692-.283-2.265-.283 0 0-.063-.598-2.485-1.164-.283-.063-11.858-2.517-11.858-2.517h19.628l-2.926 13.809zm2.925-.695c0-.195-.114-.293-.358-.293h-.406v1.008h.146v-.439h.179l.276.455h.179L23 18.564c.162-.016.276-.097.276-.276zm-.455.146h-.163v-.341h.211c.114 0 .228.016.228.163 0 .162-.13.178-.276.178zm.016-.829a.868.868 0 0 0-.894.878c0 .504.406.894.894.894s.894-.39.894-.894a.878.878 0 0 0-.894-.878zm0 1.642c-.423 0-.731-.325-.731-.764 0-.423.325-.748.731-.748.406 0 .731.325.731.748 0 .439-.325.764-.731.764z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/v.svg b/assets/lib/simple-icons/icons/v.svg
index f56a1313..6fd0c5c0 100644
--- a/assets/lib/simple-icons/icons/v.svg
+++ b/assets/lib/simple-icons/icons/v.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>V icon</title><path d="M23.474,0.159L17.08,0.775c-0.406,0.039-0.844,0.383-0.978,0.768l-4.092,11.749L7.898,1.542 C7.764,1.158,7.325,0.814,6.92,0.775L0.526,0.159C0.121,0.12-0.096,0.399,0.041,0.783L8.085,23.15 c0.138,0.383,0.581,0.695,0.988,0.695h6.223h0.039c0.073,0,0.134-0.02,0.179-0.055c0.124-0.062,0.231-0.169,0.275-0.292 l0.039-0.108l8.13-22.607C24.096,0.399,23.879,0.12,23.474,0.159z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>V</title><path d="M15.583 23.4965c.0673.1924-.0435.3484-.2472.3484h-6.262c-.4075 0-.8502-.3113-.9881-.6947L.0426.7837C-.105.3925.149.1152.5276.1599l6.393.6158c.4056.0391.8441.383.9787.7675l7.6837 21.9533zM23.4736.1599l-6.393.6159c-.4055.0391-.8436.3832-.9775.7678l-3.8275 10.9895 3.6784 10.5098L23.9586.7837c.1378-.3834-.0795-.663-.485-.6238z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/v8.svg b/assets/lib/simple-icons/icons/v8.svg
index 36eef48d..1cd1b809 100644
--- a/assets/lib/simple-icons/icons/v8.svg
+++ b/assets/lib/simple-icons/icons/v8.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" role="img"><title>V8 icon</title><path d="M6.832 6c0-.161.008-.322.023-.479.019-.207.07-.401.112-.599l-.694-1.377H0l2.182 3.818h1.527l2.097 3.98a6.534 6.534 0 0 1 1.727-2.745A5.123 5.123 0 0 1 6.832 6zM10.365 19.663L12 22.637l1.637-2.975c-.535.138-1.079.234-1.637.234s-1.101-.096-1.635-.233zM17.728 3.545l-.717 1.258c.056.238.112.476.134.726a5.148 5.148 0 0 1-.677 3.07 6.565 6.565 0 0 1 1.727 2.746l2.097-3.981h1.527L24 3.545h-6.272z M17.846 12.007a6 6 0 0 0-2.073-3.31A4.64 4.64 0 0 0 12 1.363 4.635 4.635 0 0 0 7.363 6a4.62 4.62 0 0 0 .865 2.697A5.988 5.988 0 0 0 6 13.363a6.01 6.01 0 0 0 3.814 5.592 6.02 6.02 0 0 0 4.375-.003 6.006 6.006 0 0 0 3.657-6.945zM12 4.227c1.129 0 2.046.917 2.046 2.045a2.046 2.046 0 0 1-4.092 0c0-1.128.918-2.045 2.046-2.045zm0 11.456a2.32 2.32 0 0 1 0-4.637c1.282 0 2.318 1.037 2.318 2.318S13.282 15.683 12 15.683z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>V8</title><path d="M6.832 6c0-.161.008-.322.023-.479.019-.207.07-.401.112-.599l-.694-1.377H0l2.182 3.818h1.527l2.097 3.98a6.534 6.534 0 0 1 1.727-2.745A5.123 5.123 0 0 1 6.832 6zM10.365 19.663L12 22.637l1.637-2.975c-.535.138-1.079.234-1.637.234s-1.101-.096-1.635-.233zM17.728 3.545l-.717 1.258c.056.238.112.476.134.726a5.148 5.148 0 0 1-.677 3.07 6.565 6.565 0 0 1 1.727 2.746l2.097-3.981h1.527L24 3.545h-6.272z M17.846 12.007a6 6 0 0 0-2.073-3.31A4.64 4.64 0 0 0 12 1.363 4.635 4.635 0 0 0 7.363 6a4.62 4.62 0 0 0 .865 2.697A5.988 5.988 0 0 0 6 13.363a6.01 6.01 0 0 0 3.814 5.592 6.02 6.02 0 0 0 4.375-.003 6.006 6.006 0 0 0 3.657-6.945zM12 4.227c1.129 0 2.046.917 2.046 2.045a2.046 2.046 0 0 1-4.092 0c0-1.128.918-2.045 2.046-2.045zm0 11.456a2.32 2.32 0 0 1 0-4.637c1.282 0 2.318 1.037 2.318 2.318S13.282 15.683 12 15.683z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/vaadin.svg b/assets/lib/simple-icons/icons/vaadin.svg
new file mode 100644
index 00000000..28666bfc
--- /dev/null
+++ b/assets/lib/simple-icons/icons/vaadin.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Vaadin</title><path d="M1.166.521C.506.521 0 1.055 0 1.715v1.97c0 2.316 1.054 3.473 3.502 3.473h5.43c1.623 0 1.783.685 1.783 1.35 0 .068.004.13.012.193a1.268 1.268 0 0 0 2.531-.004c.007-.062.012-.121.012-.19 0-.664.16-1.349 1.783-1.349h5.43C22.93 7.158 24 6.001 24 3.686V1.715c0-.66-.524-1.194-1.184-1.194-.66 0-1.189.534-1.189 1.194l-.004.685c0 .746-.476 1.27-1.594 1.27h-5.322c-2.422 0-2.608 1.796-2.687 2.748h-.055c-.08-.952-.266-2.748-2.688-2.748H3.955c-1.118 0-1.629-.544-1.629-1.29v-.665c0-.66-.5-1.194-1.16-1.194zm5.875 10.553a1.586 1.586 0 0 0-1.375 2.371c1.657 3.06 3.308 6.13 4.967 9.184a1.415 1.415 0 0 0 2.586.02l.033-.06 4.945-9.142a1.587 1.587 0 0 0-1.377-2.373c-.702 0-1.179.345-1.502 1.082l-3.386 6.313-3.383-6.305c-.326-.745-.805-1.09-1.508-1.09Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/vagrant.svg b/assets/lib/simple-icons/icons/vagrant.svg
index 042879a0..e596f901 100644
--- a/assets/lib/simple-icons/icons/vagrant.svg
+++ b/assets/lib/simple-icons/icons/vagrant.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Vagrant icon</title><path d="M5.672 6.774V4.917l3.164-1.822L3.56.005.397 1.852v2.263L7.52 21.41 12 23.995v-6.496l2.107-1.224-.024-.015 4.245-9.486V4.917l5.275-3.065L20.439.005l-5.272 3.087h-.003V5.202L12 12.584v2.467l-2.11 1.224zm3.164-3.66L8.814 3.1 5.672 4.917v1.857l4.218 9.501L12 15.234v-2.65L8.836 5.202zm9.492 1.803v1.857l-4.22 9.101L12 17.332v6.663l4.521-2.607L23.603 4.05V1.852z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Vagrant</title><path d="M3.556 0L.392 1.846V4.11l7.124 17.3L11.998 24l4.523-2.611 7.083-17.345V1.848l.004-.002L20.44 0l-5.274 3.087v2.111l-3.168 7.384-3.164-7.384V3.109l-.017-.008.017-.01z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/valve.svg b/assets/lib/simple-icons/icons/valve.svg
index 3e86801c..b290c756 100644
--- a/assets/lib/simple-icons/icons/valve.svg
+++ b/assets/lib/simple-icons/icons/valve.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Valve icon</title><path d="M0 8.579v6.842h24V8.58zm1.8 1.415h.793l.776 3.044.76-3.044h.836l-1.227 4.029H3zm5.488 0h1.084l1.145 4.034h-.814l-.27-1.007H7.228s-.21.81-.254.99c-.242.017-.83 0-.83 0zm4.184 0h.792v3.352h1.69v.677h-2.482zm3.45 0h.816l.776 3.005.754-3.005h.815l-1.222 4.034h-.716zm4.828 0h1.69v.522h-1.084v.584h.99v.523h-.99v.6h1.084v.523h-1.69zm-11.902.68l-.426 1.702h.89z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Valve</title><path d="M0 8.579v6.842h24V8.58zm1.8 1.415h.793l.776 3.044.76-3.044h.836l-1.227 4.029H3zm5.488 0h1.084l1.145 4.034h-.814l-.27-1.007H7.228s-.21.81-.254.99c-.242.017-.83 0-.83 0zm4.184 0h.792v3.352h1.69v.677h-2.482zm3.45 0h.816l.776 3.005.754-3.005h.815l-1.222 4.034h-.716zm4.828 0h1.69v.522h-1.084v.584h.99v.523h-.99v.6h1.084v.523h-1.69zm-11.902.68l-.426 1.702h.89z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/vapor.svg b/assets/lib/simple-icons/icons/vapor.svg
new file mode 100644
index 00000000..8f224cfb
--- /dev/null
+++ b/assets/lib/simple-icons/icons/vapor.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Vapor</title><path d="M22.75 13.908v1.56L12 24 1.25 15.468v-1.56L12 22.44l10.75-8.532zM12 17.267L1.25 8.824 12 0l10.75 8.824L12 17.267zm.356-4.635a3.193 3.193 0 0 0 3.193-3.193 3.185 3.185 0 0 0-3.029-3.176l.001-.016-4.514-.427 1.205 4.102a3.184 3.184 0 0 0 3.144 2.71zM12 20.269L1.25 11.737v1.533L12 21.802l10.75-8.532v-1.533L12 20.269zm0-2.366L1.25 9.46v1.64L12 19.63l10.75-8.532V9.46L12 17.903z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/vault.svg b/assets/lib/simple-icons/icons/vault.svg
new file mode 100644
index 00000000..d5be8c74
--- /dev/null
+++ b/assets/lib/simple-icons/icons/vault.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Vault</title><path d="M0 0l11.955 24L24 0zm13.366 4.827h1.393v1.38h-1.393zm-2.77 5.569H9.22V8.993h1.389zm0-2.087H9.22V6.906h1.389zm0-2.086H9.22V4.819h1.389zm2.087 6.263h-1.377V11.08h1.388zm0-2.09h-1.377V8.993h1.388zm0-2.087h-1.377V6.906h1.388zm0-2.086h-1.377V4.819h1.388zm.683.683h1.393v1.389h-1.393zm0 3.475V8.993h1.389v1.388Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/vauxhall.svg b/assets/lib/simple-icons/icons/vauxhall.svg
index 240b0982..82147941 100644
--- a/assets/lib/simple-icons/icons/vauxhall.svg
+++ b/assets/lib/simple-icons/icons/vauxhall.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Vauxhall icon</title><path d="M24.007 12c0 6.627-5.372 12-12 12s-12-5.373-12-12 5.373-12 12-12 12 5.373 12 12zm-15 8.684a10.346 10.346 0 0 1-.744-2.33c-.342-.055-.937-.174-1.464-.401-.25-.108-.592-.207-.532-.116.067.102.149.158.198.231.056.086-.538-.043-.99-.358-.388-.272-.514-.349-.953-.187a3.365 3.365 0 0 0-.553.27 10.004 10.004 0 0 0 4.39 3.373l.647-.482zm4.41-13.104c.055.03.359.182.55.27.19.087.328.066.38.045.05-.021.22-.148.358-.264.094-.077.042-.099-.102-.163a2.764 2.764 0 0 0-.794-.2h-.026c-.072 0-.148.03-.302.148-.075.059-.162.109-.064.164zm6.273 3.183c-.028-4.617-4.328-7.777-9.365-6.833-.9.169-1.575.28-.03-.677.951-.59 2.217-.983 3.437-1.067a10.122 10.122 0 0 0-1.701-.144c-5.514 0-9.984 4.436-9.984 9.908 0 .825.103 1.627.295 2.394.31-.109.506-.155.506-.155a9.489 9.489 0 0 1 .134-4.764l-.002.007.004-.014a9.392 9.392 0 0 1 1.799-3.387l5.293-.002-2.08 3.68H3.902a8.65 8.65 0 0 0-.063 4.584c.022.043.46.865 1.927.86.235-.002.91-.007 2.137-.03a.264.264 0 0 0 .203-.096.433.433 0 0 0 .09-.234c.022-.164.045-.32.005-.39-.053-.09-.203-.069-.535.16-.233.16-.319.089-.316-.11-.009-.264.159-.807.466-1.59.14-.358.352-.858.383-.936.172-.43.362-.627.053-.512-.632.235.439-1.261 1.063-2.006.29-.346.596-.6.28-.546-.479.08.745-1.063 1.258-1.391.345-.222.498-.368.65-.526.458-.482.517-.629.898-1.029.376-.393.638-.564.761-.564.095 0 .108.1.03.278-.369.83-.494 1.36 1.284 1.254.97-.059.91.727.912.727 2.614.121 1.166 2.35 1.161 2.337-.26-.811-1.16-.766-1.77-.675-.536.079-.095.17.065.223.997.333.798.698.71.68-1.37-.27-1.757.47-1.759 1.186-.006 2.14 1.019 4.17 2.688 4.774 1.863-.786 3.225-2.302 3.207-5.374zM5.654 6.856c.052.26.426 1.947.468 2.121.046.196.085.286.254.286h.904c.145 0 .187-.032.268-.172.132-.23 1.315-2.266 1.315-2.266s.127-.199-.152-.199h-.543c-.046 0-.094.024-.126.08a536.81 536.81 0 0 0-1.104 1.962l-.399-1.914s-.008-.128-.163-.128l-.537-.001c-.11.001-.227.02-.185.231z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Vauxhall</title><path d="M12.002 24C5.375 24.001.002 18.63 0 12.002-.001 5.375 5.37.002 11.998 0s12 5.37 12.002 11.998c.007 6.621-5.375 12.007-11.998 12.002zM15.8 5.371c.338.022.658.038.978.066a4.12 4.12 0 0 1 1.496.386.774.774 0 0 1 .413.414c.05.15.074.306.076.464 0 .14.034.213.185.25.351.091.699.204 1.044.314.395.096.694.42.759.822.053.28.062.568.028.853a6.958 6.958 0 0 1-.238.962c0 .053-.066.094-.1.138a.872.872 0 0 1-.132-.132c-.054-.09-.091-.194-.141-.288a.73.73 0 0 0-.612-.417 8.532 8.532 0 0 0-2.02.038.84.84 0 0 0-.206.1c.063.04.122.085.185.12a.496.496 0 0 0 .135.03l.815.154a.79.79 0 0 1 .627.477c.072.172.035.241-.144.263h-.213c-.562.044-1.123.072-1.681.135-.41.044-.561.244-.574.658-.029.911.023 1.823.154 2.725a2.565 2.565 0 0 0 1.326 2.023 29.746 29.746 0 0 0 3.214 1.567c.107.047.166.032.217-.075.16-.313.332-.646.482-.975.5-1.063.818-2.203.941-3.37a10.38 10.38 0 0 0-.085-2.647 11.046 11.046 0 0 0-1.204-3.65 10.912 10.912 0 0 0-3.449-3.741 10.347 10.347 0 0 0-4.954-1.828 11.097 11.097 0 0 0-3.299.182 10.662 10.662 0 0 0-6.356 3.995c-.15.174.092.232.239.207h5.989c.279 0 .313.063.172.313-1.07 1.882-2.14 3.763-3.208 5.645a.558.558 0 0 1-.542.313H1.432c-.226 0-.235 0-.238.232.004.855.109 1.707.314 2.537.035.17.137.32.282.417a3.393 3.393 0 0 0 1.966.627h4.01a.176.176 0 0 0 .201-.144c.035-.144.078-.286.12-.427.07-.187-.201-.136-.286-.14-.22 0-.44-.023-.659-.045-.208.015-.181-.195-.103-.332.354-.752.7-1.511 1.063-2.26.129-.291.37-.517.668-.628.266-.097.53-.213.79-.332.06-.029.097-.104.144-.154a.627.627 0 0 0-.179-.085c-.188-.018-.379-.015-.567-.034-.188-.019-.2-.097-.12-.232.383-.627.766-1.27 1.158-1.9a1 1 0 0 1 .599-.427 4.61 4.61 0 0 0 .536-.178.94.94 0 0 0 .213-.157l-.025-.057c-.176-.025-.351-.047-.527-.075-.175-.028-.185-.106-.1-.238.085-.132.141-.213.21-.314a4.293 4.293 0 0 1 1.254-1.351c.462-.276.97-.467 1.499-.565a.683.683 0 0 0 .289-.156c.743-.662 1.44-1.38 2.2-2.032-.137.67-.238 1.31-.344 1.96zM2.56 6.604l.022.134c.314 1.314.605 2.628.9 3.945.025.107.072.135.179.132h1.687a.279.279 0 0 0 .294-.17c.728-1.298 1.46-2.593 2.195-3.885.025-.043.044-.087.079-.153H6.778a.42.42 0 0 0-.417.244c-.52.922-1.047 1.84-1.567 2.76l-.091.14c-.22-.94-.433-1.865-.646-2.78-.094-.418-.06-.358-.455-.361l-1.04-.006zm.627 11.639c.958 1.52 2.473 2.693 4.076 3.502a.176.176 0 0 0 .22-.028c.364-.299.73-.594 1.097-.887l.386-.314a15.253 15.253 0 0 1-.777-.95.483.483 0 0 0-.295-.213l-3.876-.916-.83-.194zm14.938-11.26c-.088-.019-.14-.038-.191-.044-.263-.034-.53-.05-.787-.11a.825.825 0 0 0-.724.189c-.035.025-.072.072-.066.103a.141.141 0 0 0 .09.088c.314.097.628.197.957.27a.408.408 0 0 0 .314-.066c.145-.133.28-.277.404-.43h.003z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/vbulletin.svg b/assets/lib/simple-icons/icons/vbulletin.svg
index 193fe3b5..b4aece94 100644
--- a/assets/lib/simple-icons/icons/vbulletin.svg
+++ b/assets/lib/simple-icons/icons/vbulletin.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>vBulletin icon</title><path d="M1.09 10.316V24h21.82V0h-2.417l-5.461 19.613h-6.09l-3.134-9.246zm9.283-4.444l1.363 6.308L13.955 0H1.089v5.872Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>vBulletin</title><path d="M1.09 10.316V24h21.82V0h-2.417l-5.461 19.613h-6.09l-3.134-9.246zm9.283-4.444l1.363 6.308L13.955 0H1.089v5.872Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/vectorlogozone.svg b/assets/lib/simple-icons/icons/vectorlogozone.svg
new file mode 100644
index 00000000..8cf91774
--- /dev/null
+++ b/assets/lib/simple-icons/icons/vectorlogozone.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Vector Logo Zone</title><path d="M19.458 0l-5.311 2.024 1.989.534-4.847 16.085-4.867-16.25H1.48L8.974 24h4.645l7.043-20.226 1.858.499Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/vectorworks.svg b/assets/lib/simple-icons/icons/vectorworks.svg
new file mode 100644
index 00000000..106cd308
--- /dev/null
+++ b/assets/lib/simple-icons/icons/vectorworks.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Vectorworks</title><path d="M12 0C5.4 0 0 5.4 0 12s5.4 12 12 12 12-5.4 12-12S18.6 0 12 0zm0 22.725c-5.925 0-10.725-4.8-10.725-10.725S6.075 1.275 12 1.275 22.725 6.075 22.725 12 17.925 22.725 12 22.725zM8.775 7.5h-2.25c-.15 0-.208.086-.15.225l4.425 10.65c.04.098.15.225.3.225h1.95c.15 0 .206-.086.15-.225l-4.35-10.8c-.028-.07-.035-.075-.075-.075zm8.7 0h-2.25c-.075 0-.13.023-.15.075L13.35 11.85a.6.6 0 0 0 0 .375l1.05 2.55c.075.15.225.15.3 0l2.925-7.05c.057-.139 0-.225-.15-.225z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/veeam.svg b/assets/lib/simple-icons/icons/veeam.svg
index 468581ad..bfff1e77 100644
--- a/assets/lib/simple-icons/icons/veeam.svg
+++ b/assets/lib/simple-icons/icons/veeam.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Veeam icon</title><path d="M6.63 9.842c-1.104 0-2.001.945-2.001 2.101v.108c0 1.322.847 2.038 1.975 2.101.051.006.108.006.16.006.435 0 .794-.115 1.195-.361.04-.023.201-.132.361-.338.132-.166.138-.411 0-.543-.2-.189-.412-.086-.595.074-.292.246-.516.442-1.1.442-.55 0-1.064-.316-1.19-.94 0-.023.01-.045.034-.045H8.16a.473.473 0 00.469-.504c0-1.156-.893-2.101-1.998-2.101zm4.466 0c-1.1 0-1.996.945-1.996 2.101v.108c0 1.322.846 2.038 1.974 2.101.052.006.109.006.16.006.435 0 .795-.115 1.196-.361.04-.023.2-.132.361-.338.132-.166.137-.411 0-.543-.2-.189-.413-.086-.596.074-.292.246-.515.442-1.1.442-.549 0-1.063-.316-1.189-.94-.006-.023.01-.045.028-.045h2.691a.473.473 0 00.469-.504c-.006-1.156-.9-2.101-1.998-2.101zm-6.89.04a.4.4 0 00-.345.223l-1.42 3.063c-.034.063-.062.11-.136.11-.075 0-.105-.047-.139-.11l-1.42-3.057a.38.38 0 00-.531-.177.428.428 0 00-.172.56l1.39 2.828.16.32a.8.8 0 00.712.46.791.791 0 00.709-.46l.16-.32 1.385-2.834a.423.423 0 00-.166-.56.376.376 0 00-.188-.045zm11.362 0a.762.762 0 00-.504.188.808.808 0 00-.207.27l-1.591 3.137c0 .005-.006.006-.006.011v.006a.434.434 0 00.029.442c0 .005.006.006.006.011 0 .006.006.004.006.01a.372.372 0 00.516.076s.005 0 .005-.006a.083.083 0 00.024-.017l.015-.018.006-.006a.485.485 0 00.076-.103l.057-.125.332-.7c.006-.017.028-.027.045-.027h1.484c.195 0 .354-.167.354-.379 0-.206-.159-.377-.354-.377h-1.099c-.023 0-.041-.024-.03-.046l.08-.172.602-1.207v-.006s0-.006.006-.006c.011-.023.04-.108.098-.125.034-.012.063-.012.086 0 .063.017.084.091.113.148l1.455 3.022a.393.393 0 00.48.195s.006 0 .006-.006l.035-.017c.006 0 .007-.006.012-.006 0 0 .006 0 .006-.006.006 0 .006-.006.012-.006s.01-.004.01-.01c.006 0 .006-.006.011-.006.006-.006.012-.012.018-.012l.017-.017.006-.006a.408.408 0 00.092-.498l-1.598-3.154a.79.79 0 00-.709-.451zm3.508 0c-.39 0-.709.332-.709.778v3.018c0 .183.104.354.264.406.263.086.486-.143.486-.412l-.058-2.938a.03.03 0 01.052-.017l1.442 2.931c.137.28.367.448.625.448.257 0 .491-.167.623-.448l1.449-2.935c.011-.029.05-.019.05.016l-.056 2.955c0 .234.177.423.389.412.206-.006.367-.207.367-.43V10.66c.011-.452-.31-.771-.7-.777a.684.684 0 00-.61.394c-.361.739-1.426 2.93-1.426 2.936-.006.011-.029.064-.075.064-.04 0-.068-.047-.074-.064-.349-.727-1.047-2.164-1.408-2.908-.143-.287-.379-.422-.63-.422zm-12.451.647c.698 0 1.14.527 1.209 1.145 0 .023-.012.045-.035.045h-2.33c-.023-.006-.033-.022-.033-.045.074-.607.49-1.145 1.189-1.145zm4.47 0h.003c.697.001 1.138.527 1.207 1.145 0 .023-.013.045-.035.045H9.94c-.023-.006-.04-.022-.034-.045.075-.606.493-1.144 1.19-1.145z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Veeam</title><path d="M6.63 9.842c-1.104 0-2 .945-2 2.101v.108c0 1.322.846 2.038 1.974 2.1.051.007.108.007.16.007.435 0 .794-.115 1.195-.361.04-.023.201-.132.361-.338.132-.166.138-.411 0-.543-.2-.189-.412-.086-.595.074-.292.246-.516.442-1.1.442-.55 0-1.064-.316-1.19-.94 0-.023.01-.045.034-.045H8.16a.473.473 0 0 0 .47-.504c0-1.156-.894-2.1-1.999-2.1zm4.466 0c-1.1 0-1.996.945-1.996 2.101v.108c0 1.322.846 2.038 1.974 2.1.052.007.11.007.16.007.435 0 .795-.115 1.196-.361.04-.023.2-.132.361-.338.132-.166.137-.411 0-.543-.2-.189-.413-.086-.596.074-.292.246-.515.442-1.1.442-.549 0-1.063-.316-1.189-.94-.006-.023.01-.045.028-.045h2.691a.473.473 0 0 0 .47-.504c-.007-1.156-.9-2.1-1.999-2.1zm-6.89.04a.4.4 0 0 0-.344.223l-1.42 3.063c-.034.063-.062.11-.136.11-.075 0-.105-.047-.14-.11l-1.42-3.057a.38.38 0 0 0-.53-.177.428.428 0 0 0-.172.56l1.39 2.828.16.32a.8.8 0 0 0 .712.46.791.791 0 0 0 .709-.46l.16-.32 1.385-2.834a.423.423 0 0 0-.166-.56.376.376 0 0 0-.188-.045zm11.362 0a.762.762 0 0 0-.504.188.808.808 0 0 0-.207.27l-1.59 3.137c0 .005-.007.006-.007.01v.007a.434.434 0 0 0 .03.442c0 .005.005.006.005.01 0 .007.006.005.006.01a.372.372 0 0 0 .516.077s.005 0 .005-.006a.083.083 0 0 0 .024-.017l.015-.018.006-.006a.485.485 0 0 0 .076-.103l.057-.125.332-.7c.006-.017.028-.027.045-.027h1.484c.195 0 .354-.167.354-.379 0-.206-.159-.377-.354-.377h-1.099a.033.033 0 0 1-.03-.046l.08-.172.602-1.207v-.006s0-.006.006-.006c.011-.023.04-.108.098-.125.034-.012.063-.012.086 0 .063.017.084.091.113.148l1.455 3.022a.393.393 0 0 0 .48.195s.006 0 .006-.006l.035-.017c.006 0 .007-.006.012-.006 0 0 .006 0 .006-.006.006 0 .006-.006.012-.006s.01-.004.01-.01c.006 0 .006-.006.011-.006.006-.006.012-.012.018-.012l.017-.017.006-.006a.408.408 0 0 0 .092-.498l-1.598-3.154a.79.79 0 0 0-.709-.45zm3.508 0c-.39 0-.709.332-.709.778v3.018c0 .183.104.354.264.406.263.086.486-.143.486-.412l-.058-2.938a.03.03 0 0 1 .052-.017l1.442 2.93c.137.28.367.449.625.449.257 0 .49-.167.623-.448l1.449-2.935c.01-.029.05-.019.05.016l-.056 2.955c0 .234.177.423.389.412.206-.006.367-.207.367-.43V10.66c.01-.452-.31-.77-.7-.777a.684.684 0 0 0-.61.394c-.361.739-1.426 2.93-1.426 2.936-.006.01-.03.064-.075.064-.04 0-.068-.047-.074-.064-.35-.727-1.047-2.164-1.408-2.908-.143-.287-.38-.422-.63-.422zm-12.45.647c.697 0 1.14.527 1.208 1.145 0 .023-.012.045-.035.045H5.47c-.023-.006-.033-.022-.033-.045.074-.607.49-1.145 1.19-1.145zm4.47 0h.002c.697.001 1.138.527 1.207 1.145 0 .023-.013.045-.035.045H9.94c-.023-.006-.04-.022-.034-.045.075-.606.493-1.144 1.19-1.145z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/veepee.svg b/assets/lib/simple-icons/icons/veepee.svg
new file mode 100644
index 00000000..2892ba5e
--- /dev/null
+++ b/assets/lib/simple-icons/icons/veepee.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Veepee</title><path d="M18.808 9.941a11.55 11.55 0 0 0-.872-3.51c.784-1.634 1.59-2.239 1.59-2.239s1.658 4.244.203 8.605c-.9 2.698-1.977 4.328-2.554 5.028-.129.156-.243.205-.172.11 1.36-1.834 2.109-4.749 1.805-7.994m1.317 5.143c-.672.809-1.35 1.594-2.1 2.195-.108.086-.176.08-.093-.011 2.653-2.896 5.536-9.314 1.8-15.64 0 0-1.477 1.02-2.69 3.134C15.846 2.922 14.106 1.379 11.94 0c0 0-5.479 6.107-3.056 14.954-6.99.964-4.452 6.361-3.344 7.137.052.037.096.018.025-.091-.393-.603-1.491-2.71.773-4.732 1.215-1.084 3.761-1.367 3.761-1.367-.579-4.248-.538-8.086 2.364-12.333.371.246 4.616 2.112 4.776 8.396.355 3.941-1.691 7.096-3.677 8.324-3.519 1.888-7.468 2.814-10.901 3.619-.291.069-.178.1.016.092 8.156-.343 15.407-4.011 18.195-7.512.537-.673.777-1.414.415-1.824-.361-.411-1.016.244-1.162.421"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/velog.svg b/assets/lib/simple-icons/icons/velog.svg
new file mode 100644
index 00000000..4d836c17
--- /dev/null
+++ b/assets/lib/simple-icons/icons/velog.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Velog</title><path d="M3 0C1.338 0 0 1.338 0 3v18c0 1.662 1.338 3 3 3h18c1.662 0 3-1.338 3-3V3c0-1.662-1.338-3-3-3H3Zm6.883 6.25c.63 0 1.005.3 1.125.9l1.463 8.303c.465-.615.846-1.133 1.146-1.553.465-.66.893-1.418 1.283-2.273.405-.855.608-1.62.608-2.295 0-.405-.113-.727-.338-.967-.21-.255-.608-.577-1.193-.967.6-.765 1.35-1.148 2.25-1.148.48 0 .878.143 1.193.428.33.285.494.704.494 1.26 0 .93-.39 2.093-1.17 3.488-.765 1.38-2.241 3.457-4.431 6.232l-2.227.156-1.711-9.628h-2.25V7.24c.6-.195 1.305-.406 2.115-.63.81-.24 1.358-.36 1.643-.36Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/venmo.svg b/assets/lib/simple-icons/icons/venmo.svg
index 8c8419c7..6cb8821f 100644
--- a/assets/lib/simple-icons/icons/venmo.svg
+++ b/assets/lib/simple-icons/icons/venmo.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Venmo icon</title><path d="M3.94 9.72c.17.27.24.54.24.89 0 1.11-.95 2.55-1.72 3.57H.71L0 9.96l1.54-.15.37 3c.35-.56.78-1.45.78-2.06 0-.33-.06-.56-.15-.75l1.4-.28zM5.94 11.57c.28 0 1-.13 1-.53 0-.2-.14-.3-.3-.3-.29 0-.66.35-.7.83zm-.03.8c0 .5.27.7.64.7.4 0 .77-.1 1.27-.35l-.19 1.26c-.35.17-.89.28-1.42.28-1.33 0-1.81-.8-1.81-1.82 0-1.31.78-2.7 2.38-2.7.88 0 1.38.49 1.38 1.18 0 1.1-1.43 1.45-2.25 1.46zM12.6 10.7c0 .17-.03.4-.05.56l-.46 2.92h-1.5l.42-2.68.03-.3c0-.2-.12-.24-.26-.24-.2 0-.4.09-.52.15l-.48 3.07h-1.5l.68-4.37h1.3l.02.35c.31-.2.72-.43 1.29-.43.76 0 1.03.4 1.03.98zM17.05 10.21c.43-.3.83-.48 1.4-.48.76 0 1.03.4 1.03.98a4 4 0 0 1-.05.55l-.46 2.92h-1.5l.43-2.73.02-.22c0-.22-.12-.27-.27-.27-.18 0-.37.08-.5.15l-.48 3.07h-1.5l.43-2.74.02-.21c0-.22-.12-.27-.27-.27-.2 0-.39.09-.52.15l-.47 3.06h-1.51l.69-4.36h1.28l.05.36c.3-.22.7-.44 1.24-.44.48 0 .78.2.94.48zM22.46 11.48c0-.35-.09-.6-.35-.6-.6 0-.72 1.05-.72 1.58 0 .41.11.66.38.66.56 0 .69-1.1.69-1.64zm-2.6.92c0-1.38.74-2.67 2.41-2.67 1.27 0 1.73.75 1.73 1.78 0 1.36-.72 2.77-2.44 2.77-1.27 0-1.7-.83-1.7-1.88z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Venmo</title><path d="M3.94 9.72c.17.27.24.54.24.89 0 1.11-.95 2.55-1.72 3.57H.71L0 9.96l1.54-.15.37 3c.35-.56.78-1.45.78-2.06 0-.33-.06-.56-.15-.75l1.4-.28zM5.94 11.57c.28 0 1-.13 1-.53 0-.2-.14-.3-.3-.3-.29 0-.66.35-.7.83zm-.03.8c0 .5.27.7.64.7.4 0 .77-.1 1.27-.35l-.19 1.26c-.35.17-.89.28-1.42.28-1.33 0-1.81-.8-1.81-1.82 0-1.31.78-2.7 2.38-2.7.88 0 1.38.49 1.38 1.18 0 1.1-1.43 1.45-2.25 1.46zM12.6 10.7c0 .17-.03.4-.05.56l-.46 2.92h-1.5l.42-2.68.03-.3c0-.2-.12-.24-.26-.24-.2 0-.4.09-.52.15l-.48 3.07h-1.5l.68-4.37h1.3l.02.35c.31-.2.72-.43 1.29-.43.76 0 1.03.4 1.03.98zM17.05 10.21c.43-.3.83-.48 1.4-.48.76 0 1.03.4 1.03.98a4 4 0 0 1-.05.55l-.46 2.92h-1.5l.43-2.73.02-.22c0-.22-.12-.27-.27-.27-.18 0-.37.08-.5.15l-.48 3.07h-1.5l.43-2.74.02-.21c0-.22-.12-.27-.27-.27-.2 0-.39.09-.52.15l-.47 3.06h-1.51l.69-4.36h1.28l.05.36c.3-.22.7-.44 1.24-.44.48 0 .78.2.94.48zM22.46 11.48c0-.35-.09-.6-.35-.6-.6 0-.72 1.05-.72 1.58 0 .41.11.66.38.66.56 0 .69-1.1.69-1.64zm-2.6.92c0-1.38.74-2.67 2.41-2.67 1.27 0 1.73.75 1.73 1.78 0 1.36-.72 2.77-2.44 2.77-1.27 0-1.7-.83-1.7-1.88z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/vercel.svg b/assets/lib/simple-icons/icons/vercel.svg
new file mode 100644
index 00000000..6cd3196a
--- /dev/null
+++ b/assets/lib/simple-icons/icons/vercel.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Vercel</title><path d="M24 22.525H0l12-21.05 12 21.05z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/verdaccio.svg b/assets/lib/simple-icons/icons/verdaccio.svg
new file mode 100644
index 00000000..52ca4dc9
--- /dev/null
+++ b/assets/lib/simple-icons/icons/verdaccio.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Verdaccio</title><path d="M17.376 9.84L18.72 7.2h-4.8v.566h.864l-.192.377H12.96v.566h1.344l-.288.565H12v.566h1.728zm-4.255 8.64l3.68-7.265h-3.68l-1.064 2.103L8.959 7.2H5.28l5.712 11.28zM8.88 0h6.24A8.86 8.86 0 0124 8.88v6.24A8.86 8.86 0 0115.12 24H8.88A8.86 8.86 0 010 15.12V8.88A8.86 8.86 0 018.88 0z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/veritas.svg b/assets/lib/simple-icons/icons/veritas.svg
index 5596e905..c55234a4 100644
--- a/assets/lib/simple-icons/icons/veritas.svg
+++ b/assets/lib/simple-icons/icons/veritas.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Veritas icon</title><path d="M0 9.746l1.248 3.8712c.1053.3243.4072.5332.7344.5332a.7684.7684 0 00.7324-.5332l1.248-3.8711h-.6933L2.086 13.412a.1081.1081 0 01-.1035.0762c-.0467 0-.0881-.028-.1054-.0762L.6934 9.7461H0zm5.3125 0c-.6081 0-1.0996.4939-1.0996 1.1017v2.2011c0 .6078.4915 1.1016 1.0996 1.1016h2.0918v-.6621H5.3125a.439.439 0 01-.4395-.4395v-.7754h2.0918v-.6504H4.873v-.7753c0-.2431.1964-.4414.4395-.4414h2.0918V9.746H5.3125zm3.7598 0a.9898.9898 0 00-.9903.9903v3.414h.6602v-3.414c0-.1825.1475-.33.33-.33h1.4317a.5505.5505 0 01.5137.3535.55.55 0 01-.3164.7109l-1.1094.4082c-.4025.139-.615.578-.4766.9805a.7665.7665 0 00.4141.4531l2.0742.9414v-.7226l-1.8144-.8028a.1306.1306 0 01-.0703-.0781.1302.1302 0 01.082-.166l1.1367-.3965c.6243-.2396.9366-.9402.6973-1.5645-.1851-.4815-.6442-.7773-1.1309-.7773H9.0723zm3.3086 0v4.4044h.662V9.746h-.662zm1.2109 0v.6602h1.2773v3.7442h.6602v-3.7441h1.2773V9.746h-3.2148zm4.707 0a.7683.7683 0 00-.7324.5333l-1.25 3.871h.6953l1.1836-3.6679a.108.108 0 01.1035-.0762c.0467 0 .0882.0283.1055.0762l1.1816 3.668h.6954l-1.25-3.8711a.7702.7702 0 00-.7325-.5332zm3.334 0c-.6992 0-1.2656.5665-1.2656 1.2657 0 .6993.5664 1.2656 1.2656 1.2656l1.1016.002c.3344 0 .6054.2693.6054.6035a.6054.6054 0 01-.6054.6055h-2.1465v.662h2.1465c.6992 0 1.2656-.5683 1.2656-1.2675s-.5664-1.2656-1.2656-1.2656h-1.1016a.6054.6054 0 01-.6055-.6055c0-.3344.271-.6054.6055-.6054h2.1465V9.746h-2.1465Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Veritas</title><path d="M0 9.746l1.248 3.8712c.1053.3243.4072.5332.7344.5332a.7684.7684 0 00.7324-.5332l1.248-3.8711h-.6933L2.086 13.412a.1081.1081 0 01-.1035.0762c-.0467 0-.0881-.028-.1054-.0762L.6934 9.7461H0zm5.3125 0c-.6081 0-1.0996.4939-1.0996 1.1017v2.2011c0 .6078.4915 1.1016 1.0996 1.1016h2.0918v-.6621H5.3125a.439.439 0 01-.4395-.4395v-.7754h2.0918v-.6504H4.873v-.7753c0-.2431.1964-.4414.4395-.4414h2.0918V9.746H5.3125zm3.7598 0a.9898.9898 0 00-.9903.9903v3.414h.6602v-3.414c0-.1825.1475-.33.33-.33h1.4317a.5505.5505 0 01.5137.3535.55.55 0 01-.3164.7109l-1.1094.4082c-.4025.139-.615.578-.4766.9805a.7665.7665 0 00.4141.4531l2.0742.9414v-.7226l-1.8144-.8028a.1306.1306 0 01-.0703-.0781.1302.1302 0 01.082-.166l1.1367-.3965c.6243-.2396.9366-.9402.6973-1.5645-.1851-.4815-.6442-.7773-1.1309-.7773H9.0723zm3.3086 0v4.4044h.662V9.746h-.662zm1.2109 0v.6602h1.2773v3.7442h.6602v-3.7441h1.2773V9.746h-3.2148zm4.707 0a.7683.7683 0 00-.7324.5333l-1.25 3.871h.6953l1.1836-3.6679a.108.108 0 01.1035-.0762c.0467 0 .0882.0283.1055.0762l1.1816 3.668h.6954l-1.25-3.8711a.7702.7702 0 00-.7325-.5332zm3.334 0c-.6992 0-1.2656.5665-1.2656 1.2657 0 .6993.5664 1.2656 1.2656 1.2656l1.1016.002c.3344 0 .6054.2693.6054.6035a.6054.6054 0 01-.6054.6055h-2.1465v.662h2.1465c.6992 0 1.2656-.5683 1.2656-1.2675s-.5664-1.2656-1.2656-1.2656h-1.1016a.6054.6054 0 01-.6055-.6055c0-.3344.271-.6054.6055-.6054h2.1465V9.746h-2.1465Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/verizon.svg b/assets/lib/simple-icons/icons/verizon.svg
index d007db50..b59a8241 100644
--- a/assets/lib/simple-icons/icons/verizon.svg
+++ b/assets/lib/simple-icons/icons/verizon.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Verizon icon</title><path d="M18.302 0H22v.003L10.674 24H7.662L2 12h3.727l3.449 7.337z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Verizon</title><path d="M18.302 0H22v.003L10.674 24H7.662L2 12h3.727l3.449 7.337z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/vexxhost.svg b/assets/lib/simple-icons/icons/vexxhost.svg
new file mode 100644
index 00000000..40db5f1b
--- /dev/null
+++ b/assets/lib/simple-icons/icons/vexxhost.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>VEXXHOST</title><path d="M8.787 16.045a23.43 23.43 0 0 0-1.402 2.185c.16-.301.331-.6.509-.898q.569-.948 1.225-1.88c3.684-5.16 9.117-9.202 14.354-11.112l-.43-1.317c-.018-.012-.032-.02-.04-.014-7.366 2.68-14.173 9.534-16.55 17.194.116-.28.237-.559.37-.836 3.407-5.592 9.963-10.16 16.079-12.157l-.183-1.252c-5.385 1.683-10.555 5.398-13.932 10.087ZM23.04 3.023v-.014h-.03s.011.002.03.014zM7.385 18.23l.509-.898c-.178.298-.348.597-.51.898zM23.05 8.058a11.447 11.447 0 0 1 .798 4.092 11.792 11.792 0 0 1-18.604 9.683A12.084 12.084 0 0 1 4.238 2.916 11.847 11.847 0 0 1 7.908.713a11.525 11.525 0 0 1 4.196-.711 11.181 11.181 0 0 1 7.616 3.11A11.423 11.423 0 0 0 12.11.6a10.878 10.878 0 0 0-3.9.843 11.236 11.236 0 0 0-3.34 2.173A11.46 11.46 0 0 0 2.5 6.781a11.186 11.186 0 0 0 .711 11.266 11.032 11.032 0 0 0 2.72 2.827 10.9 10.9 0 0 0 3.554 1.658 11.072 11.072 0 0 0 7.7-.732 11.435 11.435 0 0 0 5.386-5.715 11.826 11.826 0 0 0 .948-3.938 12.084 12.084 0 0 0-.47-4.09zM9.173 6.873H6.79l3.504 4.872a29.78 29.78 0 0 1 1.277-1.529zm5.971 11.61h2.358l-3.98-5.551q-.764.597-1.477 1.234zm-1.01 0h.385l-2.843-3.966-.237.22zM6.182 6.873H5.76l4.01 5.563c.065-.092.137-.184.21-.274zm-.837 0h-.421L9.36 13.01c.064-.095.132-.187.199-.28zm7.957 11.61h.381l-2.516-3.509-.237.237z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/vfairs.svg b/assets/lib/simple-icons/icons/vfairs.svg
new file mode 100644
index 00000000..9b09226a
--- /dev/null
+++ b/assets/lib/simple-icons/icons/vfairs.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>vFairs</title><path d="M22.316 5.923c-.01-.014-.027-.024-.04-.035a.412.412 0 0 0-.06-.047L12.223.061a.427.427 0 0 0-.08-.033C12.128.02 12.113.02 12.1.015a.41.41 0 0 0-.325.046l-9.992 5.78a.418.418 0 0 0-.143.141c-.015.014-.02.034-.028.05a.423.423 0 0 0-.048.191v11.56a.418.418 0 0 0 .007.05c.007.14.088.266.212.331l9.992 5.78a.555.555 0 0 0 .487 0l9.888-5.756a.437.437 0 0 0 .284-.406V6.223a.408.408 0 0 0-.119-.3zM2.45 17.015V6.99l8.665 5.012-8.665 5.012zm10.452-5.023l8.648-5.001v10.024c-2.905-1.676-5.634-3.268-8.648-5.023zm-.46-.757V1.211l8.666 5.012zm-.885 0L2.891 6.223l8.666-5.012zm0 1.535v10.024l-8.665-5.012zm.925.023l5.477 3.168 3.129 1.821-8.606 5.01Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/viadeo.svg b/assets/lib/simple-icons/icons/viadeo.svg
index 0817ce91..7f663710 100644
--- a/assets/lib/simple-icons/icons/viadeo.svg
+++ b/assets/lib/simple-icons/icons/viadeo.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Viadeo icon</title><path d="M10.106 21.987h.029c1.158 0 2.221-.281 3.188-.841.968-.56 1.734-1.354 2.304-2.385.567-1.027.853-2.137.853-3.33 0-.964-.166-1.855-.51-2.67.57-.119 1.26-.354 1.979-.799.435 1.053.66 2.194.66 3.426 0 2.295-.78 4.305-2.37 6.03C14.647 23.13 12.622 24 10.147 24c-2.49 0-4.522-.859-6.1-2.581-1.576-1.72-2.355-3.731-2.355-6.029 0-2.283.746-4.26 2.24-5.935 1.635-1.846 3.711-2.77 6.215-2.77 1.057 0 2.034.165 2.936.492-.292.572-.558 1.274-.629 2.029-.717-.3-1.486-.45-2.311-.45-1.737 0-3.229.652-4.475 1.955C4.424 12.016 3.8 13.592 3.8 15.437c0 1.2.285 2.31.855 3.329.566 1.036 1.334 1.83 2.301 2.387.645.375 1.327.63 2.051.75 6.207-2.4 5.477-14.16 5.431-14.806l.053.165c3.646 9.734-4.301 14.744-4.301 14.744h-.075l-.009-.019zM21.078.544c-1.016 2.157-2.896 2.558-2.896 2.558-1.878.477-2.534 1.201-2.534 1.201-1.879 1.889-.4 4.182-.4 4.182 4.059-.924 5.541-4.258 5.541-4.258-.181 2.24-5.011 4.887-5.011 4.887 1.599 1.563 3.124 1.375 4.132.774 1.336-.795 1.978-2.535 1.978-2.535 1.294-3.871-.81-6.81-.81-6.809zM11.103 0c1.994 3.354 3.08 6.365 3.324 7.08v-.029C13.935 1.883 11.097 0 11.097 0h.006z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Viadeo</title><path d="M16.2888 13.8979c.361.884.5428 1.8423.5428 2.875 0 1.9315-.6593 3.6185-1.977 5.0626C13.537 23.2796 11.8417 24 9.7697 24c-2.0819 0-3.778-.7204-5.0973-2.1645-1.3177-1.4441-1.9786-3.1311-1.9786-5.0626 0-1.9142.6213-3.5747 1.8687-4.9791C5.9381 10.2439 7.6688 9.469 9.7673 9.469c.884 0 1.7018.1388 2.4536.4131-.2453.4808-.4659 1.0698-.5262 1.7035-.599-.2503-1.2425-.3759-1.9332-.3759-1.454 0-2.7015.5453-3.7416 1.6382-1.0409 1.0921-1.5614 2.4132-1.5614 3.963 0 .9996.2396 1.9315.7105 2.7948.4792.8642 1.1153 1.53 1.9249 2.0009.8096.4701 1.6936.7047 2.6602.7047.9666 0 1.8588-.2338 2.6602-.7047.8096-.47 1.454-1.1367 1.9249-2.0009.8345-1.4971.9618-3.465.2974-5.0386.4708-.0991 1.0491-.2949 1.6522-.6692zM20.3873.4285l-.0126-.0148c-.7574 1.6151-2.1586 1.9175-2.1586 1.9175-1.4013.3613-1.8924.8997-1.8924.8997-1.4013 1.416-.295 3.1344-.295 3.1344 3.0311-.6933 4.1374-3.186 4.1374-3.186-.1327 1.6815-3.7317 3.658-3.7317 3.658 1.1947 1.1726 2.3305 1.0325 3.0828.5826.9956-.59 1.475-1.8953 1.475-1.8953.966-2.8984-.6049-5.0961-.6049-5.0961zM7.0301 20.4729s.4278.0738.9123.0516c0 0 10.3286-7.021 7.6094-14.3148l-.0405-.118v.0074c.0339.4867-4.483 13.0613-8.4812 14.3738zm8.3828-15.1895C15.0486 1.4101 12.9327 0 12.9327 0c1.4897 2.5134 2.2995 4.7694 2.4816 5.3055 0-.0132-.0014-.0221-.0014-.0221z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/viber.svg b/assets/lib/simple-icons/icons/viber.svg
index 3343924e..dfb1eedc 100644
--- a/assets/lib/simple-icons/icons/viber.svg
+++ b/assets/lib/simple-icons/icons/viber.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Viber icon</title><path d="M11.398.002C9.473.028 5.331.344 3.014 2.467 1.294 4.177.693 6.698.623 9.82c-.06 3.11-.13 8.95 5.5 10.541v2.42s-.038.97.602 1.17c.79.25 1.24-.499 1.99-1.299l1.4-1.58c3.85.32 6.8-.419 7.14-.529.78-.25 5.181-.811 5.901-6.652.74-6.031-.36-9.831-2.34-11.551l-.01-.002c-.6-.55-3-2.3-8.37-2.32 0 0-.396-.025-1.038-.016zm.067 1.697c.545-.003.88.02.88.02 4.54.01 6.711 1.38 7.221 1.84 1.67 1.429 2.528 4.856 1.9 9.892-.6 4.88-4.17 5.19-4.83 5.4-.28.09-2.88.73-6.152.52 0 0-2.439 2.941-3.199 3.701-.12.13-.26.17-.35.15-.13-.03-.17-.19-.16-.41l.02-4.019c-4.771-1.32-4.491-6.302-4.441-8.902.06-2.6.55-4.732 2-6.172 1.957-1.77 5.475-2.01 7.11-2.02zm.36 2.6a.299.299 0 0 0-.3.299.3.3 0 0 0 .3.3 5.631 5.631 0 0 1 4.03 1.59c1.09 1.06 1.621 2.48 1.641 4.34a.3.3 0 0 0 .3.3v-.009a.3.3 0 0 0 .3-.3 6.451 6.451 0 0 0-1.81-4.76c-1.19-1.16-2.692-1.76-4.462-1.76zm-3.954.69a.955.955 0 0 0-.615.12h-.012c-.41.24-.788.54-1.148.94-.27.32-.421.639-.461.949a1.24 1.24 0 0 0 .05.541l.02.01a13.722 13.722 0 0 0 1.2 2.6 15.383 15.383 0 0 0 2.32 3.171l.03.04.04.03.03.03.03.03a15.603 15.603 0 0 0 3.18 2.33c1.32.72 2.122 1.06 2.602 1.2v.01c.14.04.268.06.398.06a1.84 1.84 0 0 0 1.102-.472c.39-.35.7-.738.93-1.148v-.01c.23-.43.15-.841-.18-1.121a13.632 13.632 0 0 0-2.15-1.54c-.51-.28-1.03-.11-1.24.17l-.45.569c-.23.28-.65.24-.65.24l-.012.01c-3.12-.8-3.95-3.959-3.95-3.959s-.04-.43.25-.65l.56-.45c.27-.22.46-.74.17-1.25a13.522 13.522 0 0 0-1.54-2.15.843.843 0 0 0-.504-.3zm4.473.89a.3.3 0 0 0 .002.6 3.78 3.78 0 0 1 2.65 1.15 3.5 3.5 0 0 1 .9 2.57.3.3 0 0 0 .3.299l.01.012a.3.3 0 0 0 .3-.301c.03-1.19-.34-2.19-1.07-2.99-.73-.8-1.75-1.25-3.05-1.34a.3.3 0 0 0-.042 0zm.49 1.619a.305.305 0 0 0-.018.611c.99.05 1.47.55 1.53 1.58a.3.3 0 0 0 .3.29h.01a.3.3 0 0 0 .29-.32c-.07-1.34-.8-2.091-2.1-2.161a.305.305 0 0 0-.012 0z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Viber</title><path d="M11.4 0C9.473.028 5.333.344 3.02 2.467 1.302 4.187.696 6.7.633 9.817.57 12.933.488 18.776 6.12 20.36h.003l-.004 2.416s-.037.977.61 1.177c.777.242 1.234-.5 1.98-1.302.407-.44.972-1.084 1.397-1.58 3.85.326 6.812-.416 7.15-.525.776-.252 5.176-.816 5.892-6.657.74-6.02-.36-9.83-2.34-11.546-.596-.55-3.006-2.3-8.375-2.323 0 0-.395-.025-1.037-.017zm.058 1.693c.545-.004.88.017.88.017 4.542.02 6.717 1.388 7.222 1.846 1.675 1.435 2.53 4.868 1.906 9.897v.002c-.604 4.878-4.174 5.184-4.832 5.395-.28.09-2.882.737-6.153.524 0 0-2.436 2.94-3.197 3.704-.12.12-.26.167-.352.144-.13-.033-.166-.188-.165-.414l.02-4.018c-4.762-1.32-4.485-6.292-4.43-8.895.054-2.604.543-4.738 1.996-6.173 1.96-1.773 5.474-2.018 7.11-2.03zm.38 2.602c-.167 0-.303.135-.304.302 0 .167.133.303.3.305 1.624.01 2.946.537 4.028 1.592 1.073 1.046 1.62 2.468 1.633 4.334.002.167.14.3.307.3.166-.002.3-.138.3-.304-.014-1.984-.618-3.596-1.816-4.764-1.19-1.16-2.692-1.753-4.447-1.765zm-3.96.695c-.19-.032-.4.005-.616.117l-.01.002c-.43.247-.816.562-1.146.932-.002.004-.006.004-.008.008-.267.323-.42.638-.46.948-.008.046-.01.093-.007.14 0 .136.022.27.065.4l.013.01c.135.48.473 1.276 1.205 2.604.42.768.903 1.5 1.446 2.186.27.344.56.673.87.984l.132.132c.31.308.64.6.984.87.686.543 1.418 1.027 2.186 1.447 1.328.733 2.126 1.07 2.604 1.206l.01.014c.13.042.265.064.402.063.046.002.092 0 .138-.008.31-.036.627-.19.948-.46.004 0 .003-.002.008-.005.37-.33.683-.72.93-1.148l.003-.01c.225-.432.15-.842-.18-1.12-.004 0-.698-.58-1.037-.83-.36-.255-.73-.492-1.113-.71-.51-.285-1.032-.106-1.248.174l-.447.564c-.23.283-.657.246-.657.246-3.12-.796-3.955-3.955-3.955-3.955s-.037-.426.248-.656l.563-.448c.277-.215.456-.737.17-1.248-.217-.383-.454-.756-.71-1.115-.25-.34-.826-1.033-.83-1.035-.137-.165-.31-.265-.502-.297zm4.49.88c-.158.002-.29.124-.3.282-.01.167.115.312.282.324 1.16.085 2.017.466 2.645 1.15.63.688.93 1.524.906 2.57-.002.168.13.306.3.31.166.003.305-.13.31-.297.025-1.175-.334-2.193-1.067-2.994-.74-.81-1.777-1.253-3.05-1.346h-.024zm.463 1.63c-.16.002-.29.127-.3.287-.008.167.12.31.288.32.523.028.875.175 1.113.422.24.245.388.62.416 1.164.01.167.15.295.318.287.167-.008.295-.15.287-.317-.03-.644-.215-1.178-.58-1.557-.367-.378-.893-.574-1.52-.607h-.018z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/vim.svg b/assets/lib/simple-icons/icons/vim.svg
index 1a08ed51..2155d714 100644
--- a/assets/lib/simple-icons/icons/vim.svg
+++ b/assets/lib/simple-icons/icons/vim.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Vim icon</title><path d="M24 11.986h-.027l-4.318-4.318 4.303-4.414V1.461l-.649-.648h-8.198l-.66.605v1.045L12.015.027V0L12 .014 11.986 0v.027l-1.29 1.291-.538-.539H2.035l-.638.692v1.885l.616.616h.72v5.31L.027 11.987H0L.014 12 0 12.014h.027l2.706 2.706v6.467l.907.523h2.322l1.857-1.904 4.166 4.166V24l.015-.014.014.014v-.028l2.51-2.509h.485c.111 0 .211-.07.25-.179l.146-.426c.028-.084.012-.172-.037-.239l1.462-1.462-.612 1.962c-.043.141.036.289.177.332.025.008.052.012.078.012h1.824c.106-.001.201-.064.243-.163l.165-.394c.025-.065.024-.138-.004-.203-.027-.065-.08-.116-.146-.142-.029-.012-.062-.019-.097-.02h-.075l.84-2.644h1.232l-1.016 3.221c-.043.141.036.289.176.332.025.008.052.012.079.012h2.002c.11 0 .207-.066.248-.17l.164-.428c.051-.138-.021-.29-.158-.341-.029-.011-.06-.017-.091-.017h-.145l1.131-3.673c.027-.082.012-.173-.039-.24l-.375-.504-.003-.005c-.051-.064-.127-.102-.209-.102h-1.436c-.071 0-.141.03-.19.081l-.4.439h-.624l-.042-.046 4.445-4.445H24L23.986 12l.014-.014zM9.838 21.139l1.579-4.509h-.501l.297-.304h1.659l-1.563 4.555h.623l-.079.258H9.838zm3.695-7.516l.15.151-.269.922-.225.226h-.969l-.181-.181.311-.871.288-.247h.895zM5.59 20.829H3.877l-.262-.15V3.091H2.379l-.1-.1V1.815l.143-.154h7.371l.213.214v1.108l-.142.173H8.785v8.688l8.807-8.688h-2.086l-.175-.188V1.805l.121-.111h7.49l.132.133v1.07L12.979 13.25h-.373c-.015-.001-.028 0-.042.001l-.02.003c-.045.01-.086.03-.119.06l-.343.295-.004.003c-.033.031-.059.069-.073.111l-.296.83-6.119 6.276zm14.768-3.952l.474-.519h1.334l.309.415-1.265 4.107h.493l-.08.209H19.84l1.124-3.564h-2.015l-1.077 3.391h.424l-.073.174h-1.605l1.107-3.548h-2.096l-1.062 3.339h.436l-.072.209H13.27l1.514-4.46H14.198l.091-.271h1.65l.519.537h.906l.491-.554h1.061l.489.535h.953z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Vim</title><path d="M24 11.986h-.027l-4.318-4.318 4.303-4.414V1.461l-.649-.648h-8.198l-.66.605v1.045L12.015.027V0L12 .014 11.986 0v.027l-1.29 1.291-.538-.539H2.035l-.638.692v1.885l.616.616h.72v5.31L.027 11.987H0L.014 12 0 12.014h.027l2.706 2.706v6.467l.907.523h2.322l1.857-1.904 4.166 4.166V24l.015-.014.014.014v-.028l2.51-2.509h.485c.111 0 .211-.07.25-.179l.146-.426c.028-.084.012-.172-.037-.239l1.462-1.462-.612 1.962c-.043.141.036.289.177.332.025.008.052.012.078.012h1.824c.106-.001.201-.064.243-.163l.165-.394c.025-.065.024-.138-.004-.203-.027-.065-.08-.116-.146-.142-.029-.012-.062-.019-.097-.02h-.075l.84-2.644h1.232l-1.016 3.221c-.043.141.036.289.176.332.025.008.052.012.079.012h2.002c.11 0 .207-.066.248-.17l.164-.428c.051-.138-.021-.29-.158-.341-.029-.011-.06-.017-.091-.017h-.145l1.131-3.673c.027-.082.012-.173-.039-.24l-.375-.504-.003-.005c-.051-.064-.127-.102-.209-.102h-1.436c-.071 0-.141.03-.19.081l-.4.439h-.624l-.042-.046 4.445-4.445H24L23.986 12l.014-.014zM9.838 21.139l1.579-4.509h-.501l.297-.304h1.659l-1.563 4.555h.623l-.079.258H9.838zm3.695-7.516l.15.151-.269.922-.225.226h-.969l-.181-.181.311-.871.288-.247h.895zM5.59 20.829H3.877l-.262-.15V3.091H2.379l-.1-.1V1.815l.143-.154h7.371l.213.214v1.108l-.142.173H8.785v8.688l8.807-8.688h-2.086l-.175-.188V1.805l.121-.111h7.49l.132.133v1.07L12.979 13.25h-.373c-.015-.001-.028 0-.042.001l-.02.003c-.045.01-.086.03-.119.06l-.343.295-.004.003c-.033.031-.059.069-.073.111l-.296.83-6.119 6.276zm14.768-3.952l.474-.519h1.334l.309.415-1.265 4.107h.493l-.08.209H19.84l1.124-3.564h-2.015l-1.077 3.391h.424l-.073.174h-1.605l1.107-3.548h-2.096l-1.062 3.339h.436l-.072.209H13.27l1.514-4.46H14.198l.091-.271h1.65l.519.537h.906l.491-.554h1.061l.489.535h.953z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/vimeo.svg b/assets/lib/simple-icons/icons/vimeo.svg
index 23b888e5..cecbfccc 100644
--- a/assets/lib/simple-icons/icons/vimeo.svg
+++ b/assets/lib/simple-icons/icons/vimeo.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Vimeo icon</title><path d="M23.977 6.416c-.105 2.338-1.739 5.543-4.894 9.609-3.268 4.247-6.026 6.37-8.29 6.37-1.409 0-2.578-1.294-3.553-3.881L5.322 11.4C4.603 8.816 3.834 7.522 3.01 7.522c-.179 0-.806.378-1.881 1.132L0 7.197c1.185-1.044 2.351-2.084 3.501-3.128C5.08 2.701 6.266 1.984 7.055 1.91c1.867-.18 3.016 1.1 3.447 3.838.465 2.953.789 4.789.971 5.507.539 2.45 1.131 3.674 1.776 3.674.502 0 1.256-.796 2.265-2.385 1.004-1.589 1.54-2.797 1.612-3.628.144-1.371-.395-2.061-1.614-2.061-.574 0-1.167.121-1.777.391 1.186-3.868 3.434-5.757 6.762-5.637 2.473.06 3.628 1.664 3.493 4.797l-.013.01z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Vimeo</title><path d="M23.9765 6.4168c-.105 2.338-1.739 5.5429-4.894 9.6088-3.2679 4.247-6.0258 6.3699-8.2898 6.3699-1.409 0-2.578-1.294-3.553-3.881l-1.9179-7.1138c-.719-2.584-1.488-3.878-2.312-3.878-.179 0-.806.378-1.8809 1.132l-1.129-1.457a315.06 315.06 0 003.501-3.1279c1.579-1.368 2.765-2.085 3.5539-2.159 1.867-.18 3.016 1.1 3.447 3.838.465 2.953.789 4.789.971 5.5069.5389 2.45 1.1309 3.674 1.7759 3.674.502 0 1.256-.796 2.265-2.385 1.004-1.589 1.54-2.797 1.612-3.628.144-1.371-.395-2.061-1.614-2.061-.574 0-1.167.121-1.777.391 1.186-3.8679 3.434-5.7568 6.7619-5.6368 2.4729.06 3.6279 1.664 3.4929 4.7969z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/vimeolivestream.svg b/assets/lib/simple-icons/icons/vimeolivestream.svg
new file mode 100644
index 00000000..2dbaa23e
--- /dev/null
+++ b/assets/lib/simple-icons/icons/vimeolivestream.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Vimeo Livestream</title><path d="M2.672 10.63c-.11 0-.21.04-.3.116-.09.077-.137.157-.14.24-.007.16.078.24.252.24a.4.4 0 0 0 .293-.125.345.345 0 0 0 .115-.23.233.233 0 0 0-.06-.16.199.199 0 0 0-.16-.08zm9.127.636v1.737c0 .327.22.365.344.365a.494.494 0 0 0 .074-.006v-.181s-.023.003-.05.003c-.077 0-.166-.03-.166-.226v-1.692zm.63 0v.253h.21v-.253zm4.693.182v.431h-.199v.17h.196v.764c0 .5.347.555.519.555a.515.515 0 0 0 .085-.006v-.181s-.026.006-.068.006c-.112 0-.335-.045-.335-.395v-.744h.374v-.17h-.373v-.43zM1.745 11.5c-.283-.01-.475.158-.575.503a.367.367 0 0 1 .15-.035c.105 0 .15.062.138.184-.006.074-.052.182-.137.324-.086.142-.15.213-.193.213-.055 0-.105-.11-.151-.328a8.209 8.209 0 0 1-.083-.492c-.036-.245-.134-.359-.293-.343-.067.007-.168.071-.303.193L0 12l.096.13a.622.622 0 0 1 .16-.101c.07 0 .136.115.197.346l.165.636c.082.23.183.346.302.346.192 0 .427-.19.705-.569.195-.264.321-.487.38-.67.077-.059.124-.09.142-.09.055 0 .082.042.082.126 0 .016-.03.135-.09.356-.059.222-.09.386-.093.492a.374.374 0 0 0 .07.25.26.26 0 0 0 .218.096c.205 0 .41-.093.615-.279l.053-.051a.395.395 0 0 0 .085.177c.088.1.237.146.447.14-.028-.071-.04-.196-.033-.376.01-.2.06-.395.147-.574.088-.183.171-.274.248-.274.089 0 .13.059.124.178-.003.08-.018.172-.045.275a1.36 1.36 0 0 0-.045.308c-.006.164.029.281.105.352.085.08.235.117.448.11a.747.747 0 0 1-.039-.317 1.38 1.38 0 0 1 .19-.608c.11-.199.205-.298.285-.298.073 0 .109.06.105.183a1.83 1.83 0 0 1-.057.337 1.848 1.848 0 0 0-.057.37c-.006.232.09.347.289.347.205 0 .41-.093.614-.279l.01-.01a.568.568 0 0 0 .022.038c.107.174.285.26.533.26.333 0 .662-.097.986-.293l.104-.065a.7.7 0 0 0 .072.122c.125.164.309.246.55.246a.95.95 0 0 0 .73-.323c.195-.215.3-.47.311-.765.01-.218-.038-.396-.142-.534-.11-.151-.272-.226-.486-.226-.333 0-.61.128-.83.384-.205.232-.3.485-.284.76 0 .021.002.04.004.06l-.034.016c-.26.118-.5.177-.72.177-.11 0-.193-.04-.248-.12a1.37 1.37 0 0 0 .739-.361c.183-.173.269-.341.257-.505-.019-.256-.178-.385-.477-.385-.325 0-.606.13-.844.386-.217.235-.328.482-.33.742a.65.65 0 0 0 .006.126c-.052.036-.09.054-.117.054-.058 0-.095-.013-.11-.039-.015-.025-.021-.072-.018-.14 0-.025.019-.123.057-.294a2.25 2.25 0 0 0 .062-.392c.006-.13-.018-.232-.073-.302-.064-.087-.17-.123-.317-.11a.663.663 0 0 0-.353.144c-.067.052-.136.12-.206.207l-.069.063a.488.488 0 0 0-.073-.304c-.065-.086-.172-.123-.321-.11a.797.797 0 0 0-.473.216.875.875 0 0 0-.16.193.472.472 0 0 0-.064-.354c-.05-.075-.114-.11-.193-.103-.046.003-.133.067-.262.192-.177.174-.273.267-.289.28l.11.13c.086-.065.138-.098.156-.098.034 0 .048.029.042.087-.003.083-.017.2-.043.348a3.95 3.95 0 0 0-.033.24l-.005.003c-.11.095-.186.143-.229.143-.098 0-.145-.069-.142-.207.046-.3.089-.549.128-.744a.42.42 0 0 0-.052-.28c-.048-.073-.122-.104-.223-.095-.064.007-.162.071-.293.193l-.137.13c-.01-.227-.108-.344-.297-.35zm13.221.301c-.403 0-.735.294-.735.785 0 .461.335.782.78.782.334 0 .551-.208.551-.208l-.092-.155s-.18.182-.453.182c-.309 0-.57-.208-.578-.592h1.144s.006-.068.006-.104c0-.372-.21-.69-.623-.69zm1.334 0c-.27 0-.51.146-.51.413 0 .488.804.408.804.735 0 .157-.14.238-.3.238a.637.637 0 0 1-.444-.182l-.11.146s.19.217.552.217c.299 0 .51-.175.51-.42 0-.493-.804-.403-.804-.734 0-.166.145-.232.297-.232.246 0 .373.137.373.137l.092-.154s-.146-.164-.46-.164zm3.2 0c-.403 0-.735.294-.735.785 0 .461.335.782.78.782.334 0 .55-.208.55-.208l-.091-.155s-.181.182-.454.182c-.308 0-.569-.208-.578-.592h1.144s.006-.068.006-.104c0-.372-.21-.69-.622-.69zm1.414 0c-.335 0-.53.17-.53.17l.094.154s.175-.143.421-.143c.214 0 .37.099.37.387v.039h-.082c-.258 0-.913.012-.913.517 0 .297.258.443.507.443.373 0 .498-.324.498-.324h.006s-.006.05-.006.125v.164h.192v-.958c0-.375-.198-.574-.557-.574zm1.575.023a.61.61 0 0 0-.54.378h-.006s.006-.053.006-.119v-.223h-.199v1.495h.202v-.707c0-.067.006-.134.02-.2.063-.228.247-.44.49-.44.281 0 .314.22.314.447v.9h.201v-.707c0-.08.006-.152.027-.217.057-.22.243-.422.471-.422.273 0 .323.202.323.446v.9H24v-.95c0-.37-.133-.58-.495-.58a.606.606 0 0 0-.548.374h-.006c-.045-.247-.187-.375-.462-.375zm-3.876.021c-.234 0-.4.172-.471.398h-.006s.006-.053.006-.118v-.265h-.199v1.495h.202v-.63a.99.99 0 0 1 .041-.291c.066-.22.223-.387.433-.387.039 0 .074.006.074.006v-.199s-.038-.009-.08-.009zm-6.179.015v1.495h.202V11.86zm.371 0l.572 1.495h.22l.569-1.495h-.211l-.412 1.097c-.03.077-.053.179-.053.179h-.006s-.024-.104-.05-.179l-.416-1.097zm-4.338.052c.048 0 .086.036.112.108a.638.638 0 0 1 .034.24.947.947 0 0 1-.133.444c-.098.17-.215.256-.353.256-.061 0-.109-.036-.142-.106a.432.432 0 0 1-.041-.213.967.967 0 0 1 .137-.464c.101-.177.23-.265.386-.265zm-1.722.056c.07 0 .103.043.1.13-.003.064-.049.147-.137.249-.108.117-.24.207-.39.264a.693.693 0 0 1 .146-.444c.096-.133.189-.199.28-.199zm8.215.003c.223 0 .412.145.424.457h-.936c.047-.3.263-.457.512-.457zm4.534 0c.222 0 .412.145.424.457h-.937c.048-.3.264-.457.513-.457zm-9.031.26c-.149 0-.223.111-.223.223 0 .111.074.222.223.222.148 0 .222-.111.222-.222 0-.112-.074-.223-.222-.223zm10.72.343h.087v.066c0 .258-.172.555-.457.555-.222 0-.332-.142-.332-.282 0-.33.469-.339.703-.339z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/vine.svg b/assets/lib/simple-icons/icons/vine.svg
deleted file mode 100644
index c99b8775..00000000
--- a/assets/lib/simple-icons/icons/vine.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Vine icon</title><path d="M22.521 11.922c-.618.143-1.217.206-1.758.206-3.028 0-5.361-2.116-5.361-5.794 0-1.801.706-2.731 1.696-2.731.946 0 1.562.841 1.562 2.552 0 .975-.256 2.041-.45 2.672 0 0 .93 1.636 3.481 1.125.54-1.201.842-2.762.842-4.127C22.533 2.146 20.657 0 17.219 0c-3.543-.017-5.615 2.7-5.615 6.288 0 3.55 1.659 6.597 4.395 7.985-1.15 2.301-2.614 4.328-4.142 5.856-2.769-3.351-5.273-7.82-6.302-16.541H1.467c1.889 14.526 7.517 19.149 9.004 20.035.84.504 1.566.48 2.336.049 1.215-.688 4.848-4.315 6.859-8.563.84-.003 1.861-.1 2.867-.328v-2.865l-.012.006z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/virb.svg b/assets/lib/simple-icons/icons/virb.svg
deleted file mode 100644
index fe186ce1..00000000
--- a/assets/lib/simple-icons/icons/virb.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Virb icon</title><path d="M17.733 7.237c0-.25 0-.476.15-.625.199-.176.4-.15.6-.15h1.428c.766 0 1.875.199 2.625.877.75.699.915 1.701.915 2.604v2.252c0 .599.015 1.027-.284 1.578-.375.701-1.155.9-1.155 1.002 0 .1.839.252 1.214 1.002.301.6.27.975.27 1.576v3.105c0 .615 0 1.395-.899 2.445-.855.943-2.039 1.08-2.64 1.08-.449 0-.779.016-1.23 0-.299-.031-.749.016-.854-.137-.149-.223-.194-.178-.194-.854V7.229l.054.008zm-5.46 16.349c0 .402-.099.402-.85.402-.576 0-.75 0-.75-.352V7.229c0-.25.023-.523.174-.674.201-.176.375-.101.576-.101h1.428c.801 0 1.878.199 2.628.876.75.699.927 1.728.927 2.604v2.26c0 .599.025 1.027-.276 1.578-.375.701-1.176.9-1.176 1.002 0 .1.825.252 1.2 1.002.3.6.277.975.277 1.576v6.225c0 .391-.18.391-.855.391-.584 0-.75.016-.75-.359V17.25c0-1.027-.674-1.652-1.229-1.652-1.185 0-1.335-.023-1.335.375v7.59l.011.023zm-3.828.375c-.676 0-.75 0-.75-.35V6.862c0-.325.148-.375.75-.375.674 0 .85.023.85.398v16.679c0 .375-.045.404-.84.404l-.01-.007zm11.165-1.627c.196.031.226.031.451.031.27 0 .899-.074 1.35-.541.495-.539.525-.898.525-1.318v-3.211c0-1.154-.675-1.648-1.425-1.648-1.08 0-1.156.074-1.156.674v5.264c0 .287.015.75.24.781l.015-.032zM3.609 18.777c.426-4.303.801-7.96 1.199-11.893.051-.423.252-.398.705-.398.699 0 .949.051.924.325-.75 6.164-1.326 10.724-2.077 16.814-.046.361-.315.375-.825.375-.645 0-.945 0-1.005-.42C1.855 17.939 1.24 12.93.506 6.782c-.016-.301.105-.301.809-.301.735 0 .886.075.899.404.406 4.381.706 7.785 1.081 11.955 0 .076.031.24.15.24.15 0 .18-.164.18-.27l-.016-.033zm9.315-10.662c-.225 0-.451 0-.553.173-.074.15-.074.277-.074.427v4.682c0 .275-.051.551.15.701.148.119.324.09.449.09.277 0 .93-.074 1.38-.555.499-.557.499-.975.499-1.335V9.944c0-.575-.1-1.002-.525-1.451-.275-.25-.425-.375-1.326-.375v-.003zm7.234 0c-.352 0-.625 0-.727.173-.073.15-.073.277-.073.427v4.682c0 .275-.026.5.149.676.149.15.251.125.45.125.35 0 .927-.074 1.38-.549.498-.557.498-.932.498-1.335v-2.37c0-.575-.099-1.002-.526-1.451-.275-.25-.448-.375-1.151-.375v-.003zM10.89 2.01H9.312V.395C9.312.024 9.139 0 8.476 0c-.587 0-.735.049-.735.368V2.01H6.204c-.369 0-.396.174-.396.835 0 .59.051.735.369.735H7.74v1.549c0 .342.075.342.734.342.786 0 .836-.023.836-.393V3.583h1.627c.345 0 .345-.076.345-.736.001-.786-.024-.836-.392-.837z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/virgin.svg b/assets/lib/simple-icons/icons/virgin.svg
new file mode 100644
index 00000000..7f282082
--- /dev/null
+++ b/assets/lib/simple-icons/icons/virgin.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Virgin</title><path d="m7.951 9.821.008-.004c.044-.06.105-.114.13-.18.04-.11.066-.228-.005-.34-.016-.026-.024-.056-.036-.084-.035-.09-.08-.118-.204-.116a.56.56 0 0 0-.281.086 3.11 3.11 0 0 0-.298.211c-.05.04-.09.092-.135.137-.06.06-.074.14-.11.21a.46.46 0 0 0-.053.222c.002.094.041.18.113.23.08.054.184.092.29.042a1.84 1.84 0 0 0 .216-.116c.133-.086.282-.156.365-.298M24 9.423c-.008-.01-.02-.02-.023-.033a.635.635 0 0 0-.173-.28.3.3 0 0 0-.123-.06c-.039-.01-.082.002-.122-.007a.986.986 0 0 0-.688.098c-.217.113-.43.233-.65.341a5.64 5.64 0 0 1-.448.192c-.106.042-.167.02-.234-.06-.009-.012-.02-.025-.032-.028-.05-.012-.05-.055-.063-.09-.005-.015-.01-.04-.017-.042-.068-.011-.046-.038-.016-.07.01-.01.015-.023.025-.038-.034-.032-.09-.05-.064-.11.002-.004-.008-.016-.015-.019-.044-.019-.024-.052-.021-.082.005-.057.006-.064.032-.088l-.052-.05.053-.094c-.046-.01-.063-.038-.036-.066.032-.031.027-.06.022-.096-.002-.016-.005-.037.003-.05.02-.03.016-.058.006-.09-.006-.02.006-.044.01-.07-.047-.019-.061-.054-.042-.104.005-.012.009-.03.004-.04-.025-.047.002-.081.019-.1-.013-.05-.03-.084-.03-.119a9.858 9.858 0 0 1 .002-.412c0-.022.02-.043.031-.066-.03-.053-.03-.053.014-.096-.014-.03-.032-.057-.037-.085-.008-.053.051-.034.07-.054-.008-.05-.02-.095-.022-.14 0-.041-.007-.082.01-.125.014-.038.002-.085.002-.131l-.046.004-.007-.149c-.002-.054.008-.1.066-.102v-.127c-.021-.032-.045-.061-.062-.094-.022-.043.013-.073.041-.107-.057-.027-.067-.073-.08-.123-.016-.063-.03-.142-.075-.18-.042-.036-.077-.085-.131-.109l-.033-.013c-.22-.099-.437-.061-.647.024-.114.046-.218.117-.326.178a.343.343 0 0 0-.07.052c-.078.075-.154.152-.23.228a1.096 1.096 0 0 0-.08.095.747.747 0 0 1-.338.244.362.362 0 0 1-.275-.01c-.066-.029-.117-.039-.179 0a.165.165 0 0 1-.093.018c-.273-.036-.497.075-.682.252a.927.927 0 0 0-.263.547c-.015.107-.015.217-.02.325-.01.179-.017.357-.026.536l-.036.682c-.007.138-.009.276-.016.413-.016.32-.035.64-.05.961a.932.932 0 0 0 .007.182c.023.16.08.25.22.279a.52.52 0 0 0 .331-.028c.088-.041.18-.077.26-.13.099-.066.219-.12.235-.26 0-.003.003-.005.004-.008.04-.07.08-.14.115-.213a.12.12 0 0 0 .013-.072c-.007-.032-.048-.055-.007-.099.019-.02 0-.07.007-.106.007-.039.022-.076.034-.118l-.061-.049.032-.03c-.068-.063-.013-.116.022-.17-.019-.021-.062-.004-.057-.05.012-.12-.027-.244.034-.36.002-.004.005-.013.003-.015-.047-.054-.004-.1.008-.153.03.038.048.006.067-.002l-.011-.068c-.01-.052.002-.11-.054-.148-.013-.008-.016-.051-.006-.07a.36.36 0 0 1 .074-.096c.03-.029.035-.057.02-.094a.758.758 0 0 1-.036-.106c-.005-.024-.011-.057 0-.075.012-.018.044-.022.066-.032v-.115l-.04-.026.026-.057c.055.009.055.009.044-.042-.001-.008-.004-.02 0-.024.045-.053.025-.117.033-.176.002-.017 0-.038.01-.049.049-.058.05-.128.056-.188.038-.034.09-.058.1-.093.022-.077.078-.12.134-.164a.213.213 0 0 0 .066-.078.387.387 0 0 1 .102-.137c.068-.054.148-.093.22-.143.11-.076.227-.039.342-.026.023.003.047.025.064.045.066.075.106.164.03.304a.358.358 0 0 0-.01.344c.102.188.009.359.026.538-.04.054-.02.109-.002.164a.066.066 0 0 1 0 .041.495.495 0 0 0-.015.327c.006.018.002.04 0 .061-.01.156-.039.31-.035.467.002.13 0 .258.005.387a.448.448 0 0 0 .118.286c.04.045.095.077.145.111.044.03.049.047.01.08a.368.368 0 0 1-.051.035c-.066.04-.132.079-.199.116l-.696.39-.996.558c-.196.11-.392.219-.586.33-.224.13-.446.264-.671.393-.031.018-.071.022-.106.034-.016.005-.034.01-.046.021a.766.766 0 0 1-.221.14c-.07.033-.14.064-.206.103-.12.073-.238.152-.357.227l-.557.343c-.236.145-.474.288-.709.435-.13.081-.255.169-.384.253-.023.015-.05.024-.082.04-.005-.033-.011-.053-.011-.072a5.868 5.868 0 0 1 0-.227 2.493 2.493 0 0 1 .01-.19c.007-.078.028-.152.013-.233-.013-.07.006-.144.01-.216.005-.051.024-.107.01-.154a.52.52 0 0 1-.013-.208 4.242 4.242 0 0 0 .024-.39c0-.046.014-.091.018-.137.008-.088.013-.176.02-.263.02-.201.042-.402.057-.603.016-.201.023-.403.037-.604.008-.115 0-.239.041-.342.044-.11-.008-.218.033-.32-.049-.108.04-.214.004-.321-.002-.005.013-.013.014-.02a.134.134 0 0 0 0-.045c-.003-.02-.014-.039-.014-.058 0-.059-.002-.119.005-.177a.354.354 0 0 0-.09-.284.361.361 0 0 0-.232-.114.701.701 0 0 0-.39.052c-.174.08-.304.197-.34.387a3.91 3.91 0 0 0-.05.427c-.017.22-.027.439-.042.658-.01.143-.025.286-.038.429-.007.08.005.163-.047.234a.025.025 0 0 0-.003.022c.034.078.01.158.005.235-.007.152-.036.303-.049.454-.022.254-.062.505-.103.756-.028.176-.08.34-.213.474a.785.785 0 0 1-.503.25.244.244 0 0 1-.252-.131.654.654 0 0 1-.082-.239c-.015-.156-.04-.314.003-.471.005-.02 0-.04 0-.061.002-.047.001-.094.005-.14a3.877 3.877 0 0 1 .026-.21c.005-.033.008-.07.024-.1.028-.056.024-.104-.002-.16a.218.218 0 0 1-.019-.126c.014-.085.019-.171.051-.254.032-.084.046-.175.072-.262a.248.248 0 0 1 .048-.103c.04-.042.047-.092.061-.142a.498.498 0 0 1 .044-.113c.03-.051.063-.104.086-.155.024-.052.04-.1.089-.134a.12.12 0 0 0 .036-.058.27.27 0 0 1 .102-.13c.029-.02.067-.038.081-.066.05-.095.123-.177.146-.286.012-.054.01-.111.027-.16a.246.246 0 0 0-.009-.182.186.186 0 0 0-.084-.086.344.344 0 0 0-.237-.023c-.164.047-.337.073-.468.198-.014.013-.037.018-.053.03-.104.083-.216.157-.308.25-.086.088-.15.195-.224.294-.166.224-.29.47-.376.733-.095.288-.133.587-.175.884-.026.188.001.382-.061.566-.01.027-.006.058-.004.088.006.063.018.126.02.19.003.114 0 .228-.001.343-.001.24-.018.48.036.718.026.115.056.23.13.323a.796.796 0 0 0 .602.307c.146.009.29-.011.431-.044.05-.011.099-.036.154-.013.012.005.033-.005.049-.012.02-.009.04-.022.06-.031.076-.031.149-.07.232-.077a.099.099 0 0 0 .039-.014c.109-.072.217-.146.326-.219.02-.013.05-.03.068-.024.016.006.028.04.03.064.003.06-.005.122.002.182a1.65 1.65 0 0 1-.003.344.099.099 0 0 1-.044.071c-.149.1-.298.2-.443.307-.217.16-.43.324-.644.485a23.486 23.486 0 0 1-.384.281c-.134.096-.27.189-.404.285-.15.11-.297.224-.448.332-.193.14-.39.274-.584.413-.047.035-.086.08-.131.118-.057.046-.117.09-.175.135a41.919 41.919 0 0 0-.255.203l-.353.282c-.142.114-.284.23-.426.343-.076.06-.155.116-.229.178-.114.098-.221.202-.336.298-.142.12-.29.232-.433.35a45.057 45.057 0 0 0-.515.432c-.15.128-.3.256-.447.388-.138.124-.271.253-.407.38-.164.152-.33.302-.494.455-.229.217-.467.425-.661.675l-.214.28a.328.328 0 0 0-.057.217.78.78 0 0 0 .079.322.493.493 0 0 0 .188.202c.154.093.32.111.495.105a.378.378 0 0 0 .257-.113c.076-.073.155-.143.23-.216.08-.075.156-.152.234-.228.019-.019.04-.036.058-.055a11.42 11.42 0 0 0 .123-.124 2.737 2.737 0 0 0 .073-.077l.204-.228c.025-.029.047-.06.074-.086l.596-.589c.045-.045.09-.092.133-.139a2.143 2.143 0 0 0 .087-.097c.028-.034.05-.072.08-.103.056-.056.116-.107.172-.163.096-.094.188-.193.288-.284.092-.085.194-.16.288-.243.042-.037.074-.083.112-.123l.246-.252c.006-.006.014-.01.021-.016.15-.12.3-.238.447-.36.21-.171.417-.346.627-.517.14-.114.285-.221.424-.335.203-.166.401-.337.605-.502.116-.095.24-.182.358-.274.116-.09.23-.184.347-.274a64.393 64.393 0 0 1 .489-.377c.157-.12.313-.24.473-.355.085-.06.176-.116.28-.155.004.027.01.047.009.066-.003.07-.01.139-.011.208-.002.208-.002.416-.002.625l-.001.79c0 .316 0 .632-.002.948 0 .056.022.117-.027.167-.007.007.002.027.003.041.003.037.009.075.008.112-.004.093-.014.186-.015.279 0 .082.012.163.014.245a7.293 7.293 0 0 1-.004.314l-.014.358c-.003.137-.003.275-.009.412-.006.152-.018.304-.023.456-.007.202-.004.404-.016.605-.016.277-.007.55.083.816.031.09.055.184.126.259a.7.7 0 0 0 .34.195c.023.005.044.015.066.023.07.021.132.02.203.015a.384.384 0 0 0 .16-.05c.077-.043.154-.085.226-.134a.523.523 0 0 0 .118-.13c.022-.03.025-.073.047-.103.023-.031.057-.054.087-.08l-.078-.045c.012-.026.022-.048.034-.07.006-.012.024-.023.022-.032-.01-.053.024-.085.06-.121-.03-.017-.074-.028-.077-.046-.01-.053-.051-.082-.077-.12l.042-.075-.05-.018c.094-.003.05-.098.1-.124-.02-.027-.06-.031-.036-.081.014-.03-.033-.06-.076-.06-.047 0-.072-.02-.073-.067l-.008-.129.058-.026-.002-.014-.065-.01c.077-.022.1-.084.127-.146a.394.394 0 0 1-.077-.256c.002-.026-.003-.06-.054-.053-.043.005-.079-.056-.064-.1.015-.043.031-.082-.01-.124l.057-.025c.025-.063-.03-.12-.011-.18-.044-.029-.047-.067-.02-.11l-.056-.006.048-.124-.1-.105c.03-.066.03-.066.006-.166l.051-.029c-.024-.026-.022-.073-.071-.07-.006 0-.014-.012-.017-.02-.026-.06-.001-.111.064-.135l-.023-.036c-.043-.069-.064-.136.015-.198.01-.008.012-.038.006-.054-.02-.064-.045-.127-.064-.18.02-.054.035-.102.056-.147.018-.04.028-.074-.003-.113-.007-.01.003-.032.005-.053l-.056-.074.08-.02c-.002-.014 0-.03-.007-.035-.022-.018-.046-.031-.069-.046 0-.037-.007-.076.003-.11.01-.032.037-.059.058-.09-.005-.054-.016-.116-.014-.178.001-.067.015-.133.022-.2 0-.009 0-.02-.005-.025-.025-.024-.023-.048-.017-.08.01-.044.008-.09.01-.136l.016-.473a.361.361 0 0 0-.016-.108c-.013-.039-.02-.075.023-.109.008-.006.009-.032.003-.042-.029-.043-.02-.093-.02-.138a2.898 2.898 0 0 1 .004-.356c.005-.052.03-.1-.005-.15-.006-.008-.003-.03.003-.04.029-.05.024-.094-.006-.14-.01-.016-.01-.039-.01-.041.021-.028.049-.058.046-.06-.06-.068-.013-.136.003-.199.015-.059.018-.108-.028-.148.007-.061.058-.117.004-.176-.005-.006.007-.033.017-.046.022-.029.045-.055.014-.092-.006-.007-.002-.023-.001-.034.006-.097.022-.194.016-.29-.005-.086.04-.123.103-.161.053-.033.119-.054.139-.125.002-.009.016-.016.026-.023.091-.064.182-.13.274-.191.202-.136.4-.276.618-.388.088-.045.162-.114.245-.168.19-.123.38-.248.575-.366.219-.133.442-.26.664-.39.26-.152.517-.307.78-.455a94.35 94.35 0 0 1 1.162-.639c.26-.14.522-.276.783-.414.208-.11.417-.22.627-.329.178-.092.355-.188.538-.27.27-.12.54-.237.817-.341.262-.1.53-.184.798-.27.226-.073.455-.134.66-.257.215-.128.399-.285.498-.522a.672.672 0 0 1 .073-.124c.005-.008.026-.006.039-.009v-.035c-.04-.05-.04-.05 0-.106zm-7.653-2.757a.408.408 0 0 0 .122.071c.098.039.208.054.3.013.154-.068.3-.16.39-.32a.385.385 0 0 1 .043-.06c.086-.1.17-.199.202-.34a.527.527 0 0 0 .014-.157c-.007-.091-.063-.15-.1-.218-.035-.005-.07-.003-.098-.014a.468.468 0 0 0-.297-.008.906.906 0 0 0-.464.294c-.158.18-.254.387-.17.64a.238.238 0 0 0 .058.1m-.54 5.139a.592.592 0 0 0 .281-.06 9.347 9.347 0 0 0 .335-.164.699.699 0 0 0 .255-.219c.05-.07.123-.136.12-.231-.002-.033.014-.067.017-.1.002-.025-.004-.05-.008-.076-.006-.033-.022-.067-.02-.1a18.424 18.424 0 0 1 .024-.497c.003-.054.015-.108.023-.161l.074.004c-.017-.023-.031-.038-.041-.054a.802.802 0 0 1-.031-.065l.105.018c-.021-.03-.027-.054-.043-.061-.054-.023-.055-.064-.054-.105.002-.042-.009-.097.017-.123.064-.063.068-.128.056-.203a.798.798 0 0 1-.01-.143c.003-.098.01-.196.014-.293 0-.005-.007-.01-.008-.016-.002-.028-.012-.058-.003-.083a.17.17 0 0 0 .003-.11.537.537 0 0 1-.005-.278c.014-.056.031-.112.043-.17.002-.008-.018-.02-.029-.033.053-.074.058-.151.064-.227.003-.04-.019-.078.011-.122a.242.242 0 0 0 .033-.13c0-.053.013-.106-.021-.161-.026-.041-.061-.084-.06-.14.003-.091-.051-.144-.156-.15-.139-.01-.278-.007-.403.058a.983.983 0 0 0-.552.773c-.005.06-.014.121-.022.181-.04.284-.082.567-.117.85-.039.319-.07.638-.107.957-.026.231-.055.463-.079.695-.015.148-.033.297-.028.444.005.179.108.284.322.295m-10.31 1.223a.328.328 0 0 1 .073-.282c.018-.02.034-.062.024-.08-.024-.04.014-.058.018-.087.006-.03-.028-.06 0-.093.01-.012.01-.033.012-.05.003-.038 0-.077.007-.113l.122-.521c.052-.223.098-.447.156-.669.047-.183.08-.372.166-.544.019-.037.025-.08.046-.116.032-.056.023-.13.081-.173.009-.007.013-.02.016-.032l.054-.206c.016-.061.028-.124.098-.152.012-.005.022-.02.027-.034.034-.076.07-.151.07-.237 0-.032-.007-.064-.002-.095.02-.126.051-.25.06-.377a.417.417 0 0 1 .06-.19c.066-.111.089-.235.114-.355.02-.094.068-.168.113-.247.018-.032.03-.054.009-.088a.087.087 0 0 1-.003-.093c.065-.126.095-.262.125-.399a2.69 2.69 0 0 1 .06-.23c.027-.088.062-.173.091-.26.03-.086.054-.173.083-.26.02-.062.037-.128.071-.183a.635.635 0 0 0 .08-.203 1.05 1.05 0 0 1 .064-.194c.055-.124.116-.247.175-.37.02-.04.045-.077.062-.117a.224.224 0 0 0 .022-.094.351.351 0 0 1 .034-.164c.084-.188.161-.379.249-.565.15-.32.256-.662.468-.953.049-.066.077-.146.12-.216a4.29 4.29 0 0 1 .439-.566c.053-.06.116-.113.176-.17.027.015.047.012.05-.015.01-.072.063-.094.121-.115.013-.005.03-.012.035-.023.019-.046.063-.082.053-.139-.002-.013.005-.03.013-.04.044-.064.092-.124.135-.188a.742.742 0 0 0 .133-.393 1.137 1.137 0 0 0-.043-.352.789.789 0 0 0-.568-.571 1.305 1.305 0 0 0-.246-.056 1.059 1.059 0 0 0-.19 0 .954.954 0 0 0-.492.27c-.13.123-.244.258-.335.416a3.677 3.677 0 0 0-.248.526 24.106 24.106 0 0 1-.146.375c-.037.094-.08.186-.116.281-.1.26-.195.52-.293.78-.093.248-.19.496-.281.745-.06.16-.112.322-.17.482L6.175 6.26c-.02.053-.033.111-.064.157-.048.073-.064.153-.085.234-.026.1-.052.203-.098.296-.077.157-.123.322-.172.488-.033.113-.037.237-.107.34-.011.015-.012.04-.012.06-.002.073.008.149-.049.21-.003.004-.003.012-.004.017l-.076.294-.132.465c-.04.146-.082.293-.119.44-.018.072-.021.147-.04.219-.027.094-.067.185-.092.28-.09.333-.175.668-.262 1.003-.012.045-.026.09-.037.137a88.407 88.407 0 0 0-.106.434c-.015.064-.031.128-.044.192-.06.298-.112.597-.177.894-.055.25-.107.501-.143.755-.035.236-.084.47-.126.705-.016.085-.03.17-.042.255l-.054.354c-.043.277-.089.553-.13.83-.026.171-.044.343-.07.513-.007.051-.03.1-.048.152-.032-.026-.058-.04-.074-.061a.137.137 0 0 1-.025-.07c-.003-.062 0-.124-.003-.185 0-.013-.01-.03-.021-.035-.038-.016-.033-.046-.034-.076-.003-.106 0-.213-.036-.318-.01-.031 0-.07.003-.106.003-.058.011-.117.01-.176 0-.028-.006-.066-.025-.082-.071-.06-.074-.15-.092-.226a.44.44 0 0 1 .028-.241c.027-.07.034-.129 0-.194a.399.399 0 0 1-.02-.049c-.032-.093-.077-.183-.072-.284a.563.563 0 0 0-.04-.217c-.027-.077-.063-.16-.008-.237-.02-.043-.06-.085-.054-.122.017-.137-.057-.246-.1-.364-.016-.044-.032-.081-.016-.112-.02-.039-.045-.067-.051-.097-.015-.08-.014-.16-.034-.24-.03-.116-.034-.238-.055-.357-.022-.125-.075-.246-.038-.377a.039.039 0 0 0-.003-.027c-.025-.049.016-.12-.053-.157-.006-.002.001-.027 0-.04 0-.023.004-.047-.005-.066-.036-.085-.022-.182-.066-.265-.006-.012 0-.03 0-.044-.001-.018 0-.035-.004-.052-.01-.04-.024-.08-.03-.12-.023-.14-.04-.283-.064-.424a104.342 104.342 0 0 0-.16-.923.85.85 0 0 0-.144-.345c-.17-.24-.53-.289-.772-.142a.656.656 0 0 0-.279.342c-.036.095-.06.194-.099.288-.117.287-.174.595-.31.876-.008.109-.057.205-.092.306-.029.081-.041.167-.067.25-.027.088-.063.173-.09.262-.039.13-.096.254-.127.389a.693.693 0 0 1-.116.288c-.025.033-.026.084-.037.126-.015.058-.014.128-.049.17-.053.063-.065.137-.089.208-.012.037-.01.077-.023.113-.058.168-.14.326-.187.5-.054.204-.138.4-.208.6a1.24 1.24 0 0 0-.047.163.43.43 0 0 0 .287.49c.182.063.35.022.507-.076.052-.032.093-.081.14-.122-.018-.066.042-.106.058-.163.02-.073.059-.14.084-.213.03-.083.092-.15.104-.242.005-.04.042-.075.065-.113-.022-.016-.006-.036.004-.058.03-.067.068-.133.087-.203.015-.055.02-.11.044-.166.038-.085.035-.187.088-.27-.013-.084.048-.145.08-.21a.325.325 0 0 0 .037-.201c.032-.016.077-.023.066-.077 0-.004.018-.012.025-.02.02-.02.044-.038.055-.063.024-.05.04-.105.062-.156.007-.017.033-.04.042-.037a.44.44 0 0 1 .11.053c.034.024.047.058.027.101-.005.01.001.026.003.045.031-.008.054-.049.083-.012-.006.028-.014.055-.017.083a.972.972 0 0 0-.004.127c.002.037.016.073.014.109a.119.119 0 0 0 .034.096.242.242 0 0 1 .057.098c.018.078.026.158.039.237l.11.706c.007.05.013.1.014.15.002.091-.018.185.046.267.01.012.006.034.009.052.027.186.053.372.081.557.027.177.056.353.082.53.037.24.072.482.108.722.026.18.052.359.08.538l.12.748c.017.108.052.214.016.324-.007.022-.008.046-.012.065.096.077.102.107.041.21.048 0 .063.03.07.069.025.154.041.31.08.463.005.02.008.045 0 .062a.072.072 0 0 0 .01.082.118.118 0 0 1 .02.05c.03.166.06.332.087.498.03.182.054.366.09.546.044.213.103.423.144.636.036.19.25.391.486.36.2-.025.428-.14.491-.384a6.125 6.125 0 0 0 .104-.47c.037-.204.065-.411.094-.617.039-.271.078-.542.113-.814.036-.277.066-.556.101-.833a85.361 85.361 0 0 1 .098-.754c.013-.097.02-.197.049-.29.026-.085.07-.163.057-.253.098-.037.12-.08.064-.131-.04-.037-.045-.073-.04-.118l.01-.088c.014-.103.034-.206.037-.31.002-.067.019-.134.061-.172.078-.07.07-.165.1-.248.023-.065.01-.144.014-.22-.049-.014-.084-.034-.077-.086.009-.065.012-.131.025-.195.028-.139.062-.276.092-.414a.167.167 0 0 0 0-.079c-.013-.044.003-.073.032-.103a.107.107 0 0 0 .03-.06 2.729 2.729 0 0 0 .008-.245c0-.043.011-.079.025-.119.027-.082.074-.161.048-.257-.008-.027.012-.07.033-.096.081-.098.083-.207.056-.32m2.18-.666c-.015-.065-.001-.08.065-.115-.021-.038-.06-.075-.053-.102.017-.067-.016-.12-.034-.176a.228.228 0 0 0-.2-.16.476.476 0 0 0-.195.014 1.239 1.239 0 0 0-.333.157c-.172.11-.3.248-.386.425a1.766 1.766 0 0 0-.16.569c-.019.152-.03.306-.043.459-.002.014 0 .029-.001.044-.004.109-.007.218-.013.327a52.91 52.91 0 0 1-.028.504c-.002.039.011.081-.03.113-.008.006-.004.027-.003.041 0 .072.015.146 0 .214-.035.149-.03.299-.037.448-.008.171-.021.342-.026.513-.004.183-.01.366 0 .548.008.162.114.249.288.263a.455.455 0 0 0 .241-.05 2.2 2.2 0 0 0 .391-.253c.031-.024.045-.075.104-.054.006.002.027-.012.028-.02.005-.06.06-.032.097-.044l.02-.083-.084-.005c.006-.033.011-.063.019-.093.007-.03.021-.06.026-.09.015-.086.014-.176.044-.256.046-.118.012-.235.021-.352.006-.083-.004-.166.005-.249.014-.138.036-.275.056-.413.01-.068.026-.136.037-.204a2.184 2.184 0 0 0 .024-.18c.004-.054 0-.106.025-.16a.495.495 0 0 0 .04-.184c.008-.127.005-.254.007-.381 0-.015-.002-.032.005-.043.055-.088.055-.188.07-.283a.793.793 0 0 0 .019-.18.253.253 0 0 1 .03-.143c.015-.025.031-.06.022-.08a.125.125 0 0 1 .008-.12c-.025-.063-.052-.113-.065-.166m1.132-.94a1.285 1.285 0 0 0-.12.473c-.01.155-.014.31-.021.465-.008.15-.015.298-.025.447-.007.093-.018.186-.026.278-.004.048.005.1-.012.142a.604.604 0 0 0-.04.268l-.002.008c.004.071-.021.141-.006.214.006.03.001.065-.002.097-.007.064-.037.134-.02.19.032.11.006.217.007.325 0 .094-.035.184-.024.282.012.1.004.203.005.304 0 .082.027.156.066.225.06.107.166.164.269.145.193-.036.402-.137.57-.304a.708.708 0 0 0 .206-.398 3.67 3.67 0 0 0 .042-.492c.005-.24.017-.48.028-.719.003-.06.026-.124.016-.183-.018-.102.009-.201.008-.302 0-.049.01-.106.053-.134.003-.055-.006-.102.01-.136.028-.06.027-.123.044-.184.009-.033.034-.064.034-.097a.24.24 0 0 1 .046-.133c.103-.16.21-.318.366-.433a6.662 6.662 0 0 0 .29-.228c.136-.112.273-.226.26-.431 0-.014.009-.028.008-.042-.003-.036-.001-.075-.014-.107-.028-.067-.064-.13-.097-.195-.048-.095-.13-.124-.229-.124-.096 0-.18.041-.265.081-.056.027-.11.056-.168.082-.054.024-.112.039-.163.068a.77.77 0 0 1-.3.096 1.25 1.25 0 0 0-.455.125.74.74 0 0 0-.34.327"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/virtualbox.svg b/assets/lib/simple-icons/icons/virtualbox.svg
new file mode 100644
index 00000000..23ab845d
--- /dev/null
+++ b/assets/lib/simple-icons/icons/virtualbox.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>VirtualBox</title><path d="M12 0a.477.477 0 0 0-.188.047L2.17 4.274c-.265.169-.378.363-.372.692l.832 10.278c.009.107.047.165.128.25l3.564 2.713s.015 2.015.455 2.806C7.109 21.61 8.652 24.033 12 24c3.348-.033 4.988-2.03 5.484-3.028.47-.946.46-2.912.46-2.912l3.255-2.548a.31.31 0 0 0 .14-.258l.86-10.31c.026-.312-.103-.57-.368-.685L12.181.047A.435.435 0 0 0 12 0zm-.051 1.078c.054.002.108.02.188.056l7.417 3.429L12.132 8.9c-.115.058-.166.049-.264 0l-7.35-4.264c-.113-.074-.12-.125 0-.197l7.234-3.314a.534.534 0 0 1 .197-.047zm.01.688L5.905 4.591l6.042 3.49 6.067-3.48zm0 .375l5.232 2.46-3.262 1.82-1.04-.557 1.764-2.208-2.138.838L13.639 3.1l-3.252 1.346 1.1-1.15-.978-.45zm-1.837.849l.784.388-2.115 2.098 3.615-1.492-1.246 1.502 2.237-.932-1.136 1.419 1.232.666-1.56.885-5.148-2.946zm-6.93 3.902c.029 0 .072.02.135.054l7.28 4.577.017 7.818-6.853-5.057c-.077-.073-.104-.098-.103-.193l-.52-7.137c0-.043.015-.062.044-.062zm17.592.086c.03 0 .042.02.043.062l-.495 7.027c0 .096-.026.12-.103.193l-6.843 5.081.043-7.805 7.219-4.504a.348.348 0 0 1 .136-.054zm-.805 3.206l-.177.126-.133.442-.049-.315-.226.15.145.598-.224.915.233-.195.085-.527.064.413.278-.184-.195-.682zm-15.71.249c-.12-.011-.19.127-.169.37.028.327.21.72.408.877l.419.33c.2.158.338.018.307-.313-.03-.33-.216-.724-.414-.879l-.417-.323a.265.265 0 0 0-.134-.062zm.075.235a.173.173 0 0 1 .087.041l.397.31c.129.101.25.358.27.57.02.215-.07.304-.199.202l-.4-.315c-.128-.101-.246-.354-.264-.566-.014-.158.03-.249.109-.242zm14.823.103c0-.035-.074.01-.115.04-.16.123-.358.559-.372 1.068-.015.556.11.619.263.514.162-.11.382-.492.39-1.026.007-.409-.166-.491-.166-.596zm-.713.067s-.439.19-.44.295c-.01.65-.07 1.968-.07 1.968l.332-.251s.329-.218.334-.82c.003-.386-.126-.31-.126-.31s.104-.218.106-.514c.005-.445-.136-.368-.136-.368zm.602.214c.115 0 .094.268.092.446-.002.175-.088.576-.18.643-.093.068-.1-.243-.098-.423.003-.173.074-.666.186-.666zm-.72.075s.08-.05.073.214a.829.829 0 0 1-.088.328l-.134.09.006-.538zm-.512.021l-.229.14-.06 1.843s-.014.184.036.222c.072.056.267-.173.267-.173l-.004-.21s-.075.018-.072-.058zM5.25 11.16l.112 1.196.14.111-.091-.988.461.363a.47.47 0 0 1 .137.287c.01.108-.033.154-.098.103l-.396-.313.477.936.205.163-.32-.617.063.05c.137.107.23.013.208-.213-.022-.225-.15-.496-.287-.602zm13.049.78s.1-.024.09.279c-.008.257-.09.338-.09.338l-.152.11.013-.62zm-.95.174c-.042-.012-.102.006-.189.077-.107.07-.305.38-.305.38l.008.19s.114-.141.171-.187c.221-.22.165.09.165.09l-.005.099-.156.146s-.231.227-.243.658c-.006.206.068.35.18.265.11-.082.247-.33.247-.33l.004.144.19-.17.013-1.02s.043-.307-.08-.342zm-10.704.126c-.035-.028-.066-.027-.08.004l-.334.8.167.133.273-.671.254.69-.38-.3.105.28.386.307.103.28.17.134-.572-1.518a.338.338 0 0 0-.092-.139zm10.054.35l-.18.132-.01 1.078s-.098.19-.14.217c-.072.047-.07-.107-.07-.107l.015-1.02-.192.145-.015 1.02s-.011.457.182.313a.779.779 0 0 0 .222-.323l.017.128.154-.11zm-.806.11l-.164.108-.066.489-.077.049v.023l-.152.095c-.06.093-.098.38-.098.38l.002-.288-.175.124-.04 1.483.198-.143.043-.877s.032-.211.098-.321l.107-.086.017-.309.002.155.066-.056-.008.945s-.015.314.15.204c.057-.039.213-.23.213-.23L16 14.252s-.076.071-.1.086c-.037.023-.036-.058-.036-.058l.021-.915.11-.077-.003-.24-.096.06zm-8.551.14c-.124-.012-.197.13-.171.384.035.339.232.748.44.913l.449.353.062-.15-.524-.415c-.134-.107-.263-.37-.286-.59-.023-.219.07-.31.203-.206l.423.333.062-.15-.517-.408a.28.28 0 0 0-.141-.064zm9.85.172v.357s-.107.126-.156.155c-.048.029-.06-.055-.06-.129a.457.457 0 0 1 .118-.293zm-2.226.171c-.067.048-.123.188-.124.313 0 .125.053.187.12.14.068-.048.125-.188.126-.314 0-.125-.054-.188-.122-.139zm-6.887.189l.12 1.12a.296.296 0 0 0 .087.178l.673.532.062-.152-.686-.543-.11-1.022zm6.684.109l-.213.156s-.022.371-.182 1.69c-.132-.98-.132-1.45-.132-1.45l-.246.163.152 1.803.365-.208zm.259.298l-.197.141-.062 1.505.197-.142zm-5.911.446c-.127-.013-.198.133-.169.392.039.346.244.765.457.934l.46.364.064-.154-.541-.426c-.114-.09-.225-.29-.273-.485l.636.5.062-.153-.724-.57c.01-.146.094-.196.207-.107l.436.343.062-.152-.534-.418a.292.292 0 0 0-.143-.068zm.769.587c-.013.013-.02.042-.015.081a.351.351 0 0 0 .105.21c.048.038.08.006.07-.073a.36.36 0 0 0-.105-.212c-.024-.018-.042-.02-.055-.006zm.015.032c.01-.01.026-.01.045.004.038.03.074.104.08.165.008.063-.016.088-.055.058-.012-.01-.015-.035-.025-.051l.006.004-.006-.06.015.01.025.078.022.017-.03-.084h.004c.008-.002.009-.013.008-.019v-.013a.122.122 0 0 0-.025-.058.12.12 0 0 0-.026-.025l-.023-.02.015.137c-.015-.03-.037-.05-.04-.08-.005-.032 0-.053.01-.063zm.036.047l.006.004c.01.008.013.011.018.017a.07.07 0 0 1 .01.026c0 .006.002.01 0 .013-.002.006-.009.002-.015-.002l-.013-.01z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/virustotal.svg b/assets/lib/simple-icons/icons/virustotal.svg
new file mode 100644
index 00000000..b1271ea0
--- /dev/null
+++ b/assets/lib/simple-icons/icons/virustotal.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>VirusTotal</title><path d="M10.87 12L0 22.68h24V1.32H0zm10.73 8.52H5.28l8.637-8.448L5.28 3.48H21.6z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/visa.svg b/assets/lib/simple-icons/icons/visa.svg
index 793113e7..6a652706 100644
--- a/assets/lib/simple-icons/icons/visa.svg
+++ b/assets/lib/simple-icons/icons/visa.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Visa icon</title><path d="M17.445 8.623c-.387-.146-.99-.301-1.74-.301-1.92 0-3.275.968-3.285 2.355-.012 1.02.964 1.594 1.701 1.936.757.35 1.01.57 1.008.885-.005.477-.605.693-1.162.693-.766 0-1.186-.107-1.831-.375l-.239-.111-.271 1.598c.466.195 1.306.362 2.175.375 2.041 0 3.375-.961 3.391-2.439.016-.813-.51-1.43-1.621-1.938-.674-.33-1.094-.551-1.094-.886 0-.296.359-.612 1.109-.612.645-.01 1.096.129 1.455.273l.18.081.271-1.544-.047.01zm4.983-.17h-1.5c-.467 0-.816.127-1.021.591l-2.885 6.534h2.041l.408-1.07 2.49.002c.061.25.24 1.068.24 1.068H24l-1.572-7.125zM9.66 8.393h1.943l-1.215 7.129H8.444L9.66 8.391v.002zm-4.939 3.929l.202.99 1.901-4.859h2.059l-3.061 7.115H3.768l-1.68-6.026c-.035-.103-.078-.173-.18-.237C1.34 9.008.705 8.766 0 8.598l.025-.15h3.131c.424.016.766.15.883.604l.682 3.273v-.003zm15.308.727l.775-1.994c-.01.02.16-.412.258-.68l.133.615.449 2.057h-1.615v.002z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Visa</title><path d="M9.112 8.262L5.97 15.758H3.92L2.374 9.775c-.094-.368-.175-.503-.461-.658C1.447 8.864.677 8.627 0 8.479l.046-.217h3.3a.904.904 0 01.894.764l.817 4.338 2.018-5.102zm8.033 5.049c.008-1.979-2.736-2.088-2.717-2.972.006-.269.262-.555.822-.628a3.66 3.66 0 011.913.336l.34-1.59a5.207 5.207 0 00-1.814-.333c-1.917 0-3.266 1.02-3.278 2.479-.012 1.079.963 1.68 1.698 2.04.756.367 1.01.603 1.006.931-.005.504-.602.725-1.16.734-.975.015-1.54-.263-1.992-.473l-.351 1.642c.453.208 1.289.39 2.156.398 2.037 0 3.37-1.006 3.377-2.564m5.061 2.447H24l-1.565-7.496h-1.656a.883.883 0 00-.826.55l-2.909 6.946h2.036l.405-1.12h2.488zm-2.163-2.656l1.02-2.815.588 2.815zm-8.16-4.84l-1.603 7.496H8.34l1.605-7.496z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/visualstudio.svg b/assets/lib/simple-icons/icons/visualstudio.svg
index 7338e385..2bdbc2ce 100644
--- a/assets/lib/simple-icons/icons/visualstudio.svg
+++ b/assets/lib/simple-icons/icons/visualstudio.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Visual Studio icon</title><path d="M17.58.07a1.5 1.5 0 0 0-1.032.392 1.5 1.5 0 0 0-.001 0 .88.88 0 0 0-.05.045L8.53 9.317 3.88 5.504l-.407-.35A1 1 0 0 0 2.45 5a1 1 0 0 0-.012.005l-1.816.75a1 1 0 0 0-.077.035 1 1 0 0 0-.047.028 1 1 0 0 0-.038.022 1 1 0 0 0-.048.034 1 1 0 0 0-.031.024 1 1 0 0 0-.043.036 1 1 0 0 0-.036.033 1 1 0 0 0-.032.035 1 1 0 0 0-.033.038 1 1 0 0 0-.035.044 1 1 0 0 0-.024.034 1 1 0 0 0-.032.051 1 1 0 0 0-.02.034 1 1 0 0 0-.024.05 1 1 0 0 0-.02.045 1 1 0 0 0-.016.044 1 1 0 0 0-.016.047 1 1 0 0 0-.015.055 1 1 0 0 0-.01.04 1 1 0 0 0-.008.054 1 1 0 0 0-.006.05 1 1 0 0 0-.004.083V17.33a1 1 0 0 0 .615.917l1.816.763a1 1 0 0 0 1.034-.163l.408-.35 4.65-3.813 7.968 8.81a1.5 1.5 0 0 0 .072.065 1.5 1.5 0 0 0 .057.05 1.5 1.5 0 0 0 .058.042 1.5 1.5 0 0 0 .063.044 1.5 1.5 0 0 0 .065.038 1.5 1.5 0 0 0 .065.036 1.5 1.5 0 0 0 .068.031 1.5 1.5 0 0 0 .07.03 1.5 1.5 0 0 0 .073.025 1.5 1.5 0 0 0 .066.02 1.5 1.5 0 0 0 .08.02 1.5 1.5 0 0 0 .068.014 1.5 1.5 0 0 0 .075.01 1.5 1.5 0 0 0 .075.007 1.5 1.5 0 0 0 .073.003 1.5 1.5 0 0 0 .077 0 1.5 1.5 0 0 0 .078-.005 1.5 1.5 0 0 0 .067-.007 1.5 1.5 0 0 0 .087-.014 1.5 1.5 0 0 0 .06-.012 1.5 1.5 0 0 0 .08-.022 1.5 1.5 0 0 0 .068-.02 1.5 1.5 0 0 0 .07-.028 1.5 1.5 0 0 0 .089-.037l4.942-2.376a1.5 1.5 0 0 0 .475-.362 1.5 1.5 0 0 0 .09-.112 1.5 1.5 0 0 0 .004-.007 1.5 1.5 0 0 0 .08-.125 1.5 1.5 0 0 0 .062-.12 1.5 1.5 0 0 0 .009-.017 1.5 1.5 0 0 0 .041-.107 1.5 1.5 0 0 0 .014-.037 1.5 1.5 0 0 0 .03-.107 1.5 1.5 0 0 0 .009-.037 1.5 1.5 0 0 0 .017-.1 1.5 1.5 0 0 0 .008-.05 1.5 1.5 0 0 0 .006-.091 1.5 1.5 0 0 0 .004-.079V3.946a1.5 1.5 0 0 0 0-.002 1.5 1.5 0 0 0 0-.032 1.5 1.5 0 0 0-.01-.15 1.5 1.5 0 0 0-.84-1.17L18.203.217a1.5 1.5 0 0 0-.621-.146zm.417 6.852v10.157l-6.195-5.078zM3.005 8.576l3.097 3.425-3.097 3.424z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Visual Studio</title><path d="M17.583.063a1.5 1.5 0 00-1.032.392 1.5 1.5 0 00-.001 0A.88.88 0 0016.5.5L8.528 9.316 3.875 5.5l-.407-.35a1 1 0 00-1.024-.154 1 1 0 00-.012.005l-1.817.75a1 1 0 00-.077.036 1 1 0 00-.047.028 1 1 0 00-.038.022 1 1 0 00-.048.034 1 1 0 00-.03.024 1 1 0 00-.044.036 1 1 0 00-.036.033 1 1 0 00-.032.035 1 1 0 00-.033.038 1 1 0 00-.035.044 1 1 0 00-.024.034 1 1 0 00-.032.05 1 1 0 00-.02.035 1 1 0 00-.024.05 1 1 0 00-.02.045 1 1 0 00-.016.044 1 1 0 00-.016.047 1 1 0 00-.015.055 1 1 0 00-.01.04 1 1 0 00-.008.054 1 1 0 00-.006.05A1 1 0 000 6.668v10.666a1 1 0 00.615.917l1.817.764a1 1 0 001.035-.164l.408-.35 4.653-3.815 7.973 8.815a1.5 1.5 0 00.072.065 1.5 1.5 0 00.057.05 1.5 1.5 0 00.058.042 1.5 1.5 0 00.063.044 1.5 1.5 0 00.065.038 1.5 1.5 0 00.065.036 1.5 1.5 0 00.068.031 1.5 1.5 0 00.07.03 1.5 1.5 0 00.073.025 1.5 1.5 0 00.066.02 1.5 1.5 0 00.08.02 1.5 1.5 0 00.068.014 1.5 1.5 0 00.075.01 1.5 1.5 0 00.075.008 1.5 1.5 0 00.073.003 1.5 1.5 0 00.077 0 1.5 1.5 0 00.078-.005 1.5 1.5 0 00.067-.007 1.5 1.5 0 00.087-.015 1.5 1.5 0 00.06-.012 1.5 1.5 0 00.08-.022 1.5 1.5 0 00.068-.02 1.5 1.5 0 00.07-.028 1.5 1.5 0 00.09-.037l4.944-2.377a1.5 1.5 0 00.476-.362 1.5 1.5 0 00.09-.112 1.5 1.5 0 00.004-.007 1.5 1.5 0 00.08-.125 1.5 1.5 0 00.062-.12 1.5 1.5 0 00.009-.017 1.5 1.5 0 00.04-.108 1.5 1.5 0 00.015-.037 1.5 1.5 0 00.03-.107 1.5 1.5 0 00.009-.037 1.5 1.5 0 00.017-.1 1.5 1.5 0 00.008-.05 1.5 1.5 0 00.006-.09 1.5 1.5 0 00.004-.08V3.942a1.5 1.5 0 000-.003 1.5 1.5 0 000-.032 1.5 1.5 0 00-.01-.15 1.5 1.5 0 00-.84-1.17L18.206.21a1.5 1.5 0 00-.622-.146zM18 6.92v10.163l-6.198-5.08zM3 8.574l3.099 3.427-3.1 3.426z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/visualstudiocode.svg b/assets/lib/simple-icons/icons/visualstudiocode.svg
index f091d172..51ed6bd9 100644
--- a/assets/lib/simple-icons/icons/visualstudiocode.svg
+++ b/assets/lib/simple-icons/icons/visualstudiocode.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Visual Studio Code icon</title><path d="M23.15 2.587L18.21.21a1.494 1.494 0 0 0-1.705.29l-9.46 8.63-4.12-3.128a.999.999 0 0 0-1.276.057L.327 7.261A1 1 0 0 0 .326 8.74L3.899 12 .326 15.26a1 1 0 0 0 .001 1.479L1.65 17.94a.999.999 0 0 0 1.276.057l4.12-3.128 9.46 8.63a1.492 1.492 0 0 0 1.704.29l4.942-2.377A1.5 1.5 0 0 0 24 20.06V3.939a1.5 1.5 0 0 0-.85-1.352zm-5.146 14.861L10.826 12l7.178-5.448v10.896z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Visual Studio Code</title><path d="M23.15 2.587L18.21.21a1.494 1.494 0 0 0-1.705.29l-9.46 8.63-4.12-3.128a.999.999 0 0 0-1.276.057L.327 7.261A1 1 0 0 0 .326 8.74L3.899 12 .326 15.26a1 1 0 0 0 .001 1.479L1.65 17.94a.999.999 0 0 0 1.276.057l4.12-3.128 9.46 8.63a1.492 1.492 0 0 0 1.704.29l4.942-2.377A1.5 1.5 0 0 0 24 20.06V3.939a1.5 1.5 0 0 0-.85-1.352zm-5.146 14.861L10.826 12l7.178-5.448v10.896z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/vite.svg b/assets/lib/simple-icons/icons/vite.svg
new file mode 100644
index 00000000..54ea8f98
--- /dev/null
+++ b/assets/lib/simple-icons/icons/vite.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Vite</title><path d="m8.286 10.578.512-8.657a.306.306 0 0 1 .247-.282L17.377.006a.306.306 0 0 1 .353.385l-1.558 5.403a.306.306 0 0 0 .352.385l2.388-.46a.306.306 0 0 1 .332.438l-6.79 13.55-.123.19a.294.294 0 0 1-.252.14c-.177 0-.35-.152-.305-.369l1.095-5.301a.306.306 0 0 0-.388-.355l-1.433.435a.306.306 0 0 1-.389-.354l.69-3.375a.306.306 0 0 0-.37-.36l-2.32.536a.306.306 0 0 1-.374-.316zm14.976-7.926L17.284 3.74l-.544 1.887 2.077-.4a.8.8 0 0 1 .84.369.8.8 0 0 1 .034.783L12.9 19.93l-.013.025-.015.023-.122.19a.801.801 0 0 1-.672.37.826.826 0 0 1-.634-.302.8.8 0 0 1-.16-.67l1.029-4.981-1.12.34a.81.81 0 0 1-.86-.262.802.802 0 0 1-.165-.67l.63-3.08-2.027.468a.808.808 0 0 1-.768-.233.81.81 0 0 1-.217-.6l.389-6.57-7.44-1.33a.612.612 0 0 0-.64.906L11.58 23.691a.612.612 0 0 0 1.066-.004l11.26-20.135a.612.612 0 0 0-.644-.9z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/vivaldi.svg b/assets/lib/simple-icons/icons/vivaldi.svg
index d459ce28..167e8ad6 100644
--- a/assets/lib/simple-icons/icons/vivaldi.svg
+++ b/assets/lib/simple-icons/icons/vivaldi.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Vivaldi icon</title><path d="M12 0C6.75 0 3.817 0 1.912 1.904.007 3.81 0 6.75 0 12s0 8.175 1.912 10.08C3.825 23.985 6.75 24 12 24c5.25 0 8.183 0 10.088-1.904C23.993 20.19 24 17.25 24 12s0-8.175-1.912-10.08C20.175.015 17.25 0 12 0zm-.168 3a9 9 0 016.49 2.648 9 9 0 010 12.704A9 9 0 1111.832 3zM7.568 7.496a1.433 1.433 0 00-.142.004A1.5 1.5 0 006.21 9.75l1.701 3c.93 1.582 1.839 3.202 2.791 4.822a1.417 1.417 0 001.41.75 1.5 1.5 0 001.223-.81l4.447-7.762A1.56 1.56 0 0018 8.768a1.5 1.5 0 10-2.828.914 2.513 2.513 0 01.256 1.119v.246a2.393 2.393 0 01-2.52 2.13 2.348 2.348 0 01-1.965-1.214c-.307-.51-.6-1.035-.9-1.553-.42-.72-.826-1.41-1.246-2.16a1.433 1.433 0 00-1.229-.754Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Vivaldi</title><path d="M12 0C6.75 0 3.817 0 1.912 1.904.007 3.81 0 6.75 0 12s0 8.175 1.912 10.08C3.825 23.985 6.75 24 12 24c5.25 0 8.183 0 10.088-1.904C23.993 20.19 24 17.25 24 12s0-8.175-1.912-10.08C20.175.015 17.25 0 12 0zm-.168 3a9 9 0 016.49 2.648 9 9 0 010 12.704A9 9 0 1111.832 3zM7.568 7.496a1.433 1.433 0 00-.142.004A1.5 1.5 0 006.21 9.75l1.701 3c.93 1.582 1.839 3.202 2.791 4.822a1.417 1.417 0 001.41.75 1.5 1.5 0 001.223-.81l4.447-7.762A1.56 1.56 0 0018 8.768a1.5 1.5 0 10-2.828.914 2.513 2.513 0 01.256 1.119v.246a2.393 2.393 0 01-2.52 2.13 2.348 2.348 0 01-1.965-1.214c-.307-.51-.6-1.035-.9-1.553-.42-.72-.826-1.41-1.246-2.16a1.433 1.433 0 00-1.229-.754Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/vivino.svg b/assets/lib/simple-icons/icons/vivino.svg
index 1b2eea01..99bd77fc 100644
--- a/assets/lib/simple-icons/icons/vivino.svg
+++ b/assets/lib/simple-icons/icons/vivino.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Vivino icon</title><path d="M12.476 18.034c0-1.087.889-1.989 1.988-1.989 1.1 0 1.989.902 1.989 1.989 0 1.1-.89 1.989-1.989 1.989-1.1 0-1.988-.89-1.988-1.99M12.043 24c-1.1 0-1.988-.902-1.988-1.989 0-1.099.889-1.988 1.988-1.988 1.087 0 1.989.889 1.989 1.988A2.003 2.003 0 0112.043 24M5.2 14.007c0-1.087.89-1.988 1.989-1.988 1.087 0 1.989.901 1.989 1.988 0 1.1-.902 1.989-1.99 1.989-1.098 0-1.988-.89-1.988-1.989m4.385-5.892c1.1 0 1.989.902 1.989 1.989 0 1.1-.89 1.976-1.989 1.976-1.1 0-1.988-.877-1.988-1.976 0-1.087.889-1.989 1.988-1.989m2.384-4.187c1.1 0 1.989.89 1.989 1.989 0 1.087-.89 1.988-1.989 1.988A2.003 2.003 0 019.98 5.917c0-1.1.902-1.99 1.99-1.99M14.401 0c1.1 0 1.99.89 1.99 1.989 0 1.087-.89 1.988-1.99 1.988a2.003 2.003 0 01-1.988-1.988c0-1.1.901-1.989 1.988-1.989M11.6 18.034c0 1.1-.89 1.989-1.99 1.989a1.995 1.995 0 01-1.988-1.99c0-1.086.902-1.988 1.989-1.988 1.1 0 1.989.902 1.989 1.989m-1.544-4.027c0-1.087.889-1.988 1.988-1.988 1.087 0 1.989.901 1.989 1.988 0 1.1-.902 1.989-1.989 1.989-1.1 0-1.988-.89-1.988-1.989m4.385-1.927c-1.1 0-1.99-.877-1.99-1.976 0-1.087.89-1.989 1.99-1.989 1.099 0 1.988.902 1.988 1.989 0 1.1-.89 1.976-1.988 1.976m4.36 1.927c0 1.1-.89 1.989-1.989 1.989-1.1 0-1.989-.89-1.989-1.989 0-1.087.89-1.988 1.99-1.988 1.098 0 1.988.901 1.988 1.988Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Vivino</title><path d="M12.476 18.034c0-1.087.889-1.989 1.988-1.989 1.1 0 1.989.902 1.989 1.989 0 1.1-.89 1.989-1.989 1.989-1.1 0-1.988-.89-1.988-1.99M12.043 24c-1.1 0-1.988-.902-1.988-1.989 0-1.099.889-1.988 1.988-1.988 1.087 0 1.989.889 1.989 1.988A2.003 2.003 0 0112.043 24M5.2 14.007c0-1.087.89-1.988 1.989-1.988 1.087 0 1.989.901 1.989 1.988 0 1.1-.902 1.989-1.99 1.989-1.098 0-1.988-.89-1.988-1.989m4.385-5.892c1.1 0 1.989.902 1.989 1.989 0 1.1-.89 1.976-1.989 1.976-1.1 0-1.988-.877-1.988-1.976 0-1.087.889-1.989 1.988-1.989m2.384-4.187c1.1 0 1.989.89 1.989 1.989 0 1.087-.89 1.988-1.989 1.988A2.003 2.003 0 019.98 5.917c0-1.1.902-1.99 1.99-1.99M14.401 0c1.1 0 1.99.89 1.99 1.989 0 1.087-.89 1.988-1.99 1.988a2.003 2.003 0 01-1.988-1.988c0-1.1.901-1.989 1.988-1.989M11.6 18.034c0 1.1-.89 1.989-1.99 1.989a1.995 1.995 0 01-1.988-1.99c0-1.086.902-1.988 1.989-1.988 1.1 0 1.989.902 1.989 1.989m-1.544-4.027c0-1.087.889-1.988 1.988-1.988 1.087 0 1.989.901 1.989 1.988 0 1.1-.902 1.989-1.989 1.989-1.1 0-1.988-.89-1.988-1.989m4.385-1.927c-1.1 0-1.99-.877-1.99-1.976 0-1.087.89-1.989 1.99-1.989 1.099 0 1.988.902 1.988 1.989 0 1.1-.89 1.976-1.988 1.976m4.36 1.927c0 1.1-.89 1.989-1.989 1.989-1.1 0-1.989-.89-1.989-1.989 0-1.087.89-1.988 1.99-1.988 1.098 0 1.988.901 1.988 1.988Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/vk.svg b/assets/lib/simple-icons/icons/vk.svg
index 7f0ad25d..2eed8993 100644
--- a/assets/lib/simple-icons/icons/vk.svg
+++ b/assets/lib/simple-icons/icons/vk.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>VK icon</title><path d="M15.684 0H8.316C1.592 0 0 1.592 0 8.316v7.368C0 22.408 1.592 24 8.316 24h7.368C22.408 24 24 22.408 24 15.684V8.316C24 1.592 22.391 0 15.684 0zm3.692 17.123h-1.744c-.66 0-.864-.525-2.05-1.727-1.033-1-1.49-1.135-1.744-1.135-.356 0-.458.102-.458.593v1.575c0 .424-.135.678-1.253.678-1.846 0-3.896-1.118-5.335-3.202C4.624 10.857 4.03 8.57 4.03 8.096c0-.254.102-.491.593-.491h1.744c.44 0 .61.203.78.677.863 2.49 2.303 4.675 2.896 4.675.22 0 .322-.102.322-.66V9.721c-.068-1.186-.695-1.287-.695-1.71 0-.204.17-.407.44-.407h2.744c.373 0 .508.203.508.643v3.473c0 .372.17.508.271.508.22 0 .407-.136.813-.542 1.254-1.406 2.151-3.574 2.151-3.574.119-.254.322-.491.763-.491h1.744c.525 0 .644.27.525.643-.22 1.017-2.354 4.031-2.354 4.031-.186.305-.254.44 0 .78.186.254.796.779 1.203 1.253.745.847 1.32 1.558 1.473 2.05.17.49-.085.744-.576.744z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>VK</title><path d="m9.489.004.729-.003h3.564l.73.003.914.01.433.007.418.011.403.014.388.016.374.021.36.025.345.03.333.033c1.74.196 2.933.616 3.833 1.516.9.9 1.32 2.092 1.516 3.833l.034.333.029.346.025.36.02.373.025.588.012.41.013.644.009.915.004.98-.001 3.313-.003.73-.01.914-.007.433-.011.418-.014.403-.016.388-.021.374-.025.36-.03.345-.033.333c-.196 1.74-.616 2.933-1.516 3.833-.9.9-2.092 1.32-3.833 1.516l-.333.034-.346.029-.36.025-.373.02-.588.025-.41.012-.644.013-.915.009-.98.004-3.313-.001-.73-.003-.914-.01-.433-.007-.418-.011-.403-.014-.388-.016-.374-.021-.36-.025-.345-.03-.333-.033c-1.74-.196-2.933-.616-3.833-1.516-.9-.9-1.32-2.092-1.516-3.833l-.034-.333-.029-.346-.025-.36-.02-.373-.025-.588-.012-.41-.013-.644-.009-.915-.004-.98.001-3.313.003-.73.01-.914.007-.433.011-.418.014-.403.016-.388.021-.374.025-.36.03-.345.033-.333c.196-1.74.616-2.933 1.516-3.833.9-.9 2.092-1.32 3.833-1.516l.333-.034.346-.029.36-.025.373-.02.588-.025.41-.012.644-.013.915-.009ZM6.79 7.3H4.05c.13 6.24 3.25 9.99 8.72 9.99h.31v-3.57c2.01.2 3.53 1.67 4.14 3.57h2.84c-.78-2.84-2.83-4.41-4.11-5.01 1.28-.74 3.08-2.54 3.51-4.98h-2.58c-.56 1.98-2.22 3.78-3.8 3.95V7.3H10.5v6.92c-1.6-.4-3.62-2.34-3.71-6.92Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/vlcmediaplayer.svg b/assets/lib/simple-icons/icons/vlcmediaplayer.svg
index 2d386a64..a46f9dcf 100644
--- a/assets/lib/simple-icons/icons/vlcmediaplayer.svg
+++ b/assets/lib/simple-icons/icons/vlcmediaplayer.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>VLC media player icon</title><path d="M11.891 13.463c3.757 0 4.854-1.347 5.065-1.674l-1.36-4.334c-.36.34-1.327.937-3.68.937-2.292 0-3.188-.567-3.52-.91l-1.39 4.422c.228.361 1.255 1.56 4.885 1.56zM11.917 3.807a6.143 6.143 0 0 0 2.376-.507L13.435.566a.781.781 0 0 0-.406-.437S12.914 0 12.032 0s-1.055.136-1.055.136a.733.733 0 0 0-.41.43l-.884 2.815a6.77 6.77 0 0 0 2.234.426zM22.59 23.319a.395.395 0 0 0-.016-.16l-2.334-7.632a.647.647 0 0 0-.583-.431h-1.663l.2.64c-.24.485-1.488 2.38-6.303 2.38-4.6 0-5.828-1.73-6.11-2.308l.223-.712H4.343a.647.647 0 0 0-.583.431L1.426 23.16a.398.398 0 0 0-.017.15l-.002.02a1.843 1.843 0 0 0 .024.226.528.528 0 0 0 .51.445H22.06a.528.528 0 0 0 .51-.445 1.843 1.843 0 0 0 .023-.226z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>VLC media player</title><path d="M12.0319 0c-.8823 0-1.0545.136-1.0545.136-.1738.056-.3556.255-.4105.43L9.683 3.3808c.4729.1729 1.3222.4266 2.2337.4266 1.0987 0 2.017-.3494 2.3763-.5075L13.4352.566c-.055-.1755-.237-.3707-.4067-.4374 0 0-.1142-.1286-.9966-.1286zm3.5645 7.455c-.3601.34-1.3276.9373-3.6797.9373-2.2929 0-3.189-.5678-3.5213-.9113l-1.3887 4.4227c.2272.3614 1.2539 1.5594 4.8847 1.5594 3.7569 0 4.8539-1.3467 5.0649-1.6737zm-8.5897 4.4487l-1.0025 3.1922H4.3428c-.2486 0-.5097.1932-.5826.4315l-2.334 7.6317a.3962.3962 0 0 0-.0169.1537c-.0008.0053-.002.0099-.002.016 0 .0839.0233.226.0233.226.0322.2456.2612.4452.5098.4452h20.1192c.2487 0 .4768-.1994.5098-.4453 0 0 .0234-.142.0234-.226a.0245.0245 0 0 0-.0025-.01.3201.3201 0 0 0 .0024-.0313.4096.4096 0 0 0-.019-.1282l-2.3339-7.6318c-.0729-.2383-.334-.4314-.5826-.4314h-1.6636l.2005.6391c-.2407.4854-1.4886 2.38-6.3027 2.38-4.6003 0-5.8288-1.73-6.1107-2.3072z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/vmware.svg b/assets/lib/simple-icons/icons/vmware.svg
index 07ee62b5..efc0a1a1 100644
--- a/assets/lib/simple-icons/icons/vmware.svg
+++ b/assets/lib/simple-icons/icons/vmware.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>VMware icon</title><path d="M.5 10.1a.505.505 0 00-.197.048.497.497 0 00-.25.68l1.138 2.475c.179.38.38.592.721.592.342 0 .542-.22.72-.592l1.003-2.186a.144.144 0 01.144-.092.16.16 0 01.157.16v2.118a.535.535 0 101.066 0v-1.73a.531.531 0 01.566-.552.52.52 0 01.541.551v1.73a.531.531 0 00.53.593.539.539 0 00.535-.592v-1.73a.531.531 0 01.564-.552.52.52 0 01.543.551v1.73a.531.531 0 00.528.593.535.535 0 00.535-.592v-1.969a1.234 1.234 0 00-1.283-1.23 1.647 1.647 0 00-1.14.486 1.26 1.26 0 00-1.095-.483 1.807 1.807 0 00-1.074.483 1.287 1.287 0 00-.961-.483 1.177 1.177 0 00-1.158.786l-.729 1.716-.933-2.203.011-.004A.505.505 0 00.5 10.1zm18.43.06a.27.27 0 00-.266.274h.002v3.142a.27.27 0 10.535 0v-1.222c0-1.037.571-1.56 1.27-1.643a.266.266 0 00.238-.274.258.258 0 00-.266-.269 1.465 1.465 0 00-1.242.88v-.614a.266.266 0 00-.271-.274zm-6.735.008a.273.273 0 00-.25.217l-.912 2.627-.902-2.62a.28.28 0 00-.274-.22.266.266 0 00-.27.258.493.493 0 00.034.144l1.09 3.037.02-.007a.319.319 0 00.298.242.3.3 0 00.293-.242l.903-2.583.896 2.583a.3.3 0 00.293.242h.018a.319.319 0 00.293-.242l1.097-3.038a.512.512 0 00.033-.144.258.258 0 00-.265-.25.262.262 0 00-.258.209l-.918 2.63-.904-2.626a.285.285 0 00-.278-.217h-.025a.273.273 0 00-.012 0zm10.168.008a1.75 1.75 0 00-1.691 1.851 1.765 1.765 0 001.76 1.858l-.008.013a1.784 1.784 0 001.33-.539.228.228 0 00.082-.17.228.228 0 00-.379-.168 1.435 1.435 0 01-1.018.415 1.237 1.237 0 01-1.24-1.207h2.555a.247.247 0 00.246-.247c0-.945-.593-1.806-1.637-1.806zm-5.744.002a1.571 1.571 0 00-.158.006 2.384 2.384 0 00-1.078.205.22.22 0 00-.143.222.24.24 0 00.235.229.266.266 0 00.095-.024 1.822 1.822 0 01.834-.162c.691 0 1.07.334 1.07.979v.125a3.796 3.796 0 00-1.103-.15c-.892 0-1.52.4-1.52 1.16l-.003-.004c0 .736.671 1.117 1.34 1.117a1.575 1.575 0 001.298-.62v.343a.247.247 0 00.254.25.254.254 0 00.258-.262v-1.983a1.416 1.416 0 00-.379-1.046 1.571 1.571 0 00-1-.385zm5.719.43c.714 0 1.085.565 1.139 1.214h-2.278a1.222 1.222 0 011.139-1.215zm-5.885 1.382a3.75 3.75 0 011.057.153V12.49c0 .57-.539.973-1.2.973-.485 0-.904-.261-.904-.713 0-.467.375-.76 1.047-.76Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>VMware</title><path d="M.5 10.1a.505.505 0 00-.197.048.497.497 0 00-.25.68l1.138 2.475c.179.38.38.592.721.592.342 0 .542-.22.72-.592l1.003-2.186a.144.144 0 01.144-.092.16.16 0 01.157.16v2.118a.535.535 0 101.066 0v-1.73a.531.531 0 01.566-.552.52.52 0 01.541.551v1.73a.531.531 0 00.53.593.539.539 0 00.535-.592v-1.73a.531.531 0 01.564-.552.52.52 0 01.543.551v1.73a.531.531 0 00.528.593.535.535 0 00.535-.592v-1.969a1.234 1.234 0 00-1.283-1.23 1.647 1.647 0 00-1.14.486 1.26 1.26 0 00-1.095-.483 1.807 1.807 0 00-1.074.483 1.287 1.287 0 00-.961-.483 1.177 1.177 0 00-1.158.786l-.729 1.716-.933-2.203.011-.004A.505.505 0 00.5 10.1zm18.43.06a.27.27 0 00-.266.274h.002v3.142a.27.27 0 10.535 0v-1.222c0-1.037.571-1.56 1.27-1.643a.266.266 0 00.238-.274.258.258 0 00-.266-.269 1.465 1.465 0 00-1.242.88v-.614a.266.266 0 00-.271-.274zm-6.735.008a.273.273 0 00-.25.217l-.912 2.627-.902-2.62a.28.28 0 00-.274-.22.266.266 0 00-.27.258.493.493 0 00.034.144l1.09 3.037.02-.007a.319.319 0 00.298.242.3.3 0 00.293-.242l.903-2.583.896 2.583a.3.3 0 00.293.242h.018a.319.319 0 00.293-.242l1.097-3.038a.512.512 0 00.033-.144.258.258 0 00-.265-.25.262.262 0 00-.258.209l-.918 2.63-.904-2.626a.285.285 0 00-.278-.217h-.025a.273.273 0 00-.012 0zm10.168.008a1.75 1.75 0 00-1.691 1.851 1.765 1.765 0 001.76 1.858l-.008.013a1.784 1.784 0 001.33-.539.228.228 0 00.082-.17.228.228 0 00-.379-.168 1.435 1.435 0 01-1.018.415 1.237 1.237 0 01-1.24-1.207h2.555a.247.247 0 00.246-.247c0-.945-.593-1.806-1.637-1.806zm-5.744.002a1.571 1.571 0 00-.158.006 2.384 2.384 0 00-1.078.205.22.22 0 00-.143.222.24.24 0 00.235.229.266.266 0 00.095-.024 1.822 1.822 0 01.834-.162c.691 0 1.07.334 1.07.979v.125a3.796 3.796 0 00-1.103-.15c-.892 0-1.52.4-1.52 1.16l-.003-.004c0 .736.671 1.117 1.34 1.117a1.575 1.575 0 001.298-.62v.343a.247.247 0 00.254.25.254.254 0 00.258-.262v-1.983a1.416 1.416 0 00-.379-1.046 1.571 1.571 0 00-1-.385zm5.719.43c.714 0 1.085.565 1.139 1.214h-2.278a1.222 1.222 0 011.139-1.215zm-5.885 1.382a3.75 3.75 0 011.057.153V12.49c0 .57-.539.973-1.2.973-.485 0-.904-.261-.904-.713 0-.467.375-.76 1.047-.76Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/vodafone.svg b/assets/lib/simple-icons/icons/vodafone.svg
index 693d2f1a..f882e2fe 100644
--- a/assets/lib/simple-icons/icons/vodafone.svg
+++ b/assets/lib/simple-icons/icons/vodafone.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Vodafone icon</title><path d="M12 0A12 12 0 0 0 0 12A12 12 0 0 0 12 24A12 12 0 0 0 24 12A12 12 0 0 0 12 0M16.25 1.12C16.57 1.12 16.9 1.15 17.11 1.22C14.94 1.67 13.21 3.69 13.22 6C13.22 6.05 13.22 6.11 13.23 6.17C16.87 7.06 18.5 9.25 18.5 12.28C18.54 15.31 16.14 18.64 12.09 18.65C8.82 18.66 5.41 15.86 5.39 11.37C5.38 8.4 7 5.54 9.04 3.85C11.04 2.19 13.77 1.13 16.25 1.12Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Vodafone</title><path d="M12 0A12 12 0 0 0 0 12A12 12 0 0 0 12 24A12 12 0 0 0 24 12A12 12 0 0 0 12 0M16.25 1.12C16.57 1.12 16.9 1.15 17.11 1.22C14.94 1.67 13.21 3.69 13.22 6C13.22 6.05 13.22 6.11 13.23 6.17C16.87 7.06 18.5 9.25 18.5 12.28C18.54 15.31 16.14 18.64 12.09 18.65C8.82 18.66 5.41 15.86 5.39 11.37C5.38 8.4 7 5.54 9.04 3.85C11.04 2.19 13.77 1.13 16.25 1.12Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/volkswagen.svg b/assets/lib/simple-icons/icons/volkswagen.svg
index 64006d71..0f3e6638 100644
--- a/assets/lib/simple-icons/icons/volkswagen.svg
+++ b/assets/lib/simple-icons/icons/volkswagen.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Volkswagen icon</title><path d="M12 0C5.36 0 0 5.36 0 12S5.36 24 12 24 24 18.64 24 12 18.64 0 12 0M12 1.41C13.2 1.41 14.36 1.63 15.43 2L12.13 9.13C12.09 9.17 12.09 9.26 12 9.26S11.91 9.17 11.87 9.13L8.57 2C9.64 1.63 10.8 1.42 12 1.42M6.9 2.74L10.72 10.97C10.8 11.14 10.89 11.19 11 11.19H13C13.12 11.19 13.2 11.14 13.29 10.97L17.06 2.74C18.64 3.64 20 4.93 20.96 6.47L15.6 16.84C15.56 16.93 15.5 16.97 15.47 16.97C15.39 16.97 15.39 16.89 15.34 16.84L13.29 12.3C13.2 12.13 13.12 12.09 13 12.09H11C10.89 12.09 10.8 12.13 10.71 12.3L8.66 16.84C8.61 16.89 8.62 16.97 8.53 16.97C8.44 16.97 8.44 16.89 8.4 16.84L3 6.47C3.94 4.93 5.32 3.64 6.9 2.74M2.06 8.53L8.23 20.53C8.31 20.7 8.4 20.83 8.62 20.83C8.83 20.83 8.91 20.7 9 20.53L11.87 14.14C11.91 14.06 11.96 14 12 14C12.09 14 12.09 14.1 12.13 14.14L15.04 20.53C15.13 20.7 15.21 20.83 15.43 20.83C15.64 20.83 15.73 20.7 15.81 20.53L22 8.53C22.37 9.6 22.59 10.76 22.59 12C22.54 17.79 17.79 22.59 12 22.59C6.21 22.59 1.46 17.79 1.46 12C1.46 10.8 1.67 9.65 2.06 8.53Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Volkswagen</title><path d="M12 0C5.36 0 0 5.36 0 12S5.36 24 12 24 24 18.64 24 12 18.64 0 12 0M12 1.41C13.2 1.41 14.36 1.63 15.43 2L12.13 9.13C12.09 9.17 12.09 9.26 12 9.26S11.91 9.17 11.87 9.13L8.57 2C9.64 1.63 10.8 1.42 12 1.42M6.9 2.74L10.72 10.97C10.8 11.14 10.89 11.19 11 11.19H13C13.12 11.19 13.2 11.14 13.29 10.97L17.06 2.74C18.64 3.64 20 4.93 20.96 6.47L15.6 16.84C15.56 16.93 15.5 16.97 15.47 16.97C15.39 16.97 15.39 16.89 15.34 16.84L13.29 12.3C13.2 12.13 13.12 12.09 13 12.09H11C10.89 12.09 10.8 12.13 10.71 12.3L8.66 16.84C8.61 16.89 8.62 16.97 8.53 16.97C8.44 16.97 8.44 16.89 8.4 16.84L3 6.47C3.94 4.93 5.32 3.64 6.9 2.74M2.06 8.53L8.23 20.53C8.31 20.7 8.4 20.83 8.62 20.83C8.83 20.83 8.91 20.7 9 20.53L11.87 14.14C11.91 14.06 11.96 14 12 14C12.09 14 12.09 14.1 12.13 14.14L15.04 20.53C15.13 20.7 15.21 20.83 15.43 20.83C15.64 20.83 15.73 20.7 15.81 20.53L22 8.53C22.37 9.6 22.59 10.76 22.59 12C22.54 17.79 17.79 22.59 12 22.59C6.21 22.59 1.46 17.79 1.46 12C1.46 10.8 1.67 9.65 2.06 8.53Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/volvo.svg b/assets/lib/simple-icons/icons/volvo.svg
index 10f06446..65d08206 100644
--- a/assets/lib/simple-icons/icons/volvo.svg
+++ b/assets/lib/simple-icons/icons/volvo.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Volvo icon</title><path d="M11.269 11.225h-.522v-.343h2.072v.343h-.516v1.55h.479c.443 0 .734-.292.734-.69h.342v1.038h-3.11v-.347h.522zm2.533.001h-.515v-.344h2.248v.344h-.544l.758 1.383.749-1.383h-.448v-.344h1.55v.344h-.516l-1.027 1.9-1.21-.001zm5.181-.392c1.041 0 1.6.52 1.6 1.171 0 .66-.527 1.187-1.594 1.187-1.067 0-1.599-.526-1.599-1.187 0-.651.553-1.17 1.593-1.17zM5.781 12.61l.748-1.383h-.447v-.344H7.63v.344h-.515l-1.028 1.9-1.21-.001-1.045-1.899h-.514v-.344h2.247v.344h-.543zm3.237-1.775c1.041 0 1.6.52 1.6 1.171 0 .66-.527 1.187-1.594 1.187-1.067 0-1.599-.526-1.599-1.187 0-.651.552-1.17 1.593-1.17zm-.551 1.157c.007-.432.214-.809.57-.803.356.007.544.39.537.823-.008.407-.176.831-.567.824-.38-.007-.547-.427-.54-.844zm9.965 0c.007-.432.214-.809.57-.803.356.007.544.39.537.823-.008.407-.176.831-.567.824-.38-.007-.547-.427-.54-.844zM3.226 9.83C4.198 5.887 7.757 2.963 12 2.963c4.243 0 7.802 2.924 8.774 6.866zm17.548 4.342c-.972 3.942-4.531 6.866-8.774 6.866-4.243 0-7.802-2.924-8.774-6.866zm.849-9.341l.568-.569c.404.532.769 1.096 1.087 1.688h.449V.283H18.06v.444c.589.317 1.15.68 1.678 1.082l-.569.568A11.947 11.947 0 0 0 12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12c0-2.688-.884-5.17-2.377-7.17Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Volvo</title><path d="M11.269 11.225h-.522v-.343h2.072v.343h-.516v1.55h.479c.443 0 .734-.292.734-.69h.342v1.038h-3.11v-.347h.522zm2.533.001h-.515v-.344h2.248v.344h-.544l.758 1.383.749-1.383h-.448v-.344h1.55v.344h-.516l-1.027 1.9-1.21-.001zm5.181-.392c1.041 0 1.6.52 1.6 1.171 0 .66-.527 1.187-1.594 1.187-1.067 0-1.599-.526-1.599-1.187 0-.651.553-1.17 1.593-1.17zM5.781 12.61l.748-1.383h-.447v-.344H7.63v.344h-.515l-1.028 1.9-1.21-.001-1.045-1.899h-.514v-.344h2.247v.344h-.543zm3.237-1.775c1.041 0 1.6.52 1.6 1.171 0 .66-.527 1.187-1.594 1.187-1.067 0-1.599-.526-1.599-1.187 0-.651.552-1.17 1.593-1.17zm-.551 1.157c.007-.432.214-.809.57-.803.356.007.544.39.537.823-.008.407-.176.831-.567.824-.38-.007-.547-.427-.54-.844zm9.965 0c.007-.432.214-.809.57-.803.356.007.544.39.537.823-.008.407-.176.831-.567.824-.38-.007-.547-.427-.54-.844zM3.226 9.83C4.198 5.887 7.757 2.963 12 2.963c4.243 0 7.802 2.924 8.774 6.866zm17.548 4.342c-.972 3.942-4.531 6.866-8.774 6.866-4.243 0-7.802-2.924-8.774-6.866zm.849-9.341l.568-.569c.404.532.769 1.096 1.087 1.688h.449V.283H18.06v.444c.589.317 1.15.68 1.678 1.082l-.569.568A11.947 11.947 0 0 0 12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12c0-2.688-.884-5.17-2.377-7.17Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/vonage.svg b/assets/lib/simple-icons/icons/vonage.svg
new file mode 100644
index 00000000..22ac95f2
--- /dev/null
+++ b/assets/lib/simple-icons/icons/vonage.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Vonage</title><path d="M9.279 11.617l-4.54-10.07H0l6.797 15.296a.084.084 0 0 0 .153 0zm9.898-10.07s-6.148 13.868-6.917 15.565c-1.838 4.056-3.2 5.07-4.588 5.289a.026.026 0 0 0 .004.052h4.34c1.911 0 3.219-1.285 5.06-5.341C17.72 15.694 24 1.547 24 1.547z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/vowpalwabbit.svg b/assets/lib/simple-icons/icons/vowpalwabbit.svg
new file mode 100644
index 00000000..eb2f9792
--- /dev/null
+++ b/assets/lib/simple-icons/icons/vowpalwabbit.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Vowpal Wabbit</title><path d="M14.872 21.356c.077.195.682 1.646 1.685 2.156 1.075.547 1.613.406 1.613.406s-.914-3.384-.108-6.076c.807-2.691 1.479-2.933 1.479-2.933s1.478.591 2.446 0c.968-.591 1.264-1.747 1.264-1.747s-.672-2.474-1.264-3.442c-.591-.967-1.227-1.48-2.016-1.828a235.34 235.34 0 0 0-1.508-.655 11.275 11.275 0 0 0-1.003-3.198C16.237 1.531 14.678 0 14.678 0s-.815.7-1.025 2.032c.56.497 1.462 1.45 2.258 2.42.4.485.906 1.227 1.31 1.846a26.053 26.053 0 0 0-2.6-2.626c-1.828-1.586-3.63-2.823-3.63-2.823s-1.29 2.016.243 4.785c1.048 1.778 3.704 3.31 3.704 3.31s-2.736.134-3.704.346c-.968.213-2.043.592-3.253 1.398-1.21.807-2.01 1.647-3.011 3.011-1 1.365-1.962 3.71-1.962 3.71s-.135-.188-1.049-.188c-.914 0-1.21.188-1.21.188s.027 2.312.592 3.441c.564 1.13 1.37 1.562 2.392 1.562.27-.002.834 0 .834 0s.699 1.1 1.129 1.369c.43.268 1.183.215 1.183.215h8.253s-.048-.619-.51-1.103c-.448-.466-.983-.608-1.117-.666a3.776 3.776 0 0 0-1.008-.167h-2.123s2.689-.095 4.274-1.936c.833-.967.914-2.15.833-2.742-.04-.292-.295-1.29-.752-1.882a5.905 5.905 0 0 0-1.183-1.129c-.516-.36-1.17-.642-1.909-.94 1.075.268 1.586.376 2.635 1.129 1.048.752 1.505 1.908 1.586 2.177.08.269.269.672.215 1.828-.108.968-.218 1.208-.484 1.72-.217.456-.427.742-.717 1.07Z"/></svg>
diff --git a/assets/lib/simple-icons/icons/vox.svg b/assets/lib/simple-icons/icons/vox.svg
new file mode 100644
index 00000000..88654541
--- /dev/null
+++ b/assets/lib/simple-icons/icons/vox.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>VOX</title><path d="M0 8.198l4.182 7.604h2.442L8.15 13.07a4.276 4.276 0 0 1 2.054-4.872H7.112l-1.677 3.216-1.706-3.216zm14.342 0a4.24 4.24 0 0 1 1.923 2.206c.784 2.081-.098 4.415-2.145 5.398h2.767l1.564-1.754 1.42 1.754H24l-3.505-4.032 3.088-3.572H19.41l-.952 1.249-.931-1.249zm-2.09 1.596c-.949 0-1.913.69-2.074 1.775a2.132 2.132 0 0 0 2.064 2.483c1.268.01 2.192-1.126 2.156-2.18-.013-1.015-.877-2.08-2.146-2.078z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/vsco.svg b/assets/lib/simple-icons/icons/vsco.svg
index 3107cf7a..49fdcfae 100644
--- a/assets/lib/simple-icons/icons/vsco.svg
+++ b/assets/lib/simple-icons/icons/vsco.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>VSCO icon</title><path d="M12 0C5.376 0 0 5.376 0 12s5.376 12 12 12 12-5.376 12-12S18.624 0 12 0zm11.52 12c0 .408-.023.792-.072 1.176l-2.04-.24c.024-.312.05-.624.05-.936 0-.288-.025-.6-.05-.888l2.04-.24c.072.384.072.744.072 1.128zM.479 12c0-.384.024-.769.049-1.152l2.04.24c-.024.312-.047.6-.047.912s.023.6.047.912l-2.04.24C.479 12.769.479 12.384.479 12zm20.472-3.096l1.921-.72c.264.72.433 1.464.552 2.232l-2.04.24c-.097-.6-.24-1.2-.433-1.752zM21 12c0 .6-.072 1.176-.167 1.752l-2.017-.455c.071-.409.119-.841.119-1.297s-.048-.912-.119-1.344l2.017-.457c.118.577.167 1.177.167 1.801zm-9 6.456C8.435 18.455 5.545 15.565 5.544 12 5.545 8.435 8.435 5.545 12 5.544c3.565.001 6.455 2.891 6.456 6.456.008 3.559-2.871 6.448-6.429 6.456H12zM12.216 21v-2.064c.885-.029 1.756-.224 2.568-.575l.888 1.872c-1.09.482-2.264.742-3.456.767zm-3.936-.791l.912-1.873c.792.359 1.656.575 2.568.6V21c-1.202-.023-2.386-.293-3.48-.791zM3 12c0-.624.072-1.224.192-1.824l2.016.456c-.098.45-.146.908-.144 1.368 0 .432.048.864.12 1.272l-2.016.455C3.051 13.159 2.994 12.58 3 12zm8.76-9v2.064c-.877.029-1.74.224-2.544.576l-.888-1.871C9.411 3.291 10.577 3.03 11.76 3zm3.935.792l-.911 1.872c-.809-.363-1.682-.559-2.568-.576V3.024c1.248 0 2.424.288 3.479.768zm5.088 4.656c-.231-.56-.513-1.098-.84-1.608l1.681-1.152c.407.648.768 1.32 1.056 2.04l-1.897.72zm-.07 1.296l-2.018.456c-.23-.85-.621-1.648-1.151-2.352l1.632-1.295c.72.959 1.248 2.015 1.537 3.191zm-3.457-2.256c-.572-.667-1.264-1.22-2.04-1.633l.912-1.871c1.056.549 1.993 1.299 2.76 2.208l-1.632 1.296zm-.6-3.744l.96-1.824c.672.384 1.295.816 1.896 1.32L18.145 4.8c-.461-.401-.959-.754-1.489-1.056zm-.408-.216c-.54-.266-1.102-.483-1.68-.648l.504-1.992c.744.216 1.464.48 2.159.84l-.983 1.8zm-2.16-.768c-.6-.144-1.2-.216-1.824-.239V.479c.793.024 1.584.12 2.328.289l-.504 1.992zm-2.28-.239c-.605.021-1.207.094-1.8.216L9.528.744c.72-.168 1.487-.265 2.28-.265v2.042zm-2.28.334c-.586.167-1.156.384-1.704.649l-.96-1.824c.691-.343 1.415-.616 2.16-.816l.504 1.991zm-2.112.865c-.529.294-1.027.64-1.488 1.032L4.56 3.216c.6-.504 1.224-.936 1.896-1.319l.96 1.823zm.48.264l.888 1.871c-.792.408-1.464.96-2.04 1.608L5.136 6.168c.775-.895 1.711-1.636 2.76-2.184zM4.848 6.552l1.608 1.295c-.53.705-.921 1.503-1.152 2.353l-2.016-.456c.312-1.2.84-2.28 1.56-3.192zM3.24 8.4l-1.92-.72c.287-.72.648-1.416 1.08-2.04l1.68 1.176c-.341.494-.623 1.025-.84 1.584zm-.168.455c-.192.577-.36 1.152-.432 1.776L.6 10.393c.12-.769.288-1.537.553-2.257l1.919.719zm-.456 4.513c.096.6.239 1.2.432 1.776l-1.92.72c-.271-.728-.456-1.485-.552-2.257l2.04-.239zm.624 2.208c.239.576.528 1.104.84 1.607L2.4 18.336c-.435-.629-.797-1.306-1.08-2.016l1.92-.744zm.024-1.392l2.017-.456c.216.864.624 1.681 1.128 2.376L4.8 17.4c-.725-.957-1.247-2.051-1.536-3.216zm3.432 2.28c.577.672 1.272 1.248 2.064 1.656l-.912 1.872c-1.063-.557-2.009-1.315-2.784-2.232l1.632-1.296zm.72 3.815l-.96 1.825c-.674-.376-1.31-.819-1.896-1.321l1.368-1.535c.456.407.936.744 1.488 1.031zm.408.217c.528.264 1.104.48 1.705.647l-.504 1.992c-.747-.196-1.471-.469-2.16-.815l.959-1.824zm2.16.768c.576.12 1.176.193 1.8.217v2.039c-.774-.026-1.544-.114-2.305-.264l.505-1.992zm2.28.216c.605-.021 1.207-.094 1.801-.217l.479 1.992c-.749.168-1.513.264-2.28.287V21.48zm2.257-.336c.586-.165 1.155-.382 1.703-.647l.96 1.824c-.688.35-1.412.623-2.159.815l-.504-1.992zm2.086-.865c.528-.287 1.032-.647 1.488-1.031l1.369 1.535c-.588.502-1.223.945-1.896 1.321l-.961-1.825zm-.479-.263l-.888-1.871c.788-.414 1.489-.977 2.064-1.656l1.606 1.296c-.778.91-1.722 1.668-2.782 2.231zm3.071-2.592l-1.607-1.296c.532-.708.916-1.517 1.128-2.376l2.017.456c-.311 1.157-.831 2.248-1.538 3.216zM20.76 15.6l1.92.721c-.288.72-.648 1.392-1.079 2.04l-1.682-1.177c.337-.504.624-1.032.841-1.584zm.168-.455c.192-.553.336-1.152.433-1.752l2.039.239c-.11.761-.294 1.508-.551 2.232l-1.921-.719zm.456-9.841l-1.681 1.152c-.358-.49-.76-.947-1.199-1.368l1.368-1.536c.552.552 1.056 1.128 1.512 1.752zM4.2 3.528l1.368 1.536c-.456.408-.84.864-1.2 1.368l-1.68-1.176c.431-.636.94-1.216 1.512-1.728zM2.664 18.744l1.68-1.152c.36.48.769.937 1.2 1.369l-1.368 1.535c-.548-.545-1.054-1.131-1.512-1.752zm17.16 1.729l-1.368-1.537c.432-.407.841-.863 1.199-1.344l1.682 1.176c-.457.6-.961 1.175-1.513 1.705z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>VSCO</title><path d="M12 0C5.376 0 0 5.376 0 12s5.376 12 12 12 12-5.376 12-12S18.624 0 12 0zm11.52 12c0 .408-.023.792-.072 1.176l-2.04-.24c.024-.312.05-.624.05-.936 0-.288-.025-.6-.05-.888l2.04-.24c.072.384.072.744.072 1.128zM.479 12c0-.384.024-.769.049-1.152l2.04.24c-.024.312-.047.6-.047.912s.023.6.047.912l-2.04.24C.479 12.769.479 12.384.479 12zm20.472-3.096l1.921-.72c.264.72.433 1.464.552 2.232l-2.04.24c-.097-.6-.24-1.2-.433-1.752zM21 12c0 .6-.072 1.176-.167 1.752l-2.017-.455c.071-.409.119-.841.119-1.297s-.048-.912-.119-1.344l2.017-.457c.118.577.167 1.177.167 1.801zm-9 6.456C8.435 18.455 5.545 15.565 5.544 12 5.545 8.435 8.435 5.545 12 5.544c3.565.001 6.455 2.891 6.456 6.456.008 3.559-2.871 6.448-6.429 6.456H12zM12.216 21v-2.064c.885-.029 1.756-.224 2.568-.575l.888 1.872c-1.09.482-2.264.742-3.456.767zm-3.936-.791l.912-1.873c.792.359 1.656.575 2.568.6V21c-1.202-.023-2.386-.293-3.48-.791zM3 12c0-.624.072-1.224.192-1.824l2.016.456c-.098.45-.146.908-.144 1.368 0 .432.048.864.12 1.272l-2.016.455C3.051 13.159 2.994 12.58 3 12zm8.76-9v2.064c-.877.029-1.74.224-2.544.576l-.888-1.871C9.411 3.291 10.577 3.03 11.76 3zm3.935.792l-.911 1.872c-.809-.363-1.682-.559-2.568-.576V3.024c1.248 0 2.424.288 3.479.768zm5.088 4.656c-.231-.56-.513-1.098-.84-1.608l1.681-1.152c.407.648.768 1.32 1.056 2.04l-1.897.72zm-.07 1.296l-2.018.456c-.23-.85-.621-1.648-1.151-2.352l1.632-1.295c.72.959 1.248 2.015 1.537 3.191zm-3.457-2.256c-.572-.667-1.264-1.22-2.04-1.633l.912-1.871c1.056.549 1.993 1.299 2.76 2.208l-1.632 1.296zm-.6-3.744l.96-1.824c.672.384 1.295.816 1.896 1.32L18.145 4.8c-.461-.401-.959-.754-1.489-1.056zm-.408-.216c-.54-.266-1.102-.483-1.68-.648l.504-1.992c.744.216 1.464.48 2.159.84l-.983 1.8zm-2.16-.768c-.6-.144-1.2-.216-1.824-.239V.479c.793.024 1.584.12 2.328.289l-.504 1.992zm-2.28-.239c-.605.021-1.207.094-1.8.216L9.528.744c.72-.168 1.487-.265 2.28-.265v2.042zm-2.28.334c-.586.167-1.156.384-1.704.649l-.96-1.824c.691-.343 1.415-.616 2.16-.816l.504 1.991zm-2.112.865c-.529.294-1.027.64-1.488 1.032L4.56 3.216c.6-.504 1.224-.936 1.896-1.319l.96 1.823zm.48.264l.888 1.871c-.792.408-1.464.96-2.04 1.608L5.136 6.168c.775-.895 1.711-1.636 2.76-2.184zM4.848 6.552l1.608 1.295c-.53.705-.921 1.503-1.152 2.353l-2.016-.456c.312-1.2.84-2.28 1.56-3.192zM3.24 8.4l-1.92-.72c.287-.72.648-1.416 1.08-2.04l1.68 1.176c-.341.494-.623 1.025-.84 1.584zm-.168.455c-.192.577-.36 1.152-.432 1.776L.6 10.393c.12-.769.288-1.537.553-2.257l1.919.719zm-.456 4.513c.096.6.239 1.2.432 1.776l-1.92.72c-.271-.728-.456-1.485-.552-2.257l2.04-.239zm.624 2.208c.239.576.528 1.104.84 1.607L2.4 18.336c-.435-.629-.797-1.306-1.08-2.016l1.92-.744zm.024-1.392l2.017-.456c.216.864.624 1.681 1.128 2.376L4.8 17.4c-.725-.957-1.247-2.051-1.536-3.216zm3.432 2.28c.577.672 1.272 1.248 2.064 1.656l-.912 1.872c-1.063-.557-2.009-1.315-2.784-2.232l1.632-1.296zm.72 3.815l-.96 1.825c-.674-.376-1.31-.819-1.896-1.321l1.368-1.535c.456.407.936.744 1.488 1.031zm.408.217c.528.264 1.104.48 1.705.647l-.504 1.992c-.747-.196-1.471-.469-2.16-.815l.959-1.824zm2.16.768c.576.12 1.176.193 1.8.217v2.039c-.774-.026-1.544-.114-2.305-.264l.505-1.992zm2.28.216c.605-.021 1.207-.094 1.801-.217l.479 1.992c-.749.168-1.513.264-2.28.287V21.48zm2.257-.336c.586-.165 1.155-.382 1.703-.647l.96 1.824c-.688.35-1.412.623-2.159.815l-.504-1.992zm2.086-.865c.528-.287 1.032-.647 1.488-1.031l1.369 1.535c-.588.502-1.223.945-1.896 1.321l-.961-1.825zm-.479-.263l-.888-1.871c.788-.414 1.489-.977 2.064-1.656l1.606 1.296c-.778.91-1.722 1.668-2.782 2.231zm3.071-2.592l-1.607-1.296c.532-.708.916-1.517 1.128-2.376l2.017.456c-.311 1.157-.831 2.248-1.538 3.216zM20.76 15.6l1.92.721c-.288.72-.648 1.392-1.079 2.04l-1.682-1.177c.337-.504.624-1.032.841-1.584zm.168-.455c.192-.553.336-1.152.433-1.752l2.039.239c-.11.761-.294 1.508-.551 2.232l-1.921-.719zm.456-9.841l-1.681 1.152c-.358-.49-.76-.947-1.199-1.368l1.368-1.536c.552.552 1.056 1.128 1.512 1.752zM4.2 3.528l1.368 1.536c-.456.408-.84.864-1.2 1.368l-1.68-1.176c.431-.636.94-1.216 1.512-1.728zM2.664 18.744l1.68-1.152c.36.48.769.937 1.2 1.369l-1.368 1.535c-.548-.545-1.054-1.131-1.512-1.752zm17.16 1.729l-1.368-1.537c.432-.407.841-.863 1.199-1.344l1.682 1.176c-.457.6-.961 1.175-1.513 1.705z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/vtex.svg b/assets/lib/simple-icons/icons/vtex.svg
new file mode 100644
index 00000000..94f1e51d
--- /dev/null
+++ b/assets/lib/simple-icons/icons/vtex.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>VTEX</title><path d="M22.2027 1.7925H4.2812c-1.3897 0-2.2795 1.4698-1.6293 2.6917l1.7927 3.3773H1.1947a1.2 1.2 0 0 0-.5873.1537 1.1924 1.1924 0 0 0-.4356.421 1.1847 1.1847 0 0 0-.0342 1.1683l5.766 10.858c.1017.191.2537.3507.4399.4622a1.1996 1.1996 0 0 0 1.2326 0 1.1913 1.1913 0 0 0 .4398-.4623l1.566-2.933 1.9647 3.7006c.6914 1.3016 2.5645 1.304 3.2584.0038L23.7878 4.416c.635-1.1895-.2314-2.6235-1.5851-2.6235ZM14.1524 8.978l-3.8733 7.2533a.7932.7932 0 0 1-.2927.3074.7986.7986 0 0 1-.82 0 .7933.7933 0 0 1-.2927-.3074L5.0378 9.0086a.7883.7883 0 0 1 .0208-.7776.7933.7933 0 0 1 .2891-.281.7985.7985 0 0 1 .3906-.1033h7.7307a.7769.7769 0 0 1 .381.0998.7717.7717 0 0 1 .2823.2736.7672.7672 0 0 1 .02.758z"/></svg>
diff --git a/assets/lib/simple-icons/icons/vue-dot-js.svg b/assets/lib/simple-icons/icons/vue-dot-js.svg
deleted file mode 100644
index 6604fd28..00000000
--- a/assets/lib/simple-icons/icons/vue-dot-js.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Vue.js icon</title><path d="M24,1.61H14.06L12,5.16,9.94,1.61H0L12,22.39ZM12,14.08,5.16,2.23H9.59L12,6.41l2.41-4.18h4.43Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/vuedotjs.svg b/assets/lib/simple-icons/icons/vuedotjs.svg
new file mode 100644
index 00000000..46110dc0
--- /dev/null
+++ b/assets/lib/simple-icons/icons/vuedotjs.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Vue.js</title><path d="M24,1.61H14.06L12,5.16,9.94,1.61H0L12,22.39ZM12,14.08,5.16,2.23H9.59L12,6.41l2.41-4.18h4.43Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/vuetify.svg b/assets/lib/simple-icons/icons/vuetify.svg
index a146dd5b..171e4c13 100644
--- a/assets/lib/simple-icons/icons/vuetify.svg
+++ b/assets/lib/simple-icons/icons/vuetify.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Vuetify icon</title><path d="M7.094 0L12 11.596 16.906 0H7.094zM1.5 3.5L12 24 22.5 3.5H17L12 15 7 3.5z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Vuetify</title><path d="M7.094 0L12 11.596 16.906 0H7.094zM1.5 3.5L12 24 22.5 3.5H17L12 15 7 3.5z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/vulkan.svg b/assets/lib/simple-icons/icons/vulkan.svg
index 99c14183..007b012e 100644
--- a/assets/lib/simple-icons/icons/vulkan.svg
+++ b/assets/lib/simple-icons/icons/vulkan.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Vulkan icon</title><path d="M14.342 15.337h-.936v-2.991c.299.167.694.474.936.769v2.222zm-7.897 0H5.278l-1.523-4.706h1.061l1.048 3.309h.013l1.061-3.309h1.068l-1.561 4.706zm4.7 0h-.89v-.474h-.02a1.051 1.051 0 0 1-.462.429 1.36 1.36 0 0 1-.58.132 1.63 1.63 0 0 1-.616-.099.89.89 0 0 1-.379-.28 1.11 1.11 0 0 1-.195-.442 2.768 2.768 0 0 1-.056-.577V11.93h.936v1.925c0 .281.044.491.132.629.088.139.244.208.468.208.255 0 .439-.076.554-.227.114-.152.171-.401.171-.748v-1.786h.936l.001 3.406zm3.352-2.05l-.002-.132 1.18-1.226h1.108l-1.285 1.252 1.43 2.155h-1.134l-1.297-2.049zm2.602-.31c.013-.22.068-.402.165-.547a1.13 1.13 0 0 1 .369-.349 1.6 1.6 0 0 1 .504-.188 2.9 2.9 0 0 1 .564-.056c.171 0 .345.012.521.036.176.024.336.072.481.142.145.07.264.168.356.293.092.125.138.291.138.498v1.773c0 .154.009.301.026.442a.799.799 0 0 0 .092.316h-.949a1.32 1.32 0 0 1-.066-.329 1.208 1.208 0 0 1-.528.323 2.135 2.135 0 0 1-.62.092c-.163 0-.314-.02-.455-.059a1.018 1.018 0 0 1-.369-.185.856.856 0 0 1-.247-.316 1.073 1.073 0 0 1-.089-.455c0-.193.034-.353.102-.478a.856.856 0 0 1 .264-.3c.108-.075.231-.131.369-.168.138-.037.278-.067.418-.089a7.99 7.99 0 0 1 .415-.053c.136-.013.257-.033.362-.059a.637.637 0 0 0 .251-.116c.062-.051.09-.124.086-.221a.5.5 0 0 0-.05-.241.365.365 0 0 0-.132-.138.521.521 0 0 0-.191-.066 1.56 1.56 0 0 0-.234-.017c-.185 0-.33.039-.435.119-.105.079-.167.211-.185.396h-.933zm2.162.693a.415.415 0 0 1-.148.082c-.059.02-.123.036-.191.05a3.21 3.21 0 0 1-.214.033c-.075.009-.149.02-.224.033-.07.013-.14.031-.208.053a.618.618 0 0 0-.178.089.42.42 0 0 0-.122.142.455.455 0 0 0-.046.218c0 .084.015.154.046.211a.362.362 0 0 0 .125.135.523.523 0 0 0 .185.069c.07.013.143.02.218.02.185 0 .328-.031.429-.092a.616.616 0 0 0 .224-.221.712.712 0 0 0 .089-.26c.011-.088.016-.158.017-.211l-.002-.351zm1.542-1.741h.89v.474h.02c.119-.198.272-.342.461-.432.189-.09.382-.135.58-.135.251 0 .456.034.617.102.16.068.286.163.379.283.092.121.157.268.194.441.037.176.056.368.056.579v2.096h-.936v-1.925c0-.281-.044-.491-.132-.629-.088-.138-.244-.208-.468-.208-.255 0-.439.076-.554.227-.114.151-.171.401-.171.748v1.786h-.936v-3.407zm-9.038-.587v3.996h.936v-3.48a11.577 11.577 0 0 0-.936-.516zm-9.548.17c.542-1.59 3.786-2.172 7.246-1.302 2.075.522 3.771 1.534 4.879 2.535-.503-1.327-2.94-3.22-6.295-3.868C4.253 8.143.511 8.788.048 10.472c-.334 1.216 1.134 2.641 3.406 3.615-1.021-.827-1.518-1.755-1.237-2.575zm12.126.655v-1.536h-.936v.466c.399.357.716.72.936 1.07z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Vulkan</title><path d="M14.3417 15.336h-.936v-2.991c.299.167.694.474.936.769zm-7.8972 0h-1.167L3.7543 10.63h1.061l1.048 3.309h.013l1.061-3.309h1.0681zm4.7001 0h-.89v-.474h-.02a1.051 1.051 0 01-.462.429 1.36 1.36 0 01-.58.132 1.63 1.63 0 01-.616-.099.89.89 0 01-.379-.28 1.11 1.11 0 01-.195-.442 2.768 2.768 0 01-.0561-.577v-2.096h.936v1.925c0 .281.044.491.132.629.088.139.244.208.468.208.255 0 .439-.076.554-.227.114-.152.171-.401.171-.748V11.93h.9361zm3.3521-2.05l-.002-.132 1.18-1.226h1.108l-1.285 1.252 1.43 2.155h-1.134zm2.602-.31c.013-.22.068-.402.165-.547a1.13 1.13 0 01.3691-.349 1.6 1.6 0 01.504-.188 2.9 2.9 0 01.564-.056c.171 0 .345.012.521.036.176.024.336.072.481.142.145.07.264.168.356.293.092.125.138.291.138.498v1.773c0 .154.009.301.026.442a.799.799 0 00.092.316h-.949a1.32 1.32 0 01-.066-.329 1.208 1.208 0 01-.528.323 2.135 2.135 0 01-.62.092c-.163 0-.314-.02-.455-.059a1.018 1.018 0 01-.369-.185.856.856 0 01-.247-.316 1.073 1.073 0 01-.089-.455c0-.193.034-.353.102-.478a.856.856 0 01.264-.3c.108-.075.231-.131.369-.168.138-.037.278-.067.418-.089a7.9902 7.9902 0 01.415-.053c.136-.013.257-.033.362-.059a.637.637 0 00.251-.116c.062-.051.09-.124.086-.221a.5.5 0 00-.05-.241.365.365 0 00-.132-.138.521.521 0 00-.191-.066 1.56 1.56 0 00-.234-.017c-.185 0-.33.039-.435.119-.105.079-.167.211-.185.396zm2.1622.693a.415.415 0 01-.148.082c-.059.02-.123.036-.191.05a3.2101 3.2101 0 01-.214.033c-.075.009-.149.02-.224.033-.07.013-.14.031-.208.053a.618.618 0 00-.178.089.42.42 0 00-.122.142.455.455 0 00-.046.218c0 .084.015.154.046.211a.362.362 0 00.125.135.523.523 0 00.185.069c.07.013.143.02.218.02.185 0 .328-.031.429-.092a.616.616 0 00.224-.221.712.712 0 00.089-.26c.011-.088.016-.158.017-.211zm1.542-1.741h.89v.474h.02c.119-.198.272-.342.461-.432.189-.09.382-.135.58-.135.251 0 .456.034.617.102.16.068.286.163.379.283.092.121.1571.268.1941.441.037.176.056.368.056.579v2.096h-.936v-1.925c0-.281-.044-.491-.132-.629-.088-.138-.244-.208-.468-.208-.255 0-.439.076-.554.227-.114.151-.171.401-.171.748v1.786h-.9361zm-9.0383-.587v3.996h.936v-3.48a11.5774 11.5774 0 00-.936-.516zm-9.5483.17c.542-1.5901 3.7861-2.1722 7.2463-1.3021 2.075.522 3.771 1.534 4.8791 2.535-.503-1.327-2.94-3.22-6.2952-3.868-3.7941-.734-7.5362-.089-7.9992 1.595-.334 1.216 1.134 2.641 3.406 3.6151-1.021-.827-1.518-1.755-1.237-2.575zm12.1264.655v-1.5361h-.936v.466c.399.357.716.72.936 1.07z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/vultr.svg b/assets/lib/simple-icons/icons/vultr.svg
index 1a9b8d5a..3748088d 100644
--- a/assets/lib/simple-icons/icons/vultr.svg
+++ b/assets/lib/simple-icons/icons/vultr.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Vultr icon</title><path d="M8.36 2.17a1.194 1.194 0 00-1.012-.571H1.2a1.2 1.2 0 00-1.2 1.2 1.211 1.211 0 00.182.64l11.6 18.4a1.206 1.206 0 002.035 0l3.075-4.874a1.229 1.229 0 00.182-.64 1.211 1.211 0 00-.182-.642zm10.349 8.68a1.206 1.206 0 002.035 0L21.8 9.176l2.017-3.2a1.211 1.211 0 00.183-.64 1.229 1.229 0 00-.183-.64l-1.6-2.526a1.206 1.206 0 00-1.016-.571h-6.148a1.2 1.2 0 00-1.201 1.2 1.143 1.143 0 00.188.64z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Vultr</title><path d="M8.36 2.172A1.194 1.194 0 007.348 1.6H1.2A1.2 1.2 0 000 2.8a1.211 1.211 0 00.182.64l11.6 18.4a1.206 1.206 0 002.035 0l3.075-4.874a1.229 1.229 0 00.182-.64 1.211 1.211 0 00-.182-.642zm10.349 8.68a1.206 1.206 0 002.035 0L21.8 9.178l2.017-3.2a1.211 1.211 0 00.183-.64 1.229 1.229 0 00-.183-.64l-1.6-2.526a1.206 1.206 0 00-1.016-.571h-6.148a1.2 1.2 0 00-1.201 1.2 1.143 1.143 0 00.188.64z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/w3c.svg b/assets/lib/simple-icons/icons/w3c.svg
index 8fb231aa..66fe8a37 100644
--- a/assets/lib/simple-icons/icons/w3c.svg
+++ b/assets/lib/simple-icons/icons/w3c.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>W3C icon</title><path d="M23.642 5.602l-.931 1.858s-.4-.738-.795-1.076c-.377-.322-.864-.62-1.48-.556-.597.062-1.27.587-1.722 1.46-.513.994-.688 2.001-.692 3.112-.005 1.556.57 2.618.57 2.618s-.132-.494-.11-1.33c.014-.52.017-1.089.41-2.261.33-.98 1.084-1.775 1.75-1.912.517-.107.847-.03 1.356.329.603.425.966 1.193.966 1.193l.946-1.81zM0 5.674l3.77 12.723h.156l2.356-7.886 2.357 7.886h.157l3.228-10.895.152-.258h2.655l-2.2 3.802v.754h.629c.806 0 1.398.246 1.775.738.324.42.487 1.011.487 1.776 0 .691-.152 1.283-.455 1.775-.304.492-.676.738-1.116.738-.419 0-.783-.138-1.092-.416-.308-.277-.557-.657-.746-1.139l-1.288.534c.261.796.665 1.427 1.21 1.893.544.466 1.183.699 1.916.699.974 0 1.767-.393 2.38-1.178.613-.785.919-1.754.919-2.906 0-.932-.21-1.743-.628-2.435-.42-.69-1.037-1.167-1.854-1.43l2.326-4.006v-.77h-6.177L8.64 13.419 6.362 5.674h-1.65l.754 2.529-1.54 5.215L1.65 5.674zm17.44 8.88s.233.755.379 1.076c.084.185.342.75.708 1.24.341.46 1.004 1.248 2.011 1.426 1.008.178 1.7-.274 1.871-.384.172-.11.533-.412.761-.657.239-.255.465-.58.59-.775.091-.143.24-.432.24-.432l-.241-1.255s-.418.748-.678 1.036c-.261.288-.727.794-1.302 1.048-.576.253-.877.302-1.446.247-.569-.054-1.097-.383-1.282-.52-.185-.138-.658-.542-.925-.92-.268-.376-.686-1.13-.686-1.13z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>W3C</title><path d="M23.642 5.602l-.931 1.858s-.4-.738-.795-1.076c-.377-.322-.864-.62-1.48-.556-.597.062-1.27.587-1.722 1.46-.513.994-.688 2.001-.692 3.112-.005 1.556.57 2.618.57 2.618s-.132-.494-.11-1.33c.014-.52.017-1.089.41-2.261.33-.98 1.084-1.775 1.75-1.912.517-.107.847-.03 1.356.329.603.425.966 1.193.966 1.193l.946-1.81zM0 5.674l3.77 12.723h.156l2.356-7.886 2.357 7.886h.157l3.228-10.895.152-.258h2.655l-2.2 3.802v.754h.629c.806 0 1.398.246 1.775.738.324.42.487 1.011.487 1.776 0 .691-.152 1.283-.455 1.775-.304.492-.676.738-1.116.738-.419 0-.783-.138-1.092-.416-.308-.277-.557-.657-.746-1.139l-1.288.534c.261.796.665 1.427 1.21 1.893.544.466 1.183.699 1.916.699.974 0 1.767-.393 2.38-1.178.613-.785.919-1.754.919-2.906 0-.932-.21-1.743-.628-2.435-.42-.69-1.037-1.167-1.854-1.43l2.326-4.006v-.77h-6.177L8.64 13.419 6.362 5.674h-1.65l.754 2.529-1.54 5.215L1.65 5.674zm17.44 8.88s.233.755.379 1.076c.084.185.342.75.708 1.24.341.46 1.004 1.248 2.011 1.426 1.008.178 1.7-.274 1.871-.384.172-.11.533-.412.761-.657.239-.255.465-.58.59-.775.091-.143.24-.432.24-.432l-.241-1.255s-.418.748-.678 1.036c-.261.288-.727.794-1.302 1.048-.576.253-.877.302-1.446.247-.569-.054-1.097-.383-1.282-.52-.185-.138-.658-.542-.925-.92-.268-.376-.686-1.13-.686-1.13z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/wagtail.svg b/assets/lib/simple-icons/icons/wagtail.svg
new file mode 100644
index 00000000..fe611610
--- /dev/null
+++ b/assets/lib/simple-icons/icons/wagtail.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Wagtail</title><path d="M16.1812 0c-2.641 0-4.11 1.969-4.732 3.313L4.0175 16.9734l2.0979-.3927L2.2627 24l2.688-.4822 2.0433-5.8379c5.8146 0 13.279-2.0877 12.2382-9.9063 0 0-.634-3.151-4.7436-2.3013-.4163-1.4205-.3419-2.4749.5662-3.4343 1.2487-1.3192 3.1822-.5958 3.1822-.5958l.002-1.0877C17.5596.0565 16.9059 0 16.1813 0zm2.417 2.5229a.4955.4955 0 1 0 0 .991.4955.4955 0 0 0 0-.991zm1.502 1.029l-1.2918 1.5742h2.9289zM16.374 8.3422l.3033.0105-.0407.5502-.0374.2886c-.0144.1048-.0252.2188-.051.3388l-.0737.383-.1068.4193c-.0422.1448-.0937.2935-.1428.4484a14.128 14.128 0 0 1-.1863.4678l-.1128.2374-.0574.1207-.066.1184-.1343.2399c-.0502.0778-.1008.1563-.152.2354l-.0772.119-.0853.1146c-.0578.0762-.1137.1546-.1741.2303-.1258.1472-.2494.2993-.3902.438-.1335.1453-.2843.2754-.4312.4097l-.231.19c-.0764.0644-.1598.12-.2393.1803-.3235.2336-.6618.4464-1.01.626-.3473.1805-.697.3432-1.0442.4767-.3467.1351-.686.2538-1.0122.3513-.3253.1004-.6363.1829-.9243.2547-.5762.1422-1.061.2393-1.4002.3065l-.5337.1026.531-.1155c.3374-.0754.8196-.184 1.391-.3397.2855-.0785.5935-.1682.9148-.276.3223-.1047.6567-.2308.9972-.373.3413-.1407.6833-.31 1.0217-.4962.3392-.1853.6668-.4028.9782-.6391.0764-.0611.1567-.1172.2298-.182l.2212-.191c.1401-.1346.2841-.2646.4104-.4091.1337-.138.2499-.2887.3685-.4341.0567-.0747.109-.1521.1632-.2271l.08-.1128.0719-.1168.1413-.231.1241-.2348.0609-.1155.0526-.118.1033-.2314c.061-.1552.1165-.3078.1688-.4556.0438-.1509.09-.2953.1274-.436l.0934-.4074.0623-.3721c.0223-.1163.03-.2273.0415-.3291.0108-.102.0208-.1956.0296-.2803l.0267-.5345Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/wakatime.svg b/assets/lib/simple-icons/icons/wakatime.svg
new file mode 100644
index 00000000..aca27478
--- /dev/null
+++ b/assets/lib/simple-icons/icons/wakatime.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>WakaTime</title><path d="M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0zm0 2.824a9.176 9.176 0 1 1 0 18.352 9.176 9.176 0 0 1 0-18.352zm5.097 5.058c-.327 0-.61.19-.764.45-1.025 1.463-2.21 3.162-3.288 4.706l-.387-.636a.897.897 0 0 0-.759-.439.901.901 0 0 0-.788.492l-.357.581-1.992-2.943a.897.897 0 0 0-.761-.446c-.514 0-.903.452-.903.96a1 1 0 0 0 .207.61l2.719 3.96c.152.272.44.47.776.47a.91.91 0 0 0 .787-.483c.046-.071.23-.368.314-.504l.324.52c-.035-.047.076.113.087.13.024.031.054.059.078.085.019.019.04.036.058.052.036.033.08.056.115.08.025.016.052.028.076.04.029.015.06.024.088.035.058.025.122.027.18.04.031.004.064.003.092.005.29 0 .546-.149.707-.36 1.4-2 2.842-4.055 4.099-5.849A.995.995 0 0 0 18 8.842c0-.508-.389-.96-.903-.96"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/walkman.svg b/assets/lib/simple-icons/icons/walkman.svg
new file mode 100644
index 00000000..6741927c
--- /dev/null
+++ b/assets/lib/simple-icons/icons/walkman.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>WALKMAN</title><path d="M16.838 6.377a3.624 3.624 0 0 0-.833.086c-1.696.375-2.56 1.674-2.535 3.027.022 1.328-.592 2.51-1.911 2.663-1.28.154-1.861-.835-1.946-2.009-.083-1.159-.875-2.076-2.099-1.802-1.044.227-1.785 1.163-1.846 2.339-.065 1.22-.547 2.24-1.425 2.343-.841.097-1.261-.933-1.317-1.75-.054-.803-.453-1.822-1.497-1.59C.446 9.9.017 11.128.001 11.94c-.017.82.333 1.914 1.27 1.853.726-.048 1.275.636 1.291 1.67.014 1.008.568 2.16 1.665 2.162 1.16 0 1.799-.982 1.828-2.366.027-1.2.757-2.06 1.555-2.147.827-.087 1.588.635 1.674 1.957.091 1.344.77 2.517 2.568 2.517 1.947 0 2.457-1.477 2.421-2.889-.036-1.397 1.03-2.367 2.318-2.544 1.404-.192 2.862-1.246 2.687-3.382-.138-1.701-1.242-2.374-2.44-2.393zm3.999 5.638a3.909 3.909 0 0 0-.318.02c-1.6.16-2.762 1.27-2.644 2.893.12 1.65 1.47 2.679 3.133 2.679 1.769 0 3.165-1.154 2.975-2.992-.178-1.69-1.571-2.632-3.146-2.6Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/wallabag.svg b/assets/lib/simple-icons/icons/wallabag.svg
new file mode 100644
index 00000000..2a992bd4
--- /dev/null
+++ b/assets/lib/simple-icons/icons/wallabag.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Wallabag</title><path d="M20.376.0007c-.0433-.0046-.0911.014-.1388.0528-.1028.0835-.9982.2919-1.529.7058-.857.6687-1.3854 1.9404-1.6248 2.6435a5.6065 5.6065 0 00-.047.1408c-.1116.2692-.3343.2698-.3343.2698a3.0022 3.0022 0 00-.3246-.0176c-.097 0-.1948.0043-.2913.0137-.0022.0004-.0037-.0002-.006 0-.284.0419-.4404-.3045-.473-.3871-.332-.9534-1.2247-2.8338-3.232-3.3397 0 0-.3653-.2788-.2543.1935.1057.4514.3243.9065.2757 1.5701-.0223.3063-.2117 1.877 1.2318 2.6944.1372.0777.26.1445.3696.1995-.7266.5814-1.3884 1.39-1.9533 2.3092.287-.1764 1.836-.9975 4.3328.0332 2.5684 1.06 4.1607.139 4.3582.0137-.6209-1.0206-1.358-1.9094-2.1743-2.5066.0544-.015.1094-.0297.1681-.047 1.0826-.313 1.3577-1.2306 1.4156-2.0158.0655-.8905.1097-.9039.303-1.705.1392-.5772.0578-.8074-.0723-.8212zM13.2022 9.03c-.2261 0-.4135.0631-.5553.1877-.1458.1276-.219.2755-.219.44v2.841c0 .3573.0352.696.1037 1.005.0706.316.1934.592.3656.8231.174.2335.41.4188.702.5494.2888.1287.6495.1936 1.0733.1936.4417 0 .8113-.0828 1.099-.2444.2413-.1355.4447-.313.6062-.5299.1556.217.3546.3945.5924.53.284.1615.6595.2443 1.1165.2443.4237 0 .7841-.0666 1.0695-.1955.2878-.1305.5217-.3144.696-.5475.1726-.2319.2958-.508.3657-.8232.0685-.309.1017-.6476.1017-1.005v-2.841c0-.1637-.0699-.312-.2112-.44-.1378-.1252-.3271-.1876-.5611-.1876-.2123 0-.389.0635-.524.1896-.1366.1277-.2053.275-.2053.438v2.886c0 .3872-.068.6726-.2034.8486-.1308.17-.3403.2522-.6394.2522-.306 0-.516-.0814-.6393-.2502-.1287-.176-.1936-.4623-.1936-.8506V9.646c0-.1973-.0896-.3575-.26-.4653-.2317-.146-.4609-.1987-.741-.1056a1.1842 1.1842 0 00-.2406.1095.6958.6958 0 00-.1955.178c-.0579.0776-.088.1612-.088.2502v2.931c0 .3878-.0649.6743-.1936.8504-.1236.1688-.332.2503-.6374.2503-.3064 0-.5181-.0829-.6452-.2522-.132-.176-.1994-.461-.1994-.8486v-2.886c0-.1632-.0686-.3104-.2053-.438-.135-.1262-.3142-.1896-.5338-.1896zm-3.0521 5.774a5.613 5.613 0 00.3363 1.0324c.1197.6731.2803 2.2572-.481 3.6446-.6706 1.2223-3.981 2.8883-8.8945 1.9318 0 0-.1964-.1367-.2561-.0235-.0883.1675.272.303.6433.4008 3.4209.906 8.583.5362 10.204-.7997.7398-.609 1.0264-1.4282 1.099-2.311 0 0 .0197-.2306.309-.0568.0828.0498.3824.2452.43.4654.0417.3133.0445.6964-.1172.9659-.2314.3854-.2341.4414.0703.6589.187.1334.9515.6952 2.014 1.3335.0026.0018.0031.0025.0058.0039.2247.1353.5377.4673.5377.4673.4785.5534 1.518 1.6664 1.971 1.4566.2138-.099-.0079-.5436-.0079-.5436s.3545.4607.5456.3031c.1454-.12-.0841-.5807-.0841-.5807s.3099.2699.4947.1701c.226-.122-.0326-.8295-1.8105-1.9103-1.7787-1.0817-2.261-1.2476-2.3033-1.7304 0 0-.0014-.023 0-.0645.0138-.1066.0739-.3332.3324-.309a7.454 7.454 0 001.1889.0958 7.391 7.391 0 001.355-.1231s.0226-.0048.0293-.006c.051-.0064.1502-.0025.1506.1213-.0162.1569-.0602.3136-.1526.4516-.26.3897-.174.4438.0978.6942.1677.1544.9373.8313 1.9905 1.486.0022.0016.0014.0026.0039.0039.2245.1351.614.5064.614.5064.4364.4432 1.2384 1.1847 1.6757 1.14.2958-.0302.0547-.5397.0547-.5397s.3737.3603.5573.2542c.2052-.1184-.0841-.4947-.0841-.4947s.2407.1283.4106.086c.1704-.0424.2125-.4768-1.5564-1.572-1.769-1.0961-2.364-1.4811-2.3267-1.9005 0 0 .0002-.0682.0176-.172.043-.2223.1784-.601.612-.8174a.2517.2517 0 00.0372-.0235c1.3783-.7998 2.386-2.0874 2.7413-3.6954-.3577.8882-3.0083 1.578-6.2275 1.578-3.218 0-5.87-.6898-6.2275-1.578z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/walmart.svg b/assets/lib/simple-icons/icons/walmart.svg
new file mode 100644
index 00000000..07c7764a
--- /dev/null
+++ b/assets/lib/simple-icons/icons/walmart.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Walmart</title><path d="M21.41818 9.10219c-.22048 0-.39583.12308-.39583.27297l.13393 1.51627c.01478.09132.12669.16185.26197.16185.13555-.00017.24705-.07065.26214-.16185l.13424-1.51627c0-.1499-.17555-.27297-.39645-.27297zM-.00002 10.3184s.59713 2.44699.69242 2.84417c.11123.46362.3117.63419.88954.51913l.37291-1.51718c.0945-.37683.1579-.64553.21866-1.02883h.01065c.04269.3871.10354.65314.18131 1.03017 0 0 .15176.68869.22949 1.05042.07795.36163.29482.5895.86083.46542l.88851-3.3633h-.71735l-.30339 1.45411c-.08155.42325-.15544.75396-.21251 1.14117h-.01022c-.05189-.38347-.11777-.70096-.20072-1.11331l-.31586-1.48197h-.7474l-.3378 1.44462c-.09569.43899-.18528.79337-.2422 1.16745h-.01023c-.05832-.35224-.13599-.7977-.22006-1.22261 0 0-.20074-1.03328-.27115-1.38946zm6.83845 0v3.3633h.68299v-3.3633zm9.6188 0v2.48118c0 .34202.0644.5817.20213.72811.12033.12806.31854.21094.55604.21094.20193 0 .40062-.0383.49426-.07317l-.0088-.53367c-.06968.01711-.1498.03078-.25942.03078-.23265 0-.31068-.149-.31068-.45611v-.94921h.59479v-.64351h-.59481v-.79533zm2.77885 0c-.11446.0027-.24452.08936-.32723.23277-.11062.19096-.09105.40434.03838.47923l1.3799.64254c.0862.03205.20323-.02912.27103-.14597.06814-.11745.0629-.2496-.0088-.3082l-1.24635-.8741c-.03237-.01874-.06877-.02717-.10693-.02627zm4.36427 0c-.03815-.0009-.0745.0075-.1068.02628l-1.2464.8741c-.07112.05846-.07653.1901-.0092.30734.00006.00013.00015.00023.00025.00036.00009.00016.00015.00033.00024.00049.06804.11686.18472.17803.27091.14598l1.38004-.64254c.12997-.0749.14861-.28827.03874-.47923-.08309-.1434-.21333-.23006-.32777-.23277zM5.312 11.0981c-.42444 0-.76136.11916-.94501.22529l.13442.46019c.16808-.10595.43566-.19366.68907-.19366.41954-.0011.48817.23728.48817.39012v.03613c-.9142-.0014-1.49164.31493-1.49164.9598 0 .3937.29399.76266.80512.76266.31466 0 .57778-.12554.73548-.32662h.01545s.10445.4367.67982.26969c-.03022-.18174-.04002-.37546-.04002-.60884v-.89849c0-.57263-.24452-1.07627-1.07086-1.07627zm4.08552 0c-.42739 0-.61944.2166-.7359.40034h-.01016v-.34335h-.65173v2.5266h.68658V12.2c0-.06945.00799-.1429.03223-.2068.05689-.1492.19565-.3237.41725-.3237.27704 0 .40667.2342.40667.57222v1.44h.68585v-1.4996c0-.06636.0091-.14622.02859-.20486.05639-.16969.20602-.30776.41201-.30776.28086 0 .41567.23012.41567.62788v1.38434h.68633v-1.48805c0-.78478-.39845-1.09555-.8483-1.09555-.19922 0-.35646.04996-.49863.13722-.1195.07334-.22655.17753-.32006.3147h-.0101c-.10853-.27228-.36375-.45192-.6963-.45192zm3.7702 0c-.42435 0-.76113.11916-.94495.22529l.13454.46019c.16792-.10595.43572-.19366.689-.19366.41926-.0011.48806.23728.48806.39012v.03613c-.91407-.0014-1.49164.31494-1.49164.9598 0 .3937.29418.76266.8056.76266.31441 0 .57759-.12554.735-.32662h.01557s.10437.4367.67982.26969c-.03027-.18174-.03996-.37546-.03996-.60884v-.89849c0-.57263-.24458-1.07627-1.07104-1.07627zm2.85129 0c-.26292 0-.56205.1697-.68761.53354h-.0191v-.47655h-.6181v2.5266h.70453V12.388c0-.06985.0042-.1307.01527-.1865.0521-.27102.25945-.44425.55696-.44425.08167 0 .1401.0088.20333.018v-.66151c-.05302-.0107-.0893-.01563-.15528-.01563zm4.35946 1.22067c-.01785-.00025-.03513.0026-.05134.0087l-1.3799.6418c-.12943.07519-.149.28868-.03838.47984.11028.1906.30469.28118.43415.20644l1.24634-.87349c.0717-.05929.07696-.19127.0088-.30862l.0006.00025c-.05507-.09558-.14292-.15388-.22027-.15492zm2.07955 0c-.07727.001-.1649.05934-.22012.15491l.00049-.00025c-.06781.11735-.06254.24934.0088.30862l1.2464.87349c.12921.07474.3238-.01584.43458-.20644.10986-.19116.09122-.40466-.03875-.47983l-1.38012-.64181c-.0162-.0061-.03344-.0089-.05128-.0087zm-16.75741.14518v.31519c0 .0466-.00406.09467-.01697.13673-.05286.17506-.23415.32303-.46086.32303-.18901 0-.33916-.1073-.33916-.33422 0-.34707.38204-.443.81699-.44073zm7.85577 0v.31519c0 .0466-.0041.09467-.0169.13673-.05287.17506-.23421.32303-.46093.32303-.18905 0-.3392-.1073-.3392-.33422 0-.34707.38209-.443.81703-.44073zm7.86138.48324c-.13506.00016-.24672.07024-.26148.16137l-.13393 1.5162c0 .15015.17535.27304.39583.27304.2209 0 .39645-.12289.39645-.27303l-.13424-1.51621c-.01509-.09113-.12659-.1612-.26214-.16137z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/wappalyzer.svg b/assets/lib/simple-icons/icons/wappalyzer.svg
new file mode 100644
index 00000000..4358388d
--- /dev/null
+++ b/assets/lib/simple-icons/icons/wappalyzer.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Wappalyzer</title><path d="M24 11.014v-.604L12 1.805 0 10.41v.603l12 8.606 12-8.605zM8.634 10.82l2.75 1.07.016-.01-1.526-1.967.984-.72 2.695 1.116.016-.011-1.463-2.018 1.247-.913 2.6 3.85-1.046.766-2.797-1.157-.012.008 1.593 2.038-1.048.767-5.26-1.903 1.251-.916zm14.418 1.488l.947.679v.603l-12 8.605L0 13.59v-.603l.947-.678 10.761 7.717.292.21.291-.21 10.762-7.717z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/warnerbros-dot.svg b/assets/lib/simple-icons/icons/warnerbros-dot.svg
deleted file mode 100644
index 668eb2cc..00000000
--- a/assets/lib/simple-icons/icons/warnerbros-dot.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Warner Bros. icon</title><path d="M16.5798 10.2379c-.5236 0-.9992.201-2.4648 1.2525v5.6593c2.5407-2.8547 3.2641-4.808 3.2641-5.81-.0026-.7013-.3264-1.1018-.7993-1.1018zm.1998-3.7564c0-1.0047-1.1458-1.8286-2.6646-1.9284v5.234c1.9165-1.1267 2.664-2.2566 2.664-3.3056zm4.5098-2.2211c-.0246-.0998-.05-.1373-.0999-.15l-1.796-.4763-.249-1.0268c-.0127-.0503-.0254-.0878-.0747-.0998l-1.8439-.501-.2238-.9773a.1372.1372 0 00-.1-.1253L12.1154.0111a.6414.6414 0 00-.2372 0l-4.789.8928a.1372.1372 0 00-.0998.1253l-.2245.9773-1.8432.5003c-.05.012-.062.0496-.0747.0998l-.249 1.0268-1.7914.477c-.0493.0127-.0746.0502-.0992.15a12.9347 12.9347 0 00-.2245 2.4301c0 7.214 3.737 13.4768 9.3174 17.209A.2493.2493 0 0012 24a.2493.2493 0 00.1999-.1005c5.5803-3.7322 9.3173-9.995 9.3173-17.209a12.9906 12.9906 0 00-.2284-2.4301zm-9.9922 16.3208c0 .0503-.05.075-.0992.0248-1.3703-1.5774-2.2916-3.5058-2.9144-5.6097l-.9466.6028c-.2491.1755-.4483.1005-.5995-.1748-1.2704-2.254-2.0924-5.9614-2.167-8.565a.4522.4522 0 01.1246-.3255 11.8352 11.8352 0 011.0958-1.1521c.0746-.075.1499-.0255.1499.0998 0 3.2057.5475 6.1858 1.4195 8.1396.0746.15.1492.15.2492.075l.2737-.1754c-.5229-2.329-.822-5.4343-.7474-9.0158 0-.1253.0253-.1755.1-.225a8.7268 8.7268 0 011.195-.6264c.1246-.0502.1499-.0247.1499.075-.0706 5.2086.3544 8.8136 1.2743 11.6938.0247.075.0993.0495.0993-.0255-.05-1.0516-.05-1.978-.05-3.1053l-.0493-8.991c0-.0998.0247-.15.1246-.1748a9.9022 9.9022 0 011.245-.2257.0664.0664 0 01.0557.019.0672.0672 0 01.019.056zm1.4949.0248c-.05.0503-.1.0255-.1-.0248V2.9757a.0672.0672 0 01.019-.056.0664.0664 0 01.0557-.019c3.3373.2257 5.4797 1.6283 5.4797 3.6565a3.4113 3.4113 0 01-.872 2.2774c1.0958.3007 1.5195 1.1273 1.5195 2.2292.002 1.9538-1.4176 5.185-6.1 9.5422Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/warnerbros.svg b/assets/lib/simple-icons/icons/warnerbros.svg
new file mode 100644
index 00000000..865c41ef
--- /dev/null
+++ b/assets/lib/simple-icons/icons/warnerbros.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Warner Bros.</title><path d="M16.5798 10.2379c-.5236 0-.9992.201-2.4648 1.2525v5.6593c2.5407-2.8547 3.2641-4.808 3.2641-5.81-.0026-.7013-.3264-1.1018-.7993-1.1018zm.1998-3.7564c0-1.0047-1.1458-1.8286-2.6646-1.9284v5.234c1.9165-1.1267 2.664-2.2566 2.664-3.3056zm4.5098-2.2211c-.0246-.0998-.05-.1373-.0999-.15l-1.796-.4763-.249-1.0268c-.0127-.0503-.0254-.0878-.0747-.0998l-1.8439-.501-.2238-.9773a.1372.1372 0 00-.1-.1253L12.1154.0111a.6414.6414 0 00-.2372 0l-4.789.8928a.1372.1372 0 00-.0998.1253l-.2245.9773-1.8432.5003c-.05.012-.062.0496-.0747.0998l-.249 1.0268-1.7914.477c-.0493.0127-.0746.0502-.0992.15a12.9347 12.9347 0 00-.2245 2.4301c0 7.214 3.737 13.4768 9.3174 17.209A.2493.2493 0 0012 24a.2493.2493 0 00.1999-.1005c5.5803-3.7322 9.3173-9.995 9.3173-17.209a12.9906 12.9906 0 00-.2284-2.4301zm-9.9922 16.3208c0 .0503-.05.075-.0992.0248-1.3703-1.5774-2.2916-3.5058-2.9144-5.6097l-.9466.6028c-.2491.1755-.4483.1005-.5995-.1748-1.2704-2.254-2.0924-5.9614-2.167-8.565a.4522.4522 0 01.1246-.3255 11.8352 11.8352 0 011.0958-1.1521c.0746-.075.1499-.0255.1499.0998 0 3.2057.5475 6.1858 1.4195 8.1396.0746.15.1492.15.2492.075l.2737-.1754c-.5229-2.329-.822-5.4343-.7474-9.0158 0-.1253.0253-.1755.1-.225a8.7268 8.7268 0 011.195-.6264c.1246-.0502.1499-.0247.1499.075-.0706 5.2086.3544 8.8136 1.2743 11.6938.0247.075.0993.0495.0993-.0255-.05-1.0516-.05-1.978-.05-3.1053l-.0493-8.991c0-.0998.0247-.15.1246-.1748a9.9022 9.9022 0 011.245-.2257.0664.0664 0 01.0557.019.0672.0672 0 01.019.056zm1.4949.0248c-.05.0503-.1.0255-.1-.0248V2.9757a.0672.0672 0 01.019-.056.0664.0664 0 01.0557-.019c3.3373.2257 5.4797 1.6283 5.4797 3.6565a3.4113 3.4113 0 01-.872 2.2774c1.0958.3007 1.5195 1.1273 1.5195 2.2292.002 1.9538-1.4176 5.185-6.1 9.5422Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/wattpad.svg b/assets/lib/simple-icons/icons/wattpad.svg
index e5a642c3..51853c8c 100644
--- a/assets/lib/simple-icons/icons/wattpad.svg
+++ b/assets/lib/simple-icons/icons/wattpad.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Wattpad icon</title><path d="M22.957 18.26c0 1.775-1.357 3.131-3.13 3.131H9.39c-5.321 0-8.348-2.817-8.348-7.826V5.74c0-1.774 1.357-3.13 3.131-3.13h3.13c.522 0 1.148.104 1.566.417.417-.313 1.043-.417 1.565-.417h3.13c.522 0 1.148.104 1.565.417.418-.313 1.044-.417 1.566-.417h3.13c1.774 0 3.13 1.356 3.13 3.13v12.522zm-3.13-16.695h-3.131c-.522 0-1.044.105-1.566.313a4.186 4.186 0 0 0-1.565-.313h-3.13c-.522 0-1.044.105-1.565.313a4.185 4.185 0 0 0-1.566-.313h-3.13A4.186 4.186 0 0 0 0 5.74v7.826c0 5.53 3.548 8.87 9.391 8.87h10.435A4.186 4.186 0 0 0 24 18.26V5.739a4.186 4.186 0 0 0-4.174-4.174M9.391 18.26h10.435V5.74h-3.13v10.434h-3.13V5.739h-3.131v10.435H9.39c-1.043 0-2.087-.835-2.087-2.609V5.74h-3.13v7.826c0 3.13 1.46 4.696 5.217 4.696"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Wattpad</title><path d="M13.034 3.09c-1.695.113-3.9 2.027-6.9 6.947.245-2.758.345-4.716-.857-5.743-.823-.702-2.764-.974-3.926.536C.18 6.349-.09 9.312.024 12.432c.238 6.518 2.544 8.487 4.59 8.487h.001c3.623 0 4.13-4.439 6.604-8.4-.09 1.416-.008 2.668.266 3.532 1.078 3.398 4.784 3.663 6.467.21 2.374-4.87 3.058-6.016 5.453-9.521 1.58-2.314-.252-3.812-2.374-2.735-1.09.554-2.86 1.935-5.065 4.867.387-2.23.28-5.996-2.932-5.782z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/waze.svg b/assets/lib/simple-icons/icons/waze.svg
index a7b4c399..d4861136 100644
--- a/assets/lib/simple-icons/icons/waze.svg
+++ b/assets/lib/simple-icons/icons/waze.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Waze icon</title><path d="M13.314 1.59c-.225.003-.45.013-.675.03-2.165.155-4.295.924-6.069 2.327-2.194 1.732-3.296 4.325-3.496 7.05h.002c-.093 1.22-.23 2.15-.469 2.63-.238.479-.42.638-1.24.639C.27 14.259-.4 15.612.266 16.482c1.248 1.657 2.902 2.705 4.72 3.364a2.198 2.198 0 00-.033.367 2.198 2.198 0 002.2 2.197 2.198 2.198 0 002.128-1.668c1.307.12 2.607.14 3.824.1.364-.012.73-.045 1.094-.092a2.198 2.198 0 002.127 1.66 2.198 2.198 0 002.2-2.197 2.198 2.198 0 00-.151-.797 12.155 12.155 0 002.303-1.549c2.094-1.807 3.511-4.399 3.302-7.404-.112-1.723-.761-3.298-1.748-4.608-2.143-2.86-5.53-4.309-8.918-4.265zm.366 1.54c.312.008.623.027.933.063 2.48.288 4.842 1.496 6.4 3.577v.001c.829 1.1 1.355 2.386 1.446 3.792v.003c.173 2.477-.965 4.583-2.777 6.147a10.66 10.66 0 01-2.375 1.535 2.198 2.198 0 00-.98-.234 2.198 2.198 0 00-1.934 1.158 9.894 9.894 0 01-1.338.146 27.323 27.323 0 01-3.971-.148 2.198 2.198 0 00-1.932-1.156 2.198 2.198 0 00-1.347.463c-1.626-.553-3.078-1.422-4.155-2.762 1.052-.096 1.916-.6 2.319-1.408.443-.889.53-1.947.625-3.198v-.002c.175-2.391 1.11-4.536 2.92-5.964h.002c1.77-1.402 3.978-2.061 6.164-2.012zm-3.157 4.638c-.688 0-1.252.579-1.252 1.298 0 .72.564 1.297 1.252 1.297.689 0 1.252-.577 1.252-1.297 0-.711-.563-1.298-1.252-1.298zm5.514 0c-.688 0-1.25.579-1.25 1.298-.008.72.554 1.297 1.25 1.297.688 0 1.252-.577 1.252-1.297 0-.711-.564-1.298-1.252-1.298zM9.641 11.78a.72.72 0 00-.588.32.692.692 0 00-.11.54c.345 1.783 2.175 3.129 4.264 3.129h.125c1.056-.032 2.026-.343 2.816-.922.767-.556 1.29-1.316 1.477-2.137a.746.746 0 00-.094-.547.69.69 0 00-.445-.32.714.714 0 00-.867.539c-.22.93-1.299 1.9-2.934 1.94-1.572.046-2.738-.986-2.926-1.956a.72.72 0 00-.718-.586Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Waze</title><path d="M13.218 0C9.915 0 6.835 1.49 4.723 4.148c-1.515 1.913-2.31 4.272-2.31 6.706v1.739c0 .894-.62 1.738-1.862 1.813-.298.025-.547.224-.547.522-.05.82.82 2.31 2.012 3.502.82.844 1.788 1.515 2.832 2.036a3 3 0 0 0 2.955 3.528 2.966 2.966 0 0 0 2.931-2.385h2.509c.323 1.689 2.086 2.856 3.974 2.21 1.64-.546 2.36-2.409 1.763-3.924a12.84 12.84 0 0 0 1.838-1.465 10.73 10.73 0 0 0 3.18-7.65c0-2.882-1.118-5.589-3.155-7.625A10.899 10.899 0 0 0 13.218 0zm0 1.217c2.558 0 4.967.994 6.78 2.807a9.525 9.525 0 0 1 2.807 6.78A9.526 9.526 0 0 1 20 17.585a9.647 9.647 0 0 1-6.78 2.807h-2.46a3.008 3.008 0 0 0-2.93-2.41 3.03 3.03 0 0 0-2.534 1.367v.024a8.945 8.945 0 0 1-2.41-1.788c-.844-.844-1.316-1.614-1.515-2.11a2.858 2.858 0 0 0 1.441-.846 2.959 2.959 0 0 0 .795-2.036v-1.789c0-2.11.696-4.197 2.012-5.861 1.863-2.385 4.62-3.726 7.6-3.726zm-2.41 5.986a1.192 1.192 0 0 0-1.191 1.192 1.192 1.192 0 0 0 1.192 1.193A1.192 1.192 0 0 0 12 8.395a1.192 1.192 0 0 0-1.192-1.192zm7.204 0a1.192 1.192 0 0 0-1.192 1.192 1.192 1.192 0 0 0 1.192 1.193 1.192 1.192 0 0 0 1.192-1.193 1.192 1.192 0 0 0-1.192-1.192zm-7.377 4.769a.596.596 0 0 0-.546.845 4.813 4.813 0 0 0 4.346 2.757 4.77 4.77 0 0 0 4.347-2.757.596.596 0 0 0-.547-.845h-.025a.561.561 0 0 0-.521.348 3.59 3.59 0 0 1-3.254 2.061 3.591 3.591 0 0 1-3.254-2.061.64.64 0 0 0-.546-.348z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/wearos.svg b/assets/lib/simple-icons/icons/wearos.svg
index 9c4db74f..2887797c 100644
--- a/assets/lib/simple-icons/icons/wearos.svg
+++ b/assets/lib/simple-icons/icons/wearos.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Wear OS icon</title><path d="M8.416 21.1346c-.9687 0-1.8938-.56-2.3135-1.5015L.2193 6.4198C-.3488 5.1432.2248 3.6472 1.5014 3.079c1.2767-.5681 2.7727.0055 3.3408 1.2821l5.8832 13.2133c.5681 1.2767-.0055 2.7727-1.2821 3.3408a2.5254 2.5254 0 01-1.0273.2194zm7.1952.0368c-.891 0-1.7412-.515-2.1268-1.3816L7.39 6.1024C6.867 4.9279 7.3955 3.5532 8.5686 3.03c1.173-.5218 2.5492.0054 3.0724 1.1785l6.0943 13.6888c.5232 1.1745-.0054 2.5492-1.1785 3.0724a2.3111 2.3111 0 01-.9456.2017zM24 5.195a2.3271 2.3271 0 01-2.3271 2.327 2.3271 2.3271 0 01-2.3271-2.327 2.3271 2.3271 0 012.327-2.3271A2.3271 2.3271 0 0124 5.1949zm-2.6119 5.116a2.4892 2.4892 0 01-2.4892 2.4893 2.4892 2.4892 0 01-2.4893-2.4892 2.4892 2.4892 0 012.4893-2.4893 2.4892 2.4892 0 012.4892 2.4893Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Wear OS</title><path d="M8.416 21.1346c-.9687 0-1.8938-.56-2.3135-1.5015L.2193 6.4198C-.3488 5.1432.2248 3.6472 1.5014 3.079c1.2767-.5681 2.7727.0055 3.3408 1.2821l5.8832 13.2133c.5681 1.2767-.0055 2.7727-1.2821 3.3408a2.5254 2.5254 0 01-1.0273.2194zm7.1952.0368c-.891 0-1.7412-.515-2.1268-1.3816L7.39 6.1024C6.867 4.9279 7.3955 3.5532 8.5686 3.03c1.173-.5218 2.5492.0054 3.0724 1.1785l6.0943 13.6888c.5232 1.1745-.0054 2.5492-1.1785 3.0724a2.3111 2.3111 0 01-.9456.2017zM24 5.195a2.3271 2.3271 0 01-2.3271 2.327 2.3271 2.3271 0 01-2.3271-2.327 2.3271 2.3271 0 012.327-2.3271A2.3271 2.3271 0 0124 5.1949zm-2.6119 5.116a2.4892 2.4892 0 01-2.4892 2.4893 2.4892 2.4892 0 01-2.4893-2.4892 2.4892 2.4892 0 012.4893-2.4893 2.4892 2.4892 0 012.4892 2.4893Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/weasyl.svg b/assets/lib/simple-icons/icons/weasyl.svg
index 7fcb484a..2291bd6e 100644
--- a/assets/lib/simple-icons/icons/weasyl.svg
+++ b/assets/lib/simple-icons/icons/weasyl.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Weasyl icon</title><path d="M21.23 4.156a8.488 8.488 0 0 0-5.871-1.857c-3.766.243-6.324 2.662-7.364 6.481-1.28-1.224-1.892-3.238-2.093-5.54-1.02.215-1.658.702-2.233 1.237.445 2.316 1.802 4.015 3.264 5.158-2.559.317-5.99 2.442-6.771 4.904-.507 1.598.258 3.415 1.283 4.52 1.237 1.333 3.75 1.998 6.355 1.754.037.362-.104.536-.058.907 4.067-.306 7.174-1.646 10.04-3.894 1.119-.877 2.659-2.037 3.756-3.227 1.101-1.192 2.296-2.578 2.443-4.52.21-2.79-1.236-4.694-2.751-5.923zm-1.434 10.938c-1.035 1.001-2.241 1.797-3.351 2.675-1.249-1.987-2.583-3.984-3.887-5.917.017 2.63.006 5.432.04 7.957-.78.381-1.789.558-2.744.763-1.935-2.917-3.968-5.99-5.961-8.908.693-.447 1.627-.785 2.478-1.075 1.419 2.05 2.729 4.253 4.171 6.333.019-3.113-.009-6.673-.061-9.919a14.175 14.175 0 0 0 1.527-.434c1.813 2.721 3.553 5.628 5.464 8.359a547.35 547.35 0 0 1-.018-9.768c.858-.282 1.803-.535 2.669-.809.02 3.499-.338 7.128-.327 10.743z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Weasyl</title><path d="M21.23 4.156a8.488 8.488 0 0 0-5.871-1.857c-3.766.243-6.324 2.662-7.364 6.481-1.28-1.224-1.892-3.238-2.093-5.54-1.02.215-1.658.702-2.233 1.237.445 2.316 1.802 4.015 3.264 5.158-2.559.317-5.99 2.442-6.771 4.904-.507 1.598.258 3.415 1.283 4.52 1.237 1.333 3.75 1.998 6.355 1.754.037.362-.104.536-.058.907 4.067-.306 7.174-1.646 10.04-3.894 1.119-.877 2.659-2.037 3.756-3.227 1.101-1.192 2.296-2.578 2.443-4.52.21-2.79-1.236-4.694-2.751-5.923zm-1.434 10.938c-1.035 1.001-2.241 1.797-3.351 2.675-1.249-1.987-2.583-3.984-3.887-5.917.017 2.63.006 5.432.04 7.957-.78.381-1.789.558-2.744.763-1.935-2.917-3.968-5.99-5.961-8.908.693-.447 1.627-.785 2.478-1.075 1.419 2.05 2.729 4.253 4.171 6.333.019-3.113-.009-6.673-.061-9.919a14.175 14.175 0 0 0 1.527-.434c1.813 2.721 3.553 5.628 5.464 8.359a547.35 547.35 0 0 1-.018-9.768c.858-.282 1.803-.535 2.669-.809.02 3.499-.338 7.128-.327 10.743z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/web3dotjs.svg b/assets/lib/simple-icons/icons/web3dotjs.svg
new file mode 100644
index 00000000..b617387d
--- /dev/null
+++ b/assets/lib/simple-icons/icons/web3dotjs.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Web3.js</title><path d="M.889.775S0 1.29 0 2.315V7.44s0 3.079 2.666 4.618c.817.472 1.384.508 1.777.334.394.628.96 1.246 1.778 1.718 2.666 1.54 2.668-1.539 2.668-1.539V7.447c0-1.027.888-1.539.888-1.539l3.557-2.054s.89-.514 1.777 0c.89.513 0 1.027 0 1.027L11.56 6.934l1.775 1.025 3.559-2.055c.052-.03.912-.495 1.773.002.89.514 0 1.026 0 1.026l-3.555 2.054s-.888.514-.888 1.54v5.124s0 1.028-.889.514c-.89-.513-.89-1.539-.89-1.539l-1.778-1.027s.001 3.08 2.668 4.619c2.667 1.539 2.666-1.54 2.666-1.54v-5.126c0-1.026.889-1.537.889-1.537l4.445-2.569s1.776-1.025-.889-2.564c-.819-.474-1.552-.704-2.177-.797-.164-.357-.565-.776-1.377-1.24-2.667-1.523-5.332-.016-5.332-.016L8.004 4.881s-.89.514-.89 1.539v5.125s0 1.027-.89.514c-.889-.514-.89-1.54-.89-1.54V5.396c0-.064.003-.127.01-.188.097-.902.879-1.353.879-1.353L4.445 2.828l-.004.002c-.052.03-.884.544-.884 1.537v5.125s-.002 1.027-.891.514c-.89-.514-.889-1.54-.889-1.54V3.343c0-1.026.889-1.54.889-1.54L.889.776zm9.78 8.735v2.053l1.778 1.025v-2.053L10.67 9.51zm8.442 2.183c-.666.005-1.332.389-1.332 1.909 0 3.039 2.666 4.619 2.666 4.619l.889.513s.89.514.89 1.54-.89.513-.89.513l-3.555-2.053v2.053l3.555 2.053S24 24.379 24 21.3c0-3.077-1.777-4.105-1.777-4.105l-1.778-1.025s-.888-.514-.888-1.54c0-1.028.888-.515.888-.515L24 16.168v-2.053l-3.555-2.05s-.667-.376-1.334-.372Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/webassembly.svg b/assets/lib/simple-icons/icons/webassembly.svg
index f220d68a..9a9b3d9c 100644
--- a/assets/lib/simple-icons/icons/webassembly.svg
+++ b/assets/lib/simple-icons/icons/webassembly.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>WebAssembly icon</title><path d="M14.745,0c0,0.042,0,0.085,0,0.129c0,1.52-1.232,2.752-2.752,2.752c-1.52,0-2.752-1.232-2.752-2.752 c0-0.045,0-0.087,0-0.129H0v24h24V0H14.745z M11.454,21.431l-1.169-5.783h-0.02l-1.264,5.783H7.39l-1.824-8.497h1.59l1.088,5.783 h0.02l1.311-5.783h1.487l1.177,5.854h0.02l1.242-5.854h1.561l-2.027,8.497H11.454z M20.209,21.431l-0.542-1.891h-2.861l-0.417,1.891 h-1.59l2.056-8.497h2.509l2.5,8.497H20.209z M17.812,15.028l-0.694,3.118h2.159l-0.796-3.118H17.812z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>WebAssembly</title><path d="M14.745,0c0,0.042,0,0.085,0,0.129c0,1.52-1.232,2.752-2.752,2.752c-1.52,0-2.752-1.232-2.752-2.752 c0-0.045,0-0.087,0-0.129H0v24h24V0H14.745z M11.454,21.431l-1.169-5.783h-0.02l-1.264,5.783H7.39l-1.824-8.497h1.59l1.088,5.783 h0.02l1.311-5.783h1.487l1.177,5.854h0.02l1.242-5.854h1.561l-2.027,8.497H11.454z M20.209,21.431l-0.542-1.891h-2.861l-0.417,1.891 h-1.59l2.056-8.497h2.509l2.5,8.497H20.209z M17.812,15.028l-0.694,3.118h2.159l-0.796-3.118H17.812z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/webauthn.svg b/assets/lib/simple-icons/icons/webauthn.svg
index 81385546..c0e29c19 100644
--- a/assets/lib/simple-icons/icons/webauthn.svg
+++ b/assets/lib/simple-icons/icons/webauthn.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>WebAuthn icon</title><path d="M15.287 3.63a8.407 8.407 0 00-8.051 7.593h.55a7.805 7.805 0 012.24-4.713 5.825 5.825 0 00.924.695c-.608 1.177-.98 2.556-1.082 4.018h.135c.105-1.467.485-2.819 1.065-3.947.745.434 1.623.754 2.577.94a27.83 27.83 0 00-.25 3.763h-.847v.135h.847c.003 1.334.09 2.617.25 3.764-.954.185-1.832.506-2.577.94a9.997 9.997 0 01-.978-3.137h-.137c.164 1.16.502 2.25.997 3.208a5.825 5.825 0 00-.924.695 7.805 7.805 0 01-2.255-4.875H7.22A8.407 8.407 0 0024 12.034a8.398 8.398 0 00-.688-3.333 8.407 8.407 0 00-8.025-5.072zm.315.546c.155 0 .31.005.464.014.365.34.708 1.07.983 2.114a16.518 16.518 0 01.357 1.79 10.173 10.173 0 01-1.804.16 10.173 10.173 0 01-1.805-.16 16.519 16.519 0 01.357-1.79c.275-1.045.618-1.775.983-2.114a7.97 7.97 0 01.465-.014zm-.665.028c-.345.392-.658 1.093-.913 2.065a16.639 16.639 0 00-.36 1.8c-.939-.183-1.802-.498-2.533-.926.686-1.283 1.635-2.264 2.73-2.775a7.874 7.874 0 011.076-.164zm1.33 0a7.856 7.856 0 011.084.168c1.092.513 2.037 1.492 2.721 2.771-.73.428-1.594.743-2.533.927a16.64 16.64 0 00-.36-1.8c-.255-.972-.568-1.673-.912-2.066zm-2.972.314c-.655.407-1.257.989-1.776 1.73a8.166 8.166 0 00-.506.825 5.69 5.69 0 01-.891-.67 7.814 7.814 0 013.173-1.885zm4.624.006a7.862 7.862 0 013.164 1.877 5.692 5.692 0 01-.893.672 8.166 8.166 0 00-.506-.825c-.516-.738-1.115-1.318-1.765-1.724zm3.26 1.985a7.858 7.858 0 011.638 2.419 7.802 7.802 0 01.642 3.051h-2.095c-.01-1.74-.398-3.396-1.11-4.774a5.823 5.823 0 00.925-.696zm-1.044.767c.679 1.32 1.084 2.945 1.094 4.703h-3.42a27.863 27.863 0 00-.251-3.763c.954-.186 1.833-.506 2.577-.94zm-6.357.965a10.299 10.299 0 001.824.16 10.299 10.299 0 001.823-.16c.16 1.138.246 2.413.249 3.738h-1.178a1.03 1.03 0 01-.093.135h1.27a27.71 27.71 0 01-.248 3.739 10.397 10.397 0 00-3.647 0 27.733 27.733 0 01-.248-3.739h1.294a.99.99 0 01-.09-.135H13.53c.003-1.325.088-2.6.248-3.738zM2.558 9.37a2.585 2.585 0 00-2.547 2.35c-.142 1.541 1.064 2.842 2.566 2.842 1.26 0 2.312-.917 2.533-2.124h4.44v.972h.946v-.972h.837v1.431h.945v-2.376H5.11A2.586 2.586 0 002.558 9.37zm-.058.965a1.639 1.639 0 011.707 1.637 1.64 1.64 0 01-1.639 1.638 1.639 1.639 0 01-.068-3.275zm13.09.388a.75.75 0 00-.345 1.404l-.383 1.958h1.5l-.383-1.958a.75.75 0 00.384-.654.75.75 0 00-.773-.75zm2.218 1.391h3.421c-.01 1.758-.415 3.384-1.094 4.704-.744-.434-1.623-.755-2.577-.94a27.81 27.81 0 00.25-3.764zm3.556 0h2.095a7.805 7.805 0 01-2.281 5.47 5.825 5.825 0 00-.924-.696c.712-1.378 1.1-3.033 1.11-4.774zm-5.52 3.703a10.284 10.284 0 011.562.156 16.518 16.518 0 01-.357 1.791c-.275 1.045-.618 1.774-.982 2.114a7.972 7.972 0 01-.93 0c-.365-.34-.708-1.07-.983-2.114a16.519 16.519 0 01-.357-1.79 10.284 10.284 0 012.048-.157zm1.695.181c.94.184 1.803.5 2.533.926-.686 1.284-1.635 2.265-2.73 2.776a7.874 7.874 0 01-1.075.164c.344-.393.657-1.094.913-2.065a16.64 16.64 0 00.359-1.8zm-3.874 0a16.648 16.648 0 00.359 1.8c.255.973.568 1.674.913 2.066a7.873 7.873 0 01-1.075-.164c-1.096-.511-2.045-1.492-2.731-2.775.73-.428 1.594-.743 2.534-.927zm-2.652.997a8.16 8.16 0 00.506.825c.52.741 1.121 1.323 1.776 1.73a7.814 7.814 0 01-3.174-1.884 5.694 5.694 0 01.892-.67zm9.178 0a5.694 5.694 0 01.891.67 7.814 7.814 0 01-3.173 1.885c.654-.407 1.256-.989 1.775-1.73a8.16 8.16 0 00.507-.825z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>WebAuthn</title><path d="M15.2872 3.641a8.407 8.407 0 00-8.05 7.593h.55a7.805 7.805 0 012.24-4.713 5.825 5.825 0 00.923.695c-.608 1.177-.98 2.556-1.082 4.018h.135c.105-1.467.485-2.819 1.065-3.947.745.434 1.623.754 2.577.94a27.83 27.83 0 00-.25 3.763h-.847v.135h.847c.003 1.334.09 2.617.25 3.764-.954.185-1.832.506-2.577.94a9.997 9.997 0 01-.978-3.137h-.137c.164 1.16.502 2.25.997 3.208a5.825 5.825 0 00-.924.695 7.805 7.805 0 01-2.255-4.875h-.55a8.407 8.407 0 0016.779-.675 8.398 8.398 0 00-.689-3.333 8.407 8.407 0 00-8.025-5.072zm.315.546c.155 0 .31.005.464.014.365.34.708 1.07.983 2.114a16.518 16.518 0 01.357 1.79 10.173 10.173 0 01-1.804.16 10.173 10.173 0 01-1.805-.16 16.519 16.519 0 01.357-1.79c.275-1.045.618-1.775.983-2.114a7.97 7.97 0 01.465-.014zm-.665.028c-.345.392-.658 1.093-.913 2.065a16.639 16.639 0 00-.36 1.8c-.939-.183-1.802-.498-2.533-.926.686-1.283 1.635-2.264 2.73-2.775a7.874 7.874 0 011.076-.164zm1.33 0a7.856 7.856 0 011.084.168c1.092.513 2.037 1.492 2.721 2.771-.73.428-1.594.743-2.533.927a16.64 16.64 0 00-.36-1.8c-.255-.972-.568-1.673-.912-2.066zm-2.972.314c-.655.407-1.257.989-1.776 1.73a8.166 8.166 0 00-.506.825 5.69 5.69 0 01-.89-.67 7.814 7.814 0 013.172-1.885zm4.624.006a7.862 7.862 0 013.164 1.877 5.692 5.692 0 01-.893.672 8.166 8.166 0 00-.506-.825c-.516-.738-1.115-1.318-1.765-1.724zm3.26 1.985a7.858 7.858 0 011.638 2.419 7.802 7.802 0 01.642 3.051h-2.095c-.01-1.74-.398-3.396-1.11-4.774a5.823 5.823 0 00.925-.696zm-1.044.767c.68 1.32 1.084 2.945 1.094 4.703h-3.42a27.863 27.863 0 00-.25-3.763c.953-.186 1.832-.506 2.576-.94zm-6.357.965a10.299 10.299 0 001.824.16 10.299 10.299 0 001.823-.16c.16 1.138.246 2.413.25 3.738h-1.179a1.03 1.03 0 01-.093.135h1.27a27.71 27.71 0 01-.248 3.739 10.397 10.397 0 00-3.647 0 27.733 27.733 0 01-.248-3.739h1.294a.99.99 0 01-.09-.135h-1.204c.003-1.325.088-2.6.248-3.738zm-11.22 1.129a2.585 2.585 0 00-2.547 2.35c-.142 1.541 1.064 2.842 2.566 2.842 1.26 0 2.312-.917 2.533-2.124h4.44v.972h.946v-.972h.837v1.431h.945v-2.376h-7.168a2.586 2.586 0 00-2.552-2.123zm-.058.965a1.639 1.639 0 011.707 1.637 1.64 1.64 0 01-1.639 1.638 1.639 1.639 0 01-.068-3.275zm13.09.388a.75.75 0 00-.345 1.404l-.383 1.958h1.5l-.383-1.958a.75.75 0 00.384-.654.75.75 0 00-.773-.75zm2.218 1.391h3.421c-.01 1.758-.415 3.384-1.094 4.704-.744-.434-1.623-.755-2.577-.94a27.81 27.81 0 00.25-3.764zm3.556 0h2.095a7.805 7.805 0 01-2.28 5.47 5.825 5.825 0 00-.925-.696c.712-1.378 1.1-3.033 1.11-4.774zm-5.52 3.703a10.284 10.284 0 011.562.156 16.518 16.518 0 01-.357 1.791c-.275 1.045-.618 1.774-.982 2.114a7.972 7.972 0 01-.93 0c-.365-.34-.708-1.07-.983-2.114a16.519 16.519 0 01-.357-1.79 10.284 10.284 0 012.048-.157zm1.695.181c.94.184 1.803.5 2.533.926-.686 1.284-1.635 2.265-2.73 2.776a7.874 7.874 0 01-1.075.164c.344-.393.657-1.094.913-2.065a16.64 16.64 0 00.36-1.8zm-3.874 0a16.648 16.648 0 00.36 1.8c.254.973.567 1.674.912 2.066a7.873 7.873 0 01-1.075-.164c-1.096-.511-2.045-1.492-2.73-2.775.73-.428 1.593-.743 2.533-.927zm-2.652.997a8.16 8.16 0 00.506.825c.52.741 1.121 1.323 1.776 1.73a7.814 7.814 0 01-3.174-1.884 5.694 5.694 0 01.892-.67zm9.178 0a5.694 5.694 0 01.891.67 7.814 7.814 0 01-3.173 1.885c.654-.407 1.256-.989 1.775-1.73a8.16 8.16 0 00.507-.825z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/webcomponents-dot-org.svg b/assets/lib/simple-icons/icons/webcomponents-dot-org.svg
deleted file mode 100644
index eb14b05c..00000000
--- a/assets/lib/simple-icons/icons/webcomponents-dot-org.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>webcomponents.org icon</title><path d="M11.73 2.225l-.01.016H5.617l-5.618 9.738 5.618 9.736h12.799l.04.06 2.134-3.735.518-.893H21.1l.008-.014-.626-.75h.895l.006-.01.008.01 2.607-4.389-2.607-4.39-.003.005-.011-.019h-.945l.631-.764-2.607-4.569-.006.01-.024-.04H11.73zM9.106 6.824h6.189l-.529.764h-.024l2.398 4.015h.875l-.277.328.357.435h-.956l-2.398 4.015h.027l.523.764H9.073l-2.99-5.168 3.022-5.155z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/webcomponentsdotorg.svg b/assets/lib/simple-icons/icons/webcomponentsdotorg.svg
new file mode 100644
index 00000000..fad0f552
--- /dev/null
+++ b/assets/lib/simple-icons/icons/webcomponentsdotorg.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>webcomponents.org</title><path d="M11.731 2.225l-.01.016H5.618L0 11.979l5.618 9.736h12.8l.04.06 2.134-3.735.518-.893h-.008l.008-.014-.626-.75h.895l.006-.01.008.01L24 11.994l-2.607-4.39-.003.005-.011-.02h-.945l.63-.763-2.606-4.57-.006.01-.024-.04H11.73zM9.107 6.824h6.19l-.53.764h-.023l2.398 4.015h.875l-.277.328.357.435h-.956l-2.398 4.015h.027l.523.764H9.074l-2.99-5.168 3.022-5.155z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/webdriverio.svg b/assets/lib/simple-icons/icons/webdriverio.svg
new file mode 100644
index 00000000..9372ec11
--- /dev/null
+++ b/assets/lib/simple-icons/icons/webdriverio.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>WebdriverIO</title><path d="M1.875 0C0.836 0 0 0.836 0 1.875v20.25C0 23.164 0.836 24 1.875 24h20.25C23.164 24 24 23.164 24 22.125V1.875C24 0.836 23.164 0 22.125 0ZM2.25 6H3V18H2.25ZM9.335 6H10.125L5.29 18H4.499ZM16.125 6c3.314 0 6 2.686 6 6 0 3.314-2.686 6-6 6-3.314 0-6-2.686-6-6 0-3.314 2.686-6 6-6zm0 0.75c-2.899 0-5.25 2.351-5.25 5.25 0 2.899 2.351 5.25 5.25 5.25 2.899 0 5.25-2.351 5.25-5.25 0-2.899-2.351-5.25-5.25-5.25z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/webflow.svg b/assets/lib/simple-icons/icons/webflow.svg
new file mode 100644
index 00000000..2f16cc4b
--- /dev/null
+++ b/assets/lib/simple-icons/icons/webflow.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Webflow</title><path d="M17.802 8.56s-1.946 6.103-2.105 6.607a4778.8 4778.8 0 0 0-1.484-11.473c-3.316 0-5.089 2.36-6.026 4.851l-2.565 6.637c-.015-.476-.36-6.565-.36-6.565-.204-3.052-3-4.91-5.262-4.91l2.739 16.6c3.474-.015 5.347-2.361 6.328-4.852 0 0 2.09-5.398 2.176-5.643.015.23 1.5 10.494 1.5 10.494 3.488 0 5.362-2.202 6.37-4.606L24 3.708c-3.445 0-5.261 2.346-6.198 4.851Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/webgl.svg b/assets/lib/simple-icons/icons/webgl.svg
index 9c9bcb92..a7a40b12 100644
--- a/assets/lib/simple-icons/icons/webgl.svg
+++ b/assets/lib/simple-icons/icons/webgl.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>WebGL icon</title><path d="M18.928 14.179c-.214.09-.427.135-.643.135-.342 0-.65-.059-.923-.178a1.963 1.963 0 0 1-.69-.491c-.187-.209-.332-.453-.432-.735s-.149-.586-.149-.911c0-.335.05-.643.149-.93.1-.287.242-.536.429-.747a1.96 1.96 0 0 1 .69-.501 2.25 2.25 0 0 1 .923-.183c.23 0 .451.036.664.104.214.069.408.171.581.304s.316.299.427.496a1.7 1.7 0 0 1 .206.676h-.935c-.059-.249-.171-.437-.337-.562a.973.973 0 0 0-.607-.187c-.221 0-.408.043-.562.128s-.28.199-.375.344c-.095.145-.166.308-.209.491s-.066.372-.066.569c0 .187.021.37.066.548.043.178.114.337.209.479.095.142.221.256.375.342s.342.128.562.128c.325 0 .577-.083.754-.247.178-.164.28-.401.311-.714h-.987V11.8h1.872v2.413h-.624l-.1-.505a1.444 1.444 0 0 1-.579.471zm2.896-4.429v3.632H24v.828h-3.155V9.75h.979zM2.785 11.999c0-.709.343-1.376.948-1.962l1.109 4.221h.764l1.075-3.815 1.06 3.815h.766l1.321-4.856h-.86l-.861 3.725-1.039-3.726H6.28l-1.039 3.725-.84-3.632c1.489-1.025 3.868-1.69 6.548-1.69 2.512 0 4.764.529 6.261 1.445-1.632-1.535-4.565-2.612-7.915-2.614C4.161 6.635 0 9.036 0 11.999s4.161 5.367 9.293 5.367c3.338 0 6.261-1.075 7.9-2.6-1.497.911-3.741 1.428-6.244 1.428-4.51-.001-8.164-1.877-8.164-4.195zm9.194-.553a1.184 1.184 0 0 0-.444-.384 1.378 1.378 0 0 0-.622-.135c-.261 0-.496.047-.7.14a1.313 1.313 0 0 0-.489.387c-.244.311-.372.75-.372 1.269 0 .23.033.448.097.643a1.5 1.5 0 0 0 .285.515c.261.304.633.465 1.077.465.233 0 .422-.024.581-.074.138-.043.23-.1.306-.149a1.357 1.357 0 0 0 .444-.489c.09-.166.135-.323.145-.403l.007-.055h-.633l-.002.045c-.017.206-.287.574-.769.574-.688 0-.852-.498-.864-.937h2.306v-.05a3.15 3.15 0 0 0-.085-.766 1.84 1.84 0 0 0-.268-.596zm-1.139.05c.51 0 .783.275.833.84h-1.651c.025-.458.388-.84.818-.84zm4.678.415a1.575 1.575 0 0 0-.268-.515 1.25 1.25 0 0 0-.437-.346 1.36 1.36 0 0 0-.586-.126 1.141 1.141 0 0 0-.531.128 1.1 1.1 0 0 0-.346.28v-1.49h-.631v4.413h.6v-.301a.964.964 0 0 0 .211.206c.171.123.382.185.626.185.263 0 .501-.059.7-.176.178-.104.33-.254.448-.444a1.93 1.93 0 0 0 .235-.584 2.66 2.66 0 0 0 .069-.603 1.986 1.986 0 0 0-.09-.627zm-.567.717c0 .346-.069.636-.202.84a.682.682 0 0 1-.605.325c-.377 0-.819-.263-.819-1.008 0-.356.045-.631.135-.84.13-.301.351-.446.671-.446.342 0 .572.133.7.41.106.227.12.505.12.719z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>WebGL</title><path d="M18.928 14.179c-.214.09-.427.135-.643.135-.342 0-.65-.059-.923-.178a1.963 1.963 0 0 1-.69-.491c-.187-.209-.332-.453-.432-.735s-.149-.586-.149-.911c0-.335.05-.643.149-.93.1-.287.242-.536.429-.747a1.96 1.96 0 0 1 .69-.501 2.25 2.25 0 0 1 .923-.183c.23 0 .451.036.664.104.214.069.408.171.581.304s.316.299.427.496a1.7 1.7 0 0 1 .206.676h-.935c-.059-.249-.171-.437-.337-.562a.973.973 0 0 0-.607-.187c-.221 0-.408.043-.562.128s-.28.199-.375.344c-.095.145-.166.308-.209.491s-.066.372-.066.569c0 .187.021.37.066.548.043.178.114.337.209.479.095.142.221.256.375.342s.342.128.562.128c.325 0 .577-.083.754-.247.178-.164.28-.401.311-.714h-.987V11.8h1.872v2.413h-.624l-.1-.505a1.444 1.444 0 0 1-.579.471zm2.896-4.429v3.632H24v.828h-3.155V9.75h.979zM2.785 11.999c0-.709.343-1.376.948-1.962l1.109 4.221h.764l1.075-3.815 1.06 3.815h.766l1.321-4.856h-.86l-.861 3.725-1.039-3.726H6.28l-1.039 3.725-.84-3.632c1.489-1.025 3.868-1.69 6.548-1.69 2.512 0 4.764.529 6.261 1.445-1.632-1.535-4.565-2.612-7.915-2.614C4.161 6.635 0 9.036 0 11.999s4.161 5.367 9.293 5.367c3.338 0 6.261-1.075 7.9-2.6-1.497.911-3.741 1.428-6.244 1.428-4.51-.001-8.164-1.877-8.164-4.195zm9.194-.553a1.184 1.184 0 0 0-.444-.384 1.378 1.378 0 0 0-.622-.135c-.261 0-.496.047-.7.14a1.313 1.313 0 0 0-.489.387c-.244.311-.372.75-.372 1.269 0 .23.033.448.097.643a1.5 1.5 0 0 0 .285.515c.261.304.633.465 1.077.465.233 0 .422-.024.581-.074.138-.043.23-.1.306-.149a1.357 1.357 0 0 0 .444-.489c.09-.166.135-.323.145-.403l.007-.055h-.633l-.002.045c-.017.206-.287.574-.769.574-.688 0-.852-.498-.864-.937h2.306v-.05a3.15 3.15 0 0 0-.085-.766 1.84 1.84 0 0 0-.268-.596zm-1.139.05c.51 0 .783.275.833.84h-1.651c.025-.458.388-.84.818-.84zm4.678.415a1.575 1.575 0 0 0-.268-.515 1.25 1.25 0 0 0-.437-.346 1.36 1.36 0 0 0-.586-.126 1.141 1.141 0 0 0-.531.128 1.1 1.1 0 0 0-.346.28v-1.49h-.631v4.413h.6v-.301a.964.964 0 0 0 .211.206c.171.123.382.185.626.185.263 0 .501-.059.7-.176.178-.104.33-.254.448-.444a1.93 1.93 0 0 0 .235-.584 2.66 2.66 0 0 0 .069-.603 1.986 1.986 0 0 0-.09-.627zm-.567.717c0 .346-.069.636-.202.84a.682.682 0 0 1-.605.325c-.377 0-.819-.263-.819-1.008 0-.356.045-.631.135-.84.13-.301.351-.446.671-.446.342 0 .572.133.7.41.106.227.12.505.12.719z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/webhint.svg b/assets/lib/simple-icons/icons/webhint.svg
new file mode 100644
index 00000000..514fe904
--- /dev/null
+++ b/assets/lib/simple-icons/icons/webhint.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>webhint</title><path d="M12 0C5.335 0 0 5.334 0 12c0 6.667 5.334 12 12 12 6.667 0 12-5.333 12-12-.06-6.666-5.393-12-12-12zm0 1.333c5.846.06 10.552 4.82 10.546 10.667 0 5.818-4.727 10.606-10.606 10.606S1.394 17.817 1.394 11.939C1.394 6.062 6.174 1.333 12 1.333zm7.334 5.273l-2.667 1.576c-.06.06-.122.06-.182.12a.843.843 0 000 1.152c.12.122.243.183.364.183.303.06.605 0 .787-.183.06-.06.122-.121.183-.242l.363-.727zM13.516 8c-4.121 0-4.788 1.94-4.788 4.364.06.606 0 1.212-.303 1.758-.303.545-.91.908-1.516.847-.242 0-1.151-.181-1.212-.423h.121c.97 0 1.758-.788 1.758-1.819v-.485h-.849c-.606 0-1.151.304-1.515.788a2.152 2.152 0 00-1.576-.726h-.848v.363c0 1.03.849 1.879 1.94 1.879h.303c0 .606.848 3.03 7.09 3.03 2.425 0 6.061-.425 6.061-5.03-.06-.789-.303-1.637-.727-2.303-.182.06-.303.06-.485.06a1.344 1.344 0 01-1.333-1.333c0-.121 0-.303.06-.425A3.565 3.565 0 0013.516 8z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/weblate.svg b/assets/lib/simple-icons/icons/weblate.svg
new file mode 100644
index 00000000..abab5a5b
--- /dev/null
+++ b/assets/lib/simple-icons/icons/weblate.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Weblate</title><path d="M9.662 3.809c-1.875 1.19-2.81 3.515-2.83 5.795-.014 2.628.666 5.258 1.988 7.305.936 1.46 2.238 2.715 3.836 3.412a6.942 6.942 0 005.647-.07c1.997-.927 3.523-2.73 4.463-4.785 1.606-3.518 1.643-7.724.12-11.295-1.146.458-2.166-.271-2.166-.271s.003 1.122-1.083 1.685c1.115 2.612 1.088 5.717-.03 8.263-.538 1.225-1.358 2.365-2.498 3.01-.917.52-2.04.625-3.052.184-1.342-.585-2.293-1.864-2.89-3.254-.466-1.067-.782-2.447-.802-3.878-.037-1.724.728-3.193 1.635-3.218.622-.024 1.427.918 1.598 2.435.158 1.543-.177 3.72-1.174 5.49.677 1.085 1.77 1.98 2.951 1.974 1.386-2.338 1.827-4.911 1.793-6.987-.02-2.28-.955-4.603-2.83-5.795-1.437-.907-3.173-.948-4.676 0zM3.278 3.9s-1.018.73-2.163.27c-1.524 3.573-1.488 7.778.12 11.296.94 2.056 2.465 3.858 4.462 4.785a6.95 6.95 0 005.523.124 9.12 9.12 0 01-1.75-1.455 11.18 11.18 0 01-1.267-1.628c-.768-.08-1.498-.482-2.003-.913-1.447-1.213-2.453-3.478-2.632-5.9-.12-1.635.14-3.354.795-4.894C3.276 5.022 3.278 3.9 3.278 3.9z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/webmin.svg b/assets/lib/simple-icons/icons/webmin.svg
index c3348cd3..e54572b5 100644
--- a/assets/lib/simple-icons/icons/webmin.svg
+++ b/assets/lib/simple-icons/icons/webmin.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Webmin icon</title><path d="M9.3 0C7.75.006 6.64 1.157 6.798 3.006c.102 1.227.209 2.473.313 3.729-1.08.455-2.218.934-3.428 1.446-1.255.536-2.123 1.609-2.457 2.885-.34 1.3-.135 2.808.723 4.143.763 1.195 1.856 2.006 3.255 2.445-.08 1.092.03 2.08.34 2.955.138.389.316.755.533 1.098.798 1.269 1.978 2.029 3.183 2.235a3.783 3.783 0 0 0 3.294-.998c.98-.945 1.907-1.838 2.79-2.684 1.047.63 2.056 1.235 3.038 1.827 1.604.957 3.243-.084 3.63-2.115.162-.847.09-1.792-.21-2.862.57-.351.925-.901 1.066-1.671.305-1.634-.503-3.782-1.827-4.88-.702-.582-1.427-1.177-2.164-1.783l-.005-.023c-.186-1.05-.367-2.08-.548-3.09-.306-1.724-1.799-3.538-3.374-4.04-.722-.23-1.393-.158-2.035.225-.779-.824-1.593-1.38-2.48-1.664A3.682 3.682 0 0 0 9.301 0zm1.019 2.479c.12-.003.25.012.381.048.467.125.912.49 1.155.932.198.368.29.67.37 1.298l.404 3.143c.013.099.027.195.038.293.115.889.644 1.528 1.33 1.619.659.087 1.01-.43.89-1.26a12.25 12.25 0 0 0-.038-.278l-.442-3.005c-.063-.425-.084-.75-.05-.96.052-.465.422-.707.896-.579.479.131.927.572 1.134 1.097.106.266.154.473.236.964.157.941.312 1.89.472 2.868.013.087.028.174.039.267.019.09.045.169.068.25l.002.014.001.002.023.084v-.002c0-.004 0-.007-.002-.01l.003.007v.003c.099.374.344.746.706 1.03.065.052.139.103.205.16.73.573 1.442 1.14 2.141 1.686.421.33.573.484.74.717.269.38.382.934.287 1.359-.087.393-.341.627-.658.59-.26-.031-.48-.137-.924-.465-.734-.55-1.484-1.112-2.26-1.684-.068-.048-.144-.1-.213-.152-.646-.476-1.208-.385-1.424.265-.222.666.09 1.449.754 1.914.072.05.153.107.223.158.81.567 1.605 1.12 2.38 1.66.329.229.573.444.735.638.357.409.527 1.08.404 1.642-.132.593-.514.902-.978.796-.235-.05-.411-.144-.832-.417-.817-.53-1.657-1.079-2.523-1.637-.08-.05-.16-.104-.237-.16-.273-.166-.537-.242-.768-.233h-.002c-.26-.017-.531.078-.792.286-.072.06-.146.117-.213.18-.809.666-1.647 1.375-2.535 2.122-.48.4-.696.557-1.017.67-.645.246-1.358-.03-1.804-.739-.421-.692-.404-1.589.032-2.154.185-.252.498-.54.93-.846.94-.672 1.83-1.305 2.676-1.912.077-.052.152-.104.228-.159.641-.455.764-1.26.312-2.011-.44-.75-1.17-.976-1.86-.559a5.307 5.307 0 0 0-.235.146c-.895.549-1.834 1.128-2.824 1.739-.638.384-.976.509-1.452.531-.59.03-1.205-.332-1.564-.904-.407-.636-.421-1.427-.03-1.918.22-.288.455-.463 1.13-.809 1.043-.54 2.045-1.048 2.995-1.525.082-.05.163-.084.247-.125.058-.029.112-.063.159-.097.425-.188.632-.657.566-1.293-.012-.107-.02-.21-.037-.312a375.257 375.257 0 0 0-.351-3.316c-.07-.66-.063-.892.021-1.154.1-.313.39-.493.752-.503zM7.11 6.736l.002.026a.022.022 0 0 1-.003-.005v-.018l.001-.002zm.004.043l.006.087c-.003-.026-.005-.051-.01-.08 0-.003.003-.005.004-.008zm.01.136l.003.025h-.002v-.015c0-.003.002-.005 0-.008v-.001zm.005.04v.012c-.001-.003-.003-.005-.003-.008.002 0 .002-.002.003-.004zm10.1 2.322l.002.012c0 .002 0 .004.003.007l-.006-.018zm.005.019c.005.015.008.034.013.05l-.01-.044a.011.011 0 0 1-.003-.007z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Webmin</title><path d="M9.3006 0c-1.5504.0058-2.6602 1.1575-2.503 3.0064.1018 1.2276.2082 2.4735.3125 3.7292-1.0796.4547-2.2182.9333-3.4283 1.4455-1.2547.5358-2.1224 1.6093-2.4566 2.8852-.3401 1.3009-.1354 2.808.7228 4.143.7636 1.1953 1.8562 2.0058 3.2547 2.4454-.0804 1.0912.0302 2.0788.3407 2.954a5.464 5.464 0 0 0 .5328 1.0981c.798 1.2684 1.9783 2.029 3.183 2.2356 1.184.2028 2.3797-.13 3.294-.9992.98-.9452 1.9066-1.8373 2.7905-2.6834 1.0466.6293 2.0551 1.2355 3.0367 1.8269 1.6047.957 3.2437-.0836 3.6308-2.1144.1616-.8468.0895-1.7933-.2113-2.863.571-.3511.926-.901 1.0664-1.671.3057-1.6334-.5026-3.7813-1.8262-4.8797a944.4632 944.4632 0 0 0-2.166-1.7848c-.0034-.0188-.371-2.1056-.5514-3.1098-.306-1.7243-1.7984-3.5393-3.3736-4.0403-.7224-.2305-1.3943-.1586-2.036.2239-.7784-.8241-1.5919-1.379-2.4788-1.6628C10.0398.0586 9.6584-.0013 9.3006 0zm1.0184 2.4795a1.322 1.322 0 0 1 .3814.0473c.4661.1252.9114.4903 1.1543.9326.1987.3678.29.6704.3703 1.2978.1317 1.03.2665 2.0738.4035 3.143.0136.0984.027.1947.0384.2927.1154.8888.644 1.5284 1.3295 1.6192.6596.0878 1.0102-.4298.8898-1.2608a12.1931 12.1931 0 0 0-.0377-.2763 2387.9439 2387.9439 0 0 0-.4412-3.0057c-.0635-.425-.0843-.75-.0495-.96.0511-.4654.4213-.7077.895-.5794.4787.1313.9267.5723 1.1337 1.0982.1067.266.1547.4722.2365.9637.157.941.3118 1.89.4722 2.8674.1177.638.1772 1.202 1.0443 1.8048.7299.5736 1.442 1.1397 2.1417 1.6864.4207.3311.5725.4842.739.7176.2694.3795.382.933.2875 1.3576-.087.3928-.341.628-.6585.5905-.2603-.031-.4792-.1375-.9238-.4648-.7333-.5498-1.4835-1.113-2.2592-1.6843-.0681-.048-.144-.1008-.2136-.1522-.6455-.4757-1.2088-.384-1.424.266-.223.666.0904 1.448.7545 1.9134.0715.0492.1528.1067.2224.1574.8094.5672 1.6055 1.1207 2.3804 1.6599.3285.2293.573.444.7346.6377.3572.4094.5276 1.0814.4043 1.6429-.1325.593-.5142.9019-.9785.796-.2342-.05-.4106-.1448-.8314-.4176-.817-.5301-1.657-1.0785-2.523-1.637a5.0836 5.0836 0 0 1-.2373-.1589c-.2724-.1672-.5363-.2426-.7678-.2335h-.0022c-.2596-.017-.5308.0771-.7915.286-.0727.0594-.1459.1171-.2136.181-.8083.6649-1.6461 1.3742-2.5342 2.121-.4805.4008-.6964.5576-1.0169.6704-.6459.2463-1.359-.0303-1.8054-.7398-.4212-.692-.4027-1.5886.0332-2.1542.185-.2517.498-.539.9297-.8448.9396-.672 1.83-1.3056 2.676-1.9126a10.921 10.921 0 0 0 .2277-.1581c.6417-.4552.764-1.2606.3119-2.0117-.4409-.7492-1.1696-.976-1.861-.5587a5.3786 5.3786 0 0 0-.2335.1456c-.8948.549-1.834 1.1279-2.8238 1.739-.6383.3848-.9758.5083-1.4522.5306-.5892.0302-1.2047-.3318-1.5638-.9031-.4068-.6365-.4212-1.4274-.0303-1.9178.2194-.2883.455-.4634 1.1292-.8092a274.597 274.597 0 0 1 2.996-1.5261c.0814-.0492.1625-.083.2461-.1242a1.0729 1.0729 0 0 0 .1597-.0976c.4253-.1876.6323-.6568.566-1.2933-.0117-.1063-.019-.209-.0369-.311a375.454 375.454 0 0 0-.351-3.3161c-.0693-.66-.0626-.8925.0214-1.1544.1-.3124.39-.4922.7516-.5025zM7.1101 6.737l.0023.0252c-.0009-.0012-.0016-.001-.003-.0045v-.0051a.236.236 0 0 0-.0007-.0133s.001-.0013.0015-.0023zm.003.0414c.0025.0304.0056.0598.0081.0902-.0034-.0271-.0064-.0524-.011-.0828 0-.0016.0018-.0047.0029-.0074zm.0118.136l.0023.0251h-.0023V6.924c0-.0026.002-.005-.0007-.0081 0 0 .0006-.001.0007-.0015zm.0037.0414c.0005.0052.0003.0103.0008.0155-.0002-.0011-.0008-.0026-.0008-.0037-.0007-.0027-.003-.0047-.003-.0074.0027-.0012.0027-.0028.003-.0044z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/webmoney.svg b/assets/lib/simple-icons/icons/webmoney.svg
index a3c91c62..ed71daa1 100644
--- a/assets/lib/simple-icons/icons/webmoney.svg
+++ b/assets/lib/simple-icons/icons/webmoney.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>WebMoney icon</title><path d="M11.943.1825c1.8723 0 3.6538.429 5.2524 1.1964.2507.1131.503.2485.7529.384l-1.0961.971-1.6433-1.6933-2.8315 2.483L10.71 1.74 5.5032 6.368l3.3336 3.6347-1.3014 1.1285 3.2889 3.6346-1.3015 1.128 4.7045 5.1698 2.7844-2.5285 2.4217 2.7097c-.48.3613-1.0052.7232-1.5754 1.0387a12.0418 12.0418 0 0 1-5.892 1.534C5.3657 23.8175 0 18.5135 0 11.9899-.0231 5.5104 5.3435.1825 11.943.1825zM9.7502 11.267l2.8546-2.5285 2.5582 2.8218-2.8552 2.5283zm2.033 4.8764l2.8314-2.551 2.5807 2.8216-2.8548 2.5286zM7.719 6.4587l2.8537-2.5285 2.5577 2.8217-2.8548 2.5285zm5.2284-1.355l2.124-1.8961L16.99 5.307l-2.124 1.9186zm3.7912 8.6914l2.1232-1.8963 1.9186 2.1215-2.124 1.8975zm1.8723 4.267l2.124-1.8966 1.9171 2.0995-2.1232 1.9183zm.868-9.7527l1.4156-1.2643 1.2784 1.4002-1.4155 1.2638zM17.652 4.133l1.4158-1.2864 1.2793 1.422-1.4168 1.2641zm3.6308 8.3531l1.4156-1.2642L24 12.6216l-1.4381 1.2639zm-6.3711-3.138l2.124-1.8963 1.9178 2.099-2.1231 1.8967Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>WebMoney</title><path d="M11.943.1825c1.8723 0 3.6538.429 5.2524 1.1964.2507.1131.503.2485.7529.384l-1.0961.971-1.6433-1.6933-2.8315 2.483L10.71 1.74 5.5032 6.368l3.3336 3.6347-1.3014 1.1285 3.2889 3.6346-1.3015 1.128 4.7045 5.1698 2.7844-2.5285 2.4217 2.7097c-.48.3613-1.0052.7232-1.5754 1.0387a12.0418 12.0418 0 0 1-5.892 1.534C5.3657 23.8175 0 18.5135 0 11.9899-.0231 5.5104 5.3435.1825 11.943.1825zM9.7502 11.267l2.8546-2.5285 2.5582 2.8218-2.8552 2.5283zm2.033 4.8764l2.8314-2.551 2.5807 2.8216-2.8548 2.5286zM7.719 6.4587l2.8537-2.5285 2.5577 2.8217-2.8548 2.5285zm5.2284-1.355l2.124-1.8961L16.99 5.307l-2.124 1.9186zm3.7912 8.6914l2.1232-1.8963 1.9186 2.1215-2.124 1.8975zm1.8723 4.267l2.124-1.8966 1.9171 2.0995-2.1232 1.9183zm.868-9.7527l1.4156-1.2643 1.2784 1.4002-1.4155 1.2638zM17.652 4.133l1.4158-1.2864 1.2793 1.422-1.4168 1.2641zm3.6308 8.3531l1.4156-1.2642L24 12.6216l-1.4381 1.2639zm-6.3711-3.138l2.124-1.8963 1.9178 2.099-2.1231 1.8967Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/webpack.svg b/assets/lib/simple-icons/icons/webpack.svg
index 14b857fd..754217d3 100644
--- a/assets/lib/simple-icons/icons/webpack.svg
+++ b/assets/lib/simple-icons/icons/webpack.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Webpack icon</title><path d="M21.0157 18.1202L12.351 23v-3.8007l5.3986-2.9567 3.266 1.8776zm.5927-.5344V7.3805l-3.1708 1.822v6.5593l3.1708 1.824zm-18.6827.5344L11.5904 23v-3.8007l-5.3986-2.9567-3.266 1.8776zm-.5927-.5344V7.3805l3.1707 1.822v6.5593l-3.1707 1.824zm.371-10.8656l8.8864-5.0056v3.6748L5.8974 8.507l-.0434.0248-3.15-1.8116zm18.5335 0L12.351 1.7146v3.6748l5.693 3.1177.0434.0248 3.15-1.8116zm-9.647 11.6146l-5.3262-2.9155V9.642l5.326 3.062v5.6308zm.7605 0l5.326-2.9155V9.642l-5.326 3.062v5.6308zM6.625 8.9734l5.3467-2.928 5.3468 2.928-5.3468 3.0744L6.625 8.9734z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Webpack</title><path d="M22.1987 18.498l-9.7699 5.5022v-4.2855l6.0872-3.3338 3.6826 2.117zm.6683-.6026V6.3884l-3.5752 2.0544v7.396zm-21.0657.6026l9.7699 5.5022v-4.2855L5.484 16.3809l-3.6826 2.117zm-.6683-.6026V6.3884l3.5751 2.0544v7.396zm.4183-12.2515l10.0199-5.644v4.1434L5.152 7.6586l-.0489.028zm20.8975 0l-10.02-5.644v4.1434l6.4192 3.5154.0489.028 3.5518-2.0427zm-10.8775 13.096l-6.0056-3.2873V8.9384l6.0054 3.4525v6.349zm.8575 0l6.0053-3.2873V8.9384l-6.0053 3.4525zM5.9724 8.1845l6.0287-3.3015L18.03 8.1845l-6.0288 3.4665z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/webrtc.svg b/assets/lib/simple-icons/icons/webrtc.svg
index 701b9bb4..b4a95b6d 100644
--- a/assets/lib/simple-icons/icons/webrtc.svg
+++ b/assets/lib/simple-icons/icons/webrtc.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>WebRTC icon</title><path d="M11.9998.3598c-2.8272 0-5.1456 2.1733-5.3793 4.94a5.4117 5.4117 0 00-1.2207-.1401C2.418 5.1597 0 7.5779 0 10.5603c0 2.2203 1.341 4.1274 3.2568 4.957a5.3734 5.3734 0 00-.7372 2.7227c0 2.9823 2.4175 5.4002 5.4002 5.4002 1.6627 0 3.1492-.7522 4.1397-1.934.9906 1.1818 2.4773 1.934 4.1398 1.934 2.983 0 5.4004-2.418 5.4004-5.4002 0-.9719-.258-1.883-.7073-2.6708C22.7283 14.7068 24 12.8418 24 10.6795c0-2.9823-2.4175-5.4006-5.3998-5.4006-.417 0-.8223.049-1.2121.1384C17.2112 2.5949 14.867.3598 11.9998.3598zm-5.717 6.8683h10.5924c.7458 0 1.352.605 1.352 1.3487v7.6463c0 .7438-.6062 1.3482-1.352 1.3482h-3.6085l-7.24 3.5491 1.1008-3.5491h-.8447c-.7458 0-1.3522-.6044-1.3522-1.3482V8.5768c0-.7438.6064-1.3487 1.3522-1.3487Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>WebRTC</title><path d="M11.9998.3598c-2.8272 0-5.1456 2.1733-5.3793 4.94a5.4117 5.4117 0 00-1.2207-.1401C2.418 5.1597 0 7.5779 0 10.5603c0 2.2203 1.341 4.1274 3.2568 4.957a5.3734 5.3734 0 00-.7372 2.7227c0 2.9823 2.4175 5.4002 5.4002 5.4002 1.6627 0 3.1492-.7522 4.1397-1.934.9906 1.1818 2.4773 1.934 4.1398 1.934 2.983 0 5.4004-2.418 5.4004-5.4002 0-.9719-.258-1.883-.7073-2.6708C22.7283 14.7068 24 12.8418 24 10.6795c0-2.9823-2.4175-5.4006-5.3998-5.4006-.417 0-.8223.049-1.2121.1384C17.2112 2.5949 14.867.3598 11.9998.3598zm-5.717 6.8683h10.5924c.7458 0 1.352.605 1.352 1.3487v7.6463c0 .7438-.6062 1.3482-1.352 1.3482h-3.6085l-7.24 3.5491 1.1008-3.5491h-.8447c-.7458 0-1.3522-.6044-1.3522-1.3482V8.5768c0-.7438.6064-1.3487 1.3522-1.3487Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/webstorm.svg b/assets/lib/simple-icons/icons/webstorm.svg
index 9a3c0434..df4670c5 100644
--- a/assets/lib/simple-icons/icons/webstorm.svg
+++ b/assets/lib/simple-icons/icons/webstorm.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>WebStorm icon</title><path d="M0 0v24h24V0H0zm17.889 2.889c1.444 0 2.667.444 3.667 1.278l-1.111 1.667c-.889-.611-1.722-1-2.556-1s-1.278.389-1.278.889v.056c0 .667.444.889 2.111 1.333 2 .556 3.111 1.278 3.111 3v.056c0 2-1.5 3.111-3.611 3.111-1.5-.056-3-.611-4.167-1.667l1.278-1.556c.889.722 1.833 1.222 2.944 1.222.889 0 1.389-.333 1.389-.944v-.056c0-.556-.333-.833-2-1.278-2-.5-3.222-1.056-3.222-3.056v-.056c0-1.833 1.444-3 3.444-3zm-16.111.222h2.278l1.5 5.778 1.722-5.778h1.667l1.667 5.778 1.5-5.778h2.333l-2.833 9.944H9.723L8.112 7.277l-1.667 5.778H4.612L1.779 3.111zm.5 16.389h9V21h-9v-1.5z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>WebStorm</title><path d="M0 0v24h24V0H0zm17.889 2.889c1.444 0 2.667.444 3.667 1.278l-1.111 1.667c-.889-.611-1.722-1-2.556-1s-1.278.389-1.278.889v.056c0 .667.444.889 2.111 1.333 2 .556 3.111 1.278 3.111 3v.056c0 2-1.5 3.111-3.611 3.111-1.5-.056-3-.611-4.167-1.667l1.278-1.556c.889.722 1.833 1.222 2.944 1.222.889 0 1.389-.333 1.389-.944v-.056c0-.556-.333-.833-2-1.278-2-.5-3.222-1.056-3.222-3.056v-.056c0-1.833 1.444-3 3.444-3zm-16.111.222h2.278l1.5 5.778 1.722-5.778h1.667l1.667 5.778 1.5-5.778h2.333l-2.833 9.944H9.723L8.112 7.277l-1.667 5.778H4.612L1.779 3.111zm.5 16.389h9V21h-9v-1.5z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/webtoon.svg b/assets/lib/simple-icons/icons/webtoon.svg
new file mode 100644
index 00000000..13804fe0
--- /dev/null
+++ b/assets/lib/simple-icons/icons/webtoon.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>WEBTOON</title><path d="M15.023 15.26c.695 0 1.014-.404 1.014-1.051 0-.551-.308-1.01-.984-1.01-.58 0-.912.404-.912 1.016 0 .543.32 1.045.882 1.045zM10.135 15.447c.764 0 1.113-.443 1.113-1.154 0-.604-.338-1.109-1.082-1.109-.637 0-1.002.445-1.002 1.115 0 .597.352 1.148.971 1.148zM24 10.201l-3.15.029.83-9.686L1.958 3.605l1.686 6.248H0l3.734 11.488 8.713-1.283v3.396l10.113-4.641L24 10.201zm-9.104-3.594c0-.049.039-.092.088-.094l1.879-.125.446-.029c.524-.035 1.634.063 1.634 1.236 0 .83-.619 1.184-.619 1.184s.75.189.707 1.092c0 1.602-1.943 1.389-1.943 1.389l-.225-.006-1.908-.053a.089.089 0 0 1-.086-.09l.027-4.504zm-3.675.243c0-.047.039-.09.088-.092l3.064-.203a.08.08 0 0 1 .087.08v.943c0 .049-.039.09-.087.092l-1.9.08a.094.094 0 0 0-.088.09l-.005.394a.083.083 0 0 0 .086.084l1.646-.066a.082.082 0 0 1 .086.084l-.02 1.012a.089.089 0 0 1-.089.086h-1.63a.089.089 0 0 0-.088.088v.416c0 .047.039.088.088.088l1.87.033a.09.09 0 0 1 .087.09v.951a.084.084 0 0 1-.087.084l-3.063-.123a.09.09 0 0 1-.087-.09l.042-4.121zm-6.01.312l.975-.064a.101.101 0 0 1 .105.08l.458 2.205c.01.047.027.047.039 0l.576-2.281a.132.132 0 0 1 .108-.09l.921-.061a.108.108 0 0 1 .109.078l.564 2.342c.012.047.029.047.041 0l.6-2.424a.131.131 0 0 1 .108-.092l.996-.064c.048-.004.077.031.065.078l-1.09 4.104a.113.113 0 0 1-.109.082l-1.121-.031a.12.12 0 0 1-.109-.086l-.535-1.965c-.012-.047-.033-.047-.045 0l-.522 1.934a.12.12 0 0 1-.11.082l-1.109-.031a.123.123 0 0 1-.108-.088l-.873-3.618c-.011-.047.019-.088.066-.09zm-.288 9.623v-3.561a.089.089 0 0 0-.087-.088l-1.252-.029a.095.095 0 0 1-.091-.09l-.046-1.125a.082.082 0 0 1 .083-.086l4.047.096c.048 0 .087.041.085.088l-.022 1.088a.093.093 0 0 1-.089.088l-1.139.004a.09.09 0 0 0-.087.088v3.447c0 .049-.039.09-.087.092l-1.227.07a.08.08 0 0 1-.088-.082zm2.834-2.379c0-1.918 1.321-2.482 2.416-2.482s2.339.73 2.339 2.316c0 1.9-1.383 2.482-2.416 2.482-1.033.001-2.339-.724-2.339-2.316zm5.139-.115c0-1.746 1.166-2.238 2.162-2.238s2.129.664 2.129 2.107c0 1.729-1.259 2.26-2.198 2.26s-2.093-.68-2.093-2.129zm7.259 1.711a.175.175 0 0 1-.139-.064l-1.187-1.631c-.029-.039-.053-.031-.053.018v1.67c0 .047-.039.09-.086.092l-1.052.061a.082.082 0 0 1-.087-.082l.039-3.842c0-.047.039-.086.088-.084l.881.02a.2.2 0 0 1 .137.074l1.293 1.902c.027.041.051.033.051-.014l.032-1.846a.087.087 0 0 1 .089-.086l.963.029c.047 0 .085.041.083.09l-.138 3.555a.097.097 0 0 1-.091.092l-.823.046zM16.258 8.23l.724-.014s.47.018.47-.434c0-.357-.411-.33-.411-.33l-.782.008a.09.09 0 0 0-.088.088v.598a.083.083 0 0 0 .087.084zM16.229 10.191h.99c.024 0 .35-.051.35-.404 0-.293-.229-.402-.441-.398l-.898.029a.089.089 0 0 0-.087.09v.596a.086.086 0 0 0 .086.087z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/wechat.svg b/assets/lib/simple-icons/icons/wechat.svg
index 3f23e0e5..c3eb6c4a 100644
--- a/assets/lib/simple-icons/icons/wechat.svg
+++ b/assets/lib/simple-icons/icons/wechat.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>WeChat icon</title><path d="M23.541 12.748c-.609-1.38-1.758-2.476-3.092-3.151-2.354-1.192-5.281-1.185-7.629.03-1.631.837-2.993 2.337-3.379 4.162-.318 1.344-.033 2.791.68 3.961 1.061 1.762 2.979 2.887 4.971 3.248 1.443.293 2.936.119 4.338-.285.842.326 1.592.854 2.408 1.246-.211-.707-.436-1.406-.676-2.102.916-.65 1.746-1.461 2.244-2.479.744-1.415.789-3.171.135-4.63zm-9.924-9.466c-2.495-1.404-5.602-1.615-8.286-.645-1.764.635-3.36 1.815-4.346 3.42-.895 1.45-1.23 3.258-.799 4.917.433 1.84 1.711 3.383 3.262 4.413-.3.85-.585 1.699-.855 2.555.975-.51 1.95-1.043 2.926-1.561 1.17.375 2.415.559 3.66.518-.33-.943-.405-1.965-.255-2.951.225-1.371.975-2.625 1.994-3.554 1.726-1.615 4.171-2.296 6.496-2.131-.436-2.135-1.936-3.939-3.824-4.98h.027zm1.733 9.989c-.209.652-1.156.848-1.615.352-.506-.459-.309-1.418.355-1.623.734-.31 1.582.537 1.26 1.271zm4.795.092c-.256.586-1.141.723-1.576.27-.209-.191-.27-.479-.344-.73.104-.458.42-.933.93-.955.705-.098 1.336.773.975 1.416h.015zM12.99 6.909c.008.961-1.275 1.561-1.995.909-.747-.535-.535-1.837.342-2.106.785-.315 1.713.344 1.651 1.185l.002.012zm-6.059.244c-.172.835-1.291 1.238-1.946.678-.759-.535-.546-1.861.345-2.131.873-.336 1.865.55 1.601 1.453z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>WeChat</title><path d="M8.691 2.188C3.891 2.188 0 5.476 0 9.53c0 2.212 1.17 4.203 3.002 5.55a.59.59 0 0 1 .213.665l-.39 1.48c-.019.07-.048.141-.048.213 0 .163.13.295.29.295a.326.326 0 0 0 .167-.054l1.903-1.114a.864.864 0 0 1 .717-.098 10.16 10.16 0 0 0 2.837.403c.276 0 .543-.027.811-.05-.857-2.578.157-4.972 1.932-6.446 1.703-1.415 3.882-1.98 5.853-1.838-.576-3.583-4.196-6.348-8.596-6.348zM5.785 5.991c.642 0 1.162.529 1.162 1.18a1.17 1.17 0 0 1-1.162 1.178A1.17 1.17 0 0 1 4.623 7.17c0-.651.52-1.18 1.162-1.18zm5.813 0c.642 0 1.162.529 1.162 1.18a1.17 1.17 0 0 1-1.162 1.178 1.17 1.17 0 0 1-1.162-1.178c0-.651.52-1.18 1.162-1.18zm5.34 2.867c-1.797-.052-3.746.512-5.28 1.786-1.72 1.428-2.687 3.72-1.78 6.22.942 2.453 3.666 4.229 6.884 4.229.826 0 1.622-.12 2.361-.336a.722.722 0 0 1 .598.082l1.584.926a.272.272 0 0 0 .14.047c.134 0 .24-.111.24-.247 0-.06-.023-.12-.038-.177l-.327-1.233a.582.582 0 0 1-.023-.156.49.49 0 0 1 .201-.398C23.024 18.48 24 16.82 24 14.98c0-3.21-2.931-5.837-6.656-6.088V8.89c-.135-.01-.27-.027-.407-.03zm-2.53 3.274c.535 0 .969.44.969.982a.976.976 0 0 1-.969.983.976.976 0 0 1-.969-.983c0-.542.434-.982.97-.982zm4.844 0c.535 0 .969.44.969.982a.976.976 0 0 1-.969.983.976.976 0 0 1-.969-.983c0-.542.434-.982.969-.982z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/wegame.svg b/assets/lib/simple-icons/icons/wegame.svg
new file mode 100644
index 00000000..1541cd13
--- /dev/null
+++ b/assets/lib/simple-icons/icons/wegame.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>WeGame</title><path d="M21.458 11.005c-.024-.179-.078-.632-.165-1.08a8.082 8.082 0 0 0-.255-1.006l-.005-.015a1.87 1.87 0 0 0-.151-.315 1.224 1.224 0 0 0-.317-.354 1.57 1.57 0 0 0-1.412-.138 2.029 2.029 0 0 0-.861 1.064c-.238.465-.475.93-.742 1.378a2.617 2.617 0 0 1-.572.7 1.33 1.33 0 0 1-.367.215c-.534.2-.91-.08-1.321-.403-.438-.342-.824-.744-1.274-1.073a1.851 1.851 0 0 0-.983-.43c-.637-.003-1.195.619-1.544 1.078-.195.258-.577.779-.775 1.033a3.403 3.403 0 0 1-.454.458 1.169 1.169 0 0 1-.196.138 1.101 1.101 0 0 1-.48.136 1.566 1.566 0 0 1-.869-.263 2.678 2.678 0 0 1-.288-.183l-.035-.027a.469.469 0 0 0-.734.428.392.392 0 0 0 .024.136c0 .003.003.005.004.008a.395.395 0 0 0 .093.14c.608.897 1.47 1.55 2.303 1.564a1.507 1.507 0 0 0 .635-.124c.646-.285 1.13-.903 1.67-1.334a1.314 1.314 0 0 1 .776-.33 1.038 1.038 0 0 1 .63.215 2.122 2.122 0 0 1 .189.144 8.916 8.916 0 0 1 .742.753 9.93 9.93 0 0 0 .9.85 2.53 2.53 0 0 0 1.146.56c.046.007.091.011.136.014a1.522 1.522 0 0 0 1.002-.314 4.176 4.176 0 0 0 .745-.689 6.13 6.13 0 0 0 .463-.664c.07-.112.143-.19.2-.308a5.769 5.769 0 0 1-.065.953 10.09 10.09 0 0 1-.212 1.288q-.062.253-.135.503-.116.397-.262.786a1.906 1.906 0 0 1-.072.188l-.003.007q-.088.23-.192.453a7.005 7.005 0 0 1-12.74-.01q-.106-.225-.195-.459l-.004-.009a10.91 10.91 0 0 1 .426-9.024 13.024 13.024 0 0 1 1.635-2.396 8.352 8.352 0 0 1 2.132-1.946c.03-.017.057-.037.086-.055a4.168 4.168 0 0 1 4.57 0l.086.055a11.285 11.285 0 0 1 1.795 1.588l.002.002.052.053a1.183 1.183 0 0 0 .296.212 1.36 1.36 0 0 0 1.493-.211 1.291 1.291 0 0 0 .137-1.672c-.041-.05-.083-.1-.121-.15a8.076 8.076 0 0 0-.722-.763A14.069 14.069 0 0 0 15.375.9a6.85 6.85 0 0 0-.118-.071A6.126 6.126 0 0 0 12.118 0a5.748 5.748 0 0 0-3.033.841 3.166 3.166 0 0 0-.117.071A12.178 12.178 0 0 0 6.003 3.39a.455.455 0 0 1-.024.025 15.477 15.477 0 0 0-3.578 9.8 16.626 16.626 0 0 0 .359 3.444 9.487 9.487 0 0 0 18.478.017l.028-.13a.097.097 0 0 0 .002-.012l.02-.103a15.856 15.856 0 0 0 .286-2.235q.026-.454.026-.91a18.254 18.254 0 0 0-.142-2.28z"/></svg>
diff --git a/assets/lib/simple-icons/icons/weightsandbiases.svg b/assets/lib/simple-icons/icons/weightsandbiases.svg
new file mode 100644
index 00000000..4f42a27c
--- /dev/null
+++ b/assets/lib/simple-icons/icons/weightsandbiases.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Weights &amp; Biases</title><path d="M2.48 0a1.55 1.55 0 1 0 0 3.1 1.55 1.55 0 0 0 0-3.1zm19.04 0a1.55 1.55 0 1 0 0 3.101 1.55 1.55 0 0 0 0-3.101zM12 2.295a1.55 1.55 0 1 0 0 3.1 1.55 1.55 0 0 0 0-3.1zM2.48 5.272a2.48 2.48 0 1 0 0 4.96 2.48 2.48 0 0 0 0-4.96zm19.04 0a2.48 2.48 0 1 0 0 4.96 2.48 2.48 0 0 0 0-4.96zM12 8.496a1.55 1.55 0 1 0 0 3.1 1.55 1.55 0 0 0 0-3.1zm-9.52 3.907a1.55 1.55 0 1 0 0 3.1 1.55 1.55 0 0 0 0-3.1zm19.04 0a1.55 1.55 0 1 0 0 3.102 1.55 1.55 0 0 0 0-3.102zM12 13.767a2.48 2.48 0 1 0 0 4.962 2.48 2.48 0 0 0 0-4.962zm-9.52 3.907a2.48 2.48 0 1 0 .001 4.962 2.48 2.48 0 0 0 0-4.962zm19.04.93a1.55 1.55 0 1 0 0 3.102 1.55 1.55 0 0 0 0-3.101zM12 20.9a1.55 1.55 0 1 0 0 3.1 1.55 1.55 0 0 0 0-3.1Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/welcometothejungle.svg b/assets/lib/simple-icons/icons/welcometothejungle.svg
new file mode 100644
index 00000000..3f0ad612
--- /dev/null
+++ b/assets/lib/simple-icons/icons/welcometothejungle.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Welcome to the Jungle</title><path d="M22.62 3.783c-1.115-1.811-4.355-2.604-6.713-.265-.132.135-.306.548.218 1.104 1.097 1.149 6.819 7.046 4.702 12.196-1.028 2.504-3.953 2.073-5.052-2.076a23.184 23.184 0 0 1-.473-9.367s.105-.394-.065-.52c-.117-.087-.305-.05-.547.33-.06.096-.048.076-.106.178l-.003.002c-1.622 2.688-3.272 5.874-4.049 7.07.38-1.803-.101-4.283-.85-6.359l-.142-.375c-.692-1.776-1.524-2.974-1.776-3.245-.03-.033-.105-.094-.353-.094H.398c-.49 0-.448.412-.293.561 1.862 2.178 7.289 10.343 4.773 18.355-.194.619.11.944.612.305 2.206-2.81 4.942-7.598 6.925-11.187-.437 1.245-.822 2.63-1.028 4.083-.435 3.064.487 5.37 1.162 6.58.345.619.803.998 1.988.824 6.045-.885 8.06-6.117 8.805-8.77 1.357-4.839.363-7.568-.722-9.33"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/wemo.svg b/assets/lib/simple-icons/icons/wemo.svg
index cfbda2c0..1d48fc65 100644
--- a/assets/lib/simple-icons/icons/wemo.svg
+++ b/assets/lib/simple-icons/icons/wemo.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>WEMO icon</title><path d="M4.3014 0C1.925 0 0 1.9254 0 4.302v15.3965C0 22.0728 1.925 24 4.3014 24H19.697c2.3757 0 4.3026-1.9272 4.3026-4.3015H24V4.3019C24 1.9258 22.0731 0 19.6974 0zm12.912 4.1665c2.0881 0 3.7885 1.621 3.7885 3.6134 0 .0947-.004.1877-.011.2799l-.0157.1756H14.651l.1142.3244c.3537.9944 1.337 1.6628 2.4478 1.6628.8293 0 1.6137-.383 2.0992-1.0237l.109-.1462.9896.6745-.12.1603c-.7109.9427-1.8618 1.5054-3.0775 1.5054-2.0907 0-3.7912-1.6207-3.7912-3.613 0-1.9924 1.7005-3.6134 3.7912-3.6134zm-13.9374.132h1.2095V8.729c0 .7302.5934 1.3236 1.324 1.3236.7298 0 1.3243-.5934 1.3243-1.3236V4.2986h1.2069v4.4303c0 .7302.5941 1.3236 1.3247 1.3236.7298 0 1.3236-.5934 1.3236-1.3236V4.2986h1.2095v4.4303c0 1.3964-1.136 2.5319-2.5331 2.5319-.648 0-1.2892-.26-1.7604-.7137l-.1683-.1624-.168.1624c-.4712.4537-1.112.7137-1.7592.7137-1.3971 0-2.5335-1.1355-2.5335-2.532zm13.9373 1.0248c-.987 0-1.8822.5172-2.3362 1.3484l-.1946.3586h5.0588l-.1946-.3586c-.4536-.8315-1.3478-1.3484-2.3334-1.3484zm-.0015 7.2326c2.0893 0 3.7895 1.6217 3.7895 3.6137 0 1.993-1.7002 3.6138-3.7895 3.6138-2.0903 0-3.789-1.621-3.789-3.6138 0-1.992 1.699-3.6137 3.789-3.6137zm-11.403.1328c.6482 0 1.2906.2597 1.7618.7134l.1668.1624.1687-.1624c.4719-.4537 1.1125-.7134 1.7593-.7134 1.396 0 2.5323 1.1363 2.5323 2.532v4.4303h-1.208v-4.4303c0-.7302-.5945-1.3247-1.324-1.3247-.7309 0-1.3243.5945-1.3243 1.3247v4.4303H7.1338v-4.4303c0-.7302-.5934-1.3247-1.325-1.3247-.7295 0-1.323.5945-1.323 1.3247v4.4303h-1.209v-4.4303c0-1.3953 1.1367-2.532 2.532-2.532zm11.403 1.0383c-1.422 0-2.579 1.096-2.579 2.443 0 1.3466 1.157 2.4423 2.579 2.4423 1.4224 0 2.5782-1.0957 2.5782-2.4423 0-1.347-1.1561-2.443-2.5782-2.443Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>WEMO</title><path d="M4.3014 0C1.925 0 0 1.9254 0 4.302v15.3965C0 22.0728 1.925 24 4.3014 24H19.697c2.3757 0 4.3026-1.9272 4.3026-4.3015H24V4.3019C24 1.9258 22.0731 0 19.6974 0zm12.912 4.1665c2.0881 0 3.7885 1.621 3.7885 3.6134 0 .0947-.004.1877-.011.2799l-.0157.1756H14.651l.1142.3244c.3537.9944 1.337 1.6628 2.4478 1.6628.8293 0 1.6137-.383 2.0992-1.0237l.109-.1462.9896.6745-.12.1603c-.7109.9427-1.8618 1.5054-3.0775 1.5054-2.0907 0-3.7912-1.6207-3.7912-3.613 0-1.9924 1.7005-3.6134 3.7912-3.6134zm-13.9374.132h1.2095V8.729c0 .7302.5934 1.3236 1.324 1.3236.7298 0 1.3243-.5934 1.3243-1.3236V4.2986h1.2069v4.4303c0 .7302.5941 1.3236 1.3247 1.3236.7298 0 1.3236-.5934 1.3236-1.3236V4.2986h1.2095v4.4303c0 1.3964-1.136 2.5319-2.5331 2.5319-.648 0-1.2892-.26-1.7604-.7137l-.1683-.1624-.168.1624c-.4712.4537-1.112.7137-1.7592.7137-1.3971 0-2.5335-1.1355-2.5335-2.532zm13.9373 1.0248c-.987 0-1.8822.5172-2.3362 1.3484l-.1946.3586h5.0588l-.1946-.3586c-.4536-.8315-1.3478-1.3484-2.3334-1.3484zm-.0015 7.2326c2.0893 0 3.7895 1.6217 3.7895 3.6137 0 1.993-1.7002 3.6138-3.7895 3.6138-2.0903 0-3.789-1.621-3.789-3.6138 0-1.992 1.699-3.6137 3.789-3.6137zm-11.403.1328c.6482 0 1.2906.2597 1.7618.7134l.1668.1624.1687-.1624c.4719-.4537 1.1125-.7134 1.7593-.7134 1.396 0 2.5323 1.1363 2.5323 2.532v4.4303h-1.208v-4.4303c0-.7302-.5945-1.3247-1.324-1.3247-.7309 0-1.3243.5945-1.3243 1.3247v4.4303H7.1338v-4.4303c0-.7302-.5934-1.3247-1.325-1.3247-.7295 0-1.323.5945-1.323 1.3247v4.4303h-1.209v-4.4303c0-1.3953 1.1367-2.532 2.532-2.532zm11.403 1.0383c-1.422 0-2.579 1.096-2.579 2.443 0 1.3466 1.157 2.4423 2.579 2.4423 1.4224 0 2.5782-1.0957 2.5782-2.4423 0-1.347-1.1561-2.443-2.5782-2.443Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/westerndigital.svg b/assets/lib/simple-icons/icons/westerndigital.svg
new file mode 100644
index 00000000..935d670f
--- /dev/null
+++ b/assets/lib/simple-icons/icons/westerndigital.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Western Digital</title><path d="M1.494 4.957A1.478 1.478 0 0 0 0 6.455v11.09a1.478 1.478 0 0 0 .432 1.062 1.477 1.477 0 0 0 1.062.436h21.012a1.48 1.48 0 0 0 1.384-.924c.075-.182.112-.377.11-.574V6.455a1.477 1.477 0 0 0-.432-1.062 1.478 1.478 0 0 0-1.063-.436H1.496Zm2.457 3.287H6.09l-.238 1.408H3.768l.183-1.408Zm3.996 0H9.7l.156 1.408H7.072l.875-1.408Zm3.807 0h1.877l-.469 1.408h-1.851l.443-1.408Zm2.695 0h4.06c2.062 0 3.228 1.643 2.481 3.74a5.63 5.63 0 0 1-1.924 2.641 5.628 5.628 0 0 1-3.064 1.13H11.94l1.7-5.171 2.75.092-1.015 3.011c.277.031.559.031.836 0a2.865 2.865 0 0 0 2.539-1.917c.358-1.034-.15-1.886-1.166-1.916H13.91l.54-1.61ZM3.842 10.121l2.056.063-.357 2.677 1.31-2.615 2.98.094.269 2.707.834-2.676 2.054.094-1.758 5.29H8.697l-.445-4.575-2.176 4.576h-2.83l.596-5.635Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/wetransfer.svg b/assets/lib/simple-icons/icons/wetransfer.svg
new file mode 100644
index 00000000..7f3159a6
--- /dev/null
+++ b/assets/lib/simple-icons/icons/wetransfer.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>WeTransfer</title><path d="M13.855 11.891c0-3.382 2.4-5.4 5.51-5.4C22.145 6.491 24 7.91 24 9.873c0 1.855-1.582 3.055-3.328 3.055-.982 0-1.69-.164-2.182-.546-.163-.164-.272-.109-.272.055 0 .709.272 1.254.709 1.745.382.382 1.09.655 1.745.655.71 0 1.31-.164 1.855-.437.545-.272.982-.163 1.254.273.328.49-.109 1.145-.49 1.582-.71.763-2.073 1.309-3.819 1.309-3.545-.11-5.618-2.51-5.618-5.673zm-7.254 2.237c.327 0 .545.163.763.545l.982 1.582c.382.6.709 1.036 1.418 1.036.71 0 1.091-.273 1.418-1.09a21.11 21.11 0 001.31-3.873c.49-1.855.709-2.946.709-3.873s-.273-1.473-1.31-1.637c-1.363-.272-3.272-.381-5.29-.381-2.019 0-3.928.109-5.291.327C.273 6.982 0 7.528 0 8.454c0 .928.219 2.019.655 3.874a28.714 28.714 0 001.31 3.872c.381.818.708 1.091 1.417 1.091.71 0 1.037-.436 1.419-1.036l.981-1.582c.273-.327.491-.545.819-.545z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/whatsapp.svg b/assets/lib/simple-icons/icons/whatsapp.svg
index 83c7bebf..2a6c69fd 100644
--- a/assets/lib/simple-icons/icons/whatsapp.svg
+++ b/assets/lib/simple-icons/icons/whatsapp.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>WhatsApp icon</title><path d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>WhatsApp</title><path d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/wheniwork.svg b/assets/lib/simple-icons/icons/wheniwork.svg
index c4c31162..bb2308ee 100644
--- a/assets/lib/simple-icons/icons/wheniwork.svg
+++ b/assets/lib/simple-icons/icons/wheniwork.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>When I Work icon</title><path d="M12 24C5.342 24 0 18.582 0 12 0 5.342 5.342 0 12 0s12 5.342 12 12c0 6.582-5.342 12-12 12zm0-21.986c-5.497 0-9.987 4.489-9.987 9.986 0 5.498 4.49 9.988 9.987 9.988 5.498 0 9.987-4.49 9.987-9.988 0-5.497-4.489-9.986-9.987-9.986zm5.885 11.148H9.213c-.384 0-.695-.309-.698-.691v-1.012c0-.387.311-.697.698-.697h8.748c.387 0 .697.311.697.697v1.006c-.077.387-.387.697-.773.697zm-2.246-3.871H6.891c-.383.002-.697-.307-.698-.691V7.59c0-.311.31-.621.697-.621h8.748c.31 0 .62.311.62.619v1.006c.001.386-.31.697-.619.697zm-8.748 5.418h8.748c.388 0 .696.311.696.697v1.006c.002.383-.309.695-.691.697H6.891c-.388-.076-.697-.387-.697-.773V15.33c-.001-.31.309-.621.697-.621z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>When I Work</title><path d="M12 24C5.342 24 0 18.582 0 12 0 5.342 5.342 0 12 0s12 5.342 12 12c0 6.582-5.342 12-12 12zm0-21.986c-5.497 0-9.987 4.489-9.987 9.986 0 5.498 4.49 9.988 9.987 9.988 5.498 0 9.987-4.49 9.987-9.988 0-5.497-4.489-9.986-9.987-9.986zm5.885 11.148H9.213c-.384 0-.695-.309-.698-.691v-1.012c0-.387.311-.697.698-.697h8.748c.387 0 .697.311.697.697v1.006c-.077.387-.387.697-.773.697zm-2.246-3.871H6.891c-.383.002-.697-.307-.698-.691V7.59c0-.311.31-.621.697-.621h8.748c.31 0 .62.311.62.619v1.006c.001.386-.31.697-.619.697zm-8.748 5.418h8.748c.388 0 .696.311.696.697v1.006c.002.383-.309.695-.691.697H6.891c-.388-.076-.697-.387-.697-.773V15.33c-.001-.31.309-.621.697-.621z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/whitesource.svg b/assets/lib/simple-icons/icons/whitesource.svg
index 55af3f37..95a9b0ad 100644
--- a/assets/lib/simple-icons/icons/whitesource.svg
+++ b/assets/lib/simple-icons/icons/whitesource.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>WhiteSource icon</title><path d="M12 0C5.373 0 0 5.372 0 12c0 6.627 5.373 12 12 12 6.628 0 12-5.373 12-12 0-6.628-5.372-12-12-12zm-1.58 4.916h3.167v5.268h.657V5.818c2.971 1.432 2.554 5.28 2.586 5.136h.718v1.014H6.452v-1.014h.718s-.687-3.559 2.587-5.136v4.366h.662zm-3.968 8.002h3.18V13.464A2.376 2.376 0 0012 15.833a2.376 2.376 0 002.369-2.369V12.918h3.18v2.066h-1.292l-.416.928.872.768-1.596 1.697-.911-.919-.988.424v1.202h-2.436v-1.202l-.987-.424-.912.919-1.595-1.697.871-.768-.415-.928H6.452z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>WhiteSource</title><path d="M12 0C5.373 0 0 5.372 0 12c0 6.627 5.373 12 12 12 6.628 0 12-5.373 12-12 0-6.628-5.372-12-12-12zm-1.58 4.916h3.167v5.268h.657V5.818c2.971 1.432 2.554 5.28 2.586 5.136h.718v1.014H6.452v-1.014h.718s-.687-3.559 2.587-5.136v4.366h.662zm-3.968 8.002h3.18V13.464A2.376 2.376 0 0012 15.833a2.376 2.376 0 002.369-2.369V12.918h3.18v2.066h-1.292l-.416.928.872.768-1.596 1.697-.911-.919-.988.424v1.202h-2.436v-1.202l-.987-.424-.912.919-1.595-1.697.871-.768-.415-.928H6.452z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/wii.svg b/assets/lib/simple-icons/icons/wii.svg
index 8e89b306..def2969e 100644
--- a/assets/lib/simple-icons/icons/wii.svg
+++ b/assets/lib/simple-icons/icons/wii.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Wii icon</title><path d="M17.904 6.261c-.729-.014-1.33.565-1.344 1.293v.018c.012.732.612 1.315 1.344 1.305.783 0 1.404-.579 1.404-1.305.001-.732-.62-1.311-1.404-1.311zm4.71 0c-.747 0-1.36.58-1.36 1.311 0 .711.613 1.305 1.361 1.305.767 0 1.385-.579 1.385-1.305 0-.732-.618-1.311-1.386-1.311zm-14.84.543c-.748 0-1.252.374-1.514 1.215-.242.857-1.794 6.822-1.794 6.822L2.43 6.897H0s2.334 8.464 2.652 9.456c.241.765.84 1.386 1.7 1.386 1.009 0 1.479-.732 1.684-1.386.225-.676 1.738-6.261 1.738-6.261s1.515 5.589 1.719 6.261c.225.653.69 1.386 1.682 1.386.879 0 1.456-.621 1.72-1.386.315-.99 2.657-9.456 2.657-9.456h-2.45l-2.021 7.944s-1.55-5.965-1.812-6.822c-.242-.844-.77-1.215-1.495-1.215zm9.008 3.363v7.495h2.322v-7.495h-2.322zm4.693 0v7.495h2.317v-7.495h-2.317z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Wii</title><path d="M17.904 6.261c-.729-.014-1.33.565-1.344 1.293v.018c.012.732.612 1.315 1.344 1.305.783 0 1.404-.579 1.404-1.305.001-.732-.62-1.311-1.404-1.311zm4.71 0c-.747 0-1.36.58-1.36 1.311 0 .711.613 1.305 1.361 1.305.767 0 1.385-.579 1.385-1.305 0-.732-.618-1.311-1.386-1.311zm-14.84.543c-.748 0-1.252.374-1.514 1.215-.242.857-1.794 6.822-1.794 6.822L2.43 6.897H0s2.334 8.464 2.652 9.456c.241.765.84 1.386 1.7 1.386 1.009 0 1.479-.732 1.684-1.386.225-.676 1.738-6.261 1.738-6.261s1.515 5.589 1.719 6.261c.225.653.69 1.386 1.682 1.386.879 0 1.456-.621 1.72-1.386.315-.99 2.657-9.456 2.657-9.456h-2.45l-2.021 7.944s-1.55-5.965-1.812-6.822c-.242-.844-.77-1.215-1.495-1.215zm9.008 3.363v7.495h2.322v-7.495h-2.322zm4.693 0v7.495h2.317v-7.495h-2.317z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/wiiu.svg b/assets/lib/simple-icons/icons/wiiu.svg
index 750cfc75..d3eae433 100644
--- a/assets/lib/simple-icons/icons/wiiu.svg
+++ b/assets/lib/simple-icons/icons/wiiu.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Wii U icon</title><path d="M11.133 8.432c-.465 0-.835.359-.835.814.007.454.381.817.835.812.488 0 .873-.358.873-.81 0-.455-.385-.816-.873-.816zm2.93 0c-.465 0-.848.359-.848.814 0 .442.383.812.848.812.477 0 .861-.358.861-.81 0-.455-.385-.816-.861-.816zm3.655.011c-.53 0-.99.335-.99.858v3.315c0 .809.56 1.289 1.377 1.289h4.647c.689 0 1.248-.477 1.248-1.162V9.345c0-.412-.308-.86-.688-.86h-1.075v2.799c0 2.122-3.701 2.104-3.701.04v-2.88h-.818zm1.679 0v2.453c0 1.636 1.934 1.402 1.934.256V8.445h-1.934v-.002zM4.833 8.77c-.465 0-.776.232-.938.756-.152.533-1.116 4.242-1.116 4.242l-1.267-4.94H0s1.451 5.264 1.65 5.881c.15.476.521.86 1.058.86.627 0 .917-.454 1.045-.86.14-.421 1.08-3.895 1.08-3.895s.942 3.476 1.069 3.895c.14.406.431.86 1.047.86.547 0 .906-.385 1.07-.86.196-.617 1.65-5.881 1.65-5.881H8.148l-1.258 4.94s-.963-3.709-1.125-4.242c-.15-.526-.479-.756-.93-.756h-.002zm5.605 2.09v4.662h1.441V10.86h-1.441zm2.916 0v4.662h1.442V10.86h-1.442z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Wii U</title><path d="M11.133 8.432c-.465 0-.835.359-.835.814.007.454.381.817.835.812.488 0 .873-.358.873-.81 0-.455-.385-.816-.873-.816zm2.93 0c-.465 0-.848.359-.848.814 0 .442.383.812.848.812.477 0 .861-.358.861-.81 0-.455-.385-.816-.861-.816zm3.655.011c-.53 0-.99.335-.99.858v3.315c0 .809.56 1.289 1.377 1.289h4.647c.689 0 1.248-.477 1.248-1.162V9.345c0-.412-.308-.86-.688-.86h-1.075v2.799c0 2.122-3.701 2.104-3.701.04v-2.88h-.818zm1.679 0v2.453c0 1.636 1.934 1.402 1.934.256V8.445h-1.934v-.002zM4.833 8.77c-.465 0-.776.232-.938.756-.152.533-1.116 4.242-1.116 4.242l-1.267-4.94H0s1.451 5.264 1.65 5.881c.15.476.521.86 1.058.86.627 0 .917-.454 1.045-.86.14-.421 1.08-3.895 1.08-3.895s.942 3.476 1.069 3.895c.14.406.431.86 1.047.86.547 0 .906-.385 1.07-.86.196-.617 1.65-5.881 1.65-5.881H8.148l-1.258 4.94s-.963-3.709-1.125-4.242c-.15-.526-.479-.756-.93-.756h-.002zm5.605 2.09v4.662h1.441V10.86h-1.441zm2.916 0v4.662h1.442V10.86h-1.442z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/wikidata.svg b/assets/lib/simple-icons/icons/wikidata.svg
new file mode 100644
index 00000000..6654d87c
--- /dev/null
+++ b/assets/lib/simple-icons/icons/wikidata.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Wikidata</title><path d="M0 4.583v14.833h.865V4.583zm1.788 0v14.833h2.653V4.583zm3.518 0v14.832H7.96V4.583zm3.547 0v14.834h.866V4.583zm1.789 0v14.833h.865V4.583zm1.759 0v14.834h2.653V4.583zm3.518 0v14.834h.923V4.583zm1.788 0v14.833h2.653V4.583zm3.64 0v14.834h.865V4.583zm1.788 0v14.834H24V4.583Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/wikidotjs.svg b/assets/lib/simple-icons/icons/wikidotjs.svg
new file mode 100644
index 00000000..d211fa31
--- /dev/null
+++ b/assets/lib/simple-icons/icons/wikidotjs.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Wiki.js</title><path d="M17.801 13.557c.148.098.288.202.417.313 1.854 1.6 3.127 4.656 2.582 7.311-1.091-.255-5.747-1.055-7.638-3.383-.91-1.12-1.366-2.081-1.569-2.885a5.65 5.65 0 0 0 .034-.219c.089.198.197.35.313.466.24.24.521.335.766.372.304.046.594-.006.806-.068l.001.001c.05-.015.433-.116.86-.342.325-.173 2.008-.931 3.428-1.566Zm-7.384 1.435C9.156 16.597 6.6 18.939.614 18.417c.219-1.492 1.31-3.019 2.51-4.11.379-.345.906-.692 1.506-1.009.286.168.598.332.939.486 2.689 1.221 3.903 1.001 4.89.573a1.3 1.3 0 0 0 .054-.025 6.156 6.156 0 0 0-.096.66Zm4.152-.462c.38-.341.877-.916 1.383-1.559-.389-.15-.866-.371-1.319-.591-.598-.29-1.305-.283-2.073-.315a4.685 4.685 0 0 1-.804-.103c.014-.123.027-.246.038-.369.062.104.673.057.871.057.354 0 1.621.034 3.074-.574 1.452-.608 2.55-1.706 3.022-3.225.474-1.52.22-3.091-.168-3.952-.169.709-1.453 2.381-1.926 2.871-.473.489-2.381 2.296-2.972 2.921-.7.74-.688.793-1.332 1.302-.202.19-.499.402-.563.53.027-.338.039-.675.027-.997a7.653 7.653 0 0 0-.032-.523c.322-.059.567-.522.567-.861 0-.224-.106-.247-.271-.229.075-.894.382-3.923 1.254-4.281.218.109.831.068.649-.295-.182-.364-.825-.074-1.081.266-.28.374-.956 2.046-.92 4.324-.113.014-.174.033-.322.033-.171 0-.321-.04-.433-.05.034-2.275-.714-3.772-.84-4.169-.12-.375-.491-.596-.781-.596-.146 0-.272.056-.333.179-.182.363.459.417.677.308.706.321 1.156 3.519 1.254 4.277-.125-.006-.199.035-.199.233 0 .311.17.756.452.843a.442.442 0 0 0-.007.03s-.287.99-.413 2.189a4.665 4.665 0 0 1-.718-.225c-.714-.286-1.355-.583-2.019-.566-.664.018-1.366.023-1.804-.036-.438-.058-.649-.15-.649-.15s-.234.365.257 1.075c.42.607 1.055 1.047 1.644 1.18.589.134 1.972.18 2.785-.377.16-.109.317-.228.459-.34a8.717 8.717 0 0 0-.013.626c-.289.753-.571 1.993-.268 3.338 0-.001.701-.842.787-2.958.006-.144.009-.271.01-.383.052-.248.103-.518.148-.799.072.135.151.277.234.413.511.842 1.791 1.37 2.383 1.49.091.019.187.032.285.038Zm-1.12.745c-.188.055-.445.1-.713.059-.21-.031-.45-.11-.655-.316-.169-.168-.312-.419-.401-.789a9.837 9.837 0 0 0 .039-.82l.049-.243c.563.855 1.865 1.398 2.476 1.522.036.008.072.014.109.02l-.013.009c-.579.415-.76.503-.891.558Zm6.333-2.818c-.257.114-4.111 1.822-5.246 2.363.98-.775 3.017-3.59 3.699-4.774 1.062.661 1.468 1.109 1.623 1.441.101.217.09.38.096.515a.57.57 0 0 1-.172.455Zm-9.213 1.62a1.606 1.606 0 0 1-.19.096c-.954.414-2.126.61-4.728-.571-2.023-.918-3.024-2.157-3.371-2.666.476.161 1.471.473 2.157.524.282.021.703.068 1.167.125.021.209.109.486.345.829l.001.001c.451.651 1.134 1.119 1.765 1.262.622.141 2.083.182 2.942-.407a3.12 3.12 0 0 0 .132-.093l.001.179a6.052 6.052 0 0 0-.221.721Zm5.512-1.271a17.49 17.49 0 0 1-1.326-.589c.437.042 1.054.083 1.692.108-.121.162-.244.323-.366.481Zm.932-1.26c-.12.17-.245.343-.373.517-.241.018-.478.03-.709.038a29.05 29.05 0 0 1-.741-.048c.608-.065 1.228-.252 1.823-.507Zm.22-.315c-.809.382-1.679.648-2.507.648-.472 0-.833.018-1.139.039v.001c-.324-.031-.665-.039-1.019-.054a3.555 3.555 0 0 1-.152-.009c.102-.002.192-.006.249-.006.363 0 1.662.034 3.151-.589 1.508-.632 2.645-1.773 3.136-3.351.37-1.186.31-2.402.086-3.312.458-.336.86-.651 1.147-.91.501-.451.743-.733.848-.869.199.206.714.864.685 2.138-.036 1.611-.606 3.187-1.501 4.154a9.099 9.099 0 0 1-1.321 1.132 11.978 11.978 0 0 0-.644-.422l-.089-.055-.051.091c-.184.332-.5.825-.879 1.374ZM4.763 5.817c-.157 1.144.113 2.323.652 3.099.539.776 2.088 2.29 3.614 2.505.991.14 2.055.134 2.055.134s-.593-.576-1.114-1.66c-.521-1.085-.948-2.104-1.734-2.786-.785-.681-1.601-1.416-2.045-1.945-.444-.53-.59-.86-.59-.86s-.656.175-.838 1.513Zm14.301 4.549a9.162 9.162 0 0 0 1.3-1.12c.326-.352.611-.782.845-1.265 1.315.145 2.399.371 2.791.434 0 0-.679 1.971-3.945 3.022l-.016-.035c-.121-.26-.385-.594-.975-1.036Zm-11.634.859a8.537 8.537 0 0 1-.598-.224c-1.657-.693-2.91-1.944-3.449-3.678-.498-1.601-.292-3.251.091-4.269.225.544.758 1.34 1.262 2.01a3.58 3.58 0 0 0-.172.726c-.163 1.197.123 2.428.687 3.24.416.599 1.417 1.62 2.555 2.193-.128.002-.253.003-.376.002Zm-1.758-.077c-.958-.341-1.901-.787-2.697-1.368C-.07 7.559 0 6.827 0 6.827s1.558-.005 3.088.179c.03.126.065.251.104.377.557 1.791 1.851 3.086 3.562 3.803l.047.019a4.254 4.254 0 0 1-.267-.026h-.001c-.401-.053-.595-.135-.595-.135l-.157-.069-.092.144-.017.029Zm6.807-1.59c.086.017.136.058.136.145 0 .197-.242.5-.597.597l-.01-.161a.887.887 0 0 0 .283-.243c.078-.099.142-.217.188-.338Zm-1.591.006c.033.1.076.197.129.282.061.097.134.18.217.24l-.021.083c-.276-.093-.424-.293-.424-.466 0-.078.035-.119.099-.139Zm-.025-.664c-.275-.816-.795-2.022-1.505-2.179-.296.072-.938.096-.691-.145.246-.24 1.085-.048 1.283.217.145.194.744.806 1.011 1.737l.032.227a.324.324 0 0 0-.13.143Zm1.454-.266c.251-.99.889-1.639 1.039-1.841.197-.265 1.036-.457 1.283-.217.247.241-.395.217-.691.145-.69.152-1.2 1.296-1.481 2.109a.364.364 0 0 0-.067-.059.37.37 0 0 0-.092-.043l.009-.094Zm4.802-2.708a9.875 9.875 0 0 1-.596.705c-.304.315-1.203 1.176-1.963 1.916.647-.955 1.303-1.806 2.184-2.376.123-.08.249-.161.375-.245Z"/></svg>
diff --git a/assets/lib/simple-icons/icons/wikimediacommons.svg b/assets/lib/simple-icons/icons/wikimediacommons.svg
index 6657dc0b..f029b220 100644
--- a/assets/lib/simple-icons/icons/wikimediacommons.svg
+++ b/assets/lib/simple-icons/icons/wikimediacommons.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Wikimedia Commons icon</title><path d="M9.048 15.203a2.952 2.952 0 1 1 5.904 0 2.952 2.952 0 0 1-5.904 0zm11.749.064v-.388h-.006a8.726 8.726 0 0 0-.639-2.985 8.745 8.745 0 0 0-1.706-2.677l.004-.004-.186-.185-.044-.045-.026-.026-.204-.204-.006.007c-.848-.756-1.775-1.129-2.603-1.461-1.294-.519-2.138-.857-2.534-2.467.443.033.839.174 1.13.481C15.571 6.996 11.321 0 11.321 0s-1.063 3.985-2.362 5.461c-.654.744.22.273 1.453-.161.279 1.19.77 2.119 1.49 2.821.791.771 1.729 1.148 2.556 1.48.672.27 1.265.508 1.767.916l-.593.594-.668-.668-.668 2.463 2.463-.668-.668-.668.6-.599a6.285 6.285 0 0 1 1.614 3.906h-.844v-.944l-2.214 1.27 2.214 1.269v-.944h.844a6.283 6.283 0 0 1-1.614 3.906l-.6-.599.668-.668-2.463-.668.668 2.463.668-.668.6.6a6.263 6.263 0 0 1-3.907 1.618v-.848h.945L12 18.45l-1.27 2.214h.944v.848a6.266 6.266 0 0 1-3.906-1.618l.599-.6.668.668.668-2.463-2.463.668.668.668-.6.599a6.29 6.29 0 0 1-1.615-3.906h.844v.944l2.214-1.269-2.214-1.27v.944h-.843a6.292 6.292 0 0 1 1.615-3.906l.6.599-.668.668 2.463.668-.668-2.463-.668.668-2.359-2.358-.23.229-.044.045-.185.185.004.004a8.749 8.749 0 0 0-2.345 5.662h-.006v.649h.006a8.749 8.749 0 0 0 2.345 5.662l-.004.004.185.185.045.045.045.045.185.185.004-.004a8.73 8.73 0 0 0 2.677 1.707 8.75 8.75 0 0 0 2.985.639V24h.649v-.006a8.75 8.75 0 0 0 2.985-.639 8.717 8.717 0 0 0 2.677-1.707l.004.004.187-.187.044-.043.043-.044.187-.186-.004-.004a8.733 8.733 0 0 0 1.706-2.677 8.726 8.726 0 0 0 .639-2.985h.006v-.259z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Wikimedia Commons</title><path d="M9.048 15.203a2.952 2.952 0 1 1 5.904 0 2.952 2.952 0 0 1-5.904 0zm11.749.064v-.388h-.006a8.726 8.726 0 0 0-.639-2.985 8.745 8.745 0 0 0-1.706-2.677l.004-.004-.186-.185-.044-.045-.026-.026-.204-.204-.006.007c-.848-.756-1.775-1.129-2.603-1.461-1.294-.519-2.138-.857-2.534-2.467.443.033.839.174 1.13.481C15.571 6.996 11.321 0 11.321 0s-1.063 3.985-2.362 5.461c-.654.744.22.273 1.453-.161.279 1.19.77 2.119 1.49 2.821.791.771 1.729 1.148 2.556 1.48.672.27 1.265.508 1.767.916l-.593.594-.668-.668-.668 2.463 2.463-.668-.668-.668.6-.599a6.285 6.285 0 0 1 1.614 3.906h-.844v-.944l-2.214 1.27 2.214 1.269v-.944h.844a6.283 6.283 0 0 1-1.614 3.906l-.6-.599.668-.668-2.463-.668.668 2.463.668-.668.6.6a6.263 6.263 0 0 1-3.907 1.618v-.848h.945L12 18.45l-1.27 2.214h.944v.848a6.266 6.266 0 0 1-3.906-1.618l.599-.6.668.668.668-2.463-2.463.668.668.668-.6.599a6.29 6.29 0 0 1-1.615-3.906h.844v.944l2.214-1.269-2.214-1.27v.944h-.843a6.292 6.292 0 0 1 1.615-3.906l.6.599-.668.668 2.463.668-.668-2.463-.668.668-2.359-2.358-.23.229-.044.045-.185.185.004.004a8.749 8.749 0 0 0-2.345 5.662h-.006v.649h.006a8.749 8.749 0 0 0 2.345 5.662l-.004.004.185.185.045.045.045.045.185.185.004-.004a8.73 8.73 0 0 0 2.677 1.707 8.75 8.75 0 0 0 2.985.639V24h.649v-.006a8.75 8.75 0 0 0 2.985-.639 8.717 8.717 0 0 0 2.677-1.707l.004.004.187-.187.044-.043.043-.044.187-.186-.004-.004a8.733 8.733 0 0 0 1.706-2.677 8.726 8.726 0 0 0 .639-2.985h.006v-.259z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/wikipedia.svg b/assets/lib/simple-icons/icons/wikipedia.svg
index 2f971ff7..bc270c19 100644
--- a/assets/lib/simple-icons/icons/wikipedia.svg
+++ b/assets/lib/simple-icons/icons/wikipedia.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Wikipedia icon</title><path d="M12.09 13.119c-.936 1.932-2.217 4.548-2.853 5.728-.616 1.074-1.127.931-1.532.029-1.406-3.321-4.293-9.144-5.651-12.409-.251-.601-.441-.987-.619-1.139-.181-.15-.554-.24-1.122-.271C.103 5.033 0 4.982 0 4.898v-.455l.052-.045c.924-.005 5.401 0 5.401 0l.051.045v.434c0 .119-.075.176-.225.176l-.564.031c-.485.029-.727.164-.727.436 0 .135.053.33.166.601 1.082 2.646 4.818 10.521 4.818 10.521l.136.046 2.411-4.81-.482-1.067-1.658-3.264s-.318-.654-.428-.872c-.728-1.443-.712-1.518-1.447-1.617-.207-.023-.313-.05-.313-.149v-.468l.06-.045h4.292l.113.037v.451c0 .105-.076.15-.227.15l-.308.047c-.792.061-.661.381-.136 1.422l1.582 3.252 1.758-3.504c.293-.64.233-.801.111-.947-.07-.084-.305-.22-.812-.24l-.201-.021c-.052 0-.098-.015-.145-.051-.045-.031-.067-.076-.067-.129v-.427l.061-.045c1.247-.008 4.043 0 4.043 0l.059.045v.436c0 .121-.059.178-.193.178-.646.03-.782.095-1.023.439-.12.186-.375.589-.646 1.039l-2.301 4.273-.065.135 2.792 5.712.17.048 4.396-10.438c.154-.422.129-.722-.064-.895-.197-.172-.346-.273-.857-.295l-.42-.016c-.061 0-.105-.014-.152-.045-.043-.029-.072-.075-.072-.119v-.436l.059-.045h4.961l.041.045v.437c0 .119-.074.18-.209.18-.648.03-1.127.18-1.443.421-.314.255-.557.616-.736 1.067 0 0-4.043 9.258-5.426 12.339-.525 1.007-1.053.917-1.503-.031-.571-1.171-1.773-3.786-2.646-5.71l.053-.036z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Wikipedia</title><path d="M12.09 13.119c-.936 1.932-2.217 4.548-2.853 5.728-.616 1.074-1.127.931-1.532.029-1.406-3.321-4.293-9.144-5.651-12.409-.251-.601-.441-.987-.619-1.139-.181-.15-.554-.24-1.122-.271C.103 5.033 0 4.982 0 4.898v-.455l.052-.045c.924-.005 5.401 0 5.401 0l.051.045v.434c0 .119-.075.176-.225.176l-.564.031c-.485.029-.727.164-.727.436 0 .135.053.33.166.601 1.082 2.646 4.818 10.521 4.818 10.521l.136.046 2.411-4.81-.482-1.067-1.658-3.264s-.318-.654-.428-.872c-.728-1.443-.712-1.518-1.447-1.617-.207-.023-.313-.05-.313-.149v-.468l.06-.045h4.292l.113.037v.451c0 .105-.076.15-.227.15l-.308.047c-.792.061-.661.381-.136 1.422l1.582 3.252 1.758-3.504c.293-.64.233-.801.111-.947-.07-.084-.305-.22-.812-.24l-.201-.021c-.052 0-.098-.015-.145-.051-.045-.031-.067-.076-.067-.129v-.427l.061-.045c1.247-.008 4.043 0 4.043 0l.059.045v.436c0 .121-.059.178-.193.178-.646.03-.782.095-1.023.439-.12.186-.375.589-.646 1.039l-2.301 4.273-.065.135 2.792 5.712.17.048 4.396-10.438c.154-.422.129-.722-.064-.895-.197-.172-.346-.273-.857-.295l-.42-.016c-.061 0-.105-.014-.152-.045-.043-.029-.072-.075-.072-.119v-.436l.059-.045h4.961l.041.045v.437c0 .119-.074.18-.209.18-.648.03-1.127.18-1.443.421-.314.255-.557.616-.736 1.067 0 0-4.043 9.258-5.426 12.339-.525 1.007-1.053.917-1.503-.031-.571-1.171-1.773-3.786-2.646-5.71l.053-.036z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/wikiquote.svg b/assets/lib/simple-icons/icons/wikiquote.svg
new file mode 100644
index 00000000..9acb4cd7
--- /dev/null
+++ b/assets/lib/simple-icons/icons/wikiquote.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Wikiquote</title><path d="M10.152 12a4.037 4.037 0 1 1-8.075 0 4.037 4.037 0 0 1 8.075 0zM17.292.822c-.286-.287-.581-.56-.885-.822l-1.528 1.527C17.872 4.036 19.778 7.8 19.778 12s-1.906 7.964-4.899 10.473L16.407 24c.304-.262.6-.535.886-.822A15.705 15.705 0 0 0 21.923 12c0-4.223-1.644-8.192-4.63-11.178zM13.508 2.9L12.03 4.377a9.642 9.642 0 0 1 0 15.246l1.477 1.477a11.712 11.712 0 0 0 0-18.2zm-2.735 2.735L9.349 7.057c1.61 1.057 2.675 2.878 2.675 4.943s-1.065 3.886-2.675 4.943l1.423 1.422A7.884 7.884 0 0 0 14.005 12a7.884 7.884 0 0 0-3.233-6.365z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/wikivoyage.svg b/assets/lib/simple-icons/icons/wikivoyage.svg
new file mode 100644
index 00000000..f1152b7b
--- /dev/null
+++ b/assets/lib/simple-icons/icons/wikivoyage.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Wikivoyage</title><path d="M22.9171 14.1784c-.4303 0-.782-.1366-1.0551-.4097-.2731-.2731-.4097-.6229-.4097-1.0492 0-.4253.1183-.7758.355-1.0513.2367-.2756.5425-.4133.9173-.4133.4072 0 .7216.1287.9431.3862.2215.2574.3323.6169.3323 1.0784v.1558H22.134c.0196.1606.0774.3017.1736.4233.1826.1692.3935.2537.6326.2537.1753 0 .3382-.0309.4885-.0926.1504-.0618.3407-.167.5712-.3155v.6475c-.1888.1426-.3662.2427-.532.3003-.166.0576-.3496.0864-.551.0864zm.4448-1.7748c-.0222-.133-.0706-.25-.1452-.3512-.1048-.1434-.2591-.215-.463-.215-.1808 0-.3297.0777-.4467.2334-.0802.1045-.134.2155-.1613.3328zm-3.7305 1.063c0 .036.0493.0798.148.1312.0987.0515.2261.0893.3822.1135.3783.0603.6517.1617.8203.304.1687.1424.253.3492.253.6204 0 .2661-.1247.4752-.374.6273-.2494.152-.58.2281-.9918.2281-.3867 0-.6964-.0817-.9292-.2452-.2327-.1635-.349-.3863-.349-.6686 0-.1946.0623-.3617.187-.5012.1248-.1395.2704-.218.4368-.2355-.1399-.0675-.2098-.1708-.2098-.3098 0-.1509.0928-.2761.2786-.3757.0444-.0242.0769-.0284.0973-.0125-.0726-.003-.1522-.0437-.239-.1221-.2002-.1856-.3003-.4227-.3003-.7114 0-.2898.1003-.5277.3007-.7136.2005-.1859.4573-.2788.7705-.2788.079 0 .1534.0058.2232.0176h1.099v.5445h-.3792c.0829.088.1257.2513.1284.4898 0 .2484-.1014.4669-.3042.6554-.1767.1625-.3991.253-.6674.2717l-.1795.0112a.3656.3656 0 00-.1332.0502c-.0456.029-.0684.0656-.0684.1094zm.2814-1.614c-.132 0-.24.0422-.3243.1264-.0841.0842-.1262.1942-.1262.3301 0 .1366.0419.2463.1257.3293.0838.0829.192.1244.3248.1244.1321 0 .2403-.0417.3244-.125.0842-.0832.1262-.1928.1262-.3287 0-.1353-.0424-.2454-.1273-.3304-.0841-.084-.1919-.126-.3233-.126zm-.7042 2.7277c0 .1078.0595.1972.1784.2683.119.071.2816.1066.4878.1066.2254 0 .4016-.03.5285-.09.127-.06.1904-.1347.1904-.2237 0-.0942-.0432-.1743-.1296-.2404-.0865-.0661-.2155-.1129-.387-.1402l-.0753-.0117a2.2197 2.2197 0 00-.2005-.0208c-.065-.0036-.1138-.0025-.1465.0033-.125.02-.225.0531-.3.0995-.0975.0607-.1462.1437-.1462.2492zm-2.382-.402c-.2113 0-.3806-.0667-.5076-.2002-.127-.1335-.1906-.3071-.1906-.521 0-.1895.0624-.353.1873-.4903.125-.1374.31-.25.5553-.338l.651-.2353v-.1258c0-.139-.0326-.2387-.0978-.299-.0652-.0603-.1721-.0905-.3207-.0905-.1661 0-.3145.0318-.4453.0953-.1307.0636-.2887.1698-.4742.3188v-.6237c.143-.1476.288-.2534.435-.3176.1468-.064.3103-.0961.4903-.0961.348 0 .614.0868.7981.2603.184.1736.276.4244.276.7525v1.3498c0 .022.0031.036.0093.042.0062.0063.0172.0093.0333.0093.0133 0 .0416-.0136.085-.041.0433-.0272.1262-.069.2486-.1252v.4182c-.0778.0778-.1734.1387-.2867.1828-.1134.044-.2214.066-.324.066-.119 0-.2193-.036-.3008-.1081-.0604-.0553-.0921-.1057-.0952-.1513-.0136.0453-.0612.0888-.1427.1305-.1794.0918-.374.1377-.5836.1377zm.6955-.625v-.751l-.257.1198c-.1584.0563-.2747.1243-.349.2038-.0744.0794-.1116.1724-.1116.2788 0 .0802.03.1447.09.1937.06.049.1414.0734.244.0734a.6166.6166 0 00.2578-.058 2.2801 2.2801 0 01.2-.0808zm-1.4784-2.1772L14.15 15.564h-.7242l.9329-2.1137-1.0612-2.1337h.7079l.7125 1.5336.6388-1.5336h.6868zm-4.3623 2.788c-.4608.0199-.8472-.1217-1.1267-.3951-.2795-.2734-.4192-.623-.4192-1.0488 0-.427.1399-.778.4196-1.0527.2797-.2746.6387-.412 1.0772-.412.4378 0 .7973.1375 1.0784.4125.281.275.4216.6257.4216 1.0521 0 .4254-.1404.7749-.4211 1.0485-.2808.2736-.635.3956-1.0298.3956zm-.0025-.5496c.2204-.0198.3935-.0987.547-.2603.1535-.1617.2303-.373.2303-.634 0-.263-.0768-.4759-.2304-.6384-.1536-.1626-.3514-.2439-.5935-.2439-.2426 0-.44.0812-.5924.2434-.1523.1623-.2285.3752-.2285.6388 0 .2625.076.4741.228.635.152.161.3527.2594.6395.2594zm-4.4176-2.2977H7.9537l.6612 1.656.664-1.656h.6875l-1.2286 2.8421H8.486zm9.2173-.7027V7.8232h.6733v2.8515h-.5401zm.3366-3.963c.1103 0 .2034.038.2793.1138.0759.0759.1138.167.1138.2733a.3727.3727 0 01-.1133.2735c-.0756.0756-.1688.1133-.2798.1133-.1116 0-.205-.0376-.2803-.1128-.0752-.0752-.1128-.1666-.1128-.274a.373.373 0 01.1133-.2738c.0755-.0755.1688-.1133.2798-.1133zm-2.6679-.1823v4.2063h-.6732V6.4082h.6732zm1.2855 4.1457L14.041 9.2523l1.258-1.4287H16.0557l-1.199 1.4145 1.4127 1.4369h-.7034zm-3.3006-.0004V7.8232h.6733v2.8515h-.5401zm.3366-3.963c.1103 0 .2034.038.2793.1138.0758.0759.1138.167.1138.2733a.3728.3728 0 01-.1133.2735c-.0756.0756-.1688.1133-.2798.1133-.1116 0-.205-.0376-.2803-.1128-.0752-.0752-.1128-.1666-.1128-.274a.373.373 0 01.1133-.2738c.0755-.0755.1688-.1133.2798-.1133zM8.49 10.717L7.2613 7.824h.6986l.6615 1.6798.682-1.7213h.4222l.6763 1.7124.6642-1.671h.6998l-1.242 2.893h-.2561l-.762-1.843-.7593 1.843h-.1277zm3.7676 6.3222l4.0081 6.0705.4359-7.2612a4.6007 4.6007 0 01-4.444 1.1907zM7.2613 6.4082L0 6.8441l6.0705 4.0081a4.6007 4.6007 0 011.1908-4.444zm11.705.9885L22.2197.8903l-6.5064 3.2532a4.6008 4.6008 0 013.2532 3.2532z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/winamp.svg b/assets/lib/simple-icons/icons/winamp.svg
new file mode 100644
index 00000000..c02f7684
--- /dev/null
+++ b/assets/lib/simple-icons/icons/winamp.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Winamp</title><path d="M11.902 0a.987.987 0 0 0-.91.604l-6.139 14.57c-.176.42.131.883.586.883H8.66a.987.987 0 0 0 .91-.604L15.707.883A.636.636 0 0 0 15.12 0h-3.219Zm3.438 7.943a.987.987 0 0 0-.91.604l-6.137 14.57c-.177.42.13.883.586.883h3.219a.987.987 0 0 0 .91-.604l6.138-14.57a.636.636 0 0 0-.586-.883h-3.22Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/windicss.svg b/assets/lib/simple-icons/icons/windicss.svg
new file mode 100644
index 00000000..0e17fdfb
--- /dev/null
+++ b/assets/lib/simple-icons/icons/windicss.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Windi CSS</title><path d="M4.12 15.561H.96v2.431h3.16zm13.728 4.22A4.224 4.224 0 0113.628 24c-2.452 0-3.918-1.838-3.918-3.617h2.412c0 .5.467 1.206 1.506 1.206a1.81 1.81 0 001.809-1.809c0-.997-.917-1.808-2.563-1.808H5.589v-2.411h7.285c3.097 0 4.974 1.893 4.974 4.22zA4.224 4.224 0 0113.628 24c-2.452 0-3.918-1.838-3.918-3.617h2.412c0 .5.467 1.206 1.506 1.206a1.81 1.81 0 001.809-1.809c0-.997-.917-1.808-2.563-1.808H5.589v-2.411h7.285c3.097 0 4.974 1.893 4.974 4.22zM18.48 3.72c-2.66 0-4.536 2.022-4.536 4.682h2.136c0-1.322.96-2.282 2.4-2.282s2.16.96 2.16 2.282-.935 2.411-3.48 2.411H.96v2.411h16.56c3.769 0 5.52-2.422 5.52-4.822 0-2.66-1.8-4.682-4.56-4.682zm-5.981.5A4.224 4.224 0 008.279 0C5.827 0 4.361 1.838 4.361 3.617h2.411c0-.5.468-1.206 1.507-1.206a1.81 1.81 0 011.809 1.809c0 .997-.728 1.808-2.563 1.808H.96v2.411h6.565c3.097 0 4.974-1.893 4.974-4.22zA4.224 4.224 0 008.279 0C5.827 0 4.361 1.838 4.361 3.617h2.411c0-.5.468-1.206 1.507-1.206a1.81 1.81 0 011.809 1.809c0 .997-.728 1.808-2.563 1.808H.96v2.411h6.565c3.097 0 4.974-1.893 4.974-4.22z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/windows.svg b/assets/lib/simple-icons/icons/windows.svg
index 3e6c955d..78faa78c 100644
--- a/assets/lib/simple-icons/icons/windows.svg
+++ b/assets/lib/simple-icons/icons/windows.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Windows icon</title><path d="M0 3.449L9.75 2.1v9.451H0m10.949-9.602L24 0v11.4H10.949M0 12.6h9.75v9.451L0 20.699M10.949 12.6H24V24l-12.9-1.801"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Windows</title><path d="M0 3.449L9.75 2.1v9.451H0m10.949-9.602L24 0v11.4H10.949M0 12.6h9.75v9.451L0 20.699M10.949 12.6H24V24l-12.9-1.801"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/windows95.svg b/assets/lib/simple-icons/icons/windows95.svg
index 99b59d28..25ddebcf 100644
--- a/assets/lib/simple-icons/icons/windows95.svg
+++ b/assets/lib/simple-icons/icons/windows95.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Windows 95 icon</title><path d="M5.713 1.596l-.756.068-.238.55.734-.017.26-.601zm1.39.927l-.978.137-.326.807.96-.12.345-.824zM4.89 3.535l-.72.05-.24.567.721-.017.239-.6zm3.724.309l-1.287.068-.394.961 1.27-.053.411-.976zm1.87.566l-1.579.069-.566 1.357 1.596-.088.548-1.338zm-4.188.037l-.977.153-.343.806.976-.12.344-.839zm6.143.668l-1.87.135-.636 1.527 1.87-.154.636-1.508zm2.925.219c-.11 0-.222 0-.334.002l-.767 1.851c1.394-.03 2.52.088 3.373.38l-1.748 4.2c-.955-.304-2.082-.444-3.36-.394l-.539 1.305a8.762 8.762 0 013.364.396l-1.663 4.014c-1.257-.27-2.381-.395-3.386-.344l-.782 1.887c3.362-.446 6.347.822 9.008 3.773L24 9.23c-2.325-2.575-5.2-3.879-8.637-3.896zm-.644.002l-2.024.12-.687 1.68 2.025-.189.686-1.611zm-10.602.05l-.719.036-.224.566h.703l.24-.601zm3.69.397l-1.287.069-.395.959 1.27-.05.412-.978zM5.54 6.3l-.994.154-.344.807.979-.121.359-.84zm4.137.066l-1.58.069L7.53 7.77l1.596-.085.55-1.32zm1.955.688l-1.871.135-.635 1.527 1.887-.154.619-1.508zm2.281.19l-2.01.136-.7 1.682 2.04-.19.67-1.629zm-10.568.066l-.739.035-.238.564h.719l.258-.6zm3.705.293l-1.303.085-.394.961 1.287-.035.41-1.011zm11.838.255a6.718 6.718 0 012.777 1.717l-1.75 4.237c-.617-.584-1.15-.961-1.611-1.149l-1.201-.498 1.785-4.307zM4.734 8.22l-.976.154-.344.807.961-.12.36-.841zm4.186 0l-1.594.052-.549 1.354 1.594-.086.549-1.32zm1.957.668L8.99 9.04l-.619 1.508 1.87-.135.636-1.527zm2.246.275l-2.006.12-.703 1.665 2.041-.156.668-1.629zm-10.602.104l-.718.033-.24.549.718-.016.24-.566zm3.725.273l-1.289.07-.41.961 1.287-.03.412-1zm1.87.6l-1.596.05-.55 1.356 1.598-.084.547-1.322zm-4.186.037l-.979.136-.324.805.959-.119.344-.822zm6.14.633l-1.87.154-.653 1.527 1.906-.154.617-1.527zm2.266.275l-2.025.12-.686 1.663 2.025-.172.686-1.611zm-10.568.031l-.739.037-.238.565.72-.016.257-.586zm3.673.362l-1.289.068-.41.978 1.305-.05.394-.996zm-2.285.533l-.976.154-.326.805.96-.12.342-.84zm4.153.07l-1.596.066-.565 1.356 1.612-.084.549-1.338zm1.957.666l-1.889.154-.617 1.526 1.886-.15.62-1.53zm2.28.223l-2.025.12-.685 1.665 2.041-.172.67-1.613zM.962 13.02l-.738.053-.223.567.72-.02.24-.6zm3.705.31l-1.285.07-.395.976 1.287-.05.393-.997zm11.922.07c1.08.29 2.024.821 2.814 1.613l-1.715 4.183c-.892-.754-1.82-1.32-2.814-1.664l1.715-4.133zm-10.035.515L4.957 14l-.549 1.32 1.578-.066.567-1.338zm-4.184.014l-.996.156-.309.789.961-.105.344-.84zm6.14.67l-1.904.154-.617 1.527 1.889-.154.633-1.527zm2.231.324l-2.025.123-.686 1.682 2.026-.174.685-1.631zm-6.863.328l-1.3.068-.397.979 1.285-.053.412-.994zm1.871.584l-1.578.068-.566 1.334 1.595-.064.549-1.338zm1.953.701l-1.867.137-.635 1.51 1.87-.137.632-1.51zm2.23.31l-2.005.122-.703 1.68 2.04-.19.669-1.611Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Windows 95</title><path d="M5.712 1.596l-.756.068-.238.55.734-.017zm1.39.927l-.978.137-.326.807.96-.12.345-.824zM4.89 3.535l-.72.05-.24.567.721-.017zm3.724.309l-1.287.068-.394.96 1.27-.052zm1.87.566l-1.579.069-.566 1.357 1.596-.088.548-1.338zm-4.188.037l-.977.153-.343.806.976-.12zm6.144.668l-1.87.135-.637 1.527 1.87-.154zm2.925.219c-.11 0-.222 0-.334.002l-.767 1.85c1.394-.03 2.52.089 3.373.38l-1.748 4.201c-.955-.304-2.082-.444-3.36-.394l-.54 1.305a8.762 8.762 0 0 1 3.365.396l-1.663 4.014c-1.257-.27-2.382-.395-3.387-.344l-.782 1.887c3.363-.446 6.348.822 9.009 3.773L24 9.23c-2.325-2.575-5.2-3.88-8.637-3.896zm-.644.002l-2.024.12-.687 1.68 2.025-.19zm-10.603.05l-.719.036-.224.566h.703l.24-.601zm3.69.397l-1.287.069-.395.959 1.27-.05zM5.54 6.3l-.994.154-.344.807.98-.121zm4.137.066l-1.58.069L7.53 7.77l1.596-.085.55-1.32zm1.955.688l-1.87.135-.636 1.527 1.887-.154zm2.282.19l-2.01.136-.7 1.682 2.04-.19.67-1.63zm-10.57.066l-.739.035-.238.564h.72l.257-.6zm3.705.293l-1.303.085-.394.96 1.287-.034zm11.839.255a6.718 6.718 0 0 1 2.777 1.717l-1.75 4.237c-.617-.584-1.15-.961-1.611-1.149l-1.201-.498zM4.733 8.22l-.976.154-.344.807.961-.12.36-.841zm4.186 0l-1.594.052-.549 1.354L8.37 9.54zm1.957.668L8.99 9.04l-.619 1.508 1.87-.135.636-1.527zm2.247.275l-2.007.12-.703 1.665 2.042-.156zM2.52 9.267l-.718.033-.24.549.718-.016zm3.725.273l-1.289.07-.41.96 1.287-.03.412-1zm1.87.6l-1.596.05-.55 1.356 1.598-.084.547-1.322zm-4.186.037l-.979.136-.324.805.96-.119zm6.14.633l-1.87.154-.653 1.527 1.906-.154zm2.267.275l-2.026.12-.686 1.663 2.025-.172zm-10.569.031l-.739.037-.238.565.72-.016zm3.673.362l-1.289.068-.41.978 1.305-.05zm-2.285.533l-.976.154-.326.805.96-.12.342-.84zm4.153.07l-1.596.066-.565 1.356 1.612-.084zm1.957.666l-1.889.154-.617 1.526 1.886-.15zm2.28.223l-2.025.12-.685 1.665 2.041-.172.67-1.613zm-10.584.05l-.738.053L0 13.64l.72-.02.24-.6zm3.705.31l-1.285.07-.395.976 1.287-.05.393-.997zm11.923.07c1.08.29 2.024.821 2.814 1.613l-1.715 4.183c-.892-.754-1.82-1.32-2.814-1.664l1.715-4.133zm-10.036.515L4.956 14l-.549 1.32 1.578-.066.567-1.338zm-4.184.014l-.996.156-.309.79.961-.106zm6.14.67l-1.904.154-.617 1.527 1.89-.154.632-1.527zm2.231.324l-2.025.123-.686 1.682 2.026-.174zm-6.863.328l-1.3.068-.397.98 1.285-.054zm1.871.584l-1.578.068-.566 1.334 1.595-.064zm1.953.701l-1.867.137-.635 1.51 1.87-.137zm2.23.31l-2.005.122-.703 1.68 2.04-.19.67-1.61z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/windowsterminal.svg b/assets/lib/simple-icons/icons/windowsterminal.svg
new file mode 100644
index 00000000..c8e53068
--- /dev/null
+++ b/assets/lib/simple-icons/icons/windowsterminal.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Windows Terminal</title><path d="M8.165 6V3h7.665v3H8.165zm-.5-3H1c-.55 0-1 .45-1 1v2h7.665V3zM23 3h-6.67v3H24V4c0-.55-.45-1-1-1zM0 6.5h24V20c0 .55-.45 1-1 1H1c-.55 0-1-.45-1-1V6.5zM11.5 18c0 .3.2.5.5.5h8c.3 0 .5-.2.5-.5v-1.5c0-.3-.2-.5-.5-.5h-8c-.3 0-.5.2-.5.5V18zm-5.2-4.55l-3.1 3.1c-.25.25-.25.6 0 .8l.9.9c.25.25.6.25.8 0l4.4-4.4a.52.52 0 0 0 0-.8l-4.4-4.4c-.2-.2-.6-.2-.8 0l-.9.9c-.25.2-.25.55 0 .8l3.1 3.1z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/windowsxp.svg b/assets/lib/simple-icons/icons/windowsxp.svg
index 4369b7fa..5ead33eb 100644
--- a/assets/lib/simple-icons/icons/windowsxp.svg
+++ b/assets/lib/simple-icons/icons/windowsxp.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Windows XP icon</title><path d="M9.302 1.415c-1.184.02-2.592.32-4.341 1.044l-2.283 7.949c1.846-.761 3.311-1.114 4.537-1.1a7.596 7.596 0 014.37 1.593l2.296-7.92c-1.26-.855-2.607-1.599-4.58-1.566zm5.75 2.411l-2.256 7.949c2.016 1.367 4.44 2.494 8.907.493L24 4.333h-.042c-4.651 1.931-6.906.846-8.907-.507zM6.617 10.77c-1.184.018-2.591.315-4.335 1.034L0 19.779c4.65-1.93 6.863-.803 8.878.55l2.326-7.99c-1.26-.855-2.613-1.6-4.586-1.57zm5.784 2.344l.011.008.003-.008zm.011.008l-2.294 7.898c2.015 1.367 4.256 2.453 8.906.522l2.297-7.92c-4.641 1.927-6.882.85-8.909-.5Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Windows XP</title><path d="M9.302 1.415c-1.184.02-2.592.32-4.341 1.044l-2.283 7.949c1.846-.761 3.311-1.114 4.537-1.1a7.596 7.596 0 014.37 1.593l2.296-7.92c-1.26-.855-2.607-1.599-4.58-1.566zm5.75 2.411l-2.256 7.949c2.016 1.367 4.44 2.494 8.907.493L24 4.333h-.042c-4.651 1.931-6.906.846-8.907-.507zM6.617 10.77c-1.184.018-2.591.315-4.335 1.034L0 19.779c4.65-1.93 6.863-.803 8.878.55l2.326-7.99c-1.26-.855-2.613-1.6-4.586-1.57zm5.784 2.344l.011.008.003-.008zm.011.008l-2.294 7.898c2.015 1.367 4.256 2.453 8.906.522l2.297-7.92c-4.641 1.927-6.882.85-8.909-.5Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/winmate.svg b/assets/lib/simple-icons/icons/winmate.svg
new file mode 100644
index 00000000..be838ed7
--- /dev/null
+++ b/assets/lib/simple-icons/icons/winmate.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Winmate</title><path d="M5.785 4.058l-4.473.004L1.311.01 19.469 0c3.514.42 3.199 4.047 3.199 4.047l-2.156-.002-2.769 15.888L14.79 4.049l-4.731.005.856 7.376-2.137 8.507L5.785 4.058zM4.491 21.373L1.317 8.52l.009 12.338C1.756 23.983 4.629 24 4.629 24l1.687-.001c-1.393-.69-1.825-2.626-1.825-2.626zm9.237.659l-1.724-6.724-1.673 6.678c-.517 1.652-1.702 2.009-1.702 2.009l6.602-.002c-1.206-.499-1.503-1.961-1.503-1.961zm8.949-17.643l-2.844 15.865c-.711 3.767-2.285 3.738-2.285 3.738l5.141-.008-.012-19.595z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/wipro.svg b/assets/lib/simple-icons/icons/wipro.svg
new file mode 100644
index 00000000..79d31355
--- /dev/null
+++ b/assets/lib/simple-icons/icons/wipro.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Wipro</title><path d="M15.5415 12.0352c0-.8754-.69-1.5851-1.541-1.5851-.8513 0-1.5415.7097-1.5415 1.585 0 .8757.6902 1.5854 1.5416 1.5854.851 0 1.541-.7097 1.541-1.5853zm-1.541.837c-.4373 0-.7927-.3755-.7927-.837 0-.4611.3554-.8366.7928-.8366.437 0 .7923.3755.7923.8366 0 .4615-.3554.837-.7923.837zm-9.5842-2.2084l-.9272 2.8733c-.0148.046-.0665.0835-.1152.0835h-.084c-.0484 0-.1064-.0352-.1287-.078l-.95-1.8242-.9496 1.8243c-.0225.0427-.0803.0779-.1289.0779h-.0842c-.0483 0-.1002-.0374-.115-.0835L.006 10.6638c-.0222-.0693.019-.126.0915-.126h.5677c.0483 0 .1002.0379.115.084l.4688 1.452.8047-1.5458c.0223-.0428.0804-.0779.1289-.0779H2.24c.0485 0 .1063.0351.1289.0779l.805 1.5458.4685-1.452c.0148-.0461.0667-.084.1152-.084h.5672c.0727 0 .1138.0567.0915.126zm1.368 2.7367a.1323.1323 0 01-.1321.1322h-.5726a.1321.1321 0 01-.132-.1322v-2.7304c0-.0729.059-.1322.132-.1322h.5726a.1323.1323 0 01.1322.1322v2.7304zm.7409-2.7305v4.3155c0 .0733.059.1322.1321.1322h.5725a.1318.1318 0 00.132-.1322v-1.497c.2426.085.5106.132.7927.132.8024 0 1.4531-.7097 1.4531-1.5853 0-.8754-.6507-1.5851-1.4531-1.5851-.394 0-.751.171-1.0127.4487l-.0002-.0004-.1018-.2777c-.0167-.0453-.07-.0829-.1183-.0829h-.2642a.1321.1321 0 00-.1321.1322zm.8365.9c.1376-.2239.3713-.3714.6373-.3714.4235 0 .7667.3746.7667.8366 0 .4622-.3432.837-.7667.837-.2396 0-.4599-.063-.6373-.1694V11.57zm3.5755 1.9627h-.5723a.1321.1321 0 01-.1321-.1321V10.67c0-.0729.059-.1322.1321-.1322h.2642c.0483 0 .1016.0376.1183.0829l.1018.2777s.3195-.4483.87-.4483c.5507 0 .6172.1897.5712.2947-.0463.1047-.1714.3878-.197.4454-.0254.058-.0903.099-.1772.0657-.087-.0335-.5128-.1723-.8469.2329v1.9118a.1323.1323 0 01-.1321.1321zm4.6893-10.3422a.704.704 0 01.8628-.4977.7043.7043 0 11-.3647 1.3607.7046.7046 0 01-.498-.863zm1.8466 2.7892a.5286.5286 0 01.1935.722.528.528 0 01-.7218.193.5281.5281 0 01-.1935-.7215.5281.5281 0 01.7218-.1935zm.664 10.9686a.5727.5727 0 010-.8099.5722.5722 0 01.8096 0 .5727.5727 0 010 .81.573.573 0 01-.8095 0zm-2.4577-7.377a.2423.2423 0 01-.4196-.2423.2422.2422 0 11.4196.2422zm-.4196 5.1001a.2423.2423 0 01.4196-.2422.2425.2425 0 01-.0888.331.2426.2426 0 01-.3308-.0888zm3.7296-2.6713a.517.517 0 11-.5169-.5169.517.517 0 01.517.5169zM17.816 3.8893a.7485.7485 0 111.2962.749.7485.7485 0 01-1.2962-.749zm-5.43 10.5742a.154.154 0 11.2666.154.154.154 0 01-.2666-.154zm2.8037-8.7912a.4842.4842 0 11.9354.2502.4843.4843 0 01-.593.3428.4844.4844 0 01-.3424-.593zM13.993 7.8486a.308.308 0 110-.6162.308.308 0 110 .6162zm0 1.0129a.1982.1982 0 11.0002.3962.1982.1982 0 01-.0002-.3962zm0-2.84a.4404.4404 0 110-.881.4404.4404 0 010 .881zm-1.6072 3.5154a.154.154 0 11.2102.0564.1537.1537 0 01-.2102-.0564zm1.6072 5.602a.1982.1982 0 11-.0001-.3963.1982.1982 0 010 .3964zm0 1.0127a.3081.3081 0 010 .6165.3081.3081 0 110-.6165zm3.4944-2.1381a.4399.4399 0 01.6014-.161.44.44 0 01.161.6013.4402.4402 0 01-.7624-.4403zm-3.4944 3.9655a.4404.4404 0 11-.0002.8808.4404.4404 0 01.0002-.8808zm9.5772-8.5426c.1383.5164-.168 1.0476-.6848 1.186-.5165.1383-1.0478-.1684-1.1861-.6849-.1386-.5164.1682-1.0475.6847-1.186.5165-.1384 1.0476.168 1.1862.6849zm-6.694 6.0018a.3963.3963 0 01.5602-.5607.396.396 0 010 .5602.3958.3958 0 01-.5602.0005zm.9736-4.4694a.484.484 0 01.3424-.5928.4841.4841 0 11.2507.9353.484.484 0 01-.593-.3425zm1.4076-2.7157a.6165.6165 0 01.6166 1.0676.6165.6165 0 01-.6166-1.0676zm-.3108-.3913a.5722.5722 0 01-.8095 0 .5725.5725 0 010-.8097.5722.5722 0 01.8095 0 .5725.5725 0 010 .8097zm-1.0968 5.1692a.4842.4842 0 01.9355.2509.4842.4842 0 11-.9355-.251zm-3.0186-5.4263a.3303.3303 0 01.4041-.2336.3303.3303 0 01-.1706.6381.3303.3303 0 01-.2335-.4045zm6.4676-.835c.4213-.2434.96-.0992 1.2031.3218a.8806.8806 0 11-1.5254.8808c-.2429-.421-.0987-.9596.3223-1.2027zm-3.049 2.777a.4401.4401 0 11-.7624.4402.4401.4401 0 11.7624-.4402zm1.3227.9608a.6606.6606 0 01.4667-.8089.6605.6605 0 01.342 1.2758.6605.6605 0 01-.8087-.467zm0 2.9854a.6603.6603 0 111.2756.3416.6602.6602 0 11-1.2756-.3416zm.8594-.7354a.7574.7574 0 11-.0002-1.5146.7574.7574 0 01.0002 1.5146zm-.6756-6.5149a.7921.7921 0 010-1.1207c.3095-.3095.8115-.31 1.1209 0a.7926.7926 0 01-1.1209 1.1207zm-3.2223 2.068a.3522.3522 0 11-.61-.3523.3522.3522 0 01.61.3522zm-.6387 5.5862a.2642.2642 0 01.3738-.0004.2646.2646 0 010 .3738.2638.2638 0 01-.3738 0 .2637.2637 0 010-.3734zm0-4.1666a.2642.2642 0 01.3738-.0004.2642.2642 0 11-.3738.0004zm.5146 3.9917a.2868.2868 0 01-.105-.391.2862.2862 0 01.3912-.1046.2863.2863 0 01-.2862.4956zm-.486 2.3203a.352.352 0 01.129-.4811.352.352 0 01.4811.1288.352.352 0 01-.1289.4811.3521.3521 0 01-.4811-.1288zm.877-5.659a.286.286 0 01-.1048.3909.2867.2867 0 01-.3911-.1049.2862.2862 0 01.4958-.286zm-.2485.9334a.3082.3082 0 11.5955-.1596.3082.3082 0 01-.5955.1596zm0 1.3668a.3083.3083 0 11.5953.1602.3083.3083 0 01-.5953-.1602zm.4008-.3467a.3366.3366 0 11.0001-.6731.3366.3366 0 01-.0001.6731zm.4832-3.7744a.3963.3963 0 11-.5602.5608.3963.3963 0 01.5602-.5608zm-7.416 11.4507a.573.573 0 01-.782.2096.5726.5726 0 01.5725-.9916.5725.5725 0 01.2096.782zM14.814 8.945a.2202.2202 0 11-.114.4253.2202.2202 0 01.114-.4254zm-2.5387 11.8366a.6164.6164 0 11-1.1908-.3189.6164.6164 0 011.1908.319zm2.5387-5.726a.2203.2203 0 01-.1138-.4255.22.22 0 11.1138.4254zm-.1604 5.8739a.6603.6603 0 01-.6604.6602.6603.6603 0 01-.6606-.6602c0-.3649.2959-.6608.6606-.6608.3647 0 .6604.296.6604.6608zm-1.4693-5.9217a.1767.1767 0 01-.1247-.2158.1766.1766 0 01.216-.1245.1761.1761 0 01-.0913.3403zm-.0712 1.3712a.2863.2863 0 11-.5526-.1478.2863.2863 0 01.5526.1478zm-2.795-2.2726a.2202.2202 0 01-.3812.2202.2195.2195 0 01.0805-.3005.2198.2198 0 01.3007.0803zm1.6704 1.8817a.2642.2642 0 11-.4578-.2638.2642.2642 0 01.4578.2638zm.0148-1.8253a.1321.1321 0 11-.1869-.1869.1328.1328 0 01.187 0 .1325.1325 0 010 .187zm-.9966.81a.242.242 0 11-.3423.342.2418.2418 0 010-.342.2417.2417 0 01.3423 0zm.0783 2.7563a.3518.3518 0 01-.4811.1289.3522.3522 0 11.4811-.1289zm9.7924.0285a.7926.7926 0 010 1.121c-.3094.3097-.8114.3093-1.121 0-.3097-.3094-.3095-.8114 0-1.121a.793.793 0 011.121 0zm-1.6198-2.0103a.6169.6169 0 01-.2255-.8423.6168.6168 0 01.842-.2255.6165.6165 0 01-.6166 1.0678zm3.2445 1.1612c-.243.4214-.7818.5656-1.203.3223-.4211-.243-.5653-.7816-.3224-1.2026.2437-.4211.782-.5655 1.203-.3224.4213.2433.5657.7816.3224 1.2027zm-7.2666-.2796a.33.33 0 11-.1706-.638.3301.3301 0 01.1706.638zM24 12c0 .584-.4735 1.058-1.058 1.058-.5843 0-1.0578-.474-1.0578-1.058 0-.5842.4735-1.0579 1.0579-1.0579S24 11.4159 24 12.0001zm-.4297 2.564c-.1386.5164-.6697.8233-1.1862.685-.5165-.1387-.8233-.6698-.6847-1.1862.1383-.5169.6696-.8234 1.1861-.685.5169.1386.8231.6697.6848 1.1861zm-6.583 5.881a.7044.7044 0 11-1.3608.3643.7042.7042 0 01.4981-.8625.7043.7043 0 01.8628.4981zm2.1248-1.0825a.748.748 0 01-.274 1.0221.7482.7482 0 01-1.0222-.2738.748.748 0 01.2738-1.0224.7484.7484 0 011.0224.274zm-3.9225-1.0344a.4843.4843 0 11.9355-.2507.4843.4843 0 01-.9355.2507zm2.2835-.3077a.5284.5284 0 11-.5284-.9153.5284.5284 0 01.5284.9153zm-4.761.2798a.3963.3963 0 01-.7655-.205.396.396 0 01.4853-.2803.3964.3964 0 01.2802.4853zm-.8958-8.2762a.132.132 0 11.1868-.1869.132.132 0 01-.1868.1869zm.0754-1.651a.2643.2643 0 01-.2643-.4576.2642.2642 0 01.2643.4576zm-.8072-4.8355a.6164.6164 0 111.1905-.3188.6164.6164 0 01-1.1905.3188zm-.847 6.0555a.22.22 0 11-.2201.3812.2195.2195 0 01-.0806-.3004.22.22 0 01.3006-.0808zm.7691-.908a.2423.2423 0 01-.3423.3426.2423.2423 0 01.3423-.3426zm-.5319-2.0617a.3524.3524 0 01.6102-.352.3522.3522 0 01-.6102.352zm2.8578-3.5523c0-.3648.2959-.6608.6606-.6608.3647 0 .6604.296.6604.6608a.6606.6606 0 01-.6604.6607.6608.6608 0 01-.6606-.6607zm-.1483 5.9215a.1761.1761 0 11.091.3404.1761.1761 0 01-.091-.3404zm-.9575-3.5729a.3964.3964 0 01.2053.7657.3962.3962 0 01-.4854-.2802.3966.3966 0 01.28-.4855zm.5358 1.9992a.2863.2863 0 11.148.553.2863.2863 0 01-.148-.553zM9.0292 4.5596a.5724.5724 0 01.2094-.7818.5725.5725 0 01.5724.9914.572.572 0 01-.7818-.2096zm-.37 10.5048a.2643.2643 0 11-.458.264.2643.2643 0 01.458-.264zM4.9193 9.4585a.462.462 0 01.566-.3267.462.462 0 01.327.5658.4621.4621 0 01-.5661.3271.4624.4624 0 01-.327-.5662zm.9001-2.1691a.4843.4843 0 11.1772.6616.4845.4845 0 01-.1772-.6616zm2.2292 10.6412a.528.528 0 010 .7472.5286.5286 0 01-.7473 0 .5285.5285 0 010-.7472.5282.5282 0 01.7473 0zM6.676 16.2091a.4842.4842 0 11-.8386.4845.4842.4842 0 01.8386-.4845zm.6255-10.1393a.5285.5285 0 010-.7472.5286.5286 0 01.7473 0 .528.528 0 010 .7472.5282.5282 0 01-.7473 0zM9.6679 7.689a.3086.3086 0 01-.436 0 .3085.3085 0 010-.4362.3086.3086 0 01.436 0 .3085.3085 0 010 .4362zm0 8.6225a.3082.3082 0 11-.4359.4359.3082.3082 0 01.4359-.436zM8.2015 8.6719a.2642.2642 0 11.4574.2642.2642.2642 0 01-.4574-.2642z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/wire.svg b/assets/lib/simple-icons/icons/wire.svg
index 1387b6f3..44c9c493 100644
--- a/assets/lib/simple-icons/icons/wire.svg
+++ b/assets/lib/simple-icons/icons/wire.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Wire icon</title><path d="M24 14.475c.009 4.084-3.296 7.401-7.38 7.41h-.016c-1.637-.015-3.222-.58-4.5-1.605-3.269 2.544-7.981 1.957-10.524-1.313-1-1.286-1.555-2.862-1.58-4.492V2.82h1.41v11.655c-.002 3.314 2.683 6.002 5.996 6.004 1.293.001 2.552-.416 3.589-1.189-1.163-1.335-1.806-3.043-1.815-4.814v-9.54c0-1.557 1.263-2.82 2.82-2.82s2.82 1.263 2.82 2.82v9.54c.006 1.766-.623 3.474-1.77 4.814 2.674 1.957 6.429 1.371 8.383-1.304.745-1.019 1.149-2.248 1.157-3.511V2.82H24v11.655zm-10.59-9.54c0-.778-.632-1.41-1.41-1.41-.779 0-1.41.631-1.41 1.41v9.54c.002 1.41.501 2.776 1.41 3.855.908-1.079 1.408-2.445 1.41-3.855v-9.54z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Wire</title><path d="M24 14.475c.009 4.084-3.296 7.401-7.38 7.41h-.016c-1.637-.015-3.222-.58-4.5-1.605-3.269 2.544-7.981 1.957-10.524-1.313-1-1.286-1.555-2.862-1.58-4.492V2.82h1.41v11.655c-.002 3.314 2.683 6.002 5.996 6.004 1.293.001 2.552-.416 3.589-1.189-1.163-1.335-1.806-3.043-1.815-4.814v-9.54c0-1.557 1.263-2.82 2.82-2.82s2.82 1.263 2.82 2.82v9.54c.006 1.766-.623 3.474-1.77 4.814 2.674 1.957 6.429 1.371 8.383-1.304.745-1.019 1.149-2.248 1.157-3.511V2.82H24v11.655zm-10.59-9.54c0-.778-.632-1.41-1.41-1.41-.779 0-1.41.631-1.41 1.41v9.54c.002 1.41.501 2.776 1.41 3.855.908-1.079 1.408-2.445 1.41-3.855v-9.54z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/wireguard.svg b/assets/lib/simple-icons/icons/wireguard.svg
index fac39dda..5df0de96 100644
--- a/assets/lib/simple-icons/icons/wireguard.svg
+++ b/assets/lib/simple-icons/icons/wireguard.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>WireGuard icon</title><path d="M23.98 11.645S24.533 0 11.735 0C.418 0 .064 11.17.064 11.17S-1.6 24 11.997 24C25.04 24 23.98 11.645 23.98 11.645zM8.155 7.576c2.4-1.47 5.469-.571 6.618 1.638.218.419.246 1.063.108 1.503-.477 1.516-1.601 2.366-3.145 2.728.455-.39.817-.832.933-1.442a2.112 2.112 0 0 0-.364-1.677 2.14 2.14 0 0 0-2.465-.75c-.95.36-1.47 1.228-1.377 2.294.087.99.839 1.632 2.245 1.876-.21.111-.372.193-.53.281a5.113 5.113 0 0 0-1.644 1.43c-.143.192-.24.208-.458.075-2.827-1.729-3.009-6.067.078-7.956zM6.04 18.258c-.455.116-.895.286-1.359.438.227-1.532 2.021-2.943 3.539-2.782a3.91 3.91 0 0 0-.74 2.072c-.504.093-.98.155-1.44.272zM15.703 3.3c.448.017.898.01 1.347.02a2.324 2.324 0 0 1 .334.047 3.249 3.249 0 0 1-.34.434c-.16.15-.341.296-.573.069-.055-.055-.187-.042-.283-.044-.447-.005-.894-.02-1.34-.003a8.323 8.323 0 0 0-1.154.118c-.072.013-.178.25-.146.338.078.207.191.435.359.567.619.49 1.277.928 1.9 1.413.604.472 1.167.99 1.51 1.7.446.928.46 1.9.267 2.877-.322 1.63-1.147 2.98-2.483 3.962-.538.395-1.205.62-1.821.903-.543.25-1.1.465-1.644.712-.98.446-1.53 1.51-1.369 2.615.149 1.015 1.04 1.862 2.059 2.037 1.223.21 2.486-.586 2.785-1.83.336-1.397-.423-2.646-1.845-3.024l-.256-.066c.38-.17.708-.291 1.012-.458q.793-.437 1.558-.925c.15-.096.231-.096.36.014.977.846 1.56 1.898 1.724 3.187.27 2.135-.74 4.096-2.646 5.101-2.948 1.555-6.557-.215-7.208-3.484-.558-2.8 1.418-5.34 3.797-5.83 1.023-.211 1.958-.637 2.685-1.425.47-.508.697-.944.775-1.141a3.165 3.165 0 0 0 .217-1.158 2.71 2.71 0 0 0-.237-.992c-.248-.566-1.2-1.466-1.435-1.656l-2.24-1.754c-.079-.065-.168-.06-.36-.047-.23.016-.815.048-1.067-.018.204-.155.76-.38 1-.56-.726-.49-1.554-.314-2.315-.46.176-.328 1.046-.831 1.541-.888a7.323 7.323 0 0 0-.135-.822c-.03-.111-.154-.22-.263-.283-.262-.154-.541-.281-.843-.434a1.755 1.755 0 0 1 .906-.28 3.385 3.385 0 0 1 .908.088c.54.123.97.042 1.399-.324-.338-.136-.676-.26-1.003-.407a9.843 9.843 0 0 1-.942-.493c.85.118 1.671.437 2.54.32l.022-.118-2.018-.47c1.203-.11 2.323-.128 3.384.388.299.146.61.266.897.432.14.08.233.24.348.365.09.098.164.23.276.29.424.225.89.234 1.366.223l.01-.16c.479.15 1.017.702 1.017 1.105-.776 0-1.55-.003-2.325.004-.083 0-.165.061-.247.094.078.046.155.128.235.131z M14.703 2.153a.118.118 0 0 0-.016.19.179.179 0 0 0 .246.065c.075-.038.148-.078.238-.125-.072-.062-.13-.114-.19-.163-.106-.087-.193-.032-.278.033z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>WireGuard</title><path d="M23.98 11.645S24.533 0 11.735 0C.418 0 .064 11.17.064 11.17S-1.6 24 11.997 24C25.04 24 23.98 11.645 23.98 11.645zM8.155 7.576c2.4-1.47 5.469-.571 6.618 1.638.218.419.246 1.063.108 1.503-.477 1.516-1.601 2.366-3.145 2.728.455-.39.817-.832.933-1.442a2.112 2.112 0 0 0-.364-1.677 2.14 2.14 0 0 0-2.465-.75c-.95.36-1.47 1.228-1.377 2.294.087.99.839 1.632 2.245 1.876-.21.111-.372.193-.53.281a5.113 5.113 0 0 0-1.644 1.43c-.143.192-.24.208-.458.075-2.827-1.729-3.009-6.067.078-7.956zM6.04 18.258c-.455.116-.895.286-1.359.438.227-1.532 2.021-2.943 3.539-2.782a3.91 3.91 0 0 0-.74 2.072c-.504.093-.98.155-1.44.272zM15.703 3.3c.448.017.898.01 1.347.02a2.324 2.324 0 0 1 .334.047 3.249 3.249 0 0 1-.34.434c-.16.15-.341.296-.573.069-.055-.055-.187-.042-.283-.044-.447-.005-.894-.02-1.34-.003a8.323 8.323 0 0 0-1.154.118c-.072.013-.178.25-.146.338.078.207.191.435.359.567.619.49 1.277.928 1.9 1.413.604.472 1.167.99 1.51 1.7.446.928.46 1.9.267 2.877-.322 1.63-1.147 2.98-2.483 3.962-.538.395-1.205.62-1.821.903-.543.25-1.1.465-1.644.712-.98.446-1.53 1.51-1.369 2.615.149 1.015 1.04 1.862 2.059 2.037 1.223.21 2.486-.586 2.785-1.83.336-1.397-.423-2.646-1.845-3.024l-.256-.066c.38-.17.708-.291 1.012-.458q.793-.437 1.558-.925c.15-.096.231-.096.36.014.977.846 1.56 1.898 1.724 3.187.27 2.135-.74 4.096-2.646 5.101-2.948 1.555-6.557-.215-7.208-3.484-.558-2.8 1.418-5.34 3.797-5.83 1.023-.211 1.958-.637 2.685-1.425.47-.508.697-.944.775-1.141a3.165 3.165 0 0 0 .217-1.158 2.71 2.71 0 0 0-.237-.992c-.248-.566-1.2-1.466-1.435-1.656l-2.24-1.754c-.079-.065-.168-.06-.36-.047-.23.016-.815.048-1.067-.018.204-.155.76-.38 1-.56-.726-.49-1.554-.314-2.315-.46.176-.328 1.046-.831 1.541-.888a7.323 7.323 0 0 0-.135-.822c-.03-.111-.154-.22-.263-.283-.262-.154-.541-.281-.843-.434a1.755 1.755 0 0 1 .906-.28 3.385 3.385 0 0 1 .908.088c.54.123.97.042 1.399-.324-.338-.136-.676-.26-1.003-.407a9.843 9.843 0 0 1-.942-.493c.85.118 1.671.437 2.54.32l.022-.118-2.018-.47c1.203-.11 2.323-.128 3.384.388.299.146.61.266.897.432.14.08.233.24.348.365.09.098.164.23.276.29.424.225.89.234 1.366.223l.01-.16c.479.15 1.017.702 1.017 1.105-.776 0-1.55-.003-2.325.004-.083 0-.165.061-.247.094.078.046.155.128.235.131z M14.703 2.153a.118.118 0 0 0-.016.19.179.179 0 0 0 .246.065c.075-.038.148-.078.238-.125-.072-.062-.13-.114-.19-.163-.106-.087-.193-.032-.278.033z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/wireshark.svg b/assets/lib/simple-icons/icons/wireshark.svg
new file mode 100644
index 00000000..0ee013a4
--- /dev/null
+++ b/assets/lib/simple-icons/icons/wireshark.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Wireshark</title><path d="m2.95 0c-1.62 0-2.95 1.32-2.95 2.95v18.1c0 1.63 1.32 2.95 2.95 2.95h18.1c1.62 0 2.95-1.32 2.95-2.95v-18.1c-.00024-1.63-1.32-2.95-2.95-2.95zm0 1.09h18.1c1.04 0 1.85.818 1.85 1.86v14h-5.27c-.335-.796-2.57-6.47.283-10.9a.516.517 0 0 0-.443-.794c-5.24.0827-8.2 3.19-9.74 6.21-1.35 2.64-1.63 4.91-1.69 5.53h-4.95v-14c0-1.04.817-1.86 1.85-1.86zm13.6 5.24c-2.62 5.24.248 11.4.248 11.4a.516.517 0 0 0 .469.301h5.62v3.05c0 1.04-.817 1.86-1.85 1.86h-18.1c-1.04 0-1.85-.818-1.85-1.86v-3.05h5.39a.516.517 0 0 0 .514-.477s.226-2.8 1.66-5.62c1.34-2.62 3.67-5.17 7.91-5.57z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/wish.svg b/assets/lib/simple-icons/icons/wish.svg
index df5d2c8d..4f968579 100644
--- a/assets/lib/simple-icons/icons/wish.svg
+++ b/assets/lib/simple-icons/icons/wish.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Wish icon</title><path d="M21.463,8.653c-0.627,0-1.211,0.511-1.297,1.135l-0.637,4.647c-0.07,0.506-0.313,0.945-0.727,1.317 c-0.415,0.372-0.882,0.558-1.4,0.558c-0.504,0-0.913-0.182-1.224-0.547c-0.313-0.365-0.433-0.808-0.361-1.329l0.385-2.82 c0.012-0.563-0.411-1.003-0.993-1.003h-1.525c-0.582,0-1.127,0.44-1.27,1.003l-0.397,2.82c-0.072,0.521-0.315,0.964-0.729,1.329 c-0.414,0.365-0.872,0.547-1.376,0.547c-0.504,0-0.915-0.186-1.234-0.558c-0.319-0.372-0.443-0.811-0.373-1.317l0.854-6.166 c0.091-0.6-0.265-1.228-0.808-1.482c0,0-6.43-2.68-6.849-2.853C1.077,3.76,0.596,4.15,0.432,4.8L0.039,6.351 C-0.126,7,0.246,7.739,0.863,7.992l4.31,1.784l-0.646,4.659c-0.217,1.563,0.15,2.899,1.1,4.008c0.95,1.11,2.203,1.664,3.76,1.664 c1.437,0,2.748-0.483,3.934-1.451c0.947,0.968,2.133,1.451,3.555,1.451c1.556,0,2.962-0.554,4.22-1.664 c1.257-1.109,1.995-2.446,2.211-4.008c0,0,0.675-4.917,0.688-5.003c0.059-0.429-0.406-0.779-1.032-0.779L21.463,8.653L21.463,8.653 z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Wish</title><path d="M21.463 8.653c-.627 0-1.21.511-1.297 1.135l-.637 4.647c-.07.507-.313.945-.727 1.318-.415.372-.882.558-1.4.558-.504 0-.912-.182-1.224-.547-.313-.365-.433-.808-.361-1.329l.385-2.82a.965.965 0 0 0-.993-1.003h-1.525c-.582 0-1.127.44-1.27 1.003l-.397 2.82a2.11 2.11 0 0 1-.73 1.329c-.413.365-.871.547-1.375.547a1.55 1.55 0 0 1-1.234-.558c-.319-.372-.443-.811-.373-1.318l.854-6.166c.09-.6-.265-1.227-.808-1.482 0 0-6.43-2.68-6.85-2.853C1.078 3.76.597 4.15.433 4.8L.039 6.35c-.165.65.207 1.39.824 1.643l4.31 1.784-.646 4.66c-.217 1.562.15 2.899 1.1 4.008.95 1.11 2.203 1.663 3.76 1.663 1.436 0 2.748-.483 3.934-1.451.947.968 2.133 1.451 3.555 1.451 1.556 0 2.963-.554 4.22-1.663 1.258-1.11 1.995-2.446 2.211-4.009l.688-5.003c.059-.428-.406-.778-1.032-.778h-1.5z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/wistia.svg b/assets/lib/simple-icons/icons/wistia.svg
index c5a7121e..e718a904 100644
--- a/assets/lib/simple-icons/icons/wistia.svg
+++ b/assets/lib/simple-icons/icons/wistia.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Wistia icon</title><path d="M23.69 6.605c.507-3.094-1.24-3.944-1.24-3.944s.073 2.519-4.555 3.053C13.787 6.188 0 5.83 0 5.83l4.43 5.081c1.2 1.378 1.838 1.537 3.187 1.633 1.349.09 4.327.058 6.345-.096 2.206-.169 5.35-.888 7.477-2.535 1.09-.843 2.039-2.016 2.25-3.308m.284 3.205s-.556 1.105-3.33 2.853c-1.182.744-3.637 1.535-6.793 1.84-1.705.166-4.842.031-6.188.031-1.354 0-1.974.285-3.187 1.652L0 21.23s1.55.008 2.72.008c1.17 0 8.488.425 11.735-.468 10.546-2.899 9.518-10.96 9.518-10.96Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Wistia</title><path d="M23.69 6.605c.507-3.094-1.24-3.944-1.24-3.944s.073 2.519-4.555 3.053C13.787 6.188 0 5.83 0 5.83l4.43 5.081c1.2 1.378 1.838 1.537 3.187 1.633 1.349.09 4.327.058 6.345-.096 2.206-.169 5.35-.888 7.477-2.535 1.09-.843 2.039-2.016 2.25-3.308m.284 3.205s-.556 1.105-3.33 2.853c-1.182.744-3.637 1.535-6.793 1.84-1.705.166-4.842.031-6.188.031-1.354 0-1.974.285-3.187 1.652L0 21.23s1.55.008 2.72.008c1.17 0 8.488.425 11.735-.468 10.546-2.899 9.518-10.96 9.518-10.96Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/wix.svg b/assets/lib/simple-icons/icons/wix.svg
index ca640c3a..a1f6f418 100644
--- a/assets/lib/simple-icons/icons/wix.svg
+++ b/assets/lib/simple-icons/icons/wix.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Wix icon</title><path d="M13.731 7.509c-.476.249-.653.67-.653 1.832 0 0 .241-.233.598-.363.26-.094.483-.237.612-.331.401-.295.464-.674.464-1.312 0 0-.656-.018-1.021.174m-2.82.272c-.388.342-.502.887-.502.887l-1.284 4.975L8.057 9.57c-.104-.433-.291-.968-.588-1.33-.378-.46-1.146-.49-1.228-.49-.082 0-.85.03-1.228.49-.296.362-.484.897-.588 1.33l-1.068 4.072-1.284-4.975s-.113-.545-.5-.887C.942 7.227 0 7.345 0 7.345l2.459 9.297s.811.059 1.217-.148c.533-.272.787-.482 1.11-1.747.287-1.127 1.091-4.44 1.166-4.676.038-.116.085-.395.29-.395.208 0 .252.278.288.395.074.236.88 3.549 1.167 4.676.323 1.265.576 1.475 1.11 1.747.405.207 1.216.148 1.216.148l2.46-9.297s-.943-.118-1.572.436m3.84 1.082s-.154.238-.505.434c-.225.126-.441.212-.674.323-.388.186-.494.394-.494.71V16.643s.62.079 1.027-.128c.522-.266.642-.523.647-1.68V9.2h-.001zm6.13 3.153L24 7.376s-1.317-.224-1.969.369c-.417.38-.883 1.063-.883 1.063L20 10.463c-.056.086-.13.18-.245.18-.117 0-.19-.094-.245-.18l-1.148-1.655s-.467-.683-.884-1.063c-.652-.593-1.969-.37-1.969-.37l3.12 4.641-3.112 4.626s1.372.174 2.024-.42c.417-.38.82-.998.82-.998l1.149-1.654c.055-.086.128-.18.245-.18.116 0 .189.094.245.18l1.148 1.654s.427.618.844.998c.652.594 2 .42 2 .42Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Wix</title><path d="M13.731 7.509c-.476.249-.653.67-.653 1.832 0 0 .241-.233.598-.363.26-.094.483-.237.612-.331.401-.295.464-.674.464-1.312 0 0-.656-.018-1.021.174m-2.82.272c-.388.342-.502.887-.502.887l-1.284 4.975L8.057 9.57c-.104-.433-.291-.968-.588-1.33-.378-.46-1.146-.49-1.228-.49-.082 0-.85.03-1.228.49-.296.362-.484.897-.588 1.33l-1.068 4.072-1.284-4.975s-.113-.545-.5-.887C.942 7.227 0 7.345 0 7.345l2.459 9.297s.811.059 1.217-.148c.533-.272.787-.482 1.11-1.747.287-1.127 1.091-4.44 1.166-4.676.038-.116.085-.395.29-.395.208 0 .252.278.288.395.074.236.88 3.549 1.167 4.676.323 1.265.576 1.475 1.11 1.747.405.207 1.216.148 1.216.148l2.46-9.297s-.943-.118-1.572.436m3.84 1.082s-.154.238-.505.434c-.225.126-.441.212-.674.323-.388.186-.494.394-.494.71V16.643s.62.079 1.027-.128c.522-.266.642-.523.647-1.68V9.2h-.001zm6.13 3.153L24 7.376s-1.317-.224-1.969.369c-.417.38-.883 1.063-.883 1.063L20 10.463c-.056.086-.13.18-.245.18-.117 0-.19-.094-.245-.18l-1.148-1.655s-.467-.683-.884-1.063c-.652-.593-1.969-.37-1.969-.37l3.12 4.641-3.112 4.626s1.372.174 2.024-.42c.417-.38.82-.998.82-.998l1.149-1.654c.055-.086.128-.18.245-.18.116 0 .189.094.245.18l1.148 1.654s.427.618.844.998c.652.594 2 .42 2 .42Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/wizzair.svg b/assets/lib/simple-icons/icons/wizzair.svg
index 63123571..d62a9534 100644
--- a/assets/lib/simple-icons/icons/wizzair.svg
+++ b/assets/lib/simple-icons/icons/wizzair.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Wizz Air icon</title><path d="M17.6366 10.393h2.3183l-2.7457 3.5919h-2.3195zm-.1745-.351l-2.9186 3.8194c-.0699.0911-.0812.2063-.0302.308a.2977.2977 0 0 0 .2643.1658h2.6055l2.9424-3.8484a.2817.2817 0 0 0 .0277-.2926c-.0472-.0942-.1429-.1521-.2508-.1521zM9.127 8.1753a.0859.0859 0 0 1 .074-.0421h1.5203l.2184-1.2553a.0823.0823 0 0 1 .0823-.0664l1.423-.001c.0262 0 .0472.0078.0623.0248a.0904.0904 0 0 1 .0197.0682l-.1416.8122 6.69.0049c.0361 0 .062.0218.0747.0429.0078.0156.0183.0472-.0035.0768l-.6041.7888 4.9581-.0013a.0661.0661 0 0 1 .0577.0342.0535.0535 0 0 1-.0005.0583l-4.1208 5.3952c-.047.0588-.0448.2082-.0121.2718.034.0642.1515.156.2251.156l2.8984.0031a.0795.0795 0 0 1 .0623.0278.0813.0813 0 0 1 .0189.0658l-.2203 1.2607a.0823.0823 0 0 1-.0823.066H11.2994l-.1812-.001a.915.915 0 0 1 .0188.1934c0 .567-.4595 1.0269-1.0274 1.0269-.5677 0-1.0274-.4598-1.0274-1.027 0-.5673.4597-1.0266 1.0274-1.0266a1.03 1.03 0 0 1 .9012.5318l4.4943-5.8922c.0723-.1521.0362-.2066-.0027-.2964-.0288-.0677-.1372-.1373-.2556-.136h-3.146L11.297 13.93c-.0078.0361-.0423.0612-.0809.0612H9.7922a.0828.0828 0 0 1-.0628-.0283.0787.0787 0 0 1-.0184-.0658l.8732-4.9824-3.5515 6.9628a.1814.1814 0 0 1-.1578.092l-1.2097.006c-.0432 0-.0788-.0308-.0825-.0678l-.3336-5.0579-2.6239 5.0288a.182.182 0 0 1-.157.0914l-1.227-.0008c-.042 0-.0779-.031-.0814-.071L.36 8.2208a.0874.0874 0 0 1 .0208-.0639c.0148-.0148.0364-.0232.062-.0232H2.092c.045 0 .0828.0367.0828.0847l.2473 5.0088 2.4254-5.0503a.0824.0824 0 0 1 .0733-.0432l1.5034-.0064c.0415 0 .0788.0315.0812.0682l.2443 5.0474zm1.8249-1.7154a.3501.3501 0 0 0-.3447.2896l-.1812 1.0323H9.1472c-.1306 0-.2473.0704-.3137.1923l-1.8003 3.84-.1785-3.7122a.351.351 0 0 0-.3492-.3198h-1.637a.3528.3528 0 0 0-.3135.193l-1.851 3.8544-.1826-3.6977a.3504.3504 0 0 0-.35-.3497H.3506a.3533.3533 0 0 0-.2586.1092c-.0648.0712-.0977.1702-.0912.2732l.8163 7.8411a.35.35 0 0 0 .3487.3115l1.3534.0005a.4463.4463 0 0 0 .3956-.2378l2.067-3.9601.2549 3.8862a.3508.3508 0 0 0 .3479.3115l1.3434.0005a.448.448 0 0 0 .3962-.2397l2.512-4.925-.4865 2.7779a.3553.3553 0 0 0 .076.2872.3507.3507 0 0 0 .268.1245h1.5922c.1653 0 .306-.1151.343-.2812l.7659-4.3713H15.13l-4.1332 5.4092a1.3776 1.3776 0 0 0-.8842-.3198c-.7602 0-1.3807.6194-1.3807 1.3802 0 .7612.6205 1.3804 1.3807 1.3804.6984 0 1.2928-.5337 1.3731-1.2227l10.9119-.0005a.3472.3472 0 0 0 .3444-.2902l.2497-1.4206a.3526.3526 0 0 0-.0777-.2853.348.348 0 0 0-.2678-.1235l-2.8299-.0027 4.126-5.3993c.07-.1046.0765-.2308.0183-.3395a.3309.3309 0 0 0-.2942-.1788h-4.4148l.28-.3657c.0733-.1097.0806-.2432.0188-.3597-.0617-.1144-.1798-.1872-.3085-.1872h-6.44l.0883-.495a.3605.3605 0 0 0-.0815-.2884c-.0658-.0784-.1596-.1213-.265-.1213h-1.592Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Wizz Air</title><path d="M17.6366 10.393h2.3183l-2.7457 3.5919h-2.3195zm-.1745-.351l-2.9186 3.8194c-.0699.0911-.0812.2063-.0302.308a.2977.2977 0 0 0 .2643.1658h2.6055l2.9424-3.8484a.2817.2817 0 0 0 .0277-.2926c-.0472-.0942-.1429-.1521-.2508-.1521zM9.127 8.1753a.0859.0859 0 0 1 .074-.0421h1.5203l.2184-1.2553a.0823.0823 0 0 1 .0823-.0664l1.423-.001c.0262 0 .0472.0078.0623.0248a.0904.0904 0 0 1 .0197.0682l-.1416.8122 6.69.0049c.0361 0 .062.0218.0747.0429.0078.0156.0183.0472-.0035.0768l-.6041.7888 4.9581-.0013a.0661.0661 0 0 1 .0577.0342.0535.0535 0 0 1-.0005.0583l-4.1208 5.3952c-.047.0588-.0448.2082-.0121.2718.034.0642.1515.156.2251.156l2.8984.0031a.0795.0795 0 0 1 .0623.0278.0813.0813 0 0 1 .0189.0658l-.2203 1.2607a.0823.0823 0 0 1-.0823.066H11.2994l-.1812-.001a.915.915 0 0 1 .0188.1934c0 .567-.4595 1.0269-1.0274 1.0269-.5677 0-1.0274-.4598-1.0274-1.027 0-.5673.4597-1.0266 1.0274-1.0266a1.03 1.03 0 0 1 .9012.5318l4.4943-5.8922c.0723-.1521.0362-.2066-.0027-.2964-.0288-.0677-.1372-.1373-.2556-.136h-3.146L11.297 13.93c-.0078.0361-.0423.0612-.0809.0612H9.7922a.0828.0828 0 0 1-.0628-.0283.0787.0787 0 0 1-.0184-.0658l.8732-4.9824-3.5515 6.9628a.1814.1814 0 0 1-.1578.092l-1.2097.006c-.0432 0-.0788-.0308-.0825-.0678l-.3336-5.0579-2.6239 5.0288a.182.182 0 0 1-.157.0914l-1.227-.0008c-.042 0-.0779-.031-.0814-.071L.36 8.2208a.0874.0874 0 0 1 .0208-.0639c.0148-.0148.0364-.0232.062-.0232H2.092c.045 0 .0828.0367.0828.0847l.2473 5.0088 2.4254-5.0503a.0824.0824 0 0 1 .0733-.0432l1.5034-.0064c.0415 0 .0788.0315.0812.0682l.2443 5.0474zm1.8249-1.7154a.3501.3501 0 0 0-.3447.2896l-.1812 1.0323H9.1472c-.1306 0-.2473.0704-.3137.1923l-1.8003 3.84-.1785-3.7122a.351.351 0 0 0-.3492-.3198h-1.637a.3528.3528 0 0 0-.3135.193l-1.851 3.8544-.1826-3.6977a.3504.3504 0 0 0-.35-.3497H.3506a.3533.3533 0 0 0-.2586.1092c-.0648.0712-.0977.1702-.0912.2732l.8163 7.8411a.35.35 0 0 0 .3487.3115l1.3534.0005a.4463.4463 0 0 0 .3956-.2378l2.067-3.9601.2549 3.8862a.3508.3508 0 0 0 .3479.3115l1.3434.0005a.448.448 0 0 0 .3962-.2397l2.512-4.925-.4865 2.7779a.3553.3553 0 0 0 .076.2872.3507.3507 0 0 0 .268.1245h1.5922c.1653 0 .306-.1151.343-.2812l.7659-4.3713H15.13l-4.1332 5.4092a1.3776 1.3776 0 0 0-.8842-.3198c-.7602 0-1.3807.6194-1.3807 1.3802 0 .7612.6205 1.3804 1.3807 1.3804.6984 0 1.2928-.5337 1.3731-1.2227l10.9119-.0005a.3472.3472 0 0 0 .3444-.2902l.2497-1.4206a.3526.3526 0 0 0-.0777-.2853.348.348 0 0 0-.2678-.1235l-2.8299-.0027 4.126-5.3993c.07-.1046.0765-.2308.0183-.3395a.3309.3309 0 0 0-.2942-.1788h-4.4148l.28-.3657c.0733-.1097.0806-.2432.0188-.3597-.0617-.1144-.1798-.1872-.3085-.1872h-6.44l.0883-.495a.3605.3605 0 0 0-.0815-.2884c-.0658-.0784-.1596-.1213-.265-.1213h-1.592Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/wolfram.svg b/assets/lib/simple-icons/icons/wolfram.svg
index 72fef38b..1b2aecb5 100644
--- a/assets/lib/simple-icons/icons/wolfram.svg
+++ b/assets/lib/simple-icons/icons/wolfram.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Wolfram icon</title><path d="M20.105 12.001l3.307-3.708-4.854-1.059.495-4.944-4.55 1.996L12 0 9.495 4.287 4.947 2.291l.494 4.944L.587 8.289l3.305 3.707-3.305 3.713 4.854 1.053-.5 4.945 4.553-1.994L12 24l2.504-4.287 4.55 1.994-.495-4.938 4.854-1.06-3.308-3.708zm1.605 2.792l-2.861-.982-1.899-2.471 2.526.942 2.234 2.511zm.459-6.096l-2.602 2.918-3.066-1.141 1.844-2.612 3.824.835zm-4.288-1.324l-1.533 2.179.088-3.162 1.788-2.415-.343 3.398zm-3.304-2.399l3.091-1.354L15.9 5.998l-2.943 1.049 1.62-2.073zm1.187 1.772l-.096 3.652-3.341 1.12V7.969l3.437-1.223zM12 1.308l1.969 3.371L12 7.199l-1.971-2.521L12 1.308zM9.423 4.974l1.619 2.072-2.948-1.048L6.332 3.62l3.091 1.354zm2.245 2.995v3.549l-3.335-1.12-.102-3.652 3.437 1.223zM7.564 6.39l.086 3.162-1.532-2.179-.341-3.397L7.564 6.39zM1.83 8.692l3.824-.83 1.839 2.612-3.065 1.136L1.83 8.692zm2.694 3.585l2.526-.937-1.9 2.471-2.861.977 2.235-2.511zm-2.093 3.159l2.929-1 3.045.896-2.622.837-3.352-.733zm3.28 5.212l.392-3.896 3.111-.982.082 3.31-3.585 1.568zm3.691-5.708l-3.498-1.03 2.226-2.892 3.335 1.126-2.063 2.796zm2.266 7.191l-1.711-2.934-.066-2.771 1.777 2.597v3.108zm-1.73-6.8L12 12.532l2.063 2.799L12 18.336l-2.062-3.005zm4.104 3.866l-1.715 2.934v-3.107l1.782-2.597-.067 2.77zm-1.514-7.052l3.341-1.126 2.221 2.892-3.499 1.03-2.063-2.796zm2.175 6.935l.077-3.31 3.116.982.386 3.901-3.579-1.573zm3.514-2.912l-2.625-.837 3.049-.896 2.928 1.003-3.352.73z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Wolfram</title><path d="M20.105 12.001l3.307-3.708-4.854-1.059.495-4.944-4.55 1.996L12 0 9.495 4.287 4.947 2.291l.494 4.944L.587 8.289l3.305 3.707-3.305 3.713 4.854 1.053-.5 4.945 4.553-1.994L12 24l2.504-4.287 4.55 1.994-.495-4.938 4.854-1.06-3.308-3.708zm1.605 2.792l-2.861-.982-1.899-2.471 2.526.942 2.234 2.511zm.459-6.096l-2.602 2.918-3.066-1.141 1.844-2.612 3.824.835zm-4.288-1.324l-1.533 2.179.088-3.162 1.788-2.415-.343 3.398zm-3.304-2.399l3.091-1.354L15.9 5.998l-2.943 1.049 1.62-2.073zm1.187 1.772l-.096 3.652-3.341 1.12V7.969l3.437-1.223zM12 1.308l1.969 3.371L12 7.199l-1.971-2.521L12 1.308zM9.423 4.974l1.619 2.072-2.948-1.048L6.332 3.62l3.091 1.354zm2.245 2.995v3.549l-3.335-1.12-.102-3.652 3.437 1.223zM7.564 6.39l.086 3.162-1.532-2.179-.341-3.397L7.564 6.39zM1.83 8.692l3.824-.83 1.839 2.612-3.065 1.136L1.83 8.692zm2.694 3.585l2.526-.937-1.9 2.471-2.861.977 2.235-2.511zm-2.093 3.159l2.929-1 3.045.896-2.622.837-3.352-.733zm3.28 5.212l.392-3.896 3.111-.982.082 3.31-3.585 1.568zm3.691-5.708l-3.498-1.03 2.226-2.892 3.335 1.126-2.063 2.796zm2.266 7.191l-1.711-2.934-.066-2.771 1.777 2.597v3.108zm-1.73-6.8L12 12.532l2.063 2.799L12 18.336l-2.062-3.005zm4.104 3.866l-1.715 2.934v-3.107l1.782-2.597-.067 2.77zm-1.514-7.052l3.341-1.126 2.221 2.892-3.499 1.03-2.063-2.796zm2.175 6.935l.077-3.31 3.116.982.386 3.901-3.579-1.573zm3.514-2.912l-2.625-.837 3.049-.896 2.928 1.003-3.352.73z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/wolframlanguage.svg b/assets/lib/simple-icons/icons/wolframlanguage.svg
index 6dbdd8c1..151ad6c6 100644
--- a/assets/lib/simple-icons/icons/wolframlanguage.svg
+++ b/assets/lib/simple-icons/icons/wolframlanguage.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Wolfram Language icon</title><path d="M14.335 12.432c-.552.149-.615.18-1.164.337-.589-.337-1.107-.526-1.595-.463.057-.306.151-.525.245-.8 1.036-.151 1.805.4 2.514.926zM19.643 19.633a10.796 10.796 0 0 1-1.907 1.521h-.006l-3.702-4.614 3.07.336s1.471.151 1.807 0c.308-.117 1.963-2.449 1.963-2.449s-4.759-3.009-6.384-4.666c.188-2.794-.213-6.509-.213-6.479-1.193 1.195-1.35 1.383-2.544 2.489-.52-1.688-.769-2.269-1.289-3.958-1.568 1.289-2.763 3.464-3.62 6.016a12.29 12.29 0 0 0-.551.656c-.112.157-.23.313-.344.475-.231.326-.45.675-.663 1.032-.15.257-.299.52-.438.788-.063.112-.125.231-.188.35-.913 1.788-1.676 3.789-2.339 5.604A10.825 10.825 0 0 1 1.204 12c0-2.863 1.138-5.614 3.164-7.64S9.137 1.201 12 1.201a10.8 10.8 0 0 1 7.642 3.158 10.831 10.831 0 0 1 3.156 7.64 10.814 10.814 0 0 1-3.155 7.634M12 6.691c.832-.801.951-.92 1.751-1.689.063 1.532.031 2.333-.063 4.203-.463-.458-1.381-1.044-1.381-1.044s-.181-1.07-.307-1.47m3.834 15.464c-6.616 2.393-11.398-2.014-12.417-3.552.006-.014.006-.027.006-.039.92-3.889 2.058-8.535 3.884-9.91.955-1.656 1.231-4.114 2.943-5.402.432 1.288 1.107 3.958 1.57 5.246 2.025 2.026 5.087 4.546 7.146 5.59.212.12.489.981.489.981l-.825 1.038-8.835-.887c-.2-.02-.394-.028-.594-.028-.569 0-1.15.073-1.833.18.432-1.071 1.35-1.936 1.35-1.936s-.855-.519-1.505-.605c.187-.432.681-.989.799-1.138-.243.087-2.025.888-2.207 1.563.857.214 1.469.487 1.469.487s-.949.957-1.131 2.612c0 0 2.82-.431 4.939-.153.063.03.094.03.125.03l1.102.031 3.509 5.841.027.045a.012.012 0 0 1-.011.006m4.652-18.64A12.02 12.02 0 0 0 12 0C8.818 0 5.768 1.27 3.516 3.515 1.272 5.766.002 8.817.002 12s1.27 6.235 3.513 8.478a11.98 11.98 0 0 0 16.971 0c2.251-2.243 3.512-5.296 3.512-8.478s-1.261-6.234-3.512-8.485z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Wolfram Language</title><path d="M14.335 12.431c-.552.15-.615.18-1.164.337-.589-.337-1.107-.526-1.595-.463.057-.306.151-.525.245-.8 1.036-.15 1.805.4 2.514.926zm5.308 7.201a10.795 10.795 0 0 1-1.907 1.52h-.006l-3.702-4.613 3.07.336s1.47.151 1.807 0c.308-.117 1.963-2.449 1.963-2.449s-4.76-3.009-6.384-4.666c.188-2.793-.213-6.508-.213-6.478-1.193 1.195-1.35 1.383-2.544 2.489-.52-1.688-.769-2.27-1.289-3.958-1.568 1.289-2.763 3.464-3.62 6.016a12.29 12.29 0 0 0-.55.656c-.113.157-.23.313-.345.475a16.126 16.126 0 0 0-1.101 1.819c-.063.112-.125.231-.188.35-.913 1.788-1.676 3.79-2.338 5.604A10.824 10.824 0 0 1 1.205 12c0-2.862 1.138-5.613 3.163-7.64A10.785 10.785 0 0 1 12 1.202a10.8 10.8 0 0 1 7.642 3.158A10.83 10.83 0 0 1 22.797 12a10.813 10.813 0 0 1-3.154 7.633M12 6.691c.832-.801.951-.92 1.75-1.69.064 1.533.032 2.334-.062 4.204-.463-.458-1.381-1.044-1.381-1.044S12.126 7.09 12 6.69m3.834 15.463C9.218 24.547 4.436 20.14 3.417 18.602c.006-.014.006-.027.006-.039.92-3.889 2.058-8.535 3.884-9.91.955-1.655 1.231-4.113 2.943-5.401.432 1.288 1.107 3.958 1.57 5.246 2.025 2.025 5.087 4.545 7.146 5.59.212.12.489.98.489.98l-.825 1.038-8.835-.887c-.2-.02-.394-.028-.594-.028-.569 0-1.15.073-1.833.18.432-1.07 1.35-1.936 1.35-1.936s-.855-.519-1.505-.605c.187-.432.681-.989.8-1.138-.244.087-2.026.888-2.208 1.563.857.214 1.47.487 1.47.487s-.95.957-1.132 2.612c0 0 2.82-.43 4.939-.153.063.03.094.03.125.03l1.102.031 3.509 5.84.027.046a.012.012 0 0 1-.011.006m4.652-18.64A12.02 12.02 0 0 0 12 0C8.818 0 5.768 1.27 3.516 3.515a12.025 12.025 0 0 0-3.513 8.484c0 3.183 1.27 6.235 3.512 8.478a11.98 11.98 0 0 0 16.97 0 11.966 11.966 0 0 0 3.512-8.478c0-3.181-1.26-6.233-3.511-8.484z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/wolframmathematica.svg b/assets/lib/simple-icons/icons/wolframmathematica.svg
index 2be76cf4..c41c4858 100644
--- a/assets/lib/simple-icons/icons/wolframmathematica.svg
+++ b/assets/lib/simple-icons/icons/wolframmathematica.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Wolfram Mathematica icon</title><path d="M15.74 10.7c-.53-1.53.14-4 .14-4S13.6 8.01 11.93 8 8.13 6.7 8.13 6.7s.56 2.46.07 4.04c-.48 1.58-2.47 3.34-2.47 3.34s2.58.23 3.85 1.1S12 18.64 12 18.64s.78-2.35 2.32-3.41c1.54-1.07 3.96-1.15 3.96-1.15s-2-1.84-2.54-3.37zm-2 3.69c-1.09.81-1.75 2.19-1.75 2.19s-.76-1.43-1.8-2.22c-1.05-.79-2.57-.97-2.57-.97a5.06 5.06 0 0 0 1.53-2.37c.46-1.54.18-2.73.18-2.73s.92.7 2.62.7c1.7 0 2.79-.7 2.79-.7s-.38 1.58.07 2.7c.44 1.14 1.57 2.41 1.57 2.41s-1.56.17-2.64.99zM13.73 9.6s-.95.38-1.77.37c-.82 0-1.7-.37-1.7-.37.05.58 0 1.15-.17 1.7-.27.86-.91 1.64-.91 1.64A4.23 4.23 0 0 1 12 14.95s.45-.85 1.18-1.33c.5-.31 1.05-.55 1.63-.7 0 0-.74-.78-1.02-1.57-.28-.78-.06-1.75-.06-1.75zM20.1 12l3.31-3.7-4.85-1.07.5-4.94-4.56 2L12 0 9.5 4.29l-4.55-2 .49 4.95L.59 8.29 3.89 12 .6 15.7l4.85 1.07-.5 4.94 4.55-2L12 24l2.5-4.29 4.56 2-.5-4.94 4.85-1.06-3.3-3.71zm-5.27 3.95C14 16.56 12 20.81 12 20.81S10.5 16.95 9 15.95c-1.48-1-5.38-1.22-5.38-1.22s2.99-2.37 3.57-4.47c.59-2.1-.37-5.37-.37-5.37s2.9 2.1 5.08 2.1c2.17 0 5.26-2.1 5.26-2.1s-.82 4.5-.53 5.46c.3.96 3.73 4.38 3.73 4.38s-4.7.62-5.54 1.22z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Wolfram Mathematica</title><path d="M15.74 10.7c-.53-1.53.14-4 .14-4S13.6 8.01 11.93 8 8.13 6.7 8.13 6.7s.56 2.46.07 4.04c-.48 1.58-2.47 3.34-2.47 3.34s2.58.23 3.85 1.1S12 18.64 12 18.64s.78-2.35 2.32-3.41c1.54-1.07 3.96-1.15 3.96-1.15s-2-1.84-2.54-3.37zm-2 3.69c-1.09.81-1.75 2.19-1.75 2.19s-.76-1.43-1.8-2.22c-1.05-.79-2.57-.97-2.57-.97a5.06 5.06 0 0 0 1.53-2.37c.46-1.54.18-2.73.18-2.73s.92.7 2.62.7c1.7 0 2.79-.7 2.79-.7s-.38 1.58.07 2.7c.44 1.14 1.57 2.41 1.57 2.41s-1.56.17-2.64.99zM13.73 9.6s-.95.38-1.77.37c-.82 0-1.7-.37-1.7-.37.05.58 0 1.15-.17 1.7-.27.86-.91 1.64-.91 1.64A4.23 4.23 0 0 1 12 14.95s.45-.85 1.18-1.33c.5-.31 1.05-.55 1.63-.7 0 0-.74-.78-1.02-1.57-.28-.78-.06-1.75-.06-1.75zM20.1 12l3.31-3.7-4.85-1.07.5-4.94-4.56 2L12 0 9.5 4.29l-4.55-2 .49 4.95L.59 8.29 3.89 12 .6 15.7l4.85 1.07-.5 4.94 4.55-2L12 24l2.5-4.29 4.56 2-.5-4.94 4.85-1.06-3.3-3.71zm-5.27 3.95C14 16.56 12 20.81 12 20.81S10.5 16.95 9 15.95c-1.48-1-5.38-1.22-5.38-1.22s2.99-2.37 3.57-4.47c.59-2.1-.37-5.37-.37-5.37s2.9 2.1 5.08 2.1c2.17 0 5.26-2.1 5.26-2.1s-.82 4.5-.53 5.46c.3.96 3.73 4.38 3.73 4.38s-4.7.62-5.54 1.22z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/woo.svg b/assets/lib/simple-icons/icons/woo.svg
index e3085fc1..090ffeb8 100644
--- a/assets/lib/simple-icons/icons/woo.svg
+++ b/assets/lib/simple-icons/icons/woo.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Woo icon</title><path d="M2.227 4.857A2.228 2.228 0 000 7.094v7.457c0 1.236 1.001 2.237 2.237 2.237h9.253l4.229 2.355-.962-2.355h7.006c1.236 0 2.237-1 2.237-2.237V7.094c0-1.236-1-2.237-2.237-2.237zm8.08 1.311c.194.002.372.071.535.2a.769.769 0 01.304.56.851.851 0 01-.098.47c-.382.707-.696 1.894-.951 3.542-.246 1.6-.334 2.846-.275 3.739.02.245-.02.46-.118.647a.632.632 0 01-.52.353c-.255.02-.52-.098-.775-.362-.913-.933-1.639-2.326-2.169-4.18a184.085 184.085 0 00-1.413 2.825c-.578 1.11-1.069 1.678-1.481 1.708-.265.02-.49-.206-.687-.677-.5-1.286-1.04-3.768-1.619-7.448-.03-.255.02-.48.157-.657.137-.186.344-.284.618-.304.5-.04.785.196.854.706.304 2.051.638 3.788.991 5.21L5.809 8.41c.196-.373.441-.57.736-.589.431-.03.696.245.804.824.246 1.305.56 2.414.932 3.356.255-2.492.687-4.288 1.295-5.397.148-.274.363-.412.648-.431a.866.866 0 01.084-.004zm3.734 1.063c.167 0 .343.02.53.06.687.146 1.216.52 1.57 1.137.314.53.47 1.168.47 1.933 0 1.011-.254 1.933-.765 2.777-.588.981-1.354 1.472-2.305 1.472-.167 0-.344-.02-.53-.059-.697-.147-1.217-.52-1.57-1.138-.314-.54-.471-1.187-.471-1.943 0-1.01.255-1.933.765-2.767.599-.981 1.364-1.472 2.306-1.472zm6.152 0c.167 0 .343.02.53.06.696.146 1.216.52 1.57 1.137.314.53.47 1.168.47 1.933 0 1.011-.254 1.933-.765 2.777-.588.981-1.354 1.472-2.305 1.472-.167 0-.344-.02-.53-.059-.697-.147-1.217-.52-1.57-1.138-.314-.54-.471-1.187-.471-1.943 0-1.01.255-1.933.765-2.767.599-.981 1.364-1.472 2.306-1.472zm-6.107 1.645c-.307-.002-.606.201-.889.622a3.173 3.173 0 00-.52 1.168c-.05.225-.069.47-.069.716 0 .284.06.589.177.893.147.382.343.589.579.638.245.049.51-.06.795-.315.363-.323.608-.804.745-1.452.05-.225.069-.47.069-.726a2.49 2.49 0 00-.176-.893c-.148-.382-.344-.588-.58-.637a.714.714 0 00-.131-.014zm6.152 0c-.307-.002-.606.201-.889.622a3.173 3.173 0 00-.52 1.168c-.049.225-.069.47-.069.716 0 .284.06.589.177.893.147.382.344.589.579.638.245.049.51-.06.795-.315.363-.323.608-.804.745-1.452.04-.225.07-.47.07-.726a2.49 2.49 0 00-.177-.893c-.148-.382-.344-.588-.58-.637a.714.714 0 00-.131-.014Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Woo</title><path d="M2.227 4.857A2.228 2.228 0 000 7.094v7.457c0 1.236 1.001 2.237 2.237 2.237h9.253l4.229 2.355-.962-2.355h7.006c1.236 0 2.237-1 2.237-2.237V7.094c0-1.236-1-2.237-2.237-2.237zm8.08 1.311c.194.002.372.071.535.2a.769.769 0 01.304.56.851.851 0 01-.098.47c-.382.707-.696 1.894-.951 3.542-.246 1.6-.334 2.846-.275 3.739.02.245-.02.46-.118.647a.632.632 0 01-.52.353c-.255.02-.52-.098-.775-.362-.913-.933-1.639-2.326-2.169-4.18a184.085 184.085 0 00-1.413 2.825c-.578 1.11-1.069 1.678-1.481 1.708-.265.02-.49-.206-.687-.677-.5-1.286-1.04-3.768-1.619-7.448-.03-.255.02-.48.157-.657.137-.186.344-.284.618-.304.5-.04.785.196.854.706.304 2.051.638 3.788.991 5.21L5.809 8.41c.196-.373.441-.57.736-.589.431-.03.696.245.804.824.246 1.305.56 2.414.932 3.356.255-2.492.687-4.288 1.295-5.397.148-.274.363-.412.648-.431a.866.866 0 01.084-.004zm3.734 1.063c.167 0 .343.02.53.06.687.146 1.216.52 1.57 1.137.314.53.47 1.168.47 1.933 0 1.011-.254 1.933-.765 2.777-.588.981-1.354 1.472-2.305 1.472-.167 0-.344-.02-.53-.059-.697-.147-1.217-.52-1.57-1.138-.314-.54-.471-1.187-.471-1.943 0-1.01.255-1.933.765-2.767.599-.981 1.364-1.472 2.306-1.472zm6.152 0c.167 0 .343.02.53.06.696.146 1.216.52 1.57 1.137.314.53.47 1.168.47 1.933 0 1.011-.254 1.933-.765 2.777-.588.981-1.354 1.472-2.305 1.472-.167 0-.344-.02-.53-.059-.697-.147-1.217-.52-1.57-1.138-.314-.54-.471-1.187-.471-1.943 0-1.01.255-1.933.765-2.767.599-.981 1.364-1.472 2.306-1.472zm-6.107 1.645c-.307-.002-.606.201-.889.622a3.173 3.173 0 00-.52 1.168c-.05.225-.069.47-.069.716 0 .284.06.589.177.893.147.382.343.589.579.638.245.049.51-.06.795-.315.363-.323.608-.804.745-1.452.05-.225.069-.47.069-.726a2.49 2.49 0 00-.176-.893c-.148-.382-.344-.588-.58-.637a.714.714 0 00-.131-.014zm6.152 0c-.307-.002-.606.201-.889.622a3.173 3.173 0 00-.52 1.168c-.049.225-.069.47-.069.716 0 .284.06.589.177.893.147.382.344.589.579.638.245.049.51-.06.795-.315.363-.323.608-.804.745-1.452.04-.225.07-.47.07-.726a2.49 2.49 0 00-.177-.893c-.148-.382-.344-.588-.58-.637a.714.714 0 00-.131-.014Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/woocommerce.svg b/assets/lib/simple-icons/icons/woocommerce.svg
index 9e33a0b4..cbbcf4bc 100644
--- a/assets/lib/simple-icons/icons/woocommerce.svg
+++ b/assets/lib/simple-icons/icons/woocommerce.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>WooCommerce icon</title><path d="M.754 9.58a.754.754 0 00-.754.758v2.525c0 .42.339.758.758.758h3.135l1.431.799-.326-.799h2.373a.757.757 0 00.758-.758v-2.525a.757.757 0 00-.758-.758H.754zm2.709.445h.03c.065.001.124.023.179.067a.26.26 0 01.103.19.29.29 0 01-.033.16c-.13.239-.236.64-.322 1.199-.083.541-.114.965-.094 1.267a.392.392 0 01-.039.219.213.213 0 01-.176.12c-.086.006-.177-.034-.263-.124-.31-.316-.555-.788-.735-1.416-.216.425-.375.744-.478.957-.196.376-.363.568-.502.578-.09.007-.166-.069-.233-.228-.17-.436-.352-1.277-.548-2.524a.297.297 0 01.054-.222c.047-.064.116-.095.21-.102.169-.013.265.065.288.238.103.695.217 1.284.336 1.766l.727-1.387c.066-.126.15-.192.25-.199.146-.01.237.083.273.28.083.441.188.817.315 1.136.086-.844.233-1.453.44-1.828a.255.255 0 01.218-.147zm1.293.36c.056 0 .116.006.18.02.232.05.411.177.53.386.107.18.161.395.161.654 0 .343-.087.654-.26.94-.2.332-.459.5-.781.5a.88.88 0 01-.18-.022.763.763 0 01-.531-.384 1.287 1.287 0 01-.158-.659c0-.342.085-.655.258-.937.202-.333.462-.498.78-.498zm2.084 0c.056 0 .116.006.18.02.236.05.411.177.53.386.107.18.16.395.16.654 0 .343-.086.654-.259.94-.2.332-.459.5-.781.5a.88.88 0 01-.18-.022.763.763 0 01-.531-.384 1.287 1.287 0 01-.16-.659c0-.342.087-.655.26-.937.202-.333.462-.498.78-.498zm4.437.047c-.305 0-.546.102-.718.304-.173.203-.256.49-.256.856 0 .395.086.697.256.906.17.21.418.316.744.316.315 0 .559-.107.728-.316.17-.21.256-.504.256-.883s-.087-.673-.26-.879c-.176-.202-.424-.304-.75-.304zm-1.466.002a1.13 1.13 0 00-.84.326c-.223.22-.332.499-.332.838 0 .362.108.658.328.88.22.223.505.336.861.336.103 0 .22-.016.346-.052v-.54c-.117.034-.216.051-.303.051a.545.545 0 01-.422-.177c-.106-.12-.16-.278-.16-.48 0-.19.053-.348.156-.468a.498.498 0 01.397-.181c.103 0 .212.015.332.049v-.537a1.394 1.394 0 00-.363-.045zm12.414 0a1.135 1.135 0 00-.84.326c-.223.22-.332.499-.332.838 0 .362.108.658.328.88.22.223.506.336.861.336.103 0 .22-.016.346-.052v-.54c-.116.034-.216.051-.303.051a.545.545 0 01-.422-.177c-.106-.12-.16-.278-.16-.48 0-.19.053-.348.156-.468a.498.498 0 01.397-.181c.103 0 .212.015.332.049v-.537a1.394 1.394 0 00-.363-.045zm-9.598.06l-.29 2.264h.579l.156-1.559.395 1.559h.412l.379-1.555.164 1.555h.603l-.304-2.264h-.791l-.12.508c-.03.13-.06.264-.087.4l-.067.352a29.97 29.97 0 00-.258-1.26h-.771zm2.768 0l-.29 2.264h.579l.156-1.559.396 1.559h.412l.375-1.555.165 1.555h.603l-.305-2.264h-.789l-.119.508c-.03.13-.06.264-.086.4l-.066.352c-.063-.352-.15-.771-.26-1.26h-.771zm3.988 0v2.264h.611v-1.031h.012l.494 1.03h.645l-.489-1.019a.61.61 0 00.37-.552.598.598 0 00-.25-.506c-.167-.123-.394-.186-.68-.186h-.713zm3.377 0v2.264H24v-.483h-.63v-.414h.54v-.468h-.54v-.416h.626v-.483H22.76zm-4.793.004v2.264h1.24v-.483h-.627v-.416h.541v-.468h-.54v-.415h.622v-.482h-1.236zm2.025.432c.146.003.25.025.313.072.063.046.091.12.091.227 0 .156-.135.236-.404.24v-.54zm-15.22.011c-.104 0-.205.069-.301.211a1.078 1.078 0 00-.2.639c0 .096.02.2.06.303.049.13.117.198.196.215.083.016.173-.02.27-.106.123-.11.205-.273.252-.492.016-.077.023-.16.023-.246 0-.097-.02-.2-.06-.303-.05-.13-.116-.198-.196-.215a.246.246 0 00-.045-.006zm2.083 0c-.103 0-.204.069-.3.211a1.078 1.078 0 00-.2.639c0 .096.02.2.06.303.049.13.117.198.196.215.083.016.173-.02.27-.106.123-.11.205-.273.252-.492.013-.077.023-.16.023-.246 0-.097-.02-.2-.06-.303-.05-.13-.116-.198-.196-.215a.246.246 0 00-.045-.006zm4.428.006c.233 0 .354.218.354.66-.004.273-.038.46-.098.553a.293.293 0 01-.262.139.266.266 0 01-.242-.139c-.056-.093-.084-.28-.084-.562 0-.436.11-.65.332-.65Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>WooCommerce</title><path d="M.754 9.58a.754.754 0 00-.754.758v2.525c0 .42.339.758.758.758h3.135l1.431.799-.326-.799h2.373a.757.757 0 00.758-.758v-2.525a.757.757 0 00-.758-.758H.754zm2.709.445h.03c.065.001.124.023.179.067a.26.26 0 01.103.19.29.29 0 01-.033.16c-.13.239-.236.64-.322 1.199-.083.541-.114.965-.094 1.267a.392.392 0 01-.039.219.213.213 0 01-.176.12c-.086.006-.177-.034-.263-.124-.31-.316-.555-.788-.735-1.416-.216.425-.375.744-.478.957-.196.376-.363.568-.502.578-.09.007-.166-.069-.233-.228-.17-.436-.352-1.277-.548-2.524a.297.297 0 01.054-.222c.047-.064.116-.095.21-.102.169-.013.265.065.288.238.103.695.217 1.284.336 1.766l.727-1.387c.066-.126.15-.192.25-.199.146-.01.237.083.273.28.083.441.188.817.315 1.136.086-.844.233-1.453.44-1.828a.255.255 0 01.218-.147zm1.293.36c.056 0 .116.006.18.02.232.05.411.177.53.386.107.18.161.395.161.654 0 .343-.087.654-.26.94-.2.332-.459.5-.781.5a.88.88 0 01-.18-.022.763.763 0 01-.531-.384 1.287 1.287 0 01-.158-.659c0-.342.085-.655.258-.937.202-.333.462-.498.78-.498zm2.084 0c.056 0 .116.006.18.02.236.05.411.177.53.386.107.18.16.395.16.654 0 .343-.086.654-.259.94-.2.332-.459.5-.781.5a.88.88 0 01-.18-.022.763.763 0 01-.531-.384 1.287 1.287 0 01-.16-.659c0-.342.087-.655.26-.937.202-.333.462-.498.78-.498zm4.437.047c-.305 0-.546.102-.718.304-.173.203-.256.49-.256.856 0 .395.086.697.256.906.17.21.418.316.744.316.315 0 .559-.107.728-.316.17-.21.256-.504.256-.883s-.087-.673-.26-.879c-.176-.202-.424-.304-.75-.304zm-1.466.002a1.13 1.13 0 00-.84.326c-.223.22-.332.499-.332.838 0 .362.108.658.328.88.22.223.505.336.861.336.103 0 .22-.016.346-.052v-.54c-.117.034-.216.051-.303.051a.545.545 0 01-.422-.177c-.106-.12-.16-.278-.16-.48 0-.19.053-.348.156-.468a.498.498 0 01.397-.181c.103 0 .212.015.332.049v-.537a1.394 1.394 0 00-.363-.045zm12.414 0a1.135 1.135 0 00-.84.326c-.223.22-.332.499-.332.838 0 .362.108.658.328.88.22.223.506.336.861.336.103 0 .22-.016.346-.052v-.54c-.116.034-.216.051-.303.051a.545.545 0 01-.422-.177c-.106-.12-.16-.278-.16-.48 0-.19.053-.348.156-.468a.498.498 0 01.397-.181c.103 0 .212.015.332.049v-.537a1.394 1.394 0 00-.363-.045zm-9.598.06l-.29 2.264h.579l.156-1.559.395 1.559h.412l.379-1.555.164 1.555h.603l-.304-2.264h-.791l-.12.508c-.03.13-.06.264-.087.4l-.067.352a29.97 29.97 0 00-.258-1.26h-.771zm2.768 0l-.29 2.264h.579l.156-1.559.396 1.559h.412l.375-1.555.165 1.555h.603l-.305-2.264h-.789l-.119.508c-.03.13-.06.264-.086.4l-.066.352c-.063-.352-.15-.771-.26-1.26h-.771zm3.988 0v2.264h.611v-1.031h.012l.494 1.03h.645l-.489-1.019a.61.61 0 00.37-.552.598.598 0 00-.25-.506c-.167-.123-.394-.186-.68-.186h-.713zm3.377 0v2.264H24v-.483h-.63v-.414h.54v-.468h-.54v-.416h.626v-.483H22.76zm-4.793.004v2.264h1.24v-.483h-.627v-.416h.541v-.468h-.54v-.415h.622v-.482h-1.236zm2.025.432c.146.003.25.025.313.072.063.046.091.12.091.227 0 .156-.135.236-.404.24v-.54zm-15.22.011c-.104 0-.205.069-.301.211a1.078 1.078 0 00-.2.639c0 .096.02.2.06.303.049.13.117.198.196.215.083.016.173-.02.27-.106.123-.11.205-.273.252-.492.016-.077.023-.16.023-.246 0-.097-.02-.2-.06-.303-.05-.13-.116-.198-.196-.215a.246.246 0 00-.045-.006zm2.083 0c-.103 0-.204.069-.3.211a1.078 1.078 0 00-.2.639c0 .096.02.2.06.303.049.13.117.198.196.215.083.016.173-.02.27-.106.123-.11.205-.273.252-.492.013-.077.023-.16.023-.246 0-.097-.02-.2-.06-.303-.05-.13-.116-.198-.196-.215a.246.246 0 00-.045-.006zm4.428.006c.233 0 .354.218.354.66-.004.273-.038.46-.098.553a.293.293 0 01-.262.139.266.266 0 01-.242-.139c-.056-.093-.084-.28-.084-.562 0-.436.11-.65.332-.65Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/wordpress.svg b/assets/lib/simple-icons/icons/wordpress.svg
index 41a187ee..08ecac10 100644
--- a/assets/lib/simple-icons/icons/wordpress.svg
+++ b/assets/lib/simple-icons/icons/wordpress.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>WordPress icon</title><path d="M21.469 6.825c.84 1.537 1.318 3.3 1.318 5.175 0 3.979-2.156 7.456-5.363 9.325l3.295-9.527c.615-1.54.82-2.771.82-3.864 0-.405-.026-.78-.07-1.11m-7.981.105c.647-.03 1.232-.105 1.232-.105.582-.075.514-.93-.067-.899 0 0-1.755.135-2.88.135-1.064 0-2.85-.15-2.85-.15-.585-.03-.661.855-.075.885 0 0 .54.061 1.125.09l1.68 4.605-2.37 7.08L5.354 6.9c.649-.03 1.234-.1 1.234-.1.585-.075.516-.93-.065-.896 0 0-1.746.138-2.874.138-.2 0-.438-.008-.69-.015C4.911 3.15 8.235 1.215 12 1.215c2.809 0 5.365 1.072 7.286 2.833-.046-.003-.091-.009-.141-.009-1.06 0-1.812.923-1.812 1.914 0 .89.513 1.643 1.06 2.531.411.72.89 1.643.89 2.977 0 .915-.354 1.994-.821 3.479l-1.075 3.585-3.9-11.61.001.014zM12 22.784c-1.059 0-2.081-.153-3.048-.437l3.237-9.406 3.315 9.087c.024.053.05.101.078.149-1.12.393-2.325.609-3.582.609M1.211 12c0-1.564.336-3.05.935-4.39L7.29 21.709C3.694 19.96 1.212 16.271 1.211 12M12 0C5.385 0 0 5.385 0 12s5.385 12 12 12 12-5.385 12-12S18.615 0 12 0"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>WordPress</title><path d="M21.469 6.825c.84 1.537 1.318 3.3 1.318 5.175 0 3.979-2.156 7.456-5.363 9.325l3.295-9.527c.615-1.54.82-2.771.82-3.864 0-.405-.026-.78-.07-1.11m-7.981.105c.647-.03 1.232-.105 1.232-.105.582-.075.514-.93-.067-.899 0 0-1.755.135-2.88.135-1.064 0-2.85-.15-2.85-.15-.585-.03-.661.855-.075.885 0 0 .54.061 1.125.09l1.68 4.605-2.37 7.08L5.354 6.9c.649-.03 1.234-.1 1.234-.1.585-.075.516-.93-.065-.896 0 0-1.746.138-2.874.138-.2 0-.438-.008-.69-.015C4.911 3.15 8.235 1.215 12 1.215c2.809 0 5.365 1.072 7.286 2.833-.046-.003-.091-.009-.141-.009-1.06 0-1.812.923-1.812 1.914 0 .89.513 1.643 1.06 2.531.411.72.89 1.643.89 2.977 0 .915-.354 1.994-.821 3.479l-1.075 3.585-3.9-11.61.001.014zM12 22.784c-1.059 0-2.081-.153-3.048-.437l3.237-9.406 3.315 9.087c.024.053.05.101.078.149-1.12.393-2.325.609-3.582.609M1.211 12c0-1.564.336-3.05.935-4.39L7.29 21.709C3.694 19.96 1.212 16.271 1.211 12M12 0C5.385 0 0 5.385 0 12s5.385 12 12 12 12-5.385 12-12S18.615 0 12 0"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/workplace.svg b/assets/lib/simple-icons/icons/workplace.svg
index ec00be20..920ab685 100644
--- a/assets/lib/simple-icons/icons/workplace.svg
+++ b/assets/lib/simple-icons/icons/workplace.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Workplace icon</title><path d="M12.725 0C11.114 0 9.55.317 8.078.943a11.892 11.892 0 00-3.793 2.573A11.986 11.986 0 00.79 12a11.986 11.986 0 003.496 8.484 11.892 11.892 0 003.793 2.573c1.472.626 3.042.943 4.652.943.867 0 1.718-.094 2.565-.28v-2.534a9.524 9.524 0 01-2.565.353 9.406 9.406 0 01-6.71-2.795A9.502 9.502 0 013.24 12a9.5 9.5 0 012.778-6.744 9.398 9.398 0 016.707-2.795c4.439 0 8.037 3.618 8.037 8.082 0 1.647-.49 3.181-1.332 4.459l-2.09-5.166c-.306-.755-.67-1.895-2.059-1.895-1.387 0-1.75 1.14-2.054 1.895l-1.922 4.771-2.578-6.544h-2.71l3.213 7.95c.326.807.68 1.897 2.077 1.897 1.395 0 1.747-1.09 2.072-1.896l1.904-4.727 1.914 4.727c.387.973.797 1.894 2.07 1.894.903 0 1.475-.583 1.788-.959a10.54 10.54 0 002.156-6.406C23.21 4.72 18.516 0 12.725 0Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Workplace</title><path d="M23.268 10.541C23.268 4.715 18.544 0 12.728 0c-1.614 0-3.191.317-4.663.952a11.952 11.952 0 00-3.817 2.574 11.915 11.915 0 00-3.516 8.478 11.924 11.924 0 003.516 8.48 12.05 12.05 0 003.817 2.573c1.472.626 3.05.943 4.671.943 1.56 0 3.05-.3 4.416-.837l-.908-2.292a9.448 9.448 0 01-3.508.67 9.481 9.481 0 01-6.743-2.794A9.481 9.481 0 013.2 12.004c0-2.547.996-4.944 2.794-6.742a9.496 9.496 0 016.743-2.794 8.072 8.072 0 016.734 12.524l-2.098-5.165c-.308-.758-.679-1.895-2.071-1.895-1.393 0-1.763 1.146-2.063 1.895l-1.93 4.769-2.591-6.54H5.993l3.226 7.95c.326.802.688 1.895 2.09 1.895 1.4 0 1.753-1.093 2.08-1.895l1.912-4.724 1.921 4.724c.388.978.802 1.895 2.08 1.895.908 0 1.481-.582 1.798-.96a10.493 10.493 0 002.168-6.4Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/worldhealthorganization.svg b/assets/lib/simple-icons/icons/worldhealthorganization.svg
index 6d25ba71..41f7a2b0 100644
--- a/assets/lib/simple-icons/icons/worldhealthorganization.svg
+++ b/assets/lib/simple-icons/icons/worldhealthorganization.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>World Health Organization icon</title><path d="M12.0214 1.4122c-1.064 0-.6118 1.5783-.5273 2.0925 0 .025.0857 3.5707.1024 4.3789.1619-.0429.3226-.0822.4761-.119l.3214-.081c.0154-.782.094-4.1658.0964-4.1837.0702-.551.6272-2.0877-.469-2.0877zm-.3118 12.0405c.119-.0405.238-.0762.3452-.1107l.2297-.0714c0-.2274.069-3.372.0809-3.9433a7.2271 7.2271 0 0 0-.732.2107c.0083.4285.0702 3.5719.0762 3.9147zm.3928 1.1926c-.0405.0143-.144.0583-.2095.081-.0655.0226-.1571.0606-.1571.0845 0 .0238.0666 3.6195.0666 3.6992 0 .744.3785.7487.3785 0 0-.0535.0762-3.9159.0762-3.9159s-.0905.0298-.1547.0512zm-.8558-10.1468a5.4953 5.4953 0 0 0-.8332.3392c-.2975.0988-.7141.119-1.151.588a5.8905 5.8905 0 0 0-.3963.5094c-.131.188-.1369.4904-.238.6535-.1381.238-.1048.3701-.1048.3701v.0072a.632.632 0 0 1-.1595.2952.6046.6046 0 0 1-.5546.2213c.1975.0988.476-.0392.476-.0392a3.6433 3.6433 0 0 0-.1047.3927c.2214-.501.425-.6843.488-.7355.0952.0214.2928.013.6594-.1976.4142-.238 1.0367-.6249 1.2129-.87a1.6175 1.6175 0 0 1 .7332-.5535c-.0131-.3773-.0203-.7035-.0274-.9808zM9.4993 6.0637L9.284 6.11l.257-.413.3.0095zm1.2795 8.64c0 .4665.3452.714.6892.9128 0-.0785-.0143-.801-.0143-.8129.0071-.144.1464-.2309.2595-.2845a5.6 5.6 0 0 1 .5463-.2082c.1023-.0358.1892-.0703.2868-.0988.6904-.2083 1.489-.4761 1.489-1.3093 0-.8332-.6844-1.1902-1.4283-1.4438 0 .2678-.013.6594-.019.9296.3166.119.526.275.526.5142 0 .3011-.3213.476-.5486.5618a5.9252 5.9252 0 0 1-.2797.0976c-.1833.0571-.381.119-.5654.1904a2.7126 2.7126 0 0 0-.2797.119c-.3285.1643-.663.406-.6618.832zm4.5753-8.1496c0-.8534-.619-1.8009-2.1365-2.1353a3.6528 3.6528 0 0 0-.463-.0536c0 .1286-.0095.4237-.0095.4237 0 .0929-.0095.4345-.012.5083a2.1424 2.1424 0 0 1 .2917.0404c.882.2107 1.1974.7142 1.1974 1.2165 0 .8105-.6927 1.1164-1.5473 1.3473l-.2821.0738c-.2583.0643-.5237.1262-.7868.1964a10.782 10.782 0 0 0-.2797.0797c-.9438.288-1.7556.7427-1.7556 1.9044 0 1.1617.926 1.5878 1.8294 1.8663q-.0083-.4987-.019-1.0022c-.3988-.1868-.6797-.4332-.6797-.8474 0-.4142.256-.6499.6475-.8332a3.0192 3.0192 0 0 1 .2786-.1083c.225-.0762.476-.1416.7439-.2059l.282-.0678c1.2724-.2976 2.7007-.6963 2.7007-2.4031zm-2.8482 9.5362c.4284.2166.8236.5165.989 1.0843.0726-.9403-.4546-1.3474-.9771-1.6223l-.012.538zM19.5199 5.29c.4595.5475 1.2629.87 1.733 1.4188-.3368-1.6223-1.589-2.947-3.0696-3.2637.7225.544.8784 1.2998 1.3366 1.845zM1.7235 9.4023c1.02-2.2198 2.5423-1.7497 3.1862-3.8647-.357.6487-2.0234.9224-2.7982 2.5852.394-.988.1964-2.4995.863-3.3148-1.9926 1.47-1.144 3.848-1.251 4.5943zm1.8472 5.324c.1833.864-.357 2.1114.5 3.304-.8856-.9926-2.7614-1.245-3.5256-2.7542.9522 3.6898 3.4517 2.928 4.5694 3.729-.9237-1.327-.1679-2.209-1.5438-4.2789zm-.2868 2.315c-.5463-2.0603.4273-2.7745-.3166-4.7503-.0774 1.114-.8201 1.6568-.319 3.6898C1.7639 14.2597.3963 13.6169 0 12.4338c.0274 3.2351 2.6269 3.7148 3.2839 4.6075zm3.992 3.4517c-.7653-1.0594-.238-1.658-2.3923-3.5815.4546.7023-.0143 1.5854 1.4354 2.959-1.4188-.8332-3.3755-.4761-4.3194-1.5962 1.6211 3.103 4.4694 1.8366 5.2763 2.2222zm10.4051-.6225c1.4497-1.3736.9808-2.2615 1.4354-2.959-2.1495 1.9235-1.627 2.5221-2.3923 3.5815.807-.3857 3.6552.8807 5.2751-2.2187-.9427 1.1213-2.8994.763-4.3182 1.5997zm2.2484-1.8437c.8534-1.1903.3166-2.44.4999-3.3041-1.376 2.0698-.6201 2.9518-1.5473 4.2848 1.1236-.801 3.6135-.0416 4.5693-3.729-.763 1.5069-2.6364 1.7592-3.522 2.7519zm-3.435 2.6126a10.617 10.617 0 0 0-2.3508-.3571 5.6834 5.6834 0 0 0-2.1424.3642 5.687 5.687 0 0 0-2.1424-.3642 10.617 10.617 0 0 0-2.3508.357c-1.2938.344-2.4114.6106-3.3862.119.9343.8332 2.0234 1.1249 3.5981.9523 1.3093-.1405 2.3698-.7963 3.6052-.7868h.0488a6.6023 6.6023 0 0 0-2.0377 1.5842l.5952.0798s.6272-1.2605 2.0698-1.589c1.4426.3285 2.0698 1.589 2.0698 1.589l.5951-.0798a6.6213 6.6213 0 0 0-2.0377-1.5758h.0488c1.2355-.0096 2.2936.6463 3.604.7867 1.5748.1702 2.665-.1262 3.5994-.9522-.9748.4868-2.0925.2202-3.3863-.1238zM3.0553 10.0569c-.5333 1.0236-1.3617 1.2581-1.27 3.3767-.45-1.883-1.5188-2.5804-1.5057-3.7813-.7427 3.1303 1.2426 3.5016 1.752 4.8133-.075-1.8794 1.1248-2.259 1.0236-4.4087zm.745-2.4162c-.1856.2595-.3154.3702-.8105.7785a4.0194 4.0194 0 0 0-1.4426 2.353c.0512-1.1473-.6582-2.7958-.1869-3.998-1.8246 2.577.1048 4.1207.1726 5.0538.4737-1.796 1.5616-1.8103 2.2674-4.1873zm18.6511 3.1316A4.0254 4.0254 0 0 0 21.01 8.4192c-.4951-.4083-.6249-.519-.8105-.7785.7058 2.3805 1.7937 2.3912 2.2614 4.1873.0679-.9331 1.9972-2.4769.1714-5.0537.4761 1.202-.232 2.8506-.1809 3.998zm1.5473 1.6663c-.3963 1.1831-1.764 1.8258-2.6483 3.5517.5011-2.0377-.238-2.5805-.319-3.6898-.7439 1.9782.238 2.6888-.3166 4.7503.6582-.9022 3.2577-1.3819 3.2851-4.617zm-3.0506-2.3817c-.1011 2.1496 1.0998 2.5293 1.0236 4.404.5106-1.3093 2.4995-1.683 1.752-4.8134.0143 1.201-1.0545 1.9044-1.5008 3.7754.0833-2.1079-.7451-2.3424-1.2748-3.366zM4.4824 5.296c.4607-.5474.6166-1.3009 1.3379-1.8448-1.4807.3166-2.7376 1.6413-3.0697 3.2636.463-.5546 1.2677-.8772 1.727-1.4247zm14.6126.2476c.644 2.1151 2.1663 1.645 3.1851 3.8648-.106-.7463.7427-3.1244-1.2497-4.5944.6665.8165.469 2.327.8629 3.3148-.7773-1.6687-2.44-1.9424-2.803-2.5911zm-5.1692 1.195a4.9895 4.9895 0 0 0-1.2176-.3273v.2714a4.761 4.761 0 0 1 1.1188.307.7141.7141 0 0 0 .0988-.251zM13.6175 4.12l.081-.0726-.1548-.0655-.407-.0083-.106.0738-.238-.0202v.0583a4.136 4.136 0 0 1 .419.044l.1987-.0178zm-.789 8.778c0-.069-.0917-.1368-.2274-.2011h-.025c0 .056 0 .332-.0084.4666.1679-.075.2607-.156.2607-.2655zM8.1126 7.7205a1.2997 1.2997 0 0 1 .0345-.1488.6891.6891 0 0 1-.1666.0167zm3.8956 11.9738a8.3031 8.3031 0 0 0 .8463-16.5598c0 .0155 0 .0321-.0095.0476-.0167.081-.0322.1535-.044.2178a8.0163 8.0163 0 0 1 4.8359 2.2615l-.9165.9165.0345-.162-.119-.0523-.1643-.0095.0345-.106-.1106-.3749-.2286-.2511-.7141-.3773-.062.0655-.1296.038a2.1424 2.1424 0 0 1 .3785 1.2034v.163l.357.4464-.1666.038.1107.1667-.313.3118-.1262-.238a2.133 2.133 0 0 1-.238.4678l.0702.0642-.9653.9653a3.2917 3.2917 0 0 0-.181-.1607 4.5833 4.5833 0 0 1-.2832.119l.0821.0643-.0488.0488-.119.0631-.0417.119-.0702-.0702-.2035.0679.056.0892.1404-.0369.0916.0072.0072-.05.0702-.0357.0214-.0417.1262-.0357h.0988c.019.0167.0392.0345.057.0524l-.388.369-.0285-.0405-.4.0654-.0892.0893-.0869.0107.2476-.238-.088-.044-.2322.3094.0679-.0071v.119l.0845.0333.0166.119-.1392-.0273-.1452.0261-.3571-.1797-.0286 1.4164c.8332.2785 1.708.6808 1.708 1.7378a1.3093 1.3093 0 0 1-.595 1.1164l-.018.0119-.0261.0179c-.3357.2213-.7665.3404-1.1403.457l-.0107.7403c.5951.2952 1.3152.7249 1.2486 1.9544-.0084.3023-.1262.3856-.2274.413a6.2511 6.2511 0 0 1-1.0712.1702v.2702a6.6499 6.6499 0 0 0 4.1397-1.8282l.964.9641a8.0186 8.0186 0 0 1-11.1049.0226l.9641-.964a6.6451 6.6451 0 0 0 4.0814 1.8031v-.2702a6.3785 6.3785 0 0 1-3.8945-1.7222l.257-.2583.3572.0405.188-.2024.4928.0167.0726-.1702-.0179-.0726a4.999 4.999 0 0 0 2.5102 1.0033v-.2713a4.7526 4.7526 0 0 1-2.7042-1.2403l.9653-.9652a3.4338 3.4338 0 0 0 .782.5249.913.913 0 0 1 .0976-.2536 3.1208 3.1208 0 0 1-.6892-.463l.9677-.9664a1.7687 1.7687 0 0 0 .5166.2868v-.2904a1.4842 1.4842 0 0 1-.319-.1893l.2725-.2725a6.7378 6.7378 0 0 1-.288-.0929l-.1833.1833a1.4759 1.4759 0 0 1-.2309-.344 3.2815 3.2815 0 0 1-.476-.2547 1.8675 1.8675 0 0 1-.9035-1.6401 1.9687 1.9687 0 0 1 .3904-1.2498l-.9617-.9617a4.7502 4.7502 0 0 1 2.5757-1.2664c0-.0928 0-.1845-.006-.2714a5.0204 5.0204 0 0 0-2.76 1.3498l-.1631-.1595a4.504 4.504 0 0 0-.1297.2511l.1023.1036a5.0145 5.0145 0 0 0-1.364 3.3552H5.6096a6.382 6.382 0 0 1 1.7699-4.3253l.4332.4345a.5487.5487 0 0 0 .062 0 .6546.6546 0 0 0 .2463-.0715l-.551-.551a6.488 6.488 0 0 1 .9521-.7594 1.7925 1.7925 0 0 1 .0679-.2 3.2053 3.2053 0 0 1 .2083-.2797 6.6653 6.6653 0 0 0-1.4188 1.0462l-.9641-.964a7.9984 7.9984 0 0 1 4.7729-2.2377 2.1298 2.1298 0 0 1-.012-.0595c-.0118-.0631-.0261-.1333-.0392-.2071a8.3043 8.3043 0 0 0 .8665 16.5622zm1.7985-5.731v-.0071zm4.0206-8.108a8.0056 8.0056 0 0 1 2.2198 5.4561h-1.37a6.626 6.626 0 0 0-.7141-2.9137l.0119-.0238.094.05.0226-.0726-.238-.4273-.2892-.3999-.3428-.2797c-.119-.1452-.238-.2857-.3654-.4213zm-1.7437 1.7462l.3273.0143.0786.094-.0393.1392.4511.2857.0893-.0107.5832.6665.238-.0833a6.3559 6.3559 0 0 1 .5952 2.6042h-1.364a4.9728 4.9728 0 0 0-.1274-1.0378l.063-.0846.0846-.4272-.0643-.4595-.1642-.5284-.381-.557.093.0487.0463-.0464-.3059-.2071-.0202.0678.3059.4369.1726.357.119.3571.0393.238.063.4024-.119.0083s-.132-.2464-.1725-.3476l.0607-.0916-.119-.1666V9.107l-.0834-.1047-.1035.013a2.924 2.924 0 0 0-.119-.2035l.0737.037.019-.0191-.0392-.0857.0893-.05-.0405-.05-.1321.05.0488-.207-.0786-.0453-.0702.1654a5.0752 5.0752 0 0 0-.4963-.6308zm-.2737 3.1981l.2451-.1333.25-.038.0547-.119.1393-.0834.0536-.119.0428-.2012a4.071 4.071 0 0 1 .0548.2155l-.1321.394v.1332l.1916-.2559a4.611 4.611 0 0 1 .0678.7142h-1.1902l-.0274-.1036.1393-.1107.0273-.0666.0607-.0452.162-.0167.0166-.0714zm-1.6378-.9367l.119-.0285v-.0286l-.119-.0821.0416-.2571.1464-.1464a3.2327 3.2327 0 0 1 .2536.3297l-.0512.1583-.1333-.0952-.1012.0273.05.094h.05l-.056.1393-.038-.056zm.5225 4.5313l-.2952-.0833-.088.032-.1667-.1273-.1571-.056c.0774-.0559.1524-.119.225-.176l.238.1713.1857.0976.0916.0917zm-.15-5.2633l.9653-.9653a4.8121 4.8121 0 0 1 .5951.8023l-.119.0333.006.2154.357.2286a4.6657 4.6657 0 0 1 .2262.6094l-.0631.0928-.131.0833-.032.2-.0893.05-.075.088-.075-.0273h-.1333l.0774-.1048.0559-.2725.088-.0548-.2487-.2559-.194.0655-.044.182-.119.1322-.1274-.1048-.0452-.1118.0726-.0453.0404.0738.0595-.0226-.0261-.119h-.0845l-.006.05-.056.0107-.3035-.3559-.1023-.0774.0393-.0428.0904-.031-.0833-.0333s-.106.0238-.119.0238l.0607.0762h-.1524a3.2982 3.2982 0 0 0-.3047-.3928zm.4916 5.136l-.131-.131.1-.1298.1262-.257-.0488-.0715.0833-.1904-.0095-.1714-.05-.1773-.119-.0417-.044.1-.0715-.019a3.235 3.235 0 0 0 .2857-.4988l.119-.0523.069-.0929.0334.0381.0833-.1-.0666-.0833.0607-.0167.1118.0453h.2107l.1274-.0667.3332-.088-.063-.1107-.0215-.1345.1786.0785.0666-.0393-.0333-.138-.2154.0869-.238-.05-.1834-.375h1.0439a4.7514 4.7514 0 0 1-1.3176 3.1042l-.1429-.144.062-.1917-.112-.4225zm.1845 2.6625l.1285-.2762-.05-.119.1893-.1666v-.1l-.1619-.1012.1333-.2654.2-.2618-.2-.2155h-.15l-.0928-.1511a7.5411 7.5411 0 0 0 .238-.206l.9654.9653a6.4725 6.4725 0 0 1-1.1998.8987zm1.2045-1.2736l.1071-.119-.1011-.5285-.069-.0273.0428-.0893-.2285-.0714-.044.188-.0227.238-.0476.0441-.4166-.4166a5.0192 5.0192 0 0 0 1.3973-3.2934h1.3653a6.3737 6.3737 0 0 1-1.7973 4.2587zm.3761.375a6.6463 6.6463 0 0 0 1.877-4.4492h1.364a8.008 8.008 0 0 1-2.2757 5.4144zm-8.2126-1.3224a5.1601 5.1601 0 0 1-.2833-.319l.0417-.3452-.144-.3308-.0358-.5178-.1618-.3142.0333-.1952-.1952-.375-.1702-.0856.069-.1988-.0702-.1571.0702-.1798h.1869l.0654-.1083h.319l.0488.094-.0595.3298-.038.0559.119.2607-.0786.0428-.0548-.069-.0238.0262.0548.1547.094.181h.044l.031-.1762-.0452-.0596v-.1095l-.0143-.2261.0595-.3975-.0643-.1072h.2286a3.3898 3.3898 0 0 0 .939 2.1627zm-.9046-2.6673l-.1286.2023h-.2213l-.0179-.013a4.849 4.849 0 0 1-.069-.6488h.4106l-.0988.3285zm.4487-.9368l.025-.2713.1619-.094.2892.0511.044.0524a3.2136 3.2136 0 0 0-.044.469h-.3273zm1.389 1.02l.0679-.0344.1702.1345-.0774.063.2012.1334-.0048-.1429.1071-.1773.1119.119.119.1643-.219.0452.094.188.144-.0761-.0142-.0595.1071-.0727.063-.2975a1.7746 1.7746 0 0 0 .3131.476l-.964.9642a3.1196 3.1196 0 0 1-.8451-1.8116l.1975.2107h.1857zm-.9926-3.9825l.964.9653a3.441 3.441 0 0 0-.5117.7368h-.0667l-.1357.0416h-.0476l-.144.1345.182-.038.1643-.0417-.0285.063-.144.0882h-.0726l-.212.1618-.2046-.0166-.2964.5522.0583.1107-.1607.1786-.025.238h-.6046a4.7514 4.7514 0 0 1 1.2855-3.1744zM7.283 15.4202l.3059.1797.063.0428-.2213.2214q-.1548-.1607-.3-.332zm-.306-3.8386c0 .1321.0168.2643.031.394l-.1666.038-.0345.1691-.3476.4428.0084.6082-.3571.119h-.1952a6.3654 6.3654 0 0 1-.3047-1.7723zm-1.3473 1.764l-.0797-.0155-.075-.0845-.3833-.0333.119.1606-.357-.0666.0928-.0857-.0869-.0857-.2559.1119-.0916.169.0357.3892.2952.6999.1416.2213.081.0298-.2226-.4225-.0488-.2155.05-.0523-.031-.119.1345.0178.206.3118.0511.0203v-.2274l.0833.0488.0179.119.2166.0572.0905-.0643.031.0214v.1655l.0951.119.119.0262.2524.4273.1535.0428.0476-.2a6.7034 6.7034 0 0 0 .9403 1.2141l-.964.9641a8.0127 8.0127 0 0 1-2.3115-5.4287h1.3652a6.6451 6.6451 0 0 0 .288 1.764zm.5952-7.514l.964.964a6.6546 6.6546 0 0 0-1.8496 4.5158h-1.364A8.008 8.008 0 0 1 6.219 5.8316zm9.879-.4975l-.0822-.1333-.1785-.0893-.1393.106.1786.0951.1916.1464zm-.8344 3.8504v.1047l.238-.0702.0726-.144-.163-.2143.0869-.1309.2202.1571.0404-.0321-.044-.031-.05-.0952.0905-.0523-.0881-.119-.2071.1047-.069.1297-.0417.113.0916.1536-.0333.0714zm-9.8671 6.1202l.0179-.0619-.119-.2666-.1453-.0536zm5.5798-5.1276c0 .2286.1393.3904.3928.5297v-.1024l-.1595-.1594.0845-.1536.069-.019c0-.2666-.0106-.5654-.0118-.6082h-.012c-.2356.1309-.363.288-.363.513Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>World Health Organization</title><path d="M12.0214 1.4122c-1.064 0-.6118 1.5783-.5273 2.0925 0 .025.0857 3.5707.1024 4.3789.1619-.0429.3226-.0822.4761-.119l.3214-.081c.0154-.782.094-4.1658.0964-4.1837.0702-.551.6272-2.0877-.469-2.0877zm-.3118 12.0405c.119-.0405.238-.0762.3452-.1107l.2297-.0714c0-.2274.069-3.372.0809-3.9433a7.2271 7.2271 0 0 0-.732.2107c.0083.4285.0702 3.5719.0762 3.9147zm.3928 1.1926c-.0405.0143-.144.0583-.2095.081-.0655.0226-.1571.0606-.1571.0845 0 .0238.0666 3.6195.0666 3.6992 0 .744.3785.7487.3785 0 0-.0535.0762-3.9159.0762-3.9159s-.0905.0298-.1547.0512zm-.8558-10.1468a5.4953 5.4953 0 0 0-.8332.3392c-.2975.0988-.7141.119-1.151.588a5.8905 5.8905 0 0 0-.3963.5094c-.131.188-.1369.4904-.238.6535-.1381.238-.1048.3701-.1048.3701v.0072a.632.632 0 0 1-.1595.2952.6046.6046 0 0 1-.5546.2213c.1975.0988.476-.0392.476-.0392a3.6433 3.6433 0 0 0-.1047.3927c.2214-.501.425-.6843.488-.7355.0952.0214.2928.013.6594-.1976.4142-.238 1.0367-.6249 1.2129-.87a1.6175 1.6175 0 0 1 .7332-.5535c-.0131-.3773-.0203-.7035-.0274-.9808zM9.4993 6.0637L9.284 6.11l.257-.413.3.0095zm1.2795 8.64c0 .4665.3452.714.6892.9128 0-.0785-.0143-.801-.0143-.8129.0071-.144.1464-.2309.2595-.2845a5.6 5.6 0 0 1 .5463-.2082c.1023-.0358.1892-.0703.2868-.0988.6904-.2083 1.489-.4761 1.489-1.3093 0-.8332-.6844-1.1902-1.4283-1.4438 0 .2678-.013.6594-.019.9296.3166.119.526.275.526.5142 0 .3011-.3213.476-.5486.5618a5.9252 5.9252 0 0 1-.2797.0976c-.1833.0571-.381.119-.5654.1904a2.7126 2.7126 0 0 0-.2797.119c-.3285.1643-.663.406-.6618.832zm4.5753-8.1496c0-.8534-.619-1.8009-2.1365-2.1353a3.6528 3.6528 0 0 0-.463-.0536c0 .1286-.0095.4237-.0095.4237 0 .0929-.0095.4345-.012.5083a2.1424 2.1424 0 0 1 .2917.0404c.882.2107 1.1974.7142 1.1974 1.2165 0 .8105-.6927 1.1164-1.5473 1.3473l-.2821.0738c-.2583.0643-.5237.1262-.7868.1964a10.782 10.782 0 0 0-.2797.0797c-.9438.288-1.7556.7427-1.7556 1.9044 0 1.1617.926 1.5878 1.8294 1.8663q-.0083-.4987-.019-1.0022c-.3988-.1868-.6797-.4332-.6797-.8474 0-.4142.256-.6499.6475-.8332a3.0192 3.0192 0 0 1 .2786-.1083c.225-.0762.476-.1416.7439-.2059l.282-.0678c1.2724-.2976 2.7007-.6963 2.7007-2.4031zm-2.8482 9.5362c.4284.2166.8236.5165.989 1.0843.0726-.9403-.4546-1.3474-.9771-1.6223l-.012.538zM19.5199 5.29c.4595.5475 1.2629.87 1.733 1.4188-.3368-1.6223-1.589-2.947-3.0696-3.2637.7225.544.8784 1.2998 1.3366 1.845zM1.7235 9.4023c1.02-2.2198 2.5423-1.7497 3.1862-3.8647-.357.6487-2.0234.9224-2.7982 2.5852.394-.988.1964-2.4995.863-3.3148-1.9926 1.47-1.144 3.848-1.251 4.5943zm1.8472 5.324c.1833.864-.357 2.1114.5 3.304-.8856-.9926-2.7614-1.245-3.5256-2.7542.9522 3.6898 3.4517 2.928 4.5694 3.729-.9237-1.327-.1679-2.209-1.5438-4.2789zm-.2868 2.315c-.5463-2.0603.4273-2.7745-.3166-4.7503-.0774 1.114-.8201 1.6568-.319 3.6898C1.7639 14.2597.3963 13.6169 0 12.4338c.0274 3.2351 2.6269 3.7148 3.2839 4.6075zm3.992 3.4517c-.7653-1.0594-.238-1.658-2.3923-3.5815.4546.7023-.0143 1.5854 1.4354 2.959-1.4188-.8332-3.3755-.4761-4.3194-1.5962 1.6211 3.103 4.4694 1.8366 5.2763 2.2222zm10.4051-.6225c1.4497-1.3736.9808-2.2615 1.4354-2.959-2.1495 1.9235-1.627 2.5221-2.3923 3.5815.807-.3857 3.6552.8807 5.2751-2.2187-.9427 1.1213-2.8994.763-4.3182 1.5997zm2.2484-1.8437c.8534-1.1903.3166-2.44.4999-3.3041-1.376 2.0698-.6201 2.9518-1.5473 4.2848 1.1236-.801 3.6135-.0416 4.5693-3.729-.763 1.5069-2.6364 1.7592-3.522 2.7519zm-3.435 2.6126a10.617 10.617 0 0 0-2.3508-.3571 5.6834 5.6834 0 0 0-2.1424.3642 5.687 5.687 0 0 0-2.1424-.3642 10.617 10.617 0 0 0-2.3508.357c-1.2938.344-2.4114.6106-3.3862.119.9343.8332 2.0234 1.1249 3.5981.9523 1.3093-.1405 2.3698-.7963 3.6052-.7868h.0488a6.6023 6.6023 0 0 0-2.0377 1.5842l.5952.0798s.6272-1.2605 2.0698-1.589c1.4426.3285 2.0698 1.589 2.0698 1.589l.5951-.0798a6.6213 6.6213 0 0 0-2.0377-1.5758h.0488c1.2355-.0096 2.2936.6463 3.604.7867 1.5748.1702 2.665-.1262 3.5994-.9522-.9748.4868-2.0925.2202-3.3863-.1238zM3.0553 10.0569c-.5333 1.0236-1.3617 1.2581-1.27 3.3767-.45-1.883-1.5188-2.5804-1.5057-3.7813-.7427 3.1303 1.2426 3.5016 1.752 4.8133-.075-1.8794 1.1248-2.259 1.0236-4.4087zm.745-2.4162c-.1856.2595-.3154.3702-.8105.7785a4.0194 4.0194 0 0 0-1.4426 2.353c.0512-1.1473-.6582-2.7958-.1869-3.998-1.8246 2.577.1048 4.1207.1726 5.0538.4737-1.796 1.5616-1.8103 2.2674-4.1873zm18.6511 3.1316A4.0254 4.0254 0 0 0 21.01 8.4192c-.4951-.4083-.6249-.519-.8105-.7785.7058 2.3805 1.7937 2.3912 2.2614 4.1873.0679-.9331 1.9972-2.4769.1714-5.0537.4761 1.202-.232 2.8506-.1809 3.998zm1.5473 1.6663c-.3963 1.1831-1.764 1.8258-2.6483 3.5517.5011-2.0377-.238-2.5805-.319-3.6898-.7439 1.9782.238 2.6888-.3166 4.7503.6582-.9022 3.2577-1.3819 3.2851-4.617zm-3.0506-2.3817c-.1011 2.1496 1.0998 2.5293 1.0236 4.404.5106-1.3093 2.4995-1.683 1.752-4.8134.0143 1.201-1.0545 1.9044-1.5008 3.7754.0833-2.1079-.7451-2.3424-1.2748-3.366zM4.4824 5.296c.4607-.5474.6166-1.3009 1.3379-1.8448-1.4807.3166-2.7376 1.6413-3.0697 3.2636.463-.5546 1.2677-.8772 1.727-1.4247zm14.6126.2476c.644 2.1151 2.1663 1.645 3.1851 3.8648-.106-.7463.7427-3.1244-1.2497-4.5944.6665.8165.469 2.327.8629 3.3148-.7773-1.6687-2.44-1.9424-2.803-2.5911zm-5.1692 1.195a4.9895 4.9895 0 0 0-1.2176-.3273v.2714a4.761 4.761 0 0 1 1.1188.307.7141.7141 0 0 0 .0988-.251zM13.6175 4.12l.081-.0726-.1548-.0655-.407-.0083-.106.0738-.238-.0202v.0583a4.136 4.136 0 0 1 .419.044l.1987-.0178zm-.789 8.778c0-.069-.0917-.1368-.2274-.2011h-.025c0 .056 0 .332-.0084.4666.1679-.075.2607-.156.2607-.2655zM8.1126 7.7205a1.2997 1.2997 0 0 1 .0345-.1488.6891.6891 0 0 1-.1666.0167zm3.8956 11.9738a8.3031 8.3031 0 0 0 .8463-16.5598c0 .0155 0 .0321-.0095.0476-.0167.081-.0322.1535-.044.2178a8.0163 8.0163 0 0 1 4.8359 2.2615l-.9165.9165.0345-.162-.119-.0523-.1643-.0095.0345-.106-.1106-.3749-.2286-.2511-.7141-.3773-.062.0655-.1296.038a2.1424 2.1424 0 0 1 .3785 1.2034v.163l.357.4464-.1666.038.1107.1667-.313.3118-.1262-.238a2.133 2.133 0 0 1-.238.4678l.0702.0642-.9653.9653a3.2917 3.2917 0 0 0-.181-.1607 4.5833 4.5833 0 0 1-.2832.119l.0821.0643-.0488.0488-.119.0631-.0417.119-.0702-.0702-.2035.0679.056.0892.1404-.0369.0916.0072.0072-.05.0702-.0357.0214-.0417.1262-.0357h.0988c.019.0167.0392.0345.057.0524l-.388.369-.0285-.0405-.4.0654-.0892.0893-.0869.0107.2476-.238-.088-.044-.2322.3094.0679-.0071v.119l.0845.0333.0166.119-.1392-.0273-.1452.0261-.3571-.1797-.0286 1.4164c.8332.2785 1.708.6808 1.708 1.7378a1.3093 1.3093 0 0 1-.595 1.1164l-.018.0119-.0261.0179c-.3357.2213-.7665.3404-1.1403.457l-.0107.7403c.5951.2952 1.3152.7249 1.2486 1.9544-.0084.3023-.1262.3856-.2274.413a6.2511 6.2511 0 0 1-1.0712.1702v.2702a6.6499 6.6499 0 0 0 4.1397-1.8282l.964.9641a8.0186 8.0186 0 0 1-11.1049.0226l.9641-.964a6.6451 6.6451 0 0 0 4.0814 1.8031v-.2702a6.3785 6.3785 0 0 1-3.8945-1.7222l.257-.2583.3572.0405.188-.2024.4928.0167.0726-.1702-.0179-.0726a4.999 4.999 0 0 0 2.5102 1.0033v-.2713a4.7526 4.7526 0 0 1-2.7042-1.2403l.9653-.9652a3.4338 3.4338 0 0 0 .782.5249.913.913 0 0 1 .0976-.2536 3.1208 3.1208 0 0 1-.6892-.463l.9677-.9664a1.7687 1.7687 0 0 0 .5166.2868v-.2904a1.4842 1.4842 0 0 1-.319-.1893l.2725-.2725a6.7378 6.7378 0 0 1-.288-.0929l-.1833.1833a1.4759 1.4759 0 0 1-.2309-.344 3.2815 3.2815 0 0 1-.476-.2547 1.8675 1.8675 0 0 1-.9035-1.6401 1.9687 1.9687 0 0 1 .3904-1.2498l-.9617-.9617a4.7502 4.7502 0 0 1 2.5757-1.2664c0-.0928 0-.1845-.006-.2714a5.0204 5.0204 0 0 0-2.76 1.3498l-.1631-.1595a4.504 4.504 0 0 0-.1297.2511l.1023.1036a5.0145 5.0145 0 0 0-1.364 3.3552H5.6096a6.382 6.382 0 0 1 1.7699-4.3253l.4332.4345a.5487.5487 0 0 0 .062 0 .6546.6546 0 0 0 .2463-.0715l-.551-.551a6.488 6.488 0 0 1 .9521-.7594 1.7925 1.7925 0 0 1 .0679-.2 3.2053 3.2053 0 0 1 .2083-.2797 6.6653 6.6653 0 0 0-1.4188 1.0462l-.9641-.964a7.9984 7.9984 0 0 1 4.7729-2.2377 2.1298 2.1298 0 0 1-.012-.0595c-.0118-.0631-.0261-.1333-.0392-.2071a8.3043 8.3043 0 0 0 .8665 16.5622zm1.7985-5.731v-.0071zm4.0206-8.108a8.0056 8.0056 0 0 1 2.2198 5.4561h-1.37a6.626 6.626 0 0 0-.7141-2.9137l.0119-.0238.094.05.0226-.0726-.238-.4273-.2892-.3999-.3428-.2797c-.119-.1452-.238-.2857-.3654-.4213zm-1.7437 1.7462l.3273.0143.0786.094-.0393.1392.4511.2857.0893-.0107.5832.6665.238-.0833a6.3559 6.3559 0 0 1 .5952 2.6042h-1.364a4.9728 4.9728 0 0 0-.1274-1.0378l.063-.0846.0846-.4272-.0643-.4595-.1642-.5284-.381-.557.093.0487.0463-.0464-.3059-.2071-.0202.0678.3059.4369.1726.357.119.3571.0393.238.063.4024-.119.0083s-.132-.2464-.1725-.3476l.0607-.0916-.119-.1666V9.107l-.0834-.1047-.1035.013a2.924 2.924 0 0 0-.119-.2035l.0737.037.019-.0191-.0392-.0857.0893-.05-.0405-.05-.1321.05.0488-.207-.0786-.0453-.0702.1654a5.0752 5.0752 0 0 0-.4963-.6308zm-.2737 3.1981l.2451-.1333.25-.038.0547-.119.1393-.0834.0536-.119.0428-.2012a4.071 4.071 0 0 1 .0548.2155l-.1321.394v.1332l.1916-.2559a4.611 4.611 0 0 1 .0678.7142h-1.1902l-.0274-.1036.1393-.1107.0273-.0666.0607-.0452.162-.0167.0166-.0714zm-1.6378-.9367l.119-.0285v-.0286l-.119-.0821.0416-.2571.1464-.1464a3.2327 3.2327 0 0 1 .2536.3297l-.0512.1583-.1333-.0952-.1012.0273.05.094h.05l-.056.1393-.038-.056zm.5225 4.5313l-.2952-.0833-.088.032-.1667-.1273-.1571-.056c.0774-.0559.1524-.119.225-.176l.238.1713.1857.0976.0916.0917zm-.15-5.2633l.9653-.9653a4.8121 4.8121 0 0 1 .5951.8023l-.119.0333.006.2154.357.2286a4.6657 4.6657 0 0 1 .2262.6094l-.0631.0928-.131.0833-.032.2-.0893.05-.075.088-.075-.0273h-.1333l.0774-.1048.0559-.2725.088-.0548-.2487-.2559-.194.0655-.044.182-.119.1322-.1274-.1048-.0452-.1118.0726-.0453.0404.0738.0595-.0226-.0261-.119h-.0845l-.006.05-.056.0107-.3035-.3559-.1023-.0774.0393-.0428.0904-.031-.0833-.0333s-.106.0238-.119.0238l.0607.0762h-.1524a3.2982 3.2982 0 0 0-.3047-.3928zm.4916 5.136l-.131-.131.1-.1298.1262-.257-.0488-.0715.0833-.1904-.0095-.1714-.05-.1773-.119-.0417-.044.1-.0715-.019a3.235 3.235 0 0 0 .2857-.4988l.119-.0523.069-.0929.0334.0381.0833-.1-.0666-.0833.0607-.0167.1118.0453h.2107l.1274-.0667.3332-.088-.063-.1107-.0215-.1345.1786.0785.0666-.0393-.0333-.138-.2154.0869-.238-.05-.1834-.375h1.0439a4.7514 4.7514 0 0 1-1.3176 3.1042l-.1429-.144.062-.1917-.112-.4225zm.1845 2.6625l.1285-.2762-.05-.119.1893-.1666v-.1l-.1619-.1012.1333-.2654.2-.2618-.2-.2155h-.15l-.0928-.1511a7.5411 7.5411 0 0 0 .238-.206l.9654.9653a6.4725 6.4725 0 0 1-1.1998.8987zm1.2045-1.2736l.1071-.119-.1011-.5285-.069-.0273.0428-.0893-.2285-.0714-.044.188-.0227.238-.0476.0441-.4166-.4166a5.0192 5.0192 0 0 0 1.3973-3.2934h1.3653a6.3737 6.3737 0 0 1-1.7973 4.2587zm.3761.375a6.6463 6.6463 0 0 0 1.877-4.4492h1.364a8.008 8.008 0 0 1-2.2757 5.4144zm-8.2126-1.3224a5.1601 5.1601 0 0 1-.2833-.319l.0417-.3452-.144-.3308-.0358-.5178-.1618-.3142.0333-.1952-.1952-.375-.1702-.0856.069-.1988-.0702-.1571.0702-.1798h.1869l.0654-.1083h.319l.0488.094-.0595.3298-.038.0559.119.2607-.0786.0428-.0548-.069-.0238.0262.0548.1547.094.181h.044l.031-.1762-.0452-.0596v-.1095l-.0143-.2261.0595-.3975-.0643-.1072h.2286a3.3898 3.3898 0 0 0 .939 2.1627zm-.9046-2.6673l-.1286.2023h-.2213l-.0179-.013a4.849 4.849 0 0 1-.069-.6488h.4106l-.0988.3285zm.4487-.9368l.025-.2713.1619-.094.2892.0511.044.0524a3.2136 3.2136 0 0 0-.044.469h-.3273zm1.389 1.02l.0679-.0344.1702.1345-.0774.063.2012.1334-.0048-.1429.1071-.1773.1119.119.119.1643-.219.0452.094.188.144-.0761-.0142-.0595.1071-.0727.063-.2975a1.7746 1.7746 0 0 0 .3131.476l-.964.9642a3.1196 3.1196 0 0 1-.8451-1.8116l.1975.2107h.1857zm-.9926-3.9825l.964.9653a3.441 3.441 0 0 0-.5117.7368h-.0667l-.1357.0416h-.0476l-.144.1345.182-.038.1643-.0417-.0285.063-.144.0882h-.0726l-.212.1618-.2046-.0166-.2964.5522.0583.1107-.1607.1786-.025.238h-.6046a4.7514 4.7514 0 0 1 1.2855-3.1744zM7.283 15.4202l.3059.1797.063.0428-.2213.2214q-.1548-.1607-.3-.332zm-.306-3.8386c0 .1321.0168.2643.031.394l-.1666.038-.0345.1691-.3476.4428.0084.6082-.3571.119h-.1952a6.3654 6.3654 0 0 1-.3047-1.7723zm-1.3473 1.764l-.0797-.0155-.075-.0845-.3833-.0333.119.1606-.357-.0666.0928-.0857-.0869-.0857-.2559.1119-.0916.169.0357.3892.2952.6999.1416.2213.081.0298-.2226-.4225-.0488-.2155.05-.0523-.031-.119.1345.0178.206.3118.0511.0203v-.2274l.0833.0488.0179.119.2166.0572.0905-.0643.031.0214v.1655l.0951.119.119.0262.2524.4273.1535.0428.0476-.2a6.7034 6.7034 0 0 0 .9403 1.2141l-.964.9641a8.0127 8.0127 0 0 1-2.3115-5.4287h1.3652a6.6451 6.6451 0 0 0 .288 1.764zm.5952-7.514l.964.964a6.6546 6.6546 0 0 0-1.8496 4.5158h-1.364A8.008 8.008 0 0 1 6.219 5.8316zm9.879-.4975l-.0822-.1333-.1785-.0893-.1393.106.1786.0951.1916.1464zm-.8344 3.8504v.1047l.238-.0702.0726-.144-.163-.2143.0869-.1309.2202.1571.0404-.0321-.044-.031-.05-.0952.0905-.0523-.0881-.119-.2071.1047-.069.1297-.0417.113.0916.1536-.0333.0714zm-9.8671 6.1202l.0179-.0619-.119-.2666-.1453-.0536zm5.5798-5.1276c0 .2286.1393.3904.3928.5297v-.1024l-.1595-.1594.0845-.1536.069-.019c0-.2666-.0106-.5654-.0118-.6082h-.012c-.2356.1309-.363.288-.363.513Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/wpengine.svg b/assets/lib/simple-icons/icons/wpengine.svg
index 6d623038..d9cfdf1e 100644
--- a/assets/lib/simple-icons/icons/wpengine.svg
+++ b/assets/lib/simple-icons/icons/wpengine.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>WP Engine icon</title><path d="M8.1 24h7.8v-5.85l-1.95-1.801h-3.9L8.1 18.15V24zM18.15 8.1l-1.801 1.95v3.9l1.801 1.95H24V8.1h-5.85zM15.9 0H8.1v5.85l1.95 1.801h3.9L15.9 5.85V0zM24 24v-5.85l-1.801-1.801h-5.85V24H24zM1.8 0L0 1.8v5.85h7.65V0H1.8zm14.55 0v5.85l1.8 1.8H24V0h-7.65zM12 13.05c-.6 0-1.05-.45-1.05-1.05s.45-1.05 1.05-1.05 1.05.45 1.05 1.05-.45 1.05-1.05 1.05m-4.35 5.1l-1.8-1.8H0V24h5.85l1.801-1.801V18.15zm0-10.05H0v7.8h5.85l1.801-1.95V8.1z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>WP Engine</title><path d="M8.145 0v5.867L9.99 7.71h4.022l1.845-1.844V0zm8.145 0v5.867l1.845 1.844h5.864V.001zM1.845 0L0 1.845v5.866h7.712V0zM0 8.146v7.71h5.866l1.845-1.844V8.145zm18.133 0L16.29 9.989v4.022l1.845 1.845H24V8.145zm-6.147 2.75a1.105 1.105 0 00.014 2.21A1.105 1.105 0 0013.105 12a1.105 1.105 0 00-1.118-1.104zM0 16.29v7.71h5.866l1.845-1.842v-4.023l-1.845-1.845zm9.988 0l-1.843 1.845V24h7.71v-5.866L14.01 16.29zm6.3 0V24H24v-5.865l-1.842-1.845z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/wprocket.svg b/assets/lib/simple-icons/icons/wprocket.svg
index 145d7e94..2dbfb761 100644
--- a/assets/lib/simple-icons/icons/wprocket.svg
+++ b/assets/lib/simple-icons/icons/wprocket.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>WP Rocket icon</title><path d="M3.723.666c-.08-.276.08-.47.356-.47h2.283c.16 0 .31.137.356.274L8.393 7.07h.08L11.491.218A.374.374 0 0111.824 0h.356c.172 0 .287.092.333.218l3.018 6.85h.08L17.286.47a.397.397 0 01.356-.275h2.284c.275 0 .424.195.355.47l-3.683 13.082a.369.369 0 01-.356.275h-.31a.38.38 0 01-.333-.218l-3.568-7.963h-.058l-3.545 7.963a.403.403 0 01-.333.218h-.31a.379.379 0 01-.356-.275L3.723.666m8.308 7.917l-2.594 5.818a1.663 1.663 0 01-.344.448v.004a1.466 1.466 0 01-.688.34l1.4 8.687c.091.16.263.16.367 0l1.79-2.72 1.64 2.708c.104.16.265.16.368 0l1.584-8.698a1.5 1.5 0 01-.832-.618l-.02-.03a1.405 1.405 0 01-.066-.12l-.609-1.366h-.003Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>WP Rocket</title><path d="M3.723.666c-.08-.276.08-.47.356-.47h2.283c.16 0 .31.137.356.274L8.393 7.07h.08L11.491.218A.374.374 0 0111.824 0h.356c.172 0 .287.092.333.218l3.018 6.85h.08L17.286.47a.397.397 0 01.356-.275h2.284c.275 0 .424.195.355.47l-3.683 13.082a.369.369 0 01-.356.275h-.31a.38.38 0 01-.333-.218l-3.568-7.963h-.058l-3.545 7.963a.403.403 0 01-.333.218h-.31a.379.379 0 01-.356-.275L3.723.666m8.308 7.917l-2.594 5.818a1.663 1.663 0 01-.344.448v.004a1.466 1.466 0 01-.688.34l1.4 8.687c.091.16.263.16.367 0l1.79-2.72 1.64 2.708c.104.16.265.16.368 0l1.584-8.698a1.5 1.5 0 01-.832-.618l-.02-.03a1.405 1.405 0 01-.066-.12l-.609-1.366h-.003Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/write-dot-as.svg b/assets/lib/simple-icons/icons/write-dot-as.svg
deleted file mode 100644
index 2dd5f386..00000000
--- a/assets/lib/simple-icons/icons/write-dot-as.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>write.as icon</title><path d="M12.815,5.139l2.179,7.509c0.107,0.381,0.22,0.793,0.339,1.236c0.12,0.443,0.229,0.85,0.327,1.223h0.025 c0.054-0.372,0.145-0.772,0.273-1.204c0.129-0.429,0.246-0.821,0.353-1.176l1.05-3.442c0.079-0.248,0.15-0.472,0.213-0.671 c0.062-0.199,0.126-0.382,0.192-0.551c0.068-0.167,0.131-0.327,0.194-0.478c0.062-0.151,0.132-0.301,0.213-0.451V7.106 l-1.569,0.105V5.139h5.169V6.88c-0.364,0-0.682,0.119-0.956,0.358c-0.275,0.239-0.512,0.524-0.711,0.85 c-0.201,0.328-0.364,0.657-0.493,0.984c-0.129,0.328-0.224,0.581-0.286,0.758l-3.096,8.997h-2.884l-1.874-5.807 c-0.053-0.142-0.12-0.345-0.199-0.606c-0.079-0.261-0.161-0.545-0.247-0.85c-0.083-0.307-0.173-0.623-0.265-0.95 c-0.092-0.328-0.179-0.638-0.259-0.931h-0.026c-0.053,0.381-0.14,0.809-0.26,1.283c-0.119,0.474-0.243,0.937-0.372,1.388 c-0.128,0.451-0.248,0.859-0.358,1.223c-0.111,0.364-0.194,0.62-0.246,0.771l-1.501,4.479H5.04L1.745,9.392 C1.62,9.046,1.523,8.767,1.452,8.555C1.381,8.342,1.321,8.157,1.273,8.002C1.223,7.848,1.186,7.709,1.16,7.584 C1.133,7.459,1.101,7.319,1.066,7.159L0.003,7.212V5.139h6.526V6.88C6.147,6.907,5.879,7.021,5.723,7.225 C5.568,7.429,5.492,7.691,5.492,8.009C5.483,8.16,5.493,8.32,5.524,8.487c0.032,0.169,0.074,0.342,0.128,0.519l0.916,3.322 c0.107,0.399,0.21,0.818,0.312,1.256c0.101,0.438,0.184,0.884,0.247,1.336h0.026c0.044-0.195,0.088-0.394,0.134-0.598 c0.044-0.204,0.092-0.424,0.145-0.658c0.054-0.235,0.116-0.492,0.186-0.771c0.072-0.278,0.155-0.587,0.254-0.922l1.993-6.832 C9.864,5.139,12.815,5.139,12.815,5.139z M24.003,16.628c0,1.233-1,2.233-2.233,2.233c-1.233,0-2.231-1-2.231-2.233 c0-1.233,0.998-2.233,2.231-2.233S24.003,15.395,24.003,16.628"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/writedotas.svg b/assets/lib/simple-icons/icons/writedotas.svg
new file mode 100644
index 00000000..db33f7f8
--- /dev/null
+++ b/assets/lib/simple-icons/icons/writedotas.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>write.as</title><path d="M12.812 5.139l2.179 7.509a168.085 168.085 0 01.666 2.459h.025c.054-.372.145-.772.273-1.204l.353-1.176 1.05-3.442.213-.671c.062-.199.126-.382.192-.551.068-.167.131-.327.194-.478.062-.151.132-.301.213-.451v-.028l-1.569.105V5.139h5.169V6.88c-.364 0-.682.119-.956.358a3.608 3.608 0 00-.711.85 6.325 6.325 0 00-.493.984 22.78 22.78 0 00-.286.758l-3.096 8.997h-2.884L11.47 13.02c-.053-.142-.12-.345-.199-.606a46.941 46.941 0 01-.247-.85c-.083-.307-.173-.623-.265-.95-.092-.328-.179-.638-.259-.931h-.026c-.053.381-.14.809-.26 1.283-.119.474-.243.937-.372 1.388-.128.451-.248.859-.358 1.223-.111.364-.194.62-.246.771l-1.501 4.479h-2.7L1.742 9.392a27.83 27.83 0 01-.472-1.39 3.995 3.995 0 01-.113-.418l-.094-.425L0 7.212V5.139h6.526V6.88c-.382.027-.65.141-.806.345-.155.204-.231.466-.231.784-.009.151.001.311.032.478a4.9 4.9 0 00.128.519l.916 3.322c.107.399.21.818.312 1.256.101.438.184.884.247 1.336h.026l.134-.598a39.977 39.977 0 01.331-1.429c.072-.278.155-.587.254-.922l1.993-6.832h2.95zM24 16.628a2.232 2.232 0 11-4.464 0 2.232 2.232 0 114.464 0"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/wwe.svg b/assets/lib/simple-icons/icons/wwe.svg
index 38886753..79ed5b16 100644
--- a/assets/lib/simple-icons/icons/wwe.svg
+++ b/assets/lib/simple-icons/icons/wwe.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>WWE icon</title><path d="M24 1.047L15.67 18.08l-3.474-8.53-3.474 8.53L.393 1.048l3.228 8.977 3.286 8.5C3.874 19.334 1.332 20.46 0 21.75c.443-.168 3.47-1.24 7.409-1.927l1.21 3.129 1.552-3.518a36.769 36.769 0 0 1 3.96-.204l1.644 3.722 1.4-3.62c2.132.145 3.861.426 4.675.692 0 0 .92-1.962 1.338-2.866a54.838 54.838 0 0 0-5.138-.092l2.722-7.042zm-21.84.026L8.64 13.86l3.568-9.155 3.567 9.155 6.481-12.788-6.433 8.452-3.615-8.22-3.615 8.22zm10.036 13.776l1.115 2.523a42.482 42.482 0 0 0-2.363.306Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>WWE</title><path d="M24 1.047L15.67 18.08l-3.474-8.53-3.474 8.53L.393 1.048l3.228 8.977 3.286 8.5C3.874 19.334 1.332 20.46 0 21.75c.443-.168 3.47-1.24 7.409-1.927l1.21 3.129 1.552-3.518a36.769 36.769 0 0 1 3.96-.204l1.644 3.722 1.4-3.62c2.132.145 3.861.426 4.675.692 0 0 .92-1.962 1.338-2.866a54.838 54.838 0 0 0-5.138-.092l2.722-7.042zm-21.84.026L8.64 13.86l3.568-9.155 3.567 9.155 6.481-12.788-6.433 8.452-3.615-8.22-3.615 8.22zm10.036 13.776l1.115 2.523a42.482 42.482 0 0 0-2.363.306Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/wwise.svg b/assets/lib/simple-icons/icons/wwise.svg
new file mode 100644
index 00000000..6f8fe561
--- /dev/null
+++ b/assets/lib/simple-icons/icons/wwise.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Wwise</title><path d="M6 12c0 .7644-.6193 1.3846-1.3846 1.3846-.7645 0-1.3847-.6202-1.3847-1.3846 0-.765.6202-1.3846 1.3847-1.3846C5.3807 10.6154 6 11.2351 6 12m7.8462-5.5384c0 1.0191-.826 1.8461-1.8463 1.8461-1.0188 0-1.8461-.827-1.8461-1.8461 0-1.0197.8273-1.8462 1.8461-1.8462 1.0203 0 1.8463.8265 1.8463 1.8462M1.8462 12a.923.923 0 0 1-.9231.923C.4143 12.923 0 12.5096 0 12c0-.5102.4142-.923.923-.923.51 0 .923.4128.923.923M24 12c0 .5095-.4133.923-.923.923-.5089 0-.9231-.4135-.9231-.923 0-.5102.4142-.923.923-.923.5098 0 .923.4128.923.923m-3.2306 0c0 .7644-.6195 1.3846-1.3847 1.3846C18.6203 13.3846 18 12.7644 18 12c0-.765.6203-1.3846 1.3846-1.3846.7652 0 1.3847.6197 1.3847 1.3846m-8.2252 2.8356c.0034.535.2557 1.0139.6581 1.3139.4006.3332.6584.8409.6584 1.4048 0 1.0139-.8192 1.8303-1.8295 1.8303H12c-1.0116 0-1.8317-.8164-1.8317-1.8303 0-.564.2596-1.0716.6606-1.4048.3999-.3.6615-.7788.6577-1.314v-.1283c-.004-.5395-.2578-1.0183-.6577-1.3154-.401-.336-.6606-.8423-.6606-1.4077 0-1.0125.8201-1.8302 1.8317-1.8302h.0312c1.0103 0 1.8295.8177 1.8295 1.8302 0 .5654-.2578 1.0717-.6584 1.4077a1.6166 1.6166 0 0 0-.658 1.3154v.1284m3.6922-2.7692c.0033.535.2557 1.0139.658 1.3139.4007.3332.6585.8409.6585 1.4048 0 1.0139-.8192 1.8302-1.8295 1.8302h-.031c-1.0118 0-1.8318-.8163-1.8318-1.8302 0-.564.2597-1.0716.6606-1.4048.3999-.3.6614-.7788.6577-1.314v-.1283c-.004-.5395-.2578-1.0183-.6577-1.3154-.401-.336-.6606-.8423-.6606-1.4077 0-1.0125.82-1.8302 1.8318-1.8302h.031c1.0103 0 1.8295.8177 1.8295 1.8302 0 .5654-.2578 1.0717-.6584 1.4077a1.6166 1.6166 0 0 0-.658 1.3154v.1284m-7.3848 0c.0035.535.2559 1.0139.6582 1.3139a1.828 1.828 0 0 1 .6583 1.4048c0 1.0139-.8193 1.8302-1.8294 1.8302h-.0312c-1.0116 0-1.8317-.8163-1.8317-1.8302 0-.564.2596-1.0716.6606-1.4048.3999-.3.6615-.7788.6577-1.314v-.1283c-.004-.5395-.2578-1.0183-.6577-1.3154-.401-.336-.6606-.8423-.6606-1.4077 0-1.0125.8201-1.8302 1.8317-1.8302h.0312c1.0101 0 1.8294.8177 1.8294 1.8302 0 .5654-.2578 1.0717-.6583 1.4077a1.617 1.617 0 0 0-.6582 1.3154v.1284"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/x-dot-org.svg b/assets/lib/simple-icons/icons/x-dot-org.svg
deleted file mode 100644
index 57e1d41f..00000000
--- a/assets/lib/simple-icons/icons/x-dot-org.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>X.Org icon</title><path d="M19.94 1.9l-9.092 11.874 4.598 6.392a14.29 14.29 0 0 1-2.56.228c-2.387 0-4.582-.577-6.316-1.542l6.556-8.627-6.031-8.311L2.23 1.91 9.8 12.48l-4.332 5.66c-1.692-1.266-2.729-2.965-2.729-4.832 0-2.13 1.348-4.042 3.48-5.342l-.655-.999C2.22 8.386 0 10.876 0 13.71c0 2.432 1.635 4.61 4.212 6.075l-1.765 2.307h1.661l1.299-1.709c1.892.83 4.158 1.314 6.592 1.314a17.43 17.43 0 0 0 4.188-.501l.65.903h4.865l-1.729-2.422C22.443 18.214 24 16.082 24 13.71c0-2.94-2.39-5.512-5.948-6.9l-.217.311c3.099 1.214 5.195 3.531 5.195 6.188 0 2.202-1.44 4.17-3.698 5.47l-5.153-7.22 7.382-9.658zM12 5.755c-.586 0-1.212.046-1.775.1 1.004 1.309 1.836 2.417 2.795 3.676-.538-1.157-1.644-2.268-1.261-2.839.378-.565 1.075-.47 1.128-.47 1.118 0 2.194.127 3.2.36l.235-.324C14.98 5.91 13.523 5.754 12 5.754z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/x-pack.svg b/assets/lib/simple-icons/icons/x-pack.svg
deleted file mode 100644
index d92b500b..00000000
--- a/assets/lib/simple-icons/icons/x-pack.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>X-Pack icon</title><path d="M13.7 19.55l5.88-5.89 3.35 3.36a3.57 3.57 0 0 1 0 5.05l-.83.83a3.57 3.57 0 0 1-5.05 0zM22.92 1.9l-.83-.83a3.57 3.57 0 0 0-5.05 0L12 6.12 6.95 1.07a3.57 3.57 0 0 0-5.05 0l-.83.83a3.57 3.57 0 0 0 0 5.05L6.12 12l-5.05 5.05a3.57 3.57 0 0 0 0 5.05l.83.83a3.57 3.57 0 0 0 5.05 0L12 17.88l3.68-3.68 2.2-2.2 5.05-5.05a3.57 3.57 0 0 0 0-5.05z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/xamarin.svg b/assets/lib/simple-icons/icons/xamarin.svg
index 39667695..21a29999 100644
--- a/assets/lib/simple-icons/icons/xamarin.svg
+++ b/assets/lib/simple-icons/icons/xamarin.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Xamarin icon</title><path d="M6.925 1.323a1.904 1.904 0 00-1.609.93L.241 11.07a1.918 1.918 0 000 1.862l5.075 8.816c.326.56.96.929 1.609.93h10.15a1.904 1.904 0 001.609-.93l5.075-8.816a1.918 1.918 0 000-1.862l-5.075-8.816a1.904 1.904 0 00-1.609-.93zm.092 5.157a.22.22 0 01.043 0h1.75a.23.23 0 01.192.114l2.97 5.292a.228.228 0 01.028.086.228.228 0 01.028-.086l2.963-5.292a.231.231 0 01.198-.114h1.751c.155.002.271.197.199.334L14.239 12l2.9 5.179c.08.138-.04.342-.199.34h-1.75a.232.232 0 01-.2-.12l-2.962-5.292A.228.228 0 0112 12.02a.228.228 0 01-.028.086l-2.97 5.292a.231.231 0 01-.192.12H7.06c-.16.002-.278-.202-.199-.34L9.761 12l-2.9-5.186c-.07-.125.015-.307.156-.334Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Xamarin</title><path d="M6.925 1.323a1.904 1.904 0 00-1.609.93L.241 11.07a1.918 1.918 0 000 1.862l5.075 8.816c.326.56.96.929 1.609.93h10.15a1.904 1.904 0 001.609-.93l5.075-8.816a1.918 1.918 0 000-1.862l-5.075-8.816a1.904 1.904 0 00-1.609-.93zm.092 5.157a.22.22 0 01.043 0h1.75a.23.23 0 01.192.114l2.97 5.292a.228.228 0 01.028.086.228.228 0 01.028-.086l2.963-5.292a.231.231 0 01.198-.114h1.751c.155.002.271.197.199.334L14.239 12l2.9 5.179c.08.138-.04.342-.199.34h-1.75a.232.232 0 01-.2-.12l-2.962-5.292A.228.228 0 0112 12.02a.228.228 0 01-.028.086l-2.97 5.292a.231.231 0 01-.192.12H7.06c-.16.002-.278-.202-.199-.34L9.761 12l-2.9-5.186c-.07-.125.015-.307.156-.334Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/xaml.svg b/assets/lib/simple-icons/icons/xaml.svg
index ef39a59b..c615818e 100644
--- a/assets/lib/simple-icons/icons/xaml.svg
+++ b/assets/lib/simple-icons/icons/xaml.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>XAML icon</title><path d="M6.39 1.537a.78.78 0 00-.677.393L.105 11.607a.781.781 0 000 .786l5.608 9.68a.78.78 0 00.678.39h11.218a.781.781 0 00.678-.393l5.608-9.677a.781.781 0 000-.786l-5.608-9.68a.781.781 0 00-.678-.39H6.391zm0 .418H17.56l-5.68 9.836h-6.03l4.712-8.156v-.002l.013-.026.114-.195a.132.132 0 00-.114-.197h-.256l-2.81-.002a.265.265 0 00-.229.13l-4.847 8.391a.539.539 0 00-.03.057H.482l5.592-9.652a.371.371 0 01.317-.184zm11.542.191l5.6 9.67c.032.056.05.12.05.184a.367.367 0 01-.05.184l-5.606 9.677-.002.002-5.688-9.853 5.696-9.864zM7.598 3.633h2.478l-4.63 8.021a.68.68 0 000 .682l4.642 8.033-2.48-.002-4.815-8.318a.106.106 0 010-.106l4.805-8.31zm10.328 1.869a.131.131 0 00-.113.068l-.108.19-.002.002-.015.031h-.002l-1.391 2.465a.261.261 0 000 .26l1.943 3.36a.26.26 0 010 .263l-1.927 3.338a.261.261 0 000 .26l1.4 2.45v.002l.016.028v.002l.11.191a.13.13 0 00.227.002l.112-.195.002-.002.015-.026 3.422-5.92a.525.525 0 000-.525l-3.447-5.955-.018-.031-.11-.192a.13.13 0 00-.114-.066zm.004.71l3.324 5.743a.106.106 0 01-.002.106l-3.299 5.71-1.234-2.162 1.88-3.257.003-.002a.676.676 0 00-.002-.68v-.002l-1.897-3.281 1.227-2.174zM.482 12.21h1.924a.525.525 0 00.026.049l4.857 8.396a.26.26 0 00.227.131l2.814.002h.258a.13.13 0 00.113-.195l-.113-.196v-.001l-.016-.026-4.715-8.16h6.01l5.678 9.836H6.39a.362.362 0 01-.317-.184L.482 12.21ZZ"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>XAML</title><path d="M6.3912 1.5373a.7847.7847 0 0 0-.679.3914l-5.6065 9.678a.7847.7847 0 0 0 0 .7867l5.6065 9.6779a.7847.7847 0 0 0 .679.3914h11.2176c.28 0 .5387-.1492.679-.3914l5.6065-9.678a.7847.7847 0 0 0 0-.7867l-5.6065-9.6779a.7848.7848 0 0 0-.679-.3914zm.0302.837h10.542l-5.2093 9.2112H5.9679l4.7196-8.1747a.1308.1308 0 0 0-.1132-.1962L7.5062 3.213a.2615.2615 0 0 0-.2266.1307l-4.7633 8.2419h-1.431zm11.3325.3025L23.1549 12l-5.3722 9.2735-5.2987-9.2784zm.1712 2.8248a.1295.1295 0 0 0-.1132.0665l-1.5186 2.689a.2616.2616 0 0 0 .0013.2595l1.943 3.3611a.2615.2615 0 0 1 0 .2617l-1.9268 3.3375a.2616.2616 0 0 0-.0006.2605l1.5272 2.6742c.05.0877.1763.088.2268.0006l3.5503-6.1431a.5231.5231 0 0 0-.0001-.5238L18.039 5.567a.1295.1295 0 0 0-.1139-.0653zM1.09 12.4225h1.4363l4.7634 8.2314a.2616.2616 0 0 0 .2262.1305l3.0718.0018a.1308.1308 0 0 0 .1133-.1962l-4.7215-8.1675h5.7848l5.2557 9.2032H6.4214z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/xampp.svg b/assets/lib/simple-icons/icons/xampp.svg
index e2d1d1d7..e0bba962 100644
--- a/assets/lib/simple-icons/icons/xampp.svg
+++ b/assets/lib/simple-icons/icons/xampp.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>XAMPP icon</title><path d="M16.792,11.923c0.113,0.043,0.226,0.079,0.334,0.128c0.45,0.203,0.715,0.553,0.748,1.044 c0.041,0.634,0.044,1.271,0.002,1.905c-0.049,0.732-0.725,1.292-1.483,1.271c-0.735-0.021-1.369-0.62-1.397-1.341 c-0.017-0.441-0.003-0.884-0.006-1.326c-0.001-0.239-0.003-0.242-0.245-0.243c-1.363-0.001-2.726,0.008-4.089-0.003 c-0.888-0.007-1.421,0.482-1.471,1.46c-0.019,0.38-0.1,0.727-0.357,1.018c-0.397,0.451-0.898,0.601-1.472,0.466 c-0.554-0.131-0.867-0.522-1.035-1.048c-0.117-0.367-0.056-0.737,0.012-1.094c0.341-1.797,1.366-3.006,3.125-3.555 c0.357-0.112,0.731-0.166,1.105-0.166c0.94,0.001,1.881,0.001,2.821-0.001c0.128,0,0.257-0.012,0.385-0.021 c0.702-0.051,1.166-0.511,1.22-1.352c0.004-0.064,0-0.129,0.001-0.193c0.011-0.788,0.605-1.396,1.393-1.425 c0.787-0.029,1.438,0.527,1.493,1.318c0.076,1.083-0.265,2.046-0.913,2.907C16.903,11.751,16.819,11.816,16.792,11.923z M8.249,10.436c-0.258-0.008-0.571,0.018-0.882-0.035c-0.536-0.09-0.876-0.39-1.02-0.916C6.19,8.912,6.25,8.388,6.698,7.96 C7.154,7.526,7.694,7.4,8.285,7.645c0.52,0.216,0.859,0.731,0.89,1.293C9.2,9.382,9.178,9.828,9.182,10.272 c0.001,0.116-0.043,0.167-0.161,0.165C8.781,10.434,8.542,10.436,8.249,10.436z M21.682,0H2.318C1.102,0,0.116,0.986,0.116,2.202 v19.317c0,1.37,1.111,2.481,2.481,2.481h18.807c1.37,0,2.481-1.111,2.481-2.481V2.202C23.884,0.986,22.898,0,21.682,0z M20.125,12.473c0.519,0.804,0.733,1.69,0.677,2.657c-0.108,1.886-1.413,3.474-3.25,3.916c-2.585,0.623-4.566-0.923-5.233-2.794 c-0.109-0.304-0.16-0.622-0.224-0.985c-0.068,0.414-0.115,0.789-0.264,1.134c-0.697,1.617-1.884,2.603-3.665,2.799 c-2.104,0.232-4.048-1.067-4.632-3.084c-0.25-0.863-0.175-1.747-0.068-2.625c0.08-0.653,0.321-1.268,0.632-1.848 c0.057-0.106,0.057-0.184-0.01-0.285c-0.561-0.845-0.779-1.777-0.7-2.784C3.43,8.035,3.56,7.52,3.805,7.038 C4.52,5.626,6.09,4.427,8.193,4.626c1.849,0.175,3.562,1.77,3.83,3.564c0.013,0.09,0.039,0.178,0.068,0.311 c0.044-0.241,0.076-0.439,0.118-0.636c0.344-1.63,1.94-3.335,4.201-3.357c2.292-0.021,3.99,1.776,4.31,3.446 c0.17,0.888,0.089,1.776-0.103,2.663c-0.112,0.517-0.31,1.008-0.524,1.492C20.034,12.245,20.043,12.345,20.125,12.473z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>XAMPP</title><path d="M16.792,11.923c0.113,0.043,0.226,0.079,0.334,0.128c0.45,0.203,0.715,0.553,0.748,1.044 c0.041,0.634,0.044,1.271,0.002,1.905c-0.049,0.732-0.725,1.292-1.483,1.271c-0.735-0.021-1.369-0.62-1.397-1.341 c-0.017-0.441-0.003-0.884-0.006-1.326c-0.001-0.239-0.003-0.242-0.245-0.243c-1.363-0.001-2.726,0.008-4.089-0.003 c-0.888-0.007-1.421,0.482-1.471,1.46c-0.019,0.38-0.1,0.727-0.357,1.018c-0.397,0.451-0.898,0.601-1.472,0.466 c-0.554-0.131-0.867-0.522-1.035-1.048c-0.117-0.367-0.056-0.737,0.012-1.094c0.341-1.797,1.366-3.006,3.125-3.555 c0.357-0.112,0.731-0.166,1.105-0.166c0.94,0.001,1.881,0.001,2.821-0.001c0.128,0,0.257-0.012,0.385-0.021 c0.702-0.051,1.166-0.511,1.22-1.352c0.004-0.064,0-0.129,0.001-0.193c0.011-0.788,0.605-1.396,1.393-1.425 c0.787-0.029,1.438,0.527,1.493,1.318c0.076,1.083-0.265,2.046-0.913,2.907C16.903,11.751,16.819,11.816,16.792,11.923z M8.249,10.436c-0.258-0.008-0.571,0.018-0.882-0.035c-0.536-0.09-0.876-0.39-1.02-0.916C6.19,8.912,6.25,8.388,6.698,7.96 C7.154,7.526,7.694,7.4,8.285,7.645c0.52,0.216,0.859,0.731,0.89,1.293C9.2,9.382,9.178,9.828,9.182,10.272 c0.001,0.116-0.043,0.167-0.161,0.165C8.781,10.434,8.542,10.436,8.249,10.436z M21.682,0H2.318C1.102,0,0.116,0.986,0.116,2.202 v19.317c0,1.37,1.111,2.481,2.481,2.481h18.807c1.37,0,2.481-1.111,2.481-2.481V2.202C23.884,0.986,22.898,0,21.682,0z M20.125,12.473c0.519,0.804,0.733,1.69,0.677,2.657c-0.108,1.886-1.413,3.474-3.25,3.916c-2.585,0.623-4.566-0.923-5.233-2.794 c-0.109-0.304-0.16-0.622-0.224-0.985c-0.068,0.414-0.115,0.789-0.264,1.134c-0.697,1.617-1.884,2.603-3.665,2.799 c-2.104,0.232-4.048-1.067-4.632-3.084c-0.25-0.863-0.175-1.747-0.068-2.625c0.08-0.653,0.321-1.268,0.632-1.848 c0.057-0.106,0.057-0.184-0.01-0.285c-0.561-0.845-0.779-1.777-0.7-2.784C3.43,8.035,3.56,7.52,3.805,7.038 C4.52,5.626,6.09,4.427,8.193,4.626c1.849,0.175,3.562,1.77,3.83,3.564c0.013,0.09,0.039,0.178,0.068,0.311 c0.044-0.241,0.076-0.439,0.118-0.636c0.344-1.63,1.94-3.335,4.201-3.357c2.292-0.021,3.99,1.776,4.31,3.446 c0.17,0.888,0.089,1.776-0.103,2.663c-0.112,0.517-0.31,1.008-0.524,1.492C20.034,12.245,20.043,12.345,20.125,12.473z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/xbox.svg b/assets/lib/simple-icons/icons/xbox.svg
index e70af1cf..85a9689a 100644
--- a/assets/lib/simple-icons/icons/xbox.svg
+++ b/assets/lib/simple-icons/icons/xbox.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Xbox icon</title><path d="M4.102 21.033C6.211 22.881 8.977 24 12 24c3.026 0 5.789-1.119 7.902-2.967 1.877-1.912-4.316-8.709-7.902-11.417-3.582 2.708-9.779 9.505-7.898 11.417zm11.16-14.406c2.5 2.961 7.484 10.313 6.076 12.912C23.002 17.48 24 14.861 24 12.004c0-3.34-1.365-6.362-3.57-8.536 0 0-.027-.022-.082-.042-.063-.022-.152-.045-.281-.045-.592 0-1.985.434-4.805 3.246zM3.654 3.426c-.057.02-.082.041-.086.042C1.365 5.642 0 8.664 0 12.004c0 2.854.998 5.473 2.661 7.533-1.401-2.605 3.579-9.951 6.08-12.91-2.82-2.813-4.216-3.245-4.806-3.245-.131 0-.223.021-.281.046v-.002zM12 3.551S9.055 1.828 6.755 1.746c-.903-.033-1.454.295-1.521.339C7.379.646 9.659 0 11.984 0H12c2.334 0 4.605.646 6.766 2.085-.068-.046-.615-.372-1.52-.339C14.946 1.828 12 3.545 12 3.545v.006z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Xbox</title><path d="M4.102 21.033C6.211 22.881 8.977 24 12 24c3.026 0 5.789-1.119 7.902-2.967 1.877-1.912-4.316-8.709-7.902-11.417-3.582 2.708-9.779 9.505-7.898 11.417zm11.16-14.406c2.5 2.961 7.484 10.313 6.076 12.912C23.002 17.48 24 14.861 24 12.004c0-3.34-1.365-6.362-3.57-8.536 0 0-.027-.022-.082-.042-.063-.022-.152-.045-.281-.045-.592 0-1.985.434-4.805 3.246zM3.654 3.426c-.057.02-.082.041-.086.042C1.365 5.642 0 8.664 0 12.004c0 2.854.998 5.473 2.661 7.533-1.401-2.605 3.579-9.951 6.08-12.91-2.82-2.813-4.216-3.245-4.806-3.245-.131 0-.223.021-.281.046v-.002zM12 3.551S9.055 1.828 6.755 1.746c-.903-.033-1.454.295-1.521.339C7.379.646 9.659 0 11.984 0H12c2.334 0 4.605.646 6.766 2.085-.068-.046-.615-.372-1.52-.339C14.946 1.828 12 3.545 12 3.545v.006z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/xcode.svg b/assets/lib/simple-icons/icons/xcode.svg
index bfdab404..c10eb77c 100644
--- a/assets/lib/simple-icons/icons/xcode.svg
+++ b/assets/lib/simple-icons/icons/xcode.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Xcode icon</title><path d="M20 4.8c.4-.2.6-.4.9-.4.5 0 .8.3.9.5.2.3.9.5 1.2.5.2 0 .5-.7.7-1.3s.2-1.3.1-1.4c-.1-.1-.9-.3-1.1-.3-.1.1-.3.2-.7.2s-.8-.3-1.1-.6c-.5-.5-1.1-.7-1.7-.9-.6-.2-1.3-.2-1.9-.2-.9-.1-1.9-.1-2.8.2-.4.1-.7.2-1.1.4-.1.1-.4.2-.5.2-.1.1-.1.2 0 .2s.5-.1.5-.1-.5.2-.5.4c0 .1.1.1.1.1s.3-.1.5-.1c.4 0 1-.2 1.5-.2.6 0 1.2.2 1.8.8.9 1.1.8 2.5.8 2.8-.2 2.1-4.9 14.9-5.1 15.8-.2.9-.2 1.4.9 1.7s1.5 0 1.7-.4c.1-.7 3.1-16.5 4.9-17.9zM16.1 3.8L0 6.3 2.6 23l8.6-1.4c-.1-.7 2.2-6.7 2.6-7.8l-4.4.7.6-1.8 3.1-.5.8 1s.2-.5.2-.7L9.8 7.2c-.2-.3-.2-.7.1-.9l.2-.2c.3-.2.7-.2.9.1l3.8 4.4c.8-2.4 1.5-4.5 1.5-5.2.1-.2.1-.9-.2-1.6zm-12 9.9l2.7-.5-.7 1.8-1.8.3-.2-1.6zm5.8-5.1l.3.1c.4.1.5.5.4.9l-3 8L5.8 20l.2-3 3-8c.1-.4.5-.5.9-.4zM20.7 5.8c-.4.4-.9 1.7-1.9 5.5h.1l.3 1.6-.8.1c-.1.5-.2 1-.4 1.6 1.7.9.8 3.1.7 3.1-.1 0-.1 0-.1-.1s.1-.4-.2-.5c-.2-.1-.6-.2-.9-.4-.3 1.2-.6 2.6-.9 4.1l6.3-1-2.1-14.1-.1.1z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Xcode</title><path d="M19.06 5.3327c.4517-.1936.7744-.2581 1.097-.1936.5163.1291.7744.5163.968.7098.1936.3872.9034.7744 1.2261.8389.2581.0645.7098-.6453 1.0325-1.2906.3227-.5808.5163-1.3552.4517-1.5488-.0645-.1936-.968-.5808-1.1616-.5808-.1291 0-.3872.1291-.8389.0645-.4517-.0645-.9034-.5808-1.1616-.968-.4517-.6453-1.097-1.0325-1.6778-1.3552-.6453-.3227-1.3552-.5163-2.065-.6453-1.0325-.2581-2.065-.4517-3.0975-.3227-.5808.0645-1.2906.1291-1.8069.3227-.0645 0-.1936.1936-.0645.1936s.5808.0645.5808.0645-.5807.1292-.5807.2583c0 .1291.0645.1291.1291.1291.0645 0 1.4842-.0645 2.065 0 .6453.1291 1.3552.4517 1.8069 1.2261.7744 1.4197.4517 2.7749.2581 3.2266-.968 2.1295-8.6472 15.2294-9.0344 16.1328-.3873.9034-.5163 1.4842.5807 2.065s1.6778.3227 2.0005-.0645c.3872-.5163 7.0339-17.1654 9.2925-18.2624zm-3.6138 8.7117h1.5488c1.0325 0 1.2261.5163 1.2261.7098.0645.5163-.1936 1.1616-1.2261 1.1616h-.968l.7744 1.2906c.4517.7744.2581 1.1616 0 1.4197-.3872.3872-1.2261.3872-1.6778-.4517l-.9034-1.5488c-.6453 1.4197-1.2906 2.9684-2.065 4.7753h4.0009c1.9359 0 3.5492-1.6133 3.5492-3.5492V6.5588c-.0645-.1291-.1936-.0645-.2581 0-.3872.4517-1.4842 2.0004-4.001 7.4856zm-9.8087 8.0019h-.3227c-2.3231 0-4.1945-1.8714-4.1945-4.1945V7.0105c0-2.3231 1.8714-4.1945 4.1945-4.1945h9.3571c-.1936-.1936-.968-.5163-1.7423-.4517-.3227 0-.968.1291-1.3552-.1291-.3872-.3227-.3227-.5163-.9034-.5163H4.9277c-2.6458 0-4.7753 2.1295-4.7753 4.7753v11.7447c0 2.6458 2.1295 4.7753 4.4527 4.7108.6452 0 .8388-.5162 1.0324-.9034zM20.4152 6.9459v10.9058c0 2.3231-1.8714 4.1945-4.1945 4.1945H11.897s-.3872 1.0325.8389 1.0325h3.8719c2.6458 0 4.7753-2.1295 4.7753-4.7753V8.8173c.0646-.9034-.7098-1.4842-.9679-1.8714zm-18.5851.0646v10.8413c0 1.9359 1.6133 3.5492 3.5492 3.5492h.5808c0-.0645.7744-1.4197 2.4522-4.2591.1936-.3872.4517-.7744.7098-1.2261H4.4114c-.5808 0-.9034-.3872-.968-.7098-.1291-.5163.1936-1.1616.9034-1.1616h2.3877l3.033-5.2916s-.7098-1.2906-.9034-1.6133c-.2582-.4517-.1291-.9034.129-1.1615.3872-.3872 1.0325-.5808 1.6778.4517l.2581.3872.2581-.3872c.5808-.8389.968-.7744 1.2906-.7098.5163.1291.8389.7098.3872 1.6133L8.864 14.0444h1.3552c.4517-.7744.9034-1.5488 1.3552-2.3877-.0645-.3227-.1291-.7098-.0645-1.0325.0645-.5163.3227-.968.6453-1.3552l.3872.6453c1.2261-2.1295 2.1295-3.9364 2.3877-4.6463.1291-.3872.3227-1.1616.1291-1.8069H5.3794c-2.0005.0001-3.5493 1.6134-3.5493 3.5494zM4.605 17.7872c0-.0645.7744-1.4197.7744-1.4197 1.2261-.3227 1.8069.4517 1.8714.5163 0 0-.8389 1.4842-1.097 1.7423s-.5808.3227-.9034.2581c-.5164-.129-.839-.6453-.6454-1.097z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/xdadevelopers.svg b/assets/lib/simple-icons/icons/xdadevelopers.svg
index 47b33a34..0466d878 100644
--- a/assets/lib/simple-icons/icons/xdadevelopers.svg
+++ b/assets/lib/simple-icons/icons/xdadevelopers.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>XDA Developers icon</title><path d="M14.547 6.502a.193.193 0 00-.131.19v2.396h-3.617c-.783 0-1.421.208-1.887.64-.468.436-.701 1.066-.701 1.852v3.416c-.01.089-.024.184-.024.285 0 .482.142.933.417 1.328.277.4.659.673 1.115.795.254.07.606.096 1.092.096h1.779c.86 0 1.529-.198 1.992-.617.463-.42.687-1.043.688-1.828V6.693a.193.193 0 00-.19-.19h-.475a.193.193 0 00-.058-.001zM.2 9.086a.193.193 0 00-.02.002.193.193 0 00-.095.308l3.049 3.915-3.096 3.878a.193.193 0 00.154.309h.641a.193.193 0 00.154-.07l2.692-3.416 2.68 3.416a.193.193 0 00.154.07h.629a.193.193 0 00.154-.309L4.238 13.3l3-3.903a.193.193 0 00-.154-.308h-.64a.193.193 0 00-.155.07l-2.61 3.428-2.644-3.428a.193.193 0 00-.154-.07H.24a.193.193 0 00-.04-.002zm16.986 0a.193.193 0 00-.019.002.193.193 0 00-.13.19v.486a.193.193 0 00.189.19h4.4c.541 0 .913.125 1.15.357.238.23.37.59.37 1.115v.332h-3.844c-.686 0-1.26.21-1.672.629-.412.418-.617.985-.617 1.672v1.197c0 .569.17 1.07.51 1.459.003.004.008.007.011.012.432.512 1.06.771 1.815.771h2.408c.706 0 1.281-.21 1.672-.64.386-.426.57-1.01.57-1.721V11.52c0-.784-.211-1.41-.664-1.827-.453-.416-1.118-.605-1.957-.605h-4.152a.193.193 0 00-.04-.002zm-6.402.879h3.631v5.066c0 .495-.143.846-.404 1.104-.257.254-.655.433-1.221.498h-.156a.193.193 0 00-.024 0 1 1 0 01-.142.012h-1.672c-.683 0-1.13-.153-1.363-.381-.233-.23-.381-.659-.381-1.34v-3.309c0-.649.234-1.102.713-1.424v.012c.217-.142.556-.238 1.02-.238zm8.483 2.644v.002h3.867v2.645c0 .495-.12.828-.332 1.045-.212.217-.538.344-1.022.344h-2.467a1.27 1.27 0 01-.224-.024c-.43-.075-.732-.238-.926-.463-.194-.225-.297-.525-.297-.937v-1.176c0-.43.108-.747.297-.973.187-.223.47-.37.877-.437h.012c.112-.017.187-.026.215-.026Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>XDA Developers</title><path d="M13.84 3.052V0h7.843v17.583H13.84v-3.024h4.591V3.052zM5.569 14.53V3.024h4.592V0H2.318v17.583H6.98L10.16 24v-9.483z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/xdotorg.svg b/assets/lib/simple-icons/icons/xdotorg.svg
new file mode 100644
index 00000000..cd46af8a
--- /dev/null
+++ b/assets/lib/simple-icons/icons/xdotorg.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>X.Org</title><path d="M19.94 1.9l-9.092 11.874 4.598 6.392a14.29 14.29 0 0 1-2.56.228c-2.387 0-4.582-.577-6.316-1.542l6.556-8.627-6.031-8.311L2.23 1.91 9.8 12.48l-4.332 5.66c-1.692-1.266-2.729-2.965-2.729-4.832 0-2.13 1.348-4.042 3.48-5.342l-.655-.999C2.22 8.386 0 10.876 0 13.71c0 2.432 1.635 4.61 4.212 6.075l-1.765 2.307h1.661l1.299-1.709c1.892.83 4.158 1.314 6.592 1.314a17.43 17.43 0 0 0 4.188-.501l.65.903h4.865l-1.729-2.422C22.443 18.214 24 16.082 24 13.71c0-2.94-2.39-5.512-5.948-6.9l-.217.311c3.099 1.214 5.195 3.531 5.195 6.188 0 2.202-1.44 4.17-3.698 5.47l-5.153-7.22 7.382-9.658zM12 5.755c-.586 0-1.212.046-1.775.1 1.004 1.309 1.836 2.417 2.795 3.676-.538-1.157-1.644-2.268-1.261-2.839.378-.565 1.075-.47 1.128-.47 1.118 0 2.194.127 3.2.36l.235-.324C14.98 5.91 13.523 5.754 12 5.754z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/xero.svg b/assets/lib/simple-icons/icons/xero.svg
index d6097798..88dbc2fd 100644
--- a/assets/lib/simple-icons/icons/xero.svg
+++ b/assets/lib/simple-icons/icons/xero.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Xero icon</title><path d="M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0zm6.585 14.655c-1.485 0-2.69-1.206-2.69-2.689 0-1.485 1.207-2.691 2.69-2.691 1.485 0 2.69 1.207 2.69 2.691s-1.207 2.689-2.69 2.689zM7.53 14.644c-.099 0-.192-.041-.267-.116l-2.043-2.04-2.052 2.047c-.069.068-.16.108-.258.108-.202 0-.368-.166-.368-.368 0-.099.04-.191.111-.263l2.04-2.05-2.038-2.047c-.075-.069-.113-.162-.113-.261 0-.203.166-.366.368-.366.098 0 .188.037.258.105l2.055 2.048 2.048-2.045c.069-.071.162-.108.26-.108.211 0 .375.165.375.366 0 .098-.029.188-.104.258l-2.056 2.055 2.055 2.051c.068.069.104.16.104.258 0 .202-.165.368-.365.368h-.01zm8.017-4.591c-.796.101-.882.476-.882 1.404v2.787c0 .202-.165.366-.366.366-.203 0-.367-.165-.368-.366v-4.53c0-.204.16-.366.362-.366.166 0 .316.125.346.289.27-.209.6-.317.93-.317h.105c.195 0 .359.165.359.368 0 .201-.164.352-.375.359 0 0-.09 0-.164.008l.053-.002zm-3.091 2.205H8.625c0 .019.003.037.006.057.02.105.045.211.083.31.194.531.765 1.275 1.829 1.29.33-.003.631-.086.9-.229.21-.12.391-.271.525-.428.045-.058.09-.112.12-.168.18-.229.405-.186.54-.083.164.135.18.391.045.57l-.016.016c-.21.27-.435.495-.689.66-.255.164-.525.284-.811.345-.33.09-.645.104-.975.06-1.095-.135-2.01-.93-2.28-2.01-.06-.21-.09-.42-.09-.645 0-.855.421-1.695 1.125-2.205.885-.615 2.085-.66 3-.075.63.405 1.035 1.021 1.185 1.771.075.419-.21.794-.734.81l.068-.046zm6.129-2.223c-1.064 0-1.931.865-1.931 1.931 0 1.064.866 1.931 1.931 1.931s1.931-.867 1.931-1.931c0-1.065-.866-1.933-1.931-1.933v.002zm0 2.595c-.367 0-.666-.297-.666-.666 0-.367.3-.665.666-.665.367 0 .667.299.667.665 0 .369-.3.667-.667.666zm-8.04-2.603c-.91 0-1.672.623-1.886 1.466v.03h3.776c-.203-.855-.973-1.494-1.891-1.494v-.002z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Xero</title><path d="M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0zm6.585 14.655c-1.485 0-2.69-1.206-2.69-2.689 0-1.485 1.207-2.691 2.69-2.691 1.485 0 2.69 1.207 2.69 2.691s-1.207 2.689-2.69 2.689zM7.53 14.644c-.099 0-.192-.041-.267-.116l-2.043-2.04-2.052 2.047c-.069.068-.16.108-.258.108-.202 0-.368-.166-.368-.368 0-.099.04-.191.111-.263l2.04-2.05-2.038-2.047c-.075-.069-.113-.162-.113-.261 0-.203.166-.366.368-.366.098 0 .188.037.258.105l2.055 2.048 2.048-2.045c.069-.071.162-.108.26-.108.211 0 .375.165.375.366 0 .098-.029.188-.104.258l-2.056 2.055 2.055 2.051c.068.069.104.16.104.258 0 .202-.165.368-.365.368h-.01zm8.017-4.591c-.796.101-.882.476-.882 1.404v2.787c0 .202-.165.366-.366.366-.203 0-.367-.165-.368-.366v-4.53c0-.204.16-.366.362-.366.166 0 .316.125.346.289.27-.209.6-.317.93-.317h.105c.195 0 .359.165.359.368 0 .201-.164.352-.375.359 0 0-.09 0-.164.008l.053-.002zm-3.091 2.205H8.625c0 .019.003.037.006.057.02.105.045.211.083.31.194.531.765 1.275 1.829 1.29.33-.003.631-.086.9-.229.21-.12.391-.271.525-.428.045-.058.09-.112.12-.168.18-.229.405-.186.54-.083.164.135.18.391.045.57l-.016.016c-.21.27-.435.495-.689.66-.255.164-.525.284-.811.345-.33.09-.645.104-.975.06-1.095-.135-2.01-.93-2.28-2.01-.06-.21-.09-.42-.09-.645 0-.855.421-1.695 1.125-2.205.885-.615 2.085-.66 3-.075.63.405 1.035 1.021 1.185 1.771.075.419-.21.794-.734.81l.068-.046zm6.129-2.223c-1.064 0-1.931.865-1.931 1.931 0 1.064.866 1.931 1.931 1.931s1.931-.867 1.931-1.931c0-1.065-.866-1.933-1.931-1.933v.002zm0 2.595c-.367 0-.666-.297-.666-.666 0-.367.3-.665.666-.665.367 0 .667.299.667.665 0 .369-.3.667-.667.666zm-8.04-2.603c-.91 0-1.672.623-1.886 1.466v.03h3.776c-.203-.855-.973-1.494-1.891-1.494v-.002z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/xfce.svg b/assets/lib/simple-icons/icons/xfce.svg
index e8d7db9c..7ff824a8 100644
--- a/assets/lib/simple-icons/icons/xfce.svg
+++ b/assets/lib/simple-icons/icons/xfce.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>XFCE icon</title><path d="M.01 5.756c-.128.07 1.019.82 3.161 1.706 2.143.886 5.103 3.13 4.87 3.493-.695.984-1.105 2.162-.822 4.178.051.355-1.047.97-.968 1.506.067.408 1.228-.403 1.355-.243.078.288-.621 1.743-.338 1.847.206.062 2.023-1.73 2.129-1.7 2.995.908 6.892.222 6.967.194-.007-.016 2.804 1.326 3.049 1.166.616-.67-1.169-1.615-.871-1.992.13-.198 2.173.742 2.274.485.146-.443-.948-1.375-1.113-1.651-.143-.255-.174-.666.194-.924.367-.257 4.125-1.7 3.967-2.818-.272-2.03-4.766-2.161-4.839-2.332-.034-.08.199-2.902-1.112-2.38-.808.301-.15 2.099-.097 2.332.048.214-.359.19-.436.097-.17-.21-.736-2.084-1.403-1.75-.935.518-.055 2.135-.242 2.187-.346.195-.326.67-.604 1.056-.458.66-3.886-.309-4.994-.376-.811-.048-1.586.62-1.66.535-.987-.993-3.03-2.722-5.27-3.297C1.953 6.733.086 5.743.01 5.755zm22.866 1.816c-.068-.018-.382 1.593-.234 1.665.13.097.355-1.576.237-1.662l-.003-.002zm1.107.213c-.17-.003-1.076 1.449-.867 1.603.129.098.937-1.543.881-1.598a.024.024 0 00-.014-.005zm-4.385 1.768a.388.444 0 01.388.443.388.444 0 01-.388.444.388.444 0 01-.388-.444.388.444 0 01.388-.443zm-.871.27c.165.714.422.94 1.194.918-.983.905-1.58-.645-1.194-.919zm2.125 1.867c.04 0 .071.011.092.03.387.141-1.664.883-1.678.778-.021-.075 1.197-.823 1.586-.808zm.208.475a.1.1 0 01.056.009c.365.364-1.157 1.173-1.14 1.144-.123-.074.766-1.129 1.084-1.154z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>XFCE</title><path d="M.121 5.7271a.104.104 0 0 0-.0344.0017v-.0003l-.0154.0024-.0138.0076a.1156.1156 0 0 0-.0486.053.1147.1147 0 0 0-.0065.067c.0073.0362.0229.0552.0392.0754.0326.0403.0783.0798.1424.1286.1282.0976.3274.2256.5973.379.5396.3065 1.3597.7126 2.4276 1.1523 1.0533.4336 2.3185 1.2056 3.2863 1.9117.4838.353.8938.6902 1.165.9572.1356.1336.2365.2504.2924.337.028.0433.0443.0791.0498.1003.0027.0106.0029.0158.003.0176-.6994.9875-1.1131 2.187-.8297 4.1959l.0003.0003v.0002c.0055.0378-.0317.1266-.1203.2349-.0886.1082-.2168.2333-.3462.3656-.1294.1324-.2604.2723-.3573.4192-.0968.1469-.1629.3058-.138.4716v.0005l.0002.0005c.0122.074.062.1403.1251.1684.0632.0281.1297.0276.1987.0184.1379-.0185.295-.0788.4534-.1449.1584-.066.3168-.1387.4379-.1832a.7913.7913 0 0 1 .1308-.0376c-.0002.021.0023.0308-.0032.0646-.0102.0611-.0291.1386-.0536.2251-.0488.173-.1194.3824-.1843.5878-.0648.2054-.1239.4059-.15.57-.013.082-.0188.155-.008.2219.0107.0669.0489.1414.1224.1683l.0027.0011.0027.0009c.0509.015.0835.0012.1164-.0117a.6625.6625 0 0 0 .1038-.054c.0748-.046.1643-.1118.2657-.1916.2027-.1596.4515-.3752.697-.5916.2455-.2164.4874-.4336.6734-.5937.093-.08.1723-.146.2292-.1892a.8072.8072 0 0 1 .0624-.044c1.4976.4462 3.2026.5014 4.5489.4407a20.9787 20.9787 0 0 0 1.6869-.144c.2111-.027.3812-.0525.5013-.0722.06-.0099.1076-.0183.1419-.0249a1.1699 1.1699 0 0 0 .033-.0068l.0002.0003c.0194.0085.049.022.087.0392l.3181.1443c.265.12.6217.28.9867.4357.365.1556.7378.3069 1.0378.4102.15.0517.2812.0913.3875.1138.0531.0112.1.0184.1427.0197.0426.0012.0828.001.1273-.0281l.0095-.0062.0078-.0084c.1755-.19.183-.4255.0992-.6327-.0839-.2072-.2455-.4023-.4127-.5864-.1672-.1841-.3415-.3571-.45-.4989-.0542-.0709-.0909-.1342-.1043-.1783-.0118-.039-.0065-.053.0057-.0711a.2403.2403 0 0 1 .0505 0c.0583.0053.1458.0236.2484.0508.2052.0544.4736.1441.7421.2324.2685.0883.5367.1751.7497.2251.1065.025.1982.0413.2764.0422.0392.0004.0754-.0023.112-.0152.0365-.0128.0778-.0424.0956-.0875l.0008-.0022.0008-.0024c.0502-.1516-.0056-.3138-.0951-.4762-.0895-.1624-.2203-.3305-.3594-.4927-.1393-.1621-.287-.3178-.4093-.449-.1217-.1307-.2194-.2425-.2494-.2922-.062-.1099-.1004-.2568-.083-.3986.0174-.142.0849-.2801.2475-.3935.032-.0223.1324-.0749.2681-.14.1358-.0651.311-.1464.5108-.24.3995-.1873.8972-.425 1.3802-.6902.4829-.2653.9507-.5574 1.2937-.8589.3427-.3013.5755-.6187.5291-.948-.0722-.5354-.425-.9433-.8964-1.2494-.4714-.3061-1.0654-.5177-1.6504-.6716-.585-.1538-1.1615-.2492-1.5953-.3167-.217-.0337-.3984-.0603-.5251-.0835a1.5818 1.5818 0 0 1-.144-.0316h-.0003a4.2196 4.2196 0 0 1-.0003-.0878c.0006-.0827.0018-.1971 0-.3308-.0035-.2674-.0186-.612-.0746-.9416-.056-.3297-.1499-.6458-.3319-.8597-.1817-.2136-.4698-.3041-.8207-.1656-.2319.0867-.3625.2882-.4175.5189-.0551.231-.0452.4976-.0095.7594.0357.2618.0984.5187.155.7248.0568.206.1093.3695.1187.4113v.0003c.006.026.0051.0173-.0049.0254-.01.008-.0423.021-.0832.0246a.4074.4074 0 0 1-.126-.0098c-.0373-.0092-.0626-.0292-.0575-.023-.0078-.0095-.0375-.0606-.0695-.1286-.0319-.068-.0701-.1557-.1137-.2548-.087-.1982-.195-.4413-.3197-.67-.1247-.2286-.2647-.4431-.4283-.587-.0818-.0719-.171-.1269-.2695-.151a.4444.4444 0 0 0-.3064.0362l-.0016.0008-.0016.0014c-.2555.1408-.3929.3651-.449.607-.056.2417-.0374.502.0033.7437.0407.2416.1046.4659.1454.6286.0204.0813.0347.1484.0381.1867.0011.0127.0005.0142.0003.0181-.1823.114-.275.2937-.346.4789-.0744.194-.1365.397-.2634.5732l-.0006.0005-.0003.0006c-.0384.055-.1194.1045-.2464.1375-.127.033-.2952.049-.4908.0495-.3912.0008-.891-.059-1.412-.1419-1.042-.1656-2.1617-.4221-2.7331-.4567-.4299-.0254-.8375.1359-1.1459.2875-.1542.0759-.2843.15-.3764.1979a.8919.8919 0 0 1-.0957.0443c-.9968-.9934-3.013-2.6882-5.2499-3.2603-.6133-.1664-1.3873-.4945-2.015-.7794-.3138-.1425-.5914-.2741-.7958-.3697a11.373 11.373 0 0 0-.2481-.1138 1.4159 1.4159 0 0 0-.0776-.0316.3291.3291 0 0 0-.0305-.01C.132 5.7309.128 5.7286.121 5.7274zm22.6994 1.8353a.0621.0621 0 0 0-.0182.0046c-.0199.0086-.0256.0186-.0313.0268a.2303.2303 0 0 0-.026.0537c-.0158.0423-.033.1017-.0516.1754-.0371.1474-.0786.3496-.1137.5565-.0352.2068-.0639.4179-.0744.5845-.0052.0834-.0062.1552-.0002.2125a.3184.3184 0 0 0 .016.0764.106.106 0 0 0 .0475.0587.0745.0745 0 0 0 .0435.013.0789.0789 0 0 0 .043-.0176c.0206-.0163.031-.0348.0418-.0565.0218-.0434.0407-.1023.0598-.1757.0382-.1468.0746-.3488.1035-.5567.0289-.2078.0501-.421.0567-.5897.0033-.0843.0031-.157-.0022-.2145a.4137.4137 0 0 0-.0127-.0757.1082.1082 0 0 0-.036-.0587c-.0063-.006-.013-.0127-.0242-.0156a.061.061 0 0 0-.0214-.0014zm1.111.2114a.104.104 0 0 0-.0428.0075c-.0233.0095-.0431.024-.0645.0422-.0429.0365-.0908.0899-.1444.157-.107.1342-.2336.3218-.35.5178-.1162.196-.222.3999-.2864.5686-.0322.0844-.0545.1597-.0616.2246-.0071.0647-.0006.1294.051.1678.0286.0211.0674.015.0898.0035.0225-.0115.0403-.0275.0597-.0475.0388-.04.0812-.0975.1284-.1687.0944-.1424.2056-.3388.311-.5402a9.6877 9.6877 0 0 0 .2754-.5673 2.732 2.732 0 0 0 .0806-.2002.522.522 0 0 0 .0191-.0673A.1276.1276 0 0 0 24 7.8419c-.0002-.0112.0007-.0282-.0191-.0479l-.002-.0019-.0015-.0016a.0757.0757 0 0 0-.046-.0167zM19.5691 9.629c.1818 0 .3346.1698.3346.3876 0 .2177-.1528.3872-.3346.3872-.1817 0-.3345-.1695-.3345-.3872 0-.2178.1528-.3876.3345-.3876zm-.8823.3395c.0791.2909.1785.5128.35.6475.1629.128.3965.1727.6894.1813-.1803.129-.3447.1912-.4803.1751-.168-.0198-.3091-.1247-.414-.2686s-.1708-.3257-.1867-.483c-.011-.1075.0095-.1888.0416-.2523zm2.0906 1.7806c.0534-.0043.083.0061.0911.0138l.0084.0081.011.0041c.0068.0024.0032.0004.0055.002-.0108.016-.0496.0531-.1124.0929-.1312.083-.3492.1845-.5792.2778-.23.0933-.473.1791-.6578.2349-.059.0178-.098.0261-.1424.037.029-.0212.0513-.0392.0894-.0646a6.3595 6.3595 0 0 1 .5192-.306c.1948-.103.3971-.1968.5602-.2513.0816-.0272.1536-.0443.207-.0486zm.2406.4714a.0686.0686 0 0 1 .0248.0022c.0265.0305.0393.0587.0349.0964-.005.0422-.0289.0957-.0708.1538-.084.1161-.2354.2477-.3984.3667-.163.1191-.3378.2268-.4702.3027-.0483.0277-.0822.0454-.1165.0635.0153-.0296.029-.0579.0562-.0983.0782-.1163.1994-.266.3319-.409.1325-.1428.2771-.2796.4005-.3702.0617-.0453.1184-.0788.1624-.0962a.1569.1569 0 0 1 .0451-.0116z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/xiaomi.svg b/assets/lib/simple-icons/icons/xiaomi.svg
index 5523d2df..f08eae5b 100644
--- a/assets/lib/simple-icons/icons/xiaomi.svg
+++ b/assets/lib/simple-icons/icons/xiaomi.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Xiaomi icon</title><path d="M19.96 20a.32.32 0 0 1-.32-.32V4.32a.32.32 0 0 1 .32-.32h3.71a.32.32 0 0 1 .33.32v15.36a.32.32 0 0 1-.33.32zm-6.22 0s-.3-.09-.3-.32v-9.43A2.18 2.18 0 0 0 11.24 8H4.3c-.4 0-.3.3-.3.3v11.38c0 .27-.3.32-.3.32H.33a.32.32 0 0 1-.33-.32V4.32A.32.32 0 0 1 .33 4h12.86a4.28 4.28 0 0 1 4.25 4.27l.01 11.41a.32.32 0 0 1-.32.32zm-6.9 0a.3.3 0 0 1-.3-.3v-9a.3.3 0 0 1 .3-.3h3.77a.3.3 0 0 1 .29.3v9a.3.3 0 0 1-.3.3z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Xiaomi</title><path d="M12 0C8.016 0 4.756.255 2.493 2.516.23 4.776 0 8.033 0 12.012c0 3.98.23 7.235 2.494 9.497C4.757 23.77 8.017 24 12 24c3.983 0 7.243-.23 9.506-2.491C23.77 19.247 24 15.99 24 12.012c0-3.984-.233-7.243-2.502-9.504C19.234.252 15.978 0 12 0zM4.906 7.405h5.624c1.47 0 3.007.068 3.764.827.746.746.827 2.233.83 3.676v4.54a.15.15 0 0 1-.152.147h-1.947a.15.15 0 0 1-.152-.148V11.83c-.002-.806-.048-1.634-.464-2.051-.358-.36-1.026-.441-1.72-.458H7.158a.15.15 0 0 0-.151.147v6.98a.15.15 0 0 1-.152.148H4.906a.15.15 0 0 1-.15-.148V7.554a.15.15 0 0 1 .15-.149zm12.131 0h1.949a.15.15 0 0 1 .15.15v8.892a.15.15 0 0 1-.15.148h-1.949a.15.15 0 0 1-.151-.148V7.554a.15.15 0 0 1 .151-.149zM8.92 10.948h2.046c.083 0 .15.066.15.147v5.352a.15.15 0 0 1-.15.148H8.92a.15.15 0 0 1-.152-.148v-5.352a.15.15 0 0 1 .152-.147Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/xilinx.svg b/assets/lib/simple-icons/icons/xilinx.svg
new file mode 100644
index 00000000..622cca38
--- /dev/null
+++ b/assets/lib/simple-icons/icons/xilinx.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Xilinx</title><path d="M8 18l5.241 6H5.586L.345 18l5.241-6L.345 6l5.241-6h7.655L8 6l5.241 6L8 18zM23.655 0H13.241l5.241 6 5.173-6zM13.241 24h10.414l-5.172-6-5.242 6z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/xing.svg b/assets/lib/simple-icons/icons/xing.svg
index 0f53c796..43e874a2 100644
--- a/assets/lib/simple-icons/icons/xing.svg
+++ b/assets/lib/simple-icons/icons/xing.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Xing icon</title><path d="M18.188 0c-.517 0-.741.325-.927.66 0 0-7.455 13.224-7.702 13.657.015.024 4.919 9.023 4.919 9.023.17.308.436.66.967.66h3.454c.211 0 .375-.078.463-.22.089-.151.089-.346-.009-.536l-4.879-8.916c-.004-.006-.004-.016 0-.022L22.139.756c.095-.191.097-.387.006-.535C22.056.078 21.894 0 21.686 0h-3.498zM3.648 4.74c-.211 0-.385.074-.473.216-.09.149-.078.339.02.531l2.34 4.05c.004.01.004.016 0 .021L1.86 16.051c-.099.188-.093.381 0 .529.085.142.239.234.45.234h3.461c.518 0 .766-.348.945-.667l3.734-6.609-2.378-4.155c-.172-.315-.434-.659-.962-.659H3.648v.016z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Xing</title><path d="M18.188 0c-.517 0-.741.325-.927.66 0 0-7.455 13.224-7.702 13.657.015.024 4.919 9.023 4.919 9.023.17.308.436.66.967.66h3.454c.211 0 .375-.078.463-.22.089-.151.089-.346-.009-.536l-4.879-8.916c-.004-.006-.004-.016 0-.022L22.139.756c.095-.191.097-.387.006-.535C22.056.078 21.894 0 21.686 0h-3.498zM3.648 4.74c-.211 0-.385.074-.473.216-.09.149-.078.339.02.531l2.34 4.05c.004.01.004.016 0 .021L1.86 16.051c-.099.188-.093.381 0 .529.085.142.239.234.45.234h3.461c.518 0 .766-.348.945-.667l3.734-6.609-2.378-4.155c-.172-.315-.434-.659-.962-.659H3.648v.016z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/xmpp.svg b/assets/lib/simple-icons/icons/xmpp.svg
index ec4a18f5..77785928 100644
--- a/assets/lib/simple-icons/icons/xmpp.svg
+++ b/assets/lib/simple-icons/icons/xmpp.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>XMPP icon</title><path d="M24,3.276l-3.401,1.318l-1.025,0.366l-3.08,0.911l0,0c0.01,0.18,0.016,0.361,0.016,0.543 c0,3.353-1.693,7.444-4.51,10.386C9.183,13.859,7.49,9.768,7.49,6.415c0-0.182,0.006-0.363,0.016-0.543l0,0L4.426,4.96L3.401,4.594 L0,3.276C0.146,8.978,4.854,14.9,10.498,18.17c-1.303,1.028-2.778,1.81-4.388,2.216l-0.004,0.339 c1.716-0.146,3.333-0.599,4.822-1.279c0.359-0.148,0.717-0.308,1.072-0.479c0.355,0.171,0.712,0.33,1.071,0.478 c1.489,0.68,3.107,1.133,4.822,1.279l-0.004-0.339c-1.61-0.405-3.085-1.188-4.388-2.216C19.146,14.9,23.854,8.978,24,3.276z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>XMPP</title><path d="M24 3.186l-3.217 1.248-.976.325-3.122.925c.014.18.014.361.014.555 0 3.422-1.744 7.59-4.63 10.573-2.805-2.972-4.49-7.066-4.49-10.434 0-.194 0-.375.014-.555l-3.11-.921v-.009l-.861-.306L0 3.172c.146 5.747 4.867 11.701 10.542 15.02-1.3 1.014-2.766 1.788-4.365 2.192v.319c.434-.054.852-.14 1.271-.225.15-.027.3-.048.451-.08l.047-.012c1.36-.29 2.722-.776 4.052-1.408.397.195.797.38 1.2.548.109.05.22.095.33.142.201.086.407.159.612.236 1.25.474 2.568.809 3.96.924v-.305c-1.68-.425-3.211-1.264-4.56-2.355C19.194 14.904 23.853 8.975 24 3.186z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/xrp.svg b/assets/lib/simple-icons/icons/xrp.svg
index 9335c3e9..5e0d7655 100644
--- a/assets/lib/simple-icons/icons/xrp.svg
+++ b/assets/lib/simple-icons/icons/xrp.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>XRP icon</title><path d="M5.52 2.955A3.521 3.521 0 001.996 6.48v2.558A2.12 2.12 0 010 11.157l.03.562-.03.561a2.12 2.12 0 011.996 2.121v2.948a3.69 3.69 0 003.68 3.696v-1.123a2.56 2.56 0 01-2.557-2.558v-2.963a3.239 3.239 0 00-1.42-2.682 3.26 3.26 0 001.42-2.682V6.48A2.412 2.412 0 015.52 4.078h.437V2.955zm12.538 0v1.123h.437a2.39 2.39 0 012.386 2.401v2.558a3.26 3.26 0 001.42 2.682 3.239 3.239 0 00-1.42 2.682v2.963a2.56 2.56 0 01-2.557 2.558v1.123a3.69 3.69 0 003.68-3.696V14.4A2.12 2.12 0 0124 12.281l-.03-.562.03-.561a2.12 2.12 0 01-1.996-2.12V6.478a3.518 3.518 0 00-3.509-3.524zM6.253 7.478l3.478 3.259a3.393 3.393 0 004.553 0l3.478-3.26h-1.669l-2.65 2.464a2.133 2.133 0 01-2.886 0L7.922 7.478zm5.606 4.884a3.36 3.36 0 00-2.128.886l-3.493 3.274h1.668l2.667-2.495a2.133 2.133 0 012.885 0l2.65 2.495h1.67l-3.494-3.274a3.36 3.36 0 00-2.425-.886z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>XRP</title><path d="M5.52 2.955A3.521 3.521 0 001.996 6.48v2.558A2.12 2.12 0 010 11.157l.03.562-.03.561a2.12 2.12 0 011.996 2.121v2.948a3.69 3.69 0 003.68 3.696v-1.123a2.56 2.56 0 01-2.557-2.558v-2.963a3.239 3.239 0 00-1.42-2.682 3.26 3.26 0 001.42-2.682V6.48A2.412 2.412 0 015.52 4.078h.437V2.955zm12.538 0v1.123h.437a2.39 2.39 0 012.386 2.401v2.558a3.26 3.26 0 001.42 2.682 3.239 3.239 0 00-1.42 2.682v2.963a2.56 2.56 0 01-2.557 2.558v1.123a3.69 3.69 0 003.68-3.696V14.4A2.12 2.12 0 0124 12.281l-.03-.562.03-.561a2.12 2.12 0 01-1.996-2.12V6.478a3.518 3.518 0 00-3.509-3.524zM6.253 7.478l3.478 3.259a3.393 3.393 0 004.553 0l3.478-3.26h-1.669l-2.65 2.464a2.133 2.133 0 01-2.886 0L7.922 7.478zm5.606 4.884a3.36 3.36 0 00-2.128.886l-3.493 3.274h1.668l2.667-2.495a2.133 2.133 0 012.885 0l2.65 2.495h1.67l-3.494-3.274a3.36 3.36 0 00-2.425-.886z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/xsplit.svg b/assets/lib/simple-icons/icons/xsplit.svg
index 6bf7bbf2..e196d59d 100644
--- a/assets/lib/simple-icons/icons/xsplit.svg
+++ b/assets/lib/simple-icons/icons/xsplit.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>XSplit icon</title><path d="M24 19.5c-.7-.1-2.5-.3-2.7-.3-.1 0-2.8 2.3-4 3.399l-.1.101c.1-1.3.3-2.601.399-3.9C11.7 18.1 5.9 17.4 0 16.7V1.5v-.2H.3C.9 1.4 22.9 3.9 24 4v15.5zm-2.6-2.6V6.2C15.1 5.5 8.7 4.7 2.4 4v10.6c6.3.8 12.7 1.5 19 2.3z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>XSplit</title><path d="M24 19.5c-.7-.1-2.5-.3-2.7-.3-.1 0-2.8 2.3-4 3.399l-.1.101c.1-1.3.3-2.601.399-3.9C11.7 18.1 5.9 17.4 0 16.7V1.5v-.2H.3C.9 1.4 22.9 3.9 24 4v15.5zm-2.6-2.6V6.2C15.1 5.5 8.7 4.7 2.4 4v10.6c6.3.8 12.7 1.5 19 2.3z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/xstate.svg b/assets/lib/simple-icons/icons/xstate.svg
new file mode 100644
index 00000000..992f3a7d
--- /dev/null
+++ b/assets/lib/simple-icons/icons/xstate.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>XState</title><path d="M15.891 0h6.023l-6.085 10.563c-1.853-3.305-1.822-7.32.062-10.563zm6.055 23.999L8.078.001H2.055l6.919 12.015L2.055 24h6.023L12 17.236 15.892 24z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/yahoo.svg b/assets/lib/simple-icons/icons/yahoo.svg
index b1066409..bafe79b6 100644
--- a/assets/lib/simple-icons/icons/yahoo.svg
+++ b/assets/lib/simple-icons/icons/yahoo.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Yahoo! icon</title><path d="M18.86 1.56L14.27 11.87H19.4L24 1.56H18.86M0 6.71L5.15 18.27L3.3 22.44H7.83L14.69 6.71H10.19L7.39 13.44L4.62 6.71H0M15.62 12.87C13.95 12.87 12.71 14.12 12.71 15.58C12.71 17 13.91 18.19 15.5 18.19C17.18 18.19 18.43 16.96 18.43 15.5C18.43 14.03 17.23 12.87 15.62 12.87Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Yahoo!</title><path d="M18.86 1.56L14.27 11.87H19.4L24 1.56H18.86M0 6.71L5.15 18.27L3.3 22.44H7.83L14.69 6.71H10.19L7.39 13.44L4.62 6.71H0M15.62 12.87C13.95 12.87 12.71 14.12 12.71 15.58C12.71 17 13.91 18.19 15.5 18.19C17.18 18.19 18.43 16.96 18.43 15.5C18.43 14.03 17.23 12.87 15.62 12.87Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/yale.svg b/assets/lib/simple-icons/icons/yale.svg
new file mode 100644
index 00000000..e2ca43b0
--- /dev/null
+++ b/assets/lib/simple-icons/icons/yale.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Yale</title><path d="M15.8 15.72v-1.24c-.64.04-.8-.24-.8-.76V7.6h-1.36v6.24c0 1.2.44 1.96 2.16 1.88zm4.96-5.24c-.44-.52-1.12-.88-2.08-.88-1 0-1.68.36-2.12.88-.52.64-.64 1.56-.64 2.24 0 .64.12 1.4.56 2.04.44.6 1.16 1 2.28 1 .76 0 1.36-.16 1.8-.48.44-.32.76-.84.8-1.36h-1.4c-.04.2-.16.36-.32.52-.2.16-.48.2-.88.2-.56 0-.92-.16-1.12-.48-.16-.24-.24-.64-.24-1h4.04c0-1.08-.16-2.04-.68-2.68zm-3.4 1.64c0-.32.12-.76.36-1s.56-.36.96-.36c.4 0 .72.12.96.36s.32.68.32 1zM10.4 9.64c-1.6 0-2.36.84-2.44 2h1.4c.04-.52.32-.84 1.04-.84.84 0 1.08.4 1.08 1v.36h-1.24c-.8 0-1.32.08-1.72.36-.48.32-.76.76-.76 1.44 0 .84.52 1.8 2.12 1.8.8 0 1.32-.24 1.68-.68v.6h1.32v-3.84c-.04-1.28-.72-2.2-2.48-2.2zm1.04 4.16c0 .64-.56.92-1.32.92-.84 0-1.04-.36-1.04-.8 0-.24.08-.44.28-.56.16-.08.4-.12.88-.12h1.2zM9.12 7.6H7.56l-1.92 3.6-1.92-3.6H2.16l2.76 4.96v3.08h1.44v-3.08zM24 12c0 6.64-5.36 12-12 12S0 18.64 0 12 5.36 0 12 0s12 5.36 12 12"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/yamahacorporation.svg b/assets/lib/simple-icons/icons/yamahacorporation.svg
index 0c6c26db..c1981963 100644
--- a/assets/lib/simple-icons/icons/yamahacorporation.svg
+++ b/assets/lib/simple-icons/icons/yamahacorporation.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Yamaha Corporation icon</title><path d="M12 0a12 12 0 1012 12A12 12 0 0012 0zm-.412 1.377A10.648 10.648 0 0122.664 12 10.648 10.648 0 0112 22.664a10.648 10.648 0 01-.412-21.287zM12 1.9a.184.184 0 00-.172.131l-.883 2.526a.39.39 0 000 .097.3.3 0 00.133.25.926.926 0 01.074 1.465 2.345 2.345 0 00-.82 1.79v.903L5.865 6.498l-.547.953 4.987 2.877v.692l-.602.347-4.978-2.88-.551.954L8.602 12l-.782.45a2.345 2.345 0 00-1.127 1.616.93.93 0 01-1.312.668.293.293 0 00-.277 0 .324.324 0 00-.079.063l-1.742 2.037a.188.188 0 00.176.305l2.633-.493a.36.36 0 00.09-.035.3.3 0 00.152-.238.926.926 0 011.232-.781 2.345 2.345 0 001.954-.184l.78-.451v5.104h1.098v-5.756l.598-.344.598.344v5.756h1.1v-5.123l.78.45a2.345 2.345 0 001.954.184.926.926 0 011.234.782.285.285 0 00.149.238.36.36 0 00.09.035l2.634.492a.184.184 0 00.176-.305l.004.02-1.744-2.037a.39.39 0 00-.075-.063.3.3 0 00-.28 0 .938.938 0 01-.864-.035.93.93 0 01-.434-.633 2.368 2.368 0 00-1.14-1.609l-.782-.45 4.436-2.558-.549-.955-4.98 2.873-.602-.347v-.692l4.985-2.877-.547-.953L13.7 9.062v-.904a2.345 2.345 0 00-.803-1.789.922.922 0 01.079-1.465.309.309 0 00.128-.25.27.27 0 000-.097L12.18 2.03a.184.184 0 00-.18-.13zm.021 5.512a.598.598 0 01.58.598V9.7l-.597.347-.598-.348V8.01a.598.598 0 01.615-.597zm-.017 3.818l.687.391v.781l-.687.391-.688-.39v-.782zm2.299 1.403l1.46.847a.598.598 0 01.223.817v.004a.602.602 0 01-.82.219l-1.465-.844v-.696zm-4.596.004l.602.347v.692l-1.465.844a.598.598 0 11-.598-1.036z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Yamaha Corporation</title><path d="M12 0a12 12 0 1012 12A12 12 0 0012 0zm-.412 1.377A10.648 10.648 0 0122.664 12 10.648 10.648 0 0112 22.664a10.648 10.648 0 01-.412-21.287zM12 1.9a.184.184 0 00-.172.131l-.883 2.526a.39.39 0 000 .097.3.3 0 00.133.25.926.926 0 01.074 1.465 2.345 2.345 0 00-.82 1.79v.903L5.865 6.498l-.547.953 4.987 2.877v.692l-.602.347-4.978-2.88-.551.954L8.602 12l-.782.45a2.345 2.345 0 00-1.127 1.616.93.93 0 01-1.312.668.293.293 0 00-.277 0 .324.324 0 00-.079.063l-1.742 2.037a.188.188 0 00.176.305l2.633-.493a.36.36 0 00.09-.035.3.3 0 00.152-.238.926.926 0 011.232-.781 2.345 2.345 0 001.954-.184l.78-.451v5.104h1.098v-5.756l.598-.344.598.344v5.756h1.1v-5.123l.78.45a2.345 2.345 0 001.954.184.926.926 0 011.234.782.285.285 0 00.149.238.36.36 0 00.09.035l2.634.492a.184.184 0 00.176-.305l.004.02-1.744-2.037a.39.39 0 00-.075-.063.3.3 0 00-.28 0 .938.938 0 01-.864-.035.93.93 0 01-.434-.633 2.368 2.368 0 00-1.14-1.609l-.782-.45 4.436-2.558-.549-.955-4.98 2.873-.602-.347v-.692l4.985-2.877-.547-.953L13.7 9.062v-.904a2.345 2.345 0 00-.803-1.789.922.922 0 01.079-1.465.309.309 0 00.128-.25.27.27 0 000-.097L12.18 2.03a.184.184 0 00-.18-.13zm.021 5.512a.598.598 0 01.58.598V9.7l-.597.347-.598-.348V8.01a.598.598 0 01.615-.597zm-.017 3.818l.687.391v.781l-.687.391-.688-.39v-.782zm2.299 1.403l1.46.847a.598.598 0 01.223.817v.004a.602.602 0 01-.82.219l-1.465-.844v-.696zm-4.596.004l.602.347v.692l-1.465.844a.598.598 0 11-.598-1.036z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/yamahamotorcorporation.svg b/assets/lib/simple-icons/icons/yamahamotorcorporation.svg
index e3f91135..c1038482 100644
--- a/assets/lib/simple-icons/icons/yamahamotorcorporation.svg
+++ b/assets/lib/simple-icons/icons/yamahamotorcorporation.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Yamaha Motor Corporation icon</title><path d="M12 0A12 12 0 000 12a12 12 0 0012 12 12 12 0 0012-12A12 12 0 0012 0zm0 .57C18.315.57 23.43 5.685 23.43 12c0 6.31-5.115 11.43-11.43 11.43C5.69 23.43.57 18.314.57 12 .57 5.69 5.69.57 12 .57zm0 .234c-.1 0-.183.06-.218.147l-.492 1.551A9.523 9.523 0 002.475 12c0 1.48.337 2.885.94 4.136l-1.1 1.206a.241.241 0 00-.015.262.246.246 0 00.238.115l1.592-.353a9.52 9.52 0 007.87 4.16c3.27 0 6.16-1.652 7.874-4.16l1.592.353a.236.236 0 00.23-.123.234.234 0 00-.016-.262l-1.1-1.198A9.431 9.431 0 0021.526 12a9.523 9.523 0 00-8.815-9.498L12.218.947A.237.237 0 0012 .804zm-.003.25c.024 0 .048.02.056.043l1.02 3.354a1.2 1.2 0 00-.48.957c0 .389.19.734.48.952h-.004c.436.326.718.846.718 1.429v1.12l4.326-2.497.476.825-4.802 2.77v.965l.834.48 4.802-2.774.476.825-4.326 2.5.972.56c.508.294.818.798.882 1.338v-.004a1.193 1.193 0 001.655.953l2.393 2.56c.02.02.02.047.008.07-.016.025-.04.033-.068.029l-3.413-.794a1.193 1.193 0 00-1.65-.957l.003-.004c-.5.215-1.091.199-1.6-.095l-.968-.56v4.994h-.952v-5.545l-.834-.48-.833.48v5.545h-.953V15.1l-.972.555c-.508.294-1.1.31-1.6.096l.004.004a1.193 1.193 0 00-1.651.957l-3.413.793a.054.054 0 01-.063-.028c-.016-.02-.012-.047.008-.067l2.397-2.56c.333.143.73.135 1.067-.064.338-.194.544-.528.588-.889v.004c.063-.54.373-1.044.88-1.337l.97-.56-4.327-2.496.477-.826 4.802 2.774.833-.484v-.964l-4.802-2.77.476-.826 4.326 2.496V7.79c0-.583.282-1.103.719-1.429h-.004c.29-.214.476-.56.476-.952 0-.393-.19-.738-.48-.957l1.02-3.353c.008-.028.031-.044.051-.044zm.004 5.902a.833.833 0 00-.833.833v1.67L12 9.94l.833-.48V7.789a.833.833 0 00-.833-.833zm0 4.084l-.833.48v.964l.833.476.833-.48v-.96zm-2.62 1.516l-1.444.833a.833.833 0 00-.306 1.14.822.822 0 00.723.412.83.83 0 00.416-.111l1.445-.834v-.96zm5.243 0l-.833.48V14l1.445.834a.834.834 0 00.833-1.445z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Yamaha Motor Corporation</title><path d="M12 0A12 12 0 000 12a12 12 0 0012 12 12 12 0 0012-12A12 12 0 0012 0zm0 .57C18.315.57 23.43 5.685 23.43 12c0 6.31-5.115 11.43-11.43 11.43C5.69 23.43.57 18.314.57 12 .57 5.69 5.69.57 12 .57zm0 .234c-.1 0-.183.06-.218.147l-.492 1.551A9.523 9.523 0 002.475 12c0 1.48.337 2.885.94 4.136l-1.1 1.206a.241.241 0 00-.015.262.246.246 0 00.238.115l1.592-.353a9.52 9.52 0 007.87 4.16c3.27 0 6.16-1.652 7.874-4.16l1.592.353a.236.236 0 00.23-.123.234.234 0 00-.016-.262l-1.1-1.198A9.431 9.431 0 0021.526 12a9.523 9.523 0 00-8.815-9.498L12.218.947A.237.237 0 0012 .804zm-.003.25c.024 0 .048.02.056.043l1.02 3.354a1.2 1.2 0 00-.48.957c0 .389.19.734.48.952h-.004c.436.326.718.846.718 1.429v1.12l4.326-2.497.476.825-4.802 2.77v.965l.834.48 4.802-2.774.476.825-4.326 2.5.972.56c.508.294.818.798.882 1.338v-.004a1.193 1.193 0 001.655.953l2.393 2.56c.02.02.02.047.008.07-.016.025-.04.033-.068.029l-3.413-.794a1.193 1.193 0 00-1.65-.957l.003-.004c-.5.215-1.091.199-1.6-.095l-.968-.56v4.994h-.952v-5.545l-.834-.48-.833.48v5.545h-.953V15.1l-.972.555c-.508.294-1.1.31-1.6.096l.004.004a1.193 1.193 0 00-1.651.957l-3.413.793a.054.054 0 01-.063-.028c-.016-.02-.012-.047.008-.067l2.397-2.56c.333.143.73.135 1.067-.064.338-.194.544-.528.588-.889v.004c.063-.54.373-1.044.88-1.337l.97-.56-4.327-2.496.477-.826 4.802 2.774.833-.484v-.964l-4.802-2.77.476-.826 4.326 2.496V7.79c0-.583.282-1.103.719-1.429h-.004c.29-.214.476-.56.476-.952 0-.393-.19-.738-.48-.957l1.02-3.353c.008-.028.031-.044.051-.044zm.004 5.902a.833.833 0 00-.833.833v1.67L12 9.94l.833-.48V7.789a.833.833 0 00-.833-.833zm0 4.084l-.833.48v.964l.833.476.833-.48v-.96zm-2.62 1.516l-1.444.833a.833.833 0 00-.306 1.14.822.822 0 00.723.412.83.83 0 00.416-.111l1.445-.834v-.96zm5.243 0l-.833.48V14l1.445.834a.834.834 0 00.833-1.445z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/yammer.svg b/assets/lib/simple-icons/icons/yammer.svg
index 57c05524..3b822d83 100644
--- a/assets/lib/simple-icons/icons/yammer.svg
+++ b/assets/lib/simple-icons/icons/yammer.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Yammer icon</title><path d="M23.5094 7.391a.696.696 0 00-.859-.527l-2.31.626A17.4135 17.4135 0 0016.3897.226a.69.69 0 00-.509-.225.677.677 0 00-.482.2L9.7667 5.8379H1.023C.458 5.838 0 6.296 0 6.862v10.2368c0 .566.458 1.025 1.023 1.025h8.7037l5.6719 5.6768a.687.687 0 00.99-.025 17.4305 17.4305 0 003.9509-7.2638l2.3109.626a.696.696 0 00.859-.527 21.9024 21.9024 0 000-9.2198zm-7.6738-5.45a15.8536 15.8536 0 013.0229 5.9499l-6.5958 1.786v-2.815a1.02 1.02 0 00-.48-.865zM9.2738 9.226l-2.205 3.8809v2.0219a.938.938 0 11-1.876 0v-2.193L3.085 9.226a.8637.8637 0 111.501-.855l1.594 2.9779 1.5939-2.978a.861.861 0 011.176-.324.866.866 0 01.324 1.179zm9.5847 6.8848a15.8536 15.8536 0 01-3.023 5.9498l-4.0788-4.0819c.301-.178.506-.504.506-.88v-2.7739zm3.316-.698l-9.9118-2.684v-1.4559l9.9117-2.684a20.4075 20.4075 0 010 6.8239Z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Yammer</title><path d="M23.5094 7.391a.696.696 0 00-.859-.527l-2.31.626A17.4135 17.4135 0 0016.3897.226a.69.69 0 00-.509-.225.677.677 0 00-.482.2L9.7667 5.8379H1.023C.458 5.838 0 6.296 0 6.862v10.2368c0 .566.458 1.025 1.023 1.025h8.7037l5.6719 5.6768a.687.687 0 00.99-.025 17.4305 17.4305 0 003.9509-7.2638l2.3109.626a.696.696 0 00.859-.527 21.9024 21.9024 0 000-9.2198zm-7.6738-5.45a15.8536 15.8536 0 013.0229 5.9499l-6.5958 1.786v-2.815a1.02 1.02 0 00-.48-.865zM9.2738 9.226l-2.205 3.8809v2.0219a.938.938 0 11-1.876 0v-2.193L3.085 9.226a.8637.8637 0 111.501-.855l1.594 2.9779 1.5939-2.978a.861.861 0 011.176-.324.866.866 0 01.324 1.179zm9.5847 6.8848a15.8536 15.8536 0 01-3.023 5.9498l-4.0788-4.0819c.301-.178.506-.504.506-.88v-2.7739zm3.316-.698l-9.9118-2.684v-1.4559l9.9117-2.684a20.4075 20.4075 0 010 6.8239Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/yandex.svg b/assets/lib/simple-icons/icons/yandex.svg
deleted file mode 100644
index d3d2f8e7..00000000
--- a/assets/lib/simple-icons/icons/yandex.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Yandex icon</title><path d="M1.902 16.349v-2.85L0 8.398h.957l1.4 3.938L3.97 7.573h.877l-2.069 5.96v2.815h-.876zm5.638 0h-.734c-.033-.125-.065-.3-.075-.447h-.057c-.246.313-.559.525-1.051.525-.798 0-1.344-.601-1.344-1.704 0-1.2.611-1.956 2.18-1.956h.123v-.333c0-.735-.246-1.048-.735-1.048-.445 0-.824.234-1.112.49l-.167-.766c.256-.213.766-.447 1.336-.447.99 0 1.533.424 1.533 1.781v2.636c0 .534.055 1.002.1 1.267l.003.002zm-.955-2.925h-.101c-1.08 0-1.313.479-1.313 1.2 0 .645.21 1.067.655 1.067.3 0 .601-.2.757-.445l.002-1.822zm2.802 2.925h-.869v-5.621h.869v.491h.056c.154-.21.578-.556 1.101-.556.732 0 1.121.412 1.121 1.268v4.418h-.878v-4.34c0-.423-.188-.57-.524-.57-.364 0-.675.279-.877.559v4.35l.001.001zm3.135-2.592c0-2.08.78-3.094 1.901-3.094.268 0 .545.09.713.211V8.398h.869v7.95h-.645l-.069-.445h-.055c-.245.312-.556.521-1.013.521-1.1 0-1.699-.933-1.699-2.667h-.002zm2.615-2.115c-.176-.176-.366-.266-.656-.266-.7 0-1.035 1.057-1.035 2.202 0 1.313.246 2.114.881 2.114.436 0 .666-.213.811-.435v-3.615zm3.604 4.785c-1.155 0-1.869-.924-1.869-2.647 0-1.804.501-3.116 1.69-3.116.935 0 1.544.701 1.544 2.604v.478h-2.331c0 1.268.355 1.935 1.045 1.935.489 0 .847-.222 1.068-.378l.2.667c-.354.278-.79.456-1.345.456l-.002.001zm-.957-3.394h1.435c0-.957-.155-1.657-.656-1.657-.532 0-.72.657-.78 1.657h.001zm6.095-2.292l-1.045 2.625L24 16.349h-.899l-.87-2.314-.844 2.313h-.855l1.166-2.904-1.057-2.702h.901l.727 2.035.765-2.036h.846z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/yarn.svg b/assets/lib/simple-icons/icons/yarn.svg
index 79d00a18..072d5f4d 100644
--- a/assets/lib/simple-icons/icons/yarn.svg
+++ b/assets/lib/simple-icons/icons/yarn.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 24 24"><title>Yarn icon</title><path d="M12 0C5.375 0 0 5.375 0 12s5.375 12 12 12 12-5.375 12-12S18.625 0 12 0zm.768 4.105c.183 0 .363.053.525.157.125.083.287.185.755 1.154.31-.088.468-.042.551-.019.204.056.366.19.463.375.477.917.542 2.553.334 3.605-.241 1.232-.755 2.029-1.131 2.576.324.329.778.899 1.117 1.825.278.774.31 1.478.273 2.015a5.51 5.51 0 0 0 .602-.329c.593-.366 1.487-.917 2.553-.931.714-.009 1.269.445 1.353 1.103a1.23 1.23 0 0 1-.945 1.362c-.649.158-.95.278-1.821.843-1.232.797-2.539 1.242-3.012 1.39a1.686 1.686 0 0 1-.704.343c-.737.181-3.266.315-3.466.315h-.046c-.783 0-1.214-.241-1.45-.491-.658.329-1.51.19-2.122-.134a1.078 1.078 0 0 1-.58-1.153 1.243 1.243 0 0 1-.153-.195c-.162-.25-.528-.936-.454-1.946.056-.723.556-1.367.88-1.71a5.522 5.522 0 0 1 .408-2.256c.306-.727.885-1.348 1.32-1.737-.32-.537-.644-1.367-.329-2.21.227-.602.412-.936.82-1.08h-.005c.199-.074.389-.153.486-.259a3.418 3.418 0 0 1 2.298-1.103c.037-.093.079-.185.125-.283.31-.658.639-1.029 1.024-1.168a.94.94 0 0 1 .328-.06zm.006.7c-.507.016-1.001 1.519-1.001 1.519s-1.27-.204-2.266.871c-.199.218-.468.334-.746.44-.079.028-.176.023-.417.672-.371.991.625 2.094.625 2.094s-1.186.839-1.626 1.881c-.486 1.144-.338 2.261-.338 2.261s-.843.732-.899 1.487c-.051.663.139 1.2.343 1.515.227.343.51.176.51.176s-.561.653-.037.931c.477.25 1.283.394 1.71-.037.31-.31.371-1.001.486-1.283.028-.065.12.111.209.199.097.093.264.195.264.195s-.755.324-.445 1.066c.102.246.468.403 1.066.398.222-.005 2.664-.139 3.313-.296.375-.088.505-.283.505-.283s1.566-.431 2.998-1.357c.917-.598 1.293-.76 2.034-.936.612-.148.57-1.098-.241-1.084-.839.009-1.575.44-2.196.825-1.163.718-1.742.672-1.742.672l-.018-.032c-.079-.13.371-1.293-.134-2.678-.547-1.515-1.413-1.881-1.344-1.997.297-.5 1.038-1.297 1.334-2.78.176-.899.13-2.377-.269-3.151-.074-.144-.732.241-.732.241s-.616-1.371-.788-1.483a.271.271 0 0 0-.157-.046z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Yarn</title><path d="M12 0C5.375 0 0 5.375 0 12s5.375 12 12 12 12-5.375 12-12S18.625 0 12 0zm.768 4.105c.183 0 .363.053.525.157.125.083.287.185.755 1.154.31-.088.468-.042.551-.019.204.056.366.19.463.375.477.917.542 2.553.334 3.605-.241 1.232-.755 2.029-1.131 2.576.324.329.778.899 1.117 1.825.278.774.31 1.478.273 2.015a5.51 5.51 0 0 0 .602-.329c.593-.366 1.487-.917 2.553-.931.714-.009 1.269.445 1.353 1.103a1.23 1.23 0 0 1-.945 1.362c-.649.158-.95.278-1.821.843-1.232.797-2.539 1.242-3.012 1.39a1.686 1.686 0 0 1-.704.343c-.737.181-3.266.315-3.466.315h-.046c-.783 0-1.214-.241-1.45-.491-.658.329-1.51.19-2.122-.134a1.078 1.078 0 0 1-.58-1.153 1.243 1.243 0 0 1-.153-.195c-.162-.25-.528-.936-.454-1.946.056-.723.556-1.367.88-1.71a5.522 5.522 0 0 1 .408-2.256c.306-.727.885-1.348 1.32-1.737-.32-.537-.644-1.367-.329-2.21.227-.602.412-.936.82-1.08h-.005c.199-.074.389-.153.486-.259a3.418 3.418 0 0 1 2.298-1.103c.037-.093.079-.185.125-.283.31-.658.639-1.029 1.024-1.168a.94.94 0 0 1 .328-.06zm.006.7c-.507.016-1.001 1.519-1.001 1.519s-1.27-.204-2.266.871c-.199.218-.468.334-.746.44-.079.028-.176.023-.417.672-.371.991.625 2.094.625 2.094s-1.186.839-1.626 1.881c-.486 1.144-.338 2.261-.338 2.261s-.843.732-.899 1.487c-.051.663.139 1.2.343 1.515.227.343.51.176.51.176s-.561.653-.037.931c.477.25 1.283.394 1.71-.037.31-.31.371-1.001.486-1.283.028-.065.12.111.209.199.097.093.264.195.264.195s-.755.324-.445 1.066c.102.246.468.403 1.066.398.222-.005 2.664-.139 3.313-.296.375-.088.505-.283.505-.283s1.566-.431 2.998-1.357c.917-.598 1.293-.76 2.034-.936.612-.148.57-1.098-.241-1.084-.839.009-1.575.44-2.196.825-1.163.718-1.742.672-1.742.672l-.018-.032c-.079-.13.371-1.293-.134-2.678-.547-1.515-1.413-1.881-1.344-1.997.297-.5 1.038-1.297 1.334-2.78.176-.899.13-2.377-.269-3.151-.074-.144-.732.241-.732.241s-.616-1.371-.788-1.483a.271.271 0 0 0-.157-.046z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/ycombinator.svg b/assets/lib/simple-icons/icons/ycombinator.svg
index aa8ad877..8eb0d253 100644
--- a/assets/lib/simple-icons/icons/ycombinator.svg
+++ b/assets/lib/simple-icons/icons/ycombinator.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Y Combinator icon</title><path d="M0 24V0h24v24H0zM6.951 5.896l4.112 7.708v5.064h1.583v-4.972l4.148-7.799h-1.749l-2.457 4.875c-.372.745-.688 1.434-.688 1.434s-.297-.708-.651-1.434L8.831 5.896h-1.88z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Y Combinator</title><path d="M0 24V0h24v24H0zM6.951 5.896l4.112 7.708v5.064h1.583v-4.972l4.148-7.799h-1.749l-2.457 4.875c-.372.745-.688 1.434-.688 1.434s-.297-.708-.651-1.434L8.831 5.896h-1.88z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/yelp.svg b/assets/lib/simple-icons/icons/yelp.svg
index 02b7bbf9..ccf12651 100644
--- a/assets/lib/simple-icons/icons/yelp.svg
+++ b/assets/lib/simple-icons/icons/yelp.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Yelp icon</title><path d="M21.111 18.226c-.141.969-2.119 3.483-3.029 3.847-.311.124-.611.094-.85-.09-.154-.12-.314-.365-2.447-3.827l-.633-1.032c-.244-.37-.199-.857.104-1.229.297-.359.732-.494 1.111-.35.02.012 1.596.531 1.596.531 3.588 1.179 3.705 1.224 3.857 1.338.227.186.332.475.285.813h.006zm-7.191-5.267c-.254-.386-.25-.841.012-1.155l.998-1.359c2.189-2.984 2.311-3.141 2.459-3.245.256-.171.57-.179.871-.032.869.422 2.623 3.029 2.729 4.029v.034c.029.341-.105.618-.346.784-.164.105-.314.166-4.393 1.156-.645.164-1.004.254-1.215.329l.029-.03c-.404.12-.854-.074-1.109-.479l-.035-.032zm-2.504-1.546c-.195.061-.789.245-1.519-.938 0 0-4.931-7.759-5.047-7.998-.07-.27.015-.574.255-.82.734-.761 4.717-1.875 5.76-1.621.34.088.574.301.656.604.06.335.545 7.536.615 9.149.066 1.38-.525 1.565-.72 1.624zm.651 7.893c-.011 3.774-.019 3.9-.081 4.079-.105.281-.346.469-.681.53-.96.164-3.967-.946-4.594-1.69-.12-.164-.195-.328-.21-.493-.016-.12 0-.24.045-.346.075-.195.18-.345 2.88-3.51l.794-.944c.271-.345.75-.45 1.199-.271.436.165.706.54.676.945v1.68l-.028.02zm-8.183-2.414c-.295-.01-.56-.187-.715-.48-.111-.215-.189-.57-.238-1.002-.137-1.301.029-3.264.419-3.887.183-.285.45-.436.745-.426.195 0 .369.061 4.229 1.65l1.13.449c.404.15.654.57.63 1.051-.03.465-.298.824-.694.93l-1.605.51c-3.59 1.155-3.709 1.185-3.898 1.17l-.003.035zm14.977 7.105h-.004l-.005.003.009-.003z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Yelp</title><path d="M20.16 12.594l-4.995 1.433c-.96.276-1.74-.8-1.176-1.63l2.905-4.308a1.072 1.072 0 0 1 1.596-.206 9.194 9.194 0 0 1 2.364 3.252 1.073 1.073 0 0 1-.686 1.459zm-5.025 3.152l4.942 1.606a1.072 1.072 0 0 1 .636 1.48 9.316 9.316 0 0 1-2.47 3.169 1.073 1.073 0 0 1-1.592-.26l-2.76-4.409c-.528-.847.288-1.894 1.236-1.584zm-4.796-4.368L5.454 2.916a1.072 1.072 0 0 1 .466-1.5A14.973 14.973 0 0 1 11.184.003a1.07 1.07 0 0 1 1.153 1.068v9.768c0 1.096-1.45 1.483-1.998.535zm-.857 4.17L4.44 16.806a1.073 1.073 0 0 1-1.324-.92 9.218 9.218 0 0 1 .43-3.997 1.07 1.07 0 0 1 1.485-.62l4.668 2.279c.9.438.763 1.76-.207 2zm.886 1.477c.669-.744 1.901-.246 1.866.752l-.19 5.188a1.073 1.073 0 0 1-1.247 1.02 9.314 9.314 0 0 1-3.722-1.502 1.072 1.072 0 0 1-.187-1.6l3.477-3.864z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/yoast.svg b/assets/lib/simple-icons/icons/yoast.svg
index 20da11d2..9a0bdc0a 100644
--- a/assets/lib/simple-icons/icons/yoast.svg
+++ b/assets/lib/simple-icons/icons/yoast.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Yoast icon</title><path d="M15.864 0L14.55 3.652H5.422A3.592 3.592 0 0 0 1.84 7.233v9.529a3.592 3.592 0 0 0 3.582 3.581h1.495a4.9 4.9 0 0 1-.18.029l-.34.047V24h.391c2.76 0 4.442-1.385 5.706-3.657h9.666V7.233a3.593 3.593 0 0 0-3.253-3.565L20.275 0zm.556.778h2.738l-6.055 16.22c-1.55 4.335-3.186 6.064-5.924 6.21v-2.12c1.767-.354 2.418-1.461 2.785-2.408a3.902 3.902 0 0 0 0-2.828L6.43 6.772h2.488l2.512 7.86z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Yoast</title><path d="M15.864 0L14.55 3.652H5.422A3.592 3.592 0 0 0 1.84 7.233v9.529a3.592 3.592 0 0 0 3.582 3.581h1.495a4.9 4.9 0 0 1-.18.029l-.34.047V24h.391c2.76 0 4.442-1.385 5.706-3.657h9.666V7.233a3.593 3.593 0 0 0-3.253-3.565L20.275 0zm.556.778h2.738l-6.055 16.22c-1.55 4.335-3.186 6.064-5.924 6.21v-2.12c1.767-.354 2.418-1.461 2.785-2.408a3.902 3.902 0 0 0 0-2.828L6.43 6.772h2.488l2.512 7.86z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/yolo.svg b/assets/lib/simple-icons/icons/yolo.svg
new file mode 100644
index 00000000..b5e9e58d
--- /dev/null
+++ b/assets/lib/simple-icons/icons/yolo.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>YOLO</title><path d="M0 8.25774c.03921-.20672.14055-.39655.29048-.54416.13641-.1504.32923-.23731.53226-.23989.55612-.00782 1.11225-.01534 1.66838-.02254.42453-.00582.84906-.01186 1.27358-.01811.28696-.00422.57393-.01334.86088-.01256.46616.00346.84127.38416.83781.85032-.00104.13976-.03676.27706-.10396.3996-.08469.15076-.18708.29323-.25689.45035-.13913.30029-.13931.64654-.00049.94698.00954.02185.02019.0432.0319.06397.00398.00698.01316.01102.02482.02024.01383-.01457.02629-.03039.03723-.04725.2515-.46846.4705-.95367.65543-1.45218.09567-.26576.05458-.48797-.13196-.68433-.18066-.19016-.37751-.36491-.55981-.5536-.12492-.12324-.23921-.25681-.34163-.3993-.1515-.2068-.14122-.49056.02485-.68586.22799-.2994.53041-.47341.92244-.457.24789.01037.49598.01587.74397.02399.72891.02386 1.45781.04783 2.18672.0719.38538.01261.77091.02152 1.15611.03814.29836.01287.76704.33392.75135.77064-.00379.11586-.01355.23144-.02926.34629-.00737.05259.00399.0743.05455.07534.06578.00135.13161.00233.19739.00146.82297-.01086 1.53115.28033 2.14192.81948.06985.07376.1695.11169.27072.10304.0793-.00804.16008-.00156.2479-.00156-.00043-.02343-.0035-.04674-.00916-.06948-.13022-.31361-.31488-.57959-.62099-.75203-.09537-.06055-.18088-.13537-.25354-.22186-.0846-.0924-.1617-.19139-.23057-.29604-.13637-.18533-.13812-.43733-.00435-.62454.21142-.34117.59591-.53541.99598-.50316.3074.01637.61551.01953.92331.0282.65735.01853 1.3147.03698 1.97205.05536.37943.01093.75884.02283 1.13822.03569.14936.00077.29857.00952.447.02623.34535.04948.60987.40418.62058.75709.01579.19389-.01119.38889-.07902.57121-.08105.19044-.24483.3333-.44451.38774-.2179.05613-.42139.15788-.59703.29852-.09434.08289-.17548.18074-.26258.27185l.0186.02899c.03399.00207.06799.00587.10198.00593.26623.0005.53249-.00217.79866.00181.07148.00297.14097-.02391.19185-.07421.42159-.39984.94752-.67251 1.51725-.78663 1.02765-.19714 1.94728.05442 2.74953.71624.7651.63118 1.21381 1.45689 1.42431 2.41633.04649.21189.06325.43025.09463.6455.00424.0291.01393.05742.02109.0861v.6095c-.01976.14738-.03553.29541-.05991.44203-.20286 1.2203-.74957 2.23512-1.79181 2.94335-.57291.39155-1.25821.58485-1.95128.55039-.11913-.00449-.23803-.02112-.3564-.03692-.05873-.00784-.0764.01699-.07447.06867.01424.38172.0261.76355.04353 1.14513.01639.35883-.12944.75779-.52908.92134-.17743.07487-.36769.11469-.56025.11726-.61857.00947-1.23738.02194-1.85529.05072-.65944.03071-1.31808.07953-1.97683.12392-.35761.02409-.7144.06747-1.07224.07721-.13999-.00464-.2773-.03961-.40245-.10249-.194-.08189-.36225-.21471-.48692-.38442-.15661-.20164-.16368-.48176-.01743-.69103.40224-.62539.73365-1.28481.89008-2.02022.06798-.31956.03979-.64244.0465-.96422.00128-.06146.00018-.12297.00018-.18446l-.02385-.00761c-.02041.03027-.04209.05977-.06104.09093-.43496.71529-1.01379 1.27475-1.80521 1.57259-1.20058.45182-2.30289.23611-3.28078-.57508-.77831-.64563-1.21358-1.50031-1.41762-2.48015-.01093-.05251-.02081-.10524-.03218-.15765-.00566-.01586-.01256-.03124-.02065-.04601-.02114.03804-.03797.0646-.05127.09281-.12989.27557-.26145.55041-.38684.82801-.02605.05956-.03968.12381-.04005.18882-.00311.52873.00189 1.05752-.00352 1.58621-.00359.20604.08451.40304.24047.53773.16484.14883.35709.26415.56601.3395.36332.13858.55331.55902.55172.85109-.00165.30247-.3426.72613-.66491.7972-1.38286.3049-2.76498.61313-4.14637.9247-.44622.10008-1.03915-.32836-.99918-.82467.02847-.35349.15392-.64559.4984-.83313.59015-.32129.91425-.85064 1.05871-1.49475.10073-.44916-.00481-.87683-.15455-1.29786-.18701-.52584-.4532-1.01336-.72488-1.4984-.40876-.72976-.81441-1.46127-1.22513-2.18992-.1421-.25215-.35782-.44049-.58495-.6118-.20988-.16345-.42934-.31423-.65721-.45151-.26352-.15317-.39205-.3827-.45617-.66437C.01831 8.43963.00837 8.4116 0 8.38323v-.12549zm7.41942 2.79803c.00883.16168.02062.30024.02315.43898.00493.3646.05396.72726.14601 1.08009.23752.89624.68648 1.65899 1.44024 2.21926.58698.45417 1.32735.66271 2.06508.58169.63275-.06873 1.22715-.33727 1.69695-.76668.50117-.4495.87644-1.02193 1.08878-1.66078.07375-.21017.15156-.41892.22751-.62832l.01686.00307v.05913c-.00008.71701.00118 1.43403-.00156 2.15103.00009.11936-.00986.23852-.02975.35621-.14112.80847-.5066 1.52402-.93247 2.2129-.09984.16149-.11127.24748.00851.39723.19724.25268.51166.38465.83016.34845.19673-.01366.39304-.03361.58982-.04655.59049-.03883 1.18074-.08366 1.77178-.1112.77926-.03632 1.5591-.06153 2.33889-.08416.15961-.00342.31726-.03595.46518-.096.26256-.10514.36825-.3496.36219-.60215-.0096-.39989-.02925-.79954-.04325-1.19934-.00397-.11342-.00056-.22712-.00525-.3405-.00332-.08036.02919-.10356.103-.07908.01698.00563.03468.00906.05206.01346.49763.13036 1.02146.12193 1.51464-.02436.81537-.24065 1.43186-.74741 1.88064-1.45445.65266-1.02826.82865-2.1505.5868-3.33639-.18397-.90208-.60394-1.67916-1.31726-2.27567-.73671-.61607-1.58278-.86041-2.53503-.6735-.55446.11568-1.06258.39207-1.46096.79469-.04599.04737-.11.07288-.17596.0701-.19442-.00254-.38889-.00072-.58335-.00074-.27822-.00004-.55643-.00023-.83465-.00056-.05052-.00012-.1047.00118-.06875-.07827.10487-.25187.2602-.4796.45643-.66916.2163-.19047.47312-.3292.75099-.40568.12413-.03002.22676-.11695.2768-.23445.06835-.17034.08406-.35725.0451-.53661-.03235-.22494-.21795-.3964-.44474-.41087-.62162-.01926-1.24326-.03764-1.86494-.05514-.83086-.02437-1.66215-.03952-2.4923-.07883-.21572-.00616-.42694.06235-.59799.19393-.07757.06024-.13981.13797-.18163.22683-.03057.06123-.0349.13227-.012.19676.09109.20588.23885.38161.42603.5067.18281.10836.34405.24954.4756.41644.17987.25426.31305.53851.3933.83945.02257.07415-.01492.08942-.07711.08928-.23633-.00052-.47271-.00245-.70897.00146-.07755.00356-.15283-.02671-.20633-.08297-.70535-.68158-1.55306-.93302-2.51814-.81936-.12828.01511-.25497.04362-.38618.06659.00234-.01864.00131-.02543.0041-.02977.00815-.01248.01707-.02446.02671-.03584.10664-.12747.22299-.24371.28251-.40874.16042-.44483-.12992-.78887-.52121-.81068-.30141-.01681-.60347-.02207-.90525-.03209-.54385-.01806-1.0877-.0359-1.63155-.05351-.5021-.01557-1.00419-.03352-1.50642-.04192-.28441-.00477-.50201.13575-.66391.35987-.08287.10247-.08341.24875-.00131.35184.0877.11635.18265.22705.28429.33144.20198.20708.4199.3993.61399.61326.23665.23957.30304.59935.16746.9076-.01964.04994-.03281.10238-.05118.15287-.23065.63389-.54836 1.22637-.86764 1.81811-.00964.01786-.01718.03684-.0257.0553l-.0333-.01225c-.08141-.14165-.16875-.28026-.24317-.42548-.28027-.54692-.23017-1.07722.09102-1.5909.0475-.07597.09966-.14933.14274-.22769.09995-.17453.07437-.39384-.06306-.54069-.14077-.17484-.35806-.26989-.582-.25461-.6514.02231-1.30341.02763-1.95521.03731-.55621.00827-1.11246.01319-1.6687.01964-.2549.00296-.53734.23476-.56332.48964-.03787.23984.06802.47967.27077.61327.27385.18699.55045.37082.81474.57067.23677.16963.43569.38663.58414.63722.39795.7086.7946 1.41791 1.18997 2.12796.27699.49569.55226.99217.74995 1.52678.16633.44982.28918.90815.21049 1.39237-.13052.80311-.52558 1.43642-1.24915 1.83383-.22743.12492-.31831.38782-.32153.61885-.00408.29269.43478.56272.67574.4978.37767-.10176.7632-.17436 1.14529-.25983.98589-.22051 1.97171-.44131 2.95747-.66239.2524-.05677.47953-.325.46235-.56898-.00779-.23603-.14938-.447-.36487-.54362-.20545-.09575-.40213-.20931-.58777-.33936-.26451-.18692-.41525-.49597-.3997-.81949.00799-.53764.00009-1.0755.0044-1.61322.0008-.0799.0181-.15878.05082-.23168.28786-.62386.58081-1.24538.87246-1.86749.0122-.02607.0265-.05117.05061-.09736zm11.5715 3.53732c0 .09029-.00242.17639.00039.26231.02201.6744.0456 1.34876.06726 2.02317.0051.1588-.01788.17863-.17891.18211-.45432.0098-.90904.01156-1.36281.0332-.49843.02376-.99599.06591-1.49389.10047-.44722.03104-.89442.06246-1.34159.09428-.28018.02032-.56023.04241-.84014.06627-.06956.006-.1466.00932-.17063-.06064-.01511-.05827-.00589-.12017.02553-.17151.41566-.6371.71078-1.34513.87067-2.08885.0422-.18943.06339-.38293.06318-.577.00492-.95297.00403-1.90596-.00266-2.85898-.00325-.51354-.01962-1.027-.0311-1.54047-.0032-.14298-.01286-.15025-.15108-.11607-.24848.0558-.48616.1519-.7036.28448-.06904.03205-.1016.11198-.07461.18315.21874.87979.14547 1.80686-.20877 2.64136-.23307.57463-.62474 1.07113-1.12931 1.43159-.96228.69788-2.28064.63168-3.16816-.1591-.6523-.56228-1.02355-1.28502-1.17915-2.12001-.17228-.86273-.06142-1.75802.31609-2.55267.31601-.6674.77794-1.21048 1.45658-1.52643.97975-.45614 1.89642-.30726 2.73918.35093.10091.07881.18675.17664.28516.25899.03698.03277.08346.0529.13266.05745.4846.00415.96924.00266 1.45388.00286.05638.00002.10437-.00656.08824-.0837-.11261-.5386-.27183-1.05893-.59394-1.5156-.15862-.22974-.36653-.42117-.60855-.56033-.06194-.03523-.13027-.08145-.11028-.15493.01954-.07186.09833-.08391.17235-.08154.72615.02325 1.45233.04569 2.17853.06734.52007.01526 1.04022.02784 1.56032.04206.19427.00531.38849.01526.58277.01629.07483-.00933.14421.04055.1592.11445.01337.07542-.04527.12224-.11813.14566-.33888.10327-.65086.27991-.91376.51736-.41365.38136-.63729.86529-.75875 1.40464-.01507.06689.01115.08783.07146.08767.03589-.0001.07178.00105.10768.00106.68507.00004 1.37015-.00096 2.05521.00117.08049.00313.1582-.02973.21202-.08966.39288-.42163.91283-.70326 1.48061-.80199.77286-.12755 1.4603.07828 2.05969.56953.68984.56538 1.07301 1.31365 1.22738 2.17879.16625.85478.05459 1.74032-.31865 2.52707-.33894.71084-.83905 1.27287-1.57799 1.58337-.74632.3136-1.48212.26309-2.19567-.11774-.03422-.01826-.0687-.03603-.10344-.0533-.00454-.00224-.01148.00033-.03047.00144zm-2.3306.69022v.00053c.1077 0 .21571-.00537.32304.001.3336.01978.60484-.11183.84144-.334.21842-.21742.40765-.46231.56294-.72852.04552-.05502.03782-.13652-.0172-.18204-.00131-.00109-.00265-.00214-.004-.00318-.23576-.25517-.42955-.54614-.57413-.86203-.39392-.84771-.4726-1.73125-.29269-2.64222.02345-.06964.00199-.14653-.05412-.19396-.1091-.0965-.22711-.18244-.35244-.25666-.34992-.17988-.7349-.22175-1.1211-.25029-.06606-.00488-.08271.02927-.08081.0869.01451.43864.02618.87738.0426 1.31595.02839.75779.05833 1.51552.08982 2.2732.0228.55781.04936 1.11547.07016 1.67335.00301.08064.03643.10346.10879.10255.15254-.00192.30513-.00058.4577-.00058zm-7.66719-4.96883c-.0184.18067.05354.35476.13973.523.0854.16668.18933.17002.28754.00779.06417-.10423.11928-.21378.16471-.32744.19212-.51049.49088-.97416.87634-1.36009.0628-.06398.11908-.13405.16804-.20915.11931-.17744.07067-.28749-.13904-.33307-.24648-.0548-.50455.00391-.70306.15995-.51152.37757-.80376.87307-.79426 1.53901zm9.35205-.11107c-.00171.21388.05622.424.16729.6068.07083.09929.14997.10518.22454.00864.04465-.05971.08315-.12378.11491-.19124.05756-.11792.11165-.23751.16226-.35879.15609-.38895.38494-.74456.67427-1.04777.1021-.10477.19672-.21657.28316-.33459.13564-.18525.083-.30163-.14029-.3474-.25638-.05228-.5226.01522-.7231.18333-.49054.37943-.77715.86633-.76304 1.48102zm-.25159-1.11901c-.03346-.00222-.07067-.00677-.10788-.00683-.36151-.00055-.72303-.00066-1.08454-.00034-.28981.00004-.57963.00145-.86942-.00066-.06579-.00048-.10065.02137-.10556.08926-.00666.09213-.01523.18412-.02572.27596-.00868.07646.02319.10522.09966.11121.17538.01374.35154.02723.5248.05623.38135.06383.74383.17765 1.04241.43997.00939.00725.02006.01266.03145.01597.16545-.32795.32823-.65059.4948-.98077zm-4.99681-.00089.47007.90633c.00336.0013.0071.00119.01037-.00032.2888-.17023.60426-.29047.9331-.35564.02862-.01452.04792-.04256.05127-.07448-.00453-.1219-.02249-.2433-.02754-.36521-.00385-.0927-.0449-.11952-.13487-.11862-.40038.00398-.80082.00159-1.20124.00198-.03219.00003-.06437.0037-.10116.00596zm-7.85383 2.45786c.01654-.01838.03178-.03789.04561-.05838.41558-.7264.82629-1.45587 1.13618-2.23512.08967-.23704.16331-.47985.22042-.72677.06308-.25368-.01232-.49126-.13273-.71484-.1802-.33458-.44497-.59741-.72765-.84432-.05048-.03723-.09797-.07836-.14202-.12302-.03163-.0381-.07453-.10873-.05966-.13412.0335-.04692.08471-.07813.14177-.0864.09243-.00476.18509-.00261.2772.00645.49015.01475.98034.02837 1.47047.04382.74408.02347 1.48812.04784 2.23214.07313.07754.00267.17441.0087.19023.09932.01429.08181-.06653.12216-.13516.15806-.54169.28341-.96234.7034-1.32846 1.18323-.45995.6028-.80278 1.27068-1.10486 1.96331-.40241.92268-.81988 1.83882-1.2258 2.75999-.04126.09496-.0634.19712-.06518.30064-.00629.53767.00281 1.07554-.00453 1.61319-.0079.578.23429 1.02072.70694 1.34016.14846.09494.30267.18056.46175.25637.07152.0363.12689.08681.11808.16126-.00841.07101-.07475.10638-.14847.12284-1.3214.29502-2.64257.59105-3.96351.88812-.07599.01708-.1511.00666-.17319-.06685-.01943-.07228.01574-.14809.08348-.17993.8117-.4663 1.27612-1.17724 1.45467-2.08296.09103-.46178.02769-.9151-.10814-1.36114-.18999-.58272-.44205-1.14333-.75184-1.67218-.44746-.80069-.89282-1.60256-1.34242-2.40205-.19272-.34271-.47766-.60425-.78682-.83743-.23356-.17616-.4807-.33444-.7229-.49905-.1063-.07223-.12327-.17973-.03098-.2481.02985-.0186.0645-.02805.09966-.0272.32901-.00434.65807-.00423.98708-.00885.88506-.01245 1.77008-.02784 2.65518-.03661.05379.00864.10242.03705.13635.07967.01435.01588-.0066.0786-.02756.10897-.2005.28045-.33619.60196-.39725.94126-.05598.33167-.01962.67235.10507.98474.17937.46478.47355.8549.80418 1.22061.01637.01489.03399.02833.05267.04018zm11.13476-1.16387c.21416.04999.42003.08311.60529.18777.04931.02479.07287.08209.05525.13439-.15674.93805-.0145 1.90165.40661 2.7544.11921.22382.25153.44042.39627.64865.0416.04412.0433.11248.00395.15861-.12874.1947-.28524.36954-.46453.519-.10183.08527-.23174.12963-.36446.12444-.12823-.00694-.25715-.00293-.38573-.00114-.06372.00089-.09081-.02483-.09324-.08991-.01684-.45039-.03598-.9007-.05448-1.35104-.02928-.71275-.05845-1.42551-.08751-2.13827-.01088-.27742-.01695-.55503-.02428-.83258-.0009-.03432.00396-.06881.00686-.11432zm.3293 1.61169c0 .05331-.00168.09943.00028.14539.01083.25332.02361.50656.0337.7599.01509.37859.02763.75728.04302 1.13586.00702.17278.01986.34531.02675.51809.00235.05896.03135.072.08418.07807.15072.02399.30313-.03165.40294-.14709.06181-.06886.12214-.13917.18648-.20559.04914-.04114.05562-.11432.01447-.16346-.00234-.00279-.0048-.00547-.00739-.00803-.26056-.37651-.45658-.7938-.58-1.23473-.07926-.28583-.1354-.57807-.20443-.87841zm-.03044-.74416.01589.00799c.01414-.14607.02989-.29203.04048-.43835.00138-.01914-.02374-.04019-.0366-.06035-.01282.02162-.03701.04345-.03661.06481.00268.14202.01062.28394.01684.4259z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/yourtraveldottv.svg b/assets/lib/simple-icons/icons/yourtraveldottv.svg
new file mode 100644
index 00000000..59a51162
--- /dev/null
+++ b/assets/lib/simple-icons/icons/yourtraveldottv.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>YourTravel.TV</title><path d="M2.609 6.266c.183-.246.424-.579.617-.817.578-.656.653-.742 1.179-1.227.156-.128.341-.282.522-.427-1.335 1.13-1.505 2.381-.28 3.154-.002 0-.002 0-.002.002 1.713 1.032 5.467.809 8.429-.513 2.869-1.28 3.928-3.111 2.512-4.199-1.243-.233-2.725-.26-4.293-.05l-.163-.269.135-.446c.922-.083 1.798-.063 2.554.066.183.031.424.084.604.122.348.085.537.136.764.209.232.069.43.138.775.266.338.133.484.193.755.328a8.308 8.308 0 01.883.469c2.256 1.419.853 4.008-3.128 5.782-3.97 1.768-9.029 2.046-11.296.644-.001-.002-.004-.004-.01-.006h.004c-1.238-.784-1.368-1.922-.561-3.088zm10.329 9.92l-.032-1.594-1.133-1.26c-3.743.848-7.422.666-9.468-.539-.007-.008-.024-.016-.031-.024C1.116 12.056.83 11.136.917 10.136c-.271 1.463-.293 1.991-.254 3.243.048.784.501 1.507 1.412 2.077l.007.008c2.181 1.356 6.725 1.65 10.856.722zm4.725 1.825c-5.283 2.119-11.895 2.244-14.767.283a8.195 8.195 0 001.252 2.098c2.636 1.8 8.705 1.685 13.552-.26 2.837-1.137 4.627-2.65 5.097-4.068l.132-.427c.313-1.082.372-1.983.422-2.785-.057 1.741-2.108 3.721-5.688 5.159zM6.001 22.092c.166.158.688.799 3.333 1.507.715.158 2.515.665 5.84-.072l.02-.303-.263-.412c-3.085.73-6.512.486-8.93-.72zm7.634-12.609l2.809 2.129s.601.433.034.737c-.565.301-2.016 1.038-2.016 1.038l-1.433-.535-.719.32 1.268 1.101.01 1.713.745-.331.494-1.447s1.517-.584 2.119-.804c.605-.215.524.521.524.521l-.298 3.511.99-.44 1.63-4.737s.864-.42 1.472-.789c.607-.369.815-.981.815-.981s-.592-.255-1.274-.05c-.682.203-1.571.565-1.571.565l-4.612-1.959-.987.438zM7.692 2.747l1.907 1.519.521-.078-1.038-1.363s-.226-.282.078-.349c.306-.068 1.08-.226 1.08-.226l.582.465.392-.058-.444-.706.234-.783-.379.055-.449.596s-.788.074-1.098.1c-.312.024-.178-.311-.178-.311L9.498 0l-.524.077-1.38 2.009s-.46.084-.793.179c-.334.094-.51.352-.51.352s.245.198.59.191c.348-.007.811-.061.811-.061zm9.425 19.518l-1.234-.645-.284.099.731.654s.156.133-.008.204c-.164.07-.582.242-.582.242l-.345-.154-.205.074.287.306-.028.447.214-.074.16-.363s.434-.129.607-.175c.172-.047.133.155.133.155L16.4 24l.285-.099.559-1.276s.247-.097.424-.186.247-.253.247-.253-.157-.086-.351-.043c-.195.041-.447.122-.447.122z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/youtube.svg b/assets/lib/simple-icons/icons/youtube.svg
index 6aca43ca..0492366a 100644
--- a/assets/lib/simple-icons/icons/youtube.svg
+++ b/assets/lib/simple-icons/icons/youtube.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>YouTube icon</title><path d="M23.495 6.205a3.007 3.007 0 0 0-2.088-2.088c-1.87-.501-9.396-.501-9.396-.501s-7.507-.01-9.396.501A3.007 3.007 0 0 0 .527 6.205a31.247 31.247 0 0 0-.522 5.805 31.247 31.247 0 0 0 .522 5.783 3.007 3.007 0 0 0 2.088 2.088c1.868.502 9.396.502 9.396.502s7.506 0 9.396-.502a3.007 3.007 0 0 0 2.088-2.088 31.247 31.247 0 0 0 .5-5.783 31.247 31.247 0 0 0-.5-5.805zM9.609 15.601V8.408l6.264 3.602z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>YouTube</title><path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/youtubegaming.svg b/assets/lib/simple-icons/icons/youtubegaming.svg
index d230e76e..69730607 100644
--- a/assets/lib/simple-icons/icons/youtubegaming.svg
+++ b/assets/lib/simple-icons/icons/youtubegaming.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>YouTube Gaming icon</title><path d="M24 13.2v-6l-6-3.6-6 3.6-6-3.6-6 3.6v6l12 7.2zM8.4 10.8H6v2.4H4.8v-2.4H2.4V9.6h2.4V7.2H6v2.4h2.4zm7.2 2.4a1.2 1.2 0 01-1.2-1.2c0-.66.54-1.2 1.2-1.2.66 0 1.2.54 1.2 1.2 0 .66-.54 1.2-1.2 1.2zm3.6-2.4A1.2 1.2 0 0118 9.6c0-.66.54-1.2 1.2-1.2.66 0 1.2.54 1.2 1.2 0 .66-.54 1.2-1.2 1.2Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>YouTube Gaming</title><path d="M24 13.2v-6l-6-3.6-6 3.6-6-3.6-6 3.6v6l12 7.2zM8.4 10.8H6v2.4H4.8v-2.4H2.4V9.6h2.4V7.2H6v2.4h2.4zm7.2 2.4a1.2 1.2 0 01-1.2-1.2c0-.66.54-1.2 1.2-1.2.66 0 1.2.54 1.2 1.2 0 .66-.54 1.2-1.2 1.2zm3.6-2.4A1.2 1.2 0 0118 9.6c0-.66.54-1.2 1.2-1.2.66 0 1.2.54 1.2 1.2 0 .66-.54 1.2-1.2 1.2Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/youtubemusic.svg b/assets/lib/simple-icons/icons/youtubemusic.svg
new file mode 100644
index 00000000..d3225210
--- /dev/null
+++ b/assets/lib/simple-icons/icons/youtubemusic.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>YouTube Music</title><path d="M12 0C5.376 0 0 5.376 0 12s5.376 12 12 12 12-5.376 12-12S18.624 0 12 0zm0 19.104c-3.924 0-7.104-3.18-7.104-7.104S8.076 4.896 12 4.896s7.104 3.18 7.104 7.104-3.18 7.104-7.104 7.104zm0-13.332c-3.432 0-6.228 2.796-6.228 6.228S8.568 18.228 12 18.228s6.228-2.796 6.228-6.228S15.432 5.772 12 5.772zM9.684 15.54V8.46L15.816 12l-6.132 3.54z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/youtubestudio.svg b/assets/lib/simple-icons/icons/youtubestudio.svg
index d9c8c69e..33043d35 100644
--- a/assets/lib/simple-icons/icons/youtubestudio.svg
+++ b/assets/lib/simple-icons/icons/youtubestudio.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>YouTube Studio icon</title><path d="M9.577 15.606L15.606 12 9.577 8.394zm11.38-2.423l2.536 1.972q.394.282.113.789l-2.423 4.169q-.225.394-.732.225l-2.986-1.183q-1.183.845-2.028 1.183l-.451 3.155q-.113.507-.563.507H9.577q-.45 0-.563-.507l-.45-3.155q-1.071-.45-2.029-1.183L3.55 20.338q-.507.169-.732-.225l-2.423-4.17q-.281-.506.113-.788l2.535-1.972Q2.986 12.79 2.986 12t.056-1.183L.507 8.845q-.394-.282-.113-.789l2.423-4.169q.225-.394.732-.225l2.986 1.183Q7.718 4 8.563 3.662L9.014.507Q9.127 0 9.577 0h4.846q.45 0 .563.507l.45 3.155q1.071.45 2.029 1.183l2.986-1.183q.507-.169.732.225l2.423 4.17q.281.506-.113.788l-2.535 1.972q.056.394.056 1.183t-.056 1.183Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>YouTube Studio</title><path d="M20.919 13.176c.048-.384.084-.768.084-1.176s-.036-.792-.084-1.176l2.532-1.98a.605.605 0 0 0 .144-.768l-2.4-4.152a.603.603 0 0 0-.732-.264l-2.988 1.2a8.767 8.767 0 0 0-2.028-1.176l-.456-3.18A.585.585 0 0 0 14.403 0h-4.8c-.3 0-.552.216-.588.504l-.456 3.18A9.22 9.22 0 0 0 6.531 4.86l-2.988-1.2a.585.585 0 0 0-.732.264l-2.4 4.152a.592.592 0 0 0 .144.768l2.532 1.98c-.048.384-.084.78-.084 1.176s.036.792.084 1.176l-2.532 1.98a.605.605 0 0 0-.144.768l2.4 4.152c.144.264.468.36.732.264l2.988-1.2c.624.48 1.296.876 2.028 1.176l.456 3.18a.585.585 0 0 0 .588.504h4.8c.3 0 .552-.216.588-.504l.456-3.18a9.22 9.22 0 0 0 2.028-1.176l2.988 1.2c.276.108.588 0 .732-.264l2.4-4.152a.605.605 0 0 0-.144-.768l-2.532-1.98zM9.603 15.6V8.4l6 3.6-6 3.6z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/youtubetv.svg b/assets/lib/simple-icons/icons/youtubetv.svg
index ef229089..05fa683d 100644
--- a/assets/lib/simple-icons/icons/youtubetv.svg
+++ b/assets/lib/simple-icons/icons/youtubetv.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>YouTube TV icon</title><path d="M17.36 20.988H6.536c-.306 0-.51-.205-.51-.511 0-.306.204-.51.51-.51h10.928c.306 0 .51.204.51.51 0 .306-.306.51-.612.51zM1.635 3.012C.714 3.012 0 3.73 0 4.648v12.56c0 .92.714 1.634 1.634 1.634h20.73c.92 0 1.636-.714 1.636-1.633V4.648c0-.92-.716-1.636-1.636-1.636zm7.863 4.393l6.23 3.472-6.23 3.575Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>YouTube TV</title><path d="M21.794 10.609h-.618v3.286h-.607v-3.286h-.617v-.504h1.842v.504zm.135-.504h.649l.202 1.703c.057.488.11.908.172 1.484h.026c.057-.576.114-.986.17-1.484l.208-1.703H24l-.623 3.784h-.82l-.628-3.784zm-15.758.38a.796.796 0 0 0-.555-.561c-.493-.13-2.465-.13-2.465-.13s-1.973 0-2.466.13a.787.787 0 0 0-.555.56C0 10.977 0 12 0 12s0 1.028.13 1.516a.794.794 0 0 0 .56.56c.488.13 2.46.13 2.46.13s1.973 0 2.466-.13a.806.806 0 0 0 .56-.555c.13-.493.13-1.516.13-1.516s-.005-1.028-.135-1.52zm-3.649 2.46v-1.89l1.64.945-1.64.945zm6.629.867a.652.652 0 0 1-.265-.395 2.703 2.703 0 0 1-.078-.706v-.4a2.383 2.383 0 0 1 .093-.716.724.724 0 0 1 .28-.394.943.943 0 0 1 .504-.125c.203 0 .369.042.493.125.13.098.229.233.27.394.062.234.094.472.083.716v.4c.005.239-.02.478-.083.711a.7.7 0 0 1-.27.395c-.124.083-.296.124-.508.124-.218-.005-.395-.046-.52-.13zm.7-.436c.037-.089.052-.24.052-.442v-.856a1.376 1.376 0 0 0-.052-.436.189.189 0 0 0-.181-.14.183.183 0 0 0-.177.14c-.041.14-.057.29-.052.436v.861c0 .203.016.353.052.442.02.083.094.14.182.135a.183.183 0 0 0 .176-.14zm8.88-.66v.14c0 .135.006.265.016.4a.373.373 0 0 0 .068.192.2.2 0 0 0 .156.062.2.2 0 0 0 .192-.109c.036-.072.052-.192.057-.363l.534.036a.56.56 0 0 1 .006.1c0 .253-.068.445-.208.57-.14.125-.337.187-.592.187-.306 0-.519-.099-.643-.29s-.187-.489-.187-.894v-.482c0-.416.062-.717.192-.909.13-.192.348-.285.654-.285.213 0 .379.041.493.12.12.088.207.217.244.363.052.223.078.456.067.685v.472l-1.048.005zm.079-1.162a.367.367 0 0 0-.063.192 5.48 5.48 0 0 0-.015.405v.197h.457v-.197c0-.135-.006-.27-.021-.405a.373.373 0 0 0-.068-.192.174.174 0 0 0-.145-.057.169.169 0 0 0-.145.057zm-11.175 1.11l-.706-2.559h.618l.249 1.158c.062.285.109.53.14.732h.02c.022-.146.068-.384.14-.727l.26-1.163h.618l-.716 2.56v1.23H7.64v-1.23h-.005zm4.905-1.536v2.767h-.488L12 13.557h-.016c-.13.255-.332.384-.596.384-.182 0-.317-.062-.405-.181-.089-.12-.13-.307-.13-.566v-2.066h.623v2.03a.659.659 0 0 0 .041.264.137.137 0 0 0 .135.078.28.28 0 0 0 .156-.052.281.281 0 0 0 .109-.124v-2.196h.623zm3.192 0v2.767h-.488l-.052-.338h-.016c-.13.255-.332.384-.596.384-.182 0-.317-.062-.405-.181-.089-.12-.13-.307-.13-.566v-2.066h.623v2.03a.659.659 0 0 0 .041.264.137.137 0 0 0 .135.078.28.28 0 0 0 .156-.052.281.281 0 0 0 .109-.124v-2.196h.623zm-1.5-.52h-.618v3.287h-.607v-3.286h-.618v-.504h1.843v.504zm3.56.961c-.036-.171-.098-.3-.181-.379a.508.508 0 0 0-.348-.12.56.56 0 0 0-.322.1.635.635 0 0 0-.228.254h-.005V9.965h-.597v3.93h.514l.062-.26h.015a.531.531 0 0 0 .218.223.69.69 0 0 0 .322.083.502.502 0 0 0 .467-.29c.099-.192.15-.499.15-.909v-.436a4.861 4.861 0 0 0-.067-.737zm-.57 1.127c0 .155-.006.316-.026.472a.508.508 0 0 1-.084.244.195.195 0 0 1-.155.072.257.257 0 0 1-.14-.036.3.3 0 0 1-.104-.109v-1.567a.425.425 0 0 1 .109-.187.224.224 0 0 1 .166-.073c.057 0 .114.026.145.073.042.078.068.16.073.249.015.166.02.332.02.498l-.005.364z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/yubico.svg b/assets/lib/simple-icons/icons/yubico.svg
new file mode 100644
index 00000000..61381528
--- /dev/null
+++ b/assets/lib/simple-icons/icons/yubico.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Yubico</title><path d="m12.356 12.388 2.521-7.138h3.64l-6.135 15.093H8.539l1.755-4.136L6 5.25h3.717ZM12 0C5.381 0 0 5.381 0 12s5.381 12 12 12 12-5.381 12-12S18.619 0 12 0Zm0 1.5c5.808 0 10.5 4.692 10.5 10.5S17.808 22.5 12 22.5 1.5 17.808 1.5 12 6.192 1.5 12 1.5Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/z-wave.svg b/assets/lib/simple-icons/icons/z-wave.svg
deleted file mode 100644
index b85a7679..00000000
--- a/assets/lib/simple-icons/icons/z-wave.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Z-Wave icon</title><path d="M17.156.014C7.69.014 0 7.704 0 17.17h2.3C2.33 8.956 8.973 2.316 17.157 2.316V.014zm0 4.574c-6.932 0-12.584 5.65-12.584 12.582h2.301c.03-5.68 4.633-10.281 10.283-10.281V4.588zm0 5.709a6.837 6.837 0 00-6.845 6.844 6.839 6.839 0 006.845 6.845A6.837 6.837 0 0024 17.141a6.835 6.835 0 00-6.844-6.844zm-2.273 3.174h5.738l-3.058 4.863h3.058l-1.398 2.156h-5.795l3.144-4.922h-3l1.31-2.097Z"/></svg>
diff --git a/assets/lib/simple-icons/icons/zabka.svg b/assets/lib/simple-icons/icons/zabka.svg
new file mode 100644
index 00000000..93b1ab88
--- /dev/null
+++ b/assets/lib/simple-icons/icons/zabka.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>&#379;abka</title><path d="m4.12 15.041.187-.967a9.424 9.424 0 0 0 10.05 0l.187.967a8.437 8.437 0 0 1-10.424 0zm12.109-4.463c.343.062.718.031 1.03-.156.25-.156.405-.406.468-.687.062-.28.094-.53.125-.811h1.186v.437a2.8 2.8 0 0 1-.281 1.03c-.125.25-.343.468-.562.624-.062.031-.125.094-.187.125.062.093.125.218.156.312.312.562.624 1.092.967 1.654l.094.187a.396.396 0 0 1 .031.188h-1.31l-1.03-1.873-.687.062v1.842h-1.28v-6.18h1.28zM3.808 8.893c0 .062-.032.124-.063.218l-.655 1.124a69.63 69.63 0 0 0-1.186 2.06c0 .03-.031.062-.031.093h1.935v1.124H0c0-.063.031-.125.062-.187.188-.344.375-.656.562-.968.187-.312.343-.593.53-.905.25-.437.5-.874.75-1.28.031-.031.031-.062.062-.125H.156V8.893zm-1.78-.437A.515.515 0 0 1 1.56 8.3c-.187-.156-.28-.437-.187-.687a.646.646 0 0 1 .53-.437c.22-.062.469.031.625.187.187.188.218.437.156.687a.6.6 0 0 1-.562.406c-.031.03-.062.03-.093 0zm12.016 1.872a2.12 2.12 0 0 0-.749-1.123 1.87 1.87 0 0 0-1.123-.375 2.512 2.512 0 0 0-1.061.156c-.032 0-.094.031-.125.031V7.332h-1.28v5.899c.187.062.375.094.562.125.312.093.624.156.967.218.5.063 1 0 1.498-.156.75-.218 1.311-.843 1.405-1.623.062-.468.062-.999-.094-1.467zm-1.217 1.53a.886.886 0 0 1-.655.624 1.96 1.96 0 0 1-1.124-.063s-.031 0-.031-.03v-2.28a1.321 1.321 0 0 1 1.467-.03c.156.124.25.28.312.468.125.406.156.874.031 1.31zM8.52 9.205a5.247 5.247 0 0 0-.999-.281c-.468-.094-.936-.125-1.404-.094a1.805 1.805 0 0 0-1.124.53c-.28.313-.499.687-.561 1.093a4.764 4.764 0 0 0-.094.936c0 .406.094.78.281 1.124.156.28.374.53.655.687a3.078 3.078 0 0 0 2.029.343c.5-.062.967-.218 1.467-.312V9.33c-.063-.032-.156-.094-.25-.125zm-.999 3.214c-.436.156-.905.188-1.342 0a.826.826 0 0 1-.468-.499 2.24 2.24 0 0 1 .032-1.498.93.93 0 0 1 .749-.562c.312-.031.655 0 .936.156.031 0 .031.031.062.031zm16.073-3.277a6.932 6.932 0 0 0-1.154-.28 3.777 3.777 0 0 0-1.186 0c-.718.124-1.28.655-1.498 1.341a3.697 3.697 0 0 0-.125 1.655c.062.499.312.967.718 1.28.093.062.218.155.312.187.25.124.561.218.842.25.344.062.687.062 1.03 0 .5-.094.999-.22 1.467-.313V9.33a5.08 5.08 0 0 0-.406-.188zm-.811 3.277c-.063.032-.094.032-.156.032-.25.062-.5.093-.78.093a.976.976 0 0 1-.78-.405 1.094 1.094 0 0 1-.188-.437c-.062-.375-.062-.75.062-1.124a.932.932 0 0 1 .812-.687c.343-.062.687 0 .999.188z"/></svg>
diff --git a/assets/lib/simple-icons/icons/zalando.svg b/assets/lib/simple-icons/icons/zalando.svg
index f2fd9a77..6565822b 100644
--- a/assets/lib/simple-icons/icons/zalando.svg
+++ b/assets/lib/simple-icons/icons/zalando.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Zalando icon</title><path d="M4.78 24c-.88 0-1.36-.2-1.62-.36-.36-.21-1.02-.75-1.62-2.33A27.06 27.06 0 0 1 0 12V12c.02-3.66.59-6.76 1.54-9.3C2.14 1.1 2.8.56 3.16.35 3.42.21 3.9 0 4.78 0c.33 0 .72.03 1.18.1a26.1 26.1 0 0 1 8.7 3.3h.01a26.4 26.4 0 0 1 7.16 6.01c1.06 1.32 1.19 2.17 1.19 2.59 0 .42-.13 1.27-1.19 2.59a26.4 26.4 0 0 1-7.16 6h-.01a26.03 26.03 0 0 1-8.7 3.3c-.46.08-.85.11-1.18.11z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Zalando</title><path d="M5.27 24c-.88 0-1.36-.2-1.62-.36-.36-.21-1.02-.75-1.62-2.33A27.06 27.06 0 01.49 12c.02-3.66.59-6.76 1.54-9.3C2.63 1.1 3.29.56 3.65.35 3.91.21 4.39 0 5.27 0c.33 0 .72.03 1.18.1a26.1 26.1 0 018.7 3.3h.01a26.4 26.4 0 017.16 6.01c1.06 1.32 1.19 2.17 1.19 2.59 0 .42-.13 1.27-1.19 2.59a26.4 26.4 0 01-7.16 6h-.01a26.03 26.03 0 01-8.7 3.3c-.46.08-.85.11-1.18.11z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/zalo.svg b/assets/lib/simple-icons/icons/zalo.svg
new file mode 100644
index 00000000..b84a9dda
--- /dev/null
+++ b/assets/lib/simple-icons/icons/zalo.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Zalo</title><path d="M12.49 10.2722v-.4496h1.3467v6.3218h-.7704a.576.576 0 01-.5763-.5729l-.0006.0005a3.273 3.273 0 01-1.9372.6321c-1.8138 0-3.2844-1.4697-3.2844-3.2823 0-1.8125 1.4706-3.2822 3.2844-3.2822a3.273 3.273 0 011.9372.6321l.0006.0005zM6.9188 7.7896v.205c0 .3823-.051.6944-.2995 1.0605l-.03.0343c-.0542.0615-.1815.206-.2421.2843L2.024 14.8h4.8948v.7682a.5764.5764 0 01-.5767.5761H0v-.3622c0-.4436.1102-.6414.2495-.8476L4.8582 9.23H.1922V7.7896h6.7266zm8.5513 8.3548a.4805.4805 0 01-.4803-.4798v-7.875h1.4416v8.3548H15.47zM20.6934 9.6C22.52 9.6 24 11.0807 24 12.9044c0 1.8252-1.4801 3.306-3.3066 3.306-1.8264 0-3.3066-1.4808-3.3066-3.306 0-1.8237 1.4802-3.3044 3.3066-3.3044zm-10.1412 5.253c1.0675 0 1.9324-.8645 1.9324-1.9312 0-1.065-.865-1.9295-1.9324-1.9295s-1.9324.8644-1.9324 1.9295c0 1.0667.865 1.9312 1.9324 1.9312zm10.1412-.0033c1.0737 0 1.945-.8707 1.945-1.9453 0-1.073-.8713-1.9436-1.945-1.9436-1.0753 0-1.945.8706-1.945 1.9436 0 1.0746.8697 1.9453 1.945 1.9453z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/zapier.svg b/assets/lib/simple-icons/icons/zapier.svg
index 78cd5ee7..ade65832 100644
--- a/assets/lib/simple-icons/icons/zapier.svg
+++ b/assets/lib/simple-icons/icons/zapier.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Zapier icon</title><path d="M15 12.004c0 .893-.165 1.746-.461 2.535-.787.297-1.643.461-2.535.461h-.009c-.893 0-1.745-.165-2.534-.461C9.164 13.75 9 12.896 9 12.004v-.009c0-.893.164-1.745.461-2.534C10.25 9.164 11.103 9 11.995 9h.009c.893 0 1.748.164 2.535.462.297.788.461 1.641.461 2.535v.007zM23.835 10H16.83l4.948-4.952c-.39-.548-.82-1.06-1.295-1.533-.473-.474-.985-.907-1.53-1.296l-4.954 4.949V.165C13.35.061 12.686 0 12.004 0h-.01c-.68 0-1.346.061-1.995.165V7.17l-4.95-4.949c-.549.386-1.06.821-1.534 1.294-.474.474-.908.987-1.296 1.533L7.168 10H.165S0 11.316 0 11.995v.009c0 .68.061 1.348.165 1.995H7.17l-4.949 4.952c.777 1.096 1.733 2.051 2.827 2.83L10 16.831v7.004c.648.105 1.313.165 1.991.165h.017c.679 0 1.344-.06 1.991-.165v-7.004l4.952 4.95c.548-.375 1.06-.812 1.529-1.29h.005c.473-.465.906-.976 1.296-1.531l-4.95-4.949h7.004c.105-.645.165-1.304.165-1.98V12c0-.678-.06-1.343-.165-1.99"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Zapier</title><path d="M15 12.004c0 .893-.165 1.746-.461 2.535-.787.297-1.643.461-2.535.461h-.009c-.893 0-1.745-.165-2.534-.461C9.164 13.75 9 12.896 9 12.004v-.009c0-.893.164-1.745.461-2.534C10.25 9.164 11.103 9 11.995 9h.009c.893 0 1.748.164 2.535.462.297.788.461 1.641.461 2.535v.007zM23.835 10H16.83l4.948-4.952c-.39-.548-.82-1.06-1.295-1.533-.473-.474-.985-.907-1.53-1.296l-4.954 4.949V.165C13.35.061 12.686 0 12.004 0h-.01c-.68 0-1.346.061-1.995.165V7.17l-4.95-4.949c-.549.386-1.06.821-1.534 1.294-.474.474-.908.987-1.296 1.533L7.168 10H.165S0 11.316 0 11.995v.009c0 .68.061 1.348.165 1.995H7.17l-4.949 4.952c.777 1.096 1.733 2.051 2.827 2.83L10 16.831v7.004c.648.105 1.313.165 1.991.165h.017c.679 0 1.344-.06 1.991-.165v-7.004l4.952 4.95c.548-.375 1.06-.812 1.529-1.29h.005c.473-.465.906-.976 1.296-1.531l-4.95-4.949h7.004c.105-.645.165-1.304.165-1.98V12c0-.678-.06-1.343-.165-1.99"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/zara.svg b/assets/lib/simple-icons/icons/zara.svg
new file mode 100644
index 00000000..3ce62197
--- /dev/null
+++ b/assets/lib/simple-icons/icons/zara.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Zara</title><path d="M8.562 7l.002.006 2.794 7.621v-7.23h-1.15v-.07h3.96c1.903 0 3.231.976 3.231 2.375 0 1.02-.91 1.868-2.263 2.109l-.249.031.25.026c.821.094 1.473.346 1.935.75l.003.003L19.141 7h.07l.002.006 3.556 9.698H24v.07h-3.918v-.07h1.154l-1.17-3.189h-2.373v.002l.013.037c.094.281.142.576.139.873v1.196c0 .615.271 1.238.79 1.238.304 0 .547-.107.837-.372l.041.038c-.314.332-.695.473-1.266.473-.43 0-.8-.104-1.096-.308l-.056-.04c-.39-.296-.644-.778-.753-1.435l-.018-.106-.018-.16-.002-.028-.654 1.78h.928v.07h-1.942v-.07h.938l.718-1.954v-.005a6.35 6.35 0 01-.013-.346v-.854c0-1.049-.78-1.65-2.14-1.65h-1.337v4.81h1.158v.07H9.433v-.07h1.154l-1.17-3.189H6.172l-1.158 3.154.048-.008c1.521-.262 2.22-1.423 2.23-2.645h.07v2.758H0l5.465-9.377H3.268c-1.822 0-2.646 1.407-2.659 2.81H.54v-2.88h6.634l-.04.07-5.425 9.307h2.854c.071 0 .141-.003.212-.009l.072-.006.09-.01L8.491 7h.07zm9.883 2.095l-1.313 3.576.007.007.067.066c.193.197.347.43.452.684l.007.017h2.375l-1.595-4.35zm-10.648 0l-1.599 4.35h3.194l-1.595-4.35zm6.026-1.698h-1.02v4.427h1.336c1.353 0 1.767-.493 1.767-2.107 0-1.517-.72-2.32-2.083-2.32z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/zazzle.svg b/assets/lib/simple-icons/icons/zazzle.svg
new file mode 100644
index 00000000..93d8331e
--- /dev/null
+++ b/assets/lib/simple-icons/icons/zazzle.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Zazzle</title><path d="M0 12C0 5.382 5.382 0 12 0s12 5.382 12 12-5.382 12-12 12S0 18.618 0 12zm5.936 6.179c.134.177.422.155.665-.045.532-.42 1.042-.753 2.016-.753 1.839 0 3.301 1.152 5.495 1.152 1.684.021 2.747-.62 3.346-1.485.465-.664.686-1.573.686-2.282 0-.997-.576-1.662-1.573-1.662-.953 0-1.373.487-1.419 1.196-.021.288-.021.843-.199 1.108-.177.288-.51.377-.908.377-1.042 0-2.283-.841-3.655-.841h-.2l8.928-7.223c.155-.112.222-.377.045-.51l-1.374-1.618c-.244-.222-.421-.199-.665 0-.466.377-.908.754-1.861.754-1.552 0-3.213-.975-5.383-.975-1.55 0-2.416.576-3.014 1.197-.576.62-.974 1.617-.974 2.57 0 .975.576 1.595 1.529 1.595.864 0 1.374-.487 1.374-1.174 0-.398.021-.753.199-1.018.155-.266.554-.51 1.108-.51.864 0 2.503.597 3.523.597h.066l-9.04 7.179c-.177.133-.177.442-.066.597Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/zcash.svg b/assets/lib/simple-icons/icons/zcash.svg
new file mode 100644
index 00000000..e4e7f1e8
--- /dev/null
+++ b/assets/lib/simple-icons/icons/zcash.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Zcash</title><path d="M12 0C5.382 0 0 5.382 0 12s5.382 12 12 12 12-5.382 12-12S18.618 0 12 0zm0 22.02C6.474 22.02 1.98 17.526 1.98 12S6.474 1.98 12 1.98 22.02 6.474 22.02 12 17.526 22.02 12 22.02zm4.28-13.763V6.431h-3.274V4.42h-2.012V6.43H7.72v2.423h5.079l-5.08 6.889v1.826h3.275v2.002h2.012v-2.002h3.275v-2.422H11.2z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/zdf.svg b/assets/lib/simple-icons/icons/zdf.svg
index 81334479..46e647f2 100644
--- a/assets/lib/simple-icons/icons/zdf.svg
+++ b/assets/lib/simple-icons/icons/zdf.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ZDF icon</title><path d="M7.014 4.984A7.02 7.02 0 0 0 0 12.002a7.017 7.017 0 0 0 13.271 3.174h2.915c.696 0 1.324-.044 1.962-.553.461-.365.749-.884.883-1.56v2.103h1.336v-2.473h3.153v-1.1h-3.16l.02-.445c.005-.724.226-1.162 1.277-1.162H24V8.873h-2.818c-1.517 0-2.141.85-2.141 2.18v.129c-.254-1.565-1.185-2.309-2.889-2.309h-2.855a7.018 7.018 0 0 0-6.283-3.889zM8.02 8.873h3.436c1.742 0 1.992 1.219 1.992 1.9 0 .725-.298 1.873-1.992 1.873h-.844c-1.056 0-1.281.38-1.281 1.104v.336h3.945v1.074H7.982v-1.558c0-1.335.625-2.123 2.137-2.123h.873c.691 0 1.1-.14 1.1-.725 0-.605-.409-.772-1.12-.772h-2.95V8.873zm6.63 1.113h1.472c1.157 0 1.574.496 1.574 2.041 0 1.541-.412 2.035-1.574 2.035H14.65V9.986z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ZDF</title><path d="M7.014 4.987A7.02 7.02 0 000 12.005a7.017 7.017 0 0013.271 3.174h2.915c.696 0 1.324-.044 1.962-.553.461-.365.749-.884.883-1.56v2.103h1.336v-2.473h3.153v-1.1h-3.16l.02-.445c.005-.724.226-1.162 1.277-1.162H24V8.876h-2.818c-1.517 0-2.141.85-2.141 2.18v.129c-.254-1.565-1.185-2.31-2.889-2.31h-2.855a7.018 7.018 0 00-6.283-3.888zM8.02 8.876h3.436c1.742 0 1.992 1.219 1.992 1.9 0 .725-.298 1.873-1.992 1.873h-.844c-1.056 0-1.281.38-1.281 1.104v.336h3.945v1.074H7.982v-1.558c0-1.335.625-2.123 2.137-2.123h.873c.691 0 1.1-.14 1.1-.725 0-.605-.409-.772-1.12-.772h-2.95v-1.11zm6.63 1.113h1.472c1.157 0 1.574.496 1.574 2.04 0 1.542-.412 2.036-1.574 2.036H14.65z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/zeit.svg b/assets/lib/simple-icons/icons/zeit.svg
deleted file mode 100644
index 0f053168..00000000
--- a/assets/lib/simple-icons/icons/zeit.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Zeit icon</title><path d="M24 22.525H0l12-21.05 12 21.05z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/zelle.svg b/assets/lib/simple-icons/icons/zelle.svg
new file mode 100644
index 00000000..62165d8f
--- /dev/null
+++ b/assets/lib/simple-icons/icons/zelle.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Zelle</title><path d="M13.559 24h-2.841a.483.483 0 0 1-.483-.483v-2.765H5.638a.667.667 0 0 1-.666-.666v-2.234a.67.67 0 0 1 .142-.412l8.139-10.382h-7.25a.667.667 0 0 1-.667-.667V3.914c0-.367.299-.666.666-.666h4.23V.483c0-.266.217-.483.483-.483h2.841c.266 0 .483.217.483.483v2.765h4.323c.367 0 .666.299.666.666v2.137a.67.67 0 0 1-.141.41l-8.19 10.481h7.665c.367 0 .666.299.666.666v2.477a.667.667 0 0 1-.666.667h-4.32v2.765a.483.483 0 0 1-.483.483Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/zend.svg b/assets/lib/simple-icons/icons/zend.svg
index 48167cd7..a5cd9418 100644
--- a/assets/lib/simple-icons/icons/zend.svg
+++ b/assets/lib/simple-icons/icons/zend.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Zend icon</title><path d="M24 .467L9.01 20.217H20.54A3.46 3.46 0 0024 16.757V.468zM3.459 3.783C1.585 3.783 0 5.153 0 7.1v16.433l15.063-19.75H3.459Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Zend</title><path d="M24 .467L9.01 20.217H20.54A3.46 3.46 0 0024 16.757V.468zM3.459 3.783C1.585 3.783 0 5.153 0 7.1v16.433l15.063-19.75H3.459Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/zendesk.svg b/assets/lib/simple-icons/icons/zendesk.svg
index abf2ea14..7309c345 100644
--- a/assets/lib/simple-icons/icons/zendesk.svg
+++ b/assets/lib/simple-icons/icons/zendesk.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Zendesk icon</title><path d="M11.085 21.095H0L11.085 7.712v13.383zm12.915 0H12.915c0-3.063 2.479-5.543 5.543-5.543 3.063 0 5.542 2.482 5.542 5.543zm-11.085-4.804V2.905H24L12.915 16.291zm-1.83-13.386c0 3.061-2.481 5.544-5.543 5.544C2.482 8.449 0 5.968 0 2.907h11.085v-.002z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Zendesk</title><path d="M12.914 2.904V16.29L24 2.905H12.914zM0 2.906C0 5.966 2.483 8.45 5.543 8.45s5.542-2.484 5.543-5.544H0zm11.086 4.807L0 21.096h11.086V7.713zm7.37 7.84c-3.063 0-5.542 2.48-5.542 5.543H24c0-3.06-2.48-5.543-5.543-5.543z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/zendframework.svg b/assets/lib/simple-icons/icons/zendframework.svg
index 00fadb18..433610fc 100644
--- a/assets/lib/simple-icons/icons/zendframework.svg
+++ b/assets/lib/simple-icons/icons/zendframework.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Zend Framework icon</title><path d="M.932 6.242v2.535h5.652L0 17.757h10.219v-2.534h-5.18l6.553-8.98H.932zm13.537.162c-3.178 0-3.178 3.178-3.178 3.178h9.531C24 9.582 24 6.404 24 6.404h-9.531zm-.006 4.067c-3.173 0-3.172 3.172-3.172 3.172l4.762.005c3.178 0 3.177-3.177 3.177-3.177h-4.767zm0 4.049c-3.173 0-3.172 3.183-3.172 3.183l1.584-.006c3.178 0 3.178-3.177 3.178-3.177h-1.59Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Zend Framework</title><path d="M.932 6.242v2.535h5.652L0 17.757h10.219v-2.534h-5.18l6.553-8.98H.932zm13.537.162c-3.178 0-3.178 3.178-3.178 3.178h9.531C24 9.582 24 6.404 24 6.404h-9.531zm-.006 4.067c-3.173 0-3.172 3.172-3.172 3.172l4.762.005c3.178 0 3.177-3.177 3.177-3.177h-4.767zm0 4.049c-3.173 0-3.172 3.183-3.172 3.183l1.584-.006c3.178 0 3.178-3.177 3.178-3.177h-1.59Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/zenn.svg b/assets/lib/simple-icons/icons/zenn.svg
new file mode 100644
index 00000000..d4327317
--- /dev/null
+++ b/assets/lib/simple-icons/icons/zenn.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Zenn</title><path d="M.264 23.771h4.984c.264 0 .498-.147.645-.352L19.614.874c.176-.293-.029-.645-.381-.645h-4.72c-.235 0-.44.117-.557.323L.03 23.361c-.088.176.029.41.234.41zM17.445 23.419l6.479-10.408c.205-.323-.029-.733-.41-.733h-4.691c-.176 0-.352.088-.44.235l-6.655 10.643c-.176.264.029.616.352.616h4.779c.234-.001.468-.118.586-.353z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/zenodo.svg b/assets/lib/simple-icons/icons/zenodo.svg
new file mode 100644
index 00000000..fbbe3109
--- /dev/null
+++ b/assets/lib/simple-icons/icons/zenodo.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Zenodo</title><path d="M23.82698 11.163a2.2419 2.2419 0 00-.46698-.68697 2.1499 2.1499 0 00-1.52393-.62697 2.10991 2.10991 0 00-1.20695.36499 2.2469 2.2469 0 00-.49498.45398c-.06.075-.125.17499-.163.23599a2.68689 2.68689 0 00-.20498.46398c.006-.27.046-.67197.20499-.89797V8.52212a.42698.42698 0 00-.137-.32199.44298.44298 0 00-.31698-.132.43998.43998 0 00-.32299.132.43998.43998 0 00-.13.32199v1.73292a2.3699 2.3699 0 00-.59197-.29898 2.1239 2.1239 0 00-1.49994.06 2.1599 2.1599 0 00-1.15295 1.14695l-.024.06a2.2419 2.2419 0 00-.48997-.74697 2.1529 2.1529 0 00-1.52394-.62698 2.10991 2.10991 0 00-.84296.167 2.2299 2.2299 0 00-.68697.45998 2.10591 2.10591 0 00-.46598.68697l-.023.056-.023-.056a2.1549 2.1549 0 00-1.98992-1.31395c-.30098 0-.58197.056-.84196.167a2.2299 2.2299 0 00-.68597.45998c-.2.19599-.35499.42398-.46698.68697l-.02.053-.022-.053a2.2429 2.2429 0 00-.46698-.68698 2.1479 2.1479 0 00-1.52293-.62697 2.10991 2.10991 0 00-.84197.167 2.2289 2.2289 0 00-.64197.41798v-.072a.46298.46298 0 00-.46198-.46298H.53398a.46298.46298 0 000 .92596h2.54889L.091 14.84985a.46198.46198 0 00-.091.27499v.30198c0 .256.207.46298.46298.46298h3.44985a.46198.46198 0 00.46198-.42998 2.1689 2.1689 0 001.34695.47198c.44598 0 .84396-.12 1.19494-.35998.283-.192.50698-.43098.66998-.71997v.62597c0 .127.043.235.13.32199a.43598.43598 0 00.32398.132c.12 0 .22399-.044.31598-.132a.42698.42698 0 00.138-.32199V13.8579h-.002l.002-.003H7.36069a.43998.43998 0 00-.41799.28699l-.074.152a1.23395 1.23395 0 01-.45997.53197 1.23395 1.23395 0 01-.68697.197c-.168 0-.32999-.031-.48498-.095a1.17495 1.17495 0 01-.39999-.27 1.38194 1.38194 0 01-.26998-.39998 1.16495 1.16495 0 01-.1-.47698v-.40598h4.02783v-1.37494a1.23695 1.23695 0 01.36498-.87796 1.23995 1.23995 0 01.88996-.36499c.167 0 .32899.032.48398.095.155.065.289.154.39999.27.112.11499.19999.24898.26898.39997.067.151.102.311.102.47798v3.47686c0 .12799.043.23599.13.32298a.43798.43798 0 00.32398.132c.12 0 .224-.044.31599-.132a.43098.43098 0 00.137-.32299v-.62297a2.1439 2.1439 0 001.86791 1.07795c.29399 0 .57398-.056.83697-.168.26199-.11099.49298-.26398.69297-.45997a2.11191 2.11191 0 00.48398-.73297l.018.047c.111.26199.26699.48998.46598.68697.19999.195.42798.34799.68697.45998.25799.11.53997.167.84296.167a2.1469 2.1469 0 001.52294-.62698c.19499-.196.35098-.42498.46698-.68697l.024-.06.024.06c.115.26199.26998.48998.46598.68697a2.1439 2.1439 0 001.52393.62697c.29398 0 .57397-.056.83696-.168a2.2199 2.2199 0 00.69297-.45997 2.11691 2.11691 0 00.63498-1.52194v-1.78192a2.07991 2.07991 0 00-.173-.83696zM1.15995 14.96485l2.4199-3.25886c-.012.096-.02.194-.02.29399v1.77992c0 .296.058.57398.174.83797.05399.123.11799.23899.18998.34698zm5.81775-2.49989H4.4678v-.46498a1.24195 1.24195 0 01.76498-1.14695c.15199-.064.31498-.096.48998-.096.16799 0 .32998.032.48398.095.15599.065.28998.154.39998.26999.112.115.19999.24899.26999.39998.068.151.1.31099.1.47798zm8.05766 1.31594a1.24895 1.24895 0 01-1.25395 1.24295c-.168 0-.32898-.032-.48498-.096a1.16795 1.16795 0 01-.39998-.26999 1.37594 1.37594 0 01-.26899-.39998 1.15895 1.15895 0 01-.1-.47698v-1.78092a1.23995 1.23995 0 011.25495-1.24295c.16599 0 .32798.032.48198.095.15599.065.28998.154.39998.26999.112.115.201.24899.26999.39998.067.152.101.31099.101.47798zm4.02783 0c0 .167-.033.32599-.1.47798a1.37994 1.37994 0 01-.27.39999 1.15995 1.15995 0 01-.39998.26998 1.25995 1.25995 0 01-.48397.094 1.23195 1.23195 0 01-.88997-.36398 1.24195 1.24195 0 01-.36598-.87796v-1.78093c0-.16699.035-.32598.102-.47798a1.39994 1.39994 0 01.26998-.39998 1.15995 1.15995 0 01.39999-.26999 1.26995 1.26995 0 01.48398-.095 1.24995 1.24995 0 01.88996.36499 1.24995 1.24995 0 01.36398.87796zm4.02782 0a1.22395 1.22395 0 01-.36398.87797c-.116.116-.24999.20499-.39998.26998a1.24995 1.24995 0 01-.48998.094 1.26995 1.26995 0 01-.48498-.095 1.16895 1.16895 0 01-.39999-.26998 1.37994 1.37994 0 01-.26998-.39999 1.15695 1.15695 0 01-.1-.47698v-1.78092a1.23995 1.23995 0 011.25494-1.24295c.167 0 .32799.032.48298.095.156.065.29.154.39999.27.112.11499.20099.24898.26998.39997.067.152.1.311.1.47798v1.77993z"/></svg>
diff --git a/assets/lib/simple-icons/icons/zerodha.svg b/assets/lib/simple-icons/icons/zerodha.svg
new file mode 100644
index 00000000..30ed55ba
--- /dev/null
+++ b/assets/lib/simple-icons/icons/zerodha.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Zerodha</title><path d="M20.378 5.835A27.267 27.267 0 0124 12.169V0H13.666c2.486 1.343 4.763 3.308 6.712 5.835zM5.48 1.297c-1.914 0-3.755.409-5.48 1.166V24h22.944C22.766 11.44 15 1.297 5.48 1.297z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/zeromq.svg b/assets/lib/simple-icons/icons/zeromq.svg
index 4ecfb078..957e2b8a 100644
--- a/assets/lib/simple-icons/icons/zeromq.svg
+++ b/assets/lib/simple-icons/icons/zeromq.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ZeroMQ icon</title><path d="M22.088,5.499l1.894-1.894l-3.587-3.587l-1.894,1.894C16.627,0.702,14.396,0,12,0C5.373,0,0,5.373,0,12c0,2.396,0.702,4.627,1.912,6.501l-1.894,1.894l3.587,3.587l1.894-1.894C7.373,23.298,9.604,24,12,24c6.627,0,12-5.373,12-12C24,9.604,23.298,7.373,22.088,5.499z M4.569,12c0-4.104,3.327-7.431,7.431-7.431c1.125,0,2.191,0.25,3.146,0.698l-9.88,9.88C4.819,14.191,4.569,13.125,4.569,12z M12,19.431c-1.125,0-2.191-0.25-3.146-0.698l9.88-9.88c0.447,0.956,0.698,2.022,0.698,3.146C19.431,16.104,16.104,19.431,12,19.431z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>ZeroMQ</title><path d="M22.088,5.499l1.894-1.894l-3.587-3.587l-1.894,1.894C16.627,0.702,14.396,0,12,0C5.373,0,0,5.373,0,12c0,2.396,0.702,4.627,1.912,6.501l-1.894,1.894l3.587,3.587l1.894-1.894C7.373,23.298,9.604,24,12,24c6.627,0,12-5.373,12-12C24,9.604,23.298,7.373,22.088,5.499z M4.569,12c0-4.104,3.327-7.431,7.431-7.431c1.125,0,2.191,0.25,3.146,0.698l-9.88,9.88C4.819,14.191,4.569,13.125,4.569,12z M12,19.431c-1.125,0-2.191-0.25-3.146-0.698l9.88-9.88c0.447,0.956,0.698,2.022,0.698,3.146C19.431,16.104,16.104,19.431,12,19.431z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/zerply.svg b/assets/lib/simple-icons/icons/zerply.svg
index 0cae2235..f5bb869a 100644
--- a/assets/lib/simple-icons/icons/zerply.svg
+++ b/assets/lib/simple-icons/icons/zerply.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Zerply icon</title><path d="M20.779 18.746c-.747.714-1.562 1.017-2.543 1.017-1.32 0-3.322-.61-4.846-1.66-1.629-1.119-3.765-2.237-5.562-2.271 1.323-1.798 3.39-3.628 5.322-5.798.713-.78 4.983-5.7 5.73-6.586.54-.645.813-1.424.813-2.205 0-.3-.033-.585-.101-.855-2.035.405-3.561.601-6.001.601-2.677.015-4.607-.314-5.73-.989-.78 1.018-1.56 2.373-1.56 3.12 0 .948.918 1.728 3.189 1.728.746 0 1.965-.034 3.66-.169-3.492 4.5-6.949 8.16-9.016 10.47-.713.781-1.121 1.83-1.121 2.881 0 .405.075.81.18 1.185.645-.104 1.291-.179 1.965-.179 1.395 0 2.79.299 4.081.839C11.805 21.014 14.205 24 16.921 24c2.204 0 4.065-1.741 4.065-4.036 0-.404-.061-.825-.195-1.229l-.012.011z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Zerply</title><path d="M20.779 18.746c-.747.714-1.562 1.017-2.543 1.017-1.32 0-3.322-.61-4.846-1.66-1.629-1.119-3.765-2.237-5.562-2.271 1.323-1.798 3.39-3.628 5.322-5.798.713-.78 4.983-5.7 5.73-6.586.54-.645.813-1.424.813-2.205 0-.3-.033-.585-.101-.855-2.035.405-3.561.601-6.001.601-2.677.015-4.607-.314-5.73-.989-.78 1.018-1.56 2.373-1.56 3.12 0 .948.918 1.728 3.189 1.728.746 0 1.965-.034 3.66-.169-3.492 4.5-6.949 8.16-9.016 10.47-.713.781-1.121 1.83-1.121 2.881 0 .405.075.81.18 1.185.645-.104 1.291-.179 1.965-.179 1.395 0 2.79.299 4.081.839C11.805 21.014 14.205 24 16.921 24c2.204 0 4.065-1.741 4.065-4.036 0-.404-.061-.825-.195-1.229l-.012.011z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/zhihu.svg b/assets/lib/simple-icons/icons/zhihu.svg
index fbe9dadb..c283d23e 100644
--- a/assets/lib/simple-icons/icons/zhihu.svg
+++ b/assets/lib/simple-icons/icons/zhihu.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Zhihu icon</title><path d="M5.721 0C2.251 0 0 2.25 0 5.719V18.28C0 21.751 2.252 24 5.721 24h12.56C21.751 24 24 21.75 24 18.281V5.72C24 2.249 21.75 0 18.281 0zm1.964 4.078c-.271.73-.5 1.434-.68 2.11h4.587c.545-.006.445 1.168.445 1.171H9.384a58.104 58.104 0 01-.112 3.797h2.712c.388.023.393 1.251.393 1.266H9.183a9.223 9.223 0 01-.408 2.102l.757-.604c.452.456 1.512 1.712 1.906 2.177.473.681.063 2.081.063 2.081l-2.794-3.382c-.653 2.518-1.845 3.607-1.845 3.607-.523.468-1.58.82-2.64.516 2.218-1.73 3.44-3.917 3.667-6.497H4.491c0-.015.197-1.243.806-1.266h2.71c.024-.32.086-3.254.086-3.797H6.598c-.136.406-.158.447-.268.753-.594 1.095-1.603 1.122-1.907 1.155.906-1.821 1.416-3.6 1.591-4.064.425-1.124 1.671-1.125 1.671-1.125zM13.078 6h6.377v11.33h-2.573l-2.184 1.373-.401-1.373h-1.219zm1.313 1.219v8.86h.623l.263.937 1.455-.938h1.456v-8.86z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Zhihu</title><path d="M5.721 0C2.251 0 0 2.25 0 5.719V18.28C0 21.751 2.252 24 5.721 24h12.56C21.751 24 24 21.75 24 18.281V5.72C24 2.249 21.75 0 18.281 0zm1.964 4.078c-.271.73-.5 1.434-.68 2.11h4.587c.545-.006.445 1.168.445 1.171H9.384a58.104 58.104 0 01-.112 3.797h2.712c.388.023.393 1.251.393 1.266H9.183a9.223 9.223 0 01-.408 2.102l.757-.604c.452.456 1.512 1.712 1.906 2.177.473.681.063 2.081.063 2.081l-2.794-3.382c-.653 2.518-1.845 3.607-1.845 3.607-.523.468-1.58.82-2.64.516 2.218-1.73 3.44-3.917 3.667-6.497H4.491c0-.015.197-1.243.806-1.266h2.71c.024-.32.086-3.254.086-3.797H6.598c-.136.406-.158.447-.268.753-.594 1.095-1.603 1.122-1.907 1.155.906-1.821 1.416-3.6 1.591-4.064.425-1.124 1.671-1.125 1.671-1.125zM13.078 6h6.377v11.33h-2.573l-2.184 1.373-.401-1.373h-1.219zm1.313 1.219v8.86h.623l.263.937 1.455-.938h1.456v-8.86z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/zig.svg b/assets/lib/simple-icons/icons/zig.svg
new file mode 100644
index 00000000..935eba3d
--- /dev/null
+++ b/assets/lib/simple-icons/icons/zig.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Zig</title><path d="m23.53 1.02-7.686 3.45h-7.06l-2.98 3.452h7.173L.47 22.98l7.681-3.607h7.065v-.002l2.978-3.45-7.148-.001 12.482-14.9zM0 4.47v14.901h1.883l2.98-3.45H3.451v-8h.942l2.824-3.45H0zm22.117 0-2.98 3.608h1.412v7.844h-.942l-2.98 3.45H24V4.47h-1.883z"/></svg>
diff --git a/assets/lib/simple-icons/icons/zigbee.svg b/assets/lib/simple-icons/icons/zigbee.svg
index 69cb6a04..ea4cb01f 100644
--- a/assets/lib/simple-icons/icons/zigbee.svg
+++ b/assets/lib/simple-icons/icons/zigbee.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Zigbee icon</title><path d="M11.988 0a11.85 11.85 0 00-8.617 3.696c7.02-.875 11.401-.583 13.289-.34 3.752.583 3.558 3.404 3.558 3.404L8.237 19.112c2.299.22 6.897.366 13.796-.631a11.86 11.86 0 001.912-6.469C23.945 5.374 18.595 0 11.988 0zm.232 4.31c-2.451-.014-5.772.146-9.963.723C.854 7.003.055 9.41.055 12.012.055 18.626 5.38 24 11.988 24c3.63 0 6.85-1.63 9.053-4.182-7.286.948-11.813.631-13.75.388-3.775-.56-3.557-3.404-3.557-3.404L15.691 4.474a38.635 38.635 0 00-3.471-.163Z"/></svg>
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Zigbee</title><path d="M11.988 0a11.85 11.85 0 00-8.617 3.696c7.02-.875 11.401-.583 13.289-.34 3.752.583 3.558 3.404 3.558 3.404L8.237 19.112c2.299.22 6.897.366 13.796-.631a11.86 11.86 0 001.912-6.469C23.945 5.374 18.595 0 11.988 0zm.232 4.31c-2.451-.014-5.772.146-9.963.723C.854 7.003.055 9.41.055 12.012.055 18.626 5.38 24 11.988 24c3.63 0 6.85-1.63 9.053-4.182-7.286.948-11.813.631-13.75.388-3.775-.56-3.557-3.404-3.557-3.404L15.691 4.474a38.635 38.635 0 00-3.471-.163Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/zillow.svg b/assets/lib/simple-icons/icons/zillow.svg
index e516ca9a..637f6aa6 100644
--- a/assets/lib/simple-icons/icons/zillow.svg
+++ b/assets/lib/simple-icons/icons/zillow.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Zillow icon</title><path d="M17.381 18.056c-7.43.445-15.51 3.135-16.362 3.51l.989-2.789c2.521-1.166 8.775-3.469 16.486-4.019-.15.57-.961 2.671-1.125 3.285l.012.013zm2.649-7.509s-.363.765-.709 1.814c-2.954.18-7.635 1.154-9.915 1.98 1.186-1.08 8.686-8.61 8.686-8.61C20.985 7.71 24 10.155 24 10.155l-3.97.395v-.003zm-17.55.33c1.647-.75 6.265-2.146 10.685-3.181 0 0-8.497 7.845-10.859 10.275l1.95-5.28c-1.516.225-2.184.315-4.256.75l2.479-2.551.001-.013zm10.6-8.432c.734.359 3.45 2.205 4.419 2.888-3.096.074-9.135 1.409-11.652 2.25 2.065-1.568 5.903-4.53 7.233-5.148v.01z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Zillow</title><path d="M12.006 0L1.086 8.627v3.868c3.386-2.013 11.219-5.13 14.763-6.015.11-.024.16.005.227.078.372.427 1.586 1.899 1.916 2.301a.128.128 0 0 1-.03.195 43.607 43.607 0 0 0-6.67 6.527c-.03.037-.006.043.012.03 2.642-1.134 8.828-2.94 11.622-3.452V8.627zm-.48 11.177c-2.136.708-8.195 3.307-10.452 4.576V24h21.852v-7.936c-2.99.506-11.902 3.16-15.959 5.246a.183.183 0 0 1-.23-.036l-2.044-2.429c-.055-.061-.062-.098.011-.208 1.574-2.3 4.789-5.899 6.833-7.418.042-.03.031-.06-.012-.042Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/zingat.svg b/assets/lib/simple-icons/icons/zingat.svg
index d56f20bd..4ed6b3e9 100644
--- a/assets/lib/simple-icons/icons/zingat.svg
+++ b/assets/lib/simple-icons/icons/zingat.svg
@@ -1 +1 @@
-<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Zingat icon</title><path d="M12.271.006A8.584 8.584 0 009.906.25a8.705 8.705 0 00-4.83 3.059 8.377 8.377 0 00-1.85 4.556 6.2 6.2 0 00.159 2.168 15.04 15.04 0 001.053 2.748 38.762 38.762 0 002.498 4.336A82.576 82.576 0 0011.994 24l.067-.074c.456-.574.923-1.14 1.363-1.725.789-1.048 1.562-2.11 2.34-3.168a1 1 0 00.21-.756.973.973 0 00-1.195-.802c-.307.077-.5.286-.675.527-.547.753-1.095 1.505-1.647 2.256-.147.2-.301.393-.488.553a64.17 64.17 0 01-4.38-6.356c-.763-1.28-1.47-2.589-2.007-3.98a8.079 8.079 0 01-.334-1.006c-.105-.44-.096-.892-.068-1.344a5.144 5.144 0 01.328-1.643c.244-.604.507-1.195.9-1.712a6.947 6.947 0 012.65-2.165c.788-.36 1.596-.62 2.47-.62a17.886 17.886 0 011.349.03 4.389 4.389 0 01.943.167c1.486.448 2.742 1.256 3.696 2.494a6.771 6.771 0 01.925 1.709 6.83 6.83 0 01.276.885 4.903 4.903 0 01.086.677c.044.494.063.99-.047 1.477-.079.324-.18.641-.305.951-.133.359-.281.71-.437 1.059V9.793a.835.835 0 00-.184-.56 2.57 2.57 0 00-.394-.354c-1.62-1.23-3.238-2.46-4.858-3.688a.964.964 0 00-1.168.006c-.212.161-.422.325-.633.487l-1.273.972V5.74c-.001-.088-.013-.175-.035-.261a.982.982 0 10-1.932.26V8.06a.169.169 0 01-.074.152c-.194.14-.379.284-.563.428l-.025.02a.98.98 0 00-.148 1.376c.339.422.956.49 1.378.152l3.825-2.92.006-.005a.102.102 0 01.144.006l2.268 1.734c.52.397 1.039.8 1.564 1.19a.293.293 0 01.135.275v4.83c0 .02.003.039.004.058a.97.97 0 00.01.123.97.97 0 000 .002c0 .007 0 .013.002.02a.981.981 0 00.015.072.981.981 0 00.028.094.981.981 0 00.037.09.981.981 0 001.8-.045l.03-.043c.314-.54.635-1.076.937-1.627.597-1.084 1.132-2.196 1.518-3.375a6.706 6.706 0 00.375-1.855 8 8 0 00-.338-2.561 8.497 8.497 0 00-2.943-4.338C15.986.7 14.227.076 12.272.006zM11.178 10.21a1.022 1.022 0 00-.996 1.047v1.615a1.024 1.024 0 001.039 1.002h1.61a1.02 1.02 0 001.019-1.023v-1.618a1.024 1.024 0 00-1.018-1.021h-.81v-.002zm.072.957h1.54c.074 0 .1.03.1.103v.778l.003.006c0 .248-.009.497 0 .74 0 .084-.026.115-.112.115h-1.529c-.08 0-.107-.027-.107-.107v-1.526c0-.077.023-.109.105-.109z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Zingat</title><path d="M12.271.006A8.584 8.584 0 009.906.25a8.705 8.705 0 00-4.83 3.059 8.377 8.377 0 00-1.85 4.556 6.2 6.2 0 00.159 2.168 15.04 15.04 0 001.053 2.748 38.762 38.762 0 002.498 4.336A82.576 82.576 0 0011.994 24l.067-.074c.456-.574.923-1.14 1.363-1.725.789-1.048 1.562-2.11 2.34-3.168a1 1 0 00.21-.756.973.973 0 00-1.195-.802c-.307.077-.5.286-.675.527-.547.753-1.095 1.505-1.647 2.256-.147.2-.301.393-.488.553a64.17 64.17 0 01-4.38-6.356c-.763-1.28-1.47-2.589-2.007-3.98a8.079 8.079 0 01-.334-1.006c-.105-.44-.096-.892-.068-1.344a5.144 5.144 0 01.328-1.643c.244-.604.507-1.195.9-1.712a6.947 6.947 0 012.65-2.165c.788-.36 1.596-.62 2.47-.62a17.886 17.886 0 011.349.03 4.389 4.389 0 01.943.167c1.486.448 2.742 1.256 3.696 2.494a6.771 6.771 0 01.925 1.709 6.83 6.83 0 01.276.885 4.903 4.903 0 01.086.677c.044.494.063.99-.047 1.477-.079.324-.18.641-.305.951-.133.359-.281.71-.437 1.059V9.793a.835.835 0 00-.184-.56 2.57 2.57 0 00-.394-.354c-1.62-1.23-3.238-2.46-4.858-3.688a.964.964 0 00-1.168.006c-.212.161-.422.325-.633.487l-1.273.972V5.74c-.001-.088-.013-.175-.035-.261a.982.982 0 10-1.932.26V8.06a.169.169 0 01-.074.152c-.194.14-.379.284-.563.428l-.025.02a.98.98 0 00-.148 1.376c.339.422.956.49 1.378.152l3.825-2.92.006-.005a.102.102 0 01.144.006l2.268 1.734c.52.397 1.039.8 1.564 1.19a.293.293 0 01.135.275v4.83c0 .02.003.039.004.058a.97.97 0 00.01.123.97.97 0 000 .002c0 .007 0 .013.002.02a.981.981 0 00.015.072.981.981 0 00.028.094.981.981 0 00.037.09.981.981 0 001.8-.045l.03-.043c.314-.54.635-1.076.937-1.627.597-1.084 1.132-2.196 1.518-3.375a6.706 6.706 0 00.375-1.855 8 8 0 00-.338-2.561 8.497 8.497 0 00-2.943-4.338C15.986.7 14.227.076 12.272.006zM11.178 10.21a1.022 1.022 0 00-.996 1.047v1.615a1.024 1.024 0 001.039 1.002h1.61a1.02 1.02 0 001.019-1.023v-1.618a1.024 1.024 0 00-1.018-1.021h-.81v-.002zm.072.957h1.54c.074 0 .1.03.1.103v.778l.003.006c0 .248-.009.497 0 .74 0 .084-.026.115-.112.115h-1.529c-.08 0-.107-.027-.107-.107v-1.526c0-.077.023-.109.105-.109z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/zoho.svg b/assets/lib/simple-icons/icons/zoho.svg
new file mode 100644
index 00000000..6993e51b
--- /dev/null
+++ b/assets/lib/simple-icons/icons/zoho.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Zoho</title><path d="M19.838 14.351c-.203-.244-.306-.579-.306-1.009 0-.438.103-.779.305-1.024.202-.246.477-.368.833-.368.353 0 .625.122.828.368.202.245.305.586.305 1.024 0 .428-.103.763-.305 1.008-.203.244-.475.366-.828.366-.354 0-.628-.121-.832-.365zm-1.556-3.727h4.932v5.307h-4.932v-1.163l.148-.414a.17.17 0 0 0 .01-.084l-.158-1.214v-2.432zm.318 2.717c0 .307.051.593.155.857.104.265.257.503.46.713.19.196.408.345.652.445.245.1.513.15.804.15.28 0 .544-.05.788-.15.244-.1.465-.249.661-.445.205-.21.36-.447.465-.711.105-.264.157-.55.157-.859 0-.308-.052-.594-.157-.857a2.11 2.11 0 0 0-.465-.707c-.196-.2-.416-.35-.66-.452a2.037 2.037 0 0 0-.79-.152 1.953 1.953 0 0 0-1.456.604 2.044 2.044 0 0 0-.46.704 2.34 2.34 0 0 0-.154.86zm4.97-2.828v5.166l.43-.43v-5.233l-.43.497zm-4.56-.791l-.502.547h4.802l.478-.552-4.777.005zm-1.992.432l.303-.87-4.8.669-.063.21.15.593 4.41-.602zm.314.18l.239 1.682.374 2.637.136-.38-.576-4.436-.173.497zm-5.068 1.149l.097.043-1.935 4.391-4.28-1.93L8.08 9.596l4.184 1.886zm-.923 1.104c0-.262-.046-.518-.139-.77-.098-.266-.237-.495-.418-.685s-.4-.341-.658-.45a1.969 1.969 0 0 0-.776-.163h-.012a1.93 1.93 0 0 0-.784.176c-.27.117-.505.282-.704.493-.2.21-.362.464-.488.76a2.516 2.516 0 0 0-.207.976c0 .258.044.51.132.758a1.89 1.89 0 0 0 1.087 1.13c.253.108.511.162.772.162h.007c.263-.002.524-.058.782-.169a2.23 2.23 0 0 0 .711-.499c.202-.21.365-.464.49-.758a2.48 2.48 0 0 0 .205-.961zm5.993.29l.335 2.36-4.777.671-.505-3.56.37-.84c.002-.002 0-.005 0-.007a.175.175 0 0 0 .01-.108l-.072-.29 4.303-.587.336 2.36zm-.543 1.97a.874.874 0 0 0-.01-.127l-.504-3.432c-.023-.158-.077-.278-.164-.357a.37.37 0 0 0-.256-.094.537.537 0 0 0-.079.006.398.398 0 0 0-.297.182.494.494 0 0 0-.068.265c0 .039.003.08.01.123l.187 1.32-1.475.217-.187-1.32a.586.586 0 0 0-.162-.353.359.359 0 0 0-.253-.1.496.496 0 0 0-.071.006.418.418 0 0 0-.309.18.48.48 0 0 0-.069.266.8.8 0 0 0 .01.126l.505 3.433c.023.158.078.278.169.355.07.061.16.092.26.091a.59.59 0 0 0 .087-.006.375.375 0 0 0 .284-.182.504.504 0 0 0 .063-.258.851.851 0 0 0-.01-.125l-.206-1.357 1.475-.216.206 1.356a.56.56 0 0 0 .167.353.38.38 0 0 0 .259.094.525.525 0 0 0 .079-.006.392.392 0 0 0 .294-.18.492.492 0 0 0 .065-.26zm-4.458-3.724l-.277-1.103-4.262-1.95.343 1.161 4.196 1.893zM7.8 9.348l-.319-1.076-1.509 3.582.184 1.226L7.8 9.348zm2.01 2.072a1.12 1.12 0 0 0-.438-.096.957.957 0 0 0-.469.125c-.283.157-.515.442-.693.86a1.942 1.942 0 0 0-.173.752c0 .116.015.226.044.33.087.312.288.532.61.67.149.063.293.094.433.094a.962.962 0 0 0 .469-.124c.283-.156.512-.436.686-.845a2 2 0 0 0 .178-.772c0-.113-.014-.221-.042-.323-.085-.313-.284-.534-.604-.67zm-4.83.322l.518 3.41-4.739.742L0 11.245l3.912-.599.882-.135.187 1.231zm-.5 3.024a.485.485 0 0 0-.007-.084.365.365 0 0 0-.078-.177.357.357 0 0 0-.16-.106.75.75 0 0 0-.246-.035c-.09 0-.194.01-.311.03l-1.343.23c.014-.104.065-.24.156-.406a5.35 5.35 0 0 1 .448-.668l.155-.208c.025-.031.061-.078.107-.14.308-.403.498-.731.57-.989a2.07 2.07 0 0 0 .08-.562c0-.106-.008-.21-.026-.314a.855.855 0 0 0-.07-.234.331.331 0 0 0-.118-.14.451.451 0 0 0-.233-.048c-.083 0-.182.01-.299.03l-1.552.266c-.188.032-.327.088-.416.17a.33.33 0 0 0-.106.25.44.44 0 0 0 .007.08c.022.132.09.229.201.278a.57.57 0 0 0 .237.044c.063 0 .132-.007.207-.02l1.3-.219a.695.695 0 0 1-.038.307c-.04.108-.136.261-.29.457l-.2.249c-.35.424-.6.786-.753 1.087a2.35 2.35 0 0 0-.223.613 1.69 1.69 0 0 0-.036.337c0 .078.006.152.018.225a.92.92 0 0 0 .078.257.337.337 0 0 0 .133.148c.05.028.125.039.228.04.13 0 .305-.02.526-.058l1.409-.24c.25-.044.423-.103.523-.186a.327.327 0 0 0 .122-.264zm.663-4.563l-.02.109.599 3.944.14-.73L5.27 9.55l-.125.654zM5.07 8.706L.303 9.47.02 10.883l4.772-.73.277-1.446z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/zoiper.svg b/assets/lib/simple-icons/icons/zoiper.svg
new file mode 100644
index 00000000..d43e6299
--- /dev/null
+++ b/assets/lib/simple-icons/icons/zoiper.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Zoiper</title><path d="M3.3751 13.0786c-.8624-.8624-.8624-2.9256-.0748-3.7131s3.2625-3.225 5.0621-5.0247c1.8004-1.7996 3.3755-2.0624 3.8629-2.0624H15.9c.2223 0 .5527.0322.9236.0884l-1.087 2.1664c-.8738-.0629-1.6811-.0422-2.274-.0422-2.4374 0-2.6254.5622-3.0378.9747-.4125.4125-5.0621 4.8375-5.3997 5.1752-1.0504 1.0503.5621 1.5376 2.3252 1.5376.7875 0 .8998.825.7119 1.5751-.1018.4079-.3684 1.43-.5919 2.5285h-2.139c.0834-.4237.1648-.7712.2184-.954.188-.637.2253-1.2-.1497-1.2s-1.1626-.1871-2.0249-1.0495zm18.0425-9.9195c-.1965-.1965-2.184-1.3497-2.7726-1.6201-.1614-.0739-.2993-.1047-.4172-.1047-.3126 0-.4853.2162-.5872.4193l-3.1179 6.2136c-1.564.4473-2.7104 1.8872-2.7104 3.595 0 1.4355.8088 2.6815 1.996 3.3091-.4575.5435-1.1337 1.1005-1.2919 1.2851-.2254.2628-.7875.5256-1.763.5256H4.3672c-.0298-1.1804-.9951-2.1287-2.1832-2.1287-1.206 0-2.184.978-2.184 2.184 0 1.2068.978 2.1849 2.184 2.1849.9185 0 1.7036-.5664 2.0267-1.3693h7.0394c.9747 0 1.5377-.262 1.7622-.5248.2134-.2491 1.3658-1.1728 1.6584-1.8311.2824.0689.5784.1063.8828.1063 2.0659 0 3.7404-1.6746 3.7404-3.7412a3.7288 3.7288 0 0 0-.5316-1.9221 7006.5352 7006.5352 0 0 1 2.753-5.5502c.2705-.5399.0988-.8342-.0977-1.0307zm.2867 1.7742c-.2377.4786-.6018 1.2128-.993 2.0014.697 1.0061 1.1516 2.4119 1.1516 4.4188 0 5.0995-2.7003 5.6625-3.2625 5.6625h-2.1381c-.4499 0-.7875.0748-1.6125.8998-.825.825-1.9875 1.837-2.3252 2.1746-.3368.3376-.825.563-1.6873.563h-2.662c-.3751 0-1.0503-.188-1.0503-1.7631 0-.221.0212-.4749.0488-.7374H5.0591c-.0581.6409-.0749 1.2776.0034 1.7872.2253 1.4628 1.4254 2.6254 2.4374 2.6254h3.9752c1.8378 0 5.2126-3.4121 5.2126-3.4121s1.1073.0681 1.763.0502C20.4875 19.1485 24 17.4662 24 11.8412c0-3.3144-.9952-5.4775-2.2957-6.9079z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/zomato.svg b/assets/lib/simple-icons/icons/zomato.svg
new file mode 100644
index 00000000..c0beddeb
--- /dev/null
+++ b/assets/lib/simple-icons/icons/zomato.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Zomato</title><path d="M19.615 9.45l-1.258.473-.167.71-.446.021-.115.978h.408l-.211 1.51c-.131.939.036 1.381.865 1.381.488 0 .91-.175 1.135-.297l.145-.9c-.167.083-.436.19-.618.19-.247 0-.276-.13-.225-.488l.189-1.396h.843c.03-.206.131-.877.16-1h-.865zm-3.779 1.002c-.115.002-.236.01-.361.026a3.592 3.592 0 0 0-1.347.432l.26.789c.269-.15.615-.28.978-.326.538-.066.757.1.79.375.014.109.004.199-.005.289l-.014.056a3.46 3.46 0 0 0-1.097-.036c-.518.063-.943.273-1.204.6a1.324 1.324 0 0 0-.225 1.034c.127.583.553.84 1.199.76.45-.055.812-.27 1.076-.63a2.665 2.665 0 0 1-.03.304 1.74 1.74 0 0 1-.072.29l1.244.001a3.657 3.657 0 0 1-.001-.365c.036-.459.118-1.143.247-2.051a2.397 2.397 0 0 0-.002-.59c-.08-.644-.628-.969-1.436-.958zm6.536.063c-1.194 0-2.107 1.067-2.107 2.342 0 .959.552 1.693 1.628 1.693 1.2 0 2.107-1.067 2.107-2.35 0-.95-.538-1.685-1.628-1.685zm-11.777.041c-.538 0-1.12.465-1.52 1.236.102-.504.08-1.076.051-1.198a8.964 8.964 0 0 1-1.287.122 6.9 6.9 0 0 1-.073 1.243l-.167 1.145c-.066.45-.138.969-.211 1.297h1.353c.007-.199.058-.511.094-.786l.116-.786c.095-.511.502-1.114.815-1.114.182 0 .175.176.124.504l-.131.885c-.066.45-.138.969-.211 1.297h1.367c.008-.199.051-.512.088-.786l.116-.786c.094-.512.502-1.114.814-1.114.182 0 .175.168.146.396l-.327 2.29H13l.438-2.609c.095-.649.044-1.236-.676-1.236-.523 0-1.09.443-1.49 1.182.087-.61.036-1.182-.677-1.182zm-4.88.008c-1.177 0-2.08 1.053-2.08 2.312 0 .946.546 1.67 1.608 1.67 1.185 0 2.08-1.052 2.08-2.319 0-.938-.531-1.663-1.607-1.663zm-5.126.091c-.05.39-.102.778-.175 1.13.328-.008.619-.016 1.411-.016l-1.81 1.96-.015.703c.444-.03.997-.039 1.63-.039.566 0 1.134.008 1.497.039.065-.458.13-.763.21-1.137-.275.015-.755.023-1.512.023l1.81-1.969.023-.694c-.437.023-.83.03-1.52.03-.749 0-.975-.007-1.549-.03zm4.988.927c.255 0 .408.228.408.701 0 .687-.276 1.251-.626 1.251-.261 0-.414-.236-.414-.702 0-.694.283-1.25.632-1.25zm16.629 0c.254 0 .407.228.407.701 0 .687-.276 1.251-.625 1.251-.262 0-.415-.236-.415-.702 0-.694.284-1.25.633-1.25zM15.51 12.64c.206-.003.403.024.55.058l-.013.118c-.075.44-.39.881-.848.938-.31.037-.578-.148-.608-.39a.538.538 0 0 1 .114-.41c.117-.159.336-.268.599-.3.069-.009.138-.013.206-.014Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/zoom.svg b/assets/lib/simple-icons/icons/zoom.svg
index ad787b3a..77fdbe36 100644
--- a/assets/lib/simple-icons/icons/zoom.svg
+++ b/assets/lib/simple-icons/icons/zoom.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Zoom icon</title><path d="M4.587 13.63l-.27-.012H1.89l3.235-3.235-.013-.27a.815.815 0 0 0-.795-.795l-.27-.013H.004l.014.27c.034.438.353.77.794.795l.27.013H3.51L.273 13.618l.014.269c.015.433.362.78.795.796l.27.013h4.044l-.014-.27c-.036-.443-.35-.767-.795-.795zm3.237-4.325H7.82a2.695 2.695 0 1 0 .003 0zm1.141 3.839a1.618 1.618 0 1 1-2.288-2.287 1.618 1.618 0 0 1 2.288 2.287zm12.872-3.838a2.157 2.157 0 0 0-1.615.729 2.152 2.152 0 0 0-1.618-.731 2.147 2.147 0 0 0-1.208.37c-.21-.233-.68-.37-.948-.37v5.392l.27-.013c.45-.03.777-.349.795-.796l.013-.27V11.73l.014-.27c.01-.202.04-.382.132-.54a1.078 1.078 0 0 1 1.473-.393 1.078 1.078 0 0 1 .392.392c.093.16.12.339.132.54l.014.271v1.887l.013.269c.027.44.35.768.795.796l.27.013V11.73l.012-.27c.01-.2.04-.384.134-.543.299-.514.959-.69 1.473-.39a1.078 1.078 0 0 1 .392.393c.092.16.12.343.131.54l.014.27v1.887l.013.269c.028.443.35.77.796.796l.27.013V11.46a2.157 2.157 0 0 0-2.16-2.155zm-10.26.788a2.696 2.696 0 1 0 3.81 3.813 2.696 2.696 0 0 0-3.81-3.813zm3.049 3.05a1.618 1.618 0 1 1-2.288-2.288 1.618 1.618 0 0 1 2.288 2.288z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Zoom</title><path d="M4.585 13.607l-.27-.012H1.886l3.236-3.237-.013-.27a.815.815 0 00-.796-.796l-.27-.013H0l.014.27c.034.438.353.77.794.796l.27.013h2.43L.268 13.595l.014.269c.015.433.362.78.795.796l.27.013h4.046l-.014-.27c-.036-.443-.35-.767-.795-.795zm3.238-4.328h-.004a2.696 2.697 0 10.003 0zm1.141 3.841a1.619 1.619 0 11-2.289-2.288 1.619 1.619 0 012.289 2.288zM21.84 9.28a2.158 2.158 0 00-1.615.73 2.153 2.153 0 00-1.619-.732 2.148 2.148 0 00-1.208.37c-.21-.233-.68-.37-.949-.37v5.395l.27-.013c.45-.03.778-.349.796-.796l.013-.27v-1.889l.014-.27c.01-.202.04-.382.132-.54a1.078 1.079 0 011.473-.393 1.078 1.079 0 01.393.392c.093.16.12.34.132.54l.014.271v1.889l.013.269a.83.83 0 00.795.796l.27.013v-2.967l.012-.27c.01-.2.04-.384.134-.543.3-.514.96-.69 1.473-.39a1.078 1.079 0 01.393.393c.092.16.12.343.13.54l.015.27v1.889l.013.269c.028.443.35.77.796.796l.27.013v-3.237a2.158 2.158 0 00-2.16-2.156zm-10.263.788a2.697 2.698 0 103.811 3.816 2.697 2.698 0 00-3.811-3.816zm3.05 3.052a1.619 1.619 0 11-2.289-2.29 1.619 1.619 0 012.289 2.29z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/zorin.svg b/assets/lib/simple-icons/icons/zorin.svg
index 6c03d6f2..e867f61b 100644
--- a/assets/lib/simple-icons/icons/zorin.svg
+++ b/assets/lib/simple-icons/icons/zorin.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Zorin icon</title><path d="M4 18.944L5.995 22.4h12.01L20 18.944H4zM24 12l-2.013 3.488H9.216l12.771-6.976L24 12zM0 12l2.013-3.488h12.771L2.013 15.488 0 12zm4-6.944L5.995 1.6h12.01L20 5.056H4z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Zorin</title><path d="M4 18.944L5.995 22.4h12.01L20 18.944H4zM24 12l-2.013 3.488H9.216l12.771-6.976L24 12zM0 12l2.013-3.488h12.771L2.013 15.488 0 12zm4-6.944L5.995 1.6h12.01L20 5.056H4z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/zotero.svg b/assets/lib/simple-icons/icons/zotero.svg
new file mode 100644
index 00000000..07a296e7
--- /dev/null
+++ b/assets/lib/simple-icons/icons/zotero.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Zotero</title><path d="M21.231 2.462 7.18 20.923h14.564V24H2.256v-2.462L16.308 3.076H2.975V0h18.256v2.462z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/zulip.svg b/assets/lib/simple-icons/icons/zulip.svg
index 6ea3ee99..097ec418 100644
--- a/assets/lib/simple-icons/icons/zulip.svg
+++ b/assets/lib/simple-icons/icons/zulip.svg
@@ -1 +1 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Zulip icon</title><path d="M24 12a12 12 0 1 1-24 0 12 12 0 0 1 24 0zm-8.03-6H7.02l1 2.03h6.06l-7.06 7.5 1 2.46h8.96l-1-2.02H9.91l7.06-7.5-1-2.46z"/></svg> \ No newline at end of file
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Zulip</title><path d="M22.767 3.589c0 1.209-.543 2.283-1.37 2.934l-8.034 7.174c-.149.128-.343-.078-.235-.25l2.946-5.9c.083-.165-.024-.368-.194-.368H4.452c-1.77 0-3.219-1.615-3.219-3.59C1.233 1.616 2.682 0 4.452 0h15.096c1.77-.001 3.219 1.614 3.219 3.589zM4.452 24h15.096c1.77 0 3.219-1.616 3.219-3.59 0-1.974-1.449-3.59-3.219-3.59H8.12c-.17 0-.277-.202-.194-.367l2.946-5.9c.108-.172-.086-.378-.235-.25l-8.033 7.173c-.828.65-1.37 1.725-1.37 2.934 0 1.974 1.448 3.59 3.218 3.59z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/zwave.svg b/assets/lib/simple-icons/icons/zwave.svg
new file mode 100644
index 00000000..2ad1d898
--- /dev/null
+++ b/assets/lib/simple-icons/icons/zwave.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Z-Wave</title><path d="M17.156.014C7.69.014 0 7.704 0 17.17h2.3C2.33 8.956 8.973 2.316 17.157 2.316V.014zm0 4.574c-6.932 0-12.584 5.65-12.584 12.582h2.301c.03-5.68 4.633-10.281 10.283-10.281V4.588zm0 5.709a6.837 6.837 0 00-6.845 6.844 6.839 6.839 0 006.845 6.845A6.837 6.837 0 0024 17.141a6.835 6.835 0 00-6.844-6.844zm-2.273 3.174h5.738l-3.058 4.863h3.058l-1.398 2.156h-5.795l3.144-4.922h-3l1.31-2.097Z"/></svg> \ No newline at end of file
diff --git a/assets/lib/simple-icons/icons/zyte.svg b/assets/lib/simple-icons/icons/zyte.svg
new file mode 100644
index 00000000..882f57a1
--- /dev/null
+++ b/assets/lib/simple-icons/icons/zyte.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Zyte</title><path d="M14.135 6.818v1.715h-1.217V9.92h1.217v2.601c0 1.624.943 2.487 2.355 2.487.236 0 .562-.025.785-.076v-1.348c-.146.039-.312.05-.47.05-.708 0-1.205-.328-1.205-1.138V9.92h1.675V8.533h-1.671V6.818ZM20.873 8.4c-1.846 0-3.299 1.441-3.299 3.3 0 1.909 1.454 3.36 3.324 3.36 1.572 0 2.788-.89 3.024-2.238h-1.467c-.132.553-.746.918-1.531.918-1.034 0-1.688-.589-1.871-1.531h4.908c.026-.12.039-.445.039-.617 0-1.87-1.399-3.192-3.127-3.192ZM0 8.533v1.399h3.928L0 13.532v1.4h5.719v-1.4h-3.94l3.94-3.6V8.533Zm6.037 0 2.54 6.059-1.151 2.59h1.57l3.611-8.649h-1.57l-1.715 4.358-1.717-4.358Zm14.758 1.19c.875 0 1.49.511 1.623 1.244h-3.324c.21-.786.838-1.244 1.7-1.244z"/></svg> \ No newline at end of file
diff --git a/assets/lib/smooth-scroll/smooth-scroll.min.js b/assets/lib/smooth-scroll/smooth-scroll.min.js
deleted file mode 100644
index 0d172caa..00000000
--- a/assets/lib/smooth-scroll/smooth-scroll.min.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! smooth-scroll v16.1.3 | (c) 2020 Chris Ferdinandi | MIT License | http://github.com/cferdinandi/smooth-scroll */
-!(function(e,t){"function"==typeof define&&define.amd?define([],(function(){return t(e)})):"object"==typeof exports?module.exports=t(e):e.SmoothScroll=t(e)})("undefined"!=typeof global?global:"undefined"!=typeof window?window:this,(function(C){"use strict";var w={ignore:"[data-scroll-ignore]",header:null,topOnEmptyHash:!0,speed:500,speedAsDuration:!1,durationMax:null,durationMin:null,clip:!0,offset:0,easing:"easeInOutCubic",customEasing:null,updateURL:!0,popstate:!0,emitEvents:!0},L=function(){var n={};return Array.prototype.forEach.call(arguments,(function(e){for(var t in e){if(!e.hasOwnProperty(t))return;n[t]=e[t]}})),n},r=function(e){"#"===e.charAt(0)&&(e=e.substr(1));for(var t,n=String(e),o=n.length,a=-1,r="",i=n.charCodeAt(0);++a<o;){if(0===(t=n.charCodeAt(a)))throw new InvalidCharacterError("Invalid character: the input contains U+0000.");1<=t&&t<=31||127==t||0===a&&48<=t&&t<=57||1===a&&48<=t&&t<=57&&45===i?r+="\\"+t.toString(16)+" ":r+=128<=t||45===t||95===t||48<=t&&t<=57||65<=t&&t<=90||97<=t&&t<=122?n.charAt(a):"\\"+n.charAt(a)}return"#"+r},H=function(){return Math.max(document.body.scrollHeight,document.documentElement.scrollHeight,document.body.offsetHeight,document.documentElement.offsetHeight,document.body.clientHeight,document.documentElement.clientHeight)},q=function(e){return e?(t=e,parseInt(C.getComputedStyle(t).height,10)+e.offsetTop):0;var t},x=function(e,t,n){0===e&&document.body.focus(),n||(e.focus(),document.activeElement!==e&&(e.setAttribute("tabindex","-1"),e.focus(),e.style.outline="none"),C.scrollTo(0,t))},Q=function(e,t,n,o){if(t.emitEvents&&"function"==typeof C.CustomEvent){var a=new CustomEvent(e,{bubbles:!0,detail:{anchor:n,toggle:o}});document.dispatchEvent(a)}};return function(o,e){var O,a,I,M,A={};A.cancelScroll=function(e){cancelAnimationFrame(M),M=null,e||Q("scrollCancel",O)},A.animateScroll=function(a,r,e){A.cancelScroll();var i=L(O||w,e||{}),s="[object Number]"===Object.prototype.toString.call(a),t=s||!a.tagName?null:a;if(s||t){var c=C.pageYOffset;i.header&&!I&&(I=document.querySelector(i.header));var n,o,u,l,d,f,m,h,p=q(I),g=s?a:(function(e,t,n,o){var a=0;if(e.offsetParent)for(;a+=e.offsetTop,e=e.offsetParent;);return a=Math.max(a-t-n,0),o&&(a=Math.min(a,H()-C.innerHeight)),a})(t,p,parseInt("function"==typeof i.offset?i.offset(a,r):i.offset,10),i.clip),y=g-c,v=H(),S=0,E=(n=y,u=(o=i).speedAsDuration?o.speed:Math.abs(n/1e3*o.speed),o.durationMax&&u>o.durationMax?o.durationMax:o.durationMin&&u<o.durationMin?o.durationMin:parseInt(u,10)),b=function(e){var t,n,o;l||(l=e),S+=e-l,f=c+y*(n=d=1<(d=0===E?0:S/E)?1:d,"easeInQuad"===(t=i).easing&&(o=n*n),"easeOutQuad"===t.easing&&(o=n*(2-n)),"easeInOutQuad"===t.easing&&(o=n<.5?2*n*n:(4-2*n)*n-1),"easeInCubic"===t.easing&&(o=n*n*n),"easeOutCubic"===t.easing&&(o=--n*n*n+1),"easeInOutCubic"===t.easing&&(o=n<.5?4*n*n*n:(n-1)*(2*n-2)*(2*n-2)+1),"easeInQuart"===t.easing&&(o=n*n*n*n),"easeOutQuart"===t.easing&&(o=1- --n*n*n*n),"easeInOutQuart"===t.easing&&(o=n<.5?8*n*n*n*n:1-8*--n*n*n*n),"easeInQuint"===t.easing&&(o=n*n*n*n*n),"easeOutQuint"===t.easing&&(o=1+--n*n*n*n*n),"easeInOutQuint"===t.easing&&(o=n<.5?16*n*n*n*n*n:1+16*--n*n*n*n*n),t.customEasing&&(o=t.customEasing(n)),o||n),C.scrollTo(0,Math.floor(f)),(function(e,t){var n=C.pageYOffset;if(e==t||n==t||(c<t&&C.innerHeight+n)>=v)return A.cancelScroll(!0),x(a,t,s),Q("scrollStop",i,a,r),!(M=l=null)})(f,g)||(M=C.requestAnimationFrame(b),l=e)};0===C.pageYOffset&&C.scrollTo(0,0),m=a,h=i,s||history.pushState&&h.updateURL&&history.pushState({smoothScroll:JSON.stringify(h),anchor:m.id},document.title,m===document.documentElement?"#top":"#"+m.id),"matchMedia"in C&&C.matchMedia("(prefers-reduced-motion)").matches?x(a,Math.floor(g),!1):(Q("scrollStart",i,a,r),A.cancelScroll(!0),C.requestAnimationFrame(b))}};var t=function(e){if(!e.defaultPrevented&&!(0!==e.button||e.metaKey||e.ctrlKey||e.shiftKey)&&"closest"in e.target&&(a=e.target.closest(o))&&"a"===a.tagName.toLowerCase()&&!e.target.closest(O.ignore)&&a.hostname===C.location.hostname&&a.pathname===C.location.pathname&&/#/.test(a.href)){var t,n;try{t=r(decodeURIComponent(a.hash))}catch(e){t=r(a.hash)}if("#"===t){if(!O.topOnEmptyHash)return;n=document.documentElement}else n=document.querySelector(t);(n=n||"#top"!==t?n:document.documentElement)&&(e.preventDefault(),(function(e){if(history.replaceState&&e.updateURL&&!history.state){var t=C.location.hash;t=t||"",history.replaceState({smoothScroll:JSON.stringify(e),anchor:t||C.pageYOffset},document.title,t||C.location.href)}})(O),A.animateScroll(n,a))}},n=function(e){if(null!==history.state&&history.state.smoothScroll&&history.state.smoothScroll===JSON.stringify(O)){var t=history.state.anchor;"string"==typeof t&&t&&!(t=document.querySelector(r(history.state.anchor)))||A.animateScroll(t,null,{updateURL:!1})}};A.destroy=function(){O&&(document.removeEventListener("click",t,!1),C.removeEventListener("popstate",n,!1),A.cancelScroll(),M=I=a=O=null)};return (function(){if(!("querySelector"in document&&"addEventListener"in C&&"requestAnimationFrame"in C&&"closest"in C.Element.prototype))throw"Smooth Scroll: This browser does not support the required JavaScript methods and browser APIs.";A.destroy(),O=L(w,e||{}),I=O.header?document.querySelector(O.header):null,document.addEventListener("click",t,!1),O.updateURL&&O.popstate&&C.addEventListener("popstate",n,!1)})(),A}})); \ No newline at end of file
diff --git a/assets/lib/twemoji/twemoji.min.js b/assets/lib/twemoji/twemoji.min.js
index 93a52a89..a37dee5e 100644
--- a/assets/lib/twemoji/twemoji.min.js
+++ b/assets/lib/twemoji/twemoji.min.js
@@ -1,2 +1,2 @@
/*! Copyright Twitter Inc. and other contributors. Licensed under MIT */
-var twemoji=function(){"use strict";var twemoji={base:"https://twemoji.maxcdn.com/v/13.0.0/",ext:".png",size:"72x72",className:"emoji",convert:{fromCodePoint:fromCodePoint,toCodePoint:toCodePoint},onerror:function onerror(){if(this.parentNode){this.parentNode.replaceChild(createText(this.alt,false),this)}},parse:parse,replace:replace,test:test},escaper={"&":"&amp;","<":"&lt;",">":"&gt;","'":"&#39;",'"':"&quot;"},re=/(?:\ud83d\udc68\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc68\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc68\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\u200d\ud83e\udd1d\u200d\ud83e\uddd1|\ud83d\udc6b\ud83c[\udffb-\udfff]|\ud83d\udc6c\ud83c[\udffb-\udfff]|\ud83d\udc6d\ud83c[\udffb-\udfff]|\ud83d[\udc6b-\udc6d])|(?:\ud83d[\udc68\udc69]|\ud83e\uddd1)(?:\ud83c[\udffb-\udfff])?\u200d(?:\u2695\ufe0f|\u2696\ufe0f|\u2708\ufe0f|\ud83c[\udf3e\udf73\udf7c\udf84\udf93\udfa4\udfa8\udfeb\udfed]|\ud83d[\udcbb\udcbc\udd27\udd2c\ude80\ude92]|\ud83e[\uddaf-\uddb3\uddbc\uddbd])|(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75]|\u26f9)((?:\ud83c[\udffb-\udfff]|\ufe0f)\u200d[\u2640\u2642]\ufe0f)|(?:\ud83c[\udfc3\udfc4\udfca]|\ud83d[\udc6e\udc70\udc71\udc73\udc77\udc81\udc82\udc86\udc87\ude45-\ude47\ude4b\ude4d\ude4e\udea3\udeb4-\udeb6]|\ud83e[\udd26\udd35\udd37-\udd39\udd3d\udd3e\uddb8\uddb9\uddcd-\uddcf\uddd6-\udddd])(?:\ud83c[\udffb-\udfff])?\u200d[\u2640\u2642]\ufe0f|(?:\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d[\udc68\udc69]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68|\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d[\udc68\udc69]|\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f|\ud83c\udff3\ufe0f\u200d\ud83c\udf08|\ud83c\udff4\u200d\u2620\ufe0f|\ud83d\udc15\u200d\ud83e\uddba|\ud83d\udc3b\u200d\u2744\ufe0f|\ud83d\udc41\u200d\ud83d\udde8|\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc6f\u200d\u2640\ufe0f|\ud83d\udc6f\u200d\u2642\ufe0f|\ud83e\udd3c\u200d\u2640\ufe0f|\ud83e\udd3c\u200d\u2642\ufe0f|\ud83e\uddde\u200d\u2640\ufe0f|\ud83e\uddde\u200d\u2642\ufe0f|\ud83e\udddf\u200d\u2640\ufe0f|\ud83e\udddf\u200d\u2642\ufe0f|\ud83d\udc08\u200d\u2b1b)|[#*0-9]\ufe0f?\u20e3|(?:[©®\u2122\u265f]\ufe0f)|(?:\ud83c[\udc04\udd70\udd71\udd7e\udd7f\ude02\ude1a\ude2f\ude37\udf21\udf24-\udf2c\udf36\udf7d\udf96\udf97\udf99-\udf9b\udf9e\udf9f\udfcd\udfce\udfd4-\udfdf\udff3\udff5\udff7]|\ud83d[\udc3f\udc41\udcfd\udd49\udd4a\udd6f\udd70\udd73\udd76-\udd79\udd87\udd8a-\udd8d\udda5\udda8\uddb1\uddb2\uddbc\uddc2-\uddc4\uddd1-\uddd3\udddc-\uddde\udde1\udde3\udde8\uddef\uddf3\uddfa\udecb\udecd-\udecf\udee0-\udee5\udee9\udef0\udef3]|[\u203c\u2049\u2139\u2194-\u2199\u21a9\u21aa\u231a\u231b\u2328\u23cf\u23ed-\u23ef\u23f1\u23f2\u23f8-\u23fa\u24c2\u25aa\u25ab\u25b6\u25c0\u25fb-\u25fe\u2600-\u2604\u260e\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262a\u262e\u262f\u2638-\u263a\u2640\u2642\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267b\u267f\u2692-\u2697\u2699\u269b\u269c\u26a0\u26a1\u26a7\u26aa\u26ab\u26b0\u26b1\u26bd\u26be\u26c4\u26c5\u26c8\u26cf\u26d1\u26d3\u26d4\u26e9\u26ea\u26f0-\u26f5\u26f8\u26fa\u26fd\u2702\u2708\u2709\u270f\u2712\u2714\u2716\u271d\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u2764\u27a1\u2934\u2935\u2b05-\u2b07\u2b1b\u2b1c\u2b50\u2b55\u3030\u303d\u3297\u3299])(?:\ufe0f|(?!\ufe0e))|(?:(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75\udd90]|[\u261d\u26f7\u26f9\u270c\u270d])(?:\ufe0f|(?!\ufe0e))|(?:\ud83c[\udf85\udfc2-\udfc4\udfc7\udfca]|\ud83d[\udc42\udc43\udc46-\udc50\udc66-\udc69\udc6e\udc70-\udc78\udc7c\udc81-\udc83\udc85-\udc87\udcaa\udd7a\udd95\udd96\ude45-\ude47\ude4b-\ude4f\udea3\udeb4-\udeb6\udec0\udecc]|\ud83e[\udd0c\udd0f\udd18-\udd1c\udd1e\udd1f\udd26\udd30-\udd39\udd3d\udd3e\udd77\uddb5\uddb6\uddb8\uddb9\uddbb\uddcd-\uddcf\uddd1-\udddd]|[\u270a\u270b]))(?:\ud83c[\udffb-\udfff])?|(?:\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f|\ud83c\udde6\ud83c[\udde8-\uddec\uddee\uddf1\uddf2\uddf4\uddf6-\uddfa\uddfc\uddfd\uddff]|\ud83c\udde7\ud83c[\udde6\udde7\udde9-\uddef\uddf1-\uddf4\uddf6-\uddf9\uddfb\uddfc\uddfe\uddff]|\ud83c\udde8\ud83c[\udde6\udde8\udde9\uddeb-\uddee\uddf0-\uddf5\uddf7\uddfa-\uddff]|\ud83c\udde9\ud83c[\uddea\uddec\uddef\uddf0\uddf2\uddf4\uddff]|\ud83c\uddea\ud83c[\udde6\udde8\uddea\uddec\udded\uddf7-\uddfa]|\ud83c\uddeb\ud83c[\uddee-\uddf0\uddf2\uddf4\uddf7]|\ud83c\uddec\ud83c[\udde6\udde7\udde9-\uddee\uddf1-\uddf3\uddf5-\uddfa\uddfc\uddfe]|\ud83c\udded\ud83c[\uddf0\uddf2\uddf3\uddf7\uddf9\uddfa]|\ud83c\uddee\ud83c[\udde8-\uddea\uddf1-\uddf4\uddf6-\uddf9]|\ud83c\uddef\ud83c[\uddea\uddf2\uddf4\uddf5]|\ud83c\uddf0\ud83c[\uddea\uddec-\uddee\uddf2\uddf3\uddf5\uddf7\uddfc\uddfe\uddff]|\ud83c\uddf1\ud83c[\udde6-\udde8\uddee\uddf0\uddf7-\uddfb\uddfe]|\ud83c\uddf2\ud83c[\udde6\udde8-\udded\uddf0-\uddff]|\ud83c\uddf3\ud83c[\udde6\udde8\uddea-\uddec\uddee\uddf1\uddf4\uddf5\uddf7\uddfa\uddff]|\ud83c\uddf4\ud83c\uddf2|\ud83c\uddf5\ud83c[\udde6\uddea-\udded\uddf0-\uddf3\uddf7-\uddf9\uddfc\uddfe]|\ud83c\uddf6\ud83c\udde6|\ud83c\uddf7\ud83c[\uddea\uddf4\uddf8\uddfa\uddfc]|\ud83c\uddf8\ud83c[\udde6-\uddea\uddec-\uddf4\uddf7-\uddf9\uddfb\uddfd-\uddff]|\ud83c\uddf9\ud83c[\udde6\udde8\udde9\uddeb-\udded\uddef-\uddf4\uddf7\uddf9\uddfb\uddfc\uddff]|\ud83c\uddfa\ud83c[\udde6\uddec\uddf2\uddf3\uddf8\uddfe\uddff]|\ud83c\uddfb\ud83c[\udde6\udde8\uddea\uddec\uddee\uddf3\uddfa]|\ud83c\uddfc\ud83c[\uddeb\uddf8]|\ud83c\uddfd\ud83c\uddf0|\ud83c\uddfe\ud83c[\uddea\uddf9]|\ud83c\uddff\ud83c[\udde6\uddf2\uddfc]|\ud83c[\udccf\udd8e\udd91-\udd9a\udde6-\uddff\ude01\ude32-\ude36\ude38-\ude3a\ude50\ude51\udf00-\udf20\udf2d-\udf35\udf37-\udf7c\udf7e-\udf84\udf86-\udf93\udfa0-\udfc1\udfc5\udfc6\udfc8\udfc9\udfcf-\udfd3\udfe0-\udff0\udff4\udff8-\udfff]|\ud83d[\udc00-\udc3e\udc40\udc44\udc45\udc51-\udc65\udc6a\udc6f\udc79-\udc7b\udc7d-\udc80\udc84\udc88-\udca9\udcab-\udcfc\udcff-\udd3d\udd4b-\udd4e\udd50-\udd67\udda4\uddfb-\ude44\ude48-\ude4a\ude80-\udea2\udea4-\udeb3\udeb7-\udebf\udec1-\udec5\uded0-\uded2\uded5-\uded7\udeeb\udeec\udef4-\udefc\udfe0-\udfeb]|\ud83e[\udd0d\udd0e\udd10-\udd17\udd1d\udd20-\udd25\udd27-\udd2f\udd3a\udd3c\udd3f-\udd45\udd47-\udd76\udd78\udd7a-\uddb4\uddb7\uddba\uddbc-\uddcb\uddd0\uddde-\uddff\ude70-\ude74\ude78-\ude7a\ude80-\ude86\ude90-\udea8\udeb0-\udeb6\udec0-\udec2\uded0-\uded6]|[\u23e9-\u23ec\u23f0\u23f3\u267e\u26ce\u2705\u2728\u274c\u274e\u2753-\u2755\u2795-\u2797\u27b0\u27bf\ue50a])|\ufe0f/g,UFE0Fg=/\uFE0F/g,U200D=String.fromCharCode(8205),rescaper=/[&<>'"]/g,shouldntBeParsed=/^(?:iframe|noframes|noscript|script|select|style|textarea)$/,fromCharCode=String.fromCharCode;return twemoji;function createText(text,clean){return document.createTextNode(clean?text.replace(UFE0Fg,""):text)}function escapeHTML(s){return s.replace(rescaper,replacer)}function defaultImageSrcGenerator(icon,options){return"".concat(options.base,options.size,"/",icon,options.ext)}function grabAllTextNodes(node,allText){var childNodes=node.childNodes,length=childNodes.length,subnode,nodeType;while(length--){subnode=childNodes[length];nodeType=subnode.nodeType;if(nodeType===3){allText.push(subnode)}else if(nodeType===1&&!("ownerSVGElement"in subnode)&&!shouldntBeParsed.test(subnode.nodeName.toLowerCase())){grabAllTextNodes(subnode,allText)}}return allText}function grabTheRightIcon(rawText){return toCodePoint(rawText.indexOf(U200D)<0?rawText.replace(UFE0Fg,""):rawText)}function parseNode(node,options){var allText=grabAllTextNodes(node,[]),length=allText.length,attrib,attrname,modified,fragment,subnode,text,match,i,index,img,rawText,iconId,src;while(length--){modified=false;fragment=document.createDocumentFragment();subnode=allText[length];text=subnode.nodeValue;i=0;while(match=re.exec(text)){index=match.index;if(index!==i){fragment.appendChild(createText(text.slice(i,index),true))}rawText=match[0];iconId=grabTheRightIcon(rawText);i=index+rawText.length;src=options.callback(iconId,options);if(iconId&&src){img=new Image;img.onerror=options.onerror;img.setAttribute("draggable","false");attrib=options.attributes(rawText,iconId);for(attrname in attrib){if(attrib.hasOwnProperty(attrname)&&attrname.indexOf("on")!==0&&!img.hasAttribute(attrname)){img.setAttribute(attrname,attrib[attrname])}}img.className=options.className;img.alt=rawText;img.src=src;modified=true;fragment.appendChild(img)}if(!img)fragment.appendChild(createText(rawText,false));img=null}if(modified){if(i<text.length){fragment.appendChild(createText(text.slice(i),true))}subnode.parentNode.replaceChild(fragment,subnode)}}return node}function parseString(str,options){return replace(str,function(rawText){var ret=rawText,iconId=grabTheRightIcon(rawText),src=options.callback(iconId,options),attrib,attrname;if(iconId&&src){ret="<img ".concat('class="',options.className,'" ','draggable="false" ','alt="',rawText,'"',' src="',src,'"');attrib=options.attributes(rawText,iconId);for(attrname in attrib){if(attrib.hasOwnProperty(attrname)&&attrname.indexOf("on")!==0&&ret.indexOf(" "+attrname+"=")===-1){ret=ret.concat(" ",attrname,'="',escapeHTML(attrib[attrname]),'"')}}ret=ret.concat("/>")}return ret})}function replacer(m){return escaper[m]}function returnNull(){return null}function toSizeSquaredAsset(value){return typeof value==="number"?value+"x"+value:value}function fromCodePoint(codepoint){var code=typeof codepoint==="string"?parseInt(codepoint,16):codepoint;if(code<65536){return fromCharCode(code)}code-=65536;return fromCharCode(55296+(code>>10),56320+(code&1023))}function parse(what,how){if(!how||typeof how==="function"){how={callback:how}}return(typeof what==="string"?parseString:parseNode)(what,{callback:how.callback||defaultImageSrcGenerator,attributes:typeof how.attributes==="function"?how.attributes:returnNull,base:typeof how.base==="string"?how.base:twemoji.base,ext:how.ext||twemoji.ext,size:how.folder||toSizeSquaredAsset(how.size||twemoji.size),className:how.className||twemoji.className,onerror:how.onerror||twemoji.onerror})}function replace(text,callback){return String(text).replace(re,callback)}function test(text){re.lastIndex=0;var result=re.test(text);re.lastIndex=0;return result}function toCodePoint(unicodeSurrogates,sep){var r=[],c=0,p=0,i=0;while(i<unicodeSurrogates.length){c=unicodeSurrogates.charCodeAt(i++);if(p){r.push((65536+(p-55296<<10)+(c-56320)).toString(16));p=0}else if(55296<=c&&c<=56319){p=c}else{r.push(c.toString(16))}}return r.join(sep||"-")}}(); \ No newline at end of file
+var twemoji=function(){"use strict";var twemoji={base:"https://twemoji.maxcdn.com/v/14.0.2/",ext:".png",size:"72x72",className:"emoji",convert:{fromCodePoint:fromCodePoint,toCodePoint:toCodePoint},onerror:function onerror(){if(this.parentNode){this.parentNode.replaceChild(createText(this.alt,false),this)}},parse:parse,replace:replace,test:test},escaper={"&":"&amp;","<":"&lt;",">":"&gt;","'":"&#39;",'"':"&quot;"},re=/(?:\ud83d\udc68\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffc-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb\udffd-\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb-\udffd\udfff]|\ud83e\uddd1\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb-\udffe]|\ud83d\udc68\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc68\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc68\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffc-\udfff]|\ud83e\uddd1\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb\udffd-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb-\udffd\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d[\udc68\udc69]|\ud83e\udef1\ud83c\udffb\u200d\ud83e\udef2\ud83c[\udffc-\udfff]|\ud83e\udef1\ud83c\udffc\u200d\ud83e\udef2\ud83c[\udffb\udffd-\udfff]|\ud83e\udef1\ud83c\udffd\u200d\ud83e\udef2\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\udef1\ud83c\udffe\u200d\ud83e\udef2\ud83c[\udffb-\udffd\udfff]|\ud83e\udef1\ud83c\udfff\u200d\ud83e\udef2\ud83c[\udffb-\udffe]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d[\udc68\udc69]|\ud83e\uddd1\u200d\ud83e\udd1d\u200d\ud83e\uddd1|\ud83d\udc6b\ud83c[\udffb-\udfff]|\ud83d\udc6c\ud83c[\udffb-\udfff]|\ud83d\udc6d\ud83c[\udffb-\udfff]|\ud83d\udc8f\ud83c[\udffb-\udfff]|\ud83d\udc91\ud83c[\udffb-\udfff]|\ud83e\udd1d\ud83c[\udffb-\udfff]|\ud83d[\udc6b-\udc6d\udc8f\udc91]|\ud83e\udd1d)|(?:\ud83d[\udc68\udc69]|\ud83e\uddd1)(?:\ud83c[\udffb-\udfff])?\u200d(?:\u2695\ufe0f|\u2696\ufe0f|\u2708\ufe0f|\ud83c[\udf3e\udf73\udf7c\udf84\udf93\udfa4\udfa8\udfeb\udfed]|\ud83d[\udcbb\udcbc\udd27\udd2c\ude80\ude92]|\ud83e[\uddaf-\uddb3\uddbc\uddbd])|(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75]|\u26f9)((?:\ud83c[\udffb-\udfff]|\ufe0f)\u200d[\u2640\u2642]\ufe0f)|(?:\ud83c[\udfc3\udfc4\udfca]|\ud83d[\udc6e\udc70\udc71\udc73\udc77\udc81\udc82\udc86\udc87\ude45-\ude47\ude4b\ude4d\ude4e\udea3\udeb4-\udeb6]|\ud83e[\udd26\udd35\udd37-\udd39\udd3d\udd3e\uddb8\uddb9\uddcd-\uddcf\uddd4\uddd6-\udddd])(?:\ud83c[\udffb-\udfff])?\u200d[\u2640\u2642]\ufe0f|(?:\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f|\ud83c\udff3\ufe0f\u200d\ud83c\udf08|\ud83d\ude36\u200d\ud83c\udf2b\ufe0f|\u2764\ufe0f\u200d\ud83d\udd25|\u2764\ufe0f\u200d\ud83e\ude79|\ud83c\udff4\u200d\u2620\ufe0f|\ud83d\udc15\u200d\ud83e\uddba|\ud83d\udc3b\u200d\u2744\ufe0f|\ud83d\udc41\u200d\ud83d\udde8|\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc6f\u200d\u2640\ufe0f|\ud83d\udc6f\u200d\u2642\ufe0f|\ud83d\ude2e\u200d\ud83d\udca8|\ud83d\ude35\u200d\ud83d\udcab|\ud83e\udd3c\u200d\u2640\ufe0f|\ud83e\udd3c\u200d\u2642\ufe0f|\ud83e\uddde\u200d\u2640\ufe0f|\ud83e\uddde\u200d\u2642\ufe0f|\ud83e\udddf\u200d\u2640\ufe0f|\ud83e\udddf\u200d\u2642\ufe0f|\ud83d\udc08\u200d\u2b1b)|[#*0-9]\ufe0f?\u20e3|(?:[©®\u2122\u265f]\ufe0f)|(?:\ud83c[\udc04\udd70\udd71\udd7e\udd7f\ude02\ude1a\ude2f\ude37\udf21\udf24-\udf2c\udf36\udf7d\udf96\udf97\udf99-\udf9b\udf9e\udf9f\udfcd\udfce\udfd4-\udfdf\udff3\udff5\udff7]|\ud83d[\udc3f\udc41\udcfd\udd49\udd4a\udd6f\udd70\udd73\udd76-\udd79\udd87\udd8a-\udd8d\udda5\udda8\uddb1\uddb2\uddbc\uddc2-\uddc4\uddd1-\uddd3\udddc-\uddde\udde1\udde3\udde8\uddef\uddf3\uddfa\udecb\udecd-\udecf\udee0-\udee5\udee9\udef0\udef3]|[\u203c\u2049\u2139\u2194-\u2199\u21a9\u21aa\u231a\u231b\u2328\u23cf\u23ed-\u23ef\u23f1\u23f2\u23f8-\u23fa\u24c2\u25aa\u25ab\u25b6\u25c0\u25fb-\u25fe\u2600-\u2604\u260e\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262a\u262e\u262f\u2638-\u263a\u2640\u2642\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267b\u267f\u2692-\u2697\u2699\u269b\u269c\u26a0\u26a1\u26a7\u26aa\u26ab\u26b0\u26b1\u26bd\u26be\u26c4\u26c5\u26c8\u26cf\u26d1\u26d3\u26d4\u26e9\u26ea\u26f0-\u26f5\u26f8\u26fa\u26fd\u2702\u2708\u2709\u270f\u2712\u2714\u2716\u271d\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u2764\u27a1\u2934\u2935\u2b05-\u2b07\u2b1b\u2b1c\u2b50\u2b55\u3030\u303d\u3297\u3299])(?:\ufe0f|(?!\ufe0e))|(?:(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75\udd90]|[\u261d\u26f7\u26f9\u270c\u270d])(?:\ufe0f|(?!\ufe0e))|(?:\ud83c[\udf85\udfc2-\udfc4\udfc7\udfca]|\ud83d[\udc42\udc43\udc46-\udc50\udc66-\udc69\udc6e\udc70-\udc78\udc7c\udc81-\udc83\udc85-\udc87\udcaa\udd7a\udd95\udd96\ude45-\ude47\ude4b-\ude4f\udea3\udeb4-\udeb6\udec0\udecc]|\ud83e[\udd0c\udd0f\udd18-\udd1c\udd1e\udd1f\udd26\udd30-\udd39\udd3d\udd3e\udd77\uddb5\uddb6\uddb8\uddb9\uddbb\uddcd-\uddcf\uddd1-\udddd\udec3-\udec5\udef0-\udef6]|[\u270a\u270b]))(?:\ud83c[\udffb-\udfff])?|(?:\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f|\ud83c\udde6\ud83c[\udde8-\uddec\uddee\uddf1\uddf2\uddf4\uddf6-\uddfa\uddfc\uddfd\uddff]|\ud83c\udde7\ud83c[\udde6\udde7\udde9-\uddef\uddf1-\uddf4\uddf6-\uddf9\uddfb\uddfc\uddfe\uddff]|\ud83c\udde8\ud83c[\udde6\udde8\udde9\uddeb-\uddee\uddf0-\uddf5\uddf7\uddfa-\uddff]|\ud83c\udde9\ud83c[\uddea\uddec\uddef\uddf0\uddf2\uddf4\uddff]|\ud83c\uddea\ud83c[\udde6\udde8\uddea\uddec\udded\uddf7-\uddfa]|\ud83c\uddeb\ud83c[\uddee-\uddf0\uddf2\uddf4\uddf7]|\ud83c\uddec\ud83c[\udde6\udde7\udde9-\uddee\uddf1-\uddf3\uddf5-\uddfa\uddfc\uddfe]|\ud83c\udded\ud83c[\uddf0\uddf2\uddf3\uddf7\uddf9\uddfa]|\ud83c\uddee\ud83c[\udde8-\uddea\uddf1-\uddf4\uddf6-\uddf9]|\ud83c\uddef\ud83c[\uddea\uddf2\uddf4\uddf5]|\ud83c\uddf0\ud83c[\uddea\uddec-\uddee\uddf2\uddf3\uddf5\uddf7\uddfc\uddfe\uddff]|\ud83c\uddf1\ud83c[\udde6-\udde8\uddee\uddf0\uddf7-\uddfb\uddfe]|\ud83c\uddf2\ud83c[\udde6\udde8-\udded\uddf0-\uddff]|\ud83c\uddf3\ud83c[\udde6\udde8\uddea-\uddec\uddee\uddf1\uddf4\uddf5\uddf7\uddfa\uddff]|\ud83c\uddf4\ud83c\uddf2|\ud83c\uddf5\ud83c[\udde6\uddea-\udded\uddf0-\uddf3\uddf7-\uddf9\uddfc\uddfe]|\ud83c\uddf6\ud83c\udde6|\ud83c\uddf7\ud83c[\uddea\uddf4\uddf8\uddfa\uddfc]|\ud83c\uddf8\ud83c[\udde6-\uddea\uddec-\uddf4\uddf7-\uddf9\uddfb\uddfd-\uddff]|\ud83c\uddf9\ud83c[\udde6\udde8\udde9\uddeb-\udded\uddef-\uddf4\uddf7\uddf9\uddfb\uddfc\uddff]|\ud83c\uddfa\ud83c[\udde6\uddec\uddf2\uddf3\uddf8\uddfe\uddff]|\ud83c\uddfb\ud83c[\udde6\udde8\uddea\uddec\uddee\uddf3\uddfa]|\ud83c\uddfc\ud83c[\uddeb\uddf8]|\ud83c\uddfd\ud83c\uddf0|\ud83c\uddfe\ud83c[\uddea\uddf9]|\ud83c\uddff\ud83c[\udde6\uddf2\uddfc]|\ud83c[\udccf\udd8e\udd91-\udd9a\udde6-\uddff\ude01\ude32-\ude36\ude38-\ude3a\ude50\ude51\udf00-\udf20\udf2d-\udf35\udf37-\udf7c\udf7e-\udf84\udf86-\udf93\udfa0-\udfc1\udfc5\udfc6\udfc8\udfc9\udfcf-\udfd3\udfe0-\udff0\udff4\udff8-\udfff]|\ud83d[\udc00-\udc3e\udc40\udc44\udc45\udc51-\udc65\udc6a\udc6f\udc79-\udc7b\udc7d-\udc80\udc84\udc88-\udc8e\udc90\udc92-\udca9\udcab-\udcfc\udcff-\udd3d\udd4b-\udd4e\udd50-\udd67\udda4\uddfb-\ude44\ude48-\ude4a\ude80-\udea2\udea4-\udeb3\udeb7-\udebf\udec1-\udec5\uded0-\uded2\uded5-\uded7\udedd-\udedf\udeeb\udeec\udef4-\udefc\udfe0-\udfeb\udff0]|\ud83e[\udd0d\udd0e\udd10-\udd17\udd20-\udd25\udd27-\udd2f\udd3a\udd3c\udd3f-\udd45\udd47-\udd76\udd78-\uddb4\uddb7\uddba\uddbc-\uddcc\uddd0\uddde-\uddff\ude70-\ude74\ude78-\ude7c\ude80-\ude86\ude90-\udeac\udeb0-\udeba\udec0-\udec2\uded0-\uded9\udee0-\udee7]|[\u23e9-\u23ec\u23f0\u23f3\u267e\u26ce\u2705\u2728\u274c\u274e\u2753-\u2755\u2795-\u2797\u27b0\u27bf\ue50a])|\ufe0f/g,UFE0Fg=/\uFE0F/g,U200D=String.fromCharCode(8205),rescaper=/[&<>'"]/g,shouldntBeParsed=/^(?:iframe|noframes|noscript|script|select|style|textarea)$/,fromCharCode=String.fromCharCode;return twemoji;function createText(text,clean){return document.createTextNode(clean?text.replace(UFE0Fg,""):text)}function escapeHTML(s){return s.replace(rescaper,replacer)}function defaultImageSrcGenerator(icon,options){return"".concat(options.base,options.size,"/",icon,options.ext)}function grabAllTextNodes(node,allText){var childNodes=node.childNodes,length=childNodes.length,subnode,nodeType;while(length--){subnode=childNodes[length];nodeType=subnode.nodeType;if(nodeType===3){allText.push(subnode)}else if(nodeType===1&&!("ownerSVGElement"in subnode)&&!shouldntBeParsed.test(subnode.nodeName.toLowerCase())){grabAllTextNodes(subnode,allText)}}return allText}function grabTheRightIcon(rawText){return toCodePoint(rawText.indexOf(U200D)<0?rawText.replace(UFE0Fg,""):rawText)}function parseNode(node,options){var allText=grabAllTextNodes(node,[]),length=allText.length,attrib,attrname,modified,fragment,subnode,text,match,i,index,img,rawText,iconId,src;while(length--){modified=false;fragment=document.createDocumentFragment();subnode=allText[length];text=subnode.nodeValue;i=0;while(match=re.exec(text)){index=match.index;if(index!==i){fragment.appendChild(createText(text.slice(i,index),true))}rawText=match[0];iconId=grabTheRightIcon(rawText);i=index+rawText.length;src=options.callback(iconId,options);if(iconId&&src){img=new Image;img.onerror=options.onerror;img.setAttribute("draggable","false");attrib=options.attributes(rawText,iconId);for(attrname in attrib){if(attrib.hasOwnProperty(attrname)&&attrname.indexOf("on")!==0&&!img.hasAttribute(attrname)){img.setAttribute(attrname,attrib[attrname])}}img.className=options.className;img.alt=rawText;img.src=src;modified=true;fragment.appendChild(img)}if(!img)fragment.appendChild(createText(rawText,false));img=null}if(modified){if(i<text.length){fragment.appendChild(createText(text.slice(i),true))}subnode.parentNode.replaceChild(fragment,subnode)}}return node}function parseString(str,options){return replace(str,function(rawText){var ret=rawText,iconId=grabTheRightIcon(rawText),src=options.callback(iconId,options),attrib,attrname;if(iconId&&src){ret="<img ".concat('class="',options.className,'" ','draggable="false" ','alt="',rawText,'"',' src="',src,'"');attrib=options.attributes(rawText,iconId);for(attrname in attrib){if(attrib.hasOwnProperty(attrname)&&attrname.indexOf("on")!==0&&ret.indexOf(" "+attrname+"=")===-1){ret=ret.concat(" ",attrname,'="',escapeHTML(attrib[attrname]),'"')}}ret=ret.concat("/>")}return ret})}function replacer(m){return escaper[m]}function returnNull(){return null}function toSizeSquaredAsset(value){return typeof value==="number"?value+"x"+value:value}function fromCodePoint(codepoint){var code=typeof codepoint==="string"?parseInt(codepoint,16):codepoint;if(code<65536){return fromCharCode(code)}code-=65536;return fromCharCode(55296+(code>>10),56320+(code&1023))}function parse(what,how){if(!how||typeof how==="function"){how={callback:how}}return(typeof what==="string"?parseString:parseNode)(what,{callback:how.callback||defaultImageSrcGenerator,attributes:typeof how.attributes==="function"?how.attributes:returnNull,base:typeof how.base==="string"?how.base:twemoji.base,ext:how.ext||twemoji.ext,size:how.folder||toSizeSquaredAsset(how.size||twemoji.size),className:how.className||twemoji.className,onerror:how.onerror||twemoji.onerror})}function replace(text,callback){return String(text).replace(re,callback)}function test(text){re.lastIndex=0;var result=re.test(text);re.lastIndex=0;return result}function toCodePoint(unicodeSurrogates,sep){var r=[],c=0,p=0,i=0;while(i<unicodeSurrogates.length){c=unicodeSurrogates.charCodeAt(i++);if(p){r.push((65536+(p-55296<<10)+(c-56320)).toString(16));p=0}else if(55296<=c&&c<=56319){p=c}else{r.push(c.toString(16))}}return r.join(sep||"-")}}(); \ No newline at end of file
diff --git a/assets/lib/typeit/index.umd.js b/assets/lib/typeit/index.umd.js
new file mode 100644
index 00000000..be9e80c2
--- /dev/null
+++ b/assets/lib/typeit/index.umd.js
@@ -0,0 +1,2 @@
+// TypeIt by Alex MacArthur - https://typeitjs.com
+(function(E,w){typeof exports=="object"&&typeof module<"u"?module.exports=w():typeof define=="function"&&define.amd?define(w):(E=typeof globalThis<"u"?globalThis:E||self,E.TypeIt=w())})(this,function(){"use strict";var E=e=>Array.isArray(e),w=e=>E(e)?e:[e];let se=function(e){let r=function(c){return w(c).forEach(g=>m.set(Symbol(g.char?.innerText),{...g})),this},l=()=>f().filter(c=>c.typeable),s=function(c,g){let O=[...m.keys()];m.set(O[c],g)},o=function(){m.forEach(c=>delete c.done)},d=function(){m=new Map,r(e)},T=()=>m,f=()=>Array.from(m.values()),p=c=>m.delete(c),b=(c=!1)=>c?f():f().filter(g=>!g.done),x=(c,g=!1)=>g?m.delete(c):m.get(c).done=!0,m=new Map;return r(e),{add:r,set:s,wipe:d,reset:o,destroy:p,done:x,getItems:b,getQueue:T,getTypeable:l}};var W=e=>Array.from(e),R=e=>document.createTextNode(e);let B=e=>([...e.childNodes].forEach(r=>{if(r.nodeValue){[...r.nodeValue].forEach(l=>{r.parentNode.insertBefore(R(l),r)}),r.remove();return}B(r)}),e);var J=e=>{let r=document.implementation.createHTMLDocument();return r.body.innerHTML=e,B(r.body)};const K="data-typeit-id",k="ti-cursor",oe="END",ae={started:!1,completed:!1,frozen:!1,destroyed:!1},ue={breakLines:!0,cursor:!0,cursorChar:"|",cursorSpeed:1e3,deleteSpeed:null,html:!0,lifeLike:!0,loop:!1,loopDelay:750,nextStringDelay:750,speed:100,startDelay:250,startDelete:!1,strings:[],waitUntilVisible:!1,beforeString:()=>{},afterString:()=>{},beforeStep:()=>{},afterStep:()=>{},afterComplete:()=>{}},de=`[${K}]:before {content: '.'; display: inline-block; width: 0; visibility: hidden;}`;function X(e,r=!1){let l=document.createTreeWalker(e,NodeFilter.SHOW_ALL,{acceptNode:d=>d.classList?.contains(k)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}),s,o=[];for(;s=l.nextNode();)s.originalParent=s.parentNode,o.push(s);return r?o.reverse():o}function fe(e){return X(J(e))}function ce(e,r=!0){return r?fe(e):W(e).map(R)}var P=e=>document.createElement(e),Y=(e,r="")=>{let l=P("style");l.id=r,l.appendChild(R(e)),document.head.appendChild(l)},G=e=>(E(e)||(e=[e/2,e/2]),e),Z=(e,r)=>Math.abs(Math.random()*(e+r-(e-r))+(e-r));let ee=e=>e/2;function ye(e){let{speed:r,deleteSpeed:l,lifeLike:s}=e;return l=l!==null?l:r/3,s?[Z(r,ee(r)),Z(l,ee(l))]:[r,l]}var pe=e=>(e.forEach(clearTimeout),[]),he=()=>Math.random().toString().substring(2,9),Q=e=>"value"in e;let me=e=>Q(e)?W(e.value):X(e,!0).filter(r=>!(r.childNodes.length>0));var be=(e,r)=>{new IntersectionObserver((s,o)=>{s.forEach(d=>{d.isIntersecting&&(r(),o.unobserve(e))})},{threshold:1}).observe(e)};let C=e=>typeof e=="function"?e():e;var te=e=>Number.isInteger(e);let z=(e,r=document,l=!1)=>r[`querySelector${l?"All":""}`](e),ge=e=>e?.tagName==="BODY",Se=(e,r)=>{if(Q(e)){e.value=`${e.value}${r.textContent}`;return}r.innerHTML="";let l=ge(r.originalParent)?e:r.originalParent||e;l.insertBefore(r,z("."+k,l)||null)},Te=(e,r,l)=>Math.min(Math.max(r+e,0),l.length);var D=(e,r)=>Object.assign({},e,r),F=e=>{if(!e)return;let r=e.parentNode;(r.childNodes.length>1?e:r).remove()},ve=(e,r,l)=>{let s=r[l-1],o=z(`.${k}`,e);e=s?.parentNode||e,e.insertBefore(o,s||null)};function _e(e){return typeof e=="string"?z(e):e}var Ee=e=>/<(.+)>(.*?)<\/(.+)>/.test(e.outerHTML);let we=async(e,r,l)=>new Promise(s=>{let o=async()=>{await e(),s()};l.push(setTimeout(o,r||0))}),Ce={"font-family":"","font-weight":"","font-size":"","font-style":"","line-height":"",color:"","margin-left":"-.125em","margin-right":".125em"},Ne=(e,r,l)=>{let o=`${`[${K}='${e}']`} .${k}`,d=getComputedStyle(l),T=Object.entries(Ce).reduce((f,[p,b])=>`${f} ${p}: var(--ti-cursor-${p}, ${b||d[p]});`,"");Y(`@keyframes blink-${e} { 0% {opacity: 0} 49% {opacity: 0} 50% {opacity: 1} } ${o} { display: inline; letter-spacing: -1em; ${T} animation: blink-${e} ${r.cursorSpeed/1e3}s infinite; } ${o}.with-delay { animation-delay: 500ms; } ${o}.disabled { animation: none; }`,e)};var U=(e,r)=>new Array(r).fill(e);const re=({queueItems:e,selector:r,cursorPosition:l,to:s})=>{if(te(r))return r*-1;let o=new RegExp(oe,"i").test(s),d=r?[...e].reverse().findIndex(({char:f})=>{let p=f.parentElement,b=p.matches(r);return o&&b?!0:b&&p.firstChild.isSameNode(f)}):-1;d<0&&(d=o?0:e.length-1);let T=o?0:1;return d-l+T};let Ie=async(e,r)=>{let l=async()=>e.func?.call(globalThis);e.delay?await r(async()=>{await l()},e.delay):await l()};return function(e,r={}){let l=async(t,n,a=!1)=>{S.frozen&&await new Promise(u=>{this.unfreeze=()=>{S.frozen=!1,u()}}),a||await i.beforeStep(this),await we(t,n,q),a||await i.afterStep(this)},s=()=>Q(y),o=(t=0)=>ye(i)[t],d=()=>me(y),T=(t={})=>{let n=t.delay;n&&h.add({delay:n})},f=(t,n)=>(h.add(t),T(n),this),p=()=>le??N,b=(t={})=>[{func:()=>A(t)},{func:()=>A(i)}],x=t=>{let n=i.nextStringDelay;h.add([{delay:n[0]},...t,{delay:n[1]}])},m=()=>{if(s())return;let t=P("span");return t.className=k,j?(t.innerHTML=J(i.cursorChar).innerHTML,t):(t.style.visibility="hidden",t)},c=async()=>{!s()&&v&&y.appendChild(v),j&&Ne(ie,i,y)},g=t=>{j&&v&&(v.classList.toggle("disabled",t),v.classList.toggle("with-delay",!t))},O=()=>{let t=i.strings.filter(n=>!!n);t.forEach((n,a)=>{if(this.type(n),a+1===t.length)return;let u=i.breakLines?[{func:()=>V(P("BR")),typeable:!0}]:U({func:$,delay:o(1)},h.getTypeable().length);x(u)})},Le=async t=>{let n=p();n&&await ne({value:n});for(let a of d())await l($,o(1));h.reset(),h.set(0,{delay:t})},ke=t=>{let n=y.innerHTML;return n?(y.innerHTML="",i.startDelete?(y.innerHTML=n,B(y),x([{func:$}]),t):n.replace(/<!--(.+?)-->/g,"").trim().split(/<br(?:\s*?)(?:\/)?>/).concat(t)):t},M=async(t=!0)=>{S.started=!0;try{for(let[a,u]of h.getQueue())u.done||(u.typeable&&!S.frozen&&g(!0),(!u.deletable||u.deletable&&d().length)&&await Ie(u,l),g(!1),h.done(a,!t));if(!t)return this;if(S.completed=!0,await i.afterComplete(this),!i.loop)throw"";let n=i.loopDelay;l(async()=>{await Le(n[0]),M()},n[1])}catch{}return this},ne=async t=>{N=Te(t,N,d()),ve(y,d(),N)},V=t=>Se(y,t),A=async t=>i=D(i,t),Pe=async()=>{if(s()){y.value="";return}d().forEach(F)},$=()=>{let t=d();!t.length||(s()?y.value=y.value.slice(0,-1):F(t[N]))};this.break=function(t){return f({func:()=>V(P("BR")),typeable:!0},t)},this.delete=function(t=null,n={}){t=C(t);let a=b(n),u=t,{instant:H,to:_}=n,I=h.getTypeable(),L=(()=>u===null?I.length:te(u)?u:re({queueItems:I,selector:u,cursorPosition:p(),to:_}))();return f([a[0],...U({func:$,delay:H?0:o(1),deletable:!0},L),a[1]],n)},this.empty=function(t={}){return f({func:Pe},t)},this.exec=function(t,n={}){let a=b(n);return f([a[0],{func:()=>t(this)},a[1]],n)},this.move=function(t,n={}){t=C(t);let a=b(n),{instant:u,to:H}=n,_=re({queueItems:h.getTypeable(),selector:t===null?"":t,to:H,cursorPosition:p()}),I=_<0?-1:1;return le=p()+_,f([a[0],...U({func:()=>ne(I),delay:u?0:o()},Math.abs(_)),a[1]],n)},this.options=function(t,n={}){return t=C(t),A(t),f({},n)},this.pause=function(t,n={}){return f({delay:C(t)},n)},this.type=function(t,n={}){t=C(t);let{instant:a}=n,u=b(n),_=ce(t,i.html).map(L=>({func:()=>V(L),char:L,delay:a||Ee(L)?0:o(),typeable:L.nodeType===Node.TEXT_NODE})),I=[u[0],{func:async()=>await i.beforeString(t,this)},..._,{func:async()=>await i.afterString(t,this)},u[1]];return f(I,n)},this.is=function(t){return S[t]},this.destroy=function(t=!0){q=pe(q),C(t)&&v&&F(v),S.destroyed=!0},this.freeze=function(){S.frozen=!0},this.unfreeze=()=>{},this.reset=function(t){!this.is("destroyed")&&this.destroy(),t?(h.wipe(),t(this)):h.reset(),N=0;for(let n in S)S[n]=!1;return y[s()?"value":"innerHTML"]="",this},this.go=function(){return S.started?this:(c(),i.waitUntilVisible?(be(y,M.bind(this)),this):(M(),this))},this.flush=function(t=()=>{}){return c(),M(!1).then(t),this},this.getQueue=()=>h,this.getOptions=()=>i,this.updateOptions=t=>A(t),this.getElement=()=>y;let y=_e(e),q=[],N=0,le=null,S=D({},ae),i=D(ue,r);i=D(i,{html:!s()&&i.html,nextStringDelay:G(i.nextStringDelay),loopDelay:G(i.loopDelay)});let ie=he(),h=se([{func:()=>{},delay:i.startDelay}]);y.dataset.typeitId=ie,Y(de);let j=i.cursor&&!s(),v=m();i.strings=ke(w(i.strings)),i.strings.length&&O()}}); \ No newline at end of file
diff --git a/assets/lib/typeit/typeit.min.js b/assets/lib/typeit/typeit.min.js
deleted file mode 100644
index 7d247723..00000000
--- a/assets/lib/typeit/typeit.min.js
+++ /dev/null
@@ -1,8 +0,0 @@
-/**
- * TypeIt - The most versatile animated typing utility on the planet.
- * Author: Alex MacArthur <alex@macarthur.me> (https://macarthur.me)
- * Version: v7.0.4
- * License: GPL-2.0
- * URL: https://typeitjs.com
- */
-!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(n=n||self).TypeIt=t()}(this,(function(){"use strict";function n(t){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n})(t)}var t={strings:[],speed:100,cursor:!0,cursorChar:"|",cursorSpeed:1e3,deleteSpeed:null,lifeLike:!0,breakLines:!0,startDelay:250,startDelete:!1,nextStringDelay:750,loop:!1,loopDelay:750,html:!0,waitUntilVisible:!1,beforeString:function(){},afterString:function(){},beforeStep:function(){},afterStep:function(){},afterComplete:function(){}},e=function(n){return n.map((function(n){return void 0===n[1]&&n.push(null),void 0===n[2]&&n.push({}),n}))},r=function(n,t){return Object.assign({},n,t)},i=function(n){return Array.isArray(n)},o=function(n,t){return n[2]=r(n[2],t)||t,n},u=function(n,t){return i(n[0])?n.map((function(n){return o(n,t)})):o(n,t)},c=function(n,t,e,r){r=r||!1,e=e||{};var o=!i(n),c=n.length;return(n=o?new Array(n).fill(0):n).map((function(n,i){if(o)return t;var a=[t,n,e];return r&&(0===i&&(a=u(a,{isFirst:!0})),i+1===c&&(a=u(a,{isLast:!0}))),a}))};function a(n){this.insert=function(n,e){t.splice(n,0,e)},this.add=function(n,u,a){return n=i(n)?n:[n,null],a=a||!1,u=u||1,i(n[0])||(n=c(u,n)),n=e(n).map((function(n){return n[2]=r(n[2],{id:o}),o++,n})),t=a?n.concat(t):t.concat(n),this},this.set=function(n,e){t[n]=e},this.reset=function(){t=t.map((function(n){return n[2].executed=!1,n}))},this.getItems=function(){return(t=e(t)).filter((function(n){return!n[2].executed}))},this.setMeta=function(n,e){var i=t.findIndex((function(t){return t[2].id===n}));t[i][2]=r(t[i][2],e)};var t=[],o=0;this.add(n)}var f=function(n){return Array.from(n)},s=function(n){var t=[];return t.concat.apply(t,n)},l=function(n){var t=document.implementation.createHTMLDocument("");return t.body.innerHTML=n,t.body},d=function n(t,e,r){e=e||null,r=void 0!==r&&r;var i=f(t.childNodes).map((function(t){return 3===(e=t).nodeType||"BR"===e.tagName?t:n(t);var e}));return i=s(i),e&&(i=i.filter((function(n){return!e.contains(n)}))),r?i.reverse():i},p=function(n){return"BODY"===n.tagName},h=function(n,t){t=t||null;var e=n instanceof HTMLElement;return{node:t,isTopLevelText:(!t||p(t.parentNode))&&!e,isHTMLElement:e,content:n}};function v(n){var t,e=l(n);return t=d(e).map((function(n){return n.nodeValue?f(n.nodeValue).map((function(t){return h(t,n)})):h(n)})),s(t)}function y(n,t){return(t=void 0===t||t)?v(n):f(n).map((function(n){return h(n)}))}var m=function(n){return document.createElement(n)},g=function(n,t){var e=m("style");e.id=t||"",e.appendChild(document.createTextNode(n)),document.head.appendChild(e)},b=function(n){return i(n)||(n=[n/2,n/2]),{before:n[0],after:n[1],total:n[0]+n[1]}},S=function(n,t){return Math.abs(Math.random()*(n+t-(n-t))+(n-t))};var N=function(n){return["textarea","input"].indexOf(n.tagName.toLowerCase())>-1},T=function(n,t){var e=t.querySelectorAll("*");return[t].concat(f(e).reverse()).find((function(t){return t.cloneNode().outerHTML===n.outerHTML}))},L=function(n,t,e,r){e=e||null;var i=t.isHTMLElement,o=i?t.content:document.createTextNode(t.content);if(N(n))n.value="".concat(n.value).concat(t.content);else{if(!t.isTopLevelText&&!i){var u=t.node.parentNode,c=T(u.cloneNode(),n);if(function(n,t){if(!n)return!1;var e=n.nextSibling;return!e||e.isEqualNode(t)}(c,e))n=c;else if((o=u.cloneNode()).innerText=t.content,!p(u.parentNode)){for(var a=u.parentNode,f=a.cloneNode(),s=T(f,n);!s&&!p(a);)f.innerHTML=o.outerHTML,o=f,f=a.parentNode.cloneNode(),a=a.parentNode,s=T(f,n);n=s||n}}var l=d(n,e,!0)[r-1],h=l?l.parentNode:n;h.insertBefore(o,h.contains(e)?e:null)}},M=function(n){var t;return null==n||null===(t=n.parentNode)||void 0===t?void 0:t.removeChild(n)};var x=function(n,t,e){var r,i="string"==typeof n,o=!1,u=-1*n;return i&&(u=(r="END"===n.toUpperCase())?-1:1,o=r?t+u>0:t+u<e.length),{isString:i,numberOfSteps:u,canKeepMoving:o}},w=function(n){var t,e=["font","lineHeight","color"],r=m("SPAN"),i=(t=n,window.getComputedStyle(t,null));for(var o in i)e.indexOf(o)>-1&&i[o]&&(r.style[o]=i[o]);return r.style.cssText};function D(n,t,e){return e?t?t(n):n:(n&&n.then||(n=Promise.resolve(n)),t?n.then(t):n)}function H(n){return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];try{return Promise.resolve(n.apply(this,t))}catch(n){return Promise.reject(n)}}}function E(){}function C(n,t){if(!t)return n&&n.then?n.then(E):Promise.resolve()}function A(n,t){var e=n();return e&&e.then?e.then(t):t(e)}function k(n,t,e){if(!n.s){if(e instanceof O){if(!e.s)return void(e.o=k.bind(null,n,t));1&t&&(t=e.s),e=e.v}if(e&&e.then)return void e.then(k.bind(null,n,t),k.bind(null,n,2));n.s=t,n.v=e;var r=n.o;r&&r(n)}}var O=function(){function n(){}return n.prototype.then=function(t,e){var r=new n,i=this.s;if(i){var o=1&i?t:e;if(o){try{k(r,1,o(this.v))}catch(n){k(r,2,n)}return r}return this}return this.o=function(n){try{var i=n.v;1&n.s?k(r,1,t?t(i):i):e?k(r,1,e(i)):k(r,2,i)}catch(n){k(r,2,n)}},r},n}();function P(n,t){return n&&n.then?n.then(t):t(n)}return function(e,o){var u=this,s=this;o=o||{};var p=function(n,t,e){return n=i(n[0])?n:[n],an.add(n,t),function(n){var t=(n=n||{}).delay;t&&an.add([U,t])}(e),s},T=function(t){return t="object"===n(t)?t:{},[[Q,t,{force:!0}],[Q,en,{force:!0}]]},z=function(){return X?f(W.value):d(W,fn,!0)},B=function(n,t){t=t||1;var e=en.nextStringDelay;an.insert(n,[U,e.before]),an.insert(n+t+1,[U,e.after])},I=H((function(){if(fn){var n="[data-typeit-id='".concat(cn,"'] .ti-cursor");g("@keyframes blink-".concat(cn," { 0% {opacity: 0} 49% {opacity: 0} 50% {opacity: 1} } ").concat(n," { animation: blink-").concat(cn," ").concat(en.cursorSpeed/1e3,"s infinite; } ").concat(n,".with-delay { animation-delay: 500ms; } ").concat(n,".disabled { animation: none; }"),cn),W.appendChild(fn);var t="loaded"===document.fonts.status;return D(t||document.fonts.ready,(function(n){var t=fn.getBoundingClientRect().width/2;fn.style.margin="0 -".concat(t+2,"px 0 -").concat(t-2,"px")}),t)}})),R=function(n){fn&&(fn.classList.toggle("disabled",n),fn.classList.toggle("with-delay",!n))},q=H((function(n,t){return $.push(setTimeout(n,t)),D()})),j=H((function(n){var t=_;return D(t&&F(_),(function(t){return an.reset(),an.set(0,[U,n.before]),C(G(!0))}),!t)})),V=H((function(){tn.started=!0;var n,t=an.getItems();return P(function(n,t){try{var e=n()}catch(n){return t(n)}return e&&e.then?e.then(void 0,t):e}((function(){return P(function(n,t,e){var r,i,o=-1;return function u(c){try{for(;++o<n.length&&(!e||!e());)if((c=t(o))&&c.then){if(!((a=c)instanceof O&&1&a.s))return void c.then(u,i||(i=k.bind(null,r=new O,2)));c=c.v}r?k(r,1,c):r=c}catch(n){k(r||(r=new O),2,n)}var a}(),r}(t,(function(e){if(tn.frozen||tn.destroyed)throw"";var r,i,o,c,a=t[e],f=a[2];return n=[a,u],f.freezeCursor&&R(!0),r=en.speed,i=en.deleteSpeed,o=en.lifeLike,c=(i=null!==i?i:r/3)/2,Z=o?[S(r,r/2),S(i,c)]:[r,i],A((function(){var t;if(null==f?void 0:f.isFirst)return C((t=en).beforeString.apply(t,n))}),(function(){var t;return D((t=en).beforeStep.apply(t,n),(function(){return D(a[0].call(u,a[1],f),(function(){return A((function(){var t,e;if(null===(t=a[2])||void 0===t?void 0:t.isLast)return C((e=en).afterString.apply(e,n))}),(function(){var t;return D((t=en).afterStep.apply(t,n),(function(){an.setMeta(f.id,{executed:!0}),R(!1)}))}))}))}))}))}),(function(){return!1})),(function(t){var e;return tn.completed=!0,D((e=en).afterComplete.apply(e,n),(function(){if(!en.loop)throw"";var n=en.loopDelay;q((function(){return D(j(n),(function(){V()}))}),n.after)}))}))}),E),(function(n){return u}))})),U=function(n){return new Promise((function(t){q((function(){return t()}),n||0)}))},F=function n(t){var e=z(),r=x(t,_,e);return _+=r.numberOfSteps,new Promise((function(t){q(H((function(){return function(n,t,e,r){if(e){var i=r,o=t[(i=i>t.length?t.length:i)-1];(n=o?o.parentNode:n).insertBefore(e,o||null)}}(W,z(),fn,_),A((function(){if(r.isString&&r.canKeepMoving)return C(n(r.numberOfSteps>0?"START":"END"))}),(function(){return t()}))})),Z[0])}))},K=function(n){return new Promise((function(t){q((function(){return L(W,n,fn,_),t()}),Z[0])}))},Q=H((function(n){en=r(en,n)})),Y=H((function(){X?W.value="":z().forEach((function(n){M(n)}))})),G=function n(t){return t=!0===t,new Promise((function(e){q(H((function(){var r=!1,i=z();return i.length&&(X?W.value=W.value.slice(0,-1):M(i[_])),f(W.querySelectorAll("*")).forEach((function(n){if(!n.innerHTML&&"BR"!==n.tagName){for(var t=n;1===t.parentNode.childNodes.length&&t.parentNode.childNodes[0].isEqualNode(t);)t=t.parentNode;M(t)}})),A((function(){if(t&&i.length-1>0)return D(n(!0),(function(){return r=!0,e()}))}),(function(n){return r?n:e()}))})),Z[1])}))};this.break=function(n){return p([K,h(m("BR"))],1,n)},this.delete=function(n,t){var e=T(t);return p([e[0]].concat([].concat(Array(Math.abs(n)||1)).fill().map((function(){return[G,!n,nn]})),[e[1]]),1,t)},this.empty=function(){return p(Y,1,arguments)},this.exec=function(n,t){var e=T(t);return p([e[0],[n,null],e[1]],1,t)},this.move=function(n,t){var e=x(n,_,z()),r=T(t),i=e.isString?n:Math.sign(n);return p([r[0]].concat([].concat(Array(Math.abs(n)||1)).fill().map((function(){return[F,i,nn]})),[r[1]]),1,t)},this.options=function(n){return p([Q,n],1,n)},this.pause=function(n,t){return p([U,n],1,t)},this.type=function(n,t){var e=T(t),r=y(n,en.html),i=[e[0]].concat(c(r,K,nn,!0),[e[1]]);return p(i,1,t)},this.is=function(n){return tn[n]},this.destroy=function(n){n=void 0===n||n,$.forEach((function(n){clearTimeout(n)})),$=[],n&&M(fn),tn.destroyed=!0},this.freeze=function(){tn.frozen=!0},this.unfreeze=function(){tn.frozen=!1,V()},this.reset=function(){for(var n in!this.is("destroyed")&&this.destroy(),an.reset(),_=0,tn)tn[n]=!1;return X?W.value="":W.innerHTML="",this},this.go=function(){return tn.started?this:(I(),en.waitUntilVisible?(function(n,t){new IntersectionObserver((function(e,r){e.forEach((function(e){e.isIntersecting&&(t(),r.unobserve(n))}))}),{threshold:1}).observe(n)}(W,V.bind(this)),this):(V(),this))},this.getQueue=function(){return an},this.getOptions=function(){return en},this.getElement=function(){return W};var J,W="string"==typeof(J=e)?document.querySelector(J):J,X=N(W),Z=[],$=[],_=0,nn={freezeCursor:!0},tn={started:!1,completed:!1,frozen:!1,destroyed:!1},en=r(t,o);en=r(en,{html:!X&&en.html,nextStringDelay:b(en.nextStringDelay),loopDelay:b(en.loopDelay)});var rn,on,un,cn=Math.random().toString().substring(2,9),an=new a([U,en.startDelay]);W.setAttribute("data-typeit-id",cn),g("[data-typeit-id]:before {content: '.'; display: inline-block; width: 0; visibility: hidden;}[data-typeit-id]"),en.strings=(un=en.strings,rn=i(un)?un:[un],(on=function(n){return n.innerHTML.replace(/<\!--.*?-->/g,"").trim()}(W))?(W.innerHTML="",en.startDelete?(v(on).forEach((function(n){L(W,n,fn,_)})),an.add([G,!0]),B(1),rn):[on.trim()].concat(rn)):rn);var fn=function(){if(X||!en.cursor)return null;var n=m("span");return n.innerHTML=l(en.cursorChar).innerHTML,n.className="ti-cursor",n.style.cssText="display:inline;".concat(w(W)),n}();en.strings.length&&function(){var n=en.strings.filter((function(n){return!!n}));n.forEach((function(t,e){var r=y(t,en.html);an.add(c(r,K,nn,!0));var i=an.getItems().length;if(e+1!==n.length){if(en.breakLines){var o=h(m("BR"));return an.add([K,o,nn]),void B(i)}an.add(c(r,G,nn)),B(i,t.length)}}))}()}}));
diff --git a/assets/lib/valine/Valine.min.js b/assets/lib/valine/Valine.min.js
index aebb9620..a9d3a3c2 100755
--- a/assets/lib/valine/Valine.min.js
+++ b/assets/lib/valine/Valine.min.js
@@ -1,26 +1,17 @@
/*!
- * Valine v1.4.14
- * (c) 2017-2020 xCss
+ * Valine v1.4.18
+ * (c) 2017-2022 xCss
* Released under the GPL-2.0 License.
- * Last Update: 2020/4/26 下午8:39:08
+ * Last Update: 2022-3-21 11:52:27 ├F10: AM┤
*/
-!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.Valine=t():e.Valine=t()}(this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=63)}([function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i=n(38),a=r(i),s=n(28),l=r(s),c=n(27),u=r(c),d=n(42),p=r(d),f=document,h=navigator,v=/[&<>"'`\\]/g,g=RegExp(v.source),m=/&(?:amp|lt|gt|quot|#39|#x60|#x5c);/g,y=RegExp(m.source),b={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","`":"&#x60;","\\":"&#x5c;"},w={};for(var x in b)w[b[x]]=x;var k=null;Array.prototype.forEach||(Array.prototype.forEach=function(e,t){var n,r;if(null==this)throw new TypeError(" this is null or not defined");var o=Object(this),i=o.length>>>0;if("function"!=typeof e)throw new TypeError(e+" is not a function");for(arguments.length>1&&(n=t),r=0;r<i;){var a;r in o&&(a=o[r],e.call(n,a,r,o)),r++}}),window.NodeList&&!NodeList.prototype.forEach&&(NodeList.prototype.forEach=Array.prototype.forEach),String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")}),(0,a.default)(l.default.fn,{prepend:function(e){return e instanceof HTMLElement||(e=e[0]),this.forEach(function(t){t.insertAdjacentElement("afterBegin",e)}),this},append:function(e){return e instanceof HTMLElement||(e=e[0]),this.forEach(function(t){t.insertAdjacentElement("beforeEnd",e)}),this},remove:function(){return this.forEach(function(e){try{e.parentNode.removeChild(e)}catch(e){}}),this},find:function(e){return(0,l.default)(e,this)},show:function(){return this.forEach(function(e){e.style.display="block"}),this},hide:function(){return this.forEach(function(e){e.style.display="none"}),this},on:function(e,t,n){return l.default.fn.off(e,t,n),this.forEach(function(r){e.split(" ").forEach(function(e){r.addEventListener?r.addEventListener(e,t,n||!1):r.attachEvent?r.attachEvent("on"+e,t):r["on"+e]=t})}),this},off:function(e,t,n){return this.forEach(function(r){e.split(" ").forEach(function(e){r.removeEventListener?r.removeEventListener(e,t,n||!1):r.detachEvent?r.detachEvent("on"+e,t):r["on"+e]=null})}),this},html:function(e){return void 0!==e?(this.forEach(function(t){t.innerHTML=e}),this):this[0].innerHTML},text:function(e){return void 0!==e?(this.forEach(function(t){t.innerText=e}),this):this[0].innerText},empty:function(e){return e=e||0,this.forEach(function(t){setTimeout(function(e){t.innerText=""},e)}),this},val:function(e){return void 0!==e?(this.forEach(function(t){t.value=e}),this):this[0].value||""},attr:function(){var e=arguments;if("object"==o(arguments[0])){var t=arguments[0],n=this;return Object.keys(t).forEach(function(e){n.forEach(function(n){n.setAttribute(e,t[e])})}),this}return"string"==typeof arguments[0]&&arguments.length<2?this[0].getAttribute(arguments[0])||"":(this.forEach(function(t){t.setAttribute(e[0],e[1])}),this)},removeAttr:function(e){return this.forEach(function(t){var n,r=0,o=e&&e.match(/[^\x20\t\r\n\f\*\/\\]+/g);if(o&&1===t.nodeType)for(;n=o[r++];)t.removeAttribute(n)}),this},hasClass:function(e){return!!this[0]&&new RegExp("(\\s|^)"+e+"(\\s|$)").test(this[0].getAttribute("class"))},addClass:function(e){return this.forEach(function(t){var n=(0,l.default)(t),r=n.attr("class");n.hasClass(e)||n.attr("class",r+=" "+e)}),this},removeClass:function(e){return this.forEach(function(t){var n=(0,l.default)(t),r=n.attr("class");if(n.hasClass(e)){var o=new RegExp("(\\s|^)"+e+"(\\s|$)");n.attr("class",r.replace(o,""))}}),this}}),(0,a.default)(l.default,{extend:a.default,noop:function(){},navi:h,ua:h.userAgent,lang:h.language||h.languages[0],detect:u.default,store:p.default,escape:function(e){return e&&g.test(e)?e.replace(v,function(e){return b[e]}):e},unescape:function(e){return e&&y.test(e)?e.replace(m,function(e){return w[e]}):e},dynamicLoadSource:function(e,t){if((0,l.default)('script[src="'+e+'"]').length)t&&t();else{var n=f.createElement("script");n.onload=n.onreadystatechange=function(){var e=this;e.onload=e.onreadystatechange=null,t&&t(),(0,l.default)(n).remove()},n.async=!0,n.setAttribute("referrerPolicy","no-referrer");(0,l.default)("head")[0].appendChild(n),n.src=e}},sdkLoader:function(e,t,n){t in window&&window[t]?(k&&clearTimeout(k),n&&n()):l.default.dynamicLoadSource(e,function(){k=setTimeout(l.default.sdkLoader(e,t,n),100)})},deleteInWin:function(e,t){var n=function(t){if(e in window)try{delete window[e]}catch(t){window[e]=null}};0===t?n():setTimeout(n,t||500)},ajax:function(e){e=e||{},e.type=(e.type||"GET").toUpperCase(),e.dataType=e.dataType||"json",e.async=e.async||!0,e.timeout=e.timeout||8e3;var t="[object FormData]"=={}.toString.call(e.data)?e.data:function(e){var t=[];for(var n in e)t.push(encodeURIComponent(n)+"="+encodeURIComponent(e[n]));return t.push("t="+Date.now()),t.join("&")}(e.data),n=null,r="XMLHttpRequest"in window?new XMLHttpRequest:new ActiveXObject("Microsoft.XMLHTTP");r.onreadystatechange=function(t){if(4==r.readyState){clearTimeout(n);var o=r.status;o>=200&&o<300?e.success&&e.success(JSON.parse(r.responseText)):e.fail&&e.fail(o)}},"GET"==e.type?(r.open("GET",e.url+"?"+t,e.async),r.send(null)):"POST"==e.type&&(r.open("POST",e.url,e.async),void 0==e.contentType||null==e.contentType?r.send(t):(r.setRequestHeader("Content-Type",e.contentType),r.send(JSON.stringify(e.data)))),n=setTimeout(function(e){clearTimeout(n),r.abort()},e.timeout)}}),t.default=l.default},function(e,t,n){"use strict";var r=TypeError,o=Object.getOwnPropertyDescriptor;if(o)try{o({},"")}catch(e){o=null}var i,a,s=function(){throw new r},l=o?function(){try{return arguments.callee,s}catch(e){try{return o(arguments,"callee").get}catch(e){return s}}}():s,c=n(47)(),u=Object.getPrototypeOf||function(e){return e.__proto__},d=i?u(i):void 0,p=a?u(a):void 0,f=a?a():void 0,h="undefined"==typeof Uint8Array?void 0:u(Uint8Array),v={"%Array%":Array,"%ArrayBuffer%":"undefined"==typeof ArrayBuffer?void 0:ArrayBuffer,"%ArrayBufferPrototype%":"undefined"==typeof ArrayBuffer?void 0:ArrayBuffer.prototype,"%ArrayIteratorPrototype%":c?u([][Symbol.iterator]()):void 0,"%ArrayPrototype%":Array.prototype,"%ArrayProto_entries%":Array.prototype.entries,"%ArrayProto_forEach%":Array.prototype.forEach,"%ArrayProto_keys%":Array.prototype.keys,"%ArrayProto_values%":Array.prototype.values,"%AsyncFromSyncIteratorPrototype%":void 0,"%AsyncFunction%":void 0,"%AsyncFunctionPrototype%":void 0,"%AsyncGenerator%":a?u(f):void 0,"%AsyncGeneratorFunction%":p,"%AsyncGeneratorPrototype%":p?p.prototype:void 0,"%AsyncIteratorPrototype%":f&&c&&Symbol.asyncIterator?f[Symbol.asyncIterator]():void 0,"%Atomics%":"undefined"==typeof Atomics?void 0:Atomics,"%Boolean%":Boolean,"%BooleanPrototype%":Boolean.prototype,"%DataView%":"undefined"==typeof DataView?void 0:DataView,"%DataViewPrototype%":"undefined"==typeof DataView?void 0:DataView.prototype,"%Date%":Date,"%DatePrototype%":Date.prototype,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":Error,"%ErrorPrototype%":Error.prototype,"%eval%":eval,"%EvalError%":EvalError,"%EvalErrorPrototype%":EvalError.prototype,"%Float32Array%":"undefined"==typeof Float32Array?void 0:Float32Array,"%Float32ArrayPrototype%":"undefined"==typeof Float32Array?void 0:Float32Array.prototype,"%Float64Array%":"undefined"==typeof Float64Array?void 0:Float64Array,"%Float64ArrayPrototype%":"undefined"==typeof Float64Array?void 0:Float64Array.prototype,"%Function%":Function,"%FunctionPrototype%":Function.prototype,"%Generator%":i?u(i()):void 0,"%GeneratorFunction%":d,"%GeneratorPrototype%":d?d.prototype:void 0,"%Int8Array%":"undefined"==typeof Int8Array?void 0:Int8Array,"%Int8ArrayPrototype%":"undefined"==typeof Int8Array?void 0:Int8Array.prototype,"%Int16Array%":"undefined"==typeof Int16Array?void 0:Int16Array,"%Int16ArrayPrototype%":"undefined"==typeof Int16Array?void 0:Int8Array.prototype,"%Int32Array%":"undefined"==typeof Int32Array?void 0:Int32Array,"%Int32ArrayPrototype%":"undefined"==typeof Int32Array?void 0:Int32Array.prototype,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":c?u(u([][Symbol.iterator]())):void 0,"%JSON%":"object"==typeof JSON?JSON:void 0,"%JSONParse%":"object"==typeof JSON?JSON.parse:void 0,"%Map%":"undefined"==typeof Map?void 0:Map,"%MapIteratorPrototype%":"undefined"!=typeof Map&&c?u((new Map)[Symbol.iterator]()):void 0,"%MapPrototype%":"undefined"==typeof Map?void 0:Map.prototype,"%Math%":Math,"%Number%":Number,"%NumberPrototype%":Number.prototype,"%Object%":Object,"%ObjectPrototype%":Object.prototype,"%ObjProto_toString%":Object.prototype.toString,"%ObjProto_valueOf%":Object.prototype.valueOf,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"==typeof Promise?void 0:Promise,"%PromisePrototype%":"undefined"==typeof Promise?void 0:Promise.prototype,"%PromiseProto_then%":"undefined"==typeof Promise?void 0:Promise.prototype.then,"%Promise_all%":"undefined"==typeof Promise?void 0:Promise.all,"%Promise_reject%":"undefined"==typeof Promise?void 0:Promise.reject,"%Promise_resolve%":"undefined"==typeof Promise?void 0:Promise.resolve,"%Proxy%":"undefined"==typeof Proxy?void 0:Proxy,"%RangeError%":RangeError,"%RangeErrorPrototype%":RangeError.prototype,"%ReferenceError%":ReferenceError,"%ReferenceErrorPrototype%":ReferenceError.prototype,"%Reflect%":"undefined"==typeof Reflect?void 0:Reflect,"%RegExp%":RegExp,"%RegExpPrototype%":RegExp.prototype,"%Set%":"undefined"==typeof Set?void 0:Set,"%SetIteratorPrototype%":"undefined"!=typeof Set&&c?u((new Set)[Symbol.iterator]()):void 0,"%SetPrototype%":"undefined"==typeof Set?void 0:Set.prototype,"%SharedArrayBuffer%":"undefined"==typeof SharedArrayBuffer?void 0:SharedArrayBuffer,"%SharedArrayBufferPrototype%":"undefined"==typeof SharedArrayBuffer?void 0:SharedArrayBuffer.prototype,"%String%":String,"%StringIteratorPrototype%":c?u(""[Symbol.iterator]()):void 0,"%StringPrototype%":String.prototype,"%Symbol%":c?Symbol:void 0,"%SymbolPrototype%":c?Symbol.prototype:void 0,"%SyntaxError%":SyntaxError,"%SyntaxErrorPrototype%":SyntaxError.prototype,"%ThrowTypeError%":l,"%TypedArray%":h,"%TypedArrayPrototype%":h?h.prototype:void 0,"%TypeError%":r,"%TypeErrorPrototype%":r.prototype,"%Uint8Array%":"undefined"==typeof Uint8Array?void 0:Uint8Array,"%Uint8ArrayPrototype%":"undefined"==typeof Uint8Array?void 0:Uint8Array.prototype,"%Uint8ClampedArray%":"undefined"==typeof Uint8ClampedArray?void 0:Uint8ClampedArray,"%Uint8ClampedArrayPrototype%":"undefined"==typeof Uint8ClampedArray?void 0:Uint8ClampedArray.prototype,"%Uint16Array%":"undefined"==typeof Uint16Array?void 0:Uint16Array,"%Uint16ArrayPrototype%":"undefined"==typeof Uint16Array?void 0:Uint16Array.prototype,"%Uint32Array%":"undefined"==typeof Uint32Array?void 0:Uint32Array,"%Uint32ArrayPrototype%":"undefined"==typeof Uint32Array?void 0:Uint32Array.prototype,"%URIError%":URIError,"%URIErrorPrototype%":URIError.prototype,"%WeakMap%":"undefined"==typeof WeakMap?void 0:WeakMap,"%WeakMapPrototype%":"undefined"==typeof WeakMap?void 0:WeakMap.prototype,"%WeakSet%":"undefined"==typeof WeakSet?void 0:WeakSet,"%WeakSetPrototype%":"undefined"==typeof WeakSet?void 0:WeakSet.prototype},g=n(4),m=g.call(Function.call,String.prototype.replace),y=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,b=/\\(\\)?/g,w=function(e){var t=[];return m(e,y,function(e,n,r,o){t[t.length]=r?m(o,b,"$1"):n||e}),t},x=function(e,t){if(!(e in v))throw new SyntaxError("intrinsic "+e+" does not exist!");if(void 0===v[e]&&!t)throw new r("intrinsic "+e+" exists, but is not available. Please file an issue!");return v[e]};e.exports=function(e,t){if("string"!=typeof e||0===e.length)throw new TypeError("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!=typeof t)throw new TypeError('"allowMissing" argument must be a boolean');for(var n=w(e),i=x("%"+(n.length>0?n[0]:"")+"%",t),a=1;a<n.length;a+=1)if(null!=i)if(o&&a+1>=n.length){var s=o(i,n[a]);if(!(t||n[a]in i))throw new r("base intrinsic for "+e+" exists, but the property is not available.");i=s?s.get||s.value:i[n[a]]}else i=i[n[a]];return i}},function(e,t,n){"use strict";t.__esModule=!0;t.DEFAULT_EMOJI_CDN="//img.t.sinajs.cn/t4/appstyle/expression/ext/normal/",t.DB_NAME="Comment",t.defaultConfig={lang:"zh-CN",langMode:null,appId:"",appKey:"",clazzName:"Comment",meta:["nick","mail","link"],path:location.pathname,placeholder:"Just Go Go",pageSize:10,recordIP:!0,serverURLs:"",visitor:!1,emojiCDN:"",emojiMaps:void 0,enableQQ:!1,requiredFields:[]},t.defaultMeta=["nick","mail","link"],t.QQCacheKey="_v_Cache_Q",t.MetaCacheKey="_v_Cache_Meta",t.RandomStr=(Date.now()+Math.round(1e3*Math.random())).toString(32),t.VERSION="1.4.14"},function(e,t,n){function r(e,t){return new i(t).process(e)}var o=n(7),i=n(29);t=e.exports=r,t.FilterCSS=i;for(var a in o)t[a]=o[a];"undefined"!=typeof window&&(window.filterCSS=e.exports)},function(e,t,n){"use strict";var r=n(32);e.exports=Function.prototype.bind||r},function(e,t){e.exports={indexOf:function(e,t){var n,r;if(Array.prototype.indexOf)return e.indexOf(t);for(n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},forEach:function(e,t,n){var r,o;if(Array.prototype.forEach)return e.forEach(t,n);for(r=0,o=e.length;r<o;r++)t.call(n,e[r],r,e)},trim:function(e){return String.prototype.trim?e.trim():e.replace(/(^\s*)|(\s*$)/g,"")},spaceIndex:function(e){var t=/\s|\n|\t/,n=t.exec(e);return n?n.index:-1}}},function(e,t,n){"use strict";t.__esModule=!0;var r=n(2),o={cdn:r.DEFAULT_EMOJI_CDN,maps:n(53),parse:function(e){return String(e).replace(new RegExp(":("+Object.keys(o.maps).join("|")+"):","ig"),function(e,t){return o.maps[t]?o.build(t):e})},build:function(e){var t=/^(https?:)?\/\//i,n=o.maps[e],r=t.test(n)?n:o.cdn+n;return t.test(r)?'<img alt="'+e+'" referrerPolicy="no-referrer" class="vemoji" src="'+r+'" />':""}};t.default=o},function(e,t){function n(){var e={};return e["align-content"]=!1,e["align-items"]=!1,e["align-self"]=!1,e["alignment-adjust"]=!1,e["alignment-baseline"]=!1,e.all=!1,e["anchor-point"]=!1,e.animation=!1,e["animation-delay"]=!1,e["animation-direction"]=!1,e["animation-duration"]=!1,e["animation-fill-mode"]=!1,e["animation-iteration-count"]=!1,e["animation-name"]=!1,e["animation-play-state"]=!1,e["animation-timing-function"]=!1,e.azimuth=!1,e["backface-visibility"]=!1,e.background=!0,e["background-attachment"]=!0,e["background-clip"]=!0,e["background-color"]=!0,e["background-image"]=!0,e["background-origin"]=!0,e["background-position"]=!0,e["background-repeat"]=!0,e["background-size"]=!0,e["baseline-shift"]=!1,e.binding=!1,e.bleed=!1,e["bookmark-label"]=!1,e["bookmark-level"]=!1,e["bookmark-state"]=!1,e.border=!0,e["border-bottom"]=!0,e["border-bottom-color"]=!0,e["border-bottom-left-radius"]=!0,e["border-bottom-right-radius"]=!0,e["border-bottom-style"]=!0,e["border-bottom-width"]=!0,e["border-collapse"]=!0,e["border-color"]=!0,e["border-image"]=!0,e["border-image-outset"]=!0,e["border-image-repeat"]=!0,e["border-image-slice"]=!0,e["border-image-source"]=!0,e["border-image-width"]=!0,e["border-left"]=!0,e["border-left-color"]=!0,e["border-left-style"]=!0,e["border-left-width"]=!0,e["border-radius"]=!0,e["border-right"]=!0,e["border-right-color"]=!0,e["border-right-style"]=!0,e["border-right-width"]=!0,e["border-spacing"]=!0,e["border-style"]=!0,e["border-top"]=!0,e["border-top-color"]=!0,e["border-top-left-radius"]=!0,e["border-top-right-radius"]=!0,e["border-top-style"]=!0,e["border-top-width"]=!0,e["border-width"]=!0,e.bottom=!1,e["box-decoration-break"]=!0,e["box-shadow"]=!0,e["box-sizing"]=!0,e["box-snap"]=!0,e["box-suppress"]=!0,e["break-after"]=!0,e["break-before"]=!0,e["break-inside"]=!0,e["caption-side"]=!1,e.chains=!1,e.clear=!0,e.clip=!1,e["clip-path"]=!1,e["clip-rule"]=!1,e.color=!0,e["color-interpolation-filters"]=!0,e["column-count"]=!1,e["column-fill"]=!1,e["column-gap"]=!1,e["column-rule"]=!1,e["column-rule-color"]=!1,e["column-rule-style"]=!1,e["column-rule-width"]=!1,e["column-span"]=!1,e["column-width"]=!1,e.columns=!1,e.contain=!1,e.content=!1,e["counter-increment"]=!1,e["counter-reset"]=!1,e["counter-set"]=!1,e.crop=!1,e.cue=!1,e["cue-after"]=!1,e["cue-before"]=!1,e.cursor=!1,e.direction=!1,e.display=!0,e["display-inside"]=!0,e["display-list"]=!0,e["display-outside"]=!0,e["dominant-baseline"]=!1,e.elevation=!1,e["empty-cells"]=!1,e.filter=!1,e.flex=!1,e["flex-basis"]=!1,e["flex-direction"]=!1,e["flex-flow"]=!1,e["flex-grow"]=!1,e["flex-shrink"]=!1,e["flex-wrap"]=!1,e.float=!1,e["float-offset"]=!1,e["flood-color"]=!1,e["flood-opacity"]=!1,e["flow-from"]=!1,e["flow-into"]=!1,e.font=!0,e["font-family"]=!0,e["font-feature-settings"]=!0,e["font-kerning"]=!0,e["font-language-override"]=!0,e["font-size"]=!0,e["font-size-adjust"]=!0,e["font-stretch"]=!0,e["font-style"]=!0,e["font-synthesis"]=!0,e["font-variant"]=!0,e["font-variant-alternates"]=!0,e["font-variant-caps"]=!0,e["font-variant-east-asian"]=!0,e["font-variant-ligatures"]=!0,e["font-variant-numeric"]=!0,e["font-variant-position"]=!0,e["font-weight"]=!0,e.grid=!1,e["grid-area"]=!1,e["grid-auto-columns"]=!1,e["grid-auto-flow"]=!1,e["grid-auto-rows"]=!1,e["grid-column"]=!1,e["grid-column-end"]=!1,e["grid-column-start"]=!1,e["grid-row"]=!1,e["grid-row-end"]=!1,e["grid-row-start"]=!1,e["grid-template"]=!1,e["grid-template-areas"]=!1,e["grid-template-columns"]=!1,e["grid-template-rows"]=!1,e["hanging-punctuation"]=!1,e.height=!0,e.hyphens=!1,e.icon=!1,e["image-orientation"]=!1,e["image-resolution"]=!1,e["ime-mode"]=!1,e["initial-letters"]=!1,e["inline-box-align"]=!1,e["justify-content"]=!1,e["justify-items"]=!1,e["justify-self"]=!1,e.left=!1,e["letter-spacing"]=!0,e["lighting-color"]=!0,e["line-box-contain"]=!1,e["line-break"]=!1,e["line-grid"]=!1,e["line-height"]=!1,e["line-snap"]=!1,e["line-stacking"]=!1,e["line-stacking-ruby"]=!1,e["line-stacking-shift"]=!1,e["line-stacking-strategy"]=!1,e["list-style"]=!0,e["list-style-image"]=!0,e["list-style-position"]=!0,e["list-style-type"]=!0,e.margin=!0,e["margin-bottom"]=!0,e["margin-left"]=!0,e["margin-right"]=!0,e["margin-top"]=!0,e["marker-offset"]=!1,e["marker-side"]=!1,e.marks=!1,e.mask=!1,e["mask-box"]=!1,e["mask-box-outset"]=!1,e["mask-box-repeat"]=!1,e["mask-box-slice"]=!1,e["mask-box-source"]=!1,e["mask-box-width"]=!1,e["mask-clip"]=!1,e["mask-image"]=!1,e["mask-origin"]=!1,e["mask-position"]=!1,e["mask-repeat"]=!1,e["mask-size"]=!1,e["mask-source-type"]=!1,e["mask-type"]=!1,e["max-height"]=!0,e["max-lines"]=!1,e["max-width"]=!0,e["min-height"]=!0,e["min-width"]=!0,e["move-to"]=!1,e["nav-down"]=!1,e["nav-index"]=!1,e["nav-left"]=!1,e["nav-right"]=!1,e["nav-up"]=!1,e["object-fit"]=!1,e["object-position"]=!1,e.opacity=!1,e.order=!1,e.orphans=!1,e.outline=!1,e["outline-color"]=!1,e["outline-offset"]=!1,e["outline-style"]=!1,e["outline-width"]=!1,e.overflow=!1,e["overflow-wrap"]=!1,e["overflow-x"]=!1,e["overflow-y"]=!1,e.padding=!0,e["padding-bottom"]=!0,e["padding-left"]=!0,e["padding-right"]=!0,e["padding-top"]=!0,e.page=!1,e["page-break-after"]=!1,e["page-break-before"]=!1,e["page-break-inside"]=!1,e["page-policy"]=!1,e.pause=!1,e["pause-after"]=!1,e["pause-before"]=!1,e.perspective=!1,e["perspective-origin"]=!1,e.pitch=!1,e["pitch-range"]=!1,e["play-during"]=!1,e.position=!1,e["presentation-level"]=!1,e.quotes=!1,e["region-fragment"]=!1,e.resize=!1,e.rest=!1,e["rest-after"]=!1,e["rest-before"]=!1,e.richness=!1,e.right=!1,e.rotation=!1,e["rotation-point"]=!1,e["ruby-align"]=!1,e["ruby-merge"]=!1,e["ruby-position"]=!1,e["shape-image-threshold"]=!1,e["shape-outside"]=!1,e["shape-margin"]=!1,e.size=!1,e.speak=!1,e["speak-as"]=!1,e["speak-header"]=!1,e["speak-numeral"]=!1,e["speak-punctuation"]=!1,e["speech-rate"]=!1,e.stress=!1,e["string-set"]=!1,e["tab-size"]=!1,e["table-layout"]=!1,e["text-align"]=!0,e["text-align-last"]=!0,e["text-combine-upright"]=!0,e["text-decoration"]=!0,e["text-decoration-color"]=!0,e["text-decoration-line"]=!0,e["text-decoration-skip"]=!0,e["text-decoration-style"]=!0,e["text-emphasis"]=!0,e["text-emphasis-color"]=!0,e["text-emphasis-position"]=!0,e["text-emphasis-style"]=!0,e["text-height"]=!0,e["text-indent"]=!0,e["text-justify"]=!0,e["text-orientation"]=!0,e["text-overflow"]=!0,e["text-shadow"]=!0,e["text-space-collapse"]=!0,e["text-transform"]=!0,e["text-underline-position"]=!0,e["text-wrap"]=!0,e.top=!1,e.transform=!1,e["transform-origin"]=!1,e["transform-style"]=!1,e.transition=!1,e["transition-delay"]=!1,e["transition-duration"]=!1,e["transition-property"]=!1,e["transition-timing-function"]=!1,e["unicode-bidi"]=!1,e["vertical-align"]=!1,e.visibility=!1,e["voice-balance"]=!1,e["voice-duration"]=!1,e["voice-family"]=!1,e["voice-pitch"]=!1,e["voice-range"]=!1,e["voice-rate"]=!1,e["voice-stress"]=!1,e["voice-volume"]=!1,e.volume=!1,e["white-space"]=!1,e.widows=!1,e.width=!0,e["will-change"]=!1,e["word-break"]=!0,e["word-spacing"]=!0,e["word-wrap"]=!0,e["wrap-flow"]=!1,e["wrap-through"]=!1,e["writing-mode"]=!1,e["z-index"]=!1,e}function r(e,t,n){}function o(e,t,n){}function i(e,t){return a.test(t)?"":t}var a=/javascript\s*\:/gim;t.whiteList=n(),t.getDefaultWhiteList=n,t.onAttr=r,t.onIgnoreAttr=o,t.safeAttrValue=i},function(e,t){e.exports={indexOf:function(e,t){var n,r;if(Array.prototype.indexOf)return e.indexOf(t);for(n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},forEach:function(e,t,n){var r,o;if(Array.prototype.forEach)return e.forEach(t,n);for(r=0,o=e.length;r<o;r++)t.call(n,e[r],r,e)},trim:function(e){return String.prototype.trim?e.trim():e.replace(/(^\s*)|(\s*$)/g,"")},trimRight:function(e){return String.prototype.trimRight?e.trimRight():e.replace(/(\s*$)/g,"")}}},function(e,t,n){"use strict";var r=n(40),o="function"==typeof Symbol&&"symbol"==typeof Symbol("foo"),i=Object.prototype.toString,a=Array.prototype.concat,s=Object.defineProperty,l=function(e){return"function"==typeof e&&"[object Function]"===i.call(e)},c=s&&function(){var e={};try{s(e,"x",{enumerable:!1,value:e});for(var t in e)return!1;return e.x===e}catch(e){return!1}}(),u=function(e,t,n,r){(!(t in e)||l(r)&&r())&&(c?s(e,t,{configurable:!0,enumerable:!1,value:n,writable:!0}):e[t]=n)},d=function(e,t){var n=arguments.length>2?arguments[2]:{},i=r(t);o&&(i=a.call(i,Object.getOwnPropertySymbols(t)));for(var s=0;s<i.length;s+=1)u(e,i[s],t[i[s]],n[i[s]])};d.supportsDescriptors=!!c,e.exports=d},function(e,t,n){"use strict";var r=Object.prototype.toString;e.exports=function(e){var t=r.call(e),n="[object Arguments]"===t;return n||(n="[object Array]"!==t&&null!==e&&"object"==typeof e&&"number"==typeof e.length&&e.length>=0&&"[object Function]"===r.call(e.callee)),n}},function(e,t,n){"use strict";var r=n(45),o=n(44),i=n(46),a=i("String.prototype.replace"),s=/^[\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF]+/,l=/[\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF]+$/;e.exports=function(){var e=o(r(this));return a(a(e,s,""),l,"")}},function(e,t,n){"use strict";var r=n(4),o=n(1),i=o("%Function%"),a=i.apply,s=i.call;e.exports=function(){return r.apply(s,arguments)},e.exports.apply=function(){return r.apply(a,arguments)}},function(e,t,n){"use strict";var r=n(11),o="​";e.exports=function(){return String.prototype.trim&&o.trim()===o?String.prototype.trim:r}},function(e,t){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){function r(){return{a:["target","href","title"],abbr:["title"],address:[],area:["shape","coords","href","alt"],article:[],aside:[],audio:["autoplay","controls","loop","preload","src"],b:[],bdi:["dir"],bdo:["dir"],big:[],blockquote:["cite"],br:[],caption:[],center:[],cite:[],code:[],col:["align","valign","span","width"],colgroup:["align","valign","span","width"],dd:[],del:["datetime"],details:["open"],div:[],dl:[],dt:[],em:[],font:["color","size","face"],footer:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],hr:[],i:[],img:["src","alt","title","width","height"],ins:["datetime"],li:[],mark:[],nav:[],ol:[],p:[],pre:[],s:[],section:[],small:[],span:[],sub:[],sup:[],strong:[],table:["width","border","align","valign"],tbody:["align","valign"],td:["width","rowspan","colspan","align","valign"],tfoot:["align","valign"],th:["width","rowspan","colspan","align","valign"],thead:["align","valign"],tr:["rowspan","align","valign"],tt:[],u:[],ul:[],video:["autoplay","controls","loop","preload","src","height","width"]}}function o(e,t,n){}function i(e,t,n){}function a(e,t,n){}function s(e,t,n){}function l(e){return e.replace(S,"&lt;").replace(O,"&gt;")}function c(e,t,n,r){if(n=v(n),"href"===t||"src"===t){if("#"===(n=_.trim(n)))return"#";if("http://"!==n.substr(0,7)&&"https://"!==n.substr(0,8)&&"mailto:"!==n.substr(0,7)&&"tel:"!==n.substr(0,4)&&"#"!==n[0]&&"/"!==n[0])return""}else if("background"===t){if(I.lastIndex=0,I.test(n))return""}else if("style"===t){if(P.lastIndex=0,P.test(n))return"";if(M.lastIndex=0,M.test(n)&&(I.lastIndex=0,I.test(n)))return"";!1!==r&&(r=r||A,n=r.process(n))}return n=g(n)}function u(e){return e.replace($,"&quot;")}function d(e){return e.replace(E,'"')}function p(e){return e.replace(j,function(e,t){return"x"===t[0]||"X"===t[0]?String.fromCharCode(parseInt(t.substr(1),16)):String.fromCharCode(parseInt(t,10))})}function f(e){return e.replace(T,":").replace(C," ")}function h(e){for(var t="",n=0,r=e.length;n<r;n++)t+=e.charCodeAt(n)<32?" ":e.charAt(n);return _.trim(t)}function v(e){return e=d(e),e=p(e),e=f(e),e=h(e)}function g(e){return e=u(e),e=l(e)}function m(){return""}function y(e,t){function n(t){return!!r||-1!==_.indexOf(e,t)}"function"!=typeof t&&(t=function(){});var r=!Array.isArray(e),o=[],i=!1;return{onIgnoreTag:function(e,r,a){if(n(e)){if(a.isClosing){var s="[/removed]",l=a.position+s.length;return o.push([!1!==i?i:a.position,l]),i=!1,s}return i||(i=a.position),"[removed]"}return t(e,r,a)},remove:function(e){var t="",n=0;return _.forEach(o,function(r){t+=e.slice(n,r[0]),n=r[1]}),t+=e.slice(n)}}}function b(e){return e.replace(R,"")}function w(e){var t=e.split("");return t=t.filter(function(e){var t=e.charCodeAt(0);return 127!==t&&(!(t<=31)||(10===t||13===t))}),t.join("")}var x=n(3).FilterCSS,k=n(3).getDefaultWhiteList,_=n(5),A=new x,S=/</g,O=/>/g,$=/"/g,E=/&quot;/g,j=/&#([a-zA-Z0-9]*);?/gim,T=/&colon;?/gim,C=/&newline;?/gim,I=/((j\s*a\s*v\s*a|v\s*b|l\s*i\s*v\s*e)\s*s\s*c\s*r\s*i\s*p\s*t\s*|m\s*o\s*c\s*h\s*a)\:/gi,P=/e\s*x\s*p\s*r\s*e\s*s\s*s\s*i\s*o\s*n\s*\(.*/gi,M=/u\s*r\s*l\s*\(.*/gi,R=/<!--[\s\S]*?-->/g;t.whiteList=r(),t.getDefaultWhiteList=r,t.onTag=o,t.onIgnoreTag=i,t.onTagAttr=a,t.onIgnoreTagAttr=s,t.safeAttrValue=c,t.escapeHtml=l,t.escapeQuote=u,t.unescapeQuote=d,t.escapeHtmlEntities=p,t.escapeDangerHtml5Entities=f,t.clearNonPrintableCharacter=h,t.friendlyAttrValue=v,t.escapeAttrValue=g,t.onIgnoreTagStripAll=m,t.StripTagBody=y,t.stripCommentTag=b,t.stripBlankChar=w,t.cssFilter=A,t.getDefaultCSSWhiteList=k},function(e,t,n){function r(e){var t=d.spaceIndex(e);if(-1===t)var n=e.slice(1,-1);else var n=e.slice(1,t+1);return n=d.trim(n).toLowerCase(),"/"===n.slice(0,1)&&(n=n.slice(1)),"/"===n.slice(-1)&&(n=n.slice(0,-1)),n}function o(e){return"</"===e.slice(0,2)}function i(e,t,n){"user strict";var i="",a=0,s=!1,l=!1,c=0,u=e.length,d="",p="";for(c=0;c<u;c++){var f=e.charAt(c);if(!1===s){if("<"===f){s=c;continue}}else if(!1===l){if("<"===f){i+=n(e.slice(a,c)),s=c,a=c;continue}if(">"===f){i+=n(e.slice(a,s)),p=e.slice(s,c+1),d=r(p),i+=t(s,i.length,d,p,o(p)),a=c+1,s=!1;continue}if(('"'===f||"'"===f)&&"="===e.charAt(c-1)){l=f;continue}}else if(f===l){l=!1;continue}}return a<e.length&&(i+=n(e.substr(a))),i}function a(e,t){"user strict";function n(e,n){if(e=d.trim(e),e=e.replace(p,"").toLowerCase(),!(e.length<1)){var r=t(e,n||"");r&&o.push(r)}}for(var r=0,o=[],i=!1,a=e.length,c=0;c<a;c++){var f,h,v=e.charAt(c);if(!1!==i||"="!==v)if(!1===i||c!==r||'"'!==v&&"'"!==v||"="!==e.charAt(c-1))if(/\s|\n|\t/.test(v)){if(e=e.replace(/\s|\n|\t/g," "),!1===i){if(-1===(h=s(e,c))){f=d.trim(e.slice(r,c)),n(f),i=!1,r=c+1;continue}c=h-1;continue}if(-1===(h=l(e,c-1))){f=d.trim(e.slice(r,c)),f=u(f),n(i,f),i=!1,r=c+1;continue}}else;else{if(-1===(h=e.indexOf(v,c+1)))break;f=d.trim(e.slice(r+1,h)),n(i,f),i=!1,c=h,r=c+1}else i=e.slice(r,c),r=c+1}return r<e.length&&(!1===i?n(e.slice(r)):n(i,u(d.trim(e.slice(r))))),d.trim(o.join(" "))}function s(e,t){for(;t<e.length;t++){var n=e[t];if(" "!==n)return"="===n?t:-1}}function l(e,t){for(;t>0;t--){var n=e[t];if(" "!==n)return"="===n?t:-1}}function c(e){return'"'===e[0]&&'"'===e[e.length-1]||"'"===e[0]&&"'"===e[e.length-1]}function u(e){return c(e)?e.substr(1,e.length-2):e}var d=n(5),p=/[^a-zA-Z0-9_:\.\-]/gim;t.parseTag=i,t.parseAttr=a},function(e,t,n){var r,o,i;/*!
- autosize 4.0.2
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.Valine=t():e.Valine=t()}(this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,t),i.l=!0,i.exports}var n={};return t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=119)}([function(e,t,n){"use strict";var r=SyntaxError,i=Function,o=TypeError,a=function(e){try{return i('"use strict"; return ('+e+").constructor;")()}catch(e){}},u=Object.getOwnPropertyDescriptor;if(u)try{u({},"")}catch(e){u=null}var s=function(){throw new o},l=u?function(){try{return arguments.callee,s}catch(e){try{return u(arguments,"callee").get}catch(e){return s}}}():s,c=n(22)(),f=Object.getPrototypeOf||function(e){return e.__proto__},p={},d="undefined"==typeof Uint8Array?void 0:f(Uint8Array),h={"%AggregateError%":"undefined"==typeof AggregateError?void 0:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"==typeof ArrayBuffer?void 0:ArrayBuffer,"%ArrayIteratorPrototype%":c?f([][Symbol.iterator]()):void 0,"%AsyncFromSyncIteratorPrototype%":void 0,"%AsyncFunction%":p,"%AsyncGenerator%":p,"%AsyncGeneratorFunction%":p,"%AsyncIteratorPrototype%":p,"%Atomics%":"undefined"==typeof Atomics?void 0:Atomics,"%BigInt%":"undefined"==typeof BigInt?void 0:BigInt,"%Boolean%":Boolean,"%DataView%":"undefined"==typeof DataView?void 0:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":Error,"%eval%":eval,"%EvalError%":EvalError,"%Float32Array%":"undefined"==typeof Float32Array?void 0:Float32Array,"%Float64Array%":"undefined"==typeof Float64Array?void 0:Float64Array,"%FinalizationRegistry%":"undefined"==typeof FinalizationRegistry?void 0:FinalizationRegistry,"%Function%":i,"%GeneratorFunction%":p,"%Int8Array%":"undefined"==typeof Int8Array?void 0:Int8Array,"%Int16Array%":"undefined"==typeof Int16Array?void 0:Int16Array,"%Int32Array%":"undefined"==typeof Int32Array?void 0:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":c?f(f([][Symbol.iterator]())):void 0,"%JSON%":"object"==typeof JSON?JSON:void 0,"%Map%":"undefined"==typeof Map?void 0:Map,"%MapIteratorPrototype%":"undefined"!=typeof Map&&c?f((new Map)[Symbol.iterator]()):void 0,"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"==typeof Promise?void 0:Promise,"%Proxy%":"undefined"==typeof Proxy?void 0:Proxy,"%RangeError%":RangeError,"%ReferenceError%":ReferenceError,"%Reflect%":"undefined"==typeof Reflect?void 0:Reflect,"%RegExp%":RegExp,"%Set%":"undefined"==typeof Set?void 0:Set,"%SetIteratorPrototype%":"undefined"!=typeof Set&&c?f((new Set)[Symbol.iterator]()):void 0,"%SharedArrayBuffer%":"undefined"==typeof SharedArrayBuffer?void 0:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":c?f(""[Symbol.iterator]()):void 0,"%Symbol%":c?Symbol:void 0,"%SyntaxError%":r,"%ThrowTypeError%":l,"%TypedArray%":d,"%TypeError%":o,"%Uint8Array%":"undefined"==typeof Uint8Array?void 0:Uint8Array,"%Uint8ClampedArray%":"undefined"==typeof Uint8ClampedArray?void 0:Uint8ClampedArray,"%Uint16Array%":"undefined"==typeof Uint16Array?void 0:Uint16Array,"%Uint32Array%":"undefined"==typeof Uint32Array?void 0:Uint32Array,"%URIError%":URIError,"%WeakMap%":"undefined"==typeof WeakMap?void 0:WeakMap,"%WeakRef%":"undefined"==typeof WeakRef?void 0:WeakRef,"%WeakSet%":"undefined"==typeof WeakSet?void 0:WeakSet},v=function e(t){var n;if("%AsyncFunction%"===t)n=a("async function () {}");else if("%GeneratorFunction%"===t)n=a("function* () {}");else if("%AsyncGeneratorFunction%"===t)n=a("async function* () {}");else if("%AsyncGenerator%"===t){var r=e("%AsyncGeneratorFunction%");r&&(n=r.prototype)}else if("%AsyncIteratorPrototype%"===t){var i=e("%AsyncGenerator%");i&&(n=f(i.prototype))}return h[t]=n,n},g={"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},m=n(9),y=n(25),b=m.call(Function.call,Array.prototype.concat),D=m.call(Function.apply,Array.prototype.splice),x=m.call(Function.call,String.prototype.replace),w=m.call(Function.call,String.prototype.slice),A=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,k=/\\(\\)?/g,E=function(e){var t=w(e,0,1),n=w(e,-1);if("%"===t&&"%"!==n)throw new r("invalid intrinsic syntax, expected closing `%`");if("%"===n&&"%"!==t)throw new r("invalid intrinsic syntax, expected opening `%`");var i=[];return x(e,A,function(e,t,n,r){i[i.length]=n?x(r,k,"$1"):t||e}),i},F=function(e,t){var n,i=e;if(y(g,i)&&(n=g[i],i="%"+n[0]+"%"),y(h,i)){var a=h[i];if(a===p&&(a=v(i)),void 0===a&&!t)throw new o("intrinsic "+e+" exists, but is not available. Please file an issue!");return{alias:n,name:i,value:a}}throw new r("intrinsic "+e+" does not exist!")};e.exports=function(e,t){if("string"!=typeof e||0===e.length)throw new o("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!=typeof t)throw new o('"allowMissing" argument must be a boolean');var n=E(e),i=n.length>0?n[0]:"",a=F("%"+i+"%",t),s=a.name,l=a.value,c=!1,f=a.alias;f&&(i=f[0],D(n,b([0,1],f)));for(var p=1,d=!0;p<n.length;p+=1){var v=n[p],g=w(v,0,1),m=w(v,-1);if(('"'===g||"'"===g||"`"===g||'"'===m||"'"===m||"`"===m)&&g!==m)throw new r("property names with quotes must have matching quotes");if("constructor"!==v&&d||(c=!0),i+="."+v,s="%"+i+"%",y(h,s))l=h[s];else if(null!=l){if(!(v in l)){if(!t)throw new o("base intrinsic for "+e+" exists, but the property is not available.");return}if(u&&p+1>=n.length){var x=u(l,v);d=!!x,l=d&&"get"in x&&!("originalValue"in x.get)?x.get:l[v]}else d=y(l,v),l=l[v];d&&!c&&(h[s]=l)}}return l}},function(e,t,n){"use strict";var r=n(0),i=n(4),o=i(r("String.prototype.indexOf"));e.exports=function(e,t){var n=r(e,!!t);return"function"==typeof n&&o(e,".prototype.")>-1?i(n):n}},function(e,t,n){"use strict";var r=n(99),i="function"==typeof Symbol&&"symbol"==typeof Symbol("foo"),o=Object.prototype.toString,a=Array.prototype.concat,u=Object.defineProperty,s=function(e){return"function"==typeof e&&"[object Function]"===o.call(e)},l=u&&function(){var e={};try{u(e,"x",{enumerable:!1,value:e});for(var t in e)return!1;return e.x===e}catch(e){return!1}}(),c=function(e,t,n,r){(!(t in e)||s(r)&&r())&&(l?u(e,t,{configurable:!0,enumerable:!1,value:n,writable:!0}):e[t]=n)},f=function(e,t){var n=arguments.length>2?arguments[2]:{},o=r(t);i&&(o=a.call(o,Object.getOwnPropertySymbols(t)));for(var u=0;u<o.length;u+=1)c(e,o[u],t[o[u]],n[o[u]])};f.supportsDescriptors=!!l,e.exports=f},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=n(96),a=r(o),u=n(56),s=r(u),l=n(52),c=r(l),f=n(55),p=r(f),d=n(51),h=r(d),v=document,g=navigator,m=/[&<>"'`\\]/g,y=RegExp(m.source),b=/&(?:amp|lt|gt|quot|#39|#x60|#x5c);/g,D=RegExp(b.source),x={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","`":"&#x60;","\\":"&#x5c;"},w={};for(var A in x)w[x[A]]=A;var k=null;Array.prototype.forEach||(Array.prototype.forEach=function(e,t){var n,r;if(null==this)throw new TypeError(" this is null or not defined");var i=Object(this),o=i.length>>>0;if("function"!=typeof e)throw new TypeError(e+" is not a function");for(arguments.length>1&&(n=t),r=0;r<o;){var a;r in i&&(a=i[r],e.call(n,a,r,i)),r++}}),window.NodeList&&!NodeList.prototype.forEach&&(NodeList.prototype.forEach=Array.prototype.forEach),String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")}),(0,a.default)(s.default.fn,{prepend:function(e){return e instanceof HTMLElement||(e=e[0]),this.forEach(function(t){t.insertAdjacentElement("afterBegin",e)}),this},append:function(e){return e instanceof HTMLElement||(e=e[0]),this.forEach(function(t){t.insertAdjacentElement("beforeEnd",e)}),this},remove:function(){return this.forEach(function(e){try{e.parentNode.removeChild(e)}catch(e){}}),this},find:function(e){return(0,s.default)(e,this)},show:function(){return this.forEach(function(e){e.style.display="block"}),this},hide:function(){return this.forEach(function(e){e.style.display="none"}),this},on:function(e,t,n){return s.default.fn.off(e,t,n),this.forEach(function(r){e.split(" ").forEach(function(e){r.addEventListener?r.addEventListener(e,t,n||!1):r.attachEvent?r.attachEvent("on"+e,t):r["on"+e]=t})}),this},off:function(e,t,n){return this.forEach(function(r){e.split(" ").forEach(function(e){r.removeEventListener?r.removeEventListener(e,t,n||!1):r.detachEvent?r.detachEvent("on"+e,t):r["on"+e]=null})}),this},html:function(e){return void 0!==e?(this.forEach(function(t){t.innerHTML=e}),this):this[0].innerHTML},text:function(e){return void 0!==e?(this.forEach(function(t){t.innerText=e}),this):this[0].innerText},empty:function(e){return e=e||0,this.forEach(function(t){setTimeout(function(e){t.innerText=""},e)}),this},val:function(e){return void 0!==e?(this.forEach(function(t){t.value=e}),this):this[0].value||""},attr:function(){var e=arguments;if("object"==i(arguments[0])){var t=arguments[0],n=this;return Object.keys(t).forEach(function(e){n.forEach(function(n){n.setAttribute(e,t[e])})}),this}return"string"==typeof arguments[0]&&arguments.length<2?this[0].getAttribute(arguments[0])||"":(this.forEach(function(t){t.setAttribute(e[0],e[1])}),this)},removeAttr:function(e){return this.forEach(function(t){var n,r=0,i=e&&e.match(/[^\x20\t\r\n\f\*\/\\]+/g);if(i&&1===t.nodeType)for(;n=i[r++];)t.removeAttribute(n)}),this},hasClass:function(e){return!!this[0]&&new RegExp("(\\s|^)"+e+"(\\s|$)").test(this[0].getAttribute("class"))},addClass:function(e){return this.forEach(function(t){var n=(0,s.default)(t),r=n.attr("class");n.hasClass(e)||n.attr("class",r+=" "+e)}),this},removeClass:function(e){return this.forEach(function(t){var n=(0,s.default)(t),r=n.attr("class");if(n.hasClass(e)){var i=new RegExp("(\\s|^)"+e+"(\\s|$)");n.attr("class",r.replace(i,""))}}),this}}),(0,a.default)(s.default,{extend:a.default,noop:function(){},navi:g,ua:g.userAgent,lang:g.language||g.languages[0],detect:c.default,store:p.default,escape:function(e){return e&&y.test(e)?e.replace(m,function(e){return x[e]}):e},unescape:function(e){return e&&D.test(e)?e.replace(b,function(e){return w[e]}):e},dynamicLoadSource:function(e,t){if((0,s.default)('script[src="'+e+'"]').length)t&&t();else{var n=v.createElement("script");n.onload=n.onreadystatechange=function(){var e=this;e.onload=e.onreadystatechange=null,t&&t(),(0,s.default)(n).remove()},n.async=!0,n.setAttribute("referrerPolicy","no-referrer");(0,s.default)("head")[0].appendChild(n),n.src=e}},sdkLoader:function(e,t,n){t in window&&window[t]?(k&&clearTimeout(k),n&&n()):s.default.dynamicLoadSource(e,function(){k=setTimeout(s.default.sdkLoader(e,t,n),100)})},deleteInWin:function(e,t){var n=function(t){if(e in window)try{delete window[e]}catch(t){window[e]=null}};0===t?n():setTimeout(n,t||500)},ajax:h.default}),t.default=s.default},function(e,t,n){"use strict";var r=n(9),i=n(0),o=i("%Function.prototype.apply%"),a=i("%Function.prototype.call%"),u=i("%Reflect.apply%",!0)||r.call(a,o),s=i("%Object.getOwnPropertyDescriptor%",!0),l=i("%Object.defineProperty%",!0),c=i("%Math.max%");if(l)try{l({},"a",{value:1})}catch(e){l=null}e.exports=function(e){var t=u(r,a,arguments);if(s&&l){s(t,"length").configurable&&l(t,"length",{value:1+c(0,e.length-(arguments.length-1))})}return t};var f=function(){return u(r,o,arguments)};l?l(e.exports,"apply",{value:f}):e.exports.apply=f},function(e,t,n){"use strict";e.exports=n(69)},function(e,t,n){"use strict";t.__esModule=!0;t.DEFAULT_EMOJI_CDN="//img.t.sinajs.cn/t4/appstyle/expression/ext/normal/",t.DB_NAME="Comment",t.CONFIG={lang:"zh-CN",langMode:null,appId:"",appKey:"",clazzName:"Comment",meta:["nick","mail","link"],path:location.pathname,placeholder:"Just Go Go",pageSize:10,recordIP:!0,serverURLs:"",visitor:!1,mathJax:!1,emojiCDN:"",emojiMaps:void 0,enableQQ:!1,requiredFields:[]},t.defaultMeta=["nick","mail","link"],t.QQCacheKey="_v_Cache_Q",t.MetaCacheKey="_v_Cache_Meta",t.RandomStr=function(e){return(Date.now()+Math.round(1e3*Math.random())).toString(32)},t.VERSION="1.4.18"},function(e,t,n){function r(e,t){return new o(t).process(e)}var i=n(16),o=n(57);t=e.exports=r,t.FilterCSS=o;for(var a in i)t[a]=i[a];"undefined"!=typeof window&&(window.filterCSS=e.exports)},function(e,t,n){"use strict";var r=n(73);e.exports=function(e){return"symbol"==typeof e?"Symbol":"bigint"==typeof e?"BigInt":r(e)}},function(e,t,n){"use strict";var r=n(85);e.exports=Function.prototype.bind||r},function(e,t,n){"use strict";function r(e){return u[e]}function i(e){return s[e]}function o(e){return null==e?"":String(e).replace(c,r)}function a(e){return null==e?"":String(e).replace(l,i)}var u={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},s={"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'"},l=/(&amp;|&lt;|&gt;|&quot;|&#39;)/g,c=/[&<>"']/g;o.options=a.options={},e.exports={encode:o,escape:o,decode:a,unescape:a,version:"1.0.0-browser"}},function(e,t,n){"use strict";var r,i,o=Function.prototype.toString,a="object"==typeof Reflect&&null!==Reflect&&Reflect.apply;if("function"==typeof a&&"function"==typeof Object.defineProperty)try{r=Object.defineProperty({},"length",{get:function(){throw i}}),i={},a(function(){throw 42},null,r)}catch(e){e!==i&&(a=null)}else a=null;var u=/^\s*class\b/,s=function(e){try{var t=o.call(e);return u.test(t)}catch(e){return!1}},l=function(e){try{return!s(e)&&(o.call(e),!0)}catch(e){return!1}},c=Object.prototype.toString,f="function"==typeof Symbol&&!!Symbol.toStringTag,p="object"==typeof document&&void 0===document.all&&void 0!==document.all?document.all:{};e.exports=a?function(e){if(e===p)return!0;if(!e)return!1;if("function"!=typeof e&&"object"!=typeof e)return!1;if("function"==typeof e&&!e.prototype)return!0;try{a(e,null,r)}catch(e){if(e!==i)return!1}return!s(e)}:function(e){if(e===p)return!0;if(!e)return!1;if("function"!=typeof e&&"object"!=typeof e)return!1;if("function"==typeof e&&!e.prototype)return!0;if(f)return l(e);if(s(e))return!1;var t=c.call(e);return"[object Function]"===t||"[object GeneratorFunction]"===t}},function(e,t){e.exports={indexOf:function(e,t){var n,r;if(Array.prototype.indexOf)return e.indexOf(t);for(n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},forEach:function(e,t,n){var r,i;if(Array.prototype.forEach)return e.forEach(t,n);for(r=0,i=e.length;r<i;r++)t.call(n,e[r],r,e)},trim:function(e){return String.prototype.trim?e.trim():e.replace(/(^\s*)|(\s*$)/g,"")},spaceIndex:function(e){var t=/\s|\n|\t/,n=t.exec(e);return n?n.index:-1}}},function(e,t,n){"use strict";t.__esModule=!0;var r=n(6),i={cdn:r.DEFAULT_EMOJI_CDN,maps:n(108),parse:function(e,t){return String(e).replace(new RegExp(":("+Object.keys(i.maps).join("|")+"):","ig"),function(e,n){return i.maps[n]?i.build(n,t):e})},build:function(e,t){var n=/^(https?:)?\/\//i,r=i.maps[e],o=n.test(r)?r:i.cdn+r,a=' <img alt="'+e+'" referrerpolicy="no-referrer" class="vemoji" src="'+o+'" />';return n.test(o)?a:""}};t.default=i},function(e,t,n){"use strict";var r=n(0),i=n(1),o=r("%TypeError%"),a=n(59),u=n(18),s=n(60),l=n(62),c=n(63),f=n(67),p=n(20),d=n(92),h=i("String.prototype.split"),v=Object("a"),g="a"!==v[0]||!(0 in v);e.exports=function(e){var t=f(this),n=g&&d(this)?h(this,""):t,r=c(n);if(!l(e))throw new o("Array.prototype.forEach callback must be a function");var i;arguments.length>1&&(i=arguments[1]);for(var v=0;v<r;){var m=p(v);if(s(n,m)){var y=u(n,m);a(e,i,[y,v,n])}v+=1}}},function(e,t,n){"use strict";var r=n(82),i=n(14);e.exports=function(){var e=Array.prototype.forEach;return r(e)?e:i}},function(e,t){function n(){var e={};return e["align-content"]=!1,e["align-items"]=!1,e["align-self"]=!1,e["alignment-adjust"]=!1,e["alignment-baseline"]=!1,e.all=!1,e["anchor-point"]=!1,e.animation=!1,e["animation-delay"]=!1,e["animation-direction"]=!1,e["animation-duration"]=!1,e["animation-fill-mode"]=!1,e["animation-iteration-count"]=!1,e["animation-name"]=!1,e["animation-play-state"]=!1,e["animation-timing-function"]=!1,e.azimuth=!1,e["backface-visibility"]=!1,e.background=!0,e["background-attachment"]=!0,e["background-clip"]=!0,e["background-color"]=!0,e["background-image"]=!0,e["background-origin"]=!0,e["background-position"]=!0,e["background-repeat"]=!0,e["background-size"]=!0,e["baseline-shift"]=!1,e.binding=!1,e.bleed=!1,e["bookmark-label"]=!1,e["bookmark-level"]=!1,e["bookmark-state"]=!1,e.border=!0,e["border-bottom"]=!0,e["border-bottom-color"]=!0,e["border-bottom-left-radius"]=!0,e["border-bottom-right-radius"]=!0,e["border-bottom-style"]=!0,e["border-bottom-width"]=!0,e["border-collapse"]=!0,e["border-color"]=!0,e["border-image"]=!0,e["border-image-outset"]=!0,e["border-image-repeat"]=!0,e["border-image-slice"]=!0,e["border-image-source"]=!0,e["border-image-width"]=!0,e["border-left"]=!0,e["border-left-color"]=!0,e["border-left-style"]=!0,e["border-left-width"]=!0,e["border-radius"]=!0,e["border-right"]=!0,e["border-right-color"]=!0,e["border-right-style"]=!0,e["border-right-width"]=!0,e["border-spacing"]=!0,e["border-style"]=!0,e["border-top"]=!0,e["border-top-color"]=!0,e["border-top-left-radius"]=!0,e["border-top-right-radius"]=!0,e["border-top-style"]=!0,e["border-top-width"]=!0,e["border-width"]=!0,e.bottom=!1,e["box-decoration-break"]=!0,e["box-shadow"]=!0,e["box-sizing"]=!0,e["box-snap"]=!0,e["box-suppress"]=!0,e["break-after"]=!0,e["break-before"]=!0,e["break-inside"]=!0,e["caption-side"]=!1,e.chains=!1,e.clear=!0,e.clip=!1,e["clip-path"]=!1,e["clip-rule"]=!1,e.color=!0,e["color-interpolation-filters"]=!0,e["column-count"]=!1,e["column-fill"]=!1,e["column-gap"]=!1,e["column-rule"]=!1,e["column-rule-color"]=!1,e["column-rule-style"]=!1,e["column-rule-width"]=!1,e["column-span"]=!1,e["column-width"]=!1,e.columns=!1,e.contain=!1,e.content=!1,e["counter-increment"]=!1,e["counter-reset"]=!1,e["counter-set"]=!1,e.crop=!1,e.cue=!1,e["cue-after"]=!1,e["cue-before"]=!1,e.cursor=!1,e.direction=!1,e.display=!0,e["display-inside"]=!0,e["display-list"]=!0,e["display-outside"]=!0,e["dominant-baseline"]=!1,e.elevation=!1,e["empty-cells"]=!1,e.filter=!1,e.flex=!1,e["flex-basis"]=!1,e["flex-direction"]=!1,e["flex-flow"]=!1,e["flex-grow"]=!1,e["flex-shrink"]=!1,e["flex-wrap"]=!1,e.float=!1,e["float-offset"]=!1,e["flood-color"]=!1,e["flood-opacity"]=!1,e["flow-from"]=!1,e["flow-into"]=!1,e.font=!0,e["font-family"]=!0,e["font-feature-settings"]=!0,e["font-kerning"]=!0,e["font-language-override"]=!0,e["font-size"]=!0,e["font-size-adjust"]=!0,e["font-stretch"]=!0,e["font-style"]=!0,e["font-synthesis"]=!0,e["font-variant"]=!0,e["font-variant-alternates"]=!0,e["font-variant-caps"]=!0,e["font-variant-east-asian"]=!0,e["font-variant-ligatures"]=!0,e["font-variant-numeric"]=!0,e["font-variant-position"]=!0,e["font-weight"]=!0,e.grid=!1,e["grid-area"]=!1,e["grid-auto-columns"]=!1,e["grid-auto-flow"]=!1,e["grid-auto-rows"]=!1,e["grid-column"]=!1,e["grid-column-end"]=!1,e["grid-column-start"]=!1,e["grid-row"]=!1,e["grid-row-end"]=!1,e["grid-row-start"]=!1,e["grid-template"]=!1,e["grid-template-areas"]=!1,e["grid-template-columns"]=!1,e["grid-template-rows"]=!1,e["hanging-punctuation"]=!1,e.height=!0,e.hyphens=!1,e.icon=!1,e["image-orientation"]=!1,e["image-resolution"]=!1,e["ime-mode"]=!1,e["initial-letters"]=!1,e["inline-box-align"]=!1,e["justify-content"]=!1,e["justify-items"]=!1,e["justify-self"]=!1,e.left=!1,e["letter-spacing"]=!0,e["lighting-color"]=!0,e["line-box-contain"]=!1,e["line-break"]=!1,e["line-grid"]=!1,e["line-height"]=!1,e["line-snap"]=!1,e["line-stacking"]=!1,e["line-stacking-ruby"]=!1,e["line-stacking-shift"]=!1,e["line-stacking-strategy"]=!1,e["list-style"]=!0,e["list-style-image"]=!0,e["list-style-position"]=!0,e["list-style-type"]=!0,e.margin=!0,e["margin-bottom"]=!0,e["margin-left"]=!0,e["margin-right"]=!0,e["margin-top"]=!0,e["marker-offset"]=!1,e["marker-side"]=!1,e.marks=!1,e.mask=!1,e["mask-box"]=!1,e["mask-box-outset"]=!1,e["mask-box-repeat"]=!1,e["mask-box-slice"]=!1,e["mask-box-source"]=!1,e["mask-box-width"]=!1,e["mask-clip"]=!1,e["mask-image"]=!1,e["mask-origin"]=!1,e["mask-position"]=!1,e["mask-repeat"]=!1,e["mask-size"]=!1,e["mask-source-type"]=!1,e["mask-type"]=!1,e["max-height"]=!0,e["max-lines"]=!1,e["max-width"]=!0,e["min-height"]=!0,e["min-width"]=!0,e["move-to"]=!1,e["nav-down"]=!1,e["nav-index"]=!1,e["nav-left"]=!1,e["nav-right"]=!1,e["nav-up"]=!1,e["object-fit"]=!1,e["object-position"]=!1,e.opacity=!1,e.order=!1,e.orphans=!1,e.outline=!1,e["outline-color"]=!1,e["outline-offset"]=!1,e["outline-style"]=!1,e["outline-width"]=!1,e.overflow=!1,e["overflow-wrap"]=!1,e["overflow-x"]=!1,e["overflow-y"]=!1,e.padding=!0,e["padding-bottom"]=!0,e["padding-left"]=!0,e["padding-right"]=!0,e["padding-top"]=!0,e.page=!1,e["page-break-after"]=!1,e["page-break-before"]=!1,e["page-break-inside"]=!1,e["page-policy"]=!1,e.pause=!1,e["pause-after"]=!1,e["pause-before"]=!1,e.perspective=!1,e["perspective-origin"]=!1,e.pitch=!1,e["pitch-range"]=!1,e["play-during"]=!1,e.position=!1,e["presentation-level"]=!1,e.quotes=!1,e["region-fragment"]=!1,e.resize=!1,e.rest=!1,e["rest-after"]=!1,e["rest-before"]=!1,e.richness=!1,e.right=!1,e.rotation=!1,e["rotation-point"]=!1,e["ruby-align"]=!1,e["ruby-merge"]=!1,e["ruby-position"]=!1,e["shape-image-threshold"]=!1,e["shape-outside"]=!1,e["shape-margin"]=!1,e.size=!1,e.speak=!1,e["speak-as"]=!1,e["speak-header"]=!1,e["speak-numeral"]=!1,e["speak-punctuation"]=!1,e["speech-rate"]=!1,e.stress=!1,e["string-set"]=!1,e["tab-size"]=!1,e["table-layout"]=!1,e["text-align"]=!0,e["text-align-last"]=!0,e["text-combine-upright"]=!0,e["text-decoration"]=!0,e["text-decoration-color"]=!0,e["text-decoration-line"]=!0,e["text-decoration-skip"]=!0,e["text-decoration-style"]=!0,e["text-emphasis"]=!0,e["text-emphasis-color"]=!0,e["text-emphasis-position"]=!0,e["text-emphasis-style"]=!0,e["text-height"]=!0,e["text-indent"]=!0,e["text-justify"]=!0,e["text-orientation"]=!0,e["text-overflow"]=!0,e["text-shadow"]=!0,e["text-space-collapse"]=!0,e["text-transform"]=!0,e["text-underline-position"]=!0,e["text-wrap"]=!0,e.top=!1,e.transform=!1,e["transform-origin"]=!1,e["transform-style"]=!1,e.transition=!1,e["transition-delay"]=!1,e["transition-duration"]=!1,e["transition-property"]=!1,e["transition-timing-function"]=!1,e["unicode-bidi"]=!1,e["vertical-align"]=!1,e.visibility=!1,e["voice-balance"]=!1,e["voice-duration"]=!1,e["voice-family"]=!1,e["voice-pitch"]=!1,e["voice-range"]=!1,e["voice-rate"]=!1,e["voice-stress"]=!1,e["voice-volume"]=!1,e.volume=!1,e["white-space"]=!1,e.widows=!1,e.width=!0,e["will-change"]=!1,e["word-break"]=!0,e["word-spacing"]=!0,e["word-wrap"]=!0,e["wrap-flow"]=!1,e["wrap-through"]=!1,e["writing-mode"]=!1,e["z-index"]=!1,e}function r(e,t,n){}function i(e,t,n){}function o(e,t){return a.test(t)?"":t}var a=/javascript\s*\:/gim;t.whiteList=n(),t.getDefaultWhiteList=n,t.onAttr=r,t.onIgnoreAttr=i,t.safeAttrValue=o},function(e,t){e.exports={indexOf:function(e,t){var n,r;if(Array.prototype.indexOf)return e.indexOf(t);for(n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},forEach:function(e,t,n){var r,i;if(Array.prototype.forEach)return e.forEach(t,n);for(r=0,i=e.length;r<i;r++)t.call(n,e[r],r,e)},trim:function(e){return String.prototype.trim?e.trim():e.replace(/(^\s*)|(\s*$)/g,"")},trimRight:function(e){return String.prototype.trimRight?e.trimRight():e.replace(/(\s*$)/g,"")}}},function(e,t,n){"use strict";var r=n(0),i=r("%TypeError%"),o=n(97),a=n(19),u=n(8);e.exports=function(e,t){if("Object"!==u(e))throw new i("Assertion failed: Type(O) is not Object");if(!a(t))throw new i("Assertion failed: IsPropertyKey(P) is not true, got "+o(t));return e[t]}},function(e,t,n){"use strict";e.exports=function(e){return"string"==typeof e||"symbol"==typeof e}},function(e,t,n){"use strict";var r=n(0),i=r("%String%"),o=r("%TypeError%");e.exports=function(e){if("symbol"==typeof e)throw new o("Cannot convert a Symbol value to a string");return i(e)}},function(e,t,n){"use strict";e.exports=function(e){return null===e||"function"!=typeof e&&"object"!=typeof e}},function(e,t,n){"use strict";var r="undefined"!=typeof Symbol&&Symbol,i=n(23);e.exports=function(){return"function"==typeof r&&("function"==typeof Symbol&&("symbol"==typeof r("foo")&&("symbol"==typeof Symbol("bar")&&i())))}},function(e,t,n){"use strict";e.exports=function(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"==typeof Symbol.iterator)return!0;var e={},t=Symbol("test"),n=Object(t);if("string"==typeof t)return!1;if("[object Symbol]"!==Object.prototype.toString.call(t))return!1;if("[object Symbol]"!==Object.prototype.toString.call(n))return!1;e[t]=42;for(t in e)return!1;if("function"==typeof Object.keys&&0!==Object.keys(e).length)return!1;if("function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(e).length)return!1;var r=Object.getOwnPropertySymbols(e);if(1!==r.length||r[0]!==t)return!1;if(!Object.prototype.propertyIsEnumerable.call(e,t))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var i=Object.getOwnPropertyDescriptor(e,t);if(42!==i.value||!0!==i.enumerable)return!1}return!0}},function(e,t,n){"use strict";var r=n(23);e.exports=function(){return r()&&!!Symbol.toStringTag}},function(e,t,n){"use strict";var r=n(9);e.exports=r.call(Function.call,Object.prototype.hasOwnProperty)},function(e,t,n){"use strict";var r=n(29),i=["background","base","cite","href","longdesc","src","usemap"];e.exports={uris:r(i)}},function(e,t,n){"use strict";var r=n(29),i=["area","br","col","hr","img","wbr","input","base","basefont","link","meta"];e.exports={voids:r(i)}},function(e,t,n){"use strict";e.exports=function(e){return"string"==typeof e?e.toLowerCase():e}},function(e,t,n){"use strict";function r(e){return e.reduce(i,{})}function i(e,t){return e[t]=!0,e}e.exports=r},function(e,t,n){"use strict";var r=Object.prototype.toString;e.exports=function(e){var t=r.call(e),n="[object Arguments]"===t;return n||(n="[object Array]"!==t&&null!==e&&"object"==typeof e&&"number"==typeof e.length&&e.length>=0&&"[object Function]"===r.call(e.callee)),n}},function(e,t,n){"use strict";var r=n(5),i=n(1),o=i("Object.prototype.propertyIsEnumerable"),a=i("Array.prototype.push");e.exports=function(e){var t=r(e),n=[];for(var i in t)o(t,i)&&a(n,[i,t[i]]);return n}},function(e,t,n){"use strict";var r=n(31);e.exports=function(){return"function"==typeof Object.entries?Object.entries:r}},function(e,t,n){"use strict";var r=n(5),i=n(20),o=n(1),a=o("String.prototype.replace"),u=/^[\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF]+/,s=/[\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF]+$/;e.exports=function(){var e=i(r(this));return a(a(e,u,""),s,"")}},function(e,t,n){"use strict";var r=n(33),i="​";e.exports=function(){return String.prototype.trim&&i.trim()===i?String.prototype.trim:r}},function(e,t,n){function r(){return{a:["target","href","title"],abbr:["title"],address:[],area:["shape","coords","href","alt"],article:[],aside:[],audio:["autoplay","controls","crossorigin","loop","muted","preload","src"],b:[],bdi:["dir"],bdo:["dir"],big:[],blockquote:["cite"],br:[],caption:[],center:[],cite:[],code:[],col:["align","valign","span","width"],colgroup:["align","valign","span","width"],dd:[],del:["datetime"],details:["open"],div:[],dl:[],dt:[],em:[],figcaption:[],figure:[],font:["color","size","face"],footer:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],hr:[],i:[],img:["src","alt","title","width","height"],ins:["datetime"],li:[],mark:[],nav:[],ol:[],p:[],pre:[],s:[],section:[],small:[],span:[],sub:[],summary:[],sup:[],strong:[],strike:[],table:["width","border","align","valign"],tbody:["align","valign"],td:["width","rowspan","colspan","align","valign"],tfoot:["align","valign"],th:["width","rowspan","colspan","align","valign"],thead:["align","valign"],tr:["rowspan","align","valign"],tt:[],u:[],ul:[],video:["autoplay","controls","crossorigin","loop","muted","playsinline","poster","preload","src","height","width"]}}function i(e,t,n){}function o(e,t,n){}function a(e,t,n){}function u(e,t,n){}function s(e){return e.replace(E,"&lt;").replace(F,"&gt;")}function l(e,t,n,r){if(n=v(n),"href"===t||"src"===t){if("#"===(n=A.trim(n)))return"#";if("http://"!==n.substr(0,7)&&"https://"!==n.substr(0,8)&&"mailto:"!==n.substr(0,7)&&"tel:"!==n.substr(0,4)&&"data:image/"!==n.substr(0,11)&&"ftp://"!==n.substr(0,6)&&"./"!==n.substr(0,2)&&"../"!==n.substr(0,3)&&"#"!==n[0]&&"/"!==n[0])return""}else if("background"===t){if(j.lastIndex=0,j.test(n))return""}else if("style"===t){if($.lastIndex=0,$.test(n))return"";if(T.lastIndex=0,T.test(n)&&(j.lastIndex=0,j.test(n)))return"";!1!==r&&(r=r||k,n=r.process(n))}return n=g(n)}function c(e){return e.replace(C,"&quot;")}function f(e){return e.replace(S,'"')}function p(e){return e.replace(_,function(e,t){return"x"===t[0]||"X"===t[0]?String.fromCharCode(parseInt(t.substr(1),16)):String.fromCharCode(parseInt(t,10))})}function d(e){return e.replace(O,":").replace(B," ")}function h(e){for(var t="",n=0,r=e.length;n<r;n++)t+=e.charCodeAt(n)<32?" ":e.charAt(n);return A.trim(t)}function v(e){return e=f(e),e=p(e),e=d(e),e=h(e)}function g(e){return e=c(e),e=s(e)}function m(){return""}function y(e,t){function n(t){return!!r||-1!==A.indexOf(e,t)}"function"!=typeof t&&(t=function(){});var r=!Array.isArray(e),i=[],o=!1;return{onIgnoreTag:function(e,r,a){if(n(e)){if(a.isClosing){var u="[/removed]",s=a.position+u.length;return i.push([!1!==o?o:a.position,s]),o=!1,u}return o||(o=a.position),"[removed]"}return t(e,r,a)},remove:function(e){var t="",n=0;return A.forEach(i,function(r){t+=e.slice(n,r[0]),n=r[1]}),t+=e.slice(n)}}}function b(e){for(var t="",n=0;n<e.length;){var r=e.indexOf("\x3c!--",n);if(-1===r){t+=e.slice(n);break}t+=e.slice(n,r);var i=e.indexOf("--\x3e",r);if(-1===i)break;n=i+3}return t}function D(e){var t=e.split("");return t=t.filter(function(e){var t=e.charCodeAt(0);return 127!==t&&(!(t<=31)||(10===t||13===t))}),t.join("")}var x=n(7).FilterCSS,w=n(7).getDefaultWhiteList,A=n(12),k=new x,E=/</g,F=/>/g,C=/"/g,S=/&quot;/g,_=/&#([a-zA-Z0-9]*);?/gim,O=/&colon;?/gim,B=/&newline;?/gim,j=/((j\s*a\s*v\s*a|v\s*b|l\s*i\s*v\s*e)\s*s\s*c\s*r\s*i\s*p\s*t\s*|m\s*o\s*c\s*h\s*a)\:/gi,$=/e\s*x\s*p\s*r\s*e\s*s\s*s\s*i\s*o\s*n\s*\(.*/gi,T=/u\s*r\s*l\s*\(.*/gi;t.whiteList=r(),t.getDefaultWhiteList=r,t.onTag=i,t.onIgnoreTag=o,t.onTagAttr=a,t.onIgnoreTagAttr=u,t.safeAttrValue=l,t.escapeHtml=s,t.escapeQuote=c,t.unescapeQuote=f,t.escapeHtmlEntities=p,t.escapeDangerHtml5Entities=d,t.clearNonPrintableCharacter=h,t.friendlyAttrValue=v,t.escapeAttrValue=g,t.onIgnoreTagStripAll=m,t.StripTagBody=y,t.stripCommentTag=b,t.stripBlankChar=D,t.cssFilter=k,t.getDefaultCSSWhiteList=w},function(e,t,n){function r(e){var t=f.spaceIndex(e);if(-1===t)var n=e.slice(1,-1);else var n=e.slice(1,t+1);return n=f.trim(n).toLowerCase(),"/"===n.slice(0,1)&&(n=n.slice(1)),"/"===n.slice(-1)&&(n=n.slice(0,-1)),n}function i(e){return"</"===e.slice(0,2)}function o(e,t,n){"use strict";var o="",a=0,u=!1,s=!1,l=0,c=e.length,f="",p="";e:for(l=0;l<c;l++){var d=e.charAt(l);if(!1===u){if("<"===d){u=l;continue}}else if(!1===s){if("<"===d){o+=n(e.slice(a,l)),u=l,a=l;continue}if(">"===d){o+=n(e.slice(a,u)),p=e.slice(u,l+1),f=r(p),o+=t(u,o.length,f,p,i(p)),a=l+1,u=!1;continue}if('"'===d||"'"===d)for(var h=1,v=e.charAt(l-h);""===v.trim()||"="===v;){if("="===v){s=d;continue e}v=e.charAt(l-++h)}}else if(d===s){s=!1;continue}}return a<e.length&&(o+=n(e.substr(a))),o}function a(e,t){"use strict";function n(e,n){if(e=f.trim(e),e=e.replace(p,"").toLowerCase(),!(e.length<1)){var r=t(e,n||"");r&&i.push(r)}}for(var r=0,i=[],o=!1,a=e.length,l=0;l<a;l++){var d,h,v=e.charAt(l);if(!1!==o||"="!==v)if(!1===o||l!==r||'"'!==v&&"'"!==v||"="!==e.charAt(l-1))if(/\s|\n|\t/.test(v)){if(e=e.replace(/\s|\n|\t/g," "),!1===o){if(-1===(h=u(e,l))){d=f.trim(e.slice(r,l)),n(d),o=!1,r=l+1;continue}l=h-1;continue}if(-1===(h=s(e,l-1))){d=f.trim(e.slice(r,l)),d=c(d),n(o,d),o=!1,r=l+1;continue}}else;else{if(-1===(h=e.indexOf(v,l+1)))break;d=f.trim(e.slice(r+1,h)),n(o,d),o=!1,l=h,r=l+1}else o=e.slice(r,l),r=l+1}return r<e.length&&(!1===o?n(e.slice(r)):n(o,c(f.trim(e.slice(r))))),f.trim(i.join(" "))}function u(e,t){for(;t<e.length;t++){var n=e[t];if(" "!==n)return"="===n?t:-1}}function s(e,t){for(;t>0;t--){var n=e[t];if(" "!==n)return"="===n?t:-1}}function l(e){return'"'===e[0]&&'"'===e[e.length-1]||"'"===e[0]&&"'"===e[e.length-1]}function c(e){return l(e)?e.substr(1,e.length-2):e}var f=n(12),p=/[^a-zA-Z0-9_:\.\-]/gim;t.parseTag=o,t.parseAttr=a},function(e,t,n){var r,i,o;/*!
+ autosize 4.0.4
license: MIT
http://www.jacklmoore.com/autosize
*/
-!function(n,a){o=[e,t],r=a,void 0!==(i="function"==typeof r?r.apply(t,o):r)&&(e.exports=i)}(0,function(e,t){"use strict";function n(e){function t(t){var n=e.style.width;e.style.width="0px",e.offsetWidth,e.style.width=n,e.style.overflowY=t}function n(e){for(var t=[];e&&e.parentNode&&e.parentNode instanceof Element;)e.parentNode.scrollTop&&t.push({node:e.parentNode,scrollTop:e.parentNode.scrollTop}),e=e.parentNode;return t}function r(){if(0!==e.scrollHeight){var t=n(e),r=document.documentElement&&document.documentElement.scrollTop;e.style.height="",e.style.height=e.scrollHeight+s+"px",l=e.clientWidth,t.forEach(function(e){e.node.scrollTop=e.scrollTop}),r&&(document.documentElement.scrollTop=r)}}function o(){r();var n=Math.round(parseFloat(e.style.height)),o=window.getComputedStyle(e,null),i="content-box"===o.boxSizing?Math.round(parseFloat(o.height)):e.offsetHeight;if(i<n?"hidden"===o.overflowY&&(t("scroll"),r(),i="content-box"===o.boxSizing?Math.round(parseFloat(window.getComputedStyle(e,null).height)):e.offsetHeight):"hidden"!==o.overflowY&&(t("hidden"),r(),i="content-box"===o.boxSizing?Math.round(parseFloat(window.getComputedStyle(e,null).height)):e.offsetHeight),c!==i){c=i;var s=a("autosize:resized");try{e.dispatchEvent(s)}catch(e){}}}if(e&&e.nodeName&&"TEXTAREA"===e.nodeName&&!i.has(e)){var s=null,l=null,c=null,u=function(){e.clientWidth!==l&&o()},d=function(t){window.removeEventListener("resize",u,!1),e.removeEventListener("input",o,!1),e.removeEventListener("keyup",o,!1),e.removeEventListener("autosize:destroy",d,!1),e.removeEventListener("autosize:update",o,!1),Object.keys(t).forEach(function(n){e.style[n]=t[n]}),i.delete(e)}.bind(e,{height:e.style.height,resize:e.style.resize,overflowY:e.style.overflowY,overflowX:e.style.overflowX,wordWrap:e.style.wordWrap});e.addEventListener("autosize:destroy",d,!1),"onpropertychange"in e&&"oninput"in e&&e.addEventListener("keyup",o,!1),window.addEventListener("resize",u,!1),e.addEventListener("input",o,!1),e.addEventListener("autosize:update",o,!1),e.style.overflowX="hidden",e.style.wordWrap="break-word",i.set(e,{destroy:d,update:o}),function(){var t=window.getComputedStyle(e,null);"vertical"===t.resize?e.style.resize="none":"both"===t.resize&&(e.style.resize="horizontal"),s="content-box"===t.boxSizing?-(parseFloat(t.paddingTop)+parseFloat(t.paddingBottom)):parseFloat(t.borderTopWidth)+parseFloat(t.borderBottomWidth),isNaN(s)&&(s=0),o()}()}}function r(e){var t=i.get(e);t&&t.destroy()}function o(e){var t=i.get(e);t&&t.update()}var i="function"==typeof Map?new Map:function(){var e=[],t=[];return{has:function(t){return e.indexOf(t)>-1},get:function(n){return t[e.indexOf(n)]},set:function(n,r){-1===e.indexOf(n)&&(e.push(n),t.push(r))},delete:function(n){var r=e.indexOf(n);r>-1&&(e.splice(r,1),t.splice(r,1))}}}(),a=function(e){return new Event(e,{bubbles:!0})};try{new Event("test")}catch(e){a=function(e){var t=document.createEvent("Event");return t.initEvent(e,!0,!1),t}}var s=null;"undefined"==typeof window||"function"!=typeof window.getComputedStyle?(s=function(e){return e},s.destroy=function(e){return e},s.update=function(e){return e}):(s=function(e,t){return e&&Array.prototype.forEach.call(e.length?e:[e],function(e){return n(e)}),e},s.destroy=function(e){return e&&Array.prototype.forEach.call(e.length?e:[e],r),e},s.update=function(e){return e&&Array.prototype.forEach.call(e.length?e:[e],o),e}),t.default=s,e.exports=t.default})},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e){return!!e&&this.init(e),this}function i(e){return new o(e)}var a=n(26),s=r(a),l=n(17),c=r(l),u=n(20),d=r(u),p=n(6),f=r(p),h=n(2),v=n(24),g=r(v),m=n(0),y=r(m),b=n(22),w=r(b),x=n(19),k=r(x),_=n(23),A=n(25),S=r(A),O=n(21),$=r(O),E={comment:"",nick:"",mail:"",link:"",ua:y.default.ua,url:"",QQAvatar:""},j="",T={cdn:"https://gravatar.loli.net/avatar/",ds:["mp","identicon","monsterid","wavatar","robohash","retro",""],params:"",hide:!1};o.prototype.init=function(e){if("undefined"==typeof document)throw new Error("Sorry, Valine does not support Server-side rendering.");var t=this;return e&&(e=y.default.extend(h.defaultConfig,e),t.i18n=(0,d.default)(e.lang||y.default.lang,e.langMode),t.config=e,f.default.maps=!!e.emojiMaps&&e.emojiMaps||f.default.maps,f.default.cdn=!!e.emojiCDN&&e.emojiCDN||f.default.cdn,t._init()),t},o.prototype._init=function(){var e=this;try{var t=e.config,n=t.avatar,r=t.avatarForce,o=t.avatar_cdn,i=t.visitor,a=t.path,s=void 0===a?location.pathname:a,l=t.pageSize,c=t.recordIP;e.config.path=s.replace(/index\.html?$/,"");var u=T.ds,d=r?"&q="+h.RandomStr:"";T.params="?d="+(u.indexOf(n)>-1?n:"mp")+"&v="+h.VERSION+d,T.hide="hide"===n,T.cdn=/^https?\:\/\//.test(o)?o:T.cdn,e.config.pageSize=isNaN(l)?10:l<1?10:l,c&&(0,_.recordIPFn)(function(e){return E.ip=e});var p=e.config.el||null,f=(0,y.default)(p);if(p=p instanceof HTMLElement?p:f[f.length-1]||null){e.$el=(0,y.default)(p),e.$el.addClass("v").attr("data-class","v"),T.hide&&e.$el.addClass("hide-avatar"),e.config.meta=(e.config.guest_info||e.config.meta||h.defaultMeta).filter(function(e){return h.defaultMeta.indexOf(e)>-1}),e.config.requiredFields=e.config.requiredFields.filter(function(e){return h.defaultMeta.indexOf(e)>-1});var v=(0==e.config.meta.length?h.defaultMeta:e.config.meta).map(function(t){var n="mail"==t?"email":"text";return h.defaultMeta.indexOf(t)>-1?'<input name="'+t+'" placeholder="'+e.i18n.t(t)+'" class="v'+t+' vinput" type="'+n+'">':""}),g='<div class="vpanel"><div class="vwrap"><p class="cancel-reply text-right" style="display:none;" title="'+e.i18n.t("cancelReply")+'"><svg class="vicon cancel-reply-btn" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4220" width="22" height="22"><path d="M796.454 985H227.545c-50.183 0-97.481-19.662-133.183-55.363-35.7-35.701-55.362-83-55.362-133.183V227.545c0-50.183 19.662-97.481 55.363-133.183 35.701-35.7 83-55.362 133.182-55.362h568.909c50.183 0 97.481 19.662 133.183 55.363 35.701 35.702 55.363 83 55.363 133.183v568.909c0 50.183-19.662 97.481-55.363 133.183S846.637 985 796.454 985zM227.545 91C152.254 91 91 152.254 91 227.545v568.909C91 871.746 152.254 933 227.545 933h568.909C871.746 933 933 871.746 933 796.454V227.545C933 152.254 871.746 91 796.454 91H227.545z" p-id="4221"></path><path d="M568.569 512l170.267-170.267c15.556-15.556 15.556-41.012 0-56.569s-41.012-15.556-56.569 0L512 455.431 341.733 285.165c-15.556-15.556-41.012-15.556-56.569 0s-15.556 41.012 0 56.569L455.431 512 285.165 682.267c-15.556 15.556-15.556 41.012 0 56.569 15.556 15.556 41.012 15.556 56.569 0L512 568.569l170.267 170.267c15.556 15.556 41.012 15.556 56.569 0 15.556-15.556 15.556-41.012 0-56.569L568.569 512z" p-id="4222" ></path></svg></p><div class="vheader item'+v.length+'">'+v.join("")+'</div><div class="vedit"><textarea id="veditor" class="veditor vinput" placeholder="'+e.config.placeholder+'"></textarea><div class="vrow"><div class="vcol vcol-60 status-bar"></div><div class="vcol vcol-40 vctrl text-right"><span title="'+e.i18n.t("emoji")+'" class="vicon vemoji-btn"><svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="16172" width="22" height="22" ><path d="M512 1024a512 512 0 1 1 512-512 512 512 0 0 1-512 512zM512 56.888889a455.111111 455.111111 0 1 0 455.111111 455.111111 455.111111 455.111111 0 0 0-455.111111-455.111111zM312.888889 512A85.333333 85.333333 0 1 1 398.222222 426.666667 85.333333 85.333333 0 0 1 312.888889 512z" p-id="16173"></path><path d="M512 768A142.222222 142.222222 0 0 1 369.777778 625.777778a28.444444 28.444444 0 0 1 56.888889 0 85.333333 85.333333 0 0 0 170.666666 0 28.444444 28.444444 0 0 1 56.888889 0A142.222222 142.222222 0 0 1 512 768z" p-id="16174"></path><path d="M782.222222 391.964444l-113.777778 59.733334a29.013333 29.013333 0 0 1-38.684444-10.808889 28.444444 28.444444 0 0 1 10.24-38.684445l113.777778-56.888888a28.444444 28.444444 0 0 1 38.684444 10.24 28.444444 28.444444 0 0 1-10.24 36.408888z" p-id="16175"></path><path d="M640.568889 451.697778l113.777778 56.888889a27.875556 27.875556 0 0 0 38.684444-10.24 27.875556 27.875556 0 0 0-10.24-38.684445l-113.777778-56.888889a28.444444 28.444444 0 0 0-38.684444 10.808889 28.444444 28.444444 0 0 0 10.24 38.115556z" p-id="16176"></path></svg></span><span title="'+e.i18n.t("preview")+'" class="vicon vpreview-btn"><svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="17688" width="22" height="22"><path d="M502.390154 935.384615a29.538462 29.538462 0 1 1 0 59.076923H141.430154C79.911385 994.461538 29.538462 946.254769 29.538462 886.153846V137.846154C29.538462 77.745231 79.950769 29.538462 141.390769 29.538462h741.218462c61.44 0 111.852308 48.206769 111.852307 108.307692v300.268308a29.538462 29.538462 0 1 1-59.076923 0V137.846154c0-26.899692-23.355077-49.230769-52.775384-49.230769H141.390769c-29.420308 0-52.775385 22.331077-52.775384 49.230769v748.307692c0 26.899692 23.355077 49.230769 52.775384 49.230769h360.999385z" p-id="17689"></path><path d="M196.923077 216.615385m29.538461 0l374.153847 0q29.538462 0 29.538461 29.538461l0 0q0 29.538462-29.538461 29.538462l-374.153847 0q-29.538462 0-29.538461-29.538462l0 0q0-29.538462 29.538461-29.538461Z" p-id="17690"></path><path d="M649.846154 846.769231a216.615385 216.615385 0 1 0 0-433.230769 216.615385 216.615385 0 0 0 0 433.230769z m0 59.076923a275.692308 275.692308 0 1 1 0-551.384616 275.692308 275.692308 0 0 1 0 551.384616z" p-id="17691"></path><path d="M807.398383 829.479768m20.886847-20.886846l0 0q20.886846-20.886846 41.773692 0l125.321079 125.321079q20.886846 20.886846 0 41.773693l0 0q-20.886846 20.886846-41.773693 0l-125.321078-125.321079q-20.886846-20.886846 0-41.773693Z" p-id="17692"></path></svg></span></div></div></div><div class="vrow"><div class="vcol vcol-30" ><a alt="Markdown is supported" href="https://guides.github.com/features/mastering-markdown/" class="vicon" target="_blank"><svg class="markdown" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M14.85 3H1.15C.52 3 0 3.52 0 4.15v7.69C0 12.48.52 13 1.15 13h13.69c.64 0 1.15-.52 1.15-1.15v-7.7C16 3.52 15.48 3 14.85 3zM9 11H7V8L5.5 9.92 4 8v3H2V5h2l1.5 2L7 5h2v6zm2.99.5L9.5 8H11V5h2v3h1.5l-2.51 3.5z"></path></svg></a></div><div class="vcol vcol-70 text-right"><button type="button" title="Cmd|Ctrl+Enter" class="vsubmit vbtn">'+e.i18n.t("submit")+'</button></div></div><div class="vemojis" style="display:none;"></div><div class="vinput vpreview" style="display:none;"></div><div style="display:none;" class="vmark"></div></div></div><div class="vcount" style="display:none;"><span class="vnum">0</span> '+e.i18n.t("comments")+'</div><div class="vload-top text-center" style="display:none;"><i class="vspinner" style="width:30px;height:30px;"></i></div><div class="vcards"></div><div class="vload-bottom text-center" style="display:none;"><i class="vspinner" style="width:30px;height:30px;"></i></div><div class="vempty" style="display:none;"></div><div class="vpage txt-center" style="display:none"><button type="button" class="vmore vbtn">'+e.i18n.t("more")+'</button></div><div class="vpower txt-right">Powered By <a href="https://valine.js.org" target="_blank">Valine</a><br>v'+h.VERSION+"</div>";e.$el.html(g),e.$el.find(".cancel-reply").on("click",function(t){e.reset()});var m=e.$el.find(".vempty");e.$nodata={show:function(t){return m.html(t||e.i18n.t("sofa")).show(),e},hide:function(){return m.hide(),e}};var b=e.$el.find(".vload-bottom"),w=e.$el.find(".vload-top");e.$loading={show:function(t){return t&&w.show()||b.show(),e.$nodata.hide(),e},hide:function(){return w.hide(),b.hide(),0===e.$el.find(".vcard").length&&e.$nodata.show(),e}}}(0,k.default)(e.config,function(t){var n=(0,y.default)(".valine-comment-count"),r=0;!function t(n){var o=n[r++];if(o){var i=(0,y.default)(o).attr("data-xid");!!i&&e.Q(i).count().then(function(e){o.innerText=e,t(n)}).catch(function(e){o.innerText=0})}}(n),i&&I.add(AV.Object.extend("Counter"),e.config.path),e.$el&&e.bind()})}catch(t){(0,$.default)(e,t,"init")}};var C=function(e,t){var n=new e,r=new AV.ACL;r.setPublicReadAccess(!0),r.setPublicWriteAccess(!0),n.setACL(r),n.set("url",t.url),n.set("xid",t.xid),n.set("title",t.title),n.set("time",1),n.save().then(function(e){(0,y.default)(t.el).find(".leancloud-visitors-count").text(1)}).catch(function(e){})},I={add:function(e,t){var n=this,r=(0,y.default)(".leancloud_visitors,.leancloud-visitors");if(1===r.length){var o=r[0],i=decodeURI((0,y.default)(o).attr("id")),a=(0,y.default)(o).attr("data-flag-title"),s=encodeURI(i),l={el:o,url:i,xid:s,title:a};if(decodeURI(i)===decodeURI(t)){var c=new AV.Query(e);c.equalTo("url",i),c.find().then(function(t){if(t.length>0){var n=t[0];n.increment("time"),n.save().then(function(e){(0,y.default)(o).find(".leancloud-visitors-count").text(e.get("time"))}).catch(function(e){})}else C(e,l)}).catch(function(t){101==t.code?C(e,l):(0,$.default)(n,t)})}else I.show(e,r)}else I.show(e,r)},show:function(e,t){var n=[];if(t.forEach(function(e){var t=(0,y.default)(e).find(".leancloud-visitors-count");t&&t.text("0"),n.push(/\%/.test((0,y.default)(e).attr("id"))?decodeURI((0,y.default)(e).attr("id")):(0,y.default)(e).attr("id"))}),n.length){var r=new AV.Query(e);r.containedIn("url",n),r.find().then(function(e){e.length>0&&t.forEach(function(t){e.forEach(function(e){var n=e.get("xid")||encodeURI(e.get("url")),r=e.get("time"),o=(0,y.default)(t),i=o.attr("id");if((/\%/.test(i)?i:encodeURI(i))==n){var a=o.find(".leancloud-visitors-count");a&&a.text(r)}})})}).catch(function(e){})}}};o.prototype.Q=function(e){var t=this,n=arguments.length,r=t.config.clazzName;if(1==n){var o=new AV.Query(r);o.doesNotExist("rid");var i=new AV.Query(r);i.equalTo("rid","");var a=AV.Query.or(o,i);return"*"===e?a.exists("url"):a.equalTo("url",decodeURI(e)),a.addDescending("createdAt"),a.addDescending("insertedAt"),a}var s=JSON.stringify(arguments[1]).replace(/(\[|\])/g,""),l="select * from "+r+" where rid in ("+s+") order by -createdAt,-createdAt";return AV.Query.doCloudQuery(l)},o.prototype.installLocale=function(e,t){var n=this;return n.i18n(e,t),n},o.prototype.setPath=function(e){return this.config.path=e,this},o.prototype.bind=function(){var e=this,t=e.$el.find(".vemojis"),n=e.$el.find(".vpreview"),r=e.$el.find(".vemoji-btn"),o=e.$el.find(".vpreview-btn"),i=e.$el.find(".veditor"),a=f.default.maps,l=!1,u=function(e){var n=[];for(var r in a)a.hasOwnProperty(r)&&!!f.default.build(r)&&n.push('<i title="'+r+'" >'+f.default.build(r)+"</i>");t.html(n.join("")),l=!0,t.find("i").on("click",function(e){e.preventDefault(),x(i[0]," :"+(0,y.default)(this).attr("title")+":")})};e.$emoji={show:function(){return!l&&u(),e.$preview.hide(),t.show(),r.addClass("actived"),e.$emoji},hide:function(){return r.removeClass("actived"),t.hide(),e.$emoji}},e.$preview={show:function(){return j?(e.$emoji.hide(),o.addClass("actived"),n.html(j).show(),M()):e.$preview.hide(),e.$preview},hide:function(){return o.removeClass("actived"),n.hide().html(""),e.$preview}};var d=function(t){var r=(0,w.default)(t.val()||"");r||e.$preview.hide(),j!=r&&(j=r,o.hasClass("actived")>-1&&j!=n.html()&&n.html(j),(0,c.default)(t[0]),M())};r.on("click",function(t){r.hasClass("actived")?e.$emoji.hide():e.$emoji.show()}),o.on("click",function(t){o.hasClass("actived")?e.$preview.hide():e.$preview.show()});var p=e.config.meta,v={},m={veditor:"comment"};p.forEach(function(e){m["v"+e]=e});for(var b in m)m.hasOwnProperty(b)&&function(){var t=m[b],n=e.$el.find("."+b);v[t]=n,n.on("input change blur propertychange",function(r){e.config.enableQQ&&"blur"===r.type&&"nick"===t&&(isNaN(n.val())?y.default.store.get(h.QQCacheKey)&&y.default.store.get(h.QQCacheKey).nick!=n.val()&&(y.default.store.remove(h.QQCacheKey),E.nick=n.val(),E.mail="",E.QQAvatar=""):(0,_.fetchQQFn)(n.val(),function(e){var t=e.nick||n.val(),r=e.qq+"@qq.com";(0,y.default)(".vnick").val(t),(0,y.default)(".vmail").val(r),E.nick=t,E.mail=r,E.QQAvatar=e.pic})),"comment"===t?d(n):E[t]=y.default.escape(n.val().replace(/(^\s*)|(\s*$)/g,"")).substring(0,40)})}();var x=function(e,t){if(document.selection){e.focus();document.selection.createRange().text=t,e.focus()}else if(e.selectionStart||"0"==e.selectionStart){var n=e.selectionStart,r=e.selectionEnd,o=e.scrollTop;e.value=e.value.substring(0,n)+t+e.value.substring(r,e.value.length),e.focus(),e.selectionStart=n+t.length,e.selectionEnd=n+t.length,e.scrollTop=o}else e.focus(),e.value+=t;setTimeout(function(t){d((0,y.default)(e))},100)},k={no:1,size:e.config.pageSize,skip:e.config.pageSize},A=e.$el.find(".vpage");A.on("click",function(e){A.hide(),k.no++,O()});var O=function(){var t=k.size,n=k.no,r=Number(e.$el.find(".vnum").text());e.$loading.show();var o=e.Q(e.config.path);o.limit(t),o.skip((n-1)*t),o.find().then(function(o){if(k.skip=k.size,o&&o.length){var i=[];o.forEach(function(t){i.push(t.id),C(t,e.$el.find(".vcards"),!0)}),e.Q(e.config.path,i).then(function(e){(e&&e.results||[]).forEach(function(e){C(e,(0,y.default)('.vquote[data-self-id="'+e.get("rid")+'"]'))}).catch(function(e){})}),t*n<r?A.show():A.hide()}else e.$nodata.show();e.$loading.hide()}).catch(function(t){e.$loading.hide(),(0,$.default)(e,t,"query")})};e.Q(e.config.path).count().then(function(t){t>0?(e.$el.find(".vcount").show().find(".vnum").text(t),O()):e.$loading.hide()}).catch(function(t){(0,$.default)(e,t,"count")});var C=function(t,n,r){var o=(0,y.default)('<div class="vcard" id="'+t.id+'"></div>'),i=t.get("ua"),a="";i&&!/ja/.test(e.config.lang)&&(i=y.default.detect(i),a='<span class="vsys">'+i.browser+" "+i.version+'</span> <span class="vsys">'+i.os+" "+i.osVersion+"</span>"),"*"===e.config.path&&(a='<a href="'+t.get("url")+'" class="vsys">'+t.get("url")+"</a>");var l=t.get("link")?/^https?\:\/\//.test(t.get("link"))?t.get("link"):"http://"+t.get("link"):"",c=l?'<a class="vnick" rel="nofollow" href="'+l+'" target="_blank" >'+t.get("nick")+"</a>":'<span class="vnick">'+t.get("nick")+"</span>",u=T.hide?"":e.config.enableQQ&&t.get("QQAvatar")?'<img class="vimg" src="'+t.get("QQAvatar")+'" referrerPolicy="no-referrer"/>':'<img class="vimg" src="'+(T.cdn+(0,s.default)(t.get("mail"))+T.params)+'">',d=u+'<div class="vh"><div class="vhead">'+c+" "+a+'</div><div class="vmeta"><span class="vtime" >'+(0,g.default)(t.get("insertedAt"),e.i18n)+'</span><span class="vat" data-vm-id="'+(t.get("rid")||t.id)+'" data-self-id="'+t.id+'">'+e.i18n.t("reply")+'</span></div><div class="vcontent" data-expand="'+e.i18n.t("expand")+'">'+(0,S.default)(t.get("comment"))+'</div><div class="vreply-wrapper" data-self-id="'+t.id+'"></div><div class="vquote" data-self-id="'+t.id+'"></div></div>';o.html(d);var p=o.find(".vat");o.find("a").forEach(function(e){e&&!(0,y.default)(e).hasClass("at")&&(0,y.default)(e).attr({target:"_blank",rel:"nofollow"})}),r?n.append(o):n.prepend(o);var f=o.find(".vcontent");f&&R(f),p&&P(p,t),M()},I={},P=function(t,n){t.on("click",function(r){var o=t.attr("data-vm-id"),i=t.attr("data-self-id"),a=e.$el.find(".vwrap"),s="@"+y.default.escape(n.get("nick"));(0,y.default)('.vreply-wrapper[data-self-id="'+i+'"]').append(a).find(".cancel-reply").show(),I={at:y.default.escape(s)+" ",rid:o,pid:i,rmail:n.get("mail")},v.comment.attr({placeholder:s})[0].focus()})},M=function(){setTimeout(function(){try{"MathJax"in window&&"version"in window.MathJax&&(/^3.*/.test(window.MathJax.version)&&MathJax.typeset()||MathJax.Hub.Queue(["Typeset",MathJax.Hub,document.querySelector(".v")])),"renderMathInElement"in window&&renderMathInElement((0,y.default)(".v")[0],{delimiters:[{left:"$$",right:"$$",display:!0},{left:"$",right:"$",display:!1}]})}catch(e){}},100)},R=function(e){setTimeout(function(){e[0].offsetHeight>200&&(e.addClass("expand"),e.on("click",function(t){e.removeClass("expand")}))})};!function(t){if(t=y.default.store.get(h.MetaCacheKey)||t)for(var n in p){var r=p[n];e.$el.find(".v"+r).val(y.default.unescape(t[r])),E[r]=t[r]}var o=y.default.store.get(h.QQCacheKey);E.QQAvatar=e.config.enableQQ&&!!o&&o.pic||""}(),e.reset=function(){E.comment="",v.comment.val(""),d(v.comment),v.comment.attr("placeholder",e.config.placeholder),I={},e.$preview.hide(),e.$el.find(".vpanel").append(e.$el.find(".vwrap")),e.$el.find(".cancel-reply").hide(),j=""};var z=e.$el.find(".vsubmit"),L=function(t){if(e.config.requiredFields.indexOf("nick")>-1&&E.nick.length<3)return v.nick[0].focus(),void e.$el.find(".status-bar").text(""+e.i18n.t("nickFail")).empty(3e3);if(e.config.requiredFields.indexOf("mail")>-1&&!/[\w-\.]+@([\w-]+\.)+[a-z]{2,3}/.test(E.mail))return v.mail[0].focus(),void e.$el.find(".status-bar").text(""+e.i18n.t("mailFail")).empty(3e3);if(""==j)return void v.comment[0].focus();E.comment=j,E.nick=E.nick||"Anonymous";var n=y.default.store.get("vlx");if(n){if(Date.now()/1e3-n/1e3<20)return void e.$el.find(".status-bar").text(e.i18n.t("busy")).empty(3e3)}U()},F=function(){var e=new AV.ACL;return e.setPublicReadAccess(!0),e.setPublicWriteAccess(!1),e},U=function(){y.default.store.set("vlx",Date.now()),z.attr({disabled:!0}),e.$loading.show(!0);var t=AV.Object.extend(e.config.clazzName||"Comment"),n=new t;if(E.url=decodeURI(e.config.path),E.insertedAt=new Date,I.rid){var r=I.pid||I.rid;n.set("rid",I.rid),n.set("pid",r),E.comment=j.replace("<p>",'<p><a class="at" href="#'+r+'">'+I.at+"</a> , ")}for(var o in E)if(E.hasOwnProperty(o)){var i=E[o];n.set(o,i)}n.setACL(F()),n.save().then(function(t){"Anonymous"!=E.nick&&y.default.store.set(h.MetaCacheKey,{nick:E.nick,link:E.link,mail:E.mail});var n=e.$el.find(".vnum");try{I.rid?C(t,(0,y.default)('.vquote[data-self-id="'+I.rid+'"]'),!0):(Number(n.text())?n.text(Number(n.text())+1):e.$el.find(".vcount").show().find(".vnum").text(Number(n.text())+1),C(t,e.$el.find(".vcards")),k.skip++),z.removeAttr("disabled"),e.$loading.hide(),e.reset()}catch(t){(0,$.default)(e,t,"save")}}).catch(function(t){(0,$.default)(e,t,"commitEvt")})};z.on("click",L),(0,y.default)(document).on("keydown",function(e){e=event||e;var t=e.keyCode||e.which||e.charCode;((e.ctrlKey||e.metaKey)&&13===t&&L(),9===t)&&("veditor"==(document.activeElement.id||"")&&(e.preventDefault(),x(i[0]," ")))}).on("paste",function(e){var t="clipboardData"in e?e.clipboardData:e.originalEvent&&e.originalEvent.clipboardData||window.clipboardData;t&&B(t.items,!0)}),i.on("dragenter dragleave dragover drop",function(e){e.stopPropagation(),e.preventDefault(),"drop"===e.type&&B(e.dataTransfer.items)});var B=function(e,t){for(var n=[],r=0,o=e.length;r<o;r++){var a=e[r];if("string"===a.kind&&a.type.match("^text/html"))!t&&a.getAsString(function(e){e&&x(i[0],e.replace(/<[^>]+>/g,""))});else if(-1!==a.type.indexOf("image")){n.push(a.getAsFile());continue}}N(n)},N=function t(n,r){r=r||0;var o=n.length;if(o>0){var a=n[r];z.attr({disabled:!0});var s="![Uploading "+a.name+"...]()";x(i[0],s),Q(a,function(l){500!=l.code?(i.val(i.val().replace(s,"!["+a.name+"]("+l.data.url+")\r\n")),(0,c.default)(i[0]),++r<o?t(n,r):z.removeAttr("disabled")):(i.val(i.val().replace(s,"")),(0,c.default)(i[0]),e.$el.find(".status-bar").text(l.msg).empty(3e3),z.removeAttr("disabled"))})}},Q=function(e,t){var n=new FormData;n.append("image",e),y.default.ajax({type:"post",url:"https://pic.alexhchu.com/api/upload",data:n,success:function(e){t&&t(e)}})}},e.exports=i,e.exports.default=i},function(e,t,n){"use strict";t.__esModule=!0;var r=n(0),o=function(e){return e&&e.__esModule?e:{default:e}}(r),i=!1;t.default=function(e,t){if("AV"in window){var n=window.AV.version||window.AV.VERSION;parseInt(n.split(".")[0])>2?i=!!AV.applicationId&&!!AV.applicationKey:o.default.deleteInWin("AV",0)}i?t&&t():o.default.sdkLoader("//cdn.jsdelivr.net/npm/leancloud-storage@3/dist/av-min.js","AV",function(n){var r="https://",o="",a=e.app_id||e.appId,s=e.app_key||e.appKey;if(!e.serverURLs)switch(a.slice(-9)){case"-9Nh9j0Va":r+="tab.";break;case"-MdYXbMMI":r+="us."}o=e.serverURLs||r+"avoscloud.com",AV.init({appId:a,appKey:s,serverURLs:o}),i=!0,t&&t()})}},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var o=n(37),i=r(o),a=n(56),s=r(a),l=n(57),c=r(l),u=n(54),d=r(u),p=n(55),f=r(p),h={zh:s.default,"zh-cn":s.default,"zh-CN":s.default,"zh-TW":c.default,en:d.default,"en-US":d.default,ja:f.default,"ja-JP":f.default};t.default=function(e,t){return!h[e]&&e&&t&&(h[e]=t),new i.default({phrases:h[e||"zh"],locale:e})}},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t){if(e.$el&&e.$loading.hide().$nodata.hide(),"[object Error]"==={}.toString.call(t)){var n=t.code||t.message||t.error||"";if(isNaN(n))e.$el&&e.$nodata.show('<pre style="text-align:left;"> '+JSON.stringify(t)+"</pre>");else{var r=e.i18n.t("code-"+n),o=(r=="code-"+n?void 0:r)||t.message||t.error||"";101==n||-1==n?e.$nodata.show():e.$el&&e.$nodata.show('<pre style="text-align:left;">Code '+n+": "+o+"</pre>")}}else e.$el&&e.$nodata.show('<pre style="text-align:left;">'+JSON.stringify(t)+"</pre>")}},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var o=n(36),i=r(o),a=n(0),s=r(a),l=n(6),c=r(l),u=n(33),d=new o.Renderer;d.code=function(e,t){return'<pre><code class="hljs language-'+t+'">'+(!t||!hljs.getLanguage(t)?s.default.escape(e):hljs.highlight(t,e).value)+"</code></pre>"},i.default.setOptions({renderer:"hljs"in window?d:new o.Renderer,highlight:function(e,t){return"hljs"in window?t&&hljs.getLanguage(t)&&hljs.highlight(t,e,!0).value||hljs.highlightAuto(e).value:u(e)},gfm:!0,tables:!0,breaks:!0,pedantic:!1,sanitize:!0,smartLists:!0,smartypants:!0,headerPrefi:"v-"}),t.default=function(e){return c.default.parse((0,i.default)(e))}},function(e,t,n){"use strict";t.__esModule=!0,t.recordIPFn=t.fetchQQFn=void 0;var r=n(0),o=function(e){return e&&e.__esModule?e:{default:e}}(r),i=n(2),a=function(e,t){var n=o.default.store.get(i.QQCacheKey);n&&n.qq==e?t&&t(n):o.default.ajax({type:"POST",url:"//valine.api.ioliu.cn/getqqinfo",data:{qq:e},success:function(e){e.errmsg||(o.default.store.set(i.QQCacheKey,e),t&&t(e))}})},s=function(e){o.default.sdkLoader("//api.ip.sb/jsonip?callback=getIP","getIP"),window.getIP=function(t){e&&e(t.ip),o.default.deleteInWin("getIP")}};t.fetchQQFn=a,t.recordIPFn=s},function(e,t,n){"use strict";var r=function(e,t){if(!e)return"";try{var n=i(e).getTime(),r=(new Date).getTime(),a=r-n,s=Math.floor(a/864e5);if(0===s){var l=a%864e5,c=Math.floor(l/36e5);if(0===c){var u=l%36e5,d=Math.floor(u/6e4);if(0===d){var p=u%6e4;return Math.round(p/1e3)+" "+t.t("seconds")}return d+" "+t.t("minutes")}return c+" "+t.t("hours")}return s<0?t.t("now"):s<8?s+" "+t.t("days"):o(e)}catch(e){}},o=function(e){var t=a(e.getDate(),2),n=a(e.getMonth()+1,2);return a(e.getFullYear(),2)+"-"+n+"-"+t},i=function e(t){return t instanceof Date?t:!isNaN(t)||/^\d+$/.test(t)?new Date(parseInt(t)):/GMT/.test(t||"")?e(new Date(t).getTime()):(t=(t||"").replace(/(^\s*)|(\s*$)/g,"").replace(/\.\d+/,"").replace(/-/,"/").replace(/-/,"/").replace(/(\d)T(\d)/,"$1 $2").replace(/Z/," UTC").replace(/([+-]\d\d):?(\d\d)/," $1$2"),new Date(t))},a=function(e,t){for(var n=e.toString();n.length<t;)n="0"+n;return n};e.exports=r},function(e,t,n){"use strict";t.__esModule=!0;var r=n(51),o=function(e){return e&&e.__esModule?e:{default:e}}(r);t.default=function(e){return(0,o.default)(e,{onTagAttr:function(e,t,n,r){return i(e,t,n,r)},onIgnoreTagAttr:function(e,t,n,r){return i(e,t,n,r)}}).replace(/\<\/?div\>/gi,"")};var i=function(e,t,n,r){if(/code|pre|span/gi.test(e)){if("style"==t)return t+'="'+(/^color/gi.test(n)?n:"").replace(/(color:[#0-9a-fA-F]{1,6};?).+/gi,"$1")+'"';if("class"==t)return t+"='"+o.default.escapeAttrValue(n)+"'"}if("img"===e&&["src","class"].indexOf(t)>-1)return t+'="'+o.default.escapeAttrValue(n)+'" referrerPolicy="no-referrer" '}},function(e,t,n){var r;!function(o){"use strict";function i(e,t){var n=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(n>>16)<<16|65535&n}function a(e,t){return e<<t|e>>>32-t}function s(e,t,n,r,o,s){return i(a(i(i(t,e),i(r,s)),o),n)}function l(e,t,n,r,o,i,a){return s(t&n|~t&r,e,t,o,i,a)}function c(e,t,n,r,o,i,a){return s(t&r|n&~r,e,t,o,i,a)}function u(e,t,n,r,o,i,a){return s(t^n^r,e,t,o,i,a)}function d(e,t,n,r,o,i,a){return s(n^(t|~r),e,t,o,i,a)}function p(e,t){e[t>>5]|=128<<t%32,e[14+(t+64>>>9<<4)]=t;var n,r,o,a,s,p=1732584193,f=-271733879,h=-1732584194,v=271733878;for(n=0;n<e.length;n+=16)r=p,o=f,a=h,s=v,p=l(p,f,h,v,e[n],7,-680876936),v=l(v,p,f,h,e[n+1],12,-389564586),h=l(h,v,p,f,e[n+2],17,606105819),f=l(f,h,v,p,e[n+3],22,-1044525330),p=l(p,f,h,v,e[n+4],7,-176418897),v=l(v,p,f,h,e[n+5],12,1200080426),h=l(h,v,p,f,e[n+6],17,-1473231341),f=l(f,h,v,p,e[n+7],22,-45705983),p=l(p,f,h,v,e[n+8],7,1770035416),v=l(v,p,f,h,e[n+9],12,-1958414417),h=l(h,v,p,f,e[n+10],17,-42063),f=l(f,h,v,p,e[n+11],22,-1990404162),p=l(p,f,h,v,e[n+12],7,1804603682),v=l(v,p,f,h,e[n+13],12,-40341101),h=l(h,v,p,f,e[n+14],17,-1502002290),f=l(f,h,v,p,e[n+15],22,1236535329),p=c(p,f,h,v,e[n+1],5,-165796510),v=c(v,p,f,h,e[n+6],9,-1069501632),h=c(h,v,p,f,e[n+11],14,643717713),f=c(f,h,v,p,e[n],20,-373897302),p=c(p,f,h,v,e[n+5],5,-701558691),v=c(v,p,f,h,e[n+10],9,38016083),h=c(h,v,p,f,e[n+15],14,-660478335),f=c(f,h,v,p,e[n+4],20,-405537848),p=c(p,f,h,v,e[n+9],5,568446438),v=c(v,p,f,h,e[n+14],9,-1019803690),h=c(h,v,p,f,e[n+3],14,-187363961),f=c(f,h,v,p,e[n+8],20,1163531501),p=c(p,f,h,v,e[n+13],5,-1444681467),v=c(v,p,f,h,e[n+2],9,-51403784),h=c(h,v,p,f,e[n+7],14,1735328473),f=c(f,h,v,p,e[n+12],20,-1926607734),p=u(p,f,h,v,e[n+5],4,-378558),v=u(v,p,f,h,e[n+8],11,-2022574463),h=u(h,v,p,f,e[n+11],16,1839030562),f=u(f,h,v,p,e[n+14],23,-35309556),p=u(p,f,h,v,e[n+1],4,-1530992060),v=u(v,p,f,h,e[n+4],11,1272893353),h=u(h,v,p,f,e[n+7],16,-155497632),f=u(f,h,v,p,e[n+10],23,-1094730640),p=u(p,f,h,v,e[n+13],4,681279174),v=u(v,p,f,h,e[n],11,-358537222),h=u(h,v,p,f,e[n+3],16,-722521979),f=u(f,h,v,p,e[n+6],23,76029189),p=u(p,f,h,v,e[n+9],4,-640364487),v=u(v,p,f,h,e[n+12],11,-421815835),h=u(h,v,p,f,e[n+15],16,530742520),f=u(f,h,v,p,e[n+2],23,-995338651),p=d(p,f,h,v,e[n],6,-198630844),v=d(v,p,f,h,e[n+7],10,1126891415),h=d(h,v,p,f,e[n+14],15,-1416354905),f=d(f,h,v,p,e[n+5],21,-57434055),p=d(p,f,h,v,e[n+12],6,1700485571),v=d(v,p,f,h,e[n+3],10,-1894986606),h=d(h,v,p,f,e[n+10],15,-1051523),f=d(f,h,v,p,e[n+1],21,-2054922799),p=d(p,f,h,v,e[n+8],6,1873313359),v=d(v,p,f,h,e[n+15],10,-30611744),h=d(h,v,p,f,e[n+6],15,-1560198380),f=d(f,h,v,p,e[n+13],21,1309151649),p=d(p,f,h,v,e[n+4],6,-145523070),v=d(v,p,f,h,e[n+11],10,-1120210379),h=d(h,v,p,f,e[n+2],15,718787259),f=d(f,h,v,p,e[n+9],21,-343485551),p=i(p,r),f=i(f,o),h=i(h,a),v=i(v,s);return[p,f,h,v]}function f(e){var t,n="",r=32*e.length;for(t=0;t<r;t+=8)n+=String.fromCharCode(e[t>>5]>>>t%32&255);return n}function h(e){var t,n=[];for(n[(e.length>>2)-1]=void 0,t=0;t<n.length;t+=1)n[t]=0;var r=8*e.length;for(t=0;t<r;t+=8)n[t>>5]|=(255&e.charCodeAt(t/8))<<t%32;return n}function v(e){return f(p(h(e),8*e.length))}function g(e,t){var n,r,o=h(e),i=[],a=[];for(i[15]=a[15]=void 0,o.length>16&&(o=p(o,8*e.length)),n=0;n<16;n+=1)i[n]=909522486^o[n],a[n]=1549556828^o[n];return r=p(i.concat(h(t)),512+8*t.length),f(p(a.concat(r),640))}function m(e){var t,n,r="0123456789abcdef",o="";for(n=0;n<e.length;n+=1)t=e.charCodeAt(n),o+=r.charAt(t>>>4&15)+r.charAt(15&t);return o}function y(e){return unescape(encodeURIComponent(e))}function b(e){return v(y(e))}function w(e){return m(b(e))}function x(e,t){return g(y(e),y(t))}function k(e,t){return m(x(e,t))}function _(e,t,n){return t?n?x(t,e):k(t,e):n?b(e):w(e)}void 0!==(r=function(){return _}.call(t,n,t,e))&&(e.exports=r)}()},function(e,t,n){"use strict";t.__esModule=!0;var r=function(e){e=e||navigator.userAgent;var t={},n={Trident:e.indexOf("Trident")>-1||e.indexOf("NET CLR")>-1,Presto:e.indexOf("Presto")>-1,WebKit:e.indexOf("AppleWebKit")>-1,Gecko:e.indexOf("Gecko/")>-1,Safari:e.indexOf("Safari")>-1,Edge:e.indexOf("Edge")>-1||e.indexOf("Edg")>-1,Chrome:e.indexOf("Chrome")>-1||e.indexOf("CriOS")>-1,IE:e.indexOf("MSIE")>-1||e.indexOf("Trident")>-1,Firefox:e.indexOf("Firefox")>-1||e.indexOf("FxiOS")>-1,"Firefox Focus":e.indexOf("Focus")>-1,Chromium:e.indexOf("Chromium")>-1,Opera:e.indexOf("Opera")>-1||e.indexOf("OPR")>-1,Vivaldi:e.indexOf("Vivaldi")>-1,Yandex:e.indexOf("YaBrowser")>-1,Kindle:e.indexOf("Kindle")>-1||e.indexOf("Silk/")>-1,360:e.indexOf("360EE")>-1||e.indexOf("360SE")>-1,UC:e.indexOf("UC")>-1||e.indexOf(" UBrowser")>-1,QQBrowser:e.indexOf("QQBrowser")>-1,QQ:e.indexOf("QQ/")>-1,Baidu:e.indexOf("Baidu")>-1||e.indexOf("BIDUBrowser")>-1,Maxthon:e.indexOf("Maxthon")>-1,Sogou:e.indexOf("MetaSr")>-1||e.indexOf("Sogou")>-1,LBBROWSER:e.indexOf("LBBROWSER")>-1,"2345Explorer":e.indexOf("2345Explorer")>-1,TheWorld:e.indexOf("TheWorld")>-1,XiaoMi:e.indexOf("MiuiBrowser")>-1,Quark:e.indexOf("Quark")>-1,Qiyu:e.indexOf("Qiyu")>-1,Wechat:e.indexOf("MicroMessenger")>-1,Taobao:e.indexOf("AliApp(TB")>-1,Alipay:e.indexOf("AliApp(AP")>-1,Weibo:e.indexOf("Weibo")>-1,Douban:e.indexOf("com.douban.frodo")>-1,Suning:e.indexOf("SNEBUY-APP")>-1,iQiYi:e.indexOf("IqiyiApp")>-1,Windows:e.indexOf("Windows")>-1,Linux:e.indexOf("Linux")>-1||e.indexOf("X11")>-1,macOS:e.indexOf("Macintosh")>-1,Android:e.indexOf("Android")>-1||e.indexOf("Adr")>-1,Ubuntu:e.indexOf("Ubuntu")>-1,FreeBSD:e.indexOf("FreeBSD")>-1,Debian:e.indexOf("Debian")>-1,"Windows Phone":e.indexOf("IEMobile")>-1||e.indexOf("Windows Phone")>-1,BlackBerry:e.indexOf("BlackBerry")>-1||e.indexOf("RIM")>-1||e.indexOf("BB10")>-1,MeeGo:e.indexOf("MeeGo")>-1,Symbian:e.indexOf("Symbian")>-1,iOS:e.indexOf("like Mac OS X")>-1,"Chrome OS":e.indexOf("CrOS")>-1,WebOS:e.indexOf("hpwOS")>-1,Mobile:e.indexOf("Mobi")>-1||e.indexOf("iPh")>-1||e.indexOf("480")>-1,Tablet:e.indexOf("Tablet")>-1||e.indexOf("Pad")>-1||e.indexOf("Nexus 7")>-1};n.Mobile&&(n.Mobile=!(e.indexOf("iPad")>-1));var r={browser:["Safari","Chrome","Edge","IE","Firefox","Firefox Focus","Chromium","Opera","Vivaldi","Yandex","Kindle","360","UC","QQBrowser","QQ","Baidu","Maxthon","Sogou","LBBROWSER","2345Explorer","TheWorld","XiaoMi","Quark","Qiyu","Wechat","Taobao","Alipay","Weibo","Douban","Suning","iQiYi"],os:["Windows","Linux","Mac OS","macOS","Android","Ubuntu","FreeBSD","Debian","iOS","Windows Phone","BlackBerry","MeeGo","Symbian","Chrome OS","WebOS"]};for(var o in r)if(r.hasOwnProperty(o))for(var i=0,a=r[o].length;i<a;i++){var s=r[o][i];n[s]&&(t[o]=s)}var l={Windows:function(){var t=e.replace(/^.*Windows NT ([\d.]+).*$/,"$1");return{6.4:"10",6.3:"8.1",6.2:"8",6.1:"7","6.0":"Vista",5.2:"XP",5.1:"XP","5.0":"2000"}[t]||t},Android:e.replace(/^.*Android ([\d.]+);.*$/,"$1"),iOS:e.replace(/^.*OS ([\d_]+) like.*$/,"$1").replace(/_/g,"."),Debian:e.replace(/^.*Debian\/([\d.]+).*$/,"$1"),"Windows Phone":e.replace(/^.*Windows Phone( OS)? ([\d.]+);.*$/,"$2"),macOS:e.replace(/^.*Mac OS X ([\d_]+).*$/,"$1").replace(/_/g,"."),WebOS:e.replace(/^.*hpwOS\/([\d.]+);.*$/,"$1"),BlackBerry:e.replace(/^.*BB([\d.]+);*$/,"$1")};t.osVersion="";var c=l[t.os];c&&(t.osVersion="function"==typeof c?c():c==e?"":c);var u={Safari:e.replace(/^.*Version\/([\d.]+).*$/,"$1"),Chrome:e.replace(/^.*Chrome\/([\d.]+).*$/,"$1").replace(/^.*CriOS\/([\d.]+).*$/,"$1"),IE:e.replace(/^.*MSIE ([\d.]+).*$/,"$1").replace(/^.*rv:([\d.]+).*$/,"$1"),Edge:e.replace(/^.*Edge?\/([\d.]+).*$/,"$1"),Firefox:e.replace(/^.*Firefox\/([\d.]+).*$/,"$1").replace(/^.*FxiOS\/([\d.]+).*$/,"$1"),"Firefox Focus":e.replace(/^.*Focus\/([\d.]+).*$/,"$1"),Chromium:e.replace(/^.*Chromium\/([\d.]+).*$/,"$1"),Opera:e.replace(/^.*Opera\/([\d.]+).*$/,"$1").replace(/^.*OPR\/([\d.]+).*$/,"$1"),Vivaldi:e.replace(/^.*Vivaldi\/([\d.]+).*$/,"$1"),Yandex:e.replace(/^.*YaBrowser\/([\d.]+).*$/,"$1"),Kindle:e.replace(/^.*Version\/([\d.]+).*$/,"$1"),Maxthon:e.replace(/^.*Maxthon\/([\d.]+).*$/,"$1"),QQBrowser:e.replace(/^.*QQBrowser\/([\d.]+).*$/,"$1"),QQ:e.replace(/^.*QQ\/([\d.]+).*$/,"$1"),Baidu:e.replace(/^.*BIDUBrowser[\s\/]([\d.]+).*$/,"$1"),UC:e.replace(/^.*UC?Browser\/([\d.]+).*$/,"$1"),Sogou:e.replace(/^.*SE ([\d.X]+).*$/,"$1").replace(/^.*SogouMobileBrowser\/([\d.]+).*$/,"$1"),"2345Explorer":e.replace(/^.*2345Explorer\/([\d.]+).*$/,"$1"),TheWorld:e.replace(/^.*TheWorld ([\d.]+).*$/,"$1"),XiaoMi:e.replace(/^.*MiuiBrowser\/([\d.]+).*$/,"$1"),Quark:e.replace(/^.*Quark\/([\d.]+).*$/,"$1"),Qiyu:e.replace(/^.*Qiyu\/([\d.]+).*$/,"$1"),Wechat:e.replace(/^.*MicroMessenger\/([\d.]+).*$/,"$1"),Taobao:e.replace(/^.*AliApp\(TB\/([\d.]+).*$/,"$1"),Alipay:e.replace(/^.*AliApp\(AP\/([\d.]+).*$/,"$1"),Weibo:e.replace(/^.*weibo__([\d.]+).*$/,"$1"),Douban:e.replace(/^.*com.douban.frodo\/([\d.]+).*$/,"$1"),Suning:e.replace(/^.*SNEBUY-APP([\d.]+).*$/,"$1"),iQiYi:e.replace(/^.*IqiyiVersion\/([\d.]+).*$/,"$1")};t.version="";var d=u[t.browser];return d&&(t.version="function"==typeof d?d():d==e?"":d),void 0==t.browser&&(t.browser="Unknow App"),t};t.default=r},function(e,t,n){var r,o;!function(n,i){var i=function(e,t,n){function r(o,i,a){return a=Object.create(r.fn),o&&a.push.apply(a,o[t]?[o]:""+o===o?/</.test(o)?((i=e.createElement(i)).innerHTML=o,i.children):i?(i=r(i)[0])?i[n](o):a:e[n](o):o),a}return r.fn=[],r.one=function(e,t){return r(e,t)[0]||null},r}(document,"addEventListener","querySelectorAll");r=[],void 0!==(o=function(){return i}.apply(t,r))&&(e.exports=o)}()},function(e,t,n){function r(e){return void 0===e||null===e}function o(e){var t={};for(var n in e)t[n]=e[n];return t}function i(e){e=o(e||{}),e.whiteList=e.whiteList||a.whiteList,e.onAttr=e.onAttr||a.onAttr,e.onIgnoreAttr=e.onIgnoreAttr||a.onIgnoreAttr,e.safeAttrValue=e.safeAttrValue||a.safeAttrValue,this.options=e}var a=n(7),s=n(30);n(8);i.prototype.process=function(e){if(e=e||"",!(e=e.toString()))return"";var t=this,n=t.options,o=n.whiteList,i=n.onAttr,a=n.onIgnoreAttr,l=n.safeAttrValue;return s(e,function(e,t,n,s,c){var u=o[n],d=!1;if(!0===u?d=u:"function"==typeof u?d=u(s):u instanceof RegExp&&(d=u.test(s)),!0!==d&&(d=!1),s=l(n,s)){var p={position:t,sourcePosition:e,source:c,isWhite:d};if(d){var f=i(n,s,p);return r(f)?n+":"+s:f}var f=a(n,s,p);return r(f)?void 0:f}})},e.exports=i},function(e,t,n){function r(e,t){function n(){if(!i){var n=o.trim(e.slice(a,s)),r=n.indexOf(":");if(-1!==r){var c=o.trim(n.slice(0,r)),u=o.trim(n.slice(r+1));if(c){var d=t(a,l.length,c,u,n);d&&(l+=d+"; ")}}}a=s+1}e=o.trimRight(e),";"!==e[e.length-1]&&(e+=";");for(var r=e.length,i=!1,a=0,s=0,l="";s<r;s++){var c=e[s];if("/"===c&&"*"===e[s+1]){var u=e.indexOf("*/",s+2);if(-1===u)break;s=u+1,a=s+1,i=!1}else"("===c?i=!0:")"===c?i=!1:";"===c?i||n():"\n"===c&&n()}return o.trim(l)}var o=n(8);e.exports=r},function(e,t,n){"use strict";var r=n(35),o=Object.prototype.toString,i=Object.prototype.hasOwnProperty,a=function(e,t,n){for(var r=0,o=e.length;r<o;r++)i.call(e,r)&&(null==n?t(e[r],r,e):t.call(n,e[r],r,e))},s=function(e,t,n){for(var r=0,o=e.length;r<o;r++)null==n?t(e.charAt(r),r,e):t.call(n,e.charAt(r),r,e)},l=function(e,t,n){for(var r in e)i.call(e,r)&&(null==n?t(e[r],r,e):t.call(n,e[r],r,e))},c=function(e,t,n){if(!r(t))throw new TypeError("iterator must be a function");var i;arguments.length>=3&&(i=n),"[object Array]"===o.call(e)?a(e,t,i):"string"==typeof e?s(e,t,i):l(e,t,i)};e.exports=c},function(e,t,n){"use strict";var r=Array.prototype.slice,o=Object.prototype.toString;e.exports=function(e){var t=this;if("function"!=typeof t||"[object Function]"!==o.call(t))throw new TypeError("Function.prototype.bind called on incompatible "+t);for(var n,i=r.call(arguments,1),a=function(){if(this instanceof n){var o=t.apply(this,i.concat(r.call(arguments)));return Object(o)===o?o:this}return t.apply(e,i.concat(r.call(arguments)))},s=Math.max(0,t.length-i.length),l=[],c=0;c<s;c++)l.push("$"+c);if(n=Function("binder","return function ("+l.join(",")+"){ return binder.apply(this,arguments); }")(a),t.prototype){var u=function(){};u.prototype=t.prototype,n.prototype=new u,u.prototype=null}return n}},function(e,t,n){!function(t,n){e.exports=n()}(0,function(){"use strict";function e(e){return'<span style="color: slategray">'+e+"</span>"}var t=function(e,t){return t={exports:{}},e(t,t.exports),t.exports}(function(e){var t=e.exports=function(){return new RegExp("(?:"+t.line().source+")|(?:"+t.block().source+")","gm")};t.line=function(){return/(?:^|\s)\/\/(.+?)$/gm},t.block=function(){return/\/\*([\S\s]*?)\*\//gm}}),n=["23AC69","91C132","F19726","E8552D","1AAB8E","E1147F","2980C1","1BA1E6","9FA0A0","F19726","E30B20","E30B20","A3338B"];return function(r,o){void 0===o&&(o={});var i=o.colors;void 0===i&&(i=n);var a=0,s={},l=/[\u4E00-\u9FFF\u3400-\u4dbf\uf900-\ufaff\u3040-\u309f\uac00-\ud7af\u0400-\u04FF]+|\w+/,c=/</,u=new RegExp("("+l.source+"|"+c.source+")|("+t().source+")","gmi");return r.replace(u,function(t,n,r){if(r)return e(r);if("<"===n)return"&lt;";var o;s[n]?o=s[n]:(o=i[a],s[n]=o);var l='<span style="color: #'+o+'">'+n+"</span>";return a=++a%i.length,l})}})},function(e,t,n){"use strict";var r=n(4);e.exports=r.call(Function.call,Object.prototype.hasOwnProperty)},function(e,t,n){"use strict";var r=Function.prototype.toString,o=/^\s*class\b/,i=function(e){try{var t=r.call(e);return o.test(t)}catch(e){return!1}},a=function(e){try{return!i(e)&&(r.call(e),!0)}catch(e){return!1}},s=Object.prototype.toString,l="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;e.exports=function(e){if(!e)return!1;if("function"!=typeof e&&"object"!=typeof e)return!1;if("function"==typeof e&&!e.prototype)return!0;if(l)return a(e);if(i(e))return!1;var t=s.call(e);return"[object Function]"===t||"[object GeneratorFunction]"===t}},function(e,t,n){(function(t){!function(t){"use strict";function n(e){this.tokens=[],this.tokens.links={},this.options=e||h.defaults,this.rules=v.normal,this.options.pedantic?this.rules=v.pedantic:this.options.gfm&&(this.options.tables?this.rules=v.tables:this.rules=v.gfm)}function r(e,t){if(this.options=t||h.defaults,this.links=e,this.rules=g.normal,this.renderer=this.options.renderer||new o,this.renderer.options=this.options,!this.links)throw new Error("Tokens array requires a `links` property.");this.options.pedantic?this.rules=g.pedantic:this.options.gfm&&(this.options.breaks?this.rules=g.breaks:this.rules=g.gfm)}function o(e){this.options=e||h.defaults}function i(){}function a(e){this.tokens=[],this.token=null,this.options=e||h.defaults,this.options.renderer=this.options.renderer||new o,this.renderer=this.options.renderer,this.renderer.options=this.options}function s(e,t){return e.replace(t?/&/g:/&(?!#?\w+;)/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function l(e){return e.replace(/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi,function(e,t){return t=t.toLowerCase(),"colon"===t?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):""})}function c(e,t){return e=e.source||e,t=t||"",{replace:function(t,n){return n=n.source||n,n=n.replace(/(^|[^\[])\^/g,"$1"),e=e.replace(t,n),this},getRegex:function(){return new RegExp(e,t)}}}function u(e,t){return m[" "+e]||(/^[^:]+:\/*[^/]*$/.test(e)?m[" "+e]=e+"/":m[" "+e]=e.replace(/[^/]*$/,"")),e=m[" "+e],"//"===t.slice(0,2)?e.replace(/:[\s\S]*/,":")+t:"/"===t.charAt(0)?e.replace(/(:\/*[^/]*)[\s\S]*/,"$1")+t:e+t}function d(){}function p(e){for(var t,n,r=1;r<arguments.length;r++){t=arguments[r];for(n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])}return e}function f(e,t){var n=e.replace(/([^\\])\|/g,"$1 |").split(/ +\| */),r=0;if(n.length>t)n.splice(t);else for(;n.length<t;)n.push("");for(;r<n.length;r++)n[r]=n[r].replace(/\\\|/g,"|");return n}function h(e,t,r){if(void 0===e||null===e)throw new Error("marked(): input parameter is undefined or null");if("string"!=typeof e)throw new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected");if(r||"function"==typeof t){r||(r=t,t=null),t=p({},h.defaults,t||{});var o,i,l=t.highlight,c=0;try{o=n.lex(e,t)}catch(e){return r(e)}i=o.length;var u=function(e){if(e)return t.highlight=l,r(e);var n;try{n=a.parse(o,t)}catch(t){e=t}return t.highlight=l,e?r(e):r(null,n)};if(!l||l.length<3)return u();if(delete t.highlight,!i)return u();for(;c<o.length;c++)!function(e){"code"!==e.type?--i||u():l(e.text,e.lang,function(t,n){return t?u(t):null==n||n===e.text?--i||u():(e.text=n,e.escaped=!0,void(--i||u()))})}(o[c])}else try{return t&&(t=p({},h.defaults,t)),a.parse(n.lex(e,t),t)}catch(e){if(e.message+="\nPlease report this to https://github.com/markedjs/marked.",(t||h.defaults).silent)return"<p>An error occurred:</p><pre>"+s(e.message+"",!0)+"</pre>";throw e}}var v={newline:/^\n+/,code:/^( {4}[^\n]+\n*)+/,fences:d,hr:/^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\* *){3,})(?:\n+|$)/,heading:/^ *(#{1,6}) *([^\n]+?) *(?:#+ *)?(?:\n+|$)/,nptable:d,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( *)(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,html:"^ {0,3}(?:<(script|pre|style)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?\\?>\\n*|<![A-Z][\\s\\S]*?>\\n*|<!\\[CDATA\\[[\\s\\S]*?\\]\\]>\\n*|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:\\n{2,}|$)|<(?!script|pre|style)([a-z][\\w-]*)(?:attribute)*? */?>(?=\\h*\\n)[\\s\\S]*?(?:\\n{2,}|$)|</(?!script|pre|style)[a-z][\\w-]*\\s*>(?=\\h*\\n)[\\s\\S]*?(?:\\n{2,}|$))",def:/^ {0,3}\[(label)\]: *\n? *<?([^\s>]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/,table:d,lheading:/^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/,paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading| {0,3}>|<\/?(?:tag)(?: +|\n|\/?>)|<(?:script|pre|style|!--))[^\n]+)*)/,text:/^[^\n]+/};v._label=/(?!\s*\])(?:\\[\[\]]|[^\[\]])+/,v._title=/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/,v.def=c(v.def).replace("label",v._label).replace("title",v._title).getRegex(),v.bullet=/(?:[*+-]|\d+\.)/,v.item=/^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/,v.item=c(v.item,"gm").replace(/bull/g,v.bullet).getRegex(),v.list=c(v.list).replace(/bull/g,v.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+v.def.source+")").getRegex(),v._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",v._comment=/<!--(?!-?>)[\s\S]*?-->/,v.html=c(v.html,"i").replace("comment",v._comment).replace("tag",v._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),v.paragraph=c(v.paragraph).replace("hr",v.hr).replace("heading",v.heading).replace("lheading",v.lheading).replace("tag",v._tag).getRegex(),v.blockquote=c(v.blockquote).replace("paragraph",v.paragraph).getRegex(),v.normal=p({},v),v.gfm=p({},v.normal,{fences:/^ *(`{3,}|~{3,})[ \.]*(\S+)? *\n([\s\S]*?)\n? *\1 *(?:\n+|$)/,paragraph:/^/,heading:/^ *(#{1,6}) +([^\n]+?) *#* *(?:\n+|$)/}),v.gfm.paragraph=c(v.paragraph).replace("(?!","(?!"+v.gfm.fences.source.replace("\\1","\\2")+"|"+v.list.source.replace("\\1","\\3")+"|").getRegex(),v.tables=p({},v.gfm,{nptable:/^ *([^|\n ].*\|.*)\n *([-:]+ *\|[-| :]*)(?:\n((?:.*[^>\n ].*(?:\n|$))*)\n*|$)/,table:/^ *\|(.+)\n *\|?( *[-:]+[-| :]*)(?:\n((?: *[^>\n ].*(?:\n|$))*)\n*|$)/}),v.pedantic=p({},v.normal,{html:c("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\s[^'\"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",v._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/}),n.rules=v,n.lex=function(e,t){return new n(t).lex(e)},n.prototype.lex=function(e){return e=e.replace(/\r\n|\r/g,"\n").replace(/\t/g," ").replace(/\u00a0/g," ").replace(/\u2424/g,"\n"),this.token(e,!0)},n.prototype.token=function(e,t){e=e.replace(/^ +$/gm,"");for(var n,r,o,i,a,s,l,c,u,d,p,h,g;e;)if((o=this.rules.newline.exec(e))&&(e=e.substring(o[0].length),o[0].length>1&&this.tokens.push({type:"space"})),o=this.rules.code.exec(e))e=e.substring(o[0].length),o=o[0].replace(/^ {4}/gm,""),this.tokens.push({type:"code",text:this.options.pedantic?o:o.replace(/\n+$/,"")});else if(o=this.rules.fences.exec(e))e=e.substring(o[0].length),this.tokens.push({type:"code",lang:o[2],text:o[3]||""});else if(o=this.rules.heading.exec(e))e=e.substring(o[0].length),this.tokens.push({type:"heading",depth:o[1].length,text:o[2]});else if(t&&(o=this.rules.nptable.exec(e))&&(s={type:"table",header:f(o[1].replace(/^ *| *\| *$/g,"")),align:o[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:o[3]?o[3].replace(/\n$/,"").split("\n"):[]},s.header.length===s.align.length)){for(e=e.substring(o[0].length),c=0;c<s.align.length;c++)/^ *-+: *$/.test(s.align[c])?s.align[c]="right":/^ *:-+: *$/.test(s.align[c])?s.align[c]="center":/^ *:-+ *$/.test(s.align[c])?s.align[c]="left":s.align[c]=null;for(c=0;c<s.cells.length;c++)s.cells[c]=f(s.cells[c],s.header.length);this.tokens.push(s)}else if(o=this.rules.hr.exec(e))e=e.substring(o[0].length),this.tokens.push({type:"hr"});else if(o=this.rules.blockquote.exec(e))e=e.substring(o[0].length),this.tokens.push({type:"blockquote_start"}),o=o[0].replace(/^ *> ?/gm,""),this.token(o,t),this.tokens.push({type:"blockquote_end"});else if(o=this.rules.list.exec(e)){for(e=e.substring(o[0].length),i=o[2],p=i.length>1,this.tokens.push({type:"list_start",ordered:p,start:p?+i:""}),o=o[0].match(this.rules.item),n=!1,d=o.length,c=0;c<d;c++)s=o[c],l=s.length,s=s.replace(/^ *([*+-]|\d+\.) +/,""),~s.indexOf("\n ")&&(l-=s.length,s=this.options.pedantic?s.replace(/^ {1,4}/gm,""):s.replace(new RegExp("^ {1,"+l+"}","gm"),"")),this.options.smartLists&&c!==d-1&&(a=v.bullet.exec(o[c+1])[0],i===a||i.length>1&&a.length>1||(e=o.slice(c+1).join("\n")+e,c=d-1)),r=n||/\n\n(?!\s*$)/.test(s),c!==d-1&&(n="\n"===s.charAt(s.length-1),r||(r=n)),h=/^\[[ xX]\] /.test(s),g=void 0,h&&(g=" "!==s[1],s=s.replace(/^\[[ xX]\] +/,"")),this.tokens.push({type:r?"loose_item_start":"list_item_start",task:h,checked:g}),this.token(s,!1),this.tokens.push({type:"list_item_end"});this.tokens.push({type:"list_end"})}else if(o=this.rules.html.exec(e))e=e.substring(o[0].length),this.tokens.push({type:this.options.sanitize?"paragraph":"html",pre:!this.options.sanitizer&&("pre"===o[1]||"script"===o[1]||"style"===o[1]),text:o[0]});else if(t&&(o=this.rules.def.exec(e)))e=e.substring(o[0].length),o[3]&&(o[3]=o[3].substring(1,o[3].length-1)),u=o[1].toLowerCase().replace(/\s+/g," "),this.tokens.links[u]||(this.tokens.links[u]={href:o[2],title:o[3]});else if(t&&(o=this.rules.table.exec(e))&&(s={type:"table",header:f(o[1].replace(/^ *| *\| *$/g,"")),align:o[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:o[3]?o[3].replace(/(?: *\| *)?\n$/,"").split("\n"):[]},s.header.length===s.align.length)){for(e=e.substring(o[0].length),c=0;c<s.align.length;c++)/^ *-+: *$/.test(s.align[c])?s.align[c]="right":/^ *:-+: *$/.test(s.align[c])?s.align[c]="center":/^ *:-+ *$/.test(s.align[c])?s.align[c]="left":s.align[c]=null;for(c=0;c<s.cells.length;c++)s.cells[c]=f(s.cells[c].replace(/^ *\| *| *\| *$/g,""),s.header.length);this.tokens.push(s)}else if(o=this.rules.lheading.exec(e))e=e.substring(o[0].length),this.tokens.push({type:"heading",depth:"="===o[2]?1:2,text:o[1]});else if(t&&(o=this.rules.paragraph.exec(e)))e=e.substring(o[0].length),this.tokens.push({type:"paragraph",text:"\n"===o[1].charAt(o[1].length-1)?o[1].slice(0,-1):o[1]});else if(o=this.rules.text.exec(e))e=e.substring(o[0].length),this.tokens.push({type:"text",text:o[0]});else if(e)throw new Error("Infinite loop on byte: "+e.charCodeAt(0));return this.tokens};var g={escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:d,tag:"^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>",link:/^!?\[(label)\]\(href(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(?!\s*\])((?:\\[\[\]]?|[^\[\]\\])+)\]/,nolink:/^!?\[(?!\s*\])((?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]])*)\](?:\[\])?/,strong:/^__([^\s][\s\S]*?[^\s])__(?!_)|^\*\*([^\s][\s\S]*?[^\s])\*\*(?!\*)|^__([^\s])__(?!_)|^\*\*([^\s])\*\*(?!\*)/,em:/^_([^\s][\s\S]*?[^\s_])_(?!_)|^_([^\s_][\s\S]*?[^\s])_(?!_)|^\*([^\s][\s\S]*?[^\s*])\*(?!\*)|^\*([^\s*][\s\S]*?[^\s])\*(?!\*)|^_([^\s_])_(?!_)|^\*([^\s*])\*(?!\*)/,code:/^(`+)\s*([\s\S]*?[^`]?)\s*\1(?!`)/,br:/^ {2,}\n(?!\s*$)/,del:d,text:/^[\s\S]+?(?=[\\<!\[`*]|\b_| {2,}\n|$)/};g._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g,g._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,g._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,g.autolink=c(g.autolink).replace("scheme",g._scheme).replace("email",g._email).getRegex(),g._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,g.tag=c(g.tag).replace("comment",v._comment).replace("attribute",g._attribute).getRegex(),g._label=/(?:\[[^\[\]]*\]|\\[\[\]]?|`[^`]*`|[^\[\]\\])*?/,g._href=/\s*(<(?:\\[<>]?|[^\s<>\\])*>|(?:\\[()]?|\([^\s\x00-\x1f()\\]*\)|[^\s\x00-\x1f()\\])*?)/,g._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,g.link=c(g.link).replace("label",g._label).replace("href",g._href).replace("title",g._title).getRegex(),g.reflink=c(g.reflink).replace("label",g._label).getRegex(),g.normal=p({},g),g.pedantic=p({},g.normal,{strong:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,em:/^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/,link:c(/^!?\[(label)\]\((.*?)\)/).replace("label",g._label).getRegex(),reflink:c(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",g._label).getRegex()}),g.gfm=p({},g.normal,{escape:c(g.escape).replace("])","~|])").getRegex(),url:c(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("email",g._email).getRegex(),_backpedal:/(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,del:/^~~(?=\S)([\s\S]*?\S)~~/,text:c(g.text).replace("]|","~]|").replace("|","|https?://|ftp://|www\\.|[a-zA-Z0-9.!#$%&'*+/=?^_`{\\|}~-]+@|").getRegex()}),g.breaks=p({},g.gfm,{br:c(g.br).replace("{2,}","*").getRegex(),text:c(g.gfm.text).replace("{2,}","*").getRegex()}),r.rules=g,r.output=function(e,t,n){return new r(t,n).output(e)},r.prototype.output=function(e){for(var t,n,o,i,a,l="";e;)if(a=this.rules.escape.exec(e))e=e.substring(a[0].length),l+=a[1];else if(a=this.rules.autolink.exec(e))e=e.substring(a[0].length),"@"===a[2]?(n=s(this.mangle(a[1])),o="mailto:"+n):(n=s(a[1]),o=n),l+=this.renderer.link(o,null,n);else if(this.inLink||!(a=this.rules.url.exec(e))){if(a=this.rules.tag.exec(e))!this.inLink&&/^<a /i.test(a[0])?this.inLink=!0:this.inLink&&/^<\/a>/i.test(a[0])&&(this.inLink=!1),e=e.substring(a[0].length),l+=this.options.sanitize?this.options.sanitizer?this.options.sanitizer(a[0]):s(a[0]):a[0];else if(a=this.rules.link.exec(e))e=e.substring(a[0].length),this.inLink=!0,o=a[2],this.options.pedantic?(t=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(o),t?(o=t[1],i=t[3]):i=""):i=a[3]?a[3].slice(1,-1):"",o=o.trim().replace(/^<([\s\S]*)>$/,"$1"),l+=this.outputLink(a,{href:r.escapes(o),title:r.escapes(i)}),this.inLink=!1;else if((a=this.rules.reflink.exec(e))||(a=this.rules.nolink.exec(e))){if(e=e.substring(a[0].length),t=(a[2]||a[1]).replace(/\s+/g," "),!(t=this.links[t.toLowerCase()])||!t.href){l+=a[0].charAt(0),e=a[0].substring(1)+e;continue}this.inLink=!0,l+=this.outputLink(a,t),this.inLink=!1}else if(a=this.rules.strong.exec(e))e=e.substring(a[0].length),l+=this.renderer.strong(this.output(a[4]||a[3]||a[2]||a[1]));else if(a=this.rules.em.exec(e))e=e.substring(a[0].length),l+=this.renderer.em(this.output(a[6]||a[5]||a[4]||a[3]||a[2]||a[1]));else if(a=this.rules.code.exec(e))e=e.substring(a[0].length),l+=this.renderer.codespan(s(a[2].trim(),!0));else if(a=this.rules.br.exec(e))e=e.substring(a[0].length),l+=this.renderer.br();else if(a=this.rules.del.exec(e))e=e.substring(a[0].length),l+=this.renderer.del(this.output(a[1]));else if(a=this.rules.text.exec(e))e=e.substring(a[0].length),l+=this.renderer.text(s(this.smartypants(a[0])));else if(e)throw new Error("Infinite loop on byte: "+e.charCodeAt(0))}else a[0]=this.rules._backpedal.exec(a[0])[0],e=e.substring(a[0].length),"@"===a[2]?(n=s(a[0]),o="mailto:"+n):(n=s(a[0]),o="www."===a[1]?"http://"+n:n),l+=this.renderer.link(o,null,n);return l},r.escapes=function(e){return e?e.replace(r.rules._escapes,"$1"):e},r.prototype.outputLink=function(e,t){var n=t.href,r=t.title?s(t.title):null;return"!"!==e[0].charAt(0)?this.renderer.link(n,r,this.output(e[1])):this.renderer.image(n,r,s(e[1]))},r.prototype.smartypants=function(e){return this.options.smartypants?e.replace(/---/g,"—").replace(/--/g,"–").replace(/(^|[-\u2014/(\[{"\s])'/g,"$1‘").replace(/'/g,"’").replace(/(^|[-\u2014/(\[{\u2018\s])"/g,"$1“").replace(/"/g,"”").replace(/\.{3}/g,"…"):e},r.prototype.mangle=function(e){if(!this.options.mangle)return e;for(var t,n="",r=e.length,o=0;o<r;o++)t=e.charCodeAt(o),Math.random()>.5&&(t="x"+t.toString(16)),n+="&#"+t+";";return n},o.prototype.code=function(e,t,n){if(this.options.highlight){var r=this.options.highlight(e,t);null!=r&&r!==e&&(n=!0,e=r)}return t?'<pre><code class="'+this.options.langPrefix+s(t,!0)+'">'+(n?e:s(e,!0))+"</code></pre>\n":"<pre><code>"+(n?e:s(e,!0))+"</code></pre>"},o.prototype.blockquote=function(e){return"<blockquote>\n"+e+"</blockquote>\n"},o.prototype.html=function(e){return e},o.prototype.heading=function(e,t,n){return this.options.headerIds?"<h"+t+' id="'+this.options.headerPrefix+n.toLowerCase().replace(/[^\w]+/g,"-")+'">'+e+"</h"+t+">\n":"<h"+t+">"+e+"</h"+t+">\n"},o.prototype.hr=function(){return this.options.xhtml?"<hr/>\n":"<hr>\n"},o.prototype.list=function(e,t,n){var r=t?"ol":"ul";return"<"+r+(t&&1!==n?' start="'+n+'"':"")+">\n"+e+"</"+r+">\n"},o.prototype.listitem=function(e){return"<li>"+e+"</li>\n"},o.prototype.checkbox=function(e){return"<input "+(e?'checked="" ':"")+'disabled="" type="checkbox"'+(this.options.xhtml?" /":"")+"> "},o.prototype.paragraph=function(e){return"<p>"+e+"</p>\n"},o.prototype.table=function(e,t){return t&&(t="<tbody>"+t+"</tbody>"),"<table>\n<thead>\n"+e+"</thead>\n"+t+"</table>\n"},o.prototype.tablerow=function(e){return"<tr>\n"+e+"</tr>\n"},o.prototype.tablecell=function(e,t){var n=t.header?"th":"td";return(t.align?"<"+n+' align="'+t.align+'">':"<"+n+">")+e+"</"+n+">\n"},o.prototype.strong=function(e){return"<strong>"+e+"</strong>"},o.prototype.em=function(e){return"<em>"+e+"</em>"},o.prototype.codespan=function(e){return"<code>"+e+"</code>"},o.prototype.br=function(){return this.options.xhtml?"<br/>":"<br>"},o.prototype.del=function(e){return"<del>"+e+"</del>"},o.prototype.link=function(e,t,n){if(this.options.sanitize){try{var r=decodeURIComponent(l(e)).replace(/[^\w:]/g,"").toLowerCase()}catch(e){return n}if(0===r.indexOf("javascript:")||0===r.indexOf("vbscript:")||0===r.indexOf("data:"))return n}this.options.baseUrl&&!y.test(e)&&(e=u(this.options.baseUrl,e));try{e=encodeURI(e).replace(/%25/g,"%")}catch(e){return n}var o='<a href="'+s(e)+'"';return t&&(o+=' title="'+t+'"'),o+=">"+n+"</a>"},o.prototype.image=function(e,t,n){this.options.baseUrl&&!y.test(e)&&(e=u(this.options.baseUrl,e));var r='<img src="'+e+'" alt="'+n+'"';return t&&(r+=' title="'+t+'"'),r+=this.options.xhtml?"/>":">"},o.prototype.text=function(e){return e},i.prototype.strong=i.prototype.em=i.prototype.codespan=i.prototype.del=i.prototype.text=function(e){return e},i.prototype.link=i.prototype.image=function(e,t,n){return""+n},i.prototype.br=function(){return""},a.parse=function(e,t){return new a(t).parse(e)},a.prototype.parse=function(e){this.inline=new r(e.links,this.options),this.inlineText=new r(e.links,p({},this.options,{renderer:new i})),this.tokens=e.reverse();for(var t="";this.next();)t+=this.tok();return t},a.prototype.next=function(){return this.token=this.tokens.pop()},a.prototype.peek=function(){return this.tokens[this.tokens.length-1]||0},a.prototype.parseText=function(){for(var e=this.token.text;"text"===this.peek().type;)e+="\n"+this.next().text;return this.inline.output(e)},a.prototype.tok=function(){switch(this.token.type){case"space":return"";case"hr":return this.renderer.hr();case"heading":return this.renderer.heading(this.inline.output(this.token.text),this.token.depth,l(this.inlineText.output(this.token.text)));case"code":return this.renderer.code(this.token.text,this.token.lang,this.token.escaped);case"table":var e,t,n,r,o="",i="";for(n="",e=0;e<this.token.header.length;e++)n+=this.renderer.tablecell(this.inline.output(this.token.header[e]),{header:!0,align:this.token.align[e]});for(o+=this.renderer.tablerow(n),e=0;e<this.token.cells.length;e++){for(t=this.token.cells[e],n="",r=0;r<t.length;r++)n+=this.renderer.tablecell(this.inline.output(t[r]),{header:!1,align:this.token.align[r]});i+=this.renderer.tablerow(n)}return this.renderer.table(o,i);case"blockquote_start":for(i="";"blockquote_end"!==this.next().type;)i+=this.tok();return this.renderer.blockquote(i);case"list_start":i="";for(var a=this.token.ordered,s=this.token.start;"list_end"!==this.next().type;)i+=this.tok();return this.renderer.list(i,a,s);case"list_item_start":for(i="",this.token.task&&(i+=this.renderer.checkbox(this.token.checked));"list_item_end"!==this.next().type;)i+="text"===this.token.type?this.parseText():this.tok();return this.renderer.listitem(i);case"loose_item_start":for(i="";"list_item_end"!==this.next().type;)i+=this.tok();return this.renderer.listitem(i);case"html":return this.renderer.html(this.token.text);case"paragraph":return this.renderer.paragraph(this.inline.output(this.token.text));case"text":return this.renderer.paragraph(this.parseText())}};var m={},y=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;d.exec=d,h.options=h.setOptions=function(e){return p(h.defaults,e),h},h.getDefaults=function(){return{baseUrl:null,breaks:!1,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:new o,sanitize:!1,sanitizer:null,silent:!1,smartLists:!1,smartypants:!1,tables:!0,xhtml:!1}},h.defaults=h.getDefaults(),h.Parser=a,h.parser=a.parse,h.Renderer=o,h.TextRenderer=i,h.Lexer=n,h.lexer=n.lex,h.InlineLexer=r,h.inlineLexer=r.output,h.parse=h,e.exports=h}(this||"undefined"!=typeof window&&window)}).call(t,n(14))},function(e,t,n){"use strict";function r(e){var t={};return u(e,function(e,n){u(e,function(e){t[e]=n})}),t}function o(e,t){var n=r(e.pluralTypeToLanguages);return n[t]||n[g.call(t,/-/,1)[0]]||n.en}function i(e,t,n){return e.pluralTypes[o(e,t)](n)}function a(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function s(e){var t=e&&e.prefix||"%{",n=e&&e.suffix||"}";if(t===m||n===m)throw new RangeError('"'+m+'" token is reserved for pluralization');return new RegExp(a(t)+"(.*?)"+a(n),"g")}function l(e,t,n,r,o){if("string"!=typeof e)throw new TypeError("Polyglot.transformPhrase expects argument #1 to be string");if(null==t)return e;var a=e,s=r||w,l=o||b,c="number"==typeof t?{smart_count:t}:t;if(null!=c.smart_count&&a){var u=g.call(a,m);a=f(u[i(l,n||"en",c.smart_count)]||u[0])}return a=v.call(a,s,function(e,t){return p(c,t)&&null!=c[t]?c[t]:e})}function c(e){var t=e||{};this.phrases={},this.extend(t.phrases||{}),this.currentLocale=t.locale||"en";var n=t.allowMissing?l:null;this.onMissingKey="function"==typeof t.onMissingKey?t.onMissingKey:n,this.warn=t.warn||h,this.tokenRegex=s(t.interpolation),this.pluralRules=t.pluralRules||b}var u=n(31),d=n(50),p=n(34),f=n(43),h=function(e){d(!1,e)},v=String.prototype.replace,g=String.prototype.split,m="||||",y=function(e){var t=e%100,n=t%10;return 11!==t&&1===n?0:2<=n&&n<=4&&!(t>=12&&t<=14)?1:2},b={pluralTypes:{arabic:function(e){if(e<3)return e;var t=e%100;return t>=3&&t<=10?3:t>=11?4:5},bosnian_serbian:y,chinese:function(){return 0},croatian:y,french:function(e){return e>1?1:0},german:function(e){return 1!==e?1:0},russian:y,lithuanian:function(e){return e%10==1&&e%100!=11?0:e%10>=2&&e%10<=9&&(e%100<11||e%100>19)?1:2},czech:function(e){return 1===e?0:e>=2&&e<=4?1:2},polish:function(e){if(1===e)return 0;var t=e%10;return 2<=t&&t<=4&&(e%100<10||e%100>=20)?1:2},icelandic:function(e){return e%10!=1||e%100==11?1:0},slovenian:function(e){var t=e%100;return 1===t?0:2===t?1:3===t||4===t?2:3}},pluralTypeToLanguages:{arabic:["ar"],bosnian_serbian:["bs-Latn-BA","bs-Cyrl-BA","srl-RS","sr-RS"],chinese:["id","id-ID","ja","ko","ko-KR","lo","ms","th","th-TH","zh"],croatian:["hr","hr-HR"],german:["fa","da","de","en","es","fi","el","he","hi-IN","hu","hu-HU","it","nl","no","pt","sv","tr"],french:["fr","tl","pt-br"],russian:["ru","ru-RU"],lithuanian:["lt"],czech:["cs","cs-CZ","sk"],polish:["pl"],icelandic:["is"],slovenian:["sl-SL"]}},w=/%\{(.*?)\}/g;c.prototype.locale=function(e){return e&&(this.currentLocale=e),this.currentLocale},c.prototype.extend=function(e,t){u(e,function(e,n){var r=t?t+"."+n:n;"object"==typeof e?this.extend(e,r):this.phrases[r]=e},this)},c.prototype.unset=function(e,t){"string"==typeof e?delete this.phrases[e]:u(e,function(e,n){var r=t?t+"."+n:n;"object"==typeof e?this.unset(e,r):delete this.phrases[r]},this)},c.prototype.clear=function(){this.phrases={}},c.prototype.replace=function(e){this.clear(),this.extend(e)},c.prototype.t=function(e,t){var n,r,o=null==t?{}:t;if("string"==typeof this.phrases[e])n=this.phrases[e];else if("string"==typeof o._)n=o._;else if(this.onMissingKey){var i=this.onMissingKey;r=i(e,o,this.currentLocale,this.tokenRegex,this.pluralRules)}else this.warn('Missing translation for key: "'+e+'"'),r=e;return"string"==typeof n&&(r=l(n,o,this.currentLocale,this.tokenRegex,this.pluralRules)),r},c.prototype.has=function(e){return p(this.phrases,e)},c.transformPhrase=function(e,t,n){return l(e,t,n)},e.exports=c},function(e,t,n){"use strict";function r(e){if(null===e||void 0===e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}/*
+!function(n,a){i=[e,t],r=a,void 0!==(o="function"==typeof r?r.apply(t,i):r)&&(e.exports=o)}(0,function(e,t){"use strict";function n(e){function t(t){var n=e.style.width;e.style.width="0px",e.offsetWidth,e.style.width=n,e.style.overflowY=t}function n(e){for(var t=[];e&&e.parentNode&&e.parentNode instanceof Element;)e.parentNode.scrollTop&&t.push({node:e.parentNode,scrollTop:e.parentNode.scrollTop}),e=e.parentNode;return t}function r(){if(0!==e.scrollHeight){var t=n(e),r=document.documentElement&&document.documentElement.scrollTop;e.style.height="",e.style.height=e.scrollHeight+u+"px",s=e.clientWidth,t.forEach(function(e){e.node.scrollTop=e.scrollTop}),r&&(document.documentElement.scrollTop=r)}}function i(){r();var n=Math.round(parseFloat(e.style.height)),i=window.getComputedStyle(e,null),o="content-box"===i.boxSizing?Math.round(parseFloat(i.height)):e.offsetHeight;if(o<n?"hidden"===i.overflowY&&(t("scroll"),r(),o="content-box"===i.boxSizing?Math.round(parseFloat(window.getComputedStyle(e,null).height)):e.offsetHeight):"hidden"!==i.overflowY&&(t("hidden"),r(),o="content-box"===i.boxSizing?Math.round(parseFloat(window.getComputedStyle(e,null).height)):e.offsetHeight),l!==o){l=o;var u=a("autosize:resized");try{e.dispatchEvent(u)}catch(e){}}}if(e&&e.nodeName&&"TEXTAREA"===e.nodeName&&!o.has(e)){var u=null,s=null,l=null,c=function(){e.clientWidth!==s&&i()},f=function(t){window.removeEventListener("resize",c,!1),e.removeEventListener("input",i,!1),e.removeEventListener("keyup",i,!1),e.removeEventListener("autosize:destroy",f,!1),e.removeEventListener("autosize:update",i,!1),Object.keys(t).forEach(function(n){e.style[n]=t[n]}),o.delete(e)}.bind(e,{height:e.style.height,resize:e.style.resize,overflowY:e.style.overflowY,overflowX:e.style.overflowX,wordWrap:e.style.wordWrap});e.addEventListener("autosize:destroy",f,!1),"onpropertychange"in e&&"oninput"in e&&e.addEventListener("keyup",i,!1),window.addEventListener("resize",c,!1),e.addEventListener("input",i,!1),e.addEventListener("autosize:update",i,!1),e.style.overflowX="hidden",e.style.wordWrap="break-word",o.set(e,{destroy:f,update:i}),function(){var t=window.getComputedStyle(e,null);"vertical"===t.resize?e.style.resize="none":"both"===t.resize&&(e.style.resize="horizontal"),u="content-box"===t.boxSizing?-(parseFloat(t.paddingTop)+parseFloat(t.paddingBottom)):parseFloat(t.borderTopWidth)+parseFloat(t.borderBottomWidth),isNaN(u)&&(u=0),i()}()}}function r(e){var t=o.get(e);t&&t.destroy()}function i(e){var t=o.get(e);t&&t.update()}var o="function"==typeof Map?new Map:function(){var e=[],t=[];return{has:function(t){return e.indexOf(t)>-1},get:function(n){return t[e.indexOf(n)]},set:function(n,r){-1===e.indexOf(n)&&(e.push(n),t.push(r))},delete:function(n){var r=e.indexOf(n);r>-1&&(e.splice(r,1),t.splice(r,1))}}}(),a=function(e){return new Event(e,{bubbles:!0})};try{new Event("test")}catch(e){a=function(e){var t=document.createEvent("Event");return t.initEvent(e,!0,!1),t}}var u=null;"undefined"==typeof window||"function"!=typeof window.getComputedStyle?(u=function(e){return e},u.destroy=function(e){return e},u.update=function(e){return e}):(u=function(e,t){return e&&Array.prototype.forEach.call(e.length?e:[e],function(e){return n(e)}),e},u.destroy=function(e){return e&&Array.prototype.forEach.call(e.length?e:[e],r),e},u.update=function(e){return e&&Array.prototype.forEach.call(e.length?e:[e],i),e}),t.default=u,e.exports=t.default})},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(e){return!!e&&this.init(e),this}function o(e){return new i(e)}var a=n(47),u=r(a),s=n(37),l=r(s),c=n(41),f=r(c),p=n(13),d=r(p),h=n(6),v=n(45),g=r(v),m=n(40),y=r(m),b=n(44),D=n(42),x=r(D),w=n(3),A=r(w),k=n(43),E=r(k),F=n(46),C=r(F),S=n(39),_=(r(S),{comment:"",nick:"",mail:"",link:"",ua:A.default.ua,url:"",QQAvatar:""}),O="",B={cdn:"https://gravatar.loli.net/avatar/",ds:["mp","identicon","monsterid","wavatar","robohash","retro",""],params:"",hide:!1};i.prototype.init=function(e){if("undefined"==typeof document)throw new Error("Sorry, Valine does not support Server-side rendering.");var t=this;return e&&(e=A.default.extend(h.CONFIG,e),t.i18n=(0,f.default)(e.lang||A.default.lang,e.langMode),t.cfg=e,d.default.maps=!!e.emojiMaps&&e.emojiMaps||d.default.maps,d.default.cdn=!!e.emojiCDN&&e.emojiCDN||d.default.cdn,t._init()),t},i.prototype._init=function(){var e=this;try{var t=e.cfg,n=t.avatar,r=t.avatarForce,i=t.avatar_cdn,o=t.visitor,a=t.path,u=void 0===a?location.pathname:a,s=t.pageSize,l=t.recordIP;e.cfg.path=u.replace(/index\.html?$/,"");var c=B.ds,f=r?"&q="+(0,h.RandomStr)():"";B.params="?d="+(c.indexOf(n)>-1?n:"mp")+"&v="+h.VERSION+f,B.hide="hide"===n,B.cdn=/^https?\:\/\//.test(i)?i:B.cdn,e.cfg.pageSize=isNaN(s)?10:s<1?10:s,l&&(0,b.recordIPFn)(function(e){return _.ip=e});var p=e.cfg.el||null,d=(0,A.default)(p);if(p=p instanceof HTMLElement?p:d[d.length-1]||null){e.$el=(0,A.default)(p),e.$el.addClass("v").attr("data-class","v"),B.hide&&e.$el.addClass("hide-avatar"),e.cfg.meta=(e.cfg.guest_info||e.cfg.meta||h.defaultMeta).filter(function(e){return h.defaultMeta.indexOf(e)>-1}),e.cfg.requiredFields=e.cfg.requiredFields.filter(function(e){return h.defaultMeta.indexOf(e)>-1});var v=(0==e.cfg.meta.length?h.defaultMeta:e.cfg.meta).map(function(t){var n="mail"==t?"email":"text";return h.defaultMeta.indexOf(t)>-1?'<input name="'+t+'" placeholder="'+e.i18n.t(t)+'" class="v'+t+' vinput" type="'+n+'">':""}),g='<div class="vpanel"><div class="vwrap"><p class="cancel-reply text-right" style="display:none;" title="'+e.i18n.t("cancelReply")+'"><svg class="vicon cancel-reply-btn" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4220" width="22" height="22"><path d="M796.454 985H227.545c-50.183 0-97.481-19.662-133.183-55.363-35.7-35.701-55.362-83-55.362-133.183V227.545c0-50.183 19.662-97.481 55.363-133.183 35.701-35.7 83-55.362 133.182-55.362h568.909c50.183 0 97.481 19.662 133.183 55.363 35.701 35.702 55.363 83 55.363 133.183v568.909c0 50.183-19.662 97.481-55.363 133.183S846.637 985 796.454 985zM227.545 91C152.254 91 91 152.254 91 227.545v568.909C91 871.746 152.254 933 227.545 933h568.909C871.746 933 933 871.746 933 796.454V227.545C933 152.254 871.746 91 796.454 91H227.545z" p-id="4221"></path><path d="M568.569 512l170.267-170.267c15.556-15.556 15.556-41.012 0-56.569s-41.012-15.556-56.569 0L512 455.431 341.733 285.165c-15.556-15.556-41.012-15.556-56.569 0s-15.556 41.012 0 56.569L455.431 512 285.165 682.267c-15.556 15.556-15.556 41.012 0 56.569 15.556 15.556 41.012 15.556 56.569 0L512 568.569l170.267 170.267c15.556 15.556 41.012 15.556 56.569 0 15.556-15.556 15.556-41.012 0-56.569L568.569 512z" p-id="4222" ></path></svg></p><div class="vheader item'+v.length+'">'+v.join("")+'</div><div class="vedit"><textarea id="veditor" class="veditor vinput" placeholder="'+e.cfg.placeholder+'"></textarea><div class="vrow"><div class="vcol vcol-60 status-bar"></div><div class="vcol vcol-40 vctrl text-right"><span title="'+e.i18n.t("emoji")+'" class="vicon vemoji-btn"><svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="16172" width="22" height="22" ><path d="M512 1024a512 512 0 1 1 512-512 512 512 0 0 1-512 512zM512 56.888889a455.111111 455.111111 0 1 0 455.111111 455.111111 455.111111 455.111111 0 0 0-455.111111-455.111111zM312.888889 512A85.333333 85.333333 0 1 1 398.222222 426.666667 85.333333 85.333333 0 0 1 312.888889 512z" p-id="16173"></path><path d="M512 768A142.222222 142.222222 0 0 1 369.777778 625.777778a28.444444 28.444444 0 0 1 56.888889 0 85.333333 85.333333 0 0 0 170.666666 0 28.444444 28.444444 0 0 1 56.888889 0A142.222222 142.222222 0 0 1 512 768z" p-id="16174"></path><path d="M782.222222 391.964444l-113.777778 59.733334a29.013333 29.013333 0 0 1-38.684444-10.808889 28.444444 28.444444 0 0 1 10.24-38.684445l113.777778-56.888888a28.444444 28.444444 0 0 1 38.684444 10.24 28.444444 28.444444 0 0 1-10.24 36.408888z" p-id="16175"></path><path d="M640.568889 451.697778l113.777778 56.888889a27.875556 27.875556 0 0 0 38.684444-10.24 27.875556 27.875556 0 0 0-10.24-38.684445l-113.777778-56.888889a28.444444 28.444444 0 0 0-38.684444 10.808889 28.444444 28.444444 0 0 0 10.24 38.115556z" p-id="16176"></path></svg></span><span title="'+e.i18n.t("preview")+'" class="vicon vpreview-btn"><svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="17688" width="22" height="22"><path d="M502.390154 935.384615a29.538462 29.538462 0 1 1 0 59.076923H141.430154C79.911385 994.461538 29.538462 946.254769 29.538462 886.153846V137.846154C29.538462 77.745231 79.950769 29.538462 141.390769 29.538462h741.218462c61.44 0 111.852308 48.206769 111.852307 108.307692v300.268308a29.538462 29.538462 0 1 1-59.076923 0V137.846154c0-26.899692-23.355077-49.230769-52.775384-49.230769H141.390769c-29.420308 0-52.775385 22.331077-52.775384 49.230769v748.307692c0 26.899692 23.355077 49.230769 52.775384 49.230769h360.999385z" p-id="17689"></path><path d="M196.923077 216.615385m29.538461 0l374.153847 0q29.538462 0 29.538461 29.538461l0 0q0 29.538462-29.538461 29.538462l-374.153847 0q-29.538462 0-29.538461-29.538462l0 0q0-29.538462 29.538461-29.538461Z" p-id="17690"></path><path d="M649.846154 846.769231a216.615385 216.615385 0 1 0 0-433.230769 216.615385 216.615385 0 0 0 0 433.230769z m0 59.076923a275.692308 275.692308 0 1 1 0-551.384616 275.692308 275.692308 0 0 1 0 551.384616z" p-id="17691"></path><path d="M807.398383 829.479768m20.886847-20.886846l0 0q20.886846-20.886846 41.773692 0l125.321079 125.321079q20.886846 20.886846 0 41.773693l0 0q-20.886846 20.886846-41.773693 0l-125.321078-125.321079q-20.886846-20.886846 0-41.773693Z" p-id="17692"></path></svg></span></div></div></div><div class="vrow"><div class="vcol vcol-30" ><a alt="Markdown is supported" href="https://guides.github.com/features/mastering-markdown/" class="vicon" target="_blank"><svg class="markdown" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M14.85 3H1.15C.52 3 0 3.52 0 4.15v7.69C0 12.48.52 13 1.15 13h13.69c.64 0 1.15-.52 1.15-1.15v-7.7C16 3.52 15.48 3 14.85 3zM9 11H7V8L5.5 9.92 4 8v3H2V5h2l1.5 2L7 5h2v6zm2.99.5L9.5 8H11V5h2v3h1.5l-2.51 3.5z"></path></svg></a></div><div class="vcol vcol-70 text-right"><button type="button" title="Cmd|Ctrl+Enter" class="vsubmit vbtn">'+e.i18n.t("submit")+'</button></div></div><div class="vemojis" style="display:none;"></div><div class="vinput vpreview" style="display:none;"></div></div></div><div class="vcount" style="display:none;"><span class="vnum">0</span> '+e.i18n.t("comments")+'</div><div class="vload-top text-center" style="display:none;"><i class="vspinner" style="width:30px;height:30px;"></i></div><div class="vcards"></div><div class="vload-bottom text-center" style="display:none;"><i class="vspinner" style="width:30px;height:30px;"></i></div><div class="vempty" style="display:none;"></div><div class="vpage txt-center" style="display:none"><button type="button" class="vmore vbtn">'+e.i18n.t("more")+'</button></div><div class="vpower txt-right">Powered By <a href="https://valine.js.org" target="_blank">Valine</a><br>v'+h.VERSION+"</div>";e.$el.html(g),e.$el.find(".cancel-reply").on("click",function(t){e.reset()});var m=e.$el.find(".vempty");e.$nodata={show:function(t){return m.html(t||e.i18n.t("sofa")).show(),e},hide:function(){return m.hide(),e}};var D=e.$el.find(".vload-bottom"),w=e.$el.find(".vload-top");e.$loading={show:function(t){return t&&w.show()||D.show(),e.$nodata.hide(),e},hide:function(){return w.hide(),D.hide(),0===e.$el.find(".vcard").length&&e.$nodata.show(),e}}}(0,y.default)(e.cfg,function(t){var n=(0,A.default)(".valine-comment-count"),r=0;!function t(n){var i=n[r++];if(i){var o=(0,A.default)(i).attr("data-xid");!!o&&e.Q(o).count().then(function(e){i.innerText=e,t(n)}).catch(function(e){i.innerText=0})}}(n),o&&$.add(AV.Object.extend("Counter"),e.cfg.path),e.$el&&e.bind()})}catch(t){(0,x.default)(e,t,"init")}};var j=function(e,t){var n=new e,r=new AV.ACL;r.setPublicReadAccess(!0),r.setPublicWriteAccess(!0),n.setACL(r),n.set("url",t.url),n.set("xid",t.xid),n.set("title",t.title),n.set("time",1),n.save().then(function(e){(0,A.default)(t.el).find(".leancloud-visitors-count").text(1)}).catch(function(e){})},$={add:function(e,t){var n=this,r=(0,A.default)(".leancloud_visitors,.leancloud-visitors");if(1===r.length){var i=r[0],o=decodeURI((0,A.default)(i).attr("id")),a=(0,A.default)(i).attr("data-flag-title"),u=encodeURI(o),s={el:i,url:o,xid:u,title:a};if(decodeURI(o)===decodeURI(t)){var l=new AV.Query(e);l.equalTo("url",o),l.find().then(function(t){if(t.length>0){var n=t[0];n.increment("time"),n.save().then(function(e){(0,A.default)(i).find(".leancloud-visitors-count").text(e.get("time"))}).catch(function(e){})}else j(e,s)}).catch(function(t){101==t.code?j(e,s):(0,x.default)(n,t)})}else $.show(e,r)}else $.show(e,r)},show:function(e,t){var n=[];if(t.forEach(function(e){var t=(0,A.default)(e).find(".leancloud-visitors-count");t&&t.text("0"),n.push(/\%/.test((0,A.default)(e).attr("id"))?decodeURI((0,A.default)(e).attr("id")):(0,A.default)(e).attr("id"))}),n.length){var r=new AV.Query(e);r.containedIn("url",n),r.find().then(function(e){e.length>0&&t.forEach(function(t){e.forEach(function(e){var n=e.get("xid")||encodeURI(e.get("url")),r=e.get("time"),i=(0,A.default)(t),o=i.attr("id");if((/\%/.test(o)?o:encodeURI(o))==n){var a=i.find(".leancloud-visitors-count");a&&a.text(r)}})})}).catch(function(e){})}}};i.prototype.Q=function(e){var t=this,n=arguments.length,r=t.cfg.clazzName;if(1==n){var i=new AV.Query(r);i.doesNotExist("rid");var o=new AV.Query(r);o.equalTo("rid","");var a=AV.Query.or(i,o);return"*"===e?a.exists("url"):a.equalTo("url",decodeURI(e)),a.addDescending("createdAt"),a.addDescending("insertedAt"),a}var u=JSON.stringify(arguments[1]).replace(/(\[|\])/g,""),s="select * from "+r+" where rid in ("+u+") order by -createdAt,-createdAt";return AV.Query.doCloudQuery(s)},i.prototype.installLocale=function(e,t){var n=this;return n.i18n(e,t),n},i.prototype.setPath=function(e){return this.config.path=e,this},i.prototype.bind=function(){var e=this,t=e.$el.find(".vemojis"),n=e.$el.find(".vpreview"),r=e.$el.find(".vemoji-btn"),i=e.$el.find(".vpreview-btn"),o=e.$el.find(".veditor"),a=d.default.maps,s=!1,c=function(e){var n=[];for(var r in a)a.hasOwnProperty(r)&&!!d.default.build(r)&&n.push('<i title="'+r+'" >'+d.default.build(r)+"</i>");t.html(n.join("")),s=!0,t.find("i").on("click",function(e){e.preventDefault(),D(o[0]," :"+(0,A.default)(this).attr("title")+":")})};e.$emoji={show:function(){return!s&&c(),e.$preview.hide(),t.show(),r.addClass("actived"),e.$emoji},hide:function(){return r.removeClass("actived"),t.hide(),e.$emoji}},e.$preview={show:function(){return O?(e.$emoji.hide(),i.addClass("actived"),n.html(O).show(),T()):e.$preview.hide(),e.$preview},hide:function(){return i.removeClass("actived"),n.hide().html(""),e.$preview}};var f=function(t){var r=(0,E.default)(t.val()||"");r||e.$preview.hide(),O!=r&&(O=r,i.hasClass("actived")>-1&&O!=n.html()&&n.html(O),(0,l.default)(t[0]),T())};r.on("click",function(t){r.hasClass("actived")?e.$emoji.hide():e.$emoji.show()}),i.on("click",function(t){i.hasClass("actived")?e.$preview.hide():e.$preview.show()});var p=e.cfg.meta,v={},m={veditor:"comment"};p.forEach(function(e){m["v"+e]=e});for(var y in m)m.hasOwnProperty(y)&&function(){var t=m[y],n=e.$el.find("."+y);v[t]=n,n.on("input change blur propertychange",function(r){e.cfg.enableQQ&&"blur"===r.type&&"nick"===t&&(isNaN(n.val())?A.default.store.get(h.QQCacheKey)&&A.default.store.get(h.QQCacheKey).nick!=n.val()&&(A.default.store.remove(h.QQCacheKey),_.nick=n.val(),_.mail="",_.QQAvatar=""):(0,b.fetchQQFn)(n.val(),function(e){var t=e.nick||n.val(),r=e.qq+"@qq.com";(0,A.default)(".vnick").val(t),(0,A.default)(".vmail").val(r),_.nick=t,_.mail=r,_.QQAvatar=e.pic})),"comment"===t?f(n):_[t]=A.default.escape(n.val().replace(/(^\s*)|(\s*$)/g,"")).substring(0,40)})}();var D=function(e,t){if(document.selection){e.focus();document.selection.createRange().text=t,e.focus()}else if(e.selectionStart||"0"==e.selectionStart){var n=e.selectionStart,r=e.selectionEnd,i=e.scrollTop;e.value=e.value.substring(0,n)+t+e.value.substring(r,e.value.length),e.focus(),e.selectionStart=n+t.length,e.selectionEnd=n+t.length,e.scrollTop=i}else e.focus(),e.value+=t;setTimeout(function(t){f((0,A.default)(e))},100)},w={no:1,size:e.cfg.pageSize,skip:e.cfg.pageSize},k=e.$el.find(".vpage");k.on("click",function(e){k.hide(),w.no++,F()});var F=function(){var t=w.size,n=w.no,r=Number(e.$el.find(".vnum").text());e.$loading.show();var i=e.Q(e.cfg.path);i.limit(t),i.skip((n-1)*t),i.find().then(function(i){if(w.skip=w.size,i&&i.length){var o=[];i.forEach(function(t){o.push(t.id),S(t,e.$el.find(".vcards"),!0)}),e.Q(e.cfg.path,o).then(function(e){(e&&e.results||[]).forEach(function(e){S(e,(0,A.default)('.vquote[data-self-id="'+e.get("rid")+'"]'))})}).catch(function(e){}),t*n<r?k.show():k.hide(),T()}else e.$nodata.show();e.$loading.hide()}).catch(function(t){e.$loading.hide(),(0,x.default)(e,t,"query")})};e.Q(e.cfg.path).count().then(function(t){t>0?(e.$el.find(".vcount").show().find(".vnum").text(t),F()):e.$loading.hide()}).catch(function(t){(0,x.default)(e,t,"count")});var S=function(t,n,r){var i=(0,A.default)('<div class="vcard" id="'+t.id+'"></div>'),o=t.get("ua"),a="";o&&!/ja/.test(e.cfg.lang)&&(o=A.default.detect(o),a=o.os?'<span class="vsys">'+o.browser+" "+o.version+'</span> <span class="vsys">'+o.os+" "+o.osVersion+"</span>":""),"*"===e.cfg.path&&(a='<a href="'+t.get("url")+'" class="vsys">'+t.get("url")+"</a>");var s=t.get("link")?/^https?\:\/\//.test(t.get("link"))?t.get("link"):"http://"+t.get("link"):"",l=A.default.escape(t.get("nick")),c=s?'<a class="vnick" rel="nofollow" href="'+A.default.escape(s)+'" target="_blank" >'+l+"</a>":'<span class="vnick">'+l+"</span>",f=B.hide?"":e.cfg.enableQQ&&t.get("QQAvatar")?'<img class="vimg" src="'+(0,C.default)(t.get("QQAvatar"))+'" referrerPolicy="no-referrer"/>':'<img class="vimg" src="'+(B.cdn+(0,u.default)(t.get("mail"))+B.params)+'">',p=f+'<div class="vh"><div class="vhead">'+c+" "+a+'</div><div class="vmeta"><span class="vtime" >'+(0,g.default)(t.get("insertedAt"),e.i18n)+'</span><span class="vat" data-vm-id="'+(t.get("rid")||t.id)+'" data-self-id="'+t.id+'">'+e.i18n.t("reply")+'</span></div><div class="vcontent" data-expand="'+e.i18n.t("expand")+'">'+(0,C.default)(t.get("comment"))+'</div><div class="vreply-wrapper" data-self-id="'+t.id+'"></div><div class="vquote" data-self-id="'+t.id+'"></div></div>';i.html(p);var d=i.find(".vat");i.find("a:not(.at)").forEach(function(e){(0,A.default)(e).attr({target:"_blank",rel:"noopener"})}),r?n.append(i):n.prepend(i);var h=i.find(".vcontent");h&&I(h),d&&$(d,t)},j={},$=function(t,n){t.on("click",function(r){var i=t.attr("data-vm-id"),o=t.attr("data-self-id"),a=e.$el.find(".vwrap"),u="@"+A.default.escape(n.get("nick"));(0,A.default)('.vreply-wrapper[data-self-id="'+o+'"]').append(a).find(".cancel-reply").show(),j={at:A.default.escape(u)+" ",rid:i,pid:o,rmail:n.get("mail")},v.comment.attr({placeholder:u})[0].focus()})},T=function(){setTimeout(function(){try{e.cfg.mathjax&&"MathJax"in window&&"version"in window.MathJax&&(/^3.*/.test(window.MathJax.version)&&MathJax.typeset()||MathJax.Hub.Queue(["Typeset",MathJax.Hub,document.querySelector(".v")])),"renderMathInElement"in window&&renderMathInElement((0,A.default)(".v")[0],{delimiters:[{left:"$$",right:"$$",display:!0},{left:"$",right:"$",display:!1}]})}catch(e){}},100)},I=function(e){setTimeout(function(){e[0].offsetHeight>200&&(e.addClass("expand"),e.on("click",function(t){e.removeClass("expand")}))})};!function(t){if(t=A.default.store.get(h.MetaCacheKey)||t)for(var n in p)if(p.hasOwnProperty(n)){var r=p[n];e.$el.find(".v"+r).val(A.default.unescape(t[r])),_[r]=t[r]}var i=A.default.store.get(h.QQCacheKey);_.QQAvatar=e.cfg.enableQQ&&!!i&&i.pic||""}(),e.reset=function(){_.comment="",v.comment.val(""),f(v.comment),v.comment.attr("placeholder",e.cfg.placeholder),j={},e.$preview.hide(),e.$el.find(".vpanel").append(e.$el.find(".vwrap")),e.$el.find(".cancel-reply").hide(),O=""};var z=e.$el.find(".vsubmit"),P=function(t){if(e.cfg.requiredFields.indexOf("nick")>-1&&_.nick.length<3)return v.nick[0].focus(),void e.$el.find(".status-bar").text(""+e.i18n.t("nickFail")).empty(3e3);if(e.cfg.requiredFields.indexOf("mail")>-1&&!/[\w-\.]+@([\w-]+\.)+[a-z]{2,3}/.test(_.mail))return v.mail[0].focus(),void e.$el.find(".status-bar").text(""+e.i18n.t("mailFail")).empty(3e3);if(""==O)return void v.comment[0].focus();_.comment=O,_.nick=_.nick||"Anonymous";var n=A.default.store.get("vlx");if(n){if(Date.now()/1e3-n/1e3<20)return void e.$el.find(".status-bar").text(e.i18n.t("busy")).empty(3e3)}M()},R=function(){var e=new AV.ACL;return e.setPublicReadAccess(!0),e.setPublicWriteAccess(!1),e},M=function(){A.default.store.set("vlx",Date.now()),z.attr({disabled:!0}),e.$loading.show(!0);var t=AV.Object.extend(e.cfg.clazzName||"Comment"),n=new t;if(_.url=decodeURI(e.cfg.path),_.insertedAt=new Date,j.rid){var r=j.pid||j.rid;n.set("rid",j.rid),n.set("pid",r),_.comment=O.replace("<p>",'<p><a class="at" href="#'+r+'">'+j.at+"</a> , ")}for(var i in _)if(_.hasOwnProperty(i)){var o=_[i];n.set(i,o)}n.setACL(R()),n.save().then(function(t){"Anonymous"!=_.nick&&A.default.store.set(h.MetaCacheKey,{nick:_.nick,link:_.link,mail:_.mail});var n=e.$el.find(".vnum");try{j.rid?S(t,(0,A.default)('.vquote[data-self-id="'+j.rid+'"]'),!0):(Number(n.text())?n.text(Number(n.text())+1):e.$el.find(".vcount").show().find(".vnum").text(Number(n.text())+1),S(t,e.$el.find(".vcards")),w.skip++),z.removeAttr("disabled"),e.$loading.hide(),e.reset()}catch(t){(0,x.default)(e,t,"save")}}).catch(function(t){(0,x.default)(e,t,"commitEvt")})};z.on("click",P),(0,A.default)(document).on("keydown",function(e){e=event||e;var t=e.keyCode||e.which||e.charCode;((e.ctrlKey||e.metaKey)&&13===t&&P(),9===t)&&("veditor"==(document.activeElement.id||"")&&(e.preventDefault(),D(o[0]," ")))}).on("paste",function(e){var t="clipboardData"in e?e.clipboardData:e.originalEvent&&e.originalEvent.clipboardData||window.clipboardData;t&&L(t.items,!0)}),o.on("dragenter dragleave dragover drop",function(e){e.stopPropagation(),e.preventDefault(),"drop"===e.type&&L(e.dataTransfer.items)});var L=function(e,t){for(var n=[],r=0,i=e.length;r<i;r++){var a=e[r];if("string"===a.kind&&a.type.match("^text/html"))!t&&a.getAsString(function(e){e&&D(o[0],e.replace(/<[^>]+>/g,""))});else if(-1!==a.type.indexOf("image")){n.push(a.getAsFile());continue}}N(n)},N=function t(n,r){r=r||0;var i=n.length;if(i>0){var a=n[r];z.attr({disabled:!0});var u="![Uploading "+a.name+"...]("+r+")";D(o[0],u),U(a,function(s){500!=s.code?(o.val(o.val().replace(u,"!["+a.name+"]("+s.data.url+")\r\n")),(0,l.default)(o[0]),++r<i?t(n,r):z.removeAttr("disabled")):(o.val(o.val().replace(u,"")),(0,l.default)(o[0]),e.$el.find(".status-bar").text(s.msg).empty(3e3),z.removeAttr("disabled"))})}},U=function(e,t){var n=new FormData;n.append("image",e),n.append("fileId",e.name),A.default.ajax({url:"https://imgpro.pro/upload/upload.html",method:"post",body:n}).then(function(e){e.json().then(t)}).catch(function(e){})}},e.exports=o,e.exports.default=o},function(e,t,n){"use strict";t.__esModule=!0;var r=n(3),i=function(e){return e&&e.__esModule?e:{default:e}}(r),o=function(e,t){i.default.ajax({url:"https://app-router.com/2/route",body:{appId:e}}).then(function(e){e.json().then(function(e){return t&&t("//"+e.api_server)})})};t.default={getApi:o}},function(e,t,n){"use strict";t.__esModule=!0;var r=n(3),i=function(e){return e&&e.__esModule?e:{default:e}}(r),o=!1;t.default=function(e,t){if("AV"in window){var n=window.AV.version||window.AV.VERSION;parseInt(n.split(".")[0])>2?o=!!AV.applicationId&&!!AV.applicationKey:i.default.deleteInWin("AV",0)}o?t&&t():i.default.sdkLoader("//unpkg.com/leancloud-storage@3/dist/av-min.js","AV",function(n){var r="https://",i="",a=e.app_id||e.appId,u=e.app_key||e.appKey;if(!e.serverURLs)switch(a.slice(-9)){case"-9Nh9j0Va":r+="tab.";break;case"-MdYXbMMI":r+="us."}i=e.serverURLs||r+"leancloud.cn",AV.init({appId:a,appKey:u,serverURLs:i}),o=!0,t&&t()})}},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var i=n(95),o=r(i),a=n(111),u=r(a),s=n(112),l=r(s),c=n(109),f=r(c),p=n(110),d=r(p),h={zh:u.default,"zh-cn":u.default,"zh-CN":u.default,"zh-TW":l.default,en:f.default,"en-US":f.default,ja:d.default,"ja-JP":d.default};t.default=function(e,t){return!h[e]&&e&&t&&(h[e]=t),new o.default({phrases:h[e||"zh"],locale:e})}},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t){if(e.$el&&e.$loading.hide().$nodata.hide(),"[object Error]"==={}.toString.call(t)){var n=t.code||t.message||t.error||"";if(isNaN(n))e.$el&&e.$nodata.show('<pre style="text-align:left;"> '+JSON.stringify(t)+"</pre>");else{var r=e.i18n.t("code-"+n),i=(r=="code-"+n?void 0:r)||t.message||t.error||"";101==n||-1==n?e.$nodata.show():e.$el&&e.$nodata.show('<pre style="text-align:left;">Code '+n+": "+i+"</pre>")}}else e.$el&&e.$nodata.show('<pre style="text-align:left;">'+JSON.stringify(t)+"</pre>")}},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var i=n(94),o=n(54),a=r(o),u=n(86),s=r(u),l=n(3),c=r(l),f=n(13),p=r(f),d=new i.marked.Renderer;d.code=function(e,t){return'<pre><code class="hljs language-'+t+'">'+(t&&hljs.getLanguage(t)?hljs.highlight(t,e).value:c.default.escape(e))+"</code></pre>"},i.marked.setOptions({renderer:"hljs"in window?d:new i.marked.Renderer,highlight:function(e,t){return"hljs"in window?t&&hljs.getLanguage(t)&&hljs.highlight(t,e,!0).value||hljs.highlightAuto(e).value:(0,s.default)(e)},gfm:!0,tables:!0,breaks:!0,pedantic:!1,sanitize:!0,sanitizer:a.default,smartLists:!0,smartypants:!0,headerPrefi:"v-"}),t.default=function(e){return(0,i.marked)(p.default.parse(e,!0))}},function(e,t,n){"use strict";t.__esModule=!0,t.recordIPFn=t.fetchQQFn=void 0;var r=n(3),i=function(e){return e&&e.__esModule?e:{default:e}}(r),o=n(6),a=function(e,t){var n=i.default.store.get(o.QQCacheKey);n&&n.qq==e?t&&t(n):i.default.ajax({url:"//valine.api.ioliu.cn/getqqinfo",method:"POST",body:{qq:e}}).then(function(e){e.json().then(function(e){e.errmsg||(i.default.store.set(o.QQCacheKey,e),t&&t(e))})})},u=function(e){i.default.ajax({url:"//api.ip.sb/jsonip",method:"jsonp"}).then(function(t){e(t.ip)})};t.fetchQQFn=a,t.recordIPFn=u},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t){if(!e)return"";try{var n=i(e).getTime(),o=(new Date).getTime(),a=o-n,u=Math.floor(a/864e5);if(0===u){var s=a%864e5,l=Math.floor(s/36e5);if(0===l){var c=s%36e5,f=Math.floor(c/6e4);if(0===f){var p=c%6e4;return Math.round(p/1e3)+" "+t.t("seconds")}return f+" "+t.t("minutes")}return l+" "+t.t("hours")}return u<0?t.t("now"):u<8?u+" "+t.t("days"):r(e)}catch(e){}};var r=function(e){var t=o(e.getDate(),2),n=o(e.getMonth()+1,2);return o(e.getFullYear(),2)+"-"+n+"-"+t},i=function e(t){return t instanceof Date?t:!isNaN(t)||/^\d+$/.test(t)?new Date(parseInt(t)):/GMT/.test(t||"")?e(new Date(t).getTime()):(t=(t||"").replace(/(^\s*)|(\s*$)/g,"").replace(/\.\d+/,"").replace(/-/,"/").replace(/-/,"/").replace(/(\d)T(\d)/,"$1 $2").replace(/Z/," UTC").replace(/([+-]\d\d):?(\d\d)/," $1$2"),new Date(t))},o=function(e,t){for(var n=e.toString();n.length<t;)n="0"+n;return n}},function(e,t,n){"use strict";t.__esModule=!0;var r=n(106),i=function(e){return e&&e.__esModule?e:{default:e}}(r);t.default=function(e){return(0,i.default)(e,{onTagAttr:function(e,t,n,r){return o(e,t,n,r)},onIgnoreTagAttr:function(e,t,n,r){return o(e,t,n,r)}}).replace(/\<\/?div\>/gi,"")};var o=function(e,t,n,r){if(/code|pre|span/i.test(e)){if("style"==t){var o=n.match(/color:([#a-z0-9]{3,7}|\s+[#a-z0-9]{3,8})/gi);return o&&o.length?'style="'+o[0]+'"':""}if("class"==t)return t+"='"+i.default.escapeAttrValue(n)+"'"}return"a"===e&&"class"==t&&"at"===n?t+"='"+i.default.escapeAttrValue(n)+"'":"img"===e&&/src|class/i.test(t)?t+"='"+i.default.escapeAttrValue(n)+"' referrerPolicy='no-referrer'":void 0}},function(e,t,n){var r;!function(i){"use strict";function o(e,t){var n=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(n>>16)<<16|65535&n}function a(e,t){return e<<t|e>>>32-t}function u(e,t,n,r,i,u){return o(a(o(o(t,e),o(r,u)),i),n)}function s(e,t,n,r,i,o,a){return u(t&n|~t&r,e,t,i,o,a)}function l(e,t,n,r,i,o,a){return u(t&r|n&~r,e,t,i,o,a)}function c(e,t,n,r,i,o,a){return u(t^n^r,e,t,i,o,a)}function f(e,t,n,r,i,o,a){return u(n^(t|~r),e,t,i,o,a)}function p(e,t){e[t>>5]|=128<<t%32,e[14+(t+64>>>9<<4)]=t;var n,r,i,a,u,p=1732584193,d=-271733879,h=-1732584194,v=271733878;for(n=0;n<e.length;n+=16)r=p,i=d,a=h,u=v,p=s(p,d,h,v,e[n],7,-680876936),v=s(v,p,d,h,e[n+1],12,-389564586),h=s(h,v,p,d,e[n+2],17,606105819),d=s(d,h,v,p,e[n+3],22,-1044525330),p=s(p,d,h,v,e[n+4],7,-176418897),v=s(v,p,d,h,e[n+5],12,1200080426),h=s(h,v,p,d,e[n+6],17,-1473231341),d=s(d,h,v,p,e[n+7],22,-45705983),p=s(p,d,h,v,e[n+8],7,1770035416),v=s(v,p,d,h,e[n+9],12,-1958414417),h=s(h,v,p,d,e[n+10],17,-42063),d=s(d,h,v,p,e[n+11],22,-1990404162),p=s(p,d,h,v,e[n+12],7,1804603682),v=s(v,p,d,h,e[n+13],12,-40341101),h=s(h,v,p,d,e[n+14],17,-1502002290),d=s(d,h,v,p,e[n+15],22,1236535329),p=l(p,d,h,v,e[n+1],5,-165796510),v=l(v,p,d,h,e[n+6],9,-1069501632),h=l(h,v,p,d,e[n+11],14,643717713),d=l(d,h,v,p,e[n],20,-373897302),p=l(p,d,h,v,e[n+5],5,-701558691),v=l(v,p,d,h,e[n+10],9,38016083),h=l(h,v,p,d,e[n+15],14,-660478335),d=l(d,h,v,p,e[n+4],20,-405537848),p=l(p,d,h,v,e[n+9],5,568446438),v=l(v,p,d,h,e[n+14],9,-1019803690),h=l(h,v,p,d,e[n+3],14,-187363961),d=l(d,h,v,p,e[n+8],20,1163531501),p=l(p,d,h,v,e[n+13],5,-1444681467),v=l(v,p,d,h,e[n+2],9,-51403784),h=l(h,v,p,d,e[n+7],14,1735328473),d=l(d,h,v,p,e[n+12],20,-1926607734),p=c(p,d,h,v,e[n+5],4,-378558),v=c(v,p,d,h,e[n+8],11,-2022574463),h=c(h,v,p,d,e[n+11],16,1839030562),d=c(d,h,v,p,e[n+14],23,-35309556),p=c(p,d,h,v,e[n+1],4,-1530992060),v=c(v,p,d,h,e[n+4],11,1272893353),h=c(h,v,p,d,e[n+7],16,-155497632),d=c(d,h,v,p,e[n+10],23,-1094730640),p=c(p,d,h,v,e[n+13],4,681279174),v=c(v,p,d,h,e[n],11,-358537222),h=c(h,v,p,d,e[n+3],16,-722521979),d=c(d,h,v,p,e[n+6],23,76029189),p=c(p,d,h,v,e[n+9],4,-640364487),v=c(v,p,d,h,e[n+12],11,-421815835),h=c(h,v,p,d,e[n+15],16,530742520),d=c(d,h,v,p,e[n+2],23,-995338651),p=f(p,d,h,v,e[n],6,-198630844),v=f(v,p,d,h,e[n+7],10,1126891415),h=f(h,v,p,d,e[n+14],15,-1416354905),d=f(d,h,v,p,e[n+5],21,-57434055),p=f(p,d,h,v,e[n+12],6,1700485571),v=f(v,p,d,h,e[n+3],10,-1894986606),h=f(h,v,p,d,e[n+10],15,-1051523),d=f(d,h,v,p,e[n+1],21,-2054922799),p=f(p,d,h,v,e[n+8],6,1873313359),v=f(v,p,d,h,e[n+15],10,-30611744),h=f(h,v,p,d,e[n+6],15,-1560198380),d=f(d,h,v,p,e[n+13],21,1309151649),p=f(p,d,h,v,e[n+4],6,-145523070),v=f(v,p,d,h,e[n+11],10,-1120210379),h=f(h,v,p,d,e[n+2],15,718787259),d=f(d,h,v,p,e[n+9],21,-343485551),p=o(p,r),d=o(d,i),h=o(h,a),v=o(v,u);return[p,d,h,v]}function d(e){var t,n="",r=32*e.length;for(t=0;t<r;t+=8)n+=String.fromCharCode(e[t>>5]>>>t%32&255);return n}function h(e){var t,n=[];for(n[(e.length>>2)-1]=void 0,t=0;t<n.length;t+=1)n[t]=0;var r=8*e.length;for(t=0;t<r;t+=8)n[t>>5]|=(255&e.charCodeAt(t/8))<<t%32;return n}function v(e){return d(p(h(e),8*e.length))}function g(e,t){var n,r,i=h(e),o=[],a=[];for(o[15]=a[15]=void 0,i.length>16&&(i=p(i,8*e.length)),n=0;n<16;n+=1)o[n]=909522486^i[n],a[n]=1549556828^i[n];return r=p(o.concat(h(t)),512+8*t.length),d(p(a.concat(r),640))}function m(e){var t,n,r="0123456789abcdef",i="";for(n=0;n<e.length;n+=1)t=e.charCodeAt(n),i+=r.charAt(t>>>4&15)+r.charAt(15&t);return i}function y(e){return unescape(encodeURIComponent(e))}function b(e){return v(y(e))}function D(e){return m(b(e))}function x(e,t){return g(y(e),y(t))}function w(e,t){return m(x(e,t))}function A(e,t,n){return t?n?x(t,e):w(t,e):n?b(e):D(e)}void 0!==(r=function(){return A}.call(t,n,t,e))&&(e.exports=r)}()},function(e,t,n){"use strict";var r=n(2),i=n(4),o=n(1),a=n(5),u=n(14),s=n(15),l=s(),c=n(49),f=o("Array.prototype.slice"),p=i.apply(l),d=function(e,t){return a(e),p(e,f(arguments,1))};r(d,{getPolyfill:s,implementation:u,shim:c}),e.exports=d},function(e,t,n){"use strict";var r=n(2),i=n(15);e.exports=function(){var e=i();return r(Array.prototype,{forEach:e},{forEach:function(){return Array.prototype.forEach!==e}}),e}},function(e,t,n){"use strict";function r(e){for(var t,n,i=Array.prototype.slice.call(arguments,1);i.length;){t=i.shift();for(n in t)t.hasOwnProperty(n)&&("[object Object]"===Object.prototype.toString.call(e[n])?e[n]=r(e[n],t[n]):e[n]=t[n])}return e}e.exports=r},function(e,t,n){"use strict";t.__esModule=!0;var r=n(53),i=function(e){return e&&e.__esModule?e:{default:e}}(r);t.default=function(e){return e=(0,i.default)({url:"",method:"get",body:{}},e),new Promise(function(t,n){if("jsonp"==e.method){var r="cb_"+(Date.now()+Math.round(1e3*Math.random())).toString(32),i=document,o=i.body,u=i.createElement("script");return e.body.callback=r,e.body.t=Date.now(),u.src=e.url+"?"+a(e.body),window[r]=function(e){window[r]=null,o.removeChild(u),t(e)},void o.appendChild(u)}var s="XMLHttpRequest"in window?new XMLHttpRequest:new ActiveXObject("Microsoft.XMLHTTP"),l=[],c=[],f={},p=function e(){return{ok:2==(s.status/100|0),statusText:s.statusText,status:s.status,url:s.responseURL,text:function(){return Promise.resolve(s.responseText)},json:function(){return Promise.resolve(s.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([s.response]))},clone:e,headers:{keys:function(){return l},entries:function(){return c},get:function(e){return f[e.toLowerCase()]},has:function(e){return e.toLowerCase()in f}}}};e.url=e.url+"?"+("get"==e.method?a(e.body):""),s.open(e.method||"get",e.url,!0),s.onload=function(){s.getAllResponseHeaders().replace(/^(.*?):[^\S\n]*([\s\S]*?)$/gm,function(e,t,n){l.push(t=t.toLowerCase()),c.push([t,n]),f[t]=f[t]?f[t]+","+n:n}),t(p())},s.onerror=n,s.withCredentials="include"==e.credentials;for(var d in e.headers)s.setRequestHeader(d,e.headers[d]);s.send("post"==e.method?e.body:"get"==e.method?null:a(e.body))})};var o=encodeURIComponent,a=function(e){var t=[];for(var n in e)e.hasOwnProperty(n)&&t.push(o(n)+"="+o(e[n]));return(t=t.join("&").replace(/%20/g,"+"))||null}},function(e,t,n){"use strict";t.__esModule=!0;var r=function(e){e=e||navigator.userAgent;var t={},n={Trident:e.indexOf("Trident")>-1||e.indexOf("NET CLR")>-1,Presto:e.indexOf("Presto")>-1,WebKit:e.indexOf("AppleWebKit")>-1,Gecko:e.indexOf("Gecko/")>-1,Safari:e.indexOf("Safari")>-1,Edge:e.indexOf("Edge")>-1||e.indexOf("Edg")>-1,Chrome:e.indexOf("Chrome")>-1||e.indexOf("CriOS")>-1,IE:e.indexOf("MSIE")>-1||e.indexOf("Trident")>-1,Firefox:e.indexOf("Firefox")>-1||e.indexOf("FxiOS")>-1,"Firefox Focus":e.indexOf("Focus")>-1,Chromium:e.indexOf("Chromium")>-1,Opera:e.indexOf("Opera")>-1||e.indexOf("OPR")>-1,Vivaldi:e.indexOf("Vivaldi")>-1,Yandex:e.indexOf("YaBrowser")>-1,Kindle:e.indexOf("Kindle")>-1||e.indexOf("Silk/")>-1,360:e.indexOf("360EE")>-1||e.indexOf("360SE")>-1,UC:e.indexOf("UC")>-1||e.indexOf(" UBrowser")>-1,QQBrowser:e.indexOf("QQBrowser")>-1,QQ:e.indexOf("QQ/")>-1,Baidu:e.indexOf("Baidu")>-1||e.indexOf("BIDUBrowser")>-1,Maxthon:e.indexOf("Maxthon")>-1,Sogou:e.indexOf("MetaSr")>-1||e.indexOf("Sogou")>-1,LBBROWSER:e.indexOf("LBBROWSER")>-1,"2345Explorer":e.indexOf("2345Explorer")>-1,TheWorld:e.indexOf("TheWorld")>-1,XiaoMi:e.indexOf("MiuiBrowser")>-1,Quark:e.indexOf("Quark")>-1,Qiyu:e.indexOf("Qiyu")>-1,Wechat:e.indexOf("MicroMessenger")>-1,Taobao:e.indexOf("AliApp(TB")>-1,Alipay:e.indexOf("AliApp(AP")>-1,Weibo:e.indexOf("Weibo")>-1,Douban:e.indexOf("com.douban.frodo")>-1,Suning:e.indexOf("SNEBUY-APP")>-1,iQiYi:e.indexOf("IqiyiApp")>-1,Windows:e.indexOf("Windows")>-1,Linux:e.indexOf("Linux")>-1||e.indexOf("X11")>-1,macOS:e.indexOf("Macintosh")>-1,Android:e.indexOf("Android")>-1||e.indexOf("Adr")>-1,Ubuntu:e.indexOf("Ubuntu")>-1,FreeBSD:e.indexOf("FreeBSD")>-1,Debian:e.indexOf("Debian")>-1,"Windows Phone":e.indexOf("IEMobile")>-1||e.indexOf("Windows Phone")>-1,BlackBerry:e.indexOf("BlackBerry")>-1||e.indexOf("RIM")>-1||e.indexOf("BB10")>-1,MeeGo:e.indexOf("MeeGo")>-1,Symbian:e.indexOf("Symbian")>-1,iOS:e.indexOf("like Mac OS X")>-1,"Chrome OS":e.indexOf("CrOS")>-1,WebOS:e.indexOf("hpwOS")>-1,Mobile:e.indexOf("Mobi")>-1||e.indexOf("iPh")>-1||e.indexOf("480")>-1,Tablet:e.indexOf("Tablet")>-1||e.indexOf("Pad")>-1||e.indexOf("Nexus 7")>-1};n.Mobile&&(n.Mobile=!(e.indexOf("iPad")>-1));var r={browser:["Safari","Chrome","Edge","IE","Firefox","Firefox Focus","Chromium","Opera","Vivaldi","Yandex","Kindle","360","UC","QQBrowser","QQ","Baidu","Maxthon","Sogou","LBBROWSER","2345Explorer","TheWorld","XiaoMi","Quark","Qiyu","Wechat","Taobao","Alipay","Weibo","Douban","Suning","iQiYi"],os:["Windows","Linux","Mac OS","macOS","Android","Ubuntu","FreeBSD","Debian","iOS","Windows Phone","BlackBerry","MeeGo","Symbian","Chrome OS","WebOS"]};for(var i in r)if(r.hasOwnProperty(i))for(var o=0,a=r[i].length;o<a;o++){var u=r[i][o];n[u]&&(t[i]=u)}var s={Windows:function(){var t=e.replace(/^.*Windows NT ([\d.]+).*$/,"$1");return{6.4:"10",6.3:"8.1",6.2:"8",6.1:"7","6.0":"Vista",5.2:"XP",5.1:"XP","5.0":"2000"}[t]||t},Android:e.replace(/^.*Android ([\d.]+);.*$/,"$1"),iOS:e.replace(/^.*OS ([\d_]+) like.*$/,"$1").replace(/_/g,"."),Debian:e.replace(/^.*Debian\/([\d.]+).*$/,"$1"),"Windows Phone":e.replace(/^.*Windows Phone( OS)? ([\d.]+);.*$/,"$2"),macOS:e.replace(/^.*Mac OS X ([\d_]+).*$/,"$1").replace(/_/g,"."),WebOS:e.replace(/^.*hpwOS\/([\d.]+);.*$/,"$1"),BlackBerry:e.replace(/^.*BB([\d.]+);*$/,"$1")};t.osVersion="";var l=s[t.os];l&&(t.osVersion="function"==typeof l?l():l==e?"":l);var c={Safari:e.replace(/^.*Version\/([\d.]+).*$/,"$1"),Chrome:e.replace(/^.*Chrome\/([\d.]+).*$/,"$1").replace(/^.*CriOS\/([\d.]+).*$/,"$1"),IE:e.replace(/^.*MSIE ([\d.]+).*$/,"$1").replace(/^.*rv:([\d.]+).*$/,"$1"),Edge:e.replace(/^.*Edge?\/([\d.]+).*$/,"$1"),Firefox:e.replace(/^.*Firefox\/([\d.]+).*$/,"$1").replace(/^.*FxiOS\/([\d.]+).*$/,"$1"),"Firefox Focus":e.replace(/^.*Focus\/([\d.]+).*$/,"$1"),Chromium:e.replace(/^.*Chromium\/([\d.]+).*$/,"$1"),Opera:e.replace(/^.*Opera\/([\d.]+).*$/,"$1").replace(/^.*OPR\/([\d.]+).*$/,"$1"),Vivaldi:e.replace(/^.*Vivaldi\/([\d.]+).*$/,"$1"),Yandex:e.replace(/^.*YaBrowser\/([\d.]+).*$/,"$1"),Kindle:e.replace(/^.*Version\/([\d.]+).*$/,"$1"),Maxthon:e.replace(/^.*Maxthon\/([\d.]+).*$/,"$1"),QQBrowser:e.replace(/^.*QQBrowser\/([\d.]+).*$/,"$1"),QQ:e.replace(/^.*QQ\/([\d.]+).*$/,"$1"),Baidu:e.replace(/^.*BIDUBrowser[\s\/]([\d.]+).*$/,"$1"),UC:e.replace(/^.*UC?Browser\/([\d.]+).*$/,"$1"),Sogou:e.replace(/^.*SE ([\d.X]+).*$/,"$1").replace(/^.*SogouMobileBrowser\/([\d.]+).*$/,"$1"),"2345Explorer":e.replace(/^.*2345Explorer\/([\d.]+).*$/,"$1"),TheWorld:e.replace(/^.*TheWorld ([\d.]+).*$/,"$1"),XiaoMi:e.replace(/^.*MiuiBrowser\/([\d.]+).*$/,"$1"),Quark:e.replace(/^.*Quark\/([\d.]+).*$/,"$1"),Qiyu:e.replace(/^.*Qiyu\/([\d.]+).*$/,"$1"),Wechat:e.replace(/^.*MicroMessenger\/([\d.]+).*$/,"$1"),Taobao:e.replace(/^.*AliApp\(TB\/([\d.]+).*$/,"$1"),Alipay:e.replace(/^.*AliApp\(AP\/([\d.]+).*$/,"$1"),Weibo:e.replace(/^.*weibo__([\d.]+).*$/,"$1"),Douban:e.replace(/^.*com.douban.frodo\/([\d.]+).*$/,"$1"),Suning:e.replace(/^.*SNEBUY-APP([\d.]+).*$/,"$1"),iQiYi:e.replace(/^.*IqiyiVersion\/([\d.]+).*$/,"$1")};t.version="";var f=c[t.browser];return f&&(t.version="function"==typeof f?f():f==e?"":f),void 0==t.browser&&(t.browser="Unknow App"),t};t.default=r},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e){e=Object(e);for(var t=1,n=arguments.length;t<n;t++){var r=arguments[t];if(r)for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(e[i]=r[i])}return e}},function(e,t,n){"use strict";t.__esModule=!0;var r=n(88),i=function(e){return e&&e.__esModule?e:{default:e}}(r);t.default=function(e){return(0,i.default)(e,{allowedAttributes:{a:["title","href","name","target","rel"],img:["alt","src","class","referrerpolicy"]},allowedClasses:{},allowedSchemes:["http","https","mailto"],allowedTags:["a","article","b","blockquote","br","caption","code","del","details","em","h1","h2","h3","h4","h5","h6","hr","i","img","ins","kbd","li","main","ol","p","pre","section","span","strike","strong","sub","summary","sup","table","tbody","td","th","thead","tr","u","ul"],filter:null,transformText:null})}},function(e,t,n){"use strict";function r(e){return/^\{[\s\S]*\}$/.test(JSON.stringify(e))}function i(e){return"[object Function]"==={}.toString.call(e)}function o(e){return"[object Array]"==={}.toString.call(e)}function a(e){return void 0===e||"function"==typeof e?e+"":JSON.stringify(e)}function u(e){if("string"==typeof e)try{return JSON.parse(e)}catch(t){return e}}function s(){if(!(this instanceof s))return new s}function l(e,t){var n=arguments,a=null;if(f||(f=s()),0===n.length)return f.get();if(1===n.length){if("string"==typeof e)return f.get(e);if(r(e))return f.set(e)}if(2===n.length&&"string"==typeof e){if(!t)return f.remove(e);if(t&&"string"==typeof t)return f.set(e,t);t&&i(t)&&(a=null,a=t(e,f.get(e)),l.set(e,a))}if(2===n.length&&o(e)&&i(t))for(var u=0,c=e.length;u<c;u++)a=t(e[u],f.get(e[u])),l.set(e[u],a);return l}t.__esModule=!0;var c=window.localStorage;c=function(e){var t="_Is_Incognit";try{e.setItem(t,"yes")}catch(t){if(["QuotaExceededError","NS_ERROR_DOM_QUOTA_REACHED"].indexOf(t.name)>-1){var n=function(){};e.__proto__={setItem:n,getItem:n,removeItem:n,clear:n}}}finally{"yes"===e.getItem(t)&&e.removeItem(t)}return e}(c),s.prototype={set:function(e,t){if(e&&!r(e))c.setItem(e,a(t));else if(r(e))for(var n in e)this.set(n,e[n]);return this},get:function(e){if(!e){var t={};return this.each(function(e,n){return t[e]=n}),t}if("?"===e.charAt(0))return this.has(e.substr(1));var n=arguments;if(n.length>1){for(var r={},i=0,o=n.length;i<o;i++){var a=u(c.getItem(n[i]));a&&(r[n[i]]=a)}return r}return u(c.getItem(e))},clear:function(){return c.clear(),this},remove:function(e){var t=this.get(e);return c.removeItem(e),t},has:function(e){return{}.hasOwnProperty.call(this.get(),e)},keys:function(){var e=[];return this.each(function(t){e.push(t)}),e},each:function(e){for(var t=0,n=c.length;t<n;t++){var r=c.key(t);e(r,this.get(r))}return this},search:function(e){for(var t=this.keys(),n={},r=0,i=t.length;r<i;r++)t[r].indexOf(e)>-1&&(n[t[r]]=this.get(t[r]));return n}};var f=null;for(var p in s.prototype)l[p]=s.prototype[p];t.default=l},function(e,t,n){var r,i;!function(n,o){var o=function(e,t,n){function r(i,o,a){return a=Object.create(r.fn),i&&a.push.apply(a,i[t]?[i]:""+i===i?/</.test(i)?((o=e.createElement(o)).innerHTML=i,o.children):o?(o=r(o)[0])?o[n](i):a:e[n](i):i),a}return r.fn=[],r.one=function(e,t){return r(e,t)[0]||null},r}(document,"addEventListener","querySelectorAll");r=[],void 0!==(i=function(){return o}.apply(t,r))&&(e.exports=i)}()},function(e,t,n){function r(e){return void 0===e||null===e}function i(e){var t={};for(var n in e)t[n]=e[n];return t}function o(e){e=i(e||{}),e.whiteList=e.whiteList||a.whiteList,e.onAttr=e.onAttr||a.onAttr,e.onIgnoreAttr=e.onIgnoreAttr||a.onIgnoreAttr,e.safeAttrValue=e.safeAttrValue||a.safeAttrValue,this.options=e}var a=n(16),u=n(58);n(17);o.prototype.process=function(e){if(e=e||"",!(e=e.toString()))return"";var t=this,n=t.options,i=n.whiteList,o=n.onAttr,a=n.onIgnoreAttr,s=n.safeAttrValue;return u(e,function(e,t,n,u,l){var c=i[n],f=!1;if(!0===c?f=c:"function"==typeof c?f=c(u):c instanceof RegExp&&(f=c.test(u)),!0!==f&&(f=!1),u=s(n,u)){var p={position:t,sourcePosition:e,source:l,isWhite:f};if(f){var d=o(n,u,p);return r(d)?n+":"+u:d}var d=a(n,u,p);return r(d)?void 0:d}})},e.exports=o},function(e,t,n){function r(e,t){function n(){if(!o){var n=i.trim(e.slice(a,u)),r=n.indexOf(":");if(-1!==r){var l=i.trim(n.slice(0,r)),c=i.trim(n.slice(r+1));if(l){var f=t(a,s.length,l,c,n);f&&(s+=f+"; ")}}}a=u+1}e=i.trimRight(e),";"!==e[e.length-1]&&(e+=";");for(var r=e.length,o=!1,a=0,u=0,s="";u<r;u++){var l=e[u];if("/"===l&&"*"===e[u+1]){var c=e.indexOf("*/",u+2);if(-1===c)break;u=c+1,a=u+1,o=!1}else"("===l?o=!0:")"===l?o=!1:";"===l?o||n():"\n"===l&&n()}return i.trim(s)}var i=n(17);e.exports=r},function(e,t,n){"use strict";var r=n(0),i=n(1),o=r("%TypeError%"),a=n(61),u=r("%Reflect.apply%",!0)||i("%Function.prototype.apply%");e.exports=function(e,t){var n=arguments.length>2?arguments[2]:[];if(!a(n))throw new o("Assertion failed: optional `argumentsList`, if provided, must be a List");return u(e,t,n)}},function(e,t,n){"use strict";var r=n(0),i=r("%TypeError%"),o=n(19),a=n(8);e.exports=function(e,t){if("Object"!==a(e))throw new i("Assertion failed: `O` must be an Object");if(!o(t))throw new i("Assertion failed: `P` must be a Property Key");return t in e}},function(e,t,n){"use strict";var r=n(0),i=r("%Array%"),o=!i.isArray&&n(1)("Object.prototype.toString");e.exports=i.isArray||function(e){return"[object Array]"===o(e)}},function(e,t,n){"use strict";e.exports=n(11)},function(e,t,n){"use strict";var r=n(0),i=r("%TypeError%"),o=n(18),a=n(65),u=n(8);e.exports=function(e){if("Object"!==u(e))throw new i("Assertion failed: `obj` must be an Object");return a(o(e,"length"))}},function(e,t,n){"use strict";var r=n(70),i=n(66);e.exports=function(e){var t=i(e);return 0!==t&&(t=r(t)),0===t?0:t}},function(e,t,n){"use strict";var r=n(79),i=n(64);e.exports=function(e){var t=i(e);return t<=0?0:t>r?r:t}},function(e,t,n){"use strict";var r=n(0),i=r("%TypeError%"),o=r("%Number%"),a=r("%RegExp%"),u=r("%parseInt%"),s=n(1),l=n(80),c=n(78),f=s("String.prototype.slice"),p=l(/^0b[01]+$/i),d=l(/^0o[0-7]+$/i),h=l(/^[-+]0x[0-9a-f]+$/i),v=["…","​","￾"].join(""),g=new a("["+v+"]","g"),m=l(g),y=["\t\n\v\f\r  ᠎    ","          \u2028","\u2029\ufeff"].join(""),b=new RegExp("(^["+y+"]+)|(["+y+"]+$)","g"),D=s("String.prototype.replace"),x=function(e){return D(e,b,"")},w=n(68);e.exports=function e(t){var n=c(t)?t:w(t,o);if("symbol"==typeof n)throw new i("Cannot convert a Symbol value to a number");if("bigint"==typeof n)throw new i("Conversion from 'BigInt' to 'number' is not allowed.");if("string"==typeof n){if(p(n))return e(u(f(n,2),2));if(d(n))return e(u(f(n,2),8));if(m(n)||h(n))return NaN;var r=x(n);if(r!==n)return e(r)}return o(n)}},function(e,t,n){"use strict";var r=n(0),i=r("%Object%"),o=n(5);e.exports=function(e){return o(e),i(e)}},function(e,t,n){"use strict";var r=n(83);e.exports=function(e){return arguments.length>1?r(e,arguments[1]):r(e)}},function(e,t,n){"use strict";var r=n(0),i=r("%TypeError%");e.exports=function(e,t){if(null==e)throw new i(t||"Cannot call method on "+e);return e}},function(e,t,n){"use strict";var r=n(74),i=n(75),o=n(71),a=n(77),u=n(76),s=n(81);e.exports=function(e){var t=o(e);return a(t)?0:0!==t&&u(t)?s(t)*i(r(t)):t}},function(e,t,n){"use strict";var r=n(72);e.exports=function(e){var t=r(e,Number);if("string"!=typeof t)return+t;var n=t.replace(/^[ \t\x0b\f\xa0\ufeff\n\r\u2028\u2029\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u0085]+|[ \t\x0b\f\xa0\ufeff\n\r\u2028\u2029\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u0085]+$/g,"");return/^0[ob]|^[+-]0x/.test(n)?NaN:+n}},function(e,t,n){"use strict";e.exports=n(84)},function(e,t,n){"use strict";e.exports=function(e){return null===e?"Null":void 0===e?"Undefined":"function"==typeof e||"object"==typeof e?"Object":"number"==typeof e?"Number":"boolean"==typeof e?"Boolean":"string"==typeof e?"String":void 0}},function(e,t,n){"use strict";var r=n(0),i=r("%Math.abs%");e.exports=function(e){return i(e)}},function(e,t,n){"use strict";var r=Math.floor;e.exports=function(e){return r(e)}},function(e,t,n){"use strict";var r=Number.isNaN||function(e){return e!==e};e.exports=Number.isFinite||function(e){return"number"==typeof e&&!r(e)&&e!==1/0&&e!==-1/0}},function(e,t,n){"use strict";e.exports=Number.isNaN||function(e){return e!==e}},function(e,t,n){"use strict";e.exports=function(e){return null===e||"function"!=typeof e&&"object"!=typeof e}},function(e,t,n){"use strict";var r=n(0),i=r("%Math%"),o=r("%Number%");e.exports=o.MAX_SAFE_INTEGER||i.pow(2,53)-1},function(e,t,n){"use strict";var r=n(0),i=r("RegExp.prototype.test"),o=n(4);e.exports=function(e){return o(i,e)}},function(e,t,n){"use strict";e.exports=function(e){return e>=0?1:-1}},function(e,t){e.exports=function(e){var t=!0,n=!0,r=!1;if("function"==typeof e){try{e.call("f",function(e,n,r){"object"!=typeof r&&(t=!1)}),e.call([null],function(){"use strict";n="string"==typeof this},"x")}catch(e){r=!0}return!r&&t&&n}return!1}},function(e,t,n){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator,i=n(21),o=n(11),a=n(91),u=n(93),s=function(e,t){if(void 0===e||null===e)throw new TypeError("Cannot call method on "+e);if("string"!=typeof t||"number"!==t&&"string"!==t)throw new TypeError('hint must be "string" or "number"');var n,r,a,u="string"===t?["toString","valueOf"]:["valueOf","toString"];for(a=0;a<u.length;++a)if(n=e[u[a]],o(n)&&(r=n.call(e),i(r)))return r;throw new TypeError("No default value")},l=function(e,t){var n=e[t];if(null!==n&&void 0!==n){if(!o(n))throw new TypeError(n+" returned for property "+t+" of object "+e+" is not a function");return n}};e.exports=function(e){if(i(e))return e;var t="default";arguments.length>1&&(arguments[1]===String?t="string":arguments[1]===Number&&(t="number"));var n;if(r&&(Symbol.toPrimitive?n=l(e,Symbol.toPrimitive):u(e)&&(n=Symbol.prototype.valueOf)),void 0!==n){var o=n.call(e,t);if(i(o))return o;throw new TypeError("unable to convert exotic object to primitive")}return"default"===t&&(a(e)||u(e))&&(t="string"),s(e,"default"===t?"number":t)}},function(e,t,n){"use strict";var r=Object.prototype.toString,i=n(21),o=n(11),a={"[[DefaultValue]]":function(e){var t;if((t=arguments.length>1?arguments[1]:"[object Date]"===r.call(e)?String:Number)===String||t===Number){var n,a,u=t===String?["toString","valueOf"]:["valueOf","toString"];for(a=0;a<u.length;++a)if(o(e[u[a]])&&(n=e[u[a]](),i(n)))return n;throw new TypeError("No default value")}throw new TypeError("invalid [[DefaultValue]] hint supplied")}};e.exports=function(e){return i(e)?e:arguments.length>1?a["[[DefaultValue]]"](e,arguments[1]):a["[[DefaultValue]]"](e)}},function(e,t,n){"use strict";var r=Array.prototype.slice,i=Object.prototype.toString;e.exports=function(e){var t=this;if("function"!=typeof t||"[object Function]"!==i.call(t))throw new TypeError("Function.prototype.bind called on incompatible "+t);for(var n,o=r.call(arguments,1),a=function(){if(this instanceof n){var i=t.apply(this,o.concat(r.call(arguments)));return Object(i)===i?i:this}return t.apply(e,o.concat(r.call(arguments)))},u=Math.max(0,t.length-o.length),s=[],l=0;l<u;l++)s.push("$"+l);if(n=Function("binder","return function ("+s.join(",")+"){ return binder.apply(this,arguments); }")(a),t.prototype){var c=function(){};c.prototype=t.prototype,n.prototype=new c,c.prototype=null}return n}},function(e,t,n){!function(t,n){e.exports=n()}(0,function(){"use strict";function e(e){return'<span style="color: slategray">'+e+"</span>"}var t=function(e,t){return t={exports:{}},e(t,t.exports),t.exports}(function(e){var t=e.exports=function(){return new RegExp("(?:"+t.line().source+")|(?:"+t.block().source+")","gm")};t.line=function(){return/(?:^|\s)\/\/(.+?)$/gm},t.block=function(){return/\/\*([\S\s]*?)\*\//gm}}),n=["23AC69","91C132","F19726","E8552D","1AAB8E","E1147F","2980C1","1BA1E6","9FA0A0","F19726","E30B20","E30B20","A3338B"];return function(r,i){void 0===i&&(i={});var o=i.colors;void 0===o&&(o=n);var a=0,u={},s=/[\u4E00-\u9FFF\u3400-\u4dbf\uf900-\ufaff\u3040-\u309f\uac00-\ud7af\u0400-\u04FF]+|\w+/,l=/</,c=new RegExp("("+s.source+"|"+l.source+")|("+t().source+")","gmi");return r.replace(c,function(t,n,r){if(r)return e(r);if("<"===n)return"&lt;";var i;u[n]?i=u[n]:(i=o[a],u[n]=i);var s='<span style="color: #'+i+'">'+n+"</span>";return a=++a%o.length,s})}})},function(e,t,n){"use strict";var r={allowedAttributes:{a:["href","name","target","title","aria-label"],iframe:["allowfullscreen","frameborder","src"],img:["src","alt","title","aria-label"]},allowedClasses:{},allowedSchemes:["http","https","mailto"],allowedTags:["a","abbr","article","b","blockquote","br","caption","code","del","details","div","em","h1","h2","h3","h4","h5","h6","hr","i","img","ins","kbd","li","main","mark","ol","p","pre","section","span","strike","strong","sub","summary","sup","table","tbody","td","th","thead","tr","u","ul"],filter:null};e.exports=r},function(e,t,n){"use strict";function r(e,t,n){var r=[],s=!0===n?t:i({},u,t),l=a(r,s);return o(e,l),r.join("")}var i=(n(10),n(50)),o=n(89),a=n(90),u=n(87);r.defaults=u,e.exports=r},function(e,t,n){"use strict";function r(){var e=[];return e.lastItem=function(){return e[e.length-1]},e}function i(e,t){function n(){"\x3c!--"===e.substr(0,4)?d():p.test(e)?i(l,g):f.test(e)&&i(s,v),h()}function i(t,n){var r=e.match(t);r&&(e=e.substring(r[0].length),r[0].replace(t,n),m=!1)}function d(){var n=e.indexOf("--\x3e");n>=0&&(t.comment&&t.comment(e.substring(4,n)),e=e.substring(n+3),m=!1)}function h(){if(m){var n,r=e.indexOf("<");r>=0?(n=e.substring(0,r),e=e.substring(r)):(n=e,e=""),t.chars&&t.chars(n)}}function v(e,n,r,i){function s(e,t,n,r,i){l[t]=void 0===n&&void 0===r&&void 0===i?void 0:o.decode(n||r||i||"")}var l={},f=a(n),p=u.voids[f]||!!i;r.replace(c,s),p||y.push(f),t.start&&t.start(f,l,p)}function g(e,n){var r,i=0,o=a(n);if(o)for(i=y.length-1;i>=0&&y[i]!==o;i--);if(i>=0){for(r=y.length-1;r>=i;r--)t.end&&t.end(y[r]);y.length=i}}for(var m,y=r(),b=e;e;)!function(){m=!0,n();var t=e===b;b=e,t&&(e="")}();g()}var o=n(10),a=n(28),u=(n(26),n(27)),s=/^<\s*([\w:-]+)((?:\s+[\w:-]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)\s*>/,l=/^<\s*\/\s*([\w:-]+)[^>]*>/,c=/([\w:-]+)(?:\s*=\s*(?:(?:"((?:[^"])*)")|(?:'((?:[^'])*)')|([^>\s]+)))?/g,f=/^</,p=/^<\s*\//;e.exports=i},function(e,t,n){"use strict";function r(e,t){function n(t){e.push(t)}function r(e,t,r){function u(e){function r(e){return f&&-1!==f.indexOf(e)}var u,c=t[e],f=(v.allowedClasses||{})[s]||[],p=(v.allowedAttributes||{})[s]||[],d=o(e);"class"===d&&-1===p.indexOf(d)?(c=c.split(" ").filter(r).join(" ").trim(),u=c.length):u=-1!==p.indexOf(d)&&(!0!==a.uris[d]||l(c)),u&&(n(" "),n(e),"string"==typeof c&&(n('="'),n(i.encode(c)),n('"')))}var s=o(e);return h.ignoring?void f(s):-1===(v.allowedTags||[]).indexOf(s)?void f(s):v.filter&&!v.filter({tag:s,attrs:t})?void f(s):(n("<"),n(s),Object.keys(t).forEach(u),void n(r?"/>":">"))}function s(e){var t=o(e);-1!==(v.allowedTags||[]).indexOf(t)&&!1===h.ignoring?(n("</"),n(t),n(">")):p(t)}function l(e){function t(t){return 0===e.indexOf(t+":")}var n=e[0];if("#"===n||"/"===n)return!0;var r=e.indexOf(":");if(-1===r)return!0;var i=e.indexOf("?");if(-1!==i&&r>i)return!0;var o=e.indexOf("#");return-1!==o&&r>o||v.allowedSchemes.some(t)}function c(e){!1===h.ignoring&&n(v.transformText?v.transformText(e):e)}function f(e){u.voids[e]||(!1===h.ignoring?h={ignoring:e,depth:1}:h.ignoring===e&&h.depth++)}function p(e){h.ignoring===e&&--h.depth<=0&&d()}function d(){h={ignoring:!1,depth:0}}var h,v=t||{};return d(),{start:r,end:s,chars:c}}var i=n(10),o=n(28),a=n(26),u=n(27);e.exports=r},function(e,t,n){"use strict";var r=Date.prototype.getDay,i=function(e){try{return r.call(e),!0}catch(e){return!1}},o=Object.prototype.toString,a=n(24)();e.exports=function(e){return"object"==typeof e&&null!==e&&(a?i(e):"[object Date]"===o.call(e))}},function(e,t,n){"use strict";var r=String.prototype.valueOf,i=function(e){try{return r.call(e),!0}catch(e){return!1}},o=Object.prototype.toString,a=n(24)();e.exports=function(e){return"string"==typeof e||"object"==typeof e&&(a?i(e):"[object String]"===o.call(e))}},function(e,t,n){"use strict";var r=Object.prototype.toString;if(n(22)()){var i=Symbol.prototype.toString,o=/^Symbol\(.*\)$/,a=function(e){return"symbol"==typeof e.valueOf()&&o.test(i.call(e))};e.exports=function(e){if("symbol"==typeof e)return!0;if("[object Symbol]"!==r.call(e))return!1;try{return a(e)}catch(e){return!1}}}else e.exports=function(e){return!1}},function(e,t,n){!function(e,n){n(t)}(0,function(e){"use strict";function t(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function n(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}function r(e,t){if(e){if("string"==typeof e)return i(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?i(e,t):void 0}}function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function o(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=r(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var i=0;return function(){return i>=e.length?{done:!0}:{done:!1,value:e[i++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function a(){return{baseUrl:null,breaks:!1,extensions:null,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartLists:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1}}function u(t){e.defaults=t}function s(e,t){if(t){if(k.test(e))return e.replace(E,_)}else if(F.test(e))return e.replace(C,_);return e}function l(e){return e.replace(O,function(e,t){return t=t.toLowerCase(),"colon"===t?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):""})}function c(e,t){e=e.source||e,t=t||"";var n={replace:function(t,r){return r=r.source||r,r=r.replace(B,"$1"),e=e.replace(t,r),n},getRegex:function(){return new RegExp(e,t)}};return n}function f(e,t,n){if(e){var r;try{r=decodeURIComponent(l(n)).replace(j,"").toLowerCase()}catch(e){return null}if(0===r.indexOf("javascript:")||0===r.indexOf("vbscript:")||0===r.indexOf("data:"))return null}t&&!$.test(n)&&(n=p(t,n));try{n=encodeURI(n).replace(/%25/g,"%")}catch(e){return null}return n}function p(e,t){T[" "+e]||(I.test(e)?T[" "+e]=e+"/":T[" "+e]=v(e,"/",!0)),e=T[" "+e];var n=-1===e.indexOf(":");return"//"===t.substring(0,2)?n?t:e.replace(z,"$1")+t:"/"===t.charAt(0)?n?t:e.replace(P,"$1")+t:e+t}function d(e){for(var t,n,r=1;r<arguments.length;r++){t=arguments[r];for(n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])}return e}function h(e,t){var n=e.replace(/\|/g,function(e,t,n){for(var r=!1,i=t;--i>=0&&"\\"===n[i];)r=!r;return r?"|":" |"}),r=n.split(/ \|/),i=0;if(r[0].trim()||r.shift(),r.length>0&&!r[r.length-1].trim()&&r.pop(),r.length>t)r.splice(t);else for(;r.length<t;)r.push("");for(;i<r.length;i++)r[i]=r[i].trim().replace(/\\\|/g,"|");return r}function v(e,t,n){var r=e.length;if(0===r)return"";for(var i=0;i<r;){var o=e.charAt(r-i-1);if(o!==t||n){if(o===t||!n)break;i++}else i++}return e.substr(0,r-i)}function g(e,t){if(-1===e.indexOf(t[1]))return-1;for(var n=e.length,r=0,i=0;i<n;i++)if("\\"===e[i])i++;else if(e[i]===t[0])r++;else if(e[i]===t[1]&&--r<0)return i;return-1}function m(e){e&&e.sanitize&&e.silent}function y(e,t){if(t<1)return"";for(var n="";t>1;)1&t&&(n+=e),t>>=1,e+=e;return n+e}function b(e,t,n,r){var i=t.href,o=t.title?s(t.title):null,a=e[1].replace(/\\([\[\]])/g,"$1");if("!"!==e[0].charAt(0)){r.state.inLink=!0;var u={type:"link",raw:n,href:i,title:o,text:a,tokens:r.inlineTokens(a,[])};return r.state.inLink=!1,u}return{type:"image",raw:n,href:i,title:o,text:s(a)}}function D(e,t){var n=e.match(/^(\s+)(?:```)/);if(null===n)return t;var r=n[1];return t.split("\n").map(function(e){var t=e.match(/^\s+/);return null===t?e:t[0].length>=r.length?e.slice(r.length):e}).join("\n")}function x(e){return e.replace(/---/g,"—").replace(/--/g,"–").replace(/(^|[-\u2014/(\[{"\s])'/g,"$1‘").replace(/'/g,"’").replace(/(^|[-\u2014/(\[{\u2018\s])"/g,"$1“").replace(/"/g,"”").replace(/\.{3}/g,"…")}function w(e){var t,n,r="",i=e.length;for(t=0;t<i;t++)n=e.charCodeAt(t),Math.random()>.5&&(n="x"+n.toString(16)),r+="&#"+n+";";return r}function A(e,t,n){if(void 0===e||null===e)throw new Error("marked(): input parameter is undefined or null");if("string"!=typeof e)throw new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected");if("function"==typeof t&&(n=t,t=null),t=d({},A.defaults,t||{}),m(t),n){var r,i=t.highlight;try{r=U.lex(e,t)}catch(e){return n(e)}var o=function(e){var o;if(!e)try{t.walkTokens&&A.walkTokens(r,t.walkTokens),o=V.parse(r,t)}catch(t){e=t}return t.highlight=i,e?n(e):n(null,o)};if(!i||i.length<3)return o();if(delete t.highlight,!r.length)return o();var a=0;return A.walkTokens(r,function(e){"code"===e.type&&(a++,setTimeout(function(){i(e.text,e.lang,function(t,n){if(t)return o(t);null!=n&&n!==e.text&&(e.text=n,e.escaped=!0),0===--a&&o()})},0))}),void(0===a&&o())}try{var u=U.lex(e,t);return t.walkTokens&&A.walkTokens(u,t.walkTokens),V.parse(u,t)}catch(e){if(e.message+="\nPlease report this to https://github.com/markedjs/marked.",t.silent)return"<p>An error occurred:</p><pre>"+s(e.message+"",!0)+"</pre>";throw e}}e.defaults=a();var k=/[&<>"']/,E=/[&<>"']/g,F=/[<>"']|&(?!#?\w+;)/,C=/[<>"']|&(?!#?\w+;)/g,S={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},_=function(e){return S[e]},O=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi,B=/(^|[^\[])\^/g,j=/[^\w:]/g,$=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i,T={},I=/^[^:]+:\/*[^/]*$/,z=/^([^:]+:)[\s\S]*$/,P=/^([^:]+:\/*[^/]*)[\s\S]*$/,R={exec:function(){}},M=function(){function t(t){this.options=t||e.defaults}var n=t.prototype;return n.space=function(e){var t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:"space",raw:t[0]}},n.code=function(e){var t=this.rules.block.code.exec(e);if(t){var n=t[0].replace(/^ {1,4}/gm,"");return{type:"code",raw:t[0],codeBlockStyle:"indented",text:this.options.pedantic?n:v(n,"\n")}}},n.fences=function(e){var t=this.rules.block.fences.exec(e);if(t){var n=t[0],r=D(n,t[3]||"");return{type:"code",raw:n,lang:t[2]?t[2].trim():t[2],text:r}}},n.heading=function(e){var t=this.rules.block.heading.exec(e);if(t){var n=t[2].trim();if(/#$/.test(n)){var r=v(n,"#");this.options.pedantic?n=r.trim():r&&!/ $/.test(r)||(n=r.trim())}var i={type:"heading",raw:t[0],depth:t[1].length,text:n,tokens:[]};return this.lexer.inline(i.text,i.tokens),i}},n.hr=function(e){var t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:t[0]}},n.blockquote=function(e){var t=this.rules.block.blockquote.exec(e);if(t){var n=t[0].replace(/^ *> ?/gm,"");return{type:"blockquote",raw:t[0],tokens:this.lexer.blockTokens(n,[]),text:n}}},n.list=function(e){var t=this.rules.block.list.exec(e);if(t){var n,r,i,a,u,s,l,c,f,p,d,h,v=t[1].trim(),g=v.length>1,m={type:"list",raw:"",ordered:g,start:g?+v.slice(0,-1):"",loose:!1,items:[]};v=g?"\\d{1,9}\\"+v.slice(-1):"\\"+v,this.options.pedantic&&(v=g?v:"[*+-]");for(var y=new RegExp("^( {0,3}"+v+")((?: [^\\n]*)?(?:\\n|$))");e&&(h=!1,t=y.exec(e))&&!this.rules.block.hr.test(e);){if(n=t[0],e=e.substring(n.length),c=t[2].split("\n",1)[0],f=e.split("\n",1)[0],this.options.pedantic?(a=2,d=c.trimLeft()):(a=t[2].search(/[^ ]/),a=a>4?1:a,d=c.slice(a),a+=t[1].length),s=!1,!c&&/^ *$/.test(f)&&(n+=f+"\n",e=e.substring(f.length+1),h=!0),!h)for(var b=new RegExp("^ {0,"+Math.min(3,a-1)+"}(?:[*+-]|\\d{1,9}[.)])");e&&(p=e.split("\n",1)[0],c=p,this.options.pedantic&&(c=c.replace(/^ {1,4}(?=( {4})*[^ ])/g," ")),!b.test(c));){if(c.search(/[^ ]/)>=a||!c.trim())d+="\n"+c.slice(a);else{if(s)break;d+="\n"+c}s||c.trim()||(s=!0),n+=p+"\n",e=e.substring(p.length+1)}m.loose||(l?m.loose=!0:/\n *\n *$/.test(n)&&(l=!0)),this.options.gfm&&(r=/^\[[ xX]\] /.exec(d))&&(i="[ ] "!==r[0],d=d.replace(/^\[[ xX]\] +/,"")),m.items.push({type:"list_item",raw:n,task:!!r,checked:i,loose:!1,text:d}),m.raw+=n}m.items[m.items.length-1].raw=n.trimRight(),m.items[m.items.length-1].text=d.trimRight(),m.raw=m.raw.trimRight();var D=m.items.length;for(u=0;u<D;u++){this.lexer.state.top=!1,m.items[u].tokens=this.lexer.blockTokens(m.items[u].text,[]);var x=m.items[u].tokens.filter(function(e){return"space"===e.type}),w=x.every(function(e){for(var t,n=e.raw.split(""),r=0,i=o(n);!(t=i()).done;){if("\n"===t.value&&(r+=1),r>1)return!0}return!1});!m.loose&&x.length&&w&&(m.loose=!0,m.items[u].loose=!0)}return m}},n.html=function(e){var t=this.rules.block.html.exec(e);if(t){var n={type:"html",raw:t[0],pre:!this.options.sanitizer&&("pre"===t[1]||"script"===t[1]||"style"===t[1]),text:t[0]};return this.options.sanitize&&(n.type="paragraph",n.text=this.options.sanitizer?this.options.sanitizer(t[0]):s(t[0]),n.tokens=[],this.lexer.inline(n.text,n.tokens)),n}},n.def=function(e){var t=this.rules.block.def.exec(e);if(t){t[3]&&(t[3]=t[3].substring(1,t[3].length-1));return{type:"def",tag:t[1].toLowerCase().replace(/\s+/g," "),raw:t[0],href:t[2],title:t[3]}}},n.table=function(e){var t=this.rules.block.table.exec(e);if(t){var n={type:"table",header:h(t[1]).map(function(e){return{text:e}}),align:t[2].replace(/^ *|\| *$/g,"").split(/ *\| */),rows:t[3]&&t[3].trim()?t[3].replace(/\n[ \t]*$/,"").split("\n"):[]};if(n.header.length===n.align.length){n.raw=t[0];var r,i,o,a,u=n.align.length;for(r=0;r<u;r++)/^ *-+: *$/.test(n.align[r])?n.align[r]="right":/^ *:-+: *$/.test(n.align[r])?n.align[r]="center":/^ *:-+ *$/.test(n.align[r])?n.align[r]="left":n.align[r]=null;for(u=n.rows.length,r=0;r<u;r++)n.rows[r]=h(n.rows[r],n.header.length).map(function(e){return{text:e}});for(u=n.header.length,i=0;i<u;i++)n.header[i].tokens=[],this.lexer.inlineTokens(n.header[i].text,n.header[i].tokens);for(u=n.rows.length,i=0;i<u;i++)for(a=n.rows[i],o=0;o<a.length;o++)a[o].tokens=[],this.lexer.inlineTokens(a[o].text,a[o].tokens);return n}}},n.lheading=function(e){var t=this.rules.block.lheading.exec(e);if(t){var n={type:"heading",raw:t[0],depth:"="===t[2].charAt(0)?1:2,text:t[1],tokens:[]};return this.lexer.inline(n.text,n.tokens),n}},n.paragraph=function(e){var t=this.rules.block.paragraph.exec(e);if(t){var n={type:"paragraph",raw:t[0],text:"\n"===t[1].charAt(t[1].length-1)?t[1].slice(0,-1):t[1],tokens:[]};return this.lexer.inline(n.text,n.tokens),n}},n.text=function(e){var t=this.rules.block.text.exec(e);if(t){var n={type:"text",raw:t[0],text:t[0],tokens:[]};return this.lexer.inline(n.text,n.tokens),n}},n.escape=function(e){var t=this.rules.inline.escape.exec(e);if(t)return{type:"escape",raw:t[0],text:s(t[1])}},n.tag=function(e){var t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&/^<a /i.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&/^<\/a>/i.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:this.options.sanitize?"text":"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(t[0]):s(t[0]):t[0]}},n.link=function(e){var t=this.rules.inline.link.exec(e);if(t){var n=t[2].trim();if(!this.options.pedantic&&/^</.test(n)){if(!/>$/.test(n))return;var r=v(n.slice(0,-1),"\\");if((n.length-r.length)%2==0)return}else{var i=g(t[2],"()");if(i>-1){var o=0===t[0].indexOf("!")?5:4,a=o+t[1].length+i;t[2]=t[2].substring(0,i),t[0]=t[0].substring(0,a).trim(),t[3]=""}}var u=t[2],s="";if(this.options.pedantic){var l=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(u);l&&(u=l[1],s=l[3])}else s=t[3]?t[3].slice(1,-1):"";return u=u.trim(),/^</.test(u)&&(u=this.options.pedantic&&!/>$/.test(n)?u.slice(1):u.slice(1,-1)),b(t,{href:u?u.replace(this.rules.inline._escapes,"$1"):u,title:s?s.replace(this.rules.inline._escapes,"$1"):s},t[0],this.lexer)}},n.reflink=function(e,t){var n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){var r=(n[2]||n[1]).replace(/\s+/g," ");if(!(r=t[r.toLowerCase()])||!r.href){var i=n[0].charAt(0);return{type:"text",raw:i,text:i}}return b(n,r,n[0],this.lexer)}},n.emStrong=function(e,t,n){void 0===n&&(n="");var r=this.rules.inline.emStrong.lDelim.exec(e);if(r&&(!r[3]||!n.match(/(?:[0-9A-Za-z\xAA\xB2\xB3\xB5\xB9\xBA\xBC-\xBE\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u0660-\u0669\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07C0-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0966-\u096F\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09E6-\u09F1\u09F4-\u09F9\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A66-\u0A6F\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AE6-\u0AEF\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B66-\u0B6F\u0B71-\u0B77\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0BE6-\u0BF2\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C66-\u0C6F\u0C78-\u0C7E\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CE6-\u0CEF\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D58-\u0D61\u0D66-\u0D78\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DE6-\u0DEF\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F20-\u0F33\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F-\u1049\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u1090-\u1099\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1369-\u137C\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A16\u1A20-\u1A54\u1A80-\u1A89\u1A90-\u1A99\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B50-\u1B59\u1B83-\u1BA0\u1BAE-\u1BE5\u1C00-\u1C23\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2070\u2071\u2074-\u2079\u207F-\u2089\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2150-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2CFD\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u3192-\u3195\u31A0-\u31BF\u31F0-\u31FF\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA830-\uA835\uA840-\uA873\uA882-\uA8B3\uA8D0-\uA8D9\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA900-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF-\uA9D9\uA9E0-\uA9E4\uA9E6-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA50-\uAA59\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDE80-\uDE9C\uDEA0-\uDED0\uDEE1-\uDEFB\uDF00-\uDF23\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC58-\uDC76\uDC79-\uDC9E\uDCA7-\uDCAF\uDCE0-\uDCF2\uDCF4\uDCF5\uDCFB-\uDD1B\uDD20-\uDD39\uDD80-\uDDB7\uDDBC-\uDDCF\uDDD2-\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE40-\uDE48\uDE60-\uDE7E\uDE80-\uDE9F\uDEC0-\uDEC7\uDEC9-\uDEE4\uDEEB-\uDEEF\uDF00-\uDF35\uDF40-\uDF55\uDF58-\uDF72\uDF78-\uDF91\uDFA9-\uDFAF]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDCFA-\uDD23\uDD30-\uDD39\uDE60-\uDE7E\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF27\uDF30-\uDF45\uDF51-\uDF54\uDF70-\uDF81\uDFB0-\uDFCB\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC52-\uDC6F\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD03-\uDD26\uDD36-\uDD3F\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDD0-\uDDDA\uDDDC\uDDE1-\uDDF4\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDEF0-\uDEF9\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC50-\uDC59\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE50-\uDE59\uDE80-\uDEAA\uDEB8\uDEC0-\uDEC9\uDF00-\uDF1A\uDF30-\uDF3B\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCF2\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDD50-\uDD59\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC50-\uDC6C\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD50-\uDD59\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDDA0-\uDDA9\uDEE0-\uDEF2\uDFB0\uDFC0-\uDFD4]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDE70-\uDEBE\uDEC0-\uDEC9\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF50-\uDF59\uDF5B-\uDF61\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE96\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD834[\uDEE0-\uDEF3\uDF60-\uDF78]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD837[\uDF00-\uDF1E]|\uD838[\uDD00-\uDD2C\uDD37-\uDD3D\uDD40-\uDD49\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB\uDEF0-\uDEF9]|\uD839[\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDCC7-\uDCCF\uDD00-\uDD43\uDD4B\uDD50-\uDD59]|\uD83B[\uDC71-\uDCAB\uDCAD-\uDCAF\uDCB1-\uDCB4\uDD01-\uDD2D\uDD2F-\uDD3D\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD83C[\uDD00-\uDD0C]|\uD83E[\uDFF0-\uDFF9]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF38\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A])/))){var i=r[1]||r[2]||"";if(!i||i&&(""===n||this.rules.inline.punctuation.exec(n))){var o,a,u=r[0].length-1,s=u,l=0,c="*"===r[0][0]?this.rules.inline.emStrong.rDelimAst:this.rules.inline.emStrong.rDelimUnd;for(c.lastIndex=0,t=t.slice(-1*e.length+u);null!=(r=c.exec(t));)if(o=r[1]||r[2]||r[3]||r[4]||r[5]||r[6])if(a=o.length,r[3]||r[4])s+=a;else if(!((r[5]||r[6])&&u%3)||(u+a)%3){if(!((s-=a)>0)){if(a=Math.min(a,a+s+l),Math.min(u,a)%2){var f=e.slice(1,u+r.index+a);return{type:"em",raw:e.slice(0,u+r.index+a+1),text:f,tokens:this.lexer.inlineTokens(f,[])}}var p=e.slice(2,u+r.index+a-1);return{type:"strong",raw:e.slice(0,u+r.index+a+1),text:p,tokens:this.lexer.inlineTokens(p,[])}}}else l+=a}}},n.codespan=function(e){var t=this.rules.inline.code.exec(e);if(t){var n=t[2].replace(/\n/g," "),r=/[^ ]/.test(n),i=/^ /.test(n)&&/ $/.test(n);return r&&i&&(n=n.substring(1,n.length-1)),n=s(n,!0),{type:"codespan",raw:t[0],text:n}}},n.br=function(e){var t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}},n.del=function(e){var t=this.rules.inline.del.exec(e);if(t)return{type:"del",raw:t[0],text:t[2],tokens:this.lexer.inlineTokens(t[2],[])}},n.autolink=function(e,t){var n=this.rules.inline.autolink.exec(e);if(n){var r,i;return"@"===n[2]?(r=s(this.options.mangle?t(n[1]):n[1]),i="mailto:"+r):(r=s(n[1]),i=r),{type:"link",raw:n[0],text:r,href:i,tokens:[{type:"text",raw:r,text:r}]}}},n.url=function(e,t){var n;if(n=this.rules.inline.url.exec(e)){var r,i;if("@"===n[2])r=s(this.options.mangle?t(n[0]):n[0]),i="mailto:"+r;else{var o;do{o=n[0],n[0]=this.rules.inline._backpedal.exec(n[0])[0]}while(o!==n[0]);r=s(n[0]),i="www."===n[1]?"http://"+r:r}return{type:"link",raw:n[0],text:r,href:i,tokens:[{type:"text",raw:r,text:r}]}}},n.inlineText=function(e,t){var n=this.rules.inline.text.exec(e);if(n){var r;return r=this.lexer.state.inRawBlock?this.options.sanitize?this.options.sanitizer?this.options.sanitizer(n[0]):s(n[0]):n[0]:s(this.options.smartypants?t(n[0]):n[0]),{type:"text",raw:n[0],text:r}}},t}(),L={newline:/^(?: *(?:\n|$))+/,code:/^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,fences:/^ {0,3}(`{3,}(?=[^`\n]*\n)|~{3,})([^\n]*)\n(?:|([\s\S]*?)\n)(?: {0,3}\1[~`]* *(?=\n|$)|$)/,hr:/^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\* *){3,})(?:\n+|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3}bull)( [^\n]+?)?(?:\n|$)/,html:"^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))",def:/^ {0,3}\[(label)\]: *(?:\n *)?<?([^\s>]+)>?(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/,table:R,lheading:/^([^\n]+)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,text:/^[^\n]+/};L._label=/(?!\s*\])(?:\\.|[^\[\]\\])+/,L._title=/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/,L.def=c(L.def).replace("label",L._label).replace("title",L._title).getRegex(),L.bullet=/(?:[*+-]|\d{1,9}[.)])/,L.listItemStart=c(/^( *)(bull) */).replace("bull",L.bullet).getRegex(),L.list=c(L.list).replace(/bull/g,L.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+L.def.source+")").getRegex(),L._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",L._comment=/<!--(?!-?>)[\s\S]*?(?:-->|$)/,L.html=c(L.html,"i").replace("comment",L._comment).replace("tag",L._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),L.paragraph=c(L._paragraph).replace("hr",L.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",L._tag).getRegex(),L.blockquote=c(L.blockquote).replace("paragraph",L.paragraph).getRegex(),L.normal=d({},L),L.gfm=d({},L.normal,{table:"^ *([^\\n ].*\\|.*)\\n {0,3}(?:\\| *)?(:?-+:? *(?:\\| *:?-+:? *)*)(?:\\| *)?(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"}),L.gfm.table=c(L.gfm.table).replace("hr",L.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",L._tag).getRegex(),L.gfm.paragraph=c(L._paragraph).replace("hr",L.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("table",L.gfm.table).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",L._tag).getRegex(),L.pedantic=d({},L.normal,{html:c("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\s[^'\"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",L._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:R,paragraph:c(L.normal._paragraph).replace("hr",L.hr).replace("heading"," *#{1,6} *[^\n]").replace("lheading",L.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()});var N={escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:R,tag:"^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(ref)\]/,nolink:/^!?\[(ref)\](?:\[\])?/,reflinkSearch:"reflink|nolink(?!\\()",emStrong:{lDelim:/^(?:\*+(?:([punct_])|[^\s*]))|^_+(?:([punct*])|([^\s_]))/,rDelimAst:/^[^_*]*?\_\_[^_*]*?\*[^_*]*?(?=\_\_)|[punct_](\*+)(?=[\s]|$)|[^punct*_\s](\*+)(?=[punct_\s]|$)|[punct_\s](\*+)(?=[^punct*_\s])|[\s](\*+)(?=[punct_])|[punct_](\*+)(?=[punct_])|[^punct*_\s](\*+)(?=[^punct*_\s])/,rDelimUnd:/^[^_*]*?\*\*[^_*]*?\_[^_*]*?(?=\*\*)|[punct*](\_+)(?=[\s]|$)|[^punct*_\s](\_+)(?=[punct*\s]|$)|[punct*\s](\_+)(?=[^punct*_\s])|[\s](\_+)(?=[punct*])|[punct*](\_+)(?=[punct*])/},code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:R,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,punctuation:/^([\spunctuation])/};N._punctuation="!\"#$%&'()+\\-.,/:;<=>?@\\[\\]`^{|}~",N.punctuation=c(N.punctuation).replace(/punctuation/g,N._punctuation).getRegex(),N.blockSkip=/\[[^\]]*?\]\([^\)]*?\)|`[^`]*?`|<[^>]*?>/g,N.escapedEmSt=/\\\*|\\_/g,N._comment=c(L._comment).replace("(?:--\x3e|$)","--\x3e").getRegex(),N.emStrong.lDelim=c(N.emStrong.lDelim).replace(/punct/g,N._punctuation).getRegex(),N.emStrong.rDelimAst=c(N.emStrong.rDelimAst,"g").replace(/punct/g,N._punctuation).getRegex(),N.emStrong.rDelimUnd=c(N.emStrong.rDelimUnd,"g").replace(/punct/g,N._punctuation).getRegex(),N._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g,N._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,N._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,N.autolink=c(N.autolink).replace("scheme",N._scheme).replace("email",N._email).getRegex(),N._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,N.tag=c(N.tag).replace("comment",N._comment).replace("attribute",N._attribute).getRegex(),N._label=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,N._href=/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/,N._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,N.link=c(N.link).replace("label",N._label).replace("href",N._href).replace("title",N._title).getRegex(),N.reflink=c(N.reflink).replace("label",N._label).replace("ref",L._label).getRegex(),N.nolink=c(N.nolink).replace("ref",L._label).getRegex(),N.reflinkSearch=c(N.reflinkSearch,"g").replace("reflink",N.reflink).replace("nolink",N.nolink).getRegex(),N.normal=d({},N),N.pedantic=d({},N.normal,{strong:{start:/^__|\*\*/,middle:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,endAst:/\*\*(?!\*)/g,endUnd:/__(?!_)/g},em:{start:/^_|\*/,middle:/^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,endAst:/\*(?!\*)/g,endUnd:/_(?!_)/g},link:c(/^!?\[(label)\]\((.*?)\)/).replace("label",N._label).getRegex(),reflink:c(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",N._label).getRegex()}),N.gfm=d({},N.normal,{escape:c(N.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|https?:\/\/|ftp:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/}),N.gfm.url=c(N.gfm.url,"i").replace("email",N.gfm._extended_email).getRegex(),N.breaks=d({},N.gfm,{br:c(N.br).replace("{2,}","*").getRegex(),text:c(N.gfm.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()});var U=function(){function t(t){this.tokens=[],this.tokens.links=Object.create(null),this.options=t||e.defaults,this.options.tokenizer=this.options.tokenizer||new M,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};var n={block:L.normal,inline:N.normal};this.options.pedantic?(n.block=L.pedantic,n.inline=N.pedantic):this.options.gfm&&(n.block=L.gfm,this.options.breaks?n.inline=N.breaks:n.inline=N.gfm),this.tokenizer.rules=n}t.lex=function(e,n){return new t(n).lex(e)},t.lexInline=function(e,n){return new t(n).inlineTokens(e)};var r=t.prototype;return r.lex=function(e){e=e.replace(/\r\n|\r/g,"\n").replace(/\t/g," "),this.blockTokens(e,this.tokens);for(var t;t=this.inlineQueue.shift();)this.inlineTokens(t.src,t.tokens);return this.tokens},r.blockTokens=function(e,t){var n=this;void 0===t&&(t=[]),this.options.pedantic&&(e=e.replace(/^ +$/gm,""));for(var r,i,o,a;e;)if(!(this.options.extensions&&this.options.extensions.block&&this.options.extensions.block.some(function(i){return!!(r=i.call({lexer:n},e,t))&&(e=e.substring(r.raw.length),t.push(r),!0)})))if(r=this.tokenizer.space(e))e=e.substring(r.raw.length),1===r.raw.length&&t.length>0?t[t.length-1].raw+="\n":t.push(r);else if(r=this.tokenizer.code(e))e=e.substring(r.raw.length),i=t[t.length-1],!i||"paragraph"!==i.type&&"text"!==i.type?t.push(r):(i.raw+="\n"+r.raw,i.text+="\n"+r.text,this.inlineQueue[this.inlineQueue.length-1].src=i.text);else if(r=this.tokenizer.fences(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.heading(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.hr(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.blockquote(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.list(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.html(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.def(e))e=e.substring(r.raw.length),i=t[t.length-1],!i||"paragraph"!==i.type&&"text"!==i.type?this.tokens.links[r.tag]||(this.tokens.links[r.tag]={href:r.href,title:r.title}):(i.raw+="\n"+r.raw,i.text+="\n"+r.raw,this.inlineQueue[this.inlineQueue.length-1].src=i.text);else if(r=this.tokenizer.table(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.lheading(e))e=e.substring(r.raw.length),t.push(r);else if(o=e,this.options.extensions&&this.options.extensions.startBlock&&function(){var t=1/0,r=e.slice(1),i=void 0;n.options.extensions.startBlock.forEach(function(e){"number"==typeof(i=e.call({lexer:this},r))&&i>=0&&(t=Math.min(t,i))}),t<1/0&&t>=0&&(o=e.substring(0,t+1))}(),this.state.top&&(r=this.tokenizer.paragraph(o)))i=t[t.length-1],a&&"paragraph"===i.type?(i.raw+="\n"+r.raw,i.text+="\n"+r.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=i.text):t.push(r),a=o.length!==e.length,e=e.substring(r.raw.length);else if(r=this.tokenizer.text(e))e=e.substring(r.raw.length),i=t[t.length-1],i&&"text"===i.type?(i.raw+="\n"+r.raw,i.text+="\n"+r.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=i.text):t.push(r);else if(e){var u="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent)break;throw new Error(u)}return this.state.top=!0,t},r.inline=function(e,t){this.inlineQueue.push({src:e,tokens:t})},r.inlineTokens=function(e,t){var n=this;void 0===t&&(t=[]);var r,i,o,a,u,s,l=e;if(this.tokens.links){var c=Object.keys(this.tokens.links);if(c.length>0)for(;null!=(a=this.tokenizer.rules.inline.reflinkSearch.exec(l));)c.includes(a[0].slice(a[0].lastIndexOf("[")+1,-1))&&(l=l.slice(0,a.index)+"["+y("a",a[0].length-2)+"]"+l.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;null!=(a=this.tokenizer.rules.inline.blockSkip.exec(l));)l=l.slice(0,a.index)+"["+y("a",a[0].length-2)+"]"+l.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;null!=(a=this.tokenizer.rules.inline.escapedEmSt.exec(l));)l=l.slice(0,a.index)+"++"+l.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);for(;e;)if(u||(s=""),u=!1,!(this.options.extensions&&this.options.extensions.inline&&this.options.extensions.inline.some(function(i){return!!(r=i.call({lexer:n},e,t))&&(e=e.substring(r.raw.length),t.push(r),!0)})))if(r=this.tokenizer.escape(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.tag(e))e=e.substring(r.raw.length),i=t[t.length-1],i&&"text"===r.type&&"text"===i.type?(i.raw+=r.raw,i.text+=r.text):t.push(r);else if(r=this.tokenizer.link(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.reflink(e,this.tokens.links))e=e.substring(r.raw.length),i=t[t.length-1],i&&"text"===r.type&&"text"===i.type?(i.raw+=r.raw,i.text+=r.text):t.push(r);else if(r=this.tokenizer.emStrong(e,l,s))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.codespan(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.br(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.del(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.autolink(e,w))e=e.substring(r.raw.length),t.push(r);else if(this.state.inLink||!(r=this.tokenizer.url(e,w))){if(o=e,this.options.extensions&&this.options.extensions.startInline&&function(){var t=1/0,r=e.slice(1),i=void 0;n.options.extensions.startInline.forEach(function(e){"number"==typeof(i=e.call({lexer:this},r))&&i>=0&&(t=Math.min(t,i))}),t<1/0&&t>=0&&(o=e.substring(0,t+1))}(),r=this.tokenizer.inlineText(o,x))e=e.substring(r.raw.length),"_"!==r.raw.slice(-1)&&(s=r.raw.slice(-1)),u=!0,i=t[t.length-1],i&&"text"===i.type?(i.raw+=r.raw,i.text+=r.text):t.push(r);else if(e){var f="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent)break;throw new Error(f)}}else e=e.substring(r.raw.length),t.push(r);return t},n(t,null,[{key:"rules",get:function(){return{block:L,inline:N}}}]),t}(),Q=function(){function t(t){this.options=t||e.defaults}var n=t.prototype;return n.code=function(e,t,n){var r=(t||"").match(/\S*/)[0];if(this.options.highlight){var i=this.options.highlight(e,r);null!=i&&i!==e&&(n=!0,e=i)}return e=e.replace(/\n$/,"")+"\n",r?'<pre><code class="'+this.options.langPrefix+s(r,!0)+'">'+(n?e:s(e,!0))+"</code></pre>\n":"<pre><code>"+(n?e:s(e,!0))+"</code></pre>\n"},n.blockquote=function(e){return"<blockquote>\n"+e+"</blockquote>\n"},n.html=function(e){return e},n.heading=function(e,t,n,r){return this.options.headerIds?"<h"+t+' id="'+this.options.headerPrefix+r.slug(n)+'">'+e+"</h"+t+">\n":"<h"+t+">"+e+"</h"+t+">\n"},n.hr=function(){return this.options.xhtml?"<hr/>\n":"<hr>\n"},n.list=function(e,t,n){var r=t?"ol":"ul";return"<"+r+(t&&1!==n?' start="'+n+'"':"")+">\n"+e+"</"+r+">\n"},n.listitem=function(e){return"<li>"+e+"</li>\n"},n.checkbox=function(e){return"<input "+(e?'checked="" ':"")+'disabled="" type="checkbox"'+(this.options.xhtml?" /":"")+"> "},n.paragraph=function(e){return"<p>"+e+"</p>\n"},n.table=function(e,t){return t&&(t="<tbody>"+t+"</tbody>"),"<table>\n<thead>\n"+e+"</thead>\n"+t+"</table>\n"},n.tablerow=function(e){return"<tr>\n"+e+"</tr>\n"},n.tablecell=function(e,t){var n=t.header?"th":"td";return(t.align?"<"+n+' align="'+t.align+'">':"<"+n+">")+e+"</"+n+">\n"},n.strong=function(e){return"<strong>"+e+"</strong>"},n.em=function(e){return"<em>"+e+"</em>"},n.codespan=function(e){return"<code>"+e+"</code>"},n.br=function(){return this.options.xhtml?"<br/>":"<br>"},n.del=function(e){return"<del>"+e+"</del>"},n.link=function(e,t,n){if(null===(e=f(this.options.sanitize,this.options.baseUrl,e)))return n;var r='<a href="'+s(e)+'"';return t&&(r+=' title="'+t+'"'),r+=">"+n+"</a>"},n.image=function(e,t,n){if(null===(e=f(this.options.sanitize,this.options.baseUrl,e)))return n;var r='<img src="'+e+'" alt="'+n+'"';return t&&(r+=' title="'+t+'"'),r+=this.options.xhtml?"/>":">"},n.text=function(e){return e},t}(),q=function(){function e(){}var t=e.prototype;return t.strong=function(e){return e},t.em=function(e){return e},t.codespan=function(e){return e},t.del=function(e){return e},t.html=function(e){return e},t.text=function(e){return e},t.link=function(e,t,n){return""+n},t.image=function(e,t,n){return""+n},t.br=function(){return""},e}(),W=function(){function e(){this.seen={}}var t=e.prototype;return t.serialize=function(e){return e.toLowerCase().trim().replace(/<[!\/a-z].*?>/gi,"").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-")},t.getNextSafeSlug=function(e,t){var n=e,r=0;if(this.seen.hasOwnProperty(n)){r=this.seen[e];do{r++,n=e+"-"+r}while(this.seen.hasOwnProperty(n))}return t||(this.seen[e]=r,this.seen[n]=0),n},t.slug=function(e,t){void 0===t&&(t={});var n=this.serialize(e);return this.getNextSafeSlug(n,t.dryrun)},e}(),V=function(){function t(t){this.options=t||e.defaults,this.options.renderer=this.options.renderer||new Q,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new q,this.slugger=new W}t.parse=function(e,n){return new t(n).parse(e)},t.parseInline=function(e,n){return new t(n).parseInline(e)};var n=t.prototype;return n.parse=function(e,t){void 0===t&&(t=!0);var n,r,i,o,a,u,s,c,f,p,d,h,v,g,m,y,b,D,x,w="",A=e.length;for(n=0;n<A;n++)if(p=e[n],!(this.options.extensions&&this.options.extensions.renderers&&this.options.extensions.renderers[p.type])||!1===(x=this.options.extensions.renderers[p.type].call({parser:this},p))&&["space","hr","heading","code","table","blockquote","list","html","paragraph","text"].includes(p.type))switch(p.type){case"space":continue;case"hr":w+=this.renderer.hr();continue;case"heading":w+=this.renderer.heading(this.parseInline(p.tokens),p.depth,l(this.parseInline(p.tokens,this.textRenderer)),this.slugger);continue;case"code":w+=this.renderer.code(p.text,p.lang,p.escaped);continue;case"table":for(c="",s="",o=p.header.length,r=0;r<o;r++)s+=this.renderer.tablecell(this.parseInline(p.header[r].tokens),{header:!0,align:p.align[r]});for(c+=this.renderer.tablerow(s),f="",o=p.rows.length,r=0;r<o;r++){for(u=p.rows[r],s="",a=u.length,i=0;i<a;i++)s+=this.renderer.tablecell(this.parseInline(u[i].tokens),{header:!1,align:p.align[i]});f+=this.renderer.tablerow(s)}w+=this.renderer.table(c,f);continue;case"blockquote":f=this.parse(p.tokens),w+=this.renderer.blockquote(f);continue;case"list":for(d=p.ordered,h=p.start,v=p.loose,o=p.items.length,f="",r=0;r<o;r++)m=p.items[r],y=m.checked,b=m.task,g="",m.task&&(D=this.renderer.checkbox(y),v?m.tokens.length>0&&"paragraph"===m.tokens[0].type?(m.tokens[0].text=D+" "+m.tokens[0].text,m.tokens[0].tokens&&m.tokens[0].tokens.length>0&&"text"===m.tokens[0].tokens[0].type&&(m.tokens[0].tokens[0].text=D+" "+m.tokens[0].tokens[0].text)):m.tokens.unshift({type:"text",text:D}):g+=D),g+=this.parse(m.tokens,v),f+=this.renderer.listitem(g,b,y);w+=this.renderer.list(f,d,h);continue;case"html":w+=this.renderer.html(p.text);continue;case"paragraph":w+=this.renderer.paragraph(this.parseInline(p.tokens));continue;case"text":for(f=p.tokens?this.parseInline(p.tokens):p.text;n+1<A&&"text"===e[n+1].type;)p=e[++n],f+="\n"+(p.tokens?this.parseInline(p.tokens):p.text);w+=t?this.renderer.paragraph(f):f;continue;default:var k='Token with "'+p.type+'" type was not found.';if(this.options.silent)return;throw new Error(k)}else w+=x||"";return w},n.parseInline=function(e,t){t=t||this.renderer;var n,r,i,o="",a=e.length;for(n=0;n<a;n++)if(r=e[n],!(this.options.extensions&&this.options.extensions.renderers&&this.options.extensions.renderers[r.type])||!1===(i=this.options.extensions.renderers[r.type].call({parser:this},r))&&["escape","html","link","image","strong","em","codespan","br","del","text"].includes(r.type))switch(r.type){case"escape":o+=t.text(r.text);break;case"html":o+=t.html(r.text);break;case"link":o+=t.link(r.href,r.title,this.parseInline(r.tokens,t));break;case"image":o+=t.image(r.href,r.title,r.text);break;case"strong":o+=t.strong(this.parseInline(r.tokens,t));break;case"em":o+=t.em(this.parseInline(r.tokens,t));break;case"codespan":o+=t.codespan(r.text);break;case"br":o+=t.br();break;case"del":o+=t.del(this.parseInline(r.tokens,t));break;case"text":o+=t.text(r.text);break;default:var u='Token with "'+r.type+'" type was not found.';if(this.options.silent)return;throw new Error(u)}else o+=i||"";return o},t}();A.options=A.setOptions=function(e){return d(A.defaults,e),u(A.defaults),A},A.getDefaults=a,A.defaults=e.defaults,A.use=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var r,i=d.apply(void 0,[{}].concat(t)),o=A.defaults.extensions||{renderers:{},childTokens:{}};t.forEach(function(e){if(e.extensions&&(r=!0,e.extensions.forEach(function(e){if(!e.name)throw new Error("extension name required");if(e.renderer){var t=o.renderers?o.renderers[e.name]:null;o.renderers[e.name]=t?function(){for(var n=arguments.length,r=new Array(n),i=0;i<n;i++)r[i]=arguments[i];var o=e.renderer.apply(this,r);return!1===o&&(o=t.apply(this,r)),o}:e.renderer}if(e.tokenizer){if(!e.level||"block"!==e.level&&"inline"!==e.level)throw new Error("extension level must be 'block' or 'inline'");o[e.level]?o[e.level].unshift(e.tokenizer):o[e.level]=[e.tokenizer],e.start&&("block"===e.level?o.startBlock?o.startBlock.push(e.start):o.startBlock=[e.start]:"inline"===e.level&&(o.startInline?o.startInline.push(e.start):o.startInline=[e.start]))}e.childTokens&&(o.childTokens[e.name]=e.childTokens)})),e.renderer&&function(){var t=A.defaults.renderer||new Q;for(var n in e.renderer)!function(n){var r=t[n];t[n]=function(){for(var i=arguments.length,o=new Array(i),a=0;a<i;a++)o[a]=arguments[a];var u=e.renderer[n].apply(t,o);return!1===u&&(u=r.apply(t,o)),u}}(n);i.renderer=t}(),e.tokenizer&&function(){var t=A.defaults.tokenizer||new M;for(var n in e.tokenizer)!function(n){var r=t[n];t[n]=function(){for(var i=arguments.length,o=new Array(i),a=0;a<i;a++)o[a]=arguments[a];var u=e.tokenizer[n].apply(t,o);return!1===u&&(u=r.apply(t,o)),u}}(n);i.tokenizer=t}(),e.walkTokens){var t=A.defaults.walkTokens;i.walkTokens=function(n){e.walkTokens.call(this,n),t&&t.call(this,n)}}r&&(i.extensions=o),A.setOptions(i)})},A.walkTokens=function(e,t){for(var n,r=o(e);!(n=r()).done;)!function(){var e=n.value;switch(t.call(A,e),e.type){case"table":for(var r,i=o(e.header);!(r=i()).done;){var a=r.value;A.walkTokens(a.tokens,t)}for(var u,s=o(e.rows);!(u=s()).done;)for(var l,c=u.value,f=o(c);!(l=f()).done;){var p=l.value;A.walkTokens(p.tokens,t)}break;case"list":A.walkTokens(e.items,t);break;default:A.defaults.extensions&&A.defaults.extensions.childTokens&&A.defaults.extensions.childTokens[e.type]?A.defaults.extensions.childTokens[e.type].forEach(function(n){A.walkTokens(e[n],t)}):e.tokens&&A.walkTokens(e.tokens,t)}}()},A.parseInline=function(e,t){if(void 0===e||null===e)throw new Error("marked.parseInline(): input parameter is undefined or null");if("string"!=typeof e)throw new Error("marked.parseInline(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected");t=d({},A.defaults,t||{}),m(t);try{var n=U.lexInline(e,t);return t.walkTokens&&A.walkTokens(n,t.walkTokens),V.parseInline(n,t)}catch(e){if(e.message+="\nPlease report this to https://github.com/markedjs/marked.",t.silent)return"<p>An error occurred:</p><pre>"+s(e.message+"",!0)+"</pre>";throw e}},A.Parser=V,A.parser=V.parse,A.Renderer=Q,A.TextRenderer=q,A.Lexer=U,A.lexer=U.lex,A.Tokenizer=M,A.Slugger=W,A.parse=A;var H=A.options,K=A.setOptions,G=A.use,Z=A.walkTokens,J=A.parseInline,X=A,Y=V.parse,ee=U.lex;e.Lexer=U,e.Parser=V,e.Renderer=Q,e.Slugger=W,e.TextRenderer=q,e.Tokenizer=M,e.getDefaults=a,e.lexer=ee,e.marked=A,e.options=H,e.parse=X,e.parseInline=J,e.parser=Y,e.setOptions=K,e.use=G,e.walkTokens=Z,Object.defineProperty(e,"__esModule",{value:!0})})},function(e,t,n){"use strict";function r(e){var t={};return c(f(e),function(e){var n=e[0],r=e[1];c(r,function(e){t[e]=n})}),t}function i(e,t){var n=r(e.pluralTypeToLanguages);return n[t]||n[m.call(t,/-/,1)[0]]||n.en}function o(e,t,n){return e.pluralTypes[t](n)}function a(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function u(e){var t=e&&e.prefix||"%{",n=e&&e.suffix||"}";if(t===y||n===y)throw new RangeError('"'+y+'" token is reserved for pluralization');return new RegExp(a(t)+"(.*?)"+a(n),"g")}function s(e,t,n,r,i){if("string"!=typeof e)throw new TypeError("Polyglot.transformPhrase expects argument #1 to be string");if(null==t)return e;var a=e,u=r||w,s="number"==typeof t?{smart_count:t}:t;if(null!=s.smart_count&&e){var l=i||D,c=m.call(e,y),f=n||"en",p=x(l,f),v=o(l,p,s.smart_count);a=h(c[v]||c[0])}return a=g.call(a,u,function(e,t){return d(s,t)&&null!=s[t]?s[t]:e})}function l(e){var t=e||{};this.phrases={},this.extend(t.phrases||{}),this.currentLocale=t.locale||"en";var n=t.allowMissing?s:null;this.onMissingKey="function"==typeof t.onMissingKey?t.onMissingKey:n,this.warn=t.warn||v,this.tokenRegex=u(t.interpolation),this.pluralRules=t.pluralRules||D}var c=n(48),f=n(100),p=n(105),d=n(25),h=n(103),v=function(e){p(!1,e)},g=String.prototype.replace,m=String.prototype.split,y="||||",b=function(e){var t=e%100,n=t%10;return 11!==t&&1===n?0:2<=n&&n<=4&&!(t>=12&&t<=14)?1:2},D={pluralTypes:{arabic:function(e){if(e<3)return e;var t=e%100;return t>=3&&t<=10?3:t>=11?4:5},bosnian_serbian:b,chinese:function(){return 0},croatian:b,french:function(e){return e>=2?1:0},german:function(e){return 1!==e?1:0},russian:b,lithuanian:function(e){return e%10==1&&e%100!=11?0:e%10>=2&&e%10<=9&&(e%100<11||e%100>19)?1:2},czech:function(e){return 1===e?0:e>=2&&e<=4?1:2},polish:function(e){if(1===e)return 0;var t=e%10;return 2<=t&&t<=4&&(e%100<10||e%100>=20)?1:2},icelandic:function(e){return e%10!=1||e%100==11?1:0},slovenian:function(e){var t=e%100;return 1===t?0:2===t?1:3===t||4===t?2:3}},pluralTypeToLanguages:{arabic:["ar"],bosnian_serbian:["bs-Latn-BA","bs-Cyrl-BA","srl-RS","sr-RS"],chinese:["id","id-ID","ja","ko","ko-KR","lo","ms","th","th-TH","zh"],croatian:["hr","hr-HR"],german:["fa","da","de","en","es","fi","el","he","hi-IN","hu","hu-HU","it","nl","no","pt","sv","tr"],french:["fr","tl","pt-br"],russian:["ru","ru-RU"],lithuanian:["lt"],czech:["cs","cs-CZ","sk"],polish:["pl"],icelandic:["is"],slovenian:["sl-SL"]}},x=function(){var e={};return function(t,n){var r=e[n];return r&&!t.pluralTypes[r]&&(r=null,e[n]=r),r||(r=i(t,n))&&(e[n]=r),r}}(),w=/%\{(.*?)\}/g;l.prototype.locale=function(e){return e&&(this.currentLocale=e),this.currentLocale},l.prototype.extend=function(e,t){c(f(e||{}),function(e){var n=e[0],r=e[1],i=t?t+"."+n:n;"object"==typeof r?this.extend(r,i):this.phrases[i]=r},this)},l.prototype.unset=function(e,t){"string"==typeof e?delete this.phrases[e]:c(f(e||{}),function(e){var n=e[0],r=e[1],i=t?t+"."+n:n;"object"==typeof r?this.unset(r,i):delete this.phrases[i]},this)},l.prototype.clear=function(){this.phrases={}},l.prototype.replace=function(e){this.clear(),this.extend(e)},l.prototype.t=function(e,t){var n,r,i=null==t?{}:t;if("string"==typeof this.phrases[e])n=this.phrases[e];else if("string"==typeof i._)n=i._;else if(this.onMissingKey){var o=this.onMissingKey;r=o(e,i,this.currentLocale,this.tokenRegex,this.pluralRules)}else this.warn('Missing translation for key: "'+e+'"'),r=e;return"string"==typeof n&&(r=s(n,i,this.currentLocale,this.tokenRegex,this.pluralRules)),r},l.prototype.has=function(e){return d(this.phrases,e)},l.transformPhrase=function(e,t,n){return s(e,t,n)},e.exports=l},function(e,t,n){"use strict";function r(e){if(null===e||void 0===e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}/*
object-assign
(c) Sindre Sorhus
@license MIT
*/
-var o=Object.getOwnPropertySymbols,i=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return t[e]}).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach(function(e){r[e]=e}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var n,s,l=r(e),c=1;c<arguments.length;c++){n=Object(arguments[c]);for(var u in n)i.call(n,u)&&(l[u]=n[u]);if(o){s=o(n);for(var d=0;d<s.length;d++)a.call(n,s[d])&&(l[s[d]]=n[s[d]])}}return l}},function(e,t,n){"use strict";var r;if(!Object.keys){var o=Object.prototype.hasOwnProperty,i=Object.prototype.toString,a=n(10),s=Object.prototype.propertyIsEnumerable,l=!s.call({toString:null},"toString"),c=s.call(function(){},"prototype"),u=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],d=function(e){var t=e.constructor;return t&&t.prototype===e},p={$applicationCache:!0,$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},f=function(){if("undefined"==typeof window)return!1;for(var e in window)try{if(!p["$"+e]&&o.call(window,e)&&null!==window[e]&&"object"==typeof window[e])try{d(window[e])}catch(e){return!0}}catch(e){return!0}return!1}(),h=function(e){if("undefined"==typeof window||!f)return d(e);try{return d(e)}catch(e){return!1}};r=function(e){var t=null!==e&&"object"==typeof e,n="[object Function]"===i.call(e),r=a(e),s=t&&"[object String]"===i.call(e),d=[];if(!t&&!n&&!r)throw new TypeError("Object.keys called on a non-object");var p=c&&n;if(s&&e.length>0&&!o.call(e,0))for(var f=0;f<e.length;++f)d.push(String(f));if(r&&e.length>0)for(var v=0;v<e.length;++v)d.push(String(v));else for(var g in e)p&&"prototype"===g||!o.call(e,g)||d.push(String(g));if(l)for(var m=h(e),y=0;y<u.length;++y)m&&"constructor"===u[y]||!o.call(e,u[y])||d.push(u[y]);return d}}e.exports=r},function(e,t,n){"use strict";var r=Array.prototype.slice,o=n(10),i=Object.keys,a=i?function(e){return i(e)}:n(39),s=Object.keys;a.shim=function(){if(Object.keys){(function(){var e=Object.keys(arguments);return e&&e.length===arguments.length})(1,2)||(Object.keys=function(e){return s(o(e)?r.call(e):e)})}else Object.keys=a;return Object.keys||a},e.exports=a},function(e,t){function n(){throw new Error("setTimeout has not been defined")}function r(){throw new Error("clearTimeout has not been defined")}function o(e){if(u===setTimeout)return setTimeout(e,0);if((u===n||!u)&&setTimeout)return u=setTimeout,setTimeout(e,0);try{return u(e,0)}catch(t){try{return u.call(null,e,0)}catch(t){return u.call(this,e,0)}}}function i(e){if(d===clearTimeout)return clearTimeout(e);if((d===r||!d)&&clearTimeout)return d=clearTimeout,clearTimeout(e);try{return d(e)}catch(t){try{return d.call(null,e)}catch(t){return d.call(this,e)}}}function a(){v&&f&&(v=!1,f.length?h=f.concat(h):g=-1,h.length&&s())}function s(){if(!v){var e=o(a);v=!0;for(var t=h.length;t;){for(f=h,h=[];++g<t;)f&&f[g].run();g=-1,t=h.length}f=null,v=!1,i(e)}}function l(e,t){this.fun=e,this.array=t}function c(){}var u,d,p=e.exports={};!function(){try{u="function"==typeof setTimeout?setTimeout:n}catch(e){u=n}try{d="function"==typeof clearTimeout?clearTimeout:r}catch(e){d=r}}();var f,h=[],v=!1,g=-1;p.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];h.push(new l(e,t)),1!==h.length||v||o(s)},l.prototype.run=function(){this.fun.apply(null,this.array)},p.title="browser",p.browser=!0,p.env={},p.argv=[],p.version="",p.versions={},p.on=c,p.addListener=c,p.once=c,p.off=c,p.removeListener=c,p.removeAllListeners=c,p.emit=c,p.prependListener=c,p.prependOnceListener=c,p.listeners=function(e){return[]},p.binding=function(e){throw new Error("process.binding is not supported")},p.cwd=function(){return"/"},p.chdir=function(e){throw new Error("process.chdir is not supported")},p.umask=function(){return 0}},function(e,t,n){"use strict";function r(e){return e=JSON.stringify(e),!!/^\{[\s\S]*\}$/.test(e)}function o(e){return void 0===e||"function"==typeof e?e+"":JSON.stringify(e)}function i(e){if("string"==typeof e)try{return JSON.parse(e)}catch(t){return e}}function a(e){return"[object Function]"==={}.toString.call(e)}function s(e){return"[object Array]"===Object.prototype.toString.call(e)}function l(){if(!(this instanceof l))return new l}function c(e,t){var n=arguments,o=null;if(d||(d=l()),0===n.length)return d.get();if(1===n.length){if("string"==typeof e)return d.get(e);if(r(e))return d.set(e)}if(2===n.length&&"string"==typeof e){if(!t)return d.remove(e);if(t&&"string"==typeof t)return d.set(e,t);t&&a(t)&&(o=null,o=t(e,d.get(e)),c.set(e,o))}if(2===n.length&&s(e)&&a(t))for(var i=0,u=e.length;i<u;i++)o=t(e[i],d.get(e[i])),c.set(e[i],o);return c}Object.defineProperty(t,"__esModule",{value:!0});/*!
- * storejs v1.0.24
- * Local storage localstorage package provides a simple API
- *
- * Copyright (c) 2018 kenny wang <wowohoo@qq.com>
- * https://github.com/jaywcjlove/store.js
- *
- * Licensed under the MIT license.
- */
-var u=window.localStorage;u=function(e){var t="_Is_Incognit";try{e.setItem(t,"yes")}catch(t){if("QuotaExceededError"===t.name){var n=function(){};e.__proto__={setItem:n,getItem:n,removeItem:n,clear:n}}}finally{"yes"===e.getItem(t)&&e.removeItem(t)}return e}(u),l.prototype={set:function(e,t){if(e&&!r(e))u.setItem(e,o(t));else if(r(e))for(var n in e)this.set(n,e[n]);return this},get:function(e){if(!e){var t={};return this.forEach(function(e,n){return t[e]=n}),t}if("?"===e.charAt(0))return this.has(e.substr(1));var n=arguments;if(n.length>1){for(var r={},o=0,a=n.length;o<a;o++){var s=i(u.getItem(n[o]));s&&(r[n[o]]=s)}return r}return i(u.getItem(e))},clear:function(){return u.clear(),this},remove:function(e){var t=this.get(e);return u.removeItem(e),t},has:function(e){return{}.hasOwnProperty.call(this.get(),e)},keys:function(){var e=[];return this.forEach(function(t){e.push(t)}),e},forEach:function(e){for(var t=0,n=u.length;t<n;t++){var r=u.key(t);e(r,this.get(r))}return this},search:function(e){for(var t=this.keys(),n={},r=0,o=t.length;r<o;r++)t[r].indexOf(e)>-1&&(n[t[r]]=this.get(t[r]));return n}};var d=null;for(var p in l.prototype)c[p]=l.prototype[p];t.default=c},function(e,t,n){"use strict";var r=n(12),o=n(9),i=n(11),a=n(13),s=n(49),l=r(a());o(l,{getPolyfill:a,implementation:i,shim:s}),e.exports=l},function(e,t,n){"use strict";var r=n(1),o=r("%String%"),i=r("%TypeError%");e.exports=function(e){if("symbol"==typeof e)throw new i("Cannot convert a Symbol value to a string");return o(e)}},function(e,t,n){"use strict";var r=n(1),o=r("%TypeError%");e.exports=function(e,t){if(null==e)throw new o(t||"Cannot call method on "+e);return e}},function(e,t,n){"use strict";var r=n(1),o=n(12),i=o(r("String.prototype.indexOf"));e.exports=function(e,t){var n=r(e,!!t);return"function"==typeof n&&i(e,".prototype.")?o(n):n}},function(e,t,n){"use strict";(function(t){var r=t.Symbol,o=n(48);e.exports=function(){return"function"==typeof r&&("function"==typeof Symbol&&("symbol"==typeof r("foo")&&("symbol"==typeof Symbol("bar")&&o())))}}).call(t,n(14))},function(e,t,n){"use strict";e.exports=function(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"==typeof Symbol.iterator)return!0;var e={},t=Symbol("test"),n=Object(t);if("string"==typeof t)return!1;if("[object Symbol]"!==Object.prototype.toString.call(t))return!1;if("[object Symbol]"!==Object.prototype.toString.call(n))return!1;e[t]=42;for(t in e)return!1;if("function"==typeof Object.keys&&0!==Object.keys(e).length)return!1;if("function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(e).length)return!1;var r=Object.getOwnPropertySymbols(e);if(1!==r.length||r[0]!==t)return!1;if(!Object.prototype.propertyIsEnumerable.call(e,t))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var o=Object.getOwnPropertyDescriptor(e,t);if(42!==o.value||!0!==o.enumerable)return!1}return!0}},function(e,t,n){"use strict";var r=n(9),o=n(13);e.exports=function(){var e=o();return r(String.prototype,{trim:e},{trim:function(){return String.prototype.trim!==e}}),e}},function(e,t,n){"use strict";(function(t){var n="production"!==t.env.NODE_ENV,r=function(){};if(n){var o=function(e,t){var n=arguments.length;t=new Array(n>1?n-1:0);for(var r=1;r<n;r++)t[r-1]=arguments[r];var o=0,i="Warning: "+e.replace(/%s/g,function(){return t[o++]});try{throw new Error(i)}catch(e){}};r=function(e,t,n){var r=arguments.length;n=new Array(r>2?r-2:0);for(var i=2;i<r;i++)n[i-2]=arguments[i];if(void 0===t)throw new Error("`warning(condition, format, ...args)` requires a warning message argument");e||o.apply(null,[t].concat(n))}}e.exports=r}).call(t,n(41))},function(e,t,n){function r(e,t){return new a(t).process(e)}var o=n(15),i=n(16),a=n(52);t=e.exports=r,t.filterXSS=r,t.FilterXSS=a;for(var s in o)t[s]=o[s];for(var s in i)t[s]=i[s];"undefined"!=typeof window&&(window.filterXSS=e.exports),function(){return"undefined"!=typeof self&&"undefined"!=typeof DedicatedWorkerGlobalScope&&self instanceof DedicatedWorkerGlobalScope}()&&(self.filterXSS=e.exports)},function(e,t,n){function r(e){return void 0===e||null===e}function o(e){var t=p.spaceIndex(e);if(-1===t)return{html:"",closing:"/"===e[e.length-2]};e=p.trim(e.slice(t+1,-1));var n="/"===e[e.length-1];return n&&(e=p.trim(e.slice(0,-1))),{html:e,closing:n}}function i(e){var t={};for(var n in e)t[n]=e[n];return t}function a(e){e=i(e||{}),e.stripIgnoreTag&&(e.onIgnoreTag,e.onIgnoreTag=l.onIgnoreTagStripAll),e.whiteList=e.whiteList||l.whiteList,e.onTag=e.onTag||l.onTag,e.onTagAttr=e.onTagAttr||l.onTagAttr,e.onIgnoreTag=e.onIgnoreTag||l.onIgnoreTag,e.onIgnoreTagAttr=e.onIgnoreTagAttr||l.onIgnoreTagAttr,e.safeAttrValue=e.safeAttrValue||l.safeAttrValue,e.escapeHtml=e.escapeHtml||l.escapeHtml,this.options=e,!1===e.css?this.cssFilter=!1:(e.css=e.css||{},this.cssFilter=new s(e.css))}var s=n(3).FilterCSS,l=n(15),c=n(16),u=c.parseTag,d=c.parseAttr,p=n(5);a.prototype.process=function(e){if(e=e||"",!(e=e.toString()))return"";var t=this,n=t.options,i=n.whiteList,a=n.onTag,s=n.onIgnoreTag,c=n.onTagAttr,f=n.onIgnoreTagAttr,h=n.safeAttrValue,v=n.escapeHtml,g=t.cssFilter;n.stripBlankChar&&(e=l.stripBlankChar(e)),n.allowCommentTag||(e=l.stripCommentTag(e));var m=!1;if(n.stripIgnoreTagBody){var m=l.StripTagBody(n.stripIgnoreTagBody,s);s=m.onIgnoreTag}var y=u(e,function(e,t,n,l,u){var m={sourcePosition:e,position:t,isClosing:u,isWhite:i.hasOwnProperty(n)},y=a(n,l,m);if(!r(y))return y;if(m.isWhite){if(m.isClosing)return"</"+n+">";var b=o(l),w=i[n],x=d(b.html,function(e,t){var o=-1!==p.indexOf(w,e),i=c(n,e,t,o);if(!r(i))return i;if(o)return t=h(n,e,t,g),t?e+'="'+t+'"':e;var i=f(n,e,t,o);return r(i)?void 0:i}),l="<"+n;return x&&(l+=" "+x),b.closing&&(l+=" /"),l+=">"}var y=s(n,l,m);return r(y)?v(l):y},v);return m&&(y=m.remove(y)),y},e.exports=a},function(e,t){e.exports={smile:"e3/2018new_weixioa02_org.png",lovely:"09/2018new_keai_org.png",happy:"1e/2018new_taikaixin_org.png",clap:"6e/2018new_guzhang_thumb.png",whee:"33/2018new_xixi_thumb.png",haha:"8f/2018new_haha_thumb.png","laugh and cry":"4a/2018new_xiaoku_thumb.png",wink:"43/2018new_jiyan_org.png",greddy:"fa/2018new_chanzui_org.png",awkward:"a3/2018new_heixian_thumb.png",sweat:"28/2018new_han_org.png","pick nose":"9a/2018new_wabi_thumb.png",hum:"7c/2018new_heng_thumb.png",angry:"f6/2018new_nu_thumb.png",grievance:"a5/2018new_weiqu_thumb.png",poor:"96/2018new_kelian_org.png",disappoint:"aa/2018new_shiwang_thumb.png",sad:"ee/2018new_beishang_org.png",tear:"6e/2018new_leimu_org.png","no way":"83/2018new_kuxiao_org.png",shy:"c1/2018new_haixiu_org.png",dirt:"10/2018new_wu_thumb.png","love you":"f6/2018new_aini_org.png",kiss:"2c/2018new_qinqin_thumb.png",amorousness:"9d/2018new_huaxin_org.png",longing:"c9/2018new_chongjing_org.png",desire:"3e/2018new_tianping_thumb.png","bad laugh":"4d/2018new_huaixiao_org.png",blackness:"9e/2018new_yinxian_org.png","laugh without word":"2d/2018new_xiaoerbuyu_org.png",titter:"71/2018new_touxiao_org.png",cool:"c4/2018new_ku_org.png","not easy":"aa/2018new_bingbujiandan_thumb.png",think:"30/2018new_sikao_org.png",question:"b8/2018new_ningwen_org.png","no idea":"2a/2018new_wenhao_thumb.png",dizzy:"07/2018new_yun_thumb.png",bomb:"a2/2018new_shuai_thumb.png",bone:"a1/2018new_kulou_thumb.png","be quiet":"b0/2018new_xu_org.png","shut up":"62/2018new_bizui_org.png",stupid:"dd/2018new_shayan_org.png","surprise ":"49/2018new_chijing_org.png",vomit:"08/2018new_tu_org.png",cold:"40/2018new_kouzhao_thumb.png",sick:"3b/2018new_shengbing_thumb.png",bye:"fd/2018new_baibai_thumb.png","look down on":"da/2018new_bishi_org.png","white eye":"ef/2018new_landelini_org.png","left hum":"43/2018new_zuohengheng_thumb.png","right hum":"c1/2018new_youhengheng_thumb.png",crazy:"17/2018new_zhuakuang_org.png","scold ":"87/2018new_zhouma_thumb.png","hit on face":"cb/2018new_dalian_org.png",wow:"ae/2018new_ding_org.png",fan:"86/2018new_hufen02_org.png",money:"a2/2018new_qian_thumb.png",yawn:"55/2018new_dahaqian_org.png",sleepy:"3c/2018new_kun_thumb.png",sleep:"e2/2018new_shuijiao_thumb.png","watermelon ":"01/2018new_chigua_thumb.png",doge:"a1/2018new_doge02_org.png",dog:"22/2018new_erha_org.png",cat:"7b/2018new_miaomiao_thumb.png",thumb:"e6/2018new_zan_org.png",good:"8a/2018new_good_org.png",ok:"45/2018new_ok_org.png",yeah:"29/2018new_ye_thumb.png","shack hand":"e9/2018new_woshou_thumb.png",bow:"e7/2018new_zuoyi_org.png",come:"42/2018new_guolai_thumb.png",punch:"86/2018new_quantou_thumb.png"}},function(e,t){e.exports={nick:"NickName",mail:"E-Mail",link:"Website(http://)",nickFail:"NickName cannot be less than 3 bytes.",mailFail:"Please confirm your email address.",sofa:"No comment yet.",submit:"Submit",reply:"Reply",cancelReply:"Cancel reply",comments:"Comments",cancel:"Cancel",confirm:"Confirm",continue:"Continue",more:"Load More...",preview:"Preview",emoji:"Emoji",expand:"See more....",seconds:"seconds ago",minutes:"minutes ago",hours:"hours ago",days:"days ago",now:"just now",uploading:"Uploading ...",uploadDone:"Upload completed!",busy:"Submit is busy, please wait...","code-98":"Valine initialization failed, please check your version of av-min.js.","code-99":"Valine initialization failed, Please check the `el` element in the init method.","code-100":"Valine initialization failed, Please check your appId and appKey.","code-140":"The total number of API calls today has exceeded the development version limit.","code-401":"Unauthorized operation, Please check your appId and appKey.","code-403":"Access denied by API domain white list, Please check your security domain."}},function(e,t){e.exports={nick:"ニックネーム",mail:"メールアドレス",link:"サイト(http://)",nickFail:"3バイト以上のニックネームをご入力ください.",mailFail:"メールアドレスをご確認ください.",sofa:"コメントしましょう~",submit:"提出する",reply:"返信する",cancelReply:"キャンセル",comments:"コメント",cancel:"キャンセル",confirm:"確認する",continue:"继续",more:"さらに読み込む...",preview:"プレビュー",emoji:"絵文字",expand:"もっと見る",seconds:"秒前",minutes:"分前",hours:"時間前",days:"日前",now:"たっだ今",uploading:"アップロード中...",uploadDone:"アップロードが完了しました!",busy:"20 秒間隔で提出してください ...","code-98":"ロードエラーです。av-min.js のバージョンを確認してください.","code-99":"ロードエラーです。initにある`el`エレメントを確認ください.","code-100":"ロードエラーです。AppIdとAppKeyを確認ください.","code-140":"今日のAPIコールの総数が開発バージョンの上限を超えた.","code-401":"権限が制限されています。AppIdとAppKeyを確認ください.","code-403":"アクセスがAPIなどに制限されました、ドメイン名のセキュリティ設定を確認ください"}},function(e,t){e.exports={nick:"昵称",mail:"邮箱",link:"网址(http://)",nickFail:"昵称不能少于3个字符",mailFail:"请填写正确的邮件地址",sofa:"来发评论吧~",submit:"提交",reply:"回复",cancelReply:"取消回复",comments:"评论",cancel:"取消",confirm:"确认",continue:"继续",more:"加载更多...",preview:"预览",emoji:"表情",expand:"查看更多...",seconds:"秒前",minutes:"分钟前",hours:"小时前",days:"天前",now:"刚刚",uploading:"正在传输...",uploadDone:"传输完成!",busy:"操作频繁,请稍候再试...","code-98":"Valine 初始化失败,请检查 av-min.js 版本","code-99":"Valine 初始化失败,请检查init中的`el`元素.","code-100":"Valine 初始化失败,请检查你的AppId和AppKey.","code-140":"今日 API 调用总次数已超过开发版限制.","code-401":"未经授权的操作,请检查你的AppId和AppKey.","code-403":"访问被API域名白名单拒绝,请检查你的安全域名设置."}},function(e,t){e.exports={nick:"暱稱",mail:"郵箱",link:"網址(http://)",nickFail:"昵稱不能少於3個字符",mailFail:"請填寫正確的郵件地址",sofa:"來發評論吧~",submit:"提交",reply:"回覆",cancelReply:"取消回覆",comments:"評論",cancel:"取消",confirm:"確認",continue:"繼續",more:"加載更多...",preview:"預覽",emoji:"表情",expand:"查看更多...",seconds:"秒前",minutes:"分鐘前",hours:"小時前",days:"天前",now:"剛剛",uploading:"正在上傳...",uploadDone:"上傳完成!",busy:"操作頻繁,請稍候再試...","code-98":"Valine 初始化失敗,請檢查 av-min.js 版本","code-99":"Valine 初始化失敗,請檢查init中的`el`元素.","code-100":"Valine 初始化失敗,請檢查你的AppId和AppKey.","code-140":"今日 API 調用總次數已超過開發版限制.","code-401":"未經授權的操作,請檢查你的AppId和AppKey.","code-403":"訪問被API域名白名單拒絕,請檢查你的安全域名設置."}},function(e,t,n){var r=n(59);"string"==typeof r&&(r=[[e.i,r,""]]);var o={};o.transform=void 0;n(61)(r,o);r.locals&&(e.exports=r.locals)},function(e,t,n){t=e.exports=n(60)(!1),t.push([e.i,'.v[data-class=v]{font-size:16px;text-align:left}.v[data-class=v] *{-webkit-box-sizing:border-box;box-sizing:border-box;line-height:1.75}.v[data-class=v] .status-bar,.v[data-class=v] .veditor,.v[data-class=v] .vinput,.v[data-class=v] p,.v[data-class=v] pre code{color:#555}.v[data-class=v] .vsys,.v[data-class=v] .vtime{color:#b3b3b3}.v[data-class=v] .text-right{text-align:right}.v[data-class=v] .text-center{text-align:center}.v[data-class=v] img{max-width:100%;border:none}.v[data-class=v] hr{margin:.825em 0;border-color:#f6f6f6;border-style:dashed}.v[data-class=v].hide-avatar .vimg{display:none}.v[data-class=v] a{position:relative;cursor:pointer;color:#1abc9c;text-decoration:none;display:inline-block}.v[data-class=v] a:hover{color:#d7191a}.v[data-class=v] code,.v[data-class=v] pre{background-color:#f8f8f8;padding:.2em .4em;border-radius:3px;font-size:85%;margin:0}.v[data-class=v] pre{padding:10px;overflow:auto;line-height:1.45}.v[data-class=v] pre code{padding:0;background:transparent;white-space:pre-wrap;word-break:keep-all}.v[data-class=v] blockquote{color:#666;margin:.5em 0;padding:0 0 0 1em;border-left:8px solid hsla(0,0%,93%,.5)}.v[data-class=v] .vinput{border:none;resize:none;outline:none;padding:10px 5px;max-width:100%;font-size:.775em}.v[data-class=v] input[type=checkbox],.v[data-class=v] input[type=radio]{display:inline-block;vertical-align:middle;margin-top:-2px}.v[data-class=v] .vicon{cursor:pointer;display:inline-block;overflow:hidden;fill:#555;vertical-align:middle}.v[data-class=v] .vicon+.vicon{margin-left:10px}.v[data-class=v] .vicon.actived{fill:#66b1ff}.v[data-class=v] .vrow{font-size:0;padding:10px 0}.v[data-class=v] .vrow .vcol{display:inline-block;vertical-align:middle;font-size:14px}.v[data-class=v] .vrow .vcol.vcol-20{width:20%}.v[data-class=v] .vrow .vcol.vcol-30{width:30%}.v[data-class=v] .vrow .vcol.vcol-40{width:40%}.v[data-class=v] .vrow .vcol.vcol-50{width:50%}.v[data-class=v] .vrow .vcol.vcol-60{width:60%}.v[data-class=v] .vrow .vcol.vcol-70{width:70%}.v[data-class=v] .vrow .vcol.vcol-80{width:80%}.v[data-class=v] .vrow .vcol.vctrl{font-size:12px}.v[data-class=v] .emoji,.v[data-class=v] .vemoji{max-width:25px;vertical-align:middle;margin:0 1px;display:inline-block}.v[data-class=v] .vwrap{border:1px solid #f0f0f0;border-radius:4px;margin-bottom:10px;overflow:hidden;position:relative;padding:10px}.v[data-class=v] .vwrap input{background:transparent}.v[data-class=v] .vwrap .vedit{position:relative;padding-top:10px}.v[data-class=v] .vwrap .cancel-reply-btn{position:absolute;right:5px;top:5px;cursor:pointer}.v[data-class=v] .vwrap .vemojis{display:none;font-size:18px;max-height:145px;overflow:auto;padding-bottom:10px;-webkit-box-shadow:0 0 1px #f0f0f0;box-shadow:0 0 1px #f0f0f0}.v[data-class=v] .vwrap .vemojis i{font-style:normal;padding-top:7px;width:36px;cursor:pointer;text-align:center;display:inline-block;vertical-align:middle}.v[data-class=v] .vwrap .vpreview{padding:7px;-webkit-box-shadow:0 0 1px #f0f0f0;box-shadow:0 0 1px #f0f0f0}.v[data-class=v] .vwrap .vheader .vinput{width:33.33%;border-bottom:1px dashed #dedede}.v[data-class=v] .vwrap .vheader.item2 .vinput{width:50%}.v[data-class=v] .vwrap .vheader.item1 .vinput{width:100%}.v[data-class=v] .vwrap .vheader .vinput:focus{border-bottom-color:#eb5055}@media screen and (max-width:520px){.v[data-class=v] .vwrap .vheader.item2 .vinput,.v[data-class=v] .vwrap .vheader .vinput{width:100%}}.v[data-class=v] .vpower{color:#999;font-size:.75em;padding:.5em 0}.v[data-class=v] .vpower a{font-size:.75em}.v[data-class=v] .vcount{padding:5px;font-weight:600;font-size:1.25em}.v[data-class=v] ol,.v[data-class=v] ul{padding:0;margin-left:1.25em}.v[data-class=v] .txt-center{text-align:center}.v[data-class=v] .txt-right{text-align:right}.v[data-class=v] .pd5{padding:5px}.v[data-class=v] .pd10{padding:10px}.v[data-class=v] .veditor{width:100%;min-height:8.75em;font-size:.875em;background:transparent;resize:vertical;-webkit-transition:all .25s ease;transition:all .25s ease}.v[data-class=v] .vbtn{-webkit-transition-duration:.4s;transition-duration:.4s;text-align:center;color:#555;border:1px solid #ededed;border-radius:.3em;display:inline-block;background:transparent;margin-bottom:0;font-weight:400;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;white-space:nowrap;padding:.5em 1.25em;font-size:.875em;line-height:1.42857143;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;outline:none}.v[data-class=v] .vbtn+.vbtn{margin-left:1.25em}.v[data-class=v] .vbtn:active,.v[data-class=v] .vbtn:hover{color:#3090e4;border-color:#3090e4}.v[data-class=v] .vbtn:disabled{border-color:#e1e1e1;color:#e1e1e1;background-color:#fdfafa;cursor:not-allowed}.v[data-class=v] .vempty{padding:1.25em;text-align:center;color:#555;overflow:auto}.v[data-class=v] .vsys{display:inline-block;padding:.2em .5em;font-size:.75em;border-radius:.2em;margin-right:.3em}@media screen and (max-width:520px){.v[data-class=v] .vsys{display:none}}.v[data-class=v] .vcards{width:100%}.v[data-class=v] .vcards .vcard{padding-top:1.25em;position:relative;display:block}.v[data-class=v] .vcards .vcard:after{content:"";clear:both;display:block}.v[data-class=v] .vcards .vcard .vimg{width:3.125em;height:3.125em;float:left;border-radius:50%;margin-right:.7525em;border:1px solid #f5f5f5;padding:.125em}@media screen and (max-width:720px){.v[data-class=v] .vcards .vcard .vimg{width:2.5em;height:2.5em}}.v[data-class=v] .vcards .vcard .vhead{line-height:1.5;margin-top:0}.v[data-class=v] .vcards .vcard .vhead .vnick{position:relative;font-size:.875em;font-weight:500;margin-right:.875em;cursor:pointer;text-decoration:none;display:inline-block}.v[data-class=v] .vcards .vcard .vhead .vnick:hover{color:#d7191a}.v[data-class=v] .vcards .vcard .vh{overflow:hidden;padding-bottom:.5em;border-bottom:1px dashed #f5f5f5}.v[data-class=v] .vcards .vcard .vh .vtime{font-size:.75em;margin-right:.875em}.v[data-class=v] .vcards .vcard .vh .vmeta{line-height:1;position:relative}.v[data-class=v] .vcards .vcard .vh .vmeta .vat{font-size:.8125em;color:#ef2f11;cursor:pointer;float:right}.v[data-class=v] .vcards .vcard:last-child .vh{border-bottom:none}.v[data-class=v] .vcards .vcard .vcontent{word-wrap:break-word;word-break:break-all;font-size:.875em;line-height:2;position:relative;margin-bottom:.75em;padding-top:.625em}.v[data-class=v] .vcards .vcard .vcontent.expand{cursor:pointer;max-height:8em;overflow:hidden}.v[data-class=v] .vcards .vcard .vcontent.expand:before{display:block;content:"";position:absolute;width:100%;left:0;top:0;bottom:3.15em;background:-webkit-gradient(linear,left top,left bottom,from(hsla(0,0%,100%,0)),to(hsla(0,0%,100%,.9)));background:linear-gradient(180deg,hsla(0,0%,100%,0),hsla(0,0%,100%,.9));z-index:999}.v[data-class=v] .vcards .vcard .vcontent.expand:after{display:block;content:attr(data-expand);text-align:center;color:#828586;position:absolute;width:100%;height:3.15em;line-height:3.15em;left:0;bottom:0;z-index:999;background:hsla(0,0%,100%,.9)}.v[data-class=v] .vcards .vcard .vquote{padding-left:1em;border-left:1px dashed hsla(0,0%,93%,.5)}.v[data-class=v] .vcards .vcard .vquote .vimg{width:2.225em;height:2.225em}.v[data-class=v] .vpage .vmore{margin:1em 0}.v[data-class=v] .clear{content:"";display:block;clear:both}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@-webkit-keyframes pulse{50%{background:#dcdcdc}}@keyframes pulse{50%{background:#dcdcdc}}.v[data-class=v] .vspinner{width:22px;height:22px;display:inline-block;border:6px double #a0a0a0;border-top-color:transparent;border-bottom-color:transparent;border-radius:50%;-webkit-animation:spin 1s infinite linear;animation:spin 1s infinite linear;position:relative;vertical-align:middle;margin:0 5px}.dark .v[data-class=v] .status-bar,.dark .v[data-class=v] .veditor,.dark .v[data-class=v] .vinput,.dark .v[data-class=v] p,.dark .v[data-class=v] pre code,.night .v[data-class=v] .status-bar,.night .v[data-class=v] .veditor,.night .v[data-class=v] .vinput,.night .v[data-class=v] p,.night .v[data-class=v] pre code,.theme__dark .v[data-class=v] .status-bar,.theme__dark .v[data-class=v] .veditor,.theme__dark .v[data-class=v] .vinput,.theme__dark .v[data-class=v] p,.theme__dark .v[data-class=v] pre code,[data-theme=dark] .v[data-class=v] .status-bar,[data-theme=dark] .v[data-class=v] .veditor,[data-theme=dark] .v[data-class=v] .vinput,[data-theme=dark] .v[data-class=v] p,[data-theme=dark] .v[data-class=v] pre code{color:#b2b2b5}.dark .v[data-class=v] .vsys,.dark .v[data-class=v] .vtime,.night .v[data-class=v] .vsys,.night .v[data-class=v] .vtime,.theme__dark .v[data-class=v] .vsys,.theme__dark .v[data-class=v] .vtime,[data-theme=dark] .v[data-class=v] .vsys,[data-theme=dark] .v[data-class=v] .vtime{color:#929298}.dark .v[data-class=v] code,.dark .v[data-class=v] pre,.dark .v[data-class=v] pre code,.night .v[data-class=v] code,.night .v[data-class=v] pre,.night .v[data-class=v] pre code,.theme__dark .v[data-class=v] code,.theme__dark .v[data-class=v] pre,.theme__dark .v[data-class=v] pre code,[data-theme=dark] .v[data-class=v] code,[data-theme=dark] .v[data-class=v] pre,[data-theme=dark] .v[data-class=v] pre code{color:#929298;background-color:#151414}.dark .v[data-class=v] .vwrap,.night .v[data-class=v] .vwrap,.theme__dark .v[data-class=v] .vwrap,[data-theme=dark] .v[data-class=v] .vwrap{border-color:#b2b2b5}.dark .v[data-class=v] .vicon,.night .v[data-class=v] .vicon,.theme__dark .v[data-class=v] .vicon,[data-theme=dark] .v[data-class=v] .vicon{fill:#b2b2b5}.dark .v[data-class=v] .vicon.actived,.night .v[data-class=v] .vicon.actived,.theme__dark .v[data-class=v] .vicon.actived,[data-theme=dark] .v[data-class=v] .vicon.actived{fill:#66b1ff}.dark .v[data-class=v] .vbtn,.night .v[data-class=v] .vbtn,.theme__dark .v[data-class=v] .vbtn,[data-theme=dark] .v[data-class=v] .vbtn{color:#b2b2b5;border-color:#b2b2b5}.dark .v[data-class=v] .vbtn:hover,.night .v[data-class=v] .vbtn:hover,.theme__dark .v[data-class=v] .vbtn:hover,[data-theme=dark] .v[data-class=v] .vbtn:hover{color:#66b1ff;border-color:#66b1ff}.dark .v[data-class=v] a:hover,.night .v[data-class=v] a:hover,.theme__dark .v[data-class=v] a:hover,[data-theme=dark] .v[data-class=v] a:hover{color:#d7191a}.dark .v[data-class=v] .vcards .vcard .vcontent.expand:before,.night .v[data-class=v] .vcards .vcard .vcontent.expand:before,.theme__dark .v[data-class=v] .vcards .vcard .vcontent.expand:before,[data-theme=dark] .v[data-class=v] .vcards .vcard .vcontent.expand:before{background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.3)),to(rgba(0,0,0,.7)));background:linear-gradient(180deg,rgba(0,0,0,.3),rgba(0,0,0,.7))}.dark .v[data-class=v] .vcards .vcard .vcontent.expand:after,.night .v[data-class=v] .vcards .vcard .vcontent.expand:after,.theme__dark .v[data-class=v] .vcards .vcard .vcontent.expand:after,[data-theme=dark] .v[data-class=v] .vcards .vcard .vcontent.expand:after{background:rgba(0,0,0,.7)}@media (prefers-color-scheme:dark){.v[data-class=v] .status-bar,.v[data-class=v] .veditor,.v[data-class=v] .vinput,.v[data-class=v] p,.v[data-class=v] pre code{color:#b2b2b5}.v[data-class=v] .vsys,.v[data-class=v] .vtime{color:#929298}.v[data-class=v] code,.v[data-class=v] pre,.v[data-class=v] pre code{color:#929298;background-color:#151414}.v[data-class=v] .vwrap{border-color:#b2b2b5}.v[data-class=v] .vicon{fill:#b2b2b5}.v[data-class=v] .vicon.actived{fill:#66b1ff}.v[data-class=v] .vbtn{color:#b2b2b5;border-color:#b2b2b5}.v[data-class=v] .vbtn:hover{color:#66b1ff;border-color:#66b1ff}.v[data-class=v] a:hover{color:#d7191a}.v[data-class=v] .vcards .vcard .vcontent.expand:before{background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.3)),to(rgba(0,0,0,.7)));background:linear-gradient(180deg,rgba(0,0,0,.3),rgba(0,0,0,.7))}.v[data-class=v] .vcards .vcard .vcontent.expand:after{background:rgba(0,0,0,.7)}}',""])},function(e,t){function n(e,t){var n=e[1]||"",o=e[3];if(!o)return n;if(t&&"function"==typeof btoa){var i=r(o);return[n].concat(o.sources.map(function(e){return"/*# sourceURL="+o.sourceRoot+e+" */"})).concat([i]).join("\n")}return[n].join("\n")}function r(e){return"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(e))))+" */"}e.exports=function(e){var t=[];return t.toString=function(){return this.map(function(t){var r=n(t,e);return t[2]?"@media "+t[2]+"{"+r+"}":r}).join("")},t.i=function(e,n){"string"==typeof e&&(e=[[null,e,""]]);for(var r={},o=0;o<this.length;o++){var i=this[o][0];"number"==typeof i&&(r[i]=!0)}for(o=0;o<e.length;o++){var a=e[o];"number"==typeof a[0]&&r[a[0]]||(n&&!a[2]?a[2]=n:n&&(a[2]="("+a[2]+") and ("+n+")"),t.push(a))}},t}},function(e,t,n){function r(e,t){for(var n=0;n<e.length;n++){var r=e[n],o=h[r.id];if(o){o.refs++;for(var i=0;i<o.parts.length;i++)o.parts[i](r.parts[i]);for(;i<r.parts.length;i++)o.parts.push(u(r.parts[i],t))}else{for(var a=[],i=0;i<r.parts.length;i++)a.push(u(r.parts[i],t));h[r.id]={id:r.id,refs:1,parts:a}}}}function o(e,t){for(var n=[],r={},o=0;o<e.length;o++){var i=e[o],a=t.base?i[0]+t.base:i[0],s=i[1],l=i[2],c=i[3],u={css:s,media:l,sourceMap:c};r[a]?r[a].parts.push(u):n.push(r[a]={id:a,parts:[u]})}return n}function i(e,t){var n=g(e.insertInto);if(!n)throw new Error("Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid.");var r=b[b.length-1];if("top"===e.insertAt)r?r.nextSibling?n.insertBefore(t,r.nextSibling):n.appendChild(t):n.insertBefore(t,n.firstChild),b.push(t);else{if("bottom"!==e.insertAt)throw new Error("Invalid value for parameter 'insertAt'. Must be 'top' or 'bottom'.");n.appendChild(t)}}function a(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e);var t=b.indexOf(e);t>=0&&b.splice(t,1)}function s(e){var t=document.createElement("style");return e.attrs.type="text/css",c(t,e.attrs),i(e,t),t}function l(e){var t=document.createElement("link");return e.attrs.type="text/css",e.attrs.rel="stylesheet",c(t,e.attrs),i(e,t),t}function c(e,t){Object.keys(t).forEach(function(n){e.setAttribute(n,t[n])})}function u(e,t){var n,r,o,i;if(t.transform&&e.css){if(!(i=t.transform(e.css)))return function(){};e.css=i}if(t.singleton){var c=y++;n=m||(m=s(t)),r=d.bind(null,n,c,!1),o=d.bind(null,n,c,!0)}else e.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(n=l(t),r=f.bind(null,n,t),o=function(){a(n),n.href&&URL.revokeObjectURL(n.href)}):(n=s(t),r=p.bind(null,n),o=function(){a(n)});return r(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;r(e=t)}else o()}}function d(e,t,n,r){var o=n?"":r.css;if(e.styleSheet)e.styleSheet.cssText=x(t,o);else{var i=document.createTextNode(o),a=e.childNodes;a[t]&&e.removeChild(a[t]),a.length?e.insertBefore(i,a[t]):e.appendChild(i)}}function p(e,t){var n=t.css,r=t.media;if(r&&e.setAttribute("media",r),e.styleSheet)e.styleSheet.cssText=n;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(n))}}function f(e,t,n){var r=n.css,o=n.sourceMap,i=void 0===t.convertToAbsoluteUrls&&o;(t.convertToAbsoluteUrls||i)&&(r=w(r)),o&&(r+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(o))))+" */");var a=new Blob([r],{type:"text/css"}),s=e.href;e.href=URL.createObjectURL(a),s&&URL.revokeObjectURL(s)}var h={},v=function(e){var t;return function(){return void 0===t&&(t=e.apply(this,arguments)),t}}(function(){return window&&document&&document.all&&!window.atob}),g=function(e){var t={};return function(n){return void 0===t[n]&&(t[n]=e.call(this,n)),t[n]}}(function(e){return document.querySelector(e)}),m=null,y=0,b=[],w=n(62);e.exports=function(e,t){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");t=t||{},t.attrs="object"==typeof t.attrs?t.attrs:{},t.singleton||(t.singleton=v()),t.insertInto||(t.insertInto="head"),t.insertAt||(t.insertAt="bottom");var n=o(e,t);return r(n,t),function(e){for(var i=[],a=0;a<n.length;a++){var s=n[a],l=h[s.id];l.refs--,i.push(l)}if(e){r(o(e,t),t)}for(var a=0;a<i.length;a++){var l=i[a];if(0===l.refs){for(var c=0;c<l.parts.length;c++)l.parts[c]();delete h[l.id]}}}};var x=function(){var e=[];return function(t,n){return e[t]=n,e.filter(Boolean).join("\n")}}()},function(e,t){e.exports=function(e){var t="undefined"!=typeof window&&window.location;if(!t)throw new Error("fixUrls requires window.location");if(!e||"string"!=typeof e)return e;var n=t.protocol+"//"+t.host,r=n+t.pathname.replace(/\/[^\/]*$/,"/");return e.replace(/url\s*\(((?:[^)(]|\((?:[^)(]+|\([^)(]*\))*\))*)\)/gi,function(e,t){var o=t.trim().replace(/^"(.*)"$/,function(e,t){return t}).replace(/^'(.*)'$/,function(e,t){return t});if(/^(#|data:|http:\/\/|https:\/\/|file:\/\/\/)/i.test(o))return e;var i;return i=0===o.indexOf("//")?o:0===o.indexOf("/")?n+o:r+o.replace(/^\.\//,""),"url("+JSON.stringify(i)+")"})}},function(e,t,n){n(58),e.exports=n(18)}])}); \ No newline at end of file
+var i=Object.getOwnPropertySymbols,o=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return t[e]}).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach(function(e){r[e]=e}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var n,u,s=r(e),l=1;l<arguments.length;l++){n=Object(arguments[l]);for(var c in n)o.call(n,c)&&(s[c]=n[c]);if(i){u=i(n);for(var f=0;f<u.length;f++)a.call(n,u[f])&&(s[u[f]]=n[u[f]])}}return s}},function(e,t,n){function r(e,t){if(e===1/0||e===-1/0||e!==e||e&&e>-1e3&&e<1e3||ne.call(/e/,t))return t;var n=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if("number"==typeof e){var r=e<0?-ae(-e):ae(e);if(r!==e){var i=String(r),o=X.call(t,i.length+1);return Y.call(i,n,"$&_")+"."+Y.call(Y.call(o,/([0-9]{3})/g,"$&_"),/_$/,"")}}return Y.call(t,n,"$&_")}function i(e,t,n){var r="double"===(n.quoteStyle||t)?'"':"'";return r+e+r}function o(e){return Y.call(String(e),/"/g,"&quot;")}function a(e){return!("[object Array]"!==g(e)||fe&&"object"==typeof e&&fe in e)}function u(e){return!("[object Date]"!==g(e)||fe&&"object"==typeof e&&fe in e)}function s(e){return!("[object RegExp]"!==g(e)||fe&&"object"==typeof e&&fe in e)}function l(e){return!("[object Error]"!==g(e)||fe&&"object"==typeof e&&fe in e)}function c(e){return!("[object String]"!==g(e)||fe&&"object"==typeof e&&fe in e)}function f(e){return!("[object Number]"!==g(e)||fe&&"object"==typeof e&&fe in e)}function p(e){return!("[object Boolean]"!==g(e)||fe&&"object"==typeof e&&fe in e)}function d(e){if(ce)return e&&"object"==typeof e&&e instanceof Symbol;if("symbol"==typeof e)return!0;if(!e||"object"!=typeof e||!le)return!1;try{return le.call(e),!0}catch(e){}return!1}function h(e){if(!e||"object"!=typeof e||!ue)return!1;try{return ue.call(e),!0}catch(e){}return!1}function v(e,t){return ge.call(e,t)}function g(e){return G.call(e)}function m(e){if(e.name)return e.name;var t=J.call(Z.call(e),/^function\s*([\w$]+)/);return t?t[1]:null}function y(e,t){if(e.indexOf)return e.indexOf(t);for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1}function b(e){if(!z||!e||"object"!=typeof e)return!1;try{z.call(e);try{L.call(e)}catch(e){return!0}return e instanceof Map}catch(e){}return!1}function D(e){if(!Q||!e||"object"!=typeof e)return!1;try{Q.call(e,Q);try{W.call(e,W)}catch(e){return!0}return e instanceof WeakMap}catch(e){}return!1}function x(e){if(!H||!e||"object"!=typeof e)return!1;try{return H.call(e),!0}catch(e){}return!1}function w(e){if(!L||!e||"object"!=typeof e)return!1;try{L.call(e);try{z.call(e)}catch(e){return!0}return e instanceof Set}catch(e){}return!1}function A(e){if(!W||!e||"object"!=typeof e)return!1;try{W.call(e,W);try{Q.call(e,Q)}catch(e){return!0}return e instanceof WeakSet}catch(e){}return!1}function k(e){return!(!e||"object"!=typeof e)&&("undefined"!=typeof HTMLElement&&e instanceof HTMLElement||"string"==typeof e.nodeName&&"function"==typeof e.getAttribute)}function E(e,t){if(e.length>t.maxStringLength){var n=e.length-t.maxStringLength,r="... "+n+" more character"+(n>1?"s":"");return E(X.call(e,0,t.maxStringLength),t)+r}return i(Y.call(Y.call(e,/(['\\])/g,"\\$1"),/[\x00-\x1f]/g,F),"single",t)}function F(e){var t=e.charCodeAt(0),n={8:"b",9:"t",10:"n",12:"f",13:"r"}[t];return n?"\\"+n:"\\x"+(t<16?"0":"")+ee.call(t.toString(16))}function C(e){return"Object("+e+")"}function S(e){return e+" { ? }"}function _(e,t,n,r){return e+" ("+t+") {"+(r?j(n,r):ie.call(n,", "))+"}"}function O(e){for(var t=0;t<e.length;t++)if(y(e[t],"\n")>=0)return!1;return!0}function B(e,t){var n;if("\t"===e.indent)n="\t";else{if(!("number"==typeof e.indent&&e.indent>0))return null;n=ie.call(Array(e.indent+1)," ")}return{base:n,prev:ie.call(Array(t+1),n)}}function j(e,t){if(0===e.length)return"";var n="\n"+t.prev+t.base;return n+ie.call(e,","+n)+"\n"+t.prev}function $(e,t){var n=a(e),r=[];if(n){r.length=e.length;for(var i=0;i<e.length;i++)r[i]=v(e,i)?t(e[i],e):""}var o,u="function"==typeof se?se(e):[];if(ce){o={};for(var s=0;s<u.length;s++)o["$"+u[s]]=u[s]}for(var l in e)v(e,l)&&(n&&String(Number(l))===l&&l<e.length||ce&&o["$"+l]instanceof Symbol||(ne.call(/[^\w$]/,l)?r.push(t(l,e)+": "+t(e[l],e)):r.push(l+": "+t(e[l],e))));if("function"==typeof se)for(var c=0;c<u.length;c++)pe.call(e,u[c])&&r.push("["+t(u[c])+"]: "+t(e[u[c]],e));return r}var T="function"==typeof Map&&Map.prototype,I=Object.getOwnPropertyDescriptor&&T?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,z=T&&I&&"function"==typeof I.get?I.get:null,P=T&&Map.prototype.forEach,R="function"==typeof Set&&Set.prototype,M=Object.getOwnPropertyDescriptor&&R?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,L=R&&M&&"function"==typeof M.get?M.get:null,N=R&&Set.prototype.forEach,U="function"==typeof WeakMap&&WeakMap.prototype,Q=U?WeakMap.prototype.has:null,q="function"==typeof WeakSet&&WeakSet.prototype,W=q?WeakSet.prototype.has:null,V="function"==typeof WeakRef&&WeakRef.prototype,H=V?WeakRef.prototype.deref:null,K=Boolean.prototype.valueOf,G=Object.prototype.toString,Z=Function.prototype.toString,J=String.prototype.match,X=String.prototype.slice,Y=String.prototype.replace,ee=String.prototype.toUpperCase,te=String.prototype.toLowerCase,ne=RegExp.prototype.test,re=Array.prototype.concat,ie=Array.prototype.join,oe=Array.prototype.slice,ae=Math.floor,ue="function"==typeof BigInt?BigInt.prototype.valueOf:null,se=Object.getOwnPropertySymbols,le="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?Symbol.prototype.toString:null,ce="function"==typeof Symbol&&"object"==typeof Symbol.iterator,fe="function"==typeof Symbol&&Symbol.toStringTag&&(typeof Symbol.toStringTag===ce?"object":"symbol")?Symbol.toStringTag:null,pe=Object.prototype.propertyIsEnumerable,de=("function"==typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(e){return e.__proto__}:null),he=n(113).custom,ve=he&&d(he)?he:null;e.exports=function e(t,n,F,T){function I(t,n,r){if(n&&(T=oe.call(T),T.push(n)),r){var i={depth:R.depth};return v(R,"quoteStyle")&&(i.quoteStyle=R.quoteStyle),e(t,i,F+1,T)}return e(t,R,F+1,T)}var R=n||{};if(v(R,"quoteStyle")&&"single"!==R.quoteStyle&&"double"!==R.quoteStyle)throw new TypeError('option "quoteStyle" must be "single" or "double"');if(v(R,"maxStringLength")&&("number"==typeof R.maxStringLength?R.maxStringLength<0&&R.maxStringLength!==1/0:null!==R.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var M=!v(R,"customInspect")||R.customInspect;if("boolean"!=typeof M&&"symbol"!==M)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(v(R,"indent")&&null!==R.indent&&"\t"!==R.indent&&!(parseInt(R.indent,10)===R.indent&&R.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(v(R,"numericSeparator")&&"boolean"!=typeof R.numericSeparator)throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var U=R.numericSeparator;if(void 0===t)return"undefined";if(null===t)return"null";if("boolean"==typeof t)return t?"true":"false";if("string"==typeof t)return E(t,R);if("number"==typeof t){if(0===t)return 1/0/t>0?"0":"-0";var Q=String(t);return U?r(t,Q):Q}if("bigint"==typeof t){var q=String(t)+"n";return U?r(t,q):q}var W=void 0===R.depth?5:R.depth;if(void 0===F&&(F=0),F>=W&&W>0&&"object"==typeof t)return a(t)?"[Array]":"[Object]";var V=B(R,F);if(void 0===T)T=[];else if(y(T,t)>=0)return"[Circular]";if("function"==typeof t){var H=m(t),G=$(t,I);return"[Function"+(H?": "+H:" (anonymous)")+"]"+(G.length>0?" { "+ie.call(G,", ")+" }":"")}if(d(t)){var Z=ce?Y.call(String(t),/^(Symbol\(.*\))_[^)]*$/,"$1"):le.call(t);return"object"!=typeof t||ce?Z:C(Z)}if(k(t)){for(var J="<"+te.call(String(t.nodeName)),ee=t.attributes||[],ne=0;ne<ee.length;ne++)J+=" "+ee[ne].name+"="+i(o(ee[ne].value),"double",R);return J+=">",t.childNodes&&t.childNodes.length&&(J+="..."),J+="</"+te.call(String(t.nodeName))+">"}if(a(t)){if(0===t.length)return"[]";var ae=$(t,I);return V&&!O(ae)?"["+j(ae,V)+"]":"[ "+ie.call(ae,", ")+" ]"}if(l(t)){var se=$(t,I);return"cause"in t&&!pe.call(t,"cause")?"{ ["+String(t)+"] "+ie.call(re.call("[cause]: "+I(t.cause),se),", ")+" }":0===se.length?"["+String(t)+"]":"{ ["+String(t)+"] "+ie.call(se,", ")+" }"}if("object"==typeof t&&M){if(ve&&"function"==typeof t[ve])return t[ve]();if("symbol"!==M&&"function"==typeof t.inspect)return t.inspect()}if(b(t)){var he=[];return P.call(t,function(e,n){he.push(I(n,t,!0)+" => "+I(e,t))}),_("Map",z.call(t),he,V)}if(w(t)){var ge=[];return N.call(t,function(e){ge.push(I(e,t))}),_("Set",L.call(t),ge,V)}if(D(t))return S("WeakMap");if(A(t))return S("WeakSet");if(x(t))return S("WeakRef");if(f(t))return C(I(Number(t)));if(h(t))return C(I(ue.call(t)));if(p(t))return C(K.call(t));if(c(t))return C(I(String(t)));if(!u(t)&&!s(t)){var me=$(t,I),ye=de?de(t)===Object.prototype:t instanceof Object||t.constructor===Object,be=t instanceof Object?"":"null prototype",De=!ye&&fe&&Object(t)===t&&fe in t?X.call(g(t),8,-1):be?"Object":"",xe=ye||"function"!=typeof t.constructor?"":t.constructor.name?t.constructor.name+" ":"",we=xe+(De||be?"["+ie.call(re.call([],De||[],be||[]),": ")+"] ":"");return 0===me.length?we+"{}":V?we+"{"+j(me,V)+"}":we+"{ "+ie.call(me,", ")+" }"}return String(t)};var ge=Object.prototype.hasOwnProperty||function(e){return e in this}},function(e,t,n){"use strict";var r;if(!Object.keys){var i=Object.prototype.hasOwnProperty,o=Object.prototype.toString,a=n(30),u=Object.prototype.propertyIsEnumerable,s=!u.call({toString:null},"toString"),l=u.call(function(){},"prototype"),c=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],f=function(e){var t=e.constructor;return t&&t.prototype===e},p={$applicationCache:!0,$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$onmozfullscreenchange:!0,$onmozfullscreenerror:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},d=function(){if("undefined"==typeof window)return!1;for(var e in window)try{if(!p["$"+e]&&i.call(window,e)&&null!==window[e]&&"object"==typeof window[e])try{f(window[e])}catch(e){return!0}}catch(e){return!0}return!1}(),h=function(e){if("undefined"==typeof window||!d)return f(e);try{return f(e)}catch(e){return!1}};r=function(e){var t=null!==e&&"object"==typeof e,n="[object Function]"===o.call(e),r=a(e),u=t&&"[object String]"===o.call(e),f=[];if(!t&&!n&&!r)throw new TypeError("Object.keys called on a non-object");var p=l&&n;if(u&&e.length>0&&!i.call(e,0))for(var d=0;d<e.length;++d)f.push(String(d));if(r&&e.length>0)for(var v=0;v<e.length;++v)f.push(String(v));else for(var g in e)p&&"prototype"===g||!i.call(e,g)||f.push(String(g));if(s)for(var m=h(e),y=0;y<c.length;++y)m&&"constructor"===c[y]||!i.call(e,c[y])||f.push(c[y]);return f}}e.exports=r},function(e,t,n){"use strict";var r=Array.prototype.slice,i=n(30),o=Object.keys,a=o?function(e){return o(e)}:n(98),u=Object.keys;a.shim=function(){if(Object.keys){(function(){var e=Object.keys(arguments);return e&&e.length===arguments.length})(1,2)||(Object.keys=function(e){return u(i(e)?r.call(e):e)})}else Object.keys=a;return Object.keys||a},e.exports=a},function(e,t,n){"use strict";var r=n(2),i=n(4),o=n(31),a=n(32),u=n(101),s=i(a(),Object);r(s,{getPolyfill:a,implementation:o,shim:u}),e.exports=s},function(e,t,n){"use strict";var r=n(32),i=n(2);e.exports=function(){var e=r();return i(Object,{entries:e},{entries:function(){return Object.entries!==e}}),e}},function(e,t){function n(){throw new Error("setTimeout has not been defined")}function r(){throw new Error("clearTimeout has not been defined")}function i(e){if(c===setTimeout)return setTimeout(e,0);if((c===n||!c)&&setTimeout)return c=setTimeout,setTimeout(e,0);try{return c(e,0)}catch(t){try{return c.call(null,e,0)}catch(t){return c.call(this,e,0)}}}function o(e){if(f===clearTimeout)return clearTimeout(e);if((f===r||!f)&&clearTimeout)return f=clearTimeout,clearTimeout(e);try{return f(e)}catch(t){try{return f.call(null,e)}catch(t){return f.call(this,e)}}}function a(){v&&d&&(v=!1,d.length?h=d.concat(h):g=-1,h.length&&u())}function u(){if(!v){var e=i(a);v=!0;for(var t=h.length;t;){for(d=h,h=[];++g<t;)d&&d[g].run();g=-1,t=h.length}d=null,v=!1,o(e)}}function s(e,t){this.fun=e,this.array=t}function l(){}var c,f,p=e.exports={};!function(){try{c="function"==typeof setTimeout?setTimeout:n}catch(e){c=n}try{f="function"==typeof clearTimeout?clearTimeout:r}catch(e){f=r}}();var d,h=[],v=!1,g=-1;p.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];h.push(new s(e,t)),1!==h.length||v||i(u)},s.prototype.run=function(){this.fun.apply(null,this.array)},p.title="browser",p.browser=!0,p.env={},p.argv=[],p.version="",p.versions={},p.on=l,p.addListener=l,p.once=l,p.off=l,p.removeListener=l,p.removeAllListeners=l,p.emit=l,p.prependListener=l,p.prependOnceListener=l,p.listeners=function(e){return[]},p.binding=function(e){throw new Error("process.binding is not supported")},p.cwd=function(){return"/"},p.chdir=function(e){throw new Error("process.chdir is not supported")},p.umask=function(){return 0}},function(e,t,n){"use strict";var r=n(4),i=n(2),o=n(33),a=n(34),u=n(104),s=r(a());i(s,{getPolyfill:a,implementation:o,shim:u}),e.exports=s},function(e,t,n){"use strict";var r=n(2),i=n(34);e.exports=function(){var e=i();return r(String.prototype,{trim:e},{trim:function(){return String.prototype.trim!==e}}),e}},function(e,t,n){"use strict";(function(t){var n="production"!==t.env.NODE_ENV,r=function(){};if(n){var i=function(e,t){var n=arguments.length;t=new Array(n>1?n-1:0);for(var r=1;r<n;r++)t[r-1]=arguments[r];var i=0,o="Warning: "+e.replace(/%s/g,function(){return t[i++]});try{throw new Error(o)}catch(e){}};r=function(e,t,n){var r=arguments.length;n=new Array(r>2?r-2:0);for(var o=2;o<r;o++)n[o-2]=arguments[o];if(void 0===t)throw new Error("`warning(condition, format, ...args)` requires a warning message argument");e||i.apply(null,[t].concat(n))}}e.exports=r}).call(t,n(102))},function(e,t,n){function r(e,t){return new a(t).process(e)}var i=n(35),o=n(36),a=n(107);t=e.exports=r,t.filterXSS=r,t.FilterXSS=a;for(var u in i)t[u]=i[u];for(var u in o)t[u]=o[u];"undefined"!=typeof window&&(window.filterXSS=e.exports),function(){return"undefined"!=typeof self&&"undefined"!=typeof DedicatedWorkerGlobalScope&&self instanceof DedicatedWorkerGlobalScope}()&&(self.filterXSS=e.exports)},function(e,t,n){function r(e){return void 0===e||null===e}function i(e){var t=p.spaceIndex(e);if(-1===t)return{html:"",closing:"/"===e[e.length-2]};e=p.trim(e.slice(t+1,-1));var n="/"===e[e.length-1];return n&&(e=p.trim(e.slice(0,-1))),{html:e,closing:n}}function o(e){var t={};for(var n in e)t[n]=e[n];return t}function a(e){e=o(e||{}),e.stripIgnoreTag&&(e.onIgnoreTag,e.onIgnoreTag=s.onIgnoreTagStripAll),e.whiteList=e.whiteList||e.allowList||s.whiteList,e.onTag=e.onTag||s.onTag,e.onTagAttr=e.onTagAttr||s.onTagAttr,e.onIgnoreTag=e.onIgnoreTag||s.onIgnoreTag,e.onIgnoreTagAttr=e.onIgnoreTagAttr||s.onIgnoreTagAttr,e.safeAttrValue=e.safeAttrValue||s.safeAttrValue,e.escapeHtml=e.escapeHtml||s.escapeHtml,this.options=e,!1===e.css?this.cssFilter=!1:(e.css=e.css||{},this.cssFilter=new u(e.css))}var u=n(7).FilterCSS,s=n(35),l=n(36),c=l.parseTag,f=l.parseAttr,p=n(12);a.prototype.process=function(e){if(e=e||"",!(e=e.toString()))return"";var t=this,n=t.options,o=n.whiteList,a=n.onTag,u=n.onIgnoreTag,l=n.onTagAttr,d=n.onIgnoreTagAttr,h=n.safeAttrValue,v=n.escapeHtml,g=t.cssFilter;n.stripBlankChar&&(e=s.stripBlankChar(e)),n.allowCommentTag||(e=s.stripCommentTag(e));var m=!1;if(n.stripIgnoreTagBody){var m=s.StripTagBody(n.stripIgnoreTagBody,u);u=m.onIgnoreTag}var y=c(e,function(e,t,n,s,c){var m={sourcePosition:e,position:t,isClosing:c,isWhite:o.hasOwnProperty(n)},y=a(n,s,m);if(!r(y))return y;if(m.isWhite){if(m.isClosing)return"</"+n+">";var b=i(s),D=o[n],x=f(b.html,function(e,t){var i=-1!==p.indexOf(D,e),o=l(n,e,t,i);if(!r(o))return o;if(i)return t=h(n,e,t,g),t?e+'="'+t+'"':e;var o=d(n,e,t,i);return r(o)?void 0:o}),s="<"+n;return x&&(s+=" "+x),b.closing&&(s+=" /"),s+=">"}var y=u(n,s,m);return r(y)?v(s):y},v);return m&&(y=m.remove(y)),y},e.exports=a},function(e,t){e.exports={smile:"e3/2018new_weixioa02_org.png",lovely:"09/2018new_keai_org.png",happy:"1e/2018new_taikaixin_org.png",clap:"6e/2018new_guzhang_thumb.png",whee:"33/2018new_xixi_thumb.png",haha:"8f/2018new_haha_thumb.png","laugh and cry":"4a/2018new_xiaoku_thumb.png",wink:"43/2018new_jiyan_org.png",greddy:"fa/2018new_chanzui_org.png",awkward:"a3/2018new_heixian_thumb.png",sweat:"28/2018new_han_org.png","pick nose":"9a/2018new_wabi_thumb.png",hum:"7c/2018new_heng_thumb.png",angry:"f6/2018new_nu_thumb.png",grievance:"a5/2018new_weiqu_thumb.png",poor:"96/2018new_kelian_org.png",disappoint:"aa/2018new_shiwang_thumb.png",sad:"ee/2018new_beishang_org.png",tear:"6e/2018new_leimu_org.png","no way":"83/2018new_kuxiao_org.png",shy:"c1/2018new_haixiu_org.png",dirt:"10/2018new_wu_thumb.png","love you":"f6/2018new_aini_org.png",kiss:"2c/2018new_qinqin_thumb.png",amorousness:"9d/2018new_huaxin_org.png",longing:"c9/2018new_chongjing_org.png",desire:"3e/2018new_tianping_thumb.png","bad laugh":"4d/2018new_huaixiao_org.png",blackness:"9e/2018new_yinxian_org.png","laugh without word":"2d/2018new_xiaoerbuyu_org.png",titter:"71/2018new_touxiao_org.png",cool:"c4/2018new_ku_org.png","not easy":"aa/2018new_bingbujiandan_thumb.png",think:"30/2018new_sikao_org.png",question:"b8/2018new_ningwen_org.png","no idea":"2a/2018new_wenhao_thumb.png",dizzy:"07/2018new_yun_thumb.png",bomb:"a2/2018new_shuai_thumb.png",bone:"a1/2018new_kulou_thumb.png","be quiet":"b0/2018new_xu_org.png","shut up":"62/2018new_bizui_org.png",stupid:"dd/2018new_shayan_org.png","surprise ":"49/2018new_chijing_org.png",vomit:"08/2018new_tu_org.png",cold:"40/2018new_kouzhao_thumb.png",sick:"3b/2018new_shengbing_thumb.png",bye:"fd/2018new_baibai_thumb.png","look down on":"da/2018new_bishi_org.png","white eye":"ef/2018new_landelini_org.png","left hum":"43/2018new_zuohengheng_thumb.png","right hum":"c1/2018new_youhengheng_thumb.png",crazy:"17/2018new_zhuakuang_org.png","scold ":"87/2018new_zhouma_thumb.png","hit on face":"cb/2018new_dalian_org.png",wow:"ae/2018new_ding_org.png",fan:"86/2018new_hufen02_org.png",money:"a2/2018new_qian_thumb.png",yawn:"55/2018new_dahaqian_org.png",sleepy:"3c/2018new_kun_thumb.png",sleep:"e2/2018new_shuijiao_thumb.png","watermelon ":"01/2018new_chigua_thumb.png",doge:"a1/2018new_doge02_org.png",dog:"22/2018new_erha_org.png",cat:"7b/2018new_miaomiao_thumb.png",thumb:"e6/2018new_zan_org.png",good:"8a/2018new_good_org.png",ok:"45/2018new_ok_org.png",yeah:"29/2018new_ye_thumb.png","shack hand":"e9/2018new_woshou_thumb.png",bow:"e7/2018new_zuoyi_org.png",come:"42/2018new_guolai_thumb.png",punch:"86/2018new_quantou_thumb.png"}},function(e,t){e.exports={nick:"NickName",mail:"E-Mail",link:"Website(http://)",nickFail:"NickName cannot be less than 3 bytes.",mailFail:"Please confirm your email address.",sofa:"No comment yet.",submit:"Submit",reply:"Reply",cancelReply:"Cancel reply",comments:"Comments",cancel:"Cancel",confirm:"Confirm",continue:"Continue",more:"Load More...",preview:"Preview",emoji:"Emoji",expand:"See more....",seconds:"seconds ago",minutes:"minutes ago",hours:"hours ago",days:"days ago",now:"just now",uploading:"Uploading ...",uploadDone:"Upload completed!",busy:"Submit is busy, please wait...","code-98":"Valine initialization failed, please check your version of av-min.js.","code-99":"Valine initialization failed, Please check the `el` element in the init method.","code-100":"Valine initialization failed, Please check your appId and appKey.","code-140":"The total number of API calls today has exceeded the development version limit.","code-401":"Unauthorized operation, Please check your appId and appKey.","code-403":"Access denied by API domain white list, Please check your security domain."}},function(e,t){e.exports={nick:"ニックネーム",mail:"メールアドレス",link:"サイト(http://)",nickFail:"3バイト以上のニックネームをご入力ください.",mailFail:"メールアドレスをご確認ください.",sofa:"コメントしましょう~",submit:"提出する",reply:"返信する",cancelReply:"キャンセル",comments:"コメント",cancel:"キャンセル",confirm:"確認する",continue:"继续",more:"さらに読み込む...",preview:"プレビュー",emoji:"絵文字",expand:"もっと見る",seconds:"秒前",minutes:"分前",hours:"時間前",days:"日前",now:"たっだ今",uploading:"アップロード中...",uploadDone:"アップロードが完了しました!",busy:"20 秒間隔で提出してください ...","code-98":"ロードエラーです。av-min.js のバージョンを確認してください.","code-99":"ロードエラーです。initにある`el`エレメントを確認ください.","code-100":"ロードエラーです。AppIdとAppKeyを確認ください.","code-140":"今日のAPIコールの総数が開発バージョンの上限を超えた.","code-401":"権限が制限されています。AppIdとAppKeyを確認ください.","code-403":"アクセスがAPIなどに制限されました、ドメイン名のセキュリティ設定を確認ください"}},function(e,t){e.exports={nick:"昵称",mail:"邮箱",link:"网址(http://)",nickFail:"昵称不能少于3个字符",mailFail:"请填写正确的邮件地址",sofa:"来发评论吧~",submit:"提交",reply:"回复",cancelReply:"取消回复",comments:"评论",cancel:"取消",confirm:"确认",continue:"继续",more:"加载更多...",preview:"预览",emoji:"表情",expand:"查看更多...",seconds:"秒前",minutes:"分钟前",hours:"小时前",days:"天前",now:"刚刚",uploading:"正在传输...",uploadDone:"传输完成!",busy:"操作频繁,请稍候再试...","code-98":"Valine 初始化失败,请检查 av-min.js 版本","code-99":"Valine 初始化失败,请检查init中的`el`元素.","code-100":"Valine 初始化失败,请检查你的AppId和AppKey.","code-140":"今日 API 调用总次数已超过开发版限制.","code-401":"未经授权的操作,请检查你的AppId和AppKey.","code-403":"访问被API域名白名单拒绝,请检查你的安全域名设置."}},function(e,t){e.exports={nick:"暱稱",mail:"郵箱",link:"網址(http://)",nickFail:"昵稱不能少於3個字符",mailFail:"請填寫正確的郵件地址",sofa:"來發評論吧~",submit:"提交",reply:"回覆",cancelReply:"取消回覆",comments:"評論",cancel:"取消",confirm:"確認",continue:"繼續",more:"加載更多...",preview:"預覽",emoji:"表情",expand:"查看更多...",seconds:"秒前",minutes:"分鐘前",hours:"小時前",days:"天前",now:"剛剛",uploading:"正在上傳...",uploadDone:"上傳完成!",busy:"操作頻繁,請稍候再試...","code-98":"Valine 初始化失敗,請檢查 av-min.js 版本","code-99":"Valine 初始化失敗,請檢查init中的`el`元素.","code-100":"Valine 初始化失敗,請檢查你的AppId和AppKey.","code-140":"今日 API 調用總次數已超過開發版限制.","code-401":"未經授權的操作,請檢查你的AppId和AppKey.","code-403":"訪問被API域名白名單拒絕,請檢查你的安全域名設置."}},function(e,t){},function(e,t,n){var r=n(115);"string"==typeof r&&(r=[[e.i,r,""]]);var i={};i.transform=void 0;n(117)(r,i);r.locals&&(e.exports=r.locals)},function(e,t,n){t=n(116)(!1),t.push([e.i,'.v[data-class="v"]{font-size:16px;text-align:left}.v[data-class="v"] *{-webkit-box-sizing:border-box;box-sizing:border-box;line-height:1.75}.v[data-class="v"] .vinput,.v[data-class="v"] .veditor,.v[data-class="v"] p,.v[data-class="v"] pre code,.v[data-class="v"] .status-bar{color:#555}.v[data-class="v"] .vtime,.v[data-class="v"] .vsys{color:#b3b3b3}.v[data-class="v"] .text-right{text-align:right}.v[data-class="v"] .text-center{text-align:center}.v[data-class="v"] img{max-width:100%;border:none}.v[data-class="v"] hr{margin:.825em 0;border-color:#f6f6f6;border-style:dashed}.v[data-class="v"].hide-avatar .vimg{display:none}.v[data-class="v"] a{position:relative;cursor:pointer;color:#1abc9c;text-decoration:none;display:inline-block}.v[data-class="v"] a:hover{color:#D7191A}.v[data-class="v"] pre,.v[data-class="v"] code{background-color:#f8f8f8;padding:0.2em 0.4em;border-radius:3px;font-size:85%;margin:0}.v[data-class="v"] pre{padding:10px;overflow:auto;line-height:1.45}.v[data-class="v"] pre code{padding:0;background:transparent;white-space:pre-wrap;word-break:keep-all}.v[data-class="v"] blockquote{color:#666;margin:.5em 0;padding:0 0 0 1em;border-left:8px solid rgba(238,238,238,0.5)}.v[data-class="v"] .vinput{border:none;resize:none;outline:none;padding:10px 5px;max-width:100%;font-size:.775em;-webkit-box-sizing:border-box;box-sizing:border-box}.v[data-class="v"] input[type=\'checkbox\'],.v[data-class="v"] input[type=\'radio\']{display:inline-block;vertical-align:middle;margin-top:-2px}.v[data-class="v"] .vicon{cursor:pointer;display:inline-block;overflow:hidden;fill:#555;vertical-align:middle}.v[data-class="v"] .vicon+.vicon{margin-left:10px}.v[data-class="v"] .vicon.actived{fill:#66b1ff}.v[data-class="v"] .vrow{font-size:0;padding:10px 0}.v[data-class="v"] .vrow .vcol{display:inline-block;vertical-align:middle;font-size:14px}.v[data-class="v"] .vrow .vcol.vcol-20{width:20%}.v[data-class="v"] .vrow .vcol.vcol-30{width:30%}.v[data-class="v"] .vrow .vcol.vcol-40{width:40%}.v[data-class="v"] .vrow .vcol.vcol-50{width:50%}.v[data-class="v"] .vrow .vcol.vcol-60{width:60%}.v[data-class="v"] .vrow .vcol.vcol-70{width:70%}.v[data-class="v"] .vrow .vcol.vcol-80{width:80%}.v[data-class="v"] .vrow .vcol.vctrl{font-size:12px}.v[data-class="v"] .vemoji,.v[data-class="v"] .emoji{width:26px;height:26px;overflow:hidden;vertical-align:middle;margin:0 1px;display:inline-block}.v[data-class="v"] .vwrap{border:1px solid #f0f0f0;border-radius:4px;margin-bottom:10px;overflow:hidden;position:relative;padding:10px}.v[data-class="v"] .vwrap input{background:transparent}.v[data-class="v"] .vwrap .vedit{position:relative;padding-top:10px}.v[data-class="v"] .vwrap .cancel-reply-btn{position:absolute;right:5px;top:5px;cursor:pointer}.v[data-class="v"] .vwrap .vemojis{display:none;font-size:18px;max-height:145px;overflow:auto;padding-bottom:10px;-webkit-box-shadow:0px 0 1px #f0f0f0;box-shadow:0px 0 1px #f0f0f0}.v[data-class="v"] .vwrap .vemojis i{font-style:normal;padding-top:7px;width:36px;cursor:pointer;text-align:center;display:inline-block;vertical-align:middle}.v[data-class="v"] .vwrap .vpreview{padding:7px;-webkit-box-shadow:0px 0 1px #f0f0f0;box-shadow:0px 0 1px #f0f0f0}.v[data-class="v"] .vwrap .vheader .vinput{width:33.33%;border-bottom:1px #dedede dashed}.v[data-class="v"] .vwrap .vheader.item2 .vinput{width:50%}.v[data-class="v"] .vwrap .vheader.item1 .vinput{width:100%}.v[data-class="v"] .vwrap .vheader .vinput:focus{border-bottom-color:#eb5055}@media screen and (max-width: 520px){.v[data-class="v"] .vwrap .vheader .vinput{width:100%}.v[data-class="v"] .vwrap .vheader.item2 .vinput{width:100%}}.v[data-class="v"] .vpower{color:#999;font-size:.75em;padding:.5em 0}.v[data-class="v"] .vpower a{font-size:.75em}.v[data-class="v"] .vcount{padding:5px;font-weight:600;font-size:1.25em}.v[data-class="v"] ul,.v[data-class="v"] ol{padding:0;margin-left:1.25em}.v[data-class="v"] .txt-center{text-align:center}.v[data-class="v"] .txt-right{text-align:right}.v[data-class="v"] .veditor{width:100%;min-height:8.75em;font-size:.875em;background:transparent;resize:vertical;-webkit-transition:all .25s ease;transition:all .25s ease}.v[data-class="v"] .vbtn{-webkit-transition-duration:.4s;transition-duration:.4s;text-align:center;color:#555;border:1px solid #ededed;border-radius:.3em;display:inline-block;background:transparent;margin-bottom:0;font-weight:400;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;white-space:nowrap;padding:.5em 1.25em;font-size:.875em;line-height:1.42857143;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;outline:none}.v[data-class="v"] .vbtn+.vbtn{margin-left:1.25em}.v[data-class="v"] .vbtn:active,.v[data-class="v"] .vbtn:hover{color:#3090e4;border-color:#3090e4}.v[data-class="v"] .vbtn:disabled{border-color:#E1E1E1;color:#E1E1E1;background-color:#fdfafa;cursor:not-allowed}.v[data-class="v"] .vempty{padding:1.25em;text-align:center;color:#555;overflow:auto}.v[data-class="v"] .vsys{display:inline-block;padding:.2em .5em;font-size:.75em;border-radius:.2em;margin-right:.3em}@media screen and (max-width: 520px){.v[data-class="v"] .vsys{display:none}}.v[data-class="v"] .vcards{width:100%}.v[data-class="v"] .vcards .vcard{padding-top:1.25em;position:relative;display:block}.v[data-class="v"] .vcards .vcard:after{content:\'\';clear:both;display:block}.v[data-class="v"] .vcards .vcard .vimg{width:3.125em;height:3.125em;float:left;border-radius:50%;margin-right:.7525em;border:1px solid #f5f5f5;padding:.125em}@media screen and (max-width: 720px){.v[data-class="v"] .vcards .vcard .vimg{width:2.5em;height:2.5em}}.v[data-class="v"] .vcards .vcard .vhead{line-height:1.5;margin-top:0}.v[data-class="v"] .vcards .vcard .vhead .vnick{position:relative;font-size:.875em;font-weight:500;margin-right:.875em;cursor:pointer;text-decoration:none;display:inline-block}.v[data-class="v"] .vcards .vcard .vhead .vnick:hover{color:#D7191A}.v[data-class="v"] .vcards .vcard .vh{overflow:hidden;padding-bottom:.5em;border-bottom:1px dashed #f5f5f5}.v[data-class="v"] .vcards .vcard .vh .vtime{font-size:.75em;margin-right:.875em}.v[data-class="v"] .vcards .vcard .vh .vmeta{line-height:1;position:relative}.v[data-class="v"] .vcards .vcard .vh .vmeta .vat{font-size:.8125em;color:#ef2f11;cursor:pointer;float:right}.v[data-class="v"] .vcards .vcard:last-child .vh{border-bottom:none}.v[data-class="v"] .vcards .vcard .vcontent{word-wrap:break-word;word-break:break-all;font-size:.875em;line-height:2;position:relative;margin-bottom:.75em;padding-top:.625em}.v[data-class="v"] .vcards .vcard .vcontent.expand{cursor:pointer;max-height:8em;overflow:hidden}.v[data-class="v"] .vcards .vcard .vcontent.expand::before{display:block;content:"";position:absolute;width:100%;left:0;top:0;bottom:3.15em;background:-webkit-gradient(linear, left top, left bottom, from(rgba(255,255,255,0)), to(rgba(255,255,255,0.9)));background:linear-gradient(180deg, rgba(255,255,255,0), rgba(255,255,255,0.9));z-index:999}.v[data-class="v"] .vcards .vcard .vcontent.expand::after{display:block;content:attr(data-expand);text-align:center;color:#828586;position:absolute;width:100%;height:3.15em;line-height:3.15em;left:0;bottom:0;z-index:999;background:rgba(255,255,255,0.9)}.v[data-class="v"] .vcards .vcard .vquote{padding-left:1em;border-left:1px dashed rgba(238,238,238,0.5)}.v[data-class="v"] .vcards .vcard .vquote .vimg{width:2.225em;height:2.225em}.v[data-class="v"] .vpage .vmore{margin:1em 0}.v[data-class="v"] .clear{content:\'\';display:block;clear:both}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes pulse{50%{background:#dcdcdc}}@keyframes pulse{50%{background:#dcdcdc}}.v[data-class="v"] .vspinner{width:22px;height:22px;display:inline-block;border:6px double #a0a0a0;border-top-color:transparent;border-bottom-color:transparent;border-radius:50%;-webkit-animation:spin 1s infinite linear;animation:spin 1s infinite linear;position:relative;vertical-align:middle;margin:0 5px}[data-theme="dark"] .v[data-class="v"] .vinput,[data-theme="dark"] .v[data-class="v"] .veditor,[data-theme="dark"] .v[data-class="v"] p,[data-theme="dark"] .v[data-class="v"] pre code,[data-theme="dark"] .v[data-class="v"] .status-bar,.dark .v[data-class="v"] .vinput,.dark .v[data-class="v"] .veditor,.dark .v[data-class="v"] p,.dark .v[data-class="v"] pre code,.dark .v[data-class="v"] .status-bar,.theme__dark .v[data-class="v"] .vinput,.theme__dark .v[data-class="v"] .veditor,.theme__dark .v[data-class="v"] p,.theme__dark .v[data-class="v"] pre code,.theme__dark .v[data-class="v"] .status-bar,.night .v[data-class="v"] .vinput,.night .v[data-class="v"] .veditor,.night .v[data-class="v"] p,.night .v[data-class="v"] pre code,.night .v[data-class="v"] .status-bar{color:#b2b2b5}[data-theme="dark"] .v[data-class="v"] .vtime,[data-theme="dark"] .v[data-class="v"] .vsys,.dark .v[data-class="v"] .vtime,.dark .v[data-class="v"] .vsys,.theme__dark .v[data-class="v"] .vtime,.theme__dark .v[data-class="v"] .vsys,.night .v[data-class="v"] .vtime,.night .v[data-class="v"] .vsys{color:#929298}[data-theme="dark"] .v[data-class="v"] pre,[data-theme="dark"] .v[data-class="v"] code,[data-theme="dark"] .v[data-class="v"] pre code,.dark .v[data-class="v"] pre,.dark .v[data-class="v"] code,.dark .v[data-class="v"] pre code,.theme__dark .v[data-class="v"] pre,.theme__dark .v[data-class="v"] code,.theme__dark .v[data-class="v"] pre code,.night .v[data-class="v"] pre,.night .v[data-class="v"] code,.night .v[data-class="v"] pre code{color:#929298;background-color:#151414}[data-theme="dark"] .v[data-class="v"] .vwrap,.dark .v[data-class="v"] .vwrap,.theme__dark .v[data-class="v"] .vwrap,.night .v[data-class="v"] .vwrap{border-color:#b2b2b5}[data-theme="dark"] .v[data-class="v"] .vicon,.dark .v[data-class="v"] .vicon,.theme__dark .v[data-class="v"] .vicon,.night .v[data-class="v"] .vicon{fill:#b2b2b5}[data-theme="dark"] .v[data-class="v"] .vicon.actived,.dark .v[data-class="v"] .vicon.actived,.theme__dark .v[data-class="v"] .vicon.actived,.night .v[data-class="v"] .vicon.actived{fill:#66b1ff}[data-theme="dark"] .v[data-class="v"] .vbtn,.dark .v[data-class="v"] .vbtn,.theme__dark .v[data-class="v"] .vbtn,.night .v[data-class="v"] .vbtn{color:#b2b2b5;border-color:#b2b2b5}[data-theme="dark"] .v[data-class="v"] .vbtn:hover,.dark .v[data-class="v"] .vbtn:hover,.theme__dark .v[data-class="v"] .vbtn:hover,.night .v[data-class="v"] .vbtn:hover{color:#66b1ff;border-color:#66b1ff}[data-theme="dark"] .v[data-class="v"] a:hover,.dark .v[data-class="v"] a:hover,.theme__dark .v[data-class="v"] a:hover,.night .v[data-class="v"] a:hover{color:#D7191A}[data-theme="dark"] .v[data-class="v"] .vcards .vcard .vcontent.expand::before,.dark .v[data-class="v"] .vcards .vcard .vcontent.expand::before,.theme__dark .v[data-class="v"] .vcards .vcard .vcontent.expand::before,.night .v[data-class="v"] .vcards .vcard .vcontent.expand::before{background:-webkit-gradient(linear, left top, left bottom, from(rgba(0,0,0,0.3)), to(rgba(0,0,0,0.7)));background:linear-gradient(180deg, rgba(0,0,0,0.3), rgba(0,0,0,0.7))}[data-theme="dark"] .v[data-class="v"] .vcards .vcard .vcontent.expand::after,.dark .v[data-class="v"] .vcards .vcard .vcontent.expand::after,.theme__dark .v[data-class="v"] .vcards .vcard .vcontent.expand::after,.night .v[data-class="v"] .vcards .vcard .vcontent.expand::after{background:rgba(0,0,0,0.7)}@media (prefers-color-scheme: dark){.v[data-class="v"] .vinput,.v[data-class="v"] .veditor,.v[data-class="v"] p,.v[data-class="v"] pre code,.v[data-class="v"] .status-bar{color:#b2b2b5}.v[data-class="v"] .vtime,.v[data-class="v"] .vsys{color:#929298}.v[data-class="v"] pre,.v[data-class="v"] code,.v[data-class="v"] pre code{color:#929298;background-color:#151414}.v[data-class="v"] .vwrap{border-color:#b2b2b5}.v[data-class="v"] .vicon{fill:#b2b2b5}.v[data-class="v"] .vicon.actived{fill:#66b1ff}.v[data-class="v"] .vbtn{color:#b2b2b5;border-color:#b2b2b5}.v[data-class="v"] .vbtn:hover{color:#66b1ff;border-color:#66b1ff}.v[data-class="v"] a:hover{color:#D7191A}.v[data-class="v"] .vcards .vcard .vcontent.expand::before{background:-webkit-gradient(linear, left top, left bottom, from(rgba(0,0,0,0.3)), to(rgba(0,0,0,0.7)));background:linear-gradient(180deg, rgba(0,0,0,0.3), rgba(0,0,0,0.7))}.v[data-class="v"] .vcards .vcard .vcontent.expand::after{background:rgba(0,0,0,0.7)}}\n',""]),e.exports=t},function(e,t,n){"use strict";function r(e,t){var n=e[1]||"",r=e[3];if(!r)return n;if(t&&"function"==typeof btoa){var o=i(r);return[n].concat(r.sources.map(function(e){return"/*# sourceURL=".concat(r.sourceRoot||"").concat(e," */")})).concat([o]).join("\n")}return[n].join("\n")}function i(e){return"/*# ".concat("sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(e)))))," */")}e.exports=function(e){var t=[];return t.toString=function(){return this.map(function(t){var n=r(t,e);return t[2]?"@media ".concat(t[2]," {").concat(n,"}"):n}).join("")},t.i=function(e,n,r){"string"==typeof e&&(e=[[null,e,""]]);var i={};if(r)for(var o=0;o<this.length;o++){var a=this[o][0];null!=a&&(i[a]=!0)}for(var u=0;u<e.length;u++){var s=[].concat(e[u]);r&&i[s[0]]||(n&&(s[2]?s[2]="".concat(n," and ").concat(s[2]):s[2]=n),t.push(s))}},t}},function(e,t,n){function r(e,t){for(var n=0;n<e.length;n++){var r=e[n],i=h[r.id];if(i){i.refs++;for(var o=0;o<i.parts.length;o++)i.parts[o](r.parts[o]);for(;o<r.parts.length;o++)i.parts.push(c(r.parts[o],t))}else{for(var a=[],o=0;o<r.parts.length;o++)a.push(c(r.parts[o],t));h[r.id]={id:r.id,refs:1,parts:a}}}}function i(e,t){for(var n=[],r={},i=0;i<e.length;i++){var o=e[i],a=t.base?o[0]+t.base:o[0],u=o[1],s=o[2],l=o[3],c={css:u,media:s,sourceMap:l};r[a]?r[a].parts.push(c):n.push(r[a]={id:a,parts:[c]})}return n}function o(e,t){var n=g(e.insertInto);if(!n)throw new Error("Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid.");var r=b[b.length-1];if("top"===e.insertAt)r?r.nextSibling?n.insertBefore(t,r.nextSibling):n.appendChild(t):n.insertBefore(t,n.firstChild),b.push(t);else{if("bottom"!==e.insertAt)throw new Error("Invalid value for parameter 'insertAt'. Must be 'top' or 'bottom'.");n.appendChild(t)}}function a(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e);var t=b.indexOf(e);t>=0&&b.splice(t,1)}function u(e){var t=document.createElement("style");return e.attrs.type="text/css",l(t,e.attrs),o(e,t),t}function s(e){var t=document.createElement("link");return e.attrs.type="text/css",e.attrs.rel="stylesheet",l(t,e.attrs),o(e,t),t}function l(e,t){Object.keys(t).forEach(function(n){e.setAttribute(n,t[n])})}function c(e,t){var n,r,i,o;if(t.transform&&e.css){if(!(o=t.transform(e.css)))return function(){};e.css=o}if(t.singleton){var l=y++;n=m||(m=u(t)),r=f.bind(null,n,l,!1),i=f.bind(null,n,l,!0)}else e.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(n=s(t),r=d.bind(null,n,t),i=function(){a(n),n.href&&URL.revokeObjectURL(n.href)}):(n=u(t),r=p.bind(null,n),i=function(){a(n)});return r(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;r(e=t)}else i()}}function f(e,t,n,r){var i=n?"":r.css;if(e.styleSheet)e.styleSheet.cssText=x(t,i);else{var o=document.createTextNode(i),a=e.childNodes;a[t]&&e.removeChild(a[t]),a.length?e.insertBefore(o,a[t]):e.appendChild(o)}}function p(e,t){var n=t.css,r=t.media;if(r&&e.setAttribute("media",r),e.styleSheet)e.styleSheet.cssText=n;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(n))}}function d(e,t,n){var r=n.css,i=n.sourceMap,o=void 0===t.convertToAbsoluteUrls&&i;(t.convertToAbsoluteUrls||o)&&(r=D(r)),i&&(r+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(i))))+" */");var a=new Blob([r],{type:"text/css"}),u=e.href;e.href=URL.createObjectURL(a),u&&URL.revokeObjectURL(u)}var h={},v=function(e){var t;return function(){return void 0===t&&(t=e.apply(this,arguments)),t}}(function(){return window&&document&&document.all&&!window.atob}),g=function(e){var t={};return function(n){return void 0===t[n]&&(t[n]=e.call(this,n)),t[n]}}(function(e){return document.querySelector(e)}),m=null,y=0,b=[],D=n(118);e.exports=function(e,t){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");t=t||{},t.attrs="object"==typeof t.attrs?t.attrs:{},t.singleton||(t.singleton=v()),t.insertInto||(t.insertInto="head"),t.insertAt||(t.insertAt="bottom");var n=i(e,t);return r(n,t),function(e){for(var o=[],a=0;a<n.length;a++){var u=n[a],s=h[u.id];s.refs--,o.push(s)}if(e){r(i(e,t),t)}for(var a=0;a<o.length;a++){var s=o[a];if(0===s.refs){for(var l=0;l<s.parts.length;l++)s.parts[l]();delete h[s.id]}}}};var x=function(){var e=[];return function(t,n){return e[t]=n,e.filter(Boolean).join("\n")}}()},function(e,t){e.exports=function(e){var t="undefined"!=typeof window&&window.location;if(!t)throw new Error("fixUrls requires window.location");if(!e||"string"!=typeof e)return e;var n=t.protocol+"//"+t.host,r=n+t.pathname.replace(/\/[^\/]*$/,"/");return e.replace(/url\s*\(((?:[^)(]|\((?:[^)(]+|\([^)(]*\))*\))*)\)/gi,function(e,t){var i=t.trim().replace(/^"(.*)"$/,function(e,t){return t}).replace(/^'(.*)'$/,function(e,t){return t});if(/^(#|data:|http:\/\/|https:\/\/|file:\/\/\/)/i.test(i))return e;var o;return o=0===i.indexOf("//")?i:0===i.indexOf("/")?n+i:r+i.replace(/^\.\//,""),"url("+JSON.stringify(o)+")"})}},function(e,t,n){n(114),e.exports=n(38)}])}); \ No newline at end of file
diff --git a/assets/data/emoji/apple.yml b/assets/lib/valine/emoji/apple.yml
index 3f9cee9d..7d81041a 100644
--- a/assets/data/emoji/apple.yml
+++ b/assets/lib/valine/emoji/apple.yml
@@ -1,4 +1,4 @@
-emojiCDN: 'https://cdn.jsdelivr.net/npm/emoji-datasource-apple@5.0.1/img/apple/64/'
+emojiCDN: 'https://cdn.jsdelivr.net/npm/emoji-datasource-apple@14.0.0/img/apple/64/'
emojiMaps:
'100': 1f4af.png
grinning: 1f600.png
diff --git a/assets/data/emoji/facebook.yml b/assets/lib/valine/emoji/facebook.yml
index f987491c..a49d8741 100644
--- a/assets/data/emoji/facebook.yml
+++ b/assets/lib/valine/emoji/facebook.yml
@@ -1,4 +1,4 @@
-emojiCDN: 'https://cdn.jsdelivr.net/npm/emoji-datasource-facebook@5.0.1/img/facebook/64/'
+emojiCDN: 'https://cdn.jsdelivr.net/npm/emoji-datasource-facebook@14.0.0/img/facebook/64/'
emojiMaps:
'100': 1f4af.png
grinning: 1f600.png
diff --git a/assets/data/emoji/google.yml b/assets/lib/valine/emoji/google.yml
index 7137ccb9..d9db49c4 100644
--- a/assets/data/emoji/google.yml
+++ b/assets/lib/valine/emoji/google.yml
@@ -1,4 +1,4 @@
-emojiCDN: 'https://cdn.jsdelivr.net/npm/emoji-datasource-google@5.0.1/img/google/64/'
+emojiCDN: 'https://cdn.jsdelivr.net/npm/emoji-datasource-google@14.0.0/img/google/64/'
emojiMaps:
'100': 1f4af.png
grinning: 1f600.png
diff --git a/assets/data/emoji/twitter.yml b/assets/lib/valine/emoji/twitter.yml
index 97365c60..8be26e5a 100644
--- a/assets/data/emoji/twitter.yml
+++ b/assets/lib/valine/emoji/twitter.yml
@@ -1,4 +1,4 @@
-emojiCDN: 'https://cdn.jsdelivr.net/npm/emoji-datasource-twitter@5.0.1/img/twitter/64/'
+emojiCDN: 'https://cdn.jsdelivr.net/npm/emoji-datasource-twitter@14.0.0/img/twitter/64/'
emojiMaps:
'100': 1f4af.png
grinning: 1f600.png
diff --git a/assets/svg/icons/bilibili.svg b/assets/svg/icons/bilibili.svg
deleted file mode 100644
index 457c7b01..00000000
--- a/assets/svg/icons/bilibili.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Bilibili icon</title><path d="M17.813 4.653h.854c1.51.054 2.769.578 3.773 1.574 1.004.995 1.524 2.249 1.56 3.76v7.36c-.036 1.51-.556 2.769-1.56 3.773s-2.262 1.524-3.773 1.56H5.333c-1.51-.036-2.769-.556-3.773-1.56S.036 18.858 0 17.347v-7.36c.036-1.511.556-2.765 1.56-3.76 1.004-.996 2.262-1.52 3.773-1.574h.774l-1.174-1.12a1.234 1.234 0 0 1-.373-.906c0-.356.124-.658.373-.907l.027-.027c.267-.249.573-.373.92-.373.347 0 .653.124.92.373L9.653 4.44c.071.071.134.142.187.213h4.267a.836.836 0 0 1 .16-.213l2.853-2.747c.267-.249.573-.373.92-.373.347 0 .662.151.929.4.267.249.391.551.391.907 0 .355-.124.657-.373.906zM5.333 7.24c-.746.018-1.373.276-1.88.773-.506.498-.769 1.13-.786 1.894v7.52c.017.764.28 1.395.786 1.893.507.498 1.134.756 1.88.773h13.334c.746-.017 1.373-.275 1.88-.773.506-.498.769-1.129.786-1.893v-7.52c-.017-.765-.28-1.396-.786-1.894-.507-.497-1.134-.755-1.88-.773zM8 11.107c.373 0 .684.124.933.373.25.249.383.569.4.96v1.173c-.017.391-.15.711-.4.96-.249.25-.56.374-.933.374s-.684-.125-.933-.374c-.25-.249-.383-.569-.4-.96V12.44c0-.373.129-.689.386-.947.258-.257.574-.386.947-.386zm8 0c.373 0 .684.124.933.373.25.249.383.569.4.96v1.173c-.017.391-.15.711-.4.96-.249.25-.56.374-.933.374s-.684-.125-.933-.374c-.25-.249-.383-.569-.4-.96V12.44c.017-.391.15-.711.4-.96.249-.249.56-.373.933-.373Z"/></svg> \ No newline at end of file
diff --git a/assets/svg/icons/thingiverse.svg b/assets/svg/icons/thingiverse.svg
deleted file mode 100644
index 061bf250..00000000
--- a/assets/svg/icons/thingiverse.svg
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50"><path style="line-height:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;block-progression:tb;isolation:auto;mix-blend-mode:normal" d="M25 2C12.31 2 2 12.31 2 25s10.31 23 23 23 23-10.31 23-23S37.69 2 25 2zm0 2c11.61 0 21 9.39 21 21s-9.39 21-21 21S4 36.61 4 25 13.39 4 25 4zm-9 11v6h6v17h6V21h6v-6H16z" font-weight="400" font-family="sans-serif" white-space="normal" overflow="visible"/></svg> \ No newline at end of file